[cut: only the first 33554432 bytes of this file were read]
<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.8/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.8/ http://www.mediawiki.org/xml/export-0.8.xsd" version="0.8" xml:lang="fr">
  <siteinfo>
    <sitename>wiki.debian-fr</sitename>
    <base>http://www.isalo.org/wiki.debian-fr/Accueil</base>
    <generator>MediaWiki 1.23.5</generator>
    <case>first-letter</case>
    <namespaces>
      <namespace key="-2" case="first-letter">Média</namespace>
      <namespace key="-1" case="first-letter">Spécial</namespace>
      <namespace key="0" case="first-letter" />
      <namespace key="1" case="first-letter">Discussion</namespace>
      <namespace key="2" case="first-letter">Utilisateur</namespace>
      <namespace key="3" case="first-letter">Discussion utilisateur</namespace>
      <namespace key="4" case="first-letter">wiki.debian-fr</namespace>
      <namespace key="5" case="first-letter">Discussion wiki.debian-fr</namespace>
      <namespace key="6" case="first-letter">Fichier</namespace>
      <namespace key="7" case="first-letter">Discussion fichier</namespace>
      <namespace key="8" case="first-letter">MediaWiki</namespace>
      <namespace key="9" case="first-letter">Discussion MediaWiki</namespace>
      <namespace key="10" case="first-letter">Modèle</namespace>
      <namespace key="11" case="first-letter">Discussion modèle</namespace>
      <namespace key="12" case="first-letter">Aide</namespace>
      <namespace key="13" case="first-letter">Discussion aide</namespace>
      <namespace key="14" case="first-letter">Catégorie</namespace>
      <namespace key="15" case="first-letter">Discussion catégorie</namespace>
      <namespace key="102" case="first-letter">Attribut</namespace>
      <namespace key="103" case="first-letter">Discussion attribut</namespace>
      <namespace key="104" case="first-letter">Type</namespace>
      <namespace key="105" case="first-letter">Type talk</namespace>
      <namespace key="106" case="first-letter">Formulaire</namespace>
      <namespace key="107" case="first-letter">Discussion formulaire</namespace>
      <namespace key="108" case="first-letter">Concept</namespace>
      <namespace key="109" case="first-letter">Discussion concept</namespace>
      <namespace key="170" case="first-letter">Filter</namespace>
      <namespace key="171" case="first-letter">Filter talk</namespace>
      <namespace key="274" case="first-letter">Widget</namespace>
      <namespace key="275" case="first-letter">Widget talk</namespace>
    </namespaces>
  </siteinfo>
  <page>
    <title>AWStats</title>
    <ns>0</ns>
    <id>611</id>
    <revision>
      <id>2552</id>
      <timestamp>2010-12-26T13:28:44Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « AWStats est un outil puissant et complet d'analyse de log. Il est très pratique, et très utilisé, pour surveiller (entre autre) des serveurs Web  J'ai choisi dans ce tuto ... »</comment>
      <text xml:space="preserve" bytes="5588">AWStats est un outil puissant et complet d'analyse de log.
Il est très pratique, et très utilisé, pour surveiller (entre autre) des serveurs Web

J'ai choisi dans ce tuto d'installer AWStats sur une squeeze.

La configuration ne diffère pas beaucoup d'une Lenny.

== Surveillance d'un domaine ==

=== Installation ===

 # aptitude install awstats

ou

 # apt-get install awstats


=== Configuration ===

 # cp /etc/awstats/awstats.conf /etc/awstats/awstats.zehome.conf

 # nano /etc/awstats/awstats.zehome.conf
 LogFile=&quot;/var/log/apache2/access.log&quot;
 SiteDomain=&quot;zehome.org&quot;

=== Mise à jour et préparation de la base ===

Lancer le perl suivant avec votre nom de domaine à la place de zehome

 # /usr/lib/cgi-bin/awstats.pl -config=zehome -update
 Create/Update database for config &quot;/etc/awstats/awstats.zehome.conf&quot; by AWStats version 6.95 (build 1.943)
 From data in log file &quot;/var/log/apache2/access.log&quot;...
 Phase 1 : First bypass old records, searching new record...
 Searching new records from beginning of log file...
 Phase 2 : Now process new records (Flush history on disk after 20000 hosts)...
 Reverse DNS lookup for ::1 not available without ipv6 plugin enabled.
 Jumped lines in file: 0
 Parsed lines in file: 587
  Found 0 dropped records,
  Found 0 corrupted records,
  Found 0 old records,
  Found 587 new qualified records.

=== Configuration de apache2 ===

 # nano /etc/apache2/apache2.conf

 Alias /awstats-icon/ /usr/share/awstats/icon/
 &lt;Directory /usr/share/awstats/icon&gt;
 Options None
 AllowOverride None
 Order allow,deny
 Allow from all
 &lt;/Directory&gt;

 # apache2ctl restart

=== Modification de la tâche cron ===

 # nano /etc/cron.d/awstats
 0,10,20,30,40,50 * * * * www-data [ -x /usr/lib/cgi-bin/awstats.pl -a -f /etc/awstats/awstats.conf -a -r /var/log/apache/access.log ]  &amp;&amp; /usr/lib/cgi-bin/awstats.pl -config=awstats -update &gt;/dev/null
 0,10,20,30,40,50 * * * * www-data perl /usr/lib/cgi-bin/awstats.pl -config=zehome -update &gt; /dev/null

=== Utilisation ===

Accédez à votre page en faisant:

http://zehome.org/cgi-bin/awstats.pl?config=zehome

[[Fichier:Awstats.jpeg]]

== Surveillance de plusieurs &quot;virtualhosts&quot; sur le même serveur apache2 ==

Nous supposerons que vous avez deux sites virtuels (vous pouvez en avoir évidemment autant que vous le voulez...) :

 # apache2ctl -S
 VirtualHost configuration:
 wildcard NameVirtualHosts and _default_ servers:
 *:80                   is a NameVirtualHost
          default server squeeze.zehome.org (/etc/apache2/sites-enabled/000-default:1)
          port 80 namevhost squeeze.zehome.org (/etc/apache2/sites-enabled/000-default:1)
          port 80 namevhost piwik.zehome.org (/etc/apache2/sites-enabled/piwik:1)
          port 80 namevhost wiki.zehome.org (/etc/apache2/sites-enabled/wiki:1)
 Syntax OK

=== Dans chaque virtualhost ajouter un fichier log spécifique ===

 &lt;virtualhost *:80&gt;
 ServerName http://piwik.zehome.org
 ErrorLog /var/log/apache2/piwik.zehome.org.log
 CustomLog /var/log/apache2/piwik.zehome.org.log combined
 .....
 &lt;/virtualhost&gt;
 
 &lt;virtualhost *:80&gt;
 ServerName http://wiki.zehome.org
 ErrorLog /var/log/apache2/wiki.zehome.org.log
 CustomLog /var/log/apache2/wiki.zehome.org.log combined
 .....
 &lt;/virtualhost&gt;

 # apache2ctl restart

Vous remarquerez que apache aura créé lui-même les fichiers log nécessaires...

=== Créons une configuration de awstat par virtual host ===

 # nano /etc/awstats/awstats.piwik.conf

 LogFile=&quot;/var/log/apache2/piwik.zehome.org.log&quot;
 LogFormat = 1
 LogType=W
 DNSLookup=1
 SiteDomain=&quot;piwik.zehome.org&quot;
 HostAliases=&quot;127.0.0.1 192.168.1.254 http://piwik.zehome.org piwik.zehome.org&quot;
 DirIcons=&quot;/awstats-icon&quot;
 AllowFullYearView=3

 # nano /etc/awstats/awstats.wiki.conf

 LogFile=&quot;/var/log/apache2/wiki.zehome.org.log&quot;
 LogFormat = 1
 LogType=W
 DNSLookup=1
 SiteDomain=&quot;wiki.zehome.org&quot;
 HostAliases=&quot;127.0.0.1 192.168.1.254 http://wiki.zehome.org wiki.zehome.org&quot;
 DirIcons=&quot;/awstats-icon&quot;
 AllowFullYearView=3

Dans HostAliases on peut mettre tous les noms et adresses IP par lesquels ce site est joignable (donc qui peuvent identifier ce site dans les logs apache).

=== intégrer nos fichiers de conf dans le cron de awstats ===

Modifier le fichier /etc/cron.d/awstats

 # nano /etc/cron.d/awstats

 0,10,20,30,40,50 * * * * root /bin/sh /root/awstats.sh

Créer le fichier /root/awstats.sh

 # nano /root/awstats.sh
 perl /usr/lib/cgi-bin/awstats.pl -config=piwik -update &gt; /dev/null
 perl /usr/lib/cgi-bin/awstats.pl -config=wiki -update &gt; /dev/null

Et le rendre exécutable :

 # chmod +x awstats.sh

Pour ne rater aucune information, bien penser à lancer aussi le script /root/awstats.sh lors des logrotate de apache en inserant dans le fichier /etc/logrotate.d/apache2 les lignes 

# nano /etc/logrotate.d/apache2
 ...
 prerotate
 /bin/sh /root/awstats.sh
 endscript
 ...

vous remarquerez que l'on utilise plus du tout le fichiers /etc/awstats/awstats.conf par défaut.

=== Accéder aux stats ===

pour chaque stat, utiliser une URL differente relative au fichier de conf de awstats

 http://squeeze.zehome.org/cgi-bin/awstats.pl?config=wiki
 http://squeeze.zehome.org/cgi-bin/awstats.pl?config=piwik

Si les statistiques n'ont pas été initialisées, vous aurez droit à ce message en haut de page :

 Last Update: 	Never updated (See 'Build/Update' on awstats_setup.html page)

Si les statistiques on bien été mise à jour, vous aurez ceci :

 Last Update: 	26 Dec 2010 - 16:19

[http://awstats.sourceforge.net/ Site Web officiel de AWStats]

[[Utilisateur:Lol|Lol]] 26 décembre 2010 à 07:28 (CST)</text>
      <sha1>qpe25dadr05mticno52iv5mpx8i15jf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2554</id>
      <parentid>2552</parentid>
      <timestamp>2010-12-26T13:32:59Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="5667">AWStats est un outil puissant et complet d'analyse de log.
Il est très pratique, et très utilisé, pour surveiller (entre autre) des serveurs Web

J'ai choisi dans ce tuto d'installer AWStats sur une squeeze.

La configuration ne diffère pas beaucoup d'une Lenny.

== Surveillance d'un domaine ==

=== Installation ===

 # aptitude install awstats

ou

 # apt-get install awstats


=== Configuration ===

 # cp /etc/awstats/awstats.conf /etc/awstats/awstats.zehome.conf

 # nano /etc/awstats/awstats.zehome.conf
 LogFile=&quot;/var/log/apache2/access.log&quot;
 SiteDomain=&quot;zehome.org&quot;

=== Mise à jour et préparation de la base ===

Lancer le perl suivant avec votre nom de domaine à la place de zehome

 # /usr/lib/cgi-bin/awstats.pl -config=zehome -update
 Create/Update database for config &quot;/etc/awstats/awstats.zehome.conf&quot; by AWStats version 6.95 (build 1.943)
 From data in log file &quot;/var/log/apache2/access.log&quot;...
 Phase 1 : First bypass old records, searching new record...
 Searching new records from beginning of log file...
 Phase 2 : Now process new records (Flush history on disk after 20000 hosts)...
 Reverse DNS lookup for ::1 not available without ipv6 plugin enabled.
 Jumped lines in file: 0
 Parsed lines in file: 587
  Found 0 dropped records,
  Found 0 corrupted records,
  Found 0 old records,
  Found 587 new qualified records.

=== Configuration de apache2 ===

 # nano /etc/apache2/apache2.conf

 Alias /awstats-icon/ /usr/share/awstats/icon/
 &lt;Directory /usr/share/awstats/icon&gt;
 Options None
 AllowOverride None
 Order allow,deny
 Allow from all
 &lt;/Directory&gt;

 # apache2ctl restart

=== Modification de la tâche cron ===

 # nano /etc/cron.d/awstats
 0,10,20,30,40,50 * * * * www-data [ -x /usr/lib/cgi-bin/awstats.pl -a -f /etc/awstats/awstats.conf -a -r /var/log/apache/access.log ]  &amp;&amp; /usr/lib/cgi-bin/awstats.pl -config=awstats -update &gt;/dev/null
 0,10,20,30,40,50 * * * * www-data perl /usr/lib/cgi-bin/awstats.pl -config=zehome -update &gt; /dev/null

=== Utilisation ===

Accédez à votre page en faisant:

http://zehome.org/cgi-bin/awstats.pl?config=zehome

[[Fichier:Awstats.jpeg]]

== Surveillance de plusieurs &quot;virtualhosts&quot; sur le même serveur apache2 ==

Nous supposerons que vous avez deux sites virtuels (vous pouvez en avoir évidemment autant que vous le voulez...) :

 # apache2ctl -S
 VirtualHost configuration:
 wildcard NameVirtualHosts and _default_ servers:
 *:80                   is a NameVirtualHost
          default server squeeze.zehome.org (/etc/apache2/sites-enabled/000-default:1)
          port 80 namevhost squeeze.zehome.org (/etc/apache2/sites-enabled/000-default:1)
          port 80 namevhost piwik.zehome.org (/etc/apache2/sites-enabled/piwik:1)
          port 80 namevhost wiki.zehome.org (/etc/apache2/sites-enabled/wiki:1)
 Syntax OK

=== Dans chaque virtualhost ajouter un fichier log spécifique ===

 &lt;virtualhost *:80&gt;
 ServerName http://piwik.zehome.org
 ErrorLog /var/log/apache2/piwik.zehome.org.log
 CustomLog /var/log/apache2/piwik.zehome.org.log combined
 .....
 &lt;/virtualhost&gt;
 
 &lt;virtualhost *:80&gt;
 ServerName http://wiki.zehome.org
 ErrorLog /var/log/apache2/wiki.zehome.org.log
 CustomLog /var/log/apache2/wiki.zehome.org.log combined
 .....
 &lt;/virtualhost&gt;

 # apache2ctl restart

Vous remarquerez que apache aura créé lui-même les fichiers log nécessaires...

=== Créons une configuration de awstat par virtual host ===

 # nano /etc/awstats/awstats.piwik.conf

 LogFile=&quot;/var/log/apache2/piwik.zehome.org.log&quot;
 LogFormat = 1
 LogType=W
 DNSLookup=1
 SiteDomain=&quot;piwik.zehome.org&quot;
 HostAliases=&quot;127.0.0.1 192.168.1.254 http://piwik.zehome.org piwik.zehome.org&quot;
 DirIcons=&quot;/awstats-icon&quot;
 AllowFullYearView=3

 # nano /etc/awstats/awstats.wiki.conf

 LogFile=&quot;/var/log/apache2/wiki.zehome.org.log&quot;
 LogFormat = 1
 LogType=W
 DNSLookup=1
 SiteDomain=&quot;wiki.zehome.org&quot;
 HostAliases=&quot;127.0.0.1 192.168.1.254 http://wiki.zehome.org wiki.zehome.org&quot;
 DirIcons=&quot;/awstats-icon&quot;
 AllowFullYearView=3

Dans HostAliases on peut mettre tous les noms et adresses IP par lesquels ce site est joignable (donc qui peuvent identifier ce site dans les logs apache).

=== intégrer nos fichiers de conf dans le cron de awstats ===

Modifier le fichier /etc/cron.d/awstats

 # nano /etc/cron.d/awstats

 0,10,20,30,40,50 * * * * root /bin/sh /root/awstats.sh

Créer le fichier /root/awstats.sh

 # nano /root/awstats.sh
 perl /usr/lib/cgi-bin/awstats.pl -config=piwik -update &gt; /dev/null
 perl /usr/lib/cgi-bin/awstats.pl -config=wiki -update &gt; /dev/null

Et le rendre exécutable :

 # chmod +x awstats.sh

Pour ne rater aucune information, bien penser à lancer aussi le script /root/awstats.sh lors des logrotate de apache en inserant dans le fichier /etc/logrotate.d/apache2 les lignes 

# nano /etc/logrotate.d/apache2
 ...
 prerotate
 /bin/sh /root/awstats.sh
 endscript
 ...

vous remarquerez que l'on utilise plus du tout le fichiers /etc/awstats/awstats.conf par défaut.

=== Accéder aux stats ===

pour chaque stat, utiliser une URL differente relative au fichier de conf de awstats

 http://squeeze.zehome.org/cgi-bin/awstats.pl?config=wiki
 http://squeeze.zehome.org/cgi-bin/awstats.pl?config=piwik

Si les statistiques n'ont pas été initialisées, vous aurez droit à ce message en haut de page :

 Last Update: 	Never updated (See 'Build/Update' on awstats_setup.html page)

Si les statistiques on bien été mise à jour, vous aurez ceci :

 Last Update: 	26 Dec 2010 - 16:19

[http://www.debian-fr.org/awstats-tuto-t26343.html#p260813 Page sur le forum]

[http://awstats.sourceforge.net/ Site Web officiel de AWStats]

[[Utilisateur:Lol|Lol]] 26 décembre 2010 à 07:28 (CST)</text>
      <sha1>ie8h9zjj2fih3fqay83hc61uezyb6gy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2559</id>
      <parentid>2554</parentid>
      <timestamp>2010-12-26T14:04:06Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="5699">AWStats est un outil puissant et complet d'analyse de log.
Il est très pratique, et très utilisé, pour surveiller (entre autre) des serveurs Web

J'ai choisi dans ce tuto d'installer AWStats sur une squeeze.

La configuration ne diffère pas beaucoup d'une Lenny.

== Surveillance d'un domaine ==

=== Installation ===

 # aptitude install awstats

ou

 # apt-get install awstats


=== Configuration ===

 # cp /etc/awstats/awstats.conf /etc/awstats/awstats.zehome.conf

 # nano /etc/awstats/awstats.zehome.conf
 LogFile=&quot;/var/log/apache2/access.log&quot;
 SiteDomain=&quot;zehome.org&quot;

=== Mise à jour et préparation de la base ===

Lancer le perl suivant avec votre nom de domaine à la place de zehome

 # /usr/lib/cgi-bin/awstats.pl -config=zehome -update
 Create/Update database for config &quot;/etc/awstats/awstats.zehome.conf&quot; by AWStats version 6.95 (build 1.943)
 From data in log file &quot;/var/log/apache2/access.log&quot;...
 Phase 1 : First bypass old records, searching new record...
 Searching new records from beginning of log file...
 Phase 2 : Now process new records (Flush history on disk after 20000 hosts)...
 Reverse DNS lookup for ::1 not available without ipv6 plugin enabled.
 Jumped lines in file: 0
 Parsed lines in file: 587
  Found 0 dropped records,
  Found 0 corrupted records,
  Found 0 old records,
  Found 587 new qualified records.

=== Configuration de apache2 ===

 # nano /etc/apache2/apache2.conf

 Alias /awstats-icon/ /usr/share/awstats/icon/
 &lt;Directory /usr/share/awstats/icon&gt;
 Options None
 AllowOverride None
 Order allow,deny
 Allow from all
 &lt;/Directory&gt;

 # apache2ctl restart

=== Modification de la tâche cron ===

 # nano /etc/cron.d/awstats
 0,10,20,30,40,50 * * * * www-data [ -x /usr/lib/cgi-bin/awstats.pl -a -f /etc/awstats/awstats.conf -a -r /var/log/apache/access.log ]  &amp;&amp; /usr/lib/cgi-bin/awstats.pl -config=awstats -update &gt;/dev/null
 0,10,20,30,40,50 * * * * www-data perl /usr/lib/cgi-bin/awstats.pl -config=zehome -update &gt; /dev/null

=== Utilisation ===

Accédez à votre page en faisant:

http://zehome.org/cgi-bin/awstats.pl?config=zehome

[[Fichier:Awstats.jpeg]]

== Surveillance de plusieurs &quot;virtualhosts&quot; sur le même serveur apache2 ==

Nous supposerons que vous avez deux sites virtuels (vous pouvez en avoir évidemment autant que vous le voulez...) :

 # apache2ctl -S
 VirtualHost configuration:
 wildcard NameVirtualHosts and _default_ servers:
 *:80                   is a NameVirtualHost
          default server squeeze.zehome.org (/etc/apache2/sites-enabled/000-default:1)
          port 80 namevhost squeeze.zehome.org (/etc/apache2/sites-enabled/000-default:1)
          port 80 namevhost piwik.zehome.org (/etc/apache2/sites-enabled/piwik:1)
          port 80 namevhost wiki.zehome.org (/etc/apache2/sites-enabled/wiki:1)
 Syntax OK

=== Dans chaque virtualhost ajouter un fichier log spécifique ===

 &lt;virtualhost *:80&gt;
 ServerName http://piwik.zehome.org
 ErrorLog /var/log/apache2/piwik.zehome.org.log
 CustomLog /var/log/apache2/piwik.zehome.org.log combined
 .....
 &lt;/virtualhost&gt;
 
 &lt;virtualhost *:80&gt;
 ServerName http://wiki.zehome.org
 ErrorLog /var/log/apache2/wiki.zehome.org.log
 CustomLog /var/log/apache2/wiki.zehome.org.log combined
 .....
 &lt;/virtualhost&gt;

 # apache2ctl restart

Vous remarquerez que apache aura créé lui-même les fichiers log nécessaires...

=== Créons une configuration de awstat par virtual host ===

 # nano /etc/awstats/awstats.piwik.conf

 LogFile=&quot;/var/log/apache2/piwik.zehome.org.log&quot;
 LogFormat = 1
 LogType=W
 DNSLookup=1
 SiteDomain=&quot;piwik.zehome.org&quot;
 HostAliases=&quot;127.0.0.1 192.168.1.254 http://piwik.zehome.org piwik.zehome.org&quot;
 DirIcons=&quot;/awstats-icon&quot;
 AllowFullYearView=3

 # nano /etc/awstats/awstats.wiki.conf

 LogFile=&quot;/var/log/apache2/wiki.zehome.org.log&quot;
 LogFormat = 1
 LogType=W
 DNSLookup=1
 SiteDomain=&quot;wiki.zehome.org&quot;
 HostAliases=&quot;127.0.0.1 192.168.1.254 http://wiki.zehome.org wiki.zehome.org&quot;
 DirIcons=&quot;/awstats-icon&quot;
 AllowFullYearView=3

Dans HostAliases on peut mettre tous les noms et adresses IP par lesquels ce site est joignable (donc qui peuvent identifier ce site dans les logs apache).

=== intégrer nos fichiers de conf dans le cron de awstats ===

Modifier le fichier /etc/cron.d/awstats

 # nano /etc/cron.d/awstats

 0,10,20,30,40,50 * * * * root /bin/sh /root/awstats.sh

Créer le fichier /root/awstats.sh

 # nano /root/awstats.sh
 perl /usr/lib/cgi-bin/awstats.pl -config=piwik -update &gt; /dev/null
 perl /usr/lib/cgi-bin/awstats.pl -config=wiki -update &gt; /dev/null

Et le rendre exécutable :

 # chmod +x awstats.sh

Pour ne rater aucune information, bien penser à lancer aussi le script /root/awstats.sh lors des logrotate de apache en inserant dans le fichier /etc/logrotate.d/apache2 les lignes 

# nano /etc/logrotate.d/apache2
 ...
 prerotate
 /bin/sh /root/awstats.sh
 endscript
 ...

vous remarquerez que l'on utilise plus du tout le fichiers /etc/awstats/awstats.conf par défaut.

=== Accéder aux stats ===

pour chaque stat, utiliser une URL differente relative au fichier de conf de awstats

 http://squeeze.zehome.org/cgi-bin/awstats.pl?config=wiki
 http://squeeze.zehome.org/cgi-bin/awstats.pl?config=piwik

Si les statistiques n'ont pas été initialisées, vous aurez droit à ce message en haut de page :

 Last Update: 	Never updated (See 'Build/Update' on awstats_setup.html page)

Si les statistiques on bien été mise à jour, vous aurez ceci :

 Last Update: 	26 Dec 2010 - 16:19

[http://www.debian-fr.org/awstats-tuto-t26343.html#p260813 Page sur le forum]

[http://awstats.sourceforge.net/ Site Web officiel de AWStats]

[[Utilisateur:Lol|Lol]] 26 décembre 2010 à 07:28 (CST)

[[Catégorie:SurveillanceWeb]]</text>
      <sha1>koxcnnptvw56cjehnjk479p2qds1mpc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3474</id>
      <parentid>2559</parentid>
      <timestamp>2011-09-14T09:23:23Z</timestamp>
      <contributor>
        <username>Sorrodje</username>
        <id>161</id>
      </contributor>
      <comment>/* Créons une configuration de awstat par virtual host */</comment>
      <text xml:space="preserve" bytes="5721">AWStats est un outil puissant et complet d'analyse de log.
Il est très pratique, et très utilisé, pour surveiller (entre autre) des serveurs Web

J'ai choisi dans ce tuto d'installer AWStats sur une squeeze.

La configuration ne diffère pas beaucoup d'une Lenny.

== Surveillance d'un domaine ==

=== Installation ===

 # aptitude install awstats

ou

 # apt-get install awstats


=== Configuration ===

 # cp /etc/awstats/awstats.conf /etc/awstats/awstats.zehome.conf

 # nano /etc/awstats/awstats.zehome.conf
 LogFile=&quot;/var/log/apache2/access.log&quot;
 SiteDomain=&quot;zehome.org&quot;

=== Mise à jour et préparation de la base ===

Lancer le perl suivant avec votre nom de domaine à la place de zehome

 # /usr/lib/cgi-bin/awstats.pl -config=zehome -update
 Create/Update database for config &quot;/etc/awstats/awstats.zehome.conf&quot; by AWStats version 6.95 (build 1.943)
 From data in log file &quot;/var/log/apache2/access.log&quot;...
 Phase 1 : First bypass old records, searching new record...
 Searching new records from beginning of log file...
 Phase 2 : Now process new records (Flush history on disk after 20000 hosts)...
 Reverse DNS lookup for ::1 not available without ipv6 plugin enabled.
 Jumped lines in file: 0
 Parsed lines in file: 587
  Found 0 dropped records,
  Found 0 corrupted records,
  Found 0 old records,
  Found 587 new qualified records.

=== Configuration de apache2 ===

 # nano /etc/apache2/apache2.conf

 Alias /awstats-icon/ /usr/share/awstats/icon/
 &lt;Directory /usr/share/awstats/icon&gt;
 Options None
 AllowOverride None
 Order allow,deny
 Allow from all
 &lt;/Directory&gt;

 # apache2ctl restart

=== Modification de la tâche cron ===

 # nano /etc/cron.d/awstats
 0,10,20,30,40,50 * * * * www-data [ -x /usr/lib/cgi-bin/awstats.pl -a -f /etc/awstats/awstats.conf -a -r /var/log/apache/access.log ]  &amp;&amp; /usr/lib/cgi-bin/awstats.pl -config=awstats -update &gt;/dev/null
 0,10,20,30,40,50 * * * * www-data perl /usr/lib/cgi-bin/awstats.pl -config=zehome -update &gt; /dev/null

=== Utilisation ===

Accédez à votre page en faisant:

http://zehome.org/cgi-bin/awstats.pl?config=zehome

[[Fichier:Awstats.jpeg]]

== Surveillance de plusieurs &quot;virtualhosts&quot; sur le même serveur apache2 ==

Nous supposerons que vous avez deux sites virtuels (vous pouvez en avoir évidemment autant que vous le voulez...) :

 # apache2ctl -S
 VirtualHost configuration:
 wildcard NameVirtualHosts and _default_ servers:
 *:80                   is a NameVirtualHost
          default server squeeze.zehome.org (/etc/apache2/sites-enabled/000-default:1)
          port 80 namevhost squeeze.zehome.org (/etc/apache2/sites-enabled/000-default:1)
          port 80 namevhost piwik.zehome.org (/etc/apache2/sites-enabled/piwik:1)
          port 80 namevhost wiki.zehome.org (/etc/apache2/sites-enabled/wiki:1)
 Syntax OK

=== Dans chaque virtualhost ajouter un fichier log spécifique ===

 &lt;virtualhost *:80&gt;
 ServerName http://piwik.zehome.org
 ErrorLog /var/log/apache2/piwik.zehome.org.log
 CustomLog /var/log/apache2/piwik.zehome.org.log combined
 .....
 &lt;/virtualhost&gt;
 
 &lt;virtualhost *:80&gt;
 ServerName http://wiki.zehome.org
 ErrorLog /var/log/apache2/wiki.zehome.org.log
 CustomLog /var/log/apache2/wiki.zehome.org.log combined
 .....
 &lt;/virtualhost&gt;

 # apache2ctl restart

Vous remarquerez que apache aura créé lui-même les fichiers log nécessaires...

=== Créons une configuration de awstat par virtual host ===

 # nano /etc/awstats/awstats.piwik.zehome.org.conf

 LogFile=&quot;/var/log/apache2/piwik.zehome.org.log&quot;
 LogFormat = 1
 LogType=W
 DNSLookup=1
 SiteDomain=&quot;piwik.zehome.org&quot;
 HostAliases=&quot;127.0.0.1 192.168.1.254 http://piwik.zehome.org piwik.zehome.org&quot;
 DirIcons=&quot;/awstats-icon&quot;
 AllowFullYearView=3

 # nano /etc/awstats/awstats.wiki.zehome.org.conf

 LogFile=&quot;/var/log/apache2/wiki.zehome.org.log&quot;
 LogFormat = 1
 LogType=W
 DNSLookup=1
 SiteDomain=&quot;wiki.zehome.org&quot;
 HostAliases=&quot;127.0.0.1 192.168.1.254 http://wiki.zehome.org wiki.zehome.org&quot;
 DirIcons=&quot;/awstats-icon&quot;
 AllowFullYearView=3

Dans HostAliases on peut mettre tous les noms et adresses IP par lesquels ce site est joignable (donc qui peuvent identifier ce site dans les logs apache).

=== intégrer nos fichiers de conf dans le cron de awstats ===

Modifier le fichier /etc/cron.d/awstats

 # nano /etc/cron.d/awstats

 0,10,20,30,40,50 * * * * root /bin/sh /root/awstats.sh

Créer le fichier /root/awstats.sh

 # nano /root/awstats.sh
 perl /usr/lib/cgi-bin/awstats.pl -config=piwik -update &gt; /dev/null
 perl /usr/lib/cgi-bin/awstats.pl -config=wiki -update &gt; /dev/null

Et le rendre exécutable :

 # chmod +x awstats.sh

Pour ne rater aucune information, bien penser à lancer aussi le script /root/awstats.sh lors des logrotate de apache en inserant dans le fichier /etc/logrotate.d/apache2 les lignes 

# nano /etc/logrotate.d/apache2
 ...
 prerotate
 /bin/sh /root/awstats.sh
 endscript
 ...

vous remarquerez que l'on utilise plus du tout le fichiers /etc/awstats/awstats.conf par défaut.

=== Accéder aux stats ===

pour chaque stat, utiliser une URL differente relative au fichier de conf de awstats

 http://squeeze.zehome.org/cgi-bin/awstats.pl?config=wiki
 http://squeeze.zehome.org/cgi-bin/awstats.pl?config=piwik

Si les statistiques n'ont pas été initialisées, vous aurez droit à ce message en haut de page :

 Last Update: 	Never updated (See 'Build/Update' on awstats_setup.html page)

Si les statistiques on bien été mise à jour, vous aurez ceci :

 Last Update: 	26 Dec 2010 - 16:19

[http://www.debian-fr.org/awstats-tuto-t26343.html#p260813 Page sur le forum]

[http://awstats.sourceforge.net/ Site Web officiel de AWStats]

[[Utilisateur:Lol|Lol]] 26 décembre 2010 à 07:28 (CST)

[[Catégorie:SurveillanceWeb]]</text>
      <sha1>qaz3eg1hv9vxip9jmft8ckoikb263pq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3475</id>
      <parentid>3474</parentid>
      <timestamp>2011-09-14T09:24:46Z</timestamp>
      <contributor>
        <username>Sorrodje</username>
        <id>161</id>
      </contributor>
      <comment>/* intégrer nos fichiers de conf dans le cron de awstats */</comment>
      <text xml:space="preserve" bytes="5743">AWStats est un outil puissant et complet d'analyse de log.
Il est très pratique, et très utilisé, pour surveiller (entre autre) des serveurs Web

J'ai choisi dans ce tuto d'installer AWStats sur une squeeze.

La configuration ne diffère pas beaucoup d'une Lenny.

== Surveillance d'un domaine ==

=== Installation ===

 # aptitude install awstats

ou

 # apt-get install awstats


=== Configuration ===

 # cp /etc/awstats/awstats.conf /etc/awstats/awstats.zehome.conf

 # nano /etc/awstats/awstats.zehome.conf
 LogFile=&quot;/var/log/apache2/access.log&quot;
 SiteDomain=&quot;zehome.org&quot;

=== Mise à jour et préparation de la base ===

Lancer le perl suivant avec votre nom de domaine à la place de zehome

 # /usr/lib/cgi-bin/awstats.pl -config=zehome -update
 Create/Update database for config &quot;/etc/awstats/awstats.zehome.conf&quot; by AWStats version 6.95 (build 1.943)
 From data in log file &quot;/var/log/apache2/access.log&quot;...
 Phase 1 : First bypass old records, searching new record...
 Searching new records from beginning of log file...
 Phase 2 : Now process new records (Flush history on disk after 20000 hosts)...
 Reverse DNS lookup for ::1 not available without ipv6 plugin enabled.
 Jumped lines in file: 0
 Parsed lines in file: 587
  Found 0 dropped records,
  Found 0 corrupted records,
  Found 0 old records,
  Found 587 new qualified records.

=== Configuration de apache2 ===

 # nano /etc/apache2/apache2.conf

 Alias /awstats-icon/ /usr/share/awstats/icon/
 &lt;Directory /usr/share/awstats/icon&gt;
 Options None
 AllowOverride None
 Order allow,deny
 Allow from all
 &lt;/Directory&gt;

 # apache2ctl restart

=== Modification de la tâche cron ===

 # nano /etc/cron.d/awstats
 0,10,20,30,40,50 * * * * www-data [ -x /usr/lib/cgi-bin/awstats.pl -a -f /etc/awstats/awstats.conf -a -r /var/log/apache/access.log ]  &amp;&amp; /usr/lib/cgi-bin/awstats.pl -config=awstats -update &gt;/dev/null
 0,10,20,30,40,50 * * * * www-data perl /usr/lib/cgi-bin/awstats.pl -config=zehome -update &gt; /dev/null

=== Utilisation ===

Accédez à votre page en faisant:

http://zehome.org/cgi-bin/awstats.pl?config=zehome

[[Fichier:Awstats.jpeg]]

== Surveillance de plusieurs &quot;virtualhosts&quot; sur le même serveur apache2 ==

Nous supposerons que vous avez deux sites virtuels (vous pouvez en avoir évidemment autant que vous le voulez...) :

 # apache2ctl -S
 VirtualHost configuration:
 wildcard NameVirtualHosts and _default_ servers:
 *:80                   is a NameVirtualHost
          default server squeeze.zehome.org (/etc/apache2/sites-enabled/000-default:1)
          port 80 namevhost squeeze.zehome.org (/etc/apache2/sites-enabled/000-default:1)
          port 80 namevhost piwik.zehome.org (/etc/apache2/sites-enabled/piwik:1)
          port 80 namevhost wiki.zehome.org (/etc/apache2/sites-enabled/wiki:1)
 Syntax OK

=== Dans chaque virtualhost ajouter un fichier log spécifique ===

 &lt;virtualhost *:80&gt;
 ServerName http://piwik.zehome.org
 ErrorLog /var/log/apache2/piwik.zehome.org.log
 CustomLog /var/log/apache2/piwik.zehome.org.log combined
 .....
 &lt;/virtualhost&gt;
 
 &lt;virtualhost *:80&gt;
 ServerName http://wiki.zehome.org
 ErrorLog /var/log/apache2/wiki.zehome.org.log
 CustomLog /var/log/apache2/wiki.zehome.org.log combined
 .....
 &lt;/virtualhost&gt;

 # apache2ctl restart

Vous remarquerez que apache aura créé lui-même les fichiers log nécessaires...

=== Créons une configuration de awstat par virtual host ===

 # nano /etc/awstats/awstats.piwik.zehome.org.conf

 LogFile=&quot;/var/log/apache2/piwik.zehome.org.log&quot;
 LogFormat = 1
 LogType=W
 DNSLookup=1
 SiteDomain=&quot;piwik.zehome.org&quot;
 HostAliases=&quot;127.0.0.1 192.168.1.254 http://piwik.zehome.org piwik.zehome.org&quot;
 DirIcons=&quot;/awstats-icon&quot;
 AllowFullYearView=3

 # nano /etc/awstats/awstats.wiki.zehome.org.conf

 LogFile=&quot;/var/log/apache2/wiki.zehome.org.log&quot;
 LogFormat = 1
 LogType=W
 DNSLookup=1
 SiteDomain=&quot;wiki.zehome.org&quot;
 HostAliases=&quot;127.0.0.1 192.168.1.254 http://wiki.zehome.org wiki.zehome.org&quot;
 DirIcons=&quot;/awstats-icon&quot;
 AllowFullYearView=3

Dans HostAliases on peut mettre tous les noms et adresses IP par lesquels ce site est joignable (donc qui peuvent identifier ce site dans les logs apache).

=== intégrer nos fichiers de conf dans le cron de awstats ===

Modifier le fichier /etc/cron.d/awstats

 # nano /etc/cron.d/awstats

 0,10,20,30,40,50 * * * * root /bin/sh /root/awstats.sh

Créer le fichier /root/awstats.sh

 # nano /root/awstats.sh
 perl /usr/lib/cgi-bin/awstats.pl -config=piwik.zehome.org -update &gt; /dev/null
 perl /usr/lib/cgi-bin/awstats.pl -config=wiki.zehome.org -update &gt; /dev/null

Et le rendre exécutable :

 # chmod +x awstats.sh

Pour ne rater aucune information, bien penser à lancer aussi le script /root/awstats.sh lors des logrotate de apache en inserant dans le fichier /etc/logrotate.d/apache2 les lignes 

# nano /etc/logrotate.d/apache2
 ...
 prerotate
 /bin/sh /root/awstats.sh
 endscript
 ...

vous remarquerez que l'on utilise plus du tout le fichiers /etc/awstats/awstats.conf par défaut.

=== Accéder aux stats ===

pour chaque stat, utiliser une URL differente relative au fichier de conf de awstats

 http://squeeze.zehome.org/cgi-bin/awstats.pl?config=wiki
 http://squeeze.zehome.org/cgi-bin/awstats.pl?config=piwik

Si les statistiques n'ont pas été initialisées, vous aurez droit à ce message en haut de page :

 Last Update: 	Never updated (See 'Build/Update' on awstats_setup.html page)

Si les statistiques on bien été mise à jour, vous aurez ceci :

 Last Update: 	26 Dec 2010 - 16:19

[http://www.debian-fr.org/awstats-tuto-t26343.html#p260813 Page sur le forum]

[http://awstats.sourceforge.net/ Site Web officiel de AWStats]

[[Utilisateur:Lol|Lol]] 26 décembre 2010 à 07:28 (CST)

[[Catégorie:SurveillanceWeb]]</text>
      <sha1>k73ttxlvn029u56nplg1zrp1hfm8krx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4086</id>
      <parentid>3475</parentid>
      <timestamp>2012-04-26T10:47:43Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="5763">AWStats est un outil puissant et complet d'analyse de log.
Il est très pratique, et très utilisé, pour surveiller (entre autre) des serveurs Web

J'ai choisi dans ce tuto d'installer AWStats sur une [[Version debian::squeeze]].

La configuration ne diffère pas beaucoup d'une Lenny.

== Surveillance d'un domaine ==

=== Installation ===

 # aptitude install awstats

ou

 # apt-get install awstats


=== Configuration ===

 # cp /etc/awstats/awstats.conf /etc/awstats/awstats.zehome.conf

 # nano /etc/awstats/awstats.zehome.conf
 LogFile=&quot;/var/log/apache2/access.log&quot;
 SiteDomain=&quot;zehome.org&quot;

=== Mise à jour et préparation de la base ===

Lancer le perl suivant avec votre nom de domaine à la place de zehome

 # /usr/lib/cgi-bin/awstats.pl -config=zehome -update
 Create/Update database for config &quot;/etc/awstats/awstats.zehome.conf&quot; by AWStats version 6.95 (build 1.943)
 From data in log file &quot;/var/log/apache2/access.log&quot;...
 Phase 1 : First bypass old records, searching new record...
 Searching new records from beginning of log file...
 Phase 2 : Now process new records (Flush history on disk after 20000 hosts)...
 Reverse DNS lookup for ::1 not available without ipv6 plugin enabled.
 Jumped lines in file: 0
 Parsed lines in file: 587
  Found 0 dropped records,
  Found 0 corrupted records,
  Found 0 old records,
  Found 587 new qualified records.

=== Configuration de apache2 ===

 # nano /etc/apache2/apache2.conf

 Alias /awstats-icon/ /usr/share/awstats/icon/
 &lt;Directory /usr/share/awstats/icon&gt;
 Options None
 AllowOverride None
 Order allow,deny
 Allow from all
 &lt;/Directory&gt;

 # apache2ctl restart

=== Modification de la tâche cron ===

 # nano /etc/cron.d/awstats
 0,10,20,30,40,50 * * * * www-data [ -x /usr/lib/cgi-bin/awstats.pl -a -f /etc/awstats/awstats.conf -a -r /var/log/apache/access.log ]  &amp;&amp; /usr/lib/cgi-bin/awstats.pl -config=awstats -update &gt;/dev/null
 0,10,20,30,40,50 * * * * www-data perl /usr/lib/cgi-bin/awstats.pl -config=zehome -update &gt; /dev/null

=== Utilisation ===

Accédez à votre page en faisant:

http://zehome.org/cgi-bin/awstats.pl?config=zehome

[[Fichier:Awstats.jpeg]]

== Surveillance de plusieurs &quot;virtualhosts&quot; sur le même serveur apache2 ==

Nous supposerons que vous avez deux sites virtuels (vous pouvez en avoir évidemment autant que vous le voulez...) :

 # apache2ctl -S
 VirtualHost configuration:
 wildcard NameVirtualHosts and _default_ servers:
 *:80                   is a NameVirtualHost
          default server squeeze.zehome.org (/etc/apache2/sites-enabled/000-default:1)
          port 80 namevhost squeeze.zehome.org (/etc/apache2/sites-enabled/000-default:1)
          port 80 namevhost piwik.zehome.org (/etc/apache2/sites-enabled/piwik:1)
          port 80 namevhost wiki.zehome.org (/etc/apache2/sites-enabled/wiki:1)
 Syntax OK

=== Dans chaque virtualhost ajouter un fichier log spécifique ===

 &lt;virtualhost *:80&gt;
 ServerName http://piwik.zehome.org
 ErrorLog /var/log/apache2/piwik.zehome.org.log
 CustomLog /var/log/apache2/piwik.zehome.org.log combined
 .....
 &lt;/virtualhost&gt;
 
 &lt;virtualhost *:80&gt;
 ServerName http://wiki.zehome.org
 ErrorLog /var/log/apache2/wiki.zehome.org.log
 CustomLog /var/log/apache2/wiki.zehome.org.log combined
 .....
 &lt;/virtualhost&gt;

 # apache2ctl restart

Vous remarquerez que apache aura créé lui-même les fichiers log nécessaires...

=== Créons une configuration de awstat par virtual host ===

 # nano /etc/awstats/awstats.piwik.zehome.org.conf

 LogFile=&quot;/var/log/apache2/piwik.zehome.org.log&quot;
 LogFormat = 1
 LogType=W
 DNSLookup=1
 SiteDomain=&quot;piwik.zehome.org&quot;
 HostAliases=&quot;127.0.0.1 192.168.1.254 http://piwik.zehome.org piwik.zehome.org&quot;
 DirIcons=&quot;/awstats-icon&quot;
 AllowFullYearView=3

 # nano /etc/awstats/awstats.wiki.zehome.org.conf

 LogFile=&quot;/var/log/apache2/wiki.zehome.org.log&quot;
 LogFormat = 1
 LogType=W
 DNSLookup=1
 SiteDomain=&quot;wiki.zehome.org&quot;
 HostAliases=&quot;127.0.0.1 192.168.1.254 http://wiki.zehome.org wiki.zehome.org&quot;
 DirIcons=&quot;/awstats-icon&quot;
 AllowFullYearView=3

Dans HostAliases on peut mettre tous les noms et adresses IP par lesquels ce site est joignable (donc qui peuvent identifier ce site dans les logs apache).

=== intégrer nos fichiers de conf dans le cron de awstats ===

Modifier le fichier /etc/cron.d/awstats

 # nano /etc/cron.d/awstats

 0,10,20,30,40,50 * * * * root /bin/sh /root/awstats.sh

Créer le fichier /root/awstats.sh

 # nano /root/awstats.sh
 perl /usr/lib/cgi-bin/awstats.pl -config=piwik.zehome.org -update &gt; /dev/null
 perl /usr/lib/cgi-bin/awstats.pl -config=wiki.zehome.org -update &gt; /dev/null

Et le rendre exécutable :

 # chmod +x awstats.sh

Pour ne rater aucune information, bien penser à lancer aussi le script /root/awstats.sh lors des logrotate de apache en inserant dans le fichier /etc/logrotate.d/apache2 les lignes 

# nano /etc/logrotate.d/apache2
 ...
 prerotate
 /bin/sh /root/awstats.sh
 endscript
 ...

vous remarquerez que l'on utilise plus du tout le fichiers /etc/awstats/awstats.conf par défaut.

=== Accéder aux stats ===

pour chaque stat, utiliser une URL differente relative au fichier de conf de awstats

 http://squeeze.zehome.org/cgi-bin/awstats.pl?config=wiki
 http://squeeze.zehome.org/cgi-bin/awstats.pl?config=piwik

Si les statistiques n'ont pas été initialisées, vous aurez droit à ce message en haut de page :

 Last Update: 	Never updated (See 'Build/Update' on awstats_setup.html page)

Si les statistiques on bien été mise à jour, vous aurez ceci :

 Last Update: 	26 Dec 2010 - 16:19

[http://www.debian-fr.org/awstats-tuto-t26343.html#p260813 Page sur le forum]

[http://awstats.sourceforge.net/ Site Web officiel de AWStats]

[[Utilisateur:Lol|Lol]] 26 décembre 2010 à 07:28 (CST)

[[Catégorie:SurveillanceWeb]]</text>
      <sha1>t7yauhggc88ku5ogn30bp4nplo37tw2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Accueil</title>
    <ns>0</ns>
    <id>1</id>
    <revision>
      <id>1</id>
      <timestamp>2010-01-21T05:43:40Z</timestamp>
      <contributor>
        <username>MediaWiki default</username>
        <id>0</id>
      </contributor>
      <text xml:space="preserve" bytes="531">&lt;big&gt;'''MediaWiki a été installé avec succès.'''&lt;/big&gt;

Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.

== Démarrer avec MediaWiki ==

* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]</text>
      <sha1>9qh1orx87hubrlri3p17ta3b7tyji8p</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4</id>
      <parentid>1</parentid>
      <timestamp>2010-01-21T06:56:55Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <text xml:space="preserve" bytes="5852">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org]

Ce wiki est donc un test, et si il est concluant, les pages inscrites ici seront transportées vers wiki.debian-fr.org
J'invite donc le maximum de personnes à participer à ce wiki. Mon accès web en upload n'est pas super rapide, donc si quelqu'un a un espace web dispo, je suis preneur (prévenez-moi sur le fil du wiki sur le forum.)

En espérant que cette initiative réveillera des gens,

L0u!$

&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[A propos de ce site]]''' &amp;nbsp; | &amp;nbsp; '''[[Comment ça marche ?]]''' &amp;nbsp; | &amp;nbsp; '''[[Donnez !]]''' &amp;nbsp; | &amp;nbsp; '''[[Aide et support]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

== Participants ==
* [[Utilisateur:L0u!$|L0u!$]] - [[Discussion_utilisateur:L0u!$|Discussion]]
* [[Utilisateur:Woj|woj (branch)]] - [[Discussion_utilisateur:Woj|Discussion]]
* [[Utilisateur:Wetaskiwin|Wetaskiwin]] - [[Discussion_utilisateur:Wetaskiwin|Discussion]]
* [[Utilisateur:MisterFreez|MisterFreez]] - [[Discussion_utilisateur:MisterFreez|Discussion]]
* [[Utilisateur:Lol|lol (non ce n'est pas une mauvaise blague...)]] - [[Discussion_utilisateur:Lol|Discussion]]
* [[Utilisateur:Gege2061|ggoodluck47 (eh oui)]] - [[Discussion_utilisateur:Gege2061|Discussion]]
* [[Utilisateur:Iroquois|Iroquois]] - [[Discussion_utilisateur:Iroquois|Discussion]]

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |

* [[T%26A_interressants|T&amp;A interressants]]
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Utilisateur:Woj|Travaux de &quot;branch&quot;]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* '''[[Generalites suite|La suite...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Administration d'un serveur]]
* [[Les commandes plus compliquées]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;
* '''[[News|Articles récents &quot;plus anciens&quot;...]]'''
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''[http://forum.debian-fr.org Accès forum]'''
&lt;/div&gt;
&lt;div style=&quot;padding:0.4em; font-size: 95%;&quot;&gt;
&lt;/div&gt;
|}


[[Category:sommaire]]

&lt;big&gt;'''MediaWiki a été installé avec succès.'''&lt;/big&gt;

Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.

== Démarrer avec MediaWiki ==

* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]</text>
      <sha1>gi4qwrh3i7syy2gne8t2cyn7f7qfan8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5</id>
      <parentid>4</parentid>
      <timestamp>2010-01-21T06:57:46Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <text xml:space="preserve" bytes="5792">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org]

Ce wiki est donc un test, et si il est concluant, les pages inscrites ici seront transportées vers wiki.debian-fr.org
J'invite donc le maximum de personnes à participer à ce wiki. Mon accès web en upload n'est pas super rapide, donc si quelqu'un a un espace web dispo, je suis preneur (prévenez-moi sur le fil du wiki sur le forum.)

En espérant que cette initiative réveillera des gens,

L0u!$

&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[A propos de ce site]]''' &amp;nbsp; | &amp;nbsp; '''[[Comment ça marche ?]]''' &amp;nbsp; | &amp;nbsp; '''[[Donnez !]]''' &amp;nbsp; | &amp;nbsp; '''[[Aide et support]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

== Participants ==
* [[Utilisateur:L0u!$|L0u!$]] - [[Discussion_utilisateur:L0u!$|Discussion]]
* [[Utilisateur:Woj|woj (branch)]] - [[Discussion_utilisateur:Woj|Discussion]]
* [[Utilisateur:Wetaskiwin|Wetaskiwin]] - [[Discussion_utilisateur:Wetaskiwin|Discussion]]
* [[Utilisateur:MisterFreez|MisterFreez]] - [[Discussion_utilisateur:MisterFreez|Discussion]]
* [[Utilisateur:Lol|lol (non ce n'est pas une mauvaise blague...)]] - [[Discussion_utilisateur:Lol|Discussion]]
* [[Utilisateur:Gege2061|ggoodluck47 (eh oui)]] - [[Discussion_utilisateur:Gege2061|Discussion]]
* [[Utilisateur:Iroquois|Iroquois]] - [[Discussion_utilisateur:Iroquois|Discussion]]

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |

* [[T%26A_interressants|T&amp;A interressants]]
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Utilisateur:Woj|Travaux de &quot;branch&quot;]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* '''[[Generalites suite|La suite...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Administration d'un serveur]]
* [[Les commandes plus compliquées]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;
* '''[[News|Articles récents &quot;plus anciens&quot;...]]'''
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''[http://forum.debian-fr.org Accès forum]'''
&lt;/div&gt;
&lt;div style=&quot;padding:0.4em; font-size: 95%;&quot;&gt;
&lt;/div&gt;
|}


[[Category:sommaire]]

== Démarrer avec MediaWiki ==

Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.

* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]</text>
      <sha1>k1do6ze0xeqkou8xword7iq5dafr0s7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>7</id>
      <parentid>5</parentid>
      <timestamp>2010-01-21T07:13:13Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <text xml:space="preserve" bytes="5905">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org]

Ce wiki est donc un test, et si il est concluant, les pages inscrites ici seront transportées vers wiki.debian-fr.org
J'invite donc le maximum de personnes à participer à ce wiki. Mon accès web en upload n'est pas super rapide, donc si quelqu'un a un espace web dispo, je suis preneur (prévenez-moi sur le fil du wiki sur le forum.)

En espérant que cette initiative réveillera des gens,

L0u!$

&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[A propos de ce site]]''' &amp;nbsp; | &amp;nbsp; '''[[Comment ça marche ?]]''' &amp;nbsp; | &amp;nbsp; '''[[Donnez !]]''' &amp;nbsp; | &amp;nbsp; '''[[Aide et support]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

== Participants ==
* [[Utilisateur:L0u!$|L0u!$]] - [[Discussion_utilisateur:L0u!$|Discussion]]
* [[Utilisateur:Woj|woj (branch)]] - [[Discussion_utilisateur:Woj|Discussion]]
* [[Utilisateur:Wetaskiwin|Wetaskiwin]] - [[Discussion_utilisateur:Wetaskiwin|Discussion]]
* [[Utilisateur:MisterFreez|MisterFreez]] - [[Discussion_utilisateur:MisterFreez|Discussion]]
* [[Utilisateur:Lol|lol]] - [[Discussion_utilisateur:Lol|Discussion]]
* [[Utilisateur:Gege2061|ggoodluck47 (eh oui)]] - [[Discussion_utilisateur:Gege2061|Discussion]]
* [[Utilisateur:Iroquois|Iroquois]] - [[Discussion_utilisateur:Iroquois|Discussion]]
* [[Utilisateur:Le fada|Le fada]] - [[Discussion_utilisateur:Le_fada|Discussion]]
* [[Utilisateur:Clem|Clem]] - [[Discussion_utilisateur:Clem|Discussion]]


{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |

* [[T%26A_interressants|T&amp;A interressants]]
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Utilisateur:Woj|Travaux de &quot;branch&quot;]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* '''[[Generalites suite|La suite...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Administration d'un serveur]]
* [[Les commandes plus compliquées]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;
* '''[[News|Articles récents &quot;plus anciens&quot;...]]'''
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''[http://forum.debian-fr.org Accès forum]'''
&lt;/div&gt;
&lt;div style=&quot;padding:0.4em; font-size: 95%;&quot;&gt;
&lt;/div&gt;
|}

== Démarrer avec MediaWiki ==

Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.

* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]

[[Category:sommaire]]</text>
      <sha1>mqqzvuhye0e0qjkvi3qsa70nk5mgvse</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>8</id>
      <parentid>7</parentid>
      <timestamp>2010-01-21T08:50:53Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <text xml:space="preserve" bytes="5911">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org]

Ce wiki est donc un test, et si il est concluant, les pages inscrites ici seront transportées vers wiki.debian-fr.org
J'invite donc le maximum de personnes à participer à ce wiki. Mon accès web en upload n'est pas super rapide, donc si quelqu'un a un espace web dispo, je suis preneur (prévenez-moi sur le fil du wiki sur le forum.)

En espérant que cette initiative réveillera des gens,

L0u!$

&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[A propos de ce site]]''' &amp;nbsp; | &amp;nbsp; '''[[Comment ça marche ?]]''' &amp;nbsp; | &amp;nbsp; '''[[Donnez !]]''' &amp;nbsp; | &amp;nbsp; '''[[Aide et support]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

== Participants ==
* [[Utilisateur:L0u!$|L0u!$]] - [[Discussion_utilisateur:L0u!$|Discussion]]
* [[Utilisateur:Woj|woj (branch)]] - [[Discussion_utilisateur:Woj|Discussion]]
* [[Utilisateur:Wetaskiwin|Wetaskiwin]] - [[Discussion_utilisateur:Wetaskiwin|Discussion]]
* [[Utilisateur:MisterFreez|MisterFreez]] - [[Discussion_utilisateur:MisterFreez|Discussion]]
* [[Utilisateur:Lol|lol]] - [[Discussion_utilisateur:Lol|Discussion]]
* [[Utilisateur:Gege2061|ggoodluck47 (eh oui)]] - [[Discussion_utilisateur:Gege2061|Discussion]]
* [[Utilisateur:Iroquois|Iroquois]] - [[Discussion_utilisateur:Iroquois|Discussion]]
* [[Utilisateur:Le fada|Le fada]] - [[Discussion_utilisateur:Le_fada|Discussion]]
* [[Utilisateur:Clem|Clem]] - [[Discussion_utilisateur:Clem|Discussion]]


{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |

* [[T%26A_interressants|T&amp;A interressants]]
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Utilisateur:Woj|Travaux de &quot;branch&quot;]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* '''[[Generalites suite|La suite...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Administration d'un serveur]]
* [[Les commandes plus compliquées]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;
* '''[[News|Articles récents &quot;plus anciens&quot;...]]'''
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''[http://forum.debian-fr.org Accès forum]'''
&lt;/div&gt;
&lt;div style=&quot;padding:0.4em; font-size: 95%;&quot;&gt;
&lt;/div&gt;
|}

== Démarrer avec MediaWiki ==

Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.

* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]

[[Category:sommaire]]
&lt;rss&gt;</text>
      <sha1>47ruee7s80aict9k32ihnetkl44fs6z</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>9</id>
      <parentid>8</parentid>
      <timestamp>2010-01-21T10:56:13Z</timestamp>
      <contributor>
        <ip>41.188.26.122</ip>
      </contributor>
      <text xml:space="preserve" bytes="5905">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org]

Ce wiki est donc un test, et si il est concluant, les pages inscrites ici seront transportées vers wiki.debian-fr.org
J'invite donc le maximum de personnes à participer à ce wiki. Mon accès web en upload n'est pas super rapide, donc si quelqu'un a un espace web dispo, je suis preneur (prévenez-moi sur le fil du wiki sur le forum.)

En espérant que cette initiative réveillera des gens,

L0u!$

&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[A propos de ce site]]''' &amp;nbsp; | &amp;nbsp; '''[[Comment ça marche ?]]''' &amp;nbsp; | &amp;nbsp; '''[[Donnez !]]''' &amp;nbsp; | &amp;nbsp; '''[[Aide et support]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

== Participants ==
* [[Utilisateur:L0u!$|L0u!$]] - [[Discussion_utilisateur:L0u!$|Discussion]]
* [[Utilisateur:Woj|woj (branch)]] - [[Discussion_utilisateur:Woj|Discussion]]
* [[Utilisateur:Wetaskiwin|Wetaskiwin]] - [[Discussion_utilisateur:Wetaskiwin|Discussion]]
* [[Utilisateur:MisterFreez|MisterFreez]] - [[Discussion_utilisateur:MisterFreez|Discussion]]
* [[Utilisateur:Lol|lol]] - [[Discussion_utilisateur:Lol|Discussion]]
* [[Utilisateur:Gege2061|ggoodluck47 (eh oui)]] - [[Discussion_utilisateur:Gege2061|Discussion]]
* [[Utilisateur:Iroquois|Iroquois]] - [[Discussion_utilisateur:Iroquois|Discussion]]
* [[Utilisateur:Le fada|Le fada]] - [[Discussion_utilisateur:Le_fada|Discussion]]
* [[Utilisateur:Clem|Clem]] - [[Discussion_utilisateur:Clem|Discussion]]


{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |

* [[T%26A_interressants|T&amp;A interressants]]
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Utilisateur:Woj|Travaux de &quot;branch&quot;]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* '''[[Generalites suite|La suite...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Administration d'un serveur]]
* [[Les commandes plus compliquées]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;
* '''[[News|Articles récents &quot;plus anciens&quot;...]]'''
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''[http://forum.debian-fr.org Accès forum]'''
&lt;/div&gt;
&lt;div style=&quot;padding:0.4em; font-size: 95%;&quot;&gt;
&lt;/div&gt;
|}

== Démarrer avec MediaWiki ==

Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.

* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]

[[Category:sommaire]]</text>
      <sha1>mqqzvuhye0e0qjkvi3qsa70nk5mgvse</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>10</id>
      <parentid>9</parentid>
      <timestamp>2010-01-21T11:31:38Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <text xml:space="preserve" bytes="5808">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org]

Ce wiki est donc un test, et si il est concluant, les pages inscrites ici seront transportées vers wiki.debian-fr.org
J'invite donc le maximum de personnes à participer à ce wiki. Mon accès web en upload n'est pas super rapide, donc si quelqu'un a un espace web dispo, je suis preneur (prévenez-moi sur le fil du wiki sur le forum.)

En espérant que cette initiative réveillera des gens,

L0u!$

&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[A propos de ce site]]''' &amp;nbsp; | &amp;nbsp; '''[[Comment ça marche ?]]''' &amp;nbsp; | &amp;nbsp; '''[[Donnez !]]''' &amp;nbsp; | &amp;nbsp; '''[[Aide et support]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

== Participants ==
* [[Utilisateur:L0u!$|L0u!$]] - [[Discussion_utilisateur:L0u!$|Discussion]]
* [[Utilisateur:Woj|woj (branch)]] - [[Discussion_utilisateur:Woj|Discussion]]
* [[Utilisateur:Wetaskiwin|Wetaskiwin]] - [[Discussion_utilisateur:Wetaskiwin|Discussion]]
* [[Utilisateur:MisterFreez|MisterFreez]] - [[Discussion_utilisateur:MisterFreez|Discussion]]
* [[Utilisateur:Lol|lol]] - [[Discussion_utilisateur:Lol|Discussion]]
* [[Utilisateur:Iroquois|Iroquois]] - [[Discussion_utilisateur:Iroquois|Discussion]]
* [[Utilisateur:Le fada|Le fada]] - [[Discussion_utilisateur:Le_fada|Discussion]]
* [[Utilisateur:Clem|Clem]] - [[Discussion_utilisateur:Clem|Discussion]]


{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |

* [[T%26A_interressants|T&amp;A interressants]]
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Utilisateur:Woj|Travaux de &quot;branch&quot;]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* '''[[Generalites suite|La suite...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Administration d'un serveur]]
* [[Les commandes plus compliquées]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;
* '''[[News|Articles récents &quot;plus anciens&quot;...]]'''
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''[http://forum.debian-fr.org Accès forum]'''
&lt;/div&gt;
&lt;div style=&quot;padding:0.4em; font-size: 95%;&quot;&gt;
&lt;/div&gt;
|}

== Démarrer avec MediaWiki ==

Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.

* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]

[[Category:sommaire]]</text>
      <sha1>r1xav7vsjcx7f8wq4ai2v91ybr3lfjw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>11</id>
      <parentid>10</parentid>
      <timestamp>2010-01-21T11:36:02Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <text xml:space="preserve" bytes="5757">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org]

Ce wiki est donc un test, et si il est concluant, les pages inscrites ici seront transportées vers wiki.debian-fr.org
J'invite donc le maximum de personnes à participer à ce wiki. Mon accès web en upload n'est pas super rapide, donc si quelqu'un a un espace web dispo, je suis preneur (prévenez-moi sur le fil du wiki sur le forum.)

En espérant que cette initiative réveillera des gens,

L0u!$

&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[A propos de ce site]]''' &amp;nbsp; | &amp;nbsp; '''[[Comment ça marche ?]]''' &amp;nbsp; | &amp;nbsp; '''[[Donnez !]]''' &amp;nbsp; | &amp;nbsp; '''[[Aide et support]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

== Participants ==
* [[Utilisateur:L0u!$|L0u!$]] - [[Discussion_utilisateur:L0u!$|Discussion]]
* [[Utilisateur:Woj|woj (branch)]] - [[Discussion_utilisateur:Woj|Discussion]]
* [[Utilisateur:Wetaskiwin|Wetaskiwin]] - [[Discussion_utilisateur:Wetaskiwin|Discussion]]
* [[Utilisateur:MisterFreez|MisterFreez]] - [[Discussion_utilisateur:MisterFreez|Discussion]]
* [[Utilisateur:Lol|lol]] - [[Discussion_utilisateur:Lol|Discussion]]
* [[Utilisateur:Iroquois|Iroquois]] - [[Discussion_utilisateur:Iroquois|Discussion]]
* [[Utilisateur:Le fada|Le fada]] - [[Discussion_utilisateur:Le_fada|Discussion]]
* [[Utilisateur:Clem|Clem]] - [[Discussion_utilisateur:Clem|Discussion]]


{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |

* [[T%26A_interressants|T&amp;A interressants]]
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Utilisateur:Woj|Travaux de &quot;branch&quot;]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* '''[[Generalites suite|La suite...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Administration d'un serveur]]
* [[Les commandes plus compliquées]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''[http://forum.debian-fr.org Accès forum]'''
&lt;/div&gt;
&lt;div style=&quot;padding:0.4em; font-size: 95%;&quot;&gt;
&lt;/div&gt;
|}

== Démarrer avec MediaWiki ==

Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.

* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]

[[Category:sommaire]]</text>
      <sha1>qg1cfd6gaqzoudlilyb45cgkituq6no</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>12</id>
      <parentid>11</parentid>
      <timestamp>2010-01-21T14:20:16Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <text xml:space="preserve" bytes="5086">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org]

Ce wiki est donc un test, et si il est concluant, les pages inscrites ici seront transportées vers wiki.debian-fr.org
J'invite donc le maximum de personnes à participer à ce wiki. Mon accès web en upload n'est pas super rapide, donc si quelqu'un a un espace web dispo, je suis preneur (prévenez-moi sur le fil du wiki sur le forum.)

En espérant que cette initiative réveillera des gens,

L0u!$

&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[A propos de ce site]]''' &amp;nbsp; | &amp;nbsp; '''[[Comment ça marche ?]]''' &amp;nbsp; | &amp;nbsp; '''[[Donnez !]]''' &amp;nbsp; | &amp;nbsp; '''[[Aide et support]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |

* [[T%26A_interressants|T&amp;A interressants]]
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Utilisateur:Woj|Travaux de &quot;branch&quot;]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* '''[[Generalites suite|La suite...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Administration d'un serveur]]
* [[Les commandes plus compliquées]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''[http://forum.debian-fr.org Accès forum]'''
&lt;/div&gt;
&lt;div style=&quot;padding:0.4em; font-size: 95%;&quot;&gt;
&lt;/div&gt;
|}

== Démarrer avec MediaWiki ==

Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.

* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]

[[Category:sommaire]]</text>
      <sha1>rcvctitra0xa3fi272yxk26d43oeatq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>14</id>
      <parentid>12</parentid>
      <timestamp>2010-01-21T14:21:40Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <text xml:space="preserve" bytes="5024">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org]

Ce wiki est donc un test, et si il est concluant, les pages inscrites ici seront transportées vers wiki.debian-fr.org
J'invite donc le maximum de personnes à participer à ce wiki. Mon accès web en upload n'est pas super rapide, donc si quelqu'un a un espace web dispo, je suis preneur (prévenez-moi sur le fil du wiki sur le forum.)

En espérant que cette initiative réveillera des gens,

L0u!$

&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |

* [[T%26A_interressants|T&amp;A interressants]]
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Utilisateur:Woj|Travaux de &quot;branch&quot;]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* '''[[Generalites suite|La suite...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Administration d'un serveur]]
* [[Les commandes plus compliquées]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''[http://forum.debian-fr.org Accès forum]'''
&lt;/div&gt;
&lt;div style=&quot;padding:0.4em; font-size: 95%;&quot;&gt;
&lt;/div&gt;
|}

== Démarrer avec MediaWiki ==

Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.

* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]

[[Category:sommaire]]</text>
      <sha1>ryczqrum3qo5irba075iu5goiajel2w</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>41</id>
      <parentid>14</parentid>
      <timestamp>2010-01-21T18:33:23Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="5086">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org]

Ce wiki est donc un test, et si il est concluant, les pages inscrites ici seront transportées vers wiki.debian-fr.org
J'invite donc le maximum de personnes à participer à ce wiki. Mon accès web en upload n'est pas super rapide, donc si quelqu'un a un espace web dispo, je suis preneur (prévenez-moi sur le fil du wiki sur le forum.)

En espérant que cette initiative réveillera des gens,

L0u!$

&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |

* [[T%26A_interressants|T&amp;A interressants]]
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Utilisateur:Woj|Travaux de &quot;branch&quot;]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* '''[[Generalites suite|La suite...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Administration d'un serveur]]
* [[Les commandes plus compliquées]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''[http://forum.debian-fr.org Accès forum]'''
&lt;/div&gt;
&lt;div style=&quot;padding:0.4em; font-size: 95%;&quot;&gt;
&lt;/div&gt;
|}

== Démarrer avec MediaWiki ==

Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.

* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]

[[Category:sommaire]]</text>
      <sha1>046u4adzcgp4yz0ki32xwyoypuzbls3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>46</id>
      <parentid>41</parentid>
      <timestamp>2010-01-21T18:47:18Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="5490">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org]

Ce wiki est donc un test, et si il est concluant, les pages inscrites ici seront transportées vers wiki.debian-fr.org
J'invite donc le maximum de personnes à participer à ce wiki. Mon accès web en upload n'est pas super rapide, donc si quelqu'un a un espace web dispo, je suis preneur (prévenez-moi sur le fil du wiki sur le forum.)

En espérant que cette initiative réveillera des gens,

L0u!$

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas) corrigés si nécessaire, et prendrons ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]
 
&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |

* [[T%26A_interressants|T&amp;A interressants]]
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Utilisateur:Woj|Travaux de &quot;branch&quot;]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* '''[[Generalites suite|La suite...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Administration d'un serveur]]
* [[Les commandes plus compliquées]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''[http://forum.debian-fr.org Accès forum]'''
&lt;/div&gt;
&lt;div style=&quot;padding:0.4em; font-size: 95%;&quot;&gt;
&lt;/div&gt;
|}

== Démarrer avec MediaWiki ==

Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.

* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]

[[Category:sommaire]]</text>
      <sha1>ifok7dryy2qwgjy9f98ekwh05mvzw4n</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>47</id>
      <parentid>46</parentid>
      <timestamp>2010-01-21T19:13:39Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <comment>préambule</comment>
      <text xml:space="preserve" bytes="5564">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org]
Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français biensûr.

On peut considérer ce wiki comme un &quot;essai&quot;, car un certain nombre de personnes estime que ça n'aboutira à rien. Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec entousiasme!

[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas) corrigés si nécessaire, et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]
 
&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |

* [[T%26A_interressants|T&amp;A interressants]]
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Utilisateur:Woj|Travaux de &quot;branch&quot;]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* '''[[Generalites suite|La suite...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Administration d'un serveur]]
* [[Les commandes plus compliquées]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''[http://forum.debian-fr.org Accès forum]'''
&lt;/div&gt;
&lt;div style=&quot;padding:0.4em; font-size: 95%;&quot;&gt;
&lt;/div&gt;
|}

== Démarrer avec MediaWiki ==

Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.

* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]

[[Category:sommaire]]</text>
      <sha1>gj5tpnygi6pr693u6pcfyerjzmqa3sx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>48</id>
      <parentid>47</parentid>
      <timestamp>2010-01-21T19:14:02Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <minor/>
      <comment>un .</comment>
      <text xml:space="preserve" bytes="5566">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].

Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français biensûr.

On peut considérer ce wiki comme un &quot;essai&quot;, car un certain nombre de personnes estime que ça n'aboutira à rien. Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec entousiasme!

[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas) corrigés si nécessaire, et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]
 
&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |

* [[T%26A_interressants|T&amp;A interressants]]
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Utilisateur:Woj|Travaux de &quot;branch&quot;]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* '''[[Generalites suite|La suite...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Administration d'un serveur]]
* [[Les commandes plus compliquées]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''[http://forum.debian-fr.org Accès forum]'''
&lt;/div&gt;
&lt;div style=&quot;padding:0.4em; font-size: 95%;&quot;&gt;
&lt;/div&gt;
|}

== Démarrer avec MediaWiki ==

Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.

* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]

[[Category:sommaire]]</text>
      <sha1>38v1qufb1eosncvpjbtshnnwws2efbi</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>55</id>
      <parentid>48</parentid>
      <timestamp>2010-01-21T19:33:14Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="5956">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].

Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français biensûr.

On peut considérer ce wiki comme un &quot;essai&quot;, car un certain nombre de personnes estime que ça n'aboutira à rien. Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec entousiasme!

[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas) corrigés si nécessaire, et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]

Ajout par [[Utilisateur:L0u!$|L0u!$]] : N'oubliez pas d'associer chacunes de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.

NB: Rien ne sert de créer une page pour lister d'autres pages. les catégories servent à ça. on associe une page à une catégorie en écrivant ceci en fin de page: &lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;
 
&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |

* [[T%26A_interressants|T&amp;A interressants]]
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Utilisateur:Woj|Travaux de &quot;branch&quot;]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* '''[[Generalites suite|La suite...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Administration d'un serveur]]
* [[Les commandes plus compliquées]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''[http://forum.debian-fr.org Accès forum]'''
&lt;/div&gt;
&lt;div style=&quot;padding:0.4em; font-size: 95%;&quot;&gt;
&lt;/div&gt;
|}

== Démarrer avec MediaWiki ==

Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.

* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]

[[Category:sommaire]]</text>
      <sha1>gp4ehxs7yo79obfmnfy74uoct0zrk4z</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>63</id>
      <parentid>55</parentid>
      <timestamp>2010-01-21T20:25:45Z</timestamp>
      <contributor>
        <username>Woj</username>
        <id>7</id>
      </contributor>
      <minor/>
      <comment>Lien vers ma page utilisateur renommé en &quot;Brouillon d'un manuel d'installation&quot;.</comment>
      <text xml:space="preserve" bytes="5973">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].

Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français biensûr.

On peut considérer ce wiki comme un &quot;essai&quot;, car un certain nombre de personnes estime que ça n'aboutira à rien. Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec entousiasme!

[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas) corrigés si nécessaire, et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]

Ajout par [[Utilisateur:L0u!$|L0u!$]] : N'oubliez pas d'associer chacunes de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.

NB: Rien ne sert de créer une page pour lister d'autres pages. les catégories servent à ça. on associe une page à une catégorie en écrivant ceci en fin de page: &lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;
 
&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |

* [[T%26A_interressants|T&amp;A interressants]]
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Utilisateur:Woj|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* '''[[Generalites suite|La suite...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Administration d'un serveur]]
* [[Les commandes plus compliquées]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''[http://forum.debian-fr.org Accès forum]'''
&lt;/div&gt;
&lt;div style=&quot;padding:0.4em; font-size: 95%;&quot;&gt;
&lt;/div&gt;
|}

== Démarrer avec MediaWiki ==

Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.

* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]

[[Category:sommaire]]</text>
      <sha1>j13u1jtjk0ju76en8z60cj359v2l8ci</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>79</id>
      <parentid>63</parentid>
      <timestamp>2010-01-21T21:34:03Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="5990">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].

Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français biensûr.

On peut considérer ce wiki comme un &quot;essai&quot;, car un certain nombre de personnes estime que ça n'aboutira à rien. Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec entousiasme!

[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas) corrigés si nécessaire, et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]

Ajout par [[Utilisateur:L0u!$|L0u!$]] : N'oubliez pas d'associer chacunes de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.

NB: Rien ne sert de créer une page pour lister d'autres pages internes au wiki. les catégories servent à ça. on associe une page à une catégorie en écrivant ceci en fin de page: &lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;
 
&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |

* [[T%26A_interressants|T&amp;A interressants]]
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Utilisateur:Woj|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* '''[[Generalites suite|La suite...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Administration d'un serveur]]
* [[Les commandes plus compliquées]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''[http://forum.debian-fr.org Accès forum]'''
&lt;/div&gt;
&lt;div style=&quot;padding:0.4em; font-size: 95%;&quot;&gt;
&lt;/div&gt;
|}

== Démarrer avec MediaWiki ==

Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.

* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]

[[Category:sommaire]]</text>
      <sha1>iyx3n94j5x55d9h3e5wbullzrz4w5kd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>80</id>
      <parentid>79</parentid>
      <timestamp>2010-01-22T03:43:11Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="6033">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].

Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français biensûr.

On peut considérer ce wiki comme un &quot;essai&quot;, car un certain nombre de personnes estime que ça n'aboutira à rien. Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec entousiasme!

[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas) corrigés si nécessaire, et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]

Ajout par [[Utilisateur:L0u!$|L0u!$]] : N'oubliez pas d'associer chacunes de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.

NB: Rien ne sert de créer une page pour lister d'autres pages internes au wiki. les catégories servent à ça. on associe une page à une catégorie en écrivant ceci en fin de page: &lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;
 
&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |

* [[T%26A_interressants|T&amp;A interressants]]
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Utilisateur:Woj|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* '''[[Generalites suite|La suite...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Administration d'un serveur]]
* [[Les commandes plus compliquées]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''[http://forum.debian-fr.org Accès forum]'''
&lt;/div&gt;
&lt;div style=&quot;padding:0.4em; font-size: 95%;&quot;&gt;
&lt;/div&gt;
|}

== Démarrer avec MediaWiki ==

Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.

* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]

[[Category:sommaire]]</text>
      <sha1>8fqzvvlsoetdoazlabdtpkgp8jr7k2s</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>82</id>
      <parentid>80</parentid>
      <timestamp>2010-01-22T04:27:09Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="6297">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].

Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français biensûr.

On peut considérer ce wiki comme un &quot;essai&quot;, car un certain nombre de personnes estime que ça n'aboutira à rien. Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec entousiasme!

[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas) corrigés si nécessaire, et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]

Ajout par [[Utilisateur:L0u!$|L0u!$]] : N'oubliez pas d'associer chacunes de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.

NB: Rien ne sert de créer une page pour lister d'autres pages internes au wiki. les catégories servent à ça. on associe une page à une catégorie en écrivant ceci en fin de page: &lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
 
&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |

* [[T%26A_interressants|T&amp;A interressants]]
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Utilisateur:Woj|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* '''[[Generalites suite|La suite...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Administration d'un serveur]]
* [[Les commandes plus compliquées]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''[http://forum.debian-fr.org Accès forum]'''
&lt;/div&gt;
&lt;div style=&quot;padding:0.4em; font-size: 95%;&quot;&gt;
&lt;/div&gt;
|}

== Démarrer avec MediaWiki ==

Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.

* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]

[[Category:sommaire]]</text>
      <sha1>cj7ba63nr76rz3rcn4gy336t1eur9dy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>110</id>
      <parentid>82</parentid>
      <timestamp>2010-01-22T17:15:35Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="6348">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].

Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français biensûr.

On peut considérer ce wiki comme un &quot;essai&quot;, car un certain nombre de personnes estime que ça n'aboutira à rien. Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec entousiasme!

[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas) corrigés si nécessaire, et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]

Ajout par [[Utilisateur:L0u!$|L0u!$]] : N'oubliez pas d'associer chacunes de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.

NB: Rien ne sert de créer une page pour lister d'autres pages internes au wiki. les catégories servent à ça. on associe une page à une catégorie en écrivant ceci en fin de page: &lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
 
&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |

* [[T%26A_interressants|T&amp;A interressants]]
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Utilisateur:Woj|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* '''[[Generalites suite|La suite...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Administration d'un serveur]]
* [[Les commandes plus compliquées]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''[http://forum.debian-fr.org Accès forum]'''
&lt;/div&gt;
&lt;div style=&quot;padding:0.4em; font-size: 95%;&quot;&gt;
&lt;/div&gt;
|}

== Démarrer avec MediaWiki ==

Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.

* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]

[[Category:sommaire]]</text>
      <sha1>43q7im8be9kzmm8vohron14cqugg9zn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>115</id>
      <parentid>110</parentid>
      <timestamp>2010-01-22T19:42:02Z</timestamp>
      <contributor>
        <username>Debianhadic</username>
        <id>11</id>
      </contributor>
      <text xml:space="preserve" bytes="6412">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].

Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français biensûr.

On peut considérer ce wiki comme un &quot;essai&quot;, car un certain nombre de personnes estime que ça n'aboutira à rien. Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec entousiasme!

[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas) corrigés si nécessaire, et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]

Ajout par [[Utilisateur:L0u!$|L0u!$]] : N'oubliez pas d'associer chacunes de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.

NB: Rien ne sert de créer une page pour lister d'autres pages internes au wiki. les catégories servent à ça. on associe une page à une catégorie en écrivant ceci en fin de page: &lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
 
&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |

* [[T%26A_interressants|T&amp;A interressants]]
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Utilisateur:Woj|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* [[:Catégorie:Vidéo|Installer les pilotes nVidia privateur]]
* '''[[Generalites suite|La suite...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Administration d'un serveur]]
* [[Les commandes plus compliquées]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''[http://forum.debian-fr.org Accès forum]'''
&lt;/div&gt;
&lt;div style=&quot;padding:0.4em; font-size: 95%;&quot;&gt;
&lt;/div&gt;
|}

== Démarrer avec MediaWiki ==

Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.

* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]

[[Category:sommaire]]</text>
      <sha1>ilrno36kwqiujujraxyhy8juwhwliud</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>116</id>
      <parentid>115</parentid>
      <timestamp>2010-01-22T19:42:49Z</timestamp>
      <contributor>
        <username>Debianhadic</username>
        <id>11</id>
      </contributor>
      <text xml:space="preserve" bytes="6412">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].

Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français biensûr.

On peut considérer ce wiki comme un &quot;essai&quot;, car un certain nombre de personnes estime que ça n'aboutira à rien. Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec entousiasme!

[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas) corrigés si nécessaire, et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]

Ajout par [[Utilisateur:L0u!$|L0u!$]] : N'oubliez pas d'associer chacunes de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.

NB: Rien ne sert de créer une page pour lister d'autres pages internes au wiki. les catégories servent à ça. on associe une page à une catégorie en écrivant ceci en fin de page: &lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
 
&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |

* [[T%26A_interressants|T&amp;A interressants]]
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Utilisateur:Woj|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* [[:Catégorie:nvidia|Installer les pilotes nVidia privateur]]
* '''[[Generalites suite|La suite...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Administration d'un serveur]]
* [[Les commandes plus compliquées]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''[http://forum.debian-fr.org Accès forum]'''
&lt;/div&gt;
&lt;div style=&quot;padding:0.4em; font-size: 95%;&quot;&gt;
&lt;/div&gt;
|}

== Démarrer avec MediaWiki ==

Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.

* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]

[[Category:sommaire]]</text>
      <sha1>p6bykzb8b11u7h1rm5p2ysdli55ywke</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>126</id>
      <parentid>116</parentid>
      <timestamp>2010-01-23T04:32:51Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="6432">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].

Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français biensûr.

On peut considérer ce wiki comme un &quot;essai&quot;, car un certain nombre de personnes estime que ça n'aboutira à rien. Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec entousiasme!

[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas) corrigés si nécessaire, et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]

Ajout par [[Utilisateur:L0u!$|L0u!$]] : N'oubliez pas d'associer chacunes de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.

NB: Rien ne sert de créer une page pour lister d'autres pages internes au wiki. les catégories servent à ça. on associe une page à une catégorie en écrivant ceci en fin de page: &lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
 
&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |

* [[T%26A_interressants|T&amp;A interressants]]
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Utilisateur:Woj|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
* '''[[Generalites suite|La suite...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Administration d'un serveur]]
* [[Les commandes plus compliquées]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''[http://forum.debian-fr.org Accès forum]'''
&lt;/div&gt;
&lt;div style=&quot;padding:0.4em; font-size: 95%;&quot;&gt;
&lt;/div&gt;
|}

== Démarrer avec MediaWiki ==

Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.

* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]

[[Category:sommaire]]</text>
      <sha1>lryhwhfp3qv3146owvszmlfaijgeo50</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>127</id>
      <parentid>126</parentid>
      <timestamp>2010-01-23T04:35:58Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="6411">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].

Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français bien sûr.

On peut considérer ce wiki comme un &quot;essai&quot;, car un certain nombre de personnes estime que ça n'aboutira à rien. Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec entousiasme!

[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas) corrigés si nécessaire, et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]

Ajout par [[Utilisateur:L0u!$|L0u!$]] : N'oubliez pas d'associer chacunes de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.

NB: Rien ne sert de créer une page pour lister d'autres pages internes au wiki. les catégories servent à ça. on associe une page à une catégorie en écrivant ceci en fin de page: &lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
 
&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |

* [[T%26A_interressants|T&amp;A interressants]]
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Utilisateur:Woj|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
* '''A suivre...'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Administration d'un serveur]]
* [[Les commandes plus compliquées]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''[http://forum.debian-fr.org Accès forum]'''
&lt;/div&gt;
&lt;div style=&quot;padding:0.4em; font-size: 95%;&quot;&gt;
&lt;/div&gt;
|}

== Démarrer avec MediaWiki ==

Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.

* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]

[[Category:sommaire]]</text>
      <sha1>mjv4cqlo3xse7ts1xqcufkbhr43xj6l</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>128</id>
      <parentid>127</parentid>
      <timestamp>2010-01-23T06:33:50Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="6461">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].

Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français bien sûr.

On peut considérer ce wiki comme un &quot;essai&quot;, car un certain nombre de personnes estime que ça n'aboutira à rien. Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec entousiasme!

[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas) corrigés si nécessaire, et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]

Ajout par [[Utilisateur:L0u!$|L0u!$]] : N'oubliez pas d'associer chacunes de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.

NB: Rien ne sert de créer une page pour lister d'autres pages internes au wiki. les catégories servent à ça. on associe une page à une catégorie en écrivant ceci en fin de page: &lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
 
&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:Catégories|Naviguer dans les Catégories]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |

* [[T%26A_interressants|T&amp;A interressants]]
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Utilisateur:Woj|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
* '''A suivre...'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Administration d'un serveur]]
* [[Les commandes plus compliquées]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''[http://forum.debian-fr.org Accès forum]'''
&lt;/div&gt;
&lt;div style=&quot;padding:0.4em; font-size: 95%;&quot;&gt;
&lt;/div&gt;
|}

== Démarrer avec MediaWiki ==

Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.

* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]

[[Category:sommaire]]</text>
      <sha1>4rh964oorfn6b1zkklj3ibrkc7st3i6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>132</id>
      <parentid>128</parentid>
      <timestamp>2010-01-23T08:52:09Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="6504">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].

Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français bien sûr.

On peut considérer ce wiki comme un &quot;essai&quot;, car un certain nombre de personnes estime que ça n'aboutira à rien. Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec entousiasme!

[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas) corrigés si nécessaire, et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]

Ajout par [[Utilisateur:L0u!$|L0u!$]] : N'oubliez pas d'associer chacunes de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.

NB: Rien ne sert de créer une page pour lister d'autres pages internes au wiki. les catégories servent à ça. on associe une page à une catégorie en écrivant ceci en fin de page: &lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
 
&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:Catégories|Naviguer dans les Catégories]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |

* [[T%26A_interressants|T&amp;A interressants]]
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Utilisateur:Woj|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
* [[Faireunpaquet|Faire un paquet Debian]]
* '''A suivre...'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Administration d'un serveur]]
* [[Les commandes plus compliquées]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''[http://forum.debian-fr.org Accès forum]'''
&lt;/div&gt;
&lt;div style=&quot;padding:0.4em; font-size: 95%;&quot;&gt;
&lt;/div&gt;
|}

== Démarrer avec MediaWiki ==

Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.

* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]

[[Category:sommaire]]</text>
      <sha1>3qsyxicti0llxyr29fuuoa3uss68xqo</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>142</id>
      <parentid>132</parentid>
      <timestamp>2010-01-23T11:34:24Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="6388">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].

Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français bien sûr.

Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec entousiasme!

[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas) corrigés si nécessaire, et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]

Ajout par [[Utilisateur:L0u!$|L0u!$]] : N'oubliez pas d'associer chacunes de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.

NB: Rien ne sert de créer une page pour lister d'autres pages internes au wiki. les catégories servent à ça. on associe une page à une catégorie en écrivant ceci en fin de page: &lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
 
&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:Catégories|Naviguer dans les Catégories]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |

* [[T%26A_interressants|T&amp;A interressants]]
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Utilisateur:Woj|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
* [[Faireunpaquet|Faire un paquet Debian]]
* '''A suivre...'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Administration d'un serveur]]
* [[Les commandes plus compliquées]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''[http://forum.debian-fr.org Accès forum]'''
&lt;/div&gt;
&lt;div style=&quot;padding:0.4em; font-size: 95%;&quot;&gt;
&lt;/div&gt;
|}

== Démarrer avec MediaWiki ==

Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.

* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]

[[Category:sommaire]]</text>
      <sha1>iv0gov9pfjbss5hj3n9x4smw89l7msj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>147</id>
      <parentid>142</parentid>
      <timestamp>2010-01-23T12:31:22Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <text xml:space="preserve" bytes="6489">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].

Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français bien sûr.

Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec entousiasme!

[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas) corrigés si nécessaire, et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]

Ajout par [[Utilisateur:L0u!$|L0u!$]] : N'oubliez pas d'associer chacunes de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.

NB: Rien ne sert de créer une page pour lister d'autres pages internes au wiki. les catégories servent à ça. on associe une page à une catégorie en écrivant ceci en fin de page: &lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !
 
&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:Catégories|Naviguer dans les Catégories]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |

* [[T%26A_interressants|T&amp;A interressants]]
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Utilisateur:Woj|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
* [[Faireunpaquet|Faire un paquet Debian]]
* '''A suivre...'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Administration d'un serveur]]
* [[Les commandes plus compliquées]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''[http://forum.debian-fr.org Accès forum]'''
&lt;/div&gt;
&lt;div style=&quot;padding:0.4em; font-size: 95%;&quot;&gt;
&lt;/div&gt;
|}

== Démarrer avec MediaWiki ==

Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.

* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]

[[Category:sommaire]]</text>
      <sha1>eud4brbc54fwbuzhdhpfk498luik03w</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>151</id>
      <parentid>147</parentid>
      <timestamp>2010-01-23T12:37:22Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <text xml:space="preserve" bytes="6495">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].

Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français bien sûr.

Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec entousiasme!

[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas) corrigés si nécessaire, et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]

Ajout par [[Utilisateur:L0u!$|L0u!$]] : N'oubliez pas d'associer chacunes de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.

NB: Rien ne sert de créer une page pour lister d'autres pages internes au wiki. les catégories servent à ça. on associe une page à une catégorie en écrivant ceci en fin de page: &lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !
 
&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:Catégories|Naviguer dans les Catégories]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |

* [[T%26A_interressants|T&amp;A interressants]]
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Manuel_d'installation|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
* [[Faireunpaquet|Faire un paquet Debian]]
* '''A suivre...'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Administration d'un serveur]]
* [[Les commandes plus compliquées]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''[http://forum.debian-fr.org Accès forum]'''
&lt;/div&gt;
&lt;div style=&quot;padding:0.4em; font-size: 95%;&quot;&gt;
&lt;/div&gt;
|}

== Démarrer avec MediaWiki ==

Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.

* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]

[[Category:sommaire]]</text>
      <sha1>g7s45vi9lltqdlnjveii9mi19h9vtxu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>157</id>
      <parentid>151</parentid>
      <timestamp>2010-01-23T12:47:50Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="6408">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].

Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français bien sûr.

Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec entousiasme!

[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas) corrigés si nécessaire, et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]

Ajout par [[Utilisateur:L0u!$|L0u!$]] : N'oubliez pas d'associer chacunes de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.

NB: Rien ne sert de créer une page pour lister d'autres pages internes au wiki. les catégories servent à ça. on associe une page à une catégorie en écrivant ceci en fin de page: &lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !
 
&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:Catégories|Naviguer dans les Catégories]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |

* [[T%26A_interressants|T&amp;A interressants]]
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Manuel_d'installation|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
* [[Faireunpaquet|Faire un paquet Debian]]
* '''A suivre...'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Administration d'un serveur]]
* [[Les commandes plus complexes]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''[http://forum.debian-fr.org Accès forum]'''
&lt;/div&gt;
&lt;div style=&quot;padding:0.4em; font-size: 95%;&quot;&gt;
&lt;/div&gt;
|}

== Démarrer avec MediaWiki ==

Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.

* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]

[[Category:sommaire]]</text>
      <sha1>hbd5ob9pcz1ehj4k0f5dlykoy0y483y</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>172</id>
      <parentid>157</parentid>
      <timestamp>2010-01-23T13:33:53Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="6432">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].

Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français bien sûr.

Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec entousiasme!

[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas) corrigés si nécessaire, et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]

Ajout par [[Utilisateur:L0u!$|L0u!$]] : N'oubliez pas d'associer chacunes de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.

NB: Rien ne sert de créer une page pour lister d'autres pages internes au wiki. les catégories servent à ça. on associe une page à une catégorie en écrivant ceci en fin de page: &lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !
 
&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:Catégories|Naviguer dans les Catégories]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |

* [[T%26A_interressants|T&amp;A interressants]]
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Manuel_d'installation|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
* [[Faireunpaquet|Faire un paquet Debian]]
* '''A suivre...'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Administration d'un serveur]]
* [[Les commandes plus complexes]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Fichier:Logo ayo.png]]]'''
&lt;/div&gt;
&lt;div style=&quot;padding:0.4em; font-size: 95%;&quot;&gt;
&lt;/div&gt;
|}

== Démarrer avec MediaWiki ==

Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.

* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]

[[Category:sommaire]]</text>
      <sha1>28sa0qakrb1t1ueejoinqaj8iv9mbsu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>173</id>
      <parentid>172</parentid>
      <timestamp>2010-01-23T13:45:10Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="6399">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].

Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français bien sûr.

Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec entousiasme!

[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas) corrigés si nécessaire, et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]

Ajout par [[Utilisateur:L0u!$|L0u!$]] : N'oubliez pas d'associer chacunes de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.

NB: Rien ne sert de créer une page pour lister d'autres pages internes au wiki. les catégories servent à ça. on associe une page à une catégorie en écrivant ceci en fin de page: &lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !
 
&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:Catégories|Naviguer dans les Catégories]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |

* [[T%26A_interressants|T&amp;A interressants]]
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Manuel_d'installation|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
* [[Faireunpaquet|Faire un paquet Debian]]
* '''A suivre...'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Administration d'un serveur]]
* [[Les commandes plus complexes]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Fichier:Logo ayo.png]]]'''
&lt;/div&gt;

|}

== Démarrer avec MediaWiki ==

Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.

* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]

[[Category:sommaire]]</text>
      <sha1>efkca480ytp0oqrrol4y0tegnmufbvd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>174</id>
      <parentid>173</parentid>
      <timestamp>2010-01-23T13:47:32Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="6397">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].

Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français bien sûr.

Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec entousiasme!

[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas) corrigés si nécessaire, et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]

Ajout par [[Utilisateur:L0u!$|L0u!$]] : N'oubliez pas d'associer chacunes de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.

NB: Rien ne sert de créer une page pour lister d'autres pages internes au wiki. les catégories servent à ça. on associe une page à une catégorie en écrivant ceci en fin de page: &lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !
 
&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:Catégories|Naviguer dans les Catégories]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |

* [[T%26A_interressants|T&amp;A interressants]]
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Manuel_d'installation|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
* [[Faireunpaquet|Faire un paquet Debian]]
* '''A suivre...'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Administration d'un serveur]]
* [[Les commandes plus complexes]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]'''
&lt;/div&gt;

|}

== Démarrer avec MediaWiki ==

Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.

* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]

[[Category:sommaire]]</text>
      <sha1>4uumn3df4eximax2ot7zq2w5ttgtrcw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>197</id>
      <parentid>174</parentid>
      <timestamp>2010-01-23T17:57:02Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="6423">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].

Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français bien sûr.

Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec entousiasme!

[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas) corrigés si nécessaire, et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]

Ajout par [[Utilisateur:L0u!$|L0u!$]] : N'oubliez pas d'associer chacunes de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.

NB: Rien ne sert de créer une page pour lister d'autres pages internes au wiki. les catégories servent à ça. on associe une page à une catégorie en écrivant ceci en fin de page: &lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !
 
&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:Catégories|Naviguer dans les Catégories]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Manuel_d'installation|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
* [[Faireunpaquet|Faire un paquet Debian]]
* [[T%26A_interressants|T&amp;A interressants]]
* [[:Catégorie:Modèles]]
* '''A suivre...'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Administration d'un serveur]]
* [[Les commandes plus complexes]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]'''
&lt;/div&gt;

|}

== Démarrer avec MediaWiki ==

Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.

* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]

[[Category:sommaire]]</text>
      <sha1>d6zgzc6l8ui09seqot2o173p2hqu66a</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>198</id>
      <parentid>197</parentid>
      <timestamp>2010-01-23T17:57:33Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="6436">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].

Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français bien sûr.

Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec entousiasme!

[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas) corrigés si nécessaire, et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]

Ajout par [[Utilisateur:L0u!$|L0u!$]] : N'oubliez pas d'associer chacunes de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.

NB: Rien ne sert de créer une page pour lister d'autres pages internes au wiki. les catégories servent à ça. on associe une page à une catégorie en écrivant ceci en fin de page: &lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !
 
&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:Catégories|Naviguer dans les Catégories]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Manuel_d'installation|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
* [[Faireunpaquet|Faire un paquet Debian]]
* [[T%26A_interressants|T&amp;A interressants]]
* [[:Catégorie:Modèles|Les modèles]]
* '''A suivre...'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Administration d'un serveur]]
* [[Les commandes plus complexes]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]'''
&lt;/div&gt;

|}

== Démarrer avec MediaWiki ==

Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.

* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]

[[Category:sommaire]]</text>
      <sha1>me8sydidvqkc3mvp2rx3lqzg7i9wv2k</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>216</id>
      <parentid>198</parentid>
      <timestamp>2010-01-23T22:00:42Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="6327">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].

Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français bien sûr.

Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec entousiasme!

[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas) corrigés si nécessaire, et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]

Ajout par [[Utilisateur:L0u!$|L0u!$]] : N'oubliez pas d'associer chacunes de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.&lt;br/&gt;
On associe une page à une catégorie en écrivant ceci en fin de page: &lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !
 
&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:Catégories|Naviguer dans les Catégories]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Manuel_d'installation|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
* [[Faireunpaquet|Faire un paquet Debian]]
* [[T%26A_interressants|T&amp;A interressants]]
* [[:Catégorie:Modèles|Les modèles]]
* '''A suivre...'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Administration d'un serveur]]
* [[Les commandes plus complexes]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]'''
&lt;/div&gt;

|}

== Démarrer avec MediaWiki ==

Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.

* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]

[[Category:sommaire]]</text>
      <sha1>ihqxb25hmz9tuy99sd3dljd9do6jskh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>221</id>
      <parentid>216</parentid>
      <timestamp>2010-01-24T03:40:47Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="6582">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].

Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français bien sûr.

Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec entousiasme!

[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas) corrigés si nécessaire, et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]

Ajout par [[Utilisateur:L0u!$|L0u!$]] : N'oubliez pas d'associer chacunes de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.&lt;br/&gt;
On associe une page à une catégorie en écrivant ceci en fin de page: &lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']] N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir comment ça marche !
 
&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:Catégories|Naviguer dans les Catégories]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours (en vrac)'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Manuel_d'installation|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
* [[Faireunpaquet|Faire un paquet Debian]]
* [[T%26A_interressants|T&amp;A interressants]]
* [[:Catégorie:Modèles|Les modèles]]
* [[Reinstallation_rapide|Reinstallation rapide]]
* '''A suivre...'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Administration d'un serveur]]
* [[Les commandes plus complexes]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]'''
&lt;/div&gt;

|}

== Démarrer avec MediaWiki ==

Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.

* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]

[[Category:sommaire]]</text>
      <sha1>o7u0dfm4nno6teudlvulcxboe4kbhtd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>223</id>
      <parentid>221</parentid>
      <timestamp>2010-01-24T11:05:33Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="6108">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].

Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français bien sûr.

Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec entousiasme!

[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas) corrigés si nécessaire, et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]

Ajout par [[Utilisateur:L0u!$|L0u!$]] : N'oubliez pas d'associer chacunes de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.&lt;br/&gt;
On associe une page à une catégorie en écrivant ceci en fin de page: &lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']] N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir comment ça marche !
 
&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:Catégories|Naviguer dans les Catégories]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours (en vrac)'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Manuel_d'installation|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
* [[Faireunpaquet|Faire un paquet Debian]]
* [[T%26A_interressants|T&amp;A interressants]]
* [[:Catégorie:Modèles|Les modèles]]
* [[Reinstallation_rapide|Reinstallation rapide]]
* '''A suivre...'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Administration d'un serveur]]
* [[Les commandes plus complexes]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]'''
&lt;/div&gt;

|}
[[Category:sommaire]]</text>
      <sha1>1ip4adelngcy6hlecl189yea09x4xtp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>239</id>
      <parentid>223</parentid>
      <timestamp>2010-01-24T17:21:07Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="6114">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].

Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français bien sûr.

Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec entousiasme!

[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas) corrigés si nécessaire, et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]

Ajout par [[Utilisateur:L0u!$|L0u!$]] : N'oubliez pas d'associer chacunes de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.&lt;br/&gt;
On associe une page à une catégorie en écrivant ceci en fin de page: '''&lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;'''
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']] N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir comment ça marche !
 
&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:Catégories|Naviguer dans les Catégories]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours (en vrac)'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Manuel_d'installation|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
* [[Faireunpaquet|Faire un paquet Debian]]
* [[T%26A_interressants|T&amp;A interressants]]
* [[:Catégorie:Modèles|Les modèles]]
* [[Reinstallation_rapide|Reinstallation rapide]]
* '''A suivre...'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Administration d'un serveur]]
* [[Les commandes plus complexes]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]'''
&lt;/div&gt;

|}
[[Category:sommaire]]</text>
      <sha1>kbpzgxeed8eg1zlofd1tm3pcsubn9k6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>266</id>
      <parentid>239</parentid>
      <timestamp>2010-01-25T19:43:05Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <text xml:space="preserve" bytes="6138">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].

Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français bien sûr.

Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec entousiasme!

[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas) corrigés si nécessaire, et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]

Ajout par [[Utilisateur:L0u!$|L0u!$]] : N'oubliez pas d'associer chacunes de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.&lt;br/&gt;
On associe une page à une catégorie en écrivant ceci en fin de page: '''&lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;'''
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']] N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir comment ça marche !
 
&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:Catégories|Naviguer dans les Catégories]]''' &amp;nbsp; | &amp;nbsp; '''[[]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours (en vrac)'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Manuel_d'installation|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
* [[Faireunpaquet|Faire un paquet Debian]]
* [[T%26A_interressants|T&amp;A interressants]]
* [[:Catégorie:Modèles|Les modèles]]
* [[Reinstallation_rapide|Reinstallation rapide]]
* [[CD_audio|CD audio]]
* '''A suivre...'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Administration d'un serveur]]
* [[Les commandes plus complexes]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]'''
&lt;/div&gt;

|}
[[Category:sommaire]]</text>
      <sha1>j2qwsufg85ndxhzl8xtwo3t6wcm51eg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>295</id>
      <parentid>266</parentid>
      <timestamp>2010-01-26T09:08:43Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="6180">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].

Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français bien sûr.

Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec entousiasme!

[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas) corrigés si nécessaire, et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]

Ajout par [[Utilisateur:L0u!$|L0u!$]] : N'oubliez pas d'associer chacunes de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.&lt;br/&gt;
On associe une page à une catégorie en écrivant ceci en fin de page: '''&lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;'''
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']] N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir comment ça marche !
 
&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:Catégories|Naviguer dans les Catégories]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:AWCforum|Le forum Interne du Wiki]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours (en vrac)'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Manuel_d'installation|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
* [[Faireunpaquet|Faire un paquet Debian]]
* [[T%26A_interressants|T&amp;A interressants]]
* [[:Catégorie:Modèles|Les modèles]]
* [[Reinstallation_rapide|Reinstallation rapide]]
* [[CD_audio|CD audio]]
* '''A suivre...'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Administration d'un serveur]]
* [[Les commandes plus complexes]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]'''
&lt;/div&gt;

|}
[[Category:sommaire]]</text>
      <sha1>b92rqs2bai96n41a86oxsok92wnuu1n</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>448</id>
      <parentid>295</parentid>
      <timestamp>2010-01-28T15:54:30Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="6196">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].

Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français bien sûr.

Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec entousiasme!

[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas) corrigés si nécessaire, et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]

Ajout par [[Utilisateur:L0u!$|L0u!$]] : N'oubliez pas d'associer chacunes de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.&lt;br/&gt;
On associe une page à une catégorie en écrivant ceci en fin de page: '''&lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;'''
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']] N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir comment ça marche !
 
&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:Catégories|Naviguer dans les Catégories]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:AWCforum|Le forum Interne du Wiki]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours (en vrac)'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Manuel_d'installation|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
* [[Faireunpaquet|Faire un paquet Debian]]
* [[T%26A_interressants|T&amp;A interressants]]
* [[:Catégorie:Modèles|Les modèles]]
* [[Reinstallation_rapide|Reinstallation rapide]]
* [[CD_audio|CD audio]]
* [[Ntfs|Ntfs]]
* '''A suivre...'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Administration d'un serveur]]
* [[Les commandes plus complexes]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]'''
&lt;/div&gt;

|}
[[Category:sommaire]]</text>
      <sha1>rfamqe5xschzwkdg29lfsn2od0kt1yr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>527</id>
      <parentid>448</parentid>
      <timestamp>2010-01-30T03:54:26Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="6196">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].

Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français bien sûr.

Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec entousiasme!

[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas) corrigés si nécessaire, et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]

Ajout par [[Utilisateur:L0u!$|L0u!$]] : N'oubliez pas d'associer chacunes de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.&lt;br/&gt;
On associe une page à une catégorie en écrivant ceci en fin de page: '''&lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;'''
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']] N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir comment ça marche !
 
&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:Catégories|Naviguer dans les Catégories]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:AWCforum|Le forum Interne du Wiki]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours (en vrac)'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Manuel_d'installation|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
* [[Faireunpaquet|Faire un paquet Debian]]
* [[T%26A_intéressants|T&amp;A intéressants]]
* [[:Catégorie:Modèles|Les modèles]]
* [[Reinstallation_rapide|Reinstallation rapide]]
* [[CD_audio|CD audio]]
* [[Ntfs|Ntfs]]
* '''A suivre...'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Administration d'un serveur]]
* [[Les commandes plus complexes]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]'''
&lt;/div&gt;

|}
[[Category:sommaire]]</text>
      <sha1>tw4lzlhewnvdp0lxn96cefp1occ3jjb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>543</id>
      <parentid>527</parentid>
      <timestamp>2010-01-30T09:07:09Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="6223">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].

Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français bien sûr.

Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec entousiasme!

[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas) corrigés si nécessaire, et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]

Ajout par [[Utilisateur:L0u!$|L0u!$]] : N'oubliez pas d'associer chacunes de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.&lt;br/&gt;
On associe une page à une catégorie en écrivant ceci en fin de page: '''&lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;'''
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']] N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir comment ça marche !
 
&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:Catégories|Naviguer dans les Catégories]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:AWCforum|Le forum Interne du Wiki]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours (en vrac)'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Manuel_d'installation|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
* [[Faireunpaquet|Faire un paquet Debian]]
* [[T%26A_intéressants|T&amp;A intéressants]]
* [[:Catégorie:Modèles|Les modèles]]
* [[Reinstallation_rapide|Reinstallation rapide]]
* [[CD_audio|CD audio]]
* [[Ntfs|Ntfs]]
* [[Glossaire|Glossaire]]

* '''A suivre...'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Administration d'un serveur]]
* [[Les commandes plus complexes]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]'''
&lt;/div&gt;

|}
[[Category:sommaire]]</text>
      <sha1>2t4w4fmwgr1d899nm8bpstkyk9ezon8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>561</id>
      <parentid>543</parentid>
      <timestamp>2010-01-30T14:32:06Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <text xml:space="preserve" bytes="6224">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].

Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français bien sûr.

Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec enthousiasme!

[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas), corrigés si nécessaire et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]

Ajout par [[Utilisateur:L0u!$|L0u!$]] : N'oubliez pas d'associer chacune de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.&lt;br/&gt;
On associe une page à une catégorie en écrivant ceci en fin de page: '''&lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;'''
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
 
&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:Catégories|Naviguer dans les Catégories]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:AWCforum|Le forum Interne du Wiki]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours (en vrac)'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Manuel_d'installation|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
* [[Faireunpaquet|Faire un paquet Debian]]
* [[T%26A_intéressants|T&amp;A intéressants]]
* [[:Catégorie:Modèles|Les modèles]]
* [[Reinstallation_rapide|Reinstallation rapide]]
* [[CD_audio|CD audio]]
* [[Ntfs|Ntfs]]
* [[Glossaire|Glossaire]]

* '''A suivre...'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Administration d'un serveur]]
* [[Les commandes plus complexes]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]'''
&lt;/div&gt;

|}
[[Category:sommaire]]</text>
      <sha1>6f792hxnnnjj31gv4aasgnk0msqyis9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>562</id>
      <parentid>561</parentid>
      <timestamp>2010-01-30T14:35:19Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <text xml:space="preserve" bytes="6225">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].

Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français bien sûr.

Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec enthousiasme !

[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas), corrigés si nécessaire et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]

Ajout par [[Utilisateur:L0u!$|L0u!$]] : N'oubliez pas d'associer chacune de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.&lt;br/&gt;
On associe une page à une catégorie en écrivant ceci en fin de page: '''&lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;'''
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
 
&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:Catégories|Naviguer dans les Catégories]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:AWCforum|Le forum Interne du Wiki]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours (en vrac)'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Manuel_d'installation|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
* [[Faireunpaquet|Faire un paquet Debian]]
* [[T%26A_intéressants|T&amp;A intéressants]]
* [[:Catégorie:Modèles|Les modèles]]
* [[Reinstallation_rapide|Reinstallation rapide]]
* [[CD_audio|CD audio]]
* [[Ntfs|Ntfs]]
* [[Glossaire|Glossaire]]

* '''A suivre...'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Administration d'un serveur]]
* [[Les commandes plus complexes]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]'''
&lt;/div&gt;

|}
[[Category:sommaire]]</text>
      <sha1>ljgayiei6890elj6nxk20klwu36fjg8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>587</id>
      <parentid>562</parentid>
      <timestamp>2010-01-31T04:43:00Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="6325">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org] ...

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].

Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français bien sûr.

Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec enthousiasme !

[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas), corrigés si nécessaire et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]

Ajout par [[Utilisateur:L0u!$|L0u!$]] : N'oubliez pas d'associer chacune de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.&lt;br/&gt;
On associe une page à une catégorie en écrivant ceci en fin de page: '''&lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;'''
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !


{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}

A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
 
&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:Catégories|Naviguer dans les Catégories]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:AWCforum|Le forum Interne du Wiki]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours (en vrac)'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Manuel_d'installation|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
* [[Faireunpaquet|Faire un paquet Debian]]
* [[T%26A_intéressants|T&amp;A intéressants]]
* [[:Catégorie:Modèles|Les modèles]]
* [[Reinstallation_rapide|Reinstallation rapide]]
* [[CD_audio|CD audio]]
* [[Ntfs|Ntfs]]
* [[Glossaire|Glossaire]]

* '''A suivre...'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Administration d'un serveur]]
* [[Les commandes plus complexes]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]'''
&lt;/div&gt;

|}
[[Category:sommaire]]</text>
      <sha1>6q4s0j35yxu915qo7wq92o3och98z6u</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>593</id>
      <parentid>587</parentid>
      <timestamp>2010-01-31T08:26:47Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="6290">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org].

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].&lt;br/&gt;
Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français bien sûr.&lt;br/&gt;
Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec enthousiasme !


N'oubliez pas d'associer chacune de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.&lt;br/&gt;
On associe une page à une catégorie en écrivant ceci en fin de page: '''&lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;'''
[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas), corrigés si nécessaire et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !


{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}

A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
 
&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:Catégories|Naviguer dans les Catégories]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:AWCforum|Le forum Interne du Wiki]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours (en vrac)'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Manuel_d'installation|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
* [[Faireunpaquet|Faire un paquet Debian]]
* [[T%26A_intéressants|T&amp;A intéressants]]
* [[:Catégorie:Modèles|Les modèles]]
* [[Reinstallation_rapide|Reinstallation rapide]]
* [[CD_audio|CD audio]]
* [[Ntfs|Ntfs]]
* [[Glossaire|Glossaire]]

* '''A suivre...'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Administration d'un serveur]]
* [[Les commandes plus complexes]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]'''
&lt;/div&gt;

|}
[[Category:sommaire]]</text>
      <sha1>k72angvcc5gleaaxeqlxomc37wgiwso</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>594</id>
      <parentid>593</parentid>
      <timestamp>2010-01-31T08:27:16Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="6294">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org].

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].&lt;br/&gt;
Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français bien sûr.&lt;br/&gt;
Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec enthousiasme !

N'oubliez pas d'associer chacune de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.&lt;br/&gt;
On associe une page à une catégorie en écrivant ceci en fin de page: '''&lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;'''&lt;br/&gt;
[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas), corrigés si nécessaire et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !


{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}

A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
 
&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:Catégories|Naviguer dans les Catégories]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:AWCforum|Le forum Interne du Wiki]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours (en vrac)'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Manuel_d'installation|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
* [[Faireunpaquet|Faire un paquet Debian]]
* [[T%26A_intéressants|T&amp;A intéressants]]
* [[:Catégorie:Modèles|Les modèles]]
* [[Reinstallation_rapide|Reinstallation rapide]]
* [[CD_audio|CD audio]]
* [[Ntfs|Ntfs]]
* [[Glossaire|Glossaire]]

* '''A suivre...'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Administration d'un serveur]]
* [[Les commandes plus complexes]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]'''
&lt;/div&gt;

|}
[[Category:sommaire]]</text>
      <sha1>ip09pwfxg7oi7bt6og4hfq5law8c4yd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>606</id>
      <parentid>594</parentid>
      <timestamp>2010-01-31T17:19:37Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="6306">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org].

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].&lt;br/&gt;
Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français bien sûr.&lt;br/&gt;
Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec enthousiasme !

N'oubliez pas d'associer chacune de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.&lt;br/&gt;
On associe une page à une catégorie en écrivant ceci en fin de page: '''&lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;'''&lt;br/&gt;
[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas), corrigés si nécessaire et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !


{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}

A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
 
&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:Catégories|Naviguer dans les Catégories]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:AWCforum|Le forum Interne du Wiki]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours (en vrac)'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Manuel_d'installation|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
* [[Faireunpaquet|Faire un paquet Debian]]
* [[T%26A_intéressants|T&amp;A intéressants]]
* [[:Catégorie:Modèles|Les modèles]]
* [[Reinstallation_rapide|Reinstallation rapide]]
* [[CD_audio|CD audio]]
* [[Ntfs|Ntfs]]
* [[Fstab]]
* [[Glossaire|Glossaire]]

* '''A suivre...'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Administration d'un serveur]]
* [[Les commandes plus complexes]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]'''
&lt;/div&gt;

|}
[[Category:sommaire]]</text>
      <sha1>o1sga3r3p71l8cmlfrseb4vs5uohjqv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>755</id>
      <parentid>606</parentid>
      <timestamp>2010-02-02T12:28:00Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="6436">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org].

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].&lt;br/&gt;
Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français bien sûr.&lt;br/&gt;
Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec enthousiasme !

N'oubliez pas d'associer chacune de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.&lt;br/&gt;
On associe une page à une catégorie en écrivant ceci en fin de page: '''&lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;'''&lt;br/&gt;
[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas), corrigés si nécessaire et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !


{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}
A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
----
Pensez à visiter '''[[Spécial:AWCforum|le forum Interne du Wiki]]''', de nouveaux sujets vous y attendent peut-être !

----

&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:Catégories|Naviguer dans les Catégories]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:AWCforum|Le forum Interne du Wiki]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours (en vrac)'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Manuel_d'installation|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
* [[Faireunpaquet|Faire un paquet Debian]]
* [[T%26A_intéressants|T&amp;A intéressants]]
* [[:Catégorie:Modèles|Les modèles]]
* [[Reinstallation_rapide|Reinstallation rapide]]
* [[CD_audio|CD audio]]
* [[Ntfs|Ntfs]]
* [[Fstab]]
* [[Glossaire|Glossaire]]

* '''A suivre...'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Administration d'un serveur]]
* [[Les commandes plus complexes]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]'''
&lt;/div&gt;

|}
[[Category:sommaire]]</text>
      <sha1>jiyy1yfdwaifquw1k6zrx3a1aquwx8i</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>817</id>
      <parentid>755</parentid>
      <timestamp>2010-02-03T19:05:36Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="6487">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org].

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].&lt;br/&gt;
Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français bien sûr.&lt;br/&gt;
Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec enthousiasme !

N'oubliez pas d'associer chacune de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.&lt;br/&gt;
On associe une page à une catégorie en écrivant ceci en fin de page: '''&lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;'''&lt;br/&gt;
[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas), corrigés si nécessaire et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !


{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}
A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
----
Pensez à visiter '''[[Spécial:AWCforum|le forum Interne du Wiki]]''', de nouveaux sujets vous y attendent peut-être !

----

&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:Catégories|Naviguer dans les Catégories]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:AWCforum|Le forum Interne du Wiki]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours (en vrac)'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Manuel_d'installation|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* [[Gestionnaire_de_fenetres|Les Gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
* [[Faireunpaquet|Faire un paquet Debian]]
* [[T%26A_intéressants|T&amp;A intéressants]]
* [[:Catégorie:Modèles|Les modèles]]
* [[Reinstallation_rapide|Reinstallation rapide]]
* [[CD_audio|CD audio]]
* [[Ntfs|Ntfs]]
* [[Fstab]]
* [[Glossaire|Glossaire]]
* [[Le fichier interfaces|/etc/network/interfaces]]
* '''A suivre...'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Administration d'un serveur]]
* [[Les commandes plus complexes]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]'''
&lt;/div&gt;

|}
[[Category:sommaire]]</text>
      <sha1>n9o48z8kywlilzvugdng6stj6e0ku0y</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>823</id>
      <parentid>817</parentid>
      <timestamp>2010-02-03T20:35:50Z</timestamp>
      <contributor>
        <username>Wetaskiwin</username>
        <id>10</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="6488">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org].

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].&lt;br/&gt;
Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français bien sûr.&lt;br/&gt;
Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec enthousiasme !

N'oubliez pas d'associer chacune de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.&lt;br/&gt;
On associe une page à une catégorie en écrivant ceci en fin de page: '''&lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;'''&lt;br/&gt;
[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas), corrigés si nécessaire et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !


{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}
A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
----
Pensez à visiter '''[[Spécial:AWCforum|le forum Interne du Wiki]]''', de nouveaux sujets vous y attendent peut-être !

----

&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:Catégories|Naviguer dans les Catégories]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:AWCforum|Le forum Interne du Wiki]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours (en vrac)'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Manuel_d'installation|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* [[Gestionnaire_de_fenêtres|Les gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
* [[Faireunpaquet|Faire un paquet Debian]]
* [[T%26A_intéressants|T&amp;A intéressants]]
* [[:Catégorie:Modèles|Les modèles]]
* [[Reinstallation_rapide|Reinstallation rapide]]
* [[CD_audio|CD audio]]
* [[Ntfs|Ntfs]]
* [[Fstab]]
* [[Glossaire|Glossaire]]
* [[Le fichier interfaces|/etc/network/interfaces]]
* '''A suivre...'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Administration d'un serveur]]
* [[Les commandes plus complexes]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]'''
&lt;/div&gt;

|}
[[Category:sommaire]]</text>
      <sha1>8gsajj3qcpua1vc6t5te5lztq56e9tt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>825</id>
      <parentid>823</parentid>
      <timestamp>2010-02-04T05:42:55Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="6487">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org].

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].&lt;br/&gt;
Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français bien sûr.&lt;br/&gt;
Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec enthousiasme !

N'oubliez pas d'associer chacune de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.&lt;br/&gt;
On associe une page à une catégorie en écrivant ceci en fin de page: '''&lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;'''&lt;br/&gt;
[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas), corrigés si nécessaire et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !


{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}
A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
----
Pensez à visiter '''[[Spécial:AWCforum|le forum Interne du Wiki]]''', de nouveaux sujets vous y attendent peut-être !

----

&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:Catégories|Naviguer dans les Catégories]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:AWCforum|Le forum Interne du Wiki]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours (en vrac)'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Manuel_d'installation|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* [[Gestionnaire_de_fenetres|Les gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
* [[Faireunpaquet|Faire un paquet Debian]]
* [[T%26A_intéressants|T&amp;A intéressants]]
* [[:Catégorie:Modèles|Les modèles]]
* [[Reinstallation_rapide|Reinstallation rapide]]
* [[CD_audio|CD audio]]
* [[Ntfs|Ntfs]]
* [[Fstab]]
* [[Glossaire|Glossaire]]
* [[Le fichier interfaces|/etc/network/interfaces]]
* '''A suivre...'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Administration d'un serveur]]
* [[Les commandes plus complexes]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]'''
&lt;/div&gt;

|}
[[Category:sommaire]]</text>
      <sha1>kqoltci99jadku4p0ln6s6b3z4a2sqh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>863</id>
      <parentid>825</parentid>
      <timestamp>2010-02-04T16:54:11Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="6531">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org].

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].&lt;br/&gt;
Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français bien sûr.&lt;br/&gt;
Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec enthousiasme !

N'oubliez pas d'associer chacune de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.&lt;br/&gt;
On associe une page à une catégorie en écrivant ceci en fin de page: '''&lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;'''&lt;br/&gt;
[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas), corrigés si nécessaire et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !


{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}
A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
----
Pensez à visiter '''[[Spécial:AWCforum|le forum Interne du Wiki]]''', de nouveaux sujets vous y attendent peut-être !

----

&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:Catégories|Naviguer dans les Catégories]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:AWCforum|Le forum Interne du Wiki]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours (en vrac)'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Manuel_d'installation|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* [[Gestionnaire_de_fenetres|Les gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
* [[Faireunpaquet|Faire un paquet Debian]]
* [[T%26A_intéressants|T&amp;A intéressants]]
* [[:Catégorie:Modèles|Les modèles]]
* [[Reinstallation_rapide|Reinstallation rapide]]
* [[CD_audio|CD audio]]
* [[Ntfs|Ntfs]]
* [[Fstab]]
* [[Glossaire|Glossaire]]
* [[Le fichier interfaces|/etc/network/interfaces]]
* [[Réinstaller_Grub2|Réinstaller Grub2]]
* '''A suivre...'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Administration d'un serveur]]
* [[Les commandes plus complexes]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]'''
&lt;/div&gt;

|}
[[Category:sommaire]]</text>
      <sha1>kmyta6698dpudr1rgq8lguek5xta0ti</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>877</id>
      <parentid>863</parentid>
      <timestamp>2010-02-05T05:55:45Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="6707">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org].

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].&lt;br/&gt;
Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français bien sûr.&lt;br/&gt;
Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec enthousiasme !

N'oubliez pas d'associer chacune de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.&lt;br/&gt;
On associe une page à une catégorie en écrivant ceci en fin de page: '''&lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;'''&lt;br/&gt;
[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas), corrigés si nécessaire et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !


{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}
A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
----
Pensez à visiter '''[[Spécial:AWCforum|le forum Interne du Wiki]]''', de nouveaux sujets vous y attendent peut-être !

----

&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:Catégories|Naviguer dans les Catégories]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:AWCforum|Le forum Interne du Wiki]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours (en vrac)'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Manuel_d'installation|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* [[Gestionnaire_de_fenetres|Les gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
* [[Faireunpaquet|Faire un paquet Debian]]
* [[T%26A_intéressants|T&amp;A intéressants]]
* [[:Catégorie:Modèles|Les modèles]]
* [[Reinstallation_rapide|Reinstallation rapide]]
* [[CD_audio|CD audio]]
* [[Ntfs|Ntfs]]
* [[Fstab]]
* [[Glossaire|Glossaire]]
* [[Le fichier interfaces|/etc/network/interfaces]]
* [[Nettoyer_sa_Debian|Nettoyer sa Debian]]
* [[Trucs_et_astuces_pour_la_console|Trucs et astuces pour la console]]
* [[Utilisation_de_ndiswrapper|Utilisation de ndiswrapper]]
* [[Réinstaller_Grub2|Réinstaller Grub2]]
* '''A suivre...'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Administration d'un serveur]]
* [[Les commandes plus complexes]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]'''
&lt;/div&gt;

|}
[[Category:sommaire]]</text>
      <sha1>j6d1b7ztktdwxrvdb5h95nvfn436lm2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1114</id>
      <parentid>877</parentid>
      <timestamp>2010-03-03T06:50:10Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="6726">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org].

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].&lt;br/&gt;
Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français bien sûr.&lt;br/&gt;
Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec enthousiasme !

N'oubliez pas d'associer chacune de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.&lt;br/&gt;
On associe une page à une catégorie en écrivant ceci en fin de page: '''&lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;'''&lt;br/&gt;
[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas), corrigés si nécessaire et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !


{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}
A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
----
Pensez à visiter '''[[Spécial:AWCforum|le forum Interne du Wiki]]''', de nouveaux sujets vous y attendent peut-être !

----

&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:Catégories|Naviguer dans les Catégories]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:AWCforum|Le forum Interne du Wiki]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours (en vrac)'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Manuel_d'installation|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* [[Gestionnaire_de_fenetres|Les gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
* [[Faireunpaquet|Faire un paquet Debian]]
* [[T%26A_intéressants|T&amp;A intéressants]]
* [[:Catégorie:Modèles|Les modèles]]
* [[Reinstallation_rapide|Reinstallation rapide]]
* [[CD_audio|CD audio]]
* [[Ntfs|Ntfs]]
* [[Fstab]]
* [[Glossaire|Glossaire]]
* [[Le fichier interfaces|/etc/network/interfaces]]
* [[Nettoyer_sa_Debian|Nettoyer sa Debian]]
* [[Trucs_et_astuces_pour_la_console|Trucs et astuces pour la console]]
* [[Utilisation_de_ndiswrapper|Utilisation de ndiswrapper]]
* [[Réinstaller_Grub2|Réinstaller Grub2]]
* [[Apt-listbugs]]
* '''A suivre...'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Administration d'un serveur]]
* [[Les commandes plus complexes]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]'''
&lt;/div&gt;

|}
[[Category:sommaire]]</text>
      <sha1>1vqz4urbxqmts9vzqiauf8bnmef5f5s</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1121</id>
      <parentid>1114</parentid>
      <timestamp>2010-03-05T06:20:14Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="6804">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org].

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].&lt;br/&gt;
Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français bien sûr.&lt;br/&gt;
Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec enthousiasme !

N'oubliez pas d'associer chacune de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.&lt;br/&gt;
On associe une page à une catégorie en écrivant ceci en fin de page: '''&lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;'''&lt;br/&gt;
[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas), corrigés si nécessaire et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !


{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}
A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
----
Pensez à visiter '''[[Spécial:AWCforum|le forum Interne du Wiki]]''', de nouveaux sujets vous y attendent peut-être !

----

&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:Catégories|Naviguer dans les Catégories]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:AWCforum|Le forum Interne du Wiki]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours (en vrac)'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Manuel_d'installation|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* [[Gestionnaire_de_fenetres|Les gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
* [[Faireunpaquet|Faire un paquet Debian]]
* [[T%26A_intéressants|T&amp;A intéressants]]
* [[:Catégorie:Modèles|Les modèles]]
* [[Reinstallation_rapide|Reinstallation rapide]]
* [[CD_audio|CD audio]]
* [[Ntfs|Ntfs]]
* [[Fstab]]
* [[Glossaire|Glossaire]]
* [[Le fichier interfaces|/etc/network/interfaces]]
* [[Nettoyer_sa_Debian|Nettoyer sa Debian]]
* [[Trucs_et_astuces_pour_la_console|Trucs et astuces pour la console]]
* [[Utilisation_de_ndiswrapper|Utilisation de ndiswrapper]]
* [[Réinstaller_Grub2|Réinstaller Grub2]]
* [[Apt-listbugs]]
* [[Sauvegarde_et_clonage_d'un_système|Sauvegarde et clonage d'un système]]
* '''A suivre...'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Administration d'un serveur]]
* [[Les commandes plus complexes]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]'''
&lt;/div&gt;

|}
[[Category:sommaire]]</text>
      <sha1>nqyll9o068v6umrnao4kq008mb1vmlh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1160</id>
      <parentid>1121</parentid>
      <timestamp>2010-03-23T12:37:12Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2788">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''Le (projet de) MediaWiki du forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org].

'''Bienvenue''' sur le wiki de [http://forum.debian-fr.org forum.debian-fr.org].&lt;br/&gt;

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}
A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[Wiki.forum.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;!-- ********************************* --&gt;
&lt;!-- INDEX THÉMATIQUE  ET ARBORESCENCE --&gt;
&lt;!-- ********************************* --&gt;
{| width=&quot;100%&quot;
|
{{General/Modèle
| titre = Index thématique
| modèle = General/Index
| tailleTitre = 120%
}}
|}
----
{| width=&quot;100%&quot;
|-
|
{{General/Modèle
| titre = Arborescence
| modèle = General/Arborescence
| tailleTitre = 120%
}}
|}
----
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;&lt;/div&gt;

| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]'''
&lt;/div&gt;
|}

[[Category:General]]
[[Category:sommaire]]</text>
      <sha1>tb2xxz83pj0v1gha4mpdf2in7y395zr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1615</id>
      <parentid>1160</parentid>
      <timestamp>2010-07-05T08:01:18Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2014">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''Le MediaWiki du forum.debian-fr.org'''&lt;/span&gt; 
&lt;/div&gt; &lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
= '''Le MediaWiki Déménage aujourd'hui... Rendez-vous sur&amp;nbsp;: http://www.isalo.org/wiki.debian-fr'''  =
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot;
|- align=&quot;center&quot; valign=&quot;top&quot;
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;#124; '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt; &lt;/div&gt; 
&lt;!-- ********************************* --&gt; &lt;!-- INDEX THÉMATIQUE  ET ARBORESCENCE --&gt; &lt;!-- ********************************* --&gt; 

{| width=&quot;100%&quot;
|-
| 
{{General/Modèle
| titre = Index thématique
| modèle = General/Index
| tailleTitre = 120%
}} 

|}

----

{| width=&quot;100%&quot;
|-
| 
{{General/Modèle
| titre = Arborescence
| modèle = General/Arborescence
| tailleTitre = 120%
}} 

|}

----

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents''' 
&lt;/div&gt; &lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;&lt;/div&gt; 
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]''' 
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>6r359x642951fgp18vs4neftyywgspk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1682</id>
      <parentid>1615</parentid>
      <timestamp>2010-07-22T05:52:28Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2767">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org].

'''Bienvenue''' sur le wiki de [http://forum.debian-fr.org forum.debian-fr.org].&lt;br/&gt;

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}
A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[Wiki.forum.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ********************************* --&gt; &lt;!-- INDEX THÉMATIQUE  ET ARBORESCENCE --&gt; &lt;!-- ********************************* --&gt; 

{| width=&quot;100%&quot;
|-
| 
{{General/Modèle
| titre = Index thématique
| modèle = General/Index
| tailleTitre = 120%
}} 

|}

----

{| width=&quot;100%&quot;
|-
| 
{{General/Modèle
| titre = Arborescence
| modèle = General/Arborescence
| tailleTitre = 120%
}} 

|}

----

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents''' 
&lt;/div&gt; &lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;&lt;/div&gt; 
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]''' 
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>mjrcedkhxkhteasj982jbiplh8j49cz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1726</id>
      <parentid>1682</parentid>
      <timestamp>2010-07-27T14:57:18Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <minor/>
      <comment>correction du lien &quot;communauté&quot;</comment>
      <text xml:space="preserve" bytes="2761">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org].

'''Bienvenue''' sur le wiki de [http://forum.debian-fr.org forum.debian-fr.org].&lt;br/&gt;

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}
A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ********************************* --&gt; &lt;!-- INDEX THÉMATIQUE  ET ARBORESCENCE --&gt; &lt;!-- ********************************* --&gt; 

{| width=&quot;100%&quot;
|-
| 
{{General/Modèle
| titre = Index thématique
| modèle = General/Index
| tailleTitre = 120%
}} 

|}

----

{| width=&quot;100%&quot;
|-
| 
{{General/Modèle
| titre = Arborescence
| modèle = General/Arborescence
| tailleTitre = 120%
}} 

|}

----

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents''' 
&lt;/div&gt; &lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;&lt;/div&gt; 
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]''' 
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>1t650k0f6ymmdlgrnlvxr2qufyn50wi</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1856</id>
      <parentid>1726</parentid>
      <timestamp>2010-08-05T16:03:18Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Ajout sondage...</comment>
      <text xml:space="preserve" bytes="2792">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org].

'''Bienvenue''' sur le wiki de [http://forum.debian-fr.org forum.debian-fr.org].&lt;br/&gt;

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}
A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ********************************* --&gt; &lt;!-- INDEX THÉMATIQUE  ET ARBORESCENCE --&gt; &lt;!-- ********************************* --&gt; 

{| width=&quot;100%&quot;
|-
| 
{{General/Modèle
| titre = Index thématique
| modèle = General/Index
| tailleTitre = 120%
}} 

|}

----

{| width=&quot;100%&quot;
|-
| 
{{General/Modèle
| titre = Arborescence
| modèle = General/Arborescence
| tailleTitre = 120%
}} 

|}

----

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents''' 
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;&lt;forum_poll id=22&gt;&lt;/forum_poll&gt;&lt;/div&gt; 
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]''' 
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>9spt1g03jjgmygyc1dxqafjk98nldzl</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2293</id>
      <parentid>1856</parentid>
      <timestamp>2010-11-16T07:40:49Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3116">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org].

'''Bienvenue''' sur le wiki de [http://forum.debian-fr.org forum.debian-fr.org].&lt;br/&gt;


'''Avertissement:''' pour des raisons techniques, le Wiki n'est pas disponible entre 21 heures et 03 heures (UTC). Nous nous excusons pour ce désagrément.

{{color|darkmagenta|'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|le livre d'or]]}}

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}
A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ********************************* --&gt; &lt;!-- INDEX THÉMATIQUE  ET ARBORESCENCE --&gt; &lt;!-- ********************************* --&gt; 

{| width=&quot;100%&quot;
|-
| 
{{General/Modèle
| titre = Index thématique
| modèle = General/Index
| tailleTitre = 120%
}} 

|}

----

{| width=&quot;100%&quot;
|-
| 
{{General/Modèle
| titre = Arborescence
| modèle = General/Arborescence
| tailleTitre = 120%
}} 

|}

----

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents''' 
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;&lt;forum_poll id=22&gt;&lt;/forum_poll&gt;&lt;/div&gt; 
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]''' 
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>n4yejis8rdxto5h2ko3pwnbq03yxdax</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2294</id>
      <parentid>2293</parentid>
      <timestamp>2010-11-16T07:41:55Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3113">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org].

'''Bienvenue''' sur le wiki de [http://forum.debian-fr.org forum.debian-fr.org].&lt;br/&gt;


'''Avertissement:''' pour des raisons techniques, le Wiki n'est pas disponible entre 21 heures et 03 heures (UTC). Nous nous excusons pour ce désagrément.

{{color|darkmagenta|'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]}}

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}
A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ********************************* --&gt; &lt;!-- INDEX THÉMATIQUE  ET ARBORESCENCE --&gt; &lt;!-- ********************************* --&gt; 

{| width=&quot;100%&quot;
|-
| 
{{General/Modèle
| titre = Index thématique
| modèle = General/Index
| tailleTitre = 120%
}} 

|}

----

{| width=&quot;100%&quot;
|-
| 
{{General/Modèle
| titre = Arborescence
| modèle = General/Arborescence
| tailleTitre = 120%
}} 

|}

----

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents''' 
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;&lt;forum_poll id=22&gt;&lt;/forum_poll&gt;&lt;/div&gt; 
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]''' 
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>brmxpc5hwfuj64c6rgb275mhmemnxxv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2308</id>
      <parentid>2294</parentid>
      <timestamp>2010-11-17T15:20:14Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3121">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org].

'''Bienvenue''' sur le wiki de [http://forum.debian-fr.org forum.debian-fr.org].&lt;br/&gt;


'''Avertissement:''' pour des raisons techniques, le Wiki n'est pas disponible entre 21 heures et 03 heures ([[UTC|UTC]]). Nous nous excusons pour ce désagrément.

{{color|darkmagenta|'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]}}

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}
A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ********************************* --&gt; &lt;!-- INDEX THÉMATIQUE  ET ARBORESCENCE --&gt; &lt;!-- ********************************* --&gt; 

{| width=&quot;100%&quot;
|-
| 
{{General/Modèle
| titre = Index thématique
| modèle = General/Index
| tailleTitre = 120%
}} 

|}

----

{| width=&quot;100%&quot;
|-
| 
{{General/Modèle
| titre = Arborescence
| modèle = General/Arborescence
| tailleTitre = 120%
}} 

|}

----

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents''' 
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;&lt;forum_poll id=22&gt;&lt;/forum_poll&gt;&lt;/div&gt; 
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]''' 
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>gwmqxnef32jgpk1v71bnr66jce7s4lx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2315</id>
      <parentid>2308</parentid>
      <timestamp>2010-11-19T16:46:22Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3208">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org].

'''Bienvenue''' sur le wiki de [http://forum.debian-fr.org forum.debian-fr.org].&lt;br/&gt;

{{color|magenta|''' &gt;&gt;&gt; [[Squeeze_appel_a_testeurs|Squeeze appel a testeurs]] &lt;&lt;&lt;'''}}

'''Avertissement:''' pour des raisons techniques, le Wiki n'est pas disponible entre 21 heures et 03 heures ([[UTC|UTC]]). Nous nous excusons pour ce désagrément.

{{color|darkmagenta|'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]}}

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}
A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ********************************* --&gt; &lt;!-- INDEX THÉMATIQUE  ET ARBORESCENCE --&gt; &lt;!-- ********************************* --&gt; 

{| width=&quot;100%&quot;
|-
| 
{{General/Modèle
| titre = Index thématique
| modèle = General/Index
| tailleTitre = 120%
}} 

|}

----

{| width=&quot;100%&quot;
|-
| 
{{General/Modèle
| titre = Arborescence
| modèle = General/Arborescence
| tailleTitre = 120%
}} 

|}

----

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents''' 
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;&lt;forum_poll id=22&gt;&lt;/forum_poll&gt;&lt;/div&gt; 
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]''' 
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>sqoudb9ihpjgiplq69cqumvijhfdk54</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2380</id>
      <parentid>2315</parentid>
      <timestamp>2010-11-24T06:50:01Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3088">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org].

'''Bienvenue''' sur le wiki de [http://forum.debian-fr.org forum.debian-fr.org].&lt;br/&gt;

{{color|magenta|''' &gt;&gt;&gt; [[Squeeze_appel_a_testeurs|Squeeze appel a testeurs]] &lt;&lt;&lt;'''}}

'''Avertissement:''' pour des raisons techniques, le Wiki n'est pas disponible entre 21 heures et 03 heures ([[UTC|UTC]]). Nous nous excusons pour ce désagrément.

{{color|darkmagenta|'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]}}

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}
A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ********************************* --&gt; &lt;!-- INDEX THÉMATIQUE  ET ARBORESCENCE --&gt; &lt;!-- ********************************* --&gt; 

{| width=&quot;100%&quot;
|-
| 
{{General/Modèle
| titre = Index thématique
| modèle = General/Index
| tailleTitre = 120%
}} 

|}

----

{| width=&quot;100%&quot;
|-
| 
{{General/Modèle
| titre = Arborescence
| modèle = General/Arborescence
| tailleTitre = 120%
}} 

|}

----

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents''' 
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]''' 
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>40g689jw8y1p24z9j2bgp1etfgwer7i</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2381</id>
      <parentid>2380</parentid>
      <timestamp>2010-11-24T06:51:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2956">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org].

'''Bienvenue''' sur le wiki de [http://forum.debian-fr.org forum.debian-fr.org].&lt;br/&gt;

{{color|magenta|''' &gt;&gt;&gt; [[Squeeze_appel_a_testeurs|Squeeze appel a testeurs]] &lt;&lt;&lt;'''}}

'''Avertissement:''' pour des raisons techniques, le Wiki n'est pas disponible entre 21 heures et 03 heures ([[UTC|UTC]]). Nous nous excusons pour ce désagrément.

{{color|darkmagenta|'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]}}

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}
A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ********************************* --&gt; &lt;!-- INDEX THÉMATIQUE  ET ARBORESCENCE --&gt; &lt;!-- ********************************* --&gt; 

{| width=&quot;100%&quot;
|-
| 
{{General/Modèle
| titre = Index thématique
| modèle = General/Index
| tailleTitre = 120%
}} 

|}

----

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents''' 
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]''' 
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>m2p86393dboijc5f6chfqizpwg7u14w</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2448</id>
      <parentid>2381</parentid>
      <timestamp>2010-12-07T14:40:57Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2791">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org].

'''Bienvenue''' sur le wiki de [http://forum.debian-fr.org forum.debian-fr.org].&lt;br/&gt;

{{color|magenta|''' &gt;&gt;&gt; [[Squeeze_appel_a_testeurs|Squeeze appel a testeurs]] &lt;&lt;&lt;'''}}


{{color|darkmagenta|'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]}}

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}
A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ********************************* --&gt; &lt;!-- INDEX THÉMATIQUE  ET ARBORESCENCE --&gt; &lt;!-- ********************************* --&gt; 

{| width=&quot;100%&quot;
|-
| 
{{General/Modèle
| titre = Index thématique
| modèle = General/Index
| tailleTitre = 120%
}} 

|}

----

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents''' 
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]''' 
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>3g2hn62tc6pqe4ltokdigdmsqj3su5a</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2476</id>
      <parentid>2448</parentid>
      <timestamp>2010-12-11T16:14:17Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3034">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;float:left;&quot;&gt;{{#icon: 301px-Orange Icon Wiki.svg.png|Forum|24|http://www.isalo.org/wiki.debian-fr/}}&lt;/span&gt;&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;&lt;span style=&quot;float:right;&quot;&gt;{{#icon: Forum-groupe-utilisateurs-icone-4597-128.png|Forum|24|http://www.debian-fr.org/}}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org].

'''Bienvenue''' sur le wiki de [http://forum.debian-fr.org forum.debian-fr.org].&lt;br/&gt;

{{color|magenta|''' &gt;&gt;&gt; [[Squeeze_appel_a_testeurs|Squeeze appel a testeurs]] &lt;&lt;&lt;'''}}


{{color|darkmagenta|'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]}}

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}
A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ********************************* --&gt; &lt;!-- INDEX THÉMATIQUE  ET ARBORESCENCE --&gt; &lt;!-- ********************************* --&gt; 

{| width=&quot;100%&quot;
|-
| 
{{General/Modèle
| titre = Index thématique
| modèle = General/Index
| tailleTitre = 120%
}} 

|}

----

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents''' 
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]''' 
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>fwfgudaa2fygkvldpmt52awica8btsx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2480</id>
      <parentid>2476</parentid>
      <timestamp>2010-12-11T18:50:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3187">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;float:left;&quot;&gt;{{#icon: 301px-Orange Icon Wiki.svg.png|Forum|24|http://www.isalo.org/wiki.debian-fr/}}&lt;/span&gt;
&lt;span style=&quot;color:#ffffff; float:left; font-size:100%;&quot;&gt;''' Wiki'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; float:right; font-size:100%;&quot;&gt;'''Forum '''&lt;/span&gt;&lt;span style=&quot;float:right;&quot;&gt;{{#icon: Forum-groupe-utilisateurs-icone-4597-128.png|Forum|24|http://www.debian-fr.org/}}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org].

'''Bienvenue''' sur le wiki de [http://forum.debian-fr.org forum.debian-fr.org].&lt;br/&gt;

{{color|magenta|''' &gt;&gt;&gt; [[Squeeze_appel_a_testeurs|Squeeze appel a testeurs]] &lt;&lt;&lt;'''}}


{{color|darkmagenta|'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]}}

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}
A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ********************************* --&gt; &lt;!-- INDEX THÉMATIQUE  ET ARBORESCENCE --&gt; &lt;!-- ********************************* --&gt; 

{| width=&quot;100%&quot;
|-
| 
{{General/Modèle
| titre = Index thématique
| modèle = General/Index
| tailleTitre = 120%
}} 

|}

----

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents''' 
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]''' 
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>3hfkkxh5m9zwqelozglv72oaszrud8g</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2532</id>
      <parentid>2480</parentid>
      <timestamp>2010-12-25T18:33:25Z</timestamp>
      <contributor>
        <username>Kna</username>
        <id>35</id>
      </contributor>
      <comment>forum.debian-fr.org &gt;&gt; www.debian-fr.org</comment>
      <text xml:space="preserve" bytes="3177">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;float:left;&quot;&gt;{{#icon: 301px-Orange Icon Wiki.svg.png|Forum|24|http://www.isalo.org/wiki.debian-fr/}}&lt;/span&gt;
&lt;span style=&quot;color:#ffffff; float:left; font-size:100%;&quot;&gt;''' Wiki'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; float:right; font-size:100%;&quot;&gt;'''Forum '''&lt;/span&gt;&lt;span style=&quot;float:right;&quot;&gt;{{#icon: Forum-groupe-utilisateurs-icone-4597-128.png|Forum|24|http://www.debian-fr.org/}}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://www.debian-fr.org forum debian-fr.org].

'''Bienvenue''' sur le wiki du [http://www.debian-fr.org forum debian-fr.org].&lt;br/&gt;

{{color|magenta|''' &gt;&gt;&gt; [[Squeeze_appel_a_testeurs|Squeeze appel a testeurs]] &lt;&lt;&lt;'''}}


{{color|darkmagenta|'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]}}

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}
A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ********************************* --&gt; &lt;!-- INDEX THÉMATIQUE  ET ARBORESCENCE --&gt; &lt;!-- ********************************* --&gt; 

{| width=&quot;100%&quot;
|-
| 
{{General/Modèle
| titre = Index thématique
| modèle = General/Index
| tailleTitre = 120%
}} 

|}

----

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents''' 
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://www.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]''' 
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>mijmqnrtaws3w38p3dc8xv0xbd2n6zo</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2703</id>
      <parentid>2532</parentid>
      <timestamp>2011-02-12T13:00:34Z</timestamp>
      <contributor>
        <username>Sidell</username>
        <id>34</id>
      </contributor>
      <text xml:space="preserve" bytes="3088">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;float:left;&quot;&gt;{{#icon: 301px-Orange Icon Wiki.svg.png|Forum|24|http://www.isalo.org/wiki.debian-fr/}}&lt;/span&gt;
&lt;span style=&quot;color:#ffffff; float:left; font-size:100%;&quot;&gt;''' Wiki'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; float:right; font-size:100%;&quot;&gt;'''Forum '''&lt;/span&gt;&lt;span style=&quot;float:right;&quot;&gt;{{#icon: Forum-groupe-utilisateurs-icone-4597-128.png|Forum|24|http://www.debian-fr.org/}}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://www.debian-fr.org forum debian-fr.org].

'''Bienvenue''' sur le wiki du [http://www.debian-fr.org forum debian-fr.org].&lt;br/&gt;

{{color|darkmagenta|'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]}}

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}
A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ********************************* --&gt; &lt;!-- INDEX THÉMATIQUE  ET ARBORESCENCE --&gt; &lt;!-- ********************************* --&gt; 

{| width=&quot;100%&quot;
|-
| 
{{General/Modèle
| titre = Index thématique
| modèle = General/Index
| tailleTitre = 120%
}} 

|}

----

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents''' 
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://www.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]''' 
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>qj944yuy8ohgxz1f2ufiepqqezq34pb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2704</id>
      <parentid>2703</parentid>
      <timestamp>2011-02-13T08:28:20Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Annulation des modifications 2703 de [[Special:Contributions/Sidell|Sidell]] ([[User talk:Sidell|discussion]])</comment>
      <text xml:space="preserve" bytes="3203">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;float:left;&quot;&gt;{{#icon: 301px-Orange Icon Wiki.svg.png|Forum|24|http://www.isalo.org/wiki.debian-fr/}}&lt;/span&gt;
&lt;span style=&quot;color:#ffffff; float:left; font-size:100%;&quot;&gt;''' Wiki'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; float:right; font-size:100%;&quot;&gt;'''Forum '''&lt;/span&gt;&lt;span style=&quot;float:right;&quot;&gt;{{#icon: Forum-groupe-utilisateurs-icone-4597-128.png|Forum|24|http://www.debian-fr.org/}}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://www.debian-fr.org forum debian-fr.org].

'''Bienvenue''' sur le wiki du [http://www.debian-fr.org forum debian-fr.org].&lt;br/&gt;

{{color|magenta|''' &gt;&gt;&gt; [http://www.debian.org/News/2011/20110205a Publication de Debian 6.0 &quot;Squeeze&quot;] &lt;&lt;&lt;'''}}


{{color|darkmagenta|'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]}}

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}
A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ********************************* --&gt; &lt;!-- INDEX THÉMATIQUE  ET ARBORESCENCE --&gt; &lt;!-- ********************************* --&gt; 

{| width=&quot;100%&quot;
|-
| 
{{General/Modèle
| titre = Index thématique
| modèle = General/Index
| tailleTitre = 120%
}} 

|}

----

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents''' 
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://www.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]''' 
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>ri5ul728ltqh47v0qh8numqp4i4u80a</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2706</id>
      <parentid>2704</parentid>
      <timestamp>2011-02-13T08:37:00Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3199">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;float:left;&quot;&gt;{{#icon: 301px-Orange Icon Wiki.svg.png|Forum|24|http://www.isalo.org/wiki.debian-fr/}}&lt;/span&gt;
&lt;span style=&quot;color:#ffffff; float:left; font-size:100%;&quot;&gt;''' Wiki'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; float:right; font-size:100%;&quot;&gt;'''Forum '''&lt;/span&gt;&lt;span style=&quot;float:right;&quot;&gt;{{#icon: Forum-groupe-utilisateurs-icone-4597-128.png|Forum|24|http://www.debian-fr.org/}}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://www.debian-fr.org forum debian-fr.org].

'''Bienvenue''' sur le wiki du [http://www.debian-fr.org forum debian-fr.org].&lt;br/&gt;

{{color|magenta|''' &gt;&gt;&gt; [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]] &lt;&lt;&lt;'''}}


{{color|darkmagenta|'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]}}

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}
A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ********************************* --&gt; &lt;!-- INDEX THÉMATIQUE  ET ARBORESCENCE --&gt; &lt;!-- ********************************* --&gt; 

{| width=&quot;100%&quot;
|-
| 
{{General/Modèle
| titre = Index thématique
| modèle = General/Index
| tailleTitre = 120%
}} 

|}

----

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents''' 
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://www.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]''' 
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>cfq0nyge70u230qihti30eunkz54fvu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3091</id>
      <parentid>2706</parentid>
      <timestamp>2011-07-25T04:29:40Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>+1</comment>
      <text xml:space="preserve" bytes="3571">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;float:left;&quot;&gt;{{#icon: 301px-Orange Icon Wiki.svg.png|Forum|24|http://www.isalo.org/wiki.debian-fr/}}&lt;/span&gt;
&lt;span style=&quot;color:#ffffff; float:left; font-size:100%;&quot;&gt;''' Wiki'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; float:right; font-size:100%;&quot;&gt;'''Forum '''&lt;/span&gt;&lt;span style=&quot;float:right;&quot;&gt;{{#icon: Forum-groupe-utilisateurs-icone-4597-128.png|Forum|24|http://www.debian-fr.org/}}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://www.debian-fr.org forum debian-fr.org].

'''Bienvenue''' sur le wiki du [http://www.debian-fr.org forum debian-fr.org].&lt;br/&gt;

{{color|magenta|''' &gt;&gt;&gt; [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]] &lt;&lt;&lt;'''}}


{{color|darkmagenta|'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]}}

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}
A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ********************************* --&gt; &lt;!-- INDEX THÉMATIQUE  ET ARBORESCENCE --&gt; &lt;!-- ********************************* --&gt; 

{| width=&quot;100%&quot;
|-
| 
{{General/Modèle
| titre = Index thématique
| modèle = General/Index
| tailleTitre = 120%
}} 

|}

----

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents''' 
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://www.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]''' 
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>ktccjo73j9cf570upruba54zsvkav77</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3124</id>
      <parentid>3091</parentid>
      <timestamp>2011-07-30T08:26:28Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3650">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;float:left;&quot;&gt;{{#icon: 301px-Orange Icon Wiki.svg.png|Forum|24|http://www.isalo.org/wiki.debian-fr/}}&lt;/span&gt;
&lt;span style=&quot;color:#ffffff; float:left; font-size:100%;&quot;&gt;''' Wiki'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; float:right; font-size:100%;&quot;&gt;'''Forum '''&lt;/span&gt;&lt;span style=&quot;float:right;&quot;&gt;{{#icon: Forum-groupe-utilisateurs-icone-4597-128.png|Forum|24|http://www.debian-fr.org/}}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://www.debian-fr.org forum debian-fr.org].

'''Bienvenue''' sur le wiki du [http://www.debian-fr.org forum debian-fr.org].&lt;br/&gt;

{{color|magenta|''' &gt;&gt;&gt; [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]] &lt;&lt;&lt;'''}}

{{color|darkmagenta|'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]}}

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}
A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ********************************* --&gt; &lt;!-- INDEX THÉMATIQUE  ET ARBORESCENCE --&gt; &lt;!-- ********************************* --&gt; 

{| width=&quot;100%&quot;
|-
| 
{{General/Modèle
| titre = Index thématique
| modèle = General/Index
| tailleTitre = 120%
}} 

|}

----

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;center&gt;'''[[Annonces_de_sécurité|Annonces de sécurité Debian]]'''&lt;/center&gt;

| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://www.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]''' 
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>cv60777y4euv9c2y9c56uekpdx8sv1h</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3140</id>
      <parentid>3124</parentid>
      <timestamp>2011-07-31T07:58:48Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Ajout des annonces de sécutrité</comment>
      <text xml:space="preserve" bytes="3680">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;float:left;&quot;&gt;{{#icon: 301px-Orange Icon Wiki.svg.png|Forum|24|http://www.isalo.org/wiki.debian-fr/}}&lt;/span&gt;
&lt;span style=&quot;color:#ffffff; float:left; font-size:100%;&quot;&gt;''' Wiki'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; float:right; font-size:100%;&quot;&gt;'''Forum '''&lt;/span&gt;&lt;span style=&quot;float:right;&quot;&gt;{{#icon: Forum-groupe-utilisateurs-icone-4597-128.png|Forum|24|http://www.debian-fr.org/}}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://www.debian-fr.org forum debian-fr.org].

'''Bienvenue''' sur le wiki du [http://www.debian-fr.org forum debian-fr.org].&lt;br/&gt;

{{color|magenta|''' &gt;&gt;&gt; [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]] &lt;&lt;&lt;'''}}

{{color|darkmagenta|'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]}}

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}
A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ********************************* --&gt; &lt;!-- INDEX THÉMATIQUE  ET ARBORESCENCE --&gt; &lt;!-- ********************************* --&gt; 

{| width=&quot;100%&quot;
|-
| 
{{General/Modèle
| titre = Index thématique
| modèle = General/Index
| tailleTitre = 120%
}} 

|}

----

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;center&gt;'''[[Annonces_de_sécurité|Annonces de sécurité Debian]]'''&lt;/center&gt;
&lt;/div&gt;
&lt;twitterfeed nb=&quot;5&quot; id=&quot;debiansecurity&quot;&gt;&lt;/twitterfeed&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://www.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]''' 
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>l7a41pjedcyvwaaxujavl7ilso0j7l8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3209</id>
      <parentid>3140</parentid>
      <timestamp>2011-08-07T12:56:36Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <text xml:space="preserve" bytes="3679">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;float:left;&quot;&gt;{{#icon: 301px-Orange Icon Wiki.svg.png|Forum|24|http://www.isalo.org/wiki.debian-fr/}}&lt;/span&gt;
&lt;span style=&quot;color:#ffffff; float:left; font-size:100%;&quot;&gt;''' Wiki'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; float:right; font-size:100%;&quot;&gt;'''Forum '''&lt;/span&gt;&lt;span style=&quot;float:right;&quot;&gt;{{#icon: Forum-groupe-utilisateurs-icone-4597-128.png|Forum|24|http://www.debian-fr.org/}}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://www.debian-fr.org forum debian-fr.org].

'''Bienvenue''' sur le wiki du [http://www.debian-fr.org forum debian-fr.org].&lt;br/&gt;

{{color|magenta|''' &gt;&gt;&gt; [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]] &lt;&lt;&lt;'''}}

{{color|darkmagenta|'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]}}

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}
A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ********************************* --&gt; &lt;!-- INDEX THÉMATIQUE  ET ARBORESCENCE --&gt; &lt;!-- ********************************* --&gt; 

{| width=&quot;100%&quot;
|-
| 
{{General/Modele
| titre = Index thématique
| modèle = General/Index
| tailleTitre = 120%
}} 

|}

----

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;center&gt;'''[[Annonces_de_sécurité|Annonces de sécurité Debian]]'''&lt;/center&gt;
&lt;/div&gt;
&lt;twitterfeed nb=&quot;5&quot; id=&quot;debiansecurity&quot;&gt;&lt;/twitterfeed&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://www.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]''' 
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>djd38uc2jswkfket6eiuickdt6xky48</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3290</id>
      <parentid>3209</parentid>
      <timestamp>2011-08-17T15:58:38Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3776">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;float:left;&quot;&gt;{{#icon: 301px-Orange Icon Wiki.svg.png|Forum|24|http://www.isalo.org/wiki.debian-fr/}}&lt;/span&gt;
&lt;span style=&quot;color:#ffffff; float:left; font-size:100%;&quot;&gt;''' Wiki'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; float:right; font-size:100%;&quot;&gt;'''Forum '''&lt;/span&gt;&lt;span style=&quot;float:right;&quot;&gt;{{#icon: Forum-groupe-utilisateurs-icone-4597-128.png|Forum|24|http://www.debian-fr.org/}}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://www.debian-fr.org forum debian-fr.org].

'''Bienvenue''' sur le wiki du [http://www.debian-fr.org forum debian-fr.org].&lt;br/&gt;

{{color|magenta|''' &gt;&gt;&gt; [http://thank-you.debian.net/#thanks Dites Merci à Debian!!!] &lt;&lt;&lt;'''}}

{{color|magenta|''' &gt;&gt;&gt; [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]] &lt;&lt;&lt;'''}}

{{color|darkmagenta|'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]}}

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}
A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ********************************* --&gt; &lt;!-- INDEX THÉMATIQUE  ET ARBORESCENCE --&gt; &lt;!-- ********************************* --&gt; 

{| width=&quot;100%&quot;
|-
| 
{{General/Modele
| titre = Index thématique
| modèle = General/Index
| tailleTitre = 120%
}} 

|}

----

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;center&gt;'''[[Annonces_de_sécurité|Annonces de sécurité Debian]]'''&lt;/center&gt;
&lt;/div&gt;
&lt;twitterfeed nb=&quot;5&quot; id=&quot;debiansecurity&quot;&gt;&lt;/twitterfeed&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://www.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]''' 
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>b2tidh2lqr51evxfwxv6xtth4u43qbm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3560</id>
      <parentid>3290</parentid>
      <timestamp>2011-11-21T08:35:33Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <text xml:space="preserve" bytes="3838">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;float:left;&quot;&gt;{{#icon: 301px-Orange Icon Wiki.svg.png|Forum|24|http://www.isalo.org/wiki.debian-fr/}}&lt;/span&gt;
&lt;span style=&quot;color:#ffffff; float:left; font-size:100%;&quot;&gt;''' Wiki'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; float:right; font-size:100%;&quot;&gt;'''Forum '''&lt;/span&gt;&lt;span style=&quot;float:right;&quot;&gt;{{#icon: Forum-groupe-utilisateurs-icone-4597-128.png|Forum|24|http://www.debian-fr.org/}}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://www.debian-fr.org forum debian-fr.org].

'''Bienvenue''' sur le wiki du [http://www.debian-fr.org forum debian-fr.org].&lt;br/&gt;

{{color|magenta|''' &gt;&gt;&gt; [http://thank-you.debian.net/#thanks Dites Merci à Debian!!!] &lt;&lt;&lt;'''}}

{{color|magenta|''' &gt;&gt;&gt; [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]] &lt;&lt;&lt;'''}}

{{color|darkmagenta|'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]}}

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}
A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ********************************* --&gt; &lt;!-- INDEX THÉMATIQUE  ET ARBORESCENCE --&gt; &lt;!-- ********************************* --&gt; 

{| width=&quot;100%&quot;
|-
| 
{{General/Modele
| titre = Index thématique
| modèle = General/Index
| tailleTitre = 120%
}} 

|}

----

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;center&gt;'''[[Annonces_de_sécurité|Annonces de sécurité Debian]]'''&lt;/center&gt;
&lt;/div&gt;
&lt;center&gt;
{{#widget:Twitter
|user=debiansecurity
|count=5
|shell.background=grey
|tweets.background=grey
}}
&lt;/center&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://www.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]''' 
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>e7hgzjn3aoovzhba0f1uz07txrdver0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3581</id>
      <parentid>3560</parentid>
      <timestamp>2011-11-21T11:22:13Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3795">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;float:left;&quot;&gt;{{#icon: 301px-Orange Icon Wiki.svg.png|Forum|24|http://www.isalo.org/wiki.debian-fr/}}&lt;/span&gt;
&lt;span style=&quot;color:#ffffff; float:left; font-size:100%;&quot;&gt;''' Wiki'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; float:right; font-size:100%;&quot;&gt;'''Forum '''&lt;/span&gt;&lt;span style=&quot;float:right;&quot;&gt;{{#icon: Forum-groupe-utilisateurs-icone-4597-128.png|Forum|24|http://www.debian-fr.org/}}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://www.debian-fr.org forum debian-fr.org].

'''Bienvenue''' sur le wiki du [http://www.debian-fr.org forum debian-fr.org].&lt;br/&gt;

{{color|magenta|''' &gt;&gt;&gt; [http://thank-you.debian.net/#thanks Dites Merci à Debian!!!] &lt;&lt;&lt;'''}}

{{color|magenta|''' &gt;&gt;&gt; [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]] &lt;&lt;&lt;'''}}

{{color|darkmagenta|'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]}}

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}
A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ********************************* --&gt; &lt;!-- INDEX THÉMATIQUE  ET ARBORESCENCE --&gt; &lt;!-- ********************************* --&gt; 

{| width=&quot;100%&quot;
|-
| 
{{General/Modele
| titre = Index thématique
| modèle = General/Index
| tailleTitre = 120%
}} 

|}

----

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;center&gt;'''[[Annonces_de_sécurité|Annonces de sécurité Debian]]'''&lt;/center&gt;
&lt;/div&gt;
&lt;center&gt;
&lt;twitterfeed nb=&quot;5&quot; id=&quot;debiansecurity&quot;&gt;&lt;/twitterfeed&gt;
&lt;/center&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://www.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]''' 
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>5l61ja72icg2y48om4ml6samfhqe4ak</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3583</id>
      <parentid>3581</parentid>
      <timestamp>2011-11-23T12:10:07Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Ajout Flux Rss forum-debian.fr</comment>
      <text xml:space="preserve" bytes="3755">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;float:left;&quot;&gt;{{#icon: 301px-Orange Icon Wiki.svg.png|Forum|24|http://www.isalo.org/wiki.debian-fr/}}&lt;/span&gt;
&lt;span style=&quot;color:#ffffff; float:left; font-size:100%;&quot;&gt;''' Wiki'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; float:right; font-size:100%;&quot;&gt;'''Forum '''&lt;/span&gt;&lt;span style=&quot;float:right;&quot;&gt;{{#icon: Forum-groupe-utilisateurs-icone-4597-128.png|Forum|24|http://www.debian-fr.org/}}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://www.debian-fr.org forum debian-fr.org].

'''Bienvenue''' sur le wiki du [http://www.debian-fr.org forum debian-fr.org].&lt;br/&gt;

{{color|magenta|''' &gt;&gt;&gt; [http://thank-you.debian.net/#thanks Dites Merci à Debian!!!] &lt;&lt;&lt;'''}}

{{color|magenta|''' &gt;&gt;&gt; [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]] &lt;&lt;&lt;'''}}

{{color|darkmagenta|'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]}}

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}
A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ********************************* --&gt; &lt;!-- INDEX THÉMATIQUE  ET ARBORESCENCE --&gt; &lt;!-- ********************************* --&gt; 

{| width=&quot;100%&quot;
|-
| 
{{General/Modele
| titre = Index thématique
| modèle = General/Index
| tailleTitre = 120%
}} 

|}

----

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;center&gt;'''[[Annonces_de_sécurité|Annonces de sécurité Debian]]'''&lt;/center&gt;
&lt;/div&gt;
&lt;twitterfeed nb=&quot;11&quot; id=&quot;debiansecurity&quot;&gt;&lt;/twitterfeed&gt;
| valign=&quot;top&quot; style=&quot;width: 45em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;rss number=10&gt;http://www.debian-fr.org/rss/digest/rss.xml&lt;/rss&gt;
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>mpg6rm4h1n5mp4hj09nj9vrro2x5dfy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3584</id>
      <parentid>3583</parentid>
      <timestamp>2011-11-23T14:14:13Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>À</comment>
      <text xml:space="preserve" bytes="3757">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;float:left;&quot;&gt;{{#icon: 301px-Orange Icon Wiki.svg.png|Forum|24|http://www.isalo.org/wiki.debian-fr/}}&lt;/span&gt;
&lt;span style=&quot;color:#ffffff; float:left; font-size:100%;&quot;&gt;''' Wiki'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; float:right; font-size:100%;&quot;&gt;'''Forum '''&lt;/span&gt;&lt;span style=&quot;float:right;&quot;&gt;{{#icon: Forum-groupe-utilisateurs-icone-4597-128.png|Forum|24|http://www.debian-fr.org/}}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://www.debian-fr.org forum debian-fr.org].

'''Bienvenue''' sur le wiki du [http://www.debian-fr.org forum debian-fr.org].&lt;br/&gt;

{{color|magenta|''' &gt;&gt;&gt; [http://thank-you.debian.net/#thanks Dites Merci à Debian!!!] &lt;&lt;&lt;'''}}

{{color|magenta|''' &gt;&gt;&gt; [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]] &lt;&lt;&lt;'''}}

{{color|darkmagenta|'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]}}

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}

À votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ********************************* --&gt; &lt;!-- INDEX THÉMATIQUE  ET ARBORESCENCE --&gt; &lt;!-- ********************************* --&gt; 

{| width=&quot;100%&quot;
|-
| 
{{General/Modele
| titre = Index thématique
| modèle = General/Index
| tailleTitre = 120%
}} 

|}

----

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;center&gt;'''[[Annonces_de_sécurité|Annonces de sécurité Debian]]'''&lt;/center&gt;
&lt;/div&gt;
&lt;twitterfeed nb=&quot;11&quot; id=&quot;debiansecurity&quot;&gt;&lt;/twitterfeed&gt;
| valign=&quot;top&quot; style=&quot;width: 45em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;rss number=10&gt;http://www.debian-fr.org/rss/digest/rss.xml&lt;/rss&gt;
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>c6f1b20252gooyth17at4sbe36fc095</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3907</id>
      <parentid>3584</parentid>
      <timestamp>2012-03-07T12:00:13Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <comment>#widget:Twitter</comment>
      <text xml:space="preserve" bytes="3902">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;float:left;&quot;&gt;{{#icon: 301px-Orange Icon Wiki.svg.png|Forum|24|http://www.isalo.org/wiki.debian-fr/}}&lt;/span&gt;
&lt;span style=&quot;color:#ffffff; float:left; font-size:100%;&quot;&gt;''' Wiki'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; float:right; font-size:100%;&quot;&gt;'''Forum '''&lt;/span&gt;&lt;span style=&quot;float:right;&quot;&gt;{{#icon: Forum-groupe-utilisateurs-icone-4597-128.png|Forum|24|http://www.debian-fr.org/}}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://www.debian-fr.org forum debian-fr.org].

'''Bienvenue''' sur le wiki du [http://www.debian-fr.org forum debian-fr.org].&lt;br/&gt;

{{color|magenta|''' &gt;&gt;&gt; [http://thank-you.debian.net/#thanks Dites Merci à Debian!!!] &lt;&lt;&lt;'''}}

{{color|magenta|''' &gt;&gt;&gt; [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]] &lt;&lt;&lt;'''}}

{{color|darkmagenta|'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]}}

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}

À votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ********************************* --&gt; &lt;!-- INDEX THÉMATIQUE  ET ARBORESCENCE --&gt; &lt;!-- ********************************* --&gt; 

{| width=&quot;100%&quot;
|-
| 
{{General/Modele
| titre = Index thématique
| modèle = General/Index
| tailleTitre = 120%
}} 

|}

----

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;center&gt;'''[[Annonces_de_sécurité|Annonces de sécurité Debian]]'''&lt;/center&gt;
&lt;/div&gt;
&lt;center&gt;
{{#widget:Twitter
|user=debian_security
|width=auto
|count=6
|tweets.color=#000000
|tweets.background=#f2f2f2
|tweets.links=#107bb5
|shell.color=#000000
|shell.background=#b8b8b8
}}
&lt;/center&gt;
| valign=&quot;top&quot; style=&quot;width: 45em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;rss number=17&gt;http://www.debian-fr.org/rss/digest/rss.xml&lt;/rss&gt;
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>0nf9b4xx3g9uanriprkwf1q0qp67icx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4156</id>
      <parentid>3907</parentid>
      <timestamp>2012-05-05T11:22:26Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>IPv6_ready</comment>
      <text xml:space="preserve" bytes="3948">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;float:left;&quot;&gt;{{#icon: 301px-Orange Icon Wiki.svg.png|Forum|24|http://www.isalo.org/wiki.debian-fr/}}&lt;/span&gt;
&lt;span style=&quot;color:#ffffff; float:left; font-size:100%;&quot;&gt;''' Wiki'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; float:right; font-size:100%;&quot;&gt;'''Forum '''&lt;/span&gt;&lt;span style=&quot;float:right;&quot;&gt;{{#icon: Forum-groupe-utilisateurs-icone-4597-128.png|Forum|24|http://www.debian-fr.org/}}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;

[[Fichier:IPv6_ready.png|120px|left|thumb]]

'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://www.debian-fr.org forum debian-fr.org].

'''Bienvenue''' sur le wiki du [http://www.debian-fr.org forum debian-fr.org].&lt;br/&gt;

{{color|magenta|''' &gt;&gt;&gt; [http://thank-you.debian.net/#thanks Dites Merci à Debian!!!] &lt;&lt;&lt;'''}}

{{color|magenta|''' &gt;&gt;&gt; [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]] &lt;&lt;&lt;'''}}

{{color|darkmagenta|'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]}}

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}

À votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ********************************* --&gt; &lt;!-- INDEX THÉMATIQUE  ET ARBORESCENCE --&gt; &lt;!-- ********************************* --&gt; 

{| width=&quot;100%&quot;
|-
| 
{{General/Modele
| titre = Index thématique
| modèle = General/Index
| tailleTitre = 120%
}} 

|}

----

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;center&gt;'''[[Annonces_de_sécurité|Annonces de sécurité Debian]]'''&lt;/center&gt;
&lt;/div&gt;
&lt;center&gt;
{{#widget:Twitter
|user=debian_security
|width=auto
|count=6
|tweets.color=#000000
|tweets.background=#f2f2f2
|tweets.links=#107bb5
|shell.color=#000000
|shell.background=#b8b8b8
}}
&lt;/center&gt;
| valign=&quot;top&quot; style=&quot;width: 45em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;rss number=17&gt;http://www.debian-fr.org/rss/digest/rss.xml&lt;/rss&gt;
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>shadssb3lfw7boaag68q5eb0j7zits4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4158</id>
      <parentid>4156</parentid>
      <timestamp>2012-05-05T11:23:53Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="3947">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;float:left;&quot;&gt;{{#icon: 301px-Orange Icon Wiki.svg.png|Forum|24|http://www.isalo.org/wiki.debian-fr/}}&lt;/span&gt;
&lt;span style=&quot;color:#ffffff; float:left; font-size:100%;&quot;&gt;''' Wiki'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; float:right; font-size:100%;&quot;&gt;'''Forum '''&lt;/span&gt;&lt;span style=&quot;float:right;&quot;&gt;{{#icon: Forum-groupe-utilisateurs-icone-4597-128.png|Forum|24|http://www.debian-fr.org/}}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;

[[Fichier:IPv6_ready.png|75px|left|thumb]]

'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://www.debian-fr.org forum debian-fr.org].

'''Bienvenue''' sur le wiki du [http://www.debian-fr.org forum debian-fr.org].&lt;br/&gt;

{{color|magenta|''' &gt;&gt;&gt; [http://thank-you.debian.net/#thanks Dites Merci à Debian!!!] &lt;&lt;&lt;'''}}

{{color|magenta|''' &gt;&gt;&gt; [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]] &lt;&lt;&lt;'''}}

{{color|darkmagenta|'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]}}

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}

À votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ********************************* --&gt; &lt;!-- INDEX THÉMATIQUE  ET ARBORESCENCE --&gt; &lt;!-- ********************************* --&gt; 

{| width=&quot;100%&quot;
|-
| 
{{General/Modele
| titre = Index thématique
| modèle = General/Index
| tailleTitre = 120%
}} 

|}

----

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;center&gt;'''[[Annonces_de_sécurité|Annonces de sécurité Debian]]'''&lt;/center&gt;
&lt;/div&gt;
&lt;center&gt;
{{#widget:Twitter
|user=debian_security
|width=auto
|count=6
|tweets.color=#000000
|tweets.background=#f2f2f2
|tweets.links=#107bb5
|shell.color=#000000
|shell.background=#b8b8b8
}}
&lt;/center&gt;
| valign=&quot;top&quot; style=&quot;width: 45em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;rss number=17&gt;http://www.debian-fr.org/rss/digest/rss.xml&lt;/rss&gt;
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>cecryz4040tyx02zaz1hf40qxxh4koq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4393</id>
      <parentid>4158</parentid>
      <timestamp>2012-08-14T11:42:44Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="3948">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;float:left;&quot;&gt;{{#icon: 301px-Orange Icon Wiki.svg.png|Forum|24|http://www.isalo.org/wiki.debian-fr/}}&lt;/span&gt;
&lt;span style=&quot;color:#ffffff; float:left; font-size:100%;&quot;&gt;''' Wiki'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; float:right; font-size:100%;&quot;&gt;'''Forum '''&lt;/span&gt;&lt;span style=&quot;float:right;&quot;&gt;{{#icon: Forum-groupe-utilisateurs-icone-4597-128.png|Forum|24|http://www.debian-fr.org/}}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;

[[Fichier:IPv6_ready.png|75px|left|thumb]]

'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://www.debian-fr.org forum debian-fr.org].

'''Bienvenue''' sur le wiki du [http://www.debian-fr.org forum debian-fr.org].&lt;br/&gt;

{{color|magenta|''' &gt;&gt;&gt; [http://thank-you.debian.net/#thanks Dites Merci à Debian!!!] &lt;&lt;&lt;'''}}

{{color|magenta|''' &gt;&gt;&gt; [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]] &lt;&lt;&lt;'''}}

{{color|darkmagenta|'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]}}

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}

À votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ********************************* --&gt; &lt;!-- INDEX THÉMATIQUE  ET ARBORESCENCE --&gt; &lt;!-- ********************************* --&gt; 

{| width=&quot;100%&quot;
|-
| 
{{General/Modele
| titre = Index thématique
| modèle = General/Index
| tailleTitre = 120%
}} 

|}

----

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;center&gt;'''[[Annonces_de_sécurité|Annonces de sécurité Debian]]'''&lt;/center&gt;
&lt;/div&gt;
&lt;center&gt;
{{#widget:Twitter
|user=debian_security
|width=auto
|count=6
|tweets.color=#000000
|tweets.background=#f2f2f2
|tweets.links=#107bb5
|shell.color=#000000
|shell.background=#b8b8b8
}}
&lt;/center&gt;
| valign=&quot;top&quot; style=&quot;width: 45em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;rss number=17&gt;https://www.debian-fr.org/rss/digest/rss.xml&lt;/rss&gt;
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>8agfmd0z1xa3satepzah3a29yh9fn6l</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4637</id>
      <parentid>4393</parentid>
      <timestamp>2012-10-29T08:10:28Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Annonces de sécurité</comment>
      <text xml:space="preserve" bytes="3861">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;float:left;&quot;&gt;{{#icon: 301px-Orange Icon Wiki.svg.png|Forum|24|http://www.isalo.org/wiki.debian-fr/}}&lt;/span&gt;
&lt;span style=&quot;color:#ffffff; float:left; font-size:100%;&quot;&gt;''' Wiki'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; float:right; font-size:100%;&quot;&gt;'''Forum '''&lt;/span&gt;&lt;span style=&quot;float:right;&quot;&gt;{{#icon: Forum-groupe-utilisateurs-icone-4597-128.png|Forum|24|http://www.debian-fr.org/}}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;

[[Fichier:IPv6_ready.png|75px|left|thumb]]

'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://www.debian-fr.org forum debian-fr.org].

'''Bienvenue''' sur le wiki du [http://www.debian-fr.org forum debian-fr.org].&lt;br/&gt;

{{color|magenta|''' &gt;&gt;&gt; [http://thank-you.debian.net/#thanks Dites Merci à Debian!!!] &lt;&lt;&lt;'''}}

{{color|magenta|''' &gt;&gt;&gt; [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]] &lt;&lt;&lt;'''}}

{{color|darkmagenta|'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]}}

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}

À votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ********************************* --&gt; &lt;!-- INDEX THÉMATIQUE  ET ARBORESCENCE --&gt; &lt;!-- ********************************* --&gt; 

{| width=&quot;100%&quot;
|-
| 
{{General/Modele
| titre = Index thématique
| modèle = General/Index
| tailleTitre = 120%
}} 

|}

----

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;center&gt;'''[[Annonces_de_sécurité|Annonces de sécurité Debian]]'''&lt;/center&gt;
&lt;/div&gt;
&lt;center&gt;
{{#widget:Iframe
|url=http://www.debian.org/security/2012/
|width=800
|height=350
|border=0
}}
&lt;/center&gt;
| valign=&quot;top&quot; style=&quot;width: 45em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;rss number=17&gt;https://www.debian-fr.org/rss/digest/rss.xml&lt;/rss&gt;
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>9c545rlqh4moyf4xip1c0l61d9ty2m5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4707</id>
      <parentid>4637</parentid>
      <timestamp>2012-11-01T06:37:20Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>https</comment>
      <text xml:space="preserve" bytes="3863">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;float:left;&quot;&gt;{{#icon: 301px-Orange Icon Wiki.svg.png|Forum|24|https://www.isalo.org/wiki.debian-fr/}}&lt;/span&gt;
&lt;span style=&quot;color:#ffffff; float:left; font-size:100%;&quot;&gt;''' Wiki'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; float:right; font-size:100%;&quot;&gt;'''Forum '''&lt;/span&gt;&lt;span style=&quot;float:right;&quot;&gt;{{#icon: Forum-groupe-utilisateurs-icone-4597-128.png|Forum|24|https://www.debian-fr.org/}}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;

[[Fichier:IPv6_ready.png|75px|left|thumb]]

'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://www.debian-fr.org forum debian-fr.org].

'''Bienvenue''' sur le wiki du [http://www.debian-fr.org forum debian-fr.org].&lt;br/&gt;

{{color|magenta|''' &gt;&gt;&gt; [http://thank-you.debian.net/#thanks Dites Merci à Debian!!!] &lt;&lt;&lt;'''}}

{{color|magenta|''' &gt;&gt;&gt; [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]] &lt;&lt;&lt;'''}}

{{color|darkmagenta|'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]}}

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}

À votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ********************************* --&gt; &lt;!-- INDEX THÉMATIQUE  ET ARBORESCENCE --&gt; &lt;!-- ********************************* --&gt; 

{| width=&quot;100%&quot;
|-
| 
{{General/Modele
| titre = Index thématique
| modèle = General/Index
| tailleTitre = 120%
}} 

|}

----

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;center&gt;'''[[Annonces_de_sécurité|Annonces de sécurité Debian]]'''&lt;/center&gt;
&lt;/div&gt;
&lt;center&gt;
{{#widget:Iframe
|url=http://www.debian.org/security/2012/
|width=800
|height=350
|border=0
}}
&lt;/center&gt;
| valign=&quot;top&quot; style=&quot;width: 45em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;rss number=17&gt;https://www.debian-fr.org/rss/digest/rss.xml&lt;/rss&gt;
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>0ugx2zq0ut3kfv4m2htj7jjyok9vwiw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4708</id>
      <parentid>4707</parentid>
      <timestamp>2012-11-01T06:39:42Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>https</comment>
      <text xml:space="preserve" bytes="3867">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;float:left;&quot;&gt;{{#icon: 301px-Orange Icon Wiki.svg.png|Forum|24|https://www.isalo.org/wiki.debian-fr/}}&lt;/span&gt;
&lt;span style=&quot;color:#ffffff; float:left; font-size:100%;&quot;&gt;''' Wiki'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; float:right; font-size:100%;&quot;&gt;'''Forum '''&lt;/span&gt;&lt;span style=&quot;float:right;&quot;&gt;{{#icon: Forum-groupe-utilisateurs-icone-4597-128.png|Forum|24|https://www.debian-fr.org/}}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;

[[Fichier:IPv6_ready.png|75px|left|thumb]]

'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].

'''Bienvenue''' sur le wiki du [https://www.debian-fr.org forum debian-fr.org].&lt;br/&gt;

{{color|magenta|''' &gt;&gt;&gt; [https://thank-you.debian.net/#thanks Dites Merci à Debian!!!] &lt;&lt;&lt;'''}}

{{color|magenta|''' &gt;&gt;&gt; [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]] &lt;&lt;&lt;'''}}

{{color|darkmagenta|'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]}}

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [https://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}

À votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ********************************* --&gt; &lt;!-- INDEX THÉMATIQUE  ET ARBORESCENCE --&gt; &lt;!-- ********************************* --&gt; 

{| width=&quot;100%&quot;
|-
| 
{{General/Modele
| titre = Index thématique
| modèle = General/Index
| tailleTitre = 120%
}} 

|}

----

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;center&gt;'''[[Annonces_de_sécurité|Annonces de sécurité Debian]]'''&lt;/center&gt;
&lt;/div&gt;
&lt;center&gt;
{{#widget:Iframe
|url=http://www.debian.org/security/2012/
|width=800
|height=350
|border=0
}}
&lt;/center&gt;
| valign=&quot;top&quot; style=&quot;width: 45em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;rss number=17&gt;https://www.debian-fr.org/rss/digest/rss.xml&lt;/rss&gt;
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>5gkv38gw95axa5s4udzttb1twit2wcm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4709</id>
      <parentid>4708</parentid>
      <timestamp>2012-11-01T07:16:49Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Nouvelle page d'accueil</comment>
      <text xml:space="preserve" bytes="3071">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

{| cellspacing=5 cellpadding=5 border=0 width=100%
|- style=&quot;background:#e0e0ff; color:black; font-size:18px; -moz-border-radius:8px;&quot;
! width=&quot;75%&quot; colspan=&quot;2&quot; align=&quot;center&quot; | Bienvenue sur le Wiki du [https://www.debian-fr.org forum debian-fr.org]
|-
|valign=middle|
[[Fichier:IPv6_ready.png|75px|left|thumb]]
&lt;center&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://www.debian-fr.org forum debian-fr.org].&lt;br&gt;&lt;br&gt;
{{color|magenta|''' &gt;&gt;&gt;  [http://thank-you.debian.net/#thanks Dites Merci à Debian!!!]  &lt;&lt;&lt;'''}}&lt;br&gt;
{{color|magenta|''' &gt;&gt;&gt;  [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]]  &lt;&lt;&lt;'''}}&lt;br&gt;&lt;br&gt;
'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]&lt;br&gt;
&lt;/center&gt;
|}
|}
----
{{Modèle:Accueil}}

|}

&lt;!-- Autre couleur de background #00CCFF --&gt;
{| cellspacing=5 cellpadding=5 border=0 width=100% 
|- style=&quot;background:#e0e0ff; color:black; font-size:16px; -moz-border-radius:8px;&quot;
! width=&quot;66%&quot; | Utilisation du Wiki !! Dernières nouvelles
|-
|valign=top|


'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].&lt;br&gt;
'''Pour vous inscrire''', rien de plus simple : &gt;&gt; [[Spécial:Connexion|C'est ICI!]] &lt;&lt; Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...&lt;br&gt;
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !&lt;br&gt;

* Si vous n'avez jamais utilisé MediaWiki, vous pourrez trouver plus d'informations ici: [http://meta.wikimedia.org/wiki/Help:MediaWiki_Manual/fr Manuel de MediaWiki] + [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ MediaWiki]
* Ici vous aurez [[Special:Allpages | l'Index de toutes les pages du Wiki ]]
* En tant que membre du projet vous avez droit à une page personnelle [[ Special:Listusers | (accessible depuis votre UserId)]], une fois que vous vous êtes [[Special:Userlogin | loggé]]
&lt;br&gt;
{{color|maroon|'''Commencez par [[Aide:Accueil|&lt;&lt; l'aide &gt;&gt;]] pour apprendre à utiliser le Wiki'''}}

À votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;br&gt;&lt;br&gt;
Amusez vous bien ! ;-)
&lt;br&gt;&lt;br&gt;
{{color|maroon|'''Les dernières annonces de Sécurité Debian:'''}}
{{#widget:Iframe
|url=http://www.debian.org/security/2012/
|width=100%
|height=350
|border=0
}}

| 
{{Modèle:DernièresNouvelles}}
|-
|}
&lt;br&gt;</text>
      <sha1>t4s64xch4uzhueyv1sa7py0g00evn1o</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4721</id>
      <parentid>4709</parentid>
      <timestamp>2012-11-01T11:24:43Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="2970">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

{| cellspacing=5 cellpadding=5 border=0 width=100%
|- style=&quot;background:#e0e0ff; color:black; font-size:18px; -moz-border-radius:8px;&quot;
! width=&quot;75%&quot; colspan=&quot;2&quot; align=&quot;center&quot; | Bienvenue sur le Wiki du [https://www.debian-fr.org forum debian-fr.org]
|-
|valign=middle|
[[Fichier:IPv6_ready.png|75px|left|thumb]]
&lt;center&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].&lt;br&gt;&lt;br&gt;
{{color|magenta|''' &gt;&gt;&gt;  [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]]  &lt;&lt;&lt;'''}}&lt;br&gt;&lt;br&gt;
'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]&lt;br&gt;
&lt;/center&gt;
|}
|}
----
{{Modèle:Accueil}}

|}

&lt;!-- Autre couleur de background #00CCFF --&gt;
{| cellspacing=5 cellpadding=5 border=0 width=100% 
|- style=&quot;background:#e0e0ff; color:black; font-size:16px; -moz-border-radius:8px;&quot;
! width=&quot;66%&quot; | Utilisation du Wiki !! Dernières nouvelles
|-
|valign=top|


'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].&lt;br&gt;
'''Pour vous inscrire''', rien de plus simple : &gt;&gt; [[Spécial:Connexion|C'est ICI!]] &lt;&lt; Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...&lt;br&gt;
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !&lt;br&gt;

* Si vous n'avez jamais utilisé MediaWiki, vous pourrez trouver plus d'informations ici: [http://meta.wikimedia.org/wiki/Help:MediaWiki_Manual/fr Manuel de MediaWiki] + [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ MediaWiki]
* Ici vous aurez [[Special:Allpages | l'Index de toutes les pages du Wiki ]]
* En tant que membre du projet vous avez droit à une page personnelle [[ Special:Listusers | (accessible depuis votre UserId)]], une fois que vous vous êtes [[Special:Userlogin | loggé]]
&lt;br&gt;
{{color|maroon|'''Commencez par [[Aide:Accueil|&lt;&lt; l'aide &gt;&gt;]] pour apprendre à utiliser le Wiki'''}}

À votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;br&gt;&lt;br&gt;
Amusez vous bien ! ;-)
&lt;br&gt;&lt;br&gt;
{{color|maroon|'''Les dernières annonces de Sécurité Debian:'''}}
{{#widget:Iframe
|url=http://www.debian.org/security/2012/
|width=100%
|height=350
|border=0
}}

| 
{{Modèle:DernièresNouvelles}}
|-
|}
&lt;br&gt;</text>
      <sha1>nxsmwfy1pb58hzgmqaxtvh6hf1inwk1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4727</id>
      <parentid>4721</parentid>
      <timestamp>2012-11-07T07:52:22Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2964">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

{| cellspacing=5 cellpadding=5 border=0 width=100%
|- style=&quot;background:#e0e0ff; color:black; font-size:18px; -moz-border-radius:8px;&quot;
! width=&quot;75%&quot; colspan=&quot;2&quot; align=&quot;center&quot; | Bienvenue sur le Wiki du [https://www.debian-fr.org forum debian-fr.org]
|-
|valign=middle|
[[Fichier:IPv6_ready.png|75px|left]]
&lt;center&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].&lt;br&gt;&lt;br&gt;
{{color|magenta|''' &gt;&gt;&gt;  [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]]  &lt;&lt;&lt;'''}}&lt;br&gt;&lt;br&gt;
'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]&lt;br&gt;
&lt;/center&gt;
|}
|}
----
{{Modèle:Accueil}}

|}

&lt;!-- Autre couleur de background #00CCFF --&gt;
{| cellspacing=5 cellpadding=5 border=0 width=100% 
|- style=&quot;background:#e0e0ff; color:black; font-size:16px; -moz-border-radius:8px;&quot;
! width=&quot;66%&quot; | Utilisation du Wiki !! Dernières nouvelles
|-
|valign=top|


'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].&lt;br&gt;
'''Pour vous inscrire''', rien de plus simple : &gt;&gt; [[Spécial:Connexion|C'est ICI!]] &lt;&lt; Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...&lt;br&gt;
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !&lt;br&gt;

* Si vous n'avez jamais utilisé MediaWiki, vous pourrez trouver plus d'informations ici: [http://meta.wikimedia.org/wiki/Help:MediaWiki_Manual/fr Manuel de MediaWiki] + [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ MediaWiki]
* Ici vous aurez [[Special:Allpages | l'Index de toutes les pages du Wiki ]]
* En tant que membre du projet vous avez droit à une page personnelle [[ Special:Listusers | (accessible depuis votre UserId)]], une fois que vous vous êtes [[Special:Userlogin | loggé]]
&lt;br&gt;
{{color|maroon|'''Commencez par [[Aide:Accueil|&lt;&lt; l'aide &gt;&gt;]] pour apprendre à utiliser le Wiki'''}}

À votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;br&gt;&lt;br&gt;
Amusez vous bien ! ;-)
&lt;br&gt;&lt;br&gt;
{{color|maroon|'''Les dernières annonces de Sécurité Debian:'''}}
{{#widget:Iframe
|url=http://www.debian.org/security/2012/
|width=100%
|height=350
|border=0
}}

| 
{{Modèle:DernièresNouvelles}}
|-
|}
&lt;br&gt;</text>
      <sha1>psbd9j4p6hdotopg39vjl4k8mv6ye8y</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4729</id>
      <parentid>4727</parentid>
      <timestamp>2012-11-07T07:55:01Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2960">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

{| cellspacing=5 cellpadding=5 border=0 width=100%
|- style=&quot;background:#e0e0ff; color:black; font-size:18px; -moz-border-radius:8px;&quot;
! width=&quot;75%&quot; colspan=&quot;2&quot; align=&quot;center&quot; | Bienvenue sur le Wiki du [https://www.debian-fr.org forum debian-fr.org]
|-
|valign=middle|
[[Fichier:IPv6_ready.png|75px|left]]
&lt;center&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].&lt;br&gt;&lt;br&gt;
{{color|magenta|''' &gt;&gt;&gt;  [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]]  &lt;&lt;&lt;'''}}&lt;br&gt;&lt;br&gt;
'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]&lt;br&gt;
&lt;/center&gt;
|}
|}

{{Modèle:Accueil}}

|}

&lt;!-- Autre couleur de background #00CCFF --&gt;
{| cellspacing=5 cellpadding=5 border=0 width=100% 
|- style=&quot;background:#e0e0ff; color:black; font-size:16px; -moz-border-radius:8px;&quot;
! width=&quot;66%&quot; | Utilisation du Wiki !! Dernières nouvelles
|-
|valign=top|


'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].&lt;br&gt;
'''Pour vous inscrire''', rien de plus simple : &gt;&gt; [[Spécial:Connexion|C'est ICI!]] &lt;&lt; Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...&lt;br&gt;
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !&lt;br&gt;

* Si vous n'avez jamais utilisé MediaWiki, vous pourrez trouver plus d'informations ici: [http://meta.wikimedia.org/wiki/Help:MediaWiki_Manual/fr Manuel de MediaWiki] + [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ MediaWiki]
* Ici vous aurez [[Special:Allpages | l'Index de toutes les pages du Wiki ]]
* En tant que membre du projet vous avez droit à une page personnelle [[ Special:Listusers | (accessible depuis votre UserId)]], une fois que vous vous êtes [[Special:Userlogin | loggé]]
&lt;br&gt;
{{color|maroon|'''Commencez par [[Aide:Accueil|&lt;&lt; l'aide &gt;&gt;]] pour apprendre à utiliser le Wiki'''}}

À votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;br&gt;&lt;br&gt;
Amusez vous bien ! ;-)
&lt;br&gt;&lt;br&gt;
{{color|maroon|'''Les dernières annonces de Sécurité Debian:'''}}
{{#widget:Iframe
|url=http://www.debian.org/security/2012/
|width=100%
|height=350
|border=0
}}

| 
{{Modèle:DernièresNouvelles}}
|-
|}
&lt;br&gt;</text>
      <sha1>585swcih1nqmojfhmxk7relk8nhmw67</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4972</id>
      <parentid>4729</parentid>
      <timestamp>2013-02-13T05:13:54Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Sécurité 2013...</comment>
      <text xml:space="preserve" bytes="2960">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

{| cellspacing=5 cellpadding=5 border=0 width=100%
|- style=&quot;background:#e0e0ff; color:black; font-size:18px; -moz-border-radius:8px;&quot;
! width=&quot;75%&quot; colspan=&quot;2&quot; align=&quot;center&quot; | Bienvenue sur le Wiki du [https://www.debian-fr.org forum debian-fr.org]
|-
|valign=middle|
[[Fichier:IPv6_ready.png|75px|left]]
&lt;center&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].&lt;br&gt;&lt;br&gt;
{{color|magenta|''' &gt;&gt;&gt;  [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]]  &lt;&lt;&lt;'''}}&lt;br&gt;&lt;br&gt;
'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]&lt;br&gt;
&lt;/center&gt;
|}
|}

{{Modèle:Accueil}}

|}

&lt;!-- Autre couleur de background #00CCFF --&gt;
{| cellspacing=5 cellpadding=5 border=0 width=100% 
|- style=&quot;background:#e0e0ff; color:black; font-size:16px; -moz-border-radius:8px;&quot;
! width=&quot;66%&quot; | Utilisation du Wiki !! Dernières nouvelles
|-
|valign=top|


'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].&lt;br&gt;
'''Pour vous inscrire''', rien de plus simple : &gt;&gt; [[Spécial:Connexion|C'est ICI!]] &lt;&lt; Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...&lt;br&gt;
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !&lt;br&gt;

* Si vous n'avez jamais utilisé MediaWiki, vous pourrez trouver plus d'informations ici: [http://meta.wikimedia.org/wiki/Help:MediaWiki_Manual/fr Manuel de MediaWiki] + [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ MediaWiki]
* Ici vous aurez [[Special:Allpages | l'Index de toutes les pages du Wiki ]]
* En tant que membre du projet vous avez droit à une page personnelle [[ Special:Listusers | (accessible depuis votre UserId)]], une fois que vous vous êtes [[Special:Userlogin | loggé]]
&lt;br&gt;
{{color|maroon|'''Commencez par [[Aide:Accueil|&lt;&lt; l'aide &gt;&gt;]] pour apprendre à utiliser le Wiki'''}}

À votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;br&gt;&lt;br&gt;
Amusez vous bien ! ;-)
&lt;br&gt;&lt;br&gt;
{{color|maroon|'''Les dernières annonces de Sécurité Debian:'''}}
{{#widget:Iframe
|url=http://www.debian.org/security/2013/
|width=100%
|height=350
|border=0
}}

| 
{{Modèle:DernièresNouvelles}}
|-
|}
&lt;br&gt;</text>
      <sha1>sze9po5mbhecth5j0q28fiy36pdi6dh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5133</id>
      <parentid>4972</parentid>
      <timestamp>2013-05-07T14:47:15Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Publication de Wheezy</comment>
      <text xml:space="preserve" bytes="2958">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

{| cellspacing=5 cellpadding=5 border=0 width=100%
|- style=&quot;background:#e0e0ff; color:black; font-size:18px; -moz-border-radius:8px;&quot;
! width=&quot;75%&quot; colspan=&quot;2&quot; align=&quot;center&quot; | Bienvenue sur le Wiki du [https://www.debian-fr.org forum debian-fr.org]
|-
|valign=middle|
[[Fichier:IPv6_ready.png|75px|left]]
&lt;center&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].&lt;br&gt;&lt;br&gt;
{{color|magenta|''' &gt;&gt;&gt;  [[Publication_de_Debian_7.0_&quot;Wheezy&quot;|Publication_de_Debian_7.0_&quot;Wheezy&quot;]]  &lt;&lt;&lt;'''}}&lt;br&gt;&lt;br&gt;
'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]&lt;br&gt;
&lt;/center&gt;
|}
|}

{{Modèle:Accueil}}

|}

&lt;!-- Autre couleur de background #00CCFF --&gt;
{| cellspacing=5 cellpadding=5 border=0 width=100% 
|- style=&quot;background:#e0e0ff; color:black; font-size:16px; -moz-border-radius:8px;&quot;
! width=&quot;66%&quot; | Utilisation du Wiki !! Dernières nouvelles
|-
|valign=top|


'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].&lt;br&gt;
'''Pour vous inscrire''', rien de plus simple : &gt;&gt; [[Spécial:Connexion|C'est ICI!]] &lt;&lt; Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...&lt;br&gt;
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !&lt;br&gt;

* Si vous n'avez jamais utilisé MediaWiki, vous pourrez trouver plus d'informations ici: [http://meta.wikimedia.org/wiki/Help:MediaWiki_Manual/fr Manuel de MediaWiki] + [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ MediaWiki]
* Ici vous aurez [[Special:Allpages | l'Index de toutes les pages du Wiki ]]
* En tant que membre du projet vous avez droit à une page personnelle [[ Special:Listusers | (accessible depuis votre UserId)]], une fois que vous vous êtes [[Special:Userlogin | loggé]]
&lt;br&gt;
{{color|maroon|'''Commencez par [[Aide:Accueil|&lt;&lt; l'aide &gt;&gt;]] pour apprendre à utiliser le Wiki'''}}

À votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;br&gt;&lt;br&gt;
Amusez vous bien ! ;-)
&lt;br&gt;&lt;br&gt;
{{color|maroon|'''Les dernières annonces de Sécurité Debian:'''}}
{{#widget:Iframe
|url=http://www.debian.org/security/2013/
|width=100%
|height=350
|border=0
}}

| 
{{Modèle:DernièresNouvelles}}
|-
|}
&lt;br&gt;</text>
      <sha1>t6xjcny8zfuofclxavwqjfjp4949lww</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5603</id>
      <parentid>5133</parentid>
      <timestamp>2014-04-26T10:05:44Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2958">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

{| cellspacing=5 cellpadding=5 border=0 width=100%
|- style=&quot;background:#e0e0ff; color:black; font-size:18px; -moz-border-radius:8px;&quot;
! width=&quot;75%&quot; colspan=&quot;2&quot; align=&quot;center&quot; | Bienvenue sur le Wiki du [https://www.debian-fr.org forum debian-fr.org]
|-
|valign=middle|
[[Fichier:IPv6_ready.png|75px|left]]
&lt;center&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].&lt;br&gt;&lt;br&gt;
{{color|magenta|''' &gt;&gt;&gt;  [[Publication_de_Debian_7.0_&quot;Wheezy&quot;|Publication_de_Debian_7.0_&quot;Wheezy&quot;]]  &lt;&lt;&lt;'''}}&lt;br&gt;&lt;br&gt;
'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]&lt;br&gt;
&lt;/center&gt;
|}
|}

{{Modèle:Accueil}}

|}

&lt;!-- Autre couleur de background #00CCFF --&gt;
{| cellspacing=5 cellpadding=5 border=0 width=100% 
|- style=&quot;background:#e0e0ff; color:black; font-size:16px; -moz-border-radius:8px;&quot;
! width=&quot;66%&quot; | Utilisation du Wiki !! Dernières nouvelles
|-
|valign=top|


'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].&lt;br&gt;
'''Pour vous inscrire''', rien de plus simple : &gt;&gt; [[Spécial:Connexion|C'est ICI!]] &lt;&lt; Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...&lt;br&gt;
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !&lt;br&gt;

* Si vous n'avez jamais utilisé MediaWiki, vous pourrez trouver plus d'informations ici: [http://meta.wikimedia.org/wiki/Help:MediaWiki_Manual/fr Manuel de MediaWiki] + [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ MediaWiki]
* Ici vous aurez [[Special:Allpages | l'Index de toutes les pages du Wiki ]]
* En tant que membre du projet vous avez droit à une page personnelle [[ Special:Listusers | (accessible depuis votre UserId)]], une fois que vous vous êtes [[Special:Userlogin | loggé]]
&lt;br&gt;
{{color|maroon|'''Commencez par [[Aide:Accueil|&lt;&lt; l'aide &gt;&gt;]] pour apprendre à utiliser le Wiki'''}}

À votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;br&gt;&lt;br&gt;
Amusez vous bien ! ;-)
&lt;br&gt;&lt;br&gt;
{{color|maroon|'''Les dernières annonces de Sécurité Debian:'''}}
{{#widget:Iframe
|url=http://www.debian.org/security/2014/
|width=100%
|height=350
|border=0
}}

| 
{{Modèle:DernièresNouvelles}}
|-
|}
&lt;br&gt;</text>
      <sha1>qb660heluzek4wcvb8j6lmzc91n5lzu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5608</id>
      <parentid>5603</parentid>
      <timestamp>2014-05-01T16:27:14Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="2959">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

{| cellspacing=5 cellpadding=5 border=0 width=100%
|- style=&quot;background:#e0e0ff; color:black; font-size:18px; -moz-border-radius:8px;&quot;
! width=&quot;75%&quot; colspan=&quot;2&quot; align=&quot;center&quot; | Bienvenue sur le Wiki du [https://www.debian-fr.org forum debian-fr.org]
|-
|valign=middle|
[[Fichier:IPv6_ready.png|75px|left]]
&lt;center&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].&lt;br&gt;&lt;br&gt;
{{color|magenta|''' &gt;&gt;&gt;  [[Publication_de_Debian_7.0_&quot;Wheezy&quot;|Publication_de_Debian_7.0_&quot;Wheezy&quot;]]  &lt;&lt;&lt;'''}}&lt;br&gt;&lt;br&gt;
'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]&lt;br&gt;
&lt;/center&gt;
|}
|}

{{Modèle:Accueil}}

|}

&lt;!-- Autre couleur de background #00CCFF --&gt;
{| cellspacing=5 cellpadding=5 border=0 width=100% 
|- style=&quot;background:#e0e0ff; color:black; font-size:16px; -moz-border-radius:8px;&quot;
! width=&quot;66%&quot; | Utilisation du Wiki !! Dernières nouvelles
|-
|valign=top|


'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].&lt;br&gt;
'''Pour vous inscrire''', rien de plus simple : &gt;&gt; [[Spécial:Connexion|C'est ICI!]] &lt;&lt; Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...&lt;br&gt;
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !&lt;br&gt;

* Si vous n'avez jamais utilisé MediaWiki, vous pourrez trouver plus d'informations ici: [http://meta.wikimedia.org/wiki/Help:MediaWiki_Manual/fr Manuel de MediaWiki] + [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ MediaWiki]
* Ici vous aurez [[Special:Allpages | l'Index de toutes les pages du Wiki ]]
* En tant que membre du projet vous avez droit à une page personnelle [[ Special:Listusers | (accessible depuis votre UserId)]], une fois que vous vous êtes [[Special:Userlogin | loggé]]
&lt;br&gt;
{{color|maroon|'''Commencez par [[Aide:Accueil|&lt;&lt; l'aide &gt;&gt;]] pour apprendre à utiliser le Wiki'''}}

À votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;br&gt;&lt;br&gt;
Amusez vous bien ! ;-)
&lt;br&gt;&lt;br&gt;
{{color|maroon|'''Les dernières annonces de Sécurité Debian:'''}}
{{#widget:Iframe
|url=https://www.debian.org/security/2014/
|width=100%
|height=350
|border=0
}}

| 
{{Modèle:DernièresNouvelles}}
|-
|}
&lt;br&gt;</text>
      <sha1>27o9as2boknm0oiocct7qunrlvinj9t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5609</id>
      <parentid>5608</parentid>
      <timestamp>2014-05-02T04:19:56Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="2962">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

{| cellspacing=5 cellpadding=5 border=0 width=100%
|- style=&quot;background:#e0e0ff; color:black; font-size:18px; -moz-border-radius:8px;&quot;
! width=&quot;75%&quot; colspan=&quot;2&quot; align=&quot;center&quot; | Bienvenue sur le Wiki du [https://www.debian-fr.org forum debian-fr.org]
|-
|valign=middle|
[[Fichier:IPv6_ready.png|75px|left]]
&lt;center&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].&lt;br&gt;&lt;br&gt;
{{color|magenta|''' &gt;&gt;&gt;  [[Publication_de_Debian_7.0_&quot;Wheezy&quot;|Publication_de_Debian_7.0_&quot;Wheezy&quot;]]  &lt;&lt;&lt;'''}}&lt;br&gt;&lt;br&gt;
'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]&lt;br&gt;
&lt;/center&gt;
|}
|}

{{Modèle:Accueil}}

|}

&lt;!-- Autre couleur de background #00CCFF --&gt;
{| cellspacing=5 cellpadding=5 border=0 width=100% 
|- style=&quot;background:#e0e0ff; color:black; font-size:16px; -moz-border-radius:8px;&quot;
! width=&quot;66%&quot; | Utilisation du Wiki !! Dernières nouvelles
|-
|valign=top|


'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].&lt;br&gt;
'''Pour vous inscrire''', rien de plus simple : &gt;&gt; [[Spécial:Connexion|C'est ICI!]] &lt;&lt; Choisissez de préférence le même pseudo que celui que vous utilisez sur [https://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...&lt;br&gt;
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !&lt;br&gt;

* Si vous n'avez jamais utilisé MediaWiki, vous pourrez trouver plus d'informations ici: [https://meta.wikimedia.org/wiki/Help:MediaWiki_Manual/fr Manuel de MediaWiki] + [https://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ MediaWiki]
* Ici vous aurez [[Special:Allpages | l'Index de toutes les pages du Wiki ]]
* En tant que membre du projet vous avez droit à une page personnelle [[ Special:Listusers | (accessible depuis votre UserId)]], une fois que vous vous êtes [[Special:Userlogin | loggé]]
&lt;br&gt;
{{color|maroon|'''Commencez par [[Aide:Accueil|&lt;&lt; l'aide &gt;&gt;]] pour apprendre à utiliser le Wiki'''}}

À votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;br&gt;&lt;br&gt;
Amusez vous bien ! ;-)
&lt;br&gt;&lt;br&gt;
{{color|maroon|'''Les dernières annonces de Sécurité Debian:'''}}
{{#widget:Iframe
|url=https://www.debian.org/security/2014/
|width=100%
|height=350
|border=0
}}

| 
{{Modèle:DernièresNouvelles}}
|-
|}
&lt;br&gt;</text>
      <sha1>n7bnpx7mi2edod2hvxscsvymunbzur2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5620</id>
      <parentid>5609</parentid>
      <timestamp>2014-06-01T14:25:58Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="2966">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

{| cellspacing=5 cellpadding=5 border=0 width=100%
|- style=&quot;background:#e0e0ff; color:black; font-size:18px; -moz-border-radius:8px;&quot;
! width=&quot;75%&quot; colspan=&quot;2&quot; align=&quot;center&quot; | Bienvenue sur le Wiki du [https://www.debian-fr.org forum debian-fr.org]
|-
|valign=middle|
[[Fichier:IPv6_ready.png|75px|left]]
&lt;center&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].&lt;br&gt;&lt;br&gt;
{{color|magenta|''' &gt;&gt;&gt;  [[Publication_de_Debian_7.0_&quot;Wheezy&quot;|Publication_de_Debian_7.0_&quot;Wheezy&quot;]]  &lt;&lt;&lt;'''}}&lt;br&gt;&lt;br&gt;
'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]&lt;br&gt;
&lt;/center&gt;
|}
|}

{{Modèle:Accueil}}

|}

&lt;!-- Autre couleur de background #00CCFF --&gt;
{| cellspacing=5 cellpadding=5 border=0 width=100% 
|- style=&quot;background:#e0e0ff; color:black; font-size:16px; -moz-border-radius:8px;&quot;
! width=&quot;66%&quot; | Utilisation du Wiki !! Dernières nouvelles
|-
|valign=top|


'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].&lt;br&gt;
'''Pour vous inscrire''', rien de plus simple : &gt;&gt; [[Spécial:Connexion|C'est ICI!]] &lt;&lt; Choisissez de préférence le même pseudo que celui que vous utilisez sur [https://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...&lt;br&gt;
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !&lt;br&gt;

* Si vous n'avez jamais utilisé MediaWiki, vous pourrez trouver plus d'informations ici: [https://meta.wikimedia.org/wiki/Help:MediaWiki_Manual/fr Manuel de MediaWiki] + [https://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ MediaWiki]
* Ici vous aurez [[Special:Allpages | l'Index de toutes les pages du Wiki ]]
* En tant que membre du projet vous avez droit à une page personnelle [[ Special:Listusers | (accessible depuis votre UserId)]], une fois que vous vous êtes [[Special:Userlogin | loggé]]
&lt;br&gt;
{{color|maroon|'''Commencez par [[Aide:Accueil|&lt;&lt; l'aide &gt;&gt;]] pour apprendre à utiliser le Wiki'''}}

À votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;br&gt;&lt;br&gt;
Amusez vous bien ! ;-)
&lt;br&gt;&lt;br&gt;
{{color|maroon|'''Les dernières annonces de Sécurité Debian:'''}}
{{#widget:Iframe
|url=https://www.debian.org/security/2014/
|width=100%
|height=350
|border=0
}}

| 
{{Modèle:DernièresNouvelles}}
|-
|}
&lt;br&gt;
---</text>
      <sha1>lurpi29cgs8q3cb4bcyp6qhnky7dujb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5621</id>
      <parentid>5620</parentid>
      <timestamp>2014-06-01T14:26:20Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="2967">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

{| cellspacing=5 cellpadding=5 border=0 width=100%
|- style=&quot;background:#e0e0ff; color:black; font-size:18px; -moz-border-radius:8px;&quot;
! width=&quot;75%&quot; colspan=&quot;2&quot; align=&quot;center&quot; | Bienvenue sur le Wiki du [https://www.debian-fr.org forum debian-fr.org]
|-
|valign=middle|
[[Fichier:IPv6_ready.png|75px|left]]
&lt;center&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].&lt;br&gt;&lt;br&gt;
{{color|magenta|''' &gt;&gt;&gt;  [[Publication_de_Debian_7.0_&quot;Wheezy&quot;|Publication_de_Debian_7.0_&quot;Wheezy&quot;]]  &lt;&lt;&lt;'''}}&lt;br&gt;&lt;br&gt;
'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]&lt;br&gt;
&lt;/center&gt;
|}
|}

{{Modèle:Accueil}}

|}

&lt;!-- Autre couleur de background #00CCFF --&gt;
{| cellspacing=5 cellpadding=5 border=0 width=100% 
|- style=&quot;background:#e0e0ff; color:black; font-size:16px; -moz-border-radius:8px;&quot;
! width=&quot;66%&quot; | Utilisation du Wiki !! Dernières nouvelles
|-
|valign=top|


'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].&lt;br&gt;
'''Pour vous inscrire''', rien de plus simple : &gt;&gt; [[Spécial:Connexion|C'est ICI!]] &lt;&lt; Choisissez de préférence le même pseudo que celui que vous utilisez sur [https://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...&lt;br&gt;
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !&lt;br&gt;

* Si vous n'avez jamais utilisé MediaWiki, vous pourrez trouver plus d'informations ici: [https://meta.wikimedia.org/wiki/Help:MediaWiki_Manual/fr Manuel de MediaWiki] + [https://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ MediaWiki]
* Ici vous aurez [[Special:Allpages | l'Index de toutes les pages du Wiki ]]
* En tant que membre du projet vous avez droit à une page personnelle [[ Special:Listusers | (accessible depuis votre UserId)]], une fois que vous vous êtes [[Special:Userlogin | loggé]]
&lt;br&gt;
{{color|maroon|'''Commencez par [[Aide:Accueil|&lt;&lt; l'aide &gt;&gt;]] pour apprendre à utiliser le Wiki'''}}

À votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;br&gt;&lt;br&gt;
Amusez vous bien ! ;-)
&lt;br&gt;&lt;br&gt;
{{color|maroon|'''Les dernières annonces de Sécurité Debian:'''}}
{{#widget:Iframe
|url=https://www.debian.org/security/2014/
|width=100%
|height=350
|border=0
}}

| 
{{Modèle:DernièresNouvelles}}
|-
|}
&lt;br&gt;
----</text>
      <sha1>2q6zizrizycmcq25nctl45ntn5uuvrt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5622</id>
      <parentid>5621</parentid>
      <timestamp>2014-06-01T14:39:40Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="2962">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

{| cellspacing=5 cellpadding=5 border=0 width=100%
|- style=&quot;background:#e0e0ff; color:black; font-size:18px; -moz-border-radius:8px;&quot;
! width=&quot;75%&quot; colspan=&quot;2&quot; align=&quot;center&quot; | Bienvenue sur le Wiki du [https://www.debian-fr.org forum debian-fr.org]
|-
|valign=middle|
[[Fichier:IPv6_ready.png|75px|left]]
&lt;center&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].&lt;br&gt;&lt;br&gt;
{{color|magenta|''' &gt;&gt;&gt;  [[Publication_de_Debian_7.0_&quot;Wheezy&quot;|Publication_de_Debian_7.0_&quot;Wheezy&quot;]]  &lt;&lt;&lt;'''}}&lt;br&gt;&lt;br&gt;
'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]&lt;br&gt;
&lt;/center&gt;
|}
|}

{{Modèle:Accueil}}

|}

&lt;!-- Autre couleur de background #00CCFF --&gt;
{| cellspacing=5 cellpadding=5 border=0 width=100% 
|- style=&quot;background:#e0e0ff; color:black; font-size:16px; -moz-border-radius:8px;&quot;
! width=&quot;66%&quot; | Utilisation du Wiki !! Dernières nouvelles
|-
|valign=top|


'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].&lt;br&gt;
'''Pour vous inscrire''', rien de plus simple : &gt;&gt; [[Spécial:Connexion|C'est ICI!]] &lt;&lt; Choisissez de préférence le même pseudo que celui que vous utilisez sur [https://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...&lt;br&gt;
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !&lt;br&gt;

* Si vous n'avez jamais utilisé MediaWiki, vous pourrez trouver plus d'informations ici: [https://meta.wikimedia.org/wiki/Help:MediaWiki_Manual/fr Manuel de MediaWiki] + [https://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ MediaWiki]
* Ici vous aurez [[Special:Allpages | l'Index de toutes les pages du Wiki ]]
* En tant que membre du projet vous avez droit à une page personnelle [[ Special:Listusers | (accessible depuis votre UserId)]], une fois que vous vous êtes [[Special:Userlogin | loggé]]
&lt;br&gt;
{{color|maroon|'''Commencez par [[Aide:Accueil|&lt;&lt; l'aide &gt;&gt;]] pour apprendre à utiliser le Wiki'''}}

À votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;br&gt;&lt;br&gt;
Amusez vous bien ! ;-)
&lt;br&gt;&lt;br&gt;
{{color|maroon|'''Les dernières annonces de Sécurité Debian:'''}}
{{#widget:Iframe
|url=https://www.debian.org/security/2014/
|width=100%
|height=350
|border=0
}}

| 
{{Modèle:DernièresNouvelles}}
|-
|}
&lt;br&gt;</text>
      <sha1>n7bnpx7mi2edod2hvxscsvymunbzur2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5875</id>
      <parentid>5622</parentid>
      <timestamp>2014-10-12T14:57:26Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="2963">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

{| cellspacing=5 cellpadding=5 border=0 width=100%
|- style=&quot;background:#e0e0ff; color:black; font-size:18px; -moz-border-radius:8px;&quot;
! width=&quot;75%&quot; colspan=&quot;2&quot; align=&quot;center&quot; | Bienvenue sur le Wiki du [https://www.debian-fr.org forum debian-fr.org]
|-
|valign=middle|
[[Fichier:IPv6_ready.png|75px|left]]
&lt;center&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].&lt;br&gt;&lt;br&gt;
{{color|magenta|''' &gt;&gt;&gt;  [[Publication_de_Debian_7.0_&quot;Wheezy&quot;|Publication_de_Debian_7.0_&quot;Wheezy&quot;]]  &lt;&lt;&lt;'''}}&lt;br&gt;&lt;br&gt;
'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]&lt;br&gt;
&lt;/center&gt;
|}
|}

{{Modèle:Accueil}}

|}

&lt;!-- Autre couleur de background #00CCFF --&gt;
{| cellspacing=5 cellpadding=5 border=0 width=100% 
|- style=&quot;background:#e0e0ff; color:black; font-size:16px; -moz-border-radius:8px;&quot;
! width=&quot;66%&quot; | Utilisation du Wiki !! Dernières nouvelles
|-
|valign=top|


'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].&lt;br&gt;
'''Pour vous inscrire''', rien de plus simple : &gt;&gt; [[Spécial:Connexion|C'est ICI!]] &lt;&lt; Choisissez de préférence le même pseudo que celui que vous utilisez sur [https://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...&lt;br&gt;
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !&lt;br&gt;

* Si vous n'avez jamais utilisé MediaWiki, vous pourrez trouver plus d'informations ici: [https://meta.wikimedia.org/wiki/Help:MediaWiki_Manual/fr Manuel de MediaWiki] + [https://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ MediaWiki]
* Ici vous aurez [[Special:Allpages | l'Index de toutes les pages du Wiki ]]
* En tant que membre du projet vous avez droit à une page personnelle [[ Special:Listusers | (accessible depuis votre UserId)]], une fois que vous vous êtes [[Special:Userlogin | loggé]]
&lt;br&gt;
{{color|maroon|'''Commencez par [[Aide:Accueil|&lt;&lt; l'aide &gt;&gt;]] pour apprendre à utiliser le Wiki'''}}

À votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;br&gt;&lt;br&gt;
Amusez vous bien ! ;-)
&lt;br&gt;&lt;br&gt;
{{color|maroon|'''Les dernières annonces de Sécurité Debian:'''}}

{{#widget:Iframe
|url=https://www.debian.org/security/2014/
|width=100%
|height=350
|border=0
}}

| 
{{Modèle:DernièresNouvelles}}
|-
|}
&lt;br&gt;</text>
      <sha1>seqnzsrhyqqrtmxno39atjq1uv3sg5k</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5876</id>
      <parentid>5875</parentid>
      <timestamp>2014-10-12T15:47:32Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <text xml:space="preserve" bytes="2980">&lt;googlePlusOne/&gt;
{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

{| cellspacing=5 cellpadding=5 border=0 width=100%
|- style=&quot;background:#e0e0ff; color:black; font-size:18px; -moz-border-radius:8px;&quot;
! width=&quot;75%&quot; colspan=&quot;2&quot; align=&quot;center&quot; | Bienvenue sur le Wiki du [https://www.debian-fr.org forum debian-fr.org]
|-
|valign=middle|
[[Fichier:IPv6_ready.png|75px|left]]
&lt;center&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].&lt;br&gt;&lt;br&gt;
{{color|magenta|''' &gt;&gt;&gt;  [[Publication_de_Debian_7.0_&quot;Wheezy&quot;|Publication_de_Debian_7.0_&quot;Wheezy&quot;]]  &lt;&lt;&lt;'''}}&lt;br&gt;&lt;br&gt;
'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]&lt;br&gt;
&lt;/center&gt;
|}
|}

{{Modèle:Accueil}}

|}

&lt;!-- Autre couleur de background #00CCFF --&gt;
{| cellspacing=5 cellpadding=5 border=0 width=100% 
|- style=&quot;background:#e0e0ff; color:black; font-size:16px; -moz-border-radius:8px;&quot;
! width=&quot;66%&quot; | Utilisation du Wiki !! Dernières nouvelles
|-
|valign=top|


'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].&lt;br&gt;
'''Pour vous inscrire''', rien de plus simple : &gt;&gt; [[Spécial:Connexion|C'est ICI!]] &lt;&lt; Choisissez de préférence le même pseudo que celui que vous utilisez sur [https://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...&lt;br&gt;
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !&lt;br&gt;

* Si vous n'avez jamais utilisé MediaWiki, vous pourrez trouver plus d'informations ici: [https://meta.wikimedia.org/wiki/Help:MediaWiki_Manual/fr Manuel de MediaWiki] + [https://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ MediaWiki]
* Ici vous aurez [[Special:Allpages | l'Index de toutes les pages du Wiki ]]
* En tant que membre du projet vous avez droit à une page personnelle [[ Special:Listusers | (accessible depuis votre UserId)]], une fois que vous vous êtes [[Special:Userlogin | loggé]]
&lt;br&gt;
{{color|maroon|'''Commencez par [[Aide:Accueil|&lt;&lt; l'aide &gt;&gt;]] pour apprendre à utiliser le Wiki'''}}

À votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;br&gt;&lt;br&gt;
Amusez vous bien ! ;-)
&lt;br&gt;&lt;br&gt;
{{color|maroon|'''Les dernières annonces de Sécurité Debian:'''}}

{{#widget:Iframe
|url=https://www.debian.org/security/2014/
|width=100%
|height=350
|border=0
}}

| 
{{Modèle:DernièresNouvelles}}
|-
|}
&lt;br&gt;</text>
      <sha1>dpzonsh2vbjcg0204bk7a3u3nuavx53</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Accueil 2</title>
    <ns>0</ns>
    <id>1109</id>
    <revision>
      <id>4572</id>
      <timestamp>2012-10-28T12:10:38Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « {{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}} {{Template: Social}} {| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot; | class=&quot;MainPageBG... »</comment>
      <text xml:space="preserve" bytes="4343">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;float:left;&quot;&gt;{{#icon: 301px-Orange Icon Wiki.svg.png|Forum|24|http://www.isalo.org/wiki.debian-fr/}}&lt;/span&gt;
&lt;span style=&quot;color:#ffffff; float:left; font-size:100%;&quot;&gt;''' Wiki'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; float:right; font-size:100%;&quot;&gt;'''Forum '''&lt;/span&gt;&lt;span style=&quot;float:right;&quot;&gt;{{#icon: Forum-groupe-utilisateurs-icone-4597-128.png|Forum|24|http://www.debian-fr.org/}}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;

[[Fichier:IPv6_ready.png|75px|left|thumb]]

'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://www.debian-fr.org forum debian-fr.org].

'''Bienvenue''' sur le wiki du [http://www.debian-fr.org forum debian-fr.org].&lt;br/&gt;

{{color|magenta|''' &gt;&gt;&gt; [http://thank-you.debian.net/#thanks Dites Merci à Debian!!!] &lt;&lt;&lt;'''}}

{{color|magenta|''' &gt;&gt;&gt; [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]] &lt;&lt;&lt;'''}}

{{color|darkmagenta|'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]}}

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}

À votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
|}
----
{| cellspacing=5 cellpadding=5 border=0 width=100%
|{{IconLink|Installation|Installation|Installation.png|#e0e0ff}}
|{{IconLink|Logiciels|Les logiciels|Logiciel.png|}}
|{{IconLink|Reseau_et_Wifi|Réseau et Wifi|internet.png|}}
|-
|{{IconLink|Noyau_(Kernel)|Le noyau|Linux.jpg|}}
|{{IconLink|Les_Trucs_et_astuces|Les Trucs &amp; Astuces|T%26A.jpg|}}
|{{IconLink|Materiel_et_Pilotes|Le matériel et les pilotes|Hardware2.png}}
|-
|{{IconLink|Commandes|Les commandes|Commandes.png|}}
|{{IconLink|Programmation|La programmation, les scripts...|Programmation.png|}}
|{{IconLink|Securite|Sécurité !|Securite.png|}}
|-
|{{IconLink|Divers|divers|Divers.jpg|}}
|{{IconLink|Documentation_externe|Documentation externe !|Doc.png|}}
|}
----
&lt;!-- Autre couleur de background #00CCFF --&gt;
{| cellspacing=5 cellpadding=5 border=0 width=100% 
|- style=&quot;background:#e0e0ff; color:black; font-size:16px; -moz-border-radius:8px;&quot;
! width=&quot;66%&quot; | Utilisation du Wiki !! Dernières nouvelles
|-
|valign=top|

* Si vous n'avez jamais utilisé MediaWiki, vous pourrez trouver plus d'informations ici: [http://meta.wikimedia.org/wiki/Aide:Contenu Guide d'utilisation] + [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ MediaWiki]
* Ici vous aurez [[Special:Allpages | l'Index de toutes les pages du Wiki ]]
* En tant que membre du projet vous avez droit à une page personnelle [[ Special:Listusers | (accessible depuis votre UserId)]], une fois que vous vous êtes [[Special:Userlogin | loggé]]
&lt;br&gt;
Amusez vous bien ! ;-)
&lt;br&gt;&lt;br&gt;
| 
{{DernièresNouvelles}}
|-
|}
&lt;br&gt;</text>
      <sha1>7y6jwgy4ywx0gaotx9xdujeeg8w7l5g</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4573</id>
      <parentid>4572</parentid>
      <timestamp>2012-10-28T12:13:07Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="5241">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;float:left;&quot;&gt;{{#icon: 301px-Orange Icon Wiki.svg.png|Forum|24|http://www.isalo.org/wiki.debian-fr/}}&lt;/span&gt;
&lt;span style=&quot;color:#ffffff; float:left; font-size:100%;&quot;&gt;''' Wiki'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; float:right; font-size:100%;&quot;&gt;'''Forum '''&lt;/span&gt;&lt;span style=&quot;float:right;&quot;&gt;{{#icon: Forum-groupe-utilisateurs-icone-4597-128.png|Forum|24|http://www.debian-fr.org/}}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;

[[Fichier:IPv6_ready.png|75px|left|thumb]]

'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://www.debian-fr.org forum debian-fr.org].

'''Bienvenue''' sur le wiki du [http://www.debian-fr.org forum debian-fr.org].&lt;br/&gt;

{{color|magenta|''' &gt;&gt;&gt; [http://thank-you.debian.net/#thanks Dites Merci à Debian!!!] &lt;&lt;&lt;'''}}

{{color|magenta|''' &gt;&gt;&gt; [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]] &lt;&lt;&lt;'''}}

{{color|darkmagenta|'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]}}

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}

À votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
|}
----
{| cellspacing=5 cellpadding=5 border=0 width=100%
|{{IconLink|Installation|Installation|Installation.png|#e0e0ff}}
|{{IconLink|Logiciels|Les logiciels|Logiciel.png|}}
|{{IconLink|Reseau_et_Wifi|Réseau et Wifi|internet.png|}}
|-
|{{IconLink|Noyau_(Kernel)|Le noyau|Linux.jpg|}}
|{{IconLink|Les_Trucs_et_astuces|Les Trucs &amp; Astuces|T%26A.jpg|}}
|{{IconLink|Materiel_et_Pilotes|Le matériel et les pilotes|Hardware2.png}}
|-
|{{IconLink|Commandes|Les commandes|Commandes.png|}}
|{{IconLink|Programmation|La programmation, les scripts...|Programmation.png|}}
|{{IconLink|Securite|Sécurité !|Securite.png|}}
|-
|{{IconLink|Divers|divers|Divers.jpg|}}
|{{IconLink|Documentation_externe|Documentation externe !|Doc.png|}}
|}
----
&lt;!-- Autre couleur de background #00CCFF --&gt;
{| cellspacing=5 cellpadding=5 border=0 width=100% 
|- style=&quot;background:#e0e0ff; color:black; font-size:16px; -moz-border-radius:8px;&quot;
! width=&quot;66%&quot; | Utilisation du Wiki !! Dernières nouvelles
|-
|valign=top|

* Si vous n'avez jamais utilisé MediaWiki, vous pourrez trouver plus d'informations ici: [http://meta.wikimedia.org/wiki/Aide:Contenu Guide d'utilisation] + [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ MediaWiki]
* Ici vous aurez [[Special:Allpages | l'Index de toutes les pages du Wiki ]]
* En tant que membre du projet vous avez droit à une page personnelle [[ Special:Listusers | (accessible depuis votre UserId)]], une fois que vous vous êtes [[Special:Userlogin | loggé]]
&lt;br&gt;
Amusez vous bien ! ;-)
&lt;br&gt;&lt;br&gt;
| 
{{DernièresNouvelles}}
|-
|}
&lt;br&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;center&gt;'''[[Annonces_de_sécurité|Annonces de sécurité Debian]]'''&lt;/center&gt;
&lt;/div&gt;
&lt;center&gt;
{{#widget:Twitter
|user=debian_security
|width=auto
|count=6
|tweets.color=#000000
|tweets.background=#f2f2f2
|tweets.links=#107bb5
|shell.color=#000000
|shell.background=#b8b8b8
}}
&lt;/center&gt;
| valign=&quot;top&quot; style=&quot;width: 45em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;rss number=17&gt;https://www.debian-fr.org/rss/digest/rss.xml&lt;/rss&gt;
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>d42swjlpknrcos9yidaewfd5w638qc5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4574</id>
      <parentid>4573</parentid>
      <timestamp>2012-10-28T12:21:09Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="5234">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;float:left;&quot;&gt;{{#icon: 301px-Orange Icon Wiki.svg.png|Forum|24|http://www.isalo.org/wiki.debian-fr/}}&lt;/span&gt;
&lt;span style=&quot;color:#ffffff; float:left; font-size:100%;&quot;&gt;''' Wiki'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; float:right; font-size:100%;&quot;&gt;'''Forum '''&lt;/span&gt;&lt;span style=&quot;float:right;&quot;&gt;{{#icon: Forum-groupe-utilisateurs-icone-4597-128.png|Forum|24|http://www.debian-fr.org/}}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;

[[Fichier:IPv6_ready.png|75px|left|thumb]]

'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://www.debian-fr.org forum debian-fr.org].

'''Bienvenue''' sur le wiki du [http://www.debian-fr.org forum debian-fr.org].&lt;br/&gt;

{{color|magenta|''' &gt;&gt;&gt; [http://thank-you.debian.net/#thanks Dites Merci à Debian!!!] &lt;&lt;&lt;'''}}

{{color|magenta|''' &gt;&gt;&gt; [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]] &lt;&lt;&lt;'''}}

{{color|darkmagenta|'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]}}

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}

À votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
|}
----
{| cellspacing=5 cellpadding=5 border=0 width=100%
|{{IconLink|Installation|Installation|Installation.png|}}
|{{IconLink|Logiciels|Les logiciels|Logiciel.png|}}
|{{IconLink|Reseau_et_Wifi|Réseau et Wifi|internet.png|}}
|-
|{{IconLink|Noyau_(Kernel)|Le noyau|Linux.jpg|}}
|{{IconLink|Les_Trucs_et_astuces|Les Trucs &amp; Astuces|T%26A.jpg|}}
|{{IconLink|Materiel_et_Pilotes|Le matériel et les pilotes|Hardware2.png}}
|-
|{{IconLink|Commandes|Les commandes|Commandes.png|}}
|{{IconLink|Programmation|La programmation, les scripts...|Programmation.png|}}
|{{IconLink|Securite|Sécurité !|Securite.png|}}
|-
|{{IconLink|Divers|divers|Divers.jpg|}}
|{{IconLink|Documentation_externe|Documentation externe !|Doc.png|}}
|}
----
&lt;!-- Autre couleur de background #00CCFF --&gt;
{| cellspacing=5 cellpadding=5 border=0 width=100% 
|- style=&quot;background:#e0e0ff; color:black; font-size:16px; -moz-border-radius:8px;&quot;
! width=&quot;66%&quot; | Utilisation du Wiki !! Dernières nouvelles
|-
|valign=top|

* Si vous n'avez jamais utilisé MediaWiki, vous pourrez trouver plus d'informations ici: [http://meta.wikimedia.org/wiki/Aide:Contenu Guide d'utilisation] + [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ MediaWiki]
* Ici vous aurez [[Special:Allpages | l'Index de toutes les pages du Wiki ]]
* En tant que membre du projet vous avez droit à une page personnelle [[ Special:Listusers | (accessible depuis votre UserId)]], une fois que vous vous êtes [[Special:Userlogin | loggé]]
&lt;br&gt;
Amusez vous bien ! ;-)
&lt;br&gt;&lt;br&gt;
| 
{{DernièresNouvelles}}
|-
|}
&lt;br&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;center&gt;'''[[Annonces_de_sécurité|Annonces de sécurité Debian]]'''&lt;/center&gt;
&lt;/div&gt;
&lt;center&gt;
{{#widget:Twitter
|user=debian_security
|width=auto
|count=6
|tweets.color=#000000
|tweets.background=#f2f2f2
|tweets.links=#107bb5
|shell.color=#000000
|shell.background=#b8b8b8
}}
&lt;/center&gt;
| valign=&quot;top&quot; style=&quot;width: 45em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;rss number=17&gt;https://www.debian-fr.org/rss/digest/rss.xml&lt;/rss&gt;
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>ppb602g20trehml670s98nepicvw5i1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4577</id>
      <parentid>4574</parentid>
      <timestamp>2012-10-28T13:09:43Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="5370">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;float:left;&quot;&gt;{{#icon: 301px-Orange Icon Wiki.svg.png|Forum|24|http://www.isalo.org/wiki.debian-fr/}}&lt;/span&gt;
&lt;span style=&quot;color:#ffffff; float:left; font-size:100%;&quot;&gt;''' Wiki'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; float:right; font-size:100%;&quot;&gt;'''Forum '''&lt;/span&gt;&lt;span style=&quot;float:right;&quot;&gt;{{#icon: Forum-groupe-utilisateurs-icone-4597-128.png|Forum|24|http://www.debian-fr.org/}}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;

[[Fichier:IPv6_ready.png|75px|left|thumb]]

'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://www.debian-fr.org forum debian-fr.org].

'''Bienvenue''' sur le wiki du [http://www.debian-fr.org forum debian-fr.org].&lt;br/&gt;

{{color|magenta|''' &gt;&gt;&gt; [http://thank-you.debian.net/#thanks Dites Merci à Debian!!!] &lt;&lt;&lt;'''}}

{{color|magenta|''' &gt;&gt;&gt; [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]] &lt;&lt;&lt;'''}}

{{color|darkmagenta|'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]}}

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}

À votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
|}

|}
----

{| width=&quot;100%&quot;
| width=&quot;33%&quot; | {{IconLink|Installation|Installation|Installation.png|}}
| width=&quot;33%&quot; | {{IconLink|Logiciels|Les logiciels|Logiciel.png|}}
| width=&quot;33%&quot; | {{IconLink|Reseau_et_Wifi|Réseau et Wifi|internet.png|}}
|-
| width=&quot;33%&quot; | {{IconLink|Noyau_(Kernel)|Le noyau|Linux.jpg|}}
| width=&quot;33%&quot; | {{IconLink|Les_Trucs_et_astuces|Les Trucs &amp; Astuces|T%26A.jpg|}}
| width=&quot;33%&quot; | {{IconLink|Materiel_et_Pilotes|Le matériel et les pilotes|Hardware2.png|}}
|-
| width=&quot;33%&quot; | {{IconLink|Commandes|Les commandes|Commandes.png|}}
| width=&quot;33%&quot; | {{IconLink|Programmation|La programmation, les scripts...|Programmation.png|}}
| width=&quot;33%&quot; | {{IconLink|Securite|Sécurité !|Securite.png|}}
|-
| width=&quot;33%&quot; | {{IconLink|Divers|divers|Divers.jpg|}}
| width=&quot;33%&quot; | {{IconLink|Documentation_externe|Documentation externe !|Doc.png|}}
|}
----
&lt;!-- Autre couleur de background #00CCFF --&gt;
{| cellspacing=5 cellpadding=5 border=0 width=100% 
|- style=&quot;background:#e0e0ff; color:black; font-size:16px; -moz-border-radius:8px;&quot;
! width=&quot;66%&quot; | Utilisation du Wiki !! Dernières nouvelles
|-
|valign=top|

* Si vous n'avez jamais utilisé MediaWiki, vous pourrez trouver plus d'informations ici: [http://meta.wikimedia.org/wiki/Aide:Contenu Guide d'utilisation] + [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ MediaWiki]
* Ici vous aurez [[Special:Allpages | l'Index de toutes les pages du Wiki ]]
* En tant que membre du projet vous avez droit à une page personnelle [[ Special:Listusers | (accessible depuis votre UserId)]], une fois que vous vous êtes [[Special:Userlogin | loggé]]
&lt;br&gt;
Amusez vous bien ! ;-)
&lt;br&gt;&lt;br&gt;
| 
{{DernièresNouvelles}}
|-
|}
&lt;br&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;center&gt;'''[[Annonces_de_sécurité|Annonces de sécurité Debian]]'''&lt;/center&gt;
&lt;/div&gt;
&lt;center&gt;
{{#widget:Twitter
|user=debian_security
|width=auto
|count=6
|tweets.color=#000000
|tweets.background=#f2f2f2
|tweets.links=#107bb5
|shell.color=#000000
|shell.background=#b8b8b8
}}
&lt;/center&gt;
| valign=&quot;top&quot; style=&quot;width: 45em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;rss number=17&gt;https://www.debian-fr.org/rss/digest/rss.xml&lt;/rss&gt;
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>ldqhvtnucmplmj8pvme8a47byna710m</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4578</id>
      <parentid>4577</parentid>
      <timestamp>2012-10-28T13:10:19Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="5369">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;float:left;&quot;&gt;{{#icon: 301px-Orange Icon Wiki.svg.png|Forum|24|http://www.isalo.org/wiki.debian-fr/}}&lt;/span&gt;
&lt;span style=&quot;color:#ffffff; float:left; font-size:100%;&quot;&gt;''' Wiki'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; float:right; font-size:100%;&quot;&gt;'''Forum '''&lt;/span&gt;&lt;span style=&quot;float:right;&quot;&gt;{{#icon: Forum-groupe-utilisateurs-icone-4597-128.png|Forum|24|http://www.debian-fr.org/}}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;

[[Fichier:IPv6_ready.png|75px|left|thumb]]

'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://www.debian-fr.org forum debian-fr.org].

'''Bienvenue''' sur le wiki du [http://www.debian-fr.org forum debian-fr.org].&lt;br/&gt;

{{color|magenta|''' &gt;&gt;&gt; [http://thank-you.debian.net/#thanks Dites Merci à Debian!!!] &lt;&lt;&lt;'''}}

{{color|magenta|''' &gt;&gt;&gt; [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]] &lt;&lt;&lt;'''}}

{{color|darkmagenta|'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]}}

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}

À votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
|}

|}
----

{| width=&quot;90%&quot;
| width=&quot;33%&quot; | {{IconLink|Installation|Installation|Installation.png|}}
| width=&quot;33%&quot; | {{IconLink|Logiciels|Les logiciels|Logiciel.png|}}
| width=&quot;33%&quot; | {{IconLink|Reseau_et_Wifi|Réseau et Wifi|internet.png|}}
|-
| width=&quot;33%&quot; | {{IconLink|Noyau_(Kernel)|Le noyau|Linux.jpg|}}
| width=&quot;33%&quot; | {{IconLink|Les_Trucs_et_astuces|Les Trucs &amp; Astuces|T%26A.jpg|}}
| width=&quot;33%&quot; | {{IconLink|Materiel_et_Pilotes|Le matériel et les pilotes|Hardware2.png|}}
|-
| width=&quot;33%&quot; | {{IconLink|Commandes|Les commandes|Commandes.png|}}
| width=&quot;33%&quot; | {{IconLink|Programmation|La programmation, les scripts...|Programmation.png|}}
| width=&quot;33%&quot; | {{IconLink|Securite|Sécurité !|Securite.png|}}
|-
| width=&quot;33%&quot; | {{IconLink|Divers|divers|Divers.jpg|}}
| width=&quot;33%&quot; | {{IconLink|Documentation_externe|Documentation externe !|Doc.png|}}
|}
----
&lt;!-- Autre couleur de background #00CCFF --&gt;
{| cellspacing=5 cellpadding=5 border=0 width=100% 
|- style=&quot;background:#e0e0ff; color:black; font-size:16px; -moz-border-radius:8px;&quot;
! width=&quot;66%&quot; | Utilisation du Wiki !! Dernières nouvelles
|-
|valign=top|

* Si vous n'avez jamais utilisé MediaWiki, vous pourrez trouver plus d'informations ici: [http://meta.wikimedia.org/wiki/Aide:Contenu Guide d'utilisation] + [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ MediaWiki]
* Ici vous aurez [[Special:Allpages | l'Index de toutes les pages du Wiki ]]
* En tant que membre du projet vous avez droit à une page personnelle [[ Special:Listusers | (accessible depuis votre UserId)]], une fois que vous vous êtes [[Special:Userlogin | loggé]]
&lt;br&gt;
Amusez vous bien ! ;-)
&lt;br&gt;&lt;br&gt;
| 
{{DernièresNouvelles}}
|-
|}
&lt;br&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;center&gt;'''[[Annonces_de_sécurité|Annonces de sécurité Debian]]'''&lt;/center&gt;
&lt;/div&gt;
&lt;center&gt;
{{#widget:Twitter
|user=debian_security
|width=auto
|count=6
|tweets.color=#000000
|tweets.background=#f2f2f2
|tweets.links=#107bb5
|shell.color=#000000
|shell.background=#b8b8b8
}}
&lt;/center&gt;
| valign=&quot;top&quot; style=&quot;width: 45em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;rss number=17&gt;https://www.debian-fr.org/rss/digest/rss.xml&lt;/rss&gt;
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>ilcmswdfoz40d88iijoe5uk3ghhq4mk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4579</id>
      <parentid>4578</parentid>
      <timestamp>2012-10-28T13:11:15Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="5370">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;float:left;&quot;&gt;{{#icon: 301px-Orange Icon Wiki.svg.png|Forum|24|http://www.isalo.org/wiki.debian-fr/}}&lt;/span&gt;
&lt;span style=&quot;color:#ffffff; float:left; font-size:100%;&quot;&gt;''' Wiki'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; float:right; font-size:100%;&quot;&gt;'''Forum '''&lt;/span&gt;&lt;span style=&quot;float:right;&quot;&gt;{{#icon: Forum-groupe-utilisateurs-icone-4597-128.png|Forum|24|http://www.debian-fr.org/}}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;

[[Fichier:IPv6_ready.png|75px|left|thumb]]

'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://www.debian-fr.org forum debian-fr.org].

'''Bienvenue''' sur le wiki du [http://www.debian-fr.org forum debian-fr.org].&lt;br/&gt;

{{color|magenta|''' &gt;&gt;&gt; [http://thank-you.debian.net/#thanks Dites Merci à Debian!!!] &lt;&lt;&lt;'''}}

{{color|magenta|''' &gt;&gt;&gt; [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]] &lt;&lt;&lt;'''}}

{{color|darkmagenta|'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]}}

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}

À votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
|}

|}
----

{| width=&quot;100%&quot;
| width=&quot;33%&quot; | {{IconLink|Installation|Installation|Installation.png|}}
| width=&quot;33%&quot; | {{IconLink|Logiciels|Les logiciels|Logiciel.png|}}
| width=&quot;33%&quot; | {{IconLink|Reseau_et_Wifi|Réseau et Wifi|internet.png|}}
|-
| width=&quot;33%&quot; | {{IconLink|Noyau_(Kernel)|Le noyau|Linux.jpg|}}
| width=&quot;33%&quot; | {{IconLink|Les_Trucs_et_astuces|Les Trucs &amp; Astuces|T%26A.jpg|}}
| width=&quot;33%&quot; | {{IconLink|Materiel_et_Pilotes|Le matériel et les pilotes|Hardware2.png|}}
|-
| width=&quot;33%&quot; | {{IconLink|Commandes|Les commandes|Commandes.png|}}
| width=&quot;33%&quot; | {{IconLink|Programmation|La programmation, les scripts...|Programmation.png|}}
| width=&quot;33%&quot; | {{IconLink|Securite|Sécurité !|Securite.png|}}
|-
| width=&quot;33%&quot; | {{IconLink|Divers|divers|Divers.jpg|}}
| width=&quot;33%&quot; | {{IconLink|Documentation_externe|Documentation externe !|Doc.png|}}
|}
----
&lt;!-- Autre couleur de background #00CCFF --&gt;
{| cellspacing=5 cellpadding=5 border=0 width=100% 
|- style=&quot;background:#e0e0ff; color:black; font-size:16px; -moz-border-radius:8px;&quot;
! width=&quot;66%&quot; | Utilisation du Wiki !! Dernières nouvelles
|-
|valign=top|

* Si vous n'avez jamais utilisé MediaWiki, vous pourrez trouver plus d'informations ici: [http://meta.wikimedia.org/wiki/Aide:Contenu Guide d'utilisation] + [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ MediaWiki]
* Ici vous aurez [[Special:Allpages | l'Index de toutes les pages du Wiki ]]
* En tant que membre du projet vous avez droit à une page personnelle [[ Special:Listusers | (accessible depuis votre UserId)]], une fois que vous vous êtes [[Special:Userlogin | loggé]]
&lt;br&gt;
Amusez vous bien ! ;-)
&lt;br&gt;&lt;br&gt;
| 
{{DernièresNouvelles}}
|-
|}
&lt;br&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;center&gt;'''[[Annonces_de_sécurité|Annonces de sécurité Debian]]'''&lt;/center&gt;
&lt;/div&gt;
&lt;center&gt;
{{#widget:Twitter
|user=debian_security
|width=auto
|count=6
|tweets.color=#000000
|tweets.background=#f2f2f2
|tweets.links=#107bb5
|shell.color=#000000
|shell.background=#b8b8b8
}}
&lt;/center&gt;
| valign=&quot;top&quot; style=&quot;width: 45em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;rss number=17&gt;https://www.debian-fr.org/rss/digest/rss.xml&lt;/rss&gt;
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>ldqhvtnucmplmj8pvme8a47byna710m</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4582</id>
      <parentid>4579</parentid>
      <timestamp>2012-10-28T13:40:44Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="4551">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;float:left;&quot;&gt;{{#icon: 301px-Orange Icon Wiki.svg.png|Forum|24|http://www.isalo.org/wiki.debian-fr/}}&lt;/span&gt;
&lt;span style=&quot;color:#ffffff; float:left; font-size:100%;&quot;&gt;''' Wiki'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; float:right; font-size:100%;&quot;&gt;'''Forum '''&lt;/span&gt;&lt;span style=&quot;float:right;&quot;&gt;{{#icon: Forum-groupe-utilisateurs-icone-4597-128.png|Forum|24|http://www.debian-fr.org/}}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;

[[Fichier:IPv6_ready.png|75px|left|thumb]]

'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://www.debian-fr.org forum debian-fr.org].

'''Bienvenue''' sur le wiki du [http://www.debian-fr.org forum debian-fr.org].&lt;br/&gt;

{{color|magenta|''' &gt;&gt;&gt; [http://thank-you.debian.net/#thanks Dites Merci à Debian!!!] &lt;&lt;&lt;'''}}

{{color|magenta|''' &gt;&gt;&gt; [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]] &lt;&lt;&lt;'''}}

{{color|darkmagenta|'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]}}

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}

À votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
|}

|}
----

{| width=&quot;100%&quot;
| width=&quot;33%&quot; | {{IconLink|Installation|Installation|Installation.png|}}
| width=&quot;33%&quot; | {{IconLink|Logiciels|Les logiciels|Logiciel.png|}}
| width=&quot;33%&quot; | {{IconLink|Reseau_et_Wifi|Réseau et Wifi|internet.png|}}
|-
| width=&quot;33%&quot; | {{IconLink|Noyau_(Kernel)|Le noyau|Linux.jpg|}}
| width=&quot;33%&quot; | {{IconLink|Les_Trucs_et_astuces|Les Trucs &amp; Astuces|T%26A.jpg|}}
| width=&quot;33%&quot; | {{IconLink|Materiel_et_Pilotes|Le matériel et les pilotes|Hardware2.png|}}
|-
| width=&quot;33%&quot; | {{IconLink|Commandes|Les commandes|Commandes.png|}}
| width=&quot;33%&quot; | {{IconLink|Programmation|La programmation, les scripts...|Programmation.png|}}
| width=&quot;33%&quot; | {{IconLink|Securite|Sécurité !|Securite.png|}}
|-
| width=&quot;33%&quot; | {{IconLink|Divers|divers|Divers.jpg|}}
| width=&quot;33%&quot; | {{IconLink|Documentation_externe|Documentation externe !|Doc.png|}}
|}
----
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;center&gt;'''[[Annonces_de_sécurité|Annonces de sécurité Debian]]'''&lt;/center&gt;
&lt;/div&gt;
&lt;center&gt;
{{#widget:Twitter
|user=debian_security
|width=auto
|count=6
|tweets.color=#000000
|tweets.background=#f2f2f2
|tweets.links=#107bb5
|shell.color=#000000
|shell.background=#b8b8b8
}}
&lt;/center&gt;
| valign=&quot;top&quot; style=&quot;width: 45em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;rss number=17&gt;https://www.debian-fr.org/rss/digest/rss.xml&lt;/rss&gt;
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>d4g4q3mse4qnxb95736r6xhqa4g83fm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4638</id>
      <parentid>4582</parentid>
      <timestamp>2012-10-29T08:10:55Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Annonces de sécurité</comment>
      <text xml:space="preserve" bytes="4464">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;float:left;&quot;&gt;{{#icon: 301px-Orange Icon Wiki.svg.png|Forum|24|http://www.isalo.org/wiki.debian-fr/}}&lt;/span&gt;
&lt;span style=&quot;color:#ffffff; float:left; font-size:100%;&quot;&gt;''' Wiki'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; float:right; font-size:100%;&quot;&gt;'''Forum '''&lt;/span&gt;&lt;span style=&quot;float:right;&quot;&gt;{{#icon: Forum-groupe-utilisateurs-icone-4597-128.png|Forum|24|http://www.debian-fr.org/}}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;

[[Fichier:IPv6_ready.png|75px|left|thumb]]

'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://www.debian-fr.org forum debian-fr.org].

'''Bienvenue''' sur le wiki du [http://www.debian-fr.org forum debian-fr.org].&lt;br/&gt;

{{color|magenta|''' &gt;&gt;&gt; [http://thank-you.debian.net/#thanks Dites Merci à Debian!!!] &lt;&lt;&lt;'''}}

{{color|magenta|''' &gt;&gt;&gt; [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]] &lt;&lt;&lt;'''}}

{{color|darkmagenta|'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]}}

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}

À votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
|}

|}
----

{| width=&quot;100%&quot;
| width=&quot;33%&quot; | {{IconLink|Installation|Installation|Installation.png|}}
| width=&quot;33%&quot; | {{IconLink|Logiciels|Les logiciels|Logiciel.png|}}
| width=&quot;33%&quot; | {{IconLink|Reseau_et_Wifi|Réseau et Wifi|internet.png|}}
|-
| width=&quot;33%&quot; | {{IconLink|Noyau_(Kernel)|Le noyau|Linux.jpg|}}
| width=&quot;33%&quot; | {{IconLink|Les_Trucs_et_astuces|Les Trucs &amp; Astuces|T%26A.jpg|}}
| width=&quot;33%&quot; | {{IconLink|Materiel_et_Pilotes|Le matériel et les pilotes|Hardware2.png|}}
|-
| width=&quot;33%&quot; | {{IconLink|Commandes|Les commandes|Commandes.png|}}
| width=&quot;33%&quot; | {{IconLink|Programmation|La programmation, les scripts...|Programmation.png|}}
| width=&quot;33%&quot; | {{IconLink|Securite|Sécurité !|Securite.png|}}
|-
| width=&quot;33%&quot; | {{IconLink|Divers|divers|Divers.jpg|}}
| width=&quot;33%&quot; | {{IconLink|Documentation_externe|Documentation externe !|Doc.png|}}
|}
----
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;center&gt;'''[[Annonces_de_sécurité|Annonces de sécurité Debian]]'''&lt;/center&gt;
&lt;/div&gt;
&lt;center&gt;
{{#widget:Iframe
|url=http://www.debian.org/security/2012/
|width=800
|height=350
|border=0
}}
&lt;/center&gt;
| valign=&quot;top&quot; style=&quot;width: 45em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;rss number=17&gt;https://www.debian-fr.org/rss/digest/rss.xml&lt;/rss&gt;
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>fx3l2n3eo1te2z9dcuot8oxemq3xai3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Accueil 3</title>
    <ns>0</ns>
    <id>1132</id>
    <revision>
      <id>4672</id>
      <timestamp>2012-10-30T03:29:23Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « {{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}} {{Template: Social}} {| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot; | class=&quot;MainPageBG... »</comment>
      <text xml:space="preserve" bytes="3072">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

{| cellspacing=5 cellpadding=5 border=0 width=100%
|- style=&quot;background:#e0e0ff; color:black; font-size:18px; -moz-border-radius:8px;&quot;
! width=&quot;75%&quot; colspan=&quot;2&quot; align=&quot;center&quot; | Bienvenue sur le Wiki du [https://www.debian-fr.org forum debian-fr.org]
|-
|valign=middle|
[[Fichier:IPv6_ready.png|75px|left|thumb]]
&lt;center&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://www.debian-fr.org forum debian-fr.org].&lt;br&gt;&lt;br&gt;
{{color|magenta|''' &gt;&gt;&gt;  [http://thank-you.debian.net/#thanks Dites Merci à Debian!!!]  &lt;&lt;&lt;'''}}&lt;br&gt;
{{color|magenta|''' &gt;&gt;&gt;  [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]]  &lt;&lt;&lt;'''}}&lt;br&gt;&lt;br&gt;
'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]&lt;br&gt;
&lt;/center&gt;
|}
|}
----
{{Modèle:Accueil3}}

|}

&lt;!-- Autre couleur de background #00CCFF --&gt;
{| cellspacing=5 cellpadding=5 border=0 width=100% 
|- style=&quot;background:#e0e0ff; color:black; font-size:16px; -moz-border-radius:8px;&quot;
! width=&quot;66%&quot; | Utilisation du Wiki !! Dernières nouvelles
|-
|valign=top|


'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].&lt;br&gt;
'''Pour vous inscrire''', rien de plus simple : &gt;&gt; [[Spécial:Connexion|C'est ICI!]] &lt;&lt; Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...&lt;br&gt;
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !&lt;br&gt;

* Si vous n'avez jamais utilisé MediaWiki, vous pourrez trouver plus d'informations ici: [http://meta.wikimedia.org/wiki/Help:MediaWiki_Manual/fr Manuel de MediaWiki] + [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ MediaWiki]
* Ici vous aurez [[Special:Allpages | l'Index de toutes les pages du Wiki ]]
* En tant que membre du projet vous avez droit à une page personnelle [[ Special:Listusers | (accessible depuis votre UserId)]], une fois que vous vous êtes [[Special:Userlogin | loggé]]
&lt;br&gt;
{{color|maroon|'''Commencez par [[Aide:Accueil|&lt;&lt; l'aide &gt;&gt;]] pour apprendre à utiliser le Wiki'''}}

À votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;br&gt;&lt;br&gt;
Amusez vous bien ! ;-)
&lt;br&gt;&lt;br&gt;
{{color|maroon|'''Les dernières annonces de Sécurité Debian:'''}}
{{#widget:Iframe
|url=http://www.debian.org/security/2012/
|width=100%
|height=350
|border=0
}}

| 
{{Modèle:DernièresNouvelles}}
|-
|}
&lt;br&gt;</text>
      <sha1>llp8unujqahdfxy69uv4klrfl9edqn4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Accueil 3 bleu</title>
    <ns>0</ns>
    <id>1134</id>
    <revision>
      <id>4674</id>
      <timestamp>2012-10-30T03:55:33Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « {{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}} {{Template: Social}} {| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot; | class=&quot;MainPageBG... »</comment>
      <text xml:space="preserve" bytes="3072">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#CBE6FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

{| cellspacing=5 cellpadding=5 border=0 width=100%
|- style=&quot;background:#FDE2CB; color:black; font-size:18px; -moz-border-radius:8px;&quot;
! width=&quot;75%&quot; colspan=&quot;2&quot; align=&quot;center&quot; | Bienvenue sur le Wiki du [https://www.debian-fr.org forum debian-fr.org]
|-
|valign=middle|
[[Fichier:IPv6_ready.png|75px|left|thumb]]
&lt;center&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://www.debian-fr.org forum debian-fr.org].&lt;br&gt;&lt;br&gt;
{{color|magenta|''' &gt;&gt;&gt;  [http://thank-you.debian.net/#thanks Dites Merci à Debian!!!]  &lt;&lt;&lt;'''}}&lt;br&gt;
{{color|magenta|''' &gt;&gt;&gt;  [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]]  &lt;&lt;&lt;'''}}&lt;br&gt;&lt;br&gt;
'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]&lt;br&gt;
&lt;/center&gt;
|}
|}
----
{{Modèle:Accueil3}}

|}

&lt;!-- Autre couleur de background #00CCFF --&gt;
{| cellspacing=5 cellpadding=5 border=0 width=100% 
|- style=&quot;background:#FDE2CB; color:black; font-size:16px; -moz-border-radius:8px;&quot;
! width=&quot;66%&quot; | Utilisation du Wiki !! Dernières nouvelles
|-
|valign=top|


'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].&lt;br&gt;
'''Pour vous inscrire''', rien de plus simple : &gt;&gt; [[Spécial:Connexion|C'est ICI!]] &lt;&lt; Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...&lt;br&gt;
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !&lt;br&gt;

* Si vous n'avez jamais utilisé MediaWiki, vous pourrez trouver plus d'informations ici: [http://meta.wikimedia.org/wiki/Help:MediaWiki_Manual/fr Manuel de MediaWiki] + [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ MediaWiki]
* Ici vous aurez [[Special:Allpages | l'Index de toutes les pages du Wiki ]]
* En tant que membre du projet vous avez droit à une page personnelle [[ Special:Listusers | (accessible depuis votre UserId)]], une fois que vous vous êtes [[Special:Userlogin | loggé]]
&lt;br&gt;
{{color|maroon|'''Commencez par [[Aide:Accueil|&lt;&lt; l'aide &gt;&gt;]] pour apprendre à utiliser le Wiki'''}}

À votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;br&gt;&lt;br&gt;
Amusez vous bien ! ;-)
&lt;br&gt;&lt;br&gt;
{{color|maroon|'''Les dernières annonces de Sécurité Debian:'''}}
{{#widget:Iframe
|url=http://www.debian.org/security/2012/
|width=100%
|height=350
|border=0
}}

| 
{{Modèle:DernièresNouvelles}}
|-
|}
&lt;br&gt;</text>
      <sha1>8ofy3i6h957z408r3nt9tvk1o5pw3yz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Accueil 4 vert</title>
    <ns>0</ns>
    <id>1135</id>
    <revision>
      <id>4675</id>
      <timestamp>2012-10-30T03:57:48Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « {{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}} {{Template: Social}} {| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot; | class=&quot;MainPageBG... »</comment>
      <text xml:space="preserve" bytes="3072">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#86D77C; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

{| cellspacing=5 cellpadding=5 border=0 width=100%
|- style=&quot;background:#CC7CD6; color:black; font-size:18px; -moz-border-radius:8px;&quot;
! width=&quot;75%&quot; colspan=&quot;2&quot; align=&quot;center&quot; | Bienvenue sur le Wiki du [https://www.debian-fr.org forum debian-fr.org]
|-
|valign=middle|
[[Fichier:IPv6_ready.png|75px|left|thumb]]
&lt;center&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://www.debian-fr.org forum debian-fr.org].&lt;br&gt;&lt;br&gt;
{{color|magenta|''' &gt;&gt;&gt;  [http://thank-you.debian.net/#thanks Dites Merci à Debian!!!]  &lt;&lt;&lt;'''}}&lt;br&gt;
{{color|magenta|''' &gt;&gt;&gt;  [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]]  &lt;&lt;&lt;'''}}&lt;br&gt;&lt;br&gt;
'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]&lt;br&gt;
&lt;/center&gt;
|}
|}
----
{{Modèle:Accueil3}}

|}

&lt;!-- Autre couleur de background #00CCFF --&gt;
{| cellspacing=5 cellpadding=5 border=0 width=100% 
|- style=&quot;background:#CC7CD6; color:black; font-size:16px; -moz-border-radius:8px;&quot;
! width=&quot;66%&quot; | Utilisation du Wiki !! Dernières nouvelles
|-
|valign=top|


'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].&lt;br&gt;
'''Pour vous inscrire''', rien de plus simple : &gt;&gt; [[Spécial:Connexion|C'est ICI!]] &lt;&lt; Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...&lt;br&gt;
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !&lt;br&gt;

* Si vous n'avez jamais utilisé MediaWiki, vous pourrez trouver plus d'informations ici: [http://meta.wikimedia.org/wiki/Help:MediaWiki_Manual/fr Manuel de MediaWiki] + [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ MediaWiki]
* Ici vous aurez [[Special:Allpages | l'Index de toutes les pages du Wiki ]]
* En tant que membre du projet vous avez droit à une page personnelle [[ Special:Listusers | (accessible depuis votre UserId)]], une fois que vous vous êtes [[Special:Userlogin | loggé]]
&lt;br&gt;
{{color|maroon|'''Commencez par [[Aide:Accueil|&lt;&lt; l'aide &gt;&gt;]] pour apprendre à utiliser le Wiki'''}}

À votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;br&gt;&lt;br&gt;
Amusez vous bien ! ;-)
&lt;br&gt;&lt;br&gt;
{{color|maroon|'''Les dernières annonces de Sécurité Debian:'''}}
{{#widget:Iframe
|url=http://www.debian.org/security/2012/
|width=100%
|height=350
|border=0
}}

| 
{{Modèle:DernièresNouvelles}}
|-
|}
&lt;br&gt;</text>
      <sha1>7pmjbkikfmiyo4qsd32lqrb97gpq1uu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4676</id>
      <parentid>4675</parentid>
      <timestamp>2012-10-30T04:01:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="3072">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#95D57C; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

{| cellspacing=5 cellpadding=5 border=0 width=100%
|- style=&quot;background:#A9A9A9; color:black; font-size:18px; -moz-border-radius:8px;&quot;
! width=&quot;75%&quot; colspan=&quot;2&quot; align=&quot;center&quot; | Bienvenue sur le Wiki du [https://www.debian-fr.org forum debian-fr.org]
|-
|valign=middle|
[[Fichier:IPv6_ready.png|75px|left|thumb]]
&lt;center&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://www.debian-fr.org forum debian-fr.org].&lt;br&gt;&lt;br&gt;
{{color|magenta|''' &gt;&gt;&gt;  [http://thank-you.debian.net/#thanks Dites Merci à Debian!!!]  &lt;&lt;&lt;'''}}&lt;br&gt;
{{color|magenta|''' &gt;&gt;&gt;  [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]]  &lt;&lt;&lt;'''}}&lt;br&gt;&lt;br&gt;
'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]&lt;br&gt;
&lt;/center&gt;
|}
|}
----
{{Modèle:Accueil3}}

|}

&lt;!-- Autre couleur de background #00CCFF --&gt;
{| cellspacing=5 cellpadding=5 border=0 width=100% 
|- style=&quot;background:#A9A9A9; color:black; font-size:16px; -moz-border-radius:8px;&quot;
! width=&quot;66%&quot; | Utilisation du Wiki !! Dernières nouvelles
|-
|valign=top|


'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].&lt;br&gt;
'''Pour vous inscrire''', rien de plus simple : &gt;&gt; [[Spécial:Connexion|C'est ICI!]] &lt;&lt; Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...&lt;br&gt;
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !&lt;br&gt;

* Si vous n'avez jamais utilisé MediaWiki, vous pourrez trouver plus d'informations ici: [http://meta.wikimedia.org/wiki/Help:MediaWiki_Manual/fr Manuel de MediaWiki] + [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ MediaWiki]
* Ici vous aurez [[Special:Allpages | l'Index de toutes les pages du Wiki ]]
* En tant que membre du projet vous avez droit à une page personnelle [[ Special:Listusers | (accessible depuis votre UserId)]], une fois que vous vous êtes [[Special:Userlogin | loggé]]
&lt;br&gt;
{{color|maroon|'''Commencez par [[Aide:Accueil|&lt;&lt; l'aide &gt;&gt;]] pour apprendre à utiliser le Wiki'''}}

À votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;br&gt;&lt;br&gt;
Amusez vous bien ! ;-)
&lt;br&gt;&lt;br&gt;
{{color|maroon|'''Les dernières annonces de Sécurité Debian:'''}}
{{#widget:Iframe
|url=http://www.debian.org/security/2012/
|width=100%
|height=350
|border=0
}}

| 
{{Modèle:DernièresNouvelles}}
|-
|}
&lt;br&gt;</text>
      <sha1>jb3x2irc5f1aq0dbe4q0w7lridifjhk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Accueil-rouge</title>
    <ns>0</ns>
    <id>1155</id>
    <revision>
      <id>4730</id>
      <timestamp>2012-11-07T08:05:06Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « {{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}} {{Template: Social}} {| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot; | class=&quot;MainPageBG... »</comment>
      <text xml:space="preserve" bytes="2960">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #b41d37; background:#f2f5fd; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

{| cellspacing=5 cellpadding=5 border=0 width=100%
|- style=&quot;background:#b41d37; color:black; font-size:18px; -moz-border-radius:8px;&quot;
! width=&quot;75%&quot; colspan=&quot;2&quot; align=&quot;center&quot; | Bienvenue sur le Wiki du [https://www.debian-fr.org forum debian-fr.org]
|-
|valign=middle|
[[Fichier:IPv6_ready.png|75px|left]]
&lt;center&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].&lt;br&gt;&lt;br&gt;
{{color|magenta|''' &gt;&gt;&gt;  [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]]  &lt;&lt;&lt;'''}}&lt;br&gt;&lt;br&gt;
'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]&lt;br&gt;
&lt;/center&gt;
|}
|}

{{Modèle:Accueil}}

|}

&lt;!-- Autre couleur de background #00CCFF --&gt;
{| cellspacing=5 cellpadding=5 border=0 width=100% 
|- style=&quot;background:#e0e0ff; color:black; font-size:16px; -moz-border-radius:8px;&quot;
! width=&quot;66%&quot; | Utilisation du Wiki !! Dernières nouvelles
|-
|valign=top|


'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].&lt;br&gt;
'''Pour vous inscrire''', rien de plus simple : &gt;&gt; [[Spécial:Connexion|C'est ICI!]] &lt;&lt; Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...&lt;br&gt;
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !&lt;br&gt;

* Si vous n'avez jamais utilisé MediaWiki, vous pourrez trouver plus d'informations ici: [http://meta.wikimedia.org/wiki/Help:MediaWiki_Manual/fr Manuel de MediaWiki] + [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ MediaWiki]
* Ici vous aurez [[Special:Allpages | l'Index de toutes les pages du Wiki ]]
* En tant que membre du projet vous avez droit à une page personnelle [[ Special:Listusers | (accessible depuis votre UserId)]], une fois que vous vous êtes [[Special:Userlogin | loggé]]
&lt;br&gt;
{{color|maroon|'''Commencez par [[Aide:Accueil|&lt;&lt; l'aide &gt;&gt;]] pour apprendre à utiliser le Wiki'''}}

À votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;br&gt;&lt;br&gt;
Amusez vous bien ! ;-)
&lt;br&gt;&lt;br&gt;
{{color|maroon|'''Les dernières annonces de Sécurité Debian:'''}}
{{#widget:Iframe
|url=http://www.debian.org/security/2012/
|width=100%
|height=350
|border=0
}}

| 
{{Modèle:DernièresNouvelles}}
|-
|}
&lt;br&gt;</text>
      <sha1>mvpc1x5j5gbsdocgvv0tb5zlajhbldq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4731</id>
      <parentid>4730</parentid>
      <timestamp>2012-11-07T08:09:58Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="2962">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #e0edff; background:#f7fbff; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

{| cellspacing=5 cellpadding=5 border=0 width=100%
|- style=&quot;background:#e0edff; color:#b41d37; font-size:18px; -moz-border-radius:8px;&quot;
! width=&quot;75%&quot; colspan=&quot;2&quot; align=&quot;center&quot; | Bienvenue sur le Wiki du [https://www.debian-fr.org forum debian-fr.org]
|-
|valign=middle|
[[Fichier:IPv6_ready.png|75px|left]]
&lt;center&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].&lt;br&gt;&lt;br&gt;
{{color|magenta|''' &gt;&gt;&gt;  [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]]  &lt;&lt;&lt;'''}}&lt;br&gt;&lt;br&gt;
'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]&lt;br&gt;
&lt;/center&gt;
|}
|}

{{Modèle:Accueil}}

|}

&lt;!-- Autre couleur de background #00CCFF --&gt;
{| cellspacing=5 cellpadding=5 border=0 width=100% 
|- style=&quot;background:#e0e0ff; color:black; font-size:16px; -moz-border-radius:8px;&quot;
! width=&quot;66%&quot; | Utilisation du Wiki !! Dernières nouvelles
|-
|valign=top|


'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].&lt;br&gt;
'''Pour vous inscrire''', rien de plus simple : &gt;&gt; [[Spécial:Connexion|C'est ICI!]] &lt;&lt; Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...&lt;br&gt;
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !&lt;br&gt;

* Si vous n'avez jamais utilisé MediaWiki, vous pourrez trouver plus d'informations ici: [http://meta.wikimedia.org/wiki/Help:MediaWiki_Manual/fr Manuel de MediaWiki] + [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ MediaWiki]
* Ici vous aurez [[Special:Allpages | l'Index de toutes les pages du Wiki ]]
* En tant que membre du projet vous avez droit à une page personnelle [[ Special:Listusers | (accessible depuis votre UserId)]], une fois que vous vous êtes [[Special:Userlogin | loggé]]
&lt;br&gt;
{{color|maroon|'''Commencez par [[Aide:Accueil|&lt;&lt; l'aide &gt;&gt;]] pour apprendre à utiliser le Wiki'''}}

À votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;br&gt;&lt;br&gt;
Amusez vous bien ! ;-)
&lt;br&gt;&lt;br&gt;
{{color|maroon|'''Les dernières annonces de Sécurité Debian:'''}}
{{#widget:Iframe
|url=http://www.debian.org/security/2012/
|width=100%
|height=350
|border=0
}}

| 
{{Modèle:DernièresNouvelles}}
|-
|}
&lt;br&gt;</text>
      <sha1>01h51xmmoviy7r5evcui0tld0drytd4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4732</id>
      <parentid>4731</parentid>
      <timestamp>2012-11-07T08:12:06Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2962">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #e0edff; background:#f7fbff; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

{| cellspacing=5 cellpadding=5 border=0 width=100%
|- style=&quot;background:#e0edff; color:#b41d37; font-size:18px; -moz-border-radius:8px;&quot;
! width=&quot;75%&quot; colspan=&quot;2&quot; align=&quot;center&quot; | Bienvenue sur le Wiki du [https://www.debian-fr.org forum debian-fr.org]
|-
|valign=middle|
[[Fichier:IPv6_ready.png|75px|left]]
&lt;center&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].&lt;br&gt;&lt;br&gt;
{{color|magenta|''' &gt;&gt;&gt;  [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]]  &lt;&lt;&lt;'''}}&lt;br&gt;&lt;br&gt;
'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]&lt;br&gt;
&lt;/center&gt;
|}
|}

{{Modèle:Accueil}}

|}

&lt;!-- Autre couleur de background #00CCFF --&gt;
{| cellspacing=5 cellpadding=5 border=0 width=100% 
|- style=&quot;background:#e0edff; color:black; font-size:16px; -moz-border-radius:8px;&quot;
! width=&quot;66%&quot; | Utilisation du Wiki !! Dernières nouvelles
|-
|valign=top|


'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].&lt;br&gt;
'''Pour vous inscrire''', rien de plus simple : &gt;&gt; [[Spécial:Connexion|C'est ICI!]] &lt;&lt; Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...&lt;br&gt;
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !&lt;br&gt;

* Si vous n'avez jamais utilisé MediaWiki, vous pourrez trouver plus d'informations ici: [http://meta.wikimedia.org/wiki/Help:MediaWiki_Manual/fr Manuel de MediaWiki] + [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ MediaWiki]
* Ici vous aurez [[Special:Allpages | l'Index de toutes les pages du Wiki ]]
* En tant que membre du projet vous avez droit à une page personnelle [[ Special:Listusers | (accessible depuis votre UserId)]], une fois que vous vous êtes [[Special:Userlogin | loggé]]
&lt;br&gt;
{{color|maroon|'''Commencez par [[Aide:Accueil|&lt;&lt; l'aide &gt;&gt;]] pour apprendre à utiliser le Wiki'''}}

À votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;br&gt;&lt;br&gt;
Amusez vous bien ! ;-)
&lt;br&gt;&lt;br&gt;
{{color|maroon|'''Les dernières annonces de Sécurité Debian:'''}}
{{#widget:Iframe
|url=http://www.debian.org/security/2012/
|width=100%
|height=350
|border=0
}}

| 
{{Modèle:DernièresNouvelles}}
|-
|}
&lt;br&gt;</text>
      <sha1>nu52xsfnxzrglewqbnmacuur4p6q28p</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4733</id>
      <parentid>4732</parentid>
      <timestamp>2012-11-07T08:13:53Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="2959">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #e0edff; background:#fff; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

{| cellspacing=5 cellpadding=5 border=0 width=100%
|- style=&quot;background:#e0edff; color:#b41d37; font-size:18px; -moz-border-radius:8px;&quot;
! width=&quot;75%&quot; colspan=&quot;2&quot; align=&quot;center&quot; | Bienvenue sur le Wiki du [https://www.debian-fr.org forum debian-fr.org]
|-
|valign=middle|
[[Fichier:IPv6_ready.png|75px|left]]
&lt;center&gt;
'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].&lt;br&gt;&lt;br&gt;
{{color|magenta|''' &gt;&gt;&gt;  [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]]  &lt;&lt;&lt;'''}}&lt;br&gt;&lt;br&gt;
'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]&lt;br&gt;
&lt;/center&gt;
|}
|}

{{Modèle:Accueil}}

|}

&lt;!-- Autre couleur de background #00CCFF --&gt;
{| cellspacing=5 cellpadding=5 border=0 width=100% 
|- style=&quot;background:#e0edff; color:black; font-size:16px; -moz-border-radius:8px;&quot;
! width=&quot;66%&quot; | Utilisation du Wiki !! Dernières nouvelles
|-
|valign=top|


'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].&lt;br&gt;
'''Pour vous inscrire''', rien de plus simple : &gt;&gt; [[Spécial:Connexion|C'est ICI!]] &lt;&lt; Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...&lt;br&gt;
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !&lt;br&gt;

* Si vous n'avez jamais utilisé MediaWiki, vous pourrez trouver plus d'informations ici: [http://meta.wikimedia.org/wiki/Help:MediaWiki_Manual/fr Manuel de MediaWiki] + [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ MediaWiki]
* Ici vous aurez [[Special:Allpages | l'Index de toutes les pages du Wiki ]]
* En tant que membre du projet vous avez droit à une page personnelle [[ Special:Listusers | (accessible depuis votre UserId)]], une fois que vous vous êtes [[Special:Userlogin | loggé]]
&lt;br&gt;
{{color|maroon|'''Commencez par [[Aide:Accueil|&lt;&lt; l'aide &gt;&gt;]] pour apprendre à utiliser le Wiki'''}}

À votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;br&gt;&lt;br&gt;
Amusez vous bien ! ;-)
&lt;br&gt;&lt;br&gt;
{{color|maroon|'''Les dernières annonces de Sécurité Debian:'''}}
{{#widget:Iframe
|url=http://www.debian.org/security/2012/
|width=100%
|height=350
|border=0
}}

| 
{{Modèle:DernièresNouvelles}}
|-
|}
&lt;br&gt;</text>
      <sha1>sk3j071hyzveuv84nezrdkcpjfmcv5o</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Accueil.bak</title>
    <ns>0</ns>
    <id>264</id>
    <revision>
      <id>1159</id>
      <timestamp>2010-03-23T12:35:30Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « &lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt; &lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt; &lt;div style=&quot;line-height:120%; pad… »</comment>
      <text xml:space="preserve" bytes="6804">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:#005288; font-size:200%;&quot;&gt;'''Le projet de MediaWiki de forum.debian-fr.org'''&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
'''MediaWiki de forum.debian-fr.org''' est un document créé et maintenu par les participants du [http://forum.debian-fr.org forum.debian-fr.org].

'''Bienvenue''' sur la tentative de wiki de [http://forum.debian-fr.org forum.debian-fr.org].&lt;br/&gt;
Ce wiki a pour but de rassembler et ordonner tous les trucs et astuces qui concernent la distribution GNU/Linux Debian. En français bien sûr.&lt;br/&gt;
Nous comptons donc sur toute la communauté pour soutenir, améliorer, commenter et enrichir le contenu de ce wiki. Les contributions, même modestes, seront accueillies avec enthousiasme !

N'oubliez pas d'associer chacune de vos pages à une catégorie. Sinon, certaines pages risquent de se perdre en cours de route.&lt;br/&gt;
On associe une page à une catégorie en écrivant ceci en fin de page: '''&lt;nowiki&gt;[[Catégorie:nom de catégorie]]&lt;/nowiki&gt;'''&lt;br/&gt;
[[Utilisateur:L0u!$|L0u!$]]

----

Bonjour,

Nous mettrons pour l'instant, en vrac, tous les travaux en cours dans le menu &quot;travaux en cours&quot;. Les articles seront discutés, validés (ou pas), corrigés si nécessaire et prendront ensuite leur place dans les catégories adéquates !
Toutes les propositions d'organisation et validation seront étudiées et discutées. Elles sont toutes les bienvenues...

[[Utilisateur:Lol|Lol]]
----
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://forum.debian-fr.org forum.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !


{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}
A votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
----
Pensez à visiter '''[[Spécial:AWCforum|le forum Interne du Wiki]]''', de nouveaux sujets vous y attendent peut-être !

----

&lt;/div&gt;
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot; | '''[[Wiki.forum.debian-fr:Accueil|La Communauté]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:Catégories|Naviguer dans les Catégories]]''' &amp;nbsp; | &amp;nbsp; '''[[Spécial:AWCforum|Le forum Interne du Wiki]]''' &amp;nbsp; | &amp;nbsp; '''[[]]'''
|}
&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;border: 2px solid #aa0000; margin: 0 10px; padding: 0.2em; text-align: center; background: #ffffe0; color: #aa0000;&quot;&gt;'''Avertissement:''' Ce Wiki est en construction, en aucun cas ne s'appuyer sur les documents qu'il contient sans être extrêmement prudent. La plupart des articles, même s'ils proviennent en grande partie du travail des participants du [http://forum.debian-fr.org forum.debian-fr.org] ne sont pas encore &quot;validés&quot;, corrigés ou testés...&lt;/div&gt;

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Travaux en cours (en vrac)'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Utilisation_de_clefs_et_raccourcis_ssh|Utilisation de clefs et raccourcis SSH]]
* [[Manuel_d'installation|Brouillon d'un manuel d'installation]]
* [[:Catégorie:Commandes|Les commandes]]
* [[Les_Modules|Les modules]]
* [[:Catégorie:Wifi|Problèmes de Wi-Fi]]
* [[Gestionnaire_de_fenetres|Les gestionnaires de fenêtres]]
* [[Aide_efficace|Obtenir de l'aide efficacement]]
* [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
* [[Faireunpaquet|Faire un paquet Debian]]
* [[T%26A_intéressants|T&amp;A intéressants]]
* [[:Catégorie:Modèles|Les modèles]]
* [[Reinstallation_rapide|Reinstallation rapide]]
* [[CD_audio|CD audio]]
* [[Ntfs|Ntfs]]
* [[Fstab]]
* [[Glossaire|Glossaire]]
* [[Le fichier interfaces|/etc/network/interfaces]]
* [[Nettoyer_sa_Debian|Nettoyer sa Debian]]
* [[Trucs_et_astuces_pour_la_console|Trucs et astuces pour la console]]
* [[Utilisation_de_ndiswrapper|Utilisation de ndiswrapper]]
* [[Réinstaller_Grub2|Réinstaller Grub2]]
* [[Apt-listbugs]]
* [[Sauvegarde_et_clonage_d'un_système|Sauvegarde et clonage d'un système]]
* '''A suivre...'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Problèmes matériels'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Problèmes de son]]
* [[Problèmes de disques durs]]
* [[:Catégorie:Vidéo|Problèmes de carte vidéo]]
* '''[[:Catégorie:Matériel|Liste complète...]]'''
|}
&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&quot; |
&lt;div style=&quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&quot;&gt;'''Administration'''&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em;&quot;&gt;
{| style=&quot;border: 0; margin: 0;&quot; cellpadding=&quot;3&quot;
| valign=&quot;top&quot; |
| valign=&quot;top&quot; |
* [[Administration d'un serveur]]
* [[Les commandes plus complexes]]
* [[Mise à jour d'une Sid]]
* '''[[Administration suite|La suite...]]'''
|}&lt;/div&gt;

|}
{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; |&lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
'''Articles récents'''
&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&quot;&gt;

&lt;/div&gt;
| valign=&quot;top&quot; style=&quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot;|&lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;text-align:center;&quot;&gt;
'''[http://forum.debian-fr.org Accès Forum[[Image:Logo ayo.png]]]'''
&lt;/div&gt;

|}
[[Category:sommaire]]</text>
      <sha1>nqyll9o068v6umrnao4kq008mb1vmlh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Accueil.ori</title>
    <ns>0</ns>
    <id>1152</id>
    <revision>
      <id>4710</id>
      <timestamp>2012-11-01T07:16:56Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « {{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}} {{Template: Social}} {| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot; | class=&quot;MainPageBG... »</comment>
      <text xml:space="preserve" bytes="3867">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;float:left;&quot;&gt;{{#icon: 301px-Orange Icon Wiki.svg.png|Forum|24|https://www.isalo.org/wiki.debian-fr/}}&lt;/span&gt;
&lt;span style=&quot;color:#ffffff; float:left; font-size:100%;&quot;&gt;''' Wiki'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; float:right; font-size:100%;&quot;&gt;'''Forum '''&lt;/span&gt;&lt;span style=&quot;float:right;&quot;&gt;{{#icon: Forum-groupe-utilisateurs-icone-4597-128.png|Forum|24|https://www.debian-fr.org/}}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;

[[Fichier:IPv6_ready.png|75px|left|thumb]]

'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [https://www.debian-fr.org forum debian-fr.org].

'''Bienvenue''' sur le wiki du [https://www.debian-fr.org forum debian-fr.org].&lt;br/&gt;

{{color|magenta|''' &gt;&gt;&gt; [https://thank-you.debian.net/#thanks Dites Merci à Debian!!!] &lt;&lt;&lt;'''}}

{{color|magenta|''' &gt;&gt;&gt; [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]] &lt;&lt;&lt;'''}}

{{color|darkmagenta|'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]}}

----

'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [https://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !

{{color|magenta|'''Commencez par [[Aide:Accueil|l'aide ]] pour apprendre à utiliser le Wiki'''}}

À votre disposition pour vous entraîner à MediaWiki : [[Bac_à_sable|'''Le bac à sable''']]. N'hésitez pas à vous servir de cette page pour tester le Wiki et découvrir son fonctionnement !
&lt;/div&gt; 
{| width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;zborder-top:1px solid #aaaaaa; border-collapse: collapse;&quot; 
|- align=&quot;center&quot; valign=&quot;top&quot; 
| style=&quot;padding: 0.2em;&quot; width=&quot;25%&quot;|'''[[wiki.debian-fr:Accueil|La Communauté]]'''  |  '''[[Spécial:AWCforum|Le forum Interne du Wiki]]'''
|}
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ********************************* --&gt; &lt;!-- INDEX THÉMATIQUE  ET ARBORESCENCE --&gt; &lt;!-- ********************************* --&gt; 

{| width=&quot;100%&quot;
|-
| 
{{General/Modele
| titre = Index thématique
| modèle = General/Index
| tailleTitre = 120%
}} 

|}

----

{| style=&quot;border:0; margin: 0;&quot; width=&quot;100%&quot; cellspacing=&quot;10&quot;
|-
| valign=&quot;top&quot; style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;center&gt;'''[[Annonces_de_sécurité|Annonces de sécurité Debian]]'''&lt;/center&gt;
&lt;/div&gt;
&lt;center&gt;
{{#widget:Iframe
|url=http://www.debian.org/security/2012/
|width=800
|height=350
|border=0
}}
&lt;/center&gt;
| valign=&quot;top&quot; style=&quot;width: 45em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&quot; | &lt;div style=&quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;rss number=17&gt;https://www.debian-fr.org/rss/digest/rss.xml&lt;/rss&gt;
&lt;/div&gt;
|}

[[Category:General]] [[Category:Sommaire]]</text>
      <sha1>5gkv38gw95axa5s4udzttb1twit2wcm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Accélérer la synchro ntp au démarrage</title>
    <ns>0</ns>
    <id>549</id>
    <revision>
      <id>2263</id>
      <timestamp>2010-11-10T14:53:31Z</timestamp>
      <contributor>
        <username>Arthur</username>
        <id>53</id>
      </contributor>
      <comment>Page créée avec « Depuis sa mise en place, je trouvais ntpd mou du genou au démarrage, il mettait parfois 10 secondes à se synchroniser au serveur de temps.  Or, par défaut le fichier &lt;b&gt;/e... »</comment>
      <text xml:space="preserve" bytes="734">Depuis sa mise en place, je trouvais ntpd mou du genou au démarrage, il mettait parfois 10 secondes à se synchroniser au serveur de temps.

Or, par défaut le fichier &lt;b&gt;/etc/ntp.conf&lt;/b&gt; contient :

 server 0.debian.pool.ntp.org
 server 1.debian.pool.ntp.org
 server 2.debian.pool.ntp.org
 server 3.debian.pool.ntp.org


En remplaçant par :

 server 0.fr.pool.ntp.org
 server 1.fr.pool.ntp.org
 server 2.fr.pool.ntp.org
 server 3.fr.pool.ntp.org


C'est quasiment instantané.

Si vous êtes à l'étranger, choisissez votre continent sur la droite de cette page : [http://www.pool.ntp.org/fr/] puis votre pays pour obtenir les adresses des serveurs.

De plus, cela est conseillé pour réduire la charge des serveurs en question.</text>
      <sha1>mohfsvfhy888lh3oj5ck517tiolaro3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2264</id>
      <parentid>2263</parentid>
      <timestamp>2010-11-11T04:27:41Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="759">Depuis sa mise en place, je trouvais ntpd mou du genou au démarrage, il mettait parfois 10 secondes à se synchroniser au serveur de temps.

Or, par défaut le fichier &lt;b&gt;/etc/ntp.conf&lt;/b&gt; contient :

 server 0.debian.pool.ntp.org
 server 1.debian.pool.ntp.org
 server 2.debian.pool.ntp.org
 server 3.debian.pool.ntp.org


En remplaçant par :

 server 0.fr.pool.ntp.org
 server 1.fr.pool.ntp.org
 server 2.fr.pool.ntp.org
 server 3.fr.pool.ntp.org


C'est quasiment instantané.

Si vous êtes à l'étranger, choisissez votre continent sur la droite de cette page : [http://www.pool.ntp.org/fr/ The pool.ntp.org project] puis votre pays pour obtenir les adresses des serveurs.

De plus, cela est conseillé pour réduire la charge des serveurs en question.</text>
      <sha1>h36d40dzjm4gwntfh6uh1mc6n4jiopa</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2266</id>
      <parentid>2264</parentid>
      <timestamp>2010-11-11T04:30:44Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="799">Depuis sa mise en place, je trouvais ntpd mou du genou au démarrage, il mettait parfois 10 secondes à se synchroniser au serveur de temps.

Or, par défaut le fichier &lt;b&gt;/etc/ntp.conf&lt;/b&gt; contient :

 server 0.debian.pool.ntp.org
 server 1.debian.pool.ntp.org
 server 2.debian.pool.ntp.org
 server 3.debian.pool.ntp.org


En remplaçant par :

 server 0.fr.pool.ntp.org
 server 1.fr.pool.ntp.org
 server 2.fr.pool.ntp.org
 server 3.fr.pool.ntp.org


C'est quasiment instantané.

Si vous êtes à l'étranger, choisissez votre continent sur la droite de cette page : [http://www.pool.ntp.org/fr/ The pool.ntp.org project] puis votre pays pour obtenir les adresses des serveurs.

De plus, cela est conseillé pour réduire la charge des serveurs en question.

[[Catégorie:Trucs_et_Astuces_divers]]</text>
      <sha1>eanlbd0e8uherdiod6btfd9zk2bfsra</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4067</id>
      <parentid>2266</parentid>
      <timestamp>2012-04-26T08:13:21Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="792">Depuis sa mise en place, je trouvais ntpd mou du genou au démarrage, il mettait parfois 10 secondes à se synchroniser au serveur de temps.

Or, par défaut le fichier &lt;b&gt;/etc/ntp.conf&lt;/b&gt; contient :

 server 0.debian.pool.ntp.org
 server 1.debian.pool.ntp.org
 server 2.debian.pool.ntp.org
 server 3.debian.pool.ntp.org


En remplaçant par :

 server 0.fr.pool.ntp.org
 server 1.fr.pool.ntp.org
 server 2.fr.pool.ntp.org
 server 3.fr.pool.ntp.org


C'est quasiment instantané.

Si vous êtes à l'étranger, choisissez votre continent sur la droite de cette page : [http://www.pool.ntp.org/fr/ The pool.ntp.org project] puis votre pays pour obtenir les adresses des serveurs.

De plus, cela est conseillé pour réduire la charge des serveurs en question.

[[Catégorie:Trucs_et_Astuces]]</text>
      <sha1>qk54nsz0iltijptbu89vvabux7j30s1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Aide efficace</title>
    <ns>0</ns>
    <id>38</id>
    <revision>
      <id>85</id>
      <timestamp>2010-01-22T05:30:30Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <comment>Page créée avec « projet de le_fada pour des conseils sur la manière de bien poser un problème. »</comment>
      <text xml:space="preserve" bytes="79">projet de le_fada pour des conseils sur la manière de bien poser un problème.</text>
      <sha1>2mp1ndyo22px4e4jel0252m3kz3kvgr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>86</id>
      <parentid>85</parentid>
      <timestamp>2010-01-22T05:54:28Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <text xml:space="preserve" bytes="102">projet de le_fada pour des conseils sur la manière de bien poser un problème.


== Généralités ==</text>
      <sha1>gwabqei8wsii1vwzqkwlhosiedtt3xa</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>89</id>
      <parentid>86</parentid>
      <timestamp>2010-01-22T08:25:05Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <text xml:space="preserve" bytes="1714">projet de le_fada pour des conseils sur la manière de bien poser un problème.


== Généralités ==
Tout un chacun, un jour ou l'autre, est amené à rencontrer des problèmes divers et variés sur sa distribution préférée.
Après avoir cherché, sans succès, une solution par soi-même, il devient nécessaire de demander l'aide de personnes plus expérimentées... Encore faut-il savoir bien exposer sa requête pour avoir des chances d'obtenir des réponses pertinentes.
== Aide toi, le ciel t'aidera ==
Le premier réflexe, en cas de problème, doit être de rechercher soi-même une solution. Outre la satisfaction d'avoir réussi, cette façon de faire permet de progresser plus rapidement que l'application toute bète d'une recette déjà toute faite et que l'on a pas comprise. 
=== Chercher une solution sur son ordinateur ===
Une documentation bien fournie existe dèjà sur votre disque dur. Elle est généralement située dans le répertoire 
'''/usr/share/doc'''
Vous y trouverez les manuels de beaucoup d'applications, que ce soit sous forme texte, pdf ou html.
Il est aussi judicieux d'installer, avant que ne survienne un souci, de la documentation supplémentaire par l'intermédiaire de votre gestionnaire de paquets préféré.
les paquets '''debian-faq''' et '''debian-reference-fr''' sont bien utiles !
=== Chercher une solution sur internet ===
== Avoir recours à un forum ==
=== Rédiger un titre explicite ===
=== Formuler sa demande de façon claire ===
=== Quelles précisions apporter ? ===
==== Sa configuration matérielle et logicielle ====
==== Pour des problèmes de son ====
==== Pour des problèmes de vidéo ====
==== Pour des problèmes de réseau ====
== Euréka ! ==</text>
      <sha1>ts8gtfmjcsl7422ndbl0fhkufoogmcp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>90</id>
      <parentid>89</parentid>
      <timestamp>2010-01-22T08:27:05Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <text xml:space="preserve" bytes="1808">projet de le_fada pour des conseils sur la manière de bien poser un problème.


== Généralités ==
Tout un chacun, un jour ou l'autre, est amené à rencontrer des problèmes divers et variés sur sa distribution préférée.
Après avoir cherché, sans succès, une solution par soi-même, il devient nécessaire de demander l'aide de personnes plus expérimentées... Encore faut-il savoir bien exposer sa requête pour avoir des chances d'obtenir des réponses pertinentes.
== Aide toi, le ciel t'aidera ==
Le premier réflexe, en cas de problème, doit être de rechercher soi-même une solution. Outre la satisfaction d'avoir réussi, cette façon de faire permet de progresser plus rapidement que l'application toute bète d'une recette déjà toute faite et que l'on a pas comprise. 
=== Chercher une solution sur son ordinateur ===
Une documentation bien fournie existe dèjà sur votre disque dur. Elle est généralement située dans le répertoire 
'''/usr/share/doc'''
Vous y trouverez les manuels de beaucoup d'applications, que ce soit sous forme texte, pdf ou html.
Il est aussi judicieux d'installer, avant que ne survienne un souci, de la documentation supplémentaire par l'intermédiaire de votre gestionnaire de paquets préféré.
les paquets '''debian-faq''' et '''debian-reference-fr''' sont bien utiles !
=== Chercher une solution sur internet ===
== Avoir recours à un forum ==
=== Rédiger un titre explicite ===
=== Formuler sa demande de façon claire ===
=== Quelles précisions apporter ? ===
==== Sa configuration matérielle et logicielle ====
==== Pour des problèmes de son ====
==== Pour des problèmes de vidéo ====
==== Pour des problèmes de réseau ====
== Euréka ! ==
--[[Utilisateur:Le fada|le_fada... toujours à l&amp;#39;ouest !]] 22 janvier 2010 à 08:27 (UTC)</text>
      <sha1>aswzttlf5d6o149eygl2ldv9i4i9hg1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>103</id>
      <parentid>90</parentid>
      <timestamp>2010-01-22T12:33:17Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <text xml:space="preserve" bytes="2508">Tout un chacun, un jour ou l'autre, est amené à rencontrer des problèmes divers et variés sur sa distribution préférée.
Après avoir cherché, sans succès, une solution par soi-même, il devient nécessaire de demander l'aide de personnes plus expérimentées... Encore faut-il savoir bien exposer sa requête pour avoir des chances d'obtenir des réponses pertinentes.
== Aide toi, le ciel t'aidera ==
Le premier réflexe, en cas de problème, doit être de rechercher soi-même une solution. Outre la satisfaction d'avoir réussi, cette façon de faire permet de progresser plus rapidement que d'appliquer bêtement une recette déjà toute faite et que l'on a pas comprise. 
=== Chercher une solution sur son ordinateur ===
Une documentation bien fournie existe dèjà sur votre disque dur. 

Elle est généralement située dans le répertoire '''/usr/share/doc'''.

Vous y trouverez les manuels de beaucoup d'applications, que ce soit sous forme texte, pdf ou html.

Il est aussi judicieux d'installer, avant que ne survienne un souci, de la documentation supplémentaire par l'intermédiaire de votre gestionnaire de paquets préféré.
les paquets '''debian-faq''' et '''debian-reference-fr''' sont bien utiles !
=== Chercher une solution sur internet ===
Taper les &quot;mots clés&quot; concernant votre problème dans un moteur de recherche va souvent vous permettre de constater que vous n'ètes pas le premier à rencontrer ce problème.

La principale difficulté sera de faire le tri dans la masse de résultats qui vous sera proposée.

Vous pouvez donc restreindre la recherche à des domaines plus précis. Pour Debian, par exemple une recherche sur [http://www.google.com/cse/home?cx=008126959060284566340:ixitwp65ly0&amp;hl=fr Moteur-Google-Debian] ne vous renverra que les résultats trouvés sur les forums et wikis Debian-fr.org, Debian-façile.org et Andesi.org.

Pour faire une recherche qui porte uniquement sur le forum Debian-fr.org vous pouvez voir là : [http://www.google.com/cse/home?cx=008126959060284566340:r59guf_zvzw&amp;hl=fr Google-Forum.debian-fr]
== Avoir recours à un forum ==
=== Rédiger un titre explicite ===
=== Formuler sa demande de façon claire ===
=== Quelles précisions apporter ? ===
==== Sa configuration matérielle et logicielle ====
==== Pour des problèmes de son ====
==== Pour des problèmes de vidéo ====
==== Pour des problèmes de réseau ====
== Euréka ! ==
--[[Utilisateur:Le fada|le_fada... toujours à l&amp;#39;ouest !]] 22 janvier 2010 à 08:27 (UTC)</text>
      <sha1>1frweu26nezmicw7bybihhaq0ugk6ih</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>106</id>
      <parentid>103</parentid>
      <timestamp>2010-01-22T13:11:34Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <text xml:space="preserve" bytes="3559">Tout un chacun, un jour ou l'autre, est amené à rencontrer des problèmes divers et variés sur sa distribution préférée.
Après avoir cherché, sans succès, une solution par soi-même, il devient nécessaire de demander l'aide de personnes plus expérimentées... Encore faut-il savoir bien exposer sa requête pour avoir des chances d'obtenir des réponses pertinentes.
== Aide toi, le ciel t'aidera ==
Le premier réflexe, en cas de problème, doit être de rechercher soi-même une solution. Outre la satisfaction d'avoir réussi, cette façon de faire permet de progresser plus rapidement que d'appliquer bêtement une recette déjà toute faite et que l'on a pas comprise. 
=== Chercher une solution sur son ordinateur ===
Une documentation bien fournie existe dèjà sur votre disque dur. 

Elle est généralement située dans le répertoire '''/usr/share/doc'''.

Vous y trouverez les manuels de beaucoup d'applications, que ce soit sous forme texte, pdf ou html.

Il est aussi judicieux d'installer, avant que ne survienne un souci, de la documentation supplémentaire par l'intermédiaire de votre gestionnaire de paquets préféré.
les paquets '''debian-faq''' et '''debian-reference-fr''' sont bien utiles !
=== Chercher une solution sur internet ===
Taper les &quot;mots clés&quot; concernant votre problème dans un moteur de recherche va souvent vous permettre de constater que vous n'ètes pas le premier à rencontrer ce problème.

La principale difficulté sera de faire le tri dans la masse de résultats qui vous sera proposée.

Vous pouvez donc restreindre la recherche à des domaines plus précis. Pour Debian, par exemple une recherche sur [http://www.google.com/cse/home?cx=008126959060284566340:ixitwp65ly0&amp;hl=fr Moteur-Google-Debian] ne vous renverra que les résultats trouvés sur les forums et wikis Debian-fr.org, Debian-façile.org et Andesi.org.

Pour faire une recherche qui porte uniquement sur le forum Debian-fr.org vous pouvez voir là : [http://www.google.com/cse/home?cx=008126959060284566340:r59guf_zvzw&amp;hl=fr Google-Forum.debian-fr]

Pensez aussi aux groupes de discussions, par exemple le [http://groups.google.fr/group/linux.debian.user.french/topics?lnk Debian Google-groupe Français]
== Avoir recours à un forum ==
Avant de poser votre question pensez à utiliser la fonction &quot;Rechercher&quot; présente sur la page d'accueil... le sujet a peut-être déjà été traité... et résolu !
=== Rédiger un titre explicite ===
Le titre de votre sujet est important, c'est lui qui va &quot; attirer le chaland &quot; et lui donner envie de regarder plus attentivement votre problème. Proscrivez absolument tout titre du genre &quot; HELP !!!&quot;, &quot;Au secours...&quot;...qui va faire fuir bon nombre de participants.

Le titre doît être le résumé de votre question, préférez donc : &quot; Ma carte Nvidia GT Sport ne fonctionne pas&quot;... à &quot; Au secours please !!! Ecran noir !!!&quot;
=== Formuler sa demande de façon claire ===
Essayez, dans la mesure du possible, de rédiger un texte clair avec des phrases courtes. Pensez à ceux qui vous lisent, soignez l'orthographe et la ponctuation. Relisez vous : si vous ne comprenez pas ce que vous avez écrit... les autres non plus.

Le langage SMS est bien entendu à proscrire.
=== Quelles précisions apporter ? ===
==== Sa configuration matérielle et logicielle ====
==== Pour des problèmes de son ====
==== Pour des problèmes de vidéo ====
==== Pour des problèmes de réseau ====
== Euréka ! ==
--[[Utilisateur:Le fada|le_fada... toujours à l&amp;#39;ouest !]] 22 janvier 2010 à 08:27 (UTC)</text>
      <sha1>9oprjcqqhix0qt0mq84be701v2l44os</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>107</id>
      <parentid>106</parentid>
      <timestamp>2010-01-22T13:21:08Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <text xml:space="preserve" bytes="3616">Tout un chacun, un jour ou l'autre, est amené à rencontrer des problèmes divers et variés sur sa distribution préférée.
Après avoir cherché, sans succès, une solution par soi-même, il devient nécessaire de demander l'aide de personnes plus expérimentées... Encore faut-il savoir bien exposer sa requête pour avoir des chances d'obtenir des réponses pertinentes.
== Aide toi, le ciel t'aidera ==
Le premier réflexe, en cas de problème, doit être de rechercher soi-même une solution. Outre la satisfaction d'avoir réussi, cette façon de faire permet de progresser plus rapidement que d'appliquer bêtement une recette déjà toute faite et que l'on a pas comprise. 
=== Chercher une solution sur son ordinateur ===
Une documentation bien fournie existe dèjà sur votre disque dur. 

Elle est généralement située dans le répertoire '''/usr/share/doc'''.

Vous y trouverez les manuels de beaucoup d'applications, que ce soit sous forme texte, pdf ou html.

Il est aussi judicieux d'installer, avant que ne survienne un souci, de la documentation supplémentaire par l'intermédiaire de votre gestionnaire de paquets préféré.
les paquets '''debian-faq''' et '''debian-reference-fr''' sont bien utiles !
=== Chercher une solution sur internet ===
Taper les &quot;mots clés&quot; concernant votre problème dans un moteur de recherche va souvent vous permettre de constater que vous n'ètes pas le premier à rencontrer ce problème.

La principale difficulté sera de faire le tri dans la masse de résultats qui vous sera proposée.

Vous pouvez donc restreindre la recherche à des domaines plus précis. Pour Debian, par exemple une recherche sur [http://www.google.com/cse/home?cx=008126959060284566340:ixitwp65ly0&amp;hl=fr Moteur-Google-Debian] ne vous renverra que les résultats trouvés sur les forums et wikis Debian-fr.org, Debian-façile.org et Andesi.org.

Pour faire une recherche qui porte uniquement sur le forum Debian-fr.org vous pouvez voir là : [http://www.google.com/cse/home?cx=008126959060284566340:r59guf_zvzw&amp;hl=fr Google-Forum.debian-fr]

Pensez aussi aux groupes de discussions, par exemple le [http://groups.google.fr/group/linux.debian.user.french/topics?lnk Debian Google-groupe Français]
== Avoir recours à un forum ==
Avant de poser votre question pensez à utiliser la fonction &quot;Rechercher&quot; présente sur la page d'accueil... le sujet a peut-être déjà été traité... et résolu !
=== Rédiger un titre explicite ===
Le titre de votre sujet est important, c'est lui qui va &quot; attirer le chaland &quot; et lui donner envie de regarder plus attentivement votre problème. Proscrivez absolument tout titre du genre &quot; HELP !!!&quot;, &quot;Au secours...&quot;...qui va faire fuir bon nombre de participants.

Le titre doît être le résumé de votre question, préférez donc : &quot; Ma carte Nvidia GT Sport ne fonctionne pas&quot;... à &quot; Au secours please !!! Ecran noir !!!&quot;
=== Formuler sa demande de façon claire ===
Essayez, dans la mesure du possible, de rédiger un texte clair avec des phrases courtes. Pensez à ceux qui vous lisent, soignez l'orthographe et la ponctuation. Relisez vous : si vous ne comprenez pas ce que vous avez écrit... les autres non plus.

Respectez la règle : un seul problème par discussion.

Le langage SMS est bien entendu à proscrire.
=== Quelles précisions apporter ? ===
==== Sa configuration matérielle et logicielle ====
==== Pour des problèmes de son ====
==== Pour des problèmes de vidéo ====
==== Pour des problèmes de réseau ====
== Euréka ! ==
--[[Utilisateur:Le fada|le_fada... toujours à l&amp;#39;ouest !]] 22 janvier 2010 à 08:27 (UTC)</text>
      <sha1>3gsu1xwzo7xxs2jd5x3is1iwglw41ps</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>108</id>
      <parentid>107</parentid>
      <timestamp>2010-01-22T16:23:18Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <text xml:space="preserve" bytes="5876">Tout un chacun, un jour ou l'autre, est amené à rencontrer des problèmes divers et variés sur sa distribution préférée.
Après avoir cherché, sans succès, une solution par soi-même, il devient nécessaire de demander l'aide de personnes plus expérimentées... Encore faut-il savoir bien exposer sa requête pour avoir des chances d'obtenir des réponses pertinentes.
== Aide toi, le ciel t'aidera ==
Le premier réflexe, en cas de problème, doit être de rechercher soi-même une solution. Outre la satisfaction d'avoir réussi, cette façon de faire permet de progresser plus rapidement que d'appliquer bêtement une recette déjà toute faite et que l'on a pas comprise. 
=== Chercher une solution sur son ordinateur ===
Une documentation bien fournie existe dèjà sur votre disque dur. 

Elle est généralement située dans le répertoire '''/usr/share/doc'''.

Vous y trouverez les manuels de beaucoup d'applications, que ce soit sous forme texte, pdf ou html.

Il est aussi judicieux d'installer, avant que ne survienne un souci, de la documentation supplémentaire par l'intermédiaire de votre gestionnaire de paquets préféré.
les paquets '''debian-faq''' et '''debian-reference-fr''' sont bien utiles !
=== Chercher une solution sur internet ===
Taper les &quot;mots clés&quot; concernant votre problème dans un moteur de recherche va souvent vous permettre de constater que vous n'ètes pas le premier à rencontrer ce problème.

La principale difficulté sera de faire le tri dans la masse de résultats qui vous sera proposée.

Vous pouvez donc restreindre la recherche à des domaines plus précis. Pour Debian, par exemple une recherche sur [http://www.google.com/cse/home?cx=008126959060284566340:ixitwp65ly0&amp;hl=fr Moteur-Google-Debian] ne vous renverra que les résultats trouvés sur les forums et wikis Debian-fr.org, Debian-façile.org et Andesi.org.

Pour faire une recherche qui porte uniquement sur le forum Debian-fr.org vous pouvez voir là : [http://www.google.com/cse/home?cx=008126959060284566340:r59guf_zvzw&amp;hl=fr Google-Forum.debian-fr]

Pensez aussi aux groupes de discussions, par exemple le [http://groups.google.fr/group/linux.debian.user.french/topics?lnk Debian Google-groupe Français]

Enfin, il y a bien sur la [http://www.debian.org/doc/index.fr.html documentation officielle Debian].
== Avoir recours à un forum ==
Avant de poser votre question pensez à utiliser la fonction &quot;Rechercher&quot; présente sur la page d'accueil... le sujet a peut-être déjà été traité... et résolu !
Revenez régulièrement sur le forum pour voir si une réponse a été postée, ou réglez vos préférences pour être averti par mail qu'une réponse a été postée.
Ne soyez pas trop impatient, un &quot;up&quot; toutes les cinq minutes ne searait pas trop bien vu !
=== Rédiger un titre explicite ===
Le titre de votre sujet est important, c'est lui qui va &quot; attirer le chaland &quot; et lui donner envie de regarder plus attentivement votre problème. Proscrivez absolument tout titre du genre &quot; HELP !!!&quot;, &quot;Au secours...&quot;...qui va faire fuir bon nombre de participants.

Le titre doît être le résumé de votre question, préférez donc : &quot; Ma carte Nvidia GT Sport ne fonctionne pas&quot;... à &quot; Au secours please !!! Ecran noir !!!&quot;
=== Formuler sa demande de façon claire ===
Essayez, dans la mesure du possible, de rédiger un texte clair avec des phrases courtes. Pensez à ceux qui vous lisent, soignez l'orthographe et la ponctuation. Relisez vous : si vous ne comprenez pas ce que vous avez écrit... les autres non plus.

Respectez la règle : un seul problème par discussion.

Le langage SMS est bien entendu à proscrire.
=== Quelles précisions apporter ? ===
D'une manière générale il est bon de préciser
*Sa version de Debian ( $ cat /etc/debian_version )
*La version du noyau Linux ( $ uname -a )
*Son gestionnaire de fenètres ( Gnome, Kde, Xfce, ...etc ) et éventuellement son gestionnaire de connection ( gdm, kdm,...)

==== Sa configuration matérielle ====
Les commandes suivantes vous permettront de connaitre votre matériel :
* '''$ lspci''' : informations sur les périphériques pci.
* '''$ lsusb''' : informations sur les périphériques branchés sur les ports usb.
* '''# dmidecode''' : informations sur votre matériel collectées depuis le bios.
* Le répertoire '''/proc''' contient également des fichiers donnant des informations utiles ( par exemple '''$ cat /proc/cpuinfo''' vous renseignera sur votre (vos) processeur(s) )
==== Les éventuels messages d'erreur ====
Les messages d'erreur de votre dernière connection peuvent être utiles :
* '''# dmesg /var/log/messages'''
* '''# dmesg /var/log/syslog'''
* '''# dmesg /var/log/xorg.0.log''' : pour des problèmes liés au serveur X
Essayez tout de même de faire un tri par vous même et d'isoler les messages d'erreurs : lire un copié/collé de 300 lignes en rebute plus d'un !
==== Autres commandes utiles ====
* '''$ df -h''' : Informations sur l'emplacement de montage des systèmes de fichiers.
* '''# fdisk -l''' : Informations sur le partitionnement de vos disques durs.
==== Pour des problèmes de réseau ====
Pour établir un diagnostic, il est utile de connaitre le contenu des fichiers :
* '''/etc/network/interfaces'''
* /'''etc/resolv.conf'''
Le résultat des commandes 
* '''# ifconfig -a'''
* '''# iwconfig''' : pour le wifi
* '''# route -n'''
peut aussi aider.
== Euréka ! ==
Ça y est ! votre problème est réglé !
Pensez à la &quot;coche verte&quot; pour marquer le sujet comme résolu. Vous pouvez aussi ajouter [Résolu] en tête de votre premier message.

Un merci n'est pas obligatoire, mais fait toujours plaisir.

Si vous avez réglé votre problème par vous même, bravo ! Mais faites en profiter les copains, dites comment vous avez fait.


--[[Utilisateur:Le fada|le_fada... toujours à l&amp;#39;ouest !]] 22 janvier 2010 à 08:27 (UTC)</text>
      <sha1>j6fmw3ysj6fsui8oc9gxx9ln68c8czm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>109</id>
      <parentid>108</parentid>
      <timestamp>2010-01-22T16:28:08Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="5983">Tout un chacun, un jour ou l'autre, est amené à rencontrer des problèmes divers et variés sur sa distribution préférée.
Après avoir cherché, sans succès, une solution par soi-même, il devient nécessaire de demander l'aide de personnes plus expérimentées... Encore faut-il savoir bien exposer sa requête pour avoir des chances d'obtenir des réponses pertinentes.
== Aide toi, le ciel t'aidera ==
Le premier réflexe, en cas de problème, doit être de rechercher soi-même une solution. Outre la satisfaction d'avoir réussi, cette façon de faire permet de progresser plus rapidement que d'appliquer bêtement une recette déjà toute faite et que l'on a pas comprise. 
=== Chercher une solution sur son ordinateur ===
Une documentation bien fournie existe dèjà sur votre disque dur. 

Elle est généralement située dans le répertoire '''/usr/share/doc'''.

Vous y trouverez les manuels de beaucoup d'applications, que ce soit sous forme texte, pdf ou html.

Il est aussi judicieux d'installer, avant que ne survienne un souci, de la documentation supplémentaire par l'intermédiaire de votre gestionnaire de paquets préféré.
les paquets '''debian-faq''' et '''debian-reference-fr''' sont bien utiles !
=== Chercher une solution sur internet ===
Taper les &quot;mots clés&quot; concernant votre problème dans un moteur de recherche va souvent vous permettre de constater que vous n'ètes pas le premier à rencontrer ce problème.

La principale difficulté sera de faire le tri dans la masse de résultats qui vous sera proposée.

Vous pouvez donc restreindre la recherche à des domaines plus précis. Pour Debian, par exemple une recherche sur [http://www.google.com/cse/home?cx=008126959060284566340:ixitwp65ly0&amp;hl=fr Moteur-Google-Debian] ne vous renverra que les résultats trouvés sur les forums et wikis Debian-fr.org, Debian-façile.org et Andesi.org.

Pour faire une recherche qui porte uniquement sur le forum Debian-fr.org vous pouvez voir là : [http://www.google.com/cse/home?cx=008126959060284566340:r59guf_zvzw&amp;hl=fr Google-Forum.debian-fr]

Pensez aussi aux groupes de discussions, par exemple le [http://groups.google.fr/group/linux.debian.user.french/topics?lnk Debian Google-groupe Français]

Enfin, il y a bien sur la [http://www.debian.org/doc/index.fr.html documentation officielle Debian].
== Avoir recours à un forum ==
Avant de poser votre question pensez à utiliser la fonction &quot;Rechercher&quot; présente sur la page d'accueil... le sujet a peut-être déjà été traité... et résolu !
Revenez régulièrement sur le forum pour voir si une réponse a été postée, ou réglez vos préférences pour être averti par mail qu'une réponse a été postée.
Ne soyez pas trop impatient, un &quot;up&quot; toutes les cinq minutes ne searait pas trop bien vu !
=== Rédiger un titre explicite ===
Le titre de votre sujet est important, c'est lui qui va &quot; attirer le chaland &quot; et lui donner envie de regarder plus attentivement votre problème. Proscrivez absolument tout titre du genre &quot; HELP !!!&quot;, &quot;Au secours...&quot;...qui va faire fuir bon nombre de participants.

Le titre doît être le résumé de votre question, préférez donc : &quot; Ma carte Nvidia GT Sport ne fonctionne pas&quot;... à &quot; Au secours please !!! Ecran noir !!!&quot;
=== Formuler sa demande de façon claire ===
Essayez, dans la mesure du possible, de rédiger un texte clair avec des phrases courtes. Pensez à ceux qui vous lisent, soignez l'orthographe et la ponctuation. Relisez vous : si vous ne comprenez pas ce que vous avez écrit... les autres non plus.

Respectez la règle : un seul problème par discussion.

Le langage SMS est bien entendu à proscrire.
=== Quelles précisions apporter ? ===
D'une manière générale il est bon de préciser
*Sa version de Debian ( '''$ cat /etc/debian_version''' )
*La version du noyau Linux ( '''$ uname -a''' )
*Son gestionnaire de fenètres ( Gnome, Kde, Xfce, ...etc ) et éventuellement son gestionnaire de connection ( gdm, kdm,...)
Une bonne idée est d'inclure ces renseignements dans sa signature ( et de la tenir à jour ).

==== Sa configuration matérielle ====
Les commandes suivantes vous permettront de connaitre votre matériel :
* '''$ lspci''' : informations sur les périphériques pci.
* '''$ lsusb''' : informations sur les périphériques branchés sur les ports usb.
* '''# dmidecode''' : informations sur votre matériel collectées depuis le bios.
* Le répertoire '''/proc''' contient également des fichiers donnant des informations utiles ( par exemple '''$ cat /proc/cpuinfo''' vous renseignera sur votre (vos) processeur(s) )
==== Les éventuels messages d'erreur ====
Les messages d'erreur de votre dernière connection peuvent être utiles :
* '''# dmesg /var/log/messages'''
* '''# dmesg /var/log/syslog'''
* '''# dmesg /var/log/xorg.0.log''' : pour des problèmes liés au serveur X
Essayez tout de même de faire un tri par vous même et d'isoler les messages d'erreurs : lire un copié/collé de 300 lignes en rebute plus d'un !
==== Autres commandes utiles ====
* '''$ df -h''' : Informations sur l'emplacement de montage des systèmes de fichiers.
* '''# fdisk -l''' : Informations sur le partitionnement de vos disques durs.
==== Pour des problèmes de réseau ====
Pour établir un diagnostic, il est utile de connaitre le contenu des fichiers :
* '''/etc/network/interfaces'''
* /'''etc/resolv.conf'''
Le résultat des commandes 
* '''# ifconfig -a'''
* '''# iwconfig''' : pour le wifi
* '''# route -n'''
peut aussi aider.
== Euréka ! ==
Ça y est ! votre problème est réglé !
Pensez à la &quot;coche verte&quot; pour marquer le sujet comme résolu. Vous pouvez aussi ajouter [Résolu] en tête de votre premier message.

Un merci n'est pas obligatoire, mais fait toujours plaisir.

Si vous avez réglé votre problème par vous même, bravo ! Mais faites en profiter les copains, dites comment vous avez fait.


--[[Utilisateur:Le fada|le_fada... toujours à l&amp;#39;ouest !]] 22 janvier 2010 à 08:27 (UTC)</text>
      <sha1>9wvzgokuprlclzog7o4ocf63ehdy89h</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>111</id>
      <parentid>109</parentid>
      <timestamp>2010-01-22T17:34:38Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="5981">Tout un chacun, un jour ou l'autre, est amené à rencontrer des problèmes divers et variés sur sa distribution préférée.
Après avoir cherché, sans succès, une solution par soi-même, il devient nécessaire de demander l'aide de personnes plus expérimentées... Encore faut-il savoir bien exposer sa requête pour avoir des chances d'obtenir des réponses pertinentes.
== Aide toi, le ciel t'aidera ==
Le premier réflexe, en cas de problème, doit être de rechercher soi-même une solution. Outre la satisfaction d'avoir réussi, cette façon de faire permet de progresser plus rapidement que d'appliquer bêtement une recette déjà toute faite et que l'on a pas comprise. 
=== Chercher une solution sur son ordinateur ===
Une documentation bien fournie existe dèjà sur votre disque dur. 

Elle est généralement située dans le répertoire '''/usr/share/doc'''.

Vous y trouverez les manuels de beaucoup d'applications, que ce soit sous forme texte, pdf ou html.

Il est aussi judicieux d'installer, avant que ne survienne un souci, de la documentation supplémentaire par l'intermédiaire de votre gestionnaire de paquets préféré.
les paquets '''debian-faq''' et '''debian-reference-fr''' sont bien utiles !
=== Chercher une solution sur internet ===
Taper les &quot;mots clés&quot; concernant votre problème dans un moteur de recherche va souvent vous permettre de constater que vous n'êtes pas le premier à rencontrer ce problème.

La principale difficulté sera de faire le tri dans la masse de résultats qui vous sera proposée.

Vous pouvez donc restreindre la recherche à des domaines plus précis. Pour Debian, par exemple une recherche sur [http://www.google.com/cse/home?cx=008126959060284566340:ixitwp65ly0&amp;hl=fr Moteur-Google-Debian] ne vous renverra que les résultats trouvés sur les forums et wikis Debian-fr.org, Debian-façile.org et Andesi.org.

Pour faire une recherche qui porte uniquement sur le forum Debian-fr.org vous pouvez voir là : [http://www.google.com/cse/home?cx=008126959060284566340:r59guf_zvzw&amp;hl=fr Google-Forum.debian-fr]

Pensez aussi aux groupes de discussions, par exemple le [http://groups.google.fr/group/linux.debian.user.french/topics?lnk Debian Google-groupe Français]

Enfin, il y a bien sur la [http://www.debian.org/doc/index.fr.html documentation officielle Debian].
== Avoir recours à un forum ==
Avant de poser votre question pensez à utiliser la fonction &quot;Rechercher&quot; présente sur la page d'accueil... le sujet a peut-être déjà été traité... et résolu !
Revenez régulièrement sur le forum pour voir si une réponse a été postée, ou réglez vos préférences pour être averti par mail qu'une réponse a été postée.
Ne soyez pas trop impatient, un &quot;up&quot; toutes les cinq minutes ne serait pas trop bien vu !
=== Rédiger un titre explicite ===
Le titre de votre sujet est important, c'est lui qui va &quot; attirer le chaland &quot; et lui donner envie de regarder plus attentivement votre problème. Proscrivez absolument tout titre du genre &quot; HELP !!!&quot;, &quot;Au secours...&quot;...qui va faire fuir bon nombre de participants.

Le titre doit être le résumé de votre question, préférez donc : &quot; Ma carte Nvidia GT Sport ne fonctionne pas&quot;... à &quot; Au secours please !!! Écran noir !!!&quot;
=== Formuler sa demande de façon claire ===
Essayez, dans la mesure du possible, de rédiger un texte clair avec des phrases courtes. Pensez à ceux qui vous lisent, soignez l'orthographe et la ponctuation. Relisez vous : si vous ne comprenez pas ce que vous avez écrit... les autres non plus.

Respectez la règle : un seul problème par discussion.

Le langage SMS est bien entendu à proscrire.
=== Quelles précisions apporter ? ===
D'une manière générale il est bon de préciser
*Sa version de Debian ( '''$ cat /etc/debian_version''' )
*La version du noyau Linux ( '''$ uname -a''' )
*Son gestionnaire de fenètres ( Gnome, Kde, Xfce, ...etc ) et éventuellement son gestionnaire de connection ( gdm, kdm,...)
Une bonne idée est d'inclure ces renseignements dans sa signature ( et de la tenir à jour ).

==== Sa configuration matérielle ====
Les commandes suivantes vous permettront de connaitre votre matériel :
* '''$ lspci''' : informations sur les périphériques pci.
* '''$ lsusb''' : informations sur les périphériques branchés sur les ports usb.
* '''# dmidecode''' : informations sur votre matériel collectées depuis le bios.
* Le répertoire '''/proc''' contient également des fichiers donnant des informations utiles ( par exemple '''$ cat /proc/cpuinfo''' vous renseignera sur votre (vos) processeur(s) )
==== Les éventuels messages d'erreur ====
Les messages d'erreur de votre dernière connexion peuvent être utiles :
* '''# dmesg /var/log/messages'''
* '''# dmesg /var/log/syslog'''
* '''# dmesg /var/log/xorg.0.log''' : pour des problèmes liés au serveur X
Essayez tout de même de faire un tri par vous même et d'isoler les messages d'erreurs : lire un copié/collé de 300 lignes en rebute plus d'un !
==== Autres commandes utiles ====
* '''$ df -h''' : Informations sur l'emplacement de montage des systèmes de fichiers.
* '''# fdisk -l''' : Informations sur le partitionnement de vos disques durs.
==== Pour des problèmes de réseau ====
Pour établir un diagnostic, il est utile de connaitre le contenu des fichiers :
* '''/etc/network/interfaces'''
* /'''etc/resolv.conf'''
Le résultat des commandes 
* '''# ifconfig -a'''
* '''# iwconfig''' : pour le wifi
* '''# route -n'''
peut aussi aider.
== Eurêka ! ==
Ça y est ! votre problème est réglé !
Pensez à la &quot;coche verte&quot; pour marquer le sujet comme résolu. Vous pouvez aussi ajouter [Résolu] en tête de votre premier message.

Un merci n'est pas obligatoire, mais fait toujours plaisir.

Si vous avez réglé votre problème par vous même, bravo ! Mais faites en profiter les copains, dites comment vous avez fait.


--[[Utilisateur:Le fada|le_fada... toujours à l&amp;#39;ouest !]] 22 janvier 2010 à 08:27 (UTC)</text>
      <sha1>9d9z66w4omyqpgowodksl86j3po1tu1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>159</id>
      <parentid>111</parentid>
      <timestamp>2010-01-23T12:52:36Z</timestamp>
      <contributor>
        <username>Wetaskiwin</username>
        <id>10</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="5985">Tout un chacun, un jour ou l'autre, est amené à rencontrer des problèmes divers et variés sur sa distribution préférée.
Après avoir cherché, sans succès, une solution par soi-même, il devient nécessaire de demander l'aide de personnes plus expérimentées... Encore faut-il savoir bien exposer sa requête pour avoir des chances d'obtenir des réponses pertinentes.
== Aide toi, le ciel t'aidera ==
Le premier réflexe, en cas de problème, doit être de rechercher soi-même une solution. Outre la satisfaction d'avoir réussi, cette façon de faire permet de progresser plus rapidement que d'appliquer bêtement une recette déjà toute faite et que l'on n'a pas comprise. 
=== Chercher une solution sur son ordinateur ===
Une documentation bien fournie existe dèjà sur votre disque dur. 

Elle est généralement située dans le répertoire '''/usr/share/doc'''.

Vous y trouverez les manuels de beaucoup d'applications, que ce soit sous forme texte, pdf ou html.

Il est aussi judicieux d'installer, avant que ne survienne un souci, de la documentation supplémentaire par l'intermédiaire de votre gestionnaire de paquets préféré.
Les paquets '''debian-faq''' et '''debian-reference-fr''' sont bien utiles !
=== Chercher une solution sur internet ===
Taper les &quot;mots clés&quot; concernant votre problème dans un moteur de recherche va souvent vous permettre de constater que vous n'êtes pas le premier à rencontrer ce problème.

La principale difficulté sera de faire le tri dans la masse de résultats qui vous sera proposée.

Vous pouvez donc restreindre la recherche à des domaines plus précis. Pour Debian, par exemple une recherche sur [http://www.google.com/cse/home?cx=008126959060284566340:ixitwp65ly0&amp;hl=fr Moteur-Google-Debian] ne vous renverra que les résultats trouvés sur les forums et wikis Debian-fr.org, Debian-facile.org et Andesi.org.

Pour faire une recherche qui porte uniquement sur le forum Debian-fr.org vous pouvez voir là : [http://www.google.com/cse/home?cx=008126959060284566340:r59guf_zvzw&amp;hl=fr Google-Forum.debian-fr]

Pensez aussi aux groupes de discussions, par exemple le [http://groups.google.fr/group/linux.debian.user.french/topics?lnk Debian Google-groupe Français]

Enfin, il y a bien sur la [http://www.debian.org/doc/index.fr.html documentation officielle Debian].
== Avoir recours à un forum ==
Avant de poser votre question, pensez à utiliser la fonction &quot;Rechercher&quot; présente sur la page d'accueil... Le sujet a peut-être déjà été traité... et résolu !
Revenez régulièrement sur le forum pour voir si une réponse a été postée, ou réglez vos préférences pour être averti par mail qu'une réponse a été postée.
Ne soyez pas trop impatient, un &quot;up&quot; toutes les cinq minutes ne serait pas trop bien vu !
=== Rédiger un titre explicite ===
Le titre de votre sujet est important, c'est lui qui va &quot; attirer le chaland &quot; et lui donner envie de regarder plus attentivement votre problème. Proscrivez absolument tout titre du genre &quot; HELP !!!&quot;, &quot;Au secours...&quot;...qui va faire fuir bon nombre de participants.

Le titre doit être le résumé de votre question, préférez donc : &quot; Ma carte Nvidia GT Sport ne fonctionne pas&quot;... à &quot; Au secours please !!! Écran noir !!!&quot;
=== Formuler sa demande de façon claire ===
Essayez, dans la mesure du possible, de rédiger un texte clair avec des phrases courtes. Pensez à ceux qui vous lisent, soignez l'orthographe et la ponctuation. Relisez vous : si vous ne comprenez pas ce que vous avez écrit... les autres non plus.

Respectez la règle : un seul problème par discussion.

Le langage SMS est bien entendu à proscrire.
=== Quelles précisions apporter ? ===
D'une manière générale, il est bon de préciser
*Sa version de Debian ( '''$ cat /etc/debian_version''' )
*La version du noyau Linux ( '''$ uname -a''' )
*Son gestionnaire de fenètres ( Gnome, Kde, Xfce, ...etc ) et éventuellement son gestionnaire de connection ( gdm, kdm,...)
Une bonne idée est d'inclure ces renseignements dans sa signature ( et de la tenir à jour ).

==== Sa configuration matérielle ====
Les commandes suivantes vous permettront de connaître votre matériel :
* '''$ lspci''' : informations sur les périphériques pci.
* '''$ lsusb''' : informations sur les périphériques branchés sur les ports usb.
* '''# dmidecode''' : informations sur votre matériel collectées depuis le bios.
* Le répertoire '''/proc''' contient également des fichiers donnant des informations utiles ( par exemple '''$ cat /proc/cpuinfo''' vous renseignera sur votre (vos) processeur(s) )
==== Les éventuels messages d'erreur ====
Les messages d'erreur de votre dernière connexion peuvent être utiles :
* '''# dmesg /var/log/messages'''
* '''# dmesg /var/log/syslog'''
* '''# dmesg /var/log/xorg.0.log''' : pour des problèmes liés au serveur X
Essayez tout de même de faire un tri par vous-même et d'isoler les messages d'erreurs : lire un copié/collé de 300 lignes en rebute plus d'un !
==== Autres commandes utiles ====
* '''$ df -h''' : Informations sur l'emplacement de montage des systèmes de fichiers.
* '''# fdisk -l''' : Informations sur le partitionnement de vos disques durs.
==== Pour des problèmes de réseau ====
Pour établir un diagnostic, il est utile de connaître le contenu des fichiers :
* '''/etc/network/interfaces'''
* /'''etc/resolv.conf'''
Le résultat des commandes 
* '''# ifconfig -a'''
* '''# iwconfig''' : pour le wifi
* '''# route -n'''
peut aussi aider.
== Eurêka ! ==
Ça y est ! votre problème est réglé !
Pensez à la &quot;coche verte&quot; pour marquer le sujet comme résolu. Vous pouvez aussi ajouter [Résolu] en tête de votre premier message.

Un merci n'est pas obligatoire mais fait toujours plaisir.

Si vous avez réglé votre problème par vous-même, bravo ! Mais faites en profiter les copains, dites comment vous avez fait.


--[[Utilisateur:Le fada|le_fada... toujours à l&amp;#39;ouest !]] 22 janvier 2010 à 08:27 (UTC)</text>
      <sha1>qwtmajc5ck2f685md0bhj9wd2xyvmo5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>464</id>
      <parentid>159</parentid>
      <timestamp>2010-01-28T21:00:55Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="6005">Tout un chacun, un jour ou l'autre, est amené à rencontrer des problèmes divers et variés sur sa distribution préférée.
Après avoir cherché, sans succès, une solution par soi-même, il devient nécessaire de demander l'aide de personnes plus expérimentées... Encore faut-il savoir bien exposer sa requête pour avoir des chances d'obtenir des réponses pertinentes.
== Aide toi, le ciel t'aidera ==
Le premier réflexe, en cas de problème, doit être de rechercher soi-même une solution. Outre la satisfaction d'avoir réussi, cette façon de faire permet de progresser plus rapidement que d'appliquer bêtement une recette déjà toute faite et que l'on n'a pas comprise. 
=== Chercher une solution sur son ordinateur ===
Une documentation bien fournie existe dèjà sur votre disque dur. 

Elle est généralement située dans le répertoire '''/usr/share/doc'''.

Vous y trouverez les manuels de beaucoup d'applications, que ce soit sous forme texte, pdf ou html.

Il est aussi judicieux d'installer, avant que ne survienne un souci, de la documentation supplémentaire par l'intermédiaire de votre gestionnaire de paquets préféré.
Les paquets '''debian-faq''' et '''debian-reference-fr''' sont bien utiles !
=== Chercher une solution sur internet ===
Taper les &quot;mots clés&quot; concernant votre problème dans un moteur de recherche va souvent vous permettre de constater que vous n'êtes pas le premier à rencontrer ce problème.

La principale difficulté sera de faire le tri dans la masse de résultats qui vous sera proposée.

Vous pouvez donc restreindre la recherche à des domaines plus précis. Pour Debian, par exemple une recherche sur [http://www.google.com/cse/home?cx=008126959060284566340:ixitwp65ly0&amp;hl=fr Moteur-Google-Debian] ne vous renverra que les résultats trouvés sur les forums et wikis Debian-fr.org, Debian-facile.org et Andesi.org.

Pour faire une recherche qui porte uniquement sur le forum Debian-fr.org vous pouvez voir là : [http://www.google.com/cse/home?cx=008126959060284566340:r59guf_zvzw&amp;hl=fr Google-Forum.debian-fr]

Pensez aussi aux groupes de discussions, par exemple le [http://groups.google.fr/group/linux.debian.user.french/topics?lnk Debian Google-groupe Français]

Enfin, il y a bien sur la [http://www.debian.org/doc/index.fr.html documentation officielle Debian].
== Avoir recours à un forum ==
Avant de poser votre question, pensez à utiliser la fonction &quot;Rechercher&quot; présente sur la page d'accueil... Le sujet a peut-être déjà été traité... et résolu !
Revenez régulièrement sur le forum pour voir si une réponse a été postée, ou réglez vos préférences pour être averti par mail qu'une réponse a été postée.
Ne soyez pas trop impatient, un &quot;up&quot; toutes les cinq minutes ne serait pas trop bien vu !
=== Rédiger un titre explicite ===
Le titre de votre sujet est important, c'est lui qui va &quot; attirer le chaland &quot; et lui donner envie de regarder plus attentivement votre problème. Proscrivez absolument tout titre du genre &quot; HELP !!!&quot;, &quot;Au secours...&quot;...qui va faire fuir bon nombre de participants.

Le titre doit être le résumé de votre question, préférez donc : &quot; Ma carte Nvidia GT Sport ne fonctionne pas&quot;... à &quot; Au secours please !!! Écran noir !!!&quot;
=== Formuler sa demande de façon claire ===
Essayez, dans la mesure du possible, de rédiger un texte clair avec des phrases courtes. Pensez à ceux qui vous lisent, soignez l'orthographe et la ponctuation. Relisez vous : si vous ne comprenez pas ce que vous avez écrit... les autres non plus.

Respectez la règle : un seul problème par discussion.

Le langage SMS est bien entendu à proscrire.
=== Quelles précisions apporter ? ===
D'une manière générale, il est bon de préciser
*Sa version de Debian ( '''$ cat /etc/debian_version''' )
*La version du noyau Linux ( '''$ uname -a''' )
*Son gestionnaire de fenètres ( Gnome, Kde, Xfce, ...etc ) et éventuellement son gestionnaire de connection ( gdm, kdm,...)
Une bonne idée est d'inclure ces renseignements dans sa signature ( et de la tenir à jour ).

==== Sa configuration matérielle ====
Les commandes suivantes vous permettront de connaître votre matériel :
* '''$ lspci''' : informations sur les périphériques pci.
* '''$ lsusb''' : informations sur les périphériques branchés sur les ports usb.
* '''# dmidecode''' : informations sur votre matériel collectées depuis le bios.
* Le répertoire '''/proc''' contient également des fichiers donnant des informations utiles ( par exemple '''$ cat /proc/cpuinfo''' vous renseignera sur votre (vos) processeur(s) )
==== Les éventuels messages d'erreur ====
Les messages d'erreur de votre dernière connexion peuvent être utiles :
* '''# dmesg /var/log/messages'''
* '''# dmesg /var/log/syslog'''
* '''# dmesg /var/log/xorg.0.log''' : pour des problèmes liés au serveur X
Essayez tout de même de faire un tri par vous-même et d'isoler les messages d'erreurs : lire un copié/collé de 300 lignes en rebute plus d'un !
==== Autres commandes utiles ====
* '''$ df -h''' : Informations sur l'emplacement de montage des systèmes de fichiers.
* '''# fdisk -l''' : Informations sur le partitionnement de vos disques durs.
==== Pour des problèmes de réseau ====
Pour établir un diagnostic, il est utile de connaître le contenu des fichiers :
* '''/etc/network/interfaces'''
* /'''etc/resolv.conf'''
Le résultat des commandes 
* '''# ifconfig -a'''
* '''# iwconfig''' : pour le wifi
* '''# route -n'''
peut aussi aider.
== Eurêka ! ==
Ça y est ! votre problème est réglé !
Pensez à la &quot;coche verte&quot; pour marquer le sujet comme résolu. Vous pouvez aussi ajouter [Résolu] en tête de votre premier message.

Un merci n'est pas obligatoire mais fait toujours plaisir.

Si vous avez réglé votre problème par vous-même, bravo ! Mais faites en profiter les copains, dites comment vous avez fait.


--[[Utilisateur:Le fada|le_fada... toujours à l&amp;#39;ouest !]] 22 janvier 2010 à 08:27 (UTC)
[[Catégorie:Aide]]</text>
      <sha1>5g40a4bp1hx865gzn2bnz1ogcmeikos</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>752</id>
      <parentid>464</parentid>
      <timestamp>2010-02-02T07:55:30Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Quelles précisions apporter ? */</comment>
      <text xml:space="preserve" bytes="6005">Tout un chacun, un jour ou l'autre, est amené à rencontrer des problèmes divers et variés sur sa distribution préférée.
Après avoir cherché, sans succès, une solution par soi-même, il devient nécessaire de demander l'aide de personnes plus expérimentées... Encore faut-il savoir bien exposer sa requête pour avoir des chances d'obtenir des réponses pertinentes.
== Aide toi, le ciel t'aidera ==
Le premier réflexe, en cas de problème, doit être de rechercher soi-même une solution. Outre la satisfaction d'avoir réussi, cette façon de faire permet de progresser plus rapidement que d'appliquer bêtement une recette déjà toute faite et que l'on n'a pas comprise. 
=== Chercher une solution sur son ordinateur ===
Une documentation bien fournie existe dèjà sur votre disque dur. 

Elle est généralement située dans le répertoire '''/usr/share/doc'''.

Vous y trouverez les manuels de beaucoup d'applications, que ce soit sous forme texte, pdf ou html.

Il est aussi judicieux d'installer, avant que ne survienne un souci, de la documentation supplémentaire par l'intermédiaire de votre gestionnaire de paquets préféré.
Les paquets '''debian-faq''' et '''debian-reference-fr''' sont bien utiles !
=== Chercher une solution sur internet ===
Taper les &quot;mots clés&quot; concernant votre problème dans un moteur de recherche va souvent vous permettre de constater que vous n'êtes pas le premier à rencontrer ce problème.

La principale difficulté sera de faire le tri dans la masse de résultats qui vous sera proposée.

Vous pouvez donc restreindre la recherche à des domaines plus précis. Pour Debian, par exemple une recherche sur [http://www.google.com/cse/home?cx=008126959060284566340:ixitwp65ly0&amp;hl=fr Moteur-Google-Debian] ne vous renverra que les résultats trouvés sur les forums et wikis Debian-fr.org, Debian-facile.org et Andesi.org.

Pour faire une recherche qui porte uniquement sur le forum Debian-fr.org vous pouvez voir là : [http://www.google.com/cse/home?cx=008126959060284566340:r59guf_zvzw&amp;hl=fr Google-Forum.debian-fr]

Pensez aussi aux groupes de discussions, par exemple le [http://groups.google.fr/group/linux.debian.user.french/topics?lnk Debian Google-groupe Français]

Enfin, il y a bien sur la [http://www.debian.org/doc/index.fr.html documentation officielle Debian].
== Avoir recours à un forum ==
Avant de poser votre question, pensez à utiliser la fonction &quot;Rechercher&quot; présente sur la page d'accueil... Le sujet a peut-être déjà été traité... et résolu !
Revenez régulièrement sur le forum pour voir si une réponse a été postée, ou réglez vos préférences pour être averti par mail qu'une réponse a été postée.
Ne soyez pas trop impatient, un &quot;up&quot; toutes les cinq minutes ne serait pas trop bien vu !
=== Rédiger un titre explicite ===
Le titre de votre sujet est important, c'est lui qui va &quot; attirer le chaland &quot; et lui donner envie de regarder plus attentivement votre problème. Proscrivez absolument tout titre du genre &quot; HELP !!!&quot;, &quot;Au secours...&quot;...qui va faire fuir bon nombre de participants.

Le titre doit être le résumé de votre question, préférez donc : &quot; Ma carte Nvidia GT Sport ne fonctionne pas&quot;... à &quot; Au secours please !!! Écran noir !!!&quot;
=== Formuler sa demande de façon claire ===
Essayez, dans la mesure du possible, de rédiger un texte clair avec des phrases courtes. Pensez à ceux qui vous lisent, soignez l'orthographe et la ponctuation. Relisez vous : si vous ne comprenez pas ce que vous avez écrit... les autres non plus.

Respectez la règle : un seul problème par discussion.

Le langage SMS est bien entendu à proscrire.
=== Quelles précisions apporter ? ===
D'une manière générale, il est bon de préciser
*Sa version de Debian ( '''$ cat /etc/debian_version''' )
*La version du noyau Linux ( '''$ uname -a''' )
*Son gestionnaire de fenêtres ( Gnome, Kde, Xfce, ...etc ) et éventuellement son gestionnaire de connexion ( gdm, kdm,...)
Une bonne idée est d'inclure ces renseignements dans sa signature ( et de la tenir à jour ).

==== Sa configuration matérielle ====
Les commandes suivantes vous permettront de connaître votre matériel :
* '''$ lspci''' : informations sur les périphériques pci.
* '''$ lsusb''' : informations sur les périphériques branchés sur les ports usb.
* '''# dmidecode''' : informations sur votre matériel collectées depuis le bios.
* Le répertoire '''/proc''' contient également des fichiers donnant des informations utiles ( par exemple '''$ cat /proc/cpuinfo''' vous renseignera sur votre (vos) processeur(s) )
==== Les éventuels messages d'erreur ====
Les messages d'erreur de votre dernière connexion peuvent être utiles :
* '''# dmesg /var/log/messages'''
* '''# dmesg /var/log/syslog'''
* '''# dmesg /var/log/xorg.0.log''' : pour des problèmes liés au serveur X
Essayez tout de même de faire un tri par vous-même et d'isoler les messages d'erreurs : lire un copié/collé de 300 lignes en rebute plus d'un !
==== Autres commandes utiles ====
* '''$ df -h''' : Informations sur l'emplacement de montage des systèmes de fichiers.
* '''# fdisk -l''' : Informations sur le partitionnement de vos disques durs.
==== Pour des problèmes de réseau ====
Pour établir un diagnostic, il est utile de connaître le contenu des fichiers :
* '''/etc/network/interfaces'''
* /'''etc/resolv.conf'''
Le résultat des commandes 
* '''# ifconfig -a'''
* '''# iwconfig''' : pour le wifi
* '''# route -n'''
peut aussi aider.

== Eurêka ! ==
Ça y est ! votre problème est réglé !
Pensez à la &quot;coche verte&quot; pour marquer le sujet comme résolu. Vous pouvez aussi ajouter [Résolu] en tête de votre premier message.

Un merci n'est pas obligatoire mais fait toujours plaisir.

Si vous avez réglé votre problème par vous-même, bravo ! Mais faites en profiter les copains, dites comment vous avez fait.


--[[Utilisateur:Le fada|le_fada... toujours à l&amp;#39;ouest !]] 22 janvier 2010 à 08:27 (UTC)
[[Catégorie:Aide]]</text>
      <sha1>d0m5xfadfud5dqfkwe01uj9rzwnrycy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>793</id>
      <parentid>752</parentid>
      <timestamp>2010-02-03T09:33:08Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <minor/>
      <comment>/* Chercher une solution sur son ordinateur */</comment>
      <text xml:space="preserve" bytes="6078">Tout un chacun, un jour ou l'autre, est amené à rencontrer des problèmes divers et variés sur sa distribution préférée.
Après avoir cherché, sans succès, une solution par soi-même, il devient nécessaire de demander l'aide de personnes plus expérimentées... Encore faut-il savoir bien exposer sa requête pour avoir des chances d'obtenir des réponses pertinentes.
== Aide toi, le ciel t'aidera ==
Le premier réflexe, en cas de problème, doit être de rechercher soi-même une solution. Outre la satisfaction d'avoir réussi, cette façon de faire permet de progresser plus rapidement que d'appliquer bêtement une recette déjà toute faite et que l'on n'a pas comprise. 
=== Chercher une solution sur son ordinateur ===
Une documentation bien fournie existe dèjà sur votre disque dur. 

Elle est généralement située dans le répertoire '''/usr/share/doc'''.

Vous y trouverez les manuels de beaucoup d'applications, que ce soit sous forme texte, pdf ou html.

Pensez aux &quot;man pages&quot; qui accompagnent obligatoirement chaque paquet.

Il est aussi judicieux d'installer, avant que ne survienne un souci, de la documentation supplémentaire par l'intermédiaire de votre gestionnaire de paquets préféré.
Les paquets '''debian-faq''' et '''debian-reference-fr''' sont bien utiles !

=== Chercher une solution sur internet ===
Taper les &quot;mots clés&quot; concernant votre problème dans un moteur de recherche va souvent vous permettre de constater que vous n'êtes pas le premier à rencontrer ce problème.

La principale difficulté sera de faire le tri dans la masse de résultats qui vous sera proposée.

Vous pouvez donc restreindre la recherche à des domaines plus précis. Pour Debian, par exemple une recherche sur [http://www.google.com/cse/home?cx=008126959060284566340:ixitwp65ly0&amp;hl=fr Moteur-Google-Debian] ne vous renverra que les résultats trouvés sur les forums et wikis Debian-fr.org, Debian-facile.org et Andesi.org.

Pour faire une recherche qui porte uniquement sur le forum Debian-fr.org vous pouvez voir là : [http://www.google.com/cse/home?cx=008126959060284566340:r59guf_zvzw&amp;hl=fr Google-Forum.debian-fr]

Pensez aussi aux groupes de discussions, par exemple le [http://groups.google.fr/group/linux.debian.user.french/topics?lnk Debian Google-groupe Français]

Enfin, il y a bien sur la [http://www.debian.org/doc/index.fr.html documentation officielle Debian].
== Avoir recours à un forum ==
Avant de poser votre question, pensez à utiliser la fonction &quot;Rechercher&quot; présente sur la page d'accueil... Le sujet a peut-être déjà été traité... et résolu !
Revenez régulièrement sur le forum pour voir si une réponse a été postée, ou réglez vos préférences pour être averti par mail qu'une réponse a été postée.
Ne soyez pas trop impatient, un &quot;up&quot; toutes les cinq minutes ne serait pas trop bien vu !
=== Rédiger un titre explicite ===
Le titre de votre sujet est important, c'est lui qui va &quot; attirer le chaland &quot; et lui donner envie de regarder plus attentivement votre problème. Proscrivez absolument tout titre du genre &quot; HELP !!!&quot;, &quot;Au secours...&quot;...qui va faire fuir bon nombre de participants.

Le titre doit être le résumé de votre question, préférez donc : &quot; Ma carte Nvidia GT Sport ne fonctionne pas&quot;... à &quot; Au secours please !!! Écran noir !!!&quot;
=== Formuler sa demande de façon claire ===
Essayez, dans la mesure du possible, de rédiger un texte clair avec des phrases courtes. Pensez à ceux qui vous lisent, soignez l'orthographe et la ponctuation. Relisez vous : si vous ne comprenez pas ce que vous avez écrit... les autres non plus.

Respectez la règle : un seul problème par discussion.

Le langage SMS est bien entendu à proscrire.
=== Quelles précisions apporter ? ===
D'une manière générale, il est bon de préciser
*Sa version de Debian ( '''$ cat /etc/debian_version''' )
*La version du noyau Linux ( '''$ uname -a''' )
*Son gestionnaire de fenêtres ( Gnome, Kde, Xfce, ...etc ) et éventuellement son gestionnaire de connexion ( gdm, kdm,...)
Une bonne idée est d'inclure ces renseignements dans sa signature ( et de la tenir à jour ).

==== Sa configuration matérielle ====
Les commandes suivantes vous permettront de connaître votre matériel :
* '''$ lspci''' : informations sur les périphériques pci.
* '''$ lsusb''' : informations sur les périphériques branchés sur les ports usb.
* '''# dmidecode''' : informations sur votre matériel collectées depuis le bios.
* Le répertoire '''/proc''' contient également des fichiers donnant des informations utiles ( par exemple '''$ cat /proc/cpuinfo''' vous renseignera sur votre (vos) processeur(s) )
==== Les éventuels messages d'erreur ====
Les messages d'erreur de votre dernière connexion peuvent être utiles :
* '''# dmesg /var/log/messages'''
* '''# dmesg /var/log/syslog'''
* '''# dmesg /var/log/xorg.0.log''' : pour des problèmes liés au serveur X
Essayez tout de même de faire un tri par vous-même et d'isoler les messages d'erreurs : lire un copié/collé de 300 lignes en rebute plus d'un !
==== Autres commandes utiles ====
* '''$ df -h''' : Informations sur l'emplacement de montage des systèmes de fichiers.
* '''# fdisk -l''' : Informations sur le partitionnement de vos disques durs.
==== Pour des problèmes de réseau ====
Pour établir un diagnostic, il est utile de connaître le contenu des fichiers :
* '''/etc/network/interfaces'''
* /'''etc/resolv.conf'''
Le résultat des commandes 
* '''# ifconfig -a'''
* '''# iwconfig''' : pour le wifi
* '''# route -n'''
peut aussi aider.

== Eurêka ! ==
Ça y est ! votre problème est réglé !
Pensez à la &quot;coche verte&quot; pour marquer le sujet comme résolu. Vous pouvez aussi ajouter [Résolu] en tête de votre premier message.

Un merci n'est pas obligatoire mais fait toujours plaisir.

Si vous avez réglé votre problème par vous-même, bravo ! Mais faites en profiter les copains, dites comment vous avez fait.


--[[Utilisateur:Le fada|le_fada... toujours à l&amp;#39;ouest !]] 22 janvier 2010 à 08:27 (UTC)
[[Catégorie:Aide]]</text>
      <sha1>l9cchj3m2oqswcfj29czac8m2yx3c9z</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>811</id>
      <parentid>793</parentid>
      <timestamp>2010-02-03T17:19:41Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <minor/>
      <comment>/* Eurêka ! */</comment>
      <text xml:space="preserve" bytes="5984">Tout un chacun, un jour ou l'autre, est amené à rencontrer des problèmes divers et variés sur sa distribution préférée.
Après avoir cherché, sans succès, une solution par soi-même, il devient nécessaire de demander l'aide de personnes plus expérimentées... Encore faut-il savoir bien exposer sa requête pour avoir des chances d'obtenir des réponses pertinentes.
== Aide toi, le ciel t'aidera ==
Le premier réflexe, en cas de problème, doit être de rechercher soi-même une solution. Outre la satisfaction d'avoir réussi, cette façon de faire permet de progresser plus rapidement que d'appliquer bêtement une recette déjà toute faite et que l'on n'a pas comprise. 
=== Chercher une solution sur son ordinateur ===
Une documentation bien fournie existe dèjà sur votre disque dur. 

Elle est généralement située dans le répertoire '''/usr/share/doc'''.

Vous y trouverez les manuels de beaucoup d'applications, que ce soit sous forme texte, pdf ou html.

Pensez aux &quot;man pages&quot; qui accompagnent obligatoirement chaque paquet.

Il est aussi judicieux d'installer, avant que ne survienne un souci, de la documentation supplémentaire par l'intermédiaire de votre gestionnaire de paquets préféré.
Les paquets '''debian-faq''' et '''debian-reference-fr''' sont bien utiles !

=== Chercher une solution sur internet ===
Taper les &quot;mots clés&quot; concernant votre problème dans un moteur de recherche va souvent vous permettre de constater que vous n'êtes pas le premier à rencontrer ce problème.

La principale difficulté sera de faire le tri dans la masse de résultats qui vous sera proposée.

Vous pouvez donc restreindre la recherche à des domaines plus précis. Pour Debian, par exemple une recherche sur [http://www.google.com/cse/home?cx=008126959060284566340:ixitwp65ly0&amp;hl=fr Moteur-Google-Debian] ne vous renverra que les résultats trouvés sur les forums et wikis Debian-fr.org, Debian-facile.org et Andesi.org.

Pour faire une recherche qui porte uniquement sur le forum Debian-fr.org vous pouvez voir là : [http://www.google.com/cse/home?cx=008126959060284566340:r59guf_zvzw&amp;hl=fr Google-Forum.debian-fr]

Pensez aussi aux groupes de discussions, par exemple le [http://groups.google.fr/group/linux.debian.user.french/topics?lnk Debian Google-groupe Français]

Enfin, il y a bien sur la [http://www.debian.org/doc/index.fr.html documentation officielle Debian].
== Avoir recours à un forum ==
Avant de poser votre question, pensez à utiliser la fonction &quot;Rechercher&quot; présente sur la page d'accueil... Le sujet a peut-être déjà été traité... et résolu !
Revenez régulièrement sur le forum pour voir si une réponse a été postée, ou réglez vos préférences pour être averti par mail qu'une réponse a été postée.
Ne soyez pas trop impatient, un &quot;up&quot; toutes les cinq minutes ne serait pas trop bien vu !
=== Rédiger un titre explicite ===
Le titre de votre sujet est important, c'est lui qui va &quot; attirer le chaland &quot; et lui donner envie de regarder plus attentivement votre problème. Proscrivez absolument tout titre du genre &quot; HELP !!!&quot;, &quot;Au secours...&quot;...qui va faire fuir bon nombre de participants.

Le titre doit être le résumé de votre question, préférez donc : &quot; Ma carte Nvidia GT Sport ne fonctionne pas&quot;... à &quot; Au secours please !!! Écran noir !!!&quot;
=== Formuler sa demande de façon claire ===
Essayez, dans la mesure du possible, de rédiger un texte clair avec des phrases courtes. Pensez à ceux qui vous lisent, soignez l'orthographe et la ponctuation. Relisez vous : si vous ne comprenez pas ce que vous avez écrit... les autres non plus.

Respectez la règle : un seul problème par discussion.

Le langage SMS est bien entendu à proscrire.
=== Quelles précisions apporter ? ===
D'une manière générale, il est bon de préciser
*Sa version de Debian ( '''$ cat /etc/debian_version''' )
*La version du noyau Linux ( '''$ uname -a''' )
*Son gestionnaire de fenêtres ( Gnome, Kde, Xfce, ...etc ) et éventuellement son gestionnaire de connexion ( gdm, kdm,...)
Une bonne idée est d'inclure ces renseignements dans sa signature ( et de la tenir à jour ).

==== Sa configuration matérielle ====
Les commandes suivantes vous permettront de connaître votre matériel :
* '''$ lspci''' : informations sur les périphériques pci.
* '''$ lsusb''' : informations sur les périphériques branchés sur les ports usb.
* '''# dmidecode''' : informations sur votre matériel collectées depuis le bios.
* Le répertoire '''/proc''' contient également des fichiers donnant des informations utiles ( par exemple '''$ cat /proc/cpuinfo''' vous renseignera sur votre (vos) processeur(s) )
==== Les éventuels messages d'erreur ====
Les messages d'erreur de votre dernière connexion peuvent être utiles :
* '''# dmesg /var/log/messages'''
* '''# dmesg /var/log/syslog'''
* '''# dmesg /var/log/xorg.0.log''' : pour des problèmes liés au serveur X
Essayez tout de même de faire un tri par vous-même et d'isoler les messages d'erreurs : lire un copié/collé de 300 lignes en rebute plus d'un !
==== Autres commandes utiles ====
* '''$ df -h''' : Informations sur l'emplacement de montage des systèmes de fichiers.
* '''# fdisk -l''' : Informations sur le partitionnement de vos disques durs.
==== Pour des problèmes de réseau ====
Pour établir un diagnostic, il est utile de connaître le contenu des fichiers :
* '''/etc/network/interfaces'''
* /'''etc/resolv.conf'''
Le résultat des commandes 
* '''# ifconfig -a'''
* '''# iwconfig''' : pour le wifi
* '''# route -n'''
peut aussi aider.

== Eurêka ! ==
Ça y est ! votre problème est réglé !
Pensez à la &quot;coche verte&quot; pour marquer le sujet comme résolu. Vous pouvez aussi ajouter [Résolu] en tête de votre premier message.

Un merci n'est pas obligatoire mais fait toujours plaisir.

Si vous avez réglé votre problème par vous-même, bravo ! Mais faites en profiter les copains, dites comment vous avez fait.


[[Catégorie:Aide]]</text>
      <sha1>i5kx711hlt9oorziotkdytdnu6aduue</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>889</id>
      <parentid>811</parentid>
      <timestamp>2010-02-05T09:56:17Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <minor/>
      <comment>/* Chercher une solution sur son ordinateur */</comment>
      <text xml:space="preserve" bytes="6024">Tout un chacun, un jour ou l'autre, est amené à rencontrer des problèmes divers et variés sur sa distribution préférée.
Après avoir cherché, sans succès, une solution par soi-même, il devient nécessaire de demander l'aide de personnes plus expérimentées... Encore faut-il savoir bien exposer sa requête pour avoir des chances d'obtenir des réponses pertinentes.
== Aide toi, le ciel t'aidera ==
Le premier réflexe, en cas de problème, doit être de rechercher soi-même une solution. Outre la satisfaction d'avoir réussi, cette façon de faire permet de progresser plus rapidement que d'appliquer bêtement une recette déjà toute faite et que l'on n'a pas comprise. 
=== Chercher une solution sur son ordinateur ===
Une documentation bien fournie existe dèjà sur votre disque dur. 

Elle est généralement située dans le répertoire '''/usr/share/doc'''.

Vous y trouverez les manuels de beaucoup d'applications, que ce soit sous forme texte, pdf ou html.

Pensez aux &quot;man pages&quot; qui accompagnent obligatoirement chaque paquet. ( '''man &lt;nom du paquet&gt;''' en console.

Il est aussi judicieux d'installer, avant que ne survienne un souci, de la documentation supplémentaire par l'intermédiaire de votre gestionnaire de paquets préféré.
Les paquets '''debian-faq''' et '''debian-reference-fr''' sont bien utiles !

=== Chercher une solution sur internet ===
Taper les &quot;mots clés&quot; concernant votre problème dans un moteur de recherche va souvent vous permettre de constater que vous n'êtes pas le premier à rencontrer ce problème.

La principale difficulté sera de faire le tri dans la masse de résultats qui vous sera proposée.

Vous pouvez donc restreindre la recherche à des domaines plus précis. Pour Debian, par exemple une recherche sur [http://www.google.com/cse/home?cx=008126959060284566340:ixitwp65ly0&amp;hl=fr Moteur-Google-Debian] ne vous renverra que les résultats trouvés sur les forums et wikis Debian-fr.org, Debian-facile.org et Andesi.org.

Pour faire une recherche qui porte uniquement sur le forum Debian-fr.org vous pouvez voir là : [http://www.google.com/cse/home?cx=008126959060284566340:r59guf_zvzw&amp;hl=fr Google-Forum.debian-fr]

Pensez aussi aux groupes de discussions, par exemple le [http://groups.google.fr/group/linux.debian.user.french/topics?lnk Debian Google-groupe Français]

Enfin, il y a bien sur la [http://www.debian.org/doc/index.fr.html documentation officielle Debian].
== Avoir recours à un forum ==
Avant de poser votre question, pensez à utiliser la fonction &quot;Rechercher&quot; présente sur la page d'accueil... Le sujet a peut-être déjà été traité... et résolu !
Revenez régulièrement sur le forum pour voir si une réponse a été postée, ou réglez vos préférences pour être averti par mail qu'une réponse a été postée.
Ne soyez pas trop impatient, un &quot;up&quot; toutes les cinq minutes ne serait pas trop bien vu !
=== Rédiger un titre explicite ===
Le titre de votre sujet est important, c'est lui qui va &quot; attirer le chaland &quot; et lui donner envie de regarder plus attentivement votre problème. Proscrivez absolument tout titre du genre &quot; HELP !!!&quot;, &quot;Au secours...&quot;...qui va faire fuir bon nombre de participants.

Le titre doit être le résumé de votre question, préférez donc : &quot; Ma carte Nvidia GT Sport ne fonctionne pas&quot;... à &quot; Au secours please !!! Écran noir !!!&quot;
=== Formuler sa demande de façon claire ===
Essayez, dans la mesure du possible, de rédiger un texte clair avec des phrases courtes. Pensez à ceux qui vous lisent, soignez l'orthographe et la ponctuation. Relisez vous : si vous ne comprenez pas ce que vous avez écrit... les autres non plus.

Respectez la règle : un seul problème par discussion.

Le langage SMS est bien entendu à proscrire.
=== Quelles précisions apporter ? ===
D'une manière générale, il est bon de préciser
*Sa version de Debian ( '''$ cat /etc/debian_version''' )
*La version du noyau Linux ( '''$ uname -a''' )
*Son gestionnaire de fenêtres ( Gnome, Kde, Xfce, ...etc ) et éventuellement son gestionnaire de connexion ( gdm, kdm,...)
Une bonne idée est d'inclure ces renseignements dans sa signature ( et de la tenir à jour ).

==== Sa configuration matérielle ====
Les commandes suivantes vous permettront de connaître votre matériel :
* '''$ lspci''' : informations sur les périphériques pci.
* '''$ lsusb''' : informations sur les périphériques branchés sur les ports usb.
* '''# dmidecode''' : informations sur votre matériel collectées depuis le bios.
* Le répertoire '''/proc''' contient également des fichiers donnant des informations utiles ( par exemple '''$ cat /proc/cpuinfo''' vous renseignera sur votre (vos) processeur(s) )
==== Les éventuels messages d'erreur ====
Les messages d'erreur de votre dernière connexion peuvent être utiles :
* '''# dmesg /var/log/messages'''
* '''# dmesg /var/log/syslog'''
* '''# dmesg /var/log/xorg.0.log''' : pour des problèmes liés au serveur X
Essayez tout de même de faire un tri par vous-même et d'isoler les messages d'erreurs : lire un copié/collé de 300 lignes en rebute plus d'un !
==== Autres commandes utiles ====
* '''$ df -h''' : Informations sur l'emplacement de montage des systèmes de fichiers.
* '''# fdisk -l''' : Informations sur le partitionnement de vos disques durs.
==== Pour des problèmes de réseau ====
Pour établir un diagnostic, il est utile de connaître le contenu des fichiers :
* '''/etc/network/interfaces'''
* /'''etc/resolv.conf'''
Le résultat des commandes 
* '''# ifconfig -a'''
* '''# iwconfig''' : pour le wifi
* '''# route -n'''
peut aussi aider.

== Eurêka ! ==
Ça y est ! votre problème est réglé !
Pensez à la &quot;coche verte&quot; pour marquer le sujet comme résolu. Vous pouvez aussi ajouter [Résolu] en tête de votre premier message.

Un merci n'est pas obligatoire mais fait toujours plaisir.

Si vous avez réglé votre problème par vous-même, bravo ! Mais faites en profiter les copains, dites comment vous avez fait.


[[Catégorie:Aide]]</text>
      <sha1>b62zp4s2628vhn3ztiefpbuz8pplt6z</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>905</id>
      <parentid>889</parentid>
      <timestamp>2010-02-05T16:21:21Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="6025">Tout un chacun, un jour ou l'autre, est amené à rencontrer des problèmes divers et variés sur sa distribution préférée.
Après avoir cherché, sans succès, une solution par soi-même, il devient nécessaire de demander l'aide de personnes plus expérimentées... Encore faut-il savoir bien exposer sa requête pour avoir des chances d'obtenir des réponses pertinentes.
== Aide toi, le ciel t'aidera ==
Le premier réflexe, en cas de problème, doit être de rechercher soi-même une solution. Outre la satisfaction d'avoir réussi, cette façon de faire permet de progresser plus rapidement que d'appliquer bêtement une recette déjà toute faite et que l'on n'a pas comprise. 
=== Chercher une solution sur son ordinateur ===
Une documentation bien fournie existe dèjà sur votre disque dur. 

Elle est généralement située dans le répertoire '''/usr/share/doc'''.

Vous y trouverez les manuels de beaucoup d'applications, que ce soit sous forme texte, pdf ou html.

Pensez aux &quot;man pages&quot; qui accompagnent obligatoirement chaque paquet ( '''man &lt;nom du paquet&gt;''' en console ).

Il est aussi judicieux d'installer, avant que ne survienne un souci, de la documentation supplémentaire par l'intermédiaire de votre gestionnaire de paquets préféré.
Les paquets '''debian-faq''' et '''debian-reference-fr''' sont bien utiles !

=== Chercher une solution sur internet ===
Taper les &quot;mots clés&quot; concernant votre problème dans un moteur de recherche va souvent vous permettre de constater que vous n'êtes pas le premier à rencontrer ce problème.

La principale difficulté sera de faire le tri dans la masse de résultats qui vous sera proposée.

Vous pouvez donc restreindre la recherche à des domaines plus précis. Pour Debian, par exemple une recherche sur [http://www.google.com/cse/home?cx=008126959060284566340:ixitwp65ly0&amp;hl=fr Moteur-Google-Debian] ne vous renverra que les résultats trouvés sur les forums et wikis Debian-fr.org, Debian-facile.org et Andesi.org.

Pour faire une recherche qui porte uniquement sur le forum Debian-fr.org vous pouvez voir là : [http://www.google.com/cse/home?cx=008126959060284566340:r59guf_zvzw&amp;hl=fr Google-Forum.debian-fr]

Pensez aussi aux groupes de discussions, par exemple le [http://groups.google.fr/group/linux.debian.user.french/topics?lnk Debian Google-groupe Français]

Enfin, il y a bien sur la [http://www.debian.org/doc/index.fr.html documentation officielle Debian].
== Avoir recours à un forum ==
Avant de poser votre question, pensez à utiliser la fonction &quot;Rechercher&quot; présente sur la page d'accueil... Le sujet a peut-être déjà été traité... et résolu !
Revenez régulièrement sur le forum pour voir si une réponse a été postée, ou réglez vos préférences pour être averti par mail qu'une réponse a été postée.
Ne soyez pas trop impatient, un &quot;up&quot; toutes les cinq minutes ne serait pas trop bien vu !
=== Rédiger un titre explicite ===
Le titre de votre sujet est important, c'est lui qui va &quot; attirer le chaland &quot; et lui donner envie de regarder plus attentivement votre problème. Proscrivez absolument tout titre du genre &quot; HELP !!!&quot;, &quot;Au secours...&quot;...qui va faire fuir bon nombre de participants.

Le titre doit être le résumé de votre question, préférez donc : &quot; Ma carte Nvidia GT Sport ne fonctionne pas&quot;... à &quot; Au secours please !!! Écran noir !!!&quot;
=== Formuler sa demande de façon claire ===
Essayez, dans la mesure du possible, de rédiger un texte clair avec des phrases courtes. Pensez à ceux qui vous lisent, soignez l'orthographe et la ponctuation. Relisez vous : si vous ne comprenez pas ce que vous avez écrit... les autres non plus.

Respectez la règle : un seul problème par discussion.

Le langage SMS est bien entendu à proscrire.
=== Quelles précisions apporter ? ===
D'une manière générale, il est bon de préciser
*Sa version de Debian ( '''$ cat /etc/debian_version''' )
*La version du noyau Linux ( '''$ uname -a''' )
*Son gestionnaire de fenêtres ( Gnome, Kde, Xfce, ...etc ) et éventuellement son gestionnaire de connexion ( gdm, kdm,...)
Une bonne idée est d'inclure ces renseignements dans sa signature ( et de la tenir à jour ).

==== Sa configuration matérielle ====
Les commandes suivantes vous permettront de connaître votre matériel :
* '''$ lspci''' : informations sur les périphériques pci.
* '''$ lsusb''' : informations sur les périphériques branchés sur les ports usb.
* '''# dmidecode''' : informations sur votre matériel collectées depuis le bios.
* Le répertoire '''/proc''' contient également des fichiers donnant des informations utiles ( par exemple '''$ cat /proc/cpuinfo''' vous renseignera sur votre (vos) processeur(s) )
==== Les éventuels messages d'erreur ====
Les messages d'erreur de votre dernière connexion peuvent être utiles :
* '''# dmesg /var/log/messages'''
* '''# dmesg /var/log/syslog'''
* '''# dmesg /var/log/xorg.0.log''' : pour des problèmes liés au serveur X
Essayez tout de même de faire un tri par vous-même et d'isoler les messages d'erreurs : lire un copié/collé de 300 lignes en rebute plus d'un !
==== Autres commandes utiles ====
* '''$ df -h''' : Informations sur l'emplacement de montage des systèmes de fichiers.
* '''# fdisk -l''' : Informations sur le partitionnement de vos disques durs.
==== Pour des problèmes de réseau ====
Pour établir un diagnostic, il est utile de connaître le contenu des fichiers :
* '''/etc/network/interfaces'''
* /'''etc/resolv.conf'''
Le résultat des commandes 
* '''# ifconfig -a'''
* '''# iwconfig''' : pour le wifi
* '''# route -n'''
peut aussi aider.

== Eurêka ! ==
Ça y est ! votre problème est réglé !
Pensez à la &quot;coche verte&quot; pour marquer le sujet comme résolu. Vous pouvez aussi ajouter [Résolu] en tête de votre premier message.

Un merci n'est pas obligatoire mais fait toujours plaisir.

Si vous avez réglé votre problème par vous-même, bravo ! Mais faites en profiter les copains, dites comment vous avez fait.


[[Catégorie:Aide]]</text>
      <sha1>o76qu90jqx7zk2p7bhikctuh8iv8z8u</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>906</id>
      <parentid>905</parentid>
      <timestamp>2010-02-05T16:22:34Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="6078">Tout un chacun, un jour ou l'autre, est amené à rencontrer des problèmes divers et variés sur sa distribution préférée.
Après avoir cherché, sans succès, une solution par soi-même, il devient nécessaire de demander l'aide de personnes plus expérimentées... Encore faut-il savoir bien exposer sa requête pour avoir des chances d'obtenir des réponses pertinentes.
== Aide toi, le ciel t'aidera ==
Le premier réflexe, en cas de problème, doit être de rechercher soi-même une solution. Outre la satisfaction d'avoir réussi, cette façon de faire permet de progresser plus rapidement que d'appliquer bêtement une recette déjà toute faite et que l'on n'a pas comprise. 
=== Chercher une solution sur son ordinateur ===
Une documentation bien fournie existe dèjà sur votre disque dur. 

Elle est généralement située dans le répertoire '''/usr/share/doc'''.

Vous y trouverez les manuels de beaucoup d'applications, que ce soit sous forme texte, pdf ou html.

Pensez aux &quot;man pages&quot; qui accompagnent généralement chaque commande et fichier de configuration ( '''man &lt;nom de la commande/du fichier de conf&gt;''' en console ).

Il est aussi judicieux d'installer, avant que ne survienne un souci, de la documentation supplémentaire par l'intermédiaire de votre gestionnaire de paquets préféré.
Les paquets '''debian-faq''' et '''debian-reference-fr''' sont bien utiles !

=== Chercher une solution sur internet ===
Taper les &quot;mots clés&quot; concernant votre problème dans un moteur de recherche va souvent vous permettre de constater que vous n'êtes pas le premier à rencontrer ce problème.

La principale difficulté sera de faire le tri dans la masse de résultats qui vous sera proposée.

Vous pouvez donc restreindre la recherche à des domaines plus précis. Pour Debian, par exemple une recherche sur [http://www.google.com/cse/home?cx=008126959060284566340:ixitwp65ly0&amp;hl=fr Moteur-Google-Debian] ne vous renverra que les résultats trouvés sur les forums et wikis Debian-fr.org, Debian-facile.org et Andesi.org.

Pour faire une recherche qui porte uniquement sur le forum Debian-fr.org vous pouvez voir là : [http://www.google.com/cse/home?cx=008126959060284566340:r59guf_zvzw&amp;hl=fr Google-Forum.debian-fr]

Pensez aussi aux groupes de discussions, par exemple le [http://groups.google.fr/group/linux.debian.user.french/topics?lnk Debian Google-groupe Français]

Enfin, il y a bien sur la [http://www.debian.org/doc/index.fr.html documentation officielle Debian].
== Avoir recours à un forum ==
Avant de poser votre question, pensez à utiliser la fonction &quot;Rechercher&quot; présente sur la page d'accueil... Le sujet a peut-être déjà été traité... et résolu !
Revenez régulièrement sur le forum pour voir si une réponse a été postée, ou réglez vos préférences pour être averti par mail qu'une réponse a été postée.
Ne soyez pas trop impatient, un &quot;up&quot; toutes les cinq minutes ne serait pas trop bien vu !
=== Rédiger un titre explicite ===
Le titre de votre sujet est important, c'est lui qui va &quot; attirer le chaland &quot; et lui donner envie de regarder plus attentivement votre problème. Proscrivez absolument tout titre du genre &quot; HELP !!!&quot;, &quot;Au secours...&quot;...qui va faire fuir bon nombre de participants.

Le titre doit être le résumé de votre question, préférez donc : &quot; Ma carte Nvidia GT Sport ne fonctionne pas&quot;... à &quot; Au secours please !!! Écran noir !!!&quot;
=== Formuler sa demande de façon claire ===
Essayez, dans la mesure du possible, de rédiger un texte clair avec des phrases courtes. Pensez à ceux qui vous lisent, soignez l'orthographe et la ponctuation. Relisez vous : si vous ne comprenez pas ce que vous avez écrit... les autres non plus.

Respectez la règle : un seul problème par discussion.

Le langage SMS est bien entendu à proscrire.
=== Quelles précisions apporter ? ===
D'une manière générale, il est bon de préciser
*Sa version de Debian ( '''$ cat /etc/debian_version''' )
*La version du noyau Linux ( '''$ uname -a''' )
*Son gestionnaire de fenêtres ( Gnome, Kde, Xfce, ...etc ) et éventuellement son gestionnaire de connexion ( gdm, kdm,...)
Une bonne idée est d'inclure ces renseignements dans sa signature ( et de la tenir à jour ).

==== Sa configuration matérielle ====
Les commandes suivantes vous permettront de connaître votre matériel :
* '''$ lspci''' : informations sur les périphériques pci.
* '''$ lsusb''' : informations sur les périphériques branchés sur les ports usb.
* '''# dmidecode''' : informations sur votre matériel collectées depuis le bios.
* Le répertoire '''/proc''' contient également des fichiers donnant des informations utiles ( par exemple '''$ cat /proc/cpuinfo''' vous renseignera sur votre (vos) processeur(s) )
==== Les éventuels messages d'erreur ====
Les messages d'erreur de votre dernière connexion peuvent être utiles :
* '''# dmesg /var/log/messages'''
* '''# dmesg /var/log/syslog'''
* '''# dmesg /var/log/xorg.0.log''' : pour des problèmes liés au serveur X
Essayez tout de même de faire un tri par vous-même et d'isoler les messages d'erreurs : lire un copié/collé de 300 lignes en rebute plus d'un !
==== Autres commandes utiles ====
* '''$ df -h''' : Informations sur l'emplacement de montage des systèmes de fichiers.
* '''# fdisk -l''' : Informations sur le partitionnement de vos disques durs.
==== Pour des problèmes de réseau ====
Pour établir un diagnostic, il est utile de connaître le contenu des fichiers :
* '''/etc/network/interfaces'''
* /'''etc/resolv.conf'''
Le résultat des commandes 
* '''# ifconfig -a'''
* '''# iwconfig''' : pour le wifi
* '''# route -n'''
peut aussi aider.

== Eurêka ! ==
Ça y est ! votre problème est réglé !
Pensez à la &quot;coche verte&quot; pour marquer le sujet comme résolu. Vous pouvez aussi ajouter [Résolu] en tête de votre premier message.

Un merci n'est pas obligatoire mais fait toujours plaisir.

Si vous avez réglé votre problème par vous-même, bravo ! Mais faites en profiter les copains, dites comment vous avez fait.


[[Catégorie:Aide]]</text>
      <sha1>q739veampndymf9r5apv9bu3cvr2fh6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1612</id>
      <parentid>906</parentid>
      <timestamp>2010-07-05T07:55:14Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="6112">#REDIRECT [[isalo:Aide_efficace]]
Tout un chacun, un jour ou l'autre, est amené à rencontrer des problèmes divers et variés sur sa distribution préférée.
Après avoir cherché, sans succès, une solution par soi-même, il devient nécessaire de demander l'aide de personnes plus expérimentées... Encore faut-il savoir bien exposer sa requête pour avoir des chances d'obtenir des réponses pertinentes.
== Aide toi, le ciel t'aidera ==
Le premier réflexe, en cas de problème, doit être de rechercher soi-même une solution. Outre la satisfaction d'avoir réussi, cette façon de faire permet de progresser plus rapidement que d'appliquer bêtement une recette déjà toute faite et que l'on n'a pas comprise. 
=== Chercher une solution sur son ordinateur ===
Une documentation bien fournie existe dèjà sur votre disque dur. 

Elle est généralement située dans le répertoire '''/usr/share/doc'''.

Vous y trouverez les manuels de beaucoup d'applications, que ce soit sous forme texte, pdf ou html.

Pensez aux &quot;man pages&quot; qui accompagnent généralement chaque commande et fichier de configuration ( '''man &lt;nom de la commande/du fichier de conf&gt;''' en console ).

Il est aussi judicieux d'installer, avant que ne survienne un souci, de la documentation supplémentaire par l'intermédiaire de votre gestionnaire de paquets préféré.
Les paquets '''debian-faq''' et '''debian-reference-fr''' sont bien utiles !

=== Chercher une solution sur internet ===
Taper les &quot;mots clés&quot; concernant votre problème dans un moteur de recherche va souvent vous permettre de constater que vous n'êtes pas le premier à rencontrer ce problème.

La principale difficulté sera de faire le tri dans la masse de résultats qui vous sera proposée.

Vous pouvez donc restreindre la recherche à des domaines plus précis. Pour Debian, par exemple une recherche sur [http://www.google.com/cse/home?cx=008126959060284566340:ixitwp65ly0&amp;hl=fr Moteur-Google-Debian] ne vous renverra que les résultats trouvés sur les forums et wikis Debian-fr.org, Debian-facile.org et Andesi.org.

Pour faire une recherche qui porte uniquement sur le forum Debian-fr.org vous pouvez voir là : [http://www.google.com/cse/home?cx=008126959060284566340:r59guf_zvzw&amp;hl=fr Google-Forum.debian-fr]

Pensez aussi aux groupes de discussions, par exemple le [http://groups.google.fr/group/linux.debian.user.french/topics?lnk Debian Google-groupe Français]

Enfin, il y a bien sur la [http://www.debian.org/doc/index.fr.html documentation officielle Debian].
== Avoir recours à un forum ==
Avant de poser votre question, pensez à utiliser la fonction &quot;Rechercher&quot; présente sur la page d'accueil... Le sujet a peut-être déjà été traité... et résolu !
Revenez régulièrement sur le forum pour voir si une réponse a été postée, ou réglez vos préférences pour être averti par mail qu'une réponse a été postée.
Ne soyez pas trop impatient, un &quot;up&quot; toutes les cinq minutes ne serait pas trop bien vu !
=== Rédiger un titre explicite ===
Le titre de votre sujet est important, c'est lui qui va &quot; attirer le chaland &quot; et lui donner envie de regarder plus attentivement votre problème. Proscrivez absolument tout titre du genre &quot; HELP !!!&quot;, &quot;Au secours...&quot;...qui va faire fuir bon nombre de participants.

Le titre doit être le résumé de votre question, préférez donc : &quot; Ma carte Nvidia GT Sport ne fonctionne pas&quot;... à &quot; Au secours please !!! Écran noir !!!&quot;
=== Formuler sa demande de façon claire ===
Essayez, dans la mesure du possible, de rédiger un texte clair avec des phrases courtes. Pensez à ceux qui vous lisent, soignez l'orthographe et la ponctuation. Relisez vous : si vous ne comprenez pas ce que vous avez écrit... les autres non plus.

Respectez la règle : un seul problème par discussion.

Le langage SMS est bien entendu à proscrire.
=== Quelles précisions apporter ? ===
D'une manière générale, il est bon de préciser
*Sa version de Debian ( '''$ cat /etc/debian_version''' )
*La version du noyau Linux ( '''$ uname -a''' )
*Son gestionnaire de fenêtres ( Gnome, Kde, Xfce, ...etc ) et éventuellement son gestionnaire de connexion ( gdm, kdm,...)
Une bonne idée est d'inclure ces renseignements dans sa signature ( et de la tenir à jour ).

==== Sa configuration matérielle ====
Les commandes suivantes vous permettront de connaître votre matériel :
* '''$ lspci''' : informations sur les périphériques pci.
* '''$ lsusb''' : informations sur les périphériques branchés sur les ports usb.
* '''# dmidecode''' : informations sur votre matériel collectées depuis le bios.
* Le répertoire '''/proc''' contient également des fichiers donnant des informations utiles ( par exemple '''$ cat /proc/cpuinfo''' vous renseignera sur votre (vos) processeur(s) )
==== Les éventuels messages d'erreur ====
Les messages d'erreur de votre dernière connexion peuvent être utiles :
* '''# dmesg /var/log/messages'''
* '''# dmesg /var/log/syslog'''
* '''# dmesg /var/log/xorg.0.log''' : pour des problèmes liés au serveur X
Essayez tout de même de faire un tri par vous-même et d'isoler les messages d'erreurs : lire un copié/collé de 300 lignes en rebute plus d'un !
==== Autres commandes utiles ====
* '''$ df -h''' : Informations sur l'emplacement de montage des systèmes de fichiers.
* '''# fdisk -l''' : Informations sur le partitionnement de vos disques durs.
==== Pour des problèmes de réseau ====
Pour établir un diagnostic, il est utile de connaître le contenu des fichiers :
* '''/etc/network/interfaces'''
* /'''etc/resolv.conf'''
Le résultat des commandes 
* '''# ifconfig -a'''
* '''# iwconfig''' : pour le wifi
* '''# route -n'''
peut aussi aider.

== Eurêka ! ==
Ça y est ! votre problème est réglé !
Pensez à la &quot;coche verte&quot; pour marquer le sujet comme résolu. Vous pouvez aussi ajouter [Résolu] en tête de votre premier message.

Un merci n'est pas obligatoire mais fait toujours plaisir.

Si vous avez réglé votre problème par vous-même, bravo ! Mais faites en profiter les copains, dites comment vous avez fait.


[[Catégorie:Aide]]</text>
      <sha1>kn5m48wrsuft8hsmeon90vj9q7qvco4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1660</id>
      <parentid>1612</parentid>
      <timestamp>2010-07-06T09:19:06Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Annulation des modifications 1612 de [[Special:Contributions/Lol|Lol]] ([[User talk:Lol|discussion]])</comment>
      <text xml:space="preserve" bytes="6078">Tout un chacun, un jour ou l'autre, est amené à rencontrer des problèmes divers et variés sur sa distribution préférée.
Après avoir cherché, sans succès, une solution par soi-même, il devient nécessaire de demander l'aide de personnes plus expérimentées... Encore faut-il savoir bien exposer sa requête pour avoir des chances d'obtenir des réponses pertinentes.
== Aide toi, le ciel t'aidera ==
Le premier réflexe, en cas de problème, doit être de rechercher soi-même une solution. Outre la satisfaction d'avoir réussi, cette façon de faire permet de progresser plus rapidement que d'appliquer bêtement une recette déjà toute faite et que l'on n'a pas comprise. 
=== Chercher une solution sur son ordinateur ===
Une documentation bien fournie existe dèjà sur votre disque dur. 

Elle est généralement située dans le répertoire '''/usr/share/doc'''.

Vous y trouverez les manuels de beaucoup d'applications, que ce soit sous forme texte, pdf ou html.

Pensez aux &quot;man pages&quot; qui accompagnent généralement chaque commande et fichier de configuration ( '''man &lt;nom de la commande/du fichier de conf&gt;''' en console ).

Il est aussi judicieux d'installer, avant que ne survienne un souci, de la documentation supplémentaire par l'intermédiaire de votre gestionnaire de paquets préféré.
Les paquets '''debian-faq''' et '''debian-reference-fr''' sont bien utiles !

=== Chercher une solution sur internet ===
Taper les &quot;mots clés&quot; concernant votre problème dans un moteur de recherche va souvent vous permettre de constater que vous n'êtes pas le premier à rencontrer ce problème.

La principale difficulté sera de faire le tri dans la masse de résultats qui vous sera proposée.

Vous pouvez donc restreindre la recherche à des domaines plus précis. Pour Debian, par exemple une recherche sur [http://www.google.com/cse/home?cx=008126959060284566340:ixitwp65ly0&amp;hl=fr Moteur-Google-Debian] ne vous renverra que les résultats trouvés sur les forums et wikis Debian-fr.org, Debian-facile.org et Andesi.org.

Pour faire une recherche qui porte uniquement sur le forum Debian-fr.org vous pouvez voir là : [http://www.google.com/cse/home?cx=008126959060284566340:r59guf_zvzw&amp;hl=fr Google-Forum.debian-fr]

Pensez aussi aux groupes de discussions, par exemple le [http://groups.google.fr/group/linux.debian.user.french/topics?lnk Debian Google-groupe Français]

Enfin, il y a bien sur la [http://www.debian.org/doc/index.fr.html documentation officielle Debian].
== Avoir recours à un forum ==
Avant de poser votre question, pensez à utiliser la fonction &quot;Rechercher&quot; présente sur la page d'accueil... Le sujet a peut-être déjà été traité... et résolu !
Revenez régulièrement sur le forum pour voir si une réponse a été postée, ou réglez vos préférences pour être averti par mail qu'une réponse a été postée.
Ne soyez pas trop impatient, un &quot;up&quot; toutes les cinq minutes ne serait pas trop bien vu !
=== Rédiger un titre explicite ===
Le titre de votre sujet est important, c'est lui qui va &quot; attirer le chaland &quot; et lui donner envie de regarder plus attentivement votre problème. Proscrivez absolument tout titre du genre &quot; HELP !!!&quot;, &quot;Au secours...&quot;...qui va faire fuir bon nombre de participants.

Le titre doit être le résumé de votre question, préférez donc : &quot; Ma carte Nvidia GT Sport ne fonctionne pas&quot;... à &quot; Au secours please !!! Écran noir !!!&quot;
=== Formuler sa demande de façon claire ===
Essayez, dans la mesure du possible, de rédiger un texte clair avec des phrases courtes. Pensez à ceux qui vous lisent, soignez l'orthographe et la ponctuation. Relisez vous : si vous ne comprenez pas ce que vous avez écrit... les autres non plus.

Respectez la règle : un seul problème par discussion.

Le langage SMS est bien entendu à proscrire.
=== Quelles précisions apporter ? ===
D'une manière générale, il est bon de préciser
*Sa version de Debian ( '''$ cat /etc/debian_version''' )
*La version du noyau Linux ( '''$ uname -a''' )
*Son gestionnaire de fenêtres ( Gnome, Kde, Xfce, ...etc ) et éventuellement son gestionnaire de connexion ( gdm, kdm,...)
Une bonne idée est d'inclure ces renseignements dans sa signature ( et de la tenir à jour ).

==== Sa configuration matérielle ====
Les commandes suivantes vous permettront de connaître votre matériel :
* '''$ lspci''' : informations sur les périphériques pci.
* '''$ lsusb''' : informations sur les périphériques branchés sur les ports usb.
* '''# dmidecode''' : informations sur votre matériel collectées depuis le bios.
* Le répertoire '''/proc''' contient également des fichiers donnant des informations utiles ( par exemple '''$ cat /proc/cpuinfo''' vous renseignera sur votre (vos) processeur(s) )
==== Les éventuels messages d'erreur ====
Les messages d'erreur de votre dernière connexion peuvent être utiles :
* '''# dmesg /var/log/messages'''
* '''# dmesg /var/log/syslog'''
* '''# dmesg /var/log/xorg.0.log''' : pour des problèmes liés au serveur X
Essayez tout de même de faire un tri par vous-même et d'isoler les messages d'erreurs : lire un copié/collé de 300 lignes en rebute plus d'un !
==== Autres commandes utiles ====
* '''$ df -h''' : Informations sur l'emplacement de montage des systèmes de fichiers.
* '''# fdisk -l''' : Informations sur le partitionnement de vos disques durs.
==== Pour des problèmes de réseau ====
Pour établir un diagnostic, il est utile de connaître le contenu des fichiers :
* '''/etc/network/interfaces'''
* /'''etc/resolv.conf'''
Le résultat des commandes 
* '''# ifconfig -a'''
* '''# iwconfig''' : pour le wifi
* '''# route -n'''
peut aussi aider.

== Eurêka ! ==
Ça y est ! votre problème est réglé !
Pensez à la &quot;coche verte&quot; pour marquer le sujet comme résolu. Vous pouvez aussi ajouter [Résolu] en tête de votre premier message.

Un merci n'est pas obligatoire mais fait toujours plaisir.

Si vous avez réglé votre problème par vous-même, bravo ! Mais faites en profiter les copains, dites comment vous avez fait.


[[Catégorie:Aide]]</text>
      <sha1>q739veampndymf9r5apv9bu3cvr2fh6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1683</id>
      <parentid>1660</parentid>
      <timestamp>2010-07-22T07:19:08Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Chercher une solution sur son ordinateur */</comment>
      <text xml:space="preserve" bytes="6078">Tout un chacun, un jour ou l'autre, est amené à rencontrer des problèmes divers et variés sur sa distribution préférée.
Après avoir cherché, sans succès, une solution par soi-même, il devient nécessaire de demander l'aide de personnes plus expérimentées... Encore faut-il savoir bien exposer sa requête pour avoir des chances d'obtenir des réponses pertinentes.
== Aide toi, le ciel t'aidera ==
Le premier réflexe, en cas de problème, doit être de rechercher soi-même une solution. Outre la satisfaction d'avoir réussi, cette façon de faire permet de progresser plus rapidement que d'appliquer bêtement une recette déjà toute faite et que l'on n'a pas comprise. 
=== Chercher une solution sur son ordinateur ===
Une documentation bien fournie existe déjà sur votre disque dur. 

Elle est généralement située dans le répertoire '''/usr/share/doc'''.

Vous y trouverez les manuels de beaucoup d'applications, que ce soit sous forme texte, pdf ou html.

Pensez aux &quot;man pages&quot; qui accompagnent généralement chaque commande et fichier de configuration ( '''man &lt;nom de la commande/du fichier de conf&gt;''' en console ).

Il est aussi judicieux d'installer, avant que ne survienne un souci, de la documentation supplémentaire par l'intermédiaire de votre gestionnaire de paquets préféré.
Les paquets '''debian-faq''' et '''debian-reference-fr''' sont bien utiles !

=== Chercher une solution sur internet ===
Taper les &quot;mots clés&quot; concernant votre problème dans un moteur de recherche va souvent vous permettre de constater que vous n'êtes pas le premier à rencontrer ce problème.

La principale difficulté sera de faire le tri dans la masse de résultats qui vous sera proposée.

Vous pouvez donc restreindre la recherche à des domaines plus précis. Pour Debian, par exemple une recherche sur [http://www.google.com/cse/home?cx=008126959060284566340:ixitwp65ly0&amp;hl=fr Moteur-Google-Debian] ne vous renverra que les résultats trouvés sur les forums et wikis Debian-fr.org, Debian-facile.org et Andesi.org.

Pour faire une recherche qui porte uniquement sur le forum Debian-fr.org vous pouvez voir là : [http://www.google.com/cse/home?cx=008126959060284566340:r59guf_zvzw&amp;hl=fr Google-Forum.debian-fr]

Pensez aussi aux groupes de discussions, par exemple le [http://groups.google.fr/group/linux.debian.user.french/topics?lnk Debian Google-groupe Français]

Enfin, il y a bien sur la [http://www.debian.org/doc/index.fr.html documentation officielle Debian].
== Avoir recours à un forum ==
Avant de poser votre question, pensez à utiliser la fonction &quot;Rechercher&quot; présente sur la page d'accueil... Le sujet a peut-être déjà été traité... et résolu !
Revenez régulièrement sur le forum pour voir si une réponse a été postée, ou réglez vos préférences pour être averti par mail qu'une réponse a été postée.
Ne soyez pas trop impatient, un &quot;up&quot; toutes les cinq minutes ne serait pas trop bien vu !
=== Rédiger un titre explicite ===
Le titre de votre sujet est important, c'est lui qui va &quot; attirer le chaland &quot; et lui donner envie de regarder plus attentivement votre problème. Proscrivez absolument tout titre du genre &quot; HELP !!!&quot;, &quot;Au secours...&quot;...qui va faire fuir bon nombre de participants.

Le titre doit être le résumé de votre question, préférez donc : &quot; Ma carte Nvidia GT Sport ne fonctionne pas&quot;... à &quot; Au secours please !!! Écran noir !!!&quot;
=== Formuler sa demande de façon claire ===
Essayez, dans la mesure du possible, de rédiger un texte clair avec des phrases courtes. Pensez à ceux qui vous lisent, soignez l'orthographe et la ponctuation. Relisez vous : si vous ne comprenez pas ce que vous avez écrit... les autres non plus.

Respectez la règle : un seul problème par discussion.

Le langage SMS est bien entendu à proscrire.
=== Quelles précisions apporter ? ===
D'une manière générale, il est bon de préciser
*Sa version de Debian ( '''$ cat /etc/debian_version''' )
*La version du noyau Linux ( '''$ uname -a''' )
*Son gestionnaire de fenêtres ( Gnome, Kde, Xfce, ...etc ) et éventuellement son gestionnaire de connexion ( gdm, kdm,...)
Une bonne idée est d'inclure ces renseignements dans sa signature ( et de la tenir à jour ).

==== Sa configuration matérielle ====
Les commandes suivantes vous permettront de connaître votre matériel :
* '''$ lspci''' : informations sur les périphériques pci.
* '''$ lsusb''' : informations sur les périphériques branchés sur les ports usb.
* '''# dmidecode''' : informations sur votre matériel collectées depuis le bios.
* Le répertoire '''/proc''' contient également des fichiers donnant des informations utiles ( par exemple '''$ cat /proc/cpuinfo''' vous renseignera sur votre (vos) processeur(s) )
==== Les éventuels messages d'erreur ====
Les messages d'erreur de votre dernière connexion peuvent être utiles :
* '''# dmesg /var/log/messages'''
* '''# dmesg /var/log/syslog'''
* '''# dmesg /var/log/xorg.0.log''' : pour des problèmes liés au serveur X
Essayez tout de même de faire un tri par vous-même et d'isoler les messages d'erreurs : lire un copié/collé de 300 lignes en rebute plus d'un !
==== Autres commandes utiles ====
* '''$ df -h''' : Informations sur l'emplacement de montage des systèmes de fichiers.
* '''# fdisk -l''' : Informations sur le partitionnement de vos disques durs.
==== Pour des problèmes de réseau ====
Pour établir un diagnostic, il est utile de connaître le contenu des fichiers :
* '''/etc/network/interfaces'''
* /'''etc/resolv.conf'''
Le résultat des commandes 
* '''# ifconfig -a'''
* '''# iwconfig''' : pour le wifi
* '''# route -n'''
peut aussi aider.

== Eurêka ! ==
Ça y est ! votre problème est réglé !
Pensez à la &quot;coche verte&quot; pour marquer le sujet comme résolu. Vous pouvez aussi ajouter [Résolu] en tête de votre premier message.

Un merci n'est pas obligatoire mais fait toujours plaisir.

Si vous avez réglé votre problème par vous-même, bravo ! Mais faites en profiter les copains, dites comment vous avez fait.


[[Catégorie:Aide]]</text>
      <sha1>qkwqxzv7ui8jtw5czlivnkdecavjn9e</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2039</id>
      <parentid>1683</parentid>
      <timestamp>2010-09-01T19:17:06Z</timestamp>
      <contributor>
        <username>Kna</username>
        <id>35</id>
      </contributor>
      <text xml:space="preserve" bytes="5973">Tout un chacun, un jour ou l'autre, est amené à rencontrer des problèmes divers et variés sur sa distribution préférée.
Après avoir cherché, sans succès, une solution par soi-même, il devient nécessaire de demander l'aide de personnes plus expérimentées... Encore faut-il savoir bien exposer sa requête pour avoir des chances d'obtenir des réponses pertinentes.
== Aide toi, le ciel t'aidera ==
Le premier réflexe, en cas de problème, doit être de rechercher soi-même une solution. Outre la satisfaction d'avoir réussi, cette façon de faire permet de progresser plus rapidement que d'appliquer bêtement une recette déjà toute faite et que l'on n'a pas comprise. 
=== Chercher une solution sur son ordinateur ===
Une documentation bien fournie existe déjà sur votre disque dur. 

Elle est généralement située dans le répertoire '''/usr/share/doc'''.

Vous y trouverez les manuels de beaucoup d'applications, que ce soit sous forme texte, pdf ou html.

Pensez aux &quot;man pages&quot; qui accompagnent généralement chaque commande et fichier de configuration ( '''man &lt;nom de la commande/du fichier de conf&gt;''' en console ).

Il est aussi judicieux d'installer, avant que ne survienne un souci, de la documentation supplémentaire par l'intermédiaire de votre gestionnaire de paquets préféré.
Les paquets '''debian-faq''' et '''debian-reference-fr''' sont bien utiles !

=== Chercher une solution sur internet ===
Taper les &quot;mots clés&quot; concernant votre problème dans un moteur de recherche va souvent vous permettre de constater que vous n'êtes pas le premier à rencontrer ce problème.

La principale difficulté sera de faire le tri dans la masse de résultats qui vous sera proposée.

Vous pouvez donc restreindre la recherche à des domaines plus précis. Pour Debian, par exemple une recherche sur [http://www.google.com/cse/home?cx=008126959060284566340:ixitwp65ly0&amp;hl=fr Moteur-Google-Debian] ne vous renverra que les résultats trouvés sur les forums et wikis Debian-fr.org, Debian-facile.org et Andesi.org.

Pour faire une recherche qui porte uniquement sur le forum Debian-fr.org vous pouvez voir là : [http://www.google.com/cse/home?cx=008126959060284566340:r59guf_zvzw&amp;hl=fr Google-Forum.debian-fr]

Pensez aussi aux groupes de discussions, par exemple le [http://groups.google.fr/group/linux.debian.user.french/topics?lnk Debian Google-groupe Français]

Enfin, il y a bien sur la [http://www.debian.org/doc/index.fr.html documentation officielle Debian].
== Avoir recours à un forum ==
Avant de poser votre question, pensez à utiliser la fonction &quot;Rechercher&quot; présente sur la page d'accueil... Le sujet a peut-être déjà été traité... et résolu !
Revenez régulièrement sur le forum pour voir si une réponse a été postée, ou réglez vos préférences pour être averti par mail qu'une réponse a été postée.
Ne soyez pas trop impatient, un &quot;up&quot; toutes les cinq minutes ne serait pas trop bien vu !
=== Rédiger un titre explicite ===
Le titre de votre sujet est important, c'est lui qui va &quot; attirer le chaland &quot; et lui donner envie de regarder plus attentivement votre problème. Proscrivez absolument tout titre du genre &quot; HELP !!!&quot;, &quot;Au secours...&quot;...qui va faire fuir bon nombre de participants.

Le titre doit être le résumé de votre question, préférez donc : &quot; Ma carte Nvidia GT Sport ne fonctionne pas&quot;... à &quot; Au secours please !!! Écran noir !!!&quot;
=== Formuler sa demande de façon claire ===
Essayez, dans la mesure du possible, de rédiger un texte clair avec des phrases courtes. Pensez à ceux qui vous lisent, soignez l'orthographe et la ponctuation. Relisez vous : si vous ne comprenez pas ce que vous avez écrit... les autres non plus.

Respectez la règle : un seul problème par discussion.

Le langage SMS est bien entendu à proscrire.
=== Quelles précisions apporter ? ===
D'une manière générale, il est bon de préciser
*Sa version de Debian ( '''$ cat /etc/debian_version''' )
*La version du noyau Linux ( '''$ uname -a''' )
*Son gestionnaire de fenêtres ( Gnome, Kde, Xfce, ...etc ) et éventuellement son gestionnaire de connexion ( gdm, kdm,...)
Une bonne idée est d'inclure ces renseignements dans sa signature ( et de la tenir à jour ).

==== Sa configuration matérielle ====
Les commandes suivantes vous permettront de connaître votre matériel :
* '''$ lspci''' : informations sur les périphériques pci.
* '''$ lsusb''' : informations sur les périphériques branchés sur les ports usb.
* '''# dmidecode''' : informations sur votre matériel collectées depuis le bios.
* Le répertoire '''/proc''' contient également des fichiers donnant des informations utiles ( par exemple '''$ cat /proc/cpuinfo''' vous renseignera sur votre (vos) processeur(s) )
==== Les éventuels messages d'erreur ====
Les messages d'erreur de votre dernière connexion peuvent être utiles :
* '''# tail -n 30 /var/log/messages'''
* '''# tail -n 30 /var/log/syslog'''
* '''# dmesg | tail -n 30'''
* '''# grep 'EE' /var/log/xorg.0.log''' : pour des problèmes liés au serveur X
==== Autres commandes utiles ====
* '''$ df -h''' : Informations sur l'emplacement de montage des systèmes de fichiers.
* '''# fdisk -l''' : Informations sur le partitionnement de vos disques durs.
==== Pour des problèmes de réseau ====
Pour établir un diagnostic, il est utile de connaître le contenu des fichiers :
* '''/etc/network/interfaces'''
* /'''etc/resolv.conf'''
Le résultat des commandes 
* '''# ifconfig -a'''
* '''# iwconfig''' : pour le wifi
* '''# route -n'''
peut aussi aider.

== Eurêka ! ==
Ça y est ! votre problème est réglé !
Pensez à la &quot;coche verte&quot; pour marquer le sujet comme résolu. Vous pouvez aussi ajouter [Résolu] en tête de votre premier message.

Un merci n'est pas obligatoire mais fait toujours plaisir.

Si vous avez réglé votre problème par vous-même, bravo ! Mais faites en profiter les copains, dites comment vous avez fait.


[[Catégorie:Aide]]</text>
      <sha1>8kj619axzjfkoh3me9s51r0wc8wfwua</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2665</id>
      <parentid>2039</parentid>
      <timestamp>2011-01-17T08:02:15Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Formuler sa demande de façon claire */</comment>
      <text xml:space="preserve" bytes="6067">Tout un chacun, un jour ou l'autre, est amené à rencontrer des problèmes divers et variés sur sa distribution préférée.
Après avoir cherché, sans succès, une solution par soi-même, il devient nécessaire de demander l'aide de personnes plus expérimentées... Encore faut-il savoir bien exposer sa requête pour avoir des chances d'obtenir des réponses pertinentes.
== Aide toi, le ciel t'aidera ==
Le premier réflexe, en cas de problème, doit être de rechercher soi-même une solution. Outre la satisfaction d'avoir réussi, cette façon de faire permet de progresser plus rapidement que d'appliquer bêtement une recette déjà toute faite et que l'on n'a pas comprise. 
=== Chercher une solution sur son ordinateur ===
Une documentation bien fournie existe déjà sur votre disque dur. 

Elle est généralement située dans le répertoire '''/usr/share/doc'''.

Vous y trouverez les manuels de beaucoup d'applications, que ce soit sous forme texte, pdf ou html.

Pensez aux &quot;man pages&quot; qui accompagnent généralement chaque commande et fichier de configuration ( '''man &lt;nom de la commande/du fichier de conf&gt;''' en console ).

Il est aussi judicieux d'installer, avant que ne survienne un souci, de la documentation supplémentaire par l'intermédiaire de votre gestionnaire de paquets préféré.
Les paquets '''debian-faq''' et '''debian-reference-fr''' sont bien utiles !

=== Chercher une solution sur internet ===
Taper les &quot;mots clés&quot; concernant votre problème dans un moteur de recherche va souvent vous permettre de constater que vous n'êtes pas le premier à rencontrer ce problème.

La principale difficulté sera de faire le tri dans la masse de résultats qui vous sera proposée.

Vous pouvez donc restreindre la recherche à des domaines plus précis. Pour Debian, par exemple une recherche sur [http://www.google.com/cse/home?cx=008126959060284566340:ixitwp65ly0&amp;hl=fr Moteur-Google-Debian] ne vous renverra que les résultats trouvés sur les forums et wikis Debian-fr.org, Debian-facile.org et Andesi.org.

Pour faire une recherche qui porte uniquement sur le forum Debian-fr.org vous pouvez voir là : [http://www.google.com/cse/home?cx=008126959060284566340:r59guf_zvzw&amp;hl=fr Google-Forum.debian-fr]

Pensez aussi aux groupes de discussions, par exemple le [http://groups.google.fr/group/linux.debian.user.french/topics?lnk Debian Google-groupe Français]

Enfin, il y a bien sur la [http://www.debian.org/doc/index.fr.html documentation officielle Debian].
== Avoir recours à un forum ==
Avant de poser votre question, pensez à utiliser la fonction &quot;Rechercher&quot; présente sur la page d'accueil... Le sujet a peut-être déjà été traité... et résolu !
Revenez régulièrement sur le forum pour voir si une réponse a été postée, ou réglez vos préférences pour être averti par mail qu'une réponse a été postée.
Ne soyez pas trop impatient, un &quot;up&quot; toutes les cinq minutes ne serait pas trop bien vu !
=== Rédiger un titre explicite ===
Le titre de votre sujet est important, c'est lui qui va &quot; attirer le chaland &quot; et lui donner envie de regarder plus attentivement votre problème. Proscrivez absolument tout titre du genre &quot; HELP !!!&quot;, &quot;Au secours...&quot;...qui va faire fuir bon nombre de participants.

Le titre doit être le résumé de votre question, préférez donc : &quot; Ma carte Nvidia GT Sport ne fonctionne pas&quot;... à &quot; Au secours please !!! Écran noir !!!&quot;
=== Formuler sa demande de façon claire ===
Essayez, dans la mesure du possible, de rédiger un texte clair avec des phrases courtes. Pensez à ceux qui vous lisent, soignez l'orthographe et la ponctuation. Relisez vous : si vous ne comprenez pas ce que vous avez écrit... les autres non plus.

Respectez la règle : un seul problème par discussion.

Prenez le temps de relire le titre : c'est lui qui servira à la recherche pour les autres.

Le langage SMS est bien entendu à proscrire.

=== Quelles précisions apporter ? ===
D'une manière générale, il est bon de préciser
*Sa version de Debian ( '''$ cat /etc/debian_version''' )
*La version du noyau Linux ( '''$ uname -a''' )
*Son gestionnaire de fenêtres ( Gnome, Kde, Xfce, ...etc ) et éventuellement son gestionnaire de connexion ( gdm, kdm,...)
Une bonne idée est d'inclure ces renseignements dans sa signature ( et de la tenir à jour ).

==== Sa configuration matérielle ====
Les commandes suivantes vous permettront de connaître votre matériel :
* '''$ lspci''' : informations sur les périphériques pci.
* '''$ lsusb''' : informations sur les périphériques branchés sur les ports usb.
* '''# dmidecode''' : informations sur votre matériel collectées depuis le bios.
* Le répertoire '''/proc''' contient également des fichiers donnant des informations utiles ( par exemple '''$ cat /proc/cpuinfo''' vous renseignera sur votre (vos) processeur(s) )
==== Les éventuels messages d'erreur ====
Les messages d'erreur de votre dernière connexion peuvent être utiles :
* '''# tail -n 30 /var/log/messages'''
* '''# tail -n 30 /var/log/syslog'''
* '''# dmesg | tail -n 30'''
* '''# grep 'EE' /var/log/xorg.0.log''' : pour des problèmes liés au serveur X
==== Autres commandes utiles ====
* '''$ df -h''' : Informations sur l'emplacement de montage des systèmes de fichiers.
* '''# fdisk -l''' : Informations sur le partitionnement de vos disques durs.
==== Pour des problèmes de réseau ====
Pour établir un diagnostic, il est utile de connaître le contenu des fichiers :
* '''/etc/network/interfaces'''
* /'''etc/resolv.conf'''
Le résultat des commandes 
* '''# ifconfig -a'''
* '''# iwconfig''' : pour le wifi
* '''# route -n'''
peut aussi aider.

== Eurêka ! ==
Ça y est ! votre problème est réglé !
Pensez à la &quot;coche verte&quot; pour marquer le sujet comme résolu. Vous pouvez aussi ajouter [Résolu] en tête de votre premier message.

Un merci n'est pas obligatoire mais fait toujours plaisir.

Si vous avez réglé votre problème par vous-même, bravo ! Mais faites en profiter les copains, dites comment vous avez fait.


[[Catégorie:Aide]]</text>
      <sha1>agbom72tjh14l4ae4r01918v5eiflke</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3515</id>
      <parentid>2665</parentid>
      <timestamp>2011-10-30T14:33:51Z</timestamp>
      <contributor>
        <username>Martin mtl</username>
        <id>173</id>
      </contributor>
      <comment>/* Aide toi, le ciel t'aidera */</comment>
      <text xml:space="preserve" bytes="6069">Tout un chacun, un jour ou l'autre, est amené à rencontrer des problèmes divers et variés sur sa distribution préférée.
Après avoir cherché, sans succès, une solution par soi-même, il devient nécessaire de demander l'aide de personnes plus expérimentées... Encore faut-il savoir bien exposer sa requête pour avoir des chances d'obtenir des réponses pertinentes.
== Aide-toi, le ciel t'aidera ==
Le premier réflexe, en cas de problème, doit être de rechercher soi-même une solution. Outre la satisfaction d'avoir réussi, cette façon de faire permet de progresser plus rapidement que d'appliquer bêtement une recette déjà toute faite et que l'on n'a pas comprise. 
=== Chercher une solution sur son ordinateur ===
Une documentation bien fournie existe déjà sur votre disque dur. 

Elle est généralement située dans le répertoire '''/usr/share/doc'''.

Vous y trouverez les manuels de beaucoup d'applications, que ce soit sous forme texte, pdf ou html.

Pensez aux &quot;man pages&quot; qui accompagnent généralement chaque commande et fichier de configuration ( '''man &lt;nom de la commande/du fichier de conf&gt;''' en console ).

Il est aussi judicieux d'installer, avant que ne survienne un souci, de la documentation supplémentaire par l'intermédiaire de votre gestionnaire de paquets préféré.
Les paquets '''debian-faq''' et '''debian-reference-fr''' sont bien utiles !

=== Chercher une solution sur internet ===
Taper les &quot;mots clés&quot; concernant votre problème dans un moteur de recherche va souvent vous permettre de constater que vous n'êtes pas le premier à rencontrer ce problème.

La principale difficulté sera de faire le tri dans la masse de résultats qui vous sera proposée.

Vous pouvez donc restreindre la recherche à des domaines plus précis. Pour Debian, par exemple une recherche sur [http://www.google.com/cse/home?cx=008126959060284566340:ixitwp65ly0&amp;hl=fr Moteur-Google-Debian] ne vous renverra que les résultats trouvés sur les forums et wikis Debian-fr.org, Debian-facile.org et Andesi.org.

Pour faire une recherche qui porte uniquement sur le forum Debian-fr.org vous pouvez voir là : [http://www.google.com/cse/home?cx=008126959060284566340:r59guf_zvzw&amp;hl=fr Google-Forum.debian-fr]

Pensez aussi aux groupes de discussions, par exemple le [http://groups.google.fr/group/linux.debian.user.french/topics?lnk Debian Google-groupe Français]

Enfin, il y a bien sûr la [http://www.debian.org/doc/index.fr.html documentation officielle Debian].

== Avoir recours à un forum ==
Avant de poser votre question, pensez à utiliser la fonction &quot;Rechercher&quot; présente sur la page d'accueil... Le sujet a peut-être déjà été traité... et résolu !
Revenez régulièrement sur le forum pour voir si une réponse a été postée, ou réglez vos préférences pour être averti par mail qu'une réponse a été postée.
Ne soyez pas trop impatient, un &quot;up&quot; toutes les cinq minutes ne serait pas trop bien vu !
=== Rédiger un titre explicite ===
Le titre de votre sujet est important, c'est lui qui va &quot; attirer le chaland &quot; et lui donner envie de regarder plus attentivement votre problème. Proscrivez absolument tout titre du genre &quot; HELP !!!&quot;, &quot;Au secours...&quot;...qui va faire fuir bon nombre de participants.

Le titre doit être le résumé de votre question, préférez donc : &quot; Ma carte Nvidia GT Sport ne fonctionne pas&quot;... à &quot; Au secours please !!! Écran noir !!!&quot;
=== Formuler sa demande de façon claire ===
Essayez, dans la mesure du possible, de rédiger un texte clair avec des phrases courtes. Pensez à ceux qui vous lisent, soignez l'orthographe et la ponctuation. Relisez vous : si vous ne comprenez pas ce que vous avez écrit... les autres non plus.

Respectez la règle : un seul problème par discussion.

Prenez le temps de relire le titre : c'est lui qui servira à la recherche pour les autres.

Le langage SMS est bien entendu à proscrire.

=== Quelles précisions apporter ? ===
D'une manière générale, il est bon de préciser
*Sa version de Debian ( '''$ cat /etc/debian_version''' )
*La version du noyau Linux ( '''$ uname -a''' )
*Son gestionnaire de fenêtres ( Gnome, Kde, Xfce, ...etc ) et éventuellement son gestionnaire de connexion ( gdm, kdm,...)
Une bonne idée est d'inclure ces renseignements dans sa signature ( et de la tenir à jour ).

==== Sa configuration matérielle ====
Les commandes suivantes vous permettront de connaître votre matériel :
* '''$ lspci''' : informations sur les périphériques pci.
* '''$ lsusb''' : informations sur les périphériques branchés sur les ports usb.
* '''# dmidecode''' : informations sur votre matériel collectées depuis le bios.
* Le répertoire '''/proc''' contient également des fichiers donnant des informations utiles ( par exemple '''$ cat /proc/cpuinfo''' vous renseignera sur votre (vos) processeur(s) )
==== Les éventuels messages d'erreur ====
Les messages d'erreur de votre dernière connexion peuvent être utiles :
* '''# tail -n 30 /var/log/messages'''
* '''# tail -n 30 /var/log/syslog'''
* '''# dmesg | tail -n 30'''
* '''# grep 'EE' /var/log/xorg.0.log''' : pour des problèmes liés au serveur X
==== Autres commandes utiles ====
* '''$ df -h''' : Informations sur l'emplacement de montage des systèmes de fichiers.
* '''# fdisk -l''' : Informations sur le partitionnement de vos disques durs.
==== Pour des problèmes de réseau ====
Pour établir un diagnostic, il est utile de connaître le contenu des fichiers :
* '''/etc/network/interfaces'''
* /'''etc/resolv.conf'''
Le résultat des commandes 
* '''# ifconfig -a'''
* '''# iwconfig''' : pour le wifi
* '''# route -n'''
peut aussi aider.

== Eurêka ! ==
Ça y est ! votre problème est réglé !
Pensez à la &quot;coche verte&quot; pour marquer le sujet comme résolu. Vous pouvez aussi ajouter [Résolu] en tête de votre premier message.

Un merci n'est pas obligatoire mais fait toujours plaisir.

Si vous avez réglé votre problème par vous-même, bravo ! Mais faites en profiter les copains, dites comment vous avez fait.


[[Catégorie:Aide]]</text>
      <sha1>6tmaps9frroyljbq4bwhuhxhf6m9kaq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3516</id>
      <parentid>3515</parentid>
      <timestamp>2011-10-30T14:36:13Z</timestamp>
      <contributor>
        <username>Martin mtl</username>
        <id>173</id>
      </contributor>
      <comment>/* Formuler sa demande de façon claire */</comment>
      <text xml:space="preserve" bytes="6069">Tout un chacun, un jour ou l'autre, est amené à rencontrer des problèmes divers et variés sur sa distribution préférée.
Après avoir cherché, sans succès, une solution par soi-même, il devient nécessaire de demander l'aide de personnes plus expérimentées... Encore faut-il savoir bien exposer sa requête pour avoir des chances d'obtenir des réponses pertinentes.
== Aide-toi, le ciel t'aidera ==
Le premier réflexe, en cas de problème, doit être de rechercher soi-même une solution. Outre la satisfaction d'avoir réussi, cette façon de faire permet de progresser plus rapidement que d'appliquer bêtement une recette déjà toute faite et que l'on n'a pas comprise. 
=== Chercher une solution sur son ordinateur ===
Une documentation bien fournie existe déjà sur votre disque dur. 

Elle est généralement située dans le répertoire '''/usr/share/doc'''.

Vous y trouverez les manuels de beaucoup d'applications, que ce soit sous forme texte, pdf ou html.

Pensez aux &quot;man pages&quot; qui accompagnent généralement chaque commande et fichier de configuration ( '''man &lt;nom de la commande/du fichier de conf&gt;''' en console ).

Il est aussi judicieux d'installer, avant que ne survienne un souci, de la documentation supplémentaire par l'intermédiaire de votre gestionnaire de paquets préféré.
Les paquets '''debian-faq''' et '''debian-reference-fr''' sont bien utiles !

=== Chercher une solution sur internet ===
Taper les &quot;mots clés&quot; concernant votre problème dans un moteur de recherche va souvent vous permettre de constater que vous n'êtes pas le premier à rencontrer ce problème.

La principale difficulté sera de faire le tri dans la masse de résultats qui vous sera proposée.

Vous pouvez donc restreindre la recherche à des domaines plus précis. Pour Debian, par exemple une recherche sur [http://www.google.com/cse/home?cx=008126959060284566340:ixitwp65ly0&amp;hl=fr Moteur-Google-Debian] ne vous renverra que les résultats trouvés sur les forums et wikis Debian-fr.org, Debian-facile.org et Andesi.org.

Pour faire une recherche qui porte uniquement sur le forum Debian-fr.org vous pouvez voir là : [http://www.google.com/cse/home?cx=008126959060284566340:r59guf_zvzw&amp;hl=fr Google-Forum.debian-fr]

Pensez aussi aux groupes de discussions, par exemple le [http://groups.google.fr/group/linux.debian.user.french/topics?lnk Debian Google-groupe Français]

Enfin, il y a bien sûr la [http://www.debian.org/doc/index.fr.html documentation officielle Debian].

== Avoir recours à un forum ==
Avant de poser votre question, pensez à utiliser la fonction &quot;Rechercher&quot; présente sur la page d'accueil... Le sujet a peut-être déjà été traité... et résolu !
Revenez régulièrement sur le forum pour voir si une réponse a été postée, ou réglez vos préférences pour être averti par mail qu'une réponse a été postée.
Ne soyez pas trop impatient, un &quot;up&quot; toutes les cinq minutes ne serait pas trop bien vu !
=== Rédiger un titre explicite ===
Le titre de votre sujet est important, c'est lui qui va &quot; attirer le chaland &quot; et lui donner envie de regarder plus attentivement votre problème. Proscrivez absolument tout titre du genre &quot; HELP !!!&quot;, &quot;Au secours...&quot;...qui va faire fuir bon nombre de participants.

Le titre doit être le résumé de votre question, préférez donc : &quot; Ma carte Nvidia GT Sport ne fonctionne pas&quot;... à &quot; Au secours please !!! Écran noir !!!&quot;
=== Formuler sa demande de façon claire ===
Essayez, dans la mesure du possible, de rédiger un texte clair avec des phrases courtes. Pensez à ceux qui vous lisent, soignez l'orthographe et la ponctuation. Relisez-vous : si vous ne comprenez pas ce que vous avez écrit... les autres non plus.

Respectez la règle : un seul problème par discussion.

Prenez le temps de relire le titre : c'est lui qui servira à la recherche pour les autres.

Le langage SMS est bien entendu à proscrire.

=== Quelles précisions apporter ? ===
D'une manière générale, il est bon de préciser
*Sa version de Debian ( '''$ cat /etc/debian_version''' )
*La version du noyau Linux ( '''$ uname -a''' )
*Son gestionnaire de fenêtres ( Gnome, Kde, Xfce, ...etc ) et éventuellement son gestionnaire de connexion ( gdm, kdm,...)
Une bonne idée est d'inclure ces renseignements dans sa signature ( et de la tenir à jour ).

==== Sa configuration matérielle ====
Les commandes suivantes vous permettront de connaître votre matériel :
* '''$ lspci''' : informations sur les périphériques pci.
* '''$ lsusb''' : informations sur les périphériques branchés sur les ports usb.
* '''# dmidecode''' : informations sur votre matériel collectées depuis le bios.
* Le répertoire '''/proc''' contient également des fichiers donnant des informations utiles ( par exemple '''$ cat /proc/cpuinfo''' vous renseignera sur votre (vos) processeur(s) )
==== Les éventuels messages d'erreur ====
Les messages d'erreur de votre dernière connexion peuvent être utiles :
* '''# tail -n 30 /var/log/messages'''
* '''# tail -n 30 /var/log/syslog'''
* '''# dmesg | tail -n 30'''
* '''# grep 'EE' /var/log/xorg.0.log''' : pour des problèmes liés au serveur X
==== Autres commandes utiles ====
* '''$ df -h''' : Informations sur l'emplacement de montage des systèmes de fichiers.
* '''# fdisk -l''' : Informations sur le partitionnement de vos disques durs.
==== Pour des problèmes de réseau ====
Pour établir un diagnostic, il est utile de connaître le contenu des fichiers :
* '''/etc/network/interfaces'''
* /'''etc/resolv.conf'''
Le résultat des commandes 
* '''# ifconfig -a'''
* '''# iwconfig''' : pour le wifi
* '''# route -n'''
peut aussi aider.

== Eurêka ! ==
Ça y est ! votre problème est réglé !
Pensez à la &quot;coche verte&quot; pour marquer le sujet comme résolu. Vous pouvez aussi ajouter [Résolu] en tête de votre premier message.

Un merci n'est pas obligatoire mais fait toujours plaisir.

Si vous avez réglé votre problème par vous-même, bravo ! Mais faites en profiter les copains, dites comment vous avez fait.


[[Catégorie:Aide]]</text>
      <sha1>7jmltq308qxjkdzu769tbphwxtuu0oc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4883</id>
      <parentid>3516</parentid>
      <timestamp>2013-01-15T20:40:36Z</timestamp>
      <contributor>
        <username>Syam</username>
        <id>48</id>
      </contributor>
      <minor/>
      <comment>lspci -nn (plus précis, aide la recherche des infos sur le matériel)</comment>
      <text xml:space="preserve" bytes="6073">Tout un chacun, un jour ou l'autre, est amené à rencontrer des problèmes divers et variés sur sa distribution préférée.
Après avoir cherché, sans succès, une solution par soi-même, il devient nécessaire de demander l'aide de personnes plus expérimentées... Encore faut-il savoir bien exposer sa requête pour avoir des chances d'obtenir des réponses pertinentes.
== Aide-toi, le ciel t'aidera ==
Le premier réflexe, en cas de problème, doit être de rechercher soi-même une solution. Outre la satisfaction d'avoir réussi, cette façon de faire permet de progresser plus rapidement que d'appliquer bêtement une recette déjà toute faite et que l'on n'a pas comprise. 
=== Chercher une solution sur son ordinateur ===
Une documentation bien fournie existe déjà sur votre disque dur. 

Elle est généralement située dans le répertoire '''/usr/share/doc'''.

Vous y trouverez les manuels de beaucoup d'applications, que ce soit sous forme texte, pdf ou html.

Pensez aux &quot;man pages&quot; qui accompagnent généralement chaque commande et fichier de configuration ( '''man &lt;nom de la commande/du fichier de conf&gt;''' en console ).

Il est aussi judicieux d'installer, avant que ne survienne un souci, de la documentation supplémentaire par l'intermédiaire de votre gestionnaire de paquets préféré.
Les paquets '''debian-faq''' et '''debian-reference-fr''' sont bien utiles !

=== Chercher une solution sur internet ===
Taper les &quot;mots clés&quot; concernant votre problème dans un moteur de recherche va souvent vous permettre de constater que vous n'êtes pas le premier à rencontrer ce problème.

La principale difficulté sera de faire le tri dans la masse de résultats qui vous sera proposée.

Vous pouvez donc restreindre la recherche à des domaines plus précis. Pour Debian, par exemple une recherche sur [http://www.google.com/cse/home?cx=008126959060284566340:ixitwp65ly0&amp;hl=fr Moteur-Google-Debian] ne vous renverra que les résultats trouvés sur les forums et wikis Debian-fr.org, Debian-facile.org et Andesi.org.

Pour faire une recherche qui porte uniquement sur le forum Debian-fr.org vous pouvez voir là : [http://www.google.com/cse/home?cx=008126959060284566340:r59guf_zvzw&amp;hl=fr Google-Forum.debian-fr]

Pensez aussi aux groupes de discussions, par exemple le [http://groups.google.fr/group/linux.debian.user.french/topics?lnk Debian Google-groupe Français]

Enfin, il y a bien sûr la [http://www.debian.org/doc/index.fr.html documentation officielle Debian].

== Avoir recours à un forum ==
Avant de poser votre question, pensez à utiliser la fonction &quot;Rechercher&quot; présente sur la page d'accueil... Le sujet a peut-être déjà été traité... et résolu !
Revenez régulièrement sur le forum pour voir si une réponse a été postée, ou réglez vos préférences pour être averti par mail qu'une réponse a été postée.
Ne soyez pas trop impatient, un &quot;up&quot; toutes les cinq minutes ne serait pas trop bien vu !
=== Rédiger un titre explicite ===
Le titre de votre sujet est important, c'est lui qui va &quot; attirer le chaland &quot; et lui donner envie de regarder plus attentivement votre problème. Proscrivez absolument tout titre du genre &quot; HELP !!!&quot;, &quot;Au secours...&quot;...qui va faire fuir bon nombre de participants.

Le titre doit être le résumé de votre question, préférez donc : &quot; Ma carte Nvidia GT Sport ne fonctionne pas&quot;... à &quot; Au secours please !!! Écran noir !!!&quot;
=== Formuler sa demande de façon claire ===
Essayez, dans la mesure du possible, de rédiger un texte clair avec des phrases courtes. Pensez à ceux qui vous lisent, soignez l'orthographe et la ponctuation. Relisez-vous : si vous ne comprenez pas ce que vous avez écrit... les autres non plus.

Respectez la règle : un seul problème par discussion.

Prenez le temps de relire le titre : c'est lui qui servira à la recherche pour les autres.

Le langage SMS est bien entendu à proscrire.

=== Quelles précisions apporter ? ===
D'une manière générale, il est bon de préciser
*Sa version de Debian ( '''$ cat /etc/debian_version''' )
*La version du noyau Linux ( '''$ uname -a''' )
*Son gestionnaire de fenêtres ( Gnome, Kde, Xfce, ...etc ) et éventuellement son gestionnaire de connexion ( gdm, kdm,...)
Une bonne idée est d'inclure ces renseignements dans sa signature ( et de la tenir à jour ).

==== Sa configuration matérielle ====
Les commandes suivantes vous permettront de connaître votre matériel :
* '''$ lspci -nn''' : informations sur les périphériques pci.
* '''$ lsusb''' : informations sur les périphériques branchés sur les ports usb.
* '''# dmidecode''' : informations sur votre matériel collectées depuis le bios.
* Le répertoire '''/proc''' contient également des fichiers donnant des informations utiles ( par exemple '''$ cat /proc/cpuinfo''' vous renseignera sur votre (vos) processeur(s) )
==== Les éventuels messages d'erreur ====
Les messages d'erreur de votre dernière connexion peuvent être utiles :
* '''# tail -n 30 /var/log/messages'''
* '''# tail -n 30 /var/log/syslog'''
* '''# dmesg | tail -n 30'''
* '''# grep 'EE' /var/log/xorg.0.log''' : pour des problèmes liés au serveur X
==== Autres commandes utiles ====
* '''$ df -h''' : Informations sur l'emplacement de montage des systèmes de fichiers.
* '''# fdisk -l''' : Informations sur le partitionnement de vos disques durs.
==== Pour des problèmes de réseau ====
Pour établir un diagnostic, il est utile de connaître le contenu des fichiers :
* '''/etc/network/interfaces'''
* /'''etc/resolv.conf'''
Le résultat des commandes 
* '''# ifconfig -a'''
* '''# iwconfig''' : pour le wifi
* '''# route -n'''
peut aussi aider.

== Eurêka ! ==
Ça y est ! votre problème est réglé !
Pensez à la &quot;coche verte&quot; pour marquer le sujet comme résolu. Vous pouvez aussi ajouter [Résolu] en tête de votre premier message.

Un merci n'est pas obligatoire mais fait toujours plaisir.

Si vous avez réglé votre problème par vous-même, bravo ! Mais faites en profiter les copains, dites comment vous avez fait.


[[Catégorie:Aide]]</text>
      <sha1>87av6iuuv8a9ftgi43mcweyl5zocphs</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5436</id>
      <parentid>4883</parentid>
      <timestamp>2013-11-13T15:11:32Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Chercher une solution sur internet */ qq corrections de liens</comment>
      <text xml:space="preserve" bytes="6171">Tout un chacun, un jour ou l'autre, est amené à rencontrer des problèmes divers et variés sur sa distribution préférée.
Après avoir cherché, sans succès, une solution par soi-même, il devient nécessaire de demander l'aide de personnes plus expérimentées... Encore faut-il savoir bien exposer sa requête pour avoir des chances d'obtenir des réponses pertinentes.
== Aide-toi, le ciel t'aidera ==
Le premier réflexe, en cas de problème, doit être de rechercher soi-même une solution. Outre la satisfaction d'avoir réussi, cette façon de faire permet de progresser plus rapidement que d'appliquer bêtement une recette déjà toute faite et que l'on n'a pas comprise. 
=== Chercher une solution sur son ordinateur ===
Une documentation bien fournie existe déjà sur votre disque dur. 

Elle est généralement située dans le répertoire '''/usr/share/doc'''.

Vous y trouverez les manuels de beaucoup d'applications, que ce soit sous forme texte, pdf ou html.

Pensez aux &quot;man pages&quot; qui accompagnent généralement chaque commande et fichier de configuration ( '''man &lt;nom de la commande/du fichier de conf&gt;''' en console ).

Il est aussi judicieux d'installer, avant que ne survienne un souci, de la documentation supplémentaire par l'intermédiaire de votre gestionnaire de paquets préféré.
Les paquets '''debian-faq''' et '''debian-reference-fr''' sont bien utiles !

=== Chercher une solution sur internet ===
Taper les &quot;mots clés&quot; concernant votre problème dans un moteur de recherche va souvent vous permettre de constater que vous n'êtes pas le premier à rencontrer ce problème.

La principale difficulté sera de faire le tri dans la masse de résultats qui vous sera proposée.

Vous pouvez donc restreindre la recherche à des domaines plus précis. Pour Debian, par exemple une recherche sur [https://www.google.fr/search?q=site%3Adebian-fr.org+OR+site%3Aandesi.org+OR+site%3Adebian-facile.org+OR+site%3Aisalo.org%2Fwiki.debian-fr+Vos_Mots_Clés Google avec ces clauses] ne vous renverra que les résultats trouvés sur les forums et wikis Debian-fr.org, Debian-facile.org et Andesi.org.

Pour faire une recherche qui porte uniquement sur le forum Debian-fr.org vous pouvez voir là : [https://startpage.com/do/search?q=host%3Adebian-fr.org+p%C3%AAche_%C3%A0_la_moule&amp;l=francais Startpage-debian-fr]

Pensez aussi aux groupes de discussions, par exemple le [http://groups.google.fr/group/linux.debian.user.french/topics?lnk Debian Google-groupe Français]

Enfin, il y a bien sûr la [http://www.debian.org/doc/index.fr.html documentation officielle Debian].

== Avoir recours à un forum ==
Avant de poser votre question, pensez à utiliser la fonction &quot;Rechercher&quot; présente sur la page d'accueil... Le sujet a peut-être déjà été traité... et résolu !
Revenez régulièrement sur le forum pour voir si une réponse a été postée, ou réglez vos préférences pour être averti par mail qu'une réponse a été postée.
Ne soyez pas trop impatient, un &quot;up&quot; toutes les cinq minutes ne serait pas trop bien vu !
=== Rédiger un titre explicite ===
Le titre de votre sujet est important, c'est lui qui va &quot; attirer le chaland &quot; et lui donner envie de regarder plus attentivement votre problème. Proscrivez absolument tout titre du genre &quot; HELP !!!&quot;, &quot;Au secours...&quot;...qui va faire fuir bon nombre de participants.

Le titre doit être le résumé de votre question, préférez donc : &quot; Ma carte Nvidia GT Sport ne fonctionne pas&quot;... à &quot; Au secours please !!! Écran noir !!!&quot;
=== Formuler sa demande de façon claire ===
Essayez, dans la mesure du possible, de rédiger un texte clair avec des phrases courtes. Pensez à ceux qui vous lisent, soignez l'orthographe et la ponctuation. Relisez-vous : si vous ne comprenez pas ce que vous avez écrit... les autres non plus.

Respectez la règle : un seul problème par discussion.

Prenez le temps de relire le titre : c'est lui qui servira à la recherche pour les autres.

Le langage SMS est bien entendu à proscrire.

=== Quelles précisions apporter ? ===
D'une manière générale, il est bon de préciser
*Sa version de Debian ( '''$ cat /etc/debian_version''' )
*La version du noyau Linux ( '''$ uname -a''' )
*Son gestionnaire de fenêtres ( Gnome, Kde, Xfce, ...etc ) et éventuellement son gestionnaire de connexion ( gdm, kdm,...)
Une bonne idée est d'inclure ces renseignements dans sa signature ( et de la tenir à jour ).

==== Sa configuration matérielle ====
Les commandes suivantes vous permettront de connaître votre matériel :
* '''$ lspci -nn''' : informations sur les périphériques pci.
* '''$ lsusb''' : informations sur les périphériques branchés sur les ports usb.
* '''# dmidecode''' : informations sur votre matériel collectées depuis le bios.
* Le répertoire '''/proc''' contient également des fichiers donnant des informations utiles ( par exemple '''$ cat /proc/cpuinfo''' vous renseignera sur votre (vos) processeur(s) )
==== Les éventuels messages d'erreur ====
Les messages d'erreur de votre dernière connexion peuvent être utiles :
* '''# tail -n 30 /var/log/messages'''
* '''# tail -n 30 /var/log/syslog'''
* '''# dmesg | tail -n 30'''
* '''# grep 'EE' /var/log/xorg.0.log''' : pour des problèmes liés au serveur X
==== Autres commandes utiles ====
* '''$ df -h''' : Informations sur l'emplacement de montage des systèmes de fichiers.
* '''# fdisk -l''' : Informations sur le partitionnement de vos disques durs.
==== Pour des problèmes de réseau ====
Pour établir un diagnostic, il est utile de connaître le contenu des fichiers :
* '''/etc/network/interfaces'''
* /'''etc/resolv.conf'''
Le résultat des commandes 
* '''# ifconfig -a'''
* '''# iwconfig''' : pour le wifi
* '''# route -n'''
peut aussi aider.

== Eurêka ! ==
Ça y est ! votre problème est réglé !
Pensez à la &quot;coche verte&quot; pour marquer le sujet comme résolu. Vous pouvez aussi ajouter [Résolu] en tête de votre premier message.

Un merci n'est pas obligatoire mais fait toujours plaisir.

Si vous avez réglé votre problème par vous-même, bravo ! Mais faites en profiter les copains, dites comment vous avez fait.


[[Catégorie:Aide]]</text>
      <sha1>s41jyjnl9sx5353utkhll7l2siwzaiv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5437</id>
      <parentid>5436</parentid>
      <timestamp>2013-11-13T16:36:37Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Avoir recours à un forum */ mini-reformulations</comment>
      <text xml:space="preserve" bytes="6212">Tout un chacun, un jour ou l'autre, est amené à rencontrer des problèmes divers et variés sur sa distribution préférée.
Après avoir cherché, sans succès, une solution par soi-même, il devient nécessaire de demander l'aide de personnes plus expérimentées... Encore faut-il savoir bien exposer sa requête pour avoir des chances d'obtenir des réponses pertinentes.
== Aide-toi, le ciel t'aidera ==
Le premier réflexe, en cas de problème, doit être de rechercher soi-même une solution. Outre la satisfaction d'avoir réussi, cette façon de faire permet de progresser plus rapidement que d'appliquer bêtement une recette déjà toute faite et que l'on n'a pas comprise. 
=== Chercher une solution sur son ordinateur ===
Une documentation bien fournie existe déjà sur votre disque dur. 

Elle est généralement située dans le répertoire '''/usr/share/doc'''.

Vous y trouverez les manuels de beaucoup d'applications, que ce soit sous forme texte, pdf ou html.

Pensez aux &quot;man pages&quot; qui accompagnent généralement chaque commande et fichier de configuration ( '''man &lt;nom de la commande/du fichier de conf&gt;''' en console ).

Il est aussi judicieux d'installer, avant que ne survienne un souci, de la documentation supplémentaire par l'intermédiaire de votre gestionnaire de paquets préféré.
Les paquets '''debian-faq''' et '''debian-reference-fr''' sont bien utiles !

=== Chercher une solution sur internet ===
Taper les &quot;mots clés&quot; concernant votre problème dans un moteur de recherche va souvent vous permettre de constater que vous n'êtes pas le premier à rencontrer ce problème.

La principale difficulté sera de faire le tri dans la masse de résultats qui vous sera proposée.

Vous pouvez donc restreindre la recherche à des domaines plus précis. Pour Debian, par exemple une recherche sur [https://www.google.fr/search?q=site%3Adebian-fr.org+OR+site%3Aandesi.org+OR+site%3Adebian-facile.org+OR+site%3Aisalo.org%2Fwiki.debian-fr+Vos_Mots_Clés Google avec ces clauses] ne vous renverra que les résultats trouvés sur les forums et wikis Debian-fr.org, Debian-facile.org et Andesi.org.

Pour faire une recherche qui porte uniquement sur le forum Debian-fr.org vous pouvez voir là : [https://startpage.com/do/search?q=host%3Adebian-fr.org+p%C3%AAche_%C3%A0_la_moule&amp;l=francais Startpage-debian-fr]

Pensez aussi aux groupes de discussions, par exemple le [http://groups.google.fr/group/linux.debian.user.french/topics?lnk Debian Google-groupe Français]

Enfin, il y a bien sûr la [http://www.debian.org/doc/index.fr.html documentation officielle Debian].

== Avoir recours à un forum ==
Avant de poser votre question, pensez à utiliser la fonction &quot;[https://www.debian-fr.org/search.php Rechercher]&quot; présente sur la page d'accueil... Le sujet a peut-être déjà été traité... et résolu !
Revenez régulièrement sur le forum pour voir si une réponse a été postée, ou réglez vos préférences pour être averti par mail qu'une réponse a été postée.
Ne soyez pas trop impatient, un &quot;up&quot; toutes les cinq minutes ne serait pas trop bien vu !
=== Rédiger un titre explicite ===
Le titre de votre sujet est important, c'est lui qui va &quot; attirer le chaland &quot; et lui donner envie de regarder plus attentivement votre problème. Proscrivez absolument tout titre du genre &quot; HELP !!!&quot;, &quot;Au secours...&quot;...qui va agacer bon nombre de participants.

Le titre doit être le résumé de votre question, préférez donc : &quot;Écran noir avec ma carte Nvidia GT Sport &quot;... à &quot; Au secours please !!! ça fonctionne pas !!!&quot;
=== Formuler sa demande de façon claire ===
Essayez, dans la mesure du possible, de rédiger un texte clair avec des phrases courtes. Pensez à ceux qui vous lisent, soignez l'orthographe et la ponctuation. Relisez-vous : si vous ne comprenez pas ce que vous avez écrit... les autres non plus.

Respectez la règle : un seul problème par discussion.

Prenez le temps de relire le titre : c'est lui qui servira à la recherche pour les autres.

Le langage SMS est bien entendu à proscrire.

=== Quelles précisions apporter ? ===
D'une manière générale, il est bon de préciser
*Sa version de Debian ( '''$ cat /etc/debian_version''' )
*La version du noyau Linux ( '''$ uname -a''' )
*Son gestionnaire de fenêtres ( Gnome, Kde, Xfce, ...etc ) et éventuellement son gestionnaire de connexion ( gdm, kdm,...)
Une bonne idée est d'inclure ces renseignements dans sa signature ( et de la tenir à jour ).

==== Sa configuration matérielle ====
Les commandes suivantes vous permettront de connaître votre matériel :
* '''$ lspci -nn''' : informations sur les périphériques pci.
* '''$ lsusb''' : informations sur les périphériques branchés sur les ports usb.
* '''# dmidecode''' : informations sur votre matériel collectées depuis le bios.
* Le répertoire '''/proc''' contient également des fichiers donnant des informations utiles ( par exemple '''$ cat /proc/cpuinfo''' vous renseignera sur votre (vos) processeur(s) )
==== Les éventuels messages d'erreur ====
Les messages d'erreur de votre dernière connexion peuvent être utiles :
* '''# tail -n 30 /var/log/messages'''
* '''# tail -n 30 /var/log/syslog'''
* '''# dmesg | tail -n 30'''
* '''# grep 'EE' /var/log/xorg.0.log''' : pour des problèmes liés au serveur X
==== Autres commandes utiles ====
* '''$ df -h''' : Informations sur l'emplacement de montage des systèmes de fichiers.
* '''# fdisk -l''' : Informations sur le partitionnement de vos disques durs.
==== Pour des problèmes de réseau ====
Pour établir un diagnostic, il est utile de connaître le contenu des fichiers :
* '''/etc/network/interfaces'''
* /'''etc/resolv.conf'''
Le résultat des commandes 
* '''# ifconfig -a'''
* '''# iwconfig''' : pour le wifi
* '''# route -n'''
peut aussi aider.

== Eurêka ! ==
Ça y est ! votre problème est réglé !
Pensez à la &quot;coche verte&quot; pour marquer le sujet comme résolu. Vous pouvez aussi ajouter [Résolu] en tête de votre premier message.

Un merci n'est pas obligatoire mais fait toujours plaisir.

Si vous avez réglé votre problème par vous-même, bravo ! Mais faites en profiter les copains, dites comment vous avez fait.


[[Catégorie:Aide]]</text>
      <sha1>lnr3a8wq546cbkwdgiavlt74c7k2cyd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5438</id>
      <parentid>5437</parentid>
      <timestamp>2013-11-14T18:12:25Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Les éventuels messages d'erreur */ Xorg pas xorg</comment>
      <text xml:space="preserve" bytes="6213">Tout un chacun, un jour ou l'autre, est amené à rencontrer des problèmes divers et variés sur sa distribution préférée.
Après avoir cherché, sans succès, une solution par soi-même, il devient nécessaire de demander l'aide de personnes plus expérimentées... Encore faut-il savoir bien exposer sa requête pour avoir des chances d'obtenir des réponses pertinentes.
== Aide-toi, le ciel t'aidera ==
Le premier réflexe, en cas de problème, doit être de rechercher soi-même une solution. Outre la satisfaction d'avoir réussi, cette façon de faire permet de progresser plus rapidement que d'appliquer bêtement une recette déjà toute faite et que l'on n'a pas comprise. 
=== Chercher une solution sur son ordinateur ===
Une documentation bien fournie existe déjà sur votre disque dur. 

Elle est généralement située dans le répertoire '''/usr/share/doc'''.

Vous y trouverez les manuels de beaucoup d'applications, que ce soit sous forme texte, pdf ou html.

Pensez aux &quot;man pages&quot; qui accompagnent généralement chaque commande et fichier de configuration ( '''man &lt;nom de la commande/du fichier de conf&gt;''' en console ).

Il est aussi judicieux d'installer, avant que ne survienne un souci, de la documentation supplémentaire par l'intermédiaire de votre gestionnaire de paquets préféré.
Les paquets '''debian-faq''' et '''debian-reference-fr''' sont bien utiles !

=== Chercher une solution sur internet ===
Taper les &quot;mots clés&quot; concernant votre problème dans un moteur de recherche va souvent vous permettre de constater que vous n'êtes pas le premier à rencontrer ce problème.

La principale difficulté sera de faire le tri dans la masse de résultats qui vous sera proposée.

Vous pouvez donc restreindre la recherche à des domaines plus précis. Pour Debian, par exemple une recherche sur [https://www.google.fr/search?q=site%3Adebian-fr.org+OR+site%3Aandesi.org+OR+site%3Adebian-facile.org+OR+site%3Aisalo.org%2Fwiki.debian-fr+Vos_Mots_Clés Google avec ces clauses] ne vous renverra que les résultats trouvés sur les forums et wikis Debian-fr.org, Debian-facile.org et Andesi.org.

Pour faire une recherche qui porte uniquement sur le forum Debian-fr.org vous pouvez voir là : [https://startpage.com/do/search?q=host%3Adebian-fr.org+p%C3%AAche_%C3%A0_la_moule&amp;l=francais Startpage-debian-fr]

Pensez aussi aux groupes de discussions, par exemple le [http://groups.google.fr/group/linux.debian.user.french/topics?lnk Debian Google-groupe Français]

Enfin, il y a bien sûr la [http://www.debian.org/doc/index.fr.html documentation officielle Debian].

== Avoir recours à un forum ==
Avant de poser votre question, pensez à utiliser la fonction &quot;[https://www.debian-fr.org/search.php Rechercher]&quot; présente sur la page d'accueil... Le sujet a peut-être déjà été traité... et résolu !
Revenez régulièrement sur le forum pour voir si une réponse a été postée, ou réglez vos préférences pour être averti par mail qu'une réponse a été postée.
Ne soyez pas trop impatient, un &quot;up&quot; toutes les cinq minutes ne serait pas trop bien vu !
=== Rédiger un titre explicite ===
Le titre de votre sujet est important, c'est lui qui va &quot; attirer le chaland &quot; et lui donner envie de regarder plus attentivement votre problème. Proscrivez absolument tout titre du genre &quot; HELP !!!&quot;, &quot;Au secours...&quot;...qui va agacer bon nombre de participants.

Le titre doit être le résumé de votre question, préférez donc : &quot;Écran noir avec ma carte Nvidia GT Sport &quot;... à &quot; Au secours please !!! ça fonctionne pas !!!&quot;
=== Formuler sa demande de façon claire ===
Essayez, dans la mesure du possible, de rédiger un texte clair avec des phrases courtes. Pensez à ceux qui vous lisent, soignez l'orthographe et la ponctuation. Relisez-vous : si vous ne comprenez pas ce que vous avez écrit... les autres non plus.

Respectez la règle : un seul problème par discussion.

Prenez le temps de relire le titre : c'est lui qui servira à la recherche pour les autres.

Le langage SMS est bien entendu à proscrire.

=== Quelles précisions apporter ? ===
D'une manière générale, il est bon de préciser
*Sa version de Debian ( '''$ cat /etc/debian_version''' )
*La version du noyau Linux ( '''$ uname -a''' )
*Son gestionnaire de fenêtres ( Gnome, Kde, Xfce, ...etc ) et éventuellement son gestionnaire de connexion ( gdm, kdm,...)
Une bonne idée est d'inclure ces renseignements dans sa signature ( et de la tenir à jour ).

==== Sa configuration matérielle ====
Les commandes suivantes vous permettront de connaître votre matériel :
* '''$ lspci -nn''' : informations sur les périphériques pci.
* '''$ lsusb''' : informations sur les périphériques branchés sur les ports usb.
* '''# dmidecode''' : informations sur votre matériel collectées depuis le bios.
* Le répertoire '''/proc''' contient également des fichiers donnant des informations utiles ( par exemple '''$ cat /proc/cpuinfo''' vous renseignera sur votre (vos) processeur(s) )
==== Les éventuels messages d'erreur ====
Les messages d'erreur de votre dernière connexion peuvent être utiles :
* '''# tail -n 30 /var/log/messages'''
* '''# tail -n 30 /var/log/syslog'''
* '''# dmesg | tail -n 30'''
* '''# grep 'EE' /var/log/Xorg.0.log''' : pour des problèmes liés au serveur X

==== Autres commandes utiles ====
* '''$ df -h''' : Informations sur l'emplacement de montage des systèmes de fichiers.
* '''# fdisk -l''' : Informations sur le partitionnement de vos disques durs.
==== Pour des problèmes de réseau ====
Pour établir un diagnostic, il est utile de connaître le contenu des fichiers :
* '''/etc/network/interfaces'''
* /'''etc/resolv.conf'''
Le résultat des commandes 
* '''# ifconfig -a'''
* '''# iwconfig''' : pour le wifi
* '''# route -n'''
peut aussi aider.

== Eurêka ! ==
Ça y est ! votre problème est réglé !
Pensez à la &quot;coche verte&quot; pour marquer le sujet comme résolu. Vous pouvez aussi ajouter [Résolu] en tête de votre premier message.

Un merci n'est pas obligatoire mais fait toujours plaisir.

Si vous avez réglé votre problème par vous-même, bravo ! Mais faites en profiter les copains, dites comment vous avez fait.


[[Catégorie:Aide]]</text>
      <sha1>887acych6mrg6y81zpykmqfk9s0wupz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5441</id>
      <parentid>5438</parentid>
      <timestamp>2013-11-18T19:07:28Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Quelles précisions apporter ? */  env de bureau != gestionnaire fenêtres</comment>
      <text xml:space="preserve" bytes="6211">Tout un chacun, un jour ou l'autre, est amené à rencontrer des problèmes divers et variés sur sa distribution préférée.
Après avoir cherché, sans succès, une solution par soi-même, il devient nécessaire de demander l'aide de personnes plus expérimentées... Encore faut-il savoir bien exposer sa requête pour avoir des chances d'obtenir des réponses pertinentes.
== Aide-toi, le ciel t'aidera ==
Le premier réflexe, en cas de problème, doit être de rechercher soi-même une solution. Outre la satisfaction d'avoir réussi, cette façon de faire permet de progresser plus rapidement que d'appliquer bêtement une recette déjà toute faite et que l'on n'a pas comprise. 
=== Chercher une solution sur son ordinateur ===
Une documentation bien fournie existe déjà sur votre disque dur. 

Elle est généralement située dans le répertoire '''/usr/share/doc'''.

Vous y trouverez les manuels de beaucoup d'applications, que ce soit sous forme texte, pdf ou html.

Pensez aux &quot;man pages&quot; qui accompagnent généralement chaque commande et fichier de configuration ( '''man &lt;nom de la commande/du fichier de conf&gt;''' en console ).

Il est aussi judicieux d'installer, avant que ne survienne un souci, de la documentation supplémentaire par l'intermédiaire de votre gestionnaire de paquets préféré.
Les paquets '''debian-faq''' et '''debian-reference-fr''' sont bien utiles !

=== Chercher une solution sur internet ===
Taper les &quot;mots clés&quot; concernant votre problème dans un moteur de recherche va souvent vous permettre de constater que vous n'êtes pas le premier à rencontrer ce problème.

La principale difficulté sera de faire le tri dans la masse de résultats qui vous sera proposée.

Vous pouvez donc restreindre la recherche à des domaines plus précis. Pour Debian, par exemple une recherche sur [https://www.google.fr/search?q=site%3Adebian-fr.org+OR+site%3Aandesi.org+OR+site%3Adebian-facile.org+OR+site%3Aisalo.org%2Fwiki.debian-fr+Vos_Mots_Clés Google avec ces clauses] ne vous renverra que les résultats trouvés sur les forums et wikis Debian-fr.org, Debian-facile.org et Andesi.org.

Pour faire une recherche qui porte uniquement sur le forum Debian-fr.org vous pouvez voir là : [https://startpage.com/do/search?q=host%3Adebian-fr.org+p%C3%AAche_%C3%A0_la_moule&amp;l=francais Startpage-debian-fr]

Pensez aussi aux groupes de discussions, par exemple le [http://groups.google.fr/group/linux.debian.user.french/topics?lnk Debian Google-groupe Français]

Enfin, il y a bien sûr la [http://www.debian.org/doc/index.fr.html documentation officielle Debian].

== Avoir recours à un forum ==
Avant de poser votre question, pensez à utiliser la fonction &quot;[https://www.debian-fr.org/search.php Rechercher]&quot; présente sur la page d'accueil... Le sujet a peut-être déjà été traité... et résolu !
Revenez régulièrement sur le forum pour voir si une réponse a été postée, ou réglez vos préférences pour être averti par mail qu'une réponse a été postée.
Ne soyez pas trop impatient, un &quot;up&quot; toutes les cinq minutes ne serait pas trop bien vu !
=== Rédiger un titre explicite ===
Le titre de votre sujet est important, c'est lui qui va &quot; attirer le chaland &quot; et lui donner envie de regarder plus attentivement votre problème. Proscrivez absolument tout titre du genre &quot; HELP !!!&quot;, &quot;Au secours...&quot;...qui va agacer bon nombre de participants.

Le titre doit être le résumé de votre question, préférez donc : &quot;Écran noir avec ma carte Nvidia GT Sport &quot;... à &quot; Au secours please !!! ça fonctionne pas !!!&quot;
=== Formuler sa demande de façon claire ===
Essayez, dans la mesure du possible, de rédiger un texte clair avec des phrases courtes. Pensez à ceux qui vous lisent, soignez l'orthographe et la ponctuation. Relisez-vous : si vous ne comprenez pas ce que vous avez écrit... les autres non plus.

Respectez la règle : un seul problème par discussion.

Prenez le temps de relire le titre : c'est lui qui servira à la recherche pour les autres.

Le langage SMS est bien entendu à proscrire.

=== Quelles précisions apporter ? ===
D'une manière générale, il est bon de préciser
*Sa version de Debian ( '''$ cat /etc/debian_version''' )
*La version du noyau Linux ( '''$ uname -a''' )
*Son environnement de bureau ( Gnome, Kde, Xfce, ...etc ) et éventuellement son gestionnaire de connexion ( gdm, kdm,...)
Une bonne idée est d'inclure ces renseignements dans sa signature ( et de la tenir à jour ).

==== Sa configuration matérielle ====
Les commandes suivantes vous permettront de connaître votre matériel :
* '''$ lspci -nn''' : informations sur les périphériques pci.
* '''$ lsusb''' : informations sur les périphériques branchés sur les ports usb.
* '''# dmidecode''' : informations sur votre matériel collectées depuis le bios.
* Le répertoire '''/proc''' contient également des fichiers donnant des informations utiles ( par exemple '''$ cat /proc/cpuinfo''' vous renseignera sur votre (vos) processeur(s) )
==== Les éventuels messages d'erreur ====
Les messages d'erreur de votre dernière connexion peuvent être utiles :
* '''# tail -n 30 /var/log/messages'''
* '''# tail -n 30 /var/log/syslog'''
* '''# dmesg | tail -n 30'''
* '''# grep 'EE' /var/log/Xorg.0.log''' : pour des problèmes liés au serveur X

==== Autres commandes utiles ====
* '''$ df -h''' : Informations sur l'emplacement de montage des systèmes de fichiers.
* '''# fdisk -l''' : Informations sur le partitionnement de vos disques durs.
==== Pour des problèmes de réseau ====
Pour établir un diagnostic, il est utile de connaître le contenu des fichiers :
* '''/etc/network/interfaces'''
* /'''etc/resolv.conf'''
Le résultat des commandes 
* '''# ifconfig -a'''
* '''# iwconfig''' : pour le wifi
* '''# route -n'''
peut aussi aider.

== Eurêka ! ==
Ça y est ! votre problème est réglé !
Pensez à la &quot;coche verte&quot; pour marquer le sujet comme résolu. Vous pouvez aussi ajouter [Résolu] en tête de votre premier message.

Un merci n'est pas obligatoire mais fait toujours plaisir.

Si vous avez réglé votre problème par vous-même, bravo ! Mais faites en profiter les copains, dites comment vous avez fait.


[[Catégorie:Aide]]</text>
      <sha1>qrki9ylfv8v6t6jz97thsisnic3gso2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Aide:Accueil</title>
    <ns>12</ns>
    <id>23</id>
    <revision>
      <id>33</id>
      <timestamp>2010-01-21T16:10:11Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « Bienvenue sur l'aide !  Cette page vous renverra sur des liens externes, inutile de recopier ici des Tuto et des aides au sujet de MadiaWiki, qui sont très bien faites aille… »</comment>
      <text xml:space="preserve" bytes="296">Bienvenue sur l'aide !

Cette page vous renverra sur des liens externes, inutile de recopier ici des Tuto et des aides au sujet de MadiaWiki, qui sont très bien faites ailleurs...


http://www.mediawiki.org/wiki/Help:Contents/fr

http://www.mediawiki.org/wiki/Category:Help/fr

[[Category:Aide]]</text>
      <sha1>dbbjlg5gx3ee3fonz4k7wvxdhis3kz6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>83</id>
      <parentid>33</parentid>
      <timestamp>2010-01-22T04:28:26Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="295">Bienvenue sur l'aide !

Cette page vous renverra sur des liens externes, inutile de recopier ici des Tuto et des aides au sujet de MadiaWiki, qui sont très bien faits ailleurs...


http://www.mediawiki.org/wiki/Help:Contents/fr

http://www.mediawiki.org/wiki/Category:Help/fr

[[Category:Aide]]</text>
      <sha1>i0z7cgog64tvipdfsjn75x2r2k8d7wp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>217</id>
      <parentid>83</parentid>
      <timestamp>2010-01-23T22:05:17Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="362">Bienvenue sur l'aide !

Cette page vous renverra sur des liens externes, inutile de recopier ici des Tuto et des aides au sujet de MédiaWiki, qui sont très bien faits ailleurs...


http://www.mediawiki.org/wiki/Help:Contents/fr

http://www.mediawiki.org/wiki/Category:Help/fr

Créer un modèle: http://fr.wikipedia.org/wiki/Aide:Mod%C3%A8le

[[Category:Aide]]</text>
      <sha1>ejh4262uehtrktrspi31xqreuyoac36</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>224</id>
      <parentid>217</parentid>
      <timestamp>2010-01-24T11:05:52Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="837">Bienvenue sur l'aide !

Cette page vous renverra sur des liens externes, inutile de recopier ici des Tuto et des aides au sujet de MédiaWiki, qui sont très bien faits ailleurs...


http://www.mediawiki.org/wiki/Help:Contents/fr

http://www.mediawiki.org/wiki/Category:Help/fr

Créer un modèle: http://fr.wikipedia.org/wiki/Aide:Mod%C3%A8le


== Démarrer avec MediaWiki ==

Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.

* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]


[[Category:Aide]]</text>
      <sha1>3zfkv0dd1q164aypei2l45rbbag8skp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>583</id>
      <parentid>224</parentid>
      <timestamp>2010-01-31T04:17:41Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="2742">Bienvenue sur l'aide&amp;nbsp;! 

Perdu&amp;nbsp;? Pas de soucis, voici quelque trucs pour bien commencer... Vous avez trouvé l'aide, vous n'êtes pas si nul que ça&amp;nbsp;! 

== Dans le menu sur la gauche&amp;nbsp;:  ==

*Accueil vous ramènera au début du Wiki 
*Le Forum Interne vous enverra au Forum du Wiki (accessible uniquement si vous êtes inscrit au Wiki) 
*Communauté&amp;nbsp;? La liste des participants 
*Actualités&amp;nbsp;: Les nouvelles au sujet du Wiki 
*Page au hasard&amp;nbsp;? Devinez&amp;nbsp;!
*forum.debian-fr.org vous envéra sur notre forum préféré&amp;nbsp;! 
*Aide&amp;nbsp;? C'est ici

== La puissante fonction RECHERCHER&amp;nbsp;:  ==

Mettez un mot dans la recherche et cliquez sur &quot;rechercher&quot;. Vous serez renvoyé sur une page de résultats des pages ou le terme que vous cherchez se trouve. 

Mettez un mot dans la recherche et tapez &quot;entrée&quot; ou cliquez sur Lire. Vous serez renvoyé sur la même page de résultat que ci-dessus mais &lt;u&gt;vous aurez EN PLUS la possibilité de créer l'article que vous cherchez&lt;/u&gt; (si elle n'existe pas déjà...) 

Vous découvrirez doucement la façon dont un Wiki fonctionne. Inutile de se lancer dans la rédaction d'un article si vous n'avez pas compris la façon de faire&amp;nbsp;! 

Ici [[Bac à sable|'''Le bac à sable''']] qui devrait vous permettre de comprendre la façon dont on met en page un article. Il suffit de cliquer sur &quot;modifier&quot; et ensuite &quot;prévisualiser&quot;, vous aurez en haut le résultat, et en bas (dans la fenêtre d'édition) la façon dont il faut écrire pour l'obtenir.&lt;br&gt; Si vous faites des modifications sur cette page, c'est une très bonne idée pour s'entrainer, ne &quot;publiez&quot; pas s'il vous plais (cela enregistre les modifications), laissez la mise en page telle qu'elle est pour les suivants. 

== Créer un article ==

#Trouvez un titre simple et éloquent
#Cherchez si un article sur le même sujet n'existe pas (avec le titre que vous souhaitez)
#Créez l'article (dans les résultats de la recherche bouton &quot;Lire&quot; vous aurez la possibilité de créer la page)
#N'oubliez pas de mettre une catégorie à la fin de votre article
#Publiez l'article

== Aller plus loin  ==

Ci-dessous des liens externes, inutile de recopier ici des Tuto et des aides au sujet de MédiaWiki, qui sont très bien faits ailleurs... 

* [http://www.mediawiki.org/wiki/Help:Contents/fr  Aide très complète en français]

* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki] 

* [http://www.mediawiki.org/wiki/Category:Help/fr Aide très complète sur les Catégories en français]

* [http://fr.wikipedia.org/wiki/Aide:Mod%C3%A8le Créer un modèle]

* [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur]

[[Category:Nom_de_la_catégorie]] [[Category:Aide]]</text>
      <sha1>6a35cc9ibo8bepjyp8o8cd9ahh6p8w4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>584</id>
      <parentid>583</parentid>
      <timestamp>2010-01-31T04:18:34Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2776">Bienvenue sur l'aide&amp;nbsp;! 

Perdu&amp;nbsp;? Pas de soucis, voici quelque trucs pour bien commencer... Vous avez trouvé l'aide, vous n'êtes pas si nul que ça&amp;nbsp;! 

== Dans le menu sur la gauche&amp;nbsp;:  ==

*Accueil vous ramènera au début du Wiki 
*Le Forum Interne vous enverra au Forum du Wiki (accessible uniquement si vous êtes inscrit au Wiki) 
*Communauté&amp;nbsp;? La liste des participants 
*Actualités&amp;nbsp;: Les nouvelles au sujet du Wiki 
*Page au hasard&amp;nbsp;? Devinez&amp;nbsp;!
*forum.debian-fr.org vous envéra sur notre forum préféré&amp;nbsp;! 
*Aide&amp;nbsp;? C'est ici

== La puissante fonction RECHERCHER&amp;nbsp;:  ==

Mettez un mot dans la recherche et cliquez sur &quot;rechercher&quot;. Vous serez renvoyé sur une page de résultats des pages ou le terme que vous cherchez se trouve. 

Mettez un mot dans la recherche et tapez &quot;entrée&quot; ou cliquez sur Lire. Vous serez renvoyé sur la même page de résultat que ci-dessus mais &lt;u&gt;vous aurez EN PLUS la possibilité de créer l'article que vous cherchez&lt;/u&gt; (si elle n'existe pas déjà...) 

Vous découvrirez doucement la façon dont un Wiki fonctionne. Inutile de se lancer dans la rédaction d'un article si vous n'avez pas compris la façon de faire&amp;nbsp;! 

Ici [[Bac à sable|'''Le bac à sable''']] qui devrait vous permettre de comprendre la façon dont on met en page un article. Il suffit de cliquer sur &quot;modifier&quot; et ensuite &quot;prévisualiser&quot;, vous aurez en haut le résultat, et en bas (dans la fenêtre d'édition) la façon dont il faut écrire pour l'obtenir.&lt;br&gt; Si vous faites des modifications sur cette page, c'est une très bonne idée pour s'entrainer, ne &quot;publiez&quot; pas s'il vous plais (cela enregistre les modifications), laissez la mise en page telle qu'elle est pour les suivants. 

== Créer un article ==

#Trouvez un titre simple et éloquent
#Cherchez si un article sur le même sujet n'existe pas (avec le titre que vous souhaitez, ce sera celui de votre article !)
#Créez l'article (dans les résultats de la recherche bouton &quot;Lire&quot; vous aurez la possibilité de créer la page)
#N'oubliez pas de mettre une catégorie à la fin de votre article
#Publiez l'article

== Aller plus loin  ==

Ci-dessous des liens externes, inutile de recopier ici des Tuto et des aides au sujet de MédiaWiki, qui sont très bien faits ailleurs... 

* [http://www.mediawiki.org/wiki/Help:Contents/fr  Aide très complète en français]

* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki] 

* [http://www.mediawiki.org/wiki/Category:Help/fr Aide très complète sur les Catégories en français]

* [http://fr.wikipedia.org/wiki/Aide:Mod%C3%A8le Créer un modèle]

* [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur]

[[Category:Nom_de_la_catégorie]] [[Category:Aide]]</text>
      <sha1>kb9gw4sy75wjvfo73n1w5zvgvb976hb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>585</id>
      <parentid>584</parentid>
      <timestamp>2010-01-31T04:19:18Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2742">Bienvenue sur l'aide&amp;nbsp;! 

Perdu&amp;nbsp;? Pas de soucis, voici quelque trucs pour bien commencer... Vous avez trouvé l'aide, vous n'êtes pas si nul que ça&amp;nbsp;! 

== Dans le menu sur la gauche&amp;nbsp;:  ==

*Accueil vous ramènera au début du Wiki 
*Le Forum Interne vous enverra au Forum du Wiki (accessible uniquement si vous êtes inscrit au Wiki) 
*Communauté&amp;nbsp;? La liste des participants 
*Actualités&amp;nbsp;: Les nouvelles au sujet du Wiki 
*Page au hasard&amp;nbsp;? Devinez&amp;nbsp;!
*forum.debian-fr.org vous envéra sur notre forum préféré&amp;nbsp;! 
*Aide&amp;nbsp;? C'est ici

== La puissante fonction RECHERCHER&amp;nbsp;:  ==

Mettez un mot dans la recherche et cliquez sur &quot;rechercher&quot;. Vous serez renvoyé sur une page de résultats des pages ou le terme que vous cherchez se trouve. 

Mettez un mot dans la recherche et tapez &quot;entrée&quot; ou cliquez sur Lire. Vous serez renvoyé sur la même page de résultat que ci-dessus mais &lt;u&gt;vous aurez EN PLUS la possibilité de créer l'article que vous cherchez&lt;/u&gt; (si elle n'existe pas déjà...) 

Vous découvrirez doucement la façon dont un Wiki fonctionne. Inutile de se lancer dans la rédaction d'un article si vous n'avez pas compris la façon de faire&amp;nbsp;! 

Ici [[Bac à sable|'''Le bac à sable''']] qui devrait vous permettre de comprendre la façon dont on met en page un article. Il suffit de cliquer sur &quot;modifier&quot; et ensuite &quot;prévisualiser&quot;, vous aurez en haut le résultat, et en bas (dans la fenêtre d'édition) la façon dont il faut écrire pour l'obtenir.&lt;br&gt; Si vous faites des modifications sur cette page, c'est une très bonne idée pour s'entrainer, ne &quot;publiez&quot; pas s'il vous plais (cela enregistre les modifications), laissez la mise en page telle qu'elle est pour les suivants. 

== Créer un article ==

#Trouvez un titre simple et éloquent
#Cherchez si un article sur le même sujet n'existe pas (avec le titre que vous souhaitez, ce sera celui de votre article !)
#Créez l'article (dans les résultats de la recherche bouton &quot;Lire&quot; vous aurez la possibilité de créer la page)
#N'oubliez pas de mettre une catégorie à la fin de votre article
#Publiez l'article

== Aller plus loin  ==

Ci-dessous des liens externes, inutile de recopier ici des Tuto et des aides au sujet de MédiaWiki, qui sont très bien faits ailleurs... 

* [http://www.mediawiki.org/wiki/Help:Contents/fr  Aide très complète en français]

* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki] 

* [http://www.mediawiki.org/wiki/Category:Help/fr Aide très complète sur les Catégories en français]

* [http://fr.wikipedia.org/wiki/Aide:Mod%C3%A8le Créer un modèle]

* [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur]

[[Category:Aide]]</text>
      <sha1>gnzwmc1d0r7z3de3u6dr5njavu0rib3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>586</id>
      <parentid>585</parentid>
      <timestamp>2010-01-31T04:33:44Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Aller plus loin */</comment>
      <text xml:space="preserve" bytes="2862">Bienvenue sur l'aide&amp;nbsp;! 

Perdu&amp;nbsp;? Pas de soucis, voici quelque trucs pour bien commencer... Vous avez trouvé l'aide, vous n'êtes pas si nul que ça&amp;nbsp;! 

== Dans le menu sur la gauche&amp;nbsp;:  ==

*Accueil vous ramènera au début du Wiki 
*Le Forum Interne vous enverra au Forum du Wiki (accessible uniquement si vous êtes inscrit au Wiki) 
*Communauté&amp;nbsp;? La liste des participants 
*Actualités&amp;nbsp;: Les nouvelles au sujet du Wiki 
*Page au hasard&amp;nbsp;? Devinez&amp;nbsp;!
*forum.debian-fr.org vous envéra sur notre forum préféré&amp;nbsp;! 
*Aide&amp;nbsp;? C'est ici

== La puissante fonction RECHERCHER&amp;nbsp;:  ==

Mettez un mot dans la recherche et cliquez sur &quot;rechercher&quot;. Vous serez renvoyé sur une page de résultats des pages ou le terme que vous cherchez se trouve. 

Mettez un mot dans la recherche et tapez &quot;entrée&quot; ou cliquez sur Lire. Vous serez renvoyé sur la même page de résultat que ci-dessus mais &lt;u&gt;vous aurez EN PLUS la possibilité de créer l'article que vous cherchez&lt;/u&gt; (si elle n'existe pas déjà...) 

Vous découvrirez doucement la façon dont un Wiki fonctionne. Inutile de se lancer dans la rédaction d'un article si vous n'avez pas compris la façon de faire&amp;nbsp;! 

Ici [[Bac à sable|'''Le bac à sable''']] qui devrait vous permettre de comprendre la façon dont on met en page un article. Il suffit de cliquer sur &quot;modifier&quot; et ensuite &quot;prévisualiser&quot;, vous aurez en haut le résultat, et en bas (dans la fenêtre d'édition) la façon dont il faut écrire pour l'obtenir.&lt;br&gt; Si vous faites des modifications sur cette page, c'est une très bonne idée pour s'entrainer, ne &quot;publiez&quot; pas s'il vous plais (cela enregistre les modifications), laissez la mise en page telle qu'elle est pour les suivants. 

== Créer un article ==

#Trouvez un titre simple et éloquent
#Cherchez si un article sur le même sujet n'existe pas (avec le titre que vous souhaitez, ce sera celui de votre article !)
#Créez l'article (dans les résultats de la recherche bouton &quot;Lire&quot; vous aurez la possibilité de créer la page)
#N'oubliez pas de mettre une catégorie à la fin de votre article
#Publiez l'article

== Aller plus loin  ==

Ci-dessous des liens externes, inutile de recopier ici des Tuto et des aides au sujet de MédiaWiki, qui sont très bien faits ailleurs... 

* [http://forum.debian-fr.org/viewtopic.php?p=250856#p250856 Un petit guide de survie] par [[Utilisateur:L0u!$|L0u!$]]

* [http://www.mediawiki.org/wiki/Help:Contents/fr  Aide très complète en français]

* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki] 

* [http://www.mediawiki.org/wiki/Category:Help/fr Aide très complète sur les Catégories en français]

* [http://fr.wikipedia.org/wiki/Aide:Mod%C3%A8le Créer un modèle]

* [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur]

[[Category:Aide]]</text>
      <sha1>qrqfrrk8myxlptyyw0qirc6vqqdmjkw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>589</id>
      <parentid>586</parentid>
      <timestamp>2010-01-31T05:50:19Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Dans le menu sur la gauche&amp;nbsp;: */</comment>
      <text xml:space="preserve" bytes="2877">Bienvenue sur l'aide&amp;nbsp;! 

Perdu&amp;nbsp;? Pas de soucis, voici quelque trucs pour bien commencer... Vous avez trouvé l'aide, vous n'êtes pas si nul que ça&amp;nbsp;! 

== Dans le menu sur la gauche&amp;nbsp;:  ==

*Accueil vous ramènera au début du Wiki 
*Le Forum Interne vous enverra au Forum du Wiki (accessible uniquement si vous êtes inscrit au Wiki) 
*Communauté&amp;nbsp;? La liste des participants 
*Actualités&amp;nbsp;: Les nouvelles au sujet du Wiki 
*Page au hasard&amp;nbsp;? Devinez&amp;nbsp;!
*forum.debian-fr.org vous expédiera directement sur notre forum préféré&amp;nbsp;! 
*Aide&amp;nbsp;? C'est ici

== La puissante fonction RECHERCHER&amp;nbsp;:  ==

Mettez un mot dans la recherche et cliquez sur &quot;rechercher&quot;. Vous serez renvoyé sur une page de résultats des pages ou le terme que vous cherchez se trouve. 

Mettez un mot dans la recherche et tapez &quot;entrée&quot; ou cliquez sur Lire. Vous serez renvoyé sur la même page de résultat que ci-dessus mais &lt;u&gt;vous aurez EN PLUS la possibilité de créer l'article que vous cherchez&lt;/u&gt; (si elle n'existe pas déjà...) 

Vous découvrirez doucement la façon dont un Wiki fonctionne. Inutile de se lancer dans la rédaction d'un article si vous n'avez pas compris la façon de faire&amp;nbsp;! 

Ici [[Bac à sable|'''Le bac à sable''']] qui devrait vous permettre de comprendre la façon dont on met en page un article. Il suffit de cliquer sur &quot;modifier&quot; et ensuite &quot;prévisualiser&quot;, vous aurez en haut le résultat, et en bas (dans la fenêtre d'édition) la façon dont il faut écrire pour l'obtenir.&lt;br&gt; Si vous faites des modifications sur cette page, c'est une très bonne idée pour s'entrainer, ne &quot;publiez&quot; pas s'il vous plais (cela enregistre les modifications), laissez la mise en page telle qu'elle est pour les suivants. 

== Créer un article ==

#Trouvez un titre simple et éloquent
#Cherchez si un article sur le même sujet n'existe pas (avec le titre que vous souhaitez, ce sera celui de votre article !)
#Créez l'article (dans les résultats de la recherche bouton &quot;Lire&quot; vous aurez la possibilité de créer la page)
#N'oubliez pas de mettre une catégorie à la fin de votre article
#Publiez l'article

== Aller plus loin  ==

Ci-dessous des liens externes, inutile de recopier ici des Tuto et des aides au sujet de MédiaWiki, qui sont très bien faits ailleurs... 

* [http://forum.debian-fr.org/viewtopic.php?p=250856#p250856 Un petit guide de survie] par [[Utilisateur:L0u!$|L0u!$]]

* [http://www.mediawiki.org/wiki/Help:Contents/fr  Aide très complète en français]

* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki] 

* [http://www.mediawiki.org/wiki/Category:Help/fr Aide très complète sur les Catégories en français]

* [http://fr.wikipedia.org/wiki/Aide:Mod%C3%A8le Créer un modèle]

* [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur]

[[Category:Aide]]</text>
      <sha1>isgfi138uglijlst9zun1tf9jqklwsp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>590</id>
      <parentid>589</parentid>
      <timestamp>2010-01-31T05:51:43Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* La puissante fonction RECHERCHER&amp;nbsp;: */</comment>
      <text xml:space="preserve" bytes="2869">Bienvenue sur l'aide&amp;nbsp;! 

Perdu&amp;nbsp;? Pas de soucis, voici quelque trucs pour bien commencer... Vous avez trouvé l'aide, vous n'êtes pas si nul que ça&amp;nbsp;! 

== Dans le menu sur la gauche&amp;nbsp;:  ==

*Accueil vous ramènera au début du Wiki 
*Le Forum Interne vous enverra au Forum du Wiki (accessible uniquement si vous êtes inscrit au Wiki) 
*Communauté&amp;nbsp;? La liste des participants 
*Actualités&amp;nbsp;: Les nouvelles au sujet du Wiki 
*Page au hasard&amp;nbsp;? Devinez&amp;nbsp;!
*forum.debian-fr.org vous expédiera directement sur notre forum préféré&amp;nbsp;! 
*Aide&amp;nbsp;? C'est ici

== La puissante fonction RECHERCHER&amp;nbsp;:  ==

Mettez un mot dans la recherche et cliquez sur &quot;rechercher&quot;. Vous serez renvoyé sur une page de résultats des pages ou le terme que vous cherchez se trouve. 

Mettez un mot dans la recherche et tapez &quot;entrée&quot; ou cliquez sur Lire. Vous serez renvoyé sur la même page de résultat que ci-dessus mais &lt;u&gt;vous aurez EN PLUS la possibilité de créer l'article que vous cherchez&lt;/u&gt; (si elle n'existe pas déjà...) 

Vous découvrirez doucement la façon dont un Wiki fonctionne. Inutile de se lancer dans la rédaction d'un article si vous n'avez pas compris comment le faire ! 

Ici [[Bac à sable|'''Le bac à sable''']] qui devrait vous permettre de comprendre la façon dont on met en page un article. Il suffit de cliquer sur &quot;modifier&quot; et ensuite &quot;prévisualiser&quot;, vous aurez en haut le résultat, et en bas (dans la fenêtre d'édition) la façon dont il faut écrire pour l'obtenir.&lt;br&gt; Si vous faites des modifications sur cette page, c'est une très bonne idée pour s'entrainer, ne &quot;publiez&quot; pas s'il vous plais (cela enregistre les modifications), laissez la mise en page telle qu'elle est pour les suivants.

== Créer un article ==

#Trouvez un titre simple et éloquent
#Cherchez si un article sur le même sujet n'existe pas (avec le titre que vous souhaitez, ce sera celui de votre article !)
#Créez l'article (dans les résultats de la recherche bouton &quot;Lire&quot; vous aurez la possibilité de créer la page)
#N'oubliez pas de mettre une catégorie à la fin de votre article
#Publiez l'article

== Aller plus loin  ==

Ci-dessous des liens externes, inutile de recopier ici des Tuto et des aides au sujet de MédiaWiki, qui sont très bien faits ailleurs... 

* [http://forum.debian-fr.org/viewtopic.php?p=250856#p250856 Un petit guide de survie] par [[Utilisateur:L0u!$|L0u!$]]

* [http://www.mediawiki.org/wiki/Help:Contents/fr  Aide très complète en français]

* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki] 

* [http://www.mediawiki.org/wiki/Category:Help/fr Aide très complète sur les Catégories en français]

* [http://fr.wikipedia.org/wiki/Aide:Mod%C3%A8le Créer un modèle]

* [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur]

[[Category:Aide]]</text>
      <sha1>6qjt1t6xlyjvpol04zerplx6igqchyk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>617</id>
      <parentid>590</parentid>
      <timestamp>2010-02-01T04:30:50Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3044">Bienvenue sur l'aide&amp;nbsp;! 

Perdu&amp;nbsp;? Pas de soucis, voici quelque trucs pour bien commencer... Vous avez trouvé l'aide, vous n'êtes pas si nul que ça&amp;nbsp;! 

== Dans le menu sur la gauche&amp;nbsp;:  ==

*Accueil vous ramènera au début du Wiki 
*Le Forum Interne vous enverra au Forum du Wiki (accessible uniquement si vous êtes inscrit au Wiki) 
*Communauté&amp;nbsp;? La liste des participants 
*Actualités&amp;nbsp;: Les nouvelles au sujet du Wiki 
*Page au hasard&amp;nbsp;? Devinez&amp;nbsp;!
*forum.debian-fr.org vous expédiera directement sur notre forum préféré&amp;nbsp;! 
*Aide&amp;nbsp;? C'est ici

== La puissante fonction RECHERCHER&amp;nbsp;:  ==

Mettez un mot dans la recherche et cliquez sur &quot;rechercher&quot;. Vous serez renvoyé sur une page de résultats des pages ou le terme que vous cherchez se trouve. 

Mettez un mot dans la recherche et tapez &quot;entrée&quot; ou cliquez sur Lire. Vous serez renvoyé sur la même page de résultat que ci-dessus mais &lt;u&gt;vous aurez EN PLUS la possibilité de créer l'article que vous cherchez&lt;/u&gt; (si elle n'existe pas déjà...) 

Vous découvrirez doucement la façon dont un Wiki fonctionne. Inutile de se lancer dans la rédaction d'un article si vous n'avez pas compris comment le faire ! 

Ici [[Bac à sable|'''Le bac à sable''']] qui devrait vous permettre de comprendre la façon dont on met en page un article. Il suffit de cliquer sur &quot;modifier&quot; et ensuite &quot;prévisualiser&quot;, vous aurez en haut le résultat, et en bas (dans la fenêtre d'édition) la façon dont il faut écrire pour l'obtenir.&lt;br&gt; Si vous faites des modifications sur cette page, c'est une très bonne idée pour s'entrainer, ne &quot;publiez&quot; pas s'il vous plais (cela enregistre les modifications), laissez la mise en page telle qu'elle est pour les suivants.

== Créer un article ==

#Trouvez un titre simple et éloquent
#Cherchez si un article sur le même sujet n'existe pas (avec le titre que vous souhaitez, ce sera celui de votre article !)
#Créez l'article (dans les résultats de la recherche bouton &quot;Lire&quot; vous aurez la possibilité de créer la page)
#N'oubliez pas de mettre une catégorie à la fin de votre article. La catégorie, si elle n'existe pas sera crée automatiquement. Pensez donc à vérifier si une catégorie proche de celle que vous souhaitez utiliser n'existe pas déjà...
#Publiez l'article

== Aller plus loin  ==

Ci-dessous des liens externes, inutile de recopier ici des Tuto et des aides au sujet de MédiaWiki, qui sont très bien faits ailleurs... 

* [http://forum.debian-fr.org/viewtopic.php?p=250856#p250856 Un petit guide de survie] par [[Utilisateur:L0u!$|L0u!$]]

* [http://www.mediawiki.org/wiki/Help:Contents/fr  Aide très complète en français]

* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki] 

* [http://www.mediawiki.org/wiki/Category:Help/fr Aide très complète sur les Catégories en français]

* [http://fr.wikipedia.org/wiki/Aide:Mod%C3%A8le Créer un modèle]

* [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur]

[[Category:Aide]]</text>
      <sha1>af293otu2pkw2r9seut0ls8tglmy35g</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>756</id>
      <parentid>617</parentid>
      <timestamp>2010-02-02T13:44:11Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="4130">Bienvenue sur l'aide&amp;nbsp;! 

Perdu&amp;nbsp;? Pas de soucis, voici quelque trucs pour bien commencer... Vous avez trouvé l'aide, vous n'êtes pas si nul que ça&amp;nbsp;! 

== Dans le menu sur la gauche&amp;nbsp;:  ==

*Accueil vous ramènera au début du Wiki 
*Le Forum Interne vous enverra au Forum du Wiki (accessible uniquement si vous êtes inscrit au Wiki) 
*Communauté&amp;nbsp;? La liste des participants 
*Actualités&amp;nbsp;: Les nouvelles au sujet du Wiki 
*Page au hasard&amp;nbsp;? Devinez&amp;nbsp;!
*forum.debian-fr.org vous expédiera directement sur notre forum préféré&amp;nbsp;! 
*Aide&amp;nbsp;? C'est ici

== La puissante fonction RECHERCHER&amp;nbsp;:  ==

Mettez un mot dans la recherche et cliquez sur &quot;rechercher&quot;. Vous serez renvoyé sur une page de résultats des pages ou le terme que vous cherchez se trouve. 

Mettez un mot dans la recherche et tapez &quot;entrée&quot; ou cliquez sur Lire. Vous serez renvoyé sur la même page de résultat que ci-dessus mais &lt;u&gt;vous aurez EN PLUS la possibilité de créer l'article que vous cherchez&lt;/u&gt; (si elle n'existe pas déjà...) 

Vous découvrirez doucement la façon dont un Wiki fonctionne. Inutile de se lancer dans la rédaction d'un article si vous n'avez pas compris comment le faire ! 

Ici [[Bac à sable|'''Le bac à sable''']] qui devrait vous permettre de comprendre la façon dont on met en page un article. Il suffit de cliquer sur &quot;modifier&quot; et ensuite &quot;prévisualiser&quot;, vous aurez en haut le résultat, et en bas (dans la fenêtre d'édition) la façon dont il faut écrire pour l'obtenir.&lt;br&gt; Si vous faites des modifications sur cette page, c'est une très bonne idée pour s'entrainer, ne &quot;publiez&quot; pas s'il vous plais (cela enregistre les modifications), laissez la mise en page telle qu'elle est pour les suivants.

== Créer un article ==

#Trouvez un titre simple et éloquent
#Cherchez si un article sur le même sujet n'existe pas (avec le titre que vous souhaitez, ce sera celui de votre article !)
#Créez l'article (dans les résultats de la recherche bouton &quot;Lire&quot; vous aurez la possibilité de créer la page)
#N'oubliez pas de mettre une catégorie à la fin de votre article. La catégorie, si elle n'existe pas sera crée automatiquement. Pensez donc à vérifier si une catégorie proche de celle que vous souhaitez utiliser n'existe pas déjà...
#Publiez l'article

== Les catégories, sous-catégories, sous-sous-catégories... ===

#Vous venez de créer une page, dans laquelle vous n'avez pas oublié de placer une catégorie. Disons par exemple : '''&lt;nowiki&gt;[[Category:catégorie1]]&lt;/nowiki&gt;'''
#Vous allez maintenant créer un autre article, et vous souhaitez que celui-ci soit une sous-catégorie de la catégorie1. Facile. Créez votre article, et mettez-y '''&lt;nowiki&gt;[[Category:catégorie1.1]]&lt;/nowiki&gt;'''.
#Ensuite, rendez vous à la page [[Spécial:Catégories|&quot;spéciale catégories&quot;]]. Cliquez sur la catégorie n°1 (la principale). Si cette page n'a pas été crée, le Wiki propose de le faire; Si elle existe déjà, il suffit de l'éditer. Vous y placer votre '''&lt;nowiki&gt;[[Category:catégorie1.1]]&lt;/nowiki&gt;''', et vous publiez. La catégorie1.1 est devenue une fille de la catégorie1
#Et ainsi de suite. Cette façon de procéder est extrêmement pratique pour ranger les articles dans des catégories principales, secondaire, tertiaire, etc. C'est le squelette même du Wiki !

== Aller plus loin  ==

Ci-dessous des liens externes, inutile de recopier ici des Tuto et des aides au sujet de MédiaWiki, qui sont très bien faits ailleurs... 

* [http://forum.debian-fr.org/viewtopic.php?p=250856#p250856 Un petit guide de survie] par [[Utilisateur:L0u!$|L0u!$]]

* [http://www.mediawiki.org/wiki/Help:Contents/fr  Aide très complète en français]

* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki] 

* [http://www.mediawiki.org/wiki/Category:Help/fr Aide très complète sur les Catégories en français]

* [http://fr.wikipedia.org/wiki/Aide:Mod%C3%A8le Créer un modèle]

* [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur]

[[Utilisateur:Lol|Lol]] 2 février 2010 à 13:44 (UTC)
[[Category:Aide]]</text>
      <sha1>oavvinto1zcyb42w12b632k9z6adj8c</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>757</id>
      <parentid>756</parentid>
      <timestamp>2010-02-02T13:44:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="4129">Bienvenue sur l'aide&amp;nbsp;! 

Perdu&amp;nbsp;? Pas de soucis, voici quelque trucs pour bien commencer... Vous avez trouvé l'aide, vous n'êtes pas si nul que ça&amp;nbsp;! 

== Dans le menu sur la gauche&amp;nbsp;:  ==

*Accueil vous ramènera au début du Wiki 
*Le Forum Interne vous enverra au Forum du Wiki (accessible uniquement si vous êtes inscrit au Wiki) 
*Communauté&amp;nbsp;? La liste des participants 
*Actualités&amp;nbsp;: Les nouvelles au sujet du Wiki 
*Page au hasard&amp;nbsp;? Devinez&amp;nbsp;!
*forum.debian-fr.org vous expédiera directement sur notre forum préféré&amp;nbsp;! 
*Aide&amp;nbsp;? C'est ici

== La puissante fonction RECHERCHER&amp;nbsp;:  ==

Mettez un mot dans la recherche et cliquez sur &quot;rechercher&quot;. Vous serez renvoyé sur une page de résultats des pages ou le terme que vous cherchez se trouve. 

Mettez un mot dans la recherche et tapez &quot;entrée&quot; ou cliquez sur Lire. Vous serez renvoyé sur la même page de résultat que ci-dessus mais &lt;u&gt;vous aurez EN PLUS la possibilité de créer l'article que vous cherchez&lt;/u&gt; (si elle n'existe pas déjà...) 

Vous découvrirez doucement la façon dont un Wiki fonctionne. Inutile de se lancer dans la rédaction d'un article si vous n'avez pas compris comment le faire ! 

Ici [[Bac à sable|'''Le bac à sable''']] qui devrait vous permettre de comprendre la façon dont on met en page un article. Il suffit de cliquer sur &quot;modifier&quot; et ensuite &quot;prévisualiser&quot;, vous aurez en haut le résultat, et en bas (dans la fenêtre d'édition) la façon dont il faut écrire pour l'obtenir.&lt;br&gt; Si vous faites des modifications sur cette page, c'est une très bonne idée pour s'entrainer, ne &quot;publiez&quot; pas s'il vous plais (cela enregistre les modifications), laissez la mise en page telle qu'elle est pour les suivants.

== Créer un article ==

#Trouvez un titre simple et éloquent
#Cherchez si un article sur le même sujet n'existe pas (avec le titre que vous souhaitez, ce sera celui de votre article !)
#Créez l'article (dans les résultats de la recherche bouton &quot;Lire&quot; vous aurez la possibilité de créer la page)
#N'oubliez pas de mettre une catégorie à la fin de votre article. La catégorie, si elle n'existe pas sera crée automatiquement. Pensez donc à vérifier si une catégorie proche de celle que vous souhaitez utiliser n'existe pas déjà...
#Publiez l'article

== Les catégories, sous-catégories, sous-sous-catégories... ==

#Vous venez de créer une page, dans laquelle vous n'avez pas oublié de placer une catégorie. Disons par exemple : '''&lt;nowiki&gt;[[Category:catégorie1]]&lt;/nowiki&gt;'''
#Vous allez maintenant créer un autre article, et vous souhaitez que celui-ci soit une sous-catégorie de la catégorie1. Facile. Créez votre article, et mettez-y '''&lt;nowiki&gt;[[Category:catégorie1.1]]&lt;/nowiki&gt;'''.
#Ensuite, rendez vous à la page [[Spécial:Catégories|&quot;spéciale catégories&quot;]]. Cliquez sur la catégorie n°1 (la principale). Si cette page n'a pas été crée, le Wiki propose de le faire; Si elle existe déjà, il suffit de l'éditer. Vous y placer votre '''&lt;nowiki&gt;[[Category:catégorie1.1]]&lt;/nowiki&gt;''', et vous publiez. La catégorie1.1 est devenue une fille de la catégorie1
#Et ainsi de suite. Cette façon de procéder est extrêmement pratique pour ranger les articles dans des catégories principales, secondaire, tertiaire, etc. C'est le squelette même du Wiki !

== Aller plus loin  ==

Ci-dessous des liens externes, inutile de recopier ici des Tuto et des aides au sujet de MédiaWiki, qui sont très bien faits ailleurs... 

* [http://forum.debian-fr.org/viewtopic.php?p=250856#p250856 Un petit guide de survie] par [[Utilisateur:L0u!$|L0u!$]]

* [http://www.mediawiki.org/wiki/Help:Contents/fr  Aide très complète en français]

* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki] 

* [http://www.mediawiki.org/wiki/Category:Help/fr Aide très complète sur les Catégories en français]

* [http://fr.wikipedia.org/wiki/Aide:Mod%C3%A8le Créer un modèle]

* [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur]

[[Utilisateur:Lol|Lol]] 2 février 2010 à 13:44 (UTC)
[[Category:Aide]]</text>
      <sha1>im8otyavtad1jtgtvvefeo1j7vwmlk4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>801</id>
      <parentid>757</parentid>
      <timestamp>2010-02-03T11:56:49Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="4147">Bienvenue sur l'aide&amp;nbsp;! 

Perdu&amp;nbsp;? Pas de soucis, voici quelque trucs pour bien commencer... Vous avez trouvé l'aide, vous n'êtes pas si nul que ça&amp;nbsp;! 

== Dans le menu sur la gauche&amp;nbsp;:  ==

*Accueil vous ramènera au début du Wiki 
*Le Forum Interne vous enverra au Forum du Wiki (accessible uniquement si vous êtes inscrit au Wiki) 
*Communauté&amp;nbsp;? La liste des participants 
*Actualités&amp;nbsp;: Les nouvelles au sujet du Wiki 
*Page au hasard&amp;nbsp;? Devinez&amp;nbsp;!
*forum.debian-fr.org vous expédiera directement sur notre forum préféré&amp;nbsp;! 
*Aide&amp;nbsp;? C'est ici

== La puissante fonction RECHERCHER&amp;nbsp;:  ==

Mettez un mot dans la recherche et cliquez sur &quot;rechercher&quot;. Vous serez renvoyé sur une page de résultats des pages ou le terme que vous cherchez se trouve. 

Mettez un mot dans la recherche et tapez &quot;entrée&quot; ou cliquez sur Lire. Vous serez renvoyé sur la même page de résultat que ci-dessus mais &lt;u&gt;vous aurez EN PLUS la possibilité de créer l'article que vous cherchez&lt;/u&gt; (si elle n'existe pas déjà...) 

Vous découvrirez doucement la façon dont un Wiki fonctionne. Inutile de se lancer dans la rédaction d'un article si vous n'avez pas compris comment le faire ! 

Ici [[Bac à sable|'''Le bac à sable''']] qui devrait vous permettre de comprendre la façon dont on met en page un article. Il suffit de cliquer sur &quot;modifier&quot; et ensuite &quot;prévisualiser&quot;, vous aurez en haut le résultat, et en bas (dans la fenêtre d'édition) la façon dont il faut écrire pour l'obtenir.&lt;br&gt; Si vous faites des modifications sur cette page, c'est une très bonne idée pour s'entrainer, ne &quot;publiez&quot; pas s'il vous plais (cela enregistre les modifications), laissez la mise en page telle qu'elle est pour les suivants.

== Créer un article ==

#Trouvez un titre simple et éloquent
#Cherchez si un article sur le même sujet n'existe pas (avec le titre que vous souhaitez, ce sera celui de votre article !)
#Créez l'article (dans les résultats de la recherche bouton &quot;Lire&quot; vous aurez la possibilité de créer la page)
#N'oubliez pas de mettre une catégorie à la fin de votre article. La catégorie, si elle n'existe pas sera crée automatiquement. Pensez donc à vérifier si une catégorie proche de celle que vous souhaitez utiliser n'existe pas déjà...
#Publiez l'article

== Les catégories, sous-catégories, sous-sous-catégories... ==

#Vous venez de créer une page, dans laquelle vous n'avez pas oublié de placer une catégorie. Disons par exemple : '''&lt;nowiki&gt;[[Category:catégorie1]]&lt;/nowiki&gt;'''
#Vous allez maintenant créer un autre article, et vous souhaitez que celui-ci soit une sous-catégorie de la catégorie1. Facile. Créez votre article, et mettez-y '''&lt;nowiki&gt;[[Category:catégorie1.1]]&lt;/nowiki&gt;'''.
#Ensuite, rendez vous à la page [[Spécial:Catégories|&quot;spéciale catégories&quot;]]. Cliquez sur la catégorie n°1.1 (la secondaire). Si cette page n'a pas été crée, le Wiki propose de le faire; Si elle existe déjà, il suffit de l'éditer. Vous y placer la catégorie &quot;mère&quot; : '''&lt;nowiki&gt;[[Category:catégorie1]]&lt;/nowiki&gt;''', et vous publiez. La catégorie1.1 est devenue une fille de la catégorie1
#Et ainsi de suite. Cette façon de procéder est extrêmement pratique pour ranger les articles dans des catégories principales, secondaire, tertiaire, etc. C'est le squelette même du Wiki !

== Aller plus loin  ==

Ci-dessous des liens externes, inutile de recopier ici des Tuto et des aides au sujet de MédiaWiki, qui sont très bien faits ailleurs... 

* [http://forum.debian-fr.org/viewtopic.php?p=250856#p250856 Un petit guide de survie] par [[Utilisateur:L0u!$|L0u!$]]

* [http://www.mediawiki.org/wiki/Help:Contents/fr  Aide très complète en français]

* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki] 

* [http://www.mediawiki.org/wiki/Category:Help/fr Aide très complète sur les Catégories en français]

* [http://fr.wikipedia.org/wiki/Aide:Mod%C3%A8le Créer un modèle]

* [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur]

[[Utilisateur:Lol|Lol]] 2 février 2010 à 13:44 (UTC)
[[Category:Aide]]</text>
      <sha1>llckjh51z35fr2elyg9134j4o2vjwpi</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2531</id>
      <parentid>801</parentid>
      <timestamp>2010-12-25T18:28:03Z</timestamp>
      <contributor>
        <username>Kna</username>
        <id>35</id>
      </contributor>
      <comment>forum.debian-fr.org &gt;&gt; www.debian-fr.org</comment>
      <text xml:space="preserve" bytes="4143">Bienvenue sur l'aide&amp;nbsp;! 

Perdu&amp;nbsp;? Pas de soucis, voici quelque trucs pour bien commencer... Vous avez trouvé l'aide, vous n'êtes pas si nul que ça&amp;nbsp;! 

== Dans le menu sur la gauche&amp;nbsp;:  ==

*Accueil vous ramènera au début du Wiki 
*Le Forum Interne vous enverra au Forum du Wiki (accessible uniquement si vous êtes inscrit au Wiki) 
*Communauté&amp;nbsp;? La liste des participants 
*Actualités&amp;nbsp;: Les nouvelles au sujet du Wiki 
*Page au hasard&amp;nbsp;? Devinez&amp;nbsp;!
*www.debian-fr.org vous expédiera directement sur notre forum préféré&amp;nbsp;! 
*Aide&amp;nbsp;? C'est ici

== La puissante fonction RECHERCHER&amp;nbsp;:  ==

Mettez un mot dans la recherche et cliquez sur &quot;rechercher&quot;. Vous serez renvoyé sur une page de résultats des pages ou le terme que vous cherchez se trouve. 

Mettez un mot dans la recherche et tapez &quot;entrée&quot; ou cliquez sur Lire. Vous serez renvoyé sur la même page de résultat que ci-dessus mais &lt;u&gt;vous aurez EN PLUS la possibilité de créer l'article que vous cherchez&lt;/u&gt; (si elle n'existe pas déjà...) 

Vous découvrirez doucement la façon dont un Wiki fonctionne. Inutile de se lancer dans la rédaction d'un article si vous n'avez pas compris comment le faire ! 

Ici [[Bac à sable|'''Le bac à sable''']] qui devrait vous permettre de comprendre la façon dont on met en page un article. Il suffit de cliquer sur &quot;modifier&quot; et ensuite &quot;prévisualiser&quot;, vous aurez en haut le résultat, et en bas (dans la fenêtre d'édition) la façon dont il faut écrire pour l'obtenir.&lt;br&gt; Si vous faites des modifications sur cette page, c'est une très bonne idée pour s'entrainer, ne &quot;publiez&quot; pas s'il vous plais (cela enregistre les modifications), laissez la mise en page telle qu'elle est pour les suivants.

== Créer un article ==

#Trouvez un titre simple et éloquent
#Cherchez si un article sur le même sujet n'existe pas (avec le titre que vous souhaitez, ce sera celui de votre article !)
#Créez l'article (dans les résultats de la recherche bouton &quot;Lire&quot; vous aurez la possibilité de créer la page)
#N'oubliez pas de mettre une catégorie à la fin de votre article. La catégorie, si elle n'existe pas sera crée automatiquement. Pensez donc à vérifier si une catégorie proche de celle que vous souhaitez utiliser n'existe pas déjà...
#Publiez l'article

== Les catégories, sous-catégories, sous-sous-catégories... ==

#Vous venez de créer une page, dans laquelle vous n'avez pas oublié de placer une catégorie. Disons par exemple : '''&lt;nowiki&gt;[[Category:catégorie1]]&lt;/nowiki&gt;'''
#Vous allez maintenant créer un autre article, et vous souhaitez que celui-ci soit une sous-catégorie de la catégorie1. Facile. Créez votre article, et mettez-y '''&lt;nowiki&gt;[[Category:catégorie1.1]]&lt;/nowiki&gt;'''.
#Ensuite, rendez vous à la page [[Spécial:Catégories|&quot;spéciale catégories&quot;]]. Cliquez sur la catégorie n°1.1 (la secondaire). Si cette page n'a pas été crée, le Wiki propose de le faire; Si elle existe déjà, il suffit de l'éditer. Vous y placer la catégorie &quot;mère&quot; : '''&lt;nowiki&gt;[[Category:catégorie1]]&lt;/nowiki&gt;''', et vous publiez. La catégorie1.1 est devenue une fille de la catégorie1
#Et ainsi de suite. Cette façon de procéder est extrêmement pratique pour ranger les articles dans des catégories principales, secondaire, tertiaire, etc. C'est le squelette même du Wiki !

== Aller plus loin  ==

Ci-dessous des liens externes, inutile de recopier ici des Tuto et des aides au sujet de MédiaWiki, qui sont très bien faits ailleurs... 

* [http://www.debian-fr.org/viewtopic.php?p=250856#p250856 Un petit guide de survie] par [[Utilisateur:L0u!$|L0u!$]]

* [http://www.mediawiki.org/wiki/Help:Contents/fr  Aide très complète en français]

* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki] 

* [http://www.mediawiki.org/wiki/Category:Help/fr Aide très complète sur les Catégories en français]

* [http://fr.wikipedia.org/wiki/Aide:Mod%C3%A8le Créer un modèle]

* [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur]

[[Utilisateur:Lol|Lol]] 2 février 2010 à 13:44 (UTC)
[[Category:Aide]]</text>
      <sha1>62cn31b7de1lfpof1zye41ys6y9s7df</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4297</id>
      <parentid>2531</parentid>
      <timestamp>2012-06-01T09:16:09Z</timestamp>
      <contributor>
        <username>Greenmerlin</username>
        <id>230</id>
      </contributor>
      <minor/>
      <comment>/* Aller plus loin */</comment>
      <text xml:space="preserve" bytes="4166">Bienvenue sur l'aide&amp;nbsp;! 

Perdu&amp;nbsp;? Pas de soucis, voici quelque trucs pour bien commencer... Vous avez trouvé l'aide, vous n'êtes pas si nul que ça&amp;nbsp;! 

== Dans le menu sur la gauche&amp;nbsp;:  ==

*Accueil vous ramènera au début du Wiki 
*Le Forum Interne vous enverra au Forum du Wiki (accessible uniquement si vous êtes inscrit au Wiki) 
*Communauté&amp;nbsp;? La liste des participants 
*Actualités&amp;nbsp;: Les nouvelles au sujet du Wiki 
*Page au hasard&amp;nbsp;? Devinez&amp;nbsp;!
*www.debian-fr.org vous expédiera directement sur notre forum préféré&amp;nbsp;! 
*Aide&amp;nbsp;? C'est ici

== La puissante fonction RECHERCHER&amp;nbsp;:  ==

Mettez un mot dans la recherche et cliquez sur &quot;rechercher&quot;. Vous serez renvoyé sur une page de résultats des pages ou le terme que vous cherchez se trouve. 

Mettez un mot dans la recherche et tapez &quot;entrée&quot; ou cliquez sur Lire. Vous serez renvoyé sur la même page de résultat que ci-dessus mais &lt;u&gt;vous aurez EN PLUS la possibilité de créer l'article que vous cherchez&lt;/u&gt; (si elle n'existe pas déjà...) 

Vous découvrirez doucement la façon dont un Wiki fonctionne. Inutile de se lancer dans la rédaction d'un article si vous n'avez pas compris comment le faire ! 

Ici [[Bac à sable|'''Le bac à sable''']] qui devrait vous permettre de comprendre la façon dont on met en page un article. Il suffit de cliquer sur &quot;modifier&quot; et ensuite &quot;prévisualiser&quot;, vous aurez en haut le résultat, et en bas (dans la fenêtre d'édition) la façon dont il faut écrire pour l'obtenir.&lt;br&gt; Si vous faites des modifications sur cette page, c'est une très bonne idée pour s'entrainer, ne &quot;publiez&quot; pas s'il vous plais (cela enregistre les modifications), laissez la mise en page telle qu'elle est pour les suivants.

== Créer un article ==

#Trouvez un titre simple et éloquent
#Cherchez si un article sur le même sujet n'existe pas (avec le titre que vous souhaitez, ce sera celui de votre article !)
#Créez l'article (dans les résultats de la recherche bouton &quot;Lire&quot; vous aurez la possibilité de créer la page)
#N'oubliez pas de mettre une catégorie à la fin de votre article. La catégorie, si elle n'existe pas sera crée automatiquement. Pensez donc à vérifier si une catégorie proche de celle que vous souhaitez utiliser n'existe pas déjà...
#Publiez l'article

== Les catégories, sous-catégories, sous-sous-catégories... ==

#Vous venez de créer une page, dans laquelle vous n'avez pas oublié de placer une catégorie. Disons par exemple : '''&lt;nowiki&gt;[[Category:catégorie1]]&lt;/nowiki&gt;'''
#Vous allez maintenant créer un autre article, et vous souhaitez que celui-ci soit une sous-catégorie de la catégorie1. Facile. Créez votre article, et mettez-y '''&lt;nowiki&gt;[[Category:catégorie1.1]]&lt;/nowiki&gt;'''.
#Ensuite, rendez vous à la page [[Spécial:Catégories|&quot;spéciale catégories&quot;]]. Cliquez sur la catégorie n°1.1 (la secondaire). Si cette page n'a pas été crée, le Wiki propose de le faire; Si elle existe déjà, il suffit de l'éditer. Vous y placer la catégorie &quot;mère&quot; : '''&lt;nowiki&gt;[[Category:catégorie1]]&lt;/nowiki&gt;''', et vous publiez. La catégorie1.1 est devenue une fille de la catégorie1
#Et ainsi de suite. Cette façon de procéder est extrêmement pratique pour ranger les articles dans des catégories principales, secondaire, tertiaire, etc. C'est le squelette même du Wiki !

== Aller plus loin  ==

Ci-dessous des liens externes, inutile de recopier ici des Tuto et des aides au sujet de MédiaWiki, qui sont très bien faits ailleurs... 

* [http://www.debian-fr.org/viewtopic.php?p=250856#p250856 Un petit guide de survie] par [[Utilisateur:L0u!$|L0u!$]]

* [http://www.mediawiki.org/wiki/Help:Contents/fr  Aide très complète en français]

* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki] 

* [http://www.mediawiki.org/wiki/Category:Help/fr Aide très complète sur les Catégories en français]

* [http://fr.wikipedia.org/wiki/Aide:Mod%C3%A8le Créer un modèle]

* [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] &lt;---- Le lien est mort

[[Utilisateur:Lol|Lol]] 2 février 2010 à 13:44 (UTC)
[[Category:Aide]]</text>
      <sha1>3g5k1108tfz36zrw35xdmipgproskke</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4786</id>
      <parentid>4297</parentid>
      <timestamp>2012-12-04T17:57:35Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>/* Aller plus loin */ ajout d'une version archivée de la page disparue de la Toile</comment>
      <text xml:space="preserve" bytes="4238">Bienvenue sur l'aide&amp;nbsp;! 

Perdu&amp;nbsp;? Pas de soucis, voici quelque trucs pour bien commencer... Vous avez trouvé l'aide, vous n'êtes pas si nul que ça&amp;nbsp;! 

== Dans le menu sur la gauche&amp;nbsp;:  ==

*Accueil vous ramènera au début du Wiki 
*Le Forum Interne vous enverra au Forum du Wiki (accessible uniquement si vous êtes inscrit au Wiki) 
*Communauté&amp;nbsp;? La liste des participants 
*Actualités&amp;nbsp;: Les nouvelles au sujet du Wiki 
*Page au hasard&amp;nbsp;? Devinez&amp;nbsp;!
*www.debian-fr.org vous expédiera directement sur notre forum préféré&amp;nbsp;! 
*Aide&amp;nbsp;? C'est ici

== La puissante fonction RECHERCHER&amp;nbsp;:  ==

Mettez un mot dans la recherche et cliquez sur &quot;rechercher&quot;. Vous serez renvoyé sur une page de résultats des pages ou le terme que vous cherchez se trouve. 

Mettez un mot dans la recherche et tapez &quot;entrée&quot; ou cliquez sur Lire. Vous serez renvoyé sur la même page de résultat que ci-dessus mais &lt;u&gt;vous aurez EN PLUS la possibilité de créer l'article que vous cherchez&lt;/u&gt; (si elle n'existe pas déjà...) 

Vous découvrirez doucement la façon dont un Wiki fonctionne. Inutile de se lancer dans la rédaction d'un article si vous n'avez pas compris comment le faire ! 

Ici [[Bac à sable|'''Le bac à sable''']] qui devrait vous permettre de comprendre la façon dont on met en page un article. Il suffit de cliquer sur &quot;modifier&quot; et ensuite &quot;prévisualiser&quot;, vous aurez en haut le résultat, et en bas (dans la fenêtre d'édition) la façon dont il faut écrire pour l'obtenir.&lt;br&gt; Si vous faites des modifications sur cette page, c'est une très bonne idée pour s'entrainer, ne &quot;publiez&quot; pas s'il vous plais (cela enregistre les modifications), laissez la mise en page telle qu'elle est pour les suivants.

== Créer un article ==

#Trouvez un titre simple et éloquent
#Cherchez si un article sur le même sujet n'existe pas (avec le titre que vous souhaitez, ce sera celui de votre article !)
#Créez l'article (dans les résultats de la recherche bouton &quot;Lire&quot; vous aurez la possibilité de créer la page)
#N'oubliez pas de mettre une catégorie à la fin de votre article. La catégorie, si elle n'existe pas sera crée automatiquement. Pensez donc à vérifier si une catégorie proche de celle que vous souhaitez utiliser n'existe pas déjà...
#Publiez l'article

== Les catégories, sous-catégories, sous-sous-catégories... ==

#Vous venez de créer une page, dans laquelle vous n'avez pas oublié de placer une catégorie. Disons par exemple : '''&lt;nowiki&gt;[[Category:catégorie1]]&lt;/nowiki&gt;'''
#Vous allez maintenant créer un autre article, et vous souhaitez que celui-ci soit une sous-catégorie de la catégorie1. Facile. Créez votre article, et mettez-y '''&lt;nowiki&gt;[[Category:catégorie1.1]]&lt;/nowiki&gt;'''.
#Ensuite, rendez vous à la page [[Spécial:Catégories|&quot;spéciale catégories&quot;]]. Cliquez sur la catégorie n°1.1 (la secondaire). Si cette page n'a pas été crée, le Wiki propose de le faire; Si elle existe déjà, il suffit de l'éditer. Vous y placer la catégorie &quot;mère&quot; : '''&lt;nowiki&gt;[[Category:catégorie1]]&lt;/nowiki&gt;''', et vous publiez. La catégorie1.1 est devenue une fille de la catégorie1
#Et ainsi de suite. Cette façon de procéder est extrêmement pratique pour ranger les articles dans des catégories principales, secondaire, tertiaire, etc. C'est le squelette même du Wiki !

== Aller plus loin  ==

Ci-dessous des liens externes, inutile de recopier ici des Tuto et des aides au sujet de MédiaWiki, qui sont très bien faits ailleurs…

* [http://www.debian-fr.org/viewtopic.php?p=250856#p250856 Un petit guide de survie] par [[Utilisateur:L0u!$|L0u!$]]

* [http://www.mediawiki.org/wiki/Help:Contents/fr  Aide très complète en français]

* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki] 

* [http://www.mediawiki.org/wiki/Category:Help/fr Aide très complète sur les Catégories en français]

* [http://fr.wikipedia.org/wiki/Aide:Mod%C3%A8le Créer un modèle]

* [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] [http://web.archive.org/web/20110717030315/http://meta.wikimedia.org/wiki/Aide:Contenu archive]

[[Utilisateur:Lol|Lol]] 2 février 2010 à 13:44 (UTC)
[[Category:Aide]]</text>
      <sha1>47iswwry25knl8gvp487aohbjrp8abd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4788</id>
      <parentid>4786</parentid>
      <timestamp>2012-12-04T18:00:06Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>/* Aller plus loin */ visibilité du lien vers la page archivée</comment>
      <text xml:space="preserve" bytes="4240">Bienvenue sur l'aide&amp;nbsp;! 

Perdu&amp;nbsp;? Pas de soucis, voici quelque trucs pour bien commencer... Vous avez trouvé l'aide, vous n'êtes pas si nul que ça&amp;nbsp;! 

== Dans le menu sur la gauche&amp;nbsp;:  ==

*Accueil vous ramènera au début du Wiki 
*Le Forum Interne vous enverra au Forum du Wiki (accessible uniquement si vous êtes inscrit au Wiki) 
*Communauté&amp;nbsp;? La liste des participants 
*Actualités&amp;nbsp;: Les nouvelles au sujet du Wiki 
*Page au hasard&amp;nbsp;? Devinez&amp;nbsp;!
*www.debian-fr.org vous expédiera directement sur notre forum préféré&amp;nbsp;! 
*Aide&amp;nbsp;? C'est ici

== La puissante fonction RECHERCHER&amp;nbsp;:  ==

Mettez un mot dans la recherche et cliquez sur &quot;rechercher&quot;. Vous serez renvoyé sur une page de résultats des pages ou le terme que vous cherchez se trouve. 

Mettez un mot dans la recherche et tapez &quot;entrée&quot; ou cliquez sur Lire. Vous serez renvoyé sur la même page de résultat que ci-dessus mais &lt;u&gt;vous aurez EN PLUS la possibilité de créer l'article que vous cherchez&lt;/u&gt; (si elle n'existe pas déjà...) 

Vous découvrirez doucement la façon dont un Wiki fonctionne. Inutile de se lancer dans la rédaction d'un article si vous n'avez pas compris comment le faire ! 

Ici [[Bac à sable|'''Le bac à sable''']] qui devrait vous permettre de comprendre la façon dont on met en page un article. Il suffit de cliquer sur &quot;modifier&quot; et ensuite &quot;prévisualiser&quot;, vous aurez en haut le résultat, et en bas (dans la fenêtre d'édition) la façon dont il faut écrire pour l'obtenir.&lt;br&gt; Si vous faites des modifications sur cette page, c'est une très bonne idée pour s'entrainer, ne &quot;publiez&quot; pas s'il vous plais (cela enregistre les modifications), laissez la mise en page telle qu'elle est pour les suivants.

== Créer un article ==

#Trouvez un titre simple et éloquent
#Cherchez si un article sur le même sujet n'existe pas (avec le titre que vous souhaitez, ce sera celui de votre article !)
#Créez l'article (dans les résultats de la recherche bouton &quot;Lire&quot; vous aurez la possibilité de créer la page)
#N'oubliez pas de mettre une catégorie à la fin de votre article. La catégorie, si elle n'existe pas sera crée automatiquement. Pensez donc à vérifier si une catégorie proche de celle que vous souhaitez utiliser n'existe pas déjà...
#Publiez l'article

== Les catégories, sous-catégories, sous-sous-catégories... ==

#Vous venez de créer une page, dans laquelle vous n'avez pas oublié de placer une catégorie. Disons par exemple : '''&lt;nowiki&gt;[[Category:catégorie1]]&lt;/nowiki&gt;'''
#Vous allez maintenant créer un autre article, et vous souhaitez que celui-ci soit une sous-catégorie de la catégorie1. Facile. Créez votre article, et mettez-y '''&lt;nowiki&gt;[[Category:catégorie1.1]]&lt;/nowiki&gt;'''.
#Ensuite, rendez vous à la page [[Spécial:Catégories|&quot;spéciale catégories&quot;]]. Cliquez sur la catégorie n°1.1 (la secondaire). Si cette page n'a pas été crée, le Wiki propose de le faire; Si elle existe déjà, il suffit de l'éditer. Vous y placer la catégorie &quot;mère&quot; : '''&lt;nowiki&gt;[[Category:catégorie1]]&lt;/nowiki&gt;''', et vous publiez. La catégorie1.1 est devenue une fille de la catégorie1
#Et ainsi de suite. Cette façon de procéder est extrêmement pratique pour ranger les articles dans des catégories principales, secondaire, tertiaire, etc. C'est le squelette même du Wiki !

== Aller plus loin  ==

Ci-dessous des liens externes, inutile de recopier ici des Tuto et des aides au sujet de MédiaWiki, qui sont très bien faits ailleurs…

* [http://www.debian-fr.org/viewtopic.php?p=250856#p250856 Un petit guide de survie] par [[Utilisateur:L0u!$|L0u!$]]

* [http://www.mediawiki.org/wiki/Help:Contents/fr  Aide très complète en français]

* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki] 

* [http://www.mediawiki.org/wiki/Category:Help/fr Aide très complète sur les Catégories en français]

* [http://fr.wikipedia.org/wiki/Aide:Mod%C3%A8le Créer un modèle]

* [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] [http://web.archive.org/web/20110717030315/http://meta.wikimedia.org/wiki/Aide:Contenu [archive]]

[[Utilisateur:Lol|Lol]] 2 février 2010 à 13:44 (UTC)
[[Category:Aide]]</text>
      <sha1>lmfkmkpxv7ggeok4wtw56jmhgp3g049</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Aide:Validation de la page</title>
    <ns>12</ns>
    <id>107</id>
    <revision>
      <id>449</id>
      <timestamp>2010-01-28T16:06:53Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « Petite explication...  Une page validée (onglet aq - assurance qualité) se trouve propulsée en page &quot;stable&quot; Toute modification postérieure, sera mise dans un brouillon e… »</comment>
      <text xml:space="preserve" bytes="531">Petite explication...

Une page validée (onglet aq - assurance qualité) se trouve propulsée en page &quot;stable&quot;
Toute modification postérieure, sera mise dans un brouillon en attente d'une nouvelle lecture !
Vous ne pourrez alors plus modifier le page stable, mais seulement le brouillon, en attendant qu'un &quot;relecteur&quot; passe par là...

Nous avons donc l'assurance que les pages stables (les premières visibles) ne peuvent pas être modifiées à mauvais escient !

CQFD !

[[Utilisateur:Lol|Lol]] 28 janvier 2010 à 16:06 (UTC)</text>
      <sha1>nfjyyghu134c3b02knklskednpdcu52</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>547</id>
      <parentid>449</parentid>
      <timestamp>2010-01-30T09:24:45Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="846">'''Petite explication...'''

[[Fichier:Capture d'écran128.jpeg]]
Une page non &quot;relue&quot; n'est pas validée
&lt;br&gt;&lt;br&gt;&lt;br&gt;

[[Fichier:Capture d'écran127.jpeg]]
Une page relue se trouve propulsée en page &quot;stable&quot;, et un brouillon est créé. Toute modification postérieure, sera mise dans un brouillon en attente d'une nouvelle lecture; Seul le brouillon est modifiable. La page stable est &quot;gelée&quot; !
Une relecture du brouillon propulsera celui-ci en page stable.
&lt;br&gt;&lt;br&gt;&lt;br&gt;

[[Fichier:Capture d'écran126.jpeg]]
Voici ce que voit un &quot;relecteur&quot; en bas de toutes les pages. Seuls ceux-ci (et les administrateurs) peuvent relire les pages.
&lt;br&gt;&lt;br&gt;&lt;br&gt;

Nous avons donc l'assurance que les pages stables (les premières visibles) ne peuvent pas être modifiées à mauvais escient !


CQFD !

[[Utilisateur:Lol|Lol]] 28 janvier 2010 à 16:06 (UTC)</text>
      <sha1>mkioot3a4p0rukqc3po3ie3uapshd7e</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3746</id>
      <parentid>547</parentid>
      <timestamp>2012-01-23T17:09:49Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <comment>Annulation des modifications 547 de [[Special:Contributions/WikiSysop|WikiSysop]] ([[User talk:WikiSysop|discussion]])</comment>
      <text xml:space="preserve" bytes="531">Petite explication...

Une page validée (onglet aq - assurance qualité) se trouve propulsée en page &quot;stable&quot;
Toute modification postérieure, sera mise dans un brouillon en attente d'une nouvelle lecture !
Vous ne pourrez alors plus modifier le page stable, mais seulement le brouillon, en attendant qu'un &quot;relecteur&quot; passe par là...

Nous avons donc l'assurance que les pages stables (les premières visibles) ne peuvent pas être modifiées à mauvais escient !

CQFD !

[[Utilisateur:Lol|Lol]] 28 janvier 2010 à 16:06 (UTC)</text>
      <sha1>nfjyyghu134c3b02knklskednpdcu52</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Alias</title>
    <ns>0</ns>
    <id>124</id>
    <revision>
      <id>568</id>
      <timestamp>2010-01-30T16:24:19Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <comment>Page créée avec «    Il y a des commandes que l'on emploie très souvent. &lt;br /&gt; Quand ces commandes sont courtes, ça ne pose pas de problèmes mais il arrive qu'elles aient une certaine long… »</comment>
      <text xml:space="preserve" bytes="2453">   Il y a des commandes que l'on emploie très souvent. &lt;br /&gt;
Quand ces commandes sont courtes, ça ne pose pas de problèmes mais il arrive qu'elles aient une certaine longueur et là, en dehors du côté fastidieux, il y a toujours un risque d'erreurs, dus à des fautes de frappe. &lt;br /&gt;
   Pour pallier ces deux problèmes, nous avons à notre disposition un outil très pratique, simple de mise en œuvre et facile à utiliser : l'ALIAS. &lt;br /&gt;
   Le principe est on ne peut plus simple. Il s'agit d'ajouter, à la fin du fichier &lt;br /&gt;
/home/votre_user/.bashrc &lt;br /&gt;
des lignes commençant par &quot;alias&quot;, suivies, après un espacement du nom de votre choix . Ce nom doit être court et &quot;causant&quot;. Il est suivi, sans espacement du signe '=' ainsi que d'une apostrophe ('), puis de 'sudo'.  Vient ensuite, après un espacement, la commande proprement dite. &lt;br /&gt;
La ligne se terminant toujours par une ('). &lt;br /&gt;
   Bien que ce ne soit pas une obligation, je trouve plus pratique de se servir de 'sudo'. Cela évite de devoir se 'loguer' en tant que 'root'. &lt;br /&gt;
   Les quelques exemples ci-dessous seront encore plus explicites que tout un discours :&lt;br /&gt;&lt;br /&gt;

alias photo='sudo mount -t ext2 /dev/sdb5 /mnt/photo' &lt;br /&gt;
alias ddext='sudo mount -t ext3 /dev/sdb10 /mnt/autre' &lt;br /&gt;
alias ntfs='sudo mount -t ntfs-3g /dev/sda7 /mnt/ntfs' &lt;br /&gt;
alias clone='sudo mount -t ext3 /dev/sda4 /mnt/clone' &lt;br /&gt;
alias video='sudo mount -o umask=000 /dev/sdb6 /mnt/video'  (umask=000 car Fat32 devant avoir les droits d'écriture) &lt;br /&gt;
alias demonte='sudo umount /mnt/autre;sudo umount /mnt/photo;sudo umount /mnt/video;sudo umount /mnt/travail;sudo umount /mnt/ntfs;sudo umount /mnt/clone' &lt;br /&gt;&lt;br /&gt;

   Les commandes ci-dessus ne concernent que des 'montages' et 'démontages' de partitions, que je ne veux pas porter dans le 'fstab' &lt;br /&gt;
   Vous comprendrez aisément qu'au lieu de taper &lt;br /&gt;
$ sudo mount -t ext2 /dev/sdb5 /mnt/photo &lt;br /&gt;
dans une console, il est beaucoup plus court de n'entrer que &lt;br /&gt;
$ photo &lt;br /&gt;
   Pour le démontage, le même alias (demonte) opère pour tout ce qui est monté. Chaque commande doit alors être séparée de la suivante par un ';' sans oublier, là aussi, les (') au début et à la fin. &lt;br /&gt;&lt;br /&gt;

--[[Utilisateur:Ricardo|Ricardo]] 30 janvier 2010 à 16:24 (UTC) 
&lt;br /&gt;
NOTA : &lt;br /&gt;
Cette page est brute de décoffrage, les liens de mise en page n'étant pas facilement repérables.</text>
      <sha1>i9324ko7bm47qxxvgk2q879c4gtauaq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>570</id>
      <parentid>568</parentid>
      <timestamp>2010-01-30T16:28:18Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <text xml:space="preserve" bytes="2486">   Il y a des commandes que l'on emploie très souvent. &lt;br /&gt;
Quand ces commandes sont courtes, ça ne pose pas de problèmes mais il arrive qu'elles aient une certaine longueur et là, en dehors du côté fastidieux, il y a toujours un risque d'erreurs, dus à des fautes de frappe. &lt;br /&gt;
   Pour pallier ces deux problèmes, nous avons à notre disposition un outil très pratique, simple de mise en œuvre et facile à utiliser : l'ALIAS. &lt;br /&gt;
   Le principe est on ne peut plus simple. Il s'agit d'ajouter, à la fin du fichier &lt;br /&gt;
/home/votre_user/.bashrc &lt;br /&gt;
des lignes commençant par &quot;alias&quot;, suivies, après un espacement du nom de votre choix . Ce nom doit être court et &quot;causant&quot;. Il est suivi, sans espacement du signe '=' ainsi que d'une apostrophe ('), puis de 'sudo'.  Vient ensuite, après un espacement, la commande proprement dite. &lt;br /&gt;
La ligne se terminant toujours par une ('). &lt;br /&gt;
   Bien que ce ne soit pas une obligation, je trouve plus pratique de se servir de 'sudo'. Cela évite de devoir se 'loguer' en tant que 'root'. &lt;br /&gt;
   Les quelques exemples ci-dessous seront encore plus explicites que tout un discours :&lt;br /&gt;&lt;br /&gt;

alias photo='sudo mount -t ext2 /dev/sdb5 /mnt/photo' &lt;br /&gt;
alias ddext='sudo mount -t ext3 /dev/sdb10 /mnt/autre' &lt;br /&gt;
alias ntfs='sudo mount -t ntfs-3g /dev/sda7 /mnt/ntfs' &lt;br /&gt;
alias clone='sudo mount -t ext3 /dev/sda4 /mnt/clone' &lt;br /&gt;
alias video='sudo mount -o umask=000 /dev/sdb6 /mnt/video'  (umask=000 car Fat32 devant avoir les droits d'écriture) &lt;br /&gt;
alias demonte='sudo umount /mnt/autre;sudo umount /mnt/photo;sudo umount /mnt/video;sudo umount /mnt/travail;sudo umount /mnt/ntfs;sudo umount /mnt/clone' &lt;br /&gt;&lt;br /&gt;

   Les commandes ci-dessus ne concernent que des 'montages' et 'démontages' de partitions, que je ne veux pas porter dans le 'fstab' &lt;br /&gt;
   Vous comprendrez aisément qu'au lieu de taper &lt;br /&gt;
$ sudo mount -t ext2 /dev/sdb5 /mnt/photo &lt;br /&gt;
dans une console, il est beaucoup plus court de n'entrer que &lt;br /&gt;
$ photo &lt;br /&gt;
   Pour le démontage, le même alias (demonte) opère pour tout ce qui est monté. Chaque commande doit alors être séparée de la suivante par un ';' sans oublier, là aussi, les (') au début et à la fin. &lt;br /&gt;&lt;br /&gt;

--[[Utilisateur:Ricardo|Ricardo]] 30 janvier 2010 à 16:24 (UTC) 
&lt;br /&gt;
NOTA : &lt;br /&gt;
Cette page est brute de décoffrage, les liens de mise en page n'étant pas facilement repérables.

[[Catégorie:Raccourcis/alias]]</text>
      <sha1>osafdkad9rk6kwg4sw9zexabfzwrhlw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>571</id>
      <parentid>570</parentid>
      <timestamp>2010-01-30T16:31:58Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <comment>désolé, le wiki n'aime pas les alinéas...</comment>
      <text xml:space="preserve" bytes="2462">Il y a des commandes que l'on emploie très souvent. &lt;br /&gt;
Quand ces commandes sont courtes, ça ne pose pas de problèmes mais il arrive qu'elles aient une certaine longueur et là, en dehors du côté fastidieux, il y a toujours un risque d'erreurs, dus à des fautes de frappe. &lt;br /&gt;
Pour pallier ces deux problèmes, nous avons à notre disposition un outil très pratique, simple de mise en œuvre et facile à utiliser : l'ALIAS. &lt;br /&gt;
Le principe est on ne peut plus simple. Il s'agit d'ajouter, à la fin du fichier &lt;br /&gt;
/home/votre_user/.bashrc &lt;br /&gt;
des lignes commençant par &quot;alias&quot;, suivies, après un espacement du nom de votre choix . Ce nom doit être court et &quot;causant&quot;. Il est suivi, sans espacement du signe '=' ainsi que d'une apostrophe ('), puis de 'sudo'.  Vient ensuite, après un espacement, la commande proprement dite. &lt;br /&gt;
La ligne se terminant toujours par une ('). &lt;br /&gt;
Bien que ce ne soit pas une obligation, je trouve plus pratique de se servir de 'sudo'. Cela évite de devoir se 'loguer' en tant que 'root'. &lt;br /&gt;
Les quelques exemples ci-dessous seront encore plus explicites que tout un discours :&lt;br /&gt;&lt;br /&gt;

alias photo='sudo mount -t ext2 /dev/sdb5 /mnt/photo' &lt;br /&gt;
alias ddext='sudo mount -t ext3 /dev/sdb10 /mnt/autre' &lt;br /&gt;
alias ntfs='sudo mount -t ntfs-3g /dev/sda7 /mnt/ntfs' &lt;br /&gt;
alias clone='sudo mount -t ext3 /dev/sda4 /mnt/clone' &lt;br /&gt;
alias video='sudo mount -o umask=000 /dev/sdb6 /mnt/video'  (umask=000 car Fat32 devant avoir les droits d'écriture) &lt;br /&gt;
alias demonte='sudo umount /mnt/autre;sudo umount /mnt/photo;sudo umount /mnt/video;sudo umount /mnt/travail;sudo umount /mnt/ntfs;sudo umount /mnt/clone' &lt;br /&gt;&lt;br /&gt;

Les commandes ci-dessus ne concernent que des 'montages' et 'démontages' de partitions, que je ne veux pas porter dans le 'fstab' &lt;br /&gt;
Vous comprendrez aisément qu'au lieu de taper &lt;br /&gt;
$ sudo mount -t ext2 /dev/sdb5 /mnt/photo &lt;br /&gt;
dans une console, il est beaucoup plus court de n'entrer que &lt;br /&gt;
$ photo &lt;br /&gt;
Pour le démontage, le même alias (demonte) opère pour tout ce qui est monté. Chaque commande doit alors être séparée de la suivante par un ';' sans oublier, là aussi, les (') au début et à la fin. &lt;br /&gt;&lt;br /&gt;

--[[Utilisateur:Ricardo|Ricardo]] 30 janvier 2010 à 16:24 (UTC) 
&lt;br /&gt;
NOTA : &lt;br /&gt;
Cette page est brute de décoffrage, les liens de mise en page n'étant pas facilement repérables.

[[Catégorie:Raccourcis/alias]]</text>
      <sha1>dou3yz4fq5r4qw8ctzpw0avpkahhu29</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>572</id>
      <parentid>571</parentid>
      <timestamp>2010-01-30T16:40:07Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="2535">Il y a des commandes que l'on emploie très souvent. &lt;br /&gt;
Quand ces commandes sont courtes, ça ne pose pas de problèmes mais il arrive qu'elles aient une certaine longueur et là, en dehors du côté fastidieux, il y a toujours un risque d'erreurs, dus à des fautes de frappe. &lt;br /&gt;
Pour pallier ces deux problèmes, nous avons à notre disposition un outil très pratique, simple de mise en œuvre et facile à utiliser : l'ALIAS. &lt;br /&gt;
Le principe est on ne peut plus simple. Il s'agit d'ajouter, à la fin du fichier ''~/.bashrc'' des lignes commençant par &quot;alias&quot;, suivies, après un espacement du nom de votre choix . Ce nom doit être court et &quot;causant&quot;. Il est suivi, sans espacement, du signe '=' ainsi que d'une apostrophe (').  Vient ensuite, après un espacement, la commande proprement dite, la ligne se terminant toujours par une appostrophe.
Bien que ce ne soit pas une obligation, il peut être utile d'utiliser ''sudo''. Cela évite de devoir se connecter en tant que root ( super utilisateur ). &lt;br /&gt;
Les quelques exemples ci-dessous seront encore plus explicites que tout un discours :&lt;br /&gt;&lt;br /&gt;
alias ll='ls -l --color=auto'
alias la='ls -a --color=auto'
alias l='ls -la --color=auto'
alias ..='cd ..'
alias photo='sudo mount -t ext2 /dev/sdb5 /mnt/photo' &lt;br /&gt;
alias ddext='sudo mount -t ext3 /dev/sdb10 /mnt/autre' &lt;br /&gt;
alias ntfs='sudo mount -t ntfs-3g /dev/sda7 /mnt/ntfs' &lt;br /&gt;
alias clone='sudo mount -t ext3 /dev/sda4 /mnt/clone' &lt;br /&gt;
alias video='sudo mount -o umask=000 /dev/sdb6 /mnt/video'  (umask=000 car Fat32 devant avoir les droits d'écriture) &lt;br /&gt;
alias demonte='sudo umount /mnt/autre;sudo umount /mnt/photo;sudo umount /mnt/video;sudo umount /mnt/travail;sudo umount /mnt/ntfs;sudo umount /mnt/clone' &lt;br /&gt;&lt;br /&gt;

Les commandes ci-dessus qui concernent les 'montages' et 'démontages' de partitions, que je ne veux pas porter dans le 'fstab' &lt;br /&gt;
Vous comprendrez aisément qu'au lieu de taper &lt;br /&gt;
 $ sudo mount -t ext2 /dev/sdb5 /mnt/photo &lt;br /&gt;
dans une console, il est beaucoup plus court de n'entrer que &lt;br /&gt;
 $ photo &lt;br /&gt;
Pour le démontage, le même alias (demonte) opère pour tout ce qui est monté. Chaque commande doit alors être séparée de la suivante par un ';' sans oublier, là aussi, les (') au début et à la fin. &lt;br /&gt;&lt;br /&gt;

--[[Utilisateur:Ricardo|Ricardo]] 30 janvier 2010 à 16:24 (UTC) 
&lt;br /&gt;
NOTA : &lt;br /&gt;
Cette page est brute de décoffrage, les liens de mise en page n'étant pas facilement repérables.

[[Catégorie:Raccourcis/alias]]</text>
      <sha1>a5938e4ykin22d7qmoc0cyanw9vl4xc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>573</id>
      <parentid>572</parentid>
      <timestamp>2010-01-30T17:07:18Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <minor/>
      <comment>a renommé [[Créer la page]] en [[Alias (raccourci)]]</comment>
      <text xml:space="preserve" bytes="2535">Il y a des commandes que l'on emploie très souvent. &lt;br /&gt;
Quand ces commandes sont courtes, ça ne pose pas de problèmes mais il arrive qu'elles aient une certaine longueur et là, en dehors du côté fastidieux, il y a toujours un risque d'erreurs, dus à des fautes de frappe. &lt;br /&gt;
Pour pallier ces deux problèmes, nous avons à notre disposition un outil très pratique, simple de mise en œuvre et facile à utiliser : l'ALIAS. &lt;br /&gt;
Le principe est on ne peut plus simple. Il s'agit d'ajouter, à la fin du fichier ''~/.bashrc'' des lignes commençant par &quot;alias&quot;, suivies, après un espacement du nom de votre choix . Ce nom doit être court et &quot;causant&quot;. Il est suivi, sans espacement, du signe '=' ainsi que d'une apostrophe (').  Vient ensuite, après un espacement, la commande proprement dite, la ligne se terminant toujours par une appostrophe.
Bien que ce ne soit pas une obligation, il peut être utile d'utiliser ''sudo''. Cela évite de devoir se connecter en tant que root ( super utilisateur ). &lt;br /&gt;
Les quelques exemples ci-dessous seront encore plus explicites que tout un discours :&lt;br /&gt;&lt;br /&gt;
alias ll='ls -l --color=auto'
alias la='ls -a --color=auto'
alias l='ls -la --color=auto'
alias ..='cd ..'
alias photo='sudo mount -t ext2 /dev/sdb5 /mnt/photo' &lt;br /&gt;
alias ddext='sudo mount -t ext3 /dev/sdb10 /mnt/autre' &lt;br /&gt;
alias ntfs='sudo mount -t ntfs-3g /dev/sda7 /mnt/ntfs' &lt;br /&gt;
alias clone='sudo mount -t ext3 /dev/sda4 /mnt/clone' &lt;br /&gt;
alias video='sudo mount -o umask=000 /dev/sdb6 /mnt/video'  (umask=000 car Fat32 devant avoir les droits d'écriture) &lt;br /&gt;
alias demonte='sudo umount /mnt/autre;sudo umount /mnt/photo;sudo umount /mnt/video;sudo umount /mnt/travail;sudo umount /mnt/ntfs;sudo umount /mnt/clone' &lt;br /&gt;&lt;br /&gt;

Les commandes ci-dessus qui concernent les 'montages' et 'démontages' de partitions, que je ne veux pas porter dans le 'fstab' &lt;br /&gt;
Vous comprendrez aisément qu'au lieu de taper &lt;br /&gt;
 $ sudo mount -t ext2 /dev/sdb5 /mnt/photo &lt;br /&gt;
dans une console, il est beaucoup plus court de n'entrer que &lt;br /&gt;
 $ photo &lt;br /&gt;
Pour le démontage, le même alias (demonte) opère pour tout ce qui est monté. Chaque commande doit alors être séparée de la suivante par un ';' sans oublier, là aussi, les (') au début et à la fin. &lt;br /&gt;&lt;br /&gt;

--[[Utilisateur:Ricardo|Ricardo]] 30 janvier 2010 à 16:24 (UTC) 
&lt;br /&gt;
NOTA : &lt;br /&gt;
Cette page est brute de décoffrage, les liens de mise en page n'étant pas facilement repérables.

[[Catégorie:Raccourcis/alias]]</text>
      <sha1>a5938e4ykin22d7qmoc0cyanw9vl4xc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>575</id>
      <parentid>573</parentid>
      <timestamp>2010-01-30T17:08:49Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <minor/>
      <comment>a renommé [[Alias (raccourci)]] en [[Alias]]</comment>
      <text xml:space="preserve" bytes="2535">Il y a des commandes que l'on emploie très souvent. &lt;br /&gt;
Quand ces commandes sont courtes, ça ne pose pas de problèmes mais il arrive qu'elles aient une certaine longueur et là, en dehors du côté fastidieux, il y a toujours un risque d'erreurs, dus à des fautes de frappe. &lt;br /&gt;
Pour pallier ces deux problèmes, nous avons à notre disposition un outil très pratique, simple de mise en œuvre et facile à utiliser : l'ALIAS. &lt;br /&gt;
Le principe est on ne peut plus simple. Il s'agit d'ajouter, à la fin du fichier ''~/.bashrc'' des lignes commençant par &quot;alias&quot;, suivies, après un espacement du nom de votre choix . Ce nom doit être court et &quot;causant&quot;. Il est suivi, sans espacement, du signe '=' ainsi que d'une apostrophe (').  Vient ensuite, après un espacement, la commande proprement dite, la ligne se terminant toujours par une appostrophe.
Bien que ce ne soit pas une obligation, il peut être utile d'utiliser ''sudo''. Cela évite de devoir se connecter en tant que root ( super utilisateur ). &lt;br /&gt;
Les quelques exemples ci-dessous seront encore plus explicites que tout un discours :&lt;br /&gt;&lt;br /&gt;
alias ll='ls -l --color=auto'
alias la='ls -a --color=auto'
alias l='ls -la --color=auto'
alias ..='cd ..'
alias photo='sudo mount -t ext2 /dev/sdb5 /mnt/photo' &lt;br /&gt;
alias ddext='sudo mount -t ext3 /dev/sdb10 /mnt/autre' &lt;br /&gt;
alias ntfs='sudo mount -t ntfs-3g /dev/sda7 /mnt/ntfs' &lt;br /&gt;
alias clone='sudo mount -t ext3 /dev/sda4 /mnt/clone' &lt;br /&gt;
alias video='sudo mount -o umask=000 /dev/sdb6 /mnt/video'  (umask=000 car Fat32 devant avoir les droits d'écriture) &lt;br /&gt;
alias demonte='sudo umount /mnt/autre;sudo umount /mnt/photo;sudo umount /mnt/video;sudo umount /mnt/travail;sudo umount /mnt/ntfs;sudo umount /mnt/clone' &lt;br /&gt;&lt;br /&gt;

Les commandes ci-dessus qui concernent les 'montages' et 'démontages' de partitions, que je ne veux pas porter dans le 'fstab' &lt;br /&gt;
Vous comprendrez aisément qu'au lieu de taper &lt;br /&gt;
 $ sudo mount -t ext2 /dev/sdb5 /mnt/photo &lt;br /&gt;
dans une console, il est beaucoup plus court de n'entrer que &lt;br /&gt;
 $ photo &lt;br /&gt;
Pour le démontage, le même alias (demonte) opère pour tout ce qui est monté. Chaque commande doit alors être séparée de la suivante par un ';' sans oublier, là aussi, les (') au début et à la fin. &lt;br /&gt;&lt;br /&gt;

--[[Utilisateur:Ricardo|Ricardo]] 30 janvier 2010 à 16:24 (UTC) 
&lt;br /&gt;
NOTA : &lt;br /&gt;
Cette page est brute de décoffrage, les liens de mise en page n'étant pas facilement repérables.

[[Catégorie:Raccourcis/alias]]</text>
      <sha1>a5938e4ykin22d7qmoc0cyanw9vl4xc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>577</id>
      <parentid>575</parentid>
      <timestamp>2010-01-30T17:21:15Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="2545">Il y a des commandes que l'on emploie très souvent. &lt;br /&gt;
Quand ces commandes sont courtes, ça ne pose pas de problèmes mais il arrive qu'elles aient une certaine longueur et là, en dehors du côté fastidieux, il y a toujours un risque d'erreurs, dus à des fautes de frappe. &lt;br /&gt;
Pour pallier ces deux problèmes, nous avons à notre disposition un outil très pratique, simple de mise en œuvre et facile à utiliser : l'ALIAS. &lt;br /&gt;
Le principe est on ne peut plus simple. Il s'agit d'ajouter, à la fin du fichier ''~/.bashrc'' des lignes commençant par &quot;alias&quot;, suivies, après un espacement du nom de votre choix . Ce nom doit être court et &quot;causant&quot;. Il est suivi, sans espacement, du signe '=' ainsi que d'une apostrophe (').  Vient ensuite, après un espacement, la commande proprement dite, la ligne se terminant toujours par une appostrophe.
Bien que ce ne soit pas une obligation, il peut être utile d'utiliser ''sudo''. Cela évite de devoir se connecter en tant que root ( super utilisateur ). &lt;br /&gt;
Les quelques exemples ci-dessous seront encore plus explicites que tout un discours :&lt;br /&gt;&lt;br /&gt;
 alias ll='ls -l --color=auto'
 alias la='ls -a --color=auto'
 alias l='ls -la --color=auto'
 alias ..='cd ..'
 alias photo='sudo mount -t ext2 /dev/sdb5 /mnt/photo' &lt;br /&gt;
 alias ddext='sudo mount -t ext3 /dev/sdb10 /mnt/autre' &lt;br /&gt;
 alias ntfs='sudo mount -t ntfs-3g /dev/sda7 /mnt/ntfs' &lt;br /&gt;
 alias clone='sudo mount -t ext3 /dev/sda4 /mnt/clone' &lt;br /&gt;
 alias video='sudo mount -o umask=000 /dev/sdb6 /mnt/video'  (umask=000 car Fat32 devant avoir les droits d'écriture) &lt;br /&gt;
 alias demonte='sudo umount /mnt/autre;sudo umount /mnt/photo;sudo umount /mnt/video;sudo umount /mnt/travail;sudo umount /mnt/ntfs;sudo umount /mnt/clone' &lt;br /&gt;&lt;br /&gt;

Les commandes ci-dessus qui concernent les 'montages' et 'démontages' de partitions, que je ne veux pas porter dans le 'fstab' &lt;br /&gt;
Vous comprendrez aisément qu'au lieu de taper &lt;br /&gt;
 $ sudo mount -t ext2 /dev/sdb5 /mnt/photo &lt;br /&gt;
dans une console, il est beaucoup plus court de n'entrer que &lt;br /&gt;
 $ photo &lt;br /&gt;
Pour le démontage, le même alias (demonte) opère pour tout ce qui est monté. Chaque commande doit alors être séparée de la suivante par un ';' sans oublier, là aussi, les (') au début et à la fin. &lt;br /&gt;&lt;br /&gt;

--[[Utilisateur:Ricardo|Ricardo]] 30 janvier 2010 à 16:24 (UTC) 
&lt;br /&gt;
NOTA : &lt;br /&gt;
Cette page est brute de décoffrage, les liens de mise en page n'étant pas facilement repérables.

[[Catégorie:Raccourcis/alias]]</text>
      <sha1>axh4hut8nlvpy2pb9lulx8bxa8z7865</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>579</id>
      <parentid>577</parentid>
      <timestamp>2010-01-30T17:21:38Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="2497">Il y a des commandes que l'on emploie très souvent. &lt;br /&gt;
Quand ces commandes sont courtes, ça ne pose pas de problèmes mais il arrive qu'elles aient une certaine longueur et là, en dehors du côté fastidieux, il y a toujours un risque d'erreurs, dus à des fautes de frappe. &lt;br /&gt;
Pour pallier ces deux problèmes, nous avons à notre disposition un outil très pratique, simple de mise en œuvre et facile à utiliser : l'ALIAS. &lt;br /&gt;
Le principe est on ne peut plus simple. Il s'agit d'ajouter, à la fin du fichier ''~/.bashrc'' des lignes commençant par &quot;alias&quot;, suivies, après un espacement du nom de votre choix . Ce nom doit être court et &quot;causant&quot;. Il est suivi, sans espacement, du signe '=' ainsi que d'une apostrophe (').  Vient ensuite, après un espacement, la commande proprement dite, la ligne se terminant toujours par une appostrophe.
Bien que ce ne soit pas une obligation, il peut être utile d'utiliser ''sudo''. Cela évite de devoir se connecter en tant que root ( super utilisateur ). &lt;br /&gt;
Les quelques exemples ci-dessous seront encore plus explicites que tout un discours :&lt;br /&gt;&lt;br /&gt;
 alias ll='ls -l --color=auto'
 alias la='ls -a --color=auto'
 alias l='ls -la --color=auto'
 alias ..='cd ..'
 alias photo='sudo mount -t ext2 /dev/sdb5 /mnt/photo'
 alias ddext='sudo mount -t ext3 /dev/sdb10 /mnt/autre'
 alias ntfs='sudo mount -t ntfs-3g /dev/sda7 /mnt/ntfs'
 alias clone='sudo mount -t ext3 /dev/sda4 /mnt/clone'
 alias video='sudo mount -o umask=000 /dev/sdb6 /mnt/video'  (umask=000 car Fat32 devant avoir les droits d'écriture)
 alias demonte='sudo umount /mnt/autre;sudo umount /mnt/photo;sudo umount /mnt/video;sudo umount /mnt/travail;sudo umount /mnt/ntfs;sudo umount /mnt/clone'

Les commandes ci-dessus qui concernent les 'montages' et 'démontages' de partitions, que je ne veux pas porter dans le 'fstab' &lt;br /&gt;
Vous comprendrez aisément qu'au lieu de taper &lt;br /&gt;
 $ sudo mount -t ext2 /dev/sdb5 /mnt/photo &lt;br /&gt;
dans une console, il est beaucoup plus court de n'entrer que &lt;br /&gt;
 $ photo &lt;br /&gt;
Pour le démontage, le même alias (demonte) opère pour tout ce qui est monté. Chaque commande doit alors être séparée de la suivante par un ';' sans oublier, là aussi, les (') au début et à la fin. &lt;br /&gt;&lt;br /&gt;

--[[Utilisateur:Ricardo|Ricardo]] 30 janvier 2010 à 16:24 (UTC) 
&lt;br /&gt;
NOTA : &lt;br /&gt;
Cette page est brute de décoffrage, les liens de mise en page n'étant pas facilement repérables.

[[Catégorie:Raccourcis/alias]]</text>
      <sha1>ozur2pel6fuo0heyhz000tepm8ovoac</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>581</id>
      <parentid>579</parentid>
      <timestamp>2010-01-31T01:12:14Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>Un peu de mise en page et j'ai retiré l'explication sur sudo qui à mon sens n'a rien à faire ici et certains alias qui n'apportaient rien au lecteur.</comment>
      <text xml:space="preserve" bytes="3441">Il y a des commandes que l'on emploie très souvent. &lt;br /&gt;
Quand ces commandes sont courtes, ça ne pose pas de problèmes mais il arrive qu'elles aient une certaine longueur et là, en dehors du côté fastidieux, il y a toujours un risque d'erreurs, dus à des fautes de frappe. &lt;br /&gt;
Pour pallier ces deux problèmes, nous avons à notre disposition un outil très pratique, simple de mise en œuvre et facile à utiliser : l''''alias'''.

Un alias s'écrit de cette forme :
 alias &lt;nom&gt;='&lt;cmd&gt;'

* &lt;nom&gt; est le nom que vous voulais utiliser pour votre alias
* &lt;cmd&gt; la commande que vous souhaitez voir exécutée lors lors de l'appel à cet alias

Dans la pratique si un alias est définis ainsi :
 alias d='ls'
on l'utilise ainsi
 $ d
et la « commande » d auras le même comportement que ls.

Pour que les alias soient toujours accessibles, il suffit de les écrire à la fin du fichier ~/.bashrc (si vous utilisez bash).

Les quelques exemples ci-dessous seront encore plus explicites que tout un discours :

== Alias généraux ==
Ces alias permettent de simplifier l'utilisation de ls pour aller plus vite sur cette commande très utilisées :
 alias ll='ls -l --color=auto'
 alias la='ls -a --color=auto'
 alias l='ls -la --color=auto'
 alias ..='cd ..'

== Alias très spécifiques ==
Ces alias permettent de donner une idée de ce que l'on peut faire avec un alias :
 alias photo='sudo mount -t ext2 /dev/sdb5 /mnt/photo'
 alias video='sudo mount -o umask=000 /dev/sdb6 /mnt/video' # (umask=000 car Fat32 devant avoir les droits d'écriture)
 alias demonte='sudo umount /mnt/autre;sudo umount /mnt/photo;sudo umount /mnt/video;sudo umount /mnt/travail;sudo umount /mnt/ntfs;sudo umount /mnt/clone'

Les commandes ci-dessus qui concernent les 'montages' et 'démontages' de partitions, que je ne veux pas porter dans le 'fstab'.

Vous comprendrez aisément qu'au lieu de taper
 $ sudo mount -t ext2 /dev/sdb5 /mnt/photo
dans une console, il est beaucoup plus court de n'entrer que
 $ photo
Pour le démontage, le même alias (demonte) opère pour tout ce qui est monté. Chaque commande doit alors être séparée de la suivante par un ';' sans oublier, là aussi, les (') au début et à la fin.

== Particularités ==
=== zsh ===
Le shell zsh est capable de supporter un type particulier d'alias. En effet il est possible de définir des alias sur les suffixes. Ces alias se définissent ainsi :
 alias -s pdf='xpdf'
 alias -s html='x-www-browser'
puis ils s'utillisent ainsi
 $ ./fichier.pdf
le fichier « fichier.pdf » seras ouvert avec xpdf. Cette utilisation des alias peut s'avérer très pratique.

=== tcsh ===
Tcsh possède un comportement particulier avec les alias qui lui permettent de définir des alias complexes.
En effet il est possible grâce à la substitution des historiques de réorganiser les arguments de l'alias comme on le souhaite. Il est en outre possible de faire certains traitements sur ces arguments.

Un exemple pour les programmeurs :
 alias compile gcc \!$ -o \!$:r
S'utilisera ainsi
 $ compile programme.c
et produiras un fichier exécutable programme.

Avec les autres shell (comme bash ou zsh), il est recommandé d'utiliser les fonction shell pour ce genre d'usage.


--[[Utilisateur:Ricardo|Ricardo]] 30 janvier 2010 à 16:24 (UTC) 
&lt;br /&gt;
NOTA : &lt;br /&gt;
Cette page est brute de décoffrage, les liens de mise en page n'étant pas facilement repérables.

[[Catégorie:Raccourcis/alias]]</text>
      <sha1>g7cqzi96qm3ep2c2a5l5logcdk9yhrv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>592</id>
      <parentid>581</parentid>
      <timestamp>2010-01-31T08:22:20Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="3439">Il y a des commandes que l'on emploie très souvent. &lt;br /&gt;
Quand ces commandes sont courtes, ça ne pose pas de problèmes mais il arrive qu'elles aient une certaine longueur et là, en dehors du côté fastidieux, il y a toujours un risque d'erreurs, dus à des fautes de frappe. &lt;br /&gt;
Pour pallier ces deux problèmes, nous avons à notre disposition un outil très pratique, simple de mise en œuvre et facile à utiliser : l''''alias'''.

Un alias s'écrit de cette forme :
 alias &lt;nom&gt;='&lt;cmd&gt;'

* &lt;nom&gt; est le nom que vous voulez utiliser pour votre alias
* &lt;cmd&gt; la commande que vous souhaitez voir exécutée lors lors de l'appel à cet alias

Dans la pratique si un alias est défini ainsi :
 alias d='ls'
on l'utilise ainsi
 $ d
et la « commande » d auras le même comportement que ls.

Pour que les alias soient toujours accessibles, il suffit de les écrire à la fin du fichier ~/.bashrc (si vous utilisez bash).

Les quelques exemples ci-dessous seront encore plus explicites que tout un discours :

== Alias généraux ==
Ces alias permettent de simplifier l'utilisation de ls pour aller plus vite sur cette commande très utilisées :
 alias ll='ls -l --color=auto'
 alias la='ls -a --color=auto'
 alias l='ls -la --color=auto'
 alias ..='cd ..'

== Alias très spécifiques ==
Ces alias permettent de donner une idée de ce que l'on peut faire avec un alias :
 alias photo='sudo mount -t ext2 /dev/sdb5 /mnt/photo'
 alias video='sudo mount -o umask=000 /dev/sdb6 /mnt/video' # (umask=000 car Fat32 devant avoir les droits d'écriture)
 alias demonte='sudo umount /mnt/autre;sudo umount /mnt/photo;sudo umount /mnt/video;sudo umount /mnt/travail;sudo umount /mnt/ntfs;sudo umount /mnt/clone'

Les commandes ci-dessus qui concernent les 'montages' et 'démontages' de partitions, que je ne veux pas porter dans le 'fstab'.

Vous comprendrez aisément qu'au lieu de taper
 $ sudo mount -t ext2 /dev/sdb5 /mnt/photo
dans une console, il est beaucoup plus court de n'entrer que
 $ photo
Pour le démontage, le même alias (demonte) opère pour tout ce qui est monté. Chaque commande doit alors être séparée de la suivante par un ';' sans oublier, là aussi, les (') au début et à la fin.

== Particularités ==
=== zsh ===
Le shell zsh est capable de supporter un type particulier d'alias. En effet il est possible de définir des alias sur les suffixes. Ces alias se définissent ainsi :
 alias -s pdf='xpdf'
 alias -s html='x-www-browser'
puis ils s'utillisent ainsi
 $ ./fichier.pdf
le fichier « fichier.pdf » seras ouvert avec xpdf. Cette utilisation des alias peut s'avérer très pratique.

=== tcsh ===
Tcsh possède un comportement particulier avec les alias qui lui permettent de définir des alias complexes.
En effet il est possible grâce à la substitution des historiques de réorganiser les arguments de l'alias comme on le souhaite. Il est en outre possible de faire certains traitements sur ces arguments.

Un exemple pour les programmeurs :
 alias compile gcc \!$ -o \!$:r
S'utilisera ainsi
 $ compile programme.c
et produiras un fichier exécutable programme.

Avec les autres shell (comme bash ou zsh), il est recommandé d'utiliser les fonction shell pour ce genre d'usage.


--[[Utilisateur:Ricardo|Ricardo]] 30 janvier 2010 à 16:24 (UTC) 
&lt;br /&gt;
NOTA : &lt;br /&gt;
Cette page est brute de décoffrage, les liens de mise en page n'étant pas facilement repérables.

[[Catégorie:Raccourcis/alias]]</text>
      <sha1>co4wlzqsbdzevdhgki8yol5ke3n4lf0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>602</id>
      <parentid>592</parentid>
      <timestamp>2010-01-31T16:45:35Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <text xml:space="preserve" bytes="3604">Il y a des commandes que l'on emploie très souvent. &lt;br /&gt;
Quand ces commandes sont courtes, ça ne pose pas de problèmes mais il arrive qu'elles aient une certaine longueur et là, en dehors du côté fastidieux, il y a toujours un risque d'erreurs, dus à des fautes de frappe. &lt;br /&gt;
Pour pallier ces deux problèmes, nous avons à notre disposition un outil très pratique, simple de mise en œuvre et facile à utiliser : l''''alias'''.

Un alias s'écrit de cette forme :
 alias &lt;nom&gt;='&lt;cmd&gt;'

* &lt;nom&gt; est le nom que vous voulez utiliser pour votre alias. Celui-ci est souhaité court et explicite.
* &lt;cmd&gt; la commande que vous souhaitez voir exécutée lors lors de l'appel à cet alias (ne pas oublier le (') en début et en fin de commande).

Dans la pratique si un alias est défini ainsi :
 alias d='ls'
on l'utilise ainsi
 $ d
et la « commande » d auras le même comportement que ls.

Pour que les alias soient toujours accessibles, il suffit de les écrire à la fin du fichier ~/.bashrc (si vous utilisez bash).

Les quelques exemples ci-dessous seront encore plus explicites que tout un discours :

== Alias généraux ==
Ces alias permettent de simplifier l'utilisation de ls pour aller plus vite sur cette commande très utilisées :
 alias ll='ls -l --color=auto'
 alias la='ls -a --color=auto'
 alias l='ls -la --color=auto'
 alias ..='cd ..'
Les alias précédents sont souvent présents d'origine dans le fichier ~/.bashrc mais il y sont commentés. Pour les rendre opérationnels, il suffit d'enlever le '#' en tête de ligne.

== Alias très spécifiques ==
Ces alias permettent de donner une idée de ce que l'on peut faire avec un alias :
 alias photo='sudo mount -t ext2 /dev/sdb5 /mnt/photo'
 alias video='sudo mount -o umask=000 /dev/sdb6 /mnt/video' (umask=000 car Fat32 devant avoir les droits d'écriture)
 alias demonte='sudo umount /mnt/autre;sudo umount /mnt/photo;sudo umount /mnt/video;sudo umount /mnt/travail;sudo umount /mnt/ntfs;sudo umount /mnt/clone'

Les commandes ci-dessus qui concernent les 'montages' et 'démontages' de partitions, que je ne veux pas porter dans le 'fstab'.

Vous comprendrez aisément qu'au lieu de taper
 $ sudo mount -t ext2 /dev/sdb5 /mnt/photo
dans une console, il est beaucoup plus court de n'entrer que
 $ photo
Pour le démontage, le même alias (demonte) opère pour tout ce qui est monté. Chaque commande doit alors être séparée de la suivante par un ';' sans oublier, là aussi, les (') au début et à la fin.

== Particularités ==
=== zsh ===
Le shell zsh est capable de supporter un type particulier d'alias. En effet il est possible de définir des alias sur les suffixes. Ces alias se définissent ainsi :
 alias -s pdf='xpdf'
 alias -s html='x-www-browser'
puis ils s'utillisent ainsi
 $ ./fichier.pdf
le fichier « fichier.pdf » seras ouvert avec xpdf. Cette utilisation des alias peut s'avérer très pratique.

=== tcsh ===
Tcsh possède un comportement particulier avec les alias qui lui permettent de définir des alias complexes.
En effet il est possible grâce à la substitution des historiques de réorganiser les arguments de l'alias comme on le souhaite. Il est en outre possible de faire certains traitements sur ces arguments.

Un exemple pour les programmeurs :
 alias compile gcc \!$ -o \!$:r
S'utilisera ainsi
 $ compile programme.c
et produiras un fichier exécutable programme.

Avec les autres shell (comme bash ou zsh), il est recommandé d'utiliser les fonction shell pour ce genre d'usage.


--[[Utilisateur:Ricardo|Ricardo]] 30 janvier 2010 à 16:24 (UTC) 

[[Catégorie:Raccourcis/alias]]</text>
      <sha1>nlbf5pckftbyqpmodaf1yyr1bkdbev6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Alias (raccourci)</title>
    <ns>0</ns>
    <id>126</id>
    <redirect title="Alias" />
    <revision>
      <id>576</id>
      <timestamp>2010-01-30T17:08:49Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <comment>a renommé [[Alias (raccourci)]] en [[Alias]]</comment>
      <text xml:space="preserve" bytes="22">#REDIRECTION [[Alias]]</text>
      <sha1>kop59dxis2o5845o4mur4c49p6p5eld</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Amavisd-new et DKIM</title>
    <ns>0</ns>
    <id>1158</id>
    <revision>
      <id>4747</id>
      <timestamp>2012-11-15T14:47:55Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>signer vos mails sortants avec amavisd-nex et DKIM</comment>
      <text xml:space="preserve" bytes="4367">Je vous propose ici un tutoriel pour signer vos mails sortants avec DKIM

== Signer ses mails avec DKIM ==

=== Définition de DKIM ===

DKIM (DomainKeys Identified Mail) est une norme d'authentification fiable du nom de domaine de l'expéditeur d'un courrier électronique. Elle constitue une protection efficace contre le spam et l'hameçonnage.

En effet, DKIM fonctionne par signature cryptographique du corps du message et d'une partie de ses en-têtes. Une signature DKIM vérifie donc l'authenticité du domaine expéditeur et garantit l'intégrité du message.

Cette technologie a été normalisée par l'IETF dans le RFC 4871.

[http://fr.wikipedia.org/wiki/DomainKeys_Identified_Mail Source: Wikipedia]

=== Création de la clef ===

Nous créons le répertoire qui va recevoir la clef:
 # mkdir /var/db &amp;&amp; mkdir /var/db/dkim/

Nous générons la clef avec l'outil inclut dans amavisd-new
 # amavisd-new genrsa /var/db/dkim/domaine.tld.pem
 Private RSA key successfully written to file &quot;/var/db/dkim/domaine.tld.pem&quot; (1024 bits, PEM format) 

Rendez Amavis propriétaire de ce fichier:
 chown -R amavis:amavis /var/db/dkim/ &amp;&amp; chmod -R 700 /var/db/dkim/

=== Déclaration de la clef dans amavisd-new ===

 # $editor /etc/amavis/conf.d/50-user
&lt;pre&gt;
$interface_policy{'10024'} = 'DKIM_ALWAYS';
$policy_bank{'DKIM_ALWAYS'} = {
originating =&gt; 1,
};

$enable_dkim_verification = 1;
$enable_dkim_signing = 1;
 dkim_key('domaine.tld', 'mail', '/var/db/dkim/domaine.tld.pem');
 @dkim_signature_options_bysender_maps = (
  { '.' =&gt; { ttl =&gt; 21*24*3600, c =&gt; 'relaxed/simple' } } );
  @mynetworks = qw(ip/32 ip/32 127.0.0.0/8 ipv6/64 ::1/128 0.0.0.0/8);  # list your internal networks
&lt;/pre&gt;

La première partie (policy_bank) à été ajoutée pour forcer la signature DKIM de tous les mails sortants (c'est utile en cas d'erreur dans les logs de amavis:
 dkim: not signing mail which is not originating from inside

Le seconde partie est la déclaration de la clef elle même.
A changer: le nom de la clef, et votre réseau (liste de votre réseau)

==== Vérification de la déclaration dans amavis ====

 # amavisd-new showkeys
&lt;pre&gt;
; key#1, domain domaine.tld, /var/db/dkim/domaine.tld.pem
mail._domainkey.domaine.tld.	3600 TXT (
  &quot;v=DKIM1; p=&quot;
  &quot;xXxXxXxXxXqGSIb3DQEBAQUAA4GNADCBiQKBgQCzeoq0Dx9yBJDu7e+KOefOhEQ8&quot;
  &quot;mTqglSIRjSWxXxXxXxXxXyYyYymw7Q2mI+5n1whYWsmwT1oSijix5WYdo9l/OAEL&quot;
  &quot;0KtGAL322tqkSYudxXxXxXxXxXYyYyYfYJOtblAPUZ4JP/L3tUddFTTmuPXjGrNl&quot;
  &quot;Ww0U0oxXxXxXxXxXh+kZ2rxXxXxXxXxX&quot;)
&lt;/pre&gt;

=== Déclaration dans votre DNS (Bind9) ===

Amavis à besoin, pour tester la clef, que celle-ce soit déclarée dans votre DNS; Voici la configuration pour Bind9:
Recopiez les lignes suivantes ans votre fichier de zone (la clef doit être recopiée sans espaces et sans guillemets).

 /etc/bind/pri.domaine.tld
&lt;pre&gt;
; DKIM
_domainkey.domaine.tld.        IN TXT  &quot;t=y; o=-;&quot;
mail._domainkey.domaine.tld.   IN TXT &quot;k=rsa; t=s; p=votre_clef_super_longue_sans_guillemetsuPXjGrNlWw0U0oxXxXxXxXxXh+kZ2rxXxXxXxXxX
&lt;/pre&gt;

Vous devriez maintenant être capable de tester la clef:

 # amavisd-new testkeys
 TESTING#1: mail._domainkey.domaine.tld      =&gt; pass

Si vous ne passez pas ce test, inutile d'aller plus loin, revérifiez votre configuration...

 # amavisd-new testkeys
 TESTING#1: mail._domainkey.domaine.tld      =&gt; invalid (public key: not available)


=== Déclaration dans votre DNS Externe ===

Si vous n'utilisez Bind9 que pour votre serveur et que votre DNS est géré par quelqu'un d'autre (votre Registrar par exemple) il faut déclarer la clef là-bas
Voici un exemple dans le &quot;manager de OVH&quot;:

Il suffit de créer une zone DKIM (ou tout simplement une zone texte), avec les infos suivantes:

 v=DKIM1;
 p=votre_clef_super_longue_sans_guillemets

[[Fichier:Dkim ovh 1.jpeg]]

[[Fichier:Dkim ovh 2.jpeg]]

[[Fichier:Dkim ovh 3.jpeg]]

=== Vérifiez le bon fonctionnement avec ''service.dkim-reputation.org'' ===

Il existe un site en ligne qui propose de vérifier pour vous le bon fonctionnement de DKIM: [http://service.dkim-reputation.org/ service.dkim-reputation.org]
Enregistrez un compte, créez une boite mail spécialement pour la vérification (par ex dkim@domaine.tld) sur votre serveur mail, et testez!

[[Fichier:dkim-reputation.jpeg]]

[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 15 novembre 2012 à 15:47 (CET)</text>
      <sha1>dpti6c5h3t1anvkjzh87p767j19l709</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5293</id>
      <parentid>4747</parentid>
      <timestamp>2013-06-26T13:58:18Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <comment>/* Déclaration dans votre DNS (Bind9) */</comment>
      <text xml:space="preserve" bytes="4367">Je vous propose ici un tutoriel pour signer vos mails sortants avec DKIM

== Signer ses mails avec DKIM ==

=== Définition de DKIM ===

DKIM (DomainKeys Identified Mail) est une norme d'authentification fiable du nom de domaine de l'expéditeur d'un courrier électronique. Elle constitue une protection efficace contre le spam et l'hameçonnage.

En effet, DKIM fonctionne par signature cryptographique du corps du message et d'une partie de ses en-têtes. Une signature DKIM vérifie donc l'authenticité du domaine expéditeur et garantit l'intégrité du message.

Cette technologie a été normalisée par l'IETF dans le RFC 4871.

[http://fr.wikipedia.org/wiki/DomainKeys_Identified_Mail Source: Wikipedia]

=== Création de la clef ===

Nous créons le répertoire qui va recevoir la clef:
 # mkdir /var/db &amp;&amp; mkdir /var/db/dkim/

Nous générons la clef avec l'outil inclut dans amavisd-new
 # amavisd-new genrsa /var/db/dkim/domaine.tld.pem
 Private RSA key successfully written to file &quot;/var/db/dkim/domaine.tld.pem&quot; (1024 bits, PEM format) 

Rendez Amavis propriétaire de ce fichier:
 chown -R amavis:amavis /var/db/dkim/ &amp;&amp; chmod -R 700 /var/db/dkim/

=== Déclaration de la clef dans amavisd-new ===

 # $editor /etc/amavis/conf.d/50-user
&lt;pre&gt;
$interface_policy{'10024'} = 'DKIM_ALWAYS';
$policy_bank{'DKIM_ALWAYS'} = {
originating =&gt; 1,
};

$enable_dkim_verification = 1;
$enable_dkim_signing = 1;
 dkim_key('domaine.tld', 'mail', '/var/db/dkim/domaine.tld.pem');
 @dkim_signature_options_bysender_maps = (
  { '.' =&gt; { ttl =&gt; 21*24*3600, c =&gt; 'relaxed/simple' } } );
  @mynetworks = qw(ip/32 ip/32 127.0.0.0/8 ipv6/64 ::1/128 0.0.0.0/8);  # list your internal networks
&lt;/pre&gt;

La première partie (policy_bank) à été ajoutée pour forcer la signature DKIM de tous les mails sortants (c'est utile en cas d'erreur dans les logs de amavis:
 dkim: not signing mail which is not originating from inside

Le seconde partie est la déclaration de la clef elle même.
A changer: le nom de la clef, et votre réseau (liste de votre réseau)

==== Vérification de la déclaration dans amavis ====

 # amavisd-new showkeys
&lt;pre&gt;
; key#1, domain domaine.tld, /var/db/dkim/domaine.tld.pem
mail._domainkey.domaine.tld.	3600 TXT (
  &quot;v=DKIM1; p=&quot;
  &quot;xXxXxXxXxXqGSIb3DQEBAQUAA4GNADCBiQKBgQCzeoq0Dx9yBJDu7e+KOefOhEQ8&quot;
  &quot;mTqglSIRjSWxXxXxXxXxXyYyYymw7Q2mI+5n1whYWsmwT1oSijix5WYdo9l/OAEL&quot;
  &quot;0KtGAL322tqkSYudxXxXxXxXxXYyYyYfYJOtblAPUZ4JP/L3tUddFTTmuPXjGrNl&quot;
  &quot;Ww0U0oxXxXxXxXxXh+kZ2rxXxXxXxXxX&quot;)
&lt;/pre&gt;

=== Déclaration dans votre DNS (Bind9) ===

Amavis à besoin, pour tester la clef, que celle-ce soit déclarée dans votre DNS; Voici la configuration pour Bind9:
Recopiez les lignes suivantes ans votre fichier de zone (la clef doit être recopiée sans espaces et sans guillemets).

 /etc/bind/pri.domaine.tld
&lt;pre&gt;
; DKIM
_domainkey.domaine.tld.        IN TXT  &quot;t=y; o=-;&quot;
mail._domainkey.domaine.tld.   IN TXT &quot;k=rsa; t=s; p=votre_clef_super_longue_sans_guillemetsuPXjGrNlWw0U0oxXxXxXxXxXh+kZ2rxXxXxXxXxX&quot;
&lt;/pre&gt;

Vous devriez maintenant être capable de tester la clef:

 # amavisd-new testkeys
 TESTING#1: mail._domainkey.domaine.tld      =&gt; pass

Si vous ne passez pas ce test, inutile d'aller plus loin, revérifiez votre configuration...

 # amavisd-new testkeys
 TESTING#1: mail._domainkey.domaine.tld      =&gt; invalid (public key: not available)

=== Déclaration dans votre DNS Externe ===

Si vous n'utilisez Bind9 que pour votre serveur et que votre DNS est géré par quelqu'un d'autre (votre Registrar par exemple) il faut déclarer la clef là-bas
Voici un exemple dans le &quot;manager de OVH&quot;:

Il suffit de créer une zone DKIM (ou tout simplement une zone texte), avec les infos suivantes:

 v=DKIM1;
 p=votre_clef_super_longue_sans_guillemets

[[Fichier:Dkim ovh 1.jpeg]]

[[Fichier:Dkim ovh 2.jpeg]]

[[Fichier:Dkim ovh 3.jpeg]]

=== Vérifiez le bon fonctionnement avec ''service.dkim-reputation.org'' ===

Il existe un site en ligne qui propose de vérifier pour vous le bon fonctionnement de DKIM: [http://service.dkim-reputation.org/ service.dkim-reputation.org]
Enregistrez un compte, créez une boite mail spécialement pour la vérification (par ex dkim@domaine.tld) sur votre serveur mail, et testez!

[[Fichier:dkim-reputation.jpeg]]

[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 15 novembre 2012 à 15:47 (CET)</text>
      <sha1>7wqtw3i4t8n74g6fchjvp64lk2wzzhb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5298</id>
      <parentid>5293</parentid>
      <timestamp>2013-06-28T07:58:26Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Lien vers OpenDkim|</comment>
      <text xml:space="preserve" bytes="4402">Je vous propose ici un tutoriel pour signer vos mails sortants avec DKIM

== Signer ses mails avec DKIM ==

=== Définition de DKIM ===

DKIM (DomainKeys Identified Mail) est une norme d'authentification fiable du nom de domaine de l'expéditeur d'un courrier électronique. Elle constitue une protection efficace contre le spam et l'hameçonnage.

En effet, DKIM fonctionne par signature cryptographique du corps du message et d'une partie de ses en-têtes. Une signature DKIM vérifie donc l'authenticité du domaine expéditeur et garantit l'intégrité du message.

Cette technologie a été normalisée par l'IETF dans le RFC 4871.

[http://fr.wikipedia.org/wiki/DomainKeys_Identified_Mail Source: Wikipedia]

=== Création de la clef ===

Nous créons le répertoire qui va recevoir la clef:
 # mkdir /var/db &amp;&amp; mkdir /var/db/dkim/

Nous générons la clef avec l'outil inclut dans amavisd-new
 # amavisd-new genrsa /var/db/dkim/domaine.tld.pem
 Private RSA key successfully written to file &quot;/var/db/dkim/domaine.tld.pem&quot; (1024 bits, PEM format) 

Rendez Amavis propriétaire de ce fichier:
 chown -R amavis:amavis /var/db/dkim/ &amp;&amp; chmod -R 700 /var/db/dkim/

=== Déclaration de la clef dans amavisd-new ===

 # $editor /etc/amavis/conf.d/50-user
&lt;pre&gt;
$interface_policy{'10024'} = 'DKIM_ALWAYS';
$policy_bank{'DKIM_ALWAYS'} = {
originating =&gt; 1,
};

$enable_dkim_verification = 1;
$enable_dkim_signing = 1;
 dkim_key('domaine.tld', 'mail', '/var/db/dkim/domaine.tld.pem');
 @dkim_signature_options_bysender_maps = (
  { '.' =&gt; { ttl =&gt; 21*24*3600, c =&gt; 'relaxed/simple' } } );
  @mynetworks = qw(ip/32 ip/32 127.0.0.0/8 ipv6/64 ::1/128 0.0.0.0/8);  # list your internal networks
&lt;/pre&gt;

La première partie (policy_bank) à été ajoutée pour forcer la signature DKIM de tous les mails sortants (c'est utile en cas d'erreur dans les logs de amavis:
 dkim: not signing mail which is not originating from inside

Le seconde partie est la déclaration de la clef elle même.
A changer: le nom de la clef, et votre réseau (liste de votre réseau)

==== Vérification de la déclaration dans amavis ====

 # amavisd-new showkeys
&lt;pre&gt;
; key#1, domain domaine.tld, /var/db/dkim/domaine.tld.pem
mail._domainkey.domaine.tld.	3600 TXT (
  &quot;v=DKIM1; p=&quot;
  &quot;xXxXxXxXxXqGSIb3DQEBAQUAA4GNADCBiQKBgQCzeoq0Dx9yBJDu7e+KOefOhEQ8&quot;
  &quot;mTqglSIRjSWxXxXxXxXxXyYyYymw7Q2mI+5n1whYWsmwT1oSijix5WYdo9l/OAEL&quot;
  &quot;0KtGAL322tqkSYudxXxXxXxXxXYyYyYfYJOtblAPUZ4JP/L3tUddFTTmuPXjGrNl&quot;
  &quot;Ww0U0oxXxXxXxXxXh+kZ2rxXxXxXxXxX&quot;)
&lt;/pre&gt;

=== Déclaration dans votre DNS (Bind9) ===

Amavis à besoin, pour tester la clef, que celle-ce soit déclarée dans votre DNS; Voici la configuration pour Bind9:
Recopiez les lignes suivantes ans votre fichier de zone (la clef doit être recopiée sans espaces et sans guillemets).

 /etc/bind/pri.domaine.tld
&lt;pre&gt;
; DKIM
_domainkey.domaine.tld.        IN TXT  &quot;t=y; o=-;&quot;
mail._domainkey.domaine.tld.   IN TXT &quot;k=rsa; t=s; p=votre_clef_super_longue_sans_guillemetsuPXjGrNlWw0U0oxXxXxXxXxXh+kZ2rxXxXxXxXxX&quot;
&lt;/pre&gt;

Vous devriez maintenant être capable de tester la clef:

 # amavisd-new testkeys
 TESTING#1: mail._domainkey.domaine.tld      =&gt; pass

Si vous ne passez pas ce test, inutile d'aller plus loin, revérifiez votre configuration...

 # amavisd-new testkeys
 TESTING#1: mail._domainkey.domaine.tld      =&gt; invalid (public key: not available)

=== Déclaration dans votre DNS Externe ===

Si vous n'utilisez Bind9 que pour votre serveur et que votre DNS est géré par quelqu'un d'autre (votre Registrar par exemple) il faut déclarer la clef là-bas
Voici un exemple dans le &quot;manager de OVH&quot;:

Il suffit de créer une zone DKIM (ou tout simplement une zone texte), avec les infos suivantes:

 v=DKIM1;
 p=votre_clef_super_longue_sans_guillemets

[[Fichier:Dkim ovh 1.jpeg]]

[[Fichier:Dkim ovh 2.jpeg]]

[[Fichier:Dkim ovh 3.jpeg]]

=== Vérifiez le bon fonctionnement avec ''service.dkim-reputation.org'' ===

Il existe un site en ligne qui propose de vérifier pour vous le bon fonctionnement de DKIM: [http://service.dkim-reputation.org/ service.dkim-reputation.org]
Enregistrez un compte, créez une boite mail spécialement pour la vérification (par ex dkim@domaine.tld) sur votre serveur mail, et testez!

[[Fichier:dkim-reputation.jpeg]]

[[Opendkim|Voir aussi: OpenDkim]]

[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 15 novembre 2012 à 15:47 (CET)</text>
      <sha1>pcm01biwwndg9hsy8sob9rb6hk7s759</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Annonces de sécurité</title>
    <ns>0</ns>
    <id>706</id>
    <revision>
      <id>3115</id>
      <timestamp>2011-07-30T08:15:11Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « Voici le feed de debiansecurity sur Twitter, à suivre... &lt;twitterfeed id=&quot;debiansecurity&quot;&gt;&lt;/twitterfeed&gt; »</comment>
      <text xml:space="preserve" bytes="105">Voici le feed de debiansecurity sur Twitter, à suivre...
&lt;twitterfeed id=&quot;debiansecurity&quot;&gt;&lt;/twitterfeed&gt;</text>
      <sha1>od3jnt744xh6sbt763skpz66l3vnq16</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3551</id>
      <parentid>3115</parentid>
      <timestamp>2011-11-21T08:20:55Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="254">Voici le feed de debiansecurity sur Twitter, à suivre...
&lt;twitterfeed id=&quot;debiansecurity&quot;&gt;&lt;/twitterfeed&gt;

{{#widget:Twitter|user=debiansecurity|count=25}}


Suivre Debian Security sur Twitter:
{{#widget:Twitter Follow
|twitter=debiansecurity
|what=me
}}</text>
      <sha1>fuqvewzx0ljfm6dbv9xab9dowdo5f3k</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3552</id>
      <parentid>3551</parentid>
      <timestamp>2011-11-21T08:24:32Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <text xml:space="preserve" bytes="253">Voici le feed de debiansecurity sur Twitter, à suivre...
&lt;twitterfeed id=&quot;debiansecurity&quot;&gt;&lt;/twitterfeed&gt;

{{#widget:Twitter|user=debiansecurity|count=25}}

Suivre Debian Security sur Twitter:
{{#widget:Twitter Follow
|twitter=debiansecurity
|what=me
}}</text>
      <sha1>9gb7d5s555ypmwrq0970sht2fig913e</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3553</id>
      <parentid>3552</parentid>
      <timestamp>2011-11-21T08:28:17Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <text xml:space="preserve" bytes="257">Voici le feed de debiansecurity sur Twitter, à suivre...
 &lt;twitterfeed id=&quot;debiansecurity&quot;&gt;&lt;/twitterfeed&gt;

{{#widget:Twitter
|user=debiansecurity
|count=25
}}

Suivre Debian Security sur Twitter:
{{#widget:Twitter Follow
|twitter=debiansecurity
|what=me
}}</text>
      <sha1>pd1sah7376s7xuyfptawk7k9ncm4okb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3557</id>
      <parentid>3553</parentid>
      <timestamp>2011-11-21T08:31:31Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <text xml:space="preserve" bytes="208">Voici le feed de debiansecurity sur Twitter, à suivre...

Suivre Debian Security sur Twitter:
{{#widget:Twitter Follow
|twitter=debiansecurity
|what=me
}}

{{#widget:Twitter
|user=debiansecurity
|count=25
}}</text>
      <sha1>faagc5g4k8h4bsdknj2j6hk88gz1nbm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3561</id>
      <parentid>3557</parentid>
      <timestamp>2011-11-21T09:04:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="258">Voici le feed de debiansecurity sur Twitter, à suivre...
&lt;twitterfeed id=&quot;debiansecurity&quot;&gt;&lt;/twitterfeed&gt;

Suivre Debian Security sur Twitter:
{{#widget:Twitter Follow
|twitter=debiansecurity
|what=me
}}



{{#widget:Twitter
|user=debiansecurity
|count=25
}}</text>
      <sha1>rk1rnb4kb0y5da9jh1jx71kayoyfx43</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3562</id>
      <parentid>3561</parentid>
      <timestamp>2011-11-21T09:05:18Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="210">Voici le feed de debiansecurity sur Twitter, à suivre...

Suivre Debian Security sur Twitter:
{{#widget:Twitter Follow
|twitter=debiansecurity
|what=me
}}



{{#widget:Twitter
|user=debiansecurity
|count=25
}}</text>
      <sha1>nzy1xv7fsd1bz9e9zjtd6ijcqxmrjad</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3563</id>
      <parentid>3562</parentid>
      <timestamp>2011-11-21T09:10:58Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="260">Voici le feed de debiansecurity sur Twitter, à suivre...

Suivre Debian Security sur Twitter:
{{#widget:Twitter Follow
|twitter=debiansecurity
|what=me
}}

&lt;twitterfeed id=&quot;#!/debiansecurity&quot;&gt;&lt;/twitterfeed&gt;

{{#widget:Twitter
|user=debiansecurity
|count=25
}}</text>
      <sha1>9hp3b48esccqnhijf8ryzng8a81s3d4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3564</id>
      <parentid>3563</parentid>
      <timestamp>2011-11-21T09:11:16Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="258">Voici le feed de debiansecurity sur Twitter, à suivre...

Suivre Debian Security sur Twitter:
{{#widget:Twitter Follow
|twitter=debiansecurity
|what=me
}}

&lt;twitterfeed id=&quot;debiansecurity&quot;&gt;
&lt;/twitterfeed&gt;

{{#widget:Twitter
|user=debiansecurity
|count=25
}}</text>
      <sha1>1sa5j1ckex60y1yvnui5p7osbt0qszm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3565</id>
      <parentid>3564</parentid>
      <timestamp>2011-11-21T09:12:46Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="257">Voici le feed de debiansecurity sur Twitter, à suivre...

Suivre Debian Security sur Twitter:
{{#widget:Twitter Follow
|twitter=debiansecurity
|what=me
}}

&lt;twitterfeed id=&quot;debiansecurity&quot;&gt;&lt;/twitterfeed&gt;

{{#widget:Twitter
|user=debiansecurity
|count=25
}}</text>
      <sha1>jtcydhbn88n37qxjm5t1ib7hw2mqk02</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3566</id>
      <parentid>3565</parentid>
      <timestamp>2011-11-21T09:13:38Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="208">Voici le feed de debiansecurity sur Twitter, à suivre...

Suivre Debian Security sur Twitter:
{{#widget:Twitter Follow
|twitter=debiansecurity
|what=me
}}

{{#widget:Twitter
|user=debiansecurity
|count=25
}}</text>
      <sha1>faagc5g4k8h4bsdknj2j6hk88gz1nbm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3578</id>
      <parentid>3566</parentid>
      <timestamp>2011-11-21T11:19:13Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="258">Voici le feed de debiansecurity sur Twitter, à suivre...

Suivre Debian Security sur Twitter:
{{#widget:Twitter Follow
|twitter=debiansecurity
|what=me
}}

&lt;twitterfeed id=&quot;Debian Security&quot;&gt;&lt;/twitterfeed&gt;

{{#widget:Twitter
|user=debiansecurity
|count=25
}}</text>
      <sha1>elbsuri347erh5lljvuwbpvcymk4req</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3579</id>
      <parentid>3578</parentid>
      <timestamp>2011-11-21T11:19:34Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="257">Voici le feed de debiansecurity sur Twitter, à suivre...

Suivre Debian Security sur Twitter:
{{#widget:Twitter Follow
|twitter=debiansecurity
|what=me
}}

&lt;twitterfeed id=&quot;debiansecurity&quot;&gt;&lt;/twitterfeed&gt;

{{#widget:Twitter
|user=debiansecurity
|count=25
}}</text>
      <sha1>jtcydhbn88n37qxjm5t1ib7hw2mqk02</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3580</id>
      <parentid>3579</parentid>
      <timestamp>2011-11-21T11:20:22Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="204">Voici le feed de debiansecurity sur Twitter, à suivre...

Suivre Debian Security sur Twitter:
{{#widget:Twitter Follow
|twitter=debiansecurity
|what=me
}}

&lt;twitterfeed id=&quot;debiansecurity&quot;&gt;&lt;/twitterfeed&gt;</text>
      <sha1>9bod5v30ie3y8aatf4om3ao2q22ybxz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3761</id>
      <parentid>3580</parentid>
      <timestamp>2012-02-02T13:03:05Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <text xml:space="preserve" bytes="301">Voici le feed de debiansecurity sur Twitter, à suivre...

Suivre Debian Security sur Twitter:
{{#widget:Twitter Follow
|twitter=debiansecurity
|what=me
}}

&lt;twitterfeed id=&quot;debiansecurity&quot;&gt;&lt;/twitterfeed&gt;


{{#widget:Twitter List
|user=debiansecurity
|list=
|title=
|subject=
|width=400
|height=350
}}</text>
      <sha1>gefdh8jqad4y4sc49o7fx4x60b6mi1b</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3763</id>
      <parentid>3761</parentid>
      <timestamp>2012-02-02T13:19:56Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <text xml:space="preserve" bytes="204">Voici le feed de debiansecurity sur Twitter, à suivre...

Suivre Debian Security sur Twitter:
{{#widget:Twitter Follow
|twitter=debiansecurity
|what=me
}}

&lt;twitterfeed id=&quot;debiansecurity&quot;&gt;&lt;/twitterfeed&gt;</text>
      <sha1>9bod5v30ie3y8aatf4om3ao2q22ybxz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3765</id>
      <parentid>3763</parentid>
      <timestamp>2012-02-02T13:26:13Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <comment>Annulation des modifications 3763 de [[Special:Contributions/WikiSysop|WikiSysop]] ([[User talk:WikiSysop|discussion]])</comment>
      <text xml:space="preserve" bytes="301">Voici le feed de debiansecurity sur Twitter, à suivre...

Suivre Debian Security sur Twitter:
{{#widget:Twitter Follow
|twitter=debiansecurity
|what=me
}}

&lt;twitterfeed id=&quot;debiansecurity&quot;&gt;&lt;/twitterfeed&gt;


{{#widget:Twitter List
|user=debiansecurity
|list=
|title=
|subject=
|width=400
|height=350
}}</text>
      <sha1>gefdh8jqad4y4sc49o7fx4x60b6mi1b</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3906</id>
      <parentid>3765</parentid>
      <timestamp>2012-03-07T11:55:42Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <text xml:space="preserve" bytes="340">Voici le feed de debiansecurity sur Twitter, à suivre...

Suivre Debian Security sur Twitter:
{{#widget:Twitter Follow
|twitter=debian_security
|what=me
}}

{{#widget:Twitter
|user=debian_security
|width=auto
|count=20
|tweets.color=#000000
|tweets.background=#f2f2f2
|tweets.links=#107bb5
|shell.color=#000000
|shell.background=#b8b8b8
}}</text>
      <sha1>n028rrb78rn0yd5ho0rhhuv8bbgd3v2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4636</id>
      <parentid>3906</parentid>
      <timestamp>2012-10-29T08:07:09Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="114">&lt;center&gt;
{{#widget:Iframe
|url=http://www.debian.org/security/2012/
|width=1200
|height=840
|border=0
}}
&lt;/center&gt;</text>
      <sha1>ibjxm24ky87ac63qzdgirsqo77kljm8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4975</id>
      <parentid>4636</parentid>
      <timestamp>2013-02-16T14:37:51Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="114">&lt;center&gt;
{{#widget:Iframe
|url=http://www.debian.org/security/2013/
|width=1200
|height=840
|border=0
}}
&lt;/center&gt;</text>
      <sha1>jflelqtkgpt1jbu4xdepmqu476s0la0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Apache</title>
    <ns>0</ns>
    <id>593</id>
    <revision>
      <id>2475</id>
      <timestamp>2010-12-11T16:06:32Z</timestamp>
      <contributor>
        <username>Kna</username>
        <id>35</id>
      </contributor>
      <comment>Page créée avec « = Installation =   # aptitude install apache2  La configuration par défaut est déjà fonctionnelle. Vous pouvez le vérifier avec un navigateur en allant sur http://localho... »</comment>
      <text xml:space="preserve" bytes="6453">= Installation =

 # aptitude install apache2

La configuration par défaut est déjà fonctionnelle.
Vous pouvez le vérifier avec un navigateur en allant sur http://localhost (ou http://adresse_de_la_machine à partir d'un autre poste). Le message « It works ! » doit apparaitre.
C'est la page par défaut, elle se trouve dans /var/www. Il vous suffit alors de mettre les fichiers de votre site dans ce répertoire pour qu'il soit utilisable...

= Configuration =

== Un site par utilisateur ==
Le mod_userdir est activé par défaut.
Si un utilisateur a dans son répertoire personnel un dossier ~/public_html, il sera accessible à l'adresse http://adresse_de_la_machine/~nom_de_l'utilisateur

== Configuration des sites : Hôtes virtuels ==

Apache fonctionne avec des hôtes virtuels (virtual hosts) pour permettre d'héberger plusieurs sites sur une même machine. Pour créer un site, il faut créer un fichier dans /etc/apache2/sites-available (le site par défaut s'y trouve déjà).
La configuration d'un site se présente sous cette forme :

 &lt;VirtualHost *:80&gt;
        ServerAdmin webmaster@example.org
        ServerName  www.example.org
        ServerAlias foo.example.org bar.example.org
        DocumentRoot /var/www
 
        &lt;Directory /var/www/&gt;
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        &lt;/Directory&gt;
   
 	# Possible values include: debug, info, notice, warn, error, crit,
 	# alert, emerg.
        LogLevel warn
 
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        ErrorLog ${APACHE_LOG_DIR}/error.log
 &lt;/VirtualHost&gt;

=== Hôtes virtuels ===

Le site se place entre deux balises '''&lt;Virtualhost [IP:port]&gt;...&lt;/Virtualhost&gt;'''. Nous remplaçons [IP:port] par l'adresse IP et le port d'écoute du site. Si votre machine est accessible par plusieurs IP, vous pouvez donc mettre plusieurs sites, ayant chacun une adresse IP différente. Si vous voulez que votre site réponde quelque soit l'adresse IP, il suffit de mettre '*', comme dans l'exemple.
Vous pouvez de la même façon avoir des sites différents en fonction du port intérrogé, par exemple un site sur le port 80 et le port 8080.

Les directives ''ServerName'' et ''ServerAlias'' permette de faire des hôtes virtuels, non plus en fonction de l'IP ou du port, mais en fonction du nom de domaine utilisé par le client. Vous pouvez alors héberger plusieurs sites sur le port 80 avec une seule IP, si plusieurs noms de domaines pointent sur cette IP. C'est l'utilisation la plus courante des hôtes virtuels.
''ServerName'' ne prend qu'un seul nom de domaine. Si vous voulez que votre site réponde à plusieurs noms de domaine, il vous faut ajouter les domaines supplémentaires avec ''ServerAlias''.

Enfin, la directive ''DocumentRoot'' indique le chemin du dossier où se trouve le site.

=== Répertoires ===

Les balises '''&lt;Directory [/chemin/vers/dossier] &gt; ... &lt;/Directory&gt;''' permettent de configurer les option du dossier, notamment via la directive ''Options'' :
* ''Indexes'' permet de voir le contenu du dossier avec le navigateur s'il n'y a pas de index.html à la racine
* ''FollowSymLinks'' permet de suivre les liens symboliques
* ''MultiViews'' permet d'avoir des contenus différents en fonction de ce que le navigateur envoie (par exemple dans des langues différentes, comme c'est le cas pour http://www.debian.org)
Pour désactiver une option, il suffit de la faire précéder d'un '-' (par exemple : ''-Indexes'' empêchera de voir le contenu du dossier)

La directive ''AllowOverride'' permet d'autoriser l'utilisation de fichiers .htaccess. Ainsi si vous hébergez un site mais que vous n'en êtes pas le développeur, vous pouvez laisser la possibilité au développeur de configurer un dossier sans lui laisser l'accès au fichier de configuration d'Apache. Il lui suffira de mettre la configuration dans un fichier .htaccess à la racine du dossier. Le fichier est lu à chaque appel du site, le développeur n'a donc pas besoin de vous demander de recharger apache après avoir changé la configuration. Mais c'est donc plus couteux en performances, ainsi qu'en sécurité.
Avec ''AllowOverride None'', les .htaccess sont ignorés. Avec ''AllowOverride All'', ils sont pris en compte.
Vous pouvez aussi n'autoriser que certaines configurations, voir http://httpd.apache.org/docs/2.2/fr/mod/core.html#allowoverride

Order vous permet de choisir comment vous autorisez l'accès à votre site :
* Order Allow,Deny : le site sera accessible si l'adresse est dans une directive Allow from et n'est pas dans une directive Deny from
* Order Deny,Allow : le site sera accessible si l'adresse est dans une directive Allow from ou n'est pas dans une directive Deny from
Ainsi, si vous voulez que votre site soit accessible uniquement à partir de votre réseau local 192.168.0.0/24, vous pouvez mettre au choix :

 Order Allow,Deny
 Allow from 192.168.0.0/24

 Order Deny,Allow
 Deny from all
 Allow from 192.168.0.0/24

Vous pouvez avoir plusieurs balises &lt;Directory&gt; si vous voulez mettre des droits différents sur un sous-dossier de votre site. Il suffit de les mettre à la suite (sans les imbriquer).

=== Logs ===

La directive LogLevel permet de choisir le niveau de verbosité des logs parmi : debug, info, notice, warn, error, crit, alert, emerg.
CustomLog et ErrorLog permettent de choisir l'emplacement des logs. Vous pouvez ainsi utiliser un fichier de logs par site ou le même, au choix.

=== Activation du site ===

Debian fournit deux scripts permettant de facilement activer et désactiver des sites. a2ensite et a2dissite. Une fois votre fichier créé dans /etc/apache2/sites-available, il vous suffit de faire :

 # a2ensite nom_du_fichier

pour activer le site. Ceci crééra un lien dans /etc/apache2/sites-enabled, qui sera lu par apache. Pour le désactiver, il faudra faire :

 # a2dissite nom_du_fichier

Dans les deux cas, n'oubliez pas de recharger la configuration d'apache après :

 # /etc/init.d/apache2 reload


NB : Vous remarquerez que le lien pour le site « default » est ''000-default'''. Ceci est fait de sorte que ce soit le premier à être lu par apache. Ainsi, si sur tous les sites, aucun ''ServerName'' ou ''ServerAlias'' ne correspond à l'URL intérrogé par le client, c'est ce site qu'il lui sera envoyé...

== Ressources ==

http://httpd.apache.org/docs/2.2/fr</text>
      <sha1>horz9p0ey2h7qqwpe0tksgrmb7k0v88</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2477</id>
      <parentid>2475</parentid>
      <timestamp>2010-12-11T16:15:40Z</timestamp>
      <contributor>
        <username>Kna</username>
        <id>35</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="6496">= Installation =

 # aptitude install apache2

La configuration par défaut est déjà fonctionnelle.
Vous pouvez le vérifier avec un navigateur en allant sur http://localhost (ou http://adresse_de_la_machine à partir d'un autre poste). Le message « It works ! » doit apparaitre.
C'est la page par défaut, elle se trouve dans /var/www. Il vous suffit alors de mettre les fichiers de votre site dans ce répertoire pour qu'il soit utilisable...

= Configuration =

== Un site par utilisateur ==
Le mod_userdir est activé par défaut.
Si un utilisateur a dans son répertoire personnel un dossier ~/public_html, il sera accessible à l'adresse http://adresse_de_la_machine/~nom_de_l'utilisateur

== Configuration des sites : Hôtes virtuels ==

Apache fonctionne avec des hôtes virtuels (virtual hosts) pour permettre d'héberger plusieurs sites sur une même machine. Pour créer un site, il faut créer un fichier dans /etc/apache2/sites-available (le site par défaut s'y trouve déjà).
La configuration d'un site se présente sous cette forme :

 &lt;VirtualHost *:80&gt;
        ServerAdmin webmaster@example.org
        ServerName  www.example.org
        ServerAlias foo.example.org bar.example.org
        DocumentRoot /var/www
 
        &lt;Directory /var/www/&gt;
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        &lt;/Directory&gt;
   
 	# Possible values include: debug, info, notice, warn, error, crit,
 	# alert, emerg.
        LogLevel warn
 
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        ErrorLog ${APACHE_LOG_DIR}/error.log
 &lt;/VirtualHost&gt;

=== Hôtes virtuels ===

Le site se place entre deux balises '''&lt;Virtualhost [IP:port]&gt;...&lt;/Virtualhost&gt;'''. Nous remplaçons [IP:port] par l'adresse IP et le port d'écoute du site. Si votre machine est accessible par plusieurs IP, vous pouvez donc mettre plusieurs sites, ayant chacun une adresse IP différente. Si vous voulez que votre site réponde quelque soit l'adresse IP, il suffit de mettre '*', comme dans l'exemple.
Vous pouvez de la même façon avoir des sites différents en fonction du port intérrogé, par exemple un site sur le port 80 et le port 8080.

Les directives ''ServerName'' et ''ServerAlias'' permette de faire des hôtes virtuels, non plus en fonction de l'IP ou du port, mais en fonction du nom de domaine utilisé par le client. Vous pouvez alors héberger plusieurs sites sur le port 80 avec une seule IP, si plusieurs noms de domaines pointent sur cette IP. C'est l'utilisation la plus courante des hôtes virtuels.
''ServerName'' ne prend qu'un seul nom de domaine. Si vous voulez que votre site réponde à plusieurs noms de domaine, il vous faut ajouter les domaines supplémentaires avec ''ServerAlias''.

Enfin, la directive ''DocumentRoot'' indique le chemin du dossier où se trouve le site.

=== Répertoires ===

Les balises '''&lt;Directory [/chemin/vers/dossier] &gt; ... &lt;/Directory&gt;''' permettent de configurer les option du dossier, notamment via la directive ''Options'' :
* ''Indexes'' permet de voir le contenu du dossier avec le navigateur s'il n'y a pas de index.html à la racine
* ''FollowSymLinks'' permet de suivre les liens symboliques
* ''MultiViews'' permet d'avoir des contenus différents en fonction de ce que le navigateur envoie (par exemple dans des langues différentes, comme c'est le cas pour http://www.debian.org)
Pour désactiver une option, il suffit de la faire précéder d'un '-' (par exemple : ''-Indexes'' empêchera de voir le contenu du dossier)

La directive ''AllowOverride'' permet d'autoriser l'utilisation de fichiers .htaccess. Ainsi si vous hébergez un site mais que vous n'en êtes pas le développeur, vous pouvez laisser la possibilité au développeur de configurer un dossier sans lui laisser l'accès au fichier de configuration d'Apache. Il lui suffira de mettre la configuration dans un fichier .htaccess à la racine du dossier. Le fichier est lu à chaque appel du site, le développeur n'a donc pas besoin de vous demander de recharger apache après avoir changé la configuration. Mais c'est donc plus couteux en performances, ainsi qu'en sécurité.
Avec ''AllowOverride None'', les .htaccess sont ignorés. Avec ''AllowOverride All'', ils sont pris en compte.
Vous pouvez aussi n'autoriser que certaines configurations, voir http://httpd.apache.org/docs/2.2/fr/mod/core.html#allowoverride

Order vous permet de choisir comment vous autorisez l'accès à votre site :
* ''Order Allow,Deny'' : le site sera accessible si l'adresse est dans une directive ''Allow from'' et n'est pas dans une directive ''Deny from''
* ''Order Deny,Allow'' : le site sera accessible si l'adresse est dans une directive ''Allow from'' ou n'est pas dans une directive ''Deny from''
Ainsi, si vous voulez que votre site soit accessible uniquement à partir de votre réseau local 192.168.0.0/24, vous pouvez mettre au choix :

 Order Allow,Deny
 Allow from 192.168.0.0/24

 Order Deny,Allow
 Deny from all
 Allow from 192.168.0.0/24


Vous pouvez avoir plusieurs balises '''&lt;Directory&gt;''' si vous voulez mettre des droits différents sur un sous-dossier de votre site. Il suffit de les mettre à la suite (sans les imbriquer).

=== Logs ===

La directive ''LogLevel'' permet de choisir le niveau de verbosité des logs parmi : debug, info, notice, warn, error, crit, alert, emerg.
''CustomLog'' et ''ErrorLog'' permettent de choisir l'emplacement des logs. Vous pouvez ainsi utiliser un fichier de logs par site ou le même, au choix.

=== Activation du site ===

Debian fournit deux scripts permettant de facilement activer et désactiver des sites. a2ensite et a2dissite. Une fois votre fichier créé dans /etc/apache2/sites-available, il vous suffit de faire :

 # a2ensite nom_du_fichier

pour activer le site. Ceci crééra un lien dans /etc/apache2/sites-enabled, qui sera lu par apache. Pour le désactiver, il faudra faire :

 # a2dissite nom_du_fichier

Dans les deux cas, n'oubliez pas de recharger la configuration d'apache après :

 # /etc/init.d/apache2 reload


NB : Vous remarquerez que le lien pour le site « default » est ''000-default'''. Ceci est fait de sorte que ce soit le premier à être lu par apache. Ainsi, si sur tous les sites, aucun ''ServerName'' ou ''ServerAlias'' ne correspond à l'URL intérrogé par le client, c'est ce site qu'il lui sera envoyé...

== Ressources ==

http://httpd.apache.org/docs/2.2/fr</text>
      <sha1>i0879krgftshzfvb514e3wwsjilox99</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2479</id>
      <parentid>2477</parentid>
      <timestamp>2010-12-11T18:49:19Z</timestamp>
      <contributor>
        <username>Kna</username>
        <id>35</id>
      </contributor>
      <comment>authentification</comment>
      <text xml:space="preserve" bytes="8241">= Installation =

 # aptitude install apache2

La configuration par défaut est déjà fonctionnelle.
Vous pouvez le vérifier avec un navigateur en allant sur http://localhost (ou http://adresse_de_la_machine à partir d'un autre poste). Le message « It works ! » doit apparaitre.
C'est la page par défaut, elle se trouve dans /var/www. Il vous suffit alors de mettre les fichiers de votre site dans ce répertoire pour qu'il soit utilisable...

= Configuration =

== Un site par utilisateur ==
Le mod_userdir est activé par défaut.
Si un utilisateur a dans son répertoire personnel un dossier ~/public_html, il sera accessible à l'adresse http://adresse_de_la_machine/~nom_de_l'utilisateur

== Configuration des sites : Hôtes virtuels ==

Apache fonctionne avec des hôtes virtuels (virtual hosts) pour permettre d'héberger plusieurs sites sur une même machine. Pour créer un site, il faut créer un fichier dans /etc/apache2/sites-available (le site par défaut s'y trouve déjà).
La configuration d'un site se présente sous cette forme :

 &lt;VirtualHost *:80&gt;
        ServerAdmin webmaster@example.org
        ServerName  www.example.org
        ServerAlias foo.example.org bar.example.org
        DocumentRoot /var/www
 
        &lt;Directory /var/www/&gt;
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        &lt;/Directory&gt;
   
 	# Possible values include: debug, info, notice, warn, error, crit,
 	# alert, emerg.
        LogLevel warn
 
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        ErrorLog ${APACHE_LOG_DIR}/error.log
 &lt;/VirtualHost&gt;

=== Hôtes virtuels ===

Le site se place entre deux balises '''&lt;Virtualhost [IP:port]&gt;...&lt;/Virtualhost&gt;'''. Nous remplaçons [IP:port] par l'adresse IP et le port d'écoute du site. Si votre machine est accessible par plusieurs IP, vous pouvez donc mettre plusieurs sites, ayant chacun une adresse IP différente. Si vous voulez que votre site réponde quelque soit l'adresse IP, il suffit de mettre '*', comme dans l'exemple.
Vous pouvez de la même façon avoir des sites différents en fonction du port intérrogé, par exemple un site sur le port 80 et le port 8080.

Les directives ''ServerName'' et ''ServerAlias'' permette de faire des hôtes virtuels, non plus en fonction de l'IP ou du port, mais en fonction du nom de domaine utilisé par le client. Vous pouvez alors héberger plusieurs sites sur le port 80 avec une seule IP, si plusieurs noms de domaines pointent sur cette IP. C'est l'utilisation la plus courante des hôtes virtuels.
''ServerName'' ne prend qu'un seul nom de domaine. Si vous voulez que votre site réponde à plusieurs noms de domaine, il vous faut ajouter les domaines supplémentaires avec ''ServerAlias''.

Enfin, la directive ''DocumentRoot'' indique le chemin du dossier où se trouve le site.

=== Répertoires ===

Les balises '''&lt;Directory [/chemin/vers/dossier] &gt; ... &lt;/Directory&gt;''' permettent de configurer les option du dossier, notamment via la directive ''Options'' :
* ''Indexes'' permet de voir le contenu du dossier avec le navigateur s'il n'y a pas de index.html à la racine
* ''FollowSymLinks'' permet de suivre les liens symboliques
* ''MultiViews'' permet d'avoir des contenus différents en fonction de ce que le navigateur envoie (par exemple dans des langues différentes, comme c'est le cas pour http://www.debian.org)
Pour désactiver une option, il suffit de la faire précéder d'un '-' (par exemple : ''-Indexes'' empêchera de voir le contenu du dossier)

La directive ''AllowOverride'' permet d'autoriser l'utilisation de fichiers .htaccess. Ainsi si vous hébergez un site mais que vous n'en êtes pas le développeur, vous pouvez laisser la possibilité au développeur de configurer un dossier sans lui laisser l'accès au fichier de configuration d'Apache. Il lui suffira de mettre la configuration dans un fichier .htaccess à la racine du dossier. Le fichier est lu à chaque appel du site, le développeur n'a donc pas besoin de vous demander de recharger apache après avoir changé la configuration. Mais c'est donc plus couteux en performances, ainsi qu'en sécurité.
Avec ''AllowOverride None'', les .htaccess sont ignorés. Avec ''AllowOverride All'', ils sont pris en compte.
Vous pouvez aussi n'autoriser que certaines configurations, voir http://httpd.apache.org/docs/2.2/fr/mod/core.html#allowoverride

Order vous permet de choisir comment vous autorisez l'accès à votre site :
* ''Order Allow,Deny'' : le site sera accessible si l'adresse est dans une directive ''Allow from'' et n'est pas dans une directive ''Deny from''
* ''Order Deny,Allow'' : le site sera accessible si l'adresse est dans une directive ''Allow from'' ou n'est pas dans une directive ''Deny from''
Ainsi, si vous voulez que votre site soit accessible uniquement à partir de votre réseau local 192.168.0.0/24, vous pouvez mettre au choix :

 Order Allow,Deny
 Allow from 192.168.0.0/24

 Order Deny,Allow
 Deny from all
 Allow from 192.168.0.0/24


Vous pouvez avoir plusieurs balises '''&lt;Directory&gt;''' si vous voulez mettre des droits différents sur un sous-dossier de votre site. Il suffit de les mettre à la suite (sans les imbriquer).

=== Logs ===

La directive ''LogLevel'' permet de choisir le niveau de verbosité des logs parmi : debug, info, notice, warn, error, crit, alert, emerg.
''CustomLog'' et ''ErrorLog'' permettent de choisir l'emplacement des logs. Vous pouvez ainsi utiliser un fichier de logs par site ou le même, au choix.

=== Activation du site ===

Debian fournit deux scripts permettant de facilement activer et désactiver des sites. a2ensite et a2dissite. Une fois votre fichier créé dans /etc/apache2/sites-available, il vous suffit de faire :

 # a2ensite nom_du_fichier

pour activer le site. Ceci crééra un lien dans /etc/apache2/sites-enabled, qui sera lu par apache. Pour le désactiver, il faudra faire :

 # a2dissite nom_du_fichier

Dans les deux cas, n'oubliez pas de recharger la configuration d'apache après :

 # /etc/init.d/apache2 reload


NB : Vous remarquerez que le lien pour le site « default » est ''000-default'''. Ceci est fait de sorte que ce soit le premier à être lu par apache. Ainsi, si sur tous les sites, aucun ''ServerName'' ou ''ServerAlias'' ne correspond à l'URL intérrogé par le client, c'est ce site qu'il lui sera envoyé...

== Authentification ==

Pour qu'un dossier ne soit accessible à certaines personnes, il faut créer un fichier de mots de passe. Apache fournit l'utilitaire '''htpasswd''' pour celà.
Pour créer le fichier, il faut utiliser l'option ''-c'' :

 # htpasswd -c /chemin/vers/fichier/passwd &lt;nom_de_l'utilisateur&gt;

'''htpasswd''' vous demande alors le mot de passe de l'utilisateur.
Le fichier htpasswd doit être lisible par l'utilisateur d'apache (www-data sous debian).

Pour restreindre un dossier à cet utilisateur, il faut alors mettre dans le '''&lt;Directory&gt;''' :

 AuthType Basic
 AuthName &quot;Accès privé&quot;
 AuthUserFile /chemin/vers/fichier/passwd
 Require user &lt;nom_de_l'utilisateur&gt;

* ''AuthType Basic'' indique qu'on utilise une authentification basique
* ''AuthName'' indique le nom de l'identificateur, qui s'affiche lorsque le client doit s'identifier
* ''AuthUserFile'' indique le chemin vers le fichier de mot de passe
* ''Require'' indique qui peut accéder au dossier.

Si vous voulez autoriser plusieurs utilisateurs, il vous suffit de lancer '''htpasswd''' (sans ''-c'' cette fois) pour rajouter un utilisateur.
Il faudra alors mettre, à la place de ''Require user'' :

 Require valid-user

Si vous utilisez le même fichier de mots de passe pour plusieurs sites, il vous est possible de faire des groupes d'utilisateurs, en créant un fichier groupe de la forme

 generic: foo bar baz
 crypt: alice bob

Il vous suffit alors d'indiquer :

 AuthGroupFile /chemin/vers/fichier/de/groupe
 Require group crypt

pour permettre seulement à alice et bob d'accéder au dossier, et non à foo, bar et baz...

= Ressources =

La documentation d'apache est très bien faite et pour une bonne partie traduite en français, n'hésitez pas à l'utiliser :
http://httpd.apache.org/docs/2.2/fr</text>
      <sha1>kijruwb1nx2e8uq3mi2o304d3wxqo4v</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2529</id>
      <parentid>2479</parentid>
      <timestamp>2010-12-25T17:21:02Z</timestamp>
      <contributor>
        <username>Kna</username>
        <id>35</id>
      </contributor>
      <comment>CGI+modules</comment>
      <text xml:space="preserve" bytes="11270">= Installation =

 # aptitude install apache2

La configuration par défaut est déjà fonctionnelle.
Vous pouvez le vérifier avec un navigateur en allant sur http://localhost (ou http://adresse_de_la_machine à partir d'un autre poste). Le message « It works ! » doit apparaitre.
C'est la page par défaut, elle se trouve dans /var/www. Il vous suffit alors de mettre les fichiers de votre site dans ce répertoire pour qu'il soit utilisable...

= Configuration =

== Configuration des sites : Hôtes virtuels ==

Apache fonctionne avec des hôtes virtuels (virtual hosts) pour permettre d'héberger plusieurs sites sur une même machine. Pour créer un site, il faut créer un fichier dans /etc/apache2/sites-available (le site par défaut s'y trouve déjà).
La configuration d'un site se présente sous cette forme :

 &lt;VirtualHost *:80&gt;
        ServerAdmin webmaster@example.org
        ServerName  www.example.org
        ServerAlias foo.example.org bar.example.org
        DocumentRoot /var/www
 
        &lt;Directory /var/www/&gt;
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        &lt;/Directory&gt;
   
 	# Possible values include: debug, info, notice, warn, error, crit,
 	# alert, emerg.
        LogLevel warn
 
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        ErrorLog ${APACHE_LOG_DIR}/error.log
 &lt;/VirtualHost&gt;

=== Hôtes virtuels ===

Le site se place entre deux balises '''&lt;Virtualhost [IP:port]&gt;...&lt;/Virtualhost&gt;'''. Nous remplaçons [IP:port] par l'adresse IP et le port d'écoute du site. Si votre machine est accessible par plusieurs IP, vous pouvez donc mettre plusieurs sites, ayant chacun une adresse IP différente. Si vous voulez que votre site réponde quelque soit l'adresse IP, il suffit de mettre '*', comme dans l'exemple.
Vous pouvez de la même façon avoir des sites différents en fonction du port intérrogé, par exemple un site sur le port 80 et le port 8080.

Les directives ''ServerName'' et ''ServerAlias'' permette de faire des hôtes virtuels, non plus en fonction de l'IP ou du port, mais en fonction du nom de domaine utilisé par le client. Vous pouvez alors héberger plusieurs sites sur le port 80 avec une seule IP, si plusieurs noms de domaines pointent sur cette IP. C'est l'utilisation la plus courante des hôtes virtuels.
''ServerName'' ne prend qu'un seul nom de domaine. Si vous voulez que votre site réponde à plusieurs noms de domaine, il vous faut ajouter les domaines supplémentaires avec ''ServerAlias''.

Enfin, la directive ''DocumentRoot'' indique le chemin du dossier où se trouve le site.

=== Répertoires ===

Les balises '''&lt;Directory [/chemin/vers/dossier] &gt; ... &lt;/Directory&gt;''' permettent de configurer les option du dossier, notamment via la directive ''Options'' :
* ''Indexes'' permet de voir le contenu du dossier avec le navigateur s'il n'y a pas de index.html à la racine
* ''FollowSymLinks'' permet de suivre les liens symboliques
* ''MultiViews'' permet d'avoir des contenus différents en fonction de ce que le navigateur envoie (par exemple dans des langues différentes, comme c'est le cas pour http://www.debian.org)
Pour désactiver une option, il suffit de la faire précéder d'un '-' (par exemple : ''-Indexes'' empêchera de voir le contenu du dossier)

La directive ''AllowOverride'' permet d'autoriser l'utilisation de fichiers .htaccess. Ainsi si vous hébergez un site mais que vous n'en êtes pas le développeur, vous pouvez laisser la possibilité au développeur de configurer un dossier sans lui laisser l'accès au fichier de configuration d'Apache. Il lui suffira de mettre la configuration dans un fichier .htaccess à la racine du dossier. Le fichier est lu à chaque appel du site, le développeur n'a donc pas besoin de vous demander de recharger apache après avoir changé la configuration. Mais c'est donc plus couteux en performances, ainsi qu'en sécurité.
Avec ''AllowOverride None'', les .htaccess sont ignorés. Avec ''AllowOverride All'', ils sont pris en compte.
Vous pouvez aussi n'autoriser que certaines configurations, voir http://httpd.apache.org/docs/2.2/fr/mod/core.html#allowoverride

Order vous permet de choisir comment vous autorisez l'accès à votre site :
* ''Order Allow,Deny'' : le site sera accessible si l'adresse est dans une directive ''Allow from'' et n'est pas dans une directive ''Deny from''
* ''Order Deny,Allow'' : le site sera accessible si l'adresse est dans une directive ''Allow from'' ou n'est pas dans une directive ''Deny from''
Ainsi, si vous voulez que votre site soit accessible uniquement à partir de votre réseau local 192.168.0.0/24, vous pouvez mettre au choix :

 Order Allow,Deny
 Allow from 192.168.0.0/24

 Order Deny,Allow
 Deny from all
 Allow from 192.168.0.0/24


Vous pouvez avoir plusieurs balises '''&lt;Directory&gt;''' si vous voulez mettre des droits différents sur un sous-dossier de votre site. Il suffit de les mettre à la suite (sans les imbriquer).

=== Logs ===

La directive ''LogLevel'' permet de choisir le niveau de verbosité des logs parmi : debug, info, notice, warn, error, crit, alert, emerg.
''CustomLog'' et ''ErrorLog'' permettent de choisir l'emplacement des logs. Vous pouvez ainsi utiliser un fichier de logs par site ou le même, au choix.

=== Activation du site ===

Debian fournit deux scripts permettant de facilement activer et désactiver des sites. a2ensite et a2dissite. Une fois votre fichier créé dans /etc/apache2/sites-available, il vous suffit de faire :

 # a2ensite nom_du_fichier

pour activer le site. Ceci crééra un lien dans /etc/apache2/sites-enabled, qui sera lu par apache. Pour le désactiver, il faudra faire :

 # a2dissite nom_du_fichier

Dans les deux cas, n'oubliez pas de recharger la configuration d'apache après :

 # /etc/init.d/apache2 reload


NB : Vous remarquerez que le lien pour le site « default » est ''000-default'''. Ceci est fait de sorte que ce soit le premier à être lu par apache. Ainsi, si sur tous les sites, aucun ''ServerName'' ou ''ServerAlias'' ne correspond à l'URL intérrogé par le client, c'est ce site qu'il lui sera envoyé...

== Authentification ==

Pour qu'un dossier ne soit accessible à certaines personnes, il faut créer un fichier de mots de passe. Apache fournit l'utilitaire '''htpasswd''' pour celà.
Pour créer le fichier, il faut utiliser l'option ''-c'' :

 # htpasswd -c /chemin/vers/fichier/passwd &lt;nom_de_l'utilisateur&gt;

'''htpasswd''' vous demande alors le mot de passe de l'utilisateur.
Le fichier htpasswd doit être lisible par l'utilisateur d'apache (www-data sous debian).

Pour restreindre un dossier à cet utilisateur, il faut alors mettre dans le '''&lt;Directory&gt;''' :

 AuthType Basic
 AuthName &quot;Accès privé&quot;
 AuthUserFile /chemin/vers/fichier/passwd
 Require user &lt;nom_de_l'utilisateur&gt;

* ''AuthType Basic'' indique qu'on utilise une authentification basique
* ''AuthName'' indique le nom de l'identificateur, qui s'affiche lorsque le client doit s'identifier
* ''AuthUserFile'' indique le chemin vers le fichier de mot de passe
* ''Require'' indique qui peut accéder au dossier.

Si vous voulez autoriser plusieurs utilisateurs, il vous suffit de lancer '''htpasswd''' (sans ''-c'' cette fois) pour rajouter un utilisateur.
Il faudra alors mettre, à la place de ''Require user'' :

 Require valid-user

Si vous utilisez le même fichier de mots de passe pour plusieurs sites, il vous est possible de faire des groupes d'utilisateurs, en créant un fichier groupe de la forme

 generic: foo bar baz
 crypt: alice bob

Il vous suffit alors d'indiquer :

 AuthGroupFile /chemin/vers/fichier/de/groupe
 Require group crypt

pour permettre seulement à alice et bob d'accéder au dossier, et non à foo, bar et baz...

== Contenu dynamique avec CGI ==

Le CGI permet de faire du web dynamique facilement. Le principe est simple : apache exécute un script ou un programme qui va générer le code HTML d'une page.
Le script doit être exécutable par l'utilisateur www-data, et écrire sur sa sortie standard :

 Content type text/html; charset=utf-8

suivi du code HTML de la page à afficher.

'''Attention :''' À chaque interrogation de la page, apache lance un nouveau processus qui exécute le script, ce qui consomme des ressources systèmes à chaque fois.
On peut limiter l'utilisation des ressources avec Fast-CGI, mais le mieux est d'utiliser un module qui permettra de lancer des scripts avec un interpréteur intégré à apache, sans créer de nouveau processus à chaque fois. On trouvera par exemple mod_php (pour les scripts php) ou mod_perl (pour les scripts perl). C'est ce qui est le plus utilisé aujourd'hui...

Pour utiliser du CGI avec Apache, il y a deux méthodes. La première est d'ajouter dans '''&lt;Directory&gt;''' :

 Options +ExecCGI
 Add-Handler cgi-script .cgi .pl

Ainsi les script nommés en .cgi ou .pl seront exécutés au lieu d'être affiché.
La seconde méthode est plus sécurisée car elle permet de mettre les scripts dans un dossier à part, qui n'est pas dans la racine du site. Pour celà, on met dans '''&lt;VirtualHost&gt;'''

 ScriptAlias /cgi-bin/ /chemin/vers/scripts/
 &lt;Directory &quot;/chemin/vers/scripts&quot;&gt;
         AllowOverride None
         Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
         Order allow,deny
         Allow from all
  &lt;/Directory&gt;

En allant à http://adresse_du_site/cgi-bin on est alors redirigé vers le dossier où sont situés les scripts CGI.


== Modules ==

=== Les modules apache ===

Apache permet d'ajouter des modules qui apportent de nouvelles fonctionnalités.
Certains sont installés et activés par défaut, comme par exemple le module auth_basic qui permet l'authentification ou le mod_deflate qui permet de compresser certains fichiers.

Les modules sont installés dans /etc/apache2/mods-available. Pour chaque module, vous trouverez un fichier .load qui contient la directive pour charger le module, et un fichier .conf qui contient sa configuration (que vous pouvez adapter à vos besoins).

On active et désactive un module avec les commandes '''a2enmod''' et '''a2dismod''', qui crééront des liens dans /etc/apache2/sites-enabled. Il vous faudra redémarrer apache pour que ce soit pris en compte :

 # /etc/init.d/apache2 restart

=== userdir : un site par utilisateur ===

Le module mod_userdir permet à chaque utilisateur d'avoir un site. Pour celà il faut activer le module :

 # a2enmod userdir

Une fois le module activé, chaque utilisateur peut placer un site dans un dossier  ~/public_html.
Par exemple, http://adresse_du_site/~foo pointera vers /home/foo/public_html.

Pour le désactiver, il suffit de faire

 # a2dismod userdir

(n'oubliez pas de redémarrer apache)

=== suexec : droits plus fin sur les CGI ===

Une fois activé, mod_suexec permet de lancer les scripts CGI avec les droits de l'utilisateur auquel appartient le script, au lieu de www-data.
Ainsi, vous pouvez donner donner des droits sur le systèmes à certains utilisateurs, et pas à d'autres.


= Ressources =

La documentation d'apache est très bien faite et pour une bonne partie traduite en français, n'hésitez pas à l'utiliser :
http://httpd.apache.org/docs/2.2/fr</text>
      <sha1>06eyozxw6fb4izt41ahmuuxgonydpwo</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2673</id>
      <parentid>2529</parentid>
      <timestamp>2011-02-06T13:36:20Z</timestamp>
      <contributor>
        <username>Kna</username>
        <id>35</id>
      </contributor>
      <comment>SSL</comment>
      <text xml:space="preserve" bytes="12664">= Installation =

 # aptitude install apache2

La configuration par défaut est déjà fonctionnelle.
Vous pouvez le vérifier avec un navigateur en allant sur http://localhost (ou http://adresse_de_la_machine à partir d'un autre poste). Le message « It works ! » doit apparaitre.
C'est la page par défaut, elle se trouve dans /var/www. Il vous suffit alors de mettre les fichiers de votre site dans ce répertoire pour qu'il soit utilisable...

= Configuration =

== Configuration des sites : Hôtes virtuels ==

Apache fonctionne avec des hôtes virtuels (virtual hosts) pour permettre d'héberger plusieurs sites sur une même machine. Pour créer un site, il faut créer un fichier dans /etc/apache2/sites-available (le site par défaut s'y trouve déjà).
La configuration d'un site se présente sous cette forme :

 &lt;VirtualHost *:80&gt;
        ServerAdmin webmaster@example.org
        ServerName  www.example.org
        ServerAlias foo.example.org bar.example.org
        DocumentRoot /var/www
 
        &lt;Directory /var/www/&gt;
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        &lt;/Directory&gt;
   
 	# Possible values include: debug, info, notice, warn, error, crit,
 	# alert, emerg.
        LogLevel warn
 
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        ErrorLog ${APACHE_LOG_DIR}/error.log
 &lt;/VirtualHost&gt;

=== Hôtes virtuels ===

Le site se place entre deux balises '''&lt;Virtualhost [IP:port]&gt;...&lt;/Virtualhost&gt;'''. Nous remplaçons [IP:port] par l'adresse IP et le port d'écoute du site. Si votre machine est accessible par plusieurs IP, vous pouvez donc mettre plusieurs sites, ayant chacun une adresse IP différente. Si vous voulez que votre site réponde quelque soit l'adresse IP, il suffit de mettre '*', comme dans l'exemple.
Vous pouvez de la même façon avoir des sites différents en fonction du port intérrogé, par exemple un site sur le port 80 et le port 8080.

Les directives ''ServerName'' et ''ServerAlias'' permette de faire des hôtes virtuels, non plus en fonction de l'IP ou du port, mais en fonction du nom de domaine utilisé par le client. Vous pouvez alors héberger plusieurs sites sur le port 80 avec une seule IP, si plusieurs noms de domaines pointent sur cette IP. C'est l'utilisation la plus courante des hôtes virtuels.
''ServerName'' ne prend qu'un seul nom de domaine. Si vous voulez que votre site réponde à plusieurs noms de domaine, il vous faut ajouter les domaines supplémentaires avec ''ServerAlias''.

Enfin, la directive ''DocumentRoot'' indique le chemin du dossier où se trouve le site.

=== Répertoires ===

Les balises '''&lt;Directory [/chemin/vers/dossier] &gt; ... &lt;/Directory&gt;''' permettent de configurer les option du dossier, notamment via la directive ''Options'' :
* ''Indexes'' permet de voir le contenu du dossier avec le navigateur s'il n'y a pas de index.html à la racine
* ''FollowSymLinks'' permet de suivre les liens symboliques
* ''MultiViews'' permet d'avoir des contenus différents en fonction de ce que le navigateur envoie (par exemple dans des langues différentes, comme c'est le cas pour http://www.debian.org)
Pour désactiver une option, il suffit de la faire précéder d'un '-' (par exemple : ''-Indexes'' empêchera de voir le contenu du dossier)

La directive ''AllowOverride'' permet d'autoriser l'utilisation de fichiers .htaccess. Ainsi si vous hébergez un site mais que vous n'en êtes pas le développeur, vous pouvez laisser la possibilité au développeur de configurer un dossier sans lui laisser l'accès au fichier de configuration d'Apache. Il lui suffira de mettre la configuration dans un fichier .htaccess à la racine du dossier. Le fichier est lu à chaque appel du site, le développeur n'a donc pas besoin de vous demander de recharger apache après avoir changé la configuration. Mais c'est donc plus couteux en performances, ainsi qu'en sécurité.
Avec ''AllowOverride None'', les .htaccess sont ignorés. Avec ''AllowOverride All'', ils sont pris en compte.
Vous pouvez aussi n'autoriser que certaines configurations, voir http://httpd.apache.org/docs/2.2/fr/mod/core.html#allowoverride

Order vous permet de choisir comment vous autorisez l'accès à votre site :
* ''Order Allow,Deny'' : le site sera accessible si l'adresse est dans une directive ''Allow from'' et n'est pas dans une directive ''Deny from''
* ''Order Deny,Allow'' : le site sera accessible si l'adresse est dans une directive ''Allow from'' ou n'est pas dans une directive ''Deny from''
Ainsi, si vous voulez que votre site soit accessible uniquement à partir de votre réseau local 192.168.0.0/24, vous pouvez mettre au choix :

 Order Allow,Deny
 Allow from 192.168.0.0/24

 Order Deny,Allow
 Deny from all
 Allow from 192.168.0.0/24


Vous pouvez avoir plusieurs balises '''&lt;Directory&gt;''' si vous voulez mettre des droits différents sur un sous-dossier de votre site. Il suffit de les mettre à la suite (sans les imbriquer).

=== Logs ===

La directive ''LogLevel'' permet de choisir le niveau de verbosité des logs parmi : debug, info, notice, warn, error, crit, alert, emerg.
''CustomLog'' et ''ErrorLog'' permettent de choisir l'emplacement des logs. Vous pouvez ainsi utiliser un fichier de logs par site ou le même, au choix.

=== Activation du site ===

Debian fournit deux scripts permettant de facilement activer et désactiver des sites. a2ensite et a2dissite. Une fois votre fichier créé dans /etc/apache2/sites-available, il vous suffit de faire :

 # a2ensite nom_du_fichier

pour activer le site. Ceci crééra un lien dans /etc/apache2/sites-enabled, qui sera lu par apache. Pour le désactiver, il faudra faire :

 # a2dissite nom_du_fichier

Dans les deux cas, n'oubliez pas de recharger la configuration d'apache après :

 # /etc/init.d/apache2 reload


NB : Vous remarquerez que le lien pour le site « default » est ''000-default'''. Ceci est fait de sorte que ce soit le premier à être lu par apache. Ainsi, si sur tous les sites, aucun ''ServerName'' ou ''ServerAlias'' ne correspond à l'URL intérrogé par le client, c'est ce site qu'il lui sera envoyé...

== Authentification ==

Pour qu'un dossier ne soit accessible à certaines personnes, il faut créer un fichier de mots de passe. Apache fournit l'utilitaire '''htpasswd''' pour celà.
Pour créer le fichier, il faut utiliser l'option ''-c'' :

 # htpasswd -c /chemin/vers/fichier/passwd &lt;nom_de_l'utilisateur&gt;

'''htpasswd''' vous demande alors le mot de passe de l'utilisateur.
Le fichier htpasswd doit être lisible par l'utilisateur d'apache (www-data sous debian).

Pour restreindre un dossier à cet utilisateur, il faut alors mettre dans le '''&lt;Directory&gt;''' :

 AuthType Basic
 AuthName &quot;Accès privé&quot;
 AuthUserFile /chemin/vers/fichier/passwd
 Require user &lt;nom_de_l'utilisateur&gt;

* ''AuthType Basic'' indique qu'on utilise une authentification basique
* ''AuthName'' indique le nom de l'identificateur, qui s'affiche lorsque le client doit s'identifier
* ''AuthUserFile'' indique le chemin vers le fichier de mot de passe
* ''Require'' indique qui peut accéder au dossier.

Si vous voulez autoriser plusieurs utilisateurs, il vous suffit de lancer '''htpasswd''' (sans ''-c'' cette fois) pour rajouter un utilisateur.
Il faudra alors mettre, à la place de ''Require user'' :

 Require valid-user

Si vous utilisez le même fichier de mots de passe pour plusieurs sites, il vous est possible de faire des groupes d'utilisateurs, en créant un fichier groupe de la forme

 generic: foo bar baz
 crypt: alice bob

Il vous suffit alors d'indiquer :

 AuthGroupFile /chemin/vers/fichier/de/groupe
 Require group crypt

pour permettre seulement à alice et bob d'accéder au dossier, et non à foo, bar et baz...

== Contenu dynamique avec CGI ==

Le CGI permet de faire du web dynamique facilement. Le principe est simple : apache exécute un script ou un programme qui va générer le code HTML d'une page.
Le script doit être exécutable par l'utilisateur www-data, et écrire sur sa sortie standard :

 Content type text/html; charset=utf-8

suivi du code HTML de la page à afficher.

'''Attention :''' À chaque interrogation de la page, apache lance un nouveau processus qui exécute le script, ce qui consomme des ressources systèmes à chaque fois.
On peut limiter l'utilisation des ressources avec Fast-CGI, mais le mieux est d'utiliser un module qui permettra de lancer des scripts avec un interpréteur intégré à apache, sans créer de nouveau processus à chaque fois. On trouvera par exemple mod_php (pour les scripts php) ou mod_perl (pour les scripts perl). C'est ce qui est le plus utilisé aujourd'hui...

Pour utiliser du CGI avec Apache, il y a deux méthodes. La première est d'ajouter dans '''&lt;Directory&gt;''' :

 Options +ExecCGI
 Add-Handler cgi-script .cgi .pl

Ainsi les script nommés en .cgi ou .pl seront exécutés au lieu d'être affiché.
La seconde méthode est plus sécurisée car elle permet de mettre les scripts dans un dossier à part, qui n'est pas dans la racine du site. Pour celà, on met dans '''&lt;VirtualHost&gt;'''

 ScriptAlias /cgi-bin/ /chemin/vers/scripts/
 &lt;Directory &quot;/chemin/vers/scripts&quot;&gt;
         AllowOverride None
         Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
         Order allow,deny
         Allow from all
  &lt;/Directory&gt;

En allant à http://adresse_du_site/cgi-bin on est alors redirigé vers le dossier où sont situés les scripts CGI.


== Modules ==

=== Les modules apache ===

Apache permet d'ajouter des modules qui apportent de nouvelles fonctionnalités.
Certains sont installés et activés par défaut, comme par exemple le module auth_basic qui permet l'authentification ou le mod_deflate qui permet de compresser certains fichiers.

Les modules sont installés dans /etc/apache2/mods-available. Pour chaque module, vous trouverez un fichier .load qui contient la directive pour charger le module, et un fichier .conf qui contient sa configuration (que vous pouvez adapter à vos besoins).

On active et désactive un module avec les commandes '''a2enmod''' et '''a2dismod''', qui crééront des liens dans /etc/apache2/sites-enabled. Il vous faudra redémarrer apache pour que ce soit pris en compte :

 # /etc/init.d/apache2 restart

=== userdir : un site par utilisateur ===

Le module mod_userdir permet à chaque utilisateur d'avoir un site. Pour celà il faut activer le module :

 # a2enmod userdir

Une fois le module activé, chaque utilisateur peut placer un site dans un dossier  ~/public_html.
Par exemple, http://adresse_du_site/~foo pointera vers /home/foo/public_html.

Pour le désactiver, il suffit de faire

 # a2dismod userdir

(n'oubliez pas de redémarrer apache)

=== suexec : droits plus fin sur les CGI ===

Une fois activé, mod_suexec permet de lancer les scripts CGI avec les droits de l'utilisateur auquel appartient le script, au lieu de www-data.
Ainsi, vous pouvez donner donner des droits sur le systèmes à certains utilisateurs, et pas à d'autres.

=== Autres modules ===

En plus des modules installés par défaut dans /etc/apache2/mods-available, il vous est possible d'installer des modules supplémentaires via APT.
Voyez le résultat de :

 aptitude search ^libapache2-mod

pour avoir la liste des modules disponibles, parmi lesquels :

*mod_php : pour faire des sites dynamiques en php
*mod_perl : pour faire des sites dynamiques en perl
*mod_evasive : apporte une protection contre les attaques DOS
*et plein d'autres...

== Chiffrement avec SSL ==

Pour utiliser SSL avec Apache, il vous faut obtenir un certificat SSL.
Un certificat autosigné vous est fourni lors de l'installation d'apache dans /etc/ssl/certs (ssl-cert-snakeoil.pem pour le certificat et ssl-cert-snakeoil.key pour la clé).
Cependant, vous souhaiterez probablement que le certificat corresponde à l'adresse de votre site. Vous pouvez alors en créer un avec [[openssl|openssl]] ou en obtenir un auprès d'une autorité de certification.

Une fois votre certificat obtenu, il vous suffit de créer un vhost sur le port 443, en y ajoutant les directives suivantes :

 SSL Engine On
 SSLCertificateFile    /chemin/vers/certificat
 SSLCertificateKeyFile /chemin/vers/clé

Le vhost fonctionnera alors en SSL.
Vous pouvez regarder les commentaires du vhost SSL par défaut (/etc/apache2/sites-available/default-ssl) pour voir les autres options disponibles avec SSL.

= Ressources =

La documentation d'apache est très bien faite et pour une bonne partie traduite en français, n'hésitez pas à l'utiliser :
http://httpd.apache.org/docs/2.2/fr</text>
      <sha1>i23yqzfakbxr4wdv3q4uejf4g0opj3z</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3491</id>
      <parentid>2673</parentid>
      <timestamp>2011-10-16T10:13:21Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>/* Chiffrement avec SSL */</comment>
      <text xml:space="preserve" bytes="12760">= Installation =

 # aptitude install apache2

La configuration par défaut est déjà fonctionnelle.
Vous pouvez le vérifier avec un navigateur en allant sur http://localhost (ou http://adresse_de_la_machine à partir d'un autre poste). Le message « It works ! » doit apparaitre.
C'est la page par défaut, elle se trouve dans /var/www. Il vous suffit alors de mettre les fichiers de votre site dans ce répertoire pour qu'il soit utilisable...

= Configuration =

== Configuration des sites : Hôtes virtuels ==

Apache fonctionne avec des hôtes virtuels (virtual hosts) pour permettre d'héberger plusieurs sites sur une même machine. Pour créer un site, il faut créer un fichier dans /etc/apache2/sites-available (le site par défaut s'y trouve déjà).
La configuration d'un site se présente sous cette forme :

 &lt;VirtualHost *:80&gt;
        ServerAdmin webmaster@example.org
        ServerName  www.example.org
        ServerAlias foo.example.org bar.example.org
        DocumentRoot /var/www
 
        &lt;Directory /var/www/&gt;
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        &lt;/Directory&gt;
   
 	# Possible values include: debug, info, notice, warn, error, crit,
 	# alert, emerg.
        LogLevel warn
 
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        ErrorLog ${APACHE_LOG_DIR}/error.log
 &lt;/VirtualHost&gt;

=== Hôtes virtuels ===

Le site se place entre deux balises '''&lt;Virtualhost [IP:port]&gt;...&lt;/Virtualhost&gt;'''. Nous remplaçons [IP:port] par l'adresse IP et le port d'écoute du site. Si votre machine est accessible par plusieurs IP, vous pouvez donc mettre plusieurs sites, ayant chacun une adresse IP différente. Si vous voulez que votre site réponde quelque soit l'adresse IP, il suffit de mettre '*', comme dans l'exemple.
Vous pouvez de la même façon avoir des sites différents en fonction du port intérrogé, par exemple un site sur le port 80 et le port 8080.

Les directives ''ServerName'' et ''ServerAlias'' permette de faire des hôtes virtuels, non plus en fonction de l'IP ou du port, mais en fonction du nom de domaine utilisé par le client. Vous pouvez alors héberger plusieurs sites sur le port 80 avec une seule IP, si plusieurs noms de domaines pointent sur cette IP. C'est l'utilisation la plus courante des hôtes virtuels.
''ServerName'' ne prend qu'un seul nom de domaine. Si vous voulez que votre site réponde à plusieurs noms de domaine, il vous faut ajouter les domaines supplémentaires avec ''ServerAlias''.

Enfin, la directive ''DocumentRoot'' indique le chemin du dossier où se trouve le site.

=== Répertoires ===

Les balises '''&lt;Directory [/chemin/vers/dossier] &gt; ... &lt;/Directory&gt;''' permettent de configurer les option du dossier, notamment via la directive ''Options'' :
* ''Indexes'' permet de voir le contenu du dossier avec le navigateur s'il n'y a pas de index.html à la racine
* ''FollowSymLinks'' permet de suivre les liens symboliques
* ''MultiViews'' permet d'avoir des contenus différents en fonction de ce que le navigateur envoie (par exemple dans des langues différentes, comme c'est le cas pour http://www.debian.org)
Pour désactiver une option, il suffit de la faire précéder d'un '-' (par exemple : ''-Indexes'' empêchera de voir le contenu du dossier)

La directive ''AllowOverride'' permet d'autoriser l'utilisation de fichiers .htaccess. Ainsi si vous hébergez un site mais que vous n'en êtes pas le développeur, vous pouvez laisser la possibilité au développeur de configurer un dossier sans lui laisser l'accès au fichier de configuration d'Apache. Il lui suffira de mettre la configuration dans un fichier .htaccess à la racine du dossier. Le fichier est lu à chaque appel du site, le développeur n'a donc pas besoin de vous demander de recharger apache après avoir changé la configuration. Mais c'est donc plus couteux en performances, ainsi qu'en sécurité.
Avec ''AllowOverride None'', les .htaccess sont ignorés. Avec ''AllowOverride All'', ils sont pris en compte.
Vous pouvez aussi n'autoriser que certaines configurations, voir http://httpd.apache.org/docs/2.2/fr/mod/core.html#allowoverride

Order vous permet de choisir comment vous autorisez l'accès à votre site :
* ''Order Allow,Deny'' : le site sera accessible si l'adresse est dans une directive ''Allow from'' et n'est pas dans une directive ''Deny from''
* ''Order Deny,Allow'' : le site sera accessible si l'adresse est dans une directive ''Allow from'' ou n'est pas dans une directive ''Deny from''
Ainsi, si vous voulez que votre site soit accessible uniquement à partir de votre réseau local 192.168.0.0/24, vous pouvez mettre au choix :

 Order Allow,Deny
 Allow from 192.168.0.0/24

 Order Deny,Allow
 Deny from all
 Allow from 192.168.0.0/24


Vous pouvez avoir plusieurs balises '''&lt;Directory&gt;''' si vous voulez mettre des droits différents sur un sous-dossier de votre site. Il suffit de les mettre à la suite (sans les imbriquer).

=== Logs ===

La directive ''LogLevel'' permet de choisir le niveau de verbosité des logs parmi : debug, info, notice, warn, error, crit, alert, emerg.
''CustomLog'' et ''ErrorLog'' permettent de choisir l'emplacement des logs. Vous pouvez ainsi utiliser un fichier de logs par site ou le même, au choix.

=== Activation du site ===

Debian fournit deux scripts permettant de facilement activer et désactiver des sites. a2ensite et a2dissite. Une fois votre fichier créé dans /etc/apache2/sites-available, il vous suffit de faire :

 # a2ensite nom_du_fichier

pour activer le site. Ceci crééra un lien dans /etc/apache2/sites-enabled, qui sera lu par apache. Pour le désactiver, il faudra faire :

 # a2dissite nom_du_fichier

Dans les deux cas, n'oubliez pas de recharger la configuration d'apache après :

 # /etc/init.d/apache2 reload


NB : Vous remarquerez que le lien pour le site « default » est ''000-default'''. Ceci est fait de sorte que ce soit le premier à être lu par apache. Ainsi, si sur tous les sites, aucun ''ServerName'' ou ''ServerAlias'' ne correspond à l'URL intérrogé par le client, c'est ce site qu'il lui sera envoyé...

== Authentification ==

Pour qu'un dossier ne soit accessible à certaines personnes, il faut créer un fichier de mots de passe. Apache fournit l'utilitaire '''htpasswd''' pour celà.
Pour créer le fichier, il faut utiliser l'option ''-c'' :

 # htpasswd -c /chemin/vers/fichier/passwd &lt;nom_de_l'utilisateur&gt;

'''htpasswd''' vous demande alors le mot de passe de l'utilisateur.
Le fichier htpasswd doit être lisible par l'utilisateur d'apache (www-data sous debian).

Pour restreindre un dossier à cet utilisateur, il faut alors mettre dans le '''&lt;Directory&gt;''' :

 AuthType Basic
 AuthName &quot;Accès privé&quot;
 AuthUserFile /chemin/vers/fichier/passwd
 Require user &lt;nom_de_l'utilisateur&gt;

* ''AuthType Basic'' indique qu'on utilise une authentification basique
* ''AuthName'' indique le nom de l'identificateur, qui s'affiche lorsque le client doit s'identifier
* ''AuthUserFile'' indique le chemin vers le fichier de mot de passe
* ''Require'' indique qui peut accéder au dossier.

Si vous voulez autoriser plusieurs utilisateurs, il vous suffit de lancer '''htpasswd''' (sans ''-c'' cette fois) pour rajouter un utilisateur.
Il faudra alors mettre, à la place de ''Require user'' :

 Require valid-user

Si vous utilisez le même fichier de mots de passe pour plusieurs sites, il vous est possible de faire des groupes d'utilisateurs, en créant un fichier groupe de la forme

 generic: foo bar baz
 crypt: alice bob

Il vous suffit alors d'indiquer :

 AuthGroupFile /chemin/vers/fichier/de/groupe
 Require group crypt

pour permettre seulement à alice et bob d'accéder au dossier, et non à foo, bar et baz...

== Contenu dynamique avec CGI ==

Le CGI permet de faire du web dynamique facilement. Le principe est simple : apache exécute un script ou un programme qui va générer le code HTML d'une page.
Le script doit être exécutable par l'utilisateur www-data, et écrire sur sa sortie standard :

 Content type text/html; charset=utf-8

suivi du code HTML de la page à afficher.

'''Attention :''' À chaque interrogation de la page, apache lance un nouveau processus qui exécute le script, ce qui consomme des ressources systèmes à chaque fois.
On peut limiter l'utilisation des ressources avec Fast-CGI, mais le mieux est d'utiliser un module qui permettra de lancer des scripts avec un interpréteur intégré à apache, sans créer de nouveau processus à chaque fois. On trouvera par exemple mod_php (pour les scripts php) ou mod_perl (pour les scripts perl). C'est ce qui est le plus utilisé aujourd'hui...

Pour utiliser du CGI avec Apache, il y a deux méthodes. La première est d'ajouter dans '''&lt;Directory&gt;''' :

 Options +ExecCGI
 Add-Handler cgi-script .cgi .pl

Ainsi les script nommés en .cgi ou .pl seront exécutés au lieu d'être affiché.
La seconde méthode est plus sécurisée car elle permet de mettre les scripts dans un dossier à part, qui n'est pas dans la racine du site. Pour celà, on met dans '''&lt;VirtualHost&gt;'''

 ScriptAlias /cgi-bin/ /chemin/vers/scripts/
 &lt;Directory &quot;/chemin/vers/scripts&quot;&gt;
         AllowOverride None
         Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
         Order allow,deny
         Allow from all
  &lt;/Directory&gt;

En allant à http://adresse_du_site/cgi-bin on est alors redirigé vers le dossier où sont situés les scripts CGI.


== Modules ==

=== Les modules apache ===

Apache permet d'ajouter des modules qui apportent de nouvelles fonctionnalités.
Certains sont installés et activés par défaut, comme par exemple le module auth_basic qui permet l'authentification ou le mod_deflate qui permet de compresser certains fichiers.

Les modules sont installés dans /etc/apache2/mods-available. Pour chaque module, vous trouverez un fichier .load qui contient la directive pour charger le module, et un fichier .conf qui contient sa configuration (que vous pouvez adapter à vos besoins).

On active et désactive un module avec les commandes '''a2enmod''' et '''a2dismod''', qui crééront des liens dans /etc/apache2/sites-enabled. Il vous faudra redémarrer apache pour que ce soit pris en compte :

 # /etc/init.d/apache2 restart

=== userdir : un site par utilisateur ===

Le module mod_userdir permet à chaque utilisateur d'avoir un site. Pour celà il faut activer le module :

 # a2enmod userdir

Une fois le module activé, chaque utilisateur peut placer un site dans un dossier  ~/public_html.
Par exemple, http://adresse_du_site/~foo pointera vers /home/foo/public_html.

Pour le désactiver, il suffit de faire

 # a2dismod userdir

(n'oubliez pas de redémarrer apache)

=== suexec : droits plus fin sur les CGI ===

Une fois activé, mod_suexec permet de lancer les scripts CGI avec les droits de l'utilisateur auquel appartient le script, au lieu de www-data.
Ainsi, vous pouvez donner donner des droits sur le systèmes à certains utilisateurs, et pas à d'autres.

=== Autres modules ===

En plus des modules installés par défaut dans /etc/apache2/mods-available, il vous est possible d'installer des modules supplémentaires via APT.
Voyez le résultat de :

 aptitude search ^libapache2-mod

pour avoir la liste des modules disponibles, parmi lesquels :

*mod_php : pour faire des sites dynamiques en php
*mod_perl : pour faire des sites dynamiques en perl
*mod_evasive : apporte une protection contre les attaques DOS
*et plein d'autres...

== Chiffrement avec SSL ==

Pour utiliser SSL avec Apache, il vous faut obtenir un certificat SSL.
Un certificat autosigné vous est fourni lors de l'installation d'apache dans /etc/ssl/certs (ssl-cert-snakeoil.pem pour le certificat et ssl-cert-snakeoil.key pour la clé).
Cependant, vous souhaiterez probablement que le certificat corresponde à l'adresse de votre site. Vous pouvez alors en créer un avec [[openssl|openssl]] ou en obtenir un auprès d'une autorité de certification.

Une fois votre certificat obtenu, il vous suffit de créer un vhost sur le port 443, en y ajoutant les directives suivantes :

 SSL Engine On
 SSLCertificateFile    /chemin/vers/certificat
 SSLCertificateKeyFile /chemin/vers/clé

Ensuite il faut activer le SSL avec la commande :

 a2enmod ssl

Puis on redémarre le serveur. Le vhost fonctionnera alors en SSL.
Vous pouvez regarder les commentaires du vhost SSL par défaut (/etc/apache2/sites-available/default-ssl) pour voir les autres options disponibles avec SSL.

= Ressources =

La documentation d'apache est très bien faite et pour une bonne partie traduite en français, n'hésitez pas à l'utiliser :
http://httpd.apache.org/docs/2.2/fr</text>
      <sha1>agtw77krk4xgv0n4lycjykolb28rkd8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3540</id>
      <parentid>3491</parentid>
      <timestamp>2011-11-02T12:30:03Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Autres modules */ lien Libapache2-mod-evasive</comment>
      <text xml:space="preserve" bytes="12787">= Installation =

 # aptitude install apache2

La configuration par défaut est déjà fonctionnelle.
Vous pouvez le vérifier avec un navigateur en allant sur http://localhost (ou http://adresse_de_la_machine à partir d'un autre poste). Le message « It works ! » doit apparaitre.
C'est la page par défaut, elle se trouve dans /var/www. Il vous suffit alors de mettre les fichiers de votre site dans ce répertoire pour qu'il soit utilisable...

= Configuration =

== Configuration des sites : Hôtes virtuels ==

Apache fonctionne avec des hôtes virtuels (virtual hosts) pour permettre d'héberger plusieurs sites sur une même machine. Pour créer un site, il faut créer un fichier dans /etc/apache2/sites-available (le site par défaut s'y trouve déjà).
La configuration d'un site se présente sous cette forme :

 &lt;VirtualHost *:80&gt;
        ServerAdmin webmaster@example.org
        ServerName  www.example.org
        ServerAlias foo.example.org bar.example.org
        DocumentRoot /var/www
 
        &lt;Directory /var/www/&gt;
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        &lt;/Directory&gt;
   
 	# Possible values include: debug, info, notice, warn, error, crit,
 	# alert, emerg.
        LogLevel warn
 
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        ErrorLog ${APACHE_LOG_DIR}/error.log
 &lt;/VirtualHost&gt;

=== Hôtes virtuels ===

Le site se place entre deux balises '''&lt;Virtualhost [IP:port]&gt;...&lt;/Virtualhost&gt;'''. Nous remplaçons [IP:port] par l'adresse IP et le port d'écoute du site. Si votre machine est accessible par plusieurs IP, vous pouvez donc mettre plusieurs sites, ayant chacun une adresse IP différente. Si vous voulez que votre site réponde quelque soit l'adresse IP, il suffit de mettre '*', comme dans l'exemple.
Vous pouvez de la même façon avoir des sites différents en fonction du port intérrogé, par exemple un site sur le port 80 et le port 8080.

Les directives ''ServerName'' et ''ServerAlias'' permette de faire des hôtes virtuels, non plus en fonction de l'IP ou du port, mais en fonction du nom de domaine utilisé par le client. Vous pouvez alors héberger plusieurs sites sur le port 80 avec une seule IP, si plusieurs noms de domaines pointent sur cette IP. C'est l'utilisation la plus courante des hôtes virtuels.
''ServerName'' ne prend qu'un seul nom de domaine. Si vous voulez que votre site réponde à plusieurs noms de domaine, il vous faut ajouter les domaines supplémentaires avec ''ServerAlias''.

Enfin, la directive ''DocumentRoot'' indique le chemin du dossier où se trouve le site.

=== Répertoires ===

Les balises '''&lt;Directory [/chemin/vers/dossier] &gt; ... &lt;/Directory&gt;''' permettent de configurer les option du dossier, notamment via la directive ''Options'' :
* ''Indexes'' permet de voir le contenu du dossier avec le navigateur s'il n'y a pas de index.html à la racine
* ''FollowSymLinks'' permet de suivre les liens symboliques
* ''MultiViews'' permet d'avoir des contenus différents en fonction de ce que le navigateur envoie (par exemple dans des langues différentes, comme c'est le cas pour http://www.debian.org)
Pour désactiver une option, il suffit de la faire précéder d'un '-' (par exemple : ''-Indexes'' empêchera de voir le contenu du dossier)

La directive ''AllowOverride'' permet d'autoriser l'utilisation de fichiers .htaccess. Ainsi si vous hébergez un site mais que vous n'en êtes pas le développeur, vous pouvez laisser la possibilité au développeur de configurer un dossier sans lui laisser l'accès au fichier de configuration d'Apache. Il lui suffira de mettre la configuration dans un fichier .htaccess à la racine du dossier. Le fichier est lu à chaque appel du site, le développeur n'a donc pas besoin de vous demander de recharger apache après avoir changé la configuration. Mais c'est donc plus couteux en performances, ainsi qu'en sécurité.
Avec ''AllowOverride None'', les .htaccess sont ignorés. Avec ''AllowOverride All'', ils sont pris en compte.
Vous pouvez aussi n'autoriser que certaines configurations, voir http://httpd.apache.org/docs/2.2/fr/mod/core.html#allowoverride

Order vous permet de choisir comment vous autorisez l'accès à votre site :
* ''Order Allow,Deny'' : le site sera accessible si l'adresse est dans une directive ''Allow from'' et n'est pas dans une directive ''Deny from''
* ''Order Deny,Allow'' : le site sera accessible si l'adresse est dans une directive ''Allow from'' ou n'est pas dans une directive ''Deny from''
Ainsi, si vous voulez que votre site soit accessible uniquement à partir de votre réseau local 192.168.0.0/24, vous pouvez mettre au choix :

 Order Allow,Deny
 Allow from 192.168.0.0/24

 Order Deny,Allow
 Deny from all
 Allow from 192.168.0.0/24


Vous pouvez avoir plusieurs balises '''&lt;Directory&gt;''' si vous voulez mettre des droits différents sur un sous-dossier de votre site. Il suffit de les mettre à la suite (sans les imbriquer).

=== Logs ===

La directive ''LogLevel'' permet de choisir le niveau de verbosité des logs parmi : debug, info, notice, warn, error, crit, alert, emerg.
''CustomLog'' et ''ErrorLog'' permettent de choisir l'emplacement des logs. Vous pouvez ainsi utiliser un fichier de logs par site ou le même, au choix.

=== Activation du site ===

Debian fournit deux scripts permettant de facilement activer et désactiver des sites. a2ensite et a2dissite. Une fois votre fichier créé dans /etc/apache2/sites-available, il vous suffit de faire :

 # a2ensite nom_du_fichier

pour activer le site. Ceci crééra un lien dans /etc/apache2/sites-enabled, qui sera lu par apache. Pour le désactiver, il faudra faire :

 # a2dissite nom_du_fichier

Dans les deux cas, n'oubliez pas de recharger la configuration d'apache après :

 # /etc/init.d/apache2 reload


NB : Vous remarquerez que le lien pour le site « default » est ''000-default'''. Ceci est fait de sorte que ce soit le premier à être lu par apache. Ainsi, si sur tous les sites, aucun ''ServerName'' ou ''ServerAlias'' ne correspond à l'URL intérrogé par le client, c'est ce site qu'il lui sera envoyé...

== Authentification ==

Pour qu'un dossier ne soit accessible à certaines personnes, il faut créer un fichier de mots de passe. Apache fournit l'utilitaire '''htpasswd''' pour celà.
Pour créer le fichier, il faut utiliser l'option ''-c'' :

 # htpasswd -c /chemin/vers/fichier/passwd &lt;nom_de_l'utilisateur&gt;

'''htpasswd''' vous demande alors le mot de passe de l'utilisateur.
Le fichier htpasswd doit être lisible par l'utilisateur d'apache (www-data sous debian).

Pour restreindre un dossier à cet utilisateur, il faut alors mettre dans le '''&lt;Directory&gt;''' :

 AuthType Basic
 AuthName &quot;Accès privé&quot;
 AuthUserFile /chemin/vers/fichier/passwd
 Require user &lt;nom_de_l'utilisateur&gt;

* ''AuthType Basic'' indique qu'on utilise une authentification basique
* ''AuthName'' indique le nom de l'identificateur, qui s'affiche lorsque le client doit s'identifier
* ''AuthUserFile'' indique le chemin vers le fichier de mot de passe
* ''Require'' indique qui peut accéder au dossier.

Si vous voulez autoriser plusieurs utilisateurs, il vous suffit de lancer '''htpasswd''' (sans ''-c'' cette fois) pour rajouter un utilisateur.
Il faudra alors mettre, à la place de ''Require user'' :

 Require valid-user

Si vous utilisez le même fichier de mots de passe pour plusieurs sites, il vous est possible de faire des groupes d'utilisateurs, en créant un fichier groupe de la forme

 generic: foo bar baz
 crypt: alice bob

Il vous suffit alors d'indiquer :

 AuthGroupFile /chemin/vers/fichier/de/groupe
 Require group crypt

pour permettre seulement à alice et bob d'accéder au dossier, et non à foo, bar et baz...

== Contenu dynamique avec CGI ==

Le CGI permet de faire du web dynamique facilement. Le principe est simple : apache exécute un script ou un programme qui va générer le code HTML d'une page.
Le script doit être exécutable par l'utilisateur www-data, et écrire sur sa sortie standard :

 Content type text/html; charset=utf-8

suivi du code HTML de la page à afficher.

'''Attention :''' À chaque interrogation de la page, apache lance un nouveau processus qui exécute le script, ce qui consomme des ressources systèmes à chaque fois.
On peut limiter l'utilisation des ressources avec Fast-CGI, mais le mieux est d'utiliser un module qui permettra de lancer des scripts avec un interpréteur intégré à apache, sans créer de nouveau processus à chaque fois. On trouvera par exemple mod_php (pour les scripts php) ou mod_perl (pour les scripts perl). C'est ce qui est le plus utilisé aujourd'hui...

Pour utiliser du CGI avec Apache, il y a deux méthodes. La première est d'ajouter dans '''&lt;Directory&gt;''' :

 Options +ExecCGI
 Add-Handler cgi-script .cgi .pl

Ainsi les script nommés en .cgi ou .pl seront exécutés au lieu d'être affiché.
La seconde méthode est plus sécurisée car elle permet de mettre les scripts dans un dossier à part, qui n'est pas dans la racine du site. Pour celà, on met dans '''&lt;VirtualHost&gt;'''

 ScriptAlias /cgi-bin/ /chemin/vers/scripts/
 &lt;Directory &quot;/chemin/vers/scripts&quot;&gt;
         AllowOverride None
         Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
         Order allow,deny
         Allow from all
  &lt;/Directory&gt;

En allant à http://adresse_du_site/cgi-bin on est alors redirigé vers le dossier où sont situés les scripts CGI.


== Modules ==

=== Les modules apache ===

Apache permet d'ajouter des modules qui apportent de nouvelles fonctionnalités.
Certains sont installés et activés par défaut, comme par exemple le module auth_basic qui permet l'authentification ou le mod_deflate qui permet de compresser certains fichiers.

Les modules sont installés dans /etc/apache2/mods-available. Pour chaque module, vous trouverez un fichier .load qui contient la directive pour charger le module, et un fichier .conf qui contient sa configuration (que vous pouvez adapter à vos besoins).

On active et désactive un module avec les commandes '''a2enmod''' et '''a2dismod''', qui crééront des liens dans /etc/apache2/sites-enabled. Il vous faudra redémarrer apache pour que ce soit pris en compte :

 # /etc/init.d/apache2 restart

=== userdir : un site par utilisateur ===

Le module mod_userdir permet à chaque utilisateur d'avoir un site. Pour celà il faut activer le module :

 # a2enmod userdir

Une fois le module activé, chaque utilisateur peut placer un site dans un dossier  ~/public_html.
Par exemple, http://adresse_du_site/~foo pointera vers /home/foo/public_html.

Pour le désactiver, il suffit de faire

 # a2dismod userdir

(n'oubliez pas de redémarrer apache)

=== suexec : droits plus fin sur les CGI ===

Une fois activé, mod_suexec permet de lancer les scripts CGI avec les droits de l'utilisateur auquel appartient le script, au lieu de www-data.
Ainsi, vous pouvez donner donner des droits sur le systèmes à certains utilisateurs, et pas à d'autres.

=== Autres modules ===

En plus des modules installés par défaut dans /etc/apache2/mods-available, il vous est possible d'installer des modules supplémentaires via APT.
Voyez le résultat de :

 aptitude search ^libapache2-mod

pour avoir la liste des modules disponibles, parmi lesquels :

*mod_php : pour faire des sites dynamiques en php
*mod_perl : pour faire des sites dynamiques en perl
*[[Libapache2-mod-evasive|mod_evasive]] : apporte une protection contre les attaques DOS
*et plein d'autres...

== Chiffrement avec SSL ==

Pour utiliser SSL avec Apache, il vous faut obtenir un certificat SSL.
Un certificat autosigné vous est fourni lors de l'installation d'apache dans /etc/ssl/certs (ssl-cert-snakeoil.pem pour le certificat et ssl-cert-snakeoil.key pour la clé).
Cependant, vous souhaiterez probablement que le certificat corresponde à l'adresse de votre site. Vous pouvez alors en créer un avec [[openssl|openssl]] ou en obtenir un auprès d'une autorité de certification.

Une fois votre certificat obtenu, il vous suffit de créer un vhost sur le port 443, en y ajoutant les directives suivantes :

 SSL Engine On
 SSLCertificateFile    /chemin/vers/certificat
 SSLCertificateKeyFile /chemin/vers/clé

Ensuite il faut activer le SSL avec la commande :

 a2enmod ssl

Puis on redémarre le serveur. Le vhost fonctionnera alors en SSL.
Vous pouvez regarder les commentaires du vhost SSL par défaut (/etc/apache2/sites-available/default-ssl) pour voir les autres options disponibles avec SSL.

= Ressources =

La documentation d'apache est très bien faite et pour une bonne partie traduite en français, n'hésitez pas à l'utiliser :
http://httpd.apache.org/docs/2.2/fr</text>
      <sha1>064ex1rmvbavgy1fj2l9vg6si7z3un2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5772</id>
      <parentid>3540</parentid>
      <timestamp>2014-08-20T05:27:25Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Hôtes virtuels */ chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="12791">= Installation =

 # aptitude install apache2

La configuration par défaut est déjà fonctionnelle.
Vous pouvez le vérifier avec un navigateur en allant sur http://localhost (ou http://adresse_de_la_machine à partir d'un autre poste). Le message « It works ! » doit apparaitre.
C'est la page par défaut, elle se trouve dans /var/www. Il vous suffit alors de mettre les fichiers de votre site dans ce répertoire pour qu'il soit utilisable...

= Configuration =

== Configuration des sites : Hôtes virtuels ==

Apache fonctionne avec des hôtes virtuels (virtual hosts) pour permettre d'héberger plusieurs sites sur une même machine. Pour créer un site, il faut créer un fichier dans /etc/apache2/sites-available (le site par défaut s'y trouve déjà).
La configuration d'un site se présente sous cette forme :

 &lt;VirtualHost *:80&gt;
        ServerAdmin webmaster@example.org
        ServerName  www.example.org
        ServerAlias foo.example.org bar.example.org
        DocumentRoot /var/www
 
        &lt;Directory /var/www/&gt;
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        &lt;/Directory&gt;
   
 	# Possible values include: debug, info, notice, warn, error, crit,
 	# alert, emerg.
        LogLevel warn
 
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        ErrorLog ${APACHE_LOG_DIR}/error.log
 &lt;/VirtualHost&gt;

=== Hôtes virtuels ===

Le site se place entre deux balises '''&lt;Virtualhost [IP:port]&gt;...&lt;/Virtualhost&gt;'''. Nous remplaçons [IP:port] par l'adresse IP et le port d'écoute du site. Si votre machine est accessible par plusieurs IP, vous pouvez donc mettre plusieurs sites, ayant chacun une adresse IP différente. Si vous voulez que votre site réponde quelque soit l'adresse IP, il suffit de mettre '*', comme dans l'exemple.
Vous pouvez de la même façon avoir des sites différents en fonction du port intérrogé, par exemple un site sur le port 80 et le port 8080.

Les directives ''ServerName'' et ''ServerAlias'' permette de faire des hôtes virtuels, non plus en fonction de l'IP ou du port, mais en fonction du nom de domaine utilisé par le client. Vous pouvez alors héberger plusieurs sites sur le port 80 avec une seule IP, si plusieurs noms de domaines pointent sur cette IP. C'est l'utilisation la plus courante des hôtes virtuels.
''ServerName'' ne prend qu'un seul nom de domaine. Si vous voulez que votre site réponde à plusieurs noms de domaine, il vous faut ajouter les domaines supplémentaires avec ''ServerAlias''.

Enfin, la directive ''DocumentRoot'' indique le chemin du répertoire où se trouve le site.

=== Répertoires ===

Les balises '''&lt;Directory [/chemin/vers/dossier] &gt; ... &lt;/Directory&gt;''' permettent de configurer les option du dossier, notamment via la directive ''Options'' :
* ''Indexes'' permet de voir le contenu du dossier avec le navigateur s'il n'y a pas de index.html à la racine
* ''FollowSymLinks'' permet de suivre les liens symboliques
* ''MultiViews'' permet d'avoir des contenus différents en fonction de ce que le navigateur envoie (par exemple dans des langues différentes, comme c'est le cas pour http://www.debian.org)
Pour désactiver une option, il suffit de la faire précéder d'un '-' (par exemple : ''-Indexes'' empêchera de voir le contenu du dossier)

La directive ''AllowOverride'' permet d'autoriser l'utilisation de fichiers .htaccess. Ainsi si vous hébergez un site mais que vous n'en êtes pas le développeur, vous pouvez laisser la possibilité au développeur de configurer un dossier sans lui laisser l'accès au fichier de configuration d'Apache. Il lui suffira de mettre la configuration dans un fichier .htaccess à la racine du dossier. Le fichier est lu à chaque appel du site, le développeur n'a donc pas besoin de vous demander de recharger apache après avoir changé la configuration. Mais c'est donc plus couteux en performances, ainsi qu'en sécurité.
Avec ''AllowOverride None'', les .htaccess sont ignorés. Avec ''AllowOverride All'', ils sont pris en compte.
Vous pouvez aussi n'autoriser que certaines configurations, voir http://httpd.apache.org/docs/2.2/fr/mod/core.html#allowoverride

Order vous permet de choisir comment vous autorisez l'accès à votre site :
* ''Order Allow,Deny'' : le site sera accessible si l'adresse est dans une directive ''Allow from'' et n'est pas dans une directive ''Deny from''
* ''Order Deny,Allow'' : le site sera accessible si l'adresse est dans une directive ''Allow from'' ou n'est pas dans une directive ''Deny from''
Ainsi, si vous voulez que votre site soit accessible uniquement à partir de votre réseau local 192.168.0.0/24, vous pouvez mettre au choix :

 Order Allow,Deny
 Allow from 192.168.0.0/24

 Order Deny,Allow
 Deny from all
 Allow from 192.168.0.0/24


Vous pouvez avoir plusieurs balises '''&lt;Directory&gt;''' si vous voulez mettre des droits différents sur un sous-dossier de votre site. Il suffit de les mettre à la suite (sans les imbriquer).

=== Logs ===

La directive ''LogLevel'' permet de choisir le niveau de verbosité des logs parmi : debug, info, notice, warn, error, crit, alert, emerg.
''CustomLog'' et ''ErrorLog'' permettent de choisir l'emplacement des logs. Vous pouvez ainsi utiliser un fichier de logs par site ou le même, au choix.

=== Activation du site ===

Debian fournit deux scripts permettant de facilement activer et désactiver des sites. a2ensite et a2dissite. Une fois votre fichier créé dans /etc/apache2/sites-available, il vous suffit de faire :

 # a2ensite nom_du_fichier

pour activer le site. Ceci crééra un lien dans /etc/apache2/sites-enabled, qui sera lu par apache. Pour le désactiver, il faudra faire :

 # a2dissite nom_du_fichier

Dans les deux cas, n'oubliez pas de recharger la configuration d'apache après :

 # /etc/init.d/apache2 reload


NB : Vous remarquerez que le lien pour le site « default » est ''000-default'''. Ceci est fait de sorte que ce soit le premier à être lu par apache. Ainsi, si sur tous les sites, aucun ''ServerName'' ou ''ServerAlias'' ne correspond à l'URL intérrogé par le client, c'est ce site qu'il lui sera envoyé...

== Authentification ==

Pour qu'un dossier ne soit accessible à certaines personnes, il faut créer un fichier de mots de passe. Apache fournit l'utilitaire '''htpasswd''' pour celà.
Pour créer le fichier, il faut utiliser l'option ''-c'' :

 # htpasswd -c /chemin/vers/fichier/passwd &lt;nom_de_l'utilisateur&gt;

'''htpasswd''' vous demande alors le mot de passe de l'utilisateur.
Le fichier htpasswd doit être lisible par l'utilisateur d'apache (www-data sous debian).

Pour restreindre un dossier à cet utilisateur, il faut alors mettre dans le '''&lt;Directory&gt;''' :

 AuthType Basic
 AuthName &quot;Accès privé&quot;
 AuthUserFile /chemin/vers/fichier/passwd
 Require user &lt;nom_de_l'utilisateur&gt;

* ''AuthType Basic'' indique qu'on utilise une authentification basique
* ''AuthName'' indique le nom de l'identificateur, qui s'affiche lorsque le client doit s'identifier
* ''AuthUserFile'' indique le chemin vers le fichier de mot de passe
* ''Require'' indique qui peut accéder au dossier.

Si vous voulez autoriser plusieurs utilisateurs, il vous suffit de lancer '''htpasswd''' (sans ''-c'' cette fois) pour rajouter un utilisateur.
Il faudra alors mettre, à la place de ''Require user'' :

 Require valid-user

Si vous utilisez le même fichier de mots de passe pour plusieurs sites, il vous est possible de faire des groupes d'utilisateurs, en créant un fichier groupe de la forme

 generic: foo bar baz
 crypt: alice bob

Il vous suffit alors d'indiquer :

 AuthGroupFile /chemin/vers/fichier/de/groupe
 Require group crypt

pour permettre seulement à alice et bob d'accéder au dossier, et non à foo, bar et baz...

== Contenu dynamique avec CGI ==

Le CGI permet de faire du web dynamique facilement. Le principe est simple : apache exécute un script ou un programme qui va générer le code HTML d'une page.
Le script doit être exécutable par l'utilisateur www-data, et écrire sur sa sortie standard :

 Content type text/html; charset=utf-8

suivi du code HTML de la page à afficher.

'''Attention :''' À chaque interrogation de la page, apache lance un nouveau processus qui exécute le script, ce qui consomme des ressources systèmes à chaque fois.
On peut limiter l'utilisation des ressources avec Fast-CGI, mais le mieux est d'utiliser un module qui permettra de lancer des scripts avec un interpréteur intégré à apache, sans créer de nouveau processus à chaque fois. On trouvera par exemple mod_php (pour les scripts php) ou mod_perl (pour les scripts perl). C'est ce qui est le plus utilisé aujourd'hui...

Pour utiliser du CGI avec Apache, il y a deux méthodes. La première est d'ajouter dans '''&lt;Directory&gt;''' :

 Options +ExecCGI
 Add-Handler cgi-script .cgi .pl

Ainsi les script nommés en .cgi ou .pl seront exécutés au lieu d'être affiché.
La seconde méthode est plus sécurisée car elle permet de mettre les scripts dans un dossier à part, qui n'est pas dans la racine du site. Pour celà, on met dans '''&lt;VirtualHost&gt;'''

 ScriptAlias /cgi-bin/ /chemin/vers/scripts/
 &lt;Directory &quot;/chemin/vers/scripts&quot;&gt;
         AllowOverride None
         Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
         Order allow,deny
         Allow from all
  &lt;/Directory&gt;

En allant à http://adresse_du_site/cgi-bin on est alors redirigé vers le dossier où sont situés les scripts CGI.


== Modules ==

=== Les modules apache ===

Apache permet d'ajouter des modules qui apportent de nouvelles fonctionnalités.
Certains sont installés et activés par défaut, comme par exemple le module auth_basic qui permet l'authentification ou le mod_deflate qui permet de compresser certains fichiers.

Les modules sont installés dans /etc/apache2/mods-available. Pour chaque module, vous trouverez un fichier .load qui contient la directive pour charger le module, et un fichier .conf qui contient sa configuration (que vous pouvez adapter à vos besoins).

On active et désactive un module avec les commandes '''a2enmod''' et '''a2dismod''', qui crééront des liens dans /etc/apache2/sites-enabled. Il vous faudra redémarrer apache pour que ce soit pris en compte :

 # /etc/init.d/apache2 restart

=== userdir : un site par utilisateur ===

Le module mod_userdir permet à chaque utilisateur d'avoir un site. Pour celà il faut activer le module :

 # a2enmod userdir

Une fois le module activé, chaque utilisateur peut placer un site dans un dossier  ~/public_html.
Par exemple, http://adresse_du_site/~foo pointera vers /home/foo/public_html.

Pour le désactiver, il suffit de faire

 # a2dismod userdir

(n'oubliez pas de redémarrer apache)

=== suexec : droits plus fin sur les CGI ===

Une fois activé, mod_suexec permet de lancer les scripts CGI avec les droits de l'utilisateur auquel appartient le script, au lieu de www-data.
Ainsi, vous pouvez donner donner des droits sur le systèmes à certains utilisateurs, et pas à d'autres.

=== Autres modules ===

En plus des modules installés par défaut dans /etc/apache2/mods-available, il vous est possible d'installer des modules supplémentaires via APT.
Voyez le résultat de :

 aptitude search ^libapache2-mod

pour avoir la liste des modules disponibles, parmi lesquels :

*mod_php : pour faire des sites dynamiques en php
*mod_perl : pour faire des sites dynamiques en perl
*[[Libapache2-mod-evasive|mod_evasive]] : apporte une protection contre les attaques DOS
*et plein d'autres...

== Chiffrement avec SSL ==

Pour utiliser SSL avec Apache, il vous faut obtenir un certificat SSL.
Un certificat autosigné vous est fourni lors de l'installation d'apache dans /etc/ssl/certs (ssl-cert-snakeoil.pem pour le certificat et ssl-cert-snakeoil.key pour la clé).
Cependant, vous souhaiterez probablement que le certificat corresponde à l'adresse de votre site. Vous pouvez alors en créer un avec [[openssl|openssl]] ou en obtenir un auprès d'une autorité de certification.

Une fois votre certificat obtenu, il vous suffit de créer un vhost sur le port 443, en y ajoutant les directives suivantes :

 SSL Engine On
 SSLCertificateFile    /chemin/vers/certificat
 SSLCertificateKeyFile /chemin/vers/clé

Ensuite il faut activer le SSL avec la commande :

 a2enmod ssl

Puis on redémarre le serveur. Le vhost fonctionnera alors en SSL.
Vous pouvez regarder les commentaires du vhost SSL par défaut (/etc/apache2/sites-available/default-ssl) pour voir les autres options disponibles avec SSL.

= Ressources =

La documentation d'apache est très bien faite et pour une bonne partie traduite en français, n'hésitez pas à l'utiliser :
http://httpd.apache.org/docs/2.2/fr</text>
      <sha1>5jwi9s64xgqicd7bvu0u7wh42b0xff1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5773</id>
      <parentid>5772</parentid>
      <timestamp>2014-08-20T05:28:22Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Répertoires */ chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="12819">= Installation =

 # aptitude install apache2

La configuration par défaut est déjà fonctionnelle.
Vous pouvez le vérifier avec un navigateur en allant sur http://localhost (ou http://adresse_de_la_machine à partir d'un autre poste). Le message « It works ! » doit apparaitre.
C'est la page par défaut, elle se trouve dans /var/www. Il vous suffit alors de mettre les fichiers de votre site dans ce répertoire pour qu'il soit utilisable...

= Configuration =

== Configuration des sites : Hôtes virtuels ==

Apache fonctionne avec des hôtes virtuels (virtual hosts) pour permettre d'héberger plusieurs sites sur une même machine. Pour créer un site, il faut créer un fichier dans /etc/apache2/sites-available (le site par défaut s'y trouve déjà).
La configuration d'un site se présente sous cette forme :

 &lt;VirtualHost *:80&gt;
        ServerAdmin webmaster@example.org
        ServerName  www.example.org
        ServerAlias foo.example.org bar.example.org
        DocumentRoot /var/www
 
        &lt;Directory /var/www/&gt;
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        &lt;/Directory&gt;
   
 	# Possible values include: debug, info, notice, warn, error, crit,
 	# alert, emerg.
        LogLevel warn
 
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        ErrorLog ${APACHE_LOG_DIR}/error.log
 &lt;/VirtualHost&gt;

=== Hôtes virtuels ===

Le site se place entre deux balises '''&lt;Virtualhost [IP:port]&gt;...&lt;/Virtualhost&gt;'''. Nous remplaçons [IP:port] par l'adresse IP et le port d'écoute du site. Si votre machine est accessible par plusieurs IP, vous pouvez donc mettre plusieurs sites, ayant chacun une adresse IP différente. Si vous voulez que votre site réponde quelque soit l'adresse IP, il suffit de mettre '*', comme dans l'exemple.
Vous pouvez de la même façon avoir des sites différents en fonction du port intérrogé, par exemple un site sur le port 80 et le port 8080.

Les directives ''ServerName'' et ''ServerAlias'' permette de faire des hôtes virtuels, non plus en fonction de l'IP ou du port, mais en fonction du nom de domaine utilisé par le client. Vous pouvez alors héberger plusieurs sites sur le port 80 avec une seule IP, si plusieurs noms de domaines pointent sur cette IP. C'est l'utilisation la plus courante des hôtes virtuels.
''ServerName'' ne prend qu'un seul nom de domaine. Si vous voulez que votre site réponde à plusieurs noms de domaine, il vous faut ajouter les domaines supplémentaires avec ''ServerAlias''.

Enfin, la directive ''DocumentRoot'' indique le chemin du répertoire où se trouve le site.

=== Répertoires ===

Les balises '''&lt;Directory [/chemin/vers/répertoire] &gt; ... &lt;/Directory&gt;''' permettent de configurer les option du répertoire, notamment via la directive ''Options'' :
* ''Indexes'' permet de voir le contenu du répertoire avec le navigateur s'il n'y a pas de index.html à la racine
* ''FollowSymLinks'' permet de suivre les liens symboliques
* ''MultiViews'' permet d'avoir des contenus différents en fonction de ce que le navigateur envoie (par exemple dans des langues différentes, comme c'est le cas pour http://www.debian.org)
Pour désactiver une option, il suffit de la faire précéder d'un '-' (par exemple : ''-Indexes'' empêchera de voir le contenu du répertoire)

La directive ''AllowOverride'' permet d'autoriser l'utilisation de fichiers .htaccess. Ainsi si vous hébergez un site mais que vous n'en êtes pas le développeur, vous pouvez laisser la possibilité au développeur de configurer un répertoire sans lui laisser l'accès au fichier de configuration d'Apache. Il lui suffira de mettre la configuration dans un fichier .htaccess à la racine du répertoire. Le fichier est lu à chaque appel du site, le développeur n'a donc pas besoin de vous demander de recharger apache après avoir changé la configuration. Mais c'est donc plus couteux en performances, ainsi qu'en sécurité.
Avec ''AllowOverride None'', les .htaccess sont ignorés. Avec ''AllowOverride All'', ils sont pris en compte.
Vous pouvez aussi n'autoriser que certaines configurations, voir http://httpd.apache.org/docs/2.2/fr/mod/core.html#allowoverride

Order vous permet de choisir comment vous autorisez l'accès à votre site :
* ''Order Allow,Deny'' : le site sera accessible si l'adresse est dans une directive ''Allow from'' et n'est pas dans une directive ''Deny from''
* ''Order Deny,Allow'' : le site sera accessible si l'adresse est dans une directive ''Allow from'' ou n'est pas dans une directive ''Deny from''
Ainsi, si vous voulez que votre site soit accessible uniquement à partir de votre réseau local 192.168.0.0/24, vous pouvez mettre au choix :

 Order Allow,Deny
 Allow from 192.168.0.0/24

 Order Deny,Allow
 Deny from all
 Allow from 192.168.0.0/24


Vous pouvez avoir plusieurs balises '''&lt;Directory&gt;''' si vous voulez mettre des droits différents sur un sous-répertoire de votre site. Il suffit de les mettre à la suite (sans les imbriquer).

=== Logs ===

La directive ''LogLevel'' permet de choisir le niveau de verbosité des logs parmi : debug, info, notice, warn, error, crit, alert, emerg.
''CustomLog'' et ''ErrorLog'' permettent de choisir l'emplacement des logs. Vous pouvez ainsi utiliser un fichier de logs par site ou le même, au choix.

=== Activation du site ===

Debian fournit deux scripts permettant de facilement activer et désactiver des sites. a2ensite et a2dissite. Une fois votre fichier créé dans /etc/apache2/sites-available, il vous suffit de faire :

 # a2ensite nom_du_fichier

pour activer le site. Ceci crééra un lien dans /etc/apache2/sites-enabled, qui sera lu par apache. Pour le désactiver, il faudra faire :

 # a2dissite nom_du_fichier

Dans les deux cas, n'oubliez pas de recharger la configuration d'apache après :

 # /etc/init.d/apache2 reload


NB : Vous remarquerez que le lien pour le site « default » est ''000-default'''. Ceci est fait de sorte que ce soit le premier à être lu par apache. Ainsi, si sur tous les sites, aucun ''ServerName'' ou ''ServerAlias'' ne correspond à l'URL intérrogé par le client, c'est ce site qu'il lui sera envoyé...

== Authentification ==

Pour qu'un dossier ne soit accessible à certaines personnes, il faut créer un fichier de mots de passe. Apache fournit l'utilitaire '''htpasswd''' pour celà.
Pour créer le fichier, il faut utiliser l'option ''-c'' :

 # htpasswd -c /chemin/vers/fichier/passwd &lt;nom_de_l'utilisateur&gt;

'''htpasswd''' vous demande alors le mot de passe de l'utilisateur.
Le fichier htpasswd doit être lisible par l'utilisateur d'apache (www-data sous debian).

Pour restreindre un dossier à cet utilisateur, il faut alors mettre dans le '''&lt;Directory&gt;''' :

 AuthType Basic
 AuthName &quot;Accès privé&quot;
 AuthUserFile /chemin/vers/fichier/passwd
 Require user &lt;nom_de_l'utilisateur&gt;

* ''AuthType Basic'' indique qu'on utilise une authentification basique
* ''AuthName'' indique le nom de l'identificateur, qui s'affiche lorsque le client doit s'identifier
* ''AuthUserFile'' indique le chemin vers le fichier de mot de passe
* ''Require'' indique qui peut accéder au dossier.

Si vous voulez autoriser plusieurs utilisateurs, il vous suffit de lancer '''htpasswd''' (sans ''-c'' cette fois) pour rajouter un utilisateur.
Il faudra alors mettre, à la place de ''Require user'' :

 Require valid-user

Si vous utilisez le même fichier de mots de passe pour plusieurs sites, il vous est possible de faire des groupes d'utilisateurs, en créant un fichier groupe de la forme

 generic: foo bar baz
 crypt: alice bob

Il vous suffit alors d'indiquer :

 AuthGroupFile /chemin/vers/fichier/de/groupe
 Require group crypt

pour permettre seulement à alice et bob d'accéder au dossier, et non à foo, bar et baz...

== Contenu dynamique avec CGI ==

Le CGI permet de faire du web dynamique facilement. Le principe est simple : apache exécute un script ou un programme qui va générer le code HTML d'une page.
Le script doit être exécutable par l'utilisateur www-data, et écrire sur sa sortie standard :

 Content type text/html; charset=utf-8

suivi du code HTML de la page à afficher.

'''Attention :''' À chaque interrogation de la page, apache lance un nouveau processus qui exécute le script, ce qui consomme des ressources systèmes à chaque fois.
On peut limiter l'utilisation des ressources avec Fast-CGI, mais le mieux est d'utiliser un module qui permettra de lancer des scripts avec un interpréteur intégré à apache, sans créer de nouveau processus à chaque fois. On trouvera par exemple mod_php (pour les scripts php) ou mod_perl (pour les scripts perl). C'est ce qui est le plus utilisé aujourd'hui...

Pour utiliser du CGI avec Apache, il y a deux méthodes. La première est d'ajouter dans '''&lt;Directory&gt;''' :

 Options +ExecCGI
 Add-Handler cgi-script .cgi .pl

Ainsi les script nommés en .cgi ou .pl seront exécutés au lieu d'être affiché.
La seconde méthode est plus sécurisée car elle permet de mettre les scripts dans un dossier à part, qui n'est pas dans la racine du site. Pour celà, on met dans '''&lt;VirtualHost&gt;'''

 ScriptAlias /cgi-bin/ /chemin/vers/scripts/
 &lt;Directory &quot;/chemin/vers/scripts&quot;&gt;
         AllowOverride None
         Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
         Order allow,deny
         Allow from all
  &lt;/Directory&gt;

En allant à http://adresse_du_site/cgi-bin on est alors redirigé vers le dossier où sont situés les scripts CGI.


== Modules ==

=== Les modules apache ===

Apache permet d'ajouter des modules qui apportent de nouvelles fonctionnalités.
Certains sont installés et activés par défaut, comme par exemple le module auth_basic qui permet l'authentification ou le mod_deflate qui permet de compresser certains fichiers.

Les modules sont installés dans /etc/apache2/mods-available. Pour chaque module, vous trouverez un fichier .load qui contient la directive pour charger le module, et un fichier .conf qui contient sa configuration (que vous pouvez adapter à vos besoins).

On active et désactive un module avec les commandes '''a2enmod''' et '''a2dismod''', qui crééront des liens dans /etc/apache2/sites-enabled. Il vous faudra redémarrer apache pour que ce soit pris en compte :

 # /etc/init.d/apache2 restart

=== userdir : un site par utilisateur ===

Le module mod_userdir permet à chaque utilisateur d'avoir un site. Pour celà il faut activer le module :

 # a2enmod userdir

Une fois le module activé, chaque utilisateur peut placer un site dans un dossier  ~/public_html.
Par exemple, http://adresse_du_site/~foo pointera vers /home/foo/public_html.

Pour le désactiver, il suffit de faire

 # a2dismod userdir

(n'oubliez pas de redémarrer apache)

=== suexec : droits plus fin sur les CGI ===

Une fois activé, mod_suexec permet de lancer les scripts CGI avec les droits de l'utilisateur auquel appartient le script, au lieu de www-data.
Ainsi, vous pouvez donner donner des droits sur le systèmes à certains utilisateurs, et pas à d'autres.

=== Autres modules ===

En plus des modules installés par défaut dans /etc/apache2/mods-available, il vous est possible d'installer des modules supplémentaires via APT.
Voyez le résultat de :

 aptitude search ^libapache2-mod

pour avoir la liste des modules disponibles, parmi lesquels :

*mod_php : pour faire des sites dynamiques en php
*mod_perl : pour faire des sites dynamiques en perl
*[[Libapache2-mod-evasive|mod_evasive]] : apporte une protection contre les attaques DOS
*et plein d'autres...

== Chiffrement avec SSL ==

Pour utiliser SSL avec Apache, il vous faut obtenir un certificat SSL.
Un certificat autosigné vous est fourni lors de l'installation d'apache dans /etc/ssl/certs (ssl-cert-snakeoil.pem pour le certificat et ssl-cert-snakeoil.key pour la clé).
Cependant, vous souhaiterez probablement que le certificat corresponde à l'adresse de votre site. Vous pouvez alors en créer un avec [[openssl|openssl]] ou en obtenir un auprès d'une autorité de certification.

Une fois votre certificat obtenu, il vous suffit de créer un vhost sur le port 443, en y ajoutant les directives suivantes :

 SSL Engine On
 SSLCertificateFile    /chemin/vers/certificat
 SSLCertificateKeyFile /chemin/vers/clé

Ensuite il faut activer le SSL avec la commande :

 a2enmod ssl

Puis on redémarre le serveur. Le vhost fonctionnera alors en SSL.
Vous pouvez regarder les commentaires du vhost SSL par défaut (/etc/apache2/sites-available/default-ssl) pour voir les autres options disponibles avec SSL.

= Ressources =

La documentation d'apache est très bien faite et pour une bonne partie traduite en français, n'hésitez pas à l'utiliser :
http://httpd.apache.org/docs/2.2/fr</text>
      <sha1>qz92721hc8t7qx1hmdki6lhxozhejbs</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5774</id>
      <parentid>5773</parentid>
      <timestamp>2014-08-20T05:29:15Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Authentification */ chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="12835">= Installation =

 # aptitude install apache2

La configuration par défaut est déjà fonctionnelle.
Vous pouvez le vérifier avec un navigateur en allant sur http://localhost (ou http://adresse_de_la_machine à partir d'un autre poste). Le message « It works ! » doit apparaitre.
C'est la page par défaut, elle se trouve dans /var/www. Il vous suffit alors de mettre les fichiers de votre site dans ce répertoire pour qu'il soit utilisable...

= Configuration =

== Configuration des sites : Hôtes virtuels ==

Apache fonctionne avec des hôtes virtuels (virtual hosts) pour permettre d'héberger plusieurs sites sur une même machine. Pour créer un site, il faut créer un fichier dans /etc/apache2/sites-available (le site par défaut s'y trouve déjà).
La configuration d'un site se présente sous cette forme :

 &lt;VirtualHost *:80&gt;
        ServerAdmin webmaster@example.org
        ServerName  www.example.org
        ServerAlias foo.example.org bar.example.org
        DocumentRoot /var/www
 
        &lt;Directory /var/www/&gt;
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        &lt;/Directory&gt;
   
 	# Possible values include: debug, info, notice, warn, error, crit,
 	# alert, emerg.
        LogLevel warn
 
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        ErrorLog ${APACHE_LOG_DIR}/error.log
 &lt;/VirtualHost&gt;

=== Hôtes virtuels ===

Le site se place entre deux balises '''&lt;Virtualhost [IP:port]&gt;...&lt;/Virtualhost&gt;'''. Nous remplaçons [IP:port] par l'adresse IP et le port d'écoute du site. Si votre machine est accessible par plusieurs IP, vous pouvez donc mettre plusieurs sites, ayant chacun une adresse IP différente. Si vous voulez que votre site réponde quelque soit l'adresse IP, il suffit de mettre '*', comme dans l'exemple.
Vous pouvez de la même façon avoir des sites différents en fonction du port intérrogé, par exemple un site sur le port 80 et le port 8080.

Les directives ''ServerName'' et ''ServerAlias'' permette de faire des hôtes virtuels, non plus en fonction de l'IP ou du port, mais en fonction du nom de domaine utilisé par le client. Vous pouvez alors héberger plusieurs sites sur le port 80 avec une seule IP, si plusieurs noms de domaines pointent sur cette IP. C'est l'utilisation la plus courante des hôtes virtuels.
''ServerName'' ne prend qu'un seul nom de domaine. Si vous voulez que votre site réponde à plusieurs noms de domaine, il vous faut ajouter les domaines supplémentaires avec ''ServerAlias''.

Enfin, la directive ''DocumentRoot'' indique le chemin du répertoire où se trouve le site.

=== Répertoires ===

Les balises '''&lt;Directory [/chemin/vers/répertoire] &gt; ... &lt;/Directory&gt;''' permettent de configurer les option du répertoire, notamment via la directive ''Options'' :
* ''Indexes'' permet de voir le contenu du répertoire avec le navigateur s'il n'y a pas de index.html à la racine
* ''FollowSymLinks'' permet de suivre les liens symboliques
* ''MultiViews'' permet d'avoir des contenus différents en fonction de ce que le navigateur envoie (par exemple dans des langues différentes, comme c'est le cas pour http://www.debian.org)
Pour désactiver une option, il suffit de la faire précéder d'un '-' (par exemple : ''-Indexes'' empêchera de voir le contenu du répertoire)

La directive ''AllowOverride'' permet d'autoriser l'utilisation de fichiers .htaccess. Ainsi si vous hébergez un site mais que vous n'en êtes pas le développeur, vous pouvez laisser la possibilité au développeur de configurer un répertoire sans lui laisser l'accès au fichier de configuration d'Apache. Il lui suffira de mettre la configuration dans un fichier .htaccess à la racine du répertoire. Le fichier est lu à chaque appel du site, le développeur n'a donc pas besoin de vous demander de recharger apache après avoir changé la configuration. Mais c'est donc plus couteux en performances, ainsi qu'en sécurité.
Avec ''AllowOverride None'', les .htaccess sont ignorés. Avec ''AllowOverride All'', ils sont pris en compte.
Vous pouvez aussi n'autoriser que certaines configurations, voir http://httpd.apache.org/docs/2.2/fr/mod/core.html#allowoverride

Order vous permet de choisir comment vous autorisez l'accès à votre site :
* ''Order Allow,Deny'' : le site sera accessible si l'adresse est dans une directive ''Allow from'' et n'est pas dans une directive ''Deny from''
* ''Order Deny,Allow'' : le site sera accessible si l'adresse est dans une directive ''Allow from'' ou n'est pas dans une directive ''Deny from''
Ainsi, si vous voulez que votre site soit accessible uniquement à partir de votre réseau local 192.168.0.0/24, vous pouvez mettre au choix :

 Order Allow,Deny
 Allow from 192.168.0.0/24

 Order Deny,Allow
 Deny from all
 Allow from 192.168.0.0/24


Vous pouvez avoir plusieurs balises '''&lt;Directory&gt;''' si vous voulez mettre des droits différents sur un sous-répertoire de votre site. Il suffit de les mettre à la suite (sans les imbriquer).

=== Logs ===

La directive ''LogLevel'' permet de choisir le niveau de verbosité des logs parmi : debug, info, notice, warn, error, crit, alert, emerg.
''CustomLog'' et ''ErrorLog'' permettent de choisir l'emplacement des logs. Vous pouvez ainsi utiliser un fichier de logs par site ou le même, au choix.

=== Activation du site ===

Debian fournit deux scripts permettant de facilement activer et désactiver des sites. a2ensite et a2dissite. Une fois votre fichier créé dans /etc/apache2/sites-available, il vous suffit de faire :

 # a2ensite nom_du_fichier

pour activer le site. Ceci crééra un lien dans /etc/apache2/sites-enabled, qui sera lu par apache. Pour le désactiver, il faudra faire :

 # a2dissite nom_du_fichier

Dans les deux cas, n'oubliez pas de recharger la configuration d'apache après :

 # /etc/init.d/apache2 reload


NB : Vous remarquerez que le lien pour le site « default » est ''000-default'''. Ceci est fait de sorte que ce soit le premier à être lu par apache. Ainsi, si sur tous les sites, aucun ''ServerName'' ou ''ServerAlias'' ne correspond à l'URL intérrogé par le client, c'est ce site qu'il lui sera envoyé...

== Authentification ==

Pour qu'un répertoire ne soit accessible à certaines personnes, il faut créer un fichier de mots de passe. Apache fournit l'utilitaire '''htpasswd''' pour celà.
Pour créer le fichier, il faut utiliser l'option ''-c'' :

 # htpasswd -c /chemin/vers/fichier/passwd &lt;nom_de_l'utilisateur&gt;

'''htpasswd''' vous demande alors le mot de passe de l'utilisateur.
Le fichier htpasswd doit être lisible par l'utilisateur d'apache (www-data sous debian).

Pour restreindre un répertoire à cet utilisateur, il faut alors mettre dans le '''&lt;Directory&gt;''' :

 AuthType Basic
 AuthName &quot;Accès privé&quot;
 AuthUserFile /chemin/vers/fichier/passwd
 Require user &lt;nom_de_l'utilisateur&gt;

* ''AuthType Basic'' indique qu'on utilise une authentification basique
* ''AuthName'' indique le nom de l'identificateur, qui s'affiche lorsque le client doit s'identifier
* ''AuthUserFile'' indique le chemin vers le fichier de mot de passe
* ''Require'' indique qui peut accéder au répertoire.

Si vous voulez autoriser plusieurs utilisateurs, il vous suffit de lancer '''htpasswd''' (sans ''-c'' cette fois) pour rajouter un utilisateur.
Il faudra alors mettre, à la place de ''Require user'' :

 Require valid-user

Si vous utilisez le même fichier de mots de passe pour plusieurs sites, il vous est possible de faire des groupes d'utilisateurs, en créant un fichier groupe de la forme

 generic: foo bar baz
 crypt: alice bob

Il vous suffit alors d'indiquer :

 AuthGroupFile /chemin/vers/fichier/de/groupe
 Require group crypt

pour permettre seulement à alice et bob d'accéder au répertoire, et non à foo, bar et baz...

== Contenu dynamique avec CGI ==

Le CGI permet de faire du web dynamique facilement. Le principe est simple : apache exécute un script ou un programme qui va générer le code HTML d'une page.
Le script doit être exécutable par l'utilisateur www-data, et écrire sur sa sortie standard :

 Content type text/html; charset=utf-8

suivi du code HTML de la page à afficher.

'''Attention :''' À chaque interrogation de la page, apache lance un nouveau processus qui exécute le script, ce qui consomme des ressources systèmes à chaque fois.
On peut limiter l'utilisation des ressources avec Fast-CGI, mais le mieux est d'utiliser un module qui permettra de lancer des scripts avec un interpréteur intégré à apache, sans créer de nouveau processus à chaque fois. On trouvera par exemple mod_php (pour les scripts php) ou mod_perl (pour les scripts perl). C'est ce qui est le plus utilisé aujourd'hui...

Pour utiliser du CGI avec Apache, il y a deux méthodes. La première est d'ajouter dans '''&lt;Directory&gt;''' :

 Options +ExecCGI
 Add-Handler cgi-script .cgi .pl

Ainsi les script nommés en .cgi ou .pl seront exécutés au lieu d'être affiché.
La seconde méthode est plus sécurisée car elle permet de mettre les scripts dans un dossier à part, qui n'est pas dans la racine du site. Pour celà, on met dans '''&lt;VirtualHost&gt;'''

 ScriptAlias /cgi-bin/ /chemin/vers/scripts/
 &lt;Directory &quot;/chemin/vers/scripts&quot;&gt;
         AllowOverride None
         Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
         Order allow,deny
         Allow from all
  &lt;/Directory&gt;

En allant à http://adresse_du_site/cgi-bin on est alors redirigé vers le dossier où sont situés les scripts CGI.


== Modules ==

=== Les modules apache ===

Apache permet d'ajouter des modules qui apportent de nouvelles fonctionnalités.
Certains sont installés et activés par défaut, comme par exemple le module auth_basic qui permet l'authentification ou le mod_deflate qui permet de compresser certains fichiers.

Les modules sont installés dans /etc/apache2/mods-available. Pour chaque module, vous trouverez un fichier .load qui contient la directive pour charger le module, et un fichier .conf qui contient sa configuration (que vous pouvez adapter à vos besoins).

On active et désactive un module avec les commandes '''a2enmod''' et '''a2dismod''', qui crééront des liens dans /etc/apache2/sites-enabled. Il vous faudra redémarrer apache pour que ce soit pris en compte :

 # /etc/init.d/apache2 restart

=== userdir : un site par utilisateur ===

Le module mod_userdir permet à chaque utilisateur d'avoir un site. Pour celà il faut activer le module :

 # a2enmod userdir

Une fois le module activé, chaque utilisateur peut placer un site dans un dossier  ~/public_html.
Par exemple, http://adresse_du_site/~foo pointera vers /home/foo/public_html.

Pour le désactiver, il suffit de faire

 # a2dismod userdir

(n'oubliez pas de redémarrer apache)

=== suexec : droits plus fin sur les CGI ===

Une fois activé, mod_suexec permet de lancer les scripts CGI avec les droits de l'utilisateur auquel appartient le script, au lieu de www-data.
Ainsi, vous pouvez donner donner des droits sur le systèmes à certains utilisateurs, et pas à d'autres.

=== Autres modules ===

En plus des modules installés par défaut dans /etc/apache2/mods-available, il vous est possible d'installer des modules supplémentaires via APT.
Voyez le résultat de :

 aptitude search ^libapache2-mod

pour avoir la liste des modules disponibles, parmi lesquels :

*mod_php : pour faire des sites dynamiques en php
*mod_perl : pour faire des sites dynamiques en perl
*[[Libapache2-mod-evasive|mod_evasive]] : apporte une protection contre les attaques DOS
*et plein d'autres...

== Chiffrement avec SSL ==

Pour utiliser SSL avec Apache, il vous faut obtenir un certificat SSL.
Un certificat autosigné vous est fourni lors de l'installation d'apache dans /etc/ssl/certs (ssl-cert-snakeoil.pem pour le certificat et ssl-cert-snakeoil.key pour la clé).
Cependant, vous souhaiterez probablement que le certificat corresponde à l'adresse de votre site. Vous pouvez alors en créer un avec [[openssl|openssl]] ou en obtenir un auprès d'une autorité de certification.

Une fois votre certificat obtenu, il vous suffit de créer un vhost sur le port 443, en y ajoutant les directives suivantes :

 SSL Engine On
 SSLCertificateFile    /chemin/vers/certificat
 SSLCertificateKeyFile /chemin/vers/clé

Ensuite il faut activer le SSL avec la commande :

 a2enmod ssl

Puis on redémarre le serveur. Le vhost fonctionnera alors en SSL.
Vous pouvez regarder les commentaires du vhost SSL par défaut (/etc/apache2/sites-available/default-ssl) pour voir les autres options disponibles avec SSL.

= Ressources =

La documentation d'apache est très bien faite et pour une bonne partie traduite en français, n'hésitez pas à l'utiliser :
http://httpd.apache.org/docs/2.2/fr</text>
      <sha1>2qmpmahzx1bw44qgaowd2jja2ouv2lx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5775</id>
      <parentid>5774</parentid>
      <timestamp>2014-08-20T05:30:01Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Contenu dynamique avec CGI */ chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="12842">= Installation =

 # aptitude install apache2

La configuration par défaut est déjà fonctionnelle.
Vous pouvez le vérifier avec un navigateur en allant sur http://localhost (ou http://adresse_de_la_machine à partir d'un autre poste). Le message « It works ! » doit apparaitre.
C'est la page par défaut, elle se trouve dans /var/www. Il vous suffit alors de mettre les fichiers de votre site dans ce répertoire pour qu'il soit utilisable...

= Configuration =

== Configuration des sites : Hôtes virtuels ==

Apache fonctionne avec des hôtes virtuels (virtual hosts) pour permettre d'héberger plusieurs sites sur une même machine. Pour créer un site, il faut créer un fichier dans /etc/apache2/sites-available (le site par défaut s'y trouve déjà).
La configuration d'un site se présente sous cette forme :

 &lt;VirtualHost *:80&gt;
        ServerAdmin webmaster@example.org
        ServerName  www.example.org
        ServerAlias foo.example.org bar.example.org
        DocumentRoot /var/www
 
        &lt;Directory /var/www/&gt;
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        &lt;/Directory&gt;
   
 	# Possible values include: debug, info, notice, warn, error, crit,
 	# alert, emerg.
        LogLevel warn
 
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        ErrorLog ${APACHE_LOG_DIR}/error.log
 &lt;/VirtualHost&gt;

=== Hôtes virtuels ===

Le site se place entre deux balises '''&lt;Virtualhost [IP:port]&gt;...&lt;/Virtualhost&gt;'''. Nous remplaçons [IP:port] par l'adresse IP et le port d'écoute du site. Si votre machine est accessible par plusieurs IP, vous pouvez donc mettre plusieurs sites, ayant chacun une adresse IP différente. Si vous voulez que votre site réponde quelque soit l'adresse IP, il suffit de mettre '*', comme dans l'exemple.
Vous pouvez de la même façon avoir des sites différents en fonction du port intérrogé, par exemple un site sur le port 80 et le port 8080.

Les directives ''ServerName'' et ''ServerAlias'' permette de faire des hôtes virtuels, non plus en fonction de l'IP ou du port, mais en fonction du nom de domaine utilisé par le client. Vous pouvez alors héberger plusieurs sites sur le port 80 avec une seule IP, si plusieurs noms de domaines pointent sur cette IP. C'est l'utilisation la plus courante des hôtes virtuels.
''ServerName'' ne prend qu'un seul nom de domaine. Si vous voulez que votre site réponde à plusieurs noms de domaine, il vous faut ajouter les domaines supplémentaires avec ''ServerAlias''.

Enfin, la directive ''DocumentRoot'' indique le chemin du répertoire où se trouve le site.

=== Répertoires ===

Les balises '''&lt;Directory [/chemin/vers/répertoire] &gt; ... &lt;/Directory&gt;''' permettent de configurer les option du répertoire, notamment via la directive ''Options'' :
* ''Indexes'' permet de voir le contenu du répertoire avec le navigateur s'il n'y a pas de index.html à la racine
* ''FollowSymLinks'' permet de suivre les liens symboliques
* ''MultiViews'' permet d'avoir des contenus différents en fonction de ce que le navigateur envoie (par exemple dans des langues différentes, comme c'est le cas pour http://www.debian.org)
Pour désactiver une option, il suffit de la faire précéder d'un '-' (par exemple : ''-Indexes'' empêchera de voir le contenu du répertoire)

La directive ''AllowOverride'' permet d'autoriser l'utilisation de fichiers .htaccess. Ainsi si vous hébergez un site mais que vous n'en êtes pas le développeur, vous pouvez laisser la possibilité au développeur de configurer un répertoire sans lui laisser l'accès au fichier de configuration d'Apache. Il lui suffira de mettre la configuration dans un fichier .htaccess à la racine du répertoire. Le fichier est lu à chaque appel du site, le développeur n'a donc pas besoin de vous demander de recharger apache après avoir changé la configuration. Mais c'est donc plus couteux en performances, ainsi qu'en sécurité.
Avec ''AllowOverride None'', les .htaccess sont ignorés. Avec ''AllowOverride All'', ils sont pris en compte.
Vous pouvez aussi n'autoriser que certaines configurations, voir http://httpd.apache.org/docs/2.2/fr/mod/core.html#allowoverride

Order vous permet de choisir comment vous autorisez l'accès à votre site :
* ''Order Allow,Deny'' : le site sera accessible si l'adresse est dans une directive ''Allow from'' et n'est pas dans une directive ''Deny from''
* ''Order Deny,Allow'' : le site sera accessible si l'adresse est dans une directive ''Allow from'' ou n'est pas dans une directive ''Deny from''
Ainsi, si vous voulez que votre site soit accessible uniquement à partir de votre réseau local 192.168.0.0/24, vous pouvez mettre au choix :

 Order Allow,Deny
 Allow from 192.168.0.0/24

 Order Deny,Allow
 Deny from all
 Allow from 192.168.0.0/24


Vous pouvez avoir plusieurs balises '''&lt;Directory&gt;''' si vous voulez mettre des droits différents sur un sous-répertoire de votre site. Il suffit de les mettre à la suite (sans les imbriquer).

=== Logs ===

La directive ''LogLevel'' permet de choisir le niveau de verbosité des logs parmi : debug, info, notice, warn, error, crit, alert, emerg.
''CustomLog'' et ''ErrorLog'' permettent de choisir l'emplacement des logs. Vous pouvez ainsi utiliser un fichier de logs par site ou le même, au choix.

=== Activation du site ===

Debian fournit deux scripts permettant de facilement activer et désactiver des sites. a2ensite et a2dissite. Une fois votre fichier créé dans /etc/apache2/sites-available, il vous suffit de faire :

 # a2ensite nom_du_fichier

pour activer le site. Ceci crééra un lien dans /etc/apache2/sites-enabled, qui sera lu par apache. Pour le désactiver, il faudra faire :

 # a2dissite nom_du_fichier

Dans les deux cas, n'oubliez pas de recharger la configuration d'apache après :

 # /etc/init.d/apache2 reload


NB : Vous remarquerez que le lien pour le site « default » est ''000-default'''. Ceci est fait de sorte que ce soit le premier à être lu par apache. Ainsi, si sur tous les sites, aucun ''ServerName'' ou ''ServerAlias'' ne correspond à l'URL intérrogé par le client, c'est ce site qu'il lui sera envoyé...

== Authentification ==

Pour qu'un répertoire ne soit accessible à certaines personnes, il faut créer un fichier de mots de passe. Apache fournit l'utilitaire '''htpasswd''' pour celà.
Pour créer le fichier, il faut utiliser l'option ''-c'' :

 # htpasswd -c /chemin/vers/fichier/passwd &lt;nom_de_l'utilisateur&gt;

'''htpasswd''' vous demande alors le mot de passe de l'utilisateur.
Le fichier htpasswd doit être lisible par l'utilisateur d'apache (www-data sous debian).

Pour restreindre un répertoire à cet utilisateur, il faut alors mettre dans le '''&lt;Directory&gt;''' :

 AuthType Basic
 AuthName &quot;Accès privé&quot;
 AuthUserFile /chemin/vers/fichier/passwd
 Require user &lt;nom_de_l'utilisateur&gt;

* ''AuthType Basic'' indique qu'on utilise une authentification basique
* ''AuthName'' indique le nom de l'identificateur, qui s'affiche lorsque le client doit s'identifier
* ''AuthUserFile'' indique le chemin vers le fichier de mot de passe
* ''Require'' indique qui peut accéder au répertoire.

Si vous voulez autoriser plusieurs utilisateurs, il vous suffit de lancer '''htpasswd''' (sans ''-c'' cette fois) pour rajouter un utilisateur.
Il faudra alors mettre, à la place de ''Require user'' :

 Require valid-user

Si vous utilisez le même fichier de mots de passe pour plusieurs sites, il vous est possible de faire des groupes d'utilisateurs, en créant un fichier groupe de la forme

 generic: foo bar baz
 crypt: alice bob

Il vous suffit alors d'indiquer :

 AuthGroupFile /chemin/vers/fichier/de/groupe
 Require group crypt

pour permettre seulement à alice et bob d'accéder au répertoire, et non à foo, bar et baz...

== Contenu dynamique avec CGI ==

Le CGI permet de faire du web dynamique facilement. Le principe est simple : apache exécute un script ou un programme qui va générer le code HTML d'une page.
Le script doit être exécutable par l'utilisateur www-data, et écrire sur sa sortie standard :

 Content type text/html; charset=utf-8

suivi du code HTML de la page à afficher.

'''Attention :''' À chaque interrogation de la page, apache lance un nouveau processus qui exécute le script, ce qui consomme des ressources systèmes à chaque fois.
On peut limiter l'utilisation des ressources avec Fast-CGI, mais le mieux est d'utiliser un module qui permettra de lancer des scripts avec un interpréteur intégré à apache, sans créer de nouveau processus à chaque fois. On trouvera par exemple mod_php (pour les scripts php) ou mod_perl (pour les scripts perl). C'est ce qui est le plus utilisé aujourd'hui...

Pour utiliser du CGI avec Apache, il y a deux méthodes. La première est d'ajouter dans '''&lt;Directory&gt;''' :

 Options +ExecCGI
 Add-Handler cgi-script .cgi .pl

Ainsi les script nommés en .cgi ou .pl seront exécutés au lieu d'être affiché.
La seconde méthode est plus sécurisée car elle permet de mettre les scripts dans un répertoire à part, qui n'est pas dans la racine du site. Pour celà, on met dans '''&lt;VirtualHost&gt;'''

 ScriptAlias /cgi-bin/ /chemin/vers/scripts/
 &lt;Directory &quot;/chemin/vers/scripts&quot;&gt;
         AllowOverride None
         Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
         Order allow,deny
         Allow from all
  &lt;/Directory&gt;

En allant à http://adresse_du_site/cgi-bin on est alors redirigé vers le répertoire où sont situés les scripts CGI.

== Modules ==

=== Les modules apache ===

Apache permet d'ajouter des modules qui apportent de nouvelles fonctionnalités.
Certains sont installés et activés par défaut, comme par exemple le module auth_basic qui permet l'authentification ou le mod_deflate qui permet de compresser certains fichiers.

Les modules sont installés dans /etc/apache2/mods-available. Pour chaque module, vous trouverez un fichier .load qui contient la directive pour charger le module, et un fichier .conf qui contient sa configuration (que vous pouvez adapter à vos besoins).

On active et désactive un module avec les commandes '''a2enmod''' et '''a2dismod''', qui crééront des liens dans /etc/apache2/sites-enabled. Il vous faudra redémarrer apache pour que ce soit pris en compte :

 # /etc/init.d/apache2 restart

=== userdir : un site par utilisateur ===

Le module mod_userdir permet à chaque utilisateur d'avoir un site. Pour celà il faut activer le module :

 # a2enmod userdir

Une fois le module activé, chaque utilisateur peut placer un site dans un dossier  ~/public_html.
Par exemple, http://adresse_du_site/~foo pointera vers /home/foo/public_html.

Pour le désactiver, il suffit de faire

 # a2dismod userdir

(n'oubliez pas de redémarrer apache)

=== suexec : droits plus fin sur les CGI ===

Une fois activé, mod_suexec permet de lancer les scripts CGI avec les droits de l'utilisateur auquel appartient le script, au lieu de www-data.
Ainsi, vous pouvez donner donner des droits sur le systèmes à certains utilisateurs, et pas à d'autres.

=== Autres modules ===

En plus des modules installés par défaut dans /etc/apache2/mods-available, il vous est possible d'installer des modules supplémentaires via APT.
Voyez le résultat de :

 aptitude search ^libapache2-mod

pour avoir la liste des modules disponibles, parmi lesquels :

*mod_php : pour faire des sites dynamiques en php
*mod_perl : pour faire des sites dynamiques en perl
*[[Libapache2-mod-evasive|mod_evasive]] : apporte une protection contre les attaques DOS
*et plein d'autres...

== Chiffrement avec SSL ==

Pour utiliser SSL avec Apache, il vous faut obtenir un certificat SSL.
Un certificat autosigné vous est fourni lors de l'installation d'apache dans /etc/ssl/certs (ssl-cert-snakeoil.pem pour le certificat et ssl-cert-snakeoil.key pour la clé).
Cependant, vous souhaiterez probablement que le certificat corresponde à l'adresse de votre site. Vous pouvez alors en créer un avec [[openssl|openssl]] ou en obtenir un auprès d'une autorité de certification.

Une fois votre certificat obtenu, il vous suffit de créer un vhost sur le port 443, en y ajoutant les directives suivantes :

 SSL Engine On
 SSLCertificateFile    /chemin/vers/certificat
 SSLCertificateKeyFile /chemin/vers/clé

Ensuite il faut activer le SSL avec la commande :

 a2enmod ssl

Puis on redémarre le serveur. Le vhost fonctionnera alors en SSL.
Vous pouvez regarder les commentaires du vhost SSL par défaut (/etc/apache2/sites-available/default-ssl) pour voir les autres options disponibles avec SSL.

= Ressources =

La documentation d'apache est très bien faite et pour une bonne partie traduite en français, n'hésitez pas à l'utiliser :
http://httpd.apache.org/docs/2.2/fr</text>
      <sha1>80ggu7xzxu0869i5bvqg6qjfc92tcfd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5776</id>
      <parentid>5775</parentid>
      <timestamp>2014-08-20T05:30:50Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* userdir : un site par utilisateur */ chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="12846">= Installation =

 # aptitude install apache2

La configuration par défaut est déjà fonctionnelle.
Vous pouvez le vérifier avec un navigateur en allant sur http://localhost (ou http://adresse_de_la_machine à partir d'un autre poste). Le message « It works ! » doit apparaitre.
C'est la page par défaut, elle se trouve dans /var/www. Il vous suffit alors de mettre les fichiers de votre site dans ce répertoire pour qu'il soit utilisable...

= Configuration =

== Configuration des sites : Hôtes virtuels ==

Apache fonctionne avec des hôtes virtuels (virtual hosts) pour permettre d'héberger plusieurs sites sur une même machine. Pour créer un site, il faut créer un fichier dans /etc/apache2/sites-available (le site par défaut s'y trouve déjà).
La configuration d'un site se présente sous cette forme :

 &lt;VirtualHost *:80&gt;
        ServerAdmin webmaster@example.org
        ServerName  www.example.org
        ServerAlias foo.example.org bar.example.org
        DocumentRoot /var/www
 
        &lt;Directory /var/www/&gt;
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        &lt;/Directory&gt;
   
 	# Possible values include: debug, info, notice, warn, error, crit,
 	# alert, emerg.
        LogLevel warn
 
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        ErrorLog ${APACHE_LOG_DIR}/error.log
 &lt;/VirtualHost&gt;

=== Hôtes virtuels ===

Le site se place entre deux balises '''&lt;Virtualhost [IP:port]&gt;...&lt;/Virtualhost&gt;'''. Nous remplaçons [IP:port] par l'adresse IP et le port d'écoute du site. Si votre machine est accessible par plusieurs IP, vous pouvez donc mettre plusieurs sites, ayant chacun une adresse IP différente. Si vous voulez que votre site réponde quelque soit l'adresse IP, il suffit de mettre '*', comme dans l'exemple.
Vous pouvez de la même façon avoir des sites différents en fonction du port intérrogé, par exemple un site sur le port 80 et le port 8080.

Les directives ''ServerName'' et ''ServerAlias'' permette de faire des hôtes virtuels, non plus en fonction de l'IP ou du port, mais en fonction du nom de domaine utilisé par le client. Vous pouvez alors héberger plusieurs sites sur le port 80 avec une seule IP, si plusieurs noms de domaines pointent sur cette IP. C'est l'utilisation la plus courante des hôtes virtuels.
''ServerName'' ne prend qu'un seul nom de domaine. Si vous voulez que votre site réponde à plusieurs noms de domaine, il vous faut ajouter les domaines supplémentaires avec ''ServerAlias''.

Enfin, la directive ''DocumentRoot'' indique le chemin du répertoire où se trouve le site.

=== Répertoires ===

Les balises '''&lt;Directory [/chemin/vers/répertoire] &gt; ... &lt;/Directory&gt;''' permettent de configurer les option du répertoire, notamment via la directive ''Options'' :
* ''Indexes'' permet de voir le contenu du répertoire avec le navigateur s'il n'y a pas de index.html à la racine
* ''FollowSymLinks'' permet de suivre les liens symboliques
* ''MultiViews'' permet d'avoir des contenus différents en fonction de ce que le navigateur envoie (par exemple dans des langues différentes, comme c'est le cas pour http://www.debian.org)
Pour désactiver une option, il suffit de la faire précéder d'un '-' (par exemple : ''-Indexes'' empêchera de voir le contenu du répertoire)

La directive ''AllowOverride'' permet d'autoriser l'utilisation de fichiers .htaccess. Ainsi si vous hébergez un site mais que vous n'en êtes pas le développeur, vous pouvez laisser la possibilité au développeur de configurer un répertoire sans lui laisser l'accès au fichier de configuration d'Apache. Il lui suffira de mettre la configuration dans un fichier .htaccess à la racine du répertoire. Le fichier est lu à chaque appel du site, le développeur n'a donc pas besoin de vous demander de recharger apache après avoir changé la configuration. Mais c'est donc plus couteux en performances, ainsi qu'en sécurité.
Avec ''AllowOverride None'', les .htaccess sont ignorés. Avec ''AllowOverride All'', ils sont pris en compte.
Vous pouvez aussi n'autoriser que certaines configurations, voir http://httpd.apache.org/docs/2.2/fr/mod/core.html#allowoverride

Order vous permet de choisir comment vous autorisez l'accès à votre site :
* ''Order Allow,Deny'' : le site sera accessible si l'adresse est dans une directive ''Allow from'' et n'est pas dans une directive ''Deny from''
* ''Order Deny,Allow'' : le site sera accessible si l'adresse est dans une directive ''Allow from'' ou n'est pas dans une directive ''Deny from''
Ainsi, si vous voulez que votre site soit accessible uniquement à partir de votre réseau local 192.168.0.0/24, vous pouvez mettre au choix :

 Order Allow,Deny
 Allow from 192.168.0.0/24

 Order Deny,Allow
 Deny from all
 Allow from 192.168.0.0/24


Vous pouvez avoir plusieurs balises '''&lt;Directory&gt;''' si vous voulez mettre des droits différents sur un sous-répertoire de votre site. Il suffit de les mettre à la suite (sans les imbriquer).

=== Logs ===

La directive ''LogLevel'' permet de choisir le niveau de verbosité des logs parmi : debug, info, notice, warn, error, crit, alert, emerg.
''CustomLog'' et ''ErrorLog'' permettent de choisir l'emplacement des logs. Vous pouvez ainsi utiliser un fichier de logs par site ou le même, au choix.

=== Activation du site ===

Debian fournit deux scripts permettant de facilement activer et désactiver des sites. a2ensite et a2dissite. Une fois votre fichier créé dans /etc/apache2/sites-available, il vous suffit de faire :

 # a2ensite nom_du_fichier

pour activer le site. Ceci crééra un lien dans /etc/apache2/sites-enabled, qui sera lu par apache. Pour le désactiver, il faudra faire :

 # a2dissite nom_du_fichier

Dans les deux cas, n'oubliez pas de recharger la configuration d'apache après :

 # /etc/init.d/apache2 reload


NB : Vous remarquerez que le lien pour le site « default » est ''000-default'''. Ceci est fait de sorte que ce soit le premier à être lu par apache. Ainsi, si sur tous les sites, aucun ''ServerName'' ou ''ServerAlias'' ne correspond à l'URL intérrogé par le client, c'est ce site qu'il lui sera envoyé...

== Authentification ==

Pour qu'un répertoire ne soit accessible à certaines personnes, il faut créer un fichier de mots de passe. Apache fournit l'utilitaire '''htpasswd''' pour celà.
Pour créer le fichier, il faut utiliser l'option ''-c'' :

 # htpasswd -c /chemin/vers/fichier/passwd &lt;nom_de_l'utilisateur&gt;

'''htpasswd''' vous demande alors le mot de passe de l'utilisateur.
Le fichier htpasswd doit être lisible par l'utilisateur d'apache (www-data sous debian).

Pour restreindre un répertoire à cet utilisateur, il faut alors mettre dans le '''&lt;Directory&gt;''' :

 AuthType Basic
 AuthName &quot;Accès privé&quot;
 AuthUserFile /chemin/vers/fichier/passwd
 Require user &lt;nom_de_l'utilisateur&gt;

* ''AuthType Basic'' indique qu'on utilise une authentification basique
* ''AuthName'' indique le nom de l'identificateur, qui s'affiche lorsque le client doit s'identifier
* ''AuthUserFile'' indique le chemin vers le fichier de mot de passe
* ''Require'' indique qui peut accéder au répertoire.

Si vous voulez autoriser plusieurs utilisateurs, il vous suffit de lancer '''htpasswd''' (sans ''-c'' cette fois) pour rajouter un utilisateur.
Il faudra alors mettre, à la place de ''Require user'' :

 Require valid-user

Si vous utilisez le même fichier de mots de passe pour plusieurs sites, il vous est possible de faire des groupes d'utilisateurs, en créant un fichier groupe de la forme

 generic: foo bar baz
 crypt: alice bob

Il vous suffit alors d'indiquer :

 AuthGroupFile /chemin/vers/fichier/de/groupe
 Require group crypt

pour permettre seulement à alice et bob d'accéder au répertoire, et non à foo, bar et baz...

== Contenu dynamique avec CGI ==

Le CGI permet de faire du web dynamique facilement. Le principe est simple : apache exécute un script ou un programme qui va générer le code HTML d'une page.
Le script doit être exécutable par l'utilisateur www-data, et écrire sur sa sortie standard :

 Content type text/html; charset=utf-8

suivi du code HTML de la page à afficher.

'''Attention :''' À chaque interrogation de la page, apache lance un nouveau processus qui exécute le script, ce qui consomme des ressources systèmes à chaque fois.
On peut limiter l'utilisation des ressources avec Fast-CGI, mais le mieux est d'utiliser un module qui permettra de lancer des scripts avec un interpréteur intégré à apache, sans créer de nouveau processus à chaque fois. On trouvera par exemple mod_php (pour les scripts php) ou mod_perl (pour les scripts perl). C'est ce qui est le plus utilisé aujourd'hui...

Pour utiliser du CGI avec Apache, il y a deux méthodes. La première est d'ajouter dans '''&lt;Directory&gt;''' :

 Options +ExecCGI
 Add-Handler cgi-script .cgi .pl

Ainsi les script nommés en .cgi ou .pl seront exécutés au lieu d'être affiché.
La seconde méthode est plus sécurisée car elle permet de mettre les scripts dans un répertoire à part, qui n'est pas dans la racine du site. Pour celà, on met dans '''&lt;VirtualHost&gt;'''

 ScriptAlias /cgi-bin/ /chemin/vers/scripts/
 &lt;Directory &quot;/chemin/vers/scripts&quot;&gt;
         AllowOverride None
         Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
         Order allow,deny
         Allow from all
  &lt;/Directory&gt;

En allant à http://adresse_du_site/cgi-bin on est alors redirigé vers le répertoire où sont situés les scripts CGI.

== Modules ==

=== Les modules apache ===

Apache permet d'ajouter des modules qui apportent de nouvelles fonctionnalités.
Certains sont installés et activés par défaut, comme par exemple le module auth_basic qui permet l'authentification ou le mod_deflate qui permet de compresser certains fichiers.

Les modules sont installés dans /etc/apache2/mods-available. Pour chaque module, vous trouverez un fichier .load qui contient la directive pour charger le module, et un fichier .conf qui contient sa configuration (que vous pouvez adapter à vos besoins).

On active et désactive un module avec les commandes '''a2enmod''' et '''a2dismod''', qui crééront des liens dans /etc/apache2/sites-enabled. Il vous faudra redémarrer apache pour que ce soit pris en compte :

 # /etc/init.d/apache2 restart

=== userdir : un site par utilisateur ===

Le module mod_userdir permet à chaque utilisateur d'avoir un site. Pour celà il faut activer le module :

 # a2enmod userdir

Une fois le module activé, chaque utilisateur peut placer un site dans un répertoire  ~/public_html.
Par exemple, http://adresse_du_site/~foo pointera vers /home/foo/public_html.

Pour le désactiver, il suffit de faire

 # a2dismod userdir

(n'oubliez pas de redémarrer apache)

=== suexec : droits plus fin sur les CGI ===

Une fois activé, mod_suexec permet de lancer les scripts CGI avec les droits de l'utilisateur auquel appartient le script, au lieu de www-data.
Ainsi, vous pouvez donner donner des droits sur le systèmes à certains utilisateurs, et pas à d'autres.

=== Autres modules ===

En plus des modules installés par défaut dans /etc/apache2/mods-available, il vous est possible d'installer des modules supplémentaires via APT.
Voyez le résultat de :

 aptitude search ^libapache2-mod

pour avoir la liste des modules disponibles, parmi lesquels :

*mod_php : pour faire des sites dynamiques en php
*mod_perl : pour faire des sites dynamiques en perl
*[[Libapache2-mod-evasive|mod_evasive]] : apporte une protection contre les attaques DOS
*et plein d'autres...

== Chiffrement avec SSL ==

Pour utiliser SSL avec Apache, il vous faut obtenir un certificat SSL.
Un certificat autosigné vous est fourni lors de l'installation d'apache dans /etc/ssl/certs (ssl-cert-snakeoil.pem pour le certificat et ssl-cert-snakeoil.key pour la clé).
Cependant, vous souhaiterez probablement que le certificat corresponde à l'adresse de votre site. Vous pouvez alors en créer un avec [[openssl|openssl]] ou en obtenir un auprès d'une autorité de certification.

Une fois votre certificat obtenu, il vous suffit de créer un vhost sur le port 443, en y ajoutant les directives suivantes :

 SSL Engine On
 SSLCertificateFile    /chemin/vers/certificat
 SSLCertificateKeyFile /chemin/vers/clé

Ensuite il faut activer le SSL avec la commande :

 a2enmod ssl

Puis on redémarre le serveur. Le vhost fonctionnera alors en SSL.
Vous pouvez regarder les commentaires du vhost SSL par défaut (/etc/apache2/sites-available/default-ssl) pour voir les autres options disponibles avec SSL.

= Ressources =

La documentation d'apache est très bien faite et pour une bonne partie traduite en français, n'hésitez pas à l'utiliser :
http://httpd.apache.org/docs/2.2/fr</text>
      <sha1>4cxbsneid64xak4drk585tpu2214rd9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Apropos</title>
    <ns>0</ns>
    <id>928</id>
    <revision>
      <id>3859</id>
      <timestamp>2012-02-29T17:34:03Z</timestamp>
      <contributor>
        <username>Grhim</username>
        <id>116</id>
      </contributor>
      <comment>apropos man man-k</comment>
      <text xml:space="preserve" bytes="869">La commande &quot;apropos&quot; équivaut a man -k

l'utilisationde &quot;apropos&quot; est simple, on fait suivre le nom de la commande du mot ou de la phrase qui décrit la commande rechercher :

----
'''$ man list'''

no manual entry for list

'''$ man -k list'''

last (1)          - show listing of last logged in users

ls (1)            - list directory
----

maintenant avec la commande &quot;apropos&quot;

----
'''$ apropos list'''

last (1)          - show listing of last logged in users

ls (1)            - list directory
----

nous voyons que le résultat est le même !

mais avec l'option -e &quot;apropos&quot; va rechercher le mot exact : 

----
'''$ apropos -e list''' 

ls   (1)             - list directory contents

lshw (1)             - list hardware

lsof (8)             - list open files

----
le mot &quot;last&quot; n'apparaît pas car nous recherchont tout ce qu'il y a avec le mot &quot;list&quot;</text>
      <sha1>6zhlct4zvvja65ddn78wxo0tace3h8s</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3860</id>
      <parentid>3859</parentid>
      <timestamp>2012-02-29T17:34:33Z</timestamp>
      <contributor>
        <username>Grhim</username>
        <id>116</id>
      </contributor>
      <text xml:space="preserve" bytes="870">La commande &quot;apropos&quot; équivaut a man -k

l'utilisation de &quot;apropos&quot; est simple, on fait suivre le nom de la commande du mot ou de la phrase qui décrit la commande rechercher :

----
'''$ man list'''

no manual entry for list

'''$ man -k list'''

last (1)          - show listing of last logged in users

ls (1)            - list directory
----

maintenant avec la commande &quot;apropos&quot;

----
'''$ apropos list'''

last (1)          - show listing of last logged in users

ls (1)            - list directory
----

nous voyons que le résultat est le même !

mais avec l'option -e &quot;apropos&quot; va rechercher le mot exact : 

----
'''$ apropos -e list''' 

ls   (1)             - list directory contents

lshw (1)             - list hardware

lsof (8)             - list open files

----
le mot &quot;last&quot; n'apparaît pas car nous recherchont tout ce qu'il y a avec le mot &quot;list&quot;</text>
      <sha1>5vsxl2nce8bg0m57pvkmn47290hqjmj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3861</id>
      <parentid>3860</parentid>
      <timestamp>2012-03-01T12:52:37Z</timestamp>
      <contributor>
        <username>Grhim</username>
        <id>116</id>
      </contributor>
      <text xml:space="preserve" bytes="883">La commande &quot;apropos&quot; équivaut a man -k

l'utilisation de &quot;apropos&quot; est simple, on fait suivre le nom de la commande du mot ou de la phrase qui décrit la commande rechercher :

----
&lt;pre&gt;
$ man list

no manual entry for list

$ man -k list

last (1)          - show listing of last logged in users

ls (1)            - list directory
&lt;/pre&gt;
----

maintenant avec la commande &quot;apropos&quot;

----
&lt;pre&gt;
$ apropos list

last (1)          - show listing of last logged in users

ls (1)            - list directory
&lt;/pre&gt;
----

nous voyons que le résultat est le même !

mais avec l'option -e &quot;apropos&quot; va rechercher le mot exact : 

----
&lt;pre&gt;
$ apropos -e list

ls   (1)             - list directory contents

lshw (1)             - list hardware

lsof (8)             - list open files
&lt;/pre&gt;
----
le mot &quot;last&quot; n'apparaît pas car nous recherchont tout ce qu'il y a avec le mot &quot;list&quot;</text>
      <sha1>atahtxelk8dsssxle9oc0esm9qx4isa</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3874</id>
      <parentid>3861</parentid>
      <timestamp>2012-03-05T08:48:21Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="885">La commande &quot;apropos&quot; équivaut à man -k

l'utilisation de &quot;apropos&quot; est simple, on fait suivre le nom de la commande du mot ou de la phrase qui décrit la commande recherchée :

----
&lt;pre&gt;
$ man list

no manual entry for list

$ man -k list

last (1)          - show listing of last logged in users

ls (1)            - list directory
&lt;/pre&gt;
----

maintenant avec la commande &quot;apropos&quot;

----
&lt;pre&gt;
$ apropos list

last (1)          - show listing of last logged in users

ls (1)            - list directory
&lt;/pre&gt;
----

nous voyons que le résultat est le même !

mais avec l'option -e &quot;apropos&quot; va rechercher le mot exact : 

----
&lt;pre&gt;
$ apropos -e list

ls   (1)             - list directory contents

lshw (1)             - list hardware

lsof (8)             - list open files
&lt;/pre&gt;
----
le mot &quot;last&quot; n'apparaît pas car nous recherchons tout ce qu'il y a avec le mot &quot;list&quot;</text>
      <sha1>kzykk35js5qdperd2viu3hgyfb5gi9f</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3895</id>
      <parentid>3874</parentid>
      <timestamp>2012-03-06T07:54:51Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>[[Catégorie:Commandes_de_base]]</comment>
      <text xml:space="preserve" bytes="919">La commande &quot;apropos&quot; équivaut à man -k

l'utilisation de &quot;apropos&quot; est simple, on fait suivre le nom de la commande du mot ou de la phrase qui décrit la commande recherchée :

----
&lt;pre&gt;
$ man list

no manual entry for list

$ man -k list

last (1)          - show listing of last logged in users

ls (1)            - list directory
&lt;/pre&gt;
----

maintenant avec la commande &quot;apropos&quot;

----
&lt;pre&gt;
$ apropos list

last (1)          - show listing of last logged in users

ls (1)            - list directory
&lt;/pre&gt;
----

nous voyons que le résultat est le même !

mais avec l'option -e &quot;apropos&quot; va rechercher le mot exact : 

----
&lt;pre&gt;
$ apropos -e list

ls   (1)             - list directory contents

lshw (1)             - list hardware

lsof (8)             - list open files
&lt;/pre&gt;
----
le mot &quot;last&quot; n'apparaît pas car nous recherchons tout ce qu'il y a avec le mot &quot;list&quot;

[[Catégorie:Commandes_de_base]]</text>
      <sha1>oe1lq969q87pw20eg4lk8q0ad1od9hl</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4100</id>
      <parentid>3895</parentid>
      <timestamp>2012-04-28T08:43:49Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="948">[[Niveau de difficulté::Débutant]]
La commande &quot;apropos&quot; équivaut à man -k

l'utilisation de &quot;apropos&quot; est simple, on fait suivre le nom de la commande du mot ou de la phrase qui décrit la commande recherchée :

----
&lt;pre&gt;
$ man list

no manual entry for list

$ man -k list

last (1)          - show listing of last logged in users

ls (1)            - list directory
&lt;/pre&gt;
----

maintenant avec la commande &quot;apropos&quot;

----
&lt;pre&gt;
$ apropos list

last (1)          - show listing of last logged in users

ls (1)            - list directory
&lt;/pre&gt;
----

nous voyons que le résultat est le même !

mais avec l'option -e &quot;apropos&quot; va rechercher le mot exact : 

----
&lt;pre&gt;
$ apropos -e list

ls   (1)             - list directory contents

lshw (1)             - list hardware

lsof (8)             - list open files
&lt;/pre&gt;
----
le mot &quot;last&quot; n'apparaît pas car nous recherchons tout ce qu'il y a avec le mot &quot;list&quot;

[[Catégorie:Commandes]]</text>
      <sha1>4uqfbrph59ezjippsq9moc2506nkug1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4101</id>
      <parentid>4100</parentid>
      <timestamp>2012-04-28T08:44:02Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="949">
La commande &quot;apropos&quot; équivaut à man -k

l'utilisation de &quot;apropos&quot; est simple, on fait suivre le nom de la commande du mot ou de la phrase qui décrit la commande recherchée :

----
&lt;pre&gt;
$ man list

no manual entry for list

$ man -k list

last (1)          - show listing of last logged in users

ls (1)            - list directory
&lt;/pre&gt;
----

maintenant avec la commande &quot;apropos&quot;

----
&lt;pre&gt;
$ apropos list

last (1)          - show listing of last logged in users

ls (1)            - list directory
&lt;/pre&gt;
----

nous voyons que le résultat est le même !

mais avec l'option -e &quot;apropos&quot; va rechercher le mot exact : 

----
&lt;pre&gt;
$ apropos -e list

ls   (1)             - list directory contents

lshw (1)             - list hardware

lsof (8)             - list open files
&lt;/pre&gt;
----
le mot &quot;last&quot; n'apparaît pas car nous recherchons tout ce qu'il y a avec le mot &quot;list&quot;

[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>tioauq1wp433vttsy97bqd0fszp4r1f</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Apt + Segmentation faulty tree</title>
    <ns>0</ns>
    <id>693</id>
    <revision>
      <id>3016</id>
      <timestamp>2011-06-02T06:13:14Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « Un petit truc pour vous éviter de perdre du temps, Suite à un démarrage foiré...  '''Segmentation faulty tree... 0%'''  &lt;code&gt; /dev/sda1: UNEXPECTED INCONSISTENCY; RUN fs... »</comment>
      <text xml:space="preserve" bytes="553">Un petit truc pour vous éviter de perdre du temps,
Suite à un démarrage foiré...

'''Segmentation faulty tree... 0%'''

&lt;code&gt;
/dev/sda1: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
...
Give root password for maintenance
(or type Control-D to continue):
&lt;/code&gt;

Apt-get ou aptitude sont bloquée...

&lt;code&gt;
apt-get install n'importe_quel_paquet
Reading package lists... Done
Segmentation faulty tree... 0%
&lt;/code&gt;

La commande magique:

 # rm /var/cache/apt/*.bin

[[Utilisateur:Lol|Lol]] 2 juin 2011 à 01:13 (CDT)
[[Catégorie:Trucs et Astuces]]</text>
      <sha1>6uxbw1a5ue15txql592vq2hqka3lv20</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Apt : erreur Dynamic MMap ran out of room</title>
    <ns>0</ns>
    <id>287</id>
    <revision>
      <id>1254</id>
      <timestamp>2010-04-02T08:55:33Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « L'erreur apt : &quot;Dynamic MMap ran out of room&quot;  Lors d'un update ou upgrade apt refuse de se lancer avec l'erreur ci-dessous :   Lecture des listes de paquets... Erreur !  E: … »</comment>
      <text xml:space="preserve" bytes="1484">L'erreur apt : &quot;Dynamic MMap ran out of room&quot;

Lors d'un update ou upgrade apt refuse de se lancer avec l'erreur ci-dessous :

 Lecture des listes de paquets... Erreur !
 E: Dynamic MMap ran out of room
 ...

C'est simple, il s'agit du cache réservé en RAM de apt qui est trop petit pour accéder à votre demande...

La solution est simple : Augmenter cet espace réservé !
La valeur fixée par défaut est :

 Cache-Limit &quot;4194304&quot;; (soit 4Mo)

La commande :

 # echo 'APT::Cache-Limit 141943904;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Vous venez d'augmenter le cache réservé en mémoire vive pour apt à 135Mo (environ).
Ce chiffre est parfaitement dénué de sens, et personne ne peut dire d'ou il sort... Pourtant il est couramment utilisé !
Une réservation inférieure peut très bien être suffisante.
Réservez juste ce dont vous avez vraiment besoin surtout pour des système ne disposant que de peu de RAM. ''Inutile de réserver une trop grande quantité de RAM''


Plus de détails sur les option possibles grâce à cette commande :

 zless /usr/share/doc/apt/examples/configure-index.gz
Ou
 man apt.conf

Pour vérifier :

 $ apt-config dump
 ...                                                                               
 APT::Cache-Limit &quot;50000000&quot;;
 ...

Soit un cache de 47Mo environ !

Documentation :
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=9816&amp;start=0 Le T&amp;A sur forum.debian-fr.org]

----
--[[Utilisateur:Lol|Lol]] 2 avril 2010 à 08:55 (UTC)</text>
      <sha1>j3jkc1eb88f6ly9lx7qxwq9k0lt4s5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1256</id>
      <parentid>1254</parentid>
      <timestamp>2010-04-02T08:58:12Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1503">L'erreur apt : &quot;Dynamic MMap ran out of room&quot;

Lors d'un update ou upgrade apt refuse de se lancer avec l'erreur ci-dessous :

 Lecture des listes de paquets... Erreur !
 E: Dynamic MMap ran out of room
 ...

C'est simple, il s'agit du cache réservé en RAM de apt qui est trop petit pour accéder à votre demande...

La solution est simple : Augmenter cet espace réservé !
La valeur fixée par défaut est :

 Cache-Limit &quot;4194304&quot;; (soit 4Mo)

La commande :

 # echo 'APT::Cache-Limit 141943904;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Vous venez d'augmenter le cache réservé en mémoire vive pour apt à 135Mo (environ).
Ce chiffre est parfaitement dénué de sens, et personne ne peut dire d'ou il sort... Pourtant il est couramment utilisé !
Une réservation inférieure peut très bien être suffisante.
Réservez juste ce dont vous avez vraiment besoin surtout pour des système ne disposant que de peu de RAM. ''Inutile de réserver une trop grande quantité de RAM''


Plus de détails sur les option possibles grâce à cette commande :

 zless /usr/share/doc/apt/examples/configure-index.gz
Ou
 man apt.conf

Pour vérifier :

 $ apt-config dump
 ...                                                                               
 APT::Cache-Limit &quot;50000000&quot;;
 ...

Soit un cache de 47Mo environ !

Documentation :
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=9816&amp;start=0 Le T&amp;A sur forum.debian-fr.org]

----
--[[Utilisateur:Lol|Lol]] 2 avril 2010 à 08:55 (UTC)
[[Catégorie:apt]]</text>
      <sha1>6igzna013pnudhay9hzzknp30neiqu5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1261</id>
      <parentid>1256</parentid>
      <timestamp>2010-04-02T09:11:58Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1521">L'erreur apt : &quot;Dynamic MMap ran out of room&quot;

Lors d'un update ou upgrade apt refuse de se lancer avec l'erreur ci-dessous :

 Lecture des listes de paquets... Erreur !
 E: Dynamic MMap ran out of room
 ...

C'est simple, il s'agit du cache réservé en [[Glossaire#RAM|RAM]] de apt qui est trop petit pour accéder à votre demande...

La solution est simple : Augmenter cet espace réservé !
La valeur fixée par défaut est :

 Cache-Limit &quot;4194304&quot;; (soit 4Mo)

La commande :

 # echo 'APT::Cache-Limit 141943904;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Vous venez d'augmenter le cache réservé en mémoire vive pour apt à 135Mo (environ).
Ce chiffre est parfaitement dénué de sens, et personne ne peut dire d'ou il sort... Pourtant il est couramment utilisé !
Une réservation inférieure peut très bien être suffisante.
Réservez juste ce dont vous avez vraiment besoin surtout pour des système ne disposant que de peu de RAM. ''Inutile de réserver une trop grande quantité de RAM''


Plus de détails sur les option possibles grâce à cette commande :

 zless /usr/share/doc/apt/examples/configure-index.gz
Ou
 man apt.conf

Pour vérifier :

 $ apt-config dump
 ...                                                                               
 APT::Cache-Limit &quot;50000000&quot;;
 ...

Soit un cache de 47Mo environ !

Documentation :
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=9816&amp;start=0 Le T&amp;A sur forum.debian-fr.org]

----
--[[Utilisateur:Lol|Lol]] 2 avril 2010 à 08:55 (UTC)
[[Catégorie:apt]]</text>
      <sha1>8dgixdi4kfh70l2dxo2gd603vuq9hzo</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Apt-cacher-ng</title>
    <ns>0</ns>
    <id>284</id>
    <revision>
      <id>1241</id>
      <timestamp>2010-04-01T09:10:41Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « Installation, configuration et utilisation de apt-cacher-ng (ac-ng)  == Introduction ==  Acng est un &quot;dépôt cache&quot; de paquets Debian  Avantages : :Très simple à installer… »</comment>
      <text xml:space="preserve" bytes="7948">Installation, configuration et utilisation de apt-cacher-ng (ac-ng)

== Introduction ==

Acng est un &quot;dépôt cache&quot; de paquets Debian

Avantages :
:Très simple à installer;
:Utilisable par toutes les distributions à base de Debian;
:Accessible depuis tout le réseau.
:Votre dépôt ne contient que les paquets dont vous avez besoin (contrairement à un dépôt miroir)

Inconvénient :
:Votre dépôt cache peut devenir très important, en fonction du nombre de distribution / branches que vous maintenez

&quot;Ac-ng&quot; fonctionne de manière très simple. Quand une machine sur le réseau installe un paquet, &quot;ac-ng&quot; le &quot;capte&quot; et le copie dans son &quot;cache&quot;.
Il est ainsi ensuite disponible pour toutes les autres machines du réseau, à la vitesse du réseau local  :D 

Pas besoin d'avoir un réseau de taille démesuré pour avoir besoin de &quot;ac-ng&quot;... Une mauvaise connexion le justifie, l'envie de réinstaller rapidement en cas de crash, si vous testez souvent dans des machines virtuelles... Simplement vouloir éviter de saturer sa bande passante avec du téléchargement de paquets.

Il fonctionne sans proxy installé, puisque lui-même fonctionne comme un proxy.
Si vous avez un proxy sur votre système, vous déclarerez-le dans votre configuration, il sera prit en compte.

== Installation ==

Il n'y a pas plus simple...

 apt-get install apt-cacher-ng

== Configurer le serveur ==

Un seul fichier à modifier : /etc/apt-cacher-ng/apcng.conf

 CacheDir: /mnt/192.168.0.2/cache/apt-cacher-ng
 # L'emplacement normal est /var/www/apt-cacher J'ai choisi un autre emplacement sur une partition LVM
 LogDir: /var/log/apt-cacher-ng
 Port:3142
 BindAddress: localhost 192.168.0.1
 # Pour plus de sécurité, réserver l'utilisation à son réseau local, mais rien n'empêche d'étendre...
 #Remap-debian: file:deb_mirror*.gz /debian ; file:backends_debian
 #Remap-uburep: file:ubuntu_mirrors /ubuntu ; file:backends_ubuntu
 VerboseLog: 1
 ReportPage: acng-report.html
 Proxy: http://192.168.0.254:3128
 ExTreshold: 4

Concernant la commande Remap... Elle permet de mettre un peu d'ordre dans vos dépôts.
Moi j'ai choisis de faire sans...
Voici ce que ça donne :

 laurent@spider:/mnt/192.168.0.2/cache/apt-cacher-ng$ ls -lh
 total 4,5M
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 26  2009 archive.canonical.com
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K nov 18 10:27 boisson.homeip.net
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 29  2009 changelogs.ubuntu.com
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 debian
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K nov  4 11:23 debian.med.univ-tours.fr
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 deb.opera.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 dl.google.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K fév  8 17:43 download.tuxfamily.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 25  2009 download.virtualbox.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 download.webmin.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K oct  9 14:26 eeepc.debian.net
 -rw-r--r-- 1 apt-cacher-ng apt-cacher-ng    0 mar 15 06:49 _expending_dat
 -rwxr-xr-x 1 apt-cacher-ng apt-cacher-ng 1,4M mar 27 07:32 _impkeycache
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 3,1M mar 27 07:32 _import
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K oct 21 08:07 packages.debian.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 26  2009 packages.enlightenment.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K mar 28 20:56 packages.medibuntu.org
 drwxr-sr-x 5 apt-cacher-ng apt-cacher-ng 4,0K mar 27 07:04 ppa.launchpad.net
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 repo.palatinus.cz
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K mar 27 18:17 repos.eeebuntu.org
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K sep 24  2009 security.debian.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 28  2009 security.ubuntu.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K nov 11 15:17 sidux.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K jan 10 08:27 sidux.office-vienna.at
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K nov 11 06:45 talweg.univ-metz.fr
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K sep 26  2009 uburep
 drwxr-sr-x 2 apt-cacher-ng apt-cacher-ng 4,0K oct  1 12:04 volatile.debian.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K jan  8 11:46 w3you.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 24  2009 www.backports.org
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 www.debian-multimedia.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 26  2009 www.lamaresh.net

En utilisant l'option Remap vous ac-ng va créer des sous-répertoires (Debian, Ubuntu...) qui servent à centraliser les mêmes dépôts issus de sites miroirs. Cela évite les dépôts &quot;doublons&quot;.

Ensuite, vous pouvez faire un lien symbolique de /mnt/192.168.0.2/cache/apt-cacher-ng vers /var/www/apt-cacher-ng pour avoir un accès avec un serveur apache2/httpd (vous pouvez ainsi naviguer dans le dépôt depuis n'importe quelle machine du réseau).
C'est juste un petit &quot;gadget&quot; en plus, aucune utilité réelle...

== Configuration client ==

Il suffit d'éditer ou créer le fichier /etc/apt/apt.conf pour qu'il ressemble à ça :

 Acquire::http {
         Proxy &quot;http://192.168.0.1:3142&quot;;
         };

Edit : Pour ceux qui utilisent apt-listbugs, ajouter cette ligne EN PREMIER dans apt.conf :

 Acquire::http::Proxy::bugs.debian.org &quot;DIRECT&quot;;

Il y a une deuxième solution qui consiste à modifier tous les sources.list, je ne détaille pas volontairement, c'est moins simple...

Pensez aussi à changer le fichier /etc/apt/apt.conf du serveur pour que lui aussi participe à la maintenance de votre dépôt !

== Importation de paquets déjà téléchargés ou présents sur vos DVD : ==

 cd /mnt/192.168.0.2/cache
 mkdir apt-cacher-ng/_import[/code]
 Copiez vos fichiers deb dans le cache (/mnt/192.168.0.2/cache/apt-cacher-ng/_import)
 chown -R apt-cacher-ng apt-cacher-ng/_import[/code]

Faire un apt-get update sur tous les clients et sur le serveur

Puis ouvrir l'interface web de apt-cacher-ng &quot;http://192.168.0.1:3142/acng-report.html&quot; et cliquer simplement sur &quot;start import&quot;. Il va copier les deb à jour dans les bons dépôts du cache local

== Pour conclure ==


N'oubliez pas d'ouvrir sur le serveur le port du pare-feu (ici 3142) pour que les machines du réseau puissent accéder à ac-ng...  :wink: 

Pensez à uniformiser les sources.list des vos différentes machines, vous gagnerez du temps de connexion !

Entretien de la base...
Afin de ne pas avoir au bout de quelques mois un cache démesuré, surtout si des machines en SID traînent sur votre réseau, penser à la nettoyer de temps-en-temps... interface web de apt-cacher-ng &quot;http://192.168.0.1:3142/acng-report.html&quot; + &quot;start expiration&quot; Cela efface tous les paquets devenus obsolètes !

Grâce à ce serveur j'installe une Lenny avec debootstrap en une minute et 8 secondes...

J'ai remarqué que parfois des blocages arrivaient au niveau des clients pendant le téléchargement de paquets. C'est réglé par un simple redémarrage de ac-ng

 laurent@spider:/mnt/192.168.0.2/cache/apt-cacher-ng$ sudo /etc/init.d/apt-cacher-ng restart
 Restarting apt-cacher-ng: apt-cacher-ng.

Dernière information... La taille du cache !

Le mien :

 $ du -sh apt-cacher-ng/
 43G     apt-cacher-ng/

43 Go après 6 mois d'utilisation.
Maintien de Etch (32bits), Lenny (32 et 64bits), Squeeze (64bits), Sid (64bits), Sidux (32 et 64 bits), Ubuntu et Kubuntu 9.10 (32 et 64 bits)... C'est raisonnable (l'équivalent d'une dizaine de DVD)...

--[[Utilisateur:Lol|Lol]] 1 avril 2010 à 09:10 (UTC)

Liens sur le forum : 
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23065&amp;start=0] Le T&amp;A sur le forum]
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=26805&amp;start=0 La Discussion si vous avez des questions]</text>
      <sha1>elynf6pryvfsvtbyxnr2n10n8hgiq9g</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2091</id>
      <parentid>1241</parentid>
      <timestamp>2010-09-15T16:59:45Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="7995">Installation, configuration et utilisation de apt-cacher-ng (ac-ng)

== Introduction ==

Acng est un &quot;dépôt cache&quot; de paquets Debian

Avantages :
:Très simple à installer;
:Utilisable par toutes les distributions à base de Debian;
:Accessible depuis tout le réseau.
:Votre dépôt ne contient que les paquets dont vous avez besoin (contrairement à un dépôt miroir)

Inconvénient :
:Votre dépôt cache peut devenir très important, en fonction du nombre de distribution / branches que vous maintenez

&quot;Ac-ng&quot; fonctionne de manière très simple. Quand une machine sur le réseau installe un paquet, &quot;ac-ng&quot; le &quot;capte&quot; et le copie dans son &quot;cache&quot;.
Il est ainsi ensuite disponible pour toutes les autres machines du réseau, à la vitesse du réseau local  :D 

Pas besoin d'avoir un réseau de taille démesuré pour avoir besoin de &quot;ac-ng&quot;... Une mauvaise connexion le justifie, l'envie de réinstaller rapidement en cas de crash, si vous testez souvent dans des machines virtuelles... Simplement vouloir éviter de saturer sa bande passante avec du téléchargement de paquets.

Il fonctionne sans proxy installé, puisque lui-même fonctionne comme un proxy.
Si vous avez un proxy sur votre système, vous déclarerez-le dans votre configuration, il sera prit en compte.

== Installation ==

Il n'y a pas plus simple...

 apt-get install apt-cacher-ng

== Configurer le serveur ==

Un seul fichier à modifier : /etc/apt-cacher-ng/apcng.conf

 CacheDir: /mnt/192.168.0.2/cache/apt-cacher-ng
 # L'emplacement normal est /var/www/apt-cacher J'ai choisi un autre emplacement sur une partition LVM
 LogDir: /var/log/apt-cacher-ng
 Port:3142
 BindAddress: localhost 192.168.0.1
 # Pour plus de sécurité, réserver l'utilisation à son réseau local, mais rien n'empêche d'étendre...
 #Remap-debian: file:deb_mirror*.gz /debian ; file:backends_debian
 #Remap-uburep: file:ubuntu_mirrors /ubuntu ; file:backends_ubuntu
 VerboseLog: 1
 ReportPage: acng-report.html
 Proxy: http://192.168.0.254:3128
 ExTreshold: 4

Concernant la commande Remap... Elle permet de mettre un peu d'ordre dans vos dépôts.
Moi j'ai choisis de faire sans...
Voici ce que ça donne :

 laurent@spider:/mnt/192.168.0.2/cache/apt-cacher-ng$ ls -lh
 total 4,5M
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 26  2009 archive.canonical.com
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K nov 18 10:27 boisson.homeip.net
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 29  2009 changelogs.ubuntu.com
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 debian
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K nov  4 11:23 debian.med.univ-tours.fr
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 deb.opera.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 dl.google.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K fév  8 17:43 download.tuxfamily.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 25  2009 download.virtualbox.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 download.webmin.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K oct  9 14:26 eeepc.debian.net
 -rw-r--r-- 1 apt-cacher-ng apt-cacher-ng    0 mar 15 06:49 _expending_dat
 -rwxr-xr-x 1 apt-cacher-ng apt-cacher-ng 1,4M mar 27 07:32 _impkeycache
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 3,1M mar 27 07:32 _import
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K oct 21 08:07 packages.debian.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 26  2009 packages.enlightenment.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K mar 28 20:56 packages.medibuntu.org
 drwxr-sr-x 5 apt-cacher-ng apt-cacher-ng 4,0K mar 27 07:04 ppa.launchpad.net
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 repo.palatinus.cz
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K mar 27 18:17 repos.eeebuntu.org
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K sep 24  2009 security.debian.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 28  2009 security.ubuntu.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K nov 11 15:17 sidux.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K jan 10 08:27 sidux.office-vienna.at
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K nov 11 06:45 talweg.univ-metz.fr
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K sep 26  2009 uburep
 drwxr-sr-x 2 apt-cacher-ng apt-cacher-ng 4,0K oct  1 12:04 volatile.debian.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K jan  8 11:46 w3you.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 24  2009 www.backports.org
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 www.debian-multimedia.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 26  2009 www.lamaresh.net

En utilisant l'option Remap vous ac-ng va créer des sous-répertoires (Debian, Ubuntu...) qui servent à centraliser les mêmes dépôts issus de sites miroirs. Cela évite les dépôts &quot;doublons&quot;.

Ensuite, vous pouvez faire un lien symbolique de /mnt/192.168.0.2/cache/apt-cacher-ng vers /var/www/apt-cacher-ng pour avoir un accès avec un serveur apache2/httpd (vous pouvez ainsi naviguer dans le dépôt depuis n'importe quelle machine du réseau).
C'est juste un petit &quot;gadget&quot; en plus, aucune utilité réelle...

== Configuration client ==

Il suffit d'éditer ou créer le fichier /etc/apt/apt.conf pour qu'il ressemble à ça :

 Acquire::http {
         Proxy &quot;http://192.168.0.1:3142&quot;;
         };

Edit : Pour ceux qui utilisent apt-listbugs, ajouter cette ligne EN PREMIER dans apt.conf :

 Acquire::http::Proxy::bugs.debian.org &quot;DIRECT&quot;;

Il y a une deuxième solution qui consiste à modifier tous les sources.list, je ne détaille pas volontairement, c'est moins simple...

Pensez aussi à changer le fichier /etc/apt/apt.conf du serveur pour que lui aussi participe à la maintenance de votre dépôt !

== Importation de paquets déjà téléchargés ou présents sur vos DVD : ==

 cd /mnt/192.168.0.2/cache
 mkdir apt-cacher-ng/_import[/code]
 Copiez vos fichiers deb dans le cache (/mnt/192.168.0.2/cache/apt-cacher-ng/_import)
 chown -R apt-cacher-ng apt-cacher-ng/_import[/code]

Faire un apt-get update sur tous les clients et sur le serveur

Puis ouvrir l'interface web de apt-cacher-ng &quot;http://192.168.0.1:3142/acng-report.html&quot; et cliquer simplement sur &quot;start import&quot;. Il va copier les deb à jour dans les bons dépôts du cache local

== Pour conclure ==


N'oubliez pas d'ouvrir sur le serveur le port du pare-feu (ici 3142) pour que les machines du réseau puissent accéder à ac-ng...  :wink: 

Pensez à uniformiser les sources.list des vos différentes machines, vous gagnerez du temps de connexion !

Entretien de la base...
Afin de ne pas avoir au bout de quelques mois un cache démesuré, surtout si des machines en SID traînent sur votre réseau, penser à la nettoyer de temps-en-temps... interface web de apt-cacher-ng &quot;http://192.168.0.1:3142/acng-report.html&quot; + &quot;start expiration&quot; Cela efface tous les paquets devenus obsolètes !

Grâce à ce serveur j'installe une Lenny avec debootstrap en une minute et 8 secondes...

J'ai remarqué que parfois des blocages arrivaient au niveau des clients pendant le téléchargement de paquets. C'est réglé par un simple redémarrage de ac-ng

 laurent@spider:/mnt/192.168.0.2/cache/apt-cacher-ng$ sudo /etc/init.d/apt-cacher-ng restart
 Restarting apt-cacher-ng: apt-cacher-ng.

Dernière information... La taille du cache !

Le mien :

 $ du -sh apt-cacher-ng/
 43G     apt-cacher-ng/

43 Go après 6 mois d'utilisation.
Maintien de Etch (32bits), Lenny (32 et 64bits), Squeeze (64bits), Sid (64bits), Sidux (32 et 64 bits), Ubuntu et Kubuntu 9.10 (32 et 64 bits)... C'est raisonnable (l'équivalent d'une dizaine de DVD)...

--[[Utilisateur:Lol|Lol]] 1 avril 2010 à 09:10 (UTC)

Liens sur le forum : 
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23065&amp;start=0] Le T&amp;A sur le forum]
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=26805&amp;start=0 La Discussion si vous avez des questions]

[[Catégorie:Paquets]][[Catégorie:Serveurs]]</text>
      <sha1>0ev3gvmcnhwz7wll5sgelhwq8u6sdcg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2199</id>
      <parentid>2091</parentid>
      <timestamp>2010-10-08T09:09:42Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="9272">Installation, configuration et utilisation de apt-cacher-ng (ac-ng)

== Introduction ==

Acng est un &quot;dépôt cache&quot; de paquets Debian

Avantages :
:Très simple à installer;
:Utilisable par toutes les distributions à base de Debian;
:Accessible depuis tout le réseau.
:Votre dépôt ne contient que les paquets dont vous avez besoin (contrairement à un dépôt miroir)

Inconvénient :
:Votre dépôt cache peut devenir très important, en fonction du nombre de distribution / branches que vous maintenez

&quot;Ac-ng&quot; fonctionne de manière très simple. Quand une machine sur le réseau installe un paquet, &quot;ac-ng&quot; le &quot;capte&quot; et le copie dans son &quot;cache&quot;.
Il est ainsi ensuite disponible pour toutes les autres machines du réseau, à la vitesse du réseau local  :D 

Pas besoin d'avoir un réseau de taille démesuré pour avoir besoin de &quot;ac-ng&quot;... Une mauvaise connexion le justifie, l'envie de réinstaller rapidement en cas de crash, si vous testez souvent dans des machines virtuelles... Simplement vouloir éviter de saturer sa bande passante avec du téléchargement de paquets.

Il fonctionne sans proxy installé, puisque lui-même fonctionne comme un proxy.
Si vous avez un proxy sur votre système, vous déclarerez-le dans votre configuration, il sera prit en compte.

== Installation ==

Il n'y a pas plus simple...

 apt-get install apt-cacher-ng

== Configurer le serveur ==

Un seul fichier à modifier : /etc/apt-cacher-ng/apcng.conf

 CacheDir: /mnt/192.168.0.2/cache/apt-cacher-ng
 # L'emplacement normal est /var/www/apt-cacher J'ai choisi un autre emplacement sur une partition LVM
 LogDir: /var/log/apt-cacher-ng
 Port:3142
 BindAddress: localhost 192.168.0.1
 # Pour plus de sécurité, réserver l'utilisation à son réseau local, mais rien n'empêche d'étendre...
 #Remap-debian: file:deb_mirror*.gz /debian ; file:backends_debian
 #Remap-uburep: file:ubuntu_mirrors /ubuntu ; file:backends_ubuntu
 VerboseLog: 1
 ReportPage: acng-report.html
 Proxy: http://192.168.0.254:3128
 ExTreshold: 4

Concernant la commande Remap... Elle permet de mettre un peu d'ordre dans vos dépôts.
Voir plus bas.

Voici ce que ça donne :

 laurent@spider:/mnt/192.168.0.2/cache/apt-cacher-ng$ ls -lh
 total 4,5M
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 26  2009 archive.canonical.com
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K nov 18 10:27 boisson.homeip.net
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 29  2009 changelogs.ubuntu.com
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 debian
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K nov  4 11:23 debian.med.univ-tours.fr
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 deb.opera.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 dl.google.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K fév  8 17:43 download.tuxfamily.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 25  2009 download.virtualbox.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 download.webmin.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K oct  9 14:26 eeepc.debian.net
 -rw-r--r-- 1 apt-cacher-ng apt-cacher-ng    0 mar 15 06:49 _expending_dat
 -rwxr-xr-x 1 apt-cacher-ng apt-cacher-ng 1,4M mar 27 07:32 _impkeycache
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 3,1M mar 27 07:32 _import
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K oct 21 08:07 packages.debian.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 26  2009 packages.enlightenment.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K mar 28 20:56 packages.medibuntu.org
 drwxr-sr-x 5 apt-cacher-ng apt-cacher-ng 4,0K mar 27 07:04 ppa.launchpad.net
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 repo.palatinus.cz
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K mar 27 18:17 repos.eeebuntu.org
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K sep 24  2009 security.debian.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 28  2009 security.ubuntu.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K nov 11 15:17 sidux.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K jan 10 08:27 sidux.office-vienna.at
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K nov 11 06:45 talweg.univ-metz.fr
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K sep 26  2009 uburep
 drwxr-sr-x 2 apt-cacher-ng apt-cacher-ng 4,0K oct  1 12:04 volatile.debian.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K jan  8 11:46 w3you.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 24  2009 www.backports.org
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 www.debian-multimedia.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 26  2009 www.lamaresh.net

En utilisant l'option Remap vous ac-ng va créer des sous-répertoires (Debian, Ubuntu...) qui servent à centraliser les mêmes dépôts issus de sites miroirs. Cela évite les dépôts &quot;doublons&quot;.

Ensuite, vous pouvez faire un lien symbolique de /mnt/192.168.0.2/cache/apt-cacher-ng vers /var/www/apt-cacher-ng pour avoir un accès avec un serveur apache2/httpd (vous pouvez ainsi naviguer dans le dépôt depuis n'importe quelle machine du réseau).
C'est juste un petit &quot;gadget&quot; en plus, aucune utilité réelle...

== Configuration client ==

Il suffit d'éditer ou créer le fichier /etc/apt/apt.conf pour qu'il ressemble à ça :

 Acquire::http {
         Proxy &quot;http://192.168.0.1:3142&quot;;
         };

Edit : Pour ceux qui utilisent apt-listbugs, ajouter cette ligne EN PREMIER dans apt.conf :

 Acquire::http::Proxy::bugs.debian.org &quot;DIRECT&quot;;

Il y a une deuxième solution qui consiste à modifier tous les sources.list, je ne détaille pas volontairement, c'est moins simple...

Pensez aussi à changer le fichier /etc/apt/apt.conf du serveur pour que lui aussi participe à la maintenance de votre dépôt !

== Importation de paquets déjà téléchargés ou présents sur vos DVD : ==

 cd /mnt/192.168.0.2/cache
 mkdir apt-cacher-ng/_import[/code]
 Copiez vos fichiers deb dans le cache (/mnt/192.168.0.2/cache/apt-cacher-ng/_import)
 chown -R apt-cacher-ng apt-cacher-ng/_import[/code]

Faire un apt-get update sur tous les clients et sur le serveur

Puis ouvrir l'interface web de apt-cacher-ng &quot;http://192.168.0.1:3142/acng-report.html&quot; et cliquer simplement sur &quot;start import&quot;. Il va copier les deb à jour dans les bons dépôts du cache local

== Exemple d'utilisation des &quot;backends&quot; : ==

Un fichier «Backend» est un fichier texte contenant une liste d'URLs mirroirs, un par ligne.

Utilisation d'un fichier backends pour les dépôts multimedia. Dans /etc/apt-cacher-ng/acng.conf ajoutez cette ligne :

 Remap-marillat: file:backends_marillat /debian-multimedia

Création du fichier contenant les url :

 # nano /etc/apt-cacher-ng/backends_marillat

 http://www.debian-multimedia.org
 ftp://ftp.debian-multimedia.org
 http://mirror.optus.net/debian-multimedia/
 http://mirror.home-dn.net/debian-multimedia
 http://debian-multimedia.gnali.org
 http://debian-multimedia.informatik.uni-erlangen.de/debian-multimedia
 http://mi.mirror.garr.it/mirrors/debian-multimedia
 http://mirror.yandex.ru/debian-multimedia/
 http://ftp.sunet.se/pub/os/Linux/distributions/debian-multimedia
 http://ftp.tw.debian.org/debian-multimedia/

 Redémarrez acng :

 # service apt-cacher-ng restart

Faites un apt-get update avec un client qui contient une dépôt multimédia dans son sources.list.
Un nouveau répertoire est maintenant créé dans CacheDir : /marillat

L'avantage est énorme, il permet en cas de défection d'un dépôt de pouvoir continuer à faire ses mise-à-jour sans avoir besoin de changer tous les sources.list de vos &quot;clients&quot;...

== Pour conclure ==

N'oubliez pas d'ouvrir sur le serveur le port du pare-feu (ici 3142) pour que les machines du réseau puissent accéder à ac-ng...  :wink: 

Pensez à uniformiser les sources.list des vos différentes machines, vous gagnerez du temps de connexion !

Entretien de la base...
Afin de ne pas avoir au bout de quelques mois un cache démesuré, surtout si des machines en SID traînent sur votre réseau, penser à la nettoyer de temps-en-temps... interface web de apt-cacher-ng &quot;http://192.168.0.1:3142/acng-report.html&quot; + &quot;start expiration&quot; Cela efface tous les paquets devenus obsolètes !

Grâce à ce serveur j'installe une Lenny avec debootstrap en une minute et 8 secondes...

J'ai remarqué que parfois des blocages arrivaient au niveau des clients pendant le téléchargement de paquets. C'est réglé par un simple redémarrage de ac-ng

 laurent@spider:/mnt/192.168.0.2/cache/apt-cacher-ng$ sudo /etc/init.d/apt-cacher-ng restart
 Restarting apt-cacher-ng: apt-cacher-ng.

Dernière information... La taille du cache !

Le mien :

 $ du -sh apt-cacher-ng/
 43G     apt-cacher-ng/

43 Go après 6 mois d'utilisation.
Maintien de Etch (32bits), Lenny (32 et 64bits), Squeeze (64bits), Sid (64bits), Sidux (32 et 64 bits), Ubuntu et Kubuntu 9.10 (32 et 64 bits)... C'est raisonnable (l'équivalent d'une dizaine de DVD)...

--[[Utilisateur:Lol|Lol]] 1 avril 2010 à 09:10 (UTC)

Liens sur le forum : 
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23065&amp;start=0] Le T&amp;A sur le forum]
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=26805&amp;start=0 La Discussion si vous avez des questions]

[[Catégorie:Paquets]][[Catégorie:Serveurs]]</text>
      <sha1>1amb6oid0gploir13by2yadswwc4j8h</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2200</id>
      <parentid>2199</parentid>
      <timestamp>2010-10-08T09:11:11Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="9335">Installation, configuration et utilisation de apt-cacher-ng (ac-ng)

== Introduction ==

Acng est un &quot;dépôt cache&quot; de paquets Debian

Avantages :
:Très simple à installer;
:Utilisable par toutes les distributions à base de Debian;
:Accessible depuis tout le réseau.
:Votre dépôt ne contient que les paquets dont vous avez besoin (contrairement à un dépôt miroir)

Inconvénient :
:Votre dépôt cache peut devenir très important, en fonction du nombre de distribution / branches que vous maintenez

&quot;Ac-ng&quot; fonctionne de manière très simple. Quand une machine sur le réseau installe un paquet, &quot;ac-ng&quot; le &quot;capte&quot; et le copie dans son &quot;cache&quot;.
Il est ainsi ensuite disponible pour toutes les autres machines du réseau, à la vitesse du réseau local  :D 

Pas besoin d'avoir un réseau de taille démesuré pour avoir besoin de &quot;ac-ng&quot;... Une mauvaise connexion le justifie, l'envie de réinstaller rapidement en cas de crash, si vous testez souvent dans des machines virtuelles... Simplement vouloir éviter de saturer sa bande passante avec du téléchargement de paquets.

Il fonctionne sans proxy installé, puisque lui-même fonctionne comme un proxy.
Si vous avez un proxy sur votre système, vous déclarerez-le dans votre configuration, il sera prit en compte.

== Installation ==

Il n'y a pas plus simple...

 apt-get install apt-cacher-ng

== Configurer le serveur ==

Un seul fichier à modifier : /etc/apt-cacher-ng/apcng.conf

 CacheDir: /mnt/192.168.0.2/cache/apt-cacher-ng
 # L'emplacement normal est /var/www/apt-cacher J'ai choisi un autre emplacement sur une partition LVM
 LogDir: /var/log/apt-cacher-ng
 Port:3142
 BindAddress: localhost 192.168.0.1
 # Pour plus de sécurité, réserver l'utilisation à son réseau local, mais rien n'empêche d'étendre...
 #Remap-debian: file:deb_mirror*.gz /debian ; file:backends_debian
 #Remap-uburep: file:ubuntu_mirrors /ubuntu ; file:backends_ubuntu
 VerboseLog: 1
 ReportPage: acng-report.html
 Proxy: http://192.168.0.254:3128
 ExTreshold: 4

Concernant la commande Remap... Elle permet de mettre un peu d'ordre dans vos dépôts.
[[Apt-cacher-ng#Exemple_d.27utilisation_des_.22backends.22_:|Voir plus bas]].

Voici ce que ça donne :

 laurent@spider:/mnt/192.168.0.2/cache/apt-cacher-ng$ ls -lh
 total 4,5M
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 26  2009 archive.canonical.com
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K nov 18 10:27 boisson.homeip.net
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 29  2009 changelogs.ubuntu.com
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 debian
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K nov  4 11:23 debian.med.univ-tours.fr
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 deb.opera.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 dl.google.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K fév  8 17:43 download.tuxfamily.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 25  2009 download.virtualbox.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 download.webmin.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K oct  9 14:26 eeepc.debian.net
 -rw-r--r-- 1 apt-cacher-ng apt-cacher-ng    0 mar 15 06:49 _expending_dat
 -rwxr-xr-x 1 apt-cacher-ng apt-cacher-ng 1,4M mar 27 07:32 _impkeycache
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 3,1M mar 27 07:32 _import
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K oct 21 08:07 packages.debian.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 26  2009 packages.enlightenment.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K mar 28 20:56 packages.medibuntu.org
 drwxr-sr-x 5 apt-cacher-ng apt-cacher-ng 4,0K mar 27 07:04 ppa.launchpad.net
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 repo.palatinus.cz
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K mar 27 18:17 repos.eeebuntu.org
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K sep 24  2009 security.debian.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 28  2009 security.ubuntu.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K nov 11 15:17 sidux.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K jan 10 08:27 sidux.office-vienna.at
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K nov 11 06:45 talweg.univ-metz.fr
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K sep 26  2009 uburep
 drwxr-sr-x 2 apt-cacher-ng apt-cacher-ng 4,0K oct  1 12:04 volatile.debian.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K jan  8 11:46 w3you.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 24  2009 www.backports.org
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 www.debian-multimedia.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 26  2009 www.lamaresh.net

En utilisant l'option Remap vous ac-ng va créer des sous-répertoires (Debian, Ubuntu...) qui servent à centraliser les mêmes dépôts issus de sites miroirs. Cela évite les dépôts &quot;doublons&quot;.

Ensuite, vous pouvez faire un lien symbolique de /mnt/192.168.0.2/cache/apt-cacher-ng vers /var/www/apt-cacher-ng pour avoir un accès avec un serveur apache2/httpd (vous pouvez ainsi naviguer dans le dépôt depuis n'importe quelle machine du réseau).
C'est juste un petit &quot;gadget&quot; en plus, aucune utilité réelle...

== Configuration client ==

Il suffit d'éditer ou créer le fichier /etc/apt/apt.conf pour qu'il ressemble à ça :

 Acquire::http {
         Proxy &quot;http://192.168.0.1:3142&quot;;
         };

Edit : Pour ceux qui utilisent apt-listbugs, ajouter cette ligne EN PREMIER dans apt.conf :

 Acquire::http::Proxy::bugs.debian.org &quot;DIRECT&quot;;

Il y a une deuxième solution qui consiste à modifier tous les sources.list, je ne détaille pas volontairement, c'est moins simple...

Pensez aussi à changer le fichier /etc/apt/apt.conf du serveur pour que lui aussi participe à la maintenance de votre dépôt !

== Importation de paquets déjà téléchargés ou présents sur vos DVD : ==

 cd /mnt/192.168.0.2/cache
 mkdir apt-cacher-ng/_import[/code]
 Copiez vos fichiers deb dans le cache (/mnt/192.168.0.2/cache/apt-cacher-ng/_import)
 chown -R apt-cacher-ng apt-cacher-ng/_import[/code]

Faire un apt-get update sur tous les clients et sur le serveur

Puis ouvrir l'interface web de apt-cacher-ng &quot;http://192.168.0.1:3142/acng-report.html&quot; et cliquer simplement sur &quot;start import&quot;. Il va copier les deb à jour dans les bons dépôts du cache local

== Exemple d'utilisation des &quot;backends&quot; : ==

Un fichier «Backend» est un fichier texte contenant une liste d'URLs mirroirs, un par ligne.

Utilisation d'un fichier backends pour les dépôts multimedia. Dans /etc/apt-cacher-ng/acng.conf ajoutez cette ligne :

 Remap-marillat: file:backends_marillat /debian-multimedia

Création du fichier contenant les url :

 # nano /etc/apt-cacher-ng/backends_marillat

 http://www.debian-multimedia.org
 ftp://ftp.debian-multimedia.org
 http://mirror.optus.net/debian-multimedia/
 http://mirror.home-dn.net/debian-multimedia
 http://debian-multimedia.gnali.org
 http://debian-multimedia.informatik.uni-erlangen.de/debian-multimedia
 http://mi.mirror.garr.it/mirrors/debian-multimedia
 http://mirror.yandex.ru/debian-multimedia/
 http://ftp.sunet.se/pub/os/Linux/distributions/debian-multimedia
 http://ftp.tw.debian.org/debian-multimedia/

 Redémarrez acng :

 # service apt-cacher-ng restart

Faites un apt-get update avec un client qui contient une dépôt multimédia dans son sources.list.
Un nouveau répertoire est maintenant créé dans CacheDir : /marillat

L'avantage est énorme, il permet en cas de défection d'un dépôt de pouvoir continuer à faire ses mise-à-jour sans avoir besoin de changer tous les sources.list de vos &quot;clients&quot;...

== Pour conclure ==

N'oubliez pas d'ouvrir sur le serveur le port du pare-feu (ici 3142) pour que les machines du réseau puissent accéder à ac-ng...  :wink: 

Pensez à uniformiser les sources.list des vos différentes machines, vous gagnerez du temps de connexion !

Entretien de la base...
Afin de ne pas avoir au bout de quelques mois un cache démesuré, surtout si des machines en SID traînent sur votre réseau, penser à la nettoyer de temps-en-temps... interface web de apt-cacher-ng &quot;http://192.168.0.1:3142/acng-report.html&quot; + &quot;start expiration&quot; Cela efface tous les paquets devenus obsolètes !

Grâce à ce serveur j'installe une Lenny avec debootstrap en une minute et 8 secondes...

J'ai remarqué que parfois des blocages arrivaient au niveau des clients pendant le téléchargement de paquets. C'est réglé par un simple redémarrage de ac-ng

 laurent@spider:/mnt/192.168.0.2/cache/apt-cacher-ng$ sudo /etc/init.d/apt-cacher-ng restart
 Restarting apt-cacher-ng: apt-cacher-ng.

Dernière information... La taille du cache !

Le mien :

 $ du -sh apt-cacher-ng/
 43G     apt-cacher-ng/

43 Go après 6 mois d'utilisation.
Maintien de Etch (32bits), Lenny (32 et 64bits), Squeeze (64bits), Sid (64bits), Sidux (32 et 64 bits), Ubuntu et Kubuntu 9.10 (32 et 64 bits)... C'est raisonnable (l'équivalent d'une dizaine de DVD)...

--[[Utilisateur:Lol|Lol]] 1 avril 2010 à 09:10 (UTC)

Liens sur le forum : 
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23065&amp;start=0] Le T&amp;A sur le forum]
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=26805&amp;start=0 La Discussion si vous avez des questions]

[[Catégorie:Paquets]][[Catégorie:Serveurs]]</text>
      <sha1>ralnrjrc8u5kgzuvewpib4xy12kwz1d</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2201</id>
      <parentid>2200</parentid>
      <timestamp>2010-10-08T12:41:07Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="9482">Installation, configuration et utilisation de apt-cacher-ng (ac-ng)

== Introduction ==

Acng est un &quot;dépôt cache&quot; de paquets Debian

Avantages :
:Très simple à installer;
:Utilisable par toutes les distributions à base de Debian;
:Accessible depuis tout le réseau.
:Votre dépôt ne contient que les paquets dont vous avez besoin (contrairement à un dépôt miroir)

Inconvénient :
:Votre dépôt cache peut devenir très important, en fonction du nombre de distribution / branches que vous maintenez

&quot;Ac-ng&quot; fonctionne de manière très simple. Quand une machine sur le réseau installe un paquet, &quot;ac-ng&quot; le &quot;capte&quot; et le copie dans son &quot;cache&quot;.
Il est ainsi ensuite disponible pour toutes les autres machines du réseau, à la vitesse du réseau local  :D 

Pas besoin d'avoir un réseau de taille démesuré pour avoir besoin de &quot;ac-ng&quot;... Une mauvaise connexion le justifie, l'envie de réinstaller rapidement en cas de crash, si vous testez souvent dans des machines virtuelles... Simplement vouloir éviter de saturer sa bande passante avec du téléchargement de paquets.

Il fonctionne sans proxy installé, puisque lui-même fonctionne comme un proxy.
Si vous avez un proxy sur votre système, vous déclarerez-le dans votre configuration, il sera prit en compte.

== Installation ==

Il n'y a pas plus simple...

 apt-get install apt-cacher-ng

== Configurer le serveur ==

Un seul fichier à modifier : /etc/apt-cacher-ng/apcng.conf

 CacheDir: /mnt/192.168.0.2/cache/apt-cacher-ng
 # L'emplacement normal est /var/www/apt-cacher J'ai choisi un autre emplacement sur une partition LVM
 LogDir: /var/log/apt-cacher-ng
 
 # TCP (http) port
 # Set to 9999 to emulate apt-proxy
 #Port:3142
 Port:9999
 
 BindAddress: localhost 192.168.0.1
 
 # Pour plus de sécurité, réserver l'utilisation à son réseau local, mais rien n'empêche d'étendre...
 #Remap-debian: file:deb_mirror*.gz /debian ; file:backends_debian
 #Remap-uburep: file:ubuntu_mirrors /ubuntu ; file:backends_ubuntu
 
 VerboseLog: 1
 ReportPage: acng-report.html
 # Proxy: Si vous n'avez pas de proxy sur votre réseau, ne mettez rien
 Proxy: http://192.168.0.254:3128
 ExTreshold: 4

Concernant la commande Remap... Elle permet de mettre un peu d'ordre dans vos dépôts.
[[Apt-cacher-ng#Exemple_d.27utilisation_des_.22backends.22_:|Voir plus bas]].

Voici ce que ça donne :

 laurent@spider:/mnt/192.168.0.2/cache/apt-cacher-ng$ ls -lh
 total 4,5M
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 26  2009 archive.canonical.com
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K nov 18 10:27 boisson.homeip.net
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 29  2009 changelogs.ubuntu.com
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 debian
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K nov  4 11:23 debian.med.univ-tours.fr
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 deb.opera.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 dl.google.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K fév  8 17:43 download.tuxfamily.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 25  2009 download.virtualbox.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 download.webmin.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K oct  9 14:26 eeepc.debian.net
 -rw-r--r-- 1 apt-cacher-ng apt-cacher-ng    0 mar 15 06:49 _expending_dat
 -rwxr-xr-x 1 apt-cacher-ng apt-cacher-ng 1,4M mar 27 07:32 _impkeycache
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 3,1M mar 27 07:32 _import
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K oct 21 08:07 packages.debian.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 26  2009 packages.enlightenment.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K mar 28 20:56 packages.medibuntu.org
 drwxr-sr-x 5 apt-cacher-ng apt-cacher-ng 4,0K mar 27 07:04 ppa.launchpad.net
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 repo.palatinus.cz
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K mar 27 18:17 repos.eeebuntu.org
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K sep 24  2009 security.debian.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 28  2009 security.ubuntu.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K nov 11 15:17 sidux.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K jan 10 08:27 sidux.office-vienna.at
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K nov 11 06:45 talweg.univ-metz.fr
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K sep 26  2009 uburep
 drwxr-sr-x 2 apt-cacher-ng apt-cacher-ng 4,0K oct  1 12:04 volatile.debian.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K jan  8 11:46 w3you.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 24  2009 www.backports.org
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 www.debian-multimedia.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 26  2009 www.lamaresh.net

En utilisant l'option Remap vous ac-ng va créer des sous-répertoires (Debian, Ubuntu...) qui servent à centraliser les mêmes dépôts issus de sites miroirs. Cela évite les dépôts &quot;doublons&quot;.

Ensuite, vous pouvez faire un lien symbolique de /mnt/192.168.0.2/cache/apt-cacher-ng vers /var/www/apt-cacher-ng pour avoir un accès avec un serveur apache2/httpd (vous pouvez ainsi naviguer dans le dépôt depuis n'importe quelle machine du réseau).
C'est juste un petit &quot;gadget&quot; en plus, aucune utilité réelle...

== Configuration client ==

Il suffit d'éditer ou créer le fichier /etc/apt/apt.conf pour qu'il ressemble à ça :

 Acquire::http {
         Proxy &quot;http://192.168.0.1:9999&quot;;
         };

Edit : Pour ceux qui utilisent apt-listbugs, ajouter cette ligne EN PREMIER dans apt.conf :

 Acquire::http::Proxy::bugs.debian.org &quot;DIRECT&quot;;

Il y a une deuxième solution qui consiste à modifier tous les sources.list, je ne détaille pas volontairement, c'est moins simple...

Pensez aussi à changer le fichier /etc/apt/apt.conf du serveur pour que lui aussi participe à la maintenance de votre dépôt !

== Importation de paquets déjà téléchargés ou présents sur vos DVD : ==

 cd /mnt/192.168.0.2/cache
 mkdir apt-cacher-ng/_import[/code]
 Copiez vos fichiers deb dans le cache (/mnt/192.168.0.2/cache/apt-cacher-ng/_import)
 chown -R apt-cacher-ng apt-cacher-ng/_import[/code]

Faire un apt-get update sur tous les clients et sur le serveur

Puis ouvrir l'interface web de apt-cacher-ng &quot;http://192.168.0.1:9999/acng-report.html&quot; et cliquer simplement sur &quot;start import&quot;. Il va copier les deb à jour dans les bons dépôts du cache local

== Exemple d'utilisation des &quot;backends&quot; : ==

Un fichier «Backend» est un fichier texte contenant une liste d'URLs mirroirs, un par ligne.

Utilisation d'un fichier backends pour les dépôts multimedia. Dans /etc/apt-cacher-ng/acng.conf ajoutez cette ligne :

 Remap-marillat: file:backends_marillat /debian-multimedia

Création du fichier contenant les url :

 # nano /etc/apt-cacher-ng/backends_marillat

 http://www.debian-multimedia.org
 ftp://ftp.debian-multimedia.org
 http://mirror.optus.net/debian-multimedia/
 http://mirror.home-dn.net/debian-multimedia
 http://debian-multimedia.gnali.org
 http://debian-multimedia.informatik.uni-erlangen.de/debian-multimedia
 http://mi.mirror.garr.it/mirrors/debian-multimedia
 http://mirror.yandex.ru/debian-multimedia/
 http://ftp.sunet.se/pub/os/Linux/distributions/debian-multimedia
 http://ftp.tw.debian.org/debian-multimedia/

 Redémarrez acng :

 # service apt-cacher-ng restart

Faites un apt-get update avec un client qui contient une dépôt multimédia dans son sources.list.
Un nouveau répertoire est maintenant créé dans CacheDir : /marillat

L'avantage est énorme, il permet en cas de défection d'un dépôt de pouvoir continuer à faire ses mise-à-jour sans avoir besoin de changer tous les sources.list de vos &quot;clients&quot;...

== Pour conclure ==

N'oubliez pas d'ouvrir sur le serveur le port du pare-feu (ici 9999) pour que les machines du réseau puissent accéder à ac-ng...  :wink: 

Pensez à uniformiser les sources.list des vos différentes machines, vous gagnerez du temps de connexion !

Entretien de la base...
Afin de ne pas avoir au bout de quelques mois un cache démesuré, surtout si des machines en SID traînent sur votre réseau, penser à la nettoyer de temps-en-temps... interface web de apt-cacher-ng &quot;http://192.168.0.1:9999/acng-report.html&quot; + &quot;start expiration&quot; Cela efface tous les paquets devenus obsolètes !

Grâce à ce serveur j'installe une Lenny avec debootstrap en une minute et 8 secondes...

J'ai remarqué que parfois des blocages arrivaient au niveau des clients pendant le téléchargement de paquets. C'est réglé par un simple redémarrage de ac-ng

 laurent@spider:/mnt/192.168.0.2/cache/apt-cacher-ng$ sudo /etc/init.d/apt-cacher-ng restart
 Restarting apt-cacher-ng: apt-cacher-ng.

Dernière information... La taille du cache !

Le mien :

 $ du -sh apt-cacher-ng/
 43G     apt-cacher-ng/

43 Go après 6 mois d'utilisation.
Maintien de Etch (32bits), Lenny (32 et 64bits), Squeeze (64bits), Sid (64bits), Sidux (32 et 64 bits), Ubuntu et Kubuntu 9.10 (32 et 64 bits)... C'est raisonnable (l'équivalent d'une dizaine de DVD)...

--[[Utilisateur:Lol|Lol]] 1 avril 2010 à 09:10 (UTC)

Liens sur le forum : 
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23065&amp;start=0] Le T&amp;A sur le forum]
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=26805&amp;start=0 La Discussion si vous avez des questions]

[[Catégorie:Paquets]][[Catégorie:Serveurs]]</text>
      <sha1>5ougenblgvougqi6d97lhluvt07yhbx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2980</id>
      <parentid>2201</parentid>
      <timestamp>2011-05-15T07:45:33Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Configurer le serveur */</comment>
      <text xml:space="preserve" bytes="9481">Installation, configuration et utilisation de apt-cacher-ng (ac-ng)

== Introduction ==

Acng est un &quot;dépôt cache&quot; de paquets Debian

Avantages :
:Très simple à installer;
:Utilisable par toutes les distributions à base de Debian;
:Accessible depuis tout le réseau.
:Votre dépôt ne contient que les paquets dont vous avez besoin (contrairement à un dépôt miroir)

Inconvénient :
:Votre dépôt cache peut devenir très important, en fonction du nombre de distribution / branches que vous maintenez

&quot;Ac-ng&quot; fonctionne de manière très simple. Quand une machine sur le réseau installe un paquet, &quot;ac-ng&quot; le &quot;capte&quot; et le copie dans son &quot;cache&quot;.
Il est ainsi ensuite disponible pour toutes les autres machines du réseau, à la vitesse du réseau local  :D 

Pas besoin d'avoir un réseau de taille démesuré pour avoir besoin de &quot;ac-ng&quot;... Une mauvaise connexion le justifie, l'envie de réinstaller rapidement en cas de crash, si vous testez souvent dans des machines virtuelles... Simplement vouloir éviter de saturer sa bande passante avec du téléchargement de paquets.

Il fonctionne sans proxy installé, puisque lui-même fonctionne comme un proxy.
Si vous avez un proxy sur votre système, vous déclarerez-le dans votre configuration, il sera prit en compte.

== Installation ==

Il n'y a pas plus simple...

 apt-get install apt-cacher-ng

== Configurer le serveur ==

Un seul fichier à modifier : /etc/apt-cacher-ng/acng.conf

 CacheDir: /mnt/192.168.0.2/cache/apt-cacher-ng
 # L'emplacement normal est /var/www/apt-cacher J'ai choisi un autre emplacement sur une partition LVM
 LogDir: /var/log/apt-cacher-ng
 
 # TCP (http) port
 # Set to 9999 to emulate apt-proxy
 #Port:3142
 Port:9999
 
 BindAddress: localhost 192.168.0.1
 
 # Pour plus de sécurité, réserver l'utilisation à son réseau local, mais rien n'empêche d'étendre...
 #Remap-debian: file:deb_mirror*.gz /debian ; file:backends_debian
 #Remap-uburep: file:ubuntu_mirrors /ubuntu ; file:backends_ubuntu
 
 VerboseLog: 1
 ReportPage: acng-report.html
 # Proxy: Si vous n'avez pas de proxy sur votre réseau, ne mettez rien
 Proxy: http://192.168.0.254:3128
 ExTreshold: 4

Concernant la commande Remap... Elle permet de mettre un peu d'ordre dans vos dépôts.
[[Apt-cacher-ng#Exemple_d.27utilisation_des_.22backends.22_:|Voir plus bas]].

Voici ce que ça donne :

 laurent@spider:/mnt/192.168.0.2/cache/apt-cacher-ng$ ls -lh
 total 4,5M
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 26  2009 archive.canonical.com
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K nov 18 10:27 boisson.homeip.net
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 29  2009 changelogs.ubuntu.com
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 debian
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K nov  4 11:23 debian.med.univ-tours.fr
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 deb.opera.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 dl.google.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K fév  8 17:43 download.tuxfamily.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 25  2009 download.virtualbox.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 download.webmin.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K oct  9 14:26 eeepc.debian.net
 -rw-r--r-- 1 apt-cacher-ng apt-cacher-ng    0 mar 15 06:49 _expending_dat
 -rwxr-xr-x 1 apt-cacher-ng apt-cacher-ng 1,4M mar 27 07:32 _impkeycache
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 3,1M mar 27 07:32 _import
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K oct 21 08:07 packages.debian.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 26  2009 packages.enlightenment.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K mar 28 20:56 packages.medibuntu.org
 drwxr-sr-x 5 apt-cacher-ng apt-cacher-ng 4,0K mar 27 07:04 ppa.launchpad.net
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 repo.palatinus.cz
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K mar 27 18:17 repos.eeebuntu.org
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K sep 24  2009 security.debian.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 28  2009 security.ubuntu.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K nov 11 15:17 sidux.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K jan 10 08:27 sidux.office-vienna.at
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K nov 11 06:45 talweg.univ-metz.fr
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K sep 26  2009 uburep
 drwxr-sr-x 2 apt-cacher-ng apt-cacher-ng 4,0K oct  1 12:04 volatile.debian.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K jan  8 11:46 w3you.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 24  2009 www.backports.org
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 www.debian-multimedia.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 26  2009 www.lamaresh.net

En utilisant l'option Remap vous ac-ng va créer des sous-répertoires (Debian, Ubuntu...) qui servent à centraliser les mêmes dépôts issus de sites miroirs. Cela évite les dépôts &quot;doublons&quot;.

Ensuite, vous pouvez faire un lien symbolique de /mnt/192.168.0.2/cache/apt-cacher-ng vers /var/www/apt-cacher-ng pour avoir un accès avec un serveur apache2/httpd (vous pouvez ainsi naviguer dans le dépôt depuis n'importe quelle machine du réseau).
C'est juste un petit &quot;gadget&quot; en plus, aucune utilité réelle...

== Configuration client ==

Il suffit d'éditer ou créer le fichier /etc/apt/apt.conf pour qu'il ressemble à ça :

 Acquire::http {
         Proxy &quot;http://192.168.0.1:9999&quot;;
         };

Edit : Pour ceux qui utilisent apt-listbugs, ajouter cette ligne EN PREMIER dans apt.conf :

 Acquire::http::Proxy::bugs.debian.org &quot;DIRECT&quot;;

Il y a une deuxième solution qui consiste à modifier tous les sources.list, je ne détaille pas volontairement, c'est moins simple...

Pensez aussi à changer le fichier /etc/apt/apt.conf du serveur pour que lui aussi participe à la maintenance de votre dépôt !

== Importation de paquets déjà téléchargés ou présents sur vos DVD : ==

 cd /mnt/192.168.0.2/cache
 mkdir apt-cacher-ng/_import[/code]
 Copiez vos fichiers deb dans le cache (/mnt/192.168.0.2/cache/apt-cacher-ng/_import)
 chown -R apt-cacher-ng apt-cacher-ng/_import[/code]

Faire un apt-get update sur tous les clients et sur le serveur

Puis ouvrir l'interface web de apt-cacher-ng &quot;http://192.168.0.1:9999/acng-report.html&quot; et cliquer simplement sur &quot;start import&quot;. Il va copier les deb à jour dans les bons dépôts du cache local

== Exemple d'utilisation des &quot;backends&quot; : ==

Un fichier «Backend» est un fichier texte contenant une liste d'URLs mirroirs, un par ligne.

Utilisation d'un fichier backends pour les dépôts multimedia. Dans /etc/apt-cacher-ng/acng.conf ajoutez cette ligne :

 Remap-marillat: file:backends_marillat /debian-multimedia

Création du fichier contenant les url :

 # nano /etc/apt-cacher-ng/backends_marillat

 http://www.debian-multimedia.org
 ftp://ftp.debian-multimedia.org
 http://mirror.optus.net/debian-multimedia/
 http://mirror.home-dn.net/debian-multimedia
 http://debian-multimedia.gnali.org
 http://debian-multimedia.informatik.uni-erlangen.de/debian-multimedia
 http://mi.mirror.garr.it/mirrors/debian-multimedia
 http://mirror.yandex.ru/debian-multimedia/
 http://ftp.sunet.se/pub/os/Linux/distributions/debian-multimedia
 http://ftp.tw.debian.org/debian-multimedia/

 Redémarrez acng :

 # service apt-cacher-ng restart

Faites un apt-get update avec un client qui contient une dépôt multimédia dans son sources.list.
Un nouveau répertoire est maintenant créé dans CacheDir : /marillat

L'avantage est énorme, il permet en cas de défection d'un dépôt de pouvoir continuer à faire ses mise-à-jour sans avoir besoin de changer tous les sources.list de vos &quot;clients&quot;...

== Pour conclure ==

N'oubliez pas d'ouvrir sur le serveur le port du pare-feu (ici 9999) pour que les machines du réseau puissent accéder à ac-ng...  :wink: 

Pensez à uniformiser les sources.list des vos différentes machines, vous gagnerez du temps de connexion !

Entretien de la base...
Afin de ne pas avoir au bout de quelques mois un cache démesuré, surtout si des machines en SID traînent sur votre réseau, penser à la nettoyer de temps-en-temps... interface web de apt-cacher-ng &quot;http://192.168.0.1:9999/acng-report.html&quot; + &quot;start expiration&quot; Cela efface tous les paquets devenus obsolètes !

Grâce à ce serveur j'installe une Lenny avec debootstrap en une minute et 8 secondes...

J'ai remarqué que parfois des blocages arrivaient au niveau des clients pendant le téléchargement de paquets. C'est réglé par un simple redémarrage de ac-ng

 laurent@spider:/mnt/192.168.0.2/cache/apt-cacher-ng$ sudo /etc/init.d/apt-cacher-ng restart
 Restarting apt-cacher-ng: apt-cacher-ng.

Dernière information... La taille du cache !

Le mien :

 $ du -sh apt-cacher-ng/
 43G     apt-cacher-ng/

43 Go après 6 mois d'utilisation.
Maintien de Etch (32bits), Lenny (32 et 64bits), Squeeze (64bits), Sid (64bits), Sidux (32 et 64 bits), Ubuntu et Kubuntu 9.10 (32 et 64 bits)... C'est raisonnable (l'équivalent d'une dizaine de DVD)...

--[[Utilisateur:Lol|Lol]] 1 avril 2010 à 09:10 (UTC)

Liens sur le forum : 
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23065&amp;start=0] Le T&amp;A sur le forum]
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=26805&amp;start=0 La Discussion si vous avez des questions]

[[Catégorie:Paquets]][[Catégorie:Serveurs]]</text>
      <sha1>tkb542asp0wrdiss5gf3tdp1bihuy6g</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4424</id>
      <parentid>2980</parentid>
      <timestamp>2012-08-21T08:05:20Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Pour conclure */</comment>
      <text xml:space="preserve" bytes="9844">Installation, configuration et utilisation de apt-cacher-ng (ac-ng)

== Introduction ==

Acng est un &quot;dépôt cache&quot; de paquets Debian

Avantages :
:Très simple à installer;
:Utilisable par toutes les distributions à base de Debian;
:Accessible depuis tout le réseau.
:Votre dépôt ne contient que les paquets dont vous avez besoin (contrairement à un dépôt miroir)

Inconvénient :
:Votre dépôt cache peut devenir très important, en fonction du nombre de distribution / branches que vous maintenez

&quot;Ac-ng&quot; fonctionne de manière très simple. Quand une machine sur le réseau installe un paquet, &quot;ac-ng&quot; le &quot;capte&quot; et le copie dans son &quot;cache&quot;.
Il est ainsi ensuite disponible pour toutes les autres machines du réseau, à la vitesse du réseau local  :D 

Pas besoin d'avoir un réseau de taille démesuré pour avoir besoin de &quot;ac-ng&quot;... Une mauvaise connexion le justifie, l'envie de réinstaller rapidement en cas de crash, si vous testez souvent dans des machines virtuelles... Simplement vouloir éviter de saturer sa bande passante avec du téléchargement de paquets.

Il fonctionne sans proxy installé, puisque lui-même fonctionne comme un proxy.
Si vous avez un proxy sur votre système, vous déclarerez-le dans votre configuration, il sera prit en compte.

== Installation ==

Il n'y a pas plus simple...

 apt-get install apt-cacher-ng

== Configurer le serveur ==

Un seul fichier à modifier : /etc/apt-cacher-ng/acng.conf

 CacheDir: /mnt/192.168.0.2/cache/apt-cacher-ng
 # L'emplacement normal est /var/www/apt-cacher J'ai choisi un autre emplacement sur une partition LVM
 LogDir: /var/log/apt-cacher-ng
 
 # TCP (http) port
 # Set to 9999 to emulate apt-proxy
 #Port:3142
 Port:9999
 
 BindAddress: localhost 192.168.0.1
 
 # Pour plus de sécurité, réserver l'utilisation à son réseau local, mais rien n'empêche d'étendre...
 #Remap-debian: file:deb_mirror*.gz /debian ; file:backends_debian
 #Remap-uburep: file:ubuntu_mirrors /ubuntu ; file:backends_ubuntu
 
 VerboseLog: 1
 ReportPage: acng-report.html
 # Proxy: Si vous n'avez pas de proxy sur votre réseau, ne mettez rien
 Proxy: http://192.168.0.254:3128
 ExTreshold: 4

Concernant la commande Remap... Elle permet de mettre un peu d'ordre dans vos dépôts.
[[Apt-cacher-ng#Exemple_d.27utilisation_des_.22backends.22_:|Voir plus bas]].

Voici ce que ça donne :

 laurent@spider:/mnt/192.168.0.2/cache/apt-cacher-ng$ ls -lh
 total 4,5M
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 26  2009 archive.canonical.com
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K nov 18 10:27 boisson.homeip.net
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 29  2009 changelogs.ubuntu.com
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 debian
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K nov  4 11:23 debian.med.univ-tours.fr
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 deb.opera.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 dl.google.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K fév  8 17:43 download.tuxfamily.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 25  2009 download.virtualbox.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 download.webmin.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K oct  9 14:26 eeepc.debian.net
 -rw-r--r-- 1 apt-cacher-ng apt-cacher-ng    0 mar 15 06:49 _expending_dat
 -rwxr-xr-x 1 apt-cacher-ng apt-cacher-ng 1,4M mar 27 07:32 _impkeycache
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 3,1M mar 27 07:32 _import
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K oct 21 08:07 packages.debian.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 26  2009 packages.enlightenment.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K mar 28 20:56 packages.medibuntu.org
 drwxr-sr-x 5 apt-cacher-ng apt-cacher-ng 4,0K mar 27 07:04 ppa.launchpad.net
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 repo.palatinus.cz
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K mar 27 18:17 repos.eeebuntu.org
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K sep 24  2009 security.debian.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 28  2009 security.ubuntu.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K nov 11 15:17 sidux.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K jan 10 08:27 sidux.office-vienna.at
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K nov 11 06:45 talweg.univ-metz.fr
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K sep 26  2009 uburep
 drwxr-sr-x 2 apt-cacher-ng apt-cacher-ng 4,0K oct  1 12:04 volatile.debian.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K jan  8 11:46 w3you.com
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 24  2009 www.backports.org
 drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K sep 23  2009 www.debian-multimedia.org
 drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 26  2009 www.lamaresh.net

En utilisant l'option Remap vous ac-ng va créer des sous-répertoires (Debian, Ubuntu...) qui servent à centraliser les mêmes dépôts issus de sites miroirs. Cela évite les dépôts &quot;doublons&quot;.

Ensuite, vous pouvez faire un lien symbolique de /mnt/192.168.0.2/cache/apt-cacher-ng vers /var/www/apt-cacher-ng pour avoir un accès avec un serveur apache2/httpd (vous pouvez ainsi naviguer dans le dépôt depuis n'importe quelle machine du réseau).
C'est juste un petit &quot;gadget&quot; en plus, aucune utilité réelle...

== Configuration client ==

Il suffit d'éditer ou créer le fichier /etc/apt/apt.conf pour qu'il ressemble à ça :

 Acquire::http {
         Proxy &quot;http://192.168.0.1:9999&quot;;
         };

Edit : Pour ceux qui utilisent apt-listbugs, ajouter cette ligne EN PREMIER dans apt.conf :

 Acquire::http::Proxy::bugs.debian.org &quot;DIRECT&quot;;

Il y a une deuxième solution qui consiste à modifier tous les sources.list, je ne détaille pas volontairement, c'est moins simple...

Pensez aussi à changer le fichier /etc/apt/apt.conf du serveur pour que lui aussi participe à la maintenance de votre dépôt !

== Importation de paquets déjà téléchargés ou présents sur vos DVD : ==

 cd /mnt/192.168.0.2/cache
 mkdir apt-cacher-ng/_import[/code]
 Copiez vos fichiers deb dans le cache (/mnt/192.168.0.2/cache/apt-cacher-ng/_import)
 chown -R apt-cacher-ng apt-cacher-ng/_import[/code]

Faire un apt-get update sur tous les clients et sur le serveur

Puis ouvrir l'interface web de apt-cacher-ng &quot;http://192.168.0.1:9999/acng-report.html&quot; et cliquer simplement sur &quot;start import&quot;. Il va copier les deb à jour dans les bons dépôts du cache local

== Exemple d'utilisation des &quot;backends&quot; : ==

Un fichier «Backend» est un fichier texte contenant une liste d'URLs mirroirs, un par ligne.

Utilisation d'un fichier backends pour les dépôts multimedia. Dans /etc/apt-cacher-ng/acng.conf ajoutez cette ligne :

 Remap-marillat: file:backends_marillat /debian-multimedia

Création du fichier contenant les url :

 # nano /etc/apt-cacher-ng/backends_marillat

 http://www.debian-multimedia.org
 ftp://ftp.debian-multimedia.org
 http://mirror.optus.net/debian-multimedia/
 http://mirror.home-dn.net/debian-multimedia
 http://debian-multimedia.gnali.org
 http://debian-multimedia.informatik.uni-erlangen.de/debian-multimedia
 http://mi.mirror.garr.it/mirrors/debian-multimedia
 http://mirror.yandex.ru/debian-multimedia/
 http://ftp.sunet.se/pub/os/Linux/distributions/debian-multimedia
 http://ftp.tw.debian.org/debian-multimedia/

 Redémarrez acng :

 # service apt-cacher-ng restart

Faites un apt-get update avec un client qui contient une dépôt multimédia dans son sources.list.
Un nouveau répertoire est maintenant créé dans CacheDir : /marillat

L'avantage est énorme, il permet en cas de défection d'un dépôt de pouvoir continuer à faire ses mise-à-jour sans avoir besoin de changer tous les sources.list de vos &quot;clients&quot;...

== Entretien de la base ==

Afin de ne pas avoir au bout de quelques mois un cache démesuré, surtout si des machines en SID traînent sur votre réseau, penser à la nettoyer de temps-en-temps... interface web de apt-cacher-ng &quot;http://192.168.0.1:9999/acng-report.html&quot; + &quot;start expiration&quot; Cela efface tous les paquets devenus obsolètes !

Pour protéger votre interface Web et avoir l'autorisation de purger/effacer des fichiers, il est nécessaire de configurer l'autorisation dans le fichier: /etc/apt-cacher-ng/security.conf

&lt;pre&gt;
#AdminAuth: mooma:moopa
AdminAuth: utilisateur:motdepasseblinde
&lt;/pre&gt;

Suivi de:
 service apt-cacher-ng restart
 [ ok ] Restarting apt-cacher-ng: apt-cacher-ng.

== Pour conclure ==

N'oubliez pas d'ouvrir sur le serveur le port du pare-feu (ici 9999) pour que les machines du réseau puissent accéder à ac-ng...  :wink: 

Pensez à uniformiser les sources.list des vos différentes machines, vous gagnerez du temps de connexion !

Grâce à ce serveur j'installe une Lenny avec debootstrap en une minute et 8 secondes...

J'ai remarqué que parfois des blocages arrivaient au niveau des clients pendant le téléchargement de paquets. C'est réglé par un simple redémarrage de ac-ng

 laurent@spider:/mnt/192.168.0.2/cache/apt-cacher-ng$ sudo /etc/init.d/apt-cacher-ng restart
 Restarting apt-cacher-ng: apt-cacher-ng.

Dernière information... La taille du cache !

Le mien :

 $ du -sh apt-cacher-ng/
 43G     apt-cacher-ng/

43 Go après 6 mois d'utilisation.
Maintien de Etch (32bits), Lenny (32 et 64bits), Squeeze (64bits), Sid (64bits), Sidux (32 et 64 bits), Ubuntu et Kubuntu 9.10 (32 et 64 bits)... C'est raisonnable (l'équivalent d'une dizaine de DVD)...

--[[Utilisateur:Lol|Lol]] 1 avril 2010 à 09:10 (UTC)

Liens sur le forum : 
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23065&amp;start=0] Le T&amp;A sur le forum]
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=26805&amp;start=0 La Discussion si vous avez des questions]

[[Catégorie:Paquets]][[Catégorie:Serveurs]]</text>
      <sha1>m0qglw1cbad8rjc5xnky6jhibz9on6a</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Apt-listbugs</title>
    <ns>0</ns>
    <id>253</id>
    <revision>
      <id>1112</id>
      <timestamp>2010-03-03T06:47:28Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « {{Ébauche|le fichier '''apt-listbugs'''}}  '''Apt-listbugs'''  Ce paquet disponible dans les dépôts permet de se prémunir,  pour ceux qui sont en testing ou instable, de … »</comment>
      <text xml:space="preserve" bytes="7076">{{Ébauche|le fichier '''apt-listbugs'''}}

'''Apt-listbugs'''

Ce paquet disponible dans les dépôts permet de se prémunir,  pour ceux qui sont en testing ou instable, de l'installation d'un paquet &quot;bugué&quot;.
Il est très simple d'installation et d'utilisation !

== Installation ==

 # aptitude install apt-listbugs
 Lecture des listes de paquets... Fait         
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait       
 Lecture de l'information d'état étendu... Fait
 Initialisation de l'état des paquets... Fait   
 Les NOUVEAUX paquets suivants vont être installés : 
   apt-listbugs irb1.8{a} libdpkg-ruby1.8{a} libgettext-ruby1.8{a} libhttp-access2-ruby1.8{a} libhttpclient-ruby1.8{a} liblocale-ruby1.8{a} 
   libopenssl-ruby1.8{a} libreadline-ruby1.8{a} libruby{a} libuconv-ruby1.8{a} libxml-parser-ruby1.8{a} ruby{a}                             
 0 paquets mis à jour, 13 nouvellement installés, 0 à enlever et 12 non mis à jour.                                                         
 Il est nécessaire de télécharger 0o/1 752ko d'archives. Après dépaquetage, 6 860ko seront utilisés.                                        
 Voulez-vous continuer ? [Y/n/?] y ...

== Utilisation ==

Apt-listbugs se lance automatiquement à l'installation d'un nouveau paquet, et va chercher les rapports de bug (s'ils existent).
En cas de bug, il vous prévient et vous demande si vous souhaitez installer, annuler ou figer le paquet en question par ajour d'une &quot;préférence pin&quot;.

Exemple :

 # aptitude install grub-pc
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances
 Lecture des informations d'état... Fait
 Lecture de l'information d'état étendu... Fait
 Initialisation de l'état des paquets... Fait
 Les paquets suivants seront mis à jour :
   grub-common grub-pc
 2 paquets mis à jour, 0 nouvellement installés, 0 à enlever et 12 non mis à jour.
 Il est nécessaire de télécharger 0o/2 397ko d'archives. Après dépaquetage, 123ko seront utilisés.
 Voulez-vous continuer ? [Y/n/?] y
 ATTENTION : des versions non certifiées des paquets suivants vont
 être installées.
 
 Des paquets non certifiés peuvent compromettre la sécurité de votre
 système. Vous ne devriez les installer que si vous êtes certain
 que c'est bien votre intention.
 
   grub-pc grub-common
 
 Voulez-vous ignorer cet avertissement et continuer quand même ?
 Pour continuer, entrer « Oui ». Pour interrompre l'installation, entrer « Non » : oui
 Écriture de l'information d'état étendu... Fait
 Lecture des champs des paquets... Fait
 Lecture de l'état des paquets... Fait


A ce moment apt-listbugs prend la main, recherche les éventuels bugs, et s'il en trouve, vous demande ce qu'il doit faire :

 Récupération des rapports de bogue... Fait
 Analyse des informations Trouvé/Corrigé... Fait
 Bogues de gravité critical sur grub-pc (1.98~20100115-1 -&gt; 1.98~20100128-1.2) &lt;non corrigé&gt;
  #568001 - grub-pc: grub locks up the machine
 Résumé :
  grub-pc(1 bogue)
 Êtes-vous certain de vouloir installer/mettre à jour les paquets ci-dessus ? [Y/n/?/...]

Demandons la liste des options possibles en tapant &quot;?&quot;

 Êtes-vous certain de vouloir installer/mettre à jour les paquets ci-dessus ? [Y/n/?/...]  ?
      y     - continuer l'installation avec APT, mais sans ignorer les bogues.
      a     - continuer l'installation avec APT en ignorant les bogues ci-dessus.
      n     - interrompre l'installation avec APT
    &lt;num&gt;   - demander le rapport de bogue spécifié (nécessite reportbug)
   #&lt;num&gt;   - identique à &lt;num&gt;
      r     - afficher les listes de bogues
  p &lt;pqt..&gt; - figer les paquets : APT doit être relancé pour activer
              cette option
  p         - figer tous les paquets ci-dessus. APT devra être relancé.
  i &lt;numéro&gt;- ignorer le bogue numéro &lt;numéro&gt;
      ?     - afficher cette aide
      w     - afficher les listes de bogues en HTML (cette option
              utilise sensible-browser)
 Êtes-vous certain de vouloir installer/mettre à jour les paquets ci-dessus ? [Y/n/?/...]

L'option qui nous intéresse :
p &gt; vous figez le paquet par ajout d'une &quot;préférence pin&quot; dans le fichier /etc/apt/preferences

 Êtes-vous certain de vouloir installer/mettre à jour les paquets ci-dessus ? [Y/n/?/...]  p
 Le 1 paquet suivant sera figé ou mis en attente :
  grub-pc
 Êtes-vous certain ?[Y/n]? y
 grub-pc figé par ajout d'une préférence « Pin » dans /etc/apt/preferences. APT
 doit être relancé pour activer cette option

A ce niveau, il faut sortir de l'installation pour que notre choix soit pris en compte : 

Êtes-vous certain de vouloir installer/mettre à jour les paquets ci-dessus ? [N/?/...]  n
 *******************************************************************
 ****** Sortie en erreur forcée pour stopper l'installation. ******
 *******************************************************************
 E: Le sous-processus /usr/sbin/apt-listbugs apt || exit 10 a renvoyé un code d'erreur (10)
 E: Failure running script /usr/sbin/apt-listbugs apt || exit 10
 Échec de l'installation d'un paquet. Tentative de réparation :
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances
 Lecture des informations d'état... Fait
 Lecture de l'information d'état étendu... Fait
 Initialisation de l'état des paquets... Fait

Nous vérifions l'état du fichier /etc/apt/preferences :

 $ cat /etc/apt/preferences
 Explanation: Pinned by apt-listbugs at Wed Mar 03 09:37:07 +0300 2010
 Explanation:   #568001: grub-pc: grub locks up the machine
 Package: grub-pc
 Pin: version 1.98~20100115-1
 Pin-Priority: 1000

Effectivement notre fichier &quot;bugué&quot; est bien &quot;pinned&quot;. Cela signifie que cette version ne sera jamais installée,tant qu'un nouveau paquet ne sera pas dans les dépôts.
Une nouvelle mise à jour confirme cette action :

 # aptitude install grub-pc
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances
 Lecture des informations d'état... Fait
 Lecture de l'information d'état étendu... Fait
 Initialisation de l'état des paquets... Fait
 Aucun paquet ne va être installé, mis à jour ou enlevé.
 0 paquets mis à jour, 0 nouvellement installés, 0 à enlever et 13 non mis à jour.
 Il est nécessaire de télécharger 0o d'archives. Après dépaquetage, 0o seront utilisés.
 Écriture de l'information d'état étendu... Fait
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances
 Lecture des informations d'état... Fait
 Lecture de l'information d'état étendu... Fait
 Initialisation de l'état des paquets... Fait

Remarque : Le fichier marqué par apt-listbugs n'est pas mis en &quot;hold&quot;. Cela signifie qu'il sera mis à jour à la prochaine version supérieure dans les dépôts. Ce n'est pas le cas avec &quot;hold&quot; qui fige définitivement (tant que vous n'aurez pas mis ce paquet en &quot;unhold&quot;) la mise à jour.

 [[Utilisateur:Lol|Lol]] 3 mars 2010 à 06:47 (UTC)

[[Category:Paquets]]</text>
      <sha1>igkrzmsp69lklvbu9b08cylgz843wze</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1115</id>
      <parentid>1112</parentid>
      <timestamp>2010-03-03T12:37:16Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="7098">{{Ébauche|le fichier '''apt-listbugs'''}}

'''Apt-listbugs'''

Ce paquet disponible dans les dépôts permet de se prémunir,  pour ceux qui sont en testing ou instable, de l'installation d'un paquet &quot;bugué&quot;.
Il est très simple d'installation et d'utilisation !

== Installation ==

 # aptitude install apt-listbugs
 Lecture des listes de paquets... Fait         
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait       
 Lecture de l'information d'état étendu... Fait
 Initialisation de l'état des paquets... Fait   
 Les NOUVEAUX paquets suivants vont être installés : 
   apt-listbugs irb1.8{a} libdpkg-ruby1.8{a} libgettext-ruby1.8{a} libhttp-access2-ruby1.8{a} libhttpclient-ruby1.8{a} liblocale-ruby1.8{a} 
   libopenssl-ruby1.8{a} libreadline-ruby1.8{a} libruby{a} libuconv-ruby1.8{a} libxml-parser-ruby1.8{a} ruby{a}                             
 0 paquets mis à jour, 13 nouvellement installés, 0 à enlever et 12 non mis à jour.                                                         
 Il est nécessaire de télécharger 0o/1 752ko d'archives. Après dépaquetage, 6 860ko seront utilisés.                                        
 Voulez-vous continuer ? [Y/n/?] y ...

== Utilisation ==

Apt-listbugs se lance automatiquement à l'installation d'un nouveau paquet, et va chercher les rapports de bug (s'ils existent).
En cas de bug, il vous prévient et vous demande si vous souhaitez installer, annuler ou figer le paquet en question par ajour d'une &quot;préférence pin&quot;.

Exemple :

 # aptitude install grub-pc
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances
 Lecture des informations d'état... Fait
 Lecture de l'information d'état étendu... Fait
 Initialisation de l'état des paquets... Fait
 Les paquets suivants seront mis à jour :
   grub-common grub-pc
 2 paquets mis à jour, 0 nouvellement installés, 0 à enlever et 12 non mis à jour.
 Il est nécessaire de télécharger 0o/2 397ko d'archives. Après dépaquetage, 123ko seront utilisés.
 Voulez-vous continuer ? [Y/n/?] y
 ATTENTION : des versions non certifiées des paquets suivants vont
 être installées.
 
 Des paquets non certifiés peuvent compromettre la sécurité de votre
 système. Vous ne devriez les installer que si vous êtes certain
 que c'est bien votre intention.
 
   grub-pc grub-common
 
 Voulez-vous ignorer cet avertissement et continuer quand même ?
 Pour continuer, entrer « Oui ». Pour interrompre l'installation, entrer « Non » : oui
 Écriture de l'information d'état étendu... Fait
 Lecture des champs des paquets... Fait
 Lecture de l'état des paquets... Fait


A ce moment apt-listbugs prend la main, recherche les éventuels bugs, et s'il en trouve, vous demande ce qu'il doit faire :

 Récupération des rapports de bogue... Fait
 Analyse des informations Trouvé/Corrigé... Fait
 Bogues de gravité critical sur grub-pc (1.98~20100115-1 -&gt; 1.98~20100128-1.2) &lt;non corrigé&gt;
  #568001 - grub-pc: grub locks up the machine
 Résumé :
  grub-pc(1 bogue)
 Êtes-vous certain de vouloir installer/mettre à jour les paquets ci-dessus ? [Y/n/?/...]

Demandons la liste des options possibles en tapant &quot;?&quot;

 Êtes-vous certain de vouloir installer/mettre à jour les paquets ci-dessus ? [Y/n/?/...]  ?
      y     - continuer l'installation avec APT, mais sans ignorer les bogues.
      a     - continuer l'installation avec APT en ignorant les bogues ci-dessus.
      n     - interrompre l'installation avec APT
    &lt;num&gt;   - demander le rapport de bogue spécifié (nécessite reportbug)
   #&lt;num&gt;   - identique à &lt;num&gt;
      r     - afficher les listes de bogues
  p &lt;pqt..&gt; - figer les paquets : APT doit être relancé pour activer
              cette option
  p         - figer tous les paquets ci-dessus. APT devra être relancé.
  i &lt;numéro&gt;- ignorer le bogue numéro &lt;numéro&gt;
      ?     - afficher cette aide
      w     - afficher les listes de bogues en HTML (cette option
              utilise sensible-browser)
 Êtes-vous certain de vouloir installer/mettre à jour les paquets ci-dessus ? [Y/n/?/...]

L'option qui nous intéresse :
p &gt; vous figez le paquet par ajout d'une &quot;préférence pin&quot; dans le fichier /etc/apt/preferences

 Êtes-vous certain de vouloir installer/mettre à jour les paquets ci-dessus ? [Y/n/?/...]  p
 Le 1 paquet suivant sera figé ou mis en attente :
  grub-pc
 Êtes-vous certain ?[Y/n]? y
 grub-pc figé par ajout d'une préférence « Pin » dans /etc/apt/preferences. APT
 doit être relancé pour activer cette option

A ce niveau, il faut sortir de l'installation et relancer aptitude pour que notre choix soit pris en compte : 

 Êtes-vous certain de vouloir installer/mettre à jour les paquets ci-dessus ? [N/?/...]  n
 *******************************************************************
 ****** Sortie en erreur forcée pour stopper l'installation. ******
 *******************************************************************
 E: Le sous-processus /usr/sbin/apt-listbugs apt || exit 10 a renvoyé un code d'erreur (10)
 E: Failure running script /usr/sbin/apt-listbugs apt || exit 10
 Échec de l'installation d'un paquet. Tentative de réparation :
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances
 Lecture des informations d'état... Fait
 Lecture de l'information d'état étendu... Fait
 Initialisation de l'état des paquets... Fait

Nous vérifions l'état du fichier /etc/apt/preferences :

 $ cat /etc/apt/preferences
 Explanation: Pinned by apt-listbugs at Wed Mar 03 09:37:07 +0300 2010
 Explanation:   #568001: grub-pc: grub locks up the machine
 Package: grub-pc
 Pin: version 1.98~20100115-1
 Pin-Priority: 1000

Effectivement notre fichier &quot;bugué&quot; est bien &quot;pinned&quot;. Cela signifie que cette version ne sera jamais installée,tant qu'un nouveau paquet ne sera pas dans les dépôts.
Une nouvelle mise à jour confirme cette action :

 # aptitude install grub-pc
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances
 Lecture des informations d'état... Fait
 Lecture de l'information d'état étendu... Fait
 Initialisation de l'état des paquets... Fait
 Aucun paquet ne va être installé, mis à jour ou enlevé.
 0 paquets mis à jour, 0 nouvellement installés, 0 à enlever et 13 non mis à jour.
 Il est nécessaire de télécharger 0o d'archives. Après dépaquetage, 0o seront utilisés.
 Écriture de l'information d'état étendu... Fait
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances
 Lecture des informations d'état... Fait
 Lecture de l'information d'état étendu... Fait
 Initialisation de l'état des paquets... Fait

Remarque : Le fichier marqué par apt-listbugs n'est pas mis en &quot;hold&quot;. Cela signifie qu'il sera mis à jour à la prochaine version supérieure dans les dépôts. Ce n'est pas le cas avec &quot;hold&quot; qui fige définitivement (tant que vous n'aurez pas mis ce paquet en &quot;unhold&quot;) la mise à jour.

 [[Utilisateur:Lol|Lol]] 3 mars 2010 à 06:47 (UTC)

[[Category:Paquets]]</text>
      <sha1>7t3cae6x4ue0xba4rlo740fmvkejlvv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1116</id>
      <parentid>1115</parentid>
      <timestamp>2010-03-04T05:53:06Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="7238">{{Ébauche|le fichier '''apt-listbugs'''}}

'''Apt-listbugs'''

Ce paquet disponible dans les dépôts permet de se prémunir,  pour ceux qui sont en testing ou instable, de l'installation d'un paquet &quot;bugué&quot;.
Il est très simple d'installation et d'utilisation !

== Installation ==

 # aptitude install apt-listbugs
 Lecture des listes de paquets... Fait         
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait       
 Lecture de l'information d'état étendu... Fait
 Initialisation de l'état des paquets... Fait   
 Les NOUVEAUX paquets suivants vont être installés : 
   apt-listbugs irb1.8{a} libdpkg-ruby1.8{a} libgettext-ruby1.8{a} libhttp-access2-ruby1.8{a} libhttpclient-ruby1.8{a} liblocale-ruby1.8{a} 
   libopenssl-ruby1.8{a} libreadline-ruby1.8{a} libruby{a} libuconv-ruby1.8{a} libxml-parser-ruby1.8{a} ruby{a}                             
 0 paquets mis à jour, 13 nouvellement installés, 0 à enlever et 12 non mis à jour.                                                         
 Il est nécessaire de télécharger 0o/1 752ko d'archives. Après dépaquetage, 6 860ko seront utilisés.                                        
 Voulez-vous continuer ? [Y/n/?] y ...

== Utilisation ==

Apt-listbugs se lance automatiquement à l'installation d'un nouveau paquet, et va chercher les rapports de bug (s'ils existent).
En cas de bug, il vous prévient et vous demande si vous souhaitez installer, annuler ou figer le paquet en question par ajour d'une &quot;préférence pin&quot;.

Exemple :

 # aptitude install grub-pc
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances
 Lecture des informations d'état... Fait
 Lecture de l'information d'état étendu... Fait
 Initialisation de l'état des paquets... Fait
 Les paquets suivants seront mis à jour :
   grub-common grub-pc
 2 paquets mis à jour, 0 nouvellement installés, 0 à enlever et 12 non mis à jour.
 Il est nécessaire de télécharger 0o/2 397ko d'archives. Après dépaquetage, 123ko seront utilisés.
 Voulez-vous continuer ? [Y/n/?] y
 ATTENTION : des versions non certifiées des paquets suivants vont
 être installées.
 
 Des paquets non certifiés peuvent compromettre la sécurité de votre
 système. Vous ne devriez les installer que si vous êtes certain
 que c'est bien votre intention.
 
   grub-pc grub-common
 
 Voulez-vous ignorer cet avertissement et continuer quand même ?
 Pour continuer, entrer « Oui ». Pour interrompre l'installation, entrer « Non » : oui
 Écriture de l'information d'état étendu... Fait
 Lecture des champs des paquets... Fait
 Lecture de l'état des paquets... Fait


A ce moment apt-listbugs prend la main, recherche les éventuels bugs, et s'il en trouve, vous demande ce qu'il doit faire :

 Récupération des rapports de bogue... Fait
 Analyse des informations Trouvé/Corrigé... Fait
 Bogues de gravité critical sur grub-pc (1.98~20100115-1 -&gt; 1.98~20100128-1.2) &lt;non corrigé&gt;
  #568001 - grub-pc: grub locks up the machine
 Résumé :
  grub-pc(1 bogue)
 Êtes-vous certain de vouloir installer/mettre à jour les paquets ci-dessus ? [Y/n/?/...]

Demandons la liste des options possibles en tapant &quot;?&quot;

 Êtes-vous certain de vouloir installer/mettre à jour les paquets ci-dessus ? [Y/n/?/...]  ?
      y     - continuer l'installation avec APT, mais sans ignorer les bogues.
      a     - continuer l'installation avec APT en ignorant les bogues ci-dessus.
      n     - interrompre l'installation avec APT
    &lt;num&gt;   - demander le rapport de bogue spécifié (nécessite reportbug)
   #&lt;num&gt;   - identique à &lt;num&gt;
      r     - afficher les listes de bogues
  p &lt;pqt..&gt; - figer les paquets : APT doit être relancé pour activer
              cette option
  p         - figer tous les paquets ci-dessus. APT devra être relancé.
  i &lt;numéro&gt;- ignorer le bogue numéro &lt;numéro&gt;
      ?     - afficher cette aide
      w     - afficher les listes de bogues en HTML (cette option
              utilise sensible-browser)
 Êtes-vous certain de vouloir installer/mettre à jour les paquets ci-dessus ? [Y/n/?/...]

L'option qui nous intéresse :
p &gt; vous figez le paquet par ajout d'une &quot;préférence pin&quot; dans le fichier /etc/apt/preferences

 Êtes-vous certain de vouloir installer/mettre à jour les paquets ci-dessus ? [Y/n/?/...]  p
 Le 1 paquet suivant sera figé ou mis en attente :
  grub-pc
 Êtes-vous certain ?[Y/n]? y
 grub-pc figé par ajout d'une préférence « Pin » dans /etc/apt/preferences. APT
 doit être relancé pour activer cette option

A ce niveau, il faut sortir de l'installation et relancer aptitude pour que notre choix soit pris en compte : 

 Êtes-vous certain de vouloir installer/mettre à jour les paquets ci-dessus ? [N/?/...]  n
 *******************************************************************
 ****** Sortie en erreur forcée pour stopper l'installation. ******
 *******************************************************************
 E: Le sous-processus /usr/sbin/apt-listbugs apt || exit 10 a renvoyé un code d'erreur (10)
 E: Failure running script /usr/sbin/apt-listbugs apt || exit 10
 Échec de l'installation d'un paquet. Tentative de réparation :
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances
 Lecture des informations d'état... Fait
 Lecture de l'information d'état étendu... Fait
 Initialisation de l'état des paquets... Fait

Nous vérifions l'état du fichier /etc/apt/preferences :

 $ cat /etc/apt/preferences
 Explanation: Pinned by apt-listbugs at Wed Mar 03 09:37:07 +0300 2010
 Explanation:   #568001: grub-pc: grub locks up the machine
 Package: grub-pc
 Pin: version 1.98~20100115-1
 Pin-Priority: 1000

Effectivement notre fichier &quot;bugué&quot; est bien &quot;pinned&quot;. Cela signifie que cette version ne sera jamais installée,tant qu'un nouveau paquet ne sera pas dans les dépôts.
Une nouvelle mise à jour confirme cette action :

 # aptitude install grub-pc
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances
 Lecture des informations d'état... Fait
 Lecture de l'information d'état étendu... Fait
 Initialisation de l'état des paquets... Fait
 Aucun paquet ne va être installé, mis à jour ou enlevé.
 0 paquets mis à jour, 0 nouvellement installés, 0 à enlever et 13 non mis à jour.
 Il est nécessaire de télécharger 0o d'archives. Après dépaquetage, 0o seront utilisés.
 Écriture de l'information d'état étendu... Fait
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances
 Lecture des informations d'état... Fait
 Lecture de l'information d'état étendu... Fait
 Initialisation de l'état des paquets... Fait

[[Remarque]] : Le fichier marqué par apt-listbugs n'est pas mis en &quot;hold&quot;. Cela signifie qu'il sera mis à jour à la prochaine version supérieure dans les dépôts. C'est un script cron de apt-listbugs qui, une fois que le bug critique est corrigé, redonne sa &quot;chance&quot; au paquet marqué.

Ce n'est pas le cas avec la mise en &quot;hold&quot; qui fige définitivement (tant que vous n'aurez pas mis ce paquet en &quot;unhold&quot;) la mise à jour.

 [[Utilisateur:Lol|Lol]] 3 mars 2010 à 06:47 (UTC)

[[Category:Paquets]]</text>
      <sha1>3javmddjsncu4ra4ambg9f6kyso979t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1841</id>
      <parentid>1116</parentid>
      <timestamp>2010-08-04T17:29:32Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Utilisation */</comment>
      <text xml:space="preserve" bytes="7240">{{Ébauche|le fichier '''apt-listbugs'''}}

'''Apt-listbugs'''

Ce paquet disponible dans les dépôts permet de se prémunir,  pour ceux qui sont en testing ou instable, de l'installation d'un paquet &quot;bugué&quot;.
Il est très simple d'installation et d'utilisation !

== Installation ==

 # aptitude install apt-listbugs
 Lecture des listes de paquets... Fait         
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait       
 Lecture de l'information d'état étendu... Fait
 Initialisation de l'état des paquets... Fait   
 Les NOUVEAUX paquets suivants vont être installés : 
   apt-listbugs irb1.8{a} libdpkg-ruby1.8{a} libgettext-ruby1.8{a} libhttp-access2-ruby1.8{a} libhttpclient-ruby1.8{a} liblocale-ruby1.8{a} 
   libopenssl-ruby1.8{a} libreadline-ruby1.8{a} libruby{a} libuconv-ruby1.8{a} libxml-parser-ruby1.8{a} ruby{a}                             
 0 paquets mis à jour, 13 nouvellement installés, 0 à enlever et 12 non mis à jour.                                                         
 Il est nécessaire de télécharger 0o/1 752ko d'archives. Après dépaquetage, 6 860ko seront utilisés.                                        
 Voulez-vous continuer ? [Y/n/?] y ...

== Utilisation ==

Apt-listbugs se lance automatiquement à l'installation d'un nouveau paquet, et va chercher les rapports de bug (s'ils existent).
En cas de bug, il vous prévient et vous demande si vous souhaitez installer, annuler ou figer le paquet en question par ajout d'une &quot;préférence pin&quot;.

Exemple :

 # aptitude install grub-pc
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances
 Lecture des informations d'état... Fait
 Lecture de l'information d'état étendu... Fait
 Initialisation de l'état des paquets... Fait
 Les paquets suivants seront mis à jour :
   grub-common grub-pc
 2 paquets mis à jour, 0 nouvellement installés, 0 à enlever et 12 non mis à jour.
 Il est nécessaire de télécharger 0o/2 397ko d'archives. Après dépaquetage, 123ko seront utilisés.
 Voulez-vous continuer ? [Y/n/?] y
 ATTENTION : des versions non certifiées des paquets suivants vont
 être installées.
 
 Des paquets non certifiés peuvent compromettre la sécurité de votre
 système. Vous ne devriez les installer que si vous êtes certain
 que c'est bien votre intention.
 
   grub-pc grub-common
 
 Voulez-vous ignorer cet avertissement et continuer quand même ?
 Pour continuer, entrer « Oui ». Pour interrompre l'installation, entrer « Non » : oui
 Écriture de l'information d'état étendu... Fait
 Lecture des champs des paquets... Fait
 Lecture de l'état des paquets... Fait


A ce moment apt-listbugs prend la main, recherche les éventuels bugs, et s'il en trouve, vous demande ce qu'il doit faire :

 Récupération des rapports de bogue... Fait
 Analyse des informations Trouvé/Corrigé... Fait
 Bogues de gravité critical sur grub-pc (1.98~20100115-1 -&gt; 1.98~20100128-1.2) &lt;non corrigé&gt;
  #568001 - grub-pc: grub locks up the machine
 Résumé :
  grub-pc(1 bogue)
 Êtes-vous certain de vouloir installer/mettre à jour les paquets ci-dessus ? [Y/n/?/...]

Demandons la liste des options possibles en tapant &quot;?&quot;

 Êtes-vous certain de vouloir installer/mettre à jour les paquets ci-dessus ? [Y/n/?/...]  ?
      y     - continuer l'installation avec APT, mais sans ignorer les bogues.
      a     - continuer l'installation avec APT en ignorant les bogues ci-dessus.
      n     - interrompre l'installation avec APT
    &lt;num&gt;   - demander le rapport de bogue spécifié (nécessite reportbug)
   #&lt;num&gt;   - identique à &lt;num&gt;
      r     - afficher les listes de bogues
  p &lt;pqt..&gt; - figer les paquets : APT doit être relancé pour activer
              cette option
  p         - figer tous les paquets ci-dessus. APT devra être relancé.
  i &lt;numéro&gt;- ignorer le bogue numéro &lt;numéro&gt;
      ?     - afficher cette aide
      w     - afficher les listes de bogues en HTML (cette option
              utilise sensible-browser)
 Êtes-vous certain de vouloir installer/mettre à jour les paquets ci-dessus ? [Y/n/?/...]

L'option qui nous intéresse :
p &gt; vous figez le paquet par ajout d'une &quot;préférence pin&quot; dans le fichier /etc/apt/preferences

 Êtes-vous certain de vouloir installer/mettre à jour les paquets ci-dessus ? [Y/n/?/...]  p
 Le 1 paquet suivant sera figé ou mis en attente :
  grub-pc
 Êtes-vous certain ?[Y/n]? y
 grub-pc figé par ajout d'une préférence « Pin » dans /etc/apt/preferences. APT
 doit être relancé pour activer cette option
r
A ce niveau, il faut sortir de l'installation et relancer aptitude pour que notre choix soit pris en compte : 

 Êtes-vous certain de vouloir installer/mettre à jour les paquets ci-dessus ? [N/?/...]  n
 *******************************************************************
 ****** Sortie en erreur forcée pour stopper l'installation. ******
 *******************************************************************
 E: Le sous-processus /usr/sbin/apt-listbugs apt || exit 10 a renvoyé un code d'erreur (10)
 E: Failure running script /usr/sbin/apt-listbugs apt || exit 10
 Échec de l'installation d'un paquet. Tentative de réparation :
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances
 Lecture des informations d'état... Fait
 Lecture de l'information d'état étendu... Fait
 Initialisation de l'état des paquets... Fait

Nous vérifions l'état du fichier /etc/apt/preferences :

 $ cat /etc/apt/preferences
 Explanation: Pinned by apt-listbugs at Wed Mar 03 09:37:07 +0300 2010
 Explanation:   #568001: grub-pc: grub locks up the machine
 Package: grub-pc
 Pin: version 1.98~20100115-1
 Pin-Priority: 1000

Effectivement notre fichier &quot;bugué&quot; est bien &quot;pinned&quot;. Cela signifie que cette version ne sera jamais installée,tant qu'un nouveau paquet ne sera pas dans les dépôts.
Une nouvelle mise à jour confirme cette action :

 # aptitude install grub-pc
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances
 Lecture des informations d'état... Fait
 Lecture de l'information d'état étendu... Fait
 Initialisation de l'état des paquets... Fait
 Aucun paquet ne va être installé, mis à jour ou enlevé.
 0 paquets mis à jour, 0 nouvellement installés, 0 à enlever et 13 non mis à jour.
 Il est nécessaire de télécharger 0o d'archives. Après dépaquetage, 0o seront utilisés.
 Écriture de l'information d'état étendu... Fait
 Lecture des listes de parquets... Fait
 Construction de l'arbre des dépendances
 Lecture des informations d'état... Fait
 Lecture de l'information d'état étendu... Fait
 Initialisation de l'état des paquets... Fait

[[Remarque]] : Le fichier marqué par apt-listbugs n'est pas mis en &quot;hold&quot;. Cela signifie qu'il sera mis à jour à la prochaine version supérieure dans les dépôts. C'est un script cron de apt-listbugs qui, une fois que le bug critique est corrigé, redonne sa &quot;chance&quot; au paquet marqué.

Ce n'est pas le cas avec la mise en &quot;hold&quot; qui fige définitivement (tant que vous n'aurez pas mis ce paquet en &quot;unhold&quot;) la mise à jour.

 [[Utilisateur:Lol|Lol]] 3 mars 2010 à 06:47 (UTC)

[[Category:Paquets]]</text>
      <sha1>1et90ccks64l1o91v5n1mj37i75i6yu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1842</id>
      <parentid>1841</parentid>
      <timestamp>2010-08-04T20:53:08Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <minor/>
      <comment>suppression d'un &quot;r&quot; et passage de &quot;parquet&quot; vers &quot;paquet&quot; ^^</comment>
      <text xml:space="preserve" bytes="7238">{{Ébauche|le fichier '''apt-listbugs'''}}

'''Apt-listbugs'''

Ce paquet disponible dans les dépôts permet de se prémunir,  pour ceux qui sont en testing ou instable, de l'installation d'un paquet &quot;bugué&quot;.
Il est très simple d'installation et d'utilisation !

== Installation ==

 # aptitude install apt-listbugs
 Lecture des listes de paquets... Fait         
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait       
 Lecture de l'information d'état étendu... Fait
 Initialisation de l'état des paquets... Fait   
 Les NOUVEAUX paquets suivants vont être installés : 
   apt-listbugs irb1.8{a} libdpkg-ruby1.8{a} libgettext-ruby1.8{a} libhttp-access2-ruby1.8{a} libhttpclient-ruby1.8{a} liblocale-ruby1.8{a} 
   libopenssl-ruby1.8{a} libreadline-ruby1.8{a} libruby{a} libuconv-ruby1.8{a} libxml-parser-ruby1.8{a} ruby{a}                             
 0 paquets mis à jour, 13 nouvellement installés, 0 à enlever et 12 non mis à jour.                                                         
 Il est nécessaire de télécharger 0o/1 752ko d'archives. Après dépaquetage, 6 860ko seront utilisés.                                        
 Voulez-vous continuer ? [Y/n/?] y ...

== Utilisation ==

Apt-listbugs se lance automatiquement à l'installation d'un nouveau paquet, et va chercher les rapports de bug (s'ils existent).
En cas de bug, il vous prévient et vous demande si vous souhaitez installer, annuler ou figer le paquet en question par ajout d'une &quot;préférence pin&quot;.

Exemple :

 # aptitude install grub-pc
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances
 Lecture des informations d'état... Fait
 Lecture de l'information d'état étendu... Fait
 Initialisation de l'état des paquets... Fait
 Les paquets suivants seront mis à jour :
   grub-common grub-pc
 2 paquets mis à jour, 0 nouvellement installés, 0 à enlever et 12 non mis à jour.
 Il est nécessaire de télécharger 0o/2 397ko d'archives. Après dépaquetage, 123ko seront utilisés.
 Voulez-vous continuer ? [Y/n/?] y
 ATTENTION : des versions non certifiées des paquets suivants vont
 être installées.
 
 Des paquets non certifiés peuvent compromettre la sécurité de votre
 système. Vous ne devriez les installer que si vous êtes certain
 que c'est bien votre intention.
 
   grub-pc grub-common
 
 Voulez-vous ignorer cet avertissement et continuer quand même ?
 Pour continuer, entrer « Oui ». Pour interrompre l'installation, entrer « Non » : oui
 Écriture de l'information d'état étendu... Fait
 Lecture des champs des paquets... Fait
 Lecture de l'état des paquets... Fait


A ce moment apt-listbugs prend la main, recherche les éventuels bugs, et s'il en trouve, vous demande ce qu'il doit faire :

 Récupération des rapports de bogue... Fait
 Analyse des informations Trouvé/Corrigé... Fait
 Bogues de gravité critical sur grub-pc (1.98~20100115-1 -&gt; 1.98~20100128-1.2) &lt;non corrigé&gt;
  #568001 - grub-pc: grub locks up the machine
 Résumé :
  grub-pc(1 bogue)
 Êtes-vous certain de vouloir installer/mettre à jour les paquets ci-dessus ? [Y/n/?/...]

Demandons la liste des options possibles en tapant &quot;?&quot;

 Êtes-vous certain de vouloir installer/mettre à jour les paquets ci-dessus ? [Y/n/?/...]  ?
      y     - continuer l'installation avec APT, mais sans ignorer les bogues.
      a     - continuer l'installation avec APT en ignorant les bogues ci-dessus.
      n     - interrompre l'installation avec APT
    &lt;num&gt;   - demander le rapport de bogue spécifié (nécessite reportbug)
   #&lt;num&gt;   - identique à &lt;num&gt;
      r     - afficher les listes de bogues
  p &lt;pqt..&gt; - figer les paquets : APT doit être relancé pour activer
              cette option
  p         - figer tous les paquets ci-dessus. APT devra être relancé.
  i &lt;numéro&gt;- ignorer le bogue numéro &lt;numéro&gt;
      ?     - afficher cette aide
      w     - afficher les listes de bogues en HTML (cette option
              utilise sensible-browser)
 Êtes-vous certain de vouloir installer/mettre à jour les paquets ci-dessus ? [Y/n/?/...]

L'option qui nous intéresse :
p &gt; vous figez le paquet par ajout d'une &quot;préférence pin&quot; dans le fichier /etc/apt/preferences

 Êtes-vous certain de vouloir installer/mettre à jour les paquets ci-dessus ? [Y/n/?/...]  p
 Le 1 paquet suivant sera figé ou mis en attente :
  grub-pc
 Êtes-vous certain ?[Y/n]? y
 grub-pc figé par ajout d'une préférence « Pin » dans /etc/apt/preferences. APT
 doit être relancé pour activer cette option

A ce niveau, il faut sortir de l'installation et relancer aptitude pour que notre choix soit pris en compte : 

 Êtes-vous certain de vouloir installer/mettre à jour les paquets ci-dessus ? [N/?/...]  n
 *******************************************************************
 ****** Sortie en erreur forcée pour stopper l'installation. ******
 *******************************************************************
 E: Le sous-processus /usr/sbin/apt-listbugs apt || exit 10 a renvoyé un code d'erreur (10)
 E: Failure running script /usr/sbin/apt-listbugs apt || exit 10
 Échec de l'installation d'un paquet. Tentative de réparation :
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances
 Lecture des informations d'état... Fait
 Lecture de l'information d'état étendu... Fait
 Initialisation de l'état des paquets... Fait

Nous vérifions l'état du fichier /etc/apt/preferences :

 $ cat /etc/apt/preferences
 Explanation: Pinned by apt-listbugs at Wed Mar 03 09:37:07 +0300 2010
 Explanation:   #568001: grub-pc: grub locks up the machine
 Package: grub-pc
 Pin: version 1.98~20100115-1
 Pin-Priority: 1000

Effectivement notre fichier &quot;bugué&quot; est bien &quot;pinned&quot;. Cela signifie que cette version ne sera jamais installée,tant qu'un nouveau paquet ne sera pas dans les dépôts.
Une nouvelle mise à jour confirme cette action :

 # aptitude install grub-pc
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances
 Lecture des informations d'état... Fait
 Lecture de l'information d'état étendu... Fait
 Initialisation de l'état des paquets... Fait
 Aucun paquet ne va être installé, mis à jour ou enlevé.
 0 paquets mis à jour, 0 nouvellement installés, 0 à enlever et 13 non mis à jour.
 Il est nécessaire de télécharger 0o d'archives. Après dépaquetage, 0o seront utilisés.
 Écriture de l'information d'état étendu... Fait
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances
 Lecture des informations d'état... Fait
 Lecture de l'information d'état étendu... Fait
 Initialisation de l'état des paquets... Fait

[[Remarque]] : Le fichier marqué par apt-listbugs n'est pas mis en &quot;hold&quot;. Cela signifie qu'il sera mis à jour à la prochaine version supérieure dans les dépôts. C'est un script cron de apt-listbugs qui, une fois que le bug critique est corrigé, redonne sa &quot;chance&quot; au paquet marqué.

Ce n'est pas le cas avec la mise en &quot;hold&quot; qui fige définitivement (tant que vous n'aurez pas mis ce paquet en &quot;unhold&quot;) la mise à jour.

 [[Utilisateur:Lol|Lol]] 3 mars 2010 à 06:47 (UTC)

[[Category:Paquets]]</text>
      <sha1>8myah95sm7vuxzss71h36pnirkrjg1e</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2560</id>
      <parentid>1842</parentid>
      <timestamp>2010-12-26T15:46:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="7336">{{Ébauche|le fichier '''apt-listbugs'''}}

'''Apt-listbugs'''

Ce paquet disponible dans les dépôts permet de se prémunir,  pour ceux qui sont en testing ou instable, de l'installation d'un paquet &quot;bugué&quot;.
Il est très simple d'installation et d'utilisation !

== Installation ==

 # aptitude install apt-listbugs
 Lecture des listes de paquets... Fait         
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait       
 Lecture de l'information d'état étendu... Fait
 Initialisation de l'état des paquets... Fait   
 Les NOUVEAUX paquets suivants vont être installés : 
   apt-listbugs irb1.8{a} libdpkg-ruby1.8{a} libgettext-ruby1.8{a} libhttp-access2-ruby1.8{a} libhttpclient-ruby1.8{a} liblocale-ruby1.8{a} 
   libopenssl-ruby1.8{a} libreadline-ruby1.8{a} libruby{a} libuconv-ruby1.8{a} libxml-parser-ruby1.8{a} ruby{a}                             
 0 paquets mis à jour, 13 nouvellement installés, 0 à enlever et 12 non mis à jour.                                                         
 Il est nécessaire de télécharger 0o/1 752ko d'archives. Après dépaquetage, 6 860ko seront utilisés.                                        
 Voulez-vous continuer ? [Y/n/?] y ...

== Utilisation ==

Apt-listbugs se lance automatiquement à l'installation d'un nouveau paquet, et va chercher les rapports de bug (s'ils existent).
En cas de bug, il vous prévient et vous demande si vous souhaitez installer, annuler ou figer le paquet en question par ajout d'une &quot;préférence pin&quot;.

Exemple :

 # aptitude install grub-pc
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances
 Lecture des informations d'état... Fait
 Lecture de l'information d'état étendu... Fait
 Initialisation de l'état des paquets... Fait
 Les paquets suivants seront mis à jour :
   grub-common grub-pc
 2 paquets mis à jour, 0 nouvellement installés, 0 à enlever et 12 non mis à jour.
 Il est nécessaire de télécharger 0o/2 397ko d'archives. Après dépaquetage, 123ko seront utilisés.
 Voulez-vous continuer ? [Y/n/?] y
 ATTENTION : des versions non certifiées des paquets suivants vont
 être installées.
 
 Des paquets non certifiés peuvent compromettre la sécurité de votre
 système. Vous ne devriez les installer que si vous êtes certain
 que c'est bien votre intention.
 
   grub-pc grub-common
 
 Voulez-vous ignorer cet avertissement et continuer quand même ?
 Pour continuer, entrer « Oui ». Pour interrompre l'installation, entrer « Non » : oui
 Écriture de l'information d'état étendu... Fait
 Lecture des champs des paquets... Fait
 Lecture de l'état des paquets... Fait


A ce moment apt-listbugs prend la main, recherche les éventuels bugs, et s'il en trouve, vous demande ce qu'il doit faire :

 Récupération des rapports de bogue... Fait
 Analyse des informations Trouvé/Corrigé... Fait
 Bogues de gravité critical sur grub-pc (1.98~20100115-1 -&gt; 1.98~20100128-1.2) &lt;non corrigé&gt;
  #568001 - grub-pc: grub locks up the machine
 Résumé :
  grub-pc(1 bogue)
 Êtes-vous certain de vouloir installer/mettre à jour les paquets ci-dessus ? [Y/n/?/...]

Demandons la liste des options possibles en tapant &quot;?&quot;

 Êtes-vous certain de vouloir installer/mettre à jour les paquets ci-dessus ? [Y/n/?/...]  ?
      y     - continuer l'installation avec APT, mais sans ignorer les bogues.
      a     - continuer l'installation avec APT en ignorant les bogues ci-dessus.
      n     - interrompre l'installation avec APT
    &lt;num&gt;   - demander le rapport de bogue spécifié (nécessite reportbug)
   #&lt;num&gt;   - identique à &lt;num&gt;
      r     - afficher les listes de bogues
  p &lt;pqt..&gt; - figer les paquets : APT doit être relancé pour activer
              cette option
  p         - figer tous les paquets ci-dessus. APT devra être relancé.
  i &lt;numéro&gt;- ignorer le bogue numéro &lt;numéro&gt;
      ?     - afficher cette aide
      w     - afficher les listes de bogues en HTML (cette option
              utilise sensible-browser)
 Êtes-vous certain de vouloir installer/mettre à jour les paquets ci-dessus ? [Y/n/?/...]

L'option qui nous intéresse :
p &gt; vous figez le paquet par ajout d'une &quot;préférence pin&quot; dans le fichier /etc/apt/preferences

 Êtes-vous certain de vouloir installer/mettre à jour les paquets ci-dessus ? [Y/n/?/...]  p
 Le 1 paquet suivant sera figé ou mis en attente :
  grub-pc
 Êtes-vous certain ?[Y/n]? y
 grub-pc figé par ajout d'une préférence « Pin » dans /etc/apt/preferences. APT
 doit être relancé pour activer cette option

A ce niveau, il faut sortir de l'installation et relancer aptitude pour que notre choix soit pris en compte : 

 Êtes-vous certain de vouloir installer/mettre à jour les paquets ci-dessus ? [N/?/...]  n
 *******************************************************************
 ****** Sortie en erreur forcée pour stopper l'installation. ******
 *******************************************************************
 E: Le sous-processus /usr/sbin/apt-listbugs apt || exit 10 a renvoyé un code d'erreur (10)
 E: Failure running script /usr/sbin/apt-listbugs apt || exit 10
 Échec de l'installation d'un paquet. Tentative de réparation :
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances
 Lecture des informations d'état... Fait
 Lecture de l'information d'état étendu... Fait
 Initialisation de l'état des paquets... Fait

Nous vérifions l'état du fichier /etc/apt/preferences :

 $ cat /etc/apt/preferences
 Explanation: Pinned by apt-listbugs at Wed Mar 03 09:37:07 +0300 2010
 Explanation:   #568001: grub-pc: grub locks up the machine
 Package: grub-pc
 Pin: version 1.98~20100115-1
 Pin-Priority: 1000

Effectivement notre fichier &quot;bugué&quot; est bien &quot;pinned&quot;. Cela signifie que cette version ne sera jamais installée,tant qu'un nouveau paquet ne sera pas dans les dépôts.
Une nouvelle mise à jour confirme cette action :

 # aptitude install grub-pc
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances
 Lecture des informations d'état... Fait
 Lecture de l'information d'état étendu... Fait
 Initialisation de l'état des paquets... Fait
 Aucun paquet ne va être installé, mis à jour ou enlevé.
 0 paquets mis à jour, 0 nouvellement installés, 0 à enlever et 13 non mis à jour.
 Il est nécessaire de télécharger 0o d'archives. Après dépaquetage, 0o seront utilisés.
 Écriture de l'information d'état étendu... Fait
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances
 Lecture des informations d'état... Fait
 Lecture de l'information d'état étendu... Fait
 Initialisation de l'état des paquets... Fait

[[Remarque]] : Le fichier marqué par apt-listbugs n'est pas mis en [[DPKG#.22Geler_et_d.C3.A9geler.22_des_paquets|&quot;hold&quot;]]. Cela signifie qu'il sera mis à jour à la prochaine version supérieure dans les dépôts. C'est un script cron de apt-listbugs qui, une fois que le bug critique est corrigé, redonne sa &quot;chance&quot; au paquet marqué.

Ce n'est pas le cas avec la mise en [[DPKG#.22Geler_et_d.C3.A9geler.22_des_paquets|&quot;hold&quot;]] qui fige définitivement (tant que vous n'aurez pas mis ce paquet en &quot;unhold&quot;) la mise à jour.

 [[Utilisateur:Lol|Lol]] 3 mars 2010 à 06:47 (UTC)

[[Category:Paquets]]</text>
      <sha1>4q9xxuc1igmhafn39dfw5yww5h8w0ya</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Apt-p2p</title>
    <ns>0</ns>
    <id>1156</id>
    <revision>
      <id>4735</id>
      <timestamp>2012-11-07T16:17:57Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <comment>Page créée avec «  &lt;blockquote&gt; &lt;p&gt;Vous souhaitez participer au projet Debian (ou Ubuntu) mais vous ne savez pas comment faire ? La lenteur des miroirs de téléchargement, surchargés, vou... »</comment>
      <text xml:space="preserve" bytes="3019">
&lt;blockquote&gt;
&lt;p&gt;Vous souhaitez participer au projet Debian (ou Ubuntu) mais vous ne
savez pas comment faire ? La lenteur des miroirs de téléchargement,
surchargés, vous donne des boutons ? Vous n’avez pas l’âme d’un
développeur, mais un peu de bande passante à partager ? Alors Apt-P2P
est fait pour vous !
[http://ilonet.fr/r274-aptpp-le-peertopeer-pour-telecharger-vos-paquets-debian.htm source ]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Avec apt-p2p, vous pourrez télécharger les paquets debian via peer 2
peer, et partager ensuite ces paquets avec les autres utilisateurs de
debian.&lt;/p&gt;
&lt;p&gt;Cela a pour but, à terme, de désengorger les serveurs debian, mais aussi
si beaucoup de personnes l'utilisent, accélérer les téléchargements.&lt;/p&gt;
&lt;p&gt;Si Aucun pair n'a le paquet souhaité, alors il sera téléchargé à partir
des serveurs habituels de debian.&lt;/p&gt;
&lt;p&gt;Le tout est basé sur DHT, et la somme de contrôle des paquets est
vérifiée ce qui assure l'incorruption des paquets téléchargés.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Attention&lt;/strong&gt; : Le cache est par défaut dans /var/cache/apt-p2p
 Assurez-vous donc d'avoir suffisamment de place dans /var&lt;/p&gt;
&lt;h2&gt;Installation&lt;/h2&gt;
&lt;p&gt;Pour l'installer, rien de plus simple :&lt;/p&gt;
&lt;pre&gt;# apt-get install apt-p2p
&lt;/pre&gt;
&lt;p&gt;Puis remplacer dans le fichier /etc/apt/sources.list :&lt;/p&gt;
&lt;pre&gt;deb http://ftp.fr.debian.org/debian squeeze main contrib non-free
&lt;/pre&gt;
&lt;p&gt;par&lt;/p&gt;
&lt;pre&gt;deb http://localhost:9977/ftp.fr.debian.org/debian squeeze main contrib non-free
&lt;/pre&gt;
&lt;p&gt;Faîtes de même avec les autres dépots, ça marche très bien.&lt;/p&gt;
&lt;p&gt;Enfin, pour prendre les changements en compte, mettez votre liste à jour
avec la commande &lt;code&gt;apt-get update&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Des infos sur le serveur&lt;/h2&gt;
&lt;p&gt;Pour obtenir des statistiques sur votre apt-p2p, allez dans votre
navigateur à l'adresse suivante : &lt;/p&gt;
&lt;p&gt;localhost:9977&lt;/p&gt;
&lt;h2&gt;Correction de bogue&lt;/h2&gt;
&lt;p&gt;Actuellement, [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=635969 ce vilain bug] empêche d'utiliser apt-p2p. Bien qu'il soit
résolu depuis un moment, le paquet correctif n'est pas encore arrivé.
Il est toutefois très rapide de corriger ce bug vous même en attendant :
Il suffit en fait de modifier 1 ligne dans le fichier
&lt;em&gt;/usr/share/pyshared/apt_p2p/AptPackages.py&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;En gros, on remplace&lt;/p&gt;
&lt;pre&gt;from apt import OpProgress
&lt;/pre&gt;
&lt;p&gt;par&lt;/p&gt;
&lt;pre&gt;from apt.progress.base import OpProgress
&lt;/pre&gt;
&lt;p&gt;Et voilà! (pensez quand même à redémarrer apt-p2p)&lt;/p&gt;
&lt;h2&gt;Remplir le cache pour partager ensuite&lt;/h2&gt;
&lt;p&gt;Autre chose, pour remplir totalement le cache d' apt-p2p avec tous les
paquets installés sur votre machine :&lt;/p&gt;
&lt;pre&gt;apt-get install --reinstall --download-only $(dpkg --get-selections | awk {'print $1'})
&lt;/pre&gt;
&lt;p&gt;Vous pouvez maintenant partager le tout ;)&lt;/p&gt;

---

[http://www.debian-fr.org/alleger-les-serveurs-avec-apt-p2p-t41056.html?sid=34dc0d4e9221ef23abf9044e35d1a515 Discussion sur le forum ]

[http://www.camrdale.org/apt-p2p/ apt-p2p]

[[Catégorie:Paquets]][[Catégorie:Serveurs]]</text>
      <sha1>heh94izzp6wbthhh3yegykuz1seuwfo</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4737</id>
      <parentid>4735</parentid>
      <timestamp>2012-11-08T11:36:44Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="3216">
&lt;blockquote&gt;
&lt;p&gt;Vous souhaitez participer au projet Debian (ou Ubuntu) mais vous ne
savez pas comment faire ? La lenteur des miroirs de téléchargement,
surchargés, vous donne des boutons ? Vous n’avez pas l’âme d’un
développeur, mais un peu de bande passante à partager ? Alors Apt-P2P
est fait pour vous !
[http://ilonet.fr/r274-aptpp-le-peertopeer-pour-telecharger-vos-paquets-debian.htm source ]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Avec apt-p2p, vous pourrez télécharger les paquets debian via peer 2
peer, et partager ensuite ces paquets avec les autres utilisateurs de
debian.&lt;/p&gt;
&lt;p&gt;Cela a pour but, à terme, de désengorger les serveurs debian, mais aussi
si beaucoup de personnes l'utilisent, accélérer les téléchargements.&lt;/p&gt;
&lt;p&gt;Si Aucun pair n'a le paquet souhaité, alors il sera téléchargé à partir
des serveurs habituels de debian.&lt;/p&gt;
&lt;p&gt;Le tout est basé sur DHT, et la somme de contrôle des paquets est
vérifiée ce qui assure l'incorruption des paquets téléchargés.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Attention&lt;/strong&gt; : Le cache est par défaut dans /var/cache/apt-p2p
 Assurez-vous donc d'avoir suffisamment de place dans /var&lt;/p&gt;
&lt;h2&gt;Installation&lt;/h2&gt;
&lt;p&gt;Pour l'installer, rien de plus simple :&lt;/p&gt;
&lt;pre&gt;# apt-get install apt-p2p
&lt;/pre&gt;
&lt;p&gt;Puis remplacer dans le fichier /etc/apt/sources.list :&lt;/p&gt;
&lt;pre&gt;deb http://ftp.fr.debian.org/debian squeeze main contrib non-free
&lt;/pre&gt;
&lt;p&gt;par&lt;/p&gt;
&lt;pre&gt;deb http://localhost:9977/ftp.fr.debian.org/debian squeeze main contrib non-free
&lt;/pre&gt;
&lt;p&gt;Faîtes de même avec les autres dépots, ça marche très bien.&lt;/p&gt;
&lt;p&gt;Enfin, pour prendre les changements en compte, mettez votre liste à jour
avec la commande &lt;code&gt;apt-get update&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Ouverture des ports&lt;/h2&gt;
&lt;p&gt;Il est conseillé d'ouvrir les ports en UDP et TCP de votre routeur et
votre parefeu. Si vous n'avez pas changé le port par défaut, il s'agit
du &lt;em&gt;9977&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;Des infos sur le serveur&lt;/h2&gt;
&lt;p&gt;Pour obtenir des statistiques sur votre apt-p2p, allez dans votre
navigateur à l'adresse suivante : &lt;/p&gt;
&lt;p&gt;localhost:9977&lt;/p&gt;
&lt;h2&gt;Correction de bogue&lt;/h2&gt;
&lt;p&gt;Actuellement, [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=635969 ce vilain bug] empêche d'utiliser apt-p2p. Bien qu'il soit
résolu depuis un moment, le paquet correctif n'est pas encore arrivé.
Il est toutefois très rapide de corriger ce bug vous même en attendant :
Il suffit en fait de modifier 1 ligne dans le fichier
&lt;em&gt;/usr/share/pyshared/apt_p2p/AptPackages.py&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;En gros, on remplace&lt;/p&gt;
&lt;pre&gt;from apt import OpProgress
&lt;/pre&gt;
&lt;p&gt;par&lt;/p&gt;
&lt;pre&gt;from apt.progress.base import OpProgress
&lt;/pre&gt;
&lt;p&gt;Et voilà! (pensez quand même à redémarrer apt-p2p)&lt;/p&gt;
&lt;h2&gt;Remplir le cache pour partager ensuite&lt;/h2&gt;
&lt;p&gt;Autre chose, pour remplir totalement le cache d' apt-p2p avec tous les
paquets installés sur votre machine :&lt;/p&gt;
&lt;pre&gt;apt-get install --reinstall --download-only $(dpkg --get-selections | awk {'print $1'})
&lt;/pre&gt;
&lt;p&gt;Vous pouvez maintenant partager le tout ;)&lt;/p&gt;

---

[http://www.debian-fr.org/alleger-les-serveurs-avec-apt-p2p-t41056.html?sid=34dc0d4e9221ef23abf9044e35d1a515 Discussion sur le forum ]

[http://www.camrdale.org/apt-p2p/ apt-p2p]

[[Catégorie:Paquets]][[Catégorie:Serveurs]]</text>
      <sha1>lpofzte16f1s1yvvrk18xkhjviedffq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4738</id>
      <parentid>4737</parentid>
      <timestamp>2012-11-08T13:20:18Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3219">
&lt;blockquote&gt;
&lt;p&gt;Vous souhaitez participer au projet Debian (ou dérivés) mais vous ne
savez pas comment faire ? La lenteur des miroirs de téléchargement,
surchargés, vous donne des boutons ? Vous n’avez pas l’âme d’un
développeur, mais un peu de bande passante à partager ? Alors Apt-P2P
est fait pour vous !
[http://ilonet.fr/r274-aptpp-le-peertopeer-pour-telecharger-vos-paquets-debian.htm source ]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Avec apt-p2p, vous pourrez télécharger les paquets debian via peer 2
peer, et partager ensuite ces paquets avec les autres utilisateurs de
debian.&lt;/p&gt;
&lt;p&gt;Cela a pour but, à terme, de désengorger les serveurs debian, mais aussi
si beaucoup de personnes l'utilisent, accélérer les téléchargements.&lt;/p&gt;
&lt;p&gt;Si Aucun pair n'a le paquet souhaité, alors il sera téléchargé à partir
des serveurs habituels de debian.&lt;/p&gt;
&lt;p&gt;Le tout est basé sur DHT, et la somme de contrôle des paquets est
vérifiée ce qui assure l'incorruption des paquets téléchargés.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Attention&lt;/strong&gt; : Le cache est par défaut dans /var/cache/apt-p2p
 Assurez-vous donc d'avoir suffisamment de place dans /var&lt;/p&gt;
&lt;h2&gt;Installation&lt;/h2&gt;
&lt;p&gt;Pour l'installer, rien de plus simple :&lt;/p&gt;
&lt;pre&gt;# apt-get install apt-p2p
&lt;/pre&gt;
&lt;p&gt;Puis remplacer dans le fichier /etc/apt/sources.list :&lt;/p&gt;
&lt;pre&gt;deb http://ftp.fr.debian.org/debian squeeze main contrib non-free
&lt;/pre&gt;
&lt;p&gt;par&lt;/p&gt;
&lt;pre&gt;deb http://localhost:9977/ftp.fr.debian.org/debian squeeze main contrib non-free
&lt;/pre&gt;
&lt;p&gt;Faîtes de même avec les autres dépots, ça marche très bien.&lt;/p&gt;
&lt;p&gt;Enfin, pour prendre les changements en compte, mettez votre liste à jour
avec la commande &lt;code&gt;apt-get update&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Ouverture des ports&lt;/h2&gt;
&lt;p&gt;Il est conseillé d'ouvrir les ports en UDP et TCP de votre routeur et
votre parefeu. Si vous n'avez pas changé le port par défaut, il s'agit
du &lt;em&gt;9977&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;Des infos sur le serveur&lt;/h2&gt;
&lt;p&gt;Pour obtenir des statistiques sur votre apt-p2p, allez dans votre
navigateur à l'adresse suivante : &lt;/p&gt;
&lt;p&gt;localhost:9977&lt;/p&gt;
&lt;h2&gt;Correction de bogue&lt;/h2&gt;
&lt;p&gt;Actuellement, [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=635969 ce vilain bug] empêche d'utiliser apt-p2p. Bien qu'il soit
résolu depuis un moment, le paquet correctif n'est pas encore arrivé.
Il est toutefois très rapide de corriger ce bug vous même en attendant :
Il suffit en fait de modifier 1 ligne dans le fichier
&lt;em&gt;/usr/share/pyshared/apt_p2p/AptPackages.py&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;En gros, on remplace&lt;/p&gt;
&lt;pre&gt;from apt import OpProgress
&lt;/pre&gt;
&lt;p&gt;par&lt;/p&gt;
&lt;pre&gt;from apt.progress.base import OpProgress
&lt;/pre&gt;
&lt;p&gt;Et voilà! (pensez quand même à redémarrer apt-p2p)&lt;/p&gt;
&lt;h2&gt;Remplir le cache pour partager ensuite&lt;/h2&gt;
&lt;p&gt;Autre chose, pour remplir totalement le cache d' apt-p2p avec tous les
paquets installés sur votre machine :&lt;/p&gt;
&lt;pre&gt;apt-get install --reinstall --download-only $(dpkg --get-selections | awk {'print $1'})
&lt;/pre&gt;
&lt;p&gt;Vous pouvez maintenant partager le tout ;)&lt;/p&gt;

---

[http://www.debian-fr.org/alleger-les-serveurs-avec-apt-p2p-t41056.html?sid=34dc0d4e9221ef23abf9044e35d1a515 Discussion sur le forum ]

[http://www.camrdale.org/apt-p2p/ apt-p2p]

[[Catégorie:Paquets]][[Catégorie:Serveurs]]</text>
      <sha1>cubh22qqirixjip5659z0ti8cjr2epy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4740</id>
      <parentid>4738</parentid>
      <timestamp>2012-11-10T15:28:42Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>lien mort, à corriger ou supprimer</comment>
      <text xml:space="preserve" bytes="3231">
&lt;blockquote&gt;
&lt;p&gt;Vous souhaitez participer au projet Debian (ou dérivés) mais vous ne
savez pas comment faire ? La lenteur des miroirs de téléchargement,
surchargés, vous donne des boutons ? Vous n’avez pas l’âme d’un
développeur, mais un peu de bande passante à partager ? Alors Apt-P2P
est fait pour vous !
[http://ilonet.fr/r274-aptpp-le-peertopeer-pour-telecharger-vos-paquets-debian.htm source (lien mort) ]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Avec apt-p2p, vous pourrez télécharger les paquets debian via peer 2
peer, et partager ensuite ces paquets avec les autres utilisateurs de
debian.&lt;/p&gt;
&lt;p&gt;Cela a pour but, à terme, de désengorger les serveurs debian, mais aussi
si beaucoup de personnes l'utilisent, accélérer les téléchargements.&lt;/p&gt;
&lt;p&gt;Si Aucun pair n'a le paquet souhaité, alors il sera téléchargé à partir
des serveurs habituels de debian.&lt;/p&gt;
&lt;p&gt;Le tout est basé sur DHT, et la somme de contrôle des paquets est
vérifiée ce qui assure l'incorruption des paquets téléchargés.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Attention&lt;/strong&gt; : Le cache est par défaut dans /var/cache/apt-p2p
 Assurez-vous donc d'avoir suffisamment de place dans /var&lt;/p&gt;
&lt;h2&gt;Installation&lt;/h2&gt;
&lt;p&gt;Pour l'installer, rien de plus simple :&lt;/p&gt;
&lt;pre&gt;# apt-get install apt-p2p
&lt;/pre&gt;
&lt;p&gt;Puis remplacer dans le fichier /etc/apt/sources.list :&lt;/p&gt;
&lt;pre&gt;deb http://ftp.fr.debian.org/debian squeeze main contrib non-free
&lt;/pre&gt;
&lt;p&gt;par&lt;/p&gt;
&lt;pre&gt;deb http://localhost:9977/ftp.fr.debian.org/debian squeeze main contrib non-free
&lt;/pre&gt;
&lt;p&gt;Faîtes de même avec les autres dépots, ça marche très bien.&lt;/p&gt;
&lt;p&gt;Enfin, pour prendre les changements en compte, mettez votre liste à jour
avec la commande &lt;code&gt;apt-get update&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Ouverture des ports&lt;/h2&gt;
&lt;p&gt;Il est conseillé d'ouvrir les ports en UDP et TCP de votre routeur et
votre parefeu. Si vous n'avez pas changé le port par défaut, il s'agit
du &lt;em&gt;9977&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;Des infos sur le serveur&lt;/h2&gt;
&lt;p&gt;Pour obtenir des statistiques sur votre apt-p2p, allez dans votre
navigateur à l'adresse suivante : &lt;/p&gt;
&lt;p&gt;localhost:9977&lt;/p&gt;
&lt;h2&gt;Correction de bogue&lt;/h2&gt;
&lt;p&gt;Actuellement, [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=635969 ce vilain bug] empêche d'utiliser apt-p2p. Bien qu'il soit
résolu depuis un moment, le paquet correctif n'est pas encore arrivé.
Il est toutefois très rapide de corriger ce bug vous même en attendant :
Il suffit en fait de modifier 1 ligne dans le fichier
&lt;em&gt;/usr/share/pyshared/apt_p2p/AptPackages.py&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;En gros, on remplace&lt;/p&gt;
&lt;pre&gt;from apt import OpProgress
&lt;/pre&gt;
&lt;p&gt;par&lt;/p&gt;
&lt;pre&gt;from apt.progress.base import OpProgress
&lt;/pre&gt;
&lt;p&gt;Et voilà! (pensez quand même à redémarrer apt-p2p)&lt;/p&gt;
&lt;h2&gt;Remplir le cache pour partager ensuite&lt;/h2&gt;
&lt;p&gt;Autre chose, pour remplir totalement le cache d' apt-p2p avec tous les
paquets installés sur votre machine :&lt;/p&gt;
&lt;pre&gt;apt-get install --reinstall --download-only $(dpkg --get-selections | awk {'print $1'})
&lt;/pre&gt;
&lt;p&gt;Vous pouvez maintenant partager le tout ;)&lt;/p&gt;

---

[http://www.debian-fr.org/alleger-les-serveurs-avec-apt-p2p-t41056.html?sid=34dc0d4e9221ef23abf9044e35d1a515 Discussion sur le forum ]

[http://www.camrdale.org/apt-p2p/ apt-p2p]

[[Catégorie:Paquets]][[Catégorie:Serveurs]]</text>
      <sha1>eprsn5xcfmfr1u8m2e39v7m5dat0vx3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4741</id>
      <parentid>4740</parentid>
      <timestamp>2012-11-10T15:33:53Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3237">
&lt;blockquote&gt;
&lt;p&gt;Vous souhaitez participer au projet Debian (ou dérivés) mais vous ne
savez pas comment faire ? La lenteur des miroirs de téléchargement,
surchargés, vous donne des boutons ? Vous n’avez pas l’âme d’un
développeur, mais un peu de bande passante à partager ? Alors Apt-P2P
est fait pour vous !
[http://ilonet.fr/r274-aptpp-le-peertopeer-pour-telecharger-vos-paquets-debian.htm source (lien mort) ]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Avec apt-p2p, vous pourrez télécharger les paquets debian via peer 2
peer, et partager ensuite ces paquets avec les autres utilisateurs de
debian.&lt;/p&gt;
&lt;p&gt;Cela a pour but, à terme, de désengorger les serveurs debian, mais aussi
si beaucoup de personnes l'utilisent, accélérer les téléchargements.&lt;/p&gt;
&lt;p&gt;Si Aucun pair n'a le paquet souhaité, alors il sera téléchargé à partir
des serveurs habituels de debian.&lt;/p&gt;
&lt;p&gt;Le tout est basé sur DHT, et la somme de contrôle des paquets est
vérifiée ce qui assure l'incorruption des paquets téléchargés.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Attention&lt;/strong&gt; : Le cache est par défaut dans /var/cache/apt-p2p
 Assurez-vous donc d'avoir suffisamment de place dans /var&lt;/p&gt;
&lt;h2&gt;Installation&lt;/h2&gt;
&lt;p&gt;Pour l'installer, rien de plus simple :&lt;/p&gt;
&lt;pre&gt;# apt-get install apt-p2p
&lt;/pre&gt;
&lt;p&gt;Puis remplacer dans le fichier /etc/apt/sources.list :&lt;/p&gt;
&lt;pre&gt;deb http://ftp.fr.debian.org/debian squeeze main contrib non-free
&lt;/pre&gt;
&lt;p&gt;par&lt;/p&gt;
&lt;pre&gt;deb http://localhost:9977/ftp.fr.debian.org/debian squeeze main contrib non-free
&lt;/pre&gt;
&lt;p&gt;Faîtes de même avec tous les autres dépôts, ça marche très bien.&lt;/p&gt;
&lt;p&gt;Enfin, pour prendre les changements en compte, mettez votre liste à jour
avec la commande &lt;code&gt;apt-get update&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Ouverture des ports&lt;/h2&gt;
&lt;p&gt;Il est conseillé d'ouvrir les ports en UDP et TCP de votre routeur et
votre parefeu. Si vous n'avez pas changé le port par défaut, il s'agit
du &lt;em&gt;9977&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;Des infos sur le serveur&lt;/h2&gt;
&lt;p&gt;Pour obtenir des statistiques sur votre apt-p2p, allez dans votre
navigateur à l'adresse suivante : &lt;/p&gt;
&lt;p&gt;localhost:9977&lt;/p&gt;
&lt;h2&gt;Correction de bogue&lt;/h2&gt;
&lt;p&gt;Actuellement, [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=635969 ce vilain bug] empêche d'utiliser apt-p2p. Bien qu'il soit
résolu depuis un moment, le paquet correctif n'est pas encore arrivé.
Il est toutefois très rapide de corriger ce bug vous même en attendant :
Il suffit en fait de modifier 1 ligne dans le fichier
&lt;em&gt;/usr/share/pyshared/apt_p2p/AptPackages.py&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;En gros, on remplace&lt;/p&gt;
&lt;pre&gt;from apt import OpProgress
&lt;/pre&gt;
&lt;p&gt;par&lt;/p&gt;
&lt;pre&gt;from apt.progress.base import OpProgress
&lt;/pre&gt;
&lt;p&gt;Et voilà! (pensez quand même à redémarrer apt-p2p)&lt;/p&gt;
&lt;h2&gt;Remplir le cache pour partager ensuite&lt;/h2&gt;
&lt;p&gt;Autre chose, pour remplir totalement le cache d' apt-p2p avec tous les
paquets installés sur votre machine :&lt;/p&gt;
&lt;pre&gt;apt-get install --reinstall --download-only $(dpkg --get-selections | awk {'print $1'})
&lt;/pre&gt;
&lt;p&gt;Vous pouvez maintenant partager le tout ;)&lt;/p&gt;

---

[http://www.debian-fr.org/alleger-les-serveurs-avec-apt-p2p-t41056.html?sid=34dc0d4e9221ef23abf9044e35d1a515 Discussion sur le forum ]

[http://www.camrdale.org/apt-p2p/ apt-p2p]

[[Catégorie:Paquets]][[Catégorie:Serveurs]]</text>
      <sha1>27p93lilsrnoqonta265d5wfy8lvbmk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4743</id>
      <parentid>4741</parentid>
      <timestamp>2012-11-10T17:51:53Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="3219">
&lt;blockquote&gt;
&lt;p&gt;Vous souhaitez participer au projet Debian (ou dérivés) mais vous ne
savez pas comment faire ? La lenteur des miroirs de téléchargement,
surchargés, vous donne des boutons ? Vous n’avez pas l’âme d’un
développeur, mais un peu de bande passante à partager ? Alors Apt-P2P
est fait pour vous !
[http://ilonet.fr/r274-aptpp-le-peertopeer-pour-telecharger-vos-paquets-debian.html ]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Avec apt-p2p, vous pourrez télécharger les paquets debian via peer 2
peer, et partager ensuite ces paquets avec les autres utilisateurs de
debian.&lt;/p&gt;
&lt;p&gt;Cela a pour but, à terme, de désengorger les serveurs debian, mais aussi
si beaucoup de personnes l'utilisent, accélérer les téléchargements.&lt;/p&gt;
&lt;p&gt;Si Aucun pair n'a le paquet souhaité, alors il sera téléchargé à partir
des serveurs habituels de debian.&lt;/p&gt;
&lt;p&gt;Le tout est basé sur DHT, et la somme de contrôle des paquets est
vérifiée ce qui assure l'incorruption des paquets téléchargés.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Attention&lt;/strong&gt; : Le cache est par défaut dans /var/cache/apt-p2p
 Assurez-vous donc d'avoir suffisamment de place dans /var&lt;/p&gt;
&lt;h2&gt;Installation&lt;/h2&gt;
&lt;p&gt;Pour l'installer, rien de plus simple :&lt;/p&gt;
&lt;pre&gt;# apt-get install apt-p2p
&lt;/pre&gt;
&lt;p&gt;Puis remplacer dans le fichier /etc/apt/sources.list :&lt;/p&gt;
&lt;pre&gt;deb http://ftp.fr.debian.org/debian squeeze main contrib non-free
&lt;/pre&gt;
&lt;p&gt;par&lt;/p&gt;
&lt;pre&gt;deb http://localhost:9977/ftp.fr.debian.org/debian squeeze main contrib non-free
&lt;/pre&gt;
&lt;p&gt;Faîtes de même avec tous les autres dépôts, ça marche très bien.&lt;/p&gt;
&lt;p&gt;Enfin, pour prendre les changements en compte, mettez votre liste à jour
avec la commande &lt;code&gt;apt-get update&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Ouverture des ports&lt;/h2&gt;
&lt;p&gt;Il est conseillé d'ouvrir les ports en UDP et TCP de votre routeur et
votre parefeu. Si vous n'avez pas changé le port par défaut, il s'agit
du &lt;em&gt;9977&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;Des infos sur le serveur&lt;/h2&gt;
&lt;p&gt;Pour obtenir des statistiques sur votre apt-p2p, allez dans votre
navigateur à l'adresse suivante : &lt;/p&gt;
&lt;p&gt;localhost:9977&lt;/p&gt;
&lt;h2&gt;Correction de bogue&lt;/h2&gt;
&lt;p&gt;Actuellement, [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=635969 ce vilain bug] empêche d'utiliser apt-p2p. Bien qu'il soit
résolu depuis un moment, le paquet correctif n'est pas encore arrivé.
Il est toutefois très rapide de corriger ce bug vous même en attendant :
Il suffit en fait de modifier 1 ligne dans le fichier
&lt;em&gt;/usr/share/pyshared/apt_p2p/AptPackages.py&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;En gros, on remplace&lt;/p&gt;
&lt;pre&gt;from apt import OpProgress
&lt;/pre&gt;
&lt;p&gt;par&lt;/p&gt;
&lt;pre&gt;from apt.progress.base import OpProgress
&lt;/pre&gt;
&lt;p&gt;Et voilà! (pensez quand même à redémarrer apt-p2p)&lt;/p&gt;
&lt;h2&gt;Remplir le cache pour partager ensuite&lt;/h2&gt;
&lt;p&gt;Autre chose, pour remplir totalement le cache d' apt-p2p avec tous les
paquets installés sur votre machine :&lt;/p&gt;
&lt;pre&gt;apt-get install --reinstall --download-only $(dpkg --get-selections | awk {'print $1'})
&lt;/pre&gt;
&lt;p&gt;Vous pouvez maintenant partager le tout ;)&lt;/p&gt;

---

[http://www.debian-fr.org/alleger-les-serveurs-avec-apt-p2p-t41056.html?sid=34dc0d4e9221ef23abf9044e35d1a515 Discussion sur le forum ]

[http://www.camrdale.org/apt-p2p/ apt-p2p]

[[Catégorie:Paquets]][[Catégorie:Serveurs]]</text>
      <sha1>q9dz5gczhgjdsmu18yr9tn84bq7orgr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4744</id>
      <parentid>4743</parentid>
      <timestamp>2012-11-10T17:52:07Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="3225">
&lt;blockquote&gt;
&lt;p&gt;Vous souhaitez participer au projet Debian (ou dérivés) mais vous ne
savez pas comment faire ? La lenteur des miroirs de téléchargement,
surchargés, vous donne des boutons ? Vous n’avez pas l’âme d’un
développeur, mais un peu de bande passante à partager ? Alors Apt-P2P
est fait pour vous !
[http://ilonet.fr/r274-aptpp-le-peertopeer-pour-telecharger-vos-paquets-debian.html source]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Avec apt-p2p, vous pourrez télécharger les paquets debian via peer 2
peer, et partager ensuite ces paquets avec les autres utilisateurs de
debian.&lt;/p&gt;
&lt;p&gt;Cela a pour but, à terme, de désengorger les serveurs debian, mais aussi
si beaucoup de personnes l'utilisent, accélérer les téléchargements.&lt;/p&gt;
&lt;p&gt;Si Aucun pair n'a le paquet souhaité, alors il sera téléchargé à partir
des serveurs habituels de debian.&lt;/p&gt;
&lt;p&gt;Le tout est basé sur DHT, et la somme de contrôle des paquets est
vérifiée ce qui assure l'incorruption des paquets téléchargés.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Attention&lt;/strong&gt; : Le cache est par défaut dans /var/cache/apt-p2p
 Assurez-vous donc d'avoir suffisamment de place dans /var&lt;/p&gt;
&lt;h2&gt;Installation&lt;/h2&gt;
&lt;p&gt;Pour l'installer, rien de plus simple :&lt;/p&gt;
&lt;pre&gt;# apt-get install apt-p2p
&lt;/pre&gt;
&lt;p&gt;Puis remplacer dans le fichier /etc/apt/sources.list :&lt;/p&gt;
&lt;pre&gt;deb http://ftp.fr.debian.org/debian squeeze main contrib non-free
&lt;/pre&gt;
&lt;p&gt;par&lt;/p&gt;
&lt;pre&gt;deb http://localhost:9977/ftp.fr.debian.org/debian squeeze main contrib non-free
&lt;/pre&gt;
&lt;p&gt;Faîtes de même avec tous les autres dépôts, ça marche très bien.&lt;/p&gt;
&lt;p&gt;Enfin, pour prendre les changements en compte, mettez votre liste à jour
avec la commande &lt;code&gt;apt-get update&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Ouverture des ports&lt;/h2&gt;
&lt;p&gt;Il est conseillé d'ouvrir les ports en UDP et TCP de votre routeur et
votre parefeu. Si vous n'avez pas changé le port par défaut, il s'agit
du &lt;em&gt;9977&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;Des infos sur le serveur&lt;/h2&gt;
&lt;p&gt;Pour obtenir des statistiques sur votre apt-p2p, allez dans votre
navigateur à l'adresse suivante : &lt;/p&gt;
&lt;p&gt;localhost:9977&lt;/p&gt;
&lt;h2&gt;Correction de bogue&lt;/h2&gt;
&lt;p&gt;Actuellement, [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=635969 ce vilain bug] empêche d'utiliser apt-p2p. Bien qu'il soit
résolu depuis un moment, le paquet correctif n'est pas encore arrivé.
Il est toutefois très rapide de corriger ce bug vous même en attendant :
Il suffit en fait de modifier 1 ligne dans le fichier
&lt;em&gt;/usr/share/pyshared/apt_p2p/AptPackages.py&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;En gros, on remplace&lt;/p&gt;
&lt;pre&gt;from apt import OpProgress
&lt;/pre&gt;
&lt;p&gt;par&lt;/p&gt;
&lt;pre&gt;from apt.progress.base import OpProgress
&lt;/pre&gt;
&lt;p&gt;Et voilà! (pensez quand même à redémarrer apt-p2p)&lt;/p&gt;
&lt;h2&gt;Remplir le cache pour partager ensuite&lt;/h2&gt;
&lt;p&gt;Autre chose, pour remplir totalement le cache d' apt-p2p avec tous les
paquets installés sur votre machine :&lt;/p&gt;
&lt;pre&gt;apt-get install --reinstall --download-only $(dpkg --get-selections | awk {'print $1'})
&lt;/pre&gt;
&lt;p&gt;Vous pouvez maintenant partager le tout ;)&lt;/p&gt;

---

[http://www.debian-fr.org/alleger-les-serveurs-avec-apt-p2p-t41056.html?sid=34dc0d4e9221ef23abf9044e35d1a515 Discussion sur le forum ]

[http://www.camrdale.org/apt-p2p/ apt-p2p]

[[Catégorie:Paquets]][[Catégorie:Serveurs]]</text>
      <sha1>bkrfsin9ponfupdbh03c3givth1vfuu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4764</id>
      <parentid>4744</parentid>
      <timestamp>2012-11-18T08:05:14Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="3353">
&lt;blockquote&gt;
&lt;p&gt;Vous souhaitez participer au projet Debian (ou dérivés) mais vous ne
savez pas comment faire ? La lenteur des miroirs de téléchargement,
surchargés, vous donne des boutons ? Vous n’avez pas l’âme d’un
développeur, mais un peu de bande passante à partager ? Alors Apt-P2P
est fait pour vous !
[http://ilonet.fr/r274-aptpp-le-peertopeer-pour-telecharger-vos-paquets-debian.html source]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Avec apt-p2p, vous pourrez télécharger les paquets debian via peer 2
peer, et partager ensuite ces paquets avec les autres utilisateurs de
debian.&lt;/p&gt;
&lt;p&gt;Cela a pour but, à terme, de désengorger les serveurs debian, mais aussi
si beaucoup de personnes l'utilisent, accélérer les téléchargements.&lt;/p&gt;
&lt;p&gt;Si Aucun pair n'a le paquet souhaité, alors il sera téléchargé à partir
des serveurs habituels de debian.&lt;/p&gt;
&lt;p&gt;Le tout est basé sur DHT, et la somme de contrôle des paquets est
vérifiée ce qui assure l'incorruption des paquets téléchargés.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Attention&lt;/strong&gt; : Le cache est par défaut dans /var/cache/apt-p2p
 Assurez-vous donc d'avoir suffisamment de place dans /var&lt;/p&gt;
&lt;h2&gt;Installation&lt;/h2&gt;
&lt;p&gt;Pour l'installer, rien de plus simple :&lt;/p&gt;
&lt;pre&gt;# apt-get install apt-p2p
&lt;/pre&gt;
&lt;p&gt;Puis remplacer dans le fichier /etc/apt/sources.list :&lt;/p&gt;
&lt;pre&gt;deb http://ftp.fr.debian.org/debian squeeze main contrib non-free
&lt;/pre&gt;
&lt;p&gt;par&lt;/p&gt;
&lt;pre&gt;deb http://localhost:9977/ftp.fr.debian.org/debian squeeze main contrib non-free
&lt;/pre&gt;
&lt;p&gt;Faîtes de même avec tous les autres dépôts, ça marche très bien.&lt;/p&gt;
&lt;p&gt;Enfin, pour prendre les changements en compte, mettez votre liste à jour
avec la commande &lt;code&gt;apt-get update&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Ouverture des ports&lt;/h2&gt;
&lt;p&gt;Il est conseillé d'ouvrir les ports en UDP et TCP de votre routeur et
votre parefeu. Si vous n'avez pas changé le port par défaut, il s'agit
du &lt;em&gt;9977&lt;/em&gt;&lt;/p&gt;

Notez que ce n'est pas obligatoire, ça fonctionnera quand même sans rediriger les ports. Ça sera juste un peu moins rapide.
&lt;h2&gt;Des infos sur le serveur&lt;/h2&gt;
&lt;p&gt;Pour obtenir des statistiques sur votre apt-p2p, allez dans votre
navigateur à l'adresse suivante : &lt;/p&gt;
&lt;p&gt;localhost:9977&lt;/p&gt;
&lt;h2&gt;Correction de bogue&lt;/h2&gt;
&lt;p&gt;Actuellement, [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=635969 ce vilain bug] empêche d'utiliser apt-p2p. Bien qu'il soit
résolu depuis un moment, le paquet correctif n'est pas encore arrivé.
Il est toutefois très rapide de corriger ce bug vous même en attendant :
Il suffit en fait de modifier 1 ligne dans le fichier
&lt;em&gt;/usr/share/pyshared/apt_p2p/AptPackages.py&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;En gros, on remplace&lt;/p&gt;
&lt;pre&gt;from apt import OpProgress
&lt;/pre&gt;
&lt;p&gt;par&lt;/p&gt;
&lt;pre&gt;from apt.progress.base import OpProgress
&lt;/pre&gt;
&lt;p&gt;Et voilà! (pensez quand même à redémarrer apt-p2p)&lt;/p&gt;
&lt;h2&gt;Remplir le cache pour partager ensuite&lt;/h2&gt;
&lt;p&gt;Autre chose, pour remplir totalement le cache d' apt-p2p avec tous les
paquets installés sur votre machine :&lt;/p&gt;
&lt;pre&gt;apt-get install --reinstall --download-only $(dpkg --get-selections | awk {'print $1'})
&lt;/pre&gt;
&lt;p&gt;Vous pouvez maintenant partager le tout ;)&lt;/p&gt;

---

[http://www.debian-fr.org/alleger-les-serveurs-avec-apt-p2p-t41056.html?sid=34dc0d4e9221ef23abf9044e35d1a515 Discussion sur le forum ]

[http://www.camrdale.org/apt-p2p/ apt-p2p]

[[Catégorie:Paquets]][[Catégorie:Serveurs]]</text>
      <sha1>masteciybxd8wgim1x6y2evss5vgxhh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4766</id>
      <parentid>4764</parentid>
      <timestamp>2012-11-23T06:25:48Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="3961">
&lt;blockquote&gt;
&lt;p&gt;Vous souhaitez participer au projet Debian (ou dérivés) mais vous ne
savez pas comment faire ? La lenteur des miroirs de téléchargement,
surchargés, vous donne des boutons ? Vous n’avez pas l’âme d’un
développeur, mais un peu de bande passante à partager ? Alors Apt-P2P
est fait pour vous !
[http://ilonet.fr/r274-aptpp-le-peertopeer-pour-telecharger-vos-paquets-debian.html source]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Avec apt-p2p, vous pourrez télécharger les paquets debian via peer 2
peer, et partager ensuite ces paquets avec les autres utilisateurs de
debian.&lt;/p&gt;
&lt;p&gt;Cela a pour but, à terme, de désengorger les serveurs debian, mais aussi
si beaucoup de personnes l'utilisent, accélérer les téléchargements.&lt;/p&gt;
&lt;p&gt;Si Aucun pair n'a le paquet souhaité, alors il sera téléchargé à partir
des serveurs habituels de debian.&lt;/p&gt;
&lt;p&gt;Le tout est basé sur DHT, et la somme de contrôle des paquets est
vérifiée ce qui assure l'incorruption des paquets téléchargés.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Attention&lt;/strong&gt; : Le cache est par défaut dans /var/cache/apt-p2p
 Assurez-vous donc d'avoir suffisamment de place dans /var&lt;/p&gt;
&lt;h2&gt;Installation&lt;/h2&gt;
&lt;p&gt;Pour l'installer, rien de plus simple :&lt;/p&gt;
&lt;pre&gt;# apt-get install apt-p2p
&lt;/pre&gt;
&lt;p&gt;Puis remplacer dans le fichier /etc/apt/sources.list :&lt;/p&gt;
&lt;pre&gt;deb http://ftp.fr.debian.org/debian squeeze main contrib non-free
&lt;/pre&gt;
&lt;p&gt;par&lt;/p&gt;
&lt;pre&gt;deb http://localhost:9977/ftp.fr.debian.org/debian squeeze main contrib non-free
&lt;/pre&gt;
&lt;p&gt;Faîtes de même avec tous les autres dépôts, ça marche très bien.&lt;/p&gt;
&lt;p&gt;Enfin, pour prendre les changements en compte, mettez votre liste à jour
avec la commande &lt;code&gt;apt-get update&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;Configuration&lt;/h2&gt;
&lt;p&gt;Vous avez la possibilité de régler de nombreux détails dans le fichier
/etc/apt-p2p/apt-p2p.conf, tels que : &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Le numéro du port utilisé &lt;code&gt;PORT = 9977&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Une limite de bande passante montante &lt;code&gt;UPLOAD_LIMIT = 0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Le nombre de pairs minimum à trouver pour commencer à télécharger en
  p2p, sinon c'est les seveurs habituels qui sont utilisés :
  &lt;code&gt;MIN_DOWNLOAD_PEERS = 1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Si vous voulez partager les paquets sur le réseau local : &lt;code&gt;LOCAL_OK = yes&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Et bien d'autres encore...&lt;/p&gt;


&lt;h2&gt;Ouverture des ports&lt;/h2&gt;
&lt;p&gt;Il est conseillé d'ouvrir les ports en UDP et TCP de votre routeur et
votre parefeu. Si vous n'avez pas changé le port par défaut, il s'agit
du &lt;em&gt;9977&lt;/em&gt;&lt;/p&gt;

Notez que ce n'est pas obligatoire, ça fonctionnera quand même sans rediriger les ports. Ça sera juste un peu moins rapide.
&lt;h2&gt;Des infos sur le serveur&lt;/h2&gt;
&lt;p&gt;Pour obtenir des statistiques sur votre apt-p2p, allez dans votre
navigateur à l'adresse suivante : &lt;/p&gt;
&lt;p&gt;localhost:9977&lt;/p&gt;
&lt;h2&gt;Correction de bogue&lt;/h2&gt;
&lt;p&gt;Actuellement, [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=635969 ce vilain bug] empêche d'utiliser apt-p2p. Bien qu'il soit
résolu depuis un moment, le paquet correctif n'est pas encore arrivé.
Il est toutefois très rapide de corriger ce bug vous même en attendant :
Il suffit en fait de modifier 1 ligne dans le fichier
&lt;em&gt;/usr/share/pyshared/apt_p2p/AptPackages.py&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;En gros, on remplace&lt;/p&gt;
&lt;pre&gt;from apt import OpProgress
&lt;/pre&gt;
&lt;p&gt;par&lt;/p&gt;
&lt;pre&gt;from apt.progress.base import OpProgress
&lt;/pre&gt;
&lt;p&gt;Et voilà! (pensez quand même à redémarrer apt-p2p)&lt;/p&gt;
&lt;h2&gt;Remplir le cache pour partager ensuite&lt;/h2&gt;
&lt;p&gt;Autre chose, pour remplir totalement le cache d' apt-p2p avec tous les
paquets installés sur votre machine :&lt;/p&gt;
&lt;pre&gt;apt-get install --reinstall --download-only $(dpkg --get-selections | awk {'print $1'})
&lt;/pre&gt;
&lt;p&gt;Vous pouvez maintenant partager le tout ;)&lt;/p&gt;

---

[http://www.debian-fr.org/alleger-les-serveurs-avec-apt-p2p-t41056.html?sid=34dc0d4e9221ef23abf9044e35d1a515 Discussion sur le forum ]

[http://www.camrdale.org/apt-p2p/ apt-p2p]

[[Catégorie:Paquets]][[Catégorie:Serveurs]]</text>
      <sha1>5qxmn4zttiou6xbqxikcv7ed7pkx1zt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4767</id>
      <parentid>4766</parentid>
      <timestamp>2012-11-23T08:31:06Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3966">
&lt;blockquote&gt;
&lt;p&gt;Vous souhaitez participer au projet Debian (ou dérivés) mais vous ne
savez pas comment faire ? La lenteur des miroirs de téléchargement,
surchargés, vous donne des boutons ? Vous n’avez pas l’âme d’un
développeur, mais un peu de bande passante à partager ? Alors Apt-P2P
est fait pour vous !
[http://ilonet.fr/r274-aptpp-le-peertopeer-pour-telecharger-vos-paquets-debian.html source]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Avec apt-p2p, vous pourrez télécharger les paquets debian via peer 2
peer, et partager ensuite ces paquets avec les autres utilisateurs de
debian.&lt;/p&gt;
&lt;p&gt;Cela a pour but, à terme, de désengorger les serveurs debian, mais aussi
si beaucoup de personnes l'utilisent, accélérer les téléchargements.&lt;/p&gt;
&lt;p&gt;Si Aucun pair n'a le paquet souhaité, alors il sera téléchargé à partir
des serveurs habituels de debian.&lt;/p&gt;
&lt;p&gt;Le tout est basé sur DHT, et la somme de contrôle des paquets est
vérifiée ce qui assure l'incorruption des paquets téléchargés.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Attention&lt;/strong&gt; : Le cache est par défaut dans /var/cache/apt-p2p
 Assurez-vous donc d'avoir suffisamment de place dans /var&lt;/p&gt;
&lt;h2&gt;Installation&lt;/h2&gt;
&lt;p&gt;Pour l'installer, rien de plus simple :&lt;/p&gt;
&lt;pre&gt;# apt-get install apt-p2p
&lt;/pre&gt;
&lt;p&gt;Puis remplacer dans le fichier /etc/apt/sources.list :&lt;/p&gt;
&lt;pre&gt;deb http://ftp.fr.debian.org/debian squeeze main contrib non-free
&lt;/pre&gt;
&lt;p&gt;par&lt;/p&gt;
&lt;pre&gt;deb http://localhost:9977/ftp.fr.debian.org/debian squeeze main contrib non-free
&lt;/pre&gt;
&lt;p&gt;Faîtes de même avec tous les autres dépôts, ça marche très bien.&lt;/p&gt;
&lt;p&gt;Enfin, pour prendre les changements en compte, mettez votre liste à jour
avec la commande &lt;code&gt;apt-get update&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;Configuration&lt;/h2&gt;
&lt;p&gt;Vous avez la possibilité de régler de nombreux détails dans le fichier
/etc/apt-p2p/apt-p2p.conf, tels que : &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Le numéro du port utilisé &lt;code&gt;PORT = 9977&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Une limite de bande passante montante &lt;code&gt;UPLOAD_LIMIT = 0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Le nombre de pairs minimum à trouver pour commencer à télécharger en
  p2p, sinon ce sont les serveurs habituels qui seront utilisés :
  &lt;code&gt;MIN_DOWNLOAD_PEERS = 1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Si vous voulez partager les paquets sur le réseau local : &lt;code&gt;LOCAL_OK = yes&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Et bien d'autres encore...&lt;/p&gt;


&lt;h2&gt;Ouverture des ports&lt;/h2&gt;
&lt;p&gt;Il est conseillé d'ouvrir les ports en UDP et TCP de votre routeur et
votre parefeu. Si vous n'avez pas changé le port par défaut, il s'agit
du &lt;em&gt;9977&lt;/em&gt;&lt;/p&gt;

Notez que ce n'est pas obligatoire, ça fonctionnera quand même sans rediriger les ports. Ça sera juste un peu moins rapide.
&lt;h2&gt;Des infos sur le serveur&lt;/h2&gt;
&lt;p&gt;Pour obtenir des statistiques sur votre apt-p2p, allez dans votre
navigateur à l'adresse suivante : &lt;/p&gt;
&lt;p&gt;localhost:9977&lt;/p&gt;
&lt;h2&gt;Correction de bogue&lt;/h2&gt;
&lt;p&gt;Actuellement, [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=635969 ce vilain bug] empêche d'utiliser apt-p2p. Bien qu'il soit
résolu depuis un moment, le paquet correctif n'est pas encore arrivé.
Il est toutefois très rapide de corriger ce bug vous même en attendant :
Il suffit en fait de modifier 1 ligne dans le fichier
&lt;em&gt;/usr/share/pyshared/apt_p2p/AptPackages.py&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;En gros, on remplace&lt;/p&gt;
&lt;pre&gt;from apt import OpProgress
&lt;/pre&gt;
&lt;p&gt;par&lt;/p&gt;
&lt;pre&gt;from apt.progress.base import OpProgress
&lt;/pre&gt;
&lt;p&gt;Et voilà! (pensez quand même à redémarrer apt-p2p)&lt;/p&gt;
&lt;h2&gt;Remplir le cache pour partager ensuite&lt;/h2&gt;
&lt;p&gt;Autre chose, pour remplir totalement le cache d' apt-p2p avec tous les
paquets installés sur votre machine :&lt;/p&gt;
&lt;pre&gt;apt-get install --reinstall --download-only $(dpkg --get-selections | awk {'print $1'})
&lt;/pre&gt;
&lt;p&gt;Vous pouvez maintenant partager le tout ;)&lt;/p&gt;

---

[http://www.debian-fr.org/alleger-les-serveurs-avec-apt-p2p-t41056.html?sid=34dc0d4e9221ef23abf9044e35d1a515 Discussion sur le forum ]

[http://www.camrdale.org/apt-p2p/ apt-p2p]

[[Catégorie:Paquets]][[Catégorie:Serveurs]]</text>
      <sha1>h2wbxl3axevuvyc0amy4t6zf1m2y89z</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4768</id>
      <parentid>4767</parentid>
      <timestamp>2012-11-23T11:26:54Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>bug corrigé</comment>
      <text xml:space="preserve" bytes="4013">
&lt;blockquote&gt;
&lt;p&gt;Vous souhaitez participer au projet Debian (ou dérivés) mais vous ne
savez pas comment faire ? La lenteur des miroirs de téléchargement,
surchargés, vous donne des boutons ? Vous n’avez pas l’âme d’un
développeur, mais un peu de bande passante à partager ? Alors Apt-P2P
est fait pour vous !
[http://ilonet.fr/r274-aptpp-le-peertopeer-pour-telecharger-vos-paquets-debian.html source]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Avec apt-p2p, vous pourrez télécharger les paquets debian via peer 2
peer, et partager ensuite ces paquets avec les autres utilisateurs de
debian.&lt;/p&gt;
&lt;p&gt;Cela a pour but, à terme, de désengorger les serveurs debian, mais aussi
si beaucoup de personnes l'utilisent, accélérer les téléchargements.&lt;/p&gt;
&lt;p&gt;Si Aucun pair n'a le paquet souhaité, alors il sera téléchargé à partir
des serveurs habituels de debian.&lt;/p&gt;
&lt;p&gt;Le tout est basé sur DHT, et la somme de contrôle des paquets est
vérifiée ce qui assure l'incorruption des paquets téléchargés.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Attention&lt;/strong&gt; : Le cache est par défaut dans /var/cache/apt-p2p
 Assurez-vous donc d'avoir suffisamment de place dans /var&lt;/p&gt;
&lt;h2&gt;Installation&lt;/h2&gt;
&lt;p&gt;Pour l'installer, rien de plus simple :&lt;/p&gt;
&lt;pre&gt;# apt-get install apt-p2p
&lt;/pre&gt;
&lt;p&gt;Puis remplacer dans le fichier /etc/apt/sources.list :&lt;/p&gt;
&lt;pre&gt;deb http://ftp.fr.debian.org/debian squeeze main contrib non-free
&lt;/pre&gt;
&lt;p&gt;par&lt;/p&gt;
&lt;pre&gt;deb http://localhost:9977/ftp.fr.debian.org/debian squeeze main contrib non-free
&lt;/pre&gt;
&lt;p&gt;Faîtes de même avec tous les autres dépôts, ça marche très bien.&lt;/p&gt;
&lt;p&gt;Enfin, pour prendre les changements en compte, mettez votre liste à jour
avec la commande &lt;code&gt;apt-get update&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;Configuration&lt;/h2&gt;
&lt;p&gt;Vous avez la possibilité de régler de nombreux détails dans le fichier
/etc/apt-p2p/apt-p2p.conf, tels que : &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Le numéro du port utilisé &lt;code&gt;PORT = 9977&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Une limite de bande passante montante &lt;code&gt;UPLOAD_LIMIT = 0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Le nombre de pairs minimum à trouver pour commencer à télécharger en
  p2p, sinon ce sont les serveurs habituels qui seront utilisés :
  &lt;code&gt;MIN_DOWNLOAD_PEERS = 1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Si vous voulez partager les paquets sur le réseau local : &lt;code&gt;LOCAL_OK = yes&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Et bien d'autres encore...&lt;/p&gt;


&lt;h2&gt;Ouverture des ports&lt;/h2&gt;
&lt;p&gt;Il est conseillé d'ouvrir les ports en UDP et TCP de votre routeur et
votre parefeu. Si vous n'avez pas changé le port par défaut, il s'agit
du &lt;em&gt;9977&lt;/em&gt;&lt;/p&gt;

Notez que ce n'est pas obligatoire, ça fonctionnera quand même sans rediriger les ports. Ça sera juste un peu moins rapide.
&lt;h2&gt;Des infos sur le serveur&lt;/h2&gt;
&lt;p&gt;Pour obtenir des statistiques sur votre apt-p2p, allez dans votre
navigateur à l'adresse suivante : &lt;/p&gt;
&lt;p&gt;localhost:9977&lt;/p&gt;
&lt;h2&gt;Correction de bogue&lt;/h2&gt;
&lt;p&gt;Actuellement, [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=635969 ce vilain bug] empêche d'utiliser apt-p2p sur une Squeeze (corrigé à partir de Wheezy). Bien qu'il soit
résolu depuis un moment, le paquet correctif n'est pas encore arrivé.
Il est toutefois très rapide de corriger ce bug vous même en attendant :
Il suffit en fait de modifier 1 ligne dans le fichier
&lt;em&gt;/usr/share/pyshared/apt_p2p/AptPackages.py&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;En gros, on remplace&lt;/p&gt;
&lt;pre&gt;from apt import OpProgress
&lt;/pre&gt;
&lt;p&gt;par&lt;/p&gt;
&lt;pre&gt;from apt.progress.base import OpProgress
&lt;/pre&gt;
&lt;p&gt;Et voilà! (pensez quand même à redémarrer apt-p2p)&lt;/p&gt;
&lt;h2&gt;Remplir le cache pour partager ensuite&lt;/h2&gt;
&lt;p&gt;Autre chose, pour remplir totalement le cache d' apt-p2p avec tous les
paquets installés sur votre machine :&lt;/p&gt;
&lt;pre&gt;apt-get install --reinstall --download-only $(dpkg --get-selections | awk {'print $1'})
&lt;/pre&gt;
&lt;p&gt;Vous pouvez maintenant partager le tout ;)&lt;/p&gt;

---

[http://www.debian-fr.org/alleger-les-serveurs-avec-apt-p2p-t41056.html?sid=34dc0d4e9221ef23abf9044e35d1a515 Discussion sur le forum ]

[http://www.camrdale.org/apt-p2p/ apt-p2p]

[[Catégorie:Paquets]][[Catégorie:Serveurs]]</text>
      <sha1>7noohg0lsandub32thjkp5pbr6nrwsu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4769</id>
      <parentid>4768</parentid>
      <timestamp>2012-11-23T11:28:21Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>bug spécifique à Squeeze</comment>
      <text xml:space="preserve" bytes="3911">
&lt;blockquote&gt;
&lt;p&gt;Vous souhaitez participer au projet Debian (ou dérivés) mais vous ne
savez pas comment faire ? La lenteur des miroirs de téléchargement,
surchargés, vous donne des boutons ? Vous n’avez pas l’âme d’un
développeur, mais un peu de bande passante à partager ? Alors Apt-P2P
est fait pour vous !
[http://ilonet.fr/r274-aptpp-le-peertopeer-pour-telecharger-vos-paquets-debian.html source]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Avec apt-p2p, vous pourrez télécharger les paquets debian via peer 2
peer, et partager ensuite ces paquets avec les autres utilisateurs de
debian.&lt;/p&gt;
&lt;p&gt;Cela a pour but, à terme, de désengorger les serveurs debian, mais aussi
si beaucoup de personnes l'utilisent, accélérer les téléchargements.&lt;/p&gt;
&lt;p&gt;Si Aucun pair n'a le paquet souhaité, alors il sera téléchargé à partir
des serveurs habituels de debian.&lt;/p&gt;
&lt;p&gt;Le tout est basé sur DHT, et la somme de contrôle des paquets est
vérifiée ce qui assure l'incorruption des paquets téléchargés.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Attention&lt;/strong&gt; : Le cache est par défaut dans /var/cache/apt-p2p
 Assurez-vous donc d'avoir suffisamment de place dans /var&lt;/p&gt;
&lt;h2&gt;Installation&lt;/h2&gt;
&lt;p&gt;Pour l'installer, rien de plus simple :&lt;/p&gt;
&lt;pre&gt;# apt-get install apt-p2p
&lt;/pre&gt;
&lt;p&gt;Puis remplacer dans le fichier /etc/apt/sources.list :&lt;/p&gt;
&lt;pre&gt;deb http://ftp.fr.debian.org/debian squeeze main contrib non-free
&lt;/pre&gt;
&lt;p&gt;par&lt;/p&gt;
&lt;pre&gt;deb http://localhost:9977/ftp.fr.debian.org/debian squeeze main contrib non-free
&lt;/pre&gt;
&lt;p&gt;Faîtes de même avec tous les autres dépôts, ça marche très bien.&lt;/p&gt;
&lt;p&gt;Enfin, pour prendre les changements en compte, mettez votre liste à jour
avec la commande &lt;code&gt;apt-get update&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;Configuration&lt;/h2&gt;
&lt;p&gt;Vous avez la possibilité de régler de nombreux détails dans le fichier
/etc/apt-p2p/apt-p2p.conf, tels que : &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Le numéro du port utilisé &lt;code&gt;PORT = 9977&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Une limite de bande passante montante &lt;code&gt;UPLOAD_LIMIT = 0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Le nombre de pairs minimum à trouver pour commencer à télécharger en
  p2p, sinon ce sont les serveurs habituels qui seront utilisés :
  &lt;code&gt;MIN_DOWNLOAD_PEERS = 1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Si vous voulez partager les paquets sur le réseau local : &lt;code&gt;LOCAL_OK = yes&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Et bien d'autres encore...&lt;/p&gt;


&lt;h2&gt;Ouverture des ports&lt;/h2&gt;
&lt;p&gt;Il est conseillé d'ouvrir les ports en UDP et TCP de votre routeur et
votre parefeu. Si vous n'avez pas changé le port par défaut, il s'agit
du &lt;em&gt;9977&lt;/em&gt;&lt;/p&gt;

Notez que ce n'est pas obligatoire, ça fonctionnera quand même sans rediriger les ports. Ça sera juste un peu moins rapide.
&lt;h2&gt;Des infos sur le serveur&lt;/h2&gt;
&lt;p&gt;Pour obtenir des statistiques sur votre apt-p2p, allez dans votre
navigateur à l'adresse suivante : &lt;/p&gt;
&lt;p&gt;localhost:9977&lt;/p&gt;
&lt;h2&gt;Correction de bogue (Squeeze)&lt;/h2&gt;
&lt;p&gt;[http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=635969 Ce vilain bug] empêche d'utiliser apt-p2p sur une Squeeze (corrigé à partir de Wheezy).
Il est toutefois très rapide de corriger ce bug vous-même :
Il suffit en fait de modifier une ligne dans le fichier
&lt;em&gt;/usr/share/pyshared/apt_p2p/AptPackages.py&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;En gros, on remplace&lt;/p&gt;
&lt;pre&gt;from apt import OpProgress
&lt;/pre&gt;
&lt;p&gt;par&lt;/p&gt;
&lt;pre&gt;from apt.progress.base import OpProgress
&lt;/pre&gt;
&lt;p&gt;Et voilà ! (pensez quand même à redémarrer apt-p2p)&lt;/p&gt;
&lt;h2&gt;Remplir le cache pour partager ensuite&lt;/h2&gt;
&lt;p&gt;Autre chose, pour remplir totalement le cache d' apt-p2p avec tous les
paquets installés sur votre machine :&lt;/p&gt;
&lt;pre&gt;apt-get install --reinstall --download-only $(dpkg --get-selections | awk {'print $1'})
&lt;/pre&gt;
&lt;p&gt;Vous pouvez maintenant partager le tout ;)&lt;/p&gt;

---

[http://www.debian-fr.org/alleger-les-serveurs-avec-apt-p2p-t41056.html?sid=34dc0d4e9221ef23abf9044e35d1a515 Discussion sur le forum ]

[http://www.camrdale.org/apt-p2p/ apt-p2p]

[[Catégorie:Paquets]][[Catégorie:Serveurs]]</text>
      <sha1>h8lnfugyotf8mxh45tetzxucjjagjl2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4794</id>
      <parentid>4769</parentid>
      <timestamp>2012-12-06T14:44:47Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="4264">
&lt;blockquote&gt;
&lt;p&gt;Vous souhaitez participer au projet Debian (ou dérivés) mais vous ne
savez pas comment faire ? La lenteur des miroirs de téléchargement,
surchargés, vous donne des boutons ? Vous n’avez pas l’âme d’un
développeur, mais un peu de bande passante à partager ? Alors Apt-P2P
est fait pour vous !
[http://ilonet.fr/r274-aptpp-le-peertopeer-pour-telecharger-vos-paquets-debian.html source]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Avec apt-p2p, vous pourrez télécharger les paquets debian via peer 2
peer, et partager ensuite ces paquets avec les autres utilisateurs de
debian.&lt;/p&gt;
&lt;p&gt;Cela a pour but, à terme, de désengorger les serveurs debian, mais aussi
si beaucoup de personnes l'utilisent, accélérer les téléchargements.&lt;/p&gt;
&lt;p&gt;Si Aucun pair n'a le paquet souhaité, alors il sera téléchargé à partir
des serveurs habituels de debian.&lt;/p&gt;
&lt;p&gt;Le tout est basé sur DHT, et la somme de contrôle des paquets est
vérifiée ce qui assure l'incorruption des paquets téléchargés.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Attention&lt;/strong&gt; : Le cache est par défaut dans /var/cache/apt-p2p
 Assurez-vous donc d'avoir suffisamment de place dans /var&lt;/p&gt;
&lt;h2&gt;Installation&lt;/h2&gt;
&lt;p&gt;Pour l'installer, rien de plus simple :&lt;/p&gt;
&lt;pre&gt;# apt-get install apt-p2p
&lt;/pre&gt;
&lt;p&gt;Puis remplacer dans le fichier /etc/apt/sources.list :&lt;/p&gt;
&lt;pre&gt;deb http://ftp.fr.debian.org/debian squeeze main contrib non-free
&lt;/pre&gt;
&lt;p&gt;par&lt;/p&gt;
&lt;pre&gt;deb http://localhost:9977/ftp.fr.debian.org/debian squeeze main contrib non-free
&lt;/pre&gt;
&lt;p&gt;Faîtes de même avec tous les autres dépôts, ça marche très bien.&lt;/p&gt;
&lt;p&gt;Enfin, pour prendre les changements en compte, mettez votre liste à jour
avec la commande &lt;code&gt;apt-get update&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;Configuration&lt;/h2&gt;
&lt;p&gt;Vous avez la possibilité de régler de nombreux détails dans le fichier
/etc/apt-p2p/apt-p2p.conf, tels que : &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Le numéro du port utilisé &lt;code&gt;PORT = 9977&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Une limite de bande passante montante &lt;code&gt;UPLOAD_LIMIT = 0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Le nombre de pairs minimum à trouver pour commencer à télécharger en
  p2p, sinon ce sont les serveurs habituels qui seront utilisés :
  &lt;code&gt;MIN_DOWNLOAD_PEERS = 1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Si vous voulez partager les paquets sur le réseau local : &lt;code&gt;LOCAL_OK = yes&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Et bien d'autres encore...&lt;/p&gt;


&lt;h2&gt;Ouverture des ports&lt;/h2&gt;
&lt;p&gt;Il est conseillé d'ouvrir les ports en UDP et TCP de votre routeur et
votre parefeu. Si vous n'avez pas changé le port par défaut, il s'agit
du &lt;em&gt;9977&lt;/em&gt;&lt;/p&gt;

Notez que ce n'est pas obligatoire, ça fonctionnera quand même sans rediriger les ports. Ça sera juste un peu moins rapide.
&lt;h2&gt;Des infos sur le serveur&lt;/h2&gt;
&lt;p&gt;Pour obtenir des statistiques sur votre apt-p2p, allez dans votre
navigateur à l'adresse suivante : &lt;/p&gt;
&lt;p&gt;localhost:9977&lt;/p&gt;
&lt;h2&gt;Correction de bogue (Squeeze)&lt;/h2&gt;
&lt;p&gt;[http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=635969 Ce vilain bug] empêche d'utiliser apt-p2p sur une Squeeze (corrigé à partir de Wheezy).
Il est toutefois très rapide de corriger ce bug vous-même :
Il suffit en fait de modifier une ligne dans le fichier
&lt;em&gt;/usr/share/pyshared/apt_p2p/AptPackages.py&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;En gros, on remplace&lt;/p&gt;
&lt;pre&gt;from apt import OpProgress
&lt;/pre&gt;
&lt;p&gt;par&lt;/p&gt;
&lt;pre&gt;from apt.progress.base import OpProgress
&lt;/pre&gt;
&lt;p&gt;Et voilà ! (pensez quand même à redémarrer apt-p2p)&lt;/p&gt;
&lt;h2&gt;Remplir le cache pour partager ensuite&lt;/h2&gt;
&lt;p&gt;Autre chose, pour remplir totalement le cache d' apt-p2p avec tous les
paquets installés sur votre machine :&lt;/p&gt;
&lt;pre&gt;apt-get install --reinstall --download-only $(dpkg --get-selections | awk {'print $1'})
&lt;/pre&gt;
&lt;p&gt;Vous pouvez maintenant partager le tout ;)&lt;/p&gt;
&lt;h2&gt;Avertissement : fichier preferences&lt;/h2&gt;
&lt;p&gt;Attention : suite à la modification de votre fichier sources.list pour utiliser apt-p2p vous ne pourrez plus utiliser d'entrées du type suivant dans votre fichier preferences :&lt;/p&gt;
&lt;pre&gt;Pin: origin http://miroir/&lt;/pre&gt;
&lt;p&gt;En effet, le champ origin est défini à &quot;localhost&quot; pour toutes les sources.&lt;/p&gt;
---

[http://www.debian-fr.org/alleger-les-serveurs-avec-apt-p2p-t41056.html?sid=34dc0d4e9221ef23abf9044e35d1a515 Discussion sur le forum ]

[http://www.camrdale.org/apt-p2p/ apt-p2p]

[[Catégorie:Paquets]][[Catégorie:Serveurs]]</text>
      <sha1>7i3ks67o9hkxovvqkhmknr2r5p94xwv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4844</id>
      <parentid>4794</parentid>
      <timestamp>2012-12-18T17:34:43Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="4708">
&lt;blockquote&gt;
&lt;p&gt;Vous souhaitez participer au projet Debian (ou dérivés) mais vous ne
savez pas comment faire ? La lenteur des miroirs de téléchargement,
surchargés, vous donne des boutons ? Vous n’avez pas l’âme d’un
développeur, mais un peu de bande passante à partager ? Alors Apt-P2P
est fait pour vous !
[http://ilonet.fr/r274-aptpp-le-peertopeer-pour-telecharger-vos-paquets-debian.html source]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Avec apt-p2p, vous pourrez télécharger les paquets debian via peer 2
peer, et partager ensuite ces paquets avec les autres utilisateurs de
debian.&lt;/p&gt;
&lt;p&gt;Cela a pour but, à terme, de désengorger les serveurs debian, mais aussi
si beaucoup de personnes l'utilisent, accélérer les téléchargements.&lt;/p&gt;
&lt;p&gt;Si Aucun pair n'a le paquet souhaité, alors il sera téléchargé à partir
des serveurs habituels de debian.&lt;/p&gt;
&lt;p&gt;Le tout est basé sur DHT, et la somme de contrôle des paquets est
vérifiée ce qui assure l'incorruption des paquets téléchargés.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Attention&lt;/strong&gt; : Le cache est par défaut dans /var/cache/apt-p2p
 Assurez-vous donc d'avoir suffisamment de place dans /var&lt;/p&gt;
&lt;h2&gt;Installation&lt;/h2&gt;
&lt;p&gt;Pour l'installer, rien de plus simple :&lt;/p&gt;
&lt;pre&gt;# apt-get install apt-p2p
&lt;/pre&gt;
&lt;p&gt;Puis remplacer dans le fichier /etc/apt/sources.list :&lt;/p&gt;
&lt;pre&gt;deb http://ftp.fr.debian.org/debian squeeze main contrib non-free
&lt;/pre&gt;
&lt;p&gt;par&lt;/p&gt;
&lt;pre&gt;deb http://localhost:9977/ftp.fr.debian.org/debian squeeze main contrib non-free
&lt;/pre&gt;
&lt;p&gt;Faîtes de même avec tous les autres dépôts, ça marche très bien.&lt;/p&gt;
&lt;p&gt;Enfin, pour prendre les changements en compte, mettez votre liste à jour
avec la commande &lt;code&gt;apt-get update&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;Configuration&lt;/h2&gt;
&lt;p&gt;Vous avez la possibilité de régler de nombreux détails dans le fichier
/etc/apt-p2p/apt-p2p.conf, tels que : &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Le numéro du port utilisé &lt;code&gt;PORT = 9977&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Une limite de bande passante montante &lt;code&gt;UPLOAD_LIMIT = 0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Le nombre de pairs minimum à trouver pour commencer à télécharger en
  p2p, sinon ce sont les serveurs habituels qui seront utilisés :
  &lt;code&gt;MIN_DOWNLOAD_PEERS = 1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Si vous voulez partager les paquets sur le réseau local : &lt;code&gt;LOCAL_OK = yes&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Et bien d'autres encore...&lt;/p&gt;


&lt;h2&gt;Ouverture des ports&lt;/h2&gt;
&lt;p&gt;Il est conseillé d'ouvrir les ports en UDP et TCP de votre routeur et
votre parefeu. Si vous n'avez pas changé le port par défaut, il s'agit
du &lt;em&gt;9977&lt;/em&gt;&lt;/p&gt;

Notez que ce n'est pas obligatoire, ça fonctionnera quand même sans rediriger les ports. Ça sera juste un peu moins rapide.
&lt;h2&gt;Des infos sur le serveur&lt;/h2&gt;
&lt;p&gt;Pour obtenir des statistiques sur votre apt-p2p, allez dans votre
navigateur à l'adresse suivante : &lt;/p&gt;
&lt;p&gt;localhost:9977&lt;/p&gt;

&lt;h2&gt;C'est lent, je n'ai pas la patience!&lt;/h2&gt;
Notez bien que cette lenteur diminuera d'autant que beaucoup de
personnes utiliseront apt-p2p. Courage!

Toutefois, vous pouvez malgré tout partager les paquets téléchargés de
façon habituelle par apt. Pour cela, dans le fichier
&lt;code&gt;/etc/apt-p2p/apt-p2p.conf&lt;/code&gt; ajoutez cette ligne : 

    OTHER_DIRS = /vac/cache/apt/archives

Et bien entendu, remettez votre sources.list comme avant.
&lt;h2&gt;Correction de bogue (Squeeze)&lt;/h2&gt;
&lt;p&gt;[http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=635969 Ce vilain bug] empêche d'utiliser apt-p2p sur une Squeeze (corrigé à partir de Wheezy).
Il est toutefois très rapide de corriger ce bug vous-même :
Il suffit en fait de modifier une ligne dans le fichier
&lt;em&gt;/usr/share/pyshared/apt_p2p/AptPackages.py&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;En gros, on remplace&lt;/p&gt;
&lt;pre&gt;from apt import OpProgress
&lt;/pre&gt;
&lt;p&gt;par&lt;/p&gt;
&lt;pre&gt;from apt.progress.base import OpProgress
&lt;/pre&gt;
&lt;p&gt;Et voilà ! (pensez quand même à redémarrer apt-p2p)&lt;/p&gt;
&lt;h2&gt;Remplir le cache pour partager ensuite&lt;/h2&gt;
&lt;p&gt;Autre chose, pour remplir totalement le cache d' apt-p2p avec tous les
paquets installés sur votre machine :&lt;/p&gt;
&lt;pre&gt;apt-get install --reinstall --download-only $(dpkg --get-selections | awk {'print $1'})
&lt;/pre&gt;
&lt;p&gt;Vous pouvez maintenant partager le tout ;)&lt;/p&gt;
&lt;h2&gt;Avertissement : fichier preferences&lt;/h2&gt;
&lt;p&gt;Attention : suite à la modification de votre fichier sources.list pour utiliser apt-p2p vous ne pourrez plus utiliser d'entrées du type suivant dans votre fichier preferences :&lt;/p&gt;
&lt;pre&gt;Pin: origin http://miroir/&lt;/pre&gt;
&lt;p&gt;En effet, le champ origin est défini à &quot;localhost&quot; pour toutes les sources.&lt;/p&gt;
---

[http://www.debian-fr.org/alleger-les-serveurs-avec-apt-p2p-t41056.html?sid=34dc0d4e9221ef23abf9044e35d1a515 Discussion sur le forum ]

[http://www.camrdale.org/apt-p2p/ apt-p2p]

[[Catégorie:Paquets]][[Catégorie:Serveurs]]</text>
      <sha1>tvb1js30sq2h6fmb47uvhcirympp1p2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5176</id>
      <parentid>4844</parentid>
      <timestamp>2013-05-14T13:56:19Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>/vac/… &gt; /var/…</comment>
      <text xml:space="preserve" bytes="4708">
&lt;blockquote&gt;
&lt;p&gt;Vous souhaitez participer au projet Debian (ou dérivés) mais vous ne
savez pas comment faire ? La lenteur des miroirs de téléchargement,
surchargés, vous donne des boutons ? Vous n’avez pas l’âme d’un
développeur, mais un peu de bande passante à partager ? Alors Apt-P2P
est fait pour vous !
[http://ilonet.fr/r274-aptpp-le-peertopeer-pour-telecharger-vos-paquets-debian.html source]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Avec apt-p2p, vous pourrez télécharger les paquets debian via peer 2
peer, et partager ensuite ces paquets avec les autres utilisateurs de
debian.&lt;/p&gt;
&lt;p&gt;Cela a pour but, à terme, de désengorger les serveurs debian, mais aussi
si beaucoup de personnes l'utilisent, accélérer les téléchargements.&lt;/p&gt;
&lt;p&gt;Si Aucun pair n'a le paquet souhaité, alors il sera téléchargé à partir
des serveurs habituels de debian.&lt;/p&gt;
&lt;p&gt;Le tout est basé sur DHT, et la somme de contrôle des paquets est
vérifiée ce qui assure l'incorruption des paquets téléchargés.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Attention&lt;/strong&gt; : Le cache est par défaut dans /var/cache/apt-p2p
 Assurez-vous donc d'avoir suffisamment de place dans /var&lt;/p&gt;
&lt;h2&gt;Installation&lt;/h2&gt;
&lt;p&gt;Pour l'installer, rien de plus simple :&lt;/p&gt;
&lt;pre&gt;# apt-get install apt-p2p
&lt;/pre&gt;
&lt;p&gt;Puis remplacer dans le fichier /etc/apt/sources.list :&lt;/p&gt;
&lt;pre&gt;deb http://ftp.fr.debian.org/debian squeeze main contrib non-free
&lt;/pre&gt;
&lt;p&gt;par&lt;/p&gt;
&lt;pre&gt;deb http://localhost:9977/ftp.fr.debian.org/debian squeeze main contrib non-free
&lt;/pre&gt;
&lt;p&gt;Faîtes de même avec tous les autres dépôts, ça marche très bien.&lt;/p&gt;
&lt;p&gt;Enfin, pour prendre les changements en compte, mettez votre liste à jour
avec la commande &lt;code&gt;apt-get update&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;Configuration&lt;/h2&gt;
&lt;p&gt;Vous avez la possibilité de régler de nombreux détails dans le fichier
/etc/apt-p2p/apt-p2p.conf, tels que : &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Le numéro du port utilisé &lt;code&gt;PORT = 9977&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Une limite de bande passante montante &lt;code&gt;UPLOAD_LIMIT = 0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Le nombre de pairs minimum à trouver pour commencer à télécharger en
  p2p, sinon ce sont les serveurs habituels qui seront utilisés :
  &lt;code&gt;MIN_DOWNLOAD_PEERS = 1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Si vous voulez partager les paquets sur le réseau local : &lt;code&gt;LOCAL_OK = yes&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Et bien d'autres encore...&lt;/p&gt;


&lt;h2&gt;Ouverture des ports&lt;/h2&gt;
&lt;p&gt;Il est conseillé d'ouvrir les ports en UDP et TCP de votre routeur et
votre parefeu. Si vous n'avez pas changé le port par défaut, il s'agit
du &lt;em&gt;9977&lt;/em&gt;&lt;/p&gt;

Notez que ce n'est pas obligatoire, ça fonctionnera quand même sans rediriger les ports. Ça sera juste un peu moins rapide.
&lt;h2&gt;Des infos sur le serveur&lt;/h2&gt;
&lt;p&gt;Pour obtenir des statistiques sur votre apt-p2p, allez dans votre
navigateur à l'adresse suivante : &lt;/p&gt;
&lt;p&gt;localhost:9977&lt;/p&gt;

&lt;h2&gt;C'est lent, je n'ai pas la patience!&lt;/h2&gt;
Notez bien que cette lenteur diminuera d'autant que beaucoup de
personnes utiliseront apt-p2p. Courage!

Toutefois, vous pouvez malgré tout partager les paquets téléchargés de
façon habituelle par apt. Pour cela, dans le fichier
&lt;code&gt;/etc/apt-p2p/apt-p2p.conf&lt;/code&gt; ajoutez cette ligne : 

    OTHER_DIRS = /var/cache/apt/archives

Et bien entendu, remettez votre sources.list comme avant.
&lt;h2&gt;Correction de bogue (Squeeze)&lt;/h2&gt;
&lt;p&gt;[http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=635969 Ce vilain bug] empêche d'utiliser apt-p2p sur une Squeeze (corrigé à partir de Wheezy).
Il est toutefois très rapide de corriger ce bug vous-même :
Il suffit en fait de modifier une ligne dans le fichier
&lt;em&gt;/usr/share/pyshared/apt_p2p/AptPackages.py&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;En gros, on remplace&lt;/p&gt;
&lt;pre&gt;from apt import OpProgress
&lt;/pre&gt;
&lt;p&gt;par&lt;/p&gt;
&lt;pre&gt;from apt.progress.base import OpProgress
&lt;/pre&gt;
&lt;p&gt;Et voilà ! (pensez quand même à redémarrer apt-p2p)&lt;/p&gt;
&lt;h2&gt;Remplir le cache pour partager ensuite&lt;/h2&gt;
&lt;p&gt;Autre chose, pour remplir totalement le cache d' apt-p2p avec tous les
paquets installés sur votre machine :&lt;/p&gt;
&lt;pre&gt;apt-get install --reinstall --download-only $(dpkg --get-selections | awk {'print $1'})
&lt;/pre&gt;
&lt;p&gt;Vous pouvez maintenant partager le tout ;)&lt;/p&gt;
&lt;h2&gt;Avertissement : fichier preferences&lt;/h2&gt;
&lt;p&gt;Attention : suite à la modification de votre fichier sources.list pour utiliser apt-p2p vous ne pourrez plus utiliser d'entrées du type suivant dans votre fichier preferences :&lt;/p&gt;
&lt;pre&gt;Pin: origin http://miroir/&lt;/pre&gt;
&lt;p&gt;En effet, le champ origin est défini à &quot;localhost&quot; pour toutes les sources.&lt;/p&gt;
---

[http://www.debian-fr.org/alleger-les-serveurs-avec-apt-p2p-t41056.html?sid=34dc0d4e9221ef23abf9044e35d1a515 Discussion sur le forum ]

[http://www.camrdale.org/apt-p2p/ apt-p2p]

[[Catégorie:Paquets]][[Catégorie:Serveurs]]</text>
      <sha1>4zwa88o6vjbntw0qiibeudmnjhbwtyl</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Aptitude</title>
    <ns>0</ns>
    <id>487</id>
    <revision>
      <id>1878</id>
      <timestamp>2010-08-05T19:17:50Z</timestamp>
      <contributor>
        <username>Helid</username>
        <id>62</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « {{Ebauche|aptitude}}  '''aptitude''' est un logiciel fonctionnant en mode ''console'' qui permet de gérer ses paquets sous Debian (et ses dérivés comme Ubuntu, etc).  Il f… »</comment>
      <text xml:space="preserve" bytes="10010">{{Ebauche|aptitude}}

'''aptitude''' est un logiciel fonctionnant en mode ''console'' qui permet de gérer ses paquets sous Debian (et ses dérivés comme Ubuntu, etc).

Il fonctionne via la librairie ''ncurses'' qui permet d'afficher des ''caractères semi-graphiques'', encore appelés ''graphismes ASCII''.
L'utilisation de cette librairie permet en outre d'utiliser ce logiciel dans un terminal graphique sous KDE, Gnome ou n'importe lequel des gestionnaires de fenêtres. Il suffit pour cela de le lancer en mode '''root''' (= super-utilisateur) via la commande:

 $ sudo aptitude

Sous KDE, avec ''Konsole'', il suffit d'ouvrir une session super-utilisateur et, après avoir entré son mot-de-passe:

 # aptitude


On arrive alors, après initialisation du logiciel, à (exemple dans un onglet de ''Konsole''):

[[Fichier:1.png]]

Les chiffres entre parenthèses sont le nombre de paquets dans chaque catégorie.


= Gestion des paquets =


''Comme un logiciel de gestion de paquet est quelque chose de dynamique, la présentation est faite comme lors d'une séance d'utilisation.''


== Mise à jour de la liste ==

Il faut presser la touche 'u' et aptitude récupère les listes:

[[Fichier:2.png]]

En vert:ce qui est identique, en orange ce qui a changé.


On obtiens alors un récapitulatif de nouveau, mais additionné des changements comme les nouveaux paquets ou la mise-à-jour disponible:

[[Fichier:3.png]]

Ici la mise-à-jour est exclusivement de sécurité et concerne 8 paquets, il y a aussi 19 nouveaux paquets dans les dépôts.

Pour faire disparaitre la ligne ''nouveaux paquets'', c'est la touche 'f'. Ils sont alors inclus dans leurs catégories respectives.


== Déplacements dans les listes et les paquets ==

À partir de là, la manipulation est très simple et par touche:
* les flèches du clavier pour les déplacements haut/bas/...
* 'entrer' pour valider ou voir à l'intérieur d'une catégorie, ou le détail d'un paquet, etc.
* '+' demande à installer un paquet.
* '-' demande à l'enlever.
* '_' demande à le purger (= enlever aussi les fichiers de configurations).
* 'q' permet de &quot;revenir en arrière&quot;. (Voir plus bas pour plus de détail.)
* 'g' permet de demander à afficher le récapitulatif de ce qui a été demandé &lt;u&gt;avant&lt;/u&gt; lancement des changements.
* 'g' &lt;u&gt;pendant&lt;/u&gt; que l'on est dans le récapitulatif, lance les changements.
* 'Ctrl-T' permet d'accéder au menu ainsi que 'F10'.

Chaque fois que l'on voit &quot;---&quot; devant une ligne c'est que c'est &quot;dépliant&quot; via la touche 'entrer'.
Cela se transforme alors en &quot;--\&quot;.
Il suffit de re-presser 'entrer' à nouveau sur cette ligne pour &quot;replier&quot;.


== Dés/Installation ==

Raccourci pratique: 'U' permet de sélectionner l'ensemble des mise-à-jours disponible (dans l'exemple précédent, ce seraient les 8 paquets de mise-à-jour de sécurité qui seraient alors sélectionnés). Il ne reste alors qu'à presser 'g', vérifier (même par curiosité ;) ), re-presser 'g' et ''&quot;c'est parti !&quot;''.


Après donc un appui sur 'U', mais aussi après avoir sélectionné certains paquets à installer ou désinstaller, on obtiens dans la partie supérieure de la fenêtre, juste au dessus de la zone centrale noire, un récapitulatif rapide des changements en termes de place sur le disque dur, très pratique pour ne pas essayer d'installer plus qu'il n'est capable d'en contenir:

[[Fichier:4.png]]

On a aussi la précision de la taille totale à télécharger, ici 1017ko.

À noter que dans cet exemple c'est une place ''libérée'' qui est montrée car la mise-à-jour installe des paquets plus petits que leurs versions précédents.


Voici donc ce que l'on obtiens en appuyant une première fois sur 'g':

[[Fichier:5.png]]

''Aperçu'' est bien un onglet montrant où l'on est.

les 'i' dans la colonne de gauche signifient que les paquets ont déjà une version d'installée, les 'u' qu'ils ont été choisis pour être mis-à-jour et les 'A' que se sont des mise-à-jours par dépendances (ajoutées automatiquement par aptitude pour régler les dépendances principales et obligatoires).


Particularité intéressante de la touche 'q':
Dans le cas précédent, elle permet de revenir à l'écran '''précédent''', que cela soit le détail d'un paquet ou encore la liste principale des catégories (la première image montrée).
En effet une particularité d'aptitude c'est qu'il permet réellement de naviguer d'un paquet à l'autre, et 'q' permet de revenir en arrière dans cette suite de paquets. &lt;u&gt;Très&lt;/u&gt; pratique dans le cas d'une résolution de multiples dépendances !
Quand on arrive à la base de cette liste, i.e. celle avec les catégorie, 'q' permet de quitter aptitude.


Après la seconde pression sur la touche 'g' (quand on est dans la liste récapitulative des changements), le processus de changements démarre. Si des paquets demandent des paramètres à fournir lors de leur installation, un fenêtre ''debconf'' apparaîtra. Quand c'est fini, il faut appuyer sur la touche 'entrer':

[[Fichier:6.png]]

Quoi ?!? au moins c'est super précis comme descriptif, hein !! :)


== Rentrer dans ce qui fait ''PRO'' :) ==

Vous pouvez encore améliorer aptitude ... si si ... en activant l'affichage du détail du type d'archive pour chaque paquet/version d'un paquet, d'ailleurs cela est prévu (c'est le grand espace vide au centre ;) ).


Pressez la touche 'F10' pour ouvrir le menu, aller sur le menu '''Options''' et choisissez '''Préférences''':

[[Fichier:7.png]]

Ne tremblez pas: c'est facile ! ;)

Comme c'est via un onglet ... Pressez la touche 'q' pour sortir.
Les modifications sont instantanées, pas de sauvegarde à faire.
Mais certaines demandent de redémarrer le logiciel pour s'activer.


=== Affichage additionnel des dépendances ===

Descendez jusqu'à ''Afficher par défaut la zone d'information'':

[[Fichier:8.png]]

Et pressez sur 'espace' pour valider (un X s'affichera).


Cela permet d'avoir ça:

[[Fichier:9.png]]

Les 3 onglets dans la demi-fenêtre du bas.

On passe d'un onglet à l'autre avec la touche 'i' de façon circulaire.
Pour résoudre les dépendances ou même pour s'assurer de ne pas rencontrer de problèmes, etc, les deux onglets &quot;Dépendances liées&quot; et &quot;Pourquoi installé&quot; sont &lt;u&gt;très&lt;/u&gt; utiles.
Ils expliquent les paquets qui vont être installés à cause du paquet sélectionné (celui qui sera surligné dans la fenêtre du haut, non montré dans l'exemple ici) mais aussi, ''pourquoi'' ce paquet a été installé: si par exemple il est lui-même une dépendance d'un autre ou plusieurs paquets.
Ce sont donc les dépendances ascendantes et descendantes qui s'affichent ici.


=== Détail des archives pour chaque paquet/version d'un paquet ===

Toujours dans les Préférences, allez sur ''Format d'affichage pour les vues des paquets'', sur la ligne dessous, pressez 'entrer' et faite la même modification que sur la capture d'écran. C'est-à-dire ajoutez &quot;%t&quot; entre &quot;%p&quot; et &quot;%Z&quot;.
Puis validez avec 'entrer'.

[[Fichier:10.png]]

Dans la demi-fenêtre du bas vous voyez en face de &quot;Défaut&quot; ce qui est d'origine et à &quot;Valeur&quot; ce que vous avez aussi maintenant.


Résultat obtenu avec l'exemple du paquet ''blackbox'':

[[Fichier:11.png]]

La colonne du milieu avec &quot;stable,unsta&quot; précise que la version (0.70.1-2.2 ici) de ce paquet est à la fois présent dans l'archive ''stable'' et ''unstable''.


Et ainsi on a directement le détail de ces dépendances (via 'i'):

[[Fichier:12.png]]


Et si on le sélectionne (avec '+') il passe en vert (indiquant qu'il n'y a pas de problème dans ce cas pour ce paquet) et dans le dernier onglet (toujours avec 'i') on obtiens:

[[Fichier:13.png]]

Ici ksmserver, déjà installé (le 'i' devant son nom), dépend de de kwin OU (= le caractère: '|') de x-window-manager, or on voit que blackbox fournit justement ce dernier ... donc &quot;pas de problème&quot;.


Si il y avait eu un problème, la ligne serait rouge au lieu de verte. Un 'B' pour &quot;broken&quot; (= &quot;cassé&quot; en anglais) serait dans la colonne de gauche. Et le détail du pourquoi serait dans les onglets du bas ainsi que dans le détail du paquet (accessible via 'entrer').


Une fois ce paquet sélectionné pour installation, on obtiens dans l'onglet du milieu (après deux pressions de 'i', c'est cyclique pour rappel):

[[Fichier:14.png]]

Où l'on vois que ce paquet va bien être installé, et divers récapitulatifs d'espaces disques, tailles de fichiers.


Dans l'affichage du détail du paquet on peu aussi y voir le détail pour chaque version de l'archive dans laquelle il se trouve:

[[Fichier:16.png]]

Le 'p' devant les versions indique qu'il n'y a rien de ce paquet, comme s'il avait été purgé, le 'i' qu'il est installé et sa ligne blanche que &quot;tout va bien&quot; pour ce paquet et cette version.


C'est dans cette vue-là que la résolution des dépendances complexes est plus facile car elle permet de les résoudre une à une: si par exemple le paquet juk était en conflit, il serait surligné en rouge. Il suffirait d'y aller dessus et presser 'enter' pour entrer dans celui-ci. Voir dans sa vue en détail pour quelle raison il serait cassé, peut-être à cause d'un paquet autre qui serait lui aussi en conflit de version, etc. Et pour revenir en arrière de cette &quot;chaîne&quot;, c'est 'q', une vue après l'autre, avec le nom de la vue en cours dans le nom de l'onglet du haut à droite (ici c'est donc le détail du paquet &quot;kde-i18n-fr&quot;).


== Problèmes de dépendances ou autres ==

Si il arrive un problème que l'on n'arrive pas à résoudre.
Il est possible de tout annuler en sélectionnant dans le menu '''Actions''' -&gt; '''Annuler les actions en attente'''.

[[Fichier:15.png]]

En bas en rouge: La touche 'e' permet d'examiner certaines offres de résolution automatique de conflit basées sur les préférences d'apt (fichier /etc/apt/preferences) et '!' permet d'appliquer celle qui plaît. '.' et ',' permettant de visualiser une offre après l'autre.


[[Category:Paquets]]</text>
      <sha1>5vmulk6amoxya4vxeb2jbfb9kcirm68</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1885</id>
      <parentid>1878</parentid>
      <timestamp>2010-08-06T13:42:52Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Correction modèle</comment>
      <text xml:space="preserve" bytes="10019">{{Modèle:Ébauche|Aptitude}}

'''aptitude''' est un logiciel fonctionnant en mode ''console'' qui permet de gérer ses paquets sous Debian (et ses dérivés comme Ubuntu, etc).

Il fonctionne via la librairie ''ncurses'' qui permet d'afficher des ''caractères semi-graphiques'', encore appelés ''graphismes ASCII''.
L'utilisation de cette librairie permet en outre d'utiliser ce logiciel dans un terminal graphique sous KDE, Gnome ou n'importe lequel des gestionnaires de fenêtres. Il suffit pour cela de le lancer en mode '''root''' (= super-utilisateur) via la commande:

 $ sudo aptitude

Sous KDE, avec ''Konsole'', il suffit d'ouvrir une session super-utilisateur et, après avoir entré son mot-de-passe:

 # aptitude


On arrive alors, après initialisation du logiciel, à (exemple dans un onglet de ''Konsole''):

[[Fichier:1.png]]

Les chiffres entre parenthèses sont le nombre de paquets dans chaque catégorie.


= Gestion des paquets =


''Comme un logiciel de gestion de paquet est quelque chose de dynamique, la présentation est faite comme lors d'une séance d'utilisation.''


== Mise à jour de la liste ==

Il faut presser la touche 'u' et aptitude récupère les listes:

[[Fichier:2.png]]

En vert:ce qui est identique, en orange ce qui a changé.


On obtiens alors un récapitulatif de nouveau, mais additionné des changements comme les nouveaux paquets ou la mise-à-jour disponible:

[[Fichier:3.png]]

Ici la mise-à-jour est exclusivement de sécurité et concerne 8 paquets, il y a aussi 19 nouveaux paquets dans les dépôts.

Pour faire disparaitre la ligne ''nouveaux paquets'', c'est la touche 'f'. Ils sont alors inclus dans leurs catégories respectives.


== Déplacements dans les listes et les paquets ==

À partir de là, la manipulation est très simple et par touche:
* les flèches du clavier pour les déplacements haut/bas/...
* 'entrer' pour valider ou voir à l'intérieur d'une catégorie, ou le détail d'un paquet, etc.
* '+' demande à installer un paquet.
* '-' demande à l'enlever.
* '_' demande à le purger (= enlever aussi les fichiers de configurations).
* 'q' permet de &quot;revenir en arrière&quot;. (Voir plus bas pour plus de détail.)
* 'g' permet de demander à afficher le récapitulatif de ce qui a été demandé &lt;u&gt;avant&lt;/u&gt; lancement des changements.
* 'g' &lt;u&gt;pendant&lt;/u&gt; que l'on est dans le récapitulatif, lance les changements.
* 'Ctrl-T' permet d'accéder au menu ainsi que 'F10'.

Chaque fois que l'on voit &quot;---&quot; devant une ligne c'est que c'est &quot;dépliant&quot; via la touche 'entrer'.
Cela se transforme alors en &quot;--\&quot;.
Il suffit de re-presser 'entrer' à nouveau sur cette ligne pour &quot;replier&quot;.


== Dés/Installation ==

Raccourci pratique: 'U' permet de sélectionner l'ensemble des mise-à-jours disponible (dans l'exemple précédent, ce seraient les 8 paquets de mise-à-jour de sécurité qui seraient alors sélectionnés). Il ne reste alors qu'à presser 'g', vérifier (même par curiosité ;) ), re-presser 'g' et ''&quot;c'est parti !&quot;''.


Après donc un appui sur 'U', mais aussi après avoir sélectionné certains paquets à installer ou désinstaller, on obtiens dans la partie supérieure de la fenêtre, juste au dessus de la zone centrale noire, un récapitulatif rapide des changements en termes de place sur le disque dur, très pratique pour ne pas essayer d'installer plus qu'il n'est capable d'en contenir:

[[Fichier:4.png]]

On a aussi la précision de la taille totale à télécharger, ici 1017ko.

À noter que dans cet exemple c'est une place ''libérée'' qui est montrée car la mise-à-jour installe des paquets plus petits que leurs versions précédents.


Voici donc ce que l'on obtiens en appuyant une première fois sur 'g':

[[Fichier:5.png]]

''Aperçu'' est bien un onglet montrant où l'on est.

les 'i' dans la colonne de gauche signifient que les paquets ont déjà une version d'installée, les 'u' qu'ils ont été choisis pour être mis-à-jour et les 'A' que se sont des mise-à-jours par dépendances (ajoutées automatiquement par aptitude pour régler les dépendances principales et obligatoires).


Particularité intéressante de la touche 'q':
Dans le cas précédent, elle permet de revenir à l'écran '''précédent''', que cela soit le détail d'un paquet ou encore la liste principale des catégories (la première image montrée).
En effet une particularité d'aptitude c'est qu'il permet réellement de naviguer d'un paquet à l'autre, et 'q' permet de revenir en arrière dans cette suite de paquets. &lt;u&gt;Très&lt;/u&gt; pratique dans le cas d'une résolution de multiples dépendances !
Quand on arrive à la base de cette liste, i.e. celle avec les catégorie, 'q' permet de quitter aptitude.


Après la seconde pression sur la touche 'g' (quand on est dans la liste récapitulative des changements), le processus de changements démarre. Si des paquets demandent des paramètres à fournir lors de leur installation, un fenêtre ''debconf'' apparaîtra. Quand c'est fini, il faut appuyer sur la touche 'entrer':

[[Fichier:6.png]]

Quoi ?!? au moins c'est super précis comme descriptif, hein !! :)


== Rentrer dans ce qui fait ''PRO'' :) ==

Vous pouvez encore améliorer aptitude ... si si ... en activant l'affichage du détail du type d'archive pour chaque paquet/version d'un paquet, d'ailleurs cela est prévu (c'est le grand espace vide au centre ;) ).


Pressez la touche 'F10' pour ouvrir le menu, aller sur le menu '''Options''' et choisissez '''Préférences''':

[[Fichier:7.png]]

Ne tremblez pas: c'est facile ! ;)

Comme c'est via un onglet ... Pressez la touche 'q' pour sortir.
Les modifications sont instantanées, pas de sauvegarde à faire.
Mais certaines demandent de redémarrer le logiciel pour s'activer.


=== Affichage additionnel des dépendances ===

Descendez jusqu'à ''Afficher par défaut la zone d'information'':

[[Fichier:8.png]]

Et pressez sur 'espace' pour valider (un X s'affichera).


Cela permet d'avoir ça:

[[Fichier:9.png]]

Les 3 onglets dans la demi-fenêtre du bas.

On passe d'un onglet à l'autre avec la touche 'i' de façon circulaire.
Pour résoudre les dépendances ou même pour s'assurer de ne pas rencontrer de problèmes, etc, les deux onglets &quot;Dépendances liées&quot; et &quot;Pourquoi installé&quot; sont &lt;u&gt;très&lt;/u&gt; utiles.
Ils expliquent les paquets qui vont être installés à cause du paquet sélectionné (celui qui sera surligné dans la fenêtre du haut, non montré dans l'exemple ici) mais aussi, ''pourquoi'' ce paquet a été installé: si par exemple il est lui-même une dépendance d'un autre ou plusieurs paquets.
Ce sont donc les dépendances ascendantes et descendantes qui s'affichent ici.


=== Détail des archives pour chaque paquet/version d'un paquet ===

Toujours dans les Préférences, allez sur ''Format d'affichage pour les vues des paquets'', sur la ligne dessous, pressez 'entrer' et faite la même modification que sur la capture d'écran. C'est-à-dire ajoutez &quot;%t&quot; entre &quot;%p&quot; et &quot;%Z&quot;.
Puis validez avec 'entrer'.

[[Fichier:10.png]]

Dans la demi-fenêtre du bas vous voyez en face de &quot;Défaut&quot; ce qui est d'origine et à &quot;Valeur&quot; ce que vous avez aussi maintenant.


Résultat obtenu avec l'exemple du paquet ''blackbox'':

[[Fichier:11.png]]

La colonne du milieu avec &quot;stable,unsta&quot; précise que la version (0.70.1-2.2 ici) de ce paquet est à la fois présent dans l'archive ''stable'' et ''unstable''.


Et ainsi on a directement le détail de ces dépendances (via 'i'):

[[Fichier:12.png]]


Et si on le sélectionne (avec '+') il passe en vert (indiquant qu'il n'y a pas de problème dans ce cas pour ce paquet) et dans le dernier onglet (toujours avec 'i') on obtiens:

[[Fichier:13.png]]

Ici ksmserver, déjà installé (le 'i' devant son nom), dépend de de kwin OU (= le caractère: '|') de x-window-manager, or on voit que blackbox fournit justement ce dernier ... donc &quot;pas de problème&quot;.


Si il y avait eu un problème, la ligne serait rouge au lieu de verte. Un 'B' pour &quot;broken&quot; (= &quot;cassé&quot; en anglais) serait dans la colonne de gauche. Et le détail du pourquoi serait dans les onglets du bas ainsi que dans le détail du paquet (accessible via 'entrer').


Une fois ce paquet sélectionné pour installation, on obtiens dans l'onglet du milieu (après deux pressions de 'i', c'est cyclique pour rappel):

[[Fichier:14.png]]

Où l'on vois que ce paquet va bien être installé, et divers récapitulatifs d'espaces disques, tailles de fichiers.


Dans l'affichage du détail du paquet on peu aussi y voir le détail pour chaque version de l'archive dans laquelle il se trouve:

[[Fichier:16.png]]

Le 'p' devant les versions indique qu'il n'y a rien de ce paquet, comme s'il avait été purgé, le 'i' qu'il est installé et sa ligne blanche que &quot;tout va bien&quot; pour ce paquet et cette version.


C'est dans cette vue-là que la résolution des dépendances complexes est plus facile car elle permet de les résoudre une à une: si par exemple le paquet juk était en conflit, il serait surligné en rouge. Il suffirait d'y aller dessus et presser 'enter' pour entrer dans celui-ci. Voir dans sa vue en détail pour quelle raison il serait cassé, peut-être à cause d'un paquet autre qui serait lui aussi en conflit de version, etc. Et pour revenir en arrière de cette &quot;chaîne&quot;, c'est 'q', une vue après l'autre, avec le nom de la vue en cours dans le nom de l'onglet du haut à droite (ici c'est donc le détail du paquet &quot;kde-i18n-fr&quot;).


== Problèmes de dépendances ou autres ==

Si il arrive un problème que l'on n'arrive pas à résoudre.
Il est possible de tout annuler en sélectionnant dans le menu '''Actions''' -&gt; '''Annuler les actions en attente'''.

[[Fichier:15.png]]

En bas en rouge: La touche 'e' permet d'examiner certaines offres de résolution automatique de conflit basées sur les préférences d'apt (fichier /etc/apt/preferences) et '!' permet d'appliquer celle qui plaît. '.' et ',' permettant de visualiser une offre après l'autre.


[[Category:Paquets]]</text>
      <sha1>jj59sdvqguotpbds5yubiv65yh8c87w</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Arand263</title>
    <ns>0</ns>
    <id>842</id>
    <revision>
      <id>3430</id>
      <timestamp>2011-08-29T08:48:17Z</timestamp>
      <contributor>
        <username>Arand263</username>
        <id>151</id>
      </contributor>
      <comment>Au service du monde libre...</comment>
      <text xml:space="preserve" bytes="110">Sites web:
 http://arand263.blogspot.com
 http://debinet-sysx.blogspot.com
 http://my.opera.com/arand263/blog/</text>
      <sha1>c0duolux6ack84u255c8ykzf2ef6qgg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3476</id>
      <parentid>3430</parentid>
      <timestamp>2011-09-15T08:24:23Z</timestamp>
      <contributor>
        <username>Arand263</username>
        <id>151</id>
      </contributor>
      <comment>Page blanchie</comment>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Arborescence</title>
    <ns>0</ns>
    <id>565</id>
    <revision>
      <id>2382</id>
      <timestamp>2010-11-24T06:52:36Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « ----  {| width=&quot;100%&quot; |- |  {{General/Modèle | titre = Arborescence | modèle = General/Arborescence | tailleTitre = 120% }}   |} »</comment>
      <text xml:space="preserve" bytes="130">----

{| width=&quot;100%&quot;
|-
| 
{{General/Modèle
| titre = Arborescence
| modèle = General/Arborescence
| tailleTitre = 120%
}} 

|}</text>
      <sha1>5ye0j22dw3b2kbpeks5dt7yq9ch1kcg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3234</id>
      <parentid>2382</parentid>
      <timestamp>2011-08-09T03:59:26Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="129">----

{| width=&quot;100%&quot;
|-
| 
{{General/Modele
| titre = Arborescence
| modèle = General/Arborescence
| tailleTitre = 120%
}} 

|}</text>
      <sha1>edx6a66pcljbmmj9rbfpncsw7s7flsq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Arduino</title>
    <ns>0</ns>
    <id>1191</id>
    <revision>
      <id>4863</id>
      <timestamp>2013-01-05T13:35:13Z</timestamp>
      <contributor>
        <username>Clisam</username>
        <id>251</id>
      </contributor>
      <comment>Page créée avec « = Arduino =  == Introduction == Le système Arduino est un outil pour fabriquer de petits ordinateurs qui peuvent capter et contrôler davantage de choses du monde matéri... »</comment>
      <text xml:space="preserve" bytes="1181">= Arduino =

== Introduction ==
Le système Arduino est un outil pour fabriquer de petits ordinateurs qui peuvent capter et contrôler davantage de choses du monde matériel que votre ordinateur de bureau. C'est une plateforme open-source d'électronique programmée qui est basée sur une simple carte à microcontrôleur (de la famille AVR), et un logiciel, véritable environnement de développement intégré, pour écrire, compiler et transférer le programme vers la carte à microcontrôleur. &lt;br /&gt;
[http://arduino.cc/fr/Main/DebuterIntroduction]: source &lt;br /&gt;

[http://arduino.cc/en/uploads/Main/ArduinoUno_R3_thumb.jpg]


== Installation du logiciel ==

Tout simplementk, dans un terminal en root: 
&lt;code&gt; apt-get install arduino &lt;/code&gt;

== Rendre les ports série du menus accessibles ==

Il faut que l'utilisateur appartienne aux groupes dialout et tty.

&lt;code&gt; usermod -a -G tty Nom_Utilisateur &lt;/code&gt;
&lt;code&gt; usermod -a -G dialout Nom_Utilisateur &lt;/code&gt;

== liens divers ==
[http://arduino.cc/fr]: site arduino (fr) (plus maintenu depuis Sept 2010) &lt;br /&gt;
[http://www.arduino.cc/]: site arduino (en) &lt;br /&gt;
[http://www.mon-club-elec.fr/]: www.mon-club-elec.fr (fr)</text>
      <sha1>28kqm5z8hksm9udmff6592vvycmigh1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4864</id>
      <parentid>4863</parentid>
      <timestamp>2013-01-05T13:38:31Z</timestamp>
      <contributor>
        <username>Clisam</username>
        <id>251</id>
      </contributor>
      <text xml:space="preserve" bytes="1239">= Arduino =

== Introduction ==
Le système Arduino est un outil pour fabriquer de petits ordinateurs qui peuvent capter et contrôler davantage de choses du monde matériel que votre ordinateur de bureau. C'est une plateforme open-source d'électronique programmée qui est basée sur une simple carte à microcontrôleur (de la famille AVR), et un logiciel, véritable environnement de développement intégré, pour écrire, compiler et transférer le programme vers la carte à microcontrôleur. &lt;br /&gt;
[http://arduino.cc/fr/Main/DebuterIntroduction]: source


== Installation du logiciel ==

Tout simplementk, dans un terminal en root: 
&lt;code&gt; apt-get install arduino &lt;/code&gt;

== Rendre les ports série du menus accessibles ==
Pour pouvoir transférer le programme vers la carte, il faut que l'utilisateur puisse sélectionner un port série du menu. Pour cela,
l'utilisateur doit appartenir aux groupes dialout et tty.

&lt;code&gt; usermod -a -G tty Nom_Utilisateur &lt;/code&gt;
&lt;code&gt; usermod -a -G dialout Nom_Utilisateur &lt;/code&gt;

== liens divers ==
[http://arduino.cc/fr]: site arduino (fr) (plus maintenu depuis Sept 2010) &lt;br /&gt;
[http://www.arduino.cc/]: site arduino (en) &lt;br /&gt;
[http://www.mon-club-elec.fr/]: www.mon-club-elec.fr (fr)</text>
      <sha1>oq0bq9zjwyqok2sws1p4d6nohacpkqx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4865</id>
      <parentid>4864</parentid>
      <timestamp>2013-01-05T13:39:18Z</timestamp>
      <contributor>
        <username>Clisam</username>
        <id>251</id>
      </contributor>
      <comment>/* Arduino */</comment>
      <text xml:space="preserve" bytes="1226">== Introduction ==
Le système Arduino est un outil pour fabriquer de petits ordinateurs qui peuvent capter et contrôler davantage de choses du monde matériel que votre ordinateur de bureau. C'est une plateforme open-source d'électronique programmée qui est basée sur une simple carte à microcontrôleur (de la famille AVR), et un logiciel, véritable environnement de développement intégré, pour écrire, compiler et transférer le programme vers la carte à microcontrôleur. &lt;br /&gt;
[http://arduino.cc/fr/Main/DebuterIntroduction]: source


== Installation du logiciel ==

Tout simplementk, dans un terminal en root: 
&lt;code&gt; apt-get install arduino &lt;/code&gt;

== Rendre les ports série du menus accessibles ==
Pour pouvoir transférer le programme vers la carte, il faut que l'utilisateur puisse sélectionner un port série du menu. Pour cela,
l'utilisateur doit appartenir aux groupes dialout et tty.

&lt;code&gt; usermod -a -G tty Nom_Utilisateur &lt;/code&gt;
&lt;code&gt; usermod -a -G dialout Nom_Utilisateur &lt;/code&gt;

== liens divers ==
[http://arduino.cc/fr]: site arduino (fr) (plus maintenu depuis Sept 2010) &lt;br /&gt;
[http://www.arduino.cc/]: site arduino (en) &lt;br /&gt;
[http://www.mon-club-elec.fr/]: www.mon-club-elec.fr (fr)</text>
      <sha1>jjiqubnfo53ri9fujnhac9orlc19dwv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4866</id>
      <parentid>4865</parentid>
      <timestamp>2013-01-05T13:41:38Z</timestamp>
      <contributor>
        <username>Clisam</username>
        <id>251</id>
      </contributor>
      <comment>/* Installation du logiciel */</comment>
      <text xml:space="preserve" bytes="1225">== Introduction ==
Le système Arduino est un outil pour fabriquer de petits ordinateurs qui peuvent capter et contrôler davantage de choses du monde matériel que votre ordinateur de bureau. C'est une plateforme open-source d'électronique programmée qui est basée sur une simple carte à microcontrôleur (de la famille AVR), et un logiciel, véritable environnement de développement intégré, pour écrire, compiler et transférer le programme vers la carte à microcontrôleur. &lt;br /&gt;
[http://arduino.cc/fr/Main/DebuterIntroduction]: source


== Installation du logiciel ==

Tout simplement, dans un terminal en root: 
&lt;code&gt; apt-get install arduino &lt;/code&gt;

== Rendre les ports série du menus accessibles ==
Pour pouvoir transférer le programme vers la carte, il faut que l'utilisateur puisse sélectionner un port série du menu. Pour cela,
l'utilisateur doit appartenir aux groupes dialout et tty.

&lt;code&gt; usermod -a -G tty Nom_Utilisateur &lt;/code&gt;
&lt;code&gt; usermod -a -G dialout Nom_Utilisateur &lt;/code&gt;

== liens divers ==
[http://arduino.cc/fr]: site arduino (fr) (plus maintenu depuis Sept 2010) &lt;br /&gt;
[http://www.arduino.cc/]: site arduino (en) &lt;br /&gt;
[http://www.mon-club-elec.fr/]: www.mon-club-elec.fr (fr)</text>
      <sha1>e58lpbdy0z6r7u3dd0mcsbv0c4mjt92</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4867</id>
      <parentid>4866</parentid>
      <timestamp>2013-01-05T13:46:19Z</timestamp>
      <contributor>
        <username>Clisam</username>
        <id>251</id>
      </contributor>
      <comment>/* Rendre les ports série du menus accessibles */</comment>
      <text xml:space="preserve" bytes="1229">== Introduction ==
Le système Arduino est un outil pour fabriquer de petits ordinateurs qui peuvent capter et contrôler davantage de choses du monde matériel que votre ordinateur de bureau. C'est une plateforme open-source d'électronique programmée qui est basée sur une simple carte à microcontrôleur (de la famille AVR), et un logiciel, véritable environnement de développement intégré, pour écrire, compiler et transférer le programme vers la carte à microcontrôleur. &lt;br /&gt;
[http://arduino.cc/fr/Main/DebuterIntroduction]: source


== Installation du logiciel ==

Tout simplement, dans un terminal en root: 
&lt;code&gt; apt-get install arduino &lt;/code&gt;

== Rendre les ports série du menus accessibles ==
Pour pouvoir transférer le programme vers la carte, il faut que l'utilisateur puisse sélectionner un port série du menu. Pour cela,
l'utilisateur doit appartenir aux groupes dialout et tty.

&lt;code&gt; # usermod -a -G tty Nom_Utilisateur &lt;/code&gt;
&lt;code&gt; # usermod -a -G dialout Nom_Utilisateur &lt;/code&gt;

== liens divers ==
[http://arduino.cc/fr]: site arduino (fr) (plus maintenu depuis Sept 2010) &lt;br /&gt;
[http://www.arduino.cc/]: site arduino (en) &lt;br /&gt;
[http://www.mon-club-elec.fr/]: www.mon-club-elec.fr (fr)</text>
      <sha1>q3m7z5oop0jwayea8olbkt6oqpbv6bu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4868</id>
      <parentid>4867</parentid>
      <timestamp>2013-01-05T13:48:01Z</timestamp>
      <contributor>
        <username>Clisam</username>
        <id>251</id>
      </contributor>
      <comment>/* Rendre les ports série du menus accessibles */</comment>
      <text xml:space="preserve" bytes="1282">== Introduction ==
Le système Arduino est un outil pour fabriquer de petits ordinateurs qui peuvent capter et contrôler davantage de choses du monde matériel que votre ordinateur de bureau. C'est une plateforme open-source d'électronique programmée qui est basée sur une simple carte à microcontrôleur (de la famille AVR), et un logiciel, véritable environnement de développement intégré, pour écrire, compiler et transférer le programme vers la carte à microcontrôleur. &lt;br /&gt;
[http://arduino.cc/fr/Main/DebuterIntroduction]: source


== Installation du logiciel ==

Tout simplement, dans un terminal en root: 
&lt;code&gt; apt-get install arduino &lt;/code&gt;

== Rendre les ports série du menus accessibles ==
Pour pouvoir transférer le programme vers la carte, il faut que l'utilisateur puisse sélectionner un port série du menu. Pour cela,
l'utilisateur doit appartenir aux groupes dialout et tty. En root, taper les commandes suivantes dans un terminal:

&lt;code&gt; usermod -a -G tty Nom_Utilisateur &lt;/code&gt;
&lt;code&gt; usermod -a -G dialout Nom_Utilisateur &lt;/code&gt;

== liens divers ==
[http://arduino.cc/fr]: site arduino (fr) (plus maintenu depuis Sept 2010) &lt;br /&gt;
[http://www.arduino.cc/]: site arduino (en) &lt;br /&gt;
[http://www.mon-club-elec.fr/]: www.mon-club-elec.fr (fr)</text>
      <sha1>5k0nlxjd1p9pm2c4kt0lx2knt398dus</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4869</id>
      <parentid>4868</parentid>
      <timestamp>2013-01-05T13:49:33Z</timestamp>
      <contributor>
        <username>Clisam</username>
        <id>251</id>
      </contributor>
      <comment>/* Rendre les ports série du menus accessibles */</comment>
      <text xml:space="preserve" bytes="1284">== Introduction ==
Le système Arduino est un outil pour fabriquer de petits ordinateurs qui peuvent capter et contrôler davantage de choses du monde matériel que votre ordinateur de bureau. C'est une plateforme open-source d'électronique programmée qui est basée sur une simple carte à microcontrôleur (de la famille AVR), et un logiciel, véritable environnement de développement intégré, pour écrire, compiler et transférer le programme vers la carte à microcontrôleur. &lt;br /&gt;
[http://arduino.cc/fr/Main/DebuterIntroduction]: source


== Installation du logiciel ==

Tout simplement, dans un terminal en root: 
&lt;code&gt; apt-get install arduino &lt;/code&gt;

== Rendre les ports séries du menu accessibles ==
::Pour pouvoir transférer le programme vers la carte, il faut que l'utilisateur puisse sélectionner un port série du menu. Pour cela,
l'utilisateur doit appartenir aux groupes dialout et tty. En root, taper les commandes suivantes dans un terminal:

&lt;code&gt; usermod -a -G tty Nom_Utilisateur &lt;/code&gt;
&lt;code&gt; usermod -a -G dialout Nom_Utilisateur &lt;/code&gt;

== liens divers ==
[http://arduino.cc/fr]: site arduino (fr) (plus maintenu depuis Sept 2010) &lt;br /&gt;
[http://www.arduino.cc/]: site arduino (en) &lt;br /&gt;
[http://www.mon-club-elec.fr/]: www.mon-club-elec.fr (fr)</text>
      <sha1>sbai5wbojlpasw5l0kn5sk1zdgnfgvx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4870</id>
      <parentid>4869</parentid>
      <timestamp>2013-01-05T13:50:23Z</timestamp>
      <contributor>
        <username>Clisam</username>
        <id>251</id>
      </contributor>
      <comment>/* Installation du logiciel */</comment>
      <text xml:space="preserve" bytes="1285">== Introduction ==
Le système Arduino est un outil pour fabriquer de petits ordinateurs qui peuvent capter et contrôler davantage de choses du monde matériel que votre ordinateur de bureau. C'est une plateforme open-source d'électronique programmée qui est basée sur une simple carte à microcontrôleur (de la famille AVR), et un logiciel, véritable environnement de développement intégré, pour écrire, compiler et transférer le programme vers la carte à microcontrôleur. &lt;br /&gt;
[http://arduino.cc/fr/Main/DebuterIntroduction]: source


== Installation du logiciel ==

:Tout simplement, dans un terminal en root: 
&lt;code&gt; apt-get install arduino &lt;/code&gt;

== Rendre les ports séries du menu accessibles ==
::Pour pouvoir transférer le programme vers la carte, il faut que l'utilisateur puisse sélectionner un port série du menu. Pour cela,
l'utilisateur doit appartenir aux groupes dialout et tty. En root, taper les commandes suivantes dans un terminal:

&lt;code&gt; usermod -a -G tty Nom_Utilisateur &lt;/code&gt;
&lt;code&gt; usermod -a -G dialout Nom_Utilisateur &lt;/code&gt;

== liens divers ==
[http://arduino.cc/fr]: site arduino (fr) (plus maintenu depuis Sept 2010) &lt;br /&gt;
[http://www.arduino.cc/]: site arduino (en) &lt;br /&gt;
[http://www.mon-club-elec.fr/]: www.mon-club-elec.fr (fr)</text>
      <sha1>gfd3nqk1j1ez7al6k6yklon6hd9o825</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4871</id>
      <parentid>4870</parentid>
      <timestamp>2013-01-05T13:51:14Z</timestamp>
      <contributor>
        <username>Clisam</username>
        <id>251</id>
      </contributor>
      <comment>/* Rendre les ports séries du menu accessibles */</comment>
      <text xml:space="preserve" bytes="1284">== Introduction ==
Le système Arduino est un outil pour fabriquer de petits ordinateurs qui peuvent capter et contrôler davantage de choses du monde matériel que votre ordinateur de bureau. C'est une plateforme open-source d'électronique programmée qui est basée sur une simple carte à microcontrôleur (de la famille AVR), et un logiciel, véritable environnement de développement intégré, pour écrire, compiler et transférer le programme vers la carte à microcontrôleur. &lt;br /&gt;
[http://arduino.cc/fr/Main/DebuterIntroduction]: source


== Installation du logiciel ==

:Tout simplement, dans un terminal en root: 
&lt;code&gt; apt-get install arduino &lt;/code&gt;

== Rendre les ports séries du menu accessibles ==
:Pour pouvoir transférer le programme vers la carte, il faut que l'utilisateur puisse sélectionner un port série du menu. Pour cela,
l'utilisateur doit appartenir aux groupes dialout et tty. En root, taper les commandes suivantes dans un terminal:

&lt;code&gt; usermod -a -G tty Nom_Utilisateur &lt;/code&gt;
&lt;code&gt; usermod -a -G dialout Nom_Utilisateur &lt;/code&gt;

== liens divers ==
[http://arduino.cc/fr]: site arduino (fr) (plus maintenu depuis Sept 2010) &lt;br /&gt;
[http://www.arduino.cc/]: site arduino (en) &lt;br /&gt;
[http://www.mon-club-elec.fr/]: www.mon-club-elec.fr (fr)</text>
      <sha1>8mol0fhxfjii0xwbf3bun4u6yzdfktq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4872</id>
      <parentid>4871</parentid>
      <timestamp>2013-01-05T13:51:56Z</timestamp>
      <contributor>
        <username>Clisam</username>
        <id>251</id>
      </contributor>
      <comment>/* Introduction */</comment>
      <text xml:space="preserve" bytes="1284">== Introduction ==
:Le système Arduino est un outil pour fabriquer de petits ordinateurs qui peuvent capter et contrôler davantage de choses du monde matériel que votre ordinateur de bureau. C'est une plateforme open-source d'électronique programmée qui est basée sur une simple carte à microcontrôleur (de la famille AVR), et un logiciel, véritable environnement de développement intégré, pour écrire, compiler et transférer le programme vers la carte à microcontrôleur. &lt;br /&gt;
[http://arduino.cc/fr/Main/DebuterIntroduction]: source

== Installation du logiciel ==

:Tout simplement, dans un terminal en root: 
&lt;code&gt; apt-get install arduino &lt;/code&gt;

== Rendre les ports séries du menu accessibles ==
:Pour pouvoir transférer le programme vers la carte, il faut que l'utilisateur puisse sélectionner un port série du menu. Pour cela,
l'utilisateur doit appartenir aux groupes dialout et tty. En root, taper les commandes suivantes dans un terminal:

&lt;code&gt; usermod -a -G tty Nom_Utilisateur &lt;/code&gt;
&lt;code&gt; usermod -a -G dialout Nom_Utilisateur &lt;/code&gt;

== liens divers ==
[http://arduino.cc/fr]: site arduino (fr) (plus maintenu depuis Sept 2010) &lt;br /&gt;
[http://www.arduino.cc/]: site arduino (en) &lt;br /&gt;
[http://www.mon-club-elec.fr/]: www.mon-club-elec.fr (fr)</text>
      <sha1>ea5i27ddqfgw66am3f20dtlb4gz5ujm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4873</id>
      <parentid>4872</parentid>
      <timestamp>2013-01-05T13:53:56Z</timestamp>
      <contributor>
        <username>Clisam</username>
        <id>251</id>
      </contributor>
      <comment>/* Rendre les ports séries du menu accessibles */</comment>
      <text xml:space="preserve" bytes="1284">== Introduction ==
:Le système Arduino est un outil pour fabriquer de petits ordinateurs qui peuvent capter et contrôler davantage de choses du monde matériel que votre ordinateur de bureau. C'est une plateforme open-source d'électronique programmée qui est basée sur une simple carte à microcontrôleur (de la famille AVR), et un logiciel, véritable environnement de développement intégré, pour écrire, compiler et transférer le programme vers la carte à microcontrôleur. &lt;br /&gt;
[http://arduino.cc/fr/Main/DebuterIntroduction]: source

== Installation du logiciel ==

:Tout simplement, dans un terminal en root: 
&lt;code&gt; apt-get install arduino &lt;/code&gt;

== Rendre les ports séries du menu accessibles ==
:Pour pouvoir transférer le programme vers la carte, il faut que l'utilisateur puisse sélectionner un port série du menu. Pour cela, l'utilisateur doit appartenir aux groupes dialout et tty. En root, taper les commandes suivantes dans un terminal:

&lt;code&gt; usermod -a -G tty Nom_Utilisateur &lt;/code&gt;
&lt;code&gt; usermod -a -G dialout Nom_Utilisateur &lt;/code&gt;

== liens divers ==
[http://arduino.cc/fr]: site arduino (fr) (plus maintenu depuis Sept 2010) &lt;br /&gt;
[http://www.arduino.cc/]: site arduino (en) &lt;br /&gt;
[http://www.mon-club-elec.fr/]: www.mon-club-elec.fr (fr)</text>
      <sha1>a4rv89cwd0wzqhpf94l7iv5z9vxej8u</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Arret machine</title>
    <ns>0</ns>
    <id>13</id>
    <revision>
      <id>23</id>
      <timestamp>2010-01-21T14:36:09Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <comment>Page créée avec « {{Sid}}   = Arrêter sa machine. =  L'arrêt du système ne peut être réalisé que sous le compte root.   == Arret complet et propre du système ==   # halt   # shutdown -h… »</comment>
      <text xml:space="preserve" bytes="994">{{Sid}}


= Arrêter sa machine. =

L'arrêt du système ne peut être réalisé que sous le compte root. 

== Arret complet et propre du système ==

 # halt

 # shutdown -h now

 Alt+Syst+o

 # init 0

== Redémarrage du PC ==

 # reboot

 # shutdown -r now

 Alt+Syst+b

 # init 6

En mode mono-utilisateur (Attention, arrêt brutal !) :
 # poweroff -i -f

La combinaison Ctrl+Alt+Suppr si connue des utilisateurs de Windows fonctionne aussi !

Notez que la touche de mise hors tension est nommée XF86PowerOff . Vous pouvez donc la configurer avec votre gestionnaire favori pour exécuter la commande souhaitée.

== Vider la mémoire tampon et vérifier l'écriture des disques ==
 # sync

 Alt+Syst+s

== Remonter les systèmes de fichiers en lecture seule ==

 Alt+Syst+u


== Fermer sa session ==

 # logout

 # exit

2ème alternative (termine le shell courant y compris le shell de connection) :

 Ctrl+d

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:17 (UTC)

[[Category:Commandes]]</text>
      <sha1>3yp7izfhe2avbdbqo7qc5l4v7afh7fq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>87</id>
      <parentid>23</parentid>
      <timestamp>2010-01-22T07:17:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="1689">{{Sid}}

= Arrêter sa machine. =

L'arrêt du système ne peut être réalisé que sous le compte root. 

== Arret complet et propre du système ==

 '''# shutdown -h now'''

 '''Alt+Syst+o'''

 '''# init 0'''

 '''# halt'''

Cette dernière commande ''serait'' un peu plus &quot;brutale&quot; que les autres. Mais à en croire la page de man, &quot;If halt or reboot is called when the system is not in runlevel 0 or 6, in other words when it's running normally, shutdown will be invoked instead&quot;. En fait, la commande halt ne fait qu'appeler shutdown.

== Redémarrage du PC ==

 '''# reboot'''

 '''# shutdown -r now'''

 '''Alt+Syst+b'''

 '''# init 6'''

En mode mono-utilisateur (Attention, arrêt brutal !) :
 '''# poweroff -i -f'''

C'est l'option -f qui rend cette commande brutale (page de &quot;man&quot;) : -f Force halt or reboot, don't call shutdown(8).

La combinaison '''Ctrl+Alt+Suppr''' si connue des utilisateurs de Windows fonctionne aussi !

Notez que la touche de mise hors tension est nommée XF86PowerOff . Vous pouvez donc la configurer avec votre gestionnaire favori pour exécuter la commande souhaitée.

== Vider la mémoire tampon et vérifier l'écriture des disques ==

 '''# sync'''

 '''Alt+Syst+s'''

== Remonter les systèmes de fichiers en lecture seule ==

 '''Alt+Syst+u'''


== Fermer sa session ==

 '''# logout'''

 '''# exit'''

2ème alternative (termine le shell courant y compris le shell de connection) :

 '''Ctrl+d'''

Vous pouvez vous référer à [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=3021&amp;start=0 cette discussion] sur le forum pour quelques information supplémentaires.

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:17 (UTC)

[[Category:Commandes]]</text>
      <sha1>leq3m9cnl3d6jf3asnut9bv5tv0vk1o</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>96</id>
      <parentid>87</parentid>
      <timestamp>2010-01-22T09:29:05Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="1710">{{Sid}}

= Arrêter sa machine =

L'arrêt du système ne peut être réalisé que sous le compte root. 

== Arret complet du système ==
=== Arret propre ===
 '''# shutdown -h now'''

 '''# init 0'''

=== Arret brutal ===

 '''Alt+Syst+o'''

 '''# halt'''

'''NB''': halt ''serait'' un peu plus &quot;brutale&quot; que les autres. Mais à en croire la page de man, &quot;If halt or reboot is called when the system is not in runlevel 0 or 6, in other words when it's running normally, shutdown will be invoked instead&quot;. En fait, la commande halt ne fait qu'appeler shutdown.

== Redémarrage du PC ==

 '''# reboot'''

 '''# shutdown -r now'''

 '''Alt+Syst+b'''

 '''# init 6'''

En mode mono-utilisateur (Attention, arrêt brutal !) :
 '''# poweroff -i -f'''

C'est l'option -f qui rend cette commande brutale (page de &quot;man&quot;) : -f Force halt or reboot, don't call shutdown(8).

La combinaison '''Ctrl+Alt+Suppr''' si connue des utilisateurs de Windows fonctionne aussi !

Notez que la touche de mise hors tension est nommée XF86PowerOff . Vous pouvez donc la configurer avec votre gestionnaire favori pour exécuter la commande souhaitée.

== Vider la mémoire tampon et vérifier l'écriture des disques ==

 '''# sync'''

 '''Alt+Syst+s'''

== Remonter les systèmes de fichiers en lecture seule ==

 '''Alt+Syst+u'''


== Fermer sa session ==

 '''# logout'''

 '''# exit'''

2ème alternative (termine le shell courant y compris le shell de connection) :

 '''Ctrl+d'''

Vous pouvez vous référer à [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=3021&amp;start=0 cette discussion] sur le forum pour quelques information supplémentaires.

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:17 (UTC)

[[Category:Commandes]]</text>
      <sha1>0svz2b12qdwpuazvrqxet46p3pxfitq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>101</id>
      <parentid>96</parentid>
      <timestamp>2010-01-22T11:12:47Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="1764">{{Sid}}

= Arrêter sa machine =

L'arrêt du système ne peut être réalisé que sous le compte root. 

== Arret complet du système ==
=== Arret propre ===
 '''# shutdown -h now'''

 '''# init 0'''

=== Arret brutal ===

 '''Alt+Syst+o'''

 '''# halt'''

'''NB''': La méthode halt ''serait'' un peu plus &quot;brutale&quot; que les autres. Mais à en croire la page de man, &quot;If halt or reboot is called when the system is not in runlevel 0 or 6, in other words when it's running normally, shutdown will be invoked instead&quot;. Autrement dit, halt appelle shutdown -h now

== Redémarrage du PC ==
=== Redémarrage propre ===

 '''# shutdown -r now'''

 '''# init 6'''
=== Redémarrage brutal ===

 '''Alt+Syst+b'''

 '''# reboot'''

'''NB''': reboot est soumis à la même controverse que halt, voir plus haut.

En mode mono-utilisateur (Attention, arrêt brutal !) :
 '''# poweroff -i -f'''

C'est l'option -f qui rend cette commande brutale (page de &quot;man&quot;) : -f Force halt or reboot, don't call shutdown(8).

La combinaison '''Ctrl+Alt+Suppr''' si connue des utilisateurs de Windows fonctionne aussi !

Notez que la touche de mise hors tension est nommée XF86PowerOff . Vous pouvez donc la configurer avec votre gestionnaire favori pour exécuter la commande souhaitée.

== Vider la mémoire tampon et vérifier l'écriture des disques ==

 '''# sync'''

 '''Alt+Syst+s'''

== Remonter les systèmes de fichiers en lecture seule ==

 '''Alt+Syst+u'''

== Fermer sa session ==

 '''# logout'''

 '''# exit'''

 '''Ctrl+d'''

Vous pouvez vous référer à [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=3021&amp;start=0 cette discussion] sur le forum pour quelques information supplémentaires.

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:17 (UTC)

[[Category:Commandes]]</text>
      <sha1>l8spz7tgf329rdcyugzr4s3vye0skpl</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>112</id>
      <parentid>101</parentid>
      <timestamp>2010-01-22T18:20:06Z</timestamp>
      <contributor>
        <username>Woj</username>
        <id>7</id>
      </contributor>
      <minor/>
      <comment>/* Arret complet du système */ orthographe &quot;arret&quot; -&gt; &quot;arrêt&quot;</comment>
      <text xml:space="preserve" bytes="1767">{{Sid}}

= Arrêter sa machine =

L'arrêt du système ne peut être réalisé que sous le compte root. 

== Arrêt complet du système ==
=== Arrêt propre ===
 '''# shutdown -h now'''

 '''# init 0'''

=== Arrêt brutal ===

 '''Alt+Syst+o'''

 '''# halt'''

'''NB''': La méthode halt ''serait'' un peu plus &quot;brutale&quot; que les autres. Mais à en croire la page de man, &quot;If halt or reboot is called when the system is not in runlevel 0 or 6, in other words when it's running normally, shutdown will be invoked instead&quot;. Autrement dit, halt appelle shutdown -h now

== Redémarrage du PC ==
=== Redémarrage propre ===

 '''# shutdown -r now'''

 '''# init 6'''
=== Redémarrage brutal ===

 '''Alt+Syst+b'''

 '''# reboot'''

'''NB''': reboot est soumis à la même controverse que halt, voir plus haut.

En mode mono-utilisateur (Attention, arrêt brutal !) :
 '''# poweroff -i -f'''

C'est l'option -f qui rend cette commande brutale (page de &quot;man&quot;) : -f Force halt or reboot, don't call shutdown(8).

La combinaison '''Ctrl+Alt+Suppr''' si connue des utilisateurs de Windows fonctionne aussi !

Notez que la touche de mise hors tension est nommée XF86PowerOff . Vous pouvez donc la configurer avec votre gestionnaire favori pour exécuter la commande souhaitée.

== Vider la mémoire tampon et vérifier l'écriture des disques ==

 '''# sync'''

 '''Alt+Syst+s'''

== Remonter les systèmes de fichiers en lecture seule ==

 '''Alt+Syst+u'''

== Fermer sa session ==

 '''# logout'''

 '''# exit'''

 '''Ctrl+d'''

Vous pouvez vous référer à [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=3021&amp;start=0 cette discussion] sur le forum pour quelques information supplémentaires.

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:17 (UTC)

[[Category:Commandes]]</text>
      <sha1>cvt8lp4ph2k90ffcv4q9acmx9v3k83z</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>146</id>
      <parentid>112</parentid>
      <timestamp>2010-01-23T12:30:36Z</timestamp>
      <contributor>
        <username>Wetaskiwin</username>
        <id>10</id>
      </contributor>
      <text xml:space="preserve" bytes="1768">{{Sid}}

= Arrêter sa machine =

L'arrêt du système ne peut être réalisé que sous le compte root. 

== Arrêt complet du système ==
=== Arrêt propre ===
 '''# shutdown -h now'''

 '''# init 0'''

=== Arrêt brutal ===

 '''Alt+Syst+o'''

 '''# halt'''

'''NB''': La méthode halt ''serait'' un peu plus &quot;brutale&quot; que les autres. Mais à en croire la page de man, &quot;If halt or reboot is called when the system is not in runlevel 0 or 6, in other words when it's running normally, shutdown will be invoked instead&quot;. Autrement dit, halt appelle shutdown -h now

== Redémarrage du PC ==
=== Redémarrage propre ===

 '''# shutdown -r now'''

 '''# init 6'''
=== Redémarrage brutal ===

 '''Alt+Syst+b'''

 '''# reboot'''

'''NB''': reboot est soumis à la même controverse que halt, voir plus haut.

En mode mono-utilisateur (Attention, arrêt brutal !) :
 '''# poweroff -i -f'''

C'est l'option -f qui rend cette commande brutale (page de &quot;man&quot;) : -f Force halt or reboot, don't call shutdown(8).

La combinaison '''Ctrl+Alt+Suppr''' si connue des utilisateurs de Windows fonctionne aussi !

Notez que la touche de mise hors tension est nommée XF86PowerOff . Vous pouvez donc la configurer avec votre gestionnaire favori pour exécuter la commande souhaitée.

== Vider la mémoire tampon et vérifier l'écriture des disques ==

 '''# sync'''

 '''Alt+Syst+s'''

== Remonter les systèmes de fichiers en lecture seule ==

 '''Alt+Syst+u'''

== Fermer sa session ==

 '''# logout'''

 '''# exit'''

 '''Ctrl+d'''

Vous pouvez vous référer à [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=3021&amp;start=0 cette discussion] sur le forum pour quelques informations supplémentaires.

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:17 (UTC)

[[Category:Commandes]]</text>
      <sha1>loco57j37864pjuofofv90tquh1lccb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>481</id>
      <parentid>146</parentid>
      <timestamp>2010-01-29T07:55:46Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1931">{{Sid}}
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

= Arrêter sa machine =

L'arrêt du système ne peut être réalisé que sous le compte root. 

== Arrêt complet du système ==
=== Arrêt propre ===
 '''# shutdown -h now'''

 '''# init 0'''

=== Arrêt brutal ===

 '''Alt+Syst+o'''

 '''# halt'''

'''NB''': La méthode halt ''serait'' un peu plus &quot;brutale&quot; que les autres. Mais à en croire la page de man, &quot;If halt or reboot is called when the system is not in runlevel 0 or 6, in other words when it's running normally, shutdown will be invoked instead&quot;. Autrement dit, halt appelle shutdown -h now

== Redémarrage du PC ==
=== Redémarrage propre ===

 '''# shutdown -r now'''

 '''# init 6'''
=== Redémarrage brutal ===

 '''Alt+Syst+b'''

 '''# reboot'''

'''NB''': reboot est soumis à la même controverse que halt, voir plus haut.

En mode mono-utilisateur (Attention, arrêt brutal !) :
 '''# poweroff -i -f'''

C'est l'option -f qui rend cette commande brutale (page de &quot;man&quot;) : -f Force halt or reboot, don't call shutdown(8).

La combinaison '''Ctrl+Alt+Suppr''' si connue des utilisateurs de Windows fonctionne aussi !

Notez que la touche de mise hors tension est nommée XF86PowerOff . Vous pouvez donc la configurer avec votre gestionnaire favori pour exécuter la commande souhaitée.

== Vider la mémoire tampon et vérifier l'écriture des disques ==

 '''# sync'''

 '''Alt+Syst+s'''

== Remonter les systèmes de fichiers en lecture seule ==

 '''Alt+Syst+u'''

== Fermer sa session ==

 '''# logout'''

 '''# exit'''

 '''Ctrl+d'''

Vous pouvez vous référer à [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=3021&amp;start=0 cette discussion] sur le forum pour quelques informations supplémentaires.

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:17 (UTC)

[[Category:Commandes]]</text>
      <sha1>bgpikfy0ynzkou4pa4pwhe31p5gim0u</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1075</id>
      <parentid>481</parentid>
      <timestamp>2010-02-11T08:32:43Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1939">{{Sid}}
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

= Arrêter sa machine =

L'arrêt du système ne peut être réalisé que sous le compte root. 

== Arrêt complet du système ==
=== Arrêt propre ===
 '''# shutdown -h now'''

 '''# init 0'''

=== Arrêt brutal ===

 '''Alt+Syst+o'''

 '''# halt'''

'''NB''': La méthode halt ''serait'' un peu plus &quot;brutale&quot; que les autres. Mais à en croire la page de man, &quot;If halt or reboot is called when the system is not in runlevel 0 or 6, in other words when it's running normally, shutdown will be invoked instead&quot;. Autrement dit, halt appelle shutdown -h now

== Redémarrage du PC ==
=== Redémarrage propre ===

 '''# shutdown -r now'''

 '''# init 6'''
=== Redémarrage brutal ===

 '''Alt+Syst+b'''

 '''# reboot'''

'''NB''': reboot est soumis à la même controverse que halt, voir plus haut.

En mode mono-utilisateur (Attention, arrêt brutal !) :
 '''# poweroff -i -f'''

C'est l'option -f qui rend cette commande brutale (page de &quot;man&quot;) : -f Force halt or reboot, don't call shutdown(8).

La combinaison '''Ctrl+Alt+Suppr''' si connue des utilisateurs de Windows fonctionne aussi !

Notez que la touche de mise hors tension est nommée XF86PowerOff . Vous pouvez donc la configurer avec votre gestionnaire favori pour exécuter la commande souhaitée.

== Vider la mémoire tampon et vérifier l'écriture des disques ==

 '''# sync'''

 '''Alt+Syst+s'''

== Remonter les systèmes de fichiers en lecture seule ==

 '''Alt+Syst+u'''

== Fermer sa session ==

 '''# logout'''

 '''# exit'''

 '''Ctrl+d'''

Vous pouvez vous référer à [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=3021&amp;start=0 cette discussion] sur le forum pour quelques informations supplémentaires.

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:17 (UTC)

[[Category:Commandes de base]]</text>
      <sha1>dyp2eleuzkh3jefvcjycio34bfntkpv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1555</id>
      <parentid>1075</parentid>
      <timestamp>2010-06-05T14:14:11Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <comment>/* Remonter les systèmes de fichiers en lecture seule */</comment>
      <text xml:space="preserve" bytes="1984">{{Sid}}
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

= Arrêter sa machine =

L'arrêt du système ne peut être réalisé que sous le compte root. 

== Arrêt complet du système ==
=== Arrêt propre ===
 '''# shutdown -h now'''

 '''# init 0'''

=== Arrêt brutal ===

 '''Alt+Syst+o'''

 '''# halt'''

'''NB''': La méthode halt ''serait'' un peu plus &quot;brutale&quot; que les autres. Mais à en croire la page de man, &quot;If halt or reboot is called when the system is not in runlevel 0 or 6, in other words when it's running normally, shutdown will be invoked instead&quot;. Autrement dit, halt appelle shutdown -h now

== Redémarrage du PC ==
=== Redémarrage propre ===

 '''# shutdown -r now'''

 '''# init 6'''
=== Redémarrage brutal ===

 '''Alt+Syst+b'''

 '''# reboot'''

'''NB''': reboot est soumis à la même controverse que halt, voir plus haut.

En mode mono-utilisateur (Attention, arrêt brutal !) :
 '''# poweroff -i -f'''

C'est l'option -f qui rend cette commande brutale (page de &quot;man&quot;) : -f Force halt or reboot, don't call shutdown(8).

La combinaison '''Ctrl+Alt+Suppr''' si connue des utilisateurs de Windows fonctionne aussi !

Notez que la touche de mise hors tension est nommée XF86PowerOff . Vous pouvez donc la configurer avec votre gestionnaire favori pour exécuter la commande souhaitée.

== Vider la mémoire tampon et vérifier l'écriture des disques ==

 '''# sync'''

 '''Alt+Syst+s'''

== Remonter les systèmes de fichiers en lecture seule ==

 '''Alt+Syst+u'''

Ne fonctionne pas avec toutes les machines.

== Fermer sa session ==

 '''# logout'''

 '''# exit'''

 '''Ctrl+d'''

Vous pouvez vous référer à [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=3021&amp;start=0 cette discussion] sur le forum pour quelques informations supplémentaires.

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:17 (UTC)

[[Category:Commandes de base]]</text>
      <sha1>qdcb7c5riooddmts8ev56aufwg2doz0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1556</id>
      <parentid>1555</parentid>
      <timestamp>2010-06-05T14:15:44Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <comment>/* Vider la mémoire tampon et vérifier l'écriture des disques */</comment>
      <text xml:space="preserve" bytes="2036">{{Sid}}
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

= Arrêter sa machine =

L'arrêt du système ne peut être réalisé que sous le compte root. 

== Arrêt complet du système ==
=== Arrêt propre ===
 '''# shutdown -h now'''

 '''# init 0'''

=== Arrêt brutal ===

 '''Alt+Syst+o'''

 '''# halt'''

'''NB''': La méthode halt ''serait'' un peu plus &quot;brutale&quot; que les autres. Mais à en croire la page de man, &quot;If halt or reboot is called when the system is not in runlevel 0 or 6, in other words when it's running normally, shutdown will be invoked instead&quot;. Autrement dit, halt appelle shutdown -h now

== Redémarrage du PC ==
=== Redémarrage propre ===

 '''# shutdown -r now'''

 '''# init 6'''
=== Redémarrage brutal ===

 '''Alt+Syst+b'''

 '''# reboot'''

'''NB''': reboot est soumis à la même controverse que halt, voir plus haut.

En mode mono-utilisateur (Attention, arrêt brutal !) :
 '''# poweroff -i -f'''

C'est l'option -f qui rend cette commande brutale (page de &quot;man&quot;) : -f Force halt or reboot, don't call shutdown(8).

La combinaison '''Ctrl+Alt+Suppr''' si connue des utilisateurs de Windows fonctionne aussi !

Notez que la touche de mise hors tension est nommée XF86PowerOff . Vous pouvez donc la configurer avec votre gestionnaire favori pour exécuter la commande souhaitée.

== Vider la mémoire tampon et vérifier l'écriture des disques ==

 '''# sync'''

 '''Alt+Syst+s'''

Ne fonctionne pas avec toutes les machines
Ricardo

== Remonter les systèmes de fichiers en lecture seule ==

 '''Alt+Syst+u'''

Ne fonctionne pas avec toutes les machines.

== Fermer sa session ==

 '''# logout'''

 '''# exit'''

 '''Ctrl+d'''

Vous pouvez vous référer à [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=3021&amp;start=0 cette discussion] sur le forum pour quelques informations supplémentaires.

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:17 (UTC)

[[Category:Commandes de base]]</text>
      <sha1>c6itozrdv75fh4gg5dl2cvmy1kpgdlc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1617</id>
      <parentid>1556</parentid>
      <timestamp>2010-07-05T08:03:16Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2070">#REDIRECT [[isalo:Arret_machine]]
{{Sid}}
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

= Arrêter sa machine =

L'arrêt du système ne peut être réalisé que sous le compte root. 

== Arrêt complet du système ==
=== Arrêt propre ===
 '''# shutdown -h now'''

 '''# init 0'''

=== Arrêt brutal ===

 '''Alt+Syst+o'''

 '''# halt'''

'''NB''': La méthode halt ''serait'' un peu plus &quot;brutale&quot; que les autres. Mais à en croire la page de man, &quot;If halt or reboot is called when the system is not in runlevel 0 or 6, in other words when it's running normally, shutdown will be invoked instead&quot;. Autrement dit, halt appelle shutdown -h now

== Redémarrage du PC ==
=== Redémarrage propre ===

 '''# shutdown -r now'''

 '''# init 6'''
=== Redémarrage brutal ===

 '''Alt+Syst+b'''

 '''# reboot'''

'''NB''': reboot est soumis à la même controverse que halt, voir plus haut.

En mode mono-utilisateur (Attention, arrêt brutal !) :
 '''# poweroff -i -f'''

C'est l'option -f qui rend cette commande brutale (page de &quot;man&quot;) : -f Force halt or reboot, don't call shutdown(8).

La combinaison '''Ctrl+Alt+Suppr''' si connue des utilisateurs de Windows fonctionne aussi !

Notez que la touche de mise hors tension est nommée XF86PowerOff . Vous pouvez donc la configurer avec votre gestionnaire favori pour exécuter la commande souhaitée.

== Vider la mémoire tampon et vérifier l'écriture des disques ==

 '''# sync'''

 '''Alt+Syst+s'''

Ne fonctionne pas avec toutes les machines
Ricardo

== Remonter les systèmes de fichiers en lecture seule ==

 '''Alt+Syst+u'''

Ne fonctionne pas avec toutes les machines.

== Fermer sa session ==

 '''# logout'''

 '''# exit'''

 '''Ctrl+d'''

Vous pouvez vous référer à [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=3021&amp;start=0 cette discussion] sur le forum pour quelques informations supplémentaires.

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:17 (UTC)

[[Category:Commandes de base]]</text>
      <sha1>elbeil4mo324kf4ld96qz4jntnzrvyp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1676</id>
      <parentid>1617</parentid>
      <timestamp>2010-07-06T09:22:01Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Annulation des modifications 1617 de [[Special:Contributions/Lol|Lol]] ([[User talk:Lol|discussion]])</comment>
      <text xml:space="preserve" bytes="2036">{{Sid}}
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

= Arrêter sa machine =

L'arrêt du système ne peut être réalisé que sous le compte root. 

== Arrêt complet du système ==
=== Arrêt propre ===
 '''# shutdown -h now'''

 '''# init 0'''

=== Arrêt brutal ===

 '''Alt+Syst+o'''

 '''# halt'''

'''NB''': La méthode halt ''serait'' un peu plus &quot;brutale&quot; que les autres. Mais à en croire la page de man, &quot;If halt or reboot is called when the system is not in runlevel 0 or 6, in other words when it's running normally, shutdown will be invoked instead&quot;. Autrement dit, halt appelle shutdown -h now

== Redémarrage du PC ==
=== Redémarrage propre ===

 '''# shutdown -r now'''

 '''# init 6'''
=== Redémarrage brutal ===

 '''Alt+Syst+b'''

 '''# reboot'''

'''NB''': reboot est soumis à la même controverse que halt, voir plus haut.

En mode mono-utilisateur (Attention, arrêt brutal !) :
 '''# poweroff -i -f'''

C'est l'option -f qui rend cette commande brutale (page de &quot;man&quot;) : -f Force halt or reboot, don't call shutdown(8).

La combinaison '''Ctrl+Alt+Suppr''' si connue des utilisateurs de Windows fonctionne aussi !

Notez que la touche de mise hors tension est nommée XF86PowerOff . Vous pouvez donc la configurer avec votre gestionnaire favori pour exécuter la commande souhaitée.

== Vider la mémoire tampon et vérifier l'écriture des disques ==

 '''# sync'''

 '''Alt+Syst+s'''

Ne fonctionne pas avec toutes les machines
Ricardo

== Remonter les systèmes de fichiers en lecture seule ==

 '''Alt+Syst+u'''

Ne fonctionne pas avec toutes les machines.

== Fermer sa session ==

 '''# logout'''

 '''# exit'''

 '''Ctrl+d'''

Vous pouvez vous référer à [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=3021&amp;start=0 cette discussion] sur le forum pour quelques informations supplémentaires.

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:17 (UTC)

[[Category:Commandes de base]]</text>
      <sha1>c6itozrdv75fh4gg5dl2cvmy1kpgdlc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1926</id>
      <parentid>1676</parentid>
      <timestamp>2010-08-12T09:06:06Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Redémarrage brutal */</comment>
      <text xml:space="preserve" bytes="2075">{{Sid}}
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

= Arrêter sa machine =

L'arrêt du système ne peut être réalisé que sous le compte root. 

== Arrêt complet du système ==
=== Arrêt propre ===
 '''# shutdown -h now'''

 '''# init 0'''

=== Arrêt brutal ===

 '''Alt+Syst+o'''

 '''# halt'''

'''NB''': La méthode halt ''serait'' un peu plus &quot;brutale&quot; que les autres. Mais à en croire la page de man, &quot;If halt or reboot is called when the system is not in runlevel 0 or 6, in other words when it's running normally, shutdown will be invoked instead&quot;. Autrement dit, halt appelle shutdown -h now

== Redémarrage du PC ==
=== Redémarrage propre ===

 '''# shutdown -r now'''

 '''# init 6'''
=== Redémarrage brutal ===

 '''Alt+Syst+b'''

 '''# reboot'''

'''NB''': reboot est soumis à la même controverse que halt, voir plus haut. C'est un lien symbolique
 vers halt ;)

En mode mono-utilisateur (Attention, arrêt brutal !) :
 '''# poweroff -i -f'''

C'est l'option -f qui rend cette commande brutale (page de &quot;man&quot;) : -f Force halt or reboot, don't call shutdown(8).

La combinaison '''Ctrl+Alt+Suppr''' si connue des utilisateurs de Windows fonctionne aussi !

Notez que la touche de mise hors tension est nommée XF86PowerOff . Vous pouvez donc la configurer avec votre gestionnaire favori pour exécuter la commande souhaitée.

== Vider la mémoire tampon et vérifier l'écriture des disques ==

 '''# sync'''

 '''Alt+Syst+s'''

Ne fonctionne pas avec toutes les machines
Ricardo

== Remonter les systèmes de fichiers en lecture seule ==

 '''Alt+Syst+u'''

Ne fonctionne pas avec toutes les machines.

== Fermer sa session ==

 '''# logout'''

 '''# exit'''

 '''Ctrl+d'''

Vous pouvez vous référer à [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=3021&amp;start=0 cette discussion] sur le forum pour quelques informations supplémentaires.

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:17 (UTC)

[[Category:Commandes de base]]</text>
      <sha1>c81t5wvx9xk54mmi3rkei5hy6ygke1j</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1927</id>
      <parentid>1926</parentid>
      <timestamp>2010-08-12T09:10:50Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Redémarrage brutal */</comment>
      <text xml:space="preserve" bytes="2064">{{Sid}}
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

= Arrêter sa machine =

L'arrêt du système ne peut être réalisé que sous le compte root. 

== Arrêt complet du système ==
=== Arrêt propre ===
 '''# shutdown -h now'''

 '''# init 0'''

=== Arrêt brutal ===

 '''Alt+Syst+o'''

 '''# halt'''

'''NB''': La méthode halt ''serait'' un peu plus &quot;brutale&quot; que les autres. Mais à en croire la page de man, &quot;If halt or reboot is called when the system is not in runlevel 0 or 6, in other words when it's running normally, shutdown will be invoked instead&quot;. Autrement dit, halt appelle shutdown -h now

== Redémarrage du PC ==
=== Redémarrage propre ===

 '''# shutdown -r now'''

 '''# init 6'''
=== Redémarrage brutal ===

 '''Alt+Syst+b'''

 '''# reboot'''

'''NB''': reboot (lien symbolique vers halt) est soumis à la même controverse que halt, voir plus haut.

En mode mono-utilisateur (Attention, arrêt brutal !) :
 '''# poweroff -i -f'''

C'est l'option -f qui rend cette commande brutale (page de &quot;man&quot;) : -f Force halt or reboot, don't call shutdown(8).

La combinaison '''Ctrl+Alt+Suppr''' si connue des utilisateurs de Windows fonctionne aussi !

Notez que la touche de mise hors tension est nommée XF86PowerOff . Vous pouvez donc la configurer avec votre gestionnaire favori pour exécuter la commande souhaitée.

== Vider la mémoire tampon et vérifier l'écriture des disques ==

 '''# sync'''

 '''Alt+Syst+s'''

Ne fonctionne pas avec toutes les machines
Ricardo

== Remonter les systèmes de fichiers en lecture seule ==

 '''Alt+Syst+u'''

Ne fonctionne pas avec toutes les machines.

== Fermer sa session ==

 '''# logout'''

 '''# exit'''

 '''Ctrl+d'''

Vous pouvez vous référer à [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=3021&amp;start=0 cette discussion] sur le forum pour quelques informations supplémentaires.

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:17 (UTC)

[[Category:Commandes de base]]</text>
      <sha1>68qxf97l8w4tbq0zctwiv0ut1wfitye</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4102</id>
      <parentid>1927</parentid>
      <timestamp>2012-04-28T08:44:39Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="2095">{{Sid}}
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

= Arrêter sa machine =

L'arrêt du système ne peut être réalisé que sous le compte root. 

== Arrêt complet du système ==
=== Arrêt propre ===
 '''# shutdown -h now'''

 '''# init 0'''

=== Arrêt brutal ===

 '''Alt+Syst+o'''

 '''# halt'''

'''NB''': La méthode halt ''serait'' un peu plus &quot;brutale&quot; que les autres. Mais à en croire la page de man, &quot;If halt or reboot is called when the system is not in runlevel 0 or 6, in other words when it's running normally, shutdown will be invoked instead&quot;. Autrement dit, halt appelle shutdown -h now

== Redémarrage du PC ==
=== Redémarrage propre ===

 '''# shutdown -r now'''

 '''# init 6'''
=== Redémarrage brutal ===

 '''Alt+Syst+b'''

 '''# reboot'''

'''NB''': reboot (lien symbolique vers halt) est soumis à la même controverse que halt, voir plus haut.

En mode mono-utilisateur (Attention, arrêt brutal !) :
 '''# poweroff -i -f'''

C'est l'option -f qui rend cette commande brutale (page de &quot;man&quot;) : -f Force halt or reboot, don't call shutdown(8).

La combinaison '''Ctrl+Alt+Suppr''' si connue des utilisateurs de Windows fonctionne aussi !

Notez que la touche de mise hors tension est nommée XF86PowerOff . Vous pouvez donc la configurer avec votre gestionnaire favori pour exécuter la commande souhaitée.

== Vider la mémoire tampon et vérifier l'écriture des disques ==

 '''# sync'''

 '''Alt+Syst+s'''

Ne fonctionne pas avec toutes les machines
Ricardo

== Remonter les systèmes de fichiers en lecture seule ==

 '''Alt+Syst+u'''

Ne fonctionne pas avec toutes les machines.

== Fermer sa session ==

 '''# logout'''

 '''# exit'''

 '''Ctrl+d'''

Vous pouvez vous référer à [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=3021&amp;start=0 cette discussion] sur le forum pour quelques informations supplémentaires.

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:17 (UTC)

[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>1y44kgp7pxhwkqgxa3uys89gxmzslyh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Astuces diverses en ligne de commande</title>
    <ns>0</ns>
    <id>1225</id>
    <revision>
      <id>5056</id>
      <timestamp>2013-03-16T12:36:36Z</timestamp>
      <contributor>
        <username>Agentsteel</username>
        <id>260</id>
      </contributor>
      <comment>Création de la page, beaucoup plus de contenu va suivre</comment>
      <text xml:space="preserve" bytes="883">Voici quelques commandes &quot;one liners&quot; bien pratiques, classées par thème.

Une commande précédée par # signifie qu'elle doit être entrée en tant qu'utilisateur root (ou en utilisant sudo).



== Clavier/Localisation ==

Définir le clavier français en mode console
&lt;code&gt;loadkeys fr&lt;/code&gt;
(ou fr-pc)

Définir le clavier sous X
&lt;code&gt;setxkbmap fr&lt;/code&gt;

Reconfigurer le clavier pour la console et pour X
&lt;code&gt;# dpkg-reconfigure keyboard-configuration&lt;/code&gt;

Installer les fichiers de localisation
&lt;code&gt;# apt-get install locales&lt;/code&gt;

Reconfigurer la localisation du système
&lt;code&gt;# dpkg-reconfigure locale&lt;/code&gt;

Supprimer les fichiers de localisation inutiles (gain de place disque)
&lt;code&gt;# apt-get install localepurge &amp;&amp; localepurge&lt;/code&gt;






--[[Utilisateur:Agentsteel|Agentsteel]] ([[Discussion utilisateur:Agentsteel|discussion]]) 16 mars 2013 à 13:36 (CET)</text>
      <sha1>snf008m544v2542ddaw57riez3auhy7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5057</id>
      <parentid>5056</parentid>
      <timestamp>2013-03-16T13:18:50Z</timestamp>
      <contributor>
        <username>Agentsteel</username>
        <id>260</id>
      </contributor>
      <comment>ajout contenu</comment>
      <text xml:space="preserve" bytes="2054">Voici quelques commandes &quot;one liners&quot; bien pratiques, classées par thème.

Une commande précédée par # signifie qu'elle doit être entrée en tant qu'utilisateur root (ou en utilisant sudo).



== Clavier/Localisation ==

Définir le clavier français en mode console
&lt;code&gt;loadkeys fr&lt;/code&gt;
(ou fr-pc)

Définir le clavier sous X
&lt;code&gt;setxkbmap fr&lt;/code&gt;

Reconfigurer le clavier pour la console et pour X
&lt;code&gt;# dpkg-reconfigure keyboard-configuration&lt;/code&gt;

Installer les fichiers de localisation
&lt;code&gt;# apt-get install locales&lt;/code&gt;

Reconfigurer la localisation du système
&lt;code&gt;# dpkg-reconfigure locale&lt;/code&gt;

Supprimer les fichiers de localisation inutiles (gain de place disque)
&lt;code&gt;# apt-get install localepurge &amp;&amp; localepurge&lt;/code&gt;


== Console/tty ==

Pages du manuel (&quot;manpages&quot;) en couleur avec most
&lt;code&gt;# apt-get install most &amp;&amp; update-alternatives --config pager&lt;/code&gt;

Supprimer le beep de la console (si on utilise le shell bash)
&lt;code&gt;$ echo &gt;&gt;.inputrc &quot;set bell-style none&quot;&lt;/code&gt;


== X.Org ==

Verrouillage (screen lock) transparent de l'écran avec xlock
&lt;code&gt;# xlock -mode blank -geometry 1x1&lt;/code&gt;


== Réseau ==

Envoyer un message sur les terminaux de tous les utilisateurs connectés avec la commande &quot;wall&quot;
(si vous êtes dans un environnement graphique, KDE par exemple, vous aurez une nouvelle notification graphique)
&lt;code&gt;$ echo &quot;We are shutting down in 1 hour&quot; | wall&lt;/code&gt;


Un serveur web en une ligne (écoute sur le port 8000 et sert les fichiers du répertoire courant)

en python2 :
&lt;code&gt;cd ~/mon_dossier_public &amp;&amp; python -m SimpleHTTPServer&lt;/code&gt;

en python3 :
&lt;code&gt;cd ~/mon_dossier_public &amp;&amp; python3 -m http.server&lt;/code&gt;


== Divers ==

Forcer un fsck au prochain redémarrage du système
&lt;code&gt;# touch /forcefsck&lt;/code&gt;

Trouver les fichiers doublons avec fdupes (bien plus rapide qu'un script bash)
&lt;code&gt;
# apt-get install fdupes
# fdupes -r &lt;dossier&gt;
&lt;/code&gt;




--[[Utilisateur:Agentsteel|Agentsteel]] ([[Discussion utilisateur:Agentsteel|discussion]]) 16 mars 2013 à 13:36 (CET)</text>
      <sha1>g3f1lvqb8a8i191k1ip7dijubamvew0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5059</id>
      <parentid>5057</parentid>
      <timestamp>2013-03-21T19:07:03Z</timestamp>
      <contributor>
        <username>Agentsteel</username>
        <id>260</id>
      </contributor>
      <minor/>
      <comment>/* Console/tty */</comment>
      <text xml:space="preserve" bytes="2055">Voici quelques commandes &quot;one liners&quot; bien pratiques, classées par thème.

Une commande précédée par # signifie qu'elle doit être entrée en tant qu'utilisateur root (ou en utilisant sudo).



== Clavier/Localisation ==

Définir le clavier français en mode console
&lt;code&gt;loadkeys fr&lt;/code&gt;
(ou fr-pc)

Définir le clavier sous X
&lt;code&gt;setxkbmap fr&lt;/code&gt;

Reconfigurer le clavier pour la console et pour X
&lt;code&gt;# dpkg-reconfigure keyboard-configuration&lt;/code&gt;

Installer les fichiers de localisation
&lt;code&gt;# apt-get install locales&lt;/code&gt;

Reconfigurer la localisation du système
&lt;code&gt;# dpkg-reconfigure locale&lt;/code&gt;

Supprimer les fichiers de localisation inutiles (gain de place disque)
&lt;code&gt;# apt-get install localepurge &amp;&amp; localepurge&lt;/code&gt;


== Console/tty ==

Pages du manuel (&quot;manpages&quot;) en couleur avec most
&lt;code&gt;# apt-get install most &amp;&amp; update-alternatives --config pager&lt;/code&gt;

Supprimer le beep de la console (si on utilise le shell bash)
&lt;code&gt;$ echo &gt;&gt;~/.inputrc &quot;set bell-style none&quot;&lt;/code&gt;

== X.Org ==

Verrouillage (screen lock) transparent de l'écran avec xlock
&lt;code&gt;# xlock -mode blank -geometry 1x1&lt;/code&gt;


== Réseau ==

Envoyer un message sur les terminaux de tous les utilisateurs connectés avec la commande &quot;wall&quot;
(si vous êtes dans un environnement graphique, KDE par exemple, vous aurez une nouvelle notification graphique)
&lt;code&gt;$ echo &quot;We are shutting down in 1 hour&quot; | wall&lt;/code&gt;


Un serveur web en une ligne (écoute sur le port 8000 et sert les fichiers du répertoire courant)

en python2 :
&lt;code&gt;cd ~/mon_dossier_public &amp;&amp; python -m SimpleHTTPServer&lt;/code&gt;

en python3 :
&lt;code&gt;cd ~/mon_dossier_public &amp;&amp; python3 -m http.server&lt;/code&gt;


== Divers ==

Forcer un fsck au prochain redémarrage du système
&lt;code&gt;# touch /forcefsck&lt;/code&gt;

Trouver les fichiers doublons avec fdupes (bien plus rapide qu'un script bash)
&lt;code&gt;
# apt-get install fdupes
# fdupes -r &lt;dossier&gt;
&lt;/code&gt;




--[[Utilisateur:Agentsteel|Agentsteel]] ([[Discussion utilisateur:Agentsteel|discussion]]) 16 mars 2013 à 13:36 (CET)</text>
      <sha1>ie8ccivug2e49ii16p5020xo8wratpq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5365</id>
      <parentid>5059</parentid>
      <timestamp>2013-08-28T00:45:47Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Console/tty */ MàJ cmd activ/désactiv Beep Terminal</comment>
      <text xml:space="preserve" bytes="2318">Voici quelques commandes &quot;one liners&quot; bien pratiques, classées par thème.

Une commande précédée par # signifie qu'elle doit être entrée en tant qu'utilisateur root (ou en utilisant sudo).



== Clavier/Localisation ==

Définir le clavier français en mode console
&lt;code&gt;loadkeys fr&lt;/code&gt;
(ou fr-pc)

Définir le clavier sous X
&lt;code&gt;setxkbmap fr&lt;/code&gt;

Reconfigurer le clavier pour la console et pour X
&lt;code&gt;# dpkg-reconfigure keyboard-configuration&lt;/code&gt;

Installer les fichiers de localisation
&lt;code&gt;# apt-get install locales&lt;/code&gt;

Reconfigurer la localisation du système
&lt;code&gt;# dpkg-reconfigure locale&lt;/code&gt;

Supprimer les fichiers de localisation inutiles (gain de place disque)
&lt;code&gt;# apt-get install localepurge &amp;&amp; localepurge&lt;/code&gt;


== Console/tty ==

Pages du manuel (&quot;manpages&quot;) en couleur avec most
&lt;code&gt;# apt-get install most &amp;&amp; update-alternatives --config pager&lt;/code&gt;

Activer les Beeps de la console (si on utilise le shell bash)
&lt;code&gt;$ fichtermrc=&quot;.config/Terminal/terminalrc&quot;;sed -i '/MiscBell/d' $fichtermrc;echo &quot;MiscBell=TRUE&quot; &gt;&gt; $fichtermrc&lt;/code&gt;

DésActiver les Beeps de la console (si on utilise le shell bash)
&lt;code&gt;$ fichtermrc=&quot;.config/Terminal/terminalrc&quot;;sed -i '/MiscBell/d' $fichtermrc;echo &quot;MiscBell=FALSE&quot; &gt;&gt; $fichtermrc&lt;/code&gt;

== X.Org ==

Verrouillage (screen lock) transparent de l'écran avec xlock
&lt;code&gt;# xlock -mode blank -geometry 1x1&lt;/code&gt;


== Réseau ==

Envoyer un message sur les terminaux de tous les utilisateurs connectés avec la commande &quot;wall&quot;
(si vous êtes dans un environnement graphique, KDE par exemple, vous aurez une nouvelle notification graphique)
&lt;code&gt;$ echo &quot;We are shutting down in 1 hour&quot; | wall&lt;/code&gt;


Un serveur web en une ligne (écoute sur le port 8000 et sert les fichiers du répertoire courant)

en python2 :
&lt;code&gt;cd ~/mon_dossier_public &amp;&amp; python -m SimpleHTTPServer&lt;/code&gt;

en python3 :
&lt;code&gt;cd ~/mon_dossier_public &amp;&amp; python3 -m http.server&lt;/code&gt;


== Divers ==

Forcer un fsck au prochain redémarrage du système
&lt;code&gt;# touch /forcefsck&lt;/code&gt;

Trouver les fichiers doublons avec fdupes (bien plus rapide qu'un script bash)
&lt;code&gt;
# apt-get install fdupes
# fdupes -r &lt;dossier&gt;
&lt;/code&gt;




--[[Utilisateur:Agentsteel|Agentsteel]] ([[Discussion utilisateur:Agentsteel|discussion]]) 16 mars 2013 à 13:36 (CET)</text>
      <sha1>pe05bawldgf8ngntk56ohr8imct0i93</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5368</id>
      <parentid>5365</parentid>
      <timestamp>2013-08-28T10:27:17Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <comment>/* Console/tty */ rajouté chemin du dossier perso</comment>
      <text xml:space="preserve" bytes="2322">Voici quelques commandes &quot;one liners&quot; bien pratiques, classées par thème.

Une commande précédée par # signifie qu'elle doit être entrée en tant qu'utilisateur root (ou en utilisant sudo).



== Clavier/Localisation ==

Définir le clavier français en mode console
&lt;code&gt;loadkeys fr&lt;/code&gt;
(ou fr-pc)

Définir le clavier sous X
&lt;code&gt;setxkbmap fr&lt;/code&gt;

Reconfigurer le clavier pour la console et pour X
&lt;code&gt;# dpkg-reconfigure keyboard-configuration&lt;/code&gt;

Installer les fichiers de localisation
&lt;code&gt;# apt-get install locales&lt;/code&gt;

Reconfigurer la localisation du système
&lt;code&gt;# dpkg-reconfigure locale&lt;/code&gt;

Supprimer les fichiers de localisation inutiles (gain de place disque)
&lt;code&gt;# apt-get install localepurge &amp;&amp; localepurge&lt;/code&gt;


== Console/tty ==

Pages du manuel (&quot;manpages&quot;) en couleur avec most
&lt;code&gt;# apt-get install most &amp;&amp; update-alternatives --config pager&lt;/code&gt;

Activer les Beeps de la console (si on utilise le shell bash)
&lt;code&gt;$ fichtermrc=&quot;~/.config/Terminal/terminalrc&quot;;sed -i '/MiscBell/d' $fichtermrc;echo &quot;MiscBell=TRUE&quot; &gt;&gt; $fichtermrc&lt;/code&gt;

DésActiver les Beeps de la console (si on utilise le shell bash)
&lt;code&gt;$ fichtermrc=&quot;~/.config/Terminal/terminalrc&quot;;sed -i '/MiscBell/d' $fichtermrc;echo &quot;MiscBell=FALSE&quot; &gt;&gt; $fichtermrc&lt;/code&gt;

== X.Org ==

Verrouillage (screen lock) transparent de l'écran avec xlock
&lt;code&gt;# xlock -mode blank -geometry 1x1&lt;/code&gt;


== Réseau ==

Envoyer un message sur les terminaux de tous les utilisateurs connectés avec la commande &quot;wall&quot;
(si vous êtes dans un environnement graphique, KDE par exemple, vous aurez une nouvelle notification graphique)
&lt;code&gt;$ echo &quot;We are shutting down in 1 hour&quot; | wall&lt;/code&gt;


Un serveur web en une ligne (écoute sur le port 8000 et sert les fichiers du répertoire courant)

en python2 :
&lt;code&gt;cd ~/mon_dossier_public &amp;&amp; python -m SimpleHTTPServer&lt;/code&gt;

en python3 :
&lt;code&gt;cd ~/mon_dossier_public &amp;&amp; python3 -m http.server&lt;/code&gt;


== Divers ==

Forcer un fsck au prochain redémarrage du système
&lt;code&gt;# touch /forcefsck&lt;/code&gt;

Trouver les fichiers doublons avec fdupes (bien plus rapide qu'un script bash)
&lt;code&gt;
# apt-get install fdupes
# fdupes -r &lt;dossier&gt;
&lt;/code&gt;




--[[Utilisateur:Agentsteel|Agentsteel]] ([[Discussion utilisateur:Agentsteel|discussion]]) 16 mars 2013 à 13:36 (CET)</text>
      <sha1>5e3fns7z54f5gns5oynunp3x5hg80w9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5369</id>
      <parentid>5368</parentid>
      <timestamp>2013-08-28T14:15:54Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="2436">Voici quelques commandes &quot;one liners&quot; bien pratiques, classées par thème.

Une commande précédée par # signifie qu'elle doit être entrée en tant qu'utilisateur root (ou en utilisant sudo).



== Clavier/Localisation ==

Définir le clavier français en mode console
&lt;code&gt;loadkeys fr&lt;/code&gt;
(ou fr-pc)

Définir le clavier sous X
&lt;code&gt;setxkbmap fr&lt;/code&gt;

Reconfigurer le clavier pour la console et pour X
&lt;code&gt;# dpkg-reconfigure keyboard-configuration&lt;/code&gt;

Installer les fichiers de localisation
&lt;code&gt;# apt-get install locales&lt;/code&gt;

Reconfigurer la localisation du système
&lt;code&gt;# dpkg-reconfigure locale&lt;/code&gt;

Supprimer les fichiers de localisation inutiles (gain de place disque)
&lt;code&gt;# apt-get install localepurge &amp;&amp; localepurge&lt;/code&gt;


== Console/tty ==

Pages du manuel (&quot;manpages&quot;) en couleur avec most
&lt;code&gt;# apt-get install most &amp;&amp; update-alternatives --config pager&lt;/code&gt;

Activer le beep de la console (si on utilise le shell bash)
&lt;code&gt;$ fichtermrc=&quot;~/.config/Terminal/terminalrc&quot;;sed -i '/MiscBell/d' $fichtermrc;echo &quot;MiscBell=TRUE&quot; &gt;&gt; $fichtermrc&lt;/code&gt;

Désactiver le beep de la console (si on utilise le shell bash)
&lt;code&gt;$ fichtermrc=&quot;~/.config/Terminal/terminalrc&quot;;sed -i '/MiscBell/d' $fichtermrc;echo &quot;MiscBell=FALSE&quot; &gt;&gt; $fichtermrc&lt;/code&gt;

Supprimer le beep de la console (si on utilise le shell bash)
&lt;code&gt;$ echo &gt;&gt;~/.inputrc &quot;set bell-style none&quot;&lt;/code&gt;

== X.Org ==

Verrouillage (screen lock) transparent de l'écran avec xlock
&lt;code&gt;# xlock -mode blank -geometry 1x1&lt;/code&gt;


== Réseau ==

Envoyer un message sur les terminaux de tous les utilisateurs connectés avec la commande &quot;wall&quot;
(si vous êtes dans un environnement graphique, KDE par exemple, vous aurez une nouvelle notification graphique)
&lt;code&gt;$ echo &quot;We are shutting down in 1 hour&quot; | wall&lt;/code&gt;


Un serveur web en une ligne (écoute sur le port 8000 et sert les fichiers du répertoire courant)

en python2 :
&lt;code&gt;cd ~/mon_dossier_public &amp;&amp; python -m SimpleHTTPServer&lt;/code&gt;

en python3 :
&lt;code&gt;cd ~/mon_dossier_public &amp;&amp; python3 -m http.server&lt;/code&gt;


== Divers ==

Forcer un fsck au prochain redémarrage du système
&lt;code&gt;# touch /forcefsck&lt;/code&gt;

Trouver les fichiers doublons avec fdupes (bien plus rapide qu'un script bash)
&lt;code&gt;
# apt-get install fdupes
# fdupes -r &lt;dossier&gt;
&lt;/code&gt;




--[[Utilisateur:Agentsteel|Agentsteel]] ([[Discussion utilisateur:Agentsteel|discussion]]) 16 mars 2013 à 13:36 (CET)</text>
      <sha1>e85mdz0yf5q32ie0xli4zos7o3uqrm8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5383</id>
      <parentid>5369</parentid>
      <timestamp>2013-08-31T01:11:46Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Console/tty */ simples modification</comment>
      <text xml:space="preserve" bytes="2431">Voici quelques commandes &quot;one liners&quot; bien pratiques, classées par thème.

Une commande précédée par # signifie qu'elle doit être entrée en tant qu'utilisateur root (ou en utilisant sudo).



== Clavier/Localisation ==

Définir le clavier français en mode console
&lt;code&gt;loadkeys fr&lt;/code&gt;
(ou fr-pc)

Définir le clavier sous X
&lt;code&gt;setxkbmap fr&lt;/code&gt;

Reconfigurer le clavier pour la console et pour X
&lt;code&gt;# dpkg-reconfigure keyboard-configuration&lt;/code&gt;

Installer les fichiers de localisation
&lt;code&gt;# apt-get install locales&lt;/code&gt;

Reconfigurer la localisation du système
&lt;code&gt;# dpkg-reconfigure locale&lt;/code&gt;

Supprimer les fichiers de localisation inutiles (gain de place disque)
&lt;code&gt;# apt-get install localepurge &amp;&amp; localepurge&lt;/code&gt;


== Console/tty ==

Pages du manuel (&quot;manpages&quot;) en couleur avec most
&lt;code&gt;# apt-get install most &amp;&amp; update-alternatives --config pager&lt;/code&gt;

Activer le beep de la console (si on utilise le shell bash)
&lt;code&gt;$ fichtermrc=~/.config/Terminal/terminalrc;sed -i '/MiscBell/d' $fichtermrc;echo &quot;MiscBell=TRUE&quot; &gt;&gt; $fichtermrc&lt;/code&gt;

Désactiver le beep de la console (si on utilise le shell bash)
&lt;code&gt;$ fichtermrc=~/.config/Terminal/terminalrc;sed -i '/MiscBell/d' $fichtermrc;echo &quot;MiscBell=FALSE&quot; &gt;&gt; $fichtermrc&lt;/code&gt;

Supprimer le beep de la console (si on utilise le shell bash)
&lt;code&gt;$ echo &gt;~/.inputrc &quot;set bell-style none&quot;&lt;/code&gt;

== X.Org ==

Verrouillage (screen lock) transparent de l'écran avec xlock
&lt;code&gt;# xlock -mode blank -geometry 1x1&lt;/code&gt;


== Réseau ==

Envoyer un message sur les terminaux de tous les utilisateurs connectés avec la commande &quot;wall&quot;
(si vous êtes dans un environnement graphique, KDE par exemple, vous aurez une nouvelle notification graphique)
&lt;code&gt;$ echo &quot;We are shutting down in 1 hour&quot; | wall&lt;/code&gt;


Un serveur web en une ligne (écoute sur le port 8000 et sert les fichiers du répertoire courant)

en python2 :
&lt;code&gt;cd ~/mon_dossier_public &amp;&amp; python -m SimpleHTTPServer&lt;/code&gt;

en python3 :
&lt;code&gt;cd ~/mon_dossier_public &amp;&amp; python3 -m http.server&lt;/code&gt;


== Divers ==

Forcer un fsck au prochain redémarrage du système
&lt;code&gt;# touch /forcefsck&lt;/code&gt;

Trouver les fichiers doublons avec fdupes (bien plus rapide qu'un script bash)
&lt;code&gt;
# apt-get install fdupes
# fdupes -r &lt;dossier&gt;
&lt;/code&gt;




--[[Utilisateur:Agentsteel|Agentsteel]] ([[Discussion utilisateur:Agentsteel|discussion]]) 16 mars 2013 à 13:36 (CET)</text>
      <sha1>815szesmexzpe4iiz9bluazzhqawhfy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5384</id>
      <parentid>5383</parentid>
      <timestamp>2013-09-01T13:11:03Z</timestamp>
      <contributor>
        <username>Agentsteel</username>
        <id>260</id>
      </contributor>
      <minor/>
      <comment>modification xlock &gt; xtrlock</comment>
      <text xml:space="preserve" bytes="2658">Voici quelques commandes &quot;one liners&quot; bien pratiques, classées par thème.

Une commande précédée par # signifie qu'elle doit être entrée en tant qu'utilisateur root (ou en utilisant sudo).



== Clavier/Localisation ==

Définir le clavier français en mode console
&lt;code&gt;loadkeys fr&lt;/code&gt;
(ou fr-pc)

Définir le clavier sous X
&lt;code&gt;setxkbmap fr&lt;/code&gt;

Reconfigurer le clavier pour la console et pour X
&lt;code&gt;# dpkg-reconfigure keyboard-configuration&lt;/code&gt;

Installer les fichiers de localisation
&lt;code&gt;# apt-get install locales&lt;/code&gt;

Reconfigurer la localisation du système
&lt;code&gt;# dpkg-reconfigure locale&lt;/code&gt;

Supprimer les fichiers de localisation inutiles (gain de place disque)
&lt;code&gt;# apt-get install localepurge &amp;&amp; localepurge&lt;/code&gt;


== Console/tty ==

Pages du manuel (&quot;manpages&quot;) en couleur avec most
&lt;code&gt;# apt-get install most &amp;&amp; update-alternatives --config pager&lt;/code&gt;

Activer le beep de la console (si on utilise le shell bash)
&lt;code&gt;$ fichtermrc=~/.config/Terminal/terminalrc;sed -i '/MiscBell/d' $fichtermrc;echo &quot;MiscBell=TRUE&quot; &gt;&gt; $fichtermrc&lt;/code&gt;

Désactiver le beep de la console (si on utilise le shell bash)
&lt;code&gt;$ fichtermrc=~/.config/Terminal/terminalrc;sed -i '/MiscBell/d' $fichtermrc;echo &quot;MiscBell=FALSE&quot; &gt;&gt; $fichtermrc&lt;/code&gt;

Supprimer le beep de la console (si on utilise le shell bash)
&lt;code&gt;$ echo &gt;~/.inputrc &quot;set bell-style none&quot;&lt;/code&gt;

== X.Org ==

Verrouillage (screen lock) transparent de l'écran avec xlock
&lt;code&gt;# xlock -mode blank -geometry 1x1&lt;/code&gt;

Note : xlock semble avoir été supprimé de Debian depuis Wheezy. Il peut être avantageusement remplacé par le programme [http://packages.debian.org/wheezy/xtrlock xtrlock]
&lt;code&gt;# apt-get install xtrlock
$ xtrlock
&lt;/code&gt;


== Réseau ==

Envoyer un message sur les terminaux de tous les utilisateurs connectés avec la commande &quot;wall&quot;
(si vous êtes dans un environnement graphique, KDE par exemple, vous aurez une nouvelle notification graphique)
&lt;code&gt;$ echo &quot;We are shutting down in 1 hour&quot; | wall&lt;/code&gt;


Un serveur web en une ligne (écoute sur le port 8000 et sert les fichiers du répertoire courant)

en python2 :
&lt;code&gt;cd ~/mon_dossier_public &amp;&amp; python -m SimpleHTTPServer&lt;/code&gt;

en python3 :
&lt;code&gt;cd ~/mon_dossier_public &amp;&amp; python3 -m http.server&lt;/code&gt;


== Divers ==

Forcer un fsck au prochain redémarrage du système
&lt;code&gt;# touch /forcefsck&lt;/code&gt;

Trouver les fichiers doublons avec fdupes (bien plus rapide qu'un script bash)
&lt;code&gt;
# apt-get install fdupes
# fdupes -r &lt;dossier&gt;
&lt;/code&gt;




--[[Utilisateur:Agentsteel|Agentsteel]] ([[Discussion utilisateur:Agentsteel|discussion]]) 16 mars 2013 à 13:36 (CET)</text>
      <sha1>hdyplbpkl30v4l6tv0dsyx14cpvo85k</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5393</id>
      <parentid>5384</parentid>
      <timestamp>2013-09-04T00:11:36Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <comment>/* Console/tty */ suppression des astuces de Xterminal</comment>
      <text xml:space="preserve" bytes="2281">Voici quelques commandes &quot;one liners&quot; bien pratiques, classées par thème.

Une commande précédée par # signifie qu'elle doit être entrée en tant qu'utilisateur root (ou en utilisant sudo).



== Clavier/Localisation ==

Définir le clavier français en mode console
&lt;code&gt;loadkeys fr&lt;/code&gt;
(ou fr-pc)

Définir le clavier sous X
&lt;code&gt;setxkbmap fr&lt;/code&gt;

Reconfigurer le clavier pour la console et pour X
&lt;code&gt;# dpkg-reconfigure keyboard-configuration&lt;/code&gt;

Installer les fichiers de localisation
&lt;code&gt;# apt-get install locales&lt;/code&gt;

Reconfigurer la localisation du système
&lt;code&gt;# dpkg-reconfigure locale&lt;/code&gt;

Supprimer les fichiers de localisation inutiles (gain de place disque)
&lt;code&gt;# apt-get install localepurge &amp;&amp; localepurge&lt;/code&gt;


== Console/tty ==

Pages du manuel (&quot;manpages&quot;) en couleur avec most
&lt;code&gt;# apt-get install most &amp;&amp; update-alternatives --config pager&lt;/code&gt;

Supprimer le beep de la console (si on utilise le shell bash)
&lt;code&gt;$ echo &gt;~/.inputrc &quot;set bell-style none&quot;&lt;/code&gt;

== X.Org ==

Verrouillage (screen lock) transparent de l'écran avec xlock
&lt;code&gt;# xlock -mode blank -geometry 1x1&lt;/code&gt;

Note : xlock semble avoir été supprimé de Debian depuis Wheezy. Il peut être avantageusement remplacé par le programme [http://packages.debian.org/wheezy/xtrlock xtrlock]
&lt;code&gt;# apt-get install xtrlock
$ xtrlock
&lt;/code&gt;


== Réseau ==

Envoyer un message sur les terminaux de tous les utilisateurs connectés avec la commande &quot;wall&quot;
(si vous êtes dans un environnement graphique, KDE par exemple, vous aurez une nouvelle notification graphique)
&lt;code&gt;$ echo &quot;We are shutting down in 1 hour&quot; | wall&lt;/code&gt;


Un serveur web en une ligne (écoute sur le port 8000 et sert les fichiers du répertoire courant)

en python2 :
&lt;code&gt;cd ~/mon_dossier_public &amp;&amp; python -m SimpleHTTPServer&lt;/code&gt;

en python3 :
&lt;code&gt;cd ~/mon_dossier_public &amp;&amp; python3 -m http.server&lt;/code&gt;


== Divers ==

Forcer un fsck au prochain redémarrage du système
&lt;code&gt;# touch /forcefsck&lt;/code&gt;

Trouver les fichiers doublons avec fdupes (bien plus rapide qu'un script bash)
&lt;code&gt;
# apt-get install fdupes
# fdupes -r &lt;dossier&gt;
&lt;/code&gt;




--[[Utilisateur:Agentsteel|Agentsteel]] ([[Discussion utilisateur:Agentsteel|discussion]]) 16 mars 2013 à 13:36 (CET)</text>
      <sha1>ddd6iucc2v68pz2saukxxznasgvcxzy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5515</id>
      <parentid>5393</parentid>
      <timestamp>2013-12-24T11:02:36Z</timestamp>
      <contributor>
        <username>Agentsteel</username>
        <id>260</id>
      </contributor>
      <comment>qques ajouts</comment>
      <text xml:space="preserve" bytes="2711">Voici quelques commandes &quot;one liners&quot; bien pratiques, classées par thème.

Une commande précédée par # signifie qu'elle doit être entrée en tant qu'utilisateur root (ou en utilisant sudo).



== Clavier/Localisation ==

Définir le clavier français en mode console
&lt;code&gt;loadkeys fr&lt;/code&gt;
(ou fr-pc)

Définir le clavier sous X
&lt;code&gt;setxkbmap fr&lt;/code&gt;

Reconfigurer le clavier pour la console et pour X
&lt;code&gt;# dpkg-reconfigure keyboard-configuration&lt;/code&gt;

Installer les fichiers de localisation
&lt;code&gt;# apt-get install locales&lt;/code&gt;

Reconfigurer la localisation du système
&lt;code&gt;# dpkg-reconfigure locale&lt;/code&gt;

Supprimer les fichiers de localisation inutiles (gain de place disque)
&lt;code&gt;# apt-get install localepurge &amp;&amp; localepurge&lt;/code&gt;


== Console/tty ==

Pages du manuel (&quot;manpages&quot;) en couleur avec most
&lt;code&gt;# apt-get install most &amp;&amp; update-alternatives --config pager&lt;/code&gt;

Supprimer le beep de la console (si on utilise le shell bash)
&lt;code&gt;$ echo &gt;~/.inputrc &quot;set bell-style none&quot;&lt;/code&gt;


== X.Org ==

Verrouillage (screen lock) transparent de l'écran avec xlock
&lt;code&gt;# xlock -mode blank -geometry 1x1&lt;/code&gt;

Note : xlock semble avoir été supprimé de Debian depuis Wheezy. Il peut être avantageusement remplacé par le programme [http://packages.debian.org/wheezy/xtrlock xtrlock]
&lt;code&gt;# apt-get install xtrlock
$ xtrlock
&lt;/code&gt;


== Réseau ==

Afficher les connexions internet en temps réel (utile pour savoir quel programme se connecte à tel serveur distant, ouvrez Iceweasel/Firefox ou Chromium sans visister aucun site par exemple)
&lt;code&gt;# watch netstat -W&lt;/code&gt;

Envoyer un message sur les terminaux de tous les utilisateurs connectés avec la commande &quot;wall&quot;
(si vous êtes dans un environnement graphique, KDE par exemple, vous aurez une nouvelle notification graphique)
&lt;code&gt;$ echo &quot;We are shutting down in 1 hour&quot; | wall&lt;/code&gt;

Un serveur web en une ligne (écoute sur le port 8000 et sert les fichiers du répertoire courant)

en python2 :
&lt;code&gt;cd ~/mon_dossier_public &amp;&amp; python -m SimpleHTTPServer&lt;/code&gt;

en python3 :
&lt;code&gt;cd ~/mon_dossier_public &amp;&amp; python3 -m http.server&lt;/code&gt;


== Divers ==

Forcer un fsck au prochain redémarrage du système
&lt;code&gt;# touch /forcefsck&lt;/code&gt;

Trouver les fichiers doublons avec fdupes (bien plus rapide qu'un script bash)
&lt;code&gt;
# apt-get install fdupes
# fdupes -r &lt;dossier&gt;
&lt;/code&gt;

Afficher un ou plusieurs fichiers de log en continu
&lt;code&gt;# tail -f /var/log/apache2/*.log&lt;/code&gt;

Encore mieux, avec multitail
&lt;code&gt;# apt-get install multitail
# multitail /var/log/apache2/*.log
&lt;/code&gt;


--[[Utilisateur:Agentsteel|Agentsteel]] ([[Discussion utilisateur:Agentsteel|discussion]]) 16 mars 2013 à 13:36 (CET)</text>
      <sha1>55zgn7zoj7o0cr2v2tc5ihsn6sa1hoq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5728</id>
      <parentid>5515</parentid>
      <timestamp>2014-08-20T04:13:53Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Réseau */ chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="2718">Voici quelques commandes &quot;one liners&quot; bien pratiques, classées par thème.

Une commande précédée par # signifie qu'elle doit être entrée en tant qu'utilisateur root (ou en utilisant sudo).



== Clavier/Localisation ==

Définir le clavier français en mode console
&lt;code&gt;loadkeys fr&lt;/code&gt;
(ou fr-pc)

Définir le clavier sous X
&lt;code&gt;setxkbmap fr&lt;/code&gt;

Reconfigurer le clavier pour la console et pour X
&lt;code&gt;# dpkg-reconfigure keyboard-configuration&lt;/code&gt;

Installer les fichiers de localisation
&lt;code&gt;# apt-get install locales&lt;/code&gt;

Reconfigurer la localisation du système
&lt;code&gt;# dpkg-reconfigure locale&lt;/code&gt;

Supprimer les fichiers de localisation inutiles (gain de place disque)
&lt;code&gt;# apt-get install localepurge &amp;&amp; localepurge&lt;/code&gt;


== Console/tty ==

Pages du manuel (&quot;manpages&quot;) en couleur avec most
&lt;code&gt;# apt-get install most &amp;&amp; update-alternatives --config pager&lt;/code&gt;

Supprimer le beep de la console (si on utilise le shell bash)
&lt;code&gt;$ echo &gt;~/.inputrc &quot;set bell-style none&quot;&lt;/code&gt;


== X.Org ==

Verrouillage (screen lock) transparent de l'écran avec xlock
&lt;code&gt;# xlock -mode blank -geometry 1x1&lt;/code&gt;

Note : xlock semble avoir été supprimé de Debian depuis Wheezy. Il peut être avantageusement remplacé par le programme [http://packages.debian.org/wheezy/xtrlock xtrlock]
&lt;code&gt;# apt-get install xtrlock
$ xtrlock
&lt;/code&gt;


== Réseau ==

Afficher les connexions internet en temps réel (utile pour savoir quel programme se connecte à tel serveur distant, ouvrez Iceweasel/Firefox ou Chromium sans visister aucun site par exemple)
&lt;code&gt;# watch netstat -W&lt;/code&gt;

Envoyer un message sur les terminaux de tous les utilisateurs connectés avec la commande &quot;wall&quot;
(si vous êtes dans un environnement graphique, KDE par exemple, vous aurez une nouvelle notification graphique)
&lt;code&gt;$ echo &quot;We are shutting down in 1 hour&quot; | wall&lt;/code&gt;

Un serveur web en une ligne (écoute sur le port 8000 et sert les fichiers du répertoire courant)

en python2 :
&lt;code&gt;cd ~/mon_répertoire_public &amp;&amp; python -m SimpleHTTPServer&lt;/code&gt;

en python3 :
&lt;code&gt;cd ~/mon_répertoire_public &amp;&amp; python3 -m http.server&lt;/code&gt;

== Divers ==

Forcer un fsck au prochain redémarrage du système
&lt;code&gt;# touch /forcefsck&lt;/code&gt;

Trouver les fichiers doublons avec fdupes (bien plus rapide qu'un script bash)
&lt;code&gt;
# apt-get install fdupes
# fdupes -r &lt;dossier&gt;
&lt;/code&gt;

Afficher un ou plusieurs fichiers de log en continu
&lt;code&gt;# tail -f /var/log/apache2/*.log&lt;/code&gt;

Encore mieux, avec multitail
&lt;code&gt;# apt-get install multitail
# multitail /var/log/apache2/*.log
&lt;/code&gt;


--[[Utilisateur:Agentsteel|Agentsteel]] ([[Discussion utilisateur:Agentsteel|discussion]]) 16 mars 2013 à 13:36 (CET)</text>
      <sha1>52fk8dos5hfu8avmi8t4i5tx5ck5oeo</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Attribut:Action</title>
    <ns>102</ns>
    <id>991</id>
    <revision>
      <id>4113</id>
      <timestamp>2012-04-28T08:56:04Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>Page créée avec « Cette propriété précise les actions effectuées dans l'article comme par exemple : *[[Action::Installation]] *[[Action::Nettoyage]] *[[Action::Configuration]] *[[Action... »</comment>
      <text xml:space="preserve" bytes="414">Cette propriété précise les actions effectuées dans l'article comme par exemple :
*[[Action::Installation]]
*[[Action::Nettoyage]]
*[[Action::Configuration]]
*[[Action::Sauvegarde]]
*[[Action::Back-up]]
*[[Action::Gestion]]
*[[Action::Assignation]]
*[[Action::Création]]
*[[Action::Suppression]]
*[[Action::Remplissage]]

Les valeurs doivent avoir la forme d'un nom (Installation) et non un verbe (Installer).</text>
      <sha1>lylrs5s569fh076bh0ct43z1mn4rsp1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4114</id>
      <parentid>4113</parentid>
      <timestamp>2012-04-28T08:56:29Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="450">Cette propriété précise les actions effectuées dans l'article comme par exemple :
*[[Action::Installation]]
*[[Action::Nettoyage]]
*[[Action::Configuration]]
*[[Action::Sauvegarde]]
*[[Action::Back-up]]
*[[Action::Gestion]]
*[[Action::Assignation]]
*[[Action::Création]]
*[[Action::Suppression]]
*[[Action::Remplissage]]

Les valeurs doivent avoir la forme d'un nom (Installation) et non un verbe (Installer).
Elle est de type [[Has type::Text]]</text>
      <sha1>e9ly4vcm4sjeuhl17pvy3762i2l9gfb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4189</id>
      <parentid>4114</parentid>
      <timestamp>2012-05-05T20:53:01Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="476">Cette propriété précise les actions effectuées dans l'article comme par exemple :
*[[Action::Installation]]
*[[Action::Nettoyage]]
*[[Action::Configuration]]
*[[Action::Sauvegarde]]
*[[Action::Back-up]]
*[[Action::Gestion]]
*[[Action::Assignation]]
*[[Action::Création]]
*[[Action::Suppression]]
*[[Action::Remplissage]]
*[[Action::Redémarrage]]

Les valeurs doivent avoir la forme d'un nom (Installation) et non un verbe (Installer).
Elle est de type [[Has type::Text]]</text>
      <sha1>s3min8nlkcd8jb6y7izpur46ykjjj9n</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4244</id>
      <parentid>4189</parentid>
      <timestamp>2012-05-15T10:46:42Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="477">Cette propriété précise les actions effectuées dans l'article comme par exemple :
*[[Action::Assignation]]
*[[Action::Back-up]]
*[[Action::Configuration]]
*[[Action::Création]]
*[[Action::Gestion]]
*[[Action::Installation]]
*[[Action::Nettoyage]]
*[[Action::Redémarrage]]
*[[Action::Remplissage]]
*[[Action::Sauvegarde]]
*[[Action::Suppression]]


Les valeurs doivent avoir la forme d'un nom (Installation) et non un verbe (Installer).
Elle est de type [[Has type::Text]]</text>
      <sha1>pny2mcv3ga2b1shv5ir2btwdkn6tsip</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4274</id>
      <parentid>4244</parentid>
      <timestamp>2012-05-24T09:30:54Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="432">Cette propriété précise les actions effectuées dans l'article comme par exemple :

*[[Action::Configuration]]
*[[Action::Création]]
*[[Action::Gestion]]
*[[Action::Installation]]
*[[Action::Nettoyage]]
*[[Action::Redémarrage]]
*[[Action::Remplissage]]
*[[Action::Sauvegarde]]
*[[Action::Suppression]]


Les valeurs doivent avoir la forme d'un nom (Installation) et non un verbe (Installer).
Elle est de type [[Has type::Text]]</text>
      <sha1>gl2wxexm2cagfnrh8mcxgmo8iodami3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4321</id>
      <parentid>4274</parentid>
      <timestamp>2012-06-04T19:37:41Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="434">Cette propriété précise les actions effectuées dans l'article comme par exemple :

*[[Action::Configuration]]
*[[Action::Création]]
*[[Action::Gestion]]
*[[Action::Installation]]
*[[Action::Nettoyage]]
*[[Action::Redémarrage]]
*[[Action::Remplissage]]
*[[Action::Sauvegarde]]
*[[Action::Suppression]]


Les valeurs doivent avoir la forme d'un nom (Installation) et non un verbe (Installer).
Elle est de type [[Has type::String]]</text>
      <sha1>nkppigh6rsv3tvabgl7y6om0yfsmd1d</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Attribut:Branche</title>
    <ns>102</ns>
    <id>1012</id>
    <revision>
      <id>4254</id>
      <timestamp>2012-05-18T09:17:06Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>Page créée avec « Cette propriété est de type [[Has type::Text]]. »</comment>
      <text xml:space="preserve" bytes="49">Cette propriété est de type [[Has type::Text]].</text>
      <sha1>ns40w62wrctmby29a8oew183xuz2160</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4255</id>
      <parentid>4254</parentid>
      <timestamp>2012-05-18T09:18:19Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="184">Cette propriété est de type [[Has type::Text]].

Valeurs possibles :
*[[Branche::Stable]]
*[[Branche::testing]]
*[[Branche::Instable]]
*[[Branche::Experimental]]
*[[Branche::Toutes]]</text>
      <sha1>49c6qidwlxghyk9r00qli4fnsnpwyfr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4322</id>
      <parentid>4255</parentid>
      <timestamp>2012-06-04T19:38:20Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="186">Cette propriété est de type [[Has type::String]].

Valeurs possibles :
*[[Branche::Stable]]
*[[Branche::testing]]
*[[Branche::Instable]]
*[[Branche::Experimental]]
*[[Branche::Toutes]]</text>
      <sha1>1mcbyeq95mrevfavc7cx69bujyhtsuh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Attribut:Composant debian</title>
    <ns>102</ns>
    <id>1010</id>
    <revision>
      <id>4251</id>
      <timestamp>2012-05-15T10:54:57Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>Page créée avec « *[[Composant debian::Noyau]] *[[Composant debian::Paquet]] »</comment>
      <text xml:space="preserve" bytes="58">*[[Composant debian::Noyau]]
*[[Composant debian::Paquet]]</text>
      <sha1>roohaylmqxbxi6qerthcsiw7f7sijwb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4258</id>
      <parentid>4251</parentid>
      <timestamp>2012-05-18T09:19:50Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="108">Cett epropriété est de type [[Has type::Text]]

*[[Composant debian::Noyau]]
*[[Composant debian::Paquet]]</text>
      <sha1>283dk80ocqxirqrf55bk9hi4qk21bg6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4325</id>
      <parentid>4258</parentid>
      <timestamp>2012-06-04T19:39:18Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="110">Cett epropriété est de type [[Has type::String]]

*[[Composant debian::Noyau]]
*[[Composant debian::Paquet]]</text>
      <sha1>etvhjahd8tjf7yl4gc3pwd96fa7upcm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Attribut:Connectique</title>
    <ns>102</ns>
    <id>993</id>
    <revision>
      <id>4121</id>
      <timestamp>2012-04-28T09:15:49Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>Page créée avec « Cette propriété est de type [[A le type::Texte]].  Elle définit les types de connexion d'un matériel.  Liste de valeurs possibles :  *[[Connectique::Composite cvbs]] *... »</comment>
      <text xml:space="preserve" bytes="850">Cette propriété est de type [[A le type::Texte]].

Elle définit les types de connexion d'un matériel.

Liste de valeurs possibles :

*[[Connectique::Composite cvbs]]
*[[Connectique::Dvi]]
*[[Connectique::Entrée jack 3.5]]
*[[Connectique::esata]]
*[[Connectique::Ethernet 10/100 base-t]]
*[[Connectique::Ethernet gigabit]]
*[[Connectique::hdmi]]
*[[Connectique::Jtag ]]
*[[Connectique::Lecteur de carte microsd]]
*[[Connectique::Lecteur de carte sd]]
*[[Connectique::Pcie]]
*[[Connectique::Péritel]]
*[[Connectique::Rj45]]
*[[Connectique::Rs232]]
*[[Connectique::Rs485]]
*[[Connectique::Sata]]
*[[Connectique::Série]]
*[[Connectique::Sortie audio numérique coaxiale]]
*[[Connectique::Sortie audio numérique optique]]
*[[Connectique::Sortie jack 3.5]]
*[[Connectique::Usb]]
*[[Connectique::Usb 2.0]]
*[[Connectique::Vga]]
*[[Connectique::Yuv]]</text>
      <sha1>6ctmhohe2efbxxz9a8kcelgcx5rxfxr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4122</id>
      <parentid>4121</parentid>
      <timestamp>2012-04-28T09:16:46Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="849">Cette propriété est de type [[Has type::Texte]].

Elle définit les types de connexion d'un matériel.

Liste de valeurs possibles :

*[[Connectique::Composite cvbs]]
*[[Connectique::Dvi]]
*[[Connectique::Entrée jack 3.5]]
*[[Connectique::esata]]
*[[Connectique::Ethernet 10/100 base-t]]
*[[Connectique::Ethernet gigabit]]
*[[Connectique::hdmi]]
*[[Connectique::Jtag ]]
*[[Connectique::Lecteur de carte microsd]]
*[[Connectique::Lecteur de carte sd]]
*[[Connectique::Pcie]]
*[[Connectique::Péritel]]
*[[Connectique::Rj45]]
*[[Connectique::Rs232]]
*[[Connectique::Rs485]]
*[[Connectique::Sata]]
*[[Connectique::Série]]
*[[Connectique::Sortie audio numérique coaxiale]]
*[[Connectique::Sortie audio numérique optique]]
*[[Connectique::Sortie jack 3.5]]
*[[Connectique::Usb]]
*[[Connectique::Usb 2.0]]
*[[Connectique::Vga]]
*[[Connectique::Yuv]]</text>
      <sha1>bzl0kqma3ne1y32l1kvjqdtt3c86cdj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4123</id>
      <parentid>4122</parentid>
      <timestamp>2012-04-28T09:16:59Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="848">Cette propriété est de type [[Has type::Text]].

Elle définit les types de connexion d'un matériel.

Liste de valeurs possibles :

*[[Connectique::Composite cvbs]]
*[[Connectique::Dvi]]
*[[Connectique::Entrée jack 3.5]]
*[[Connectique::esata]]
*[[Connectique::Ethernet 10/100 base-t]]
*[[Connectique::Ethernet gigabit]]
*[[Connectique::hdmi]]
*[[Connectique::Jtag ]]
*[[Connectique::Lecteur de carte microsd]]
*[[Connectique::Lecteur de carte sd]]
*[[Connectique::Pcie]]
*[[Connectique::Péritel]]
*[[Connectique::Rj45]]
*[[Connectique::Rs232]]
*[[Connectique::Rs485]]
*[[Connectique::Sata]]
*[[Connectique::Série]]
*[[Connectique::Sortie audio numérique coaxiale]]
*[[Connectique::Sortie audio numérique optique]]
*[[Connectique::Sortie jack 3.5]]
*[[Connectique::Usb]]
*[[Connectique::Usb 2.0]]
*[[Connectique::Vga]]
*[[Connectique::Yuv]]</text>
      <sha1>qhhu5dktfa313ts43wrcyal7i41ca6l</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4324</id>
      <parentid>4123</parentid>
      <timestamp>2012-06-04T19:39:10Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="850">Cette propriété est de type [[Has type::String]].

Elle définit les types de connexion d'un matériel.

Liste de valeurs possibles :

*[[Connectique::Composite cvbs]]
*[[Connectique::Dvi]]
*[[Connectique::Entrée jack 3.5]]
*[[Connectique::esata]]
*[[Connectique::Ethernet 10/100 base-t]]
*[[Connectique::Ethernet gigabit]]
*[[Connectique::hdmi]]
*[[Connectique::Jtag ]]
*[[Connectique::Lecteur de carte microsd]]
*[[Connectique::Lecteur de carte sd]]
*[[Connectique::Pcie]]
*[[Connectique::Péritel]]
*[[Connectique::Rj45]]
*[[Connectique::Rs232]]
*[[Connectique::Rs485]]
*[[Connectique::Sata]]
*[[Connectique::Série]]
*[[Connectique::Sortie audio numérique coaxiale]]
*[[Connectique::Sortie audio numérique optique]]
*[[Connectique::Sortie jack 3.5]]
*[[Connectique::Usb]]
*[[Connectique::Usb 2.0]]
*[[Connectique::Vga]]
*[[Connectique::Yuv]]</text>
      <sha1>g7lekod2hb40sweuodp3gjuzi1jz4ik</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Attribut:Domaine</title>
    <ns>102</ns>
    <id>996</id>
    <revision>
      <id>4134</id>
      <timestamp>2012-05-01T08:05:44Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>Page créée avec « Définit les grands domaines: *[[Domaine::Sécurité]] *[[Domaine::Internet]] *[[Domaine::Multimédia]] *[[Domaine::Programmation]] *[[Domaine::Réseau]]  [[Has type::text]] »</comment>
      <text xml:space="preserve" bytes="173">Définit les grands domaines:
*[[Domaine::Sécurité]]
*[[Domaine::Internet]]
*[[Domaine::Multimédia]]
*[[Domaine::Programmation]]
*[[Domaine::Réseau]]

[[Has type::text]]</text>
      <sha1>jky850d73gb3mz8kx4txk5kxe0kabwb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4242</id>
      <parentid>4134</parentid>
      <timestamp>2012-05-15T10:41:15Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="230">Définit les grands domaines:
*[[Domaine::Sécurité]]
*[[Domaine::Internet]]
*[[Domaine::Multimédia]]
*[[Domaine::Programmation]]
*[[Domaine::Réseau]]
*[[Domaine::Matériel et driver]]
*[[Domaine::Logiciel]]

[[Has type::text]]</text>
      <sha1>ppr0q8trsxdkrohfejujj96bvat4lbp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4243</id>
      <parentid>4242</parentid>
      <timestamp>2012-05-15T10:42:06Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="255">Définit les grands domaines du wiki:
*[[Domaine::Sécurité]]
*[[Domaine::Internet]]
*[[Domaine::Multimédia]]
*[[Domaine::Programmation]]
*[[Domaine::Réseau]]
*[[Domaine::Matériel et driver]]
*[[Domaine::Logiciel]]

Elle est de type [[Has type::text]]</text>
      <sha1>b11846s4fhkd73ga2so7re5l2eu0t9l</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Attribut:Environnement graphique</title>
    <ns>102</ns>
    <id>988</id>
    <revision>
      <id>4090</id>
      <timestamp>2012-04-27T15:54:47Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>Page créée avec « *[[Environnement graphique::Xfce]] *[[Environnement graphique::Enlightenment]] *[[Environnement graphique::Gnome]] *[[Environnement graphique::Kde]] »</comment>
      <text xml:space="preserve" bytes="148">*[[Environnement graphique::Xfce]]
*[[Environnement graphique::Enlightenment]]
*[[Environnement graphique::Gnome]]
*[[Environnement graphique::Kde]]</text>
      <sha1>nzm2iphf5cywstmmtwbukmnnzqrvx7m</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4093</id>
      <parentid>4090</parentid>
      <timestamp>2012-04-27T15:57:44Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="189">*[[Environnement graphique::Xfce]]
*[[Environnement graphique::Enlightenment]]
*[[Environnement graphique::Gnome]]
*[[Environnement graphique::Kde]]

Elle est de type : [[Has type::string]]</text>
      <sha1>7znsbd4ew3q80gir08y5s4xplnq7p36</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Attribut:Has type</title>
    <ns>102</ns>
    <id>984</id>
    <revision>
      <id>4044</id>
      <timestamp>2012-04-23T16:01:13Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>Page créée avec « Détermine le type des propriétés (string, page, quantity...) »</comment>
      <text xml:space="preserve" bytes="63">Détermine le type des propriétés (string, page, quantity...)</text>
      <sha1>0pgg0j5bf1yzyn8rcvsm59ay38dmjrc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4259</id>
      <parentid>4044</parentid>
      <timestamp>2012-05-18T09:20:52Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="80">Détermine le type des propriétés (text, page, quantity...)
[[Has type::Text]]</text>
      <sha1>lhwtmrouo5j8j68lkktx67l5fkn8le4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Attribut:Installé sur</title>
    <ns>102</ns>
    <id>990</id>
    <revision>
      <id>4095</id>
      <timestamp>2012-04-27T16:04:00Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>Page créée avec « Précise le support sur lequel debian est installé  *[[Installé sur::Serveur]] *[[Installé sur::Ordinateur de bureau]] *[[Installé sur::Ordinateur portable]] *[[Instal... »</comment>
      <text xml:space="preserve" bytes="273">Précise le support sur lequel debian est installé

*[[Installé sur::Serveur]]
*[[Installé sur::Ordinateur de bureau]]
*[[Installé sur::Ordinateur portable]]
*[[Installé sur::Nas]]
*[[Installé sur::Smartphone]]
*[[Installé sur::Tablette]]
*[[Installé sur::Mini-pc]]</text>
      <sha1>b1eeywxxal2aciwrmf1hdhn5wxtwnn4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4096</id>
      <parentid>4095</parentid>
      <timestamp>2012-04-27T16:04:38Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="332">Cette prorpiété précise le support sur lequel debian est installé

*[[Installé sur::Serveur]]
*[[Installé sur::Ordinateur de bureau]]
*[[Installé sur::Ordinateur portable]]
*[[Installé sur::Nas]]
*[[Installé sur::Smartphone]]
*[[Installé sur::Tablette]]
*[[Installé sur::Mini-pc]]

Elle est de type : [[Has type::string]]</text>
      <sha1>827cek10yw0kn07cig3kpyeokxwoslu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Attribut:Langage de programmation</title>
    <ns>102</ns>
    <id>987</id>
    <revision>
      <id>4088</id>
      <timestamp>2012-04-26T21:52:47Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>Page créée avec « Cette propriéte liste les langages de programmation utilisés pour coder un logiciel, par exemple :  *[[Langage de programmation::Ajax]] *[[Langage de programmation::Bash... »</comment>
      <text xml:space="preserve" bytes="431">Cette propriéte liste les langages de programmation utilisés pour coder un logiciel, par exemple :

*[[Langage de programmation::Ajax]]
*[[Langage de programmation::Bash]]
*[[Langage de programmation::C++]]
*[[Langage de programmation::Html]]
*[[Langage de programmation::Java]]
*[[Langage de programmation::Perl]]
*[[Langage de programmation::Php]]
*[[Langage de programmation::Python]]


Elle est de type : [[Has type::string]]</text>
      <sha1>fzwtz6f1bgf7eids7wjorcqw5x7ksd1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Attribut:Licence</title>
    <ns>102</ns>
    <id>992</id>
    <revision>
      <id>4117</id>
      <timestamp>2012-04-28T09:05:28Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>Page créée avec « Précise la licence du logiciel ou document: *[[Licence::Gpl]] *[[Licence::Propriétaire]] *[[Licence::Cecill]] *[[Licence::CC by]] *[[Licence::CC by-nd]] *[[Licence::CC b... »</comment>
      <text xml:space="preserve" bytes="415">Précise la licence du logiciel ou document:
*[[Licence::Gpl]]
*[[Licence::Propriétaire]]
*[[Licence::Cecill]]
*[[Licence::CC by]]
*[[Licence::CC by-nd]]
*[[Licence::CC by-nc-nd]]
*[[Licence::CC by-nc]]
*[[Licence::CC by-nc-sa]]
*[[Licence::CC by-sa]]

Cette propriété est de type : [[Has type::string]]

Plus d'informations sur les licences [http://creativecommons.fr/licences/les-6-licences/ ]Creative Commons]</text>
      <sha1>s1fll70kxwacpv9lp8soyy11dl83u1a</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4118</id>
      <parentid>4117</parentid>
      <timestamp>2012-04-28T09:05:43Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="414">Précise la licence du logiciel ou document:
*[[Licence::Gpl]]
*[[Licence::Propriétaire]]
*[[Licence::Cecill]]
*[[Licence::CC by]]
*[[Licence::CC by-nd]]
*[[Licence::CC by-nc-nd]]
*[[Licence::CC by-nc]]
*[[Licence::CC by-nc-sa]]
*[[Licence::CC by-sa]]

Cette propriété est de type : [[Has type::string]]

Plus d'informations sur les licences [http://creativecommons.fr/licences/les-6-licences/ Creative Commons]</text>
      <sha1>50fgj2dfnch33wvg6lmbjhclhlytuvf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Attribut:Marque</title>
    <ns>102</ns>
    <id>995</id>
    <revision>
      <id>4132</id>
      <timestamp>2012-05-01T08:01:41Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>Page créée avec « Cette propriété définit la marque d'un matériel/logiciel »</comment>
      <text xml:space="preserve" bytes="60">Cette propriété définit la marque d'un matériel/logiciel</text>
      <sha1>3tf0rtbwsmansno56xara00f1izdde2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Attribut:Matériel</title>
    <ns>102</ns>
    <id>982</id>
    <revision>
      <id>4040</id>
      <timestamp>2012-04-23T15:55:51Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>Page créée avec « Propriété définissant le type de matériel,  Valeurs possibles :  *[[Matériel::Carte réseau]] *[[Matériel::Carte son]] *[[Matériel::Carte vidéo]] *[[Matériel::Cl... »</comment>
      <text xml:space="preserve" bytes="256">Propriété définissant le type de matériel,

Valeurs possibles :

*[[Matériel::Carte réseau]]
*[[Matériel::Carte son]]
*[[Matériel::Carte vidéo]]
*[[Matériel::Clé usb]]
*[[Matériel::Disque dur]]
*[[Matériel::Imprimante]]
*[[Matériel::Scanner]]</text>
      <sha1>ooszwc1w6sd0vn1soiwensrpjejvelb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4041</id>
      <parentid>4040</parentid>
      <timestamp>2012-04-23T15:56:47Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="285">Propriété de type [[Has type::String]] définissant le type de matériel.

Valeurs possibles :

*[[Matériel::Carte réseau]]
*[[Matériel::Carte son]]
*[[Matériel::Carte vidéo]]
*[[Matériel::Clé usb]]
*[[Matériel::Disque dur]]
*[[Matériel::Imprimante]]
*[[Matériel::Scanner]]</text>
      <sha1>btli4emmygzlgdz2r3a6xwzc0w7tlj6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Attribut:Niveau de difficulté</title>
    <ns>102</ns>
    <id>983</id>
    <revision>
      <id>4042</id>
      <timestamp>2012-04-23T15:57:43Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>Page créée avec « Propriété de type [[Has type::String]] définissant el niveau de difficulté d'implémentation. »</comment>
      <text xml:space="preserve" bytes="97">Propriété de type [[Has type::String]] définissant el niveau de difficulté d'implémentation.</text>
      <sha1>pjni9ul5mbsfetv52qqdpb8u201pbli</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4043</id>
      <parentid>4042</parentid>
      <timestamp>2012-04-23T15:59:05Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="279">Propriété de type [[Has type::String]] définissant el niveau de difficulté d'implémentation.

Exemple de valeurs :


*[[Niveau de difficulté::Débutant]]
*[[Niveau de difficulté::Intermédiaire]]
*[[Niveau de difficulté::Expérimenté]]
*[[Niveau de difficulté::Expert]]</text>
      <sha1>8zqgl02hddskp8aymmsjviuujxfzs2e</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Attribut:Paquet</title>
    <ns>102</ns>
    <id>981</id>
    <revision>
      <id>4039</id>
      <timestamp>2012-04-23T15:51:27Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>Page créée avec « Propriété qui a pour valeur les noms des paquets »</comment>
      <text xml:space="preserve" bytes="50">Propriété qui a pour valeur les noms des paquets</text>
      <sha1>j1cwwidiknfjhf398rc9u5xqyh89ypt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Attribut:Protocole</title>
    <ns>102</ns>
    <id>986</id>
    <revision>
      <id>4083</id>
      <timestamp>2012-04-26T08:45:23Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>Page créée avec « Cette propriété définit le(s) protocole(s) évoqué(s) dans l'article.  Exemples de valeurs :  *[Protocole::Bluetooth]] *[Protocole::Ftp]] *[Protocole::http]] *[Protoco... »</comment>
      <text xml:space="preserve" bytes="279">Cette propriété définit le(s) protocole(s) évoqué(s) dans l'article.

Exemples de valeurs :

*[Protocole::Bluetooth]]
*[Protocole::Ftp]]
*[Protocole::http]]
*[Protocole::Ip]]
*[Protocole::Smtp]]
*[Protocole::Tcp]]
*[Protocole::Telnet]]
*[Protocole::Udp]]
*[Protocole::Wifi]]</text>
      <sha1>ij89nx959vdt72me6hjkuzna5p9jvrd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4084</id>
      <parentid>4083</parentid>
      <timestamp>2012-04-26T08:45:49Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="288">Cette propriété définit le(s) protocole(s) évoqué(s) dans l'article.

Exemples de valeurs :

*[[Protocole::Bluetooth]]
*[[Protocole::Ftp]]
*[[Protocole::http]]
*[[Protocole::Ip]]
*[[Protocole::Smtp]]
*[[Protocole::Tcp]]
*[[Protocole::Telnet]]
*[[Protocole::Udp]]
*[[Protocole::Wifi]]</text>
      <sha1>nhoz299id7c50x57ljkiruor1esoit3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4085</id>
      <parentid>4084</parentid>
      <timestamp>2012-04-26T08:46:07Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="315">Cette propriété de type [[Has type::Text]] définit le(s) protocole(s) évoqué(s) dans l'article.

Exemples de valeurs :

*[[Protocole::Bluetooth]]
*[[Protocole::Ftp]]
*[[Protocole::http]]
*[[Protocole::Ip]]
*[[Protocole::Smtp]]
*[[Protocole::Tcp]]
*[[Protocole::Telnet]]
*[[Protocole::Udp]]
*[[Protocole::Wifi]]</text>
      <sha1>0zubuy6iy9zke1qo49diss26jt3v5c1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4323</id>
      <parentid>4085</parentid>
      <timestamp>2012-06-04T19:38:37Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="317">Cette propriété de type [[Has type::String]] définit le(s) protocole(s) évoqué(s) dans l'article.

Exemples de valeurs :

*[[Protocole::Bluetooth]]
*[[Protocole::Ftp]]
*[[Protocole::http]]
*[[Protocole::Ip]]
*[[Protocole::Smtp]]
*[[Protocole::Tcp]]
*[[Protocole::Telnet]]
*[[Protocole::Udp]]
*[[Protocole::Wifi]]</text>
      <sha1>552nuumbcfc0vkge3ha3kkcevuwty6s</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Attribut:Version debian</title>
    <ns>102</ns>
    <id>989</id>
    <revision>
      <id>4091</id>
      <timestamp>2012-04-27T15:57:12Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>Page créée avec « *[[Version debian::Wheezy]] *[[Version debian::Squeeze]] *[[Version debian::Lenny]] *[[Version debian::Etch]] *[[Version debian::Sarge]] *[[Version debian::Woody]] *[[Vers... »</comment>
      <text xml:space="preserve" bytes="244">*[[Version debian::Wheezy]]
*[[Version debian::Squeeze]]
*[[Version debian::Lenny]]
*[[Version debian::Etch]]
*[[Version debian::Sarge]]
*[[Version debian::Woody]]
*[[Version debian::Potato]]
*[[Version debian::Slink]]
*[[Version debian::Hamm]]</text>
      <sha1>5y0bncj90bg4mdm3wc6x5hijt8q3ms9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4092</id>
      <parentid>4091</parentid>
      <timestamp>2012-04-27T15:57:39Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="285">*[[Version debian::Wheezy]]
*[[Version debian::Squeeze]]
*[[Version debian::Lenny]]
*[[Version debian::Etch]]
*[[Version debian::Sarge]]
*[[Version debian::Woody]]
*[[Version debian::Potato]]
*[[Version debian::Slink]]
*[[Version debian::Hamm]]

Elle est de type : [[Has type::string]]</text>
      <sha1>fe80vkiv8wnwgpp2mewli4wxn8gi04h</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4245</id>
      <parentid>4092</parentid>
      <timestamp>2012-05-15T10:50:02Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="399">*[[Version debian::Unstable]]
*[[Version debian::Testing]]
*[[Version debian::Stable]]
*[[Version debian::Wheezy]]
*[[Version debian::Squeeze]]
*[[Version debian::Lenny]]
*[[Version debian::Etch]]
*[[Version debian::Sarge]]
*[[Version debian::Woody]]
*[[Version debian::Potato]]
*[[Version debian::Slink]]
*[[Version debian::Hamm]]
*[[Version debian::Slim]]


Elle est de type : [[Has type::string]]</text>
      <sha1>dinslgw4kqcpd271p7z5sbsbkz4syvo</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4246</id>
      <parentid>4245</parentid>
      <timestamp>2012-05-15T10:51:22Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="538">Cette propriété représente les valeurs des versions debian.
En cas de nom de nouvelle version rajouter sa valeur en dessous de Stable.

*[[Version debian::Unstable]]
*[[Version debian::Testing]]
*[[Version debian::Stable]]
*[[Version debian::Wheezy]]
*[[Version debian::Squeeze]]
*[[Version debian::Lenny]]
*[[Version debian::Etch]]
*[[Version debian::Sarge]]
*[[Version debian::Woody]]
*[[Version debian::Potato]]
*[[Version debian::Slink]]
*[[Version debian::Hamm]]
*[[Version debian::Slim]]


Elle est de type : [[Has type::string]]</text>
      <sha1>k0bxuwihsy1egw2xpd4w8hevb8c2g4e</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4272</id>
      <parentid>4246</parentid>
      <timestamp>2012-05-24T09:28:57Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="563">Cette propriété représente les valeurs des versions debian.
En cas de nom de nouvelle version rajouter sa valeur en dessous de Stable.

*[[Version debian::Unstable]]
*[[Version debian::Testing]]
*[[Version debian::Stable]]
*[[Version debian::Sid]]
*[[Version debian::Wheezy]]
*[[Version debian::Squeeze]]
*[[Version debian::Lenny]]
*[[Version debian::Etch]]
*[[Version debian::Sarge]]
*[[Version debian::Woody]]
*[[Version debian::Potato]]
*[[Version debian::Slink]]
*[[Version debian::Hamm]]
*[[Version debian::Slim]]


Elle est de type : [[Has type::string]]</text>
      <sha1>l1pvrn71e7tfniap06j5bjoegeku2zy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Auto hebergement</title>
    <ns>0</ns>
    <id>453</id>
    <revision>
      <id>1715</id>
      <timestamp>2010-07-26T18:59:51Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <comment>Ebauche à remplir</comment>
      <text xml:space="preserve" bytes="2834">{{Ébauche|la mise en place d'un auto-hébergement}}

L'auto-hébergement consiste à avoir un serveur ( web, mails, ssh, proxy, pare-feu, routeur ... ) chez soi, avec sa propre connexion ADSL ou équivalent.

=== Le Serveur ===

Ce qu'on appelle serveur n'est en fait qu'un ordinateur qui sera dédié ( ou pas ) à sa fonction de serveur, et qui est généralement allumé 24h/24 7j/7  pour délivrer ses pages web ou recevoir ses mails à toute heure.
On préférera généralement un pc basse consomation pour éviter des coûts excessifs en electricité.
On peut évidement mettre seulement les services voulus sur ce serveur, et c'est un de ses avantages.

Un serveur est aussi une application qui tourne en tâche de fond sur l'ordinateur et qui envoie les données au client.

=== Mise en place ===

==== Accès à distance ====
Tout d'abord, il faut savoir quels services délivrera le serveur.
Mettre un accès [[Glossaire#SSH| SSH]] est essentiel pour avoir un accès à distance au serveur.
Pour ce faire, consultez la page dédiée à son installation et à sa configuration: [[SSH]] .

==== Nom de domaine ====
Ensuite, si on veut que le serveur soit accessible depuis internet avec un nom tel que debian-fr.org, il faut soit payer un nom de domaine chez un registar tel [http://gandi.com Gandi] pour une somme aux environs de 12€/an, soit s'inscrire sur un site web qui propose des adresses gratuites du type &quot;debian.nomdusite.com&quot; comme le font [http://no-ip.com| no-ip] et [http://dyndns.com| DynDNS].

==== Rediriger le trafic vers le serveur ====
Par défaut, la passerelle fournie par votre [[Glossaire#FAI| FAI]] ne sait pas à qui transférer les requetes faites pour votre serveur ( web par exemple ) car lorsqu'un pc sur internet va demander &quot;debian.nomdusite.com&quot;, la requete va arriver à la passerelle et non à votre serveur.

Allez sur la configuration de votre passerelle et allez dans une section telle que &quot;port fowarding&quot; ou &quot;transfert de port&quot; puis indiquez le port pour lequel vous souhaitez rediriger les requetes ( 80 pour le web, 22 pour SSH ... ) puis le protocole où vous mettrez &quot;both&quot; si vous ne savez pas et enfin l'adresse ip privée de votre serveur que vous pourrez retrouver grâce à la commande &quot;ifconfig&quot;

Mettez au moins le port SSH le temps du tutoriel pour pouvoir vérifier que votre configuration est bonne.

==== Tester la connexion ====

Maintenant que vous avez votre serveur avec SSH, vous pouvez tenter de voir si la connexion est possible depuis un pc exterieur à votre réseau.

Prenez un autre pc chez vous et tentez la connexion avec cette commande (les noms sont a modifier):

 ssh votrelogin@debian.nomdusite.com

si vous arrivez à vous connecter, votre serveur est opérationnel, il ne reste qu'à installer et configurer les services que vous souhaitez ensuite.</text>
      <sha1>3d3n46z0enlrp9k2y4aay6i807383ao</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1874</id>
      <parentid>1715</parentid>
      <timestamp>2010-08-05T18:33:53Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Le Serveur */</comment>
      <text xml:space="preserve" bytes="2839">{{Ébauche|la mise en place d'un auto-hébergement}}

L'auto-hébergement consiste à avoir un serveur ( web, mails, ssh, proxy, pare-feu, routeur ... ) chez soi, avec sa propre connexion ADSL ou équivalent.

=== Le Serveur ===

Ce qu'on appelle serveur n'est en fait qu'un ordinateur qui sera dédié ( ou pas ) à sa fonction de serveur, et qui est généralement allumé 24h/24 7j/7  pour délivrer ses pages web ou recevoir ses mails à toute heure.
On préférera généralement un pc basse consommation pour éviter des coûts excessifs en électricité.
On peut évidemment mettre seulement les services voulus sur ce serveur, et c'est un de ses avantages.

Un serveur c'est aussi une application qui tourne en tâche de fond sur l'ordinateur et qui envoie les données au client.

=== Mise en place ===

==== Accès à distance ====
Tout d'abord, il faut savoir quels services délivrera le serveur.
Mettre un accès [[Glossaire#SSH| SSH]] est essentiel pour avoir un accès à distance au serveur.
Pour ce faire, consultez la page dédiée à son installation et à sa configuration: [[SSH]] .

==== Nom de domaine ====
Ensuite, si on veut que le serveur soit accessible depuis internet avec un nom tel que debian-fr.org, il faut soit payer un nom de domaine chez un registar tel [http://gandi.com Gandi] pour une somme aux environs de 12€/an, soit s'inscrire sur un site web qui propose des adresses gratuites du type &quot;debian.nomdusite.com&quot; comme le font [http://no-ip.com| no-ip] et [http://dyndns.com| DynDNS].

==== Rediriger le trafic vers le serveur ====
Par défaut, la passerelle fournie par votre [[Glossaire#FAI| FAI]] ne sait pas à qui transférer les requetes faites pour votre serveur ( web par exemple ) car lorsqu'un pc sur internet va demander &quot;debian.nomdusite.com&quot;, la requete va arriver à la passerelle et non à votre serveur.

Allez sur la configuration de votre passerelle et allez dans une section telle que &quot;port fowarding&quot; ou &quot;transfert de port&quot; puis indiquez le port pour lequel vous souhaitez rediriger les requetes ( 80 pour le web, 22 pour SSH ... ) puis le protocole où vous mettrez &quot;both&quot; si vous ne savez pas et enfin l'adresse ip privée de votre serveur que vous pourrez retrouver grâce à la commande &quot;ifconfig&quot;

Mettez au moins le port SSH le temps du tutoriel pour pouvoir vérifier que votre configuration est bonne.

==== Tester la connexion ====

Maintenant que vous avez votre serveur avec SSH, vous pouvez tenter de voir si la connexion est possible depuis un pc exterieur à votre réseau.

Prenez un autre pc chez vous et tentez la connexion avec cette commande (les noms sont a modifier):

 ssh votrelogin@debian.nomdusite.com

si vous arrivez à vous connecter, votre serveur est opérationnel, il ne reste qu'à installer et configurer les services que vous souhaitez ensuite.</text>
      <sha1>4qrjg4dzofqetdixfw0aworqknnr3kb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1875</id>
      <parentid>1874</parentid>
      <timestamp>2010-08-05T18:35:35Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Nom de domaine */</comment>
      <text xml:space="preserve" bytes="2840">{{Ébauche|la mise en place d'un auto-hébergement}}

L'auto-hébergement consiste à avoir un serveur ( web, mails, ssh, proxy, pare-feu, routeur ... ) chez soi, avec sa propre connexion ADSL ou équivalent.

=== Le Serveur ===

Ce qu'on appelle serveur n'est en fait qu'un ordinateur qui sera dédié ( ou pas ) à sa fonction de serveur, et qui est généralement allumé 24h/24 7j/7  pour délivrer ses pages web ou recevoir ses mails à toute heure.
On préférera généralement un pc basse consommation pour éviter des coûts excessifs en électricité.
On peut évidemment mettre seulement les services voulus sur ce serveur, et c'est un de ses avantages.

Un serveur c'est aussi une application qui tourne en tâche de fond sur l'ordinateur et qui envoie les données au client.

=== Mise en place ===

==== Accès à distance ====
Tout d'abord, il faut savoir quels services délivrera le serveur.
Mettre un accès [[Glossaire#SSH| SSH]] est essentiel pour avoir un accès à distance au serveur.
Pour ce faire, consultez la page dédiée à son installation et à sa configuration: [[SSH]] .

==== Nom de domaine ====
Ensuite, si on veut que le serveur soit accessible depuis internet avec un nom tel que debian-fr.org, il faut soit payer un nom de domaine chez un registrar tel [http://gandi.com Gandi] pour une somme aux environs de 12€/an, soit s'inscrire sur un site web qui propose des adresses gratuites du type &quot;debian.nomdusite.com&quot; comme le font [http://no-ip.com| no-ip] et [http://dyndns.com| DynDNS].

==== Rediriger le trafic vers le serveur ====
Par défaut, la passerelle fournie par votre [[Glossaire#FAI| FAI]] ne sait pas à qui transférer les requetes faites pour votre serveur ( web par exemple ) car lorsqu'un pc sur internet va demander &quot;debian.nomdusite.com&quot;, la requete va arriver à la passerelle et non à votre serveur.

Allez sur la configuration de votre passerelle et allez dans une section telle que &quot;port fowarding&quot; ou &quot;transfert de port&quot; puis indiquez le port pour lequel vous souhaitez rediriger les requetes ( 80 pour le web, 22 pour SSH ... ) puis le protocole où vous mettrez &quot;both&quot; si vous ne savez pas et enfin l'adresse ip privée de votre serveur que vous pourrez retrouver grâce à la commande &quot;ifconfig&quot;

Mettez au moins le port SSH le temps du tutoriel pour pouvoir vérifier que votre configuration est bonne.

==== Tester la connexion ====

Maintenant que vous avez votre serveur avec SSH, vous pouvez tenter de voir si la connexion est possible depuis un pc exterieur à votre réseau.

Prenez un autre pc chez vous et tentez la connexion avec cette commande (les noms sont a modifier):

 ssh votrelogin@debian.nomdusite.com

si vous arrivez à vous connecter, votre serveur est opérationnel, il ne reste qu'à installer et configurer les services que vous souhaitez ensuite.</text>
      <sha1>0qr11kmhx0vskhtqr40n4io4u50o39c</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1876</id>
      <parentid>1875</parentid>
      <timestamp>2010-08-05T18:37:16Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Rediriger le trafic vers le serveur */</comment>
      <text xml:space="preserve" bytes="2843">{{Ébauche|la mise en place d'un auto-hébergement}}

L'auto-hébergement consiste à avoir un serveur ( web, mails, ssh, proxy, pare-feu, routeur ... ) chez soi, avec sa propre connexion ADSL ou équivalent.

=== Le Serveur ===

Ce qu'on appelle serveur n'est en fait qu'un ordinateur qui sera dédié ( ou pas ) à sa fonction de serveur, et qui est généralement allumé 24h/24 7j/7  pour délivrer ses pages web ou recevoir ses mails à toute heure.
On préférera généralement un pc basse consommation pour éviter des coûts excessifs en électricité.
On peut évidemment mettre seulement les services voulus sur ce serveur, et c'est un de ses avantages.

Un serveur c'est aussi une application qui tourne en tâche de fond sur l'ordinateur et qui envoie les données au client.

=== Mise en place ===

==== Accès à distance ====
Tout d'abord, il faut savoir quels services délivrera le serveur.
Mettre un accès [[Glossaire#SSH| SSH]] est essentiel pour avoir un accès à distance au serveur.
Pour ce faire, consultez la page dédiée à son installation et à sa configuration: [[SSH]] .

==== Nom de domaine ====
Ensuite, si on veut que le serveur soit accessible depuis internet avec un nom tel que debian-fr.org, il faut soit payer un nom de domaine chez un registrar tel [http://gandi.com Gandi] pour une somme aux environs de 12€/an, soit s'inscrire sur un site web qui propose des adresses gratuites du type &quot;debian.nomdusite.com&quot; comme le font [http://no-ip.com| no-ip] et [http://dyndns.com| DynDNS].

==== Rediriger le trafic vers le serveur ====
Par défaut, la passerelle fournie par votre [[Glossaire#FAI| FAI]] ne sait pas à qui transférer les requêtes faites pour votre serveur ( web par exemple ) car lorsqu'un pc sur internet va demander &quot;debian.nomdusite.com&quot;, la requête va arriver à la passerelle et non à votre serveur.

Allez sur la configuration de votre passerelle et allez dans une section telle que &quot;port fowarding&quot; ou &quot;transfert de port&quot; puis indiquez le port pour lequel vous souhaitez rediriger les requêtes ( 80 pour le web, 22 pour SSH ... ) puis le protocole où vous mettrez &quot;both&quot; si vous ne savez pas et enfin l'adresse ip privée de votre serveur que vous pourrez retrouver grâce à la commande &quot;ifconfig&quot;

Mettez au moins le port SSH le temps du tutoriel pour pouvoir vérifier que votre configuration est bonne.

==== Tester la connexion ====

Maintenant que vous avez votre serveur avec SSH, vous pouvez tenter de voir si la connexion est possible depuis un pc exterieur à votre réseau.

Prenez un autre pc chez vous et tentez la connexion avec cette commande (les noms sont a modifier):

 ssh votrelogin@debian.nomdusite.com

si vous arrivez à vous connecter, votre serveur est opérationnel, il ne reste qu'à installer et configurer les services que vous souhaitez ensuite.</text>
      <sha1>cxej2h9n8p9mzjjvipz7dccydzcaop9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1877</id>
      <parentid>1876</parentid>
      <timestamp>2010-08-05T18:38:29Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Tester la connexion */</comment>
      <text xml:space="preserve" bytes="2845">{{Ébauche|la mise en place d'un auto-hébergement}}

L'auto-hébergement consiste à avoir un serveur ( web, mails, ssh, proxy, pare-feu, routeur ... ) chez soi, avec sa propre connexion ADSL ou équivalent.

=== Le Serveur ===

Ce qu'on appelle serveur n'est en fait qu'un ordinateur qui sera dédié ( ou pas ) à sa fonction de serveur, et qui est généralement allumé 24h/24 7j/7  pour délivrer ses pages web ou recevoir ses mails à toute heure.
On préférera généralement un pc basse consommation pour éviter des coûts excessifs en électricité.
On peut évidemment mettre seulement les services voulus sur ce serveur, et c'est un de ses avantages.

Un serveur c'est aussi une application qui tourne en tâche de fond sur l'ordinateur et qui envoie les données au client.

=== Mise en place ===

==== Accès à distance ====
Tout d'abord, il faut savoir quels services délivrera le serveur.
Mettre un accès [[Glossaire#SSH| SSH]] est essentiel pour avoir un accès à distance au serveur.
Pour ce faire, consultez la page dédiée à son installation et à sa configuration: [[SSH]] .

==== Nom de domaine ====
Ensuite, si on veut que le serveur soit accessible depuis internet avec un nom tel que debian-fr.org, il faut soit payer un nom de domaine chez un registrar tel [http://gandi.com Gandi] pour une somme aux environs de 12€/an, soit s'inscrire sur un site web qui propose des adresses gratuites du type &quot;debian.nomdusite.com&quot; comme le font [http://no-ip.com| no-ip] et [http://dyndns.com| DynDNS].

==== Rediriger le trafic vers le serveur ====
Par défaut, la passerelle fournie par votre [[Glossaire#FAI| FAI]] ne sait pas à qui transférer les requêtes faites pour votre serveur ( web par exemple ) car lorsqu'un pc sur internet va demander &quot;debian.nomdusite.com&quot;, la requête va arriver à la passerelle et non à votre serveur.

Allez sur la configuration de votre passerelle et allez dans une section telle que &quot;port fowarding&quot; ou &quot;transfert de port&quot; puis indiquez le port pour lequel vous souhaitez rediriger les requêtes ( 80 pour le web, 22 pour SSH ... ) puis le protocole où vous mettrez &quot;both&quot; si vous ne savez pas et enfin l'adresse ip privée de votre serveur que vous pourrez retrouver grâce à la commande &quot;ifconfig&quot;

Mettez au moins le port SSH le temps du tutoriel pour pouvoir vérifier que votre configuration est bonne.

==== Tester la connexion ====

Maintenant que vous avez votre serveur avec SSH, vous pouvez tenter de voir si la connexion est possible depuis un pc extérieur à votre réseau.

Prenez un autre pc chez vous et tentez la connexion avec cette commande (les noms sont à modifier):

 ssh votrelogin@debian.nomdusite.com

Si vous arrivez à vous connecter, votre serveur est opérationnel, il ne reste qu'à installer et configurer les services que vous souhaitez ensuite.</text>
      <sha1>dqpl6wspsa5mbu2hsdwn1frfbgrhqz6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2104</id>
      <parentid>1877</parentid>
      <timestamp>2010-09-15T17:13:21Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2870">{{Ébauche|la mise en place d'un auto-hébergement}}

L'auto-hébergement consiste à avoir un serveur ( web, mails, ssh, proxy, pare-feu, routeur ... ) chez soi, avec sa propre connexion ADSL ou équivalent.

=== Le Serveur ===

Ce qu'on appelle serveur n'est en fait qu'un ordinateur qui sera dédié ( ou pas ) à sa fonction de serveur, et qui est généralement allumé 24h/24 7j/7  pour délivrer ses pages web ou recevoir ses mails à toute heure.
On préférera généralement un pc basse consommation pour éviter des coûts excessifs en électricité.
On peut évidemment mettre seulement les services voulus sur ce serveur, et c'est un de ses avantages.

Un serveur c'est aussi une application qui tourne en tâche de fond sur l'ordinateur et qui envoie les données au client.

=== Mise en place ===

==== Accès à distance ====
Tout d'abord, il faut savoir quels services délivrera le serveur.
Mettre un accès [[Glossaire#SSH| SSH]] est essentiel pour avoir un accès à distance au serveur.
Pour ce faire, consultez la page dédiée à son installation et à sa configuration: [[SSH]] .

==== Nom de domaine ====
Ensuite, si on veut que le serveur soit accessible depuis internet avec un nom tel que debian-fr.org, il faut soit payer un nom de domaine chez un registrar tel [http://gandi.com Gandi] pour une somme aux environs de 12€/an, soit s'inscrire sur un site web qui propose des adresses gratuites du type &quot;debian.nomdusite.com&quot; comme le font [http://no-ip.com| no-ip] et [http://dyndns.com| DynDNS].

==== Rediriger le trafic vers le serveur ====
Par défaut, la passerelle fournie par votre [[Glossaire#FAI| FAI]] ne sait pas à qui transférer les requêtes faites pour votre serveur ( web par exemple ) car lorsqu'un pc sur internet va demander &quot;debian.nomdusite.com&quot;, la requête va arriver à la passerelle et non à votre serveur.

Allez sur la configuration de votre passerelle et allez dans une section telle que &quot;port fowarding&quot; ou &quot;transfert de port&quot; puis indiquez le port pour lequel vous souhaitez rediriger les requêtes ( 80 pour le web, 22 pour SSH ... ) puis le protocole où vous mettrez &quot;both&quot; si vous ne savez pas et enfin l'adresse ip privée de votre serveur que vous pourrez retrouver grâce à la commande &quot;ifconfig&quot;

Mettez au moins le port SSH le temps du tutoriel pour pouvoir vérifier que votre configuration est bonne.

==== Tester la connexion ====

Maintenant que vous avez votre serveur avec SSH, vous pouvez tenter de voir si la connexion est possible depuis un pc extérieur à votre réseau.

Prenez un autre pc chez vous et tentez la connexion avec cette commande (les noms sont à modifier):

 ssh votrelogin@debian.nomdusite.com

Si vous arrivez à vous connecter, votre serveur est opérationnel, il ne reste qu'à installer et configurer les services que vous souhaitez ensuite.

[[Catégorie:Serveurs]]</text>
      <sha1>rprwwfcfj8t9gu9qpfzsh8w66zsrafy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2577</id>
      <parentid>2104</parentid>
      <timestamp>2010-12-27T22:29:19Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>/* Le Serveur */</comment>
      <text xml:space="preserve" bytes="2984">{{Ébauche|la mise en place d'un auto-hébergement}}

L'auto-hébergement consiste à avoir un serveur ( web, mails, ssh, proxy, pare-feu, routeur ... ) chez soi, avec sa propre connexion ADSL ou équivalent.

=== Le Serveur ===

Ce qu'on appelle serveur n'est en fait qu'un ordinateur qui sera dédié ( ou pas ) à sa fonction de serveur, et qui est généralement allumé 24h/24 7j/7  pour délivrer ses pages web ou recevoir ses mails à toute heure.
On préférera généralement un pc basse consommation pour éviter des coûts excessifs en électricité.
On peut évidemment mettre seulement les services voulus sur ce serveur, et c'est un de ses avantages.

Vouc pouvez trouver une liste de mini-serveurs (machine) basse consomation ici : [[Serveurs basse consommation]]

Un serveur c'est aussi une application qui tourne en tâche de fond sur l'ordinateur et qui envoie les données au client.

=== Mise en place ===

==== Accès à distance ====
Tout d'abord, il faut savoir quels services délivrera le serveur.
Mettre un accès [[Glossaire#SSH| SSH]] est essentiel pour avoir un accès à distance au serveur.
Pour ce faire, consultez la page dédiée à son installation et à sa configuration: [[SSH]] .

==== Nom de domaine ====
Ensuite, si on veut que le serveur soit accessible depuis internet avec un nom tel que debian-fr.org, il faut soit payer un nom de domaine chez un registrar tel [http://gandi.com Gandi] pour une somme aux environs de 12€/an, soit s'inscrire sur un site web qui propose des adresses gratuites du type &quot;debian.nomdusite.com&quot; comme le font [http://no-ip.com| no-ip] et [http://dyndns.com| DynDNS].

==== Rediriger le trafic vers le serveur ====
Par défaut, la passerelle fournie par votre [[Glossaire#FAI| FAI]] ne sait pas à qui transférer les requêtes faites pour votre serveur ( web par exemple ) car lorsqu'un pc sur internet va demander &quot;debian.nomdusite.com&quot;, la requête va arriver à la passerelle et non à votre serveur.

Allez sur la configuration de votre passerelle et allez dans une section telle que &quot;port fowarding&quot; ou &quot;transfert de port&quot; puis indiquez le port pour lequel vous souhaitez rediriger les requêtes ( 80 pour le web, 22 pour SSH ... ) puis le protocole où vous mettrez &quot;both&quot; si vous ne savez pas et enfin l'adresse ip privée de votre serveur que vous pourrez retrouver grâce à la commande &quot;ifconfig&quot;

Mettez au moins le port SSH le temps du tutoriel pour pouvoir vérifier que votre configuration est bonne.

==== Tester la connexion ====

Maintenant que vous avez votre serveur avec SSH, vous pouvez tenter de voir si la connexion est possible depuis un pc extérieur à votre réseau.

Prenez un autre pc chez vous et tentez la connexion avec cette commande (les noms sont à modifier):

 ssh votrelogin@debian.nomdusite.com

Si vous arrivez à vous connecter, votre serveur est opérationnel, il ne reste qu'à installer et configurer les services que vous souhaitez ensuite.

[[Catégorie:Serveurs]]</text>
      <sha1>g9hscykzuwlijktnxbikrpv9zhwgxhl</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2585</id>
      <parentid>2577</parentid>
      <timestamp>2010-12-28T08:31:07Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3000">{{Ébauche|la mise en place d'un auto-hébergement}}

L'auto-hébergement consiste à avoir un serveur ( web, mails, ssh, proxy, pare-feu, routeur ... ) chez soi, avec sa propre connexion ADSL ou équivalent.

=== Le Serveur ===

Ce qu'on appelle serveur n'est en fait qu'un ordinateur qui sera dédié ( ou pas ) à sa fonction de serveur, et qui est généralement allumé 24h/24 7j/7  pour délivrer ses pages web ou recevoir ses mails à toute heure.
On préférera généralement un pc basse consommation pour éviter des coûts excessifs en électricité.
On peut évidemment mettre seulement les services voulus sur ce serveur, et c'est un de ses avantages.

Vous pouvez trouver une liste (au 28/12/2010) de mini-serveurs (machine) basse consomation ici : [[Serveurs basse consommation]]

Un serveur c'est aussi une application qui tourne en tâche de fond sur l'ordinateur et qui envoie les données au client.

=== Mise en place ===

==== Accès à distance ====
Tout d'abord, il faut savoir quels services délivrera le serveur.
Mettre un accès [[Glossaire#SSH| SSH]] est essentiel pour avoir un accès à distance au serveur.
Pour ce faire, consultez la page dédiée à son installation et à sa configuration: [[SSH]] .

==== Nom de domaine ====
Ensuite, si on veut que le serveur soit accessible depuis internet avec un nom tel que debian-fr.org, il faut soit payer un nom de domaine chez un registrar tel [http://gandi.com Gandi] pour une somme aux environs de 12€/an, soit s'inscrire sur un site web qui propose des adresses gratuites du type &quot;debian.nomdusite.com&quot; comme le font [http://no-ip.com| no-ip] et [http://dyndns.com| DynDNS].

==== Rediriger le trafic vers le serveur ====
Par défaut, la passerelle fournie par votre [[Glossaire#FAI| FAI]] ne sait pas à qui transférer les requêtes faites pour votre serveur ( web par exemple ) car lorsqu'un pc sur internet va demander &quot;debian.nomdusite.com&quot;, la requête va arriver à la passerelle et non à votre serveur.

Allez sur la configuration de votre passerelle et allez dans une section telle que &quot;port fowarding&quot; ou &quot;transfert de port&quot; puis indiquez le port pour lequel vous souhaitez rediriger les requêtes ( 80 pour le web, 22 pour SSH ... ) puis le protocole où vous mettrez &quot;both&quot; si vous ne savez pas et enfin l'adresse ip privée de votre serveur que vous pourrez retrouver grâce à la commande &quot;ifconfig&quot;

Mettez au moins le port SSH le temps du tutoriel pour pouvoir vérifier que votre configuration est bonne.

==== Tester la connexion ====

Maintenant que vous avez votre serveur avec SSH, vous pouvez tenter de voir si la connexion est possible depuis un pc extérieur à votre réseau.

Prenez un autre pc chez vous et tentez la connexion avec cette commande (les noms sont à modifier):

 ssh votrelogin@debian.nomdusite.com

Si vous arrivez à vous connecter, votre serveur est opérationnel, il ne reste qu'à installer et configurer les services que vous souhaitez ensuite.

[[Catégorie:Serveurs]]</text>
      <sha1>mviowo4658mt946il58iy436by95mq9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5349</id>
      <parentid>2585</parentid>
      <timestamp>2013-08-12T23:49:18Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>/* Nom de domaine */ liens cassés</comment>
      <text xml:space="preserve" bytes="2998">{{Ébauche|la mise en place d'un auto-hébergement}}

L'auto-hébergement consiste à avoir un serveur ( web, mails, ssh, proxy, pare-feu, routeur ... ) chez soi, avec sa propre connexion ADSL ou équivalent.

=== Le Serveur ===

Ce qu'on appelle serveur n'est en fait qu'un ordinateur qui sera dédié ( ou pas ) à sa fonction de serveur, et qui est généralement allumé 24h/24 7j/7  pour délivrer ses pages web ou recevoir ses mails à toute heure.
On préférera généralement un pc basse consommation pour éviter des coûts excessifs en électricité.
On peut évidemment mettre seulement les services voulus sur ce serveur, et c'est un de ses avantages.

Vous pouvez trouver une liste (au 28/12/2010) de mini-serveurs (machine) basse consomation ici : [[Serveurs basse consommation]]

Un serveur c'est aussi une application qui tourne en tâche de fond sur l'ordinateur et qui envoie les données au client.

=== Mise en place ===

==== Accès à distance ====
Tout d'abord, il faut savoir quels services délivrera le serveur.
Mettre un accès [[Glossaire#SSH| SSH]] est essentiel pour avoir un accès à distance au serveur.
Pour ce faire, consultez la page dédiée à son installation et à sa configuration: [[SSH]] .

==== Nom de domaine ====
Ensuite, si on veut que le serveur soit accessible depuis internet avec un nom tel que debian-fr.org, il faut soit payer un nom de domaine chez un registrar tel [http://gandi.com Gandi] pour une somme aux environs de 12€/an, soit s'inscrire sur un site web qui propose des adresses gratuites du type &quot;debian.nomdusite.com&quot; comme le font [http://no-ip.com no-ip] et [http://dyndns.com DynDNS].

==== Rediriger le trafic vers le serveur ====
Par défaut, la passerelle fournie par votre [[Glossaire#FAI| FAI]] ne sait pas à qui transférer les requêtes faites pour votre serveur ( web par exemple ) car lorsqu'un pc sur internet va demander &quot;debian.nomdusite.com&quot;, la requête va arriver à la passerelle et non à votre serveur.

Allez sur la configuration de votre passerelle et allez dans une section telle que &quot;port fowarding&quot; ou &quot;transfert de port&quot; puis indiquez le port pour lequel vous souhaitez rediriger les requêtes ( 80 pour le web, 22 pour SSH ... ) puis le protocole où vous mettrez &quot;both&quot; si vous ne savez pas et enfin l'adresse ip privée de votre serveur que vous pourrez retrouver grâce à la commande &quot;ifconfig&quot;

Mettez au moins le port SSH le temps du tutoriel pour pouvoir vérifier que votre configuration est bonne.

==== Tester la connexion ====

Maintenant que vous avez votre serveur avec SSH, vous pouvez tenter de voir si la connexion est possible depuis un pc extérieur à votre réseau.

Prenez un autre pc chez vous et tentez la connexion avec cette commande (les noms sont à modifier):

 ssh votrelogin@debian.nomdusite.com

Si vous arrivez à vous connecter, votre serveur est opérationnel, il ne reste qu'à installer et configurer les services que vous souhaitez ensuite.

[[Catégorie:Serveurs]]</text>
      <sha1>dleod04nws5p3sozfpe24e16yo4q11r</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Awk</title>
    <ns>0</ns>
    <id>1238</id>
    <revision>
      <id>5082</id>
      <timestamp>2013-04-02T11:45:55Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>Page créée avec « awk est un langage de programmation spécialisé dans le traitement de fichier. Il a une syntaxe assez simple.  == Fonctionnement général ==  Les &quot;commandes&quot; sont de la ... »</comment>
      <text xml:space="preserve" bytes="2143">awk est un langage de programmation spécialisé dans le traitement de fichier.
Il a une syntaxe assez simple.

== Fonctionnement général ==

Les &quot;commandes&quot; sont de la forme :

 CONDITION1 { CODE1 }
 CONDITION2 { CODE2 }
 CONDITION3 { CODE3 }


Pour chaque entrée des fichiers passés en paramètre (ou chaque entrée de son entrée standard), il vérifie tour à tour chaque condition.
Si une condition est vrai, il exécute le code qui se trouve entre accolade. Par défaut une entrée est une ligne (séparé par un \n), mais ça peu être n'importe quel séparateur.

=== Entrées et champs ===

awk manipule des entrées et des champs. Par défaut il s'agit de lignes et de mot, mais il est possible de modifié son comportement :

- RS=&quot;…&quot; défini les entrées comme des morceaux de texte séparés par &quot;…&quot;
- -f&quot;…&quot; ou FS=&quot;…&quot; défini les champs comme des morceaux de texte séparés par &quot;…&quot;

Il est possible d'utiliser un (ou des) caractères différent en entrée et en sortie grâce aux variables ORS et OFS.

== Variables ==

Pour aider le développeur, awk possède un certains nombre de variable qu'il crée lui même. Il est possible d'en créer d'autre qu'il conviendra de gérer soit même.

* $0 représente l'entrée courante
* $1, $2, $3,… représente les différents champs de l'entrée courante
* FILENAME représente le nom de fichier courant
* NR et NF représente respectivement le nombre de champ de l'entrée courante et le numéro de l'entrée

Il y en a beaucoup d'autres, je vous recommande de lire la page man pour en trouver d'autre.

=== Condition ===

Les conditions permettent d'évaluer si l'entrée courante possède certaines propriétés.

* $0 ~ /mofit/ vérifie que la ligne contient un motif donné
* $0 ~ !/mofit/ vérifie que la ligne ne contient pas un motif donné

Il est possible de créer des conditions plus complexes à partir d'autres conditions (par exemple ``cond1 &amp;&amp; cond2``).

Il existe aussi des conditions spéciales qui se vérifient à des moments précis :

* BEGIN avant d'évaluer la toute première entrée
* END après l'évaluation de la toute dernière entrée</text>
      <sha1>ghgsl8tecxlh9ragt0jy3wsdnkph0fe</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5083</id>
      <parentid>5082</parentid>
      <timestamp>2013-04-02T11:46:37Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2167">awk est un langage de programmation spécialisé dans le traitement de fichier.
Il a une syntaxe assez simple.

== Fonctionnement général ==

Les &quot;commandes&quot; sont de la forme :

 CONDITION1 { CODE1 }
 CONDITION2 { CODE2 }
 CONDITION3 { CODE3 }


Pour chaque entrée des fichiers passés en paramètre (ou chaque entrée de son entrée standard), il vérifie tour à tour chaque condition.
Si une condition est vrai, il exécute le code qui se trouve entre accolade. Par défaut une entrée est une ligne (séparé par un \n), mais ça peu être n'importe quel séparateur.

=== Entrées et champs ===

awk manipule des entrées et des champs. Par défaut il s'agit de lignes et de mot, mais il est possible de modifié son comportement :

- RS=&quot;…&quot; défini les entrées comme des morceaux de texte séparés par &quot;…&quot;
- -f&quot;…&quot; ou FS=&quot;…&quot; défini les champs comme des morceaux de texte séparés par &quot;…&quot;

Il est possible d'utiliser un (ou des) caractères différent en entrée et en sortie grâce aux variables ORS et OFS.

== Variables ==

Pour aider le développeur, awk possède un certains nombre de variable qu'il crée lui même. Il est possible d'en créer d'autre qu'il conviendra de gérer soit même.

* $0 représente l'entrée courante
* $1, $2, $3,… représente les différents champs de l'entrée courante
* FILENAME représente le nom de fichier courant
* NR et NF représente respectivement le nombre de champ de l'entrée courante et le numéro de l'entrée

Il y en a beaucoup d'autres, je vous recommande de lire la page man pour en trouver d'autre.

=== Condition ===

Les conditions permettent d'évaluer si l'entrée courante possède certaines propriétés.

* $0 ~ /mofit/ vérifie que la ligne contient un motif donné
* $0 ~ !/mofit/ vérifie que la ligne ne contient pas un motif donné

Il est possible de créer des conditions plus complexes à partir d'autres conditions (par exemple ``cond1 &amp;&amp; cond2``).

Il existe aussi des conditions spéciales qui se vérifient à des moments précis :

* BEGIN avant d'évaluer la toute première entrée
* END après l'évaluation de la toute dernière entrée

[[Category:Commandes]]</text>
      <sha1>ip1ttruwb1layyqemmwp6ebbsfhgyqj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5084</id>
      <parentid>5083</parentid>
      <timestamp>2013-04-02T11:46:58Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <minor/>
      <comment>/* Entrées et champs */</comment>
      <text xml:space="preserve" bytes="2167">awk est un langage de programmation spécialisé dans le traitement de fichier.
Il a une syntaxe assez simple.

== Fonctionnement général ==

Les &quot;commandes&quot; sont de la forme :

 CONDITION1 { CODE1 }
 CONDITION2 { CODE2 }
 CONDITION3 { CODE3 }


Pour chaque entrée des fichiers passés en paramètre (ou chaque entrée de son entrée standard), il vérifie tour à tour chaque condition.
Si une condition est vrai, il exécute le code qui se trouve entre accolade. Par défaut une entrée est une ligne (séparé par un \n), mais ça peu être n'importe quel séparateur.

=== Entrées et champs ===

awk manipule des entrées et des champs. Par défaut il s'agit de lignes et de mot, mais il est possible de modifié son comportement :

* RS=&quot;…&quot; défini les entrées comme des morceaux de texte séparés par &quot;…&quot;
* -f&quot;…&quot; ou FS=&quot;…&quot; défini les champs comme des morceaux de texte séparés par &quot;…&quot;

Il est possible d'utiliser un (ou des) caractères différent en entrée et en sortie grâce aux variables ORS et OFS.

== Variables ==

Pour aider le développeur, awk possède un certains nombre de variable qu'il crée lui même. Il est possible d'en créer d'autre qu'il conviendra de gérer soit même.

* $0 représente l'entrée courante
* $1, $2, $3,… représente les différents champs de l'entrée courante
* FILENAME représente le nom de fichier courant
* NR et NF représente respectivement le nombre de champ de l'entrée courante et le numéro de l'entrée

Il y en a beaucoup d'autres, je vous recommande de lire la page man pour en trouver d'autre.

=== Condition ===

Les conditions permettent d'évaluer si l'entrée courante possède certaines propriétés.

* $0 ~ /mofit/ vérifie que la ligne contient un motif donné
* $0 ~ !/mofit/ vérifie que la ligne ne contient pas un motif donné

Il est possible de créer des conditions plus complexes à partir d'autres conditions (par exemple ``cond1 &amp;&amp; cond2``).

Il existe aussi des conditions spéciales qui se vérifient à des moments précis :

* BEGIN avant d'évaluer la toute première entrée
* END après l'évaluation de la toute dernière entrée

[[Category:Commandes]]</text>
      <sha1>71xqve2m375t5jzyyvfpnjsu0ia7bf6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>BIND</title>
    <ns>0</ns>
    <id>413</id>
    <revision>
      <id>1505</id>
      <timestamp>2010-05-17T11:14:12Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « [[Category:Serveurs]] »</comment>
      <text xml:space="preserve" bytes="21">[[Category:Serveurs]]</text>
      <sha1>l2nmaskv3bffsjpw0yst96acqex6l44</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1843</id>
      <parentid>1505</parentid>
      <timestamp>2010-08-05T07:54:38Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="22420">{{Modèle:Ébauche|DNS}}

'''Créer un serveur DNS pour votre réseau local'''

== Qu'est-ce que c'est ? ==

Un Domain Name System (ou DNS, système de noms de domaine) est un service permettant d'établir une correspondance entre une adresse IP et un nom de domaine et, plus généralement, de trouver une information à partir d'un nom de domaine.

Tous les ordinateurs pour communiquer entre eux doivent posséder une adresse IP. Ces adresses sont numériques, elles sont sous cette forme pour les adresses IPV4 : www.xxx.yyy.zzz; et de cette forme pour les adresses IPV6 : aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh.

Ces adresses sont associées à des noms, plus simples à retenir pour les humains, appelés noms de domaines. Résoudre un nom de domaine consiste à trouver l'adresse IP qui lui est associée.

Vous préférez taper google.com ou 72.14.204.103 dans votre navigateur ?

== Pourquoi faire ? ==

* Simple curiosité, pour comprendre son fonctionnement;
* Être autonome des DNS de son FAI (Fournisseur d'accès Internet) en cas d'arrêt de ceux-ci ou pas souci de confidentialité;
* Résoudre les adresses de son réseau interne (Intranet) simplement, sans être obligé de remplir le fichier hosts de toutes vos machines;
* Résoudre les &quot;adresses inverses&quot;: obtenir un nom de domaine ou de machine avec une IP.

Cela fait suffisamment de raisons ? Alors continuons!

== Avertissement

Nous n'aborderons pas ici les problèmes de sécurité, qui peuvent être nombreux sur un serveur DNS. Le DNS que nous allons construire est destiné UNIQUEMENT à notre réseau local, il n'est pas accessible depuis Internet.

== Installation ==

 # apt-get install bind9 bind9-host bind9utils
 
Pour information, trois bogues sur bind9... Vous pouvez tout de même installer sans soucis

 Récupération des rapports de bogue... Fait  
 Analyse des informations Trouvé/Corrigé... Fait  
 Bogues de gravité grave sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;done&gt;
  #516616 - bind9 locks up on start on mipsel and mips (Corrigé : bind9/1:9.7.0.dfsg.1-1)
    Réuni avec : 520688
 Bogues de gravité critical sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #575916 - bind9: assertion fails in name.c:1699 INSIST(offset &lt;= length)
 Bogues de gravité serious sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #584585 - file conflict with libisc50 (Corrigé : 1:9.7.0.dsfg~b3-1)
 Résumé :
  bind9 (3 bogues)

Vérifions que bind écoute bien sur toutes nos adresses :

 # netstat -ntulp | grep named
 tcp        0      0 192.168.0.1:53          0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      2832/named
 tcp6       0      0 :::53                   :::*                    LISTEN      2832/named
 tcp6       0      0 ::1:953                 :::*                    LISTEN      2832/named
 udp        0      0 192.168.0.1:53          0.0.0.0:*                           2832/named
 udp        0      0 127.0.0.1:53            0.0.0.0:*                           2832/named
 udp6       0      0 :::53                   :::*                                2832/named

== Premiers contact ==

Ça y est, notre DNS est déjà fonctionnel...
Il rempli son role de DNS récursif et répond à nos demandes de résolution!
Vous ne me croyez pas ?

 $ host forum.debian-fr.org 127.0.0.1
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Cette commande simple nous donne déjà des renseignements :
* forum.debian-fr.org est un alias pour www.zehome.com.
* Son IP (IPV4 est 88.165.116.107)

Plus d'information ? Passons la même commande avec l'option -v (verbose)

 $ host -v forum.debian-fr.org localhost
 Trying &quot;forum.debian-fr.org&quot;
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 11492
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;forum.debian-fr.org.		IN	A
 
 ;; ANSWER SECTION:
 forum.debian-fr.org.	37939	IN	CNAME	www.zehome.com.
 www.zehome.com.		37941	IN	A	88.165.116.107
 
 ;; AUTHORITY SECTION:
 zehome.com.		37941	IN	NS	ns.kimsufi.com.
 zehome.com.		37941	IN	NS	ns0.zehome.com.
 zehome.com.		37941	IN	NS	daboog.zehome.com.
 
 ;; ADDITIONAL SECTION:
 ns.kimsufi.com.		85955	IN	A	213.186.33.199
 
 Received 161 bytes from 127.0.0.1#53 in 1 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 62379
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	AAAA
 
 ;; AUTHORITY SECTION:
 zehome.com.		10355	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 7678
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	MX
 
 ;; AUTHORITY SECTION:
 zehome.com.		10377	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms

Avec l'option -v (verbose) c'est tout de suite plus compliqué...

Quelques remarques sur ce résultat :

* forum.debian-fr.org est un alias pour www.zehome.com;
* Son IP est 88.165.116.107;
* Ce domaine est géré par les sevreurs DNS daboog.zehome.com, ns.kimsufi.com et ns0.zehome.com;
* Il ne dispose pas d'IPV6 (pas de réponse à la question IN AAAA);
* Le SOA pour ce domaine est ns0.zehome.com
* Le mail de l'administrateur est ed@zehome.com (ed.zehome.com - ici le point vaut un arobase)

La même chose, sur un domaine plus important

 $ host www.google.fr 127.0.0.1
 Using domain server:
 Name: 127.0.0.1
 Address: 127.0.0.1#53
 Aliases: 
 
 www.google.fr is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

-www.google.fr est un alias pour www.google.com
-www.google.com possède plusieurs adresses IP

C'est possible, et cela s'appelle le &quot;round-robin&quot;... Tourniquet en Français, cet algorithme d'ordonnancement permet d'attribuer des temps aux processus, ici, il s'agit de faire tourner les IP, afin que tous les serveurs reçoivent leur part de charge...

=== La Configuration ===

L'installation de Bind9 à générée les fichiers suivants :

 # cd /etc/bind
 lol:/etc/bind# vdir
 total 52
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.0
 -rw-r--r-- 1 root root  271 jun 10 22:58 db.127
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.255
 -rw-r--r-- 1 root root  353 jun 10 22:58 db.empty
 -rw-r--r-- 1 root root  270 jun 10 22:58 db.local
 -rw-r--r-- 1 root root 2994 aoû  3 21:30 db.root
 -rw-r--r-- 1 root bind 1125 jui 21 22:19 named.conf
 -rw-r--r-- 1 root bind  278 aoû  3 10:37 named.conf.local
 -rw-r--r-- 1 root bind  572 jun 10 22:58 named.conf.options
 -rw-r----- 1 bind bind   77 jui 20 17:25 rndc.key
 -rw-r--r-- 1 root root 1317 jun 10 22:58 zones.rfc1918

Le fichier principal (apuré des commentaires) :

 # cat /etc/bind/named.conf
 
 include &quot;/etc/bind/named.conf.options&quot;;
 
 zone &quot;.&quot; {
 	type hint;
 	file &quot;/etc/bind/db.root&quot;;
 };
 
 zone &quot;localhost&quot; {
 	type master;
 	file &quot;/etc/bind/db.local&quot;;
 };
 
 zone &quot;127.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.127&quot;;
 };
 
 zone &quot;0.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.0&quot;;
 };
 
 zone &quot;255.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.255&quot;;
 };
 
 include &quot;/etc/bind/named.conf.local&quot;;

Ce fichier renvoie vers deux fichiers de configurations : named.conf.options et named.conf.local

C'est dans ces deux fichiers qu'il faudra mettre vos configurations personnelles, le fichier named.conf ne devant en principe pas être modifié.

Le fichier named.conf déclare plusieures zones, presque toutes destinées à la résolution inverse

==== La zone &quot;.&quot; ====

La zone root est primordiale.
Ce fichier contient toutes les informations sur les root-servers sans lesquels notre DNS ne peut fonctionner.
Ce fichier évolue peu.

 lol:/etc/bind# cat db.root
 
 ;       This file holds the information on root name servers needed to
 ;       initialize cache of Internet domain name servers
 ;       (e.g. reference this file in the &quot;cache  .  &lt;file&gt;&quot;
 ;       configuration file of BIND domain name servers).
 ;
 ;       This file is made available by InterNIC 
 ;       under anonymous FTP as
 ;           file                /domain/named.root
 ;           on server           FTP.INTERNIC.NET
 ;       -OR-                    RS.INTERNIC.NET
 ;
 ;       last update:    Feb 04, 2008
 ;       related version of root zone:   2008020400
 ;
 ; formerly NS.INTERNIC.NET
 ;
 .                        3600000  IN  NS    A.ROOT-SERVERS.NET.
 A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
 A.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:BA3E::2:30
 ;
 ; formerly NS1.ISI.EDU
 ;
 .                        3600000      NS    B.ROOT-SERVERS.NET.
 B.ROOT-SERVERS.NET.      3600000      A     192.228.79.201
 ;
 ; formerly C.PSI.NET
 ;
 .                        3600000      NS    C.ROOT-SERVERS.NET.
 C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
 ;
 ; formerly TERP.UMD.EDU
 ;
 .                        3600000      NS    D.ROOT-SERVERS.NET.
 D.ROOT-SERVERS.NET.      3600000      A     128.8.10.90
 ;
 ; formerly NS.NASA.GOV
 ;
 .                        3600000      NS    E.ROOT-SERVERS.NET.
 E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
 ;
 ; formerly NS.ISC.ORG
 ;
 .                        3600000      NS    F.ROOT-SERVERS.NET.
 F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
 F.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2f::f
 ;
 ; formerly NS.NIC.DDN.MIL
 ;
 .                        3600000      NS    G.ROOT-SERVERS.NET.
 G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
 ;
 ; formerly AOS.ARL.ARMY.MIL
 ;
 .                        3600000      NS    H.ROOT-SERVERS.NET.
 H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
 H.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:1::803f:235
 ;
 ; formerly NIC.NORDU.NET
 ;
 .                        3600000      NS    I.ROOT-SERVERS.NET.
 I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
 ;
 ; operated by VeriSign, Inc.
 ;
 .                        3600000      NS    J.ROOT-SERVERS.NET.
 J.ROOT-SERVERS.NET.      3600000      A     192.58.128.30
 J.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:C27::2:30
 ;
 ; operated by RIPE NCC
 ;
 .                        3600000      NS    K.ROOT-SERVERS.NET.
 K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129 
 K.ROOT-SERVERS.NET.      3600000      AAAA  2001:7fd::1
 ;
 ; operated by ICANN
 ;
 .                        3600000      NS    L.ROOT-SERVERS.NET.
 L.ROOT-SERVERS.NET.      3600000      A     199.7.83.42
 ;
 ; operated by WIDE
 ;
 .                        3600000      NS    M.ROOT-SERVERS.NET.
 M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
 M.ROOT-SERVERS.NET.      3600000      AAAA  2001:dc3::35
 ; End of File

==== La zone &quot;localhost&quot; ====

 # cat db.local 
 ;
 ; BIND data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      2		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 @	IN	A	127.0.0.1
 @	IN	AAAA	::1

Peu utilisée en général, elle permet de résoudre localhost : 

La structure de ce dernier fichier est un peu déroutante au début, emplie de @ . A AAAA SOA et autres IN que nous détaillerons plus loin.
Nous remarquons que localhost posède deux IP : 127.0.0.1 (IPV4) et ::1 (IPV6) vous le saviez probablement déjà!

==== Les zones in-addr.arpa ====

Nous venons de voir les fichiers qui permettent de résoudre l'adresse d'une machine à partir de son nom. Or, il arrive que certains mécanismes réclament l'inverse, c'est à dire trouver le (les) noms associés à des IP.

Les zones in-addr.arpa servent à ça.

Voici la zone inverse pour localhost :

 # cat db.127 
 ;
 ; BIND reverse data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      1		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 1.0.0	IN	PTR	localhost.

La notation est ici inversée.
Si nous cherchons dans la zone 127 l'adresse 0.0.1 nous tomberons sur localhost =&gt; 1.0.0 IN PTR localhost.

Par exemple, Pour l'adresse 192.1.2.3, nous obtenons le nom de domaine 3.2.1.192.in-addr.arpa.

== Contenu d'une Zone ==

Une zone contient deux enregistrements obligatoires :

* SOA
* NS

=== SOA (Start Of Authority) ===

SOA (Start Of Authority). Le champ SOA indique quel est le serveur « maitre ». Ce serveur peut-avoir plusieurs serveurs esclaves

 $ host -t soa google.fr
 google.fr has SOA record ns1.google.com. dns-admin.google.com. 1423257 21600 3600 1209600 300

Nous savons dons que le serveur ns1.google.com est le serveur maître du domaine google.com.
Et nous avons l'adresse email du responsable : dns-admin@google.com (l'arobase est remplacé par un point dans le fichier de zone)

L'enregistrement SOA contient un certain nombre d'enregistrements et de paramètres:

==== Le nom du primaire ====

 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici.

C'est le nom du serveur primaire pour la zone.
L'adresse de courrier électronique du responsable technique de la zone (zone-contact).
Il faut l'écrire en replaçant le @ par un point. On a alors par exemple: root@inria.fr qui devient root.inria.fr

==== A, AAAA, MX, CNAME, etc. ====

Les types d'enregistrements sont: A, AAAA, MX, CNAME, NS, SOA, PTR, TXT, HINFO, WKS, RP, MA, MB.

===== A (Address) =====

C'est l'enregistrement le plus courant. Le DNS a été créé en grande partie pour ça...
Le champ A (Address) fait correspondre un nom à une adresse IPv4.

nom     IN      A       193.10.20.30

Dans le cas d'une machine qui dispose de plus d'une adresse IP (un routeur ou une machine avec plusieurs cartes), il faut indiquer indiquer un enregistrements A par adresse, mais il faut alors que tous les enregistrements PTR pointent vers ce nom là.

===== AAAA (Address IPV6) =====

Idem au champ A, mais correspond à une adresse de type IPV6

===== NS (Name Server) =====

Le champ NS (Name Server) indique le nom d'un serveur de noms. Il peut y avoir plusieurs champs NS s'il y a plusieurs serveurs de noms...

===== CNAME (Common Name) =====

Le champ CNAME (Common Name) est utilisé pour créer des alias. Un &quot;vrai&quot; nom doit être préalablement déclaré avec la variable A, un alias peut ensuite être créer qui pointera vers celui-ci.

===== MX (Mail eXchanger) =====

Le champ MX (Mail eXchanger), est utilé pour le protocole SMTP ou TXT.

Il indique pour un nom de domaine quel est la machine à laquelle il faut envoyer le courrier pour ce domaine.

Si plusieurs enregistrements MX sont présents, il faut leur attribuer un poids... Le MTA (Mail transfert agent) tentera d'envoyer le courrier en premier à la machine ayant le poids associé le plus faible, puis ensuite dans l'ordre croissant des poids.

Si la machine qui relaie le courrier est dans la liste des MX pour le domaine, elle envoie le courrier aux machines de poids inférieur au sien.

nom     IN      MX      10      premier.relais.
        IN      MX      20      second.relais.

==== Le numéro de série de la zone ====

Il permet aux serveurs secondaires qui interrogent régulièrement le serveur primaire de chaque zone de déterminer quand la zone a été mise à jour.



==== L'intervalle entre les rafraichissements (refresh) ====

Temps, en seconde, au bout duquel les serveurs « esclaves » devront demander à rafraichir leur données pour cette zone. 3600 secondes dans l'exemple ci-dessous, soit une heure. 

 3600           ; Refresh

La valeur conseillée est 24 heures, soit 86400 secondes.

==== L'intervalle entre les rafraichissements (retry) ====

Durée, en secondes, à partir de laquelle un serveur esclave doit ré-essayer de se synchroniser en cas d'échec du rafraichissement. Ici toutes les 300 secondes, soit toutes les 5 minutes. 

 300            ; Retry

La valeur conseillée est 6 heures, soit 21600 secondes.

==== La durée d'expiration des enregistrements d'un secondaire ====

En cas d'échec des tentatives de synchronisation, indique le temps (en secondes) au bout duquel les serveurs secondaires devront considérer qu'ils ne savent plus répondre aux requêtes concernant cette zone.

 2419200          ; Expire

La valeur conseillée est de 41 jours, soit 3600000 secondes.

==== La durée de vie par défaut des enregistrements (default TTL) ====

Durée de vie de l'information fournie.
Les serveurs DNS récursifs conserveront en cache les informations récoltées pendant la durée indiquée dans ce paramètre. 0 indique que les valeurs ne doivent pas être conservées en cache.

 1600 )           ; Negative Cache TTL

La valeur conseillée est de 24 heures, soit 86400 secondes.

==== Le symbole « @ » ====

Dans un fichier de configuration de zone, ce symbole représente exactement le nom de domaine de la zone. Par exemple, lorsque nous allons créer notre zone maison.mrs, écrire : 

 maison.mrs.  IN SOA ...

Nous pourrons écrire : 

 @            IN SOA ...

=== NS (Name Server) ===

Cet enregistrement indique une délégation pour la gestion du nom donné. C'est à dire que le nom donné devient une zone, dont la gestion est déléguée au serveur indiqué en partie droite.

L'enregistrement donne le nom d'un des serveurs de noms autoritaire pour la zone, comme il y a toujours plus d'un serveur de noms pour une zone, on répète l'enregistrement NS autant de fois qu'il y a de serveurs pour la zone.

Quand pour un nom, on a des enregistrements NS, il est interdit de faire figurer dans la zone parente (celle là) d'autres enregistrements. S'il y a à faire figurer des enregistrements, il faut les mettre dans la zone fille.

zone    IN      NS      serveur.nom.de.domaine.

          IN      NS      autreServeur.nom.de.domaine.

          IN      NS      encoreUn.autreNom.de.domaine.

== Créons notre première zone ==

Maintenant que les explications indigestes sont faites... 
La meilleure façon de comprendre, est d'appliquer à son réseau local sa propre zone!

=== La zone chezmoi.ici ===

Pour cet exemple j'ai pris un nom de domaine bidon, c'est tout a fait possible, vous pouvez donner n'importe quel nom à votre Intranet!

Notre serveur s'appelle tebilepas il dispose de l'IP 192.168.1.254

Le domaine est chezmoi.ici

Nous disposons d'assez d'informations pour créer la zone chezmoi.ici

Créons d'abord dans /etc/bind/ un fichier nommé : db.chezmoi.ici qui contiendrai ceci :

 $TTL    1600
 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. (
                         2009012907       ; Serial
                         604800           ; Refresh
                         86400            ; Retry
                         2419200          ; Expire
                         1600 )           ; Negative Cache TTL
 
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.
 chezmoi.ici.    IN      A       192.168.1.254
 tebilepas  IN      A       192.168.1.254
 coucou     IN      A       192.168.1.1
 pourquoi   IN      CNAME   coucou
 tespascheztoi      IN      CNAME   forum.debian-fr.org.

Nous aurions pu écrire :
 @         IN    NS      tebilepas.chezmoi.ici.
à la place de (cela revient au même)
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.

Nous aurions aussi pu éviter les commentaires (par exemple : ;Serial) mais pour les explications ce sera plus facile.

Ce sera suffisant pour commencer!

Pour que cette zone soit prise en compte, nous devons maintenant l'inclure dans le fichier /etc/bind/named.conf.local

Ceci devrait permettre de répondre aux requêtes de type NS pour le domaine maison.mrs, de répondre aussi aux requêtes de type A pour debvirt.maison.mrs et pour test1.maison.mrs, constater aussi que les alias fonctionnent dans et hors du domaine. 

Il nous faut maintenant indiquer à bind que cette zone existe. Nous allons le faire dans le fichier /etc/bind/named.conf.local : 

 zone &quot;chezmoi.ici&quot; {
         type master;
         file &quot;/etc/bind/db.chezmoi.ici&quot;;
         };

Nous redémarrons notre serveur bind

 # service bind9 restart
 Stopping domain name service...: bind9 waiting for pid 1353 to die.
 Starting domain name service...: bind9.

Et nous testons...

 $ host -a chezmoi.ici localhost
 Trying &quot;chezmoi.ici&quot;
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 46986
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;chezmoi.ici.			IN	ANY
 
 ;; ANSWER SECTION:
 chezmoi.ici.		1600	IN	SOA	tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. 2009012907 604800 86400 2419200 1600
 chezmoi.ici.		1600	IN	NS	tebilepas.chezmoi.ici.
 chezmoi.ici.		1600	IN	A	192.168.1.254
 
 ;; ADDITIONAL SECTION:
 tebilepas.chezmoi.ici.	1600	IN	A	192.168.1.254
 
 Received 126 bytes from ::1#53 in 5 ms

 $ host coucou.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 coucou.chezmoi.ici has address 192.168.1.1

 $ host pourquoi.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 pourquoi.chezmoi.ici is an alias for coucou.chezmoi.ici.
 coucou.chezmoi.ici has address 192.168.1.1

 $ host ailleurs.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ailleurs.chezmoi.ici is an alias for forum.debian-fr.org.
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Comme vous avez pu le constater, votre DNS fonctionne parfaitement, il renseigne nos machines sur le réseau local, et il pourvoit à nos demandes d'IP Internet !

ToDo : Conclusion - Round-robin

[[Category:Serveurs]]</text>
      <sha1>jbfdrl9gxnvvwbcthz5y4byuiaytnef</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1844</id>
      <parentid>1843</parentid>
      <timestamp>2010-08-05T08:13:13Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Pourquoi faire ? */</comment>
      <text xml:space="preserve" bytes="22423">{{Modèle:Ébauche|DNS}}

'''Créer un serveur DNS pour votre réseau local'''

== Qu'est-ce que c'est ? ==

Un Domain Name System (ou DNS, système de noms de domaine) est un service permettant d'établir une correspondance entre une adresse IP et un nom de domaine et, plus généralement, de trouver une information à partir d'un nom de domaine.

Tous les ordinateurs pour communiquer entre eux doivent posséder une adresse IP. Ces adresses sont numériques, elles sont sous cette forme pour les adresses IPV4 : www.xxx.yyy.zzz; et de cette forme pour les adresses IPV6 : aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh.

Ces adresses sont associées à des noms, plus simples à retenir pour les humains, appelés noms de domaines. Résoudre un nom de domaine consiste à trouver l'adresse IP qui lui est associée.

Vous préférez taper google.com ou 72.14.204.103 dans votre navigateur ?

== Pourquoi faire ? ==

* Simple curiosité, pour comprendre son fonctionnement;
* Être autonome des DNS de son FAI (Fournisseur d'accès Internet) en cas d'arrêt de ceux-ci ou pas souci de confidentialité;
* Résoudre les adresses de son réseau interne (Intranet) simplement, sans être obligé de remplir le fichier hosts de toutes vos machines;
* Résoudre les &quot;adresses inverses&quot;: obtenir un nom de domaine ou de machine avec une IP.

Cela fait suffisamment de raisons ? Alors continuons!

== Avertissement ==

Nous n'aborderons pas ici les problèmes de sécurité, qui peuvent être nombreux sur un serveur DNS. Le DNS que nous allons construire est destiné UNIQUEMENT à notre réseau local, il n'est pas accessible depuis Internet.

== Installation ==

 # apt-get install bind9 bind9-host bind9utils
 
Pour information, trois bogues sur bind9... Vous pouvez tout de même installer sans soucis

 Récupération des rapports de bogue... Fait  
 Analyse des informations Trouvé/Corrigé... Fait  
 Bogues de gravité grave sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;done&gt;
  #516616 - bind9 locks up on start on mipsel and mips (Corrigé : bind9/1:9.7.0.dfsg.1-1)
    Réuni avec : 520688
 Bogues de gravité critical sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #575916 - bind9: assertion fails in name.c:1699 INSIST(offset &lt;= length)
 Bogues de gravité serious sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #584585 - file conflict with libisc50 (Corrigé : 1:9.7.0.dsfg~b3-1)
 Résumé :
  bind9 (3 bogues)

Vérifions que bind écoute bien sur toutes nos adresses :

 # netstat -ntulp | grep named
 tcp        0      0 192.168.0.1:53          0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      2832/named
 tcp6       0      0 :::53                   :::*                    LISTEN      2832/named
 tcp6       0      0 ::1:953                 :::*                    LISTEN      2832/named
 udp        0      0 192.168.0.1:53          0.0.0.0:*                           2832/named
 udp        0      0 127.0.0.1:53            0.0.0.0:*                           2832/named
 udp6       0      0 :::53                   :::*                                2832/named

== Premiers contact ==

Ça y est, notre DNS est déjà fonctionnel...
Il rempli son role de DNS récursif et répond à nos demandes de résolution!
Vous ne me croyez pas ?

 $ host forum.debian-fr.org 127.0.0.1
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Cette commande simple nous donne déjà des renseignements :
* forum.debian-fr.org est un alias pour www.zehome.com.
* Son IP (IPV4 est 88.165.116.107)

Plus d'information ? Passons la même commande avec l'option -v (verbose)

 $ host -v forum.debian-fr.org localhost
 Trying &quot;forum.debian-fr.org&quot;
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 11492
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;forum.debian-fr.org.		IN	A
 
 ;; ANSWER SECTION:
 forum.debian-fr.org.	37939	IN	CNAME	www.zehome.com.
 www.zehome.com.		37941	IN	A	88.165.116.107
 
 ;; AUTHORITY SECTION:
 zehome.com.		37941	IN	NS	ns.kimsufi.com.
 zehome.com.		37941	IN	NS	ns0.zehome.com.
 zehome.com.		37941	IN	NS	daboog.zehome.com.
 
 ;; ADDITIONAL SECTION:
 ns.kimsufi.com.		85955	IN	A	213.186.33.199
 
 Received 161 bytes from 127.0.0.1#53 in 1 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 62379
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	AAAA
 
 ;; AUTHORITY SECTION:
 zehome.com.		10355	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 7678
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	MX
 
 ;; AUTHORITY SECTION:
 zehome.com.		10377	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms

Avec l'option -v (verbose) c'est tout de suite plus compliqué...

Quelques remarques sur ce résultat :

* forum.debian-fr.org est un alias pour www.zehome.com;
* Son IP est 88.165.116.107;
* Ce domaine est géré par les sevreurs DNS daboog.zehome.com, ns.kimsufi.com et ns0.zehome.com;
* Il ne dispose pas d'IPV6 (pas de réponse à la question IN AAAA);
* Le SOA pour ce domaine est ns0.zehome.com
* Le mail de l'administrateur est ed@zehome.com (ed.zehome.com - ici le point vaut un arobase)

La même chose, sur un domaine plus important

 $ host www.google.fr 127.0.0.1
 Using domain server:
 Name: 127.0.0.1
 Address: 127.0.0.1#53
 Aliases: 
 
 www.google.fr is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

-www.google.fr est un alias pour www.google.com
-www.google.com possède plusieurs adresses IP

C'est possible, et cela s'appelle le &quot;round-robin&quot;... Tourniquet en Français, cet algorithme d'ordonnancement permet d'attribuer des temps aux processus, ici, il s'agit de faire tourner les IP, afin que tous les serveurs reçoivent leur part de charge...

=== La Configuration ===

L'installation de Bind9 à générée les fichiers suivants :

 # cd /etc/bind
 lol:/etc/bind# vdir
 total 52
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.0
 -rw-r--r-- 1 root root  271 jun 10 22:58 db.127
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.255
 -rw-r--r-- 1 root root  353 jun 10 22:58 db.empty
 -rw-r--r-- 1 root root  270 jun 10 22:58 db.local
 -rw-r--r-- 1 root root 2994 aoû  3 21:30 db.root
 -rw-r--r-- 1 root bind 1125 jui 21 22:19 named.conf
 -rw-r--r-- 1 root bind  278 aoû  3 10:37 named.conf.local
 -rw-r--r-- 1 root bind  572 jun 10 22:58 named.conf.options
 -rw-r----- 1 bind bind   77 jui 20 17:25 rndc.key
 -rw-r--r-- 1 root root 1317 jun 10 22:58 zones.rfc1918

Le fichier principal (apuré des commentaires) :

 # cat /etc/bind/named.conf
 
 include &quot;/etc/bind/named.conf.options&quot;;
 
 zone &quot;.&quot; {
 	type hint;
 	file &quot;/etc/bind/db.root&quot;;
 };
 
 zone &quot;localhost&quot; {
 	type master;
 	file &quot;/etc/bind/db.local&quot;;
 };
 
 zone &quot;127.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.127&quot;;
 };
 
 zone &quot;0.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.0&quot;;
 };
 
 zone &quot;255.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.255&quot;;
 };
 
 include &quot;/etc/bind/named.conf.local&quot;;

Ce fichier renvoie vers deux fichiers de configurations : named.conf.options et named.conf.local

C'est dans ces deux fichiers qu'il faudra mettre vos configurations personnelles, le fichier named.conf ne devant en principe pas être modifié.

Le fichier named.conf déclare plusieures zones, presque toutes destinées à la résolution inverse

==== La zone &quot;.&quot; ====

La zone root est primordiale.
Ce fichier contient toutes les informations sur les root-servers sans lesquels notre DNS ne peut fonctionner.
Ce fichier évolue peu.

 lol:/etc/bind# cat db.root
 
 ;       This file holds the information on root name servers needed to
 ;       initialize cache of Internet domain name servers
 ;       (e.g. reference this file in the &quot;cache  .  &lt;file&gt;&quot;
 ;       configuration file of BIND domain name servers).
 ;
 ;       This file is made available by InterNIC 
 ;       under anonymous FTP as
 ;           file                /domain/named.root
 ;           on server           FTP.INTERNIC.NET
 ;       -OR-                    RS.INTERNIC.NET
 ;
 ;       last update:    Feb 04, 2008
 ;       related version of root zone:   2008020400
 ;
 ; formerly NS.INTERNIC.NET
 ;
 .                        3600000  IN  NS    A.ROOT-SERVERS.NET.
 A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
 A.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:BA3E::2:30
 ;
 ; formerly NS1.ISI.EDU
 ;
 .                        3600000      NS    B.ROOT-SERVERS.NET.
 B.ROOT-SERVERS.NET.      3600000      A     192.228.79.201
 ;
 ; formerly C.PSI.NET
 ;
 .                        3600000      NS    C.ROOT-SERVERS.NET.
 C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
 ;
 ; formerly TERP.UMD.EDU
 ;
 .                        3600000      NS    D.ROOT-SERVERS.NET.
 D.ROOT-SERVERS.NET.      3600000      A     128.8.10.90
 ;
 ; formerly NS.NASA.GOV
 ;
 .                        3600000      NS    E.ROOT-SERVERS.NET.
 E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
 ;
 ; formerly NS.ISC.ORG
 ;
 .                        3600000      NS    F.ROOT-SERVERS.NET.
 F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
 F.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2f::f
 ;
 ; formerly NS.NIC.DDN.MIL
 ;
 .                        3600000      NS    G.ROOT-SERVERS.NET.
 G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
 ;
 ; formerly AOS.ARL.ARMY.MIL
 ;
 .                        3600000      NS    H.ROOT-SERVERS.NET.
 H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
 H.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:1::803f:235
 ;
 ; formerly NIC.NORDU.NET
 ;
 .                        3600000      NS    I.ROOT-SERVERS.NET.
 I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
 ;
 ; operated by VeriSign, Inc.
 ;
 .                        3600000      NS    J.ROOT-SERVERS.NET.
 J.ROOT-SERVERS.NET.      3600000      A     192.58.128.30
 J.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:C27::2:30
 ;
 ; operated by RIPE NCC
 ;
 .                        3600000      NS    K.ROOT-SERVERS.NET.
 K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129 
 K.ROOT-SERVERS.NET.      3600000      AAAA  2001:7fd::1
 ;
 ; operated by ICANN
 ;
 .                        3600000      NS    L.ROOT-SERVERS.NET.
 L.ROOT-SERVERS.NET.      3600000      A     199.7.83.42
 ;
 ; operated by WIDE
 ;
 .                        3600000      NS    M.ROOT-SERVERS.NET.
 M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
 M.ROOT-SERVERS.NET.      3600000      AAAA  2001:dc3::35
 ; End of File

==== La zone &quot;localhost&quot; ====

 # cat db.local 
 ;
 ; BIND data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      2		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 @	IN	A	127.0.0.1
 @	IN	AAAA	::1

Peu utilisée en général, elle permet de résoudre localhost : 

La structure de ce dernier fichier est un peu déroutante au début, emplie de @ . A AAAA SOA et autres IN que nous détaillerons plus loin.
Nous remarquons que localhost posède deux IP : 127.0.0.1 (IPV4) et ::1 (IPV6) vous le saviez probablement déjà!

==== Les zones in-addr.arpa ====

Nous venons de voir les fichiers qui permettent de résoudre l'adresse d'une machine à partir de son nom. Or, il arrive que certains mécanismes réclament l'inverse, c'est à dire trouver le (les) noms associés à des IP.

Les zones in-addr.arpa servent à ça.

Voici la zone inverse pour localhost :

 # cat db.127 
 ;
 ; BIND reverse data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      1		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 1.0.0	IN	PTR	localhost.

La notation est ici inversée.
Si nous cherchons dans la zone 127 l'adresse 0.0.1 nous tomberons sur localhost =&gt; 1.0.0 IN PTR localhost.

Par exemple, Pour l'adresse 192.1.2.3, nous obtenons le nom de domaine 3.2.1.192.in-addr.arpa.

== Contenu d'une Zone ==

Une zone contient deux enregistrements obligatoires :

* SOA
* NS

=== SOA (Start Of Authority) ===

SOA (Start Of Authority). Le champ SOA indique quel est le serveur « maitre ». Ce serveur peut-avoir plusieurs serveurs esclaves

 $ host -t soa google.fr
 google.fr has SOA record ns1.google.com. dns-admin.google.com. 1423257 21600 3600 1209600 300

Nous savons dons que le serveur ns1.google.com est le serveur maître du domaine google.com.
Et nous avons l'adresse email du responsable : dns-admin@google.com (l'arobase est remplacé par un point dans le fichier de zone)

L'enregistrement SOA contient un certain nombre d'enregistrements et de paramètres:

==== Le nom du primaire ====

 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici.

C'est le nom du serveur primaire pour la zone.
L'adresse de courrier électronique du responsable technique de la zone (zone-contact).
Il faut l'écrire en replaçant le @ par un point. On a alors par exemple: root@inria.fr qui devient root.inria.fr

==== A, AAAA, MX, CNAME, etc. ====

Les types d'enregistrements sont: A, AAAA, MX, CNAME, NS, SOA, PTR, TXT, HINFO, WKS, RP, MA, MB.

===== A (Address) =====

C'est l'enregistrement le plus courant. Le DNS a été créé en grande partie pour ça...
Le champ A (Address) fait correspondre un nom à une adresse IPv4.

nom     IN      A       193.10.20.30

Dans le cas d'une machine qui dispose de plus d'une adresse IP (un routeur ou une machine avec plusieurs cartes), il faut indiquer indiquer un enregistrements A par adresse, mais il faut alors que tous les enregistrements PTR pointent vers ce nom là.

===== AAAA (Address IPV6) =====

Idem au champ A, mais correspond à une adresse de type IPV6

===== NS (Name Server) =====

Le champ NS (Name Server) indique le nom d'un serveur de noms. Il peut y avoir plusieurs champs NS s'il y a plusieurs serveurs de noms...

===== CNAME (Common Name) =====

Le champ CNAME (Common Name) est utilisé pour créer des alias. Un &quot;vrai&quot; nom doit être préalablement déclaré avec la variable A, un alias peut ensuite être créer qui pointera vers celui-ci.

===== MX (Mail eXchanger) =====

Le champ MX (Mail eXchanger), est utilé pour le protocole SMTP ou TXT.

Il indique pour un nom de domaine quel est la machine à laquelle il faut envoyer le courrier pour ce domaine.

Si plusieurs enregistrements MX sont présents, il faut leur attribuer un poids... Le MTA (Mail transfert agent) tentera d'envoyer le courrier en premier à la machine ayant le poids associé le plus faible, puis ensuite dans l'ordre croissant des poids.

Si la machine qui relaie le courrier est dans la liste des MX pour le domaine, elle envoie le courrier aux machines de poids inférieur au sien.

nom     IN      MX      10      premier.relais.
        IN      MX      20      second.relais.

==== Le numéro de série de la zone ====

Il permet aux serveurs secondaires qui interrogent régulièrement le serveur primaire de chaque zone de déterminer quand la zone a été mise à jour.



==== L'intervalle entre les rafraichissements (refresh) ====

Temps, en seconde, au bout duquel les serveurs « esclaves » devront demander à rafraichir leur données pour cette zone. 3600 secondes dans l'exemple ci-dessous, soit une heure. 

 3600           ; Refresh

La valeur conseillée est 24 heures, soit 86400 secondes.

==== L'intervalle entre les rafraichissements (retry) ====

Durée, en secondes, à partir de laquelle un serveur esclave doit ré-essayer de se synchroniser en cas d'échec du rafraichissement. Ici toutes les 300 secondes, soit toutes les 5 minutes. 

 300            ; Retry

La valeur conseillée est 6 heures, soit 21600 secondes.

==== La durée d'expiration des enregistrements d'un secondaire ====

En cas d'échec des tentatives de synchronisation, indique le temps (en secondes) au bout duquel les serveurs secondaires devront considérer qu'ils ne savent plus répondre aux requêtes concernant cette zone.

 2419200          ; Expire

La valeur conseillée est de 41 jours, soit 3600000 secondes.

==== La durée de vie par défaut des enregistrements (default TTL) ====

Durée de vie de l'information fournie.
Les serveurs DNS récursifs conserveront en cache les informations récoltées pendant la durée indiquée dans ce paramètre. 0 indique que les valeurs ne doivent pas être conservées en cache.

 1600 )           ; Negative Cache TTL

La valeur conseillée est de 24 heures, soit 86400 secondes.

==== Le symbole « @ » ====

Dans un fichier de configuration de zone, ce symbole représente exactement le nom de domaine de la zone. Par exemple, lorsque nous allons créer notre zone maison.mrs, écrire : 

 maison.mrs.  IN SOA ...

Nous pourrons écrire : 

 @            IN SOA ...

=== NS (Name Server) ===

Cet enregistrement indique une délégation pour la gestion du nom donné. C'est à dire que le nom donné devient une zone, dont la gestion est déléguée au serveur indiqué en partie droite.

L'enregistrement donne le nom d'un des serveurs de noms autoritaire pour la zone, comme il y a toujours plus d'un serveur de noms pour une zone, on répète l'enregistrement NS autant de fois qu'il y a de serveurs pour la zone.

Quand pour un nom, on a des enregistrements NS, il est interdit de faire figurer dans la zone parente (celle là) d'autres enregistrements. S'il y a à faire figurer des enregistrements, il faut les mettre dans la zone fille.

zone    IN      NS      serveur.nom.de.domaine.

          IN      NS      autreServeur.nom.de.domaine.

          IN      NS      encoreUn.autreNom.de.domaine.

== Créons notre première zone ==

Maintenant que les explications indigestes sont faites... 
La meilleure façon de comprendre, est d'appliquer à son réseau local sa propre zone!

=== La zone chezmoi.ici ===

Pour cet exemple j'ai pris un nom de domaine bidon, c'est tout a fait possible, vous pouvez donner n'importe quel nom à votre Intranet!

Notre serveur s'appelle tebilepas il dispose de l'IP 192.168.1.254

Le domaine est chezmoi.ici

Nous disposons d'assez d'informations pour créer la zone chezmoi.ici

Créons d'abord dans /etc/bind/ un fichier nommé : db.chezmoi.ici qui contiendrai ceci :

 $TTL    1600
 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. (
                         2009012907       ; Serial
                         604800           ; Refresh
                         86400            ; Retry
                         2419200          ; Expire
                         1600 )           ; Negative Cache TTL
 
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.
 chezmoi.ici.    IN      A       192.168.1.254
 tebilepas  IN      A       192.168.1.254
 coucou     IN      A       192.168.1.1
 pourquoi   IN      CNAME   coucou
 tespascheztoi      IN      CNAME   forum.debian-fr.org.

Nous aurions pu écrire :
 @         IN    NS      tebilepas.chezmoi.ici.
à la place de (cela revient au même)
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.

Nous aurions aussi pu éviter les commentaires (par exemple : ;Serial) mais pour les explications ce sera plus facile.

Ce sera suffisant pour commencer!

Pour que cette zone soit prise en compte, nous devons maintenant l'inclure dans le fichier /etc/bind/named.conf.local

Ceci devrait permettre de répondre aux requêtes de type NS pour le domaine maison.mrs, de répondre aussi aux requêtes de type A pour debvirt.maison.mrs et pour test1.maison.mrs, constater aussi que les alias fonctionnent dans et hors du domaine. 

Il nous faut maintenant indiquer à bind que cette zone existe. Nous allons le faire dans le fichier /etc/bind/named.conf.local : 

 zone &quot;chezmoi.ici&quot; {
         type master;
         file &quot;/etc/bind/db.chezmoi.ici&quot;;
         };

Nous redémarrons notre serveur bind

 # service bind9 restart
 Stopping domain name service...: bind9 waiting for pid 1353 to die.
 Starting domain name service...: bind9.

Et nous testons...

 $ host -a chezmoi.ici localhost
 Trying &quot;chezmoi.ici&quot;
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 46986
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;chezmoi.ici.			IN	ANY
 
 ;; ANSWER SECTION:
 chezmoi.ici.		1600	IN	SOA	tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. 2009012907 604800 86400 2419200 1600
 chezmoi.ici.		1600	IN	NS	tebilepas.chezmoi.ici.
 chezmoi.ici.		1600	IN	A	192.168.1.254
 
 ;; ADDITIONAL SECTION:
 tebilepas.chezmoi.ici.	1600	IN	A	192.168.1.254
 
 Received 126 bytes from ::1#53 in 5 ms

 $ host coucou.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 coucou.chezmoi.ici has address 192.168.1.1

 $ host pourquoi.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 pourquoi.chezmoi.ici is an alias for coucou.chezmoi.ici.
 coucou.chezmoi.ici has address 192.168.1.1

 $ host ailleurs.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ailleurs.chezmoi.ici is an alias for forum.debian-fr.org.
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Comme vous avez pu le constater, votre DNS fonctionne parfaitement, il renseigne nos machines sur le réseau local, et il pourvoit à nos demandes d'IP Internet !

ToDo : Conclusion - Round-robin

[[Category:Serveurs]]</text>
      <sha1>6y6nyi7bxkmbvh2buewkyci47sqgkpu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1845</id>
      <parentid>1844</parentid>
      <timestamp>2010-08-05T08:20:23Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="22402">{{Modèle:Ébauche|DNS}}

'''Créer un serveur DNS pour votre réseau local'''

== Qu'est-ce que c'est ? ==

Un Domain Name System (ou DNS, système de noms de domaine) est un service permettant d'établir une correspondance entre une adresse IP et un nom de domaine et, plus généralement, de trouver une information à partir d'un nom de domaine.

Tous les ordinateurs pour communiquer entre eux doivent posséder une adresse IP. Ces adresses sont numériques, elles sont sous cette forme pour les adresses IPV4 : www.xxx.yyy.zzz; et de cette forme pour les adresses IPV6 : aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh.

Ces adresses sont associées à des noms, plus simples à retenir pour les humains, appelés noms de domaines. Résoudre un nom de domaine consiste à trouver l'adresse IP qui lui est associée.

Vous préférez taper google.com ou 72.14.204.103 dans votre navigateur ?

== Pourquoi faire ? ==

* Simple curiosité, pour comprendre son fonctionnement;
* Être autonome des DNS de son FAI (Fournisseur d'accès Internet) en cas d'arrêt de ceux-ci ou pas souci de confidentialité;
* Résoudre les adresses de son réseau interne (Intranet) simplement, sans être obligé de remplir le fichier hosts de toutes vos machines;
* Résoudre les &quot;adresses inverses&quot;: obtenir un nom de domaine ou de machine avec une IP.

Cela fait suffisamment de raisons ? Alors continuons!

== Avertissement ==

Nous n'aborderons pas ici les problèmes de sécurité, qui peuvent être nombreux sur un serveur DNS. Le DNS que nous allons construire est destiné UNIQUEMENT à notre réseau local, il n'est pas accessible depuis Internet.

== Installation ==

 # apt-get install bind9 bind9-host bind9utils
 
Pour information, trois bogues sur bind9... Vous pouvez tout de même installer sans soucis

 Récupération des rapports de bogue... Fait  
 Analyse des informations Trouvé/Corrigé... Fait  
 Bogues de gravité grave sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;done&gt;
  #516616 - bind9 locks up on start on mipsel and mips (Corrigé : bind9/1:9.7.0.dfsg.1-1)
    Réuni avec : 520688
 Bogues de gravité critical sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #575916 - bind9: assertion fails in name.c:1699 INSIST(offset &lt;= length)
 Bogues de gravité serious sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #584585 - file conflict with libisc50 (Corrigé : 1:9.7.0.dsfg~b3-1)
 Résumé :
  bind9 (3 bogues)

Vérifions que bind écoute bien sur toutes nos adresses :

 # netstat -ntulp | grep named
 tcp        0      0 192.168.0.1:53          0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      2832/named
 tcp6       0      0 :::53                   :::*                    LISTEN      2832/named
 tcp6       0      0 ::1:953                 :::*                    LISTEN      2832/named
 udp        0      0 192.168.0.1:53          0.0.0.0:*                           2832/named
 udp        0      0 127.0.0.1:53            0.0.0.0:*                           2832/named
 udp6       0      0 :::53                   :::*                                2832/named

== Premiers contact ==

Ça y est, notre DNS est déjà fonctionnel...
Il rempli son role de DNS récursif et répond à nos demandes de résolution!
Vous ne me croyez pas ?

 $ host forum.debian-fr.org 127.0.0.1
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Cette commande simple nous donne déjà des renseignements :
* forum.debian-fr.org est un alias pour www.zehome.com.
* Son IP (IPV4 est 88.165.116.107)

Plus d'information ? Passons la même commande avec l'option -v (verbose)

 $ host -v forum.debian-fr.org localhost
 Trying &quot;forum.debian-fr.org&quot;
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 11492
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;forum.debian-fr.org.		IN	A
 
 ;; ANSWER SECTION:
 forum.debian-fr.org.	37939	IN	CNAME	www.zehome.com.
 www.zehome.com.		37941	IN	A	88.165.116.107
 
 ;; AUTHORITY SECTION:
 zehome.com.		37941	IN	NS	ns.kimsufi.com.
 zehome.com.		37941	IN	NS	ns0.zehome.com.
 zehome.com.		37941	IN	NS	daboog.zehome.com.
 
 ;; ADDITIONAL SECTION:
 ns.kimsufi.com.		85955	IN	A	213.186.33.199
 
 Received 161 bytes from 127.0.0.1#53 in 1 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 62379
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	AAAA
 
 ;; AUTHORITY SECTION:
 zehome.com.		10355	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 7678
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	MX
 
 ;; AUTHORITY SECTION:
 zehome.com.		10377	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms

Avec l'option -v (verbose) c'est tout de suite plus compliqué...

Quelques remarques sur ce résultat :

* forum.debian-fr.org est un alias pour www.zehome.com;
* Son IP est 88.165.116.107;
* Ce domaine est géré par les sevreurs DNS daboog.zehome.com, ns.kimsufi.com et ns0.zehome.com;
* Il ne dispose pas d'IPV6 (pas de réponse à la question IN AAAA);
* Le SOA pour ce domaine est ns0.zehome.com
* Le mail de l'administrateur est ed@zehome.com (ed.zehome.com - ici le point vaut un arobase)

La même chose, sur un domaine plus important

 $ host www.google.fr 127.0.0.1
 Using domain server:
 Name: 127.0.0.1
 Address: 127.0.0.1#53
 Aliases: 
 
 www.google.fr is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

-www.google.fr est un alias pour www.google.com
-www.google.com possède plusieurs adresses IP

C'est possible, et cela s'appelle le &quot;round-robin&quot;... Tourniquet en Français, cet algorithme d'ordonnancement permet d'attribuer des temps aux processus, ici, il s'agit de faire tourner les IP, afin que tous les serveurs reçoivent leur part de charge...

=== La Configuration ===

L'installation de Bind9 à générée les fichiers suivants :

 # cd /etc/bind
 lol:/etc/bind# vdir
 total 52
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.0
 -rw-r--r-- 1 root root  271 jun 10 22:58 db.127
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.255
 -rw-r--r-- 1 root root  353 jun 10 22:58 db.empty
 -rw-r--r-- 1 root root  270 jun 10 22:58 db.local
 -rw-r--r-- 1 root root 2994 aoû  3 21:30 db.root
 -rw-r--r-- 1 root bind 1125 jui 21 22:19 named.conf
 -rw-r--r-- 1 root bind  278 aoû  3 10:37 named.conf.local
 -rw-r--r-- 1 root bind  572 jun 10 22:58 named.conf.options
 -rw-r----- 1 bind bind   77 jui 20 17:25 rndc.key
 -rw-r--r-- 1 root root 1317 jun 10 22:58 zones.rfc1918

Le fichier principal (apuré des commentaires) :

 # cat /etc/bind/named.conf
 
 include &quot;/etc/bind/named.conf.options&quot;;
 
 zone &quot;.&quot; {
 	type hint;
 	file &quot;/etc/bind/db.root&quot;;
 };
 
 zone &quot;localhost&quot; {
 	type master;
 	file &quot;/etc/bind/db.local&quot;;
 };
 
 zone &quot;127.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.127&quot;;
 };
 
 zone &quot;0.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.0&quot;;
 };
 
 zone &quot;255.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.255&quot;;
 };
 
 include &quot;/etc/bind/named.conf.local&quot;;

Ce fichier renvoie vers deux fichiers de configurations : named.conf.options et named.conf.local

C'est dans ces deux fichiers qu'il faudra mettre vos configurations personnelles, le fichier named.conf ne devant en principe pas être modifié.

Le fichier named.conf déclare plusieures zones, presque toutes destinées à la résolution inverse

==== La zone &quot;.&quot; ====

La zone root est primordiale.
Ce fichier contient toutes les informations sur les root-servers sans lesquels notre DNS ne peut fonctionner.
Ce fichier évolue peu.

 lol:/etc/bind# cat db.root
 
 ;       This file holds the information on root name servers needed to
 ;       initialize cache of Internet domain name servers
 ;       (e.g. reference this file in the &quot;cache  .  &lt;file&gt;&quot;
 ;       configuration file of BIND domain name servers).
 ;
 ;       This file is made available by InterNIC 
 ;       under anonymous FTP as
 ;           file                /domain/named.root
 ;           on server           FTP.INTERNIC.NET
 ;       -OR-                    RS.INTERNIC.NET
 ;
 ;       last update:    Feb 04, 2008
 ;       related version of root zone:   2008020400
 ;
 ; formerly NS.INTERNIC.NET
 ;
 .                        3600000  IN  NS    A.ROOT-SERVERS.NET.
 A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
 A.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:BA3E::2:30
 ;
 ; formerly NS1.ISI.EDU
 ;
 .                        3600000      NS    B.ROOT-SERVERS.NET.
 B.ROOT-SERVERS.NET.      3600000      A     192.228.79.201
 ;
 ; formerly C.PSI.NET
 ;
 .                        3600000      NS    C.ROOT-SERVERS.NET.
 C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
 ;
 ; formerly TERP.UMD.EDU
 ;
 .                        3600000      NS    D.ROOT-SERVERS.NET.
 D.ROOT-SERVERS.NET.      3600000      A     128.8.10.90
 ;
 ; formerly NS.NASA.GOV
 ;
 .                        3600000      NS    E.ROOT-SERVERS.NET.
 E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
 ;
 ; formerly NS.ISC.ORG
 ;
 .                        3600000      NS    F.ROOT-SERVERS.NET.
 F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
 F.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2f::f
 ;
 ; formerly NS.NIC.DDN.MIL
 ;
 .                        3600000      NS    G.ROOT-SERVERS.NET.
 G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
 ;
 ; formerly AOS.ARL.ARMY.MIL
 ;
 .                        3600000      NS    H.ROOT-SERVERS.NET.
 H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
 H.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:1::803f:235
 ;
 ; formerly NIC.NORDU.NET
 ;
 .                        3600000      NS    I.ROOT-SERVERS.NET.
 I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
 ;
 ; operated by VeriSign, Inc.
 ;
 .                        3600000      NS    J.ROOT-SERVERS.NET.
 J.ROOT-SERVERS.NET.      3600000      A     192.58.128.30
 J.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:C27::2:30
 ;
 ; operated by RIPE NCC
 ;
 .                        3600000      NS    K.ROOT-SERVERS.NET.
 K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129 
 K.ROOT-SERVERS.NET.      3600000      AAAA  2001:7fd::1
 ;
 ; operated by ICANN
 ;
 .                        3600000      NS    L.ROOT-SERVERS.NET.
 L.ROOT-SERVERS.NET.      3600000      A     199.7.83.42
 ;
 ; operated by WIDE
 ;
 .                        3600000      NS    M.ROOT-SERVERS.NET.
 M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
 M.ROOT-SERVERS.NET.      3600000      AAAA  2001:dc3::35
 ; End of File

==== La zone &quot;localhost&quot; ====

 # cat db.local 
 ;
 ; BIND data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      2		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 @	IN	A	127.0.0.1
 @	IN	AAAA	::1

Peu utilisée en général, elle permet de résoudre localhost : 

La structure de ce dernier fichier est un peu déroutante au début, emplie de @ . A AAAA SOA et autres IN que nous détaillerons plus loin.
Nous remarquons que localhost posède deux IP : 127.0.0.1 (IPV4) et ::1 (IPV6) vous le saviez probablement déjà!

==== Les zones in-addr.arpa ====

Nous venons de voir les fichiers qui permettent de résoudre l'adresse d'une machine à partir de son nom. Or, il arrive que certains mécanismes réclament l'inverse, c'est à dire trouver le (les) noms associés à des IP.

Les zones in-addr.arpa servent à ça.

Voici la zone inverse pour localhost :

 # cat db.127 
 ;
 ; BIND reverse data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      1		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 1.0.0	IN	PTR	localhost.

La notation est ici inversée.
Si nous cherchons dans la zone 127 l'adresse 0.0.1 nous tomberons sur localhost =&gt; 1.0.0 IN PTR localhost.

Par exemple, Pour l'adresse 192.1.2.3, nous obtenons le nom de domaine 3.2.1.192.in-addr.arpa.

== Contenu d'une Zone ==

Une zone contient deux enregistrements obligatoires :

* SOA
* NS

=== SOA ===

SOA (Start Of Authority). Le champ SOA indique quel est le serveur « maitre ». Ce serveur peut-avoir plusieurs serveurs esclaves

 $ host -t soa google.fr
 google.fr has SOA record ns1.google.com. dns-admin.google.com. 1423257 21600 3600 1209600 300

Nous savons dons que le serveur ns1.google.com est le serveur maître du domaine google.com.
Et nous avons l'adresse email du responsable : dns-admin@google.com (l'arobase est remplacé par un point dans le fichier de zone)

L'enregistrement SOA contient un certain nombre d'enregistrements et de paramètres:

==== Le nom du primaire ====

 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici.

C'est le nom du serveur primaire pour la zone.
L'adresse de courrier électronique du responsable technique de la zone (zone-contact).
Il faut l'écrire en replaçant le @ par un point. On a alors par exemple: root@inria.fr qui devient root.inria.fr

==== A, AAAA, MX, CNAME, etc. ====

Les types d'enregistrements sont: A, AAAA, MX, CNAME, NS, SOA, PTR, TXT, HINFO, WKS, RP, MA, MB.

===== A (Address) =====

C'est l'enregistrement le plus courant. Le DNS a été créé en grande partie pour ça...
Le champ A (Address) fait correspondre un nom à une adresse IPv4.

nom     IN      A       193.10.20.30

Dans le cas d'une machine qui dispose de plus d'une adresse IP (un routeur ou une machine avec plusieurs cartes), il faut indiquer indiquer un enregistrements A par adresse, mais il faut alors que tous les enregistrements PTR pointent vers ce nom là.

===== AAAA (Address IPV6) =====

Idem au champ A, mais correspond à une adresse de type IPV6

===== NS (Name Server) =====

Le champ NS (Name Server) indique le nom d'un serveur de noms. Il peut y avoir plusieurs champs NS s'il y a plusieurs serveurs de noms...

===== CNAME (Common Name) =====

Le champ CNAME (Common Name) est utilisé pour créer des alias. Un &quot;vrai&quot; nom doit être préalablement déclaré avec la variable A, un alias peut ensuite être créer qui pointera vers celui-ci.

===== MX (Mail eXchanger) =====

Le champ MX (Mail eXchanger), est utilé pour le protocole SMTP ou TXT.

Il indique pour un nom de domaine quel est la machine à laquelle il faut envoyer le courrier pour ce domaine.

Si plusieurs enregistrements MX sont présents, il faut leur attribuer un poids... Le MTA (Mail transfert agent) tentera d'envoyer le courrier en premier à la machine ayant le poids associé le plus faible, puis ensuite dans l'ordre croissant des poids.

Si la machine qui relaie le courrier est dans la liste des MX pour le domaine, elle envoie le courrier aux machines de poids inférieur au sien.

nom     IN      MX      10      premier.relais.
        IN      MX      20      second.relais.

==== Le numéro de série de la zone ====

Il permet aux serveurs secondaires qui interrogent régulièrement le serveur primaire de chaque zone de déterminer quand la zone a été mise à jour.



==== L'intervalle entre les rafraichissements (refresh) ====

Temps, en seconde, au bout duquel les serveurs « esclaves » devront demander à rafraichir leur données pour cette zone. 3600 secondes dans l'exemple ci-dessous, soit une heure. 

 3600           ; Refresh

La valeur conseillée est 24 heures, soit 86400 secondes.

==== L'intervalle entre les rafraichissements (retry) ====

Durée, en secondes, à partir de laquelle un serveur esclave doit ré-essayer de se synchroniser en cas d'échec du rafraichissement. Ici toutes les 300 secondes, soit toutes les 5 minutes. 

 300            ; Retry

La valeur conseillée est 6 heures, soit 21600 secondes.

==== La durée d'expiration des enregistrements d'un secondaire ====

En cas d'échec des tentatives de synchronisation, indique le temps (en secondes) au bout duquel les serveurs secondaires devront considérer qu'ils ne savent plus répondre aux requêtes concernant cette zone.

 2419200          ; Expire

La valeur conseillée est de 41 jours, soit 3600000 secondes.

==== La durée de vie par défaut des enregistrements (default TTL) ====

Durée de vie de l'information fournie.
Les serveurs DNS récursifs conserveront en cache les informations récoltées pendant la durée indiquée dans ce paramètre. 0 indique que les valeurs ne doivent pas être conservées en cache.

 1600 )           ; Negative Cache TTL

La valeur conseillée est de 24 heures, soit 86400 secondes.

==== Le symbole « @ » ====

Dans un fichier de configuration de zone, ce symbole représente exactement le nom de domaine de la zone. Par exemple, lorsque nous allons créer notre zone maison.mrs, écrire : 

 maison.mrs.  IN SOA ...

Nous pourrons écrire : 

 @            IN SOA ...

=== NS (Name Server) ===

Cet enregistrement indique une délégation pour la gestion du nom donné. C'est à dire que le nom donné devient une zone, dont la gestion est déléguée au serveur indiqué en partie droite.

L'enregistrement donne le nom d'un des serveurs de noms autoritaire pour la zone, comme il y a toujours plus d'un serveur de noms pour une zone, on répète l'enregistrement NS autant de fois qu'il y a de serveurs pour la zone.

Quand pour un nom, on a des enregistrements NS, il est interdit de faire figurer dans la zone parente (celle là) d'autres enregistrements. S'il y a à faire figurer des enregistrements, il faut les mettre dans la zone fille.

zone    IN      NS      serveur.nom.de.domaine.

          IN      NS      autreServeur.nom.de.domaine.

          IN      NS      encoreUn.autreNom.de.domaine.

== Créons notre première zone ==

Maintenant que les explications indigestes sont faites... 
La meilleure façon de comprendre, est d'appliquer à son réseau local sa propre zone!

=== La zone chezmoi.ici ===

Pour cet exemple j'ai pris un nom de domaine bidon, c'est tout a fait possible, vous pouvez donner n'importe quel nom à votre Intranet!

Notre serveur s'appelle tebilepas il dispose de l'IP 192.168.1.254

Le domaine est chezmoi.ici

Nous disposons d'assez d'informations pour créer la zone chezmoi.ici

Créons d'abord dans /etc/bind/ un fichier nommé : db.chezmoi.ici qui contiendrai ceci :

 $TTL    1600
 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. (
                         2009012907       ; Serial
                         604800           ; Refresh
                         86400            ; Retry
                         2419200          ; Expire
                         1600 )           ; Negative Cache TTL
 
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.
 chezmoi.ici.    IN      A       192.168.1.254
 tebilepas  IN      A       192.168.1.254
 coucou     IN      A       192.168.1.1
 pourquoi   IN      CNAME   coucou
 tespascheztoi      IN      CNAME   forum.debian-fr.org.

Nous aurions pu écrire :
 @         IN    NS      tebilepas.chezmoi.ici.
à la place de (cela revient au même)
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.

Nous aurions aussi pu éviter les commentaires (par exemple : ;Serial) mais pour les explications ce sera plus facile.

Ce sera suffisant pour commencer!

Pour que cette zone soit prise en compte, nous devons maintenant l'inclure dans le fichier /etc/bind/named.conf.local

Ceci devrait permettre de répondre aux requêtes de type NS pour le domaine maison.mrs, de répondre aussi aux requêtes de type A pour debvirt.maison.mrs et pour test1.maison.mrs, constater aussi que les alias fonctionnent dans et hors du domaine. 

Il nous faut maintenant indiquer à bind que cette zone existe. Nous allons le faire dans le fichier /etc/bind/named.conf.local : 

 zone &quot;chezmoi.ici&quot; {
         type master;
         file &quot;/etc/bind/db.chezmoi.ici&quot;;
         };

Nous redémarrons notre serveur bind

 # service bind9 restart
 Stopping domain name service...: bind9 waiting for pid 1353 to die.
 Starting domain name service...: bind9.

Et nous testons...

 $ host -a chezmoi.ici localhost
 Trying &quot;chezmoi.ici&quot;
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 46986
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;chezmoi.ici.			IN	ANY
 
 ;; ANSWER SECTION:
 chezmoi.ici.		1600	IN	SOA	tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. 2009012907 604800 86400 2419200 1600
 chezmoi.ici.		1600	IN	NS	tebilepas.chezmoi.ici.
 chezmoi.ici.		1600	IN	A	192.168.1.254
 
 ;; ADDITIONAL SECTION:
 tebilepas.chezmoi.ici.	1600	IN	A	192.168.1.254
 
 Received 126 bytes from ::1#53 in 5 ms

 $ host coucou.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 coucou.chezmoi.ici has address 192.168.1.1

 $ host pourquoi.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 pourquoi.chezmoi.ici is an alias for coucou.chezmoi.ici.
 coucou.chezmoi.ici has address 192.168.1.1

 $ host ailleurs.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ailleurs.chezmoi.ici is an alias for forum.debian-fr.org.
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Comme vous avez pu le constater, votre DNS fonctionne parfaitement, il renseigne nos machines sur le réseau local, et il pourvoit à nos demandes d'IP Internet !

ToDo : Conclusion - Round-robin

[[Category:Serveurs]]</text>
      <sha1>kt272p9v1fwtbmdk0f8dpozqk9ffgch</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1846</id>
      <parentid>1845</parentid>
      <timestamp>2010-08-05T08:23:35Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="22415">{{Modèle:Ébauche|DNS}}

'''Créer un serveur DNS pour votre réseau local'''

== Qu'est-ce que c'est ? ==

Un Domain Name System (ou DNS, système de noms de domaine) est un service permettant d'établir une correspondance entre une adresse IP et un nom de domaine et, plus généralement, de trouver une information à partir d'un nom de domaine.

Tous les ordinateurs pour communiquer entre eux doivent posséder une adresse IP. Ces adresses sont numériques, elles sont sous cette forme pour les adresses IPV4 : www.xxx.yyy.zzz; et de cette forme pour les adresses IPV6 : aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh.

Ces adresses sont associées à des noms, plus simples à retenir pour les humains, appelés noms de domaines. Résoudre un nom de domaine consiste à trouver l'adresse IP qui lui est associée.

Vous préférez taper google.com ou 72.14.204.103 dans votre navigateur ?

== Pourquoi faire ? ==

* Simple curiosité, pour comprendre son fonctionnement;
* Être autonome des DNS de son FAI (Fournisseur d'accès Internet) en cas d'arrêt de ceux-ci ou pas souci de confidentialité;
* Résoudre les adresses de son réseau interne (Intranet) simplement, sans être obligé de remplir le fichier hosts de toutes vos machines;
* Résoudre les &quot;adresses inverses&quot;: obtenir un nom de domaine ou de machine avec une IP.

Cela fait suffisamment de raisons ? Alors continuons!

== Avertissement ==

Nous n'aborderons pas ici les problèmes de sécurité, qui peuvent être nombreux sur un serveur DNS. Le DNS que nous allons construire est destiné UNIQUEMENT à notre réseau local, il n'est pas accessible depuis Internet.

== Installation ==

 # apt-get install bind9 bind9-host bind9utils
 
Pour information, trois bogues sur bind9... Vous pouvez tout de même installer sans soucis

 Récupération des rapports de bogue... Fait  
 Analyse des informations Trouvé/Corrigé... Fait  
 Bogues de gravité grave sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;done&gt;
  #516616 - bind9 locks up on start on mipsel and mips (Corrigé : bind9/1:9.7.0.dfsg.1-1)
    Réuni avec : 520688
 Bogues de gravité critical sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #575916 - bind9: assertion fails in name.c:1699 INSIST(offset &lt;= length)
 Bogues de gravité serious sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #584585 - file conflict with libisc50 (Corrigé : 1:9.7.0.dsfg~b3-1)
 Résumé :
  bind9 (3 bogues)

Vérifions que bind écoute bien sur toutes nos adresses :

 # netstat -ntulp | grep named
 tcp        0      0 192.168.0.1:53          0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      2832/named
 tcp6       0      0 :::53                   :::*                    LISTEN      2832/named
 tcp6       0      0 ::1:953                 :::*                    LISTEN      2832/named
 udp        0      0 192.168.0.1:53          0.0.0.0:*                           2832/named
 udp        0      0 127.0.0.1:53            0.0.0.0:*                           2832/named
 udp6       0      0 :::53                   :::*                                2832/named

== Premiers contact ==

Ça y est, notre DNS est déjà fonctionnel...
Il rempli son role de DNS récursif et répond à nos demandes de résolution!
Vous ne me croyez pas ?

 $ host forum.debian-fr.org 127.0.0.1
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Cette commande simple nous donne déjà des renseignements :
* forum.debian-fr.org est un alias pour www.zehome.com.
* Son IP (IPV4 est 88.165.116.107)

Plus d'information ? Passons la même commande avec l'option -v (verbose)

 $ host -v forum.debian-fr.org localhost
 Trying &quot;forum.debian-fr.org&quot;
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 11492
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;forum.debian-fr.org.		IN	A
 
 ;; ANSWER SECTION:
 forum.debian-fr.org.	37939	IN	CNAME	www.zehome.com.
 www.zehome.com.		37941	IN	A	88.165.116.107
 
 ;; AUTHORITY SECTION:
 zehome.com.		37941	IN	NS	ns.kimsufi.com.
 zehome.com.		37941	IN	NS	ns0.zehome.com.
 zehome.com.		37941	IN	NS	daboog.zehome.com.
 
 ;; ADDITIONAL SECTION:
 ns.kimsufi.com.		85955	IN	A	213.186.33.199
 
 Received 161 bytes from 127.0.0.1#53 in 1 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 62379
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	AAAA
 
 ;; AUTHORITY SECTION:
 zehome.com.		10355	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 7678
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	MX
 
 ;; AUTHORITY SECTION:
 zehome.com.		10377	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms

Avec l'option -v (verbose) c'est tout de suite plus compliqué...

Quelques remarques sur ce résultat :

* forum.debian-fr.org est un alias pour www.zehome.com;
* Son IP est 88.165.116.107;
* Ce domaine est géré par les sevreurs DNS daboog.zehome.com, ns.kimsufi.com et ns0.zehome.com;
* Il ne dispose pas d'IPV6 (pas de réponse à la question IN AAAA);
* Le [[BIND#SOA|SOA]] pour ce domaine est ns0.zehome.com
* Le mail de l'administrateur est ed@zehome.com (ed.zehome.com - ici le point vaut un arobase)

La même chose, sur un domaine plus important

 $ host www.google.fr 127.0.0.1
 Using domain server:
 Name: 127.0.0.1
 Address: 127.0.0.1#53
 Aliases: 
 
 www.google.fr is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

-www.google.fr est un alias pour www.google.com
-www.google.com possède plusieurs adresses IP

C'est possible, et cela s'appelle le &quot;round-robin&quot;... Tourniquet en Français, cet algorithme d'ordonnancement permet d'attribuer des temps aux processus, ici, il s'agit de faire tourner les IP, afin que tous les serveurs reçoivent leur part de charge...

=== La Configuration ===

L'installation de Bind9 à générée les fichiers suivants :

 # cd /etc/bind
 lol:/etc/bind# vdir
 total 52
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.0
 -rw-r--r-- 1 root root  271 jun 10 22:58 db.127
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.255
 -rw-r--r-- 1 root root  353 jun 10 22:58 db.empty
 -rw-r--r-- 1 root root  270 jun 10 22:58 db.local
 -rw-r--r-- 1 root root 2994 aoû  3 21:30 db.root
 -rw-r--r-- 1 root bind 1125 jui 21 22:19 named.conf
 -rw-r--r-- 1 root bind  278 aoû  3 10:37 named.conf.local
 -rw-r--r-- 1 root bind  572 jun 10 22:58 named.conf.options
 -rw-r----- 1 bind bind   77 jui 20 17:25 rndc.key
 -rw-r--r-- 1 root root 1317 jun 10 22:58 zones.rfc1918

Le fichier principal (apuré des commentaires) :

 # cat /etc/bind/named.conf
 
 include &quot;/etc/bind/named.conf.options&quot;;
 
 zone &quot;.&quot; {
 	type hint;
 	file &quot;/etc/bind/db.root&quot;;
 };
 
 zone &quot;localhost&quot; {
 	type master;
 	file &quot;/etc/bind/db.local&quot;;
 };
 
 zone &quot;127.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.127&quot;;
 };
 
 zone &quot;0.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.0&quot;;
 };
 
 zone &quot;255.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.255&quot;;
 };
 
 include &quot;/etc/bind/named.conf.local&quot;;

Ce fichier renvoie vers deux fichiers de configurations : named.conf.options et named.conf.local

C'est dans ces deux fichiers qu'il faudra mettre vos configurations personnelles, le fichier named.conf ne devant en principe pas être modifié.

Le fichier named.conf déclare plusieures zones, presque toutes destinées à la résolution inverse

==== La zone &quot;.&quot; ====

La zone root est primordiale.
Ce fichier contient toutes les informations sur les root-servers sans lesquels notre DNS ne peut fonctionner.
Ce fichier évolue peu.

 lol:/etc/bind# cat db.root
 
 ;       This file holds the information on root name servers needed to
 ;       initialize cache of Internet domain name servers
 ;       (e.g. reference this file in the &quot;cache  .  &lt;file&gt;&quot;
 ;       configuration file of BIND domain name servers).
 ;
 ;       This file is made available by InterNIC 
 ;       under anonymous FTP as
 ;           file                /domain/named.root
 ;           on server           FTP.INTERNIC.NET
 ;       -OR-                    RS.INTERNIC.NET
 ;
 ;       last update:    Feb 04, 2008
 ;       related version of root zone:   2008020400
 ;
 ; formerly NS.INTERNIC.NET
 ;
 .                        3600000  IN  NS    A.ROOT-SERVERS.NET.
 A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
 A.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:BA3E::2:30
 ;
 ; formerly NS1.ISI.EDU
 ;
 .                        3600000      NS    B.ROOT-SERVERS.NET.
 B.ROOT-SERVERS.NET.      3600000      A     192.228.79.201
 ;
 ; formerly C.PSI.NET
 ;
 .                        3600000      NS    C.ROOT-SERVERS.NET.
 C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
 ;
 ; formerly TERP.UMD.EDU
 ;
 .                        3600000      NS    D.ROOT-SERVERS.NET.
 D.ROOT-SERVERS.NET.      3600000      A     128.8.10.90
 ;
 ; formerly NS.NASA.GOV
 ;
 .                        3600000      NS    E.ROOT-SERVERS.NET.
 E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
 ;
 ; formerly NS.ISC.ORG
 ;
 .                        3600000      NS    F.ROOT-SERVERS.NET.
 F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
 F.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2f::f
 ;
 ; formerly NS.NIC.DDN.MIL
 ;
 .                        3600000      NS    G.ROOT-SERVERS.NET.
 G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
 ;
 ; formerly AOS.ARL.ARMY.MIL
 ;
 .                        3600000      NS    H.ROOT-SERVERS.NET.
 H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
 H.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:1::803f:235
 ;
 ; formerly NIC.NORDU.NET
 ;
 .                        3600000      NS    I.ROOT-SERVERS.NET.
 I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
 ;
 ; operated by VeriSign, Inc.
 ;
 .                        3600000      NS    J.ROOT-SERVERS.NET.
 J.ROOT-SERVERS.NET.      3600000      A     192.58.128.30
 J.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:C27::2:30
 ;
 ; operated by RIPE NCC
 ;
 .                        3600000      NS    K.ROOT-SERVERS.NET.
 K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129 
 K.ROOT-SERVERS.NET.      3600000      AAAA  2001:7fd::1
 ;
 ; operated by ICANN
 ;
 .                        3600000      NS    L.ROOT-SERVERS.NET.
 L.ROOT-SERVERS.NET.      3600000      A     199.7.83.42
 ;
 ; operated by WIDE
 ;
 .                        3600000      NS    M.ROOT-SERVERS.NET.
 M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
 M.ROOT-SERVERS.NET.      3600000      AAAA  2001:dc3::35
 ; End of File

==== La zone &quot;localhost&quot; ====

 # cat db.local 
 ;
 ; BIND data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      2		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 @	IN	A	127.0.0.1
 @	IN	AAAA	::1

Peu utilisée en général, elle permet de résoudre localhost : 

La structure de ce dernier fichier est un peu déroutante au début, emplie de @ . A AAAA SOA et autres IN que nous détaillerons plus loin.
Nous remarquons que localhost posède deux IP : 127.0.0.1 (IPV4) et ::1 (IPV6) vous le saviez probablement déjà!

==== Les zones in-addr.arpa ====

Nous venons de voir les fichiers qui permettent de résoudre l'adresse d'une machine à partir de son nom. Or, il arrive que certains mécanismes réclament l'inverse, c'est à dire trouver le (les) noms associés à des IP.

Les zones in-addr.arpa servent à ça.

Voici la zone inverse pour localhost :

 # cat db.127 
 ;
 ; BIND reverse data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      1		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 1.0.0	IN	PTR	localhost.

La notation est ici inversée.
Si nous cherchons dans la zone 127 l'adresse 0.0.1 nous tomberons sur localhost =&gt; 1.0.0 IN PTR localhost.

Par exemple, Pour l'adresse 192.1.2.3, nous obtenons le nom de domaine 3.2.1.192.in-addr.arpa.

== Contenu d'une Zone ==

Une zone contient deux enregistrements obligatoires :

* SOA
* NS

=== SOA ===

SOA (Start Of Authority). Le champ SOA indique quel est le serveur « maitre ». Ce serveur peut-avoir plusieurs serveurs esclaves

 $ host -t soa google.fr
 google.fr has SOA record ns1.google.com. dns-admin.google.com. 1423257 21600 3600 1209600 300

Nous savons dons que le serveur ns1.google.com est le serveur maître du domaine google.com.
Et nous avons l'adresse email du responsable : dns-admin@google.com (l'arobase est remplacé par un point dans le fichier de zone)

L'enregistrement SOA contient un certain nombre d'enregistrements et de paramètres:

==== Le nom du primaire ====

 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici.

C'est le nom du serveur primaire pour la zone.
L'adresse de courrier électronique du responsable technique de la zone (zone-contact).
Il faut l'écrire en replaçant le @ par un point. On a alors par exemple: root@inria.fr qui devient root.inria.fr

==== A, AAAA, MX, CNAME, etc. ====

Les types d'enregistrements sont: A, AAAA, MX, CNAME, NS, SOA, PTR, TXT, HINFO, WKS, RP, MA, MB.

===== A (Address) =====

C'est l'enregistrement le plus courant. Le DNS a été créé en grande partie pour ça...
Le champ A (Address) fait correspondre un nom à une adresse IPv4.

nom     IN      A       193.10.20.30

Dans le cas d'une machine qui dispose de plus d'une adresse IP (un routeur ou une machine avec plusieurs cartes), il faut indiquer indiquer un enregistrements A par adresse, mais il faut alors que tous les enregistrements PTR pointent vers ce nom là.

===== AAAA (Address IPV6) =====

Idem au champ A, mais correspond à une adresse de type IPV6

===== NS (Name Server) =====

Le champ NS (Name Server) indique le nom d'un serveur de noms. Il peut y avoir plusieurs champs NS s'il y a plusieurs serveurs de noms...

===== CNAME (Common Name) =====

Le champ CNAME (Common Name) est utilisé pour créer des alias. Un &quot;vrai&quot; nom doit être préalablement déclaré avec la variable A, un alias peut ensuite être créer qui pointera vers celui-ci.

===== MX (Mail eXchanger) =====

Le champ MX (Mail eXchanger), est utilé pour le protocole SMTP ou TXT.

Il indique pour un nom de domaine quel est la machine à laquelle il faut envoyer le courrier pour ce domaine.

Si plusieurs enregistrements MX sont présents, il faut leur attribuer un poids... Le MTA (Mail transfert agent) tentera d'envoyer le courrier en premier à la machine ayant le poids associé le plus faible, puis ensuite dans l'ordre croissant des poids.

Si la machine qui relaie le courrier est dans la liste des MX pour le domaine, elle envoie le courrier aux machines de poids inférieur au sien.

nom     IN      MX      10      premier.relais.
        IN      MX      20      second.relais.

==== Le numéro de série de la zone ====

Il permet aux serveurs secondaires qui interrogent régulièrement le serveur primaire de chaque zone de déterminer quand la zone a été mise à jour.



==== L'intervalle entre les rafraichissements (refresh) ====

Temps, en seconde, au bout duquel les serveurs « esclaves » devront demander à rafraichir leur données pour cette zone. 3600 secondes dans l'exemple ci-dessous, soit une heure. 

 3600           ; Refresh

La valeur conseillée est 24 heures, soit 86400 secondes.

==== L'intervalle entre les rafraichissements (retry) ====

Durée, en secondes, à partir de laquelle un serveur esclave doit ré-essayer de se synchroniser en cas d'échec du rafraichissement. Ici toutes les 300 secondes, soit toutes les 5 minutes. 

 300            ; Retry

La valeur conseillée est 6 heures, soit 21600 secondes.

==== La durée d'expiration des enregistrements d'un secondaire ====

En cas d'échec des tentatives de synchronisation, indique le temps (en secondes) au bout duquel les serveurs secondaires devront considérer qu'ils ne savent plus répondre aux requêtes concernant cette zone.

 2419200          ; Expire

La valeur conseillée est de 41 jours, soit 3600000 secondes.

==== La durée de vie par défaut des enregistrements (default TTL) ====

Durée de vie de l'information fournie.
Les serveurs DNS récursifs conserveront en cache les informations récoltées pendant la durée indiquée dans ce paramètre. 0 indique que les valeurs ne doivent pas être conservées en cache.

 1600 )           ; Negative Cache TTL

La valeur conseillée est de 24 heures, soit 86400 secondes.

==== Le symbole « @ » ====

Dans un fichier de configuration de zone, ce symbole représente exactement le nom de domaine de la zone. Par exemple, lorsque nous allons créer notre zone maison.mrs, écrire : 

 maison.mrs.  IN SOA ...

Nous pourrons écrire : 

 @            IN SOA ...

=== NS (Name Server) ===

Cet enregistrement indique une délégation pour la gestion du nom donné. C'est à dire que le nom donné devient une zone, dont la gestion est déléguée au serveur indiqué en partie droite.

L'enregistrement donne le nom d'un des serveurs de noms autoritaire pour la zone, comme il y a toujours plus d'un serveur de noms pour une zone, on répète l'enregistrement NS autant de fois qu'il y a de serveurs pour la zone.

Quand pour un nom, on a des enregistrements NS, il est interdit de faire figurer dans la zone parente (celle là) d'autres enregistrements. S'il y a à faire figurer des enregistrements, il faut les mettre dans la zone fille.

zone    IN      NS      serveur.nom.de.domaine.

          IN      NS      autreServeur.nom.de.domaine.

          IN      NS      encoreUn.autreNom.de.domaine.

== Créons notre première zone ==

Maintenant que les explications indigestes sont faites... 
La meilleure façon de comprendre, est d'appliquer à son réseau local sa propre zone!

=== La zone chezmoi.ici ===

Pour cet exemple j'ai pris un nom de domaine bidon, c'est tout a fait possible, vous pouvez donner n'importe quel nom à votre Intranet!

Notre serveur s'appelle tebilepas il dispose de l'IP 192.168.1.254

Le domaine est chezmoi.ici

Nous disposons d'assez d'informations pour créer la zone chezmoi.ici

Créons d'abord dans /etc/bind/ un fichier nommé : db.chezmoi.ici qui contiendrai ceci :

 $TTL    1600
 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. (
                         2009012907       ; Serial
                         604800           ; Refresh
                         86400            ; Retry
                         2419200          ; Expire
                         1600 )           ; Negative Cache TTL
 
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.
 chezmoi.ici.    IN      A       192.168.1.254
 tebilepas  IN      A       192.168.1.254
 coucou     IN      A       192.168.1.1
 pourquoi   IN      CNAME   coucou
 tespascheztoi      IN      CNAME   forum.debian-fr.org.

Nous aurions pu écrire :
 @         IN    NS      tebilepas.chezmoi.ici.
à la place de (cela revient au même)
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.

Nous aurions aussi pu éviter les commentaires (par exemple : ;Serial) mais pour les explications ce sera plus facile.

Ce sera suffisant pour commencer!

Pour que cette zone soit prise en compte, nous devons maintenant l'inclure dans le fichier /etc/bind/named.conf.local

Ceci devrait permettre de répondre aux requêtes de type NS pour le domaine maison.mrs, de répondre aussi aux requêtes de type A pour debvirt.maison.mrs et pour test1.maison.mrs, constater aussi que les alias fonctionnent dans et hors du domaine. 

Il nous faut maintenant indiquer à bind que cette zone existe. Nous allons le faire dans le fichier /etc/bind/named.conf.local : 

 zone &quot;chezmoi.ici&quot; {
         type master;
         file &quot;/etc/bind/db.chezmoi.ici&quot;;
         };

Nous redémarrons notre serveur bind

 # service bind9 restart
 Stopping domain name service...: bind9 waiting for pid 1353 to die.
 Starting domain name service...: bind9.

Et nous testons...

 $ host -a chezmoi.ici localhost
 Trying &quot;chezmoi.ici&quot;
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 46986
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;chezmoi.ici.			IN	ANY
 
 ;; ANSWER SECTION:
 chezmoi.ici.		1600	IN	SOA	tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. 2009012907 604800 86400 2419200 1600
 chezmoi.ici.		1600	IN	NS	tebilepas.chezmoi.ici.
 chezmoi.ici.		1600	IN	A	192.168.1.254
 
 ;; ADDITIONAL SECTION:
 tebilepas.chezmoi.ici.	1600	IN	A	192.168.1.254
 
 Received 126 bytes from ::1#53 in 5 ms

 $ host coucou.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 coucou.chezmoi.ici has address 192.168.1.1

 $ host pourquoi.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 pourquoi.chezmoi.ici is an alias for coucou.chezmoi.ici.
 coucou.chezmoi.ici has address 192.168.1.1

 $ host ailleurs.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ailleurs.chezmoi.ici is an alias for forum.debian-fr.org.
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Comme vous avez pu le constater, votre DNS fonctionne parfaitement, il renseigne nos machines sur le réseau local, et il pourvoit à nos demandes d'IP Internet !

ToDo : Conclusion - Round-robin

[[Category:Serveurs]]</text>
      <sha1>l1qhm8n8pqgqfvr1q1ivtzxw55yrua4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1847</id>
      <parentid>1846</parentid>
      <timestamp>2010-08-05T08:56:34Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Pourquoi faire ? */</comment>
      <text xml:space="preserve" bytes="22415">{{Modèle:Ébauche|DNS}}

'''Créer un serveur DNS pour votre réseau local'''

== Qu'est-ce que c'est ? ==

Un Domain Name System (ou DNS, système de noms de domaine) est un service permettant d'établir une correspondance entre une adresse IP et un nom de domaine et, plus généralement, de trouver une information à partir d'un nom de domaine.

Tous les ordinateurs pour communiquer entre eux doivent posséder une adresse IP. Ces adresses sont numériques, elles sont sous cette forme pour les adresses IPV4 : www.xxx.yyy.zzz; et de cette forme pour les adresses IPV6 : aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh.

Ces adresses sont associées à des noms, plus simples à retenir pour les humains, appelés noms de domaines. Résoudre un nom de domaine consiste à trouver l'adresse IP qui lui est associée.

Vous préférez taper google.com ou 72.14.204.103 dans votre navigateur ?

== Pourquoi faire ? ==

* Simple curiosité, pour comprendre son fonctionnement;
* Être autonome des DNS de son FAI (Fournisseur d'accès Internet) en cas d'arrêt de ceux-ci ou par souci de confidentialité;
* Résoudre les adresses de son réseau interne (Intranet) simplement, sans être obligé de remplir le fichier hosts de toutes vos machines;
* Résoudre les &quot;adresses inverses&quot;: obtenir un nom de domaine ou de machine avec une IP.

Cela fait suffisamment de raisons ? Alors continuons!

== Avertissement ==

Nous n'aborderons pas ici les problèmes de sécurité, qui peuvent être nombreux sur un serveur DNS. Le DNS que nous allons construire est destiné UNIQUEMENT à notre réseau local, il n'est pas accessible depuis Internet.

== Installation ==

 # apt-get install bind9 bind9-host bind9utils
 
Pour information, trois bogues sur bind9... Vous pouvez tout de même installer sans soucis

 Récupération des rapports de bogue... Fait  
 Analyse des informations Trouvé/Corrigé... Fait  
 Bogues de gravité grave sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;done&gt;
  #516616 - bind9 locks up on start on mipsel and mips (Corrigé : bind9/1:9.7.0.dfsg.1-1)
    Réuni avec : 520688
 Bogues de gravité critical sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #575916 - bind9: assertion fails in name.c:1699 INSIST(offset &lt;= length)
 Bogues de gravité serious sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #584585 - file conflict with libisc50 (Corrigé : 1:9.7.0.dsfg~b3-1)
 Résumé :
  bind9 (3 bogues)

Vérifions que bind écoute bien sur toutes nos adresses :

 # netstat -ntulp | grep named
 tcp        0      0 192.168.0.1:53          0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      2832/named
 tcp6       0      0 :::53                   :::*                    LISTEN      2832/named
 tcp6       0      0 ::1:953                 :::*                    LISTEN      2832/named
 udp        0      0 192.168.0.1:53          0.0.0.0:*                           2832/named
 udp        0      0 127.0.0.1:53            0.0.0.0:*                           2832/named
 udp6       0      0 :::53                   :::*                                2832/named

== Premiers contact ==

Ça y est, notre DNS est déjà fonctionnel...
Il rempli son role de DNS récursif et répond à nos demandes de résolution!
Vous ne me croyez pas ?

 $ host forum.debian-fr.org 127.0.0.1
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Cette commande simple nous donne déjà des renseignements :
* forum.debian-fr.org est un alias pour www.zehome.com.
* Son IP (IPV4 est 88.165.116.107)

Plus d'information ? Passons la même commande avec l'option -v (verbose)

 $ host -v forum.debian-fr.org localhost
 Trying &quot;forum.debian-fr.org&quot;
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 11492
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;forum.debian-fr.org.		IN	A
 
 ;; ANSWER SECTION:
 forum.debian-fr.org.	37939	IN	CNAME	www.zehome.com.
 www.zehome.com.		37941	IN	A	88.165.116.107
 
 ;; AUTHORITY SECTION:
 zehome.com.		37941	IN	NS	ns.kimsufi.com.
 zehome.com.		37941	IN	NS	ns0.zehome.com.
 zehome.com.		37941	IN	NS	daboog.zehome.com.
 
 ;; ADDITIONAL SECTION:
 ns.kimsufi.com.		85955	IN	A	213.186.33.199
 
 Received 161 bytes from 127.0.0.1#53 in 1 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 62379
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	AAAA
 
 ;; AUTHORITY SECTION:
 zehome.com.		10355	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 7678
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	MX
 
 ;; AUTHORITY SECTION:
 zehome.com.		10377	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms

Avec l'option -v (verbose) c'est tout de suite plus compliqué...

Quelques remarques sur ce résultat :

* forum.debian-fr.org est un alias pour www.zehome.com;
* Son IP est 88.165.116.107;
* Ce domaine est géré par les sevreurs DNS daboog.zehome.com, ns.kimsufi.com et ns0.zehome.com;
* Il ne dispose pas d'IPV6 (pas de réponse à la question IN AAAA);
* Le [[BIND#SOA|SOA]] pour ce domaine est ns0.zehome.com
* Le mail de l'administrateur est ed@zehome.com (ed.zehome.com - ici le point vaut un arobase)

La même chose, sur un domaine plus important

 $ host www.google.fr 127.0.0.1
 Using domain server:
 Name: 127.0.0.1
 Address: 127.0.0.1#53
 Aliases: 
 
 www.google.fr is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

-www.google.fr est un alias pour www.google.com
-www.google.com possède plusieurs adresses IP

C'est possible, et cela s'appelle le &quot;round-robin&quot;... Tourniquet en Français, cet algorithme d'ordonnancement permet d'attribuer des temps aux processus, ici, il s'agit de faire tourner les IP, afin que tous les serveurs reçoivent leur part de charge...

=== La Configuration ===

L'installation de Bind9 à générée les fichiers suivants :

 # cd /etc/bind
 lol:/etc/bind# vdir
 total 52
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.0
 -rw-r--r-- 1 root root  271 jun 10 22:58 db.127
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.255
 -rw-r--r-- 1 root root  353 jun 10 22:58 db.empty
 -rw-r--r-- 1 root root  270 jun 10 22:58 db.local
 -rw-r--r-- 1 root root 2994 aoû  3 21:30 db.root
 -rw-r--r-- 1 root bind 1125 jui 21 22:19 named.conf
 -rw-r--r-- 1 root bind  278 aoû  3 10:37 named.conf.local
 -rw-r--r-- 1 root bind  572 jun 10 22:58 named.conf.options
 -rw-r----- 1 bind bind   77 jui 20 17:25 rndc.key
 -rw-r--r-- 1 root root 1317 jun 10 22:58 zones.rfc1918

Le fichier principal (apuré des commentaires) :

 # cat /etc/bind/named.conf
 
 include &quot;/etc/bind/named.conf.options&quot;;
 
 zone &quot;.&quot; {
 	type hint;
 	file &quot;/etc/bind/db.root&quot;;
 };
 
 zone &quot;localhost&quot; {
 	type master;
 	file &quot;/etc/bind/db.local&quot;;
 };
 
 zone &quot;127.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.127&quot;;
 };
 
 zone &quot;0.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.0&quot;;
 };
 
 zone &quot;255.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.255&quot;;
 };
 
 include &quot;/etc/bind/named.conf.local&quot;;

Ce fichier renvoie vers deux fichiers de configurations : named.conf.options et named.conf.local

C'est dans ces deux fichiers qu'il faudra mettre vos configurations personnelles, le fichier named.conf ne devant en principe pas être modifié.

Le fichier named.conf déclare plusieures zones, presque toutes destinées à la résolution inverse

==== La zone &quot;.&quot; ====

La zone root est primordiale.
Ce fichier contient toutes les informations sur les root-servers sans lesquels notre DNS ne peut fonctionner.
Ce fichier évolue peu.

 lol:/etc/bind# cat db.root
 
 ;       This file holds the information on root name servers needed to
 ;       initialize cache of Internet domain name servers
 ;       (e.g. reference this file in the &quot;cache  .  &lt;file&gt;&quot;
 ;       configuration file of BIND domain name servers).
 ;
 ;       This file is made available by InterNIC 
 ;       under anonymous FTP as
 ;           file                /domain/named.root
 ;           on server           FTP.INTERNIC.NET
 ;       -OR-                    RS.INTERNIC.NET
 ;
 ;       last update:    Feb 04, 2008
 ;       related version of root zone:   2008020400
 ;
 ; formerly NS.INTERNIC.NET
 ;
 .                        3600000  IN  NS    A.ROOT-SERVERS.NET.
 A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
 A.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:BA3E::2:30
 ;
 ; formerly NS1.ISI.EDU
 ;
 .                        3600000      NS    B.ROOT-SERVERS.NET.
 B.ROOT-SERVERS.NET.      3600000      A     192.228.79.201
 ;
 ; formerly C.PSI.NET
 ;
 .                        3600000      NS    C.ROOT-SERVERS.NET.
 C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
 ;
 ; formerly TERP.UMD.EDU
 ;
 .                        3600000      NS    D.ROOT-SERVERS.NET.
 D.ROOT-SERVERS.NET.      3600000      A     128.8.10.90
 ;
 ; formerly NS.NASA.GOV
 ;
 .                        3600000      NS    E.ROOT-SERVERS.NET.
 E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
 ;
 ; formerly NS.ISC.ORG
 ;
 .                        3600000      NS    F.ROOT-SERVERS.NET.
 F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
 F.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2f::f
 ;
 ; formerly NS.NIC.DDN.MIL
 ;
 .                        3600000      NS    G.ROOT-SERVERS.NET.
 G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
 ;
 ; formerly AOS.ARL.ARMY.MIL
 ;
 .                        3600000      NS    H.ROOT-SERVERS.NET.
 H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
 H.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:1::803f:235
 ;
 ; formerly NIC.NORDU.NET
 ;
 .                        3600000      NS    I.ROOT-SERVERS.NET.
 I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
 ;
 ; operated by VeriSign, Inc.
 ;
 .                        3600000      NS    J.ROOT-SERVERS.NET.
 J.ROOT-SERVERS.NET.      3600000      A     192.58.128.30
 J.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:C27::2:30
 ;
 ; operated by RIPE NCC
 ;
 .                        3600000      NS    K.ROOT-SERVERS.NET.
 K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129 
 K.ROOT-SERVERS.NET.      3600000      AAAA  2001:7fd::1
 ;
 ; operated by ICANN
 ;
 .                        3600000      NS    L.ROOT-SERVERS.NET.
 L.ROOT-SERVERS.NET.      3600000      A     199.7.83.42
 ;
 ; operated by WIDE
 ;
 .                        3600000      NS    M.ROOT-SERVERS.NET.
 M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
 M.ROOT-SERVERS.NET.      3600000      AAAA  2001:dc3::35
 ; End of File

==== La zone &quot;localhost&quot; ====

 # cat db.local 
 ;
 ; BIND data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      2		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 @	IN	A	127.0.0.1
 @	IN	AAAA	::1

Peu utilisée en général, elle permet de résoudre localhost : 

La structure de ce dernier fichier est un peu déroutante au début, emplie de @ . A AAAA SOA et autres IN que nous détaillerons plus loin.
Nous remarquons que localhost posède deux IP : 127.0.0.1 (IPV4) et ::1 (IPV6) vous le saviez probablement déjà!

==== Les zones in-addr.arpa ====

Nous venons de voir les fichiers qui permettent de résoudre l'adresse d'une machine à partir de son nom. Or, il arrive que certains mécanismes réclament l'inverse, c'est à dire trouver le (les) noms associés à des IP.

Les zones in-addr.arpa servent à ça.

Voici la zone inverse pour localhost :

 # cat db.127 
 ;
 ; BIND reverse data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      1		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 1.0.0	IN	PTR	localhost.

La notation est ici inversée.
Si nous cherchons dans la zone 127 l'adresse 0.0.1 nous tomberons sur localhost =&gt; 1.0.0 IN PTR localhost.

Par exemple, Pour l'adresse 192.1.2.3, nous obtenons le nom de domaine 3.2.1.192.in-addr.arpa.

== Contenu d'une Zone ==

Une zone contient deux enregistrements obligatoires :

* SOA
* NS

=== SOA ===

SOA (Start Of Authority). Le champ SOA indique quel est le serveur « maitre ». Ce serveur peut-avoir plusieurs serveurs esclaves

 $ host -t soa google.fr
 google.fr has SOA record ns1.google.com. dns-admin.google.com. 1423257 21600 3600 1209600 300

Nous savons dons que le serveur ns1.google.com est le serveur maître du domaine google.com.
Et nous avons l'adresse email du responsable : dns-admin@google.com (l'arobase est remplacé par un point dans le fichier de zone)

L'enregistrement SOA contient un certain nombre d'enregistrements et de paramètres:

==== Le nom du primaire ====

 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici.

C'est le nom du serveur primaire pour la zone.
L'adresse de courrier électronique du responsable technique de la zone (zone-contact).
Il faut l'écrire en replaçant le @ par un point. On a alors par exemple: root@inria.fr qui devient root.inria.fr

==== A, AAAA, MX, CNAME, etc. ====

Les types d'enregistrements sont: A, AAAA, MX, CNAME, NS, SOA, PTR, TXT, HINFO, WKS, RP, MA, MB.

===== A (Address) =====

C'est l'enregistrement le plus courant. Le DNS a été créé en grande partie pour ça...
Le champ A (Address) fait correspondre un nom à une adresse IPv4.

nom     IN      A       193.10.20.30

Dans le cas d'une machine qui dispose de plus d'une adresse IP (un routeur ou une machine avec plusieurs cartes), il faut indiquer indiquer un enregistrements A par adresse, mais il faut alors que tous les enregistrements PTR pointent vers ce nom là.

===== AAAA (Address IPV6) =====

Idem au champ A, mais correspond à une adresse de type IPV6

===== NS (Name Server) =====

Le champ NS (Name Server) indique le nom d'un serveur de noms. Il peut y avoir plusieurs champs NS s'il y a plusieurs serveurs de noms...

===== CNAME (Common Name) =====

Le champ CNAME (Common Name) est utilisé pour créer des alias. Un &quot;vrai&quot; nom doit être préalablement déclaré avec la variable A, un alias peut ensuite être créer qui pointera vers celui-ci.

===== MX (Mail eXchanger) =====

Le champ MX (Mail eXchanger), est utilé pour le protocole SMTP ou TXT.

Il indique pour un nom de domaine quel est la machine à laquelle il faut envoyer le courrier pour ce domaine.

Si plusieurs enregistrements MX sont présents, il faut leur attribuer un poids... Le MTA (Mail transfert agent) tentera d'envoyer le courrier en premier à la machine ayant le poids associé le plus faible, puis ensuite dans l'ordre croissant des poids.

Si la machine qui relaie le courrier est dans la liste des MX pour le domaine, elle envoie le courrier aux machines de poids inférieur au sien.

nom     IN      MX      10      premier.relais.
        IN      MX      20      second.relais.

==== Le numéro de série de la zone ====

Il permet aux serveurs secondaires qui interrogent régulièrement le serveur primaire de chaque zone de déterminer quand la zone a été mise à jour.



==== L'intervalle entre les rafraichissements (refresh) ====

Temps, en seconde, au bout duquel les serveurs « esclaves » devront demander à rafraichir leur données pour cette zone. 3600 secondes dans l'exemple ci-dessous, soit une heure. 

 3600           ; Refresh

La valeur conseillée est 24 heures, soit 86400 secondes.

==== L'intervalle entre les rafraichissements (retry) ====

Durée, en secondes, à partir de laquelle un serveur esclave doit ré-essayer de se synchroniser en cas d'échec du rafraichissement. Ici toutes les 300 secondes, soit toutes les 5 minutes. 

 300            ; Retry

La valeur conseillée est 6 heures, soit 21600 secondes.

==== La durée d'expiration des enregistrements d'un secondaire ====

En cas d'échec des tentatives de synchronisation, indique le temps (en secondes) au bout duquel les serveurs secondaires devront considérer qu'ils ne savent plus répondre aux requêtes concernant cette zone.

 2419200          ; Expire

La valeur conseillée est de 41 jours, soit 3600000 secondes.

==== La durée de vie par défaut des enregistrements (default TTL) ====

Durée de vie de l'information fournie.
Les serveurs DNS récursifs conserveront en cache les informations récoltées pendant la durée indiquée dans ce paramètre. 0 indique que les valeurs ne doivent pas être conservées en cache.

 1600 )           ; Negative Cache TTL

La valeur conseillée est de 24 heures, soit 86400 secondes.

==== Le symbole « @ » ====

Dans un fichier de configuration de zone, ce symbole représente exactement le nom de domaine de la zone. Par exemple, lorsque nous allons créer notre zone maison.mrs, écrire : 

 maison.mrs.  IN SOA ...

Nous pourrons écrire : 

 @            IN SOA ...

=== NS (Name Server) ===

Cet enregistrement indique une délégation pour la gestion du nom donné. C'est à dire que le nom donné devient une zone, dont la gestion est déléguée au serveur indiqué en partie droite.

L'enregistrement donne le nom d'un des serveurs de noms autoritaire pour la zone, comme il y a toujours plus d'un serveur de noms pour une zone, on répète l'enregistrement NS autant de fois qu'il y a de serveurs pour la zone.

Quand pour un nom, on a des enregistrements NS, il est interdit de faire figurer dans la zone parente (celle là) d'autres enregistrements. S'il y a à faire figurer des enregistrements, il faut les mettre dans la zone fille.

zone    IN      NS      serveur.nom.de.domaine.

          IN      NS      autreServeur.nom.de.domaine.

          IN      NS      encoreUn.autreNom.de.domaine.

== Créons notre première zone ==

Maintenant que les explications indigestes sont faites... 
La meilleure façon de comprendre, est d'appliquer à son réseau local sa propre zone!

=== La zone chezmoi.ici ===

Pour cet exemple j'ai pris un nom de domaine bidon, c'est tout a fait possible, vous pouvez donner n'importe quel nom à votre Intranet!

Notre serveur s'appelle tebilepas il dispose de l'IP 192.168.1.254

Le domaine est chezmoi.ici

Nous disposons d'assez d'informations pour créer la zone chezmoi.ici

Créons d'abord dans /etc/bind/ un fichier nommé : db.chezmoi.ici qui contiendrai ceci :

 $TTL    1600
 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. (
                         2009012907       ; Serial
                         604800           ; Refresh
                         86400            ; Retry
                         2419200          ; Expire
                         1600 )           ; Negative Cache TTL
 
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.
 chezmoi.ici.    IN      A       192.168.1.254
 tebilepas  IN      A       192.168.1.254
 coucou     IN      A       192.168.1.1
 pourquoi   IN      CNAME   coucou
 tespascheztoi      IN      CNAME   forum.debian-fr.org.

Nous aurions pu écrire :
 @         IN    NS      tebilepas.chezmoi.ici.
à la place de (cela revient au même)
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.

Nous aurions aussi pu éviter les commentaires (par exemple : ;Serial) mais pour les explications ce sera plus facile.

Ce sera suffisant pour commencer!

Pour que cette zone soit prise en compte, nous devons maintenant l'inclure dans le fichier /etc/bind/named.conf.local

Ceci devrait permettre de répondre aux requêtes de type NS pour le domaine maison.mrs, de répondre aussi aux requêtes de type A pour debvirt.maison.mrs et pour test1.maison.mrs, constater aussi que les alias fonctionnent dans et hors du domaine. 

Il nous faut maintenant indiquer à bind que cette zone existe. Nous allons le faire dans le fichier /etc/bind/named.conf.local : 

 zone &quot;chezmoi.ici&quot; {
         type master;
         file &quot;/etc/bind/db.chezmoi.ici&quot;;
         };

Nous redémarrons notre serveur bind

 # service bind9 restart
 Stopping domain name service...: bind9 waiting for pid 1353 to die.
 Starting domain name service...: bind9.

Et nous testons...

 $ host -a chezmoi.ici localhost
 Trying &quot;chezmoi.ici&quot;
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 46986
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;chezmoi.ici.			IN	ANY
 
 ;; ANSWER SECTION:
 chezmoi.ici.		1600	IN	SOA	tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. 2009012907 604800 86400 2419200 1600
 chezmoi.ici.		1600	IN	NS	tebilepas.chezmoi.ici.
 chezmoi.ici.		1600	IN	A	192.168.1.254
 
 ;; ADDITIONAL SECTION:
 tebilepas.chezmoi.ici.	1600	IN	A	192.168.1.254
 
 Received 126 bytes from ::1#53 in 5 ms

 $ host coucou.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 coucou.chezmoi.ici has address 192.168.1.1

 $ host pourquoi.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 pourquoi.chezmoi.ici is an alias for coucou.chezmoi.ici.
 coucou.chezmoi.ici has address 192.168.1.1

 $ host ailleurs.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ailleurs.chezmoi.ici is an alias for forum.debian-fr.org.
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Comme vous avez pu le constater, votre DNS fonctionne parfaitement, il renseigne nos machines sur le réseau local, et il pourvoit à nos demandes d'IP Internet !

ToDo : Conclusion - Round-robin

[[Category:Serveurs]]</text>
      <sha1>qhhgzmbodm87j5oigfeu349zfzg4n8n</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1848</id>
      <parentid>1847</parentid>
      <timestamp>2010-08-05T09:03:04Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Premiers contact */</comment>
      <text xml:space="preserve" bytes="22423">{{Modèle:Ébauche|DNS}}

'''Créer un serveur DNS pour votre réseau local'''

== Qu'est-ce que c'est ? ==

Un Domain Name System (ou DNS, système de noms de domaine) est un service permettant d'établir une correspondance entre une adresse IP et un nom de domaine et, plus généralement, de trouver une information à partir d'un nom de domaine.

Tous les ordinateurs pour communiquer entre eux doivent posséder une adresse IP. Ces adresses sont numériques, elles sont sous cette forme pour les adresses IPV4 : www.xxx.yyy.zzz; et de cette forme pour les adresses IPV6 : aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh.

Ces adresses sont associées à des noms, plus simples à retenir pour les humains, appelés noms de domaines. Résoudre un nom de domaine consiste à trouver l'adresse IP qui lui est associée.

Vous préférez taper google.com ou 72.14.204.103 dans votre navigateur ?

== Pourquoi faire ? ==

* Simple curiosité, pour comprendre son fonctionnement;
* Être autonome des DNS de son FAI (Fournisseur d'accès Internet) en cas d'arrêt de ceux-ci ou par souci de confidentialité;
* Résoudre les adresses de son réseau interne (Intranet) simplement, sans être obligé de remplir le fichier hosts de toutes vos machines;
* Résoudre les &quot;adresses inverses&quot;: obtenir un nom de domaine ou de machine avec une IP.

Cela fait suffisamment de raisons ? Alors continuons!

== Avertissement ==

Nous n'aborderons pas ici les problèmes de sécurité, qui peuvent être nombreux sur un serveur DNS. Le DNS que nous allons construire est destiné UNIQUEMENT à notre réseau local, il n'est pas accessible depuis Internet.

== Installation ==

 # apt-get install bind9 bind9-host bind9utils
 
Pour information, trois bogues sur bind9... Vous pouvez tout de même installer sans soucis

 Récupération des rapports de bogue... Fait  
 Analyse des informations Trouvé/Corrigé... Fait  
 Bogues de gravité grave sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;done&gt;
  #516616 - bind9 locks up on start on mipsel and mips (Corrigé : bind9/1:9.7.0.dfsg.1-1)
    Réuni avec : 520688
 Bogues de gravité critical sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #575916 - bind9: assertion fails in name.c:1699 INSIST(offset &lt;= length)
 Bogues de gravité serious sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #584585 - file conflict with libisc50 (Corrigé : 1:9.7.0.dsfg~b3-1)
 Résumé :
  bind9 (3 bogues)

Vérifions que bind écoute bien sur toutes nos adresses :

 # netstat -ntulp | grep named
 tcp        0      0 192.168.0.1:53          0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      2832/named
 tcp6       0      0 :::53                   :::*                    LISTEN      2832/named
 tcp6       0      0 ::1:953                 :::*                    LISTEN      2832/named
 udp        0      0 192.168.0.1:53          0.0.0.0:*                           2832/named
 udp        0      0 127.0.0.1:53            0.0.0.0:*                           2832/named
 udp6       0      0 :::53                   :::*                                2832/named

== Premiers contact ==

Ça y est, notre DNS est déjà fonctionnel...
Il remplit son rôle de DNS récursif et répond à nos demandes de résolution!
Vous ne me croyez pas ?

 $ host forum.debian-fr.org 127.0.0.1
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Cette commande simple nous donne déjà des renseignements :
* forum.debian-fr.org est un alias pour www.zehome.com.
* Son IP (IPV4 est 88.165.116.107)

Plus d'information ? Passons la même commande avec l'option -v (verbose)

 $ host -v forum.debian-fr.org localhost
 Trying &quot;forum.debian-fr.org&quot;
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 11492
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;forum.debian-fr.org.		IN	A
 
 ;; ANSWER SECTION:
 forum.debian-fr.org.	37939	IN	CNAME	www.zehome.com.
 www.zehome.com.		37941	IN	A	88.165.116.107
 
 ;; AUTHORITY SECTION:
 zehome.com.		37941	IN	NS	ns.kimsufi.com.
 zehome.com.		37941	IN	NS	ns0.zehome.com.
 zehome.com.		37941	IN	NS	daboog.zehome.com.
 
 ;; ADDITIONAL SECTION:
 ns.kimsufi.com.		85955	IN	A	213.186.33.199
 
 Received 161 bytes from 127.0.0.1#53 in 1 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 62379
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	AAAA
 
 ;; AUTHORITY SECTION:
 zehome.com.		10355	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 7678
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	MX
 
 ;; AUTHORITY SECTION:
 zehome.com.		10377	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms

Avec l'option -v (verbose) c'est tout de suite plus compliqué...

Quelques remarques sur ce résultat :

* forum.debian-fr.org est un alias pour www.zehome.com;
* Son IP est 88.165.116.107;
* Ce domaine est géré par les serveurs DNS daboog.zehome.com, ns.kimsufi.com et ns0.zehome.com;
* Il ne dispose pas d'IPV6 (pas de réponse à la question IN AAAA);
* Le [[BIND#SOA|SOA]] pour ce domaine est ns0.zehome.com
* Le mail de l'administrateur est ed@zehome.com (ed.zehome.com - ici le point vaut un arobase)

La même chose, sur un domaine plus important

 $ host www.google.fr 127.0.0.1
 Using domain server:
 Name: 127.0.0.1
 Address: 127.0.0.1#53
 Aliases: 
 
 www.google.fr is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

-www.google.fr est un alias pour www.google.com
-www.google.com possède plusieurs adresses IP

C'est possible, et cela s'appelle le &quot;round-robin&quot;... Tourniquet en Français, cet algorithme d'ordonnancement permet d'attribuer des temps aux processus, ici, il s'agit de faire tourner les IP, afin que tous les serveurs reçoivent leur part de charge...

=== La Configuration ===

L'installation de Bind9 à générée les fichiers suivants :

 # cd /etc/bind
 lol:/etc/bind# vdir
 total 52
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.0
 -rw-r--r-- 1 root root  271 jun 10 22:58 db.127
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.255
 -rw-r--r-- 1 root root  353 jun 10 22:58 db.empty
 -rw-r--r-- 1 root root  270 jun 10 22:58 db.local
 -rw-r--r-- 1 root root 2994 aoû  3 21:30 db.root
 -rw-r--r-- 1 root bind 1125 jui 21 22:19 named.conf
 -rw-r--r-- 1 root bind  278 aoû  3 10:37 named.conf.local
 -rw-r--r-- 1 root bind  572 jun 10 22:58 named.conf.options
 -rw-r----- 1 bind bind   77 jui 20 17:25 rndc.key
 -rw-r--r-- 1 root root 1317 jun 10 22:58 zones.rfc1918

Le fichier principal (épuré des commentaires) :

 # cat /etc/bind/named.conf
 
 include &quot;/etc/bind/named.conf.options&quot;;
 
 zone &quot;.&quot; {
 	type hint;
 	file &quot;/etc/bind/db.root&quot;;
 };
 
 zone &quot;localhost&quot; {
 	type master;
 	file &quot;/etc/bind/db.local&quot;;
 };
 
 zone &quot;127.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.127&quot;;
 };
 
 zone &quot;0.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.0&quot;;
 };
 
 zone &quot;255.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.255&quot;;
 };
 
 include &quot;/etc/bind/named.conf.local&quot;;

Ce fichier renvoie vers deux fichiers de configurations : named.conf.options et named.conf.local

C'est dans ces deux fichiers qu'il faudra mettre vos configurations personnelles, le fichier named.conf ne devant en principe pas être modifié.

Le fichier named.conf déclare plusieurs zones, presque toutes destinées à la résolution inverse

==== La zone &quot;.&quot; ====

La zone root est primordiale.
Ce fichier contient toutes les informations sur les root-servers sans lesquels notre DNS ne peut fonctionner.
Ce fichier évolue peu.

 lol:/etc/bind# cat db.root
 
 ;       This file holds the information on root name servers needed to
 ;       initialize cache of Internet domain name servers
 ;       (e.g. reference this file in the &quot;cache  .  &lt;file&gt;&quot;
 ;       configuration file of BIND domain name servers).
 ;
 ;       This file is made available by InterNIC 
 ;       under anonymous FTP as
 ;           file                /domain/named.root
 ;           on server           FTP.INTERNIC.NET
 ;       -OR-                    RS.INTERNIC.NET
 ;
 ;       last update:    Feb 04, 2008
 ;       related version of root zone:   2008020400
 ;
 ; formerly NS.INTERNIC.NET
 ;
 .                        3600000  IN  NS    A.ROOT-SERVERS.NET.
 A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
 A.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:BA3E::2:30
 ;
 ; formerly NS1.ISI.EDU
 ;
 .                        3600000      NS    B.ROOT-SERVERS.NET.
 B.ROOT-SERVERS.NET.      3600000      A     192.228.79.201
 ;
 ; formerly C.PSI.NET
 ;
 .                        3600000      NS    C.ROOT-SERVERS.NET.
 C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
 ;
 ; formerly TERP.UMD.EDU
 ;
 .                        3600000      NS    D.ROOT-SERVERS.NET.
 D.ROOT-SERVERS.NET.      3600000      A     128.8.10.90
 ;
 ; formerly NS.NASA.GOV
 ;
 .                        3600000      NS    E.ROOT-SERVERS.NET.
 E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
 ;
 ; formerly NS.ISC.ORG
 ;
 .                        3600000      NS    F.ROOT-SERVERS.NET.
 F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
 F.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2f::f
 ;
 ; formerly NS.NIC.DDN.MIL
 ;
 .                        3600000      NS    G.ROOT-SERVERS.NET.
 G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
 ;
 ; formerly AOS.ARL.ARMY.MIL
 ;
 .                        3600000      NS    H.ROOT-SERVERS.NET.
 H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
 H.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:1::803f:235
 ;
 ; formerly NIC.NORDU.NET
 ;
 .                        3600000      NS    I.ROOT-SERVERS.NET.
 I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
 ;
 ; operated by VeriSign, Inc.
 ;
 .                        3600000      NS    J.ROOT-SERVERS.NET.
 J.ROOT-SERVERS.NET.      3600000      A     192.58.128.30
 J.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:C27::2:30
 ;
 ; operated by RIPE NCC
 ;
 .                        3600000      NS    K.ROOT-SERVERS.NET.
 K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129 
 K.ROOT-SERVERS.NET.      3600000      AAAA  2001:7fd::1
 ;
 ; operated by ICANN
 ;
 .                        3600000      NS    L.ROOT-SERVERS.NET.
 L.ROOT-SERVERS.NET.      3600000      A     199.7.83.42
 ;
 ; operated by WIDEaimer
 ;
 .                        3600000      NS    M.ROOT-SERVERS.NET.
 M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
 M.ROOT-SERVERS.NET.      3600000      AAAA  2001:dc3::35
 ; End of File

==== La zone &quot;localhost&quot; ====

 # cat db.local 
 ;
 ; BIND data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      2		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 @	IN	A	127.0.0.1
 @	IN	AAAA	::1

Peu utilisée en général, elle permet de résoudre localhost : 

La structure de ce dernier fichier est un peu déroutante au début, emplie de @ . A AAAA SOA et autres IN que nous détaillerons plus loin.
Nous remarquons que localhost possède deux IP : 127.0.0.1 (IPV4) et ::1 (IPV6) vous le saviez probablement déjà!

==== Les zones in-addr.arpa ====

Nous venons de voir les fichiers qui permettent de résoudre l'adresse d'une machine à partir de son nom. Or, il arrive que certains mécanismes réclament l'inverse, c'est à dire trouver le (les) noms associés à des IP.

Les zones in-addr.arpa servent à ça.

Voici la zone inverse pour localhost :

 # cat db.127 
 ;
 ; BIND reverse data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      1		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 1.0.0	IN	PTR	localhost.

La notation est ici inversée.
Si nous cherchons dans la zone 127 l'adresse 0.0.1 nous tomberons sur localhost =&gt; 1.0.0 IN PTR localhost.

Par exemple, Pour l'adresse 192.1.2.3, nous obtenons le nom de domaine 3.2.1.192.in-addr.arpa.

== Contenu d'une Zone ==

Une zone contient deux enregistrements obligatoires :

* SOA
* NS

=== SOA ===

SOA (Start Of Authority). Le champ SOA indique quel est le serveur « maitre ». Ce serveur peut-avoir plusieurs serveurs esclaves

 $ host -t soa google.fr
 google.fr has SOA record ns1.google.com. dns-admin.google.com. 1423257 21600 3600 1209600 300

Nous savons dons que le serveur ns1.google.com est le serveur maître du domaine google.com.
Et nous avons l'adresse email du responsable : dns-admin@google.com (l'arobase est remplacé par un point dans le fichier de zone)

L'enregistrement SOA contient un certain nombre d'enregistrements et de paramètres:

==== Le nom du primaire ====

 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici.

C'est le nom du serveur primaire pour la zone.
L'adresse de courrier électronique du responsable technique de la zone (zone-contact).
Il faut l'écrire en replaçant le @ par un point. On a alors par exemple: root@inria.fr qui devient root.inria.fr

==== A, AAAA, MX, CNAME, etc. ====

Les types d'enregistrements sont: A, AAAA, MX, CNAME, NS, SOA, PTR, TXT, HINFO, WKS, RP, MA, MB.

===== A (Address) =====

C'est l'enregistrement le plus courant. Le DNS a été créé en grande partie pour ça...
Le champ A (Address) fait correspondre un nom à une adresse IPv4.

nom     IN      A       193.10.20.30

Dans le cas d'une machine qui dispose de plus d'une adresse IP (un routeur ou une machine avec plusieurs cartes), il faut indiquer indiquer un enregistrements A par adresse, mais il faut alors que tous les enregistrements PTR pointent vers ce nom là.

===== AAAA (Address IPV6) =====

Idem au champ A, mais correspond à une adresse de type IPV6

===== NS (Name Server) =====

Le champ NS (Name Server) indique le nom d'un serveur de noms. Il peut y avoir plusieurs champs NS s'il y a plusieurs serveurs de noms...

===== CNAME (Common Name) =====

Le champ CNAME (Common Name) est utilisé pour créer des alias. Un &quot;vrai&quot; nom doit être préalablement déclaré avec la variable A, un alias peut ensuite être créer qui pointera vers celui-ci.

===== MX (Mail eXchanger) =====

Le champ MX (Mail eXchanger), est utilé pour le protocole SMTP ou TXT.

Il indique pour un nom de domaine quel est la machine à laquelle il faut envoyer le courrier pour ce domaine.

Si plusieurs enregistrements MX sont présents, il faut leur attribuer un poids... Le MTA (Mail transfert agent) tentera d'envoyer le courrier en premier à la machine ayant le poids associé le plus faible, puis ensuite dans l'ordre croissant des poids.

Si la machine qui relaie le courrier est dans la liste des MX pour le domaine, elle envoie le courrier aux machines de poids inférieur au sien.

nom     IN      MX      10      premier.relais.
        IN      MX      20      second.relais.

==== Le numéro de série de la zone ====

Il permet aux serveurs secondaires qui interrogent régulièrement le serveur primaire de chaque zone de déterminer quand la zone a été mise à jour.



==== L'intervalle entre les rafraichissements (refresh) ====

Temps, en seconde, au bout duquel les serveurs « esclaves » devront demander à rafraichir leur données pour cette zone. 3600 secondes dans l'exemple ci-dessous, soit une heure. 

 3600           ; Refresh

La valeur conseillée est 24 heures, soit 86400 secondes.

==== L'intervalle entre les rafraichissements (retry) ====

Durée, en secondes, à partir de laquelle un serveur esclave doit ré-essayer de se synchroniser en cas d'échec du rafraichissement. Ici toutes les 300 secondes, soit toutes les 5 minutes. 

 300            ; Retry

La valeur conseillée est 6 heures, soit 21600 secondes.

==== La durée d'expiration des enregistrements d'un secondaire ====

En cas d'échec des tentatives de synchronisation, indique le temps (en secondes) au bout duquel les serveurs secondaires devront considérer qu'ils ne savent plus répondre aux requêtes concernant cette zone.

 2419200          ; Expire

La valeur conseillée est de 41 jours, soit 3600000 secondes.

==== La durée de vie par défaut des enregistrements (default TTL) ====

Durée de vie de l'information fournie.
Les serveurs DNS récursifs conserveront en cache les informations récoltées pendant la durée indiquée dans ce paramètre. 0 indique que les valeurs ne doivent pas être conservées en cache.

 1600 )           ; Negative Cache TTL

La valeur conseillée est de 24 heures, soit 86400 secondes.

==== Le symbole « @ » ====

Dans un fichier de configuration de zone, ce symbole représente exactement le nom de domaine de la zone. Par exemple, lorsque nous allons créer notre zone maison.mrs, écrire : 

 maison.mrs.  IN SOA ...

Nous pourrons écrire : 

 @            IN SOA ...

=== NS (Name Server) ===

Cet enregistrement indique une délégation pour la gestion du nom donné. C'est à dire que le nom donné devient une zone, dont la gestion est déléguée au serveur indiqué en partie droite.

L'enregistrement donne le nom d'un des serveurs de noms autoritaire pour la zone, comme il y a toujours plus d'un serveur de noms pour une zone, on répète l'enregistrement NS autant de fois qu'il y a de serveurs pour la zone.

Quand pour un nom, on a des enregistrements NS, il est interdit de faire figurer dans la zone parente (celle là) d'autres enregistrements. S'il y a à faire figurer des enregistrements, il faut les mettre dans la zone fille.

zone    IN      NS      serveur.nom.de.domaine.

          IN      NS      autreServeur.nom.de.domaine.

          IN      NS      encoreUn.autreNom.de.domaine.

== Créons notre première zone ==

Maintenant que les explications indigestes sont faites... 
La meilleure façon de comprendre, est d'appliquer à son réseau local sa propre zone!

=== La zone chezmoi.ici ===

Pour cet exemple j'ai pris un nom de domaine bidon, c'est tout a fait possible, vous pouvez donner n'importe quel nom à votre Intranet!

Notre serveur s'appelle tebilepas il dispose de l'IP 192.168.1.254

Le domaine est chezmoi.ici

Nous disposons d'assez d'informations pour créer la zone chezmoi.ici

Créons d'abord dans /etc/bind/ un fichier nommé : db.chezmoi.ici qui contiendrai ceci :

 $TTL    1600
 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. (
                         2009012907       ; Serial
                         604800           ; Refresh
                         86400            ; Retry
                         2419200          ; Expire
                         1600 )           ; Negative Cache TTL
 
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.
 chezmoi.ici.    IN      A       192.168.1.254
 tebilepas  IN      A       192.168.1.254
 coucou     IN      A       192.168.1.1
 pourquoi   IN      CNAME   coucou
 tespascheztoi      IN      CNAME   forum.debian-fr.org.

Nous aurions pu écrire :
 @         IN    NS      tebilepas.chezmoi.ici.
à la place de (cela revient au même)
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.

Nous aurions aussi pu éviter les commentaires (par exemple : ;Serial) mais pour les explications ce sera plus facile.

Ce sera suffisant pour commencer!

Pour que cette zone soit prise en compte, nous devons maintenant l'inclure dans le fichier /etc/bind/named.conf.local

Ceci devrait permettre de répondre aux requêtes de type NS pour le domaine maison.mrs, de répondre aussi aux requêtes de type A pour debvirt.maison.mrs et pour test1.maison.mrs, constater aussi que les alias fonctionnent dans et hors du domaine. 

Il nous faut maintenant indiquer à bind que cette zone existe. Nous allons le faire dans le fichier /etc/bind/named.conf.local : 

 zone &quot;chezmoi.ici&quot; {
         type master;
         file &quot;/etc/bind/db.chezmoi.ici&quot;;
         };

Nous redémarrons notre serveur bind

 # service bind9 restart
 Stopping domain name service...: bind9 waiting for pid 1353 to die.
 Starting domain name service...: bind9.

Et nous testons...

 $ host -a chezmoi.ici localhost
 Trying &quot;chezmoi.ici&quot;
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 46986
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;chezmoi.ici.			IN	ANY
 
 ;; ANSWER SECTION:
 chezmoi.ici.		1600	IN	SOA	tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. 2009012907 604800 86400 2419200 1600
 chezmoi.ici.		1600	IN	NS	tebilepas.chezmoi.ici.
 chezmoi.ici.		1600	IN	A	192.168.1.254
 
 ;; ADDITIONAL SECTION:
 tebilepas.chezmoi.ici.	1600	IN	A	192.168.1.254
 
 Received 126 bytes from ::1#53 in 5 ms

 $ host coucou.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 coucou.chezmoi.ici has address 192.168.1.1

 $ host pourquoi.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 pourquoi.chezmoi.ici is an alias for coucou.chezmoi.ici.
 coucou.chezmoi.ici has address 192.168.1.1

 $ host ailleurs.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ailleurs.chezmoi.ici is an alias for forum.debian-fr.org.
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Comme vous avez pu le constater, votre DNS fonctionne parfaitement, il renseigne nos machines sur le réseau local, et il pourvoit à nos demandes d'IP Internet !

ToDo : Conclusion - Round-robin

[[Category:Serveurs]]</text>
      <sha1>f5f7878p5elw8595qdmzn8g6k4tlb4p</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1850</id>
      <parentid>1848</parentid>
      <timestamp>2010-08-05T09:07:33Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* SOA */</comment>
      <text xml:space="preserve" bytes="22414">{{Modèle:Ébauche|DNS}}

'''Créer un serveur DNS pour votre réseau local'''

== Qu'est-ce que c'est ? ==

Un Domain Name System (ou DNS, système de noms de domaine) est un service permettant d'établir une correspondance entre une adresse IP et un nom de domaine et, plus généralement, de trouver une information à partir d'un nom de domaine.

Tous les ordinateurs pour communiquer entre eux doivent posséder une adresse IP. Ces adresses sont numériques, elles sont sous cette forme pour les adresses IPV4 : www.xxx.yyy.zzz; et de cette forme pour les adresses IPV6 : aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh.

Ces adresses sont associées à des noms, plus simples à retenir pour les humains, appelés noms de domaines. Résoudre un nom de domaine consiste à trouver l'adresse IP qui lui est associée.

Vous préférez taper google.com ou 72.14.204.103 dans votre navigateur ?

== Pourquoi faire ? ==

* Simple curiosité, pour comprendre son fonctionnement;
* Être autonome des DNS de son FAI (Fournisseur d'accès Internet) en cas d'arrêt de ceux-ci ou par souci de confidentialité;
* Résoudre les adresses de son réseau interne (Intranet) simplement, sans être obligé de remplir le fichier hosts de toutes vos machines;
* Résoudre les &quot;adresses inverses&quot;: obtenir un nom de domaine ou de machine avec une IP.

Cela fait suffisamment de raisons ? Alors continuons!

== Avertissement ==

Nous n'aborderons pas ici les problèmes de sécurité, qui peuvent être nombreux sur un serveur DNS. Le DNS que nous allons construire est destiné UNIQUEMENT à notre réseau local, il n'est pas accessible depuis Internet.

== Installation ==

 # apt-get install bind9 bind9-host bind9utils
 
Pour information, trois bogues sur bind9... Vous pouvez tout de même installer sans soucis

 Récupération des rapports de bogue... Fait  
 Analyse des informations Trouvé/Corrigé... Fait  
 Bogues de gravité grave sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;done&gt;
  #516616 - bind9 locks up on start on mipsel and mips (Corrigé : bind9/1:9.7.0.dfsg.1-1)
    Réuni avec : 520688
 Bogues de gravité critical sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #575916 - bind9: assertion fails in name.c:1699 INSIST(offset &lt;= length)
 Bogues de gravité serious sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #584585 - file conflict with libisc50 (Corrigé : 1:9.7.0.dsfg~b3-1)
 Résumé :
  bind9 (3 bogues)

Vérifions que bind écoute bien sur toutes nos adresses :

 # netstat -ntulp | grep named
 tcp        0      0 192.168.0.1:53          0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      2832/named
 tcp6       0      0 :::53                   :::*                    LISTEN      2832/named
 tcp6       0      0 ::1:953                 :::*                    LISTEN      2832/named
 udp        0      0 192.168.0.1:53          0.0.0.0:*                           2832/named
 udp        0      0 127.0.0.1:53            0.0.0.0:*                           2832/named
 udp6       0      0 :::53                   :::*                                2832/named

== Premiers contact ==

Ça y est, notre DNS est déjà fonctionnel...
Il remplit son rôle de DNS récursif et répond à nos demandes de résolution!
Vous ne me croyez pas ?

 $ host forum.debian-fr.org 127.0.0.1
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Cette commande simple nous donne déjà des renseignements :
* forum.debian-fr.org est un alias pour www.zehome.com.
* Son IP (IPV4 est 88.165.116.107)

Plus d'information ? Passons la même commande avec l'option -v (verbose)

 $ host -v forum.debian-fr.org localhost
 Trying &quot;forum.debian-fr.org&quot;
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 11492
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;forum.debian-fr.org.		IN	A
 
 ;; ANSWER SECTION:
 forum.debian-fr.org.	37939	IN	CNAME	www.zehome.com.
 www.zehome.com.		37941	IN	A	88.165.116.107
 
 ;; AUTHORITY SECTION:
 zehome.com.		37941	IN	NS	ns.kimsufi.com.
 zehome.com.		37941	IN	NS	ns0.zehome.com.
 zehome.com.		37941	IN	NS	daboog.zehome.com.
 
 ;; ADDITIONAL SECTION:
 ns.kimsufi.com.		85955	IN	A	213.186.33.199
 
 Received 161 bytes from 127.0.0.1#53 in 1 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 62379
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	AAAA
 
 ;; AUTHORITY SECTION:
 zehome.com.		10355	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 7678
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	MX
 
 ;; AUTHORITY SECTION:
 zehome.com.		10377	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms

Avec l'option -v (verbose) c'est tout de suite plus compliqué...

Quelques remarques sur ce résultat :

* forum.debian-fr.org est un alias pour www.zehome.com;
* Son IP est 88.165.116.107;
* Ce domaine est géré par les serveurs DNS daboog.zehome.com, ns.kimsufi.com et ns0.zehome.com;
* Il ne dispose pas d'IPV6 (pas de réponse à la question IN AAAA);
* Le [[BIND#SOA|SOA]] pour ce domaine est ns0.zehome.com
* Le mail de l'administrateur est ed@zehome.com (ed.zehome.com - ici le point vaut un arobase)

La même chose, sur un domaine plus important

 $ host www.google.fr 127.0.0.1
 Using domain server:
 Name: 127.0.0.1
 Address: 127.0.0.1#53
 Aliases: 
 
 www.google.fr is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

-www.google.fr est un alias pour www.google.com
-www.google.com possède plusieurs adresses IP

C'est possible, et cela s'appelle le &quot;round-robin&quot;... Tourniquet en Français, cet algorithme d'ordonnancement permet d'attribuer des temps aux processus, ici, il s'agit de faire tourner les IP, afin que tous les serveurs reçoivent leur part de charge...

=== La Configuration ===

L'installation de Bind9 à générée les fichiers suivants :

 # cd /etc/bind
 lol:/etc/bind# vdir
 total 52
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.0
 -rw-r--r-- 1 root root  271 jun 10 22:58 db.127
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.255
 -rw-r--r-- 1 root root  353 jun 10 22:58 db.empty
 -rw-r--r-- 1 root root  270 jun 10 22:58 db.local
 -rw-r--r-- 1 root root 2994 aoû  3 21:30 db.root
 -rw-r--r-- 1 root bind 1125 jui 21 22:19 named.conf
 -rw-r--r-- 1 root bind  278 aoû  3 10:37 named.conf.local
 -rw-r--r-- 1 root bind  572 jun 10 22:58 named.conf.options
 -rw-r----- 1 bind bind   77 jui 20 17:25 rndc.key
 -rw-r--r-- 1 root root 1317 jun 10 22:58 zones.rfc1918

Le fichier principal (épuré des commentaires) :

 # cat /etc/bind/named.conf
 
 include &quot;/etc/bind/named.conf.options&quot;;
 
 zone &quot;.&quot; {
 	type hint;
 	file &quot;/etc/bind/db.root&quot;;
 };
 
 zone &quot;localhost&quot; {
 	type master;
 	file &quot;/etc/bind/db.local&quot;;
 };
 
 zone &quot;127.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.127&quot;;
 };
 
 zone &quot;0.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.0&quot;;
 };
 
 zone &quot;255.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.255&quot;;
 };
 
 include &quot;/etc/bind/named.conf.local&quot;;

Ce fichier renvoie vers deux fichiers de configurations : named.conf.options et named.conf.local

C'est dans ces deux fichiers qu'il faudra mettre vos configurations personnelles, le fichier named.conf ne devant en principe pas être modifié.

Le fichier named.conf déclare plusieurs zones, presque toutes destinées à la résolution inverse

==== La zone &quot;.&quot; ====

La zone root est primordiale.
Ce fichier contient toutes les informations sur les root-servers sans lesquels notre DNS ne peut fonctionner.
Ce fichier évolue peu.

 lol:/etc/bind# cat db.root
 
 ;       This file holds the information on root name servers needed to
 ;       initialize cache of Internet domain name servers
 ;       (e.g. reference this file in the &quot;cache  .  &lt;file&gt;&quot;
 ;       configuration file of BIND domain name servers).
 ;
 ;       This file is made available by InterNIC 
 ;       under anonymous FTP as
 ;           file                /domain/named.root
 ;           on server           FTP.INTERNIC.NET
 ;       -OR-                    RS.INTERNIC.NET
 ;
 ;       last update:    Feb 04, 2008
 ;       related version of root zone:   2008020400
 ;
 ; formerly NS.INTERNIC.NET
 ;
 .                        3600000  IN  NS    A.ROOT-SERVERS.NET.
 A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
 A.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:BA3E::2:30
 ;
 ; formerly NS1.ISI.EDU
 ;
 .                        3600000      NS    B.ROOT-SERVERS.NET.
 B.ROOT-SERVERS.NET.      3600000      A     192.228.79.201
 ;
 ; formerly C.PSI.NET
 ;
 .                        3600000      NS    C.ROOT-SERVERS.NET.
 C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
 ;
 ; formerly TERP.UMD.EDU
 ;
 .                        3600000      NS    D.ROOT-SERVERS.NET.
 D.ROOT-SERVERS.NET.      3600000      A     128.8.10.90
 ;
 ; formerly NS.NASA.GOV
 ;
 .                        3600000      NS    E.ROOT-SERVERS.NET.
 E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
 ;
 ; formerly NS.ISC.ORG
 ;
 .                        3600000      NS    F.ROOT-SERVERS.NET.
 F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
 F.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2f::f
 ;
 ; formerly NS.NIC.DDN.MIL
 ;
 .                        3600000      NS    G.ROOT-SERVERS.NET.
 G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
 ;
 ; formerly AOS.ARL.ARMY.MIL
 ;
 .                        3600000      NS    H.ROOT-SERVERS.NET.
 H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
 H.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:1::803f:235
 ;
 ; formerly NIC.NORDU.NET
 ;
 .                        3600000      NS    I.ROOT-SERVERS.NET.
 I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
 ;
 ; operated by VeriSign, Inc.
 ;
 .                        3600000      NS    J.ROOT-SERVERS.NET.
 J.ROOT-SERVERS.NET.      3600000      A     192.58.128.30
 J.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:C27::2:30
 ;
 ; operated by RIPE NCC
 ;
 .                        3600000      NS    K.ROOT-SERVERS.NET.
 K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129 
 K.ROOT-SERVERS.NET.      3600000      AAAA  2001:7fd::1
 ;
 ; operated by ICANN
 ;
 .                        3600000      NS    L.ROOT-SERVERS.NET.
 L.ROOT-SERVERS.NET.      3600000      A     199.7.83.42
 ;
 ; operated by WIDEaimer
 ;
 .                        3600000      NS    M.ROOT-SERVERS.NET.
 M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
 M.ROOT-SERVERS.NET.      3600000      AAAA  2001:dc3::35
 ; End of File

==== La zone &quot;localhost&quot; ====

 # cat db.local 
 ;
 ; BIND data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      2		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 @	IN	A	127.0.0.1
 @	IN	AAAA	::1

Peu utilisée en général, elle permet de résoudre localhost : 

La structure de ce dernier fichier est un peu déroutante au début, emplie de @ . A AAAA SOA et autres IN que nous détaillerons plus loin.
Nous remarquons que localhost possède deux IP : 127.0.0.1 (IPV4) et ::1 (IPV6) vous le saviez probablement déjà!

==== Les zones in-addr.arpa ====

Nous venons de voir les fichiers qui permettent de résoudre l'adresse d'une machine à partir de son nom. Or, il arrive que certains mécanismes réclament l'inverse, c'est à dire trouver le (les) noms associés à des IP.

Les zones in-addr.arpa servent à ça.

Voici la zone inverse pour localhost :

 # cat db.127 
 ;
 ; BIND reverse data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      1		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 1.0.0	IN	PTR	localhost.

La notation est ici inversée.
Si nous cherchons dans la zone 127 l'adresse 0.0.1 nous tomberons sur localhost =&gt; 1.0.0 IN PTR localhost.

Par exemple, Pour l'adresse 192.1.2.3, nous obtenons le nom de domaine 3.2.1.192.in-addr.arpa.

== Contenu d'une Zone ==

Une zone contient deux enregistrements obligatoires :

* SOA
* NS

=== SOA ===

SOA (Start Of Authority). Le champ SOA indique quel est le serveur « maitre ». Ce serveur peut-avoir plusieurs serveurs esclaves

 $ host -t soa google.fr
 google.fr has SOA record ns1.google.com. dns-admin.google.com. 1423257 21600 3600 1209600 300

Nous savons donc que le serveur ns1.google.com est le serveur maître du domaine google.com.
Et nous avons l'adresse email du responsable : dns-admin@google.com (l'arobase est remplacé par un point dans le fichier de zone)

L'enregistrement SOA contient un certain nombre d'enregistrements et de paramètres:

==== Le nom du primaire ====

 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici.

C'est le nom du serveur primaire pour la zone.
L'adresse de courrier électronique du responsable technique de la zone (zone-contact).
Il faut l'écrire en replaçant le @ par un point. On a alors par exemple: root@inria.fr qui devient root.inria.fr

==== A, AAAA, MX, CNAME, etc. ====

Les types d'enregistrements sont: A, AAAA, MX, CNAME, NS, SOA, PTR, TXT, HINFO, WKS, RP, MA, MB.

===== A (Address) =====

C'est l'enregistrement le plus courant. Le DNS a été créé en grande partie pour ça...
Le champ A (Address) fait correspondre un nom à une adresse IPv4.

nom     IN      A       193.10.20.30

Dans le cas d'une machine qui dispose de plus d'une adresse IP (un routeur ou une machine avec plusieurs cartes), il faut indiquer un enregistrement A par adresse, mais il faut alors que tous les enregistrements PTR pointent vers ce nom là.

===== AAAA (Address IPV6) =====

Idem au champ A, mais correspond à une adresse de type IPV6

===== NS (Name Server) =====

Le champ NS (Name Server) indique le nom d'un serveur de noms. Il peut y avoir plusieurs champs NS s'il y a plusieurs serveurs de noms...

===== CNAME (Common Name) =====

Le champ CNAME (Common Name) est utilisé pour créer des alias. Un &quot;vrai&quot; nom doit être préalablement déclaré avec la variable A, un alias peut ensuite être créé qui pointera vers celui-ci.

===== MX (Mail eXchanger) =====

Le champ MX (Mail eXchanger), est utile pour le protocole SMTP ou TXT.

Il indique pour un nom de domaine quelle est la machine à laquelle il faut envoyer le courrier pour ce domaine.

Si plusieurs enregistrements MX sont présents, il faut leur attribuer un poids... Le MTA (Mail transfert agent) tentera d'envoyer le courrier en premier à la machine ayant le poids associé le plus faible, puis ensuite dans l'ordre croissant des poids.

Si la machine qui relaie le courrier est dans la liste des MX pour le domaine, elle envoie le courrier aux machines de poids inférieur au sien.

nom     IN      MX      10      premier.relais.
        IN      MX      20      second.relais.

==== Le numéro de série de la zone ====

Il permet aux serveurs secondaires qui interrogent régulièrement le serveur primaire de chaque zone de déterminer quand la zone a été mise à jour.



==== L'intervalle entre les rafraichissements (refresh) ====

Temps, en seconde, au bout duquel les serveurs « esclaves » devront demander à rafraichir leur données pour cette zone. 3600 secondes dans l'exemple ci-dessous, soit une heure. 

 3600           ; Refresh

La valeur conseillée est 24 heures, soit 86400 secondes.

==== L'intervalle entre les rafraichissements (retry) ====

Durée, en secondes, à partir de laquelle un serveur esclave doit ré-essayer de se synchroniser en cas d'échec du rafraichissement. Ici toutes les 300 secondes, soit toutes les 5 minutes. 

 300            ; Retry

La valeur conseillée est 6 heures, soit 21600 secondes.

==== La durée d'expiration des enregistrements d'un secondaire ====

En cas d'échec des tentatives de synchronisation, indique le temps (en secondes) au bout duquel les serveurs secondaires devront considérer qu'ils ne savent plus répondre aux requêtes concernant cette zone.

 2419200          ; Expire

La valeur conseillée est de 41 jours, soit 3600000 secondes.

==== La durée de vie par défaut des enregistrements (default TTL) ====

Durée de vie de l'information fournie.
Les serveurs DNS récursifs conserveront en cache les informations récoltées pendant la durée indiquée dans ce paramètre. 0 indique que les valeurs ne doivent pas être conservées en cache.

 1600 )           ; Negative Cache TTL

La valeur conseillée est de 24 heures, soit 86400 secondes.

==== Le symbole « @ » ====

Dans un fichier de configuration de zone, ce symbole représente exactement le nom de domaine de la zone. Par exemple, lorsque nous allons créer notre zone maison.mrs, écrire : 

 maison.mrs.  IN SOA ...

Nous pourrons écrire : 

 @            IN SOA ...

=== NS (Name Server) ===

Cet enregistrement indique une délégation pour la gestion du nom donné. C'est à dire que le nom donné devient une zone, dont la gestion est déléguée au serveur indiqué en partie droite.

L'enregistrement donne le nom d'un des serveurs de noms autoritaire pour la zone, comme il y a toujours plus d'un serveur de noms pour une zone, on répète l'enregistrement NS autant de fois qu'il y a de serveurs pour la zone.

Quand pour un nom, on a des enregistrements NS, il est interdit de faire figurer dans la zone parente (celle là) d'autres enregistrements. S'il y a à faire figurer des enregistrements, il faut les mettre dans la zone fille.

zone    IN      NS      serveur.nom.de.domaine.

          IN      NS      autreServeur.nom.de.domaine.

          IN      NS      encoreUn.autreNom.de.domaine.

== Créons notre première zone ==

Maintenant que les explications indigestes sont faites... 
La meilleure façon de comprendre, est d'appliquer à son réseau local sa propre zone!

=== La zone chezmoi.ici ===

Pour cet exemple j'ai pris un nom de domaine bidon, c'est tout a fait possible, vous pouvez donner n'importe quel nom à votre Intranet!

Notre serveur s'appelle tebilepas il dispose de l'IP 192.168.1.254

Le domaine est chezmoi.ici

Nous disposons d'assez d'informations pour créer la zone chezmoi.ici

Créons d'abord dans /etc/bind/ un fichier nommé : db.chezmoi.ici qui contiendrai ceci :

 $TTL    1600
 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. (
                         2009012907       ; Serial
                         604800           ; Refresh
                         86400            ; Retry
                         2419200          ; Expire
                         1600 )           ; Negative Cache TTL
 
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.
 chezmoi.ici.    IN      A       192.168.1.254
 tebilepas  IN      A       192.168.1.254
 coucou     IN      A       192.168.1.1
 pourquoi   IN      CNAME   coucou
 tespascheztoi      IN      CNAME   forum.debian-fr.org.

Nous aurions pu écrire :
 @         IN    NS      tebilepas.chezmoi.ici.
à la place de (cela revient au même)
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.

Nous aurions aussi pu éviter les commentaires (par exemple : ;Serial) mais pour les explications ce sera plus facile.

Ce sera suffisant pour commencer!

Pour que cette zone soit prise en compte, nous devons maintenant l'inclure dans le fichier /etc/bind/named.conf.local

Ceci devrait permettre de répondre aux requêtes de type NS pour le domaine maison.mrs, de répondre aussi aux requêtes de type A pour debvirt.maison.mrs et pour test1.maison.mrs, constater aussi que les alias fonctionnent dans et hors du domaine. 

Il nous faut maintenant indiquer à bind que cette zone existe. Nous allons le faire dans le fichier /etc/bind/named.conf.local : 

 zone &quot;chezmoi.ici&quot; {
         type master;
         file &quot;/etc/bind/db.chezmoi.ici&quot;;
         };

Nous redémarrons notre serveur bind

 # service bind9 restart
 Stopping domain name service...: bind9 waiting for pid 1353 to die.
 Starting domain name service...: bind9.

Et nous testons...

 $ host -a chezmoi.ici localhost
 Trying &quot;chezmoi.ici&quot;
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 46986
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;chezmoi.ici.			IN	ANY
 
 ;; ANSWER SECTION:
 chezmoi.ici.		1600	IN	SOA	tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. 2009012907 604800 86400 2419200 1600
 chezmoi.ici.		1600	IN	NS	tebilepas.chezmoi.ici.
 chezmoi.ici.		1600	IN	A	192.168.1.254
 
 ;; ADDITIONAL SECTION:
 tebilepas.chezmoi.ici.	1600	IN	A	192.168.1.254
 
 Received 126 bytes from ::1#53 in 5 ms

 $ host coucou.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 coucou.chezmoi.ici has address 192.168.1.1

 $ host pourquoi.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 pourquoi.chezmoi.ici is an alias for coucou.chezmoi.ici.
 coucou.chezmoi.ici has address 192.168.1.1

 $ host ailleurs.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ailleurs.chezmoi.ici is an alias for forum.debian-fr.org.
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Comme vous avez pu le constater, votre DNS fonctionne parfaitement, il renseigne nos machines sur le réseau local, et il pourvoit à nos demandes d'IP Internet !

ToDo : Conclusion - Round-robin

[[Category:Serveurs]]</text>
      <sha1>dmksz1t5q8b5cdqimho4ac8u63h8yad</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1853</id>
      <parentid>1850</parentid>
      <timestamp>2010-08-05T11:50:26Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Créons notre première zone */</comment>
      <text xml:space="preserve" bytes="24273">{{Modèle:Ébauche|DNS}}

'''Créer un serveur DNS pour votre réseau local'''

== Qu'est-ce que c'est ? ==

Un Domain Name System (ou DNS, système de noms de domaine) est un service permettant d'établir une correspondance entre une adresse IP et un nom de domaine et, plus généralement, de trouver une information à partir d'un nom de domaine.

Tous les ordinateurs pour communiquer entre eux doivent posséder une adresse IP. Ces adresses sont numériques, elles sont sous cette forme pour les adresses IPV4 : www.xxx.yyy.zzz; et de cette forme pour les adresses IPV6 : aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh.

Ces adresses sont associées à des noms, plus simples à retenir pour les humains, appelés noms de domaines. Résoudre un nom de domaine consiste à trouver l'adresse IP qui lui est associée.

Vous préférez taper google.com ou 72.14.204.103 dans votre navigateur ?

== Pourquoi faire ? ==

* Simple curiosité, pour comprendre son fonctionnement;
* Être autonome des DNS de son FAI (Fournisseur d'accès Internet) en cas d'arrêt de ceux-ci ou par souci de confidentialité;
* Résoudre les adresses de son réseau interne (Intranet) simplement, sans être obligé de remplir le fichier hosts de toutes vos machines;
* Résoudre les &quot;adresses inverses&quot;: obtenir un nom de domaine ou de machine avec une IP.

Cela fait suffisamment de raisons ? Alors continuons!

== Avertissement ==

Nous n'aborderons pas ici les problèmes de sécurité, qui peuvent être nombreux sur un serveur DNS. Le DNS que nous allons construire est destiné UNIQUEMENT à notre réseau local, il n'est pas accessible depuis Internet.

== Installation ==

 # apt-get install bind9 bind9-host bind9utils
 
Pour information, trois bogues sur bind9... Vous pouvez tout de même installer sans soucis

 Récupération des rapports de bogue... Fait  
 Analyse des informations Trouvé/Corrigé... Fait  
 Bogues de gravité grave sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;done&gt;
  #516616 - bind9 locks up on start on mipsel and mips (Corrigé : bind9/1:9.7.0.dfsg.1-1)
    Réuni avec : 520688
 Bogues de gravité critical sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #575916 - bind9: assertion fails in name.c:1699 INSIST(offset &lt;= length)
 Bogues de gravité serious sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #584585 - file conflict with libisc50 (Corrigé : 1:9.7.0.dsfg~b3-1)
 Résumé :
  bind9 (3 bogues)

Vérifions que bind écoute bien sur toutes nos adresses :

 # netstat -ntulp | grep named
 tcp        0      0 192.168.0.1:53          0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      2832/named
 tcp6       0      0 :::53                   :::*                    LISTEN      2832/named
 tcp6       0      0 ::1:953                 :::*                    LISTEN      2832/named
 udp        0      0 192.168.0.1:53          0.0.0.0:*                           2832/named
 udp        0      0 127.0.0.1:53            0.0.0.0:*                           2832/named
 udp6       0      0 :::53                   :::*                                2832/named

== Premiers contact ==

Ça y est, notre DNS est déjà fonctionnel...
Il remplit son rôle de DNS récursif et répond à nos demandes de résolution!
Vous ne me croyez pas ?

 $ host forum.debian-fr.org 127.0.0.1
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Cette commande simple nous donne déjà des renseignements :
* forum.debian-fr.org est un alias pour www.zehome.com.
* Son IP (IPV4 est 88.165.116.107)

Plus d'information ? Passons la même commande avec l'option -v (verbose)

 $ host -v forum.debian-fr.org localhost
 Trying &quot;forum.debian-fr.org&quot;
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 11492
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;forum.debian-fr.org.		IN	A
 
 ;; ANSWER SECTION:
 forum.debian-fr.org.	37939	IN	CNAME	www.zehome.com.
 www.zehome.com.		37941	IN	A	88.165.116.107
 
 ;; AUTHORITY SECTION:
 zehome.com.		37941	IN	NS	ns.kimsufi.com.
 zehome.com.		37941	IN	NS	ns0.zehome.com.
 zehome.com.		37941	IN	NS	daboog.zehome.com.
 
 ;; ADDITIONAL SECTION:
 ns.kimsufi.com.		85955	IN	A	213.186.33.199
 
 Received 161 bytes from 127.0.0.1#53 in 1 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 62379
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	AAAA
 
 ;; AUTHORITY SECTION:
 zehome.com.		10355	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 7678
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	MX
 
 ;; AUTHORITY SECTION:
 zehome.com.		10377	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms

Avec l'option -v (verbose) c'est tout de suite plus compliqué...

Quelques remarques sur ce résultat :

* forum.debian-fr.org est un alias pour www.zehome.com;
* Son IP est 88.165.116.107;
* Ce domaine est géré par les serveurs DNS daboog.zehome.com, ns.kimsufi.com et ns0.zehome.com;
* Il ne dispose pas d'IPV6 (pas de réponse à la question IN AAAA);
* Le [[BIND#SOA|SOA]] pour ce domaine est ns0.zehome.com
* Le mail de l'administrateur est ed@zehome.com (ed.zehome.com - ici le point vaut un arobase)

La même chose, sur un domaine plus important

 $ host www.google.fr 127.0.0.1
 Using domain server:
 Name: 127.0.0.1
 Address: 127.0.0.1#53
 Aliases: 
 
 www.google.fr is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

-www.google.fr est un alias pour www.google.com
-www.google.com possède plusieurs adresses IP

C'est possible, et cela s'appelle le &quot;round-robin&quot;... Tourniquet en Français, cet algorithme d'ordonnancement permet d'attribuer des temps aux processus, ici, il s'agit de faire tourner les IP, afin que tous les serveurs reçoivent leur part de charge...

=== La Configuration ===

L'installation de Bind9 à générée les fichiers suivants :

 # cd /etc/bind
 lol:/etc/bind# vdir
 total 52
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.0
 -rw-r--r-- 1 root root  271 jun 10 22:58 db.127
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.255
 -rw-r--r-- 1 root root  353 jun 10 22:58 db.empty
 -rw-r--r-- 1 root root  270 jun 10 22:58 db.local
 -rw-r--r-- 1 root root 2994 aoû  3 21:30 db.root
 -rw-r--r-- 1 root bind 1125 jui 21 22:19 named.conf
 -rw-r--r-- 1 root bind  278 aoû  3 10:37 named.conf.local
 -rw-r--r-- 1 root bind  572 jun 10 22:58 named.conf.options
 -rw-r----- 1 bind bind   77 jui 20 17:25 rndc.key
 -rw-r--r-- 1 root root 1317 jun 10 22:58 zones.rfc1918

Le fichier principal (épuré des commentaires) :

 # cat /etc/bind/named.conf
 
 include &quot;/etc/bind/named.conf.options&quot;;
 
 zone &quot;.&quot; {
 	type hint;
 	file &quot;/etc/bind/db.root&quot;;
 };
 
 zone &quot;localhost&quot; {
 	type master;
 	file &quot;/etc/bind/db.local&quot;;
 };
 
 zone &quot;127.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.127&quot;;
 };
 
 zone &quot;0.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.0&quot;;
 };
 
 zone &quot;255.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.255&quot;;
 };
 
 include &quot;/etc/bind/named.conf.local&quot;;

Ce fichier renvoie vers deux fichiers de configurations : named.conf.options et named.conf.local

C'est dans ces deux fichiers qu'il faudra mettre vos configurations personnelles, le fichier named.conf ne devant en principe pas être modifié.

Le fichier named.conf déclare plusieurs zones, presque toutes destinées à la résolution inverse

==== La zone &quot;.&quot; ====

La zone root est primordiale.
Ce fichier contient toutes les informations sur les root-servers sans lesquels notre DNS ne peut fonctionner.
Ce fichier évolue peu.

 lol:/etc/bind# cat db.root
 
 ;       This file holds the information on root name servers needed to
 ;       initialize cache of Internet domain name servers
 ;       (e.g. reference this file in the &quot;cache  .  &lt;file&gt;&quot;
 ;       configuration file of BIND domain name servers).
 ;
 ;       This file is made available by InterNIC 
 ;       under anonymous FTP as
 ;           file                /domain/named.root
 ;           on server           FTP.INTERNIC.NET
 ;       -OR-                    RS.INTERNIC.NET
 ;
 ;       last update:    Feb 04, 2008
 ;       related version of root zone:   2008020400
 ;
 ; formerly NS.INTERNIC.NET
 ;
 .                        3600000  IN  NS    A.ROOT-SERVERS.NET.
 A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
 A.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:BA3E::2:30
 ;
 ; formerly NS1.ISI.EDU
 ;
 .                        3600000      NS    B.ROOT-SERVERS.NET.
 B.ROOT-SERVERS.NET.      3600000      A     192.228.79.201
 ;
 ; formerly C.PSI.NET
 ;
 .                        3600000      NS    C.ROOT-SERVERS.NET.
 C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
 ;
 ; formerly TERP.UMD.EDU
 ;
 .                        3600000      NS    D.ROOT-SERVERS.NET.
 D.ROOT-SERVERS.NET.      3600000      A     128.8.10.90
 ;
 ; formerly NS.NASA.GOV
 ;
 .                        3600000      NS    E.ROOT-SERVERS.NET.
 E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
 ;
 ; formerly NS.ISC.ORG
 ;
 .                        3600000      NS    F.ROOT-SERVERS.NET.
 F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
 F.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2f::f
 ;
 ; formerly NS.NIC.DDN.MIL
 ;
 .                        3600000      NS    G.ROOT-SERVERS.NET.
 G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
 ;
 ; formerly AOS.ARL.ARMY.MIL
 ;
 .                        3600000      NS    H.ROOT-SERVERS.NET.
 H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
 H.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:1::803f:235
 ;
 ; formerly NIC.NORDU.NET
 ;
 .                        3600000      NS    I.ROOT-SERVERS.NET.
 I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
 ;
 ; operated by VeriSign, Inc.
 ;
 .                        3600000      NS    J.ROOT-SERVERS.NET.
 J.ROOT-SERVERS.NET.      3600000      A     192.58.128.30
 J.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:C27::2:30
 ;
 ; operated by RIPE NCC
 ;
 .                        3600000      NS    K.ROOT-SERVERS.NET.
 K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129 
 K.ROOT-SERVERS.NET.      3600000      AAAA  2001:7fd::1
 ;
 ; operated by ICANN
 ;
 .                        3600000      NS    L.ROOT-SERVERS.NET.
 L.ROOT-SERVERS.NET.      3600000      A     199.7.83.42
 ;
 ; operated by WIDEaimer
 ;
 .                        3600000      NS    M.ROOT-SERVERS.NET.
 M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
 M.ROOT-SERVERS.NET.      3600000      AAAA  2001:dc3::35
 ; End of File

==== La zone &quot;localhost&quot; ====

 # cat db.local 
 ;
 ; BIND data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      2		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 @	IN	A	127.0.0.1
 @	IN	AAAA	::1

Peu utilisée en général, elle permet de résoudre localhost : 

La structure de ce dernier fichier est un peu déroutante au début, emplie de @ . A AAAA SOA et autres IN que nous détaillerons plus loin.
Nous remarquons que localhost possède deux IP : 127.0.0.1 (IPV4) et ::1 (IPV6) vous le saviez probablement déjà!

==== Les zones in-addr.arpa ====

Nous venons de voir les fichiers qui permettent de résoudre l'adresse d'une machine à partir de son nom. Or, il arrive que certains mécanismes réclament l'inverse, c'est à dire trouver le (les) noms associés à des IP.

Les zones in-addr.arpa servent à ça.

Voici la zone inverse pour localhost :

 # cat db.127 
 ;
 ; BIND reverse data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      1		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 1.0.0	IN	PTR	localhost.

La notation est ici inversée.
Si nous cherchons dans la zone 127 l'adresse 0.0.1 nous tomberons sur localhost =&gt; 1.0.0 IN PTR localhost.

Par exemple, Pour l'adresse 192.1.2.3, nous obtenons le nom de domaine 3.2.1.192.in-addr.arpa.

== Contenu d'une Zone ==

Une zone contient deux enregistrements obligatoires :

* SOA
* NS

=== SOA ===

SOA (Start Of Authority). Le champ SOA indique quel est le serveur « maitre ». Ce serveur peut-avoir plusieurs serveurs esclaves

 $ host -t soa google.fr
 google.fr has SOA record ns1.google.com. dns-admin.google.com. 1423257 21600 3600 1209600 300

Nous savons donc que le serveur ns1.google.com est le serveur maître du domaine google.com.
Et nous avons l'adresse email du responsable : dns-admin@google.com (l'arobase est remplacé par un point dans le fichier de zone)

L'enregistrement SOA contient un certain nombre d'enregistrements et de paramètres:

==== Le nom du primaire ====

 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici.

C'est le nom du serveur primaire pour la zone.
L'adresse de courrier électronique du responsable technique de la zone (zone-contact).
Il faut l'écrire en replaçant le @ par un point. On a alors par exemple: root@inria.fr qui devient root.inria.fr

==== A, AAAA, MX, CNAME, etc. ====

Les types d'enregistrements sont: A, AAAA, MX, CNAME, NS, SOA, PTR, TXT, HINFO, WKS, RP, MA, MB.

===== A (Address) =====

C'est l'enregistrement le plus courant. Le DNS a été créé en grande partie pour ça...
Le champ A (Address) fait correspondre un nom à une adresse IPv4.

nom     IN      A       193.10.20.30

Dans le cas d'une machine qui dispose de plus d'une adresse IP (un routeur ou une machine avec plusieurs cartes), il faut indiquer un enregistrement A par adresse, mais il faut alors que tous les enregistrements PTR pointent vers ce nom là.

===== AAAA (Address IPV6) =====

Idem au champ A, mais correspond à une adresse de type IPV6

===== NS (Name Server) =====

Le champ NS (Name Server) indique le nom d'un serveur de noms. Il peut y avoir plusieurs champs NS s'il y a plusieurs serveurs de noms...

===== CNAME (Common Name) =====

Le champ CNAME (Common Name) est utilisé pour créer des alias. Un &quot;vrai&quot; nom doit être préalablement déclaré avec la variable A, un alias peut ensuite être créé qui pointera vers celui-ci.

===== MX (Mail eXchanger) =====

Le champ MX (Mail eXchanger), est utile pour le protocole SMTP ou TXT.

Il indique pour un nom de domaine quelle est la machine à laquelle il faut envoyer le courrier pour ce domaine.

Si plusieurs enregistrements MX sont présents, il faut leur attribuer un poids... Le MTA (Mail transfert agent) tentera d'envoyer le courrier en premier à la machine ayant le poids associé le plus faible, puis ensuite dans l'ordre croissant des poids.

Si la machine qui relaie le courrier est dans la liste des MX pour le domaine, elle envoie le courrier aux machines de poids inférieur au sien.

nom     IN      MX      10      premier.relais.
        IN      MX      20      second.relais.

==== Le numéro de série de la zone ====

Il permet aux serveurs secondaires qui interrogent régulièrement le serveur primaire de chaque zone de déterminer quand la zone a été mise à jour.



==== L'intervalle entre les rafraichissements (refresh) ====

Temps, en seconde, au bout duquel les serveurs « esclaves » devront demander à rafraichir leur données pour cette zone. 3600 secondes dans l'exemple ci-dessous, soit une heure. 

 3600           ; Refresh

La valeur conseillée est 24 heures, soit 86400 secondes.

==== L'intervalle entre les rafraichissements (retry) ====

Durée, en secondes, à partir de laquelle un serveur esclave doit ré-essayer de se synchroniser en cas d'échec du rafraichissement. Ici toutes les 300 secondes, soit toutes les 5 minutes. 

 300            ; Retry

La valeur conseillée est 6 heures, soit 21600 secondes.

==== La durée d'expiration des enregistrements d'un secondaire ====

En cas d'échec des tentatives de synchronisation, indique le temps (en secondes) au bout duquel les serveurs secondaires devront considérer qu'ils ne savent plus répondre aux requêtes concernant cette zone.

 2419200          ; Expire

La valeur conseillée est de 41 jours, soit 3600000 secondes.

==== La durée de vie par défaut des enregistrements (default TTL) ====

Durée de vie de l'information fournie.
Les serveurs DNS récursifs conserveront en cache les informations récoltées pendant la durée indiquée dans ce paramètre. 0 indique que les valeurs ne doivent pas être conservées en cache.

 1600 )           ; Negative Cache TTL

La valeur conseillée est de 24 heures, soit 86400 secondes.

==== Le symbole « @ » ====

Dans un fichier de configuration de zone, ce symbole représente exactement le nom de domaine de la zone. Par exemple, lorsque nous allons créer notre zone maison.mrs, écrire : 

 maison.mrs.  IN SOA ...

Nous pourrons écrire : 

 @            IN SOA ...

=== NS (Name Server) ===

Cet enregistrement indique une délégation pour la gestion du nom donné. C'est à dire que le nom donné devient une zone, dont la gestion est déléguée au serveur indiqué en partie droite.

L'enregistrement donne le nom d'un des serveurs de noms autoritaire pour la zone, comme il y a toujours plus d'un serveur de noms pour une zone, on répète l'enregistrement NS autant de fois qu'il y a de serveurs pour la zone.

Quand pour un nom, on a des enregistrements NS, il est interdit de faire figurer dans la zone parente (celle là) d'autres enregistrements. S'il y a à faire figurer des enregistrements, il faut les mettre dans la zone fille.

zone    IN      NS      serveur.nom.de.domaine.

          IN      NS      autreServeur.nom.de.domaine.

          IN      NS      encoreUn.autreNom.de.domaine.

== Créons notre première zone ==

Maintenant que les explications indigestes sont faites... 
La meilleure façon de comprendre, est d'appliquer à son réseau local sa propre zone!

=== La zone chezmoi.ici ===

Pour cet exemple j'ai pris un nom de domaine bidon, c'est tout a fait possible, vous pouvez donner n'importe quel nom à votre Intranet!

Notre serveur s'appelle tebilepas il dispose de l'IP 192.168.1.254

Le domaine est chezmoi.ici

Nous disposons d'assez d'informations pour créer la zone chezmoi.ici

Créons d'abord dans /etc/bind/ un fichier nommé : db.chezmoi.ici qui contiendrai ceci :

 $TTL    1600
 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. (
                         2009012907       ; Serial
                         604800           ; Refresh
                         86400            ; Retry
                         2419200          ; Expire
                         1600 )           ; Negative Cache TTL
 
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.
 chezmoi.ici.    IN      A       192.168.1.254
 tebilepas  IN      A       192.168.1.254
 coucou     IN      A       192.168.1.1
 pourquoi   IN      CNAME   coucou
 tespascheztoi      IN      CNAME   forum.debian-fr.org.

Nous aurions pu écrire :
 @         IN    NS      tebilepas.chezmoi.ici.
à la place de (cela revient au même)
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.

Nous aurions aussi pu éviter les commentaires (par exemple : ;Serial) mais pour les explications ce sera plus facile.

Ce sera suffisant pour commencer!

Pour que cette zone soit prise en compte, nous devons maintenant l'inclure dans le fichier /etc/bind/named.conf.local

Ceci devrait permettre de répondre aux requêtes de type NS pour le domaine maison.mrs, de répondre aussi aux requêtes de type A pour debvirt.maison.mrs et pour test1.maison.mrs, constater aussi que les alias fonctionnent dans et hors du domaine. 

Il nous faut maintenant indiquer à bind que cette zone existe. Nous allons le faire dans le fichier /etc/bind/named.conf.local : 

 zone &quot;chezmoi.ici&quot; {
         type master;
         file &quot;/etc/bind/db.chezmoi.ici&quot;;
         };

Nous redémarrons notre serveur bind

 # service bind9 restart
 Stopping domain name service...: bind9 waiting for pid 1353 to die.
 Starting domain name service...: bind9.

Et nous testons...

 $ host -a chezmoi.ici localhost
 Trying &quot;chezmoi.ici&quot;
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 46986
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;chezmoi.ici.			IN	ANY
 
 ;; ANSWER SECTION:
 chezmoi.ici.		1600	IN	SOA	tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. 2009012907 604800 86400 2419200 1600
 chezmoi.ici.		1600	IN	NS	tebilepas.chezmoi.ici.
 chezmoi.ici.		1600	IN	A	192.168.1.254
 
 ;; ADDITIONAL SECTION:
 tebilepas.chezmoi.ici.	1600	IN	A	192.168.1.254
 
 Received 126 bytes from ::1#53 in 5 ms

 $ host coucou.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 coucou.chezmoi.ici has address 192.168.1.1

 $ host pourquoi.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 pourquoi.chezmoi.ici is an alias for coucou.chezmoi.ici.
 coucou.chezmoi.ici has address 192.168.1.1

 $ host ailleurs.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ailleurs.chezmoi.ici is an alias for forum.debian-fr.org.
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Comme vous avez pu le constater, votre DNS fonctionne parfaitement, il renseigne nos machines sur le réseau local, et il pourvoit à nos demandes d'IP Internet !

== Le Round-robin ==

Le Round-robin est une répartition de charge (load balancing) équitable entre serveurs d'une ferme informatique (cluster). Chaque serveur doit traiter le même nombre de requêtes. Cela nécessite une ferme de serveurs homogènes en capacité de traitement. Cette répartition de charge peut être effectuée par le serveur DNS (Domain Name System) qui associe plusieurs adresses IP à un nom de domaine.

Exemple d'un round-robin fonctionnel :

 jeu. août 05 02:46:56 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99

 jeu. août 05 02:46:57 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147

 jeu. août 05 02:46:59 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104

 jeu. août 05 02:47:01 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

Le premier serveur de la liste n'est jamais le même, il y a une rotation...


ToDo : Conclusion

[[Category:Serveurs]]</text>
      <sha1>g3ab2eg43d45x6brbde5qv4ddo2b4wg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1854</id>
      <parentid>1853</parentid>
      <timestamp>2010-08-05T11:52:25Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Premiers contact */</comment>
      <text xml:space="preserve" bytes="24336">{{Modèle:Ébauche|DNS}}

'''Créer un serveur DNS pour votre réseau local'''

== Qu'est-ce que c'est ? ==

Un Domain Name System (ou DNS, système de noms de domaine) est un service permettant d'établir une correspondance entre une adresse IP et un nom de domaine et, plus généralement, de trouver une information à partir d'un nom de domaine.

Tous les ordinateurs pour communiquer entre eux doivent posséder une adresse IP. Ces adresses sont numériques, elles sont sous cette forme pour les adresses IPV4 : www.xxx.yyy.zzz; et de cette forme pour les adresses IPV6 : aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh.

Ces adresses sont associées à des noms, plus simples à retenir pour les humains, appelés noms de domaines. Résoudre un nom de domaine consiste à trouver l'adresse IP qui lui est associée.

Vous préférez taper google.com ou 72.14.204.103 dans votre navigateur ?

== Pourquoi faire ? ==

* Simple curiosité, pour comprendre son fonctionnement;
* Être autonome des DNS de son FAI (Fournisseur d'accès Internet) en cas d'arrêt de ceux-ci ou par souci de confidentialité;
* Résoudre les adresses de son réseau interne (Intranet) simplement, sans être obligé de remplir le fichier hosts de toutes vos machines;
* Résoudre les &quot;adresses inverses&quot;: obtenir un nom de domaine ou de machine avec une IP.

Cela fait suffisamment de raisons ? Alors continuons!

== Avertissement ==

Nous n'aborderons pas ici les problèmes de sécurité, qui peuvent être nombreux sur un serveur DNS. Le DNS que nous allons construire est destiné UNIQUEMENT à notre réseau local, il n'est pas accessible depuis Internet.

== Installation ==

 # apt-get install bind9 bind9-host bind9utils
 
Pour information, trois bogues sur bind9... Vous pouvez tout de même installer sans soucis

 Récupération des rapports de bogue... Fait  
 Analyse des informations Trouvé/Corrigé... Fait  
 Bogues de gravité grave sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;done&gt;
  #516616 - bind9 locks up on start on mipsel and mips (Corrigé : bind9/1:9.7.0.dfsg.1-1)
    Réuni avec : 520688
 Bogues de gravité critical sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #575916 - bind9: assertion fails in name.c:1699 INSIST(offset &lt;= length)
 Bogues de gravité serious sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #584585 - file conflict with libisc50 (Corrigé : 1:9.7.0.dsfg~b3-1)
 Résumé :
  bind9 (3 bogues)

Vérifions que bind écoute bien sur toutes nos adresses :

 # netstat -ntulp | grep named
 tcp        0      0 192.168.0.1:53          0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      2832/named
 tcp6       0      0 :::53                   :::*                    LISTEN      2832/named
 tcp6       0      0 ::1:953                 :::*                    LISTEN      2832/named
 udp        0      0 192.168.0.1:53          0.0.0.0:*                           2832/named
 udp        0      0 127.0.0.1:53            0.0.0.0:*                           2832/named
 udp6       0      0 :::53                   :::*                                2832/named

== Premiers contact ==

Ça y est, notre DNS est déjà fonctionnel...
Il remplit son rôle de DNS récursif et répond à nos demandes de résolution!
Vous ne me croyez pas ?

 $ host forum.debian-fr.org 127.0.0.1
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Cette commande simple nous donne déjà des renseignements :
* forum.debian-fr.org est un alias pour www.zehome.com.
* Son IP (IPV4 est 88.165.116.107)

Plus d'information ? Passons la même commande avec l'option -v (verbose)

 $ host -v forum.debian-fr.org localhost
 Trying &quot;forum.debian-fr.org&quot;
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 11492
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;forum.debian-fr.org.		IN	A
 
 ;; ANSWER SECTION:
 forum.debian-fr.org.	37939	IN	CNAME	www.zehome.com.
 www.zehome.com.		37941	IN	A	88.165.116.107
 
 ;; AUTHORITY SECTION:
 zehome.com.		37941	IN	NS	ns.kimsufi.com.
 zehome.com.		37941	IN	NS	ns0.zehome.com.
 zehome.com.		37941	IN	NS	daboog.zehome.com.
 
 ;; ADDITIONAL SECTION:
 ns.kimsufi.com.		85955	IN	A	213.186.33.199
 
 Received 161 bytes from 127.0.0.1#53 in 1 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 62379
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	AAAA
 
 ;; AUTHORITY SECTION:
 zehome.com.		10355	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 7678
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	MX
 
 ;; AUTHORITY SECTION:
 zehome.com.		10377	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms

Avec l'option -v (verbose) c'est tout de suite plus compliqué...

Quelques remarques sur ce résultat :

* forum.debian-fr.org est un alias pour www.zehome.com;
* Son IP est 88.165.116.107;
* Ce domaine est géré par les serveurs DNS daboog.zehome.com, ns.kimsufi.com et ns0.zehome.com;
* Il ne dispose pas d'IPV6 (pas de réponse à la question IN AAAA);
* Le [[BIND#SOA|SOA]] pour ce domaine est ns0.zehome.com
* Le mail de l'administrateur est ed@zehome.com (ed.zehome.com - ici le point vaut un arobase)

La même chose, sur un domaine plus important

 $ host www.google.fr 127.0.0.1
 Using domain server:
 Name: 127.0.0.1
 Address: 127.0.0.1#53
 Aliases: 
 
 www.google.fr is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

* www.google.fr est un alias pour www.google.com
* www.google.com possède plusieurs adresses IP

Plusieurs IP pour un même domaine ? C'est possible, et cela s'appelle le [[BIND#Le_Round-robin|&quot;round-robin&quot;]]... Tourniquet en Français, cet algorithme d'ordonnancement permet d'attribuer des temps aux processus, ici, il s'agit de faire tourner les IP, afin que tous les serveurs reçoivent leur part de charge...

=== La Configuration ===

L'installation de Bind9 à générée les fichiers suivants :

 # cd /etc/bind
 lol:/etc/bind# vdir
 total 52
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.0
 -rw-r--r-- 1 root root  271 jun 10 22:58 db.127
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.255
 -rw-r--r-- 1 root root  353 jun 10 22:58 db.empty
 -rw-r--r-- 1 root root  270 jun 10 22:58 db.local
 -rw-r--r-- 1 root root 2994 aoû  3 21:30 db.root
 -rw-r--r-- 1 root bind 1125 jui 21 22:19 named.conf
 -rw-r--r-- 1 root bind  278 aoû  3 10:37 named.conf.local
 -rw-r--r-- 1 root bind  572 jun 10 22:58 named.conf.options
 -rw-r----- 1 bind bind   77 jui 20 17:25 rndc.key
 -rw-r--r-- 1 root root 1317 jun 10 22:58 zones.rfc1918

Le fichier principal (épuré des commentaires) :

 # cat /etc/bind/named.conf
 
 include &quot;/etc/bind/named.conf.options&quot;;
 
 zone &quot;.&quot; {
 	type hint;
 	file &quot;/etc/bind/db.root&quot;;
 };
 
 zone &quot;localhost&quot; {
 	type master;
 	file &quot;/etc/bind/db.local&quot;;
 };
 
 zone &quot;127.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.127&quot;;
 };
 
 zone &quot;0.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.0&quot;;
 };
 
 zone &quot;255.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.255&quot;;
 };
 
 include &quot;/etc/bind/named.conf.local&quot;;

Ce fichier renvoie vers deux fichiers de configurations : named.conf.options et named.conf.local

C'est dans ces deux fichiers qu'il faudra mettre vos configurations personnelles, le fichier named.conf ne devant en principe pas être modifié.

Le fichier named.conf déclare plusieurs zones, presque toutes destinées à la résolution inverse

==== La zone &quot;.&quot; ====

La zone root est primordiale.
Ce fichier contient toutes les informations sur les root-servers sans lesquels notre DNS ne peut fonctionner.
Ce fichier évolue peu.

 lol:/etc/bind# cat db.root
 
 ;       This file holds the information on root name servers needed to
 ;       initialize cache of Internet domain name servers
 ;       (e.g. reference this file in the &quot;cache  .  &lt;file&gt;&quot;
 ;       configuration file of BIND domain name servers).
 ;
 ;       This file is made available by InterNIC 
 ;       under anonymous FTP as
 ;           file                /domain/named.root
 ;           on server           FTP.INTERNIC.NET
 ;       -OR-                    RS.INTERNIC.NET
 ;
 ;       last update:    Feb 04, 2008
 ;       related version of root zone:   2008020400
 ;
 ; formerly NS.INTERNIC.NET
 ;
 .                        3600000  IN  NS    A.ROOT-SERVERS.NET.
 A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
 A.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:BA3E::2:30
 ;
 ; formerly NS1.ISI.EDU
 ;
 .                        3600000      NS    B.ROOT-SERVERS.NET.
 B.ROOT-SERVERS.NET.      3600000      A     192.228.79.201
 ;
 ; formerly C.PSI.NET
 ;
 .                        3600000      NS    C.ROOT-SERVERS.NET.
 C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
 ;
 ; formerly TERP.UMD.EDU
 ;
 .                        3600000      NS    D.ROOT-SERVERS.NET.
 D.ROOT-SERVERS.NET.      3600000      A     128.8.10.90
 ;
 ; formerly NS.NASA.GOV
 ;
 .                        3600000      NS    E.ROOT-SERVERS.NET.
 E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
 ;
 ; formerly NS.ISC.ORG
 ;
 .                        3600000      NS    F.ROOT-SERVERS.NET.
 F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
 F.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2f::f
 ;
 ; formerly NS.NIC.DDN.MIL
 ;
 .                        3600000      NS    G.ROOT-SERVERS.NET.
 G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
 ;
 ; formerly AOS.ARL.ARMY.MIL
 ;
 .                        3600000      NS    H.ROOT-SERVERS.NET.
 H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
 H.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:1::803f:235
 ;
 ; formerly NIC.NORDU.NET
 ;
 .                        3600000      NS    I.ROOT-SERVERS.NET.
 I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
 ;
 ; operated by VeriSign, Inc.
 ;
 .                        3600000      NS    J.ROOT-SERVERS.NET.
 J.ROOT-SERVERS.NET.      3600000      A     192.58.128.30
 J.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:C27::2:30
 ;
 ; operated by RIPE NCC
 ;
 .                        3600000      NS    K.ROOT-SERVERS.NET.
 K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129 
 K.ROOT-SERVERS.NET.      3600000      AAAA  2001:7fd::1
 ;
 ; operated by ICANN
 ;
 .                        3600000      NS    L.ROOT-SERVERS.NET.
 L.ROOT-SERVERS.NET.      3600000      A     199.7.83.42
 ;
 ; operated by WIDEaimer
 ;
 .                        3600000      NS    M.ROOT-SERVERS.NET.
 M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
 M.ROOT-SERVERS.NET.      3600000      AAAA  2001:dc3::35
 ; End of File

==== La zone &quot;localhost&quot; ====

 # cat db.local 
 ;
 ; BIND data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      2		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 @	IN	A	127.0.0.1
 @	IN	AAAA	::1

Peu utilisée en général, elle permet de résoudre localhost : 

La structure de ce dernier fichier est un peu déroutante au début, emplie de @ . A AAAA SOA et autres IN que nous détaillerons plus loin.
Nous remarquons que localhost possède deux IP : 127.0.0.1 (IPV4) et ::1 (IPV6) vous le saviez probablement déjà!

==== Les zones in-addr.arpa ====

Nous venons de voir les fichiers qui permettent de résoudre l'adresse d'une machine à partir de son nom. Or, il arrive que certains mécanismes réclament l'inverse, c'est à dire trouver le (les) noms associés à des IP.

Les zones in-addr.arpa servent à ça.

Voici la zone inverse pour localhost :

 # cat db.127 
 ;
 ; BIND reverse data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      1		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 1.0.0	IN	PTR	localhost.

La notation est ici inversée.
Si nous cherchons dans la zone 127 l'adresse 0.0.1 nous tomberons sur localhost =&gt; 1.0.0 IN PTR localhost.

Par exemple, Pour l'adresse 192.1.2.3, nous obtenons le nom de domaine 3.2.1.192.in-addr.arpa.

== Contenu d'une Zone ==

Une zone contient deux enregistrements obligatoires :

* SOA
* NS

=== SOA ===

SOA (Start Of Authority). Le champ SOA indique quel est le serveur « maitre ». Ce serveur peut-avoir plusieurs serveurs esclaves

 $ host -t soa google.fr
 google.fr has SOA record ns1.google.com. dns-admin.google.com. 1423257 21600 3600 1209600 300

Nous savons donc que le serveur ns1.google.com est le serveur maître du domaine google.com.
Et nous avons l'adresse email du responsable : dns-admin@google.com (l'arobase est remplacé par un point dans le fichier de zone)

L'enregistrement SOA contient un certain nombre d'enregistrements et de paramètres:

==== Le nom du primaire ====

 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici.

C'est le nom du serveur primaire pour la zone.
L'adresse de courrier électronique du responsable technique de la zone (zone-contact).
Il faut l'écrire en replaçant le @ par un point. On a alors par exemple: root@inria.fr qui devient root.inria.fr

==== A, AAAA, MX, CNAME, etc. ====

Les types d'enregistrements sont: A, AAAA, MX, CNAME, NS, SOA, PTR, TXT, HINFO, WKS, RP, MA, MB.

===== A (Address) =====

C'est l'enregistrement le plus courant. Le DNS a été créé en grande partie pour ça...
Le champ A (Address) fait correspondre un nom à une adresse IPv4.

nom     IN      A       193.10.20.30

Dans le cas d'une machine qui dispose de plus d'une adresse IP (un routeur ou une machine avec plusieurs cartes), il faut indiquer un enregistrement A par adresse, mais il faut alors que tous les enregistrements PTR pointent vers ce nom là.

===== AAAA (Address IPV6) =====

Idem au champ A, mais correspond à une adresse de type IPV6

===== NS (Name Server) =====

Le champ NS (Name Server) indique le nom d'un serveur de noms. Il peut y avoir plusieurs champs NS s'il y a plusieurs serveurs de noms...

===== CNAME (Common Name) =====

Le champ CNAME (Common Name) est utilisé pour créer des alias. Un &quot;vrai&quot; nom doit être préalablement déclaré avec la variable A, un alias peut ensuite être créé qui pointera vers celui-ci.

===== MX (Mail eXchanger) =====

Le champ MX (Mail eXchanger), est utile pour le protocole SMTP ou TXT.

Il indique pour un nom de domaine quelle est la machine à laquelle il faut envoyer le courrier pour ce domaine.

Si plusieurs enregistrements MX sont présents, il faut leur attribuer un poids... Le MTA (Mail transfert agent) tentera d'envoyer le courrier en premier à la machine ayant le poids associé le plus faible, puis ensuite dans l'ordre croissant des poids.

Si la machine qui relaie le courrier est dans la liste des MX pour le domaine, elle envoie le courrier aux machines de poids inférieur au sien.

nom     IN      MX      10      premier.relais.
        IN      MX      20      second.relais.

==== Le numéro de série de la zone ====

Il permet aux serveurs secondaires qui interrogent régulièrement le serveur primaire de chaque zone de déterminer quand la zone a été mise à jour.



==== L'intervalle entre les rafraichissements (refresh) ====

Temps, en seconde, au bout duquel les serveurs « esclaves » devront demander à rafraichir leur données pour cette zone. 3600 secondes dans l'exemple ci-dessous, soit une heure. 

 3600           ; Refresh

La valeur conseillée est 24 heures, soit 86400 secondes.

==== L'intervalle entre les rafraichissements (retry) ====

Durée, en secondes, à partir de laquelle un serveur esclave doit ré-essayer de se synchroniser en cas d'échec du rafraichissement. Ici toutes les 300 secondes, soit toutes les 5 minutes. 

 300            ; Retry

La valeur conseillée est 6 heures, soit 21600 secondes.

==== La durée d'expiration des enregistrements d'un secondaire ====

En cas d'échec des tentatives de synchronisation, indique le temps (en secondes) au bout duquel les serveurs secondaires devront considérer qu'ils ne savent plus répondre aux requêtes concernant cette zone.

 2419200          ; Expire

La valeur conseillée est de 41 jours, soit 3600000 secondes.

==== La durée de vie par défaut des enregistrements (default TTL) ====

Durée de vie de l'information fournie.
Les serveurs DNS récursifs conserveront en cache les informations récoltées pendant la durée indiquée dans ce paramètre. 0 indique que les valeurs ne doivent pas être conservées en cache.

 1600 )           ; Negative Cache TTL

La valeur conseillée est de 24 heures, soit 86400 secondes.

==== Le symbole « @ » ====

Dans un fichier de configuration de zone, ce symbole représente exactement le nom de domaine de la zone. Par exemple, lorsque nous allons créer notre zone maison.mrs, écrire : 

 maison.mrs.  IN SOA ...

Nous pourrons écrire : 

 @            IN SOA ...

=== NS (Name Server) ===

Cet enregistrement indique une délégation pour la gestion du nom donné. C'est à dire que le nom donné devient une zone, dont la gestion est déléguée au serveur indiqué en partie droite.

L'enregistrement donne le nom d'un des serveurs de noms autoritaire pour la zone, comme il y a toujours plus d'un serveur de noms pour une zone, on répète l'enregistrement NS autant de fois qu'il y a de serveurs pour la zone.

Quand pour un nom, on a des enregistrements NS, il est interdit de faire figurer dans la zone parente (celle là) d'autres enregistrements. S'il y a à faire figurer des enregistrements, il faut les mettre dans la zone fille.

zone    IN      NS      serveur.nom.de.domaine.

          IN      NS      autreServeur.nom.de.domaine.

          IN      NS      encoreUn.autreNom.de.domaine.

== Créons notre première zone ==

Maintenant que les explications indigestes sont faites... 
La meilleure façon de comprendre, est d'appliquer à son réseau local sa propre zone!

=== La zone chezmoi.ici ===

Pour cet exemple j'ai pris un nom de domaine bidon, c'est tout a fait possible, vous pouvez donner n'importe quel nom à votre Intranet!

Notre serveur s'appelle tebilepas il dispose de l'IP 192.168.1.254

Le domaine est chezmoi.ici

Nous disposons d'assez d'informations pour créer la zone chezmoi.ici

Créons d'abord dans /etc/bind/ un fichier nommé : db.chezmoi.ici qui contiendrai ceci :

 $TTL    1600
 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. (
                         2009012907       ; Serial
                         604800           ; Refresh
                         86400            ; Retry
                         2419200          ; Expire
                         1600 )           ; Negative Cache TTL
 
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.
 chezmoi.ici.    IN      A       192.168.1.254
 tebilepas  IN      A       192.168.1.254
 coucou     IN      A       192.168.1.1
 pourquoi   IN      CNAME   coucou
 tespascheztoi      IN      CNAME   forum.debian-fr.org.

Nous aurions pu écrire :
 @         IN    NS      tebilepas.chezmoi.ici.
à la place de (cela revient au même)
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.

Nous aurions aussi pu éviter les commentaires (par exemple : ;Serial) mais pour les explications ce sera plus facile.

Ce sera suffisant pour commencer!

Pour que cette zone soit prise en compte, nous devons maintenant l'inclure dans le fichier /etc/bind/named.conf.local

Ceci devrait permettre de répondre aux requêtes de type NS pour le domaine maison.mrs, de répondre aussi aux requêtes de type A pour debvirt.maison.mrs et pour test1.maison.mrs, constater aussi que les alias fonctionnent dans et hors du domaine. 

Il nous faut maintenant indiquer à bind que cette zone existe. Nous allons le faire dans le fichier /etc/bind/named.conf.local : 

 zone &quot;chezmoi.ici&quot; {
         type master;
         file &quot;/etc/bind/db.chezmoi.ici&quot;;
         };

Nous redémarrons notre serveur bind

 # service bind9 restart
 Stopping domain name service...: bind9 waiting for pid 1353 to die.
 Starting domain name service...: bind9.

Et nous testons...

 $ host -a chezmoi.ici localhost
 Trying &quot;chezmoi.ici&quot;
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 46986
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;chezmoi.ici.			IN	ANY
 
 ;; ANSWER SECTION:
 chezmoi.ici.		1600	IN	SOA	tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. 2009012907 604800 86400 2419200 1600
 chezmoi.ici.		1600	IN	NS	tebilepas.chezmoi.ici.
 chezmoi.ici.		1600	IN	A	192.168.1.254
 
 ;; ADDITIONAL SECTION:
 tebilepas.chezmoi.ici.	1600	IN	A	192.168.1.254
 
 Received 126 bytes from ::1#53 in 5 ms

 $ host coucou.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 coucou.chezmoi.ici has address 192.168.1.1

 $ host pourquoi.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 pourquoi.chezmoi.ici is an alias for coucou.chezmoi.ici.
 coucou.chezmoi.ici has address 192.168.1.1

 $ host ailleurs.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ailleurs.chezmoi.ici is an alias for forum.debian-fr.org.
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Comme vous avez pu le constater, votre DNS fonctionne parfaitement, il renseigne nos machines sur le réseau local, et il pourvoit à nos demandes d'IP Internet !

== Le Round-robin ==

Le Round-robin est une répartition de charge (load balancing) équitable entre serveurs d'une ferme informatique (cluster). Chaque serveur doit traiter le même nombre de requêtes. Cela nécessite une ferme de serveurs homogènes en capacité de traitement. Cette répartition de charge peut être effectuée par le serveur DNS (Domain Name System) qui associe plusieurs adresses IP à un nom de domaine.

Exemple d'un round-robin fonctionnel :

 jeu. août 05 02:46:56 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99

 jeu. août 05 02:46:57 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147

 jeu. août 05 02:46:59 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104

 jeu. août 05 02:47:01 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

Le premier serveur de la liste n'est jamais le même, il y a une rotation...


ToDo : Conclusion

[[Category:Serveurs]]</text>
      <sha1>05ekczuqy5x1wq5a2ohsw0n25f1mg9f</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2120</id>
      <parentid>1854</parentid>
      <timestamp>2010-09-23T17:55:25Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <comment>/* Installation */</comment>
      <text xml:space="preserve" bytes="24341">{{Modèle:Ébauche|DNS}}

'''Créer un serveur DNS pour votre réseau local'''

== Qu'est-ce que c'est ? ==

Un Domain Name System (ou DNS, système de noms de domaine) est un service permettant d'établir une correspondance entre une adresse IP et un nom de domaine et, plus généralement, de trouver une information à partir d'un nom de domaine.

Tous les ordinateurs pour communiquer entre eux doivent posséder une adresse IP. Ces adresses sont numériques, elles sont sous cette forme pour les adresses IPV4 : www.xxx.yyy.zzz; et de cette forme pour les adresses IPV6 : aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh.

Ces adresses sont associées à des noms, plus simples à retenir pour les humains, appelés noms de domaines. Résoudre un nom de domaine consiste à trouver l'adresse IP qui lui est associée.

Vous préférez taper google.com ou 72.14.204.103 dans votre navigateur ?

== Pourquoi faire ? ==

* Simple curiosité, pour comprendre son fonctionnement;
* Être autonome des DNS de son FAI (Fournisseur d'accès Internet) en cas d'arrêt de ceux-ci ou par souci de confidentialité;
* Résoudre les adresses de son réseau interne (Intranet) simplement, sans être obligé de remplir le fichier hosts de toutes vos machines;
* Résoudre les &quot;adresses inverses&quot;: obtenir un nom de domaine ou de machine avec une IP.

Cela fait suffisamment de raisons ? Alors continuons!

== Avertissement ==

Nous n'aborderons pas ici les problèmes de sécurité, qui peuvent être nombreux sur un serveur DNS. Le DNS que nous allons construire est destiné UNIQUEMENT à notre réseau local, il n'est pas accessible depuis Internet.

== Installation ==

 # apt-get install bind9 bind9-host bind9utils host
 
Pour information, trois bogues sur bind9... Vous pouvez tout de même installer sans soucis

 Récupération des rapports de bogue... Fait  
 Analyse des informations Trouvé/Corrigé... Fait  
 Bogues de gravité grave sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;done&gt;
  #516616 - bind9 locks up on start on mipsel and mips (Corrigé : bind9/1:9.7.0.dfsg.1-1)
    Réuni avec : 520688
 Bogues de gravité critical sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #575916 - bind9: assertion fails in name.c:1699 INSIST(offset &lt;= length)
 Bogues de gravité serious sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #584585 - file conflict with libisc50 (Corrigé : 1:9.7.0.dsfg~b3-1)
 Résumé :
  bind9 (3 bogues)

Vérifions que bind écoute bien sur toutes nos adresses :

 # netstat -ntulp | grep named
 tcp        0      0 192.168.0.1:53          0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      2832/named
 tcp6       0      0 :::53                   :::*                    LISTEN      2832/named
 tcp6       0      0 ::1:953                 :::*                    LISTEN      2832/named
 udp        0      0 192.168.0.1:53          0.0.0.0:*                           2832/named
 udp        0      0 127.0.0.1:53            0.0.0.0:*                           2832/named
 udp6       0      0 :::53                   :::*                                2832/named

== Premiers contact ==

Ça y est, notre DNS est déjà fonctionnel...
Il remplit son rôle de DNS récursif et répond à nos demandes de résolution!
Vous ne me croyez pas ?

 $ host forum.debian-fr.org 127.0.0.1
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Cette commande simple nous donne déjà des renseignements :
* forum.debian-fr.org est un alias pour www.zehome.com.
* Son IP (IPV4 est 88.165.116.107)

Plus d'information ? Passons la même commande avec l'option -v (verbose)

 $ host -v forum.debian-fr.org localhost
 Trying &quot;forum.debian-fr.org&quot;
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 11492
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;forum.debian-fr.org.		IN	A
 
 ;; ANSWER SECTION:
 forum.debian-fr.org.	37939	IN	CNAME	www.zehome.com.
 www.zehome.com.		37941	IN	A	88.165.116.107
 
 ;; AUTHORITY SECTION:
 zehome.com.		37941	IN	NS	ns.kimsufi.com.
 zehome.com.		37941	IN	NS	ns0.zehome.com.
 zehome.com.		37941	IN	NS	daboog.zehome.com.
 
 ;; ADDITIONAL SECTION:
 ns.kimsufi.com.		85955	IN	A	213.186.33.199
 
 Received 161 bytes from 127.0.0.1#53 in 1 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 62379
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	AAAA
 
 ;; AUTHORITY SECTION:
 zehome.com.		10355	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 7678
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	MX
 
 ;; AUTHORITY SECTION:
 zehome.com.		10377	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms

Avec l'option -v (verbose) c'est tout de suite plus compliqué...

Quelques remarques sur ce résultat :

* forum.debian-fr.org est un alias pour www.zehome.com;
* Son IP est 88.165.116.107;
* Ce domaine est géré par les serveurs DNS daboog.zehome.com, ns.kimsufi.com et ns0.zehome.com;
* Il ne dispose pas d'IPV6 (pas de réponse à la question IN AAAA);
* Le [[BIND#SOA|SOA]] pour ce domaine est ns0.zehome.com
* Le mail de l'administrateur est ed@zehome.com (ed.zehome.com - ici le point vaut un arobase)

La même chose, sur un domaine plus important

 $ host www.google.fr 127.0.0.1
 Using domain server:
 Name: 127.0.0.1
 Address: 127.0.0.1#53
 Aliases: 
 
 www.google.fr is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

* www.google.fr est un alias pour www.google.com
* www.google.com possède plusieurs adresses IP

Plusieurs IP pour un même domaine ? C'est possible, et cela s'appelle le [[BIND#Le_Round-robin|&quot;round-robin&quot;]]... Tourniquet en Français, cet algorithme d'ordonnancement permet d'attribuer des temps aux processus, ici, il s'agit de faire tourner les IP, afin que tous les serveurs reçoivent leur part de charge...

=== La Configuration ===

L'installation de Bind9 à générée les fichiers suivants :

 # cd /etc/bind
 lol:/etc/bind# vdir
 total 52
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.0
 -rw-r--r-- 1 root root  271 jun 10 22:58 db.127
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.255
 -rw-r--r-- 1 root root  353 jun 10 22:58 db.empty
 -rw-r--r-- 1 root root  270 jun 10 22:58 db.local
 -rw-r--r-- 1 root root 2994 aoû  3 21:30 db.root
 -rw-r--r-- 1 root bind 1125 jui 21 22:19 named.conf
 -rw-r--r-- 1 root bind  278 aoû  3 10:37 named.conf.local
 -rw-r--r-- 1 root bind  572 jun 10 22:58 named.conf.options
 -rw-r----- 1 bind bind   77 jui 20 17:25 rndc.key
 -rw-r--r-- 1 root root 1317 jun 10 22:58 zones.rfc1918

Le fichier principal (épuré des commentaires) :

 # cat /etc/bind/named.conf
 
 include &quot;/etc/bind/named.conf.options&quot;;
 
 zone &quot;.&quot; {
 	type hint;
 	file &quot;/etc/bind/db.root&quot;;
 };
 
 zone &quot;localhost&quot; {
 	type master;
 	file &quot;/etc/bind/db.local&quot;;
 };
 
 zone &quot;127.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.127&quot;;
 };
 
 zone &quot;0.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.0&quot;;
 };
 
 zone &quot;255.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.255&quot;;
 };
 
 include &quot;/etc/bind/named.conf.local&quot;;

Ce fichier renvoie vers deux fichiers de configurations : named.conf.options et named.conf.local

C'est dans ces deux fichiers qu'il faudra mettre vos configurations personnelles, le fichier named.conf ne devant en principe pas être modifié.

Le fichier named.conf déclare plusieurs zones, presque toutes destinées à la résolution inverse

==== La zone &quot;.&quot; ====

La zone root est primordiale.
Ce fichier contient toutes les informations sur les root-servers sans lesquels notre DNS ne peut fonctionner.
Ce fichier évolue peu.

 lol:/etc/bind# cat db.root
 
 ;       This file holds the information on root name servers needed to
 ;       initialize cache of Internet domain name servers
 ;       (e.g. reference this file in the &quot;cache  .  &lt;file&gt;&quot;
 ;       configuration file of BIND domain name servers).
 ;
 ;       This file is made available by InterNIC 
 ;       under anonymous FTP as
 ;           file                /domain/named.root
 ;           on server           FTP.INTERNIC.NET
 ;       -OR-                    RS.INTERNIC.NET
 ;
 ;       last update:    Feb 04, 2008
 ;       related version of root zone:   2008020400
 ;
 ; formerly NS.INTERNIC.NET
 ;
 .                        3600000  IN  NS    A.ROOT-SERVERS.NET.
 A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
 A.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:BA3E::2:30
 ;
 ; formerly NS1.ISI.EDU
 ;
 .                        3600000      NS    B.ROOT-SERVERS.NET.
 B.ROOT-SERVERS.NET.      3600000      A     192.228.79.201
 ;
 ; formerly C.PSI.NET
 ;
 .                        3600000      NS    C.ROOT-SERVERS.NET.
 C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
 ;
 ; formerly TERP.UMD.EDU
 ;
 .                        3600000      NS    D.ROOT-SERVERS.NET.
 D.ROOT-SERVERS.NET.      3600000      A     128.8.10.90
 ;
 ; formerly NS.NASA.GOV
 ;
 .                        3600000      NS    E.ROOT-SERVERS.NET.
 E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
 ;
 ; formerly NS.ISC.ORG
 ;
 .                        3600000      NS    F.ROOT-SERVERS.NET.
 F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
 F.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2f::f
 ;
 ; formerly NS.NIC.DDN.MIL
 ;
 .                        3600000      NS    G.ROOT-SERVERS.NET.
 G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
 ;
 ; formerly AOS.ARL.ARMY.MIL
 ;
 .                        3600000      NS    H.ROOT-SERVERS.NET.
 H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
 H.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:1::803f:235
 ;
 ; formerly NIC.NORDU.NET
 ;
 .                        3600000      NS    I.ROOT-SERVERS.NET.
 I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
 ;
 ; operated by VeriSign, Inc.
 ;
 .                        3600000      NS    J.ROOT-SERVERS.NET.
 J.ROOT-SERVERS.NET.      3600000      A     192.58.128.30
 J.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:C27::2:30
 ;
 ; operated by RIPE NCC
 ;
 .                        3600000      NS    K.ROOT-SERVERS.NET.
 K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129 
 K.ROOT-SERVERS.NET.      3600000      AAAA  2001:7fd::1
 ;
 ; operated by ICANN
 ;
 .                        3600000      NS    L.ROOT-SERVERS.NET.
 L.ROOT-SERVERS.NET.      3600000      A     199.7.83.42
 ;
 ; operated by WIDEaimer
 ;
 .                        3600000      NS    M.ROOT-SERVERS.NET.
 M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
 M.ROOT-SERVERS.NET.      3600000      AAAA  2001:dc3::35
 ; End of File

==== La zone &quot;localhost&quot; ====

 # cat db.local 
 ;
 ; BIND data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      2		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 @	IN	A	127.0.0.1
 @	IN	AAAA	::1

Peu utilisée en général, elle permet de résoudre localhost : 

La structure de ce dernier fichier est un peu déroutante au début, emplie de @ . A AAAA SOA et autres IN que nous détaillerons plus loin.
Nous remarquons que localhost possède deux IP : 127.0.0.1 (IPV4) et ::1 (IPV6) vous le saviez probablement déjà!

==== Les zones in-addr.arpa ====

Nous venons de voir les fichiers qui permettent de résoudre l'adresse d'une machine à partir de son nom. Or, il arrive que certains mécanismes réclament l'inverse, c'est à dire trouver le (les) noms associés à des IP.

Les zones in-addr.arpa servent à ça.

Voici la zone inverse pour localhost :

 # cat db.127 
 ;
 ; BIND reverse data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      1		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 1.0.0	IN	PTR	localhost.

La notation est ici inversée.
Si nous cherchons dans la zone 127 l'adresse 0.0.1 nous tomberons sur localhost =&gt; 1.0.0 IN PTR localhost.

Par exemple, Pour l'adresse 192.1.2.3, nous obtenons le nom de domaine 3.2.1.192.in-addr.arpa.

== Contenu d'une Zone ==

Une zone contient deux enregistrements obligatoires :

* SOA
* NS

=== SOA ===

SOA (Start Of Authority). Le champ SOA indique quel est le serveur « maitre ». Ce serveur peut-avoir plusieurs serveurs esclaves

 $ host -t soa google.fr
 google.fr has SOA record ns1.google.com. dns-admin.google.com. 1423257 21600 3600 1209600 300

Nous savons donc que le serveur ns1.google.com est le serveur maître du domaine google.com.
Et nous avons l'adresse email du responsable : dns-admin@google.com (l'arobase est remplacé par un point dans le fichier de zone)

L'enregistrement SOA contient un certain nombre d'enregistrements et de paramètres:

==== Le nom du primaire ====

 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici.

C'est le nom du serveur primaire pour la zone.
L'adresse de courrier électronique du responsable technique de la zone (zone-contact).
Il faut l'écrire en replaçant le @ par un point. On a alors par exemple: root@inria.fr qui devient root.inria.fr

==== A, AAAA, MX, CNAME, etc. ====

Les types d'enregistrements sont: A, AAAA, MX, CNAME, NS, SOA, PTR, TXT, HINFO, WKS, RP, MA, MB.

===== A (Address) =====

C'est l'enregistrement le plus courant. Le DNS a été créé en grande partie pour ça...
Le champ A (Address) fait correspondre un nom à une adresse IPv4.

nom     IN      A       193.10.20.30

Dans le cas d'une machine qui dispose de plus d'une adresse IP (un routeur ou une machine avec plusieurs cartes), il faut indiquer un enregistrement A par adresse, mais il faut alors que tous les enregistrements PTR pointent vers ce nom là.

===== AAAA (Address IPV6) =====

Idem au champ A, mais correspond à une adresse de type IPV6

===== NS (Name Server) =====

Le champ NS (Name Server) indique le nom d'un serveur de noms. Il peut y avoir plusieurs champs NS s'il y a plusieurs serveurs de noms...

===== CNAME (Common Name) =====

Le champ CNAME (Common Name) est utilisé pour créer des alias. Un &quot;vrai&quot; nom doit être préalablement déclaré avec la variable A, un alias peut ensuite être créé qui pointera vers celui-ci.

===== MX (Mail eXchanger) =====

Le champ MX (Mail eXchanger), est utile pour le protocole SMTP ou TXT.

Il indique pour un nom de domaine quelle est la machine à laquelle il faut envoyer le courrier pour ce domaine.

Si plusieurs enregistrements MX sont présents, il faut leur attribuer un poids... Le MTA (Mail transfert agent) tentera d'envoyer le courrier en premier à la machine ayant le poids associé le plus faible, puis ensuite dans l'ordre croissant des poids.

Si la machine qui relaie le courrier est dans la liste des MX pour le domaine, elle envoie le courrier aux machines de poids inférieur au sien.

nom     IN      MX      10      premier.relais.
        IN      MX      20      second.relais.

==== Le numéro de série de la zone ====

Il permet aux serveurs secondaires qui interrogent régulièrement le serveur primaire de chaque zone de déterminer quand la zone a été mise à jour.



==== L'intervalle entre les rafraichissements (refresh) ====

Temps, en seconde, au bout duquel les serveurs « esclaves » devront demander à rafraichir leur données pour cette zone. 3600 secondes dans l'exemple ci-dessous, soit une heure. 

 3600           ; Refresh

La valeur conseillée est 24 heures, soit 86400 secondes.

==== L'intervalle entre les rafraichissements (retry) ====

Durée, en secondes, à partir de laquelle un serveur esclave doit ré-essayer de se synchroniser en cas d'échec du rafraichissement. Ici toutes les 300 secondes, soit toutes les 5 minutes. 

 300            ; Retry

La valeur conseillée est 6 heures, soit 21600 secondes.

==== La durée d'expiration des enregistrements d'un secondaire ====

En cas d'échec des tentatives de synchronisation, indique le temps (en secondes) au bout duquel les serveurs secondaires devront considérer qu'ils ne savent plus répondre aux requêtes concernant cette zone.

 2419200          ; Expire

La valeur conseillée est de 41 jours, soit 3600000 secondes.

==== La durée de vie par défaut des enregistrements (default TTL) ====

Durée de vie de l'information fournie.
Les serveurs DNS récursifs conserveront en cache les informations récoltées pendant la durée indiquée dans ce paramètre. 0 indique que les valeurs ne doivent pas être conservées en cache.

 1600 )           ; Negative Cache TTL

La valeur conseillée est de 24 heures, soit 86400 secondes.

==== Le symbole « @ » ====

Dans un fichier de configuration de zone, ce symbole représente exactement le nom de domaine de la zone. Par exemple, lorsque nous allons créer notre zone maison.mrs, écrire : 

 maison.mrs.  IN SOA ...

Nous pourrons écrire : 

 @            IN SOA ...

=== NS (Name Server) ===

Cet enregistrement indique une délégation pour la gestion du nom donné. C'est à dire que le nom donné devient une zone, dont la gestion est déléguée au serveur indiqué en partie droite.

L'enregistrement donne le nom d'un des serveurs de noms autoritaire pour la zone, comme il y a toujours plus d'un serveur de noms pour une zone, on répète l'enregistrement NS autant de fois qu'il y a de serveurs pour la zone.

Quand pour un nom, on a des enregistrements NS, il est interdit de faire figurer dans la zone parente (celle là) d'autres enregistrements. S'il y a à faire figurer des enregistrements, il faut les mettre dans la zone fille.

zone    IN      NS      serveur.nom.de.domaine.

          IN      NS      autreServeur.nom.de.domaine.

          IN      NS      encoreUn.autreNom.de.domaine.

== Créons notre première zone ==

Maintenant que les explications indigestes sont faites... 
La meilleure façon de comprendre, est d'appliquer à son réseau local sa propre zone!

=== La zone chezmoi.ici ===

Pour cet exemple j'ai pris un nom de domaine bidon, c'est tout a fait possible, vous pouvez donner n'importe quel nom à votre Intranet!

Notre serveur s'appelle tebilepas il dispose de l'IP 192.168.1.254

Le domaine est chezmoi.ici

Nous disposons d'assez d'informations pour créer la zone chezmoi.ici

Créons d'abord dans /etc/bind/ un fichier nommé : db.chezmoi.ici qui contiendrai ceci :

 $TTL    1600
 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. (
                         2009012907       ; Serial
                         604800           ; Refresh
                         86400            ; Retry
                         2419200          ; Expire
                         1600 )           ; Negative Cache TTL
 
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.
 chezmoi.ici.    IN      A       192.168.1.254
 tebilepas  IN      A       192.168.1.254
 coucou     IN      A       192.168.1.1
 pourquoi   IN      CNAME   coucou
 tespascheztoi      IN      CNAME   forum.debian-fr.org.

Nous aurions pu écrire :
 @         IN    NS      tebilepas.chezmoi.ici.
à la place de (cela revient au même)
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.

Nous aurions aussi pu éviter les commentaires (par exemple : ;Serial) mais pour les explications ce sera plus facile.

Ce sera suffisant pour commencer!

Pour que cette zone soit prise en compte, nous devons maintenant l'inclure dans le fichier /etc/bind/named.conf.local

Ceci devrait permettre de répondre aux requêtes de type NS pour le domaine maison.mrs, de répondre aussi aux requêtes de type A pour debvirt.maison.mrs et pour test1.maison.mrs, constater aussi que les alias fonctionnent dans et hors du domaine. 

Il nous faut maintenant indiquer à bind que cette zone existe. Nous allons le faire dans le fichier /etc/bind/named.conf.local : 

 zone &quot;chezmoi.ici&quot; {
         type master;
         file &quot;/etc/bind/db.chezmoi.ici&quot;;
         };

Nous redémarrons notre serveur bind

 # service bind9 restart
 Stopping domain name service...: bind9 waiting for pid 1353 to die.
 Starting domain name service...: bind9.

Et nous testons...

 $ host -a chezmoi.ici localhost
 Trying &quot;chezmoi.ici&quot;
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 46986
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;chezmoi.ici.			IN	ANY
 
 ;; ANSWER SECTION:
 chezmoi.ici.		1600	IN	SOA	tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. 2009012907 604800 86400 2419200 1600
 chezmoi.ici.		1600	IN	NS	tebilepas.chezmoi.ici.
 chezmoi.ici.		1600	IN	A	192.168.1.254
 
 ;; ADDITIONAL SECTION:
 tebilepas.chezmoi.ici.	1600	IN	A	192.168.1.254
 
 Received 126 bytes from ::1#53 in 5 ms

 $ host coucou.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 coucou.chezmoi.ici has address 192.168.1.1

 $ host pourquoi.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 pourquoi.chezmoi.ici is an alias for coucou.chezmoi.ici.
 coucou.chezmoi.ici has address 192.168.1.1

 $ host ailleurs.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ailleurs.chezmoi.ici is an alias for forum.debian-fr.org.
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Comme vous avez pu le constater, votre DNS fonctionne parfaitement, il renseigne nos machines sur le réseau local, et il pourvoit à nos demandes d'IP Internet !

== Le Round-robin ==

Le Round-robin est une répartition de charge (load balancing) équitable entre serveurs d'une ferme informatique (cluster). Chaque serveur doit traiter le même nombre de requêtes. Cela nécessite une ferme de serveurs homogènes en capacité de traitement. Cette répartition de charge peut être effectuée par le serveur DNS (Domain Name System) qui associe plusieurs adresses IP à un nom de domaine.

Exemple d'un round-robin fonctionnel :

 jeu. août 05 02:46:56 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99

 jeu. août 05 02:46:57 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147

 jeu. août 05 02:46:59 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104

 jeu. août 05 02:47:01 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

Le premier serveur de la liste n'est jamais le même, il y a une rotation...


ToDo : Conclusion

[[Category:Serveurs]]</text>
      <sha1>bormjkvlnnbhady5dnm37hgygkctdha</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2495</id>
      <parentid>2120</parentid>
      <timestamp>2010-12-16T05:09:31Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* La Configuration */</comment>
      <text xml:space="preserve" bytes="24567">{{Modèle:Ébauche|DNS}}

'''Créer un serveur DNS pour votre réseau local'''

== Qu'est-ce que c'est ? ==

Un Domain Name System (ou DNS, système de noms de domaine) est un service permettant d'établir une correspondance entre une adresse IP et un nom de domaine et, plus généralement, de trouver une information à partir d'un nom de domaine.

Tous les ordinateurs pour communiquer entre eux doivent posséder une adresse IP. Ces adresses sont numériques, elles sont sous cette forme pour les adresses IPV4 : www.xxx.yyy.zzz; et de cette forme pour les adresses IPV6 : aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh.

Ces adresses sont associées à des noms, plus simples à retenir pour les humains, appelés noms de domaines. Résoudre un nom de domaine consiste à trouver l'adresse IP qui lui est associée.

Vous préférez taper google.com ou 72.14.204.103 dans votre navigateur ?

== Pourquoi faire ? ==

* Simple curiosité, pour comprendre son fonctionnement;
* Être autonome des DNS de son FAI (Fournisseur d'accès Internet) en cas d'arrêt de ceux-ci ou par souci de confidentialité;
* Résoudre les adresses de son réseau interne (Intranet) simplement, sans être obligé de remplir le fichier hosts de toutes vos machines;
* Résoudre les &quot;adresses inverses&quot;: obtenir un nom de domaine ou de machine avec une IP.

Cela fait suffisamment de raisons ? Alors continuons!

== Avertissement ==

Nous n'aborderons pas ici les problèmes de sécurité, qui peuvent être nombreux sur un serveur DNS. Le DNS que nous allons construire est destiné UNIQUEMENT à notre réseau local, il n'est pas accessible depuis Internet.

== Installation ==

 # apt-get install bind9 bind9-host bind9utils host
 
Pour information, trois bogues sur bind9... Vous pouvez tout de même installer sans soucis

 Récupération des rapports de bogue... Fait  
 Analyse des informations Trouvé/Corrigé... Fait  
 Bogues de gravité grave sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;done&gt;
  #516616 - bind9 locks up on start on mipsel and mips (Corrigé : bind9/1:9.7.0.dfsg.1-1)
    Réuni avec : 520688
 Bogues de gravité critical sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #575916 - bind9: assertion fails in name.c:1699 INSIST(offset &lt;= length)
 Bogues de gravité serious sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #584585 - file conflict with libisc50 (Corrigé : 1:9.7.0.dsfg~b3-1)
 Résumé :
  bind9 (3 bogues)

Vérifions que bind écoute bien sur toutes nos adresses :

 # netstat -ntulp | grep named
 tcp        0      0 192.168.0.1:53          0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      2832/named
 tcp6       0      0 :::53                   :::*                    LISTEN      2832/named
 tcp6       0      0 ::1:953                 :::*                    LISTEN      2832/named
 udp        0      0 192.168.0.1:53          0.0.0.0:*                           2832/named
 udp        0      0 127.0.0.1:53            0.0.0.0:*                           2832/named
 udp6       0      0 :::53                   :::*                                2832/named

== Premiers contact ==

Ça y est, notre DNS est déjà fonctionnel...
Il remplit son rôle de DNS récursif et répond à nos demandes de résolution!
Vous ne me croyez pas ?

 $ host forum.debian-fr.org 127.0.0.1
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Cette commande simple nous donne déjà des renseignements :
* forum.debian-fr.org est un alias pour www.zehome.com.
* Son IP (IPV4 est 88.165.116.107)

Plus d'information ? Passons la même commande avec l'option -v (verbose)

 $ host -v forum.debian-fr.org localhost
 Trying &quot;forum.debian-fr.org&quot;
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 11492
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;forum.debian-fr.org.		IN	A
 
 ;; ANSWER SECTION:
 forum.debian-fr.org.	37939	IN	CNAME	www.zehome.com.
 www.zehome.com.		37941	IN	A	88.165.116.107
 
 ;; AUTHORITY SECTION:
 zehome.com.		37941	IN	NS	ns.kimsufi.com.
 zehome.com.		37941	IN	NS	ns0.zehome.com.
 zehome.com.		37941	IN	NS	daboog.zehome.com.
 
 ;; ADDITIONAL SECTION:
 ns.kimsufi.com.		85955	IN	A	213.186.33.199
 
 Received 161 bytes from 127.0.0.1#53 in 1 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 62379
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	AAAA
 
 ;; AUTHORITY SECTION:
 zehome.com.		10355	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 7678
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	MX
 
 ;; AUTHORITY SECTION:
 zehome.com.		10377	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms

Avec l'option -v (verbose) c'est tout de suite plus compliqué...

Quelques remarques sur ce résultat :

* forum.debian-fr.org est un alias pour www.zehome.com;
* Son IP est 88.165.116.107;
* Ce domaine est géré par les serveurs DNS daboog.zehome.com, ns.kimsufi.com et ns0.zehome.com;
* Il ne dispose pas d'IPV6 (pas de réponse à la question IN AAAA);
* Le [[BIND#SOA|SOA]] pour ce domaine est ns0.zehome.com
* Le mail de l'administrateur est ed@zehome.com (ed.zehome.com - ici le point vaut un arobase)

La même chose, sur un domaine plus important

 $ host www.google.fr 127.0.0.1
 Using domain server:
 Name: 127.0.0.1
 Address: 127.0.0.1#53
 Aliases: 
 
 www.google.fr is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

* www.google.fr est un alias pour www.google.com
* www.google.com possède plusieurs adresses IP

Plusieurs IP pour un même domaine ? C'est possible, et cela s'appelle le [[BIND#Le_Round-robin|&quot;round-robin&quot;]]... Tourniquet en Français, cet algorithme d'ordonnancement permet d'attribuer des temps aux processus, ici, il s'agit de faire tourner les IP, afin que tous les serveurs reçoivent leur part de charge...

=== La Configuration ===

L'installation de Bind9 à générée les fichiers suivants :

 # cd /etc/bind
 lol:/etc/bind# vdir
 total 52
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.0
 -rw-r--r-- 1 root root  271 jun 10 22:58 db.127
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.255
 -rw-r--r-- 1 root root  353 jun 10 22:58 db.empty
 -rw-r--r-- 1 root root  270 jun 10 22:58 db.local
 -rw-r--r-- 1 root root 2994 aoû  3 21:30 db.root
 -rw-r--r-- 1 root bind 1125 jui 21 22:19 named.conf
 -rw-r--r-- 1 root bind  278 aoû  3 10:37 named.conf.local
 -rw-r--r-- 1 root bind  572 jun 10 22:58 named.conf.options
 -rw-r----- 1 bind bind   77 jui 20 17:25 rndc.key
 -rw-r--r-- 1 root root 1317 jun 10 22:58 zones.rfc1918

Le fichier principal (épuré des commentaires) :

 # cat /etc/bind/named.conf
 
 include &quot;/etc/bind/named.conf.options&quot;;
 
 zone &quot;.&quot; {
 	type hint;
 	file &quot;/etc/bind/db.root&quot;;
 };
 
 zone &quot;localhost&quot; {
 	type master;
 	file &quot;/etc/bind/db.local&quot;;
 };
 
 zone &quot;127.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.127&quot;;
 };
 
 zone &quot;0.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.0&quot;;
 };
 
 zone &quot;255.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.255&quot;;
 };
 
 include &quot;/etc/bind/named.conf.local&quot;;
 
 server xx.xxx.xxx.xxx	{ };

Ce fichier renvoie vers deux fichiers de configurations : named.conf.options et named.conf.local

C'est dans ces deux fichiers qu'il faudra mettre vos configurations personnelles, le fichier named.conf ne devant en principe pas être modifié.

Le fichier named.conf déclare plusieurs zones, presque toutes destinées à la résolution inverse

A la fin du fichier, nous avons ajouté le NDS de notre FAI, au cas ou... Il est indispensable de pouvoir, quoi qu'il arrive, faire de la résolution de nom... Ce sera donc notre DNS de secours.

==== La zone &quot;.&quot; ====

La zone root est primordiale.
Ce fichier contient toutes les informations sur les root-servers sans lesquels notre DNS ne peut fonctionner.
Ce fichier évolue peu.

 lol:/etc/bind# cat db.root
 
 ;       This file holds the information on root name servers needed to
 ;       initialize cache of Internet domain name servers
 ;       (e.g. reference this file in the &quot;cache  .  &lt;file&gt;&quot;
 ;       configuration file of BIND domain name servers).
 ;
 ;       This file is made available by InterNIC 
 ;       under anonymous FTP as
 ;           file                /domain/named.root
 ;           on server           FTP.INTERNIC.NET
 ;       -OR-                    RS.INTERNIC.NET
 ;
 ;       last update:    Feb 04, 2008
 ;       related version of root zone:   2008020400
 ;
 ; formerly NS.INTERNIC.NET
 ;
 .                        3600000  IN  NS    A.ROOT-SERVERS.NET.
 A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
 A.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:BA3E::2:30
 ;
 ; formerly NS1.ISI.EDU
 ;
 .                        3600000      NS    B.ROOT-SERVERS.NET.
 B.ROOT-SERVERS.NET.      3600000      A     192.228.79.201
 ;
 ; formerly C.PSI.NET
 ;
 .                        3600000      NS    C.ROOT-SERVERS.NET.
 C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
 ;
 ; formerly TERP.UMD.EDU
 ;
 .                        3600000      NS    D.ROOT-SERVERS.NET.
 D.ROOT-SERVERS.NET.      3600000      A     128.8.10.90
 ;
 ; formerly NS.NASA.GOV
 ;
 .                        3600000      NS    E.ROOT-SERVERS.NET.
 E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
 ;
 ; formerly NS.ISC.ORG
 ;
 .                        3600000      NS    F.ROOT-SERVERS.NET.
 F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
 F.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2f::f
 ;
 ; formerly NS.NIC.DDN.MIL
 ;
 .                        3600000      NS    G.ROOT-SERVERS.NET.
 G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
 ;
 ; formerly AOS.ARL.ARMY.MIL
 ;
 .                        3600000      NS    H.ROOT-SERVERS.NET.
 H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
 H.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:1::803f:235
 ;
 ; formerly NIC.NORDU.NET
 ;
 .                        3600000      NS    I.ROOT-SERVERS.NET.
 I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
 ;
 ; operated by VeriSign, Inc.
 ;
 .                        3600000      NS    J.ROOT-SERVERS.NET.
 J.ROOT-SERVERS.NET.      3600000      A     192.58.128.30
 J.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:C27::2:30
 ;
 ; operated by RIPE NCC
 ;
 .                        3600000      NS    K.ROOT-SERVERS.NET.
 K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129 
 K.ROOT-SERVERS.NET.      3600000      AAAA  2001:7fd::1
 ;
 ; operated by ICANN
 ;
 .                        3600000      NS    L.ROOT-SERVERS.NET.
 L.ROOT-SERVERS.NET.      3600000      A     199.7.83.42
 ;
 ; operated by WIDEaimer
 ;
 .                        3600000      NS    M.ROOT-SERVERS.NET.
 M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
 M.ROOT-SERVERS.NET.      3600000      AAAA  2001:dc3::35
 ; End of File

==== La zone &quot;localhost&quot; ====

 # cat db.local 
 ;
 ; BIND data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      2		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 @	IN	A	127.0.0.1
 @	IN	AAAA	::1

Peu utilisée en général, elle permet de résoudre localhost : 

La structure de ce dernier fichier est un peu déroutante au début, emplie de @ . A AAAA SOA et autres IN que nous détaillerons plus loin.
Nous remarquons que localhost possède deux IP : 127.0.0.1 (IPV4) et ::1 (IPV6) vous le saviez probablement déjà!

==== Les zones in-addr.arpa ====

Nous venons de voir les fichiers qui permettent de résoudre l'adresse d'une machine à partir de son nom. Or, il arrive que certains mécanismes réclament l'inverse, c'est à dire trouver le (les) noms associés à des IP.

Les zones in-addr.arpa servent à ça.

Voici la zone inverse pour localhost :

 # cat db.127 
 ;
 ; BIND reverse data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      1		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 1.0.0	IN	PTR	localhost.

La notation est ici inversée.
Si nous cherchons dans la zone 127 l'adresse 0.0.1 nous tomberons sur localhost =&gt; 1.0.0 IN PTR localhost.

Par exemple, Pour l'adresse 192.1.2.3, nous obtenons le nom de domaine 3.2.1.192.in-addr.arpa.

== Contenu d'une Zone ==

Une zone contient deux enregistrements obligatoires :

* SOA
* NS

=== SOA ===

SOA (Start Of Authority). Le champ SOA indique quel est le serveur « maitre ». Ce serveur peut-avoir plusieurs serveurs esclaves

 $ host -t soa google.fr
 google.fr has SOA record ns1.google.com. dns-admin.google.com. 1423257 21600 3600 1209600 300

Nous savons donc que le serveur ns1.google.com est le serveur maître du domaine google.com.
Et nous avons l'adresse email du responsable : dns-admin@google.com (l'arobase est remplacé par un point dans le fichier de zone)

L'enregistrement SOA contient un certain nombre d'enregistrements et de paramètres:

==== Le nom du primaire ====

 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici.

C'est le nom du serveur primaire pour la zone.
L'adresse de courrier électronique du responsable technique de la zone (zone-contact).
Il faut l'écrire en replaçant le @ par un point. On a alors par exemple: root@inria.fr qui devient root.inria.fr

==== A, AAAA, MX, CNAME, etc. ====

Les types d'enregistrements sont: A, AAAA, MX, CNAME, NS, SOA, PTR, TXT, HINFO, WKS, RP, MA, MB.

===== A (Address) =====

C'est l'enregistrement le plus courant. Le DNS a été créé en grande partie pour ça...
Le champ A (Address) fait correspondre un nom à une adresse IPv4.

nom     IN      A       193.10.20.30

Dans le cas d'une machine qui dispose de plus d'une adresse IP (un routeur ou une machine avec plusieurs cartes), il faut indiquer un enregistrement A par adresse, mais il faut alors que tous les enregistrements PTR pointent vers ce nom là.

===== AAAA (Address IPV6) =====

Idem au champ A, mais correspond à une adresse de type IPV6

===== NS (Name Server) =====

Le champ NS (Name Server) indique le nom d'un serveur de noms. Il peut y avoir plusieurs champs NS s'il y a plusieurs serveurs de noms...

===== CNAME (Common Name) =====

Le champ CNAME (Common Name) est utilisé pour créer des alias. Un &quot;vrai&quot; nom doit être préalablement déclaré avec la variable A, un alias peut ensuite être créé qui pointera vers celui-ci.

===== MX (Mail eXchanger) =====

Le champ MX (Mail eXchanger), est utile pour le protocole SMTP ou TXT.

Il indique pour un nom de domaine quelle est la machine à laquelle il faut envoyer le courrier pour ce domaine.

Si plusieurs enregistrements MX sont présents, il faut leur attribuer un poids... Le MTA (Mail transfert agent) tentera d'envoyer le courrier en premier à la machine ayant le poids associé le plus faible, puis ensuite dans l'ordre croissant des poids.

Si la machine qui relaie le courrier est dans la liste des MX pour le domaine, elle envoie le courrier aux machines de poids inférieur au sien.

nom     IN      MX      10      premier.relais.
        IN      MX      20      second.relais.

==== Le numéro de série de la zone ====

Il permet aux serveurs secondaires qui interrogent régulièrement le serveur primaire de chaque zone de déterminer quand la zone a été mise à jour.



==== L'intervalle entre les rafraichissements (refresh) ====

Temps, en seconde, au bout duquel les serveurs « esclaves » devront demander à rafraichir leur données pour cette zone. 3600 secondes dans l'exemple ci-dessous, soit une heure. 

 3600           ; Refresh

La valeur conseillée est 24 heures, soit 86400 secondes.

==== L'intervalle entre les rafraichissements (retry) ====

Durée, en secondes, à partir de laquelle un serveur esclave doit ré-essayer de se synchroniser en cas d'échec du rafraichissement. Ici toutes les 300 secondes, soit toutes les 5 minutes. 

 300            ; Retry

La valeur conseillée est 6 heures, soit 21600 secondes.

==== La durée d'expiration des enregistrements d'un secondaire ====

En cas d'échec des tentatives de synchronisation, indique le temps (en secondes) au bout duquel les serveurs secondaires devront considérer qu'ils ne savent plus répondre aux requêtes concernant cette zone.

 2419200          ; Expire

La valeur conseillée est de 41 jours, soit 3600000 secondes.

==== La durée de vie par défaut des enregistrements (default TTL) ====

Durée de vie de l'information fournie.
Les serveurs DNS récursifs conserveront en cache les informations récoltées pendant la durée indiquée dans ce paramètre. 0 indique que les valeurs ne doivent pas être conservées en cache.

 1600 )           ; Negative Cache TTL

La valeur conseillée est de 24 heures, soit 86400 secondes.

==== Le symbole « @ » ====

Dans un fichier de configuration de zone, ce symbole représente exactement le nom de domaine de la zone. Par exemple, lorsque nous allons créer notre zone maison.mrs, écrire : 

 maison.mrs.  IN SOA ...

Nous pourrons écrire : 

 @            IN SOA ...

=== NS (Name Server) ===

Cet enregistrement indique une délégation pour la gestion du nom donné. C'est à dire que le nom donné devient une zone, dont la gestion est déléguée au serveur indiqué en partie droite.

L'enregistrement donne le nom d'un des serveurs de noms autoritaire pour la zone, comme il y a toujours plus d'un serveur de noms pour une zone, on répète l'enregistrement NS autant de fois qu'il y a de serveurs pour la zone.

Quand pour un nom, on a des enregistrements NS, il est interdit de faire figurer dans la zone parente (celle là) d'autres enregistrements. S'il y a à faire figurer des enregistrements, il faut les mettre dans la zone fille.

zone    IN      NS      serveur.nom.de.domaine.

          IN      NS      autreServeur.nom.de.domaine.

          IN      NS      encoreUn.autreNom.de.domaine.

== Créons notre première zone ==

Maintenant que les explications indigestes sont faites... 
La meilleure façon de comprendre, est d'appliquer à son réseau local sa propre zone!

=== La zone chezmoi.ici ===

Pour cet exemple j'ai pris un nom de domaine bidon, c'est tout a fait possible, vous pouvez donner n'importe quel nom à votre Intranet!

Notre serveur s'appelle tebilepas il dispose de l'IP 192.168.1.254

Le domaine est chezmoi.ici

Nous disposons d'assez d'informations pour créer la zone chezmoi.ici

Créons d'abord dans /etc/bind/ un fichier nommé : db.chezmoi.ici qui contiendrai ceci :

 $TTL    1600
 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. (
                         2009012907       ; Serial
                         604800           ; Refresh
                         86400            ; Retry
                         2419200          ; Expire
                         1600 )           ; Negative Cache TTL
 
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.
 chezmoi.ici.    IN      A       192.168.1.254
 tebilepas  IN      A       192.168.1.254
 coucou     IN      A       192.168.1.1
 pourquoi   IN      CNAME   coucou
 tespascheztoi      IN      CNAME   forum.debian-fr.org.

Nous aurions pu écrire :
 @         IN    NS      tebilepas.chezmoi.ici.
à la place de (cela revient au même)
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.

Nous aurions aussi pu éviter les commentaires (par exemple : ;Serial) mais pour les explications ce sera plus facile.

Ce sera suffisant pour commencer!

Pour que cette zone soit prise en compte, nous devons maintenant l'inclure dans le fichier /etc/bind/named.conf.local

Ceci devrait permettre de répondre aux requêtes de type NS pour le domaine maison.mrs, de répondre aussi aux requêtes de type A pour debvirt.maison.mrs et pour test1.maison.mrs, constater aussi que les alias fonctionnent dans et hors du domaine. 

Il nous faut maintenant indiquer à bind que cette zone existe. Nous allons le faire dans le fichier /etc/bind/named.conf.local : 

 zone &quot;chezmoi.ici&quot; {
         type master;
         file &quot;/etc/bind/db.chezmoi.ici&quot;;
         };

Nous redémarrons notre serveur bind

 # service bind9 restart
 Stopping domain name service...: bind9 waiting for pid 1353 to die.
 Starting domain name service...: bind9.

Et nous testons...

 $ host -a chezmoi.ici localhost
 Trying &quot;chezmoi.ici&quot;
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 46986
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;chezmoi.ici.			IN	ANY
 
 ;; ANSWER SECTION:
 chezmoi.ici.		1600	IN	SOA	tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. 2009012907 604800 86400 2419200 1600
 chezmoi.ici.		1600	IN	NS	tebilepas.chezmoi.ici.
 chezmoi.ici.		1600	IN	A	192.168.1.254
 
 ;; ADDITIONAL SECTION:
 tebilepas.chezmoi.ici.	1600	IN	A	192.168.1.254
 
 Received 126 bytes from ::1#53 in 5 ms

 $ host coucou.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 coucou.chezmoi.ici has address 192.168.1.1

 $ host pourquoi.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 pourquoi.chezmoi.ici is an alias for coucou.chezmoi.ici.
 coucou.chezmoi.ici has address 192.168.1.1

 $ host ailleurs.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ailleurs.chezmoi.ici is an alias for forum.debian-fr.org.
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Comme vous avez pu le constater, votre DNS fonctionne parfaitement, il renseigne nos machines sur le réseau local, et il pourvoit à nos demandes d'IP Internet !

== Le Round-robin ==

Le Round-robin est une répartition de charge (load balancing) équitable entre serveurs d'une ferme informatique (cluster). Chaque serveur doit traiter le même nombre de requêtes. Cela nécessite une ferme de serveurs homogènes en capacité de traitement. Cette répartition de charge peut être effectuée par le serveur DNS (Domain Name System) qui associe plusieurs adresses IP à un nom de domaine.

Exemple d'un round-robin fonctionnel :

 jeu. août 05 02:46:56 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99

 jeu. août 05 02:46:57 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147

 jeu. août 05 02:46:59 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104

 jeu. août 05 02:47:01 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

Le premier serveur de la liste n'est jamais le même, il y a une rotation...


ToDo : Conclusion

[[Category:Serveurs]]</text>
      <sha1>dmmf54okqv0p49d0ohhcwt6fq2kbqcz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2496</id>
      <parentid>2495</parentid>
      <timestamp>2010-12-16T05:10:00Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* La Configuration */</comment>
      <text xml:space="preserve" bytes="24568">{{Modèle:Ébauche|DNS}}

'''Créer un serveur DNS pour votre réseau local'''

== Qu'est-ce que c'est ? ==

Un Domain Name System (ou DNS, système de noms de domaine) est un service permettant d'établir une correspondance entre une adresse IP et un nom de domaine et, plus généralement, de trouver une information à partir d'un nom de domaine.

Tous les ordinateurs pour communiquer entre eux doivent posséder une adresse IP. Ces adresses sont numériques, elles sont sous cette forme pour les adresses IPV4 : www.xxx.yyy.zzz; et de cette forme pour les adresses IPV6 : aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh.

Ces adresses sont associées à des noms, plus simples à retenir pour les humains, appelés noms de domaines. Résoudre un nom de domaine consiste à trouver l'adresse IP qui lui est associée.

Vous préférez taper google.com ou 72.14.204.103 dans votre navigateur ?

== Pourquoi faire ? ==

* Simple curiosité, pour comprendre son fonctionnement;
* Être autonome des DNS de son FAI (Fournisseur d'accès Internet) en cas d'arrêt de ceux-ci ou par souci de confidentialité;
* Résoudre les adresses de son réseau interne (Intranet) simplement, sans être obligé de remplir le fichier hosts de toutes vos machines;
* Résoudre les &quot;adresses inverses&quot;: obtenir un nom de domaine ou de machine avec une IP.

Cela fait suffisamment de raisons ? Alors continuons!

== Avertissement ==

Nous n'aborderons pas ici les problèmes de sécurité, qui peuvent être nombreux sur un serveur DNS. Le DNS que nous allons construire est destiné UNIQUEMENT à notre réseau local, il n'est pas accessible depuis Internet.

== Installation ==

 # apt-get install bind9 bind9-host bind9utils host
 
Pour information, trois bogues sur bind9... Vous pouvez tout de même installer sans soucis

 Récupération des rapports de bogue... Fait  
 Analyse des informations Trouvé/Corrigé... Fait  
 Bogues de gravité grave sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;done&gt;
  #516616 - bind9 locks up on start on mipsel and mips (Corrigé : bind9/1:9.7.0.dfsg.1-1)
    Réuni avec : 520688
 Bogues de gravité critical sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #575916 - bind9: assertion fails in name.c:1699 INSIST(offset &lt;= length)
 Bogues de gravité serious sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #584585 - file conflict with libisc50 (Corrigé : 1:9.7.0.dsfg~b3-1)
 Résumé :
  bind9 (3 bogues)

Vérifions que bind écoute bien sur toutes nos adresses :

 # netstat -ntulp | grep named
 tcp        0      0 192.168.0.1:53          0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      2832/named
 tcp6       0      0 :::53                   :::*                    LISTEN      2832/named
 tcp6       0      0 ::1:953                 :::*                    LISTEN      2832/named
 udp        0      0 192.168.0.1:53          0.0.0.0:*                           2832/named
 udp        0      0 127.0.0.1:53            0.0.0.0:*                           2832/named
 udp6       0      0 :::53                   :::*                                2832/named

== Premiers contact ==

Ça y est, notre DNS est déjà fonctionnel...
Il remplit son rôle de DNS récursif et répond à nos demandes de résolution!
Vous ne me croyez pas ?

 $ host forum.debian-fr.org 127.0.0.1
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Cette commande simple nous donne déjà des renseignements :
* forum.debian-fr.org est un alias pour www.zehome.com.
* Son IP (IPV4 est 88.165.116.107)

Plus d'information ? Passons la même commande avec l'option -v (verbose)

 $ host -v forum.debian-fr.org localhost
 Trying &quot;forum.debian-fr.org&quot;
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 11492
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;forum.debian-fr.org.		IN	A
 
 ;; ANSWER SECTION:
 forum.debian-fr.org.	37939	IN	CNAME	www.zehome.com.
 www.zehome.com.		37941	IN	A	88.165.116.107
 
 ;; AUTHORITY SECTION:
 zehome.com.		37941	IN	NS	ns.kimsufi.com.
 zehome.com.		37941	IN	NS	ns0.zehome.com.
 zehome.com.		37941	IN	NS	daboog.zehome.com.
 
 ;; ADDITIONAL SECTION:
 ns.kimsufi.com.		85955	IN	A	213.186.33.199
 
 Received 161 bytes from 127.0.0.1#53 in 1 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 62379
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	AAAA
 
 ;; AUTHORITY SECTION:
 zehome.com.		10355	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 7678
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	MX
 
 ;; AUTHORITY SECTION:
 zehome.com.		10377	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms

Avec l'option -v (verbose) c'est tout de suite plus compliqué...

Quelques remarques sur ce résultat :

* forum.debian-fr.org est un alias pour www.zehome.com;
* Son IP est 88.165.116.107;
* Ce domaine est géré par les serveurs DNS daboog.zehome.com, ns.kimsufi.com et ns0.zehome.com;
* Il ne dispose pas d'IPV6 (pas de réponse à la question IN AAAA);
* Le [[BIND#SOA|SOA]] pour ce domaine est ns0.zehome.com
* Le mail de l'administrateur est ed@zehome.com (ed.zehome.com - ici le point vaut un arobase)

La même chose, sur un domaine plus important

 $ host www.google.fr 127.0.0.1
 Using domain server:
 Name: 127.0.0.1
 Address: 127.0.0.1#53
 Aliases: 
 
 www.google.fr is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

* www.google.fr est un alias pour www.google.com
* www.google.com possède plusieurs adresses IP

Plusieurs IP pour un même domaine ? C'est possible, et cela s'appelle le [[BIND#Le_Round-robin|&quot;round-robin&quot;]]... Tourniquet en Français, cet algorithme d'ordonnancement permet d'attribuer des temps aux processus, ici, il s'agit de faire tourner les IP, afin que tous les serveurs reçoivent leur part de charge...

=== La Configuration ===

L'installation de Bind9 à générée les fichiers suivants :

 # cd /etc/bind
 lol:/etc/bind# vdir
 total 52
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.0
 -rw-r--r-- 1 root root  271 jun 10 22:58 db.127
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.255
 -rw-r--r-- 1 root root  353 jun 10 22:58 db.empty
 -rw-r--r-- 1 root root  270 jun 10 22:58 db.local
 -rw-r--r-- 1 root root 2994 aoû  3 21:30 db.root
 -rw-r--r-- 1 root bind 1125 jui 21 22:19 named.conf
 -rw-r--r-- 1 root bind  278 aoû  3 10:37 named.conf.local
 -rw-r--r-- 1 root bind  572 jun 10 22:58 named.conf.options
 -rw-r----- 1 bind bind   77 jui 20 17:25 rndc.key
 -rw-r--r-- 1 root root 1317 jun 10 22:58 zones.rfc1918

Le fichier principal (épuré des commentaires) :

 # cat /etc/bind/named.conf
 
 include &quot;/etc/bind/named.conf.options&quot;;
 
 zone &quot;.&quot; {
 	type hint;
 	file &quot;/etc/bind/db.root&quot;;
 };
 
 zone &quot;localhost&quot; {
 	type master;
 	file &quot;/etc/bind/db.local&quot;;
 };
 
 zone &quot;127.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.127&quot;;
 };
 
 zone &quot;0.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.0&quot;;
 };
 
 zone &quot;255.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.255&quot;;
 };
 
 include &quot;/etc/bind/named.conf.local&quot;;
 
 server xxx.xxx.xxx.xxx	{ };

Ce fichier renvoie vers deux fichiers de configurations : named.conf.options et named.conf.local

C'est dans ces deux fichiers qu'il faudra mettre vos configurations personnelles, le fichier named.conf ne devant en principe pas être modifié.

Le fichier named.conf déclare plusieurs zones, presque toutes destinées à la résolution inverse

A la fin du fichier, nous avons ajouté le NDS de notre FAI, au cas ou... Il est indispensable de pouvoir, quoi qu'il arrive, faire de la résolution de nom... Ce sera donc notre DNS de secours.

==== La zone &quot;.&quot; ====

La zone root est primordiale.
Ce fichier contient toutes les informations sur les root-servers sans lesquels notre DNS ne peut fonctionner.
Ce fichier évolue peu.

 lol:/etc/bind# cat db.root
 
 ;       This file holds the information on root name servers needed to
 ;       initialize cache of Internet domain name servers
 ;       (e.g. reference this file in the &quot;cache  .  &lt;file&gt;&quot;
 ;       configuration file of BIND domain name servers).
 ;
 ;       This file is made available by InterNIC 
 ;       under anonymous FTP as
 ;           file                /domain/named.root
 ;           on server           FTP.INTERNIC.NET
 ;       -OR-                    RS.INTERNIC.NET
 ;
 ;       last update:    Feb 04, 2008
 ;       related version of root zone:   2008020400
 ;
 ; formerly NS.INTERNIC.NET
 ;
 .                        3600000  IN  NS    A.ROOT-SERVERS.NET.
 A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
 A.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:BA3E::2:30
 ;
 ; formerly NS1.ISI.EDU
 ;
 .                        3600000      NS    B.ROOT-SERVERS.NET.
 B.ROOT-SERVERS.NET.      3600000      A     192.228.79.201
 ;
 ; formerly C.PSI.NET
 ;
 .                        3600000      NS    C.ROOT-SERVERS.NET.
 C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
 ;
 ; formerly TERP.UMD.EDU
 ;
 .                        3600000      NS    D.ROOT-SERVERS.NET.
 D.ROOT-SERVERS.NET.      3600000      A     128.8.10.90
 ;
 ; formerly NS.NASA.GOV
 ;
 .                        3600000      NS    E.ROOT-SERVERS.NET.
 E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
 ;
 ; formerly NS.ISC.ORG
 ;
 .                        3600000      NS    F.ROOT-SERVERS.NET.
 F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
 F.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2f::f
 ;
 ; formerly NS.NIC.DDN.MIL
 ;
 .                        3600000      NS    G.ROOT-SERVERS.NET.
 G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
 ;
 ; formerly AOS.ARL.ARMY.MIL
 ;
 .                        3600000      NS    H.ROOT-SERVERS.NET.
 H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
 H.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:1::803f:235
 ;
 ; formerly NIC.NORDU.NET
 ;
 .                        3600000      NS    I.ROOT-SERVERS.NET.
 I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
 ;
 ; operated by VeriSign, Inc.
 ;
 .                        3600000      NS    J.ROOT-SERVERS.NET.
 J.ROOT-SERVERS.NET.      3600000      A     192.58.128.30
 J.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:C27::2:30
 ;
 ; operated by RIPE NCC
 ;
 .                        3600000      NS    K.ROOT-SERVERS.NET.
 K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129 
 K.ROOT-SERVERS.NET.      3600000      AAAA  2001:7fd::1
 ;
 ; operated by ICANN
 ;
 .                        3600000      NS    L.ROOT-SERVERS.NET.
 L.ROOT-SERVERS.NET.      3600000      A     199.7.83.42
 ;
 ; operated by WIDEaimer
 ;
 .                        3600000      NS    M.ROOT-SERVERS.NET.
 M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
 M.ROOT-SERVERS.NET.      3600000      AAAA  2001:dc3::35
 ; End of File

==== La zone &quot;localhost&quot; ====

 # cat db.local 
 ;
 ; BIND data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      2		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 @	IN	A	127.0.0.1
 @	IN	AAAA	::1

Peu utilisée en général, elle permet de résoudre localhost : 

La structure de ce dernier fichier est un peu déroutante au début, emplie de @ . A AAAA SOA et autres IN que nous détaillerons plus loin.
Nous remarquons que localhost possède deux IP : 127.0.0.1 (IPV4) et ::1 (IPV6) vous le saviez probablement déjà!

==== Les zones in-addr.arpa ====

Nous venons de voir les fichiers qui permettent de résoudre l'adresse d'une machine à partir de son nom. Or, il arrive que certains mécanismes réclament l'inverse, c'est à dire trouver le (les) noms associés à des IP.

Les zones in-addr.arpa servent à ça.

Voici la zone inverse pour localhost :

 # cat db.127 
 ;
 ; BIND reverse data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      1		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 1.0.0	IN	PTR	localhost.

La notation est ici inversée.
Si nous cherchons dans la zone 127 l'adresse 0.0.1 nous tomberons sur localhost =&gt; 1.0.0 IN PTR localhost.

Par exemple, Pour l'adresse 192.1.2.3, nous obtenons le nom de domaine 3.2.1.192.in-addr.arpa.

== Contenu d'une Zone ==

Une zone contient deux enregistrements obligatoires :

* SOA
* NS

=== SOA ===

SOA (Start Of Authority). Le champ SOA indique quel est le serveur « maitre ». Ce serveur peut-avoir plusieurs serveurs esclaves

 $ host -t soa google.fr
 google.fr has SOA record ns1.google.com. dns-admin.google.com. 1423257 21600 3600 1209600 300

Nous savons donc que le serveur ns1.google.com est le serveur maître du domaine google.com.
Et nous avons l'adresse email du responsable : dns-admin@google.com (l'arobase est remplacé par un point dans le fichier de zone)

L'enregistrement SOA contient un certain nombre d'enregistrements et de paramètres:

==== Le nom du primaire ====

 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici.

C'est le nom du serveur primaire pour la zone.
L'adresse de courrier électronique du responsable technique de la zone (zone-contact).
Il faut l'écrire en replaçant le @ par un point. On a alors par exemple: root@inria.fr qui devient root.inria.fr

==== A, AAAA, MX, CNAME, etc. ====

Les types d'enregistrements sont: A, AAAA, MX, CNAME, NS, SOA, PTR, TXT, HINFO, WKS, RP, MA, MB.

===== A (Address) =====

C'est l'enregistrement le plus courant. Le DNS a été créé en grande partie pour ça...
Le champ A (Address) fait correspondre un nom à une adresse IPv4.

nom     IN      A       193.10.20.30

Dans le cas d'une machine qui dispose de plus d'une adresse IP (un routeur ou une machine avec plusieurs cartes), il faut indiquer un enregistrement A par adresse, mais il faut alors que tous les enregistrements PTR pointent vers ce nom là.

===== AAAA (Address IPV6) =====

Idem au champ A, mais correspond à une adresse de type IPV6

===== NS (Name Server) =====

Le champ NS (Name Server) indique le nom d'un serveur de noms. Il peut y avoir plusieurs champs NS s'il y a plusieurs serveurs de noms...

===== CNAME (Common Name) =====

Le champ CNAME (Common Name) est utilisé pour créer des alias. Un &quot;vrai&quot; nom doit être préalablement déclaré avec la variable A, un alias peut ensuite être créé qui pointera vers celui-ci.

===== MX (Mail eXchanger) =====

Le champ MX (Mail eXchanger), est utile pour le protocole SMTP ou TXT.

Il indique pour un nom de domaine quelle est la machine à laquelle il faut envoyer le courrier pour ce domaine.

Si plusieurs enregistrements MX sont présents, il faut leur attribuer un poids... Le MTA (Mail transfert agent) tentera d'envoyer le courrier en premier à la machine ayant le poids associé le plus faible, puis ensuite dans l'ordre croissant des poids.

Si la machine qui relaie le courrier est dans la liste des MX pour le domaine, elle envoie le courrier aux machines de poids inférieur au sien.

nom     IN      MX      10      premier.relais.
        IN      MX      20      second.relais.

==== Le numéro de série de la zone ====

Il permet aux serveurs secondaires qui interrogent régulièrement le serveur primaire de chaque zone de déterminer quand la zone a été mise à jour.



==== L'intervalle entre les rafraichissements (refresh) ====

Temps, en seconde, au bout duquel les serveurs « esclaves » devront demander à rafraichir leur données pour cette zone. 3600 secondes dans l'exemple ci-dessous, soit une heure. 

 3600           ; Refresh

La valeur conseillée est 24 heures, soit 86400 secondes.

==== L'intervalle entre les rafraichissements (retry) ====

Durée, en secondes, à partir de laquelle un serveur esclave doit ré-essayer de se synchroniser en cas d'échec du rafraichissement. Ici toutes les 300 secondes, soit toutes les 5 minutes. 

 300            ; Retry

La valeur conseillée est 6 heures, soit 21600 secondes.

==== La durée d'expiration des enregistrements d'un secondaire ====

En cas d'échec des tentatives de synchronisation, indique le temps (en secondes) au bout duquel les serveurs secondaires devront considérer qu'ils ne savent plus répondre aux requêtes concernant cette zone.

 2419200          ; Expire

La valeur conseillée est de 41 jours, soit 3600000 secondes.

==== La durée de vie par défaut des enregistrements (default TTL) ====

Durée de vie de l'information fournie.
Les serveurs DNS récursifs conserveront en cache les informations récoltées pendant la durée indiquée dans ce paramètre. 0 indique que les valeurs ne doivent pas être conservées en cache.

 1600 )           ; Negative Cache TTL

La valeur conseillée est de 24 heures, soit 86400 secondes.

==== Le symbole « @ » ====

Dans un fichier de configuration de zone, ce symbole représente exactement le nom de domaine de la zone. Par exemple, lorsque nous allons créer notre zone maison.mrs, écrire : 

 maison.mrs.  IN SOA ...

Nous pourrons écrire : 

 @            IN SOA ...

=== NS (Name Server) ===

Cet enregistrement indique une délégation pour la gestion du nom donné. C'est à dire que le nom donné devient une zone, dont la gestion est déléguée au serveur indiqué en partie droite.

L'enregistrement donne le nom d'un des serveurs de noms autoritaire pour la zone, comme il y a toujours plus d'un serveur de noms pour une zone, on répète l'enregistrement NS autant de fois qu'il y a de serveurs pour la zone.

Quand pour un nom, on a des enregistrements NS, il est interdit de faire figurer dans la zone parente (celle là) d'autres enregistrements. S'il y a à faire figurer des enregistrements, il faut les mettre dans la zone fille.

zone    IN      NS      serveur.nom.de.domaine.

          IN      NS      autreServeur.nom.de.domaine.

          IN      NS      encoreUn.autreNom.de.domaine.

== Créons notre première zone ==

Maintenant que les explications indigestes sont faites... 
La meilleure façon de comprendre, est d'appliquer à son réseau local sa propre zone!

=== La zone chezmoi.ici ===

Pour cet exemple j'ai pris un nom de domaine bidon, c'est tout a fait possible, vous pouvez donner n'importe quel nom à votre Intranet!

Notre serveur s'appelle tebilepas il dispose de l'IP 192.168.1.254

Le domaine est chezmoi.ici

Nous disposons d'assez d'informations pour créer la zone chezmoi.ici

Créons d'abord dans /etc/bind/ un fichier nommé : db.chezmoi.ici qui contiendrai ceci :

 $TTL    1600
 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. (
                         2009012907       ; Serial
                         604800           ; Refresh
                         86400            ; Retry
                         2419200          ; Expire
                         1600 )           ; Negative Cache TTL
 
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.
 chezmoi.ici.    IN      A       192.168.1.254
 tebilepas  IN      A       192.168.1.254
 coucou     IN      A       192.168.1.1
 pourquoi   IN      CNAME   coucou
 tespascheztoi      IN      CNAME   forum.debian-fr.org.

Nous aurions pu écrire :
 @         IN    NS      tebilepas.chezmoi.ici.
à la place de (cela revient au même)
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.

Nous aurions aussi pu éviter les commentaires (par exemple : ;Serial) mais pour les explications ce sera plus facile.

Ce sera suffisant pour commencer!

Pour que cette zone soit prise en compte, nous devons maintenant l'inclure dans le fichier /etc/bind/named.conf.local

Ceci devrait permettre de répondre aux requêtes de type NS pour le domaine maison.mrs, de répondre aussi aux requêtes de type A pour debvirt.maison.mrs et pour test1.maison.mrs, constater aussi que les alias fonctionnent dans et hors du domaine. 

Il nous faut maintenant indiquer à bind que cette zone existe. Nous allons le faire dans le fichier /etc/bind/named.conf.local : 

 zone &quot;chezmoi.ici&quot; {
         type master;
         file &quot;/etc/bind/db.chezmoi.ici&quot;;
         };

Nous redémarrons notre serveur bind

 # service bind9 restart
 Stopping domain name service...: bind9 waiting for pid 1353 to die.
 Starting domain name service...: bind9.

Et nous testons...

 $ host -a chezmoi.ici localhost
 Trying &quot;chezmoi.ici&quot;
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 46986
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;chezmoi.ici.			IN	ANY
 
 ;; ANSWER SECTION:
 chezmoi.ici.		1600	IN	SOA	tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. 2009012907 604800 86400 2419200 1600
 chezmoi.ici.		1600	IN	NS	tebilepas.chezmoi.ici.
 chezmoi.ici.		1600	IN	A	192.168.1.254
 
 ;; ADDITIONAL SECTION:
 tebilepas.chezmoi.ici.	1600	IN	A	192.168.1.254
 
 Received 126 bytes from ::1#53 in 5 ms

 $ host coucou.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 coucou.chezmoi.ici has address 192.168.1.1

 $ host pourquoi.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 pourquoi.chezmoi.ici is an alias for coucou.chezmoi.ici.
 coucou.chezmoi.ici has address 192.168.1.1

 $ host ailleurs.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ailleurs.chezmoi.ici is an alias for forum.debian-fr.org.
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Comme vous avez pu le constater, votre DNS fonctionne parfaitement, il renseigne nos machines sur le réseau local, et il pourvoit à nos demandes d'IP Internet !

== Le Round-robin ==

Le Round-robin est une répartition de charge (load balancing) équitable entre serveurs d'une ferme informatique (cluster). Chaque serveur doit traiter le même nombre de requêtes. Cela nécessite une ferme de serveurs homogènes en capacité de traitement. Cette répartition de charge peut être effectuée par le serveur DNS (Domain Name System) qui associe plusieurs adresses IP à un nom de domaine.

Exemple d'un round-robin fonctionnel :

 jeu. août 05 02:46:56 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99

 jeu. août 05 02:46:57 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147

 jeu. août 05 02:46:59 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104

 jeu. août 05 02:47:01 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

Le premier serveur de la liste n'est jamais le même, il y a une rotation...


ToDo : Conclusion

[[Category:Serveurs]]</text>
      <sha1>kvi6jp4du6opgfo2ziupua3e1q182wu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2497</id>
      <parentid>2496</parentid>
      <timestamp>2010-12-16T05:10:21Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Créons notre première zone */</comment>
      <text xml:space="preserve" bytes="24701">{{Modèle:Ébauche|DNS}}

'''Créer un serveur DNS pour votre réseau local'''

== Qu'est-ce que c'est ? ==

Un Domain Name System (ou DNS, système de noms de domaine) est un service permettant d'établir une correspondance entre une adresse IP et un nom de domaine et, plus généralement, de trouver une information à partir d'un nom de domaine.

Tous les ordinateurs pour communiquer entre eux doivent posséder une adresse IP. Ces adresses sont numériques, elles sont sous cette forme pour les adresses IPV4 : www.xxx.yyy.zzz; et de cette forme pour les adresses IPV6 : aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh.

Ces adresses sont associées à des noms, plus simples à retenir pour les humains, appelés noms de domaines. Résoudre un nom de domaine consiste à trouver l'adresse IP qui lui est associée.

Vous préférez taper google.com ou 72.14.204.103 dans votre navigateur ?

== Pourquoi faire ? ==

* Simple curiosité, pour comprendre son fonctionnement;
* Être autonome des DNS de son FAI (Fournisseur d'accès Internet) en cas d'arrêt de ceux-ci ou par souci de confidentialité;
* Résoudre les adresses de son réseau interne (Intranet) simplement, sans être obligé de remplir le fichier hosts de toutes vos machines;
* Résoudre les &quot;adresses inverses&quot;: obtenir un nom de domaine ou de machine avec une IP.

Cela fait suffisamment de raisons ? Alors continuons!

== Avertissement ==

Nous n'aborderons pas ici les problèmes de sécurité, qui peuvent être nombreux sur un serveur DNS. Le DNS que nous allons construire est destiné UNIQUEMENT à notre réseau local, il n'est pas accessible depuis Internet.

== Installation ==

 # apt-get install bind9 bind9-host bind9utils host
 
Pour information, trois bogues sur bind9... Vous pouvez tout de même installer sans soucis

 Récupération des rapports de bogue... Fait  
 Analyse des informations Trouvé/Corrigé... Fait  
 Bogues de gravité grave sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;done&gt;
  #516616 - bind9 locks up on start on mipsel and mips (Corrigé : bind9/1:9.7.0.dfsg.1-1)
    Réuni avec : 520688
 Bogues de gravité critical sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #575916 - bind9: assertion fails in name.c:1699 INSIST(offset &lt;= length)
 Bogues de gravité serious sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #584585 - file conflict with libisc50 (Corrigé : 1:9.7.0.dsfg~b3-1)
 Résumé :
  bind9 (3 bogues)

Vérifions que bind écoute bien sur toutes nos adresses :

 # netstat -ntulp | grep named
 tcp        0      0 192.168.0.1:53          0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      2832/named
 tcp6       0      0 :::53                   :::*                    LISTEN      2832/named
 tcp6       0      0 ::1:953                 :::*                    LISTEN      2832/named
 udp        0      0 192.168.0.1:53          0.0.0.0:*                           2832/named
 udp        0      0 127.0.0.1:53            0.0.0.0:*                           2832/named
 udp6       0      0 :::53                   :::*                                2832/named

== Premiers contact ==

Ça y est, notre DNS est déjà fonctionnel...
Il remplit son rôle de DNS récursif et répond à nos demandes de résolution!
Vous ne me croyez pas ?

 $ host forum.debian-fr.org 127.0.0.1
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Cette commande simple nous donne déjà des renseignements :
* forum.debian-fr.org est un alias pour www.zehome.com.
* Son IP (IPV4 est 88.165.116.107)

Plus d'information ? Passons la même commande avec l'option -v (verbose)

 $ host -v forum.debian-fr.org localhost
 Trying &quot;forum.debian-fr.org&quot;
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 11492
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;forum.debian-fr.org.		IN	A
 
 ;; ANSWER SECTION:
 forum.debian-fr.org.	37939	IN	CNAME	www.zehome.com.
 www.zehome.com.		37941	IN	A	88.165.116.107
 
 ;; AUTHORITY SECTION:
 zehome.com.		37941	IN	NS	ns.kimsufi.com.
 zehome.com.		37941	IN	NS	ns0.zehome.com.
 zehome.com.		37941	IN	NS	daboog.zehome.com.
 
 ;; ADDITIONAL SECTION:
 ns.kimsufi.com.		85955	IN	A	213.186.33.199
 
 Received 161 bytes from 127.0.0.1#53 in 1 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 62379
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	AAAA
 
 ;; AUTHORITY SECTION:
 zehome.com.		10355	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 7678
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	MX
 
 ;; AUTHORITY SECTION:
 zehome.com.		10377	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms

Avec l'option -v (verbose) c'est tout de suite plus compliqué...

Quelques remarques sur ce résultat :

* forum.debian-fr.org est un alias pour www.zehome.com;
* Son IP est 88.165.116.107;
* Ce domaine est géré par les serveurs DNS daboog.zehome.com, ns.kimsufi.com et ns0.zehome.com;
* Il ne dispose pas d'IPV6 (pas de réponse à la question IN AAAA);
* Le [[BIND#SOA|SOA]] pour ce domaine est ns0.zehome.com
* Le mail de l'administrateur est ed@zehome.com (ed.zehome.com - ici le point vaut un arobase)

La même chose, sur un domaine plus important

 $ host www.google.fr 127.0.0.1
 Using domain server:
 Name: 127.0.0.1
 Address: 127.0.0.1#53
 Aliases: 
 
 www.google.fr is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

* www.google.fr est un alias pour www.google.com
* www.google.com possède plusieurs adresses IP

Plusieurs IP pour un même domaine ? C'est possible, et cela s'appelle le [[BIND#Le_Round-robin|&quot;round-robin&quot;]]... Tourniquet en Français, cet algorithme d'ordonnancement permet d'attribuer des temps aux processus, ici, il s'agit de faire tourner les IP, afin que tous les serveurs reçoivent leur part de charge...

=== La Configuration ===

L'installation de Bind9 à générée les fichiers suivants :

 # cd /etc/bind
 lol:/etc/bind# vdir
 total 52
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.0
 -rw-r--r-- 1 root root  271 jun 10 22:58 db.127
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.255
 -rw-r--r-- 1 root root  353 jun 10 22:58 db.empty
 -rw-r--r-- 1 root root  270 jun 10 22:58 db.local
 -rw-r--r-- 1 root root 2994 aoû  3 21:30 db.root
 -rw-r--r-- 1 root bind 1125 jui 21 22:19 named.conf
 -rw-r--r-- 1 root bind  278 aoû  3 10:37 named.conf.local
 -rw-r--r-- 1 root bind  572 jun 10 22:58 named.conf.options
 -rw-r----- 1 bind bind   77 jui 20 17:25 rndc.key
 -rw-r--r-- 1 root root 1317 jun 10 22:58 zones.rfc1918

Le fichier principal (épuré des commentaires) :

 # cat /etc/bind/named.conf
 
 include &quot;/etc/bind/named.conf.options&quot;;
 
 zone &quot;.&quot; {
 	type hint;
 	file &quot;/etc/bind/db.root&quot;;
 };
 
 zone &quot;localhost&quot; {
 	type master;
 	file &quot;/etc/bind/db.local&quot;;
 };
 
 zone &quot;127.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.127&quot;;
 };
 
 zone &quot;0.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.0&quot;;
 };
 
 zone &quot;255.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.255&quot;;
 };
 
 include &quot;/etc/bind/named.conf.local&quot;;
 
 server xxx.xxx.xxx.xxx	{ };

Ce fichier renvoie vers deux fichiers de configurations : named.conf.options et named.conf.local

C'est dans ces deux fichiers qu'il faudra mettre vos configurations personnelles, le fichier named.conf ne devant en principe pas être modifié.

Le fichier named.conf déclare plusieurs zones, presque toutes destinées à la résolution inverse

A la fin du fichier, nous avons ajouté le NDS de notre FAI, au cas ou... Il est indispensable de pouvoir, quoi qu'il arrive, faire de la résolution de nom... Ce sera donc notre DNS de secours.

==== La zone &quot;.&quot; ====

La zone root est primordiale.
Ce fichier contient toutes les informations sur les root-servers sans lesquels notre DNS ne peut fonctionner.
Ce fichier évolue peu.

 lol:/etc/bind# cat db.root
 
 ;       This file holds the information on root name servers needed to
 ;       initialize cache of Internet domain name servers
 ;       (e.g. reference this file in the &quot;cache  .  &lt;file&gt;&quot;
 ;       configuration file of BIND domain name servers).
 ;
 ;       This file is made available by InterNIC 
 ;       under anonymous FTP as
 ;           file                /domain/named.root
 ;           on server           FTP.INTERNIC.NET
 ;       -OR-                    RS.INTERNIC.NET
 ;
 ;       last update:    Feb 04, 2008
 ;       related version of root zone:   2008020400
 ;
 ; formerly NS.INTERNIC.NET
 ;
 .                        3600000  IN  NS    A.ROOT-SERVERS.NET.
 A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
 A.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:BA3E::2:30
 ;
 ; formerly NS1.ISI.EDU
 ;
 .                        3600000      NS    B.ROOT-SERVERS.NET.
 B.ROOT-SERVERS.NET.      3600000      A     192.228.79.201
 ;
 ; formerly C.PSI.NET
 ;
 .                        3600000      NS    C.ROOT-SERVERS.NET.
 C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
 ;
 ; formerly TERP.UMD.EDU
 ;
 .                        3600000      NS    D.ROOT-SERVERS.NET.
 D.ROOT-SERVERS.NET.      3600000      A     128.8.10.90
 ;
 ; formerly NS.NASA.GOV
 ;
 .                        3600000      NS    E.ROOT-SERVERS.NET.
 E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
 ;
 ; formerly NS.ISC.ORG
 ;
 .                        3600000      NS    F.ROOT-SERVERS.NET.
 F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
 F.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2f::f
 ;
 ; formerly NS.NIC.DDN.MIL
 ;
 .                        3600000      NS    G.ROOT-SERVERS.NET.
 G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
 ;
 ; formerly AOS.ARL.ARMY.MIL
 ;
 .                        3600000      NS    H.ROOT-SERVERS.NET.
 H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
 H.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:1::803f:235
 ;
 ; formerly NIC.NORDU.NET
 ;
 .                        3600000      NS    I.ROOT-SERVERS.NET.
 I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
 ;
 ; operated by VeriSign, Inc.
 ;
 .                        3600000      NS    J.ROOT-SERVERS.NET.
 J.ROOT-SERVERS.NET.      3600000      A     192.58.128.30
 J.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:C27::2:30
 ;
 ; operated by RIPE NCC
 ;
 .                        3600000      NS    K.ROOT-SERVERS.NET.
 K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129 
 K.ROOT-SERVERS.NET.      3600000      AAAA  2001:7fd::1
 ;
 ; operated by ICANN
 ;
 .                        3600000      NS    L.ROOT-SERVERS.NET.
 L.ROOT-SERVERS.NET.      3600000      A     199.7.83.42
 ;
 ; operated by WIDEaimer
 ;
 .                        3600000      NS    M.ROOT-SERVERS.NET.
 M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
 M.ROOT-SERVERS.NET.      3600000      AAAA  2001:dc3::35
 ; End of File

==== La zone &quot;localhost&quot; ====

 # cat db.local 
 ;
 ; BIND data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      2		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 @	IN	A	127.0.0.1
 @	IN	AAAA	::1

Peu utilisée en général, elle permet de résoudre localhost : 

La structure de ce dernier fichier est un peu déroutante au début, emplie de @ . A AAAA SOA et autres IN que nous détaillerons plus loin.
Nous remarquons que localhost possède deux IP : 127.0.0.1 (IPV4) et ::1 (IPV6) vous le saviez probablement déjà!

==== Les zones in-addr.arpa ====

Nous venons de voir les fichiers qui permettent de résoudre l'adresse d'une machine à partir de son nom. Or, il arrive que certains mécanismes réclament l'inverse, c'est à dire trouver le (les) noms associés à des IP.

Les zones in-addr.arpa servent à ça.

Voici la zone inverse pour localhost :

 # cat db.127 
 ;
 ; BIND reverse data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      1		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 1.0.0	IN	PTR	localhost.

La notation est ici inversée.
Si nous cherchons dans la zone 127 l'adresse 0.0.1 nous tomberons sur localhost =&gt; 1.0.0 IN PTR localhost.

Par exemple, Pour l'adresse 192.1.2.3, nous obtenons le nom de domaine 3.2.1.192.in-addr.arpa.

== Contenu d'une Zone ==

Une zone contient deux enregistrements obligatoires :

* SOA
* NS

=== SOA ===

SOA (Start Of Authority). Le champ SOA indique quel est le serveur « maitre ». Ce serveur peut-avoir plusieurs serveurs esclaves

 $ host -t soa google.fr
 google.fr has SOA record ns1.google.com. dns-admin.google.com. 1423257 21600 3600 1209600 300

Nous savons donc que le serveur ns1.google.com est le serveur maître du domaine google.com.
Et nous avons l'adresse email du responsable : dns-admin@google.com (l'arobase est remplacé par un point dans le fichier de zone)

L'enregistrement SOA contient un certain nombre d'enregistrements et de paramètres:

==== Le nom du primaire ====

 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici.

C'est le nom du serveur primaire pour la zone.
L'adresse de courrier électronique du responsable technique de la zone (zone-contact).
Il faut l'écrire en replaçant le @ par un point. On a alors par exemple: root@inria.fr qui devient root.inria.fr

==== A, AAAA, MX, CNAME, etc. ====

Les types d'enregistrements sont: A, AAAA, MX, CNAME, NS, SOA, PTR, TXT, HINFO, WKS, RP, MA, MB.

===== A (Address) =====

C'est l'enregistrement le plus courant. Le DNS a été créé en grande partie pour ça...
Le champ A (Address) fait correspondre un nom à une adresse IPv4.

nom     IN      A       193.10.20.30

Dans le cas d'une machine qui dispose de plus d'une adresse IP (un routeur ou une machine avec plusieurs cartes), il faut indiquer un enregistrement A par adresse, mais il faut alors que tous les enregistrements PTR pointent vers ce nom là.

===== AAAA (Address IPV6) =====

Idem au champ A, mais correspond à une adresse de type IPV6

===== NS (Name Server) =====

Le champ NS (Name Server) indique le nom d'un serveur de noms. Il peut y avoir plusieurs champs NS s'il y a plusieurs serveurs de noms...

===== CNAME (Common Name) =====

Le champ CNAME (Common Name) est utilisé pour créer des alias. Un &quot;vrai&quot; nom doit être préalablement déclaré avec la variable A, un alias peut ensuite être créé qui pointera vers celui-ci.

===== MX (Mail eXchanger) =====

Le champ MX (Mail eXchanger), est utile pour le protocole SMTP ou TXT.

Il indique pour un nom de domaine quelle est la machine à laquelle il faut envoyer le courrier pour ce domaine.

Si plusieurs enregistrements MX sont présents, il faut leur attribuer un poids... Le MTA (Mail transfert agent) tentera d'envoyer le courrier en premier à la machine ayant le poids associé le plus faible, puis ensuite dans l'ordre croissant des poids.

Si la machine qui relaie le courrier est dans la liste des MX pour le domaine, elle envoie le courrier aux machines de poids inférieur au sien.

nom     IN      MX      10      premier.relais.
        IN      MX      20      second.relais.

==== Le numéro de série de la zone ====

Il permet aux serveurs secondaires qui interrogent régulièrement le serveur primaire de chaque zone de déterminer quand la zone a été mise à jour.



==== L'intervalle entre les rafraichissements (refresh) ====

Temps, en seconde, au bout duquel les serveurs « esclaves » devront demander à rafraichir leur données pour cette zone. 3600 secondes dans l'exemple ci-dessous, soit une heure. 

 3600           ; Refresh

La valeur conseillée est 24 heures, soit 86400 secondes.

==== L'intervalle entre les rafraichissements (retry) ====

Durée, en secondes, à partir de laquelle un serveur esclave doit ré-essayer de se synchroniser en cas d'échec du rafraichissement. Ici toutes les 300 secondes, soit toutes les 5 minutes. 

 300            ; Retry

La valeur conseillée est 6 heures, soit 21600 secondes.

==== La durée d'expiration des enregistrements d'un secondaire ====

En cas d'échec des tentatives de synchronisation, indique le temps (en secondes) au bout duquel les serveurs secondaires devront considérer qu'ils ne savent plus répondre aux requêtes concernant cette zone.

 2419200          ; Expire

La valeur conseillée est de 41 jours, soit 3600000 secondes.

==== La durée de vie par défaut des enregistrements (default TTL) ====

Durée de vie de l'information fournie.
Les serveurs DNS récursifs conserveront en cache les informations récoltées pendant la durée indiquée dans ce paramètre. 0 indique que les valeurs ne doivent pas être conservées en cache.

 1600 )           ; Negative Cache TTL

La valeur conseillée est de 24 heures, soit 86400 secondes.

==== Le symbole « @ » ====

Dans un fichier de configuration de zone, ce symbole représente exactement le nom de domaine de la zone. Par exemple, lorsque nous allons créer notre zone maison.mrs, écrire : 

 maison.mrs.  IN SOA ...

Nous pourrons écrire : 

 @            IN SOA ...

=== NS (Name Server) ===

Cet enregistrement indique une délégation pour la gestion du nom donné. C'est à dire que le nom donné devient une zone, dont la gestion est déléguée au serveur indiqué en partie droite.

L'enregistrement donne le nom d'un des serveurs de noms autoritaire pour la zone, comme il y a toujours plus d'un serveur de noms pour une zone, on répète l'enregistrement NS autant de fois qu'il y a de serveurs pour la zone.

Quand pour un nom, on a des enregistrements NS, il est interdit de faire figurer dans la zone parente (celle là) d'autres enregistrements. S'il y a à faire figurer des enregistrements, il faut les mettre dans la zone fille.

zone    IN      NS      serveur.nom.de.domaine.

          IN      NS      autreServeur.nom.de.domaine.

          IN      NS      encoreUn.autreNom.de.domaine.

== Créons notre première zone ==

Maintenant que les explications indigestes sont faites... 
La meilleure façon de comprendre, est d'appliquer à son réseau local sa propre zone!

=== La zone chezmoi.ici ===

Pour cet exemple j'ai pris un nom de domaine bidon, c'est tout a fait possible, vous pouvez donner n'importe quel nom à votre Intranet!

Notre serveur s'appelle tebilepas il dispose de l'IP 192.168.1.254

Le domaine est chezmoi.ici

Nous disposons d'assez d'informations pour créer la zone chezmoi.ici

Créons d'abord dans /etc/bind/ un fichier nommé : db.chezmoi.ici qui contiendrai ceci :

 $TTL    1600
 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. (
                         2009012907       ; Serial
                         604800           ; Refresh
                         86400            ; Retry
                         2419200          ; Expire
                         1600 )           ; Negative Cache TTL
 
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.
 chezmoi.ici.    IN      A       192.168.1.254
 tebilepas  IN      A       192.168.1.254
 coucou     IN      A       192.168.1.1
 pourquoi   IN      CNAME   coucou
 tespascheztoi      IN      CNAME   forum.debian-fr.org.

Nous aurions pu écrire :
 @         IN    NS      tebilepas.chezmoi.ici.
à la place de (cela revient au même)
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.

Nous aurions aussi pu éviter les commentaires (par exemple : ;Serial) mais pour les explications ce sera plus facile.

Ce sera suffisant pour commencer!

Pour que cette zone soit prise en compte, nous devons maintenant l'inclure dans le fichier /etc/bind/named.conf.local

Ceci devrait permettre de répondre aux requêtes de type NS pour le domaine maison.mrs, de répondre aussi aux requêtes de type A pour debvirt.maison.mrs et pour test1.maison.mrs, constater aussi que les alias fonctionnent dans et hors du domaine. 

Il nous faut maintenant indiquer à bind que cette zone existe. Nous allons le faire dans le fichier /etc/bind/named.conf.local : 

 zone &quot;chezmoi.ici&quot; {
         type master;
         file &quot;/etc/bind/db.chezmoi.ici&quot;;
         };

Nous redémarrons notre serveur bind

 # service bind9 restart
 Stopping domain name service...: bind9 waiting for pid 1353 to die.
 Starting domain name service...: bind9.

== Tests ==

Maintenant que notre serveur de nom est configuré, il faut le tester...

=== Avec la commande host ===

 $ host -a chezmoi.ici localhost
 Trying &quot;chezmoi.ici&quot;
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 46986
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;chezmoi.ici.			IN	ANY
 
 ;; ANSWER SECTION:
 chezmoi.ici.		1600	IN	SOA	tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. 2009012907 604800 86400 2419200 1600
 chezmoi.ici.		1600	IN	NS	tebilepas.chezmoi.ici.
 chezmoi.ici.		1600	IN	A	192.168.1.254
 
 ;; ADDITIONAL SECTION:
 tebilepas.chezmoi.ici.	1600	IN	A	192.168.1.254
 
 Received 126 bytes from ::1#53 in 5 ms

 $ host coucou.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 coucou.chezmoi.ici has address 192.168.1.1

 $ host pourquoi.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 pourquoi.chezmoi.ici is an alias for coucou.chezmoi.ici.
 coucou.chezmoi.ici has address 192.168.1.1

 $ host ailleurs.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ailleurs.chezmoi.ici is an alias for forum.debian-fr.org.
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Comme vous avez pu le constater, votre DNS fonctionne parfaitement, il renseigne nos machines sur le réseau local, et il pourvoit à nos demandes d'IP Internet !

=== Avec la commande nslookup ===

== Le Round-robin ==

Le Round-robin est une répartition de charge (load balancing) équitable entre serveurs d'une ferme informatique (cluster). Chaque serveur doit traiter le même nombre de requêtes. Cela nécessite une ferme de serveurs homogènes en capacité de traitement. Cette répartition de charge peut être effectuée par le serveur DNS (Domain Name System) qui associe plusieurs adresses IP à un nom de domaine.

Exemple d'un round-robin fonctionnel :

 jeu. août 05 02:46:56 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99

 jeu. août 05 02:46:57 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147

 jeu. août 05 02:46:59 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104

 jeu. août 05 02:47:01 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

Le premier serveur de la liste n'est jamais le même, il y a une rotation...


ToDo : Conclusion

[[Category:Serveurs]]</text>
      <sha1>fj9x92d932vdwgzop8vvcjxyf3g0ng3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2498</id>
      <parentid>2497</parentid>
      <timestamp>2010-12-16T05:23:18Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Tests */</comment>
      <text xml:space="preserve" bytes="25995">{{Modèle:Ébauche|DNS}}

'''Créer un serveur DNS pour votre réseau local'''

== Qu'est-ce que c'est ? ==

Un Domain Name System (ou DNS, système de noms de domaine) est un service permettant d'établir une correspondance entre une adresse IP et un nom de domaine et, plus généralement, de trouver une information à partir d'un nom de domaine.

Tous les ordinateurs pour communiquer entre eux doivent posséder une adresse IP. Ces adresses sont numériques, elles sont sous cette forme pour les adresses IPV4 : www.xxx.yyy.zzz; et de cette forme pour les adresses IPV6 : aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh.

Ces adresses sont associées à des noms, plus simples à retenir pour les humains, appelés noms de domaines. Résoudre un nom de domaine consiste à trouver l'adresse IP qui lui est associée.

Vous préférez taper google.com ou 72.14.204.103 dans votre navigateur ?

== Pourquoi faire ? ==

* Simple curiosité, pour comprendre son fonctionnement;
* Être autonome des DNS de son FAI (Fournisseur d'accès Internet) en cas d'arrêt de ceux-ci ou par souci de confidentialité;
* Résoudre les adresses de son réseau interne (Intranet) simplement, sans être obligé de remplir le fichier hosts de toutes vos machines;
* Résoudre les &quot;adresses inverses&quot;: obtenir un nom de domaine ou de machine avec une IP.

Cela fait suffisamment de raisons ? Alors continuons!

== Avertissement ==

Nous n'aborderons pas ici les problèmes de sécurité, qui peuvent être nombreux sur un serveur DNS. Le DNS que nous allons construire est destiné UNIQUEMENT à notre réseau local, il n'est pas accessible depuis Internet.

== Installation ==

 # apt-get install bind9 bind9-host bind9utils host
 
Pour information, trois bogues sur bind9... Vous pouvez tout de même installer sans soucis

 Récupération des rapports de bogue... Fait  
 Analyse des informations Trouvé/Corrigé... Fait  
 Bogues de gravité grave sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;done&gt;
  #516616 - bind9 locks up on start on mipsel and mips (Corrigé : bind9/1:9.7.0.dfsg.1-1)
    Réuni avec : 520688
 Bogues de gravité critical sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #575916 - bind9: assertion fails in name.c:1699 INSIST(offset &lt;= length)
 Bogues de gravité serious sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #584585 - file conflict with libisc50 (Corrigé : 1:9.7.0.dsfg~b3-1)
 Résumé :
  bind9 (3 bogues)

Vérifions que bind écoute bien sur toutes nos adresses :

 # netstat -ntulp | grep named
 tcp        0      0 192.168.0.1:53          0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      2832/named
 tcp6       0      0 :::53                   :::*                    LISTEN      2832/named
 tcp6       0      0 ::1:953                 :::*                    LISTEN      2832/named
 udp        0      0 192.168.0.1:53          0.0.0.0:*                           2832/named
 udp        0      0 127.0.0.1:53            0.0.0.0:*                           2832/named
 udp6       0      0 :::53                   :::*                                2832/named

== Premiers contact ==

Ça y est, notre DNS est déjà fonctionnel...
Il remplit son rôle de DNS récursif et répond à nos demandes de résolution!
Vous ne me croyez pas ?

 $ host forum.debian-fr.org 127.0.0.1
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Cette commande simple nous donne déjà des renseignements :
* forum.debian-fr.org est un alias pour www.zehome.com.
* Son IP (IPV4 est 88.165.116.107)

Plus d'information ? Passons la même commande avec l'option -v (verbose)

 $ host -v forum.debian-fr.org localhost
 Trying &quot;forum.debian-fr.org&quot;
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 11492
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;forum.debian-fr.org.		IN	A
 
 ;; ANSWER SECTION:
 forum.debian-fr.org.	37939	IN	CNAME	www.zehome.com.
 www.zehome.com.		37941	IN	A	88.165.116.107
 
 ;; AUTHORITY SECTION:
 zehome.com.		37941	IN	NS	ns.kimsufi.com.
 zehome.com.		37941	IN	NS	ns0.zehome.com.
 zehome.com.		37941	IN	NS	daboog.zehome.com.
 
 ;; ADDITIONAL SECTION:
 ns.kimsufi.com.		85955	IN	A	213.186.33.199
 
 Received 161 bytes from 127.0.0.1#53 in 1 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 62379
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	AAAA
 
 ;; AUTHORITY SECTION:
 zehome.com.		10355	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 7678
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	MX
 
 ;; AUTHORITY SECTION:
 zehome.com.		10377	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms

Avec l'option -v (verbose) c'est tout de suite plus compliqué...

Quelques remarques sur ce résultat :

* forum.debian-fr.org est un alias pour www.zehome.com;
* Son IP est 88.165.116.107;
* Ce domaine est géré par les serveurs DNS daboog.zehome.com, ns.kimsufi.com et ns0.zehome.com;
* Il ne dispose pas d'IPV6 (pas de réponse à la question IN AAAA);
* Le [[BIND#SOA|SOA]] pour ce domaine est ns0.zehome.com
* Le mail de l'administrateur est ed@zehome.com (ed.zehome.com - ici le point vaut un arobase)

La même chose, sur un domaine plus important

 $ host www.google.fr 127.0.0.1
 Using domain server:
 Name: 127.0.0.1
 Address: 127.0.0.1#53
 Aliases: 
 
 www.google.fr is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

* www.google.fr est un alias pour www.google.com
* www.google.com possède plusieurs adresses IP

Plusieurs IP pour un même domaine ? C'est possible, et cela s'appelle le [[BIND#Le_Round-robin|&quot;round-robin&quot;]]... Tourniquet en Français, cet algorithme d'ordonnancement permet d'attribuer des temps aux processus, ici, il s'agit de faire tourner les IP, afin que tous les serveurs reçoivent leur part de charge...

=== La Configuration ===

L'installation de Bind9 à générée les fichiers suivants :

 # cd /etc/bind
 lol:/etc/bind# vdir
 total 52
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.0
 -rw-r--r-- 1 root root  271 jun 10 22:58 db.127
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.255
 -rw-r--r-- 1 root root  353 jun 10 22:58 db.empty
 -rw-r--r-- 1 root root  270 jun 10 22:58 db.local
 -rw-r--r-- 1 root root 2994 aoû  3 21:30 db.root
 -rw-r--r-- 1 root bind 1125 jui 21 22:19 named.conf
 -rw-r--r-- 1 root bind  278 aoû  3 10:37 named.conf.local
 -rw-r--r-- 1 root bind  572 jun 10 22:58 named.conf.options
 -rw-r----- 1 bind bind   77 jui 20 17:25 rndc.key
 -rw-r--r-- 1 root root 1317 jun 10 22:58 zones.rfc1918

Le fichier principal (épuré des commentaires) :

 # cat /etc/bind/named.conf
 
 include &quot;/etc/bind/named.conf.options&quot;;
 
 zone &quot;.&quot; {
 	type hint;
 	file &quot;/etc/bind/db.root&quot;;
 };
 
 zone &quot;localhost&quot; {
 	type master;
 	file &quot;/etc/bind/db.local&quot;;
 };
 
 zone &quot;127.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.127&quot;;
 };
 
 zone &quot;0.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.0&quot;;
 };
 
 zone &quot;255.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.255&quot;;
 };
 
 include &quot;/etc/bind/named.conf.local&quot;;
 
 server xxx.xxx.xxx.xxx	{ };

Ce fichier renvoie vers deux fichiers de configurations : named.conf.options et named.conf.local

C'est dans ces deux fichiers qu'il faudra mettre vos configurations personnelles, le fichier named.conf ne devant en principe pas être modifié.

Le fichier named.conf déclare plusieurs zones, presque toutes destinées à la résolution inverse

A la fin du fichier, nous avons ajouté le NDS de notre FAI, au cas ou... Il est indispensable de pouvoir, quoi qu'il arrive, faire de la résolution de nom... Ce sera donc notre DNS de secours.

==== La zone &quot;.&quot; ====

La zone root est primordiale.
Ce fichier contient toutes les informations sur les root-servers sans lesquels notre DNS ne peut fonctionner.
Ce fichier évolue peu.

 lol:/etc/bind# cat db.root
 
 ;       This file holds the information on root name servers needed to
 ;       initialize cache of Internet domain name servers
 ;       (e.g. reference this file in the &quot;cache  .  &lt;file&gt;&quot;
 ;       configuration file of BIND domain name servers).
 ;
 ;       This file is made available by InterNIC 
 ;       under anonymous FTP as
 ;           file                /domain/named.root
 ;           on server           FTP.INTERNIC.NET
 ;       -OR-                    RS.INTERNIC.NET
 ;
 ;       last update:    Feb 04, 2008
 ;       related version of root zone:   2008020400
 ;
 ; formerly NS.INTERNIC.NET
 ;
 .                        3600000  IN  NS    A.ROOT-SERVERS.NET.
 A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
 A.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:BA3E::2:30
 ;
 ; formerly NS1.ISI.EDU
 ;
 .                        3600000      NS    B.ROOT-SERVERS.NET.
 B.ROOT-SERVERS.NET.      3600000      A     192.228.79.201
 ;
 ; formerly C.PSI.NET
 ;
 .                        3600000      NS    C.ROOT-SERVERS.NET.
 C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
 ;
 ; formerly TERP.UMD.EDU
 ;
 .                        3600000      NS    D.ROOT-SERVERS.NET.
 D.ROOT-SERVERS.NET.      3600000      A     128.8.10.90
 ;
 ; formerly NS.NASA.GOV
 ;
 .                        3600000      NS    E.ROOT-SERVERS.NET.
 E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
 ;
 ; formerly NS.ISC.ORG
 ;
 .                        3600000      NS    F.ROOT-SERVERS.NET.
 F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
 F.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2f::f
 ;
 ; formerly NS.NIC.DDN.MIL
 ;
 .                        3600000      NS    G.ROOT-SERVERS.NET.
 G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
 ;
 ; formerly AOS.ARL.ARMY.MIL
 ;
 .                        3600000      NS    H.ROOT-SERVERS.NET.
 H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
 H.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:1::803f:235
 ;
 ; formerly NIC.NORDU.NET
 ;
 .                        3600000      NS    I.ROOT-SERVERS.NET.
 I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
 ;
 ; operated by VeriSign, Inc.
 ;
 .                        3600000      NS    J.ROOT-SERVERS.NET.
 J.ROOT-SERVERS.NET.      3600000      A     192.58.128.30
 J.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:C27::2:30
 ;
 ; operated by RIPE NCC
 ;
 .                        3600000      NS    K.ROOT-SERVERS.NET.
 K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129 
 K.ROOT-SERVERS.NET.      3600000      AAAA  2001:7fd::1
 ;
 ; operated by ICANN
 ;
 .                        3600000      NS    L.ROOT-SERVERS.NET.
 L.ROOT-SERVERS.NET.      3600000      A     199.7.83.42
 ;
 ; operated by WIDEaimer
 ;
 .                        3600000      NS    M.ROOT-SERVERS.NET.
 M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
 M.ROOT-SERVERS.NET.      3600000      AAAA  2001:dc3::35
 ; End of File

==== La zone &quot;localhost&quot; ====

 # cat db.local 
 ;
 ; BIND data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      2		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 @	IN	A	127.0.0.1
 @	IN	AAAA	::1

Peu utilisée en général, elle permet de résoudre localhost : 

La structure de ce dernier fichier est un peu déroutante au début, emplie de @ . A AAAA SOA et autres IN que nous détaillerons plus loin.
Nous remarquons que localhost possède deux IP : 127.0.0.1 (IPV4) et ::1 (IPV6) vous le saviez probablement déjà!

==== Les zones in-addr.arpa ====

Nous venons de voir les fichiers qui permettent de résoudre l'adresse d'une machine à partir de son nom. Or, il arrive que certains mécanismes réclament l'inverse, c'est à dire trouver le (les) noms associés à des IP.

Les zones in-addr.arpa servent à ça.

Voici la zone inverse pour localhost :

 # cat db.127 
 ;
 ; BIND reverse data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      1		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 1.0.0	IN	PTR	localhost.

La notation est ici inversée.
Si nous cherchons dans la zone 127 l'adresse 0.0.1 nous tomberons sur localhost =&gt; 1.0.0 IN PTR localhost.

Par exemple, Pour l'adresse 192.1.2.3, nous obtenons le nom de domaine 3.2.1.192.in-addr.arpa.

== Contenu d'une Zone ==

Une zone contient deux enregistrements obligatoires :

* SOA
* NS

=== SOA ===

SOA (Start Of Authority). Le champ SOA indique quel est le serveur « maitre ». Ce serveur peut-avoir plusieurs serveurs esclaves

 $ host -t soa google.fr
 google.fr has SOA record ns1.google.com. dns-admin.google.com. 1423257 21600 3600 1209600 300

Nous savons donc que le serveur ns1.google.com est le serveur maître du domaine google.com.
Et nous avons l'adresse email du responsable : dns-admin@google.com (l'arobase est remplacé par un point dans le fichier de zone)

L'enregistrement SOA contient un certain nombre d'enregistrements et de paramètres:

==== Le nom du primaire ====

 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici.

C'est le nom du serveur primaire pour la zone.
L'adresse de courrier électronique du responsable technique de la zone (zone-contact).
Il faut l'écrire en replaçant le @ par un point. On a alors par exemple: root@inria.fr qui devient root.inria.fr

==== A, AAAA, MX, CNAME, etc. ====

Les types d'enregistrements sont: A, AAAA, MX, CNAME, NS, SOA, PTR, TXT, HINFO, WKS, RP, MA, MB.

===== A (Address) =====

C'est l'enregistrement le plus courant. Le DNS a été créé en grande partie pour ça...
Le champ A (Address) fait correspondre un nom à une adresse IPv4.

nom     IN      A       193.10.20.30

Dans le cas d'une machine qui dispose de plus d'une adresse IP (un routeur ou une machine avec plusieurs cartes), il faut indiquer un enregistrement A par adresse, mais il faut alors que tous les enregistrements PTR pointent vers ce nom là.

===== AAAA (Address IPV6) =====

Idem au champ A, mais correspond à une adresse de type IPV6

===== NS (Name Server) =====

Le champ NS (Name Server) indique le nom d'un serveur de noms. Il peut y avoir plusieurs champs NS s'il y a plusieurs serveurs de noms...

===== CNAME (Common Name) =====

Le champ CNAME (Common Name) est utilisé pour créer des alias. Un &quot;vrai&quot; nom doit être préalablement déclaré avec la variable A, un alias peut ensuite être créé qui pointera vers celui-ci.

===== MX (Mail eXchanger) =====

Le champ MX (Mail eXchanger), est utile pour le protocole SMTP ou TXT.

Il indique pour un nom de domaine quelle est la machine à laquelle il faut envoyer le courrier pour ce domaine.

Si plusieurs enregistrements MX sont présents, il faut leur attribuer un poids... Le MTA (Mail transfert agent) tentera d'envoyer le courrier en premier à la machine ayant le poids associé le plus faible, puis ensuite dans l'ordre croissant des poids.

Si la machine qui relaie le courrier est dans la liste des MX pour le domaine, elle envoie le courrier aux machines de poids inférieur au sien.

nom     IN      MX      10      premier.relais.
        IN      MX      20      second.relais.

==== Le numéro de série de la zone ====

Il permet aux serveurs secondaires qui interrogent régulièrement le serveur primaire de chaque zone de déterminer quand la zone a été mise à jour.



==== L'intervalle entre les rafraichissements (refresh) ====

Temps, en seconde, au bout duquel les serveurs « esclaves » devront demander à rafraichir leur données pour cette zone. 3600 secondes dans l'exemple ci-dessous, soit une heure. 

 3600           ; Refresh

La valeur conseillée est 24 heures, soit 86400 secondes.

==== L'intervalle entre les rafraichissements (retry) ====

Durée, en secondes, à partir de laquelle un serveur esclave doit ré-essayer de se synchroniser en cas d'échec du rafraichissement. Ici toutes les 300 secondes, soit toutes les 5 minutes. 

 300            ; Retry

La valeur conseillée est 6 heures, soit 21600 secondes.

==== La durée d'expiration des enregistrements d'un secondaire ====

En cas d'échec des tentatives de synchronisation, indique le temps (en secondes) au bout duquel les serveurs secondaires devront considérer qu'ils ne savent plus répondre aux requêtes concernant cette zone.

 2419200          ; Expire

La valeur conseillée est de 41 jours, soit 3600000 secondes.

==== La durée de vie par défaut des enregistrements (default TTL) ====

Durée de vie de l'information fournie.
Les serveurs DNS récursifs conserveront en cache les informations récoltées pendant la durée indiquée dans ce paramètre. 0 indique que les valeurs ne doivent pas être conservées en cache.

 1600 )           ; Negative Cache TTL

La valeur conseillée est de 24 heures, soit 86400 secondes.

==== Le symbole « @ » ====

Dans un fichier de configuration de zone, ce symbole représente exactement le nom de domaine de la zone. Par exemple, lorsque nous allons créer notre zone maison.mrs, écrire : 

 maison.mrs.  IN SOA ...

Nous pourrons écrire : 

 @            IN SOA ...

=== NS (Name Server) ===

Cet enregistrement indique une délégation pour la gestion du nom donné. C'est à dire que le nom donné devient une zone, dont la gestion est déléguée au serveur indiqué en partie droite.

L'enregistrement donne le nom d'un des serveurs de noms autoritaire pour la zone, comme il y a toujours plus d'un serveur de noms pour une zone, on répète l'enregistrement NS autant de fois qu'il y a de serveurs pour la zone.

Quand pour un nom, on a des enregistrements NS, il est interdit de faire figurer dans la zone parente (celle là) d'autres enregistrements. S'il y a à faire figurer des enregistrements, il faut les mettre dans la zone fille.

zone    IN      NS      serveur.nom.de.domaine.

          IN      NS      autreServeur.nom.de.domaine.

          IN      NS      encoreUn.autreNom.de.domaine.

== Créons notre première zone ==

Maintenant que les explications indigestes sont faites... 
La meilleure façon de comprendre, est d'appliquer à son réseau local sa propre zone!

=== La zone chezmoi.ici ===

Pour cet exemple j'ai pris un nom de domaine bidon, c'est tout a fait possible, vous pouvez donner n'importe quel nom à votre Intranet!

Notre serveur s'appelle tebilepas il dispose de l'IP 192.168.1.254

Le domaine est chezmoi.ici

Nous disposons d'assez d'informations pour créer la zone chezmoi.ici

Créons d'abord dans /etc/bind/ un fichier nommé : db.chezmoi.ici qui contiendrai ceci :

 $TTL    1600
 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. (
                         2009012907       ; Serial
                         604800           ; Refresh
                         86400            ; Retry
                         2419200          ; Expire
                         1600 )           ; Negative Cache TTL
 
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.
 chezmoi.ici.    IN      A       192.168.1.254
 tebilepas  IN      A       192.168.1.254
 coucou     IN      A       192.168.1.1
 pourquoi   IN      CNAME   coucou
 tespascheztoi      IN      CNAME   forum.debian-fr.org.

Nous aurions pu écrire :
 @         IN    NS      tebilepas.chezmoi.ici.
à la place de (cela revient au même)
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.

Nous aurions aussi pu éviter les commentaires (par exemple : ;Serial) mais pour les explications ce sera plus facile.

Ce sera suffisant pour commencer!

Pour que cette zone soit prise en compte, nous devons maintenant l'inclure dans le fichier /etc/bind/named.conf.local

Ceci devrait permettre de répondre aux requêtes de type NS pour le domaine maison.mrs, de répondre aussi aux requêtes de type A pour debvirt.maison.mrs et pour test1.maison.mrs, constater aussi que les alias fonctionnent dans et hors du domaine. 

Il nous faut maintenant indiquer à bind que cette zone existe. Nous allons le faire dans le fichier /etc/bind/named.conf.local : 

 zone &quot;chezmoi.ici&quot; {
         type master;
         file &quot;/etc/bind/db.chezmoi.ici&quot;;
         };

Nous redémarrons notre serveur bind

 # service bind9 restart
 Stopping domain name service...: bind9 waiting for pid 1353 to die.
 Starting domain name service...: bind9.

== Tests ==

Maintenant que notre serveur de nom est configuré, il faut le tester...

=== Avec la commande host ===

 $ host -a chezmoi.ici localhost
 Trying &quot;chezmoi.ici&quot;
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 46986
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;chezmoi.ici.			IN	ANY
 
 ;; ANSWER SECTION:
 chezmoi.ici.		1600	IN	SOA	tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. 2009012907 604800 86400 2419200 1600
 chezmoi.ici.		1600	IN	NS	tebilepas.chezmoi.ici.
 chezmoi.ici.		1600	IN	A	192.168.1.254
 
 ;; ADDITIONAL SECTION:
 tebilepas.chezmoi.ici.	1600	IN	A	192.168.1.254
 
 Received 126 bytes from ::1#53 in 5 ms

 $ host coucou.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 coucou.chezmoi.ici has address 192.168.1.1

 $ host pourquoi.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 pourquoi.chezmoi.ici is an alias for coucou.chezmoi.ici.
 coucou.chezmoi.ici has address 192.168.1.1

 $ host ailleurs.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ailleurs.chezmoi.ici is an alias for forum.debian-fr.org.
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Comme vous avez pu le constater, votre DNS fonctionne parfaitement, il renseigne nos machines sur le réseau local, et il pourvoit à nos demandes d'IP Internet !

=== Avec la commande nslookup ===

&lt;big&gt;&lt;code text&gt;
$ nslookup
&gt; server
Default server: 192.168.0.254
Address: 192.168.0.254#53
Default server: xxx.xxx.xxx.xxx
Address: xxx.xxx.xxx.xxx#53
&gt; localhost
Server:		192.168.0.254
Address:	192.168.0.254#53

Name:	localhost
Address: 127.0.0.1
&gt; www.chezmoi.ici
Server:		192.168.0.254
Address:	192.168.0.254#53

www.chezmoi.ici	canonical name = chezmoi.ici.
Name:	chezmoi.ici
Address: 192.168.0.254
&gt; tebilepas
Server:		192.168.0.254
Address:	192.168.0.254#53

Name:	tebilepas.chezmoi.ici
Address: 192.168.0.254
&gt; www.google.com
Server:		192.168.0.254
Address:	192.168.0.254#53

Non-authoritative answer:
www.google.com	canonical name = www.l.google.com.
Name:	www.l.google.com
Address: 209.85.148.105
Name:	www.l.google.com
Address: 209.85.148.106
Name:	www.l.google.com
Address: 209.85.148.147
Name:	www.l.google.com
Address: 209.85.148.99
Name:	www.l.google.com
Address: 209.85.148.103
Name:	www.l.google.com
Address: 209.85.148.104
&gt; exit

$
&lt;/code&gt;&lt;/big&gt;

Explication. Lorsque nous tapons la commande nslookup, apparait l'invite suivante :

 $ nslookup
 &gt;

Il suffit de connaître très peu de commandes

server &gt; donne la liste des serveurs DNS qui seront interrogés, dans l'ordre;

Nom de machine ou de domaine &gt; donne la résolution du nom demandé;

exit &gt; sortir de nslookup.

== Le Round-robin ==

Le Round-robin est une répartition de charge (load balancing) équitable entre serveurs d'une ferme informatique (cluster). Chaque serveur doit traiter le même nombre de requêtes. Cela nécessite une ferme de serveurs homogènes en capacité de traitement. Cette répartition de charge peut être effectuée par le serveur DNS (Domain Name System) qui associe plusieurs adresses IP à un nom de domaine.

Exemple d'un round-robin fonctionnel :

 jeu. août 05 02:46:56 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99

 jeu. août 05 02:46:57 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147

 jeu. août 05 02:46:59 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104

 jeu. août 05 02:47:01 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

Le premier serveur de la liste n'est jamais le même, il y a une rotation...


ToDo : Conclusion

[[Category:Serveurs]]</text>
      <sha1>ep5el4hmvvpzq3t67zfotvw27ptvnic</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2499</id>
      <parentid>2498</parentid>
      <timestamp>2010-12-16T05:25:10Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Avec la commande nslookup */</comment>
      <text xml:space="preserve" bytes="26141">{{Modèle:Ébauche|DNS}}

'''Créer un serveur DNS pour votre réseau local'''

== Qu'est-ce que c'est ? ==

Un Domain Name System (ou DNS, système de noms de domaine) est un service permettant d'établir une correspondance entre une adresse IP et un nom de domaine et, plus généralement, de trouver une information à partir d'un nom de domaine.

Tous les ordinateurs pour communiquer entre eux doivent posséder une adresse IP. Ces adresses sont numériques, elles sont sous cette forme pour les adresses IPV4 : www.xxx.yyy.zzz; et de cette forme pour les adresses IPV6 : aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh.

Ces adresses sont associées à des noms, plus simples à retenir pour les humains, appelés noms de domaines. Résoudre un nom de domaine consiste à trouver l'adresse IP qui lui est associée.

Vous préférez taper google.com ou 72.14.204.103 dans votre navigateur ?

== Pourquoi faire ? ==

* Simple curiosité, pour comprendre son fonctionnement;
* Être autonome des DNS de son FAI (Fournisseur d'accès Internet) en cas d'arrêt de ceux-ci ou par souci de confidentialité;
* Résoudre les adresses de son réseau interne (Intranet) simplement, sans être obligé de remplir le fichier hosts de toutes vos machines;
* Résoudre les &quot;adresses inverses&quot;: obtenir un nom de domaine ou de machine avec une IP.

Cela fait suffisamment de raisons ? Alors continuons!

== Avertissement ==

Nous n'aborderons pas ici les problèmes de sécurité, qui peuvent être nombreux sur un serveur DNS. Le DNS que nous allons construire est destiné UNIQUEMENT à notre réseau local, il n'est pas accessible depuis Internet.

== Installation ==

 # apt-get install bind9 bind9-host bind9utils host
 
Pour information, trois bogues sur bind9... Vous pouvez tout de même installer sans soucis

 Récupération des rapports de bogue... Fait  
 Analyse des informations Trouvé/Corrigé... Fait  
 Bogues de gravité grave sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;done&gt;
  #516616 - bind9 locks up on start on mipsel and mips (Corrigé : bind9/1:9.7.0.dfsg.1-1)
    Réuni avec : 520688
 Bogues de gravité critical sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #575916 - bind9: assertion fails in name.c:1699 INSIST(offset &lt;= length)
 Bogues de gravité serious sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #584585 - file conflict with libisc50 (Corrigé : 1:9.7.0.dsfg~b3-1)
 Résumé :
  bind9 (3 bogues)

Vérifions que bind écoute bien sur toutes nos adresses :

 # netstat -ntulp | grep named
 tcp        0      0 192.168.0.1:53          0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      2832/named
 tcp6       0      0 :::53                   :::*                    LISTEN      2832/named
 tcp6       0      0 ::1:953                 :::*                    LISTEN      2832/named
 udp        0      0 192.168.0.1:53          0.0.0.0:*                           2832/named
 udp        0      0 127.0.0.1:53            0.0.0.0:*                           2832/named
 udp6       0      0 :::53                   :::*                                2832/named

== Premiers contact ==

Ça y est, notre DNS est déjà fonctionnel...
Il remplit son rôle de DNS récursif et répond à nos demandes de résolution!
Vous ne me croyez pas ?

 $ host forum.debian-fr.org 127.0.0.1
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Cette commande simple nous donne déjà des renseignements :
* forum.debian-fr.org est un alias pour www.zehome.com.
* Son IP (IPV4 est 88.165.116.107)

Plus d'information ? Passons la même commande avec l'option -v (verbose)

 $ host -v forum.debian-fr.org localhost
 Trying &quot;forum.debian-fr.org&quot;
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 11492
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;forum.debian-fr.org.		IN	A
 
 ;; ANSWER SECTION:
 forum.debian-fr.org.	37939	IN	CNAME	www.zehome.com.
 www.zehome.com.		37941	IN	A	88.165.116.107
 
 ;; AUTHORITY SECTION:
 zehome.com.		37941	IN	NS	ns.kimsufi.com.
 zehome.com.		37941	IN	NS	ns0.zehome.com.
 zehome.com.		37941	IN	NS	daboog.zehome.com.
 
 ;; ADDITIONAL SECTION:
 ns.kimsufi.com.		85955	IN	A	213.186.33.199
 
 Received 161 bytes from 127.0.0.1#53 in 1 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 62379
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	AAAA
 
 ;; AUTHORITY SECTION:
 zehome.com.		10355	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 7678
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	MX
 
 ;; AUTHORITY SECTION:
 zehome.com.		10377	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms

Avec l'option -v (verbose) c'est tout de suite plus compliqué...

Quelques remarques sur ce résultat :

* forum.debian-fr.org est un alias pour www.zehome.com;
* Son IP est 88.165.116.107;
* Ce domaine est géré par les serveurs DNS daboog.zehome.com, ns.kimsufi.com et ns0.zehome.com;
* Il ne dispose pas d'IPV6 (pas de réponse à la question IN AAAA);
* Le [[BIND#SOA|SOA]] pour ce domaine est ns0.zehome.com
* Le mail de l'administrateur est ed@zehome.com (ed.zehome.com - ici le point vaut un arobase)

La même chose, sur un domaine plus important

 $ host www.google.fr 127.0.0.1
 Using domain server:
 Name: 127.0.0.1
 Address: 127.0.0.1#53
 Aliases: 
 
 www.google.fr is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

* www.google.fr est un alias pour www.google.com
* www.google.com possède plusieurs adresses IP

Plusieurs IP pour un même domaine ? C'est possible, et cela s'appelle le [[BIND#Le_Round-robin|&quot;round-robin&quot;]]... Tourniquet en Français, cet algorithme d'ordonnancement permet d'attribuer des temps aux processus, ici, il s'agit de faire tourner les IP, afin que tous les serveurs reçoivent leur part de charge...

=== La Configuration ===

L'installation de Bind9 à générée les fichiers suivants :

 # cd /etc/bind
 lol:/etc/bind# vdir
 total 52
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.0
 -rw-r--r-- 1 root root  271 jun 10 22:58 db.127
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.255
 -rw-r--r-- 1 root root  353 jun 10 22:58 db.empty
 -rw-r--r-- 1 root root  270 jun 10 22:58 db.local
 -rw-r--r-- 1 root root 2994 aoû  3 21:30 db.root
 -rw-r--r-- 1 root bind 1125 jui 21 22:19 named.conf
 -rw-r--r-- 1 root bind  278 aoû  3 10:37 named.conf.local
 -rw-r--r-- 1 root bind  572 jun 10 22:58 named.conf.options
 -rw-r----- 1 bind bind   77 jui 20 17:25 rndc.key
 -rw-r--r-- 1 root root 1317 jun 10 22:58 zones.rfc1918

Le fichier principal (épuré des commentaires) :

 # cat /etc/bind/named.conf
 
 include &quot;/etc/bind/named.conf.options&quot;;
 
 zone &quot;.&quot; {
 	type hint;
 	file &quot;/etc/bind/db.root&quot;;
 };
 
 zone &quot;localhost&quot; {
 	type master;
 	file &quot;/etc/bind/db.local&quot;;
 };
 
 zone &quot;127.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.127&quot;;
 };
 
 zone &quot;0.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.0&quot;;
 };
 
 zone &quot;255.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.255&quot;;
 };
 
 include &quot;/etc/bind/named.conf.local&quot;;
 
 server xxx.xxx.xxx.xxx	{ };

Ce fichier renvoie vers deux fichiers de configurations : named.conf.options et named.conf.local

C'est dans ces deux fichiers qu'il faudra mettre vos configurations personnelles, le fichier named.conf ne devant en principe pas être modifié.

Le fichier named.conf déclare plusieurs zones, presque toutes destinées à la résolution inverse

A la fin du fichier, nous avons ajouté le NDS de notre FAI, au cas ou... Il est indispensable de pouvoir, quoi qu'il arrive, faire de la résolution de nom... Ce sera donc notre DNS de secours.

==== La zone &quot;.&quot; ====

La zone root est primordiale.
Ce fichier contient toutes les informations sur les root-servers sans lesquels notre DNS ne peut fonctionner.
Ce fichier évolue peu.

 lol:/etc/bind# cat db.root
 
 ;       This file holds the information on root name servers needed to
 ;       initialize cache of Internet domain name servers
 ;       (e.g. reference this file in the &quot;cache  .  &lt;file&gt;&quot;
 ;       configuration file of BIND domain name servers).
 ;
 ;       This file is made available by InterNIC 
 ;       under anonymous FTP as
 ;           file                /domain/named.root
 ;           on server           FTP.INTERNIC.NET
 ;       -OR-                    RS.INTERNIC.NET
 ;
 ;       last update:    Feb 04, 2008
 ;       related version of root zone:   2008020400
 ;
 ; formerly NS.INTERNIC.NET
 ;
 .                        3600000  IN  NS    A.ROOT-SERVERS.NET.
 A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
 A.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:BA3E::2:30
 ;
 ; formerly NS1.ISI.EDU
 ;
 .                        3600000      NS    B.ROOT-SERVERS.NET.
 B.ROOT-SERVERS.NET.      3600000      A     192.228.79.201
 ;
 ; formerly C.PSI.NET
 ;
 .                        3600000      NS    C.ROOT-SERVERS.NET.
 C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
 ;
 ; formerly TERP.UMD.EDU
 ;
 .                        3600000      NS    D.ROOT-SERVERS.NET.
 D.ROOT-SERVERS.NET.      3600000      A     128.8.10.90
 ;
 ; formerly NS.NASA.GOV
 ;
 .                        3600000      NS    E.ROOT-SERVERS.NET.
 E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
 ;
 ; formerly NS.ISC.ORG
 ;
 .                        3600000      NS    F.ROOT-SERVERS.NET.
 F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
 F.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2f::f
 ;
 ; formerly NS.NIC.DDN.MIL
 ;
 .                        3600000      NS    G.ROOT-SERVERS.NET.
 G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
 ;
 ; formerly AOS.ARL.ARMY.MIL
 ;
 .                        3600000      NS    H.ROOT-SERVERS.NET.
 H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
 H.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:1::803f:235
 ;
 ; formerly NIC.NORDU.NET
 ;
 .                        3600000      NS    I.ROOT-SERVERS.NET.
 I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
 ;
 ; operated by VeriSign, Inc.
 ;
 .                        3600000      NS    J.ROOT-SERVERS.NET.
 J.ROOT-SERVERS.NET.      3600000      A     192.58.128.30
 J.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:C27::2:30
 ;
 ; operated by RIPE NCC
 ;
 .                        3600000      NS    K.ROOT-SERVERS.NET.
 K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129 
 K.ROOT-SERVERS.NET.      3600000      AAAA  2001:7fd::1
 ;
 ; operated by ICANN
 ;
 .                        3600000      NS    L.ROOT-SERVERS.NET.
 L.ROOT-SERVERS.NET.      3600000      A     199.7.83.42
 ;
 ; operated by WIDEaimer
 ;
 .                        3600000      NS    M.ROOT-SERVERS.NET.
 M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
 M.ROOT-SERVERS.NET.      3600000      AAAA  2001:dc3::35
 ; End of File

==== La zone &quot;localhost&quot; ====

 # cat db.local 
 ;
 ; BIND data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      2		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 @	IN	A	127.0.0.1
 @	IN	AAAA	::1

Peu utilisée en général, elle permet de résoudre localhost : 

La structure de ce dernier fichier est un peu déroutante au début, emplie de @ . A AAAA SOA et autres IN que nous détaillerons plus loin.
Nous remarquons que localhost possède deux IP : 127.0.0.1 (IPV4) et ::1 (IPV6) vous le saviez probablement déjà!

==== Les zones in-addr.arpa ====

Nous venons de voir les fichiers qui permettent de résoudre l'adresse d'une machine à partir de son nom. Or, il arrive que certains mécanismes réclament l'inverse, c'est à dire trouver le (les) noms associés à des IP.

Les zones in-addr.arpa servent à ça.

Voici la zone inverse pour localhost :

 # cat db.127 
 ;
 ; BIND reverse data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      1		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 1.0.0	IN	PTR	localhost.

La notation est ici inversée.
Si nous cherchons dans la zone 127 l'adresse 0.0.1 nous tomberons sur localhost =&gt; 1.0.0 IN PTR localhost.

Par exemple, Pour l'adresse 192.1.2.3, nous obtenons le nom de domaine 3.2.1.192.in-addr.arpa.

== Contenu d'une Zone ==

Une zone contient deux enregistrements obligatoires :

* SOA
* NS

=== SOA ===

SOA (Start Of Authority). Le champ SOA indique quel est le serveur « maitre ». Ce serveur peut-avoir plusieurs serveurs esclaves

 $ host -t soa google.fr
 google.fr has SOA record ns1.google.com. dns-admin.google.com. 1423257 21600 3600 1209600 300

Nous savons donc que le serveur ns1.google.com est le serveur maître du domaine google.com.
Et nous avons l'adresse email du responsable : dns-admin@google.com (l'arobase est remplacé par un point dans le fichier de zone)

L'enregistrement SOA contient un certain nombre d'enregistrements et de paramètres:

==== Le nom du primaire ====

 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici.

C'est le nom du serveur primaire pour la zone.
L'adresse de courrier électronique du responsable technique de la zone (zone-contact).
Il faut l'écrire en replaçant le @ par un point. On a alors par exemple: root@inria.fr qui devient root.inria.fr

==== A, AAAA, MX, CNAME, etc. ====

Les types d'enregistrements sont: A, AAAA, MX, CNAME, NS, SOA, PTR, TXT, HINFO, WKS, RP, MA, MB.

===== A (Address) =====

C'est l'enregistrement le plus courant. Le DNS a été créé en grande partie pour ça...
Le champ A (Address) fait correspondre un nom à une adresse IPv4.

nom     IN      A       193.10.20.30

Dans le cas d'une machine qui dispose de plus d'une adresse IP (un routeur ou une machine avec plusieurs cartes), il faut indiquer un enregistrement A par adresse, mais il faut alors que tous les enregistrements PTR pointent vers ce nom là.

===== AAAA (Address IPV6) =====

Idem au champ A, mais correspond à une adresse de type IPV6

===== NS (Name Server) =====

Le champ NS (Name Server) indique le nom d'un serveur de noms. Il peut y avoir plusieurs champs NS s'il y a plusieurs serveurs de noms...

===== CNAME (Common Name) =====

Le champ CNAME (Common Name) est utilisé pour créer des alias. Un &quot;vrai&quot; nom doit être préalablement déclaré avec la variable A, un alias peut ensuite être créé qui pointera vers celui-ci.

===== MX (Mail eXchanger) =====

Le champ MX (Mail eXchanger), est utile pour le protocole SMTP ou TXT.

Il indique pour un nom de domaine quelle est la machine à laquelle il faut envoyer le courrier pour ce domaine.

Si plusieurs enregistrements MX sont présents, il faut leur attribuer un poids... Le MTA (Mail transfert agent) tentera d'envoyer le courrier en premier à la machine ayant le poids associé le plus faible, puis ensuite dans l'ordre croissant des poids.

Si la machine qui relaie le courrier est dans la liste des MX pour le domaine, elle envoie le courrier aux machines de poids inférieur au sien.

nom     IN      MX      10      premier.relais.
        IN      MX      20      second.relais.

==== Le numéro de série de la zone ====

Il permet aux serveurs secondaires qui interrogent régulièrement le serveur primaire de chaque zone de déterminer quand la zone a été mise à jour.



==== L'intervalle entre les rafraichissements (refresh) ====

Temps, en seconde, au bout duquel les serveurs « esclaves » devront demander à rafraichir leur données pour cette zone. 3600 secondes dans l'exemple ci-dessous, soit une heure. 

 3600           ; Refresh

La valeur conseillée est 24 heures, soit 86400 secondes.

==== L'intervalle entre les rafraichissements (retry) ====

Durée, en secondes, à partir de laquelle un serveur esclave doit ré-essayer de se synchroniser en cas d'échec du rafraichissement. Ici toutes les 300 secondes, soit toutes les 5 minutes. 

 300            ; Retry

La valeur conseillée est 6 heures, soit 21600 secondes.

==== La durée d'expiration des enregistrements d'un secondaire ====

En cas d'échec des tentatives de synchronisation, indique le temps (en secondes) au bout duquel les serveurs secondaires devront considérer qu'ils ne savent plus répondre aux requêtes concernant cette zone.

 2419200          ; Expire

La valeur conseillée est de 41 jours, soit 3600000 secondes.

==== La durée de vie par défaut des enregistrements (default TTL) ====

Durée de vie de l'information fournie.
Les serveurs DNS récursifs conserveront en cache les informations récoltées pendant la durée indiquée dans ce paramètre. 0 indique que les valeurs ne doivent pas être conservées en cache.

 1600 )           ; Negative Cache TTL

La valeur conseillée est de 24 heures, soit 86400 secondes.

==== Le symbole « @ » ====

Dans un fichier de configuration de zone, ce symbole représente exactement le nom de domaine de la zone. Par exemple, lorsque nous allons créer notre zone maison.mrs, écrire : 

 maison.mrs.  IN SOA ...

Nous pourrons écrire : 

 @            IN SOA ...

=== NS (Name Server) ===

Cet enregistrement indique une délégation pour la gestion du nom donné. C'est à dire que le nom donné devient une zone, dont la gestion est déléguée au serveur indiqué en partie droite.

L'enregistrement donne le nom d'un des serveurs de noms autoritaire pour la zone, comme il y a toujours plus d'un serveur de noms pour une zone, on répète l'enregistrement NS autant de fois qu'il y a de serveurs pour la zone.

Quand pour un nom, on a des enregistrements NS, il est interdit de faire figurer dans la zone parente (celle là) d'autres enregistrements. S'il y a à faire figurer des enregistrements, il faut les mettre dans la zone fille.

zone    IN      NS      serveur.nom.de.domaine.

          IN      NS      autreServeur.nom.de.domaine.

          IN      NS      encoreUn.autreNom.de.domaine.

== Créons notre première zone ==

Maintenant que les explications indigestes sont faites... 
La meilleure façon de comprendre, est d'appliquer à son réseau local sa propre zone!

=== La zone chezmoi.ici ===

Pour cet exemple j'ai pris un nom de domaine bidon, c'est tout a fait possible, vous pouvez donner n'importe quel nom à votre Intranet!

Notre serveur s'appelle tebilepas il dispose de l'IP 192.168.1.254

Le domaine est chezmoi.ici

Nous disposons d'assez d'informations pour créer la zone chezmoi.ici

Créons d'abord dans /etc/bind/ un fichier nommé : db.chezmoi.ici qui contiendrai ceci :

 $TTL    1600
 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. (
                         2009012907       ; Serial
                         604800           ; Refresh
                         86400            ; Retry
                         2419200          ; Expire
                         1600 )           ; Negative Cache TTL
 
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.
 chezmoi.ici.    IN      A       192.168.1.254
 tebilepas  IN      A       192.168.1.254
 coucou     IN      A       192.168.1.1
 pourquoi   IN      CNAME   coucou
 tespascheztoi      IN      CNAME   forum.debian-fr.org.

Nous aurions pu écrire :
 @         IN    NS      tebilepas.chezmoi.ici.
à la place de (cela revient au même)
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.

Nous aurions aussi pu éviter les commentaires (par exemple : ;Serial) mais pour les explications ce sera plus facile.

Ce sera suffisant pour commencer!

Pour que cette zone soit prise en compte, nous devons maintenant l'inclure dans le fichier /etc/bind/named.conf.local

Ceci devrait permettre de répondre aux requêtes de type NS pour le domaine maison.mrs, de répondre aussi aux requêtes de type A pour debvirt.maison.mrs et pour test1.maison.mrs, constater aussi que les alias fonctionnent dans et hors du domaine. 

Il nous faut maintenant indiquer à bind que cette zone existe. Nous allons le faire dans le fichier /etc/bind/named.conf.local : 

 zone &quot;chezmoi.ici&quot; {
         type master;
         file &quot;/etc/bind/db.chezmoi.ici&quot;;
         };

Nous redémarrons notre serveur bind

 # service bind9 restart
 Stopping domain name service...: bind9 waiting for pid 1353 to die.
 Starting domain name service...: bind9.

== Tests ==

Maintenant que notre serveur de nom est configuré, il faut le tester...

=== Avec la commande host ===

 $ host -a chezmoi.ici localhost
 Trying &quot;chezmoi.ici&quot;
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 46986
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;chezmoi.ici.			IN	ANY
 
 ;; ANSWER SECTION:
 chezmoi.ici.		1600	IN	SOA	tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. 2009012907 604800 86400 2419200 1600
 chezmoi.ici.		1600	IN	NS	tebilepas.chezmoi.ici.
 chezmoi.ici.		1600	IN	A	192.168.1.254
 
 ;; ADDITIONAL SECTION:
 tebilepas.chezmoi.ici.	1600	IN	A	192.168.1.254
 
 Received 126 bytes from ::1#53 in 5 ms

 $ host coucou.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 coucou.chezmoi.ici has address 192.168.1.1

 $ host pourquoi.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 pourquoi.chezmoi.ici is an alias for coucou.chezmoi.ici.
 coucou.chezmoi.ici has address 192.168.1.1

 $ host ailleurs.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ailleurs.chezmoi.ici is an alias for forum.debian-fr.org.
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Comme vous avez pu le constater, votre DNS fonctionne parfaitement, il renseigne nos machines sur le réseau local, et il pourvoit à nos demandes d'IP Internet !

=== Avec la commande nslookup ===

&lt;big&gt;&lt;code text&gt;
$ nslookup
&gt; server
Default server: 192.168.0.254
Address: 192.168.0.254#53
Default server: xxx.xxx.xxx.xxx
Address: xxx.xxx.xxx.xxx#53
&gt; localhost
Server:		192.168.0.254
Address:	192.168.0.254#53

Name:	localhost
Address: 127.0.0.1
&gt; www.chezmoi.ici
Server:		192.168.0.254
Address:	192.168.0.254#53

www.chezmoi.ici	canonical name = chezmoi.ici.
Name:	chezmoi.ici
Address: 192.168.0.254
&gt; tebilepas
Server:		192.168.0.254
Address:	192.168.0.254#53

Name:	tebilepas.chezmoi.ici
Address: 192.168.0.254
&gt; www.google.com
Server:		192.168.0.254
Address:	192.168.0.254#53

Non-authoritative answer:
www.google.com	canonical name = www.l.google.com.
Name:	www.l.google.com
Address: 209.85.148.105
Name:	www.l.google.com
Address: 209.85.148.106
Name:	www.l.google.com
Address: 209.85.148.147
Name:	www.l.google.com
Address: 209.85.148.99
Name:	www.l.google.com
Address: 209.85.148.103
Name:	www.l.google.com
Address: 209.85.148.104
&gt; exit

$
&lt;/code&gt;&lt;/big&gt;

Explication. Lorsque nous tapons la commande nslookup, apparait l'invite suivante :

 $ nslookup
 &gt;

Il suffit de connaître très peu de commandes

server &gt; donne la liste des serveurs DNS qui seront interrogés, dans l'ordre;

nslookup précise à chaque demande quel serveur à répondu :
 Server:		192.168.0.254
 Address:	192.168.0.254#53

192.168.0.254, c'est nous! :)

Nom de machine ou de domaine &gt; donne la résolution du nom demandé;

exit &gt; sortir de nslookup.

== Le Round-robin ==

Le Round-robin est une répartition de charge (load balancing) équitable entre serveurs d'une ferme informatique (cluster). Chaque serveur doit traiter le même nombre de requêtes. Cela nécessite une ferme de serveurs homogènes en capacité de traitement. Cette répartition de charge peut être effectuée par le serveur DNS (Domain Name System) qui associe plusieurs adresses IP à un nom de domaine.

Exemple d'un round-robin fonctionnel :

 jeu. août 05 02:46:56 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99

 jeu. août 05 02:46:57 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147

 jeu. août 05 02:46:59 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104

 jeu. août 05 02:47:01 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

Le premier serveur de la liste n'est jamais le même, il y a une rotation...


ToDo : Conclusion

[[Category:Serveurs]]</text>
      <sha1>qab9h6wq0b88fy1664h6mf0en6q6psk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2500</id>
      <parentid>2499</parentid>
      <timestamp>2010-12-16T05:29:03Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Avertissement */</comment>
      <text xml:space="preserve" bytes="26302">{{Modèle:Ébauche|DNS}}

'''Créer un serveur DNS pour votre réseau local'''

== Qu'est-ce que c'est ? ==

Un Domain Name System (ou DNS, système de noms de domaine) est un service permettant d'établir une correspondance entre une adresse IP et un nom de domaine et, plus généralement, de trouver une information à partir d'un nom de domaine.

Tous les ordinateurs pour communiquer entre eux doivent posséder une adresse IP. Ces adresses sont numériques, elles sont sous cette forme pour les adresses IPV4 : www.xxx.yyy.zzz; et de cette forme pour les adresses IPV6 : aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh.

Ces adresses sont associées à des noms, plus simples à retenir pour les humains, appelés noms de domaines. Résoudre un nom de domaine consiste à trouver l'adresse IP qui lui est associée.

Vous préférez taper google.com ou 72.14.204.103 dans votre navigateur ?

== Pourquoi faire ? ==

* Simple curiosité, pour comprendre son fonctionnement;
* Être autonome des DNS de son FAI (Fournisseur d'accès Internet) en cas d'arrêt de ceux-ci ou par souci de confidentialité;
* Résoudre les adresses de son réseau interne (Intranet) simplement, sans être obligé de remplir le fichier hosts de toutes vos machines;
* Résoudre les &quot;adresses inverses&quot;: obtenir un nom de domaine ou de machine avec une IP.

Cela fait suffisamment de raisons ? Alors continuons!

== Avertissement ==

Nous n'aborderons pas ici les problèmes de sécurité, qui peuvent être nombreux sur un serveur DNS. Le DNS que nous allons construire est destiné UNIQUEMENT à notre réseau local, il n'est pas accessible depuis Internet.

Mais ça ne l'empêchera pas d'être pleinement opérationnel et de faire la résolution de nom dont vous avez besoin, y compris pour les domaines extérieurs.

== Installation ==

 # apt-get install bind9 bind9-host bind9utils host
 
Pour information, trois bogues sur bind9... Vous pouvez tout de même installer sans soucis

 Récupération des rapports de bogue... Fait  
 Analyse des informations Trouvé/Corrigé... Fait  
 Bogues de gravité grave sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;done&gt;
  #516616 - bind9 locks up on start on mipsel and mips (Corrigé : bind9/1:9.7.0.dfsg.1-1)
    Réuni avec : 520688
 Bogues de gravité critical sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #575916 - bind9: assertion fails in name.c:1699 INSIST(offset &lt;= length)
 Bogues de gravité serious sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #584585 - file conflict with libisc50 (Corrigé : 1:9.7.0.dsfg~b3-1)
 Résumé :
  bind9 (3 bogues)

Vérifions que bind écoute bien sur toutes nos adresses :

 # netstat -ntulp | grep named
 tcp        0      0 192.168.0.1:53          0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      2832/named
 tcp6       0      0 :::53                   :::*                    LISTEN      2832/named
 tcp6       0      0 ::1:953                 :::*                    LISTEN      2832/named
 udp        0      0 192.168.0.1:53          0.0.0.0:*                           2832/named
 udp        0      0 127.0.0.1:53            0.0.0.0:*                           2832/named
 udp6       0      0 :::53                   :::*                                2832/named

== Premiers contact ==

Ça y est, notre DNS est déjà fonctionnel...
Il remplit son rôle de DNS récursif et répond à nos demandes de résolution!
Vous ne me croyez pas ?

 $ host forum.debian-fr.org 127.0.0.1
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Cette commande simple nous donne déjà des renseignements :
* forum.debian-fr.org est un alias pour www.zehome.com.
* Son IP (IPV4 est 88.165.116.107)

Plus d'information ? Passons la même commande avec l'option -v (verbose)

 $ host -v forum.debian-fr.org localhost
 Trying &quot;forum.debian-fr.org&quot;
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 11492
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;forum.debian-fr.org.		IN	A
 
 ;; ANSWER SECTION:
 forum.debian-fr.org.	37939	IN	CNAME	www.zehome.com.
 www.zehome.com.		37941	IN	A	88.165.116.107
 
 ;; AUTHORITY SECTION:
 zehome.com.		37941	IN	NS	ns.kimsufi.com.
 zehome.com.		37941	IN	NS	ns0.zehome.com.
 zehome.com.		37941	IN	NS	daboog.zehome.com.
 
 ;; ADDITIONAL SECTION:
 ns.kimsufi.com.		85955	IN	A	213.186.33.199
 
 Received 161 bytes from 127.0.0.1#53 in 1 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 62379
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	AAAA
 
 ;; AUTHORITY SECTION:
 zehome.com.		10355	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 7678
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	MX
 
 ;; AUTHORITY SECTION:
 zehome.com.		10377	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms

Avec l'option -v (verbose) c'est tout de suite plus compliqué...

Quelques remarques sur ce résultat :

* forum.debian-fr.org est un alias pour www.zehome.com;
* Son IP est 88.165.116.107;
* Ce domaine est géré par les serveurs DNS daboog.zehome.com, ns.kimsufi.com et ns0.zehome.com;
* Il ne dispose pas d'IPV6 (pas de réponse à la question IN AAAA);
* Le [[BIND#SOA|SOA]] pour ce domaine est ns0.zehome.com
* Le mail de l'administrateur est ed@zehome.com (ed.zehome.com - ici le point vaut un arobase)

La même chose, sur un domaine plus important

 $ host www.google.fr 127.0.0.1
 Using domain server:
 Name: 127.0.0.1
 Address: 127.0.0.1#53
 Aliases: 
 
 www.google.fr is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

* www.google.fr est un alias pour www.google.com
* www.google.com possède plusieurs adresses IP

Plusieurs IP pour un même domaine ? C'est possible, et cela s'appelle le [[BIND#Le_Round-robin|&quot;round-robin&quot;]]... Tourniquet en Français, cet algorithme d'ordonnancement permet d'attribuer des temps aux processus, ici, il s'agit de faire tourner les IP, afin que tous les serveurs reçoivent leur part de charge...

=== La Configuration ===

L'installation de Bind9 à générée les fichiers suivants :

 # cd /etc/bind
 lol:/etc/bind# vdir
 total 52
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.0
 -rw-r--r-- 1 root root  271 jun 10 22:58 db.127
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.255
 -rw-r--r-- 1 root root  353 jun 10 22:58 db.empty
 -rw-r--r-- 1 root root  270 jun 10 22:58 db.local
 -rw-r--r-- 1 root root 2994 aoû  3 21:30 db.root
 -rw-r--r-- 1 root bind 1125 jui 21 22:19 named.conf
 -rw-r--r-- 1 root bind  278 aoû  3 10:37 named.conf.local
 -rw-r--r-- 1 root bind  572 jun 10 22:58 named.conf.options
 -rw-r----- 1 bind bind   77 jui 20 17:25 rndc.key
 -rw-r--r-- 1 root root 1317 jun 10 22:58 zones.rfc1918

Le fichier principal (épuré des commentaires) :

 # cat /etc/bind/named.conf
 
 include &quot;/etc/bind/named.conf.options&quot;;
 
 zone &quot;.&quot; {
 	type hint;
 	file &quot;/etc/bind/db.root&quot;;
 };
 
 zone &quot;localhost&quot; {
 	type master;
 	file &quot;/etc/bind/db.local&quot;;
 };
 
 zone &quot;127.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.127&quot;;
 };
 
 zone &quot;0.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.0&quot;;
 };
 
 zone &quot;255.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.255&quot;;
 };
 
 include &quot;/etc/bind/named.conf.local&quot;;
 
 server xxx.xxx.xxx.xxx	{ };

Ce fichier renvoie vers deux fichiers de configurations : named.conf.options et named.conf.local

C'est dans ces deux fichiers qu'il faudra mettre vos configurations personnelles, le fichier named.conf ne devant en principe pas être modifié.

Le fichier named.conf déclare plusieurs zones, presque toutes destinées à la résolution inverse

A la fin du fichier, nous avons ajouté le NDS de notre FAI, au cas ou... Il est indispensable de pouvoir, quoi qu'il arrive, faire de la résolution de nom... Ce sera donc notre DNS de secours.

==== La zone &quot;.&quot; ====

La zone root est primordiale.
Ce fichier contient toutes les informations sur les root-servers sans lesquels notre DNS ne peut fonctionner.
Ce fichier évolue peu.

 lol:/etc/bind# cat db.root
 
 ;       This file holds the information on root name servers needed to
 ;       initialize cache of Internet domain name servers
 ;       (e.g. reference this file in the &quot;cache  .  &lt;file&gt;&quot;
 ;       configuration file of BIND domain name servers).
 ;
 ;       This file is made available by InterNIC 
 ;       under anonymous FTP as
 ;           file                /domain/named.root
 ;           on server           FTP.INTERNIC.NET
 ;       -OR-                    RS.INTERNIC.NET
 ;
 ;       last update:    Feb 04, 2008
 ;       related version of root zone:   2008020400
 ;
 ; formerly NS.INTERNIC.NET
 ;
 .                        3600000  IN  NS    A.ROOT-SERVERS.NET.
 A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
 A.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:BA3E::2:30
 ;
 ; formerly NS1.ISI.EDU
 ;
 .                        3600000      NS    B.ROOT-SERVERS.NET.
 B.ROOT-SERVERS.NET.      3600000      A     192.228.79.201
 ;
 ; formerly C.PSI.NET
 ;
 .                        3600000      NS    C.ROOT-SERVERS.NET.
 C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
 ;
 ; formerly TERP.UMD.EDU
 ;
 .                        3600000      NS    D.ROOT-SERVERS.NET.
 D.ROOT-SERVERS.NET.      3600000      A     128.8.10.90
 ;
 ; formerly NS.NASA.GOV
 ;
 .                        3600000      NS    E.ROOT-SERVERS.NET.
 E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
 ;
 ; formerly NS.ISC.ORG
 ;
 .                        3600000      NS    F.ROOT-SERVERS.NET.
 F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
 F.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2f::f
 ;
 ; formerly NS.NIC.DDN.MIL
 ;
 .                        3600000      NS    G.ROOT-SERVERS.NET.
 G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
 ;
 ; formerly AOS.ARL.ARMY.MIL
 ;
 .                        3600000      NS    H.ROOT-SERVERS.NET.
 H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
 H.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:1::803f:235
 ;
 ; formerly NIC.NORDU.NET
 ;
 .                        3600000      NS    I.ROOT-SERVERS.NET.
 I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
 ;
 ; operated by VeriSign, Inc.
 ;
 .                        3600000      NS    J.ROOT-SERVERS.NET.
 J.ROOT-SERVERS.NET.      3600000      A     192.58.128.30
 J.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:C27::2:30
 ;
 ; operated by RIPE NCC
 ;
 .                        3600000      NS    K.ROOT-SERVERS.NET.
 K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129 
 K.ROOT-SERVERS.NET.      3600000      AAAA  2001:7fd::1
 ;
 ; operated by ICANN
 ;
 .                        3600000      NS    L.ROOT-SERVERS.NET.
 L.ROOT-SERVERS.NET.      3600000      A     199.7.83.42
 ;
 ; operated by WIDEaimer
 ;
 .                        3600000      NS    M.ROOT-SERVERS.NET.
 M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
 M.ROOT-SERVERS.NET.      3600000      AAAA  2001:dc3::35
 ; End of File

==== La zone &quot;localhost&quot; ====

 # cat db.local 
 ;
 ; BIND data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      2		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 @	IN	A	127.0.0.1
 @	IN	AAAA	::1

Peu utilisée en général, elle permet de résoudre localhost : 

La structure de ce dernier fichier est un peu déroutante au début, emplie de @ . A AAAA SOA et autres IN que nous détaillerons plus loin.
Nous remarquons que localhost possède deux IP : 127.0.0.1 (IPV4) et ::1 (IPV6) vous le saviez probablement déjà!

==== Les zones in-addr.arpa ====

Nous venons de voir les fichiers qui permettent de résoudre l'adresse d'une machine à partir de son nom. Or, il arrive que certains mécanismes réclament l'inverse, c'est à dire trouver le (les) noms associés à des IP.

Les zones in-addr.arpa servent à ça.

Voici la zone inverse pour localhost :

 # cat db.127 
 ;
 ; BIND reverse data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      1		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 1.0.0	IN	PTR	localhost.

La notation est ici inversée.
Si nous cherchons dans la zone 127 l'adresse 0.0.1 nous tomberons sur localhost =&gt; 1.0.0 IN PTR localhost.

Par exemple, Pour l'adresse 192.1.2.3, nous obtenons le nom de domaine 3.2.1.192.in-addr.arpa.

== Contenu d'une Zone ==

Une zone contient deux enregistrements obligatoires :

* SOA
* NS

=== SOA ===

SOA (Start Of Authority). Le champ SOA indique quel est le serveur « maitre ». Ce serveur peut-avoir plusieurs serveurs esclaves

 $ host -t soa google.fr
 google.fr has SOA record ns1.google.com. dns-admin.google.com. 1423257 21600 3600 1209600 300

Nous savons donc que le serveur ns1.google.com est le serveur maître du domaine google.com.
Et nous avons l'adresse email du responsable : dns-admin@google.com (l'arobase est remplacé par un point dans le fichier de zone)

L'enregistrement SOA contient un certain nombre d'enregistrements et de paramètres:

==== Le nom du primaire ====

 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici.

C'est le nom du serveur primaire pour la zone.
L'adresse de courrier électronique du responsable technique de la zone (zone-contact).
Il faut l'écrire en replaçant le @ par un point. On a alors par exemple: root@inria.fr qui devient root.inria.fr

==== A, AAAA, MX, CNAME, etc. ====

Les types d'enregistrements sont: A, AAAA, MX, CNAME, NS, SOA, PTR, TXT, HINFO, WKS, RP, MA, MB.

===== A (Address) =====

C'est l'enregistrement le plus courant. Le DNS a été créé en grande partie pour ça...
Le champ A (Address) fait correspondre un nom à une adresse IPv4.

nom     IN      A       193.10.20.30

Dans le cas d'une machine qui dispose de plus d'une adresse IP (un routeur ou une machine avec plusieurs cartes), il faut indiquer un enregistrement A par adresse, mais il faut alors que tous les enregistrements PTR pointent vers ce nom là.

===== AAAA (Address IPV6) =====

Idem au champ A, mais correspond à une adresse de type IPV6

===== NS (Name Server) =====

Le champ NS (Name Server) indique le nom d'un serveur de noms. Il peut y avoir plusieurs champs NS s'il y a plusieurs serveurs de noms...

===== CNAME (Common Name) =====

Le champ CNAME (Common Name) est utilisé pour créer des alias. Un &quot;vrai&quot; nom doit être préalablement déclaré avec la variable A, un alias peut ensuite être créé qui pointera vers celui-ci.

===== MX (Mail eXchanger) =====

Le champ MX (Mail eXchanger), est utile pour le protocole SMTP ou TXT.

Il indique pour un nom de domaine quelle est la machine à laquelle il faut envoyer le courrier pour ce domaine.

Si plusieurs enregistrements MX sont présents, il faut leur attribuer un poids... Le MTA (Mail transfert agent) tentera d'envoyer le courrier en premier à la machine ayant le poids associé le plus faible, puis ensuite dans l'ordre croissant des poids.

Si la machine qui relaie le courrier est dans la liste des MX pour le domaine, elle envoie le courrier aux machines de poids inférieur au sien.

nom     IN      MX      10      premier.relais.
        IN      MX      20      second.relais.

==== Le numéro de série de la zone ====

Il permet aux serveurs secondaires qui interrogent régulièrement le serveur primaire de chaque zone de déterminer quand la zone a été mise à jour.



==== L'intervalle entre les rafraichissements (refresh) ====

Temps, en seconde, au bout duquel les serveurs « esclaves » devront demander à rafraichir leur données pour cette zone. 3600 secondes dans l'exemple ci-dessous, soit une heure. 

 3600           ; Refresh

La valeur conseillée est 24 heures, soit 86400 secondes.

==== L'intervalle entre les rafraichissements (retry) ====

Durée, en secondes, à partir de laquelle un serveur esclave doit ré-essayer de se synchroniser en cas d'échec du rafraichissement. Ici toutes les 300 secondes, soit toutes les 5 minutes. 

 300            ; Retry

La valeur conseillée est 6 heures, soit 21600 secondes.

==== La durée d'expiration des enregistrements d'un secondaire ====

En cas d'échec des tentatives de synchronisation, indique le temps (en secondes) au bout duquel les serveurs secondaires devront considérer qu'ils ne savent plus répondre aux requêtes concernant cette zone.

 2419200          ; Expire

La valeur conseillée est de 41 jours, soit 3600000 secondes.

==== La durée de vie par défaut des enregistrements (default TTL) ====

Durée de vie de l'information fournie.
Les serveurs DNS récursifs conserveront en cache les informations récoltées pendant la durée indiquée dans ce paramètre. 0 indique que les valeurs ne doivent pas être conservées en cache.

 1600 )           ; Negative Cache TTL

La valeur conseillée est de 24 heures, soit 86400 secondes.

==== Le symbole « @ » ====

Dans un fichier de configuration de zone, ce symbole représente exactement le nom de domaine de la zone. Par exemple, lorsque nous allons créer notre zone maison.mrs, écrire : 

 maison.mrs.  IN SOA ...

Nous pourrons écrire : 

 @            IN SOA ...

=== NS (Name Server) ===

Cet enregistrement indique une délégation pour la gestion du nom donné. C'est à dire que le nom donné devient une zone, dont la gestion est déléguée au serveur indiqué en partie droite.

L'enregistrement donne le nom d'un des serveurs de noms autoritaire pour la zone, comme il y a toujours plus d'un serveur de noms pour une zone, on répète l'enregistrement NS autant de fois qu'il y a de serveurs pour la zone.

Quand pour un nom, on a des enregistrements NS, il est interdit de faire figurer dans la zone parente (celle là) d'autres enregistrements. S'il y a à faire figurer des enregistrements, il faut les mettre dans la zone fille.

zone    IN      NS      serveur.nom.de.domaine.

          IN      NS      autreServeur.nom.de.domaine.

          IN      NS      encoreUn.autreNom.de.domaine.

== Créons notre première zone ==

Maintenant que les explications indigestes sont faites... 
La meilleure façon de comprendre, est d'appliquer à son réseau local sa propre zone!

=== La zone chezmoi.ici ===

Pour cet exemple j'ai pris un nom de domaine bidon, c'est tout a fait possible, vous pouvez donner n'importe quel nom à votre Intranet!

Notre serveur s'appelle tebilepas il dispose de l'IP 192.168.1.254

Le domaine est chezmoi.ici

Nous disposons d'assez d'informations pour créer la zone chezmoi.ici

Créons d'abord dans /etc/bind/ un fichier nommé : db.chezmoi.ici qui contiendrai ceci :

 $TTL    1600
 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. (
                         2009012907       ; Serial
                         604800           ; Refresh
                         86400            ; Retry
                         2419200          ; Expire
                         1600 )           ; Negative Cache TTL
 
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.
 chezmoi.ici.    IN      A       192.168.1.254
 tebilepas  IN      A       192.168.1.254
 coucou     IN      A       192.168.1.1
 pourquoi   IN      CNAME   coucou
 tespascheztoi      IN      CNAME   forum.debian-fr.org.

Nous aurions pu écrire :
 @         IN    NS      tebilepas.chezmoi.ici.
à la place de (cela revient au même)
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.

Nous aurions aussi pu éviter les commentaires (par exemple : ;Serial) mais pour les explications ce sera plus facile.

Ce sera suffisant pour commencer!

Pour que cette zone soit prise en compte, nous devons maintenant l'inclure dans le fichier /etc/bind/named.conf.local

Ceci devrait permettre de répondre aux requêtes de type NS pour le domaine maison.mrs, de répondre aussi aux requêtes de type A pour debvirt.maison.mrs et pour test1.maison.mrs, constater aussi que les alias fonctionnent dans et hors du domaine. 

Il nous faut maintenant indiquer à bind que cette zone existe. Nous allons le faire dans le fichier /etc/bind/named.conf.local : 

 zone &quot;chezmoi.ici&quot; {
         type master;
         file &quot;/etc/bind/db.chezmoi.ici&quot;;
         };

Nous redémarrons notre serveur bind

 # service bind9 restart
 Stopping domain name service...: bind9 waiting for pid 1353 to die.
 Starting domain name service...: bind9.

== Tests ==

Maintenant que notre serveur de nom est configuré, il faut le tester...

=== Avec la commande host ===

 $ host -a chezmoi.ici localhost
 Trying &quot;chezmoi.ici&quot;
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 46986
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;chezmoi.ici.			IN	ANY
 
 ;; ANSWER SECTION:
 chezmoi.ici.		1600	IN	SOA	tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. 2009012907 604800 86400 2419200 1600
 chezmoi.ici.		1600	IN	NS	tebilepas.chezmoi.ici.
 chezmoi.ici.		1600	IN	A	192.168.1.254
 
 ;; ADDITIONAL SECTION:
 tebilepas.chezmoi.ici.	1600	IN	A	192.168.1.254
 
 Received 126 bytes from ::1#53 in 5 ms

 $ host coucou.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 coucou.chezmoi.ici has address 192.168.1.1

 $ host pourquoi.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 pourquoi.chezmoi.ici is an alias for coucou.chezmoi.ici.
 coucou.chezmoi.ici has address 192.168.1.1

 $ host ailleurs.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ailleurs.chezmoi.ici is an alias for forum.debian-fr.org.
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Comme vous avez pu le constater, votre DNS fonctionne parfaitement, il renseigne nos machines sur le réseau local, et il pourvoit à nos demandes d'IP Internet !

=== Avec la commande nslookup ===

&lt;big&gt;&lt;code text&gt;
$ nslookup
&gt; server
Default server: 192.168.0.254
Address: 192.168.0.254#53
Default server: xxx.xxx.xxx.xxx
Address: xxx.xxx.xxx.xxx#53
&gt; localhost
Server:		192.168.0.254
Address:	192.168.0.254#53

Name:	localhost
Address: 127.0.0.1
&gt; www.chezmoi.ici
Server:		192.168.0.254
Address:	192.168.0.254#53

www.chezmoi.ici	canonical name = chezmoi.ici.
Name:	chezmoi.ici
Address: 192.168.0.254
&gt; tebilepas
Server:		192.168.0.254
Address:	192.168.0.254#53

Name:	tebilepas.chezmoi.ici
Address: 192.168.0.254
&gt; www.google.com
Server:		192.168.0.254
Address:	192.168.0.254#53

Non-authoritative answer:
www.google.com	canonical name = www.l.google.com.
Name:	www.l.google.com
Address: 209.85.148.105
Name:	www.l.google.com
Address: 209.85.148.106
Name:	www.l.google.com
Address: 209.85.148.147
Name:	www.l.google.com
Address: 209.85.148.99
Name:	www.l.google.com
Address: 209.85.148.103
Name:	www.l.google.com
Address: 209.85.148.104
&gt; exit

$
&lt;/code&gt;&lt;/big&gt;

Explication. Lorsque nous tapons la commande nslookup, apparait l'invite suivante :

 $ nslookup
 &gt;

Il suffit de connaître très peu de commandes

server &gt; donne la liste des serveurs DNS qui seront interrogés, dans l'ordre;

nslookup précise à chaque demande quel serveur à répondu :
 Server:		192.168.0.254
 Address:	192.168.0.254#53

192.168.0.254, c'est nous! :)

Nom de machine ou de domaine &gt; donne la résolution du nom demandé;

exit &gt; sortir de nslookup.

== Le Round-robin ==

Le Round-robin est une répartition de charge (load balancing) équitable entre serveurs d'une ferme informatique (cluster). Chaque serveur doit traiter le même nombre de requêtes. Cela nécessite une ferme de serveurs homogènes en capacité de traitement. Cette répartition de charge peut être effectuée par le serveur DNS (Domain Name System) qui associe plusieurs adresses IP à un nom de domaine.

Exemple d'un round-robin fonctionnel :

 jeu. août 05 02:46:56 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99

 jeu. août 05 02:46:57 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147

 jeu. août 05 02:46:59 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104

 jeu. août 05 02:47:01 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

Le premier serveur de la liste n'est jamais le même, il y a une rotation...


ToDo : Conclusion

[[Category:Serveurs]]</text>
      <sha1>p2i63u4y8dhm5icia7j0a7ksqa3vrun</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2501</id>
      <parentid>2500</parentid>
      <timestamp>2010-12-16T05:34:51Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Tests */</comment>
      <text xml:space="preserve" bytes="27180">{{Modèle:Ébauche|DNS}}

'''Créer un serveur DNS pour votre réseau local'''

== Qu'est-ce que c'est ? ==

Un Domain Name System (ou DNS, système de noms de domaine) est un service permettant d'établir une correspondance entre une adresse IP et un nom de domaine et, plus généralement, de trouver une information à partir d'un nom de domaine.

Tous les ordinateurs pour communiquer entre eux doivent posséder une adresse IP. Ces adresses sont numériques, elles sont sous cette forme pour les adresses IPV4 : www.xxx.yyy.zzz; et de cette forme pour les adresses IPV6 : aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh.

Ces adresses sont associées à des noms, plus simples à retenir pour les humains, appelés noms de domaines. Résoudre un nom de domaine consiste à trouver l'adresse IP qui lui est associée.

Vous préférez taper google.com ou 72.14.204.103 dans votre navigateur ?

== Pourquoi faire ? ==

* Simple curiosité, pour comprendre son fonctionnement;
* Être autonome des DNS de son FAI (Fournisseur d'accès Internet) en cas d'arrêt de ceux-ci ou par souci de confidentialité;
* Résoudre les adresses de son réseau interne (Intranet) simplement, sans être obligé de remplir le fichier hosts de toutes vos machines;
* Résoudre les &quot;adresses inverses&quot;: obtenir un nom de domaine ou de machine avec une IP.

Cela fait suffisamment de raisons ? Alors continuons!

== Avertissement ==

Nous n'aborderons pas ici les problèmes de sécurité, qui peuvent être nombreux sur un serveur DNS. Le DNS que nous allons construire est destiné UNIQUEMENT à notre réseau local, il n'est pas accessible depuis Internet.

Mais ça ne l'empêchera pas d'être pleinement opérationnel et de faire la résolution de nom dont vous avez besoin, y compris pour les domaines extérieurs.

== Installation ==

 # apt-get install bind9 bind9-host bind9utils host
 
Pour information, trois bogues sur bind9... Vous pouvez tout de même installer sans soucis

 Récupération des rapports de bogue... Fait  
 Analyse des informations Trouvé/Corrigé... Fait  
 Bogues de gravité grave sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;done&gt;
  #516616 - bind9 locks up on start on mipsel and mips (Corrigé : bind9/1:9.7.0.dfsg.1-1)
    Réuni avec : 520688
 Bogues de gravité critical sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #575916 - bind9: assertion fails in name.c:1699 INSIST(offset &lt;= length)
 Bogues de gravité serious sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #584585 - file conflict with libisc50 (Corrigé : 1:9.7.0.dsfg~b3-1)
 Résumé :
  bind9 (3 bogues)

Vérifions que bind écoute bien sur toutes nos adresses :

 # netstat -ntulp | grep named
 tcp        0      0 192.168.0.1:53          0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      2832/named
 tcp6       0      0 :::53                   :::*                    LISTEN      2832/named
 tcp6       0      0 ::1:953                 :::*                    LISTEN      2832/named
 udp        0      0 192.168.0.1:53          0.0.0.0:*                           2832/named
 udp        0      0 127.0.0.1:53            0.0.0.0:*                           2832/named
 udp6       0      0 :::53                   :::*                                2832/named

== Premiers contact ==

Ça y est, notre DNS est déjà fonctionnel...
Il remplit son rôle de DNS récursif et répond à nos demandes de résolution!
Vous ne me croyez pas ?

 $ host forum.debian-fr.org 127.0.0.1
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Cette commande simple nous donne déjà des renseignements :
* forum.debian-fr.org est un alias pour www.zehome.com.
* Son IP (IPV4 est 88.165.116.107)

Plus d'information ? Passons la même commande avec l'option -v (verbose)

 $ host -v forum.debian-fr.org localhost
 Trying &quot;forum.debian-fr.org&quot;
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 11492
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;forum.debian-fr.org.		IN	A
 
 ;; ANSWER SECTION:
 forum.debian-fr.org.	37939	IN	CNAME	www.zehome.com.
 www.zehome.com.		37941	IN	A	88.165.116.107
 
 ;; AUTHORITY SECTION:
 zehome.com.		37941	IN	NS	ns.kimsufi.com.
 zehome.com.		37941	IN	NS	ns0.zehome.com.
 zehome.com.		37941	IN	NS	daboog.zehome.com.
 
 ;; ADDITIONAL SECTION:
 ns.kimsufi.com.		85955	IN	A	213.186.33.199
 
 Received 161 bytes from 127.0.0.1#53 in 1 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 62379
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	AAAA
 
 ;; AUTHORITY SECTION:
 zehome.com.		10355	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 7678
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	MX
 
 ;; AUTHORITY SECTION:
 zehome.com.		10377	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms

Avec l'option -v (verbose) c'est tout de suite plus compliqué...

Quelques remarques sur ce résultat :

* forum.debian-fr.org est un alias pour www.zehome.com;
* Son IP est 88.165.116.107;
* Ce domaine est géré par les serveurs DNS daboog.zehome.com, ns.kimsufi.com et ns0.zehome.com;
* Il ne dispose pas d'IPV6 (pas de réponse à la question IN AAAA);
* Le [[BIND#SOA|SOA]] pour ce domaine est ns0.zehome.com
* Le mail de l'administrateur est ed@zehome.com (ed.zehome.com - ici le point vaut un arobase)

La même chose, sur un domaine plus important

 $ host www.google.fr 127.0.0.1
 Using domain server:
 Name: 127.0.0.1
 Address: 127.0.0.1#53
 Aliases: 
 
 www.google.fr is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

* www.google.fr est un alias pour www.google.com
* www.google.com possède plusieurs adresses IP

Plusieurs IP pour un même domaine ? C'est possible, et cela s'appelle le [[BIND#Le_Round-robin|&quot;round-robin&quot;]]... Tourniquet en Français, cet algorithme d'ordonnancement permet d'attribuer des temps aux processus, ici, il s'agit de faire tourner les IP, afin que tous les serveurs reçoivent leur part de charge...

=== La Configuration ===

L'installation de Bind9 à générée les fichiers suivants :

 # cd /etc/bind
 lol:/etc/bind# vdir
 total 52
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.0
 -rw-r--r-- 1 root root  271 jun 10 22:58 db.127
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.255
 -rw-r--r-- 1 root root  353 jun 10 22:58 db.empty
 -rw-r--r-- 1 root root  270 jun 10 22:58 db.local
 -rw-r--r-- 1 root root 2994 aoû  3 21:30 db.root
 -rw-r--r-- 1 root bind 1125 jui 21 22:19 named.conf
 -rw-r--r-- 1 root bind  278 aoû  3 10:37 named.conf.local
 -rw-r--r-- 1 root bind  572 jun 10 22:58 named.conf.options
 -rw-r----- 1 bind bind   77 jui 20 17:25 rndc.key
 -rw-r--r-- 1 root root 1317 jun 10 22:58 zones.rfc1918

Le fichier principal (épuré des commentaires) :

 # cat /etc/bind/named.conf
 
 include &quot;/etc/bind/named.conf.options&quot;;
 
 zone &quot;.&quot; {
 	type hint;
 	file &quot;/etc/bind/db.root&quot;;
 };
 
 zone &quot;localhost&quot; {
 	type master;
 	file &quot;/etc/bind/db.local&quot;;
 };
 
 zone &quot;127.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.127&quot;;
 };
 
 zone &quot;0.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.0&quot;;
 };
 
 zone &quot;255.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.255&quot;;
 };
 
 include &quot;/etc/bind/named.conf.local&quot;;
 
 server xxx.xxx.xxx.xxx	{ };

Ce fichier renvoie vers deux fichiers de configurations : named.conf.options et named.conf.local

C'est dans ces deux fichiers qu'il faudra mettre vos configurations personnelles, le fichier named.conf ne devant en principe pas être modifié.

Le fichier named.conf déclare plusieurs zones, presque toutes destinées à la résolution inverse

A la fin du fichier, nous avons ajouté le NDS de notre FAI, au cas ou... Il est indispensable de pouvoir, quoi qu'il arrive, faire de la résolution de nom... Ce sera donc notre DNS de secours.

==== La zone &quot;.&quot; ====

La zone root est primordiale.
Ce fichier contient toutes les informations sur les root-servers sans lesquels notre DNS ne peut fonctionner.
Ce fichier évolue peu.

 lol:/etc/bind# cat db.root
 
 ;       This file holds the information on root name servers needed to
 ;       initialize cache of Internet domain name servers
 ;       (e.g. reference this file in the &quot;cache  .  &lt;file&gt;&quot;
 ;       configuration file of BIND domain name servers).
 ;
 ;       This file is made available by InterNIC 
 ;       under anonymous FTP as
 ;           file                /domain/named.root
 ;           on server           FTP.INTERNIC.NET
 ;       -OR-                    RS.INTERNIC.NET
 ;
 ;       last update:    Feb 04, 2008
 ;       related version of root zone:   2008020400
 ;
 ; formerly NS.INTERNIC.NET
 ;
 .                        3600000  IN  NS    A.ROOT-SERVERS.NET.
 A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
 A.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:BA3E::2:30
 ;
 ; formerly NS1.ISI.EDU
 ;
 .                        3600000      NS    B.ROOT-SERVERS.NET.
 B.ROOT-SERVERS.NET.      3600000      A     192.228.79.201
 ;
 ; formerly C.PSI.NET
 ;
 .                        3600000      NS    C.ROOT-SERVERS.NET.
 C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
 ;
 ; formerly TERP.UMD.EDU
 ;
 .                        3600000      NS    D.ROOT-SERVERS.NET.
 D.ROOT-SERVERS.NET.      3600000      A     128.8.10.90
 ;
 ; formerly NS.NASA.GOV
 ;
 .                        3600000      NS    E.ROOT-SERVERS.NET.
 E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
 ;
 ; formerly NS.ISC.ORG
 ;
 .                        3600000      NS    F.ROOT-SERVERS.NET.
 F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
 F.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2f::f
 ;
 ; formerly NS.NIC.DDN.MIL
 ;
 .                        3600000      NS    G.ROOT-SERVERS.NET.
 G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
 ;
 ; formerly AOS.ARL.ARMY.MIL
 ;
 .                        3600000      NS    H.ROOT-SERVERS.NET.
 H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
 H.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:1::803f:235
 ;
 ; formerly NIC.NORDU.NET
 ;
 .                        3600000      NS    I.ROOT-SERVERS.NET.
 I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
 ;
 ; operated by VeriSign, Inc.
 ;
 .                        3600000      NS    J.ROOT-SERVERS.NET.
 J.ROOT-SERVERS.NET.      3600000      A     192.58.128.30
 J.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:C27::2:30
 ;
 ; operated by RIPE NCC
 ;
 .                        3600000      NS    K.ROOT-SERVERS.NET.
 K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129 
 K.ROOT-SERVERS.NET.      3600000      AAAA  2001:7fd::1
 ;
 ; operated by ICANN
 ;
 .                        3600000      NS    L.ROOT-SERVERS.NET.
 L.ROOT-SERVERS.NET.      3600000      A     199.7.83.42
 ;
 ; operated by WIDEaimer
 ;
 .                        3600000      NS    M.ROOT-SERVERS.NET.
 M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
 M.ROOT-SERVERS.NET.      3600000      AAAA  2001:dc3::35
 ; End of File

==== La zone &quot;localhost&quot; ====

 # cat db.local 
 ;
 ; BIND data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      2		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 @	IN	A	127.0.0.1
 @	IN	AAAA	::1

Peu utilisée en général, elle permet de résoudre localhost : 

La structure de ce dernier fichier est un peu déroutante au début, emplie de @ . A AAAA SOA et autres IN que nous détaillerons plus loin.
Nous remarquons que localhost possède deux IP : 127.0.0.1 (IPV4) et ::1 (IPV6) vous le saviez probablement déjà!

==== Les zones in-addr.arpa ====

Nous venons de voir les fichiers qui permettent de résoudre l'adresse d'une machine à partir de son nom. Or, il arrive que certains mécanismes réclament l'inverse, c'est à dire trouver le (les) noms associés à des IP.

Les zones in-addr.arpa servent à ça.

Voici la zone inverse pour localhost :

 # cat db.127 
 ;
 ; BIND reverse data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      1		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 1.0.0	IN	PTR	localhost.

La notation est ici inversée.
Si nous cherchons dans la zone 127 l'adresse 0.0.1 nous tomberons sur localhost =&gt; 1.0.0 IN PTR localhost.

Par exemple, Pour l'adresse 192.1.2.3, nous obtenons le nom de domaine 3.2.1.192.in-addr.arpa.

== Contenu d'une Zone ==

Une zone contient deux enregistrements obligatoires :

* SOA
* NS

=== SOA ===

SOA (Start Of Authority). Le champ SOA indique quel est le serveur « maitre ». Ce serveur peut-avoir plusieurs serveurs esclaves

 $ host -t soa google.fr
 google.fr has SOA record ns1.google.com. dns-admin.google.com. 1423257 21600 3600 1209600 300

Nous savons donc que le serveur ns1.google.com est le serveur maître du domaine google.com.
Et nous avons l'adresse email du responsable : dns-admin@google.com (l'arobase est remplacé par un point dans le fichier de zone)

L'enregistrement SOA contient un certain nombre d'enregistrements et de paramètres:

==== Le nom du primaire ====

 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici.

C'est le nom du serveur primaire pour la zone.
L'adresse de courrier électronique du responsable technique de la zone (zone-contact).
Il faut l'écrire en replaçant le @ par un point. On a alors par exemple: root@inria.fr qui devient root.inria.fr

==== A, AAAA, MX, CNAME, etc. ====

Les types d'enregistrements sont: A, AAAA, MX, CNAME, NS, SOA, PTR, TXT, HINFO, WKS, RP, MA, MB.

===== A (Address) =====

C'est l'enregistrement le plus courant. Le DNS a été créé en grande partie pour ça...
Le champ A (Address) fait correspondre un nom à une adresse IPv4.

nom     IN      A       193.10.20.30

Dans le cas d'une machine qui dispose de plus d'une adresse IP (un routeur ou une machine avec plusieurs cartes), il faut indiquer un enregistrement A par adresse, mais il faut alors que tous les enregistrements PTR pointent vers ce nom là.

===== AAAA (Address IPV6) =====

Idem au champ A, mais correspond à une adresse de type IPV6

===== NS (Name Server) =====

Le champ NS (Name Server) indique le nom d'un serveur de noms. Il peut y avoir plusieurs champs NS s'il y a plusieurs serveurs de noms...

===== CNAME (Common Name) =====

Le champ CNAME (Common Name) est utilisé pour créer des alias. Un &quot;vrai&quot; nom doit être préalablement déclaré avec la variable A, un alias peut ensuite être créé qui pointera vers celui-ci.

===== MX (Mail eXchanger) =====

Le champ MX (Mail eXchanger), est utile pour le protocole SMTP ou TXT.

Il indique pour un nom de domaine quelle est la machine à laquelle il faut envoyer le courrier pour ce domaine.

Si plusieurs enregistrements MX sont présents, il faut leur attribuer un poids... Le MTA (Mail transfert agent) tentera d'envoyer le courrier en premier à la machine ayant le poids associé le plus faible, puis ensuite dans l'ordre croissant des poids.

Si la machine qui relaie le courrier est dans la liste des MX pour le domaine, elle envoie le courrier aux machines de poids inférieur au sien.

nom     IN      MX      10      premier.relais.
        IN      MX      20      second.relais.

==== Le numéro de série de la zone ====

Il permet aux serveurs secondaires qui interrogent régulièrement le serveur primaire de chaque zone de déterminer quand la zone a été mise à jour.



==== L'intervalle entre les rafraichissements (refresh) ====

Temps, en seconde, au bout duquel les serveurs « esclaves » devront demander à rafraichir leur données pour cette zone. 3600 secondes dans l'exemple ci-dessous, soit une heure. 

 3600           ; Refresh

La valeur conseillée est 24 heures, soit 86400 secondes.

==== L'intervalle entre les rafraichissements (retry) ====

Durée, en secondes, à partir de laquelle un serveur esclave doit ré-essayer de se synchroniser en cas d'échec du rafraichissement. Ici toutes les 300 secondes, soit toutes les 5 minutes. 

 300            ; Retry

La valeur conseillée est 6 heures, soit 21600 secondes.

==== La durée d'expiration des enregistrements d'un secondaire ====

En cas d'échec des tentatives de synchronisation, indique le temps (en secondes) au bout duquel les serveurs secondaires devront considérer qu'ils ne savent plus répondre aux requêtes concernant cette zone.

 2419200          ; Expire

La valeur conseillée est de 41 jours, soit 3600000 secondes.

==== La durée de vie par défaut des enregistrements (default TTL) ====

Durée de vie de l'information fournie.
Les serveurs DNS récursifs conserveront en cache les informations récoltées pendant la durée indiquée dans ce paramètre. 0 indique que les valeurs ne doivent pas être conservées en cache.

 1600 )           ; Negative Cache TTL

La valeur conseillée est de 24 heures, soit 86400 secondes.

==== Le symbole « @ » ====

Dans un fichier de configuration de zone, ce symbole représente exactement le nom de domaine de la zone. Par exemple, lorsque nous allons créer notre zone maison.mrs, écrire : 

 maison.mrs.  IN SOA ...

Nous pourrons écrire : 

 @            IN SOA ...

=== NS (Name Server) ===

Cet enregistrement indique une délégation pour la gestion du nom donné. C'est à dire que le nom donné devient une zone, dont la gestion est déléguée au serveur indiqué en partie droite.

L'enregistrement donne le nom d'un des serveurs de noms autoritaire pour la zone, comme il y a toujours plus d'un serveur de noms pour une zone, on répète l'enregistrement NS autant de fois qu'il y a de serveurs pour la zone.

Quand pour un nom, on a des enregistrements NS, il est interdit de faire figurer dans la zone parente (celle là) d'autres enregistrements. S'il y a à faire figurer des enregistrements, il faut les mettre dans la zone fille.

zone    IN      NS      serveur.nom.de.domaine.

          IN      NS      autreServeur.nom.de.domaine.

          IN      NS      encoreUn.autreNom.de.domaine.

== Créons notre première zone ==

Maintenant que les explications indigestes sont faites... 
La meilleure façon de comprendre, est d'appliquer à son réseau local sa propre zone!

=== La zone chezmoi.ici ===

Pour cet exemple j'ai pris un nom de domaine bidon, c'est tout a fait possible, vous pouvez donner n'importe quel nom à votre Intranet!

Notre serveur s'appelle tebilepas il dispose de l'IP 192.168.1.254

Le domaine est chezmoi.ici

Nous disposons d'assez d'informations pour créer la zone chezmoi.ici

Créons d'abord dans /etc/bind/ un fichier nommé : db.chezmoi.ici qui contiendrai ceci :

 $TTL    1600
 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. (
                         2009012907       ; Serial
                         604800           ; Refresh
                         86400            ; Retry
                         2419200          ; Expire
                         1600 )           ; Negative Cache TTL
 
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.
 chezmoi.ici.    IN      A       192.168.1.254
 tebilepas  IN      A       192.168.1.254
 coucou     IN      A       192.168.1.1
 pourquoi   IN      CNAME   coucou
 tespascheztoi      IN      CNAME   forum.debian-fr.org.

Nous aurions pu écrire :
 @         IN    NS      tebilepas.chezmoi.ici.
à la place de (cela revient au même)
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.

Nous aurions aussi pu éviter les commentaires (par exemple : ;Serial) mais pour les explications ce sera plus facile.

Ce sera suffisant pour commencer!

Pour que cette zone soit prise en compte, nous devons maintenant l'inclure dans le fichier /etc/bind/named.conf.local

Ceci devrait permettre de répondre aux requêtes de type NS pour le domaine maison.mrs, de répondre aussi aux requêtes de type A pour debvirt.maison.mrs et pour test1.maison.mrs, constater aussi que les alias fonctionnent dans et hors du domaine. 

Il nous faut maintenant indiquer à bind que cette zone existe. Nous allons le faire dans le fichier /etc/bind/named.conf.local : 

 zone &quot;chezmoi.ici&quot; {
         type master;
         file &quot;/etc/bind/db.chezmoi.ici&quot;;
         };

Nous redémarrons notre serveur bind

 # service bind9 restart
 Stopping domain name service...: bind9 waiting for pid 1353 to die.
 Starting domain name service...: bind9.

== Tests ==

Maintenant que notre serveur de nom est configuré, il faut le tester...

=== Avec la commande host ===

 $ host -a chezmoi.ici localhost
 Trying &quot;chezmoi.ici&quot;
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 46986
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;chezmoi.ici.			IN	ANY
 
 ;; ANSWER SECTION:
 chezmoi.ici.		1600	IN	SOA	tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. 2009012907 604800 86400 2419200 1600
 chezmoi.ici.		1600	IN	NS	tebilepas.chezmoi.ici.
 chezmoi.ici.		1600	IN	A	192.168.1.254
 
 ;; ADDITIONAL SECTION:
 tebilepas.chezmoi.ici.	1600	IN	A	192.168.1.254
 
 Received 126 bytes from ::1#53 in 5 ms

 $ host coucou.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 coucou.chezmoi.ici has address 192.168.1.1

 $ host pourquoi.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 pourquoi.chezmoi.ici is an alias for coucou.chezmoi.ici.
 coucou.chezmoi.ici has address 192.168.1.1

 $ host ailleurs.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ailleurs.chezmoi.ici is an alias for forum.debian-fr.org.
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Comme vous avez pu le constater, votre DNS fonctionne parfaitement, il renseigne nos machines sur le réseau local, et il pourvoit à nos demandes d'IP Internet !

=== Avec la commande nslookup ===

&lt;big&gt;&lt;code text&gt;
$ nslookup
&gt; server
Default server: 192.168.0.254
Address: 192.168.0.254#53
Default server: xxx.xxx.xxx.xxx
Address: xxx.xxx.xxx.xxx#53
&gt; localhost
Server:		192.168.0.254
Address:	192.168.0.254#53

Name:	localhost
Address: 127.0.0.1
&gt; www.chezmoi.ici
Server:		192.168.0.254
Address:	192.168.0.254#53

www.chezmoi.ici	canonical name = chezmoi.ici.
Name:	chezmoi.ici
Address: 192.168.0.254
&gt; tebilepas
Server:		192.168.0.254
Address:	192.168.0.254#53

Name:	tebilepas.chezmoi.ici
Address: 192.168.0.254
&gt; www.google.com
Server:		192.168.0.254
Address:	192.168.0.254#53

Non-authoritative answer:
www.google.com	canonical name = www.l.google.com.
Name:	www.l.google.com
Address: 209.85.148.105
Name:	www.l.google.com
Address: 209.85.148.106
Name:	www.l.google.com
Address: 209.85.148.147
Name:	www.l.google.com
Address: 209.85.148.99
Name:	www.l.google.com
Address: 209.85.148.103
Name:	www.l.google.com
Address: 209.85.148.104
&gt; exit

$
&lt;/code&gt;&lt;/big&gt;

Explication. Lorsque nous tapons la commande nslookup, apparait l'invite suivante :

 $ nslookup
 &gt;

Il suffit de connaître très peu de commandes

server &gt; donne la liste des serveurs DNS qui seront interrogés, dans l'ordre;

nslookup précise à chaque demande quel serveur à répondu :
 Server:		192.168.0.254
 Address:	192.168.0.254#53

192.168.0.254, c'est nous! :)

Nom de machine ou de domaine &gt; donne la résolution du nom demandé;

exit &gt; sortir de nslookup.

=== Le fichier resolv.conf ===

Je n'en ai pas parlé jusqu'ici, mais il faut vérifier que votre fichier /etc/resolv.conf reflète bien votre configuration.
Dans l'exemple pris dans cette page, celui-ci doit contenir :

 $ cat /etc/resolv.conf 
 domain chezmoi.ici
 search chezmoi.ici
 nameserver 192.168.0.254
 nameserver xxx.xxx.xxx.xxx

C'est bon, le domaine est bien chezmoi.ici, et les DNS, sont dans l'ordre, le votre, puis celui de votre FAI.

Le fichier resolv.conf est complété automatiquement pour les machines qui obtiennent leur ip par dhclient. Il faut penser à bien compléter votre DHCP pour que tous les clients se servent de votre DNS.

Dans le cas ou vous auriez des machines dont l'IP est fixées par le fichier /etc/network/interfaces, assurez-vous que vous avez bien ces lignes :

 dns-nameservers 192.168.0.254 xxx.xxx.xxx.xxx
 dns-search chezmoi.ici

== Le Round-robin ==

Le Round-robin est une répartition de charge (load balancing) équitable entre serveurs d'une ferme informatique (cluster). Chaque serveur doit traiter le même nombre de requêtes. Cela nécessite une ferme de serveurs homogènes en capacité de traitement. Cette répartition de charge peut être effectuée par le serveur DNS (Domain Name System) qui associe plusieurs adresses IP à un nom de domaine.

Exemple d'un round-robin fonctionnel :

 jeu. août 05 02:46:56 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99

 jeu. août 05 02:46:57 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147

 jeu. août 05 02:46:59 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104

 jeu. août 05 02:47:01 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

Le premier serveur de la liste n'est jamais le même, il y a une rotation...


ToDo : Conclusion

[[Category:Serveurs]]</text>
      <sha1>ffy9rgpczju9rhtqozs7hyuwj4vwttt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2503</id>
      <parentid>2501</parentid>
      <timestamp>2010-12-16T06:24:16Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Avertissement */</comment>
      <text xml:space="preserve" bytes="27471">{{Modèle:Ébauche|DNS}}

'''Créer un serveur DNS pour votre réseau local'''

== Qu'est-ce que c'est ? ==

Un Domain Name System (ou DNS, système de noms de domaine) est un service permettant d'établir une correspondance entre une adresse IP et un nom de domaine et, plus généralement, de trouver une information à partir d'un nom de domaine.

Tous les ordinateurs pour communiquer entre eux doivent posséder une adresse IP. Ces adresses sont numériques, elles sont sous cette forme pour les adresses IPV4 : www.xxx.yyy.zzz; et de cette forme pour les adresses IPV6 : aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh.

Ces adresses sont associées à des noms, plus simples à retenir pour les humains, appelés noms de domaines. Résoudre un nom de domaine consiste à trouver l'adresse IP qui lui est associée.

Vous préférez taper google.com ou 72.14.204.103 dans votre navigateur ?

== Pourquoi faire ? ==

* Simple curiosité, pour comprendre son fonctionnement;
* Être autonome des DNS de son FAI (Fournisseur d'accès Internet) en cas d'arrêt de ceux-ci ou par souci de confidentialité;
* Résoudre les adresses de son réseau interne (Intranet) simplement, sans être obligé de remplir le fichier hosts de toutes vos machines;
* Résoudre les &quot;adresses inverses&quot;: obtenir un nom de domaine ou de machine avec une IP.

Cela fait suffisamment de raisons ? Alors continuons!

== Avertissement ==

Nous n'aborderons pas ici les problèmes de sécurité, qui peuvent être nombreux sur un serveur DNS. Le DNS que nous allons construire est destiné UNIQUEMENT à notre réseau local, il n'est pas accessible depuis Internet.

Mais ça ne l'empêchera pas d'être pleinement opérationnel et de faire la résolution de nom dont vous avez besoin, y compris pour les domaines extérieurs.

Je préciserais aussi ici qu'il vaut mieux ne pas utiliser un domaine (un [[Glossaire#TLD|TLD]]) existant sur Internet. Vous pouvez le faire, mais vous ne pourrez jamais joindre le domaine &quot;réel&quot; qui se trouve sur Internet, vous seriez automatiquement re-dirigé vers votre serveur local.

== Installation ==

 # apt-get install bind9 bind9-host bind9utils host
 
Pour information, trois bogues sur bind9... Vous pouvez tout de même installer sans soucis

 Récupération des rapports de bogue... Fait  
 Analyse des informations Trouvé/Corrigé... Fait  
 Bogues de gravité grave sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;done&gt;
  #516616 - bind9 locks up on start on mipsel and mips (Corrigé : bind9/1:9.7.0.dfsg.1-1)
    Réuni avec : 520688
 Bogues de gravité critical sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #575916 - bind9: assertion fails in name.c:1699 INSIST(offset &lt;= length)
 Bogues de gravité serious sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #584585 - file conflict with libisc50 (Corrigé : 1:9.7.0.dsfg~b3-1)
 Résumé :
  bind9 (3 bogues)

Vérifions que bind écoute bien sur toutes nos adresses :

 # netstat -ntulp | grep named
 tcp        0      0 192.168.0.1:53          0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      2832/named
 tcp6       0      0 :::53                   :::*                    LISTEN      2832/named
 tcp6       0      0 ::1:953                 :::*                    LISTEN      2832/named
 udp        0      0 192.168.0.1:53          0.0.0.0:*                           2832/named
 udp        0      0 127.0.0.1:53            0.0.0.0:*                           2832/named
 udp6       0      0 :::53                   :::*                                2832/named

== Premiers contact ==

Ça y est, notre DNS est déjà fonctionnel...
Il remplit son rôle de DNS récursif et répond à nos demandes de résolution!
Vous ne me croyez pas ?

 $ host forum.debian-fr.org 127.0.0.1
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Cette commande simple nous donne déjà des renseignements :
* forum.debian-fr.org est un alias pour www.zehome.com.
* Son IP (IPV4 est 88.165.116.107)

Plus d'information ? Passons la même commande avec l'option -v (verbose)

 $ host -v forum.debian-fr.org localhost
 Trying &quot;forum.debian-fr.org&quot;
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 11492
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;forum.debian-fr.org.		IN	A
 
 ;; ANSWER SECTION:
 forum.debian-fr.org.	37939	IN	CNAME	www.zehome.com.
 www.zehome.com.		37941	IN	A	88.165.116.107
 
 ;; AUTHORITY SECTION:
 zehome.com.		37941	IN	NS	ns.kimsufi.com.
 zehome.com.		37941	IN	NS	ns0.zehome.com.
 zehome.com.		37941	IN	NS	daboog.zehome.com.
 
 ;; ADDITIONAL SECTION:
 ns.kimsufi.com.		85955	IN	A	213.186.33.199
 
 Received 161 bytes from 127.0.0.1#53 in 1 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 62379
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	AAAA
 
 ;; AUTHORITY SECTION:
 zehome.com.		10355	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 7678
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	MX
 
 ;; AUTHORITY SECTION:
 zehome.com.		10377	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms

Avec l'option -v (verbose) c'est tout de suite plus compliqué...

Quelques remarques sur ce résultat :

* forum.debian-fr.org est un alias pour www.zehome.com;
* Son IP est 88.165.116.107;
* Ce domaine est géré par les serveurs DNS daboog.zehome.com, ns.kimsufi.com et ns0.zehome.com;
* Il ne dispose pas d'IPV6 (pas de réponse à la question IN AAAA);
* Le [[BIND#SOA|SOA]] pour ce domaine est ns0.zehome.com
* Le mail de l'administrateur est ed@zehome.com (ed.zehome.com - ici le point vaut un arobase)

La même chose, sur un domaine plus important

 $ host www.google.fr 127.0.0.1
 Using domain server:
 Name: 127.0.0.1
 Address: 127.0.0.1#53
 Aliases: 
 
 www.google.fr is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

* www.google.fr est un alias pour www.google.com
* www.google.com possède plusieurs adresses IP

Plusieurs IP pour un même domaine ? C'est possible, et cela s'appelle le [[BIND#Le_Round-robin|&quot;round-robin&quot;]]... Tourniquet en Français, cet algorithme d'ordonnancement permet d'attribuer des temps aux processus, ici, il s'agit de faire tourner les IP, afin que tous les serveurs reçoivent leur part de charge...

=== La Configuration ===

L'installation de Bind9 à générée les fichiers suivants :

 # cd /etc/bind
 lol:/etc/bind# vdir
 total 52
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.0
 -rw-r--r-- 1 root root  271 jun 10 22:58 db.127
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.255
 -rw-r--r-- 1 root root  353 jun 10 22:58 db.empty
 -rw-r--r-- 1 root root  270 jun 10 22:58 db.local
 -rw-r--r-- 1 root root 2994 aoû  3 21:30 db.root
 -rw-r--r-- 1 root bind 1125 jui 21 22:19 named.conf
 -rw-r--r-- 1 root bind  278 aoû  3 10:37 named.conf.local
 -rw-r--r-- 1 root bind  572 jun 10 22:58 named.conf.options
 -rw-r----- 1 bind bind   77 jui 20 17:25 rndc.key
 -rw-r--r-- 1 root root 1317 jun 10 22:58 zones.rfc1918

Le fichier principal (épuré des commentaires) :

 # cat /etc/bind/named.conf
 
 include &quot;/etc/bind/named.conf.options&quot;;
 
 zone &quot;.&quot; {
 	type hint;
 	file &quot;/etc/bind/db.root&quot;;
 };
 
 zone &quot;localhost&quot; {
 	type master;
 	file &quot;/etc/bind/db.local&quot;;
 };
 
 zone &quot;127.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.127&quot;;
 };
 
 zone &quot;0.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.0&quot;;
 };
 
 zone &quot;255.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.255&quot;;
 };
 
 include &quot;/etc/bind/named.conf.local&quot;;
 
 server xxx.xxx.xxx.xxx	{ };

Ce fichier renvoie vers deux fichiers de configurations : named.conf.options et named.conf.local

C'est dans ces deux fichiers qu'il faudra mettre vos configurations personnelles, le fichier named.conf ne devant en principe pas être modifié.

Le fichier named.conf déclare plusieurs zones, presque toutes destinées à la résolution inverse

A la fin du fichier, nous avons ajouté le NDS de notre FAI, au cas ou... Il est indispensable de pouvoir, quoi qu'il arrive, faire de la résolution de nom... Ce sera donc notre DNS de secours.

==== La zone &quot;.&quot; ====

La zone root est primordiale.
Ce fichier contient toutes les informations sur les root-servers sans lesquels notre DNS ne peut fonctionner.
Ce fichier évolue peu.

 lol:/etc/bind# cat db.root
 
 ;       This file holds the information on root name servers needed to
 ;       initialize cache of Internet domain name servers
 ;       (e.g. reference this file in the &quot;cache  .  &lt;file&gt;&quot;
 ;       configuration file of BIND domain name servers).
 ;
 ;       This file is made available by InterNIC 
 ;       under anonymous FTP as
 ;           file                /domain/named.root
 ;           on server           FTP.INTERNIC.NET
 ;       -OR-                    RS.INTERNIC.NET
 ;
 ;       last update:    Feb 04, 2008
 ;       related version of root zone:   2008020400
 ;
 ; formerly NS.INTERNIC.NET
 ;
 .                        3600000  IN  NS    A.ROOT-SERVERS.NET.
 A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
 A.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:BA3E::2:30
 ;
 ; formerly NS1.ISI.EDU
 ;
 .                        3600000      NS    B.ROOT-SERVERS.NET.
 B.ROOT-SERVERS.NET.      3600000      A     192.228.79.201
 ;
 ; formerly C.PSI.NET
 ;
 .                        3600000      NS    C.ROOT-SERVERS.NET.
 C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
 ;
 ; formerly TERP.UMD.EDU
 ;
 .                        3600000      NS    D.ROOT-SERVERS.NET.
 D.ROOT-SERVERS.NET.      3600000      A     128.8.10.90
 ;
 ; formerly NS.NASA.GOV
 ;
 .                        3600000      NS    E.ROOT-SERVERS.NET.
 E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
 ;
 ; formerly NS.ISC.ORG
 ;
 .                        3600000      NS    F.ROOT-SERVERS.NET.
 F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
 F.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2f::f
 ;
 ; formerly NS.NIC.DDN.MIL
 ;
 .                        3600000      NS    G.ROOT-SERVERS.NET.
 G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
 ;
 ; formerly AOS.ARL.ARMY.MIL
 ;
 .                        3600000      NS    H.ROOT-SERVERS.NET.
 H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
 H.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:1::803f:235
 ;
 ; formerly NIC.NORDU.NET
 ;
 .                        3600000      NS    I.ROOT-SERVERS.NET.
 I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
 ;
 ; operated by VeriSign, Inc.
 ;
 .                        3600000      NS    J.ROOT-SERVERS.NET.
 J.ROOT-SERVERS.NET.      3600000      A     192.58.128.30
 J.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:C27::2:30
 ;
 ; operated by RIPE NCC
 ;
 .                        3600000      NS    K.ROOT-SERVERS.NET.
 K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129 
 K.ROOT-SERVERS.NET.      3600000      AAAA  2001:7fd::1
 ;
 ; operated by ICANN
 ;
 .                        3600000      NS    L.ROOT-SERVERS.NET.
 L.ROOT-SERVERS.NET.      3600000      A     199.7.83.42
 ;
 ; operated by WIDEaimer
 ;
 .                        3600000      NS    M.ROOT-SERVERS.NET.
 M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
 M.ROOT-SERVERS.NET.      3600000      AAAA  2001:dc3::35
 ; End of File

==== La zone &quot;localhost&quot; ====

 # cat db.local 
 ;
 ; BIND data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      2		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 @	IN	A	127.0.0.1
 @	IN	AAAA	::1

Peu utilisée en général, elle permet de résoudre localhost : 

La structure de ce dernier fichier est un peu déroutante au début, emplie de @ . A AAAA SOA et autres IN que nous détaillerons plus loin.
Nous remarquons que localhost possède deux IP : 127.0.0.1 (IPV4) et ::1 (IPV6) vous le saviez probablement déjà!

==== Les zones in-addr.arpa ====

Nous venons de voir les fichiers qui permettent de résoudre l'adresse d'une machine à partir de son nom. Or, il arrive que certains mécanismes réclament l'inverse, c'est à dire trouver le (les) noms associés à des IP.

Les zones in-addr.arpa servent à ça.

Voici la zone inverse pour localhost :

 # cat db.127 
 ;
 ; BIND reverse data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      1		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 1.0.0	IN	PTR	localhost.

La notation est ici inversée.
Si nous cherchons dans la zone 127 l'adresse 0.0.1 nous tomberons sur localhost =&gt; 1.0.0 IN PTR localhost.

Par exemple, Pour l'adresse 192.1.2.3, nous obtenons le nom de domaine 3.2.1.192.in-addr.arpa.

== Contenu d'une Zone ==

Une zone contient deux enregistrements obligatoires :

* SOA
* NS

=== SOA ===

SOA (Start Of Authority). Le champ SOA indique quel est le serveur « maitre ». Ce serveur peut-avoir plusieurs serveurs esclaves

 $ host -t soa google.fr
 google.fr has SOA record ns1.google.com. dns-admin.google.com. 1423257 21600 3600 1209600 300

Nous savons donc que le serveur ns1.google.com est le serveur maître du domaine google.com.
Et nous avons l'adresse email du responsable : dns-admin@google.com (l'arobase est remplacé par un point dans le fichier de zone)

L'enregistrement SOA contient un certain nombre d'enregistrements et de paramètres:

==== Le nom du primaire ====

 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici.

C'est le nom du serveur primaire pour la zone.
L'adresse de courrier électronique du responsable technique de la zone (zone-contact).
Il faut l'écrire en replaçant le @ par un point. On a alors par exemple: root@inria.fr qui devient root.inria.fr

==== A, AAAA, MX, CNAME, etc. ====

Les types d'enregistrements sont: A, AAAA, MX, CNAME, NS, SOA, PTR, TXT, HINFO, WKS, RP, MA, MB.

===== A (Address) =====

C'est l'enregistrement le plus courant. Le DNS a été créé en grande partie pour ça...
Le champ A (Address) fait correspondre un nom à une adresse IPv4.

nom     IN      A       193.10.20.30

Dans le cas d'une machine qui dispose de plus d'une adresse IP (un routeur ou une machine avec plusieurs cartes), il faut indiquer un enregistrement A par adresse, mais il faut alors que tous les enregistrements PTR pointent vers ce nom là.

===== AAAA (Address IPV6) =====

Idem au champ A, mais correspond à une adresse de type IPV6

===== NS (Name Server) =====

Le champ NS (Name Server) indique le nom d'un serveur de noms. Il peut y avoir plusieurs champs NS s'il y a plusieurs serveurs de noms...

===== CNAME (Common Name) =====

Le champ CNAME (Common Name) est utilisé pour créer des alias. Un &quot;vrai&quot; nom doit être préalablement déclaré avec la variable A, un alias peut ensuite être créé qui pointera vers celui-ci.

===== MX (Mail eXchanger) =====

Le champ MX (Mail eXchanger), est utile pour le protocole SMTP ou TXT.

Il indique pour un nom de domaine quelle est la machine à laquelle il faut envoyer le courrier pour ce domaine.

Si plusieurs enregistrements MX sont présents, il faut leur attribuer un poids... Le MTA (Mail transfert agent) tentera d'envoyer le courrier en premier à la machine ayant le poids associé le plus faible, puis ensuite dans l'ordre croissant des poids.

Si la machine qui relaie le courrier est dans la liste des MX pour le domaine, elle envoie le courrier aux machines de poids inférieur au sien.

nom     IN      MX      10      premier.relais.
        IN      MX      20      second.relais.

==== Le numéro de série de la zone ====

Il permet aux serveurs secondaires qui interrogent régulièrement le serveur primaire de chaque zone de déterminer quand la zone a été mise à jour.



==== L'intervalle entre les rafraichissements (refresh) ====

Temps, en seconde, au bout duquel les serveurs « esclaves » devront demander à rafraichir leur données pour cette zone. 3600 secondes dans l'exemple ci-dessous, soit une heure. 

 3600           ; Refresh

La valeur conseillée est 24 heures, soit 86400 secondes.

==== L'intervalle entre les rafraichissements (retry) ====

Durée, en secondes, à partir de laquelle un serveur esclave doit ré-essayer de se synchroniser en cas d'échec du rafraichissement. Ici toutes les 300 secondes, soit toutes les 5 minutes. 

 300            ; Retry

La valeur conseillée est 6 heures, soit 21600 secondes.

==== La durée d'expiration des enregistrements d'un secondaire ====

En cas d'échec des tentatives de synchronisation, indique le temps (en secondes) au bout duquel les serveurs secondaires devront considérer qu'ils ne savent plus répondre aux requêtes concernant cette zone.

 2419200          ; Expire

La valeur conseillée est de 41 jours, soit 3600000 secondes.

==== La durée de vie par défaut des enregistrements (default TTL) ====

Durée de vie de l'information fournie.
Les serveurs DNS récursifs conserveront en cache les informations récoltées pendant la durée indiquée dans ce paramètre. 0 indique que les valeurs ne doivent pas être conservées en cache.

 1600 )           ; Negative Cache TTL

La valeur conseillée est de 24 heures, soit 86400 secondes.

==== Le symbole « @ » ====

Dans un fichier de configuration de zone, ce symbole représente exactement le nom de domaine de la zone. Par exemple, lorsque nous allons créer notre zone maison.mrs, écrire : 

 maison.mrs.  IN SOA ...

Nous pourrons écrire : 

 @            IN SOA ...

=== NS (Name Server) ===

Cet enregistrement indique une délégation pour la gestion du nom donné. C'est à dire que le nom donné devient une zone, dont la gestion est déléguée au serveur indiqué en partie droite.

L'enregistrement donne le nom d'un des serveurs de noms autoritaire pour la zone, comme il y a toujours plus d'un serveur de noms pour une zone, on répète l'enregistrement NS autant de fois qu'il y a de serveurs pour la zone.

Quand pour un nom, on a des enregistrements NS, il est interdit de faire figurer dans la zone parente (celle là) d'autres enregistrements. S'il y a à faire figurer des enregistrements, il faut les mettre dans la zone fille.

zone    IN      NS      serveur.nom.de.domaine.

          IN      NS      autreServeur.nom.de.domaine.

          IN      NS      encoreUn.autreNom.de.domaine.

== Créons notre première zone ==

Maintenant que les explications indigestes sont faites... 
La meilleure façon de comprendre, est d'appliquer à son réseau local sa propre zone!

=== La zone chezmoi.ici ===

Pour cet exemple j'ai pris un nom de domaine bidon, c'est tout a fait possible, vous pouvez donner n'importe quel nom à votre Intranet!

Notre serveur s'appelle tebilepas il dispose de l'IP 192.168.1.254

Le domaine est chezmoi.ici

Nous disposons d'assez d'informations pour créer la zone chezmoi.ici

Créons d'abord dans /etc/bind/ un fichier nommé : db.chezmoi.ici qui contiendrai ceci :

 $TTL    1600
 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. (
                         2009012907       ; Serial
                         604800           ; Refresh
                         86400            ; Retry
                         2419200          ; Expire
                         1600 )           ; Negative Cache TTL
 
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.
 chezmoi.ici.    IN      A       192.168.1.254
 tebilepas  IN      A       192.168.1.254
 coucou     IN      A       192.168.1.1
 pourquoi   IN      CNAME   coucou
 tespascheztoi      IN      CNAME   forum.debian-fr.org.

Nous aurions pu écrire :
 @         IN    NS      tebilepas.chezmoi.ici.
à la place de (cela revient au même)
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.

Nous aurions aussi pu éviter les commentaires (par exemple : ;Serial) mais pour les explications ce sera plus facile.

Ce sera suffisant pour commencer!

Pour que cette zone soit prise en compte, nous devons maintenant l'inclure dans le fichier /etc/bind/named.conf.local

Ceci devrait permettre de répondre aux requêtes de type NS pour le domaine maison.mrs, de répondre aussi aux requêtes de type A pour debvirt.maison.mrs et pour test1.maison.mrs, constater aussi que les alias fonctionnent dans et hors du domaine. 

Il nous faut maintenant indiquer à bind que cette zone existe. Nous allons le faire dans le fichier /etc/bind/named.conf.local : 

 zone &quot;chezmoi.ici&quot; {
         type master;
         file &quot;/etc/bind/db.chezmoi.ici&quot;;
         };

Nous redémarrons notre serveur bind

 # service bind9 restart
 Stopping domain name service...: bind9 waiting for pid 1353 to die.
 Starting domain name service...: bind9.

== Tests ==

Maintenant que notre serveur de nom est configuré, il faut le tester...

=== Avec la commande host ===

 $ host -a chezmoi.ici localhost
 Trying &quot;chezmoi.ici&quot;
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 46986
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;chezmoi.ici.			IN	ANY
 
 ;; ANSWER SECTION:
 chezmoi.ici.		1600	IN	SOA	tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. 2009012907 604800 86400 2419200 1600
 chezmoi.ici.		1600	IN	NS	tebilepas.chezmoi.ici.
 chezmoi.ici.		1600	IN	A	192.168.1.254
 
 ;; ADDITIONAL SECTION:
 tebilepas.chezmoi.ici.	1600	IN	A	192.168.1.254
 
 Received 126 bytes from ::1#53 in 5 ms

 $ host coucou.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 coucou.chezmoi.ici has address 192.168.1.1

 $ host pourquoi.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 pourquoi.chezmoi.ici is an alias for coucou.chezmoi.ici.
 coucou.chezmoi.ici has address 192.168.1.1

 $ host ailleurs.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ailleurs.chezmoi.ici is an alias for forum.debian-fr.org.
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Comme vous avez pu le constater, votre DNS fonctionne parfaitement, il renseigne nos machines sur le réseau local, et il pourvoit à nos demandes d'IP Internet !

=== Avec la commande nslookup ===

&lt;big&gt;&lt;code text&gt;
$ nslookup
&gt; server
Default server: 192.168.0.254
Address: 192.168.0.254#53
Default server: xxx.xxx.xxx.xxx
Address: xxx.xxx.xxx.xxx#53
&gt; localhost
Server:		192.168.0.254
Address:	192.168.0.254#53

Name:	localhost
Address: 127.0.0.1
&gt; www.chezmoi.ici
Server:		192.168.0.254
Address:	192.168.0.254#53

www.chezmoi.ici	canonical name = chezmoi.ici.
Name:	chezmoi.ici
Address: 192.168.0.254
&gt; tebilepas
Server:		192.168.0.254
Address:	192.168.0.254#53

Name:	tebilepas.chezmoi.ici
Address: 192.168.0.254
&gt; www.google.com
Server:		192.168.0.254
Address:	192.168.0.254#53

Non-authoritative answer:
www.google.com	canonical name = www.l.google.com.
Name:	www.l.google.com
Address: 209.85.148.105
Name:	www.l.google.com
Address: 209.85.148.106
Name:	www.l.google.com
Address: 209.85.148.147
Name:	www.l.google.com
Address: 209.85.148.99
Name:	www.l.google.com
Address: 209.85.148.103
Name:	www.l.google.com
Address: 209.85.148.104
&gt; exit

$
&lt;/code&gt;&lt;/big&gt;

Explication. Lorsque nous tapons la commande nslookup, apparait l'invite suivante :

 $ nslookup
 &gt;

Il suffit de connaître très peu de commandes

server &gt; donne la liste des serveurs DNS qui seront interrogés, dans l'ordre;

nslookup précise à chaque demande quel serveur à répondu :
 Server:		192.168.0.254
 Address:	192.168.0.254#53

192.168.0.254, c'est nous! :)

Nom de machine ou de domaine &gt; donne la résolution du nom demandé;

exit &gt; sortir de nslookup.

=== Le fichier resolv.conf ===

Je n'en ai pas parlé jusqu'ici, mais il faut vérifier que votre fichier /etc/resolv.conf reflète bien votre configuration.
Dans l'exemple pris dans cette page, celui-ci doit contenir :

 $ cat /etc/resolv.conf 
 domain chezmoi.ici
 search chezmoi.ici
 nameserver 192.168.0.254
 nameserver xxx.xxx.xxx.xxx

C'est bon, le domaine est bien chezmoi.ici, et les DNS, sont dans l'ordre, le votre, puis celui de votre FAI.

Le fichier resolv.conf est complété automatiquement pour les machines qui obtiennent leur ip par dhclient. Il faut penser à bien compléter votre DHCP pour que tous les clients se servent de votre DNS.

Dans le cas ou vous auriez des machines dont l'IP est fixées par le fichier /etc/network/interfaces, assurez-vous que vous avez bien ces lignes :

 dns-nameservers 192.168.0.254 xxx.xxx.xxx.xxx
 dns-search chezmoi.ici

== Le Round-robin ==

Le Round-robin est une répartition de charge (load balancing) équitable entre serveurs d'une ferme informatique (cluster). Chaque serveur doit traiter le même nombre de requêtes. Cela nécessite une ferme de serveurs homogènes en capacité de traitement. Cette répartition de charge peut être effectuée par le serveur DNS (Domain Name System) qui associe plusieurs adresses IP à un nom de domaine.

Exemple d'un round-robin fonctionnel :

 jeu. août 05 02:46:56 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99

 jeu. août 05 02:46:57 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147

 jeu. août 05 02:46:59 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104

 jeu. août 05 02:47:01 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

Le premier serveur de la liste n'est jamais le même, il y a une rotation...


ToDo : Conclusion

[[Category:Serveurs]]</text>
      <sha1>9q55zosq5rnv8q8wgb59jgywof2j7mu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2506</id>
      <parentid>2503</parentid>
      <timestamp>2010-12-16T14:37:45Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Le fichier resolv.conf */</comment>
      <text xml:space="preserve" bytes="27928">{{Modèle:Ébauche|DNS}}

'''Créer un serveur DNS pour votre réseau local'''

== Qu'est-ce que c'est ? ==

Un Domain Name System (ou DNS, système de noms de domaine) est un service permettant d'établir une correspondance entre une adresse IP et un nom de domaine et, plus généralement, de trouver une information à partir d'un nom de domaine.

Tous les ordinateurs pour communiquer entre eux doivent posséder une adresse IP. Ces adresses sont numériques, elles sont sous cette forme pour les adresses IPV4 : www.xxx.yyy.zzz; et de cette forme pour les adresses IPV6 : aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh.

Ces adresses sont associées à des noms, plus simples à retenir pour les humains, appelés noms de domaines. Résoudre un nom de domaine consiste à trouver l'adresse IP qui lui est associée.

Vous préférez taper google.com ou 72.14.204.103 dans votre navigateur ?

== Pourquoi faire ? ==

* Simple curiosité, pour comprendre son fonctionnement;
* Être autonome des DNS de son FAI (Fournisseur d'accès Internet) en cas d'arrêt de ceux-ci ou par souci de confidentialité;
* Résoudre les adresses de son réseau interne (Intranet) simplement, sans être obligé de remplir le fichier hosts de toutes vos machines;
* Résoudre les &quot;adresses inverses&quot;: obtenir un nom de domaine ou de machine avec une IP.

Cela fait suffisamment de raisons ? Alors continuons!

== Avertissement ==

Nous n'aborderons pas ici les problèmes de sécurité, qui peuvent être nombreux sur un serveur DNS. Le DNS que nous allons construire est destiné UNIQUEMENT à notre réseau local, il n'est pas accessible depuis Internet.

Mais ça ne l'empêchera pas d'être pleinement opérationnel et de faire la résolution de nom dont vous avez besoin, y compris pour les domaines extérieurs.

Je préciserais aussi ici qu'il vaut mieux ne pas utiliser un domaine (un [[Glossaire#TLD|TLD]]) existant sur Internet. Vous pouvez le faire, mais vous ne pourrez jamais joindre le domaine &quot;réel&quot; qui se trouve sur Internet, vous seriez automatiquement re-dirigé vers votre serveur local.

== Installation ==

 # apt-get install bind9 bind9-host bind9utils host
 
Pour information, trois bogues sur bind9... Vous pouvez tout de même installer sans soucis

 Récupération des rapports de bogue... Fait  
 Analyse des informations Trouvé/Corrigé... Fait  
 Bogues de gravité grave sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;done&gt;
  #516616 - bind9 locks up on start on mipsel and mips (Corrigé : bind9/1:9.7.0.dfsg.1-1)
    Réuni avec : 520688
 Bogues de gravité critical sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #575916 - bind9: assertion fails in name.c:1699 INSIST(offset &lt;= length)
 Bogues de gravité serious sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #584585 - file conflict with libisc50 (Corrigé : 1:9.7.0.dsfg~b3-1)
 Résumé :
  bind9 (3 bogues)

Vérifions que bind écoute bien sur toutes nos adresses :

 # netstat -ntulp | grep named
 tcp        0      0 192.168.0.1:53          0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      2832/named
 tcp6       0      0 :::53                   :::*                    LISTEN      2832/named
 tcp6       0      0 ::1:953                 :::*                    LISTEN      2832/named
 udp        0      0 192.168.0.1:53          0.0.0.0:*                           2832/named
 udp        0      0 127.0.0.1:53            0.0.0.0:*                           2832/named
 udp6       0      0 :::53                   :::*                                2832/named

== Premiers contact ==

Ça y est, notre DNS est déjà fonctionnel...
Il remplit son rôle de DNS récursif et répond à nos demandes de résolution!
Vous ne me croyez pas ?

 $ host forum.debian-fr.org 127.0.0.1
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Cette commande simple nous donne déjà des renseignements :
* forum.debian-fr.org est un alias pour www.zehome.com.
* Son IP (IPV4 est 88.165.116.107)

Plus d'information ? Passons la même commande avec l'option -v (verbose)

 $ host -v forum.debian-fr.org localhost
 Trying &quot;forum.debian-fr.org&quot;
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 11492
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;forum.debian-fr.org.		IN	A
 
 ;; ANSWER SECTION:
 forum.debian-fr.org.	37939	IN	CNAME	www.zehome.com.
 www.zehome.com.		37941	IN	A	88.165.116.107
 
 ;; AUTHORITY SECTION:
 zehome.com.		37941	IN	NS	ns.kimsufi.com.
 zehome.com.		37941	IN	NS	ns0.zehome.com.
 zehome.com.		37941	IN	NS	daboog.zehome.com.
 
 ;; ADDITIONAL SECTION:
 ns.kimsufi.com.		85955	IN	A	213.186.33.199
 
 Received 161 bytes from 127.0.0.1#53 in 1 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 62379
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	AAAA
 
 ;; AUTHORITY SECTION:
 zehome.com.		10355	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 7678
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	MX
 
 ;; AUTHORITY SECTION:
 zehome.com.		10377	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms

Avec l'option -v (verbose) c'est tout de suite plus compliqué...

Quelques remarques sur ce résultat :

* forum.debian-fr.org est un alias pour www.zehome.com;
* Son IP est 88.165.116.107;
* Ce domaine est géré par les serveurs DNS daboog.zehome.com, ns.kimsufi.com et ns0.zehome.com;
* Il ne dispose pas d'IPV6 (pas de réponse à la question IN AAAA);
* Le [[BIND#SOA|SOA]] pour ce domaine est ns0.zehome.com
* Le mail de l'administrateur est ed@zehome.com (ed.zehome.com - ici le point vaut un arobase)

La même chose, sur un domaine plus important

 $ host www.google.fr 127.0.0.1
 Using domain server:
 Name: 127.0.0.1
 Address: 127.0.0.1#53
 Aliases: 
 
 www.google.fr is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

* www.google.fr est un alias pour www.google.com
* www.google.com possède plusieurs adresses IP

Plusieurs IP pour un même domaine ? C'est possible, et cela s'appelle le [[BIND#Le_Round-robin|&quot;round-robin&quot;]]... Tourniquet en Français, cet algorithme d'ordonnancement permet d'attribuer des temps aux processus, ici, il s'agit de faire tourner les IP, afin que tous les serveurs reçoivent leur part de charge...

=== La Configuration ===

L'installation de Bind9 à générée les fichiers suivants :

 # cd /etc/bind
 lol:/etc/bind# vdir
 total 52
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.0
 -rw-r--r-- 1 root root  271 jun 10 22:58 db.127
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.255
 -rw-r--r-- 1 root root  353 jun 10 22:58 db.empty
 -rw-r--r-- 1 root root  270 jun 10 22:58 db.local
 -rw-r--r-- 1 root root 2994 aoû  3 21:30 db.root
 -rw-r--r-- 1 root bind 1125 jui 21 22:19 named.conf
 -rw-r--r-- 1 root bind  278 aoû  3 10:37 named.conf.local
 -rw-r--r-- 1 root bind  572 jun 10 22:58 named.conf.options
 -rw-r----- 1 bind bind   77 jui 20 17:25 rndc.key
 -rw-r--r-- 1 root root 1317 jun 10 22:58 zones.rfc1918

Le fichier principal (épuré des commentaires) :

 # cat /etc/bind/named.conf
 
 include &quot;/etc/bind/named.conf.options&quot;;
 
 zone &quot;.&quot; {
 	type hint;
 	file &quot;/etc/bind/db.root&quot;;
 };
 
 zone &quot;localhost&quot; {
 	type master;
 	file &quot;/etc/bind/db.local&quot;;
 };
 
 zone &quot;127.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.127&quot;;
 };
 
 zone &quot;0.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.0&quot;;
 };
 
 zone &quot;255.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.255&quot;;
 };
 
 include &quot;/etc/bind/named.conf.local&quot;;
 
 server xxx.xxx.xxx.xxx	{ };

Ce fichier renvoie vers deux fichiers de configurations : named.conf.options et named.conf.local

C'est dans ces deux fichiers qu'il faudra mettre vos configurations personnelles, le fichier named.conf ne devant en principe pas être modifié.

Le fichier named.conf déclare plusieurs zones, presque toutes destinées à la résolution inverse

A la fin du fichier, nous avons ajouté le NDS de notre FAI, au cas ou... Il est indispensable de pouvoir, quoi qu'il arrive, faire de la résolution de nom... Ce sera donc notre DNS de secours.

==== La zone &quot;.&quot; ====

La zone root est primordiale.
Ce fichier contient toutes les informations sur les root-servers sans lesquels notre DNS ne peut fonctionner.
Ce fichier évolue peu.

 lol:/etc/bind# cat db.root
 
 ;       This file holds the information on root name servers needed to
 ;       initialize cache of Internet domain name servers
 ;       (e.g. reference this file in the &quot;cache  .  &lt;file&gt;&quot;
 ;       configuration file of BIND domain name servers).
 ;
 ;       This file is made available by InterNIC 
 ;       under anonymous FTP as
 ;           file                /domain/named.root
 ;           on server           FTP.INTERNIC.NET
 ;       -OR-                    RS.INTERNIC.NET
 ;
 ;       last update:    Feb 04, 2008
 ;       related version of root zone:   2008020400
 ;
 ; formerly NS.INTERNIC.NET
 ;
 .                        3600000  IN  NS    A.ROOT-SERVERS.NET.
 A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
 A.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:BA3E::2:30
 ;
 ; formerly NS1.ISI.EDU
 ;
 .                        3600000      NS    B.ROOT-SERVERS.NET.
 B.ROOT-SERVERS.NET.      3600000      A     192.228.79.201
 ;
 ; formerly C.PSI.NET
 ;
 .                        3600000      NS    C.ROOT-SERVERS.NET.
 C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
 ;
 ; formerly TERP.UMD.EDU
 ;
 .                        3600000      NS    D.ROOT-SERVERS.NET.
 D.ROOT-SERVERS.NET.      3600000      A     128.8.10.90
 ;
 ; formerly NS.NASA.GOV
 ;
 .                        3600000      NS    E.ROOT-SERVERS.NET.
 E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
 ;
 ; formerly NS.ISC.ORG
 ;
 .                        3600000      NS    F.ROOT-SERVERS.NET.
 F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
 F.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2f::f
 ;
 ; formerly NS.NIC.DDN.MIL
 ;
 .                        3600000      NS    G.ROOT-SERVERS.NET.
 G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
 ;
 ; formerly AOS.ARL.ARMY.MIL
 ;
 .                        3600000      NS    H.ROOT-SERVERS.NET.
 H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
 H.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:1::803f:235
 ;
 ; formerly NIC.NORDU.NET
 ;
 .                        3600000      NS    I.ROOT-SERVERS.NET.
 I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
 ;
 ; operated by VeriSign, Inc.
 ;
 .                        3600000      NS    J.ROOT-SERVERS.NET.
 J.ROOT-SERVERS.NET.      3600000      A     192.58.128.30
 J.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:C27::2:30
 ;
 ; operated by RIPE NCC
 ;
 .                        3600000      NS    K.ROOT-SERVERS.NET.
 K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129 
 K.ROOT-SERVERS.NET.      3600000      AAAA  2001:7fd::1
 ;
 ; operated by ICANN
 ;
 .                        3600000      NS    L.ROOT-SERVERS.NET.
 L.ROOT-SERVERS.NET.      3600000      A     199.7.83.42
 ;
 ; operated by WIDEaimer
 ;
 .                        3600000      NS    M.ROOT-SERVERS.NET.
 M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
 M.ROOT-SERVERS.NET.      3600000      AAAA  2001:dc3::35
 ; End of File

==== La zone &quot;localhost&quot; ====

 # cat db.local 
 ;
 ; BIND data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      2		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 @	IN	A	127.0.0.1
 @	IN	AAAA	::1

Peu utilisée en général, elle permet de résoudre localhost : 

La structure de ce dernier fichier est un peu déroutante au début, emplie de @ . A AAAA SOA et autres IN que nous détaillerons plus loin.
Nous remarquons que localhost possède deux IP : 127.0.0.1 (IPV4) et ::1 (IPV6) vous le saviez probablement déjà!

==== Les zones in-addr.arpa ====

Nous venons de voir les fichiers qui permettent de résoudre l'adresse d'une machine à partir de son nom. Or, il arrive que certains mécanismes réclament l'inverse, c'est à dire trouver le (les) noms associés à des IP.

Les zones in-addr.arpa servent à ça.

Voici la zone inverse pour localhost :

 # cat db.127 
 ;
 ; BIND reverse data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      1		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 1.0.0	IN	PTR	localhost.

La notation est ici inversée.
Si nous cherchons dans la zone 127 l'adresse 0.0.1 nous tomberons sur localhost =&gt; 1.0.0 IN PTR localhost.

Par exemple, Pour l'adresse 192.1.2.3, nous obtenons le nom de domaine 3.2.1.192.in-addr.arpa.

== Contenu d'une Zone ==

Une zone contient deux enregistrements obligatoires :

* SOA
* NS

=== SOA ===

SOA (Start Of Authority). Le champ SOA indique quel est le serveur « maitre ». Ce serveur peut-avoir plusieurs serveurs esclaves

 $ host -t soa google.fr
 google.fr has SOA record ns1.google.com. dns-admin.google.com. 1423257 21600 3600 1209600 300

Nous savons donc que le serveur ns1.google.com est le serveur maître du domaine google.com.
Et nous avons l'adresse email du responsable : dns-admin@google.com (l'arobase est remplacé par un point dans le fichier de zone)

L'enregistrement SOA contient un certain nombre d'enregistrements et de paramètres:

==== Le nom du primaire ====

 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici.

C'est le nom du serveur primaire pour la zone.
L'adresse de courrier électronique du responsable technique de la zone (zone-contact).
Il faut l'écrire en replaçant le @ par un point. On a alors par exemple: root@inria.fr qui devient root.inria.fr

==== A, AAAA, MX, CNAME, etc. ====

Les types d'enregistrements sont: A, AAAA, MX, CNAME, NS, SOA, PTR, TXT, HINFO, WKS, RP, MA, MB.

===== A (Address) =====

C'est l'enregistrement le plus courant. Le DNS a été créé en grande partie pour ça...
Le champ A (Address) fait correspondre un nom à une adresse IPv4.

nom     IN      A       193.10.20.30

Dans le cas d'une machine qui dispose de plus d'une adresse IP (un routeur ou une machine avec plusieurs cartes), il faut indiquer un enregistrement A par adresse, mais il faut alors que tous les enregistrements PTR pointent vers ce nom là.

===== AAAA (Address IPV6) =====

Idem au champ A, mais correspond à une adresse de type IPV6

===== NS (Name Server) =====

Le champ NS (Name Server) indique le nom d'un serveur de noms. Il peut y avoir plusieurs champs NS s'il y a plusieurs serveurs de noms...

===== CNAME (Common Name) =====

Le champ CNAME (Common Name) est utilisé pour créer des alias. Un &quot;vrai&quot; nom doit être préalablement déclaré avec la variable A, un alias peut ensuite être créé qui pointera vers celui-ci.

===== MX (Mail eXchanger) =====

Le champ MX (Mail eXchanger), est utile pour le protocole SMTP ou TXT.

Il indique pour un nom de domaine quelle est la machine à laquelle il faut envoyer le courrier pour ce domaine.

Si plusieurs enregistrements MX sont présents, il faut leur attribuer un poids... Le MTA (Mail transfert agent) tentera d'envoyer le courrier en premier à la machine ayant le poids associé le plus faible, puis ensuite dans l'ordre croissant des poids.

Si la machine qui relaie le courrier est dans la liste des MX pour le domaine, elle envoie le courrier aux machines de poids inférieur au sien.

nom     IN      MX      10      premier.relais.
        IN      MX      20      second.relais.

==== Le numéro de série de la zone ====

Il permet aux serveurs secondaires qui interrogent régulièrement le serveur primaire de chaque zone de déterminer quand la zone a été mise à jour.



==== L'intervalle entre les rafraichissements (refresh) ====

Temps, en seconde, au bout duquel les serveurs « esclaves » devront demander à rafraichir leur données pour cette zone. 3600 secondes dans l'exemple ci-dessous, soit une heure. 

 3600           ; Refresh

La valeur conseillée est 24 heures, soit 86400 secondes.

==== L'intervalle entre les rafraichissements (retry) ====

Durée, en secondes, à partir de laquelle un serveur esclave doit ré-essayer de se synchroniser en cas d'échec du rafraichissement. Ici toutes les 300 secondes, soit toutes les 5 minutes. 

 300            ; Retry

La valeur conseillée est 6 heures, soit 21600 secondes.

==== La durée d'expiration des enregistrements d'un secondaire ====

En cas d'échec des tentatives de synchronisation, indique le temps (en secondes) au bout duquel les serveurs secondaires devront considérer qu'ils ne savent plus répondre aux requêtes concernant cette zone.

 2419200          ; Expire

La valeur conseillée est de 41 jours, soit 3600000 secondes.

==== La durée de vie par défaut des enregistrements (default TTL) ====

Durée de vie de l'information fournie.
Les serveurs DNS récursifs conserveront en cache les informations récoltées pendant la durée indiquée dans ce paramètre. 0 indique que les valeurs ne doivent pas être conservées en cache.

 1600 )           ; Negative Cache TTL

La valeur conseillée est de 24 heures, soit 86400 secondes.

==== Le symbole « @ » ====

Dans un fichier de configuration de zone, ce symbole représente exactement le nom de domaine de la zone. Par exemple, lorsque nous allons créer notre zone maison.mrs, écrire : 

 maison.mrs.  IN SOA ...

Nous pourrons écrire : 

 @            IN SOA ...

=== NS (Name Server) ===

Cet enregistrement indique une délégation pour la gestion du nom donné. C'est à dire que le nom donné devient une zone, dont la gestion est déléguée au serveur indiqué en partie droite.

L'enregistrement donne le nom d'un des serveurs de noms autoritaire pour la zone, comme il y a toujours plus d'un serveur de noms pour une zone, on répète l'enregistrement NS autant de fois qu'il y a de serveurs pour la zone.

Quand pour un nom, on a des enregistrements NS, il est interdit de faire figurer dans la zone parente (celle là) d'autres enregistrements. S'il y a à faire figurer des enregistrements, il faut les mettre dans la zone fille.

zone    IN      NS      serveur.nom.de.domaine.

          IN      NS      autreServeur.nom.de.domaine.

          IN      NS      encoreUn.autreNom.de.domaine.

== Créons notre première zone ==

Maintenant que les explications indigestes sont faites... 
La meilleure façon de comprendre, est d'appliquer à son réseau local sa propre zone!

=== La zone chezmoi.ici ===

Pour cet exemple j'ai pris un nom de domaine bidon, c'est tout a fait possible, vous pouvez donner n'importe quel nom à votre Intranet!

Notre serveur s'appelle tebilepas il dispose de l'IP 192.168.1.254

Le domaine est chezmoi.ici

Nous disposons d'assez d'informations pour créer la zone chezmoi.ici

Créons d'abord dans /etc/bind/ un fichier nommé : db.chezmoi.ici qui contiendrai ceci :

 $TTL    1600
 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. (
                         2009012907       ; Serial
                         604800           ; Refresh
                         86400            ; Retry
                         2419200          ; Expire
                         1600 )           ; Negative Cache TTL
 
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.
 chezmoi.ici.    IN      A       192.168.1.254
 tebilepas  IN      A       192.168.1.254
 coucou     IN      A       192.168.1.1
 pourquoi   IN      CNAME   coucou
 tespascheztoi      IN      CNAME   forum.debian-fr.org.

Nous aurions pu écrire :
 @         IN    NS      tebilepas.chezmoi.ici.
à la place de (cela revient au même)
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.

Nous aurions aussi pu éviter les commentaires (par exemple : ;Serial) mais pour les explications ce sera plus facile.

Ce sera suffisant pour commencer!

Pour que cette zone soit prise en compte, nous devons maintenant l'inclure dans le fichier /etc/bind/named.conf.local

Ceci devrait permettre de répondre aux requêtes de type NS pour le domaine maison.mrs, de répondre aussi aux requêtes de type A pour debvirt.maison.mrs et pour test1.maison.mrs, constater aussi que les alias fonctionnent dans et hors du domaine. 

Il nous faut maintenant indiquer à bind que cette zone existe. Nous allons le faire dans le fichier /etc/bind/named.conf.local : 

 zone &quot;chezmoi.ici&quot; {
         type master;
         file &quot;/etc/bind/db.chezmoi.ici&quot;;
         };

Nous redémarrons notre serveur bind

 # service bind9 restart
 Stopping domain name service...: bind9 waiting for pid 1353 to die.
 Starting domain name service...: bind9.

== Tests ==

Maintenant que notre serveur de nom est configuré, il faut le tester...

=== Avec la commande host ===

 $ host -a chezmoi.ici localhost
 Trying &quot;chezmoi.ici&quot;
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 46986
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;chezmoi.ici.			IN	ANY
 
 ;; ANSWER SECTION:
 chezmoi.ici.		1600	IN	SOA	tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. 2009012907 604800 86400 2419200 1600
 chezmoi.ici.		1600	IN	NS	tebilepas.chezmoi.ici.
 chezmoi.ici.		1600	IN	A	192.168.1.254
 
 ;; ADDITIONAL SECTION:
 tebilepas.chezmoi.ici.	1600	IN	A	192.168.1.254
 
 Received 126 bytes from ::1#53 in 5 ms

 $ host coucou.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 coucou.chezmoi.ici has address 192.168.1.1

 $ host pourquoi.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 pourquoi.chezmoi.ici is an alias for coucou.chezmoi.ici.
 coucou.chezmoi.ici has address 192.168.1.1

 $ host ailleurs.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ailleurs.chezmoi.ici is an alias for forum.debian-fr.org.
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Comme vous avez pu le constater, votre DNS fonctionne parfaitement, il renseigne nos machines sur le réseau local, et il pourvoit à nos demandes d'IP Internet !

=== Avec la commande nslookup ===

&lt;big&gt;&lt;code text&gt;
$ nslookup
&gt; server
Default server: 192.168.0.254
Address: 192.168.0.254#53
Default server: xxx.xxx.xxx.xxx
Address: xxx.xxx.xxx.xxx#53
&gt; localhost
Server:		192.168.0.254
Address:	192.168.0.254#53

Name:	localhost
Address: 127.0.0.1
&gt; www.chezmoi.ici
Server:		192.168.0.254
Address:	192.168.0.254#53

www.chezmoi.ici	canonical name = chezmoi.ici.
Name:	chezmoi.ici
Address: 192.168.0.254
&gt; tebilepas
Server:		192.168.0.254
Address:	192.168.0.254#53

Name:	tebilepas.chezmoi.ici
Address: 192.168.0.254
&gt; www.google.com
Server:		192.168.0.254
Address:	192.168.0.254#53

Non-authoritative answer:
www.google.com	canonical name = www.l.google.com.
Name:	www.l.google.com
Address: 209.85.148.105
Name:	www.l.google.com
Address: 209.85.148.106
Name:	www.l.google.com
Address: 209.85.148.147
Name:	www.l.google.com
Address: 209.85.148.99
Name:	www.l.google.com
Address: 209.85.148.103
Name:	www.l.google.com
Address: 209.85.148.104
&gt; exit

$
&lt;/code&gt;&lt;/big&gt;

Explication. Lorsque nous tapons la commande nslookup, apparait l'invite suivante :

 $ nslookup
 &gt;

Il suffit de connaître très peu de commandes

server &gt; donne la liste des serveurs DNS qui seront interrogés, dans l'ordre;

nslookup précise à chaque demande quel serveur à répondu :
 Server:		192.168.0.254
 Address:	192.168.0.254#53

192.168.0.254, c'est nous! :)

Nom de machine ou de domaine &gt; donne la résolution du nom demandé;

exit &gt; sortir de nslookup.

=== Le fichier resolv.conf ===

Je n'en ai pas parlé jusqu'ici, mais il faut vérifier que votre fichier /etc/resolv.conf reflète bien votre configuration.
Dans l'exemple pris dans cette page, celui-ci doit contenir :

 $ cat /etc/resolv.conf 
 domain chezmoi.ici
 search chezmoi.ici
 nameserver 192.168.0.254
 nameserver xxx.xxx.xxx.xxx

C'est bon, le domaine est bien chezmoi.ici, et les DNS, sont dans l'ordre, le votre, puis celui de votre FAI.

Deux cas se présentent :

==== vous avez resolvconf installé ====

&lt;big&gt;&lt;code&gt;
apt-cache policy resolvconf
resolvconf:
  Installé : (aucun)
  Candidat : 1.46
 Table de version :
     1.46 0
        500 http://nas.isalo.org/debian/ squeeze/main amd64 Packages
        500 http://ftp.fr.debian.org/debian/ squeeze/main amd64 Packages
&lt;/code&gt;&lt;/big&gt;

Soit vous obtenez votre ip par dhcp auquel cas, rien à faire
Soit vous fixez votre ip par le fichier /etc/network/interfaces auquel cas il faut ajouter les lignes suivantes dans celui-ci :

 dns-nameservers 192.168.0.254 xxx.xxx.xxx.xxx
 dns-search chezmoi.ici

==== vous n'avez pas resolvconf installé ====

Il faut modifier vous même le fichier /etc/resolv.conf pour qu'il reflète votre configuration :

 $ cat /etc/resolv.conf 
 domain chezmoi.ici
 search chezmoi.ici
 nameserver 192.168.0.254
 nameserver xxx.xxx.xxx.xxx

== Le Round-robin ==

Le Round-robin est une répartition de charge (load balancing) équitable entre serveurs d'une ferme informatique (cluster). Chaque serveur doit traiter le même nombre de requêtes. Cela nécessite une ferme de serveurs homogènes en capacité de traitement. Cette répartition de charge peut être effectuée par le serveur DNS (Domain Name System) qui associe plusieurs adresses IP à un nom de domaine.

Exemple d'un round-robin fonctionnel :

 jeu. août 05 02:46:56 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99

 jeu. août 05 02:46:57 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147

 jeu. août 05 02:46:59 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104

 jeu. août 05 02:47:01 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

Le premier serveur de la liste n'est jamais le même, il y a une rotation...


ToDo : Conclusion

[[Category:Serveurs]]</text>
      <sha1>qfzexz0f8g431tfyx0ntf0t0qmljbtm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2507</id>
      <parentid>2506</parentid>
      <timestamp>2010-12-16T14:49:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* vous avez resolvconf installé */</comment>
      <text xml:space="preserve" bytes="27925">{{Modèle:Ébauche|DNS}}

'''Créer un serveur DNS pour votre réseau local'''

== Qu'est-ce que c'est ? ==

Un Domain Name System (ou DNS, système de noms de domaine) est un service permettant d'établir une correspondance entre une adresse IP et un nom de domaine et, plus généralement, de trouver une information à partir d'un nom de domaine.

Tous les ordinateurs pour communiquer entre eux doivent posséder une adresse IP. Ces adresses sont numériques, elles sont sous cette forme pour les adresses IPV4 : www.xxx.yyy.zzz; et de cette forme pour les adresses IPV6 : aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh.

Ces adresses sont associées à des noms, plus simples à retenir pour les humains, appelés noms de domaines. Résoudre un nom de domaine consiste à trouver l'adresse IP qui lui est associée.

Vous préférez taper google.com ou 72.14.204.103 dans votre navigateur ?

== Pourquoi faire ? ==

* Simple curiosité, pour comprendre son fonctionnement;
* Être autonome des DNS de son FAI (Fournisseur d'accès Internet) en cas d'arrêt de ceux-ci ou par souci de confidentialité;
* Résoudre les adresses de son réseau interne (Intranet) simplement, sans être obligé de remplir le fichier hosts de toutes vos machines;
* Résoudre les &quot;adresses inverses&quot;: obtenir un nom de domaine ou de machine avec une IP.

Cela fait suffisamment de raisons ? Alors continuons!

== Avertissement ==

Nous n'aborderons pas ici les problèmes de sécurité, qui peuvent être nombreux sur un serveur DNS. Le DNS que nous allons construire est destiné UNIQUEMENT à notre réseau local, il n'est pas accessible depuis Internet.

Mais ça ne l'empêchera pas d'être pleinement opérationnel et de faire la résolution de nom dont vous avez besoin, y compris pour les domaines extérieurs.

Je préciserais aussi ici qu'il vaut mieux ne pas utiliser un domaine (un [[Glossaire#TLD|TLD]]) existant sur Internet. Vous pouvez le faire, mais vous ne pourrez jamais joindre le domaine &quot;réel&quot; qui se trouve sur Internet, vous seriez automatiquement re-dirigé vers votre serveur local.

== Installation ==

 # apt-get install bind9 bind9-host bind9utils host
 
Pour information, trois bogues sur bind9... Vous pouvez tout de même installer sans soucis

 Récupération des rapports de bogue... Fait  
 Analyse des informations Trouvé/Corrigé... Fait  
 Bogues de gravité grave sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;done&gt;
  #516616 - bind9 locks up on start on mipsel and mips (Corrigé : bind9/1:9.7.0.dfsg.1-1)
    Réuni avec : 520688
 Bogues de gravité critical sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #575916 - bind9: assertion fails in name.c:1699 INSIST(offset &lt;= length)
 Bogues de gravité serious sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #584585 - file conflict with libisc50 (Corrigé : 1:9.7.0.dsfg~b3-1)
 Résumé :
  bind9 (3 bogues)

Vérifions que bind écoute bien sur toutes nos adresses :

 # netstat -ntulp | grep named
 tcp        0      0 192.168.0.1:53          0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      2832/named
 tcp6       0      0 :::53                   :::*                    LISTEN      2832/named
 tcp6       0      0 ::1:953                 :::*                    LISTEN      2832/named
 udp        0      0 192.168.0.1:53          0.0.0.0:*                           2832/named
 udp        0      0 127.0.0.1:53            0.0.0.0:*                           2832/named
 udp6       0      0 :::53                   :::*                                2832/named

== Premiers contact ==

Ça y est, notre DNS est déjà fonctionnel...
Il remplit son rôle de DNS récursif et répond à nos demandes de résolution!
Vous ne me croyez pas ?

 $ host forum.debian-fr.org 127.0.0.1
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Cette commande simple nous donne déjà des renseignements :
* forum.debian-fr.org est un alias pour www.zehome.com.
* Son IP (IPV4 est 88.165.116.107)

Plus d'information ? Passons la même commande avec l'option -v (verbose)

 $ host -v forum.debian-fr.org localhost
 Trying &quot;forum.debian-fr.org&quot;
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 11492
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;forum.debian-fr.org.		IN	A
 
 ;; ANSWER SECTION:
 forum.debian-fr.org.	37939	IN	CNAME	www.zehome.com.
 www.zehome.com.		37941	IN	A	88.165.116.107
 
 ;; AUTHORITY SECTION:
 zehome.com.		37941	IN	NS	ns.kimsufi.com.
 zehome.com.		37941	IN	NS	ns0.zehome.com.
 zehome.com.		37941	IN	NS	daboog.zehome.com.
 
 ;; ADDITIONAL SECTION:
 ns.kimsufi.com.		85955	IN	A	213.186.33.199
 
 Received 161 bytes from 127.0.0.1#53 in 1 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 62379
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	AAAA
 
 ;; AUTHORITY SECTION:
 zehome.com.		10355	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 7678
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	MX
 
 ;; AUTHORITY SECTION:
 zehome.com.		10377	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms

Avec l'option -v (verbose) c'est tout de suite plus compliqué...

Quelques remarques sur ce résultat :

* forum.debian-fr.org est un alias pour www.zehome.com;
* Son IP est 88.165.116.107;
* Ce domaine est géré par les serveurs DNS daboog.zehome.com, ns.kimsufi.com et ns0.zehome.com;
* Il ne dispose pas d'IPV6 (pas de réponse à la question IN AAAA);
* Le [[BIND#SOA|SOA]] pour ce domaine est ns0.zehome.com
* Le mail de l'administrateur est ed@zehome.com (ed.zehome.com - ici le point vaut un arobase)

La même chose, sur un domaine plus important

 $ host www.google.fr 127.0.0.1
 Using domain server:
 Name: 127.0.0.1
 Address: 127.0.0.1#53
 Aliases: 
 
 www.google.fr is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

* www.google.fr est un alias pour www.google.com
* www.google.com possède plusieurs adresses IP

Plusieurs IP pour un même domaine ? C'est possible, et cela s'appelle le [[BIND#Le_Round-robin|&quot;round-robin&quot;]]... Tourniquet en Français, cet algorithme d'ordonnancement permet d'attribuer des temps aux processus, ici, il s'agit de faire tourner les IP, afin que tous les serveurs reçoivent leur part de charge...

=== La Configuration ===

L'installation de Bind9 à générée les fichiers suivants :

 # cd /etc/bind
 lol:/etc/bind# vdir
 total 52
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.0
 -rw-r--r-- 1 root root  271 jun 10 22:58 db.127
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.255
 -rw-r--r-- 1 root root  353 jun 10 22:58 db.empty
 -rw-r--r-- 1 root root  270 jun 10 22:58 db.local
 -rw-r--r-- 1 root root 2994 aoû  3 21:30 db.root
 -rw-r--r-- 1 root bind 1125 jui 21 22:19 named.conf
 -rw-r--r-- 1 root bind  278 aoû  3 10:37 named.conf.local
 -rw-r--r-- 1 root bind  572 jun 10 22:58 named.conf.options
 -rw-r----- 1 bind bind   77 jui 20 17:25 rndc.key
 -rw-r--r-- 1 root root 1317 jun 10 22:58 zones.rfc1918

Le fichier principal (épuré des commentaires) :

 # cat /etc/bind/named.conf
 
 include &quot;/etc/bind/named.conf.options&quot;;
 
 zone &quot;.&quot; {
 	type hint;
 	file &quot;/etc/bind/db.root&quot;;
 };
 
 zone &quot;localhost&quot; {
 	type master;
 	file &quot;/etc/bind/db.local&quot;;
 };
 
 zone &quot;127.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.127&quot;;
 };
 
 zone &quot;0.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.0&quot;;
 };
 
 zone &quot;255.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.255&quot;;
 };
 
 include &quot;/etc/bind/named.conf.local&quot;;
 
 server xxx.xxx.xxx.xxx	{ };

Ce fichier renvoie vers deux fichiers de configurations : named.conf.options et named.conf.local

C'est dans ces deux fichiers qu'il faudra mettre vos configurations personnelles, le fichier named.conf ne devant en principe pas être modifié.

Le fichier named.conf déclare plusieurs zones, presque toutes destinées à la résolution inverse

A la fin du fichier, nous avons ajouté le NDS de notre FAI, au cas ou... Il est indispensable de pouvoir, quoi qu'il arrive, faire de la résolution de nom... Ce sera donc notre DNS de secours.

==== La zone &quot;.&quot; ====

La zone root est primordiale.
Ce fichier contient toutes les informations sur les root-servers sans lesquels notre DNS ne peut fonctionner.
Ce fichier évolue peu.

 lol:/etc/bind# cat db.root
 
 ;       This file holds the information on root name servers needed to
 ;       initialize cache of Internet domain name servers
 ;       (e.g. reference this file in the &quot;cache  .  &lt;file&gt;&quot;
 ;       configuration file of BIND domain name servers).
 ;
 ;       This file is made available by InterNIC 
 ;       under anonymous FTP as
 ;           file                /domain/named.root
 ;           on server           FTP.INTERNIC.NET
 ;       -OR-                    RS.INTERNIC.NET
 ;
 ;       last update:    Feb 04, 2008
 ;       related version of root zone:   2008020400
 ;
 ; formerly NS.INTERNIC.NET
 ;
 .                        3600000  IN  NS    A.ROOT-SERVERS.NET.
 A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
 A.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:BA3E::2:30
 ;
 ; formerly NS1.ISI.EDU
 ;
 .                        3600000      NS    B.ROOT-SERVERS.NET.
 B.ROOT-SERVERS.NET.      3600000      A     192.228.79.201
 ;
 ; formerly C.PSI.NET
 ;
 .                        3600000      NS    C.ROOT-SERVERS.NET.
 C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
 ;
 ; formerly TERP.UMD.EDU
 ;
 .                        3600000      NS    D.ROOT-SERVERS.NET.
 D.ROOT-SERVERS.NET.      3600000      A     128.8.10.90
 ;
 ; formerly NS.NASA.GOV
 ;
 .                        3600000      NS    E.ROOT-SERVERS.NET.
 E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
 ;
 ; formerly NS.ISC.ORG
 ;
 .                        3600000      NS    F.ROOT-SERVERS.NET.
 F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
 F.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2f::f
 ;
 ; formerly NS.NIC.DDN.MIL
 ;
 .                        3600000      NS    G.ROOT-SERVERS.NET.
 G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
 ;
 ; formerly AOS.ARL.ARMY.MIL
 ;
 .                        3600000      NS    H.ROOT-SERVERS.NET.
 H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
 H.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:1::803f:235
 ;
 ; formerly NIC.NORDU.NET
 ;
 .                        3600000      NS    I.ROOT-SERVERS.NET.
 I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
 ;
 ; operated by VeriSign, Inc.
 ;
 .                        3600000      NS    J.ROOT-SERVERS.NET.
 J.ROOT-SERVERS.NET.      3600000      A     192.58.128.30
 J.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:C27::2:30
 ;
 ; operated by RIPE NCC
 ;
 .                        3600000      NS    K.ROOT-SERVERS.NET.
 K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129 
 K.ROOT-SERVERS.NET.      3600000      AAAA  2001:7fd::1
 ;
 ; operated by ICANN
 ;
 .                        3600000      NS    L.ROOT-SERVERS.NET.
 L.ROOT-SERVERS.NET.      3600000      A     199.7.83.42
 ;
 ; operated by WIDEaimer
 ;
 .                        3600000      NS    M.ROOT-SERVERS.NET.
 M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
 M.ROOT-SERVERS.NET.      3600000      AAAA  2001:dc3::35
 ; End of File

==== La zone &quot;localhost&quot; ====

 # cat db.local 
 ;
 ; BIND data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      2		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 @	IN	A	127.0.0.1
 @	IN	AAAA	::1

Peu utilisée en général, elle permet de résoudre localhost : 

La structure de ce dernier fichier est un peu déroutante au début, emplie de @ . A AAAA SOA et autres IN que nous détaillerons plus loin.
Nous remarquons que localhost possède deux IP : 127.0.0.1 (IPV4) et ::1 (IPV6) vous le saviez probablement déjà!

==== Les zones in-addr.arpa ====

Nous venons de voir les fichiers qui permettent de résoudre l'adresse d'une machine à partir de son nom. Or, il arrive que certains mécanismes réclament l'inverse, c'est à dire trouver le (les) noms associés à des IP.

Les zones in-addr.arpa servent à ça.

Voici la zone inverse pour localhost :

 # cat db.127 
 ;
 ; BIND reverse data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      1		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 1.0.0	IN	PTR	localhost.

La notation est ici inversée.
Si nous cherchons dans la zone 127 l'adresse 0.0.1 nous tomberons sur localhost =&gt; 1.0.0 IN PTR localhost.

Par exemple, Pour l'adresse 192.1.2.3, nous obtenons le nom de domaine 3.2.1.192.in-addr.arpa.

== Contenu d'une Zone ==

Une zone contient deux enregistrements obligatoires :

* SOA
* NS

=== SOA ===

SOA (Start Of Authority). Le champ SOA indique quel est le serveur « maitre ». Ce serveur peut-avoir plusieurs serveurs esclaves

 $ host -t soa google.fr
 google.fr has SOA record ns1.google.com. dns-admin.google.com. 1423257 21600 3600 1209600 300

Nous savons donc que le serveur ns1.google.com est le serveur maître du domaine google.com.
Et nous avons l'adresse email du responsable : dns-admin@google.com (l'arobase est remplacé par un point dans le fichier de zone)

L'enregistrement SOA contient un certain nombre d'enregistrements et de paramètres:

==== Le nom du primaire ====

 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici.

C'est le nom du serveur primaire pour la zone.
L'adresse de courrier électronique du responsable technique de la zone (zone-contact).
Il faut l'écrire en replaçant le @ par un point. On a alors par exemple: root@inria.fr qui devient root.inria.fr

==== A, AAAA, MX, CNAME, etc. ====

Les types d'enregistrements sont: A, AAAA, MX, CNAME, NS, SOA, PTR, TXT, HINFO, WKS, RP, MA, MB.

===== A (Address) =====

C'est l'enregistrement le plus courant. Le DNS a été créé en grande partie pour ça...
Le champ A (Address) fait correspondre un nom à une adresse IPv4.

nom     IN      A       193.10.20.30

Dans le cas d'une machine qui dispose de plus d'une adresse IP (un routeur ou une machine avec plusieurs cartes), il faut indiquer un enregistrement A par adresse, mais il faut alors que tous les enregistrements PTR pointent vers ce nom là.

===== AAAA (Address IPV6) =====

Idem au champ A, mais correspond à une adresse de type IPV6

===== NS (Name Server) =====

Le champ NS (Name Server) indique le nom d'un serveur de noms. Il peut y avoir plusieurs champs NS s'il y a plusieurs serveurs de noms...

===== CNAME (Common Name) =====

Le champ CNAME (Common Name) est utilisé pour créer des alias. Un &quot;vrai&quot; nom doit être préalablement déclaré avec la variable A, un alias peut ensuite être créé qui pointera vers celui-ci.

===== MX (Mail eXchanger) =====

Le champ MX (Mail eXchanger), est utile pour le protocole SMTP ou TXT.

Il indique pour un nom de domaine quelle est la machine à laquelle il faut envoyer le courrier pour ce domaine.

Si plusieurs enregistrements MX sont présents, il faut leur attribuer un poids... Le MTA (Mail transfert agent) tentera d'envoyer le courrier en premier à la machine ayant le poids associé le plus faible, puis ensuite dans l'ordre croissant des poids.

Si la machine qui relaie le courrier est dans la liste des MX pour le domaine, elle envoie le courrier aux machines de poids inférieur au sien.

nom     IN      MX      10      premier.relais.
        IN      MX      20      second.relais.

==== Le numéro de série de la zone ====

Il permet aux serveurs secondaires qui interrogent régulièrement le serveur primaire de chaque zone de déterminer quand la zone a été mise à jour.



==== L'intervalle entre les rafraichissements (refresh) ====

Temps, en seconde, au bout duquel les serveurs « esclaves » devront demander à rafraichir leur données pour cette zone. 3600 secondes dans l'exemple ci-dessous, soit une heure. 

 3600           ; Refresh

La valeur conseillée est 24 heures, soit 86400 secondes.

==== L'intervalle entre les rafraichissements (retry) ====

Durée, en secondes, à partir de laquelle un serveur esclave doit ré-essayer de se synchroniser en cas d'échec du rafraichissement. Ici toutes les 300 secondes, soit toutes les 5 minutes. 

 300            ; Retry

La valeur conseillée est 6 heures, soit 21600 secondes.

==== La durée d'expiration des enregistrements d'un secondaire ====

En cas d'échec des tentatives de synchronisation, indique le temps (en secondes) au bout duquel les serveurs secondaires devront considérer qu'ils ne savent plus répondre aux requêtes concernant cette zone.

 2419200          ; Expire

La valeur conseillée est de 41 jours, soit 3600000 secondes.

==== La durée de vie par défaut des enregistrements (default TTL) ====

Durée de vie de l'information fournie.
Les serveurs DNS récursifs conserveront en cache les informations récoltées pendant la durée indiquée dans ce paramètre. 0 indique que les valeurs ne doivent pas être conservées en cache.

 1600 )           ; Negative Cache TTL

La valeur conseillée est de 24 heures, soit 86400 secondes.

==== Le symbole « @ » ====

Dans un fichier de configuration de zone, ce symbole représente exactement le nom de domaine de la zone. Par exemple, lorsque nous allons créer notre zone maison.mrs, écrire : 

 maison.mrs.  IN SOA ...

Nous pourrons écrire : 

 @            IN SOA ...

=== NS (Name Server) ===

Cet enregistrement indique une délégation pour la gestion du nom donné. C'est à dire que le nom donné devient une zone, dont la gestion est déléguée au serveur indiqué en partie droite.

L'enregistrement donne le nom d'un des serveurs de noms autoritaire pour la zone, comme il y a toujours plus d'un serveur de noms pour une zone, on répète l'enregistrement NS autant de fois qu'il y a de serveurs pour la zone.

Quand pour un nom, on a des enregistrements NS, il est interdit de faire figurer dans la zone parente (celle là) d'autres enregistrements. S'il y a à faire figurer des enregistrements, il faut les mettre dans la zone fille.

zone    IN      NS      serveur.nom.de.domaine.

          IN      NS      autreServeur.nom.de.domaine.

          IN      NS      encoreUn.autreNom.de.domaine.

== Créons notre première zone ==

Maintenant que les explications indigestes sont faites... 
La meilleure façon de comprendre, est d'appliquer à son réseau local sa propre zone!

=== La zone chezmoi.ici ===

Pour cet exemple j'ai pris un nom de domaine bidon, c'est tout a fait possible, vous pouvez donner n'importe quel nom à votre Intranet!

Notre serveur s'appelle tebilepas il dispose de l'IP 192.168.1.254

Le domaine est chezmoi.ici

Nous disposons d'assez d'informations pour créer la zone chezmoi.ici

Créons d'abord dans /etc/bind/ un fichier nommé : db.chezmoi.ici qui contiendrai ceci :

 $TTL    1600
 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. (
                         2009012907       ; Serial
                         604800           ; Refresh
                         86400            ; Retry
                         2419200          ; Expire
                         1600 )           ; Negative Cache TTL
 
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.
 chezmoi.ici.    IN      A       192.168.1.254
 tebilepas  IN      A       192.168.1.254
 coucou     IN      A       192.168.1.1
 pourquoi   IN      CNAME   coucou
 tespascheztoi      IN      CNAME   forum.debian-fr.org.

Nous aurions pu écrire :
 @         IN    NS      tebilepas.chezmoi.ici.
à la place de (cela revient au même)
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.

Nous aurions aussi pu éviter les commentaires (par exemple : ;Serial) mais pour les explications ce sera plus facile.

Ce sera suffisant pour commencer!

Pour que cette zone soit prise en compte, nous devons maintenant l'inclure dans le fichier /etc/bind/named.conf.local

Ceci devrait permettre de répondre aux requêtes de type NS pour le domaine maison.mrs, de répondre aussi aux requêtes de type A pour debvirt.maison.mrs et pour test1.maison.mrs, constater aussi que les alias fonctionnent dans et hors du domaine. 

Il nous faut maintenant indiquer à bind que cette zone existe. Nous allons le faire dans le fichier /etc/bind/named.conf.local : 

 zone &quot;chezmoi.ici&quot; {
         type master;
         file &quot;/etc/bind/db.chezmoi.ici&quot;;
         };

Nous redémarrons notre serveur bind

 # service bind9 restart
 Stopping domain name service...: bind9 waiting for pid 1353 to die.
 Starting domain name service...: bind9.

== Tests ==

Maintenant que notre serveur de nom est configuré, il faut le tester...

=== Avec la commande host ===

 $ host -a chezmoi.ici localhost
 Trying &quot;chezmoi.ici&quot;
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 46986
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;chezmoi.ici.			IN	ANY
 
 ;; ANSWER SECTION:
 chezmoi.ici.		1600	IN	SOA	tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. 2009012907 604800 86400 2419200 1600
 chezmoi.ici.		1600	IN	NS	tebilepas.chezmoi.ici.
 chezmoi.ici.		1600	IN	A	192.168.1.254
 
 ;; ADDITIONAL SECTION:
 tebilepas.chezmoi.ici.	1600	IN	A	192.168.1.254
 
 Received 126 bytes from ::1#53 in 5 ms

 $ host coucou.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 coucou.chezmoi.ici has address 192.168.1.1

 $ host pourquoi.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 pourquoi.chezmoi.ici is an alias for coucou.chezmoi.ici.
 coucou.chezmoi.ici has address 192.168.1.1

 $ host ailleurs.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ailleurs.chezmoi.ici is an alias for forum.debian-fr.org.
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Comme vous avez pu le constater, votre DNS fonctionne parfaitement, il renseigne nos machines sur le réseau local, et il pourvoit à nos demandes d'IP Internet !

=== Avec la commande nslookup ===

&lt;big&gt;&lt;code text&gt;
$ nslookup
&gt; server
Default server: 192.168.0.254
Address: 192.168.0.254#53
Default server: xxx.xxx.xxx.xxx
Address: xxx.xxx.xxx.xxx#53
&gt; localhost
Server:		192.168.0.254
Address:	192.168.0.254#53

Name:	localhost
Address: 127.0.0.1
&gt; www.chezmoi.ici
Server:		192.168.0.254
Address:	192.168.0.254#53

www.chezmoi.ici	canonical name = chezmoi.ici.
Name:	chezmoi.ici
Address: 192.168.0.254
&gt; tebilepas
Server:		192.168.0.254
Address:	192.168.0.254#53

Name:	tebilepas.chezmoi.ici
Address: 192.168.0.254
&gt; www.google.com
Server:		192.168.0.254
Address:	192.168.0.254#53

Non-authoritative answer:
www.google.com	canonical name = www.l.google.com.
Name:	www.l.google.com
Address: 209.85.148.105
Name:	www.l.google.com
Address: 209.85.148.106
Name:	www.l.google.com
Address: 209.85.148.147
Name:	www.l.google.com
Address: 209.85.148.99
Name:	www.l.google.com
Address: 209.85.148.103
Name:	www.l.google.com
Address: 209.85.148.104
&gt; exit

$
&lt;/code&gt;&lt;/big&gt;

Explication. Lorsque nous tapons la commande nslookup, apparait l'invite suivante :

 $ nslookup
 &gt;

Il suffit de connaître très peu de commandes

server &gt; donne la liste des serveurs DNS qui seront interrogés, dans l'ordre;

nslookup précise à chaque demande quel serveur à répondu :
 Server:		192.168.0.254
 Address:	192.168.0.254#53

192.168.0.254, c'est nous! :)

Nom de machine ou de domaine &gt; donne la résolution du nom demandé;

exit &gt; sortir de nslookup.

=== Le fichier resolv.conf ===

Je n'en ai pas parlé jusqu'ici, mais il faut vérifier que votre fichier /etc/resolv.conf reflète bien votre configuration.
Dans l'exemple pris dans cette page, celui-ci doit contenir :

 $ cat /etc/resolv.conf 
 domain chezmoi.ici
 search chezmoi.ici
 nameserver 192.168.0.254
 nameserver xxx.xxx.xxx.xxx

C'est bon, le domaine est bien chezmoi.ici, et les DNS, sont dans l'ordre, le votre, puis celui de votre FAI.

Deux cas se présentent :

==== vous avez resolvconf installé ====

&lt;big&gt;&lt;code&gt;
apt-cache policy resolvconf
resolvconf:
  Installé : 1.46
  Candidat : 1.46
 Table de version :
     1.46 0
        500 http://nas.isalo.org/debian/ squeeze/main amd64 Packages
        500 http://ftp.fr.debian.org/debian/ squeeze/main amd64 Packages
&lt;/code&gt;&lt;/big&gt;

Soit vous obtenez votre ip par dhcp auquel cas, rien à faire
Soit vous fixez votre ip par le fichier /etc/network/interfaces auquel cas il faut ajouter les lignes suivantes dans celui-ci :

 dns-nameservers 192.168.0.254 xxx.xxx.xxx.xxx
 dns-search chezmoi.ici

==== vous n'avez pas resolvconf installé ====

Il faut modifier vous même le fichier /etc/resolv.conf pour qu'il reflète votre configuration :

 $ cat /etc/resolv.conf 
 domain chezmoi.ici
 search chezmoi.ici
 nameserver 192.168.0.254
 nameserver xxx.xxx.xxx.xxx

== Le Round-robin ==

Le Round-robin est une répartition de charge (load balancing) équitable entre serveurs d'une ferme informatique (cluster). Chaque serveur doit traiter le même nombre de requêtes. Cela nécessite une ferme de serveurs homogènes en capacité de traitement. Cette répartition de charge peut être effectuée par le serveur DNS (Domain Name System) qui associe plusieurs adresses IP à un nom de domaine.

Exemple d'un round-robin fonctionnel :

 jeu. août 05 02:46:56 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99

 jeu. août 05 02:46:57 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147

 jeu. août 05 02:46:59 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104

 jeu. août 05 02:47:01 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

Le premier serveur de la liste n'est jamais le même, il y a une rotation...


ToDo : Conclusion

[[Category:Serveurs]]</text>
      <sha1>hk918nutaxinzhp05sjp5toy0xauusa</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2508</id>
      <parentid>2507</parentid>
      <timestamp>2010-12-16T14:59:15Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Avertissement */</comment>
      <text xml:space="preserve" bytes="28435">{{Modèle:Ébauche|DNS}}

'''Créer un serveur DNS pour votre réseau local'''

== Qu'est-ce que c'est ? ==

Un Domain Name System (ou DNS, système de noms de domaine) est un service permettant d'établir une correspondance entre une adresse IP et un nom de domaine et, plus généralement, de trouver une information à partir d'un nom de domaine.

Tous les ordinateurs pour communiquer entre eux doivent posséder une adresse IP. Ces adresses sont numériques, elles sont sous cette forme pour les adresses IPV4 : www.xxx.yyy.zzz; et de cette forme pour les adresses IPV6 : aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh.

Ces adresses sont associées à des noms, plus simples à retenir pour les humains, appelés noms de domaines. Résoudre un nom de domaine consiste à trouver l'adresse IP qui lui est associée.

Vous préférez taper google.com ou 72.14.204.103 dans votre navigateur ?

== Pourquoi faire ? ==

* Simple curiosité, pour comprendre son fonctionnement;
* Être autonome des DNS de son FAI (Fournisseur d'accès Internet) en cas d'arrêt de ceux-ci ou par souci de confidentialité;
* Résoudre les adresses de son réseau interne (Intranet) simplement, sans être obligé de remplir le fichier hosts de toutes vos machines;
* Résoudre les &quot;adresses inverses&quot;: obtenir un nom de domaine ou de machine avec une IP.

Cela fait suffisamment de raisons ? Alors continuons!

== Avertissement ==

Nous n'aborderons pas ici les problèmes de sécurité, qui peuvent être nombreux sur un serveur DNS. Le DNS que nous allons construire est destiné UNIQUEMENT à notre réseau local, il n'est pas accessible depuis Internet.

Mais ça ne l'empêchera pas d'être pleinement opérationnel et de faire la résolution de nom dont vous avez besoin, y compris pour les domaines extérieurs.

Je préciserais aussi ici qu'il vaut mieux ne pas utiliser un domaine (un [[Glossaire#TLD|TLD]]) existant sur Internet. Vous pouvez le faire, mais vous ne pourrez jamais joindre le domaine &quot;réel&quot; qui se trouve sur Internet, vous seriez automatiquement re-dirigé vers votre serveur local.

Si jamais vous décidiez de le faire, voici ce qu'une recherche avec nslookup donnerais :

 $ nslookup
 &gt; chezmoi.ici
 Server:	192.168.0.254
 Address:	192.168.0.254#53
 
 Name:	chezmoi.ici
 Address: 192.168.0.254
 &gt;

Changeons de DNS, utilisons celui de notre FAI :

 &gt; server xxx.xxx.xxx.xxx
 Default server: xxx.xxx.xxx.xxx
 Address: xxx.xxx.xxx.xxx#53
 &gt; www.chezmoi.ici
 Server:	xxx.xxx.xxx.xxx
 Address:	xxx.xxx.xxx.xxx#53
 
 Non-authoritative answer:
 Name:	www.chezmoi.ici
 Address: yyy.yyy.yyy.yyy
 &gt;

== Installation ==

 # apt-get install bind9 bind9-host bind9utils host
 
Pour information, trois bogues sur bind9... Vous pouvez tout de même installer sans soucis

 Récupération des rapports de bogue... Fait  
 Analyse des informations Trouvé/Corrigé... Fait  
 Bogues de gravité grave sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;done&gt;
  #516616 - bind9 locks up on start on mipsel and mips (Corrigé : bind9/1:9.7.0.dfsg.1-1)
    Réuni avec : 520688
 Bogues de gravité critical sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #575916 - bind9: assertion fails in name.c:1699 INSIST(offset &lt;= length)
 Bogues de gravité serious sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #584585 - file conflict with libisc50 (Corrigé : 1:9.7.0.dsfg~b3-1)
 Résumé :
  bind9 (3 bogues)

Vérifions que bind écoute bien sur toutes nos adresses :

 # netstat -ntulp | grep named
 tcp        0      0 192.168.0.1:53          0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      2832/named
 tcp6       0      0 :::53                   :::*                    LISTEN      2832/named
 tcp6       0      0 ::1:953                 :::*                    LISTEN      2832/named
 udp        0      0 192.168.0.1:53          0.0.0.0:*                           2832/named
 udp        0      0 127.0.0.1:53            0.0.0.0:*                           2832/named
 udp6       0      0 :::53                   :::*                                2832/named

== Premiers contact ==

Ça y est, notre DNS est déjà fonctionnel...
Il remplit son rôle de DNS récursif et répond à nos demandes de résolution!
Vous ne me croyez pas ?

 $ host forum.debian-fr.org 127.0.0.1
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Cette commande simple nous donne déjà des renseignements :
* forum.debian-fr.org est un alias pour www.zehome.com.
* Son IP (IPV4 est 88.165.116.107)

Plus d'information ? Passons la même commande avec l'option -v (verbose)

 $ host -v forum.debian-fr.org localhost
 Trying &quot;forum.debian-fr.org&quot;
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 11492
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;forum.debian-fr.org.		IN	A
 
 ;; ANSWER SECTION:
 forum.debian-fr.org.	37939	IN	CNAME	www.zehome.com.
 www.zehome.com.		37941	IN	A	88.165.116.107
 
 ;; AUTHORITY SECTION:
 zehome.com.		37941	IN	NS	ns.kimsufi.com.
 zehome.com.		37941	IN	NS	ns0.zehome.com.
 zehome.com.		37941	IN	NS	daboog.zehome.com.
 
 ;; ADDITIONAL SECTION:
 ns.kimsufi.com.		85955	IN	A	213.186.33.199
 
 Received 161 bytes from 127.0.0.1#53 in 1 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 62379
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	AAAA
 
 ;; AUTHORITY SECTION:
 zehome.com.		10355	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 7678
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	MX
 
 ;; AUTHORITY SECTION:
 zehome.com.		10377	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms

Avec l'option -v (verbose) c'est tout de suite plus compliqué...

Quelques remarques sur ce résultat :

* forum.debian-fr.org est un alias pour www.zehome.com;
* Son IP est 88.165.116.107;
* Ce domaine est géré par les serveurs DNS daboog.zehome.com, ns.kimsufi.com et ns0.zehome.com;
* Il ne dispose pas d'IPV6 (pas de réponse à la question IN AAAA);
* Le [[BIND#SOA|SOA]] pour ce domaine est ns0.zehome.com
* Le mail de l'administrateur est ed@zehome.com (ed.zehome.com - ici le point vaut un arobase)

La même chose, sur un domaine plus important

 $ host www.google.fr 127.0.0.1
 Using domain server:
 Name: 127.0.0.1
 Address: 127.0.0.1#53
 Aliases: 
 
 www.google.fr is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

* www.google.fr est un alias pour www.google.com
* www.google.com possède plusieurs adresses IP

Plusieurs IP pour un même domaine ? C'est possible, et cela s'appelle le [[BIND#Le_Round-robin|&quot;round-robin&quot;]]... Tourniquet en Français, cet algorithme d'ordonnancement permet d'attribuer des temps aux processus, ici, il s'agit de faire tourner les IP, afin que tous les serveurs reçoivent leur part de charge...

=== La Configuration ===

L'installation de Bind9 à générée les fichiers suivants :

 # cd /etc/bind
 lol:/etc/bind# vdir
 total 52
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.0
 -rw-r--r-- 1 root root  271 jun 10 22:58 db.127
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.255
 -rw-r--r-- 1 root root  353 jun 10 22:58 db.empty
 -rw-r--r-- 1 root root  270 jun 10 22:58 db.local
 -rw-r--r-- 1 root root 2994 aoû  3 21:30 db.root
 -rw-r--r-- 1 root bind 1125 jui 21 22:19 named.conf
 -rw-r--r-- 1 root bind  278 aoû  3 10:37 named.conf.local
 -rw-r--r-- 1 root bind  572 jun 10 22:58 named.conf.options
 -rw-r----- 1 bind bind   77 jui 20 17:25 rndc.key
 -rw-r--r-- 1 root root 1317 jun 10 22:58 zones.rfc1918

Le fichier principal (épuré des commentaires) :

 # cat /etc/bind/named.conf
 
 include &quot;/etc/bind/named.conf.options&quot;;
 
 zone &quot;.&quot; {
 	type hint;
 	file &quot;/etc/bind/db.root&quot;;
 };
 
 zone &quot;localhost&quot; {
 	type master;
 	file &quot;/etc/bind/db.local&quot;;
 };
 
 zone &quot;127.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.127&quot;;
 };
 
 zone &quot;0.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.0&quot;;
 };
 
 zone &quot;255.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.255&quot;;
 };
 
 include &quot;/etc/bind/named.conf.local&quot;;
 
 server xxx.xxx.xxx.xxx	{ };

Ce fichier renvoie vers deux fichiers de configurations : named.conf.options et named.conf.local

C'est dans ces deux fichiers qu'il faudra mettre vos configurations personnelles, le fichier named.conf ne devant en principe pas être modifié.

Le fichier named.conf déclare plusieurs zones, presque toutes destinées à la résolution inverse

A la fin du fichier, nous avons ajouté le NDS de notre FAI, au cas ou... Il est indispensable de pouvoir, quoi qu'il arrive, faire de la résolution de nom... Ce sera donc notre DNS de secours.

==== La zone &quot;.&quot; ====

La zone root est primordiale.
Ce fichier contient toutes les informations sur les root-servers sans lesquels notre DNS ne peut fonctionner.
Ce fichier évolue peu.

 lol:/etc/bind# cat db.root
 
 ;       This file holds the information on root name servers needed to
 ;       initialize cache of Internet domain name servers
 ;       (e.g. reference this file in the &quot;cache  .  &lt;file&gt;&quot;
 ;       configuration file of BIND domain name servers).
 ;
 ;       This file is made available by InterNIC 
 ;       under anonymous FTP as
 ;           file                /domain/named.root
 ;           on server           FTP.INTERNIC.NET
 ;       -OR-                    RS.INTERNIC.NET
 ;
 ;       last update:    Feb 04, 2008
 ;       related version of root zone:   2008020400
 ;
 ; formerly NS.INTERNIC.NET
 ;
 .                        3600000  IN  NS    A.ROOT-SERVERS.NET.
 A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
 A.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:BA3E::2:30
 ;
 ; formerly NS1.ISI.EDU
 ;
 .                        3600000      NS    B.ROOT-SERVERS.NET.
 B.ROOT-SERVERS.NET.      3600000      A     192.228.79.201
 ;
 ; formerly C.PSI.NET
 ;
 .                        3600000      NS    C.ROOT-SERVERS.NET.
 C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
 ;
 ; formerly TERP.UMD.EDU
 ;
 .                        3600000      NS    D.ROOT-SERVERS.NET.
 D.ROOT-SERVERS.NET.      3600000      A     128.8.10.90
 ;
 ; formerly NS.NASA.GOV
 ;
 .                        3600000      NS    E.ROOT-SERVERS.NET.
 E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
 ;
 ; formerly NS.ISC.ORG
 ;
 .                        3600000      NS    F.ROOT-SERVERS.NET.
 F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
 F.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2f::f
 ;
 ; formerly NS.NIC.DDN.MIL
 ;
 .                        3600000      NS    G.ROOT-SERVERS.NET.
 G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
 ;
 ; formerly AOS.ARL.ARMY.MIL
 ;
 .                        3600000      NS    H.ROOT-SERVERS.NET.
 H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
 H.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:1::803f:235
 ;
 ; formerly NIC.NORDU.NET
 ;
 .                        3600000      NS    I.ROOT-SERVERS.NET.
 I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
 ;
 ; operated by VeriSign, Inc.
 ;
 .                        3600000      NS    J.ROOT-SERVERS.NET.
 J.ROOT-SERVERS.NET.      3600000      A     192.58.128.30
 J.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:C27::2:30
 ;
 ; operated by RIPE NCC
 ;
 .                        3600000      NS    K.ROOT-SERVERS.NET.
 K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129 
 K.ROOT-SERVERS.NET.      3600000      AAAA  2001:7fd::1
 ;
 ; operated by ICANN
 ;
 .                        3600000      NS    L.ROOT-SERVERS.NET.
 L.ROOT-SERVERS.NET.      3600000      A     199.7.83.42
 ;
 ; operated by WIDEaimer
 ;
 .                        3600000      NS    M.ROOT-SERVERS.NET.
 M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
 M.ROOT-SERVERS.NET.      3600000      AAAA  2001:dc3::35
 ; End of File

==== La zone &quot;localhost&quot; ====

 # cat db.local 
 ;
 ; BIND data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      2		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 @	IN	A	127.0.0.1
 @	IN	AAAA	::1

Peu utilisée en général, elle permet de résoudre localhost : 

La structure de ce dernier fichier est un peu déroutante au début, emplie de @ . A AAAA SOA et autres IN que nous détaillerons plus loin.
Nous remarquons que localhost possède deux IP : 127.0.0.1 (IPV4) et ::1 (IPV6) vous le saviez probablement déjà!

==== Les zones in-addr.arpa ====

Nous venons de voir les fichiers qui permettent de résoudre l'adresse d'une machine à partir de son nom. Or, il arrive que certains mécanismes réclament l'inverse, c'est à dire trouver le (les) noms associés à des IP.

Les zones in-addr.arpa servent à ça.

Voici la zone inverse pour localhost :

 # cat db.127 
 ;
 ; BIND reverse data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      1		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 1.0.0	IN	PTR	localhost.

La notation est ici inversée.
Si nous cherchons dans la zone 127 l'adresse 0.0.1 nous tomberons sur localhost =&gt; 1.0.0 IN PTR localhost.

Par exemple, Pour l'adresse 192.1.2.3, nous obtenons le nom de domaine 3.2.1.192.in-addr.arpa.

== Contenu d'une Zone ==

Une zone contient deux enregistrements obligatoires :

* SOA
* NS

=== SOA ===

SOA (Start Of Authority). Le champ SOA indique quel est le serveur « maitre ». Ce serveur peut-avoir plusieurs serveurs esclaves

 $ host -t soa google.fr
 google.fr has SOA record ns1.google.com. dns-admin.google.com. 1423257 21600 3600 1209600 300

Nous savons donc que le serveur ns1.google.com est le serveur maître du domaine google.com.
Et nous avons l'adresse email du responsable : dns-admin@google.com (l'arobase est remplacé par un point dans le fichier de zone)

L'enregistrement SOA contient un certain nombre d'enregistrements et de paramètres:

==== Le nom du primaire ====

 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici.

C'est le nom du serveur primaire pour la zone.
L'adresse de courrier électronique du responsable technique de la zone (zone-contact).
Il faut l'écrire en replaçant le @ par un point. On a alors par exemple: root@inria.fr qui devient root.inria.fr

==== A, AAAA, MX, CNAME, etc. ====

Les types d'enregistrements sont: A, AAAA, MX, CNAME, NS, SOA, PTR, TXT, HINFO, WKS, RP, MA, MB.

===== A (Address) =====

C'est l'enregistrement le plus courant. Le DNS a été créé en grande partie pour ça...
Le champ A (Address) fait correspondre un nom à une adresse IPv4.

nom     IN      A       193.10.20.30

Dans le cas d'une machine qui dispose de plus d'une adresse IP (un routeur ou une machine avec plusieurs cartes), il faut indiquer un enregistrement A par adresse, mais il faut alors que tous les enregistrements PTR pointent vers ce nom là.

===== AAAA (Address IPV6) =====

Idem au champ A, mais correspond à une adresse de type IPV6

===== NS (Name Server) =====

Le champ NS (Name Server) indique le nom d'un serveur de noms. Il peut y avoir plusieurs champs NS s'il y a plusieurs serveurs de noms...

===== CNAME (Common Name) =====

Le champ CNAME (Common Name) est utilisé pour créer des alias. Un &quot;vrai&quot; nom doit être préalablement déclaré avec la variable A, un alias peut ensuite être créé qui pointera vers celui-ci.

===== MX (Mail eXchanger) =====

Le champ MX (Mail eXchanger), est utile pour le protocole SMTP ou TXT.

Il indique pour un nom de domaine quelle est la machine à laquelle il faut envoyer le courrier pour ce domaine.

Si plusieurs enregistrements MX sont présents, il faut leur attribuer un poids... Le MTA (Mail transfert agent) tentera d'envoyer le courrier en premier à la machine ayant le poids associé le plus faible, puis ensuite dans l'ordre croissant des poids.

Si la machine qui relaie le courrier est dans la liste des MX pour le domaine, elle envoie le courrier aux machines de poids inférieur au sien.

nom     IN      MX      10      premier.relais.
        IN      MX      20      second.relais.

==== Le numéro de série de la zone ====

Il permet aux serveurs secondaires qui interrogent régulièrement le serveur primaire de chaque zone de déterminer quand la zone a été mise à jour.



==== L'intervalle entre les rafraichissements (refresh) ====

Temps, en seconde, au bout duquel les serveurs « esclaves » devront demander à rafraichir leur données pour cette zone. 3600 secondes dans l'exemple ci-dessous, soit une heure. 

 3600           ; Refresh

La valeur conseillée est 24 heures, soit 86400 secondes.

==== L'intervalle entre les rafraichissements (retry) ====

Durée, en secondes, à partir de laquelle un serveur esclave doit ré-essayer de se synchroniser en cas d'échec du rafraichissement. Ici toutes les 300 secondes, soit toutes les 5 minutes. 

 300            ; Retry

La valeur conseillée est 6 heures, soit 21600 secondes.

==== La durée d'expiration des enregistrements d'un secondaire ====

En cas d'échec des tentatives de synchronisation, indique le temps (en secondes) au bout duquel les serveurs secondaires devront considérer qu'ils ne savent plus répondre aux requêtes concernant cette zone.

 2419200          ; Expire

La valeur conseillée est de 41 jours, soit 3600000 secondes.

==== La durée de vie par défaut des enregistrements (default TTL) ====

Durée de vie de l'information fournie.
Les serveurs DNS récursifs conserveront en cache les informations récoltées pendant la durée indiquée dans ce paramètre. 0 indique que les valeurs ne doivent pas être conservées en cache.

 1600 )           ; Negative Cache TTL

La valeur conseillée est de 24 heures, soit 86400 secondes.

==== Le symbole « @ » ====

Dans un fichier de configuration de zone, ce symbole représente exactement le nom de domaine de la zone. Par exemple, lorsque nous allons créer notre zone maison.mrs, écrire : 

 maison.mrs.  IN SOA ...

Nous pourrons écrire : 

 @            IN SOA ...

=== NS (Name Server) ===

Cet enregistrement indique une délégation pour la gestion du nom donné. C'est à dire que le nom donné devient une zone, dont la gestion est déléguée au serveur indiqué en partie droite.

L'enregistrement donne le nom d'un des serveurs de noms autoritaire pour la zone, comme il y a toujours plus d'un serveur de noms pour une zone, on répète l'enregistrement NS autant de fois qu'il y a de serveurs pour la zone.

Quand pour un nom, on a des enregistrements NS, il est interdit de faire figurer dans la zone parente (celle là) d'autres enregistrements. S'il y a à faire figurer des enregistrements, il faut les mettre dans la zone fille.

zone    IN      NS      serveur.nom.de.domaine.

          IN      NS      autreServeur.nom.de.domaine.

          IN      NS      encoreUn.autreNom.de.domaine.

== Créons notre première zone ==

Maintenant que les explications indigestes sont faites... 
La meilleure façon de comprendre, est d'appliquer à son réseau local sa propre zone!

=== La zone chezmoi.ici ===

Pour cet exemple j'ai pris un nom de domaine bidon, c'est tout a fait possible, vous pouvez donner n'importe quel nom à votre Intranet!

Notre serveur s'appelle tebilepas il dispose de l'IP 192.168.1.254

Le domaine est chezmoi.ici

Nous disposons d'assez d'informations pour créer la zone chezmoi.ici

Créons d'abord dans /etc/bind/ un fichier nommé : db.chezmoi.ici qui contiendrai ceci :

 $TTL    1600
 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. (
                         2009012907       ; Serial
                         604800           ; Refresh
                         86400            ; Retry
                         2419200          ; Expire
                         1600 )           ; Negative Cache TTL
 
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.
 chezmoi.ici.    IN      A       192.168.1.254
 tebilepas  IN      A       192.168.1.254
 coucou     IN      A       192.168.1.1
 pourquoi   IN      CNAME   coucou
 tespascheztoi      IN      CNAME   forum.debian-fr.org.

Nous aurions pu écrire :
 @         IN    NS      tebilepas.chezmoi.ici.
à la place de (cela revient au même)
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.

Nous aurions aussi pu éviter les commentaires (par exemple : ;Serial) mais pour les explications ce sera plus facile.

Ce sera suffisant pour commencer!

Pour que cette zone soit prise en compte, nous devons maintenant l'inclure dans le fichier /etc/bind/named.conf.local

Ceci devrait permettre de répondre aux requêtes de type NS pour le domaine maison.mrs, de répondre aussi aux requêtes de type A pour debvirt.maison.mrs et pour test1.maison.mrs, constater aussi que les alias fonctionnent dans et hors du domaine. 

Il nous faut maintenant indiquer à bind que cette zone existe. Nous allons le faire dans le fichier /etc/bind/named.conf.local : 

 zone &quot;chezmoi.ici&quot; {
         type master;
         file &quot;/etc/bind/db.chezmoi.ici&quot;;
         };

Nous redémarrons notre serveur bind

 # service bind9 restart
 Stopping domain name service...: bind9 waiting for pid 1353 to die.
 Starting domain name service...: bind9.

== Tests ==

Maintenant que notre serveur de nom est configuré, il faut le tester...

=== Avec la commande host ===

 $ host -a chezmoi.ici localhost
 Trying &quot;chezmoi.ici&quot;
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 46986
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;chezmoi.ici.			IN	ANY
 
 ;; ANSWER SECTION:
 chezmoi.ici.		1600	IN	SOA	tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. 2009012907 604800 86400 2419200 1600
 chezmoi.ici.		1600	IN	NS	tebilepas.chezmoi.ici.
 chezmoi.ici.		1600	IN	A	192.168.1.254
 
 ;; ADDITIONAL SECTION:
 tebilepas.chezmoi.ici.	1600	IN	A	192.168.1.254
 
 Received 126 bytes from ::1#53 in 5 ms

 $ host coucou.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 coucou.chezmoi.ici has address 192.168.1.1

 $ host pourquoi.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 pourquoi.chezmoi.ici is an alias for coucou.chezmoi.ici.
 coucou.chezmoi.ici has address 192.168.1.1

 $ host ailleurs.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ailleurs.chezmoi.ici is an alias for forum.debian-fr.org.
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Comme vous avez pu le constater, votre DNS fonctionne parfaitement, il renseigne nos machines sur le réseau local, et il pourvoit à nos demandes d'IP Internet !

=== Avec la commande nslookup ===

&lt;big&gt;&lt;code text&gt;
$ nslookup
&gt; server
Default server: 192.168.0.254
Address: 192.168.0.254#53
Default server: xxx.xxx.xxx.xxx
Address: xxx.xxx.xxx.xxx#53
&gt; localhost
Server:		192.168.0.254
Address:	192.168.0.254#53

Name:	localhost
Address: 127.0.0.1
&gt; www.chezmoi.ici
Server:		192.168.0.254
Address:	192.168.0.254#53

www.chezmoi.ici	canonical name = chezmoi.ici.
Name:	chezmoi.ici
Address: 192.168.0.254
&gt; tebilepas
Server:		192.168.0.254
Address:	192.168.0.254#53

Name:	tebilepas.chezmoi.ici
Address: 192.168.0.254
&gt; www.google.com
Server:		192.168.0.254
Address:	192.168.0.254#53

Non-authoritative answer:
www.google.com	canonical name = www.l.google.com.
Name:	www.l.google.com
Address: 209.85.148.105
Name:	www.l.google.com
Address: 209.85.148.106
Name:	www.l.google.com
Address: 209.85.148.147
Name:	www.l.google.com
Address: 209.85.148.99
Name:	www.l.google.com
Address: 209.85.148.103
Name:	www.l.google.com
Address: 209.85.148.104
&gt; exit

$
&lt;/code&gt;&lt;/big&gt;

Explication. Lorsque nous tapons la commande nslookup, apparait l'invite suivante :

 $ nslookup
 &gt;

Il suffit de connaître très peu de commandes

server &gt; donne la liste des serveurs DNS qui seront interrogés, dans l'ordre;

nslookup précise à chaque demande quel serveur à répondu :
 Server:		192.168.0.254
 Address:	192.168.0.254#53

192.168.0.254, c'est nous! :)

Nom de machine ou de domaine &gt; donne la résolution du nom demandé;

exit &gt; sortir de nslookup.

=== Le fichier resolv.conf ===

Je n'en ai pas parlé jusqu'ici, mais il faut vérifier que votre fichier /etc/resolv.conf reflète bien votre configuration.
Dans l'exemple pris dans cette page, celui-ci doit contenir :

 $ cat /etc/resolv.conf 
 domain chezmoi.ici
 search chezmoi.ici
 nameserver 192.168.0.254
 nameserver xxx.xxx.xxx.xxx

C'est bon, le domaine est bien chezmoi.ici, et les DNS, sont dans l'ordre, le votre, puis celui de votre FAI.

Deux cas se présentent :

==== vous avez resolvconf installé ====

&lt;big&gt;&lt;code&gt;
apt-cache policy resolvconf
resolvconf:
  Installé : 1.46
  Candidat : 1.46
 Table de version :
     1.46 0
        500 http://nas.isalo.org/debian/ squeeze/main amd64 Packages
        500 http://ftp.fr.debian.org/debian/ squeeze/main amd64 Packages
&lt;/code&gt;&lt;/big&gt;

Soit vous obtenez votre ip par dhcp auquel cas, rien à faire
Soit vous fixez votre ip par le fichier /etc/network/interfaces auquel cas il faut ajouter les lignes suivantes dans celui-ci :

 dns-nameservers 192.168.0.254 xxx.xxx.xxx.xxx
 dns-search chezmoi.ici

==== vous n'avez pas resolvconf installé ====

Il faut modifier vous même le fichier /etc/resolv.conf pour qu'il reflète votre configuration :

 $ cat /etc/resolv.conf 
 domain chezmoi.ici
 search chezmoi.ici
 nameserver 192.168.0.254
 nameserver xxx.xxx.xxx.xxx

== Le Round-robin ==

Le Round-robin est une répartition de charge (load balancing) équitable entre serveurs d'une ferme informatique (cluster). Chaque serveur doit traiter le même nombre de requêtes. Cela nécessite une ferme de serveurs homogènes en capacité de traitement. Cette répartition de charge peut être effectuée par le serveur DNS (Domain Name System) qui associe plusieurs adresses IP à un nom de domaine.

Exemple d'un round-robin fonctionnel :

 jeu. août 05 02:46:56 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99

 jeu. août 05 02:46:57 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147

 jeu. août 05 02:46:59 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104

 jeu. août 05 02:47:01 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

Le premier serveur de la liste n'est jamais le même, il y a une rotation...


ToDo : Conclusion

[[Category:Serveurs]]</text>
      <sha1>1uubl0k74qbtw00b25vj000nh8ipr3p</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2509</id>
      <parentid>2508</parentid>
      <timestamp>2010-12-17T04:24:24Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Avertissement */</comment>
      <text xml:space="preserve" bytes="27961">{{Modèle:Ébauche|DNS}}

'''Créer un serveur DNS pour votre réseau local'''

== Qu'est-ce que c'est ? ==

Un Domain Name System (ou DNS, système de noms de domaine) est un service permettant d'établir une correspondance entre une adresse IP et un nom de domaine et, plus généralement, de trouver une information à partir d'un nom de domaine.

Tous les ordinateurs pour communiquer entre eux doivent posséder une adresse IP. Ces adresses sont numériques, elles sont sous cette forme pour les adresses IPV4 : www.xxx.yyy.zzz; et de cette forme pour les adresses IPV6 : aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh.

Ces adresses sont associées à des noms, plus simples à retenir pour les humains, appelés noms de domaines. Résoudre un nom de domaine consiste à trouver l'adresse IP qui lui est associée.

Vous préférez taper google.com ou 72.14.204.103 dans votre navigateur ?

== Pourquoi faire ? ==

* Simple curiosité, pour comprendre son fonctionnement;
* Être autonome des DNS de son FAI (Fournisseur d'accès Internet) en cas d'arrêt de ceux-ci ou par souci de confidentialité;
* Résoudre les adresses de son réseau interne (Intranet) simplement, sans être obligé de remplir le fichier hosts de toutes vos machines;
* Résoudre les &quot;adresses inverses&quot;: obtenir un nom de domaine ou de machine avec une IP.

Cela fait suffisamment de raisons ? Alors continuons!

== Avertissement ==

Nous n'aborderons pas ici les problèmes de sécurité, qui peuvent être nombreux sur un serveur DNS. Le DNS que nous allons construire est destiné UNIQUEMENT à notre réseau local, il n'est pas accessible depuis Internet.

Mais ça ne l'empêchera pas d'être pleinement opérationnel et de faire la résolution de nom dont vous avez besoin, y compris pour les domaines extérieurs.

Je préciserais aussi ici qu'il vaut mieux ne pas utiliser un domaine (un [[Glossaire#TLD|TLD]]) existant sur Internet. Vous pouvez le faire, mais vous ne pourrez jamais joindre le domaine &quot;réel&quot; qui se trouve sur Internet (sauf à connaître son adresse IP), vous seriez automatiquement re-dirigé vers votre serveur local.

== Installation ==

 # apt-get install bind9 bind9-host bind9utils host
 
Pour information, trois bogues sur bind9... Vous pouvez tout de même installer sans soucis

 Récupération des rapports de bogue... Fait  
 Analyse des informations Trouvé/Corrigé... Fait  
 Bogues de gravité grave sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;done&gt;
  #516616 - bind9 locks up on start on mipsel and mips (Corrigé : bind9/1:9.7.0.dfsg.1-1)
    Réuni avec : 520688
 Bogues de gravité critical sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #575916 - bind9: assertion fails in name.c:1699 INSIST(offset &lt;= length)
 Bogues de gravité serious sur bind9 ( -&gt; 1:9.6.ESV.R1+dfsg-0+lenny2) &lt;pending&gt;
  #584585 - file conflict with libisc50 (Corrigé : 1:9.7.0.dsfg~b3-1)
 Résumé :
  bind9 (3 bogues)

Vérifions que bind écoute bien sur toutes nos adresses :

 # netstat -ntulp | grep named
 tcp        0      0 192.168.0.1:53          0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      2832/named
 tcp6       0      0 :::53                   :::*                    LISTEN      2832/named
 tcp6       0      0 ::1:953                 :::*                    LISTEN      2832/named
 udp        0      0 192.168.0.1:53          0.0.0.0:*                           2832/named
 udp        0      0 127.0.0.1:53            0.0.0.0:*                           2832/named
 udp6       0      0 :::53                   :::*                                2832/named

== Premiers contact ==

Ça y est, notre DNS est déjà fonctionnel...
Il remplit son rôle de DNS récursif et répond à nos demandes de résolution!
Vous ne me croyez pas ?

 $ host forum.debian-fr.org 127.0.0.1
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Cette commande simple nous donne déjà des renseignements :
* forum.debian-fr.org est un alias pour www.zehome.com.
* Son IP (IPV4 est 88.165.116.107)

Plus d'information ? Passons la même commande avec l'option -v (verbose)

 $ host -v forum.debian-fr.org localhost
 Trying &quot;forum.debian-fr.org&quot;
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 11492
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;forum.debian-fr.org.		IN	A
 
 ;; ANSWER SECTION:
 forum.debian-fr.org.	37939	IN	CNAME	www.zehome.com.
 www.zehome.com.		37941	IN	A	88.165.116.107
 
 ;; AUTHORITY SECTION:
 zehome.com.		37941	IN	NS	ns.kimsufi.com.
 zehome.com.		37941	IN	NS	ns0.zehome.com.
 zehome.com.		37941	IN	NS	daboog.zehome.com.
 
 ;; ADDITIONAL SECTION:
 ns.kimsufi.com.		85955	IN	A	213.186.33.199
 
 Received 161 bytes from 127.0.0.1#53 in 1 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 62379
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	AAAA
 
 ;; AUTHORITY SECTION:
 zehome.com.		10355	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 7678
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	MX
 
 ;; AUTHORITY SECTION:
 zehome.com.		10377	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms

Avec l'option -v (verbose) c'est tout de suite plus compliqué...

Quelques remarques sur ce résultat :

* forum.debian-fr.org est un alias pour www.zehome.com;
* Son IP est 88.165.116.107;
* Ce domaine est géré par les serveurs DNS daboog.zehome.com, ns.kimsufi.com et ns0.zehome.com;
* Il ne dispose pas d'IPV6 (pas de réponse à la question IN AAAA);
* Le [[BIND#SOA|SOA]] pour ce domaine est ns0.zehome.com
* Le mail de l'administrateur est ed@zehome.com (ed.zehome.com - ici le point vaut un arobase)

La même chose, sur un domaine plus important

 $ host www.google.fr 127.0.0.1
 Using domain server:
 Name: 127.0.0.1
 Address: 127.0.0.1#53
 Aliases: 
 
 www.google.fr is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

* www.google.fr est un alias pour www.google.com
* www.google.com possède plusieurs adresses IP

Plusieurs IP pour un même domaine ? C'est possible, et cela s'appelle le [[BIND#Le_Round-robin|&quot;round-robin&quot;]]... Tourniquet en Français, cet algorithme d'ordonnancement permet d'attribuer des temps aux processus, ici, il s'agit de faire tourner les IP, afin que tous les serveurs reçoivent leur part de charge...

=== La Configuration ===

L'installation de Bind9 à générée les fichiers suivants :

 # cd /etc/bind
 lol:/etc/bind# vdir
 total 52
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.0
 -rw-r--r-- 1 root root  271 jun 10 22:58 db.127
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.255
 -rw-r--r-- 1 root root  353 jun 10 22:58 db.empty
 -rw-r--r-- 1 root root  270 jun 10 22:58 db.local
 -rw-r--r-- 1 root root 2994 aoû  3 21:30 db.root
 -rw-r--r-- 1 root bind 1125 jui 21 22:19 named.conf
 -rw-r--r-- 1 root bind  278 aoû  3 10:37 named.conf.local
 -rw-r--r-- 1 root bind  572 jun 10 22:58 named.conf.options
 -rw-r----- 1 bind bind   77 jui 20 17:25 rndc.key
 -rw-r--r-- 1 root root 1317 jun 10 22:58 zones.rfc1918

Le fichier principal (épuré des commentaires) :

 # cat /etc/bind/named.conf
 
 include &quot;/etc/bind/named.conf.options&quot;;
 
 zone &quot;.&quot; {
 	type hint;
 	file &quot;/etc/bind/db.root&quot;;
 };
 
 zone &quot;localhost&quot; {
 	type master;
 	file &quot;/etc/bind/db.local&quot;;
 };
 
 zone &quot;127.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.127&quot;;
 };
 
 zone &quot;0.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.0&quot;;
 };
 
 zone &quot;255.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.255&quot;;
 };
 
 include &quot;/etc/bind/named.conf.local&quot;;
 
 server xxx.xxx.xxx.xxx	{ };

Ce fichier renvoie vers deux fichiers de configurations : named.conf.options et named.conf.local

C'est dans ces deux fichiers qu'il faudra mettre vos configurations personnelles, le fichier named.conf ne devant en principe pas être modifié.

Le fichier named.conf déclare plusieurs zones, presque toutes destinées à la résolution inverse

A la fin du fichier, nous avons ajouté le NDS de notre FAI, au cas ou... Il est indispensable de pouvoir, quoi qu'il arrive, faire de la résolution de nom... Ce sera donc notre DNS de secours.

==== La zone &quot;.&quot; ====

La zone root est primordiale.
Ce fichier contient toutes les informations sur les root-servers sans lesquels notre DNS ne peut fonctionner.
Ce fichier évolue peu.

 lol:/etc/bind# cat db.root
 
 ;       This file holds the information on root name servers needed to
 ;       initialize cache of Internet domain name servers
 ;       (e.g. reference this file in the &quot;cache  .  &lt;file&gt;&quot;
 ;       configuration file of BIND domain name servers).
 ;
 ;       This file is made available by InterNIC 
 ;       under anonymous FTP as
 ;           file                /domain/named.root
 ;           on server           FTP.INTERNIC.NET
 ;       -OR-                    RS.INTERNIC.NET
 ;
 ;       last update:    Feb 04, 2008
 ;       related version of root zone:   2008020400
 ;
 ; formerly NS.INTERNIC.NET
 ;
 .                        3600000  IN  NS    A.ROOT-SERVERS.NET.
 A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
 A.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:BA3E::2:30
 ;
 ; formerly NS1.ISI.EDU
 ;
 .                        3600000      NS    B.ROOT-SERVERS.NET.
 B.ROOT-SERVERS.NET.      3600000      A     192.228.79.201
 ;
 ; formerly C.PSI.NET
 ;
 .                        3600000      NS    C.ROOT-SERVERS.NET.
 C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
 ;
 ; formerly TERP.UMD.EDU
 ;
 .                        3600000      NS    D.ROOT-SERVERS.NET.
 D.ROOT-SERVERS.NET.      3600000      A     128.8.10.90
 ;
 ; formerly NS.NASA.GOV
 ;
 .                        3600000      NS    E.ROOT-SERVERS.NET.
 E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
 ;
 ; formerly NS.ISC.ORG
 ;
 .                        3600000      NS    F.ROOT-SERVERS.NET.
 F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
 F.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2f::f
 ;
 ; formerly NS.NIC.DDN.MIL
 ;
 .                        3600000      NS    G.ROOT-SERVERS.NET.
 G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
 ;
 ; formerly AOS.ARL.ARMY.MIL
 ;
 .                        3600000      NS    H.ROOT-SERVERS.NET.
 H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
 H.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:1::803f:235
 ;
 ; formerly NIC.NORDU.NET
 ;
 .                        3600000      NS    I.ROOT-SERVERS.NET.
 I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
 ;
 ; operated by VeriSign, Inc.
 ;
 .                        3600000      NS    J.ROOT-SERVERS.NET.
 J.ROOT-SERVERS.NET.      3600000      A     192.58.128.30
 J.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:C27::2:30
 ;
 ; operated by RIPE NCC
 ;
 .                        3600000      NS    K.ROOT-SERVERS.NET.
 K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129 
 K.ROOT-SERVERS.NET.      3600000      AAAA  2001:7fd::1
 ;
 ; operated by ICANN
 ;
 .                        3600000      NS    L.ROOT-SERVERS.NET.
 L.ROOT-SERVERS.NET.      3600000      A     199.7.83.42
 ;
 ; operated by WIDEaimer
 ;
 .                        3600000      NS    M.ROOT-SERVERS.NET.
 M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
 M.ROOT-SERVERS.NET.      3600000      AAAA  2001:dc3::35
 ; End of File

==== La zone &quot;localhost&quot; ====

 # cat db.local 
 ;
 ; BIND data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      2		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 @	IN	A	127.0.0.1
 @	IN	AAAA	::1

Peu utilisée en général, elle permet de résoudre localhost : 

La structure de ce dernier fichier est un peu déroutante au début, emplie de @ . A AAAA SOA et autres IN que nous détaillerons plus loin.
Nous remarquons que localhost possède deux IP : 127.0.0.1 (IPV4) et ::1 (IPV6) vous le saviez probablement déjà!

==== Les zones in-addr.arpa ====

Nous venons de voir les fichiers qui permettent de résoudre l'adresse d'une machine à partir de son nom. Or, il arrive que certains mécanismes réclament l'inverse, c'est à dire trouver le (les) noms associés à des IP.

Les zones in-addr.arpa servent à ça.

Voici la zone inverse pour localhost :

 # cat db.127 
 ;
 ; BIND reverse data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      1		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 1.0.0	IN	PTR	localhost.

La notation est ici inversée.
Si nous cherchons dans la zone 127 l'adresse 0.0.1 nous tomberons sur localhost =&gt; 1.0.0 IN PTR localhost.

Par exemple, Pour l'adresse 192.1.2.3, nous obtenons le nom de domaine 3.2.1.192.in-addr.arpa.

== Contenu d'une Zone ==

Une zone contient deux enregistrements obligatoires :

* SOA
* NS

=== SOA ===

SOA (Start Of Authority). Le champ SOA indique quel est le serveur « maitre ». Ce serveur peut-avoir plusieurs serveurs esclaves

 $ host -t soa google.fr
 google.fr has SOA record ns1.google.com. dns-admin.google.com. 1423257 21600 3600 1209600 300

Nous savons donc que le serveur ns1.google.com est le serveur maître du domaine google.com.
Et nous avons l'adresse email du responsable : dns-admin@google.com (l'arobase est remplacé par un point dans le fichier de zone)

L'enregistrement SOA contient un certain nombre d'enregistrements et de paramètres:

==== Le nom du primaire ====

 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici.

C'est le nom du serveur primaire pour la zone.
L'adresse de courrier électronique du responsable technique de la zone (zone-contact).
Il faut l'écrire en replaçant le @ par un point. On a alors par exemple: root@inria.fr qui devient root.inria.fr

==== A, AAAA, MX, CNAME, etc. ====

Les types d'enregistrements sont: A, AAAA, MX, CNAME, NS, SOA, PTR, TXT, HINFO, WKS, RP, MA, MB.

===== A (Address) =====

C'est l'enregistrement le plus courant. Le DNS a été créé en grande partie pour ça...
Le champ A (Address) fait correspondre un nom à une adresse IPv4.

nom     IN      A       193.10.20.30

Dans le cas d'une machine qui dispose de plus d'une adresse IP (un routeur ou une machine avec plusieurs cartes), il faut indiquer un enregistrement A par adresse, mais il faut alors que tous les enregistrements PTR pointent vers ce nom là.

===== AAAA (Address IPV6) =====

Idem au champ A, mais correspond à une adresse de type IPV6

===== NS (Name Server) =====

Le champ NS (Name Server) indique le nom d'un serveur de noms. Il peut y avoir plusieurs champs NS s'il y a plusieurs serveurs de noms...

===== CNAME (Common Name) =====

Le champ CNAME (Common Name) est utilisé pour créer des alias. Un &quot;vrai&quot; nom doit être préalablement déclaré avec la variable A, un alias peut ensuite être créé qui pointera vers celui-ci.

===== MX (Mail eXchanger) =====

Le champ MX (Mail eXchanger), est utile pour le protocole SMTP ou TXT.

Il indique pour un nom de domaine quelle est la machine à laquelle il faut envoyer le courrier pour ce domaine.

Si plusieurs enregistrements MX sont présents, il faut leur attribuer un poids... Le MTA (Mail transfert agent) tentera d'envoyer le courrier en premier à la machine ayant le poids associé le plus faible, puis ensuite dans l'ordre croissant des poids.

Si la machine qui relaie le courrier est dans la liste des MX pour le domaine, elle envoie le courrier aux machines de poids inférieur au sien.

nom     IN      MX      10      premier.relais.
        IN      MX      20      second.relais.

==== Le numéro de série de la zone ====

Il permet aux serveurs secondaires qui interrogent régulièrement le serveur primaire de chaque zone de déterminer quand la zone a été mise à jour.



==== L'intervalle entre les rafraichissements (refresh) ====

Temps, en seconde, au bout duquel les serveurs « esclaves » devront demander à rafraichir leur données pour cette zone. 3600 secondes dans l'exemple ci-dessous, soit une heure. 

 3600           ; Refresh

La valeur conseillée est 24 heures, soit 86400 secondes.

==== L'intervalle entre les rafraichissements (retry) ====

Durée, en secondes, à partir de laquelle un serveur esclave doit ré-essayer de se synchroniser en cas d'échec du rafraichissement. Ici toutes les 300 secondes, soit toutes les 5 minutes. 

 300            ; Retry

La valeur conseillée est 6 heures, soit 21600 secondes.

==== La durée d'expiration des enregistrements d'un secondaire ====

En cas d'échec des tentatives de synchronisation, indique le temps (en secondes) au bout duquel les serveurs secondaires devront considérer qu'ils ne savent plus répondre aux requêtes concernant cette zone.

 2419200          ; Expire

La valeur conseillée est de 41 jours, soit 3600000 secondes.

==== La durée de vie par défaut des enregistrements (default TTL) ====

Durée de vie de l'information fournie.
Les serveurs DNS récursifs conserveront en cache les informations récoltées pendant la durée indiquée dans ce paramètre. 0 indique que les valeurs ne doivent pas être conservées en cache.

 1600 )           ; Negative Cache TTL

La valeur conseillée est de 24 heures, soit 86400 secondes.

==== Le symbole « @ » ====

Dans un fichier de configuration de zone, ce symbole représente exactement le nom de domaine de la zone. Par exemple, lorsque nous allons créer notre zone maison.mrs, écrire : 

 maison.mrs.  IN SOA ...

Nous pourrons écrire : 

 @            IN SOA ...

=== NS (Name Server) ===

Cet enregistrement indique une délégation pour la gestion du nom donné. C'est à dire que le nom donné devient une zone, dont la gestion est déléguée au serveur indiqué en partie droite.

L'enregistrement donne le nom d'un des serveurs de noms autoritaire pour la zone, comme il y a toujours plus d'un serveur de noms pour une zone, on répète l'enregistrement NS autant de fois qu'il y a de serveurs pour la zone.

Quand pour un nom, on a des enregistrements NS, il est interdit de faire figurer dans la zone parente (celle là) d'autres enregistrements. S'il y a à faire figurer des enregistrements, il faut les mettre dans la zone fille.

zone    IN      NS      serveur.nom.de.domaine.

          IN      NS      autreServeur.nom.de.domaine.

          IN      NS      encoreUn.autreNom.de.domaine.

== Créons notre première zone ==

Maintenant que les explications indigestes sont faites... 
La meilleure façon de comprendre, est d'appliquer à son réseau local sa propre zone!

=== La zone chezmoi.ici ===

Pour cet exemple j'ai pris un nom de domaine bidon, c'est tout a fait possible, vous pouvez donner n'importe quel nom à votre Intranet!

Notre serveur s'appelle tebilepas il dispose de l'IP 192.168.1.254

Le domaine est chezmoi.ici

Nous disposons d'assez d'informations pour créer la zone chezmoi.ici

Créons d'abord dans /etc/bind/ un fichier nommé : db.chezmoi.ici qui contiendrai ceci :

 $TTL    1600
 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. (
                         2009012907       ; Serial
                         604800           ; Refresh
                         86400            ; Retry
                         2419200          ; Expire
                         1600 )           ; Negative Cache TTL
 
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.
 chezmoi.ici.    IN      A       192.168.1.254
 tebilepas  IN      A       192.168.1.254
 coucou     IN      A       192.168.1.1
 pourquoi   IN      CNAME   coucou
 tespascheztoi      IN      CNAME   forum.debian-fr.org.

Nous aurions pu écrire :
 @         IN    NS      tebilepas.chezmoi.ici.
à la place de (cela revient au même)
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.

Nous aurions aussi pu éviter les commentaires (par exemple : ;Serial) mais pour les explications ce sera plus facile.

Ce sera suffisant pour commencer!

Pour que cette zone soit prise en compte, nous devons maintenant l'inclure dans le fichier /etc/bind/named.conf.local

Ceci devrait permettre de répondre aux requêtes de type NS pour le domaine maison.mrs, de répondre aussi aux requêtes de type A pour debvirt.maison.mrs et pour test1.maison.mrs, constater aussi que les alias fonctionnent dans et hors du domaine. 

Il nous faut maintenant indiquer à bind que cette zone existe. Nous allons le faire dans le fichier /etc/bind/named.conf.local : 

 zone &quot;chezmoi.ici&quot; {
         type master;
         file &quot;/etc/bind/db.chezmoi.ici&quot;;
         };

Nous redémarrons notre serveur bind

 # service bind9 restart
 Stopping domain name service...: bind9 waiting for pid 1353 to die.
 Starting domain name service...: bind9.

== Tests ==

Maintenant que notre serveur de nom est configuré, il faut le tester...

=== Avec la commande host ===

 $ host -a chezmoi.ici localhost
 Trying &quot;chezmoi.ici&quot;
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 46986
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;chezmoi.ici.			IN	ANY
 
 ;; ANSWER SECTION:
 chezmoi.ici.		1600	IN	SOA	tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. 2009012907 604800 86400 2419200 1600
 chezmoi.ici.		1600	IN	NS	tebilepas.chezmoi.ici.
 chezmoi.ici.		1600	IN	A	192.168.1.254
 
 ;; ADDITIONAL SECTION:
 tebilepas.chezmoi.ici.	1600	IN	A	192.168.1.254
 
 Received 126 bytes from ::1#53 in 5 ms

 $ host coucou.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 coucou.chezmoi.ici has address 192.168.1.1

 $ host pourquoi.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 pourquoi.chezmoi.ici is an alias for coucou.chezmoi.ici.
 coucou.chezmoi.ici has address 192.168.1.1

 $ host ailleurs.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ailleurs.chezmoi.ici is an alias for forum.debian-fr.org.
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Comme vous avez pu le constater, votre DNS fonctionne parfaitement, il renseigne nos machines sur le réseau local, et il pourvoit à nos demandes d'IP Internet !

=== Avec la commande nslookup ===

&lt;big&gt;&lt;code text&gt;
$ nslookup
&gt; server
Default server: 192.168.0.254
Address: 192.168.0.254#53
Default server: xxx.xxx.xxx.xxx
Address: xxx.xxx.xxx.xxx#53
&gt; localhost
Server:		192.168.0.254
Address:	192.168.0.254#53

Name:	localhost
Address: 127.0.0.1
&gt; www.chezmoi.ici
Server:		192.168.0.254
Address:	192.168.0.254#53

www.chezmoi.ici	canonical name = chezmoi.ici.
Name:	chezmoi.ici
Address: 192.168.0.254
&gt; tebilepas
Server:		192.168.0.254
Address:	192.168.0.254#53

Name:	tebilepas.chezmoi.ici
Address: 192.168.0.254
&gt; www.google.com
Server:		192.168.0.254
Address:	192.168.0.254#53

Non-authoritative answer:
www.google.com	canonical name = www.l.google.com.
Name:	www.l.google.com
Address: 209.85.148.105
Name:	www.l.google.com
Address: 209.85.148.106
Name:	www.l.google.com
Address: 209.85.148.147
Name:	www.l.google.com
Address: 209.85.148.99
Name:	www.l.google.com
Address: 209.85.148.103
Name:	www.l.google.com
Address: 209.85.148.104
&gt; exit

$
&lt;/code&gt;&lt;/big&gt;

Explication. Lorsque nous tapons la commande nslookup, apparait l'invite suivante :

 $ nslookup
 &gt;

Il suffit de connaître très peu de commandes

server &gt; donne la liste des serveurs DNS qui seront interrogés, dans l'ordre;

nslookup précise à chaque demande quel serveur à répondu :
 Server:		192.168.0.254
 Address:	192.168.0.254#53

192.168.0.254, c'est nous! :)

Nom de machine ou de domaine &gt; donne la résolution du nom demandé;

exit &gt; sortir de nslookup.

=== Le fichier resolv.conf ===

Je n'en ai pas parlé jusqu'ici, mais il faut vérifier que votre fichier /etc/resolv.conf reflète bien votre configuration.
Dans l'exemple pris dans cette page, celui-ci doit contenir :

 $ cat /etc/resolv.conf 
 domain chezmoi.ici
 search chezmoi.ici
 nameserver 192.168.0.254
 nameserver xxx.xxx.xxx.xxx

C'est bon, le domaine est bien chezmoi.ici, et les DNS, sont dans l'ordre, le votre, puis celui de votre FAI.

Deux cas se présentent :

==== vous avez resolvconf installé ====

&lt;big&gt;&lt;code&gt;
apt-cache policy resolvconf
resolvconf:
  Installé : 1.46
  Candidat : 1.46
 Table de version :
     1.46 0
        500 http://nas.isalo.org/debian/ squeeze/main amd64 Packages
        500 http://ftp.fr.debian.org/debian/ squeeze/main amd64 Packages
&lt;/code&gt;&lt;/big&gt;

Soit vous obtenez votre ip par dhcp auquel cas, rien à faire
Soit vous fixez votre ip par le fichier /etc/network/interfaces auquel cas il faut ajouter les lignes suivantes dans celui-ci :

 dns-nameservers 192.168.0.254 xxx.xxx.xxx.xxx
 dns-search chezmoi.ici

==== vous n'avez pas resolvconf installé ====

Il faut modifier vous même le fichier /etc/resolv.conf pour qu'il reflète votre configuration :

 $ cat /etc/resolv.conf 
 domain chezmoi.ici
 search chezmoi.ici
 nameserver 192.168.0.254
 nameserver xxx.xxx.xxx.xxx

== Le Round-robin ==

Le Round-robin est une répartition de charge (load balancing) équitable entre serveurs d'une ferme informatique (cluster). Chaque serveur doit traiter le même nombre de requêtes. Cela nécessite une ferme de serveurs homogènes en capacité de traitement. Cette répartition de charge peut être effectuée par le serveur DNS (Domain Name System) qui associe plusieurs adresses IP à un nom de domaine.

Exemple d'un round-robin fonctionnel :

 jeu. août 05 02:46:56 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99

 jeu. août 05 02:46:57 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147

 jeu. août 05 02:46:59 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104

 jeu. août 05 02:47:01 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

Le premier serveur de la liste n'est jamais le même, il y a une rotation...


ToDo : Conclusion

[[Category:Serveurs]]</text>
      <sha1>285hxn5kil1vcaa6b6o9z2f8p8qqt86</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2510</id>
      <parentid>2509</parentid>
      <timestamp>2010-12-17T06:37:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Installation */</comment>
      <text xml:space="preserve" bytes="27228">{{Modèle:Ébauche|DNS}}

'''Créer un serveur DNS pour votre réseau local'''

== Qu'est-ce que c'est ? ==

Un Domain Name System (ou DNS, système de noms de domaine) est un service permettant d'établir une correspondance entre une adresse IP et un nom de domaine et, plus généralement, de trouver une information à partir d'un nom de domaine.

Tous les ordinateurs pour communiquer entre eux doivent posséder une adresse IP. Ces adresses sont numériques, elles sont sous cette forme pour les adresses IPV4 : www.xxx.yyy.zzz; et de cette forme pour les adresses IPV6 : aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh.

Ces adresses sont associées à des noms, plus simples à retenir pour les humains, appelés noms de domaines. Résoudre un nom de domaine consiste à trouver l'adresse IP qui lui est associée.

Vous préférez taper google.com ou 72.14.204.103 dans votre navigateur ?

== Pourquoi faire ? ==

* Simple curiosité, pour comprendre son fonctionnement;
* Être autonome des DNS de son FAI (Fournisseur d'accès Internet) en cas d'arrêt de ceux-ci ou par souci de confidentialité;
* Résoudre les adresses de son réseau interne (Intranet) simplement, sans être obligé de remplir le fichier hosts de toutes vos machines;
* Résoudre les &quot;adresses inverses&quot;: obtenir un nom de domaine ou de machine avec une IP.

Cela fait suffisamment de raisons ? Alors continuons!

== Avertissement ==

Nous n'aborderons pas ici les problèmes de sécurité, qui peuvent être nombreux sur un serveur DNS. Le DNS que nous allons construire est destiné UNIQUEMENT à notre réseau local, il n'est pas accessible depuis Internet.

Mais ça ne l'empêchera pas d'être pleinement opérationnel et de faire la résolution de nom dont vous avez besoin, y compris pour les domaines extérieurs.

Je préciserais aussi ici qu'il vaut mieux ne pas utiliser un domaine (un [[Glossaire#TLD|TLD]]) existant sur Internet. Vous pouvez le faire, mais vous ne pourrez jamais joindre le domaine &quot;réel&quot; qui se trouve sur Internet (sauf à connaître son adresse IP), vous seriez automatiquement re-dirigé vers votre serveur local.

== Installation ==

 # apt-get install bind9 bind9-host bind9utils host

Vérifions que bind écoute bien sur toutes nos adresses :

 # netstat -ntulp | grep named
 tcp        0      0 192.168.0.1:53          0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      2832/named
 tcp6       0      0 :::53                   :::*                    LISTEN      2832/named
 tcp6       0      0 ::1:953                 :::*                    LISTEN      2832/named
 udp        0      0 192.168.0.1:53          0.0.0.0:*                           2832/named
 udp        0      0 127.0.0.1:53            0.0.0.0:*                           2832/named
 udp6       0      0 :::53                   :::*                                2832/named

== Premiers contact ==

Ça y est, notre DNS est déjà fonctionnel...
Il remplit son rôle de DNS récursif et répond à nos demandes de résolution!
Vous ne me croyez pas ?

 $ host forum.debian-fr.org 127.0.0.1
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Cette commande simple nous donne déjà des renseignements :
* forum.debian-fr.org est un alias pour www.zehome.com.
* Son IP (IPV4 est 88.165.116.107)

Plus d'information ? Passons la même commande avec l'option -v (verbose)

 $ host -v forum.debian-fr.org localhost
 Trying &quot;forum.debian-fr.org&quot;
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 11492
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;forum.debian-fr.org.		IN	A
 
 ;; ANSWER SECTION:
 forum.debian-fr.org.	37939	IN	CNAME	www.zehome.com.
 www.zehome.com.		37941	IN	A	88.165.116.107
 
 ;; AUTHORITY SECTION:
 zehome.com.		37941	IN	NS	ns.kimsufi.com.
 zehome.com.		37941	IN	NS	ns0.zehome.com.
 zehome.com.		37941	IN	NS	daboog.zehome.com.
 
 ;; ADDITIONAL SECTION:
 ns.kimsufi.com.		85955	IN	A	213.186.33.199
 
 Received 161 bytes from 127.0.0.1#53 in 1 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 62379
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	AAAA
 
 ;; AUTHORITY SECTION:
 zehome.com.		10355	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 7678
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	MX
 
 ;; AUTHORITY SECTION:
 zehome.com.		10377	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms

Avec l'option -v (verbose) c'est tout de suite plus compliqué...

Quelques remarques sur ce résultat :

* forum.debian-fr.org est un alias pour www.zehome.com;
* Son IP est 88.165.116.107;
* Ce domaine est géré par les serveurs DNS daboog.zehome.com, ns.kimsufi.com et ns0.zehome.com;
* Il ne dispose pas d'IPV6 (pas de réponse à la question IN AAAA);
* Le [[BIND#SOA|SOA]] pour ce domaine est ns0.zehome.com
* Le mail de l'administrateur est ed@zehome.com (ed.zehome.com - ici le point vaut un arobase)

La même chose, sur un domaine plus important

 $ host www.google.fr 127.0.0.1
 Using domain server:
 Name: 127.0.0.1
 Address: 127.0.0.1#53
 Aliases: 
 
 www.google.fr is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

* www.google.fr est un alias pour www.google.com
* www.google.com possède plusieurs adresses IP

Plusieurs IP pour un même domaine ? C'est possible, et cela s'appelle le [[BIND#Le_Round-robin|&quot;round-robin&quot;]]... Tourniquet en Français, cet algorithme d'ordonnancement permet d'attribuer des temps aux processus, ici, il s'agit de faire tourner les IP, afin que tous les serveurs reçoivent leur part de charge...

=== La Configuration ===

L'installation de Bind9 à générée les fichiers suivants :

 # cd /etc/bind
 lol:/etc/bind# vdir
 total 52
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.0
 -rw-r--r-- 1 root root  271 jun 10 22:58 db.127
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.255
 -rw-r--r-- 1 root root  353 jun 10 22:58 db.empty
 -rw-r--r-- 1 root root  270 jun 10 22:58 db.local
 -rw-r--r-- 1 root root 2994 aoû  3 21:30 db.root
 -rw-r--r-- 1 root bind 1125 jui 21 22:19 named.conf
 -rw-r--r-- 1 root bind  278 aoû  3 10:37 named.conf.local
 -rw-r--r-- 1 root bind  572 jun 10 22:58 named.conf.options
 -rw-r----- 1 bind bind   77 jui 20 17:25 rndc.key
 -rw-r--r-- 1 root root 1317 jun 10 22:58 zones.rfc1918

Le fichier principal (épuré des commentaires) :

 # cat /etc/bind/named.conf
 
 include &quot;/etc/bind/named.conf.options&quot;;
 
 zone &quot;.&quot; {
 	type hint;
 	file &quot;/etc/bind/db.root&quot;;
 };
 
 zone &quot;localhost&quot; {
 	type master;
 	file &quot;/etc/bind/db.local&quot;;
 };
 
 zone &quot;127.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.127&quot;;
 };
 
 zone &quot;0.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.0&quot;;
 };
 
 zone &quot;255.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.255&quot;;
 };
 
 include &quot;/etc/bind/named.conf.local&quot;;
 
 server xxx.xxx.xxx.xxx	{ };

Ce fichier renvoie vers deux fichiers de configurations : named.conf.options et named.conf.local

C'est dans ces deux fichiers qu'il faudra mettre vos configurations personnelles, le fichier named.conf ne devant en principe pas être modifié.

Le fichier named.conf déclare plusieurs zones, presque toutes destinées à la résolution inverse

A la fin du fichier, nous avons ajouté le NDS de notre FAI, au cas ou... Il est indispensable de pouvoir, quoi qu'il arrive, faire de la résolution de nom... Ce sera donc notre DNS de secours.

==== La zone &quot;.&quot; ====

La zone root est primordiale.
Ce fichier contient toutes les informations sur les root-servers sans lesquels notre DNS ne peut fonctionner.
Ce fichier évolue peu.

 lol:/etc/bind# cat db.root
 
 ;       This file holds the information on root name servers needed to
 ;       initialize cache of Internet domain name servers
 ;       (e.g. reference this file in the &quot;cache  .  &lt;file&gt;&quot;
 ;       configuration file of BIND domain name servers).
 ;
 ;       This file is made available by InterNIC 
 ;       under anonymous FTP as
 ;           file                /domain/named.root
 ;           on server           FTP.INTERNIC.NET
 ;       -OR-                    RS.INTERNIC.NET
 ;
 ;       last update:    Feb 04, 2008
 ;       related version of root zone:   2008020400
 ;
 ; formerly NS.INTERNIC.NET
 ;
 .                        3600000  IN  NS    A.ROOT-SERVERS.NET.
 A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
 A.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:BA3E::2:30
 ;
 ; formerly NS1.ISI.EDU
 ;
 .                        3600000      NS    B.ROOT-SERVERS.NET.
 B.ROOT-SERVERS.NET.      3600000      A     192.228.79.201
 ;
 ; formerly C.PSI.NET
 ;
 .                        3600000      NS    C.ROOT-SERVERS.NET.
 C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
 ;
 ; formerly TERP.UMD.EDU
 ;
 .                        3600000      NS    D.ROOT-SERVERS.NET.
 D.ROOT-SERVERS.NET.      3600000      A     128.8.10.90
 ;
 ; formerly NS.NASA.GOV
 ;
 .                        3600000      NS    E.ROOT-SERVERS.NET.
 E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
 ;
 ; formerly NS.ISC.ORG
 ;
 .                        3600000      NS    F.ROOT-SERVERS.NET.
 F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
 F.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2f::f
 ;
 ; formerly NS.NIC.DDN.MIL
 ;
 .                        3600000      NS    G.ROOT-SERVERS.NET.
 G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
 ;
 ; formerly AOS.ARL.ARMY.MIL
 ;
 .                        3600000      NS    H.ROOT-SERVERS.NET.
 H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
 H.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:1::803f:235
 ;
 ; formerly NIC.NORDU.NET
 ;
 .                        3600000      NS    I.ROOT-SERVERS.NET.
 I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
 ;
 ; operated by VeriSign, Inc.
 ;
 .                        3600000      NS    J.ROOT-SERVERS.NET.
 J.ROOT-SERVERS.NET.      3600000      A     192.58.128.30
 J.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:C27::2:30
 ;
 ; operated by RIPE NCC
 ;
 .                        3600000      NS    K.ROOT-SERVERS.NET.
 K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129 
 K.ROOT-SERVERS.NET.      3600000      AAAA  2001:7fd::1
 ;
 ; operated by ICANN
 ;
 .                        3600000      NS    L.ROOT-SERVERS.NET.
 L.ROOT-SERVERS.NET.      3600000      A     199.7.83.42
 ;
 ; operated by WIDEaimer
 ;
 .                        3600000      NS    M.ROOT-SERVERS.NET.
 M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
 M.ROOT-SERVERS.NET.      3600000      AAAA  2001:dc3::35
 ; End of File

==== La zone &quot;localhost&quot; ====

 # cat db.local 
 ;
 ; BIND data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      2		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 @	IN	A	127.0.0.1
 @	IN	AAAA	::1

Peu utilisée en général, elle permet de résoudre localhost : 

La structure de ce dernier fichier est un peu déroutante au début, emplie de @ . A AAAA SOA et autres IN que nous détaillerons plus loin.
Nous remarquons que localhost possède deux IP : 127.0.0.1 (IPV4) et ::1 (IPV6) vous le saviez probablement déjà!

==== Les zones in-addr.arpa ====

Nous venons de voir les fichiers qui permettent de résoudre l'adresse d'une machine à partir de son nom. Or, il arrive que certains mécanismes réclament l'inverse, c'est à dire trouver le (les) noms associés à des IP.

Les zones in-addr.arpa servent à ça.

Voici la zone inverse pour localhost :

 # cat db.127 
 ;
 ; BIND reverse data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      1		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 1.0.0	IN	PTR	localhost.

La notation est ici inversée.
Si nous cherchons dans la zone 127 l'adresse 0.0.1 nous tomberons sur localhost =&gt; 1.0.0 IN PTR localhost.

Par exemple, Pour l'adresse 192.1.2.3, nous obtenons le nom de domaine 3.2.1.192.in-addr.arpa.

== Contenu d'une Zone ==

Une zone contient deux enregistrements obligatoires :

* SOA
* NS

=== SOA ===

SOA (Start Of Authority). Le champ SOA indique quel est le serveur « maitre ». Ce serveur peut-avoir plusieurs serveurs esclaves

 $ host -t soa google.fr
 google.fr has SOA record ns1.google.com. dns-admin.google.com. 1423257 21600 3600 1209600 300

Nous savons donc que le serveur ns1.google.com est le serveur maître du domaine google.com.
Et nous avons l'adresse email du responsable : dns-admin@google.com (l'arobase est remplacé par un point dans le fichier de zone)

L'enregistrement SOA contient un certain nombre d'enregistrements et de paramètres:

==== Le nom du primaire ====

 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici.

C'est le nom du serveur primaire pour la zone.
L'adresse de courrier électronique du responsable technique de la zone (zone-contact).
Il faut l'écrire en replaçant le @ par un point. On a alors par exemple: root@inria.fr qui devient root.inria.fr

==== A, AAAA, MX, CNAME, etc. ====

Les types d'enregistrements sont: A, AAAA, MX, CNAME, NS, SOA, PTR, TXT, HINFO, WKS, RP, MA, MB.

===== A (Address) =====

C'est l'enregistrement le plus courant. Le DNS a été créé en grande partie pour ça...
Le champ A (Address) fait correspondre un nom à une adresse IPv4.

nom     IN      A       193.10.20.30

Dans le cas d'une machine qui dispose de plus d'une adresse IP (un routeur ou une machine avec plusieurs cartes), il faut indiquer un enregistrement A par adresse, mais il faut alors que tous les enregistrements PTR pointent vers ce nom là.

===== AAAA (Address IPV6) =====

Idem au champ A, mais correspond à une adresse de type IPV6

===== NS (Name Server) =====

Le champ NS (Name Server) indique le nom d'un serveur de noms. Il peut y avoir plusieurs champs NS s'il y a plusieurs serveurs de noms...

===== CNAME (Common Name) =====

Le champ CNAME (Common Name) est utilisé pour créer des alias. Un &quot;vrai&quot; nom doit être préalablement déclaré avec la variable A, un alias peut ensuite être créé qui pointera vers celui-ci.

===== MX (Mail eXchanger) =====

Le champ MX (Mail eXchanger), est utile pour le protocole SMTP ou TXT.

Il indique pour un nom de domaine quelle est la machine à laquelle il faut envoyer le courrier pour ce domaine.

Si plusieurs enregistrements MX sont présents, il faut leur attribuer un poids... Le MTA (Mail transfert agent) tentera d'envoyer le courrier en premier à la machine ayant le poids associé le plus faible, puis ensuite dans l'ordre croissant des poids.

Si la machine qui relaie le courrier est dans la liste des MX pour le domaine, elle envoie le courrier aux machines de poids inférieur au sien.

nom     IN      MX      10      premier.relais.
        IN      MX      20      second.relais.

==== Le numéro de série de la zone ====

Il permet aux serveurs secondaires qui interrogent régulièrement le serveur primaire de chaque zone de déterminer quand la zone a été mise à jour.



==== L'intervalle entre les rafraichissements (refresh) ====

Temps, en seconde, au bout duquel les serveurs « esclaves » devront demander à rafraichir leur données pour cette zone. 3600 secondes dans l'exemple ci-dessous, soit une heure. 

 3600           ; Refresh

La valeur conseillée est 24 heures, soit 86400 secondes.

==== L'intervalle entre les rafraichissements (retry) ====

Durée, en secondes, à partir de laquelle un serveur esclave doit ré-essayer de se synchroniser en cas d'échec du rafraichissement. Ici toutes les 300 secondes, soit toutes les 5 minutes. 

 300            ; Retry

La valeur conseillée est 6 heures, soit 21600 secondes.

==== La durée d'expiration des enregistrements d'un secondaire ====

En cas d'échec des tentatives de synchronisation, indique le temps (en secondes) au bout duquel les serveurs secondaires devront considérer qu'ils ne savent plus répondre aux requêtes concernant cette zone.

 2419200          ; Expire

La valeur conseillée est de 41 jours, soit 3600000 secondes.

==== La durée de vie par défaut des enregistrements (default TTL) ====

Durée de vie de l'information fournie.
Les serveurs DNS récursifs conserveront en cache les informations récoltées pendant la durée indiquée dans ce paramètre. 0 indique que les valeurs ne doivent pas être conservées en cache.

 1600 )           ; Negative Cache TTL

La valeur conseillée est de 24 heures, soit 86400 secondes.

==== Le symbole « @ » ====

Dans un fichier de configuration de zone, ce symbole représente exactement le nom de domaine de la zone. Par exemple, lorsque nous allons créer notre zone maison.mrs, écrire : 

 maison.mrs.  IN SOA ...

Nous pourrons écrire : 

 @            IN SOA ...

=== NS (Name Server) ===

Cet enregistrement indique une délégation pour la gestion du nom donné. C'est à dire que le nom donné devient une zone, dont la gestion est déléguée au serveur indiqué en partie droite.

L'enregistrement donne le nom d'un des serveurs de noms autoritaire pour la zone, comme il y a toujours plus d'un serveur de noms pour une zone, on répète l'enregistrement NS autant de fois qu'il y a de serveurs pour la zone.

Quand pour un nom, on a des enregistrements NS, il est interdit de faire figurer dans la zone parente (celle là) d'autres enregistrements. S'il y a à faire figurer des enregistrements, il faut les mettre dans la zone fille.

zone    IN      NS      serveur.nom.de.domaine.

          IN      NS      autreServeur.nom.de.domaine.

          IN      NS      encoreUn.autreNom.de.domaine.

== Créons notre première zone ==

Maintenant que les explications indigestes sont faites... 
La meilleure façon de comprendre, est d'appliquer à son réseau local sa propre zone!

=== La zone chezmoi.ici ===

Pour cet exemple j'ai pris un nom de domaine bidon, c'est tout a fait possible, vous pouvez donner n'importe quel nom à votre Intranet!

Notre serveur s'appelle tebilepas il dispose de l'IP 192.168.1.254

Le domaine est chezmoi.ici

Nous disposons d'assez d'informations pour créer la zone chezmoi.ici

Créons d'abord dans /etc/bind/ un fichier nommé : db.chezmoi.ici qui contiendrai ceci :

 $TTL    1600
 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. (
                         2009012907       ; Serial
                         604800           ; Refresh
                         86400            ; Retry
                         2419200          ; Expire
                         1600 )           ; Negative Cache TTL
 
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.
 chezmoi.ici.    IN      A       192.168.1.254
 tebilepas  IN      A       192.168.1.254
 coucou     IN      A       192.168.1.1
 pourquoi   IN      CNAME   coucou
 tespascheztoi      IN      CNAME   forum.debian-fr.org.

Nous aurions pu écrire :
 @         IN    NS      tebilepas.chezmoi.ici.
à la place de (cela revient au même)
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.

Nous aurions aussi pu éviter les commentaires (par exemple : ;Serial) mais pour les explications ce sera plus facile.

Ce sera suffisant pour commencer!

Pour que cette zone soit prise en compte, nous devons maintenant l'inclure dans le fichier /etc/bind/named.conf.local

Ceci devrait permettre de répondre aux requêtes de type NS pour le domaine maison.mrs, de répondre aussi aux requêtes de type A pour debvirt.maison.mrs et pour test1.maison.mrs, constater aussi que les alias fonctionnent dans et hors du domaine. 

Il nous faut maintenant indiquer à bind que cette zone existe. Nous allons le faire dans le fichier /etc/bind/named.conf.local : 

 zone &quot;chezmoi.ici&quot; {
         type master;
         file &quot;/etc/bind/db.chezmoi.ici&quot;;
         };

Nous redémarrons notre serveur bind

 # service bind9 restart
 Stopping domain name service...: bind9 waiting for pid 1353 to die.
 Starting domain name service...: bind9.

== Tests ==

Maintenant que notre serveur de nom est configuré, il faut le tester...

=== Avec la commande host ===

 $ host -a chezmoi.ici localhost
 Trying &quot;chezmoi.ici&quot;
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 46986
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;chezmoi.ici.			IN	ANY
 
 ;; ANSWER SECTION:
 chezmoi.ici.		1600	IN	SOA	tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. 2009012907 604800 86400 2419200 1600
 chezmoi.ici.		1600	IN	NS	tebilepas.chezmoi.ici.
 chezmoi.ici.		1600	IN	A	192.168.1.254
 
 ;; ADDITIONAL SECTION:
 tebilepas.chezmoi.ici.	1600	IN	A	192.168.1.254
 
 Received 126 bytes from ::1#53 in 5 ms

 $ host coucou.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 coucou.chezmoi.ici has address 192.168.1.1

 $ host pourquoi.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 pourquoi.chezmoi.ici is an alias for coucou.chezmoi.ici.
 coucou.chezmoi.ici has address 192.168.1.1

 $ host ailleurs.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ailleurs.chezmoi.ici is an alias for forum.debian-fr.org.
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Comme vous avez pu le constater, votre DNS fonctionne parfaitement, il renseigne nos machines sur le réseau local, et il pourvoit à nos demandes d'IP Internet !

=== Avec la commande nslookup ===

&lt;big&gt;&lt;code text&gt;
$ nslookup
&gt; server
Default server: 192.168.0.254
Address: 192.168.0.254#53
Default server: xxx.xxx.xxx.xxx
Address: xxx.xxx.xxx.xxx#53
&gt; localhost
Server:		192.168.0.254
Address:	192.168.0.254#53

Name:	localhost
Address: 127.0.0.1
&gt; www.chezmoi.ici
Server:		192.168.0.254
Address:	192.168.0.254#53

www.chezmoi.ici	canonical name = chezmoi.ici.
Name:	chezmoi.ici
Address: 192.168.0.254
&gt; tebilepas
Server:		192.168.0.254
Address:	192.168.0.254#53

Name:	tebilepas.chezmoi.ici
Address: 192.168.0.254
&gt; www.google.com
Server:		192.168.0.254
Address:	192.168.0.254#53

Non-authoritative answer:
www.google.com	canonical name = www.l.google.com.
Name:	www.l.google.com
Address: 209.85.148.105
Name:	www.l.google.com
Address: 209.85.148.106
Name:	www.l.google.com
Address: 209.85.148.147
Name:	www.l.google.com
Address: 209.85.148.99
Name:	www.l.google.com
Address: 209.85.148.103
Name:	www.l.google.com
Address: 209.85.148.104
&gt; exit

$
&lt;/code&gt;&lt;/big&gt;

Explication. Lorsque nous tapons la commande nslookup, apparait l'invite suivante :

 $ nslookup
 &gt;

Il suffit de connaître très peu de commandes

server &gt; donne la liste des serveurs DNS qui seront interrogés, dans l'ordre;

nslookup précise à chaque demande quel serveur à répondu :
 Server:		192.168.0.254
 Address:	192.168.0.254#53

192.168.0.254, c'est nous! :)

Nom de machine ou de domaine &gt; donne la résolution du nom demandé;

exit &gt; sortir de nslookup.

=== Le fichier resolv.conf ===

Je n'en ai pas parlé jusqu'ici, mais il faut vérifier que votre fichier /etc/resolv.conf reflète bien votre configuration.
Dans l'exemple pris dans cette page, celui-ci doit contenir :

 $ cat /etc/resolv.conf 
 domain chezmoi.ici
 search chezmoi.ici
 nameserver 192.168.0.254
 nameserver xxx.xxx.xxx.xxx

C'est bon, le domaine est bien chezmoi.ici, et les DNS, sont dans l'ordre, le votre, puis celui de votre FAI.

Deux cas se présentent :

==== vous avez resolvconf installé ====

&lt;big&gt;&lt;code&gt;
apt-cache policy resolvconf
resolvconf:
  Installé : 1.46
  Candidat : 1.46
 Table de version :
     1.46 0
        500 http://nas.isalo.org/debian/ squeeze/main amd64 Packages
        500 http://ftp.fr.debian.org/debian/ squeeze/main amd64 Packages
&lt;/code&gt;&lt;/big&gt;

Soit vous obtenez votre ip par dhcp auquel cas, rien à faire
Soit vous fixez votre ip par le fichier /etc/network/interfaces auquel cas il faut ajouter les lignes suivantes dans celui-ci :

 dns-nameservers 192.168.0.254 xxx.xxx.xxx.xxx
 dns-search chezmoi.ici

==== vous n'avez pas resolvconf installé ====

Il faut modifier vous même le fichier /etc/resolv.conf pour qu'il reflète votre configuration :

 $ cat /etc/resolv.conf 
 domain chezmoi.ici
 search chezmoi.ici
 nameserver 192.168.0.254
 nameserver xxx.xxx.xxx.xxx

== Le Round-robin ==

Le Round-robin est une répartition de charge (load balancing) équitable entre serveurs d'une ferme informatique (cluster). Chaque serveur doit traiter le même nombre de requêtes. Cela nécessite une ferme de serveurs homogènes en capacité de traitement. Cette répartition de charge peut être effectuée par le serveur DNS (Domain Name System) qui associe plusieurs adresses IP à un nom de domaine.

Exemple d'un round-robin fonctionnel :

 jeu. août 05 02:46:56 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99

 jeu. août 05 02:46:57 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147

 jeu. août 05 02:46:59 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104

 jeu. août 05 02:47:01 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

Le premier serveur de la liste n'est jamais le même, il y a une rotation...


ToDo : Conclusion

[[Category:Serveurs]]</text>
      <sha1>ou86t8f021oy8j8zvoeflnlgg11l2o2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2511</id>
      <parentid>2510</parentid>
      <timestamp>2010-12-17T06:44:59Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* La Configuration */</comment>
      <text xml:space="preserve" bytes="27563">{{Modèle:Ébauche|DNS}}

'''Créer un serveur DNS pour votre réseau local'''

== Qu'est-ce que c'est ? ==

Un Domain Name System (ou DNS, système de noms de domaine) est un service permettant d'établir une correspondance entre une adresse IP et un nom de domaine et, plus généralement, de trouver une information à partir d'un nom de domaine.

Tous les ordinateurs pour communiquer entre eux doivent posséder une adresse IP. Ces adresses sont numériques, elles sont sous cette forme pour les adresses IPV4 : www.xxx.yyy.zzz; et de cette forme pour les adresses IPV6 : aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh.

Ces adresses sont associées à des noms, plus simples à retenir pour les humains, appelés noms de domaines. Résoudre un nom de domaine consiste à trouver l'adresse IP qui lui est associée.

Vous préférez taper google.com ou 72.14.204.103 dans votre navigateur ?

== Pourquoi faire ? ==

* Simple curiosité, pour comprendre son fonctionnement;
* Être autonome des DNS de son FAI (Fournisseur d'accès Internet) en cas d'arrêt de ceux-ci ou par souci de confidentialité;
* Résoudre les adresses de son réseau interne (Intranet) simplement, sans être obligé de remplir le fichier hosts de toutes vos machines;
* Résoudre les &quot;adresses inverses&quot;: obtenir un nom de domaine ou de machine avec une IP.

Cela fait suffisamment de raisons ? Alors continuons!

== Avertissement ==

Nous n'aborderons pas ici les problèmes de sécurité, qui peuvent être nombreux sur un serveur DNS. Le DNS que nous allons construire est destiné UNIQUEMENT à notre réseau local, il n'est pas accessible depuis Internet.

Mais ça ne l'empêchera pas d'être pleinement opérationnel et de faire la résolution de nom dont vous avez besoin, y compris pour les domaines extérieurs.

Je préciserais aussi ici qu'il vaut mieux ne pas utiliser un domaine (un [[Glossaire#TLD|TLD]]) existant sur Internet. Vous pouvez le faire, mais vous ne pourrez jamais joindre le domaine &quot;réel&quot; qui se trouve sur Internet (sauf à connaître son adresse IP), vous seriez automatiquement re-dirigé vers votre serveur local.

== Installation ==

 # apt-get install bind9 bind9-host bind9utils host

Vérifions que bind écoute bien sur toutes nos adresses :

 # netstat -ntulp | grep named
 tcp        0      0 192.168.0.1:53          0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      2832/named
 tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      2832/named
 tcp6       0      0 :::53                   :::*                    LISTEN      2832/named
 tcp6       0      0 ::1:953                 :::*                    LISTEN      2832/named
 udp        0      0 192.168.0.1:53          0.0.0.0:*                           2832/named
 udp        0      0 127.0.0.1:53            0.0.0.0:*                           2832/named
 udp6       0      0 :::53                   :::*                                2832/named

== Premiers contact ==

Ça y est, notre DNS est déjà fonctionnel...
Il remplit son rôle de DNS récursif et répond à nos demandes de résolution!
Vous ne me croyez pas ?

 $ host forum.debian-fr.org 127.0.0.1
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Cette commande simple nous donne déjà des renseignements :
* forum.debian-fr.org est un alias pour www.zehome.com.
* Son IP (IPV4 est 88.165.116.107)

Plus d'information ? Passons la même commande avec l'option -v (verbose)

 $ host -v forum.debian-fr.org localhost
 Trying &quot;forum.debian-fr.org&quot;
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 11492
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;forum.debian-fr.org.		IN	A
 
 ;; ANSWER SECTION:
 forum.debian-fr.org.	37939	IN	CNAME	www.zehome.com.
 www.zehome.com.		37941	IN	A	88.165.116.107
 
 ;; AUTHORITY SECTION:
 zehome.com.		37941	IN	NS	ns.kimsufi.com.
 zehome.com.		37941	IN	NS	ns0.zehome.com.
 zehome.com.		37941	IN	NS	daboog.zehome.com.
 
 ;; ADDITIONAL SECTION:
 ns.kimsufi.com.		85955	IN	A	213.186.33.199
 
 Received 161 bytes from 127.0.0.1#53 in 1 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 62379
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	AAAA
 
 ;; AUTHORITY SECTION:
 zehome.com.		10355	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms
 Trying &quot;www.zehome.com&quot;
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 7678
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.zehome.com.			IN	MX
 
 ;; AUTHORITY SECTION:
 zehome.com.		10377	IN	SOA	ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400
 
 Received 75 bytes from 127.0.0.1#53 in 0 ms

Avec l'option -v (verbose) c'est tout de suite plus compliqué...

Quelques remarques sur ce résultat :

* forum.debian-fr.org est un alias pour www.zehome.com;
* Son IP est 88.165.116.107;
* Ce domaine est géré par les serveurs DNS daboog.zehome.com, ns.kimsufi.com et ns0.zehome.com;
* Il ne dispose pas d'IPV6 (pas de réponse à la question IN AAAA);
* Le [[BIND#SOA|SOA]] pour ce domaine est ns0.zehome.com
* Le mail de l'administrateur est ed@zehome.com (ed.zehome.com - ici le point vaut un arobase)

La même chose, sur un domaine plus important

 $ host www.google.fr 127.0.0.1
 Using domain server:
 Name: 127.0.0.1
 Address: 127.0.0.1#53
 Aliases: 
 
 www.google.fr is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

* www.google.fr est un alias pour www.google.com
* www.google.com possède plusieurs adresses IP

Plusieurs IP pour un même domaine ? C'est possible, et cela s'appelle le [[BIND#Le_Round-robin|&quot;round-robin&quot;]]... Tourniquet en Français, cet algorithme d'ordonnancement permet d'attribuer des temps aux processus, ici, il s'agit de faire tourner les IP, afin que tous les serveurs reçoivent leur part de charge...

=== La Configuration ===

A noter que dans la dernière version sous squeeze la configuration est légèrement différente de celle présentée ici. Le fichier principal (named.conf) ne contient plus que des liens vers les trois fichiers secondaires dans lesquels vous mettrez vos directives (named.conf.options, named.conf.local et named.conf.default-zones).

L'installation de Bind9 à générée les fichiers suivants :

 # cd /etc/bind
 lol:/etc/bind# vdir
 total 52
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.0
 -rw-r--r-- 1 root root  271 jun 10 22:58 db.127
 -rw-r--r-- 1 root root  237 jun 10 22:58 db.255
 -rw-r--r-- 1 root root  353 jun 10 22:58 db.empty
 -rw-r--r-- 1 root root  270 jun 10 22:58 db.local
 -rw-r--r-- 1 root root 2994 aoû  3 21:30 db.root
 -rw-r--r-- 1 root bind 1125 jui 21 22:19 named.conf
 -rw-r--r-- 1 root bind  278 aoû  3 10:37 named.conf.local
 -rw-r--r-- 1 root bind  572 jun 10 22:58 named.conf.options
 -rw-r----- 1 bind bind   77 jui 20 17:25 rndc.key
 -rw-r--r-- 1 root root 1317 jun 10 22:58 zones.rfc1918

Le fichier principal (épuré des commentaires) :

 # cat /etc/bind/named.conf
 
 include &quot;/etc/bind/named.conf.options&quot;;
 
 zone &quot;.&quot; {
 	type hint;
 	file &quot;/etc/bind/db.root&quot;;
 };
 
 zone &quot;localhost&quot; {
 	type master;
 	file &quot;/etc/bind/db.local&quot;;
 };
 
 zone &quot;127.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.127&quot;;
 };
 
 zone &quot;0.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.0&quot;;
 };
 
 zone &quot;255.in-addr.arpa&quot; {
 	type master;
 	file &quot;/etc/bind/db.255&quot;;
 };
 
 include &quot;/etc/bind/named.conf.local&quot;;
 
 server xxx.xxx.xxx.xxx	{ };

Ce fichier renvoie vers deux fichiers de configurations : named.conf.options et named.conf.local

C'est dans ces deux fichiers qu'il faudra mettre vos configurations personnelles, le fichier named.conf ne devant en principe pas être modifié.

Le fichier named.conf déclare plusieurs zones, presque toutes destinées à la résolution inverse

A la fin du fichier, nous avons ajouté le NDS de notre FAI, au cas ou... Il est indispensable de pouvoir, quoi qu'il arrive, faire de la résolution de nom... Ce sera donc notre DNS de secours.

==== La zone &quot;.&quot; ====

La zone root est primordiale.
Ce fichier contient toutes les informations sur les root-servers sans lesquels notre DNS ne peut fonctionner.
Ce fichier évolue peu.

 lol:/etc/bind# cat db.root
 
 ;       This file holds the information on root name servers needed to
 ;       initialize cache of Internet domain name servers
 ;       (e.g. reference this file in the &quot;cache  .  &lt;file&gt;&quot;
 ;       configuration file of BIND domain name servers).
 ;
 ;       This file is made available by InterNIC 
 ;       under anonymous FTP as
 ;           file                /domain/named.root
 ;           on server           FTP.INTERNIC.NET
 ;       -OR-                    RS.INTERNIC.NET
 ;
 ;       last update:    Feb 04, 2008
 ;       related version of root zone:   2008020400
 ;
 ; formerly NS.INTERNIC.NET
 ;
 .                        3600000  IN  NS    A.ROOT-SERVERS.NET.
 A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
 A.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:BA3E::2:30
 ;
 ; formerly NS1.ISI.EDU
 ;
 .                        3600000      NS    B.ROOT-SERVERS.NET.
 B.ROOT-SERVERS.NET.      3600000      A     192.228.79.201
 ;
 ; formerly C.PSI.NET
 ;
 .                        3600000      NS    C.ROOT-SERVERS.NET.
 C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
 ;
 ; formerly TERP.UMD.EDU
 ;
 .                        3600000      NS    D.ROOT-SERVERS.NET.
 D.ROOT-SERVERS.NET.      3600000      A     128.8.10.90
 ;
 ; formerly NS.NASA.GOV
 ;
 .                        3600000      NS    E.ROOT-SERVERS.NET.
 E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
 ;
 ; formerly NS.ISC.ORG
 ;
 .                        3600000      NS    F.ROOT-SERVERS.NET.
 F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
 F.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2f::f
 ;
 ; formerly NS.NIC.DDN.MIL
 ;
 .                        3600000      NS    G.ROOT-SERVERS.NET.
 G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
 ;
 ; formerly AOS.ARL.ARMY.MIL
 ;
 .                        3600000      NS    H.ROOT-SERVERS.NET.
 H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
 H.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:1::803f:235
 ;
 ; formerly NIC.NORDU.NET
 ;
 .                        3600000      NS    I.ROOT-SERVERS.NET.
 I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
 ;
 ; operated by VeriSign, Inc.
 ;
 .                        3600000      NS    J.ROOT-SERVERS.NET.
 J.ROOT-SERVERS.NET.      3600000      A     192.58.128.30
 J.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:C27::2:30
 ;
 ; operated by RIPE NCC
 ;
 .                        3600000      NS    K.ROOT-SERVERS.NET.
 K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129 
 K.ROOT-SERVERS.NET.      3600000      AAAA  2001:7fd::1
 ;
 ; operated by ICANN
 ;
 .                        3600000      NS    L.ROOT-SERVERS.NET.
 L.ROOT-SERVERS.NET.      3600000      A     199.7.83.42
 ;
 ; operated by WIDEaimer
 ;
 .                        3600000      NS    M.ROOT-SERVERS.NET.
 M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
 M.ROOT-SERVERS.NET.      3600000      AAAA  2001:dc3::35
 ; End of File

==== La zone &quot;localhost&quot; ====

 # cat db.local 
 ;
 ; BIND data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      2		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 @	IN	A	127.0.0.1
 @	IN	AAAA	::1

Peu utilisée en général, elle permet de résoudre localhost : 

La structure de ce dernier fichier est un peu déroutante au début, emplie de @ . A AAAA SOA et autres IN que nous détaillerons plus loin.
Nous remarquons que localhost possède deux IP : 127.0.0.1 (IPV4) et ::1 (IPV6) vous le saviez probablement déjà!

==== Les zones in-addr.arpa ====

Nous venons de voir les fichiers qui permettent de résoudre l'adresse d'une machine à partir de son nom. Or, il arrive que certains mécanismes réclament l'inverse, c'est à dire trouver le (les) noms associés à des IP.

Les zones in-addr.arpa servent à ça.

Voici la zone inverse pour localhost :

 # cat db.127 
 ;
 ; BIND reverse data file for local loopback interface
 ;
 $TTL	604800
 @	IN	SOA	localhost. root.localhost. (
 			      1		; Serial
 			 604800		; Refresh
 			  86400		; Retry
 			2419200		; Expire
 			 604800 )	; Negative Cache TTL
 ;
 @	IN	NS	localhost.
 1.0.0	IN	PTR	localhost.

La notation est ici inversée.
Si nous cherchons dans la zone 127 l'adresse 0.0.1 nous tomberons sur localhost =&gt; 1.0.0 IN PTR localhost.

Par exemple, Pour l'adresse 192.1.2.3, nous obtenons le nom de domaine 3.2.1.192.in-addr.arpa.

== Contenu d'une Zone ==

Une zone contient deux enregistrements obligatoires :

* SOA
* NS

=== SOA ===

SOA (Start Of Authority). Le champ SOA indique quel est le serveur « maitre ». Ce serveur peut-avoir plusieurs serveurs esclaves

 $ host -t soa google.fr
 google.fr has SOA record ns1.google.com. dns-admin.google.com. 1423257 21600 3600 1209600 300

Nous savons donc que le serveur ns1.google.com est le serveur maître du domaine google.com.
Et nous avons l'adresse email du responsable : dns-admin@google.com (l'arobase est remplacé par un point dans le fichier de zone)

L'enregistrement SOA contient un certain nombre d'enregistrements et de paramètres:

==== Le nom du primaire ====

 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici.

C'est le nom du serveur primaire pour la zone.
L'adresse de courrier électronique du responsable technique de la zone (zone-contact).
Il faut l'écrire en replaçant le @ par un point. On a alors par exemple: root@inria.fr qui devient root.inria.fr

==== A, AAAA, MX, CNAME, etc. ====

Les types d'enregistrements sont: A, AAAA, MX, CNAME, NS, SOA, PTR, TXT, HINFO, WKS, RP, MA, MB.

===== A (Address) =====

C'est l'enregistrement le plus courant. Le DNS a été créé en grande partie pour ça...
Le champ A (Address) fait correspondre un nom à une adresse IPv4.

nom     IN      A       193.10.20.30

Dans le cas d'une machine qui dispose de plus d'une adresse IP (un routeur ou une machine avec plusieurs cartes), il faut indiquer un enregistrement A par adresse, mais il faut alors que tous les enregistrements PTR pointent vers ce nom là.

===== AAAA (Address IPV6) =====

Idem au champ A, mais correspond à une adresse de type IPV6

===== NS (Name Server) =====

Le champ NS (Name Server) indique le nom d'un serveur de noms. Il peut y avoir plusieurs champs NS s'il y a plusieurs serveurs de noms...

===== CNAME (Common Name) =====

Le champ CNAME (Common Name) est utilisé pour créer des alias. Un &quot;vrai&quot; nom doit être préalablement déclaré avec la variable A, un alias peut ensuite être créé qui pointera vers celui-ci.

===== MX (Mail eXchanger) =====

Le champ MX (Mail eXchanger), est utile pour le protocole SMTP ou TXT.

Il indique pour un nom de domaine quelle est la machine à laquelle il faut envoyer le courrier pour ce domaine.

Si plusieurs enregistrements MX sont présents, il faut leur attribuer un poids... Le MTA (Mail transfert agent) tentera d'envoyer le courrier en premier à la machine ayant le poids associé le plus faible, puis ensuite dans l'ordre croissant des poids.

Si la machine qui relaie le courrier est dans la liste des MX pour le domaine, elle envoie le courrier aux machines de poids inférieur au sien.

nom     IN      MX      10      premier.relais.
        IN      MX      20      second.relais.

==== Le numéro de série de la zone ====

Il permet aux serveurs secondaires qui interrogent régulièrement le serveur primaire de chaque zone de déterminer quand la zone a été mise à jour.



==== L'intervalle entre les rafraichissements (refresh) ====

Temps, en seconde, au bout duquel les serveurs « esclaves » devront demander à rafraichir leur données pour cette zone. 3600 secondes dans l'exemple ci-dessous, soit une heure. 

 3600           ; Refresh

La valeur conseillée est 24 heures, soit 86400 secondes.

==== L'intervalle entre les rafraichissements (retry) ====

Durée, en secondes, à partir de laquelle un serveur esclave doit ré-essayer de se synchroniser en cas d'échec du rafraichissement. Ici toutes les 300 secondes, soit toutes les 5 minutes. 

 300            ; Retry

La valeur conseillée est 6 heures, soit 21600 secondes.

==== La durée d'expiration des enregistrements d'un secondaire ====

En cas d'échec des tentatives de synchronisation, indique le temps (en secondes) au bout duquel les serveurs secondaires devront considérer qu'ils ne savent plus répondre aux requêtes concernant cette zone.

 2419200          ; Expire

La valeur conseillée est de 41 jours, soit 3600000 secondes.

==== La durée de vie par défaut des enregistrements (default TTL) ====

Durée de vie de l'information fournie.
Les serveurs DNS récursifs conserveront en cache les informations récoltées pendant la durée indiquée dans ce paramètre. 0 indique que les valeurs ne doivent pas être conservées en cache.

 1600 )           ; Negative Cache TTL

La valeur conseillée est de 24 heures, soit 86400 secondes.

==== Le symbole « @ » ====

Dans un fichier de configuration de zone, ce symbole représente exactement le nom de domaine de la zone. Par exemple, lorsque nous allons créer notre zone maison.mrs, écrire : 

 maison.mrs.  IN SOA ...

Nous pourrons écrire : 

 @            IN SOA ...

=== NS (Name Server) ===

Cet enregistrement indique une délégation pour la gestion du nom donné. C'est à dire que le nom donné devient une zone, dont la gestion est déléguée au serveur indiqué en partie droite.

L'enregistrement donne le nom d'un des serveurs de noms autoritaire pour la zone, comme il y a toujours plus d'un serveur de noms pour une zone, on répète l'enregistrement NS autant de fois qu'il y a de serveurs pour la zone.

Quand pour un nom, on a des enregistrements NS, il est interdit de faire figurer dans la zone parente (celle là) d'autres enregistrements. S'il y a à faire figurer des enregistrements, il faut les mettre dans la zone fille.

zone    IN      NS      serveur.nom.de.domaine.

          IN      NS      autreServeur.nom.de.domaine.

          IN      NS      encoreUn.autreNom.de.domaine.

== Créons notre première zone ==

Maintenant que les explications indigestes sont faites... 
La meilleure façon de comprendre, est d'appliquer à son réseau local sa propre zone!

=== La zone chezmoi.ici ===

Pour cet exemple j'ai pris un nom de domaine bidon, c'est tout a fait possible, vous pouvez donner n'importe quel nom à votre Intranet!

Notre serveur s'appelle tebilepas il dispose de l'IP 192.168.1.254

Le domaine est chezmoi.ici

Nous disposons d'assez d'informations pour créer la zone chezmoi.ici

Créons d'abord dans /etc/bind/ un fichier nommé : db.chezmoi.ici qui contiendrai ceci :

 $TTL    1600
 @       IN      SOA     tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. (
                         2009012907       ; Serial
                         604800           ; Refresh
                         86400            ; Retry
                         2419200          ; Expire
                         1600 )           ; Negative Cache TTL
 
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.
 chezmoi.ici.    IN      A       192.168.1.254
 tebilepas  IN      A       192.168.1.254
 coucou     IN      A       192.168.1.1
 pourquoi   IN      CNAME   coucou
 tespascheztoi      IN      CNAME   forum.debian-fr.org.

Nous aurions pu écrire :
 @         IN    NS      tebilepas.chezmoi.ici.
à la place de (cela revient au même)
 chezmoi.ici.    IN      NS      tebilepas.chezmoi.ici.

Nous aurions aussi pu éviter les commentaires (par exemple : ;Serial) mais pour les explications ce sera plus facile.

Ce sera suffisant pour commencer!

Pour que cette zone soit prise en compte, nous devons maintenant l'inclure dans le fichier /etc/bind/named.conf.local

Ceci devrait permettre de répondre aux requêtes de type NS pour le domaine maison.mrs, de répondre aussi aux requêtes de type A pour debvirt.maison.mrs et pour test1.maison.mrs, constater aussi que les alias fonctionnent dans et hors du domaine. 

Il nous faut maintenant indiquer à bind que cette zone existe. Nous allons le faire dans le fichier /etc/bind/named.conf.local : 

 zone &quot;chezmoi.ici&quot; {
         type master;
         file &quot;/etc/bind/db.chezmoi.ici&quot;;
         };

Nous redémarrons notre serveur bind

 # service bind9 restart
 Stopping domain name service...: bind9 waiting for pid 1353 to die.
 Starting domain name service...: bind9.

== Tests ==

Maintenant que notre serveur de nom est configuré, il faut le tester...

=== Avec la commande host ===

 $ host -a chezmoi.ici localhost
 Trying &quot;chezmoi.ici&quot;
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 46986
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
 
 ;; QUESTION SECTION:
 ;chezmoi.ici.			IN	ANY
 
 ;; ANSWER SECTION:
 chezmoi.ici.		1600	IN	SOA	tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. 2009012907 604800 86400 2419200 1600
 chezmoi.ici.		1600	IN	NS	tebilepas.chezmoi.ici.
 chezmoi.ici.		1600	IN	A	192.168.1.254
 
 ;; ADDITIONAL SECTION:
 tebilepas.chezmoi.ici.	1600	IN	A	192.168.1.254
 
 Received 126 bytes from ::1#53 in 5 ms

 $ host coucou.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 coucou.chezmoi.ici has address 192.168.1.1

 $ host pourquoi.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: ::1#53
 Aliases: 
 
 pourquoi.chezmoi.ici is an alias for coucou.chezmoi.ici.
 coucou.chezmoi.ici has address 192.168.1.1

 $ host ailleurs.chezmoi.ici localhost
 Using domain server:
 Name: localhost
 Address: 127.0.0.1#53
 Aliases: 
 
 ailleurs.chezmoi.ici is an alias for forum.debian-fr.org.
 forum.debian-fr.org is an alias for www.zehome.com.
 www.zehome.com has address 88.165.116.107

Comme vous avez pu le constater, votre DNS fonctionne parfaitement, il renseigne nos machines sur le réseau local, et il pourvoit à nos demandes d'IP Internet !

=== Avec la commande nslookup ===

&lt;big&gt;&lt;code text&gt;
$ nslookup
&gt; server
Default server: 192.168.0.254
Address: 192.168.0.254#53
Default server: xxx.xxx.xxx.xxx
Address: xxx.xxx.xxx.xxx#53
&gt; localhost
Server:		192.168.0.254
Address:	192.168.0.254#53

Name:	localhost
Address: 127.0.0.1
&gt; www.chezmoi.ici
Server:		192.168.0.254
Address:	192.168.0.254#53

www.chezmoi.ici	canonical name = chezmoi.ici.
Name:	chezmoi.ici
Address: 192.168.0.254
&gt; tebilepas
Server:		192.168.0.254
Address:	192.168.0.254#53

Name:	tebilepas.chezmoi.ici
Address: 192.168.0.254
&gt; www.google.com
Server:		192.168.0.254
Address:	192.168.0.254#53

Non-authoritative answer:
www.google.com	canonical name = www.l.google.com.
Name:	www.l.google.com
Address: 209.85.148.105
Name:	www.l.google.com
Address: 209.85.148.106
Name:	www.l.google.com
Address: 209.85.148.147
Name:	www.l.google.com
Address: 209.85.148.99
Name:	www.l.google.com
Address: 209.85.148.103
Name:	www.l.google.com
Address: 209.85.148.104
&gt; exit

$
&lt;/code&gt;&lt;/big&gt;

Explication. Lorsque nous tapons la commande nslookup, apparait l'invite suivante :

 $ nslookup
 &gt;

Il suffit de connaître très peu de commandes

server &gt; donne la liste des serveurs DNS qui seront interrogés, dans l'ordre;

nslookup précise à chaque demande quel serveur à répondu :
 Server:		192.168.0.254
 Address:	192.168.0.254#53

192.168.0.254, c'est nous! :)

Nom de machine ou de domaine &gt; donne la résolution du nom demandé;

exit &gt; sortir de nslookup.

=== Le fichier resolv.conf ===

Je n'en ai pas parlé jusqu'ici, mais il faut vérifier que votre fichier /etc/resolv.conf reflète bien votre configuration.
Dans l'exemple pris dans cette page, celui-ci doit contenir :

 $ cat /etc/resolv.conf 
 domain chezmoi.ici
 search chezmoi.ici
 nameserver 192.168.0.254
 nameserver xxx.xxx.xxx.xxx

C'est bon, le domaine est bien chezmoi.ici, et les DNS, sont dans l'ordre, le votre, puis celui de votre FAI.

Deux cas se présentent :

==== vous avez resolvconf installé ====

&lt;big&gt;&lt;code&gt;
apt-cache policy resolvconf
resolvconf:
  Installé : 1.46
  Candidat : 1.46
 Table de version :
     1.46 0
        500 http://nas.isalo.org/debian/ squeeze/main amd64 Packages
        500 http://ftp.fr.debian.org/debian/ squeeze/main amd64 Packages
&lt;/code&gt;&lt;/big&gt;

Soit vous obtenez votre ip par dhcp auquel cas, rien à faire
Soit vous fixez votre ip par le fichier /etc/network/interfaces auquel cas il faut ajouter les lignes suivantes dans celui-ci :

 dns-nameservers 192.168.0.254 xxx.xxx.xxx.xxx
 dns-search chezmoi.ici

==== vous n'avez pas resolvconf installé ====

Il faut modifier vous même le fichier /etc/resolv.conf pour qu'il reflète votre configuration :

 $ cat /etc/resolv.conf 
 domain chezmoi.ici
 search chezmoi.ici
 nameserver 192.168.0.254
 nameserver xxx.xxx.xxx.xxx

== Le Round-robin ==

Le Round-robin est une répartition de charge (load balancing) équitable entre serveurs d'une ferme informatique (cluster). Chaque serveur doit traiter le même nombre de requêtes. Cela nécessite une ferme de serveurs homogènes en capacité de traitement. Cette répartition de charge peut être effectuée par le serveur DNS (Domain Name System) qui associe plusieurs adresses IP à un nom de domaine.

Exemple d'un round-robin fonctionnel :

 jeu. août 05 02:46:56 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99

 jeu. août 05 02:46:57 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147

 jeu. août 05 02:46:59 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103
 www.l.google.com has address 72.14.204.104

 jeu. août 05 02:47:01 /home/laurent&gt; host www.google.mg
 www.google.mg is an alias for www.google.com.
 www.google.com is an alias for www.l.google.com.
 www.l.google.com has address 72.14.204.104
 www.l.google.com has address 72.14.204.147
 www.l.google.com has address 72.14.204.99
 www.l.google.com has address 72.14.204.103

Le premier serveur de la liste n'est jamais le même, il y a une rotation...


ToDo : Conclusion

[[Category:Serveurs]]</text>
      <sha1>89o4josaapahmi937l9sqslzs1tidlh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Bac à sable</title>
    <ns>0</ns>
    <id>58</id>
    <revision>
      <id>187</id>
      <timestamp>2010-01-23T17:37:33Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <comment>Page créée avec « = testez le wiki ici =  {{Ébauche}} {{sid}} {{stable}} »</comment>
      <text xml:space="preserve" bytes="55">= testez le wiki ici =

{{Ébauche}}
{{sid}}
{{stable}}</text>
      <sha1>i5jpbfyv5j64lvm3v60bf84q70y57a7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>188</id>
      <parentid>187</parentid>
      <timestamp>2010-01-23T17:37:56Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="68">= testez le wiki ici =

{{Ébauche|lees patates}}
{{sid}}
{{stable}}</text>
      <sha1>bhsmxgi9tuij2ihbqhbp01y1fo6mh8p</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>189</id>
      <parentid>188</parentid>
      <timestamp>2010-01-23T17:38:12Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="67">= testez le wiki ici =

{{Ébauche|les patates}}
{{sid}}
{{stable}}</text>
      <sha1>h2eahm3o5xp9pj2b5mjedkbs75ur6re</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>367</id>
      <parentid>189</parentid>
      <timestamp>2010-01-27T04:27:32Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1414">= testez le wiki ici =

{{Ébauche|les patates}}
{{sid}}
{{stable}}

== Titre de deuxième niveau ==

Important : le titre de premier niveau n'est jamais utilisé dans les articles puisqu'il s'agit du niveau utilisé pour le titre des articles.

Une liste :
* Un lien interne direct: [[Special:Recentchanges]]
* ''italique''
* '''gras'''
* '''''gras et italique'''''
* &lt;s&gt;barré&lt;/s&gt;
* Et ça marche avec les apostrophes : l''''automne''' sera pluvieux !
On numérote '''une''' liste ?
# Pourquoi pas ?
# Je veux bien !
# C'est facile... Par exemple : [[Manuel_d'installation]] ou encore [[Commandes_informations]]

=== Troisième niveau : comment utiliser les indices ===

Du texte normal peut contenir &lt;sub&gt;un indice&lt;/sub&gt; pour des notations.

==== Quatrième niveau de titre : et maintenant les exposants ====

Du texte normal peut contenir aussi &lt;sup&gt;un exposant&lt;/sup&gt;.

===== Cinquième niveau de titre =====

Pour passer au paragraphe suivant, il faut laisser une ligne blanche.
Ici, on est toujours dans le même paragraphe.

Et hop, voici le nouveau paragraphe !

====== Sixième (et dernier) niveau de titre ======

Normalement, ça doit suffire pour découper un article en détail.

== Et pour les tableaux... ==

{| class=&quot;wikitable&quot;
|+ Titre du tableau
! colonne 1
! colonne 2
|-
| On peut aussi
| faire des tableaux
|- {{ligne grise}}
| c'est bien pratique
| pour présenter des données chiffrées
|}</text>
      <sha1>m35xm2u202fjq563a06l8soljpga8d7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>369</id>
      <parentid>367</parentid>
      <timestamp>2010-01-27T05:11:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1725">= testez le wiki ici =

{{Ébauche|les patates}}
{{sid}}
{{stable}}

Où est le WYSIWYG&amp;nbsp;? =&amp;gt; [What You See Is What You Get]&amp;nbsp;!!! 

*'''Un'''&lt;br&gt; 
*Deux
*''&lt;u&gt;Trois&lt;/u&gt;''

&lt;br&gt;
&lt;blockquote&gt;Test de bloc-note....&lt;br&gt;
Deuxième ligne&lt;br&gt;
Troisième ligne
&lt;/blockquote&gt; 
&lt;br&gt; Retour

&lt;br&gt; 

tabulation 0 
&lt;blockquote&gt;tabulation 1 &lt;/blockquote&gt;&lt;pre&gt;pré-formaté ?
&lt;/pre&gt;


== Titre de deuxième niveau ==

Important : le titre de premier niveau n'est jamais utilisé dans les articles puisqu'il s'agit du niveau utilisé pour le titre des articles.

Une liste :
* Un lien interne direct: [[Special:Recentchanges]]
* ''italique''
* '''gras'''
* '''''gras et italique'''''
* &lt;s&gt;barré&lt;/s&gt;
* Et ça marche avec les apostrophes : l''''automne''' sera pluvieux !
On numérote '''une''' liste ?
# Pourquoi pas ?
# Je veux bien !
# C'est facile... Par exemple : [[Manuel_d'installation]] ou encore [[Commandes_informations]]

=== Troisième niveau : comment utiliser les indices ===

Du texte normal peut contenir &lt;sub&gt;un indice&lt;/sub&gt; pour des notations.

==== Quatrième niveau de titre : et maintenant les exposants ====

Du texte normal peut contenir aussi &lt;sup&gt;un exposant&lt;/sup&gt;.

===== Cinquième niveau de titre =====

Pour passer au paragraphe suivant, il faut laisser une ligne blanche.
Ici, on est toujours dans le même paragraphe.

Et hop, voici le nouveau paragraphe !

====== Sixième (et dernier) niveau de titre ======

Normalement, ça doit suffire pour découper un article en détail.

== Et pour les tableaux... ==

{| class=&quot;wikitable&quot;
|+ Titre du tableau
! colonne 1
! colonne 2
|-
| On peut aussi
| faire des tableaux
|- {{ligne grise}}
| c'est bien pratique
| pour présenter des données chiffrées
|}</text>
      <sha1>7yxbxccbwpgjw95af265gv51szd24ww</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>370</id>
      <parentid>369</parentid>
      <timestamp>2010-01-27T05:13:32Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1731">= testez le wiki ici =

{{Ébauche|les patates}}
{{sid}}
{{stable}}

Où est le WYSIWYG&amp;nbsp;? =&amp;gt; [What You See Is What You Get]&amp;nbsp;!!! 

*'''Un'''&lt;br&gt; 
*Deux
*''&lt;u&gt;Trois&lt;/u&gt;''

&lt;br&gt;
&lt;blockquote&gt;Test de bloc-note....&lt;br&gt;
Deuxième ligne&lt;br&gt;
Troisième ligne
&lt;/blockquote&gt; 
&lt;br&gt; Retour

&lt;br&gt; 

tabulation 0 
&lt;blockquote&gt;tabulation 1 &lt;/blockquote&gt;&lt;pre&gt;pré-formaté ?
&lt;/pre&gt;


== Titre de deuxième niveau ==

'''Important : le titre de premier niveau n'est jamais utilisé dans les articles puisqu'il s'agit du niveau utilisé pour le titre des articles.'''

Une liste :
* Un lien interne direct: [[Special:Recentchanges]]
* ''italique''
* '''gras'''
* '''''gras et italique'''''
* &lt;s&gt;barré&lt;/s&gt;
* Et ça marche avec les apostrophes : l''''automne''' sera pluvieux !
On numérote '''une''' liste ?
# Pourquoi pas ?
# Je veux bien !
# C'est facile... Par exemple : [[Manuel_d'installation]] ou encore [[Commandes_informations]]

=== Troisième niveau : comment utiliser les indices ===

Du texte normal peut contenir &lt;sub&gt;un indice&lt;/sub&gt; pour des notations.

==== Quatrième niveau de titre : et maintenant les exposants ====

Du texte normal peut contenir aussi &lt;sup&gt;un exposant&lt;/sup&gt;.

===== Cinquième niveau de titre =====

Pour passer au paragraphe suivant, il faut laisser une ligne blanche.
Ici, on est toujours dans le même paragraphe.

Et hop, voici le nouveau paragraphe !

====== Sixième (et dernier) niveau de titre ======

Normalement, ça doit suffire pour découper un article en détail.

== Et pour les tableaux... ==

{| class=&quot;wikitable&quot;
|+ Titre du tableau
! colonne 1
! colonne 2
|-
| On peut aussi
| faire des tableaux
|- {{ligne grise}}
| c'est bien pratique
| pour présenter des données chiffrées
|}</text>
      <sha1>0mq5ddoq7dcpndnlqlhdzf28l3prmf9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>419</id>
      <parentid>370</parentid>
      <timestamp>2010-01-27T13:22:49Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2459">= testez le wiki ici =

{{Ébauche|les patates}}
{{sid}}
{{stable}}

Où est le WYSIWYG&amp;nbsp;? =&amp;gt; [What You See Is What You Get]&amp;nbsp;!!! 

*'''Un'''&lt;br&gt; 
*Deux
*''&lt;u&gt;Trois&lt;/u&gt;''

&lt;br&gt;
&lt;blockquote&gt;Test de bloc-note....&lt;br&gt;
Deuxième ligne&lt;br&gt;
Troisième ligne
&lt;/blockquote&gt; 
&lt;br&gt; Retour

&lt;br&gt; 

tabulation 0 
&lt;blockquote&gt;tabulation 1 &lt;/blockquote&gt;&lt;pre&gt;pré-formaté ?
&lt;/pre&gt;


== Titre de deuxième niveau ==

'''Important : le titre de premier niveau n'est jamais utilisé dans les articles puisqu'il s'agit du niveau utilisé pour le titre des articles.'''

Une liste :
* Un lien interne direct: [[Special:Recentchanges]]
* ''italique''
* '''gras'''
* '''''gras et italique'''''
* &lt;s&gt;barré&lt;/s&gt;
* Et ça marche avec les apostrophes : l''''automne''' sera pluvieux !
On numérote '''une''' liste ?
# Pourquoi pas ?
# Je veux bien !
# C'est facile... Par exemple : [[Manuel_d'installation]] ou encore [[Commandes_informations]]

=== Troisième niveau : comment utiliser les indices ===

Du texte normal peut contenir &lt;sub&gt;un indice&lt;/sub&gt; pour des notations.

==== Quatrième niveau de titre : et maintenant les exposants ====

Du texte normal peut contenir aussi &lt;sup&gt;un exposant&lt;/sup&gt;.

===== Cinquième niveau de titre =====

Pour passer au paragraphe suivant, il faut laisser une ligne blanche.
Ici, on est toujours dans le même paragraphe.

Et hop, voici le nouveau paragraphe !

====== Sixième (et dernier) niveau de titre ======

Normalement, ça doit suffire pour découper un article en détail.

== Et pour les tableaux... ==

{| class=&quot;wikitable&quot;
|+ Titre du tableau
! colonne 1
! colonne 2
|-
| On peut aussi
| faire des tableaux
|- {{ligne grise}}
| c'est bien pratique
| pour présenter des données chiffrées
|}

== Exemple de texte avec une image ==


[[Fichier:IMG_5906.JPG|120px||right|thumb|left||Différents formats peuvent être utilisés pour les images (gif, png, jpg).]]

'''lol''' (Paris, 07 décembre 1965) est un parfait inconnu !

Lol tente désespérément de faire fonctionner une extension du MadiaWiki pendant trois jours... C'est dire son niveau !

Aujourd'hui après une dure bataille, il parvient enfin à mettre un terme au combat d'une semaine, contre ses propres lacunes, et en sort tout à fait plus inconnu qu'avant !

A part pédaler dans la choucroute quand il s'agit de Debian, lol fait un peu de quad, et quand il ne se casse pas la figure, il arrive à manoeuvrer sa machine (bien trop puissante pour lui) ...</text>
      <sha1>b4fo25qmnjpltgbbhl8ychxd674ovlb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>420</id>
      <parentid>419</parentid>
      <timestamp>2010-01-27T14:42:28Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2740">= testez le wiki ici =

{{Ébauche|les patates}}
{{sid}}
{{stable}}

Où est le WYSIWYG&amp;nbsp;? =&amp;gt; [What You See Is What You Get]&amp;nbsp;!!! 

*'''Un'''&lt;br&gt; 
*Deux
*''&lt;u&gt;Trois&lt;/u&gt;''

&lt;br&gt;
&lt;blockquote&gt;Test de bloc-note....&lt;br&gt;
Deuxième ligne&lt;br&gt;
Troisième ligne
&lt;/blockquote&gt; 
&lt;br&gt; Retour

&lt;br&gt; 

tabulation 0 
&lt;blockquote&gt;tabulation 1 &lt;/blockquote&gt;&lt;pre&gt;pré-formaté ?
&lt;/pre&gt;


== Titre de deuxième niveau ==

'''Important : le titre de premier niveau n'est jamais utilisé dans les articles puisqu'il s'agit du niveau utilisé pour le titre des articles.'''

Une liste :
* Un lien interne direct: [[Special:Recentchanges]]
* ''italique''
* '''gras'''
* '''''gras et italique'''''
* &lt;s&gt;barré&lt;/s&gt;
* Et ça marche avec les apostrophes : l''''automne''' sera pluvieux !
On numérote '''une''' liste ?
# Pourquoi pas ?
# Je veux bien !
# C'est facile... Par exemple : [[Manuel_d'installation]] ou encore [[Commandes_informations]]

=== Troisième niveau : comment utiliser les indices ===

Du texte normal peut contenir &lt;sub&gt;un indice&lt;/sub&gt; pour des notations.

==== Quatrième niveau de titre : et maintenant les exposants ====

Du texte normal peut contenir aussi &lt;sup&gt;un exposant&lt;/sup&gt;.

===== Cinquième niveau de titre =====

Pour passer au paragraphe suivant, il faut laisser une ligne blanche.
Ici, on est toujours dans le même paragraphe.

Et hop, voici le nouveau paragraphe !

====== Sixième (et dernier) niveau de titre ======

Normalement, ça doit suffire pour découper un article en détail.

== Et pour les tableaux... ==

{| class=&quot;wikitable&quot;
|+ Titre du tableau
! colonne 1
! colonne 2
|-
| On peut aussi
| faire des tableaux
|- {{ligne grise}}
| c'est bien pratique
| pour présenter des données chiffrées
|}

== Exemple de texte avec une image ==


[[Fichier:IMG_5906.JPG|120px|right|thumb||Différents formats peuvent être utilisés pour les images (gif, png, jpg).]]

'''lol''' (Paris, 07 décembre 1965) est un parfait inconnu !

Lol tente désespérément de faire fonctionner une extension du MadiaWiki pendant trois jours... C'est dire son niveau !

Aujourd'hui après une dure bataille, il parvient enfin à mettre un terme au combat d'une semaine, contre ses propres lacunes, et en sort tout à fait plus inconnu qu'avant !

A part pédaler dans la choucroute quand il s'agit de Debian, lol fait un peu de quad, et quand il ne se casse pas la figure, il arrive à manoeuvrer sa machine (bien trop puissante pour lui) ...

=== Galerie ===

Utilisez la galerie pour présenter plusieurs images de manière compacte au sein d'un article :
&lt;gallery&gt;
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Lol]]
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Encore Lol]]
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Toujours Lol]]
&lt;/gallery&gt;</text>
      <sha1>a9qhlbtpvc8nwdmb3gws48alcmeyvq2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>499</id>
      <parentid>420</parentid>
      <timestamp>2010-01-29T12:17:14Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Exemple de texte avec une image */</comment>
      <text xml:space="preserve" bytes="2740">= testez le wiki ici =

{{Ébauche|les patates}}
{{sid}}
{{stable}}

Où est le WYSIWYG&amp;nbsp;? =&amp;gt; [What You See Is What You Get]&amp;nbsp;!!! 

*'''Un'''&lt;br&gt; 
*Deux
*''&lt;u&gt;Trois&lt;/u&gt;''

&lt;br&gt;
&lt;blockquote&gt;Test de bloc-note....&lt;br&gt;
Deuxième ligne&lt;br&gt;
Troisième ligne
&lt;/blockquote&gt; 
&lt;br&gt; Retour

&lt;br&gt; 

tabulation 0 
&lt;blockquote&gt;tabulation 1 &lt;/blockquote&gt;&lt;pre&gt;pré-formaté ?
&lt;/pre&gt;


== Titre de deuxième niveau ==

'''Important : le titre de premier niveau n'est jamais utilisé dans les articles puisqu'il s'agit du niveau utilisé pour le titre des articles.'''

Une liste :
* Un lien interne direct: [[Special:Recentchanges]]
* ''italique''
* '''gras'''
* '''''gras et italique'''''
* &lt;s&gt;barré&lt;/s&gt;
* Et ça marche avec les apostrophes : l''''automne''' sera pluvieux !
On numérote '''une''' liste ?
# Pourquoi pas ?
# Je veux bien !
# C'est facile... Par exemple : [[Manuel_d'installation]] ou encore [[Commandes_informations]]

=== Troisième niveau : comment utiliser les indices ===

Du texte normal peut contenir &lt;sub&gt;un indice&lt;/sub&gt; pour des notations.

==== Quatrième niveau de titre : et maintenant les exposants ====

Du texte normal peut contenir aussi &lt;sup&gt;un exposant&lt;/sup&gt;.

===== Cinquième niveau de titre =====

Pour passer au paragraphe suivant, il faut laisser une ligne blanche.
Ici, on est toujours dans le même paragraphe.

Et hop, voici le nouveau paragraphe !

====== Sixième (et dernier) niveau de titre ======

Normalement, ça doit suffire pour découper un article en détail.

== Et pour les tableaux... ==

{| class=&quot;wikitable&quot;
|+ Titre du tableau
! colonne 1
! colonne 2
|-
| On peut aussi
| faire des tableaux
|- {{ligne grise}}
| c'est bien pratique
| pour présenter des données chiffrées
|}

== Exemple de texte avec une image ==


[[Fichier:IMG_5906.JPG|120px|right|thumb||Différents formats peuvent être utilisés pour les images (gif, png, jpg).]]

'''lol''' (Paris, 07 décembre 1965) est un parfait inconnu !

Lol tente désespérément de faire fonctionner une extension du MediaWiki pendant trois jours... C'est dire son niveau !

Aujourd'hui après une dure bataille, il parvient enfin à mettre un terme au combat d'une semaine, contre ses propres lacunes, et en sort tout à fait plus inconnu qu'avant !

A part pédaler dans la choucroute quand il s'agit de Debian, lol fait un peu de quad, et quand il ne se casse pas la figure, il arrive à manoeuvrer sa machine (bien trop puissante pour lui) ...

=== Galerie ===

Utilisez la galerie pour présenter plusieurs images de manière compacte au sein d'un article :
&lt;gallery&gt;
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Lol]]
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Encore Lol]]
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Toujours Lol]]
&lt;/gallery&gt;</text>
      <sha1>0get0629dgk22vib7ydlybule2tl32u</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>595</id>
      <parentid>499</parentid>
      <timestamp>2010-01-31T08:30:09Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2858">= testez le wiki ici =

{{Ébauche|les patates}}
{{sid}}
{{stable}}

Où est le WYSIWYG&amp;nbsp;? =&amp;gt; [What You See Is What You Get]&amp;nbsp;!!! 

*'''Un'''&lt;br&gt; 
*Deux
*''&lt;u&gt;Trois&lt;/u&gt;''

&lt;br&gt;
&lt;blockquote&gt;Test de bloc-note....&lt;br&gt;
Deuxième ligne&lt;br&gt;
Troisième ligne
&lt;/blockquote&gt;
Hey! Blockquote c'est pas une balise de bloc-note... c'est une balise de citation (blockquote ==&gt; bloc de citation) :x
&lt;br&gt; Retour

&lt;br&gt; 

tabulation 0 
&lt;blockquote&gt;tabulation 1 &lt;/blockquote&gt;&lt;pre&gt;pré-formaté ?
&lt;/pre&gt;


== Titre de deuxième niveau ==

'''Important : le titre de premier niveau n'est jamais utilisé dans les articles puisqu'il s'agit du niveau utilisé pour le titre des articles.'''

Une liste :
* Un lien interne direct: [[Special:Recentchanges]]
* ''italique''
* '''gras'''
* '''''gras et italique'''''
* &lt;s&gt;barré&lt;/s&gt;
* Et ça marche avec les apostrophes : l''''automne''' sera pluvieux !
On numérote '''une''' liste ?
# Pourquoi pas ?
# Je veux bien !
# C'est facile... Par exemple : [[Manuel_d'installation]] ou encore [[Commandes_informations]]

=== Troisième niveau : comment utiliser les indices ===

Du texte normal peut contenir &lt;sub&gt;un indice&lt;/sub&gt; pour des notations.

==== Quatrième niveau de titre : et maintenant les exposants ====

Du texte normal peut contenir aussi &lt;sup&gt;un exposant&lt;/sup&gt;.

===== Cinquième niveau de titre =====

Pour passer au paragraphe suivant, il faut laisser une ligne blanche.
Ici, on est toujours dans le même paragraphe.

Et hop, voici le nouveau paragraphe !

====== Sixième (et dernier) niveau de titre ======

Normalement, ça doit suffire pour découper un article en détail.

== Et pour les tableaux... ==

{| class=&quot;wikitable&quot;
|+ Titre du tableau
! colonne 1
! colonne 2
|-
| On peut aussi
| faire des tableaux
|- {{ligne grise}}
| c'est bien pratique
| pour présenter des données chiffrées
|}

== Exemple de texte avec une image ==


[[Fichier:IMG_5906.JPG|120px|right|thumb||Différents formats peuvent être utilisés pour les images (gif, png, jpg).]]

'''lol''' (Paris, 07 décembre 1965) est un parfait inconnu !

Lol tente désespérément de faire fonctionner une extension du MediaWiki pendant trois jours... C'est dire son niveau !

Aujourd'hui après une dure bataille, il parvient enfin à mettre un terme au combat d'une semaine, contre ses propres lacunes, et en sort tout à fait plus inconnu qu'avant !

A part pédaler dans la choucroute quand il s'agit de Debian, lol fait un peu de quad, et quand il ne se casse pas la figure, il arrive à manoeuvrer sa machine (bien trop puissante pour lui) ...

=== Galerie ===

Utilisez la galerie pour présenter plusieurs images de manière compacte au sein d'un article :
&lt;gallery&gt;
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Lol]]
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Encore Lol]]
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Toujours Lol]]
&lt;/gallery&gt;</text>
      <sha1>tc8mrd2851thgej1xxz18yp2wfkusg4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>808</id>
      <parentid>595</parentid>
      <timestamp>2010-02-03T17:13:06Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2738">= testez le wiki ici =

{{Ébauche|les patates}}
{{sid}}
{{stable}}

Où est le WYSIWYG&amp;nbsp;? =&amp;gt; [What You See Is What You Get]&amp;nbsp;!!! 

*'''Un'''&lt;br&gt; 
*Deux
*''&lt;u&gt;Trois&lt;/u&gt;''

&lt;br&gt;
&lt;blockquote&gt;Test de citation....&lt;br&gt;
Deuxième ligne&lt;br&gt;
Troisième ligne
&lt;/blockquote&gt;
&lt;br&gt; Retour

&lt;br&gt; 

tabulation 0 
&lt;blockquote&gt;tabulation 1 &lt;/blockquote&gt;&lt;pre&gt;pré-formaté ?
&lt;/pre&gt;


== Titre de deuxième niveau ==

'''Important : le titre de premier niveau n'est jamais utilisé dans les articles puisqu'il s'agit du niveau utilisé pour le titre des articles.'''

Une liste :
* Un lien interne direct: [[Special:Recentchanges]]
* ''italique''
* '''gras'''
* '''''gras et italique'''''
* &lt;s&gt;barré&lt;/s&gt;
* Et ça marche avec les apostrophes : l''''automne''' sera pluvieux !
On numérote '''une''' liste ?
# Pourquoi pas ?
# Je veux bien !
# C'est facile... Par exemple : [[Manuel_d'installation]] ou encore [[Commandes_informations]]

=== Troisième niveau : comment utiliser les indices ===

Du texte normal peut contenir &lt;sub&gt;un indice&lt;/sub&gt; pour des notations.

==== Quatrième niveau de titre : et maintenant les exposants ====

Du texte normal peut contenir aussi &lt;sup&gt;un exposant&lt;/sup&gt;.

===== Cinquième niveau de titre =====

Pour passer au paragraphe suivant, il faut laisser une ligne blanche.
Ici, on est toujours dans le même paragraphe.

Et hop, voici le nouveau paragraphe !

====== Sixième (et dernier) niveau de titre ======

Normalement, ça doit suffire pour découper un article en détail.

== Et pour les tableaux... ==

{| class=&quot;wikitable&quot;
|+ Titre du tableau
! colonne 1
! colonne 2
|-
| On peut aussi
| faire des tableaux
|- {{ligne grise}}
| c'est bien pratique
| pour présenter des données chiffrées
|}

== Exemple de texte avec une image ==


[[Fichier:IMG_5906.JPG|120px|right|thumb||Différents formats peuvent être utilisés pour les images (gif, png, jpg).]]

'''lol''' (Paris, 07 décembre 1965) est un parfait inconnu !

Lol tente désespérément de faire fonctionner une extension du MediaWiki pendant trois jours... C'est dire son niveau !

Aujourd'hui après une dure bataille, il parvient enfin à mettre un terme au combat d'une semaine, contre ses propres lacunes, et en sort tout à fait plus inconnu qu'avant !

A part pédaler dans la choucroute quand il s'agit de Debian, lol fait un peu de quad, et quand il ne se casse pas la figure, il arrive à manoeuvrer sa machine (bien trop puissante pour lui) ...

=== Galerie ===

Utilisez la galerie pour présenter plusieurs images de manière compacte au sein d'un article :
&lt;gallery&gt;
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Lol]]
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Encore Lol]]
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Toujours Lol]]
&lt;/gallery&gt;</text>
      <sha1>fpkv662qyqnjwln2dcmubyyvbbqqh9v</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>855</id>
      <parentid>808</parentid>
      <timestamp>2010-02-04T13:44:22Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2866">= testez le wiki ici =

{{Ébauche|les patates}}
{{sid}}
{{stable}}

Où est le WYSIWYG&amp;nbsp;? =&amp;gt; [What You See Is What You Get]&amp;nbsp;!!! 

*'''Un'''&lt;br&gt; 
*Deux
*''&lt;u&gt;Trois&lt;/u&gt;''

&lt;br&gt;
&lt;blockquote&gt;Test de citation....&lt;br&gt;
Deuxième ligne&lt;br&gt;
Troisième ligne
&lt;/blockquote&gt;
&lt;br&gt; Retour

=== Faire des alinéas (décalage, tabulation) ===

Il faut utiliser des ':', un pour chaque décalage.

 Sans retrait
 : Avec un retrait
 :: Avec deux retraits

Sans retrait
: Avec un retrait
:: Avec deux retraits


== Titre de deuxième niveau ==

'''Important : le titre de premier niveau n'est jamais utilisé dans les articles puisqu'il s'agit du niveau utilisé pour le titre des articles.'''

Une liste :
* Un lien interne direct: [[Special:Recentchanges]]
* ''italique''
* '''gras'''
* '''''gras et italique'''''
* &lt;s&gt;barré&lt;/s&gt;
* Et ça marche avec les apostrophes : l''''automne''' sera pluvieux !
On numérote '''une''' liste ?
# Pourquoi pas ?
# Je veux bien !
# C'est facile... Par exemple : [[Manuel_d'installation]] ou encore [[Commandes_informations]]

=== Troisième niveau : comment utiliser les indices ===

Du texte normal peut contenir &lt;sub&gt;un indice&lt;/sub&gt; pour des notations.

==== Quatrième niveau de titre : et maintenant les exposants ====

Du texte normal peut contenir aussi &lt;sup&gt;un exposant&lt;/sup&gt;.

===== Cinquième niveau de titre =====

Pour passer au paragraphe suivant, il faut laisser une ligne blanche.
Ici, on est toujours dans le même paragraphe.

Et hop, voici le nouveau paragraphe !

====== Sixième (et dernier) niveau de titre ======

Normalement, ça doit suffire pour découper un article en détail.

== Et pour les tableaux... ==

{| class=&quot;wikitable&quot;
|+ Titre du tableau
! colonne 1
! colonne 2
|-
| On peut aussi
| faire des tableaux
|- {{ligne grise}}
| c'est bien pratique
| pour présenter des données chiffrées
|}

== Exemple de texte avec une image ==


[[Fichier:IMG_5906.JPG|120px|right|thumb||Différents formats peuvent être utilisés pour les images (gif, png, jpg).]]

'''lol''' (Paris, 07 décembre 1965) est un parfait inconnu !

Lol tente désespérément de faire fonctionner une extension du MediaWiki pendant trois jours... C'est dire son niveau !

Aujourd'hui après une dure bataille, il parvient enfin à mettre un terme au combat d'une semaine, contre ses propres lacunes, et en sort tout à fait plus inconnu qu'avant !

A part pédaler dans la choucroute quand il s'agit de Debian, lol fait un peu de quad, et quand il ne se casse pas la figure, il arrive à manoeuvrer sa machine (bien trop puissante pour lui) ...

=== Galerie ===

Utilisez la galerie pour présenter plusieurs images de manière compacte au sein d'un article :
&lt;gallery&gt;
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Lol]]
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Encore Lol]]
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Toujours Lol]]
&lt;/gallery&gt;</text>
      <sha1>65ykaq5f1t15a7rx53cykf34fmtj7vo</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>924</id>
      <parentid>855</parentid>
      <timestamp>2010-02-06T08:01:10Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2963">= testez le wiki ici =

{{Ébauche|les patates}}
{{sid}}
{{stable}}

*'''Un'''&lt;br&gt; 
*Deux
*''&lt;u&gt;Trois&lt;/u&gt;''


&lt;span style=&quot;color:#FF0000;&quot;&gt;Texte en rouge&lt;/span&gt;

&lt;small&gt;petite taille&lt;/small&gt;

&lt;big&gt;grande taille&lt;/big&gt;

&lt;br&gt;
&lt;blockquote&gt;Test de citation....&lt;br&gt;
Deuxième ligne&lt;br&gt;
Troisième ligne
&lt;/blockquote&gt;
&lt;br&gt; Retour

=== Faire des alinéas (décalage, tabulation) ===

Il faut utiliser des ':', un pour chaque décalage.

 Sans retrait
 : Avec un retrait
 :: Avec deux retraits

Sans retrait
: Avec un retrait
:: Avec deux retraits


== Titre de deuxième niveau ==

'''Important : le titre de premier niveau n'est jamais utilisé dans les articles puisqu'il s'agit du niveau utilisé pour le titre des articles.'''

Une liste :
* Un lien interne direct: [[Special:Recentchanges]]
* ''italique''
* '''gras'''
* '''''gras et italique'''''
* &lt;s&gt;barré&lt;/s&gt; ou &lt;strike&gt;barrer&lt;/strike&gt;
* &lt;u&gt;en souligner d'autres...&lt;/u&gt;

* Et ça marche avec les apostrophes : l''''automne''' sera pluvieux !
On numérote '''une''' liste ?
# Pourquoi pas ?
# Je veux bien !
# C'est facile... Par exemple : [[Manuel_d'installation]] ou encore [[Commandes_informations]]

=== Troisième niveau : comment utiliser les indices ===

Du texte normal peut contenir &lt;sub&gt;un indice&lt;/sub&gt; pour des notations.

==== Quatrième niveau de titre : et maintenant les exposants ====

Du texte normal peut contenir aussi &lt;sup&gt;un exposant&lt;/sup&gt;.

===== Cinquième niveau de titre =====

Pour passer au paragraphe suivant, il faut laisser une ligne blanche.
Ici, on est toujours dans le même paragraphe.

Et hop, voici le nouveau paragraphe !

====== Sixième (et dernier) niveau de titre ======

Normalement, ça doit suffire pour découper un article en détail.

== Et pour les tableaux... ==

{| class=&quot;wikitable&quot;
|+ Titre du tableau
! colonne 1
! colonne 2
|-
| On peut aussi
| faire des tableaux
|- {{ligne grise}}
| c'est bien pratique
| pour présenter des données chiffrées
|}

== Exemple de texte avec une image ==


[[Fichier:IMG_5906.JPG|120px|right|thumb||Différents formats peuvent être utilisés pour les images (gif, png, jpg).]]

'''lol''' (Paris, 07 décembre 1965) est un parfait inconnu !

Lol tente désespérément de faire fonctionner une extension du MediaWiki pendant trois jours... C'est dire son niveau !

Aujourd'hui après une dure bataille, il parvient enfin à mettre un terme au combat d'une semaine, contre ses propres lacunes, et en sort tout à fait plus inconnu qu'avant !

A part pédaler dans la choucroute quand il s'agit de Debian, lol fait un peu de quad, et quand il ne se casse pas la figure, il arrive à manoeuvrer sa machine (bien trop puissante pour lui) ...

=== Galerie ===

Utilisez la galerie pour présenter plusieurs images de manière compacte au sein d'un article :
&lt;gallery&gt;
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Lol]]
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Encore Lol]]
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Toujours Lol]]
&lt;/gallery&gt;</text>
      <sha1>8u1f7elvzjsylm69b75xtcbavdgjus2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>925</id>
      <parentid>924</parentid>
      <timestamp>2010-02-06T08:06:48Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3114">= testez le wiki ici =

{{Ébauche|les patates}}
{{sid}}
{{stable}}

*'''Un'''&lt;br&gt; 
*Deux
*''&lt;u&gt;Trois&lt;/u&gt;''


&lt;span style=&quot;color:#FF0000;&quot;&gt;Texte en rouge&lt;/span&gt;

&lt;small&gt;petite taille&lt;/small&gt;

&lt;big&gt;grande taille&lt;/big&gt;

&lt;br&gt;
&lt;blockquote&gt;Test de citation....&lt;br&gt;
Deuxième ligne&lt;br&gt;
Troisième ligne
&lt;/blockquote&gt;
&lt;br&gt; Retour

=== Faire des alinéas (décalage, tabulation) ===

Il faut utiliser des ':', un pour chaque décalage.

 Sans retrait
 : Avec un retrait
 :: Avec deux retraits

Sans retrait
: Avec un retrait
:: Avec deux retraits

== Titre de deuxième niveau ==

'''Important : le titre de premier niveau n'est jamais utilisé dans les articles puisqu'il s'agit du niveau utilisé pour le titre des articles.'''

Une liste :
* Un lien interne direct: [[Special:Recentchanges]]
* ''italique''
* '''gras'''
* '''''gras et italique'''''
* &lt;s&gt;barré&lt;/s&gt; ou &lt;strike&gt;barrer&lt;/strike&gt;
* &lt;u&gt;en souligner d'autres...&lt;/u&gt;

* Et ça marche avec les apostrophes : l''''automne''' sera pluvieux !
On numérote '''une''' liste ?
# Pourquoi pas ?
# Je veux bien !
# C'est facile... Par exemple : [[Manuel_d'installation]] ou encore [[Commandes_informations]]

&lt;ul&gt;
  &lt;li&gt;Liste avec balises HTML :
  &lt;ol&gt;
    &lt;li&gt;Premier élément
    &lt;li&gt;Second élément
  &lt;/ol&gt;
  &lt;li&gt;d'autres branches à l'arborescence
&lt;/ul&gt;

=== Troisième niveau : comment utiliser les indices ===

Du texte normal peut contenir &lt;sub&gt;un indice&lt;/sub&gt; pour des notations.

==== Quatrième niveau de titre : et maintenant les exposants ====

Du texte normal peut contenir aussi &lt;sup&gt;un exposant&lt;/sup&gt;.

===== Cinquième niveau de titre =====

Pour passer au paragraphe suivant, il faut laisser une ligne blanche.
Ici, on est toujours dans le même paragraphe.

Et hop, voici le nouveau paragraphe !

====== Sixième (et dernier) niveau de titre ======

Normalement, ça doit suffire pour découper un article en détail.

== Et pour les tableaux... ==

{| class=&quot;wikitable&quot;
|+ Titre du tableau
! colonne 1
! colonne 2
|-
| On peut aussi
| faire des tableaux
|- {{ligne grise}}
| c'est bien pratique
| pour présenter des données chiffrées
|}

== Exemple de texte avec une image ==


[[Fichier:IMG_5906.JPG|120px|right|thumb||Différents formats peuvent être utilisés pour les images (gif, png, jpg).]]

'''lol''' (Paris, 07 décembre 1965) est un parfait inconnu !

Lol tente désespérément de faire fonctionner une extension du MediaWiki pendant trois jours... C'est dire son niveau !

Aujourd'hui après une dure bataille, il parvient enfin à mettre un terme au combat d'une semaine, contre ses propres lacunes, et en sort tout à fait plus inconnu qu'avant !

A part pédaler dans la choucroute quand il s'agit de Debian, lol fait un peu de quad, et quand il ne se casse pas la figure, il arrive à manoeuvrer sa machine (bien trop puissante pour lui) ...

=== Galerie ===

Utilisez la galerie pour présenter plusieurs images de manière compacte au sein d'un article :
&lt;gallery&gt;
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Lol]]
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Encore Lol]]
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Toujours Lol]]
&lt;/gallery&gt;</text>
      <sha1>pd3cvtjqfv2w9d78nuexiw7hs7ap60y</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1622</id>
      <parentid>925</parentid>
      <timestamp>2010-07-05T08:06:04Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3151">#REDIRECT [[isalo:Bac_%C3%A0_sable]]
= testez le wiki ici =

{{Ébauche|les patates}}
{{sid}}
{{stable}}

*'''Un'''&lt;br&gt; 
*Deux
*''&lt;u&gt;Trois&lt;/u&gt;''


&lt;span style=&quot;color:#FF0000;&quot;&gt;Texte en rouge&lt;/span&gt;

&lt;small&gt;petite taille&lt;/small&gt;

&lt;big&gt;grande taille&lt;/big&gt;

&lt;br&gt;
&lt;blockquote&gt;Test de citation....&lt;br&gt;
Deuxième ligne&lt;br&gt;
Troisième ligne
&lt;/blockquote&gt;
&lt;br&gt; Retour

=== Faire des alinéas (décalage, tabulation) ===

Il faut utiliser des ':', un pour chaque décalage.

 Sans retrait
 : Avec un retrait
 :: Avec deux retraits

Sans retrait
: Avec un retrait
:: Avec deux retraits

== Titre de deuxième niveau ==

'''Important : le titre de premier niveau n'est jamais utilisé dans les articles puisqu'il s'agit du niveau utilisé pour le titre des articles.'''

Une liste :
* Un lien interne direct: [[Special:Recentchanges]]
* ''italique''
* '''gras'''
* '''''gras et italique'''''
* &lt;s&gt;barré&lt;/s&gt; ou &lt;strike&gt;barrer&lt;/strike&gt;
* &lt;u&gt;en souligner d'autres...&lt;/u&gt;

* Et ça marche avec les apostrophes : l''''automne''' sera pluvieux !
On numérote '''une''' liste ?
# Pourquoi pas ?
# Je veux bien !
# C'est facile... Par exemple : [[Manuel_d'installation]] ou encore [[Commandes_informations]]

&lt;ul&gt;
  &lt;li&gt;Liste avec balises HTML :
  &lt;ol&gt;
    &lt;li&gt;Premier élément
    &lt;li&gt;Second élément
  &lt;/ol&gt;
  &lt;li&gt;d'autres branches à l'arborescence
&lt;/ul&gt;

=== Troisième niveau : comment utiliser les indices ===

Du texte normal peut contenir &lt;sub&gt;un indice&lt;/sub&gt; pour des notations.

==== Quatrième niveau de titre : et maintenant les exposants ====

Du texte normal peut contenir aussi &lt;sup&gt;un exposant&lt;/sup&gt;.

===== Cinquième niveau de titre =====

Pour passer au paragraphe suivant, il faut laisser une ligne blanche.
Ici, on est toujours dans le même paragraphe.

Et hop, voici le nouveau paragraphe !

====== Sixième (et dernier) niveau de titre ======

Normalement, ça doit suffire pour découper un article en détail.

== Et pour les tableaux... ==

{| class=&quot;wikitable&quot;
|+ Titre du tableau
! colonne 1
! colonne 2
|-
| On peut aussi
| faire des tableaux
|- {{ligne grise}}
| c'est bien pratique
| pour présenter des données chiffrées
|}

== Exemple de texte avec une image ==


[[Fichier:IMG_5906.JPG|120px|right|thumb||Différents formats peuvent être utilisés pour les images (gif, png, jpg).]]

'''lol''' (Paris, 07 décembre 1965) est un parfait inconnu !

Lol tente désespérément de faire fonctionner une extension du MediaWiki pendant trois jours... C'est dire son niveau !

Aujourd'hui après une dure bataille, il parvient enfin à mettre un terme au combat d'une semaine, contre ses propres lacunes, et en sort tout à fait plus inconnu qu'avant !

A part pédaler dans la choucroute quand il s'agit de Debian, lol fait un peu de quad, et quand il ne se casse pas la figure, il arrive à manoeuvrer sa machine (bien trop puissante pour lui) ...

=== Galerie ===

Utilisez la galerie pour présenter plusieurs images de manière compacte au sein d'un article :
&lt;gallery&gt;
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Lol]]
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Encore Lol]]
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Toujours Lol]]
&lt;/gallery&gt;</text>
      <sha1>59e983unwdfa4l1pqzm5efryf1p7db1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1671</id>
      <parentid>1622</parentid>
      <timestamp>2010-07-06T09:21:17Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Annulation des modifications 1622 de [[Special:Contributions/Lol|Lol]] ([[User talk:Lol|discussion]])</comment>
      <text xml:space="preserve" bytes="3114">= testez le wiki ici =

{{Ébauche|les patates}}
{{sid}}
{{stable}}

*'''Un'''&lt;br&gt; 
*Deux
*''&lt;u&gt;Trois&lt;/u&gt;''


&lt;span style=&quot;color:#FF0000;&quot;&gt;Texte en rouge&lt;/span&gt;

&lt;small&gt;petite taille&lt;/small&gt;

&lt;big&gt;grande taille&lt;/big&gt;

&lt;br&gt;
&lt;blockquote&gt;Test de citation....&lt;br&gt;
Deuxième ligne&lt;br&gt;
Troisième ligne
&lt;/blockquote&gt;
&lt;br&gt; Retour

=== Faire des alinéas (décalage, tabulation) ===

Il faut utiliser des ':', un pour chaque décalage.

 Sans retrait
 : Avec un retrait
 :: Avec deux retraits

Sans retrait
: Avec un retrait
:: Avec deux retraits

== Titre de deuxième niveau ==

'''Important : le titre de premier niveau n'est jamais utilisé dans les articles puisqu'il s'agit du niveau utilisé pour le titre des articles.'''

Une liste :
* Un lien interne direct: [[Special:Recentchanges]]
* ''italique''
* '''gras'''
* '''''gras et italique'''''
* &lt;s&gt;barré&lt;/s&gt; ou &lt;strike&gt;barrer&lt;/strike&gt;
* &lt;u&gt;en souligner d'autres...&lt;/u&gt;

* Et ça marche avec les apostrophes : l''''automne''' sera pluvieux !
On numérote '''une''' liste ?
# Pourquoi pas ?
# Je veux bien !
# C'est facile... Par exemple : [[Manuel_d'installation]] ou encore [[Commandes_informations]]

&lt;ul&gt;
  &lt;li&gt;Liste avec balises HTML :
  &lt;ol&gt;
    &lt;li&gt;Premier élément
    &lt;li&gt;Second élément
  &lt;/ol&gt;
  &lt;li&gt;d'autres branches à l'arborescence
&lt;/ul&gt;

=== Troisième niveau : comment utiliser les indices ===

Du texte normal peut contenir &lt;sub&gt;un indice&lt;/sub&gt; pour des notations.

==== Quatrième niveau de titre : et maintenant les exposants ====

Du texte normal peut contenir aussi &lt;sup&gt;un exposant&lt;/sup&gt;.

===== Cinquième niveau de titre =====

Pour passer au paragraphe suivant, il faut laisser une ligne blanche.
Ici, on est toujours dans le même paragraphe.

Et hop, voici le nouveau paragraphe !

====== Sixième (et dernier) niveau de titre ======

Normalement, ça doit suffire pour découper un article en détail.

== Et pour les tableaux... ==

{| class=&quot;wikitable&quot;
|+ Titre du tableau
! colonne 1
! colonne 2
|-
| On peut aussi
| faire des tableaux
|- {{ligne grise}}
| c'est bien pratique
| pour présenter des données chiffrées
|}

== Exemple de texte avec une image ==


[[Fichier:IMG_5906.JPG|120px|right|thumb||Différents formats peuvent être utilisés pour les images (gif, png, jpg).]]

'''lol''' (Paris, 07 décembre 1965) est un parfait inconnu !

Lol tente désespérément de faire fonctionner une extension du MediaWiki pendant trois jours... C'est dire son niveau !

Aujourd'hui après une dure bataille, il parvient enfin à mettre un terme au combat d'une semaine, contre ses propres lacunes, et en sort tout à fait plus inconnu qu'avant !

A part pédaler dans la choucroute quand il s'agit de Debian, lol fait un peu de quad, et quand il ne se casse pas la figure, il arrive à manoeuvrer sa machine (bien trop puissante pour lui) ...

=== Galerie ===

Utilisez la galerie pour présenter plusieurs images de manière compacte au sein d'un article :
&lt;gallery&gt;
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Lol]]
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Encore Lol]]
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Toujours Lol]]
&lt;/gallery&gt;</text>
      <sha1>pd3cvtjqfv2w9d78nuexiw7hs7ap60y</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1953</id>
      <parentid>1671</parentid>
      <timestamp>2010-08-18T13:01:51Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Exemple de texte avec une image */</comment>
      <text xml:space="preserve" bytes="3606">= testez le wiki ici =

{{Ébauche|les patates}}
{{sid}}
{{stable}}

*'''Un'''&lt;br&gt; 
*Deux
*''&lt;u&gt;Trois&lt;/u&gt;''


&lt;span style=&quot;color:#FF0000;&quot;&gt;Texte en rouge&lt;/span&gt;

&lt;small&gt;petite taille&lt;/small&gt;

&lt;big&gt;grande taille&lt;/big&gt;

&lt;br&gt;
&lt;blockquote&gt;Test de citation....&lt;br&gt;
Deuxième ligne&lt;br&gt;
Troisième ligne
&lt;/blockquote&gt;
&lt;br&gt; Retour

=== Faire des alinéas (décalage, tabulation) ===

Il faut utiliser des ':', un pour chaque décalage.

 Sans retrait
 : Avec un retrait
 :: Avec deux retraits

Sans retrait
: Avec un retrait
:: Avec deux retraits

== Titre de deuxième niveau ==

'''Important : le titre de premier niveau n'est jamais utilisé dans les articles puisqu'il s'agit du niveau utilisé pour le titre des articles.'''

Une liste :
* Un lien interne direct: [[Special:Recentchanges]]
* ''italique''
* '''gras'''
* '''''gras et italique'''''
* &lt;s&gt;barré&lt;/s&gt; ou &lt;strike&gt;barrer&lt;/strike&gt;
* &lt;u&gt;en souligner d'autres...&lt;/u&gt;

* Et ça marche avec les apostrophes : l''''automne''' sera pluvieux !
On numérote '''une''' liste ?
# Pourquoi pas ?
# Je veux bien !
# C'est facile... Par exemple : [[Manuel_d'installation]] ou encore [[Commandes_informations]]

&lt;ul&gt;
  &lt;li&gt;Liste avec balises HTML :
  &lt;ol&gt;
    &lt;li&gt;Premier élément
    &lt;li&gt;Second élément
  &lt;/ol&gt;
  &lt;li&gt;d'autres branches à l'arborescence
&lt;/ul&gt;

=== Troisième niveau : comment utiliser les indices ===

Du texte normal peut contenir &lt;sub&gt;un indice&lt;/sub&gt; pour des notations.

==== Quatrième niveau de titre : et maintenant les exposants ====

Du texte normal peut contenir aussi &lt;sup&gt;un exposant&lt;/sup&gt;.

===== Cinquième niveau de titre =====

Pour passer au paragraphe suivant, il faut laisser une ligne blanche.
Ici, on est toujours dans le même paragraphe.

Et hop, voici le nouveau paragraphe !

====== Sixième (et dernier) niveau de titre ======

Normalement, ça doit suffire pour découper un article en détail.

== Et pour les tableaux... ==

{| class=&quot;wikitable&quot;
|+ Titre du tableau
! colonne 1
! colonne 2
|-
| On peut aussi
| faire des tableaux
|- {{ligne grise}}
| c'est bien pratique
| pour présenter des données chiffrées
|}

== Exemple de texte avec une image ==


[[Fichier:IMG_5906.JPG|120px|right|thumb||Différents formats peuvent être utilisés pour les images (gif, png, jpg).]]

'''lol''' (Paris, 07 décembre 1965) est un parfait inconnu !

Lol tente désespérément de faire fonctionner une extension du MediaWiki pendant trois jours... C'est dire son niveau !

Aujourd'hui après une dure bataille, il parvient enfin à mettre un terme au combat d'une semaine, contre ses propres lacunes, et en sort tout à fait plus inconnu qu'avant !

A part pédaler dans la choucroute quand il s'agit de Debian, lol fait un peu de quad, et quand il ne se casse pas la figure, il arrive à manoeuvrer sa machine (bien trop puissante pour lui) ...

=== Galerie ===

Utilisez la galerie pour présenter plusieurs images de manière compacte au sein d'un article :
&lt;gallery&gt;
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Lol]]
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Encore Lol]]
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Toujours Lol]]
&lt;/gallery&gt;

=== Coloration syntaxique de code ===

&lt;code python&gt;import string, sys
 
# If no arguments were given, print a helpful message
if len(sys.argv)==1:
    print 'Usage: celsius temp1 temp2 ...'
    sys.exit(0)
 
# Loop over the arguments
for i in sys.argv[1:]:
    try: 
        fahrenheit=float(string.atoi(i))
    except string.atoi_error:
	print repr(i), &quot;not a numeric value&quot;
    else:
	celsius=(fahrenheit-32)*5.0/9.0
	print '%i\260F = %i\260C' % (int(fahrenheit), int(celsius+.5))&lt;/code&gt;</text>
      <sha1>ipjjb3twcwnzhj5sma6s079djtscuhp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1954</id>
      <parentid>1953</parentid>
      <timestamp>2010-08-18T13:02:25Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Coloration syntaxique de code */</comment>
      <text xml:space="preserve" bytes="3604">= testez le wiki ici =

{{Ébauche|les patates}}
{{sid}}
{{stable}}

*'''Un'''&lt;br&gt; 
*Deux
*''&lt;u&gt;Trois&lt;/u&gt;''


&lt;span style=&quot;color:#FF0000;&quot;&gt;Texte en rouge&lt;/span&gt;

&lt;small&gt;petite taille&lt;/small&gt;

&lt;big&gt;grande taille&lt;/big&gt;

&lt;br&gt;
&lt;blockquote&gt;Test de citation....&lt;br&gt;
Deuxième ligne&lt;br&gt;
Troisième ligne
&lt;/blockquote&gt;
&lt;br&gt; Retour

=== Faire des alinéas (décalage, tabulation) ===

Il faut utiliser des ':', un pour chaque décalage.

 Sans retrait
 : Avec un retrait
 :: Avec deux retraits

Sans retrait
: Avec un retrait
:: Avec deux retraits

== Titre de deuxième niveau ==

'''Important : le titre de premier niveau n'est jamais utilisé dans les articles puisqu'il s'agit du niveau utilisé pour le titre des articles.'''

Une liste :
* Un lien interne direct: [[Special:Recentchanges]]
* ''italique''
* '''gras'''
* '''''gras et italique'''''
* &lt;s&gt;barré&lt;/s&gt; ou &lt;strike&gt;barrer&lt;/strike&gt;
* &lt;u&gt;en souligner d'autres...&lt;/u&gt;

* Et ça marche avec les apostrophes : l''''automne''' sera pluvieux !
On numérote '''une''' liste ?
# Pourquoi pas ?
# Je veux bien !
# C'est facile... Par exemple : [[Manuel_d'installation]] ou encore [[Commandes_informations]]

&lt;ul&gt;
  &lt;li&gt;Liste avec balises HTML :
  &lt;ol&gt;
    &lt;li&gt;Premier élément
    &lt;li&gt;Second élément
  &lt;/ol&gt;
  &lt;li&gt;d'autres branches à l'arborescence
&lt;/ul&gt;

=== Troisième niveau : comment utiliser les indices ===

Du texte normal peut contenir &lt;sub&gt;un indice&lt;/sub&gt; pour des notations.

==== Quatrième niveau de titre : et maintenant les exposants ====

Du texte normal peut contenir aussi &lt;sup&gt;un exposant&lt;/sup&gt;.

===== Cinquième niveau de titre =====

Pour passer au paragraphe suivant, il faut laisser une ligne blanche.
Ici, on est toujours dans le même paragraphe.

Et hop, voici le nouveau paragraphe !

====== Sixième (et dernier) niveau de titre ======

Normalement, ça doit suffire pour découper un article en détail.

== Et pour les tableaux... ==

{| class=&quot;wikitable&quot;
|+ Titre du tableau
! colonne 1
! colonne 2
|-
| On peut aussi
| faire des tableaux
|- {{ligne grise}}
| c'est bien pratique
| pour présenter des données chiffrées
|}

== Exemple de texte avec une image ==


[[Fichier:IMG_5906.JPG|120px|right|thumb||Différents formats peuvent être utilisés pour les images (gif, png, jpg).]]

'''lol''' (Paris, 07 décembre 1965) est un parfait inconnu !

Lol tente désespérément de faire fonctionner une extension du MediaWiki pendant trois jours... C'est dire son niveau !

Aujourd'hui après une dure bataille, il parvient enfin à mettre un terme au combat d'une semaine, contre ses propres lacunes, et en sort tout à fait plus inconnu qu'avant !

A part pédaler dans la choucroute quand il s'agit de Debian, lol fait un peu de quad, et quand il ne se casse pas la figure, il arrive à manoeuvrer sa machine (bien trop puissante pour lui) ...

=== Galerie ===

Utilisez la galerie pour présenter plusieurs images de manière compacte au sein d'un article :
&lt;gallery&gt;
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Lol]]
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Encore Lol]]
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Toujours Lol]]
&lt;/gallery&gt;

== Coloration syntaxique de code ==

&lt;code python&gt;import string, sys
 
# If no arguments were given, print a helpful message
if len(sys.argv)==1:
    print 'Usage: celsius temp1 temp2 ...'
    sys.exit(0)
 
# Loop over the arguments
for i in sys.argv[1:]:
    try: 
        fahrenheit=float(string.atoi(i))
    except string.atoi_error:
	print repr(i), &quot;not a numeric value&quot;
    else:
	celsius=(fahrenheit-32)*5.0/9.0
	print '%i\260F = %i\260C' % (int(fahrenheit), int(celsius+.5))&lt;/code&gt;</text>
      <sha1>bns2vqcnyvxwlz3j08lz3tpejaara5z</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2105</id>
      <parentid>1954</parentid>
      <timestamp>2010-09-15T17:14:28Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3625">= testez le wiki ici =

{{Ébauche|les patates}}
{{sid}}
{{stable}}

*'''Un'''&lt;br&gt; 
*Deux
*''&lt;u&gt;Trois&lt;/u&gt;''


&lt;span style=&quot;color:#FF0000;&quot;&gt;Texte en rouge&lt;/span&gt;

&lt;small&gt;petite taille&lt;/small&gt;

&lt;big&gt;grande taille&lt;/big&gt;

&lt;br&gt;
&lt;blockquote&gt;Test de citation....&lt;br&gt;
Deuxième ligne&lt;br&gt;
Troisième ligne
&lt;/blockquote&gt;
&lt;br&gt; Retour

=== Faire des alinéas (décalage, tabulation) ===

Il faut utiliser des ':', un pour chaque décalage.

 Sans retrait
 : Avec un retrait
 :: Avec deux retraits

Sans retrait
: Avec un retrait
:: Avec deux retraits

== Titre de deuxième niveau ==

'''Important : le titre de premier niveau n'est jamais utilisé dans les articles puisqu'il s'agit du niveau utilisé pour le titre des articles.'''

Une liste :
* Un lien interne direct: [[Special:Recentchanges]]
* ''italique''
* '''gras'''
* '''''gras et italique'''''
* &lt;s&gt;barré&lt;/s&gt; ou &lt;strike&gt;barrer&lt;/strike&gt;
* &lt;u&gt;en souligner d'autres...&lt;/u&gt;

* Et ça marche avec les apostrophes : l''''automne''' sera pluvieux !
On numérote '''une''' liste ?
# Pourquoi pas ?
# Je veux bien !
# C'est facile... Par exemple : [[Manuel_d'installation]] ou encore [[Commandes_informations]]

&lt;ul&gt;
  &lt;li&gt;Liste avec balises HTML :
  &lt;ol&gt;
    &lt;li&gt;Premier élément
    &lt;li&gt;Second élément
  &lt;/ol&gt;
  &lt;li&gt;d'autres branches à l'arborescence
&lt;/ul&gt;

=== Troisième niveau : comment utiliser les indices ===

Du texte normal peut contenir &lt;sub&gt;un indice&lt;/sub&gt; pour des notations.

==== Quatrième niveau de titre : et maintenant les exposants ====

Du texte normal peut contenir aussi &lt;sup&gt;un exposant&lt;/sup&gt;.

===== Cinquième niveau de titre =====

Pour passer au paragraphe suivant, il faut laisser une ligne blanche.
Ici, on est toujours dans le même paragraphe.

Et hop, voici le nouveau paragraphe !

====== Sixième (et dernier) niveau de titre ======

Normalement, ça doit suffire pour découper un article en détail.

== Et pour les tableaux... ==

{| class=&quot;wikitable&quot;
|+ Titre du tableau
! colonne 1
! colonne 2
|-
| On peut aussi
| faire des tableaux
|- {{ligne grise}}
| c'est bien pratique
| pour présenter des données chiffrées
|}

== Exemple de texte avec une image ==


[[Fichier:IMG_5906.JPG|120px|right|thumb||Différents formats peuvent être utilisés pour les images (gif, png, jpg).]]

'''lol''' (Paris, 07 décembre 1965) est un parfait inconnu !

Lol tente désespérément de faire fonctionner une extension du MediaWiki pendant trois jours... C'est dire son niveau !

Aujourd'hui après une dure bataille, il parvient enfin à mettre un terme au combat d'une semaine, contre ses propres lacunes, et en sort tout à fait plus inconnu qu'avant !

A part pédaler dans la choucroute quand il s'agit de Debian, lol fait un peu de quad, et quand il ne se casse pas la figure, il arrive à manoeuvrer sa machine (bien trop puissante pour lui) ...

=== Galerie ===

Utilisez la galerie pour présenter plusieurs images de manière compacte au sein d'un article :
&lt;gallery&gt;
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Lol]]
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Encore Lol]]
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Toujours Lol]]
&lt;/gallery&gt;

== Coloration syntaxique de code ==

&lt;code python&gt;import string, sys
 
# If no arguments were given, print a helpful message
if len(sys.argv)==1:
    print 'Usage: celsius temp1 temp2 ...'
    sys.exit(0)
 
# Loop over the arguments
for i in sys.argv[1:]:
    try: 
        fahrenheit=float(string.atoi(i))
    except string.atoi_error:
	print repr(i), &quot;not a numeric value&quot;
    else:
	celsius=(fahrenheit-32)*5.0/9.0
	print '%i\260F = %i\260C' % (int(fahrenheit), int(celsius+.5))&lt;/code&gt;

[[Catégorie:Aide]]</text>
      <sha1>9b9yknko0pscuybo6qjc4lzb8nxk3es</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2307</id>
      <parentid>2105</parentid>
      <timestamp>2010-11-17T15:17:21Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Exemple de texte avec une image */</comment>
      <text xml:space="preserve" bytes="3625">= testez le wiki ici =

{{Ébauche|les patates}}
{{sid}}
{{stable}}

*'''Un'''&lt;br&gt; 
*Deux
*''&lt;u&gt;Trois&lt;/u&gt;''


&lt;span style=&quot;color:#FF0000;&quot;&gt;Texte en rouge&lt;/span&gt;

&lt;small&gt;petite taille&lt;/small&gt;

&lt;big&gt;grande taille&lt;/big&gt;

&lt;br&gt;
&lt;blockquote&gt;Test de citation....&lt;br&gt;
Deuxième ligne&lt;br&gt;
Troisième ligne
&lt;/blockquote&gt;
&lt;br&gt; Retour

=== Faire des alinéas (décalage, tabulation) ===

Il faut utiliser des ':', un pour chaque décalage.

 Sans retrait
 : Avec un retrait
 :: Avec deux retraits

Sans retrait
: Avec un retrait
:: Avec deux retraits

== Titre de deuxième niveau ==

'''Important : le titre de premier niveau n'est jamais utilisé dans les articles puisqu'il s'agit du niveau utilisé pour le titre des articles.'''

Une liste :
* Un lien interne direct: [[Special:Recentchanges]]
* ''italique''
* '''gras'''
* '''''gras et italique'''''
* &lt;s&gt;barré&lt;/s&gt; ou &lt;strike&gt;barrer&lt;/strike&gt;
* &lt;u&gt;en souligner d'autres...&lt;/u&gt;

* Et ça marche avec les apostrophes : l''''automne''' sera pluvieux !
On numérote '''une''' liste ?
# Pourquoi pas ?
# Je veux bien !
# C'est facile... Par exemple : [[Manuel_d'installation]] ou encore [[Commandes_informations]]

&lt;ul&gt;
  &lt;li&gt;Liste avec balises HTML :
  &lt;ol&gt;
    &lt;li&gt;Premier élément
    &lt;li&gt;Second élément
  &lt;/ol&gt;
  &lt;li&gt;d'autres branches à l'arborescence
&lt;/ul&gt;

=== Troisième niveau : comment utiliser les indices ===

Du texte normal peut contenir &lt;sub&gt;un indice&lt;/sub&gt; pour des notations.

==== Quatrième niveau de titre : et maintenant les exposants ====

Du texte normal peut contenir aussi &lt;sup&gt;un exposant&lt;/sup&gt;.

===== Cinquième niveau de titre =====

Pour passer au paragraphe suivant, il faut laisser une ligne blanche.
Ici, on est toujours dans le même paragraphe.

Et hop, voici le nouveau paragraphe !

====== Sixième (et dernier) niveau de titre ======

Normalement, ça doit suffire pour découper un article en détail.

== Et pour les tableaux... ==

{| class=&quot;wikitable&quot;
|+ Titre du tableau
! colonne 1
! colonne 2
|-
| On peut aussi
| faire des tableaux
|- {{ligne grise}}
| c'est bien pratique
| pour présenter des données chiffrées
|}

== Exemple de texte avec une image ==


[[Fichier:IMG_5906.JPG|120px|right|thumb||Différents formats peuvent être utilisés pour les images (gif, png, jpg).]]

'''lol''' (Paris, 07 décembre 19xx) est un parfait inconnu !

Lol tente désespérément de faire fonctionner une extension du MediaWiki pendant trois jours... C'est dire son niveau !

Aujourd'hui après une dure bataille, il parvient enfin à mettre un terme au combat d'une semaine, contre ses propres lacunes, et en sort tout à fait plus inconnu qu'avant !

A part pédaler dans la choucroute quand il s'agit de Debian, lol fait un peu de quad, et quand il ne se casse pas la figure, il arrive à manoeuvrer sa machine (bien trop puissante pour lui) ...

=== Galerie ===

Utilisez la galerie pour présenter plusieurs images de manière compacte au sein d'un article :
&lt;gallery&gt;
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Lol]]
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Encore Lol]]
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Toujours Lol]]
&lt;/gallery&gt;

== Coloration syntaxique de code ==

&lt;code python&gt;import string, sys
 
# If no arguments were given, print a helpful message
if len(sys.argv)==1:
    print 'Usage: celsius temp1 temp2 ...'
    sys.exit(0)
 
# Loop over the arguments
for i in sys.argv[1:]:
    try: 
        fahrenheit=float(string.atoi(i))
    except string.atoi_error:
	print repr(i), &quot;not a numeric value&quot;
    else:
	celsius=(fahrenheit-32)*5.0/9.0
	print '%i\260F = %i\260C' % (int(fahrenheit), int(celsius+.5))&lt;/code&gt;

[[Catégorie:Aide]]</text>
      <sha1>6rfmgmuhi5r8f41pvzu52m654u7t2rq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3642</id>
      <parentid>2307</parentid>
      <timestamp>2011-12-28T08:08:01Z</timestamp>
      <contributor>
        <username>Hulk</username>
        <id>190</id>
      </contributor>
      <text xml:space="preserve" bytes="11949">= testez le wiki ici =

{{Ébauche|les patates}}
{{sid}}
{{stable}}

*'''Un'''&lt;br&gt; 
*Deux
*''&lt;u&gt;Trois&lt;/u&gt;''


&lt;span style=&quot;color:#FF0000;&quot;&gt;Texte en rouge&lt;/span&gt;

&lt;small&gt;petite taille&lt;/small&gt;

&lt;big&gt;grande taille&lt;/big&gt;

&lt;br&gt;
&lt;blockquote&gt;Test de citation....&lt;br&gt;
Deuxième ligne&lt;br&gt;
Troisième ligne
&lt;/blockquote&gt;
&lt;br&gt; Retour

=== Faire des alinéas (décalage, tabulation) ===

Il faut utiliser des ':', un pour chaque décalage.

 Sans retrait
 : Avec un retrait
 :: Avec deux retraits

Sans retrait
: Avec un retrait
:: Avec deux retraits

== Titre de deuxième niveau ==

'''Important : le titre de premier niveau n'est jamais utilisé dans les articles puisqu'il s'agit du niveau utilisé pour le titre des articles.'''

Une liste :
* Un lien interne direct: [[Special:Recentchanges]]
* ''italique''
* '''gras'''
* '''''gras et italique'''''
* &lt;s&gt;barré&lt;/s&gt; ou &lt;strike&gt;barrer&lt;/strike&gt;
* &lt;u&gt;en souligner d'autres...&lt;/u&gt;

* Et ça marche avec les apostrophes : l''''automne''' sera pluvieux !
On numérote '''une''' liste ?
# Pourquoi pas ?
# Je veux bien !
# C'est facile... Par exemple : [[Manuel_d'installation]] ou encore [[Commandes_informations]]

&lt;ul&gt;
  &lt;li&gt;Liste avec balises HTML :
  &lt;ol&gt;
    &lt;li&gt;Premier élément
    &lt;li&gt;Second élément
  &lt;/ol&gt;
  &lt;li&gt;d'autres branches à l'arborescence
&lt;/ul&gt;

=== Troisième niveau : comment utiliser les indices ===

Du texte normal peut contenir &lt;sub&gt;un indice&lt;/sub&gt; pour des notations.

==== Quatrième niveau de titre : et maintenant les exposants ====

Du texte normal peut contenir aussi &lt;sup&gt;un exposant&lt;/sup&gt;.

===== Cinquième niveau de titre =====

Pour passer au paragraphe suivant, il faut laisser une ligne blanche.
Ici, on est toujours dans le même paragraphe.

Et hop, voici le nouveau paragraphe !

====== Sixième (et dernier) niveau de titre ======

Normalement, ça doit suffire pour découper un article en détail.

== Et pour les tableaux... ==

{| class=&quot;wikitable&quot;
|+ Titre du tableau
! colonne 1
! colonne 2
|-
| On peut aussi
| faire des tableaux
|- {{ligne grise}}
| c'est bien pratique
| pour présenter des données chiffrées
|}

== Exemple de texte avec une image ==


[[Fichier:IMG_5906.JPG|120px|right|thumb||Différents formats peuvent être utilisés pour les images (gif, png, jpg).]]

'''lol''' (Paris, 07 décembre 19xx) est un parfait inconnu !

Lol tente désespérément de faire fonctionner une extension du MediaWiki pendant trois jours... C'est dire son niveau !

Aujourd'hui après une dure bataille, il parvient enfin à mettre un terme au combat d'une semaine, contre ses propres lacunes, et en sort tout à fait plus inconnu qu'avant !

A part pédaler dans la choucroute quand il s'agit de Debian, lol fait un peu de quad, et quand il ne se casse pas la figure, il arrive à manoeuvrer sa machine (bien trop puissante pour lui) ...

=== Galerie ===

Utilisez la galerie pour présenter plusieurs images de manière compacte au sein d'un article :
&lt;gallery&gt;
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Lol]]
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Encore Lol]]
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Toujours Lol]]
&lt;/gallery&gt;

== Coloration syntaxique de code ==

&lt;code python&gt;import string, sys
 
# If no arguments were given, print a helpful message
if len(sys.argv)==1:
    print 'Usage: celsius temp1 temp2 ...'
    sys.exit(0)
 
# Loop over the arguments
for i in sys.argv[1:]:
    try: 
        fahrenheit=float(string.atoi(i))
    except string.atoi_error:
	print repr(i), &quot;not a numeric value&quot;
    else:
	celsius=(fahrenheit-32)*5.0/9.0
	print '%i\260F = %i\260C' % (int(fahrenheit), int(celsius+.5))&lt;/code&gt;

[[Catégorie:Aide]]

== Sujet du message: Règles iptables pour vos applications (pc de bureau). ==
&lt;code bash&gt;
#! /bin/sh
### BEGIN INIT INFO
# Provides:          iptables
# Required-Start:   
# Required-Stop:   
# Should-Start:     
# Should-Stop:       
# Default-Start:     1 2 3 4 5
# Default-Stop:      0 6
# Short-Description: script iptables
### END INIT INFO

# activer au demarage.
# en root avec su ou sudo
# cp ...iptables /etc/init.d/
# chown root:root /etc/init.d/iptables
# chmod 750 /etc/init.d/iptables
# update-rc.d iptables defaults
# /etc/init.d/iptables start

on=&quot;1&quot;
off=&quot;0&quot;
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
interface_WAN=&quot;eth0&quot;
##### règles appliquer ou non ######
ipblacklist=$off
pingexterne=$off
SecondeLife=$off
LandesEternelles=$on
transmition=$on
clientNTP=$on
amsn=$on
###################################
start() {
    ### SUPPRESSION de TOUTES LES ANCIENNES TABLES (OUVRE TOUS!!) ###
    iptables -F
    iptables -X
    ### BLOC TOUS PAR DEFAULT (si aucune règle n'est définit par la suite) ###
    iptables -P INPUT DROP
    iptables -P OUTPUT DROP
    iptables -P FORWARD DROP
    ### Iptables refuse les scans XMAS et NULL
   iptables -A INPUT -p tcp --tcp-flags FIN,URG,PSH FIN,URG,PSH -j DROP
   iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
   iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
   iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
    ### Iptables limite TCP, UDP, ICMP Flood !
    ### Une des attaques possible est de saturer votre interface réseau.
   # TCP Syn Flood
   iptables -A INPUT -i $interface_WAN -p tcp --syn -m limit --limit 3/s -j ACCEPT
   # UDP Syn Flood
   iptables -A INPUT -i $interface_WAN -p udp -m limit --limit 10/s -j ACCEPT
   # Ping Flood
   iptables -A INPUT -i $interface_WAN -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
   iptables -A INPUT -i $interface_WAN -p icmp --icmp-type echo-reply -m limit --limit 1/s -j ACCEPT

   # fichiers de conf a modifier
   #pas de spoofing
   # Fichier /etc/sysctl.conf
   # net.ipv4.conf.default.rp_filter=1
   # net.ipv4.conf.all.rp_filter=1
   #pas de synflood
   #Fichier /etc/sysctl
   #net.ipv4.tcp_syncookies=1
   #net.ipv4.tcp_max_syn_backlog=1280 # Ceci active la resistance au Flood SYN


    ### IP indésirables
    ## en gros elle sont sur le site du RIPE (organisme distribuent les IP ou plage IP au professionnel)
    ## site du RIPE https://apps.db.ripe.net/search/full-text.html (ADOPI et trident media guard (tmg) sont de mot a rechercher ;)
   if [  $ipblacklist -eq $on ]
      while read ligne
      do
         ipdrop=`echo $ligne | cut -d &quot; &quot; -f1`
         iptables -I INPUT  -s $ipdrop -j DROP
         iptables -I OUTPUT  -d $ipdrop -j DROP
      done &lt; /usr/local/share/ipblacklist
   fi
   # les lignes du fichier ipblacklist doive ètre de type :
   # xxx.xxx.xxx.xxx/xx &lt;=espace commentaire sans le # au debut bien sur
   # ou
   # xxx.xxx.xxx.xxx/xxx.xxx.xxx.xxx &lt;=espace commentaire en fonction de comment on écrit le masque réseau

   iptables -I INPUT  -s 85.116.217.200/29 -j DROP # ADOPI
   iptables -I INPUT  -s 193.107.240.0/22  -j DROP  # trident media guard (tmg)
   iptables -I INPUT  -s 195.191.244.0/23  -j DROP # trident media guard (tmg)
   iptables -I INPUT  -s 193.105.197.0/24  -j DROP # trident media guard (tmg)

   iptables -I OUTPUT  -d 85.116.217.200/29 -j DROP # ADOPI
   iptables -I OUTPUT  -d 193.107.240.0/22  -j DROP # trident media guard (tmg)
   iptables -I OUTPUT  -d 195.191.244.0/23  -j DROP # trident media guard (tmg)
   iptables -I OUTPUT  -d 193.105.197.0/24  -j DROP # trident media guard (tmg)

    ### ACCEPT ALL interface loopbaak ###
    iptables -A INPUT  -i lo -j ACCEPT
    iptables -A OUTPUT -o lo -j ACCEPT

    ### axepte en entrer les connexions déjà établies (en gros sa permet d'accepter que les connexions initier
    ### par sont propre PC)
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    ### DNS indispensable pour naviguer facilement sur le web ###
    iptables -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT

    ### HTTP navigation internet non sécuriséer ###
    iptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT

    ### HTTPS pour le site de banque .... ###
    iptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT

    ### emesene,pindgin,amsn...  ####
   if [  $amsn -eq $on ]
   then
       iptables -A OUTPUT -p tcp -m tcp --dport 1863 -j ACCEPT     
       iptables -A OUTPUT -p tcp -m tcp --dport 6891:6900 -j ACCEPT # pour transfert de fichiers , webcam
       iptables -A OUTPUT -p udp -m udp --dport 6891:6900 -j ACCEPT # pour transfert de fichiers , webcam
   fi
    ### pop thunderbird ... réceptions des message ####
    iptables -A OUTPUT -p tcp -m tcp --dport 110 -j ACCEPT

    ### smtp thunderbird ... envoi des messages ###
    iptables -A OUTPUT -p tcp -m tcp --dport 25 -j ACCEPT

    ### clientNTP ... sincro a un serveur de temp ###
    if [  $clientNTP -eq $on ]
   then
       iptables -A OUTPUT -p udp -m udp --dport 123 -j ACCEPT
    fi
    ### client-transmition
    if [  $transmition -eq $on ]
   then
       iptables -A OUTPUT -p udp -m udp --sport 51413 -j ACCEPT
       iptables -A OUTPUT -p tcp -m tcp --sport 30000:65000 -j ACCEPT
    fi
    ### ping ... autorise a pinger un ordinateur distant ###
    iptables -A OUTPUT -p icmp -j ACCEPT

    ### LandesEternelles
    if [  $LandesEternelles -eq $on ]
   then
   iptables -A OUTPUT  -d 62.93.225.45 -p tcp --sport 39943 --dport 3000 -j ACCEPT
    fi
    ### SecondeLife
    if [  $SecondeLife -eq $on ]
   then
       iptables -A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT
       iptables -A INPUT  -s 216.82.0.0/18 -p tcp --dport 1023:65000 -j ACCEPT # Secondelife
       iptables -A INPUT  -s 64.94.252.0/23 -p tcp --dport 1023:65000 -j ACCEPT # Voice
       iptables -A INPUT  -s 70.42.62.0/24 -p tcp --dport 1023:65000 -j ACCEPT # Voice
       iptables -A INPUT  -s 74.201.98.0/23 -p tcp --dport 1023:65000 -j ACCEPT # Voice

       iptables -A INPUT  -s 216.82.0.0/18 -p udp --dport 1023:65000 -j ACCEPT # Secondelife
       iptables -A INPUT  -s 64.94.252.0/23 -p udp --dport 1023:65000 -j ACCEPT # Voice
       iptables -A INPUT  -s 70.42.62.0/24 -p udp --dport 1023:65000 -j ACCEPT # Voice
       iptables -A INPUT  -s 74.201.98.0/23 -p udp --dport 1023:65000 -j ACCEPT # Voice

       iptables -A OUTPUT  -d 216.82.0.0/18 -p tcp --sport 1023:65000 -j ACCEPT # Secondelife
       iptables -A OUTPUT  -d 64.94.252.0/23 -p tcp --sport 1023:65000 -j ACCEPT # Voice
       iptables -A OUTPUT  -d 70.42.62.0/24 -p tcp --sport 1023:65000 -j ACCEPT # Voice
       iptables -A OUTPUT  -d 74.201.98.0/23  -p tcp --sport 1023:65000 -j ACCEPT # Voice

       iptables -A OUTPUT  -d 216.82.0.0/18 -p udp --sport 1023:65000 -j ACCEPT # Secondelife
       iptables -A OUTPUT  -d 64.94.252.0/23 -p udp --sport 1023:65000 -j ACCEPT # Voice
       iptables -A OUTPUT  -d 70.42.62.0/24 -p udp --sport 1023:65000 -j ACCEPT # Voice
       iptables -A OUTPUT  -d 74.201.98.0/23  -p udp --sport 1023:65000 -j ACCEPT # Voice
    fi

    ### ping ... autorise l'extèrieur a vous pinger  ###
    if [  $pingexterne -eq $on ]
       iptables -A INPUT -p icmp -j ACCEPT               # enlever le # du début de ligne pour activer cette règle
    fi

    ### LOG ### Log tous ce qui qui n'est pas accepter par une règles précédente
        # prés requit :       sudo apt-get install sysklogd
        #                     echo 'kern.warning             /var/log/iptables.log' &gt; /etc/syslog.conf                     
    iptables -A OUTPUT -j LOG --log-level 4
    iptables -A INPUT -j LOG  --log-level 4
    iptables -A FORWARD -j LOG  --log-level 4
    echo &quot;############ &lt;START&gt; ##############&quot;
    iptables -L -n
    echo &quot;############ &lt;/START&gt; ##############&quot;
}
stop() {
### OUVRE TOUS !! ###
    iptables -F
    iptables -X
    iptables -P INPUT ACCEPT
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD ACCEPT
    echo &quot;############ &lt;STOP&gt; ##############&quot;
    iptables -L -n
    echo &quot;############ &lt;/STOP&gt; ##############&quot;
}

case &quot;$1&quot; in
  start)
   start
    ;;
  stop)
      stop
    ;;
  restart)
   stop
   start
    ;;
  *)
    N=/etc/init.d/${0##*/}
    echo &quot;Usage: $N {start|stop|restart}&quot; &gt;&amp;2
    exit 1
    ;;
esac

exit 0
&lt;/code&gt;</text>
      <sha1>kr683dmnj3z7tw37gmtjj6ilx5ujtwh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3643</id>
      <parentid>3642</parentid>
      <timestamp>2011-12-28T08:08:54Z</timestamp>
      <contributor>
        <username>Hulk</username>
        <id>190</id>
      </contributor>
      <comment>/* Sujet du message: Règles iptables pour vos applications (pc de bureau). */</comment>
      <text xml:space="preserve" bytes="12393">= testez le wiki ici =

{{Ébauche|les patates}}
{{sid}}
{{stable}}

*'''Un'''&lt;br&gt; 
*Deux
*''&lt;u&gt;Trois&lt;/u&gt;''


&lt;span style=&quot;color:#FF0000;&quot;&gt;Texte en rouge&lt;/span&gt;

&lt;small&gt;petite taille&lt;/small&gt;

&lt;big&gt;grande taille&lt;/big&gt;

&lt;br&gt;
&lt;blockquote&gt;Test de citation....&lt;br&gt;
Deuxième ligne&lt;br&gt;
Troisième ligne
&lt;/blockquote&gt;
&lt;br&gt; Retour

=== Faire des alinéas (décalage, tabulation) ===

Il faut utiliser des ':', un pour chaque décalage.

 Sans retrait
 : Avec un retrait
 :: Avec deux retraits

Sans retrait
: Avec un retrait
:: Avec deux retraits

== Titre de deuxième niveau ==

'''Important : le titre de premier niveau n'est jamais utilisé dans les articles puisqu'il s'agit du niveau utilisé pour le titre des articles.'''

Une liste :
* Un lien interne direct: [[Special:Recentchanges]]
* ''italique''
* '''gras'''
* '''''gras et italique'''''
* &lt;s&gt;barré&lt;/s&gt; ou &lt;strike&gt;barrer&lt;/strike&gt;
* &lt;u&gt;en souligner d'autres...&lt;/u&gt;

* Et ça marche avec les apostrophes : l''''automne''' sera pluvieux !
On numérote '''une''' liste ?
# Pourquoi pas ?
# Je veux bien !
# C'est facile... Par exemple : [[Manuel_d'installation]] ou encore [[Commandes_informations]]

&lt;ul&gt;
  &lt;li&gt;Liste avec balises HTML :
  &lt;ol&gt;
    &lt;li&gt;Premier élément
    &lt;li&gt;Second élément
  &lt;/ol&gt;
  &lt;li&gt;d'autres branches à l'arborescence
&lt;/ul&gt;

=== Troisième niveau : comment utiliser les indices ===

Du texte normal peut contenir &lt;sub&gt;un indice&lt;/sub&gt; pour des notations.

==== Quatrième niveau de titre : et maintenant les exposants ====

Du texte normal peut contenir aussi &lt;sup&gt;un exposant&lt;/sup&gt;.

===== Cinquième niveau de titre =====

Pour passer au paragraphe suivant, il faut laisser une ligne blanche.
Ici, on est toujours dans le même paragraphe.

Et hop, voici le nouveau paragraphe !

====== Sixième (et dernier) niveau de titre ======

Normalement, ça doit suffire pour découper un article en détail.

== Et pour les tableaux... ==

{| class=&quot;wikitable&quot;
|+ Titre du tableau
! colonne 1
! colonne 2
|-
| On peut aussi
| faire des tableaux
|- {{ligne grise}}
| c'est bien pratique
| pour présenter des données chiffrées
|}

== Exemple de texte avec une image ==


[[Fichier:IMG_5906.JPG|120px|right|thumb||Différents formats peuvent être utilisés pour les images (gif, png, jpg).]]

'''lol''' (Paris, 07 décembre 19xx) est un parfait inconnu !

Lol tente désespérément de faire fonctionner une extension du MediaWiki pendant trois jours... C'est dire son niveau !

Aujourd'hui après une dure bataille, il parvient enfin à mettre un terme au combat d'une semaine, contre ses propres lacunes, et en sort tout à fait plus inconnu qu'avant !

A part pédaler dans la choucroute quand il s'agit de Debian, lol fait un peu de quad, et quand il ne se casse pas la figure, il arrive à manoeuvrer sa machine (bien trop puissante pour lui) ...

=== Galerie ===

Utilisez la galerie pour présenter plusieurs images de manière compacte au sein d'un article :
&lt;gallery&gt;
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Lol]]
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Encore Lol]]
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Toujours Lol]]
&lt;/gallery&gt;

== Coloration syntaxique de code ==

&lt;code python&gt;import string, sys
 
# If no arguments were given, print a helpful message
if len(sys.argv)==1:
    print 'Usage: celsius temp1 temp2 ...'
    sys.exit(0)
 
# Loop over the arguments
for i in sys.argv[1:]:
    try: 
        fahrenheit=float(string.atoi(i))
    except string.atoi_error:
	print repr(i), &quot;not a numeric value&quot;
    else:
	celsius=(fahrenheit-32)*5.0/9.0
	print '%i\260F = %i\260C' % (int(fahrenheit), int(celsius+.5))&lt;/code&gt;

[[Catégorie:Aide]]

== Sujet du message: Règles iptables pour vos applications (pc de bureau). ==
Il serai bon d'avoir une listes de règle iptables a dispos en fonctions des jeux , application , installer sur un pc de bureau , dans sont utilisation la plus courante , sans nat ni partage de connections , juste un pc de travail connecter a internet.
aussi pour débuter je poste mon scripte iptables qui bien que non exhaustif feras une base convenable.
n'hésiter donc pas a rajouter les règles pour les applications qui ni figurent pas. 
&lt;code bash&gt;
#! /bin/sh
### BEGIN INIT INFO
# Provides:          iptables
# Required-Start:   
# Required-Stop:   
# Should-Start:     
# Should-Stop:       
# Default-Start:     1 2 3 4 5
# Default-Stop:      0 6
# Short-Description: script iptables
### END INIT INFO

# activer au demarage.
# en root avec su ou sudo
# cp ...iptables /etc/init.d/
# chown root:root /etc/init.d/iptables
# chmod 750 /etc/init.d/iptables
# update-rc.d iptables defaults
# /etc/init.d/iptables start

on=&quot;1&quot;
off=&quot;0&quot;
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
interface_WAN=&quot;eth0&quot;
##### règles appliquer ou non ######
ipblacklist=$off
pingexterne=$off
SecondeLife=$off
LandesEternelles=$on
transmition=$on
clientNTP=$on
amsn=$on
###################################
start() {
    ### SUPPRESSION de TOUTES LES ANCIENNES TABLES (OUVRE TOUS!!) ###
    iptables -F
    iptables -X
    ### BLOC TOUS PAR DEFAULT (si aucune règle n'est définit par la suite) ###
    iptables -P INPUT DROP
    iptables -P OUTPUT DROP
    iptables -P FORWARD DROP
    ### Iptables refuse les scans XMAS et NULL
   iptables -A INPUT -p tcp --tcp-flags FIN,URG,PSH FIN,URG,PSH -j DROP
   iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
   iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
   iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
    ### Iptables limite TCP, UDP, ICMP Flood !
    ### Une des attaques possible est de saturer votre interface réseau.
   # TCP Syn Flood
   iptables -A INPUT -i $interface_WAN -p tcp --syn -m limit --limit 3/s -j ACCEPT
   # UDP Syn Flood
   iptables -A INPUT -i $interface_WAN -p udp -m limit --limit 10/s -j ACCEPT
   # Ping Flood
   iptables -A INPUT -i $interface_WAN -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
   iptables -A INPUT -i $interface_WAN -p icmp --icmp-type echo-reply -m limit --limit 1/s -j ACCEPT

   # fichiers de conf a modifier
   #pas de spoofing
   # Fichier /etc/sysctl.conf
   # net.ipv4.conf.default.rp_filter=1
   # net.ipv4.conf.all.rp_filter=1
   #pas de synflood
   #Fichier /etc/sysctl
   #net.ipv4.tcp_syncookies=1
   #net.ipv4.tcp_max_syn_backlog=1280 # Ceci active la resistance au Flood SYN


    ### IP indésirables
    ## en gros elle sont sur le site du RIPE (organisme distribuent les IP ou plage IP au professionnel)
    ## site du RIPE https://apps.db.ripe.net/search/full-text.html (ADOPI et trident media guard (tmg) sont de mot a rechercher ;)
   if [  $ipblacklist -eq $on ]
      while read ligne
      do
         ipdrop=`echo $ligne | cut -d &quot; &quot; -f1`
         iptables -I INPUT  -s $ipdrop -j DROP
         iptables -I OUTPUT  -d $ipdrop -j DROP
      done &lt; /usr/local/share/ipblacklist
   fi
   # les lignes du fichier ipblacklist doive ètre de type :
   # xxx.xxx.xxx.xxx/xx &lt;=espace commentaire sans le # au debut bien sur
   # ou
   # xxx.xxx.xxx.xxx/xxx.xxx.xxx.xxx &lt;=espace commentaire en fonction de comment on écrit le masque réseau

   iptables -I INPUT  -s 85.116.217.200/29 -j DROP # ADOPI
   iptables -I INPUT  -s 193.107.240.0/22  -j DROP  # trident media guard (tmg)
   iptables -I INPUT  -s 195.191.244.0/23  -j DROP # trident media guard (tmg)
   iptables -I INPUT  -s 193.105.197.0/24  -j DROP # trident media guard (tmg)

   iptables -I OUTPUT  -d 85.116.217.200/29 -j DROP # ADOPI
   iptables -I OUTPUT  -d 193.107.240.0/22  -j DROP # trident media guard (tmg)
   iptables -I OUTPUT  -d 195.191.244.0/23  -j DROP # trident media guard (tmg)
   iptables -I OUTPUT  -d 193.105.197.0/24  -j DROP # trident media guard (tmg)

    ### ACCEPT ALL interface loopbaak ###
    iptables -A INPUT  -i lo -j ACCEPT
    iptables -A OUTPUT -o lo -j ACCEPT

    ### axepte en entrer les connexions déjà établies (en gros sa permet d'accepter que les connexions initier
    ### par sont propre PC)
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    ### DNS indispensable pour naviguer facilement sur le web ###
    iptables -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT

    ### HTTP navigation internet non sécuriséer ###
    iptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT

    ### HTTPS pour le site de banque .... ###
    iptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT

    ### emesene,pindgin,amsn...  ####
   if [  $amsn -eq $on ]
   then
       iptables -A OUTPUT -p tcp -m tcp --dport 1863 -j ACCEPT     
       iptables -A OUTPUT -p tcp -m tcp --dport 6891:6900 -j ACCEPT # pour transfert de fichiers , webcam
       iptables -A OUTPUT -p udp -m udp --dport 6891:6900 -j ACCEPT # pour transfert de fichiers , webcam
   fi
    ### pop thunderbird ... réceptions des message ####
    iptables -A OUTPUT -p tcp -m tcp --dport 110 -j ACCEPT

    ### smtp thunderbird ... envoi des messages ###
    iptables -A OUTPUT -p tcp -m tcp --dport 25 -j ACCEPT

    ### clientNTP ... sincro a un serveur de temp ###
    if [  $clientNTP -eq $on ]
   then
       iptables -A OUTPUT -p udp -m udp --dport 123 -j ACCEPT
    fi
    ### client-transmition
    if [  $transmition -eq $on ]
   then
       iptables -A OUTPUT -p udp -m udp --sport 51413 -j ACCEPT
       iptables -A OUTPUT -p tcp -m tcp --sport 30000:65000 -j ACCEPT
    fi
    ### ping ... autorise a pinger un ordinateur distant ###
    iptables -A OUTPUT -p icmp -j ACCEPT

    ### LandesEternelles
    if [  $LandesEternelles -eq $on ]
   then
   iptables -A OUTPUT  -d 62.93.225.45 -p tcp --sport 39943 --dport 3000 -j ACCEPT
    fi
    ### SecondeLife
    if [  $SecondeLife -eq $on ]
   then
       iptables -A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT
       iptables -A INPUT  -s 216.82.0.0/18 -p tcp --dport 1023:65000 -j ACCEPT # Secondelife
       iptables -A INPUT  -s 64.94.252.0/23 -p tcp --dport 1023:65000 -j ACCEPT # Voice
       iptables -A INPUT  -s 70.42.62.0/24 -p tcp --dport 1023:65000 -j ACCEPT # Voice
       iptables -A INPUT  -s 74.201.98.0/23 -p tcp --dport 1023:65000 -j ACCEPT # Voice

       iptables -A INPUT  -s 216.82.0.0/18 -p udp --dport 1023:65000 -j ACCEPT # Secondelife
       iptables -A INPUT  -s 64.94.252.0/23 -p udp --dport 1023:65000 -j ACCEPT # Voice
       iptables -A INPUT  -s 70.42.62.0/24 -p udp --dport 1023:65000 -j ACCEPT # Voice
       iptables -A INPUT  -s 74.201.98.0/23 -p udp --dport 1023:65000 -j ACCEPT # Voice

       iptables -A OUTPUT  -d 216.82.0.0/18 -p tcp --sport 1023:65000 -j ACCEPT # Secondelife
       iptables -A OUTPUT  -d 64.94.252.0/23 -p tcp --sport 1023:65000 -j ACCEPT # Voice
       iptables -A OUTPUT  -d 70.42.62.0/24 -p tcp --sport 1023:65000 -j ACCEPT # Voice
       iptables -A OUTPUT  -d 74.201.98.0/23  -p tcp --sport 1023:65000 -j ACCEPT # Voice

       iptables -A OUTPUT  -d 216.82.0.0/18 -p udp --sport 1023:65000 -j ACCEPT # Secondelife
       iptables -A OUTPUT  -d 64.94.252.0/23 -p udp --sport 1023:65000 -j ACCEPT # Voice
       iptables -A OUTPUT  -d 70.42.62.0/24 -p udp --sport 1023:65000 -j ACCEPT # Voice
       iptables -A OUTPUT  -d 74.201.98.0/23  -p udp --sport 1023:65000 -j ACCEPT # Voice
    fi

    ### ping ... autorise l'extèrieur a vous pinger  ###
    if [  $pingexterne -eq $on ]
       iptables -A INPUT -p icmp -j ACCEPT               # enlever le # du début de ligne pour activer cette règle
    fi

    ### LOG ### Log tous ce qui qui n'est pas accepter par une règles précédente
        # prés requit :       sudo apt-get install sysklogd
        #                     echo 'kern.warning             /var/log/iptables.log' &gt; /etc/syslog.conf                     
    iptables -A OUTPUT -j LOG --log-level 4
    iptables -A INPUT -j LOG  --log-level 4
    iptables -A FORWARD -j LOG  --log-level 4
    echo &quot;############ &lt;START&gt; ##############&quot;
    iptables -L -n
    echo &quot;############ &lt;/START&gt; ##############&quot;
}
stop() {
### OUVRE TOUS !! ###
    iptables -F
    iptables -X
    iptables -P INPUT ACCEPT
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD ACCEPT
    echo &quot;############ &lt;STOP&gt; ##############&quot;
    iptables -L -n
    echo &quot;############ &lt;/STOP&gt; ##############&quot;
}

case &quot;$1&quot; in
  start)
   start
    ;;
  stop)
      stop
    ;;
  restart)
   stop
   start
    ;;
  *)
    N=/etc/init.d/${0##*/}
    echo &quot;Usage: $N {start|stop|restart}&quot; &gt;&amp;2
    exit 1
    ;;
esac

exit 0
&lt;/code&gt;</text>
      <sha1>bfjzha44gjau7y3jf01zyrpl06yf010</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3644</id>
      <parentid>3643</parentid>
      <timestamp>2011-12-28T11:47:38Z</timestamp>
      <contributor>
        <username>Hulk</username>
        <id>190</id>
      </contributor>
      <text xml:space="preserve" bytes="3625">= testez le wiki ici =

{{Ébauche|les patates}}
{{sid}}
{{stable}}

*'''Un'''&lt;br&gt; 
*Deux
*''&lt;u&gt;Trois&lt;/u&gt;''


&lt;span style=&quot;color:#FF0000;&quot;&gt;Texte en rouge&lt;/span&gt;

&lt;small&gt;petite taille&lt;/small&gt;

&lt;big&gt;grande taille&lt;/big&gt;

&lt;br&gt;
&lt;blockquote&gt;Test de citation....&lt;br&gt;
Deuxième ligne&lt;br&gt;
Troisième ligne
&lt;/blockquote&gt;
&lt;br&gt; Retour

=== Faire des alinéas (décalage, tabulation) ===

Il faut utiliser des ':', un pour chaque décalage.

 Sans retrait
 : Avec un retrait
 :: Avec deux retraits

Sans retrait
: Avec un retrait
:: Avec deux retraits

== Titre de deuxième niveau ==

'''Important : le titre de premier niveau n'est jamais utilisé dans les articles puisqu'il s'agit du niveau utilisé pour le titre des articles.'''

Une liste :
* Un lien interne direct: [[Special:Recentchanges]]
* ''italique''
* '''gras'''
* '''''gras et italique'''''
* &lt;s&gt;barré&lt;/s&gt; ou &lt;strike&gt;barrer&lt;/strike&gt;
* &lt;u&gt;en souligner d'autres...&lt;/u&gt;

* Et ça marche avec les apostrophes : l''''automne''' sera pluvieux !
On numérote '''une''' liste ?
# Pourquoi pas ?
# Je veux bien !
# C'est facile... Par exemple : [[Manuel_d'installation]] ou encore [[Commandes_informations]]

&lt;ul&gt;
  &lt;li&gt;Liste avec balises HTML :
  &lt;ol&gt;
    &lt;li&gt;Premier élément
    &lt;li&gt;Second élément
  &lt;/ol&gt;
  &lt;li&gt;d'autres branches à l'arborescence
&lt;/ul&gt;

=== Troisième niveau : comment utiliser les indices ===

Du texte normal peut contenir &lt;sub&gt;un indice&lt;/sub&gt; pour des notations.

==== Quatrième niveau de titre : et maintenant les exposants ====

Du texte normal peut contenir aussi &lt;sup&gt;un exposant&lt;/sup&gt;.

===== Cinquième niveau de titre =====

Pour passer au paragraphe suivant, il faut laisser une ligne blanche.
Ici, on est toujours dans le même paragraphe.

Et hop, voici le nouveau paragraphe !

====== Sixième (et dernier) niveau de titre ======

Normalement, ça doit suffire pour découper un article en détail.

== Et pour les tableaux... ==

{| class=&quot;wikitable&quot;
|+ Titre du tableau
! colonne 1
! colonne 2
|-
| On peut aussi
| faire des tableaux
|- {{ligne grise}}
| c'est bien pratique
| pour présenter des données chiffrées
|}

== Exemple de texte avec une image ==


[[Fichier:IMG_5906.JPG|120px|right|thumb||Différents formats peuvent être utilisés pour les images (gif, png, jpg).]]

'''lol''' (Paris, 07 décembre 19xx) est un parfait inconnu !

Lol tente désespérément de faire fonctionner une extension du MediaWiki pendant trois jours... C'est dire son niveau !

Aujourd'hui après une dure bataille, il parvient enfin à mettre un terme au combat d'une semaine, contre ses propres lacunes, et en sort tout à fait plus inconnu qu'avant !

A part pédaler dans la choucroute quand il s'agit de Debian, lol fait un peu de quad, et quand il ne se casse pas la figure, il arrive à manoeuvrer sa machine (bien trop puissante pour lui) ...

=== Galerie ===

Utilisez la galerie pour présenter plusieurs images de manière compacte au sein d'un article :
&lt;gallery&gt;
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Lol]]
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Encore Lol]]
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Toujours Lol]]
&lt;/gallery&gt;

== Coloration syntaxique de code ==

&lt;code python&gt;import string, sys
 
# If no arguments were given, print a helpful message
if len(sys.argv)==1:
    print 'Usage: celsius temp1 temp2 ...'
    sys.exit(0)
 
# Loop over the arguments
for i in sys.argv[1:]:
    try: 
        fahrenheit=float(string.atoi(i))
    except string.atoi_error:
	print repr(i), &quot;not a numeric value&quot;
    else:
	celsius=(fahrenheit-32)*5.0/9.0
	print '%i\260F = %i\260C' % (int(fahrenheit), int(celsius+.5))&lt;/code&gt;

[[Catégorie:Aide]]</text>
      <sha1>6rfmgmuhi5r8f41pvzu52m654u7t2rq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3646</id>
      <parentid>3644</parentid>
      <timestamp>2011-12-29T04:30:11Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <comment>Annulation des modifications 3644 de [[Special:Contributions/Hulk|Hulk]] ([[User talk:Hulk|discussion]])</comment>
      <text xml:space="preserve" bytes="12393">= testez le wiki ici =

{{Ébauche|les patates}}
{{sid}}
{{stable}}

*'''Un'''&lt;br&gt; 
*Deux
*''&lt;u&gt;Trois&lt;/u&gt;''


&lt;span style=&quot;color:#FF0000;&quot;&gt;Texte en rouge&lt;/span&gt;

&lt;small&gt;petite taille&lt;/small&gt;

&lt;big&gt;grande taille&lt;/big&gt;

&lt;br&gt;
&lt;blockquote&gt;Test de citation....&lt;br&gt;
Deuxième ligne&lt;br&gt;
Troisième ligne
&lt;/blockquote&gt;
&lt;br&gt; Retour

=== Faire des alinéas (décalage, tabulation) ===

Il faut utiliser des ':', un pour chaque décalage.

 Sans retrait
 : Avec un retrait
 :: Avec deux retraits

Sans retrait
: Avec un retrait
:: Avec deux retraits

== Titre de deuxième niveau ==

'''Important : le titre de premier niveau n'est jamais utilisé dans les articles puisqu'il s'agit du niveau utilisé pour le titre des articles.'''

Une liste :
* Un lien interne direct: [[Special:Recentchanges]]
* ''italique''
* '''gras'''
* '''''gras et italique'''''
* &lt;s&gt;barré&lt;/s&gt; ou &lt;strike&gt;barrer&lt;/strike&gt;
* &lt;u&gt;en souligner d'autres...&lt;/u&gt;

* Et ça marche avec les apostrophes : l''''automne''' sera pluvieux !
On numérote '''une''' liste ?
# Pourquoi pas ?
# Je veux bien !
# C'est facile... Par exemple : [[Manuel_d'installation]] ou encore [[Commandes_informations]]

&lt;ul&gt;
  &lt;li&gt;Liste avec balises HTML :
  &lt;ol&gt;
    &lt;li&gt;Premier élément
    &lt;li&gt;Second élément
  &lt;/ol&gt;
  &lt;li&gt;d'autres branches à l'arborescence
&lt;/ul&gt;

=== Troisième niveau : comment utiliser les indices ===

Du texte normal peut contenir &lt;sub&gt;un indice&lt;/sub&gt; pour des notations.

==== Quatrième niveau de titre : et maintenant les exposants ====

Du texte normal peut contenir aussi &lt;sup&gt;un exposant&lt;/sup&gt;.

===== Cinquième niveau de titre =====

Pour passer au paragraphe suivant, il faut laisser une ligne blanche.
Ici, on est toujours dans le même paragraphe.

Et hop, voici le nouveau paragraphe !

====== Sixième (et dernier) niveau de titre ======

Normalement, ça doit suffire pour découper un article en détail.

== Et pour les tableaux... ==

{| class=&quot;wikitable&quot;
|+ Titre du tableau
! colonne 1
! colonne 2
|-
| On peut aussi
| faire des tableaux
|- {{ligne grise}}
| c'est bien pratique
| pour présenter des données chiffrées
|}

== Exemple de texte avec une image ==


[[Fichier:IMG_5906.JPG|120px|right|thumb||Différents formats peuvent être utilisés pour les images (gif, png, jpg).]]

'''lol''' (Paris, 07 décembre 19xx) est un parfait inconnu !

Lol tente désespérément de faire fonctionner une extension du MediaWiki pendant trois jours... C'est dire son niveau !

Aujourd'hui après une dure bataille, il parvient enfin à mettre un terme au combat d'une semaine, contre ses propres lacunes, et en sort tout à fait plus inconnu qu'avant !

A part pédaler dans la choucroute quand il s'agit de Debian, lol fait un peu de quad, et quand il ne se casse pas la figure, il arrive à manoeuvrer sa machine (bien trop puissante pour lui) ...

=== Galerie ===

Utilisez la galerie pour présenter plusieurs images de manière compacte au sein d'un article :
&lt;gallery&gt;
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Lol]]
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Encore Lol]]
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Toujours Lol]]
&lt;/gallery&gt;

== Coloration syntaxique de code ==

&lt;code python&gt;import string, sys
 
# If no arguments were given, print a helpful message
if len(sys.argv)==1:
    print 'Usage: celsius temp1 temp2 ...'
    sys.exit(0)
 
# Loop over the arguments
for i in sys.argv[1:]:
    try: 
        fahrenheit=float(string.atoi(i))
    except string.atoi_error:
	print repr(i), &quot;not a numeric value&quot;
    else:
	celsius=(fahrenheit-32)*5.0/9.0
	print '%i\260F = %i\260C' % (int(fahrenheit), int(celsius+.5))&lt;/code&gt;

[[Catégorie:Aide]]

== Sujet du message: Règles iptables pour vos applications (pc de bureau). ==
Il serai bon d'avoir une listes de règle iptables a dispos en fonctions des jeux , application , installer sur un pc de bureau , dans sont utilisation la plus courante , sans nat ni partage de connections , juste un pc de travail connecter a internet.
aussi pour débuter je poste mon scripte iptables qui bien que non exhaustif feras une base convenable.
n'hésiter donc pas a rajouter les règles pour les applications qui ni figurent pas. 
&lt;code bash&gt;
#! /bin/sh
### BEGIN INIT INFO
# Provides:          iptables
# Required-Start:   
# Required-Stop:   
# Should-Start:     
# Should-Stop:       
# Default-Start:     1 2 3 4 5
# Default-Stop:      0 6
# Short-Description: script iptables
### END INIT INFO

# activer au demarage.
# en root avec su ou sudo
# cp ...iptables /etc/init.d/
# chown root:root /etc/init.d/iptables
# chmod 750 /etc/init.d/iptables
# update-rc.d iptables defaults
# /etc/init.d/iptables start

on=&quot;1&quot;
off=&quot;0&quot;
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
interface_WAN=&quot;eth0&quot;
##### règles appliquer ou non ######
ipblacklist=$off
pingexterne=$off
SecondeLife=$off
LandesEternelles=$on
transmition=$on
clientNTP=$on
amsn=$on
###################################
start() {
    ### SUPPRESSION de TOUTES LES ANCIENNES TABLES (OUVRE TOUS!!) ###
    iptables -F
    iptables -X
    ### BLOC TOUS PAR DEFAULT (si aucune règle n'est définit par la suite) ###
    iptables -P INPUT DROP
    iptables -P OUTPUT DROP
    iptables -P FORWARD DROP
    ### Iptables refuse les scans XMAS et NULL
   iptables -A INPUT -p tcp --tcp-flags FIN,URG,PSH FIN,URG,PSH -j DROP
   iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
   iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
   iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
    ### Iptables limite TCP, UDP, ICMP Flood !
    ### Une des attaques possible est de saturer votre interface réseau.
   # TCP Syn Flood
   iptables -A INPUT -i $interface_WAN -p tcp --syn -m limit --limit 3/s -j ACCEPT
   # UDP Syn Flood
   iptables -A INPUT -i $interface_WAN -p udp -m limit --limit 10/s -j ACCEPT
   # Ping Flood
   iptables -A INPUT -i $interface_WAN -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
   iptables -A INPUT -i $interface_WAN -p icmp --icmp-type echo-reply -m limit --limit 1/s -j ACCEPT

   # fichiers de conf a modifier
   #pas de spoofing
   # Fichier /etc/sysctl.conf
   # net.ipv4.conf.default.rp_filter=1
   # net.ipv4.conf.all.rp_filter=1
   #pas de synflood
   #Fichier /etc/sysctl
   #net.ipv4.tcp_syncookies=1
   #net.ipv4.tcp_max_syn_backlog=1280 # Ceci active la resistance au Flood SYN


    ### IP indésirables
    ## en gros elle sont sur le site du RIPE (organisme distribuent les IP ou plage IP au professionnel)
    ## site du RIPE https://apps.db.ripe.net/search/full-text.html (ADOPI et trident media guard (tmg) sont de mot a rechercher ;)
   if [  $ipblacklist -eq $on ]
      while read ligne
      do
         ipdrop=`echo $ligne | cut -d &quot; &quot; -f1`
         iptables -I INPUT  -s $ipdrop -j DROP
         iptables -I OUTPUT  -d $ipdrop -j DROP
      done &lt; /usr/local/share/ipblacklist
   fi
   # les lignes du fichier ipblacklist doive ètre de type :
   # xxx.xxx.xxx.xxx/xx &lt;=espace commentaire sans le # au debut bien sur
   # ou
   # xxx.xxx.xxx.xxx/xxx.xxx.xxx.xxx &lt;=espace commentaire en fonction de comment on écrit le masque réseau

   iptables -I INPUT  -s 85.116.217.200/29 -j DROP # ADOPI
   iptables -I INPUT  -s 193.107.240.0/22  -j DROP  # trident media guard (tmg)
   iptables -I INPUT  -s 195.191.244.0/23  -j DROP # trident media guard (tmg)
   iptables -I INPUT  -s 193.105.197.0/24  -j DROP # trident media guard (tmg)

   iptables -I OUTPUT  -d 85.116.217.200/29 -j DROP # ADOPI
   iptables -I OUTPUT  -d 193.107.240.0/22  -j DROP # trident media guard (tmg)
   iptables -I OUTPUT  -d 195.191.244.0/23  -j DROP # trident media guard (tmg)
   iptables -I OUTPUT  -d 193.105.197.0/24  -j DROP # trident media guard (tmg)

    ### ACCEPT ALL interface loopbaak ###
    iptables -A INPUT  -i lo -j ACCEPT
    iptables -A OUTPUT -o lo -j ACCEPT

    ### axepte en entrer les connexions déjà établies (en gros sa permet d'accepter que les connexions initier
    ### par sont propre PC)
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    ### DNS indispensable pour naviguer facilement sur le web ###
    iptables -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT

    ### HTTP navigation internet non sécuriséer ###
    iptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT

    ### HTTPS pour le site de banque .... ###
    iptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT

    ### emesene,pindgin,amsn...  ####
   if [  $amsn -eq $on ]
   then
       iptables -A OUTPUT -p tcp -m tcp --dport 1863 -j ACCEPT     
       iptables -A OUTPUT -p tcp -m tcp --dport 6891:6900 -j ACCEPT # pour transfert de fichiers , webcam
       iptables -A OUTPUT -p udp -m udp --dport 6891:6900 -j ACCEPT # pour transfert de fichiers , webcam
   fi
    ### pop thunderbird ... réceptions des message ####
    iptables -A OUTPUT -p tcp -m tcp --dport 110 -j ACCEPT

    ### smtp thunderbird ... envoi des messages ###
    iptables -A OUTPUT -p tcp -m tcp --dport 25 -j ACCEPT

    ### clientNTP ... sincro a un serveur de temp ###
    if [  $clientNTP -eq $on ]
   then
       iptables -A OUTPUT -p udp -m udp --dport 123 -j ACCEPT
    fi
    ### client-transmition
    if [  $transmition -eq $on ]
   then
       iptables -A OUTPUT -p udp -m udp --sport 51413 -j ACCEPT
       iptables -A OUTPUT -p tcp -m tcp --sport 30000:65000 -j ACCEPT
    fi
    ### ping ... autorise a pinger un ordinateur distant ###
    iptables -A OUTPUT -p icmp -j ACCEPT

    ### LandesEternelles
    if [  $LandesEternelles -eq $on ]
   then
   iptables -A OUTPUT  -d 62.93.225.45 -p tcp --sport 39943 --dport 3000 -j ACCEPT
    fi
    ### SecondeLife
    if [  $SecondeLife -eq $on ]
   then
       iptables -A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT
       iptables -A INPUT  -s 216.82.0.0/18 -p tcp --dport 1023:65000 -j ACCEPT # Secondelife
       iptables -A INPUT  -s 64.94.252.0/23 -p tcp --dport 1023:65000 -j ACCEPT # Voice
       iptables -A INPUT  -s 70.42.62.0/24 -p tcp --dport 1023:65000 -j ACCEPT # Voice
       iptables -A INPUT  -s 74.201.98.0/23 -p tcp --dport 1023:65000 -j ACCEPT # Voice

       iptables -A INPUT  -s 216.82.0.0/18 -p udp --dport 1023:65000 -j ACCEPT # Secondelife
       iptables -A INPUT  -s 64.94.252.0/23 -p udp --dport 1023:65000 -j ACCEPT # Voice
       iptables -A INPUT  -s 70.42.62.0/24 -p udp --dport 1023:65000 -j ACCEPT # Voice
       iptables -A INPUT  -s 74.201.98.0/23 -p udp --dport 1023:65000 -j ACCEPT # Voice

       iptables -A OUTPUT  -d 216.82.0.0/18 -p tcp --sport 1023:65000 -j ACCEPT # Secondelife
       iptables -A OUTPUT  -d 64.94.252.0/23 -p tcp --sport 1023:65000 -j ACCEPT # Voice
       iptables -A OUTPUT  -d 70.42.62.0/24 -p tcp --sport 1023:65000 -j ACCEPT # Voice
       iptables -A OUTPUT  -d 74.201.98.0/23  -p tcp --sport 1023:65000 -j ACCEPT # Voice

       iptables -A OUTPUT  -d 216.82.0.0/18 -p udp --sport 1023:65000 -j ACCEPT # Secondelife
       iptables -A OUTPUT  -d 64.94.252.0/23 -p udp --sport 1023:65000 -j ACCEPT # Voice
       iptables -A OUTPUT  -d 70.42.62.0/24 -p udp --sport 1023:65000 -j ACCEPT # Voice
       iptables -A OUTPUT  -d 74.201.98.0/23  -p udp --sport 1023:65000 -j ACCEPT # Voice
    fi

    ### ping ... autorise l'extèrieur a vous pinger  ###
    if [  $pingexterne -eq $on ]
       iptables -A INPUT -p icmp -j ACCEPT               # enlever le # du début de ligne pour activer cette règle
    fi

    ### LOG ### Log tous ce qui qui n'est pas accepter par une règles précédente
        # prés requit :       sudo apt-get install sysklogd
        #                     echo 'kern.warning             /var/log/iptables.log' &gt; /etc/syslog.conf                     
    iptables -A OUTPUT -j LOG --log-level 4
    iptables -A INPUT -j LOG  --log-level 4
    iptables -A FORWARD -j LOG  --log-level 4
    echo &quot;############ &lt;START&gt; ##############&quot;
    iptables -L -n
    echo &quot;############ &lt;/START&gt; ##############&quot;
}
stop() {
### OUVRE TOUS !! ###
    iptables -F
    iptables -X
    iptables -P INPUT ACCEPT
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD ACCEPT
    echo &quot;############ &lt;STOP&gt; ##############&quot;
    iptables -L -n
    echo &quot;############ &lt;/STOP&gt; ##############&quot;
}

case &quot;$1&quot; in
  start)
   start
    ;;
  stop)
      stop
    ;;
  restart)
   stop
   start
    ;;
  *)
    N=/etc/init.d/${0##*/}
    echo &quot;Usage: $N {start|stop|restart}&quot; &gt;&amp;2
    exit 1
    ;;
esac

exit 0
&lt;/code&gt;</text>
      <sha1>bfjzha44gjau7y3jf01zyrpl06yf010</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3647</id>
      <parentid>3646</parentid>
      <timestamp>2011-12-29T04:30:39Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <comment>Annulation des modifications 3643 de [[Special:Contributions/Hulk|Hulk]] ([[User talk:Hulk|discussion]])</comment>
      <text xml:space="preserve" bytes="11949">= testez le wiki ici =

{{Ébauche|les patates}}
{{sid}}
{{stable}}

*'''Un'''&lt;br&gt; 
*Deux
*''&lt;u&gt;Trois&lt;/u&gt;''


&lt;span style=&quot;color:#FF0000;&quot;&gt;Texte en rouge&lt;/span&gt;

&lt;small&gt;petite taille&lt;/small&gt;

&lt;big&gt;grande taille&lt;/big&gt;

&lt;br&gt;
&lt;blockquote&gt;Test de citation....&lt;br&gt;
Deuxième ligne&lt;br&gt;
Troisième ligne
&lt;/blockquote&gt;
&lt;br&gt; Retour

=== Faire des alinéas (décalage, tabulation) ===

Il faut utiliser des ':', un pour chaque décalage.

 Sans retrait
 : Avec un retrait
 :: Avec deux retraits

Sans retrait
: Avec un retrait
:: Avec deux retraits

== Titre de deuxième niveau ==

'''Important : le titre de premier niveau n'est jamais utilisé dans les articles puisqu'il s'agit du niveau utilisé pour le titre des articles.'''

Une liste :
* Un lien interne direct: [[Special:Recentchanges]]
* ''italique''
* '''gras'''
* '''''gras et italique'''''
* &lt;s&gt;barré&lt;/s&gt; ou &lt;strike&gt;barrer&lt;/strike&gt;
* &lt;u&gt;en souligner d'autres...&lt;/u&gt;

* Et ça marche avec les apostrophes : l''''automne''' sera pluvieux !
On numérote '''une''' liste ?
# Pourquoi pas ?
# Je veux bien !
# C'est facile... Par exemple : [[Manuel_d'installation]] ou encore [[Commandes_informations]]

&lt;ul&gt;
  &lt;li&gt;Liste avec balises HTML :
  &lt;ol&gt;
    &lt;li&gt;Premier élément
    &lt;li&gt;Second élément
  &lt;/ol&gt;
  &lt;li&gt;d'autres branches à l'arborescence
&lt;/ul&gt;

=== Troisième niveau : comment utiliser les indices ===

Du texte normal peut contenir &lt;sub&gt;un indice&lt;/sub&gt; pour des notations.

==== Quatrième niveau de titre : et maintenant les exposants ====

Du texte normal peut contenir aussi &lt;sup&gt;un exposant&lt;/sup&gt;.

===== Cinquième niveau de titre =====

Pour passer au paragraphe suivant, il faut laisser une ligne blanche.
Ici, on est toujours dans le même paragraphe.

Et hop, voici le nouveau paragraphe !

====== Sixième (et dernier) niveau de titre ======

Normalement, ça doit suffire pour découper un article en détail.

== Et pour les tableaux... ==

{| class=&quot;wikitable&quot;
|+ Titre du tableau
! colonne 1
! colonne 2
|-
| On peut aussi
| faire des tableaux
|- {{ligne grise}}
| c'est bien pratique
| pour présenter des données chiffrées
|}

== Exemple de texte avec une image ==


[[Fichier:IMG_5906.JPG|120px|right|thumb||Différents formats peuvent être utilisés pour les images (gif, png, jpg).]]

'''lol''' (Paris, 07 décembre 19xx) est un parfait inconnu !

Lol tente désespérément de faire fonctionner une extension du MediaWiki pendant trois jours... C'est dire son niveau !

Aujourd'hui après une dure bataille, il parvient enfin à mettre un terme au combat d'une semaine, contre ses propres lacunes, et en sort tout à fait plus inconnu qu'avant !

A part pédaler dans la choucroute quand il s'agit de Debian, lol fait un peu de quad, et quand il ne se casse pas la figure, il arrive à manoeuvrer sa machine (bien trop puissante pour lui) ...

=== Galerie ===

Utilisez la galerie pour présenter plusieurs images de manière compacte au sein d'un article :
&lt;gallery&gt;
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Lol]]
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Encore Lol]]
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Toujours Lol]]
&lt;/gallery&gt;

== Coloration syntaxique de code ==

&lt;code python&gt;import string, sys
 
# If no arguments were given, print a helpful message
if len(sys.argv)==1:
    print 'Usage: celsius temp1 temp2 ...'
    sys.exit(0)
 
# Loop over the arguments
for i in sys.argv[1:]:
    try: 
        fahrenheit=float(string.atoi(i))
    except string.atoi_error:
	print repr(i), &quot;not a numeric value&quot;
    else:
	celsius=(fahrenheit-32)*5.0/9.0
	print '%i\260F = %i\260C' % (int(fahrenheit), int(celsius+.5))&lt;/code&gt;

[[Catégorie:Aide]]

== Sujet du message: Règles iptables pour vos applications (pc de bureau). ==
&lt;code bash&gt;
#! /bin/sh
### BEGIN INIT INFO
# Provides:          iptables
# Required-Start:   
# Required-Stop:   
# Should-Start:     
# Should-Stop:       
# Default-Start:     1 2 3 4 5
# Default-Stop:      0 6
# Short-Description: script iptables
### END INIT INFO

# activer au demarage.
# en root avec su ou sudo
# cp ...iptables /etc/init.d/
# chown root:root /etc/init.d/iptables
# chmod 750 /etc/init.d/iptables
# update-rc.d iptables defaults
# /etc/init.d/iptables start

on=&quot;1&quot;
off=&quot;0&quot;
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
interface_WAN=&quot;eth0&quot;
##### règles appliquer ou non ######
ipblacklist=$off
pingexterne=$off
SecondeLife=$off
LandesEternelles=$on
transmition=$on
clientNTP=$on
amsn=$on
###################################
start() {
    ### SUPPRESSION de TOUTES LES ANCIENNES TABLES (OUVRE TOUS!!) ###
    iptables -F
    iptables -X
    ### BLOC TOUS PAR DEFAULT (si aucune règle n'est définit par la suite) ###
    iptables -P INPUT DROP
    iptables -P OUTPUT DROP
    iptables -P FORWARD DROP
    ### Iptables refuse les scans XMAS et NULL
   iptables -A INPUT -p tcp --tcp-flags FIN,URG,PSH FIN,URG,PSH -j DROP
   iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
   iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
   iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
    ### Iptables limite TCP, UDP, ICMP Flood !
    ### Une des attaques possible est de saturer votre interface réseau.
   # TCP Syn Flood
   iptables -A INPUT -i $interface_WAN -p tcp --syn -m limit --limit 3/s -j ACCEPT
   # UDP Syn Flood
   iptables -A INPUT -i $interface_WAN -p udp -m limit --limit 10/s -j ACCEPT
   # Ping Flood
   iptables -A INPUT -i $interface_WAN -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
   iptables -A INPUT -i $interface_WAN -p icmp --icmp-type echo-reply -m limit --limit 1/s -j ACCEPT

   # fichiers de conf a modifier
   #pas de spoofing
   # Fichier /etc/sysctl.conf
   # net.ipv4.conf.default.rp_filter=1
   # net.ipv4.conf.all.rp_filter=1
   #pas de synflood
   #Fichier /etc/sysctl
   #net.ipv4.tcp_syncookies=1
   #net.ipv4.tcp_max_syn_backlog=1280 # Ceci active la resistance au Flood SYN


    ### IP indésirables
    ## en gros elle sont sur le site du RIPE (organisme distribuent les IP ou plage IP au professionnel)
    ## site du RIPE https://apps.db.ripe.net/search/full-text.html (ADOPI et trident media guard (tmg) sont de mot a rechercher ;)
   if [  $ipblacklist -eq $on ]
      while read ligne
      do
         ipdrop=`echo $ligne | cut -d &quot; &quot; -f1`
         iptables -I INPUT  -s $ipdrop -j DROP
         iptables -I OUTPUT  -d $ipdrop -j DROP
      done &lt; /usr/local/share/ipblacklist
   fi
   # les lignes du fichier ipblacklist doive ètre de type :
   # xxx.xxx.xxx.xxx/xx &lt;=espace commentaire sans le # au debut bien sur
   # ou
   # xxx.xxx.xxx.xxx/xxx.xxx.xxx.xxx &lt;=espace commentaire en fonction de comment on écrit le masque réseau

   iptables -I INPUT  -s 85.116.217.200/29 -j DROP # ADOPI
   iptables -I INPUT  -s 193.107.240.0/22  -j DROP  # trident media guard (tmg)
   iptables -I INPUT  -s 195.191.244.0/23  -j DROP # trident media guard (tmg)
   iptables -I INPUT  -s 193.105.197.0/24  -j DROP # trident media guard (tmg)

   iptables -I OUTPUT  -d 85.116.217.200/29 -j DROP # ADOPI
   iptables -I OUTPUT  -d 193.107.240.0/22  -j DROP # trident media guard (tmg)
   iptables -I OUTPUT  -d 195.191.244.0/23  -j DROP # trident media guard (tmg)
   iptables -I OUTPUT  -d 193.105.197.0/24  -j DROP # trident media guard (tmg)

    ### ACCEPT ALL interface loopbaak ###
    iptables -A INPUT  -i lo -j ACCEPT
    iptables -A OUTPUT -o lo -j ACCEPT

    ### axepte en entrer les connexions déjà établies (en gros sa permet d'accepter que les connexions initier
    ### par sont propre PC)
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    ### DNS indispensable pour naviguer facilement sur le web ###
    iptables -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT

    ### HTTP navigation internet non sécuriséer ###
    iptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT

    ### HTTPS pour le site de banque .... ###
    iptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT

    ### emesene,pindgin,amsn...  ####
   if [  $amsn -eq $on ]
   then
       iptables -A OUTPUT -p tcp -m tcp --dport 1863 -j ACCEPT     
       iptables -A OUTPUT -p tcp -m tcp --dport 6891:6900 -j ACCEPT # pour transfert de fichiers , webcam
       iptables -A OUTPUT -p udp -m udp --dport 6891:6900 -j ACCEPT # pour transfert de fichiers , webcam
   fi
    ### pop thunderbird ... réceptions des message ####
    iptables -A OUTPUT -p tcp -m tcp --dport 110 -j ACCEPT

    ### smtp thunderbird ... envoi des messages ###
    iptables -A OUTPUT -p tcp -m tcp --dport 25 -j ACCEPT

    ### clientNTP ... sincro a un serveur de temp ###
    if [  $clientNTP -eq $on ]
   then
       iptables -A OUTPUT -p udp -m udp --dport 123 -j ACCEPT
    fi
    ### client-transmition
    if [  $transmition -eq $on ]
   then
       iptables -A OUTPUT -p udp -m udp --sport 51413 -j ACCEPT
       iptables -A OUTPUT -p tcp -m tcp --sport 30000:65000 -j ACCEPT
    fi
    ### ping ... autorise a pinger un ordinateur distant ###
    iptables -A OUTPUT -p icmp -j ACCEPT

    ### LandesEternelles
    if [  $LandesEternelles -eq $on ]
   then
   iptables -A OUTPUT  -d 62.93.225.45 -p tcp --sport 39943 --dport 3000 -j ACCEPT
    fi
    ### SecondeLife
    if [  $SecondeLife -eq $on ]
   then
       iptables -A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT
       iptables -A INPUT  -s 216.82.0.0/18 -p tcp --dport 1023:65000 -j ACCEPT # Secondelife
       iptables -A INPUT  -s 64.94.252.0/23 -p tcp --dport 1023:65000 -j ACCEPT # Voice
       iptables -A INPUT  -s 70.42.62.0/24 -p tcp --dport 1023:65000 -j ACCEPT # Voice
       iptables -A INPUT  -s 74.201.98.0/23 -p tcp --dport 1023:65000 -j ACCEPT # Voice

       iptables -A INPUT  -s 216.82.0.0/18 -p udp --dport 1023:65000 -j ACCEPT # Secondelife
       iptables -A INPUT  -s 64.94.252.0/23 -p udp --dport 1023:65000 -j ACCEPT # Voice
       iptables -A INPUT  -s 70.42.62.0/24 -p udp --dport 1023:65000 -j ACCEPT # Voice
       iptables -A INPUT  -s 74.201.98.0/23 -p udp --dport 1023:65000 -j ACCEPT # Voice

       iptables -A OUTPUT  -d 216.82.0.0/18 -p tcp --sport 1023:65000 -j ACCEPT # Secondelife
       iptables -A OUTPUT  -d 64.94.252.0/23 -p tcp --sport 1023:65000 -j ACCEPT # Voice
       iptables -A OUTPUT  -d 70.42.62.0/24 -p tcp --sport 1023:65000 -j ACCEPT # Voice
       iptables -A OUTPUT  -d 74.201.98.0/23  -p tcp --sport 1023:65000 -j ACCEPT # Voice

       iptables -A OUTPUT  -d 216.82.0.0/18 -p udp --sport 1023:65000 -j ACCEPT # Secondelife
       iptables -A OUTPUT  -d 64.94.252.0/23 -p udp --sport 1023:65000 -j ACCEPT # Voice
       iptables -A OUTPUT  -d 70.42.62.0/24 -p udp --sport 1023:65000 -j ACCEPT # Voice
       iptables -A OUTPUT  -d 74.201.98.0/23  -p udp --sport 1023:65000 -j ACCEPT # Voice
    fi

    ### ping ... autorise l'extèrieur a vous pinger  ###
    if [  $pingexterne -eq $on ]
       iptables -A INPUT -p icmp -j ACCEPT               # enlever le # du début de ligne pour activer cette règle
    fi

    ### LOG ### Log tous ce qui qui n'est pas accepter par une règles précédente
        # prés requit :       sudo apt-get install sysklogd
        #                     echo 'kern.warning             /var/log/iptables.log' &gt; /etc/syslog.conf                     
    iptables -A OUTPUT -j LOG --log-level 4
    iptables -A INPUT -j LOG  --log-level 4
    iptables -A FORWARD -j LOG  --log-level 4
    echo &quot;############ &lt;START&gt; ##############&quot;
    iptables -L -n
    echo &quot;############ &lt;/START&gt; ##############&quot;
}
stop() {
### OUVRE TOUS !! ###
    iptables -F
    iptables -X
    iptables -P INPUT ACCEPT
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD ACCEPT
    echo &quot;############ &lt;STOP&gt; ##############&quot;
    iptables -L -n
    echo &quot;############ &lt;/STOP&gt; ##############&quot;
}

case &quot;$1&quot; in
  start)
   start
    ;;
  stop)
      stop
    ;;
  restart)
   stop
   start
    ;;
  *)
    N=/etc/init.d/${0##*/}
    echo &quot;Usage: $N {start|stop|restart}&quot; &gt;&amp;2
    exit 1
    ;;
esac

exit 0
&lt;/code&gt;</text>
      <sha1>kr683dmnj3z7tw37gmtjj6ilx5ujtwh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3648</id>
      <parentid>3647</parentid>
      <timestamp>2011-12-29T04:30:59Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <comment>Annulation des modifications 3642 de [[Special:Contributions/Hulk|Hulk]] ([[User talk:Hulk|discussion]])</comment>
      <text xml:space="preserve" bytes="3625">= testez le wiki ici =

{{Ébauche|les patates}}
{{sid}}
{{stable}}

*'''Un'''&lt;br&gt; 
*Deux
*''&lt;u&gt;Trois&lt;/u&gt;''


&lt;span style=&quot;color:#FF0000;&quot;&gt;Texte en rouge&lt;/span&gt;

&lt;small&gt;petite taille&lt;/small&gt;

&lt;big&gt;grande taille&lt;/big&gt;

&lt;br&gt;
&lt;blockquote&gt;Test de citation....&lt;br&gt;
Deuxième ligne&lt;br&gt;
Troisième ligne
&lt;/blockquote&gt;
&lt;br&gt; Retour

=== Faire des alinéas (décalage, tabulation) ===

Il faut utiliser des ':', un pour chaque décalage.

 Sans retrait
 : Avec un retrait
 :: Avec deux retraits

Sans retrait
: Avec un retrait
:: Avec deux retraits

== Titre de deuxième niveau ==

'''Important : le titre de premier niveau n'est jamais utilisé dans les articles puisqu'il s'agit du niveau utilisé pour le titre des articles.'''

Une liste :
* Un lien interne direct: [[Special:Recentchanges]]
* ''italique''
* '''gras'''
* '''''gras et italique'''''
* &lt;s&gt;barré&lt;/s&gt; ou &lt;strike&gt;barrer&lt;/strike&gt;
* &lt;u&gt;en souligner d'autres...&lt;/u&gt;

* Et ça marche avec les apostrophes : l''''automne''' sera pluvieux !
On numérote '''une''' liste ?
# Pourquoi pas ?
# Je veux bien !
# C'est facile... Par exemple : [[Manuel_d'installation]] ou encore [[Commandes_informations]]

&lt;ul&gt;
  &lt;li&gt;Liste avec balises HTML :
  &lt;ol&gt;
    &lt;li&gt;Premier élément
    &lt;li&gt;Second élément
  &lt;/ol&gt;
  &lt;li&gt;d'autres branches à l'arborescence
&lt;/ul&gt;

=== Troisième niveau : comment utiliser les indices ===

Du texte normal peut contenir &lt;sub&gt;un indice&lt;/sub&gt; pour des notations.

==== Quatrième niveau de titre : et maintenant les exposants ====

Du texte normal peut contenir aussi &lt;sup&gt;un exposant&lt;/sup&gt;.

===== Cinquième niveau de titre =====

Pour passer au paragraphe suivant, il faut laisser une ligne blanche.
Ici, on est toujours dans le même paragraphe.

Et hop, voici le nouveau paragraphe !

====== Sixième (et dernier) niveau de titre ======

Normalement, ça doit suffire pour découper un article en détail.

== Et pour les tableaux... ==

{| class=&quot;wikitable&quot;
|+ Titre du tableau
! colonne 1
! colonne 2
|-
| On peut aussi
| faire des tableaux
|- {{ligne grise}}
| c'est bien pratique
| pour présenter des données chiffrées
|}

== Exemple de texte avec une image ==


[[Fichier:IMG_5906.JPG|120px|right|thumb||Différents formats peuvent être utilisés pour les images (gif, png, jpg).]]

'''lol''' (Paris, 07 décembre 19xx) est un parfait inconnu !

Lol tente désespérément de faire fonctionner une extension du MediaWiki pendant trois jours... C'est dire son niveau !

Aujourd'hui après une dure bataille, il parvient enfin à mettre un terme au combat d'une semaine, contre ses propres lacunes, et en sort tout à fait plus inconnu qu'avant !

A part pédaler dans la choucroute quand il s'agit de Debian, lol fait un peu de quad, et quand il ne se casse pas la figure, il arrive à manoeuvrer sa machine (bien trop puissante pour lui) ...

=== Galerie ===

Utilisez la galerie pour présenter plusieurs images de manière compacte au sein d'un article :
&lt;gallery&gt;
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Lol]]
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Encore Lol]]
Fichier:IMG_5906.JPG|[[Utilisateur:Lol|Toujours Lol]]
&lt;/gallery&gt;

== Coloration syntaxique de code ==

&lt;code python&gt;import string, sys
 
# If no arguments were given, print a helpful message
if len(sys.argv)==1:
    print 'Usage: celsius temp1 temp2 ...'
    sys.exit(0)
 
# Loop over the arguments
for i in sys.argv[1:]:
    try: 
        fahrenheit=float(string.atoi(i))
    except string.atoi_error:
	print repr(i), &quot;not a numeric value&quot;
    else:
	celsius=(fahrenheit-32)*5.0/9.0
	print '%i\260F = %i\260C' % (int(fahrenheit), int(celsius+.5))&lt;/code&gt;

[[Catégorie:Aide]]</text>
      <sha1>6rfmgmuhi5r8f41pvzu52m654u7t2rq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Bacula</title>
    <ns>0</ns>
    <id>994</id>
    <revision>
      <id>4125</id>
      <timestamp>2012-04-30T14:28:26Z</timestamp>
      <contributor>
        <username>Haludeis</username>
        <id>30</id>
      </contributor>
      <comment>Bacula : système de sauvegarde complet (ou presque) multiplateforme</comment>
      <text xml:space="preserve" bytes="2662">{{Ébauche|Bacula}}
{{sid}}

== Présentation ==
Ce wiki est basé sur une installation stable de Debian (en ce moment Squeeze).

(reste à faire)

== Installation ==
Bacula peut utiliser les bases de données SQLite, MySql et PostGreSQL.Il suffit d'installer les paquets correspondant à votre choix. 

Changer &quot;-mysql&quot; par &quot;-pgsql&quot; ou &quot;-sqlite3&quot; sur le paquet director et le fd.

ici je choisi MySql (MySql étant déja installé):

 # aptitude install bacula-director-mysql bacula-sd-mysql bacula

Accorder les droits à bacula sur la base de données (vérifié si pas obsolete):
 # mysql -u root -p
 &gt; grant all privileges on bacula.* to 'bacula'@'localhost' identified by 'bacula' ;

Créer le repertoire de sauvegarde et accorder les droits à bacula :
 # mkdir /home/sauvegarde/
 # chown -R bacula.bacula /home/sauvegarde
 # chmod -R 660 /home/sauvegarde (---&gt; à vérifier)

== Configuration ==
Bacula se compose des fichiers suivants :

Le fichier générale de configuration le « directeur ».
 /etc/bacula/bacula-dir.conf
Le fichier concernant le stockage des données.
 /etc/bacula/bacula-sd.conf
Celui du service permettant l'accès aux données installé sur le client à sauvegarder.
 /etc/bacula/bacula-fd.conf
le fichier permettant la connexion entre la console et le directeur 
 /etc/bacula/bconsole.conf 

=== /etc/bacula/bconsole.conf ===

 Director {                                                              PARTIE 1
  Name = NOM_DIR
  DIRport = 9101   
  address = nom_resolu_par_dns_ou_IP
  Password = &quot;mdp_du_director&quot;

  TLS Require = yes                                                      PARTIE 2
  TLS CA Certificate File = /etc/bacula/keys/ca.crt
  TLS Certificate = /etc/bacula/keys/console.crt
  TLS Key = /etc/bacula/keys/console.key 
 }

PARTIE 1 :

'''Name'''    : le nom du director ce nom vous sera demandé dans les autres fichiers.

'''Dirport''' : le port d'écoute du director.

'''address''' : Attention le nom DNS est obligatoire pour une connexion SSL penser à configurer le fichier /etc/hosts ou le serveur dns.

:: si vous n'utilisez pas de connexion sécurisée vous pouvez mettre une adresse ip directement.

'''Password''' : le mot de passe du director

PARTI 2 :

Cette partie permet la sécurisation des données entre le director et la console ca.crt doit être (explique un peu mieux)

le même partout les deux autres different pour chaque éléments de bacula voir l' annexe A sur les certificats SSL pour leur création.

=== /etc/bacula/bacula-fd.conf ===
=== /etc/bacula/bacula-sd.conf ===
=== /etc/bacula/bacula-dir.conf ===
== Sécurisation ==
== ANNEXE ==
=== Annexe A : Certificat SSL ===</text>
      <sha1>2hhusq17xt3f3tufk3n2o0kjb1ojh62</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4129</id>
      <parentid>4125</parentid>
      <timestamp>2012-05-01T06:02:49Z</timestamp>
      <contributor>
        <username>Haludeis</username>
        <id>30</id>
      </contributor>
      <comment>/* /etc/bacula/bacula-fd.conf */</comment>
      <text xml:space="preserve" bytes="4178">{{Ébauche|Bacula}}
{{sid}}

== Présentation ==
Ce wiki est basé sur une installation stable de Debian (en ce moment Squeeze).

(reste à faire)

== Installation ==
Bacula peut utiliser les bases de données SQLite, MySql et PostGreSQL.Il suffit d'installer les paquets correspondant à votre choix. 

Changer &quot;-mysql&quot; par &quot;-pgsql&quot; ou &quot;-sqlite3&quot; sur le paquet director et le fd.

ici je choisi MySql (MySql étant déja installé):

 # aptitude install bacula-director-mysql bacula-sd-mysql bacula

Accorder les droits à bacula sur la base de données (vérifié si pas obsolete):
 # mysql -u root -p
 &gt; grant all privileges on bacula.* to 'bacula'@'localhost' identified by 'bacula' ;

Créer le repertoire de sauvegarde et accorder les droits à bacula :
 # mkdir /home/sauvegarde/
 # chown -R bacula.bacula /home/sauvegarde
 # chmod -R 660 /home/sauvegarde (---&gt; à vérifier)

== Configuration ==
Bacula se compose des fichiers suivants :

Le fichier générale de configuration le « directeur ».
 /etc/bacula/bacula-dir.conf
Le fichier concernant le stockage des données.
 /etc/bacula/bacula-sd.conf
Celui du service permettant l'accès aux données installé sur le client à sauvegarder.
 /etc/bacula/bacula-fd.conf
le fichier permettant la connexion entre la console et le directeur 
 /etc/bacula/bconsole.conf 

=== /etc/bacula/bconsole.conf ===

 Director {                                                              PARTIE 1
  Name = NOM_DIR
  DIRport = 9101   
  address = nom_resolu_par_dns_ou_IP
  Password = &quot;mdp_du_director&quot;

  TLS Require = yes                                                      PARTIE 2
  TLS CA Certificate File = /etc/bacula/keys/ca.crt
  TLS Certificate = /etc/bacula/keys/console.crt
  TLS Key = /etc/bacula/keys/console.key 
 }

PARTIE 1 :

'''Name'''    : le nom du director ce nom vous sera demandé dans les autres fichiers.

'''Dirport''' : le port d'écoute du director.

'''address''' : Attention le nom DNS est obligatoire pour une connexion SSL penser à configurer le fichier /etc/hosts ou le serveur dns.

:: si vous n'utilisez pas de connexion sécurisée vous pouvez mettre une adresse ip directement.

'''Password''' : le mot de passe du director

PARTI 2 :

Cette partie permet la sécurisation des données entre le director et la console ca.crt doit être (explique un peu mieux)

le même partout les deux autres different pour chaque éléments de bacula voir l' annexe A sur les certificats SSL pour leur création.

=== /etc/bacula/bacula-fd.conf ===


Le fichier de configuration du Storage Daemon a relativement peu de définitions de ressources. Toutefois, en raison de 

la grande variation dans les médias de sauvegarde et des capacités du système, le démon de stockage doit être hautement configurable.

En conséquence, il ya un assez grand nombre de directives dans la définition des ressources de périphérique qui vous permet de définir.

toutes les caractéristiques de votre périphérique de stockage (normalement un lecteur de bande). Heureusement, avec des dispositifs 

de stockage modernes, les valeurs par défaut sont suffisantes, et très peu de directives sont réellement nécessaires.

Pour voir toutes les possibilités du Storage Daemon je vous invite à lire [http://translate.google.fr/translate?hl=fr&amp;sl=en&amp;u=http://bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html&amp;ei=wXefT8uCDMa-8AOw_Oh6&amp;sa=X&amp;oi=translate&amp;ct=result&amp;resnum=1&amp;ved=0CCQQ7gEwAA&amp;prev=/search%3Fq%3Dhttp://www.bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html%26hl%3Dfr%26biw%3D1678%26bih%3D941%26prmd%3Dimvns la traduction de google].


 Director {
  Name = NOM_DIR
  Password = &quot;mdp_du_director&quot;
 }

 Director {
  Name = NOM_MON
  Password = &quot;mdp_du_director_restreint&quot;
  Monitor = yes
 }

 FileDaemon {
  Name = NOM_FD
  FDport = 9102
  WorkingDirectory = /var/lib/bacula
  Pid Directory = /var/run/bacula
  Maximum Concurrent Jobs = 20
 }

 Messages {
  Name = Standard
  director = NOM_DIR = all, !skipped, !restored
 }

=== /etc/bacula/bacula-sd.conf ===
=== /etc/bacula/bacula-dir.conf ===
== Sécurisation ==
== ANNEXE ==
=== Annexe A : Certificat SSL ===</text>
      <sha1>kwmqcibntmorqlkunr9kpteo9l3wi3r</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4130</id>
      <parentid>4129</parentid>
      <timestamp>2012-05-01T06:03:42Z</timestamp>
      <contributor>
        <username>Haludeis</username>
        <id>30</id>
      </contributor>
      <comment>/* Sécurisation */</comment>
      <text xml:space="preserve" bytes="4247">{{Ébauche|Bacula}}
{{sid}}

== Présentation ==
Ce wiki est basé sur une installation stable de Debian (en ce moment Squeeze).

(reste à faire)

== Installation ==
Bacula peut utiliser les bases de données SQLite, MySql et PostGreSQL.Il suffit d'installer les paquets correspondant à votre choix. 

Changer &quot;-mysql&quot; par &quot;-pgsql&quot; ou &quot;-sqlite3&quot; sur le paquet director et le fd.

ici je choisi MySql (MySql étant déja installé):

 # aptitude install bacula-director-mysql bacula-sd-mysql bacula

Accorder les droits à bacula sur la base de données (vérifié si pas obsolete):
 # mysql -u root -p
 &gt; grant all privileges on bacula.* to 'bacula'@'localhost' identified by 'bacula' ;

Créer le repertoire de sauvegarde et accorder les droits à bacula :
 # mkdir /home/sauvegarde/
 # chown -R bacula.bacula /home/sauvegarde
 # chmod -R 660 /home/sauvegarde (---&gt; à vérifier)

== Configuration ==
Bacula se compose des fichiers suivants :

Le fichier générale de configuration le « directeur ».
 /etc/bacula/bacula-dir.conf
Le fichier concernant le stockage des données.
 /etc/bacula/bacula-sd.conf
Celui du service permettant l'accès aux données installé sur le client à sauvegarder.
 /etc/bacula/bacula-fd.conf
le fichier permettant la connexion entre la console et le directeur 
 /etc/bacula/bconsole.conf 

=== /etc/bacula/bconsole.conf ===

 Director {                                                              PARTIE 1
  Name = NOM_DIR
  DIRport = 9101   
  address = nom_resolu_par_dns_ou_IP
  Password = &quot;mdp_du_director&quot;

  TLS Require = yes                                                      PARTIE 2
  TLS CA Certificate File = /etc/bacula/keys/ca.crt
  TLS Certificate = /etc/bacula/keys/console.crt
  TLS Key = /etc/bacula/keys/console.key 
 }

PARTIE 1 :

'''Name'''    : le nom du director ce nom vous sera demandé dans les autres fichiers.

'''Dirport''' : le port d'écoute du director.

'''address''' : Attention le nom DNS est obligatoire pour une connexion SSL penser à configurer le fichier /etc/hosts ou le serveur dns.

:: si vous n'utilisez pas de connexion sécurisée vous pouvez mettre une adresse ip directement.

'''Password''' : le mot de passe du director

PARTI 2 :

Cette partie permet la sécurisation des données entre le director et la console ca.crt doit être (explique un peu mieux)

le même partout les deux autres different pour chaque éléments de bacula voir l' annexe A sur les certificats SSL pour leur création.

=== /etc/bacula/bacula-fd.conf ===


Le fichier de configuration du Storage Daemon a relativement peu de définitions de ressources. Toutefois, en raison de 

la grande variation dans les médias de sauvegarde et des capacités du système, le démon de stockage doit être hautement configurable.

En conséquence, il ya un assez grand nombre de directives dans la définition des ressources de périphérique qui vous permet de définir.

toutes les caractéristiques de votre périphérique de stockage (normalement un lecteur de bande). Heureusement, avec des dispositifs 

de stockage modernes, les valeurs par défaut sont suffisantes, et très peu de directives sont réellement nécessaires.

Pour voir toutes les possibilités du Storage Daemon je vous invite à lire [http://translate.google.fr/translate?hl=fr&amp;sl=en&amp;u=http://bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html&amp;ei=wXefT8uCDMa-8AOw_Oh6&amp;sa=X&amp;oi=translate&amp;ct=result&amp;resnum=1&amp;ved=0CCQQ7gEwAA&amp;prev=/search%3Fq%3Dhttp://www.bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html%26hl%3Dfr%26biw%3D1678%26bih%3D941%26prmd%3Dimvns la traduction de google].


 Director {
  Name = NOM_DIR
  Password = &quot;mdp_du_director&quot;
 }

 Director {
  Name = NOM_MON
  Password = &quot;mdp_du_director_restreint&quot;
  Monitor = yes
 }

 FileDaemon {
  Name = NOM_FD
  FDport = 9102
  WorkingDirectory = /var/lib/bacula
  Pid Directory = /var/run/bacula
  Maximum Concurrent Jobs = 20
 }

 Messages {
  Name = Standard
  director = NOM_DIR = all, !skipped, !restored
 }

=== /etc/bacula/bacula-sd.conf ===
=== /etc/bacula/bacula-dir.conf ===
== Sécurisation ==
== Utilisation ==
=== En mode Console ===
=== En mode Graphique ===

== ANNEXE ==
=== Annexe A : Certificat SSL ===</text>
      <sha1>f0do7dbm0z20652cjyb06z5w471qu0f</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4135</id>
      <parentid>4130</parentid>
      <timestamp>2012-05-01T08:14:28Z</timestamp>
      <contributor>
        <username>Haludeis</username>
        <id>30</id>
      </contributor>
      <text xml:space="preserve" bytes="8734">[[Catégorie:Sauvegardes]]
{{Ébauche|Bacula}}
{{sid}}

== Présentation ==
Ce wiki est basé sur une installation stable de Debian (en ce moment Squeeze).

(reste à faire)

== Installation ==
Bacula peut utiliser les bases de données SQLite, MySql et PostGreSQL.Il suffit d'installer les paquets correspondant à votre choix. 

Changer &quot;-mysql&quot; par &quot;-pgsql&quot; ou &quot;-sqlite3&quot; sur le paquet director et le fd.

ici je choisi MySql (MySql étant déja installé):

 # aptitude install bacula-director-mysql bacula-sd-mysql bacula

Accorder les droits à bacula sur la base de données (vérifié si pas obsolete):
 # mysql -u root -p
 &gt; grant all privileges on bacula.* to 'bacula'@'localhost' identified by 'bacula' ;

Créer le repertoire de sauvegarde et accorder les droits à bacula :
 # mkdir /home/sauvegarde/
 # chown -R bacula.bacula /home/sauvegarde
 # chmod -R 660 /home/sauvegarde (---&gt; à vérifier)

== Configuration ==
Bacula se compose des fichiers suivants :

Le fichier générale de configuration le Director :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-dir.conf&lt;/span&gt;
Le fichier Storage Daemon concernant le stockage des données :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-sd.conf&lt;/span&gt;
Celui du File Daemon permettant l'accès aux données installé sur le client à sauvegarder :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-fd.conf&lt;/span&gt;
Le fichier permettant la connexion entre la console et le directeur :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bconsole.conf&lt;/span&gt; 

=== La Console ===

'''/etc/bacula/bconsole.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' { 
:'''Name''' = NOM_DIR 
:'''DIRport''' = 9101   
:'''address''' = nom_resolu_par_dns_ou_IP 
:'''Password''' = &quot;mdp_du_director&quot; 
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt; 
} &lt;/div&gt;

'''Name'''    : le nom du director ce nom vous sera demandé dans les autres fichiers.

'''Dirport''' : le port d'écoute du director.

'''address''' : Attention le nom DNS est obligatoire pour une connexion SSL penser à configurer le fichier /etc/hosts ou le serveur dns.

:: si vous n'utilisez pas de connexion sécurisée vous pouvez mettre une adresse ip directement.

'''Password''' : le mot de passe du director

La partie bleu permet la sécurisation des données entre le director et la console ca.crt doit être &lt;br/&gt;
le même partout les deux autres different pour chaque éléments de bacula voir l' annexe A sur les certificats SSL pour leur création.&lt;br/&gt;
Pour l'instant ne vous préoccupez pas de cette partie, une explication plus complète sera détaillé dans le chapitre sur la &lt;br/&gt;
sécurisation.Sachez juste que cela ce trouve là. &lt;br/&gt;

=== Le File Daemon ===

'''/etc/bacula/bacula-fd.conf''' 
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR
:'''Password''' = &quot;mdp_du_director&quot;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key &lt;/span&gt;
}

'''Director''' {
:'''Name''' = NOM_MON
:'''Password''' = &quot;mdp_du_director_restreint&quot;
:'''Monitor''' = yes
}

'''FileDaemon''' { 
:'''Name''' = NOM_FD
:'''FDport''' = 9102
:'''WorkingDirectory''' = /var/lib/bacula
:'''Pid Directory''' = /var/run/bacula
:'''Maximum Concurrent Jobs''' = 20
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key&lt;/span&gt; 
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Signatures = Yes&lt;/span&gt;           
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Encryption = Yes&lt;/span&gt;            
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/encrypt.pem&quot;&lt;/span&gt;    
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Master Key = &quot;/etc/bacula/keys/master.cert&quot;&lt;/span&gt;
}

'''Messages''' {
:'''Name''' = Standard
:'''director''' = NOM_DIR = all, !skipped, !restored
}
&lt;/div&gt;

=== Le Storage Daemon ===

Le fichier de configuration du Storage Daemon a relativement peu de définitions de ressources. Toutefois, en raison de 

la grande variation dans les médias de sauvegarde et des capacités du système, le démon de stockage doit être hautement configurable.

En conséquence, il ya un assez grand nombre de directives dans la définition des ressources de périphérique qui vous permet de définir.

toutes les caractéristiques de votre périphérique de stockage (normalement un lecteur de bande). Heureusement, avec des dispositifs 

de stockage modernes, les valeurs par défaut sont suffisantes, et très peu de directives sont réellement nécessaires.

Pour voir toutes les possibilités du Storage Daemon je vous invite à lire [http://translate.google.fr/translate?hl=fr&amp;sl=en&amp;u=http://bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html&amp;ei=wXefT8uCDMa-8AOw_Oh6&amp;sa=X&amp;oi=translate&amp;ct=result&amp;resnum=1&amp;ved=0CCQQ7gEwAA&amp;prev=/search%3Fq%3Dhttp://www.bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html%26hl%3Dfr%26biw%3D1678%26bih%3D941%26prmd%3Dimvns la traduction google] de la documentation de Bacula à ce sujet.

'''/etc/bacula/bacula-sd.conf'''

 Storage {
  Name = NOM_SD
  SDPort = 9103
  WorkingDirectory = &quot;/var/lib/bacula&quot;
  Pid Directory = &quot;/var/run/bacula&quot;
  Maximum Concurrent Jobs = 20
  SDAddress = nom_dns_ou_ip
  TLS Enable = yes
  TLS Require = yes                                                      
  TLS CA Certificate File = /etc/bacula/keys/ca.crt
  TLS Certificate = /etc/bacula/keys/storagedaemon.crt
  TLS Key = /etc/bacula/keys/storagedaemon.key 
 }

 Director {
  Name = NOM_DIR
  Password = &quot;mdp_du_director&quot;
  TLS Enable = yes
  TLS Require = yes            
  TLS Verify Peer = yes
  TLS Allowed CN = &quot;directorCN&quot;                                          
  TLS CA Certificate File = /etc/bacula/keys/ca.crt
  TLS Certificate = /etc/bacula/keys/storagedaemon.crt
  TLS Key = /etc/bacula/keys/storagedaemon.key 
 }

 Director {
  Name = NOM_MON
  Password = &quot;mdp_du_director_restreint&quot;
  Monitor = yes
 }

 Device {
  Name = Nom_Device
  Media Type = File
  Archive Device = /home/sauvegarde/
  LabelMedia = yes;
  Random Access = Yes;
  AutomaticMount = yes;
  RemovableMedia = no;
  AlwaysOpen = yes;
 }

 Messages {
  Name = Standard
  director = NOM_DIR = all
 }


=== Le Director ===

'''/etc/bacula/bacula-dir.conf'''

 Director {
  Name = NOM_DIR
  DIRport = 9101
  QueryFile = &quot;/etc/bacula/query.sql&quot;
  WorkingDirectory = &quot;/var/lib/bacula&quot;
  PidDirectory = &quot;/var/run/bacula&quot;
  Maximum Concurrent Jobs = 4
  Password = &quot;mdp_du_director&quot;
  Messages = Standard
 }

 @/etc/bacula/configuration/bacula_dir_filset.conf
 @/etc/bacula/configuration/bacula_dir_job.conf
 @/etc/bacula/configuration/bacula_dir_storage.conf
 @/etc/bacula/configuration/bacula_dir_pool.conf
 @/etc/bacula/configuration/bacula_dir_client.conf
 @/etc/bacula/configuration/bacula_dir_schedule.conf

 Catalog {
  Name = MyCatalog
  dbname = &quot;bacula&quot;; dbuser = &quot;bacula&quot;; dbpassword = &quot;mdp_base_SQL&quot;
 }

 Messages {
  Name = Standard
  mailcommand = &quot;/usr/sbin/bsmtp -h localhost -f \&quot;\(Bacula\) \&lt;%r\&gt;\&quot; -s \&quot;Bacula daemon message\&quot; %r&quot;
  mail = root@localhost = all, !skipped
  console = all, !skipped, !saved
  append = &quot;/var/bacula/log&quot; = all, !skipped
 }

==== Filset====
==== Job ====
==== Storage ====
==== Pool ====
==== Client ====
==== Schedule ====

== Sécurisation ==
== Utilisation ==
=== En mode Console ===
=== En mode Graphique ===

== ANNEXE ==
=== Annexe A : Certificat SSL ===



[[Utilisateur:Haludeis|Haludeis]] 1 mai 2012 à 10:14 (CEST)</text>
      <sha1>68kg2qnby2k4l044wkj6ckg6vezvdp7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4137</id>
      <parentid>4135</parentid>
      <timestamp>2012-05-01T15:00:45Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* La Console */</comment>
      <text xml:space="preserve" bytes="8734">[[Catégorie:Sauvegardes]]
{{Ébauche|Bacula}}
{{sid}}

== Présentation ==
Ce wiki est basé sur une installation stable de Debian (en ce moment Squeeze).

(reste à faire)

== Installation ==
Bacula peut utiliser les bases de données SQLite, MySql et PostGreSQL.Il suffit d'installer les paquets correspondant à votre choix. 

Changer &quot;-mysql&quot; par &quot;-pgsql&quot; ou &quot;-sqlite3&quot; sur le paquet director et le fd.

ici je choisi MySql (MySql étant déja installé):

 # aptitude install bacula-director-mysql bacula-sd-mysql bacula

Accorder les droits à bacula sur la base de données (vérifié si pas obsolete):
 # mysql -u root -p
 &gt; grant all privileges on bacula.* to 'bacula'@'localhost' identified by 'bacula' ;

Créer le repertoire de sauvegarde et accorder les droits à bacula :
 # mkdir /home/sauvegarde/
 # chown -R bacula.bacula /home/sauvegarde
 # chmod -R 660 /home/sauvegarde (---&gt; à vérifier)

== Configuration ==
Bacula se compose des fichiers suivants :

Le fichier générale de configuration le Director :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-dir.conf&lt;/span&gt;
Le fichier Storage Daemon concernant le stockage des données :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-sd.conf&lt;/span&gt;
Celui du File Daemon permettant l'accès aux données installé sur le client à sauvegarder :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-fd.conf&lt;/span&gt;
Le fichier permettant la connexion entre la console et le directeur :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bconsole.conf&lt;/span&gt; 

=== La Console ===

'''/etc/bacula/bconsole.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' { 
:'''Name''' = NOM_DIR 
:'''DIRport''' = 9101   
:'''address''' = nom_resolu_par_dns_ou_IP 
:'''Password''' = &quot;mdp_du_director&quot; 
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt; 
} &lt;/div&gt;

'''Name'''    : le nom du director ce nom vous sera demandé dans les autres fichiers.

'''Dirport''' : le port d'écoute du director.

'''address''' : Attention le nom DNS est obligatoire pour une connexion SSL penser à configurer le fichier /etc/hosts ou le serveur dns.

:: si vous n'utilisez pas de connexion sécurisée vous pouvez mettre une adresse ip directement.

'''Password''' : le mot de passe du director

La partie bleu permet la sécurisation des données entre le director et la console ca.crt doit être &lt;br/&gt;
le même partout les deux autres different pour chaque éléments de bacula voir l' annexe A sur les certificats SSL pour leur création.&lt;br/&gt;
Pour l'instant ne vous préoccupez pas de cette partie, une explication plus complète sera détaillée dans le chapitre sur la sécurisation.&lt;br/&gt;Sachez juste que cela se trouve là. &lt;br/&gt;

=== Le File Daemon ===

'''/etc/bacula/bacula-fd.conf''' 
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR
:'''Password''' = &quot;mdp_du_director&quot;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key &lt;/span&gt;
}

'''Director''' {
:'''Name''' = NOM_MON
:'''Password''' = &quot;mdp_du_director_restreint&quot;
:'''Monitor''' = yes
}

'''FileDaemon''' { 
:'''Name''' = NOM_FD
:'''FDport''' = 9102
:'''WorkingDirectory''' = /var/lib/bacula
:'''Pid Directory''' = /var/run/bacula
:'''Maximum Concurrent Jobs''' = 20
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key&lt;/span&gt; 
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Signatures = Yes&lt;/span&gt;           
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Encryption = Yes&lt;/span&gt;            
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/encrypt.pem&quot;&lt;/span&gt;    
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Master Key = &quot;/etc/bacula/keys/master.cert&quot;&lt;/span&gt;
}

'''Messages''' {
:'''Name''' = Standard
:'''director''' = NOM_DIR = all, !skipped, !restored
}
&lt;/div&gt;

=== Le Storage Daemon ===

Le fichier de configuration du Storage Daemon a relativement peu de définitions de ressources. Toutefois, en raison de 

la grande variation dans les médias de sauvegarde et des capacités du système, le démon de stockage doit être hautement configurable.

En conséquence, il ya un assez grand nombre de directives dans la définition des ressources de périphérique qui vous permet de définir.

toutes les caractéristiques de votre périphérique de stockage (normalement un lecteur de bande). Heureusement, avec des dispositifs 

de stockage modernes, les valeurs par défaut sont suffisantes, et très peu de directives sont réellement nécessaires.

Pour voir toutes les possibilités du Storage Daemon je vous invite à lire [http://translate.google.fr/translate?hl=fr&amp;sl=en&amp;u=http://bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html&amp;ei=wXefT8uCDMa-8AOw_Oh6&amp;sa=X&amp;oi=translate&amp;ct=result&amp;resnum=1&amp;ved=0CCQQ7gEwAA&amp;prev=/search%3Fq%3Dhttp://www.bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html%26hl%3Dfr%26biw%3D1678%26bih%3D941%26prmd%3Dimvns la traduction google] de la documentation de Bacula à ce sujet.

'''/etc/bacula/bacula-sd.conf'''

 Storage {
  Name = NOM_SD
  SDPort = 9103
  WorkingDirectory = &quot;/var/lib/bacula&quot;
  Pid Directory = &quot;/var/run/bacula&quot;
  Maximum Concurrent Jobs = 20
  SDAddress = nom_dns_ou_ip
  TLS Enable = yes
  TLS Require = yes                                                      
  TLS CA Certificate File = /etc/bacula/keys/ca.crt
  TLS Certificate = /etc/bacula/keys/storagedaemon.crt
  TLS Key = /etc/bacula/keys/storagedaemon.key 
 }

 Director {
  Name = NOM_DIR
  Password = &quot;mdp_du_director&quot;
  TLS Enable = yes
  TLS Require = yes            
  TLS Verify Peer = yes
  TLS Allowed CN = &quot;directorCN&quot;                                          
  TLS CA Certificate File = /etc/bacula/keys/ca.crt
  TLS Certificate = /etc/bacula/keys/storagedaemon.crt
  TLS Key = /etc/bacula/keys/storagedaemon.key 
 }

 Director {
  Name = NOM_MON
  Password = &quot;mdp_du_director_restreint&quot;
  Monitor = yes
 }

 Device {
  Name = Nom_Device
  Media Type = File
  Archive Device = /home/sauvegarde/
  LabelMedia = yes;
  Random Access = Yes;
  AutomaticMount = yes;
  RemovableMedia = no;
  AlwaysOpen = yes;
 }

 Messages {
  Name = Standard
  director = NOM_DIR = all
 }


=== Le Director ===

'''/etc/bacula/bacula-dir.conf'''

 Director {
  Name = NOM_DIR
  DIRport = 9101
  QueryFile = &quot;/etc/bacula/query.sql&quot;
  WorkingDirectory = &quot;/var/lib/bacula&quot;
  PidDirectory = &quot;/var/run/bacula&quot;
  Maximum Concurrent Jobs = 4
  Password = &quot;mdp_du_director&quot;
  Messages = Standard
 }

 @/etc/bacula/configuration/bacula_dir_filset.conf
 @/etc/bacula/configuration/bacula_dir_job.conf
 @/etc/bacula/configuration/bacula_dir_storage.conf
 @/etc/bacula/configuration/bacula_dir_pool.conf
 @/etc/bacula/configuration/bacula_dir_client.conf
 @/etc/bacula/configuration/bacula_dir_schedule.conf

 Catalog {
  Name = MyCatalog
  dbname = &quot;bacula&quot;; dbuser = &quot;bacula&quot;; dbpassword = &quot;mdp_base_SQL&quot;
 }

 Messages {
  Name = Standard
  mailcommand = &quot;/usr/sbin/bsmtp -h localhost -f \&quot;\(Bacula\) \&lt;%r\&gt;\&quot; -s \&quot;Bacula daemon message\&quot; %r&quot;
  mail = root@localhost = all, !skipped
  console = all, !skipped, !saved
  append = &quot;/var/bacula/log&quot; = all, !skipped
 }

==== Filset====
==== Job ====
==== Storage ====
==== Pool ====
==== Client ====
==== Schedule ====

== Sécurisation ==
== Utilisation ==
=== En mode Console ===
=== En mode Graphique ===

== ANNEXE ==
=== Annexe A : Certificat SSL ===



[[Utilisateur:Haludeis|Haludeis]] 1 mai 2012 à 10:14 (CEST)</text>
      <sha1>pf4nwykm1rvxngy4xsm6hwahe5lu5uz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4138</id>
      <parentid>4137</parentid>
      <timestamp>2012-05-01T15:01:45Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Le Storage Daemon */</comment>
      <text xml:space="preserve" bytes="8732">[[Catégorie:Sauvegardes]]
{{Ébauche|Bacula}}
{{sid}}

== Présentation ==
Ce wiki est basé sur une installation stable de Debian (en ce moment Squeeze).

(reste à faire)

== Installation ==
Bacula peut utiliser les bases de données SQLite, MySql et PostGreSQL.Il suffit d'installer les paquets correspondant à votre choix. 

Changer &quot;-mysql&quot; par &quot;-pgsql&quot; ou &quot;-sqlite3&quot; sur le paquet director et le fd.

ici je choisi MySql (MySql étant déja installé):

 # aptitude install bacula-director-mysql bacula-sd-mysql bacula

Accorder les droits à bacula sur la base de données (vérifié si pas obsolete):
 # mysql -u root -p
 &gt; grant all privileges on bacula.* to 'bacula'@'localhost' identified by 'bacula' ;

Créer le repertoire de sauvegarde et accorder les droits à bacula :
 # mkdir /home/sauvegarde/
 # chown -R bacula.bacula /home/sauvegarde
 # chmod -R 660 /home/sauvegarde (---&gt; à vérifier)

== Configuration ==
Bacula se compose des fichiers suivants :

Le fichier générale de configuration le Director :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-dir.conf&lt;/span&gt;
Le fichier Storage Daemon concernant le stockage des données :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-sd.conf&lt;/span&gt;
Celui du File Daemon permettant l'accès aux données installé sur le client à sauvegarder :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-fd.conf&lt;/span&gt;
Le fichier permettant la connexion entre la console et le directeur :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bconsole.conf&lt;/span&gt; 

=== La Console ===

'''/etc/bacula/bconsole.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' { 
:'''Name''' = NOM_DIR 
:'''DIRport''' = 9101   
:'''address''' = nom_resolu_par_dns_ou_IP 
:'''Password''' = &quot;mdp_du_director&quot; 
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt; 
} &lt;/div&gt;

'''Name'''    : le nom du director ce nom vous sera demandé dans les autres fichiers.

'''Dirport''' : le port d'écoute du director.

'''address''' : Attention le nom DNS est obligatoire pour une connexion SSL penser à configurer le fichier /etc/hosts ou le serveur dns.

:: si vous n'utilisez pas de connexion sécurisée vous pouvez mettre une adresse ip directement.

'''Password''' : le mot de passe du director

La partie bleu permet la sécurisation des données entre le director et la console ca.crt doit être &lt;br/&gt;
le même partout les deux autres different pour chaque éléments de bacula voir l' annexe A sur les certificats SSL pour leur création.&lt;br/&gt;
Pour l'instant ne vous préoccupez pas de cette partie, une explication plus complète sera détaillée dans le chapitre sur la sécurisation.&lt;br/&gt;Sachez juste que cela se trouve là. &lt;br/&gt;

=== Le File Daemon ===

'''/etc/bacula/bacula-fd.conf''' 
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR
:'''Password''' = &quot;mdp_du_director&quot;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key &lt;/span&gt;
}

'''Director''' {
:'''Name''' = NOM_MON
:'''Password''' = &quot;mdp_du_director_restreint&quot;
:'''Monitor''' = yes
}

'''FileDaemon''' { 
:'''Name''' = NOM_FD
:'''FDport''' = 9102
:'''WorkingDirectory''' = /var/lib/bacula
:'''Pid Directory''' = /var/run/bacula
:'''Maximum Concurrent Jobs''' = 20
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key&lt;/span&gt; 
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Signatures = Yes&lt;/span&gt;           
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Encryption = Yes&lt;/span&gt;            
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/encrypt.pem&quot;&lt;/span&gt;    
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Master Key = &quot;/etc/bacula/keys/master.cert&quot;&lt;/span&gt;
}

'''Messages''' {
:'''Name''' = Standard
:'''director''' = NOM_DIR = all, !skipped, !restored
}
&lt;/div&gt;

=== Le Storage Daemon ===

Le fichier de configuration du Storage Daemon a relativement peu de définitions de ressources. Toutefois, en raison de la grande variation dans les médias de sauvegarde et des capacités du système, le démon de stockage doit être hautement configurable.

En conséquence, il y a un assez grand nombre de directives dans la définition des ressources de périphérique qui vous permet de définir.

toutes les caractéristiques de votre périphérique de stockage (normalement un lecteur de bande). Heureusement, avec des dispositifs 

de stockage modernes, les valeurs par défaut sont suffisantes, et très peu de directives sont réellement nécessaires.

Pour voir toutes les possibilités du Storage Daemon je vous invite à lire [http://translate.google.fr/translate?hl=fr&amp;sl=en&amp;u=http://bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html&amp;ei=wXefT8uCDMa-8AOw_Oh6&amp;sa=X&amp;oi=translate&amp;ct=result&amp;resnum=1&amp;ved=0CCQQ7gEwAA&amp;prev=/search%3Fq%3Dhttp://www.bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html%26hl%3Dfr%26biw%3D1678%26bih%3D941%26prmd%3Dimvns la traduction google] de la documentation de Bacula à ce sujet.

'''/etc/bacula/bacula-sd.conf'''

 Storage {
  Name = NOM_SD
  SDPort = 9103
  WorkingDirectory = &quot;/var/lib/bacula&quot;
  Pid Directory = &quot;/var/run/bacula&quot;
  Maximum Concurrent Jobs = 20
  SDAddress = nom_dns_ou_ip
  TLS Enable = yes
  TLS Require = yes                                                      
  TLS CA Certificate File = /etc/bacula/keys/ca.crt
  TLS Certificate = /etc/bacula/keys/storagedaemon.crt
  TLS Key = /etc/bacula/keys/storagedaemon.key 
 }

 Director {
  Name = NOM_DIR
  Password = &quot;mdp_du_director&quot;
  TLS Enable = yes
  TLS Require = yes            
  TLS Verify Peer = yes
  TLS Allowed CN = &quot;directorCN&quot;                                          
  TLS CA Certificate File = /etc/bacula/keys/ca.crt
  TLS Certificate = /etc/bacula/keys/storagedaemon.crt
  TLS Key = /etc/bacula/keys/storagedaemon.key 
 }

 Director {
  Name = NOM_MON
  Password = &quot;mdp_du_director_restreint&quot;
  Monitor = yes
 }

 Device {
  Name = Nom_Device
  Media Type = File
  Archive Device = /home/sauvegarde/
  LabelMedia = yes;
  Random Access = Yes;
  AutomaticMount = yes;
  RemovableMedia = no;
  AlwaysOpen = yes;
 }

 Messages {
  Name = Standard
  director = NOM_DIR = all
 }

=== Le Director ===

'''/etc/bacula/bacula-dir.conf'''

 Director {
  Name = NOM_DIR
  DIRport = 9101
  QueryFile = &quot;/etc/bacula/query.sql&quot;
  WorkingDirectory = &quot;/var/lib/bacula&quot;
  PidDirectory = &quot;/var/run/bacula&quot;
  Maximum Concurrent Jobs = 4
  Password = &quot;mdp_du_director&quot;
  Messages = Standard
 }

 @/etc/bacula/configuration/bacula_dir_filset.conf
 @/etc/bacula/configuration/bacula_dir_job.conf
 @/etc/bacula/configuration/bacula_dir_storage.conf
 @/etc/bacula/configuration/bacula_dir_pool.conf
 @/etc/bacula/configuration/bacula_dir_client.conf
 @/etc/bacula/configuration/bacula_dir_schedule.conf

 Catalog {
  Name = MyCatalog
  dbname = &quot;bacula&quot;; dbuser = &quot;bacula&quot;; dbpassword = &quot;mdp_base_SQL&quot;
 }

 Messages {
  Name = Standard
  mailcommand = &quot;/usr/sbin/bsmtp -h localhost -f \&quot;\(Bacula\) \&lt;%r\&gt;\&quot; -s \&quot;Bacula daemon message\&quot; %r&quot;
  mail = root@localhost = all, !skipped
  console = all, !skipped, !saved
  append = &quot;/var/bacula/log&quot; = all, !skipped
 }

==== Filset====
==== Job ====
==== Storage ====
==== Pool ====
==== Client ====
==== Schedule ====

== Sécurisation ==
== Utilisation ==
=== En mode Console ===
=== En mode Graphique ===

== ANNEXE ==
=== Annexe A : Certificat SSL ===



[[Utilisateur:Haludeis|Haludeis]] 1 mai 2012 à 10:14 (CEST)</text>
      <sha1>srbynk7f0vm5ygumtz6pbo9d6x1xo2o</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4139</id>
      <parentid>4138</parentid>
      <timestamp>2012-05-01T15:02:44Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Le Storage Daemon */</comment>
      <text xml:space="preserve" bytes="8728">[[Catégorie:Sauvegardes]]
{{Ébauche|Bacula}}
{{sid}}

== Présentation ==
Ce wiki est basé sur une installation stable de Debian (en ce moment Squeeze).

(reste à faire)

== Installation ==
Bacula peut utiliser les bases de données SQLite, MySql et PostGreSQL.Il suffit d'installer les paquets correspondant à votre choix. 

Changer &quot;-mysql&quot; par &quot;-pgsql&quot; ou &quot;-sqlite3&quot; sur le paquet director et le fd.

ici je choisi MySql (MySql étant déja installé):

 # aptitude install bacula-director-mysql bacula-sd-mysql bacula

Accorder les droits à bacula sur la base de données (vérifié si pas obsolete):
 # mysql -u root -p
 &gt; grant all privileges on bacula.* to 'bacula'@'localhost' identified by 'bacula' ;

Créer le repertoire de sauvegarde et accorder les droits à bacula :
 # mkdir /home/sauvegarde/
 # chown -R bacula.bacula /home/sauvegarde
 # chmod -R 660 /home/sauvegarde (---&gt; à vérifier)

== Configuration ==
Bacula se compose des fichiers suivants :

Le fichier générale de configuration le Director :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-dir.conf&lt;/span&gt;
Le fichier Storage Daemon concernant le stockage des données :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-sd.conf&lt;/span&gt;
Celui du File Daemon permettant l'accès aux données installé sur le client à sauvegarder :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-fd.conf&lt;/span&gt;
Le fichier permettant la connexion entre la console et le directeur :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bconsole.conf&lt;/span&gt; 

=== La Console ===

'''/etc/bacula/bconsole.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' { 
:'''Name''' = NOM_DIR 
:'''DIRport''' = 9101   
:'''address''' = nom_resolu_par_dns_ou_IP 
:'''Password''' = &quot;mdp_du_director&quot; 
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt; 
} &lt;/div&gt;

'''Name'''    : le nom du director ce nom vous sera demandé dans les autres fichiers.

'''Dirport''' : le port d'écoute du director.

'''address''' : Attention le nom DNS est obligatoire pour une connexion SSL penser à configurer le fichier /etc/hosts ou le serveur dns.

:: si vous n'utilisez pas de connexion sécurisée vous pouvez mettre une adresse ip directement.

'''Password''' : le mot de passe du director

La partie bleu permet la sécurisation des données entre le director et la console ca.crt doit être &lt;br/&gt;
le même partout les deux autres different pour chaque éléments de bacula voir l' annexe A sur les certificats SSL pour leur création.&lt;br/&gt;
Pour l'instant ne vous préoccupez pas de cette partie, une explication plus complète sera détaillée dans le chapitre sur la sécurisation.&lt;br/&gt;Sachez juste que cela se trouve là. &lt;br/&gt;

=== Le File Daemon ===

'''/etc/bacula/bacula-fd.conf''' 
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR
:'''Password''' = &quot;mdp_du_director&quot;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key &lt;/span&gt;
}

'''Director''' {
:'''Name''' = NOM_MON
:'''Password''' = &quot;mdp_du_director_restreint&quot;
:'''Monitor''' = yes
}

'''FileDaemon''' { 
:'''Name''' = NOM_FD
:'''FDport''' = 9102
:'''WorkingDirectory''' = /var/lib/bacula
:'''Pid Directory''' = /var/run/bacula
:'''Maximum Concurrent Jobs''' = 20
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key&lt;/span&gt; 
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Signatures = Yes&lt;/span&gt;           
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Encryption = Yes&lt;/span&gt;            
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/encrypt.pem&quot;&lt;/span&gt;    
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Master Key = &quot;/etc/bacula/keys/master.cert&quot;&lt;/span&gt;
}

'''Messages''' {
:'''Name''' = Standard
:'''director''' = NOM_DIR = all, !skipped, !restored
}
&lt;/div&gt;

=== Le Storage Daemon ===

Le fichier de configuration du Storage Daemon a relativement peu de définitions de ressources. Toutefois, en raison de la grande variation dans les médias de sauvegarde et des capacités du système, le démon de stockage doit être hautement configurable.

En conséquence, il y a un assez grand nombre de directives dans la définition des ressources de périphérique qui vous permet de définir toutes les caractéristiques de votre périphérique de stockage (normalement un lecteur de bande). Heureusement, avec des dispositifs de stockage modernes, les valeurs par défaut sont suffisantes, et très peu de directives sont réellement nécessaires.

Pour voir toutes les possibilités du Storage Daemon je vous invite à lire [http://translate.google.fr/translate?hl=fr&amp;sl=en&amp;u=http://bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html&amp;ei=wXefT8uCDMa-8AOw_Oh6&amp;sa=X&amp;oi=translate&amp;ct=result&amp;resnum=1&amp;ved=0CCQQ7gEwAA&amp;prev=/search%3Fq%3Dhttp://www.bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html%26hl%3Dfr%26biw%3D1678%26bih%3D941%26prmd%3Dimvns la traduction google] de la documentation de Bacula à ce sujet.

'''/etc/bacula/bacula-sd.conf'''

 Storage {
  Name = NOM_SD
  SDPort = 9103
  WorkingDirectory = &quot;/var/lib/bacula&quot;
  Pid Directory = &quot;/var/run/bacula&quot;
  Maximum Concurrent Jobs = 20
  SDAddress = nom_dns_ou_ip
  TLS Enable = yes
  TLS Require = yes                                                      
  TLS CA Certificate File = /etc/bacula/keys/ca.crt
  TLS Certificate = /etc/bacula/keys/storagedaemon.crt
  TLS Key = /etc/bacula/keys/storagedaemon.key 
 }

 Director {
  Name = NOM_DIR
  Password = &quot;mdp_du_director&quot;
  TLS Enable = yes
  TLS Require = yes            
  TLS Verify Peer = yes
  TLS Allowed CN = &quot;directorCN&quot;                                          
  TLS CA Certificate File = /etc/bacula/keys/ca.crt
  TLS Certificate = /etc/bacula/keys/storagedaemon.crt
  TLS Key = /etc/bacula/keys/storagedaemon.key 
 }

 Director {
  Name = NOM_MON
  Password = &quot;mdp_du_director_restreint&quot;
  Monitor = yes
 }

 Device {
  Name = Nom_Device
  Media Type = File
  Archive Device = /home/sauvegarde/
  LabelMedia = yes;
  Random Access = Yes;
  AutomaticMount = yes;
  RemovableMedia = no;
  AlwaysOpen = yes;
 }

 Messages {
  Name = Standard
  director = NOM_DIR = all
 }

=== Le Director ===

'''/etc/bacula/bacula-dir.conf'''

 Director {
  Name = NOM_DIR
  DIRport = 9101
  QueryFile = &quot;/etc/bacula/query.sql&quot;
  WorkingDirectory = &quot;/var/lib/bacula&quot;
  PidDirectory = &quot;/var/run/bacula&quot;
  Maximum Concurrent Jobs = 4
  Password = &quot;mdp_du_director&quot;
  Messages = Standard
 }

 @/etc/bacula/configuration/bacula_dir_filset.conf
 @/etc/bacula/configuration/bacula_dir_job.conf
 @/etc/bacula/configuration/bacula_dir_storage.conf
 @/etc/bacula/configuration/bacula_dir_pool.conf
 @/etc/bacula/configuration/bacula_dir_client.conf
 @/etc/bacula/configuration/bacula_dir_schedule.conf

 Catalog {
  Name = MyCatalog
  dbname = &quot;bacula&quot;; dbuser = &quot;bacula&quot;; dbpassword = &quot;mdp_base_SQL&quot;
 }

 Messages {
  Name = Standard
  mailcommand = &quot;/usr/sbin/bsmtp -h localhost -f \&quot;\(Bacula\) \&lt;%r\&gt;\&quot; -s \&quot;Bacula daemon message\&quot; %r&quot;
  mail = root@localhost = all, !skipped
  console = all, !skipped, !saved
  append = &quot;/var/bacula/log&quot; = all, !skipped
 }

==== Filset====
==== Job ====
==== Storage ====
==== Pool ====
==== Client ====
==== Schedule ====

== Sécurisation ==
== Utilisation ==
=== En mode Console ===
=== En mode Graphique ===

== ANNEXE ==
=== Annexe A : Certificat SSL ===



[[Utilisateur:Haludeis|Haludeis]] 1 mai 2012 à 10:14 (CEST)</text>
      <sha1>kpd45884grcl16igmzjz3c3zx7t5uee</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4140</id>
      <parentid>4139</parentid>
      <timestamp>2012-05-01T16:24:38Z</timestamp>
      <contributor>
        <username>Haludeis</username>
        <id>30</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="11431">[[Catégorie:Sauvegardes]]
{{Ébauche|Bacula}}
{{sid}}

== Présentation ==
Ce wiki est basé sur une installation stable de Debian (en ce moment Squeeze).

(reste à faire)

== Installation ==
Bacula peut utiliser les bases de données SQLite, MySql et PostGreSQL.Il suffit d'installer les paquets correspondant à votre choix. 

Changer &quot;-mysql&quot; par &quot;-pgsql&quot; ou &quot;-sqlite3&quot; sur le paquet director et le fd.

ici je choisi MySql (MySql étant déja installé):

 # aptitude install bacula-director-mysql bacula-sd-mysql bacula

Accorder les droits à bacula sur la base de données (vérifié si pas obsolete):
 # mysql -u root -p
 &gt; grant all privileges on bacula.* to 'bacula'@'localhost' identified by 'bacula' ;

Créer le repertoire de sauvegarde et accorder les droits à bacula :
 # mkdir /home/sauvegarde/
 # chown -R bacula.bacula /home/sauvegarde
 # chmod -R 660 /home/sauvegarde (---&gt; à vérifier)

== Configuration ==
Bacula se compose des fichiers suivants :

Le fichier générale de configuration le Director :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-dir.conf&lt;/span&gt;
Le fichier Storage Daemon concernant le stockage des données :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-sd.conf&lt;/span&gt;
Celui du File Daemon permettant l'accès aux données installé sur le client à sauvegarder :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-fd.conf&lt;/span&gt;
Le fichier permettant la connexion entre la console et le directeur :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bconsole.conf&lt;/span&gt; 

=== La Console ===

'''/etc/bacula/bconsole.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' { 
:'''Name''' = NOM_DIR 
:'''DIRport''' = 9101   
:'''address''' = nom_resolu_par_dns_ou_IP 
:'''Password''' = &quot;mdp_du_director&quot; 
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt; 
} &lt;/div&gt;

'''Name'''    : le nom du director ce nom vous sera demandé dans les autres fichiers.

'''Dirport''' : le port d'écoute du director.

'''address''' : Attention le nom DNS est obligatoire pour une connexion SSL penser à configurer le fichier /etc/hosts ou le serveur dns.

:: si vous n'utilisez pas de connexion sécurisée vous pouvez mettre une adresse ip directement.

'''Password''' : le mot de passe du director

La partie bleu permet la sécurisation des données entre le director et la console ca.crt doit être &lt;br/&gt;
le même partout les deux autres different pour chaque éléments de bacula voir l' annexe A sur les certificats SSL pour leur création.&lt;br/&gt;
Pour l'instant ne vous préoccupez pas de cette partie, une explication plus complète sera détaillé dans le chapitre sur la &lt;br/&gt;
sécurisation.Sachez juste que cela ce trouve là. &lt;br/&gt;

=== Le File Daemon ===

'''/etc/bacula/bacula-fd.conf''' 
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR
:'''Password''' = &quot;mdp_du_director&quot;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key &lt;/span&gt;
}

'''Director''' {
:'''Name''' = NOM_MON
:'''Password''' = &quot;mdp_du_director_restreint&quot;
:'''Monitor''' = yes
}

'''FileDaemon''' { 
:'''Name''' = NOM_FD
:'''FDport''' = 9102
:'''WorkingDirectory''' = /var/lib/bacula
:'''Pid Directory''' = /var/run/bacula
:'''Maximum Concurrent Jobs''' = 20
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key&lt;/span&gt; 
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Signatures = Yes&lt;/span&gt;           
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Encryption = Yes&lt;/span&gt;            
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/encrypt.pem&quot;&lt;/span&gt;    
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Master Key = &quot;/etc/bacula/keys/master.cert&quot;&lt;/span&gt;
}

'''Messages''' {
:'''Name''' = Standard
:'''director''' = NOM_DIR = all, !skipped, !restored
}
&lt;/div&gt;

=== Le Storage Daemon ===

Le fichier de configuration du Storage Daemon a relativement peu de définitions de ressources. Toutefois, en raison de 

la grande variation dans les médias de sauvegarde et des capacités du système, le démon de stockage doit être hautement configurable.

En conséquence, il ya un assez grand nombre de directives dans la définition des ressources de périphérique qui vous permet de définir.

toutes les caractéristiques de votre périphérique de stockage (normalement un lecteur de bande). Heureusement, avec des dispositifs 

de stockage modernes, les valeurs par défaut sont suffisantes, et très peu de directives sont réellement nécessaires.

Pour voir toutes les possibilités du Storage Daemon je vous invite à lire [http://translate.google.fr/translate?hl=fr&amp;sl=en&amp;u=http://bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html&amp;ei=wXefT8uCDMa-8AOw_Oh6&amp;sa=X&amp;oi=translate&amp;ct=result&amp;resnum=1&amp;ved=0CCQQ7gEwAA&amp;prev=/search%3Fq%3Dhttp://www.bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html%26hl%3Dfr%26biw%3D1678%26bih%3D941%26prmd%3Dimvns la traduction google] de la documentation de Bacula à ce sujet.

'''/etc/bacula/bacula-sd.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = NOM_SD
:'''SDPort''' = 9103
:''' WorkingDirectory''' = &quot;/var/lib/bacula&quot;
:''' Pid Directory''' = &quot;/var/run/bacula&quot;
:'''Maximum Concurrent Jobs''' = 20
:'''SDAddress''' = nom_dns_ou_ip
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_DIR
:'''Password''' = &quot;mdp_du_director&quot;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;                                          
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_MON
:'''Password''' = &quot;mdp_du_director_restreint&quot;
:'''Monitor''' = yes
}

'''Device''' {
:'''Name''' = Nom_Device
:'''Media Type''' = File
:'''Archive Device''' = /home/sauvegarde/
:'''LabelMedia''' = yes;
:'''Random Access''' = Yes;
:'''AutomaticMount''' = yes;
:'''RemovableMedia''' = no;
:'''AlwaysOpen''' = yes;
}

'''Messages''' {
:'''Name''' = Standard
:'''director''' = NOM_DIR = all
}
&lt;/div&gt;

=== Le Director ===

'''/etc/bacula/bacula-dir.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR
:'''DIRport''' = 9101
:'''QueryFile''' = &quot;/etc/bacula/query.sql&quot;
:'''WorkingDirectory''' = &quot;/var/lib/bacula&quot;
:'''PidDirectory''' = &quot;/var/run/bacula&quot;
:'''Maximum Concurrent Jobs''' = 4
:'''Password''' = &quot;mdp_du_director&quot;
:'''Messages''' = Standard
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;consolerCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key &lt;/span&gt;
}

@/etc/bacula/configuration/bacula_dir_filset.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_job.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_storage.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_pool.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_client.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_schedule.conf&lt;br/&gt;

'''Catalog''' {
:'''Name''' = MyCatalog
:dbname = &quot;bacula&quot;; dbuser = &quot;bacula&quot;; dbpassword = &quot;mdp_base_SQL&quot;
}

'''Messages''' {
:'''Name''' = Standard
:'''mailcommand''' = &quot;/usr/sbin/bsmtp -h localhost -f \&quot;\(Bacula\) \&lt;%r\&gt;\&quot; -s \&quot;Bacula daemon message\&quot; %r&quot;
:'''mail''' = root@localhost = all, !skipped
:'''console''' = all, !skipped, !saved
::append = &quot;/var/bacula/log&quot; = all, !skipped
}
&lt;/div&gt;

==== Filset====

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''FileSet''' {
:'''Name''' = &quot;DONNEES_FSET&quot;
:'''Include''' {
::'''Options''' {
:::compression = GZIP
:::signature = MD5
::}
::'''File''' = &quot;C:/DONNEES&quot;
:}

:'''Exclude''' {
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/yyy/zzz/yyy&quot;
:}
}

'''FileSet''' {
:'''Name''' = &quot;BACULA_FSET&quot;
:'''Include''' {
::'''Options''' {
:::signature = MD5
:::compression = GZIP
::}
::'''File''' = &quot;/etc/bacula/&quot;
}
&lt;/div&gt;

==== Job ====

(fais un JOBDEF)
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Job''' {
:'''Name''' = &quot;DONNEES&quot;
:'''Type''' = Backup
:'''Level''' = Incremental
:'''Client''' = SERVEURZZZ
:'''FileSet''' = &quot;DONNEES_FSET&quot;
:'''Schedule''' = &quot;Donnees&quot;
:'''Storage''' = Donnee_st
:'''Pool'''= Donnees_Pool
:'''Write Bootstrap''' = /var/lib/bacula/donnee.bsr
:'''Priority''' = 20
:'''Messages''' = Standard
}

'''Job''' {
:'''Name''' = &quot;BACULA&quot;
:'''Type''' = Backup
:'''Level''' = Full
:'''Client''' = SERVEURYYY
:'''FileSet''' = &quot;BACULA_FSET&quot;
:'''Schedule''' = &quot;Bacula&quot;
:'''Storage''' = Bacula_st
:'''Pool''' = Bacula_Pool
:'''Write Bootstrap''' = /var/lib/bacula/bacula.bsr
:'''Priority''' = 20
:'''Messages''' = Standard
}
&lt;/div&gt;

==== Storage ====
==== Pool ====
==== Client ====
==== Schedule ====

== Sécurisation ==
== Utilisation ==
=== En mode Console ===
=== En mode Graphique ===

== ANNEXE ==
=== Annexe A : Certificat SSL ===



[[Utilisateur:Haludeis|Haludeis]] 1 mai 2012 à 18:24 (CEST)</text>
      <sha1>balqiq6wg2bb4drq24dkkiwdm5cahx4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4141</id>
      <parentid>4140</parentid>
      <timestamp>2012-05-01T16:34:54Z</timestamp>
      <contributor>
        <username>Haludeis</username>
        <id>30</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="11440">[[Catégorie:Sauvegardes]]
{{Ébauche|Bacula}}
{{sid}}

== Présentation ==
Ce wiki est basé sur une installation stable de Debian (en ce moment Squeeze).

(reste à faire)

== Installation ==
Bacula peut utiliser les bases de données SQLite, MySql et PostGreSQL.Il suffit d'installer les paquets correspondant à votre choix. 

Changer &quot;-mysql&quot; par &quot;-pgsql&quot; ou &quot;-sqlite3&quot; sur le paquet director et le fd.

ici je choisi MySql (MySql étant déja installé):

 # aptitude install bacula-director-mysql bacula-sd-mysql bacula

Accorder les droits à bacula sur la base de données (vérifié si pas obsolete):
 # mysql -u root -p
 &gt; grant all privileges on bacula.* to 'bacula'@'localhost' identified by 'bacula' ;

Créer le repertoire de sauvegarde et accorder les droits à bacula :
 # mkdir /home/sauvegarde/
 # chown -R bacula.bacula /home/sauvegarde
 # chmod -R 660 /home/sauvegarde (---&gt; à vérifier)

== Configuration ==
Bacula se compose des fichiers suivants :

Le fichier générale de configuration le Director :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-dir.conf&lt;/span&gt;
Le fichier Storage Daemon concernant le stockage des données :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-sd.conf&lt;/span&gt;
Celui du File Daemon permettant l'accès aux données installé sur le client à sauvegarder :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-fd.conf&lt;/span&gt;
Le fichier permettant la connexion entre la console et le directeur :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bconsole.conf&lt;/span&gt; 

=== La Console ===

'''/etc/bacula/bconsole.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' { 
:'''Name''' = NOM_DIR 
:'''DIRport''' = 9101   
:'''address''' = nom_resolu_par_dns_ou_IP 
:'''Password''' = &quot;mdp_du_director&quot; 
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt; 
} &lt;/div&gt;

'''Name'''    : le nom du director ce nom vous sera demandé dans les autres fichiers.

'''Dirport''' : le port d'écoute du director.

'''address''' : Attention le nom DNS est obligatoire pour une connexion SSL penser à configurer le fichier /etc/hosts ou le serveur dns.

:: si vous n'utilisez pas de connexion sécurisée vous pouvez mettre une adresse ip directement.

'''Password''' : le mot de passe du director

La partie bleu permet la sécurisation des données entre le director et la console ca.crt doit être &lt;br/&gt;
le même partout les deux autres different pour chaque éléments de bacula voir l' annexe A sur les certificats SSL pour leur création.&lt;br/&gt;
Pour l'instant ne vous préoccupez pas de cette partie, une explication plus complète sera détaillée dans le chapitre sur la sécurisation.&lt;br/&gt;
Sachez juste que cela se trouve là. &lt;br/&gt;

=== Le File Daemon ===

'''/etc/bacula/bacula-fd.conf''' 
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR
:'''Password''' = &quot;mdp_du_director&quot;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key &lt;/span&gt;
}

'''Director''' {
:'''Name''' = NOM_MON
:'''Password''' = &quot;mdp_du_director_restreint&quot;
:'''Monitor''' = yes
}

'''FileDaemon''' { 
:'''Name''' = NOM_FD
:'''FDport''' = 9102
:'''WorkingDirectory''' = /var/lib/bacula
:'''Pid Directory''' = /var/run/bacula
:'''Maximum Concurrent Jobs''' = 20
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key&lt;/span&gt; 
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Signatures = Yes&lt;/span&gt;           
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Encryption = Yes&lt;/span&gt;            
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/encrypt.pem&quot;&lt;/span&gt;    
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Master Key = &quot;/etc/bacula/keys/master.cert&quot;&lt;/span&gt;
}

'''Messages''' {
:'''Name''' = Standard
:'''director''' = NOM_DIR = all, !skipped, !restored
}
&lt;/div&gt;

=== Le Storage Daemon ===
Le fichier de configuration du Storage Daemon a relativement peu de définitions de ressources. Toutefois, en raison de&lt;br/&gt;
la grande variation dans les médias de sauvegarde et des capacités du système, le démon de stockage doit être hautement configurable.&lt;br/&gt;

En conséquence, il y a un assez grand nombre de directives dans la définition des ressources de périphérique qui vous permet de définir.

toutes les caractéristiques de votre périphérique de stockage (normalement un lecteur de bande). Heureusement, avec des dispositifs 

de stockage modernes, les valeurs par défaut sont suffisantes, et très peu de directives sont réellement nécessaires.

Pour voir toutes les possibilités du Storage Daemon je vous invite à lire [http://translate.google.fr/translate?hl=fr&amp;sl=en&amp;u=http://bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html&amp;ei=wXefT8uCDMa-8AOw_Oh6&amp;sa=X&amp;oi=translate&amp;ct=result&amp;resnum=1&amp;ved=0CCQQ7gEwAA&amp;prev=/search%3Fq%3Dhttp://www.bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html%26hl%3Dfr%26biw%3D1678%26bih%3D941%26prmd%3Dimvns la traduction google] de la documentation de Bacula à ce sujet.

'''/etc/bacula/bacula-sd.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = NOM_SD
:'''SDPort''' = 9103
:''' WorkingDirectory''' = &quot;/var/lib/bacula&quot;
:''' Pid Directory''' = &quot;/var/run/bacula&quot;
:'''Maximum Concurrent Jobs''' = 20
:'''SDAddress''' = nom_dns_ou_ip
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_DIR
:'''Password''' = &quot;mdp_du_director&quot;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;                                          
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_MON
:'''Password''' = &quot;mdp_du_director_restreint&quot;
:'''Monitor''' = yes
}

'''Device''' {
:'''Name''' = Nom_Device
:'''Media Type''' = File
:'''Archive Device''' = /home/sauvegarde/
:'''LabelMedia''' = yes;
:'''Random Access''' = Yes;
:'''AutomaticMount''' = yes;
:'''RemovableMedia''' = no;
:'''AlwaysOpen''' = yes;
}

'''Messages''' {
:'''Name''' = Standard
:'''director''' = NOM_DIR = all
}
&lt;/div&gt;

=== Le Director ===

'''/etc/bacula/bacula-dir.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR
:'''DIRport''' = 9101
:'''QueryFile''' = &quot;/etc/bacula/query.sql&quot;
:'''WorkingDirectory''' = &quot;/var/lib/bacula&quot;
:'''PidDirectory''' = &quot;/var/run/bacula&quot;
:'''Maximum Concurrent Jobs''' = 4
:'''Password''' = &quot;mdp_du_director&quot;
:'''Messages''' = Standard
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;consolerCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key &lt;/span&gt;
}

@/etc/bacula/configuration/bacula_dir_filset.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_job.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_storage.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_pool.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_client.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_schedule.conf&lt;br/&gt;

'''Catalog''' {
:'''Name''' = MyCatalog
:dbname = &quot;bacula&quot;; dbuser = &quot;bacula&quot;; dbpassword = &quot;mdp_base_SQL&quot;
}

'''Messages''' {
:'''Name''' = Standard
:'''mailcommand''' = &quot;/usr/sbin/bsmtp -h localhost -f \&quot;\(Bacula\) \&lt;%r\&gt;\&quot; -s \&quot;Bacula daemon message\&quot; %r&quot;
:'''mail''' = root@localhost = all, !skipped
:'''console''' = all, !skipped, !saved
::append = &quot;/var/bacula/log&quot; = all, !skipped
}
&lt;/div&gt;

==== Filset====

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''FileSet''' {
:'''Name''' = &quot;DONNEES_FSET&quot;
:'''Include''' {
::'''Options''' {
:::compression = GZIP
:::signature = MD5
::}
::'''File''' = &quot;C:/DONNEES&quot;
:}

:'''Exclude''' {
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/yyy/zzz/yyy&quot;
:}
}

'''FileSet''' {
:'''Name''' = &quot;BACULA_FSET&quot;
:'''Include''' {
::'''Options''' {
:::signature = MD5
:::compression = GZIP
::}
::'''File''' = &quot;/etc/bacula/&quot;
}
&lt;/div&gt;

==== Job ====

(fais un JOBDEF)
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Job''' {
:'''Name''' = &quot;DONNEES&quot;
:'''Type''' = Backup
:'''Level''' = Incremental
:'''Client''' = SERVEURZZZ
:'''FileSet''' = &quot;DONNEES_FSET&quot;
:'''Schedule''' = &quot;Donnees&quot;
:'''Storage''' = Donnee_st
:'''Pool'''= Donnees_Pool
:'''Write Bootstrap''' = /var/lib/bacula/donnee.bsr
:'''Priority''' = 20
:'''Messages''' = Standard
}

'''Job''' {
:'''Name''' = &quot;BACULA&quot;
:'''Type''' = Backup
:'''Level''' = Full
:'''Client''' = SERVEURYYY
:'''FileSet''' = &quot;BACULA_FSET&quot;
:'''Schedule''' = &quot;Bacula&quot;
:'''Storage''' = Bacula_st
:'''Pool''' = Bacula_Pool
:'''Write Bootstrap''' = /var/lib/bacula/bacula.bsr
:'''Priority''' = 20
:'''Messages''' = Standard
}
&lt;/div&gt;

==== Storage ====
==== Pool ====
==== Client ====
==== Schedule ====

== Sécurisation ==
== Utilisation ==
=== En mode Console ===
=== En mode Graphique ===

== ANNEXE ==
=== Annexe A : Certificat SSL ===



[[Utilisateur:Haludeis|Haludeis]] 1 mai 2012 à 18:24 (CEST)</text>
      <sha1>c96ubcie6riu21g35h6x1ur6ocyqnsv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4142</id>
      <parentid>4141</parentid>
      <timestamp>2012-05-01T16:40:01Z</timestamp>
      <contributor>
        <username>Haludeis</username>
        <id>30</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="11439">[[Catégorie:Sauvegardes]]
{{Ébauche|Bacula}}
{{sid}}

== Présentation ==
Ce wiki est basé sur une installation stable de Debian (en ce moment Squeeze).

(reste à faire)

== Installation ==
Bacula peut utiliser les bases de données SQLite, MySql et PostGreSQL.Il suffit d'installer les paquets correspondant à votre choix. 

Changer &quot;-mysql&quot; par &quot;-pgsql&quot; ou &quot;-sqlite3&quot; sur le paquet director et le fd.

ici je choisi MySql (MySql étant déja installé):

 # aptitude install bacula-director-mysql bacula-sd-mysql bacula

Accorder les droits à bacula sur la base de données (vérifié si pas obsolete):
 # mysql -u root -p
 &gt; grant all privileges on bacula.* to 'bacula'@'localhost' identified by 'bacula' ;

Créer le repertoire de sauvegarde et accorder les droits à bacula :
 # mkdir /home/sauvegarde/
 # chown -R bacula.bacula /home/sauvegarde
 # chmod -R 660 /home/sauvegarde (---&gt; à vérifier)

== Configuration ==
Bacula se compose des fichiers suivants :

Le fichier générale de configuration le Director :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-dir.conf&lt;/span&gt;
Le fichier Storage Daemon concernant le stockage des données :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-sd.conf&lt;/span&gt;
Celui du File Daemon permettant l'accès aux données installé sur le client à sauvegarder :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-fd.conf&lt;/span&gt;
Le fichier permettant la connexion entre la console et le directeur :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bconsole.conf&lt;/span&gt; 

=== La Console ===

'''/etc/bacula/bconsole.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' { 
:'''Name''' = NOM_DIR 
:'''DIRport''' = 9101   
:'''address''' = nom_resolu_par_dns_ou_IP 
:'''Password''' = &quot;mdp_du_director&quot; 
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt; 
} &lt;/div&gt;

'''Name'''    : le nom du director ce nom vous sera demandé dans les autres fichiers.

'''Dirport''' : le port d'écoute du director.

'''address''' : Attention le nom DNS est obligatoire pour une connexion SSL penser à configurer le fichier /etc/hosts ou le serveur dns.

:: si vous n'utilisez pas de connexion sécurisée vous pouvez mettre une adresse ip directement.

'''Password''' : le mot de passe du director

La partie bleu permet la sécurisation des données entre le director et la console ca.crt doit être &lt;br/&gt;
le même partout les deux autres different pour chaque éléments de bacula voir l' annexe A sur les certificats SSL pour leur création.&lt;br/&gt;
Pour l'instant ne vous préoccupez pas de cette partie, une explication plus complète sera détaillé dans le chapitre sur la sécurisation.&lt;br/&gt;
Sachez juste que cela ce trouve là. &lt;br/&gt;

=== Le File Daemon ===

'''/etc/bacula/bacula-fd.conf''' 
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR
:'''Password''' = &quot;mdp_du_director&quot;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key &lt;/span&gt;
}

'''Director''' {
:'''Name''' = NOM_MON
:'''Password''' = &quot;mdp_du_director_restreint&quot;
:'''Monitor''' = yes
}

'''FileDaemon''' { 
:'''Name''' = NOM_FD
:'''FDport''' = 9102
:'''WorkingDirectory''' = /var/lib/bacula
:'''Pid Directory''' = /var/run/bacula
:'''Maximum Concurrent Jobs''' = 20
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key&lt;/span&gt; 
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Signatures = Yes&lt;/span&gt;           
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Encryption = Yes&lt;/span&gt;            
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/encrypt.pem&quot;&lt;/span&gt;    
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Master Key = &quot;/etc/bacula/keys/master.cert&quot;&lt;/span&gt;
}

'''Messages''' {
:'''Name''' = Standard
:'''director''' = NOM_DIR = all, !skipped, !restored
}
&lt;/div&gt;

=== Le Storage Daemon ===
Le fichier de configuration du Storage Daemon a relativement peu de définitions de ressources. Toutefois, en raison de&lt;br/&gt;
la grande variation dans les médias de sauvegarde et des capacités du système, le démon de stockage doit être hautement configurable.&lt;br/&gt;

En conséquence, il y a un assez grand nombre de directives dans la définition des ressources de périphérique qui vous permet de définir.

toutes les caractéristiques de votre périphérique de stockage (normalement un lecteur de bande). Heureusement, avec des dispositifs 

de stockage modernes, les valeurs par défaut sont suffisantes, et très peu de directives sont réellement nécessaires.

Pour voir toutes les possibilités du Storage Daemon je vous invite à lire [http://translate.google.fr/translate?hl=fr&amp;sl=en&amp;u=http://bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html&amp;ei=wXefT8uCDMa-8AOw_Oh6&amp;sa=X&amp;oi=translate&amp;ct=result&amp;resnum=1&amp;ved=0CCQQ7gEwAA&amp;prev=/search%3Fq%3Dhttp://www.bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html%26hl%3Dfr%26biw%3D1678%26bih%3D941%26prmd%3Dimvns la traduction google] de la documentation de Bacula à ce sujet.

'''/etc/bacula/bacula-sd.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = NOM_SD
:'''SDPort''' = 9103
:''' WorkingDirectory''' = &quot;/var/lib/bacula&quot;
:''' Pid Directory''' = &quot;/var/run/bacula&quot;
:'''Maximum Concurrent Jobs''' = 20
:'''SDAddress''' = nom_dns_ou_ip
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_DIR
:'''Password''' = &quot;mdp_du_director&quot;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;                                          
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_MON
:'''Password''' = &quot;mdp_du_director_restreint&quot;
:'''Monitor''' = yes
}

'''Device''' {
:'''Name''' = Nom_Device
:'''Media Type''' = File
:'''Archive Device''' = /home/sauvegarde/
:'''LabelMedia''' = yes;
:'''Random Access''' = Yes;
:'''AutomaticMount''' = yes;
:'''RemovableMedia''' = no;
:'''AlwaysOpen''' = yes;
}

'''Messages''' {
:'''Name''' = Standard
:'''director''' = NOM_DIR = all
}
&lt;/div&gt;

=== Le Director ===

'''/etc/bacula/bacula-dir.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR
:'''DIRport''' = 9101
:'''QueryFile''' = &quot;/etc/bacula/query.sql&quot;
:'''WorkingDirectory''' = &quot;/var/lib/bacula&quot;
:'''PidDirectory''' = &quot;/var/run/bacula&quot;
:'''Maximum Concurrent Jobs''' = 4
:'''Password''' = &quot;mdp_du_director&quot;
:'''Messages''' = Standard
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;consolerCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key &lt;/span&gt;
}

@/etc/bacula/configuration/bacula_dir_filset.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_job.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_storage.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_pool.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_client.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_schedule.conf&lt;br/&gt;

'''Catalog''' {
:'''Name''' = MyCatalog
:dbname = &quot;bacula&quot;; dbuser = &quot;bacula&quot;; dbpassword = &quot;mdp_base_SQL&quot;
}

'''Messages''' {
:'''Name''' = Standard
:'''mailcommand''' = &quot;/usr/sbin/bsmtp -h localhost -f \&quot;\(Bacula\) \&lt;%r\&gt;\&quot; -s \&quot;Bacula daemon message\&quot; %r&quot;
:'''mail''' = root@localhost = all, !skipped
:'''console''' = all, !skipped, !saved
::append = &quot;/var/bacula/log&quot; = all, !skipped
}
&lt;/div&gt;

==== Filset====

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''FileSet''' {
:'''Name''' = &quot;DONNEES_FSET&quot;
:'''Include''' {
::'''Options''' {
:::compression = GZIP
:::signature = MD5
::}
::'''File''' = &quot;C:/DONNEES&quot;
:}

:'''Exclude''' {
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/yyy/zzz/yyy&quot;
:}
}

'''FileSet''' {
:'''Name''' = &quot;BACULA_FSET&quot;
:'''Include''' {
::'''Options''' {
:::signature = MD5
:::compression = GZIP
::}
::'''File''' = &quot;/etc/bacula/&quot;
}
&lt;/div&gt;

==== Job ====

(fais un JOBDEF)
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Job''' {
:'''Name''' = &quot;DONNEES&quot;
:'''Type''' = Backup
:'''Level''' = Incremental
:'''Client''' = SERVEURZZZ
:'''FileSet''' = &quot;DONNEES_FSET&quot;
:'''Schedule''' = &quot;Donnees&quot;
:'''Storage''' = Donnee_st
:'''Pool'''= Donnees_Pool
:'''Write Bootstrap''' = /var/lib/bacula/donnee.bsr
:'''Priority''' = 20
:'''Messages''' = Standard
}

'''Job''' {
:'''Name''' = &quot;BACULA&quot;
:'''Type''' = Backup
:'''Level''' = Full
:'''Client''' = SERVEURYYY
:'''FileSet''' = &quot;BACULA_FSET&quot;
:'''Schedule''' = &quot;Bacula&quot;
:'''Storage''' = Bacula_st
:'''Pool''' = Bacula_Pool
:'''Write Bootstrap''' = /var/lib/bacula/bacula.bsr
:'''Priority''' = 20
:'''Messages''' = Standard
}
&lt;/div&gt;

==== Storage ====
==== Pool ====
==== Client ====
==== Schedule ====

== Sécurisation ==
== Utilisation ==
=== En mode Console ===
=== En mode Graphique ===

== ANNEXE ==
=== Annexe A : Certificat SSL ===



[[Utilisateur:Haludeis|Haludeis]] 1 mai 2012 à 18:24 (CEST)</text>
      <sha1>qf22qyivrsazbwsdjhc7gnze1aonbh1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4144</id>
      <parentid>4142</parentid>
      <timestamp>2012-05-02T19:57:28Z</timestamp>
      <contributor>
        <username>Haludeis</username>
        <id>30</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="14600">[[Catégorie:Sauvegardes]]
{{Ébauche|Bacula}}
{{sid}}

== Présentation ==
Ce wiki est basé sur une installation stable de Debian (en ce moment Squeeze).

(reste à faire)

== Installation ==
Bacula peut utiliser les bases de données SQLite, MySql et PostGreSQL.Il suffit d'installer les paquets correspondant à votre choix. 

Changer &quot;-mysql&quot; par &quot;-pgsql&quot; ou &quot;-sqlite3&quot; sur le paquet director et le fd.

ici je choisi MySql (MySql étant déja installé):

 # aptitude install bacula-director-mysql bacula-sd-mysql bacula

Accorder les droits à bacula sur la base de données (vérifié si pas obsolete):
 # mysql -u root -p
 &gt; grant all privileges on bacula.* to 'bacula'@'localhost' identified by 'bacula' ;

Créer le repertoire de sauvegarde et accorder les droits à bacula :
 # mkdir /home/sauvegarde/
 # chown -R bacula.bacula /home/sauvegarde
 # chmod -R 660 /home/sauvegarde (---&gt; à vérifier)

== Configuration ==
Bacula se compose des fichiers suivants :

Le fichier générale de configuration le Director :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-dir.conf&lt;/span&gt;
Le fichier Storage Daemon concernant le stockage des données :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-sd.conf&lt;/span&gt;
Celui du File Daemon permettant l'accès aux données installé sur le client à sauvegarder :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-fd.conf&lt;/span&gt;
Le fichier permettant la connexion entre la console et le directeur :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bconsole.conf&lt;/span&gt; 

=== La Console ===

'''/etc/bacula/bconsole.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' { 
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''DIRport''' = 9101 &lt;span style=&quot;color:#bd0000;&quot;&gt;# le port d'écoute du director&lt;/span&gt;  
:'''address''' = nom_resolu_par_dns_ou_IP &lt;span style=&quot;color:#bd0000;&quot;&gt;# ip ou dns du director&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;# le mot de passe du director&lt;/span&gt; 
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt; 
} &lt;/div&gt;

'''address''' : Attention le nom DNS est obligatoire pour une connexion SSL penser à configurer le fichier /etc/hosts ou le serveur dns.

:: si vous n'utilisez pas de connexion sécurisée vous pouvez mettre une adresse ip directement.

La partie bleu permet la sécurisation des données entre le director et la console ca.crt doit être &lt;br/&gt;
le même partout les deux autres different pour chaque éléments de bacula voir l' annexe A sur les certificats SSL pour leur création.&lt;br/&gt;
Pour l'instant ne vous préoccupez pas de cette partie, une explication plus complète sera détaillé dans le chapitre sur la sécurisation.&lt;br/&gt;
Sachez juste que cela ce trouve là. &lt;br/&gt;

=== Le File Daemon ===

'''/etc/bacula/bacula-fd.conf''' 
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le mot de passe du director&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key &lt;/span&gt;
}

'''Director''' {
:'''Name''' = NOM_MON &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director restreint défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director_restreint&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;# son mot de passe&lt;/span&gt;
:'''Monitor''' = yes 
}

'''FileDaemon''' { 
:'''Name''' = NOM_FD &lt;span style=&quot;color:#bd0000;&quot;&gt;# le nom du File daemon&lt;/span&gt;
:'''FDport''' = 9102 &lt;span style=&quot;color:#bd0000;&quot;&gt;# son mot de passe&lt;/span&gt;
:'''WorkingDirectory''' = /var/lib/bacula
:'''Pid Directory''' = /var/run/bacula
:'''Maximum Concurrent Jobs''' = 8 &lt;span style=&quot;color:#bd0000;&quot;&gt;# le nombre maximum de sauvegardes simultanées&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key&lt;/span&gt; 
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Signatures = Yes&lt;/span&gt;           
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Encryption = Yes&lt;/span&gt;            
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/encrypt.pem&quot;&lt;/span&gt;    
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Master Key = &quot;/etc/bacula/keys/master.cert&quot;&lt;/span&gt;
}

'''Messages''' {
:'''Name''' = Standard
:'''director''' = NOM_DIR = all, !skipped, !restored
}
&lt;/div&gt;

=== Le Storage Daemon ===
Le fichier de configuration du Storage Daemon a relativement peu de définitions de ressources. Toutefois, en raison de&lt;br/&gt;
la grande variation dans les médias de sauvegarde et des capacités du système, le démon de stockage doit être hautement configurable.&lt;br/&gt;

En conséquence, il y a un assez grand nombre de directives dans la définition des ressources de périphérique qui vous permet de définir.

toutes les caractéristiques de votre périphérique de stockage (normalement un lecteur de bande). Heureusement, avec des dispositifs 

de stockage modernes, les valeurs par défaut sont suffisantes, et très peu de directives sont réellement nécessaires.

Pour voir toutes les possibilités du Storage Daemon je vous invite à lire [http://translate.google.fr/translate?hl=fr&amp;sl=en&amp;u=http://bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html&amp;ei=wXefT8uCDMa-8AOw_Oh6&amp;sa=X&amp;oi=translate&amp;ct=result&amp;resnum=1&amp;ved=0CCQQ7gEwAA&amp;prev=/search%3Fq%3Dhttp://www.bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html%26hl%3Dfr%26biw%3D1678%26bih%3D941%26prmd%3Dimvns la traduction google] de la documentation de Bacula à ce sujet.

'''/etc/bacula/bacula-sd.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = NOM_SD &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nom du Storage Daemon&lt;/span&gt;
:'''SDPort''' = 9103 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son port d'écoute&lt;/span&gt;
:''' WorkingDirectory''' = &quot;/var/lib/bacula&quot; 
:''' Pid Directory''' = &quot;/var/run/bacula&quot; 
:'''Maximum Concurrent Jobs''' = 8 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nombre maximum de sauvegardes simultanées&lt;/span&gt;
:'''SDAddress''' = nom_dns_ou_ip &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son addresse ip ou son nom dns&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# et son mot de passe&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;                                          
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_MON
:'''Password''' = &quot;mdp_du_director_restreint&quot;
:'''Monitor''' = yes
}

'''Device''' {
:'''Name''' = Nom_Device
:'''Media Type''' = File
:'''Archive Device''' = /home/sauvegarde/
:'''LabelMedia''' = yes;
:'''Random Access''' = Yes;
:'''AutomaticMount''' = yes;
:'''RemovableMedia''' = no;
:'''AlwaysOpen''' = yes;
}

'''Messages''' {
:'''Name''' = Standard
:'''director''' = NOM_DIR = all
}
&lt;/div&gt;

=== Le Director ===

'''/etc/bacula/bacula-dir.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR
:'''DIRport''' = 9101
:'''QueryFile''' = &quot;/etc/bacula/query.sql&quot;
:'''WorkingDirectory''' = &quot;/var/lib/bacula&quot;
:'''PidDirectory''' = &quot;/var/run/bacula&quot;
:'''Maximum Concurrent Jobs''' = 4
:'''Password''' = &quot;mdp_du_director&quot;
:'''Messages''' = Standard
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;consolerCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key &lt;/span&gt;
}

@/etc/bacula/configuration/bacula_dir_filset.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_job.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_storage.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_pool.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_client.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_schedule.conf&lt;br/&gt;

'''Catalog''' {
:'''Name''' = MyCatalog
:dbname = &quot;bacula&quot;; dbuser = &quot;bacula&quot;; dbpassword = &quot;mdp_base_SQL&quot;
}

'''Messages''' {
:'''Name''' = Standard
:'''mailcommand''' = &quot;/usr/sbin/bsmtp -h localhost -f \&quot;\(Bacula\) \&lt;%r\&gt;\&quot; -s \&quot;Bacula daemon message\&quot; %r&quot;
:'''mail''' = root@localhost = all, !skipped
:'''console''' = all, !skipped, !saved
::append = &quot;/var/bacula/log&quot; = all, !skipped
}
&lt;/div&gt;

==== Filset====
/etc/bacula/configuration/bacula_dir_filset.conf

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''FileSet''' {
:'''Name''' = &quot;DONNEES_FSET&quot;
:'''Include''' {
::'''Options''' {
:::compression = GZIP
:::signature = MD5
::}
::'''File''' = &quot;C:/DONNEES&quot;
:}

:'''Exclude''' {
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/yyy/zzz/yyy&quot;
:}
}

'''FileSet''' {
:'''Name''' = &quot;BACULA_FSET&quot;
:'''Include''' {
::'''Options''' {
:::signature = MD5
:::compression = GZIP
::}
::'''File''' = &quot;/etc/bacula/&quot;
}
&lt;/div&gt;

==== Job ====
/etc/bacula/configuration/bacula_dir_job.conf
(fais un JOBDEF)
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Job''' {
:'''Name''' = &quot;DONNEES&quot;
:'''Type''' = Backup
:'''Level''' = Incremental
:'''Client''' = SERVEURZZZ
:'''FileSet''' = &quot;DONNEES_FSET&quot;
:'''Schedule''' = &quot;Donnees&quot;
:'''Storage''' = Donnee_st
:'''Pool'''= Donnees_Pool
:'''Write Bootstrap''' = /var/lib/bacula/donnee.bsr
:'''Priority''' = 20
:'''Messages''' = Standard
}

'''Job''' {
:'''Name''' = &quot;BACULA&quot;
:'''Type''' = Backup
:'''Level''' = Full
:'''Client''' = SERVEURYYY
:'''FileSet''' = &quot;BACULA_FSET&quot;
:'''Schedule''' = &quot;Bacula&quot;
:'''Storage''' = Bacula_st
:'''Pool''' = Bacula_Pool
:'''Write Bootstrap''' = /var/lib/bacula/bacula.bsr
:'''Priority''' = 20
:'''Messages''' = Standard
}
&lt;/div&gt;

==== Storage ====
/etc/bacula/configuration/bacula_dir_storage.conf

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = Donnees_st
:'''Address''' = nom_dns_ou_ip_du_storagedaemon
:'''SDPort''' = 9103
:'''Password''' = &quot;mdp_du_storagedaemon&quot;
:'''Device''' = donnees_device
:'''Media Type''' = File
}&lt;br/&gt;
'''Storage:''' {
:'''Name''' = Bacula_st
:'''Address''' = nom_dns_ou_ip_du_storagedaemon
:'''SDPort''' = 9103
:'''Password''' = &quot;mdp_du_storagedaemon&quot;
:'''Device''' = bacula_device
:'''Media Type''' = File
}

&lt;/div&gt;

==== Pool ====
/etc/bacula/configuration/bacula_dir_pool.conf

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Pool'''{
:'''Name''' = Donnees_Pool
:'''Pool Type''' = Backup
:'''Recycle''' = yes
:'''AutoPrune''' = yes
:'''Maximum Volume Jobs''' = 1
:'''Label Format''' = &quot;${Level}_${Job}_${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}_${Hour:p/2/0/r}h${Minute:p/2/0/r}m&quot;
}&lt;br/&gt;
'''Pool'''{
:'''Name''' = Bacula_Pool
:'''Pool Type''' = Backup
:'''Recycle''' = yes
:'''AutoPrune''' = yes
:'''Maximum Volume Jobs'''= 1
:'''Label Format''' = &quot;${Level}_${Job}_${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}_${Hour:p/2/0/r}h${Minute:p/2/0/r}m&quot;
}
&lt;/div&gt;

==== Client ====
/etc/bacula/configuration/bacula_dir_client.conf

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Client''' {
:'''Name''' = Nom_du_poste_a_savegarder
:'''Address''' = nom_dns_ou_ip
:'''FDPort''' = 9102
:'''Catalog''' = MyCatalog
:'''Password''' = &quot;mdp_du_client&quot;
:'''File Retention''' = 180 days
:'''Job Retention''' = 180 days
:'''AutoPrune''' = yes
}
&lt;/div&gt;

==== Schedule ====
/etc/bacula/configuration/bacula_dir_schedule.conf

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Schedule''' {
:'''Name''' = &quot;Donnees&quot;
:'''Run''' = Full 1st sun at 23:05
:'''Run''' = Differential 2nd-5th sun at 23:05
:'''Run''' = Incremental mon-sat at 21:00
}&lt;br/&gt;
'''Schedule''' {
:'''Name''' = &quot;Bacula&quot;
:'''Run''' = Full 2st sat at 03:05
:'''Run''' = Differential 1nd-4th sun at 23:05
:'''Run''' = Incremental mon-fri at 20:00
}
&lt;/div&gt;

== Sécurisation ==
== Utilisation ==
=== En mode Console ===
=== En mode Graphique ===

== ANNEXE ==
=== Annexe A : Certificat SSL ===



[[Utilisateur:Haludeis|Haludeis]] 1 mai 2012 à 18:24 (CEST)</text>
      <sha1>33iy96ownu8xaxct7j4uxzocf6fye47</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4149</id>
      <parentid>4144</parentid>
      <timestamp>2012-05-04T18:43:33Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Présentation */</comment>
      <text xml:space="preserve" bytes="14668">[[Catégorie:Sauvegardes]]
{{Ébauche|Bacula}}
{{sid}}

== Présentation ==
Ce document est basé sur une installation stable de Debian (en ce moment Squeeze).

Son but : sauvegarde, restauration et vérification en réseau 
(reste à faire)

== Installation ==
Bacula peut utiliser les bases de données SQLite, MySql et PostGreSQL.Il suffit d'installer les paquets correspondant à votre choix. 

Changer &quot;-mysql&quot; par &quot;-pgsql&quot; ou &quot;-sqlite3&quot; sur le paquet director et le fd.

ici je choisi MySql (MySql étant déja installé):

 # aptitude install bacula-director-mysql bacula-sd-mysql bacula

Accorder les droits à bacula sur la base de données (vérifié si pas obsolete):
 # mysql -u root -p
 &gt; grant all privileges on bacula.* to 'bacula'@'localhost' identified by 'bacula' ;

Créer le repertoire de sauvegarde et accorder les droits à bacula :
 # mkdir /home/sauvegarde/
 # chown -R bacula.bacula /home/sauvegarde
 # chmod -R 660 /home/sauvegarde (---&gt; à vérifier)

== Configuration ==
Bacula se compose des fichiers suivants :

Le fichier générale de configuration le Director :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-dir.conf&lt;/span&gt;
Le fichier Storage Daemon concernant le stockage des données :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-sd.conf&lt;/span&gt;
Celui du File Daemon permettant l'accès aux données installé sur le client à sauvegarder :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-fd.conf&lt;/span&gt;
Le fichier permettant la connexion entre la console et le directeur :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bconsole.conf&lt;/span&gt; 

=== La Console ===

'''/etc/bacula/bconsole.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' { 
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''DIRport''' = 9101 &lt;span style=&quot;color:#bd0000;&quot;&gt;# le port d'écoute du director&lt;/span&gt;  
:'''address''' = nom_resolu_par_dns_ou_IP &lt;span style=&quot;color:#bd0000;&quot;&gt;# ip ou dns du director&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;# le mot de passe du director&lt;/span&gt; 
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt; 
} &lt;/div&gt;

'''address''' : Attention le nom DNS est obligatoire pour une connexion SSL penser à configurer le fichier /etc/hosts ou le serveur dns.

:: si vous n'utilisez pas de connexion sécurisée vous pouvez mettre une adresse ip directement.

La partie bleu permet la sécurisation des données entre le director et la console ca.crt doit être &lt;br/&gt;
le même partout les deux autres different pour chaque éléments de bacula voir l' annexe A sur les certificats SSL pour leur création.&lt;br/&gt;
Pour l'instant ne vous préoccupez pas de cette partie, une explication plus complète sera détaillé dans le chapitre sur la sécurisation.&lt;br/&gt;
Sachez juste que cela ce trouve là. &lt;br/&gt;

=== Le File Daemon ===

'''/etc/bacula/bacula-fd.conf''' 
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le mot de passe du director&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key &lt;/span&gt;
}

'''Director''' {
:'''Name''' = NOM_MON &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director restreint défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director_restreint&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;# son mot de passe&lt;/span&gt;
:'''Monitor''' = yes 
}

'''FileDaemon''' { 
:'''Name''' = NOM_FD &lt;span style=&quot;color:#bd0000;&quot;&gt;# le nom du File daemon&lt;/span&gt;
:'''FDport''' = 9102 &lt;span style=&quot;color:#bd0000;&quot;&gt;# son mot de passe&lt;/span&gt;
:'''WorkingDirectory''' = /var/lib/bacula
:'''Pid Directory''' = /var/run/bacula
:'''Maximum Concurrent Jobs''' = 8 &lt;span style=&quot;color:#bd0000;&quot;&gt;# le nombre maximum de sauvegardes simultanées&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key&lt;/span&gt; 
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Signatures = Yes&lt;/span&gt;           
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Encryption = Yes&lt;/span&gt;            
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/encrypt.pem&quot;&lt;/span&gt;    
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Master Key = &quot;/etc/bacula/keys/master.cert&quot;&lt;/span&gt;
}

'''Messages''' {
:'''Name''' = Standard
:'''director''' = NOM_DIR = all, !skipped, !restored
}
&lt;/div&gt;

=== Le Storage Daemon ===
Le fichier de configuration du Storage Daemon a relativement peu de définitions de ressources. Toutefois, en raison de&lt;br/&gt;
la grande variation dans les médias de sauvegarde et des capacités du système, le démon de stockage doit être hautement configurable.&lt;br/&gt;

En conséquence, il y a un assez grand nombre de directives dans la définition des ressources de périphérique qui vous permet de définir.

toutes les caractéristiques de votre périphérique de stockage (normalement un lecteur de bande). Heureusement, avec des dispositifs 

de stockage modernes, les valeurs par défaut sont suffisantes, et très peu de directives sont réellement nécessaires.

Pour voir toutes les possibilités du Storage Daemon je vous invite à lire [http://translate.google.fr/translate?hl=fr&amp;sl=en&amp;u=http://bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html&amp;ei=wXefT8uCDMa-8AOw_Oh6&amp;sa=X&amp;oi=translate&amp;ct=result&amp;resnum=1&amp;ved=0CCQQ7gEwAA&amp;prev=/search%3Fq%3Dhttp://www.bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html%26hl%3Dfr%26biw%3D1678%26bih%3D941%26prmd%3Dimvns la traduction google] de la documentation de Bacula à ce sujet.

'''/etc/bacula/bacula-sd.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = NOM_SD &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nom du Storage Daemon&lt;/span&gt;
:'''SDPort''' = 9103 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son port d'écoute&lt;/span&gt;
:''' WorkingDirectory''' = &quot;/var/lib/bacula&quot; 
:''' Pid Directory''' = &quot;/var/run/bacula&quot; 
:'''Maximum Concurrent Jobs''' = 8 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nombre maximum de sauvegardes simultanées&lt;/span&gt;
:'''SDAddress''' = nom_dns_ou_ip &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son addresse ip ou son nom dns&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# et son mot de passe&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;                                          
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_MON
:'''Password''' = &quot;mdp_du_director_restreint&quot;
:'''Monitor''' = yes
}

'''Device''' {
:'''Name''' = Nom_Device
:'''Media Type''' = File
:'''Archive Device''' = /home/sauvegarde/
:'''LabelMedia''' = yes;
:'''Random Access''' = Yes;
:'''AutomaticMount''' = yes;
:'''RemovableMedia''' = no;
:'''AlwaysOpen''' = yes;
}

'''Messages''' {
:'''Name''' = Standard
:'''director''' = NOM_DIR = all
}
&lt;/div&gt;

=== Le Director ===

'''/etc/bacula/bacula-dir.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR
:'''DIRport''' = 9101
:'''QueryFile''' = &quot;/etc/bacula/query.sql&quot;
:'''WorkingDirectory''' = &quot;/var/lib/bacula&quot;
:'''PidDirectory''' = &quot;/var/run/bacula&quot;
:'''Maximum Concurrent Jobs''' = 4
:'''Password''' = &quot;mdp_du_director&quot;
:'''Messages''' = Standard
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;consolerCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key &lt;/span&gt;
}

@/etc/bacula/configuration/bacula_dir_filset.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_job.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_storage.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_pool.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_client.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_schedule.conf&lt;br/&gt;

'''Catalog''' {
:'''Name''' = MyCatalog
:dbname = &quot;bacula&quot;; dbuser = &quot;bacula&quot;; dbpassword = &quot;mdp_base_SQL&quot;
}

'''Messages''' {
:'''Name''' = Standard
:'''mailcommand''' = &quot;/usr/sbin/bsmtp -h localhost -f \&quot;\(Bacula\) \&lt;%r\&gt;\&quot; -s \&quot;Bacula daemon message\&quot; %r&quot;
:'''mail''' = root@localhost = all, !skipped
:'''console''' = all, !skipped, !saved
::append = &quot;/var/bacula/log&quot; = all, !skipped
}
&lt;/div&gt;

==== Filset====
/etc/bacula/configuration/bacula_dir_filset.conf

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''FileSet''' {
:'''Name''' = &quot;DONNEES_FSET&quot;
:'''Include''' {
::'''Options''' {
:::compression = GZIP
:::signature = MD5
::}
::'''File''' = &quot;C:/DONNEES&quot;
:}

:'''Exclude''' {
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/yyy/zzz/yyy&quot;
:}
}

'''FileSet''' {
:'''Name''' = &quot;BACULA_FSET&quot;
:'''Include''' {
::'''Options''' {
:::signature = MD5
:::compression = GZIP
::}
::'''File''' = &quot;/etc/bacula/&quot;
}
&lt;/div&gt;

==== Job ====
/etc/bacula/configuration/bacula_dir_job.conf
(fais un JOBDEF)
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Job''' {
:'''Name''' = &quot;DONNEES&quot;
:'''Type''' = Backup
:'''Level''' = Incremental
:'''Client''' = SERVEURZZZ
:'''FileSet''' = &quot;DONNEES_FSET&quot;
:'''Schedule''' = &quot;Donnees&quot;
:'''Storage''' = Donnee_st
:'''Pool'''= Donnees_Pool
:'''Write Bootstrap''' = /var/lib/bacula/donnee.bsr
:'''Priority''' = 20
:'''Messages''' = Standard
}

'''Job''' {
:'''Name''' = &quot;BACULA&quot;
:'''Type''' = Backup
:'''Level''' = Full
:'''Client''' = SERVEURYYY
:'''FileSet''' = &quot;BACULA_FSET&quot;
:'''Schedule''' = &quot;Bacula&quot;
:'''Storage''' = Bacula_st
:'''Pool''' = Bacula_Pool
:'''Write Bootstrap''' = /var/lib/bacula/bacula.bsr
:'''Priority''' = 20
:'''Messages''' = Standard
}
&lt;/div&gt;

==== Storage ====
/etc/bacula/configuration/bacula_dir_storage.conf

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = Donnees_st
:'''Address''' = nom_dns_ou_ip_du_storagedaemon
:'''SDPort''' = 9103
:'''Password''' = &quot;mdp_du_storagedaemon&quot;
:'''Device''' = donnees_device
:'''Media Type''' = File
}&lt;br/&gt;
'''Storage:''' {
:'''Name''' = Bacula_st
:'''Address''' = nom_dns_ou_ip_du_storagedaemon
:'''SDPort''' = 9103
:'''Password''' = &quot;mdp_du_storagedaemon&quot;
:'''Device''' = bacula_device
:'''Media Type''' = File
}

&lt;/div&gt;

==== Pool ====
/etc/bacula/configuration/bacula_dir_pool.conf

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Pool'''{
:'''Name''' = Donnees_Pool
:'''Pool Type''' = Backup
:'''Recycle''' = yes
:'''AutoPrune''' = yes
:'''Maximum Volume Jobs''' = 1
:'''Label Format''' = &quot;${Level}_${Job}_${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}_${Hour:p/2/0/r}h${Minute:p/2/0/r}m&quot;
}&lt;br/&gt;
'''Pool'''{
:'''Name''' = Bacula_Pool
:'''Pool Type''' = Backup
:'''Recycle''' = yes
:'''AutoPrune''' = yes
:'''Maximum Volume Jobs'''= 1
:'''Label Format''' = &quot;${Level}_${Job}_${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}_${Hour:p/2/0/r}h${Minute:p/2/0/r}m&quot;
}
&lt;/div&gt;

==== Client ====
/etc/bacula/configuration/bacula_dir_client.conf

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Client''' {
:'''Name''' = Nom_du_poste_a_savegarder
:'''Address''' = nom_dns_ou_ip
:'''FDPort''' = 9102
:'''Catalog''' = MyCatalog
:'''Password''' = &quot;mdp_du_client&quot;
:'''File Retention''' = 180 days
:'''Job Retention''' = 180 days
:'''AutoPrune''' = yes
}
&lt;/div&gt;

==== Schedule ====
/etc/bacula/configuration/bacula_dir_schedule.conf

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Schedule''' {
:'''Name''' = &quot;Donnees&quot;
:'''Run''' = Full 1st sun at 23:05
:'''Run''' = Differential 2nd-5th sun at 23:05
:'''Run''' = Incremental mon-sat at 21:00
}&lt;br/&gt;
'''Schedule''' {
:'''Name''' = &quot;Bacula&quot;
:'''Run''' = Full 2st sat at 03:05
:'''Run''' = Differential 1nd-4th sun at 23:05
:'''Run''' = Incremental mon-fri at 20:00
}
&lt;/div&gt;

== Sécurisation ==
== Utilisation ==
=== En mode Console ===
=== En mode Graphique ===

== ANNEXE ==
=== Annexe A : Certificat SSL ===



[[Utilisateur:Haludeis|Haludeis]] 1 mai 2012 à 18:24 (CEST)</text>
      <sha1>j94o021kooxg6s1zyz6xc3jdutdb3q9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4150</id>
      <parentid>4149</parentid>
      <timestamp>2012-05-04T18:44:42Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Installation */</comment>
      <text xml:space="preserve" bytes="14670">[[Catégorie:Sauvegardes]]
{{Ébauche|Bacula}}
{{sid}}

== Présentation ==
Ce document est basé sur une installation stable de Debian (en ce moment Squeeze).

Son but : sauvegarde, restauration et vérification en réseau 
(reste à faire)

== Installation ==
Bacula peut utiliser les bases de données SQLite, MySql et PostGreSQL.Il suffit d'installer les paquets correspondant à votre choix. 

Changer &quot;-mysql&quot; par &quot;-pgsql&quot; ou &quot;-sqlite3&quot; sur le paquet director et le fd.

ici je choisi MySql (MySql étant déja installé):

 # aptitude install bacula-director-mysql bacula-sd-mysql bacula

Accorder les droits à bacula sur la base de données (vérifié si pas obsolète):
 # mysql -u root -p
 &gt; grant all privileges on bacula.* to 'bacula'@'localhost' identified by 'bacula' ;

Créer le répertoire de sauvegarde et accorder les droits à bacula :
 # mkdir /home/sauvegarde/
 # chown -R bacula.bacula /home/sauvegarde
 # chmod -R 660 /home/sauvegarde (---&gt; à vérifier)

== Configuration ==
Bacula se compose des fichiers suivants :

Le fichier générale de configuration le Director :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-dir.conf&lt;/span&gt;
Le fichier Storage Daemon concernant le stockage des données :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-sd.conf&lt;/span&gt;
Celui du File Daemon permettant l'accès aux données installé sur le client à sauvegarder :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-fd.conf&lt;/span&gt;
Le fichier permettant la connexion entre la console et le directeur :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bconsole.conf&lt;/span&gt; 

=== La Console ===

'''/etc/bacula/bconsole.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' { 
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''DIRport''' = 9101 &lt;span style=&quot;color:#bd0000;&quot;&gt;# le port d'écoute du director&lt;/span&gt;  
:'''address''' = nom_resolu_par_dns_ou_IP &lt;span style=&quot;color:#bd0000;&quot;&gt;# ip ou dns du director&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;# le mot de passe du director&lt;/span&gt; 
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt; 
} &lt;/div&gt;

'''address''' : Attention le nom DNS est obligatoire pour une connexion SSL penser à configurer le fichier /etc/hosts ou le serveur dns.

:: si vous n'utilisez pas de connexion sécurisée vous pouvez mettre une adresse ip directement.

La partie bleu permet la sécurisation des données entre le director et la console ca.crt doit être &lt;br/&gt;
le même partout les deux autres different pour chaque éléments de bacula voir l' annexe A sur les certificats SSL pour leur création.&lt;br/&gt;
Pour l'instant ne vous préoccupez pas de cette partie, une explication plus complète sera détaillé dans le chapitre sur la sécurisation.&lt;br/&gt;
Sachez juste que cela ce trouve là. &lt;br/&gt;

=== Le File Daemon ===

'''/etc/bacula/bacula-fd.conf''' 
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le mot de passe du director&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key &lt;/span&gt;
}

'''Director''' {
:'''Name''' = NOM_MON &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director restreint défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director_restreint&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;# son mot de passe&lt;/span&gt;
:'''Monitor''' = yes 
}

'''FileDaemon''' { 
:'''Name''' = NOM_FD &lt;span style=&quot;color:#bd0000;&quot;&gt;# le nom du File daemon&lt;/span&gt;
:'''FDport''' = 9102 &lt;span style=&quot;color:#bd0000;&quot;&gt;# son mot de passe&lt;/span&gt;
:'''WorkingDirectory''' = /var/lib/bacula
:'''Pid Directory''' = /var/run/bacula
:'''Maximum Concurrent Jobs''' = 8 &lt;span style=&quot;color:#bd0000;&quot;&gt;# le nombre maximum de sauvegardes simultanées&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key&lt;/span&gt; 
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Signatures = Yes&lt;/span&gt;           
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Encryption = Yes&lt;/span&gt;            
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/encrypt.pem&quot;&lt;/span&gt;    
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Master Key = &quot;/etc/bacula/keys/master.cert&quot;&lt;/span&gt;
}

'''Messages''' {
:'''Name''' = Standard
:'''director''' = NOM_DIR = all, !skipped, !restored
}
&lt;/div&gt;

=== Le Storage Daemon ===
Le fichier de configuration du Storage Daemon a relativement peu de définitions de ressources. Toutefois, en raison de&lt;br/&gt;
la grande variation dans les médias de sauvegarde et des capacités du système, le démon de stockage doit être hautement configurable.&lt;br/&gt;

En conséquence, il y a un assez grand nombre de directives dans la définition des ressources de périphérique qui vous permet de définir.

toutes les caractéristiques de votre périphérique de stockage (normalement un lecteur de bande). Heureusement, avec des dispositifs 

de stockage modernes, les valeurs par défaut sont suffisantes, et très peu de directives sont réellement nécessaires.

Pour voir toutes les possibilités du Storage Daemon je vous invite à lire [http://translate.google.fr/translate?hl=fr&amp;sl=en&amp;u=http://bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html&amp;ei=wXefT8uCDMa-8AOw_Oh6&amp;sa=X&amp;oi=translate&amp;ct=result&amp;resnum=1&amp;ved=0CCQQ7gEwAA&amp;prev=/search%3Fq%3Dhttp://www.bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html%26hl%3Dfr%26biw%3D1678%26bih%3D941%26prmd%3Dimvns la traduction google] de la documentation de Bacula à ce sujet.

'''/etc/bacula/bacula-sd.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = NOM_SD &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nom du Storage Daemon&lt;/span&gt;
:'''SDPort''' = 9103 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son port d'écoute&lt;/span&gt;
:''' WorkingDirectory''' = &quot;/var/lib/bacula&quot; 
:''' Pid Directory''' = &quot;/var/run/bacula&quot; 
:'''Maximum Concurrent Jobs''' = 8 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nombre maximum de sauvegardes simultanées&lt;/span&gt;
:'''SDAddress''' = nom_dns_ou_ip &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son addresse ip ou son nom dns&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# et son mot de passe&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;                                          
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_MON
:'''Password''' = &quot;mdp_du_director_restreint&quot;
:'''Monitor''' = yes
}

'''Device''' {
:'''Name''' = Nom_Device
:'''Media Type''' = File
:'''Archive Device''' = /home/sauvegarde/
:'''LabelMedia''' = yes;
:'''Random Access''' = Yes;
:'''AutomaticMount''' = yes;
:'''RemovableMedia''' = no;
:'''AlwaysOpen''' = yes;
}

'''Messages''' {
:'''Name''' = Standard
:'''director''' = NOM_DIR = all
}
&lt;/div&gt;

=== Le Director ===

'''/etc/bacula/bacula-dir.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR
:'''DIRport''' = 9101
:'''QueryFile''' = &quot;/etc/bacula/query.sql&quot;
:'''WorkingDirectory''' = &quot;/var/lib/bacula&quot;
:'''PidDirectory''' = &quot;/var/run/bacula&quot;
:'''Maximum Concurrent Jobs''' = 4
:'''Password''' = &quot;mdp_du_director&quot;
:'''Messages''' = Standard
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;consolerCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key &lt;/span&gt;
}

@/etc/bacula/configuration/bacula_dir_filset.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_job.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_storage.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_pool.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_client.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_schedule.conf&lt;br/&gt;

'''Catalog''' {
:'''Name''' = MyCatalog
:dbname = &quot;bacula&quot;; dbuser = &quot;bacula&quot;; dbpassword = &quot;mdp_base_SQL&quot;
}

'''Messages''' {
:'''Name''' = Standard
:'''mailcommand''' = &quot;/usr/sbin/bsmtp -h localhost -f \&quot;\(Bacula\) \&lt;%r\&gt;\&quot; -s \&quot;Bacula daemon message\&quot; %r&quot;
:'''mail''' = root@localhost = all, !skipped
:'''console''' = all, !skipped, !saved
::append = &quot;/var/bacula/log&quot; = all, !skipped
}
&lt;/div&gt;

==== Filset====
/etc/bacula/configuration/bacula_dir_filset.conf

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''FileSet''' {
:'''Name''' = &quot;DONNEES_FSET&quot;
:'''Include''' {
::'''Options''' {
:::compression = GZIP
:::signature = MD5
::}
::'''File''' = &quot;C:/DONNEES&quot;
:}

:'''Exclude''' {
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/yyy/zzz/yyy&quot;
:}
}

'''FileSet''' {
:'''Name''' = &quot;BACULA_FSET&quot;
:'''Include''' {
::'''Options''' {
:::signature = MD5
:::compression = GZIP
::}
::'''File''' = &quot;/etc/bacula/&quot;
}
&lt;/div&gt;

==== Job ====
/etc/bacula/configuration/bacula_dir_job.conf
(fais un JOBDEF)
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Job''' {
:'''Name''' = &quot;DONNEES&quot;
:'''Type''' = Backup
:'''Level''' = Incremental
:'''Client''' = SERVEURZZZ
:'''FileSet''' = &quot;DONNEES_FSET&quot;
:'''Schedule''' = &quot;Donnees&quot;
:'''Storage''' = Donnee_st
:'''Pool'''= Donnees_Pool
:'''Write Bootstrap''' = /var/lib/bacula/donnee.bsr
:'''Priority''' = 20
:'''Messages''' = Standard
}

'''Job''' {
:'''Name''' = &quot;BACULA&quot;
:'''Type''' = Backup
:'''Level''' = Full
:'''Client''' = SERVEURYYY
:'''FileSet''' = &quot;BACULA_FSET&quot;
:'''Schedule''' = &quot;Bacula&quot;
:'''Storage''' = Bacula_st
:'''Pool''' = Bacula_Pool
:'''Write Bootstrap''' = /var/lib/bacula/bacula.bsr
:'''Priority''' = 20
:'''Messages''' = Standard
}
&lt;/div&gt;

==== Storage ====
/etc/bacula/configuration/bacula_dir_storage.conf

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = Donnees_st
:'''Address''' = nom_dns_ou_ip_du_storagedaemon
:'''SDPort''' = 9103
:'''Password''' = &quot;mdp_du_storagedaemon&quot;
:'''Device''' = donnees_device
:'''Media Type''' = File
}&lt;br/&gt;
'''Storage:''' {
:'''Name''' = Bacula_st
:'''Address''' = nom_dns_ou_ip_du_storagedaemon
:'''SDPort''' = 9103
:'''Password''' = &quot;mdp_du_storagedaemon&quot;
:'''Device''' = bacula_device
:'''Media Type''' = File
}

&lt;/div&gt;

==== Pool ====
/etc/bacula/configuration/bacula_dir_pool.conf

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Pool'''{
:'''Name''' = Donnees_Pool
:'''Pool Type''' = Backup
:'''Recycle''' = yes
:'''AutoPrune''' = yes
:'''Maximum Volume Jobs''' = 1
:'''Label Format''' = &quot;${Level}_${Job}_${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}_${Hour:p/2/0/r}h${Minute:p/2/0/r}m&quot;
}&lt;br/&gt;
'''Pool'''{
:'''Name''' = Bacula_Pool
:'''Pool Type''' = Backup
:'''Recycle''' = yes
:'''AutoPrune''' = yes
:'''Maximum Volume Jobs'''= 1
:'''Label Format''' = &quot;${Level}_${Job}_${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}_${Hour:p/2/0/r}h${Minute:p/2/0/r}m&quot;
}
&lt;/div&gt;

==== Client ====
/etc/bacula/configuration/bacula_dir_client.conf

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Client''' {
:'''Name''' = Nom_du_poste_a_savegarder
:'''Address''' = nom_dns_ou_ip
:'''FDPort''' = 9102
:'''Catalog''' = MyCatalog
:'''Password''' = &quot;mdp_du_client&quot;
:'''File Retention''' = 180 days
:'''Job Retention''' = 180 days
:'''AutoPrune''' = yes
}
&lt;/div&gt;

==== Schedule ====
/etc/bacula/configuration/bacula_dir_schedule.conf

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Schedule''' {
:'''Name''' = &quot;Donnees&quot;
:'''Run''' = Full 1st sun at 23:05
:'''Run''' = Differential 2nd-5th sun at 23:05
:'''Run''' = Incremental mon-sat at 21:00
}&lt;br/&gt;
'''Schedule''' {
:'''Name''' = &quot;Bacula&quot;
:'''Run''' = Full 2st sat at 03:05
:'''Run''' = Differential 1nd-4th sun at 23:05
:'''Run''' = Incremental mon-fri at 20:00
}
&lt;/div&gt;

== Sécurisation ==
== Utilisation ==
=== En mode Console ===
=== En mode Graphique ===

== ANNEXE ==
=== Annexe A : Certificat SSL ===



[[Utilisateur:Haludeis|Haludeis]] 1 mai 2012 à 18:24 (CEST)</text>
      <sha1>drtc97s9ukkbg2acf7oyqir4yra1mfn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4152</id>
      <parentid>4150</parentid>
      <timestamp>2012-05-05T09:17:14Z</timestamp>
      <contributor>
        <username>Haludeis</username>
        <id>30</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="19146">[[Catégorie:Sauvegardes]]
{{Ébauche|Bacula}}
{{sid}}

== Présentation ==
Ce document est basé sur une installation stable de Debian (en ce moment Squeeze).

Son but : sauvegarde, restauration et vérification en réseau 
(reste à faire)

== Installation ==
Bacula peut utiliser les bases de données SQLite, MySql et PostGreSQL.Il suffit d'installer les paquets correspondant à votre choix. 

Changer &quot;-mysql&quot; par &quot;-pgsql&quot; ou &quot;-sqlite3&quot; sur le paquet director et le fd.

ici je choisi MySql (MySql étant déja installé):

 # aptitude install bacula-director-mysql bacula-sd-mysql bacula

Accorder les droits à bacula sur la base de données (vérifié si pas obsolète):
 # mysql -u root -p
 &gt; grant all privileges on bacula.* to 'bacula'@'localhost' identified by 'bacula' ;

Créer le répertoire de sauvegarde et accorder les droits à bacula :
 # mkdir /home/sauvegarde/
 # chown -R bacula.bacula /home/sauvegarde
 # chmod -R 660 /home/sauvegarde (---&gt; à vérifier)

== Configuration ==
Bacula se compose des fichiers suivants :

Le fichier générale de configuration le Director :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-dir.conf&lt;/span&gt;
Le fichier Storage Daemon concernant le stockage des données :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-sd.conf&lt;/span&gt;
Celui du File Daemon permettant l'accès aux données installé sur le client à sauvegarder :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-fd.conf&lt;/span&gt;
Le fichier permettant la connexion entre la console et le directeur :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bconsole.conf&lt;/span&gt; 

=== La Console ===

'''/etc/bacula/bconsole.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' { 
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''DIRport''' = 9101 &lt;span style=&quot;color:#bd0000;&quot;&gt;# le port d'écoute du director&lt;/span&gt;  
:'''address''' = nom_resolu_par_dns_ou_IP &lt;span style=&quot;color:#bd0000;&quot;&gt;# ip ou dns du director&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;# le mot de passe du director&lt;/span&gt; 
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt; 
} &lt;/div&gt;

'''address''' : Attention le nom DNS est obligatoire pour une connexion SSL penser à configurer le fichier /etc/hosts ou le serveur dns.

:: si vous n'utilisez pas de connexion sécurisée vous pouvez mettre une adresse ip directement.

La partie bleu permet la sécurisation des données entre le director et la console ca.crt doit être &lt;br/&gt;
le même partout les deux autres different pour chaque éléments de bacula voir l' annexe A sur les certificats SSL pour leur création.&lt;br/&gt;
Pour l'instant ne vous préoccupez pas de cette partie, une explication plus complète sera détaillé dans le chapitre sur la sécurisation.&lt;br/&gt;
Sachez juste que cela ce trouve là. &lt;br/&gt;

=== Le File Daemon ===
La ressource Client (ou File Daemon) définit le nom du client (tel qu'il est utilisé par le director) ainsi que le port&lt;br/&gt;
sur lequel le client est à l'écoute des connections du Director.&lt;br/&gt;

'''/etc/bacula/bacula-fd.conf''' 
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le mot de passe du director&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key &lt;/span&gt;
}

'''Director''' {
:'''Name''' = NOM_MON &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director restreint défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director_restreint&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;# son mot de passe&lt;/span&gt;
:'''Monitor''' = yes 
}

'''FileDaemon''' { 
:'''Name''' = NOM_FD &lt;span style=&quot;color:#bd0000;&quot;&gt;# le nom du File daemon&lt;/span&gt;
:'''FDport''' = 9102 &lt;span style=&quot;color:#bd0000;&quot;&gt;# son mot port d'écoute'&lt;/span&gt;
:'''WorkingDirectory''' = /var/lib/bacula
:'''Pid Directory''' = /var/run/bacula
:'''Maximum Concurrent Jobs''' = 8 &lt;span style=&quot;color:#bd0000;&quot;&gt;# le nombre maximum de sauvegardes simultanées&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key&lt;/span&gt; 
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Signatures = Yes&lt;/span&gt;           
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Encryption = Yes&lt;/span&gt;            
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/encrypt.pem&quot;&lt;/span&gt;    
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Master Key = &quot;/etc/bacula/keys/master.cert&quot;&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les messages sont envoyés au director&lt;/span&gt; 
:'''Name''' = Standard
:'''director''' = NOM_DIR = all, !skipped, !restored
}
&lt;/div&gt;
&lt;br/&gt; 
'''Working Directory''' : Cette directive est obligatoire et spécifie un répertoire dans lequel le File Daemon peut placer ses fichiers d'état.&lt;br/&gt;
: Ce répertoire ne doit être utilisé que par Bacula, mais peut être partagé par d'autres daemons Bacula les définitions des noms doivent être uniques pour chaque démon.&lt;br/&gt; 
: Sur les systèmes Win32, dans certaines circonstances, vous pourriez avoir besoin de spécifier une lettre de lecteur dans le chemin de répertoire de travail spécifié.
: Aussi, s'il vous plaît assurez-vous que ce répertoire est accessible en écriture par l'utilisateur SYSTEM au contraire la restauration peut échouer&lt;br/&gt;
: (le fichier d'amorçage (bootstrap) qui est transféré vers le File Daemon du directeur est temporairement placé dans ce répertoire avant d'être transmis au Storage Daemon).&lt;br/&gt;
'''Pid Directory''' Cette directive est obligatoire et spécifie un répertoire dans lequel le directeur peut placer ses fichiers d'identification de processus.&lt;br/&gt;
: Le fichier d'identification de processus est utilisé pour stopper Bacula et éviter à plusieurs instances de Bacula de fonctionner simultanément.&lt;br/&gt;
: Cet enregistrement est nécessaire. L'expansion du shell standard de l'annuaire se fait lorsque le fichier de configuration est lu de telle sorte que des valeurs&lt;br/&gt;
: telles que $HOME seront correctement substituées.&lt;br/&gt;
: Typiquement, sur les systèmes Linux, vous mettrez: /var/run.Si vous n'installez pas Bacula dans les répertoires système, vous pouvez utiliser le répertoire de travail&lt;br/&gt;
: tel que défini ci-dessus.&lt;br/&gt; 

Pour voir toutes les possibilités du File Daemon je vous invite à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Client_File_daemon_Configur.html la documentation de Bacula] à ce sujet.&lt;br/&gt;  
=== Le Storage Daemon ===
Le fichier de configuration du Storage Daemon a relativement peu de définitions de ressources. Toutefois, en raison de&lt;br/&gt;
la grande variation dans les médias de sauvegarde et des capacités du système, le démon de stockage doit être hautement configurable.&lt;br/&gt;

En conséquence, il y a un assez grand nombre de directives dans la définition des ressources de périphérique qui vous permet de définir.

toutes les caractéristiques de votre périphérique de stockage (normalement un lecteur de bande). Heureusement, avec des dispositifs 

de stockage modernes, les valeurs par défaut sont suffisantes, et très peu de directives sont réellement nécessaires.

'''/etc/bacula/bacula-sd.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = NOM_SD &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nom du Storage Daemon&lt;/span&gt;
:'''SDPort''' = 9103 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son port d'écoute&lt;/span&gt;
:''' WorkingDirectory''' = &quot;/var/lib/bacula&quot; 
:''' Pid Directory''' = &quot;/var/run/bacula&quot; 
:'''Maximum Concurrent Jobs''' = 8 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nombre maximum de sauvegardes simultanées par media&lt;/span&gt;
:'''SDAddress''' = nom_dns_ou_ip &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son addresse ip ou son nom dns&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# et son mot de passe&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;                                          
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_MON &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director restreint défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director_restreint&quot;
:'''Monitor''' = yes
}

'''Device''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# ou répertoire&lt;/span&gt; 
:'''Name''' = Nom_Device &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Un nom pour l'identifier&lt;/span&gt;
:'''Media Type''' = File &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son type : File, Tape, Fifo, DVD&lt;/span&gt;
:'''Archive Device''' = /home/sauvegarde/ &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son emplacement&lt;/span&gt;
:'''LabelMedia''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Lui donne un nom&lt;/span&gt;
:'''Random Access''' = Yes;
:'''AutomaticMount''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# monte le media en automatique&lt;/span&gt;
:'''RemovableMedia''' = no;
:'''AlwaysOpen''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Toujours accessible&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les messages sont envoyés au director&lt;/span&gt; 
:'''Name''' = Standard
:'''director''' = NOM_DIR = all
}
&lt;/div&gt;
&lt;br/&gt; 
'''Random Access''' : Si Oui, le périphérique est supposé être un moyen d'accès aléatoire qui prend en charge le lseek (Dvd,Usb...) &lt;br/&gt;
: Non pour les dispositifs d'accès non-aléatoires tels que des bandes.
'''RemovableMedia''' : Si oui, cet appareil prend en charge les supports amovibles (par exemple, cassettes ou de CD).&lt;br/&gt;
: Si Non, les médias ne peuvent pas être supprimés (par exemple, une zone de sauvegarde intermédiaire sur un disque dur).&lt;br/&gt;

Pour voir toutes les possibilités du Storage Daemon je vous invite à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html la documentation de Bacula] à ce sujet.

=== Le Director ===

De tous les fichiers de configuration nécessaires à l'exécution de Bacula, le directeur est le plus compliqué, et celui que vous aurez besoin de modifier&lt;br/&gt;
le plus souvent. Afin de simplifier sa comprehension nous le séparons en plusieurs fichiers.&lt;br/&gt;
Pour inclure un fichier dans bacula-dir.conf, il suffit de mettre un @ devant le chemin du fichier à inclure.&lt;br/&gt;
 @/chemin_complet/fichier

Comme toujours vous y gagneriez à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html la documentation] du director.

'''/etc/bacula/bacula-dir.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director&lt;/span&gt;
:'''DIRport''' = 9101 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son port d'écoute&lt;/span&gt;
:'''QueryFile''' = &quot;/etc/bacula/query.sql&quot;
:'''WorkingDirectory''' = &quot;/var/lib/bacula&quot;
:'''PidDirectory''' = &quot;/var/run/bacula&quot;
:'''Maximum Concurrent Jobs''' = 4 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nombre maximum de sauvegardes simultanées&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot;
:'''Messages''' = Standard
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;consolerCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key &lt;/span&gt;
}

@/etc/bacula/configuration/bacula_dir_filset.conf &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# On ajoute les fichiers de configuration des sauvegardes&lt;/span&gt;&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_job.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_storage.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_pool.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_client.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_schedule.conf&lt;br/&gt;

'''Catalog''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le catalogue ou Bacula stocke toutes ses informations&lt;/span&gt;
:'''Name''' = MyCatalog &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son nom&lt;/span&gt;
:dbname = &quot;bacula&quot;; dbuser = &quot;bacula&quot;; dbpassword = &quot;mdp_base_SQL&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les accés à la base Sql&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Définitions des messages envoyés par Bacula&lt;/span&gt;
:'''Name''' = Standard &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Un nom pour l'identifier&lt;/span&gt;
:'''mailcommand''' = &quot;/usr/sbin/bsmtp -h localhost -f \&quot;\(Bacula\) \&lt;%r\&gt;\&quot; -s \&quot;Bacula daemon message\&quot; %r&quot;
:'''mail''' = root@localhost = all, !skipped
:'''console''' = all, !skipped, !saved
::append = &quot;/var/bacula/log&quot; = all, !skipped
}
&lt;/div&gt;

'''QueryFile''' = Cette directive est obligatoire et spécifie un répertoire et le fichier dans lequel le directeur peut trouver les états conservés SQL&lt;br/&gt;
pour les commandes de requête de la console.&lt;br/&gt;

==== Filset====
/etc/bacula/configuration/bacula_dir_filset.conf

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''FileSet''' {
:'''Name''' = &quot;DONNEES_FSET&quot;
:'''Include''' {
::'''Options''' {
:::compression = GZIP
:::signature = MD5
::}
::'''File''' = &quot;C:/DONNEES&quot;
:}

:'''Exclude''' {
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/yyy/zzz/yyy&quot;
:}
}

'''FileSet''' {
:'''Name''' = &quot;BACULA_FSET&quot;
:'''Include''' {
::'''Options''' {
:::signature = MD5
:::compression = GZIP
::}
::'''File''' = &quot;/etc/bacula/&quot;
}
&lt;/div&gt;

==== Job ====
/etc/bacula/configuration/bacula_dir_job.conf
(fais un JOBDEF)
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Job''' {
:'''Name''' = &quot;DONNEES&quot;
:'''Type''' = Backup
:'''Level''' = Incremental
:'''Client''' = SERVEURZZZ
:'''FileSet''' = &quot;DONNEES_FSET&quot;
:'''Schedule''' = &quot;Donnees&quot;
:'''Storage''' = Donnee_st
:'''Pool'''= Donnees_Pool
:'''Write Bootstrap''' = /var/lib/bacula/donnee.bsr
:'''Priority''' = 20
:'''Messages''' = Standard
}

'''Job''' {
:'''Name''' = &quot;BACULA&quot;
:'''Type''' = Backup
:'''Level''' = Full
:'''Client''' = SERVEURYYY
:'''FileSet''' = &quot;BACULA_FSET&quot;
:'''Schedule''' = &quot;Bacula&quot;
:'''Storage''' = Bacula_st
:'''Pool''' = Bacula_Pool
:'''Write Bootstrap''' = /var/lib/bacula/bacula.bsr
:'''Priority''' = 20
:'''Messages''' = Standard
}
&lt;/div&gt;

==== Storage ====
/etc/bacula/configuration/bacula_dir_storage.conf

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = Donnees_st
:'''Address''' = nom_dns_ou_ip_du_storagedaemon
:'''SDPort''' = 9103
:'''Password''' = &quot;mdp_du_storagedaemon&quot;
:'''Device''' = donnees_device
:'''Media Type''' = File
}&lt;br/&gt;
'''Storage:''' {
:'''Name''' = Bacula_st
:'''Address''' = nom_dns_ou_ip_du_storagedaemon
:'''SDPort''' = 9103
:'''Password''' = &quot;mdp_du_storagedaemon&quot;
:'''Device''' = bacula_device
:'''Media Type''' = File
}

&lt;/div&gt;

==== Pool ====
/etc/bacula/configuration/bacula_dir_pool.conf

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Pool'''{
:'''Name''' = Donnees_Pool
:'''Pool Type''' = Backup
:'''Recycle''' = yes
:'''AutoPrune''' = yes
:'''Maximum Volume Jobs''' = 1
:'''Label Format''' = &quot;${Level}_${Job}_${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}_${Hour:p/2/0/r}h${Minute:p/2/0/r}m&quot;
}&lt;br/&gt;
'''Pool'''{
:'''Name''' = Bacula_Pool
:'''Pool Type''' = Backup
:'''Recycle''' = yes
:'''AutoPrune''' = yes
:'''Maximum Volume Jobs'''= 1
:'''Label Format''' = &quot;${Level}_${Job}_${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}_${Hour:p/2/0/r}h${Minute:p/2/0/r}m&quot;
}
&lt;/div&gt;

==== Client ====
/etc/bacula/configuration/bacula_dir_client.conf

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Client''' {
:'''Name''' = Nom_du_poste_a_savegarder
:'''Address''' = nom_dns_ou_ip
:'''FDPort''' = 9102
:'''Catalog''' = MyCatalog
:'''Password''' = &quot;mdp_du_client&quot;
:'''File Retention''' = 180 days
:'''Job Retention''' = 180 days
:'''AutoPrune''' = yes
}
&lt;/div&gt;

==== Schedule ====
/etc/bacula/configuration/bacula_dir_schedule.conf

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Schedule''' {
:'''Name''' = &quot;Donnees&quot;
:'''Run''' = Full 1st sun at 23:05
:'''Run''' = Differential 2nd-5th sun at 23:05
:'''Run''' = Incremental mon-sat at 21:00
}&lt;br/&gt;
'''Schedule''' {
:'''Name''' = &quot;Bacula&quot;
:'''Run''' = Full 2st sat at 03:05
:'''Run''' = Differential 1nd-4th sun at 23:05
:'''Run''' = Incremental mon-fri at 20:00
}
&lt;/div&gt;

== Sécurisation ==
== Utilisation ==
=== En mode Console ===
=== En mode Graphique ===

== ANNEXE ==
=== Annexe A : Certificat SSL ===



[[Utilisateur:Haludeis|Haludeis]] ([[Discussion utilisateur:Haludeis|discussion]]) 5 mai 2012 à 11:17 (CEST)</text>
      <sha1>taj4a4l3c2fpg3uu85o5i0de3dpy37i</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4179</id>
      <parentid>4152</parentid>
      <timestamp>2012-05-05T14:42:07Z</timestamp>
      <contributor>
        <username>Haludeis</username>
        <id>30</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="28250">[[Catégorie:Sauvegardes]]
{{Ébauche|Bacula}}
{{sid}}

== Présentation ==
Ce document est basé sur une installation stable de Debian (en ce moment Squeeze).

Son but : sauvegarde, restauration et vérification en réseau 
(reste à faire)

== Installation ==
Bacula peut utiliser les bases de données SQLite, MySql et PostGreSQL.Il suffit d'installer les paquets correspondant à votre choix. 

Changer &quot;-mysql&quot; par &quot;-pgsql&quot; ou &quot;-sqlite3&quot; sur le paquet director et le fd.

ici je choisi MySql (MySql étant déja installé):

 # aptitude install bacula-director-mysql bacula-sd-mysql bacula

Accorder les droits à bacula sur la base de données (vérifié si pas obsolète):
 # mysql -u root -p
 &gt; grant all privileges on bacula.* to 'bacula'@'localhost' identified by 'bacula' ;

Créer le répertoire de sauvegarde et accorder les droits à bacula :
 # mkdir /home/sauvegarde/
 # chown -R bacula.bacula /home/sauvegarde
 # chmod -R 660 /home/sauvegarde (---&gt; à vérifier)

== Configuration ==
Bacula se compose des fichiers suivants :

Le fichier générale de configuration le Director :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-dir.conf&lt;/span&gt;
Le fichier Storage Daemon concernant le stockage des données :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-sd.conf&lt;/span&gt;
Celui du File Daemon permettant l'accès aux données installé sur le client à sauvegarder :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-fd.conf&lt;/span&gt;
Le fichier permettant la connexion entre la console et le directeur :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bconsole.conf&lt;/span&gt; 

Ces fichiers représentent les différents services de Bacula, ils peuvent se trouver sur des machines totalement différentes.

=== La Console ===

'''/etc/bacula/bconsole.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' { 
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''DIRport''' = 9101 &lt;span style=&quot;color:#bd0000;&quot;&gt;# le port d'écoute du director&lt;/span&gt;  
:'''address''' = nom_resolu_par_dns_ou_IP &lt;span style=&quot;color:#bd0000;&quot;&gt;# ip ou dns du director&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;# le mot de passe du director&lt;/span&gt; 
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt; 
} &lt;/div&gt;

'''address''' : Attention le nom DNS est obligatoire pour une connexion SSL penser à configurer le fichier /etc/hosts ou le serveur dns.

:: si vous n'utilisez pas de connexion sécurisée vous pouvez mettre une adresse ip directement.

La partie bleu permet la sécurisation des données entre le director et la console ca.crt doit être &lt;br/&gt;
le même partout les deux autres different pour chaque éléments de bacula voir l' annexe A sur les certificats SSL pour leur création.&lt;br/&gt;
Pour l'instant ne vous préoccupez pas de cette partie, une explication plus complète sera détaillé dans le chapitre sur la sécurisation.&lt;br/&gt;
Sachez juste que cela ce trouve là. &lt;br/&gt;

=== Le File Daemon ===
La ressource Client (ou File Daemon) définit le nom du client (tel qu'il est utilisé par le director) ainsi que le port&lt;br/&gt;
sur lequel le client est à l'écoute des connections du Director.&lt;br/&gt;

'''/etc/bacula/bacula-fd.conf''' 
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le mot de passe du director&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key &lt;/span&gt;
}

'''Director''' {
:'''Name''' = NOM_MON &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director restreint défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director_restreint&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;# son mot de passe&lt;/span&gt;
:'''Monitor''' = yes 
}

'''FileDaemon''' { 
:'''Name''' = NOM_FD &lt;span style=&quot;color:#bd0000;&quot;&gt;# le nom du File daemon&lt;/span&gt;
:'''FDport''' = 9102 &lt;span style=&quot;color:#bd0000;&quot;&gt;# son mot port d'écoute'&lt;/span&gt;
:'''WorkingDirectory''' = /var/lib/bacula
:'''Pid Directory''' = /var/run/bacula
:'''Maximum Concurrent Jobs''' = 8 &lt;span style=&quot;color:#bd0000;&quot;&gt;# le nombre maximum de sauvegardes simultanées&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key&lt;/span&gt; 
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Signatures = Yes&lt;/span&gt;           
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Encryption = Yes&lt;/span&gt;            
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/encrypt.pem&quot;&lt;/span&gt;    
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Master Key = &quot;/etc/bacula/keys/master.cert&quot;&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les messages sont envoyés au director&lt;/span&gt; 
:'''Name''' = Standard
:'''director''' = NOM_DIR = all, !skipped, !restored
}
&lt;/div&gt;
&lt;br/&gt; 
'''Working Directory''' : Cette directive est obligatoire et spécifie un répertoire dans lequel le File Daemon peut placer ses fichiers d'état.&lt;br/&gt;
: Ce répertoire ne doit être utilisé que par Bacula, mais peut être partagé par d'autres daemons Bacula les définitions des noms doivent être uniques pour chaque démon.&lt;br/&gt; 
: Sur les systèmes Win32, dans certaines circonstances, vous pourriez avoir besoin de spécifier une lettre de lecteur dans le chemin de répertoire de travail spécifié.
: Aussi, s'il vous plaît assurez-vous que ce répertoire est accessible en écriture par l'utilisateur SYSTEM au contraire la restauration peut échouer&lt;br/&gt;
: (le fichier d'amorçage (bootstrap) qui est transféré vers le File Daemon du directeur est temporairement placé dans ce répertoire avant d'être transmis au Storage Daemon).&lt;br/&gt;
'''Pid Directory''' Cette directive est obligatoire et spécifie un répertoire dans lequel le directeur peut placer ses fichiers d'identification de processus.&lt;br/&gt;
: Le fichier d'identification de processus est utilisé pour stopper Bacula et éviter à plusieurs instances de Bacula de fonctionner simultanément.&lt;br/&gt;
: Cet enregistrement est nécessaire. L'expansion du shell standard de l'annuaire se fait lorsque le fichier de configuration est lu de telle sorte que des valeurs&lt;br/&gt;
: telles que $HOME seront correctement substituées.&lt;br/&gt;
: Typiquement, sur les systèmes Linux, vous mettrez: /var/run.Si vous n'installez pas Bacula dans les répertoires système, vous pouvez utiliser le répertoire de travail&lt;br/&gt;
: tel que défini ci-dessus.&lt;br/&gt; 

Pour voir toutes les possibilités du File Daemon je vous invite à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Client_File_daemon_Configur.html la documentation de Bacula] à ce sujet.&lt;br/&gt;  
=== Le Storage Daemon ===
Le fichier de configuration du Storage Daemon a relativement peu de définitions de ressources. Toutefois, en raison de&lt;br/&gt;
la grande variation dans les médias de sauvegarde et des capacités du système, le démon de stockage doit être hautement configurable.&lt;br/&gt;

En conséquence, il y a un assez grand nombre de directives dans la définition des ressources de périphérique qui vous permet de définir.

toutes les caractéristiques de votre périphérique de stockage (normalement un lecteur de bande). Heureusement, avec des dispositifs 

de stockage modernes, les valeurs par défaut sont suffisantes, et très peu de directives sont réellement nécessaires.

'''/etc/bacula/bacula-sd.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = NOM_SD &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nom du Storage Daemon&lt;/span&gt;
:'''SDPort''' = 9103 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son port d'écoute&lt;/span&gt;
:''' WorkingDirectory''' = &quot;/var/lib/bacula&quot; 
:''' Pid Directory''' = &quot;/var/run/bacula&quot; 
:'''Maximum Concurrent Jobs''' = 8 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nombre maximum de sauvegardes simultanées par media&lt;/span&gt;
:'''SDAddress''' = nom_dns_ou_ip &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son addresse ip ou son nom dns&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# et son mot de passe&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;                                          
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_MON &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director restreint défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director_restreint&quot;
:'''Monitor''' = yes
}

'''Device''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# ou répertoire&lt;/span&gt; 
:'''Name''' = Nom_Device &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Un nom pour l'identifier&lt;/span&gt;
:'''Media Type''' = File &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son type : File, Tape, Fifo, DVD&lt;/span&gt;
:'''Archive Device''' = /home/sauvegarde/ &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son emplacement&lt;/span&gt;
:'''LabelMedia''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Lui donne un nom&lt;/span&gt;
:'''Random Access''' = Yes;
:'''AutomaticMount''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# monte le media en automatique&lt;/span&gt;
:'''RemovableMedia''' = no;
:'''AlwaysOpen''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Toujours accessible&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les messages sont envoyés au director&lt;/span&gt; 
:'''Name''' = Standard
:'''director''' = NOM_DIR = all
}
&lt;/div&gt;
&lt;br/&gt; 
'''Random Access''' : Si Oui, le périphérique est supposé être un moyen d'accès aléatoire qui prend en charge le lseek (Dvd,Usb...) &lt;br/&gt;
: Non pour les dispositifs d'accès non-aléatoires tels que des bandes.
'''RemovableMedia''' : Si oui, cet appareil prend en charge les supports amovibles (par exemple, cassettes ou de CD).&lt;br/&gt;
: Si Non, les médias ne peuvent pas être supprimés (par exemple, une zone de sauvegarde intermédiaire sur un disque dur).&lt;br/&gt;

Pour voir toutes les possibilités du Storage Daemon je vous invite à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html la documentation de Bacula] à ce sujet.

=== Le Director ===

De tous les fichiers de configuration nécessaires à l'exécution de Bacula, le directeur est le plus compliqué, et celui que vous aurez besoin de modifier&lt;br/&gt;
le plus souvent. Afin de simplifier sa comprehension nous le séparons en plusieurs fichiers.&lt;br/&gt;
Pour inclure un fichier dans bacula-dir.conf, il suffit de mettre un @ devant le chemin du fichier à inclure.&lt;br/&gt;
 @/chemin_complet/fichier

Comme toujours vous y gagneriez à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html la documentation] du director.

'''/etc/bacula/bacula-dir.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director&lt;/span&gt;
:'''DIRport''' = 9101 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son port d'écoute&lt;/span&gt;
:'''QueryFile''' = &quot;/etc/bacula/query.sql&quot;
:'''WorkingDirectory''' = &quot;/var/lib/bacula&quot;
:'''PidDirectory''' = &quot;/var/run/bacula&quot;
:'''Maximum Concurrent Jobs''' = 4 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nombre maximum de sauvegardes simultanées&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot;
:'''Messages''' = Standard
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;consolerCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key &lt;/span&gt;
}

@/etc/bacula/configuration/bacula_dir_filset.conf &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# On ajoute les fichiers de configuration des sauvegardes&lt;/span&gt;&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_job.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_storage.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_pool.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_client.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_schedule.conf&lt;br/&gt;

'''Catalog''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le catalogue ou Bacula stocke toutes ses informations&lt;/span&gt;
:'''Name''' = MyCatalog &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son nom&lt;/span&gt;
:dbname = &quot;bacula&quot;; dbuser = &quot;bacula&quot;; dbpassword = &quot;mdp_base_SQL&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les accés à la base Sql&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Définitions des messages envoyés par Bacula&lt;/span&gt;
:'''Name''' = Standard &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Un nom pour l'identifier&lt;/span&gt;
:'''mailcommand''' = &quot;/usr/sbin/bsmtp -h localhost -f \&quot;\(Bacula\) \&lt;%r\&gt;\&quot; -s \&quot;Bacula daemon message\&quot; %r&quot;
:'''mail''' = root@localhost = all, !skipped
:'''console''' = all, !skipped, !saved
::append = &quot;/var/bacula/log&quot; = all, !skipped
}
'''Director''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Director restreint utile pour les clients&lt;/span&gt;
:'''Name''' = DIR_MON
:'''Password''' = &quot;Mdp_du_director_restreint&quot;
:'''CommandACL''' = status, .status
}
&lt;/div&gt;

'''QueryFile''' = Cette directive est obligatoire et spécifie un répertoire et le fichier dans lequel le directeur peut trouver les états conservés SQL&lt;br/&gt;
pour les commandes de requête de la console.&lt;br/&gt;

==== Filset====

C'est dans ce fichier que l'on trouve les répertoires et fichiers à sauvegarder.&lt;br/&gt;

'''/etc/bacula/configuration/bacula_dir_filset.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''FileSet''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Fileset Windows&lt;/span&gt;
:'''Name''' = &quot;DONNEES_FSET&quot; 
:'''Enable VSS''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# activation ou non du Volume Shadow copy&lt;/span&gt;
:'''Include''' {
::'''Options''' {
:::compression = GZIP &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on compresse la sauvegarde possibilité de donner un niveau de compression ex: GZIP9&lt;/span&gt;
:::signature = MD5 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on vérifie les fichiers sauvegardés avec md5 ou sha1&lt;/span&gt;
:::accurate = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# si cette valeur est a &quot;no&quot; même les fichiers effacés seront restaurés&lt;/span&gt;
::}
::'''File''' = &quot;C:/DONNEES&quot;&lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le(s) répertoire(s) / fichier(s) à inclure&lt;/span&gt;
:}

:'''Exclude''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le(s) répertoire(s) / fichier(s) à exclure&lt;/span&gt;
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/yyy/zzz/yyy&quot;
:}
}

'''FileSet''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Fileset Linux&lt;/span&gt;
:'''Name''' = &quot;BACULA_FSET&quot;
:'''Enable VSS''' = no
:'''Include''' {
::'''Options''' {
:::signature = MD5
:::compression = GZIP9
:::accurate = yes
::}
::'''File''' = &quot;/etc/bacula/&quot;
}
&lt;/div&gt;
Vous trouverez le détail des ressources du fileset [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001870000000000000000 ici]

==== Storage ====

C'est ici que vous définissez le Storage Daemon ainsi que le device (répertoire) de sauvegarde à utiliser.

'''/etc/bacula/configuration/bacula_dir_storage.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = Donnees_st &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Vous lui donnez un nom&lt;/span&gt;
:'''Address''' = nom_dns_ou_ip_du_storagedaemon &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# L' adresse du Storage Daemon défini plus haut&lt;/span&gt;
:'''SDPort''' = 9103
:'''Password''' = &quot;mdp_du_storagedaemon&quot;
:'''Device''' = donnees_device &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# un des devices défini dans le fichier du Storage Daemon&lt;/span&gt;
}&lt;br/&gt;

&lt;/div&gt;
Vous trouverez le détail des ressources du storage [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018140000000000000000 ici]

==== Pool ====

Ce fichier décrit la façon dont sont gérés les volumes de sauvegarde.

'''/etc/bacula/configuration/bacula_dir_pool.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Pool'''{
:'''Name''' = Donnees_Pool
:'''Pool Type''' = Backup &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son type pour l'instant seul Backup est implémenté d'autres viendront &quot;Archive,Cloned,Migration,Copy,Save&quot;&lt;/span&gt;
:'''Recycle''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on peut réutiliser les anciens volumes purgés&lt;/span&gt;
:'''AutoPrune''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# On laisse Bacula gérer les volumes&lt;/span&gt;
:'''File Retention''' = 180 days &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# durée de rétention des fichiers&lt;/span&gt;
:'''Job Retention''' = 180 days &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# durée de rétention des jobs&lt;/span&gt;
:'''Maximum Volume Jobs''' = 1 
:'''Label Format''' = &quot;${Level}_${Job}_${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}_${Hour:p/2/0/r}h${Minute:p/2/0/r}m&quot;
}&lt;br/&gt;
&lt;/div&gt;

'''Maximum Volume Jobs''' = Cette directive n'est pas obligatoire mais en fixant cette valeur à 1 on s'assure&lt;br/&gt;
de n'avoir qu'un seul fichier par sauvegarde. &lt;br/&gt;
'''Label Format''' = permet de nommer son volume de sauvegarde &lt;br/&gt;

Vous trouverez le détail des ressources pool [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018150000000000000000 ici]

==== Client ====

Dans ce fichier vous retrouvez tous vos clients à sauvegarder.

'''/etc/bacula/configuration/bacula_dir_client.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Client''' {
:'''Name''' = Nom_du_poste_a_savegarder
:'''Address''' = nom_dns_ou_ip
:'''FDPort''' = 9102
:'''Catalog''' = MyCatalog
:'''Password''' = &quot;mdp_du_client&quot;
}
&lt;/div&gt;
Vous trouverez le détail des ressources du client [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018130000000000000000 ici]

==== Schedule ====

Dans celui-ci vous définissez les heures et les niveaux de vos sauvegardes automatiques.

'''/etc/bacula/configuration/bacula_dir_schedule.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Schedule''' {
:'''Name''' = &quot;Donnees&quot;
:'''Run''' = Full 1st sun at 23:05 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# complète le 1er dimanche du mois à 23:05&lt;/span&gt;
:'''Run''' = Differential 2nd-5th sun at 23:05 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Différentiel le 2em et 5em dimanche du mois à 23:05&lt;/span&gt;
:'''Run''' = Incremental mon-sat at 21:00 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Incrémentiel su lundi au samedi à 21:00&lt;/span&gt;
}&lt;br/&gt;
&lt;/div&gt;
Vous trouverez le détail des ressources schedule [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001850000000000000000 ici]

==== Job ====

Et enfin dans ce fichier ci vous assemblez tous vos éléments.

'''/etc/bacula/configuration/bacula_dir_job.conf'''

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Job''' {
:'''Name''' = &quot;DONNEES&quot;
:'''Type''' = Backup
:'''Level''' = Incremental &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le niveau de la sauvegarde&lt;/span&gt;
:'''Client''' = SERVEURZZZ
:'''FileSet''' = &quot;DONNEES_FSET&quot;
:'''Schedule''' = &quot;Donnees&quot;
:'''Storage''' = Donnee_st
:'''Pool'''= Donnees_Pool
:'''Write Bootstrap''' = /var/lib/bacula/donnee.bsr &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# fichier contenant l'ensemble des données de la sauvegarde&lt;/span&gt;
:'''Priority''' = 20 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# la priorité du job de sauvegarde : plus le nombre est petit plus la priorité est haute&lt;/span&gt;
:'''Messages''' = Standard 
}
&lt;/div&gt;

Si dans vos différents jobs vous avez les mêmes données (Fileset,Schedule...) vous pouvez créer un '''JobDefs'''.  

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''JobDefs''' {
:'''Name''' = &quot;JOBCOMMUN&quot;
:'''Type''' = Backup
:'''Level''' = Full
:'''FileSet''' = &quot;DONNEES_FSET&quot;
:'''Schedule''' = &quot;Donnees&quot;
:'''Pool''' = Donnees_Pool
:'''Storage''' = Donnees-st
:'''Messages''' = Standard
}

'''Job''' {
:'''Name''' = &quot;DONNEES&quot;
:'''JobDefs''' = &quot;JOBCOMMUN&quot;
:'''Client''' = SERVEURZZZ
:'''Write Bootstrap''' = /var/lib/bacula/donnee.bsr 
:'''Priority''' = 10 
:'''Messages''' = Standard 
}

&lt;/div&gt;
Vous trouverez le détail des ressources job [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001830000000000000000 ici]

== Sécurisation ==

Tout au long du chapitre sur la configuration certaines parties en bleue n'ont pas été expliquées, elles concernaient essentiellement&lt;br/&gt;
des commandes liées aux connexions SSL et aux Chiffrage des données.&lt;br/&gt;

=== Les connexions SSL ===

Afin de sécuriser un peu notre système de sauvegarde nous pouvons mettre en place des connexions SSL entre les différents services de Bacula.&lt;br/&gt;
Dans un premier temps nous allons créer notre certificat d'autorité de certification, c'est lui qui validera (signera) les autres.

Si vous créez plusieurs certificats le conseil que je vous donne c'est d'éditer le fichier '''/etc/ssl/openssl.conf''' et &lt;br/&gt;
dans la section :&quot;req_distinguished_name&quot; de mettre vos paramêtres personalisés.

'''Exemple:'''

 countryName                     = Country Name (2 letter code)
 countryName_default             = &lt;span style=&quot;color:#bd0000;&quot;&gt;FR&lt;/span&gt;
 countryName_min                 = 2
 countryName_max                 = 2
 
 stateOrProvinceName             = State or Province Name (full name)
 stateOrProvinceName_default     = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre département&lt;/span&gt;
 
 localityName                    = Locality Name (eg, city)
 localityName_default            = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre ville&lt;/span&gt;
 
 0.organizationName              = Organization Name (eg, company)
 0.organizationName_default      = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre société&lt;/span&gt;
 
 # we can do this but it is not needed normally :-)
 #1.organizationName             = Second Organization Name (eg, company)
 #1.organizationName_default     = World Wide Web Pty Ltd
 
 organizationalUnitName          = Organizational Unit Name (eg, section)
 organizationalUnitName_default  = &lt;span style=&quot;color:#bd0000;&quot;&gt;Interne&lt;/span&gt;
 
 commonName                      = Common Name (eg, YOUR name)
 commonName_max                  = 64
 emailAddress                    = Email Address
 emailAddress_default            = &lt;span style=&quot;color:#bd0000;&quot;&gt;Une adresse mail&lt;/span&gt;
 emailAddress_max                = 64

Commencez par créer le répertoire /etc/bacula/'''keys'''/ puis entrez y.

Création certificat d'autorité de certification :

 #openssl genrsa -aes256 -out ca.key 2048 &lt;span style=&quot;color:#bd0000;&quot;&gt;# Génére une clé RSA 2048 bits et son chiffrement en AES 256 un mot de passe vous sera demandé.&lt;/span&gt; 
 #openssl req -new -key ca.key -x509 -out ca.crt &lt;span style=&quot;color:#bd0000;&quot;&gt;# Génére le certificat publique de la clé.&lt;/span&gt; 

Ensuite il faut créer une clé et un certificat par services que nous voulons sécuriser.
Par exemple pour le director :

 #openssl genrsa -out director.key 2048
 #openssl req -new -key director.key &gt; director.csr
 #openssl x509 -req -in director.csr -out director.crt -CA ca.crt -CAkey ca.key -CAcreateserial -CAserial ca.srl

Il est obligatoire de mettre le même nom dans le Common Name que le nom resolu par DNS du service.&lt;br/&gt;
si l adresse dns du director est &quot;director.local&quot; alors le Common Name est &quot;director.local&quot; et n'oubliez pas de configurer&lt;br/&gt;
le fichier '''/etc/hosts''' ou le serveur DNS.&lt;br/&gt;
L'option CAcreateserial n'est nécessaire que la première fois, ensuite pour la console :

 #openssl genrsa -out console.key 2048
 #openssl req -new -key console.key &gt; console.csr
 #openssl x509 -req -in console.csr -out console.crt -CA ca.crt -CAkey ca.key -CAserial ca.srl

Maintenant vous pouvez continuer seul pour les autres services.

Revenons à notre fichier '''/etc/bacula/bconsole.conf''' et plus précisement à ces lignes :

::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Active une connexion SSL&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Oblige une connexion SSL&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers votre certificat publique du '''ca''' généré plus haut&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers votre certificat publique de la '''console''' généré plus haut&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers la clé privé de la '''console''' généré plus haut&lt;/span&gt;

Dans le fichier '''/etc/bacula/bacula-dir.conf''' :
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;consolerCN&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Ici on n'autorise que la console en donnant le Common Name du certificat de la console&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key &lt;/span&gt;

Vous voilà avec une connexion sécurisé entre votre console et le director.

(en cours...)

=== Le chiffrage des sauvegardes ===

== Utilisation ==
=== En mode Console ===
=== En mode Graphique ===

== ANNEXE ==
=== Annexe A : Certificat SSL ===



[[Utilisateur:Haludeis|Haludeis]] ([[Discussion utilisateur:Haludeis|discussion]]) 5 mai 2012 à 16:42 (CEST)</text>
      <sha1>bkyucy4szr8dylbqbfwjv9q5pr40e50</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4186</id>
      <parentid>4179</parentid>
      <timestamp>2012-05-05T15:37:01Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* La Console */</comment>
      <text xml:space="preserve" bytes="28252">[[Catégorie:Sauvegardes]]
{{Ébauche|Bacula}}
{{sid}}

== Présentation ==
Ce document est basé sur une installation stable de Debian (en ce moment Squeeze).

Son but : sauvegarde, restauration et vérification en réseau 
(reste à faire)

== Installation ==
Bacula peut utiliser les bases de données SQLite, MySql et PostGreSQL.Il suffit d'installer les paquets correspondant à votre choix. 

Changer &quot;-mysql&quot; par &quot;-pgsql&quot; ou &quot;-sqlite3&quot; sur le paquet director et le fd.

ici je choisi MySql (MySql étant déja installé):

 # aptitude install bacula-director-mysql bacula-sd-mysql bacula

Accorder les droits à bacula sur la base de données (vérifié si pas obsolète):
 # mysql -u root -p
 &gt; grant all privileges on bacula.* to 'bacula'@'localhost' identified by 'bacula' ;

Créer le répertoire de sauvegarde et accorder les droits à bacula :
 # mkdir /home/sauvegarde/
 # chown -R bacula.bacula /home/sauvegarde
 # chmod -R 660 /home/sauvegarde (---&gt; à vérifier)

== Configuration ==
Bacula se compose des fichiers suivants :

Le fichier générale de configuration le Director :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-dir.conf&lt;/span&gt;
Le fichier Storage Daemon concernant le stockage des données :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-sd.conf&lt;/span&gt;
Celui du File Daemon permettant l'accès aux données installé sur le client à sauvegarder :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-fd.conf&lt;/span&gt;
Le fichier permettant la connexion entre la console et le directeur :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bconsole.conf&lt;/span&gt; 

Ces fichiers représentent les différents services de Bacula, ils peuvent se trouver sur des machines totalement différentes.

=== La Console ===

'''/etc/bacula/bconsole.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' { 
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''DIRport''' = 9101 &lt;span style=&quot;color:#bd0000;&quot;&gt;# le port d'écoute du director&lt;/span&gt;  
:'''address''' = nom_resolu_par_dns_ou_IP &lt;span style=&quot;color:#bd0000;&quot;&gt;# ip ou dns du director&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;# le mot de passe du director&lt;/span&gt; 
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt; 
} &lt;/div&gt;

'''address''' : Attention le nom DNS est obligatoire pour une connexion SSL penser à configurer le fichier /etc/hosts ou le serveur dns.

:: si vous n'utilisez pas de connexion sécurisée vous pouvez mettre une adresse ip directement.

La partie bleu permet la sécurisation des données entre le director et la console ca.crt doit être &lt;br/&gt;
le même partout les deux autres diffèrent pour chaque éléments de bacula voir l' annexe A sur les certificats SSL pour leur création.&lt;br/&gt;
Pour l'instant ne vous préoccupez pas de cette partie, une explication plus complète sera détaillée dans le chapitre sur la sécurisation.&lt;br/&gt;
Sachez juste que cela ce trouve là. &lt;br/&gt;

=== Le File Daemon ===
La ressource Client (ou File Daemon) définit le nom du client (tel qu'il est utilisé par le director) ainsi que le port&lt;br/&gt;
sur lequel le client est à l'écoute des connections du Director.&lt;br/&gt;

'''/etc/bacula/bacula-fd.conf''' 
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le mot de passe du director&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key &lt;/span&gt;
}

'''Director''' {
:'''Name''' = NOM_MON &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director restreint défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director_restreint&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;# son mot de passe&lt;/span&gt;
:'''Monitor''' = yes 
}

'''FileDaemon''' { 
:'''Name''' = NOM_FD &lt;span style=&quot;color:#bd0000;&quot;&gt;# le nom du File daemon&lt;/span&gt;
:'''FDport''' = 9102 &lt;span style=&quot;color:#bd0000;&quot;&gt;# son mot port d'écoute'&lt;/span&gt;
:'''WorkingDirectory''' = /var/lib/bacula
:'''Pid Directory''' = /var/run/bacula
:'''Maximum Concurrent Jobs''' = 8 &lt;span style=&quot;color:#bd0000;&quot;&gt;# le nombre maximum de sauvegardes simultanées&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key&lt;/span&gt; 
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Signatures = Yes&lt;/span&gt;           
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Encryption = Yes&lt;/span&gt;            
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/encrypt.pem&quot;&lt;/span&gt;    
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Master Key = &quot;/etc/bacula/keys/master.cert&quot;&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les messages sont envoyés au director&lt;/span&gt; 
:'''Name''' = Standard
:'''director''' = NOM_DIR = all, !skipped, !restored
}
&lt;/div&gt;
&lt;br/&gt; 
'''Working Directory''' : Cette directive est obligatoire et spécifie un répertoire dans lequel le File Daemon peut placer ses fichiers d'état.&lt;br/&gt;
: Ce répertoire ne doit être utilisé que par Bacula, mais peut être partagé par d'autres daemons Bacula les définitions des noms doivent être uniques pour chaque démon.&lt;br/&gt; 
: Sur les systèmes Win32, dans certaines circonstances, vous pourriez avoir besoin de spécifier une lettre de lecteur dans le chemin de répertoire de travail spécifié.
: Aussi, s'il vous plaît assurez-vous que ce répertoire est accessible en écriture par l'utilisateur SYSTEM au contraire la restauration peut échouer&lt;br/&gt;
: (le fichier d'amorçage (bootstrap) qui est transféré vers le File Daemon du directeur est temporairement placé dans ce répertoire avant d'être transmis au Storage Daemon).&lt;br/&gt;
'''Pid Directory''' Cette directive est obligatoire et spécifie un répertoire dans lequel le directeur peut placer ses fichiers d'identification de processus.&lt;br/&gt;
: Le fichier d'identification de processus est utilisé pour stopper Bacula et éviter à plusieurs instances de Bacula de fonctionner simultanément.&lt;br/&gt;
: Cet enregistrement est nécessaire. L'expansion du shell standard de l'annuaire se fait lorsque le fichier de configuration est lu de telle sorte que des valeurs&lt;br/&gt;
: telles que $HOME seront correctement substituées.&lt;br/&gt;
: Typiquement, sur les systèmes Linux, vous mettrez: /var/run.Si vous n'installez pas Bacula dans les répertoires système, vous pouvez utiliser le répertoire de travail&lt;br/&gt;
: tel que défini ci-dessus.&lt;br/&gt; 

Pour voir toutes les possibilités du File Daemon je vous invite à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Client_File_daemon_Configur.html la documentation de Bacula] à ce sujet.&lt;br/&gt;  
=== Le Storage Daemon ===
Le fichier de configuration du Storage Daemon a relativement peu de définitions de ressources. Toutefois, en raison de&lt;br/&gt;
la grande variation dans les médias de sauvegarde et des capacités du système, le démon de stockage doit être hautement configurable.&lt;br/&gt;

En conséquence, il y a un assez grand nombre de directives dans la définition des ressources de périphérique qui vous permet de définir.

toutes les caractéristiques de votre périphérique de stockage (normalement un lecteur de bande). Heureusement, avec des dispositifs 

de stockage modernes, les valeurs par défaut sont suffisantes, et très peu de directives sont réellement nécessaires.

'''/etc/bacula/bacula-sd.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = NOM_SD &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nom du Storage Daemon&lt;/span&gt;
:'''SDPort''' = 9103 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son port d'écoute&lt;/span&gt;
:''' WorkingDirectory''' = &quot;/var/lib/bacula&quot; 
:''' Pid Directory''' = &quot;/var/run/bacula&quot; 
:'''Maximum Concurrent Jobs''' = 8 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nombre maximum de sauvegardes simultanées par media&lt;/span&gt;
:'''SDAddress''' = nom_dns_ou_ip &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son addresse ip ou son nom dns&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# et son mot de passe&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;                                          
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_MON &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director restreint défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director_restreint&quot;
:'''Monitor''' = yes
}

'''Device''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# ou répertoire&lt;/span&gt; 
:'''Name''' = Nom_Device &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Un nom pour l'identifier&lt;/span&gt;
:'''Media Type''' = File &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son type : File, Tape, Fifo, DVD&lt;/span&gt;
:'''Archive Device''' = /home/sauvegarde/ &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son emplacement&lt;/span&gt;
:'''LabelMedia''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Lui donne un nom&lt;/span&gt;
:'''Random Access''' = Yes;
:'''AutomaticMount''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# monte le media en automatique&lt;/span&gt;
:'''RemovableMedia''' = no;
:'''AlwaysOpen''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Toujours accessible&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les messages sont envoyés au director&lt;/span&gt; 
:'''Name''' = Standard
:'''director''' = NOM_DIR = all
}
&lt;/div&gt;
&lt;br/&gt; 
'''Random Access''' : Si Oui, le périphérique est supposé être un moyen d'accès aléatoire qui prend en charge le lseek (Dvd,Usb...) &lt;br/&gt;
: Non pour les dispositifs d'accès non-aléatoires tels que des bandes.
'''RemovableMedia''' : Si oui, cet appareil prend en charge les supports amovibles (par exemple, cassettes ou de CD).&lt;br/&gt;
: Si Non, les médias ne peuvent pas être supprimés (par exemple, une zone de sauvegarde intermédiaire sur un disque dur).&lt;br/&gt;

Pour voir toutes les possibilités du Storage Daemon je vous invite à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html la documentation de Bacula] à ce sujet.

=== Le Director ===

De tous les fichiers de configuration nécessaires à l'exécution de Bacula, le directeur est le plus compliqué, et celui que vous aurez besoin de modifier&lt;br/&gt;
le plus souvent. Afin de simplifier sa comprehension nous le séparons en plusieurs fichiers.&lt;br/&gt;
Pour inclure un fichier dans bacula-dir.conf, il suffit de mettre un @ devant le chemin du fichier à inclure.&lt;br/&gt;
 @/chemin_complet/fichier

Comme toujours vous y gagneriez à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html la documentation] du director.

'''/etc/bacula/bacula-dir.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director&lt;/span&gt;
:'''DIRport''' = 9101 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son port d'écoute&lt;/span&gt;
:'''QueryFile''' = &quot;/etc/bacula/query.sql&quot;
:'''WorkingDirectory''' = &quot;/var/lib/bacula&quot;
:'''PidDirectory''' = &quot;/var/run/bacula&quot;
:'''Maximum Concurrent Jobs''' = 4 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nombre maximum de sauvegardes simultanées&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot;
:'''Messages''' = Standard
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;consolerCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key &lt;/span&gt;
}

@/etc/bacula/configuration/bacula_dir_filset.conf &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# On ajoute les fichiers de configuration des sauvegardes&lt;/span&gt;&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_job.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_storage.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_pool.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_client.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_schedule.conf&lt;br/&gt;

'''Catalog''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le catalogue ou Bacula stocke toutes ses informations&lt;/span&gt;
:'''Name''' = MyCatalog &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son nom&lt;/span&gt;
:dbname = &quot;bacula&quot;; dbuser = &quot;bacula&quot;; dbpassword = &quot;mdp_base_SQL&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les accés à la base Sql&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Définitions des messages envoyés par Bacula&lt;/span&gt;
:'''Name''' = Standard &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Un nom pour l'identifier&lt;/span&gt;
:'''mailcommand''' = &quot;/usr/sbin/bsmtp -h localhost -f \&quot;\(Bacula\) \&lt;%r\&gt;\&quot; -s \&quot;Bacula daemon message\&quot; %r&quot;
:'''mail''' = root@localhost = all, !skipped
:'''console''' = all, !skipped, !saved
::append = &quot;/var/bacula/log&quot; = all, !skipped
}
'''Director''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Director restreint utile pour les clients&lt;/span&gt;
:'''Name''' = DIR_MON
:'''Password''' = &quot;Mdp_du_director_restreint&quot;
:'''CommandACL''' = status, .status
}
&lt;/div&gt;

'''QueryFile''' = Cette directive est obligatoire et spécifie un répertoire et le fichier dans lequel le directeur peut trouver les états conservés SQL&lt;br/&gt;
pour les commandes de requête de la console.&lt;br/&gt;

==== Filset====

C'est dans ce fichier que l'on trouve les répertoires et fichiers à sauvegarder.&lt;br/&gt;

'''/etc/bacula/configuration/bacula_dir_filset.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''FileSet''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Fileset Windows&lt;/span&gt;
:'''Name''' = &quot;DONNEES_FSET&quot; 
:'''Enable VSS''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# activation ou non du Volume Shadow copy&lt;/span&gt;
:'''Include''' {
::'''Options''' {
:::compression = GZIP &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on compresse la sauvegarde possibilité de donner un niveau de compression ex: GZIP9&lt;/span&gt;
:::signature = MD5 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on vérifie les fichiers sauvegardés avec md5 ou sha1&lt;/span&gt;
:::accurate = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# si cette valeur est a &quot;no&quot; même les fichiers effacés seront restaurés&lt;/span&gt;
::}
::'''File''' = &quot;C:/DONNEES&quot;&lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le(s) répertoire(s) / fichier(s) à inclure&lt;/span&gt;
:}

:'''Exclude''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le(s) répertoire(s) / fichier(s) à exclure&lt;/span&gt;
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/yyy/zzz/yyy&quot;
:}
}

'''FileSet''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Fileset Linux&lt;/span&gt;
:'''Name''' = &quot;BACULA_FSET&quot;
:'''Enable VSS''' = no
:'''Include''' {
::'''Options''' {
:::signature = MD5
:::compression = GZIP9
:::accurate = yes
::}
::'''File''' = &quot;/etc/bacula/&quot;
}
&lt;/div&gt;
Vous trouverez le détail des ressources du fileset [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001870000000000000000 ici]

==== Storage ====

C'est ici que vous définissez le Storage Daemon ainsi que le device (répertoire) de sauvegarde à utiliser.

'''/etc/bacula/configuration/bacula_dir_storage.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = Donnees_st &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Vous lui donnez un nom&lt;/span&gt;
:'''Address''' = nom_dns_ou_ip_du_storagedaemon &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# L' adresse du Storage Daemon défini plus haut&lt;/span&gt;
:'''SDPort''' = 9103
:'''Password''' = &quot;mdp_du_storagedaemon&quot;
:'''Device''' = donnees_device &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# un des devices défini dans le fichier du Storage Daemon&lt;/span&gt;
}&lt;br/&gt;

&lt;/div&gt;
Vous trouverez le détail des ressources du storage [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018140000000000000000 ici]

==== Pool ====

Ce fichier décrit la façon dont sont gérés les volumes de sauvegarde.

'''/etc/bacula/configuration/bacula_dir_pool.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Pool'''{
:'''Name''' = Donnees_Pool
:'''Pool Type''' = Backup &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son type pour l'instant seul Backup est implémenté d'autres viendront &quot;Archive,Cloned,Migration,Copy,Save&quot;&lt;/span&gt;
:'''Recycle''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on peut réutiliser les anciens volumes purgés&lt;/span&gt;
:'''AutoPrune''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# On laisse Bacula gérer les volumes&lt;/span&gt;
:'''File Retention''' = 180 days &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# durée de rétention des fichiers&lt;/span&gt;
:'''Job Retention''' = 180 days &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# durée de rétention des jobs&lt;/span&gt;
:'''Maximum Volume Jobs''' = 1 
:'''Label Format''' = &quot;${Level}_${Job}_${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}_${Hour:p/2/0/r}h${Minute:p/2/0/r}m&quot;
}&lt;br/&gt;
&lt;/div&gt;

'''Maximum Volume Jobs''' = Cette directive n'est pas obligatoire mais en fixant cette valeur à 1 on s'assure&lt;br/&gt;
de n'avoir qu'un seul fichier par sauvegarde. &lt;br/&gt;
'''Label Format''' = permet de nommer son volume de sauvegarde &lt;br/&gt;

Vous trouverez le détail des ressources pool [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018150000000000000000 ici]

==== Client ====

Dans ce fichier vous retrouvez tous vos clients à sauvegarder.

'''/etc/bacula/configuration/bacula_dir_client.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Client''' {
:'''Name''' = Nom_du_poste_a_savegarder
:'''Address''' = nom_dns_ou_ip
:'''FDPort''' = 9102
:'''Catalog''' = MyCatalog
:'''Password''' = &quot;mdp_du_client&quot;
}
&lt;/div&gt;
Vous trouverez le détail des ressources du client [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018130000000000000000 ici]

==== Schedule ====

Dans celui-ci vous définissez les heures et les niveaux de vos sauvegardes automatiques.

'''/etc/bacula/configuration/bacula_dir_schedule.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Schedule''' {
:'''Name''' = &quot;Donnees&quot;
:'''Run''' = Full 1st sun at 23:05 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# complète le 1er dimanche du mois à 23:05&lt;/span&gt;
:'''Run''' = Differential 2nd-5th sun at 23:05 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Différentiel le 2em et 5em dimanche du mois à 23:05&lt;/span&gt;
:'''Run''' = Incremental mon-sat at 21:00 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Incrémentiel su lundi au samedi à 21:00&lt;/span&gt;
}&lt;br/&gt;
&lt;/div&gt;
Vous trouverez le détail des ressources schedule [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001850000000000000000 ici]

==== Job ====

Et enfin dans ce fichier ci vous assemblez tous vos éléments.

'''/etc/bacula/configuration/bacula_dir_job.conf'''

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Job''' {
:'''Name''' = &quot;DONNEES&quot;
:'''Type''' = Backup
:'''Level''' = Incremental &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le niveau de la sauvegarde&lt;/span&gt;
:'''Client''' = SERVEURZZZ
:'''FileSet''' = &quot;DONNEES_FSET&quot;
:'''Schedule''' = &quot;Donnees&quot;
:'''Storage''' = Donnee_st
:'''Pool'''= Donnees_Pool
:'''Write Bootstrap''' = /var/lib/bacula/donnee.bsr &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# fichier contenant l'ensemble des données de la sauvegarde&lt;/span&gt;
:'''Priority''' = 20 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# la priorité du job de sauvegarde : plus le nombre est petit plus la priorité est haute&lt;/span&gt;
:'''Messages''' = Standard 
}
&lt;/div&gt;

Si dans vos différents jobs vous avez les mêmes données (Fileset,Schedule...) vous pouvez créer un '''JobDefs'''.  

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''JobDefs''' {
:'''Name''' = &quot;JOBCOMMUN&quot;
:'''Type''' = Backup
:'''Level''' = Full
:'''FileSet''' = &quot;DONNEES_FSET&quot;
:'''Schedule''' = &quot;Donnees&quot;
:'''Pool''' = Donnees_Pool
:'''Storage''' = Donnees-st
:'''Messages''' = Standard
}

'''Job''' {
:'''Name''' = &quot;DONNEES&quot;
:'''JobDefs''' = &quot;JOBCOMMUN&quot;
:'''Client''' = SERVEURZZZ
:'''Write Bootstrap''' = /var/lib/bacula/donnee.bsr 
:'''Priority''' = 10 
:'''Messages''' = Standard 
}

&lt;/div&gt;
Vous trouverez le détail des ressources job [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001830000000000000000 ici]

== Sécurisation ==

Tout au long du chapitre sur la configuration certaines parties en bleue n'ont pas été expliquées, elles concernaient essentiellement&lt;br/&gt;
des commandes liées aux connexions SSL et aux Chiffrage des données.&lt;br/&gt;

=== Les connexions SSL ===

Afin de sécuriser un peu notre système de sauvegarde nous pouvons mettre en place des connexions SSL entre les différents services de Bacula.&lt;br/&gt;
Dans un premier temps nous allons créer notre certificat d'autorité de certification, c'est lui qui validera (signera) les autres.

Si vous créez plusieurs certificats le conseil que je vous donne c'est d'éditer le fichier '''/etc/ssl/openssl.conf''' et &lt;br/&gt;
dans la section :&quot;req_distinguished_name&quot; de mettre vos paramêtres personalisés.

'''Exemple:'''

 countryName                     = Country Name (2 letter code)
 countryName_default             = &lt;span style=&quot;color:#bd0000;&quot;&gt;FR&lt;/span&gt;
 countryName_min                 = 2
 countryName_max                 = 2
 
 stateOrProvinceName             = State or Province Name (full name)
 stateOrProvinceName_default     = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre département&lt;/span&gt;
 
 localityName                    = Locality Name (eg, city)
 localityName_default            = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre ville&lt;/span&gt;
 
 0.organizationName              = Organization Name (eg, company)
 0.organizationName_default      = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre société&lt;/span&gt;
 
 # we can do this but it is not needed normally :-)
 #1.organizationName             = Second Organization Name (eg, company)
 #1.organizationName_default     = World Wide Web Pty Ltd
 
 organizationalUnitName          = Organizational Unit Name (eg, section)
 organizationalUnitName_default  = &lt;span style=&quot;color:#bd0000;&quot;&gt;Interne&lt;/span&gt;
 
 commonName                      = Common Name (eg, YOUR name)
 commonName_max                  = 64
 emailAddress                    = Email Address
 emailAddress_default            = &lt;span style=&quot;color:#bd0000;&quot;&gt;Une adresse mail&lt;/span&gt;
 emailAddress_max                = 64

Commencez par créer le répertoire /etc/bacula/'''keys'''/ puis entrez y.

Création certificat d'autorité de certification :

 #openssl genrsa -aes256 -out ca.key 2048 &lt;span style=&quot;color:#bd0000;&quot;&gt;# Génére une clé RSA 2048 bits et son chiffrement en AES 256 un mot de passe vous sera demandé.&lt;/span&gt; 
 #openssl req -new -key ca.key -x509 -out ca.crt &lt;span style=&quot;color:#bd0000;&quot;&gt;# Génére le certificat publique de la clé.&lt;/span&gt; 

Ensuite il faut créer une clé et un certificat par services que nous voulons sécuriser.
Par exemple pour le director :

 #openssl genrsa -out director.key 2048
 #openssl req -new -key director.key &gt; director.csr
 #openssl x509 -req -in director.csr -out director.crt -CA ca.crt -CAkey ca.key -CAcreateserial -CAserial ca.srl

Il est obligatoire de mettre le même nom dans le Common Name que le nom resolu par DNS du service.&lt;br/&gt;
si l adresse dns du director est &quot;director.local&quot; alors le Common Name est &quot;director.local&quot; et n'oubliez pas de configurer&lt;br/&gt;
le fichier '''/etc/hosts''' ou le serveur DNS.&lt;br/&gt;
L'option CAcreateserial n'est nécessaire que la première fois, ensuite pour la console :

 #openssl genrsa -out console.key 2048
 #openssl req -new -key console.key &gt; console.csr
 #openssl x509 -req -in console.csr -out console.crt -CA ca.crt -CAkey ca.key -CAserial ca.srl

Maintenant vous pouvez continuer seul pour les autres services.

Revenons à notre fichier '''/etc/bacula/bconsole.conf''' et plus précisement à ces lignes :

::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Active une connexion SSL&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Oblige une connexion SSL&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers votre certificat publique du '''ca''' généré plus haut&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers votre certificat publique de la '''console''' généré plus haut&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers la clé privé de la '''console''' généré plus haut&lt;/span&gt;

Dans le fichier '''/etc/bacula/bacula-dir.conf''' :
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;consolerCN&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Ici on n'autorise que la console en donnant le Common Name du certificat de la console&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key &lt;/span&gt;

Vous voilà avec une connexion sécurisé entre votre console et le director.

(en cours...)

=== Le chiffrage des sauvegardes ===

== Utilisation ==
=== En mode Console ===
=== En mode Graphique ===

== ANNEXE ==
=== Annexe A : Certificat SSL ===



[[Utilisateur:Haludeis|Haludeis]] ([[Discussion utilisateur:Haludeis|discussion]]) 5 mai 2012 à 16:42 (CEST)</text>
      <sha1>6qay88qlvixyqar02ejbbdebdn5317x</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4187</id>
      <parentid>4186</parentid>
      <timestamp>2012-05-05T15:37:20Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Présentation */</comment>
      <text xml:space="preserve" bytes="28257">[[Catégorie:Sauvegardes]]
{{Ébauche|Bacula}}
{{sid}}

== Présentation ==
Ce document est basé sur une installation stable de Debian (en ce moment Squeeze).

Son but : sauvegarde, restauration et vérification en réseau &lt;br/&gt;
(reste à faire)

== Installation ==
Bacula peut utiliser les bases de données SQLite, MySql et PostGreSQL.Il suffit d'installer les paquets correspondant à votre choix. 

Changer &quot;-mysql&quot; par &quot;-pgsql&quot; ou &quot;-sqlite3&quot; sur le paquet director et le fd.

ici je choisi MySql (MySql étant déja installé):

 # aptitude install bacula-director-mysql bacula-sd-mysql bacula

Accorder les droits à bacula sur la base de données (vérifié si pas obsolète):
 # mysql -u root -p
 &gt; grant all privileges on bacula.* to 'bacula'@'localhost' identified by 'bacula' ;

Créer le répertoire de sauvegarde et accorder les droits à bacula :
 # mkdir /home/sauvegarde/
 # chown -R bacula.bacula /home/sauvegarde
 # chmod -R 660 /home/sauvegarde (---&gt; à vérifier)

== Configuration ==
Bacula se compose des fichiers suivants :

Le fichier générale de configuration le Director :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-dir.conf&lt;/span&gt;
Le fichier Storage Daemon concernant le stockage des données :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-sd.conf&lt;/span&gt;
Celui du File Daemon permettant l'accès aux données installé sur le client à sauvegarder :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-fd.conf&lt;/span&gt;
Le fichier permettant la connexion entre la console et le directeur :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bconsole.conf&lt;/span&gt; 

Ces fichiers représentent les différents services de Bacula, ils peuvent se trouver sur des machines totalement différentes.

=== La Console ===

'''/etc/bacula/bconsole.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' { 
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''DIRport''' = 9101 &lt;span style=&quot;color:#bd0000;&quot;&gt;# le port d'écoute du director&lt;/span&gt;  
:'''address''' = nom_resolu_par_dns_ou_IP &lt;span style=&quot;color:#bd0000;&quot;&gt;# ip ou dns du director&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;# le mot de passe du director&lt;/span&gt; 
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt; 
} &lt;/div&gt;

'''address''' : Attention le nom DNS est obligatoire pour une connexion SSL penser à configurer le fichier /etc/hosts ou le serveur dns.

:: si vous n'utilisez pas de connexion sécurisée vous pouvez mettre une adresse ip directement.

La partie bleu permet la sécurisation des données entre le director et la console ca.crt doit être &lt;br/&gt;
le même partout les deux autres diffèrent pour chaque éléments de bacula voir l' annexe A sur les certificats SSL pour leur création.&lt;br/&gt;
Pour l'instant ne vous préoccupez pas de cette partie, une explication plus complète sera détaillée dans le chapitre sur la sécurisation.&lt;br/&gt;
Sachez juste que cela ce trouve là. &lt;br/&gt;

=== Le File Daemon ===
La ressource Client (ou File Daemon) définit le nom du client (tel qu'il est utilisé par le director) ainsi que le port&lt;br/&gt;
sur lequel le client est à l'écoute des connections du Director.&lt;br/&gt;

'''/etc/bacula/bacula-fd.conf''' 
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le mot de passe du director&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key &lt;/span&gt;
}

'''Director''' {
:'''Name''' = NOM_MON &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director restreint défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director_restreint&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;# son mot de passe&lt;/span&gt;
:'''Monitor''' = yes 
}

'''FileDaemon''' { 
:'''Name''' = NOM_FD &lt;span style=&quot;color:#bd0000;&quot;&gt;# le nom du File daemon&lt;/span&gt;
:'''FDport''' = 9102 &lt;span style=&quot;color:#bd0000;&quot;&gt;# son mot port d'écoute'&lt;/span&gt;
:'''WorkingDirectory''' = /var/lib/bacula
:'''Pid Directory''' = /var/run/bacula
:'''Maximum Concurrent Jobs''' = 8 &lt;span style=&quot;color:#bd0000;&quot;&gt;# le nombre maximum de sauvegardes simultanées&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key&lt;/span&gt; 
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Signatures = Yes&lt;/span&gt;           
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Encryption = Yes&lt;/span&gt;            
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/encrypt.pem&quot;&lt;/span&gt;    
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Master Key = &quot;/etc/bacula/keys/master.cert&quot;&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les messages sont envoyés au director&lt;/span&gt; 
:'''Name''' = Standard
:'''director''' = NOM_DIR = all, !skipped, !restored
}
&lt;/div&gt;
&lt;br/&gt; 
'''Working Directory''' : Cette directive est obligatoire et spécifie un répertoire dans lequel le File Daemon peut placer ses fichiers d'état.&lt;br/&gt;
: Ce répertoire ne doit être utilisé que par Bacula, mais peut être partagé par d'autres daemons Bacula les définitions des noms doivent être uniques pour chaque démon.&lt;br/&gt; 
: Sur les systèmes Win32, dans certaines circonstances, vous pourriez avoir besoin de spécifier une lettre de lecteur dans le chemin de répertoire de travail spécifié.
: Aussi, s'il vous plaît assurez-vous que ce répertoire est accessible en écriture par l'utilisateur SYSTEM au contraire la restauration peut échouer&lt;br/&gt;
: (le fichier d'amorçage (bootstrap) qui est transféré vers le File Daemon du directeur est temporairement placé dans ce répertoire avant d'être transmis au Storage Daemon).&lt;br/&gt;
'''Pid Directory''' Cette directive est obligatoire et spécifie un répertoire dans lequel le directeur peut placer ses fichiers d'identification de processus.&lt;br/&gt;
: Le fichier d'identification de processus est utilisé pour stopper Bacula et éviter à plusieurs instances de Bacula de fonctionner simultanément.&lt;br/&gt;
: Cet enregistrement est nécessaire. L'expansion du shell standard de l'annuaire se fait lorsque le fichier de configuration est lu de telle sorte que des valeurs&lt;br/&gt;
: telles que $HOME seront correctement substituées.&lt;br/&gt;
: Typiquement, sur les systèmes Linux, vous mettrez: /var/run.Si vous n'installez pas Bacula dans les répertoires système, vous pouvez utiliser le répertoire de travail&lt;br/&gt;
: tel que défini ci-dessus.&lt;br/&gt; 

Pour voir toutes les possibilités du File Daemon je vous invite à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Client_File_daemon_Configur.html la documentation de Bacula] à ce sujet.&lt;br/&gt;  
=== Le Storage Daemon ===
Le fichier de configuration du Storage Daemon a relativement peu de définitions de ressources. Toutefois, en raison de&lt;br/&gt;
la grande variation dans les médias de sauvegarde et des capacités du système, le démon de stockage doit être hautement configurable.&lt;br/&gt;

En conséquence, il y a un assez grand nombre de directives dans la définition des ressources de périphérique qui vous permet de définir.

toutes les caractéristiques de votre périphérique de stockage (normalement un lecteur de bande). Heureusement, avec des dispositifs 

de stockage modernes, les valeurs par défaut sont suffisantes, et très peu de directives sont réellement nécessaires.

'''/etc/bacula/bacula-sd.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = NOM_SD &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nom du Storage Daemon&lt;/span&gt;
:'''SDPort''' = 9103 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son port d'écoute&lt;/span&gt;
:''' WorkingDirectory''' = &quot;/var/lib/bacula&quot; 
:''' Pid Directory''' = &quot;/var/run/bacula&quot; 
:'''Maximum Concurrent Jobs''' = 8 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nombre maximum de sauvegardes simultanées par media&lt;/span&gt;
:'''SDAddress''' = nom_dns_ou_ip &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son addresse ip ou son nom dns&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# et son mot de passe&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;                                          
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_MON &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director restreint défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director_restreint&quot;
:'''Monitor''' = yes
}

'''Device''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# ou répertoire&lt;/span&gt; 
:'''Name''' = Nom_Device &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Un nom pour l'identifier&lt;/span&gt;
:'''Media Type''' = File &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son type : File, Tape, Fifo, DVD&lt;/span&gt;
:'''Archive Device''' = /home/sauvegarde/ &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son emplacement&lt;/span&gt;
:'''LabelMedia''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Lui donne un nom&lt;/span&gt;
:'''Random Access''' = Yes;
:'''AutomaticMount''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# monte le media en automatique&lt;/span&gt;
:'''RemovableMedia''' = no;
:'''AlwaysOpen''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Toujours accessible&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les messages sont envoyés au director&lt;/span&gt; 
:'''Name''' = Standard
:'''director''' = NOM_DIR = all
}
&lt;/div&gt;
&lt;br/&gt; 
'''Random Access''' : Si Oui, le périphérique est supposé être un moyen d'accès aléatoire qui prend en charge le lseek (Dvd,Usb...) &lt;br/&gt;
: Non pour les dispositifs d'accès non-aléatoires tels que des bandes.
'''RemovableMedia''' : Si oui, cet appareil prend en charge les supports amovibles (par exemple, cassettes ou de CD).&lt;br/&gt;
: Si Non, les médias ne peuvent pas être supprimés (par exemple, une zone de sauvegarde intermédiaire sur un disque dur).&lt;br/&gt;

Pour voir toutes les possibilités du Storage Daemon je vous invite à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html la documentation de Bacula] à ce sujet.

=== Le Director ===

De tous les fichiers de configuration nécessaires à l'exécution de Bacula, le directeur est le plus compliqué, et celui que vous aurez besoin de modifier&lt;br/&gt;
le plus souvent. Afin de simplifier sa comprehension nous le séparons en plusieurs fichiers.&lt;br/&gt;
Pour inclure un fichier dans bacula-dir.conf, il suffit de mettre un @ devant le chemin du fichier à inclure.&lt;br/&gt;
 @/chemin_complet/fichier

Comme toujours vous y gagneriez à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html la documentation] du director.

'''/etc/bacula/bacula-dir.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director&lt;/span&gt;
:'''DIRport''' = 9101 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son port d'écoute&lt;/span&gt;
:'''QueryFile''' = &quot;/etc/bacula/query.sql&quot;
:'''WorkingDirectory''' = &quot;/var/lib/bacula&quot;
:'''PidDirectory''' = &quot;/var/run/bacula&quot;
:'''Maximum Concurrent Jobs''' = 4 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nombre maximum de sauvegardes simultanées&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot;
:'''Messages''' = Standard
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;consolerCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key &lt;/span&gt;
}

@/etc/bacula/configuration/bacula_dir_filset.conf &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# On ajoute les fichiers de configuration des sauvegardes&lt;/span&gt;&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_job.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_storage.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_pool.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_client.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_schedule.conf&lt;br/&gt;

'''Catalog''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le catalogue ou Bacula stocke toutes ses informations&lt;/span&gt;
:'''Name''' = MyCatalog &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son nom&lt;/span&gt;
:dbname = &quot;bacula&quot;; dbuser = &quot;bacula&quot;; dbpassword = &quot;mdp_base_SQL&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les accés à la base Sql&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Définitions des messages envoyés par Bacula&lt;/span&gt;
:'''Name''' = Standard &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Un nom pour l'identifier&lt;/span&gt;
:'''mailcommand''' = &quot;/usr/sbin/bsmtp -h localhost -f \&quot;\(Bacula\) \&lt;%r\&gt;\&quot; -s \&quot;Bacula daemon message\&quot; %r&quot;
:'''mail''' = root@localhost = all, !skipped
:'''console''' = all, !skipped, !saved
::append = &quot;/var/bacula/log&quot; = all, !skipped
}
'''Director''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Director restreint utile pour les clients&lt;/span&gt;
:'''Name''' = DIR_MON
:'''Password''' = &quot;Mdp_du_director_restreint&quot;
:'''CommandACL''' = status, .status
}
&lt;/div&gt;

'''QueryFile''' = Cette directive est obligatoire et spécifie un répertoire et le fichier dans lequel le directeur peut trouver les états conservés SQL&lt;br/&gt;
pour les commandes de requête de la console.&lt;br/&gt;

==== Filset====

C'est dans ce fichier que l'on trouve les répertoires et fichiers à sauvegarder.&lt;br/&gt;

'''/etc/bacula/configuration/bacula_dir_filset.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''FileSet''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Fileset Windows&lt;/span&gt;
:'''Name''' = &quot;DONNEES_FSET&quot; 
:'''Enable VSS''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# activation ou non du Volume Shadow copy&lt;/span&gt;
:'''Include''' {
::'''Options''' {
:::compression = GZIP &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on compresse la sauvegarde possibilité de donner un niveau de compression ex: GZIP9&lt;/span&gt;
:::signature = MD5 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on vérifie les fichiers sauvegardés avec md5 ou sha1&lt;/span&gt;
:::accurate = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# si cette valeur est a &quot;no&quot; même les fichiers effacés seront restaurés&lt;/span&gt;
::}
::'''File''' = &quot;C:/DONNEES&quot;&lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le(s) répertoire(s) / fichier(s) à inclure&lt;/span&gt;
:}

:'''Exclude''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le(s) répertoire(s) / fichier(s) à exclure&lt;/span&gt;
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/yyy/zzz/yyy&quot;
:}
}

'''FileSet''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Fileset Linux&lt;/span&gt;
:'''Name''' = &quot;BACULA_FSET&quot;
:'''Enable VSS''' = no
:'''Include''' {
::'''Options''' {
:::signature = MD5
:::compression = GZIP9
:::accurate = yes
::}
::'''File''' = &quot;/etc/bacula/&quot;
}
&lt;/div&gt;
Vous trouverez le détail des ressources du fileset [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001870000000000000000 ici]

==== Storage ====

C'est ici que vous définissez le Storage Daemon ainsi que le device (répertoire) de sauvegarde à utiliser.

'''/etc/bacula/configuration/bacula_dir_storage.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = Donnees_st &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Vous lui donnez un nom&lt;/span&gt;
:'''Address''' = nom_dns_ou_ip_du_storagedaemon &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# L' adresse du Storage Daemon défini plus haut&lt;/span&gt;
:'''SDPort''' = 9103
:'''Password''' = &quot;mdp_du_storagedaemon&quot;
:'''Device''' = donnees_device &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# un des devices défini dans le fichier du Storage Daemon&lt;/span&gt;
}&lt;br/&gt;

&lt;/div&gt;
Vous trouverez le détail des ressources du storage [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018140000000000000000 ici]

==== Pool ====

Ce fichier décrit la façon dont sont gérés les volumes de sauvegarde.

'''/etc/bacula/configuration/bacula_dir_pool.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Pool'''{
:'''Name''' = Donnees_Pool
:'''Pool Type''' = Backup &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son type pour l'instant seul Backup est implémenté d'autres viendront &quot;Archive,Cloned,Migration,Copy,Save&quot;&lt;/span&gt;
:'''Recycle''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on peut réutiliser les anciens volumes purgés&lt;/span&gt;
:'''AutoPrune''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# On laisse Bacula gérer les volumes&lt;/span&gt;
:'''File Retention''' = 180 days &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# durée de rétention des fichiers&lt;/span&gt;
:'''Job Retention''' = 180 days &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# durée de rétention des jobs&lt;/span&gt;
:'''Maximum Volume Jobs''' = 1 
:'''Label Format''' = &quot;${Level}_${Job}_${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}_${Hour:p/2/0/r}h${Minute:p/2/0/r}m&quot;
}&lt;br/&gt;
&lt;/div&gt;

'''Maximum Volume Jobs''' = Cette directive n'est pas obligatoire mais en fixant cette valeur à 1 on s'assure&lt;br/&gt;
de n'avoir qu'un seul fichier par sauvegarde. &lt;br/&gt;
'''Label Format''' = permet de nommer son volume de sauvegarde &lt;br/&gt;

Vous trouverez le détail des ressources pool [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018150000000000000000 ici]

==== Client ====

Dans ce fichier vous retrouvez tous vos clients à sauvegarder.

'''/etc/bacula/configuration/bacula_dir_client.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Client''' {
:'''Name''' = Nom_du_poste_a_savegarder
:'''Address''' = nom_dns_ou_ip
:'''FDPort''' = 9102
:'''Catalog''' = MyCatalog
:'''Password''' = &quot;mdp_du_client&quot;
}
&lt;/div&gt;
Vous trouverez le détail des ressources du client [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018130000000000000000 ici]

==== Schedule ====

Dans celui-ci vous définissez les heures et les niveaux de vos sauvegardes automatiques.

'''/etc/bacula/configuration/bacula_dir_schedule.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Schedule''' {
:'''Name''' = &quot;Donnees&quot;
:'''Run''' = Full 1st sun at 23:05 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# complète le 1er dimanche du mois à 23:05&lt;/span&gt;
:'''Run''' = Differential 2nd-5th sun at 23:05 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Différentiel le 2em et 5em dimanche du mois à 23:05&lt;/span&gt;
:'''Run''' = Incremental mon-sat at 21:00 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Incrémentiel su lundi au samedi à 21:00&lt;/span&gt;
}&lt;br/&gt;
&lt;/div&gt;
Vous trouverez le détail des ressources schedule [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001850000000000000000 ici]

==== Job ====

Et enfin dans ce fichier ci vous assemblez tous vos éléments.

'''/etc/bacula/configuration/bacula_dir_job.conf'''

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Job''' {
:'''Name''' = &quot;DONNEES&quot;
:'''Type''' = Backup
:'''Level''' = Incremental &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le niveau de la sauvegarde&lt;/span&gt;
:'''Client''' = SERVEURZZZ
:'''FileSet''' = &quot;DONNEES_FSET&quot;
:'''Schedule''' = &quot;Donnees&quot;
:'''Storage''' = Donnee_st
:'''Pool'''= Donnees_Pool
:'''Write Bootstrap''' = /var/lib/bacula/donnee.bsr &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# fichier contenant l'ensemble des données de la sauvegarde&lt;/span&gt;
:'''Priority''' = 20 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# la priorité du job de sauvegarde : plus le nombre est petit plus la priorité est haute&lt;/span&gt;
:'''Messages''' = Standard 
}
&lt;/div&gt;

Si dans vos différents jobs vous avez les mêmes données (Fileset,Schedule...) vous pouvez créer un '''JobDefs'''.  

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''JobDefs''' {
:'''Name''' = &quot;JOBCOMMUN&quot;
:'''Type''' = Backup
:'''Level''' = Full
:'''FileSet''' = &quot;DONNEES_FSET&quot;
:'''Schedule''' = &quot;Donnees&quot;
:'''Pool''' = Donnees_Pool
:'''Storage''' = Donnees-st
:'''Messages''' = Standard
}

'''Job''' {
:'''Name''' = &quot;DONNEES&quot;
:'''JobDefs''' = &quot;JOBCOMMUN&quot;
:'''Client''' = SERVEURZZZ
:'''Write Bootstrap''' = /var/lib/bacula/donnee.bsr 
:'''Priority''' = 10 
:'''Messages''' = Standard 
}

&lt;/div&gt;
Vous trouverez le détail des ressources job [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001830000000000000000 ici]

== Sécurisation ==

Tout au long du chapitre sur la configuration certaines parties en bleue n'ont pas été expliquées, elles concernaient essentiellement&lt;br/&gt;
des commandes liées aux connexions SSL et aux Chiffrage des données.&lt;br/&gt;

=== Les connexions SSL ===

Afin de sécuriser un peu notre système de sauvegarde nous pouvons mettre en place des connexions SSL entre les différents services de Bacula.&lt;br/&gt;
Dans un premier temps nous allons créer notre certificat d'autorité de certification, c'est lui qui validera (signera) les autres.

Si vous créez plusieurs certificats le conseil que je vous donne c'est d'éditer le fichier '''/etc/ssl/openssl.conf''' et &lt;br/&gt;
dans la section :&quot;req_distinguished_name&quot; de mettre vos paramêtres personalisés.

'''Exemple:'''

 countryName                     = Country Name (2 letter code)
 countryName_default             = &lt;span style=&quot;color:#bd0000;&quot;&gt;FR&lt;/span&gt;
 countryName_min                 = 2
 countryName_max                 = 2
 
 stateOrProvinceName             = State or Province Name (full name)
 stateOrProvinceName_default     = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre département&lt;/span&gt;
 
 localityName                    = Locality Name (eg, city)
 localityName_default            = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre ville&lt;/span&gt;
 
 0.organizationName              = Organization Name (eg, company)
 0.organizationName_default      = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre société&lt;/span&gt;
 
 # we can do this but it is not needed normally :-)
 #1.organizationName             = Second Organization Name (eg, company)
 #1.organizationName_default     = World Wide Web Pty Ltd
 
 organizationalUnitName          = Organizational Unit Name (eg, section)
 organizationalUnitName_default  = &lt;span style=&quot;color:#bd0000;&quot;&gt;Interne&lt;/span&gt;
 
 commonName                      = Common Name (eg, YOUR name)
 commonName_max                  = 64
 emailAddress                    = Email Address
 emailAddress_default            = &lt;span style=&quot;color:#bd0000;&quot;&gt;Une adresse mail&lt;/span&gt;
 emailAddress_max                = 64

Commencez par créer le répertoire /etc/bacula/'''keys'''/ puis entrez y.

Création certificat d'autorité de certification :

 #openssl genrsa -aes256 -out ca.key 2048 &lt;span style=&quot;color:#bd0000;&quot;&gt;# Génére une clé RSA 2048 bits et son chiffrement en AES 256 un mot de passe vous sera demandé.&lt;/span&gt; 
 #openssl req -new -key ca.key -x509 -out ca.crt &lt;span style=&quot;color:#bd0000;&quot;&gt;# Génére le certificat publique de la clé.&lt;/span&gt; 

Ensuite il faut créer une clé et un certificat par services que nous voulons sécuriser.
Par exemple pour le director :

 #openssl genrsa -out director.key 2048
 #openssl req -new -key director.key &gt; director.csr
 #openssl x509 -req -in director.csr -out director.crt -CA ca.crt -CAkey ca.key -CAcreateserial -CAserial ca.srl

Il est obligatoire de mettre le même nom dans le Common Name que le nom resolu par DNS du service.&lt;br/&gt;
si l adresse dns du director est &quot;director.local&quot; alors le Common Name est &quot;director.local&quot; et n'oubliez pas de configurer&lt;br/&gt;
le fichier '''/etc/hosts''' ou le serveur DNS.&lt;br/&gt;
L'option CAcreateserial n'est nécessaire que la première fois, ensuite pour la console :

 #openssl genrsa -out console.key 2048
 #openssl req -new -key console.key &gt; console.csr
 #openssl x509 -req -in console.csr -out console.crt -CA ca.crt -CAkey ca.key -CAserial ca.srl

Maintenant vous pouvez continuer seul pour les autres services.

Revenons à notre fichier '''/etc/bacula/bconsole.conf''' et plus précisement à ces lignes :

::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Active une connexion SSL&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Oblige une connexion SSL&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers votre certificat publique du '''ca''' généré plus haut&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers votre certificat publique de la '''console''' généré plus haut&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers la clé privé de la '''console''' généré plus haut&lt;/span&gt;

Dans le fichier '''/etc/bacula/bacula-dir.conf''' :
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;consolerCN&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Ici on n'autorise que la console en donnant le Common Name du certificat de la console&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key &lt;/span&gt;

Vous voilà avec une connexion sécurisé entre votre console et le director.

(en cours...)

=== Le chiffrage des sauvegardes ===

== Utilisation ==
=== En mode Console ===
=== En mode Graphique ===

== ANNEXE ==
=== Annexe A : Certificat SSL ===



[[Utilisateur:Haludeis|Haludeis]] ([[Discussion utilisateur:Haludeis|discussion]]) 5 mai 2012 à 16:42 (CEST)</text>
      <sha1>7wf6yzrp4n7mvhikrboe7j5hjit2ial</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4188</id>
      <parentid>4187</parentid>
      <timestamp>2012-05-05T15:38:26Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Le File Daemon */</comment>
      <text xml:space="preserve" bytes="28251">[[Catégorie:Sauvegardes]]
{{Ébauche|Bacula}}
{{sid}}

== Présentation ==
Ce document est basé sur une installation stable de Debian (en ce moment Squeeze).

Son but : sauvegarde, restauration et vérification en réseau &lt;br/&gt;
(reste à faire)

== Installation ==
Bacula peut utiliser les bases de données SQLite, MySql et PostGreSQL.Il suffit d'installer les paquets correspondant à votre choix. 

Changer &quot;-mysql&quot; par &quot;-pgsql&quot; ou &quot;-sqlite3&quot; sur le paquet director et le fd.

ici je choisi MySql (MySql étant déja installé):

 # aptitude install bacula-director-mysql bacula-sd-mysql bacula

Accorder les droits à bacula sur la base de données (vérifié si pas obsolète):
 # mysql -u root -p
 &gt; grant all privileges on bacula.* to 'bacula'@'localhost' identified by 'bacula' ;

Créer le répertoire de sauvegarde et accorder les droits à bacula :
 # mkdir /home/sauvegarde/
 # chown -R bacula.bacula /home/sauvegarde
 # chmod -R 660 /home/sauvegarde (---&gt; à vérifier)

== Configuration ==
Bacula se compose des fichiers suivants :

Le fichier générale de configuration le Director :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-dir.conf&lt;/span&gt;
Le fichier Storage Daemon concernant le stockage des données :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-sd.conf&lt;/span&gt;
Celui du File Daemon permettant l'accès aux données installé sur le client à sauvegarder :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-fd.conf&lt;/span&gt;
Le fichier permettant la connexion entre la console et le directeur :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bconsole.conf&lt;/span&gt; 

Ces fichiers représentent les différents services de Bacula, ils peuvent se trouver sur des machines totalement différentes.

=== La Console ===

'''/etc/bacula/bconsole.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' { 
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''DIRport''' = 9101 &lt;span style=&quot;color:#bd0000;&quot;&gt;# le port d'écoute du director&lt;/span&gt;  
:'''address''' = nom_resolu_par_dns_ou_IP &lt;span style=&quot;color:#bd0000;&quot;&gt;# ip ou dns du director&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;# le mot de passe du director&lt;/span&gt; 
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt; 
} &lt;/div&gt;

'''address''' : Attention le nom DNS est obligatoire pour une connexion SSL penser à configurer le fichier /etc/hosts ou le serveur dns.

:: si vous n'utilisez pas de connexion sécurisée vous pouvez mettre une adresse ip directement.

La partie bleu permet la sécurisation des données entre le director et la console ca.crt doit être &lt;br/&gt;
le même partout les deux autres diffèrent pour chaque éléments de bacula voir l' annexe A sur les certificats SSL pour leur création.&lt;br/&gt;
Pour l'instant ne vous préoccupez pas de cette partie, une explication plus complète sera détaillée dans le chapitre sur la sécurisation.&lt;br/&gt;
Sachez juste que cela ce trouve là. &lt;br/&gt;

=== Le File Daemon ===
La ressource Client (ou File Daemon) définit le nom du client (tel qu'il est utilisé par le director) ainsi que le port sur lequel le client est à l'écoute des connections du Director.&lt;br/&gt;

'''/etc/bacula/bacula-fd.conf''' 
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le mot de passe du director&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key &lt;/span&gt;
}

'''Director''' {
:'''Name''' = NOM_MON &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director restreint défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director_restreint&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;# son mot de passe&lt;/span&gt;
:'''Monitor''' = yes 
}

'''FileDaemon''' { 
:'''Name''' = NOM_FD &lt;span style=&quot;color:#bd0000;&quot;&gt;# le nom du File daemon&lt;/span&gt;
:'''FDport''' = 9102 &lt;span style=&quot;color:#bd0000;&quot;&gt;# son mot port d'écoute'&lt;/span&gt;
:'''WorkingDirectory''' = /var/lib/bacula
:'''Pid Directory''' = /var/run/bacula
:'''Maximum Concurrent Jobs''' = 8 &lt;span style=&quot;color:#bd0000;&quot;&gt;# le nombre maximum de sauvegardes simultanées&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key&lt;/span&gt; 
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Signatures = Yes&lt;/span&gt;           
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Encryption = Yes&lt;/span&gt;            
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/encrypt.pem&quot;&lt;/span&gt;    
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Master Key = &quot;/etc/bacula/keys/master.cert&quot;&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les messages sont envoyés au director&lt;/span&gt; 
:'''Name''' = Standard
:'''director''' = NOM_DIR = all, !skipped, !restored
}
&lt;/div&gt;
&lt;br/&gt; 
'''Working Directory''' : Cette directive est obligatoire et spécifie un répertoire dans lequel le File Daemon peut placer ses fichiers d'état.&lt;br/&gt;
: Ce répertoire ne doit être utilisé que par Bacula, mais peut être partagé par d'autres daemons Bacula les définitions des noms doivent être uniques pour chaque démon.&lt;br/&gt; 
: Sur les systèmes Win32, dans certaines circonstances, vous pourriez avoir besoin de spécifier une lettre de lecteur dans le chemin de répertoire de travail spécifié.
: Aussi, s'il vous plaît assurez-vous que ce répertoire est accessible en écriture par l'utilisateur SYSTEM au contraire la restauration peut échouer&lt;br/&gt;
: (le fichier d'amorçage (bootstrap) qui est transféré vers le File Daemon du directeur est temporairement placé dans ce répertoire avant d'être transmis au Storage Daemon).&lt;br/&gt;
'''Pid Directory''' Cette directive est obligatoire et spécifie un répertoire dans lequel le directeur peut placer ses fichiers d'identification de processus.&lt;br/&gt;
: Le fichier d'identification de processus est utilisé pour stopper Bacula et éviter à plusieurs instances de Bacula de fonctionner simultanément.&lt;br/&gt;
: Cet enregistrement est nécessaire. L'expansion du shell standard de l'annuaire se fait lorsque le fichier de configuration est lu de telle sorte que des valeurs&lt;br/&gt;
: telles que $HOME seront correctement substituées.&lt;br/&gt;
: Typiquement, sur les systèmes Linux, vous mettrez: /var/run.Si vous n'installez pas Bacula dans les répertoires système, vous pouvez utiliser le répertoire de travail&lt;br/&gt;
: tel que défini ci-dessus.&lt;br/&gt; 

Pour voir toutes les possibilités du File Daemon je vous invite à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Client_File_daemon_Configur.html la documentation de Bacula] à ce sujet.&lt;br/&gt;

=== Le Storage Daemon ===
Le fichier de configuration du Storage Daemon a relativement peu de définitions de ressources. Toutefois, en raison de&lt;br/&gt;
la grande variation dans les médias de sauvegarde et des capacités du système, le démon de stockage doit être hautement configurable.&lt;br/&gt;

En conséquence, il y a un assez grand nombre de directives dans la définition des ressources de périphérique qui vous permet de définir.

toutes les caractéristiques de votre périphérique de stockage (normalement un lecteur de bande). Heureusement, avec des dispositifs 

de stockage modernes, les valeurs par défaut sont suffisantes, et très peu de directives sont réellement nécessaires.

'''/etc/bacula/bacula-sd.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = NOM_SD &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nom du Storage Daemon&lt;/span&gt;
:'''SDPort''' = 9103 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son port d'écoute&lt;/span&gt;
:''' WorkingDirectory''' = &quot;/var/lib/bacula&quot; 
:''' Pid Directory''' = &quot;/var/run/bacula&quot; 
:'''Maximum Concurrent Jobs''' = 8 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nombre maximum de sauvegardes simultanées par media&lt;/span&gt;
:'''SDAddress''' = nom_dns_ou_ip &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son addresse ip ou son nom dns&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# et son mot de passe&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;                                          
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_MON &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director restreint défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director_restreint&quot;
:'''Monitor''' = yes
}

'''Device''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# ou répertoire&lt;/span&gt; 
:'''Name''' = Nom_Device &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Un nom pour l'identifier&lt;/span&gt;
:'''Media Type''' = File &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son type : File, Tape, Fifo, DVD&lt;/span&gt;
:'''Archive Device''' = /home/sauvegarde/ &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son emplacement&lt;/span&gt;
:'''LabelMedia''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Lui donne un nom&lt;/span&gt;
:'''Random Access''' = Yes;
:'''AutomaticMount''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# monte le media en automatique&lt;/span&gt;
:'''RemovableMedia''' = no;
:'''AlwaysOpen''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Toujours accessible&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les messages sont envoyés au director&lt;/span&gt; 
:'''Name''' = Standard
:'''director''' = NOM_DIR = all
}
&lt;/div&gt;
&lt;br/&gt; 
'''Random Access''' : Si Oui, le périphérique est supposé être un moyen d'accès aléatoire qui prend en charge le lseek (Dvd,Usb...) &lt;br/&gt;
: Non pour les dispositifs d'accès non-aléatoires tels que des bandes.
'''RemovableMedia''' : Si oui, cet appareil prend en charge les supports amovibles (par exemple, cassettes ou de CD).&lt;br/&gt;
: Si Non, les médias ne peuvent pas être supprimés (par exemple, une zone de sauvegarde intermédiaire sur un disque dur).&lt;br/&gt;

Pour voir toutes les possibilités du Storage Daemon je vous invite à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html la documentation de Bacula] à ce sujet.

=== Le Director ===

De tous les fichiers de configuration nécessaires à l'exécution de Bacula, le directeur est le plus compliqué, et celui que vous aurez besoin de modifier&lt;br/&gt;
le plus souvent. Afin de simplifier sa comprehension nous le séparons en plusieurs fichiers.&lt;br/&gt;
Pour inclure un fichier dans bacula-dir.conf, il suffit de mettre un @ devant le chemin du fichier à inclure.&lt;br/&gt;
 @/chemin_complet/fichier

Comme toujours vous y gagneriez à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html la documentation] du director.

'''/etc/bacula/bacula-dir.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director&lt;/span&gt;
:'''DIRport''' = 9101 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son port d'écoute&lt;/span&gt;
:'''QueryFile''' = &quot;/etc/bacula/query.sql&quot;
:'''WorkingDirectory''' = &quot;/var/lib/bacula&quot;
:'''PidDirectory''' = &quot;/var/run/bacula&quot;
:'''Maximum Concurrent Jobs''' = 4 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nombre maximum de sauvegardes simultanées&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot;
:'''Messages''' = Standard
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;consolerCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key &lt;/span&gt;
}

@/etc/bacula/configuration/bacula_dir_filset.conf &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# On ajoute les fichiers de configuration des sauvegardes&lt;/span&gt;&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_job.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_storage.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_pool.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_client.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_schedule.conf&lt;br/&gt;

'''Catalog''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le catalogue ou Bacula stocke toutes ses informations&lt;/span&gt;
:'''Name''' = MyCatalog &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son nom&lt;/span&gt;
:dbname = &quot;bacula&quot;; dbuser = &quot;bacula&quot;; dbpassword = &quot;mdp_base_SQL&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les accés à la base Sql&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Définitions des messages envoyés par Bacula&lt;/span&gt;
:'''Name''' = Standard &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Un nom pour l'identifier&lt;/span&gt;
:'''mailcommand''' = &quot;/usr/sbin/bsmtp -h localhost -f \&quot;\(Bacula\) \&lt;%r\&gt;\&quot; -s \&quot;Bacula daemon message\&quot; %r&quot;
:'''mail''' = root@localhost = all, !skipped
:'''console''' = all, !skipped, !saved
::append = &quot;/var/bacula/log&quot; = all, !skipped
}
'''Director''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Director restreint utile pour les clients&lt;/span&gt;
:'''Name''' = DIR_MON
:'''Password''' = &quot;Mdp_du_director_restreint&quot;
:'''CommandACL''' = status, .status
}
&lt;/div&gt;

'''QueryFile''' = Cette directive est obligatoire et spécifie un répertoire et le fichier dans lequel le directeur peut trouver les états conservés SQL&lt;br/&gt;
pour les commandes de requête de la console.&lt;br/&gt;

==== Filset====

C'est dans ce fichier que l'on trouve les répertoires et fichiers à sauvegarder.&lt;br/&gt;

'''/etc/bacula/configuration/bacula_dir_filset.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''FileSet''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Fileset Windows&lt;/span&gt;
:'''Name''' = &quot;DONNEES_FSET&quot; 
:'''Enable VSS''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# activation ou non du Volume Shadow copy&lt;/span&gt;
:'''Include''' {
::'''Options''' {
:::compression = GZIP &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on compresse la sauvegarde possibilité de donner un niveau de compression ex: GZIP9&lt;/span&gt;
:::signature = MD5 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on vérifie les fichiers sauvegardés avec md5 ou sha1&lt;/span&gt;
:::accurate = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# si cette valeur est a &quot;no&quot; même les fichiers effacés seront restaurés&lt;/span&gt;
::}
::'''File''' = &quot;C:/DONNEES&quot;&lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le(s) répertoire(s) / fichier(s) à inclure&lt;/span&gt;
:}

:'''Exclude''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le(s) répertoire(s) / fichier(s) à exclure&lt;/span&gt;
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/yyy/zzz/yyy&quot;
:}
}

'''FileSet''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Fileset Linux&lt;/span&gt;
:'''Name''' = &quot;BACULA_FSET&quot;
:'''Enable VSS''' = no
:'''Include''' {
::'''Options''' {
:::signature = MD5
:::compression = GZIP9
:::accurate = yes
::}
::'''File''' = &quot;/etc/bacula/&quot;
}
&lt;/div&gt;
Vous trouverez le détail des ressources du fileset [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001870000000000000000 ici]

==== Storage ====

C'est ici que vous définissez le Storage Daemon ainsi que le device (répertoire) de sauvegarde à utiliser.

'''/etc/bacula/configuration/bacula_dir_storage.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = Donnees_st &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Vous lui donnez un nom&lt;/span&gt;
:'''Address''' = nom_dns_ou_ip_du_storagedaemon &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# L' adresse du Storage Daemon défini plus haut&lt;/span&gt;
:'''SDPort''' = 9103
:'''Password''' = &quot;mdp_du_storagedaemon&quot;
:'''Device''' = donnees_device &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# un des devices défini dans le fichier du Storage Daemon&lt;/span&gt;
}&lt;br/&gt;

&lt;/div&gt;
Vous trouverez le détail des ressources du storage [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018140000000000000000 ici]

==== Pool ====

Ce fichier décrit la façon dont sont gérés les volumes de sauvegarde.

'''/etc/bacula/configuration/bacula_dir_pool.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Pool'''{
:'''Name''' = Donnees_Pool
:'''Pool Type''' = Backup &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son type pour l'instant seul Backup est implémenté d'autres viendront &quot;Archive,Cloned,Migration,Copy,Save&quot;&lt;/span&gt;
:'''Recycle''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on peut réutiliser les anciens volumes purgés&lt;/span&gt;
:'''AutoPrune''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# On laisse Bacula gérer les volumes&lt;/span&gt;
:'''File Retention''' = 180 days &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# durée de rétention des fichiers&lt;/span&gt;
:'''Job Retention''' = 180 days &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# durée de rétention des jobs&lt;/span&gt;
:'''Maximum Volume Jobs''' = 1 
:'''Label Format''' = &quot;${Level}_${Job}_${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}_${Hour:p/2/0/r}h${Minute:p/2/0/r}m&quot;
}&lt;br/&gt;
&lt;/div&gt;

'''Maximum Volume Jobs''' = Cette directive n'est pas obligatoire mais en fixant cette valeur à 1 on s'assure&lt;br/&gt;
de n'avoir qu'un seul fichier par sauvegarde. &lt;br/&gt;
'''Label Format''' = permet de nommer son volume de sauvegarde &lt;br/&gt;

Vous trouverez le détail des ressources pool [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018150000000000000000 ici]

==== Client ====

Dans ce fichier vous retrouvez tous vos clients à sauvegarder.

'''/etc/bacula/configuration/bacula_dir_client.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Client''' {
:'''Name''' = Nom_du_poste_a_savegarder
:'''Address''' = nom_dns_ou_ip
:'''FDPort''' = 9102
:'''Catalog''' = MyCatalog
:'''Password''' = &quot;mdp_du_client&quot;
}
&lt;/div&gt;
Vous trouverez le détail des ressources du client [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018130000000000000000 ici]

==== Schedule ====

Dans celui-ci vous définissez les heures et les niveaux de vos sauvegardes automatiques.

'''/etc/bacula/configuration/bacula_dir_schedule.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Schedule''' {
:'''Name''' = &quot;Donnees&quot;
:'''Run''' = Full 1st sun at 23:05 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# complète le 1er dimanche du mois à 23:05&lt;/span&gt;
:'''Run''' = Differential 2nd-5th sun at 23:05 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Différentiel le 2em et 5em dimanche du mois à 23:05&lt;/span&gt;
:'''Run''' = Incremental mon-sat at 21:00 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Incrémentiel su lundi au samedi à 21:00&lt;/span&gt;
}&lt;br/&gt;
&lt;/div&gt;
Vous trouverez le détail des ressources schedule [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001850000000000000000 ici]

==== Job ====

Et enfin dans ce fichier ci vous assemblez tous vos éléments.

'''/etc/bacula/configuration/bacula_dir_job.conf'''

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Job''' {
:'''Name''' = &quot;DONNEES&quot;
:'''Type''' = Backup
:'''Level''' = Incremental &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le niveau de la sauvegarde&lt;/span&gt;
:'''Client''' = SERVEURZZZ
:'''FileSet''' = &quot;DONNEES_FSET&quot;
:'''Schedule''' = &quot;Donnees&quot;
:'''Storage''' = Donnee_st
:'''Pool'''= Donnees_Pool
:'''Write Bootstrap''' = /var/lib/bacula/donnee.bsr &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# fichier contenant l'ensemble des données de la sauvegarde&lt;/span&gt;
:'''Priority''' = 20 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# la priorité du job de sauvegarde : plus le nombre est petit plus la priorité est haute&lt;/span&gt;
:'''Messages''' = Standard 
}
&lt;/div&gt;

Si dans vos différents jobs vous avez les mêmes données (Fileset,Schedule...) vous pouvez créer un '''JobDefs'''.  

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''JobDefs''' {
:'''Name''' = &quot;JOBCOMMUN&quot;
:'''Type''' = Backup
:'''Level''' = Full
:'''FileSet''' = &quot;DONNEES_FSET&quot;
:'''Schedule''' = &quot;Donnees&quot;
:'''Pool''' = Donnees_Pool
:'''Storage''' = Donnees-st
:'''Messages''' = Standard
}

'''Job''' {
:'''Name''' = &quot;DONNEES&quot;
:'''JobDefs''' = &quot;JOBCOMMUN&quot;
:'''Client''' = SERVEURZZZ
:'''Write Bootstrap''' = /var/lib/bacula/donnee.bsr 
:'''Priority''' = 10 
:'''Messages''' = Standard 
}

&lt;/div&gt;
Vous trouverez le détail des ressources job [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001830000000000000000 ici]

== Sécurisation ==

Tout au long du chapitre sur la configuration certaines parties en bleue n'ont pas été expliquées, elles concernaient essentiellement&lt;br/&gt;
des commandes liées aux connexions SSL et aux Chiffrage des données.&lt;br/&gt;

=== Les connexions SSL ===

Afin de sécuriser un peu notre système de sauvegarde nous pouvons mettre en place des connexions SSL entre les différents services de Bacula.&lt;br/&gt;
Dans un premier temps nous allons créer notre certificat d'autorité de certification, c'est lui qui validera (signera) les autres.

Si vous créez plusieurs certificats le conseil que je vous donne c'est d'éditer le fichier '''/etc/ssl/openssl.conf''' et &lt;br/&gt;
dans la section :&quot;req_distinguished_name&quot; de mettre vos paramêtres personalisés.

'''Exemple:'''

 countryName                     = Country Name (2 letter code)
 countryName_default             = &lt;span style=&quot;color:#bd0000;&quot;&gt;FR&lt;/span&gt;
 countryName_min                 = 2
 countryName_max                 = 2
 
 stateOrProvinceName             = State or Province Name (full name)
 stateOrProvinceName_default     = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre département&lt;/span&gt;
 
 localityName                    = Locality Name (eg, city)
 localityName_default            = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre ville&lt;/span&gt;
 
 0.organizationName              = Organization Name (eg, company)
 0.organizationName_default      = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre société&lt;/span&gt;
 
 # we can do this but it is not needed normally :-)
 #1.organizationName             = Second Organization Name (eg, company)
 #1.organizationName_default     = World Wide Web Pty Ltd
 
 organizationalUnitName          = Organizational Unit Name (eg, section)
 organizationalUnitName_default  = &lt;span style=&quot;color:#bd0000;&quot;&gt;Interne&lt;/span&gt;
 
 commonName                      = Common Name (eg, YOUR name)
 commonName_max                  = 64
 emailAddress                    = Email Address
 emailAddress_default            = &lt;span style=&quot;color:#bd0000;&quot;&gt;Une adresse mail&lt;/span&gt;
 emailAddress_max                = 64

Commencez par créer le répertoire /etc/bacula/'''keys'''/ puis entrez y.

Création certificat d'autorité de certification :

 #openssl genrsa -aes256 -out ca.key 2048 &lt;span style=&quot;color:#bd0000;&quot;&gt;# Génére une clé RSA 2048 bits et son chiffrement en AES 256 un mot de passe vous sera demandé.&lt;/span&gt; 
 #openssl req -new -key ca.key -x509 -out ca.crt &lt;span style=&quot;color:#bd0000;&quot;&gt;# Génére le certificat publique de la clé.&lt;/span&gt; 

Ensuite il faut créer une clé et un certificat par services que nous voulons sécuriser.
Par exemple pour le director :

 #openssl genrsa -out director.key 2048
 #openssl req -new -key director.key &gt; director.csr
 #openssl x509 -req -in director.csr -out director.crt -CA ca.crt -CAkey ca.key -CAcreateserial -CAserial ca.srl

Il est obligatoire de mettre le même nom dans le Common Name que le nom resolu par DNS du service.&lt;br/&gt;
si l adresse dns du director est &quot;director.local&quot; alors le Common Name est &quot;director.local&quot; et n'oubliez pas de configurer&lt;br/&gt;
le fichier '''/etc/hosts''' ou le serveur DNS.&lt;br/&gt;
L'option CAcreateserial n'est nécessaire que la première fois, ensuite pour la console :

 #openssl genrsa -out console.key 2048
 #openssl req -new -key console.key &gt; console.csr
 #openssl x509 -req -in console.csr -out console.crt -CA ca.crt -CAkey ca.key -CAserial ca.srl

Maintenant vous pouvez continuer seul pour les autres services.

Revenons à notre fichier '''/etc/bacula/bconsole.conf''' et plus précisement à ces lignes :

::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Active une connexion SSL&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Oblige une connexion SSL&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers votre certificat publique du '''ca''' généré plus haut&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers votre certificat publique de la '''console''' généré plus haut&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers la clé privé de la '''console''' généré plus haut&lt;/span&gt;

Dans le fichier '''/etc/bacula/bacula-dir.conf''' :
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;consolerCN&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Ici on n'autorise que la console en donnant le Common Name du certificat de la console&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key &lt;/span&gt;

Vous voilà avec une connexion sécurisé entre votre console et le director.

(en cours...)

=== Le chiffrage des sauvegardes ===

== Utilisation ==
=== En mode Console ===
=== En mode Graphique ===

== ANNEXE ==
=== Annexe A : Certificat SSL ===



[[Utilisateur:Haludeis|Haludeis]] ([[Discussion utilisateur:Haludeis|discussion]]) 5 mai 2012 à 16:42 (CEST)</text>
      <sha1>jbgskfw3es685cifvr06b61kcqjk4iw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4198</id>
      <parentid>4188</parentid>
      <timestamp>2012-05-06T07:16:13Z</timestamp>
      <contributor>
        <username>Haludeis</username>
        <id>30</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="35424">[[Catégorie:Sauvegardes]]
{{Ébauche|Bacula}}
{{sid}}

== Présentation ==
Ce document est basé sur une installation stable de Debian (en ce moment Squeeze) et de Bacula 5.0.2.

Son but : sauvegarde, restauration et vérification en réseau &lt;br/&gt;
(reste à faire)

== Installation ==
Bacula peut utiliser les bases de données SQLite, MySql et PostGreSQL.Il suffit d'installer les paquets correspondant à votre choix. 

Changer &quot;-mysql&quot; par &quot;-pgsql&quot; ou &quot;-sqlite3&quot; sur le paquet director et le fd.

ici je choisi MySql (MySql étant déja installé):

 # aptitude install bacula-director-mysql bacula-sd-mysql bacula

Accorder les droits à bacula sur la base de données (vérifié si pas obsolète):
 # mysql -u root -p
 &gt; grant all privileges on bacula.* to 'bacula'@'localhost' identified by 'bacula' ;

Créer le répertoire de sauvegarde et accorder les droits à bacula :
 # mkdir /home/sauvegarde/
 # chown -R bacula.bacula /home/sauvegarde
 # chmod -R 660 /home/sauvegarde (---&gt; à vérifier)

== Configuration ==
Bacula se compose des fichiers suivants :

Le fichier générale de configuration le Director :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-dir.conf&lt;/span&gt;
Le fichier Storage Daemon concernant le stockage des données :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-sd.conf&lt;/span&gt;
Celui du File Daemon permettant l'accès aux données installé sur le client à sauvegarder :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-fd.conf&lt;/span&gt;
Le fichier permettant la connexion entre la console et le directeur :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bconsole.conf&lt;/span&gt; 

Ces fichiers représentent les différents services de Bacula, ils peuvent se trouver sur des machines totalement différentes.

=== La Console ===

'''/etc/bacula/bconsole.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' { 
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''DIRport''' = 9101 &lt;span style=&quot;color:#bd0000;&quot;&gt;# le port d'écoute du director&lt;/span&gt;  
:'''address''' = nom_resolu_par_dns_ou_IP &lt;span style=&quot;color:#bd0000;&quot;&gt;# ip ou dns du director&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;# le mot de passe du director&lt;/span&gt; 
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt; 
} &lt;/div&gt;

'''address''' : Attention le nom DNS est obligatoire pour une connexion SSL penser à configurer le fichier /etc/hosts ou le serveur dns.

:: si vous n'utilisez pas de connexion sécurisée vous pouvez mettre une adresse ip directement.

La partie bleu permet la sécurisation des données entre le director et la console ca.crt doit être le même partout les deux autres diffèrent&lt;br/&gt;
pour chaque éléments de bacula.&lt;br/&gt;
Pour l'instant ne vous préoccupez pas de cette partie, une explication plus complète sera détaillée dans le chapitre sur la sécurisation.&lt;br/&gt;
Sachez juste que cela ce trouve là. &lt;br/&gt;

=== Le File Daemon ===
La ressource Client (ou File Daemon) définit le nom du client (tel qu'il est utilisé par le director) ainsi que le port sur lequel le client est à l'écoute des connections du Director.&lt;br/&gt;

'''/etc/bacula/bacula-fd.conf''' 
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le mot de passe du director&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key &lt;/span&gt;
}

'''Director''' {
:'''Name''' = NOM_MON &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director restreint défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director_restreint&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;# son mot de passe&lt;/span&gt;
:'''Monitor''' = yes 
}

'''FileDaemon''' { 
:'''Name''' = NOM_FD &lt;span style=&quot;color:#bd0000;&quot;&gt;# le nom du File daemon&lt;/span&gt;
:'''FDport''' = 9102 &lt;span style=&quot;color:#bd0000;&quot;&gt;# son mot port d'écoute'&lt;/span&gt;
:'''WorkingDirectory''' = /var/lib/bacula
:'''Pid Directory''' = /var/run/bacula
:'''Maximum Concurrent Jobs''' = 8 &lt;span style=&quot;color:#bd0000;&quot;&gt;# le nombre maximum de sauvegardes simultanées&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key&lt;/span&gt; 
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Signatures = Yes&lt;/span&gt;           
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Encryption = Yes&lt;/span&gt;            
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/client.pem&quot;&lt;/span&gt;    
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Master Key = &quot;/etc/bacula/keys/master.crt&quot;&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les messages sont envoyés au director&lt;/span&gt; 
:'''Name''' = Standard
:'''director''' = NOM_DIR = all, !skipped, !restored
}
&lt;/div&gt;
&lt;br/&gt; 
'''Working Directory''' : Cette directive est obligatoire et spécifie un répertoire dans lequel le File Daemon peut placer ses fichiers d'état.&lt;br/&gt;
: Ce répertoire ne doit être utilisé que par Bacula, mais peut être partagé par d'autres daemons Bacula les définitions des noms doivent être uniques pour chaque démon.&lt;br/&gt; 
: Sur les systèmes Win32, dans certaines circonstances, vous pourriez avoir besoin de spécifier une lettre de lecteur dans le chemin de répertoire de travail spécifié.
: Aussi, s'il vous plaît assurez-vous que ce répertoire est accessible en écriture par l'utilisateur SYSTEM au contraire la restauration peut échouer&lt;br/&gt;
: (le fichier d'amorçage (bootstrap) qui est transféré vers le File Daemon du directeur est temporairement placé dans ce répertoire avant d'être transmis au Storage Daemon).&lt;br/&gt;
'''Pid Directory''' Cette directive est obligatoire et spécifie un répertoire dans lequel le directeur peut placer ses fichiers d'identification de processus.&lt;br/&gt;
: Le fichier d'identification de processus est utilisé pour stopper Bacula et éviter à plusieurs instances de Bacula de fonctionner simultanément.&lt;br/&gt;
: Cet enregistrement est nécessaire. L'expansion du shell standard de l'annuaire se fait lorsque le fichier de configuration est lu de telle sorte que des valeurs&lt;br/&gt;
: telles que $HOME seront correctement substituées.&lt;br/&gt;
: Typiquement, sur les systèmes Linux, vous mettrez: /var/run.Si vous n'installez pas Bacula dans les répertoires système, vous pouvez utiliser le répertoire de travail&lt;br/&gt;
: tel que défini ci-dessus.&lt;br/&gt; 

Pour voir toutes les possibilités du File Daemon je vous invite à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Client_File_daemon_Configur.html la documentation de Bacula] à ce sujet.&lt;br/&gt;

 
=== Le Storage Daemon ===
Le fichier de configuration du Storage Daemon a relativement peu de définitions de ressources. Toutefois, en raison de&lt;br/&gt;
la grande variation dans les médias de sauvegarde et des capacités du système, le démon de stockage doit être hautement configurable.&lt;br/&gt;

En conséquence, il y a un assez grand nombre de directives dans la définition des ressources de périphérique qui vous permet de définir.

toutes les caractéristiques de votre périphérique de stockage (normalement un lecteur de bande). Heureusement, avec des dispositifs 

de stockage modernes, les valeurs par défaut sont suffisantes, et très peu de directives sont réellement nécessaires.

'''/etc/bacula/bacula-sd.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = NOM_SD &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nom du Storage Daemon&lt;/span&gt;
:'''SDPort''' = 9103 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son port d'écoute&lt;/span&gt;
:''' WorkingDirectory''' = &quot;/var/lib/bacula&quot; 
:''' Pid Directory''' = &quot;/var/run/bacula&quot; 
:'''Maximum Concurrent Jobs''' = 8 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nombre maximum de sauvegardes simultanées par media&lt;/span&gt;
:'''SDAddress''' = nom_dns_ou_ip &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son addresse ip ou son nom dns&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# et son mot de passe&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;                                          
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_MON &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director restreint défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director_restreint&quot;
:'''Monitor''' = yes
}

'''Device''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# ou répertoire&lt;/span&gt; 
:'''Name''' = Nom_Device &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Un nom pour l'identifier&lt;/span&gt;
:'''Media Type''' = File &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son type : File, Tape, Fifo, DVD&lt;/span&gt;
:'''Archive Device''' = /home/sauvegarde/ &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son emplacement&lt;/span&gt;
:'''LabelMedia''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Lui donne un nom&lt;/span&gt;
:'''Random Access''' = Yes;
:'''AutomaticMount''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# monte le media en automatique&lt;/span&gt;
:'''RemovableMedia''' = no;
:'''AlwaysOpen''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Toujours accessible&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les messages sont envoyés au director&lt;/span&gt; 
:'''Name''' = Standard
:'''director''' = NOM_DIR = all
}
&lt;/div&gt;
&lt;br/&gt; 
'''Random Access''' : Si Oui, le périphérique est supposé être un moyen d'accès aléatoire qui prend en charge le lseek (Dvd,Usb...) &lt;br/&gt;
: Non pour les dispositifs d'accès non-aléatoires tels que des bandes.
'''RemovableMedia''' : Si oui, cet appareil prend en charge les supports amovibles (par exemple, cassettes ou de CD).&lt;br/&gt;
: Si Non, les médias ne peuvent pas être supprimés (par exemple, une zone de sauvegarde intermédiaire sur un disque dur).&lt;br/&gt;

Pour voir toutes les possibilités du Storage Daemon je vous invite à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html la documentation de Bacula] à ce sujet.

=== Le Director ===

De tous les fichiers de configuration nécessaires à l'exécution de Bacula, le directeur est le plus compliqué, et celui que vous aurez besoin de modifier&lt;br/&gt;
le plus souvent. Afin de simplifier sa comprehension nous le séparons en plusieurs fichiers.&lt;br/&gt;
Pour inclure un fichier dans bacula-dir.conf, il suffit de mettre un @ devant le chemin du fichier à inclure.&lt;br/&gt;
 @/chemin_complet/fichier

Comme toujours vous y gagneriez à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html la documentation] du director.

'''/etc/bacula/bacula-dir.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director&lt;/span&gt;
:'''DIRport''' = 9101 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son port d'écoute&lt;/span&gt;
:'''QueryFile''' = &quot;/etc/bacula/query.sql&quot;
:'''WorkingDirectory''' = &quot;/var/lib/bacula&quot;
:'''PidDirectory''' = &quot;/var/run/bacula&quot;
:'''Maximum Concurrent Jobs''' = 4 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nombre maximum de sauvegardes simultanées&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot;
:'''Messages''' = Standard
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;consolerCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key &lt;/span&gt;
}

@/etc/bacula/configuration/bacula_dir_filset.conf &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# On ajoute les fichiers de configuration des sauvegardes&lt;/span&gt;&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_job.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_storage.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_pool.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_client.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_schedule.conf&lt;br/&gt;

'''Catalog''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le catalogue ou Bacula stocke toutes ses informations&lt;/span&gt;
:'''Name''' = MyCatalog &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son nom&lt;/span&gt;
:dbname = &quot;bacula&quot;; dbuser = &quot;bacula&quot;; dbpassword = &quot;mdp_base_SQL&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les accés à la base Sql&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Définitions des messages envoyés par Bacula&lt;/span&gt;
:'''Name''' = Standard &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Un nom pour l'identifier&lt;/span&gt;
:'''mailcommand''' = &quot;/usr/sbin/bsmtp -h localhost -f \&quot;\(Bacula\) \&lt;%r\&gt;\&quot; -s \&quot;Bacula daemon message\&quot; %r&quot;
:'''mail''' = root@localhost = all, !skipped
:'''console''' = all, !skipped, !saved
::append = &quot;/var/bacula/log&quot; = all, !skipped
}
'''Director''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Director restreint utile pour les clients&lt;/span&gt;
:'''Name''' = DIR_MON
:'''Password''' = &quot;Mdp_du_director_restreint&quot;
:'''CommandACL''' = status, .status
}
&lt;/div&gt;

'''QueryFile''' = Cette directive est obligatoire et spécifie un répertoire et le fichier dans lequel le directeur peut trouver les états conservés SQL&lt;br/&gt;
pour les commandes de requête de la console.&lt;br/&gt;

==== Filset====

C'est dans ce fichier que l'on trouve les répertoires et fichiers à sauvegarder.&lt;br/&gt;

'''/etc/bacula/configuration/bacula_dir_filset.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''FileSet''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Fileset Windows&lt;/span&gt;
:'''Name''' = &quot;DONNEES_FSET&quot; 
:'''Enable VSS''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# activation ou non du Volume Shadow copy&lt;/span&gt;
:'''Include''' {
::'''Options''' {
:::compression = GZIP &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on compresse la sauvegarde possibilité de donner un niveau de compression ex: GZIP9&lt;/span&gt;
:::signature = MD5 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on vérifie les fichiers sauvegardés avec md5 ou sha1&lt;/span&gt;
:::accurate = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# si cette valeur est a &quot;no&quot; même les fichiers effacés seront restaurés&lt;/span&gt;
::}
::'''File''' = &quot;C:/DONNEES&quot;&lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le(s) répertoire(s) / fichier(s) à inclure&lt;/span&gt;
:}

:'''Exclude''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le(s) répertoire(s) / fichier(s) à exclure&lt;/span&gt;
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/yyy/zzz/yyy&quot;
:}
}

'''FileSet''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Fileset Linux&lt;/span&gt;
:'''Name''' = &quot;BACULA_FSET&quot;
:'''Enable VSS''' = no
:'''Include''' {
::'''Options''' {
:::signature = MD5
:::compression = GZIP9
:::accurate = yes
::}
::'''File''' = &quot;/etc/bacula/&quot;
}
&lt;/div&gt;
Vous trouverez le détail des ressources du fileset [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001870000000000000000 ici]

==== Storage ====

C'est ici que vous définissez le Storage Daemon ainsi que le device (répertoire) de sauvegarde à utiliser.

'''/etc/bacula/configuration/bacula_dir_storage.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = Donnees_st &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Vous lui donnez un nom&lt;/span&gt;
:'''Address''' = nom_dns_ou_ip_du_storagedaemon &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# L' adresse du Storage Daemon défini plus haut&lt;/span&gt;
:'''SDPort''' = 9103
:'''Password''' = &quot;mdp_du_storagedaemon&quot;
:'''Device''' = donnees_device &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# un des devices défini dans le fichier du Storage Daemon&lt;/span&gt;
}&lt;br/&gt;

&lt;/div&gt;
Vous trouverez le détail des ressources du storage [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018140000000000000000 ici]

==== Pool ====

Ce fichier décrit la façon dont sont gérés les volumes de sauvegarde.

'''/etc/bacula/configuration/bacula_dir_pool.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Pool'''{
:'''Name''' = Donnees_Pool
:'''Pool Type''' = Backup &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son type pour l'instant seul Backup est implémenté d'autres viendront &quot;Archive,Cloned,Migration,Copy,Save&quot;&lt;/span&gt;
:'''Recycle''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on peut réutiliser les anciens volumes purgés&lt;/span&gt;
:'''AutoPrune''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# On laisse Bacula gérer les volumes&lt;/span&gt;
:'''File Retention''' = 180 days &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# durée de rétention des fichiers&lt;/span&gt;
:'''Job Retention''' = 180 days &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# durée de rétention des jobs&lt;/span&gt;
:'''Maximum Volume Jobs''' = 1 
:'''Label Format''' = &quot;${Level}_${Job}_${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}_${Hour:p/2/0/r}h${Minute:p/2/0/r}m&quot;
}&lt;br/&gt;
&lt;/div&gt;

'''Maximum Volume Jobs''' = Cette directive n'est pas obligatoire mais en fixant cette valeur à 1 on s'assure&lt;br/&gt;
de n'avoir qu'un seul fichier par sauvegarde. &lt;br/&gt;
'''Label Format''' = permet de nommer son volume de sauvegarde &lt;br/&gt;

Vous trouverez le détail des ressources pool [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018150000000000000000 ici]

==== Client ====

Dans ce fichier vous retrouvez tous vos clients à sauvegarder.

'''/etc/bacula/configuration/bacula_dir_client.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Client''' {
:'''Name''' = Nom_du_poste_a_savegarder
:'''Address''' = nom_dns_ou_ip
:'''FDPort''' = 9102
:'''Catalog''' = MyCatalog
:'''Password''' = &quot;mdp_du_client&quot;
}
&lt;/div&gt;
Vous trouverez le détail des ressources du client [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018130000000000000000 ici]

==== Schedule ====

Dans celui-ci vous définissez les heures et les niveaux de vos sauvegardes automatiques.

'''/etc/bacula/configuration/bacula_dir_schedule.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Schedule''' {
:'''Name''' = &quot;Donnees&quot;
:'''Run''' = Full 1st sun at 23:05 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# complète le 1er dimanche du mois à 23:05&lt;/span&gt;
:'''Run''' = Differential 2nd-5th sun at 23:05 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Différentiel le 2em et 5em dimanche du mois à 23:05&lt;/span&gt;
:'''Run''' = Incremental mon-sat at 21:00 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Incrémentiel su lundi au samedi à 21:00&lt;/span&gt;
}&lt;br/&gt;
&lt;/div&gt;
Vous trouverez le détail des ressources schedule [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001850000000000000000 ici]

==== Job ====

Et enfin dans ce fichier ci vous assemblez tous vos éléments.

'''/etc/bacula/configuration/bacula_dir_job.conf'''

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Job''' {
:'''Name''' = &quot;DONNEES&quot;
:'''Type''' = Backup
:'''Level''' = Incremental &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le niveau de la sauvegarde&lt;/span&gt;
:'''Client''' = SERVEURZZZ
:'''FileSet''' = &quot;DONNEES_FSET&quot;
:'''Schedule''' = &quot;Donnees&quot;
:'''Storage''' = Donnee_st
:'''Pool'''= Donnees_Pool
:'''Write Bootstrap''' = /var/lib/bacula/donnee.bsr &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# fichier contenant l'ensemble des données de la sauvegarde&lt;/span&gt;
:'''Priority''' = 20 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# la priorité du job de sauvegarde : plus le nombre est petit plus la priorité est haute&lt;/span&gt;
:'''Messages''' = Standard 
}
&lt;/div&gt;

Si dans vos différents jobs vous avez les mêmes données (Fileset,Schedule...) vous pouvez créer un '''JobDefs'''.  

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''JobDefs''' {
:'''Name''' = &quot;JOBCOMMUN&quot;
:'''Type''' = Backup
:'''Level''' = Full
:'''FileSet''' = &quot;DONNEES_FSET&quot;
:'''Schedule''' = &quot;Donnees&quot;
:'''Pool''' = Donnees_Pool
:'''Storage''' = Donnees-st
:'''Messages''' = Standard
}

'''Job''' {
:'''Name''' = &quot;DONNEES&quot;
:'''JobDefs''' = &quot;JOBCOMMUN&quot;
:'''Client''' = SERVEURZZZ
:'''Write Bootstrap''' = /var/lib/bacula/donnee.bsr 
:'''Priority''' = 10 
:'''Messages''' = Standard 
}

&lt;/div&gt;
Vous trouverez le détail des ressources job [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001830000000000000000 ici]

== Sécurisation ==

Tout au long du chapitre sur la configuration certaines parties en bleue n'ont pas été expliquées, elles concernaient essentiellement&lt;br/&gt;
des commandes liées aux connexions SSL et aux Chiffrage des données.&lt;br/&gt;

=== Les connexions SSL ===

Afin de sécuriser un peu notre système de sauvegarde nous pouvons mettre en place des connexions SSL entre les différents services de Bacula.&lt;br/&gt;
Dans un premier temps nous allons créer notre certificat d'autorité de certification, c'est lui qui validera (signera) les autres.

Si vous créez plusieurs certificats le conseil que je vous donne c'est d'éditer le fichier '''/etc/ssl/openssl.conf''' et &lt;br/&gt;
dans la section :&quot;req_distinguished_name&quot; de mettre vos paramêtres personalisés.

'''Exemple:'''

 countryName                     = Country Name (2 letter code)
 countryName_default             = &lt;span style=&quot;color:#bd0000;&quot;&gt;FR&lt;/span&gt;
 countryName_min                 = 2
 countryName_max                 = 2
 
 stateOrProvinceName             = State or Province Name (full name)
 stateOrProvinceName_default     = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre département&lt;/span&gt;
 
 localityName                    = Locality Name (eg, city)
 localityName_default            = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre ville&lt;/span&gt;
 
 0.organizationName              = Organization Name (eg, company)
 0.organizationName_default      = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre société&lt;/span&gt;
 
 # we can do this but it is not needed normally :-)
 #1.organizationName             = Second Organization Name (eg, company)
 #1.organizationName_default     = World Wide Web Pty Ltd
 
 organizationalUnitName          = Organizational Unit Name (eg, section)
 organizationalUnitName_default  = &lt;span style=&quot;color:#bd0000;&quot;&gt;Interne&lt;/span&gt;
 
 commonName                      = Common Name (eg, YOUR name)
 commonName_max                  = 64
 emailAddress                    = Email Address
 emailAddress_default            = &lt;span style=&quot;color:#bd0000;&quot;&gt;Une adresse mail&lt;/span&gt;
 emailAddress_max                = 64

Commencez par créer le répertoire /etc/bacula/'''keys'''/ puis entrez y.

Création certificat d'autorité de certification :

 #openssl genrsa -aes256 -out ca.key 2048 &lt;span style=&quot;color:#bd0000;&quot;&gt;# Génére une clé RSA 2048 bits et son chiffrement en AES 256 un mot de passe vous sera demandé.&lt;/span&gt; 
 #openssl req -new -key ca.key -x509 -out ca.crt &lt;span style=&quot;color:#bd0000;&quot;&gt;# Génére le certificat publique de la clé.&lt;/span&gt; 

Ensuite il faut créer une clé et un certificat par services que nous voulons sécuriser.
Par exemple pour le director :

 #openssl genrsa -out director.key 2048
 #openssl req -new -key director.key &gt; director.csr
 #openssl x509 -req -in director.csr -out director.crt -CA ca.crt -CAkey ca.key -CAcreateserial -CAserial ca.srl

Il est obligatoire de mettre le même nom dans le Common Name que le nom résolu par DNS du service.&lt;br/&gt;
Si l'adresse dns du director est &quot;director.local&quot; alors le Common Name est &quot;director.local&quot; et n'oubliez pas de configurer&lt;br/&gt;
le fichier '''/etc/hosts''' ou le serveur DNS.&lt;br/&gt;
L'option CAcreateserial n'est nécessaire que la première fois, ensuite pour la console :

 #openssl genrsa -out console.key 2048
 #openssl req -new -key console.key &gt; console.csr
 #openssl x509 -req -in console.csr -out console.crt -CA ca.crt -CAkey ca.key -CAserial ca.srl

Maintenant vous pouvez continuer seul pour les autres certificats (filedaemon.crt/key,storagedaemon.crt/key...).&lt;br/&gt;
Pour plus d'informations sur les certificats vous pouvez voir :&lt;br/&gt;
[http://www.batard.eu/2010/11/maitriser-les-certificats-avec-openssl/ N30Secs Blog] , 
[http://www.linux-france.org/prj/edu/archinet/systeme/ch24s03.html Linux-france.org] , 
[http://www.madboa.com/geek/openssl/ Madboa.com]


Pour établir une connexion sécurisé entre:

'''Director | Console'''&lt;br/&gt;
Revenons à notre fichier '''/etc/bacula/bconsole.conf''' et plus précisement à ces lignes :

 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Active une connexion SSL&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Oblige une connexion SSL&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers votre certificat publique du '''ca''' généré plus haut&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers votre certificat publique de la '''console''' généré plus haut&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers la clé privé de la '''console''' généré plus haut&lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-dir.conf''' :&lt;br/&gt;
 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;consolerCN&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Ici on n'autorise que la console en donnant le Common Name du certificat de la console&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key &lt;/span&gt;
 }

Vous voilà avec une connexion sécurisé entre votre console et le director.&lt;br/&gt;

'''Director | Filedaemon'''&lt;br/&gt;

Dans le fichier '''/etc/bacula/bacula-fd.conf''' :&lt;br/&gt;
 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;DirectorCN&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Ici on n'autorise que le director en donnant le Common Name du certificat du director&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key &lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-dir.conf''' :&lt;br/&gt;
 '''Client''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key&lt;/span&gt;
 }

'''Director | Storagedaemon'''&lt;br/&gt;

Dans le fichier '''/etc/bacula/bacula-sd.conf''' :&lt;br/&gt;
 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;DirectorCN&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Ici on n'autorise que le director en donnant le Common Name du certificat du director&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key &lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-dir.conf''' :&lt;br/&gt;
 '''Storage''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key&lt;/span&gt;
 }

'''Filedaemon | Storagedaemon'''&lt;br/&gt;

Dans le fichier '''/etc/bacula/bacula-sd.conf''' :&lt;br/&gt;
 '''Storage''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-fd.conf''' :&lt;br/&gt;
 '''FileDaemon''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key&lt;/span&gt;
 }

&lt;span style=&quot;background-color:#ff7272;&quot;&gt;Sous Windows faites attention&lt;/span&gt; aux chemins ce n'est pas un antislash mais deux slashs à la place :&lt;br/&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = &quot;C:\\keys\\ca.crt&quot;&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = &quot;C:\\keys\\client_win.crt&quot;&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = &quot;C:\\keys\\client_win.key&quot;&lt;/span&gt;

Et penser aussi à modifier le fichier '''C:\WINDOWS\system32\drivers\etc\hosts''' ou le dns.

=== Le chiffrage des sauvegardes ===

C'est dans les différents File Daemon que cela ce passe, les fameuses lignes '''PKI''' :&lt;br/&gt;
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Signatures = Yes&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# active les données signées&lt;/span&gt;           
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Encryption = Yes&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# active le chiffrage&lt;/span&gt;            
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/client.pem&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# paire de clé publique/privée du client&lt;/span&gt;     
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Master Key = &quot;/etc/bacula/keys/master.crt&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# clé publique maître&lt;/span&gt;&lt;br/&gt; 


Premiere étape généré une paire de clé maître de 2048 bits et chiffré en AES 256 (un mot de passe vous sera demandé):

 # openssl genrsa -aes256 -out master.key 2048 &lt;span style=&quot;color:#bd0000;&quot;&gt;# Votre clé privé : master.key&lt;/span&gt; 
 # openssl req -new -key master.key -x509 -out master.crt &lt;span style=&quot;color:#bd0000;&quot;&gt;# Votre clé publique : master.crt&lt;/span&gt; 

Ensuite on génére une paire de clé pour chaque client :&lt;br/&gt;
Générer une clé privé : 
 # openssl genrsa -aes256 -out client.key 2048

Le fait de chiffrer la clé en AES 256 nous permet de chiffrer notre sauvegarde en AES 256, les autres choix sont :&lt;br/&gt;
128, 192, AES-CBC et Blowfish-CBC&lt;br/&gt;

Générer la clé publique auto-signée :
 # openssl req -new -key -client.key -x509 -out client.crt 
Se débarrasser du mot de passe de la clé (que bacula puisse la lire!) :
 # openssl rsa -in client.key -out client.nopass.key
Copié la clé privé et publique dans le fichier '''.pem''' :
 # cat client.nopass.key client.crt &gt; client.pem &lt;span style=&quot;color:#bd0000;&quot;&gt;# Votre paire de clé publique/privée du client : client.pem&lt;/span&gt; 

Si votre paire de clé du client est perdu ou corrompu vous pouvez déchiffrer les données avec la paire de clé maître pour cela il faut :&lt;br/&gt;
concaténer la clé privé et publique :
 # cat master.key master.crt &gt; master.keypair
puis modifier la ligne PKI Keypair en y mettant la master.keypair :
 &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/master.keypair&quot;

source :&lt;br/&gt;
:[http://www.bacula.org/en/dev-manual/main/main/Data_Encryption.html la documentation de bacula]&lt;br/&gt;
:[http://sourceforge.net/mailarchive/forum.php?thread_name=21DF2F99-E2D9-4E4E-AF06-6BA0EF64383F%40langille.org&amp;forum_name=bacula-docs Data Encryption - subjectKeyIdentifier extension?]


== Utilisation ==
=== En mode Console ===
=== En mode Graphique ===



[[Utilisateur:Haludeis|Haludeis]] ([[Discussion utilisateur:Haludeis|discussion]]) 6 mai 2012 à 09:16 (CEST)</text>
      <sha1>slcpvt7bb3zqf3o1klzmauk3et8viai</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4199</id>
      <parentid>4198</parentid>
      <timestamp>2012-05-06T07:34:01Z</timestamp>
      <contributor>
        <username>Haludeis</username>
        <id>30</id>
      </contributor>
      <minor/>
      <comment>/* Le chiffrage des sauvegardes */</comment>
      <text xml:space="preserve" bytes="35425">[[Catégorie:Sauvegardes]]
{{Ébauche|Bacula}}
{{sid}}

== Présentation ==
Ce document est basé sur une installation stable de Debian (en ce moment Squeeze) et de Bacula 5.0.2.

Son but : sauvegarde, restauration et vérification en réseau &lt;br/&gt;
(reste à faire)

== Installation ==
Bacula peut utiliser les bases de données SQLite, MySql et PostGreSQL.Il suffit d'installer les paquets correspondant à votre choix. 

Changer &quot;-mysql&quot; par &quot;-pgsql&quot; ou &quot;-sqlite3&quot; sur le paquet director et le fd.

ici je choisi MySql (MySql étant déja installé):

 # aptitude install bacula-director-mysql bacula-sd-mysql bacula

Accorder les droits à bacula sur la base de données (vérifié si pas obsolète):
 # mysql -u root -p
 &gt; grant all privileges on bacula.* to 'bacula'@'localhost' identified by 'bacula' ;

Créer le répertoire de sauvegarde et accorder les droits à bacula :
 # mkdir /home/sauvegarde/
 # chown -R bacula.bacula /home/sauvegarde
 # chmod -R 660 /home/sauvegarde (---&gt; à vérifier)

== Configuration ==
Bacula se compose des fichiers suivants :

Le fichier générale de configuration le Director :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-dir.conf&lt;/span&gt;
Le fichier Storage Daemon concernant le stockage des données :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-sd.conf&lt;/span&gt;
Celui du File Daemon permettant l'accès aux données installé sur le client à sauvegarder :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-fd.conf&lt;/span&gt;
Le fichier permettant la connexion entre la console et le directeur :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bconsole.conf&lt;/span&gt; 

Ces fichiers représentent les différents services de Bacula, ils peuvent se trouver sur des machines totalement différentes.

=== La Console ===

'''/etc/bacula/bconsole.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' { 
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''DIRport''' = 9101 &lt;span style=&quot;color:#bd0000;&quot;&gt;# le port d'écoute du director&lt;/span&gt;  
:'''address''' = nom_resolu_par_dns_ou_IP &lt;span style=&quot;color:#bd0000;&quot;&gt;# ip ou dns du director&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;# le mot de passe du director&lt;/span&gt; 
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt; 
} &lt;/div&gt;

'''address''' : Attention le nom DNS est obligatoire pour une connexion SSL penser à configurer le fichier /etc/hosts ou le serveur dns.

:: si vous n'utilisez pas de connexion sécurisée vous pouvez mettre une adresse ip directement.

La partie bleu permet la sécurisation des données entre le director et la console ca.crt doit être le même partout les deux autres diffèrent&lt;br/&gt;
pour chaque éléments de bacula.&lt;br/&gt;
Pour l'instant ne vous préoccupez pas de cette partie, une explication plus complète sera détaillée dans le chapitre sur la sécurisation.&lt;br/&gt;
Sachez juste que cela ce trouve là. &lt;br/&gt;

=== Le File Daemon ===
La ressource Client (ou File Daemon) définit le nom du client (tel qu'il est utilisé par le director) ainsi que le port sur lequel le client est à l'écoute des connections du Director.&lt;br/&gt;

'''/etc/bacula/bacula-fd.conf''' 
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le mot de passe du director&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key &lt;/span&gt;
}

'''Director''' {
:'''Name''' = NOM_MON &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director restreint défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director_restreint&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;# son mot de passe&lt;/span&gt;
:'''Monitor''' = yes 
}

'''FileDaemon''' { 
:'''Name''' = NOM_FD &lt;span style=&quot;color:#bd0000;&quot;&gt;# le nom du File daemon&lt;/span&gt;
:'''FDport''' = 9102 &lt;span style=&quot;color:#bd0000;&quot;&gt;# son mot port d'écoute'&lt;/span&gt;
:'''WorkingDirectory''' = /var/lib/bacula
:'''Pid Directory''' = /var/run/bacula
:'''Maximum Concurrent Jobs''' = 8 &lt;span style=&quot;color:#bd0000;&quot;&gt;# le nombre maximum de sauvegardes simultanées&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key&lt;/span&gt; 
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Signatures = Yes&lt;/span&gt;           
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Encryption = Yes&lt;/span&gt;            
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/client.pem&quot;&lt;/span&gt;    
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Master Key = &quot;/etc/bacula/keys/master.crt&quot;&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les messages sont envoyés au director&lt;/span&gt; 
:'''Name''' = Standard
:'''director''' = NOM_DIR = all, !skipped, !restored
}
&lt;/div&gt;
&lt;br/&gt; 
'''Working Directory''' : Cette directive est obligatoire et spécifie un répertoire dans lequel le File Daemon peut placer ses fichiers d'état.&lt;br/&gt;
: Ce répertoire ne doit être utilisé que par Bacula, mais peut être partagé par d'autres daemons Bacula les définitions des noms doivent être uniques pour chaque démon.&lt;br/&gt; 
: Sur les systèmes Win32, dans certaines circonstances, vous pourriez avoir besoin de spécifier une lettre de lecteur dans le chemin de répertoire de travail spécifié.
: Aussi, s'il vous plaît assurez-vous que ce répertoire est accessible en écriture par l'utilisateur SYSTEM au contraire la restauration peut échouer&lt;br/&gt;
: (le fichier d'amorçage (bootstrap) qui est transféré vers le File Daemon du directeur est temporairement placé dans ce répertoire avant d'être transmis au Storage Daemon).&lt;br/&gt;
'''Pid Directory''' Cette directive est obligatoire et spécifie un répertoire dans lequel le directeur peut placer ses fichiers d'identification de processus.&lt;br/&gt;
: Le fichier d'identification de processus est utilisé pour stopper Bacula et éviter à plusieurs instances de Bacula de fonctionner simultanément.&lt;br/&gt;
: Cet enregistrement est nécessaire. L'expansion du shell standard de l'annuaire se fait lorsque le fichier de configuration est lu de telle sorte que des valeurs&lt;br/&gt;
: telles que $HOME seront correctement substituées.&lt;br/&gt;
: Typiquement, sur les systèmes Linux, vous mettrez: /var/run.Si vous n'installez pas Bacula dans les répertoires système, vous pouvez utiliser le répertoire de travail&lt;br/&gt;
: tel que défini ci-dessus.&lt;br/&gt; 

Pour voir toutes les possibilités du File Daemon je vous invite à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Client_File_daemon_Configur.html la documentation de Bacula] à ce sujet.&lt;br/&gt;

 
=== Le Storage Daemon ===
Le fichier de configuration du Storage Daemon a relativement peu de définitions de ressources. Toutefois, en raison de&lt;br/&gt;
la grande variation dans les médias de sauvegarde et des capacités du système, le démon de stockage doit être hautement configurable.&lt;br/&gt;

En conséquence, il y a un assez grand nombre de directives dans la définition des ressources de périphérique qui vous permet de définir.

toutes les caractéristiques de votre périphérique de stockage (normalement un lecteur de bande). Heureusement, avec des dispositifs 

de stockage modernes, les valeurs par défaut sont suffisantes, et très peu de directives sont réellement nécessaires.

'''/etc/bacula/bacula-sd.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = NOM_SD &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nom du Storage Daemon&lt;/span&gt;
:'''SDPort''' = 9103 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son port d'écoute&lt;/span&gt;
:''' WorkingDirectory''' = &quot;/var/lib/bacula&quot; 
:''' Pid Directory''' = &quot;/var/run/bacula&quot; 
:'''Maximum Concurrent Jobs''' = 8 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nombre maximum de sauvegardes simultanées par media&lt;/span&gt;
:'''SDAddress''' = nom_dns_ou_ip &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son addresse ip ou son nom dns&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# et son mot de passe&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;                                          
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_MON &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director restreint défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director_restreint&quot;
:'''Monitor''' = yes
}

'''Device''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# ou répertoire&lt;/span&gt; 
:'''Name''' = Nom_Device &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Un nom pour l'identifier&lt;/span&gt;
:'''Media Type''' = File &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son type : File, Tape, Fifo, DVD&lt;/span&gt;
:'''Archive Device''' = /home/sauvegarde/ &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son emplacement&lt;/span&gt;
:'''LabelMedia''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Lui donne un nom&lt;/span&gt;
:'''Random Access''' = Yes;
:'''AutomaticMount''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# monte le media en automatique&lt;/span&gt;
:'''RemovableMedia''' = no;
:'''AlwaysOpen''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Toujours accessible&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les messages sont envoyés au director&lt;/span&gt; 
:'''Name''' = Standard
:'''director''' = NOM_DIR = all
}
&lt;/div&gt;
&lt;br/&gt; 
'''Random Access''' : Si Oui, le périphérique est supposé être un moyen d'accès aléatoire qui prend en charge le lseek (Dvd,Usb...) &lt;br/&gt;
: Non pour les dispositifs d'accès non-aléatoires tels que des bandes.
'''RemovableMedia''' : Si oui, cet appareil prend en charge les supports amovibles (par exemple, cassettes ou de CD).&lt;br/&gt;
: Si Non, les médias ne peuvent pas être supprimés (par exemple, une zone de sauvegarde intermédiaire sur un disque dur).&lt;br/&gt;

Pour voir toutes les possibilités du Storage Daemon je vous invite à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html la documentation de Bacula] à ce sujet.

=== Le Director ===

De tous les fichiers de configuration nécessaires à l'exécution de Bacula, le directeur est le plus compliqué, et celui que vous aurez besoin de modifier&lt;br/&gt;
le plus souvent. Afin de simplifier sa comprehension nous le séparons en plusieurs fichiers.&lt;br/&gt;
Pour inclure un fichier dans bacula-dir.conf, il suffit de mettre un @ devant le chemin du fichier à inclure.&lt;br/&gt;
 @/chemin_complet/fichier

Comme toujours vous y gagneriez à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html la documentation] du director.

'''/etc/bacula/bacula-dir.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director&lt;/span&gt;
:'''DIRport''' = 9101 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son port d'écoute&lt;/span&gt;
:'''QueryFile''' = &quot;/etc/bacula/query.sql&quot;
:'''WorkingDirectory''' = &quot;/var/lib/bacula&quot;
:'''PidDirectory''' = &quot;/var/run/bacula&quot;
:'''Maximum Concurrent Jobs''' = 4 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nombre maximum de sauvegardes simultanées&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot;
:'''Messages''' = Standard
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;consolerCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key &lt;/span&gt;
}

@/etc/bacula/configuration/bacula_dir_filset.conf &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# On ajoute les fichiers de configuration des sauvegardes&lt;/span&gt;&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_job.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_storage.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_pool.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_client.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_schedule.conf&lt;br/&gt;

'''Catalog''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le catalogue ou Bacula stocke toutes ses informations&lt;/span&gt;
:'''Name''' = MyCatalog &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son nom&lt;/span&gt;
:dbname = &quot;bacula&quot;; dbuser = &quot;bacula&quot;; dbpassword = &quot;mdp_base_SQL&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les accés à la base Sql&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Définitions des messages envoyés par Bacula&lt;/span&gt;
:'''Name''' = Standard &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Un nom pour l'identifier&lt;/span&gt;
:'''mailcommand''' = &quot;/usr/sbin/bsmtp -h localhost -f \&quot;\(Bacula\) \&lt;%r\&gt;\&quot; -s \&quot;Bacula daemon message\&quot; %r&quot;
:'''mail''' = root@localhost = all, !skipped
:'''console''' = all, !skipped, !saved
::append = &quot;/var/bacula/log&quot; = all, !skipped
}
'''Director''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Director restreint utile pour les clients&lt;/span&gt;
:'''Name''' = DIR_MON
:'''Password''' = &quot;Mdp_du_director_restreint&quot;
:'''CommandACL''' = status, .status
}
&lt;/div&gt;

'''QueryFile''' = Cette directive est obligatoire et spécifie un répertoire et le fichier dans lequel le directeur peut trouver les états conservés SQL&lt;br/&gt;
pour les commandes de requête de la console.&lt;br/&gt;

==== Filset====

C'est dans ce fichier que l'on trouve les répertoires et fichiers à sauvegarder.&lt;br/&gt;

'''/etc/bacula/configuration/bacula_dir_filset.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''FileSet''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Fileset Windows&lt;/span&gt;
:'''Name''' = &quot;DONNEES_FSET&quot; 
:'''Enable VSS''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# activation ou non du Volume Shadow copy&lt;/span&gt;
:'''Include''' {
::'''Options''' {
:::compression = GZIP &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on compresse la sauvegarde possibilité de donner un niveau de compression ex: GZIP9&lt;/span&gt;
:::signature = MD5 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on vérifie les fichiers sauvegardés avec md5 ou sha1&lt;/span&gt;
:::accurate = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# si cette valeur est a &quot;no&quot; même les fichiers effacés seront restaurés&lt;/span&gt;
::}
::'''File''' = &quot;C:/DONNEES&quot;&lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le(s) répertoire(s) / fichier(s) à inclure&lt;/span&gt;
:}

:'''Exclude''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le(s) répertoire(s) / fichier(s) à exclure&lt;/span&gt;
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/yyy/zzz/yyy&quot;
:}
}

'''FileSet''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Fileset Linux&lt;/span&gt;
:'''Name''' = &quot;BACULA_FSET&quot;
:'''Enable VSS''' = no
:'''Include''' {
::'''Options''' {
:::signature = MD5
:::compression = GZIP9
:::accurate = yes
::}
::'''File''' = &quot;/etc/bacula/&quot;
}
&lt;/div&gt;
Vous trouverez le détail des ressources du fileset [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001870000000000000000 ici]

==== Storage ====

C'est ici que vous définissez le Storage Daemon ainsi que le device (répertoire) de sauvegarde à utiliser.

'''/etc/bacula/configuration/bacula_dir_storage.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = Donnees_st &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Vous lui donnez un nom&lt;/span&gt;
:'''Address''' = nom_dns_ou_ip_du_storagedaemon &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# L' adresse du Storage Daemon défini plus haut&lt;/span&gt;
:'''SDPort''' = 9103
:'''Password''' = &quot;mdp_du_storagedaemon&quot;
:'''Device''' = donnees_device &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# un des devices défini dans le fichier du Storage Daemon&lt;/span&gt;
}&lt;br/&gt;

&lt;/div&gt;
Vous trouverez le détail des ressources du storage [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018140000000000000000 ici]

==== Pool ====

Ce fichier décrit la façon dont sont gérés les volumes de sauvegarde.

'''/etc/bacula/configuration/bacula_dir_pool.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Pool'''{
:'''Name''' = Donnees_Pool
:'''Pool Type''' = Backup &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son type pour l'instant seul Backup est implémenté d'autres viendront &quot;Archive,Cloned,Migration,Copy,Save&quot;&lt;/span&gt;
:'''Recycle''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on peut réutiliser les anciens volumes purgés&lt;/span&gt;
:'''AutoPrune''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# On laisse Bacula gérer les volumes&lt;/span&gt;
:'''File Retention''' = 180 days &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# durée de rétention des fichiers&lt;/span&gt;
:'''Job Retention''' = 180 days &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# durée de rétention des jobs&lt;/span&gt;
:'''Maximum Volume Jobs''' = 1 
:'''Label Format''' = &quot;${Level}_${Job}_${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}_${Hour:p/2/0/r}h${Minute:p/2/0/r}m&quot;
}&lt;br/&gt;
&lt;/div&gt;

'''Maximum Volume Jobs''' = Cette directive n'est pas obligatoire mais en fixant cette valeur à 1 on s'assure&lt;br/&gt;
de n'avoir qu'un seul fichier par sauvegarde. &lt;br/&gt;
'''Label Format''' = permet de nommer son volume de sauvegarde &lt;br/&gt;

Vous trouverez le détail des ressources pool [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018150000000000000000 ici]

==== Client ====

Dans ce fichier vous retrouvez tous vos clients à sauvegarder.

'''/etc/bacula/configuration/bacula_dir_client.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Client''' {
:'''Name''' = Nom_du_poste_a_savegarder
:'''Address''' = nom_dns_ou_ip
:'''FDPort''' = 9102
:'''Catalog''' = MyCatalog
:'''Password''' = &quot;mdp_du_client&quot;
}
&lt;/div&gt;
Vous trouverez le détail des ressources du client [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018130000000000000000 ici]

==== Schedule ====

Dans celui-ci vous définissez les heures et les niveaux de vos sauvegardes automatiques.

'''/etc/bacula/configuration/bacula_dir_schedule.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Schedule''' {
:'''Name''' = &quot;Donnees&quot;
:'''Run''' = Full 1st sun at 23:05 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# complète le 1er dimanche du mois à 23:05&lt;/span&gt;
:'''Run''' = Differential 2nd-5th sun at 23:05 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Différentiel le 2em et 5em dimanche du mois à 23:05&lt;/span&gt;
:'''Run''' = Incremental mon-sat at 21:00 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Incrémentiel su lundi au samedi à 21:00&lt;/span&gt;
}&lt;br/&gt;
&lt;/div&gt;
Vous trouverez le détail des ressources schedule [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001850000000000000000 ici]

==== Job ====

Et enfin dans ce fichier ci vous assemblez tous vos éléments.

'''/etc/bacula/configuration/bacula_dir_job.conf'''

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Job''' {
:'''Name''' = &quot;DONNEES&quot;
:'''Type''' = Backup
:'''Level''' = Incremental &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le niveau de la sauvegarde&lt;/span&gt;
:'''Client''' = SERVEURZZZ
:'''FileSet''' = &quot;DONNEES_FSET&quot;
:'''Schedule''' = &quot;Donnees&quot;
:'''Storage''' = Donnee_st
:'''Pool'''= Donnees_Pool
:'''Write Bootstrap''' = /var/lib/bacula/donnee.bsr &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# fichier contenant l'ensemble des données de la sauvegarde&lt;/span&gt;
:'''Priority''' = 20 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# la priorité du job de sauvegarde : plus le nombre est petit plus la priorité est haute&lt;/span&gt;
:'''Messages''' = Standard 
}
&lt;/div&gt;

Si dans vos différents jobs vous avez les mêmes données (Fileset,Schedule...) vous pouvez créer un '''JobDefs'''.  

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''JobDefs''' {
:'''Name''' = &quot;JOBCOMMUN&quot;
:'''Type''' = Backup
:'''Level''' = Full
:'''FileSet''' = &quot;DONNEES_FSET&quot;
:'''Schedule''' = &quot;Donnees&quot;
:'''Pool''' = Donnees_Pool
:'''Storage''' = Donnees-st
:'''Messages''' = Standard
}

'''Job''' {
:'''Name''' = &quot;DONNEES&quot;
:'''JobDefs''' = &quot;JOBCOMMUN&quot;
:'''Client''' = SERVEURZZZ
:'''Write Bootstrap''' = /var/lib/bacula/donnee.bsr 
:'''Priority''' = 10 
:'''Messages''' = Standard 
}

&lt;/div&gt;
Vous trouverez le détail des ressources job [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001830000000000000000 ici]

== Sécurisation ==

Tout au long du chapitre sur la configuration certaines parties en bleue n'ont pas été expliquées, elles concernaient essentiellement&lt;br/&gt;
des commandes liées aux connexions SSL et aux Chiffrage des données.&lt;br/&gt;

=== Les connexions SSL ===

Afin de sécuriser un peu notre système de sauvegarde nous pouvons mettre en place des connexions SSL entre les différents services de Bacula.&lt;br/&gt;
Dans un premier temps nous allons créer notre certificat d'autorité de certification, c'est lui qui validera (signera) les autres.

Si vous créez plusieurs certificats le conseil que je vous donne c'est d'éditer le fichier '''/etc/ssl/openssl.conf''' et &lt;br/&gt;
dans la section :&quot;req_distinguished_name&quot; de mettre vos paramêtres personalisés.

'''Exemple:'''

 countryName                     = Country Name (2 letter code)
 countryName_default             = &lt;span style=&quot;color:#bd0000;&quot;&gt;FR&lt;/span&gt;
 countryName_min                 = 2
 countryName_max                 = 2
 
 stateOrProvinceName             = State or Province Name (full name)
 stateOrProvinceName_default     = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre département&lt;/span&gt;
 
 localityName                    = Locality Name (eg, city)
 localityName_default            = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre ville&lt;/span&gt;
 
 0.organizationName              = Organization Name (eg, company)
 0.organizationName_default      = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre société&lt;/span&gt;
 
 # we can do this but it is not needed normally :-)
 #1.organizationName             = Second Organization Name (eg, company)
 #1.organizationName_default     = World Wide Web Pty Ltd
 
 organizationalUnitName          = Organizational Unit Name (eg, section)
 organizationalUnitName_default  = &lt;span style=&quot;color:#bd0000;&quot;&gt;Interne&lt;/span&gt;
 
 commonName                      = Common Name (eg, YOUR name)
 commonName_max                  = 64
 emailAddress                    = Email Address
 emailAddress_default            = &lt;span style=&quot;color:#bd0000;&quot;&gt;Une adresse mail&lt;/span&gt;
 emailAddress_max                = 64

Commencez par créer le répertoire /etc/bacula/'''keys'''/ puis entrez y.

Création certificat d'autorité de certification :

 #openssl genrsa -aes256 -out ca.key 2048 &lt;span style=&quot;color:#bd0000;&quot;&gt;# Génére une clé RSA 2048 bits et son chiffrement en AES 256 un mot de passe vous sera demandé.&lt;/span&gt; 
 #openssl req -new -key ca.key -x509 -out ca.crt &lt;span style=&quot;color:#bd0000;&quot;&gt;# Génére le certificat publique de la clé.&lt;/span&gt; 

Ensuite il faut créer une clé et un certificat par services que nous voulons sécuriser.
Par exemple pour le director :

 #openssl genrsa -out director.key 2048
 #openssl req -new -key director.key &gt; director.csr
 #openssl x509 -req -in director.csr -out director.crt -CA ca.crt -CAkey ca.key -CAcreateserial -CAserial ca.srl

Il est obligatoire de mettre le même nom dans le Common Name que le nom résolu par DNS du service.&lt;br/&gt;
Si l'adresse dns du director est &quot;director.local&quot; alors le Common Name est &quot;director.local&quot; et n'oubliez pas de configurer&lt;br/&gt;
le fichier '''/etc/hosts''' ou le serveur DNS.&lt;br/&gt;
L'option CAcreateserial n'est nécessaire que la première fois, ensuite pour la console :

 #openssl genrsa -out console.key 2048
 #openssl req -new -key console.key &gt; console.csr
 #openssl x509 -req -in console.csr -out console.crt -CA ca.crt -CAkey ca.key -CAserial ca.srl

Maintenant vous pouvez continuer seul pour les autres certificats (filedaemon.crt/key,storagedaemon.crt/key...).&lt;br/&gt;
Pour plus d'informations sur les certificats vous pouvez voir :&lt;br/&gt;
[http://www.batard.eu/2010/11/maitriser-les-certificats-avec-openssl/ N30Secs Blog] , 
[http://www.linux-france.org/prj/edu/archinet/systeme/ch24s03.html Linux-france.org] , 
[http://www.madboa.com/geek/openssl/ Madboa.com]


Pour établir une connexion sécurisé entre:

'''Director | Console'''&lt;br/&gt;
Revenons à notre fichier '''/etc/bacula/bconsole.conf''' et plus précisement à ces lignes :

 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Active une connexion SSL&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Oblige une connexion SSL&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers votre certificat publique du '''ca''' généré plus haut&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers votre certificat publique de la '''console''' généré plus haut&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers la clé privé de la '''console''' généré plus haut&lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-dir.conf''' :&lt;br/&gt;
 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;consolerCN&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Ici on n'autorise que la console en donnant le Common Name du certificat de la console&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key &lt;/span&gt;
 }

Vous voilà avec une connexion sécurisé entre votre console et le director.&lt;br/&gt;

'''Director | Filedaemon'''&lt;br/&gt;

Dans le fichier '''/etc/bacula/bacula-fd.conf''' :&lt;br/&gt;
 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;DirectorCN&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Ici on n'autorise que le director en donnant le Common Name du certificat du director&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key &lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-dir.conf''' :&lt;br/&gt;
 '''Client''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key&lt;/span&gt;
 }

'''Director | Storagedaemon'''&lt;br/&gt;

Dans le fichier '''/etc/bacula/bacula-sd.conf''' :&lt;br/&gt;
 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;DirectorCN&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Ici on n'autorise que le director en donnant le Common Name du certificat du director&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key &lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-dir.conf''' :&lt;br/&gt;
 '''Storage''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key&lt;/span&gt;
 }

'''Filedaemon | Storagedaemon'''&lt;br/&gt;

Dans le fichier '''/etc/bacula/bacula-sd.conf''' :&lt;br/&gt;
 '''Storage''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-fd.conf''' :&lt;br/&gt;
 '''FileDaemon''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key&lt;/span&gt;
 }

&lt;span style=&quot;background-color:#ff7272;&quot;&gt;Sous Windows faites attention&lt;/span&gt; aux chemins ce n'est pas un antislash mais deux slashs à la place :&lt;br/&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = &quot;C:\\keys\\ca.crt&quot;&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = &quot;C:\\keys\\client_win.crt&quot;&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = &quot;C:\\keys\\client_win.key&quot;&lt;/span&gt;

Et penser aussi à modifier le fichier '''C:\WINDOWS\system32\drivers\etc\hosts''' ou le dns.

=== Le chiffrement des sauvegardes ===

C'est dans les différents File Daemon que cela ce passe, les fameuses lignes '''PKI''' :&lt;br/&gt;
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Signatures = Yes&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# active les données signées&lt;/span&gt;           
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Encryption = Yes&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# active le chiffrage&lt;/span&gt;            
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/client.pem&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# paire de clé publique/privée du client&lt;/span&gt;     
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Master Key = &quot;/etc/bacula/keys/master.crt&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# clé publique maître&lt;/span&gt;&lt;br/&gt; 


Premiere étape généré une paire de clé maître de 2048 bits et chiffré en AES 256 (un mot de passe vous sera demandé):

 # openssl genrsa -aes256 -out master.key 2048 &lt;span style=&quot;color:#bd0000;&quot;&gt;# Votre clé privé : master.key&lt;/span&gt; 
 # openssl req -new -key master.key -x509 -out master.crt &lt;span style=&quot;color:#bd0000;&quot;&gt;# Votre clé publique : master.crt&lt;/span&gt; 

Ensuite on génére une paire de clé pour chaque client :&lt;br/&gt;
Générer une clé privé : 
 # openssl genrsa -aes256 -out client.key 2048

Le fait de chiffrer la clé en AES 256 nous permet de chiffrer notre sauvegarde en AES 256, les autres choix sont :&lt;br/&gt;
128, 192, AES-CBC et Blowfish-CBC&lt;br/&gt;

Générer la clé publique auto-signée :
 # openssl req -new -key -client.key -x509 -out client.crt 
Se débarrasser du mot de passe de la clé (que bacula puisse la lire!) :
 # openssl rsa -in client.key -out client.nopass.key
Copié la clé privé et publique dans le fichier '''.pem''' :
 # cat client.nopass.key client.crt &gt; client.pem &lt;span style=&quot;color:#bd0000;&quot;&gt;# Votre paire de clé publique/privée du client : client.pem&lt;/span&gt; 

Si votre paire de clé du client est perdu ou corrompu vous pouvez déchiffrer les données avec la paire de clé maître pour cela il faut :&lt;br/&gt;
concaténer la clé privé et publique :
 # cat master.key master.crt &gt; master.keypair
puis modifier la ligne PKI Keypair en y mettant la master.keypair :
 &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/master.keypair&quot;

source :&lt;br/&gt;
:[http://www.bacula.org/en/dev-manual/main/main/Data_Encryption.html la documentation de bacula]&lt;br/&gt;
:[http://sourceforge.net/mailarchive/forum.php?thread_name=21DF2F99-E2D9-4E4E-AF06-6BA0EF64383F%40langille.org&amp;forum_name=bacula-docs Data Encryption - subjectKeyIdentifier extension?]

== Utilisation ==
=== En mode Console ===
=== En mode Graphique ===



[[Utilisateur:Haludeis|Haludeis]] ([[Discussion utilisateur:Haludeis|discussion]]) 6 mai 2012 à 09:16 (CEST)</text>
      <sha1>ex6pf3ikfueiutkk7r2wgq52dpal9j6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4200</id>
      <parentid>4199</parentid>
      <timestamp>2012-05-06T07:36:35Z</timestamp>
      <contributor>
        <username>Haludeis</username>
        <id>30</id>
      </contributor>
      <minor/>
      <comment>/* Les connexions SSL */</comment>
      <text xml:space="preserve" bytes="35428">[[Catégorie:Sauvegardes]]
{{Ébauche|Bacula}}
{{sid}}

== Présentation ==
Ce document est basé sur une installation stable de Debian (en ce moment Squeeze) et de Bacula 5.0.2.

Son but : sauvegarde, restauration et vérification en réseau &lt;br/&gt;
(reste à faire)

== Installation ==
Bacula peut utiliser les bases de données SQLite, MySql et PostGreSQL.Il suffit d'installer les paquets correspondant à votre choix. 

Changer &quot;-mysql&quot; par &quot;-pgsql&quot; ou &quot;-sqlite3&quot; sur le paquet director et le fd.

ici je choisi MySql (MySql étant déja installé):

 # aptitude install bacula-director-mysql bacula-sd-mysql bacula

Accorder les droits à bacula sur la base de données (vérifié si pas obsolète):
 # mysql -u root -p
 &gt; grant all privileges on bacula.* to 'bacula'@'localhost' identified by 'bacula' ;

Créer le répertoire de sauvegarde et accorder les droits à bacula :
 # mkdir /home/sauvegarde/
 # chown -R bacula.bacula /home/sauvegarde
 # chmod -R 660 /home/sauvegarde (---&gt; à vérifier)

== Configuration ==
Bacula se compose des fichiers suivants :

Le fichier générale de configuration le Director :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-dir.conf&lt;/span&gt;
Le fichier Storage Daemon concernant le stockage des données :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-sd.conf&lt;/span&gt;
Celui du File Daemon permettant l'accès aux données installé sur le client à sauvegarder :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-fd.conf&lt;/span&gt;
Le fichier permettant la connexion entre la console et le directeur :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bconsole.conf&lt;/span&gt; 

Ces fichiers représentent les différents services de Bacula, ils peuvent se trouver sur des machines totalement différentes.

=== La Console ===

'''/etc/bacula/bconsole.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' { 
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''DIRport''' = 9101 &lt;span style=&quot;color:#bd0000;&quot;&gt;# le port d'écoute du director&lt;/span&gt;  
:'''address''' = nom_resolu_par_dns_ou_IP &lt;span style=&quot;color:#bd0000;&quot;&gt;# ip ou dns du director&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;# le mot de passe du director&lt;/span&gt; 
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt; 
} &lt;/div&gt;

'''address''' : Attention le nom DNS est obligatoire pour une connexion SSL penser à configurer le fichier /etc/hosts ou le serveur dns.

:: si vous n'utilisez pas de connexion sécurisée vous pouvez mettre une adresse ip directement.

La partie bleu permet la sécurisation des données entre le director et la console ca.crt doit être le même partout les deux autres diffèrent&lt;br/&gt;
pour chaque éléments de bacula.&lt;br/&gt;
Pour l'instant ne vous préoccupez pas de cette partie, une explication plus complète sera détaillée dans le chapitre sur la sécurisation.&lt;br/&gt;
Sachez juste que cela ce trouve là. &lt;br/&gt;

=== Le File Daemon ===
La ressource Client (ou File Daemon) définit le nom du client (tel qu'il est utilisé par le director) ainsi que le port sur lequel le client est à l'écoute des connections du Director.&lt;br/&gt;

'''/etc/bacula/bacula-fd.conf''' 
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le mot de passe du director&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key &lt;/span&gt;
}

'''Director''' {
:'''Name''' = NOM_MON &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director restreint défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director_restreint&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;# son mot de passe&lt;/span&gt;
:'''Monitor''' = yes 
}

'''FileDaemon''' { 
:'''Name''' = NOM_FD &lt;span style=&quot;color:#bd0000;&quot;&gt;# le nom du File daemon&lt;/span&gt;
:'''FDport''' = 9102 &lt;span style=&quot;color:#bd0000;&quot;&gt;# son mot port d'écoute'&lt;/span&gt;
:'''WorkingDirectory''' = /var/lib/bacula
:'''Pid Directory''' = /var/run/bacula
:'''Maximum Concurrent Jobs''' = 8 &lt;span style=&quot;color:#bd0000;&quot;&gt;# le nombre maximum de sauvegardes simultanées&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key&lt;/span&gt; 
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Signatures = Yes&lt;/span&gt;           
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Encryption = Yes&lt;/span&gt;            
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/client.pem&quot;&lt;/span&gt;    
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Master Key = &quot;/etc/bacula/keys/master.crt&quot;&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les messages sont envoyés au director&lt;/span&gt; 
:'''Name''' = Standard
:'''director''' = NOM_DIR = all, !skipped, !restored
}
&lt;/div&gt;
&lt;br/&gt; 
'''Working Directory''' : Cette directive est obligatoire et spécifie un répertoire dans lequel le File Daemon peut placer ses fichiers d'état.&lt;br/&gt;
: Ce répertoire ne doit être utilisé que par Bacula, mais peut être partagé par d'autres daemons Bacula les définitions des noms doivent être uniques pour chaque démon.&lt;br/&gt; 
: Sur les systèmes Win32, dans certaines circonstances, vous pourriez avoir besoin de spécifier une lettre de lecteur dans le chemin de répertoire de travail spécifié.
: Aussi, s'il vous plaît assurez-vous que ce répertoire est accessible en écriture par l'utilisateur SYSTEM au contraire la restauration peut échouer&lt;br/&gt;
: (le fichier d'amorçage (bootstrap) qui est transféré vers le File Daemon du directeur est temporairement placé dans ce répertoire avant d'être transmis au Storage Daemon).&lt;br/&gt;
'''Pid Directory''' Cette directive est obligatoire et spécifie un répertoire dans lequel le directeur peut placer ses fichiers d'identification de processus.&lt;br/&gt;
: Le fichier d'identification de processus est utilisé pour stopper Bacula et éviter à plusieurs instances de Bacula de fonctionner simultanément.&lt;br/&gt;
: Cet enregistrement est nécessaire. L'expansion du shell standard de l'annuaire se fait lorsque le fichier de configuration est lu de telle sorte que des valeurs&lt;br/&gt;
: telles que $HOME seront correctement substituées.&lt;br/&gt;
: Typiquement, sur les systèmes Linux, vous mettrez: /var/run.Si vous n'installez pas Bacula dans les répertoires système, vous pouvez utiliser le répertoire de travail&lt;br/&gt;
: tel que défini ci-dessus.&lt;br/&gt; 

Pour voir toutes les possibilités du File Daemon je vous invite à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Client_File_daemon_Configur.html la documentation de Bacula] à ce sujet.&lt;br/&gt;

 
=== Le Storage Daemon ===
Le fichier de configuration du Storage Daemon a relativement peu de définitions de ressources. Toutefois, en raison de&lt;br/&gt;
la grande variation dans les médias de sauvegarde et des capacités du système, le démon de stockage doit être hautement configurable.&lt;br/&gt;

En conséquence, il y a un assez grand nombre de directives dans la définition des ressources de périphérique qui vous permet de définir.

toutes les caractéristiques de votre périphérique de stockage (normalement un lecteur de bande). Heureusement, avec des dispositifs 

de stockage modernes, les valeurs par défaut sont suffisantes, et très peu de directives sont réellement nécessaires.

'''/etc/bacula/bacula-sd.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = NOM_SD &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nom du Storage Daemon&lt;/span&gt;
:'''SDPort''' = 9103 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son port d'écoute&lt;/span&gt;
:''' WorkingDirectory''' = &quot;/var/lib/bacula&quot; 
:''' Pid Directory''' = &quot;/var/run/bacula&quot; 
:'''Maximum Concurrent Jobs''' = 8 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nombre maximum de sauvegardes simultanées par media&lt;/span&gt;
:'''SDAddress''' = nom_dns_ou_ip &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son addresse ip ou son nom dns&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# et son mot de passe&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;                                          
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_MON &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director restreint défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director_restreint&quot;
:'''Monitor''' = yes
}

'''Device''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# ou répertoire&lt;/span&gt; 
:'''Name''' = Nom_Device &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Un nom pour l'identifier&lt;/span&gt;
:'''Media Type''' = File &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son type : File, Tape, Fifo, DVD&lt;/span&gt;
:'''Archive Device''' = /home/sauvegarde/ &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son emplacement&lt;/span&gt;
:'''LabelMedia''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Lui donne un nom&lt;/span&gt;
:'''Random Access''' = Yes;
:'''AutomaticMount''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# monte le media en automatique&lt;/span&gt;
:'''RemovableMedia''' = no;
:'''AlwaysOpen''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Toujours accessible&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les messages sont envoyés au director&lt;/span&gt; 
:'''Name''' = Standard
:'''director''' = NOM_DIR = all
}
&lt;/div&gt;
&lt;br/&gt; 
'''Random Access''' : Si Oui, le périphérique est supposé être un moyen d'accès aléatoire qui prend en charge le lseek (Dvd,Usb...) &lt;br/&gt;
: Non pour les dispositifs d'accès non-aléatoires tels que des bandes.
'''RemovableMedia''' : Si oui, cet appareil prend en charge les supports amovibles (par exemple, cassettes ou de CD).&lt;br/&gt;
: Si Non, les médias ne peuvent pas être supprimés (par exemple, une zone de sauvegarde intermédiaire sur un disque dur).&lt;br/&gt;

Pour voir toutes les possibilités du Storage Daemon je vous invite à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html la documentation de Bacula] à ce sujet.

=== Le Director ===

De tous les fichiers de configuration nécessaires à l'exécution de Bacula, le directeur est le plus compliqué, et celui que vous aurez besoin de modifier&lt;br/&gt;
le plus souvent. Afin de simplifier sa comprehension nous le séparons en plusieurs fichiers.&lt;br/&gt;
Pour inclure un fichier dans bacula-dir.conf, il suffit de mettre un @ devant le chemin du fichier à inclure.&lt;br/&gt;
 @/chemin_complet/fichier

Comme toujours vous y gagneriez à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html la documentation] du director.

'''/etc/bacula/bacula-dir.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director&lt;/span&gt;
:'''DIRport''' = 9101 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son port d'écoute&lt;/span&gt;
:'''QueryFile''' = &quot;/etc/bacula/query.sql&quot;
:'''WorkingDirectory''' = &quot;/var/lib/bacula&quot;
:'''PidDirectory''' = &quot;/var/run/bacula&quot;
:'''Maximum Concurrent Jobs''' = 4 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nombre maximum de sauvegardes simultanées&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot;
:'''Messages''' = Standard
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;consolerCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key &lt;/span&gt;
}

@/etc/bacula/configuration/bacula_dir_filset.conf &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# On ajoute les fichiers de configuration des sauvegardes&lt;/span&gt;&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_job.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_storage.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_pool.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_client.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_schedule.conf&lt;br/&gt;

'''Catalog''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le catalogue ou Bacula stocke toutes ses informations&lt;/span&gt;
:'''Name''' = MyCatalog &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son nom&lt;/span&gt;
:dbname = &quot;bacula&quot;; dbuser = &quot;bacula&quot;; dbpassword = &quot;mdp_base_SQL&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les accés à la base Sql&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Définitions des messages envoyés par Bacula&lt;/span&gt;
:'''Name''' = Standard &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Un nom pour l'identifier&lt;/span&gt;
:'''mailcommand''' = &quot;/usr/sbin/bsmtp -h localhost -f \&quot;\(Bacula\) \&lt;%r\&gt;\&quot; -s \&quot;Bacula daemon message\&quot; %r&quot;
:'''mail''' = root@localhost = all, !skipped
:'''console''' = all, !skipped, !saved
::append = &quot;/var/bacula/log&quot; = all, !skipped
}
'''Director''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Director restreint utile pour les clients&lt;/span&gt;
:'''Name''' = DIR_MON
:'''Password''' = &quot;Mdp_du_director_restreint&quot;
:'''CommandACL''' = status, .status
}
&lt;/div&gt;

'''QueryFile''' = Cette directive est obligatoire et spécifie un répertoire et le fichier dans lequel le directeur peut trouver les états conservés SQL&lt;br/&gt;
pour les commandes de requête de la console.&lt;br/&gt;

==== Filset====

C'est dans ce fichier que l'on trouve les répertoires et fichiers à sauvegarder.&lt;br/&gt;

'''/etc/bacula/configuration/bacula_dir_filset.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''FileSet''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Fileset Windows&lt;/span&gt;
:'''Name''' = &quot;DONNEES_FSET&quot; 
:'''Enable VSS''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# activation ou non du Volume Shadow copy&lt;/span&gt;
:'''Include''' {
::'''Options''' {
:::compression = GZIP &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on compresse la sauvegarde possibilité de donner un niveau de compression ex: GZIP9&lt;/span&gt;
:::signature = MD5 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on vérifie les fichiers sauvegardés avec md5 ou sha1&lt;/span&gt;
:::accurate = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# si cette valeur est a &quot;no&quot; même les fichiers effacés seront restaurés&lt;/span&gt;
::}
::'''File''' = &quot;C:/DONNEES&quot;&lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le(s) répertoire(s) / fichier(s) à inclure&lt;/span&gt;
:}

:'''Exclude''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le(s) répertoire(s) / fichier(s) à exclure&lt;/span&gt;
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/yyy/zzz/yyy&quot;
:}
}

'''FileSet''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Fileset Linux&lt;/span&gt;
:'''Name''' = &quot;BACULA_FSET&quot;
:'''Enable VSS''' = no
:'''Include''' {
::'''Options''' {
:::signature = MD5
:::compression = GZIP9
:::accurate = yes
::}
::'''File''' = &quot;/etc/bacula/&quot;
}
&lt;/div&gt;
Vous trouverez le détail des ressources du fileset [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001870000000000000000 ici]

==== Storage ====

C'est ici que vous définissez le Storage Daemon ainsi que le device (répertoire) de sauvegarde à utiliser.

'''/etc/bacula/configuration/bacula_dir_storage.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = Donnees_st &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Vous lui donnez un nom&lt;/span&gt;
:'''Address''' = nom_dns_ou_ip_du_storagedaemon &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# L' adresse du Storage Daemon défini plus haut&lt;/span&gt;
:'''SDPort''' = 9103
:'''Password''' = &quot;mdp_du_storagedaemon&quot;
:'''Device''' = donnees_device &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# un des devices défini dans le fichier du Storage Daemon&lt;/span&gt;
}&lt;br/&gt;

&lt;/div&gt;
Vous trouverez le détail des ressources du storage [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018140000000000000000 ici]

==== Pool ====

Ce fichier décrit la façon dont sont gérés les volumes de sauvegarde.

'''/etc/bacula/configuration/bacula_dir_pool.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Pool'''{
:'''Name''' = Donnees_Pool
:'''Pool Type''' = Backup &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son type pour l'instant seul Backup est implémenté d'autres viendront &quot;Archive,Cloned,Migration,Copy,Save&quot;&lt;/span&gt;
:'''Recycle''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on peut réutiliser les anciens volumes purgés&lt;/span&gt;
:'''AutoPrune''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# On laisse Bacula gérer les volumes&lt;/span&gt;
:'''File Retention''' = 180 days &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# durée de rétention des fichiers&lt;/span&gt;
:'''Job Retention''' = 180 days &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# durée de rétention des jobs&lt;/span&gt;
:'''Maximum Volume Jobs''' = 1 
:'''Label Format''' = &quot;${Level}_${Job}_${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}_${Hour:p/2/0/r}h${Minute:p/2/0/r}m&quot;
}&lt;br/&gt;
&lt;/div&gt;

'''Maximum Volume Jobs''' = Cette directive n'est pas obligatoire mais en fixant cette valeur à 1 on s'assure&lt;br/&gt;
de n'avoir qu'un seul fichier par sauvegarde. &lt;br/&gt;
'''Label Format''' = permet de nommer son volume de sauvegarde &lt;br/&gt;

Vous trouverez le détail des ressources pool [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018150000000000000000 ici]

==== Client ====

Dans ce fichier vous retrouvez tous vos clients à sauvegarder.

'''/etc/bacula/configuration/bacula_dir_client.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Client''' {
:'''Name''' = Nom_du_poste_a_savegarder
:'''Address''' = nom_dns_ou_ip
:'''FDPort''' = 9102
:'''Catalog''' = MyCatalog
:'''Password''' = &quot;mdp_du_client&quot;
}
&lt;/div&gt;
Vous trouverez le détail des ressources du client [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018130000000000000000 ici]

==== Schedule ====

Dans celui-ci vous définissez les heures et les niveaux de vos sauvegardes automatiques.

'''/etc/bacula/configuration/bacula_dir_schedule.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Schedule''' {
:'''Name''' = &quot;Donnees&quot;
:'''Run''' = Full 1st sun at 23:05 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# complète le 1er dimanche du mois à 23:05&lt;/span&gt;
:'''Run''' = Differential 2nd-5th sun at 23:05 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Différentiel le 2em et 5em dimanche du mois à 23:05&lt;/span&gt;
:'''Run''' = Incremental mon-sat at 21:00 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Incrémentiel su lundi au samedi à 21:00&lt;/span&gt;
}&lt;br/&gt;
&lt;/div&gt;
Vous trouverez le détail des ressources schedule [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001850000000000000000 ici]

==== Job ====

Et enfin dans ce fichier ci vous assemblez tous vos éléments.

'''/etc/bacula/configuration/bacula_dir_job.conf'''

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Job''' {
:'''Name''' = &quot;DONNEES&quot;
:'''Type''' = Backup
:'''Level''' = Incremental &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le niveau de la sauvegarde&lt;/span&gt;
:'''Client''' = SERVEURZZZ
:'''FileSet''' = &quot;DONNEES_FSET&quot;
:'''Schedule''' = &quot;Donnees&quot;
:'''Storage''' = Donnee_st
:'''Pool'''= Donnees_Pool
:'''Write Bootstrap''' = /var/lib/bacula/donnee.bsr &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# fichier contenant l'ensemble des données de la sauvegarde&lt;/span&gt;
:'''Priority''' = 20 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# la priorité du job de sauvegarde : plus le nombre est petit plus la priorité est haute&lt;/span&gt;
:'''Messages''' = Standard 
}
&lt;/div&gt;

Si dans vos différents jobs vous avez les mêmes données (Fileset,Schedule...) vous pouvez créer un '''JobDefs'''.  

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''JobDefs''' {
:'''Name''' = &quot;JOBCOMMUN&quot;
:'''Type''' = Backup
:'''Level''' = Full
:'''FileSet''' = &quot;DONNEES_FSET&quot;
:'''Schedule''' = &quot;Donnees&quot;
:'''Pool''' = Donnees_Pool
:'''Storage''' = Donnees-st
:'''Messages''' = Standard
}

'''Job''' {
:'''Name''' = &quot;DONNEES&quot;
:'''JobDefs''' = &quot;JOBCOMMUN&quot;
:'''Client''' = SERVEURZZZ
:'''Write Bootstrap''' = /var/lib/bacula/donnee.bsr 
:'''Priority''' = 10 
:'''Messages''' = Standard 
}

&lt;/div&gt;
Vous trouverez le détail des ressources job [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001830000000000000000 ici]

== Sécurisation ==

Tout au long du chapitre sur la configuration certaines parties en bleue n'ont pas été expliquées, elles concernaient essentiellement&lt;br/&gt;
des commandes liées aux connexions SSL et aux Chiffrage des données.&lt;br/&gt;

=== Les connexions SSL ===

Afin de sécuriser un peu notre système de sauvegarde nous pouvons mettre en place des connexions SSL entre les différents services de Bacula.&lt;br/&gt;
Dans un premier temps nous allons créer notre certificat d'autorité de certification, c'est lui qui validera (signera) les autres.

Si vous créez plusieurs certificats le conseil que je vous donne c'est d'éditer le fichier '''/etc/ssl/openssl.conf''' et &lt;br/&gt;
dans la section :&quot;req_distinguished_name&quot; de mettre vos paramêtres personalisés.

'''Exemple:'''

 countryName                     = Country Name (2 letter code)
 countryName_default             = &lt;span style=&quot;color:#bd0000;&quot;&gt;FR&lt;/span&gt;
 countryName_min                 = 2
 countryName_max                 = 2
 
 stateOrProvinceName             = State or Province Name (full name)
 stateOrProvinceName_default     = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre département&lt;/span&gt;
 
 localityName                    = Locality Name (eg, city)
 localityName_default            = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre ville&lt;/span&gt;
 
 0.organizationName              = Organization Name (eg, company)
 0.organizationName_default      = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre société&lt;/span&gt;
 
 # we can do this but it is not needed normally :-)
 #1.organizationName             = Second Organization Name (eg, company)
 #1.organizationName_default     = World Wide Web Pty Ltd
 
 organizationalUnitName          = Organizational Unit Name (eg, section)
 organizationalUnitName_default  = &lt;span style=&quot;color:#bd0000;&quot;&gt;Interne&lt;/span&gt;
 
 commonName                      = Common Name (eg, YOUR name)
 commonName_max                  = 64
 emailAddress                    = Email Address
 emailAddress_default            = &lt;span style=&quot;color:#bd0000;&quot;&gt;Une adresse mail&lt;/span&gt;
 emailAddress_max                = 64

Commencez par créer le répertoire /etc/bacula/'''keys'''/ puis entrez y.

Création du certificat d'autorité de certification :

 #openssl genrsa -aes256 -out ca.key 2048 &lt;span style=&quot;color:#bd0000;&quot;&gt;# Génére une clé RSA 2048 bits et son chiffrement en AES 256 un mot de passe vous sera demandé.&lt;/span&gt; 
 #openssl req -new -key ca.key -x509 -out ca.crt &lt;span style=&quot;color:#bd0000;&quot;&gt;# Génére le certificat publique de la clé.&lt;/span&gt; 

Ensuite il faut créer une clé et un certificat par services que nous voulons sécuriser.
Par exemple pour le director :

 #openssl genrsa -out director.key 2048
 #openssl req -new -key director.key &gt; director.csr
 #openssl x509 -req -in director.csr -out director.crt -CA ca.crt -CAkey ca.key -CAcreateserial -CAserial ca.srl

Il est obligatoire de mettre le même nom dans le Common Name que le nom résolu par DNS du service.&lt;br/&gt;
Si l'adresse dns du director est &quot;director.local&quot; alors le Common Name est &quot;director.local&quot; et n'oubliez pas de configurer&lt;br/&gt;
le fichier '''/etc/hosts''' ou le serveur DNS.&lt;br/&gt;
L'option CAcreateserial n'est nécessaire que la première fois, ensuite pour la console :

 #openssl genrsa -out console.key 2048
 #openssl req -new -key console.key &gt; console.csr
 #openssl x509 -req -in console.csr -out console.crt -CA ca.crt -CAkey ca.key -CAserial ca.srl

Maintenant vous pouvez continuer seul pour les autres certificats (filedaemon.crt/key,storagedaemon.crt/key...).&lt;br/&gt;
Pour plus d'informations sur les certificats vous pouvez voir :&lt;br/&gt;
[http://www.batard.eu/2010/11/maitriser-les-certificats-avec-openssl/ N30Secs Blog] , 
[http://www.linux-france.org/prj/edu/archinet/systeme/ch24s03.html Linux-france.org] , 
[http://www.madboa.com/geek/openssl/ Madboa.com]


Pour établir une connexion sécurisé entre:

'''Director | Console'''&lt;br/&gt;
Revenons à notre fichier '''/etc/bacula/bconsole.conf''' et plus précisement à ces lignes :

 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Active une connexion SSL&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Oblige une connexion SSL&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers votre certificat publique du '''ca''' généré plus haut&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers votre certificat publique de la '''console''' généré plus haut&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers la clé privé de la '''console''' généré plus haut&lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-dir.conf''' :&lt;br/&gt;
 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;consolerCN&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Ici on n'autorise que la console en donnant le Common Name du certificat de la console&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key &lt;/span&gt;
 }

Vous voilà avec une connexion sécurisé entre votre console et le director.&lt;br/&gt;

'''Director | Filedaemon'''&lt;br/&gt;

Dans le fichier '''/etc/bacula/bacula-fd.conf''' :&lt;br/&gt;
 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;DirectorCN&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Ici on n'autorise que le director en donnant le Common Name du certificat du director&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key &lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-dir.conf''' :&lt;br/&gt;
 '''Client''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key&lt;/span&gt;
 }

'''Director | Storagedaemon'''&lt;br/&gt;

Dans le fichier '''/etc/bacula/bacula-sd.conf''' :&lt;br/&gt;
 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;DirectorCN&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Ici on n'autorise que le director en donnant le Common Name du certificat du director&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key &lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-dir.conf''' :&lt;br/&gt;
 '''Storage''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key&lt;/span&gt;
 }

'''Filedaemon | Storagedaemon'''&lt;br/&gt;

Dans le fichier '''/etc/bacula/bacula-sd.conf''' :&lt;br/&gt;
 '''Storage''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-fd.conf''' :&lt;br/&gt;
 '''FileDaemon''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key&lt;/span&gt;
 }

&lt;span style=&quot;background-color:#ff7272;&quot;&gt;Sous Windows faites attention&lt;/span&gt; aux chemins ce n'est pas un antislash mais deux slashs à la place :&lt;br/&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = &quot;C:\\keys\\ca.crt&quot;&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = &quot;C:\\keys\\client_win.crt&quot;&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = &quot;C:\\keys\\client_win.key&quot;&lt;/span&gt;

Et pensez aussi à modifier le fichier '''C:\WINDOWS\system32\drivers\etc\hosts''' ou le dns.

=== Le chiffrement des sauvegardes ===

C'est dans les différents File Daemon que cela ce passe, les fameuses lignes '''PKI''' :&lt;br/&gt;
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Signatures = Yes&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# active les données signées&lt;/span&gt;           
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Encryption = Yes&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# active le chiffrage&lt;/span&gt;            
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/client.pem&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# paire de clé publique/privée du client&lt;/span&gt;     
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Master Key = &quot;/etc/bacula/keys/master.crt&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# clé publique maître&lt;/span&gt;&lt;br/&gt; 


Premiere étape généré une paire de clé maître de 2048 bits et chiffré en AES 256 (un mot de passe vous sera demandé):

 # openssl genrsa -aes256 -out master.key 2048 &lt;span style=&quot;color:#bd0000;&quot;&gt;# Votre clé privé : master.key&lt;/span&gt; 
 # openssl req -new -key master.key -x509 -out master.crt &lt;span style=&quot;color:#bd0000;&quot;&gt;# Votre clé publique : master.crt&lt;/span&gt; 

Ensuite on génére une paire de clé pour chaque client :&lt;br/&gt;
Générer une clé privé : 
 # openssl genrsa -aes256 -out client.key 2048

Le fait de chiffrer la clé en AES 256 nous permet de chiffrer notre sauvegarde en AES 256, les autres choix sont :&lt;br/&gt;
128, 192, AES-CBC et Blowfish-CBC&lt;br/&gt;

Générer la clé publique auto-signée :
 # openssl req -new -key -client.key -x509 -out client.crt 
Se débarrasser du mot de passe de la clé (que bacula puisse la lire!) :
 # openssl rsa -in client.key -out client.nopass.key
Copié la clé privé et publique dans le fichier '''.pem''' :
 # cat client.nopass.key client.crt &gt; client.pem &lt;span style=&quot;color:#bd0000;&quot;&gt;# Votre paire de clé publique/privée du client : client.pem&lt;/span&gt; 

Si votre paire de clé du client est perdu ou corrompu vous pouvez déchiffrer les données avec la paire de clé maître pour cela il faut :&lt;br/&gt;
concaténer la clé privé et publique :
 # cat master.key master.crt &gt; master.keypair
puis modifier la ligne PKI Keypair en y mettant la master.keypair :
 &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/master.keypair&quot;

source :&lt;br/&gt;
:[http://www.bacula.org/en/dev-manual/main/main/Data_Encryption.html la documentation de bacula]&lt;br/&gt;
:[http://sourceforge.net/mailarchive/forum.php?thread_name=21DF2F99-E2D9-4E4E-AF06-6BA0EF64383F%40langille.org&amp;forum_name=bacula-docs Data Encryption - subjectKeyIdentifier extension?]

== Utilisation ==
=== En mode Console ===
=== En mode Graphique ===



[[Utilisateur:Haludeis|Haludeis]] ([[Discussion utilisateur:Haludeis|discussion]]) 6 mai 2012 à 09:16 (CEST)</text>
      <sha1>ocvsbxedy2nj5pi3dk0p1o5ozylk0ld</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4201</id>
      <parentid>4200</parentid>
      <timestamp>2012-05-06T07:39:10Z</timestamp>
      <contributor>
        <username>Haludeis</username>
        <id>30</id>
      </contributor>
      <minor/>
      <comment>/* Le chiffrement des sauvegardes */</comment>
      <text xml:space="preserve" bytes="35433">[[Catégorie:Sauvegardes]]
{{Ébauche|Bacula}}
{{sid}}

== Présentation ==
Ce document est basé sur une installation stable de Debian (en ce moment Squeeze) et de Bacula 5.0.2.

Son but : sauvegarde, restauration et vérification en réseau &lt;br/&gt;
(reste à faire)

== Installation ==
Bacula peut utiliser les bases de données SQLite, MySql et PostGreSQL.Il suffit d'installer les paquets correspondant à votre choix. 

Changer &quot;-mysql&quot; par &quot;-pgsql&quot; ou &quot;-sqlite3&quot; sur le paquet director et le fd.

ici je choisi MySql (MySql étant déja installé):

 # aptitude install bacula-director-mysql bacula-sd-mysql bacula

Accorder les droits à bacula sur la base de données (vérifié si pas obsolète):
 # mysql -u root -p
 &gt; grant all privileges on bacula.* to 'bacula'@'localhost' identified by 'bacula' ;

Créer le répertoire de sauvegarde et accorder les droits à bacula :
 # mkdir /home/sauvegarde/
 # chown -R bacula.bacula /home/sauvegarde
 # chmod -R 660 /home/sauvegarde (---&gt; à vérifier)

== Configuration ==
Bacula se compose des fichiers suivants :

Le fichier générale de configuration le Director :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-dir.conf&lt;/span&gt;
Le fichier Storage Daemon concernant le stockage des données :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-sd.conf&lt;/span&gt;
Celui du File Daemon permettant l'accès aux données installé sur le client à sauvegarder :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-fd.conf&lt;/span&gt;
Le fichier permettant la connexion entre la console et le directeur :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bconsole.conf&lt;/span&gt; 

Ces fichiers représentent les différents services de Bacula, ils peuvent se trouver sur des machines totalement différentes.

=== La Console ===

'''/etc/bacula/bconsole.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' { 
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''DIRport''' = 9101 &lt;span style=&quot;color:#bd0000;&quot;&gt;# le port d'écoute du director&lt;/span&gt;  
:'''address''' = nom_resolu_par_dns_ou_IP &lt;span style=&quot;color:#bd0000;&quot;&gt;# ip ou dns du director&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;# le mot de passe du director&lt;/span&gt; 
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt; 
} &lt;/div&gt;

'''address''' : Attention le nom DNS est obligatoire pour une connexion SSL penser à configurer le fichier /etc/hosts ou le serveur dns.

:: si vous n'utilisez pas de connexion sécurisée vous pouvez mettre une adresse ip directement.

La partie bleu permet la sécurisation des données entre le director et la console ca.crt doit être le même partout les deux autres diffèrent&lt;br/&gt;
pour chaque éléments de bacula.&lt;br/&gt;
Pour l'instant ne vous préoccupez pas de cette partie, une explication plus complète sera détaillée dans le chapitre sur la sécurisation.&lt;br/&gt;
Sachez juste que cela ce trouve là. &lt;br/&gt;

=== Le File Daemon ===
La ressource Client (ou File Daemon) définit le nom du client (tel qu'il est utilisé par le director) ainsi que le port sur lequel le client est à l'écoute des connections du Director.&lt;br/&gt;

'''/etc/bacula/bacula-fd.conf''' 
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le mot de passe du director&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key &lt;/span&gt;
}

'''Director''' {
:'''Name''' = NOM_MON &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director restreint défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director_restreint&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;# son mot de passe&lt;/span&gt;
:'''Monitor''' = yes 
}

'''FileDaemon''' { 
:'''Name''' = NOM_FD &lt;span style=&quot;color:#bd0000;&quot;&gt;# le nom du File daemon&lt;/span&gt;
:'''FDport''' = 9102 &lt;span style=&quot;color:#bd0000;&quot;&gt;# son mot port d'écoute'&lt;/span&gt;
:'''WorkingDirectory''' = /var/lib/bacula
:'''Pid Directory''' = /var/run/bacula
:'''Maximum Concurrent Jobs''' = 8 &lt;span style=&quot;color:#bd0000;&quot;&gt;# le nombre maximum de sauvegardes simultanées&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key&lt;/span&gt; 
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Signatures = Yes&lt;/span&gt;           
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Encryption = Yes&lt;/span&gt;            
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/client.pem&quot;&lt;/span&gt;    
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Master Key = &quot;/etc/bacula/keys/master.crt&quot;&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les messages sont envoyés au director&lt;/span&gt; 
:'''Name''' = Standard
:'''director''' = NOM_DIR = all, !skipped, !restored
}
&lt;/div&gt;
&lt;br/&gt; 
'''Working Directory''' : Cette directive est obligatoire et spécifie un répertoire dans lequel le File Daemon peut placer ses fichiers d'état.&lt;br/&gt;
: Ce répertoire ne doit être utilisé que par Bacula, mais peut être partagé par d'autres daemons Bacula les définitions des noms doivent être uniques pour chaque démon.&lt;br/&gt; 
: Sur les systèmes Win32, dans certaines circonstances, vous pourriez avoir besoin de spécifier une lettre de lecteur dans le chemin de répertoire de travail spécifié.
: Aussi, s'il vous plaît assurez-vous que ce répertoire est accessible en écriture par l'utilisateur SYSTEM au contraire la restauration peut échouer&lt;br/&gt;
: (le fichier d'amorçage (bootstrap) qui est transféré vers le File Daemon du directeur est temporairement placé dans ce répertoire avant d'être transmis au Storage Daemon).&lt;br/&gt;
'''Pid Directory''' Cette directive est obligatoire et spécifie un répertoire dans lequel le directeur peut placer ses fichiers d'identification de processus.&lt;br/&gt;
: Le fichier d'identification de processus est utilisé pour stopper Bacula et éviter à plusieurs instances de Bacula de fonctionner simultanément.&lt;br/&gt;
: Cet enregistrement est nécessaire. L'expansion du shell standard de l'annuaire se fait lorsque le fichier de configuration est lu de telle sorte que des valeurs&lt;br/&gt;
: telles que $HOME seront correctement substituées.&lt;br/&gt;
: Typiquement, sur les systèmes Linux, vous mettrez: /var/run.Si vous n'installez pas Bacula dans les répertoires système, vous pouvez utiliser le répertoire de travail&lt;br/&gt;
: tel que défini ci-dessus.&lt;br/&gt; 

Pour voir toutes les possibilités du File Daemon je vous invite à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Client_File_daemon_Configur.html la documentation de Bacula] à ce sujet.&lt;br/&gt;

 
=== Le Storage Daemon ===
Le fichier de configuration du Storage Daemon a relativement peu de définitions de ressources. Toutefois, en raison de&lt;br/&gt;
la grande variation dans les médias de sauvegarde et des capacités du système, le démon de stockage doit être hautement configurable.&lt;br/&gt;

En conséquence, il y a un assez grand nombre de directives dans la définition des ressources de périphérique qui vous permet de définir.

toutes les caractéristiques de votre périphérique de stockage (normalement un lecteur de bande). Heureusement, avec des dispositifs 

de stockage modernes, les valeurs par défaut sont suffisantes, et très peu de directives sont réellement nécessaires.

'''/etc/bacula/bacula-sd.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = NOM_SD &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nom du Storage Daemon&lt;/span&gt;
:'''SDPort''' = 9103 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son port d'écoute&lt;/span&gt;
:''' WorkingDirectory''' = &quot;/var/lib/bacula&quot; 
:''' Pid Directory''' = &quot;/var/run/bacula&quot; 
:'''Maximum Concurrent Jobs''' = 8 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nombre maximum de sauvegardes simultanées par media&lt;/span&gt;
:'''SDAddress''' = nom_dns_ou_ip &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son addresse ip ou son nom dns&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# et son mot de passe&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;                                          
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_MON &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director restreint défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director_restreint&quot;
:'''Monitor''' = yes
}

'''Device''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# ou répertoire&lt;/span&gt; 
:'''Name''' = Nom_Device &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Un nom pour l'identifier&lt;/span&gt;
:'''Media Type''' = File &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son type : File, Tape, Fifo, DVD&lt;/span&gt;
:'''Archive Device''' = /home/sauvegarde/ &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son emplacement&lt;/span&gt;
:'''LabelMedia''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Lui donne un nom&lt;/span&gt;
:'''Random Access''' = Yes;
:'''AutomaticMount''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# monte le media en automatique&lt;/span&gt;
:'''RemovableMedia''' = no;
:'''AlwaysOpen''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Toujours accessible&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les messages sont envoyés au director&lt;/span&gt; 
:'''Name''' = Standard
:'''director''' = NOM_DIR = all
}
&lt;/div&gt;
&lt;br/&gt; 
'''Random Access''' : Si Oui, le périphérique est supposé être un moyen d'accès aléatoire qui prend en charge le lseek (Dvd,Usb...) &lt;br/&gt;
: Non pour les dispositifs d'accès non-aléatoires tels que des bandes.
'''RemovableMedia''' : Si oui, cet appareil prend en charge les supports amovibles (par exemple, cassettes ou de CD).&lt;br/&gt;
: Si Non, les médias ne peuvent pas être supprimés (par exemple, une zone de sauvegarde intermédiaire sur un disque dur).&lt;br/&gt;

Pour voir toutes les possibilités du Storage Daemon je vous invite à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html la documentation de Bacula] à ce sujet.

=== Le Director ===

De tous les fichiers de configuration nécessaires à l'exécution de Bacula, le directeur est le plus compliqué, et celui que vous aurez besoin de modifier&lt;br/&gt;
le plus souvent. Afin de simplifier sa comprehension nous le séparons en plusieurs fichiers.&lt;br/&gt;
Pour inclure un fichier dans bacula-dir.conf, il suffit de mettre un @ devant le chemin du fichier à inclure.&lt;br/&gt;
 @/chemin_complet/fichier

Comme toujours vous y gagneriez à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html la documentation] du director.

'''/etc/bacula/bacula-dir.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director&lt;/span&gt;
:'''DIRport''' = 9101 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son port d'écoute&lt;/span&gt;
:'''QueryFile''' = &quot;/etc/bacula/query.sql&quot;
:'''WorkingDirectory''' = &quot;/var/lib/bacula&quot;
:'''PidDirectory''' = &quot;/var/run/bacula&quot;
:'''Maximum Concurrent Jobs''' = 4 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nombre maximum de sauvegardes simultanées&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot;
:'''Messages''' = Standard
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;consolerCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key &lt;/span&gt;
}

@/etc/bacula/configuration/bacula_dir_filset.conf &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# On ajoute les fichiers de configuration des sauvegardes&lt;/span&gt;&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_job.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_storage.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_pool.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_client.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_schedule.conf&lt;br/&gt;

'''Catalog''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le catalogue ou Bacula stocke toutes ses informations&lt;/span&gt;
:'''Name''' = MyCatalog &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son nom&lt;/span&gt;
:dbname = &quot;bacula&quot;; dbuser = &quot;bacula&quot;; dbpassword = &quot;mdp_base_SQL&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les accés à la base Sql&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Définitions des messages envoyés par Bacula&lt;/span&gt;
:'''Name''' = Standard &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Un nom pour l'identifier&lt;/span&gt;
:'''mailcommand''' = &quot;/usr/sbin/bsmtp -h localhost -f \&quot;\(Bacula\) \&lt;%r\&gt;\&quot; -s \&quot;Bacula daemon message\&quot; %r&quot;
:'''mail''' = root@localhost = all, !skipped
:'''console''' = all, !skipped, !saved
::append = &quot;/var/bacula/log&quot; = all, !skipped
}
'''Director''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Director restreint utile pour les clients&lt;/span&gt;
:'''Name''' = DIR_MON
:'''Password''' = &quot;Mdp_du_director_restreint&quot;
:'''CommandACL''' = status, .status
}
&lt;/div&gt;

'''QueryFile''' = Cette directive est obligatoire et spécifie un répertoire et le fichier dans lequel le directeur peut trouver les états conservés SQL&lt;br/&gt;
pour les commandes de requête de la console.&lt;br/&gt;

==== Filset====

C'est dans ce fichier que l'on trouve les répertoires et fichiers à sauvegarder.&lt;br/&gt;

'''/etc/bacula/configuration/bacula_dir_filset.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''FileSet''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Fileset Windows&lt;/span&gt;
:'''Name''' = &quot;DONNEES_FSET&quot; 
:'''Enable VSS''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# activation ou non du Volume Shadow copy&lt;/span&gt;
:'''Include''' {
::'''Options''' {
:::compression = GZIP &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on compresse la sauvegarde possibilité de donner un niveau de compression ex: GZIP9&lt;/span&gt;
:::signature = MD5 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on vérifie les fichiers sauvegardés avec md5 ou sha1&lt;/span&gt;
:::accurate = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# si cette valeur est a &quot;no&quot; même les fichiers effacés seront restaurés&lt;/span&gt;
::}
::'''File''' = &quot;C:/DONNEES&quot;&lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le(s) répertoire(s) / fichier(s) à inclure&lt;/span&gt;
:}

:'''Exclude''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le(s) répertoire(s) / fichier(s) à exclure&lt;/span&gt;
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/yyy/zzz/yyy&quot;
:}
}

'''FileSet''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Fileset Linux&lt;/span&gt;
:'''Name''' = &quot;BACULA_FSET&quot;
:'''Enable VSS''' = no
:'''Include''' {
::'''Options''' {
:::signature = MD5
:::compression = GZIP9
:::accurate = yes
::}
::'''File''' = &quot;/etc/bacula/&quot;
}
&lt;/div&gt;
Vous trouverez le détail des ressources du fileset [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001870000000000000000 ici]

==== Storage ====

C'est ici que vous définissez le Storage Daemon ainsi que le device (répertoire) de sauvegarde à utiliser.

'''/etc/bacula/configuration/bacula_dir_storage.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = Donnees_st &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Vous lui donnez un nom&lt;/span&gt;
:'''Address''' = nom_dns_ou_ip_du_storagedaemon &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# L' adresse du Storage Daemon défini plus haut&lt;/span&gt;
:'''SDPort''' = 9103
:'''Password''' = &quot;mdp_du_storagedaemon&quot;
:'''Device''' = donnees_device &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# un des devices défini dans le fichier du Storage Daemon&lt;/span&gt;
}&lt;br/&gt;

&lt;/div&gt;
Vous trouverez le détail des ressources du storage [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018140000000000000000 ici]

==== Pool ====

Ce fichier décrit la façon dont sont gérés les volumes de sauvegarde.

'''/etc/bacula/configuration/bacula_dir_pool.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Pool'''{
:'''Name''' = Donnees_Pool
:'''Pool Type''' = Backup &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son type pour l'instant seul Backup est implémenté d'autres viendront &quot;Archive,Cloned,Migration,Copy,Save&quot;&lt;/span&gt;
:'''Recycle''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on peut réutiliser les anciens volumes purgés&lt;/span&gt;
:'''AutoPrune''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# On laisse Bacula gérer les volumes&lt;/span&gt;
:'''File Retention''' = 180 days &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# durée de rétention des fichiers&lt;/span&gt;
:'''Job Retention''' = 180 days &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# durée de rétention des jobs&lt;/span&gt;
:'''Maximum Volume Jobs''' = 1 
:'''Label Format''' = &quot;${Level}_${Job}_${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}_${Hour:p/2/0/r}h${Minute:p/2/0/r}m&quot;
}&lt;br/&gt;
&lt;/div&gt;

'''Maximum Volume Jobs''' = Cette directive n'est pas obligatoire mais en fixant cette valeur à 1 on s'assure&lt;br/&gt;
de n'avoir qu'un seul fichier par sauvegarde. &lt;br/&gt;
'''Label Format''' = permet de nommer son volume de sauvegarde &lt;br/&gt;

Vous trouverez le détail des ressources pool [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018150000000000000000 ici]

==== Client ====

Dans ce fichier vous retrouvez tous vos clients à sauvegarder.

'''/etc/bacula/configuration/bacula_dir_client.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Client''' {
:'''Name''' = Nom_du_poste_a_savegarder
:'''Address''' = nom_dns_ou_ip
:'''FDPort''' = 9102
:'''Catalog''' = MyCatalog
:'''Password''' = &quot;mdp_du_client&quot;
}
&lt;/div&gt;
Vous trouverez le détail des ressources du client [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018130000000000000000 ici]

==== Schedule ====

Dans celui-ci vous définissez les heures et les niveaux de vos sauvegardes automatiques.

'''/etc/bacula/configuration/bacula_dir_schedule.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Schedule''' {
:'''Name''' = &quot;Donnees&quot;
:'''Run''' = Full 1st sun at 23:05 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# complète le 1er dimanche du mois à 23:05&lt;/span&gt;
:'''Run''' = Differential 2nd-5th sun at 23:05 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Différentiel le 2em et 5em dimanche du mois à 23:05&lt;/span&gt;
:'''Run''' = Incremental mon-sat at 21:00 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Incrémentiel su lundi au samedi à 21:00&lt;/span&gt;
}&lt;br/&gt;
&lt;/div&gt;
Vous trouverez le détail des ressources schedule [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001850000000000000000 ici]

==== Job ====

Et enfin dans ce fichier ci vous assemblez tous vos éléments.

'''/etc/bacula/configuration/bacula_dir_job.conf'''

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Job''' {
:'''Name''' = &quot;DONNEES&quot;
:'''Type''' = Backup
:'''Level''' = Incremental &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le niveau de la sauvegarde&lt;/span&gt;
:'''Client''' = SERVEURZZZ
:'''FileSet''' = &quot;DONNEES_FSET&quot;
:'''Schedule''' = &quot;Donnees&quot;
:'''Storage''' = Donnee_st
:'''Pool'''= Donnees_Pool
:'''Write Bootstrap''' = /var/lib/bacula/donnee.bsr &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# fichier contenant l'ensemble des données de la sauvegarde&lt;/span&gt;
:'''Priority''' = 20 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# la priorité du job de sauvegarde : plus le nombre est petit plus la priorité est haute&lt;/span&gt;
:'''Messages''' = Standard 
}
&lt;/div&gt;

Si dans vos différents jobs vous avez les mêmes données (Fileset,Schedule...) vous pouvez créer un '''JobDefs'''.  

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''JobDefs''' {
:'''Name''' = &quot;JOBCOMMUN&quot;
:'''Type''' = Backup
:'''Level''' = Full
:'''FileSet''' = &quot;DONNEES_FSET&quot;
:'''Schedule''' = &quot;Donnees&quot;
:'''Pool''' = Donnees_Pool
:'''Storage''' = Donnees-st
:'''Messages''' = Standard
}

'''Job''' {
:'''Name''' = &quot;DONNEES&quot;
:'''JobDefs''' = &quot;JOBCOMMUN&quot;
:'''Client''' = SERVEURZZZ
:'''Write Bootstrap''' = /var/lib/bacula/donnee.bsr 
:'''Priority''' = 10 
:'''Messages''' = Standard 
}

&lt;/div&gt;
Vous trouverez le détail des ressources job [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001830000000000000000 ici]

== Sécurisation ==

Tout au long du chapitre sur la configuration certaines parties en bleue n'ont pas été expliquées, elles concernaient essentiellement&lt;br/&gt;
des commandes liées aux connexions SSL et aux Chiffrage des données.&lt;br/&gt;

=== Les connexions SSL ===

Afin de sécuriser un peu notre système de sauvegarde nous pouvons mettre en place des connexions SSL entre les différents services de Bacula.&lt;br/&gt;
Dans un premier temps nous allons créer notre certificat d'autorité de certification, c'est lui qui validera (signera) les autres.

Si vous créez plusieurs certificats le conseil que je vous donne c'est d'éditer le fichier '''/etc/ssl/openssl.conf''' et &lt;br/&gt;
dans la section :&quot;req_distinguished_name&quot; de mettre vos paramêtres personalisés.

'''Exemple:'''

 countryName                     = Country Name (2 letter code)
 countryName_default             = &lt;span style=&quot;color:#bd0000;&quot;&gt;FR&lt;/span&gt;
 countryName_min                 = 2
 countryName_max                 = 2
 
 stateOrProvinceName             = State or Province Name (full name)
 stateOrProvinceName_default     = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre département&lt;/span&gt;
 
 localityName                    = Locality Name (eg, city)
 localityName_default            = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre ville&lt;/span&gt;
 
 0.organizationName              = Organization Name (eg, company)
 0.organizationName_default      = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre société&lt;/span&gt;
 
 # we can do this but it is not needed normally :-)
 #1.organizationName             = Second Organization Name (eg, company)
 #1.organizationName_default     = World Wide Web Pty Ltd
 
 organizationalUnitName          = Organizational Unit Name (eg, section)
 organizationalUnitName_default  = &lt;span style=&quot;color:#bd0000;&quot;&gt;Interne&lt;/span&gt;
 
 commonName                      = Common Name (eg, YOUR name)
 commonName_max                  = 64
 emailAddress                    = Email Address
 emailAddress_default            = &lt;span style=&quot;color:#bd0000;&quot;&gt;Une adresse mail&lt;/span&gt;
 emailAddress_max                = 64

Commencez par créer le répertoire /etc/bacula/'''keys'''/ puis entrez y.

Création du certificat d'autorité de certification :

 #openssl genrsa -aes256 -out ca.key 2048 &lt;span style=&quot;color:#bd0000;&quot;&gt;# Génére une clé RSA 2048 bits et son chiffrement en AES 256 un mot de passe vous sera demandé.&lt;/span&gt; 
 #openssl req -new -key ca.key -x509 -out ca.crt &lt;span style=&quot;color:#bd0000;&quot;&gt;# Génére le certificat publique de la clé.&lt;/span&gt; 

Ensuite il faut créer une clé et un certificat par services que nous voulons sécuriser.
Par exemple pour le director :

 #openssl genrsa -out director.key 2048
 #openssl req -new -key director.key &gt; director.csr
 #openssl x509 -req -in director.csr -out director.crt -CA ca.crt -CAkey ca.key -CAcreateserial -CAserial ca.srl

Il est obligatoire de mettre le même nom dans le Common Name que le nom résolu par DNS du service.&lt;br/&gt;
Si l'adresse dns du director est &quot;director.local&quot; alors le Common Name est &quot;director.local&quot; et n'oubliez pas de configurer&lt;br/&gt;
le fichier '''/etc/hosts''' ou le serveur DNS.&lt;br/&gt;
L'option CAcreateserial n'est nécessaire que la première fois, ensuite pour la console :

 #openssl genrsa -out console.key 2048
 #openssl req -new -key console.key &gt; console.csr
 #openssl x509 -req -in console.csr -out console.crt -CA ca.crt -CAkey ca.key -CAserial ca.srl

Maintenant vous pouvez continuer seul pour les autres certificats (filedaemon.crt/key,storagedaemon.crt/key...).&lt;br/&gt;
Pour plus d'informations sur les certificats vous pouvez voir :&lt;br/&gt;
[http://www.batard.eu/2010/11/maitriser-les-certificats-avec-openssl/ N30Secs Blog] , 
[http://www.linux-france.org/prj/edu/archinet/systeme/ch24s03.html Linux-france.org] , 
[http://www.madboa.com/geek/openssl/ Madboa.com]


Pour établir une connexion sécurisé entre:

'''Director | Console'''&lt;br/&gt;
Revenons à notre fichier '''/etc/bacula/bconsole.conf''' et plus précisement à ces lignes :

 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Active une connexion SSL&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Oblige une connexion SSL&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers votre certificat publique du '''ca''' généré plus haut&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers votre certificat publique de la '''console''' généré plus haut&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers la clé privé de la '''console''' généré plus haut&lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-dir.conf''' :&lt;br/&gt;
 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;consolerCN&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Ici on n'autorise que la console en donnant le Common Name du certificat de la console&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key &lt;/span&gt;
 }

Vous voilà avec une connexion sécurisé entre votre console et le director.&lt;br/&gt;

'''Director | Filedaemon'''&lt;br/&gt;

Dans le fichier '''/etc/bacula/bacula-fd.conf''' :&lt;br/&gt;
 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;DirectorCN&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Ici on n'autorise que le director en donnant le Common Name du certificat du director&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key &lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-dir.conf''' :&lt;br/&gt;
 '''Client''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key&lt;/span&gt;
 }

'''Director | Storagedaemon'''&lt;br/&gt;

Dans le fichier '''/etc/bacula/bacula-sd.conf''' :&lt;br/&gt;
 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;DirectorCN&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Ici on n'autorise que le director en donnant le Common Name du certificat du director&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key &lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-dir.conf''' :&lt;br/&gt;
 '''Storage''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key&lt;/span&gt;
 }

'''Filedaemon | Storagedaemon'''&lt;br/&gt;

Dans le fichier '''/etc/bacula/bacula-sd.conf''' :&lt;br/&gt;
 '''Storage''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-fd.conf''' :&lt;br/&gt;
 '''FileDaemon''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key&lt;/span&gt;
 }

&lt;span style=&quot;background-color:#ff7272;&quot;&gt;Sous Windows faites attention&lt;/span&gt; aux chemins ce n'est pas un antislash mais deux slashs à la place :&lt;br/&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = &quot;C:\\keys\\ca.crt&quot;&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = &quot;C:\\keys\\client_win.crt&quot;&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = &quot;C:\\keys\\client_win.key&quot;&lt;/span&gt;

Et pensez aussi à modifier le fichier '''C:\WINDOWS\system32\drivers\etc\hosts''' ou le dns.

=== Le chiffrement des sauvegardes ===

C'est dans les différents File Daemon que cela ce passe, les fameuses lignes '''PKI''' :&lt;br/&gt;
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Signatures = Yes&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# active les données signées&lt;/span&gt;           
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Encryption = Yes&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# active le chiffrage&lt;/span&gt;            
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/client.pem&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# paire de clé publique/privée du client&lt;/span&gt;     
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Master Key = &quot;/etc/bacula/keys/master.crt&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# clé publique maître&lt;/span&gt;&lt;br/&gt; 


Premiere étape générer une paire de clé maître de 2048 bits et chiffré en AES 256 (un mot de passe vous sera demandé):

 # openssl genrsa -aes256 -out master.key 2048 &lt;span style=&quot;color:#bd0000;&quot;&gt;# Votre clé privé : master.key&lt;/span&gt; 
 # openssl req -new -key master.key -x509 -out master.crt &lt;span style=&quot;color:#bd0000;&quot;&gt;# Votre clé publique : master.crt&lt;/span&gt; 

Ensuite on génére une paire de clé pour chaque client :&lt;br/&gt;
Générer une clé privée : 
 # openssl genrsa -aes256 -out client.key 2048

Le fait de chiffrer la clé en AES 256 nous permet de chiffrer notre sauvegarde en AES 256, les autres choix sont :&lt;br/&gt;
128, 192, AES-CBC et Blowfish-CBC&lt;br/&gt;

Générer la clé publique auto-signée :
 # openssl req -new -key -client.key -x509 -out client.crt 
Se débarrasser du mot de passe de la clé (que bacula puisse la lire!) :
 # openssl rsa -in client.key -out client.nopass.key
Copier la clé privée et publique dans le fichier '''.pem''' :
 # cat client.nopass.key client.crt &gt; client.pem &lt;span style=&quot;color:#bd0000;&quot;&gt;# Votre paire de clé publique/privée du client : client.pem&lt;/span&gt; 

Si votre paire de clé du client est perdue ou corrompue vous pouvez déchiffrer les données avec la paire de clé maître pour cela il faut :&lt;br/&gt;
concaténer la clé privée et publique :
 # cat master.key master.crt &gt; master.keypair
puis modifier la ligne PKI Keypair en y mettant la master.keypair :
 &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/master.keypair&quot;

source :&lt;br/&gt;
:[http://www.bacula.org/en/dev-manual/main/main/Data_Encryption.html la documentation de bacula]&lt;br/&gt;
:[http://sourceforge.net/mailarchive/forum.php?thread_name=21DF2F99-E2D9-4E4E-AF06-6BA0EF64383F%40langille.org&amp;forum_name=bacula-docs Data Encryption - subjectKeyIdentifier extension?]

== Utilisation ==
=== En mode Console ===
=== En mode Graphique ===



[[Utilisateur:Haludeis|Haludeis]] ([[Discussion utilisateur:Haludeis|discussion]]) 6 mai 2012 à 09:16 (CEST)</text>
      <sha1>2x1l2k6i2vkcgftdlgjykvkhcxhyyug</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4202</id>
      <parentid>4201</parentid>
      <timestamp>2012-05-06T07:55:45Z</timestamp>
      <contributor>
        <username>Haludeis</username>
        <id>30</id>
      </contributor>
      <minor/>
      <comment>/* La Console */</comment>
      <text xml:space="preserve" bytes="35580">[[Catégorie:Sauvegardes]]
{{Ébauche|Bacula}}
{{sid}}

== Présentation ==
Ce document est basé sur une installation stable de Debian (en ce moment Squeeze) et de Bacula 5.0.2.

Son but : sauvegarde, restauration et vérification en réseau &lt;br/&gt;
(reste à faire)

== Installation ==
Bacula peut utiliser les bases de données SQLite, MySql et PostGreSQL.Il suffit d'installer les paquets correspondant à votre choix. 

Changer &quot;-mysql&quot; par &quot;-pgsql&quot; ou &quot;-sqlite3&quot; sur le paquet director et le fd.

ici je choisi MySql (MySql étant déja installé):

 # aptitude install bacula-director-mysql bacula-sd-mysql bacula

Accorder les droits à bacula sur la base de données (vérifié si pas obsolète):
 # mysql -u root -p
 &gt; grant all privileges on bacula.* to 'bacula'@'localhost' identified by 'bacula' ;

Créer le répertoire de sauvegarde et accorder les droits à bacula :
 # mkdir /home/sauvegarde/
 # chown -R bacula.bacula /home/sauvegarde
 # chmod -R 660 /home/sauvegarde (---&gt; à vérifier)

== Configuration ==
Bacula se compose des fichiers suivants :

Le fichier générale de configuration le Director :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-dir.conf&lt;/span&gt;
Le fichier Storage Daemon concernant le stockage des données :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-sd.conf&lt;/span&gt;
Celui du File Daemon permettant l'accès aux données installé sur le client à sauvegarder :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-fd.conf&lt;/span&gt;
Le fichier permettant la connexion entre la console et le directeur :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bconsole.conf&lt;/span&gt; 

Ces fichiers représentent les différents services de Bacula, ils peuvent se trouver sur des machines totalement différentes.

=== La Console ===

'''/etc/bacula/bconsole.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' { 
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''DIRport''' = 9101 &lt;span style=&quot;color:#bd0000;&quot;&gt;# le port d'écoute du director&lt;/span&gt;  
:'''address''' = nom_resolu_par_dns_ou_IP &lt;span style=&quot;color:#bd0000;&quot;&gt;# ip ou dns du director&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;# le mot de passe du director&lt;/span&gt; 
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt; 
} &lt;/div&gt;

'''address''' : Attention le nom DNS est obligatoire pour une connexion SSL penser à configurer le fichier /etc/hosts ou le serveur dns.

:: si vous n'utilisez pas de connexion sécurisée vous pouvez mettre une adresse ip directement.

La partie bleu permet la sécurisation des données entre le director et la console ca.crt doit être le même partout les deux autres diffèrent&lt;br/&gt;
pour chaque éléments de bacula.&lt;br/&gt;
Pour l'instant ne vous préoccupez pas de cette partie, une explication plus complète sera détaillée dans le chapitre sur la sécurisation.&lt;br/&gt;
Sachez juste que cela ce trouve là. &lt;br/&gt;
[http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018180000000000000000 La documentation de Bacula] à ce sujet.

=== Le File Daemon ===
La ressource Client (ou File Daemon) définit le nom du client (tel qu'il est utilisé par le director) ainsi que le port sur lequel le client est à l'écoute des connections du Director.&lt;br/&gt;

'''/etc/bacula/bacula-fd.conf''' 
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le mot de passe du director&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key &lt;/span&gt;
}

'''Director''' {
:'''Name''' = NOM_MON &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director restreint défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director_restreint&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;# son mot de passe&lt;/span&gt;
:'''Monitor''' = yes 
}

'''FileDaemon''' { 
:'''Name''' = NOM_FD &lt;span style=&quot;color:#bd0000;&quot;&gt;# le nom du File daemon&lt;/span&gt;
:'''FDport''' = 9102 &lt;span style=&quot;color:#bd0000;&quot;&gt;# son mot port d'écoute'&lt;/span&gt;
:'''WorkingDirectory''' = /var/lib/bacula
:'''Pid Directory''' = /var/run/bacula
:'''Maximum Concurrent Jobs''' = 8 &lt;span style=&quot;color:#bd0000;&quot;&gt;# le nombre maximum de sauvegardes simultanées&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key&lt;/span&gt; 
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Signatures = Yes&lt;/span&gt;           
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Encryption = Yes&lt;/span&gt;            
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/client.pem&quot;&lt;/span&gt;    
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Master Key = &quot;/etc/bacula/keys/master.crt&quot;&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les messages sont envoyés au director&lt;/span&gt; 
:'''Name''' = Standard
:'''director''' = NOM_DIR = all, !skipped, !restored
}
&lt;/div&gt;
&lt;br/&gt; 
'''Working Directory''' : Cette directive est obligatoire et spécifie un répertoire dans lequel le File Daemon peut placer ses fichiers d'état.&lt;br/&gt;
: Ce répertoire ne doit être utilisé que par Bacula, mais peut être partagé par d'autres daemons Bacula les définitions des noms doivent être uniques pour chaque démon.&lt;br/&gt; 
: Sur les systèmes Win32, dans certaines circonstances, vous pourriez avoir besoin de spécifier une lettre de lecteur dans le chemin de répertoire de travail spécifié.
: Aussi, s'il vous plaît assurez-vous que ce répertoire est accessible en écriture par l'utilisateur SYSTEM au contraire la restauration peut échouer&lt;br/&gt;
: (le fichier d'amorçage (bootstrap) qui est transféré vers le File Daemon du directeur est temporairement placé dans ce répertoire avant d'être transmis au Storage Daemon).&lt;br/&gt;
'''Pid Directory''' Cette directive est obligatoire et spécifie un répertoire dans lequel le directeur peut placer ses fichiers d'identification de processus.&lt;br/&gt;
: Le fichier d'identification de processus est utilisé pour stopper Bacula et éviter à plusieurs instances de Bacula de fonctionner simultanément.&lt;br/&gt;
: Cet enregistrement est nécessaire. L'expansion du shell standard de l'annuaire se fait lorsque le fichier de configuration est lu de telle sorte que des valeurs&lt;br/&gt;
: telles que $HOME seront correctement substituées.&lt;br/&gt;
: Typiquement, sur les systèmes Linux, vous mettrez: /var/run.Si vous n'installez pas Bacula dans les répertoires système, vous pouvez utiliser le répertoire de travail&lt;br/&gt;
: tel que défini ci-dessus.&lt;br/&gt; 

Pour voir toutes les possibilités du File Daemon je vous invite à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Client_File_daemon_Configur.html la documentation de Bacula] à ce sujet.&lt;br/&gt;

 
=== Le Storage Daemon ===
Le fichier de configuration du Storage Daemon a relativement peu de définitions de ressources. Toutefois, en raison de&lt;br/&gt;
la grande variation dans les médias de sauvegarde et des capacités du système, le démon de stockage doit être hautement configurable.&lt;br/&gt;

En conséquence, il y a un assez grand nombre de directives dans la définition des ressources de périphérique qui vous permet de définir.

toutes les caractéristiques de votre périphérique de stockage (normalement un lecteur de bande). Heureusement, avec des dispositifs 

de stockage modernes, les valeurs par défaut sont suffisantes, et très peu de directives sont réellement nécessaires.

'''/etc/bacula/bacula-sd.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = NOM_SD &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nom du Storage Daemon&lt;/span&gt;
:'''SDPort''' = 9103 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son port d'écoute&lt;/span&gt;
:''' WorkingDirectory''' = &quot;/var/lib/bacula&quot; 
:''' Pid Directory''' = &quot;/var/run/bacula&quot; 
:'''Maximum Concurrent Jobs''' = 8 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nombre maximum de sauvegardes simultanées par media&lt;/span&gt;
:'''SDAddress''' = nom_dns_ou_ip &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son addresse ip ou son nom dns&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# et son mot de passe&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;                                          
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_MON &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director restreint défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director_restreint&quot;
:'''Monitor''' = yes
}

'''Device''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# ou répertoire&lt;/span&gt; 
:'''Name''' = Nom_Device &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Un nom pour l'identifier&lt;/span&gt;
:'''Media Type''' = File &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son type : File, Tape, Fifo, DVD&lt;/span&gt;
:'''Archive Device''' = /home/sauvegarde/ &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son emplacement&lt;/span&gt;
:'''LabelMedia''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Lui donne un nom&lt;/span&gt;
:'''Random Access''' = Yes;
:'''AutomaticMount''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# monte le media en automatique&lt;/span&gt;
:'''RemovableMedia''' = no;
:'''AlwaysOpen''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Toujours accessible&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les messages sont envoyés au director&lt;/span&gt; 
:'''Name''' = Standard
:'''director''' = NOM_DIR = all
}
&lt;/div&gt;
&lt;br/&gt; 
'''Random Access''' : Si Oui, le périphérique est supposé être un moyen d'accès aléatoire qui prend en charge le lseek (Dvd,Usb...) &lt;br/&gt;
: Non pour les dispositifs d'accès non-aléatoires tels que des bandes.
'''RemovableMedia''' : Si oui, cet appareil prend en charge les supports amovibles (par exemple, cassettes ou de CD).&lt;br/&gt;
: Si Non, les médias ne peuvent pas être supprimés (par exemple, une zone de sauvegarde intermédiaire sur un disque dur).&lt;br/&gt;

Pour voir toutes les possibilités du Storage Daemon je vous invite à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html la documentation de Bacula] à ce sujet.

=== Le Director ===

De tous les fichiers de configuration nécessaires à l'exécution de Bacula, le directeur est le plus compliqué, et celui que vous aurez besoin de modifier&lt;br/&gt;
le plus souvent. Afin de simplifier sa comprehension nous le séparons en plusieurs fichiers.&lt;br/&gt;
Pour inclure un fichier dans bacula-dir.conf, il suffit de mettre un @ devant le chemin du fichier à inclure.&lt;br/&gt;
 @/chemin_complet/fichier

Comme toujours vous y gagneriez à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html la documentation] du director.

'''/etc/bacula/bacula-dir.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director&lt;/span&gt;
:'''DIRport''' = 9101 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son port d'écoute&lt;/span&gt;
:'''QueryFile''' = &quot;/etc/bacula/query.sql&quot;
:'''WorkingDirectory''' = &quot;/var/lib/bacula&quot;
:'''PidDirectory''' = &quot;/var/run/bacula&quot;
:'''Maximum Concurrent Jobs''' = 4 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nombre maximum de sauvegardes simultanées&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot;
:'''Messages''' = Standard
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;consolerCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key &lt;/span&gt;
}

@/etc/bacula/configuration/bacula_dir_filset.conf &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# On ajoute les fichiers de configuration des sauvegardes&lt;/span&gt;&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_job.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_storage.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_pool.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_client.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_schedule.conf&lt;br/&gt;

'''Catalog''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le catalogue ou Bacula stocke toutes ses informations&lt;/span&gt;
:'''Name''' = MyCatalog &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son nom&lt;/span&gt;
:dbname = &quot;bacula&quot;; dbuser = &quot;bacula&quot;; dbpassword = &quot;mdp_base_SQL&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les accés à la base Sql&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Définitions des messages envoyés par Bacula&lt;/span&gt;
:'''Name''' = Standard &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Un nom pour l'identifier&lt;/span&gt;
:'''mailcommand''' = &quot;/usr/sbin/bsmtp -h localhost -f \&quot;\(Bacula\) \&lt;%r\&gt;\&quot; -s \&quot;Bacula daemon message\&quot; %r&quot;
:'''mail''' = root@localhost = all, !skipped
:'''console''' = all, !skipped, !saved
::append = &quot;/var/bacula/log&quot; = all, !skipped
}
'''Director''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Director restreint utile pour les clients&lt;/span&gt;
:'''Name''' = DIR_MON
:'''Password''' = &quot;Mdp_du_director_restreint&quot;
:'''CommandACL''' = status, .status
}
&lt;/div&gt;

'''QueryFile''' = Cette directive est obligatoire et spécifie un répertoire et le fichier dans lequel le directeur peut trouver les états conservés SQL&lt;br/&gt;
pour les commandes de requête de la console.&lt;br/&gt;

==== Filset====

C'est dans ce fichier que l'on trouve les répertoires et fichiers à sauvegarder.&lt;br/&gt;

'''/etc/bacula/configuration/bacula_dir_filset.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''FileSet''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Fileset Windows&lt;/span&gt;
:'''Name''' = &quot;DONNEES_FSET&quot; 
:'''Enable VSS''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# activation ou non du Volume Shadow copy&lt;/span&gt;
:'''Include''' {
::'''Options''' {
:::compression = GZIP &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on compresse la sauvegarde possibilité de donner un niveau de compression ex: GZIP9&lt;/span&gt;
:::signature = MD5 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on vérifie les fichiers sauvegardés avec md5 ou sha1&lt;/span&gt;
:::accurate = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# si cette valeur est a &quot;no&quot; même les fichiers effacés seront restaurés&lt;/span&gt;
::}
::'''File''' = &quot;C:/DONNEES&quot;&lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le(s) répertoire(s) / fichier(s) à inclure&lt;/span&gt;
:}

:'''Exclude''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le(s) répertoire(s) / fichier(s) à exclure&lt;/span&gt;
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/yyy/zzz/yyy&quot;
:}
}

'''FileSet''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Fileset Linux&lt;/span&gt;
:'''Name''' = &quot;BACULA_FSET&quot;
:'''Enable VSS''' = no
:'''Include''' {
::'''Options''' {
:::signature = MD5
:::compression = GZIP9
:::accurate = yes
::}
::'''File''' = &quot;/etc/bacula/&quot;
}
&lt;/div&gt;
Vous trouverez le détail des ressources du fileset [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001870000000000000000 ici]

==== Storage ====

C'est ici que vous définissez le Storage Daemon ainsi que le device (répertoire) de sauvegarde à utiliser.

'''/etc/bacula/configuration/bacula_dir_storage.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = Donnees_st &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Vous lui donnez un nom&lt;/span&gt;
:'''Address''' = nom_dns_ou_ip_du_storagedaemon &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# L' adresse du Storage Daemon défini plus haut&lt;/span&gt;
:'''SDPort''' = 9103
:'''Password''' = &quot;mdp_du_storagedaemon&quot;
:'''Device''' = donnees_device &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# un des devices défini dans le fichier du Storage Daemon&lt;/span&gt;
}&lt;br/&gt;

&lt;/div&gt;
Vous trouverez le détail des ressources du storage [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018140000000000000000 ici]

==== Pool ====

Ce fichier décrit la façon dont sont gérés les volumes de sauvegarde.

'''/etc/bacula/configuration/bacula_dir_pool.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Pool'''{
:'''Name''' = Donnees_Pool
:'''Pool Type''' = Backup &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son type pour l'instant seul Backup est implémenté d'autres viendront &quot;Archive,Cloned,Migration,Copy,Save&quot;&lt;/span&gt;
:'''Recycle''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on peut réutiliser les anciens volumes purgés&lt;/span&gt;
:'''AutoPrune''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# On laisse Bacula gérer les volumes&lt;/span&gt;
:'''File Retention''' = 180 days &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# durée de rétention des fichiers&lt;/span&gt;
:'''Job Retention''' = 180 days &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# durée de rétention des jobs&lt;/span&gt;
:'''Maximum Volume Jobs''' = 1 
:'''Label Format''' = &quot;${Level}_${Job}_${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}_${Hour:p/2/0/r}h${Minute:p/2/0/r}m&quot;
}&lt;br/&gt;
&lt;/div&gt;

'''Maximum Volume Jobs''' = Cette directive n'est pas obligatoire mais en fixant cette valeur à 1 on s'assure&lt;br/&gt;
de n'avoir qu'un seul fichier par sauvegarde. &lt;br/&gt;
'''Label Format''' = permet de nommer son volume de sauvegarde &lt;br/&gt;

Vous trouverez le détail des ressources pool [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018150000000000000000 ici]

==== Client ====

Dans ce fichier vous retrouvez tous vos clients à sauvegarder.

'''/etc/bacula/configuration/bacula_dir_client.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Client''' {
:'''Name''' = Nom_du_poste_a_savegarder
:'''Address''' = nom_dns_ou_ip
:'''FDPort''' = 9102
:'''Catalog''' = MyCatalog
:'''Password''' = &quot;mdp_du_client&quot;
}
&lt;/div&gt;
Vous trouverez le détail des ressources du client [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018130000000000000000 ici]

==== Schedule ====

Dans celui-ci vous définissez les heures et les niveaux de vos sauvegardes automatiques.

'''/etc/bacula/configuration/bacula_dir_schedule.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Schedule''' {
:'''Name''' = &quot;Donnees&quot;
:'''Run''' = Full 1st sun at 23:05 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# complète le 1er dimanche du mois à 23:05&lt;/span&gt;
:'''Run''' = Differential 2nd-5th sun at 23:05 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Différentiel le 2em et 5em dimanche du mois à 23:05&lt;/span&gt;
:'''Run''' = Incremental mon-sat at 21:00 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Incrémentiel su lundi au samedi à 21:00&lt;/span&gt;
}&lt;br/&gt;
&lt;/div&gt;
Vous trouverez le détail des ressources schedule [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001850000000000000000 ici]

==== Job ====

Et enfin dans ce fichier ci vous assemblez tous vos éléments.

'''/etc/bacula/configuration/bacula_dir_job.conf'''

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Job''' {
:'''Name''' = &quot;DONNEES&quot;
:'''Type''' = Backup
:'''Level''' = Incremental &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le niveau de la sauvegarde&lt;/span&gt;
:'''Client''' = SERVEURZZZ
:'''FileSet''' = &quot;DONNEES_FSET&quot;
:'''Schedule''' = &quot;Donnees&quot;
:'''Storage''' = Donnee_st
:'''Pool'''= Donnees_Pool
:'''Write Bootstrap''' = /var/lib/bacula/donnee.bsr &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# fichier contenant l'ensemble des données de la sauvegarde&lt;/span&gt;
:'''Priority''' = 20 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# la priorité du job de sauvegarde : plus le nombre est petit plus la priorité est haute&lt;/span&gt;
:'''Messages''' = Standard 
}
&lt;/div&gt;

Si dans vos différents jobs vous avez les mêmes données (Fileset,Schedule...) vous pouvez créer un '''JobDefs'''.  

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''JobDefs''' {
:'''Name''' = &quot;JOBCOMMUN&quot;
:'''Type''' = Backup
:'''Level''' = Full
:'''FileSet''' = &quot;DONNEES_FSET&quot;
:'''Schedule''' = &quot;Donnees&quot;
:'''Pool''' = Donnees_Pool
:'''Storage''' = Donnees-st
:'''Messages''' = Standard
}

'''Job''' {
:'''Name''' = &quot;DONNEES&quot;
:'''JobDefs''' = &quot;JOBCOMMUN&quot;
:'''Client''' = SERVEURZZZ
:'''Write Bootstrap''' = /var/lib/bacula/donnee.bsr 
:'''Priority''' = 10 
:'''Messages''' = Standard 
}

&lt;/div&gt;
Vous trouverez le détail des ressources job [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001830000000000000000 ici]

== Sécurisation ==

Tout au long du chapitre sur la configuration certaines parties en bleue n'ont pas été expliquées, elles concernaient essentiellement&lt;br/&gt;
des commandes liées aux connexions SSL et aux Chiffrage des données.&lt;br/&gt;

=== Les connexions SSL ===

Afin de sécuriser un peu notre système de sauvegarde nous pouvons mettre en place des connexions SSL entre les différents services de Bacula.&lt;br/&gt;
Dans un premier temps nous allons créer notre certificat d'autorité de certification, c'est lui qui validera (signera) les autres.

Si vous créez plusieurs certificats le conseil que je vous donne c'est d'éditer le fichier '''/etc/ssl/openssl.conf''' et &lt;br/&gt;
dans la section :&quot;req_distinguished_name&quot; de mettre vos paramêtres personalisés.

'''Exemple:'''

 countryName                     = Country Name (2 letter code)
 countryName_default             = &lt;span style=&quot;color:#bd0000;&quot;&gt;FR&lt;/span&gt;
 countryName_min                 = 2
 countryName_max                 = 2
 
 stateOrProvinceName             = State or Province Name (full name)
 stateOrProvinceName_default     = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre département&lt;/span&gt;
 
 localityName                    = Locality Name (eg, city)
 localityName_default            = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre ville&lt;/span&gt;
 
 0.organizationName              = Organization Name (eg, company)
 0.organizationName_default      = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre société&lt;/span&gt;
 
 # we can do this but it is not needed normally :-)
 #1.organizationName             = Second Organization Name (eg, company)
 #1.organizationName_default     = World Wide Web Pty Ltd
 
 organizationalUnitName          = Organizational Unit Name (eg, section)
 organizationalUnitName_default  = &lt;span style=&quot;color:#bd0000;&quot;&gt;Interne&lt;/span&gt;
 
 commonName                      = Common Name (eg, YOUR name)
 commonName_max                  = 64
 emailAddress                    = Email Address
 emailAddress_default            = &lt;span style=&quot;color:#bd0000;&quot;&gt;Une adresse mail&lt;/span&gt;
 emailAddress_max                = 64

Commencez par créer le répertoire /etc/bacula/'''keys'''/ puis entrez y.

Création du certificat d'autorité de certification :

 #openssl genrsa -aes256 -out ca.key 2048 &lt;span style=&quot;color:#bd0000;&quot;&gt;# Génére une clé RSA 2048 bits et son chiffrement en AES 256 un mot de passe vous sera demandé.&lt;/span&gt; 
 #openssl req -new -key ca.key -x509 -out ca.crt &lt;span style=&quot;color:#bd0000;&quot;&gt;# Génére le certificat publique de la clé.&lt;/span&gt; 

Ensuite il faut créer une clé et un certificat par services que nous voulons sécuriser.
Par exemple pour le director :

 #openssl genrsa -out director.key 2048
 #openssl req -new -key director.key &gt; director.csr
 #openssl x509 -req -in director.csr -out director.crt -CA ca.crt -CAkey ca.key -CAcreateserial -CAserial ca.srl

Il est obligatoire de mettre le même nom dans le Common Name que le nom résolu par DNS du service.&lt;br/&gt;
Si l'adresse dns du director est &quot;director.local&quot; alors le Common Name est &quot;director.local&quot; et n'oubliez pas de configurer&lt;br/&gt;
le fichier '''/etc/hosts''' ou le serveur DNS.&lt;br/&gt;
L'option CAcreateserial n'est nécessaire que la première fois, ensuite pour la console :

 #openssl genrsa -out console.key 2048
 #openssl req -new -key console.key &gt; console.csr
 #openssl x509 -req -in console.csr -out console.crt -CA ca.crt -CAkey ca.key -CAserial ca.srl

Maintenant vous pouvez continuer seul pour les autres certificats (filedaemon.crt/key,storagedaemon.crt/key...).&lt;br/&gt;
Pour plus d'informations sur les certificats vous pouvez voir :&lt;br/&gt;
[http://www.batard.eu/2010/11/maitriser-les-certificats-avec-openssl/ N30Secs Blog] , 
[http://www.linux-france.org/prj/edu/archinet/systeme/ch24s03.html Linux-france.org] , 
[http://www.madboa.com/geek/openssl/ Madboa.com]


Pour établir une connexion sécurisé entre:

'''Director | Console'''&lt;br/&gt;
Revenons à notre fichier '''/etc/bacula/bconsole.conf''' et plus précisement à ces lignes :

 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Active une connexion SSL&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Oblige une connexion SSL&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers votre certificat publique du '''ca''' généré plus haut&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers votre certificat publique de la '''console''' généré plus haut&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers la clé privé de la '''console''' généré plus haut&lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-dir.conf''' :&lt;br/&gt;
 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;consolerCN&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Ici on n'autorise que la console en donnant le Common Name du certificat de la console&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key &lt;/span&gt;
 }

Vous voilà avec une connexion sécurisé entre votre console et le director.&lt;br/&gt;

'''Director | Filedaemon'''&lt;br/&gt;

Dans le fichier '''/etc/bacula/bacula-fd.conf''' :&lt;br/&gt;
 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;DirectorCN&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Ici on n'autorise que le director en donnant le Common Name du certificat du director&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key &lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-dir.conf''' :&lt;br/&gt;
 '''Client''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key&lt;/span&gt;
 }

'''Director | Storagedaemon'''&lt;br/&gt;

Dans le fichier '''/etc/bacula/bacula-sd.conf''' :&lt;br/&gt;
 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;DirectorCN&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Ici on n'autorise que le director en donnant le Common Name du certificat du director&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key &lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-dir.conf''' :&lt;br/&gt;
 '''Storage''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key&lt;/span&gt;
 }

'''Filedaemon | Storagedaemon'''&lt;br/&gt;

Dans le fichier '''/etc/bacula/bacula-sd.conf''' :&lt;br/&gt;
 '''Storage''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-fd.conf''' :&lt;br/&gt;
 '''FileDaemon''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key&lt;/span&gt;
 }

&lt;span style=&quot;background-color:#ff7272;&quot;&gt;Sous Windows faites attention&lt;/span&gt; aux chemins ce n'est pas un antislash mais deux slashs à la place :&lt;br/&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = &quot;C:\\keys\\ca.crt&quot;&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = &quot;C:\\keys\\client_win.crt&quot;&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = &quot;C:\\keys\\client_win.key&quot;&lt;/span&gt;

Et pensez aussi à modifier le fichier '''C:\WINDOWS\system32\drivers\etc\hosts''' ou le dns.

=== Le chiffrement des sauvegardes ===

C'est dans les différents File Daemon que cela ce passe, les fameuses lignes '''PKI''' :&lt;br/&gt;
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Signatures = Yes&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# active les données signées&lt;/span&gt;           
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Encryption = Yes&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# active le chiffrage&lt;/span&gt;            
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/client.pem&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# paire de clé publique/privée du client&lt;/span&gt;     
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Master Key = &quot;/etc/bacula/keys/master.crt&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# clé publique maître&lt;/span&gt;&lt;br/&gt; 


Premiere étape générer une paire de clé maître de 2048 bits et chiffré en AES 256 (un mot de passe vous sera demandé):

 # openssl genrsa -aes256 -out master.key 2048 &lt;span style=&quot;color:#bd0000;&quot;&gt;# Votre clé privé : master.key&lt;/span&gt; 
 # openssl req -new -key master.key -x509 -out master.crt &lt;span style=&quot;color:#bd0000;&quot;&gt;# Votre clé publique : master.crt&lt;/span&gt; 

Ensuite on génére une paire de clé pour chaque client :&lt;br/&gt;
Générer une clé privée : 
 # openssl genrsa -aes256 -out client.key 2048

Le fait de chiffrer la clé en AES 256 nous permet de chiffrer notre sauvegarde en AES 256, les autres choix sont :&lt;br/&gt;
128, 192, AES-CBC et Blowfish-CBC&lt;br/&gt;

Générer la clé publique auto-signée :
 # openssl req -new -key -client.key -x509 -out client.crt 
Se débarrasser du mot de passe de la clé (que bacula puisse la lire!) :
 # openssl rsa -in client.key -out client.nopass.key
Copier la clé privée et publique dans le fichier '''.pem''' :
 # cat client.nopass.key client.crt &gt; client.pem &lt;span style=&quot;color:#bd0000;&quot;&gt;# Votre paire de clé publique/privée du client : client.pem&lt;/span&gt; 

Si votre paire de clé du client est perdue ou corrompue vous pouvez déchiffrer les données avec la paire de clé maître pour cela il faut :&lt;br/&gt;
concaténer la clé privée et publique :
 # cat master.key master.crt &gt; master.keypair
puis modifier la ligne PKI Keypair en y mettant la master.keypair :
 &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/master.keypair&quot;

source :&lt;br/&gt;
:[http://www.bacula.org/en/dev-manual/main/main/Data_Encryption.html la documentation de bacula]&lt;br/&gt;
:[http://sourceforge.net/mailarchive/forum.php?thread_name=21DF2F99-E2D9-4E4E-AF06-6BA0EF64383F%40langille.org&amp;forum_name=bacula-docs Data Encryption - subjectKeyIdentifier extension?]

== Utilisation ==
=== En mode Console ===
=== En mode Graphique ===



[[Utilisateur:Haludeis|Haludeis]] ([[Discussion utilisateur:Haludeis|discussion]]) 6 mai 2012 à 09:16 (CEST)</text>
      <sha1>jkbbdgfksrc0232lkvmcpe4rklulbq4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4203</id>
      <parentid>4202</parentid>
      <timestamp>2012-05-06T08:01:01Z</timestamp>
      <contributor>
        <username>Haludeis</username>
        <id>30</id>
      </contributor>
      <minor/>
      <comment>Annulation des modifications 4202 de [[Special:Contributions/Haludeis|Haludeis]] ([[User talk:Haludeis|discussion]])</comment>
      <text xml:space="preserve" bytes="35564">[[Catégorie:Sauvegardes]]
{{Ébauche|Bacula}}
{{sid}}

== Présentation ==
Ce document est basé sur une installation stable de Debian (en ce moment Squeeze) et de Bacula 5.0.2.

Son but : sauvegarde, restauration et vérification en réseau &lt;br/&gt;
(reste à faire)

== Installation ==
Bacula peut utiliser les bases de données SQLite, MySql et PostGreSQL.Il suffit d'installer les paquets correspondant à votre choix. 

Changer &quot;-mysql&quot; par &quot;-pgsql&quot; ou &quot;-sqlite3&quot; sur le paquet director et le fd.

ici je choisi MySql (MySql étant déja installé):

 # aptitude install bacula-director-mysql bacula-sd-mysql bacula

Accorder les droits à bacula sur la base de données (vérifié si pas obsolète):
 # mysql -u root -p
 &gt; grant all privileges on bacula.* to 'bacula'@'localhost' identified by 'bacula' ;

Créer le répertoire de sauvegarde et accorder les droits à bacula :
 # mkdir /home/sauvegarde/
 # chown -R bacula.bacula /home/sauvegarde
 # chmod -R 660 /home/sauvegarde (---&gt; à vérifier)

== Configuration ==
Bacula se compose des fichiers suivants :

Le fichier générale de configuration le Director :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-dir.conf&lt;/span&gt;
Le fichier Storage Daemon concernant le stockage des données :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-sd.conf&lt;/span&gt;
Celui du File Daemon permettant l'accès aux données installé sur le client à sauvegarder :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-fd.conf&lt;/span&gt;
Le fichier permettant la connexion entre la console et le directeur :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bconsole.conf&lt;/span&gt; 

Ces fichiers représentent les différents services de Bacula, ils peuvent se trouver sur des machines totalement différentes.

=== La Console ===

'''/etc/bacula/bconsole.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' { 
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''DIRport''' = 9101 &lt;span style=&quot;color:#bd0000;&quot;&gt;# le port d'écoute du director&lt;/span&gt;  
:'''address''' = nom_resolu_par_dns_ou_IP &lt;span style=&quot;color:#bd0000;&quot;&gt;# ip ou dns du director&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;# le mot de passe du director&lt;/span&gt; 
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt; 
} &lt;/div&gt;

'''address''' : Attention le nom DNS est obligatoire pour une connexion SSL penser à configurer le fichier /etc/hosts ou le serveur dns.

:: si vous n'utilisez pas de connexion sécurisée vous pouvez mettre une adresse ip directement.

La partie bleu permet la sécurisation des données entre le director et la console ca.crt doit être le même partout les deux autres diffèrent&lt;br/&gt;
pour chaque éléments de bacula.&lt;br/&gt;
Pour l'instant ne vous préoccupez pas de cette partie, une explication plus complète sera détaillée dans le chapitre sur la sécurisation.&lt;br/&gt;
Sachez juste que cela ce trouve là. &lt;br/&gt;
D'autres indications dans [http://www.bacula.org/5.0.x-manuals/en/main/main/Console_Configuration.html la documentation de bacula]

=== Le File Daemon ===
La ressource Client (ou File Daemon) définit le nom du client (tel qu'il est utilisé par le director) ainsi que le port sur lequel le client est à l'écoute des connections du Director.&lt;br/&gt;

'''/etc/bacula/bacula-fd.conf''' 
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le mot de passe du director&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key &lt;/span&gt;
}

'''Director''' {
:'''Name''' = NOM_MON &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director restreint défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director_restreint&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;# son mot de passe&lt;/span&gt;
:'''Monitor''' = yes 
}

'''FileDaemon''' { 
:'''Name''' = NOM_FD &lt;span style=&quot;color:#bd0000;&quot;&gt;# le nom du File daemon&lt;/span&gt;
:'''FDport''' = 9102 &lt;span style=&quot;color:#bd0000;&quot;&gt;# son mot port d'écoute'&lt;/span&gt;
:'''WorkingDirectory''' = /var/lib/bacula
:'''Pid Directory''' = /var/run/bacula
:'''Maximum Concurrent Jobs''' = 8 &lt;span style=&quot;color:#bd0000;&quot;&gt;# le nombre maximum de sauvegardes simultanées&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key&lt;/span&gt; 
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Signatures = Yes&lt;/span&gt;           
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Encryption = Yes&lt;/span&gt;            
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/client.pem&quot;&lt;/span&gt;    
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Master Key = &quot;/etc/bacula/keys/master.crt&quot;&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les messages sont envoyés au director&lt;/span&gt; 
:'''Name''' = Standard
:'''director''' = NOM_DIR = all, !skipped, !restored
}
&lt;/div&gt;
&lt;br/&gt; 
'''Working Directory''' : Cette directive est obligatoire et spécifie un répertoire dans lequel le File Daemon peut placer ses fichiers d'état.&lt;br/&gt;
: Ce répertoire ne doit être utilisé que par Bacula, mais peut être partagé par d'autres daemons Bacula les définitions des noms doivent être uniques pour chaque démon.&lt;br/&gt; 
: Sur les systèmes Win32, dans certaines circonstances, vous pourriez avoir besoin de spécifier une lettre de lecteur dans le chemin de répertoire de travail spécifié.
: Aussi, s'il vous plaît assurez-vous que ce répertoire est accessible en écriture par l'utilisateur SYSTEM au contraire la restauration peut échouer&lt;br/&gt;
: (le fichier d'amorçage (bootstrap) qui est transféré vers le File Daemon du directeur est temporairement placé dans ce répertoire avant d'être transmis au Storage Daemon).&lt;br/&gt;
'''Pid Directory''' Cette directive est obligatoire et spécifie un répertoire dans lequel le directeur peut placer ses fichiers d'identification de processus.&lt;br/&gt;
: Le fichier d'identification de processus est utilisé pour stopper Bacula et éviter à plusieurs instances de Bacula de fonctionner simultanément.&lt;br/&gt;
: Cet enregistrement est nécessaire. L'expansion du shell standard de l'annuaire se fait lorsque le fichier de configuration est lu de telle sorte que des valeurs&lt;br/&gt;
: telles que $HOME seront correctement substituées.&lt;br/&gt;
: Typiquement, sur les systèmes Linux, vous mettrez: /var/run.Si vous n'installez pas Bacula dans les répertoires système, vous pouvez utiliser le répertoire de travail&lt;br/&gt;
: tel que défini ci-dessus.&lt;br/&gt; 

Pour voir toutes les possibilités du File Daemon je vous invite à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Client_File_daemon_Configur.html la documentation de Bacula] à ce sujet.&lt;br/&gt;

 
=== Le Storage Daemon ===
Le fichier de configuration du Storage Daemon a relativement peu de définitions de ressources. Toutefois, en raison de&lt;br/&gt;
la grande variation dans les médias de sauvegarde et des capacités du système, le démon de stockage doit être hautement configurable.&lt;br/&gt;

En conséquence, il y a un assez grand nombre de directives dans la définition des ressources de périphérique qui vous permet de définir.

toutes les caractéristiques de votre périphérique de stockage (normalement un lecteur de bande). Heureusement, avec des dispositifs 

de stockage modernes, les valeurs par défaut sont suffisantes, et très peu de directives sont réellement nécessaires.

'''/etc/bacula/bacula-sd.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = NOM_SD &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nom du Storage Daemon&lt;/span&gt;
:'''SDPort''' = 9103 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son port d'écoute&lt;/span&gt;
:''' WorkingDirectory''' = &quot;/var/lib/bacula&quot; 
:''' Pid Directory''' = &quot;/var/run/bacula&quot; 
:'''Maximum Concurrent Jobs''' = 8 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nombre maximum de sauvegardes simultanées par media&lt;/span&gt;
:'''SDAddress''' = nom_dns_ou_ip &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son addresse ip ou son nom dns&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# et son mot de passe&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;                                          
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_MON &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director restreint défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director_restreint&quot;
:'''Monitor''' = yes
}

'''Device''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# ou répertoire&lt;/span&gt; 
:'''Name''' = Nom_Device &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Un nom pour l'identifier&lt;/span&gt;
:'''Media Type''' = File &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son type : File, Tape, Fifo, DVD&lt;/span&gt;
:'''Archive Device''' = /home/sauvegarde/ &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son emplacement&lt;/span&gt;
:'''LabelMedia''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Lui donne un nom&lt;/span&gt;
:'''Random Access''' = Yes;
:'''AutomaticMount''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# monte le media en automatique&lt;/span&gt;
:'''RemovableMedia''' = no;
:'''AlwaysOpen''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Toujours accessible&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les messages sont envoyés au director&lt;/span&gt; 
:'''Name''' = Standard
:'''director''' = NOM_DIR = all
}
&lt;/div&gt;
&lt;br/&gt; 
'''Random Access''' : Si Oui, le périphérique est supposé être un moyen d'accès aléatoire qui prend en charge le lseek (Dvd,Usb...) &lt;br/&gt;
: Non pour les dispositifs d'accès non-aléatoires tels que des bandes.
'''RemovableMedia''' : Si oui, cet appareil prend en charge les supports amovibles (par exemple, cassettes ou de CD).&lt;br/&gt;
: Si Non, les médias ne peuvent pas être supprimés (par exemple, une zone de sauvegarde intermédiaire sur un disque dur).&lt;br/&gt;

Pour voir toutes les possibilités du Storage Daemon je vous invite à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html la documentation de Bacula] à ce sujet.

=== Le Director ===

De tous les fichiers de configuration nécessaires à l'exécution de Bacula, le directeur est le plus compliqué, et celui que vous aurez besoin de modifier&lt;br/&gt;
le plus souvent. Afin de simplifier sa comprehension nous le séparons en plusieurs fichiers.&lt;br/&gt;
Pour inclure un fichier dans bacula-dir.conf, il suffit de mettre un @ devant le chemin du fichier à inclure.&lt;br/&gt;
 @/chemin_complet/fichier

Comme toujours vous y gagneriez à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html la documentation] du director.

'''/etc/bacula/bacula-dir.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director&lt;/span&gt;
:'''DIRport''' = 9101 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son port d'écoute&lt;/span&gt;
:'''QueryFile''' = &quot;/etc/bacula/query.sql&quot;
:'''WorkingDirectory''' = &quot;/var/lib/bacula&quot;
:'''PidDirectory''' = &quot;/var/run/bacula&quot;
:'''Maximum Concurrent Jobs''' = 4 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nombre maximum de sauvegardes simultanées&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot;
:'''Messages''' = Standard
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;consolerCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key &lt;/span&gt;
}

@/etc/bacula/configuration/bacula_dir_filset.conf &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# On ajoute les fichiers de configuration des sauvegardes&lt;/span&gt;&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_job.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_storage.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_pool.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_client.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_schedule.conf&lt;br/&gt;

'''Catalog''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le catalogue ou Bacula stocke toutes ses informations&lt;/span&gt;
:'''Name''' = MyCatalog &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son nom&lt;/span&gt;
:dbname = &quot;bacula&quot;; dbuser = &quot;bacula&quot;; dbpassword = &quot;mdp_base_SQL&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les accés à la base Sql&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Définitions des messages envoyés par Bacula&lt;/span&gt;
:'''Name''' = Standard &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Un nom pour l'identifier&lt;/span&gt;
:'''mailcommand''' = &quot;/usr/sbin/bsmtp -h localhost -f \&quot;\(Bacula\) \&lt;%r\&gt;\&quot; -s \&quot;Bacula daemon message\&quot; %r&quot;
:'''mail''' = root@localhost = all, !skipped
:'''console''' = all, !skipped, !saved
::append = &quot;/var/bacula/log&quot; = all, !skipped
}
'''Director''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Director restreint utile pour les clients&lt;/span&gt;
:'''Name''' = DIR_MON
:'''Password''' = &quot;Mdp_du_director_restreint&quot;
:'''CommandACL''' = status, .status
}
&lt;/div&gt;

'''QueryFile''' = Cette directive est obligatoire et spécifie un répertoire et le fichier dans lequel le directeur peut trouver les états conservés SQL&lt;br/&gt;
pour les commandes de requête de la console.&lt;br/&gt;

==== Filset====

C'est dans ce fichier que l'on trouve les répertoires et fichiers à sauvegarder.&lt;br/&gt;

'''/etc/bacula/configuration/bacula_dir_filset.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''FileSet''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Fileset Windows&lt;/span&gt;
:'''Name''' = &quot;DONNEES_FSET&quot; 
:'''Enable VSS''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# activation ou non du Volume Shadow copy&lt;/span&gt;
:'''Include''' {
::'''Options''' {
:::compression = GZIP &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on compresse la sauvegarde possibilité de donner un niveau de compression ex: GZIP9&lt;/span&gt;
:::signature = MD5 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on vérifie les fichiers sauvegardés avec md5 ou sha1&lt;/span&gt;
:::accurate = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# si cette valeur est a &quot;no&quot; même les fichiers effacés seront restaurés&lt;/span&gt;
::}
::'''File''' = &quot;C:/DONNEES&quot;&lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le(s) répertoire(s) / fichier(s) à inclure&lt;/span&gt;
:}

:'''Exclude''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le(s) répertoire(s) / fichier(s) à exclure&lt;/span&gt;
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/yyy/zzz/yyy&quot;
:}
}

'''FileSet''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Fileset Linux&lt;/span&gt;
:'''Name''' = &quot;BACULA_FSET&quot;
:'''Enable VSS''' = no
:'''Include''' {
::'''Options''' {
:::signature = MD5
:::compression = GZIP9
:::accurate = yes
::}
::'''File''' = &quot;/etc/bacula/&quot;
}
&lt;/div&gt;
Vous trouverez le détail des ressources du fileset [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001870000000000000000 ici]

==== Storage ====

C'est ici que vous définissez le Storage Daemon ainsi que le device (répertoire) de sauvegarde à utiliser.

'''/etc/bacula/configuration/bacula_dir_storage.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = Donnees_st &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Vous lui donnez un nom&lt;/span&gt;
:'''Address''' = nom_dns_ou_ip_du_storagedaemon &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# L' adresse du Storage Daemon défini plus haut&lt;/span&gt;
:'''SDPort''' = 9103
:'''Password''' = &quot;mdp_du_storagedaemon&quot;
:'''Device''' = donnees_device &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# un des devices défini dans le fichier du Storage Daemon&lt;/span&gt;
}&lt;br/&gt;

&lt;/div&gt;
Vous trouverez le détail des ressources du storage [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018140000000000000000 ici]

==== Pool ====

Ce fichier décrit la façon dont sont gérés les volumes de sauvegarde.

'''/etc/bacula/configuration/bacula_dir_pool.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Pool'''{
:'''Name''' = Donnees_Pool
:'''Pool Type''' = Backup &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son type pour l'instant seul Backup est implémenté d'autres viendront &quot;Archive,Cloned,Migration,Copy,Save&quot;&lt;/span&gt;
:'''Recycle''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on peut réutiliser les anciens volumes purgés&lt;/span&gt;
:'''AutoPrune''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# On laisse Bacula gérer les volumes&lt;/span&gt;
:'''File Retention''' = 180 days &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# durée de rétention des fichiers&lt;/span&gt;
:'''Job Retention''' = 180 days &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# durée de rétention des jobs&lt;/span&gt;
:'''Maximum Volume Jobs''' = 1 
:'''Label Format''' = &quot;${Level}_${Job}_${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}_${Hour:p/2/0/r}h${Minute:p/2/0/r}m&quot;
}&lt;br/&gt;
&lt;/div&gt;

'''Maximum Volume Jobs''' = Cette directive n'est pas obligatoire mais en fixant cette valeur à 1 on s'assure&lt;br/&gt;
de n'avoir qu'un seul fichier par sauvegarde. &lt;br/&gt;
'''Label Format''' = permet de nommer son volume de sauvegarde &lt;br/&gt;

Vous trouverez le détail des ressources pool [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018150000000000000000 ici]

==== Client ====

Dans ce fichier vous retrouvez tous vos clients à sauvegarder.

'''/etc/bacula/configuration/bacula_dir_client.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Client''' {
:'''Name''' = Nom_du_poste_a_savegarder
:'''Address''' = nom_dns_ou_ip
:'''FDPort''' = 9102
:'''Catalog''' = MyCatalog
:'''Password''' = &quot;mdp_du_client&quot;
}
&lt;/div&gt;
Vous trouverez le détail des ressources du client [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018130000000000000000 ici]

==== Schedule ====

Dans celui-ci vous définissez les heures et les niveaux de vos sauvegardes automatiques.

'''/etc/bacula/configuration/bacula_dir_schedule.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Schedule''' {
:'''Name''' = &quot;Donnees&quot;
:'''Run''' = Full 1st sun at 23:05 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# complète le 1er dimanche du mois à 23:05&lt;/span&gt;
:'''Run''' = Differential 2nd-5th sun at 23:05 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Différentiel le 2em et 5em dimanche du mois à 23:05&lt;/span&gt;
:'''Run''' = Incremental mon-sat at 21:00 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Incrémentiel su lundi au samedi à 21:00&lt;/span&gt;
}&lt;br/&gt;
&lt;/div&gt;
Vous trouverez le détail des ressources schedule [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001850000000000000000 ici]

==== Job ====

Et enfin dans ce fichier ci vous assemblez tous vos éléments.

'''/etc/bacula/configuration/bacula_dir_job.conf'''

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Job''' {
:'''Name''' = &quot;DONNEES&quot;
:'''Type''' = Backup
:'''Level''' = Incremental &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le niveau de la sauvegarde&lt;/span&gt;
:'''Client''' = SERVEURZZZ
:'''FileSet''' = &quot;DONNEES_FSET&quot;
:'''Schedule''' = &quot;Donnees&quot;
:'''Storage''' = Donnee_st
:'''Pool'''= Donnees_Pool
:'''Write Bootstrap''' = /var/lib/bacula/donnee.bsr &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# fichier contenant l'ensemble des données de la sauvegarde&lt;/span&gt;
:'''Priority''' = 20 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# la priorité du job de sauvegarde : plus le nombre est petit plus la priorité est haute&lt;/span&gt;
:'''Messages''' = Standard 
}
&lt;/div&gt;

Si dans vos différents jobs vous avez les mêmes données (Fileset,Schedule...) vous pouvez créer un '''JobDefs'''.  

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''JobDefs''' {
:'''Name''' = &quot;JOBCOMMUN&quot;
:'''Type''' = Backup
:'''Level''' = Full
:'''FileSet''' = &quot;DONNEES_FSET&quot;
:'''Schedule''' = &quot;Donnees&quot;
:'''Pool''' = Donnees_Pool
:'''Storage''' = Donnees-st
:'''Messages''' = Standard
}

'''Job''' {
:'''Name''' = &quot;DONNEES&quot;
:'''JobDefs''' = &quot;JOBCOMMUN&quot;
:'''Client''' = SERVEURZZZ
:'''Write Bootstrap''' = /var/lib/bacula/donnee.bsr 
:'''Priority''' = 10 
:'''Messages''' = Standard 
}

&lt;/div&gt;
Vous trouverez le détail des ressources job [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001830000000000000000 ici]

== Sécurisation ==

Tout au long du chapitre sur la configuration certaines parties en bleue n'ont pas été expliquées, elles concernaient essentiellement&lt;br/&gt;
des commandes liées aux connexions SSL et aux Chiffrage des données.&lt;br/&gt;

=== Les connexions SSL ===

Afin de sécuriser un peu notre système de sauvegarde nous pouvons mettre en place des connexions SSL entre les différents services de Bacula.&lt;br/&gt;
Dans un premier temps nous allons créer notre certificat d'autorité de certification, c'est lui qui validera (signera) les autres.

Si vous créez plusieurs certificats le conseil que je vous donne c'est d'éditer le fichier '''/etc/ssl/openssl.conf''' et &lt;br/&gt;
dans la section :&quot;req_distinguished_name&quot; de mettre vos paramêtres personalisés.

'''Exemple:'''

 countryName                     = Country Name (2 letter code)
 countryName_default             = &lt;span style=&quot;color:#bd0000;&quot;&gt;FR&lt;/span&gt;
 countryName_min                 = 2
 countryName_max                 = 2
 
 stateOrProvinceName             = State or Province Name (full name)
 stateOrProvinceName_default     = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre département&lt;/span&gt;
 
 localityName                    = Locality Name (eg, city)
 localityName_default            = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre ville&lt;/span&gt;
 
 0.organizationName              = Organization Name (eg, company)
 0.organizationName_default      = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre société&lt;/span&gt;
 
 # we can do this but it is not needed normally :-)
 #1.organizationName             = Second Organization Name (eg, company)
 #1.organizationName_default     = World Wide Web Pty Ltd
 
 organizationalUnitName          = Organizational Unit Name (eg, section)
 organizationalUnitName_default  = &lt;span style=&quot;color:#bd0000;&quot;&gt;Interne&lt;/span&gt;
 
 commonName                      = Common Name (eg, YOUR name)
 commonName_max                  = 64
 emailAddress                    = Email Address
 emailAddress_default            = &lt;span style=&quot;color:#bd0000;&quot;&gt;Une adresse mail&lt;/span&gt;
 emailAddress_max                = 64

Commencez par créer le répertoire /etc/bacula/'''keys'''/ puis entrez y.

Création du certificat d'autorité de certification :

 #openssl genrsa -aes256 -out ca.key 2048 &lt;span style=&quot;color:#bd0000;&quot;&gt;# Génére une clé RSA 2048 bits et son chiffrement en AES 256 un mot de passe vous sera demandé.&lt;/span&gt; 
 #openssl req -new -key ca.key -x509 -out ca.crt &lt;span style=&quot;color:#bd0000;&quot;&gt;# Génére le certificat publique de la clé.&lt;/span&gt; 

Ensuite il faut créer une clé et un certificat par services que nous voulons sécuriser.
Par exemple pour le director :

 #openssl genrsa -out director.key 2048
 #openssl req -new -key director.key &gt; director.csr
 #openssl x509 -req -in director.csr -out director.crt -CA ca.crt -CAkey ca.key -CAcreateserial -CAserial ca.srl

Il est obligatoire de mettre le même nom dans le Common Name que le nom résolu par DNS du service.&lt;br/&gt;
Si l'adresse dns du director est &quot;director.local&quot; alors le Common Name est &quot;director.local&quot; et n'oubliez pas de configurer&lt;br/&gt;
le fichier '''/etc/hosts''' ou le serveur DNS.&lt;br/&gt;
L'option CAcreateserial n'est nécessaire que la première fois, ensuite pour la console :

 #openssl genrsa -out console.key 2048
 #openssl req -new -key console.key &gt; console.csr
 #openssl x509 -req -in console.csr -out console.crt -CA ca.crt -CAkey ca.key -CAserial ca.srl

Maintenant vous pouvez continuer seul pour les autres certificats (filedaemon.crt/key,storagedaemon.crt/key...).&lt;br/&gt;
Pour plus d'informations sur les certificats vous pouvez voir :&lt;br/&gt;
[http://www.batard.eu/2010/11/maitriser-les-certificats-avec-openssl/ N30Secs Blog] , 
[http://www.linux-france.org/prj/edu/archinet/systeme/ch24s03.html Linux-france.org] , 
[http://www.madboa.com/geek/openssl/ Madboa.com]


Pour établir une connexion sécurisé entre:

'''Director | Console'''&lt;br/&gt;
Revenons à notre fichier '''/etc/bacula/bconsole.conf''' et plus précisement à ces lignes :

 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Active une connexion SSL&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Oblige une connexion SSL&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers votre certificat publique du '''ca''' généré plus haut&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers votre certificat publique de la '''console''' généré plus haut&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers la clé privé de la '''console''' généré plus haut&lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-dir.conf''' :&lt;br/&gt;
 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;consolerCN&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Ici on n'autorise que la console en donnant le Common Name du certificat de la console&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key &lt;/span&gt;
 }

Vous voilà avec une connexion sécurisé entre votre console et le director.&lt;br/&gt;

'''Director | Filedaemon'''&lt;br/&gt;

Dans le fichier '''/etc/bacula/bacula-fd.conf''' :&lt;br/&gt;
 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;DirectorCN&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Ici on n'autorise que le director en donnant le Common Name du certificat du director&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key &lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-dir.conf''' :&lt;br/&gt;
 '''Client''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key&lt;/span&gt;
 }

'''Director | Storagedaemon'''&lt;br/&gt;

Dans le fichier '''/etc/bacula/bacula-sd.conf''' :&lt;br/&gt;
 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;DirectorCN&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Ici on n'autorise que le director en donnant le Common Name du certificat du director&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key &lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-dir.conf''' :&lt;br/&gt;
 '''Storage''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key&lt;/span&gt;
 }

'''Filedaemon | Storagedaemon'''&lt;br/&gt;

Dans le fichier '''/etc/bacula/bacula-sd.conf''' :&lt;br/&gt;
 '''Storage''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-fd.conf''' :&lt;br/&gt;
 '''FileDaemon''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key&lt;/span&gt;
 }

&lt;span style=&quot;background-color:#ff7272;&quot;&gt;Sous Windows faites attention&lt;/span&gt; aux chemins ce n'est pas un antislash mais deux slashs à la place :&lt;br/&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = &quot;C:\\keys\\ca.crt&quot;&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = &quot;C:\\keys\\client_win.crt&quot;&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = &quot;C:\\keys\\client_win.key&quot;&lt;/span&gt;

Et pensez aussi à modifier le fichier '''C:\WINDOWS\system32\drivers\etc\hosts''' ou le dns.

=== Le chiffrement des sauvegardes ===

C'est dans les différents File Daemon que cela ce passe, les fameuses lignes '''PKI''' :&lt;br/&gt;
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Signatures = Yes&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# active les données signées&lt;/span&gt;           
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Encryption = Yes&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# active le chiffrage&lt;/span&gt;            
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/client.pem&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# paire de clé publique/privée du client&lt;/span&gt;     
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Master Key = &quot;/etc/bacula/keys/master.crt&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# clé publique maître&lt;/span&gt;&lt;br/&gt; 


Premiere étape générer une paire de clé maître de 2048 bits et chiffré en AES 256 (un mot de passe vous sera demandé):

 # openssl genrsa -aes256 -out master.key 2048 &lt;span style=&quot;color:#bd0000;&quot;&gt;# Votre clé privé : master.key&lt;/span&gt; 
 # openssl req -new -key master.key -x509 -out master.crt &lt;span style=&quot;color:#bd0000;&quot;&gt;# Votre clé publique : master.crt&lt;/span&gt; 

Ensuite on génére une paire de clé pour chaque client :&lt;br/&gt;
Générer une clé privée : 
 # openssl genrsa -aes256 -out client.key 2048

Le fait de chiffrer la clé en AES 256 nous permet de chiffrer notre sauvegarde en AES 256, les autres choix sont :&lt;br/&gt;
128, 192, AES-CBC et Blowfish-CBC&lt;br/&gt;

Générer la clé publique auto-signée :
 # openssl req -new -key -client.key -x509 -out client.crt 
Se débarrasser du mot de passe de la clé (que bacula puisse la lire!) :
 # openssl rsa -in client.key -out client.nopass.key
Copier la clé privée et publique dans le fichier '''.pem''' :
 # cat client.nopass.key client.crt &gt; client.pem &lt;span style=&quot;color:#bd0000;&quot;&gt;# Votre paire de clé publique/privée du client : client.pem&lt;/span&gt; 

Si votre paire de clé du client est perdue ou corrompue vous pouvez déchiffrer les données avec la paire de clé maître pour cela il faut :&lt;br/&gt;
concaténer la clé privée et publique :
 # cat master.key master.crt &gt; master.keypair
puis modifier la ligne PKI Keypair en y mettant la master.keypair :
 &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/master.keypair&quot;

source :&lt;br/&gt;
:[http://www.bacula.org/en/dev-manual/main/main/Data_Encryption.html la documentation de bacula]&lt;br/&gt;
:[http://sourceforge.net/mailarchive/forum.php?thread_name=21DF2F99-E2D9-4E4E-AF06-6BA0EF64383F%40langille.org&amp;forum_name=bacula-docs Data Encryption - subjectKeyIdentifier extension?]

== Utilisation ==
=== En mode Console ===
=== En mode Graphique ===



[[Utilisateur:Haludeis|Haludeis]] ([[Discussion utilisateur:Haludeis|discussion]]) 6 mai 2012 à 09:16 (CEST)</text>
      <sha1>mvniwvgn49xjb68obkeh1l2jdypfl1m</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4204</id>
      <parentid>4203</parentid>
      <timestamp>2012-05-06T08:05:42Z</timestamp>
      <contributor>
        <username>Haludeis</username>
        <id>30</id>
      </contributor>
      <minor/>
      <comment>/* Pool */</comment>
      <text xml:space="preserve" bytes="35512">[[Catégorie:Sauvegardes]]
{{Ébauche|Bacula}}
{{sid}}

== Présentation ==
Ce document est basé sur une installation stable de Debian (en ce moment Squeeze) et de Bacula 5.0.2.

Son but : sauvegarde, restauration et vérification en réseau &lt;br/&gt;
(reste à faire)

== Installation ==
Bacula peut utiliser les bases de données SQLite, MySql et PostGreSQL.Il suffit d'installer les paquets correspondant à votre choix. 

Changer &quot;-mysql&quot; par &quot;-pgsql&quot; ou &quot;-sqlite3&quot; sur le paquet director et le fd.

ici je choisi MySql (MySql étant déja installé):

 # aptitude install bacula-director-mysql bacula-sd-mysql bacula

Accorder les droits à bacula sur la base de données (vérifié si pas obsolète):
 # mysql -u root -p
 &gt; grant all privileges on bacula.* to 'bacula'@'localhost' identified by 'bacula' ;

Créer le répertoire de sauvegarde et accorder les droits à bacula :
 # mkdir /home/sauvegarde/
 # chown -R bacula.bacula /home/sauvegarde
 # chmod -R 660 /home/sauvegarde (---&gt; à vérifier)

== Configuration ==
Bacula se compose des fichiers suivants :

Le fichier générale de configuration le Director :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-dir.conf&lt;/span&gt;
Le fichier Storage Daemon concernant le stockage des données :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-sd.conf&lt;/span&gt;
Celui du File Daemon permettant l'accès aux données installé sur le client à sauvegarder :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-fd.conf&lt;/span&gt;
Le fichier permettant la connexion entre la console et le directeur :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bconsole.conf&lt;/span&gt; 

Ces fichiers représentent les différents services de Bacula, ils peuvent se trouver sur des machines totalement différentes.

=== La Console ===

'''/etc/bacula/bconsole.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' { 
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''DIRport''' = 9101 &lt;span style=&quot;color:#bd0000;&quot;&gt;# le port d'écoute du director&lt;/span&gt;  
:'''address''' = nom_resolu_par_dns_ou_IP &lt;span style=&quot;color:#bd0000;&quot;&gt;# ip ou dns du director&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;# le mot de passe du director&lt;/span&gt; 
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt; 
} &lt;/div&gt;

'''address''' : Attention le nom DNS est obligatoire pour une connexion SSL penser à configurer le fichier /etc/hosts ou le serveur dns.

:: si vous n'utilisez pas de connexion sécurisée vous pouvez mettre une adresse ip directement.

La partie bleu permet la sécurisation des données entre le director et la console ca.crt doit être le même partout les deux autres diffèrent&lt;br/&gt;
pour chaque éléments de bacula.&lt;br/&gt;
Pour l'instant ne vous préoccupez pas de cette partie, une explication plus complète sera détaillée dans le chapitre sur la sécurisation.&lt;br/&gt;
Sachez juste que cela ce trouve là. &lt;br/&gt;
D'autres indications dans [http://www.bacula.org/5.0.x-manuals/en/main/main/Console_Configuration.html la documentation de bacula]

=== Le File Daemon ===
La ressource Client (ou File Daemon) définit le nom du client (tel qu'il est utilisé par le director) ainsi que le port sur lequel le client est à l'écoute des connections du Director.&lt;br/&gt;

'''/etc/bacula/bacula-fd.conf''' 
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le mot de passe du director&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key &lt;/span&gt;
}

'''Director''' {
:'''Name''' = NOM_MON &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director restreint défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director_restreint&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;# son mot de passe&lt;/span&gt;
:'''Monitor''' = yes 
}

'''FileDaemon''' { 
:'''Name''' = NOM_FD &lt;span style=&quot;color:#bd0000;&quot;&gt;# le nom du File daemon&lt;/span&gt;
:'''FDport''' = 9102 &lt;span style=&quot;color:#bd0000;&quot;&gt;# son mot port d'écoute'&lt;/span&gt;
:'''WorkingDirectory''' = /var/lib/bacula
:'''Pid Directory''' = /var/run/bacula
:'''Maximum Concurrent Jobs''' = 8 &lt;span style=&quot;color:#bd0000;&quot;&gt;# le nombre maximum de sauvegardes simultanées&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key&lt;/span&gt; 
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Signatures = Yes&lt;/span&gt;           
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Encryption = Yes&lt;/span&gt;            
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/client.pem&quot;&lt;/span&gt;    
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Master Key = &quot;/etc/bacula/keys/master.crt&quot;&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les messages sont envoyés au director&lt;/span&gt; 
:'''Name''' = Standard
:'''director''' = NOM_DIR = all, !skipped, !restored
}
&lt;/div&gt;
&lt;br/&gt; 
'''Working Directory''' : Cette directive est obligatoire et spécifie un répertoire dans lequel le File Daemon peut placer ses fichiers d'état.&lt;br/&gt;
: Ce répertoire ne doit être utilisé que par Bacula, mais peut être partagé par d'autres daemons Bacula les définitions des noms doivent être uniques pour chaque démon.&lt;br/&gt; 
: Sur les systèmes Win32, dans certaines circonstances, vous pourriez avoir besoin de spécifier une lettre de lecteur dans le chemin de répertoire de travail spécifié.
: Aussi, s'il vous plaît assurez-vous que ce répertoire est accessible en écriture par l'utilisateur SYSTEM au contraire la restauration peut échouer&lt;br/&gt;
: (le fichier d'amorçage (bootstrap) qui est transféré vers le File Daemon du directeur est temporairement placé dans ce répertoire avant d'être transmis au Storage Daemon).&lt;br/&gt;
'''Pid Directory''' Cette directive est obligatoire et spécifie un répertoire dans lequel le directeur peut placer ses fichiers d'identification de processus.&lt;br/&gt;
: Le fichier d'identification de processus est utilisé pour stopper Bacula et éviter à plusieurs instances de Bacula de fonctionner simultanément.&lt;br/&gt;
: Cet enregistrement est nécessaire. L'expansion du shell standard de l'annuaire se fait lorsque le fichier de configuration est lu de telle sorte que des valeurs&lt;br/&gt;
: telles que $HOME seront correctement substituées.&lt;br/&gt;
: Typiquement, sur les systèmes Linux, vous mettrez: /var/run.Si vous n'installez pas Bacula dans les répertoires système, vous pouvez utiliser le répertoire de travail&lt;br/&gt;
: tel que défini ci-dessus.&lt;br/&gt; 

Pour voir toutes les possibilités du File Daemon je vous invite à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Client_File_daemon_Configur.html la documentation de Bacula] à ce sujet.&lt;br/&gt;

 
=== Le Storage Daemon ===
Le fichier de configuration du Storage Daemon a relativement peu de définitions de ressources. Toutefois, en raison de&lt;br/&gt;
la grande variation dans les médias de sauvegarde et des capacités du système, le démon de stockage doit être hautement configurable.&lt;br/&gt;

En conséquence, il y a un assez grand nombre de directives dans la définition des ressources de périphérique qui vous permet de définir.

toutes les caractéristiques de votre périphérique de stockage (normalement un lecteur de bande). Heureusement, avec des dispositifs 

de stockage modernes, les valeurs par défaut sont suffisantes, et très peu de directives sont réellement nécessaires.

'''/etc/bacula/bacula-sd.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = NOM_SD &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nom du Storage Daemon&lt;/span&gt;
:'''SDPort''' = 9103 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son port d'écoute&lt;/span&gt;
:''' WorkingDirectory''' = &quot;/var/lib/bacula&quot; 
:''' Pid Directory''' = &quot;/var/run/bacula&quot; 
:'''Maximum Concurrent Jobs''' = 8 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nombre maximum de sauvegardes simultanées par media&lt;/span&gt;
:'''SDAddress''' = nom_dns_ou_ip &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son addresse ip ou son nom dns&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# et son mot de passe&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;                                          
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_MON &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director restreint défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director_restreint&quot;
:'''Monitor''' = yes
}

'''Device''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# ou répertoire&lt;/span&gt; 
:'''Name''' = Nom_Device &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Un nom pour l'identifier&lt;/span&gt;
:'''Media Type''' = File &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son type : File, Tape, Fifo, DVD&lt;/span&gt;
:'''Archive Device''' = /home/sauvegarde/ &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son emplacement&lt;/span&gt;
:'''LabelMedia''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Lui donne un nom&lt;/span&gt;
:'''Random Access''' = Yes;
:'''AutomaticMount''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# monte le media en automatique&lt;/span&gt;
:'''RemovableMedia''' = no;
:'''AlwaysOpen''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Toujours accessible&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les messages sont envoyés au director&lt;/span&gt; 
:'''Name''' = Standard
:'''director''' = NOM_DIR = all
}
&lt;/div&gt;
&lt;br/&gt; 
'''Random Access''' : Si Oui, le périphérique est supposé être un moyen d'accès aléatoire qui prend en charge le lseek (Dvd,Usb...) &lt;br/&gt;
: Non pour les dispositifs d'accès non-aléatoires tels que des bandes.
'''RemovableMedia''' : Si oui, cet appareil prend en charge les supports amovibles (par exemple, cassettes ou de CD).&lt;br/&gt;
: Si Non, les médias ne peuvent pas être supprimés (par exemple, une zone de sauvegarde intermédiaire sur un disque dur).&lt;br/&gt;

Pour voir toutes les possibilités du Storage Daemon je vous invite à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html la documentation de Bacula] à ce sujet.

=== Le Director ===

De tous les fichiers de configuration nécessaires à l'exécution de Bacula, le directeur est le plus compliqué, et celui que vous aurez besoin de modifier&lt;br/&gt;
le plus souvent. Afin de simplifier sa comprehension nous le séparons en plusieurs fichiers.&lt;br/&gt;
Pour inclure un fichier dans bacula-dir.conf, il suffit de mettre un @ devant le chemin du fichier à inclure.&lt;br/&gt;
 @/chemin_complet/fichier

Comme toujours vous y gagneriez à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html la documentation] du director.

'''/etc/bacula/bacula-dir.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director&lt;/span&gt;
:'''DIRport''' = 9101 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son port d'écoute&lt;/span&gt;
:'''QueryFile''' = &quot;/etc/bacula/query.sql&quot;
:'''WorkingDirectory''' = &quot;/var/lib/bacula&quot;
:'''PidDirectory''' = &quot;/var/run/bacula&quot;
:'''Maximum Concurrent Jobs''' = 4 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nombre maximum de sauvegardes simultanées&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot;
:'''Messages''' = Standard
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;consolerCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key &lt;/span&gt;
}

@/etc/bacula/configuration/bacula_dir_filset.conf &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# On ajoute les fichiers de configuration des sauvegardes&lt;/span&gt;&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_job.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_storage.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_pool.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_client.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_schedule.conf&lt;br/&gt;

'''Catalog''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le catalogue ou Bacula stocke toutes ses informations&lt;/span&gt;
:'''Name''' = MyCatalog &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son nom&lt;/span&gt;
:dbname = &quot;bacula&quot;; dbuser = &quot;bacula&quot;; dbpassword = &quot;mdp_base_SQL&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les accés à la base Sql&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Définitions des messages envoyés par Bacula&lt;/span&gt;
:'''Name''' = Standard &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Un nom pour l'identifier&lt;/span&gt;
:'''mailcommand''' = &quot;/usr/sbin/bsmtp -h localhost -f \&quot;\(Bacula\) \&lt;%r\&gt;\&quot; -s \&quot;Bacula daemon message\&quot; %r&quot;
:'''mail''' = root@localhost = all, !skipped
:'''console''' = all, !skipped, !saved
::append = &quot;/var/bacula/log&quot; = all, !skipped
}
'''Director''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Director restreint utile pour les clients&lt;/span&gt;
:'''Name''' = DIR_MON
:'''Password''' = &quot;Mdp_du_director_restreint&quot;
:'''CommandACL''' = status, .status
}
&lt;/div&gt;

'''QueryFile''' = Cette directive est obligatoire et spécifie un répertoire et le fichier dans lequel le directeur peut trouver les états conservés SQL&lt;br/&gt;
pour les commandes de requête de la console.&lt;br/&gt;

==== Filset====

C'est dans ce fichier que l'on trouve les répertoires et fichiers à sauvegarder.&lt;br/&gt;

'''/etc/bacula/configuration/bacula_dir_filset.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''FileSet''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Fileset Windows&lt;/span&gt;
:'''Name''' = &quot;DONNEES_FSET&quot; 
:'''Enable VSS''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# activation ou non du Volume Shadow copy&lt;/span&gt;
:'''Include''' {
::'''Options''' {
:::compression = GZIP &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on compresse la sauvegarde possibilité de donner un niveau de compression ex: GZIP9&lt;/span&gt;
:::signature = MD5 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on vérifie les fichiers sauvegardés avec md5 ou sha1&lt;/span&gt;
:::accurate = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# si cette valeur est a &quot;no&quot; même les fichiers effacés seront restaurés&lt;/span&gt;
::}
::'''File''' = &quot;C:/DONNEES&quot;&lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le(s) répertoire(s) / fichier(s) à inclure&lt;/span&gt;
:}

:'''Exclude''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le(s) répertoire(s) / fichier(s) à exclure&lt;/span&gt;
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/yyy/zzz/yyy&quot;
:}
}

'''FileSet''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Fileset Linux&lt;/span&gt;
:'''Name''' = &quot;BACULA_FSET&quot;
:'''Enable VSS''' = no
:'''Include''' {
::'''Options''' {
:::signature = MD5
:::compression = GZIP9
:::accurate = yes
::}
::'''File''' = &quot;/etc/bacula/&quot;
}
&lt;/div&gt;
Vous trouverez le détail des ressources du fileset [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001870000000000000000 ici]

==== Storage ====

C'est ici que vous définissez le Storage Daemon ainsi que le device (répertoire) de sauvegarde à utiliser.

'''/etc/bacula/configuration/bacula_dir_storage.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = Donnees_st &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Vous lui donnez un nom&lt;/span&gt;
:'''Address''' = nom_dns_ou_ip_du_storagedaemon &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# L' adresse du Storage Daemon défini plus haut&lt;/span&gt;
:'''SDPort''' = 9103
:'''Password''' = &quot;mdp_du_storagedaemon&quot;
:'''Device''' = donnees_device &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# un des devices défini dans le fichier du Storage Daemon&lt;/span&gt;
}&lt;br/&gt;

&lt;/div&gt;
Vous trouverez le détail des ressources du storage [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018140000000000000000 ici]

==== Pool ====

Ce fichier décrit la façon dont sont gérés les volumes de sauvegarde.

'''/etc/bacula/configuration/bacula_dir_pool.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Pool'''{
:'''Name''' = Donnees_Pool
:'''Pool Type''' = Backup &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son type Backup, Archive, Cloned, Migration, Copy, Save&quot;&lt;/span&gt;
:'''Recycle''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on peut réutiliser les anciens volumes purgés&lt;/span&gt;
:'''AutoPrune''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# On laisse Bacula gérer les volumes&lt;/span&gt;
:'''File Retention''' = 180 days &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# durée de rétention des fichiers&lt;/span&gt;
:'''Job Retention''' = 180 days &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# durée de rétention des jobs&lt;/span&gt;
:'''Maximum Volume Jobs''' = 1 
:'''Label Format''' = &quot;${Level}_${Job}_${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}_${Hour:p/2/0/r}h${Minute:p/2/0/r}m&quot;
}&lt;br/&gt;
&lt;/div&gt;

'''Maximum Volume Jobs''' = Cette directive n'est pas obligatoire mais en fixant cette valeur à 1 on s'assure&lt;br/&gt;
de n'avoir qu'un seul fichier par sauvegarde. &lt;br/&gt;
'''Label Format''' = permet de nommer son volume de sauvegarde &lt;br/&gt;

Vous trouverez le détail des ressources pool [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018150000000000000000 ici]

==== Client ====

Dans ce fichier vous retrouvez tous vos clients à sauvegarder.

'''/etc/bacula/configuration/bacula_dir_client.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Client''' {
:'''Name''' = Nom_du_poste_a_savegarder
:'''Address''' = nom_dns_ou_ip
:'''FDPort''' = 9102
:'''Catalog''' = MyCatalog
:'''Password''' = &quot;mdp_du_client&quot;
}
&lt;/div&gt;
Vous trouverez le détail des ressources du client [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018130000000000000000 ici]

==== Schedule ====

Dans celui-ci vous définissez les heures et les niveaux de vos sauvegardes automatiques.

'''/etc/bacula/configuration/bacula_dir_schedule.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Schedule''' {
:'''Name''' = &quot;Donnees&quot;
:'''Run''' = Full 1st sun at 23:05 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# complète le 1er dimanche du mois à 23:05&lt;/span&gt;
:'''Run''' = Differential 2nd-5th sun at 23:05 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Différentiel le 2em et 5em dimanche du mois à 23:05&lt;/span&gt;
:'''Run''' = Incremental mon-sat at 21:00 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Incrémentiel su lundi au samedi à 21:00&lt;/span&gt;
}&lt;br/&gt;
&lt;/div&gt;
Vous trouverez le détail des ressources schedule [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001850000000000000000 ici]

==== Job ====

Et enfin dans ce fichier ci vous assemblez tous vos éléments.

'''/etc/bacula/configuration/bacula_dir_job.conf'''

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Job''' {
:'''Name''' = &quot;DONNEES&quot;
:'''Type''' = Backup
:'''Level''' = Incremental &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le niveau de la sauvegarde&lt;/span&gt;
:'''Client''' = SERVEURZZZ
:'''FileSet''' = &quot;DONNEES_FSET&quot;
:'''Schedule''' = &quot;Donnees&quot;
:'''Storage''' = Donnee_st
:'''Pool'''= Donnees_Pool
:'''Write Bootstrap''' = /var/lib/bacula/donnee.bsr &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# fichier contenant l'ensemble des données de la sauvegarde&lt;/span&gt;
:'''Priority''' = 20 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# la priorité du job de sauvegarde : plus le nombre est petit plus la priorité est haute&lt;/span&gt;
:'''Messages''' = Standard 
}
&lt;/div&gt;

Si dans vos différents jobs vous avez les mêmes données (Fileset,Schedule...) vous pouvez créer un '''JobDefs'''.  

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''JobDefs''' {
:'''Name''' = &quot;JOBCOMMUN&quot;
:'''Type''' = Backup
:'''Level''' = Full
:'''FileSet''' = &quot;DONNEES_FSET&quot;
:'''Schedule''' = &quot;Donnees&quot;
:'''Pool''' = Donnees_Pool
:'''Storage''' = Donnees-st
:'''Messages''' = Standard
}

'''Job''' {
:'''Name''' = &quot;DONNEES&quot;
:'''JobDefs''' = &quot;JOBCOMMUN&quot;
:'''Client''' = SERVEURZZZ
:'''Write Bootstrap''' = /var/lib/bacula/donnee.bsr 
:'''Priority''' = 10 
:'''Messages''' = Standard 
}

&lt;/div&gt;
Vous trouverez le détail des ressources job [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001830000000000000000 ici]

== Sécurisation ==

Tout au long du chapitre sur la configuration certaines parties en bleue n'ont pas été expliquées, elles concernaient essentiellement&lt;br/&gt;
des commandes liées aux connexions SSL et aux Chiffrage des données.&lt;br/&gt;

=== Les connexions SSL ===

Afin de sécuriser un peu notre système de sauvegarde nous pouvons mettre en place des connexions SSL entre les différents services de Bacula.&lt;br/&gt;
Dans un premier temps nous allons créer notre certificat d'autorité de certification, c'est lui qui validera (signera) les autres.

Si vous créez plusieurs certificats le conseil que je vous donne c'est d'éditer le fichier '''/etc/ssl/openssl.conf''' et &lt;br/&gt;
dans la section :&quot;req_distinguished_name&quot; de mettre vos paramêtres personalisés.

'''Exemple:'''

 countryName                     = Country Name (2 letter code)
 countryName_default             = &lt;span style=&quot;color:#bd0000;&quot;&gt;FR&lt;/span&gt;
 countryName_min                 = 2
 countryName_max                 = 2
 
 stateOrProvinceName             = State or Province Name (full name)
 stateOrProvinceName_default     = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre département&lt;/span&gt;
 
 localityName                    = Locality Name (eg, city)
 localityName_default            = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre ville&lt;/span&gt;
 
 0.organizationName              = Organization Name (eg, company)
 0.organizationName_default      = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre société&lt;/span&gt;
 
 # we can do this but it is not needed normally :-)
 #1.organizationName             = Second Organization Name (eg, company)
 #1.organizationName_default     = World Wide Web Pty Ltd
 
 organizationalUnitName          = Organizational Unit Name (eg, section)
 organizationalUnitName_default  = &lt;span style=&quot;color:#bd0000;&quot;&gt;Interne&lt;/span&gt;
 
 commonName                      = Common Name (eg, YOUR name)
 commonName_max                  = 64
 emailAddress                    = Email Address
 emailAddress_default            = &lt;span style=&quot;color:#bd0000;&quot;&gt;Une adresse mail&lt;/span&gt;
 emailAddress_max                = 64

Commencez par créer le répertoire /etc/bacula/'''keys'''/ puis entrez y.

Création du certificat d'autorité de certification :

 #openssl genrsa -aes256 -out ca.key 2048 &lt;span style=&quot;color:#bd0000;&quot;&gt;# Génére une clé RSA 2048 bits et son chiffrement en AES 256 un mot de passe vous sera demandé.&lt;/span&gt; 
 #openssl req -new -key ca.key -x509 -out ca.crt &lt;span style=&quot;color:#bd0000;&quot;&gt;# Génére le certificat publique de la clé.&lt;/span&gt; 

Ensuite il faut créer une clé et un certificat par services que nous voulons sécuriser.
Par exemple pour le director :

 #openssl genrsa -out director.key 2048
 #openssl req -new -key director.key &gt; director.csr
 #openssl x509 -req -in director.csr -out director.crt -CA ca.crt -CAkey ca.key -CAcreateserial -CAserial ca.srl

Il est obligatoire de mettre le même nom dans le Common Name que le nom résolu par DNS du service.&lt;br/&gt;
Si l'adresse dns du director est &quot;director.local&quot; alors le Common Name est &quot;director.local&quot; et n'oubliez pas de configurer&lt;br/&gt;
le fichier '''/etc/hosts''' ou le serveur DNS.&lt;br/&gt;
L'option CAcreateserial n'est nécessaire que la première fois, ensuite pour la console :

 #openssl genrsa -out console.key 2048
 #openssl req -new -key console.key &gt; console.csr
 #openssl x509 -req -in console.csr -out console.crt -CA ca.crt -CAkey ca.key -CAserial ca.srl

Maintenant vous pouvez continuer seul pour les autres certificats (filedaemon.crt/key,storagedaemon.crt/key...).&lt;br/&gt;
Pour plus d'informations sur les certificats vous pouvez voir :&lt;br/&gt;
[http://www.batard.eu/2010/11/maitriser-les-certificats-avec-openssl/ N30Secs Blog] , 
[http://www.linux-france.org/prj/edu/archinet/systeme/ch24s03.html Linux-france.org] , 
[http://www.madboa.com/geek/openssl/ Madboa.com]


Pour établir une connexion sécurisé entre:

'''Director | Console'''&lt;br/&gt;
Revenons à notre fichier '''/etc/bacula/bconsole.conf''' et plus précisement à ces lignes :

 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Active une connexion SSL&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Oblige une connexion SSL&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers votre certificat publique du '''ca''' généré plus haut&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers votre certificat publique de la '''console''' généré plus haut&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers la clé privé de la '''console''' généré plus haut&lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-dir.conf''' :&lt;br/&gt;
 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;consolerCN&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Ici on n'autorise que la console en donnant le Common Name du certificat de la console&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key &lt;/span&gt;
 }

Vous voilà avec une connexion sécurisé entre votre console et le director.&lt;br/&gt;

'''Director | Filedaemon'''&lt;br/&gt;

Dans le fichier '''/etc/bacula/bacula-fd.conf''' :&lt;br/&gt;
 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;DirectorCN&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Ici on n'autorise que le director en donnant le Common Name du certificat du director&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key &lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-dir.conf''' :&lt;br/&gt;
 '''Client''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key&lt;/span&gt;
 }

'''Director | Storagedaemon'''&lt;br/&gt;

Dans le fichier '''/etc/bacula/bacula-sd.conf''' :&lt;br/&gt;
 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;DirectorCN&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Ici on n'autorise que le director en donnant le Common Name du certificat du director&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key &lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-dir.conf''' :&lt;br/&gt;
 '''Storage''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key&lt;/span&gt;
 }

'''Filedaemon | Storagedaemon'''&lt;br/&gt;

Dans le fichier '''/etc/bacula/bacula-sd.conf''' :&lt;br/&gt;
 '''Storage''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-fd.conf''' :&lt;br/&gt;
 '''FileDaemon''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key&lt;/span&gt;
 }

&lt;span style=&quot;background-color:#ff7272;&quot;&gt;Sous Windows faites attention&lt;/span&gt; aux chemins ce n'est pas un antislash mais deux slashs à la place :&lt;br/&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = &quot;C:\\keys\\ca.crt&quot;&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = &quot;C:\\keys\\client_win.crt&quot;&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = &quot;C:\\keys\\client_win.key&quot;&lt;/span&gt;

Et pensez aussi à modifier le fichier '''C:\WINDOWS\system32\drivers\etc\hosts''' ou le dns.

=== Le chiffrement des sauvegardes ===

C'est dans les différents File Daemon que cela ce passe, les fameuses lignes '''PKI''' :&lt;br/&gt;
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Signatures = Yes&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# active les données signées&lt;/span&gt;           
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Encryption = Yes&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# active le chiffrage&lt;/span&gt;            
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/client.pem&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# paire de clé publique/privée du client&lt;/span&gt;     
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Master Key = &quot;/etc/bacula/keys/master.crt&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# clé publique maître&lt;/span&gt;&lt;br/&gt; 


Premiere étape générer une paire de clé maître de 2048 bits et chiffré en AES 256 (un mot de passe vous sera demandé):

 # openssl genrsa -aes256 -out master.key 2048 &lt;span style=&quot;color:#bd0000;&quot;&gt;# Votre clé privé : master.key&lt;/span&gt; 
 # openssl req -new -key master.key -x509 -out master.crt &lt;span style=&quot;color:#bd0000;&quot;&gt;# Votre clé publique : master.crt&lt;/span&gt; 

Ensuite on génére une paire de clé pour chaque client :&lt;br/&gt;
Générer une clé privée : 
 # openssl genrsa -aes256 -out client.key 2048

Le fait de chiffrer la clé en AES 256 nous permet de chiffrer notre sauvegarde en AES 256, les autres choix sont :&lt;br/&gt;
128, 192, AES-CBC et Blowfish-CBC&lt;br/&gt;

Générer la clé publique auto-signée :
 # openssl req -new -key -client.key -x509 -out client.crt 
Se débarrasser du mot de passe de la clé (que bacula puisse la lire!) :
 # openssl rsa -in client.key -out client.nopass.key
Copier la clé privée et publique dans le fichier '''.pem''' :
 # cat client.nopass.key client.crt &gt; client.pem &lt;span style=&quot;color:#bd0000;&quot;&gt;# Votre paire de clé publique/privée du client : client.pem&lt;/span&gt; 

Si votre paire de clé du client est perdue ou corrompue vous pouvez déchiffrer les données avec la paire de clé maître pour cela il faut :&lt;br/&gt;
concaténer la clé privée et publique :
 # cat master.key master.crt &gt; master.keypair
puis modifier la ligne PKI Keypair en y mettant la master.keypair :
 &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/master.keypair&quot;

source :&lt;br/&gt;
:[http://www.bacula.org/en/dev-manual/main/main/Data_Encryption.html la documentation de bacula]&lt;br/&gt;
:[http://sourceforge.net/mailarchive/forum.php?thread_name=21DF2F99-E2D9-4E4E-AF06-6BA0EF64383F%40langille.org&amp;forum_name=bacula-docs Data Encryption - subjectKeyIdentifier extension?]

== Utilisation ==
=== En mode Console ===
=== En mode Graphique ===



[[Utilisateur:Haludeis|Haludeis]] ([[Discussion utilisateur:Haludeis|discussion]]) 6 mai 2012 à 09:16 (CEST)</text>
      <sha1>ojjxkevsklkwkb88hb3t2xpenw8jttl</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4205</id>
      <parentid>4204</parentid>
      <timestamp>2012-05-06T09:12:45Z</timestamp>
      <contributor>
        <username>Haludeis</username>
        <id>30</id>
      </contributor>
      <minor/>
      <comment>/* Le Director */</comment>
      <text xml:space="preserve" bytes="36275">[[Catégorie:Sauvegardes]]
{{Ébauche|Bacula}}
{{sid}}

== Présentation ==
Ce document est basé sur une installation stable de Debian (en ce moment Squeeze) et de Bacula 5.0.2.

Son but : sauvegarde, restauration et vérification en réseau &lt;br/&gt;
(reste à faire)

== Installation ==
Bacula peut utiliser les bases de données SQLite, MySql et PostGreSQL.Il suffit d'installer les paquets correspondant à votre choix. 

Changer &quot;-mysql&quot; par &quot;-pgsql&quot; ou &quot;-sqlite3&quot; sur le paquet director et le fd.

ici je choisi MySql (MySql étant déja installé):

 # aptitude install bacula-director-mysql bacula-sd-mysql bacula

Accorder les droits à bacula sur la base de données (vérifié si pas obsolète):
 # mysql -u root -p
 &gt; grant all privileges on bacula.* to 'bacula'@'localhost' identified by 'bacula' ;

Créer le répertoire de sauvegarde et accorder les droits à bacula :
 # mkdir /home/sauvegarde/
 # chown -R bacula.bacula /home/sauvegarde
 # chmod -R 660 /home/sauvegarde (---&gt; à vérifier)

== Configuration ==
Bacula se compose des fichiers suivants :

Le fichier générale de configuration le Director :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-dir.conf&lt;/span&gt;
Le fichier Storage Daemon concernant le stockage des données :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-sd.conf&lt;/span&gt;
Celui du File Daemon permettant l'accès aux données installé sur le client à sauvegarder :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-fd.conf&lt;/span&gt;
Le fichier permettant la connexion entre la console et le directeur :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bconsole.conf&lt;/span&gt; 

Ces fichiers représentent les différents services de Bacula, ils peuvent se trouver sur des machines totalement différentes.

=== La Console ===

'''/etc/bacula/bconsole.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' { 
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''DIRport''' = 9101 &lt;span style=&quot;color:#bd0000;&quot;&gt;# le port d'écoute du director&lt;/span&gt;  
:'''address''' = nom_resolu_par_dns_ou_IP &lt;span style=&quot;color:#bd0000;&quot;&gt;# ip ou dns du director&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;# le mot de passe du director&lt;/span&gt; 
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt; 
} &lt;/div&gt;

'''address''' : Attention le nom DNS est obligatoire pour une connexion SSL penser à configurer le fichier /etc/hosts ou le serveur dns.

:: si vous n'utilisez pas de connexion sécurisée vous pouvez mettre une adresse ip directement.

La partie bleu permet la sécurisation des données entre le director et la console ca.crt doit être le même partout les deux autres diffèrent&lt;br/&gt;
pour chaque éléments de bacula.&lt;br/&gt;
Pour l'instant ne vous préoccupez pas de cette partie, une explication plus complète sera détaillée dans le chapitre sur la sécurisation.&lt;br/&gt;
Sachez juste que cela ce trouve là. &lt;br/&gt;
D'autres indications dans [http://www.bacula.org/5.0.x-manuals/en/main/main/Console_Configuration.html la documentation de bacula]

=== Le File Daemon ===
La ressource Client (ou File Daemon) définit le nom du client (tel qu'il est utilisé par le director) ainsi que le port sur lequel le client est à l'écoute des connections du Director.&lt;br/&gt;

'''/etc/bacula/bacula-fd.conf''' 
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le mot de passe du director&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key &lt;/span&gt;
}

'''Director''' {
:'''Name''' = NOM_MON &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director restreint défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director_restreint&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;# son mot de passe&lt;/span&gt;
:'''Monitor''' = yes 
}

'''FileDaemon''' { 
:'''Name''' = NOM_FD &lt;span style=&quot;color:#bd0000;&quot;&gt;# le nom du File daemon&lt;/span&gt;
:'''FDport''' = 9102 &lt;span style=&quot;color:#bd0000;&quot;&gt;# son mot port d'écoute'&lt;/span&gt;
:'''WorkingDirectory''' = /var/lib/bacula
:'''Pid Directory''' = /var/run/bacula
:'''Maximum Concurrent Jobs''' = 8 &lt;span style=&quot;color:#bd0000;&quot;&gt;# le nombre maximum de sauvegardes simultanées&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key&lt;/span&gt; 
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Signatures = Yes&lt;/span&gt;           
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Encryption = Yes&lt;/span&gt;            
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/client.pem&quot;&lt;/span&gt;    
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Master Key = &quot;/etc/bacula/keys/master.crt&quot;&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les messages sont envoyés au director&lt;/span&gt; 
:'''Name''' = Standard
:'''director''' = NOM_DIR = all, !skipped, !restored
}
&lt;/div&gt;
&lt;br/&gt; 
'''Working Directory''' : Cette directive est obligatoire et spécifie un répertoire dans lequel le File Daemon peut placer ses fichiers d'état.&lt;br/&gt;
: Ce répertoire ne doit être utilisé que par Bacula, mais peut être partagé par d'autres daemons Bacula les définitions des noms doivent être uniques pour chaque démon.&lt;br/&gt; 
: Sur les systèmes Win32, dans certaines circonstances, vous pourriez avoir besoin de spécifier une lettre de lecteur dans le chemin de répertoire de travail spécifié.
: Aussi, s'il vous plaît assurez-vous que ce répertoire est accessible en écriture par l'utilisateur SYSTEM au contraire la restauration peut échouer&lt;br/&gt;
: (le fichier d'amorçage (bootstrap) qui est transféré vers le File Daemon du directeur est temporairement placé dans ce répertoire avant d'être transmis au Storage Daemon).&lt;br/&gt;
'''Pid Directory''' Cette directive est obligatoire et spécifie un répertoire dans lequel le directeur peut placer ses fichiers d'identification de processus.&lt;br/&gt;
: Le fichier d'identification de processus est utilisé pour stopper Bacula et éviter à plusieurs instances de Bacula de fonctionner simultanément.&lt;br/&gt;
: Cet enregistrement est nécessaire. L'expansion du shell standard de l'annuaire se fait lorsque le fichier de configuration est lu de telle sorte que des valeurs&lt;br/&gt;
: telles que $HOME seront correctement substituées.&lt;br/&gt;
: Typiquement, sur les systèmes Linux, vous mettrez: /var/run.Si vous n'installez pas Bacula dans les répertoires système, vous pouvez utiliser le répertoire de travail&lt;br/&gt;
: tel que défini ci-dessus.&lt;br/&gt; 

Pour voir toutes les possibilités du File Daemon je vous invite à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Client_File_daemon_Configur.html la documentation de Bacula] à ce sujet.&lt;br/&gt;

 
=== Le Storage Daemon ===
Le fichier de configuration du Storage Daemon a relativement peu de définitions de ressources. Toutefois, en raison de&lt;br/&gt;
la grande variation dans les médias de sauvegarde et des capacités du système, le démon de stockage doit être hautement configurable.&lt;br/&gt;

En conséquence, il y a un assez grand nombre de directives dans la définition des ressources de périphérique qui vous permet de définir.

toutes les caractéristiques de votre périphérique de stockage (normalement un lecteur de bande). Heureusement, avec des dispositifs 

de stockage modernes, les valeurs par défaut sont suffisantes, et très peu de directives sont réellement nécessaires.

'''/etc/bacula/bacula-sd.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = NOM_SD &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nom du Storage Daemon&lt;/span&gt;
:'''SDPort''' = 9103 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son port d'écoute&lt;/span&gt;
:''' WorkingDirectory''' = &quot;/var/lib/bacula&quot; 
:''' Pid Directory''' = &quot;/var/run/bacula&quot; 
:'''Maximum Concurrent Jobs''' = 8 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nombre maximum de sauvegardes simultanées par media&lt;/span&gt;
:'''SDAddress''' = nom_dns_ou_ip &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son addresse ip ou son nom dns&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# et son mot de passe&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;                                          
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_MON &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director restreint défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director_restreint&quot;
:'''Monitor''' = yes
}

'''Device''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# ou répertoire&lt;/span&gt; 
:'''Name''' = Nom_Device &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Un nom pour l'identifier&lt;/span&gt;
:'''Media Type''' = File &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son type : File, Tape, Fifo, DVD&lt;/span&gt;
:'''Archive Device''' = /home/sauvegarde/ &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son emplacement&lt;/span&gt;
:'''LabelMedia''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Lui donne un nom&lt;/span&gt;
:'''Random Access''' = Yes;
:'''AutomaticMount''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# monte le media en automatique&lt;/span&gt;
:'''RemovableMedia''' = no;
:'''AlwaysOpen''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Toujours accessible&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les messages sont envoyés au director&lt;/span&gt; 
:'''Name''' = Standard
:'''director''' = NOM_DIR = all
}
&lt;/div&gt;
&lt;br/&gt; 
'''Random Access''' : Si Oui, le périphérique est supposé être un moyen d'accès aléatoire qui prend en charge le lseek (Dvd,Usb...) &lt;br/&gt;
: Non pour les dispositifs d'accès non-aléatoires tels que des bandes.
'''RemovableMedia''' : Si oui, cet appareil prend en charge les supports amovibles (par exemple, cassettes ou de CD).&lt;br/&gt;
: Si Non, les médias ne peuvent pas être supprimés (par exemple, une zone de sauvegarde intermédiaire sur un disque dur).&lt;br/&gt;

Pour voir toutes les possibilités du Storage Daemon je vous invite à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html la documentation de Bacula] à ce sujet.

=== Le Director ===

De tous les fichiers de configuration nécessaires à l'exécution de Bacula, le directeur est le plus compliqué, et celui que vous aurez besoin de modifier&lt;br/&gt;
le plus souvent. Afin de simplifier sa comprehension nous le séparons en plusieurs fichiers.&lt;br/&gt;
Pour inclure un fichier dans bacula-dir.conf, il suffit de mettre un @ devant le chemin du fichier à inclure.&lt;br/&gt;
 @/chemin_complet/fichier

Comme toujours vous y gagneriez à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html la documentation] du director.

'''/etc/bacula/bacula-dir.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director&lt;/span&gt;
:'''DIRport''' = 9101 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son port d'écoute&lt;/span&gt;
:'''QueryFile''' = &quot;/etc/bacula/query.sql&quot;
:'''WorkingDirectory''' = &quot;/var/lib/bacula&quot;
:'''PidDirectory''' = &quot;/var/run/bacula&quot;
:'''Maximum Concurrent Jobs''' = 4 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nombre maximum de sauvegardes simultanées&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot;
:'''Messages''' = Standard
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;consolerCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key &lt;/span&gt;
}

@/etc/bacula/configuration/bacula_dir_filset.conf &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# On ajoute les fichiers de configuration des sauvegardes&lt;/span&gt;&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_job.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_storage.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_pool.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_client.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_schedule.conf&lt;br/&gt;

'''Catalog''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le catalogue ou Bacula stocke toutes ses informations&lt;/span&gt;
:'''Name''' = MyCatalog &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son nom&lt;/span&gt;
:dbname = &quot;bacula&quot;; dbuser = &quot;bacula&quot;; dbpassword = &quot;mdp_base_SQL&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les accés à la base Sql&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Définitions des messages envoyés par Bacula&lt;/span&gt;
:'''Name''' = Standard &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Un nom pour l'identifier&lt;/span&gt;
:'''mailcommand''' = &quot;/usr/sbin/bsmtp -h localhost -f \&quot;\(Bacula\) \&lt;%r\&gt;\&quot; -s \&quot;Bacula daemon message\&quot; %r&quot;
:'''mail''' = root@localhost = all, !skipped
:'''console''' = all, !skipped, !saved
::append = &quot;/var/bacula/log&quot; = all, !skipped
}
'''Director''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Director restreint utile pour les clients&lt;/span&gt;
:'''Name''' = DIR_MON
:'''Password''' = &quot;Mdp_du_director_restreint&quot;
:'''CommandACL''' = status, .status
}
&lt;/div&gt;

'''QueryFile''' = Cette directive est obligatoire et spécifie un répertoire et le fichier dans lequel le directeur peut trouver les états conservés SQL&lt;br/&gt;
pour les commandes de requête de la console.&lt;br/&gt;

==== Filset====

C'est dans ce fichier que l'on trouve les répertoires et fichiers à sauvegarder.&lt;br/&gt;

'''/etc/bacula/configuration/bacula_dir_filset.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''FileSet''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Fileset Windows&lt;/span&gt;
:'''Name''' = &quot;DONNEES_FSET&quot; 
:'''Enable VSS''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# activation ou non du Volume Shadow copy&lt;/span&gt;
:'''Include''' {
::'''Options''' {
:::compression = GZIP &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on compresse la sauvegarde possibilité de donner un niveau de compression ex: GZIP9&lt;/span&gt;
:::signature = MD5 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on vérifie les fichiers sauvegardés avec md5 ou sha1&lt;/span&gt;
:::accurate = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# si cette valeur est a &quot;no&quot; même les fichiers effacés seront restaurés&lt;/span&gt;
::}
::'''File''' = &quot;C:/DONNEES&quot;&lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le(s) répertoire(s) / fichier(s) à inclure&lt;/span&gt;
:}

:'''Exclude''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le(s) répertoire(s) / fichier(s) à exclure&lt;/span&gt;
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/yyy/zzz/yyy&quot;
:}
}

'''FileSet''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Fileset Linux&lt;/span&gt;
:'''Name''' = &quot;BACULA_FSET&quot;
:'''Enable VSS''' = no
:'''Include''' {
::'''Options''' {
:::signature = MD5
:::compression = GZIP9
:::accurate = yes
::}
::'''File''' = &quot;/etc/bacula/&quot;
}
&lt;/div&gt;
Vous trouverez le détail des ressources du fileset [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001870000000000000000 ici]

==== Storage ====

C'est ici que vous définissez le Storage Daemon ainsi que le device (répertoire) de sauvegarde à utiliser.

'''/etc/bacula/configuration/bacula_dir_storage.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = Donnees_st &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Vous lui donnez un nom&lt;/span&gt;
:'''Address''' = nom_dns_ou_ip_du_storagedaemon &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# L' adresse du Storage Daemon défini plus haut&lt;/span&gt;
:'''SDPort''' = 9103
:'''Password''' = &quot;mdp_du_storagedaemon&quot;
:'''Device''' = donnees_device &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# un des devices défini dans le fichier du Storage Daemon&lt;/span&gt;
}&lt;br/&gt;

&lt;/div&gt;
Vous trouverez le détail des ressources du storage [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018140000000000000000 ici]

==== Pool ====

Ce fichier décrit la façon dont sont gérés les volumes de sauvegarde.

'''/etc/bacula/configuration/bacula_dir_pool.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Pool'''{
:'''Name''' = Donnees_Pool
:'''Pool Type''' = Backup &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son type Backup, Archive, Cloned, Migration, Copy, Save&quot;&lt;/span&gt;
:'''Recycle''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on peut réutiliser les anciens volumes purgés&lt;/span&gt;
:'''AutoPrune''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# On laisse Bacula gérer les volumes&lt;/span&gt;
:'''File Retention''' = 180 days &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# durée de rétention des fichiers&lt;/span&gt;
:'''Job Retention''' = 180 days &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# durée de rétention des jobs&lt;/span&gt;
:'''Maximum Volume Jobs''' = 1 
:'''Label Format''' = &quot;${Level}_${Job}_${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}_${Hour:p/2/0/r}h${Minute:p/2/0/r}m&quot;
}&lt;br/&gt;
&lt;/div&gt;

'''Maximum Volume Jobs''' = Cette directive n'est pas obligatoire mais en fixant cette valeur à 1 on s'assure&lt;br/&gt;
de n'avoir qu'un seul fichier par sauvegarde. &lt;br/&gt;
'''Label Format''' = permet de nommer son volume de sauvegarde &lt;br/&gt;

Vous trouverez le détail des ressources pool [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018150000000000000000 ici]

==== Client ====

Dans ce fichier vous retrouvez tous vos clients à sauvegarder.

'''/etc/bacula/configuration/bacula_dir_client.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Client''' {
:'''Name''' = Nom_du_poste_a_savegarder
:'''Address''' = nom_dns_ou_ip
:'''FDPort''' = 9102
:'''Catalog''' = MyCatalog
:'''Password''' = &quot;mdp_du_client&quot;
}
&lt;/div&gt;
Vous trouverez le détail des ressources du client [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018130000000000000000 ici]

==== Schedule ====

Dans celui-ci vous définissez les heures et les niveaux de vos sauvegardes automatiques.

'''/etc/bacula/configuration/bacula_dir_schedule.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Schedule''' {
:'''Name''' = &quot;Donnees&quot;
:'''Run''' = Full 1st sun at 23:05 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# complète le 1er dimanche du mois à 23:05&lt;/span&gt;
:'''Run''' = Differential 2nd-5th sun at 23:05 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Différentiel le 2em et 5em dimanche du mois à 23:05&lt;/span&gt;
:'''Run''' = Incremental mon-sat at 21:00 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Incrémentiel su lundi au samedi à 21:00&lt;/span&gt;
}&lt;br/&gt;
&lt;/div&gt;
Vous trouverez le détail des ressources schedule [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001850000000000000000 ici]

==== Job ====

Et enfin dans ce fichier ci vous assemblez tous vos éléments.

'''/etc/bacula/configuration/bacula_dir_job.conf'''

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Job''' {
:'''Name''' = &quot;DONNEES&quot;
:'''Type''' = Backup
:'''Level''' = Incremental &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le niveau de la sauvegarde&lt;/span&gt;
:'''Client''' = SERVEURZZZ
:'''RunBeforeJob''' = &quot;/usr/bin/prog&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Execute /usr/bin/prog '''avant''' la sauvegarde sur la '''machine éxecutant le director'''&lt;/span&gt;
:'''RunAfterJob'''  = &quot;/usr/bin/prog2&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Execute /usr/bin/prog2 '''après''' la sauvegarde sur la '''machine éxecutant le director'''&lt;/span&gt;
:'''ClientRunBeforeJob''' = &quot;\&quot;C:/Program\ Files/progx/fermeture\ prog.bat\&quot;&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Execute &quot;fermeture prog.bat&quot; '''avant''' la sauvegarde sur la machine '''cliente'''&lt;/span&gt;
:'''ClientRunAfterJob'''  = &quot;\&quot;C:/Program\ Files/progx/ouverture_prog.bat\&quot;&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Execute &quot;ouverture_prog.bat&quot; '''après''' la sauvegarde sur la machine '''cliente'''&lt;/span&gt;
:'''FileSet''' = &quot;DONNEES_FSET&quot;
:'''Schedule''' = &quot;Donnees&quot;
:'''Storage''' = Donnee_st
:'''Pool'''= Donnees_Pool
:'''Write Bootstrap''' = /var/lib/bacula/donnee.bsr &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# fichier contenant l'ensemble des données de la sauvegarde&lt;/span&gt;
:'''Priority''' = 20 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# la priorité du job de sauvegarde : plus le nombre est petit plus la priorité est haute&lt;/span&gt;
:'''Messages''' = Standard 
}
&lt;/div&gt;

Si dans vos différents jobs vous avez les mêmes données (Fileset,Schedule...) vous pouvez créer un '''JobDefs'''.  

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''JobDefs''' {
:'''Name''' = &quot;JOBCOMMUN&quot;
:'''Type''' = Backup
:'''Level''' = Full
:'''FileSet''' = &quot;DONNEES_FSET&quot;
:'''Schedule''' = &quot;Donnees&quot;
:'''Pool''' = Donnees_Pool
:'''Storage''' = Donnees-st
:'''Messages''' = Standard
}

'''Job''' {
:'''Name''' = &quot;DONNEES&quot;
:'''JobDefs''' = &quot;JOBCOMMUN&quot;
:'''Client''' = SERVEURZZZ
:'''Write Bootstrap''' = /var/lib/bacula/donnee.bsr 
:'''Priority''' = 10 
:'''Messages''' = Standard 
}

&lt;/div&gt;
Vous trouverez le détail des ressources job [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001830000000000000000 ici]

== Sécurisation ==

Tout au long du chapitre sur la configuration certaines parties en bleue n'ont pas été expliquées, elles concernaient essentiellement&lt;br/&gt;
des commandes liées aux connexions SSL et aux Chiffrage des données.&lt;br/&gt;

=== Les connexions SSL ===

Afin de sécuriser un peu notre système de sauvegarde nous pouvons mettre en place des connexions SSL entre les différents services de Bacula.&lt;br/&gt;
Dans un premier temps nous allons créer notre certificat d'autorité de certification, c'est lui qui validera (signera) les autres.

Si vous créez plusieurs certificats le conseil que je vous donne c'est d'éditer le fichier '''/etc/ssl/openssl.conf''' et &lt;br/&gt;
dans la section :&quot;req_distinguished_name&quot; de mettre vos paramêtres personalisés.

'''Exemple:'''

 countryName                     = Country Name (2 letter code)
 countryName_default             = &lt;span style=&quot;color:#bd0000;&quot;&gt;FR&lt;/span&gt;
 countryName_min                 = 2
 countryName_max                 = 2
 
 stateOrProvinceName             = State or Province Name (full name)
 stateOrProvinceName_default     = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre département&lt;/span&gt;
 
 localityName                    = Locality Name (eg, city)
 localityName_default            = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre ville&lt;/span&gt;
 
 0.organizationName              = Organization Name (eg, company)
 0.organizationName_default      = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre société&lt;/span&gt;
 
 # we can do this but it is not needed normally :-)
 #1.organizationName             = Second Organization Name (eg, company)
 #1.organizationName_default     = World Wide Web Pty Ltd
 
 organizationalUnitName          = Organizational Unit Name (eg, section)
 organizationalUnitName_default  = &lt;span style=&quot;color:#bd0000;&quot;&gt;Interne&lt;/span&gt;
 
 commonName                      = Common Name (eg, YOUR name)
 commonName_max                  = 64
 emailAddress                    = Email Address
 emailAddress_default            = &lt;span style=&quot;color:#bd0000;&quot;&gt;Une adresse mail&lt;/span&gt;
 emailAddress_max                = 64

Commencez par créer le répertoire /etc/bacula/'''keys'''/ puis entrez y.

Création du certificat d'autorité de certification :

 #openssl genrsa -aes256 -out ca.key 2048 &lt;span style=&quot;color:#bd0000;&quot;&gt;# Génére une clé RSA 2048 bits et son chiffrement en AES 256 un mot de passe vous sera demandé.&lt;/span&gt; 
 #openssl req -new -key ca.key -x509 -out ca.crt &lt;span style=&quot;color:#bd0000;&quot;&gt;# Génére le certificat publique de la clé.&lt;/span&gt; 

Ensuite il faut créer une clé et un certificat par services que nous voulons sécuriser.
Par exemple pour le director :

 #openssl genrsa -out director.key 2048
 #openssl req -new -key director.key &gt; director.csr
 #openssl x509 -req -in director.csr -out director.crt -CA ca.crt -CAkey ca.key -CAcreateserial -CAserial ca.srl

Il est obligatoire de mettre le même nom dans le Common Name que le nom résolu par DNS du service.&lt;br/&gt;
Si l'adresse dns du director est &quot;director.local&quot; alors le Common Name est &quot;director.local&quot; et n'oubliez pas de configurer&lt;br/&gt;
le fichier '''/etc/hosts''' ou le serveur DNS.&lt;br/&gt;
L'option CAcreateserial n'est nécessaire que la première fois, ensuite pour la console :

 #openssl genrsa -out console.key 2048
 #openssl req -new -key console.key &gt; console.csr
 #openssl x509 -req -in console.csr -out console.crt -CA ca.crt -CAkey ca.key -CAserial ca.srl

Maintenant vous pouvez continuer seul pour les autres certificats (filedaemon.crt/key,storagedaemon.crt/key...).&lt;br/&gt;
Pour plus d'informations sur les certificats vous pouvez voir :&lt;br/&gt;
[http://www.batard.eu/2010/11/maitriser-les-certificats-avec-openssl/ N30Secs Blog] , 
[http://www.linux-france.org/prj/edu/archinet/systeme/ch24s03.html Linux-france.org] , 
[http://www.madboa.com/geek/openssl/ Madboa.com]


Pour établir une connexion sécurisé entre:

'''Director | Console'''&lt;br/&gt;
Revenons à notre fichier '''/etc/bacula/bconsole.conf''' et plus précisement à ces lignes :

 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Active une connexion SSL&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Oblige une connexion SSL&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers votre certificat publique du '''ca''' généré plus haut&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers votre certificat publique de la '''console''' généré plus haut&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers la clé privé de la '''console''' généré plus haut&lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-dir.conf''' :&lt;br/&gt;
 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;consolerCN&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Ici on n'autorise que la console en donnant le Common Name du certificat de la console&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key &lt;/span&gt;
 }

Vous voilà avec une connexion sécurisé entre votre console et le director.&lt;br/&gt;

'''Director | Filedaemon'''&lt;br/&gt;

Dans le fichier '''/etc/bacula/bacula-fd.conf''' :&lt;br/&gt;
 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;DirectorCN&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Ici on n'autorise que le director en donnant le Common Name du certificat du director&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key &lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-dir.conf''' :&lt;br/&gt;
 '''Client''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key&lt;/span&gt;
 }

'''Director | Storagedaemon'''&lt;br/&gt;

Dans le fichier '''/etc/bacula/bacula-sd.conf''' :&lt;br/&gt;
 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;DirectorCN&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Ici on n'autorise que le director en donnant le Common Name du certificat du director&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key &lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-dir.conf''' :&lt;br/&gt;
 '''Storage''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key&lt;/span&gt;
 }

'''Filedaemon | Storagedaemon'''&lt;br/&gt;

Dans le fichier '''/etc/bacula/bacula-sd.conf''' :&lt;br/&gt;
 '''Storage''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-fd.conf''' :&lt;br/&gt;
 '''FileDaemon''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key&lt;/span&gt;
 }

&lt;span style=&quot;background-color:#ff7272;&quot;&gt;Sous Windows faites attention&lt;/span&gt; aux chemins ce n'est pas un antislash mais deux slashs à la place :&lt;br/&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = &quot;C:\\keys\\ca.crt&quot;&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = &quot;C:\\keys\\client_win.crt&quot;&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = &quot;C:\\keys\\client_win.key&quot;&lt;/span&gt;

Et pensez aussi à modifier le fichier '''C:\WINDOWS\system32\drivers\etc\hosts''' ou le dns.

=== Le chiffrement des sauvegardes ===

C'est dans les différents File Daemon que cela ce passe, les fameuses lignes '''PKI''' :&lt;br/&gt;
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Signatures = Yes&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# active les données signées&lt;/span&gt;           
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Encryption = Yes&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# active le chiffrage&lt;/span&gt;            
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/client.pem&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# paire de clé publique/privée du client&lt;/span&gt;     
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Master Key = &quot;/etc/bacula/keys/master.crt&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# clé publique maître&lt;/span&gt;&lt;br/&gt; 


Premiere étape générer une paire de clé maître de 2048 bits et chiffré en AES 256 (un mot de passe vous sera demandé):

 # openssl genrsa -aes256 -out master.key 2048 &lt;span style=&quot;color:#bd0000;&quot;&gt;# Votre clé privé : master.key&lt;/span&gt; 
 # openssl req -new -key master.key -x509 -out master.crt &lt;span style=&quot;color:#bd0000;&quot;&gt;# Votre clé publique : master.crt&lt;/span&gt; 

Ensuite on génére une paire de clé pour chaque client :&lt;br/&gt;
Générer une clé privée : 
 # openssl genrsa -aes256 -out client.key 2048

Le fait de chiffrer la clé en AES 256 nous permet de chiffrer notre sauvegarde en AES 256, les autres choix sont :&lt;br/&gt;
128, 192, AES-CBC et Blowfish-CBC&lt;br/&gt;

Générer la clé publique auto-signée :
 # openssl req -new -key -client.key -x509 -out client.crt 
Se débarrasser du mot de passe de la clé (que bacula puisse la lire!) :
 # openssl rsa -in client.key -out client.nopass.key
Copier la clé privée et publique dans le fichier '''.pem''' :
 # cat client.nopass.key client.crt &gt; client.pem &lt;span style=&quot;color:#bd0000;&quot;&gt;# Votre paire de clé publique/privée du client : client.pem&lt;/span&gt; 

Si votre paire de clé du client est perdue ou corrompue vous pouvez déchiffrer les données avec la paire de clé maître pour cela il faut :&lt;br/&gt;
concaténer la clé privée et publique :
 # cat master.key master.crt &gt; master.keypair
puis modifier la ligne PKI Keypair en y mettant la master.keypair :
 &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/master.keypair&quot;

source :&lt;br/&gt;
:[http://www.bacula.org/en/dev-manual/main/main/Data_Encryption.html la documentation de bacula]&lt;br/&gt;
:[http://sourceforge.net/mailarchive/forum.php?thread_name=21DF2F99-E2D9-4E4E-AF06-6BA0EF64383F%40langille.org&amp;forum_name=bacula-docs Data Encryption - subjectKeyIdentifier extension?]

== Utilisation ==
=== En mode Console ===
=== En mode Graphique ===



[[Utilisateur:Haludeis|Haludeis]] ([[Discussion utilisateur:Haludeis|discussion]]) 6 mai 2012 à 09:16 (CEST)</text>
      <sha1>ecw9u0k6bh0xg976ssmz2pwmoc60nt9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4209</id>
      <parentid>4205</parentid>
      <timestamp>2012-05-06T11:58:13Z</timestamp>
      <contributor>
        <username>Haludeis</username>
        <id>30</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="37457">[[Catégorie:Sauvegardes]]
{{Ébauche|Bacula}}
{{sid}}

== Présentation ==
Ce document est basé sur une installation stable de Debian (en ce moment Squeeze) et de Bacula 5.0.2.

Son but : sauvegarde, restauration et vérification en réseau &lt;br/&gt;
(reste à faire)

== Installation ==
Bacula peut utiliser les bases de données SQLite, MySql et PostGreSQL.Il suffit d'installer les paquets correspondant à votre choix. 

Changer &quot;-mysql&quot; par &quot;-pgsql&quot; ou &quot;-sqlite3&quot; sur le paquet director et le fd.

ici je choisi MySql (MySql étant déja installé):

 # aptitude install bacula-director-mysql bacula-sd-mysql bacula

Accorder les droits à bacula sur la base de données (vérifié si pas obsolète):
 # mysql -u root -p
 &gt; grant all privileges on bacula.* to 'bacula'@'localhost' identified by 'bacula' ;

Créer le répertoire de sauvegarde et accorder les droits à bacula :
 # mkdir /home/sauvegarde/
 # chown -R bacula.bacula /home/sauvegarde
 # chmod -R 660 /home/sauvegarde (---&gt; à vérifier)

== Configuration ==
Bacula se compose des fichiers suivants :

Le fichier générale de configuration le Director :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-dir.conf&lt;/span&gt;
Le fichier Storage Daemon concernant le stockage des données :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-sd.conf&lt;/span&gt;
Celui du File Daemon permettant l'accès aux données installé sur le client à sauvegarder :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-fd.conf&lt;/span&gt;
Le fichier permettant la connexion entre la console et le directeur :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bconsole.conf&lt;/span&gt; 
Le fichier de configuration du moniteur de ressources :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/tray-monitor.conf&lt;/span&gt;

Ces fichiers représentent les différents services de Bacula, ils peuvent se trouver sur des machines totalement différentes.

=== La Console ===

'''/etc/bacula/bconsole.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' { 
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''DIRport''' = 9101 &lt;span style=&quot;color:#bd0000;&quot;&gt;# le port d'écoute du director&lt;/span&gt;  
:'''address''' = nom_resolu_par_dns_ou_IP &lt;span style=&quot;color:#bd0000;&quot;&gt;# ip ou dns du director&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;# le mot de passe du director&lt;/span&gt; 
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt; 
} &lt;/div&gt;

'''address''' : Attention le nom DNS est obligatoire pour une connexion SSL penser à configurer le fichier /etc/hosts ou le serveur dns.

:: si vous n'utilisez pas de connexion sécurisée vous pouvez mettre une adresse ip directement.

La partie bleu permet la sécurisation des données entre le director et la console ca.crt doit être le même partout les deux autres diffèrent&lt;br/&gt;
pour chaque éléments de bacula.&lt;br/&gt;
Pour l'instant ne vous préoccupez pas de cette partie, une explication plus complète sera détaillée dans le chapitre sur la sécurisation.&lt;br/&gt;
Sachez juste que cela ce trouve là. &lt;br/&gt;
D'autres indications dans [http://www.bacula.org/5.0.x-manuals/en/main/main/Console_Configuration.html la documentation de bacula]

=== Le File Daemon ===
La ressource Client (ou File Daemon) définit le nom du client (tel qu'il est utilisé par le director) ainsi que le port sur lequel le client est à l'écoute des connections du Director.&lt;br/&gt;

'''/etc/bacula/bacula-fd.conf''' 
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le mot de passe du director&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key &lt;/span&gt;
}

'''Director''' {
:'''Name''' = NOM_MON &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director restreint défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director_restreint&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;# son mot de passe&lt;/span&gt;
:'''Monitor''' = yes 
}

'''FileDaemon''' { 
:'''Name''' = NOM_FD &lt;span style=&quot;color:#bd0000;&quot;&gt;# le nom du File daemon&lt;/span&gt;
:'''FDport''' = 9102 &lt;span style=&quot;color:#bd0000;&quot;&gt;# son mot port d'écoute'&lt;/span&gt;
:'''WorkingDirectory''' = /var/lib/bacula
:'''Pid Directory''' = /var/run/bacula
:'''Maximum Concurrent Jobs''' = 8 &lt;span style=&quot;color:#bd0000;&quot;&gt;# le nombre maximum de sauvegardes simultanées&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key&lt;/span&gt; 
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Signatures = Yes&lt;/span&gt;           
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Encryption = Yes&lt;/span&gt;            
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/client.pem&quot;&lt;/span&gt;    
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Master Key = &quot;/etc/bacula/keys/master.crt&quot;&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les messages sont envoyés au director&lt;/span&gt; 
:'''Name''' = Standard
:'''director''' = NOM_DIR = all, !skipped, !restored
}
&lt;/div&gt;
&lt;br/&gt; 
'''Working Directory''' : Cette directive est obligatoire et spécifie un répertoire dans lequel le File Daemon peut placer ses fichiers d'état.&lt;br/&gt;
: Ce répertoire ne doit être utilisé que par Bacula, mais peut être partagé par d'autres daemons Bacula les définitions des noms doivent être uniques pour chaque démon.&lt;br/&gt; 
: Sur les systèmes Win32, dans certaines circonstances, vous pourriez avoir besoin de spécifier une lettre de lecteur dans le chemin de répertoire de travail spécifié.
: Aussi, s'il vous plaît assurez-vous que ce répertoire est accessible en écriture par l'utilisateur SYSTEM au contraire la restauration peut échouer&lt;br/&gt;
: (le fichier d'amorçage (bootstrap) qui est transféré vers le File Daemon du directeur est temporairement placé dans ce répertoire avant d'être transmis au Storage Daemon).&lt;br/&gt;
'''Pid Directory''' Cette directive est obligatoire et spécifie un répertoire dans lequel le directeur peut placer ses fichiers d'identification de processus.&lt;br/&gt;
: Le fichier d'identification de processus est utilisé pour stopper Bacula et éviter à plusieurs instances de Bacula de fonctionner simultanément.&lt;br/&gt;
: Cet enregistrement est nécessaire. L'expansion du shell standard de l'annuaire se fait lorsque le fichier de configuration est lu de telle sorte que des valeurs&lt;br/&gt;
: telles que $HOME seront correctement substituées.&lt;br/&gt;
: Typiquement, sur les systèmes Linux, vous mettrez: /var/run.Si vous n'installez pas Bacula dans les répertoires système, vous pouvez utiliser le répertoire de travail&lt;br/&gt;
: tel que défini ci-dessus.&lt;br/&gt; 

Pour voir toutes les possibilités du File Daemon je vous invite à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Client_File_daemon_Configur.html la documentation de Bacula] à ce sujet.&lt;br/&gt;

 
=== Le Storage Daemon ===
Le fichier de configuration du Storage Daemon a relativement peu de définitions de ressources. Toutefois, en raison de&lt;br/&gt;
la grande variation dans les médias de sauvegarde et des capacités du système, le démon de stockage doit être hautement configurable.&lt;br/&gt;

En conséquence, il y a un assez grand nombre de directives dans la définition des ressources de périphérique qui vous permet de définir.

toutes les caractéristiques de votre périphérique de stockage (normalement un lecteur de bande). Heureusement, avec des dispositifs 

de stockage modernes, les valeurs par défaut sont suffisantes, et très peu de directives sont réellement nécessaires.

'''/etc/bacula/bacula-sd.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = NOM_SD &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nom du Storage Daemon&lt;/span&gt;
:'''SDPort''' = 9103 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son port d'écoute&lt;/span&gt;
:''' WorkingDirectory''' = &quot;/var/lib/bacula&quot; 
:''' Pid Directory''' = &quot;/var/run/bacula&quot; 
:'''Maximum Concurrent Jobs''' = 8 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nombre maximum de sauvegardes simultanées par media&lt;/span&gt;
:'''SDAddress''' = nom_dns_ou_ip &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son addresse ip ou son nom dns&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# et son mot de passe&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;                                          
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_MON &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director restreint défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director_restreint&quot;
:'''Monitor''' = yes
}

'''Device''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# ou répertoire&lt;/span&gt; 
:'''Name''' = Nom_Device &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Un nom pour l'identifier&lt;/span&gt;
:'''Media Type''' = File &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son type : File, Tape, Fifo, DVD&lt;/span&gt;
:'''Archive Device''' = /home/sauvegarde/ &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son emplacement&lt;/span&gt;
:'''LabelMedia''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Lui donne un nom&lt;/span&gt;
:'''Random Access''' = Yes;
:'''AutomaticMount''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# monte le media en automatique&lt;/span&gt;
:'''RemovableMedia''' = no;
:'''AlwaysOpen''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Toujours accessible&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les messages sont envoyés au director&lt;/span&gt; 
:'''Name''' = Standard
:'''director''' = NOM_DIR = all
}
&lt;/div&gt;
&lt;br/&gt; 
'''Random Access''' : Si Oui, le périphérique est supposé être un moyen d'accès aléatoire qui prend en charge le lseek (Dvd,Usb...) &lt;br/&gt;
: Non pour les dispositifs d'accès non-aléatoires tels que des bandes.
'''RemovableMedia''' : Si oui, cet appareil prend en charge les supports amovibles (par exemple, cassettes ou de CD).&lt;br/&gt;
: Si Non, les médias ne peuvent pas être supprimés (par exemple, une zone de sauvegarde intermédiaire sur un disque dur).&lt;br/&gt;

Pour voir toutes les possibilités du Storage Daemon je vous invite à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html la documentation de Bacula] à ce sujet.

=== Le Director ===

De tous les fichiers de configuration nécessaires à l'exécution de Bacula, le directeur est le plus compliqué, et celui que vous aurez besoin de modifier&lt;br/&gt;
le plus souvent. Afin de simplifier sa comprehension nous le séparons en plusieurs fichiers.&lt;br/&gt;
Pour inclure un fichier dans bacula-dir.conf, il suffit de mettre un @ devant le chemin du fichier à inclure.&lt;br/&gt;
 @/chemin_complet/fichier

Comme toujours vous y gagneriez à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html la documentation] du director.

'''/etc/bacula/bacula-dir.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director&lt;/span&gt;
:'''DIRport''' = 9101 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son port d'écoute&lt;/span&gt;
:'''QueryFile''' = &quot;/etc/bacula/query.sql&quot;
:'''WorkingDirectory''' = &quot;/var/lib/bacula&quot;
:'''PidDirectory''' = &quot;/var/run/bacula&quot;
:'''Maximum Concurrent Jobs''' = 4 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nombre maximum de sauvegardes simultanées&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot;
:'''Messages''' = Standard
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;consolerCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key &lt;/span&gt;
}

@/etc/bacula/configuration/bacula_dir_filset.conf &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# On ajoute les fichiers de configuration des sauvegardes&lt;/span&gt;&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_job.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_storage.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_pool.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_client.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_schedule.conf&lt;br/&gt;

'''Catalog''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le catalogue ou Bacula stocke toutes ses informations&lt;/span&gt;
:'''Name''' = MyCatalog &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son nom&lt;/span&gt;
:dbname = &quot;bacula&quot;; dbuser = &quot;bacula&quot;; dbpassword = &quot;mdp_base_SQL&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les accés à la base Sql&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Définitions des messages envoyés par Bacula&lt;/span&gt;
:'''Name''' = Standard &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Un nom pour l'identifier&lt;/span&gt;
:'''mailcommand''' = &quot;/usr/sbin/bsmtp -h localhost -f \&quot;\(Bacula\) \&lt;%r\&gt;\&quot; -s \&quot;Bacula daemon message\&quot; %r&quot;
:'''mail''' = root@localhost = all, !skipped
:'''console''' = all, !skipped, !saved
::append = &quot;/var/bacula/log&quot; = all, !skipped
}

'''Console''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Director restreint utile pour les clients&lt;/span&gt;
:'''Name''' = DIR_MON
:'''Password''' = &quot;Mdp_du_director_restreint&quot;
:'''CommandACL''' = status, .status
}
&lt;/div&gt;

'''QueryFile''' = Cette directive est obligatoire et spécifie un répertoire et le fichier dans lequel le directeur peut trouver les états conservés SQL&lt;br/&gt;
pour les commandes de requête de la console.&lt;br/&gt;

==== Filset====

C'est dans ce fichier que l'on trouve les répertoires et fichiers à sauvegarder.&lt;br/&gt;

'''/etc/bacula/configuration/bacula_dir_filset.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''FileSet''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Fileset Windows&lt;/span&gt;
:'''Name''' = &quot;DONNEES_FSET&quot; 
:'''Enable VSS''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# activation ou non du Volume Shadow copy&lt;/span&gt;
:'''Include''' {
::'''Options''' {
:::compression = GZIP &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on compresse la sauvegarde possibilité de donner un niveau de compression ex: GZIP9&lt;/span&gt;
:::signature = MD5 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on vérifie les fichiers sauvegardés avec md5 ou sha1&lt;/span&gt;
:::accurate = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# si cette valeur est a &quot;no&quot; même les fichiers effacés seront restaurés&lt;/span&gt;
::}
::'''File''' = &quot;C:/DONNEES&quot;&lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le(s) répertoire(s) / fichier(s) à inclure&lt;/span&gt;
:}

:'''Exclude''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le(s) répertoire(s) / fichier(s) à exclure&lt;/span&gt;
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/yyy/zzz/yyy&quot;
:}
}

'''FileSet''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Fileset Linux&lt;/span&gt;
:'''Name''' = &quot;BACULA_FSET&quot;
:'''Enable VSS''' = no
:'''Include''' {
::'''Options''' {
:::signature = MD5
:::compression = GZIP9
:::accurate = yes
::}
::'''File''' = &quot;/etc/bacula/&quot;
}
&lt;/div&gt;
Vous trouverez le détail des ressources du fileset [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001870000000000000000 ici]

==== Storage ====

C'est ici que vous définissez le Storage Daemon ainsi que le device (répertoire) de sauvegarde à utiliser.

'''/etc/bacula/configuration/bacula_dir_storage.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = Donnees_st &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Vous lui donnez un nom&lt;/span&gt;
:'''Address''' = nom_dns_ou_ip_du_storagedaemon &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# L' adresse du Storage Daemon défini plus haut&lt;/span&gt;
:'''SDPort''' = 9103
:'''Password''' = &quot;mdp_du_storagedaemon&quot;
:'''Device''' = donnees_device &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# un des devices défini dans le fichier du Storage Daemon&lt;/span&gt;
}&lt;br/&gt;

&lt;/div&gt;
Vous trouverez le détail des ressources du storage [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018140000000000000000 ici]

==== Pool ====

Ce fichier décrit la façon dont sont gérés les volumes de sauvegarde.

'''/etc/bacula/configuration/bacula_dir_pool.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Pool'''{
:'''Name''' = Donnees_Pool
:'''Pool Type''' = Backup &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son type Backup, Archive, Cloned, Migration, Copy, Save&quot;&lt;/span&gt;
:'''Recycle''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on peut réutiliser les anciens volumes purgés&lt;/span&gt;
:'''AutoPrune''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# On laisse Bacula gérer les volumes&lt;/span&gt;
:'''File Retention''' = 180 days &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# durée de rétention des fichiers&lt;/span&gt;
:'''Job Retention''' = 180 days &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# durée de rétention des jobs&lt;/span&gt;
:'''Maximum Volume Jobs''' = 1 
:'''Label Format''' = &quot;${Level}_${Job}_${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}_${Hour:p/2/0/r}h${Minute:p/2/0/r}m&quot;
}&lt;br/&gt;
&lt;/div&gt;

'''Maximum Volume Jobs''' = Cette directive n'est pas obligatoire mais en fixant cette valeur à 1 on s'assure&lt;br/&gt;
de n'avoir qu'un seul fichier par sauvegarde. &lt;br/&gt;
'''Label Format''' = permet de nommer son volume de sauvegarde &lt;br/&gt;

Vous trouverez le détail des ressources pool [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018150000000000000000 ici]

==== Client ====

Dans ce fichier vous retrouvez tous vos clients à sauvegarder.

'''/etc/bacula/configuration/bacula_dir_client.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Client''' {
:'''Name''' = Nom_du_poste_a_savegarder
:'''Address''' = nom_dns_ou_ip
:'''FDPort''' = 9102
:'''Catalog''' = MyCatalog
:'''Password''' = &quot;mdp_du_client&quot;
}
&lt;/div&gt;
Vous trouverez le détail des ressources du client [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018130000000000000000 ici]

==== Schedule ====

Dans celui-ci vous définissez les heures et les niveaux de vos sauvegardes automatiques.

'''/etc/bacula/configuration/bacula_dir_schedule.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Schedule''' {
:'''Name''' = &quot;Donnees&quot;
:'''Run''' = Full 1st sun at 23:05 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# complète le 1er dimanche du mois à 23:05&lt;/span&gt;
:'''Run''' = Differential 2nd-5th sun at 23:05 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Différentiel le 2em et 5em dimanche du mois à 23:05&lt;/span&gt;
:'''Run''' = Incremental mon-sat at 21:00 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Incrémentiel su lundi au samedi à 21:00&lt;/span&gt;
}&lt;br/&gt;
&lt;/div&gt;
Vous trouverez le détail des ressources schedule [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001850000000000000000 ici]

==== Job ====

Et enfin dans ce fichier ci vous assemblez tous vos éléments.

'''/etc/bacula/configuration/bacula_dir_job.conf'''

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Job''' {
:'''Name''' = &quot;DONNEES&quot;
:'''Type''' = Backup
:'''Level''' = Incremental &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le niveau de la sauvegarde&lt;/span&gt;
:'''Client''' = SERVEURZZZ
:'''RunBeforeJob''' = &quot;/usr/bin/prog&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Execute /usr/bin/prog '''avant''' la sauvegarde sur la '''machine éxecutant le director'''&lt;/span&gt;
:'''RunAfterJob'''  = &quot;/usr/bin/prog2&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Execute /usr/bin/prog2 '''après''' la sauvegarde sur la '''machine éxecutant le director'''&lt;/span&gt;
:'''ClientRunBeforeJob''' = &quot;\&quot;C:/Program\ Files/progx/fermeture\ prog.bat\&quot;&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Execute &quot;fermeture prog.bat&quot; '''avant''' la sauvegarde sur la machine '''cliente'''&lt;/span&gt;
:'''ClientRunAfterJob'''  = &quot;\&quot;C:/Program\ Files/progx/ouverture_prog.bat\&quot;&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Execute &quot;ouverture_prog.bat&quot; '''après''' la sauvegarde sur la machine '''cliente'''&lt;/span&gt;
:'''FileSet''' = &quot;DONNEES_FSET&quot;
:'''Schedule''' = &quot;Donnees&quot;
:'''Storage''' = Donnee_st
:'''Pool'''= Donnees_Pool
:'''Write Bootstrap''' = /var/lib/bacula/donnee.bsr &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# fichier contenant l'ensemble des données de la sauvegarde&lt;/span&gt;
:'''Priority''' = 20 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# la priorité du job de sauvegarde : plus le nombre est petit plus la priorité est haute&lt;/span&gt;
:'''Messages''' = Standard 
}
&lt;/div&gt;

Si dans vos différents jobs vous avez les mêmes données (Fileset,Schedule...) vous pouvez créer un '''JobDefs'''.  

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''JobDefs''' {
:'''Name''' = &quot;JOBCOMMUN&quot;
:'''Type''' = Backup
:'''Level''' = Full
:'''FileSet''' = &quot;DONNEES_FSET&quot;
:'''Schedule''' = &quot;Donnees&quot;
:'''Pool''' = Donnees_Pool
:'''Storage''' = Donnees-st
:'''Messages''' = Standard
}

'''Job''' {
:'''Name''' = &quot;DONNEES&quot;
:'''JobDefs''' = &quot;JOBCOMMUN&quot;
:'''Client''' = SERVEURZZZ
:'''Write Bootstrap''' = /var/lib/bacula/donnee.bsr 
:'''Priority''' = 10 
:'''Messages''' = Standard 
}

&lt;/div&gt;
Vous trouverez le détail des ressources job [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001830000000000000000 ici]

=== Le moniteur de ressources ===

== Sécurisation ==

Tout au long du chapitre sur la configuration certaines parties en bleue n'ont pas été expliquées, elles concernaient essentiellement&lt;br/&gt;
des commandes liées aux connexions SSL et aux Chiffrage des données.&lt;br/&gt;

=== Les connexions SSL ===

Afin de sécuriser un peu notre système de sauvegarde nous pouvons mettre en place des connexions SSL entre les différents services de Bacula.&lt;br/&gt;
Dans un premier temps nous allons créer notre certificat d'autorité de certification, c'est lui qui validera (signera) les autres.

Si vous créez plusieurs certificats le conseil que je vous donne c'est d'éditer le fichier '''/etc/ssl/openssl.conf''' et &lt;br/&gt;
dans la section :&quot;req_distinguished_name&quot; de mettre vos paramêtres personalisés.

'''Exemple:'''

 countryName                     = Country Name (2 letter code)
 countryName_default             = &lt;span style=&quot;color:#bd0000;&quot;&gt;FR&lt;/span&gt;
 countryName_min                 = 2
 countryName_max                 = 2
 
 stateOrProvinceName             = State or Province Name (full name)
 stateOrProvinceName_default     = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre département&lt;/span&gt;
 
 localityName                    = Locality Name (eg, city)
 localityName_default            = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre ville&lt;/span&gt;
 
 0.organizationName              = Organization Name (eg, company)
 0.organizationName_default      = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre société&lt;/span&gt;
 
 # we can do this but it is not needed normally :-)
 #1.organizationName             = Second Organization Name (eg, company)
 #1.organizationName_default     = World Wide Web Pty Ltd
 
 organizationalUnitName          = Organizational Unit Name (eg, section)
 organizationalUnitName_default  = &lt;span style=&quot;color:#bd0000;&quot;&gt;Interne&lt;/span&gt;
 
 commonName                      = Common Name (eg, YOUR name)
 commonName_max                  = 64
 emailAddress                    = Email Address
 emailAddress_default            = &lt;span style=&quot;color:#bd0000;&quot;&gt;Une adresse mail&lt;/span&gt;
 emailAddress_max                = 64

Commencez par créer le répertoire /etc/bacula/'''keys'''/ puis entrez y.

Création du certificat d'autorité de certification :

 #openssl genrsa -aes256 -out ca.key 2048 &lt;span style=&quot;color:#bd0000;&quot;&gt;# Génére une clé RSA 2048 bits et son chiffrement en AES 256 un mot de passe vous sera demandé.&lt;/span&gt; 
 #openssl req -new -key ca.key -x509 -out ca.crt &lt;span style=&quot;color:#bd0000;&quot;&gt;# Génére le certificat publique de la clé.&lt;/span&gt; 

Ensuite il faut créer une clé et un certificat par services que nous voulons sécuriser.
Par exemple pour le director :

 #openssl genrsa -out director.key 2048
 #openssl req -new -key director.key &gt; director.csr
 #openssl x509 -req -in director.csr -out director.crt -CA ca.crt -CAkey ca.key -CAcreateserial -CAserial ca.srl

Il est obligatoire de mettre le même nom dans le Common Name que le nom résolu par DNS du service.&lt;br/&gt;
Si l'adresse dns du director est &quot;director.local&quot; alors le Common Name est &quot;director.local&quot; et n'oubliez pas de configurer&lt;br/&gt;
le fichier '''/etc/hosts''' ou le serveur DNS.&lt;br/&gt;
L'option CAcreateserial n'est nécessaire que la première fois, ensuite pour la console :

 #openssl genrsa -out console.key 2048
 #openssl req -new -key console.key &gt; console.csr
 #openssl x509 -req -in console.csr -out console.crt -CA ca.crt -CAkey ca.key -CAserial ca.srl

Maintenant vous pouvez continuer seul pour les autres certificats (filedaemon.crt/key,storagedaemon.crt/key...).&lt;br/&gt;
Pour plus d'informations sur les certificats vous pouvez voir :&lt;br/&gt;
[http://www.batard.eu/2010/11/maitriser-les-certificats-avec-openssl/ N30Secs Blog] , 
[http://www.linux-france.org/prj/edu/archinet/systeme/ch24s03.html Linux-france.org] , 
[http://www.madboa.com/geek/openssl/ Madboa.com]


Pour établir une connexion sécurisé entre:

'''Director | Console'''&lt;br/&gt;
Revenons à notre fichier '''/etc/bacula/bconsole.conf''' et plus précisement à ces lignes :

 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Active une connexion SSL&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Oblige une connexion SSL&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers votre certificat publique du '''ca''' généré plus haut&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers votre certificat publique de la '''console''' généré plus haut&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers la clé privé de la '''console''' généré plus haut&lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-dir.conf''' :&lt;br/&gt;
 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;consolerCN&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Ici on n'autorise que la console en donnant le Common Name du certificat de la console&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key &lt;/span&gt;
 }

Vous voilà avec une connexion sécurisé entre votre console et le director.&lt;br/&gt;

'''Director | Filedaemon'''&lt;br/&gt;

Dans le fichier '''/etc/bacula/bacula-fd.conf''' :&lt;br/&gt;
 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;DirectorCN&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Ici on n'autorise que le director en donnant le Common Name du certificat du director&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key &lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-dir.conf''' :&lt;br/&gt;
 '''Client''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key&lt;/span&gt;
 }

'''Director | Storagedaemon'''&lt;br/&gt;

Dans le fichier '''/etc/bacula/bacula-sd.conf''' :&lt;br/&gt;
 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;DirectorCN&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Ici on n'autorise que le director en donnant le Common Name du certificat du director&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key &lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-dir.conf''' :&lt;br/&gt;
 '''Storage''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key&lt;/span&gt;
 }

'''Filedaemon | Storagedaemon'''&lt;br/&gt;

Dans le fichier '''/etc/bacula/bacula-sd.conf''' :&lt;br/&gt;
 '''Storage''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-fd.conf''' :&lt;br/&gt;
 '''FileDaemon''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key&lt;/span&gt;
 }

&lt;span style=&quot;background-color:#ff7272;&quot;&gt;Sous Windows faites attention&lt;/span&gt; aux chemins ce n'est pas un antislash mais deux slashs à la place :&lt;br/&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = &quot;C:\\keys\\ca.crt&quot;&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = &quot;C:\\keys\\client_win.crt&quot;&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = &quot;C:\\keys\\client_win.key&quot;&lt;/span&gt;

Et pensez aussi à modifier le fichier '''C:\WINDOWS\system32\drivers\etc\hosts''' ou le dns.

=== Le chiffrement des sauvegardes ===

C'est dans les différents File Daemon que cela ce passe, les fameuses lignes '''PKI''' :&lt;br/&gt;
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Signatures = Yes&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# active les données signées&lt;/span&gt;           
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Encryption = Yes&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# active le chiffrage&lt;/span&gt;            
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/client.pem&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# paire de clé publique/privée du client&lt;/span&gt;     
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Master Key = &quot;/etc/bacula/keys/master.crt&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# clé publique maître&lt;/span&gt;&lt;br/&gt; 


Premiere étape générer une paire de clé maître de 2048 bits et chiffré en AES 256 (un mot de passe vous sera demandé):

 # openssl genrsa -aes256 -out master.key 2048 &lt;span style=&quot;color:#bd0000;&quot;&gt;# Votre clé privé : master.key&lt;/span&gt; 
 # openssl req -new -key master.key -x509 -out master.crt &lt;span style=&quot;color:#bd0000;&quot;&gt;# Votre clé publique : master.crt&lt;/span&gt; 

Ensuite on génére une paire de clé pour chaque client :&lt;br/&gt;
Générer une clé privée : 
 # openssl genrsa -aes256 -out client.key 2048

Le fait de chiffrer la clé en AES 256 nous permet de chiffrer notre sauvegarde en AES 256, les autres choix sont :&lt;br/&gt;
128, 192, AES-CBC et Blowfish-CBC&lt;br/&gt;

Générer la clé publique auto-signée :
 # openssl req -new -key -client.key -x509 -out client.crt 
Se débarrasser du mot de passe de la clé (que bacula puisse la lire!) :
 # openssl rsa -in client.key -out client.nopass.key
Copier la clé privée et publique dans le fichier '''.pem''' :
 # cat client.nopass.key client.crt &gt; client.pem &lt;span style=&quot;color:#bd0000;&quot;&gt;# Votre paire de clé publique/privée du client : client.pem&lt;/span&gt; 

Si votre paire de clé du client est perdue ou corrompue vous pouvez déchiffrer les données avec la paire de clé maître pour cela il faut :&lt;br/&gt;
concaténer la clé privée et publique :
 # cat master.key master.crt &gt; master.keypair
puis modifier la ligne PKI Keypair en y mettant la master.keypair :
 &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/master.keypair&quot;

source :&lt;br/&gt;
:[http://www.bacula.org/en/dev-manual/main/main/Data_Encryption.html la documentation de bacula]&lt;br/&gt;
:[http://sourceforge.net/mailarchive/forum.php?thread_name=21DF2F99-E2D9-4E4E-AF06-6BA0EF64383F%40langille.org&amp;forum_name=bacula-docs Data Encryption - subjectKeyIdentifier extension?]

== Utilisation ==
=== En mode Console ===

Ouvrez un terminal et passez root puis entrez :
 # bconsole

Pour quitter la console :
 * quit

Pour afficher toutes les commandes :
 * help

Pour afficher les messages :
 * messages

Je ne vais pas m' éterniser sur cette partie [http://www.bacula.org/fr/dev-manual/console_Bacula.html la documentation] est très explicite et en français cette fois.

La commande '''status''' est très utile pour visualiser votre système Bacula, ce n'est pas obligatoire mais elle prend les arguments '''dir''', '''storage''', '''client''' et '''all'''.&lt;br/&gt;
Lancer un '''status all''' permet de vérifier que vous avez bien configuré tout les accés.

Un petit aperçu :
[[Image:status.png|center|thumb|800px|status.png]]

La commande '''run''' permet de lancer un job de sauvegarde (une liste apparaît pour faire votre choix).&lt;br/&gt;
La commande '''restore''' affiche un choix de restauration (ex: le n°5 permet de restaurer la sauvegarde la plus récente.

[[Image:restore1.png | 400px]] [[Image:restore2.png | 400px]]

=== En mode Graphique ===



[[Utilisateur:Haludeis|Haludeis]] ([[Discussion utilisateur:Haludeis|discussion]]) 6 mai 2012 à 13:58 (CEST)</text>
      <sha1>9hd1qv8ur04shp414wlkabrl5qzausv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4211</id>
      <parentid>4209</parentid>
      <timestamp>2012-05-06T12:39:00Z</timestamp>
      <contributor>
        <username>Haludeis</username>
        <id>30</id>
      </contributor>
      <minor/>
      <comment>/* En mode Graphique */</comment>
      <text xml:space="preserve" bytes="37761">[[Catégorie:Sauvegardes]]
{{Ébauche|Bacula}}
{{sid}}

== Présentation ==
Ce document est basé sur une installation stable de Debian (en ce moment Squeeze) et de Bacula 5.0.2.

Son but : sauvegarde, restauration et vérification en réseau &lt;br/&gt;
(reste à faire)

== Installation ==
Bacula peut utiliser les bases de données SQLite, MySql et PostGreSQL.Il suffit d'installer les paquets correspondant à votre choix. 

Changer &quot;-mysql&quot; par &quot;-pgsql&quot; ou &quot;-sqlite3&quot; sur le paquet director et le fd.

ici je choisi MySql (MySql étant déja installé):

 # aptitude install bacula-director-mysql bacula-sd-mysql bacula

Accorder les droits à bacula sur la base de données (vérifié si pas obsolète):
 # mysql -u root -p
 &gt; grant all privileges on bacula.* to 'bacula'@'localhost' identified by 'bacula' ;

Créer le répertoire de sauvegarde et accorder les droits à bacula :
 # mkdir /home/sauvegarde/
 # chown -R bacula.bacula /home/sauvegarde
 # chmod -R 660 /home/sauvegarde (---&gt; à vérifier)

== Configuration ==
Bacula se compose des fichiers suivants :

Le fichier générale de configuration le Director :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-dir.conf&lt;/span&gt;
Le fichier Storage Daemon concernant le stockage des données :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-sd.conf&lt;/span&gt;
Celui du File Daemon permettant l'accès aux données installé sur le client à sauvegarder :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-fd.conf&lt;/span&gt;
Le fichier permettant la connexion entre la console et le directeur :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bconsole.conf&lt;/span&gt; 
Le fichier de configuration du moniteur de ressources :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/tray-monitor.conf&lt;/span&gt;

Ces fichiers représentent les différents services de Bacula, ils peuvent se trouver sur des machines totalement différentes.

=== La Console ===

'''/etc/bacula/bconsole.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' { 
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''DIRport''' = 9101 &lt;span style=&quot;color:#bd0000;&quot;&gt;# le port d'écoute du director&lt;/span&gt;  
:'''address''' = nom_resolu_par_dns_ou_IP &lt;span style=&quot;color:#bd0000;&quot;&gt;# ip ou dns du director&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;# le mot de passe du director&lt;/span&gt; 
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt; 
} &lt;/div&gt;

'''address''' : Attention le nom DNS est obligatoire pour une connexion SSL penser à configurer le fichier /etc/hosts ou le serveur dns.

:: si vous n'utilisez pas de connexion sécurisée vous pouvez mettre une adresse ip directement.

La partie bleu permet la sécurisation des données entre le director et la console ca.crt doit être le même partout les deux autres diffèrent&lt;br/&gt;
pour chaque éléments de bacula.&lt;br/&gt;
Pour l'instant ne vous préoccupez pas de cette partie, une explication plus complète sera détaillée dans le chapitre sur la sécurisation.&lt;br/&gt;
Sachez juste que cela ce trouve là. &lt;br/&gt;
D'autres indications dans [http://www.bacula.org/5.0.x-manuals/en/main/main/Console_Configuration.html la documentation de bacula]

=== Le File Daemon ===
La ressource Client (ou File Daemon) définit le nom du client (tel qu'il est utilisé par le director) ainsi que le port sur lequel le client est à l'écoute des connections du Director.&lt;br/&gt;

'''/etc/bacula/bacula-fd.conf''' 
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le mot de passe du director&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key &lt;/span&gt;
}

'''Director''' {
:'''Name''' = NOM_MON &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director restreint défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director_restreint&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;# son mot de passe&lt;/span&gt;
:'''Monitor''' = yes 
}

'''FileDaemon''' { 
:'''Name''' = NOM_FD &lt;span style=&quot;color:#bd0000;&quot;&gt;# le nom du File daemon&lt;/span&gt;
:'''FDport''' = 9102 &lt;span style=&quot;color:#bd0000;&quot;&gt;# son mot port d'écoute'&lt;/span&gt;
:'''WorkingDirectory''' = /var/lib/bacula
:'''Pid Directory''' = /var/run/bacula
:'''Maximum Concurrent Jobs''' = 8 &lt;span style=&quot;color:#bd0000;&quot;&gt;# le nombre maximum de sauvegardes simultanées&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key&lt;/span&gt; 
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Signatures = Yes&lt;/span&gt;           
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Encryption = Yes&lt;/span&gt;            
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/client.pem&quot;&lt;/span&gt;    
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Master Key = &quot;/etc/bacula/keys/master.crt&quot;&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les messages sont envoyés au director&lt;/span&gt; 
:'''Name''' = Standard
:'''director''' = NOM_DIR = all, !skipped, !restored
}
&lt;/div&gt;
&lt;br/&gt; 
'''Working Directory''' : Cette directive est obligatoire et spécifie un répertoire dans lequel le File Daemon peut placer ses fichiers d'état.&lt;br/&gt;
: Ce répertoire ne doit être utilisé que par Bacula, mais peut être partagé par d'autres daemons Bacula les définitions des noms doivent être uniques pour chaque démon.&lt;br/&gt; 
: Sur les systèmes Win32, dans certaines circonstances, vous pourriez avoir besoin de spécifier une lettre de lecteur dans le chemin de répertoire de travail spécifié.
: Aussi, s'il vous plaît assurez-vous que ce répertoire est accessible en écriture par l'utilisateur SYSTEM au contraire la restauration peut échouer&lt;br/&gt;
: (le fichier d'amorçage (bootstrap) qui est transféré vers le File Daemon du directeur est temporairement placé dans ce répertoire avant d'être transmis au Storage Daemon).&lt;br/&gt;
'''Pid Directory''' Cette directive est obligatoire et spécifie un répertoire dans lequel le directeur peut placer ses fichiers d'identification de processus.&lt;br/&gt;
: Le fichier d'identification de processus est utilisé pour stopper Bacula et éviter à plusieurs instances de Bacula de fonctionner simultanément.&lt;br/&gt;
: Cet enregistrement est nécessaire. L'expansion du shell standard de l'annuaire se fait lorsque le fichier de configuration est lu de telle sorte que des valeurs&lt;br/&gt;
: telles que $HOME seront correctement substituées.&lt;br/&gt;
: Typiquement, sur les systèmes Linux, vous mettrez: /var/run.Si vous n'installez pas Bacula dans les répertoires système, vous pouvez utiliser le répertoire de travail&lt;br/&gt;
: tel que défini ci-dessus.&lt;br/&gt; 

Pour voir toutes les possibilités du File Daemon je vous invite à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Client_File_daemon_Configur.html la documentation de Bacula] à ce sujet.&lt;br/&gt;

 
=== Le Storage Daemon ===
Le fichier de configuration du Storage Daemon a relativement peu de définitions de ressources. Toutefois, en raison de&lt;br/&gt;
la grande variation dans les médias de sauvegarde et des capacités du système, le démon de stockage doit être hautement configurable.&lt;br/&gt;

En conséquence, il y a un assez grand nombre de directives dans la définition des ressources de périphérique qui vous permet de définir.

toutes les caractéristiques de votre périphérique de stockage (normalement un lecteur de bande). Heureusement, avec des dispositifs 

de stockage modernes, les valeurs par défaut sont suffisantes, et très peu de directives sont réellement nécessaires.

'''/etc/bacula/bacula-sd.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = NOM_SD &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nom du Storage Daemon&lt;/span&gt;
:'''SDPort''' = 9103 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son port d'écoute&lt;/span&gt;
:''' WorkingDirectory''' = &quot;/var/lib/bacula&quot; 
:''' Pid Directory''' = &quot;/var/run/bacula&quot; 
:'''Maximum Concurrent Jobs''' = 8 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nombre maximum de sauvegardes simultanées par media&lt;/span&gt;
:'''SDAddress''' = nom_dns_ou_ip &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son addresse ip ou son nom dns&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# et son mot de passe&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;                                          
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_MON &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director restreint défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director_restreint&quot;
:'''Monitor''' = yes
}

'''Device''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# ou répertoire&lt;/span&gt; 
:'''Name''' = Nom_Device &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Un nom pour l'identifier&lt;/span&gt;
:'''Media Type''' = File &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son type : File, Tape, Fifo, DVD&lt;/span&gt;
:'''Archive Device''' = /home/sauvegarde/ &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son emplacement&lt;/span&gt;
:'''LabelMedia''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Lui donne un nom&lt;/span&gt;
:'''Random Access''' = Yes;
:'''AutomaticMount''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# monte le media en automatique&lt;/span&gt;
:'''RemovableMedia''' = no;
:'''AlwaysOpen''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Toujours accessible&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les messages sont envoyés au director&lt;/span&gt; 
:'''Name''' = Standard
:'''director''' = NOM_DIR = all
}
&lt;/div&gt;
&lt;br/&gt; 
'''Random Access''' : Si Oui, le périphérique est supposé être un moyen d'accès aléatoire qui prend en charge le lseek (Dvd,Usb...) &lt;br/&gt;
: Non pour les dispositifs d'accès non-aléatoires tels que des bandes.
'''RemovableMedia''' : Si oui, cet appareil prend en charge les supports amovibles (par exemple, cassettes ou de CD).&lt;br/&gt;
: Si Non, les médias ne peuvent pas être supprimés (par exemple, une zone de sauvegarde intermédiaire sur un disque dur).&lt;br/&gt;

Pour voir toutes les possibilités du Storage Daemon je vous invite à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html la documentation de Bacula] à ce sujet.

=== Le Director ===

De tous les fichiers de configuration nécessaires à l'exécution de Bacula, le directeur est le plus compliqué, et celui que vous aurez besoin de modifier&lt;br/&gt;
le plus souvent. Afin de simplifier sa comprehension nous le séparons en plusieurs fichiers.&lt;br/&gt;
Pour inclure un fichier dans bacula-dir.conf, il suffit de mettre un @ devant le chemin du fichier à inclure.&lt;br/&gt;
 @/chemin_complet/fichier

Comme toujours vous y gagneriez à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html la documentation] du director.

'''/etc/bacula/bacula-dir.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director&lt;/span&gt;
:'''DIRport''' = 9101 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son port d'écoute&lt;/span&gt;
:'''QueryFile''' = &quot;/etc/bacula/query.sql&quot;
:'''WorkingDirectory''' = &quot;/var/lib/bacula&quot;
:'''PidDirectory''' = &quot;/var/run/bacula&quot;
:'''Maximum Concurrent Jobs''' = 4 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nombre maximum de sauvegardes simultanées&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot;
:'''Messages''' = Standard
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;consolerCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key &lt;/span&gt;
}

@/etc/bacula/configuration/bacula_dir_filset.conf &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# On ajoute les fichiers de configuration des sauvegardes&lt;/span&gt;&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_job.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_storage.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_pool.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_client.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_schedule.conf&lt;br/&gt;

'''Catalog''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le catalogue ou Bacula stocke toutes ses informations&lt;/span&gt;
:'''Name''' = MyCatalog &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son nom&lt;/span&gt;
:dbname = &quot;bacula&quot;; dbuser = &quot;bacula&quot;; dbpassword = &quot;mdp_base_SQL&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les accés à la base Sql&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Définitions des messages envoyés par Bacula&lt;/span&gt;
:'''Name''' = Standard &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Un nom pour l'identifier&lt;/span&gt;
:'''mailcommand''' = &quot;/usr/sbin/bsmtp -h localhost -f \&quot;\(Bacula\) \&lt;%r\&gt;\&quot; -s \&quot;Bacula daemon message\&quot; %r&quot;
:'''mail''' = root@localhost = all, !skipped
:'''console''' = all, !skipped, !saved
::append = &quot;/var/bacula/log&quot; = all, !skipped
}

'''Console''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Director restreint utile pour les clients&lt;/span&gt;
:'''Name''' = DIR_MON
:'''Password''' = &quot;Mdp_du_director_restreint&quot;
:'''CommandACL''' = status, .status
}
&lt;/div&gt;

'''QueryFile''' = Cette directive est obligatoire et spécifie un répertoire et le fichier dans lequel le directeur peut trouver les états conservés SQL&lt;br/&gt;
pour les commandes de requête de la console.&lt;br/&gt;

==== Filset====

C'est dans ce fichier que l'on trouve les répertoires et fichiers à sauvegarder.&lt;br/&gt;

'''/etc/bacula/configuration/bacula_dir_filset.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''FileSet''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Fileset Windows&lt;/span&gt;
:'''Name''' = &quot;DONNEES_FSET&quot; 
:'''Enable VSS''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# activation ou non du Volume Shadow copy&lt;/span&gt;
:'''Include''' {
::'''Options''' {
:::compression = GZIP &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on compresse la sauvegarde possibilité de donner un niveau de compression ex: GZIP9&lt;/span&gt;
:::signature = MD5 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on vérifie les fichiers sauvegardés avec md5 ou sha1&lt;/span&gt;
:::accurate = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# si cette valeur est a &quot;no&quot; même les fichiers effacés seront restaurés&lt;/span&gt;
::}
::'''File''' = &quot;C:/DONNEES&quot;&lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le(s) répertoire(s) / fichier(s) à inclure&lt;/span&gt;
:}

:'''Exclude''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le(s) répertoire(s) / fichier(s) à exclure&lt;/span&gt;
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/yyy/zzz/yyy&quot;
:}
}

'''FileSet''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Fileset Linux&lt;/span&gt;
:'''Name''' = &quot;BACULA_FSET&quot;
:'''Enable VSS''' = no
:'''Include''' {
::'''Options''' {
:::signature = MD5
:::compression = GZIP9
:::accurate = yes
::}
::'''File''' = &quot;/etc/bacula/&quot;
}
&lt;/div&gt;
Vous trouverez le détail des ressources du fileset [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001870000000000000000 ici]

==== Storage ====

C'est ici que vous définissez le Storage Daemon ainsi que le device (répertoire) de sauvegarde à utiliser.

'''/etc/bacula/configuration/bacula_dir_storage.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = Donnees_st &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Vous lui donnez un nom&lt;/span&gt;
:'''Address''' = nom_dns_ou_ip_du_storagedaemon &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# L' adresse du Storage Daemon défini plus haut&lt;/span&gt;
:'''SDPort''' = 9103
:'''Password''' = &quot;mdp_du_storagedaemon&quot;
:'''Device''' = donnees_device &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# un des devices défini dans le fichier du Storage Daemon&lt;/span&gt;
}&lt;br/&gt;

&lt;/div&gt;
Vous trouverez le détail des ressources du storage [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018140000000000000000 ici]

==== Pool ====

Ce fichier décrit la façon dont sont gérés les volumes de sauvegarde.

'''/etc/bacula/configuration/bacula_dir_pool.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Pool'''{
:'''Name''' = Donnees_Pool
:'''Pool Type''' = Backup &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son type Backup, Archive, Cloned, Migration, Copy, Save&quot;&lt;/span&gt;
:'''Recycle''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on peut réutiliser les anciens volumes purgés&lt;/span&gt;
:'''AutoPrune''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# On laisse Bacula gérer les volumes&lt;/span&gt;
:'''File Retention''' = 180 days &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# durée de rétention des fichiers&lt;/span&gt;
:'''Job Retention''' = 180 days &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# durée de rétention des jobs&lt;/span&gt;
:'''Maximum Volume Jobs''' = 1 
:'''Label Format''' = &quot;${Level}_${Job}_${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}_${Hour:p/2/0/r}h${Minute:p/2/0/r}m&quot;
}&lt;br/&gt;
&lt;/div&gt;

'''Maximum Volume Jobs''' = Cette directive n'est pas obligatoire mais en fixant cette valeur à 1 on s'assure&lt;br/&gt;
de n'avoir qu'un seul fichier par sauvegarde. &lt;br/&gt;
'''Label Format''' = permet de nommer son volume de sauvegarde &lt;br/&gt;

Vous trouverez le détail des ressources pool [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018150000000000000000 ici]

==== Client ====

Dans ce fichier vous retrouvez tous vos clients à sauvegarder.

'''/etc/bacula/configuration/bacula_dir_client.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Client''' {
:'''Name''' = Nom_du_poste_a_savegarder
:'''Address''' = nom_dns_ou_ip
:'''FDPort''' = 9102
:'''Catalog''' = MyCatalog
:'''Password''' = &quot;mdp_du_client&quot;
}
&lt;/div&gt;
Vous trouverez le détail des ressources du client [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018130000000000000000 ici]

==== Schedule ====

Dans celui-ci vous définissez les heures et les niveaux de vos sauvegardes automatiques.

'''/etc/bacula/configuration/bacula_dir_schedule.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Schedule''' {
:'''Name''' = &quot;Donnees&quot;
:'''Run''' = Full 1st sun at 23:05 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# complète le 1er dimanche du mois à 23:05&lt;/span&gt;
:'''Run''' = Differential 2nd-5th sun at 23:05 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Différentiel le 2em et 5em dimanche du mois à 23:05&lt;/span&gt;
:'''Run''' = Incremental mon-sat at 21:00 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Incrémentiel su lundi au samedi à 21:00&lt;/span&gt;
}&lt;br/&gt;
&lt;/div&gt;
Vous trouverez le détail des ressources schedule [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001850000000000000000 ici]

==== Job ====

Et enfin dans ce fichier ci vous assemblez tous vos éléments.

'''/etc/bacula/configuration/bacula_dir_job.conf'''

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Job''' {
:'''Name''' = &quot;DONNEES&quot;
:'''Type''' = Backup
:'''Level''' = Incremental &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le niveau de la sauvegarde&lt;/span&gt;
:'''Client''' = SERVEURZZZ
:'''RunBeforeJob''' = &quot;/usr/bin/prog&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Execute /usr/bin/prog '''avant''' la sauvegarde sur la '''machine éxecutant le director'''&lt;/span&gt;
:'''RunAfterJob'''  = &quot;/usr/bin/prog2&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Execute /usr/bin/prog2 '''après''' la sauvegarde sur la '''machine éxecutant le director'''&lt;/span&gt;
:'''ClientRunBeforeJob''' = &quot;\&quot;C:/Program\ Files/progx/fermeture\ prog.bat\&quot;&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Execute &quot;fermeture prog.bat&quot; '''avant''' la sauvegarde sur la machine '''cliente'''&lt;/span&gt;
:'''ClientRunAfterJob'''  = &quot;\&quot;C:/Program\ Files/progx/ouverture_prog.bat\&quot;&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Execute &quot;ouverture_prog.bat&quot; '''après''' la sauvegarde sur la machine '''cliente'''&lt;/span&gt;
:'''FileSet''' = &quot;DONNEES_FSET&quot;
:'''Schedule''' = &quot;Donnees&quot;
:'''Storage''' = Donnee_st
:'''Pool'''= Donnees_Pool
:'''Write Bootstrap''' = /var/lib/bacula/donnee.bsr &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# fichier contenant l'ensemble des données de la sauvegarde&lt;/span&gt;
:'''Priority''' = 20 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# la priorité du job de sauvegarde : plus le nombre est petit plus la priorité est haute&lt;/span&gt;
:'''Messages''' = Standard 
}
&lt;/div&gt;

Si dans vos différents jobs vous avez les mêmes données (Fileset,Schedule...) vous pouvez créer un '''JobDefs'''.  

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''JobDefs''' {
:'''Name''' = &quot;JOBCOMMUN&quot;
:'''Type''' = Backup
:'''Level''' = Full
:'''FileSet''' = &quot;DONNEES_FSET&quot;
:'''Schedule''' = &quot;Donnees&quot;
:'''Pool''' = Donnees_Pool
:'''Storage''' = Donnees-st
:'''Messages''' = Standard
}

'''Job''' {
:'''Name''' = &quot;DONNEES&quot;
:'''JobDefs''' = &quot;JOBCOMMUN&quot;
:'''Client''' = SERVEURZZZ
:'''Write Bootstrap''' = /var/lib/bacula/donnee.bsr 
:'''Priority''' = 10 
:'''Messages''' = Standard 
}

&lt;/div&gt;
Vous trouverez le détail des ressources job [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001830000000000000000 ici]

=== Le moniteur de ressources ===

== Sécurisation ==

Tout au long du chapitre sur la configuration certaines parties en bleue n'ont pas été expliquées, elles concernaient essentiellement&lt;br/&gt;
des commandes liées aux connexions SSL et aux Chiffrage des données.&lt;br/&gt;

=== Les connexions SSL ===

Afin de sécuriser un peu notre système de sauvegarde nous pouvons mettre en place des connexions SSL entre les différents services de Bacula.&lt;br/&gt;
Dans un premier temps nous allons créer notre certificat d'autorité de certification, c'est lui qui validera (signera) les autres.

Si vous créez plusieurs certificats le conseil que je vous donne c'est d'éditer le fichier '''/etc/ssl/openssl.conf''' et &lt;br/&gt;
dans la section :&quot;req_distinguished_name&quot; de mettre vos paramêtres personalisés.

'''Exemple:'''

 countryName                     = Country Name (2 letter code)
 countryName_default             = &lt;span style=&quot;color:#bd0000;&quot;&gt;FR&lt;/span&gt;
 countryName_min                 = 2
 countryName_max                 = 2
 
 stateOrProvinceName             = State or Province Name (full name)
 stateOrProvinceName_default     = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre département&lt;/span&gt;
 
 localityName                    = Locality Name (eg, city)
 localityName_default            = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre ville&lt;/span&gt;
 
 0.organizationName              = Organization Name (eg, company)
 0.organizationName_default      = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre société&lt;/span&gt;
 
 # we can do this but it is not needed normally :-)
 #1.organizationName             = Second Organization Name (eg, company)
 #1.organizationName_default     = World Wide Web Pty Ltd
 
 organizationalUnitName          = Organizational Unit Name (eg, section)
 organizationalUnitName_default  = &lt;span style=&quot;color:#bd0000;&quot;&gt;Interne&lt;/span&gt;
 
 commonName                      = Common Name (eg, YOUR name)
 commonName_max                  = 64
 emailAddress                    = Email Address
 emailAddress_default            = &lt;span style=&quot;color:#bd0000;&quot;&gt;Une adresse mail&lt;/span&gt;
 emailAddress_max                = 64

Commencez par créer le répertoire /etc/bacula/'''keys'''/ puis entrez y.

Création du certificat d'autorité de certification :

 #openssl genrsa -aes256 -out ca.key 2048 &lt;span style=&quot;color:#bd0000;&quot;&gt;# Génére une clé RSA 2048 bits et son chiffrement en AES 256 un mot de passe vous sera demandé.&lt;/span&gt; 
 #openssl req -new -key ca.key -x509 -out ca.crt &lt;span style=&quot;color:#bd0000;&quot;&gt;# Génére le certificat publique de la clé.&lt;/span&gt; 

Ensuite il faut créer une clé et un certificat par services que nous voulons sécuriser.
Par exemple pour le director :

 #openssl genrsa -out director.key 2048
 #openssl req -new -key director.key &gt; director.csr
 #openssl x509 -req -in director.csr -out director.crt -CA ca.crt -CAkey ca.key -CAcreateserial -CAserial ca.srl

Il est obligatoire de mettre le même nom dans le Common Name que le nom résolu par DNS du service.&lt;br/&gt;
Si l'adresse dns du director est &quot;director.local&quot; alors le Common Name est &quot;director.local&quot; et n'oubliez pas de configurer&lt;br/&gt;
le fichier '''/etc/hosts''' ou le serveur DNS.&lt;br/&gt;
L'option CAcreateserial n'est nécessaire que la première fois, ensuite pour la console :

 #openssl genrsa -out console.key 2048
 #openssl req -new -key console.key &gt; console.csr
 #openssl x509 -req -in console.csr -out console.crt -CA ca.crt -CAkey ca.key -CAserial ca.srl

Maintenant vous pouvez continuer seul pour les autres certificats (filedaemon.crt/key,storagedaemon.crt/key...).&lt;br/&gt;
Pour plus d'informations sur les certificats vous pouvez voir :&lt;br/&gt;
[http://www.batard.eu/2010/11/maitriser-les-certificats-avec-openssl/ N30Secs Blog] , 
[http://www.linux-france.org/prj/edu/archinet/systeme/ch24s03.html Linux-france.org] , 
[http://www.madboa.com/geek/openssl/ Madboa.com]


Pour établir une connexion sécurisé entre:

'''Director | Console'''&lt;br/&gt;
Revenons à notre fichier '''/etc/bacula/bconsole.conf''' et plus précisement à ces lignes :

 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Active une connexion SSL&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Oblige une connexion SSL&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers votre certificat publique du '''ca''' généré plus haut&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers votre certificat publique de la '''console''' généré plus haut&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers la clé privé de la '''console''' généré plus haut&lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-dir.conf''' :&lt;br/&gt;
 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;consolerCN&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Ici on n'autorise que la console en donnant le Common Name du certificat de la console&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key &lt;/span&gt;
 }

Vous voilà avec une connexion sécurisé entre votre console et le director.&lt;br/&gt;

'''Director | Filedaemon'''&lt;br/&gt;

Dans le fichier '''/etc/bacula/bacula-fd.conf''' :&lt;br/&gt;
 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;DirectorCN&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Ici on n'autorise que le director en donnant le Common Name du certificat du director&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key &lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-dir.conf''' :&lt;br/&gt;
 '''Client''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key&lt;/span&gt;
 }

'''Director | Storagedaemon'''&lt;br/&gt;

Dans le fichier '''/etc/bacula/bacula-sd.conf''' :&lt;br/&gt;
 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;DirectorCN&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Ici on n'autorise que le director en donnant le Common Name du certificat du director&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key &lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-dir.conf''' :&lt;br/&gt;
 '''Storage''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key&lt;/span&gt;
 }

'''Filedaemon | Storagedaemon'''&lt;br/&gt;

Dans le fichier '''/etc/bacula/bacula-sd.conf''' :&lt;br/&gt;
 '''Storage''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-fd.conf''' :&lt;br/&gt;
 '''FileDaemon''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key&lt;/span&gt;
 }

&lt;span style=&quot;background-color:#ff7272;&quot;&gt;Sous Windows faites attention&lt;/span&gt; aux chemins ce n'est pas un antislash mais deux slashs à la place :&lt;br/&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = &quot;C:\\keys\\ca.crt&quot;&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = &quot;C:\\keys\\client_win.crt&quot;&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = &quot;C:\\keys\\client_win.key&quot;&lt;/span&gt;

Et pensez aussi à modifier le fichier '''C:\WINDOWS\system32\drivers\etc\hosts''' ou le dns.

=== Le chiffrement des sauvegardes ===

C'est dans les différents File Daemon que cela ce passe, les fameuses lignes '''PKI''' :&lt;br/&gt;
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Signatures = Yes&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# active les données signées&lt;/span&gt;           
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Encryption = Yes&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# active le chiffrage&lt;/span&gt;            
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/client.pem&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# paire de clé publique/privée du client&lt;/span&gt;     
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Master Key = &quot;/etc/bacula/keys/master.crt&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# clé publique maître&lt;/span&gt;&lt;br/&gt; 


Premiere étape générer une paire de clé maître de 2048 bits et chiffré en AES 256 (un mot de passe vous sera demandé):

 # openssl genrsa -aes256 -out master.key 2048 &lt;span style=&quot;color:#bd0000;&quot;&gt;# Votre clé privé : master.key&lt;/span&gt; 
 # openssl req -new -key master.key -x509 -out master.crt &lt;span style=&quot;color:#bd0000;&quot;&gt;# Votre clé publique : master.crt&lt;/span&gt; 

Ensuite on génére une paire de clé pour chaque client :&lt;br/&gt;
Générer une clé privée : 
 # openssl genrsa -aes256 -out client.key 2048

Le fait de chiffrer la clé en AES 256 nous permet de chiffrer notre sauvegarde en AES 256, les autres choix sont :&lt;br/&gt;
128, 192, AES-CBC et Blowfish-CBC&lt;br/&gt;

Générer la clé publique auto-signée :
 # openssl req -new -key -client.key -x509 -out client.crt 
Se débarrasser du mot de passe de la clé (que bacula puisse la lire!) :
 # openssl rsa -in client.key -out client.nopass.key
Copier la clé privée et publique dans le fichier '''.pem''' :
 # cat client.nopass.key client.crt &gt; client.pem &lt;span style=&quot;color:#bd0000;&quot;&gt;# Votre paire de clé publique/privée du client : client.pem&lt;/span&gt; 

Si votre paire de clé du client est perdue ou corrompue vous pouvez déchiffrer les données avec la paire de clé maître pour cela il faut :&lt;br/&gt;
concaténer la clé privée et publique :
 # cat master.key master.crt &gt; master.keypair
puis modifier la ligne PKI Keypair en y mettant la master.keypair :
 &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/master.keypair&quot;

source :&lt;br/&gt;
:[http://www.bacula.org/en/dev-manual/main/main/Data_Encryption.html la documentation de bacula]&lt;br/&gt;
:[http://sourceforge.net/mailarchive/forum.php?thread_name=21DF2F99-E2D9-4E4E-AF06-6BA0EF64383F%40langille.org&amp;forum_name=bacula-docs Data Encryption - subjectKeyIdentifier extension?]

== Utilisation ==
=== En mode Console ===

Ouvrez un terminal et passez root puis entrez :
 # bconsole

Pour quitter la console :
 * quit

Pour afficher toutes les commandes :
 * help

Pour afficher les messages :
 * messages

Je ne vais pas m' éterniser sur cette partie [http://www.bacula.org/fr/dev-manual/console_Bacula.html la documentation] est très explicite et en français cette fois.

La commande '''status''' est très utile pour visualiser votre système Bacula, ce n'est pas obligatoire mais elle prend les arguments '''dir''', '''storage''', '''client''' et '''all'''.&lt;br/&gt;
Lancer un '''status all''' permet de vérifier que vous avez bien configuré tout les accés.

Un petit aperçu :
[[Image:status.png|center|thumb|800px|status.png]]

La commande '''run''' permet de lancer un job de sauvegarde (une liste apparaît pour faire votre choix).&lt;br/&gt;
La commande '''restore''' affiche un choix de restauration (ex: le n°5 permet de restaurer la sauvegarde la plus récente.

[[Image:restore1.png | 400px]] [[Image:restore2.png | 400px]]

=== En mode Graphique ===

Une interface graphique Qt existe pour l 'installer :
 # aptitude install bacula-console-qt

Son fichier de configuration '''/etc/bacula/bat.conf''' se configure comme une console.

Lancer l' interface en étant root :
 # gksu bat
 
Connecté à deux directors celà ressemble à ça :

[[Image:bat.png]]

[[Utilisateur:Haludeis|Haludeis]] ([[Discussion utilisateur:Haludeis|discussion]]) 6 mai 2012 à 14:39 (CEST)</text>
      <sha1>tncdg29t1lmw8egokkcywi1qfevi8yb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5153</id>
      <parentid>4211</parentid>
      <timestamp>2013-05-14T04:52:11Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="37733">[[Catégorie:Sauvegardes]]

== Présentation ==
Ce document est basé sur une installation stable de Debian (en ce moment Squeeze) et de Bacula 5.0.2.

Son but : sauvegarde, restauration et vérification en réseau &lt;br/&gt;
(reste à faire)

== Installation ==
Bacula peut utiliser les bases de données SQLite, MySql et PostGreSQL.Il suffit d'installer les paquets correspondant à votre choix. 

Changer &quot;-mysql&quot; par &quot;-pgsql&quot; ou &quot;-sqlite3&quot; sur le paquet director et le fd.

ici je choisi MySql (MySql étant déja installé):

 # aptitude install bacula-director-mysql bacula-sd-mysql bacula

Accorder les droits à bacula sur la base de données (vérifié si pas obsolète):
 # mysql -u root -p
 &gt; grant all privileges on bacula.* to 'bacula'@'localhost' identified by 'bacula' ;

Créer le répertoire de sauvegarde et accorder les droits à bacula :
 # mkdir /home/sauvegarde/
 # chown -R bacula.bacula /home/sauvegarde
 # chmod -R 660 /home/sauvegarde (---&gt; à vérifier)

== Configuration ==
Bacula se compose des fichiers suivants :

Le fichier générale de configuration le Director :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-dir.conf&lt;/span&gt;
Le fichier Storage Daemon concernant le stockage des données :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-sd.conf&lt;/span&gt;
Celui du File Daemon permettant l'accès aux données installé sur le client à sauvegarder :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bacula-fd.conf&lt;/span&gt;
Le fichier permettant la connexion entre la console et le directeur :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/bconsole.conf&lt;/span&gt; 
Le fichier de configuration du moniteur de ressources :
:&lt;span style=&quot;background-color:#fff6cb;&quot;&gt;/etc/bacula/tray-monitor.conf&lt;/span&gt;

Ces fichiers représentent les différents services de Bacula, ils peuvent se trouver sur des machines totalement différentes.

=== La Console ===

'''/etc/bacula/bconsole.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' { 
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''DIRport''' = 9101 &lt;span style=&quot;color:#bd0000;&quot;&gt;# le port d'écoute du director&lt;/span&gt;  
:'''address''' = nom_resolu_par_dns_ou_IP &lt;span style=&quot;color:#bd0000;&quot;&gt;# ip ou dns du director&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;# le mot de passe du director&lt;/span&gt; 
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt; 
} &lt;/div&gt;

'''address''' : Attention le nom DNS est obligatoire pour une connexion SSL penser à configurer le fichier /etc/hosts ou le serveur dns.

:: si vous n'utilisez pas de connexion sécurisée vous pouvez mettre une adresse ip directement.

La partie bleu permet la sécurisation des données entre le director et la console ca.crt doit être le même partout les deux autres diffèrent&lt;br/&gt;
pour chaque éléments de bacula.&lt;br/&gt;
Pour l'instant ne vous préoccupez pas de cette partie, une explication plus complète sera détaillée dans le chapitre sur la sécurisation.&lt;br/&gt;
Sachez juste que cela ce trouve là. &lt;br/&gt;
D'autres indications dans [http://www.bacula.org/5.0.x-manuals/en/main/main/Console_Configuration.html la documentation de bacula]

=== Le File Daemon ===
La ressource Client (ou File Daemon) définit le nom du client (tel qu'il est utilisé par le director) ainsi que le port sur lequel le client est à l'écoute des connections du Director.&lt;br/&gt;

'''/etc/bacula/bacula-fd.conf''' 
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le mot de passe du director&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key &lt;/span&gt;
}

'''Director''' {
:'''Name''' = NOM_MON &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director restreint défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director_restreint&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;# son mot de passe&lt;/span&gt;
:'''Monitor''' = yes 
}

'''FileDaemon''' { 
:'''Name''' = NOM_FD &lt;span style=&quot;color:#bd0000;&quot;&gt;# le nom du File daemon&lt;/span&gt;
:'''FDport''' = 9102 &lt;span style=&quot;color:#bd0000;&quot;&gt;# son mot port d'écoute'&lt;/span&gt;
:'''WorkingDirectory''' = /var/lib/bacula
:'''Pid Directory''' = /var/run/bacula
:'''Maximum Concurrent Jobs''' = 8 &lt;span style=&quot;color:#bd0000;&quot;&gt;# le nombre maximum de sauvegardes simultanées&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key&lt;/span&gt; 
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Signatures = Yes&lt;/span&gt;           
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Encryption = Yes&lt;/span&gt;            
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/client.pem&quot;&lt;/span&gt;    
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Master Key = &quot;/etc/bacula/keys/master.crt&quot;&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les messages sont envoyés au director&lt;/span&gt; 
:'''Name''' = Standard
:'''director''' = NOM_DIR = all, !skipped, !restored
}
&lt;/div&gt;
&lt;br/&gt; 
'''Working Directory''' : Cette directive est obligatoire et spécifie un répertoire dans lequel le File Daemon peut placer ses fichiers d'état.&lt;br/&gt;
: Ce répertoire ne doit être utilisé que par Bacula, mais peut être partagé par d'autres daemons Bacula les définitions des noms doivent être uniques pour chaque démon.&lt;br/&gt; 
: Sur les systèmes Win32, dans certaines circonstances, vous pourriez avoir besoin de spécifier une lettre de lecteur dans le chemin de répertoire de travail spécifié.
: Aussi, s'il vous plaît assurez-vous que ce répertoire est accessible en écriture par l'utilisateur SYSTEM au contraire la restauration peut échouer&lt;br/&gt;
: (le fichier d'amorçage (bootstrap) qui est transféré vers le File Daemon du directeur est temporairement placé dans ce répertoire avant d'être transmis au Storage Daemon).&lt;br/&gt;
'''Pid Directory''' Cette directive est obligatoire et spécifie un répertoire dans lequel le directeur peut placer ses fichiers d'identification de processus.&lt;br/&gt;
: Le fichier d'identification de processus est utilisé pour stopper Bacula et éviter à plusieurs instances de Bacula de fonctionner simultanément.&lt;br/&gt;
: Cet enregistrement est nécessaire. L'expansion du shell standard de l'annuaire se fait lorsque le fichier de configuration est lu de telle sorte que des valeurs&lt;br/&gt;
: telles que $HOME seront correctement substituées.&lt;br/&gt;
: Typiquement, sur les systèmes Linux, vous mettrez: /var/run.Si vous n'installez pas Bacula dans les répertoires système, vous pouvez utiliser le répertoire de travail&lt;br/&gt;
: tel que défini ci-dessus.&lt;br/&gt; 

Pour voir toutes les possibilités du File Daemon je vous invite à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Client_File_daemon_Configur.html la documentation de Bacula] à ce sujet.&lt;br/&gt;

 
=== Le Storage Daemon ===
Le fichier de configuration du Storage Daemon a relativement peu de définitions de ressources. Toutefois, en raison de&lt;br/&gt;
la grande variation dans les médias de sauvegarde et des capacités du système, le démon de stockage doit être hautement configurable.&lt;br/&gt;

En conséquence, il y a un assez grand nombre de directives dans la définition des ressources de périphérique qui vous permet de définir.

toutes les caractéristiques de votre périphérique de stockage (normalement un lecteur de bande). Heureusement, avec des dispositifs 

de stockage modernes, les valeurs par défaut sont suffisantes, et très peu de directives sont réellement nécessaires.

'''/etc/bacula/bacula-sd.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = NOM_SD &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nom du Storage Daemon&lt;/span&gt;
:'''SDPort''' = 9103 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son port d'écoute&lt;/span&gt;
:''' WorkingDirectory''' = &quot;/var/lib/bacula&quot; 
:''' Pid Directory''' = &quot;/var/run/bacula&quot; 
:'''Maximum Concurrent Jobs''' = 8 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nombre maximum de sauvegardes simultanées par media&lt;/span&gt;
:'''SDAddress''' = nom_dns_ou_ip &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son addresse ip ou son nom dns&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;                                                      
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# et son mot de passe&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;directorCN&quot;&lt;/span&gt;                                          
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt; 
}

'''Director''' {
:'''Name''' = NOM_MON &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director restreint défini dans le fichier bacula-dir.conf&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director_restreint&quot;
:'''Monitor''' = yes
}

'''Device''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# ou répertoire&lt;/span&gt; 
:'''Name''' = Nom_Device &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Un nom pour l'identifier&lt;/span&gt;
:'''Media Type''' = File &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son type : File, Tape, Fifo, DVD&lt;/span&gt;
:'''Archive Device''' = /home/sauvegarde/ &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Son emplacement&lt;/span&gt;
:'''LabelMedia''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Lui donne un nom&lt;/span&gt;
:'''Random Access''' = Yes;
:'''AutomaticMount''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# monte le media en automatique&lt;/span&gt;
:'''RemovableMedia''' = no;
:'''AlwaysOpen''' = yes; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Toujours accessible&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les messages sont envoyés au director&lt;/span&gt; 
:'''Name''' = Standard
:'''director''' = NOM_DIR = all
}
&lt;/div&gt;
&lt;br/&gt; 
'''Random Access''' : Si Oui, le périphérique est supposé être un moyen d'accès aléatoire qui prend en charge le lseek (Dvd,Usb...) &lt;br/&gt;
: Non pour les dispositifs d'accès non-aléatoires tels que des bandes.
'''RemovableMedia''' : Si oui, cet appareil prend en charge les supports amovibles (par exemple, cassettes ou de CD).&lt;br/&gt;
: Si Non, les médias ne peuvent pas être supprimés (par exemple, une zone de sauvegarde intermédiaire sur un disque dur).&lt;br/&gt;

Pour voir toutes les possibilités du Storage Daemon je vous invite à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Storage_Daemon_Configuratio.html la documentation de Bacula] à ce sujet.

=== Le Director ===

De tous les fichiers de configuration nécessaires à l'exécution de Bacula, le directeur est le plus compliqué, et celui que vous aurez besoin de modifier&lt;br/&gt;
le plus souvent. Afin de simplifier sa comprehension nous le séparons en plusieurs fichiers.&lt;br/&gt;
Pour inclure un fichier dans bacula-dir.conf, il suffit de mettre un @ devant le chemin du fichier à inclure.&lt;br/&gt;
 @/chemin_complet/fichier

Comme toujours vous y gagneriez à lire [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html la documentation] du director.

'''/etc/bacula/bacula-dir.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Director''' {
:'''Name''' = NOM_DIR &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le nom du director&lt;/span&gt;
:'''DIRport''' = 9101 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son port d'écoute&lt;/span&gt;
:'''QueryFile''' = &quot;/etc/bacula/query.sql&quot;
:'''WorkingDirectory''' = &quot;/var/lib/bacula&quot;
:'''PidDirectory''' = &quot;/var/run/bacula&quot;
:'''Maximum Concurrent Jobs''' = 4 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Le nombre maximum de sauvegardes simultanées&lt;/span&gt;
:'''Password''' = &quot;mdp_du_director&quot;
:'''Messages''' = Standard
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;consolerCN&quot;&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key &lt;/span&gt;
}

@/etc/bacula/configuration/bacula_dir_filset.conf &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# On ajoute les fichiers de configuration des sauvegardes&lt;/span&gt;&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_job.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_storage.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_pool.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_client.conf&lt;br/&gt;
@/etc/bacula/configuration/bacula_dir_schedule.conf&lt;br/&gt;

'''Catalog''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le catalogue ou Bacula stocke toutes ses informations&lt;/span&gt;
:'''Name''' = MyCatalog &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son nom&lt;/span&gt;
:dbname = &quot;bacula&quot;; dbuser = &quot;bacula&quot;; dbpassword = &quot;mdp_base_SQL&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# les accés à la base Sql&lt;/span&gt;
}

'''Messages''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Définitions des messages envoyés par Bacula&lt;/span&gt;
:'''Name''' = Standard &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Un nom pour l'identifier&lt;/span&gt;
:'''mailcommand''' = &quot;/usr/sbin/bsmtp -h localhost -f \&quot;\(Bacula\) \&lt;%r\&gt;\&quot; -s \&quot;Bacula daemon message\&quot; %r&quot;
:'''mail''' = root@localhost = all, !skipped
:'''console''' = all, !skipped, !saved
::append = &quot;/var/bacula/log&quot; = all, !skipped
}

'''Console''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Director restreint utile pour les clients&lt;/span&gt;
:'''Name''' = DIR_MON
:'''Password''' = &quot;Mdp_du_director_restreint&quot;
:'''CommandACL''' = status, .status
}
&lt;/div&gt;

'''QueryFile''' = Cette directive est obligatoire et spécifie un répertoire et le fichier dans lequel le directeur peut trouver les états conservés SQL&lt;br/&gt;
pour les commandes de requête de la console.&lt;br/&gt;

==== Filset====

C'est dans ce fichier que l'on trouve les répertoires et fichiers à sauvegarder.&lt;br/&gt;

'''/etc/bacula/configuration/bacula_dir_filset.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''FileSet''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Fileset Windows&lt;/span&gt;
:'''Name''' = &quot;DONNEES_FSET&quot; 
:'''Enable VSS''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# activation ou non du Volume Shadow copy&lt;/span&gt;
:'''Include''' {
::'''Options''' {
:::compression = GZIP &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on compresse la sauvegarde possibilité de donner un niveau de compression ex: GZIP9&lt;/span&gt;
:::signature = MD5 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on vérifie les fichiers sauvegardés avec md5 ou sha1&lt;/span&gt;
:::accurate = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# si cette valeur est a &quot;no&quot; même les fichiers effacés seront restaurés&lt;/span&gt;
::}
::'''File''' = &quot;C:/DONNEES&quot;&lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le(s) répertoire(s) / fichier(s) à inclure&lt;/span&gt;
:}

:'''Exclude''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le(s) répertoire(s) / fichier(s) à exclure&lt;/span&gt;
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/xxx/yyy/zzz&quot;
::'''File''' = &quot;C:/DONNEES/yyy/zzz/yyy&quot;
:}
}

'''FileSet''' { &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Fileset Linux&lt;/span&gt;
:'''Name''' = &quot;BACULA_FSET&quot;
:'''Enable VSS''' = no
:'''Include''' {
::'''Options''' {
:::signature = MD5
:::compression = GZIP9
:::accurate = yes
::}
::'''File''' = &quot;/etc/bacula/&quot;
}
&lt;/div&gt;
Vous trouverez le détail des ressources du fileset [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001870000000000000000 ici]

==== Storage ====

C'est ici que vous définissez le Storage Daemon ainsi que le device (répertoire) de sauvegarde à utiliser.

'''/etc/bacula/configuration/bacula_dir_storage.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Storage''' {
:'''Name''' = Donnees_st &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Vous lui donnez un nom&lt;/span&gt;
:'''Address''' = nom_dns_ou_ip_du_storagedaemon &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# L' adresse du Storage Daemon défini plus haut&lt;/span&gt;
:'''SDPort''' = 9103
:'''Password''' = &quot;mdp_du_storagedaemon&quot;
:'''Device''' = donnees_device &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# un des devices défini dans le fichier du Storage Daemon&lt;/span&gt;
}&lt;br/&gt;

&lt;/div&gt;
Vous trouverez le détail des ressources du storage [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018140000000000000000 ici]

==== Pool ====

Ce fichier décrit la façon dont sont gérés les volumes de sauvegarde.

'''/etc/bacula/configuration/bacula_dir_pool.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Pool'''{
:'''Name''' = Donnees_Pool
:'''Pool Type''' = Backup &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# son type Backup, Archive, Cloned, Migration, Copy, Save&quot;&lt;/span&gt;
:'''Recycle''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# on peut réutiliser les anciens volumes purgés&lt;/span&gt;
:'''AutoPrune''' = yes &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# On laisse Bacula gérer les volumes&lt;/span&gt;
:'''File Retention''' = 180 days &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# durée de rétention des fichiers&lt;/span&gt;
:'''Job Retention''' = 180 days &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# durée de rétention des jobs&lt;/span&gt;
:'''Maximum Volume Jobs''' = 1 
:'''Label Format''' = &quot;${Level}_${Job}_${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}_${Hour:p/2/0/r}h${Minute:p/2/0/r}m&quot;
}&lt;br/&gt;
&lt;/div&gt;

'''Maximum Volume Jobs''' = Cette directive n'est pas obligatoire mais en fixant cette valeur à 1 on s'assure&lt;br/&gt;
de n'avoir qu'un seul fichier par sauvegarde. &lt;br/&gt;
'''Label Format''' = permet de nommer son volume de sauvegarde &lt;br/&gt;

Vous trouverez le détail des ressources pool [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018150000000000000000 ici]

==== Client ====

Dans ce fichier vous retrouvez tous vos clients à sauvegarder.

'''/etc/bacula/configuration/bacula_dir_client.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Client''' {
:'''Name''' = Nom_du_poste_a_savegarder
:'''Address''' = nom_dns_ou_ip
:'''FDPort''' = 9102
:'''Catalog''' = MyCatalog
:'''Password''' = &quot;mdp_du_client&quot;
}
&lt;/div&gt;
Vous trouverez le détail des ressources du client [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION0018130000000000000000 ici]

==== Schedule ====

Dans celui-ci vous définissez les heures et les niveaux de vos sauvegardes automatiques.

'''/etc/bacula/configuration/bacula_dir_schedule.conf'''
&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Schedule''' {
:'''Name''' = &quot;Donnees&quot;
:'''Run''' = Full 1st sun at 23:05 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# complète le 1er dimanche du mois à 23:05&lt;/span&gt;
:'''Run''' = Differential 2nd-5th sun at 23:05 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Différentiel le 2em et 5em dimanche du mois à 23:05&lt;/span&gt;
:'''Run''' = Incremental mon-sat at 21:00 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Incrémentiel su lundi au samedi à 21:00&lt;/span&gt;
}&lt;br/&gt;
&lt;/div&gt;
Vous trouverez le détail des ressources schedule [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001850000000000000000 ici]

==== Job ====

Et enfin dans ce fichier ci vous assemblez tous vos éléments.

'''/etc/bacula/configuration/bacula_dir_job.conf'''

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''Job''' {
:'''Name''' = &quot;DONNEES&quot;
:'''Type''' = Backup
:'''Level''' = Incremental &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# le niveau de la sauvegarde&lt;/span&gt;
:'''Client''' = SERVEURZZZ
:'''RunBeforeJob''' = &quot;/usr/bin/prog&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Execute /usr/bin/prog '''avant''' la sauvegarde sur la '''machine éxecutant le director'''&lt;/span&gt;
:'''RunAfterJob'''  = &quot;/usr/bin/prog2&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Execute /usr/bin/prog2 '''après''' la sauvegarde sur la '''machine éxecutant le director'''&lt;/span&gt;
:'''ClientRunBeforeJob''' = &quot;\&quot;C:/Program\ Files/progx/fermeture\ prog.bat\&quot;&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Execute &quot;fermeture prog.bat&quot; '''avant''' la sauvegarde sur la machine '''cliente'''&lt;/span&gt;
:'''ClientRunAfterJob'''  = &quot;\&quot;C:/Program\ Files/progx/ouverture_prog.bat\&quot;&quot; &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# Execute &quot;ouverture_prog.bat&quot; '''après''' la sauvegarde sur la machine '''cliente'''&lt;/span&gt;
:'''FileSet''' = &quot;DONNEES_FSET&quot;
:'''Schedule''' = &quot;Donnees&quot;
:'''Storage''' = Donnee_st
:'''Pool'''= Donnees_Pool
:'''Write Bootstrap''' = /var/lib/bacula/donnee.bsr &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# fichier contenant l'ensemble des données de la sauvegarde&lt;/span&gt;
:'''Priority''' = 20 &lt;span style=&quot;color:#bd0000;&quot;&gt;&amp;nbsp;# la priorité du job de sauvegarde : plus le nombre est petit plus la priorité est haute&lt;/span&gt;
:'''Messages''' = Standard 
}
&lt;/div&gt;

Si dans vos différents jobs vous avez les mêmes données (Fileset,Schedule...) vous pouvez créer un '''JobDefs'''.  

&lt;div span style=&quot;background-color:#fff6cb;&quot;&gt;
'''JobDefs''' {
:'''Name''' = &quot;JOBCOMMUN&quot;
:'''Type''' = Backup
:'''Level''' = Full
:'''FileSet''' = &quot;DONNEES_FSET&quot;
:'''Schedule''' = &quot;Donnees&quot;
:'''Pool''' = Donnees_Pool
:'''Storage''' = Donnees-st
:'''Messages''' = Standard
}

'''Job''' {
:'''Name''' = &quot;DONNEES&quot;
:'''JobDefs''' = &quot;JOBCOMMUN&quot;
:'''Client''' = SERVEURZZZ
:'''Write Bootstrap''' = /var/lib/bacula/donnee.bsr 
:'''Priority''' = 10 
:'''Messages''' = Standard 
}

&lt;/div&gt;
Vous trouverez le détail des ressources job [http://www.bacula.org/5.0.x-manuals/en/main/main/Configuring_Director.html#SECTION001830000000000000000 ici]

=== Le moniteur de ressources ===

== Sécurisation ==

Tout au long du chapitre sur la configuration certaines parties en bleue n'ont pas été expliquées, elles concernaient essentiellement&lt;br/&gt;
des commandes liées aux connexions SSL et aux Chiffrage des données.&lt;br/&gt;

=== Les connexions SSL ===

Afin de sécuriser un peu notre système de sauvegarde nous pouvons mettre en place des connexions SSL entre les différents services de Bacula.&lt;br/&gt;
Dans un premier temps nous allons créer notre certificat d'autorité de certification, c'est lui qui validera (signera) les autres.

Si vous créez plusieurs certificats le conseil que je vous donne c'est d'éditer le fichier '''/etc/ssl/openssl.conf''' et &lt;br/&gt;
dans la section :&quot;req_distinguished_name&quot; de mettre vos paramêtres personalisés.

'''Exemple:'''

 countryName                     = Country Name (2 letter code)
 countryName_default             = &lt;span style=&quot;color:#bd0000;&quot;&gt;FR&lt;/span&gt;
 countryName_min                 = 2
 countryName_max                 = 2
 
 stateOrProvinceName             = State or Province Name (full name)
 stateOrProvinceName_default     = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre département&lt;/span&gt;
 
 localityName                    = Locality Name (eg, city)
 localityName_default            = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre ville&lt;/span&gt;
 
 0.organizationName              = Organization Name (eg, company)
 0.organizationName_default      = &lt;span style=&quot;color:#bd0000;&quot;&gt;Votre société&lt;/span&gt;
 
 # we can do this but it is not needed normally :-)
 #1.organizationName             = Second Organization Name (eg, company)
 #1.organizationName_default     = World Wide Web Pty Ltd
 
 organizationalUnitName          = Organizational Unit Name (eg, section)
 organizationalUnitName_default  = &lt;span style=&quot;color:#bd0000;&quot;&gt;Interne&lt;/span&gt;
 
 commonName                      = Common Name (eg, YOUR name)
 commonName_max                  = 64
 emailAddress                    = Email Address
 emailAddress_default            = &lt;span style=&quot;color:#bd0000;&quot;&gt;Une adresse mail&lt;/span&gt;
 emailAddress_max                = 64

Commencez par créer le répertoire /etc/bacula/'''keys'''/ puis entrez y.

Création du certificat d'autorité de certification :

 #openssl genrsa -aes256 -out ca.key 2048 &lt;span style=&quot;color:#bd0000;&quot;&gt;# Génére une clé RSA 2048 bits et son chiffrement en AES 256 un mot de passe vous sera demandé.&lt;/span&gt; 
 #openssl req -new -key ca.key -x509 -out ca.crt &lt;span style=&quot;color:#bd0000;&quot;&gt;# Génére le certificat publique de la clé.&lt;/span&gt; 

Ensuite il faut créer une clé et un certificat par services que nous voulons sécuriser.
Par exemple pour le director :

 #openssl genrsa -out director.key 2048
 #openssl req -new -key director.key &gt; director.csr
 #openssl x509 -req -in director.csr -out director.crt -CA ca.crt -CAkey ca.key -CAcreateserial -CAserial ca.srl

Il est obligatoire de mettre le même nom dans le Common Name que le nom résolu par DNS du service.&lt;br/&gt;
Si l'adresse dns du director est &quot;director.local&quot; alors le Common Name est &quot;director.local&quot; et n'oubliez pas de configurer&lt;br/&gt;
le fichier '''/etc/hosts''' ou le serveur DNS.&lt;br/&gt;
L'option CAcreateserial n'est nécessaire que la première fois, ensuite pour la console :

 #openssl genrsa -out console.key 2048
 #openssl req -new -key console.key &gt; console.csr
 #openssl x509 -req -in console.csr -out console.crt -CA ca.crt -CAkey ca.key -CAserial ca.srl

Maintenant vous pouvez continuer seul pour les autres certificats (filedaemon.crt/key,storagedaemon.crt/key...).&lt;br/&gt;
Pour plus d'informations sur les certificats vous pouvez voir :&lt;br/&gt;
[http://www.batard.eu/2010/11/maitriser-les-certificats-avec-openssl/ N30Secs Blog] , 
[http://www.linux-france.org/prj/edu/archinet/systeme/ch24s03.html Linux-france.org] , 
[http://www.madboa.com/geek/openssl/ Madboa.com]


Pour établir une connexion sécurisé entre:

'''Director | Console'''&lt;br/&gt;
Revenons à notre fichier '''/etc/bacula/bconsole.conf''' et plus précisement à ces lignes :

 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Active une connexion SSL&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Oblige une connexion SSL&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers votre certificat publique du '''ca''' généré plus haut&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/console.crt &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers votre certificat publique de la '''console''' généré plus haut&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/console.key &lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# le chemin vers la clé privé de la '''console''' généré plus haut&lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-dir.conf''' :&lt;br/&gt;
 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;consolerCN&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Ici on n'autorise que la console en donnant le Common Name du certificat de la console&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key &lt;/span&gt;
 }

Vous voilà avec une connexion sécurisé entre votre console et le director.&lt;br/&gt;

'''Director | Filedaemon'''&lt;br/&gt;

Dans le fichier '''/etc/bacula/bacula-fd.conf''' :&lt;br/&gt;
 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;DirectorCN&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Ici on n'autorise que le director en donnant le Common Name du certificat du director&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key &lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-dir.conf''' :&lt;br/&gt;
 '''Client''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes &lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key&lt;/span&gt;
 }

'''Director | Storagedaemon'''&lt;br/&gt;

Dans le fichier '''/etc/bacula/bacula-sd.conf''' :&lt;br/&gt;
 '''Director''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt;            
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Verify Peer = yes&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Allowed CN = &quot;DirectorCN&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# Ici on n'autorise que le director en donnant le Common Name du certificat du director&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key &lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-dir.conf''' :&lt;br/&gt;
 '''Storage''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/director.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/director.key&lt;/span&gt;
 }

'''Filedaemon | Storagedaemon'''&lt;br/&gt;

Dans le fichier '''/etc/bacula/bacula-sd.conf''' :&lt;br/&gt;
 '''Storage''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/storagedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/storagedaemon.key&lt;/span&gt;
 }

Dans le fichier '''/etc/bacula/bacula-fd.conf''' :&lt;br/&gt;
 '''FileDaemon''' {
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Enable = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Require = yes&lt;/span&gt; 
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = /etc/bacula/keys/ca.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = /etc/bacula/keys/filedaemon.crt&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = /etc/bacula/keys/filedaemon.key&lt;/span&gt;
 }

&lt;span style=&quot;background-color:#ff7272;&quot;&gt;Sous Windows faites attention&lt;/span&gt; aux chemins ce n'est pas un antislash mais deux slashs à la place :&lt;br/&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS CA Certificate File = &quot;C:\\keys\\ca.crt&quot;&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Certificate = &quot;C:\\keys\\client_win.crt&quot;&lt;/span&gt;
   &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;TLS Key = &quot;C:\\keys\\client_win.key&quot;&lt;/span&gt;

Et pensez aussi à modifier le fichier '''C:\WINDOWS\system32\drivers\etc\hosts''' ou le dns.

=== Le chiffrement des sauvegardes ===

C'est dans les différents File Daemon que cela ce passe, les fameuses lignes '''PKI''' :&lt;br/&gt;
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Signatures = Yes&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# active les données signées&lt;/span&gt;           
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Encryption = Yes&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# active le chiffrage&lt;/span&gt;            
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/client.pem&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# paire de clé publique/privée du client&lt;/span&gt;     
:::&lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Master Key = &quot;/etc/bacula/keys/master.crt&quot;&lt;/span&gt;&lt;span style=&quot;color:#bd0000;&quot;&gt;# clé publique maître&lt;/span&gt;&lt;br/&gt; 


Premiere étape générer une paire de clé maître de 2048 bits et chiffré en AES 256 (un mot de passe vous sera demandé):

 # openssl genrsa -aes256 -out master.key 2048 &lt;span style=&quot;color:#bd0000;&quot;&gt;# Votre clé privé : master.key&lt;/span&gt; 
 # openssl req -new -key master.key -x509 -out master.crt &lt;span style=&quot;color:#bd0000;&quot;&gt;# Votre clé publique : master.crt&lt;/span&gt; 

Ensuite on génére une paire de clé pour chaque client :&lt;br/&gt;
Générer une clé privée : 
 # openssl genrsa -aes256 -out client.key 2048

Le fait de chiffrer la clé en AES 256 nous permet de chiffrer notre sauvegarde en AES 256, les autres choix sont :&lt;br/&gt;
128, 192, AES-CBC et Blowfish-CBC&lt;br/&gt;

Générer la clé publique auto-signée :
 # openssl req -new -key -client.key -x509 -out client.crt 
Se débarrasser du mot de passe de la clé (que bacula puisse la lire!) :
 # openssl rsa -in client.key -out client.nopass.key
Copier la clé privée et publique dans le fichier '''.pem''' :
 # cat client.nopass.key client.crt &gt; client.pem &lt;span style=&quot;color:#bd0000;&quot;&gt;# Votre paire de clé publique/privée du client : client.pem&lt;/span&gt; 

Si votre paire de clé du client est perdue ou corrompue vous pouvez déchiffrer les données avec la paire de clé maître pour cela il faut :&lt;br/&gt;
concaténer la clé privée et publique :
 # cat master.key master.crt &gt; master.keypair
puis modifier la ligne PKI Keypair en y mettant la master.keypair :
 &lt;span style=&quot;background-color:#cbfeff;&quot;&gt;PKI Keypair = &quot;/etc/bacula/keys/master.keypair&quot;

source :&lt;br/&gt;
:[http://www.bacula.org/en/dev-manual/main/main/Data_Encryption.html la documentation de bacula]&lt;br/&gt;
:[http://sourceforge.net/mailarchive/forum.php?thread_name=21DF2F99-E2D9-4E4E-AF06-6BA0EF64383F%40langille.org&amp;forum_name=bacula-docs Data Encryption - subjectKeyIdentifier extension?]

== Utilisation ==
=== En mode Console ===

Ouvrez un terminal et passez root puis entrez :
 # bconsole

Pour quitter la console :
 * quit

Pour afficher toutes les commandes :
 * help

Pour afficher les messages :
 * messages

Je ne vais pas m' éterniser sur cette partie [http://www.bacula.org/fr/dev-manual/console_Bacula.html la documentation] est très explicite et en français cette fois.

La commande '''status''' est très utile pour visualiser votre système Bacula, ce n'est pas obligatoire mais elle prend les arguments '''dir''', '''storage''', '''client''' et '''all'''.&lt;br/&gt;
Lancer un '''status all''' permet de vérifier que vous avez bien configuré tout les accés.

Un petit aperçu :
[[Image:status.png|center|thumb|800px|status.png]]

La commande '''run''' permet de lancer un job de sauvegarde (une liste apparaît pour faire votre choix).&lt;br/&gt;
La commande '''restore''' affiche un choix de restauration (ex: le n°5 permet de restaurer la sauvegarde la plus récente.

[[Image:restore1.png | 400px]] [[Image:restore2.png | 400px]]

=== En mode Graphique ===

Une interface graphique Qt existe pour l 'installer :
 # aptitude install bacula-console-qt

Son fichier de configuration '''/etc/bacula/bat.conf''' se configure comme une console.

Lancer l' interface en étant root :
 # gksu bat
 
Connecté à deux directors celà ressemble à ça :

[[Image:bat.png]]

[[Utilisateur:Haludeis|Haludeis]] ([[Discussion utilisateur:Haludeis|discussion]]) 6 mai 2012 à 14:39 (CEST)</text>
      <sha1>rolec19h29x6rsbsvwqqvjf6fcey13a</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Btrfs</title>
    <ns>0</ns>
    <id>694</id>
    <revision>
      <id>3026</id>
      <timestamp>2011-06-06T16:35:14Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>Page créée avec « Btrfs est un système de fichier 128bits transactionnel développé par Oracle pour le noyau Linux. Il est actuellement toujours en développement, mais devrait bientôt deve... »</comment>
      <text xml:space="preserve" bytes="874">Btrfs est un système de fichier 128bits transactionnel développé par Oracle pour le noyau Linux. Il est actuellement toujours en développement, mais devrait bientôt devenir stable et être utilisé par un grand nombre de distribution.

=Fonctionnalités=

Ce système de fichier est possède des fonctionnalités très différentes des habituels ext, fat ou ntfs. btrfs se rapproche plus de zfs. zfs permet entre autre :

- la compression des données de manière transparente
- le redimensionnement de volume à chaud
- la création de snapshots instantanés
- la gestion de sous-volumes

=Prérequis=

Il est conseillé d'avoir un noyau à jour tant que ce système de fichier ne seras pas stable. Il faut de plus installer le paquet btrfs-tools.

=Petits tests=

Je vous propose de vous amuser sur des partitions virtuelles. On va en créer 3 de 1Gio chacun.

*TODO*</text>
      <sha1>82xmtfryw432qbu7sgqusrwinnd3y43</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3027</id>
      <parentid>3026</parentid>
      <timestamp>2011-06-06T16:46:53Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <text xml:space="preserve" bytes="873">Btrfs est un système de fichier 128bits transactionnel développé par Oracle pour le noyau Linux. Il est actuellement toujours en développement, mais devrait bientôt devenir stable et être utilisé par un grand nombre de distribution.

=Fonctionnalités=

Ce système de fichier est possède des fonctionnalités très différentes des habituels ext, fat ou ntfs. btrfs se rapproche plus de zfs. zfs permet entre autre :

* la compression des données de manière transparente
* le redimensionnement de volume à chaud
* la création de snapshots instantanés
* la gestion de sous-volumes

=Prérequis=

Il est conseillé d'avoir un noyau à jour tant que ce système de fichier ne seras pas stable. Il faut de plus installer le paquet btrfs-tools.

=Petits tests=

Je vous propose de vous amuser sur des partitions virtuelles. On va en créer 3 de 1Gio chacun.

*TODO</text>
      <sha1>2wohixflhoik8jl3qq6chlm9p92bvz8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3028</id>
      <parentid>3027</parentid>
      <timestamp>2011-06-06T16:59:04Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>/* Petits tests */</comment>
      <text xml:space="preserve" bytes="1030">Btrfs est un système de fichier 128bits transactionnel développé par Oracle pour le noyau Linux. Il est actuellement toujours en développement, mais devrait bientôt devenir stable et être utilisé par un grand nombre de distribution.

=Fonctionnalités=

Ce système de fichier est possède des fonctionnalités très différentes des habituels ext, fat ou ntfs. btrfs se rapproche plus de zfs. zfs permet entre autre :

* la compression des données de manière transparente
* le redimensionnement de volume à chaud
* la création de snapshots instantanés
* la gestion de sous-volumes

=Prérequis=

Il est conseillé d'avoir un noyau à jour tant que ce système de fichier ne seras pas stable. Il faut de plus installer le paquet btrfs-tools.

=Petits tests=

Je vous propose de vous amuser sur des partitions virtuelles. On va en créer 3 de 1Gio chacune.

* On commence par créer 3 fichiers de 1Gio chacun.
 dd if=/dev/zero of=fichier1 bs=4096 count=268435456
* On les attaches à des partitions
 losetup -f fichier1</text>
      <sha1>8dekpmjfus2kst9syuvilo5b6k5rdy3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3029</id>
      <parentid>3028</parentid>
      <timestamp>2011-06-06T16:59:21Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Fonctionnalités */</comment>
      <text xml:space="preserve" bytes="1026">Btrfs est un système de fichier 128bits transactionnel développé par Oracle pour le noyau Linux. Il est actuellement toujours en développement, mais devrait bientôt devenir stable et être utilisé par un grand nombre de distribution.

=Fonctionnalités=

Ce système de fichier possède des fonctionnalités très différentes des habituels ext, fat ou ntfs. btrfs se rapproche plus de zfs. zfs permet entre autre :

* la compression des données de manière transparente
* le redimensionnement de volume à chaud
* la création de snapshots instantanés
* la gestion de sous-volumes

=Prérequis=

Il est conseillé d'avoir un noyau à jour tant que ce système de fichier ne seras pas stable. Il faut de plus installer le paquet btrfs-tools.

=Petits tests=

Je vous propose de vous amuser sur des partitions virtuelles. On va en créer 3 de 1Gio chacune.

* On commence par créer 3 fichiers de 1Gio chacun.
 dd if=/dev/zero of=fichier1 bs=4096 count=268435456
* On les attaches à des partitions
 losetup -f fichier1</text>
      <sha1>c8axticup3d7os7zz2p0wq6liezau6h</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3057</id>
      <parentid>3029</parentid>
      <timestamp>2011-06-10T17:48:42Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>/* Petits tests */</comment>
      <text xml:space="preserve" bytes="1027">Btrfs est un système de fichier 128bits transactionnel développé par Oracle pour le noyau Linux. Il est actuellement toujours en développement, mais devrait bientôt devenir stable et être utilisé par un grand nombre de distribution.

=Fonctionnalités=

Ce système de fichier possède des fonctionnalités très différentes des habituels ext, fat ou ntfs. btrfs se rapproche plus de zfs. zfs permet entre autre :

* la compression des données de manière transparente
* le redimensionnement de volume à chaud
* la création de snapshots instantanés
* la gestion de sous-volumes

=Prérequis=

Il est conseillé d'avoir un noyau à jour tant que ce système de fichier ne seras pas stable. Il faut de plus installer le paquet btrfs-tools.

=Petits tests=

Je vous propose de vous amuser sur des partitions virtuelles. On va en créer 3 de 1Gio chacune.

* On commence par créer un fichiers de 1Gio chacun.
 dd if=/dev/zero of=fichier1 bs=4096 count=268435456
* On les attaches à des partitions
 losetup -f fichier1</text>
      <sha1>dr8esn0xwlarqq2qnb9le7c9l5izmo1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3061</id>
      <parentid>3057</parentid>
      <timestamp>2011-06-10T20:25:17Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>/* Petits tests */</comment>
      <text xml:space="preserve" bytes="1289">Btrfs est un système de fichier 128bits transactionnel développé par Oracle pour le noyau Linux. Il est actuellement toujours en développement, mais devrait bientôt devenir stable et être utilisé par un grand nombre de distribution.

=Fonctionnalités=

Ce système de fichier possède des fonctionnalités très différentes des habituels ext, fat ou ntfs. btrfs se rapproche plus de zfs. zfs permet entre autre :

* la compression des données de manière transparente
* le redimensionnement de volume à chaud
* la création de snapshots instantanés
* la gestion de sous-volumes

=Prérequis=

Il est conseillé d'avoir un noyau à jour tant que ce système de fichier ne seras pas stable. Il faut de plus installer le paquet btrfs-tools.

=Petits tests=

Je vous propose de vous amuser sur des partitions virtuelles. On va en créer 3 de 1Gio chacune.

* On commence par créer un fichiers de 1Gio chacun.
 dd if=/dev/zero of=fichier1 bs=4096 count=268435
* On les attaches à des partitions
 losetup -f --show fichier1
* Cette dernière commande va afficher le nom d'un périphérique de la forme /dev/loopX (avec X un chiffre). Ce périphérique est le disque dur virtuel que nous allons utiliser pour la suite. Nous allons considérer que c'est le périphérique /dev/loop0.</text>
      <sha1>k8dsluhjgjsf6yvxbvkz56w46q91ktb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3062</id>
      <parentid>3061</parentid>
      <timestamp>2011-06-10T21:03:17Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>/* Petits tests */</comment>
      <text xml:space="preserve" bytes="1774">Btrfs est un système de fichier 128bits transactionnel développé par Oracle pour le noyau Linux. Il est actuellement toujours en développement, mais devrait bientôt devenir stable et être utilisé par un grand nombre de distribution.

=Fonctionnalités=

Ce système de fichier possède des fonctionnalités très différentes des habituels ext, fat ou ntfs. btrfs se rapproche plus de zfs. zfs permet entre autre :

* la compression des données de manière transparente
* le redimensionnement de volume à chaud
* la création de snapshots instantanés
* la gestion de sous-volumes

=Prérequis=

Il est conseillé d'avoir un noyau à jour tant que ce système de fichier ne seras pas stable. Il faut de plus installer le paquet btrfs-tools.

=Petits tests=

Je vous propose de vous amuser avec une partition virtuelle.

==Mise en place de l'environnement==

* On commence par créer un fichiers de 1Gio chacun.
 $ dd if=/dev/zero of=fichier1 bs=4096 count=268435
* On les attaches à des partitions
 # losetup -f --show fichier1
* Cette dernière commande va afficher le nom d'un périphérique de la forme /dev/loopX (avec X un chiffre). Ce périphérique est le disque dur virtuel que nous allons utiliser pour la suite. Nous allons considérer que c'est le périphérique /dev/loop0. Ensuite on le format en btrfs :
 # mkfs.btrfs /dev/loop0
* Puis on monte cette partition dans le dossier de notre choix. Ici je choisi de mettre stocker ce dossier dans une variable du shell ($mount) pour être plus lisible :
 # mount -o loop /dev/loop0 $mount

Nous voici maintenant avec une nouvelle partition montée dans le dossier pointé par $mount. Vous pouvez stocker des fichier dessus comme dans une vrai partition. Nous allons pouvoir commencer les expérimentations.</text>
      <sha1>m0mhhggppbrjcrnyc02fgz45l2d6ljn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3063</id>
      <parentid>3062</parentid>
      <timestamp>2011-06-10T21:23:42Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>/* Mise en place de l'environnement */</comment>
      <text xml:space="preserve" bytes="2398">Btrfs est un système de fichier 128bits transactionnel développé par Oracle pour le noyau Linux. Il est actuellement toujours en développement, mais devrait bientôt devenir stable et être utilisé par un grand nombre de distribution.

=Fonctionnalités=

Ce système de fichier possède des fonctionnalités très différentes des habituels ext, fat ou ntfs. btrfs se rapproche plus de zfs. zfs permet entre autre :

* la compression des données de manière transparente
* le redimensionnement de volume à chaud
* la création de snapshots instantanés
* la gestion de sous-volumes

=Prérequis=

Il est conseillé d'avoir un noyau à jour tant que ce système de fichier ne seras pas stable. Il faut de plus installer le paquet btrfs-tools.

=Petits tests=

Je vous propose de vous amuser avec une partition virtuelle.

==Mise en place de l'environnement==

* On commence par créer un fichiers de 1Gio chacun.
 $ dd if=/dev/zero of=fichier1 bs=4096 count=268435
* On les attaches à des partitions
 # losetup -f --show fichier1
* Cette dernière commande va afficher le nom d'un périphérique de la forme /dev/loopX (avec X un chiffre). Ce périphérique est le disque dur virtuel que nous allons utiliser pour la suite. Nous allons considérer que c'est le périphérique /dev/loop0. Ensuite on le format en btrfs :
 # mkfs.btrfs /dev/loop0
* Puis on monte cette partition dans le dossier de notre choix. Ici je choisi de mettre stocker ce dossier dans une variable du shell ($mount) pour être plus lisible :
 # mount -o loop /dev/loop0 $mount

Nous voici maintenant avec une nouvelle partition montée dans le dossier pointé par $mount. Vous pouvez stocker des fichier dessus comme dans une vrai partition. Nous allons pouvoir commencer les expérimentations.

==Test de la compression==

Nous allons commencer par tester la compression. Il y a deux algorithmes utilisable : zlib (par défaut) ou zlo.

Avant d'activer la compression, on va ajouter des données dans $mount :
* On commence par créer un fichier remplis de 0 ça permettras de voir qu'on y gagne pas qu'un peu (mais c'est totalement biaisé) :
 # dd if=/dev/zero of=$mount/zero bs=4096 count=70000
* Cela crée un fichier de 287 Mio dans $mount, maintennant on va en plus mettre des données plus réalistes, par exemple prendre une partie de vos données de votre ~, jusqu'à ce que le disque soit totalement rempli.</text>
      <sha1>b5piwgv66vrzgljvnohwcba9bpz23pw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>CD audio</title>
    <ns>0</ns>
    <id>64</id>
    <revision>
      <id>250</id>
      <timestamp>2010-01-25T14:37:35Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <comment>Page créée avec « En travaux »</comment>
      <text xml:space="preserve" bytes="10">En travaux</text>
      <sha1>cdmy65ohqhm653pj70011ea0q4nbckg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>253</id>
      <parentid>250</parentid>
      <timestamp>2010-01-25T15:18:50Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <text xml:space="preserve" bytes="597">Manipuler des CD audio sous debian peut être un peu déroutant si l'on ne souhaite pas se contenter des outils graphiques et comprendre ce qui se passe.

= Vue générale du CD-DA =

CD-DA est l'acronyme de Compact Disk - Digital Audio.

= Utiliser les CD-DA avec debian =

Voici quelques outils à utiliser en ligne de commande pour manipuler les CD audio avec debian.

== Lire un CD-DA ==

mplayer cdda://

== Ripper un CD-DA ==

cdparanoia -B
cdda2wav

== Graver un CD-DA ==

wodim dev=/dev/cdrw *.{wav,au}

== Copier un CD-DA ==

cdrdao

== Obtenir des informations sur le contenu du CD-DA ==</text>
      <sha1>q6x5qtoprp2jt5kpel0gvpv8aceog75</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>254</id>
      <parentid>253</parentid>
      <timestamp>2010-01-25T15:21:44Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <comment>/* Ripper un CD-DA */</comment>
      <text xml:space="preserve" bytes="598">Manipuler des CD audio sous debian peut être un peu déroutant si l'on ne souhaite pas se contenter des outils graphiques et comprendre ce qui se passe.

= Vue générale du CD-DA =

CD-DA est l'acronyme de Compact Disk - Digital Audio.

= Utiliser les CD-DA avec debian =

Voici quelques outils à utiliser en ligne de commande pour manipuler les CD audio avec debian.

== Lire un CD-DA ==

mplayer cdda://

== Ripper un CD-DA ==

cdparanoia -B

cdda2wav

== Graver un CD-DA ==

wodim dev=/dev/cdrw *.{wav,au}

== Copier un CD-DA ==

cdrdao

== Obtenir des informations sur le contenu du CD-DA ==</text>
      <sha1>83x4qtc8r02hd1glt8hydt2l28a7z76</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>260</id>
      <parentid>254</parentid>
      <timestamp>2010-01-25T18:00:35Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <comment>/* Graver un CD-DA */</comment>
      <text xml:space="preserve" bytes="646">Manipuler des CD audio sous debian peut être un peu déroutant si l'on ne souhaite pas se contenter des outils graphiques et comprendre ce qui se passe.

= Vue générale du CD-DA =

CD-DA est l'acronyme de Compact Disk - Digital Audio.

= Utiliser les CD-DA avec debian =

Voici quelques outils à utiliser en ligne de commande pour manipuler les CD audio avec debian.

== Lire un CD-DA ==

mplayer cdda://

== Ripper un CD-DA ==

cdparanoia -B

cdda2wav

== Graver un CD-DA ==

wodim dev=/dev/cdrw *.{wav,au}

gnomebaker (basé sur wodim, cdrdao et icedax)

== Copier un CD-DA ==

cdrdao

== Obtenir des informations sur le contenu du CD-DA ==</text>
      <sha1>qc0sali7do4sdewq69ces6wd3zyvdj7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>261</id>
      <parentid>260</parentid>
      <timestamp>2010-01-25T18:03:12Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <comment>/* Ripper un CD-DA */</comment>
      <text xml:space="preserve" bytes="654">Manipuler des CD audio sous debian peut être un peu déroutant si l'on ne souhaite pas se contenter des outils graphiques et comprendre ce qui se passe.

= Vue générale du CD-DA =

CD-DA est l'acronyme de Compact Disk - Digital Audio.

= Utiliser les CD-DA avec debian =

Voici quelques outils à utiliser en ligne de commande pour manipuler les CD audio avec debian.

== Lire un CD-DA ==

mplayer cdda://

== Ripper un CD-DA ==

cdparanoia -B

cdda2wav

icedax

== Graver un CD-DA ==

wodim dev=/dev/cdrw *.{wav,au}

gnomebaker (basé sur wodim, cdrdao et icedax)

== Copier un CD-DA ==

cdrdao

== Obtenir des informations sur le contenu du CD-DA ==</text>
      <sha1>8vu58qfqr3wejqhuepwkgnfrigd7o1i</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>262</id>
      <parentid>261</parentid>
      <timestamp>2010-01-25T18:05:15Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <comment>/* Graver un CD-DA */</comment>
      <text xml:space="preserve" bytes="671">Manipuler des CD audio sous debian peut être un peu déroutant si l'on ne souhaite pas se contenter des outils graphiques et comprendre ce qui se passe.

= Vue générale du CD-DA =

CD-DA est l'acronyme de Compact Disk - Digital Audio.

= Utiliser les CD-DA avec debian =

Voici quelques outils à utiliser en ligne de commande pour manipuler les CD audio avec debian.

== Lire un CD-DA ==

mplayer cdda://

== Ripper un CD-DA ==

cdparanoia -B

cdda2wav

icedax

== Graver un CD-DA ==

wodim dev=/dev/cdrw *.{wav,au}

gnomebaker (GUI basée entre autre sur wodim, cdrdao et icedax)

== Copier un CD-DA ==

cdrdao

== Obtenir des informations sur le contenu du CD-DA ==</text>
      <sha1>8fqfma2biggr59igpk6shx9bvw6v0wn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>263</id>
      <parentid>262</parentid>
      <timestamp>2010-01-25T18:14:19Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <text xml:space="preserve" bytes="700">Manipuler des CD audio sous debian peut être un peu déroutant si l'on ne souhaite pas se contenter des outils graphiques et comprendre ce qui se passe.

= Vue générale du CD-DA =

CD-DA est l'acronyme de Compact Disk - Digital Audio.

= Utiliser les CD-DA avec debian =

Voici quelques outils à utiliser en ligne de commande pour manipuler les CD audio avec debian.

== Lire un CD-DA ==

mplayer cdda://

== Ripper un CD-DA ==

cdparanoia -B

cdda2wav

icedax

== Graver un CD-DA ==

wodim dev=/dev/cdrw *.{wav,au}

gnomebaker (GUI basée entre autre sur wodim, cdrdao et icedax)

== Copier un CD-DA ==

cdrdao

== Obtenir des informations sur le contenu du CD-DA ==


[[Catégorie:Multimédia]]</text>
      <sha1>4ayllljy29f2rdgpkorhucnb9wn4a0p</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>267</id>
      <parentid>263</parentid>
      <timestamp>2010-01-25T20:32:53Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <comment>/* Vue générale du CD-DA */</comment>
      <text xml:space="preserve" bytes="1254">Manipuler des CD audio sous debian peut être un peu déroutant si l'on ne souhaite pas se contenter des outils graphiques et comprendre ce qui se passe.

= Vue générale du CD-DA =

CD-DA est l'acronyme de Compact Disk - Digital Audio. C'est un standard défini dans le '''Red Book''', dont la première édition revient à Philips et Sony en 1980. Le CD-DA n'est pas un standard libre, les droits et le logo associé sont possédés par le groupe Pḧilips.

Le support du CD-DA est le Compact Disk (CD), un média optique permettant de stocker les données sous forme numérique. Les données audio sont stockées sous la forme d'une piste stéréo encodée à une résolution de 16 bits avec une fréquence d'échantillonnage de 44,1 kHz&lt;ref&gt;Wikipedia: Compact Disk Digital Audio&lt;/ref&gt;.

= Utiliser les CD-DA avec debian =

Voici quelques outils à utiliser en ligne de commande pour manipuler les CD audio avec debian.

== Lire un CD-DA ==

mplayer cdda://

== Ripper un CD-DA ==

cdparanoia -B

cdda2wav

icedax

== Graver un CD-DA ==

wodim dev=/dev/cdrw *.{wav,au}

gnomebaker (GUI basée entre autre sur wodim, cdrdao et icedax)

== Copier un CD-DA ==

cdrdao

== Obtenir des informations sur le contenu du CD-DA ==


[[Catégorie:Multimédia]]</text>
      <sha1>1m3hafatoeixhhkpp9h0jakdw73nkf4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>268</id>
      <parentid>267</parentid>
      <timestamp>2010-01-25T20:36:43Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <text xml:space="preserve" bytes="1323">Manipuler des CD audio sous debian peut être un peu déroutant si l'on ne souhaite pas se contenter des outils graphiques et comprendre ce qui se passe.

= Vue générale du CD-DA =

CD-DA est l'acronyme de Compact Disk - Digital Audio. C'est un standard défini dans le '''Red Book''', dont la première édition revient à Philips et Sony en 1980. Le CD-DA n'est pas un standard libre, les droits et le logo associé sont possédés par le groupe Pḧilips.

Le support du CD-DA est le Compact Disk (CD), un média optique permettant de stocker les données sous forme numérique. Les données audio sont stockées sous la forme d'une piste stéréo encodée à une résolution de 16 bits avec une fréquence d'échantillonnage de 44,1 kHz.

= Utiliser les CD-DA avec debian =

Voici quelques outils à utiliser en ligne de commande pour manipuler les CD audio avec debian.

== Lire un CD-DA ==

mplayer cdda://

== Ripper un CD-DA ==

cdparanoia -B

cdda2wav

icedax

== Graver un CD-DA ==

wodim dev=/dev/cdrw *.{wav,au}

gnomebaker (GUI basée entre autre sur wodim, cdrdao et icedax)

== Copier un CD-DA ==

cdrdao

== Obtenir des informations sur le contenu du CD-DA ==


[[Catégorie:Multimédia]]


== Références ==
[http://en.wikipedia.org/wiki/Compact_Disc_Digital_Audio Wikipedia: Compact Disk Digital Audio]</text>
      <sha1>retqgru1csbh7mgm54v55xxn7dt8w1z</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>269</id>
      <parentid>268</parentid>
      <timestamp>2010-01-25T21:24:15Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <comment>/* Obtenir des informations sur le contenu du CD-DA */</comment>
      <text xml:space="preserve" bytes="1737">Manipuler des CD audio sous debian peut être un peu déroutant si l'on ne souhaite pas se contenter des outils graphiques et comprendre ce qui se passe.

= Vue générale du CD-DA =

CD-DA est l'acronyme de Compact Disk - Digital Audio. C'est un standard défini dans le '''Red Book''', dont la première édition revient à Philips et Sony en 1980. Le CD-DA n'est pas un standard libre, les droits et le logo associé sont possédés par le groupe Pḧilips.

Le support du CD-DA est le Compact Disk (CD), un média optique permettant de stocker les données sous forme numérique. Les données audio sont stockées sous la forme d'une piste stéréo encodée à une résolution de 16 bits avec une fréquence d'échantillonnage de 44,1 kHz.

= Utiliser les CD-DA avec debian =

Voici quelques outils à utiliser en ligne de commande pour manipuler les CD audio avec debian.

== Lire un CD-DA ==

mplayer cdda://

== Ripper un CD-DA ==

cdparanoia -B

cdda2wav

icedax

== Graver un CD-DA ==

wodim dev=/dev/cdrw *.{wav,au}

gnomebaker (GUI basée entre autre sur wodim, cdrdao et icedax)

== Copier un CD-DA ==

cdrdao

== Obtenir des informations sur le contenu du CD-DA ==
=== cdir ===
La commande cdir du package cdtool permet d'obtenir la durée de chaque piste d'un CD audio :
 %cdir
 unknown cd - 70:32 in 18 tracks
   2:01.42  1 
   3:45.18  2 
   4:30.65  3 
   2:45.17  4 
   4:47.45  5 
   4:22.65  6 
   2:14.05  7 
   4:12.48  8 
   4:15.70  9 
   3:45.30 10 
   3:24.65 11 
   5:09.15 12 
   3:24.72 13 
   3:11.20 14 
   3:18.58 15 
   4:38.25 16 
   6:27.15 17 
   4:14.00 18

[[Catégorie:Multimédia]]

== Références ==
[http://en.wikipedia.org/wiki/Compact_Disc_Digital_Audio Wikipedia: Compact Disk Digital Audio]</text>
      <sha1>ifbm20ggc5ia8stozs48aenwrvhmrs8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>270</id>
      <parentid>269</parentid>
      <timestamp>2010-01-25T21:25:54Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <text xml:space="preserve" bytes="1751">Manipuler des CD audio sous debian peut être un peu déroutant si l'on ne souhaite pas se contenter des outils graphiques et que l'on veut comprendre ce qui se passe.

= Vue générale du CD-DA =

CD-DA est l'acronyme de Compact Disk - Digital Audio. C'est un standard défini dans le '''Red Book''', dont la première édition revient à Philips et Sony en 1980. Le CD-DA n'est pas un standard libre, les droits et le logo associé sont possédés par le groupe Pḧilips.

Le support du CD-DA est le Compact Disk (CD), un média optique permettant de stocker les données sous forme numérique. Les données audio sont stockées sous la forme d'une piste stéréo encodée à une résolution de 16 bits avec une fréquence d'échantillonnage de 44,1 kHz.

= Utiliser les CD-DA avec debian =

Voici quelques outils à utiliser en ligne de commande pour manipuler les CD audio avec debian.

== Lire un CD-DA ==

mplayer cdda://

== Ripper un CD-DA ==

cdparanoia -B

cdda2wav

icedax

== Graver un CD-DA ==

wodim dev=/dev/cdrw *.{wav,au}

gnomebaker (GUI basée entre autre sur wodim, cdrdao et icedax)

== Copier un CD-DA ==

cdrdao

== Obtenir des informations sur le contenu du CD-DA ==
=== cdir ===
La commande cdir du package cdtool permet d'obtenir la durée de chaque piste d'un CD audio :
 %cdir
 unknown cd - 70:32 in 18 tracks
   2:01.42  1 
   3:45.18  2 
   4:30.65  3 
   2:45.17  4 
   4:47.45  5 
   4:22.65  6 
   2:14.05  7 
   4:12.48  8 
   4:15.70  9 
   3:45.30 10 
   3:24.65 11 
   5:09.15 12 
   3:24.72 13 
   3:11.20 14 
   3:18.58 15 
   4:38.25 16 
   6:27.15 17 
   4:14.00 18

[[Catégorie:Multimédia]]

== Références ==
[http://en.wikipedia.org/wiki/Compact_Disc_Digital_Audio Wikipedia: Compact Disk Digital Audio]</text>
      <sha1>ku1nzqu4jxs4oqln94qyeeh3wr6exra</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>271</id>
      <parentid>270</parentid>
      <timestamp>2010-01-25T21:32:46Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <comment>/* Utiliser les CD-DA avec debian */</comment>
      <text xml:space="preserve" bytes="2192">Manipuler des CD audio sous debian peut être un peu déroutant si l'on ne souhaite pas se contenter des outils graphiques et que l'on veut comprendre ce qui se passe.

= Vue générale du CD-DA =

CD-DA est l'acronyme de Compact Disk - Digital Audio. C'est un standard défini dans le '''Red Book''', dont la première édition revient à Philips et Sony en 1980. Le CD-DA n'est pas un standard libre, les droits et le logo associé sont possédés par le groupe Pḧilips.

Le support du CD-DA est le Compact Disk (CD), un média optique permettant de stocker les données sous forme numérique. Les données audio sont stockées sous la forme d'une piste stéréo encodée à une résolution de 16 bits avec une fréquence d'échantillonnage de 44,1 kHz.

= Utiliser les CD-DA avec debian =

Voici quelques outils à utiliser en ligne de commande pour manipuler les CD audio avec debian. Pour pouvoir lire (et écrire) des CD, il est nécessaire d'avoir les droits d'accès au fichier spécial représentant le lecteur (graveur) de CD. Généralement, il s'agit de la cible du lien symbolique /dev/cdrom. La manière la plus simple (et la plus propre) est de s'assurer que la cible de /dev/cdrom est bien accessible en écriture (lecture) pour le groupe cdrom et que l'utilisateur devant l'utiliser appartient bien à ce groupe.

== Lire un CD-DA ==

mplayer cdda://

== Ripper un CD-DA ==

cdparanoia -B

cdda2wav

icedax

== Graver un CD-DA ==

wodim dev=/dev/cdrw *.{wav,au}

gnomebaker (GUI basée entre autre sur wodim, cdrdao et icedax)

== Copier un CD-DA ==

cdrdao

== Obtenir des informations sur le contenu du CD-DA ==
=== cdir ===
La commande cdir du package cdtool permet d'obtenir la durée de chaque piste d'un CD audio :
 %cdir
 unknown cd - 70:32 in 18 tracks
   2:01.42  1 
   3:45.18  2 
   4:30.65  3 
   2:45.17  4 
   4:47.45  5 
   4:22.65  6 
   2:14.05  7 
   4:12.48  8 
   4:15.70  9 
   3:45.30 10 
   3:24.65 11 
   5:09.15 12 
   3:24.72 13 
   3:11.20 14 
   3:18.58 15 
   4:38.25 16 
   6:27.15 17 
   4:14.00 18

[[Catégorie:Multimédia]]

== Références ==
[http://en.wikipedia.org/wiki/Compact_Disc_Digital_Audio Wikipedia: Compact Disk Digital Audio]</text>
      <sha1>1ndx7f6x4ep2323ky6lks7l19xtlhfy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>272</id>
      <parentid>271</parentid>
      <timestamp>2010-01-25T21:34:34Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <minor/>
      <comment>/* Utiliser les CD-DA avec debian */</comment>
      <text xml:space="preserve" bytes="2192">Manipuler des CD audio sous debian peut être un peu déroutant si l'on ne souhaite pas se contenter des outils graphiques et que l'on veut comprendre ce qui se passe.

= Vue générale du CD-DA =

CD-DA est l'acronyme de Compact Disk - Digital Audio. C'est un standard défini dans le '''Red Book''', dont la première édition revient à Philips et Sony en 1980. Le CD-DA n'est pas un standard libre, les droits et le logo associé sont possédés par le groupe Pḧilips.

Le support du CD-DA est le Compact Disk (CD), un média optique permettant de stocker les données sous forme numérique. Les données audio sont stockées sous la forme d'une piste stéréo encodée à une résolution de 16 bits avec une fréquence d'échantillonnage de 44,1 kHz.

= Utiliser les CD-DA avec debian =

Voici quelques outils à utiliser en ligne de commande pour manipuler les CD audio avec debian. Pour pouvoir lire (et écrire) des CD, il est nécessaire d'avoir les droits d'accès au fichier spécial représentant le lecteur (graveur) de CD. Généralement, il s'agit de la cible du lien symbolique /dev/cdrom. La manière la plus simple (et la plus propre) est de s'assurer que la cible de /dev/cdrom est bien accessible en lecture (écriture) pour le groupe cdrom et que l'utilisateur devant l'utiliser appartient bien à ce groupe.

== Lire un CD-DA ==

mplayer cdda://

== Ripper un CD-DA ==

cdparanoia -B

cdda2wav

icedax

== Graver un CD-DA ==

wodim dev=/dev/cdrw *.{wav,au}

gnomebaker (GUI basée entre autre sur wodim, cdrdao et icedax)

== Copier un CD-DA ==

cdrdao

== Obtenir des informations sur le contenu du CD-DA ==
=== cdir ===
La commande cdir du package cdtool permet d'obtenir la durée de chaque piste d'un CD audio :
 %cdir
 unknown cd - 70:32 in 18 tracks
   2:01.42  1 
   3:45.18  2 
   4:30.65  3 
   2:45.17  4 
   4:47.45  5 
   4:22.65  6 
   2:14.05  7 
   4:12.48  8 
   4:15.70  9 
   3:45.30 10 
   3:24.65 11 
   5:09.15 12 
   3:24.72 13 
   3:11.20 14 
   3:18.58 15 
   4:38.25 16 
   6:27.15 17 
   4:14.00 18

[[Catégorie:Multimédia]]

== Références ==
[http://en.wikipedia.org/wiki/Compact_Disc_Digital_Audio Wikipedia: Compact Disk Digital Audio]</text>
      <sha1>mxsfqlw11v4zgujp4sflftim2873fjv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>273</id>
      <parentid>272</parentid>
      <timestamp>2010-01-25T21:38:02Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <comment>/* Références */</comment>
      <text xml:space="preserve" bytes="2296">Manipuler des CD audio sous debian peut être un peu déroutant si l'on ne souhaite pas se contenter des outils graphiques et que l'on veut comprendre ce qui se passe.

= Vue générale du CD-DA =

CD-DA est l'acronyme de Compact Disk - Digital Audio. C'est un standard défini dans le '''Red Book''', dont la première édition revient à Philips et Sony en 1980. Le CD-DA n'est pas un standard libre, les droits et le logo associé sont possédés par le groupe Pḧilips.

Le support du CD-DA est le Compact Disk (CD), un média optique permettant de stocker les données sous forme numérique. Les données audio sont stockées sous la forme d'une piste stéréo encodée à une résolution de 16 bits avec une fréquence d'échantillonnage de 44,1 kHz.

= Utiliser les CD-DA avec debian =

Voici quelques outils à utiliser en ligne de commande pour manipuler les CD audio avec debian. Pour pouvoir lire (et écrire) des CD, il est nécessaire d'avoir les droits d'accès au fichier spécial représentant le lecteur (graveur) de CD. Généralement, il s'agit de la cible du lien symbolique /dev/cdrom. La manière la plus simple (et la plus propre) est de s'assurer que la cible de /dev/cdrom est bien accessible en lecture (écriture) pour le groupe cdrom et que l'utilisateur devant l'utiliser appartient bien à ce groupe.

== Lire un CD-DA ==

mplayer cdda://

== Ripper un CD-DA ==

cdparanoia -B

cdda2wav

icedax

== Graver un CD-DA ==

wodim dev=/dev/cdrw *.{wav,au}

gnomebaker (GUI basée entre autre sur wodim, cdrdao et icedax)

== Copier un CD-DA ==

cdrdao

== Obtenir des informations sur le contenu du CD-DA ==
=== cdir ===
La commande cdir du package cdtool permet d'obtenir la durée de chaque piste d'un CD audio :
 %cdir
 unknown cd - 70:32 in 18 tracks
   2:01.42  1 
   3:45.18  2 
   4:30.65  3 
   2:45.17  4 
   4:47.45  5 
   4:22.65  6 
   2:14.05  7 
   4:12.48  8 
   4:15.70  9 
   3:45.30 10 
   3:24.65 11 
   5:09.15 12 
   3:24.72 13 
   3:11.20 14 
   3:18.58 15 
   4:38.25 16 
   6:27.15 17 
   4:14.00 18

[[Catégorie:Multimédia]]

== Références ==
* [http://en.wikipedia.org/wiki/Compact_Disc_Digital_Audio Wikipedia: Compact Disk Digital Audio]
* [http://tldp.org/HOWTO/MP3-CD-Burning/audio.html TLDP: Linux MP3 CD Burning mini-HOWTO / Audio CDs]</text>
      <sha1>keyocm95raoneurtnidogk6u4ing7w0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>274</id>
      <parentid>273</parentid>
      <timestamp>2010-01-25T22:03:22Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <comment>/* Obtenir des informations sur le contenu du CD-DA */</comment>
      <text xml:space="preserve" bytes="2887">Manipuler des CD audio sous debian peut être un peu déroutant si l'on ne souhaite pas se contenter des outils graphiques et que l'on veut comprendre ce qui se passe.

= Vue générale du CD-DA =

CD-DA est l'acronyme de Compact Disk - Digital Audio. C'est un standard défini dans le '''Red Book''', dont la première édition revient à Philips et Sony en 1980. Le CD-DA n'est pas un standard libre, les droits et le logo associé sont possédés par le groupe Pḧilips.

Le support du CD-DA est le Compact Disk (CD), un média optique permettant de stocker les données sous forme numérique. Les données audio sont stockées sous la forme d'une piste stéréo encodée à une résolution de 16 bits avec une fréquence d'échantillonnage de 44,1 kHz.

= Utiliser les CD-DA avec debian =

Voici quelques outils à utiliser en ligne de commande pour manipuler les CD audio avec debian. Pour pouvoir lire (et écrire) des CD, il est nécessaire d'avoir les droits d'accès au fichier spécial représentant le lecteur (graveur) de CD. Généralement, il s'agit de la cible du lien symbolique /dev/cdrom. La manière la plus simple (et la plus propre) est de s'assurer que la cible de /dev/cdrom est bien accessible en lecture (écriture) pour le groupe cdrom et que l'utilisateur devant l'utiliser appartient bien à ce groupe.

== Lire un CD-DA ==

mplayer cdda://

== Ripper un CD-DA ==

cdparanoia -B

cdda2wav

icedax

== Graver un CD-DA ==

wodim dev=/dev/cdrw *.{wav,au}

gnomebaker (GUI basée entre autre sur wodim, cdrdao et icedax)

== Copier un CD-DA ==

cdrdao

== Obtenir des informations sur le contenu du CD-DA ==
=== CDDB ===
CDDB (Compact Disk DataBase) est une base de donnée permettant d'obtenir des informations telles que le nom de l'artiste, le titre du CD ou le nom des pistes. Pour que cela fonctionne, le CD en question doit être référencé dans la base, ce système n'est donc pas applicable pour des compilations ou des pistes seules. D'autre part, la base de donnée étant en ligne, il est nécessaire d'avoir accès à une connexion internet.

Voici un exemple pour lire un CD audio avec mplayer en fournissant les informations complémentaires fournies par CDDB :
 $ mplayer cddb://

=== cdir ===
La commande cdir du package cdtool permet d'obtenir la durée de chaque piste d'un CD audio :
 $ cdir
 unknown cd - 70:32 in 18 tracks
   2:01.42  1 
   3:45.18  2 
   4:30.65  3 
   2:45.17  4 
   4:47.45  5 
   4:22.65  6 
   2:14.05  7 
   4:12.48  8 
   4:15.70  9 
   3:45.30 10 
   3:24.65 11 
   5:09.15 12 
   3:24.72 13 
   3:11.20 14 
   3:18.58 15 
   4:38.25 16 
   6:27.15 17 
   4:14.00 18

[[Catégorie:Multimédia]]

== Références ==
* [http://en.wikipedia.org/wiki/Compact_Disc_Digital_Audio Wikipedia: Compact Disk Digital Audio]
* [http://tldp.org/HOWTO/MP3-CD-Burning/audio.html TLDP: Linux MP3 CD Burning mini-HOWTO / Audio CDs]</text>
      <sha1>3py5sxtivec3wt7s1kl3ntiu9mis7yl</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>275</id>
      <parentid>274</parentid>
      <timestamp>2010-01-25T22:09:01Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <comment>/* CDDB */</comment>
      <text xml:space="preserve" bytes="3564">Manipuler des CD audio sous debian peut être un peu déroutant si l'on ne souhaite pas se contenter des outils graphiques et que l'on veut comprendre ce qui se passe.

= Vue générale du CD-DA =

CD-DA est l'acronyme de Compact Disk - Digital Audio. C'est un standard défini dans le '''Red Book''', dont la première édition revient à Philips et Sony en 1980. Le CD-DA n'est pas un standard libre, les droits et le logo associé sont possédés par le groupe Pḧilips.

Le support du CD-DA est le Compact Disk (CD), un média optique permettant de stocker les données sous forme numérique. Les données audio sont stockées sous la forme d'une piste stéréo encodée à une résolution de 16 bits avec une fréquence d'échantillonnage de 44,1 kHz.

= Utiliser les CD-DA avec debian =

Voici quelques outils à utiliser en ligne de commande pour manipuler les CD audio avec debian. Pour pouvoir lire (et écrire) des CD, il est nécessaire d'avoir les droits d'accès au fichier spécial représentant le lecteur (graveur) de CD. Généralement, il s'agit de la cible du lien symbolique /dev/cdrom. La manière la plus simple (et la plus propre) est de s'assurer que la cible de /dev/cdrom est bien accessible en lecture (écriture) pour le groupe cdrom et que l'utilisateur devant l'utiliser appartient bien à ce groupe.

== Lire un CD-DA ==

mplayer cdda://

== Ripper un CD-DA ==

cdparanoia -B

cdda2wav

icedax

== Graver un CD-DA ==

wodim dev=/dev/cdrw *.{wav,au}

gnomebaker (GUI basée entre autre sur wodim, cdrdao et icedax)

== Copier un CD-DA ==

cdrdao

== Obtenir des informations sur le contenu du CD-DA ==
=== CDDB ===
CDDB (Compact Disk DataBase) est une base de donnée permettant d'obtenir des informations telles que le nom de l'artiste, le titre du CD ou le nom des pistes. Pour que cela fonctionne, le CD en question doit être référencé dans la base, ce système n'est donc pas applicable pour des compilations ou des pistes seules. D'autre part, la base de donnée étant en ligne, il est nécessaire d'avoir accès à une connexion internet.

Voici un exemple pour lire un CD audio avec mplayer en fournissant les informations complémentaires fournies par CDDB :
 $ mplayer cddb://
 ...
 ================ CD INFO === start =========
  artist=[Queen]
  album=[Queen Rocks]
  genre=[Rock/Classic]
  nb_tracks=10
  length= 36:41.30
   # 1  2:01.43 @     150	[We Will Rock You]
   # 2  3:45.19 @    9267	[Tie Your Mother Down]
   # 3  4:30.66 @   26160	[I Want It All]
   # 4  2:45.18 @   46475	[Seven Seas of Rhye]
   # 5  4:47.46 @   58867	[I Can't Live With You (1997 'Rocks' Retake)]
   # 6  4:22.66 @   80437	[Hammer to Fall]
   # 7  2:14.06 @  100152	[Stone Cold Crazy]
   # 8  4:12.49 @  110207	[Now I'm Here]
   # 9  4:15.71 @  129155	[Fat Bottomed Girls]
   #10  3:45.31 @  148350	[Keep Yourself Alive]
 ================ CD INFO ===  end  =========
 ...

=== cdir ===
La commande cdir du package cdtool permet d'obtenir la durée de chaque piste d'un CD audio :
 $ cdir
 unknown cd - 70:32 in 18 tracks
   2:01.42  1 
   3:45.18  2 
   4:30.65  3 
   2:45.17  4 
   4:47.45  5 
   4:22.65  6 
   2:14.05  7 
   4:12.48  8 
   4:15.70  9 
   3:45.30 10 
   3:24.65 11 
   5:09.15 12 
   3:24.72 13 
   3:11.20 14 
   3:18.58 15 
   4:38.25 16 
   6:27.15 17 
   4:14.00 18

[[Catégorie:Multimédia]]

== Références ==
* [http://en.wikipedia.org/wiki/Compact_Disc_Digital_Audio Wikipedia: Compact Disk Digital Audio]
* [http://tldp.org/HOWTO/MP3-CD-Burning/audio.html TLDP: Linux MP3 CD Burning mini-HOWTO / Audio CDs]</text>
      <sha1>k9slx2bz7cfzxvo1tr4gz2nkhcv1idv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>276</id>
      <parentid>275</parentid>
      <timestamp>2010-01-25T22:12:26Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <comment>/* Références */</comment>
      <text xml:space="preserve" bytes="3618">Manipuler des CD audio sous debian peut être un peu déroutant si l'on ne souhaite pas se contenter des outils graphiques et que l'on veut comprendre ce qui se passe.

= Vue générale du CD-DA =

CD-DA est l'acronyme de Compact Disk - Digital Audio. C'est un standard défini dans le '''Red Book''', dont la première édition revient à Philips et Sony en 1980. Le CD-DA n'est pas un standard libre, les droits et le logo associé sont possédés par le groupe Pḧilips.

Le support du CD-DA est le Compact Disk (CD), un média optique permettant de stocker les données sous forme numérique. Les données audio sont stockées sous la forme d'une piste stéréo encodée à une résolution de 16 bits avec une fréquence d'échantillonnage de 44,1 kHz.

= Utiliser les CD-DA avec debian =

Voici quelques outils à utiliser en ligne de commande pour manipuler les CD audio avec debian. Pour pouvoir lire (et écrire) des CD, il est nécessaire d'avoir les droits d'accès au fichier spécial représentant le lecteur (graveur) de CD. Généralement, il s'agit de la cible du lien symbolique /dev/cdrom. La manière la plus simple (et la plus propre) est de s'assurer que la cible de /dev/cdrom est bien accessible en lecture (écriture) pour le groupe cdrom et que l'utilisateur devant l'utiliser appartient bien à ce groupe.

== Lire un CD-DA ==

mplayer cdda://

== Ripper un CD-DA ==

cdparanoia -B

cdda2wav

icedax

== Graver un CD-DA ==

wodim dev=/dev/cdrw *.{wav,au}

gnomebaker (GUI basée entre autre sur wodim, cdrdao et icedax)

== Copier un CD-DA ==

cdrdao

== Obtenir des informations sur le contenu du CD-DA ==
=== CDDB ===
CDDB (Compact Disk DataBase) est une base de donnée permettant d'obtenir des informations telles que le nom de l'artiste, le titre du CD ou le nom des pistes. Pour que cela fonctionne, le CD en question doit être référencé dans la base, ce système n'est donc pas applicable pour des compilations ou des pistes seules. D'autre part, la base de donnée étant en ligne, il est nécessaire d'avoir accès à une connexion internet.

Voici un exemple pour lire un CD audio avec mplayer en fournissant les informations complémentaires fournies par CDDB :
 $ mplayer cddb://
 ...
 ================ CD INFO === start =========
  artist=[Queen]
  album=[Queen Rocks]
  genre=[Rock/Classic]
  nb_tracks=10
  length= 36:41.30
   # 1  2:01.43 @     150	[We Will Rock You]
   # 2  3:45.19 @    9267	[Tie Your Mother Down]
   # 3  4:30.66 @   26160	[I Want It All]
   # 4  2:45.18 @   46475	[Seven Seas of Rhye]
   # 5  4:47.46 @   58867	[I Can't Live With You (1997 'Rocks' Retake)]
   # 6  4:22.66 @   80437	[Hammer to Fall]
   # 7  2:14.06 @  100152	[Stone Cold Crazy]
   # 8  4:12.49 @  110207	[Now I'm Here]
   # 9  4:15.71 @  129155	[Fat Bottomed Girls]
   #10  3:45.31 @  148350	[Keep Yourself Alive]
 ================ CD INFO ===  end  =========
 ...

=== cdir ===
La commande cdir du package cdtool permet d'obtenir la durée de chaque piste d'un CD audio :
 $ cdir
 unknown cd - 70:32 in 18 tracks
   2:01.42  1 
   3:45.18  2 
   4:30.65  3 
   2:45.17  4 
   4:47.45  5 
   4:22.65  6 
   2:14.05  7 
   4:12.48  8 
   4:15.70  9 
   3:45.30 10 
   3:24.65 11 
   5:09.15 12 
   3:24.72 13 
   3:11.20 14 
   3:18.58 15 
   4:38.25 16 
   6:27.15 17 
   4:14.00 18

[[Catégorie:Multimédia]]

== Références ==
* [http://en.wikipedia.org/wiki/Compact_Disc_Digital_Audio Wikipedia: Compact Disk Digital Audio]
* [http://tldp.org/HOWTO/MP3-CD-Burning/audio.html TLDP: Linux MP3 CD Burning mini-HOWTO / Audio CDs]
* [http://en.wikipedia.org/wiki/CDDB Wikipedia: CDDB]</text>
      <sha1>hrgmljlihyuuggvq1tf33pjrzh1nek9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>277</id>
      <parentid>276</parentid>
      <timestamp>2010-01-25T22:14:33Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <text xml:space="preserve" bytes="3616">Manipuler des CD audio sous debian peut être un peu déroutant si l'on ne souhaite pas se contenter des outils graphiques et que l'on veut comprendre ce qui se passe.

= Vue générale du CD-DA =

CD-DA est l'acronyme de Compact Disk - Digital Audio. C'est un standard défini dans le '''Red Book''', dont la première édition revient à Philips et Sony en 1980. Le CD-DA n'est pas un standard libre, les droits et le logo associé sont possédés par le groupe Pḧilips.

Le support du CD-DA est le Compact Disk (CD), un média optique permettant de stocker les données sous forme numérique. Les données audio sont stockées sous la forme d'une piste stéréo encodée à une résolution de 16 bits avec une fréquence d'échantillonnage de 44,1 kHz.

= Utiliser les CD-DA avec debian =

Voici quelques outils à utiliser en ligne de commande pour manipuler les CD audio avec debian. Pour pouvoir lire (et écrire) des CD, il est nécessaire d'avoir les droits d'accès au fichier spécial représentant le lecteur (graveur) de CD. Généralement, il s'agit de la cible du lien symbolique /dev/cdrom. La manière la plus simple (et la plus propre) est de s'assurer que la cible de /dev/cdrom est bien accessible en lecture (écriture) pour le groupe cdrom et que l'utilisateur devant l'utiliser appartient bien à ce groupe.

== Lire un CD-DA ==

mplayer cdda://

== Ripper un CD-DA ==

cdparanoia -B

cdda2wav

icedax

== Graver un CD-DA ==

wodim dev=/dev/cdrw *.{wav,au}

gnomebaker (GUI basée entre autre sur wodim, cdrdao et icedax)

== Copier un CD-DA ==

cdrdao

== Obtenir des informations sur le contenu du CD-DA ==
=== CDDB ===
CDDB (Compact Disk DataBase) est une base de donnée permettant d'obtenir des informations telles que le nom de l'artiste, le titre du CD ou le nom des pistes. Pour que cela fonctionne, le CD en question doit être référencé dans la base, ce système n'est donc pas applicable pour des compilations ou des pistes seules. D'autre part, la base de donnée étant en ligne, il est nécessaire d'avoir accès à une connexion internet.

Voici un exemple pour lire un CD audio avec mplayer en fournissant les informations complémentaires fournies par CDDB :
 $ mplayer cddb://
 ...
 ================ CD INFO === start =========
  artist=[Queen]
  album=[Queen Rocks]
  genre=[Rock/Classic]
  nb_tracks=10
  length= 36:41.30
   # 1  2:01.43 @     150	[We Will Rock You]
   # 2  3:45.19 @    9267	[Tie Your Mother Down]
   # 3  4:30.66 @   26160	[I Want It All]
   # 4  2:45.18 @   46475	[Seven Seas of Rhye]
   # 5  4:47.46 @   58867	[I Can't Live With You (1997 'Rocks' Retake)]
   # 6  4:22.66 @   80437	[Hammer to Fall]
   # 7  2:14.06 @  100152	[Stone Cold Crazy]
   # 8  4:12.49 @  110207	[Now I'm Here]
   # 9  4:15.71 @  129155	[Fat Bottomed Girls]
   #10  3:45.31 @  148350	[Keep Yourself Alive]
 ================ CD INFO ===  end  =========
 ...

=== cdir ===
La commande cdir du package cdtool permet d'obtenir la durée de chaque piste d'un CD audio :
 $ cdir
 unknown cd - 70:32 in 18 tracks
   2:01.42  1 
   3:45.18  2 
   4:30.65  3 
   2:45.17  4 
   4:47.45  5 
   4:22.65  6 
   2:14.05  7 
   4:12.48  8 
   4:15.70  9 
   3:45.30 10 
   3:24.65 11 
   5:09.15 12 
   3:24.72 13 
   3:11.20 14 
   3:18.58 15 
   4:38.25 16 
   6:27.15 17 
   4:14.00 18

= Références =
* [http://en.wikipedia.org/wiki/Compact_Disc_Digital_Audio Wikipedia: Compact Disk Digital Audio]
* [http://tldp.org/HOWTO/MP3-CD-Burning/audio.html TLDP: Linux MP3 CD Burning mini-HOWTO / Audio CDs]
* [http://en.wikipedia.org/wiki/CDDB Wikipedia: CDDB]

[[Catégorie:Multimédia]]</text>
      <sha1>0zznfgufx5hp9213vr510uzxo5wyq33</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>278</id>
      <parentid>277</parentid>
      <timestamp>2010-01-25T22:21:16Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <comment>/* Obtenir des informations sur le contenu du CD-DA */</comment>
      <text xml:space="preserve" bytes="3624">Manipuler des CD audio sous debian peut être un peu déroutant si l'on ne souhaite pas se contenter des outils graphiques et que l'on veut comprendre ce qui se passe.

= Vue générale du CD-DA =

CD-DA est l'acronyme de Compact Disk - Digital Audio. C'est un standard défini dans le '''Red Book''', dont la première édition revient à Philips et Sony en 1980. Le CD-DA n'est pas un standard libre, les droits et le logo associé sont possédés par le groupe Pḧilips.

Le support du CD-DA est le Compact Disk (CD), un média optique permettant de stocker les données sous forme numérique. Les données audio sont stockées sous la forme d'une piste stéréo encodée à une résolution de 16 bits avec une fréquence d'échantillonnage de 44,1 kHz.

= Utiliser les CD-DA avec debian =

Voici quelques outils à utiliser en ligne de commande pour manipuler les CD audio avec debian. Pour pouvoir lire (et écrire) des CD, il est nécessaire d'avoir les droits d'accès au fichier spécial représentant le lecteur (graveur) de CD. Généralement, il s'agit de la cible du lien symbolique /dev/cdrom. La manière la plus simple (et la plus propre) est de s'assurer que la cible de /dev/cdrom est bien accessible en lecture (écriture) pour le groupe cdrom et que l'utilisateur devant l'utiliser appartient bien à ce groupe.

== Lire un CD-DA ==

mplayer cdda://

== Ripper un CD-DA ==

cdparanoia -B

cdda2wav

icedax

== Graver un CD-DA ==

wodim dev=/dev/cdrw *.{wav,au}

gnomebaker (GUI basée entre autre sur wodim, cdrdao et icedax)

== Copier un CD-DA ==

cdrdao

== Obtenir des informations sur le contenu du CD-DA ==
=== CDDB ===
[[CDDB]] (Compact Disk DataBase) est une base de donnée permettant d'obtenir des informations telles que le nom de l'artiste, le titre du CD ou le nom des pistes. Pour que cela fonctionne, le CD en question doit être référencé dans la base, ce système n'est donc pas applicable pour des compilations ou des pistes seules. D'autre part, la base de donnée étant en ligne, il est nécessaire d'avoir accès à une connexion internet.

Voici un exemple pour lire un CD audio avec [[mplayer]] en fournissant les informations complémentaires fournies par CDDB :
 $ mplayer cddb://
 ...
 ================ CD INFO === start =========
  artist=[Queen]
  album=[Queen Rocks]
  genre=[Rock/Classic]
  nb_tracks=10
  length= 36:41.30
   # 1  2:01.43 @     150	[We Will Rock You]
   # 2  3:45.19 @    9267	[Tie Your Mother Down]
   # 3  4:30.66 @   26160	[I Want It All]
   # 4  2:45.18 @   46475	[Seven Seas of Rhye]
   # 5  4:47.46 @   58867	[I Can't Live With You (1997 'Rocks' Retake)]
   # 6  4:22.66 @   80437	[Hammer to Fall]
   # 7  2:14.06 @  100152	[Stone Cold Crazy]
   # 8  4:12.49 @  110207	[Now I'm Here]
   # 9  4:15.71 @  129155	[Fat Bottomed Girls]
   #10  3:45.31 @  148350	[Keep Yourself Alive]
 ================ CD INFO ===  end  =========
 ...

=== cdir ===
La commande cdir du package cdtool permet d'obtenir la durée de chaque piste d'un CD audio :
 $ cdir
 unknown cd - 70:32 in 18 tracks
   2:01.42  1 
   3:45.18  2 
   4:30.65  3 
   2:45.17  4 
   4:47.45  5 
   4:22.65  6 
   2:14.05  7 
   4:12.48  8 
   4:15.70  9 
   3:45.30 10 
   3:24.65 11 
   5:09.15 12 
   3:24.72 13 
   3:11.20 14 
   3:18.58 15 
   4:38.25 16 
   6:27.15 17 
   4:14.00 18

= Références =
* [http://en.wikipedia.org/wiki/Compact_Disc_Digital_Audio Wikipedia: Compact Disk Digital Audio]
* [http://tldp.org/HOWTO/MP3-CD-Burning/audio.html TLDP: Linux MP3 CD Burning mini-HOWTO / Audio CDs]
* [http://en.wikipedia.org/wiki/CDDB Wikipedia: CDDB]

[[Catégorie:Multimédia]]</text>
      <sha1>45qzj5ovc6f8unra0pnllo1y5anjdse</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>280</id>
      <parentid>278</parentid>
      <timestamp>2010-01-25T22:51:12Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <comment>/* Références */</comment>
      <text xml:space="preserve" bytes="3685">Manipuler des CD audio sous debian peut être un peu déroutant si l'on ne souhaite pas se contenter des outils graphiques et que l'on veut comprendre ce qui se passe.

= Vue générale du CD-DA =

CD-DA est l'acronyme de Compact Disk - Digital Audio. C'est un standard défini dans le '''Red Book''', dont la première édition revient à Philips et Sony en 1980. Le CD-DA n'est pas un standard libre, les droits et le logo associé sont possédés par le groupe Pḧilips.

Le support du CD-DA est le Compact Disk (CD), un média optique permettant de stocker les données sous forme numérique. Les données audio sont stockées sous la forme d'une piste stéréo encodée à une résolution de 16 bits avec une fréquence d'échantillonnage de 44,1 kHz.

= Utiliser les CD-DA avec debian =

Voici quelques outils à utiliser en ligne de commande pour manipuler les CD audio avec debian. Pour pouvoir lire (et écrire) des CD, il est nécessaire d'avoir les droits d'accès au fichier spécial représentant le lecteur (graveur) de CD. Généralement, il s'agit de la cible du lien symbolique /dev/cdrom. La manière la plus simple (et la plus propre) est de s'assurer que la cible de /dev/cdrom est bien accessible en lecture (écriture) pour le groupe cdrom et que l'utilisateur devant l'utiliser appartient bien à ce groupe.

== Lire un CD-DA ==

mplayer cdda://

== Ripper un CD-DA ==

cdparanoia -B

cdda2wav

icedax

== Graver un CD-DA ==

wodim dev=/dev/cdrw *.{wav,au}

gnomebaker (GUI basée entre autre sur wodim, cdrdao et icedax)

== Copier un CD-DA ==

cdrdao

== Obtenir des informations sur le contenu du CD-DA ==
=== CDDB ===
[[CDDB]] (Compact Disk DataBase) est une base de donnée permettant d'obtenir des informations telles que le nom de l'artiste, le titre du CD ou le nom des pistes. Pour que cela fonctionne, le CD en question doit être référencé dans la base, ce système n'est donc pas applicable pour des compilations ou des pistes seules. D'autre part, la base de donnée étant en ligne, il est nécessaire d'avoir accès à une connexion internet.

Voici un exemple pour lire un CD audio avec [[mplayer]] en fournissant les informations complémentaires fournies par CDDB :
 $ mplayer cddb://
 ...
 ================ CD INFO === start =========
  artist=[Queen]
  album=[Queen Rocks]
  genre=[Rock/Classic]
  nb_tracks=10
  length= 36:41.30
   # 1  2:01.43 @     150	[We Will Rock You]
   # 2  3:45.19 @    9267	[Tie Your Mother Down]
   # 3  4:30.66 @   26160	[I Want It All]
   # 4  2:45.18 @   46475	[Seven Seas of Rhye]
   # 5  4:47.46 @   58867	[I Can't Live With You (1997 'Rocks' Retake)]
   # 6  4:22.66 @   80437	[Hammer to Fall]
   # 7  2:14.06 @  100152	[Stone Cold Crazy]
   # 8  4:12.49 @  110207	[Now I'm Here]
   # 9  4:15.71 @  129155	[Fat Bottomed Girls]
   #10  3:45.31 @  148350	[Keep Yourself Alive]
 ================ CD INFO ===  end  =========
 ...

=== cdir ===
La commande cdir du package cdtool permet d'obtenir la durée de chaque piste d'un CD audio :
 $ cdir
 unknown cd - 70:32 in 18 tracks
   2:01.42  1 
   3:45.18  2 
   4:30.65  3 
   2:45.17  4 
   4:47.45  5 
   4:22.65  6 
   2:14.05  7 
   4:12.48  8 
   4:15.70  9 
   3:45.30 10 
   3:24.65 11 
   5:09.15 12 
   3:24.72 13 
   3:11.20 14 
   3:18.58 15 
   4:38.25 16 
   6:27.15 17 
   4:14.00 18

= Références =
* [http://en.wikipedia.org/wiki/Compact_Disc_Digital_Audio Wikipedia: Compact Disk Digital Audio]
* [http://www.tldp.org/HOWTO/CDROM-HOWTO/ TLDP: CDROM-HOWTO]
* [http://tldp.org/HOWTO/MP3-CD-Burning/audio.html TLDP: Linux MP3 CD Burning mini-HOWTO / Audio CDs]
* [http://en.wikipedia.org/wiki/CDDB Wikipedia: CDDB]

[[Catégorie:Multimédia]]</text>
      <sha1>ethejm91fjwmg7vng03igsv5omqz2ws</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>327</id>
      <parentid>280</parentid>
      <timestamp>2010-01-26T15:18:54Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <minor/>
      <comment>/* Vue générale du CD-DA */ mots clés en gras</comment>
      <text xml:space="preserve" bytes="3697">Manipuler des CD audio sous debian peut être un peu déroutant si l'on ne souhaite pas se contenter des outils graphiques et que l'on veut comprendre ce qui se passe.

= Vue générale du CD-DA =

CD-DA est l'acronyme de '''Compact Disk - Digital Audio'''. C'est un standard défini dans le '''Red Book''', dont la première édition revient à Philips et Sony en 1980. Le CD-DA n'est pas un standard libre, les droits et le logo associé sont possédés par le groupe Pḧilips.

Le support du CD-DA est le '''Compact Disk''' (CD), un média optique permettant de stocker les données sous forme numérique. Les données audio sont stockées sous la forme d'une piste stéréo encodée à une résolution de 16 bits avec une fréquence d'échantillonnage de 44,1 kHz.

= Utiliser les CD-DA avec debian =

Voici quelques outils à utiliser en ligne de commande pour manipuler les CD audio avec debian. Pour pouvoir lire (et écrire) des CD, il est nécessaire d'avoir les droits d'accès au fichier spécial représentant le lecteur (graveur) de CD. Généralement, il s'agit de la cible du lien symbolique /dev/cdrom. La manière la plus simple (et la plus propre) est de s'assurer que la cible de /dev/cdrom est bien accessible en lecture (écriture) pour le groupe cdrom et que l'utilisateur devant l'utiliser appartient bien à ce groupe.

== Lire un CD-DA ==

mplayer cdda://

== Ripper un CD-DA ==

cdparanoia -B

cdda2wav

icedax

== Graver un CD-DA ==

wodim dev=/dev/cdrw *.{wav,au}

gnomebaker (GUI basée entre autre sur wodim, cdrdao et icedax)

== Copier un CD-DA ==

cdrdao

== Obtenir des informations sur le contenu du CD-DA ==
=== CDDB ===
[[CDDB]] (Compact Disk DataBase) est une base de donnée permettant d'obtenir des informations telles que le nom de l'artiste, le titre du CD ou le nom des pistes. Pour que cela fonctionne, le CD en question doit être référencé dans la base, ce système n'est donc pas applicable pour des compilations ou des pistes seules. D'autre part, la base de donnée étant en ligne, il est nécessaire d'avoir accès à une connexion internet.

Voici un exemple pour lire un CD audio avec [[mplayer]] en fournissant les informations complémentaires fournies par CDDB :
 $ mplayer cddb://
 ...
 ================ CD INFO === start =========
  artist=[Queen]
  album=[Queen Rocks]
  genre=[Rock/Classic]
  nb_tracks=10
  length= 36:41.30
   # 1  2:01.43 @     150	[We Will Rock You]
   # 2  3:45.19 @    9267	[Tie Your Mother Down]
   # 3  4:30.66 @   26160	[I Want It All]
   # 4  2:45.18 @   46475	[Seven Seas of Rhye]
   # 5  4:47.46 @   58867	[I Can't Live With You (1997 'Rocks' Retake)]
   # 6  4:22.66 @   80437	[Hammer to Fall]
   # 7  2:14.06 @  100152	[Stone Cold Crazy]
   # 8  4:12.49 @  110207	[Now I'm Here]
   # 9  4:15.71 @  129155	[Fat Bottomed Girls]
   #10  3:45.31 @  148350	[Keep Yourself Alive]
 ================ CD INFO ===  end  =========
 ...

=== cdir ===
La commande cdir du package cdtool permet d'obtenir la durée de chaque piste d'un CD audio :
 $ cdir
 unknown cd - 70:32 in 18 tracks
   2:01.42  1 
   3:45.18  2 
   4:30.65  3 
   2:45.17  4 
   4:47.45  5 
   4:22.65  6 
   2:14.05  7 
   4:12.48  8 
   4:15.70  9 
   3:45.30 10 
   3:24.65 11 
   5:09.15 12 
   3:24.72 13 
   3:11.20 14 
   3:18.58 15 
   4:38.25 16 
   6:27.15 17 
   4:14.00 18

= Références =
* [http://en.wikipedia.org/wiki/Compact_Disc_Digital_Audio Wikipedia: Compact Disk Digital Audio]
* [http://www.tldp.org/HOWTO/CDROM-HOWTO/ TLDP: CDROM-HOWTO]
* [http://tldp.org/HOWTO/MP3-CD-Burning/audio.html TLDP: Linux MP3 CD Burning mini-HOWTO / Audio CDs]
* [http://en.wikipedia.org/wiki/CDDB Wikipedia: CDDB]

[[Catégorie:Multimédia]]</text>
      <sha1>eqll0fwj7g7gcnmq4h2jnq8wb84jw4b</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>329</id>
      <parentid>327</parentid>
      <timestamp>2010-01-26T15:28:57Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <comment>ajout logo CD-DA</comment>
      <text xml:space="preserve" bytes="3737">[[Image:150px-CDDAlogo.svg.png|right]]
Manipuler des CD audio sous debian peut être un peu déroutant si l'on ne souhaite pas se contenter des outils graphiques et que l'on veut comprendre ce qui se passe.


= Vue générale du CD-DA =

CD-DA est l'acronyme de '''Compact Disk - Digital Audio'''. C'est un standard défini dans le '''Red Book''', dont la première édition revient à Philips et Sony en 1980. Le CD-DA n'est pas un standard libre, les droits et le logo associé sont possédés par le groupe Pḧilips.

Le support du CD-DA est le '''Compact Disk''' (CD), un média optique permettant de stocker les données sous forme numérique. Les données audio sont stockées sous la forme d'une piste stéréo encodée à une résolution de 16 bits avec une fréquence d'échantillonnage de 44,1 kHz.

= Utiliser les CD-DA avec debian =

Voici quelques outils à utiliser en ligne de commande pour manipuler les CD audio avec debian. Pour pouvoir lire (et écrire) des CD, il est nécessaire d'avoir les droits d'accès au fichier spécial représentant le lecteur (graveur) de CD. Généralement, il s'agit de la cible du lien symbolique /dev/cdrom. La manière la plus simple (et la plus propre) est de s'assurer que la cible de /dev/cdrom est bien accessible en lecture (écriture) pour le groupe cdrom et que l'utilisateur devant l'utiliser appartient bien à ce groupe.

== Lire un CD-DA ==

mplayer cdda://

== Ripper un CD-DA ==

cdparanoia -B

cdda2wav

icedax

== Graver un CD-DA ==

wodim dev=/dev/cdrw *.{wav,au}

gnomebaker (GUI basée entre autre sur wodim, cdrdao et icedax)

== Copier un CD-DA ==

cdrdao

== Obtenir des informations sur le contenu du CD-DA ==
=== CDDB ===
[[CDDB]] (Compact Disk DataBase) est une base de donnée permettant d'obtenir des informations telles que le nom de l'artiste, le titre du CD ou le nom des pistes. Pour que cela fonctionne, le CD en question doit être référencé dans la base, ce système n'est donc pas applicable pour des compilations ou des pistes seules. D'autre part, la base de donnée étant en ligne, il est nécessaire d'avoir accès à une connexion internet.

Voici un exemple pour lire un CD audio avec [[mplayer]] en fournissant les informations complémentaires fournies par CDDB :
 $ mplayer cddb://
 ...
 ================ CD INFO === start =========
  artist=[Queen]
  album=[Queen Rocks]
  genre=[Rock/Classic]
  nb_tracks=10
  length= 36:41.30
   # 1  2:01.43 @     150	[We Will Rock You]
   # 2  3:45.19 @    9267	[Tie Your Mother Down]
   # 3  4:30.66 @   26160	[I Want It All]
   # 4  2:45.18 @   46475	[Seven Seas of Rhye]
   # 5  4:47.46 @   58867	[I Can't Live With You (1997 'Rocks' Retake)]
   # 6  4:22.66 @   80437	[Hammer to Fall]
   # 7  2:14.06 @  100152	[Stone Cold Crazy]
   # 8  4:12.49 @  110207	[Now I'm Here]
   # 9  4:15.71 @  129155	[Fat Bottomed Girls]
   #10  3:45.31 @  148350	[Keep Yourself Alive]
 ================ CD INFO ===  end  =========
 ...

=== cdir ===
La commande cdir du package cdtool permet d'obtenir la durée de chaque piste d'un CD audio :
 $ cdir
 unknown cd - 70:32 in 18 tracks
   2:01.42  1 
   3:45.18  2 
   4:30.65  3 
   2:45.17  4 
   4:47.45  5 
   4:22.65  6 
   2:14.05  7 
   4:12.48  8 
   4:15.70  9 
   3:45.30 10 
   3:24.65 11 
   5:09.15 12 
   3:24.72 13 
   3:11.20 14 
   3:18.58 15 
   4:38.25 16 
   6:27.15 17 
   4:14.00 18

= Références =
* [http://en.wikipedia.org/wiki/Compact_Disc_Digital_Audio Wikipedia: Compact Disk Digital Audio]
* [http://www.tldp.org/HOWTO/CDROM-HOWTO/ TLDP: CDROM-HOWTO]
* [http://tldp.org/HOWTO/MP3-CD-Burning/audio.html TLDP: Linux MP3 CD Burning mini-HOWTO / Audio CDs]
* [http://en.wikipedia.org/wiki/CDDB Wikipedia: CDDB]

[[Catégorie:Multimédia]]</text>
      <sha1>kw2cbpw5ii1jzyzz82bodeckqy55yiu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>333</id>
      <parentid>329</parentid>
      <timestamp>2010-01-26T16:45:19Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <comment>/* Ripper un CD-DA */</comment>
      <text xml:space="preserve" bytes="5376">[[Image:150px-CDDAlogo.svg.png|right]]
Manipuler des CD audio sous debian peut être un peu déroutant si l'on ne souhaite pas se contenter des outils graphiques et que l'on veut comprendre ce qui se passe.


= Vue générale du CD-DA =

CD-DA est l'acronyme de '''Compact Disk - Digital Audio'''. C'est un standard défini dans le '''Red Book''', dont la première édition revient à Philips et Sony en 1980. Le CD-DA n'est pas un standard libre, les droits et le logo associé sont possédés par le groupe Pḧilips.

Le support du CD-DA est le '''Compact Disk''' (CD), un média optique permettant de stocker les données sous forme numérique. Les données audio sont stockées sous la forme d'une piste stéréo encodée à une résolution de 16 bits avec une fréquence d'échantillonnage de 44,1 kHz.

= Utiliser les CD-DA avec debian =

Voici quelques outils à utiliser en ligne de commande pour manipuler les CD audio avec debian. Pour pouvoir lire (et écrire) des CD, il est nécessaire d'avoir les droits d'accès au fichier spécial représentant le lecteur (graveur) de CD. Généralement, il s'agit de la cible du lien symbolique /dev/cdrom. La manière la plus simple (et la plus propre) est de s'assurer que la cible de /dev/cdrom est bien accessible en lecture (écriture) pour le groupe cdrom et que l'utilisateur devant l'utiliser appartient bien à ce groupe.

== Lire un CD-DA ==

mplayer cdda://

== Ripper un CD-DA ==

Ripper un CD consiste à extraire les pistes audio du CD-DA et à les convertir en fichiers audio.
Les données du CD audio n'étant pas organisées en système de fichier (contrairement au CD-ROM),
cela n'a pas de sens d'essayer d'extraire une image ISO d'un CD-DA puisque la norme ISO9660 (ou CDFS)
n'est pas utilisée. On ne peut donc pas &quot;monter&quot; un CD-DA pour acceder directement à son contenu.
Des outils spécialisés sont donc nécessaires pour extraire les données du CD-DA.

Il y a principalement deux modes de copies :
* Un mode de copie similaire à la lecture du CD audio, ou le lecteur fonctionne de manière indépendante et ou le signal est directement récupéré depuis la carte son (à vérifier). Bien que simple et rapide, toute les erreurs de lecture se répercuterons sur l'enregistrement. De plus, une distortion des données audio dû à son traitement intermédiaire par la carte son réduira aussi la qualité du résultat final.
* Un mode de copie numérique, plus lent que le mode précédent mais permettant de restituer le son tel qu'il est encodé sur le CD-DA.

'''cdparanoia''' et '''icedax''' sont deux programmes en ligne de commande permettant d'extraire les données du CD-DA selon la méthode digitale. '''cdparanoia''' est basé sur la '''libcdparanoia''' (notamment utilisée par mplayer) tandis qu''''icedax''' (''InCrEdible Digital Audio eXtractor'') est un dérivé (et remplaçant) de '''cdda2wav'''.

La commande suivante permet d'extraire toutes les pistes d'un CD-DA sous forme de fichiers '''.wav''':
 $ cdparanoia -B

Liste des formats gérés par '''cdparanoia''':
* WAV
* AIFF
* AIFF-C
* format brut (''raw format'')

== Graver un CD-DA ==

wodim dev=/dev/cdrw *.{wav,au}

gnomebaker (GUI basée entre autre sur wodim, cdrdao et icedax)

== Copier un CD-DA ==

cdrdao

== Obtenir des informations sur le contenu du CD-DA ==
=== CDDB ===
[[CDDB]] (Compact Disk DataBase) est une base de donnée permettant d'obtenir des informations telles que le nom de l'artiste, le titre du CD ou le nom des pistes. Pour que cela fonctionne, le CD en question doit être référencé dans la base, ce système n'est donc pas applicable pour des compilations ou des pistes seules. D'autre part, la base de donnée étant en ligne, il est nécessaire d'avoir accès à une connexion internet.

Voici un exemple pour lire un CD audio avec [[mplayer]] en fournissant les informations complémentaires fournies par CDDB :
 $ mplayer cddb://
 ...
 ================ CD INFO === start =========
  artist=[Queen]
  album=[Queen Rocks]
  genre=[Rock/Classic]
  nb_tracks=10
  length= 36:41.30
   # 1  2:01.43 @     150	[We Will Rock You]
   # 2  3:45.19 @    9267	[Tie Your Mother Down]
   # 3  4:30.66 @   26160	[I Want It All]
   # 4  2:45.18 @   46475	[Seven Seas of Rhye]
   # 5  4:47.46 @   58867	[I Can't Live With You (1997 'Rocks' Retake)]
   # 6  4:22.66 @   80437	[Hammer to Fall]
   # 7  2:14.06 @  100152	[Stone Cold Crazy]
   # 8  4:12.49 @  110207	[Now I'm Here]
   # 9  4:15.71 @  129155	[Fat Bottomed Girls]
   #10  3:45.31 @  148350	[Keep Yourself Alive]
 ================ CD INFO ===  end  =========
 ...

=== cdir ===
La commande cdir du package cdtool permet d'obtenir la durée de chaque piste d'un CD audio :
 $ cdir
 unknown cd - 70:32 in 18 tracks
   2:01.42  1 
   3:45.18  2 
   4:30.65  3 
   2:45.17  4 
   4:47.45  5 
   4:22.65  6 
   2:14.05  7 
   4:12.48  8 
   4:15.70  9 
   3:45.30 10 
   3:24.65 11 
   5:09.15 12 
   3:24.72 13 
   3:11.20 14 
   3:18.58 15 
   4:38.25 16 
   6:27.15 17 
   4:14.00 18

= Références =
* [http://en.wikipedia.org/wiki/Compact_Disc_Digital_Audio Wikipedia: Compact Disk Digital Audio]
* [http://www.tldp.org/HOWTO/CDROM-HOWTO/ TLDP: CDROM-HOWTO]
* [http://tldp.org/HOWTO/MP3-CD-Burning/audio.html TLDP: Linux MP3 CD Burning mini-HOWTO / Audio CDs]
* [http://en.wikipedia.org/wiki/CDDB Wikipedia: CDDB]

[[Catégorie:Multimédia]]</text>
      <sha1>49699vihjdnw5vu1ql2zbfzply7wiz3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>334</id>
      <parentid>333</parentid>
      <timestamp>2010-01-26T16:48:16Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <comment>/* Ripper un CD-DA */</comment>
      <text xml:space="preserve" bytes="5571">[[Image:150px-CDDAlogo.svg.png|right]]
Manipuler des CD audio sous debian peut être un peu déroutant si l'on ne souhaite pas se contenter des outils graphiques et que l'on veut comprendre ce qui se passe.


= Vue générale du CD-DA =

CD-DA est l'acronyme de '''Compact Disk - Digital Audio'''. C'est un standard défini dans le '''Red Book''', dont la première édition revient à Philips et Sony en 1980. Le CD-DA n'est pas un standard libre, les droits et le logo associé sont possédés par le groupe Pḧilips.

Le support du CD-DA est le '''Compact Disk''' (CD), un média optique permettant de stocker les données sous forme numérique. Les données audio sont stockées sous la forme d'une piste stéréo encodée à une résolution de 16 bits avec une fréquence d'échantillonnage de 44,1 kHz.

= Utiliser les CD-DA avec debian =

Voici quelques outils à utiliser en ligne de commande pour manipuler les CD audio avec debian. Pour pouvoir lire (et écrire) des CD, il est nécessaire d'avoir les droits d'accès au fichier spécial représentant le lecteur (graveur) de CD. Généralement, il s'agit de la cible du lien symbolique /dev/cdrom. La manière la plus simple (et la plus propre) est de s'assurer que la cible de /dev/cdrom est bien accessible en lecture (écriture) pour le groupe cdrom et que l'utilisateur devant l'utiliser appartient bien à ce groupe.

== Lire un CD-DA ==

mplayer cdda://

== Ripper un CD-DA ==

Ripper un CD consiste à extraire les pistes audio du CD-DA et à les convertir en fichiers audio.
Les données du CD audio n'étant pas organisées en système de fichier (contrairement au CD-ROM),
cela n'a pas de sens d'essayer d'extraire une image ISO d'un CD-DA puisque la norme ISO9660 (ou CDFS)
n'est pas utilisée. On ne peut donc pas &quot;monter&quot; un CD-DA pour acceder directement à son contenu.
Des outils spécialisés sont donc nécessaires pour extraire les données du CD-DA.

Il y a principalement deux modes de copies :
* Un mode de copie similaire à la lecture du CD audio, ou le lecteur fonctionne de manière indépendante et ou le signal est directement récupéré depuis la carte son (à vérifier). Bien que simple et rapide, toute les erreurs de lecture se répercuterons sur l'enregistrement. De plus, une distortion des données audio dû à son traitement intermédiaire par la carte son réduira aussi la qualité du résultat final.
* Un mode de copie numérique, plus lent que le mode précédent mais permettant de restituer le son tel qu'il est encodé sur le CD-DA.

'''cdparanoia''' et '''icedax''' sont deux programmes en ligne de commande permettant d'extraire les données du CD-DA selon la méthode digitale. '''cdparanoia''' est basé sur la '''libcdparanoia''' (notamment utilisée par mplayer) tandis qu''''icedax''' (''InCrEdible Digital Audio eXtractor'') est un dérivé (et remplaçant) de '''cdda2wav'''. '''icedax''' possède des options pour contrôler la qualité du résultat en jouant sur le nombre de canaux et la fréquence d'échantillonage et peut utiliser la '''libcdparanoia''' au besoin.

La commande suivante permet d'extraire toutes les pistes d'un CD-DA sous forme de fichiers '''.wav''':
 $ cdparanoia -B

Liste des formats gérés par '''cdparanoia''':
* WAV
* AIFF
* AIFF-C
* format brut (''raw format'')

== Graver un CD-DA ==

wodim dev=/dev/cdrw *.{wav,au}

gnomebaker (GUI basée entre autre sur wodim, cdrdao et icedax)

== Copier un CD-DA ==

cdrdao

== Obtenir des informations sur le contenu du CD-DA ==
=== CDDB ===
[[CDDB]] (Compact Disk DataBase) est une base de donnée permettant d'obtenir des informations telles que le nom de l'artiste, le titre du CD ou le nom des pistes. Pour que cela fonctionne, le CD en question doit être référencé dans la base, ce système n'est donc pas applicable pour des compilations ou des pistes seules. D'autre part, la base de donnée étant en ligne, il est nécessaire d'avoir accès à une connexion internet.

Voici un exemple pour lire un CD audio avec [[mplayer]] en fournissant les informations complémentaires fournies par CDDB :
 $ mplayer cddb://
 ...
 ================ CD INFO === start =========
  artist=[Queen]
  album=[Queen Rocks]
  genre=[Rock/Classic]
  nb_tracks=10
  length= 36:41.30
   # 1  2:01.43 @     150	[We Will Rock You]
   # 2  3:45.19 @    9267	[Tie Your Mother Down]
   # 3  4:30.66 @   26160	[I Want It All]
   # 4  2:45.18 @   46475	[Seven Seas of Rhye]
   # 5  4:47.46 @   58867	[I Can't Live With You (1997 'Rocks' Retake)]
   # 6  4:22.66 @   80437	[Hammer to Fall]
   # 7  2:14.06 @  100152	[Stone Cold Crazy]
   # 8  4:12.49 @  110207	[Now I'm Here]
   # 9  4:15.71 @  129155	[Fat Bottomed Girls]
   #10  3:45.31 @  148350	[Keep Yourself Alive]
 ================ CD INFO ===  end  =========
 ...

=== cdir ===
La commande cdir du package cdtool permet d'obtenir la durée de chaque piste d'un CD audio :
 $ cdir
 unknown cd - 70:32 in 18 tracks
   2:01.42  1 
   3:45.18  2 
   4:30.65  3 
   2:45.17  4 
   4:47.45  5 
   4:22.65  6 
   2:14.05  7 
   4:12.48  8 
   4:15.70  9 
   3:45.30 10 
   3:24.65 11 
   5:09.15 12 
   3:24.72 13 
   3:11.20 14 
   3:18.58 15 
   4:38.25 16 
   6:27.15 17 
   4:14.00 18

= Références =
* [http://en.wikipedia.org/wiki/Compact_Disc_Digital_Audio Wikipedia: Compact Disk Digital Audio]
* [http://www.tldp.org/HOWTO/CDROM-HOWTO/ TLDP: CDROM-HOWTO]
* [http://tldp.org/HOWTO/MP3-CD-Burning/audio.html TLDP: Linux MP3 CD Burning mini-HOWTO / Audio CDs]
* [http://en.wikipedia.org/wiki/CDDB Wikipedia: CDDB]

[[Catégorie:Multimédia]]</text>
      <sha1>kummymsuyrmah58y2zwpy4qwmhqtnvb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>335</id>
      <parentid>334</parentid>
      <timestamp>2010-01-26T16:51:49Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <comment>/* Ripper un CD-DA */</comment>
      <text xml:space="preserve" bytes="5578">[[Image:150px-CDDAlogo.svg.png|right]]
Manipuler des CD audio sous debian peut être un peu déroutant si l'on ne souhaite pas se contenter des outils graphiques et que l'on veut comprendre ce qui se passe.


= Vue générale du CD-DA =

CD-DA est l'acronyme de '''Compact Disk - Digital Audio'''. C'est un standard défini dans le '''Red Book''', dont la première édition revient à Philips et Sony en 1980. Le CD-DA n'est pas un standard libre, les droits et le logo associé sont possédés par le groupe Pḧilips.

Le support du CD-DA est le '''Compact Disk''' (CD), un média optique permettant de stocker les données sous forme numérique. Les données audio sont stockées sous la forme d'une piste stéréo encodée à une résolution de 16 bits avec une fréquence d'échantillonnage de 44,1 kHz.

= Utiliser les CD-DA avec debian =

Voici quelques outils à utiliser en ligne de commande pour manipuler les CD audio avec debian. Pour pouvoir lire (et écrire) des CD, il est nécessaire d'avoir les droits d'accès au fichier spécial représentant le lecteur (graveur) de CD. Généralement, il s'agit de la cible du lien symbolique /dev/cdrom. La manière la plus simple (et la plus propre) est de s'assurer que la cible de /dev/cdrom est bien accessible en lecture (écriture) pour le groupe cdrom et que l'utilisateur devant l'utiliser appartient bien à ce groupe.

== Lire un CD-DA ==

mplayer cdda://

== Ripper un CD-DA ==

Ripper un CD consiste à extraire les pistes audio du CD-DA et à les convertir en fichiers audio.
Les données du CD audio n'étant pas organisées en système de fichier (contrairement au CD-ROM),
cela n'a pas de sens d'essayer d'extraire une image ISO d'un CD-DA puisque la norme ISO9660 (ou CDFS)
n'est pas utilisée. On ne peut donc pas &quot;monter&quot; un CD-DA pour acceder directement à son contenu.
Des outils spécialisés sont donc nécessaires pour extraire les données du CD-DA.

Il y a principalement deux modes de copies :
* Un mode de copie similaire à la lecture du CD audio, ou le lecteur fonctionne de manière indépendante
et ou le signal est directement récupéré depuis la carte son (à vérifier).
Bien que simple et rapide, toute les erreurs de lecture se répercuterons sur l'enregistrement.
De plus, une distortion des données audio dû à son traitement intermédiaire par la carte son réduira aussi la qualité du résultat final.
* Un mode de copie numérique, plus lent que le mode précédent mais permettant de restituer le son tel qu'il est encodé sur le CD-DA.

'''cdparanoia''' et '''icedax''' sont deux programmes en ligne de commande permettant d'extraire les données du CD-DA selon la méthode digitale. '''cdparanoia''' est basé sur la '''libcdparanoia''' (notamment utilisée par mplayer)
tandis qu''''icedax''' (''InCrEdible Digital Audio eXtractor'') est un dérivé (et remplaçant) de '''cdda2wav'''.
'''icedax''' possède des options pour contrôler la qualité du résultat en jouant sur le nombre de canaux et la fréquence d'échantillonage
et peut se rabattre sur la '''libcdparanoia''' au besoin.

La commande suivante permet d'extraire toutes les pistes d'un CD-DA sous forme de fichiers '''.wav''':
 $ cdparanoia -B

Liste des formats gérés par '''cdparanoia''':
* WAV
* AIFF
* AIFF-C
* format brut (''raw format'')

== Graver un CD-DA ==

wodim dev=/dev/cdrw *.{wav,au}

gnomebaker (GUI basée entre autre sur wodim, cdrdao et icedax)

== Copier un CD-DA ==

cdrdao

== Obtenir des informations sur le contenu du CD-DA ==
=== CDDB ===
[[CDDB]] (Compact Disk DataBase) est une base de donnée permettant d'obtenir des informations telles que le nom de l'artiste, le titre du CD ou le nom des pistes. Pour que cela fonctionne, le CD en question doit être référencé dans la base, ce système n'est donc pas applicable pour des compilations ou des pistes seules. D'autre part, la base de donnée étant en ligne, il est nécessaire d'avoir accès à une connexion internet.

Voici un exemple pour lire un CD audio avec [[mplayer]] en fournissant les informations complémentaires fournies par CDDB :
 $ mplayer cddb://
 ...
 ================ CD INFO === start =========
  artist=[Queen]
  album=[Queen Rocks]
  genre=[Rock/Classic]
  nb_tracks=10
  length= 36:41.30
   # 1  2:01.43 @     150	[We Will Rock You]
   # 2  3:45.19 @    9267	[Tie Your Mother Down]
   # 3  4:30.66 @   26160	[I Want It All]
   # 4  2:45.18 @   46475	[Seven Seas of Rhye]
   # 5  4:47.46 @   58867	[I Can't Live With You (1997 'Rocks' Retake)]
   # 6  4:22.66 @   80437	[Hammer to Fall]
   # 7  2:14.06 @  100152	[Stone Cold Crazy]
   # 8  4:12.49 @  110207	[Now I'm Here]
   # 9  4:15.71 @  129155	[Fat Bottomed Girls]
   #10  3:45.31 @  148350	[Keep Yourself Alive]
 ================ CD INFO ===  end  =========
 ...

=== cdir ===
La commande cdir du package cdtool permet d'obtenir la durée de chaque piste d'un CD audio :
 $ cdir
 unknown cd - 70:32 in 18 tracks
   2:01.42  1 
   3:45.18  2 
   4:30.65  3 
   2:45.17  4 
   4:47.45  5 
   4:22.65  6 
   2:14.05  7 
   4:12.48  8 
   4:15.70  9 
   3:45.30 10 
   3:24.65 11 
   5:09.15 12 
   3:24.72 13 
   3:11.20 14 
   3:18.58 15 
   4:38.25 16 
   6:27.15 17 
   4:14.00 18

= Références =
* [http://en.wikipedia.org/wiki/Compact_Disc_Digital_Audio Wikipedia: Compact Disk Digital Audio]
* [http://www.tldp.org/HOWTO/CDROM-HOWTO/ TLDP: CDROM-HOWTO]
* [http://tldp.org/HOWTO/MP3-CD-Burning/audio.html TLDP: Linux MP3 CD Burning mini-HOWTO / Audio CDs]
* [http://en.wikipedia.org/wiki/CDDB Wikipedia: CDDB]

[[Catégorie:Multimédia]]</text>
      <sha1>b3jozlapny5o72hyix440zlz3xyfzrx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>336</id>
      <parentid>335</parentid>
      <timestamp>2010-01-26T16:52:28Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <comment>/* Ripper un CD-DA */</comment>
      <text xml:space="preserve" bytes="5584">[[Image:150px-CDDAlogo.svg.png|right]]
Manipuler des CD audio sous debian peut être un peu déroutant si l'on ne souhaite pas se contenter des outils graphiques et que l'on veut comprendre ce qui se passe.


= Vue générale du CD-DA =

CD-DA est l'acronyme de '''Compact Disk - Digital Audio'''. C'est un standard défini dans le '''Red Book''', dont la première édition revient à Philips et Sony en 1980. Le CD-DA n'est pas un standard libre, les droits et le logo associé sont possédés par le groupe Pḧilips.

Le support du CD-DA est le '''Compact Disk''' (CD), un média optique permettant de stocker les données sous forme numérique. Les données audio sont stockées sous la forme d'une piste stéréo encodée à une résolution de 16 bits avec une fréquence d'échantillonnage de 44,1 kHz.

= Utiliser les CD-DA avec debian =

Voici quelques outils à utiliser en ligne de commande pour manipuler les CD audio avec debian. Pour pouvoir lire (et écrire) des CD, il est nécessaire d'avoir les droits d'accès au fichier spécial représentant le lecteur (graveur) de CD. Généralement, il s'agit de la cible du lien symbolique /dev/cdrom. La manière la plus simple (et la plus propre) est de s'assurer que la cible de /dev/cdrom est bien accessible en lecture (écriture) pour le groupe cdrom et que l'utilisateur devant l'utiliser appartient bien à ce groupe.

== Lire un CD-DA ==

mplayer cdda://

== Ripper un CD-DA ==

Ripper un CD consiste à extraire les pistes audio du CD-DA et à les convertir en fichiers audio.
Les données du CD audio n'étant pas organisées en système de fichier (contrairement au CD-ROM),
cela n'a pas de sens d'essayer d'extraire une image ISO d'un CD-DA puisque la norme ISO9660 (ou CDFS)
n'est pas utilisée. On ne peut donc pas &quot;monter&quot; un CD-DA pour acceder directement à son contenu.
Des outils spécialisés sont donc nécessaires pour extraire les données du CD-DA.

Il y a principalement deux modes de copies :
* Un mode de copie similaire à la lecture du CD audio, ou le lecteur fonctionne de manière indépendante
et ou le signal est directement récupéré depuis la carte son (à vérifier).
Bien que simple et rapide, toute les erreurs de lecture se répercuterons sur l'enregistrement.
De plus, une distortion des données audio dû à son traitement intermédiaire par la carte son réduira aussi la qualité du résultat final.
* Un mode de copie numérique, plus lent que le mode précédent mais permettant de restituer le son tel qu'il est encodé sur le CD-DA.

'''cdparanoia''' et '''icedax''' sont deux programmes en ligne de commande permettant d'extraire les données du CD-DA selon la méthode digitale. '''cdparanoia''' est basé sur la '''libcdparanoia''' (notamment utilisée par '''mplayer''')
tandis qu''''icedax''' (''InCrEdible Digital Audio eXtractor'') est un dérivé (et remplaçant) de '''cdda2wav'''.
'''icedax''' possède des options pour contrôler la qualité du résultat en jouant sur le nombre de canaux et la fréquence d'échantillonage
et peut se rabattre sur la '''libcdparanoia''' au besoin.

La commande suivante permet d'extraire toutes les pistes d'un CD-DA sous forme de fichiers '''.wav''':
 $ cdparanoia -B

Liste des formats gérés par '''cdparanoia''':
* WAV
* AIFF
* AIFF-C
* format brut (''raw format'')

== Graver un CD-DA ==

wodim dev=/dev/cdrw *.{wav,au}

gnomebaker (GUI basée entre autre sur wodim, cdrdao et icedax)

== Copier un CD-DA ==

cdrdao

== Obtenir des informations sur le contenu du CD-DA ==
=== CDDB ===
[[CDDB]] (Compact Disk DataBase) est une base de donnée permettant d'obtenir des informations telles que le nom de l'artiste, le titre du CD ou le nom des pistes. Pour que cela fonctionne, le CD en question doit être référencé dans la base, ce système n'est donc pas applicable pour des compilations ou des pistes seules. D'autre part, la base de donnée étant en ligne, il est nécessaire d'avoir accès à une connexion internet.

Voici un exemple pour lire un CD audio avec [[mplayer]] en fournissant les informations complémentaires fournies par CDDB :
 $ mplayer cddb://
 ...
 ================ CD INFO === start =========
  artist=[Queen]
  album=[Queen Rocks]
  genre=[Rock/Classic]
  nb_tracks=10
  length= 36:41.30
   # 1  2:01.43 @     150	[We Will Rock You]
   # 2  3:45.19 @    9267	[Tie Your Mother Down]
   # 3  4:30.66 @   26160	[I Want It All]
   # 4  2:45.18 @   46475	[Seven Seas of Rhye]
   # 5  4:47.46 @   58867	[I Can't Live With You (1997 'Rocks' Retake)]
   # 6  4:22.66 @   80437	[Hammer to Fall]
   # 7  2:14.06 @  100152	[Stone Cold Crazy]
   # 8  4:12.49 @  110207	[Now I'm Here]
   # 9  4:15.71 @  129155	[Fat Bottomed Girls]
   #10  3:45.31 @  148350	[Keep Yourself Alive]
 ================ CD INFO ===  end  =========
 ...

=== cdir ===
La commande cdir du package cdtool permet d'obtenir la durée de chaque piste d'un CD audio :
 $ cdir
 unknown cd - 70:32 in 18 tracks
   2:01.42  1 
   3:45.18  2 
   4:30.65  3 
   2:45.17  4 
   4:47.45  5 
   4:22.65  6 
   2:14.05  7 
   4:12.48  8 
   4:15.70  9 
   3:45.30 10 
   3:24.65 11 
   5:09.15 12 
   3:24.72 13 
   3:11.20 14 
   3:18.58 15 
   4:38.25 16 
   6:27.15 17 
   4:14.00 18

= Références =
* [http://en.wikipedia.org/wiki/Compact_Disc_Digital_Audio Wikipedia: Compact Disk Digital Audio]
* [http://www.tldp.org/HOWTO/CDROM-HOWTO/ TLDP: CDROM-HOWTO]
* [http://tldp.org/HOWTO/MP3-CD-Burning/audio.html TLDP: Linux MP3 CD Burning mini-HOWTO / Audio CDs]
* [http://en.wikipedia.org/wiki/CDDB Wikipedia: CDDB]

[[Catégorie:Multimédia]]</text>
      <sha1>cunqa4t9slq8p7stwl96h415na67iuu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>337</id>
      <parentid>336</parentid>
      <timestamp>2010-01-26T16:58:37Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <comment>/* Utiliser les CD-DA avec debian */</comment>
      <text xml:space="preserve" bytes="5602">[[Image:150px-CDDAlogo.svg.png|right]]
Manipuler des CD audio sous debian peut être un peu déroutant si l'on ne souhaite pas se contenter des outils graphiques et que l'on veut comprendre ce qui se passe.


= Vue générale du CD-DA =

CD-DA est l'acronyme de '''Compact Disk - Digital Audio'''. C'est un standard défini dans le '''Red Book''', dont la première édition revient à Philips et Sony en 1980. Le CD-DA n'est pas un standard libre, les droits et le logo associé sont possédés par le groupe Pḧilips.

Le support du CD-DA est le '''Compact Disk''' (CD), un média optique permettant de stocker les données sous forme numérique. Les données audio sont stockées sous la forme d'une piste stéréo encodée à une résolution de 16 bits avec une fréquence d'échantillonnage de 44,1 kHz.

= Utiliser les CD-DA avec debian =

Voici quelques outils à utiliser en ligne de commande pour manipuler les CD audio avec debian. Pour pouvoir lire (et écrire) des CD, il est nécessaire d'avoir les droits d'accès au fichier spécial représentant le lecteur (graveur) de CD. Généralement, il s'agit de la cible du lien symbolique '''/dev/cdrom'''. La manière la plus simple (et la plus propre) est de s'assurer que la cible de '''/dev/cdrom''' est bien accessible en lecture (écriture) pour le groupe '''cdrom''' et que l'utilisateur devant l'utiliser appartient bien à ce groupe.

== Lire un CD-DA ==

mplayer cdda://

== Ripper un CD-DA ==

Ripper un CD consiste à extraire les pistes audio du CD-DA et à les convertir en fichiers audio.
Les données du CD audio n'étant pas organisées en système de fichier (contrairement au CD-ROM),
cela n'a pas de sens d'essayer d'extraire une image ISO d'un CD-DA puisque la norme ISO9660 (ou CDFS)
n'est pas utilisée. On ne peut donc pas &quot;monter&quot; un CD-DA pour acceder directement à son contenu.
Des outils spécialisés sont donc nécessaires pour extraire les données du CD-DA.

Il y a principalement deux modes de copies :
* Un mode de copie similaire à la lecture du CD audio, ou le lecteur fonctionne de manière indépendante
et ou le signal est directement récupéré depuis la carte son (à vérifier).
Bien que simple et rapide, toute les erreurs de lecture se répercuterons sur l'enregistrement.
De plus, une distortion des données audio dû à son traitement intermédiaire par la carte son réduira aussi la qualité du résultat final.
* Un mode de copie numérique, plus lent que le mode précédent mais permettant de restituer le son tel qu'il est encodé sur le CD-DA.

'''cdparanoia''' et '''icedax''' sont deux programmes en ligne de commande permettant d'extraire les données du CD-DA selon la méthode digitale. '''cdparanoia''' est basé sur la '''libcdparanoia''' (notamment utilisée par '''mplayer''')
tandis qu''''icedax''' (''InCrEdible Digital Audio eXtractor'') est un dérivé (et remplaçant) de '''cdda2wav'''.
'''icedax''' possède des options pour contrôler la qualité du résultat en jouant sur le nombre de canaux et la fréquence d'échantillonage
et peut se rabattre sur la '''libcdparanoia''' au besoin.

La commande suivante permet d'extraire toutes les pistes d'un CD-DA sous forme de fichiers '''.wav''':
 $ cdparanoia -B

Liste des formats gérés par '''cdparanoia''':
* WAV
* AIFF
* AIFF-C
* format brut (''raw format'')

== Graver un CD-DA ==

wodim dev=/dev/cdrw *.{wav,au}

gnomebaker (GUI basée entre autre sur wodim, cdrdao et icedax)

== Copier un CD-DA ==

cdrdao

== Obtenir des informations sur le contenu du CD-DA ==
=== CDDB ===
[[CDDB]] (Compact Disk DataBase) est une base de donnée permettant d'obtenir des informations telles que le nom de l'artiste, le titre du CD ou le nom des pistes. Pour que cela fonctionne, le CD en question doit être référencé dans la base, ce système n'est donc pas applicable pour des compilations ou des pistes seules. D'autre part, la base de donnée étant en ligne, il est nécessaire d'avoir accès à une connexion internet.

Voici un exemple pour lire un CD audio avec [[mplayer]] en fournissant les informations complémentaires fournies par CDDB :
 $ mplayer cddb://
 ...
 ================ CD INFO === start =========
  artist=[Queen]
  album=[Queen Rocks]
  genre=[Rock/Classic]
  nb_tracks=10
  length= 36:41.30
   # 1  2:01.43 @     150	[We Will Rock You]
   # 2  3:45.19 @    9267	[Tie Your Mother Down]
   # 3  4:30.66 @   26160	[I Want It All]
   # 4  2:45.18 @   46475	[Seven Seas of Rhye]
   # 5  4:47.46 @   58867	[I Can't Live With You (1997 'Rocks' Retake)]
   # 6  4:22.66 @   80437	[Hammer to Fall]
   # 7  2:14.06 @  100152	[Stone Cold Crazy]
   # 8  4:12.49 @  110207	[Now I'm Here]
   # 9  4:15.71 @  129155	[Fat Bottomed Girls]
   #10  3:45.31 @  148350	[Keep Yourself Alive]
 ================ CD INFO ===  end  =========
 ...

=== cdir ===
La commande cdir du package cdtool permet d'obtenir la durée de chaque piste d'un CD audio :
 $ cdir
 unknown cd - 70:32 in 18 tracks
   2:01.42  1 
   3:45.18  2 
   4:30.65  3 
   2:45.17  4 
   4:47.45  5 
   4:22.65  6 
   2:14.05  7 
   4:12.48  8 
   4:15.70  9 
   3:45.30 10 
   3:24.65 11 
   5:09.15 12 
   3:24.72 13 
   3:11.20 14 
   3:18.58 15 
   4:38.25 16 
   6:27.15 17 
   4:14.00 18

= Références =
* [http://en.wikipedia.org/wiki/Compact_Disc_Digital_Audio Wikipedia: Compact Disk Digital Audio]
* [http://www.tldp.org/HOWTO/CDROM-HOWTO/ TLDP: CDROM-HOWTO]
* [http://tldp.org/HOWTO/MP3-CD-Burning/audio.html TLDP: Linux MP3 CD Burning mini-HOWTO / Audio CDs]
* [http://en.wikipedia.org/wiki/CDDB Wikipedia: CDDB]

[[Catégorie:Multimédia]]</text>
      <sha1>rbajihd97tsiz5tg7wqg5qa32d0vknq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>549</id>
      <parentid>337</parentid>
      <timestamp>2010-01-30T10:19:31Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <minor/>
      <comment>/* Ripper un CD-DA */</comment>
      <text xml:space="preserve" bytes="5602">[[Image:150px-CDDAlogo.svg.png|right]]
Manipuler des CD audio sous debian peut être un peu déroutant si l'on ne souhaite pas se contenter des outils graphiques et que l'on veut comprendre ce qui se passe.


= Vue générale du CD-DA =

CD-DA est l'acronyme de '''Compact Disk - Digital Audio'''. C'est un standard défini dans le '''Red Book''', dont la première édition revient à Philips et Sony en 1980. Le CD-DA n'est pas un standard libre, les droits et le logo associé sont possédés par le groupe Pḧilips.

Le support du CD-DA est le '''Compact Disk''' (CD), un média optique permettant de stocker les données sous forme numérique. Les données audio sont stockées sous la forme d'une piste stéréo encodée à une résolution de 16 bits avec une fréquence d'échantillonnage de 44,1 kHz.

= Utiliser les CD-DA avec debian =

Voici quelques outils à utiliser en ligne de commande pour manipuler les CD audio avec debian. Pour pouvoir lire (et écrire) des CD, il est nécessaire d'avoir les droits d'accès au fichier spécial représentant le lecteur (graveur) de CD. Généralement, il s'agit de la cible du lien symbolique '''/dev/cdrom'''. La manière la plus simple (et la plus propre) est de s'assurer que la cible de '''/dev/cdrom''' est bien accessible en lecture (écriture) pour le groupe '''cdrom''' et que l'utilisateur devant l'utiliser appartient bien à ce groupe.

== Lire un CD-DA ==

mplayer cdda://

== Ripper un CD-DA ==

Ripper un CD consiste à extraire les pistes audio du CD-DA et à les convertir en fichiers audio.
Les données du CD audio n'étant pas organisées en système de fichier (contrairement au CD-ROM),
cela n'a pas de sens d'essayer d'extraire une image ISO d'un CD-DA puisque la norme ISO9660 (ou CDFS)
n'est pas utilisée. On ne peut donc pas &quot;monter&quot; un CD-DA pour acceder directement à son contenu.
Des outils spécialisés sont donc nécessaires pour extraire les données du CD-DA.

Il y a principalement deux modes de copies :
* Un mode de copie similaire à la lecture du CD audio, ou le lecteur fonctionne de manière indépendante et ou le signal est directement récupéré depuis la carte son (à vérifier). Bien que simple et rapide, toute les erreurs de lecture se répercuterons sur l'enregistrement. De plus, une distortion des données audio dû à son traitement intermédiaire par la carte son réduira aussi la qualité du résultat final.
* Un mode de copie numérique, plus lent que le mode précédent mais permettant de restituer le son tel qu'il est encodé sur le CD-DA.

'''cdparanoia''' et '''icedax''' sont deux programmes en ligne de commande permettant d'extraire les données du CD-DA selon la méthode digitale. '''cdparanoia''' est basé sur la '''libcdparanoia''' (notamment utilisée par '''mplayer''')
tandis qu''''icedax''' (''InCrEdible Digital Audio eXtractor'') est un dérivé (et remplaçant) de '''cdda2wav'''.
'''icedax''' possède des options pour contrôler la qualité du résultat en jouant sur le nombre de canaux et la fréquence d'échantillonage
et peut se rabattre sur la '''libcdparanoia''' au besoin.

La commande suivante permet d'extraire toutes les pistes d'un CD-DA sous forme de fichiers '''.wav''':
 $ cdparanoia -B

Liste des formats gérés par '''cdparanoia''':
* WAV
* AIFF
* AIFF-C
* format brut (''raw format'')

== Graver un CD-DA ==

wodim dev=/dev/cdrw *.{wav,au}

gnomebaker (GUI basée entre autre sur wodim, cdrdao et icedax)

== Copier un CD-DA ==

cdrdao

== Obtenir des informations sur le contenu du CD-DA ==
=== CDDB ===
[[CDDB]] (Compact Disk DataBase) est une base de donnée permettant d'obtenir des informations telles que le nom de l'artiste, le titre du CD ou le nom des pistes. Pour que cela fonctionne, le CD en question doit être référencé dans la base, ce système n'est donc pas applicable pour des compilations ou des pistes seules. D'autre part, la base de donnée étant en ligne, il est nécessaire d'avoir accès à une connexion internet.

Voici un exemple pour lire un CD audio avec [[mplayer]] en fournissant les informations complémentaires fournies par CDDB :
 $ mplayer cddb://
 ...
 ================ CD INFO === start =========
  artist=[Queen]
  album=[Queen Rocks]
  genre=[Rock/Classic]
  nb_tracks=10
  length= 36:41.30
   # 1  2:01.43 @     150	[We Will Rock You]
   # 2  3:45.19 @    9267	[Tie Your Mother Down]
   # 3  4:30.66 @   26160	[I Want It All]
   # 4  2:45.18 @   46475	[Seven Seas of Rhye]
   # 5  4:47.46 @   58867	[I Can't Live With You (1997 'Rocks' Retake)]
   # 6  4:22.66 @   80437	[Hammer to Fall]
   # 7  2:14.06 @  100152	[Stone Cold Crazy]
   # 8  4:12.49 @  110207	[Now I'm Here]
   # 9  4:15.71 @  129155	[Fat Bottomed Girls]
   #10  3:45.31 @  148350	[Keep Yourself Alive]
 ================ CD INFO ===  end  =========
 ...

=== cdir ===
La commande cdir du package cdtool permet d'obtenir la durée de chaque piste d'un CD audio :
 $ cdir
 unknown cd - 70:32 in 18 tracks
   2:01.42  1 
   3:45.18  2 
   4:30.65  3 
   2:45.17  4 
   4:47.45  5 
   4:22.65  6 
   2:14.05  7 
   4:12.48  8 
   4:15.70  9 
   3:45.30 10 
   3:24.65 11 
   5:09.15 12 
   3:24.72 13 
   3:11.20 14 
   3:18.58 15 
   4:38.25 16 
   6:27.15 17 
   4:14.00 18

= Références =
* [http://en.wikipedia.org/wiki/Compact_Disc_Digital_Audio Wikipedia: Compact Disk Digital Audio]
* [http://www.tldp.org/HOWTO/CDROM-HOWTO/ TLDP: CDROM-HOWTO]
* [http://tldp.org/HOWTO/MP3-CD-Burning/audio.html TLDP: Linux MP3 CD Burning mini-HOWTO / Audio CDs]
* [http://en.wikipedia.org/wiki/CDDB Wikipedia: CDDB]

[[Catégorie:Multimédia]]</text>
      <sha1>bke48y9tsc4w0bmexaen3dscocnmh6v</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>560</id>
      <parentid>549</parentid>
      <timestamp>2010-01-30T12:11:07Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="5617">[[Image:150px-CDDAlogo.svg.png|right]]
Manipuler des CD audio sous debian peut être un peu déroutant si l'on ne souhaite pas se contenter des outils graphiques et que l'on veut comprendre ce qui se passe.


= Vue générale du CD-DA =

CD-DA est l'acronyme de '''Compact Disk - Digital Audio'''. C'est un standard défini dans le '''Red Book''', dont la première édition revient à Philips et Sony en 1980. Le CD-DA n'est pas un standard libre, les droits et le logo associé sont possédés par le groupe Pḧilips.

Le support du CD-DA est le '''Compact Disk''' (CD), un média optique permettant de stocker les données sous forme numérique. Les données audio sont stockées sous la forme d'une piste stéréo encodée à une résolution de 16 bits avec une fréquence d'échantillonnage de 44,1 kHz.

= Utiliser les CD-DA avec debian =

Voici quelques outils à utiliser en ligne de commande pour manipuler les CD audio avec debian. Pour pouvoir lire (et écrire) des CD, il est nécessaire d'avoir les droits d'accès au fichier spécial représentant le lecteur (graveur) de CD. Généralement, il s'agit de la cible du lien symbolique '''/dev/cdrom'''. La manière la plus simple (et la plus propre) est de s'assurer que la cible de '''/dev/cdrom''' est bien accessible en lecture (écriture) pour le groupe '''cdrom''' et que l'utilisateur devant l'utiliser appartient bien à ce groupe.

== Lire un CD-DA ==

mplayer cdda://

== Ripper un CD-DA ==

Ripper un CD consiste à extraire les pistes audio du CD-DA et à les convertir en fichiers audio.
Les données du CD audio n'étant pas organisées en système de fichier (contrairement au CD-ROM),
cela n'a pas de sens d'essayer d'extraire une image ISO d'un CD-DA puisque la norme ISO9660 (ou CDFS)
n'est pas utilisée. On ne peut donc pas &quot;monter&quot; un CD-DA pour acceder directement à son contenu.
Des outils spécialisés sont donc nécessaires pour extraire les données du CD-DA.

Il y a principalement deux modes de copies :
* Un mode de copie similaire à la lecture du CD audio, ou le lecteur fonctionne de manière indépendante et ou le signal est directement récupéré depuis la carte son (à vérifier). Bien que simple et rapide, toute les erreurs de lecture se répercuterons sur l'enregistrement. De plus, une distortion des données audio dû à son traitement intermédiaire par la carte son réduira aussi la qualité du résultat final.
* Un mode de copie numérique, plus lent que le mode précédent mais permettant de restituer le son tel qu'il est encodé sur le CD-DA.

'''cdparanoia''' et '''icedax''' sont deux programmes en ligne de commande permettant d'extraire les données du CD-DA selon la méthode digitale. '''cdparanoia''' est basé sur la '''libcdparanoia''' (notamment utilisée par '''mplayer''')
tandis qu''''icedax''' (''InCrEdible Digital Audio eXtractor'') est un dérivé (et remplaçant) de '''cdda2wav'''.
'''icedax''' possède des options pour contrôler la qualité du résultat en jouant sur le nombre de canaux et la fréquence d'échantillonage
et peut se rabattre sur la '''libcdparanoia''' au besoin.

La commande suivante permet d'extraire toutes les pistes d'un CD-DA sous forme de fichiers '''.wav''':
 $ cdparanoia -B

Liste des formats gérés par '''cdparanoia''':
* WAV
* AIFF
* AIFF-C
* format brut (''raw format'')

== Graver un CD-DA ==

wodim dev=/dev/cdrw *.{wav,au}

gnomebaker (GUI basée entre autre sur wodim, cdrdao et icedax)

== Copier un CD-DA ==

cdrdao

== Obtenir des informations sur le contenu du CD-DA ==
=== CDDB ===
[[Glossaire#CDDB|CDDB]] (Compact Disk DataBase) est une base de donnée permettant d'obtenir des informations telles que le nom de l'artiste, le titre du CD ou le nom des pistes. Pour que cela fonctionne, le CD en question doit être référencé dans la base, ce système n'est donc pas applicable pour des compilations ou des pistes seules. D'autre part, la base de donnée étant en ligne, il est nécessaire d'avoir accès à une connexion internet.

Voici un exemple pour lire un CD audio avec [[mplayer]] en fournissant les informations complémentaires fournies par CDDB :
 $ mplayer cddb://
 ...
 ================ CD INFO === start =========
  artist=[Queen]
  album=[Queen Rocks]
  genre=[Rock/Classic]
  nb_tracks=10
  length= 36:41.30
   # 1  2:01.43 @     150	[We Will Rock You]
   # 2  3:45.19 @    9267	[Tie Your Mother Down]
   # 3  4:30.66 @   26160	[I Want It All]
   # 4  2:45.18 @   46475	[Seven Seas of Rhye]
   # 5  4:47.46 @   58867	[I Can't Live With You (1997 'Rocks' Retake)]
   # 6  4:22.66 @   80437	[Hammer to Fall]
   # 7  2:14.06 @  100152	[Stone Cold Crazy]
   # 8  4:12.49 @  110207	[Now I'm Here]
   # 9  4:15.71 @  129155	[Fat Bottomed Girls]
   #10  3:45.31 @  148350	[Keep Yourself Alive]
 ================ CD INFO ===  end  =========
 ...

=== cdir ===
La commande cdir du package cdtool permet d'obtenir la durée de chaque piste d'un CD audio :
 $ cdir
 unknown cd - 70:32 in 18 tracks
   2:01.42  1 
   3:45.18  2 
   4:30.65  3 
   2:45.17  4 
   4:47.45  5 
   4:22.65  6 
   2:14.05  7 
   4:12.48  8 
   4:15.70  9 
   3:45.30 10 
   3:24.65 11 
   5:09.15 12 
   3:24.72 13 
   3:11.20 14 
   3:18.58 15 
   4:38.25 16 
   6:27.15 17 
   4:14.00 18

= Références =
* [http://en.wikipedia.org/wiki/Compact_Disc_Digital_Audio Wikipedia: Compact Disk Digital Audio]
* [http://www.tldp.org/HOWTO/CDROM-HOWTO/ TLDP: CDROM-HOWTO]
* [http://tldp.org/HOWTO/MP3-CD-Burning/audio.html TLDP: Linux MP3 CD Burning mini-HOWTO / Audio CDs]
* [http://en.wikipedia.org/wiki/CDDB Wikipedia: CDDB]

[[Catégorie:Multimédia]]</text>
      <sha1>1bjzfp2kqiv99ygayerdnav09qsaz6n</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>564</id>
      <parentid>560</parentid>
      <timestamp>2010-01-30T15:15:02Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <minor/>
      <comment>/* CDDB */</comment>
      <text xml:space="preserve" bytes="5623">[[Image:150px-CDDAlogo.svg.png|right]]
Manipuler des CD audio sous debian peut être un peu déroutant si l'on ne souhaite pas se contenter des outils graphiques et que l'on veut comprendre ce qui se passe.


= Vue générale du CD-DA =

CD-DA est l'acronyme de '''Compact Disk - Digital Audio'''. C'est un standard défini dans le '''Red Book''', dont la première édition revient à Philips et Sony en 1980. Le CD-DA n'est pas un standard libre, les droits et le logo associé sont possédés par le groupe Pḧilips.

Le support du CD-DA est le '''Compact Disk''' (CD), un média optique permettant de stocker les données sous forme numérique. Les données audio sont stockées sous la forme d'une piste stéréo encodée à une résolution de 16 bits avec une fréquence d'échantillonnage de 44,1 kHz.

= Utiliser les CD-DA avec debian =

Voici quelques outils à utiliser en ligne de commande pour manipuler les CD audio avec debian. Pour pouvoir lire (et écrire) des CD, il est nécessaire d'avoir les droits d'accès au fichier spécial représentant le lecteur (graveur) de CD. Généralement, il s'agit de la cible du lien symbolique '''/dev/cdrom'''. La manière la plus simple (et la plus propre) est de s'assurer que la cible de '''/dev/cdrom''' est bien accessible en lecture (écriture) pour le groupe '''cdrom''' et que l'utilisateur devant l'utiliser appartient bien à ce groupe.

== Lire un CD-DA ==

mplayer cdda://

== Ripper un CD-DA ==

Ripper un CD consiste à extraire les pistes audio du CD-DA et à les convertir en fichiers audio.
Les données du CD audio n'étant pas organisées en système de fichier (contrairement au CD-ROM),
cela n'a pas de sens d'essayer d'extraire une image ISO d'un CD-DA puisque la norme ISO9660 (ou CDFS)
n'est pas utilisée. On ne peut donc pas &quot;monter&quot; un CD-DA pour acceder directement à son contenu.
Des outils spécialisés sont donc nécessaires pour extraire les données du CD-DA.

Il y a principalement deux modes de copies :
* Un mode de copie similaire à la lecture du CD audio, ou le lecteur fonctionne de manière indépendante et ou le signal est directement récupéré depuis la carte son (à vérifier). Bien que simple et rapide, toute les erreurs de lecture se répercuterons sur l'enregistrement. De plus, une distortion des données audio dû à son traitement intermédiaire par la carte son réduira aussi la qualité du résultat final.
* Un mode de copie numérique, plus lent que le mode précédent mais permettant de restituer le son tel qu'il est encodé sur le CD-DA.

'''cdparanoia''' et '''icedax''' sont deux programmes en ligne de commande permettant d'extraire les données du CD-DA selon la méthode digitale. '''cdparanoia''' est basé sur la '''libcdparanoia''' (notamment utilisée par '''mplayer''')
tandis qu''''icedax''' (''InCrEdible Digital Audio eXtractor'') est un dérivé (et remplaçant) de '''cdda2wav'''.
'''icedax''' possède des options pour contrôler la qualité du résultat en jouant sur le nombre de canaux et la fréquence d'échantillonage
et peut se rabattre sur la '''libcdparanoia''' au besoin.

La commande suivante permet d'extraire toutes les pistes d'un CD-DA sous forme de fichiers '''.wav''':
 $ cdparanoia -B

Liste des formats gérés par '''cdparanoia''':
* WAV
* AIFF
* AIFF-C
* format brut (''raw format'')

== Graver un CD-DA ==

wodim dev=/dev/cdrw *.{wav,au}

gnomebaker (GUI basée entre autre sur wodim, cdrdao et icedax)

== Copier un CD-DA ==

cdrdao

== Obtenir des informations sur le contenu du CD-DA ==
=== CDDB ===
[[Glossaire#CDDB|CDDB]] (Compact Disk DataBase) est une base de donnée permettant d'obtenir des informations telles que le nom de l'artiste, le titre du CD ou le nom des pistes. Pour que cela fonctionne, le CD en question doit être référencé dans la base, ce système n'est donc pas applicable pour des compilations ou des pistes seules. D'autre part, la base de donnée étant en ligne, il est nécessaire d'avoir accès à une connexion internet.

Voici un exemple pour lire un CD audio avec [[mplayer]] en fournissant les informations complémentaires fournies par CDDB :
 $ '''mplayer cddb://'''
 ...
 ================ CD INFO === start =========
  artist=[Queen]
  album=[Queen Rocks]
  genre=[Rock/Classic]
  nb_tracks=10
  length= 36:41.30
   # 1  2:01.43 @     150	[We Will Rock You]
   # 2  3:45.19 @    9267	[Tie Your Mother Down]
   # 3  4:30.66 @   26160	[I Want It All]
   # 4  2:45.18 @   46475	[Seven Seas of Rhye]
   # 5  4:47.46 @   58867	[I Can't Live With You (1997 'Rocks' Retake)]
   # 6  4:22.66 @   80437	[Hammer to Fall]
   # 7  2:14.06 @  100152	[Stone Cold Crazy]
   # 8  4:12.49 @  110207	[Now I'm Here]
   # 9  4:15.71 @  129155	[Fat Bottomed Girls]
   #10  3:45.31 @  148350	[Keep Yourself Alive]
 ================ CD INFO ===  end  =========
 ...

=== cdir ===
La commande cdir du package cdtool permet d'obtenir la durée de chaque piste d'un CD audio :
 $ cdir
 unknown cd - 70:32 in 18 tracks
   2:01.42  1 
   3:45.18  2 
   4:30.65  3 
   2:45.17  4 
   4:47.45  5 
   4:22.65  6 
   2:14.05  7 
   4:12.48  8 
   4:15.70  9 
   3:45.30 10 
   3:24.65 11 
   5:09.15 12 
   3:24.72 13 
   3:11.20 14 
   3:18.58 15 
   4:38.25 16 
   6:27.15 17 
   4:14.00 18

= Références =
* [http://en.wikipedia.org/wiki/Compact_Disc_Digital_Audio Wikipedia: Compact Disk Digital Audio]
* [http://www.tldp.org/HOWTO/CDROM-HOWTO/ TLDP: CDROM-HOWTO]
* [http://tldp.org/HOWTO/MP3-CD-Burning/audio.html TLDP: Linux MP3 CD Burning mini-HOWTO / Audio CDs]
* [http://en.wikipedia.org/wiki/CDDB Wikipedia: CDDB]

[[Catégorie:Multimédia]]</text>
      <sha1>e1odu6w93qm8p8aao5ssjn93jam38e8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>565</id>
      <parentid>564</parentid>
      <timestamp>2010-01-30T15:15:22Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <minor/>
      <comment>/* cdir */</comment>
      <text xml:space="preserve" bytes="5629">[[Image:150px-CDDAlogo.svg.png|right]]
Manipuler des CD audio sous debian peut être un peu déroutant si l'on ne souhaite pas se contenter des outils graphiques et que l'on veut comprendre ce qui se passe.


= Vue générale du CD-DA =

CD-DA est l'acronyme de '''Compact Disk - Digital Audio'''. C'est un standard défini dans le '''Red Book''', dont la première édition revient à Philips et Sony en 1980. Le CD-DA n'est pas un standard libre, les droits et le logo associé sont possédés par le groupe Pḧilips.

Le support du CD-DA est le '''Compact Disk''' (CD), un média optique permettant de stocker les données sous forme numérique. Les données audio sont stockées sous la forme d'une piste stéréo encodée à une résolution de 16 bits avec une fréquence d'échantillonnage de 44,1 kHz.

= Utiliser les CD-DA avec debian =

Voici quelques outils à utiliser en ligne de commande pour manipuler les CD audio avec debian. Pour pouvoir lire (et écrire) des CD, il est nécessaire d'avoir les droits d'accès au fichier spécial représentant le lecteur (graveur) de CD. Généralement, il s'agit de la cible du lien symbolique '''/dev/cdrom'''. La manière la plus simple (et la plus propre) est de s'assurer que la cible de '''/dev/cdrom''' est bien accessible en lecture (écriture) pour le groupe '''cdrom''' et que l'utilisateur devant l'utiliser appartient bien à ce groupe.

== Lire un CD-DA ==

mplayer cdda://

== Ripper un CD-DA ==

Ripper un CD consiste à extraire les pistes audio du CD-DA et à les convertir en fichiers audio.
Les données du CD audio n'étant pas organisées en système de fichier (contrairement au CD-ROM),
cela n'a pas de sens d'essayer d'extraire une image ISO d'un CD-DA puisque la norme ISO9660 (ou CDFS)
n'est pas utilisée. On ne peut donc pas &quot;monter&quot; un CD-DA pour acceder directement à son contenu.
Des outils spécialisés sont donc nécessaires pour extraire les données du CD-DA.

Il y a principalement deux modes de copies :
* Un mode de copie similaire à la lecture du CD audio, ou le lecteur fonctionne de manière indépendante et ou le signal est directement récupéré depuis la carte son (à vérifier). Bien que simple et rapide, toute les erreurs de lecture se répercuterons sur l'enregistrement. De plus, une distortion des données audio dû à son traitement intermédiaire par la carte son réduira aussi la qualité du résultat final.
* Un mode de copie numérique, plus lent que le mode précédent mais permettant de restituer le son tel qu'il est encodé sur le CD-DA.

'''cdparanoia''' et '''icedax''' sont deux programmes en ligne de commande permettant d'extraire les données du CD-DA selon la méthode digitale. '''cdparanoia''' est basé sur la '''libcdparanoia''' (notamment utilisée par '''mplayer''')
tandis qu''''icedax''' (''InCrEdible Digital Audio eXtractor'') est un dérivé (et remplaçant) de '''cdda2wav'''.
'''icedax''' possède des options pour contrôler la qualité du résultat en jouant sur le nombre de canaux et la fréquence d'échantillonage
et peut se rabattre sur la '''libcdparanoia''' au besoin.

La commande suivante permet d'extraire toutes les pistes d'un CD-DA sous forme de fichiers '''.wav''':
 $ cdparanoia -B

Liste des formats gérés par '''cdparanoia''':
* WAV
* AIFF
* AIFF-C
* format brut (''raw format'')

== Graver un CD-DA ==

wodim dev=/dev/cdrw *.{wav,au}

gnomebaker (GUI basée entre autre sur wodim, cdrdao et icedax)

== Copier un CD-DA ==

cdrdao

== Obtenir des informations sur le contenu du CD-DA ==
=== CDDB ===
[[Glossaire#CDDB|CDDB]] (Compact Disk DataBase) est une base de donnée permettant d'obtenir des informations telles que le nom de l'artiste, le titre du CD ou le nom des pistes. Pour que cela fonctionne, le CD en question doit être référencé dans la base, ce système n'est donc pas applicable pour des compilations ou des pistes seules. D'autre part, la base de donnée étant en ligne, il est nécessaire d'avoir accès à une connexion internet.

Voici un exemple pour lire un CD audio avec [[mplayer]] en fournissant les informations complémentaires fournies par CDDB :
 $ '''mplayer cddb://'''
 ...
 ================ CD INFO === start =========
  artist=[Queen]
  album=[Queen Rocks]
  genre=[Rock/Classic]
  nb_tracks=10
  length= 36:41.30
   # 1  2:01.43 @     150	[We Will Rock You]
   # 2  3:45.19 @    9267	[Tie Your Mother Down]
   # 3  4:30.66 @   26160	[I Want It All]
   # 4  2:45.18 @   46475	[Seven Seas of Rhye]
   # 5  4:47.46 @   58867	[I Can't Live With You (1997 'Rocks' Retake)]
   # 6  4:22.66 @   80437	[Hammer to Fall]
   # 7  2:14.06 @  100152	[Stone Cold Crazy]
   # 8  4:12.49 @  110207	[Now I'm Here]
   # 9  4:15.71 @  129155	[Fat Bottomed Girls]
   #10  3:45.31 @  148350	[Keep Yourself Alive]
 ================ CD INFO ===  end  =========
 ...

=== cdir ===
La commande cdir du package cdtool permet d'obtenir la durée de chaque piste d'un CD audio :
 $ '''cdir'''
 unknown cd - 70:32 in 18 tracks
   2:01.42  1 
   3:45.18  2 
   4:30.65  3 
   2:45.17  4 
   4:47.45  5 
   4:22.65  6 
   2:14.05  7 
   4:12.48  8 
   4:15.70  9 
   3:45.30 10 
   3:24.65 11 
   5:09.15 12 
   3:24.72 13 
   3:11.20 14 
   3:18.58 15 
   4:38.25 16 
   6:27.15 17 
   4:14.00 18

= Références =
* [http://en.wikipedia.org/wiki/Compact_Disc_Digital_Audio Wikipedia: Compact Disk Digital Audio]
* [http://www.tldp.org/HOWTO/CDROM-HOWTO/ TLDP: CDROM-HOWTO]
* [http://tldp.org/HOWTO/MP3-CD-Burning/audio.html TLDP: Linux MP3 CD Burning mini-HOWTO / Audio CDs]
* [http://en.wikipedia.org/wiki/CDDB Wikipedia: CDDB]

[[Catégorie:Multimédia]]</text>
      <sha1>epds19oej869xikctdh1z5p982lr2m0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>566</id>
      <parentid>565</parentid>
      <timestamp>2010-01-30T15:16:08Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <minor/>
      <comment>/* Ripper un CD-DA */</comment>
      <text xml:space="preserve" bytes="5635">[[Image:150px-CDDAlogo.svg.png|right]]
Manipuler des CD audio sous debian peut être un peu déroutant si l'on ne souhaite pas se contenter des outils graphiques et que l'on veut comprendre ce qui se passe.


= Vue générale du CD-DA =

CD-DA est l'acronyme de '''Compact Disk - Digital Audio'''. C'est un standard défini dans le '''Red Book''', dont la première édition revient à Philips et Sony en 1980. Le CD-DA n'est pas un standard libre, les droits et le logo associé sont possédés par le groupe Pḧilips.

Le support du CD-DA est le '''Compact Disk''' (CD), un média optique permettant de stocker les données sous forme numérique. Les données audio sont stockées sous la forme d'une piste stéréo encodée à une résolution de 16 bits avec une fréquence d'échantillonnage de 44,1 kHz.

= Utiliser les CD-DA avec debian =

Voici quelques outils à utiliser en ligne de commande pour manipuler les CD audio avec debian. Pour pouvoir lire (et écrire) des CD, il est nécessaire d'avoir les droits d'accès au fichier spécial représentant le lecteur (graveur) de CD. Généralement, il s'agit de la cible du lien symbolique '''/dev/cdrom'''. La manière la plus simple (et la plus propre) est de s'assurer que la cible de '''/dev/cdrom''' est bien accessible en lecture (écriture) pour le groupe '''cdrom''' et que l'utilisateur devant l'utiliser appartient bien à ce groupe.

== Lire un CD-DA ==

mplayer cdda://

== Ripper un CD-DA ==

Ripper un CD consiste à extraire les pistes audio du CD-DA et à les convertir en fichiers audio.
Les données du CD audio n'étant pas organisées en système de fichier (contrairement au CD-ROM),
cela n'a pas de sens d'essayer d'extraire une image ISO d'un CD-DA puisque la norme ISO9660 (ou CDFS)
n'est pas utilisée. On ne peut donc pas &quot;monter&quot; un CD-DA pour acceder directement à son contenu.
Des outils spécialisés sont donc nécessaires pour extraire les données du CD-DA.

Il y a principalement deux modes de copies :
* Un mode de copie similaire à la lecture du CD audio, ou le lecteur fonctionne de manière indépendante et ou le signal est directement récupéré depuis la carte son (à vérifier). Bien que simple et rapide, toute les erreurs de lecture se répercuterons sur l'enregistrement. De plus, une distortion des données audio dû à son traitement intermédiaire par la carte son réduira aussi la qualité du résultat final.
* Un mode de copie numérique, plus lent que le mode précédent mais permettant de restituer le son tel qu'il est encodé sur le CD-DA.

'''cdparanoia''' et '''icedax''' sont deux programmes en ligne de commande permettant d'extraire les données du CD-DA selon la méthode digitale. '''cdparanoia''' est basé sur la '''libcdparanoia''' (notamment utilisée par '''mplayer''')
tandis qu''''icedax''' (''InCrEdible Digital Audio eXtractor'') est un dérivé (et remplaçant) de '''cdda2wav'''.
'''icedax''' possède des options pour contrôler la qualité du résultat en jouant sur le nombre de canaux et la fréquence d'échantillonage
et peut se rabattre sur la '''libcdparanoia''' au besoin.

La commande suivante permet d'extraire toutes les pistes d'un CD-DA sous forme de fichiers '''.wav''':
 $ '''cdparanoia -B'''

Liste des formats gérés par '''cdparanoia''':
* WAV
* AIFF
* AIFF-C
* format brut (''raw format'')

== Graver un CD-DA ==

wodim dev=/dev/cdrw *.{wav,au}

gnomebaker (GUI basée entre autre sur wodim, cdrdao et icedax)

== Copier un CD-DA ==

cdrdao

== Obtenir des informations sur le contenu du CD-DA ==
=== CDDB ===
[[Glossaire#CDDB|CDDB]] (Compact Disk DataBase) est une base de donnée permettant d'obtenir des informations telles que le nom de l'artiste, le titre du CD ou le nom des pistes. Pour que cela fonctionne, le CD en question doit être référencé dans la base, ce système n'est donc pas applicable pour des compilations ou des pistes seules. D'autre part, la base de donnée étant en ligne, il est nécessaire d'avoir accès à une connexion internet.

Voici un exemple pour lire un CD audio avec [[mplayer]] en fournissant les informations complémentaires fournies par CDDB :
 $ '''mplayer cddb://'''
 ...
 ================ CD INFO === start =========
  artist=[Queen]
  album=[Queen Rocks]
  genre=[Rock/Classic]
  nb_tracks=10
  length= 36:41.30
   # 1  2:01.43 @     150	[We Will Rock You]
   # 2  3:45.19 @    9267	[Tie Your Mother Down]
   # 3  4:30.66 @   26160	[I Want It All]
   # 4  2:45.18 @   46475	[Seven Seas of Rhye]
   # 5  4:47.46 @   58867	[I Can't Live With You (1997 'Rocks' Retake)]
   # 6  4:22.66 @   80437	[Hammer to Fall]
   # 7  2:14.06 @  100152	[Stone Cold Crazy]
   # 8  4:12.49 @  110207	[Now I'm Here]
   # 9  4:15.71 @  129155	[Fat Bottomed Girls]
   #10  3:45.31 @  148350	[Keep Yourself Alive]
 ================ CD INFO ===  end  =========
 ...

=== cdir ===
La commande cdir du package cdtool permet d'obtenir la durée de chaque piste d'un CD audio :
 $ '''cdir'''
 unknown cd - 70:32 in 18 tracks
   2:01.42  1 
   3:45.18  2 
   4:30.65  3 
   2:45.17  4 
   4:47.45  5 
   4:22.65  6 
   2:14.05  7 
   4:12.48  8 
   4:15.70  9 
   3:45.30 10 
   3:24.65 11 
   5:09.15 12 
   3:24.72 13 
   3:11.20 14 
   3:18.58 15 
   4:38.25 16 
   6:27.15 17 
   4:14.00 18

= Références =
* [http://en.wikipedia.org/wiki/Compact_Disc_Digital_Audio Wikipedia: Compact Disk Digital Audio]
* [http://www.tldp.org/HOWTO/CDROM-HOWTO/ TLDP: CDROM-HOWTO]
* [http://tldp.org/HOWTO/MP3-CD-Burning/audio.html TLDP: Linux MP3 CD Burning mini-HOWTO / Audio CDs]
* [http://en.wikipedia.org/wiki/CDDB Wikipedia: CDDB]

[[Catégorie:Multimédia]]</text>
      <sha1>j8333sgbkb9mleei7bdkdx9s02k3ba7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>758</id>
      <parentid>566</parentid>
      <timestamp>2010-02-02T15:04:46Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <comment>/* Lire un CD-DA */ avec vlc</comment>
      <text xml:space="preserve" bytes="6320">[[Image:150px-CDDAlogo.svg.png|right]]
Manipuler des CD audio sous debian peut être un peu déroutant si l'on ne souhaite pas se contenter des outils graphiques et que l'on veut comprendre ce qui se passe.


= Vue générale du CD-DA =

CD-DA est l'acronyme de '''Compact Disk - Digital Audio'''. C'est un standard défini dans le '''Red Book''', dont la première édition revient à Philips et Sony en 1980. Le CD-DA n'est pas un standard libre, les droits et le logo associé sont possédés par le groupe Pḧilips.

Le support du CD-DA est le '''Compact Disk''' (CD), un média optique permettant de stocker les données sous forme numérique. Les données audio sont stockées sous la forme d'une piste stéréo encodée à une résolution de 16 bits avec une fréquence d'échantillonnage de 44,1 kHz.

= Utiliser les CD-DA avec debian =

Voici quelques outils à utiliser en ligne de commande pour manipuler les CD audio avec debian. Pour pouvoir lire (et écrire) des CD, il est nécessaire d'avoir les droits d'accès au fichier spécial représentant le lecteur (graveur) de CD. Généralement, il s'agit de la cible du lien symbolique '''/dev/cdrom'''. La manière la plus simple (et la plus propre) est de s'assurer que la cible de '''/dev/cdrom''' est bien accessible en lecture (écriture) pour le groupe '''cdrom''' et que l'utilisateur devant l'utiliser appartient bien à ce groupe.

== Lire un CD-DA ==
=== VLC media player ===
Pour lire un CD audio avec '''vlc''' en ligne de commande on peut utiliser la commande suivante :
 $ '''cvlc cdda://[périphérique]'''
'''cvlc''' est une version de '''vlc''' sans interface graphique, mais toutes ces commandes restent valides en utilisant '''vlc'''.

Une piste peut être spécifiée avec l'option '''--cdda-track''' :
 $ '''cvlc cdda:// --cdda-track=2'''
À noter qu'avec vlc-1.0.4-2, la syntaxe '''vlc cdda://[périphérique][@piste]''' ne se comporte pas comme précisé dans le wiki de vlc http://wiki.videolan.org/Documentation:Play_HowTo/Advanced_Use_of_VLC#Use_the_command_line qui ne semble pas être à jour.
=== MPlayer ===
 $ '''mplayer cdda://'''

== Ripper un CD-DA ==

Ripper un CD consiste à extraire les pistes audio du CD-DA et à les convertir en fichiers audio.
Les données du CD audio n'étant pas organisées en système de fichier (contrairement au CD-ROM),
cela n'a pas de sens d'essayer d'extraire une image ISO d'un CD-DA puisque la norme ISO9660 (ou CDFS)
n'est pas utilisée. On ne peut donc pas &quot;monter&quot; un CD-DA pour acceder directement à son contenu.
Des outils spécialisés sont donc nécessaires pour extraire les données du CD-DA.

Il y a principalement deux modes de copies :
* Un mode de copie similaire à la lecture du CD audio, ou le lecteur fonctionne de manière indépendante et ou le signal est directement récupéré depuis la carte son (à vérifier). Bien que simple et rapide, toute les erreurs de lecture se répercuterons sur l'enregistrement. De plus, une distortion des données audio dû à son traitement intermédiaire par la carte son réduira aussi la qualité du résultat final.
* Un mode de copie numérique, plus lent que le mode précédent mais permettant de restituer le son tel qu'il est encodé sur le CD-DA.

'''cdparanoia''' et '''icedax''' sont deux programmes en ligne de commande permettant d'extraire les données du CD-DA selon la méthode digitale. '''cdparanoia''' est basé sur la '''libcdparanoia''' (notamment utilisée par '''mplayer''')
tandis qu''''icedax''' (''InCrEdible Digital Audio eXtractor'') est un dérivé (et remplaçant) de '''cdda2wav'''.
'''icedax''' possède des options pour contrôler la qualité du résultat en jouant sur le nombre de canaux et la fréquence d'échantillonage
et peut se rabattre sur la '''libcdparanoia''' au besoin.

La commande suivante permet d'extraire toutes les pistes d'un CD-DA sous forme de fichiers '''.wav''':
 $ '''cdparanoia -B'''

Liste des formats gérés par '''cdparanoia''':
* WAV
* AIFF
* AIFF-C
* format brut (''raw format'')

== Graver un CD-DA ==

wodim dev=/dev/cdrw *.{wav,au}

gnomebaker (GUI basée entre autre sur wodim, cdrdao et icedax)

== Copier un CD-DA ==

cdrdao

== Obtenir des informations sur le contenu du CD-DA ==
=== CDDB ===
[[Glossaire#CDDB|CDDB]] (Compact Disk DataBase) est une base de donnée permettant d'obtenir des informations telles que le nom de l'artiste, le titre du CD ou le nom des pistes. Pour que cela fonctionne, le CD en question doit être référencé dans la base, ce système n'est donc pas applicable pour des compilations ou des pistes seules. D'autre part, la base de donnée étant en ligne, il est nécessaire d'avoir accès à une connexion internet.

Voici un exemple pour lire un CD audio avec [[mplayer]] en fournissant les informations complémentaires fournies par CDDB :
 $ '''mplayer cddb://'''
 ...
 ================ CD INFO === start =========
  artist=[Queen]
  album=[Queen Rocks]
  genre=[Rock/Classic]
  nb_tracks=10
  length= 36:41.30
   # 1  2:01.43 @     150	[We Will Rock You]
   # 2  3:45.19 @    9267	[Tie Your Mother Down]
   # 3  4:30.66 @   26160	[I Want It All]
   # 4  2:45.18 @   46475	[Seven Seas of Rhye]
   # 5  4:47.46 @   58867	[I Can't Live With You (1997 'Rocks' Retake)]
   # 6  4:22.66 @   80437	[Hammer to Fall]
   # 7  2:14.06 @  100152	[Stone Cold Crazy]
   # 8  4:12.49 @  110207	[Now I'm Here]
   # 9  4:15.71 @  129155	[Fat Bottomed Girls]
   #10  3:45.31 @  148350	[Keep Yourself Alive]
 ================ CD INFO ===  end  =========
 ...

=== cdir ===
La commande cdir du package cdtool permet d'obtenir la durée de chaque piste d'un CD audio :
 $ '''cdir'''
 unknown cd - 70:32 in 18 tracks
   2:01.42  1 
   3:45.18  2 
   4:30.65  3 
   2:45.17  4 
   4:47.45  5 
   4:22.65  6 
   2:14.05  7 
   4:12.48  8 
   4:15.70  9 
   3:45.30 10 
   3:24.65 11 
   5:09.15 12 
   3:24.72 13 
   3:11.20 14 
   3:18.58 15 
   4:38.25 16 
   6:27.15 17 
   4:14.00 18

= Références =
* [http://en.wikipedia.org/wiki/Compact_Disc_Digital_Audio Wikipedia: Compact Disk Digital Audio]
* [http://www.tldp.org/HOWTO/CDROM-HOWTO/ TLDP: CDROM-HOWTO]
* [http://tldp.org/HOWTO/MP3-CD-Burning/audio.html TLDP: Linux MP3 CD Burning mini-HOWTO / Audio CDs]
* [http://en.wikipedia.org/wiki/CDDB Wikipedia: CDDB]

[[Catégorie:Multimédia]]</text>
      <sha1>afcm983o4c6b5nlo2ivfg239qp34rtx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>768</id>
      <parentid>758</parentid>
      <timestamp>2010-02-02T18:12:43Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="6321">[[Image:150px-CDDAlogo.svg.png|right]]
Manipuler des CD audio sous debian peut être un peu déroutant si l'on ne souhaite pas se contenter des outils graphiques et que l'on veut comprendre ce qui se passe.


= Vue générale du CD-DA =

CD-DA est l'acronyme de '''Compact Disk - Digital Audio'''. C'est un standard défini dans le '''Red Book''', dont la première édition revient à Philips et Sony en 1980. Le CD-DA n'est pas un standard libre, les droits et le logo associé sont possédés par le groupe Pḧilips.

Le support du CD-DA est le '''Compact Disk''' (CD), un média optique permettant de stocker les données sous forme numérique. Les données audio sont stockées sous la forme d'une piste stéréo encodée à une résolution de 16 bits avec une fréquence d'échantillonnage de 44,1 kHz.

= Utiliser les CD-DA avec debian =

Voici quelques outils à utiliser en ligne de commande pour manipuler les CD audio avec debian. Pour pouvoir lire (et écrire) des CD, il est nécessaire d'avoir les droits d'accès au fichier spécial représentant le lecteur (graveur) de CD. Généralement, il s'agit de la cible du lien symbolique '''/dev/cdrom'''. La manière la plus simple (et la plus propre) est de s'assurer que la cible de '''/dev/cdrom''' est bien accessible en lecture (écriture) pour le groupe '''cdrom''' et que l'utilisateur devant l'utiliser appartient bien à ce groupe.

== Lire un CD-DA ==
=== VLC media player ===
Pour lire un CD audio avec '''vlc''' en ligne de commande on peut utiliser la commande suivante :
 $ '''cvlc cdda://[périphérique]'''
'''cvlc''' est une version de '''vlc''' sans interface graphique, mais toutes ces commandes restent valides en utilisant '''vlc'''.

Une piste peut être spécifiée avec l'option '''--cdda-track''' :
 $ '''cvlc cdda:// --cdda-track=2'''
À noter qu'avec vlc-1.0.4-2, la syntaxe '''vlc cdda://[périphérique][@piste]''' ne se comporte pas comme précisé dans le wiki de vlc http://wiki.videolan.org/Documentation:Play_HowTo/Advanced_Use_of_VLC#Use_the_command_line qui ne semble pas être à jour.
=== MPlayer ===
 $ '''mplayer cdda://'''

== Ripper un CD-DA ==

Ripper un CD consiste à extraire les pistes audio du CD-DA et à les convertir en fichiers audio.
Les données du CD audio n'étant pas organisées en système de fichier (contrairement au CD-ROM),
cela n'a pas de sens d'essayer d'extraire une image ISO d'un CD-DA puisque la norme ISO9660 (ou CDFS)
n'est pas utilisée. On ne peut donc pas &quot;monter&quot; un CD-DA pour acceder directement à son contenu.
Des outils spécialisés sont donc nécessaires pour extraire les données du CD-DA.

Il y a principalement deux modes de copies :
* Un mode de copie similaire à la lecture du CD audio, ou le lecteur fonctionne de manière indépendante et ou le signal est directement récupéré depuis la carte son (à vérifier). Bien que simple et rapide, toute les erreurs de lecture se répercuterons sur l'enregistrement. De plus, une distorsion des données audio dû à son traitement intermédiaire par la carte son réduira aussi la qualité du résultat final.
* Un mode de copie numérique, plus lent que le mode précédent mais permettant de restituer le son tel qu'il est encodé sur le CD-DA.

'''cdparanoia''' et '''icedax''' sont deux programmes en ligne de commande permettant d'extraire les données du CD-DA selon la méthode digitale. '''cdparanoia''' est basé sur la '''libcdparanoia''' (notamment utilisée par '''mplayer''')
tandis qu''''icedax''' (''InCrEdible Digital Audio eXtractor'') est un dérivé (et remplaçant) de '''cdda2wav'''.
'''icedax''' possède des options pour contrôler la qualité du résultat en jouant sur le nombre de canaux et la fréquence d'échantillonnage
et peut se rabattre sur la '''libcdparanoia''' au besoin.

La commande suivante permet d'extraire toutes les pistes d'un CD-DA sous forme de fichiers '''.wav''':
 $ '''cdparanoia -B'''

Liste des formats gérés par '''cdparanoia''':
* WAV
* AIFF
* AIFF-C
* format brut (''raw format'')

== Graver un CD-DA ==

wodim dev=/dev/cdrw *.{wav,au}

gnomebaker (GUI basée entre autre sur wodim, cdrdao et icedax)

== Copier un CD-DA ==

cdrdao

== Obtenir des informations sur le contenu du CD-DA ==
=== CDDB ===
[[Glossaire#CDDB|CDDB]] (Compact Disk DataBase) est une base de donnée permettant d'obtenir des informations telles que le nom de l'artiste, le titre du CD ou le nom des pistes. Pour que cela fonctionne, le CD en question doit être référencé dans la base, ce système n'est donc pas applicable pour des compilations ou des pistes seules. D'autre part, la base de donnée étant en ligne, il est nécessaire d'avoir accès à une connexion internet.

Voici un exemple pour lire un CD audio avec [[mplayer]] en fournissant les informations complémentaires fournies par CDDB :
 $ '''mplayer cddb://'''
 ...
 ================ CD INFO === start =========
  artist=[Queen]
  album=[Queen Rocks]
  genre=[Rock/Classic]
  nb_tracks=10
  length= 36:41.30
   # 1  2:01.43 @     150	[We Will Rock You]
   # 2  3:45.19 @    9267	[Tie Your Mother Down]
   # 3  4:30.66 @   26160	[I Want It All]
   # 4  2:45.18 @   46475	[Seven Seas of Rhye]
   # 5  4:47.46 @   58867	[I Can't Live With You (1997 'Rocks' Retake)]
   # 6  4:22.66 @   80437	[Hammer to Fall]
   # 7  2:14.06 @  100152	[Stone Cold Crazy]
   # 8  4:12.49 @  110207	[Now I'm Here]
   # 9  4:15.71 @  129155	[Fat Bottomed Girls]
   #10  3:45.31 @  148350	[Keep Yourself Alive]
 ================ CD INFO ===  end  =========
 ...

=== cdir ===
La commande cdir du package cdtool permet d'obtenir la durée de chaque piste d'un CD audio :
 $ '''cdir'''
 unknown cd - 70:32 in 18 tracks
   2:01.42  1 
   3:45.18  2 
   4:30.65  3 
   2:45.17  4 
   4:47.45  5 
   4:22.65  6 
   2:14.05  7 
   4:12.48  8 
   4:15.70  9 
   3:45.30 10 
   3:24.65 11 
   5:09.15 12 
   3:24.72 13 
   3:11.20 14 
   3:18.58 15 
   4:38.25 16 
   6:27.15 17 
   4:14.00 18

= Références =
* [http://en.wikipedia.org/wiki/Compact_Disc_Digital_Audio Wikipedia: Compact Disk Digital Audio]
* [http://www.tldp.org/HOWTO/CDROM-HOWTO/ TLDP: CDROM-HOWTO]
* [http://tldp.org/HOWTO/MP3-CD-Burning/audio.html TLDP: Linux MP3 CD Burning mini-HOWTO / Audio CDs]
* [http://en.wikipedia.org/wiki/CDDB Wikipedia: CDDB]

[[Catégorie:Multimédia]]</text>
      <sha1>pu3vw4hshjiodo2oudvirp0px29huei</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>921</id>
      <parentid>768</parentid>
      <timestamp>2010-02-05T20:56:51Z</timestamp>
      <contributor>
        <username>Wetaskiwin</username>
        <id>10</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="6337">[[Image:150px-CDDAlogo.svg.png|right]]
Manipuler des CD audio sous debian peut être un peu déroutant si l'on ne souhaite pas se contenter des outils graphiques et que l'on veut comprendre ce qui se passe.


= Vue générale du CD-DA =

CD-DA est l'acronyme de '''Compact Disk - Digital Audio'''. C'est un standard défini dans le '''Red Book''', dont la première édition revient à Philips et Sony en 1980. Le CD-DA n'est pas un standard libre, les droits et le logo associé sont possédés par le groupe Pḧilips.

Le support du CD-DA est le '''Compact Disk''' (CD), un média optique permettant de stocker les données sous forme numérique. Les données audio sont stockées sous la forme d'une piste stéréo encodée à une résolution de 16 bits avec une fréquence d'échantillonnage de 44,1 kHz.

= Utiliser les CD-DA avec debian =

Voici quelques outils à utiliser en ligne de commande pour manipuler les CD audio avec debian. Pour pouvoir lire (et écrire) des CD, il est nécessaire d'avoir les droits d'accès au fichier spécial représentant le lecteur (graveur) de CD. Généralement, il s'agit de la cible du lien symbolique '''/dev/cdrom'''. La manière la plus simple (et la plus propre) est de s'assurer que la cible de '''/dev/cdrom''' est bien accessible en lecture (écriture) pour le groupe '''cdrom''' et que l'utilisateur devant l'utiliser appartient bien à ce groupe.

== Lire un CD-DA ==
=== VLC media player ===
Pour lire un CD audio avec '''vlc''' en ligne de commande on peut utiliser la commande suivante :
 $ '''cvlc cdda://[périphérique]'''
'''cvlc''' est une version de '''vlc''' sans interface graphique, mais toutes ces commandes restent valides en utilisant '''vlc'''.

Une piste peut être spécifiée avec l'option '''--cdda-track''' :
 $ '''cvlc cdda:// --cdda-track=2'''
À noter qu'avec vlc-1.0.4-2, la syntaxe '''vlc cdda://[périphérique][@piste]''' ne se comporte pas comme précisé dans le wiki de vlc http://wiki.videolan.org/Documentation:Play_HowTo/Advanced_Use_of_VLC#Use_the_command_line qui ne semble pas être à jour.
=== MPlayer ===
 $ '''mplayer cdda://'''

== Ripper un CD-DA  ==

Ripper un CD consiste à extraire les pistes audio du CD-DA et à les convertir en fichiers audio. Les données du CD audio n'étant pas organisées en système de fichier (contrairement au CD-ROM), cela n'a pas de sens d'essayer d'extraire une image ISO d'un CD-DA puisque la norme ISO9660 (ou CDFS) n'est pas utilisée. On ne peut donc pas &quot;monter&quot; un CD-DA pour acceder directement à son contenu. Des outils spécialisés sont donc nécessaires pour extraire les données du CD-DA. 

Il y a principalement deux modes de copies&amp;nbsp;: 

*Un mode de copie similaire à la lecture du CD audio, où le lecteur fonctionne de manière indépendante et où le signal est directement récupéré depuis la carte son (à vérifier). Bien que simple et rapide, toutes les erreurs de lecture se répercuteront sur l'enregistrement. De plus, une distorsion des données audio dûe à son traitement intermédiaire par la carte son réduira aussi la qualité du résultat final. 
*Un mode de copie numérique, plus lent que le mode précédent mais permettant de restituer le son tel qu'il est encodé sur le CD-DA.

'''cdparanoia''' et '''icedax''' sont deux programmes en ligne de commande permettant d'extraire les données du CD-DA selon la méthode digitale. '''cdparanoia''' est basé sur la '''libcdparanoia''' (notamment utilisée par '''mplayer''') tandis qu''''icedax''' (''InCrEdible Digital Audio eXtractor'') est un dérivé (et remplaçant) de '''cdda2wav'''. '''icedax''' possède des options pour contrôler la qualité du résultat en jouant sur le nombre de canaux et la fréquence d'échantillonnage et peut se rabattre sur la '''libcdparanoia''' au besoin. 

La commande suivante permet d'extraire toutes les pistes d'un CD-DA sous forme de fichiers '''.wav''': 

 $ '''cdparanoia -B'''

Liste des formats gérés par '''cdparanoia''': 

*WAV 
*AIFF 
*AIFF-C 
*format brut (''raw format'')

== Graver un CD-DA ==

wodim dev=/dev/cdrw *.{wav,au}

gnomebaker (GUI basée entre autre sur wodim, cdrdao et icedax)

== Copier un CD-DA ==

cdrdao

== Obtenir des informations sur le contenu du CD-DA ==
=== CDDB ===
[[Glossaire#CDDB|CDDB]] (Compact Disk DataBase) est une base de donnée permettant d'obtenir des informations telles que le nom de l'artiste, le titre du CD ou le nom des pistes. Pour que cela fonctionne, le CD en question doit être référencé dans la base, ce système n'est donc pas applicable pour des compilations ou des pistes seules. D'autre part, la base de donnée étant en ligne, il est nécessaire d'avoir accès à une connexion internet.

Voici un exemple pour lire un CD audio avec [[mplayer]] en fournissant les informations complémentaires fournies par CDDB :
 $ '''mplayer cddb://'''
 ...
 ================ CD INFO === start =========
  artist=[Queen]
  album=[Queen Rocks]
  genre=[Rock/Classic]
  nb_tracks=10
  length= 36:41.30
   # 1  2:01.43 @     150	[We Will Rock You]
   # 2  3:45.19 @    9267	[Tie Your Mother Down]
   # 3  4:30.66 @   26160	[I Want It All]
   # 4  2:45.18 @   46475	[Seven Seas of Rhye]
   # 5  4:47.46 @   58867	[I Can't Live With You (1997 'Rocks' Retake)]
   # 6  4:22.66 @   80437	[Hammer to Fall]
   # 7  2:14.06 @  100152	[Stone Cold Crazy]
   # 8  4:12.49 @  110207	[Now I'm Here]
   # 9  4:15.71 @  129155	[Fat Bottomed Girls]
   #10  3:45.31 @  148350	[Keep Yourself Alive]
 ================ CD INFO ===  end  =========
 ...

=== cdir ===
La commande cdir du package cdtool permet d'obtenir la durée de chaque piste d'un CD audio :
 $ '''cdir'''
 unknown cd - 70:32 in 18 tracks
   2:01.42  1 
   3:45.18  2 
   4:30.65  3 
   2:45.17  4 
   4:47.45  5 
   4:22.65  6 
   2:14.05  7 
   4:12.48  8 
   4:15.70  9 
   3:45.30 10 
   3:24.65 11 
   5:09.15 12 
   3:24.72 13 
   3:11.20 14 
   3:18.58 15 
   4:38.25 16 
   6:27.15 17 
   4:14.00 18

= Références =
* [http://en.wikipedia.org/wiki/Compact_Disc_Digital_Audio Wikipedia: Compact Disk Digital Audio]
* [http://www.tldp.org/HOWTO/CDROM-HOWTO/ TLDP: CDROM-HOWTO]
* [http://tldp.org/HOWTO/MP3-CD-Burning/audio.html TLDP: Linux MP3 CD Burning mini-HOWTO / Audio CDs]
* [http://en.wikipedia.org/wiki/CDDB Wikipedia: CDDB]

[[Catégorie:Multimédia]]</text>
      <sha1>13ycn14ijz739si572zxgd8bygxr5qb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1046</id>
      <parentid>921</parentid>
      <timestamp>2010-02-08T08:11:06Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <comment>réorganisation + ajout paragraphe GNOME</comment>
      <text xml:space="preserve" bytes="7200">[[Image:150px-CDDAlogo.svg.png|right]]
Manipuler des CD audio sous debian peut être un peu déroutant si l'on ne souhaite pas se contenter des outils graphiques et que l'on veut comprendre ce qui se passe.


= Vue générale du CD-DA =

CD-DA est l'acronyme de '''Compact Disk - Digital Audio'''. C'est un standard défini dans le '''Red Book''', dont la première édition revient à Philips et Sony en 1980. Le CD-DA n'est pas un standard libre, les droits et le logo associé sont possédés par le groupe Pḧilips.

Le support du CD-DA est le '''Compact Disk''' (CD), un média optique permettant de stocker les données sous forme numérique. Les données audio sont stockées sous la forme d'une piste stéréo encodée à une résolution de 16 bits avec une fréquence d'échantillonnage de 44,1 kHz.

= Utiliser les CD-DA avec GNOME =

Depuis la version 2.22 de [[GNOME]],
le navigateur de fichier [[nautilus]] présente le contenu d'un CD audio comme des fichiers WAV.
Ces fichiers sont facilement manipulables avec les opérations classiques de [[nautilus]],
une extraction de piste se résume donc à un simple copier-coller.

Techniquement, [[GNOME]] s'appuie sur [[GVFS]] (successeur de [[GNOME-VFS]])
qui est une abstraction présentant le contenu des périphériques réseau et multimédia dans un système de fichier.
[[GVFS]] s'appuie sur '''libcdio-cdda0''' [http://packages.debian.org/fr/lenny/libcdio-cdda0]
et '''libcdio-paranoia0''' [http://packages.debian.org/fr/lenny/libcdio-paranoia0] pour ses accès aux CD audios.
Il utilise son propre exécutable '''/usr/lib/gvfs/gvfsd-cdda''' pour l'extraction des pistes de CD audio.

= Utiliser les CD-DA en ligne de commande =
libcdio-cdda0
Voici quelques outils à utiliser en ligne de commande pour manipuler les CD audio avec debian. Pour pouvoir lire (et écrire) des CD, il est nécessaire d'avoir les droits d'accès au fichier spécial représentant le lecteur (graveur) de CD. Généralement, il s'agit de la cible du lien symbolique '''/dev/cdrom'''. La manière la plus simple (et la plus propre) est de s'assurer que la cible de '''/dev/cdrom''' est bien accessible en lecture (écriture) pour le groupe '''cdrom''' et que l'utilisateur devant l'utiliser appartient bien à ce groupe.

== Lire un CD-DA ==
=== VLC media player ===
Pour lire un CD audio avec '''vlc''' en ligne de commande on peut utiliser la commande suivante :
 $ '''cvlc cdda://[périphérique]'''
'''cvlc''' est une version de '''vlc''' sans interface graphique, mais toutes ces commandes restent valides en utilisant '''vlc'''.

Une piste peut être spécifiée avec l'option '''--cdda-track''' :
 $ '''cvlc cdda:// --cdda-track=2'''
À noter qu'avec vlc-1.0.4-2, la syntaxe '''vlc cdda://[périphérique][@piste]''' ne se comporte pas comme précisé dans le wiki de vlc http://wiki.videolan.org/Documentation:Play_HowTo/Advanced_Use_of_VLC#Use_the_command_line qui ne semble pas être à jour.
=== MPlayer ===
 $ '''mplayer cdda://'''

== Ripper un CD-DA  ==

Ripper un CD consiste à extraire les pistes audio du CD-DA et à les convertir en fichiers audio. Les données du CD audio n'étant pas organisées en système de fichier (contrairement au CD-ROM), cela n'a pas de sens d'essayer d'extraire une image ISO d'un CD-DA puisque la norme ISO9660 (ou CDFS) n'est pas utilisée. On ne peut donc pas &quot;monter&quot; un CD-DA pour acceder directement à son contenu. Des outils spécialisés sont donc nécessaires pour extraire les données du CD-DA. 

Il y a principalement deux modes de copies&amp;nbsp;: 

*Un mode de copie similaire à la lecture du CD audio, où le lecteur fonctionne de manière indépendante et où le signal est directement récupéré depuis la carte son (à vérifier). Bien que simple et rapide, toutes les erreurs de lecture se répercuteront sur l'enregistrement. De plus, une distorsion des données audio dûe à son traitement intermédiaire par la carte son réduira aussi la qualité du résultat final. 
*Un mode de copie numérique, plus lent que le mode précédent mais permettant de restituer le son tel qu'il est encodé sur le CD-DA.

'''cdparanoia''' et '''icedax''' sont deux programmes en ligne de commande permettant d'extraire les données du CD-DA selon la méthode digitale. '''cdparanoia''' est basé sur la '''libcdparanoia''' (notamment utilisée par '''mplayer''') tandis qu''''icedax''' (''InCrEdible Digital Audio eXtractor'') est un dérivé (et remplaçant) de '''cdda2wav'''. '''icedax''' possède des options pour contrôler la qualité du résultat en jouant sur le nombre de canaux et la fréquence d'échantillonnage et peut se rabattre sur la '''libcdparanoia''' au besoin. 

La commande suivante permet d'extraire toutes les pistes d'un CD-DA sous forme de fichiers '''.wav''': 

 $ '''cdparanoia -B'''

Liste des formats gérés par '''cdparanoia''': 

*WAV 
*AIFF 
*AIFF-C 
*format brut (''raw format'')

== Graver un CD-DA ==

wodim dev=/dev/cdrw *.{wav,au}

gnomebaker (GUI basée entre autre sur wodim, cdrdao et icedax)

== Copier un CD-DA ==

cdrdao

== Obtenir des informations sur le contenu du CD-DA ==
=== CDDB ===
[[Glossaire#CDDB|CDDB]] (Compact Disk DataBase) est une base de donnée permettant d'obtenir des informations telles que le nom de l'artiste, le titre du CD ou le nom des pistes. Pour que cela fonctionne, le CD en question doit être référencé dans la base, ce système n'est donc pas applicable pour des compilations ou des pistes seules. D'autre part, la base de donnée étant en ligne, il est nécessaire d'avoir accès à une connexion internet.

Voici un exemple pour lire un CD audio avec [[mplayer]] en fournissant les informations complémentaires fournies par CDDB :
 $ '''mplayer cddb://'''
 ...
 ================ CD INFO === start =========
  artist=[Queen]
  album=[Queen Rocks]
  genre=[Rock/Classic]
  nb_tracks=10
  length= 36:41.30
   # 1  2:01.43 @     150	[We Will Rock You]
   # 2  3:45.19 @    9267	[Tie Your Mother Down]
   # 3  4:30.66 @   26160	[I Want It All]
   # 4  2:45.18 @   46475	[Seven Seas of Rhye]
   # 5  4:47.46 @   58867	[I Can't Live With You (1997 'Rocks' Retake)]
   # 6  4:22.66 @   80437	[Hammer to Fall]
   # 7  2:14.06 @  100152	[Stone Cold Crazy]
   # 8  4:12.49 @  110207	[Now I'm Here]
   # 9  4:15.71 @  129155	[Fat Bottomed Girls]
   #10  3:45.31 @  148350	[Keep Yourself Alive]
 ================ CD INFO ===  end  =========
 ...

=== cdir ===
La commande cdir du package cdtool permet d'obtenir la durée de chaque piste d'un CD audio :
 $ '''cdir'''
 unknown cd - 70:32 in 18 tracks
   2:01.42  1 
   3:45.18  2 
   4:30.65  3 
   2:45.17  4 
   4:47.45  5 
   4:22.65  6 
   2:14.05  7 
   4:12.48  8 
   4:15.70  9 
   3:45.30 10 
   3:24.65 11 
   5:09.15 12 
   3:24.72 13 
   3:11.20 14 
   3:18.58 15 
   4:38.25 16 
   6:27.15 17 
   4:14.00 18

= Références =
* [http://en.wikipedia.org/wiki/Compact_Disc_Digital_Audio Wikipedia: Compact Disk Digital Audio]
* [http://www.tldp.org/HOWTO/CDROM-HOWTO/ TLDP: CDROM-HOWTO]
* [http://tldp.org/HOWTO/MP3-CD-Burning/audio.html TLDP: Linux MP3 CD Burning mini-HOWTO / Audio CDs]
* [http://en.wikipedia.org/wiki/CDDB Wikipedia: CDDB]

[[Catégorie:Multimédia]]</text>
      <sha1>5001g1ct269xa23gr26anj5qe32p1m3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1047</id>
      <parentid>1046</parentid>
      <timestamp>2010-02-08T08:22:36Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <comment>/* Lire un CD-DA */ modifs esthétiques</comment>
      <text xml:space="preserve" bytes="7202">[[Image:150px-CDDAlogo.svg.png|right]]
Manipuler des CD audio sous debian peut être un peu déroutant si l'on ne souhaite pas se contenter des outils graphiques et que l'on veut comprendre ce qui se passe.


= Vue générale du CD-DA =

CD-DA est l'acronyme de '''Compact Disk - Digital Audio'''. C'est un standard défini dans le '''Red Book''', dont la première édition revient à Philips et Sony en 1980. Le CD-DA n'est pas un standard libre, les droits et le logo associé sont possédés par le groupe Pḧilips.

Le support du CD-DA est le '''Compact Disk''' (CD), un média optique permettant de stocker les données sous forme numérique. Les données audio sont stockées sous la forme d'une piste stéréo encodée à une résolution de 16 bits avec une fréquence d'échantillonnage de 44,1 kHz.

= Utiliser les CD-DA avec GNOME =

Depuis la version 2.22 de [[GNOME]],
le navigateur de fichier [[nautilus]] présente le contenu d'un CD audio comme des fichiers WAV.
Ces fichiers sont facilement manipulables avec les opérations classiques de [[nautilus]],
une extraction de piste se résume donc à un simple copier-coller.

Techniquement, [[GNOME]] s'appuie sur [[GVFS]] (successeur de [[GNOME-VFS]])
qui est une abstraction présentant le contenu des périphériques réseau et multimédia dans un système de fichier.
[[GVFS]] s'appuie sur '''libcdio-cdda0''' [http://packages.debian.org/fr/lenny/libcdio-cdda0]
et '''libcdio-paranoia0''' [http://packages.debian.org/fr/lenny/libcdio-paranoia0] pour ses accès aux CD audios.
Il utilise son propre exécutable '''/usr/lib/gvfs/gvfsd-cdda''' pour l'extraction des pistes de CD audio.

= Utiliser les CD-DA en ligne de commande =
libcdio-cdda0
Voici quelques outils à utiliser en ligne de commande pour manipuler les CD audio avec debian. Pour pouvoir lire (et écrire) des CD, il est nécessaire d'avoir les droits d'accès au fichier spécial représentant le lecteur (graveur) de CD. Généralement, il s'agit de la cible du lien symbolique '''/dev/cdrom'''. La manière la plus simple (et la plus propre) est de s'assurer que la cible de '''/dev/cdrom''' est bien accessible en lecture (écriture) pour le groupe '''cdrom''' et que l'utilisateur devant l'utiliser appartient bien à ce groupe.

== Lire un CD-DA ==
=== VLC media player ===
Pour lire un CD audio avec '''vlc''' en ligne de commande on peut utiliser la commande suivante :
 $ '''cvlc cdda://[périphérique]'''
'''cvlc''' est une version de '''vlc''' sans interface graphique, mais toutes ces commandes restent valides en utilisant '''vlc'''.

Une piste peut être spécifiée avec l'option '''--cdda-track''' :
 $ '''cvlc cdda:// --cdda-track=2'''
À noter qu'avec vlc-1.0.4-2, la syntaxe '''vlc cdda://[périphérique][@piste]''' ne se comporte pas comme précisé dans le wiki de vlc [http://wiki.videolan.org/Documentation:Play_HowTo/Advanced_Use_of_VLC#Use_the_command_line] qui ne semble pas être à jour.
=== MPlayer ===
 $ '''mplayer cdda://'''

== Ripper un CD-DA  ==

Ripper un CD consiste à extraire les pistes audio du CD-DA et à les convertir en fichiers audio. Les données du CD audio n'étant pas organisées en système de fichier (contrairement au CD-ROM), cela n'a pas de sens d'essayer d'extraire une image ISO d'un CD-DA puisque la norme ISO9660 (ou CDFS) n'est pas utilisée. On ne peut donc pas &quot;monter&quot; un CD-DA pour acceder directement à son contenu. Des outils spécialisés sont donc nécessaires pour extraire les données du CD-DA. 

Il y a principalement deux modes de copies&amp;nbsp;: 

*Un mode de copie similaire à la lecture du CD audio, où le lecteur fonctionne de manière indépendante et où le signal est directement récupéré depuis la carte son (à vérifier). Bien que simple et rapide, toutes les erreurs de lecture se répercuteront sur l'enregistrement. De plus, une distorsion des données audio dûe à son traitement intermédiaire par la carte son réduira aussi la qualité du résultat final. 
*Un mode de copie numérique, plus lent que le mode précédent mais permettant de restituer le son tel qu'il est encodé sur le CD-DA.

'''cdparanoia''' et '''icedax''' sont deux programmes en ligne de commande permettant d'extraire les données du CD-DA selon la méthode digitale. '''cdparanoia''' est basé sur la '''libcdparanoia''' (notamment utilisée par '''mplayer''') tandis qu''''icedax''' (''InCrEdible Digital Audio eXtractor'') est un dérivé (et remplaçant) de '''cdda2wav'''. '''icedax''' possède des options pour contrôler la qualité du résultat en jouant sur le nombre de canaux et la fréquence d'échantillonnage et peut se rabattre sur la '''libcdparanoia''' au besoin. 

La commande suivante permet d'extraire toutes les pistes d'un CD-DA sous forme de fichiers '''.wav''': 

 $ '''cdparanoia -B'''

Liste des formats gérés par '''cdparanoia''': 

*WAV 
*AIFF 
*AIFF-C 
*format brut (''raw format'')

== Graver un CD-DA ==

wodim dev=/dev/cdrw *.{wav,au}

gnomebaker (GUI basée entre autre sur wodim, cdrdao et icedax)

== Copier un CD-DA ==

cdrdao

== Obtenir des informations sur le contenu du CD-DA ==
=== CDDB ===
[[Glossaire#CDDB|CDDB]] (Compact Disk DataBase) est une base de donnée permettant d'obtenir des informations telles que le nom de l'artiste, le titre du CD ou le nom des pistes. Pour que cela fonctionne, le CD en question doit être référencé dans la base, ce système n'est donc pas applicable pour des compilations ou des pistes seules. D'autre part, la base de donnée étant en ligne, il est nécessaire d'avoir accès à une connexion internet.

Voici un exemple pour lire un CD audio avec [[mplayer]] en fournissant les informations complémentaires fournies par CDDB :
 $ '''mplayer cddb://'''
 ...
 ================ CD INFO === start =========
  artist=[Queen]
  album=[Queen Rocks]
  genre=[Rock/Classic]
  nb_tracks=10
  length= 36:41.30
   # 1  2:01.43 @     150	[We Will Rock You]
   # 2  3:45.19 @    9267	[Tie Your Mother Down]
   # 3  4:30.66 @   26160	[I Want It All]
   # 4  2:45.18 @   46475	[Seven Seas of Rhye]
   # 5  4:47.46 @   58867	[I Can't Live With You (1997 'Rocks' Retake)]
   # 6  4:22.66 @   80437	[Hammer to Fall]
   # 7  2:14.06 @  100152	[Stone Cold Crazy]
   # 8  4:12.49 @  110207	[Now I'm Here]
   # 9  4:15.71 @  129155	[Fat Bottomed Girls]
   #10  3:45.31 @  148350	[Keep Yourself Alive]
 ================ CD INFO ===  end  =========
 ...

=== cdir ===
La commande cdir du package cdtool permet d'obtenir la durée de chaque piste d'un CD audio :
 $ '''cdir'''
 unknown cd - 70:32 in 18 tracks
   2:01.42  1 
   3:45.18  2 
   4:30.65  3 
   2:45.17  4 
   4:47.45  5 
   4:22.65  6 
   2:14.05  7 
   4:12.48  8 
   4:15.70  9 
   3:45.30 10 
   3:24.65 11 
   5:09.15 12 
   3:24.72 13 
   3:11.20 14 
   3:18.58 15 
   4:38.25 16 
   6:27.15 17 
   4:14.00 18

= Références =
* [http://en.wikipedia.org/wiki/Compact_Disc_Digital_Audio Wikipedia: Compact Disk Digital Audio]
* [http://www.tldp.org/HOWTO/CDROM-HOWTO/ TLDP: CDROM-HOWTO]
* [http://tldp.org/HOWTO/MP3-CD-Burning/audio.html TLDP: Linux MP3 CD Burning mini-HOWTO / Audio CDs]
* [http://en.wikipedia.org/wiki/CDDB Wikipedia: CDDB]

[[Catégorie:Multimédia]]</text>
      <sha1>az1ox6astxu6c1b03ws62t9cgebfok5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1620</id>
      <parentid>1047</parentid>
      <timestamp>2010-07-05T08:05:10Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="7231">#REDIRECT [[isalo:CD_audio]]
[[Image:150px-CDDAlogo.svg.png|right]]
Manipuler des CD audio sous debian peut être un peu déroutant si l'on ne souhaite pas se contenter des outils graphiques et que l'on veut comprendre ce qui se passe.


= Vue générale du CD-DA =

CD-DA est l'acronyme de '''Compact Disk - Digital Audio'''. C'est un standard défini dans le '''Red Book''', dont la première édition revient à Philips et Sony en 1980. Le CD-DA n'est pas un standard libre, les droits et le logo associé sont possédés par le groupe Pḧilips.

Le support du CD-DA est le '''Compact Disk''' (CD), un média optique permettant de stocker les données sous forme numérique. Les données audio sont stockées sous la forme d'une piste stéréo encodée à une résolution de 16 bits avec une fréquence d'échantillonnage de 44,1 kHz.

= Utiliser les CD-DA avec GNOME =

Depuis la version 2.22 de [[GNOME]],
le navigateur de fichier [[nautilus]] présente le contenu d'un CD audio comme des fichiers WAV.
Ces fichiers sont facilement manipulables avec les opérations classiques de [[nautilus]],
une extraction de piste se résume donc à un simple copier-coller.

Techniquement, [[GNOME]] s'appuie sur [[GVFS]] (successeur de [[GNOME-VFS]])
qui est une abstraction présentant le contenu des périphériques réseau et multimédia dans un système de fichier.
[[GVFS]] s'appuie sur '''libcdio-cdda0''' [http://packages.debian.org/fr/lenny/libcdio-cdda0]
et '''libcdio-paranoia0''' [http://packages.debian.org/fr/lenny/libcdio-paranoia0] pour ses accès aux CD audios.
Il utilise son propre exécutable '''/usr/lib/gvfs/gvfsd-cdda''' pour l'extraction des pistes de CD audio.

= Utiliser les CD-DA en ligne de commande =
libcdio-cdda0
Voici quelques outils à utiliser en ligne de commande pour manipuler les CD audio avec debian. Pour pouvoir lire (et écrire) des CD, il est nécessaire d'avoir les droits d'accès au fichier spécial représentant le lecteur (graveur) de CD. Généralement, il s'agit de la cible du lien symbolique '''/dev/cdrom'''. La manière la plus simple (et la plus propre) est de s'assurer que la cible de '''/dev/cdrom''' est bien accessible en lecture (écriture) pour le groupe '''cdrom''' et que l'utilisateur devant l'utiliser appartient bien à ce groupe.

== Lire un CD-DA ==
=== VLC media player ===
Pour lire un CD audio avec '''vlc''' en ligne de commande on peut utiliser la commande suivante :
 $ '''cvlc cdda://[périphérique]'''
'''cvlc''' est une version de '''vlc''' sans interface graphique, mais toutes ces commandes restent valides en utilisant '''vlc'''.

Une piste peut être spécifiée avec l'option '''--cdda-track''' :
 $ '''cvlc cdda:// --cdda-track=2'''
À noter qu'avec vlc-1.0.4-2, la syntaxe '''vlc cdda://[périphérique][@piste]''' ne se comporte pas comme précisé dans le wiki de vlc [http://wiki.videolan.org/Documentation:Play_HowTo/Advanced_Use_of_VLC#Use_the_command_line] qui ne semble pas être à jour.
=== MPlayer ===
 $ '''mplayer cdda://'''

== Ripper un CD-DA  ==

Ripper un CD consiste à extraire les pistes audio du CD-DA et à les convertir en fichiers audio. Les données du CD audio n'étant pas organisées en système de fichier (contrairement au CD-ROM), cela n'a pas de sens d'essayer d'extraire une image ISO d'un CD-DA puisque la norme ISO9660 (ou CDFS) n'est pas utilisée. On ne peut donc pas &quot;monter&quot; un CD-DA pour acceder directement à son contenu. Des outils spécialisés sont donc nécessaires pour extraire les données du CD-DA. 

Il y a principalement deux modes de copies&amp;nbsp;: 

*Un mode de copie similaire à la lecture du CD audio, où le lecteur fonctionne de manière indépendante et où le signal est directement récupéré depuis la carte son (à vérifier). Bien que simple et rapide, toutes les erreurs de lecture se répercuteront sur l'enregistrement. De plus, une distorsion des données audio dûe à son traitement intermédiaire par la carte son réduira aussi la qualité du résultat final. 
*Un mode de copie numérique, plus lent que le mode précédent mais permettant de restituer le son tel qu'il est encodé sur le CD-DA.

'''cdparanoia''' et '''icedax''' sont deux programmes en ligne de commande permettant d'extraire les données du CD-DA selon la méthode digitale. '''cdparanoia''' est basé sur la '''libcdparanoia''' (notamment utilisée par '''mplayer''') tandis qu''''icedax''' (''InCrEdible Digital Audio eXtractor'') est un dérivé (et remplaçant) de '''cdda2wav'''. '''icedax''' possède des options pour contrôler la qualité du résultat en jouant sur le nombre de canaux et la fréquence d'échantillonnage et peut se rabattre sur la '''libcdparanoia''' au besoin. 

La commande suivante permet d'extraire toutes les pistes d'un CD-DA sous forme de fichiers '''.wav''': 

 $ '''cdparanoia -B'''

Liste des formats gérés par '''cdparanoia''': 

*WAV 
*AIFF 
*AIFF-C 
*format brut (''raw format'')

== Graver un CD-DA ==

wodim dev=/dev/cdrw *.{wav,au}

gnomebaker (GUI basée entre autre sur wodim, cdrdao et icedax)

== Copier un CD-DA ==

cdrdao

== Obtenir des informations sur le contenu du CD-DA ==
=== CDDB ===
[[Glossaire#CDDB|CDDB]] (Compact Disk DataBase) est une base de donnée permettant d'obtenir des informations telles que le nom de l'artiste, le titre du CD ou le nom des pistes. Pour que cela fonctionne, le CD en question doit être référencé dans la base, ce système n'est donc pas applicable pour des compilations ou des pistes seules. D'autre part, la base de donnée étant en ligne, il est nécessaire d'avoir accès à une connexion internet.

Voici un exemple pour lire un CD audio avec [[mplayer]] en fournissant les informations complémentaires fournies par CDDB :
 $ '''mplayer cddb://'''
 ...
 ================ CD INFO === start =========
  artist=[Queen]
  album=[Queen Rocks]
  genre=[Rock/Classic]
  nb_tracks=10
  length= 36:41.30
   # 1  2:01.43 @     150	[We Will Rock You]
   # 2  3:45.19 @    9267	[Tie Your Mother Down]
   # 3  4:30.66 @   26160	[I Want It All]
   # 4  2:45.18 @   46475	[Seven Seas of Rhye]
   # 5  4:47.46 @   58867	[I Can't Live With You (1997 'Rocks' Retake)]
   # 6  4:22.66 @   80437	[Hammer to Fall]
   # 7  2:14.06 @  100152	[Stone Cold Crazy]
   # 8  4:12.49 @  110207	[Now I'm Here]
   # 9  4:15.71 @  129155	[Fat Bottomed Girls]
   #10  3:45.31 @  148350	[Keep Yourself Alive]
 ================ CD INFO ===  end  =========
 ...

=== cdir ===
La commande cdir du package cdtool permet d'obtenir la durée de chaque piste d'un CD audio :
 $ '''cdir'''
 unknown cd - 70:32 in 18 tracks
   2:01.42  1 
   3:45.18  2 
   4:30.65  3 
   2:45.17  4 
   4:47.45  5 
   4:22.65  6 
   2:14.05  7 
   4:12.48  8 
   4:15.70  9 
   3:45.30 10 
   3:24.65 11 
   5:09.15 12 
   3:24.72 13 
   3:11.20 14 
   3:18.58 15 
   4:38.25 16 
   6:27.15 17 
   4:14.00 18

= Références =
* [http://en.wikipedia.org/wiki/Compact_Disc_Digital_Audio Wikipedia: Compact Disk Digital Audio]
* [http://www.tldp.org/HOWTO/CDROM-HOWTO/ TLDP: CDROM-HOWTO]
* [http://tldp.org/HOWTO/MP3-CD-Burning/audio.html TLDP: Linux MP3 CD Burning mini-HOWTO / Audio CDs]
* [http://en.wikipedia.org/wiki/CDDB Wikipedia: CDDB]

[[Catégorie:Multimédia]]</text>
      <sha1>7ci73j4maknmzmbvud2if3nynbmumq9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1673</id>
      <parentid>1620</parentid>
      <timestamp>2010-07-06T09:21:51Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Annulation des modifications 1620 de [[Special:Contributions/Lol|Lol]] ([[User talk:Lol|discussion]])</comment>
      <text xml:space="preserve" bytes="7202">[[Image:150px-CDDAlogo.svg.png|right]]
Manipuler des CD audio sous debian peut être un peu déroutant si l'on ne souhaite pas se contenter des outils graphiques et que l'on veut comprendre ce qui se passe.


= Vue générale du CD-DA =

CD-DA est l'acronyme de '''Compact Disk - Digital Audio'''. C'est un standard défini dans le '''Red Book''', dont la première édition revient à Philips et Sony en 1980. Le CD-DA n'est pas un standard libre, les droits et le logo associé sont possédés par le groupe Pḧilips.

Le support du CD-DA est le '''Compact Disk''' (CD), un média optique permettant de stocker les données sous forme numérique. Les données audio sont stockées sous la forme d'une piste stéréo encodée à une résolution de 16 bits avec une fréquence d'échantillonnage de 44,1 kHz.

= Utiliser les CD-DA avec GNOME =

Depuis la version 2.22 de [[GNOME]],
le navigateur de fichier [[nautilus]] présente le contenu d'un CD audio comme des fichiers WAV.
Ces fichiers sont facilement manipulables avec les opérations classiques de [[nautilus]],
une extraction de piste se résume donc à un simple copier-coller.

Techniquement, [[GNOME]] s'appuie sur [[GVFS]] (successeur de [[GNOME-VFS]])
qui est une abstraction présentant le contenu des périphériques réseau et multimédia dans un système de fichier.
[[GVFS]] s'appuie sur '''libcdio-cdda0''' [http://packages.debian.org/fr/lenny/libcdio-cdda0]
et '''libcdio-paranoia0''' [http://packages.debian.org/fr/lenny/libcdio-paranoia0] pour ses accès aux CD audios.
Il utilise son propre exécutable '''/usr/lib/gvfs/gvfsd-cdda''' pour l'extraction des pistes de CD audio.

= Utiliser les CD-DA en ligne de commande =
libcdio-cdda0
Voici quelques outils à utiliser en ligne de commande pour manipuler les CD audio avec debian. Pour pouvoir lire (et écrire) des CD, il est nécessaire d'avoir les droits d'accès au fichier spécial représentant le lecteur (graveur) de CD. Généralement, il s'agit de la cible du lien symbolique '''/dev/cdrom'''. La manière la plus simple (et la plus propre) est de s'assurer que la cible de '''/dev/cdrom''' est bien accessible en lecture (écriture) pour le groupe '''cdrom''' et que l'utilisateur devant l'utiliser appartient bien à ce groupe.

== Lire un CD-DA ==
=== VLC media player ===
Pour lire un CD audio avec '''vlc''' en ligne de commande on peut utiliser la commande suivante :
 $ '''cvlc cdda://[périphérique]'''
'''cvlc''' est une version de '''vlc''' sans interface graphique, mais toutes ces commandes restent valides en utilisant '''vlc'''.

Une piste peut être spécifiée avec l'option '''--cdda-track''' :
 $ '''cvlc cdda:// --cdda-track=2'''
À noter qu'avec vlc-1.0.4-2, la syntaxe '''vlc cdda://[périphérique][@piste]''' ne se comporte pas comme précisé dans le wiki de vlc [http://wiki.videolan.org/Documentation:Play_HowTo/Advanced_Use_of_VLC#Use_the_command_line] qui ne semble pas être à jour.
=== MPlayer ===
 $ '''mplayer cdda://'''

== Ripper un CD-DA  ==

Ripper un CD consiste à extraire les pistes audio du CD-DA et à les convertir en fichiers audio. Les données du CD audio n'étant pas organisées en système de fichier (contrairement au CD-ROM), cela n'a pas de sens d'essayer d'extraire une image ISO d'un CD-DA puisque la norme ISO9660 (ou CDFS) n'est pas utilisée. On ne peut donc pas &quot;monter&quot; un CD-DA pour acceder directement à son contenu. Des outils spécialisés sont donc nécessaires pour extraire les données du CD-DA. 

Il y a principalement deux modes de copies&amp;nbsp;: 

*Un mode de copie similaire à la lecture du CD audio, où le lecteur fonctionne de manière indépendante et où le signal est directement récupéré depuis la carte son (à vérifier). Bien que simple et rapide, toutes les erreurs de lecture se répercuteront sur l'enregistrement. De plus, une distorsion des données audio dûe à son traitement intermédiaire par la carte son réduira aussi la qualité du résultat final. 
*Un mode de copie numérique, plus lent que le mode précédent mais permettant de restituer le son tel qu'il est encodé sur le CD-DA.

'''cdparanoia''' et '''icedax''' sont deux programmes en ligne de commande permettant d'extraire les données du CD-DA selon la méthode digitale. '''cdparanoia''' est basé sur la '''libcdparanoia''' (notamment utilisée par '''mplayer''') tandis qu''''icedax''' (''InCrEdible Digital Audio eXtractor'') est un dérivé (et remplaçant) de '''cdda2wav'''. '''icedax''' possède des options pour contrôler la qualité du résultat en jouant sur le nombre de canaux et la fréquence d'échantillonnage et peut se rabattre sur la '''libcdparanoia''' au besoin. 

La commande suivante permet d'extraire toutes les pistes d'un CD-DA sous forme de fichiers '''.wav''': 

 $ '''cdparanoia -B'''

Liste des formats gérés par '''cdparanoia''': 

*WAV 
*AIFF 
*AIFF-C 
*format brut (''raw format'')

== Graver un CD-DA ==

wodim dev=/dev/cdrw *.{wav,au}

gnomebaker (GUI basée entre autre sur wodim, cdrdao et icedax)

== Copier un CD-DA ==

cdrdao

== Obtenir des informations sur le contenu du CD-DA ==
=== CDDB ===
[[Glossaire#CDDB|CDDB]] (Compact Disk DataBase) est une base de donnée permettant d'obtenir des informations telles que le nom de l'artiste, le titre du CD ou le nom des pistes. Pour que cela fonctionne, le CD en question doit être référencé dans la base, ce système n'est donc pas applicable pour des compilations ou des pistes seules. D'autre part, la base de donnée étant en ligne, il est nécessaire d'avoir accès à une connexion internet.

Voici un exemple pour lire un CD audio avec [[mplayer]] en fournissant les informations complémentaires fournies par CDDB :
 $ '''mplayer cddb://'''
 ...
 ================ CD INFO === start =========
  artist=[Queen]
  album=[Queen Rocks]
  genre=[Rock/Classic]
  nb_tracks=10
  length= 36:41.30
   # 1  2:01.43 @     150	[We Will Rock You]
   # 2  3:45.19 @    9267	[Tie Your Mother Down]
   # 3  4:30.66 @   26160	[I Want It All]
   # 4  2:45.18 @   46475	[Seven Seas of Rhye]
   # 5  4:47.46 @   58867	[I Can't Live With You (1997 'Rocks' Retake)]
   # 6  4:22.66 @   80437	[Hammer to Fall]
   # 7  2:14.06 @  100152	[Stone Cold Crazy]
   # 8  4:12.49 @  110207	[Now I'm Here]
   # 9  4:15.71 @  129155	[Fat Bottomed Girls]
   #10  3:45.31 @  148350	[Keep Yourself Alive]
 ================ CD INFO ===  end  =========
 ...

=== cdir ===
La commande cdir du package cdtool permet d'obtenir la durée de chaque piste d'un CD audio :
 $ '''cdir'''
 unknown cd - 70:32 in 18 tracks
   2:01.42  1 
   3:45.18  2 
   4:30.65  3 
   2:45.17  4 
   4:47.45  5 
   4:22.65  6 
   2:14.05  7 
   4:12.48  8 
   4:15.70  9 
   3:45.30 10 
   3:24.65 11 
   5:09.15 12 
   3:24.72 13 
   3:11.20 14 
   3:18.58 15 
   4:38.25 16 
   6:27.15 17 
   4:14.00 18

= Références =
* [http://en.wikipedia.org/wiki/Compact_Disc_Digital_Audio Wikipedia: Compact Disk Digital Audio]
* [http://www.tldp.org/HOWTO/CDROM-HOWTO/ TLDP: CDROM-HOWTO]
* [http://tldp.org/HOWTO/MP3-CD-Burning/audio.html TLDP: Linux MP3 CD Burning mini-HOWTO / Audio CDs]
* [http://en.wikipedia.org/wiki/CDDB Wikipedia: CDDB]

[[Catégorie:Multimédia]]</text>
      <sha1>az1ox6astxu6c1b03ws62t9cgebfok5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Cartes vidéos siliconmotion</title>
    <ns>0</ns>
    <id>588</id>
    <revision>
      <id>2431</id>
      <timestamp>2010-11-26T08:04:55Z</timestamp>
      <contributor>
        <username>Knucky</username>
        <id>75</id>
      </contributor>
      <comment>Création</comment>
      <text xml:space="preserve" bytes="2985">Les chipsets vidéos siliconmotion fonctionnent assez bien sous Debian, néanmoins pas dans la configuration par défaut. 

== Configuration du framebuffer avec lilo == 

Si vous souhaitez avoir mieux que le 80x25, ajoutez ou modifiez ceci aux options dans /etc/lilo.conf :

&lt;code&gt;
vga=0x318
&lt;/code&gt;

Puis confirmez les modifications:

&lt;code&gt;
root@box:~# lilo &amp;&amp; reboot
&lt;/code&gt;

== Configuration de X11 == 

Si cela n'est pas déjà fait, il est nécessaire d'installer le pilote correspondant :

&lt;code&gt;
root@box:~# apt-get install xserver-xorg-video-siliconmotion 
&lt;/code&gt;

Ne démarrez pas X tout de suite, cela ne fonctionnera pas. A noter que le pilote :

* Ne fonctionne qu'en 65535 couleurs (16 bits)
* Ne peut pas utiliser le bios pour définir les modes vidéos disponibles, il faut l'indiquer dans le xorg.conf, car c'est la cause du noircissement de la console, même une fois que l'on a quitté X11.

Il faut donc indiquer tout ceci dans un xorg.conf : 

&lt;code&gt;
root@box:~# vi /etc/X11/xorg.conf
&lt;/code&gt;

Et y mettre : 

&lt;code xorg_conf&gt;
Section &quot;ServerLayout&quot;
        Identifier     &quot;X.org Configured&quot;
        Screen      0  &quot;Screen0&quot; 0 0
        InputDevice    &quot;Mouse0&quot; &quot;CorePointer&quot;
        InputDevice    &quot;Keyboard0&quot; &quot;CoreKeyboard&quot;
EndSection

Section &quot;Files&quot;
        ModulePath   &quot;/usr/lib/xorg/modules&quot;
        FontPath     &quot;/usr/share/fonts/X11/misc&quot;
        FontPath     &quot;/usr/share/fonts/X11/cyrillic&quot;
        FontPath     &quot;/usr/share/fonts/X11/100dpi/:unscaled&quot;
        FontPath     &quot;/usr/share/fonts/X11/75dpi/:unscaled&quot;
        FontPath     &quot;/usr/share/fonts/X11/Type1&quot;
        FontPath     &quot;/usr/share/fonts/X11/100dpi&quot;
        FontPath     &quot;/usr/share/fonts/X11/75dpi&quot;
        FontPath     &quot;/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType&quot;
        FontPath     &quot;built-ins&quot;
EndSection

Section &quot;Module&quot;
EndSection

Section &quot;InputDevice&quot;
        Identifier  &quot;Keyboard0&quot;
        Driver      &quot;kbd&quot;
EndSection

Section &quot;InputDevice&quot;
        Identifier  &quot;Mouse0&quot;
        Driver      &quot;mouse&quot;
        Option      &quot;Protocol&quot; &quot;auto&quot;
        Option      &quot;Device&quot; &quot;/dev/input/mice&quot;
        Option      &quot;ZAxisMapping&quot; &quot;4 5 6 7&quot;
EndSection

Section &quot;Monitor&quot;
        Identifier   &quot;Monitor0&quot;
        VendorName   &quot;Monitor Vendor&quot;
        ModelName    &quot;Monitor Model&quot;
EndSection

Section &quot;Device&quot;
        #Option     &quot;Dualhead&quot; # jamais testé...
        Option     &quot;PciBurst&quot;  &quot;On&quot;
        Option &quot;UseBIOS&quot; &quot;false&quot;
        Identifier  &quot;Card0&quot;
        Driver      &quot;siliconmotion&quot;
EndSection

Section &quot;Screen&quot;
        Identifier &quot;Screen0&quot;
        Device     &quot;Card0&quot;
        Monitor    &quot;Monitor0&quot;
        DefaultDepth 16
        SubSection &quot;Display&quot;
                Viewport   0 0
                Depth     16
                Modes &quot;1024x768&quot; 
        EndSubSection
EndSection

Section &quot;Extensions&quot;   
         Option  &quot;Composite&quot;     &quot;Disable&quot;
EndSection
&lt;/code&gt;

Vous pouvez à présent démarrer X sans aucune difficulté, ni bug ;)

[[Category:Matériel et Drivers Divers]]</text>
      <sha1>dsju4xy54lnxw7mydwwav4cc0aexfeh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2432</id>
      <parentid>2431</parentid>
      <timestamp>2010-11-26T08:09:02Z</timestamp>
      <contributor>
        <username>Knucky</username>
        <id>75</id>
      </contributor>
      <minor/>
      <comment>Changement de catégorie</comment>
      <text xml:space="preserve" bytes="2970">Les chipsets vidéos siliconmotion fonctionnent assez bien sous Debian, néanmoins pas dans la configuration par défaut. 

== Configuration du framebuffer avec lilo == 

Si vous souhaitez avoir mieux que le 80x25, ajoutez ou modifiez ceci aux options dans /etc/lilo.conf :

&lt;code&gt;
vga=0x318
&lt;/code&gt;

Puis confirmez les modifications:

&lt;code&gt;
root@box:~# lilo &amp;&amp; reboot
&lt;/code&gt;

== Configuration de X11 == 

Si cela n'est pas déjà fait, il est nécessaire d'installer le pilote correspondant :

&lt;code&gt;
root@box:~# apt-get install xserver-xorg-video-siliconmotion 
&lt;/code&gt;

Ne démarrez pas X tout de suite, cela ne fonctionnera pas. A noter que le pilote :

* Ne fonctionne qu'en 65535 couleurs (16 bits)
* Ne peut pas utiliser le bios pour définir les modes vidéos disponibles, il faut l'indiquer dans le xorg.conf, car c'est la cause du noircissement de la console, même une fois que l'on a quitté X11.

Il faut donc indiquer tout ceci dans un xorg.conf : 

&lt;code&gt;
root@box:~# vi /etc/X11/xorg.conf
&lt;/code&gt;

Et y mettre : 

&lt;code xorg_conf&gt;
Section &quot;ServerLayout&quot;
        Identifier     &quot;X.org Configured&quot;
        Screen      0  &quot;Screen0&quot; 0 0
        InputDevice    &quot;Mouse0&quot; &quot;CorePointer&quot;
        InputDevice    &quot;Keyboard0&quot; &quot;CoreKeyboard&quot;
EndSection

Section &quot;Files&quot;
        ModulePath   &quot;/usr/lib/xorg/modules&quot;
        FontPath     &quot;/usr/share/fonts/X11/misc&quot;
        FontPath     &quot;/usr/share/fonts/X11/cyrillic&quot;
        FontPath     &quot;/usr/share/fonts/X11/100dpi/:unscaled&quot;
        FontPath     &quot;/usr/share/fonts/X11/75dpi/:unscaled&quot;
        FontPath     &quot;/usr/share/fonts/X11/Type1&quot;
        FontPath     &quot;/usr/share/fonts/X11/100dpi&quot;
        FontPath     &quot;/usr/share/fonts/X11/75dpi&quot;
        FontPath     &quot;/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType&quot;
        FontPath     &quot;built-ins&quot;
EndSection

Section &quot;Module&quot;
EndSection

Section &quot;InputDevice&quot;
        Identifier  &quot;Keyboard0&quot;
        Driver      &quot;kbd&quot;
EndSection

Section &quot;InputDevice&quot;
        Identifier  &quot;Mouse0&quot;
        Driver      &quot;mouse&quot;
        Option      &quot;Protocol&quot; &quot;auto&quot;
        Option      &quot;Device&quot; &quot;/dev/input/mice&quot;
        Option      &quot;ZAxisMapping&quot; &quot;4 5 6 7&quot;
EndSection

Section &quot;Monitor&quot;
        Identifier   &quot;Monitor0&quot;
        VendorName   &quot;Monitor Vendor&quot;
        ModelName    &quot;Monitor Model&quot;
EndSection

Section &quot;Device&quot;
        #Option     &quot;Dualhead&quot; # jamais testé...
        Option     &quot;PciBurst&quot;  &quot;On&quot;
        Option &quot;UseBIOS&quot; &quot;false&quot;
        Identifier  &quot;Card0&quot;
        Driver      &quot;siliconmotion&quot;
EndSection

Section &quot;Screen&quot;
        Identifier &quot;Screen0&quot;
        Device     &quot;Card0&quot;
        Monitor    &quot;Monitor0&quot;
        DefaultDepth 16
        SubSection &quot;Display&quot;
                Viewport   0 0
                Depth     16
                Modes &quot;1024x768&quot; 
        EndSubSection
EndSection

Section &quot;Extensions&quot;   
         Option  &quot;Composite&quot;     &quot;Disable&quot;
EndSection
&lt;/code&gt;

Vous pouvez à présent démarrer X sans aucune difficulté, ni bug ;)

[[Category:Carte Vidéo]]</text>
      <sha1>r6nxzf1u17tt3iy5k2nl5uvkrg9kijn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2434</id>
      <parentid>2432</parentid>
      <timestamp>2010-11-26T09:04:58Z</timestamp>
      <contributor>
        <username>Knucky</username>
        <id>75</id>
      </contributor>
      <minor/>
      <comment>Ajout du lien vers le T&amp;A</comment>
      <text xml:space="preserve" bytes="3095">Les chipsets vidéos siliconmotion fonctionnent assez bien sous Debian, néanmoins pas dans la configuration par défaut. 

== Configuration du framebuffer avec lilo == 

Si vous souhaitez avoir mieux que le 80x25, ajoutez ou modifiez ceci aux options dans /etc/lilo.conf :

&lt;code&gt;
vga=0x318
&lt;/code&gt;

Puis confirmez les modifications:

&lt;code&gt;
root@box:~# lilo &amp;&amp; reboot
&lt;/code&gt;

== Configuration de X11 == 

Si cela n'est pas déjà fait, il est nécessaire d'installer le pilote correspondant :

&lt;code&gt;
root@box:~# apt-get install xserver-xorg-video-siliconmotion 
&lt;/code&gt;

Ne démarrez pas X tout de suite, cela ne fonctionnera pas. A noter que le pilote :

* Ne fonctionne qu'en 65535 couleurs (16 bits)
* Ne peut pas utiliser le bios pour définir les modes vidéos disponibles, il faut l'indiquer dans le xorg.conf, car c'est la cause du noircissement de la console, même une fois que l'on a quitté X11.

Il faut donc indiquer tout ceci dans un xorg.conf : 

&lt;code&gt;
root@box:~# vi /etc/X11/xorg.conf
&lt;/code&gt;

Et y mettre : 

&lt;code xorg_conf&gt;
Section &quot;ServerLayout&quot;
        Identifier     &quot;X.org Configured&quot;
        Screen      0  &quot;Screen0&quot; 0 0
        InputDevice    &quot;Mouse0&quot; &quot;CorePointer&quot;
        InputDevice    &quot;Keyboard0&quot; &quot;CoreKeyboard&quot;
EndSection

Section &quot;Files&quot;
        ModulePath   &quot;/usr/lib/xorg/modules&quot;
        FontPath     &quot;/usr/share/fonts/X11/misc&quot;
        FontPath     &quot;/usr/share/fonts/X11/cyrillic&quot;
        FontPath     &quot;/usr/share/fonts/X11/100dpi/:unscaled&quot;
        FontPath     &quot;/usr/share/fonts/X11/75dpi/:unscaled&quot;
        FontPath     &quot;/usr/share/fonts/X11/Type1&quot;
        FontPath     &quot;/usr/share/fonts/X11/100dpi&quot;
        FontPath     &quot;/usr/share/fonts/X11/75dpi&quot;
        FontPath     &quot;/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType&quot;
        FontPath     &quot;built-ins&quot;
EndSection

Section &quot;Module&quot;
EndSection

Section &quot;InputDevice&quot;
        Identifier  &quot;Keyboard0&quot;
        Driver      &quot;kbd&quot;
EndSection

Section &quot;InputDevice&quot;
        Identifier  &quot;Mouse0&quot;
        Driver      &quot;mouse&quot;
        Option      &quot;Protocol&quot; &quot;auto&quot;
        Option      &quot;Device&quot; &quot;/dev/input/mice&quot;
        Option      &quot;ZAxisMapping&quot; &quot;4 5 6 7&quot;
EndSection

Section &quot;Monitor&quot;
        Identifier   &quot;Monitor0&quot;
        VendorName   &quot;Monitor Vendor&quot;
        ModelName    &quot;Monitor Model&quot;
EndSection

Section &quot;Device&quot;
        #Option     &quot;Dualhead&quot; # jamais testé...
        Option     &quot;PciBurst&quot;  &quot;On&quot;
        Option &quot;UseBIOS&quot; &quot;false&quot;
        Identifier  &quot;Card0&quot;
        Driver      &quot;siliconmotion&quot;
EndSection

Section &quot;Screen&quot;
        Identifier &quot;Screen0&quot;
        Device     &quot;Card0&quot;
        Monitor    &quot;Monitor0&quot;
        DefaultDepth 16
        SubSection &quot;Display&quot;
                Viewport   0 0
                Depth     16
                Modes &quot;1024x768&quot; 
        EndSubSection
EndSection

Section &quot;Extensions&quot;   
         Option  &quot;Composite&quot;     &quot;Disable&quot;
EndSection
&lt;/code&gt;

Vous pouvez à présent démarrer X sans aucune difficulté, ni bug ;)

[http://www.debian-fr.org/thinkpad-lenny-xorg-smi-lynx-quelques-solutions-t16052.html#p309965 T&amp;A, à l'origine pour Lenny]

[[Category:Carte Vidéo]]</text>
      <sha1>4r8f1cgv4sxk9ha4kevl7nz9bha12hz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2435</id>
      <parentid>2434</parentid>
      <timestamp>2010-11-26T09:24:42Z</timestamp>
      <contributor>
        <username>Knucky</username>
        <id>75</id>
      </contributor>
      <comment>ajout de la procedure pour grub</comment>
      <text xml:space="preserve" bytes="3687">Les chipsets vidéos siliconmotion fonctionnent assez bien sous Debian, néanmoins pas dans la configuration par défaut. 

== Configuration du framebuffer == 

=== lilo ===

Si vous souhaitez avoir mieux que le 80x25, ajoutez ou modifiez ceci aux options dans /etc/lilo.conf :

&lt;code&gt;
vga=0x318
&lt;/code&gt;

Puis confirmez les modifications:

&lt;code&gt;
root@box:~# lilo &amp;&amp; reboot
&lt;/code&gt;

=== grub ===

==== Modifications des fichiers de configuration ====

Il faut modifier plusieurs fichiers, en tant que root : 

* '''/etc/default/grub'''

Décommentez la ligne contenant 
&lt;code bash&gt;GRUB_GFXMODE=640x480&lt;/code&gt;

Et remplacez 640x480 par 1024x768.

* '''/etc/grub.d/00_header'''

Recherchez la ligne :
&lt;code bash&gt;set gfxmode=${GRUB_GFXMODE}&lt;/code&gt;

Ajoutez juste après cette ligne : 
&lt;code bash&gt;set gfxpayload=keep&lt;/code&gt;


==== Prise en compte des changements ====

Une fois les changements effectués, appliquez-les : 

&lt;code&gt;
root@box:~# update-grub &amp;&amp; reboot
&lt;/code&gt;


== Configuration de X11 == 

Si cela n'est pas déjà fait, il est nécessaire d'installer le pilote correspondant :

&lt;code&gt;
root@box:~# apt-get install xserver-xorg-video-siliconmotion 
&lt;/code&gt;

Ne démarrez pas X tout de suite, cela ne fonctionnera pas. A noter que le pilote :

* Ne fonctionne qu'en 65535 couleurs (16 bits)
* Ne peut pas utiliser le bios pour définir les modes vidéos disponibles, il faut l'indiquer dans le xorg.conf, car c'est la cause du noircissement de la console, même une fois que l'on a quitté X11.

Il faut donc indiquer tout ceci dans un xorg.conf : 

&lt;code&gt;
root@box:~# vi /etc/X11/xorg.conf
&lt;/code&gt;

Et y mettre : 

&lt;code xorg_conf&gt;
Section &quot;ServerLayout&quot;
        Identifier     &quot;X.org Configured&quot;
        Screen      0  &quot;Screen0&quot; 0 0
        InputDevice    &quot;Mouse0&quot; &quot;CorePointer&quot;
        InputDevice    &quot;Keyboard0&quot; &quot;CoreKeyboard&quot;
EndSection

Section &quot;Files&quot;
        ModulePath   &quot;/usr/lib/xorg/modules&quot;
        FontPath     &quot;/usr/share/fonts/X11/misc&quot;
        FontPath     &quot;/usr/share/fonts/X11/cyrillic&quot;
        FontPath     &quot;/usr/share/fonts/X11/100dpi/:unscaled&quot;
        FontPath     &quot;/usr/share/fonts/X11/75dpi/:unscaled&quot;
        FontPath     &quot;/usr/share/fonts/X11/Type1&quot;
        FontPath     &quot;/usr/share/fonts/X11/100dpi&quot;
        FontPath     &quot;/usr/share/fonts/X11/75dpi&quot;
        FontPath     &quot;/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType&quot;
        FontPath     &quot;built-ins&quot;
EndSection

Section &quot;Module&quot;
EndSection

Section &quot;InputDevice&quot;
        Identifier  &quot;Keyboard0&quot;
        Driver      &quot;kbd&quot;
EndSection

Section &quot;InputDevice&quot;
        Identifier  &quot;Mouse0&quot;
        Driver      &quot;mouse&quot;
        Option      &quot;Protocol&quot; &quot;auto&quot;
        Option      &quot;Device&quot; &quot;/dev/input/mice&quot;
        Option      &quot;ZAxisMapping&quot; &quot;4 5 6 7&quot;
EndSection

Section &quot;Monitor&quot;
        Identifier   &quot;Monitor0&quot;
        VendorName   &quot;Monitor Vendor&quot;
        ModelName    &quot;Monitor Model&quot;
EndSection

Section &quot;Device&quot;
        #Option     &quot;Dualhead&quot; # jamais testé...
        Option     &quot;PciBurst&quot;  &quot;On&quot;
        Option &quot;UseBIOS&quot; &quot;false&quot;
        Identifier  &quot;Card0&quot;
        Driver      &quot;siliconmotion&quot;
EndSection

Section &quot;Screen&quot;
        Identifier &quot;Screen0&quot;
        Device     &quot;Card0&quot;
        Monitor    &quot;Monitor0&quot;
        DefaultDepth 16
        SubSection &quot;Display&quot;
                Viewport   0 0
                Depth     16
                Modes &quot;1024x768&quot; 
        EndSubSection
EndSection

Section &quot;Extensions&quot;   
         Option  &quot;Composite&quot;     &quot;Disable&quot;
EndSection
&lt;/code&gt;

Vous pouvez à présent démarrer X sans aucune difficulté, ni bug ;)

[http://www.debian-fr.org/thinkpad-lenny-xorg-smi-lynx-quelques-solutions-t16052.html#p309965 T&amp;A, à l'origine pour Lenny]

[[Category:Carte Vidéo]]</text>
      <sha1>lhc7blhurkps78gh6cd4vkleul1gqhj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2439</id>
      <parentid>2435</parentid>
      <timestamp>2010-11-26T13:04:06Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Prise en compte des changements */</comment>
      <text xml:space="preserve" bytes="3721">Les chipsets vidéos siliconmotion fonctionnent assez bien sous Debian, néanmoins pas dans la configuration par défaut. 

== Configuration du framebuffer == 

=== lilo ===

Si vous souhaitez avoir mieux que le 80x25, ajoutez ou modifiez ceci aux options dans /etc/lilo.conf :

&lt;code&gt;
vga=0x318
&lt;/code&gt;

Puis confirmez les modifications:

&lt;code&gt;
root@box:~# lilo &amp;&amp; reboot
&lt;/code&gt;

=== grub ===

==== Modifications des fichiers de configuration ====

Il faut modifier plusieurs fichiers, en tant que root : 

* '''/etc/default/grub'''

Décommentez la ligne contenant 
&lt;code bash&gt;GRUB_GFXMODE=640x480&lt;/code&gt;

Et remplacez 640x480 par 1024x768.

* '''/etc/grub.d/00_header'''

Recherchez la ligne :
&lt;code bash&gt;set gfxmode=${GRUB_GFXMODE}&lt;/code&gt;

Ajoutez juste après cette ligne : 
&lt;code bash&gt;set gfxpayload=keep&lt;/code&gt;


==== Prise en compte des changements ====

Une fois les changements effectués, appliquez-les : 

&lt;code&gt;
root@box:~# update-grub &amp;&amp; reboot (si vous êtes impatients de voir)
&lt;/code&gt;

== Configuration de X11 == 

Si cela n'est pas déjà fait, il est nécessaire d'installer le pilote correspondant :

&lt;code&gt;
root@box:~# apt-get install xserver-xorg-video-siliconmotion 
&lt;/code&gt;

Ne démarrez pas X tout de suite, cela ne fonctionnera pas. A noter que le pilote :

* Ne fonctionne qu'en 65535 couleurs (16 bits)
* Ne peut pas utiliser le bios pour définir les modes vidéos disponibles, il faut l'indiquer dans le xorg.conf, car c'est la cause du noircissement de la console, même une fois que l'on a quitté X11.

Il faut donc indiquer tout ceci dans un xorg.conf : 

&lt;code&gt;
root@box:~# vi /etc/X11/xorg.conf
&lt;/code&gt;

Et y mettre : 

&lt;code xorg_conf&gt;
Section &quot;ServerLayout&quot;
        Identifier     &quot;X.org Configured&quot;
        Screen      0  &quot;Screen0&quot; 0 0
        InputDevice    &quot;Mouse0&quot; &quot;CorePointer&quot;
        InputDevice    &quot;Keyboard0&quot; &quot;CoreKeyboard&quot;
EndSection

Section &quot;Files&quot;
        ModulePath   &quot;/usr/lib/xorg/modules&quot;
        FontPath     &quot;/usr/share/fonts/X11/misc&quot;
        FontPath     &quot;/usr/share/fonts/X11/cyrillic&quot;
        FontPath     &quot;/usr/share/fonts/X11/100dpi/:unscaled&quot;
        FontPath     &quot;/usr/share/fonts/X11/75dpi/:unscaled&quot;
        FontPath     &quot;/usr/share/fonts/X11/Type1&quot;
        FontPath     &quot;/usr/share/fonts/X11/100dpi&quot;
        FontPath     &quot;/usr/share/fonts/X11/75dpi&quot;
        FontPath     &quot;/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType&quot;
        FontPath     &quot;built-ins&quot;
EndSection

Section &quot;Module&quot;
EndSection

Section &quot;InputDevice&quot;
        Identifier  &quot;Keyboard0&quot;
        Driver      &quot;kbd&quot;
EndSection

Section &quot;InputDevice&quot;
        Identifier  &quot;Mouse0&quot;
        Driver      &quot;mouse&quot;
        Option      &quot;Protocol&quot; &quot;auto&quot;
        Option      &quot;Device&quot; &quot;/dev/input/mice&quot;
        Option      &quot;ZAxisMapping&quot; &quot;4 5 6 7&quot;
EndSection

Section &quot;Monitor&quot;
        Identifier   &quot;Monitor0&quot;
        VendorName   &quot;Monitor Vendor&quot;
        ModelName    &quot;Monitor Model&quot;
EndSection

Section &quot;Device&quot;
        #Option     &quot;Dualhead&quot; # jamais testé...
        Option     &quot;PciBurst&quot;  &quot;On&quot;
        Option &quot;UseBIOS&quot; &quot;false&quot;
        Identifier  &quot;Card0&quot;
        Driver      &quot;siliconmotion&quot;
EndSection

Section &quot;Screen&quot;
        Identifier &quot;Screen0&quot;
        Device     &quot;Card0&quot;
        Monitor    &quot;Monitor0&quot;
        DefaultDepth 16
        SubSection &quot;Display&quot;
                Viewport   0 0
                Depth     16
                Modes &quot;1024x768&quot; 
        EndSubSection
EndSection

Section &quot;Extensions&quot;   
         Option  &quot;Composite&quot;     &quot;Disable&quot;
EndSection
&lt;/code&gt;

Vous pouvez à présent démarrer X sans aucune difficulté, ni bug ;)

[http://www.debian-fr.org/thinkpad-lenny-xorg-smi-lynx-quelques-solutions-t16052.html#p309965 T&amp;A, à l'origine pour Lenny]

[[Category:Carte Vidéo]]</text>
      <sha1>8jyp004fuk3nivgqsl5n783r6fa0frj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4045</id>
      <parentid>2439</parentid>
      <timestamp>2012-04-23T16:03:25Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="3749">Les chipsets [[Matériel::Carte vidéo|vidéos]] siliconmotion fonctionnent assez bien sous Debian, néanmoins pas dans la configuration par défaut. 

== Configuration du framebuffer == 

=== lilo ===

Si vous souhaitez avoir mieux que le 80x25, ajoutez ou modifiez ceci aux options dans /etc/lilo.conf :

&lt;code&gt;
vga=0x318
&lt;/code&gt;

Puis confirmez les modifications:

&lt;code&gt;
root@box:~# lilo &amp;&amp; reboot
&lt;/code&gt;

=== grub ===

==== Modifications des fichiers de configuration ====

Il faut modifier plusieurs fichiers, en tant que root : 

* '''/etc/default/grub'''

Décommentez la ligne contenant 
&lt;code bash&gt;GRUB_GFXMODE=640x480&lt;/code&gt;

Et remplacez 640x480 par 1024x768.

* '''/etc/grub.d/00_header'''

Recherchez la ligne :
&lt;code bash&gt;set gfxmode=${GRUB_GFXMODE}&lt;/code&gt;

Ajoutez juste après cette ligne : 
&lt;code bash&gt;set gfxpayload=keep&lt;/code&gt;


==== Prise en compte des changements ====

Une fois les changements effectués, appliquez-les : 

&lt;code&gt;
root@box:~# update-grub &amp;&amp; reboot (si vous êtes impatients de voir)
&lt;/code&gt;

== Configuration de X11 == 

Si cela n'est pas déjà fait, il est nécessaire d'installer le pilote correspondant :

&lt;code&gt;
root@box:~# apt-get install xserver-xorg-video-siliconmotion 
&lt;/code&gt;

Ne démarrez pas X tout de suite, cela ne fonctionnera pas. A noter que le pilote :

* Ne fonctionne qu'en 65535 couleurs (16 bits)
* Ne peut pas utiliser le bios pour définir les modes vidéos disponibles, il faut l'indiquer dans le xorg.conf, car c'est la cause du noircissement de la console, même une fois que l'on a quitté X11.

Il faut donc indiquer tout ceci dans un xorg.conf : 

&lt;code&gt;
root@box:~# vi /etc/X11/xorg.conf
&lt;/code&gt;

Et y mettre : 

&lt;code xorg_conf&gt;
Section &quot;ServerLayout&quot;
        Identifier     &quot;X.org Configured&quot;
        Screen      0  &quot;Screen0&quot; 0 0
        InputDevice    &quot;Mouse0&quot; &quot;CorePointer&quot;
        InputDevice    &quot;Keyboard0&quot; &quot;CoreKeyboard&quot;
EndSection

Section &quot;Files&quot;
        ModulePath   &quot;/usr/lib/xorg/modules&quot;
        FontPath     &quot;/usr/share/fonts/X11/misc&quot;
        FontPath     &quot;/usr/share/fonts/X11/cyrillic&quot;
        FontPath     &quot;/usr/share/fonts/X11/100dpi/:unscaled&quot;
        FontPath     &quot;/usr/share/fonts/X11/75dpi/:unscaled&quot;
        FontPath     &quot;/usr/share/fonts/X11/Type1&quot;
        FontPath     &quot;/usr/share/fonts/X11/100dpi&quot;
        FontPath     &quot;/usr/share/fonts/X11/75dpi&quot;
        FontPath     &quot;/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType&quot;
        FontPath     &quot;built-ins&quot;
EndSection

Section &quot;Module&quot;
EndSection

Section &quot;InputDevice&quot;
        Identifier  &quot;Keyboard0&quot;
        Driver      &quot;kbd&quot;
EndSection

Section &quot;InputDevice&quot;
        Identifier  &quot;Mouse0&quot;
        Driver      &quot;mouse&quot;
        Option      &quot;Protocol&quot; &quot;auto&quot;
        Option      &quot;Device&quot; &quot;/dev/input/mice&quot;
        Option      &quot;ZAxisMapping&quot; &quot;4 5 6 7&quot;
EndSection

Section &quot;Monitor&quot;
        Identifier   &quot;Monitor0&quot;
        VendorName   &quot;Monitor Vendor&quot;
        ModelName    &quot;Monitor Model&quot;
EndSection

Section &quot;Device&quot;
        #Option     &quot;Dualhead&quot; # jamais testé...
        Option     &quot;PciBurst&quot;  &quot;On&quot;
        Option &quot;UseBIOS&quot; &quot;false&quot;
        Identifier  &quot;Card0&quot;
        Driver      &quot;siliconmotion&quot;
EndSection

Section &quot;Screen&quot;
        Identifier &quot;Screen0&quot;
        Device     &quot;Card0&quot;
        Monitor    &quot;Monitor0&quot;
        DefaultDepth 16
        SubSection &quot;Display&quot;
                Viewport   0 0
                Depth     16
                Modes &quot;1024x768&quot; 
        EndSubSection
EndSection

Section &quot;Extensions&quot;   
         Option  &quot;Composite&quot;     &quot;Disable&quot;
EndSection
&lt;/code&gt;

Vous pouvez à présent démarrer X sans aucune difficulté, ni bug ;)

[http://www.debian-fr.org/thinkpad-lenny-xorg-smi-lynx-quelques-solutions-t16052.html#p309965 T&amp;A, à l'origine pour Lenny]

[[Category:Carte Vidéo]]</text>
      <sha1>ow0yvsx93127hdzl0bbl6mo2qbsqbpg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4080</id>
      <parentid>4045</parentid>
      <timestamp>2012-04-26T08:40:31Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="3745">Les chipsets [[Matériel::Carte vidéo|vidéos]] siliconmotion fonctionnent assez bien sous Debian, néanmoins pas dans la configuration par défaut. 

== Configuration du framebuffer == 

=== lilo ===

Si vous souhaitez avoir mieux que le 80x25, ajoutez ou modifiez ceci aux options dans /etc/lilo.conf :

&lt;code&gt;
vga=0x318
&lt;/code&gt;

Puis confirmez les modifications:

&lt;code&gt;
root@box:~# lilo &amp;&amp; reboot
&lt;/code&gt;

=== grub ===

==== Modifications des fichiers de configuration ====

Il faut modifier plusieurs fichiers, en tant que root : 

* '''/etc/default/grub'''

Décommentez la ligne contenant 
&lt;code bash&gt;GRUB_GFXMODE=640x480&lt;/code&gt;

Et remplacez 640x480 par 1024x768.

* '''/etc/grub.d/00_header'''

Recherchez la ligne :
&lt;code bash&gt;set gfxmode=${GRUB_GFXMODE}&lt;/code&gt;

Ajoutez juste après cette ligne : 
&lt;code bash&gt;set gfxpayload=keep&lt;/code&gt;


==== Prise en compte des changements ====

Une fois les changements effectués, appliquez-les : 

&lt;code&gt;
root@box:~# update-grub &amp;&amp; reboot (si vous êtes impatients de voir)
&lt;/code&gt;

== Configuration de X11 == 

Si cela n'est pas déjà fait, il est nécessaire d'installer le pilote correspondant :

&lt;code&gt;
root@box:~# apt-get install xserver-xorg-video-siliconmotion 
&lt;/code&gt;

Ne démarrez pas X tout de suite, cela ne fonctionnera pas. A noter que le pilote :

* Ne fonctionne qu'en 65535 couleurs (16 bits)
* Ne peut pas utiliser le bios pour définir les modes vidéos disponibles, il faut l'indiquer dans le xorg.conf, car c'est la cause du noircissement de la console, même une fois que l'on a quitté X11.

Il faut donc indiquer tout ceci dans un xorg.conf : 

&lt;code&gt;
root@box:~# vi /etc/X11/xorg.conf
&lt;/code&gt;

Et y mettre : 

&lt;code xorg_conf&gt;
Section &quot;ServerLayout&quot;
        Identifier     &quot;X.org Configured&quot;
        Screen      0  &quot;Screen0&quot; 0 0
        InputDevice    &quot;Mouse0&quot; &quot;CorePointer&quot;
        InputDevice    &quot;Keyboard0&quot; &quot;CoreKeyboard&quot;
EndSection

Section &quot;Files&quot;
        ModulePath   &quot;/usr/lib/xorg/modules&quot;
        FontPath     &quot;/usr/share/fonts/X11/misc&quot;
        FontPath     &quot;/usr/share/fonts/X11/cyrillic&quot;
        FontPath     &quot;/usr/share/fonts/X11/100dpi/:unscaled&quot;
        FontPath     &quot;/usr/share/fonts/X11/75dpi/:unscaled&quot;
        FontPath     &quot;/usr/share/fonts/X11/Type1&quot;
        FontPath     &quot;/usr/share/fonts/X11/100dpi&quot;
        FontPath     &quot;/usr/share/fonts/X11/75dpi&quot;
        FontPath     &quot;/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType&quot;
        FontPath     &quot;built-ins&quot;
EndSection

Section &quot;Module&quot;
EndSection

Section &quot;InputDevice&quot;
        Identifier  &quot;Keyboard0&quot;
        Driver      &quot;kbd&quot;
EndSection

Section &quot;InputDevice&quot;
        Identifier  &quot;Mouse0&quot;
        Driver      &quot;mouse&quot;
        Option      &quot;Protocol&quot; &quot;auto&quot;
        Option      &quot;Device&quot; &quot;/dev/input/mice&quot;
        Option      &quot;ZAxisMapping&quot; &quot;4 5 6 7&quot;
EndSection

Section &quot;Monitor&quot;
        Identifier   &quot;Monitor0&quot;
        VendorName   &quot;Monitor Vendor&quot;
        ModelName    &quot;Monitor Model&quot;
EndSection

Section &quot;Device&quot;
        #Option     &quot;Dualhead&quot; # jamais testé...
        Option     &quot;PciBurst&quot;  &quot;On&quot;
        Option &quot;UseBIOS&quot; &quot;false&quot;
        Identifier  &quot;Card0&quot;
        Driver      &quot;siliconmotion&quot;
EndSection

Section &quot;Screen&quot;
        Identifier &quot;Screen0&quot;
        Device     &quot;Card0&quot;
        Monitor    &quot;Monitor0&quot;
        DefaultDepth 16
        SubSection &quot;Display&quot;
                Viewport   0 0
                Depth     16
                Modes &quot;1024x768&quot; 
        EndSubSection
EndSection

Section &quot;Extensions&quot;   
         Option  &quot;Composite&quot;     &quot;Disable&quot;
EndSection
&lt;/code&gt;

Vous pouvez à présent démarrer X sans aucune difficulté, ni bug ;)

[http://www.debian-fr.org/thinkpad-lenny-xorg-smi-lynx-quelques-solutions-t16052.html#p309965 T&amp;A, à l'origine pour Lenny]

[[Category:Tutoriel]]</text>
      <sha1>qx3ezejcoatxz90vht820b98kp5es9l</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie Bureautique</title>
    <ns>0</ns>
    <id>246</id>
    <revision>
      <id>1072</id>
      <timestamp>2010-02-11T08:27:43Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « [[Catégorie:Logiciels]] »</comment>
      <text xml:space="preserve" bytes="24">[[Catégorie:Logiciels]]</text>
      <sha1>sort88k9k4zu53lsnbjzn9yvqkk2vjf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Aide</title>
    <ns>14</ns>
    <id>521</id>
    <revision>
      <id>2108</id>
      <timestamp>2010-09-15T17:18:20Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « [[Catégorie:General]] »</comment>
      <text xml:space="preserve" bytes="22">[[Catégorie:General]]</text>
      <sha1>0gwbgi9wry31zteal7fsyyj8oyp1tr1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Aide sur l'aide</title>
    <ns>14</ns>
    <id>520</id>
    <revision>
      <id>2107</id>
      <timestamp>2010-09-15T17:17:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « [[Catégorie:Aide]] »</comment>
      <text xml:space="preserve" bytes="19">[[Catégorie:Aide]]</text>
      <sha1>eglhuf4qrh6yyh488m7zr0xpw3vpvgf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Apt</title>
    <ns>14</ns>
    <id>288</id>
    <revision>
      <id>1258</id>
      <timestamp>2010-04-02T08:58:55Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « [[Catégorie:Paquets]] »</comment>
      <text xml:space="preserve" bytes="22">[[Catégorie:Paquets]]</text>
      <sha1>7gq3eufm7srstynseh7edv1bvkbppda</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Arborescence de catégories</title>
    <ns>14</ns>
    <id>172</id>
    <revision>
      <id>685</id>
      <timestamp>2010-02-01T13:39:55Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « {{menu aide catégories}} {{Saut|50px}} Cette [[Aide:Catégorie|catégorie]] recense les pages du Wiki consacrées à l'organisation et maintenance des catégories.  {{Saut|1… »</comment>
      <text xml:space="preserve" bytes="355">{{menu aide catégories}}
{{Saut|50px}}
Cette [[Aide:Catégorie|catégorie]] recense les pages du Wiki consacrées à l'organisation et maintenance des catégories.

{{Saut|100px}}
L'exploration et présentation des catégories sont facilitées par la page spéciale [[Special:CategoryTree]]

[[Catégorie:Espace Catégorie]]
[[Catégorie:Espace Portail]]</text>
      <sha1>0vlf4rzhtqnxg2vwfdj3cpmfezuk9he</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>736</id>
      <parentid>685</parentid>
      <timestamp>2010-02-02T06:15:25Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="325">{{menu aide catégories}}
{{Saut|50px}}
Cette [[Aide:Catégorie|catégorie]] recense les pages du Wiki consacrées à l'organisation et maintenance des catégories.

{{Saut|100px}}
L'exploration et présentation des catégories sont facilitées par la page spéciale [[Special:CategoryTree]]

[[Catégorie:Espace Catégorie]]</text>
      <sha1>2mmnlutu4ic059i7mwco7zb77hrnqmw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Carte Vidéo</title>
    <ns>14</ns>
    <id>237</id>
    <revision>
      <id>1052</id>
      <timestamp>2010-02-09T04:13:02Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « [[Catégorie:Matériel et Drivers]] »</comment>
      <text xml:space="preserve" bytes="35">[[Catégorie:Matériel et Drivers]]</text>
      <sha1>bniac6j7vpc9116trfsnskrvdfj9vjk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Commandes</title>
    <ns>14</ns>
    <id>19</id>
    <revision>
      <id>29</id>
      <timestamp>2010-01-21T15:47:25Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « {{Sid}} »</comment>
      <text xml:space="preserve" bytes="7">{{Sid}}</text>
      <sha1>rpd85vxvzxz53f7fi2ybjsxjhg22cea</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>507</id>
      <parentid>29</parentid>
      <timestamp>2010-01-29T13:25:43Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page blanchie</comment>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>739</id>
      <parentid>507</parentid>
      <timestamp>2010-02-02T06:32:38Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="22">[[Catégorie:General]]</text>
      <sha1>0gwbgi9wry31zteal7fsyyj8oyp1tr1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>798</id>
      <parentid>739</parentid>
      <timestamp>2010-02-03T11:52:11Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="31">[[Catégorie:Raccourcis/alias]]</text>
      <sha1>o0l1jrkuc9tfj7745cm1crmc9j3pcxu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>799</id>
      <parentid>798</parentid>
      <timestamp>2010-02-03T11:53:52Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="22">[[Catégorie:General]]</text>
      <sha1>0gwbgi9wry31zteal7fsyyj8oyp1tr1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Commandes de base</title>
    <ns>14</ns>
    <id>247</id>
    <revision>
      <id>1074</id>
      <timestamp>2010-02-11T08:31:46Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « [[Catégorie:Commandes]] »</comment>
      <text xml:space="preserve" bytes="24">[[Catégorie:Commandes]]</text>
      <sha1>5esfhlro33lfatom50pfo0eygra63ot</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Commandes plus complexes</title>
    <ns>14</ns>
    <id>248</id>
    <revision>
      <id>1081</id>
      <timestamp>2010-02-11T08:43:38Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « Catégorie:Commandes »</comment>
      <text xml:space="preserve" bytes="20">Catégorie:Commandes</text>
      <sha1>t21klvvx2z415v7s1uympbnp6g5szls</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1082</id>
      <parentid>1081</parentid>
      <timestamp>2010-02-11T08:43:56Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="24">[[Catégorie:Commandes]]</text>
      <sha1>5esfhlro33lfatom50pfo0eygra63ot</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Controleur audio</title>
    <ns>14</ns>
    <id>238</id>
    <revision>
      <id>1053</id>
      <timestamp>2010-02-09T04:14:06Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « [[Catégorie:Matériel et Drivers]] »</comment>
      <text xml:space="preserve" bytes="35">[[Catégorie:Matériel et Drivers]]</text>
      <sha1>bniac6j7vpc9116trfsnskrvdfj9vjk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:DistributionsDérivées</title>
    <ns>14</ns>
    <id>529</id>
    <revision>
      <id>2151</id>
      <timestamp>2010-09-30T05:18:09Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « [[Catégorie:Divers]] »</comment>
      <text xml:space="preserve" bytes="21">[[Catégorie:Divers]]</text>
      <sha1>32hm2c77ppjny3j3c07qdcdq6t8d6sw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Divers</title>
    <ns>14</ns>
    <id>273</id>
    <revision>
      <id>1184</id>
      <timestamp>2010-03-24T16:04:40Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « [[Catégorie:General]] »</comment>
      <text xml:space="preserve" bytes="22">[[Catégorie:General]]</text>
      <sha1>0gwbgi9wry31zteal7fsyyj8oyp1tr1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Documentation externe</title>
    <ns>14</ns>
    <id>259</id>
    <revision>
      <id>1136</id>
      <timestamp>2010-03-13T23:19:37Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>Page créée avec « Cette catégorie recense les sources de documentation externe à ce wiki et au forum debian-fr.org qui nous semble intéressants de qualité et fiable. Ces liens sont regroup… »</comment>
      <text xml:space="preserve" bytes="216">Cette catégorie recense les sources de documentation externe à ce wiki et au forum debian-fr.org qui nous semble intéressants de qualité et fiable. Ces liens sont regroupés en domaine (Debian, Latex, Gnome,...).</text>
      <sha1>d2tge24fniyc1305oy7nkspssv2dgi7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1145</id>
      <parentid>1136</parentid>
      <timestamp>2010-03-14T16:57:23Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Pour faire apparaitre cette catégorie dans l'arborescence...</comment>
      <text xml:space="preserve" bytes="240">Cette catégorie recense les sources de documentation externe à ce wiki et au forum debian-fr.org qui nous semble intéressants de qualité et fiable. Ces liens sont regroupés en domaine (Debian, Latex, Gnome,...).

[[Catégorie:General]]</text>
      <sha1>gu8mhcq7tkq0zz5ma7oebyqcen0df78</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1901</id>
      <parentid>1145</parentid>
      <timestamp>2010-08-09T17:49:17Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="244">Cette catégorie recense les sources de documentation externe à ce wiki et au forum debian-fr.org qui nous semblent intéressantes, de qualité et fiable. Ces liens sont regroupés en domaine (Debian, Latex, Gnome,...).

[[Catégorie:General]]</text>
      <sha1>ay9micgegf7f50st77bgvci513aelfk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4311</id>
      <parentid>1901</parentid>
      <timestamp>2012-06-03T09:32:43Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="269">Cette catégorie recense les sources de documentation externe à ce wiki et au forum debian-fr.org qui nous semblent intéressantes, de qualité et fiable. Ces liens sont regroupés en domaine (Debian, Latex, Gnome,...).

[[Catégorie:General]]
[[Catégorie:Ressource]]</text>
      <sha1>be0usz1z1nqugx366b3t6g4kosbogxk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Flottants</title>
    <ns>14</ns>
    <id>230</id>
    <revision>
      <id>967</id>
      <timestamp>2010-02-07T07:38:45Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « [[Catégorie:Gestionnaires_de_fenetres]] »</comment>
      <text xml:space="preserve" bytes="40">[[Catégorie:Gestionnaires_de_fenetres]]</text>
      <sha1>83qk9mwjqd864n5rq5uin2ecxagztux</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:General</title>
    <ns>14</ns>
    <id>168</id>
    <revision>
      <id>679</id>
      <timestamp>2010-02-01T13:07:09Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « {{article principal}}   {{Catégorie General}} »</comment>
      <text xml:space="preserve" bytes="46">{{article principal}}


{{Catégorie General}}</text>
      <sha1>hn2v874e08vwzof3vyb7rhyxa79mj8j</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2561</id>
      <parentid>679</parentid>
      <timestamp>2010-12-26T16:05:54Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page blanchie</comment>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4306</id>
      <parentid>2561</parentid>
      <timestamp>2012-06-03T09:26:28Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="21">__HIDEFROMDRILLDOWN__</text>
      <sha1>80ya528ths8p2vmaukagvwigwsum1fx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Gestion de l'alimentation</title>
    <ns>14</ns>
    <id>240</id>
    <revision>
      <id>1055</id>
      <timestamp>2010-02-09T04:20:06Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « [[Catégorie:Matériel et Drivers]] »</comment>
      <text xml:space="preserve" bytes="35">[[Catégorie:Matériel et Drivers]]</text>
      <sha1>bniac6j7vpc9116trfsnskrvdfj9vjk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Gestionnaire de fenetres</title>
    <ns>14</ns>
    <id>228</id>
    <revision>
      <id>962</id>
      <timestamp>2010-02-07T07:31:05Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « = Les gestionnaires de fenêtres =  Cette page a pour but de lister les gestionnaires de fenêtres pour lesquels une documentation est disponible. Ainsi, il sera facile pour … »</comment>
      <text xml:space="preserve" bytes="921">= Les gestionnaires de fenêtres =

Cette page a pour but de lister les gestionnaires de fenêtres pour lesquels une documentation est disponible. Ainsi, il sera facile pour chacun d'apprendre à configurer son gestionnaire de fenêtres, surtout lorsque cela est spécifique à Debian.

== Les flottants ==

Les gestionnaires nommés ici &quot;flottants&quot; auront un comportement similaire à (par exemple) Metacity ou kwin (les gestionnaires de fenêtres de gnome ou kde).

* [[Openbox]]
* [[Fluxbox]]
* [[Pekwm]]
* [[Fvwm]]
* [[WindowMaker]]
* [[Enlightenment]]






== Les tilings ==

Ces gestionnaires de fenêtres ont la particularité d'aider énormément à la mise en place des fenêtres à l'écran. Ils ont l'avantage d'être entièrement pilotable au clavier (gain de temps) et s'opposent aux interface de type [http://fr.wikipedia.org/wiki/WIMP_(informatique) WIMP].

* [[dwm]]
* [[wmii]]
* [[awesome]]
* [[xmonad]]</text>
      <sha1>5n3vnf8xebl0x23czjmetp1dnsj7hqt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Gestionnaires de fenetres</title>
    <ns>14</ns>
    <id>229</id>
    <revision>
      <id>964</id>
      <timestamp>2010-02-07T07:34:07Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « = Les gestionnaires de fenêtres =  Cette page a pour but de lister les gestionnaires de fenêtres pour lesquels une documentation est disponible. Ainsi, il sera facile pour … »</comment>
      <text xml:space="preserve" bytes="916">= Les gestionnaires de fenêtres =

Cette page a pour but de lister les gestionnaires de fenêtres pour lesquels une documentation est disponible. Ainsi, il sera facile pour chacun d'apprendre à configurer son gestionnaire de fenêtres, surtout lorsque cela est spécifique à Debian.

== Les flottants ==

Les gestionnaires nommés ici &quot;flottants&quot; auront un comportement similaire à (par exemple) Metacity ou kwin (les gestionnaires de fenêtres de gnome ou kde).

* [[Openbox]]
* [[Fluxbox]]
* [[Pekwm]]
* [[Fvwm]]
* [[WindowMaker]]
* [[Enlightenment]]

== Les tilings ==

Ces gestionnaires de fenêtres ont la particularité d'aider énormément à la mise en place des fenêtres à l'écran. Ils ont l'avantage d'être entièrement pilotable au clavier (gain de temps) et s'opposent aux interface de type [http://fr.wikipedia.org/wiki/WIMP_(informatique) WIMP].

* [[dwm]]
* [[wmii]]
* [[awesome]]
* [[xmonad]]</text>
      <sha1>4b12v6osd6iawzm1qlr3ks37ns837q6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>987</id>
      <parentid>964</parentid>
      <timestamp>2010-02-07T08:07:32Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="941">= Les gestionnaires de fenêtres =

Cette page a pour but de lister les gestionnaires de fenêtres pour lesquels une documentation est disponible. Ainsi, il sera facile pour chacun d'apprendre à configurer son gestionnaire de fenêtres, surtout lorsque cela est spécifique à Debian.

== Les flottants ==

Les gestionnaires nommés ici &quot;flottants&quot; auront un comportement similaire à (par exemple) Metacity ou kwin (les gestionnaires de fenêtres de gnome ou kde).

* [[Openbox]]
* [[Fluxbox]]
* [[Pekwm]]
* [[Fvwm]]
* [[WindowMaker]]
* [[Enlightenment]]

== Les tilings ==

Ces gestionnaires de fenêtres ont la particularité d'aider énormément à la mise en place des fenêtres à l'écran. Ils ont l'avantage d'être entièrement pilotable au clavier (gain de temps) et s'opposent aux interface de type [http://fr.wikipedia.org/wiki/WIMP_(informatique) WIMP].

* [[dwm]]
* [[wmii]]
* [[awesome]]
* [[xmonad]]


[[Catégorie:General]]</text>
      <sha1>ckj8q4pbggdivknh91ly5psxox2r2do</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1050</id>
      <parentid>987</parentid>
      <timestamp>2010-02-08T12:46:38Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="943">= Les gestionnaires de fenêtres =

Cette page a pour but de lister les gestionnaires de fenêtres pour lesquels une documentation est disponible. Ainsi, il sera facile pour chacun d'apprendre à configurer son gestionnaire de fenêtres, surtout lorsque cela est spécifique à Debian.

== Les flottants ==

Les gestionnaires nommés ici &quot;flottants&quot; auront un comportement similaire à (par exemple) Metacity ou kwin (les gestionnaires de fenêtres de gnome ou kde).

* [[Openbox]]
* [[Fluxbox]]
* [[Pekwm]]
* [[Fvwm]]
* [[WindowMaker]]
* [[Enlightenment]]

== Les tilings ==

Ces gestionnaires de fenêtres ont la particularité d'aider énormément à la mise en place des fenêtres à l'écran. Ils ont l'avantage d'être entièrement pilotable au clavier (gain de temps) et s'opposent aux interface de type [http://fr.wikipedia.org/wiki/WIMP_(informatique) WIMP].

* [[dwm]]
* [[wmii]]
* [[awesome]]
* [[xmonad]]


[[Catégorie:Logiciels]]</text>
      <sha1>smirvm59yihrd0fb6w0rqktsmp18gan</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4305</id>
      <parentid>1050</parentid>
      <timestamp>2012-06-03T09:25:36Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="965">__HIDEFROMDRILLDOWN__
= Les gestionnaires de fenêtres =

Cette page a pour but de lister les gestionnaires de fenêtres pour lesquels une documentation est disponible. Ainsi, il sera facile pour chacun d'apprendre à configurer son gestionnaire de fenêtres, surtout lorsque cela est spécifique à Debian.

== Les flottants ==

Les gestionnaires nommés ici &quot;flottants&quot; auront un comportement similaire à (par exemple) Metacity ou kwin (les gestionnaires de fenêtres de gnome ou kde).

* [[Openbox]]
* [[Fluxbox]]
* [[Pekwm]]
* [[Fvwm]]
* [[WindowMaker]]
* [[Enlightenment]]

== Les tilings ==

Ces gestionnaires de fenêtres ont la particularité d'aider énormément à la mise en place des fenêtres à l'écran. Ils ont l'avantage d'être entièrement pilotable au clavier (gain de temps) et s'opposent aux interface de type [http://fr.wikipedia.org/wiki/WIMP_(informatique) WIMP].

* [[dwm]]
* [[wmii]]
* [[awesome]]
* [[xmonad]]


[[Catégorie:Logiciels]]</text>
      <sha1>tohjkgezckoipyw4moo7v4zx4poxbbn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Grub</title>
    <ns>14</ns>
    <id>637</id>
    <revision>
      <id>2769</id>
      <timestamp>2011-03-31T14:04:43Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « [[Catégorie:General]] »</comment>
      <text xml:space="preserve" bytes="22">[[Catégorie:General]]</text>
      <sha1>0gwbgi9wry31zteal7fsyyj8oyp1tr1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Imprimantes et Scanners</title>
    <ns>14</ns>
    <id>241</id>
    <revision>
      <id>1056</id>
      <timestamp>2010-02-09T04:21:24Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « [[Catégorie:Matériel et Drivers]] »</comment>
      <text xml:space="preserve" bytes="35">[[Catégorie:Matériel et Drivers]]</text>
      <sha1>bniac6j7vpc9116trfsnskrvdfj9vjk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Installation</title>
    <ns>14</ns>
    <id>198</id>
    <revision>
      <id>743</id>
      <timestamp>2010-02-02T06:38:49Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « [[Catégorie:General]] »</comment>
      <text xml:space="preserve" bytes="22">[[Catégorie:General]]</text>
      <sha1>0gwbgi9wry31zteal7fsyyj8oyp1tr1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Jeux</title>
    <ns>14</ns>
    <id>203</id>
    <revision>
      <id>748</id>
      <timestamp>2010-02-02T06:41:09Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « [[Catégorie:General]] »</comment>
      <text xml:space="preserve" bytes="22">[[Catégorie:General]]</text>
      <sha1>0gwbgi9wry31zteal7fsyyj8oyp1tr1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Kernel (Noyau)</title>
    <ns>14</ns>
    <id>201</id>
    <revision>
      <id>746</id>
      <timestamp>2010-02-02T06:40:17Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « [[Catégorie:General]] »</comment>
      <text xml:space="preserve" bytes="22">[[Catégorie:General]]</text>
      <sha1>0gwbgi9wry31zteal7fsyyj8oyp1tr1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Logiciels</title>
    <ns>14</ns>
    <id>199</id>
    <revision>
      <id>744</id>
      <timestamp>2010-02-02T06:39:19Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « [[Catégorie:General]] »</comment>
      <text xml:space="preserve" bytes="22">[[Catégorie:General]]</text>
      <sha1>0gwbgi9wry31zteal7fsyyj8oyp1tr1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Logiciels Divers</title>
    <ns>14</ns>
    <id>244</id>
    <revision>
      <id>1068</id>
      <timestamp>2010-02-11T08:10:16Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « [[Catégorie:Logiciels]] »</comment>
      <text xml:space="preserve" bytes="24">[[Catégorie:Logiciels]]</text>
      <sha1>sort88k9k4zu53lsnbjzn9yvqkk2vjf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Matériel et Drivers</title>
    <ns>14</ns>
    <id>197</id>
    <revision>
      <id>742</id>
      <timestamp>2010-02-02T06:38:16Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « [[Catégorie:General]] »</comment>
      <text xml:space="preserve" bytes="22">[[Catégorie:General]]</text>
      <sha1>0gwbgi9wry31zteal7fsyyj8oyp1tr1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Matériel et Drivers Divers</title>
    <ns>14</ns>
    <id>245</id>
    <revision>
      <id>1070</id>
      <timestamp>2010-02-11T08:16:36Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « [[Catégorie:Matériel_et_Drivers]] »</comment>
      <text xml:space="preserve" bytes="35">[[Catégorie:Matériel_et_Drivers]]</text>
      <sha1>mzy3yz1cgdl6hbyiq329gwmmtp5uy0a</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Modèles</title>
    <ns>14</ns>
    <id>60</id>
    <revision>
      <id>203</id>
      <timestamp>2010-01-23T19:48:36Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <comment>Page créée avec « . »</comment>
      <text xml:space="preserve" bytes="1">.</text>
      <sha1>6t9fg2gmch401ldtk8m7pyzz632ixbb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4304</id>
      <parentid>203</parentid>
      <timestamp>2012-06-03T09:24:57Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="23">.
__HIDEFROMDRILLDOWN__</text>
      <sha1>bgg2wl5o1ett3ec6kbm6sxxg6b77ptl</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Multimédia</title>
    <ns>14</ns>
    <id>205</id>
    <revision>
      <id>750</id>
      <timestamp>2010-02-02T06:42:02Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « [[Catégorie:General]] »</comment>
      <text xml:space="preserve" bytes="22">[[Catégorie:General]]</text>
      <sha1>0gwbgi9wry31zteal7fsyyj8oyp1tr1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>988</id>
      <parentid>750</parentid>
      <timestamp>2010-02-07T08:13:25Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="24">[[Catégorie:Logiciels]]</text>
      <sha1>sort88k9k4zu53lsnbjzn9yvqkk2vjf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Ntfs</title>
    <ns>14</ns>
    <id>407</id>
    <revision>
      <id>1498</id>
      <timestamp>2010-05-17T11:05:20Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « [[Catégorie:Supports_de_données]] »</comment>
      <text xml:space="preserve" bytes="35">[[Catégorie:Supports_de_données]]</text>
      <sha1>nfqtj5cxjzazl1fs3smv25qjqgrcexc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Nvidia</title>
    <ns>14</ns>
    <id>45</id>
    <revision>
      <id>119</id>
      <timestamp>2010-01-22T19:52:09Z</timestamp>
      <contributor>
        <username>Debianhadic</username>
        <id>11</id>
      </contributor>
      <comment>Page créée avec « == I - Présentation ==  Avant tout sur Debian, il y a deux types de cartes nVidia :  - Les vieilles -&gt; 'legacy'  - Les nouvelles  (chez nos cousins d'Ubuntu, ils ont préfé… »</comment>
      <text xml:space="preserve" bytes="7976">== I - Présentation ==

Avant tout sur Debian, il y a deux types de cartes nVidia :
 - Les vieilles -&gt; 'legacy'
 - Les nouvelles
 (chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe, que vous n'avez jamais rien compilé, ou que l'installation est nouvelle. Si ce n'est pas le cas assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :
[code]
$ su
# apt-get update
# apt-get upgrade
# apt-get dist-upgrade
[/code]
Il est absolument primordial que ces étapes ne génèrent aucune erreur, recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libres, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :
[code]
## lenny
deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
[/code]
Bon ça c'est pour les gens 'stable', si vous êtes moins conservateur, vous êtes surement en SID, la version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépots, pour vérifier que votre sources.list vous permet d'y accéder tapez :
[code]
$ apt-cache policy nvidia-kernel-source
[/code]
Qui devrait vous donner quelque chose comme ça :
[code]
nvidia-kernel-source:
  Installé : 180.29-1
  Candidat : 180.29-1
 Table de version :
 *** 180.29-1 0
        970 http://ftp.fr.debian.org sid/non-free Packages
        100 /var/lib/dpkg/status
     173.14.09-5 0
        500 http://ftp.fr.debian.org lenny/non-free Packages
        900 http://ftp.fr.debian.org squeeze/non-free Packages
[/code]
Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un source.list permettant de se sortir de n'importe quelle dépendance, pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop : [url=http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]Sources.list au carré ou minimaliste[/url]

N'oubliez pas de mettre à jour la liste de vos paquets :
[code]
# apt-get update
[/code]

'''ATTENTION''' Si votre carte est basé sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique, je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.


== III - Détection de votre carte graphique ==

La partie la plus délicate, quel est mon pilote de carte graphique ?
[code]
$ lspci
[/code]
mon résultat, sur mon super portable Siemens :
[code]
...
03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
...
[/code]
dans les [] vous avez le type de carte, allez sur cette page : [url=http://www.nvidia.fr/object/legacy_drivers_fr.html]LEGACY[/url]
si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknow device, vous devrez mettre à jour vos identifiants :
[code]
# update-pciids
[/code]
et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot; veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite, nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique :

Si vous êtes avec gnome :
[code]# /etc/init.d/gdm stop[/code]

Si vous êtes avec KDE :
[code]# /etc/init.d/kdm stop[/code]

Si vous n'avez ni gnome, ni KDE, je suppose que vous savez très bien comment faire  :wink: 

Puis :
[code]
# nvidia-installer --uninstall
# modprobe -r nvidia
[/code]

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

[code]# find / -name &quot;*nvidia*&quot; -delete[/code]


== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, dans le cas d'une carte legacy, remplacez les références à nvidia, par  les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy
Remarque : Les bons informaticiens, sont en générales des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! alors ils ont crus bons, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peut comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littérallement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;, mais comprenez bien que l'abrévation a la même signification.

[code]
$ su 
# apt-get install module-assistant
# m-a prepare
# m-a clean nvidia-kernel
[/code]
Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :
      [code]
       # apt-get install -t unstable nvidia-kernel-source[/code]
La suite est la même :
[code]
# m-a a-i -i nvidia-kernel-source
# apt-get install nvidia-glx
[/code]

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf
[code]
# nano /etc/X11/xorg.conf
[/code]
Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)
[code]
Section &quot;Device&quot;
    Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
    Driver         &quot;nv&quot;
EndSection
[/code]
Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
[code]    Driver         &quot;nv&quot;[/code]
Par :
[code]    Driver         &quot;nvidia&quot;[/code]
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :
Pour GNOME :
[code]# /etc/init.d/gdm restart[/code]
Pour KDE :
[code]# /etc/init.d/kdm restart[/code]
Ou si vous êtes sur de rien :
[code]
# reboot
[/code]


== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manips à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources, ça évite pas mal de problèmes, mais si on voit :
[code]
Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,
[/code]
lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.


== ANNEXE 1 ==
 : Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :
[code]
$ su
# rm -rf /usr/src/modules/nvidia-kernel/
# cd /usr/src
# tar xjvf nvidia-kernel.tar.bz2
# cd modules/nvidia-kernel/debian
# cp control.template control
# m-a a-i -i nvidia-kernel-source
# apt-get install nvidia-glx
[/code]
Retournez à la partie V</text>
      <sha1>btekbkxtx93f81671knmg5xacu6avkz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>120</id>
      <parentid>119</parentid>
      <timestamp>2010-01-22T21:40:20Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="7966">== I - Présentation ==

Avant tout sur Debian, il y a deux types de cartes nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe, que vous n'avez jamais rien compilé, ou que l'installation est nouvelle. Si ce n'est pas le cas assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur, recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libres, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :
[code]
## lenny
deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
[/code]
Bon ça c'est pour les gens 'stable', si vous êtes moins conservateur, vous êtes surement en SID, la version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépots, pour vérifier que votre sources.list vous permet d'y accéder tapez :
[code]
$ apt-cache policy nvidia-kernel-source
[/code]
Qui devrait vous donner quelque chose comme ça :
[code]
nvidia-kernel-source:
  Installé : 180.29-1
  Candidat : 180.29-1
 Table de version :
 *** 180.29-1 0
        970 http://ftp.fr.debian.org sid/non-free Packages
        100 /var/lib/dpkg/status
     173.14.09-5 0
        500 http://ftp.fr.debian.org lenny/non-free Packages
        900 http://ftp.fr.debian.org squeeze/non-free Packages
[/code]
Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un source.list permettant de se sortir de n'importe quelle dépendance, pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop : [url=http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]Sources.list au carré ou minimaliste[/url]

N'oubliez pas de mettre à jour la liste de vos paquets :
[code]
# apt-get update
[/code]

'''ATTENTION''' Si votre carte est basé sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique, je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.


== III - Détection de votre carte graphique ==

La partie la plus délicate, quel est mon pilote de carte graphique ?
[code]
$ lspci
[/code]
mon résultat, sur mon super portable Siemens :
[code]
...
03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
...
[/code]
dans les [] vous avez le type de carte, allez sur cette page : [url=http://www.nvidia.fr/object/legacy_drivers_fr.html]LEGACY[/url]
si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknow device, vous devrez mettre à jour vos identifiants :
[code]
# update-pciids
[/code]
et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot; veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite, nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique :

Si vous êtes avec gnome :
[code]# /etc/init.d/gdm stop[/code]

Si vous êtes avec KDE :
[code]# /etc/init.d/kdm stop[/code]

Si vous n'avez ni gnome, ni KDE, je suppose que vous savez très bien comment faire  :wink: 

Puis :
[code]
# nvidia-installer --uninstall
# modprobe -r nvidia
[/code]

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

[code]# find / -name &quot;*nvidia*&quot; -delete[/code]


== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, dans le cas d'une carte legacy, remplacez les références à nvidia, par  les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy
Remarque : Les bons informaticiens, sont en générales des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! alors ils ont crus bons, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peut comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littérallement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;, mais comprenez bien que l'abrévation a la même signification.

[code]
$ su 
# apt-get install module-assistant
# m-a prepare
# m-a clean nvidia-kernel
[/code]
Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :
      [code]
       # apt-get install -t unstable nvidia-kernel-source[/code]
La suite est la même :
[code]
# m-a a-i -i nvidia-kernel-source
# apt-get install nvidia-glx
[/code]

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf
[code]
# nano /etc/X11/xorg.conf
[/code]
Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)
[code]
Section &quot;Device&quot;
    Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
    Driver         &quot;nv&quot;
EndSection
[/code]
Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
[code]    Driver         &quot;nv&quot;[/code]
Par :
[code]    Driver         &quot;nvidia&quot;[/code]
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :
Pour GNOME :
[code]# /etc/init.d/gdm restart[/code]
Pour KDE :
[code]# /etc/init.d/kdm restart[/code]
Ou si vous êtes sur de rien :
[code]
# reboot
[/code]


== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manips à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources, ça évite pas mal de problèmes, mais si on voit :
[code]
Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,
[/code]
lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.


== ANNEXE 1 ==
 : Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :
[code]
$ su
# rm -rf /usr/src/modules/nvidia-kernel/
# cd /usr/src
# tar xjvf nvidia-kernel.tar.bz2
# cd modules/nvidia-kernel/debian
# cp control.template control
# m-a a-i -i nvidia-kernel-source
# apt-get install nvidia-glx
[/code]
Retournez à la partie V</text>
      <sha1>20pnwq01qxcd07a32lo38ulawtierpx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>124</id>
      <parentid>120</parentid>
      <timestamp>2010-01-23T04:28:54Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page blanchie</comment>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1496</id>
      <parentid>124</parentid>
      <timestamp>2010-05-17T11:02:49Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="27">[[Catégorie:Carte_Vidéo]]</text>
      <sha1>6xaaltmq3f89uwxukda4c57one7rcgn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Paquets</title>
    <ns>14</ns>
    <id>202</id>
    <revision>
      <id>747</id>
      <timestamp>2010-02-02T06:40:44Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « [[Catégorie:General]] »</comment>
      <text xml:space="preserve" bytes="22">[[Catégorie:General]]</text>
      <sha1>0gwbgi9wry31zteal7fsyyj8oyp1tr1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1067</id>
      <parentid>747</parentid>
      <timestamp>2010-02-11T08:04:51Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="24">[[Catégorie:Logiciels]]</text>
      <sha1>sort88k9k4zu53lsnbjzn9yvqkk2vjf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Pilotes</title>
    <ns>14</ns>
    <id>522</id>
    <revision>
      <id>2109</id>
      <timestamp>2010-09-15T17:19:46Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « [[Catégorie:Matériel_et_Drivers]] »</comment>
      <text xml:space="preserve" bytes="35">[[Catégorie:Matériel_et_Drivers]]</text>
      <sha1>mzy3yz1cgdl6hbyiq329gwmmtp5uy0a</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Programmation</title>
    <ns>14</ns>
    <id>195</id>
    <revision>
      <id>740</id>
      <timestamp>2010-02-02T06:35:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « [[Catégorie:General]] »</comment>
      <text xml:space="preserve" bytes="22">[[Catégorie:General]]</text>
      <sha1>0gwbgi9wry31zteal7fsyyj8oyp1tr1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Raccourcis/alias</title>
    <ns>14</ns>
    <id>209</id>
    <revision>
      <id>774</id>
      <timestamp>2010-02-03T00:39:14Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <comment>Page créée avec « [[Catégorie:Raccourcis/alias]] »</comment>
      <text xml:space="preserve" bytes="31">[[Catégorie:Raccourcis/alias]]</text>
      <sha1>o0l1jrkuc9tfj7745cm1crmc9j3pcxu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>800</id>
      <parentid>774</parentid>
      <timestamp>2010-02-03T11:54:36Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="24">[[Catégorie:Commandes]]</text>
      <sha1>5esfhlro33lfatom50pfo0eygra63ot</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Ressource</title>
    <ns>14</ns>
    <id>1022</id>
    <revision>
      <id>4309</id>
      <timestamp>2012-06-03T09:31:40Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>Page créée avec « Cette catégorie regroupe sles différents types de ressources à savoir : *Tutoriel *Documentation *Trucs et astuces »</comment>
      <text xml:space="preserve" bytes="117">Cette catégorie regroupe sles différents types de ressources à savoir :
*Tutoriel
*Documentation
*Trucs et astuces</text>
      <sha1>k9i1zdm2bhs027j9m87j42f1cy8hg1d</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4312</id>
      <parentid>4309</parentid>
      <timestamp>2012-06-03T09:40:50Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="294">Cette catégorie regroupe les différents types de ressources à savoir :
*Tutoriel
*Documentation
*Trucs et astuces

Pour rajouter une ressources cliquez [[Has default form::Protocole|ici]]

[[Has filter::Filter:Protocole| ]] 
[[Has filter::Filter:Action| ]]  
[[Has filter::Version debian| ]]</text>
      <sha1>63sdby0z8gq15tpq833j97r7rlf5yde</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4313</id>
      <parentid>4312</parentid>
      <timestamp>2012-06-03T09:41:32Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="301">Cette catégorie regroupe les différents types de ressources à savoir :
*Tutoriel
*Documentation
*Trucs et astuces

Pour rajouter une ressources cliquez [[Has default form::Trucs et astuces|ici]]

[[Has filter::Filter:Protocole| ]] 
[[Has filter::Filter:Action| ]]  
[[Has filter::Version debian| ]]</text>
      <sha1>k4ekuedm9d1qamj9qm607x3jduumpz1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4314</id>
      <parentid>4313</parentid>
      <timestamp>2012-06-03T09:41:45Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="301">Cette catégorie regroupe les différents types de ressources à savoir :
*Tutoriel
*Documentation
*Trucs et astuces

Pour rajouter une ressources cliquez [[Has default form::Trucs et Astuces|ici]]

[[Has filter::Filter:Protocole| ]] 
[[Has filter::Filter:Action| ]]  
[[Has filter::Version debian| ]]</text>
      <sha1>481lpfmwh69gcyep20rt3briuljecil</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Réseau</title>
    <ns>14</ns>
    <id>239</id>
    <revision>
      <id>1054</id>
      <timestamp>2010-02-09T04:14:52Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « [[Catégorie:Matériel et Drivers]] »</comment>
      <text xml:space="preserve" bytes="35">[[Catégorie:Matériel et Drivers]]</text>
      <sha1>bniac6j7vpc9116trfsnskrvdfj9vjk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Réseau Avancé</title>
    <ns>14</ns>
    <id>415</id>
    <revision>
      <id>1508</id>
      <timestamp>2010-05-17T11:17:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « [[Category:Réseau et Wifi]] »</comment>
      <text xml:space="preserve" bytes="28">[[Category:Réseau et Wifi]]</text>
      <sha1>nkicxfmx5tl33mslx7xdbiey9hd437y</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Réseau Généralités</title>
    <ns>14</ns>
    <id>236</id>
    <revision>
      <id>1041</id>
      <timestamp>2010-02-08T06:53:05Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « [[Category:Réseau et Wifi]] »</comment>
      <text xml:space="preserve" bytes="28">[[Category:Réseau et Wifi]]</text>
      <sha1>nkicxfmx5tl33mslx7xdbiey9hd437y</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Réseau et Wifi</title>
    <ns>14</ns>
    <id>235</id>
    <revision>
      <id>1038</id>
      <timestamp>2010-02-08T04:40:47Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « [[Catégorie:General]] »</comment>
      <text xml:space="preserve" bytes="22">[[Catégorie:General]]</text>
      <sha1>0gwbgi9wry31zteal7fsyyj8oyp1tr1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Sauvegardes</title>
    <ns>14</ns>
    <id>737</id>
    <revision>
      <id>3256</id>
      <timestamp>2011-08-11T08:13:35Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « [[Catégorie:Sécurité]] »</comment>
      <text xml:space="preserve" bytes="25">[[Catégorie:Sécurité]]</text>
      <sha1>esr0i2491pc8kgvkvirmp0v61vchdr9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Scripts</title>
    <ns>14</ns>
    <id>490</id>
    <revision>
      <id>1896</id>
      <timestamp>2010-08-08T06:44:53Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « [[Category:Programmation]] »</comment>
      <text xml:space="preserve" bytes="26">[[Category:Programmation]]</text>
      <sha1>6h58e5jfelut6d74s5o2vsfyro4psfd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2533</id>
      <parentid>1896</parentid>
      <timestamp>2010-12-25T22:21:16Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <text xml:space="preserve" bytes="642">[[Category:Programmation]]

=Conseils=
Vous pouvez trouvez ici quelques pages donnant quelques conseils pour la création de vos scripts.

* [[POSIX]] : Voici une page vous décrivant les bonnes démarches pour que vos scripts shells soient le plus conforment POSIX possibles.


=Liste de scripts=
Voici un ensemble de scripts libres conçus et proposés par des membres :

==C==
* [[Client FTP|Client FTP]]

==G==
* [[Graver_en_ligne_de_commande|Graver en ligne de commande]]

==R==
* [[Rsync_%2B_NFS_(Script_de_sauvegarde_différentielle_journalière)|Rsync + NFS (Script de sauvegarde différentielle journalière)]]

==Y==
* [[Yaptitude]]</text>
      <sha1>czoqulxoctt92m0pe4p3u5ls2jmsgz0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2535</id>
      <parentid>2533</parentid>
      <timestamp>2010-12-25T23:00:44Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <text xml:space="preserve" bytes="762">[[Category:Programmation]]

=Conseils=
Vous pouvez trouvez ici quelques pages donnant quelques conseils pour la création de vos scripts.

* [[POSIX]] : Voici une page vous décrivant les bonnes démarches pour que vos scripts shells soient le plus conforment POSIX possibles.
* [[UUOC|Useless Use of cat]] : Voici quelques conseils qui vous permettrons d'éviter les utilisations inutiles de cat


=Liste de scripts=
Voici un ensemble de scripts libres conçus et proposés par des membres :

==C==
* [[Client FTP|Client FTP]]

==G==
* [[Graver_en_ligne_de_commande|Graver en ligne de commande]]

==R==
* [[Rsync_%2B_NFS_(Script_de_sauvegarde_différentielle_journalière)|Rsync + NFS (Script de sauvegarde différentielle journalière)]]

==Y==
* [[Yaptitude]]</text>
      <sha1>1ned5jhz2sbrnjmp6basn7u2y679kmg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2536</id>
      <parentid>2535</parentid>
      <timestamp>2010-12-25T23:14:03Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>La flemme de créer la page et devrait plutôt être sur la meilleure façon d'utiliser certaines commandes.</comment>
      <text xml:space="preserve" bytes="642">[[Category:Programmation]]

=Conseils=
Vous pouvez trouvez ici quelques pages donnant quelques conseils pour la création de vos scripts.

* [[POSIX]] : Voici une page vous décrivant les bonnes démarches pour que vos scripts shells soient le plus conforment POSIX possibles.


=Liste de scripts=
Voici un ensemble de scripts libres conçus et proposés par des membres :

==C==
* [[Client FTP|Client FTP]]

==G==
* [[Graver_en_ligne_de_commande|Graver en ligne de commande]]

==R==
* [[Rsync_%2B_NFS_(Script_de_sauvegarde_différentielle_journalière)|Rsync + NFS (Script de sauvegarde différentielle journalière)]]

==Y==
* [[Yaptitude]]</text>
      <sha1>czoqulxoctt92m0pe4p3u5ls2jmsgz0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Serveurs</title>
    <ns>14</ns>
    <id>414</id>
    <revision>
      <id>1506</id>
      <timestamp>2010-05-17T11:15:20Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « [[Catégorie:Logiciels]] »</comment>
      <text xml:space="preserve" bytes="24">[[Catégorie:Logiciels]]</text>
      <sha1>sort88k9k4zu53lsnbjzn9yvqkk2vjf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4307</id>
      <parentid>1506</parentid>
      <timestamp>2012-06-03T09:28:14Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="46">[[Catégorie:Logiciels]]
__HIDEFROMDRILLDOWN__</text>
      <sha1>nztwdzkhg1xant4taxeo0te5qb9emec</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Serveurs:Configuration dun serveur mail avec postfix</title>
    <ns>14</ns>
    <id>418</id>
    <revision>
      <id>1536</id>
      <timestamp>2010-05-27T12:16:29Z</timestamp>
      <contributor>
        <username>AnatomicJC</username>
        <id>39</id>
      </contributor>
      <comment>[INIT] Création de la page</comment>
      <text xml:space="preserve" bytes="16207">= Configuration d'un serveur mail avec postfix  =

Vous ne voulez plus confier vos mails à Gmail, Yahoo ou Hotmail ? 

Vous aimeriez héberger vos mails chez vous mais vous pensez que c'est trop dur, trop compliqué ? 

Vous pensez qu'il faut être ingénieur pour monter un serveur mail ? 

Que nenni !! Nous allons voir dans ce tuto la mise en place d'un serveur mail avec Postfix dans le cadre d'une utilisation personnelle. 

Il ne s'agit pas ici de concurrencer Gmail ou Yahoo mais bien d'avoir notre petite boîte mail bien à nous. Faite avec amour. Et qui marche !! 

Ici, pas de gestion par base SQL ou annuaire LDAP, je vais tâcher de faire le plus simple possible. 

C'est parti !! 

= Une adresse mail, c'est quoi ?  =

== kevin@wanadoo.fr  ==

Une adresse mail, c'est un peu comme une adresse postale. Elle se divise en 2 parties&amp;nbsp;: 

*un domaine&amp;nbsp;: '''wanadoo.fr''' 
*un utilisateur&amp;nbsp;: '''kevin'''

Dans mon exemple, lorsque l'on écrit à Kevin via l'adresse '''kevin@wanadoo.fr''', cela signifie que l'on écrit à l'utilisateur '''kevin''' du domaine '''wanadoo.fr'''. 

Plus précisément, le mail arrive sur la '''machine''' sur laquelle se trouve le '''serveur mail''' de wanadoo.fr, pour être ensuite remis dans la '''boîte mail''' de l'utilisateur kevin. 

== Identifier le serveur mail de wanadoo.fr  ==

Wanadoo.fr, c'est le domaine. Le service mail se trouve quant à lui sur une machine bien precise. Pour l'identifier, une commande bien pratique&amp;nbsp;: 

 $ host -t MX wanadoo.fr
 wanadoo.fr mail is handled by 10 smtp.wanadoo.fr.

'''smtp''' est un ''sous-domaine'' de '''wanadoo.fr''', et la machine sur laquelle se trouve le serveur mail se nomme justement '''smtp.wanadoo.fr'''… 

 $ ping smtp.wanadoo.fr
 PING smtp.wanadoo.fr (80.12.242.142) 56(84) bytes of data.

… et son adresse IP est '''80.12.242.142'''. 

Dans la réalité, l'architecture mail de Wanadoo (Orange maintenant…) est je pense un peu plus compliquée que ça mais ça donne une bonne image de ce que nous allons reproduire pour notre serveur mail. 

= Prérequis  =

Pour avoir son serveur mail, il faut donc&amp;nbsp;: 

*un nom de domaine 
*une IP fixe 
*un PC allumé si possible 24h/24

Pourquoi une IP fixe&amp;nbsp;? Les mails doivent pouvoir toujours trouver le serveur mail, c'est pourquoi l'IP doit être fixe. 

L'association nom de domaine ⇔ adresse IP se règle au niveau du serveur DNS. C'est celui-ci que nous allons régler en premier. 

== Configurer le serveur DNS  ==

Cette partie se révèle souvent être une prise de tête pour les apprentis auto-hébergés. 

On doit spécifier dans le serveur DNS sur quelle IP on peut joindre le serveur mail. 

La plupart des registrars (les marchands de noms de domaine) fournissent une interface simplifiée pour le serveur DNS. 

=== Le champ A  ===

Il faut tout d'abord configurer le champ '''A''' qui fait le lien entre nom de domaine et l'adresse IP du serveur&amp;nbsp;: 

 @       IN    A    12.34.56.78 
 smtp    IN    A    12.34.56.78

'''@'''&amp;nbsp;: signifie que '''monDomaine.com''' est lié à l'IP 12.34.56.78 

'''smtp'''&amp;nbsp;: signifie que le sous-domaine '''smtp.monDomaine.com''' est lui aussi lié à l'IP 12.34.56.78 

Vous pouvez indiquer des adresses IP différentes si vous possédez plusieurs serveurs et plusieurs IP. 

=== Le champ MX  ===

Une fois que le champ '''A''' est complété, il faut pour définir le serveur mail s'occuper du champ '''MX''' ('''M'''ail e'''X'''change). 

Nous allons convenir que le serveur mail correspond au serveur '''smtp.monDomaine.com'''. Son adresse IP ayant déjà été définie par le champ '''A''', le champ '''MX''' s'écrit sous cette forme&amp;nbsp;: 

 monDomaine.com.    IN    MX    10    smtp

Ce qui signifie que '''smtp''' du champ '''A''' sera le serveur '''MX''' de '''monDomaine.com'''. 

Vous suivez toujours&amp;nbsp;?? 

Lorsque vous enverrez des mails sur le domaine '''monDomaine.com''', ils seront automatiquement acheminés vers le serveur '''smtp.monDomaine.com'''. 

'''''Important&amp;nbsp;:''''' 

*Un champ '''MX''' se définit toujours sur un champ '''A''', pas sur un '''CNAME''' (non abordé ici) 
*Ne pas oublier le point après monDomaine.com.

== Vérifications  ==

Avant même d'installer et configurer son serveur, il faut faire quelques vérifications. 

 $ host -t MX monDomaine.com

Cette commande doit retourner une ligne de ce genre&amp;nbsp;: 

 monDomaine.com mail is handled by 10 smtp.monDomaine.com

Bien sûr, ''smtp.monDomaine.com'' doit être associé à votre IP fixe (ici '''12.34.56.78''')&amp;nbsp;: 

 $ ping smtp.monDomaine.com
 PING smtp.monDomaine.com (12.34.56.78) 56(84) bytes of data.

Si ces 2 vérifications ne fonctionnent pas, '''ce n'est pas la peine d'aller plus loin''', votre serveur DNS est mal configuré. 

= Ouverture des ports  =

Si votre serveur se trouve derrière une *box, il ne pourra pas communiquer avec le monde extérieur. Il nous faut '''ouvrir des ports'''. 

Votre *box possède une '''IP fixe publique''', c'est l'IP que vous avez normalement renseignée dans votre serveur DNS. 

Derrière votre *box, il y a votre serveur mail qui lui possède également une adresse IP, '''privée'''. Les adresses privées sont en général 192.168.0.xxx ou 192.168.1.xxx. 

Admettons que votre serveur aie comme IP 192.168.0.25 dans votre réseau privé. Il faut alors que votre *box redirige toutes les requètes mail vers l'IP privée 192.168.0.25. 

Les ports à ouvrir sont&amp;nbsp;: 

*25&amp;nbsp;: pour que le serveur réceptionne les mails 
*110&amp;nbsp;: pour relever ses mails via POP 
*143&amp;nbsp;: pour relever ses mails via IMAP

Tous ces ports sont à ouvrir en '''TCP'''. 

Freebox&amp;nbsp;: [http://www.dslvalley.com/dossiers/freebox/freebox-nat.php http://www.dslvalley.com/dossiers/freebox/freebox-nat.php] 

NeufBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php] (fin de page) 

LiveBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/orange/livebox-emule.php http://www.dslvalley.com/dossiers/orange/livebox-emule.php] (fin de page) 

= Installation de postfix  =

Votre DNS est correctement configuré&amp;nbsp;? Les ports sont ouverts&amp;nbsp;? Bien. Vous avez fait le plus dur. 

Vérifiez le nom de votre machine&amp;nbsp;: 

 $ hostname

Cette commande doit vous retourner '''smtp.monDomaine.com'''. Si ce n'est pas le cas, éditez le fichier '''/etc/hosts''' et vérifiez que vous avez une ligne comme suit&amp;nbsp;: 

 127.0.0.1 smtp.monDomaine.com smtp

Puis&amp;nbsp;: 

 &lt;nowiki&gt;# hostname smtp.monDomaine.com&lt;/nowiki&gt;

Normalement, le hostname est maintenant OK. 

Il est important que le '''hostname''' de votre machine soit le même que celui retourné par la commande '''host -t MX monDomaine.com''', sinon Postfix va vous emmerder. 

Installons postfix&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install postfix&lt;/nowiki&gt;

Choisissez la configuration '''Internet Site'''. Indiquez ensuite le nom de votre machine&amp;nbsp;: '''smtp.monDomaine.com''' (correspond au ''hostname'') 

Au cas où vous voudriez recommencer&amp;nbsp;: 

 &lt;nowiki&gt;# dpkg-reconfigure postfix&lt;/nowiki&gt;

= Configuration  =

Le fichier de configuration de postfix est '''/etc/postfix/main.cf'''. Il est par défaut très bien sécurisé. 

Nous allons dans un premier temps y ajouter cette ligne&amp;nbsp;: 

 home_mailbox = Maildir/

Cette ligne dit à postfix que les mails des utilisateurs doivent aller dans un répertoire nommé Maildir. 

Commentez (ajoutez un #) la ligne où se trouve '''mailbox_command''' pour que procmail ne soit pas utilisé (en tout cas pas pour le moment): 

 &lt;nowiki&gt;#mailbox_command = procmail -a &quot;$EXTENSION&quot;&lt;/nowiki&gt;

Pour que la modification soit prise en compte, redémarrez postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

= Création d'un nouveau mail  =

Bien. Vous avez votre domaine, votre serveur mail tourne. Créer une adresse mail est très simple. Il suffit d'ajouter un utilisateur&amp;nbsp;!! 

Vous voulez créer une adresse kevin@monDomaine.com&amp;nbsp;? Ajoutez l'utilisateur kevin sur votre machine&amp;nbsp;: 

 &lt;nowiki&gt;# adduser kevin&lt;/nowiki&gt;

Répondez aux questions, choisissez un mot de passe à kevin et c'est tout. 

= Tester l'adresse en local  =

Nous allons envoyer un mail à Kevin, vérifions que le paquet '''mailx''' est installé&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install mailx&lt;/nowiki&gt;

On envoie le mail&amp;nbsp;: 

 &lt;nowiki&gt;# echo &quot;Le contenu du mail&quot; | mail -s &quot;ceci est le sujet&quot; kevin@monDomaine.com&lt;/nowiki&gt;

Le mail sera automatiquement déposé dans le répertoire '''Maildir''' situé dans le home de kevin. S'il n'existe pas, le dossier '''Maildir''' sera automatiquement créé. 

 &lt;nowiki&gt;# ls /home/kevin&lt;/nowiki&gt;
 Maildir

N'hésitez pas à consulter les logs pour voir tout ce qui se passe sur votre serveur mail&amp;nbsp;: 

 &lt;nowiki&gt;# cat /var/log/mail.log&lt;/nowiki&gt;

= Kevin veut lire ses mails&amp;nbsp;!!  =

Envoyer des mails, c'est bien mais pouvoir les lire, c'est mieux&amp;nbsp;!! Pour que Kevin puisse lire ses mails dans un client comme '''Mozilla Thunderbird''', c'est tout simple&amp;nbsp;: 

Kevin veut réceptionner ces mails via IMAP&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-imapd&lt;/nowiki&gt;

Il préfère POP3&amp;nbsp;? Pas de problèmes&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-pop3d&lt;/nowiki&gt;

C'est tout, vous pouvez maintenant utiliser votre client mail favori pour réceptionner vos mails. 

Serveur&amp;nbsp;: '''smtp.monDomaine.com''' 

Login&amp;nbsp;: '''kevin''' 

Password&amp;nbsp;: '''le password défini lors de la création de l'utilisateur kevin''' 

= Kevin veut envoyer des mails&amp;nbsp;!!  =

Kevin est content, il peut lire ses mails. Seulement, il aimerait répondre à ses amis mais il ne peut pas. 

== Utiliser le SMTP de son FAI  ==

Postfix possède son propre service SMTP, mais ce dernier sera généralement bloqué. Pour limiter les envois de SPAMS, les FAI bloquent généralement l'envoi de mails. 

Pour que votre serveur mail puisse envoyer des mails, il faut lui dire d'utiliser le SMTP de votre FAI. C'est le paramètre '''relayhost''' du fichier de configuration '''/etc/postfix/main.cf''' qu'il faut modifier&amp;nbsp;: 

 relayhost = smtp.votreFAI.com

Principaux SMTP français&amp;nbsp;: 

 Orange&amp;nbsp;: smtp.orange.fr
 Free&amp;nbsp;: smtp.free.fr
 Neuf&amp;nbsp;: smtp.neuf.fr

== Utiliser le SMTP de Postfix  ==

Cependant, certains FAI (comme Free) permettent de lever ce blocage via une option dans leur panel de gestion. 

Dans ce cas, plus besoin du '''relayhost'''. Vos mails ne passeront plus par votre FAI, c'est VOTRE serveur qui enverra directement les mails. 

Le problème est que les mails que vous enverrez vers les boîtes '''Yahoo''' seront classées en tant que SPAM. '''AOL''' ne voudra pas de vos mails (ce sera explicitement marqué dans les logs). Quant à '''Hotmail''', les logs vous diront que les mails ont bien été reçus, mais vos correspondants ne les recevront jamais. '''Gmail''' ne pose quant à lui aucun soucis. 

Vous voulez utiliser le plus possible votre propre SMTP mais vous voulez quand même pouvoir envoyer des mails vers vos potes qui restés chez Hotmail&amp;nbsp;? 

Créez un fichier '''/etc/postfix/transport''' avec ce contenu&amp;nbsp;: 

 hotmail.fr    smtp:smtp.free.fr
 hotmail.com   smtp:smtp.free.fr
 yahoo.fr      smtp:smtp.free.fr
 yahoo.com     smtp:smtp.free.fr

Ce fichier dit à postfix que pour les domaines hotmail.fr, hotmail.com, yahoo, etc., il utilisera le SMTP de free. Pour tous les autres domaine, il utilisera le smtp local. A vous d'adapter ce fichier en fonction des domaines qui ne veulent pas de vous. 

Bien sûr, si vous n'êtes pas abonné Free, vous ne pourrez pas utiliser le SMTP de Free. 

Pour que Postfix prenne en compte ce fichier, executez cette commande&amp;nbsp;: 

 &lt;nowiki&gt;# postmap /etc/postfix/transport&lt;/nowiki&gt;

Puis relancez Postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

A chaque fois que vous modifierez '''/etc/postfix/transport''', n'oubliez pas d'executer la commande précédente (postmap). 

== Login... Passwd...  ==

Actuellement, postfix n'accepte d'envoyer les mails que s'ils sont envoyés depuis le serveur mail. Vous avez sûrement l'habitude d'envoyer les mails depuis un autre PC. Généralement, le SMTP demande un login, un password et envoie vos mails. 

C'est ce que nous alons régler maintenant. 

Problème&amp;nbsp;: Postfix seul ne fournit pas de service d'identification. Il doit utiliser un serveur SASL externe. 

Solution&amp;nbsp;: Dovecot, que nous avons précédemment installé pour la réception de mails (IMAP-POP3) peut faire office de serveur SASL. 

Pour activer ce service, dans le fichier de configuration '''/etc/dovecot/dovecot.conf''', ajoutez (ou décommentez) ceci dans la section auth default { }&amp;nbsp;: 

 auth default {
 …
 socket listen {
   client {
     path  &lt;nowiki&gt;= /var/spool/postfix/private/auth&lt;/nowiki&gt;
    group = postfix
    mode  &lt;nowiki&gt;= 0660&lt;/nowiki&gt;
  }
 }
 …

Il s'agit pour Dovecot de créer un socket Unix, sur lequel il écoutera les demandes d'identification provenant de Postfix. Comme le service SMTP de Postfix est chrooté (emprisonné) dans le répertoire '''/var/spool/postfix/''', il faut placer ce socket sous ce répertoire. Maintenant, relancez Dovecot&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/dovecot restart&lt;/nowiki&gt;

Dovecot accepte l'identification mais Postfix ne le sait pas&amp;nbsp;!! Il faut lui dire (ajoutez dans '''/etc/postfix/main.cf''')&amp;nbsp;: 

 &lt;nowiki&gt;# Activer l'identification SASL&lt;/nowiki&gt;
 smtpd_sasl_auth_enable = yes

 &lt;nowiki&gt;# Utiliser le service d'identification de Dovecot&lt;/nowiki&gt;
 smtpd_sasl_type = dovecot
 smtpd_sasl_path = private/auth

 &lt;nowiki&gt;# Noter dans les en-tête des messages l'identifiant de l'utilisateur.&lt;/nowiki&gt;
 smtpd_sasl_authenticated_header = yes

Profitons-en pour paufiner le fichier de configuration de postfix '''/etc/postfix/main.cf'''&amp;nbsp;: 

 &lt;nowiki&gt;# Règles pour accepter ou refuser une connexion :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on attend une seconde (pour piéger les zombies) ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on interdit la parallélisation là où il n'est pas sensé y en avoir.&lt;/nowiki&gt;
 smtpd_client_restrictions =
    permit_mynetworks, permit_sasl_authenticated,
    sleep 1, reject_unauth_pipelining

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le nom&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'hôte de l'expéditeur (par sa commande HELO ou EHLO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on refuse les noms d'hôte invalides.&lt;/nowiki&gt;
 smtpd_helo_restrictions = reject_invalid_helo_hostname

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît l'adresse&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'expéditeur :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un expéditeur inexistant de notre domaine, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si le domaine de l'expéditeur n'a pas d'IP ou de MX, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un client sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de l'expéditeur n'est pas sous forme canonique, on le refuse.&lt;/nowiki&gt;
 smtpd_sender_restrictions =
    reject_unlisted_sender, reject_unknown_sender_domain,
    permit_mynetworks, permit_sasl_authenticated,
    reject_non_fqdn_sender

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le&lt;/nowiki&gt;
 &lt;nowiki&gt;# destinataire (par la commande RCPT TO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un expéditeur forgé chez nous, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un domaine forgé, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un hôte sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de destination n'est pas sous forme canonique, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - finalement, s'il n'est pas destiné à un domaine que l'on gère ou pour&lt;/nowiki&gt;
 &lt;nowiki&gt;# &lt;/nowiki&gt;  lequel on relaie, on le refuse.
 smtpd_recipient_restrictions =
     reject_unlisted_recipient, reject_unknown_recipient_domain,
     permit_mynetworks, permit_sasl_authenticated,
     reject_non_fqdn_recipient,
     reject_unauth_destination

Allez, on relance postfix pour qu'il prenne en compte tout ça&amp;nbsp;: 

 /etc/init.d/postfix restart</text>
      <sha1>2xtfazhucils3gf3y595r2y2yu2zjj5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1537</id>
      <parentid>1536</parentid>
      <timestamp>2010-05-27T12:22:47Z</timestamp>
      <contributor>
        <username>AnatomicJC</username>
        <id>39</id>
      </contributor>
      <comment>Page blanchie</comment>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Serveurs:Test</title>
    <ns>14</ns>
    <id>417</id>
    <revision>
      <id>1534</id>
      <timestamp>2010-05-27T12:14:42Z</timestamp>
      <contributor>
        <username>AnatomicJC</username>
        <id>39</id>
      </contributor>
      <comment>Page créée avec « = Configuration d'un serveur mail avec postfix  =  Vous ne voulez plus confier vos mails à Gmail, Yahoo ou Hotmail ?   Vous aimeriez héberger vos mails chez vous mais vous … »</comment>
      <text xml:space="preserve" bytes="16207">= Configuration d'un serveur mail avec postfix  =

Vous ne voulez plus confier vos mails à Gmail, Yahoo ou Hotmail ? 

Vous aimeriez héberger vos mails chez vous mais vous pensez que c'est trop dur, trop compliqué ? 

Vous pensez qu'il faut être ingénieur pour monter un serveur mail ? 

Que nenni !! Nous allons voir dans ce tuto la mise en place d'un serveur mail avec Postfix dans le cadre d'une utilisation personnelle. 

Il ne s'agit pas ici de concurrencer Gmail ou Yahoo mais bien d'avoir notre petite boîte mail bien à nous. Faite avec amour. Et qui marche !! 

Ici, pas de gestion par base SQL ou annuaire LDAP, je vais tâcher de faire le plus simple possible. 

C'est parti !! 

= Une adresse mail, c'est quoi ?  =

== kevin@wanadoo.fr  ==

Une adresse mail, c'est un peu comme une adresse postale. Elle se divise en 2 parties&amp;nbsp;: 

*un domaine&amp;nbsp;: '''wanadoo.fr''' 
*un utilisateur&amp;nbsp;: '''kevin'''

Dans mon exemple, lorsque l'on écrit à Kevin via l'adresse '''kevin@wanadoo.fr''', cela signifie que l'on écrit à l'utilisateur '''kevin''' du domaine '''wanadoo.fr'''. 

Plus précisément, le mail arrive sur la '''machine''' sur laquelle se trouve le '''serveur mail''' de wanadoo.fr, pour être ensuite remis dans la '''boîte mail''' de l'utilisateur kevin. 

== Identifier le serveur mail de wanadoo.fr  ==

Wanadoo.fr, c'est le domaine. Le service mail se trouve quant à lui sur une machine bien precise. Pour l'identifier, une commande bien pratique&amp;nbsp;: 

 $ host -t MX wanadoo.fr
 wanadoo.fr mail is handled by 10 smtp.wanadoo.fr.

'''smtp''' est un ''sous-domaine'' de '''wanadoo.fr''', et la machine sur laquelle se trouve le serveur mail se nomme justement '''smtp.wanadoo.fr'''… 

 $ ping smtp.wanadoo.fr
 PING smtp.wanadoo.fr (80.12.242.142) 56(84) bytes of data.

… et son adresse IP est '''80.12.242.142'''. 

Dans la réalité, l'architecture mail de Wanadoo (Orange maintenant…) est je pense un peu plus compliquée que ça mais ça donne une bonne image de ce que nous allons reproduire pour notre serveur mail. 

= Prérequis  =

Pour avoir son serveur mail, il faut donc&amp;nbsp;: 

*un nom de domaine 
*une IP fixe 
*un PC allumé si possible 24h/24

Pourquoi une IP fixe&amp;nbsp;? Les mails doivent pouvoir toujours trouver le serveur mail, c'est pourquoi l'IP doit être fixe. 

L'association nom de domaine ⇔ adresse IP se règle au niveau du serveur DNS. C'est celui-ci que nous allons régler en premier. 

== Configurer le serveur DNS  ==

Cette partie se révèle souvent être une prise de tête pour les apprentis auto-hébergés. 

On doit spécifier dans le serveur DNS sur quelle IP on peut joindre le serveur mail. 

La plupart des registrars (les marchands de noms de domaine) fournissent une interface simplifiée pour le serveur DNS. 

=== Le champ A  ===

Il faut tout d'abord configurer le champ '''A''' qui fait le lien entre nom de domaine et l'adresse IP du serveur&amp;nbsp;: 

 @       IN    A    12.34.56.78 
 smtp    IN    A    12.34.56.78

'''@'''&amp;nbsp;: signifie que '''monDomaine.com''' est lié à l'IP 12.34.56.78 

'''smtp'''&amp;nbsp;: signifie que le sous-domaine '''smtp.monDomaine.com''' est lui aussi lié à l'IP 12.34.56.78 

Vous pouvez indiquer des adresses IP différentes si vous possédez plusieurs serveurs et plusieurs IP. 

=== Le champ MX  ===

Une fois que le champ '''A''' est complété, il faut pour définir le serveur mail s'occuper du champ '''MX''' ('''M'''ail e'''X'''change). 

Nous allons convenir que le serveur mail correspond au serveur '''smtp.monDomaine.com'''. Son adresse IP ayant déjà été définie par le champ '''A''', le champ '''MX''' s'écrit sous cette forme&amp;nbsp;: 

 monDomaine.com.    IN    MX    10    smtp

Ce qui signifie que '''smtp''' du champ '''A''' sera le serveur '''MX''' de '''monDomaine.com'''. 

Vous suivez toujours&amp;nbsp;?? 

Lorsque vous enverrez des mails sur le domaine '''monDomaine.com''', ils seront automatiquement acheminés vers le serveur '''smtp.monDomaine.com'''. 

'''''Important&amp;nbsp;:''''' 

*Un champ '''MX''' se définit toujours sur un champ '''A''', pas sur un '''CNAME''' (non abordé ici) 
*Ne pas oublier le point après monDomaine.com.

== Vérifications  ==

Avant même d'installer et configurer son serveur, il faut faire quelques vérifications. 

 $ host -t MX monDomaine.com

Cette commande doit retourner une ligne de ce genre&amp;nbsp;: 

 monDomaine.com mail is handled by 10 smtp.monDomaine.com

Bien sûr, ''smtp.monDomaine.com'' doit être associé à votre IP fixe (ici '''12.34.56.78''')&amp;nbsp;: 

 $ ping smtp.monDomaine.com
 PING smtp.monDomaine.com (12.34.56.78) 56(84) bytes of data.

Si ces 2 vérifications ne fonctionnent pas, '''ce n'est pas la peine d'aller plus loin''', votre serveur DNS est mal configuré. 

= Ouverture des ports  =

Si votre serveur se trouve derrière une *box, il ne pourra pas communiquer avec le monde extérieur. Il nous faut '''ouvrir des ports'''. 

Votre *box possède une '''IP fixe publique''', c'est l'IP que vous avez normalement renseignée dans votre serveur DNS. 

Derrière votre *box, il y a votre serveur mail qui lui possède également une adresse IP, '''privée'''. Les adresses privées sont en général 192.168.0.xxx ou 192.168.1.xxx. 

Admettons que votre serveur aie comme IP 192.168.0.25 dans votre réseau privé. Il faut alors que votre *box redirige toutes les requètes mail vers l'IP privée 192.168.0.25. 

Les ports à ouvrir sont&amp;nbsp;: 

*25&amp;nbsp;: pour que le serveur réceptionne les mails 
*110&amp;nbsp;: pour relever ses mails via POP 
*143&amp;nbsp;: pour relever ses mails via IMAP

Tous ces ports sont à ouvrir en '''TCP'''. 

Freebox&amp;nbsp;: [http://www.dslvalley.com/dossiers/freebox/freebox-nat.php http://www.dslvalley.com/dossiers/freebox/freebox-nat.php] 

NeufBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php] (fin de page) 

LiveBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/orange/livebox-emule.php http://www.dslvalley.com/dossiers/orange/livebox-emule.php] (fin de page) 

= Installation de postfix  =

Votre DNS est correctement configuré&amp;nbsp;? Les ports sont ouverts&amp;nbsp;? Bien. Vous avez fait le plus dur. 

Vérifiez le nom de votre machine&amp;nbsp;: 

 $ hostname

Cette commande doit vous retourner '''smtp.monDomaine.com'''. Si ce n'est pas le cas, éditez le fichier '''/etc/hosts''' et vérifiez que vous avez une ligne comme suit&amp;nbsp;: 

 127.0.0.1 smtp.monDomaine.com smtp

Puis&amp;nbsp;: 

 &lt;nowiki&gt;# hostname smtp.monDomaine.com&lt;/nowiki&gt;

Normalement, le hostname est maintenant OK. 

Il est important que le '''hostname''' de votre machine soit le même que celui retourné par la commande '''host -t MX monDomaine.com''', sinon Postfix va vous emmerder. 

Installons postfix&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install postfix&lt;/nowiki&gt;

Choisissez la configuration '''Internet Site'''. Indiquez ensuite le nom de votre machine&amp;nbsp;: '''smtp.monDomaine.com''' (correspond au ''hostname'') 

Au cas où vous voudriez recommencer&amp;nbsp;: 

 &lt;nowiki&gt;# dpkg-reconfigure postfix&lt;/nowiki&gt;

= Configuration  =

Le fichier de configuration de postfix est '''/etc/postfix/main.cf'''. Il est par défaut très bien sécurisé. 

Nous allons dans un premier temps y ajouter cette ligne&amp;nbsp;: 

 home_mailbox = Maildir/

Cette ligne dit à postfix que les mails des utilisateurs doivent aller dans un répertoire nommé Maildir. 

Commentez (ajoutez un #) la ligne où se trouve '''mailbox_command''' pour que procmail ne soit pas utilisé (en tout cas pas pour le moment): 

 &lt;nowiki&gt;#mailbox_command = procmail -a &quot;$EXTENSION&quot;&lt;/nowiki&gt;

Pour que la modification soit prise en compte, redémarrez postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

= Création d'un nouveau mail  =

Bien. Vous avez votre domaine, votre serveur mail tourne. Créer une adresse mail est très simple. Il suffit d'ajouter un utilisateur&amp;nbsp;!! 

Vous voulez créer une adresse kevin@monDomaine.com&amp;nbsp;? Ajoutez l'utilisateur kevin sur votre machine&amp;nbsp;: 

 &lt;nowiki&gt;# adduser kevin&lt;/nowiki&gt;

Répondez aux questions, choisissez un mot de passe à kevin et c'est tout. 

= Tester l'adresse en local  =

Nous allons envoyer un mail à Kevin, vérifions que le paquet '''mailx''' est installé&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install mailx&lt;/nowiki&gt;

On envoie le mail&amp;nbsp;: 

 &lt;nowiki&gt;# echo &quot;Le contenu du mail&quot; | mail -s &quot;ceci est le sujet&quot; kevin@monDomaine.com&lt;/nowiki&gt;

Le mail sera automatiquement déposé dans le répertoire '''Maildir''' situé dans le home de kevin. S'il n'existe pas, le dossier '''Maildir''' sera automatiquement créé. 

 &lt;nowiki&gt;# ls /home/kevin&lt;/nowiki&gt;
 Maildir

N'hésitez pas à consulter les logs pour voir tout ce qui se passe sur votre serveur mail&amp;nbsp;: 

 &lt;nowiki&gt;# cat /var/log/mail.log&lt;/nowiki&gt;

= Kevin veut lire ses mails&amp;nbsp;!!  =

Envoyer des mails, c'est bien mais pouvoir les lire, c'est mieux&amp;nbsp;!! Pour que Kevin puisse lire ses mails dans un client comme '''Mozilla Thunderbird''', c'est tout simple&amp;nbsp;: 

Kevin veut réceptionner ces mails via IMAP&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-imapd&lt;/nowiki&gt;

Il préfère POP3&amp;nbsp;? Pas de problèmes&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-pop3d&lt;/nowiki&gt;

C'est tout, vous pouvez maintenant utiliser votre client mail favori pour réceptionner vos mails. 

Serveur&amp;nbsp;: '''smtp.monDomaine.com''' 

Login&amp;nbsp;: '''kevin''' 

Password&amp;nbsp;: '''le password défini lors de la création de l'utilisateur kevin''' 

= Kevin veut envoyer des mails&amp;nbsp;!!  =

Kevin est content, il peut lire ses mails. Seulement, il aimerait répondre à ses amis mais il ne peut pas. 

== Utiliser le SMTP de son FAI  ==

Postfix possède son propre service SMTP, mais ce dernier sera généralement bloqué. Pour limiter les envois de SPAMS, les FAI bloquent généralement l'envoi de mails. 

Pour que votre serveur mail puisse envoyer des mails, il faut lui dire d'utiliser le SMTP de votre FAI. C'est le paramètre '''relayhost''' du fichier de configuration '''/etc/postfix/main.cf''' qu'il faut modifier&amp;nbsp;: 

 relayhost = smtp.votreFAI.com

Principaux SMTP français&amp;nbsp;: 

 Orange&amp;nbsp;: smtp.orange.fr
 Free&amp;nbsp;: smtp.free.fr
 Neuf&amp;nbsp;: smtp.neuf.fr

== Utiliser le SMTP de Postfix  ==

Cependant, certains FAI (comme Free) permettent de lever ce blocage via une option dans leur panel de gestion. 

Dans ce cas, plus besoin du '''relayhost'''. Vos mails ne passeront plus par votre FAI, c'est VOTRE serveur qui enverra directement les mails. 

Le problème est que les mails que vous enverrez vers les boîtes '''Yahoo''' seront classées en tant que SPAM. '''AOL''' ne voudra pas de vos mails (ce sera explicitement marqué dans les logs). Quant à '''Hotmail''', les logs vous diront que les mails ont bien été reçus, mais vos correspondants ne les recevront jamais. '''Gmail''' ne pose quant à lui aucun soucis. 

Vous voulez utiliser le plus possible votre propre SMTP mais vous voulez quand même pouvoir envoyer des mails vers vos potes qui restés chez Hotmail&amp;nbsp;? 

Créez un fichier '''/etc/postfix/transport''' avec ce contenu&amp;nbsp;: 

 hotmail.fr    smtp:smtp.free.fr
 hotmail.com   smtp:smtp.free.fr
 yahoo.fr      smtp:smtp.free.fr
 yahoo.com     smtp:smtp.free.fr

Ce fichier dit à postfix que pour les domaines hotmail.fr, hotmail.com, yahoo, etc., il utilisera le SMTP de free. Pour tous les autres domaine, il utilisera le smtp local. A vous d'adapter ce fichier en fonction des domaines qui ne veulent pas de vous. 

Bien sûr, si vous n'êtes pas abonné Free, vous ne pourrez pas utiliser le SMTP de Free. 

Pour que Postfix prenne en compte ce fichier, executez cette commande&amp;nbsp;: 

 &lt;nowiki&gt;# postmap /etc/postfix/transport&lt;/nowiki&gt;

Puis relancez Postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

A chaque fois que vous modifierez '''/etc/postfix/transport''', n'oubliez pas d'executer la commande précédente (postmap). 

== Login... Passwd...  ==

Actuellement, postfix n'accepte d'envoyer les mails que s'ils sont envoyés depuis le serveur mail. Vous avez sûrement l'habitude d'envoyer les mails depuis un autre PC. Généralement, le SMTP demande un login, un password et envoie vos mails. 

C'est ce que nous alons régler maintenant. 

Problème&amp;nbsp;: Postfix seul ne fournit pas de service d'identification. Il doit utiliser un serveur SASL externe. 

Solution&amp;nbsp;: Dovecot, que nous avons précédemment installé pour la réception de mails (IMAP-POP3) peut faire office de serveur SASL. 

Pour activer ce service, dans le fichier de configuration '''/etc/dovecot/dovecot.conf''', ajoutez (ou décommentez) ceci dans la section auth default { }&amp;nbsp;: 

 auth default {
 …
 socket listen {
   client {
     path  &lt;nowiki&gt;= /var/spool/postfix/private/auth&lt;/nowiki&gt;
    group = postfix
    mode  &lt;nowiki&gt;= 0660&lt;/nowiki&gt;
  }
 }
 …

Il s'agit pour Dovecot de créer un socket Unix, sur lequel il écoutera les demandes d'identification provenant de Postfix. Comme le service SMTP de Postfix est chrooté (emprisonné) dans le répertoire '''/var/spool/postfix/''', il faut placer ce socket sous ce répertoire. Maintenant, relancez Dovecot&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/dovecot restart&lt;/nowiki&gt;

Dovecot accepte l'identification mais Postfix ne le sait pas&amp;nbsp;!! Il faut lui dire (ajoutez dans '''/etc/postfix/main.cf''')&amp;nbsp;: 

 &lt;nowiki&gt;# Activer l'identification SASL&lt;/nowiki&gt;
 smtpd_sasl_auth_enable = yes

 &lt;nowiki&gt;# Utiliser le service d'identification de Dovecot&lt;/nowiki&gt;
 smtpd_sasl_type = dovecot
 smtpd_sasl_path = private/auth

 &lt;nowiki&gt;# Noter dans les en-tête des messages l'identifiant de l'utilisateur.&lt;/nowiki&gt;
 smtpd_sasl_authenticated_header = yes

Profitons-en pour paufiner le fichier de configuration de postfix '''/etc/postfix/main.cf'''&amp;nbsp;: 

 &lt;nowiki&gt;# Règles pour accepter ou refuser une connexion :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on attend une seconde (pour piéger les zombies) ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on interdit la parallélisation là où il n'est pas sensé y en avoir.&lt;/nowiki&gt;
 smtpd_client_restrictions =
    permit_mynetworks, permit_sasl_authenticated,
    sleep 1, reject_unauth_pipelining

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le nom&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'hôte de l'expéditeur (par sa commande HELO ou EHLO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on refuse les noms d'hôte invalides.&lt;/nowiki&gt;
 smtpd_helo_restrictions = reject_invalid_helo_hostname

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît l'adresse&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'expéditeur :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un expéditeur inexistant de notre domaine, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si le domaine de l'expéditeur n'a pas d'IP ou de MX, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un client sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de l'expéditeur n'est pas sous forme canonique, on le refuse.&lt;/nowiki&gt;
 smtpd_sender_restrictions =
    reject_unlisted_sender, reject_unknown_sender_domain,
    permit_mynetworks, permit_sasl_authenticated,
    reject_non_fqdn_sender

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le&lt;/nowiki&gt;
 &lt;nowiki&gt;# destinataire (par la commande RCPT TO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un expéditeur forgé chez nous, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un domaine forgé, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un hôte sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de destination n'est pas sous forme canonique, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - finalement, s'il n'est pas destiné à un domaine que l'on gère ou pour&lt;/nowiki&gt;
 &lt;nowiki&gt;# &lt;/nowiki&gt;  lequel on relaie, on le refuse.
 smtpd_recipient_restrictions =
     reject_unlisted_recipient, reject_unknown_recipient_domain,
     permit_mynetworks, permit_sasl_authenticated,
     reject_non_fqdn_recipient,
     reject_unauth_destination

Allez, on relance postfix pour qu'il prenne en compte tout ça&amp;nbsp;: 

 /etc/init.d/postfix restart</text>
      <sha1>2xtfazhucils3gf3y595r2y2yu2zjj5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1535</id>
      <parentid>1534</parentid>
      <timestamp>2010-05-27T12:15:32Z</timestamp>
      <contributor>
        <username>AnatomicJC</username>
        <id>39</id>
      </contributor>
      <comment>Page blanchie</comment>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Sommaire</title>
    <ns>14</ns>
    <id>524</id>
    <revision>
      <id>2111</id>
      <timestamp>2010-09-15T17:20:58Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « [[Catégorie:General]] »</comment>
      <text xml:space="preserve" bytes="22">[[Catégorie:General]]</text>
      <sha1>0gwbgi9wry31zteal7fsyyj8oyp1tr1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Supports de données</title>
    <ns>14</ns>
    <id>408</id>
    <revision>
      <id>1499</id>
      <timestamp>2010-05-17T11:06:26Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « [[Catégorie:Matériel_et_Drivers]] »</comment>
      <text xml:space="preserve" bytes="35">[[Catégorie:Matériel_et_Drivers]]</text>
      <sha1>mzy3yz1cgdl6hbyiq329gwmmtp5uy0a</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Surveillance serveur</title>
    <ns>14</ns>
    <id>439</id>
    <revision>
      <id>1684</id>
      <timestamp>2010-07-26T08:18:08Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « [[Catégorie:Serveurs]] »</comment>
      <text xml:space="preserve" bytes="23">[[Catégorie:Serveurs]]</text>
      <sha1>d8gn26k71w86g3oijsloivqd631tcwx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:SurveillanceWeb</title>
    <ns>14</ns>
    <id>613</id>
    <revision>
      <id>2557</id>
      <timestamp>2010-12-26T14:01:58Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « [[Catégorie:Logiciels]] »</comment>
      <text xml:space="preserve" bytes="24">[[Catégorie:Logiciels]]</text>
      <sha1>sort88k9k4zu53lsnbjzn9yvqkk2vjf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Sécurité</title>
    <ns>14</ns>
    <id>523</id>
    <revision>
      <id>2110</id>
      <timestamp>2010-09-15T17:20:25Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « [[Catégorie:General]] »</comment>
      <text xml:space="preserve" bytes="22">[[Catégorie:General]]</text>
      <sha1>0gwbgi9wry31zteal7fsyyj8oyp1tr1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Sécurité Généralités</title>
    <ns>14</ns>
    <id>738</id>
    <revision>
      <id>3258</id>
      <timestamp>2011-08-11T08:22:23Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « [[Catégorie:Sécurité]] »</comment>
      <text xml:space="preserve" bytes="25">[[Catégorie:Sécurité]]</text>
      <sha1>esr0i2491pc8kgvkvirmp0v61vchdr9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Tillings</title>
    <ns>14</ns>
    <id>231</id>
    <revision>
      <id>971</id>
      <timestamp>2010-02-07T07:41:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « [[Catégorie:Gestionnaires de fenêtres]] »</comment>
      <text xml:space="preserve" bytes="41">[[Catégorie:Gestionnaires de fenêtres]]</text>
      <sha1>4r9wzh5mmi5tzizjiwzao10uxhik9yp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>973</id>
      <parentid>971</parentid>
      <timestamp>2010-02-07T07:53:18Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="41">[[Catégorie:Gestionnaires_de_fenêtres]]</text>
      <sha1>2i8f9rkfo9b90vwo6gyo7icxx3ym3eu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>980</id>
      <parentid>973</parentid>
      <timestamp>2010-02-07T07:55:41Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="40">[[Catégorie:Gestionnaires_de_fenetres]]</text>
      <sha1>83qk9mwjqd864n5rq5uin2ecxagztux</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Truc et Astuces pour les portables</title>
    <ns>14</ns>
    <id>435</id>
    <revision>
      <id>1586</id>
      <timestamp>2010-06-25T08:58:12Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « [[Catégorie:Trucs et Astuces]] »</comment>
      <text xml:space="preserve" bytes="31">[[Catégorie:Trucs et Astuces]]</text>
      <sha1>5movbijeb3asfqbjkjkofzdzq8y6n1t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Trucs et Astuces</title>
    <ns>14</ns>
    <id>436</id>
    <revision>
      <id>1587</id>
      <timestamp>2010-06-25T08:58:25Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « [[Catégorie:General]] »</comment>
      <text xml:space="preserve" bytes="22">[[Catégorie:General]]</text>
      <sha1>0gwbgi9wry31zteal7fsyyj8oyp1tr1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4164</id>
      <parentid>1587</parentid>
      <timestamp>2012-05-05T14:14:56Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="205">[[File:Crystal Clear action db add.png|Crystal Clear action db add|30px]] Cliquez [[Has default form::Trucs et Astuces|ici]] pour rajouter une page {{PAGENAME}} grâce au formulaire.
[[Catégorie:General]]</text>
      <sha1>ns52fg2z1ojnyzol8mfufp6mfuv5nej</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4165</id>
      <parentid>4164</parentid>
      <timestamp>2012-05-05T14:15:08Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="131">Cliquez [[Has default form::Trucs et Astuces|ici]] pour rajouter une page {{PAGENAME}} grâce au formulaire.
[[Catégorie:General]]</text>
      <sha1>tmtx6dipwxiuo672euo95zc24u3op7d</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4310</id>
      <parentid>4165</parentid>
      <timestamp>2012-06-03T09:32:17Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="156">Cliquez [[Has default form::Trucs et Astuces|ici]] pour rajouter une page {{PAGENAME}} grâce au formulaire.
[[Catégorie:General]]
[[Catégorie:Ressource]]</text>
      <sha1>qegsm6dg42u8zup03ncomrsvufty5ll</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Trucs et Astuces divers</title>
    <ns>14</ns>
    <id>517</id>
    <revision>
      <id>2055</id>
      <timestamp>2010-09-09T07:57:09Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « [[Catégorie:Trucs et Astuces]] »</comment>
      <text xml:space="preserve" bytes="31">[[Catégorie:Trucs et Astuces]]</text>
      <sha1>5movbijeb3asfqbjkjkofzdzq8y6n1t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Tutoriel</title>
    <ns>14</ns>
    <id>1021</id>
    <revision>
      <id>4308</id>
      <timestamp>2012-06-03T09:31:01Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>Page créée avec « Cette catégorie regroupe tous les tutoriels. [[Catégorie:Ressource]] »</comment>
      <text xml:space="preserve" bytes="70">Cette catégorie regroupe tous les tutoriels.
[[Catégorie:Ressource]]</text>
      <sha1>jo12i0koh07ea7vfim87dlkwn5ta27b</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Wifi</title>
    <ns>14</ns>
    <id>14</id>
    <revision>
      <id>24</id>
      <timestamp>2010-01-21T14:38:35Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <comment>Page créée avec « Cette catégorie rassemble tous les tutoriaux ayant de près ou de loin un rapport avec le wifi.  [[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:33 (UTC) »</comment>
      <text xml:space="preserve" bytes="156">Cette catégorie rassemble tous les tutoriaux ayant de près ou de loin un rapport avec le wifi.

[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:33 (UTC)</text>
      <sha1>4debfzucguoim8ei2nmzp4ysj0pk1g0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>60</id>
      <parentid>24</parentid>
      <timestamp>2010-01-21T20:17:19Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="868">{{sid}}

=== Outils d'utilisation du wifi ===

 # apt-get install wireless-tools

Ce paquet comprend les outils iwconfig, iwlist ...

 # apt-get install wpasupplicant

Ce paquet permet de pouvoir utiliser des connections étant encryptées avec du WPA.

=== Problèmes usuels de wifi ===

Généralement, les pilotes d'utilisation des cartes wifi ne sont pas préinstallés avec la distribution '''Debian'''. Cela ne veut ''pas'' dire que le wifi ne fonctionnera pas chez vous.

Il vous faut savoir quel [[chipset]] ( ou puce ) utilise votre carte. Pour que le wifi fonctionne il vous faut donc le pilote ( driver ) et le firmware ( comprendre ''micrologiciel'' ) qui sont généralement deux paquets séparés.

Les pages ci-dessous sont là pour vous indiquer la mise en oeuvre du wifi pour chaque chipset.

[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:33 (UTC)</text>
      <sha1>r6v8dfcehwzq98r3zmpo2i32wcvxf98</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>207</id>
      <parentid>60</parentid>
      <timestamp>2010-01-23T20:33:55Z</timestamp>
      <contributor>
        <username>Wetaskiwin</username>
        <id>10</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="852">{{sid}}

=== Outils d'utilisation du wifi ===

 # apt-get install wireless-tools

Ce paquet comprend les outils iwconfig, iwlist ...

 # apt-get install wpasupplicant

Ce paquet permet d'utiliser des connections encryptées avec du WPA.

=== Problèmes usuels de wifi ===

Généralement, les pilotes d'utilisation des cartes wifi ne sont pas préinstallés avec la distribution '''Debian'''. Cela ne veut ''pas'' dire que le wifi ne fonctionnera pas chez vous.

Il vous faut savoir quel [[chipset]] ( ou puce ) utilise votre carte. Pour que le wifi fonctionne il vous faut donc le pilote ( driver ) et le firmware ( comprendre ''micrologiciel'' ) qui sont généralement deux paquets séparés.

Les pages ci-dessous sont là pour vous indiquer la mise en oeuvre du wifi pour chaque chipset.

[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:33 (UTC)</text>
      <sha1>be5bebyzhhkjuoxvtty4go0h6qm534g</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>247</id>
      <parentid>207</parentid>
      <timestamp>2010-01-25T09:51:06Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="851">{{sid}}

=== Outils d'utilisation du wifi ===

 # apt-get install wireless-tools

Ce paquet comprend les outils iwconfig, iwlist ...

 # apt-get install wpasupplicant

Ce paquet permet d'utiliser des connexions encryptées avec du WPA.

=== Problèmes usuels de wifi ===

Généralement, les pilotes d'utilisation des cartes wifi ne sont pas préinstallés avec la distribution '''Debian'''. Cela ne veut ''pas'' dire que le wifi ne fonctionnera pas chez vous.

Il vous faut savoir quel [[chipset]] ( ou puce ) utilise votre carte. Pour que le wifi fonctionne il vous faut donc le pilote ( driver ) et le firmware ( comprendre ''micrologiciel'' ) qui sont généralement deux paquets séparés.

Les pages ci-dessous sont là pour vous indiquer la mise en oeuvre du wifi pour chaque chipset.

[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:33 (UTC)</text>
      <sha1>dgu7iim24xu0k30kcup9xm70ag3t5vq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>888</id>
      <parentid>247</parentid>
      <timestamp>2010-02-05T09:55:57Z</timestamp>
      <contributor>
        <username>Debianhadic</username>
        <id>11</id>
      </contributor>
      <text xml:space="preserve" bytes="3628">{{sid}}

=== Outils d'utilisation du wifi ===

 # apt-get install wireless-tools

Ce paquet comprend les outils iwconfig, iwlist ...

 # apt-get install wpasupplicant

Ce paquet permet d'utiliser des connexions encryptées avec du WPA.

=== Se connecter en ligne de commande ===
Tout d'abord on vérifie que le kernel gère correctement sa carte :
 # ifconfig wlan0 up
 # iwlist s
On devrait voir quelque chose comme ça : (Pour une NeufBox)
 lo        Interface doesn't support scanning.

 eth0      Interface doesn't support scanning.

 wlan0     Scan completed :
           Cell 01 - Address: 00:17:33:32:E7:50
                    Channel:11
                    Frequency:2.462 GHz (Channel 11)
                    Quality=42/70  Signal level=-68 dBm  
                    Encryption key:off
                    ESSID:&quot;Neuf WiFi&quot;
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s
                              24 Mb/s; 36 Mb/s; 54 Mb/s
                    Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 48 Mb/s
                    Mode:Master
                    Extra:tsf=000000025b313005
                    Extra: Last beacon: 112ms ago
                    IE: Unknown: 00094E6575662057694669
                    IE: Unknown: 010882848B962430486C
                    IE: Unknown: 03010B
                    IE: Unknown: 2A0100
                    IE: Unknown: 2F0100
                    IE: Unknown: 32040C121860
                    IE: Unknown: DD090010180200F0000000
          Cell 02 - Address: 00:17:33:32:E7:49
                    Channel:11
                    Frequency:2.462 GHz (Channel 11)
                    Quality=42/70  Signal level=-68 dBm  
                    Encryption key:on
                    ESSID:&quot;NEUF_xxxx&quot;
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s
                              24 Mb/s; 36 Mb/s; 54 Mb/s
                    Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 48 Mb/s
                    Mode:Master
                    Extra:tsf=000000025b327ac8
                    Extra: Last beacon: 28ms ago
                    IE: Unknown: 00094E4555465F45373438
                    IE: Unknown: 010882848B962430486C
                    IE: Unknown: 03010B
                    IE: Unknown: 2A0100
                    IE: Unknown: 2F0100
                    IE: Unknown: 32040C121860
                    IE: Unknown: DD090010180201F0000000

On remarque que la carte wifi s'apelle wlan0 dans notre exemple, et qu'elle capte deux boucles réseau, l'une Neuf Wifi qui est disponible pour tous les abonnés Neuf qui passent à proximité, et Neuf_xxxx la boucle réseau locale.

A ce stade la plupart des &quot;BOX&quot; ont besoin d'une intervention physique de l'utilisateur pour autoriser la connexion d'un nouveau venu (Bouton cadena sur la NeufBox, bouton REG sur les LiveBox), dans un endroit ou l'accès Wifi est libre, vous n'aurez rien à faire.

 # iwconfig wlan0 essid NEUF_xxxx key s:laphrasesecrète
 # dhclient

Voilà vous devriez être connecté !

=== Problèmes usuels de wifi ===

Généralement, les pilotes d'utilisation des cartes wifi ne sont pas préinstallés avec la distribution '''Debian'''. Cela ne veut ''pas'' dire que le wifi ne fonctionnera pas chez vous.

Il vous faut savoir quel [[chipset]] ( ou puce ) utilise votre carte. Pour que le wifi fonctionne il vous faut donc le pilote ( driver ) et le firmware ( comprendre ''micrologiciel'' ) qui sont généralement deux paquets séparés.

Les pages ci-dessous sont là pour vous indiquer la mise en oeuvre du wifi pour chaque chipset.

[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:33 (UTC)</text>
      <sha1>tngvfcdbmvjhjfn96evl469077cany3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1036</id>
      <parentid>888</parentid>
      <timestamp>2010-02-08T04:36:30Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3660">{{sid}}

=== Outils d'utilisation du wifi ===

 # apt-get install wireless-tools

Ce paquet comprend les outils iwconfig, iwlist ...

 # apt-get install wpasupplicant

Ce paquet permet d'utiliser des connexions encryptées avec du WPA.

=== Se connecter en ligne de commande ===
Tout d'abord on vérifie que le kernel gère correctement sa carte :
 # ifconfig wlan0 up
 # iwlist s
On devrait voir quelque chose comme ça : (Pour une NeufBox)
 lo        Interface doesn't support scanning.

 eth0      Interface doesn't support scanning.

 wlan0     Scan completed :
           Cell 01 - Address: 00:17:33:32:E7:50
                    Channel:11
                    Frequency:2.462 GHz (Channel 11)
                    Quality=42/70  Signal level=-68 dBm  
                    Encryption key:off
                    ESSID:&quot;Neuf WiFi&quot;
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s
                              24 Mb/s; 36 Mb/s; 54 Mb/s
                    Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 48 Mb/s
                    Mode:Master
                    Extra:tsf=000000025b313005
                    Extra: Last beacon: 112ms ago
                    IE: Unknown: 00094E6575662057694669
                    IE: Unknown: 010882848B962430486C
                    IE: Unknown: 03010B
                    IE: Unknown: 2A0100
                    IE: Unknown: 2F0100
                    IE: Unknown: 32040C121860
                    IE: Unknown: DD090010180200F0000000
          Cell 02 - Address: 00:17:33:32:E7:49
                    Channel:11
                    Frequency:2.462 GHz (Channel 11)
                    Quality=42/70  Signal level=-68 dBm  
                    Encryption key:on
                    ESSID:&quot;NEUF_xxxx&quot;
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s
                              24 Mb/s; 36 Mb/s; 54 Mb/s
                    Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 48 Mb/s
                    Mode:Master
                    Extra:tsf=000000025b327ac8
                    Extra: Last beacon: 28ms ago
                    IE: Unknown: 00094E4555465F45373438
                    IE: Unknown: 010882848B962430486C
                    IE: Unknown: 03010B
                    IE: Unknown: 2A0100
                    IE: Unknown: 2F0100
                    IE: Unknown: 32040C121860
                    IE: Unknown: DD090010180201F0000000

On remarque que la carte wifi s'apelle wlan0 dans notre exemple, et qu'elle capte deux boucles réseau, l'une Neuf Wifi qui est disponible pour tous les abonnés Neuf qui passent à proximité, et Neuf_xxxx la boucle réseau locale.

A ce stade la plupart des &quot;BOX&quot; ont besoin d'une intervention physique de l'utilisateur pour autoriser la connexion d'un nouveau venu (Bouton cadena sur la NeufBox, bouton REG sur les LiveBox), dans un endroit ou l'accès Wifi est libre, vous n'aurez rien à faire.

 # iwconfig wlan0 essid NEUF_xxxx key s:laphrasesecrète
 # dhclient

Voilà vous devriez être connecté !

=== Problèmes usuels de wifi ===

Généralement, les pilotes d'utilisation des cartes wifi ne sont pas préinstallés avec la distribution '''Debian'''. Cela ne veut ''pas'' dire que le wifi ne fonctionnera pas chez vous.

Il vous faut savoir quel [[chipset]] ( ou puce ) utilise votre carte. Pour que le wifi fonctionne il vous faut donc le pilote ( driver ) et le firmware ( comprendre ''micrologiciel'' ) qui sont généralement deux paquets séparés.

Les pages ci-dessous sont là pour vous indiquer la mise en oeuvre du wifi pour chaque chipset.

[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:33 (UTC)

[[Catégorie:Réseau et Wifi]]</text>
      <sha1>qoic52sndx7aez7ksvzywca17895064</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1045</id>
      <parentid>1036</parentid>
      <timestamp>2010-02-08T07:26:50Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3662">{{sid}}

=== Outils d'utilisation du wifi ===

 # apt-get install wireless-tools

Ce paquet comprend les outils iwconfig, iwlist ...

 # apt-get install wpasupplicant

Ce paquet permet d'utiliser des connexions encryptées avec du WPA.

=== Se connecter en ligne de commande ===
Tout d'abord on vérifie que le kernel gère correctement sa carte :
 # ifconfig wlan0 up
 # iwlist s
On devrait voir quelque chose comme ça : (Pour une NeufBox)
 lo        Interface doesn't support scanning.

 eth0      Interface doesn't support scanning.

 wlan0     Scan completed :
           Cell 01 - Address: 00:17:33:32:E7:50
                    Channel:11
                    Frequency:2.462 GHz (Channel 11)
                    Quality=42/70  Signal level=-68 dBm  
                    Encryption key:off
                    ESSID:&quot;Neuf WiFi&quot;
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s
                              24 Mb/s; 36 Mb/s; 54 Mb/s
                    Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 48 Mb/s
                    Mode:Master
                    Extra:tsf=000000025b313005
                    Extra: Last beacon: 112ms ago
                    IE: Unknown: 00094E6575662057694669
                    IE: Unknown: 010882848B962430486C
                    IE: Unknown: 03010B
                    IE: Unknown: 2A0100
                    IE: Unknown: 2F0100
                    IE: Unknown: 32040C121860
                    IE: Unknown: DD090010180200F0000000
          Cell 02 - Address: 00:17:33:32:E7:49
                    Channel:11
                    Frequency:2.462 GHz (Channel 11)
                    Quality=42/70  Signal level=-68 dBm  
                    Encryption key:on
                    ESSID:&quot;NEUF_xxxx&quot;
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s
                              24 Mb/s; 36 Mb/s; 54 Mb/s
                    Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 48 Mb/s
                    Mode:Master
                    Extra:tsf=000000025b327ac8
                    Extra: Last beacon: 28ms ago
                    IE: Unknown: 00094E4555465F45373438
                    IE: Unknown: 010882848B962430486C
                    IE: Unknown: 03010B
                    IE: Unknown: 2A0100
                    IE: Unknown: 2F0100
                    IE: Unknown: 32040C121860
                    IE: Unknown: DD090010180201F0000000

On remarque que la carte wifi s'appelle wlan0 dans notre exemple, et qu'elle capte deux boucles réseau, l'une Neuf Wifi qui est disponible pour tous les abonnés Neuf qui passent à proximité, et Neuf_xxxx la boucle réseau locale.

A ce stade la plupart des &quot;BOX&quot; ont besoin d'une intervention physique de l'utilisateur pour autoriser la connexion d'un nouveau venu (Bouton cadenas sur la NeufBox, bouton REG sur les LiveBox), dans un endroit ou l'accès Wifi est libre, vous n'aurez rien à faire.

 # iwconfig wlan0 essid NEUF_xxxx key s:laphrasesecrète
 # dhclient

Voilà vous devriez être connecté !

=== Problèmes usuels de wifi ===

Généralement, les pilotes d'utilisation des cartes wifi ne sont pas préinstallés avec la distribution '''Debian'''. Cela ne veut ''pas'' dire que le wifi ne fonctionnera pas chez vous.

Il vous faut savoir quel [[chipset]] ( ou puce ) utilise votre carte. Pour que le wifi fonctionne il vous faut donc le pilote ( driver ) et le firmware ( comprendre ''micrologiciel'' ) qui sont généralement deux paquets séparés.

Les pages ci-dessous sont là pour vous indiquer la mise en oeuvre du wifi pour chaque chipset.

[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:33 (UTC)

[[Catégorie:Réseau et Wifi]]</text>
      <sha1>1wj9bpvkqetvdrhd4jd34ewgqc1mbv4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1727</id>
      <parentid>1045</parentid>
      <timestamp>2010-07-27T15:03:58Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <comment>/* Problèmes usuels de wifi */</comment>
      <text xml:space="preserve" bytes="3755">{{sid}}

=== Outils d'utilisation du wifi ===

 # apt-get install wireless-tools

Ce paquet comprend les outils iwconfig, iwlist ...

 # apt-get install wpasupplicant

Ce paquet permet d'utiliser des connexions encryptées avec du WPA.

=== Se connecter en ligne de commande ===
Tout d'abord on vérifie que le kernel gère correctement sa carte :
 # ifconfig wlan0 up
 # iwlist s
On devrait voir quelque chose comme ça : (Pour une NeufBox)
 lo        Interface doesn't support scanning.

 eth0      Interface doesn't support scanning.

 wlan0     Scan completed :
           Cell 01 - Address: 00:17:33:32:E7:50
                    Channel:11
                    Frequency:2.462 GHz (Channel 11)
                    Quality=42/70  Signal level=-68 dBm  
                    Encryption key:off
                    ESSID:&quot;Neuf WiFi&quot;
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s
                              24 Mb/s; 36 Mb/s; 54 Mb/s
                    Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 48 Mb/s
                    Mode:Master
                    Extra:tsf=000000025b313005
                    Extra: Last beacon: 112ms ago
                    IE: Unknown: 00094E6575662057694669
                    IE: Unknown: 010882848B962430486C
                    IE: Unknown: 03010B
                    IE: Unknown: 2A0100
                    IE: Unknown: 2F0100
                    IE: Unknown: 32040C121860
                    IE: Unknown: DD090010180200F0000000
          Cell 02 - Address: 00:17:33:32:E7:49
                    Channel:11
                    Frequency:2.462 GHz (Channel 11)
                    Quality=42/70  Signal level=-68 dBm  
                    Encryption key:on
                    ESSID:&quot;NEUF_xxxx&quot;
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s
                              24 Mb/s; 36 Mb/s; 54 Mb/s
                    Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 48 Mb/s
                    Mode:Master
                    Extra:tsf=000000025b327ac8
                    Extra: Last beacon: 28ms ago
                    IE: Unknown: 00094E4555465F45373438
                    IE: Unknown: 010882848B962430486C
                    IE: Unknown: 03010B
                    IE: Unknown: 2A0100
                    IE: Unknown: 2F0100
                    IE: Unknown: 32040C121860
                    IE: Unknown: DD090010180201F0000000

On remarque que la carte wifi s'appelle wlan0 dans notre exemple, et qu'elle capte deux boucles réseau, l'une Neuf Wifi qui est disponible pour tous les abonnés Neuf qui passent à proximité, et Neuf_xxxx la boucle réseau locale.

A ce stade la plupart des &quot;BOX&quot; ont besoin d'une intervention physique de l'utilisateur pour autoriser la connexion d'un nouveau venu (Bouton cadenas sur la NeufBox, bouton REG sur les LiveBox), dans un endroit ou l'accès Wifi est libre, vous n'aurez rien à faire.

 # iwconfig wlan0 essid NEUF_xxxx key s:laphrasesecrète
 # dhclient

Voilà vous devriez être connecté !

=== Problèmes usuels de wifi ===

Généralement, les pilotes des cartes wifi ne sont pas préinstallés avec la distribution '''Debian'''. Cela ne veut ''pas'' dire que le wifi ne fonctionnera pas chez vous.

Il vous faut savoir quel [[Glossaire#chipset|chipset]] ( ou puce ) utilise votre carte. Pour que le wifi fonctionne il vous faut donc le [[Glossaire#pilote]] (driver) et le firmware ( comprendre ''micrologiciel'' ) adaptés à votre modèle de carte wifi qui sont généralement deux paquets séparés ( par exemple pour la carte D-Link DWA 110, le driver est le rt73usb et le firmware est ralink ).

Les pages ci-dessous sont là pour vous indiquer la mise en oeuvre du wifi pour chaque chipset.

[[Catégorie:Réseau et Wifi]]</text>
      <sha1>ebxk47vl2o3pz2fmnua9jwrk5cqt7w9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1729</id>
      <parentid>1727</parentid>
      <timestamp>2010-07-27T15:28:59Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Problèmes usuels de wifi */</comment>
      <text xml:space="preserve" bytes="3755">{{sid}}

=== Outils d'utilisation du wifi ===

 # apt-get install wireless-tools

Ce paquet comprend les outils iwconfig, iwlist ...

 # apt-get install wpasupplicant

Ce paquet permet d'utiliser des connexions encryptées avec du WPA.

=== Se connecter en ligne de commande ===
Tout d'abord on vérifie que le kernel gère correctement sa carte :
 # ifconfig wlan0 up
 # iwlist s
On devrait voir quelque chose comme ça : (Pour une NeufBox)
 lo        Interface doesn't support scanning.

 eth0      Interface doesn't support scanning.

 wlan0     Scan completed :
           Cell 01 - Address: 00:17:33:32:E7:50
                    Channel:11
                    Frequency:2.462 GHz (Channel 11)
                    Quality=42/70  Signal level=-68 dBm  
                    Encryption key:off
                    ESSID:&quot;Neuf WiFi&quot;
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s
                              24 Mb/s; 36 Mb/s; 54 Mb/s
                    Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 48 Mb/s
                    Mode:Master
                    Extra:tsf=000000025b313005
                    Extra: Last beacon: 112ms ago
                    IE: Unknown: 00094E6575662057694669
                    IE: Unknown: 010882848B962430486C
                    IE: Unknown: 03010B
                    IE: Unknown: 2A0100
                    IE: Unknown: 2F0100
                    IE: Unknown: 32040C121860
                    IE: Unknown: DD090010180200F0000000
          Cell 02 - Address: 00:17:33:32:E7:49
                    Channel:11
                    Frequency:2.462 GHz (Channel 11)
                    Quality=42/70  Signal level=-68 dBm  
                    Encryption key:on
                    ESSID:&quot;NEUF_xxxx&quot;
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s
                              24 Mb/s; 36 Mb/s; 54 Mb/s
                    Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 48 Mb/s
                    Mode:Master
                    Extra:tsf=000000025b327ac8
                    Extra: Last beacon: 28ms ago
                    IE: Unknown: 00094E4555465F45373438
                    IE: Unknown: 010882848B962430486C
                    IE: Unknown: 03010B
                    IE: Unknown: 2A0100
                    IE: Unknown: 2F0100
                    IE: Unknown: 32040C121860
                    IE: Unknown: DD090010180201F0000000

On remarque que la carte wifi s'appelle wlan0 dans notre exemple, et qu'elle capte deux boucles réseau, l'une Neuf Wifi qui est disponible pour tous les abonnés Neuf qui passent à proximité, et Neuf_xxxx la boucle réseau locale.

A ce stade la plupart des &quot;BOX&quot; ont besoin d'une intervention physique de l'utilisateur pour autoriser la connexion d'un nouveau venu (Bouton cadenas sur la NeufBox, bouton REG sur les LiveBox), dans un endroit ou l'accès Wifi est libre, vous n'aurez rien à faire.

 # iwconfig wlan0 essid NEUF_xxxx key s:laphrasesecrète
 # dhclient

Voilà vous devriez être connecté !

=== Problèmes usuels de wifi ===

Généralement, les pilotes des cartes wifi ne sont pas préinstallés avec la distribution '''Debian'''. Cela ne veut ''pas'' dire que le wifi ne fonctionnera pas chez vous.

Il vous faut savoir quel [[Glossaire#chipset|chipset]] ( ou puce ) utilise votre carte. Pour que le wifi fonctionne il vous faut donc le [[Glossaire#pilote]] (driver) et le firmware ( comprendre ''micrologiciel'' ) adaptés à votre modèle de carte wifi qui sont généralement deux paquets séparés ( par exemple pour la carte D-Link DWA 110, le driver est le rt73usb et le firmware est ralink ).

Les pages ci-dessous sont là pour vous indiquer la mise en œuvre du wifi pour chaque chipset.

[[Catégorie:Réseau et Wifi]]</text>
      <sha1>c48fkkp44ma26x6c3qhpms9mlcgaojo</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3108</id>
      <parentid>1729</parentid>
      <timestamp>2011-07-30T06:20:19Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Contenu remplacé par « [[Catégorie:Réseau et Wifi]] »</comment>
      <text xml:space="preserve" bytes="30">[[Catégorie:Réseau et Wifi]]</text>
      <sha1>2a1vj2zqnqdm3hni9z662r5h82pbm1o</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Catégorie:Xen</title>
    <ns>14</ns>
    <id>632</id>
    <revision>
      <id>2712</id>
      <timestamp>2011-02-19T18:03:40Z</timestamp>
      <contributor>
        <username>Spike</username>
        <id>98</id>
      </contributor>
      <comment>Page créée avec « [[Category:Serveurs]] »</comment>
      <text xml:space="preserve" bytes="21">[[Category:Serveurs]]</text>
      <sha1>l2nmaskv3bffsjpw0yst96acqex6l44</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Changer le mot de passe mysql</title>
    <ns>0</ns>
    <id>897</id>
    <revision>
      <id>3683</id>
      <timestamp>2012-01-22T05:38:12Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « == Changer le mot de passe Mysql ==   Il peut arriver d'avoir à changer le mot de passe &quot;root&quot; de Mysql. Voici la méthode:  Stoppez MySql   # /etc/init.d/mysql stop  Démar... »</comment>
      <text xml:space="preserve" bytes="2477">== Changer le mot de passe Mysql == 

Il peut arriver d'avoir à changer le mot de passe &quot;root&quot; de Mysql.
Voici la méthode:

Stoppez MySql

 # /etc/init.d/mysql stop

Démarrez ensuite MySql avec les options suivantes:
(Permet de démarrer sans prendre en compte les droits et sans écouter le réseau)
L'option --skip-networking est très importante du point de vue de la sécurité, elle permet d'éviter à un petit malin de prendre le controle de MySql - sans mot de passe - pendant votre petite manip...)

 # /usr/sbin/mysqld --skip-grant-tables --skip-networking &amp;

Dans une autre console, accédez à MySql (sans mot de passe...)

 # mysql -u root
 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 1
 Server version: 5.1.49-3 (Debian)
 
 Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
 This software comes with ABSOLUTELY NO WARRANTY. This is free software,
 and you are welcome to modify and redistribute it under the GPL v2 license
 
 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
 mysql&gt; FLUSH PRIVILEGES;
 Query OK, 0 rows affected (0.00 sec)
 
 mysql&gt; SET PASSWORD FOR root@'localhost' = PASSWORD('votre_nouveau_mot_de_passe');
 Query OK, 0 rows affected (0.00 sec)
 
 mysql&gt; FLUSH PRIVILEGES;
 Query OK, 0 rows affected (0.00 sec)
 
 mysql&gt; exit
 Bye

Redémarrez MySql en mode &quot;normal&quot;:

 # service mysql restart

Faites un test avec le nouveau mot de passe:

 # mysql -u root -p
 Enter password: 
 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 88
 Server version: 5.1.49-3 (Debian)
 
 Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
 This software comes with ABSOLUTELY NO WARRANTY. This is free software,
 and you are welcome to modify and redistribute it under the GPL v2 license
 
 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
 mysql&gt; exit
 Bye

Voilà!

== Sources ==

* {{fr}} [http://www.debian-fr.org/changer-le-mot-de-passe-de-mysql-je-craque-t13727.html changer le mot de passe de mysql... je craque]
* {{fr}} [http://aide.sivit.fr/index.php?2005/06/27/53-reinitialisation-du-mot-de-passe-root-de-mysql Réinitialisation du mot de passe root de MySql]
* {{fr}} [https://www.debian-fr.org/reinitialiser-le-mot-de-passe-root-sur-mysql-t35826.html Changer le mot de passe de root sur Mysql]

[[Utilisateur:Lol|Lol]] 22 janvier 2012 à 06:38 (CET)</text>
      <sha1>m18yhdobo5n1tdrjrpk5wllh0vrwtc6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3685</id>
      <parentid>3683</parentid>
      <timestamp>2012-01-22T07:12:03Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>[[Catégorie:Trucs_et_Astuces_divers]]</comment>
      <text xml:space="preserve" bytes="2516">== Changer le mot de passe Mysql == 

Il peut arriver d'avoir à changer le mot de passe &quot;root&quot; de Mysql.
Voici la méthode:

Stoppez MySql

 # /etc/init.d/mysql stop

Démarrez ensuite MySql avec les options suivantes:
(Permet de démarrer sans prendre en compte les droits et sans écouter le réseau)
L'option --skip-networking est très importante du point de vue de la sécurité, elle permet d'éviter à un petit malin de prendre le controle de MySql - sans mot de passe - pendant votre petite manip...)

 # /usr/sbin/mysqld --skip-grant-tables --skip-networking &amp;

Dans une autre console, accédez à MySql (sans mot de passe...)

 # mysql -u root
 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 1
 Server version: 5.1.49-3 (Debian)
 
 Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
 This software comes with ABSOLUTELY NO WARRANTY. This is free software,
 and you are welcome to modify and redistribute it under the GPL v2 license
 
 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
 mysql&gt; FLUSH PRIVILEGES;
 Query OK, 0 rows affected (0.00 sec)
 
 mysql&gt; SET PASSWORD FOR root@'localhost' = PASSWORD('votre_nouveau_mot_de_passe');
 Query OK, 0 rows affected (0.00 sec)
 
 mysql&gt; FLUSH PRIVILEGES;
 Query OK, 0 rows affected (0.00 sec)
 
 mysql&gt; exit
 Bye

Redémarrez MySql en mode &quot;normal&quot;:

 # service mysql restart

Faites un test avec le nouveau mot de passe:

 # mysql -u root -p
 Enter password: 
 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 88
 Server version: 5.1.49-3 (Debian)
 
 Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
 This software comes with ABSOLUTELY NO WARRANTY. This is free software,
 and you are welcome to modify and redistribute it under the GPL v2 license
 
 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
 mysql&gt; exit
 Bye

Voilà!

== Sources ==

* {{fr}} [http://www.debian-fr.org/changer-le-mot-de-passe-de-mysql-je-craque-t13727.html changer le mot de passe de mysql... je craque]
* {{fr}} [http://aide.sivit.fr/index.php?2005/06/27/53-reinitialisation-du-mot-de-passe-root-de-mysql Réinitialisation du mot de passe root de MySql]
* {{fr}} [https://www.debian-fr.org/reinitialiser-le-mot-de-passe-root-sur-mysql-t35826.html Changer le mot de passe de root sur Mysql]

[[Utilisateur:Lol|Lol]] 22 janvier 2012 à 06:38 (CET)
[[Catégorie:Trucs_et_Astuces_divers]]</text>
      <sha1>odae0w8bayvjdizynu1jvtm2vh380uf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4068</id>
      <parentid>3685</parentid>
      <timestamp>2012-04-26T08:13:44Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="2509">== Changer le mot de passe Mysql == 

Il peut arriver d'avoir à changer le mot de passe &quot;root&quot; de Mysql.
Voici la méthode:

Stoppez MySql

 # /etc/init.d/mysql stop

Démarrez ensuite MySql avec les options suivantes:
(Permet de démarrer sans prendre en compte les droits et sans écouter le réseau)
L'option --skip-networking est très importante du point de vue de la sécurité, elle permet d'éviter à un petit malin de prendre le controle de MySql - sans mot de passe - pendant votre petite manip...)

 # /usr/sbin/mysqld --skip-grant-tables --skip-networking &amp;

Dans une autre console, accédez à MySql (sans mot de passe...)

 # mysql -u root
 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 1
 Server version: 5.1.49-3 (Debian)
 
 Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
 This software comes with ABSOLUTELY NO WARRANTY. This is free software,
 and you are welcome to modify and redistribute it under the GPL v2 license
 
 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
 mysql&gt; FLUSH PRIVILEGES;
 Query OK, 0 rows affected (0.00 sec)
 
 mysql&gt; SET PASSWORD FOR root@'localhost' = PASSWORD('votre_nouveau_mot_de_passe');
 Query OK, 0 rows affected (0.00 sec)
 
 mysql&gt; FLUSH PRIVILEGES;
 Query OK, 0 rows affected (0.00 sec)
 
 mysql&gt; exit
 Bye

Redémarrez MySql en mode &quot;normal&quot;:

 # service mysql restart

Faites un test avec le nouveau mot de passe:

 # mysql -u root -p
 Enter password: 
 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 88
 Server version: 5.1.49-3 (Debian)
 
 Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
 This software comes with ABSOLUTELY NO WARRANTY. This is free software,
 and you are welcome to modify and redistribute it under the GPL v2 license
 
 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
 mysql&gt; exit
 Bye

Voilà!

== Sources ==

* {{fr}} [http://www.debian-fr.org/changer-le-mot-de-passe-de-mysql-je-craque-t13727.html changer le mot de passe de mysql... je craque]
* {{fr}} [http://aide.sivit.fr/index.php?2005/06/27/53-reinitialisation-du-mot-de-passe-root-de-mysql Réinitialisation du mot de passe root de MySql]
* {{fr}} [https://www.debian-fr.org/reinitialiser-le-mot-de-passe-root-sur-mysql-t35826.html Changer le mot de passe de root sur Mysql]

[[Utilisateur:Lol|Lol]] 22 janvier 2012 à 06:38 (CET)
[[Catégorie:Trucs_et_Astuces]]</text>
      <sha1>s46vhojbvq5rcx6xwgs1int8c5s0a13</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>CheatcubeDebian</title>
    <ns>0</ns>
    <id>268</id>
    <revision>
      <id>1167</id>
      <timestamp>2010-03-24T05:39:52Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « Merci à Gargouille pour sa contribution !  == Le Cube-astuces-Debian ==  LE Cube &quot;astuces&quot; Debian (Cheat-Cube-Debian)  [[#Téléchargements|Voir ici pour le téléchargement… »</comment>
      <text xml:space="preserve" bytes="642">Merci à Gargouille pour sa contribution !

== Le Cube-astuces-Debian ==

LE Cube &quot;astuces&quot; Debian (Cheat-Cube-Debian)

[[#Téléchargements|Voir ici pour le téléchargement]]

[[Fichier:Debiancube.png|1200px|center|thumb]]

== Téléchargements ==

&lt;nowiki&gt;
&lt;a href=&quot;http://beronono.com/wiki-debian/images/2/2b/Cheat_cube_debian.svg&quot; target=&quot;_blank&quot;&gt;Version SVG&lt;/a&gt;
&lt;br&gt;
&lt;a href=&quot;&quot; target=&quot;_blank&quot;&gt;Version SVG Vierge&lt;/a&gt;
&lt;br&gt;
&lt;a href=&quot;&quot; target=&quot;_blank&quot;&gt;Version SVG Anglais&lt;/a&gt;
&lt;br&gt;
&lt;a href=&quot;http://beronono.com/wiki-debian/images/1/12/Debiancube.png&quot; target=&quot;_blank&quot;&gt;Version PNG&lt;/a&gt;
&lt;br&gt;
&lt;a href=&quot;&quot; target=&quot;_blank&quot;&gt;Version PDF&lt;/a&gt;
&lt;/nowiki&gt;</text>
      <sha1>p5txbgevhrxs4tw5ci7qkq69u2tfy2g</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1171</id>
      <parentid>1167</parentid>
      <timestamp>2010-03-24T05:51:58Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Téléchargements */</comment>
      <text xml:space="preserve" bytes="840">Merci à Gargouille pour sa contribution !

== Le Cube-astuces-Debian ==

LE Cube &quot;astuces&quot; Debian (Cheat-Cube-Debian)

[[#Téléchargements|Voir ici pour le téléchargement]]

[[Fichier:Debiancube.png|1200px|center|thumb]]

== Téléchargements ==

&lt;nowiki&gt;
&lt;a href=&quot;http://beronono.com/wiki-debian/images/2/2b/Cheat_cube_debian.svg&quot; target=&quot;_blank&quot;&gt;Version SVG&lt;/a&gt;
&lt;br&gt;
&lt;a href=&quot;http://beronono.com/wiki-debian/images/5/52/Cheat_cube_vierge.svg&quot; target=&quot;_blank&quot;&gt;Version SVG Vierge&lt;/a&gt;
&lt;br&gt;
&lt;a href=&quot;http://beronono.com/wiki-debian/images/c/cc/Cheat_cube_debian_en.svg&quot; target=&quot;_blank&quot;&gt;Version SVG Anglais&lt;/a&gt;
&lt;br&gt;
&lt;a href=&quot;http://beronono.com/wiki-debian/images/1/12/Debiancube.png&quot; target=&quot;_blank&quot;&gt;Version PNG&lt;/a&gt;
&lt;br&gt;
&lt;a href=&quot;http://beronono.com/wiki-debian/images/f/f2/Cheatcubedebianen.pdf&quot; target=&quot;_blank&quot;&gt;Version PDF&lt;/a&gt;
&lt;/nowiki&gt;</text>
      <sha1>gitx7fm8nn0tmug60asns3yzicvukwr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1172</id>
      <parentid>1171</parentid>
      <timestamp>2010-03-24T05:52:32Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Téléchargements */</comment>
      <text xml:space="preserve" bytes="821">Merci à Gargouille pour sa contribution !

== Le Cube-astuces-Debian ==

LE Cube &quot;astuces&quot; Debian (Cheat-Cube-Debian)

[[#Téléchargements|Voir ici pour le téléchargement]]

[[Fichier:Debiancube.png|1200px|center|thumb]]

== Téléchargements ==

&lt;a href=&quot;http://beronono.com/wiki-debian/images/2/2b/Cheat_cube_debian.svg&quot; target=&quot;_blank&quot;&gt;Version SVG&lt;/a&gt;
&lt;br&gt;
&lt;a href=&quot;http://beronono.com/wiki-debian/images/5/52/Cheat_cube_vierge.svg&quot; target=&quot;_blank&quot;&gt;Version SVG Vierge&lt;/a&gt;
&lt;br&gt;
&lt;a href=&quot;http://beronono.com/wiki-debian/images/c/cc/Cheat_cube_debian_en.svg&quot; target=&quot;_blank&quot;&gt;Version SVG Anglais&lt;/a&gt;
&lt;br&gt;
&lt;a href=&quot;http://beronono.com/wiki-debian/images/1/12/Debiancube.png&quot; target=&quot;_blank&quot;&gt;Version PNG&lt;/a&gt;
&lt;br&gt;
&lt;a href=&quot;http://beronono.com/wiki-debian/images/f/f2/Cheatcubedebianen.pdf&quot; target=&quot;_blank&quot;&gt;Version PDF&lt;/a&gt;</text>
      <sha1>3yr7auc9cw6dn762ztubbhfl23e7apo</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1173</id>
      <parentid>1172</parentid>
      <timestamp>2010-03-24T05:55:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Téléchargements */</comment>
      <text xml:space="preserve" bytes="665">Merci à Gargouille pour sa contribution !

== Le Cube-astuces-Debian ==

LE Cube &quot;astuces&quot; Debian (Cheat-Cube-Debian)

[[#Téléchargements|Voir ici pour le téléchargement]]

[[Fichier:Debiancube.png|1200px|center|thumb]]

== Téléchargements ==

[http://beronono.com/wiki-debian/images/2/2b/Cheat_cube_debian.svg Version SVG]

[http://beronono.com/wiki-debian/images/5/52/Cheat_cube_vierge.svg Version SVG Vierge]

[http://beronono.com/wiki-debian/images/c/cc/Cheat_cube_debian_en.svg Version SVG Anglais]

[http://beronono.com/wiki-debian/images/1/12/Debiancube.png Version PNG]

[http://beronono.com/wiki-debian/images/f/f2/Cheatcubedebianen.pdf Version PDF]</text>
      <sha1>o0p7khx71od4h407eu2hw9myqk1w75u</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1180</id>
      <parentid>1173</parentid>
      <timestamp>2010-03-24T06:21:56Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="665">Merci à Gardouille pour sa contribution !

== Le Cube-astuces-Debian ==

LE Cube &quot;astuces&quot; Debian (Cheat-Cube-Debian)

[[#Téléchargements|Voir ici pour le téléchargement]]

[[Fichier:Debiancube.png|1200px|center|thumb]]

== Téléchargements ==

[http://beronono.com/wiki-debian/images/2/2b/Cheat_cube_debian.svg Version SVG]

[http://beronono.com/wiki-debian/images/5/52/Cheat_cube_vierge.svg Version SVG Vierge]

[http://beronono.com/wiki-debian/images/c/cc/Cheat_cube_debian_en.svg Version SVG Anglais]

[http://beronono.com/wiki-debian/images/1/12/Debiancube.png Version PNG]

[http://beronono.com/wiki-debian/images/f/f2/Cheatcubedebianen.pdf Version PDF]</text>
      <sha1>nsvui1ulvrnfmnl1bwg61vvru1jsv9y</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1182</id>
      <parentid>1180</parentid>
      <timestamp>2010-03-24T09:09:58Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="692">Merci à [[Utilisateur:Gardouille|Gardouille]] pour sa contribution !

== Le Cube-astuces-Debian ==

LE Cube &quot;astuces&quot; Debian (Cheat-Cube-Debian)

[[#Téléchargements|Voir ici pour le téléchargement]]

[[Fichier:Debiancube.png|1200px|center|thumb]]

== Téléchargements ==

[http://beronono.com/wiki-debian/images/2/2b/Cheat_cube_debian.svg Version SVG]

[http://beronono.com/wiki-debian/images/5/52/Cheat_cube_vierge.svg Version SVG Vierge]

[http://beronono.com/wiki-debian/images/c/cc/Cheat_cube_debian_en.svg Version SVG Anglais]

[http://beronono.com/wiki-debian/images/1/12/Debiancube.png Version PNG]

[http://beronono.com/wiki-debian/images/f/f2/Cheatcubedebianen.pdf Version PDF]</text>
      <sha1>mvkem0qx16lr8fv58frfofwien9r3ni</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1183</id>
      <parentid>1182</parentid>
      <timestamp>2010-03-24T15:59:36Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="715">Merci à [[Utilisateur:Gardouille|Gardouille]] pour sa contribution !

== Le Cube-astuces-Debian ==

LE Cube &quot;astuces&quot; Debian (Cheat-Cube-Debian)

[[#Téléchargements|Voir ici pour le téléchargement]]

[[Fichier:Debiancube.png|1200px|center|thumb]]

== Téléchargements ==

[http://beronono.com/wiki-debian/images/2/2b/Cheat_cube_debian.svg Version SVG]

[http://beronono.com/wiki-debian/images/5/52/Cheat_cube_vierge.svg Version SVG Vierge]

[http://beronono.com/wiki-debian/images/c/cc/Cheat_cube_debian_en.svg Version SVG Anglais]

[http://beronono.com/wiki-debian/images/1/12/Debiancube.png Version PNG]

[http://beronono.com/wiki-debian/images/f/f2/Cheatcubedebianen.pdf Version PDF]

[[Catégorie:Divers]]</text>
      <sha1>o1ov0eiqrzrjba4y5g4w9uhry3ce8c5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1202</id>
      <parentid>1183</parentid>
      <timestamp>2010-03-29T08:57:30Z</timestamp>
      <contributor>
        <username>Gardouille</username>
        <id>46</id>
      </contributor>
      <comment>/* Téléchargements */</comment>
      <text xml:space="preserve" bytes="718">Merci à [[Utilisateur:Gardouille|Gardouille]] pour sa contribution !

== Le Cube-astuces-Debian ==

LE Cube &quot;astuces&quot; Debian (Cheat-Cube-Debian)

[[#Téléchargements|Voir ici pour le téléchargement]]

[[Fichier:Debiancube.png|1200px|center|thumb]]

== Téléchargements ==

[http://beronono.com/wiki-debian/images/1/16/Cheat_cube_debian_fr.svg Version SVG]

[http://beronono.com/wiki-debian/images/5/52/Cheat_cube_vierge.svg Version SVG Vierge]

[http://beronono.com/wiki-debian/images/c/cc/Cheat_cube_debian_en.svg Version SVG Anglais]

[http://beronono.com/wiki-debian/images/1/12/Debiancube.png Version PNG]

[http://beronono.com/wiki-debian/images/f/f2/Cheatcubedebianen.pdf Version PDF]

[[Catégorie:Divers]]</text>
      <sha1>ga0q1tidysnkm693unt4g6l6pycbteu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1205</id>
      <parentid>1202</parentid>
      <timestamp>2010-03-29T09:09:03Z</timestamp>
      <contributor>
        <username>Gardouille</username>
        <id>46</id>
      </contributor>
      <minor/>
      <comment>/* Téléchargements */</comment>
      <text xml:space="preserve" bytes="732">Merci à [[Utilisateur:Gardouille|Gardouille]] pour sa contribution !

== Le Cube-astuces-Debian ==

LE Cube &quot;astuces&quot; Debian (Cheat-Cube-Debian)

[[#Téléchargements|Voir ici pour le téléchargement]]

[[Fichier:Debiancube.png|1200px|center|thumb]]

== Téléchargements ==

[http://beronono.com/wiki-debian/images/1/16/Cheat_cube_debian_fr.svg Version SVG Fr]

[http://beronono.com/wiki-debian/images/5/52/Cheat_cube_vierge.svg Version SVG Vierge]

[http://beronono.com/wiki-debian/images/c/cc/Cheat_cube_debian_en.svg Version SVG Anglais]

[http://beronono.com/wiki-debian/images/1/12/Debiancube.png Version PNG Fr]

[http://beronono.com/wiki-debian/images/f/f2/Cheatcubedebianen.pdf Version PDF Anglais]

[[Catégorie:Divers]]</text>
      <sha1>adu6wmzw1flu5ty41oanv9jg96j24wg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1209</id>
      <parentid>1205</parentid>
      <timestamp>2010-03-29T09:15:29Z</timestamp>
      <contributor>
        <username>Gardouille</username>
        <id>46</id>
      </contributor>
      <minor/>
      <comment>/* Téléchargements */</comment>
      <text xml:space="preserve" bytes="819">Merci à [[Utilisateur:Gardouille|Gardouille]] pour sa contribution !

== Le Cube-astuces-Debian ==

LE Cube &quot;astuces&quot; Debian (Cheat-Cube-Debian)

[[#Téléchargements|Voir ici pour le téléchargement]]

[[Fichier:Debiancube.png|1200px|center|thumb]]

== Téléchargements ==

[http://beronono.com/wiki-debian/images/1/16/Cheat_cube_debian_fr.svg Version SVG Fr]

[http://beronono.com/wiki-debian/images/5/52/Cheat_cube_vierge.svg Version SVG Vierge]

[http://beronono.com/wiki-debian/images/c/cc/Cheat_cube_debian_en.svg Version SVG Anglais]

[http://beronono.com/wiki-debian/images/1/12/Debiancube.png Version PNG Fr]

[http://beronono.com/wiki-debian/images/0/0a/Cheat_cube_debian_fr.pdf Version PDF Fr]

[http://beronono.com/wiki-debian/images/f/f2/Cheatcubedebianen.pdf Version PDF Anglais]

[[Catégorie:Divers]]</text>
      <sha1>fq8e7bmitdmhm1wld0cu4qkgbjg8v4k</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1609</id>
      <parentid>1209</parentid>
      <timestamp>2010-07-05T07:54:07Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="855">#REDIRECT [[isalo:CheatcubeDebian]]
Merci à [[Utilisateur:Gardouille|Gardouille]] pour sa contribution !

== Le Cube-astuces-Debian ==

LE Cube &quot;astuces&quot; Debian (Cheat-Cube-Debian)

[[#Téléchargements|Voir ici pour le téléchargement]]

[[Fichier:Debiancube.png|1200px|center|thumb]]

== Téléchargements ==

[http://beronono.com/wiki-debian/images/1/16/Cheat_cube_debian_fr.svg Version SVG Fr]

[http://beronono.com/wiki-debian/images/5/52/Cheat_cube_vierge.svg Version SVG Vierge]

[http://beronono.com/wiki-debian/images/c/cc/Cheat_cube_debian_en.svg Version SVG Anglais]

[http://beronono.com/wiki-debian/images/1/12/Debiancube.png Version PNG Fr]

[http://beronono.com/wiki-debian/images/0/0a/Cheat_cube_debian_fr.pdf Version PDF Fr]

[http://beronono.com/wiki-debian/images/f/f2/Cheatcubedebianen.pdf Version PDF Anglais]

[[Catégorie:Divers]]</text>
      <sha1>h3rq0e99i3fhvbnrlbf96zh58bwlfr2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1658</id>
      <parentid>1609</parentid>
      <timestamp>2010-07-06T09:18:52Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Annulation des modifications 1609 de [[Special:Contributions/Lol|Lol]] ([[User talk:Lol|discussion]])</comment>
      <text xml:space="preserve" bytes="819">Merci à [[Utilisateur:Gardouille|Gardouille]] pour sa contribution !

== Le Cube-astuces-Debian ==

LE Cube &quot;astuces&quot; Debian (Cheat-Cube-Debian)

[[#Téléchargements|Voir ici pour le téléchargement]]

[[Fichier:Debiancube.png|1200px|center|thumb]]

== Téléchargements ==

[http://beronono.com/wiki-debian/images/1/16/Cheat_cube_debian_fr.svg Version SVG Fr]

[http://beronono.com/wiki-debian/images/5/52/Cheat_cube_vierge.svg Version SVG Vierge]

[http://beronono.com/wiki-debian/images/c/cc/Cheat_cube_debian_en.svg Version SVG Anglais]

[http://beronono.com/wiki-debian/images/1/12/Debiancube.png Version PNG Fr]

[http://beronono.com/wiki-debian/images/0/0a/Cheat_cube_debian_fr.pdf Version PDF Fr]

[http://beronono.com/wiki-debian/images/f/f2/Cheatcubedebianen.pdf Version PDF Anglais]

[[Catégorie:Divers]]</text>
      <sha1>fq8e7bmitdmhm1wld0cu4qkgbjg8v4k</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2666</id>
      <parentid>1658</parentid>
      <timestamp>2011-01-17T13:33:46Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Modification des liens</comment>
      <text xml:space="preserve" bytes="843">Merci à [[Utilisateur:Gardouille|Gardouille]] pour sa contribution !

== Le Cube-astuces-Debian ==

LE Cube &quot;astuces&quot; Debian (Cheat-Cube-Debian)

[[#Téléchargements|Voir ici pour le téléchargement]]

[[Fichier:Debiancube.png|1200px|center|thumb]]

== Téléchargements ==

[http://www.isalo.org/wiki.debian-fr/images/1/16/Cheat_cube_debian_fr.svg Version SVG Fr]

[http://www.isalo.org/wiki.debian-fr/images/5/52/Cheat_cube_vierge.svg Version SVG Vierge]

[http://www.isalo.org/wiki.debian-fr/images/c/cc/Cheat_cube_debian_en.svg Version SVG Anglais]

[http://www.isalo.org/wiki.debian-fr/images/1/12/Debiancube.png Version PNG Fr]

[http://www.isalo.org/wiki.debian-fr/images/0/0a/Cheat_cube_debian_fr.pdf Version PDF Fr]

[http://www.isalo.org/wiki.debian-fr/images/f/f2/Cheatcubedebianen.pdf Version PDF Anglais]

[[Catégorie:Divers]]</text>
      <sha1>4l97uikfz99h8rrbdr56sh5ez4t6vi9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Chkrootkit</title>
    <ns>0</ns>
    <id>730</id>
    <revision>
      <id>3238</id>
      <timestamp>2011-08-09T14:48:05Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « chkrootkit est un logiciel libre sous licence GNU GPL permettant de détecter si un système UNIX n'a pas été compromis par un rootkit.  Il permet de détecter les traces d... »</comment>
      <text xml:space="preserve" bytes="3125">chkrootkit est un logiciel libre sous licence GNU GPL permettant de détecter si un système UNIX n'a pas été compromis par un rootkit.

Il permet de détecter les traces d'une attaque et de rechercher la présence d'un rootkit sur un système Unix/Linux en vérifiant les quelques points suivants :
* si des fichiers exécutables du système ont été modifiés ;
* si la carte réseau est en mode « promiscuous » ;
* si un ou des vers LKM (Loadable Kernel Module) sont présents.

La vérification effectuée au sujet du mode promiscuous consiste à voir si la carte réseau est configurée pour récupérer et lire toutes les trames, indiquant la possibilité qu'un sniffer soit installé sur le système.

La définition exacte de rootkit donnée par Le Jargon Français est : « ensemble d'exploits réunis afin d'avoir des chances maximales de piquer un compte root (administrateur), c'est-à-dire avec lequel on peut faire n'importe quoi) sur une machine Unix. »

* {{fr}} [http://fr.wikipedia.org/wiki/Chkrootkit Source Wikipedia]

Les binaires suivants sont vérifiés:

&lt;pre style=&quot;width:800px;overflow:auto;&quot;&gt;
aliens asp bindshell lkm rexedcs sniffer w55808 wted scalper slapper z2 chkutmp OSX_RSPLUG amd basename biff chfn chsh cron crontab date du dirname echo egrep env find fingerd gpm grep hdparm su ifconfig inetd inetdconf identd init killall ldsopreload login ls lsof mail mingetty netstat named passwd pidof pop2 pop3 ps pstree rpcinfo rlogind rshd slogin sendmail sshd syslogd tar tcpd tcpdump top telnetd timed traceroute vdir w write
&lt;/pre&gt;

Puis toute une série de vérifications (vers, sniffer's, LKM...)

 # apt-get install chkrootkit

Choisissez les options pas défaut:
&lt;gallery&gt;
Fichier:Chkrootkit01.jpeg
Fichier:Chkrootkit02.jpeg
Fichier:Chkrootkit03.jpeg
&lt;/gallery&gt;

&lt;code&gt;
# chkrootkit 
ROOTDIR is `/'
Checking `amd'...                                           not found
Checking `basename'...                                      not infected
Checking `biff'...                                          not found
Checking `chfn'...                                          not infected
Checking `chsh'...                                          not infected
...
Searching for suspicious files and dirs, it may take a while... The following suspicious files and directories were found:  
/usr/lib/pymodules/python2.6/.path /lib/init/rw/.ramfs
...
Checking `chkutmp'...                                       chkutmp: nothing deleted
Checking `OSX_RSPLUG'...                                    not infected
#
&lt;/code&gt;

Le plus difficile pour vous sera de déterminer les &quot;faux positifs&quot;... En effet, il arrivera que vous ayez des alertes qui ne sont pas justifiées.

Si vous souhaitez un rapport par mail:

Ouvrez /etc/cron.daily/chkrootkit et remplacez

Ceci:
    else
        eval $CHKROOTKIT $RUN_DAILY_OPTS
    fi

Par cela:
    else
        eval $CHKROOTKIT $RUN_DAILY_OPTS 2&gt;&amp;1 | mail root -s &quot;ChkRootkit: Rapport de vérification&quot;
    else

----
* {{en}} [http://www.chkrootkit.org/ Site Officiel]
----
[[Utilisateur:Lol|Lol]] 9 août 2011 à 09:48 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>tlajo64g3wd70flc4oc7l5pgree2ld1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Chroot-i386-dev</title>
    <ns>0</ns>
    <id>1178</id>
    <revision>
      <id>4836</id>
      <timestamp>2012-12-15T12:13:09Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>Page créée avec « Cet article a pour but de vous aider à mettre en place un environnement de compilation i386 sur une Debian amd64.  == Pourquoi ? ==  Il ne semble pas possible de compiler... »</comment>
      <text xml:space="preserve" bytes="4640">Cet article a pour but de vous aider à mettre en place un environnement de compilation i386 sur une Debian amd64.

== Pourquoi ? ==

Il ne semble pas possible de compiler directement des paquets pour une architecture i386 sur un système en amd64 sans devoir d'abord désinstaller tous vos outils de compilations habituels à cause d'une incompatibilité entre les versions i386 et amd64 de certains d'entre eux (gcc le premier).

Une méthode simple pour éviter cette désinstallation/réinstallation à chaque compilation d'architecture différente est de mettre en place un chroot i386 réservé à cet usage sur votre système amd64.

== Les outils ==

Cet article a été réalisé avec la version 1.0.44 de [[Debootstrap|debootstrap]], ainsi que le programme [[Chroot|chroot]] inclus dans la version 8.20-3 de coreutils.

J'utilise aussi [[Apt-p2p|apt-p2p]] en version 0.1.6+nmu1, qui n'est pas nécessaire à la mise en place de cet environnement de compilation.

== La mise en place de l'environnement de compilation ==

Toutes les commandes proposées par la suite sont à exécuter en root.

J'ai choisi de nommer mon chroot &quot;chroot-i386&quot; et de le placer dans /root/.

Il faut tout d'abord créer un dossier vide prêt à l'accueillir :

 mkdir chroot-i386

Puis on installe un système minimal + les outils de nécessaires aux compilations qui y prendront place :

version de la commande avec apt-p2p :

 debootstrap --verbose --arch=i386 --include=apt-p2p,locales,whiptail,build-essential --variant=minbase sid ./chroot-i386/
 http://127.0.0.1:9977/ftp.fr.debian.org/debian/

version de la commande sans apt-p2p :

 debootstrap --verbose --arch=i386 --include=locales,whiptail,build-essential --variant=minbase sid ./chroot-i386/
 http://ftp.fr.debian.org/debian/

Le téléchargement s'effectue et on se retrouve (plus ou moins) rapidement avec un système minimal auquel il ne manque que quelques retouches.

Il faut tout d'abord y placer un sources.list adéquat, dans mon cas je me contente de copier celui de mon système actuel puis d'y effectuer quelques modifications (essentiellement y supprimer des dépôts inutiles pour cet environnement) :

 cp /etc/apt/sources.list ./chroot-i386/etc/apt/sources.list
 nano ./chroot-i386/etc/apt/sources.list

Pour l'exemple, voici le sources.list que j'utilise dans mon environnement de compilation :

 # Debian
 deb http://localhost:9977/ftp.fr.debian.org/debian/ stable main
 deb http://localhost:9977/ftp.fr.debian.org/debian/ stable-updates main
 deb http://localhost:9977/security.debian.org/ stable/updates main
 
 deb http://localhost:9977/ftp.fr.debian.org/debian/ testing main
 deb http://localhost:9977/security.debian.org/ testing/updates main
 
 deb http://localhost:9977/ftp.fr.debian.org/debian/ unstable main
 
 deb http://localhost:9977/ftp.fr.debian.org/debian/ experimental main
 
 # Debian - sources
 deb-src http://localhost:9977/ftp.fr.debian.org/debian/ stable main
 deb-src http://localhost:9977/ftp.fr.debian.org/debian/ stable-updates main
 deb-src http://localhost:9977/security.debian.org/ stable/updates main
 
 deb-src http://localhost:9977/ftp.fr.debian.org/debian/ testing main
 deb-src http://localhost:9977/security.debian.org/ testing/updates main
 
 deb-src http://localhost:9977/ftp.fr.debian.org/debian/ unstable main
 
 deb-src http://localhost:9977/ftp.fr.debian.org/debian/ experimental main

J'y copie ensuite mon fichier apt.conf pour conserver les réglages d'APT de mon système habituel :

 cp /etc/apt/apt.conf ./chroot-i386/etc/apt/apt.conf

== Premiers pas dans ce nouvel environnement ==

Pour finaliser les derniers réglages, je vais devoir entrer dans ce chroot :

 chroot ./chroot-i386/

J'en profite pour vérifier que je suis bien sur une architecture i386 avec la commande suivante :

 dpkg --print-architecture

Aucune locale n'est définie par défaut dans cet environnement, ce qui va vite poser problème vu que son utilisation implique une utilisation massive de la ligne de commande. J'en définis donc une avec la commande suivante :

 dpkg-reconfigure locales

Enfin, je n'ai plus qu'à mettre à jour les listes de paquets d'APT pour que ce chroot soit prêt à compiler :

 apt-get update

Et voilà !

Pour utiliser cet environnement de compilation, il me suffit d'entrer la commande &quot;chroot /root/chroot-i386&quot;, et pour le quitter d'entrer la commande &quot;exit&quot;.


[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 15 décembre 2012 à 13:13 (CET)

source : [https://www.debian-fr.org/installation-chroot-32-bits-transparent-t14673.html Installation chroot 32 bits transparent (par fran.b)]</text>
      <sha1>lbpfnra9s273mxtc81ivwby7lx322uy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4837</id>
      <parentid>4836</parentid>
      <timestamp>2012-12-16T15:33:05Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>/* La mise en place de l'environnement de compilation */</comment>
      <text xml:space="preserve" bytes="4660">Cet article a pour but de vous aider à mettre en place un environnement de compilation i386 sur une Debian amd64.

== Pourquoi ? ==

Il ne semble pas possible de compiler directement des paquets pour une architecture i386 sur un système en amd64 sans devoir d'abord désinstaller tous vos outils de compilations habituels à cause d'une incompatibilité entre les versions i386 et amd64 de certains d'entre eux (gcc le premier).

Une méthode simple pour éviter cette désinstallation/réinstallation à chaque compilation d'architecture différente est de mettre en place un chroot i386 réservé à cet usage sur votre système amd64.

== Les outils ==

Cet article a été réalisé avec la version 1.0.44 de [[Debootstrap|debootstrap]], ainsi que le programme [[Chroot|chroot]] inclus dans la version 8.20-3 de coreutils.

J'utilise aussi [[Apt-p2p|apt-p2p]] en version 0.1.6+nmu1, qui n'est pas nécessaire à la mise en place de cet environnement de compilation.

== La mise en place de l'environnement de compilation ==

Toutes les commandes proposées par la suite sont à exécuter en root.

J'ai choisi de nommer mon chroot &quot;chroot-i386&quot; et de le placer dans /root/.

Il faut tout d'abord créer un dossier vide prêt à l'accueillir :

 mkdir chroot-i386

Puis on installe un système minimal + les outils de nécessaires aux compilations qui y prendront place :

version de la commande avec apt-p2p :

 debootstrap --verbose --arch=i386 --include=apt-p2p,apt-utils,locales,whiptail,build-essential --variant=minbase sid ./chroot-i386/
 http://127.0.0.1:9977/ftp.fr.debian.org/debian/

version de la commande sans apt-p2p :

 debootstrap --verbose --arch=i386 --include=apt-utils,locales,whiptail,build-essential --variant=minbase sid ./chroot-i386/
 http://ftp.fr.debian.org/debian/

Le téléchargement s'effectue et on se retrouve (plus ou moins) rapidement avec un système minimal auquel il ne manque que quelques retouches.

Il faut tout d'abord y placer un sources.list adéquat, dans mon cas je me contente de copier celui de mon système actuel puis d'y effectuer quelques modifications (essentiellement y supprimer des dépôts inutiles pour cet environnement) :

 cp /etc/apt/sources.list ./chroot-i386/etc/apt/sources.list
 nano ./chroot-i386/etc/apt/sources.list

Pour l'exemple, voici le sources.list que j'utilise dans mon environnement de compilation :

 # Debian
 deb http://localhost:9977/ftp.fr.debian.org/debian/ stable main
 deb http://localhost:9977/ftp.fr.debian.org/debian/ stable-updates main
 deb http://localhost:9977/security.debian.org/ stable/updates main
 
 deb http://localhost:9977/ftp.fr.debian.org/debian/ testing main
 deb http://localhost:9977/security.debian.org/ testing/updates main
 
 deb http://localhost:9977/ftp.fr.debian.org/debian/ unstable main
 
 deb http://localhost:9977/ftp.fr.debian.org/debian/ experimental main
 
 # Debian - sources
 deb-src http://localhost:9977/ftp.fr.debian.org/debian/ stable main
 deb-src http://localhost:9977/ftp.fr.debian.org/debian/ stable-updates main
 deb-src http://localhost:9977/security.debian.org/ stable/updates main
 
 deb-src http://localhost:9977/ftp.fr.debian.org/debian/ testing main
 deb-src http://localhost:9977/security.debian.org/ testing/updates main
 
 deb-src http://localhost:9977/ftp.fr.debian.org/debian/ unstable main
 
 deb-src http://localhost:9977/ftp.fr.debian.org/debian/ experimental main

J'y copie ensuite mon fichier apt.conf pour conserver les réglages d'APT de mon système habituel :

 cp /etc/apt/apt.conf ./chroot-i386/etc/apt/apt.conf

== Premiers pas dans ce nouvel environnement ==

Pour finaliser les derniers réglages, je vais devoir entrer dans ce chroot :

 chroot ./chroot-i386/

J'en profite pour vérifier que je suis bien sur une architecture i386 avec la commande suivante :

 dpkg --print-architecture

Aucune locale n'est définie par défaut dans cet environnement, ce qui va vite poser problème vu que son utilisation implique une utilisation massive de la ligne de commande. J'en définis donc une avec la commande suivante :

 dpkg-reconfigure locales

Enfin, je n'ai plus qu'à mettre à jour les listes de paquets d'APT pour que ce chroot soit prêt à compiler :

 apt-get update

Et voilà !

Pour utiliser cet environnement de compilation, il me suffit d'entrer la commande &quot;chroot /root/chroot-i386&quot;, et pour le quitter d'entrer la commande &quot;exit&quot;.


[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 15 décembre 2012 à 13:13 (CET)

source : [https://www.debian-fr.org/installation-chroot-32-bits-transparent-t14673.html Installation chroot 32 bits transparent (par fran.b)]</text>
      <sha1>cwa7i7qqr8cjahnp40jzals940a4iku</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5755</id>
      <parentid>4837</parentid>
      <timestamp>2014-08-20T05:03:20Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* La mise en place de l'environnement de compilation */ chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="4664">Cet article a pour but de vous aider à mettre en place un environnement de compilation i386 sur une Debian amd64.

== Pourquoi ? ==

Il ne semble pas possible de compiler directement des paquets pour une architecture i386 sur un système en amd64 sans devoir d'abord désinstaller tous vos outils de compilations habituels à cause d'une incompatibilité entre les versions i386 et amd64 de certains d'entre eux (gcc le premier).

Une méthode simple pour éviter cette désinstallation/réinstallation à chaque compilation d'architecture différente est de mettre en place un chroot i386 réservé à cet usage sur votre système amd64.

== Les outils ==

Cet article a été réalisé avec la version 1.0.44 de [[Debootstrap|debootstrap]], ainsi que le programme [[Chroot|chroot]] inclus dans la version 8.20-3 de coreutils.

J'utilise aussi [[Apt-p2p|apt-p2p]] en version 0.1.6+nmu1, qui n'est pas nécessaire à la mise en place de cet environnement de compilation.

== La mise en place de l'environnement de compilation ==

Toutes les commandes proposées par la suite sont à exécuter en root.

J'ai choisi de nommer mon chroot &quot;chroot-i386&quot; et de le placer dans /root/.

Il faut tout d'abord créer un répertoire vide prêt à l'accueillir :

 mkdir chroot-i386

Puis on installe un système minimal + les outils de nécessaires aux compilations qui y prendront place :

version de la commande avec apt-p2p :

 debootstrap --verbose --arch=i386 --include=apt-p2p,apt-utils,locales,whiptail,build-essential --variant=minbase sid ./chroot-i386/
 http://127.0.0.1:9977/ftp.fr.debian.org/debian/

version de la commande sans apt-p2p :

 debootstrap --verbose --arch=i386 --include=apt-utils,locales,whiptail,build-essential --variant=minbase sid ./chroot-i386/
 http://ftp.fr.debian.org/debian/

Le téléchargement s'effectue et on se retrouve (plus ou moins) rapidement avec un système minimal auquel il ne manque que quelques retouches.

Il faut tout d'abord y placer un sources.list adéquat, dans mon cas je me contente de copier celui de mon système actuel puis d'y effectuer quelques modifications (essentiellement y supprimer des dépôts inutiles pour cet environnement) :

 cp /etc/apt/sources.list ./chroot-i386/etc/apt/sources.list
 nano ./chroot-i386/etc/apt/sources.list

Pour l'exemple, voici le sources.list que j'utilise dans mon environnement de compilation :

 # Debian
 deb http://localhost:9977/ftp.fr.debian.org/debian/ stable main
 deb http://localhost:9977/ftp.fr.debian.org/debian/ stable-updates main
 deb http://localhost:9977/security.debian.org/ stable/updates main
 
 deb http://localhost:9977/ftp.fr.debian.org/debian/ testing main
 deb http://localhost:9977/security.debian.org/ testing/updates main
 
 deb http://localhost:9977/ftp.fr.debian.org/debian/ unstable main
 
 deb http://localhost:9977/ftp.fr.debian.org/debian/ experimental main
 
 # Debian - sources
 deb-src http://localhost:9977/ftp.fr.debian.org/debian/ stable main
 deb-src http://localhost:9977/ftp.fr.debian.org/debian/ stable-updates main
 deb-src http://localhost:9977/security.debian.org/ stable/updates main
 
 deb-src http://localhost:9977/ftp.fr.debian.org/debian/ testing main
 deb-src http://localhost:9977/security.debian.org/ testing/updates main
 
 deb-src http://localhost:9977/ftp.fr.debian.org/debian/ unstable main
 
 deb-src http://localhost:9977/ftp.fr.debian.org/debian/ experimental main

J'y copie ensuite mon fichier apt.conf pour conserver les réglages d'APT de mon système habituel :

 cp /etc/apt/apt.conf ./chroot-i386/etc/apt/apt.conf

== Premiers pas dans ce nouvel environnement ==

Pour finaliser les derniers réglages, je vais devoir entrer dans ce chroot :

 chroot ./chroot-i386/

J'en profite pour vérifier que je suis bien sur une architecture i386 avec la commande suivante :

 dpkg --print-architecture

Aucune locale n'est définie par défaut dans cet environnement, ce qui va vite poser problème vu que son utilisation implique une utilisation massive de la ligne de commande. J'en définis donc une avec la commande suivante :

 dpkg-reconfigure locales

Enfin, je n'ai plus qu'à mettre à jour les listes de paquets d'APT pour que ce chroot soit prêt à compiler :

 apt-get update

Et voilà !

Pour utiliser cet environnement de compilation, il me suffit d'entrer la commande &quot;chroot /root/chroot-i386&quot;, et pour le quitter d'entrer la commande &quot;exit&quot;.


[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 15 décembre 2012 à 13:13 (CET)

source : [https://www.debian-fr.org/installation-chroot-32-bits-transparent-t14673.html Installation chroot 32 bits transparent (par fran.b)]</text>
      <sha1>7tnhwm73rhmyonoedq672i9b45m7dwd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5786</id>
      <parentid>5755</parentid>
      <timestamp>2014-08-22T01:23:08Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="4246">Cet article a pour but de vous aider à mettre en place un environnement de compilation i386 sur une Debian amd64.

== Pourquoi ? ==

Il ne semble pas possible de compiler directement des paquets pour une architecture i386 sur un système en amd64 sans devoir d’abord désinstaller tous vos outils de compilations habituels à cause d’une incompatibilité entre les versions i386 et amd64 de certains d’entre eux (gcc le premier).

Une méthode simple pour éviter cette désinstallation/réinstallation à chaque compilation pour une architecture différente est de mettre en place un chroot i386 réservé à cet usage sur votre système amd64.

== Les outils ==

Cet article a été réalisé avec la version 1.0.60 de [[Debootstrap|debootstrap]], ainsi que le programme [[Chroot|chroot]] inclus dans la version 8.21-1.2 de coreutils.

== La mise en place de l’environnement de compilation ==

Toutes les commandes proposées par la suite sont à exécuter en root.

J’ai choisi de nommer mon chroot &quot;chroot-sid-i386&quot; et de le placer dans /root/.

deboostrap va créer le répertoire du chroot et y installer un système minimal ainsi que les outils de nécessaires aux compilations qui y prendront place :

 debootstrap --verbose --arch=i386 --include=apt-utils,locales,whiptail --variant=buildd sid ./chroot-sid-i386/ http://ftp.fr.debian.org/debian/

Le téléchargement s’effectue et on se retrouve (plus ou moins) rapidement avec un système minimal auquel il ne manque que quelques retouches.

Il faut tout d’abord y placer un sources.list adéquat, dans mon cas je me contente de copier celui de mon système actuel puis d’y effectuer quelques modifications (essentiellement y supprimer des dépôts inutiles pour cet environnement) :

 cp /etc/apt/sources.list ./chroot-sid-i386/etc/apt/sources.list
 nano ./chroot-sid-i386/etc/apt/sources.list

Pour l’exemple, voici le sources.list que j’utilise dans mon environnement de compilation :

 # Debian
 deb http://ftp.fr.debian.org/debian/ stable main 
 deb http://ftp.fr.debian.org/debian/ stable-updates main 
 deb http://security.debian.org/ stable/updates main 
 
 deb http://ftp.fr.debian.org/debian/ testing main 
 deb http://security.debian.org/ testing/updates main 
 
 deb http://ftp.fr.debian.org/debian/ unstable main 
 
 deb http://ftp.fr.debian.org/debian/ experimental main 
 
 # Debian - sources
 deb-src http://ftp.fr.debian.org/debian/ stable main
 deb-src http://ftp.fr.debian.org/debian/ stable-updates main
 deb-src http://security.debian.org/ stable/updates main
 
 deb-src http://ftp.fr.debian.org/debian/ testing main
 deb-src http://security.debian.org/ testing/updates main
 
 deb-src http://ftp.fr.debian.org/debian/ unstable main
 
 deb-src http://ftp.fr.debian.org/debian/ experimental main

J’y copie ensuite mon fichier apt.conf pour conserver la configuration d’APT de mon système habituel :

 cp /etc/apt/apt.conf ./chroot-sid-i386/etc/apt/apt.conf

== Premiers pas dans ce nouvel environnement ==

Pour finaliser les derniers réglages, je vais devoir entrer dans ce chroot :

 chroot ./chroot-sid-i386/

J’en profite pour vérifier que je suis bien sur une architecture i386 avec la commande suivante :

 dpkg --print-architecture

Aucune locale n’est définie par défaut dans cet environnement, ce qui va vite poser problème vu que les compilations impliquent une utilisation massive de la ligne de commande. J’en définis donc une avec la commande suivante :

 dpkg-reconfigure locales

Enfin, je n’ai plus qu’à mettre à jour les listes de paquets d’APT pour que ce chroot soit prêt à compiler :

 apt-get update

Et voilà !

Pour utiliser cet environnement de compilation, il me suffit d’entrer la commande &quot;chroot /root/chroot-sid-i386&quot;, et pour le quitter d’entrer la commande &quot;exit&quot;.

----
création :
[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 15 décembre 2012 à 13:13 (CET)

dernière mise-à-jour :
[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 22 août 2014 à 03:23 (CEST)
----
source : [https://www.debian-fr.org/installation-chroot-32-bits-transparent-t14673.html Installation chroot 32 bits transparent (par fran.b)]</text>
      <sha1>7isut9sodxw3ujcn0c7nsz4acxkpgla</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5787</id>
      <parentid>5786</parentid>
      <timestamp>2014-08-22T01:27:21Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="4528">Cet article a pour but de vous aider à mettre en place un environnement de compilation i386 sur une Debian amd64.

== Pourquoi ? ==

Il ne semble pas possible de compiler directement des paquets pour une architecture i386 sur un système en amd64 sans devoir d’abord désinstaller tous vos outils de compilations habituels à cause d’une incompatibilité entre les versions i386 et amd64 de certains d’entre eux (gcc le premier).

Une méthode simple pour éviter cette désinstallation/réinstallation à chaque compilation pour une architecture différente est de mettre en place un chroot i386 réservé à cet usage sur votre système amd64.

== Les outils ==

Cet article a été réalisé avec la version 1.0.60 de [[Debootstrap|debootstrap]], ainsi que le programme [[Chroot|chroot]] inclus dans la version 8.21-1.2 de coreutils.

== La mise en place de l’environnement de compilation ==

Toutes les commandes proposées par la suite sont à exécuter en root.

J’ai choisi de nommer mon chroot &quot;chroot-sid-i386&quot; et de le placer dans /root/.

deboostrap va créer le répertoire du chroot et y installer un système minimal ainsi que les outils de nécessaires aux compilations qui y prendront place :

 debootstrap --verbose --arch=i386 --include=apt-utils,locales,whiptail --variant=buildd sid ./chroot-sid-i386/ http://ftp.fr.debian.org/debian/

Le téléchargement s’effectue et on se retrouve (plus ou moins) rapidement avec un système minimal auquel il ne manque que quelques retouches.

Il faut tout d’abord y placer un sources.list adéquat, dans mon cas je me contente de copier celui de mon système actuel puis d’y effectuer quelques modifications (essentiellement y supprimer des dépôts inutiles pour cet environnement) :

 cp /etc/apt/sources.list ./chroot-sid-i386/etc/apt/sources.list
 nano ./chroot-sid-i386/etc/apt/sources.list

Pour l’exemple, voici le sources.list que j’utilise dans mon environnement de compilation :

 # Debian
 deb http://ftp.fr.debian.org/debian/ stable main 
 deb http://ftp.fr.debian.org/debian/ stable-updates main 
 deb http://security.debian.org/ stable/updates main 
 
 deb http://ftp.fr.debian.org/debian/ testing main 
 deb http://security.debian.org/ testing/updates main 
 
 deb http://ftp.fr.debian.org/debian/ unstable main 
 
 deb http://ftp.fr.debian.org/debian/ experimental main 
 
 # Debian - sources
 deb-src http://ftp.fr.debian.org/debian/ stable main
 deb-src http://ftp.fr.debian.org/debian/ stable-updates main
 deb-src http://security.debian.org/ stable/updates main
 
 deb-src http://ftp.fr.debian.org/debian/ testing main
 deb-src http://security.debian.org/ testing/updates main
 
 deb-src http://ftp.fr.debian.org/debian/ unstable main
 
 deb-src http://ftp.fr.debian.org/debian/ experimental main

J’y copie ensuite mon fichier apt.conf pour conserver la configuration d’APT de mon système habituel :

 cp /etc/apt/apt.conf ./chroot-sid-i386/etc/apt/apt.conf

Enfin je donne un nom à mon chroot, qui sera affiché au début de mon prompt lorsque j’y travaillerai. De cette façon, je peux savoir d’un coup d’œil si je suis dans le chroot ou sur mon système principal :
 echo &quot;chroot-sid-i386&quot; &gt; ./chroot-sid-i386/etc/debian_chroot

== Premiers pas dans ce nouvel environnement ==

Pour finaliser les derniers réglages, je vais devoir entrer dans ce chroot :

 chroot ./chroot-sid-i386/

J’en profite pour vérifier que je suis bien sur une architecture i386 avec la commande suivante :

 dpkg --print-architecture

Aucune locale n’est définie par défaut dans cet environnement, ce qui va vite poser problème vu que les compilations impliquent une utilisation massive de la ligne de commande. J’en définis donc une avec la commande suivante :

 dpkg-reconfigure locales

Enfin, je n’ai plus qu’à mettre à jour les listes de paquets d’APT pour que ce chroot soit prêt à compiler :

 apt-get update

Et voilà !

Pour utiliser cet environnement de compilation, il me suffit d’entrer la commande &quot;chroot /root/chroot-sid-i386&quot;, et pour le quitter d’entrer la commande &quot;exit&quot;.

----
création :
[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 15 décembre 2012 à 13:13 (CET)

dernière mise-à-jour :
[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 22 août 2014 à 03:23 (CEST)
----
source : [https://www.debian-fr.org/installation-chroot-32-bits-transparent-t14673.html Installation chroot 32 bits transparent (par fran.b)]</text>
      <sha1>9hephgu2ob26nwwptkj5v9sr69an5jt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5823</id>
      <parentid>5787</parentid>
      <timestamp>2014-09-09T16:57:02Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="4674">{{Avertissement|'''Il est conseillé de passer par pbuilder plutôt que monter soi-même son chroot si le but est de compiler des paquets.'''}}


Cet article a pour but de vous aider à mettre en place un environnement de compilation i386 sur une Debian amd64.

== Pourquoi ? ==

Il ne semble pas possible de compiler directement des paquets pour une architecture i386 sur un système en amd64 sans devoir d’abord désinstaller tous vos outils de compilations habituels à cause d’une incompatibilité entre les versions i386 et amd64 de certains d’entre eux (gcc le premier).

Une méthode simple pour éviter cette désinstallation/réinstallation à chaque compilation pour une architecture différente est de mettre en place un chroot i386 réservé à cet usage sur votre système amd64.

== Les outils ==

Cet article a été réalisé avec la version 1.0.60 de [[Debootstrap|debootstrap]], ainsi que le programme [[Chroot|chroot]] inclus dans la version 8.21-1.2 de coreutils.

== La mise en place de l’environnement de compilation ==

Toutes les commandes proposées par la suite sont à exécuter en root.

J’ai choisi de nommer mon chroot &quot;chroot-sid-i386&quot; et de le placer dans /root/.

deboostrap va créer le répertoire du chroot et y installer un système minimal ainsi que les outils de nécessaires aux compilations qui y prendront place :

 debootstrap --verbose --arch=i386 --include=apt-utils,locales,whiptail --variant=buildd sid ./chroot-sid-i386/ http://ftp.fr.debian.org/debian/

Le téléchargement s’effectue et on se retrouve (plus ou moins) rapidement avec un système minimal auquel il ne manque que quelques retouches.

Il faut tout d’abord y placer un sources.list adéquat, dans mon cas je me contente de copier celui de mon système actuel puis d’y effectuer quelques modifications (essentiellement y supprimer des dépôts inutiles pour cet environnement) :

 cp /etc/apt/sources.list ./chroot-sid-i386/etc/apt/sources.list
 nano ./chroot-sid-i386/etc/apt/sources.list

Pour l’exemple, voici le sources.list que j’utilise dans mon environnement de compilation :

 # Debian
 deb http://ftp.fr.debian.org/debian/ stable main 
 deb http://ftp.fr.debian.org/debian/ stable-updates main 
 deb http://security.debian.org/ stable/updates main 
 
 deb http://ftp.fr.debian.org/debian/ testing main 
 deb http://security.debian.org/ testing/updates main 
 
 deb http://ftp.fr.debian.org/debian/ unstable main 
 
 deb http://ftp.fr.debian.org/debian/ experimental main 
 
 # Debian - sources
 deb-src http://ftp.fr.debian.org/debian/ stable main
 deb-src http://ftp.fr.debian.org/debian/ stable-updates main
 deb-src http://security.debian.org/ stable/updates main
 
 deb-src http://ftp.fr.debian.org/debian/ testing main
 deb-src http://security.debian.org/ testing/updates main
 
 deb-src http://ftp.fr.debian.org/debian/ unstable main
 
 deb-src http://ftp.fr.debian.org/debian/ experimental main

J’y copie ensuite mon fichier apt.conf pour conserver la configuration d’APT de mon système habituel :

 cp /etc/apt/apt.conf ./chroot-sid-i386/etc/apt/apt.conf

Enfin je donne un nom à mon chroot, qui sera affiché au début de mon prompt lorsque j’y travaillerai. De cette façon, je peux savoir d’un coup d’œil si je suis dans le chroot ou sur mon système principal :
 echo &quot;chroot-sid-i386&quot; &gt; ./chroot-sid-i386/etc/debian_chroot

== Premiers pas dans ce nouvel environnement ==

Pour finaliser les derniers réglages, je vais devoir entrer dans ce chroot :

 chroot ./chroot-sid-i386/

J’en profite pour vérifier que je suis bien sur une architecture i386 avec la commande suivante :

 dpkg --print-architecture

Aucune locale n’est définie par défaut dans cet environnement, ce qui va vite poser problème vu que les compilations impliquent une utilisation massive de la ligne de commande. J’en définis donc une avec la commande suivante :

 dpkg-reconfigure locales

Enfin, je n’ai plus qu’à mettre à jour les listes de paquets d’APT pour que ce chroot soit prêt à compiler :

 apt-get update

Et voilà !

Pour utiliser cet environnement de compilation, il me suffit d’entrer la commande &quot;chroot /root/chroot-sid-i386&quot;, et pour le quitter d’entrer la commande &quot;exit&quot;.

----
création :
[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 15 décembre 2012 à 13:13 (CET)

dernière mise-à-jour :
[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 22 août 2014 à 03:23 (CEST)
----
source : [https://www.debian-fr.org/installation-chroot-32-bits-transparent-t14673.html Installation chroot 32 bits transparent (par fran.b)]</text>
      <sha1>2rbg4x3hnmbe0okwdmkwgoyl4but7qi</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Clef usb d'installation</title>
    <ns>0</ns>
    <id>1047</id>
    <revision>
      <id>4384</id>
      <timestamp>2012-08-12T16:44:31Z</timestamp>
      <contributor>
        <username>Ginkgo biloba</username>
        <id>22</id>
      </contributor>
      <comment>Créer une clef d'installation linux à partir d'une iso pouvant contenir des firmwares et pouvant être utilisée par ailleurs.</comment>
      <text xml:space="preserve" bytes="4089">'''Objectif :''' créer une clef USB d'installation à partir une iso pouvant éventuellement contenir des firmwares manquant pour du matériel récent ou exotique qui n'est pas pris en compte ou pour une machine sans lecteur de disque.


* Téléchargez une image ISO, netinstall par exemple. 
Où trouver ds images debian :
:http://cdimage.debian.org/cdimage/
:http://www.debian.org/devel/debian-installer/
:http://www.debian.org/releases/squeeze/debian-installer/
:http://kmuto.jp/debian/d-i/
On va supposer que l'image se trouve ensuite dans un répertoire iso situé dans le répertoire personnel

* On va lancer un terminal : gnome-terminal, lxterminal, xterm, ... 

* Insérez une clef USB
Il faut que la clef ait une capacité supérieure à celle de l'image.

* Comment le système repère-t-il la clef ?
Taper la commande 
 sudo fdisk -l

La dernière section indique la clef récemment branchée.
On va supposer qu'il s'agit de /dev/sdb dans les commandes suivantes.
Il faudra changer le b par la lettre indiquée précédemment


* Pour installer l'iso taper la commande
 cd iso
 dd if=VotreNetinstall.iso of=/dev/sdb

si votre clef est bien /dev/sdb (adaptez en modifiant le b de sdb !)


* Pour que la place qui n'est pas utilisée sur la clef puisse être utilisée tapez la commande (il faut les droits root) :
si sudo a été configuré:
 sudo fdisk /dev/sdb     
ou si sudo n'a pas été configuré
 su -c 'fdisk /dev/sdb'  

Vous verrez affichée une partition type 17, c'est à dire de type iso9660, et de la place disponible. Tapez les commandes suivantes
 n                           (nouvelle partition)
 p                           (principale)
 2                           (la deuxième car la première, c'est l'iso)
 &lt;entrée&gt;                    (prendre le nombre suggéré)
 &lt;entrée&gt;                    (prendre le nombre suggéré)
 t                           (change le type de partition)
 2                           (le changement s'effectue pour la partition n°2, la n°1 contenant l'iso)
 c                           (partition de type FAT32, tapez l pour les types de partition possibles)
 w                           (écrit les changements sur la clef et termine la mise en action de fdisk)


* Il faut formater ensuite la partition /dev/sdb2 que l'on vient de créer. Tapez les commandes :
 sudo umount /dev/sdb2
 sudo mkfs.vfat /dev/sdb2         
qui formate la partition en FAT32
Pour d'autres types de partition, mkfs.ext3 ... Voir avec &quot;man mkfs&quot; les différents types possibles. 

* À ce stade la clef est boutable se comportant comme le CD de la netinstall.
Vous avez la possibilité de mettre sur cette même clef tous les firmwares que vous voulez qu'il suffit de déposer dans la racine de partition sdb2. C'est la partition que l'on peut voir quand on insère la clef dans la prise USB de l'ordinateur.
Si à l'installation, on vous demande un éventuel firmware, enchaînez sur Oui, le firmware sera trouvé dans la racine de la partition sdb2 et l'installation continuera.

Il faut également souligner que ces firmwares ne sont pas installés mais juste utilisés par l'installateur. Usuellement celui-ci charge également les paquets des firmwares nécessaires mais si ceux ci viennent de firmwares-non-free, il faut rajouter les dépots non-free aux sources.list.

Cela peut se traduire par la carte réseau non fonctionnelle au reboute de la machine. Une possibilités dans ce cas est de recopier les firmwares de la dans le répertoire /lib/firmware de la machine installé puis de redémarrer (on récupère alors le réseau) et d'installer enfin les paquets firmwares nécessaires.

* Où touver les firmwares ?
Pour ceux qui veulent les commons firmwares non-free: http://cdimage.debian.org/cdimage/unofficial/non-free/firmware/

http://boisson.homeip.net/debian/firmwares.tgz (firmware debian plus quelques autres)

* Testé avec une debian stable/squeeze. Avec une sid ou une testing/wheezy, il se peut qu'il faille insister un peu ...
* Fil d'origine : https://www.debian-fr.org/clefinstall-debian-avec-firmware-t39656.html</text>
      <sha1>opsk9xwh2jljmvzz1auih8bsg2t20g8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4385</id>
      <parentid>4384</parentid>
      <timestamp>2012-08-12T17:06:26Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="4103">'''Objectif :''' créer une clef USB d'installation à partir d'une iso pouvant éventuellement contenir des firmwares manquants pour du matériel récent ou exotique qui n'est pas pris en compte ou pour une machine sans lecteur de disque.


* Téléchargez une image ISO, netinstall par exemple. 
Où trouver des images debian :
:http://cdimage.debian.org/cdimage/
:http://www.debian.org/devel/debian-installer/
:http://www.debian.org/releases/squeeze/debian-installer/
:http://kmuto.jp/debian/d-i/
On va supposer que l'image se trouve ensuite dans un répertoire iso situé dans le répertoire personnel

* On va lancer un terminal : gnome-terminal, lxterminal, xterm, ... 

* Insérez une clef USB
Il faut que la clef ait une capacité supérieure à celle de l'image.

* Comment le système repère-t-il la clef ?
Taper la commande 
 sudo fdisk -l

La dernière section indique la clef récemment branchée.
On va supposer qu'il s'agit de /dev/sdb dans les commandes suivantes.
Il faudra changer le b par la lettre indiquée précédemment.


* Pour installer l'iso taper la commande
 cd iso
 dd if=VotreNetinstall.iso of=/dev/sdb

si votre clef est bien /dev/sdb (adaptez en modifiant le b de sdb !)


* Pour que la place qui n'est pas utilisée sur la clef puisse être utilisée tapez la commande (il faut les droits root) :
si sudo a été configuré:
 sudo fdisk /dev/sdb     
ou si sudo n'a pas été configuré
 su -c 'fdisk /dev/sdb'  

Vous verrez affichée une partition type 17, c'est à dire de type iso9660, et de la place disponible. Tapez les commandes suivantes
 n                           (nouvelle partition)
 p                           (principale)
 2                           (la deuxième car la première, c'est l'iso)
 &lt;entrée&gt;                    (prendre le nombre suggéré)
 &lt;entrée&gt;                    (prendre le nombre suggéré)
 t                           (change le type de partition)
 2                           (le changement s'effectue pour la partition n°2, la n°1 contenant l'iso)
 c                           (partition de type FAT32, tapez l pour les types de partition possibles)
 w                           (écrit les changements sur la clef et termine la mise en action de fdisk)


* Il faut formater ensuite la partition /dev/sdb2 que l'on vient de créer. Tapez les commandes :
 sudo umount /dev/sdb2
 sudo mkfs.vfat /dev/sdb2         
qui formate la partition en FAT32
Pour d'autres types de partition, mkfs.ext3 ... Voir avec &quot;man mkfs&quot; les différents types possibles. 

* À ce stade la clef est boutable se comportant comme le CD de la netinstall.
Vous avez la possibilité de mettre sur cette même clef tous les firmwares que vous voulez qu'il suffit de déposer à la racine de la partition sdb2. C'est la partition que l'on peut voir quand on insère la clef dans la prise USB de l'ordinateur.
Si à l'installation, on vous demande un éventuel firmware, enchaînez sur Oui, le firmware sera trouvé à la racine de la partition sdb2 et l'installation continuera.

Il faut également souligner que ces firmwares ne sont pas installés mais juste utilisés par l'installateur. Usuellement celui-ci charge également les paquets des firmwares nécessaires mais si ceux ci viennent de firmwares-non-free, il faut rajouter les dépots non-free aux sources.list.

Cela peut se traduire par la carte réseau non fonctionnelle au redémarrage de la machine. Une possibilité dans ce cas est de recopier les firmwares de la ??? dans le répertoire /lib/firmware de la machine installée puis de redémarrer (on récupère alors le réseau) et d'installer enfin les paquets firmwares nécessaires.

* Où trouver les firmwares ?
Pour ceux qui veulent les commons firmwares non-free: http://cdimage.debian.org/cdimage/unofficial/non-free/firmware/

http://boisson.homeip.net/debian/firmwares.tgz (firmware debian plus quelques autres)

* Testé avec une debian stable/squeeze. Avec une sid ou une testing/wheezy, il se peut qu'il faille insister un peu ...
* Fil d'origine : https://www.debian-fr.org/clefinstall-debian-avec-firmware-t39656.html</text>
      <sha1>13hhwoedbjtoqx3030r0rfpl6s8x5ft</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4386</id>
      <parentid>4385</parentid>
      <timestamp>2012-08-12T22:35:13Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="4064">'''Objectif :''' créer une clef USB d'installation à partir d'une iso pouvant éventuellement contenir des firmwares manquants pour du matériel récent ou exotique qui n'est pas pris en compte ou pour une machine sans lecteur de disque.


* Téléchargez une image ISO, netinstall par exemple. 
Où trouver des images debian :
:http://cdimage.debian.org/cdimage/
:http://www.debian.org/devel/debian-installer/
:http://www.debian.org/releases/squeeze/debian-installer/
:http://kmuto.jp/debian/d-i/
On va supposer que l'image se trouve ensuite dans un répertoire iso situé dans le répertoire personnel

* Lancez un terminal : gnome-terminal, lxterminal, xterm, ... 

* Insérez une clef USB
Il faut que la clef ait une capacité supérieure à celle de l'image.

* Comment le système repère-t-il la clef ?
Taper la commande 
 sudo fdisk -l

La dernière section indique la clef récemment branchée.
On va supposer qu'il s'agit de /dev/sdb dans les commandes suivantes.
Il faudra changer le b par la lettre indiquée précédemment.


* Pour installer l'iso taper la commande
 cd iso
 dd if=VotreNetinstall.iso of=/dev/sdb

si votre clef est bien /dev/sdb (adaptez en modifiant le b de sdb !)


* Pour pouvoir utiliser la place restant libre dans la clef, tapez la commande (il faut les droits root) :
si sudo a été configuré:
 sudo fdisk /dev/sdb     
ou si sudo n'a pas été configuré
 su -c 'fdisk /dev/sdb'  

Vous verrez affichée une partition type 17, c'est à dire de type iso9660, et de la place disponible. Tapez les commandes suivantes
 n                           (nouvelle partition)
 p                           (principale)
 2                           (la deuxième car la première, c'est l'iso)
 &lt;entrée&gt;                    (prendre le nombre suggéré)
 &lt;entrée&gt;                    (prendre le nombre suggéré)
 t                           (change le type de partition)
 2                           (le changement s'effectue pour la partition n°2, la n°1 contenant l'iso)
 c                           (partition de type FAT32, tapez l pour les types de partition possibles)
 w                           (écrit les changements sur la clef et termine la mise en action de fdisk)


* Il faut formater ensuite la partition /dev/sdb2 que l'on vient de créer. Tapez les commandes :
 sudo umount /dev/sdb2
 sudo mkfs.vfat /dev/sdb2         
qui formate la partition en FAT32
Pour d'autres types de partition, mkfs.ext3 ... Voir avec &quot;man mkfs&quot; les différents types possibles. 

* À ce stade la clef est boutable se comportant comme le CD de la netinstall.
Vous avez la possibilité de mettre sur cette même clef tous les firmwares que vous voulez. Il suffit de les déposer à la racine de la partition sdb2. C'est la partition que l'on peut voir quand on insère la clef dans la prise USB de l'ordinateur.
Si à l'installation, on vous demande un éventuel firmware, enchaînez sur Oui, le firmware sera trouvé à la racine de la partition sdb2 et l'installation continuera.

Il faut souligner que ces firmwares ne sont pas installés mais juste utilisés par l'installateur. Usuellement celui-là charge également les paquets nécessaires mais si ceux-là proviennent de &quot;firmwares-non-free&quot;, il faut rajouter les dépôts &quot;non-free&quot; aux sources.list.

Cela peut se traduire par une carte réseau non fonctionnelle au redémarrage de la machine. Dans ce cas, une possibilité  est de recopier les firmwares de la machine installée dans le répertoire /lib/firmware,  puis de redémarrer (on récupère alors le réseau) et d'installer enfin les paquets firmwares nécessaires.

* Où trouver les firmwares ?
Pour ceux qui veulent les &quot;commons firmwares non-free&quot; : http://cdimage.debian.org/cdimage/unofficial/non-free/firmware/

http://boisson.homeip.net/debian/firmwares.tgz (firmware debian plus quelques autres)

* Testé avec une debian stable/squeeze. Avec une sid ou une testing/wheezy, il se peut qu'il faille insister un peu ...
* Fil d'origine : https://www.debian-fr.org/clefinstall-debian-avec-firmware-t39656.html</text>
      <sha1>9ymrzd76uq9sl1opoygni7y4fvak7s2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4390</id>
      <parentid>4386</parentid>
      <timestamp>2012-08-13T12:22:21Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="4057">'''Objectif :''' créer une clef USB d'installation à partir d'une iso pouvant éventuellement contenir des firmwares manquants pour du matériel récent ou exotique qui n'est pas pris en compte ou pour une machine sans lecteur de disque.


* Téléchargez une image ISO, netinstall par exemple. 
Où trouver des images debian :
:http://cdimage.debian.org/cdimage/
:http://www.debian.org/devel/debian-installer/
:http://www.debian.org/releases/squeeze/debian-installer/
:http://kmuto.jp/debian/d-i/
On va supposer que l'image se trouve ensuite dans un répertoire iso situé dans le répertoire personnel

* Lancez un terminal : gnome-terminal, lxterminal, xterm, ... 

* Insérez une clef USB
Il faut que la clef ait une capacité supérieure à celle de l'image.

* Comment le système repère-t-il la clef ?
Taper la commande 
 sudo fdisk -l

La dernière section indique la clef récemment branchée.
On va supposer qu'il s'agit de /dev/sdb dans les commandes suivantes.
Il faudra changer le b par la lettre indiquée précédemment.


* Pour installer l'iso taper la commande
 cd iso
 dd if=VotreNetinstall.iso of=/dev/sdb

si votre clef est bien /dev/sdb (adaptez en modifiant le b de sdb !)


* Pour pouvoir utiliser la place restant libre dans la clef, tapez la commande (il faut les droits root) :
si sudo a été configuré:
 sudo fdisk /dev/sdb     
ou si sudo n'a pas été configuré
 su -c 'fdisk /dev/sdb'  

Vous verrez affichée une partition type 17, c'est à dire de type iso9660, et de la place disponible. Tapez les commandes suivantes
 n                           (nouvelle partition)
 p                           (principale)
 2                           (la deuxième car la première, c'est l'iso)
 &lt;entrée&gt;                    (prendre le nombre suggéré)
 &lt;entrée&gt;                    (prendre le nombre suggéré)
 t                           (change le type de partition)
 2                           (le changement s'effectue pour la partition n°2, la n°1 contenant l'iso)
 c                           (partition de type FAT32, tapez l pour les types de partition possibles)
 w                           (écrit les changements sur la clef et termine la mise en action de fdisk)


* Il faut formater ensuite la partition /dev/sdb2 que l'on vient de créer. Tapez les commandes :
 sudo umount /dev/sdb2
 sudo mkfs.vfat /dev/sdb2         
qui formate la partition en FAT32
Pour d'autres types de partition, mkfs.ext3 ... Voir avec &quot;man mkfs&quot; les différents types possibles. 

* À ce stade la clef est boutable se comportant comme le CD de la netinstall.
Vous avez la possibilité de mettre sur cette même clef tous les firmwares que vous voulez. Il suffit de les déposer à la racine de la partition sdb2. C'est la partition que l'on peut voir quand on insère la clef dans la prise USB de l'ordinateur.
Si à l'installation, on vous demande un éventuel firmware, enchaînez sur Oui, le firmware sera trouvé à la racine de la partition sdb2 et l'installation continuera.

Il faut souligner que ces firmwares ne sont pas installés mais juste utilisés par l'installateur. Usuellement celui-là charge également les paquets nécessaires mais si ceux-là proviennent de &quot;firmwares-non-free&quot;, il faut rajouter les dépôts &quot;non-free&quot; aux sources.list.

Cela peut se traduire par une carte réseau non fonctionnelle au redémarrage de la machine. Dans ce cas, une possibilité  est de recopier les firmwares de la machine installée dans le répertoire /lib/firmware,  puis de redémarrer (on récupère alors le réseau) et d'installer enfin les paquets firmwares nécessaires.

* Où trouver les firmwares ?
Pour ceux qui veulent les &quot;commons firmwares non-free&quot; : http://cdimage.debian.org/cdimage/unofficial/non-free/firmware/

http://boisson.homeip.net/debian/firmwares.tgz (firmware debian plus quelques autres)

* Testé avec une debian stable/squeeze. Avec une sid ou une testing, il se peut qu'il faille insister un peu ...
* Fil d'origine : https://www.debian-fr.org/clefinstall-debian-avec-firmware-t39656.html</text>
      <sha1>terus8okeeyttc2eqmmur4lgs3s7eeu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Clien FTP</title>
    <ns>0</ns>
    <id>489</id>
    <redirect title="Client FTP" />
    <revision>
      <id>1894</id>
      <timestamp>2010-08-08T06:41:30Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>a déplacé [[Clien FTP]] vers [[Client FTP]]</comment>
      <text xml:space="preserve" bytes="27">#REDIRECTION [[Client FTP]]</text>
      <sha1>9kufkxarkyd2eyt0uknchod7wvlqyg3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Client FTP</title>
    <ns>0</ns>
    <id>488</id>
    <revision>
      <id>1891</id>
      <timestamp>2010-08-07T17:24:50Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>Page créée avec « &amp;nbsp;Voici un script FTP que j'ai écris lorsque j'ai commencé à faire un site web. &lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;La particularité de ce client est qu'il effectue une sorte de sync… »</comment>
      <text xml:space="preserve" bytes="5040">&amp;nbsp;Voici un script FTP que j'ai écris lorsque j'ai commencé à faire un site web.
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;La particularité de ce client est qu'il effectue une sorte de synchronisation entre un dossier du disque dur et un dossier FTP. Cela permet de ne pas passer son temps à recherche quel fichier avez-vous modifié pour les envoyer sur le serveur.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Afin de sélectionner le dossier local, le serveur ftp, votre login et votre mot de passe il faut modifier le script lui même.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;'''/!\ attention cela signifie que votre mot de passe est inscrit en clair dans le script /!\'''&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Ce script est sous licence CECILL, c'est donc un logiciel libre.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;#!/usr/bin/perl

# -*- coding: utf-8 -*-

# Envoie de données par ftp

# Version 0.5


#Copyright Michel Barret, 4 avril 2009


#michel.barret@gmail.com


#Ce logiciel est un programme informatique servant à envoyer une arborescence

#complète d'un répertoire sur FTP.


#Ce logiciel est régi par la licence CeCILL soumise au droit français et

#respectant les principes de diffusion des logiciels libres. Vous pouvez

#utiliser, modifier et/ou redistribuer ce programme sous les conditions

#de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA 

#sur le site &quot;http://www.cecill.info&quot;.


#En contrepartie de l'accessibilité au code source et des droits de copie,

#de modification et de redistribution accordés par cette licence, il n'est

#offert aux utilisateurs qu'une garantie limitée.  Pour les mêmes raisons,

#seule une responsabilité restreinte pèse sur l'auteur du programme,  le

#titulaire des droits patrimoniaux et les concédants successifs.


#A cet égard  l'attention de l'utilisateur est attirée sur les risques

#associés au chargement,  à l'utilisation,  à la modification et/ou au

#développement et à la reproduction du logiciel par l'utilisateur étant 

#donné sa spécificité de logiciel libre, qui peut le rendre complexe à 

#manipuler et qui le réserve donc à des développeurs et des professionnels

#avertis possédant  des  connaissances  informatiques approfondies.  Les

#utilisateurs sont donc invités à charger  et  tester  l'adéquation  du

#logiciel à leurs besoins dans des conditions permettant d'assurer la

#sécurité de leurs systèmes et ou de leurs données et, plus généralement, 

#à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. 


#Le fait que vous puissiez accéder à cet en-tête signifie que vous avez 

#pris connaissance de la licence CeCILL, et que vous en avez accepté les

#termes.


use strict;

use warnings;

use Time::Local;

use Net::FTP;

use Term::ANSIColor;


sub printblue {

    print color 'bold blue';

    print @_;

    print color 'reset';

}


sub printgreen {

    print color 'green';

    print @_;

    print color 'reset';

}


my $localdir = $ENV{HOME}.'/public_html/blog';

my $distdir = '/blog';

my $host = 'ftpperso.free.fr';

my $login = 'michel.barret5';

my $mdp = '*****';


my $fileref = $ENV{HOME}.'/.ftpperl';

my $dateref;

if (-f $fileref){

    $dateref = (stat ($fileref))[9];

}


my $ftp = Net::FTP-&amp;gt;new($host, Debug =&amp;gt; 0)

    or die &quot;Echec de la connexion à $host: $@&quot;;


$ftp-&amp;gt;login($login, $mdp)

    or die &quot;Echec du&quot;, $ftp-&amp;gt;message;


$ftp-&amp;gt;cwd($distdir)

    or die &quot;Echec du changement de répertoire &quot;, $ftp-&amp;gt;message;

$ftp-&amp;gt;binary();


sub parcours {

    my $path = shift(@_);

    opendir(DIR, $path) or die &quot;can't open $path: $!\n&quot;;

    printblue &quot; On entre dans le répertoire $path\n&quot;;

    my @files = readdir(DIR);

    closedir(DIR);

    foreach my $file (@files) {

        next if $file =~ /^\.\.?$/;

        if (-d $path.'/'.$file) {

            # Le fichier est un répertoire

            $ftp-&amp;gt;mkdir($file);

            # On ne vérifie pas l'erreur au

            # cas où le dossier existe déjà

            $ftp-&amp;gt;cwd($file)

                or die &quot;cwd failed &quot;, $ftp-&amp;gt;message;

            &amp;amp;parcours($path.'/'.$file);

        }

        elsif (-f $path.'/'.$file) {

            if (grep(/^$file$/, $ftp-&amp;gt;ls())){

                # Le fichier existe déjà sur le serveur

                my $localdate = (stat ($path.'/'.$file))[9];

                if(! -f $fileref){

                    $dateref = $ftp-&amp;gt;mdtm($file);

                }

                next if($dateref &amp;gt; $localdate);

                # Sinon on le supprime pour le remplacer

                $ftp-&amp;gt;delete($file);

            }

            $ftp-&amp;gt;put($path.'/'.$file)

                or die &quot;put failed &quot;, $ftp-&amp;gt;message;

            printgreen $file.&quot; envoyé\n&quot;;

        }

    }

    # On remonte d'un cran

    $ftp-&amp;gt;cdup()

        or die &quot;cdup failed &quot;, $ftp-&amp;gt;message;

    print $path.&quot; traité\n&quot;;

}


parcours $localdir;


$ftp-&amp;gt;quit;


utime(time, time, $fileref) or ( open(F, &quot;&amp;gt;$fileref&quot;) &amp;amp;&amp;amp; close F );&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;</text>
      <sha1>8n6o0xnqn7boqiribxn5sk1a7ofdp4i</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1892</id>
      <parentid>1891</parentid>
      <timestamp>2010-08-07T17:30:56Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>Ajout dans la catégorie programmation</comment>
      <text xml:space="preserve" bytes="4966">&amp;nbsp;Voici un script FTP que j'ai écris lorsque j'ai commencé à faire un site web.
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;La particularité de ce client est qu'il effectue une sorte de synchronisation entre un dossier du disque dur et un dossier FTP. Cela permet de ne pas passer son temps à recherche quel fichier avez-vous modifié pour les envoyer sur le serveur.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Afin de sélectionner le dossier local, le serveur ftp, votre login et votre mot de passe il faut modifier le script lui même.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;'''/!\ attention cela signifie que votre mot de passe est inscrit en clair dans le script /!\'''&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Ce script est sous licence CECILL, c'est donc un logiciel libre.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;#!/usr/bin/perl

# -*- coding: utf-8 -*-
# Envoie de données par ftp
# Version 0.5

#Copyright Michel Barret, 4 avril 2009
#michel.barret@gmail.com
#Ce logiciel est un programme informatique servant à envoyer une arborescence
#complète d'un répertoire sur FTP.
#Ce logiciel est régi par la licence CeCILL soumise au droit français et
#respectant les principes de diffusion des logiciels libres. Vous pouvez
#utiliser, modifier et/ou redistribuer ce programme sous les conditions
#de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA 
#sur le site &quot;http://www.cecill.info&quot;.
#En contrepartie de l'accessibilité au code source et des droits de copie,
#de modification et de redistribution accordés par cette licence, il n'est
#offert aux utilisateurs qu'une garantie limitée.  Pour les mêmes raisons,
#seule une responsabilité restreinte pèse sur l'auteur du programme,  le
#titulaire des droits patrimoniaux et les concédants successifs.

#A cet égard  l'attention de l'utilisateur est attirée sur les risques
#associés au chargement,  à l'utilisation,  à la modification et/ou au
#développement et à la reproduction du logiciel par l'utilisateur étant 
#donné sa spécificité de logiciel libre, qui peut le rendre complexe à 
#manipuler et qui le réserve donc à des développeurs et des professionnels
#avertis possédant  des  connaissances  informatiques approfondies.  Les
#utilisateurs sont donc invités à charger  et  tester  l'adéquation  du
#logiciel à leurs besoins dans des conditions permettant d'assurer la
#sécurité de leurs systèmes et ou de leurs données et, plus généralement, 
#à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. 

#Le fait que vous puissiez accéder à cet en-tête signifie que vous avez 
#pris connaissance de la licence CeCILL, et que vous en avez accepté les
#termes.

use strict;
use warnings;
use Time::Local;
use Net::FTP;
use Term::ANSIColor;

sub printblue {
    print color 'bold blue';
    print @_;
    print color 'reset';
}

sub printgreen {
    print color 'green';
    print @_;
    print color 'reset';
}

my $localdir = $ENV{HOME}.'/public_html/blog';
my $distdir = '/blog';
my $host = 'ftpperso.free.fr';
my $login = 'michel.barret5';
my $mdp = '*****';

my $fileref = $ENV{HOME}.'/.ftpperl';
my $dateref;

if (-f $fileref){
    $dateref = (stat ($fileref))[9];
}

my $ftp = Net::FTP-&amp;gt;new($host, Debug =&amp;gt; 0)
    or die &quot;Echec de la connexion à $host: $@&quot;;

$ftp-&amp;gt;login($login, $mdp)
    or die &quot;Echec du&quot;, $ftp-&amp;gt;message;

$ftp-&amp;gt;cwd($distdir)
    or die &quot;Echec du changement de répertoire &quot;, $ftp-&amp;gt;message;
$ftp-&amp;gt;binary();

sub parcours {
    my $path = shift(@_);
    opendir(DIR, $path) or die &quot;can't open $path: $!\n&quot;;
    printblue &quot; On entre dans le répertoire $path\n&quot;;
    my @files = readdir(DIR);

    closedir(DIR);

    foreach my $file (@files) {
        next if $file =~ /^\.\.?$/;

        if (-d $path.'/'.$file) {
            # Le fichier est un répertoire
            $ftp-&amp;gt;mkdir($file);
            # On ne vérifie pas l'erreur au
            # cas où le dossier existe déjà
            $ftp-&amp;gt;cwd($file)
                or die &quot;cwd failed &quot;, $ftp-&amp;gt;message;
            &amp;amp;parcours($path.'/'.$file);
        }
        elsif (-f $path.'/'.$file) {
            if (grep(/^$file$/, $ftp-&amp;gt;ls())){
                # Le fichier existe déjà sur le serveur
                my $localdate = (stat ($path.'/'.$file))[9];
                if(! -f $fileref){
                    $dateref = $ftp-&amp;gt;mdtm($file);
                }
                next if($dateref &amp;gt; $localdate);
                # Sinon on le supprime pour le remplacer
                $ftp-&amp;gt;delete($file);
            }
            $ftp-&amp;gt;put($path.'/'.$file)
                or die &quot;put failed &quot;, $ftp-&amp;gt;message;
            printgreen $file.&quot; envoyé\n&quot;;
        }
    }
    # On remonte d'un cran
    $ftp-&amp;gt;cdup()
        or die &quot;cdup failed &quot;, $ftp-&amp;gt;message;
    print $path.&quot; traité\n&quot;;
}

parcours $localdir;

$ftp-&amp;gt;quit;

utime(time, time, $fileref) or ( open(F, &quot;&amp;gt;$fileref&quot;) &amp;amp;&amp;amp; close F );&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;

[[Category:Programmation]]</text>
      <sha1>3iwg3nmin9oysq3sxo3fotklphin7qo</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1893</id>
      <parentid>1892</parentid>
      <timestamp>2010-08-08T06:41:30Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>a déplacé [[Clien FTP]] vers [[Client FTP]]</comment>
      <text xml:space="preserve" bytes="4966">&amp;nbsp;Voici un script FTP que j'ai écris lorsque j'ai commencé à faire un site web.
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;La particularité de ce client est qu'il effectue une sorte de synchronisation entre un dossier du disque dur et un dossier FTP. Cela permet de ne pas passer son temps à recherche quel fichier avez-vous modifié pour les envoyer sur le serveur.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Afin de sélectionner le dossier local, le serveur ftp, votre login et votre mot de passe il faut modifier le script lui même.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;'''/!\ attention cela signifie que votre mot de passe est inscrit en clair dans le script /!\'''&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Ce script est sous licence CECILL, c'est donc un logiciel libre.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;#!/usr/bin/perl

# -*- coding: utf-8 -*-
# Envoie de données par ftp
# Version 0.5

#Copyright Michel Barret, 4 avril 2009
#michel.barret@gmail.com
#Ce logiciel est un programme informatique servant à envoyer une arborescence
#complète d'un répertoire sur FTP.
#Ce logiciel est régi par la licence CeCILL soumise au droit français et
#respectant les principes de diffusion des logiciels libres. Vous pouvez
#utiliser, modifier et/ou redistribuer ce programme sous les conditions
#de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA 
#sur le site &quot;http://www.cecill.info&quot;.
#En contrepartie de l'accessibilité au code source et des droits de copie,
#de modification et de redistribution accordés par cette licence, il n'est
#offert aux utilisateurs qu'une garantie limitée.  Pour les mêmes raisons,
#seule une responsabilité restreinte pèse sur l'auteur du programme,  le
#titulaire des droits patrimoniaux et les concédants successifs.

#A cet égard  l'attention de l'utilisateur est attirée sur les risques
#associés au chargement,  à l'utilisation,  à la modification et/ou au
#développement et à la reproduction du logiciel par l'utilisateur étant 
#donné sa spécificité de logiciel libre, qui peut le rendre complexe à 
#manipuler et qui le réserve donc à des développeurs et des professionnels
#avertis possédant  des  connaissances  informatiques approfondies.  Les
#utilisateurs sont donc invités à charger  et  tester  l'adéquation  du
#logiciel à leurs besoins dans des conditions permettant d'assurer la
#sécurité de leurs systèmes et ou de leurs données et, plus généralement, 
#à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. 

#Le fait que vous puissiez accéder à cet en-tête signifie que vous avez 
#pris connaissance de la licence CeCILL, et que vous en avez accepté les
#termes.

use strict;
use warnings;
use Time::Local;
use Net::FTP;
use Term::ANSIColor;

sub printblue {
    print color 'bold blue';
    print @_;
    print color 'reset';
}

sub printgreen {
    print color 'green';
    print @_;
    print color 'reset';
}

my $localdir = $ENV{HOME}.'/public_html/blog';
my $distdir = '/blog';
my $host = 'ftpperso.free.fr';
my $login = 'michel.barret5';
my $mdp = '*****';

my $fileref = $ENV{HOME}.'/.ftpperl';
my $dateref;

if (-f $fileref){
    $dateref = (stat ($fileref))[9];
}

my $ftp = Net::FTP-&amp;gt;new($host, Debug =&amp;gt; 0)
    or die &quot;Echec de la connexion à $host: $@&quot;;

$ftp-&amp;gt;login($login, $mdp)
    or die &quot;Echec du&quot;, $ftp-&amp;gt;message;

$ftp-&amp;gt;cwd($distdir)
    or die &quot;Echec du changement de répertoire &quot;, $ftp-&amp;gt;message;
$ftp-&amp;gt;binary();

sub parcours {
    my $path = shift(@_);
    opendir(DIR, $path) or die &quot;can't open $path: $!\n&quot;;
    printblue &quot; On entre dans le répertoire $path\n&quot;;
    my @files = readdir(DIR);

    closedir(DIR);

    foreach my $file (@files) {
        next if $file =~ /^\.\.?$/;

        if (-d $path.'/'.$file) {
            # Le fichier est un répertoire
            $ftp-&amp;gt;mkdir($file);
            # On ne vérifie pas l'erreur au
            # cas où le dossier existe déjà
            $ftp-&amp;gt;cwd($file)
                or die &quot;cwd failed &quot;, $ftp-&amp;gt;message;
            &amp;amp;parcours($path.'/'.$file);
        }
        elsif (-f $path.'/'.$file) {
            if (grep(/^$file$/, $ftp-&amp;gt;ls())){
                # Le fichier existe déjà sur le serveur
                my $localdate = (stat ($path.'/'.$file))[9];
                if(! -f $fileref){
                    $dateref = $ftp-&amp;gt;mdtm($file);
                }
                next if($dateref &amp;gt; $localdate);
                # Sinon on le supprime pour le remplacer
                $ftp-&amp;gt;delete($file);
            }
            $ftp-&amp;gt;put($path.'/'.$file)
                or die &quot;put failed &quot;, $ftp-&amp;gt;message;
            printgreen $file.&quot; envoyé\n&quot;;
        }
    }
    # On remonte d'un cran
    $ftp-&amp;gt;cdup()
        or die &quot;cdup failed &quot;, $ftp-&amp;gt;message;
    print $path.&quot; traité\n&quot;;
}

parcours $localdir;

$ftp-&amp;gt;quit;

utime(time, time, $fileref) or ( open(F, &quot;&amp;gt;$fileref&quot;) &amp;amp;&amp;amp; close F );&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;

[[Category:Programmation]]</text>
      <sha1>3iwg3nmin9oysq3sxo3fotklphin7qo</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1895</id>
      <parentid>1893</parentid>
      <timestamp>2010-08-08T06:44:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Sous-catégorie Scripts</comment>
      <text xml:space="preserve" bytes="4960">&amp;nbsp;Voici un script FTP que j'ai écris lorsque j'ai commencé à faire un site web.
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;La particularité de ce client est qu'il effectue une sorte de synchronisation entre un dossier du disque dur et un dossier FTP. Cela permet de ne pas passer son temps à recherche quel fichier avez-vous modifié pour les envoyer sur le serveur.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Afin de sélectionner le dossier local, le serveur ftp, votre login et votre mot de passe il faut modifier le script lui même.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;'''/!\ attention cela signifie que votre mot de passe est inscrit en clair dans le script /!\'''&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Ce script est sous licence CECILL, c'est donc un logiciel libre.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;#!/usr/bin/perl

# -*- coding: utf-8 -*-
# Envoie de données par ftp
# Version 0.5

#Copyright Michel Barret, 4 avril 2009
#michel.barret@gmail.com
#Ce logiciel est un programme informatique servant à envoyer une arborescence
#complète d'un répertoire sur FTP.
#Ce logiciel est régi par la licence CeCILL soumise au droit français et
#respectant les principes de diffusion des logiciels libres. Vous pouvez
#utiliser, modifier et/ou redistribuer ce programme sous les conditions
#de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA 
#sur le site &quot;http://www.cecill.info&quot;.
#En contrepartie de l'accessibilité au code source et des droits de copie,
#de modification et de redistribution accordés par cette licence, il n'est
#offert aux utilisateurs qu'une garantie limitée.  Pour les mêmes raisons,
#seule une responsabilité restreinte pèse sur l'auteur du programme,  le
#titulaire des droits patrimoniaux et les concédants successifs.

#A cet égard  l'attention de l'utilisateur est attirée sur les risques
#associés au chargement,  à l'utilisation,  à la modification et/ou au
#développement et à la reproduction du logiciel par l'utilisateur étant 
#donné sa spécificité de logiciel libre, qui peut le rendre complexe à 
#manipuler et qui le réserve donc à des développeurs et des professionnels
#avertis possédant  des  connaissances  informatiques approfondies.  Les
#utilisateurs sont donc invités à charger  et  tester  l'adéquation  du
#logiciel à leurs besoins dans des conditions permettant d'assurer la
#sécurité de leurs systèmes et ou de leurs données et, plus généralement, 
#à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. 

#Le fait que vous puissiez accéder à cet en-tête signifie que vous avez 
#pris connaissance de la licence CeCILL, et que vous en avez accepté les
#termes.

use strict;
use warnings;
use Time::Local;
use Net::FTP;
use Term::ANSIColor;

sub printblue {
    print color 'bold blue';
    print @_;
    print color 'reset';
}

sub printgreen {
    print color 'green';
    print @_;
    print color 'reset';
}

my $localdir = $ENV{HOME}.'/public_html/blog';
my $distdir = '/blog';
my $host = 'ftpperso.free.fr';
my $login = 'michel.barret5';
my $mdp = '*****';

my $fileref = $ENV{HOME}.'/.ftpperl';
my $dateref;

if (-f $fileref){
    $dateref = (stat ($fileref))[9];
}

my $ftp = Net::FTP-&amp;gt;new($host, Debug =&amp;gt; 0)
    or die &quot;Echec de la connexion à $host: $@&quot;;

$ftp-&amp;gt;login($login, $mdp)
    or die &quot;Echec du&quot;, $ftp-&amp;gt;message;

$ftp-&amp;gt;cwd($distdir)
    or die &quot;Echec du changement de répertoire &quot;, $ftp-&amp;gt;message;
$ftp-&amp;gt;binary();

sub parcours {
    my $path = shift(@_);
    opendir(DIR, $path) or die &quot;can't open $path: $!\n&quot;;
    printblue &quot; On entre dans le répertoire $path\n&quot;;
    my @files = readdir(DIR);

    closedir(DIR);

    foreach my $file (@files) {
        next if $file =~ /^\.\.?$/;

        if (-d $path.'/'.$file) {
            # Le fichier est un répertoire
            $ftp-&amp;gt;mkdir($file);
            # On ne vérifie pas l'erreur au
            # cas où le dossier existe déjà
            $ftp-&amp;gt;cwd($file)
                or die &quot;cwd failed &quot;, $ftp-&amp;gt;message;
            &amp;amp;parcours($path.'/'.$file);
        }
        elsif (-f $path.'/'.$file) {
            if (grep(/^$file$/, $ftp-&amp;gt;ls())){
                # Le fichier existe déjà sur le serveur
                my $localdate = (stat ($path.'/'.$file))[9];
                if(! -f $fileref){
                    $dateref = $ftp-&amp;gt;mdtm($file);
                }
                next if($dateref &amp;gt; $localdate);
                # Sinon on le supprime pour le remplacer
                $ftp-&amp;gt;delete($file);
            }
            $ftp-&amp;gt;put($path.'/'.$file)
                or die &quot;put failed &quot;, $ftp-&amp;gt;message;
            printgreen $file.&quot; envoyé\n&quot;;
        }
    }
    # On remonte d'un cran
    $ftp-&amp;gt;cdup()
        or die &quot;cdup failed &quot;, $ftp-&amp;gt;message;
    print $path.&quot; traité\n&quot;;
}

parcours $localdir;

$ftp-&amp;gt;quit;

utime(time, time, $fileref) or ( open(F, &quot;&amp;gt;$fileref&quot;) &amp;amp;&amp;amp; close F );&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;

[[Category:Scripts]]</text>
      <sha1>tknfcn8agrcpg1ugzpif41bji76n5zg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1900</id>
      <parentid>1895</parentid>
      <timestamp>2010-08-09T17:46:54Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="4962">&amp;nbsp;Voici un script FTP que j'ai écris lorsque j'ai commencé à faire un site web.
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;La particularité de ce client est qu'il effectue une sorte de synchronisation entre un dossier du disque dur et un dossier FTP. Cela permet de ne pas passer son temps à rechercher quels fichiers vous avez modifié pour les envoyer sur le serveur.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Afin de sélectionner le dossier local, le serveur ftp, votre login et votre mot de passe il faut modifier le script lui même.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;'''/!\ attention cela signifie que votre mot de passe est inscrit en clair dans le script /!\'''&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Ce script est sous licence CECILL, c'est donc un logiciel libre.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;#!/usr/bin/perl

# -*- coding: utf-8 -*-
# Envoi de données par ftp
# Version 0.5

#Copyright Michel Barret, 4 avril 2009
#michel.barret@gmail.com
#Ce logiciel est un programme informatique servant à envoyer une arborescence
#complète d'un répertoire sur FTP.
#Ce logiciel est régi par la licence CeCILL soumise au droit français et
#respectant les principes de diffusion des logiciels libres. Vous pouvez
#utiliser, modifier et/ou redistribuer ce programme sous les conditions
#de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA 
#sur le site &quot;http://www.cecill.info&quot;.
#En contrepartie de l'accessibilité au code source et des droits de copie,
#de modification et de redistribution accordés par cette licence, il n'est
#offert aux utilisateurs qu'une garantie limitée.  Pour les mêmes raisons,
#seule une responsabilité restreinte pèse sur l'auteur du programme,  le
#titulaire des droits patrimoniaux et les concédants successifs.

#A cet égard  l'attention de l'utilisateur est attirée sur les risques
#associés au chargement,  à l'utilisation,  à la modification et/ou au
#développement et à la reproduction du logiciel par l'utilisateur étant 
#donné sa spécificité de logiciel libre, qui peut le rendre complexe à 
#manipuler et qui le réserve donc à des développeurs et des professionnels
#avertis possédant  des  connaissances  informatiques approfondies.  Les
#utilisateurs sont donc invités à charger  et  tester  l'adéquation  du
#logiciel à leurs besoins dans des conditions permettant d'assurer la
#sécurité de leurs systèmes et ou de leurs données et, plus généralement, 
#à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. 

#Le fait que vous puissiez accéder à cet en-tête signifie que vous avez 
#pris connaissance de la licence CeCILL, et que vous en avez accepté les
#termes.

use strict;
use warnings;
use Time::Local;
use Net::FTP;
use Term::ANSIColor;

sub printblue {
    print color 'bold blue';
    print @_;
    print color 'reset';
}

sub printgreen {
    print color 'green';
    print @_;
    print color 'reset';
}

my $localdir = $ENV{HOME}.'/public_html/blog';
my $distdir = '/blog';
my $host = 'ftpperso.free.fr';
my $login = 'michel.barret5';
my $mdp = '*****';

my $fileref = $ENV{HOME}.'/.ftpperl';
my $dateref;

if (-f $fileref){
    $dateref = (stat ($fileref))[9];
}

my $ftp = Net::FTP-&amp;gt;new($host, Debug =&amp;gt; 0)
    or die &quot;Echec de la connexion à $host: $@&quot;;

$ftp-&amp;gt;login($login, $mdp)
    or die &quot;Echec du&quot;, $ftp-&amp;gt;message;

$ftp-&amp;gt;cwd($distdir)
    or die &quot;Echec du changement de répertoire &quot;, $ftp-&amp;gt;message;
$ftp-&amp;gt;binary();

sub parcours {
    my $path = shift(@_);
    opendir(DIR, $path) or die &quot;can't open $path: $!\n&quot;;
    printblue &quot; On entre dans le répertoire $path\n&quot;;
    my @files = readdir(DIR);

    closedir(DIR);

    foreach my $file (@files) {
        next if $file =~ /^\.\.?$/;

        if (-d $path.'/'.$file) {
            # Le fichier est un répertoire
            $ftp-&amp;gt;mkdir($file);
            # On ne vérifie pas l'erreur au
            # cas où le dossier existe déjà
            $ftp-&amp;gt;cwd($file)
                or die &quot;cwd failed &quot;, $ftp-&amp;gt;message;
            &amp;amp;parcours($path.'/'.$file);
        }
        elsif (-f $path.'/'.$file) {
            if (grep(/^$file$/, $ftp-&amp;gt;ls())){
                # Le fichier existe déjà sur le serveur
                my $localdate = (stat ($path.'/'.$file))[9];
                if(! -f $fileref){
                    $dateref = $ftp-&amp;gt;mdtm($file);
                }
                next if($dateref &amp;gt; $localdate);
                # Sinon on le supprime pour le remplacer
                $ftp-&amp;gt;delete($file);
            }
            $ftp-&amp;gt;put($path.'/'.$file)
                or die &quot;put failed &quot;, $ftp-&amp;gt;message;
            printgreen $file.&quot; envoyé\n&quot;;
        }
    }
    # On remonte d'un cran
    $ftp-&amp;gt;cdup()
        or die &quot;cdup failed &quot;, $ftp-&amp;gt;message;
    print $path.&quot; traité\n&quot;;
}

parcours $localdir;

$ftp-&amp;gt;quit;

utime(time, time, $fileref) or ( open(F, &quot;&amp;gt;$fileref&quot;) &amp;amp;&amp;amp; close F );&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;

[[Category:Scripts]]</text>
      <sha1>6pvk8yy1xezkc6ijz63w9pf1wq67p3r</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1969</id>
      <parentid>1900</parentid>
      <timestamp>2010-08-19T06:34:19Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Ajout coloration syntaxique</comment>
      <text xml:space="preserve" bytes="4973">&amp;nbsp;Voici un script FTP que j'ai écris lorsque j'ai commencé à faire un site web.
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;La particularité de ce client est qu'il effectue une sorte de synchronisation entre un dossier du disque dur et un dossier FTP. Cela permet de ne pas passer son temps à rechercher quels fichiers vous avez modifié pour les envoyer sur le serveur.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Afin de sélectionner le dossier local, le serveur ftp, votre login et votre mot de passe il faut modifier le script lui même.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;'''/!\ attention cela signifie que votre mot de passe est inscrit en clair dans le script /!\'''&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Ce script est sous licence CECILL, c'est donc un logiciel libre.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;

&lt;code perl&gt;#!/usr/bin/perl

# -*- coding: utf-8 -*-
# Envoi de données par ftp
# Version 0.5

#Copyright Michel Barret, 4 avril 2009
#michel.barret@gmail.com
#Ce logiciel est un programme informatique servant à envoyer une arborescence
#complète d'un répertoire sur FTP.
#Ce logiciel est régi par la licence CeCILL soumise au droit français et
#respectant les principes de diffusion des logiciels libres. Vous pouvez
#utiliser, modifier et/ou redistribuer ce programme sous les conditions
#de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA 
#sur le site &quot;http://www.cecill.info&quot;.
#En contrepartie de l'accessibilité au code source et des droits de copie,
#de modification et de redistribution accordés par cette licence, il n'est
#offert aux utilisateurs qu'une garantie limitée.  Pour les mêmes raisons,
#seule une responsabilité restreinte pèse sur l'auteur du programme,  le
#titulaire des droits patrimoniaux et les concédants successifs.

#A cet égard  l'attention de l'utilisateur est attirée sur les risques
#associés au chargement,  à l'utilisation,  à la modification et/ou au
#développement et à la reproduction du logiciel par l'utilisateur étant 
#donné sa spécificité de logiciel libre, qui peut le rendre complexe à 
#manipuler et qui le réserve donc à des développeurs et des professionnels
#avertis possédant  des  connaissances  informatiques approfondies.  Les
#utilisateurs sont donc invités à charger  et  tester  l'adéquation  du
#logiciel à leurs besoins dans des conditions permettant d'assurer la
#sécurité de leurs systèmes et ou de leurs données et, plus généralement, 
#à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. 

#Le fait que vous puissiez accéder à cet en-tête signifie que vous avez 
#pris connaissance de la licence CeCILL, et que vous en avez accepté les
#termes.

use strict;
use warnings;
use Time::Local;
use Net::FTP;
use Term::ANSIColor;

sub printblue {
    print color 'bold blue';
    print @_;
    print color 'reset';
}

sub printgreen {
    print color 'green';
    print @_;
    print color 'reset';
}

my $localdir = $ENV{HOME}.'/public_html/blog';
my $distdir = '/blog';
my $host = 'ftpperso.free.fr';
my $login = 'michel.barret5';
my $mdp = '*****';

my $fileref = $ENV{HOME}.'/.ftpperl';
my $dateref;

if (-f $fileref){
    $dateref = (stat ($fileref))[9];
}

my $ftp = Net::FTP-&amp;gt;new($host, Debug =&amp;gt; 0)
    or die &quot;Echec de la connexion à $host: $@&quot;;

$ftp-&amp;gt;login($login, $mdp)
    or die &quot;Echec du&quot;, $ftp-&amp;gt;message;

$ftp-&amp;gt;cwd($distdir)
    or die &quot;Echec du changement de répertoire &quot;, $ftp-&amp;gt;message;
$ftp-&amp;gt;binary();

sub parcours {
    my $path = shift(@_);
    opendir(DIR, $path) or die &quot;can't open $path: $!\n&quot;;
    printblue &quot; On entre dans le répertoire $path\n&quot;;
    my @files = readdir(DIR);

    closedir(DIR);

    foreach my $file (@files) {
        next if $file =~ /^\.\.?$/;

        if (-d $path.'/'.$file) {
            # Le fichier est un répertoire
            $ftp-&amp;gt;mkdir($file);
            # On ne vérifie pas l'erreur au
            # cas où le dossier existe déjà
            $ftp-&amp;gt;cwd($file)
                or die &quot;cwd failed &quot;, $ftp-&amp;gt;message;
            &amp;amp;parcours($path.'/'.$file);
        }
        elsif (-f $path.'/'.$file) {
            if (grep(/^$file$/, $ftp-&amp;gt;ls())){
                # Le fichier existe déjà sur le serveur
                my $localdate = (stat ($path.'/'.$file))[9];
                if(! -f $fileref){
                    $dateref = $ftp-&amp;gt;mdtm($file);
                }
                next if($dateref &amp;gt; $localdate);
                # Sinon on le supprime pour le remplacer
                $ftp-&amp;gt;delete($file);
            }
            $ftp-&amp;gt;put($path.'/'.$file)
                or die &quot;put failed &quot;, $ftp-&amp;gt;message;
            printgreen $file.&quot; envoyé\n&quot;;
        }
    }
    # On remonte d'un cran
    $ftp-&amp;gt;cdup()
        or die &quot;cdup failed &quot;, $ftp-&amp;gt;message;
    print $path.&quot; traité\n&quot;;
}

parcours $localdir;

$ftp-&amp;gt;quit;

utime(time, time, $fileref) or ( open(F, &quot;&amp;gt;$fileref&quot;) &amp;amp;&amp;amp; close F );&lt;/code&gt;

&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;

[[Category:Scripts]]</text>
      <sha1>6o5jugnd8juuodiq27m0cschwqgnrhp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2485</id>
      <parentid>1969</parentid>
      <timestamp>2010-12-12T17:12:40Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="4923">&amp;nbsp;Voici un script FTP que j'ai écris lorsque j'ai commencé à faire un site web.
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;La particularité de ce client est qu'il effectue une sorte de synchronisation entre un dossier du disque dur et un dossier FTP. Cela permet de ne pas passer son temps à rechercher quels fichiers vous avez modifié pour les envoyer sur le serveur.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Afin de sélectionner le dossier local, le serveur ftp, votre login et votre mot de passe il faut modifier le script lui même.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;'''/!\ attention cela signifie que votre mot de passe est inscrit en clair dans le script /!\'''&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Ce script est sous licence CECILL, c'est donc un logiciel libre.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;

&lt;code perl&gt;#!/usr/bin/perl
 
# -*- coding: utf-8 -*-
# Envoi de données par ftp
# Version 0.5
 
#Copyright Michel Barret, 4 avril 2009
#michel.barret@gmail.com
#Ce logiciel est un programme informatique servant à envoyer une arborescence
#complète d'un répertoire sur FTP.
#Ce logiciel est régi par la licence CeCILL soumise au droit français et
#respectant les principes de diffusion des logiciels libres. Vous pouvez
#utiliser, modifier et/ou redistribuer ce programme sous les conditions
#de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA 
#sur le site &quot;http://www.cecill.info&quot;.
#En contrepartie de l'accessibilité au code source et des droits de copie,
#de modification et de redistribution accordés par cette licence, il n'est
#offert aux utilisateurs qu'une garantie limitée.  Pour les mêmes raisons,
#seule une responsabilité restreinte pèse sur l'auteur du programme,  le
#titulaire des droits patrimoniaux et les concédants successifs.
 
#A cet égard  l'attention de l'utilisateur est attirée sur les risques
#associés au chargement,  à l'utilisation,  à la modification et/ou au
#développement et à la reproduction du logiciel par l'utilisateur étant 
#donné sa spécificité de logiciel libre, qui peut le rendre complexe à 
#manipuler et qui le réserve donc à des développeurs et des professionnels
#avertis possédant  des  connaissances  informatiques approfondies.  Les
#utilisateurs sont donc invités à charger  et  tester  l'adéquation  du
#logiciel à leurs besoins dans des conditions permettant d'assurer la
#sécurité de leurs systèmes et ou de leurs données et, plus généralement, 
#à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. 
 
#Le fait que vous puissiez accéder à cet en-tête signifie que vous avez 
#pris connaissance de la licence CeCILL, et que vous en avez accepté les
#termes.
 
use strict;
use warnings;
use Time::Local;
use Net::FTP;
use Term::ANSIColor;
 
sub printblue {
    print color 'bold blue';
    print @_;
    print color 'reset';
}
 
sub printgreen {
    print color 'green';
    print @_;
    print color 'reset';
}
 
my $localdir = $ENV{HOME}.'/public_html/blog';
my $distdir = '/blog';
my $host = 'ftpperso.free.fr';
my $login = 'michel.barret5';
my $mdp = '*****';
 
my $fileref = $ENV{HOME}.'/.ftpperl';
my $dateref;
 
if (-f $fileref){
    $dateref = (stat ($fileref))[9];
}
 
my $ftp = Net::FTP-&gt;new($host, Debug =&gt; 0)
    or die &quot;Echec de la connexion à $host: $@&quot;;
 
$ftp-&gt;login($login, $mdp)
    or die &quot;Echec du&quot;, $ftp-&gt;message;
 
$ftp-&gt;cwd($distdir)
    or die &quot;Echec du changement de répertoire &quot;, $ftp-&gt;message;
$ftp-&gt;binary();
 
sub parcours {
    my $path = shift(@_);
    opendir(DIR, $path) or die &quot;can't open $path: $!\n&quot;;
    printblue &quot; On entre dans le répertoire $path\n&quot;;
    my @files = readdir(DIR);
 
    closedir(DIR);
 
    foreach my $file (@files) {
        next if $file =~ /^\.\.?$/;
 
        if (-d $path.'/'.$file) {
            # Le fichier est un répertoire
            $ftp-&gt;mkdir($file);
            # On ne vérifie pas l'erreur au
            # cas où le dossier existe déjà
            $ftp-&gt;cwd($file)
                or die &quot;cwd failed &quot;, $ftp-&gt;message;
            &amp;parcours($path.'/'.$file);
        }
        elsif (-f $path.'/'.$file) {
            if (grep(/^$file$/, $ftp-&gt;ls())){
                # Le fichier existe déjà sur le serveur
                my $localdate = (stat ($path.'/'.$file))[9];
                if(! -f $fileref){
                    $dateref = $ftp-&gt;mdtm($file);
                }
                next if($dateref &gt; $localdate);
                # Sinon on le supprime pour le remplacer
                $ftp-&gt;delete($file);
            }
            $ftp-&gt;put($path.'/'.$file)
                or die &quot;put failed &quot;, $ftp-&gt;message;
            printgreen $file.&quot; envoyé\n&quot;;
        }
    }
    # On remonte d'un cran
    $ftp-&gt;cdup()
        or die &quot;cdup failed &quot;, $ftp-&gt;message;
    print $path.&quot; traité\n&quot;;
}
 
parcours $localdir;
 
$ftp-&gt;quit;
 
utime(time, time, $fileref) or ( open(F, &quot;&gt;$fileref&quot;) &amp;&amp; close F );

&lt;/code&gt;

&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;

[[Category:Scripts]]</text>
      <sha1>ly95iphtx7dtxntsxq1p7kwy00mx3fd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2486</id>
      <parentid>2485</parentid>
      <timestamp>2010-12-12T17:20:47Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <minor/>
      <comment>Correcton</comment>
      <text xml:space="preserve" bytes="4898">&amp;nbsp;Voici un script FTP que j'ai écris lorsque j'ai commencé à faire un site web.
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;La particularité de ce client est qu'il effectue une sorte de synchronisation entre un dossier du disque dur et un dossier FTP. Cela permet de ne pas passer son temps à rechercher quels fichiers vous avez modifié pour les envoyer sur le serveur.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Afin de sélectionner le dossier local, le serveur ftp, votre login et votre mot de passe il faut modifier le script lui même.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;'''/!\ attention cela signifie que votre mot de passe est inscrit en clair dans le script /!\'''&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Ce script est sous licence CECILL, c'est donc un logiciel libre.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;

&lt;code perl&gt;
#!/usr/bin/perl

# -*- coding: utf-8 -*-
# Envoi de données par ftp
# Version 0.5

#Copyright Michel Barret, 4 avril 2009
#michel.barret@gmail.com
#Ce logiciel est un programme informatique servant à envoyer une arborescence
#complète d'un répertoire sur FTP.
#Ce logiciel est régi par la licence CeCILL soumise au droit français et
#respectant les principes de diffusion des logiciels libres. Vous pouvez
#utiliser, modifier et/ou redistribuer ce programme sous les conditions
#de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA
#sur le site &quot;http://www.cecill.info&quot;.
#En contrepartie de l'accessibilité au code source et des droits de copie,
#de modification et de redistribution accordés par cette licence, il n'est
#offert aux utilisateurs qu'une garantie limitée.  Pour les mêmes raisons,
#seule une responsabilité restreinte pèse sur l'auteur du programme,  le
#titulaire des droits patrimoniaux et les concédants successifs.

#A cet égard  l'attention de l'utilisateur est attirée sur les risques
#associés au chargement,  à l'utilisation,  à la modification et/ou au
#développement et à la reproduction du logiciel par l'utilisateur étant
#donné sa spécificité de logiciel libre, qui peut le rendre complexe à
#manipuler et qui le réserve donc à des développeurs et des professionnels
#avertis possédant  des  connaissances  informatiques approfondies.  Les
#utilisateurs sont donc invités à charger  et  tester  l'adéquation  du
#logiciel à leurs besoins dans des conditions permettant d'assurer la
#sécurité de leurs systèmes et ou de leurs données et, plus généralement,
#à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.

#Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
#pris connaissance de la licence CeCILL, et que vous en avez accepté les
#termes.

use strict;
use warnings;
use Time::Local;
use Net::FTP;
use Term::ANSIColor;

sub printblue {
    print color 'bold blue';
    print @_;
    print color 'reset';
}

sub printgreen {
    print color 'green';
    print @_;
    print color 'reset';
}

my $localdir = $ENV{HOME}.'/public_html/blog';
my $distdir = '/blog';
my $host = 'ftpperso.free.fr';
my $login = 'michel.barret5';
my $mdp = '*****';

my $fileref = $ENV{HOME}.'/.ftpperl';
my $dateref;

if (-f $fileref){
    $dateref = (stat ($fileref))[9];
}

my $ftp = Net::FTP-&gt;new($host, Debug =&gt; 0)
    or die &quot;Echec de la connexion à $host: $@&quot;;

$ftp-&gt;login($login, $mdp)
    or die &quot;Echec du&quot;, $ftp-&gt;message;

$ftp-&gt;cwd($distdir)
    or die &quot;Echec du changement de répertoire &quot;, $ftp-&gt;message;
$ftp-&gt;binary();

sub parcours {
    my $path = shift(@_);
    opendir(DIR, $path) or die &quot;can't open $path: $!\n&quot;;
    printblue &quot; On entre dans le répertoire $path\n&quot;;
    my @files = readdir(DIR);

    closedir(DIR);

    foreach my $file (@files) {
        next if $file =~ /^\.\.?$/;

        if (-d $path.'/'.$file) {
            # Le fichier est un répertoire
            $ftp-&gt;mkdir($file);
            # On ne vérifie pas l'erreur au
            # cas où le dossier existe déjà
            $ftp-&gt;cwd($file)
                or die &quot;cwd failed &quot;, $ftp-&gt;message;
            &amp;parcours($path.'/'.$file);
        }
        elsif (-f $path.'/'.$file) {
            if (grep(/^$file$/, $ftp-&gt;ls())){
                # Le fichier existe déjà sur le serveur
                my $localdate = (stat ($path.'/'.$file))[9];
                if(! -f $fileref){
                    $dateref = $ftp-&gt;mdtm($file);
                }
                next if($dateref &gt; $localdate);
                # Sinon on le supprime pour le remplacer
                $ftp-&gt;delete($file);
            }
            $ftp-&gt;put($path.'/'.$file)
                or die &quot;put failed &quot;, $ftp-&gt;message;
            printgreen $file.&quot; envoyé\n&quot;;
        }
    }
    # On remonte d'un cran
    $ftp-&gt;cdup()
        or die &quot;cdup failed &quot;, $ftp-&gt;message;
    print $path.&quot; traité\n&quot;;
}

parcours $localdir;

$ftp-&gt;quit;

utime(time, time, $fileref) or ( open(F, &quot;&gt;$fileref&quot;) &amp;&amp; close F );

&lt;/code&gt;

&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;

[[Category:Scripts]]</text>
      <sha1>7511iy0svh4ujabatd1knd081au8rdi</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4115</id>
      <parentid>2486</parentid>
      <timestamp>2012-04-28T08:57:52Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="4917">&amp;nbsp;Voici un script [[Protocole::Ftp|FTP]] que j'ai écris lorsque j'ai commencé à faire un site web.
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;La particularité de ce client est qu'il effectue une sorte de synchronisation entre un dossier du disque dur et un dossier FTP. Cela permet de ne pas passer son temps à rechercher quels fichiers vous avez modifié pour les envoyer sur le serveur.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Afin de sélectionner le dossier local, le serveur ftp, votre login et votre mot de passe il faut modifier le script lui même.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;'''/!\ attention cela signifie que votre mot de passe est inscrit en clair dans le script /!\'''&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Ce script est sous licence CECILL, c'est donc un logiciel libre.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;

&lt;code perl&gt;
#!/usr/bin/perl

# -*- coding: utf-8 -*-
# Envoi de données par ftp
# Version 0.5

#Copyright Michel Barret, 4 avril 2009
#michel.barret@gmail.com
#Ce logiciel est un programme informatique servant à envoyer une arborescence
#complète d'un répertoire sur FTP.
#Ce logiciel est régi par la licence CeCILL soumise au droit français et
#respectant les principes de diffusion des logiciels libres. Vous pouvez
#utiliser, modifier et/ou redistribuer ce programme sous les conditions
#de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA
#sur le site &quot;http://www.cecill.info&quot;.
#En contrepartie de l'accessibilité au code source et des droits de copie,
#de modification et de redistribution accordés par cette licence, il n'est
#offert aux utilisateurs qu'une garantie limitée.  Pour les mêmes raisons,
#seule une responsabilité restreinte pèse sur l'auteur du programme,  le
#titulaire des droits patrimoniaux et les concédants successifs.

#A cet égard  l'attention de l'utilisateur est attirée sur les risques
#associés au chargement,  à l'utilisation,  à la modification et/ou au
#développement et à la reproduction du logiciel par l'utilisateur étant
#donné sa spécificité de logiciel libre, qui peut le rendre complexe à
#manipuler et qui le réserve donc à des développeurs et des professionnels
#avertis possédant  des  connaissances  informatiques approfondies.  Les
#utilisateurs sont donc invités à charger  et  tester  l'adéquation  du
#logiciel à leurs besoins dans des conditions permettant d'assurer la
#sécurité de leurs systèmes et ou de leurs données et, plus généralement,
#à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.

#Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
#pris connaissance de la licence CeCILL, et que vous en avez accepté les
#termes.

use strict;
use warnings;
use Time::Local;
use Net::FTP;
use Term::ANSIColor;

sub printblue {
    print color 'bold blue';
    print @_;
    print color 'reset';
}

sub printgreen {
    print color 'green';
    print @_;
    print color 'reset';
}

my $localdir = $ENV{HOME}.'/public_html/blog';
my $distdir = '/blog';
my $host = 'ftpperso.free.fr';
my $login = 'michel.barret5';
my $mdp = '*****';

my $fileref = $ENV{HOME}.'/.ftpperl';
my $dateref;

if (-f $fileref){
    $dateref = (stat ($fileref))[9];
}

my $ftp = Net::FTP-&gt;new($host, Debug =&gt; 0)
    or die &quot;Echec de la connexion à $host: $@&quot;;

$ftp-&gt;login($login, $mdp)
    or die &quot;Echec du&quot;, $ftp-&gt;message;

$ftp-&gt;cwd($distdir)
    or die &quot;Echec du changement de répertoire &quot;, $ftp-&gt;message;
$ftp-&gt;binary();

sub parcours {
    my $path = shift(@_);
    opendir(DIR, $path) or die &quot;can't open $path: $!\n&quot;;
    printblue &quot; On entre dans le répertoire $path\n&quot;;
    my @files = readdir(DIR);

    closedir(DIR);

    foreach my $file (@files) {
        next if $file =~ /^\.\.?$/;

        if (-d $path.'/'.$file) {
            # Le fichier est un répertoire
            $ftp-&gt;mkdir($file);
            # On ne vérifie pas l'erreur au
            # cas où le dossier existe déjà
            $ftp-&gt;cwd($file)
                or die &quot;cwd failed &quot;, $ftp-&gt;message;
            &amp;parcours($path.'/'.$file);
        }
        elsif (-f $path.'/'.$file) {
            if (grep(/^$file$/, $ftp-&gt;ls())){
                # Le fichier existe déjà sur le serveur
                my $localdate = (stat ($path.'/'.$file))[9];
                if(! -f $fileref){
                    $dateref = $ftp-&gt;mdtm($file);
                }
                next if($dateref &gt; $localdate);
                # Sinon on le supprime pour le remplacer
                $ftp-&gt;delete($file);
            }
            $ftp-&gt;put($path.'/'.$file)
                or die &quot;put failed &quot;, $ftp-&gt;message;
            printgreen $file.&quot; envoyé\n&quot;;
        }
    }
    # On remonte d'un cran
    $ftp-&gt;cdup()
        or die &quot;cdup failed &quot;, $ftp-&gt;message;
    print $path.&quot; traité\n&quot;;
}

parcours $localdir;

$ftp-&gt;quit;

utime(time, time, $fileref) or ( open(F, &quot;&gt;$fileref&quot;) &amp;&amp; close F );

&lt;/code&gt;

&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;

[[Category:Scripts]]</text>
      <sha1>70axk706bclpxjpk2d8ri3h5zubdkcm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4116</id>
      <parentid>4115</parentid>
      <timestamp>2012-04-28T09:04:58Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="4937">&amp;nbsp;Voici un script [[Protocole::Ftp|FTP]] que j'ai écris lorsque j'ai commencé à faire un site web.
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;La particularité de ce client est qu'il effectue une sorte de synchronisation entre un dossier du disque dur et un dossier FTP. Cela permet de ne pas passer son temps à rechercher quels fichiers vous avez modifié pour les envoyer sur le serveur.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Afin de sélectionner le dossier local, le serveur ftp, votre login et votre mot de passe il faut modifier le script lui même.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;'''/!\ attention cela signifie que votre mot de passe est inscrit en clair dans le script /!\'''&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Ce script est sous licence [[Licence::Cecill|CECILL]], c'est donc un logiciel libre.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;

&lt;code perl&gt;
#!/usr/bin/perl

# -*- coding: utf-8 -*-
# Envoi de données par ftp
# Version 0.5

#Copyright Michel Barret, 4 avril 2009
#michel.barret@gmail.com
#Ce logiciel est un programme informatique servant à envoyer une arborescence
#complète d'un répertoire sur FTP.
#Ce logiciel est régi par la licence CeCILL soumise au droit français et
#respectant les principes de diffusion des logiciels libres. Vous pouvez
#utiliser, modifier et/ou redistribuer ce programme sous les conditions
#de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA
#sur le site &quot;http://www.cecill.info&quot;.
#En contrepartie de l'accessibilité au code source et des droits de copie,
#de modification et de redistribution accordés par cette licence, il n'est
#offert aux utilisateurs qu'une garantie limitée.  Pour les mêmes raisons,
#seule une responsabilité restreinte pèse sur l'auteur du programme,  le
#titulaire des droits patrimoniaux et les concédants successifs.

#A cet égard  l'attention de l'utilisateur est attirée sur les risques
#associés au chargement,  à l'utilisation,  à la modification et/ou au
#développement et à la reproduction du logiciel par l'utilisateur étant
#donné sa spécificité de logiciel libre, qui peut le rendre complexe à
#manipuler et qui le réserve donc à des développeurs et des professionnels
#avertis possédant  des  connaissances  informatiques approfondies.  Les
#utilisateurs sont donc invités à charger  et  tester  l'adéquation  du
#logiciel à leurs besoins dans des conditions permettant d'assurer la
#sécurité de leurs systèmes et ou de leurs données et, plus généralement,
#à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.

#Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
#pris connaissance de la licence CeCILL, et que vous en avez accepté les
#termes.

use strict;
use warnings;
use Time::Local;
use Net::FTP;
use Term::ANSIColor;

sub printblue {
    print color 'bold blue';
    print @_;
    print color 'reset';
}

sub printgreen {
    print color 'green';
    print @_;
    print color 'reset';
}

my $localdir = $ENV{HOME}.'/public_html/blog';
my $distdir = '/blog';
my $host = 'ftpperso.free.fr';
my $login = 'michel.barret5';
my $mdp = '*****';

my $fileref = $ENV{HOME}.'/.ftpperl';
my $dateref;

if (-f $fileref){
    $dateref = (stat ($fileref))[9];
}

my $ftp = Net::FTP-&gt;new($host, Debug =&gt; 0)
    or die &quot;Echec de la connexion à $host: $@&quot;;

$ftp-&gt;login($login, $mdp)
    or die &quot;Echec du&quot;, $ftp-&gt;message;

$ftp-&gt;cwd($distdir)
    or die &quot;Echec du changement de répertoire &quot;, $ftp-&gt;message;
$ftp-&gt;binary();

sub parcours {
    my $path = shift(@_);
    opendir(DIR, $path) or die &quot;can't open $path: $!\n&quot;;
    printblue &quot; On entre dans le répertoire $path\n&quot;;
    my @files = readdir(DIR);

    closedir(DIR);

    foreach my $file (@files) {
        next if $file =~ /^\.\.?$/;

        if (-d $path.'/'.$file) {
            # Le fichier est un répertoire
            $ftp-&gt;mkdir($file);
            # On ne vérifie pas l'erreur au
            # cas où le dossier existe déjà
            $ftp-&gt;cwd($file)
                or die &quot;cwd failed &quot;, $ftp-&gt;message;
            &amp;parcours($path.'/'.$file);
        }
        elsif (-f $path.'/'.$file) {
            if (grep(/^$file$/, $ftp-&gt;ls())){
                # Le fichier existe déjà sur le serveur
                my $localdate = (stat ($path.'/'.$file))[9];
                if(! -f $fileref){
                    $dateref = $ftp-&gt;mdtm($file);
                }
                next if($dateref &gt; $localdate);
                # Sinon on le supprime pour le remplacer
                $ftp-&gt;delete($file);
            }
            $ftp-&gt;put($path.'/'.$file)
                or die &quot;put failed &quot;, $ftp-&gt;message;
            printgreen $file.&quot; envoyé\n&quot;;
        }
    }
    # On remonte d'un cran
    $ftp-&gt;cdup()
        or die &quot;cdup failed &quot;, $ftp-&gt;message;
    print $path.&quot; traité\n&quot;;
}

parcours $localdir;

$ftp-&gt;quit;

utime(time, time, $fileref) or ( open(F, &quot;&gt;$fileref&quot;) &amp;&amp; close F );

&lt;/code&gt;

&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;

[[Category:Scripts]]</text>
      <sha1>0kba1cer2c0tedpbmgusakhc6f066sx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5761</id>
      <parentid>4116</parentid>
      <timestamp>2014-08-20T05:12:22Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="4953">&amp;nbsp;Voici un script [[Protocole::Ftp|FTP]] que j'ai écris lorsque j'ai commencé à faire un site web.
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;La particularité de ce client est qu'il effectue une sorte de synchronisation entre un répertoire du disque dur et un répertoire FTP. Cela permet de ne pas passer son temps à rechercher quels fichiers vous avez modifié pour les envoyer sur le serveur.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Afin de sélectionner le répertoire local, le serveur ftp, votre login et votre mot de passe il faut modifier le script lui même.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;'''/!\ attention cela signifie que votre mot de passe est inscrit en clair dans le script /!\'''&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Ce script est sous licence [[Licence::Cecill|CECILL]], c'est donc un logiciel libre.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;

&lt;code perl&gt;
#!/usr/bin/perl

# -*- coding: utf-8 -*-
# Envoi de données par ftp
# Version 0.5

#Copyright Michel Barret, 4 avril 2009
#michel.barret@gmail.com
#Ce logiciel est un programme informatique servant à envoyer une arborescence
#complète d'un répertoire sur FTP.
#Ce logiciel est régi par la licence CeCILL soumise au droit français et
#respectant les principes de diffusion des logiciels libres. Vous pouvez
#utiliser, modifier et/ou redistribuer ce programme sous les conditions
#de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA
#sur le site &quot;http://www.cecill.info&quot;.
#En contrepartie de l'accessibilité au code source et des droits de copie,
#de modification et de redistribution accordés par cette licence, il n'est
#offert aux utilisateurs qu'une garantie limitée.  Pour les mêmes raisons,
#seule une responsabilité restreinte pèse sur l'auteur du programme,  le
#titulaire des droits patrimoniaux et les concédants successifs.

#A cet égard  l'attention de l'utilisateur est attirée sur les risques
#associés au chargement,  à l'utilisation,  à la modification et/ou au
#développement et à la reproduction du logiciel par l'utilisateur étant
#donné sa spécificité de logiciel libre, qui peut le rendre complexe à
#manipuler et qui le réserve donc à des développeurs et des professionnels
#avertis possédant  des  connaissances  informatiques approfondies.  Les
#utilisateurs sont donc invités à charger  et  tester  l'adéquation  du
#logiciel à leurs besoins dans des conditions permettant d'assurer la
#sécurité de leurs systèmes et ou de leurs données et, plus généralement,
#à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.

#Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
#pris connaissance de la licence CeCILL, et que vous en avez accepté les
#termes.

use strict;
use warnings;
use Time::Local;
use Net::FTP;
use Term::ANSIColor;

sub printblue {
    print color 'bold blue';
    print @_;
    print color 'reset';
}

sub printgreen {
    print color 'green';
    print @_;
    print color 'reset';
}

my $localdir = $ENV{HOME}.'/public_html/blog';
my $distdir = '/blog';
my $host = 'ftpperso.free.fr';
my $login = 'michel.barret5';
my $mdp = '*****';

my $fileref = $ENV{HOME}.'/.ftpperl';
my $dateref;

if (-f $fileref){
    $dateref = (stat ($fileref))[9];
}

my $ftp = Net::FTP-&gt;new($host, Debug =&gt; 0)
    or die &quot;Echec de la connexion à $host: $@&quot;;

$ftp-&gt;login($login, $mdp)
    or die &quot;Echec du&quot;, $ftp-&gt;message;

$ftp-&gt;cwd($distdir)
    or die &quot;Echec du changement de répertoire &quot;, $ftp-&gt;message;
$ftp-&gt;binary();

sub parcours {
    my $path = shift(@_);
    opendir(DIR, $path) or die &quot;can't open $path: $!\n&quot;;
    printblue &quot; On entre dans le répertoire $path\n&quot;;
    my @files = readdir(DIR);

    closedir(DIR);

    foreach my $file (@files) {
        next if $file =~ /^\.\.?$/;

        if (-d $path.'/'.$file) {
            # Le fichier est un répertoire
            $ftp-&gt;mkdir($file);
            # On ne vérifie pas l'erreur au
            # cas où le répertoire existe déjà
            $ftp-&gt;cwd($file)
                or die &quot;cwd failed &quot;, $ftp-&gt;message;
            &amp;parcours($path.'/'.$file);
        }
        elsif (-f $path.'/'.$file) {
            if (grep(/^$file$/, $ftp-&gt;ls())){
                # Le fichier existe déjà sur le serveur
                my $localdate = (stat ($path.'/'.$file))[9];
                if(! -f $fileref){
                    $dateref = $ftp-&gt;mdtm($file);
                }
                next if($dateref &gt; $localdate);
                # Sinon on le supprime pour le remplacer
                $ftp-&gt;delete($file);
            }
            $ftp-&gt;put($path.'/'.$file)
                or die &quot;put failed &quot;, $ftp-&gt;message;
            printgreen $file.&quot; envoyé\n&quot;;
        }
    }
    # On remonte d'un cran
    $ftp-&gt;cdup()
        or die &quot;cdup failed &quot;, $ftp-&gt;message;
    print $path.&quot; traité\n&quot;;
}

parcours $localdir;

$ftp-&gt;quit;

utime(time, time, $fileref) or ( open(F, &quot;&gt;$fileref&quot;) &amp;&amp; close F );

&lt;/code&gt;

&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;

[[Category:Scripts]]</text>
      <sha1>oreit6o3siupdbx8hut9mw3skfgzwnm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Clipperz</title>
    <ns>0</ns>
    <id>860</id>
    <revision>
      <id>3548</id>
      <timestamp>2011-11-21T06:26:03Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « Howto Clipperz: Installer et configurer Clipperz, édition communautaire, sur une Debian Squeeze  == Qu'est-ce que c'est ? ==  Clipperz est un gestionnaire de mots de passe e... »</comment>
      <text xml:space="preserve" bytes="7016">Howto Clipperz: Installer et configurer Clipperz, édition communautaire, sur une Debian Squeeze

== Qu'est-ce que c'est ? ==

Clipperz est un gestionnaire de mots de passe en ligne (accessible depuis un navigateur).
Il vous permet, avec un seul mot de passe, d'accéder à toutes les données personnelles que vous aurez mis dans votre &quot;portefeuille&quot;).

Tout le monde n'a pas envie de stocker des données confidentielles et sensible sur un serveur qui ne lui appartient pas, quelque soit les garanties proposées...
Une édition communautaire de Clipperz vient de voir le jour, elle vous permet de l'installer sur votre serveur.

Je vous propose ici d'installer Clipperz sur votre serveur Squeeze Debian.

== Prérequis ==

Pour installer Clipperz sur votre machine il faudra les programmes suivants:

* Apache2 + PHP5 fonctionnels
* Mysql
* Il faudra aussi installer git-core, python-dulwich et php-services-json:

 # apt-get install git-core python-dulwich php5-common php-services-json

== Préparation du serveur apache2 ==

C'est Apache2 qui sera chargé de mettre en ligne le programme.
Nous créerons pour cela un sous-domaine dans notre DNS qui pointera vers un &quot;Vhost&quot; de notre serveur.

Activez apache ssl si ce n'est pas déjà fait; Créez un virtual host avec support ssl; Ajoutez le mod rewrite pour forcez https.

 # nano /etc/apache2/sites-available/sous.domaine.net.vhost

 &lt;VirtualHost xxx.xxx.xxx.xxx:80&gt;
       DocumentRoot /var/www/sous.domaine.net/web
 [...]
  &lt;IfModule mod_rewrite.c&gt;
   &lt;IfModule mod_ssl.c&gt;
     &lt;Location /&gt;
       RewriteEngine on
       RewriteCond %{HTTPS} !^on$ [NC]
       RewriteRule . https://%{HTTP_HOST}%{REQUEST_URI}  [L]
     &lt;/Location&gt;
   &lt;/IfModule&gt;
 &lt;/IfModule&gt;
 
 &lt;/VirtualHost&gt;
 
 &lt;VirtualHost xxx.xxx.xxx.xxx:443&gt;
       DocumentRoot /var/www/sous.domaine.net/web
 [...]

== Création du répertoire et récupération des sources ==

 mkdir clipperz
 cd clipperz

 git clone git://github.com/clipperz/password-manager.git

== Compilation ==

Il faut faire une petite compilation, c'est pourquoi nous avons installé python-dulwich:

 cd password-manager
 ./scripts/build clean install debug --frontends beta --backends php

 cleaning up …
 MODULE: beta
 MODULE: php
 PHP builder - RUN
 frontend [beta]: compressing JS code
 frontend [beta]: compressing JS code
 frontend [beta]: compressing CSS
 frontend [beta]: compressing JS code
 [PHP builder - beta] index.html checksum: 43ec93f292a1275928a6d657da2dc2d8 (md5)
 [PHP builder - beta] index.html checksum: 38ee8108a1caed357ad76092a46d6b211dd79d11 (sha1)
 [PHP builder - beta] index.html checksum: cdbef767238dec531ddc1da9d803b98681c6fbb6d6adac99266385c13b8f3211 (sha256)

Conservez les checksum, cela vous permettra plus tard de vérifier que le fichier index.html n'est pas corrompu...

== Installation ==

=== Installation dans votre vhost ===

Nous copions le résultat de la compilation dans la racine de notre vhost:

 cp -R target/php/* /var/www/sous.domaine.net/web/
 # chown -R web35:client0 /var/www/sous.domaine.net/web/
 # chown -R root:root /var/www/sous.domaine.net/web/stats/

Nous créons une base Mysql:

 # mysql -p
 Enter password: 
 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 140
 Server version: 5.1.49-3 (Debian)
 
 Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
 This software comes with ABSOLUTELY NO WARRANTY. This is free software,
 and you are welcome to modify and redistribute it under the GPL v2 license
 
 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
 mysql&gt; create database clipperz;
 Query OK, 1 row affected (0.02 sec)
 
 mysql&gt; grant all privileges on clipperz.* to 'clipperz'@'localhost' identified by &quot;clipperz&quot;;
 Query OK, 0 rows affected (0.15 sec)
 
 mysql&gt; flush privileges;
 Query OK, 0 rows affected (0.07 sec)
 
 mysql&gt; exit
 Bye

Enfin nous éditons le fichier de configuration pour y ajouter les identifiants de la base Mysql:

 cd /var/www/sous.domaine.net/web/
 nano configuration.php

 [...]
 $configuration['db_encoding'] = 0;
 
 // edit the information below to match your database settings
 
 $configuration['db']	= 'clipperz'; 		//	database name
 $configuration['host']	= 'localhost';	//	database host
 $configuration['user']	= 'root';		//	database user
 $configuration['pass']	= 'pass';		//	database password
 $configuration['port'] 	= '3306';		//	database port
 [...]

Nous verrons plus tard pour le cryptage en 64bits

=== Finalisation de l'installation ===

Ouvrez un navigateur web avec l’url http://sous.domaine.net/setup/index.php pour faire l’installation de la base de données.


[[Fichier:Clipperz.jpeg|240px]]  [[Fichier:Clipperz2.jpeg|240px]]  [[Fichier:Clipperz3.jpeg|240px]]


Copiez le contenu du répertoire beta dans la racine du site:

 cp -R beta/* /var/www/sous.domaine.net/web/

Pensez à supprimer ou à déplacer le dossier setup pour éviter les mauvaises manips.

'''Si vous souhaitez activer le plugin &quot;base 64&quot;, n'effacez pas tout de suite le répertoire /setup.'''

Créez un fichier à la racine de votre site un fichier robots.txt qui interdise aux &quot;bots&quot; de venir mettre leur nez dans votre site...

 User-agent: *
 Disallow: /

Vous pouvez maintenant accéder à Clipperz (http://sous.domaine.net)

[[Fichier:Clipperz4.jpeg|480px]]

=== Activation du Plugin &quot;base 64&quot; ===

Retournez au setup: http://sous.domaine.net/setup/index.php

Dans l'onglet &quot;Manage plugins&quot; Cliquez sur INSTALL

[[Fichier:Clipperz5.jpeg|240px]]  [[Fichier:Clipperz6.jpeg|240px]]

Modifiez maintenant le fichier de configuration pour prendre en compte le plugin:

 # nano configuration.php

 [...]
 $configuration['db_encoding'] = 1;
 [...]

Puis recréez le base de donnée:

[[Fichier:Clipperz7.jpeg|240px]]  [[Fichier:Clipperz8.jpeg|240px]]


C'est terminé, rendez vous sur votre &quot;Clipperz&quot;: http://sous.domaine.net/ (vous devriez être rédirigé sur https://sous.domaine.net/)

[[Fichier:Clipperz10.jpeg|480px]]

Vous pouvez maintenant créer un compte et vous connecter.

[[Fichier:Clipperz11.jpeg|860px]]

'''Effacez le dossier /setup de la racine de votre site'''

== Protégez l'accès à votre vhost par un mot de passe ==

Afin d'éviter que n'importe qui ne vienne utiliser votre Clipperz, protégez son accès par un mot de passe:

 cd /var/www/sous.domaine.net/web
 htpasswd -c .htpass admin
 New password: 
 Re-type new password: 
 Adding password for user admin

 # nano .htaccess

 AuthType Basic
 AuthName &quot;autorisation requise&quot;
 AuthBasicProvider file
 AuthUserFile /var/www/sous.domaine.net/web/.htpass
 Require user admin

Avec un mot de passe et fail2ban activé, vous ne risquez plus grand chose...

== Sources ==

* {{en}} [http://www.clipperz.com/open_source/clipperz_community_edition Site officiel de Clipperz]
* {{fr}} [http://www.php-geek.fr/installer-clipperz-community-edition.html Tuto: installer Clipperz]

[[Utilisateur:Lol|Lol]] 21 novembre 2011 à 07:26 (CET)
[[Catégorie:Logiciels Divers]]</text>
      <sha1>q5mjvtfnrw2oiqppmx4xufvf5412omi</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3577</id>
      <parentid>3548</parentid>
      <timestamp>2011-11-21T11:08:02Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Création du répertoire et récupération des sources */</comment>
      <text xml:space="preserve" bytes="7023">Howto Clipperz: Installer et configurer Clipperz, édition communautaire, sur une Debian Squeeze

== Qu'est-ce que c'est ? ==

Clipperz est un gestionnaire de mots de passe en ligne (accessible depuis un navigateur).
Il vous permet, avec un seul mot de passe, d'accéder à toutes les données personnelles que vous aurez mis dans votre &quot;portefeuille&quot;).

Tout le monde n'a pas envie de stocker des données confidentielles et sensible sur un serveur qui ne lui appartient pas, quelque soit les garanties proposées...
Une édition communautaire de Clipperz vient de voir le jour, elle vous permet de l'installer sur votre serveur.

Je vous propose ici d'installer Clipperz sur votre serveur Squeeze Debian.

== Prérequis ==

Pour installer Clipperz sur votre machine il faudra les programmes suivants:

* Apache2 + PHP5 fonctionnels
* Mysql
* Il faudra aussi installer git-core, python-dulwich et php-services-json:

 # apt-get install git-core python-dulwich php5-common php-services-json

== Préparation du serveur apache2 ==

C'est Apache2 qui sera chargé de mettre en ligne le programme.
Nous créerons pour cela un sous-domaine dans notre DNS qui pointera vers un &quot;Vhost&quot; de notre serveur.

Activez apache ssl si ce n'est pas déjà fait; Créez un virtual host avec support ssl; Ajoutez le mod rewrite pour forcez https.

 # nano /etc/apache2/sites-available/sous.domaine.net.vhost

 &lt;VirtualHost xxx.xxx.xxx.xxx:80&gt;
       DocumentRoot /var/www/sous.domaine.net/web
 [...]
  &lt;IfModule mod_rewrite.c&gt;
   &lt;IfModule mod_ssl.c&gt;
     &lt;Location /&gt;
       RewriteEngine on
       RewriteCond %{HTTPS} !^on$ [NC]
       RewriteRule . https://%{HTTP_HOST}%{REQUEST_URI}  [L]
     &lt;/Location&gt;
   &lt;/IfModule&gt;
 &lt;/IfModule&gt;
 
 &lt;/VirtualHost&gt;
 
 &lt;VirtualHost xxx.xxx.xxx.xxx:443&gt;
       DocumentRoot /var/www/sous.domaine.net/web
 [...]

== Création du répertoire et récupération des sources ==

 cd ~/
 mkdir clipperz
 cd clipperz

 git clone git://github.com/clipperz/password-manager.git

== Compilation ==

Il faut faire une petite compilation, c'est pourquoi nous avons installé python-dulwich:

 cd password-manager
 ./scripts/build clean install debug --frontends beta --backends php

 cleaning up …
 MODULE: beta
 MODULE: php
 PHP builder - RUN
 frontend [beta]: compressing JS code
 frontend [beta]: compressing JS code
 frontend [beta]: compressing CSS
 frontend [beta]: compressing JS code
 [PHP builder - beta] index.html checksum: 43ec93f292a1275928a6d657da2dc2d8 (md5)
 [PHP builder - beta] index.html checksum: 38ee8108a1caed357ad76092a46d6b211dd79d11 (sha1)
 [PHP builder - beta] index.html checksum: cdbef767238dec531ddc1da9d803b98681c6fbb6d6adac99266385c13b8f3211 (sha256)

Conservez les checksum, cela vous permettra plus tard de vérifier que le fichier index.html n'est pas corrompu...

== Installation ==

=== Installation dans votre vhost ===

Nous copions le résultat de la compilation dans la racine de notre vhost:

 cp -R target/php/* /var/www/sous.domaine.net/web/
 # chown -R web35:client0 /var/www/sous.domaine.net/web/
 # chown -R root:root /var/www/sous.domaine.net/web/stats/

Nous créons une base Mysql:

 # mysql -p
 Enter password: 
 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 140
 Server version: 5.1.49-3 (Debian)
 
 Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
 This software comes with ABSOLUTELY NO WARRANTY. This is free software,
 and you are welcome to modify and redistribute it under the GPL v2 license
 
 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
 mysql&gt; create database clipperz;
 Query OK, 1 row affected (0.02 sec)
 
 mysql&gt; grant all privileges on clipperz.* to 'clipperz'@'localhost' identified by &quot;clipperz&quot;;
 Query OK, 0 rows affected (0.15 sec)
 
 mysql&gt; flush privileges;
 Query OK, 0 rows affected (0.07 sec)
 
 mysql&gt; exit
 Bye

Enfin nous éditons le fichier de configuration pour y ajouter les identifiants de la base Mysql:

 cd /var/www/sous.domaine.net/web/
 nano configuration.php

 [...]
 $configuration['db_encoding'] = 0;
 
 // edit the information below to match your database settings
 
 $configuration['db']	= 'clipperz'; 		//	database name
 $configuration['host']	= 'localhost';	//	database host
 $configuration['user']	= 'root';		//	database user
 $configuration['pass']	= 'pass';		//	database password
 $configuration['port'] 	= '3306';		//	database port
 [...]

Nous verrons plus tard pour le cryptage en 64bits

=== Finalisation de l'installation ===

Ouvrez un navigateur web avec l’url http://sous.domaine.net/setup/index.php pour faire l’installation de la base de données.


[[Fichier:Clipperz.jpeg|240px]]  [[Fichier:Clipperz2.jpeg|240px]]  [[Fichier:Clipperz3.jpeg|240px]]


Copiez le contenu du répertoire beta dans la racine du site:

 cp -R beta/* /var/www/sous.domaine.net/web/

Pensez à supprimer ou à déplacer le dossier setup pour éviter les mauvaises manips.

'''Si vous souhaitez activer le plugin &quot;base 64&quot;, n'effacez pas tout de suite le répertoire /setup.'''

Créez un fichier à la racine de votre site un fichier robots.txt qui interdise aux &quot;bots&quot; de venir mettre leur nez dans votre site...

 User-agent: *
 Disallow: /

Vous pouvez maintenant accéder à Clipperz (http://sous.domaine.net)

[[Fichier:Clipperz4.jpeg|480px]]

=== Activation du Plugin &quot;base 64&quot; ===

Retournez au setup: http://sous.domaine.net/setup/index.php

Dans l'onglet &quot;Manage plugins&quot; Cliquez sur INSTALL

[[Fichier:Clipperz5.jpeg|240px]]  [[Fichier:Clipperz6.jpeg|240px]]

Modifiez maintenant le fichier de configuration pour prendre en compte le plugin:

 # nano configuration.php

 [...]
 $configuration['db_encoding'] = 1;
 [...]

Puis recréez le base de donnée:

[[Fichier:Clipperz7.jpeg|240px]]  [[Fichier:Clipperz8.jpeg|240px]]


C'est terminé, rendez vous sur votre &quot;Clipperz&quot;: http://sous.domaine.net/ (vous devriez être rédirigé sur https://sous.domaine.net/)

[[Fichier:Clipperz10.jpeg|480px]]

Vous pouvez maintenant créer un compte et vous connecter.

[[Fichier:Clipperz11.jpeg|860px]]

'''Effacez le dossier /setup de la racine de votre site'''

== Protégez l'accès à votre vhost par un mot de passe ==

Afin d'éviter que n'importe qui ne vienne utiliser votre Clipperz, protégez son accès par un mot de passe:

 cd /var/www/sous.domaine.net/web
 htpasswd -c .htpass admin
 New password: 
 Re-type new password: 
 Adding password for user admin

 # nano .htaccess

 AuthType Basic
 AuthName &quot;autorisation requise&quot;
 AuthBasicProvider file
 AuthUserFile /var/www/sous.domaine.net/web/.htpass
 Require user admin

Avec un mot de passe et fail2ban activé, vous ne risquez plus grand chose...

== Sources ==

* {{en}} [http://www.clipperz.com/open_source/clipperz_community_edition Site officiel de Clipperz]
* {{fr}} [http://www.php-geek.fr/installer-clipperz-community-edition.html Tuto: installer Clipperz]

[[Utilisateur:Lol|Lol]] 21 novembre 2011 à 07:26 (CET)
[[Catégorie:Logiciels Divers]]</text>
      <sha1>lfketxqq8rgfrwhc0dbpeftzucph5ed</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5753</id>
      <parentid>3577</parentid>
      <timestamp>2014-08-20T05:01:23Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Finalisation de l'installation */ chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="7027">Howto Clipperz: Installer et configurer Clipperz, édition communautaire, sur une Debian Squeeze

== Qu'est-ce que c'est ? ==

Clipperz est un gestionnaire de mots de passe en ligne (accessible depuis un navigateur).
Il vous permet, avec un seul mot de passe, d'accéder à toutes les données personnelles que vous aurez mis dans votre &quot;portefeuille&quot;).

Tout le monde n'a pas envie de stocker des données confidentielles et sensible sur un serveur qui ne lui appartient pas, quelque soit les garanties proposées...
Une édition communautaire de Clipperz vient de voir le jour, elle vous permet de l'installer sur votre serveur.

Je vous propose ici d'installer Clipperz sur votre serveur Squeeze Debian.

== Prérequis ==

Pour installer Clipperz sur votre machine il faudra les programmes suivants:

* Apache2 + PHP5 fonctionnels
* Mysql
* Il faudra aussi installer git-core, python-dulwich et php-services-json:

 # apt-get install git-core python-dulwich php5-common php-services-json

== Préparation du serveur apache2 ==

C'est Apache2 qui sera chargé de mettre en ligne le programme.
Nous créerons pour cela un sous-domaine dans notre DNS qui pointera vers un &quot;Vhost&quot; de notre serveur.

Activez apache ssl si ce n'est pas déjà fait; Créez un virtual host avec support ssl; Ajoutez le mod rewrite pour forcez https.

 # nano /etc/apache2/sites-available/sous.domaine.net.vhost

 &lt;VirtualHost xxx.xxx.xxx.xxx:80&gt;
       DocumentRoot /var/www/sous.domaine.net/web
 [...]
  &lt;IfModule mod_rewrite.c&gt;
   &lt;IfModule mod_ssl.c&gt;
     &lt;Location /&gt;
       RewriteEngine on
       RewriteCond %{HTTPS} !^on$ [NC]
       RewriteRule . https://%{HTTP_HOST}%{REQUEST_URI}  [L]
     &lt;/Location&gt;
   &lt;/IfModule&gt;
 &lt;/IfModule&gt;
 
 &lt;/VirtualHost&gt;
 
 &lt;VirtualHost xxx.xxx.xxx.xxx:443&gt;
       DocumentRoot /var/www/sous.domaine.net/web
 [...]

== Création du répertoire et récupération des sources ==

 cd ~/
 mkdir clipperz
 cd clipperz

 git clone git://github.com/clipperz/password-manager.git

== Compilation ==

Il faut faire une petite compilation, c'est pourquoi nous avons installé python-dulwich:

 cd password-manager
 ./scripts/build clean install debug --frontends beta --backends php

 cleaning up …
 MODULE: beta
 MODULE: php
 PHP builder - RUN
 frontend [beta]: compressing JS code
 frontend [beta]: compressing JS code
 frontend [beta]: compressing CSS
 frontend [beta]: compressing JS code
 [PHP builder - beta] index.html checksum: 43ec93f292a1275928a6d657da2dc2d8 (md5)
 [PHP builder - beta] index.html checksum: 38ee8108a1caed357ad76092a46d6b211dd79d11 (sha1)
 [PHP builder - beta] index.html checksum: cdbef767238dec531ddc1da9d803b98681c6fbb6d6adac99266385c13b8f3211 (sha256)

Conservez les checksum, cela vous permettra plus tard de vérifier que le fichier index.html n'est pas corrompu...

== Installation ==

=== Installation dans votre vhost ===

Nous copions le résultat de la compilation dans la racine de notre vhost:

 cp -R target/php/* /var/www/sous.domaine.net/web/
 # chown -R web35:client0 /var/www/sous.domaine.net/web/
 # chown -R root:root /var/www/sous.domaine.net/web/stats/

Nous créons une base Mysql:

 # mysql -p
 Enter password: 
 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 140
 Server version: 5.1.49-3 (Debian)
 
 Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
 This software comes with ABSOLUTELY NO WARRANTY. This is free software,
 and you are welcome to modify and redistribute it under the GPL v2 license
 
 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
 mysql&gt; create database clipperz;
 Query OK, 1 row affected (0.02 sec)
 
 mysql&gt; grant all privileges on clipperz.* to 'clipperz'@'localhost' identified by &quot;clipperz&quot;;
 Query OK, 0 rows affected (0.15 sec)
 
 mysql&gt; flush privileges;
 Query OK, 0 rows affected (0.07 sec)
 
 mysql&gt; exit
 Bye

Enfin nous éditons le fichier de configuration pour y ajouter les identifiants de la base Mysql:

 cd /var/www/sous.domaine.net/web/
 nano configuration.php

 [...]
 $configuration['db_encoding'] = 0;
 
 // edit the information below to match your database settings
 
 $configuration['db']	= 'clipperz'; 		//	database name
 $configuration['host']	= 'localhost';	//	database host
 $configuration['user']	= 'root';		//	database user
 $configuration['pass']	= 'pass';		//	database password
 $configuration['port'] 	= '3306';		//	database port
 [...]

Nous verrons plus tard pour le cryptage en 64bits

=== Finalisation de l'installation ===

Ouvrez un navigateur web avec l’url http://sous.domaine.net/setup/index.php pour faire l’installation de la base de données.


[[Fichier:Clipperz.jpeg|240px]]  [[Fichier:Clipperz2.jpeg|240px]]  [[Fichier:Clipperz3.jpeg|240px]]


Copiez le contenu du répertoire beta dans la racine du site:

 cp -R beta/* /var/www/sous.domaine.net/web/

Pensez à supprimer ou à déplacer le répertoire setup pour éviter les mauvaises manips.

'''Si vous souhaitez activer le plugin &quot;base 64&quot;, n'effacez pas tout de suite le répertoire /setup.'''

Créez un fichier à la racine de votre site un fichier robots.txt qui interdise aux &quot;bots&quot; de venir mettre leur nez dans votre site...

 User-agent: *
 Disallow: /

Vous pouvez maintenant accéder à Clipperz (http://sous.domaine.net)

[[Fichier:Clipperz4.jpeg|480px]]

=== Activation du Plugin &quot;base 64&quot; ===

Retournez au setup: http://sous.domaine.net/setup/index.php

Dans l'onglet &quot;Manage plugins&quot; Cliquez sur INSTALL

[[Fichier:Clipperz5.jpeg|240px]]  [[Fichier:Clipperz6.jpeg|240px]]

Modifiez maintenant le fichier de configuration pour prendre en compte le plugin:

 # nano configuration.php

 [...]
 $configuration['db_encoding'] = 1;
 [...]

Puis recréez le base de donnée:

[[Fichier:Clipperz7.jpeg|240px]]  [[Fichier:Clipperz8.jpeg|240px]]


C'est terminé, rendez vous sur votre &quot;Clipperz&quot;: http://sous.domaine.net/ (vous devriez être rédirigé sur https://sous.domaine.net/)

[[Fichier:Clipperz10.jpeg|480px]]

Vous pouvez maintenant créer un compte et vous connecter.

[[Fichier:Clipperz11.jpeg|860px]]

'''Effacez le dossier /setup de la racine de votre site'''

== Protégez l'accès à votre vhost par un mot de passe ==

Afin d'éviter que n'importe qui ne vienne utiliser votre Clipperz, protégez son accès par un mot de passe:

 cd /var/www/sous.domaine.net/web
 htpasswd -c .htpass admin
 New password: 
 Re-type new password: 
 Adding password for user admin

 # nano .htaccess

 AuthType Basic
 AuthName &quot;autorisation requise&quot;
 AuthBasicProvider file
 AuthUserFile /var/www/sous.domaine.net/web/.htpass
 Require user admin

Avec un mot de passe et fail2ban activé, vous ne risquez plus grand chose...

== Sources ==

* {{en}} [http://www.clipperz.com/open_source/clipperz_community_edition Site officiel de Clipperz]
* {{fr}} [http://www.php-geek.fr/installer-clipperz-community-edition.html Tuto: installer Clipperz]

[[Utilisateur:Lol|Lol]] 21 novembre 2011 à 07:26 (CET)
[[Catégorie:Logiciels Divers]]</text>
      <sha1>n9k1vq8xetr7bf6bqn2j7wj9qhqu5kf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5754</id>
      <parentid>5753</parentid>
      <timestamp>2014-08-20T05:02:04Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Activation du Plugin &quot;base 64&quot; */ chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="7031">Howto Clipperz: Installer et configurer Clipperz, édition communautaire, sur une Debian Squeeze

== Qu'est-ce que c'est ? ==

Clipperz est un gestionnaire de mots de passe en ligne (accessible depuis un navigateur).
Il vous permet, avec un seul mot de passe, d'accéder à toutes les données personnelles que vous aurez mis dans votre &quot;portefeuille&quot;).

Tout le monde n'a pas envie de stocker des données confidentielles et sensible sur un serveur qui ne lui appartient pas, quelque soit les garanties proposées...
Une édition communautaire de Clipperz vient de voir le jour, elle vous permet de l'installer sur votre serveur.

Je vous propose ici d'installer Clipperz sur votre serveur Squeeze Debian.

== Prérequis ==

Pour installer Clipperz sur votre machine il faudra les programmes suivants:

* Apache2 + PHP5 fonctionnels
* Mysql
* Il faudra aussi installer git-core, python-dulwich et php-services-json:

 # apt-get install git-core python-dulwich php5-common php-services-json

== Préparation du serveur apache2 ==

C'est Apache2 qui sera chargé de mettre en ligne le programme.
Nous créerons pour cela un sous-domaine dans notre DNS qui pointera vers un &quot;Vhost&quot; de notre serveur.

Activez apache ssl si ce n'est pas déjà fait; Créez un virtual host avec support ssl; Ajoutez le mod rewrite pour forcez https.

 # nano /etc/apache2/sites-available/sous.domaine.net.vhost

 &lt;VirtualHost xxx.xxx.xxx.xxx:80&gt;
       DocumentRoot /var/www/sous.domaine.net/web
 [...]
  &lt;IfModule mod_rewrite.c&gt;
   &lt;IfModule mod_ssl.c&gt;
     &lt;Location /&gt;
       RewriteEngine on
       RewriteCond %{HTTPS} !^on$ [NC]
       RewriteRule . https://%{HTTP_HOST}%{REQUEST_URI}  [L]
     &lt;/Location&gt;
   &lt;/IfModule&gt;
 &lt;/IfModule&gt;
 
 &lt;/VirtualHost&gt;
 
 &lt;VirtualHost xxx.xxx.xxx.xxx:443&gt;
       DocumentRoot /var/www/sous.domaine.net/web
 [...]

== Création du répertoire et récupération des sources ==

 cd ~/
 mkdir clipperz
 cd clipperz

 git clone git://github.com/clipperz/password-manager.git

== Compilation ==

Il faut faire une petite compilation, c'est pourquoi nous avons installé python-dulwich:

 cd password-manager
 ./scripts/build clean install debug --frontends beta --backends php

 cleaning up …
 MODULE: beta
 MODULE: php
 PHP builder - RUN
 frontend [beta]: compressing JS code
 frontend [beta]: compressing JS code
 frontend [beta]: compressing CSS
 frontend [beta]: compressing JS code
 [PHP builder - beta] index.html checksum: 43ec93f292a1275928a6d657da2dc2d8 (md5)
 [PHP builder - beta] index.html checksum: 38ee8108a1caed357ad76092a46d6b211dd79d11 (sha1)
 [PHP builder - beta] index.html checksum: cdbef767238dec531ddc1da9d803b98681c6fbb6d6adac99266385c13b8f3211 (sha256)

Conservez les checksum, cela vous permettra plus tard de vérifier que le fichier index.html n'est pas corrompu...

== Installation ==

=== Installation dans votre vhost ===

Nous copions le résultat de la compilation dans la racine de notre vhost:

 cp -R target/php/* /var/www/sous.domaine.net/web/
 # chown -R web35:client0 /var/www/sous.domaine.net/web/
 # chown -R root:root /var/www/sous.domaine.net/web/stats/

Nous créons une base Mysql:

 # mysql -p
 Enter password: 
 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 140
 Server version: 5.1.49-3 (Debian)
 
 Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
 This software comes with ABSOLUTELY NO WARRANTY. This is free software,
 and you are welcome to modify and redistribute it under the GPL v2 license
 
 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
 mysql&gt; create database clipperz;
 Query OK, 1 row affected (0.02 sec)
 
 mysql&gt; grant all privileges on clipperz.* to 'clipperz'@'localhost' identified by &quot;clipperz&quot;;
 Query OK, 0 rows affected (0.15 sec)
 
 mysql&gt; flush privileges;
 Query OK, 0 rows affected (0.07 sec)
 
 mysql&gt; exit
 Bye

Enfin nous éditons le fichier de configuration pour y ajouter les identifiants de la base Mysql:

 cd /var/www/sous.domaine.net/web/
 nano configuration.php

 [...]
 $configuration['db_encoding'] = 0;
 
 // edit the information below to match your database settings
 
 $configuration['db']	= 'clipperz'; 		//	database name
 $configuration['host']	= 'localhost';	//	database host
 $configuration['user']	= 'root';		//	database user
 $configuration['pass']	= 'pass';		//	database password
 $configuration['port'] 	= '3306';		//	database port
 [...]

Nous verrons plus tard pour le cryptage en 64bits

=== Finalisation de l'installation ===

Ouvrez un navigateur web avec l’url http://sous.domaine.net/setup/index.php pour faire l’installation de la base de données.


[[Fichier:Clipperz.jpeg|240px]]  [[Fichier:Clipperz2.jpeg|240px]]  [[Fichier:Clipperz3.jpeg|240px]]


Copiez le contenu du répertoire beta dans la racine du site:

 cp -R beta/* /var/www/sous.domaine.net/web/

Pensez à supprimer ou à déplacer le répertoire setup pour éviter les mauvaises manips.

'''Si vous souhaitez activer le plugin &quot;base 64&quot;, n'effacez pas tout de suite le répertoire /setup.'''

Créez un fichier à la racine de votre site un fichier robots.txt qui interdise aux &quot;bots&quot; de venir mettre leur nez dans votre site...

 User-agent: *
 Disallow: /

Vous pouvez maintenant accéder à Clipperz (http://sous.domaine.net)

[[Fichier:Clipperz4.jpeg|480px]]

=== Activation du Plugin &quot;base 64&quot; ===

Retournez au setup: http://sous.domaine.net/setup/index.php

Dans l'onglet &quot;Manage plugins&quot; Cliquez sur INSTALL

[[Fichier:Clipperz5.jpeg|240px]]  [[Fichier:Clipperz6.jpeg|240px]]

Modifiez maintenant le fichier de configuration pour prendre en compte le plugin:

 # nano configuration.php

 [...]
 $configuration['db_encoding'] = 1;
 [...]

Puis recréez le base de donnée:

[[Fichier:Clipperz7.jpeg|240px]]  [[Fichier:Clipperz8.jpeg|240px]]


C'est terminé, rendez vous sur votre &quot;Clipperz&quot;: http://sous.domaine.net/ (vous devriez être rédirigé sur https://sous.domaine.net/)

[[Fichier:Clipperz10.jpeg|480px]]

Vous pouvez maintenant créer un compte et vous connecter.

[[Fichier:Clipperz11.jpeg|860px]]

'''Effacez le répertoire /setup de la racine de votre site'''

== Protégez l'accès à votre vhost par un mot de passe ==

Afin d'éviter que n'importe qui ne vienne utiliser votre Clipperz, protégez son accès par un mot de passe:

 cd /var/www/sous.domaine.net/web
 htpasswd -c .htpass admin
 New password: 
 Re-type new password: 
 Adding password for user admin

 # nano .htaccess

 AuthType Basic
 AuthName &quot;autorisation requise&quot;
 AuthBasicProvider file
 AuthUserFile /var/www/sous.domaine.net/web/.htpass
 Require user admin

Avec un mot de passe et fail2ban activé, vous ne risquez plus grand chose...

== Sources ==

* {{en}} [http://www.clipperz.com/open_source/clipperz_community_edition Site officiel de Clipperz]
* {{fr}} [http://www.php-geek.fr/installer-clipperz-community-edition.html Tuto: installer Clipperz]

[[Utilisateur:Lol|Lol]] 21 novembre 2011 à 07:26 (CET)
[[Catégorie:Logiciels Divers]]</text>
      <sha1>miyenjhyh9p3eagllk44hkzhcd6fwep</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Commande de base imprimante</title>
    <ns>0</ns>
    <id>937</id>
    <revision>
      <id>3883</id>
      <timestamp>2012-03-05T18:10:19Z</timestamp>
      <contributor>
        <username>Grhim</username>
        <id>116</id>
      </contributor>
      <comment>Page créée avec « les imprimantes sous linux !! c'est pas si compliquer !! :)  on les listes avec la commande :   &lt;pre&gt; $ lpstat -p&lt;/pre&gt;  on détermine l'imprimante par defaut avec :   &lt;pr... »</comment>
      <text xml:space="preserve" bytes="798">les imprimantes sous linux !! c'est pas si compliquer !! :)

on les listes avec la commande : 

&lt;pre&gt; $ lpstat -p&lt;/pre&gt;

on détermine l'imprimante par defaut avec : 

&lt;pre&gt;$ lpstat -d &lt;/pre&gt;

voir quels imprimantes connectées avec : 

&lt;pre&gt;$ lpstat -s&lt;/pre&gt;

obtenir en une seule commande les infos sur les imprimantes avec : 

&lt;pre&gt; $ lpstat -t&lt;/pre&gt;

on imprime sur l'imprimante par defaut : 

&lt;pre&gt; $ lpr&lt;/pre&gt;

imprimer sur une imprimante voulus : 

&lt;pre&gt;$ lpr -P nom de l'imprimante fichier a imprimer&lt;/pre&gt;

exemple : 

&lt;pre&gt;$ lpr -P canon hakim_bey.txt&lt;/pre&gt;

imprimer plus d'une copie : 

&lt;pre&gt;$ lpr -# nombre&lt;/pre&gt;

exemple : &lt;pre&gt;$ lpr -# 2 -P printer bhlablha.txt &lt;/pre&gt;

lister taches d'impression 

&lt;pre&gt;$ lpq&lt;/pre&gt;

annuler une ou toutes les impressions en cour

&lt;pre&gt;$ lprm -&lt;/pre&gt;</text>
      <sha1>8l0c8fx3sp0s3neeze26mtgfo7w4gkg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3884</id>
      <parentid>3883</parentid>
      <timestamp>2012-03-05T19:37:19Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="815">les imprimantes sous linux !! c'est pas si compliqué !! :)

on les listent avec la commande : 

&lt;pre&gt; $ lpstat -p&lt;/pre&gt;

on détermine l'imprimante par défaut avec : 

&lt;pre&gt;$ lpstat -d &lt;/pre&gt;

voir quelles imprimantes sont connectées avec : 

&lt;pre&gt;$ lpstat -s&lt;/pre&gt;

obtenir en une seule commande les infos sur les imprimantes avec : 

&lt;pre&gt; $ lpstat -t&lt;/pre&gt;

on imprime sur l'imprimante par défaut : 

&lt;pre&gt; $ lpr&lt;/pre&gt;

imprimer sur une imprimante voulue : 

&lt;pre&gt;$ lpr -P nom de l'imprimante fichier à imprimer&lt;/pre&gt;

exemple : 

&lt;pre&gt;$ lpr -P canon hakim_bey.txt&lt;/pre&gt;

imprimer plus d'une copie : 

&lt;pre&gt;$ lpr -# nombre&lt;/pre&gt;

exemple : &lt;pre&gt;$ lpr -# 2 -P printer bhlablha.txt &lt;/pre&gt;

lister les tâches d'impression 

&lt;pre&gt;$ lpq&lt;/pre&gt;

annuler une ou toutes les impressions en cours

&lt;pre&gt;$ lprm -&lt;/pre&gt;</text>
      <sha1>go6vj89el3hd12y0izz7s1zdjjpx0qn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3885</id>
      <parentid>3884</parentid>
      <timestamp>2012-03-05T19:38:02Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="813">les imprimantes sous linux !! c'est pas si compliqué !! :)

on les liste avec la commande : 

&lt;pre&gt; $ lpstat -p&lt;/pre&gt;

on détermine l'imprimante par défaut avec : 

&lt;pre&gt;$ lpstat -d &lt;/pre&gt;

voir quelles imprimantes sont connectées avec : 

&lt;pre&gt;$ lpstat -s&lt;/pre&gt;

obtenir en une seule commande les infos sur les imprimantes avec : 

&lt;pre&gt; $ lpstat -t&lt;/pre&gt;

on imprime sur l'imprimante par défaut : 

&lt;pre&gt; $ lpr&lt;/pre&gt;

imprimer sur une imprimante voulue : 

&lt;pre&gt;$ lpr -P nom de l'imprimante fichier à imprimer&lt;/pre&gt;

exemple : 

&lt;pre&gt;$ lpr -P canon hakim_bey.txt&lt;/pre&gt;

imprimer plus d'une copie : 

&lt;pre&gt;$ lpr -# nombre&lt;/pre&gt;

exemple : &lt;pre&gt;$ lpr -# 2 -P printer bhlablha.txt &lt;/pre&gt;

lister les tâches d'impression 

&lt;pre&gt;$ lpq&lt;/pre&gt;

annuler une ou toutes les impressions en cours

&lt;pre&gt;$ lprm -&lt;/pre&gt;</text>
      <sha1>4ld5ihm04le71ifcau7s2n0w8s20lot</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4055</id>
      <parentid>3885</parentid>
      <timestamp>2012-04-24T12:03:15Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="828">les [[Matériel::imprimante]]s sous linux !! c'est pas si compliqué !! :)

on les liste avec la commande : 

&lt;pre&gt; $ lpstat -p&lt;/pre&gt;

on détermine l'imprimante par défaut avec : 

&lt;pre&gt;$ lpstat -d &lt;/pre&gt;

voir quelles imprimantes sont connectées avec : 

&lt;pre&gt;$ lpstat -s&lt;/pre&gt;

obtenir en une seule commande les infos sur les imprimantes avec : 

&lt;pre&gt; $ lpstat -t&lt;/pre&gt;

on imprime sur l'imprimante par défaut : 

&lt;pre&gt; $ lpr&lt;/pre&gt;

imprimer sur une imprimante voulue : 

&lt;pre&gt;$ lpr -P nom de l'imprimante fichier à imprimer&lt;/pre&gt;

exemple : 

&lt;pre&gt;$ lpr -P canon hakim_bey.txt&lt;/pre&gt;

imprimer plus d'une copie : 

&lt;pre&gt;$ lpr -# nombre&lt;/pre&gt;

exemple : &lt;pre&gt;$ lpr -# 2 -P printer bhlablha.txt &lt;/pre&gt;

lister les tâches d'impression 

&lt;pre&gt;$ lpq&lt;/pre&gt;

annuler une ou toutes les impressions en cours

&lt;pre&gt;$ lprm -&lt;/pre&gt;</text>
      <sha1>c6nsg4w7jy8brnk5a01506ypg7k44rt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Commandes</title>
    <ns>0</ns>
    <id>1138</id>
    <revision>
      <id>4687</id>
      <timestamp>2012-10-30T11:12:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « &lt;u&gt;'''Commandes'''&lt;/u&gt;  {| width=&quot;100%&quot; | colspan=&quot;3&quot; |'''Commandes de base''' |- | width=&quot;33%&quot; |•&amp;nbsp;[[Trucs_et_astuces_pour_la_console|Trucs et astuces pour la conso... »</comment>
      <text xml:space="preserve" bytes="1595">&lt;u&gt;'''Commandes'''&lt;/u&gt;

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Commandes de base'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Trucs_et_astuces_pour_la_console|Trucs et astuces pour la console]]&lt;br&gt;  
| width=&quot;33%&quot; |•&amp;nbsp;[[Arret machine|Arret machine]]&lt;br&gt;  
| width=&quot;33%&quot; |•&amp;nbsp;[[Commandes informations|Commandes d'informations]]&lt;br&gt;  
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Gestion des fichiers|Gestion des fichiers]]&lt;br&gt;  
| width=&quot;33%&quot; |•&amp;nbsp;[[Gestion des repertoires|Gestion des repertoires]]&lt;br&gt;  
| width=&quot;33%&quot; |•&amp;nbsp;[[Commandes_utilisateurs_et_groupes|Commandes utilisateurs et groupes]]&lt;br&gt;  
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Root-su-sudo|Root-su-sudo : Seul maître à bord]]&lt;br&gt;  
| width=&quot;33%&quot; |•&amp;nbsp;[[Gestion_des_archives_sous_Debian|La gestion des archives sous Debian]]
| width=&quot;33%&quot; |•&amp;nbsp;[[La_commande_dd|La commande dd]] •&amp;nbsp;[[Apropos|Apropos]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Executer_commandes_en_cas_d%27échec_de_la_precedente|Executer une commande en cas d'échec de la precedente]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Commande_de_base_imprimante|Les Commandes de base: imprimante]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Eteindre_une_machine|La commande shutdown]] •&amp;nbsp;[[De_qwerty_@_azerty|De qwerty @ azerty]]
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Commandes plus complexes'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Utilisation de clefs et raccourcis ssh]] •&amp;nbsp;[[Utiliser diff et patch]] •&amp;nbsp;[[Fstab]]
| width=&quot;33%&quot; |
| width=&quot;33%&quot; |
|}
----

{{Modèle:Accueil}}

[[Catégorie:Commandes de base]]
[[Catégorie:Commandes plus complexes]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>qzy2p6zdf4iepy3d7x2htybq8ipxctq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4712</id>
      <parentid>4687</parentid>
      <timestamp>2012-11-01T07:26:09Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1690">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Commandes'''&lt;/u&gt;

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Commandes de base'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Trucs_et_astuces_pour_la_console|Trucs et astuces pour la console]]&lt;br&gt;  
| width=&quot;33%&quot; |•&amp;nbsp;[[Arret machine|Arret machine]]&lt;br&gt;  
| width=&quot;33%&quot; |•&amp;nbsp;[[Commandes informations|Commandes d'informations]]&lt;br&gt;  
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Gestion des fichiers|Gestion des fichiers]]&lt;br&gt;  
| width=&quot;33%&quot; |•&amp;nbsp;[[Gestion des repertoires|Gestion des repertoires]]&lt;br&gt;  
| width=&quot;33%&quot; |•&amp;nbsp;[[Commandes_utilisateurs_et_groupes|Commandes utilisateurs et groupes]]&lt;br&gt;  
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Root-su-sudo|Root-su-sudo : Seul maître à bord]]&lt;br&gt;  
| width=&quot;33%&quot; |•&amp;nbsp;[[Gestion_des_archives_sous_Debian|La gestion des archives sous Debian]]
| width=&quot;33%&quot; |•&amp;nbsp;[[La_commande_dd|La commande dd]] •&amp;nbsp;[[Apropos|Apropos]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Executer_commandes_en_cas_d%27échec_de_la_precedente|Executer une commande en cas d'échec de la precedente]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Commande_de_base_imprimante|Les Commandes de base: imprimante]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Eteindre_une_machine|La commande shutdown]] •&amp;nbsp;[[De_qwerty_@_azerty|De qwerty @ azerty]]
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Commandes plus complexes'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Utilisation de clefs et raccourcis ssh]] •&amp;nbsp;[[Utiliser diff et patch]] •&amp;nbsp;[[Fstab]]
| width=&quot;33%&quot; |
| width=&quot;33%&quot; |
|}
----

{{Modèle:Accueil}}

[[Catégorie:Commandes de base]]
[[Catégorie:Commandes plus complexes]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>0ybxzfmgrwa6haptydymhpne3p5uuay</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5406</id>
      <parentid>4712</parentid>
      <timestamp>2013-09-26T10:34:36Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="1845">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Commandes'''&lt;/u&gt;

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Commandes de base'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Trucs_et_astuces_pour_la_console|Trucs et astuces pour la console]]&lt;br&gt;  
| width=&quot;33%&quot; |•&amp;nbsp;[[Arret machine|Arret machine]]&lt;br&gt;  
| width=&quot;33%&quot; |•&amp;nbsp;[[Commandes informations|Commandes d'informations]]&lt;br&gt;  
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Gestion des fichiers|Gestion des fichiers]]&lt;br&gt;  
| width=&quot;33%&quot; |•&amp;nbsp;[[Gestion des repertoires|Gestion des repertoires]]&lt;br&gt;  
| width=&quot;33%&quot; |•&amp;nbsp;[[Commandes_utilisateurs_et_groupes|Commandes utilisateurs et groupes]]&lt;br&gt;  
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Root-su-sudo|Root-su-sudo : Seul maître à bord]]&lt;br&gt;  
| width=&quot;33%&quot; |•&amp;nbsp;[[Gestion_des_archives_sous_Debian|La gestion des archives sous Debian]]
| width=&quot;33%&quot; |•&amp;nbsp;[[La_commande_dd|La commande dd]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Executer_commandes_en_cas_d%27échec_de_la_precedente|Executer une commande en cas d'échec de la precedente]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Commande_de_base_imprimante|Les Commandes de base: imprimante]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Eteindre_une_machine|La commande shutdown]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Apropos|Apropos]]
| width=&quot;33%&quot; |•&amp;nbsp;[[De_qwerty_@_azerty|De qwerty @ azerty]]
| width=&quot;33%&quot; |
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Commandes plus complexes'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Utilisation de clefs et raccourcis ssh]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Utiliser diff et patch]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Fstab]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Monter un partage CIFS avec le fichier fstab]]
| width=&quot;33%&quot; |
| width=&quot;33%&quot; |
|}
----

{{Modèle:Accueil}}

[[Catégorie:Commandes de base]]
[[Catégorie:Commandes plus complexes]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>gb2eu6fvl5m4r66qi11we838ng631lu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5458</id>
      <parentid>5406</parentid>
      <timestamp>2013-11-26T19:44:28Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>commande de base: monter une clé uzbeu</comment>
      <text xml:space="preserve" bytes="1894">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Commandes'''&lt;/u&gt;

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Commandes de base'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Trucs_et_astuces_pour_la_console|Trucs et astuces pour la console]]&lt;br&gt;  
| width=&quot;33%&quot; |•&amp;nbsp;[[Arret machine|Arret machine]]&lt;br&gt;  
| width=&quot;33%&quot; |•&amp;nbsp;[[Commandes informations|Commandes d'informations]]&lt;br&gt;  
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Gestion des fichiers|Gestion des fichiers]]&lt;br&gt;  
| width=&quot;33%&quot; |•&amp;nbsp;[[Gestion des repertoires|Gestion des repertoires]]&lt;br&gt;  
| width=&quot;33%&quot; |•&amp;nbsp;[[Commandes_utilisateurs_et_groupes|Commandes utilisateurs et groupes]]&lt;br&gt;  
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Root-su-sudo|Root-su-sudo : Seul maître à bord]]&lt;br&gt;  
| width=&quot;33%&quot; |•&amp;nbsp;[[Gestion_des_archives_sous_Debian|La gestion des archives sous Debian]]
| width=&quot;33%&quot; |•&amp;nbsp;[[La_commande_dd|La commande dd]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Executer_commandes_en_cas_d%27échec_de_la_precedente|Executer une commande en cas d'échec de la precedente]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Commande_de_base_imprimante|Les Commandes de base: imprimante]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Eteindre_une_machine|La commande shutdown]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Apropos|Apropos]]
| width=&quot;33%&quot; |•&amp;nbsp;[[De_qwerty_@_azerty|De qwerty @ azerty]]
| width=&quot;33%&quot; |*&amp;nbsp;[[Monter_une_cle_usb|Monter une clé USB]]
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Commandes plus complexes'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Utilisation de clefs et raccourcis ssh]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Utiliser diff et patch]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Fstab]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Monter un partage CIFS avec le fichier fstab]]
| width=&quot;33%&quot; |
| width=&quot;33%&quot; |
|}
----

{{Modèle:Accueil}}

[[Catégorie:Commandes de base]]
[[Catégorie:Commandes plus complexes]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>57pgqpu1yg6qzkddcv01nx2o7zmsl24</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5473</id>
      <parentid>5458</parentid>
      <timestamp>2013-12-02T18:39:18Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="1896">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Commandes'''&lt;/u&gt;

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Commandes de base'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Trucs_et_astuces_pour_la_console|Trucs et astuces pour la console]]&lt;br&gt;  
| width=&quot;33%&quot; |•&amp;nbsp;[[Arret machine|Arret machine]]&lt;br&gt;  
| width=&quot;33%&quot; |•&amp;nbsp;[[Commandes informations|Commandes d'informations]]&lt;br&gt;  
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Gestion des fichiers|Gestion des fichiers]]&lt;br&gt;  
| width=&quot;33%&quot; |•&amp;nbsp;[[Gestion des repertoires|Gestion des repertoires]]&lt;br&gt;  
| width=&quot;33%&quot; |•&amp;nbsp;[[Commandes_utilisateurs_et_groupes|Commandes utilisateurs et groupes]]&lt;br&gt;  
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Root-su-sudo|Root-su-sudo : Seul maître à bord]]&lt;br&gt;  
| width=&quot;33%&quot; |•&amp;nbsp;[[Gestion_des_archives_sous_Debian|La gestion des archives sous Debian]]
| width=&quot;33%&quot; |•&amp;nbsp;[[La_commande_dd|La commande dd]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Executer_commandes_en_cas_d%27échec_de_la_precedente|Executer une commande en cas d'échec de la precedente]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Commande_de_base_imprimante|Les Commandes de base: imprimante]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Eteindre_une_machine|La commande shutdown]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Apropos|Apropos]]
| width=&quot;33%&quot; |•&amp;nbsp;[[De_qwerty_@_azerty|De qwerty @ azerty]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Monter_une_cle_usb|Monter une clé USB]]
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Commandes plus complexes'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Utilisation de clefs et raccourcis ssh]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Utiliser diff et patch]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Fstab]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Monter un partage CIFS avec le fichier fstab]]
| width=&quot;33%&quot; |
| width=&quot;33%&quot; |
|}
----

{{Modèle:Accueil}}

[[Catégorie:Commandes de base]]
[[Catégorie:Commandes plus complexes]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>bhgvbcz5h12ltvq4gtzvynp3m0z99ay</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5567</id>
      <parentid>5473</parentid>
      <timestamp>2014-03-11T10:18:52Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <minor/>
      <comment>Ajout de la page zsh</comment>
      <text xml:space="preserve" bytes="1935">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Commandes'''&lt;/u&gt;

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Commandes de base'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Trucs_et_astuces_pour_la_console|Trucs et astuces pour la console]]&lt;br&gt;  
| width=&quot;33%&quot; |•&amp;nbsp;[[Arret machine|Arret machine]]&lt;br&gt;  
| width=&quot;33%&quot; |•&amp;nbsp;[[Commandes informations|Commandes d'informations]]&lt;br&gt;  
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Gestion des fichiers|Gestion des fichiers]]&lt;br&gt;  
| width=&quot;33%&quot; |•&amp;nbsp;[[Gestion des repertoires|Gestion des repertoires]]&lt;br&gt;  
| width=&quot;33%&quot; |•&amp;nbsp;[[Commandes_utilisateurs_et_groupes|Commandes utilisateurs et groupes]]&lt;br&gt;  
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Root-su-sudo|Root-su-sudo : Seul maître à bord]]&lt;br&gt;  
| width=&quot;33%&quot; |•&amp;nbsp;[[Gestion_des_archives_sous_Debian|La gestion des archives sous Debian]]
| width=&quot;33%&quot; |•&amp;nbsp;[[La_commande_dd|La commande dd]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Executer_commandes_en_cas_d%27échec_de_la_precedente|Executer une commande en cas d'échec de la precedente]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Commande_de_base_imprimante|Les Commandes de base: imprimante]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Eteindre_une_machine|La commande shutdown]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Apropos|Apropos]]
| width=&quot;33%&quot; |•&amp;nbsp;[[De_qwerty_@_azerty|De qwerty @ azerty]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Monter_une_cle_usb|Monter une clé USB]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[zsh|zsh]]
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Commandes plus complexes'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Utilisation de clefs et raccourcis ssh]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Utiliser diff et patch]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Fstab]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Monter un partage CIFS avec le fichier fstab]]
| width=&quot;33%&quot; |
| width=&quot;33%&quot; |
|}
----

{{Modèle:Accueil}}

[[Catégorie:Commandes de base]]
[[Catégorie:Commandes plus complexes]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>9ffhrnkryczyeqd3jmmkgurrebsjhgw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Commandes informations</title>
    <ns>0</ns>
    <id>12</id>
    <revision>
      <id>22</id>
      <timestamp>2010-01-21T14:34:55Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <comment>Page créée avec « {{Stable}} [[Commandes_de_base|Retour Commandes de base]] = Obtenir des informations =  {| class=&quot;prettytable&quot; ! &lt;center&gt;'''LISTE_DES_COMMANDES'''&lt;/center&gt; ! &lt;center&gt;'''EFFET… »</comment>
      <text xml:space="preserve" bytes="4491">{{Stable}}
[[Commandes_de_base|Retour Commandes de base]]
= Obtenir des informations =

{| class=&quot;prettytable&quot;
! &lt;center&gt;'''LISTE_DES_COMMANDES'''&lt;/center&gt;
! &lt;center&gt;'''EFFET'''&lt;/center&gt;

|-
| $ arch
| Affiche le type de la machine. Equivaut à&amp;nbsp;''&lt;nowiki&gt;# uname -a&lt;/nowiki&gt;''.

|-
| $ cat /proc/cpuinfo
| Informations sur le processeur.

|-
| $ cat /proc/interrupts
| Informations sur l'utilisation des IRQs par les périphériques.

|-
| $ cat /proc/dma
| Informations sur l'utilisation des DMA par les périphériques.

|-
| $ cat /proc/ide/hda/settings
| Informations sur le disque dur IDE.

|-
| $ cat /proc/ioports
| Informations sur l'utilisation des ports I/O (Input/Output) par les périphériques.

|-
| $ date
| Affiche l'heure et la date.

|-
| $ df -h
| Informations sur l'emplacement de montage des systèmes de fichiers (partitions utilisables pour stocker des fichiers) accessibles sur votre système et les capacités restantes sur chacun d'eux.

|-
| $ dmesg
| Pour voir les dernières informations du Kernel. Alternative : dmesg | less  (permet de se positionner au début du tampon). Tapez&amp;nbsp;''Enter''&amp;nbsp;pour faire défiler les lignes et&amp;nbsp;''q''&amp;nbsp;pour sortir. 

|-
| $ fgconsole
| Dans quelle console suis-je ?

|-
| $ free
| Affiche les quantités de mémoire et swap : totales, libres et utilisées.

|-
| $ grep
| Pour rechercher et afficher une chaîne de caractères. Exemple :''&lt;nowiki&gt;# grep &quot;linux&quot; fichier.txt&lt;/nowiki&gt;''&amp;nbsp;affiche toutes les lignes contenant la chaîne de caractères&amp;nbsp;''linux''&amp;nbsp;dans le fichier''fichier.txt''.

|-
| $ grep -n
| Indique le numéro de la ligne où se trouve la chaîne de caractères.

|-
| # ifconfig
| Permet d'avoir la liste des adresses IP des interfaces réseaux (lo, ppp0, eth0, wlan...). Avec l'option -a, vous renseignera aussi sur les interfaces non actives.

|-
| $ info nom_commande
| Appelle les pages info concernant la commande désignée.

|-
| $ last
| Affiche les derniers reboot, boot et connexion d'utilisateurs.

|-
| $ lastlog
| Affiche précisément la date de la dernière connexion de tous les utilisateurs du système.

|-
| $ logname
| Sous quel login suis-je connecté ?

|-
| $ lsmod
| Liste tous les modules chargés dans le noyau.

|-
| $ lsof /dev/dsp
| Permet de connaître le processus qui occupe le périphérique&amp;nbsp;''/dev/dsp''.

|-
| $ lspci
| &quot;whatis lspci&quot; lspci (8) - list all PCI devices. Informations sur les bus PCI du système et les périphériques PCI qui y sont rattachés ( y compris AGP). Commande très utile pour obtenir des renseignements sur le hardware de votre système. L'affichage de ''Unknown device'' signifie que l'ID PCI du périphérique n'a pas de nom correspondant dans la base de données de&amp;nbsp;''lspci'' (Cela ne veut pas dire que le périphérique marche, ne marche pas ou ne marchera jamais sous Linux.)

|-
| $ lsusb
| Liste des périphériques USB branchés.

|-
| $ man commande
| Affiche la page de manuel de la commande indiquée, RTFM !

|-
| $ tail -f /var/log/messages
| Affiche les messages du noyau en direct.

|-
| $ type nom_commande
| Indique si&amp;nbsp;''nom_commande''&amp;nbsp;est une commande shell, une commande Unix, un alias ou une fonction définie par l'utilisateur.

|-
| $ type -p nom_commande
| Affiche l'emplacement de la commande spécifiée.

|-
| $ uname -a
| Affiche de nombreuses informations sur la machine et le système.

|-
| $ uname -m
| Affiche le type de la machine.

|-
| $ uname -n
| Affiche le nom de la machine.

|-
| $ uname -r
| Affiche le numéro de version du système.

|-
| $ uname -s
| Affiche le nom du système.

|-
| $ uptime
| Affiche le temps écoulé depuis le dernier démarrage.

|-
| $ vmstat
| Affiche des informations sur la machine virtuelle.

|-
| $ w
| Affiche la charge de votre PC. Permet de savoir quels utilisateurs sont logués sur le système et ce qu'ils font.

|-
| $ whatis nom_commande
| Affiche une explication en une ligne sur la commande spécifiée. Par exemple ''whatis blkid'' retournera : ''blkid (8) - command-line utility to locate/print block device attributes''

|-
| $ whereis nom
| Pour rechercher l'emplacement d'un exécutable, d'une source, d'une page de manuel concernant une commande.

|-
| $ which
| Chemin d'accès d'une commande donnée. Exemple :''&lt;nowiki&gt;# which ls&lt;/nowiki&gt;''&amp;nbsp;provoquera la réponse :&amp;nbsp;''/bin/ls''

|-
| $ whoami
| Qui suis-je ?

|}

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:19 (UTC)

[[Category:Commandes]]</text>
      <sha1>qs8trrlu8yiosxxq32vqiditvq0z4kw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>149</id>
      <parentid>22</parentid>
      <timestamp>2010-01-23T12:35:46Z</timestamp>
      <contributor>
        <username>Wetaskiwin</username>
        <id>10</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="4492">{{Stable}}
[[Commandes_de_base|Retour Commandes de base]]
= Obtenir des informations =

{| class=&quot;prettytable&quot;
! &lt;center&gt;'''LISTE_DES_COMMANDES'''&lt;/center&gt;
! &lt;center&gt;'''EFFET'''&lt;/center&gt;

|-
| $ arch
| Affiche le type de la machine. Equivaut à&amp;nbsp;''&lt;nowiki&gt;# uname -a&lt;/nowiki&gt;''.

|-
| $ cat /proc/cpuinfo
| Informations sur le processeur.

|-
| $ cat /proc/interrupts
| Informations sur l'utilisation des IRQs par les périphériques.

|-
| $ cat /proc/dma
| Informations sur l'utilisation des DMA par les périphériques.

|-
| $ cat /proc/ide/hda/settings
| Informations sur le disque dur IDE.

|-
| $ cat /proc/ioports
| Informations sur l'utilisation des ports I/O (Input/Output) par les périphériques.

|-
| $ date
| Affiche l'heure et la date.

|-
| $ df -h
| Informations sur l'emplacement de montage des systèmes de fichiers (partitions utilisables pour stocker des fichiers) accessibles sur votre système et les capacités restantes sur chacun d'eux.

|-
| $ dmesg
| Pour voir les dernières informations du Kernel. Alternative : dmesg | less  (permet de se positionner au début du tampon). Tapez&amp;nbsp;''Enter''&amp;nbsp;pour faire défiler les lignes et&amp;nbsp;''q''&amp;nbsp;pour sortir. 

|-
| $ fgconsole
| Dans quelle console suis-je ?

|-
| $ free
| Affiche les quantités de mémoire et swap : totales, libres et utilisées.

|-
| $ grep
| Pour rechercher et afficher une chaîne de caractères. Exemple :''&lt;nowiki&gt;# grep &quot;linux&quot; fichier.txt&lt;/nowiki&gt;''&amp;nbsp;affiche toutes les lignes contenant la chaîne de caractères&amp;nbsp;''linux''&amp;nbsp;dans le fichier ''fichier.txt''.

|-
| $ grep -n
| Indique le numéro de la ligne où se trouve la chaîne de caractères.

|-
| # ifconfig
| Permet d'avoir la liste des adresses IP des interfaces réseaux (lo, ppp0, eth0, wlan...). Avec l'option -a, vous renseignera aussi sur les interfaces non actives.

|-
| $ info nom_commande
| Appelle les pages info concernant la commande désignée.

|-
| $ last
| Affiche les derniers reboot, boot et connexion d'utilisateurs.

|-
| $ lastlog
| Affiche précisément la date de la dernière connexion de tous les utilisateurs du système.

|-
| $ logname
| Sous quel login suis-je connecté ?

|-
| $ lsmod
| Liste tous les modules chargés dans le noyau.

|-
| $ lsof /dev/dsp
| Permet de connaître le processus qui occupe le périphérique&amp;nbsp;''/dev/dsp''.

|-
| $ lspci
| &quot;whatis lspci&quot; lspci (8) - list all PCI devices. Informations sur les bus PCI du système et les périphériques PCI qui y sont rattachés ( y compris AGP). Commande très utile pour obtenir des renseignements sur le hardware de votre système. L'affichage de ''Unknown device'' signifie que l'ID PCI du périphérique n'a pas de nom correspondant dans la base de données de&amp;nbsp;''lspci'' (Cela ne veut pas dire que le périphérique marche, ne marche pas ou ne marchera jamais sous Linux.)

|-
| $ lsusb
| Liste des périphériques USB branchés.

|-
| $ man commande
| Affiche la page de manuel de la commande indiquée, RTFM !

|-
| $ tail -f /var/log/messages
| Affiche les messages du noyau en direct.

|-
| $ type nom_commande
| Indique si&amp;nbsp;''nom_commande''&amp;nbsp;est une commande shell, une commande Unix, un alias ou une fonction définie par l'utilisateur.

|-
| $ type -p nom_commande
| Affiche l'emplacement de la commande spécifiée.

|-
| $ uname -a
| Affiche de nombreuses informations sur la machine et le système.

|-
| $ uname -m
| Affiche le type de la machine.

|-
| $ uname -n
| Affiche le nom de la machine.

|-
| $ uname -r
| Affiche le numéro de version du système.

|-
| $ uname -s
| Affiche le nom du système.

|-
| $ uptime
| Affiche le temps écoulé depuis le dernier démarrage.

|-
| $ vmstat
| Affiche des informations sur la machine virtuelle.

|-
| $ w
| Affiche la charge de votre PC. Permet de savoir quels utilisateurs sont logués sur le système et ce qu'ils font.

|-
| $ whatis nom_commande
| Affiche une explication en une ligne sur la commande spécifiée. Par exemple ''whatis blkid'' retournera : ''blkid (8) - command-line utility to locate/print block device attributes''

|-
| $ whereis nom
| Pour rechercher l'emplacement d'un exécutable, d'une source, d'une page de manuel concernant une commande.

|-
| $ which
| Chemin d'accès d'une commande donnée. Exemple :''&lt;nowiki&gt;# which ls&lt;/nowiki&gt;''&amp;nbsp;provoquera la réponse :&amp;nbsp;''/bin/ls''

|-
| $ whoami
| Qui suis-je ?

|}

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:19 (UTC)

[[Category:Commandes]]</text>
      <sha1>c5lbmghx754sj6aey6e4ry0o4rzetno</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>296</id>
      <parentid>149</parentid>
      <timestamp>2010-01-26T09:12:18Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="4499">{{Stable}}
[[Commandes_de_base|Retour Commandes de base]]
= Obtenir des informations =

{| class=&quot;prettytable&quot;
! &lt;center&gt;'''LISTE_DES_COMMANDES'''&lt;/center&gt;
! &lt;center&gt;'''EFFET'''&lt;/center&gt;

|-
| $ arch
| Affiche l'architecture de la machine. Equivaut à&amp;nbsp;''&lt;nowiki&gt;# uname -a&lt;/nowiki&gt;''.

|-
| $ cat /proc/cpuinfo
| Informations sur le processeur.

|-
| $ cat /proc/interrupts
| Informations sur l'utilisation des IRQs par les périphériques.

|-
| $ cat /proc/dma
| Informations sur l'utilisation des DMA par les périphériques.

|-
| $ cat /proc/ide/hda/settings
| Informations sur le disque dur IDE.

|-
| $ cat /proc/ioports
| Informations sur l'utilisation des ports I/O (Input/Output) par les périphériques.

|-
| $ date
| Affiche l'heure et la date.

|-
| $ df -h
| Informations sur l'emplacement de montage des systèmes de fichiers (partitions utilisables pour stocker des fichiers) accessibles sur votre système et les capacités restantes sur chacun d'eux.

|-
| $ dmesg
| Pour voir les dernières informations du Kernel. Alternative : dmesg | less  (permet de se positionner au début du tampon). Tapez&amp;nbsp;''Enter''&amp;nbsp;pour faire défiler les lignes et&amp;nbsp;''q''&amp;nbsp;pour sortir. 

|-
| $ fgconsole
| Dans quelle console suis-je ?

|-
| $ free
| Affiche les quantités de mémoire et swap : totales, libres et utilisées.

|-
| $ grep
| Pour rechercher et afficher une chaîne de caractères. Exemple :''&lt;nowiki&gt;# grep &quot;linux&quot; fichier.txt&lt;/nowiki&gt;''&amp;nbsp;affiche toutes les lignes contenant la chaîne de caractères&amp;nbsp;''linux''&amp;nbsp;dans le fichier ''fichier.txt''.

|-
| $ grep -n
| Indique le numéro de la ligne où se trouve la chaîne de caractères.

|-
| # ifconfig
| Permet d'avoir la liste des adresses IP des interfaces réseaux (lo, ppp0, eth0, wlan...). Avec l'option -a, vous renseignera aussi sur les interfaces non actives.

|-
| $ info nom_commande
| Appelle les pages info concernant la commande désignée.

|-
| $ last
| Affiche les derniers reboot, boot et connexion d'utilisateurs.

|-
| $ lastlog
| Affiche précisément la date de la dernière connexion de tous les utilisateurs du système.

|-
| $ logname
| Sous quel login suis-je connecté ?

|-
| $ lsmod
| Liste tous les modules chargés dans le noyau.

|-
| $ lsof /dev/dsp
| Permet de connaître le processus qui occupe le périphérique&amp;nbsp;''/dev/dsp''.

|-
| $ lspci
| &quot;whatis lspci&quot; lspci (8) - list all PCI devices. Informations sur les bus PCI du système et les périphériques PCI qui y sont rattachés ( y compris AGP). Commande très utile pour obtenir des renseignements sur le hardware de votre système. L'affichage de ''Unknown device'' signifie que l'ID PCI du périphérique n'a pas de nom correspondant dans la base de données de&amp;nbsp;''lspci'' (Cela ne veut pas dire que le périphérique marche, ne marche pas ou ne marchera jamais sous Linux.)

|-
| $ lsusb
| Liste des périphériques USB branchés.

|-
| $ man commande
| Affiche la page de manuel de la commande indiquée, RTFM !

|-
| $ tail -f /var/log/messages
| Affiche les messages du noyau en direct.

|-
| $ type nom_commande
| Indique si&amp;nbsp;''nom_commande''&amp;nbsp;est une commande shell, une commande Unix, un alias ou une fonction définie par l'utilisateur.

|-
| $ type -p nom_commande
| Affiche l'emplacement de la commande spécifiée.

|-
| $ uname -a
| Affiche de nombreuses informations sur la machine et le système.

|-
| $ uname -m
| Affiche le type de la machine.

|-
| $ uname -n
| Affiche le nom de la machine.

|-
| $ uname -r
| Affiche le numéro de version du système.

|-
| $ uname -s
| Affiche le nom du système.

|-
| $ uptime
| Affiche le temps écoulé depuis le dernier démarrage.

|-
| $ vmstat
| Affiche des informations sur la machine virtuelle.

|-
| $ w
| Affiche la charge de votre PC. Permet de savoir quels utilisateurs sont logués sur le système et ce qu'ils font.

|-
| $ whatis nom_commande
| Affiche une explication en une ligne sur la commande spécifiée. Par exemple ''whatis blkid'' retournera : ''blkid (8) - command-line utility to locate/print block device attributes''

|-
| $ whereis nom
| Pour rechercher l'emplacement d'un exécutable, d'une source, d'une page de manuel concernant une commande.

|-
| $ which
| Chemin d'accès d'une commande donnée. Exemple :''&lt;nowiki&gt;# which ls&lt;/nowiki&gt;''&amp;nbsp;provoquera la réponse :&amp;nbsp;''/bin/ls''

|-
| $ whoami
| Qui suis-je ?

|}

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:19 (UTC)

[[Category:Commandes]]</text>
      <sha1>fspg2jkvt3gsifqi5eri0i38p686l3v</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>298</id>
      <parentid>296</parentid>
      <timestamp>2010-01-26T09:15:35Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="4510">{{Stable}}
[[Commandes_de_base|Retour Commandes de base]]
= Obtenir des informations =

{| class=&quot;prettytable&quot;
! &lt;center&gt;'''LISTE_DES_COMMANDES'''&lt;/center&gt;
! &lt;center&gt;'''EFFET'''&lt;/center&gt;

|-
| $ arch
| Affiche l'architecture de la machine. Equivaut à&amp;nbsp;''&lt;nowiki&gt;# uname -a&lt;/nowiki&gt;''.

|-
| $ cat /proc/cpuinfo
| Informations sur le processeur.

|-
| $ cat /proc/interrupts
| Informations sur l'utilisation des IRQs par les périphériques.

|-
| $ cat /proc/dma
| Informations sur l'utilisation des DMA par les périphériques.

|-
| $ cat /proc/ide/hda/settings
| Informations sur le disque dur IDE.

|-
| $ cat /proc/ioports
| Informations sur l'utilisation des ports I/O (Input/Output) par les périphériques.

|-
| $ date
| Affiche l'heure et la date.

|-
| $ df -h
| Informations sur l'emplacement de montage des systèmes de fichiers (partitions utilisables pour stocker des fichiers) accessibles sur votre système et les capacités restantes sur chacun d'eux.

|-
| $ dmesg
| Pour voir les dernières informations du Kernel. Alternative : dmesg | less  (permet de se positionner au début du tampon). Tapez&amp;nbsp;''Enter''&amp;nbsp;pour faire défiler les lignes et&amp;nbsp;''q''&amp;nbsp;pour sortir. 

|-
| $ fgconsole
| Dans quelle console suis-je ?

|-
| $ free
| Affiche les quantités de mémoire et swap : totales, libres et utilisées.

|-
| $ grep
| Pour rechercher et afficher une chaîne de caractères. Exemple :''&lt;nowiki&gt;# grep &quot;linux&quot; fichier.txt&lt;/nowiki&gt;''&amp;nbsp;affiche toutes les lignes contenant la chaîne de caractères&amp;nbsp;''linux''&amp;nbsp;dans le fichier ''fichier.txt''.

|-
| $ grep -n
| Indique le numéro de la ligne où se trouve la chaîne de caractères.

|-
| # ifconfig
| Permet d'avoir la liste des adresses IP des interfaces réseaux (lo, ppp0, eth0, wlan...). Avec l'option -a, vous renseignera aussi sur les interfaces non actives.

|-
| $ info nom_commande
| Appelle les pages info concernant la commande désignée.

|-
| $ last
| Affiche les derniers reboot, boot et connexion d'utilisateurs.

|-
| $ lastlog
| Affiche précisément la date de la dernière connexion de tous les utilisateurs du système.

|-
| $ logname
| Sous quel login suis-je connecté ?

|-
| $ lsmod
| Liste tous les modules chargés dans le noyau.

|-
| $ lsof /dev/dsp
| Permet de connaître le processus qui occupe le périphérique&amp;nbsp;''/dev/dsp''.

|-
| $ lspci
| &quot;whatis lspci&quot; lspci (8) - list all PCI devices. Informations sur les bus PCI du système et les périphériques PCI qui y sont rattachés ( y compris AGP). Commande très utile pour obtenir des renseignements sur le hardware de votre système. L'affichage de ''Unknown device'' signifie que l'ID PCI du périphérique n'a pas de nom correspondant dans la base de données de&amp;nbsp;''lspci'' (Cela ne veut pas dire que le périphérique marche, ne marche pas ou ne marchera jamais sous Linux.)

|-
| $ lsusb
| Liste des périphériques USB branchés.

|-
| $ man commande
| Affiche la page de manuel de la commande indiquée, RTFM !

|-
| $ tail -f /var/log/messages
| Affiche les messages du noyau en direct.

|-
| $ type nom_commande
| Indique si&amp;nbsp;''nom_commande''&amp;nbsp;est une commande shell, une commande Unix, un alias ou une fonction définie par l'utilisateur.

|-
| $ type -p nom_commande
| Affiche l'emplacement de la commande spécifiée.

|-
| $ uname -a
| Affiche de nombreuses informations sur le système installé sur la machine.

|-
| $ uname -m
| Affiche le type de la machine.

|-
| $ uname -n
| Affiche le nom de la machine.

|-
| $ uname -r
| Affiche le numéro de version du système.

|-
| $ uname -s
| Affiche le nom du système.

|-
| $ uptime
| Affiche le temps écoulé depuis le dernier démarrage.

|-
| $ vmstat
| Affiche des informations sur la machine virtuelle.

|-
| $ w
| Affiche la charge de votre PC. Permet de savoir quels utilisateurs sont logués sur le système et ce qu'ils font.

|-
| $ whatis nom_commande
| Affiche une explication en une ligne sur la commande spécifiée. Par exemple ''whatis blkid'' retournera : ''blkid (8) - command-line utility to locate/print block device attributes''

|-
| $ whereis nom
| Pour rechercher l'emplacement d'un exécutable, d'une source, d'une page de manuel concernant une commande.

|-
| $ which
| Chemin d'accès d'une commande donnée. Exemple :''&lt;nowiki&gt;# which ls&lt;/nowiki&gt;''&amp;nbsp;provoquera la réponse :&amp;nbsp;''/bin/ls''

|-
| $ whoami
| Qui suis-je ?

|}

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:19 (UTC)

[[Category:Commandes]]</text>
      <sha1>a4nnnm3iuuj6zrwnfl4y8ij4uvxs8r8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>299</id>
      <parentid>298</parentid>
      <timestamp>2010-01-26T09:17:55Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="4550">{{Stable}}
[[Commandes_de_base|Retour Commandes de base]]
= Obtenir des informations =

{| class=&quot;prettytable&quot;
! &lt;center&gt;'''LISTE_DES_COMMANDES'''&lt;/center&gt;
! &lt;center&gt;'''EFFET'''&lt;/center&gt;

|-
| $ arch
| Affiche l'architecture de la machine. Equivaut à&amp;nbsp;''&lt;nowiki&gt;# uname -a&lt;/nowiki&gt;''.

|-
| $ cat /proc/cpuinfo
| Informations sur le processeur.

|-
| $ cat /proc/interrupts
| Informations sur l'utilisation des IRQs par les périphériques.

|-
| $ cat /proc/dma
| Informations sur l'utilisation des DMA par les périphériques.

|-
| $ cat /proc/ide/hda/settings
| Informations sur le disque dur IDE.

|-
| $ cat /proc/ioports
| Informations sur l'utilisation des ports I/O (Input/Output) par les périphériques.

|-
| $ date
| Affiche l'heure et la date.

|-
| $ df -h
| Informations sur l'emplacement de montage des systèmes de fichiers (partitions utilisables pour stocker des fichiers) accessibles sur votre système et les capacités restantes sur chacun d'eux.

|-
| $ dmesg
| Pour voir les dernières informations du Kernel. Alternative : dmesg | less  (permet de se positionner au début du tampon). Tapez&amp;nbsp;''Enter''&amp;nbsp;pour faire défiler les lignes et&amp;nbsp;''q''&amp;nbsp;pour sortir. 

|-
| $ fgconsole
| Dans quelle console suis-je ?

|-
| $ free
| Affiche les quantités de mémoire et swap : totales, libres et utilisées.

|-
| $ grep
| Pour rechercher et afficher une chaîne de caractères. Exemple :''&lt;nowiki&gt;# grep &quot;linux&quot; fichier.txt&lt;/nowiki&gt;''&amp;nbsp;affiche toutes les lignes contenant la chaîne de caractères&amp;nbsp;''linux''&amp;nbsp;dans le fichier ''fichier.txt''.

|-
| $ grep -n
| Indique le numéro de la ligne où se trouve la chaîne de caractères.

|-
| # ifconfig
| Permet d'avoir la liste des adresses IP des interfaces réseaux (lo, ppp0, eth0, wlan...). Avec l'option -a, vous renseignera aussi sur les interfaces non actives.

|-
| $ info nom_commande
| Appelle les pages info concernant la commande désignée.

|-
| $ last
| Affiche les derniers reboot, boot et connexion d'utilisateurs.

|-
| $ lastlog
| Affiche précisément la date de la dernière connexion de tous les utilisateurs du système.

|-
| $ logname
| Sous quel login suis-je connecté ?

|-
| $ lsmod
| Liste tous les modules chargés dans le noyau.

|-
| $ lsof /dev/dsp
| Permet de connaître le processus qui occupe le périphérique&amp;nbsp;''/dev/dsp''.

|-
| $ lspci
| &quot;whatis lspci&quot; lspci (8) - list all PCI devices. Informations sur les bus PCI du système et les périphériques PCI qui y sont rattachés ( y compris AGP). Commande très utile pour obtenir des renseignements sur le hardware de votre système. L'affichage de ''Unknown device'' signifie que l'ID PCI du périphérique n'a pas de nom correspondant dans la base de données de&amp;nbsp;''lspci'' (Cela ne veut pas dire que le périphérique marche, ne marche pas ou ne marchera jamais sous Linux.)

|-
| $ lsusb
| Liste des périphériques USB branchés.

|-
| $ man commande
| Affiche la page de manuel de la commande indiquée, RTFM !

|-
| $ tail -f /var/log/messages
| Affiche les messages du noyau en direct.

|-
| $ type nom_commande
| Indique si&amp;nbsp;''nom_commande''&amp;nbsp;est une commande shell, une commande Unix, un alias ou une fonction définie par l'utilisateur.

|-
| $ type -p nom_commande
| Affiche l'emplacement de la commande spécifiée.

|-
| $ uname -a
| Affiche de nombreuses informations sur le système installé sur la machine.

|-
| $ uname -m
| Affiche le type du système installé sur la machine.

|-
| $ uname -n
| Affiche le nom de la machine dans le système.

|-
| $ uname -r
| Affiche le numéro de version du système.

|-
| $ uname -s
| Affiche le nom du système.

|-
| $ uptime
| Affiche le temps écoulé depuis le dernier démarrage.

|-
| $ vmstat
| Affiche des informations sur la machine virtuelle.

|-
| $ w
| Affiche la charge de votre PC. Permet de savoir quels utilisateurs sont logués sur le système et ce qu'ils font.

|-
| $ whatis nom_commande
| Affiche une explication en une ligne sur la commande spécifiée. Par exemple ''whatis blkid'' retournera : ''blkid (8) - command-line utility to locate/print block device attributes''

|-
| $ whereis nom
| Pour rechercher l'emplacement d'un exécutable, d'une source, d'une page de manuel concernant une commande.

|-
| $ which
| Chemin d'accès d'une commande donnée. Exemple :''&lt;nowiki&gt;# which ls&lt;/nowiki&gt;''&amp;nbsp;provoquera la réponse :&amp;nbsp;''/bin/ls''

|-
| $ whoami
| Qui suis-je ?

|}

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:19 (UTC)

[[Category:Commandes]]</text>
      <sha1>ngueym9gmul201966kfxul8ekll53oh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>304</id>
      <parentid>299</parentid>
      <timestamp>2010-01-26T11:42:39Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <text xml:space="preserve" bytes="4556">{{Stable}}
[[Commandes_de_base|Retour Commandes de base]]
= Obtenir des informations =

{| class=&quot;prettytable&quot;
! &lt;center&gt;'''LISTE_DES_COMMANDES'''&lt;/center&gt;
! &lt;center&gt;'''EFFET'''&lt;/center&gt;

|-
| $ arch
| Affiche l'architecture de la machine. Equivaut à&amp;nbsp;''&lt;nowiki&gt;# uname -a&lt;/nowiki&gt;''.

|-
| $ cat /proc/cpuinfo
| Informations sur le processeur.

|-
| $ cat /proc/interrupts
| Informations sur l'utilisation des IRQs par les périphériques.

|-
| $ cat /proc/dma
| Informations sur l'utilisation des DMA par les périphériques.

|-
| $ cat /proc/ide/hda/settings
| Informations sur le disque dur IDE.

|-
| $ cat /proc/ioports
| Informations sur l'utilisation des ports I/O (Input/Output) par les périphériques.

|-
| $ date
| Affiche l'heure et la date.

|-
| $ df -h
| Informations sur l'emplacement de montage des systèmes de fichiers (partitions utilisables pour stocker des fichiers) accessibles sur votre système et les capacités restantes sur chacun d'eux.

|-
| $ dmesg
| Pour voir les dernières informations du Kernel. Alternative : dmesg | less  (permet de se positionner au début du tampon). Tapez&amp;nbsp;''Enter''&amp;nbsp;pour faire défiler les lignes et&amp;nbsp;''q''&amp;nbsp;pour sortir. 

|-
| $ fgconsole
| Dans quelle console suis-je ?

|-
| $ free
| Affiche les quantités de mémoire et swap : totales, libres et utilisées.

|-
| $ grep
| Pour rechercher et afficher une chaîne de caractères. Exemple :''&lt;nowiki&gt;# grep &quot;linux&quot; fichier.txt&lt;/nowiki&gt;''&amp;nbsp;affiche toutes les lignes contenant la chaîne de caractères&amp;nbsp;''linux''&amp;nbsp;dans le fichier ''fichier.txt''.

|-
| $ grep -n
| Indique le numéro de la ligne où se trouve la chaîne de caractères.

|-
| $ /sbin/ifconfig
| Permet d'avoir la liste des adresses IP des interfaces réseaux (lo, ppp0, eth0, wlan...). Avec l'option -a, vous renseignera aussi sur les interfaces non actives.

|-
| $ info nom_commande
| Appelle les pages info concernant la commande désignée.

|-
| $ last
| Affiche les derniers reboot, boot et connexion d'utilisateurs.

|-
| $ lastlog
| Affiche précisément la date de la dernière connexion de tous les utilisateurs du système.

|-
| $ logname
| Sous quel login suis-je connecté ?

|-
| $ lsmod
| Liste tous les modules chargés dans le noyau.

|-
| $ lsof /dev/dsp
| Permet de connaître le processus qui occupe le périphérique&amp;nbsp;''/dev/dsp''.

|-
| $ lspci
| &quot;whatis lspci&quot; lspci (8) - list all PCI devices. Informations sur les bus PCI du système et les périphériques PCI qui y sont rattachés ( y compris AGP). Commande très utile pour obtenir des renseignements sur le hardware de votre système. L'affichage de ''Unknown device'' signifie que l'ID PCI du périphérique n'a pas de nom correspondant dans la base de données de&amp;nbsp;''lspci'' (Cela ne veut pas dire que le périphérique marche, ne marche pas ou ne marchera jamais sous Linux.)

|-
| $ lsusb
| Liste des périphériques USB branchés.

|-
| $ man commande
| Affiche la page de manuel de la commande indiquée, RTFM !

|-
| $ tail -f /var/log/messages
| Affiche les messages du noyau en direct.

|-
| $ type nom_commande
| Indique si&amp;nbsp;''nom_commande''&amp;nbsp;est une commande shell, une commande Unix, un alias ou une fonction définie par l'utilisateur.

|-
| $ type -p nom_commande
| Affiche l'emplacement de la commande spécifiée.

|-
| $ uname -a
| Affiche de nombreuses informations sur le système installé sur la machine.

|-
| $ uname -m
| Affiche le type du système installé sur la machine.

|-
| $ uname -n
| Affiche le nom de la machine dans le système.

|-
| $ uname -r
| Affiche le numéro de version du système.

|-
| $ uname -s
| Affiche le nom du système.

|-
| $ uptime
| Affiche le temps écoulé depuis le dernier démarrage.

|-
| $ vmstat
| Affiche des informations sur la machine virtuelle.

|-
| $ w
| Affiche la charge de votre PC. Permet de savoir quels utilisateurs sont logués sur le système et ce qu'ils font.

|-
| $ whatis nom_commande
| Affiche une explication en une ligne sur la commande spécifiée. Par exemple ''whatis blkid'' retournera : ''blkid (8) - command-line utility to locate/print block device attributes''

|-
| $ whereis nom
| Pour rechercher l'emplacement d'un exécutable, d'une source, d'une page de manuel concernant une commande.

|-
| $ which
| Chemin d'accès d'une commande donnée. Exemple :''&lt;nowiki&gt;# which ls&lt;/nowiki&gt;''&amp;nbsp;provoquera la réponse :&amp;nbsp;''/bin/ls''

|-
| $ whoami
| Qui suis-je ?

|}

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:19 (UTC)

[[Category:Commandes]]</text>
      <sha1>75lsm6zbiojh3cozdspjhr98avl3r7k</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>306</id>
      <parentid>304</parentid>
      <timestamp>2010-01-26T11:52:09Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="4544">{{Stable}}
[[Commandes_de_base|Retour Commandes de base]]
= Obtenir des informations =

{| class=&quot;prettytable&quot;
! &lt;center&gt;'''LISTE_DES_COMMANDES'''&lt;/center&gt;
! &lt;center&gt;'''EFFET'''&lt;/center&gt;

|-
| $ arch
| Affiche l'architecture de la machine. Voir ''&lt;nowiki&gt;# uname -a&lt;/nowiki&gt;''.

|-
| $ cat /proc/cpuinfo
| Informations sur le processeur.

|-
| $ cat /proc/interrupts
| Informations sur l'utilisation des IRQs par les périphériques.

|-
| $ cat /proc/dma
| Informations sur l'utilisation des DMA par les périphériques.

|-
| $ cat /proc/ide/hda/settings
| Informations sur le disque dur IDE.

|-
| $ cat /proc/ioports
| Informations sur l'utilisation des ports I/O (Input/Output) par les périphériques.

|-
| $ date
| Affiche l'heure et la date.

|-
| $ df -h
| Informations sur l'emplacement de montage des systèmes de fichiers (partitions utilisables pour stocker des fichiers) accessibles sur votre système et les capacités restantes sur chacun d'eux.

|-
| $ dmesg
| Pour voir les dernières informations du Kernel. Alternative : dmesg | less  (permet de se positionner au début du tampon). Tapez&amp;nbsp;''Enter''&amp;nbsp;pour faire défiler les lignes et&amp;nbsp;''q''&amp;nbsp;pour sortir. 

|-
| $ fgconsole
| Dans quelle console suis-je ?

|-
| $ free
| Affiche les quantités de mémoire et swap : totales, libres et utilisées.

|-
| $ grep
| Pour rechercher et afficher une chaîne de caractères. Exemple :''&lt;nowiki&gt;# grep &quot;linux&quot; fichier.txt&lt;/nowiki&gt;''&amp;nbsp;affiche toutes les lignes contenant la chaîne de caractères&amp;nbsp;''linux''&amp;nbsp;dans le fichier ''fichier.txt''.

|-
| $ grep -n
| Indique le numéro de la ligne où se trouve la chaîne de caractères.

|-
| $ /sbin/ifconfig
| Permet d'avoir la liste des adresses IP des interfaces réseaux (lo, ppp0, eth0, wlan...). Avec l'option -a, vous renseignera aussi sur les interfaces non actives.

|-
| $ info nom_commande
| Appelle les pages info concernant la commande désignée.

|-
| $ last
| Affiche les derniers reboot, boot et connexion d'utilisateurs.

|-
| $ lastlog
| Affiche précisément la date de la dernière connexion de tous les utilisateurs du système.

|-
| $ logname
| Sous quel login suis-je connecté ?

|-
| $ lsmod
| Liste tous les modules chargés dans le noyau.

|-
| $ lsof /dev/dsp
| Permet de connaître le processus qui occupe le périphérique&amp;nbsp;''/dev/dsp''.

|-
| $ lspci
| &quot;whatis lspci&quot; lspci (8) - list all PCI devices. Informations sur les bus PCI du système et les périphériques PCI qui y sont rattachés ( y compris AGP). Commande très utile pour obtenir des renseignements sur le hardware de votre système. L'affichage de ''Unknown device'' signifie que l'ID PCI du périphérique n'a pas de nom correspondant dans la base de données de&amp;nbsp;''lspci'' (Cela ne veut pas dire que le périphérique marche, ne marche pas ou ne marchera jamais sous Linux.)

|-
| $ lsusb
| Liste des périphériques USB branchés.

|-
| $ man commande
| Affiche la page de manuel de la commande indiquée, RTFM !

|-
| $ tail -f /var/log/messages
| Affiche les messages du noyau en direct.

|-
| $ type nom_commande
| Indique si&amp;nbsp;''nom_commande''&amp;nbsp;est une commande shell, une commande Unix, un alias ou une fonction définie par l'utilisateur.

|-
| $ type -p nom_commande
| Affiche l'emplacement de la commande spécifiée.

|-
| $ uname -a
| Affiche de nombreuses informations sur le système installé sur la machine.

|-
| $ uname -m
| Affiche le type du système installé sur la machine.

|-
| $ uname -n
| Affiche le nom de la machine dans le système.

|-
| $ uname -r
| Affiche le numéro de version du système.

|-
| $ uname -s
| Affiche le nom du système.

|-
| $ uptime
| Affiche le temps écoulé depuis le dernier démarrage.

|-
| $ vmstat
| Affiche des informations sur la machine virtuelle.

|-
| $ w
| Affiche la charge de votre PC. Permet de savoir quels utilisateurs sont logués sur le système et ce qu'ils font.

|-
| $ whatis nom_commande
| Affiche une explication en une ligne sur la commande spécifiée. Par exemple ''whatis blkid'' retournera : ''blkid (8) - command-line utility to locate/print block device attributes''

|-
| $ whereis nom
| Pour rechercher l'emplacement d'un exécutable, d'une source, d'une page de manuel concernant une commande.

|-
| $ which
| Chemin d'accès d'une commande donnée. Exemple :''&lt;nowiki&gt;# which ls&lt;/nowiki&gt;''&amp;nbsp;provoquera la réponse :&amp;nbsp;''/bin/ls''

|-
| $ whoami
| Qui suis-je ?

|}

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:19 (UTC)

[[Category:Commandes]]</text>
      <sha1>3n20q354nx5b6hot1v3rxiccxaz728h</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>317</id>
      <parentid>306</parentid>
      <timestamp>2010-01-26T13:17:11Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <text xml:space="preserve" bytes="4544">{{Stable}}
[[Commandes_de_base|Retour Commandes de base]]
= Obtenir des informations =

{| class=&quot;prettytable&quot;
! &lt;center&gt;'''LISTE_DES_COMMANDES'''&lt;/center&gt;
! &lt;center&gt;'''EFFET'''&lt;/center&gt;

|-
| $ arch
| Affiche l'architecture de la machine. Voir ''&lt;nowiki&gt;$ uname -a&lt;/nowiki&gt;''.

|-
| $ cat /proc/cpuinfo
| Informations sur le processeur.

|-
| $ cat /proc/interrupts
| Informations sur l'utilisation des IRQs par les périphériques.

|-
| $ cat /proc/dma
| Informations sur l'utilisation des DMA par les périphériques.

|-
| $ cat /proc/ide/hda/settings
| Informations sur le disque dur IDE.

|-
| $ cat /proc/ioports
| Informations sur l'utilisation des ports I/O (Input/Output) par les périphériques.

|-
| $ date
| Affiche l'heure et la date.

|-
| $ df -h
| Informations sur l'emplacement de montage des systèmes de fichiers (partitions utilisables pour stocker des fichiers) accessibles sur votre système et les capacités restantes sur chacun d'eux.

|-
| $ dmesg
| Pour voir les dernières informations du Kernel. Alternative : dmesg | less  (permet de se positionner au début du tampon). Tapez&amp;nbsp;''Enter''&amp;nbsp;pour faire défiler les lignes et&amp;nbsp;''q''&amp;nbsp;pour sortir. 

|-
| $ fgconsole
| Dans quelle console suis-je ?

|-
| $ free
| Affiche les quantités de mémoire et swap : totales, libres et utilisées.

|-
| $ grep
| Pour rechercher et afficher une chaîne de caractères. Exemple :''&lt;nowiki&gt;# grep &quot;linux&quot; fichier.txt&lt;/nowiki&gt;''&amp;nbsp;affiche toutes les lignes contenant la chaîne de caractères&amp;nbsp;''linux''&amp;nbsp;dans le fichier ''fichier.txt''.

|-
| $ grep -n
| Indique le numéro de la ligne où se trouve la chaîne de caractères.

|-
| $ /sbin/ifconfig
| Permet d'avoir la liste des adresses IP des interfaces réseaux (lo, ppp0, eth0, wlan...). Avec l'option -a, vous renseignera aussi sur les interfaces non actives.

|-
| $ info nom_commande
| Appelle les pages info concernant la commande désignée.

|-
| $ last
| Affiche les derniers reboot, boot et connexion d'utilisateurs.

|-
| $ lastlog
| Affiche précisément la date de la dernière connexion de tous les utilisateurs du système.

|-
| $ logname
| Sous quel login suis-je connecté ?

|-
| $ lsmod
| Liste tous les modules chargés dans le noyau.

|-
| $ lsof /dev/dsp
| Permet de connaître le processus qui occupe le périphérique&amp;nbsp;''/dev/dsp''.

|-
| $ lspci
| &quot;whatis lspci&quot; lspci (8) - list all PCI devices. Informations sur les bus PCI du système et les périphériques PCI qui y sont rattachés ( y compris AGP). Commande très utile pour obtenir des renseignements sur le hardware de votre système. L'affichage de ''Unknown device'' signifie que l'ID PCI du périphérique n'a pas de nom correspondant dans la base de données de&amp;nbsp;''lspci'' (Cela ne veut pas dire que le périphérique marche, ne marche pas ou ne marchera jamais sous Linux.)

|-
| $ lsusb
| Liste des périphériques USB branchés.

|-
| $ man commande
| Affiche la page de manuel de la commande indiquée, RTFM !

|-
| $ tail -f /var/log/messages
| Affiche les messages du noyau en direct.

|-
| $ type nom_commande
| Indique si&amp;nbsp;''nom_commande''&amp;nbsp;est une commande shell, une commande Unix, un alias ou une fonction définie par l'utilisateur.

|-
| $ type -p nom_commande
| Affiche l'emplacement de la commande spécifiée.

|-
| $ uname -a
| Affiche de nombreuses informations sur le système installé sur la machine.

|-
| $ uname -m
| Affiche le type du système installé sur la machine.

|-
| $ uname -n
| Affiche le nom de la machine dans le système.

|-
| $ uname -r
| Affiche le numéro de version du système.

|-
| $ uname -s
| Affiche le nom du système.

|-
| $ uptime
| Affiche le temps écoulé depuis le dernier démarrage.

|-
| $ vmstat
| Affiche des informations sur la machine virtuelle.

|-
| $ w
| Affiche la charge de votre PC. Permet de savoir quels utilisateurs sont logués sur le système et ce qu'ils font.

|-
| $ whatis nom_commande
| Affiche une explication en une ligne sur la commande spécifiée. Par exemple ''whatis blkid'' retournera : ''blkid (8) - command-line utility to locate/print block device attributes''

|-
| $ whereis nom
| Pour rechercher l'emplacement d'un exécutable, d'une source, d'une page de manuel concernant une commande.

|-
| $ which
| Chemin d'accès d'une commande donnée. Exemple :''&lt;nowiki&gt;# which ls&lt;/nowiki&gt;''&amp;nbsp;provoquera la réponse :&amp;nbsp;''/bin/ls''

|-
| $ whoami
| Qui suis-je ?

|}

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:19 (UTC)

[[Category:Commandes]]</text>
      <sha1>mzd5g70q9ozne3rk3tum8koaw40un5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>321</id>
      <parentid>317</parentid>
      <timestamp>2010-01-26T13:29:01Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <text xml:space="preserve" bytes="4714">{{Stable}}
[[Commandes_de_base|Retour Commandes de base]]
= Obtenir des informations =

{| class=&quot;prettytable&quot;
! &lt;center&gt;'''LISTE_DES_COMMANDES'''&lt;/center&gt;
! &lt;center&gt;'''EFFET'''&lt;/center&gt;

|-
| $ arch
| Affiche l'architecture de la machine. Voir ''&lt;nowiki&gt;$ uname -a&lt;/nowiki&gt;''.

|-
| $ cat /proc/cpuinfo
| Informations sur le processeur.

|-
| $ cat /proc/interrupts
| Informations sur l'utilisation des IRQs par les périphériques.

|-
| $ cat /proc/dma
| Informations sur l'utilisation des DMA par les périphériques.

|-
| $ cat /proc/ide/hda/settings
| Informations sur le disque dur IDE.

|-
| $ cat /proc/ioports
| Informations sur l'utilisation des ports I/O (Input/Output) par les périphériques.

|-
| $ date
| Affiche l'heure et la date.

|-
| $ df -h
| Informations sur l'emplacement de montage des systèmes de fichiers (partitions utilisables pour stocker des fichiers) accessibles sur votre système et les capacités restantes sur chacun d'eux.

|-
| $ dmesg
| Pour voir les dernières informations du Kernel. Alternative : dmesg | less  (permet de se positionner au début du tampon). Tapez&amp;nbsp;''Enter''&amp;nbsp;pour faire défiler les lignes et&amp;nbsp;''q''&amp;nbsp;pour sortir. 

|-
| $ fgconsole
| Dans quelle console suis-je ?

|-
| $ free
| Affiche les quantités de mémoire et swap : totales, libres et utilisées.

|-
| $ grep
| Pour rechercher et afficher une chaîne de caractères. Exemple :''&lt;nowiki&gt;# grep &quot;linux&quot; fichier.txt&lt;/nowiki&gt;''&amp;nbsp;affiche toutes les lignes contenant la chaîne de caractères&amp;nbsp;''linux''&amp;nbsp;dans le fichier ''fichier.txt''.

|-
| $ grep -n
| Indique le numéro de la ligne où se trouve la chaîne de caractères.

|-
| $ /sbin/ifconfig
| Permet d'avoir la liste des adresses IP des interfaces réseaux (lo, ppp0, eth0, wlan...). Avec l'option -a, vous renseignera aussi sur les interfaces non actives.

|-
| $ info nom_commande
| Appelle les pages info concernant la commande désignée.

|-
| $ last
| Affiche les derniers reboot, boot et connexion d'utilisateurs.

|-
| $ lastlog
| Affiche précisément la date de la dernière connexion de tous les utilisateurs du système.

|-
| $ logname
| Sous quel login suis-je connecté ?

|-
| $ lsmod
| Liste tous les modules chargés dans le noyau.

|-
| $ lsof /dev/dsp
| Permet de connaître le processus qui occupe le périphérique&amp;nbsp;''/dev/dsp''.

|-
| $ lspci
| &quot;whatis lspci&quot; lspci (8) - list all PCI devices. Informations sur les bus PCI du système et les périphériques PCI qui y sont rattachés ( y compris AGP). Commande très utile pour obtenir des renseignements sur le hardware de votre système. L'affichage de ''Unknown device'' signifie que l'ID PCI du périphérique n'a pas de nom correspondant dans la base de données de&amp;nbsp;''lspci'' (Cela ne veut pas dire que le périphérique marche, ne marche pas ou ne marchera jamais sous Linux.)

|-
| $ lsusb
| Liste des périphériques USB branchés.

|-
| $ man commande
| Affiche la page de manuel de la commande indiquée, RTFM !

|-
| $ stat -c &quot;%a&quot; /fichier
| Renvoie les droits de 'fichier' en chiffres (755)

|-
| $ stat -c &quot;%A&quot; /fichier
| Renvoie les droits de 'fichier' en lettres (-rwx------)

|-
| $ tail -f /var/log/messages
| Affiche les messages du noyau en direct.

|-
| $ type nom_commande
| Indique si&amp;nbsp;''nom_commande''&amp;nbsp;est une commande shell, une commande Unix, un alias ou une fonction définie par l'utilisateur.

|-
| $ type -p nom_commande
| Affiche l'emplacement de la commande spécifiée.

|-
| $ uname -a
| Affiche de nombreuses informations sur le système installé sur la machine.

|-
| $ uname -m
| Affiche le type du système installé sur la machine.

|-
| $ uname -n
| Affiche le nom de la machine dans le système.

|-
| $ uname -r
| Affiche le numéro de version du système.

|-
| $ uname -s
| Affiche le nom du système.

|-
| $ uptime
| Affiche le temps écoulé depuis le dernier démarrage.

|-
| $ vmstat
| Affiche des informations sur la machine virtuelle.

|-
| $ w
| Affiche la charge de votre PC. Permet de savoir quels utilisateurs sont logués sur le système et ce qu'ils font.

|-
| $ whatis nom_commande
| Affiche une explication en une ligne sur la commande spécifiée. Par exemple ''whatis blkid'' retournera : ''blkid (8) - command-line utility to locate/print block device attributes''

|-
| $ whereis nom
| Pour rechercher l'emplacement d'un exécutable, d'une source, d'une page de manuel concernant une commande.

|-
| $ which
| Chemin d'accès d'une commande donnée. Exemple :''&lt;nowiki&gt;# which ls&lt;/nowiki&gt;''&amp;nbsp;provoquera la réponse :&amp;nbsp;''/bin/ls''

|-
| $ whoami
| Qui suis-je ?

|}

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:19 (UTC)

[[Category:Commandes]]</text>
      <sha1>dd11bqyllrtwshajtqpz4u8ggbhor7e</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>482</id>
      <parentid>321</parentid>
      <timestamp>2010-01-29T07:56:28Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="4877">{{Stable}}
[[Commandes_de_base|Retour Commandes de base]]
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;
= Obtenir des informations =

{| class=&quot;prettytable&quot;
! &lt;center&gt;'''LISTE_DES_COMMANDES'''&lt;/center&gt;
! &lt;center&gt;'''EFFET'''&lt;/center&gt;

|-
| $ arch
| Affiche l'architecture de la machine. Voir ''&lt;nowiki&gt;$ uname -a&lt;/nowiki&gt;''.

|-
| $ cat /proc/cpuinfo
| Informations sur le processeur.

|-
| $ cat /proc/interrupts
| Informations sur l'utilisation des IRQs par les périphériques.

|-
| $ cat /proc/dma
| Informations sur l'utilisation des DMA par les périphériques.

|-
| $ cat /proc/ide/hda/settings
| Informations sur le disque dur IDE.

|-
| $ cat /proc/ioports
| Informations sur l'utilisation des ports I/O (Input/Output) par les périphériques.

|-
| $ date
| Affiche l'heure et la date.

|-
| $ df -h
| Informations sur l'emplacement de montage des systèmes de fichiers (partitions utilisables pour stocker des fichiers) accessibles sur votre système et les capacités restantes sur chacun d'eux.

|-
| $ dmesg
| Pour voir les dernières informations du Kernel. Alternative : dmesg | less  (permet de se positionner au début du tampon). Tapez&amp;nbsp;''Enter''&amp;nbsp;pour faire défiler les lignes et&amp;nbsp;''q''&amp;nbsp;pour sortir. 

|-
| $ fgconsole
| Dans quelle console suis-je ?

|-
| $ free
| Affiche les quantités de mémoire et swap : totales, libres et utilisées.

|-
| $ grep
| Pour rechercher et afficher une chaîne de caractères. Exemple :''&lt;nowiki&gt;# grep &quot;linux&quot; fichier.txt&lt;/nowiki&gt;''&amp;nbsp;affiche toutes les lignes contenant la chaîne de caractères&amp;nbsp;''linux''&amp;nbsp;dans le fichier ''fichier.txt''.

|-
| $ grep -n
| Indique le numéro de la ligne où se trouve la chaîne de caractères.

|-
| $ /sbin/ifconfig
| Permet d'avoir la liste des adresses IP des interfaces réseaux (lo, ppp0, eth0, wlan...). Avec l'option -a, vous renseignera aussi sur les interfaces non actives.

|-
| $ info nom_commande
| Appelle les pages info concernant la commande désignée.

|-
| $ last
| Affiche les derniers reboot, boot et connexion d'utilisateurs.

|-
| $ lastlog
| Affiche précisément la date de la dernière connexion de tous les utilisateurs du système.

|-
| $ logname
| Sous quel login suis-je connecté ?

|-
| $ lsmod
| Liste tous les modules chargés dans le noyau.

|-
| $ lsof /dev/dsp
| Permet de connaître le processus qui occupe le périphérique&amp;nbsp;''/dev/dsp''.

|-
| $ lspci
| &quot;whatis lspci&quot; lspci (8) - list all PCI devices. Informations sur les bus PCI du système et les périphériques PCI qui y sont rattachés ( y compris AGP). Commande très utile pour obtenir des renseignements sur le hardware de votre système. L'affichage de ''Unknown device'' signifie que l'ID PCI du périphérique n'a pas de nom correspondant dans la base de données de&amp;nbsp;''lspci'' (Cela ne veut pas dire que le périphérique marche, ne marche pas ou ne marchera jamais sous Linux.)

|-
| $ lsusb
| Liste des périphériques USB branchés.

|-
| $ man commande
| Affiche la page de manuel de la commande indiquée, RTFM !

|-
| $ stat -c &quot;%a&quot; /fichier
| Renvoie les droits de 'fichier' en chiffres (755)

|-
| $ stat -c &quot;%A&quot; /fichier
| Renvoie les droits de 'fichier' en lettres (-rwx------)

|-
| $ tail -f /var/log/messages
| Affiche les messages du noyau en direct.

|-
| $ type nom_commande
| Indique si&amp;nbsp;''nom_commande''&amp;nbsp;est une commande shell, une commande Unix, un alias ou une fonction définie par l'utilisateur.

|-
| $ type -p nom_commande
| Affiche l'emplacement de la commande spécifiée.

|-
| $ uname -a
| Affiche de nombreuses informations sur le système installé sur la machine.

|-
| $ uname -m
| Affiche le type du système installé sur la machine.

|-
| $ uname -n
| Affiche le nom de la machine dans le système.

|-
| $ uname -r
| Affiche le numéro de version du système.

|-
| $ uname -s
| Affiche le nom du système.

|-
| $ uptime
| Affiche le temps écoulé depuis le dernier démarrage.

|-
| $ vmstat
| Affiche des informations sur la machine virtuelle.

|-
| $ w
| Affiche la charge de votre PC. Permet de savoir quels utilisateurs sont logués sur le système et ce qu'ils font.

|-
| $ whatis nom_commande
| Affiche une explication en une ligne sur la commande spécifiée. Par exemple ''whatis blkid'' retournera : ''blkid (8) - command-line utility to locate/print block device attributes''

|-
| $ whereis nom
| Pour rechercher l'emplacement d'un exécutable, d'une source, d'une page de manuel concernant une commande.

|-
| $ which
| Chemin d'accès d'une commande donnée. Exemple :''&lt;nowiki&gt;# which ls&lt;/nowiki&gt;''&amp;nbsp;provoquera la réponse :&amp;nbsp;''/bin/ls''

|-
| $ whoami
| Qui suis-je ?

|}

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:19 (UTC)

[[Category:Commandes]]</text>
      <sha1>ctybg9i5kjm3y6wygeo7qk04qihs0wo</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>510</id>
      <parentid>482</parentid>
      <timestamp>2010-01-29T13:39:32Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="4830">{{Stable}}
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;
= Obtenir des informations =

{| class=&quot;prettytable&quot;
! &lt;center&gt;'''LISTE_DES_COMMANDES'''&lt;/center&gt;
! &lt;center&gt;'''EFFET'''&lt;/center&gt;

|-
| $ arch
| Affiche l'architecture de la machine. Voir ''&lt;nowiki&gt;$ uname -a&lt;/nowiki&gt;''.

|-
| $ cat /proc/cpuinfo
| Informations sur le processeur.

|-
| $ cat /proc/interrupts
| Informations sur l'utilisation des IRQs par les périphériques.

|-
| $ cat /proc/dma
| Informations sur l'utilisation des DMA par les périphériques.

|-
| $ cat /proc/ide/hda/settings
| Informations sur le disque dur IDE.

|-
| $ cat /proc/ioports
| Informations sur l'utilisation des ports I/O (Input/Output) par les périphériques.

|-
| $ date
| Affiche l'heure et la date.

|-
| $ df -h
| Informations sur l'emplacement de montage des systèmes de fichiers (partitions utilisables pour stocker des fichiers) accessibles sur votre système et les capacités restantes sur chacun d'eux.

|-
| $ dmesg
| Pour voir les dernières informations du Kernel. Alternative : dmesg | less  (permet de se positionner au début du tampon). Tapez&amp;nbsp;''Enter''&amp;nbsp;pour faire défiler les lignes et&amp;nbsp;''q''&amp;nbsp;pour sortir. 

|-
| $ fgconsole
| Dans quelle console suis-je ?

|-
| $ free
| Affiche les quantités de mémoire et swap : totales, libres et utilisées.

|-
| $ grep
| Pour rechercher et afficher une chaîne de caractères. Exemple :''&lt;nowiki&gt;# grep &quot;linux&quot; fichier.txt&lt;/nowiki&gt;''&amp;nbsp;affiche toutes les lignes contenant la chaîne de caractères&amp;nbsp;''linux''&amp;nbsp;dans le fichier ''fichier.txt''.

|-
| $ grep -n
| Indique le numéro de la ligne où se trouve la chaîne de caractères.

|-
| $ /sbin/ifconfig
| Permet d'avoir la liste des adresses IP des interfaces réseaux (lo, ppp0, eth0, wlan...). Avec l'option -a, vous renseignera aussi sur les interfaces non actives.

|-
| $ info nom_commande
| Appelle les pages info concernant la commande désignée.

|-
| $ last
| Affiche les derniers reboot, boot et connexion d'utilisateurs.

|-
| $ lastlog
| Affiche précisément la date de la dernière connexion de tous les utilisateurs du système.

|-
| $ logname
| Sous quel login suis-je connecté ?

|-
| $ lsmod
| Liste tous les modules chargés dans le noyau.

|-
| $ lsof /dev/dsp
| Permet de connaître le processus qui occupe le périphérique&amp;nbsp;''/dev/dsp''.

|-
| $ lspci
| &quot;whatis lspci&quot; lspci (8) - list all PCI devices. Informations sur les bus PCI du système et les périphériques PCI qui y sont rattachés ( y compris AGP). Commande très utile pour obtenir des renseignements sur le hardware de votre système. L'affichage de ''Unknown device'' signifie que l'ID PCI du périphérique n'a pas de nom correspondant dans la base de données de&amp;nbsp;''lspci'' (Cela ne veut pas dire que le périphérique marche, ne marche pas ou ne marchera jamais sous Linux.)

|-
| $ lsusb
| Liste des périphériques USB branchés.

|-
| $ man commande
| Affiche la page de manuel de la commande indiquée, RTFM !

|-
| $ stat -c &quot;%a&quot; /fichier
| Renvoie les droits de 'fichier' en chiffres (755)

|-
| $ stat -c &quot;%A&quot; /fichier
| Renvoie les droits de 'fichier' en lettres (-rwx------)

|-
| $ tail -f /var/log/messages
| Affiche les messages du noyau en direct.

|-
| $ type nom_commande
| Indique si&amp;nbsp;''nom_commande''&amp;nbsp;est une commande shell, une commande Unix, un alias ou une fonction définie par l'utilisateur.

|-
| $ type -p nom_commande
| Affiche l'emplacement de la commande spécifiée.

|-
| $ uname -a
| Affiche de nombreuses informations sur le système installé sur la machine.

|-
| $ uname -m
| Affiche le type du système installé sur la machine.

|-
| $ uname -n
| Affiche le nom de la machine dans le système.

|-
| $ uname -r
| Affiche le numéro de version du système.

|-
| $ uname -s
| Affiche le nom du système.

|-
| $ uptime
| Affiche le temps écoulé depuis le dernier démarrage.

|-
| $ vmstat
| Affiche des informations sur la machine virtuelle.

|-
| $ w
| Affiche la charge de votre PC. Permet de savoir quels utilisateurs sont logués sur le système et ce qu'ils font.

|-
| $ whatis nom_commande
| Affiche une explication en une ligne sur la commande spécifiée. Par exemple ''whatis blkid'' retournera : ''blkid (8) - command-line utility to locate/print block device attributes''

|-
| $ whereis nom
| Pour rechercher l'emplacement d'un exécutable, d'une source, d'une page de manuel concernant une commande.

|-
| $ which
| Chemin d'accès d'une commande donnée. Exemple :''&lt;nowiki&gt;# which ls&lt;/nowiki&gt;''&amp;nbsp;provoquera la réponse :&amp;nbsp;''/bin/ls''

|-
| $ whoami
| Qui suis-je ?

|}

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:19 (UTC)

[[Category:Commandes]]</text>
      <sha1>ju4f4mprgrpl6dlobrj5ud4lbhwnojm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>541</id>
      <parentid>510</parentid>
      <timestamp>2010-01-30T09:05:38Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="5009">{{Stable}}
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;
= Obtenir des informations =

{| class=&quot;prettytable&quot;
! &lt;center&gt;'''LISTE_DES_COMMANDES'''&lt;/center&gt;
! &lt;center&gt;'''EFFET'''&lt;/center&gt;

|-
| $ arch
| Affiche l'architecture de la machine. Voir ''&lt;nowiki&gt;$ uname -a&lt;/nowiki&gt;''.

|-
| $ cat /proc/cpuinfo
| Informations sur le processeur.

|-
| $ cat /proc/interrupts
| Informations sur l'utilisation des [[Glossaire#IRQ|IRQs]] par les périphériques.

|-
| $ cat /proc/dma
| Informations sur l'utilisation des [[Glossaire#DMA|DMA]] par les périphériques.

|-
| $ cat /proc/ide/hda/settings
| Informations sur le disque dur [[Glossaire#IDE|IDE]].

|-
| $ cat /proc/ioports
| Informations sur l'utilisation des ports [[Glossaire#I/O|I/O]] (Input/Output) par les périphériques.

|-
| $ date
| Affiche l'heure et la date.

|-
| $ df -h
| Informations sur l'emplacement de montage des systèmes de fichiers (partitions utilisables pour stocker des fichiers) accessibles sur votre système et les capacités restantes sur chacun d'eux.

|-
| $ dmesg
| Pour voir les dernières informations du Kernel. Alternative : dmesg | less  (permet de se positionner au début du tampon). Tapez&amp;nbsp;''Enter''&amp;nbsp;pour faire défiler les lignes et&amp;nbsp;''q''&amp;nbsp;pour sortir. 

|-
| $ fgconsole
| Dans quelle console suis-je ?

|-
| $ free
| Affiche les quantités de mémoire et swap : totales, libres et utilisées.

|-
| $ grep
| Pour rechercher et afficher une chaîne de caractères. Exemple :''&lt;nowiki&gt;# grep &quot;linux&quot; fichier.txt&lt;/nowiki&gt;''&amp;nbsp;affiche toutes les lignes contenant la chaîne de caractères&amp;nbsp;''linux''&amp;nbsp;dans le fichier ''fichier.txt''.

|-
| $ grep -n
| Indique le numéro de la ligne où se trouve la chaîne de caractères.

|-
| $ /sbin/ifconfig
| Permet d'avoir la liste des adresses [[Glossaire#IP|IP]] des interfaces réseaux (lo, ppp0, eth0, wlan...). Avec l'option -a, vous renseignera aussi sur les interfaces non actives.

|-
| $ info nom_commande
| Appelle les pages info concernant la commande désignée.

|-
| $ last
| Affiche les derniers reboot, boot et connexion d'utilisateurs.

|-
| $ lastlog
| Affiche précisément la date de la dernière connexion de tous les utilisateurs du système.

|-
| $ logname
| Sous quel login suis-je connecté ?

|-
| $ lsmod
| Liste tous les modules chargés dans le noyau.

|-
| $ lsof /dev/dsp
| Permet de connaître le processus qui occupe le périphérique&amp;nbsp;''/dev/dsp''.

|-
| $ lspci
| &quot;whatis lspci&quot; lspci (8) - list all [[Glossaire#PCI|PCI]] devices. Informations sur les bus PCI du système et les périphériques PCI qui y sont rattachés ( y compris [[Glossaire#AGP|AGP]]). Commande très utile pour obtenir des renseignements sur le hardware de votre système. L'affichage de ''Unknown device'' signifie que l'ID PCI du périphérique n'a pas de nom correspondant dans la base de données de&amp;nbsp;''lspci'' (Cela ne veut pas dire que le périphérique marche, ne marche pas ou ne marchera jamais sous Linux.)

|-
| $ lsusb
| Liste des périphériques [[Glossaire#USB|USB]] branchés.

|-
| $ man commande
| Affiche la page de manuel de la commande indiquée, [[Glossaire#RTFM|RTFM]] !

|-
| $ stat -c &quot;%a&quot; /fichier
| Renvoie les droits de 'fichier' en chiffres (755)

|-
| $ stat -c &quot;%A&quot; /fichier
| Renvoie les droits de 'fichier' en lettres (-rwx------)

|-
| $ tail -f /var/log/messages
| Affiche les messages du noyau en direct.

|-
| $ type nom_commande
| Indique si&amp;nbsp;''nom_commande''&amp;nbsp;est une commande shell, une commande Unix, un alias ou une fonction définie par l'utilisateur.

|-
| $ type -p nom_commande
| Affiche l'emplacement de la commande spécifiée.

|-
| $ uname -a
| Affiche de nombreuses informations sur le système installé sur la machine.

|-
| $ uname -m
| Affiche le type du système installé sur la machine.

|-
| $ uname -n
| Affiche le nom de la machine dans le système.

|-
| $ uname -r
| Affiche le numéro de version du système.

|-
| $ uname -s
| Affiche le nom du système.

|-
| $ uptime
| Affiche le temps écoulé depuis le dernier démarrage.

|-
| $ vmstat
| Affiche des informations sur la machine virtuelle.

|-
| $ w
| Affiche la charge de votre [[Glossaire#PC|PC]]. Permet de savoir quels utilisateurs sont logués sur le système et ce qu'ils font.

|-
| $ whatis nom_commande
| Affiche une explication en une ligne sur la commande spécifiée. Par exemple ''whatis blkid'' retournera : ''blkid (8) - command-line utility to locate/print block device attributes''

|-
| $ whereis nom
| Pour rechercher l'emplacement d'un exécutable, d'une source, d'une page de manuel concernant une commande.

|-
| $ which
| Chemin d'accès d'une commande donnée. Exemple :''&lt;nowiki&gt;# which ls&lt;/nowiki&gt;''&amp;nbsp;provoquera la réponse :&amp;nbsp;''/bin/ls''

|-
| $ whoami
| Qui suis-je ?

|}

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:19 (UTC)

[[Category:Commandes]]</text>
      <sha1>4jqr49vzese9hyipbbawkaj6vx67kpr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>656</id>
      <parentid>541</parentid>
      <timestamp>2010-02-01T08:50:42Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="5365">{{Stable}} &lt;categorytree mode=&quot;pages&quot; style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt; 

= Obtenir des informations  =

{| class=&quot;prettytable&quot;
|-
! &lt;center&gt;'''LISTE_DES_COMMANDES'''&lt;/center&gt; 
! &lt;center&gt;'''EFFET'''&lt;/center&gt;
|-
| $ arch 
| Affiche l'architecture de la machine. Voir ''&lt;nowiki&gt;$ uname -a&lt;/nowiki&gt;''.
|-
| $ cat /proc/cpuinfo 
| Informations sur le processeur.
|-
| $ cat /proc/interrupts 
| Informations sur l'utilisation des [[Glossaire#IRQ|IRQs]] par les périphériques.
|-
| $ cat /proc/dma 
| Informations sur l'utilisation des [[Glossaire#DMA|DMA]] par les périphériques.
|-
| $ cat /proc/ide/hda/settings 
| Informations sur le disque dur [[Glossaire#IDE|IDE]].
|-
| $ cat /proc/ioports 
| Informations sur l'utilisation des ports [[Glossaire#I.2FO|I/O]] (Input/Output) par les périphériques.
|-
| $ date 
| Affiche l'heure et la date.
|-
| $ df -h 
| Informations sur l'emplacement de montage des systèmes de fichiers (partitions utilisables pour stocker des fichiers) accessibles sur votre système et les capacités restantes sur chacun d'eux.
|-
| $ dmesg 
| less (permet de se positionner au début du tampon). Tapez&amp;nbsp;''Enter''&amp;nbsp;pour faire défiler les lignes et&amp;nbsp;''q''&amp;nbsp;pour sortir.
|-
| $ fgconsole 
| Dans quelle console suis-je&amp;nbsp;?
|-
| $ free 
| Affiche les quantités de mémoire et swap&amp;nbsp;: totales, libres et utilisées.
|-
| $ grep 
| Pour rechercher et afficher une chaîne de caractères. Exemple&amp;nbsp;:''&lt;nowiki&gt;# grep &quot;linux&quot; fichier.txt&lt;/nowiki&gt;''&amp;nbsp;affiche toutes les lignes contenant la chaîne de caractères&amp;nbsp;''linux''&amp;nbsp;dans le fichier ''fichier.txt''.
|-
| $ grep -n 
| Indique le numéro de la ligne où se trouve la chaîne de caractères.
|-
| $ /sbin/ifconfig 
| Permet d'avoir la liste des adresses [[Glossaire#IP|IP]] des interfaces réseaux (lo, ppp0, eth0, wlan...). Avec l'option -a, vous renseignera aussi sur les interfaces non actives.
|-
| $ info nom_commande 
| Appelle les pages info concernant la commande désignée.
|-
| $ last 
| Affiche les derniers reboot, boot et connexion d'utilisateurs.
|-
| $ lastlog 
| Affiche précisément la date de la dernière connexion de tous les utilisateurs du système.
|-
| $ logname 
| Sous quel login suis-je connecté&amp;nbsp;?
|-
| $ lshw 
| C'est un petit utilitaire qui permet d'extraire les informations détaillées sur le matériel. Il peut rapporter la configuration détaillée de la RAM, la configuration de la carte mère, la version du CPU et sa vitesse, la configuration du cache, la vitesse du BUS, etc. Il n'est pas installé par défaut : '''&lt;nowiki&gt;# aptitude install lshw&lt;/nowiki&gt;'''
|-
| $ lsmod 
| Liste tous les modules chargés dans le noyau.
|-
| $ lsof /dev/dsp 
| Permet de connaître le processus qui occupe le périphérique&amp;nbsp;''/dev/dsp''.
|-
| $ lspci 
| &quot;whatis lspci&quot; lspci (8) - list all [[Glossaire#PCI|PCI]] devices. Informations sur les bus PCI du système et les périphériques PCI qui y sont rattachés ( y compris [[Glossaire#AGP|AGP]]). Commande très utile pour obtenir des renseignements sur le hardware de votre système. L'affichage de ''Unknown device'' signifie que l'ID PCI du périphérique n'a pas de nom correspondant dans la base de données de&amp;nbsp;''lspci'' (Cela ne veut pas dire que le périphérique marche, ne marche pas ou ne marchera jamais sous Linux.)
|-
| $ lsusb 
| Liste des périphériques [[Glossaire#USB|USB]] branchés.
|-
| $ man commande 
| Affiche la page de manuel de la commande indiquée, [[Glossaire#RTFM|RTFM]]&amp;nbsp;!
|-
| $ stat -c &quot;%a&quot; /fichier 
| Renvoie les droits de 'fichier' en chiffres (755)
|-
| $ stat -c &quot;%A&quot; /fichier 
| Renvoie les droits de 'fichier' en lettres (-rwx------)
|-
| $ tail -f /var/log/messages 
| Affiche les messages du noyau en direct.
|-
| $ type nom_commande 
| Indique si&amp;nbsp;''nom_commande''&amp;nbsp;est une commande shell, une commande Unix, un alias ou une fonction définie par l'utilisateur.
|-
| $ type -p nom_commande 
| Affiche l'emplacement de la commande spécifiée.
|-
| $ uname -a 
| Affiche de nombreuses informations sur le système installé sur la machine.
|-
| $ uname -m 
| Affiche le type du système installé sur la machine.
|-
| $ uname -n 
| Affiche le nom de la machine dans le système.
|-
| $ uname -r 
| Affiche le numéro de version du système.
|-
| $ uname -s 
| Affiche le nom du système.
|-
| $ uptime 
| Affiche le temps écoulé depuis le dernier démarrage.
|-
| $ vmstat 
| Affiche des informations sur la machine virtuelle.
|-
| $ w 
| Affiche la charge de votre [[Glossaire#PC|PC]]. Permet de savoir quels utilisateurs sont logués sur le système et ce qu'ils font.
|-
| $ whatis nom_commande 
| Affiche une explication en une ligne sur la commande spécifiée. Par exemple ''whatis blkid'' retournera&amp;nbsp;: ''blkid (8) - command-line utility to locate/print block device attributes''
|-
| $ whereis nom 
| Pour rechercher l'emplacement d'un exécutable, d'une source, d'une page de manuel concernant une commande.
|-
| $ which 
| Chemin d'accès d'une commande donnée. Exemple&amp;nbsp;:''&lt;nowiki&gt;# which ls&lt;/nowiki&gt;''&amp;nbsp;provoquera la réponse&amp;nbsp;:&amp;nbsp;''/bin/ls''
|-
| $ whoami 
| Qui suis-je&amp;nbsp;?
|}

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:19 (UTC) 

[[Category:Commandes]]</text>
      <sha1>esdv8kwezc73rvb1imksewh2upurxvg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>671</id>
      <parentid>656</parentid>
      <timestamp>2010-02-01T12:11:36Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="5467">{{Stable}} &lt;categorytree mode=&quot;pages&quot; style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt; 

= Obtenir des informations  =

{| class=&quot;prettytable&quot;
|-
! &lt;center&gt;'''LISTE_DES_COMMANDES'''&lt;/center&gt; 
! &lt;center&gt;'''EFFET'''&lt;/center&gt;
|-
| $ arch 
| Affiche l'architecture de la machine. Voir ''&lt;nowiki&gt;$ uname -a&lt;/nowiki&gt;''.
|-
| $ cat /proc/cpuinfo 
| Informations sur le processeur.
|-
| $ cat /proc/interrupts 
| Informations sur l'utilisation des [[Glossaire#IRQ|IRQs]] par les périphériques.
|-
| $ cat /proc/dma 
| Informations sur l'utilisation des [[Glossaire#DMA|DMA]] par les périphériques.
|-
| $ cat /proc/ide/hda/settings 
| Informations sur le disque dur [[Glossaire#IDE|IDE]].
|-
| $ cat /proc/ioports 
| Informations sur l'utilisation des ports [[Glossaire#I.2FO|I/O]] (Input/Output) par les périphériques.
|-
| $ date 
| Affiche l'heure et la date.
|-
| $ df -h 
| Informations sur l'emplacement de montage des systèmes de fichiers (partitions utilisables pour stocker des fichiers) accessibles sur votre système et les capacités restantes sur chacun d'eux.
|-
| $ dmesg 
| less (permet de se positionner au début du tampon). Tapez&amp;nbsp;''Enter''&amp;nbsp;pour faire défiler les lignes et&amp;nbsp;''q''&amp;nbsp;pour sortir.
|-
| $ fgconsole 
| Dans quelle console suis-je&amp;nbsp;?
|-
| $ free 
| Affiche les quantités de mémoire et swap&amp;nbsp;: totales, libres et utilisées.
|-
| $ grep 
| Pour rechercher et afficher une chaîne de caractères. Exemple&amp;nbsp;:''&lt;nowiki&gt;# grep &quot;linux&quot; fichier.txt&lt;/nowiki&gt;''&amp;nbsp;affiche toutes les lignes contenant la chaîne de caractères&amp;nbsp;''linux''&amp;nbsp;dans le fichier ''fichier.txt''.
|-
| $ grep -n 
| Indique le numéro de la ligne où se trouve la chaîne de caractères.
|-
| $ /sbin/ifconfig 
| Permet d'avoir la liste des adresses [[Glossaire#IP|IP]] des interfaces réseaux (lo, ppp0, eth0, wlan...). Avec l'option -a, vous renseignera aussi sur les interfaces non actives.
|-
| $ info nom_commande 
| Appelle les pages info concernant la commande désignée.
|-
| $ last 
| Affiche les derniers reboot, boot et connexion d'utilisateurs.
|-
| $ lastlog 
| Affiche précisément la date de la dernière connexion de tous les utilisateurs du système.
|-
| $ logname 
| Sous quel login suis-je connecté&amp;nbsp;?
|-
| $ lshw 
| C'est un petit utilitaire qui permet d'extraire les informations détaillées sur le matériel. Il peut rapporter la configuration détaillée de la RAM, la configuration de la carte mère, la version du CPU et sa vitesse, la configuration du cache, la vitesse du BUS, etc. Il n'est pas installé par défaut : '''&lt;nowiki&gt;# aptitude install lshw&lt;/nowiki&gt;'''. A noter que la sortie de la commande sera plus complète si elle est lancée avec les droits &quot;root&quot;.
|-
| $ lsmod 
| Liste tous les modules chargés dans le noyau.
|-
| $ lsof /dev/dsp 
| Permet de connaître le processus qui occupe le périphérique&amp;nbsp;''/dev/dsp''.
|-
| $ lspci 
| &quot;whatis lspci&quot; lspci (8) - list all [[Glossaire#PCI|PCI]] devices. Informations sur les bus PCI du système et les périphériques PCI qui y sont rattachés ( y compris [[Glossaire#AGP|AGP]]). Commande très utile pour obtenir des renseignements sur le hardware de votre système. L'affichage de ''Unknown device'' signifie que l'ID PCI du périphérique n'a pas de nom correspondant dans la base de données de&amp;nbsp;''lspci'' (Cela ne veut pas dire que le périphérique marche, ne marche pas ou ne marchera jamais sous Linux.)
|-
| $ lsusb 
| Liste des périphériques [[Glossaire#USB|USB]] branchés.
|-
| $ man commande 
| Affiche la page de manuel de la commande indiquée, [[Glossaire#RTFM|RTFM]]&amp;nbsp;!
|-
| $ stat -c &quot;%a&quot; /fichier 
| Renvoie les droits de 'fichier' en chiffres (755)
|-
| $ stat -c &quot;%A&quot; /fichier 
| Renvoie les droits de 'fichier' en lettres (-rwx------)
|-
| $ tail -f /var/log/messages 
| Affiche les messages du noyau en direct.
|-
| $ type nom_commande 
| Indique si&amp;nbsp;''nom_commande''&amp;nbsp;est une commande shell, une commande Unix, un alias ou une fonction définie par l'utilisateur.
|-
| $ type -p nom_commande 
| Affiche l'emplacement de la commande spécifiée.
|-
| $ uname -a 
| Affiche de nombreuses informations sur le système installé sur la machine.
|-
| $ uname -m 
| Affiche le type du système installé sur la machine.
|-
| $ uname -n 
| Affiche le nom de la machine dans le système.
|-
| $ uname -r 
| Affiche le numéro de version du système.
|-
| $ uname -s 
| Affiche le nom du système.
|-
| $ uptime 
| Affiche le temps écoulé depuis le dernier démarrage.
|-
| $ vmstat 
| Affiche des informations sur la machine virtuelle.
|-
| $ w 
| Affiche la charge de votre [[Glossaire#PC|PC]]. Permet de savoir quels utilisateurs sont logués sur le système et ce qu'ils font.
|-
| $ whatis nom_commande 
| Affiche une explication en une ligne sur la commande spécifiée. Par exemple ''whatis blkid'' retournera&amp;nbsp;: ''blkid (8) - command-line utility to locate/print block device attributes''
|-
| $ whereis nom 
| Pour rechercher l'emplacement d'un exécutable, d'une source, d'une page de manuel concernant une commande.
|-
| $ which 
| Chemin d'accès d'une commande donnée. Exemple&amp;nbsp;:''&lt;nowiki&gt;# which ls&lt;/nowiki&gt;''&amp;nbsp;provoquera la réponse&amp;nbsp;:&amp;nbsp;''/bin/ls''
|-
| $ whoami 
| Qui suis-je&amp;nbsp;?
|}

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:19 (UTC) 

[[Category:Commandes]]</text>
      <sha1>t89nn1kgmhi3op8l5dksvge285sdi2z</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1076</id>
      <parentid>671</parentid>
      <timestamp>2010-02-11T08:33:25Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="5475">{{Stable}} &lt;categorytree mode=&quot;pages&quot; style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt; 

= Obtenir des informations  =

{| class=&quot;prettytable&quot;
|-
! &lt;center&gt;'''LISTE_DES_COMMANDES'''&lt;/center&gt; 
! &lt;center&gt;'''EFFET'''&lt;/center&gt;
|-
| $ arch 
| Affiche l'architecture de la machine. Voir ''&lt;nowiki&gt;$ uname -a&lt;/nowiki&gt;''.
|-
| $ cat /proc/cpuinfo 
| Informations sur le processeur.
|-
| $ cat /proc/interrupts 
| Informations sur l'utilisation des [[Glossaire#IRQ|IRQs]] par les périphériques.
|-
| $ cat /proc/dma 
| Informations sur l'utilisation des [[Glossaire#DMA|DMA]] par les périphériques.
|-
| $ cat /proc/ide/hda/settings 
| Informations sur le disque dur [[Glossaire#IDE|IDE]].
|-
| $ cat /proc/ioports 
| Informations sur l'utilisation des ports [[Glossaire#I.2FO|I/O]] (Input/Output) par les périphériques.
|-
| $ date 
| Affiche l'heure et la date.
|-
| $ df -h 
| Informations sur l'emplacement de montage des systèmes de fichiers (partitions utilisables pour stocker des fichiers) accessibles sur votre système et les capacités restantes sur chacun d'eux.
|-
| $ dmesg 
| less (permet de se positionner au début du tampon). Tapez&amp;nbsp;''Enter''&amp;nbsp;pour faire défiler les lignes et&amp;nbsp;''q''&amp;nbsp;pour sortir.
|-
| $ fgconsole 
| Dans quelle console suis-je&amp;nbsp;?
|-
| $ free 
| Affiche les quantités de mémoire et swap&amp;nbsp;: totales, libres et utilisées.
|-
| $ grep 
| Pour rechercher et afficher une chaîne de caractères. Exemple&amp;nbsp;:''&lt;nowiki&gt;# grep &quot;linux&quot; fichier.txt&lt;/nowiki&gt;''&amp;nbsp;affiche toutes les lignes contenant la chaîne de caractères&amp;nbsp;''linux''&amp;nbsp;dans le fichier ''fichier.txt''.
|-
| $ grep -n 
| Indique le numéro de la ligne où se trouve la chaîne de caractères.
|-
| $ /sbin/ifconfig 
| Permet d'avoir la liste des adresses [[Glossaire#IP|IP]] des interfaces réseaux (lo, ppp0, eth0, wlan...). Avec l'option -a, vous renseignera aussi sur les interfaces non actives.
|-
| $ info nom_commande 
| Appelle les pages info concernant la commande désignée.
|-
| $ last 
| Affiche les derniers reboot, boot et connexion d'utilisateurs.
|-
| $ lastlog 
| Affiche précisément la date de la dernière connexion de tous les utilisateurs du système.
|-
| $ logname 
| Sous quel login suis-je connecté&amp;nbsp;?
|-
| $ lshw 
| C'est un petit utilitaire qui permet d'extraire les informations détaillées sur le matériel. Il peut rapporter la configuration détaillée de la RAM, la configuration de la carte mère, la version du CPU et sa vitesse, la configuration du cache, la vitesse du BUS, etc. Il n'est pas installé par défaut : '''&lt;nowiki&gt;# aptitude install lshw&lt;/nowiki&gt;'''. A noter que la sortie de la commande sera plus complète si elle est lancée avec les droits &quot;root&quot;.
|-
| $ lsmod 
| Liste tous les modules chargés dans le noyau.
|-
| $ lsof /dev/dsp 
| Permet de connaître le processus qui occupe le périphérique&amp;nbsp;''/dev/dsp''.
|-
| $ lspci 
| &quot;whatis lspci&quot; lspci (8) - list all [[Glossaire#PCI|PCI]] devices. Informations sur les bus PCI du système et les périphériques PCI qui y sont rattachés ( y compris [[Glossaire#AGP|AGP]]). Commande très utile pour obtenir des renseignements sur le hardware de votre système. L'affichage de ''Unknown device'' signifie que l'ID PCI du périphérique n'a pas de nom correspondant dans la base de données de&amp;nbsp;''lspci'' (Cela ne veut pas dire que le périphérique marche, ne marche pas ou ne marchera jamais sous Linux.)
|-
| $ lsusb 
| Liste des périphériques [[Glossaire#USB|USB]] branchés.
|-
| $ man commande 
| Affiche la page de manuel de la commande indiquée, [[Glossaire#RTFM|RTFM]]&amp;nbsp;!
|-
| $ stat -c &quot;%a&quot; /fichier 
| Renvoie les droits de 'fichier' en chiffres (755)
|-
| $ stat -c &quot;%A&quot; /fichier 
| Renvoie les droits de 'fichier' en lettres (-rwx------)
|-
| $ tail -f /var/log/messages 
| Affiche les messages du noyau en direct.
|-
| $ type nom_commande 
| Indique si&amp;nbsp;''nom_commande''&amp;nbsp;est une commande shell, une commande Unix, un alias ou une fonction définie par l'utilisateur.
|-
| $ type -p nom_commande 
| Affiche l'emplacement de la commande spécifiée.
|-
| $ uname -a 
| Affiche de nombreuses informations sur le système installé sur la machine.
|-
| $ uname -m 
| Affiche le type du système installé sur la machine.
|-
| $ uname -n 
| Affiche le nom de la machine dans le système.
|-
| $ uname -r 
| Affiche le numéro de version du système.
|-
| $ uname -s 
| Affiche le nom du système.
|-
| $ uptime 
| Affiche le temps écoulé depuis le dernier démarrage.
|-
| $ vmstat 
| Affiche des informations sur la machine virtuelle.
|-
| $ w 
| Affiche la charge de votre [[Glossaire#PC|PC]]. Permet de savoir quels utilisateurs sont logués sur le système et ce qu'ils font.
|-
| $ whatis nom_commande 
| Affiche une explication en une ligne sur la commande spécifiée. Par exemple ''whatis blkid'' retournera&amp;nbsp;: ''blkid (8) - command-line utility to locate/print block device attributes''
|-
| $ whereis nom 
| Pour rechercher l'emplacement d'un exécutable, d'une source, d'une page de manuel concernant une commande.
|-
| $ which 
| Chemin d'accès d'une commande donnée. Exemple&amp;nbsp;:''&lt;nowiki&gt;# which ls&lt;/nowiki&gt;''&amp;nbsp;provoquera la réponse&amp;nbsp;:&amp;nbsp;''/bin/ls''
|-
| $ whoami 
| Qui suis-je&amp;nbsp;?
|}

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:19 (UTC) 

[[Category:Commandes de base]]</text>
      <sha1>h19lxhsg7dy3ldlmewvxekj1yrk1jyx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1085</id>
      <parentid>1076</parentid>
      <timestamp>2010-02-11T08:46:31Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="5476">{{Stable}} &lt;categorytree mode=&quot;pages&quot; style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt; 

= Obtenir des informations  =

{| class=&quot;prettytable&quot;
|-
! &lt;center&gt;'''LISTE_DES_COMMANDES'''&lt;/center&gt; 
! &lt;center&gt;'''EFFET'''&lt;/center&gt;
|-
| $ arch 
| Affiche l'architecture de la machine. Voir ''&lt;nowiki&gt;$ uname -a&lt;/nowiki&gt;''.
|-
| $ cat /proc/cpuinfo 
| Informations sur le processeur.
|-
| $ cat /proc/interrupts 
| Informations sur l'utilisation des [[Glossaire#IRQ|IRQs]] par les périphériques.
|-
| $ cat /proc/dma 
| Informations sur l'utilisation des [[Glossaire#DMA|DMA]] par les périphériques.
|-
| $ cat /proc/ide/hda/settings 
| Informations sur le disque dur [[Glossaire#IDE|IDE]].
|-
| $ cat /proc/ioports 
| Informations sur l'utilisation des ports [[Glossaire#I.2FO|I/O]] (Input/Output) par les périphériques.
|-
| $ date 
| Affiche l'heure et la date.
|-
| $ df -h 
| Informations sur l'emplacement de montage des systèmes de fichiers (partitions utilisables pour stocker des fichiers) accessibles sur votre système et les capacités restantes sur chacun d'eux.
|-
| $ dmesg 
| less (permet de se positionner au début du tampon). Tapez&amp;nbsp;''Enter''&amp;nbsp;pour faire défiler les lignes et&amp;nbsp;''q''&amp;nbsp;pour sortir.
|-
| $ fgconsole 
| Dans quelle console suis-je&amp;nbsp;?
|-
| $ free 
| Affiche les quantités de mémoire et swap&amp;nbsp;: totales, libres et utilisées.
|-
| $ grep 
| Pour rechercher et afficher une chaîne de caractères. Exemple&amp;nbsp;:''&lt;nowiki&gt;# grep &quot;linux&quot; fichier.txt&lt;/nowiki&gt;''&amp;nbsp;affiche toutes les lignes contenant la chaîne de caractères&amp;nbsp;''linux''&amp;nbsp;dans le fichier ''fichier.txt''.
|-
| $ grep -n 
| Indique le numéro de la ligne où se trouve la chaîne de caractères.
|-
| $ /sbin/ifconfig 
| Permet d'avoir la liste des adresses [[Glossaire#IP|IP]] des interfaces réseaux (lo, ppp0, eth0, wlan...). Avec l'option -a, vous renseignera aussi sur les interfaces non actives.
|-
| $ info nom_commande 
| Appelle les pages info concernant la commande désignée.
|-
| $ last 
| Affiche les derniers reboot, boot et connexion d'utilisateurs.
|-
| $ lastlog 
| Affiche précisément la date de la dernière connexion de tous les utilisateurs du système.
|-
| $ logname 
| Sous quel login suis-je connecté&amp;nbsp;?
|-
| $ lshw 
| C'est un petit utilitaire qui permet d'extraire les informations détaillées sur le matériel. Il peut rapporter la configuration détaillée de la RAM, la configuration de la carte mère, la version du CPU et sa vitesse, la configuration du cache, la vitesse du BUS, etc. Il n'est pas installé par défaut : '''&lt;nowiki&gt;# aptitude install lshw&lt;/nowiki&gt;'''. A noter que la sortie de la commande sera plus complète si elle est lancée avec les droits &quot;root&quot;.
|-
| $ lsmod 
| Liste tous les modules chargés dans le noyau.
|-
| $ lsof /dev/dsp 
| Permet de connaître le processus qui occupe le périphérique&amp;nbsp;''/dev/dsp''.
|-
| $ lspci 
| &quot;whatis lspci&quot; lspci (8) - list all [[Glossaire#PCI|PCI]] devices. Informations sur les bus PCI du système et les périphériques PCI qui y sont rattachés ( y compris [[Glossaire#AGP|AGP]]). Commande très utile pour obtenir des renseignements sur le hardware de votre système. L'affichage de ''Unknown device'' signifie que l'ID PCI du périphérique n'a pas de nom correspondant dans la base de données de&amp;nbsp;''lspci'' (Cela ne veut pas dire que le périphérique marche, ne marche pas ou ne marchera jamais sous Linux.)
|-
| $ lsusb 
| Liste des périphériques [[Glossaire#USB|USB]] branchés.
|-
| $ man commande 
| Affiche la page de manuel de la commande indiquée, [[Glossaire#RTFM|RTFM]]&amp;nbsp;!
|-
| $ stat -c &quot;%a&quot; /fichier 
| Renvoie les droits de 'fichier' en chiffres (755)
|-
| $ stat -c &quot;%A&quot; /fichier 
| Renvoie les droits de 'fichier' en lettres (-rwx------)
|-
| $ tail -f /var/log/messages 
| Affiche les messages du noyau en direct.
|-
| $ type nom_commande 
| Indique si&amp;nbsp;''nom_commande''&amp;nbsp;est une commande shell, une commande Unix, un alias ou une fonction définie par l'utilisateur.
|-
| $ type -p nom_commande 
| Affiche l'emplacement de la commande spécifiée.
|-
| $ uname -a 
| Affiche de nombreuses informations sur le système installé sur la machine.
|-
| $ uname -m 
| Affiche le type du système installé sur la machine.
|-
| $ uname -n 
| Affiche le nom de la machine dans le système.
|-
| $ uname -r 
| Affiche le numéro de version du système.
|-
| $ uname -s 
| Affiche le nom du système.
|-
| $ uptime 
| Affiche le temps écoulé depuis le dernier démarrage.
|-
| $ vmstat 
| Affiche des informations sur la machine virtuelle.
|-
| $ w 
| Affiche la charge de votre [[Glossaire#PC|PC]]. Permet de savoir quels utilisateurs sont logués sur le système et ce qu'ils font.
|-
| $ whatis nom_commande 
| Affiche une explication en une ligne sur la commande spécifiée. Par exemple ''whatis blkid'' retournera&amp;nbsp;: ''blkid (8) - command-line utility to locate/print block device attributes''
|-
| $ whereis nom 
| Pour rechercher l'emplacement d'un exécutable, d'une source, d'une page de manuel concernant une commande.
|-
| $ which 
| Chemin d'accès à une commande donnée. Exemple&amp;nbsp;:''&lt;nowiki&gt;# which ls&lt;/nowiki&gt;''&amp;nbsp;provoquera la réponse&amp;nbsp;:&amp;nbsp;''/bin/ls''
|-
| $ whoami 
| Qui suis-je&amp;nbsp;?
|}

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:19 (UTC) 

[[Category:Commandes de base]]</text>
      <sha1>be0duyupayu62ay51tdvg4nah57vx10</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1100</id>
      <parentid>1085</parentid>
      <timestamp>2010-02-15T23:28:38Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>pager c'est mieux que cat et je vois pas pourquoi on parlerais de grep dans cette partie</comment>
      <text xml:space="preserve" bytes="5143">{{Stable}} &lt;categorytree mode=&quot;pages&quot; style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt; 

= Obtenir des informations  =

{| class=&quot;prettytable&quot;
|-
! &lt;center&gt;'''LISTE_DES_COMMANDES'''&lt;/center&gt; 
! &lt;center&gt;'''EFFET'''&lt;/center&gt;
|-
| $ arch 
| Affiche l'architecture de la machine. Voir ''&lt;nowiki&gt;$ uname -a&lt;/nowiki&gt;''.
|-
| $ pager /proc/cpuinfo 
| Informations sur le processeur.
|-
| $ pager /proc/interrupts 
| Informations sur l'utilisation des [[Glossaire#IRQ|IRQs]] par les périphériques.
|-
| $ pager /proc/dma 
| Informations sur l'utilisation des [[Glossaire#DMA|DMA]] par les périphériques.
|-
| $ pager /proc/ide/hda/settings 
| Informations sur le disque dur [[Glossaire#IDE|IDE]].
|-
| $ pager /proc/ioports 
| Informations sur l'utilisation des ports [[Glossaire#I.2FO|I/O]] (Input/Output) par les périphériques.
|-
| $ date 
| Affiche l'heure et la date.
|-
| $ df -h 
| Informations sur l'emplacement de montage des systèmes de fichiers (partitions utilisables pour stocker des fichiers) accessibles sur votre système et les capacités restantes sur chacun d'eux.
|-
| $ dmesg 
| less (permet de se positionner au début du tampon). Tapez&amp;nbsp;''Enter''&amp;nbsp;pour faire défiler les lignes et&amp;nbsp;''q''&amp;nbsp;pour sortir.
|-
| $ fgconsole 
| Dans quelle console suis-je&amp;nbsp;?
|-
| $ free 
| Affiche les quantités de mémoire et swap&amp;nbsp;: totales, libres et utilisées.
|-
| $ /sbin/ifconfig 
| Permet d'avoir la liste des adresses [[Glossaire#IP|IP]] des interfaces réseaux (lo, ppp0, eth0, wlan...). Avec l'option -a, vous renseignera aussi sur les interfaces non actives.
|-
| $ info nom_commande 
| Appelle les pages info concernant la commande désignée.
|-
| $ last 
| Affiche les derniers reboot, boot et connexion d'utilisateurs.
|-
| $ lastlog 
| Affiche précisément la date de la dernière connexion de tous les utilisateurs du système.
|-
| $ logname 
| Sous quel login suis-je connecté&amp;nbsp;?
|-
| $ lshw 
| C'est un petit utilitaire qui permet d'extraire les informations détaillées sur le matériel. Il peut rapporter la configuration détaillée de la RAM, la configuration de la carte mère, la version du CPU et sa vitesse, la configuration du cache, la vitesse du BUS, etc. Il n'est pas installé par défaut : '''&lt;nowiki&gt;# aptitude install lshw&lt;/nowiki&gt;'''. A noter que la sortie de la commande sera plus complète si elle est lancée avec les droits &quot;root&quot;.
|-
| $ lsmod 
| Liste tous les modules chargés dans le noyau.
|-
| $ lsof /dev/dsp 
| Permet de connaître le processus qui occupe le périphérique&amp;nbsp;''/dev/dsp''.
|-
| $ lspci 
| &quot;whatis lspci&quot; lspci (8) - list all [[Glossaire#PCI|PCI]] devices. Informations sur les bus PCI du système et les périphériques PCI qui y sont rattachés ( y compris [[Glossaire#AGP|AGP]]). Commande très utile pour obtenir des renseignements sur le hardware de votre système. L'affichage de ''Unknown device'' signifie que l'ID PCI du périphérique n'a pas de nom correspondant dans la base de données de&amp;nbsp;''lspci'' (Cela ne veut pas dire que le périphérique marche, ne marche pas ou ne marchera jamais sous Linux.)
|-
| $ lsusb 
| Liste des périphériques [[Glossaire#USB|USB]] branchés.
|-
| $ man commande 
| Affiche la page de manuel de la commande indiquée, [[Glossaire#RTFM|RTFM]]&amp;nbsp;!
|-
| $ stat -c &quot;%a&quot; /fichier 
| Renvoie les droits de 'fichier' en chiffres (755)
|-
| $ stat -c &quot;%A&quot; /fichier 
| Renvoie les droits de 'fichier' en lettres (-rwx------)
|-
| $ tail -f /var/log/messages 
| Affiche les messages du noyau en direct.
|-
| $ type nom_commande 
| Indique si&amp;nbsp;''nom_commande''&amp;nbsp;est une commande shell, une commande Unix, un alias ou une fonction définie par l'utilisateur.
|-
| $ type -p nom_commande 
| Affiche l'emplacement de la commande spécifiée.
|-
| $ uname -a 
| Affiche de nombreuses informations sur le système installé sur la machine.
|-
| $ uname -m 
| Affiche le type du système installé sur la machine.
|-
| $ uname -n 
| Affiche le nom de la machine dans le système.
|-
| $ uname -r 
| Affiche le numéro de version du système.
|-
| $ uname -s 
| Affiche le nom du système.
|-
| $ uptime 
| Affiche le temps écoulé depuis le dernier démarrage.
|-
| $ vmstat 
| Affiche des informations sur la machine virtuelle.
|-
| $ w 
| Affiche la charge de votre [[Glossaire#PC|PC]]. Permet de savoir quels utilisateurs sont logués sur le système et ce qu'ils font.
|-
| $ whatis nom_commande 
| Affiche une explication en une ligne sur la commande spécifiée. Par exemple ''whatis blkid'' retournera&amp;nbsp;: ''blkid (8) - command-line utility to locate/print block device attributes''
|-
| $ whereis nom 
| Pour rechercher l'emplacement d'un exécutable, d'une source, d'une page de manuel concernant une commande.
|-
| $ which 
| Chemin d'accès à une commande donnée. Exemple&amp;nbsp;:''&lt;nowiki&gt;# which ls&lt;/nowiki&gt;''&amp;nbsp;provoquera la réponse&amp;nbsp;:&amp;nbsp;''/bin/ls''
|-
| $ whoami 
| Qui suis-je&amp;nbsp;?
|}

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:19 (UTC) 

[[Category:Commandes de base]]</text>
      <sha1>jxwe26lsrmb7rg9u1d2me72cnnsmr5l</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1103</id>
      <parentid>1100</parentid>
      <timestamp>2010-02-18T12:21:58Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>Réorganisation pour garder l'ordre alphabétique</comment>
      <text xml:space="preserve" bytes="5143">{{Stable}} &lt;categorytree mode=&quot;pages&quot; style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt; 

= Obtenir des informations  =

{| class=&quot;prettytable&quot;
|-
! &lt;center&gt;'''LISTE_DES_COMMANDES'''&lt;/center&gt; 
! &lt;center&gt;'''EFFET'''&lt;/center&gt;
|-
| $ arch 
| Affiche l'architecture de la machine. Voir ''&lt;nowiki&gt;$ uname -a&lt;/nowiki&gt;''.
|-
| $ date 
| Affiche l'heure et la date.
|-
| $ df -h 
| Informations sur l'emplacement de montage des systèmes de fichiers (partitions utilisables pour stocker des fichiers) accessibles sur votre système et les capacités restantes sur chacun d'eux.
|-
| $ dmesg 
| less (permet de se positionner au début du tampon). Tapez&amp;nbsp;''Enter''&amp;nbsp;pour faire défiler les lignes et&amp;nbsp;''q''&amp;nbsp;pour sortir.
|-
| $ fgconsole 
| Dans quelle console suis-je&amp;nbsp;?
|-
| $ free 
| Affiche les quantités de mémoire et swap&amp;nbsp;: totales, libres et utilisées.
|-
| $ /sbin/ifconfig 
| Permet d'avoir la liste des adresses [[Glossaire#IP|IP]] des interfaces réseaux (lo, ppp0, eth0, wlan...). Avec l'option -a, vous renseignera aussi sur les interfaces non actives.
|-
| $ info nom_commande 
| Appelle les pages info concernant la commande désignée.
|-
| $ last 
| Affiche les derniers reboot, boot et connexion d'utilisateurs.
|-
| $ lastlog 
| Affiche précisément la date de la dernière connexion de tous les utilisateurs du système.
|-
| $ logname 
| Sous quel login suis-je connecté&amp;nbsp;?
|-
| $ lshw 
| C'est un petit utilitaire qui permet d'extraire les informations détaillées sur le matériel. Il peut rapporter la configuration détaillée de la RAM, la configuration de la carte mère, la version du CPU et sa vitesse, la configuration du cache, la vitesse du BUS, etc. Il n'est pas installé par défaut : '''&lt;nowiki&gt;# aptitude install lshw&lt;/nowiki&gt;'''. A noter que la sortie de la commande sera plus complète si elle est lancée avec les droits &quot;root&quot;.
|-
| $ lsmod 
| Liste tous les modules chargés dans le noyau.
|-
| $ lsof /dev/dsp 
| Permet de connaître le processus qui occupe le périphérique&amp;nbsp;''/dev/dsp''.
|-
| $ lspci 
| &quot;whatis lspci&quot; lspci (8) - list all [[Glossaire#PCI|PCI]] devices. Informations sur les bus PCI du système et les périphériques PCI qui y sont rattachés ( y compris [[Glossaire#AGP|AGP]]). Commande très utile pour obtenir des renseignements sur le hardware de votre système. L'affichage de ''Unknown device'' signifie que l'ID PCI du périphérique n'a pas de nom correspondant dans la base de données de&amp;nbsp;''lspci'' (Cela ne veut pas dire que le périphérique marche, ne marche pas ou ne marchera jamais sous Linux.)
|-
| $ lsusb 
| Liste des périphériques [[Glossaire#USB|USB]] branchés.
|-
| $ man commande 
| Affiche la page de manuel de la commande indiquée, [[Glossaire#RTFM|RTFM]]&amp;nbsp;!
|-
| $ pager /proc/cpuinfo 
| Informations sur le processeur.
|-
| $ pager /proc/interrupts 
| Informations sur l'utilisation des [[Glossaire#IRQ|IRQs]] par les périphériques.
|-
| $ pager /proc/dma 
| Informations sur l'utilisation des [[Glossaire#DMA|DMA]] par les périphériques.
|-
| $ pager /proc/ide/hda/settings 
| Informations sur le disque dur [[Glossaire#IDE|IDE]].
|-
| $ pager /proc/ioports 
| Informations sur l'utilisation des ports [[Glossaire#I.2FO|I/O]] (Input/Output) par les périphériques.
|-
| $ stat -c &quot;%a&quot; /fichier 
| Renvoie les droits de 'fichier' en chiffres (755)
|-
| $ stat -c &quot;%A&quot; /fichier 
| Renvoie les droits de 'fichier' en lettres (-rwx------)
|-
| $ tail -f /var/log/messages 
| Affiche les messages du noyau en direct.
|-
| $ type nom_commande 
| Indique si&amp;nbsp;''nom_commande''&amp;nbsp;est une commande shell, une commande Unix, un alias ou une fonction définie par l'utilisateur.
|-
| $ type -p nom_commande 
| Affiche l'emplacement de la commande spécifiée.
|-
| $ uname -a 
| Affiche de nombreuses informations sur le système installé sur la machine.
|-
| $ uname -m 
| Affiche le type du système installé sur la machine.
|-
| $ uname -n 
| Affiche le nom de la machine dans le système.
|-
| $ uname -r 
| Affiche le numéro de version du système.
|-
| $ uname -s 
| Affiche le nom du système.
|-
| $ uptime 
| Affiche le temps écoulé depuis le dernier démarrage.
|-
| $ vmstat 
| Affiche des informations sur la machine virtuelle.
|-
| $ w 
| Affiche la charge de votre [[Glossaire#PC|PC]]. Permet de savoir quels utilisateurs sont logués sur le système et ce qu'ils font.
|-
| $ whatis nom_commande 
| Affiche une explication en une ligne sur la commande spécifiée. Par exemple ''whatis blkid'' retournera&amp;nbsp;: ''blkid (8) - command-line utility to locate/print block device attributes''
|-
| $ whereis nom 
| Pour rechercher l'emplacement d'un exécutable, d'une source, d'une page de manuel concernant une commande.
|-
| $ which 
| Chemin d'accès à une commande donnée. Exemple&amp;nbsp;:''&lt;nowiki&gt;# which ls&lt;/nowiki&gt;''&amp;nbsp;provoquera la réponse&amp;nbsp;:&amp;nbsp;''/bin/ls''
|-
| $ whoami 
| Qui suis-je&amp;nbsp;?
|}

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:19 (UTC) 

[[Category:Commandes de base]]</text>
      <sha1>kggnkdzs3qumeubr195w3n2rdm0askv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1603</id>
      <parentid>1103</parentid>
      <timestamp>2010-07-05T07:51:22Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="5186">#REDIRECT [[isalo:Commandes_informations]]
{{Stable}} &lt;categorytree mode=&quot;pages&quot; style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt; 

= Obtenir des informations  =

{| class=&quot;prettytable&quot;
|-
! &lt;center&gt;'''LISTE_DES_COMMANDES'''&lt;/center&gt; 
! &lt;center&gt;'''EFFET'''&lt;/center&gt;
|-
| $ arch 
| Affiche l'architecture de la machine. Voir ''&lt;nowiki&gt;$ uname -a&lt;/nowiki&gt;''.
|-
| $ date 
| Affiche l'heure et la date.
|-
| $ df -h 
| Informations sur l'emplacement de montage des systèmes de fichiers (partitions utilisables pour stocker des fichiers) accessibles sur votre système et les capacités restantes sur chacun d'eux.
|-
| $ dmesg 
| less (permet de se positionner au début du tampon). Tapez&amp;nbsp;''Enter''&amp;nbsp;pour faire défiler les lignes et&amp;nbsp;''q''&amp;nbsp;pour sortir.
|-
| $ fgconsole 
| Dans quelle console suis-je&amp;nbsp;?
|-
| $ free 
| Affiche les quantités de mémoire et swap&amp;nbsp;: totales, libres et utilisées.
|-
| $ /sbin/ifconfig 
| Permet d'avoir la liste des adresses [[Glossaire#IP|IP]] des interfaces réseaux (lo, ppp0, eth0, wlan...). Avec l'option -a, vous renseignera aussi sur les interfaces non actives.
|-
| $ info nom_commande 
| Appelle les pages info concernant la commande désignée.
|-
| $ last 
| Affiche les derniers reboot, boot et connexion d'utilisateurs.
|-
| $ lastlog 
| Affiche précisément la date de la dernière connexion de tous les utilisateurs du système.
|-
| $ logname 
| Sous quel login suis-je connecté&amp;nbsp;?
|-
| $ lshw 
| C'est un petit utilitaire qui permet d'extraire les informations détaillées sur le matériel. Il peut rapporter la configuration détaillée de la RAM, la configuration de la carte mère, la version du CPU et sa vitesse, la configuration du cache, la vitesse du BUS, etc. Il n'est pas installé par défaut : '''&lt;nowiki&gt;# aptitude install lshw&lt;/nowiki&gt;'''. A noter que la sortie de la commande sera plus complète si elle est lancée avec les droits &quot;root&quot;.
|-
| $ lsmod 
| Liste tous les modules chargés dans le noyau.
|-
| $ lsof /dev/dsp 
| Permet de connaître le processus qui occupe le périphérique&amp;nbsp;''/dev/dsp''.
|-
| $ lspci 
| &quot;whatis lspci&quot; lspci (8) - list all [[Glossaire#PCI|PCI]] devices. Informations sur les bus PCI du système et les périphériques PCI qui y sont rattachés ( y compris [[Glossaire#AGP|AGP]]). Commande très utile pour obtenir des renseignements sur le hardware de votre système. L'affichage de ''Unknown device'' signifie que l'ID PCI du périphérique n'a pas de nom correspondant dans la base de données de&amp;nbsp;''lspci'' (Cela ne veut pas dire que le périphérique marche, ne marche pas ou ne marchera jamais sous Linux.)
|-
| $ lsusb 
| Liste des périphériques [[Glossaire#USB|USB]] branchés.
|-
| $ man commande 
| Affiche la page de manuel de la commande indiquée, [[Glossaire#RTFM|RTFM]]&amp;nbsp;!
|-
| $ pager /proc/cpuinfo 
| Informations sur le processeur.
|-
| $ pager /proc/interrupts 
| Informations sur l'utilisation des [[Glossaire#IRQ|IRQs]] par les périphériques.
|-
| $ pager /proc/dma 
| Informations sur l'utilisation des [[Glossaire#DMA|DMA]] par les périphériques.
|-
| $ pager /proc/ide/hda/settings 
| Informations sur le disque dur [[Glossaire#IDE|IDE]].
|-
| $ pager /proc/ioports 
| Informations sur l'utilisation des ports [[Glossaire#I.2FO|I/O]] (Input/Output) par les périphériques.
|-
| $ stat -c &quot;%a&quot; /fichier 
| Renvoie les droits de 'fichier' en chiffres (755)
|-
| $ stat -c &quot;%A&quot; /fichier 
| Renvoie les droits de 'fichier' en lettres (-rwx------)
|-
| $ tail -f /var/log/messages 
| Affiche les messages du noyau en direct.
|-
| $ type nom_commande 
| Indique si&amp;nbsp;''nom_commande''&amp;nbsp;est une commande shell, une commande Unix, un alias ou une fonction définie par l'utilisateur.
|-
| $ type -p nom_commande 
| Affiche l'emplacement de la commande spécifiée.
|-
| $ uname -a 
| Affiche de nombreuses informations sur le système installé sur la machine.
|-
| $ uname -m 
| Affiche le type du système installé sur la machine.
|-
| $ uname -n 
| Affiche le nom de la machine dans le système.
|-
| $ uname -r 
| Affiche le numéro de version du système.
|-
| $ uname -s 
| Affiche le nom du système.
|-
| $ uptime 
| Affiche le temps écoulé depuis le dernier démarrage.
|-
| $ vmstat 
| Affiche des informations sur la machine virtuelle.
|-
| $ w 
| Affiche la charge de votre [[Glossaire#PC|PC]]. Permet de savoir quels utilisateurs sont logués sur le système et ce qu'ils font.
|-
| $ whatis nom_commande 
| Affiche une explication en une ligne sur la commande spécifiée. Par exemple ''whatis blkid'' retournera&amp;nbsp;: ''blkid (8) - command-line utility to locate/print block device attributes''
|-
| $ whereis nom 
| Pour rechercher l'emplacement d'un exécutable, d'une source, d'une page de manuel concernant une commande.
|-
| $ which 
| Chemin d'accès à une commande donnée. Exemple&amp;nbsp;:''&lt;nowiki&gt;# which ls&lt;/nowiki&gt;''&amp;nbsp;provoquera la réponse&amp;nbsp;:&amp;nbsp;''/bin/ls''
|-
| $ whoami 
| Qui suis-je&amp;nbsp;?
|}

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:19 (UTC) 

[[Category:Commandes de base]]</text>
      <sha1>fokeihzsm3la0w2xk95sopimicitmmm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1651</id>
      <parentid>1603</parentid>
      <timestamp>2010-07-06T09:17:45Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Annulation des modifications 1603 de [[Special:Contributions/Lol|Lol]] ([[User talk:Lol|discussion]])</comment>
      <text xml:space="preserve" bytes="5143">{{Stable}} &lt;categorytree mode=&quot;pages&quot; style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt; 

= Obtenir des informations  =

{| class=&quot;prettytable&quot;
|-
! &lt;center&gt;'''LISTE_DES_COMMANDES'''&lt;/center&gt; 
! &lt;center&gt;'''EFFET'''&lt;/center&gt;
|-
| $ arch 
| Affiche l'architecture de la machine. Voir ''&lt;nowiki&gt;$ uname -a&lt;/nowiki&gt;''.
|-
| $ date 
| Affiche l'heure et la date.
|-
| $ df -h 
| Informations sur l'emplacement de montage des systèmes de fichiers (partitions utilisables pour stocker des fichiers) accessibles sur votre système et les capacités restantes sur chacun d'eux.
|-
| $ dmesg 
| less (permet de se positionner au début du tampon). Tapez&amp;nbsp;''Enter''&amp;nbsp;pour faire défiler les lignes et&amp;nbsp;''q''&amp;nbsp;pour sortir.
|-
| $ fgconsole 
| Dans quelle console suis-je&amp;nbsp;?
|-
| $ free 
| Affiche les quantités de mémoire et swap&amp;nbsp;: totales, libres et utilisées.
|-
| $ /sbin/ifconfig 
| Permet d'avoir la liste des adresses [[Glossaire#IP|IP]] des interfaces réseaux (lo, ppp0, eth0, wlan...). Avec l'option -a, vous renseignera aussi sur les interfaces non actives.
|-
| $ info nom_commande 
| Appelle les pages info concernant la commande désignée.
|-
| $ last 
| Affiche les derniers reboot, boot et connexion d'utilisateurs.
|-
| $ lastlog 
| Affiche précisément la date de la dernière connexion de tous les utilisateurs du système.
|-
| $ logname 
| Sous quel login suis-je connecté&amp;nbsp;?
|-
| $ lshw 
| C'est un petit utilitaire qui permet d'extraire les informations détaillées sur le matériel. Il peut rapporter la configuration détaillée de la RAM, la configuration de la carte mère, la version du CPU et sa vitesse, la configuration du cache, la vitesse du BUS, etc. Il n'est pas installé par défaut : '''&lt;nowiki&gt;# aptitude install lshw&lt;/nowiki&gt;'''. A noter que la sortie de la commande sera plus complète si elle est lancée avec les droits &quot;root&quot;.
|-
| $ lsmod 
| Liste tous les modules chargés dans le noyau.
|-
| $ lsof /dev/dsp 
| Permet de connaître le processus qui occupe le périphérique&amp;nbsp;''/dev/dsp''.
|-
| $ lspci 
| &quot;whatis lspci&quot; lspci (8) - list all [[Glossaire#PCI|PCI]] devices. Informations sur les bus PCI du système et les périphériques PCI qui y sont rattachés ( y compris [[Glossaire#AGP|AGP]]). Commande très utile pour obtenir des renseignements sur le hardware de votre système. L'affichage de ''Unknown device'' signifie que l'ID PCI du périphérique n'a pas de nom correspondant dans la base de données de&amp;nbsp;''lspci'' (Cela ne veut pas dire que le périphérique marche, ne marche pas ou ne marchera jamais sous Linux.)
|-
| $ lsusb 
| Liste des périphériques [[Glossaire#USB|USB]] branchés.
|-
| $ man commande 
| Affiche la page de manuel de la commande indiquée, [[Glossaire#RTFM|RTFM]]&amp;nbsp;!
|-
| $ pager /proc/cpuinfo 
| Informations sur le processeur.
|-
| $ pager /proc/interrupts 
| Informations sur l'utilisation des [[Glossaire#IRQ|IRQs]] par les périphériques.
|-
| $ pager /proc/dma 
| Informations sur l'utilisation des [[Glossaire#DMA|DMA]] par les périphériques.
|-
| $ pager /proc/ide/hda/settings 
| Informations sur le disque dur [[Glossaire#IDE|IDE]].
|-
| $ pager /proc/ioports 
| Informations sur l'utilisation des ports [[Glossaire#I.2FO|I/O]] (Input/Output) par les périphériques.
|-
| $ stat -c &quot;%a&quot; /fichier 
| Renvoie les droits de 'fichier' en chiffres (755)
|-
| $ stat -c &quot;%A&quot; /fichier 
| Renvoie les droits de 'fichier' en lettres (-rwx------)
|-
| $ tail -f /var/log/messages 
| Affiche les messages du noyau en direct.
|-
| $ type nom_commande 
| Indique si&amp;nbsp;''nom_commande''&amp;nbsp;est une commande shell, une commande Unix, un alias ou une fonction définie par l'utilisateur.
|-
| $ type -p nom_commande 
| Affiche l'emplacement de la commande spécifiée.
|-
| $ uname -a 
| Affiche de nombreuses informations sur le système installé sur la machine.
|-
| $ uname -m 
| Affiche le type du système installé sur la machine.
|-
| $ uname -n 
| Affiche le nom de la machine dans le système.
|-
| $ uname -r 
| Affiche le numéro de version du système.
|-
| $ uname -s 
| Affiche le nom du système.
|-
| $ uptime 
| Affiche le temps écoulé depuis le dernier démarrage.
|-
| $ vmstat 
| Affiche des informations sur la machine virtuelle.
|-
| $ w 
| Affiche la charge de votre [[Glossaire#PC|PC]]. Permet de savoir quels utilisateurs sont logués sur le système et ce qu'ils font.
|-
| $ whatis nom_commande 
| Affiche une explication en une ligne sur la commande spécifiée. Par exemple ''whatis blkid'' retournera&amp;nbsp;: ''blkid (8) - command-line utility to locate/print block device attributes''
|-
| $ whereis nom 
| Pour rechercher l'emplacement d'un exécutable, d'une source, d'une page de manuel concernant une commande.
|-
| $ which 
| Chemin d'accès à une commande donnée. Exemple&amp;nbsp;:''&lt;nowiki&gt;# which ls&lt;/nowiki&gt;''&amp;nbsp;provoquera la réponse&amp;nbsp;:&amp;nbsp;''/bin/ls''
|-
| $ whoami 
| Qui suis-je&amp;nbsp;?
|}

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:19 (UTC) 

[[Category:Commandes de base]]</text>
      <sha1>kggnkdzs3qumeubr195w3n2rdm0askv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4103</id>
      <parentid>1651</parentid>
      <timestamp>2012-04-28T08:45:15Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="5174">{{Stable}} &lt;categorytree mode=&quot;pages&quot; style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt; 

= Obtenir des informations  =

{| class=&quot;prettytable&quot;
|-
! &lt;center&gt;'''LISTE_DES_COMMANDES'''&lt;/center&gt; 
! &lt;center&gt;'''EFFET'''&lt;/center&gt;
|-
| $ arch 
| Affiche l'architecture de la machine. Voir ''&lt;nowiki&gt;$ uname -a&lt;/nowiki&gt;''.
|-
| $ date 
| Affiche l'heure et la date.
|-
| $ df -h 
| Informations sur l'emplacement de montage des systèmes de fichiers (partitions utilisables pour stocker des fichiers) accessibles sur votre système et les capacités restantes sur chacun d'eux.
|-
| $ dmesg 
| less (permet de se positionner au début du tampon). Tapez&amp;nbsp;''Enter''&amp;nbsp;pour faire défiler les lignes et&amp;nbsp;''q''&amp;nbsp;pour sortir.
|-
| $ fgconsole 
| Dans quelle console suis-je&amp;nbsp;?
|-
| $ free 
| Affiche les quantités de mémoire et swap&amp;nbsp;: totales, libres et utilisées.
|-
| $ /sbin/ifconfig 
| Permet d'avoir la liste des adresses [[Glossaire#IP|IP]] des interfaces réseaux (lo, ppp0, eth0, wlan...). Avec l'option -a, vous renseignera aussi sur les interfaces non actives.
|-
| $ info nom_commande 
| Appelle les pages info concernant la commande désignée.
|-
| $ last 
| Affiche les derniers reboot, boot et connexion d'utilisateurs.
|-
| $ lastlog 
| Affiche précisément la date de la dernière connexion de tous les utilisateurs du système.
|-
| $ logname 
| Sous quel login suis-je connecté&amp;nbsp;?
|-
| $ lshw 
| C'est un petit utilitaire qui permet d'extraire les informations détaillées sur le matériel. Il peut rapporter la configuration détaillée de la RAM, la configuration de la carte mère, la version du CPU et sa vitesse, la configuration du cache, la vitesse du BUS, etc. Il n'est pas installé par défaut : '''&lt;nowiki&gt;# aptitude install lshw&lt;/nowiki&gt;'''. A noter que la sortie de la commande sera plus complète si elle est lancée avec les droits &quot;root&quot;.
|-
| $ lsmod 
| Liste tous les modules chargés dans le noyau.
|-
| $ lsof /dev/dsp 
| Permet de connaître le processus qui occupe le périphérique&amp;nbsp;''/dev/dsp''.
|-
| $ lspci 
| &quot;whatis lspci&quot; lspci (8) - list all [[Glossaire#PCI|PCI]] devices. Informations sur les bus PCI du système et les périphériques PCI qui y sont rattachés ( y compris [[Glossaire#AGP|AGP]]). Commande très utile pour obtenir des renseignements sur le hardware de votre système. L'affichage de ''Unknown device'' signifie que l'ID PCI du périphérique n'a pas de nom correspondant dans la base de données de&amp;nbsp;''lspci'' (Cela ne veut pas dire que le périphérique marche, ne marche pas ou ne marchera jamais sous Linux.)
|-
| $ lsusb 
| Liste des périphériques [[Glossaire#USB|USB]] branchés.
|-
| $ man commande 
| Affiche la page de manuel de la commande indiquée, [[Glossaire#RTFM|RTFM]]&amp;nbsp;!
|-
| $ pager /proc/cpuinfo 
| Informations sur le processeur.
|-
| $ pager /proc/interrupts 
| Informations sur l'utilisation des [[Glossaire#IRQ|IRQs]] par les périphériques.
|-
| $ pager /proc/dma 
| Informations sur l'utilisation des [[Glossaire#DMA|DMA]] par les périphériques.
|-
| $ pager /proc/ide/hda/settings 
| Informations sur le disque dur [[Glossaire#IDE|IDE]].
|-
| $ pager /proc/ioports 
| Informations sur l'utilisation des ports [[Glossaire#I.2FO|I/O]] (Input/Output) par les périphériques.
|-
| $ stat -c &quot;%a&quot; /fichier 
| Renvoie les droits de 'fichier' en chiffres (755)
|-
| $ stat -c &quot;%A&quot; /fichier 
| Renvoie les droits de 'fichier' en lettres (-rwx------)
|-
| $ tail -f /var/log/messages 
| Affiche les messages du noyau en direct.
|-
| $ type nom_commande 
| Indique si&amp;nbsp;''nom_commande''&amp;nbsp;est une commande shell, une commande Unix, un alias ou une fonction définie par l'utilisateur.
|-
| $ type -p nom_commande 
| Affiche l'emplacement de la commande spécifiée.
|-
| $ uname -a 
| Affiche de nombreuses informations sur le système installé sur la machine.
|-
| $ uname -m 
| Affiche le type du système installé sur la machine.
|-
| $ uname -n 
| Affiche le nom de la machine dans le système.
|-
| $ uname -r 
| Affiche le numéro de version du système.
|-
| $ uname -s 
| Affiche le nom du système.
|-
| $ uptime 
| Affiche le temps écoulé depuis le dernier démarrage.
|-
| $ vmstat 
| Affiche des informations sur la machine virtuelle.
|-
| $ w 
| Affiche la charge de votre [[Glossaire#PC|PC]]. Permet de savoir quels utilisateurs sont logués sur le système et ce qu'ils font.
|-
| $ whatis nom_commande 
| Affiche une explication en une ligne sur la commande spécifiée. Par exemple ''whatis blkid'' retournera&amp;nbsp;: ''blkid (8) - command-line utility to locate/print block device attributes''
|-
| $ whereis nom 
| Pour rechercher l'emplacement d'un exécutable, d'une source, d'une page de manuel concernant une commande.
|-
| $ which 
| Chemin d'accès à une commande donnée. Exemple&amp;nbsp;:''&lt;nowiki&gt;# which ls&lt;/nowiki&gt;''&amp;nbsp;provoquera la réponse&amp;nbsp;:&amp;nbsp;''/bin/ls''
|-
| $ whoami 
| Qui suis-je&amp;nbsp;?
|}

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:19 (UTC) 

[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>qpo20j1u3kk65yzniv36290sobvbsov</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Commandes utilisateurs et groupes</title>
    <ns>0</ns>
    <id>206</id>
    <revision>
      <id>763</id>
      <timestamp>2010-02-02T17:17:24Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « {{sid}}   ----  {{Ébauche|La gestion des fichiers}}   Les commandes d'utilisateurs et de groupes  == adduser ==  Ajouter un utilisateur.  Ajouter l'utilisateur ''toto'' au s… »</comment>
      <text xml:space="preserve" bytes="3463">{{sid}} 

----

{{Ébauche|La gestion des fichiers}}


Les commandes d'utilisateurs et de groupes

== adduser ==

Ajouter un utilisateur.

Ajouter l'utilisateur ''toto'' au système. Un mot de passe sera demandé pour ce nouvel utilisateur ainsi que quelques informations
 # adduser toto

Ajouter l'utilisateur toto au groupe &quot;audio&quot;
 # adduser toto audio

== chgrp ==

Change l'appartenance d'un fichier à un groupe. On ne peut donner l'appartenance de groupe à un fichier qu'à un groupe dont on est membre... L'administarteur peut donc affecter un fichier à n'importe quel groupe.

Donner le groupe &quot;audio&quot; au fichier &quot;fichier&quot;
 $ chgrp audio fichier

Changer récursivement l'appartenance à un groupe. Le dossier et les fichiers contenus dans ce dossier changerons de groupe.
 $ chgrp -R audio /home/toto/dossier


== chmod ==

Changement des bits de comportement d'un (ou plusieurs fichiers); Il est utilisé pour changer les droits sur un fichier.

Donner le droit en lécture/écriture au propriétaire et lecture au groupe :
 $ chmod 640 fichier

chmod peut s'utiliser avec des chiffres ou des lettres


 Droit 	                                    Valeur alphanumérique  Valeur octale
 aucun droit 	                                   --- 	                0
 exécution seulement 	                           --x 	                1
 écriture seulement 	                           -w- 	                2
 ecriture et exécution 	                           -wx 	                3
 lecture seulement 	                           r-- 	                4
 lecture et exécution 	                           r-x 	                5
 lecture et écriture 	                           rw- 	                6
 tous les droits (lecture, écriture et exécution)   rwx          	7


== chown ==

Changer le propriétaire et/ou le groupe d'un fichier

Changer le propriétaire d'un fichier
 $ chown toto fichier

Changer le groupe d'un fichier (équivalent à chgrp)
 $ chown :toto fichier

Changer le propriétaire et le goupe d'un fichier
 $ chown toto:audio fichier

Comme d'habitude l'option -R permet d traitre récursivement la commande. Changer l'appartenance d'un dossier et de tous les fichiers qu'il contient :

 $ chown -R toto:audio /home/toto/repertoire


== deluser ==

Supprimer un utilisateur, ou retirer un utilisateur d'un groupe.

Supprimer l'utilisateur toto (son répertoire n'est pas supprimé)
 # deluser toto

 # del user toto audio

== gpasswd ==

Gestion des propriétés de groupes. (fichiers /etc/group et /etc/gshadow)
Chaque groupe peut avoir un administrateur, des membres et un mot de passe

A COMPLéTER...

== groupadd ==

Création de groupe avec les options de la commande plus celles par défaut du système.

 # grouppadd toto

== groupdel ==

Supprimer un groupe

 # groupdel toto

== groupmod ==

Modification des propriétés d'un groupe.
Les options sont modification de l'ID, du mot de passe, du nom du groupe, 

A COMPLéTER..

== id ==
Permet de savoir quel numéro - uid (comme user id) et quel numéro de groupe sont associés à utilisateur. Exemple

 $ id toto
 uid=1000(toto) gid=1000(toto) groupes=1000(toto),20(dialout),24(cdrom),25(floppy),29(audio),44(video),46(plugdev),110(netdev)

== passwd ==

Changement du mot de passe. Ou, en root, changer le mot de passe d'un utilisateur (l'ancien mot de passe est alors demandé)
 $ passwd
 # passwd toto

A Compléter

useradd

userdel

usermod

[[Catégorie:commandes]]</text>
      <sha1>k6yayr8iawczfvyr8lk1uahe89vdubs</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>767</id>
      <parentid>763</parentid>
      <timestamp>2010-02-02T18:10:11Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3463">{{sid}} 

----

{{Ébauche|La gestion des fichiers}}


Les commandes d'utilisateurs et de groupes

== adduser ==

Ajouter un utilisateur.

Ajouter l'utilisateur ''toto'' au système. Un mot de passe sera demandé pour ce nouvel utilisateur ainsi que quelques informations
 # adduser toto

Ajouter l'utilisateur toto au groupe &quot;audio&quot;
 # adduser toto audio

== chgrp ==

Change l'appartenance d'un fichier à un groupe. On ne peut donner l'appartenance de groupe à un fichier qu'à un groupe dont on est membre... L'administrateur peut donc affecter un fichier à n'importe quel groupe.

Donner le groupe &quot;audio&quot; au fichier &quot;fichier&quot;
 $ chgrp audio fichier

Changer récursivement l'appartenance à un groupe. Le dossier et les fichiers contenus dans ce dossier changerons de groupe.
 $ chgrp -R audio /home/toto/dossier


== chmod ==

Changement des bits de comportement d'un (ou plusieurs fichiers); Il est utilisé pour changer les droits sur un fichier.

Donner le droit en lecture/écriture au propriétaire et lecture au groupe :
 $ chmod 640 fichier

chmod peut s'utiliser avec des chiffres ou des lettres


 Droit 	                                    Valeur alphanumérique  Valeur octale
 aucun droit 	                                   --- 	                0
 exécution seulement 	                           --x 	                1
 écriture seulement 	                           -w- 	                2
 écriture et exécution 	                           -wx 	                3
 lecture seulement 	                           r-- 	                4
 lecture et exécution 	                           r-x 	                5
 lecture et écriture 	                           rw- 	                6
 tous les droits (lecture, écriture et exécution)   rwx          	7


== chown ==

Changer le propriétaire et/ou le groupe d'un fichier

Changer le propriétaire d'un fichier
 $ chown toto fichier

Changer le groupe d'un fichier (équivalent à chgrp)
 $ chown :toto fichier

Changer le propriétaire et le goupe d'un fichier
 $ chown toto:audio fichier

Comme d'habitude l'option -R permet d traitre récursivement la commande. Changer l'appartenance d'un dossier et de tous les fichiers qu'il contient :

 $ chown -R toto:audio /home/toto/repertoire


== deluser ==

Supprimer un utilisateur, ou retirer un utilisateur d'un groupe.

Supprimer l'utilisateur toto (son répertoire n'est pas supprimé)
 # deluser toto

 # del user toto audio

== gpasswd ==

Gestion des propriétés de groupes. (fichiers /etc/group et /etc/gshadow)
Chaque groupe peut avoir un administrateur, des membres et un mot de passe

A COMPLÉTER...

== groupadd ==

Création de groupe avec les options de la commande plus celles par défaut du système.

 # grouppadd toto

== groupdel ==

Supprimer un groupe

 # groupdel toto

== groupmod ==

Modification des propriétés d'un groupe.
Les options sont modification de l'ID, du mot de passe, du nom du groupe, 

A COMPLÉTER..

== id ==
Permet de savoir quel numéro - uid (comme user id) et quel numéro de groupe sont associés à utilisateur. Exemple

 $ id toto
 uid=1000(toto) gid=1000(toto) groupes=1000(toto),20(dialout),24(cdrom),25(floppy),29(audio),44(video),46(plugdev),110(netdev)

== passwd ==

Changement du mot de passe. Ou, en root, changer le mot de passe d'un utilisateur (l'ancien mot de passe est alors demandé)
 $ passwd
 # passwd toto

A Compléter

useradd

userdel

usermod

[[Catégorie:commandes]]</text>
      <sha1>o5hdyh2cdbqozsnmlzey17x2r0z7ztf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>804</id>
      <parentid>767</parentid>
      <timestamp>2010-02-03T14:46:11Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="4690">{{sid}} 

----

{{Ébauche|La gestion des fichiers}}


Les commandes d'utilisateurs et de groupes

== adduser ==

Ajouter un utilisateur.

Ajouter l'utilisateur ''toto'' au système. Un mot de passe sera demandé pour ce nouvel utilisateur ainsi que quelques informations
 # adduser toto

Ajouter l'utilisateur toto au groupe &quot;audio&quot;
 # adduser toto audio

== chgrp ==

Change l'appartenance d'un fichier à un groupe. On ne peut donner l'appartenance de groupe à un fichier qu'à un groupe dont on est membre... L'administrateur peut donc affecter un fichier à n'importe quel groupe.

Donner le groupe &quot;audio&quot; au fichier &quot;fichier&quot;
 $ chgrp audio fichier

Changer récursivement l'appartenance à un groupe. Le dossier et les fichiers contenus dans ce dossier changerons de groupe.
 $ chgrp -R audio /home/toto/dossier


== chmod ==

Changement des bits de comportement d'un (ou plusieurs fichiers); Il est utilisé pour changer les droits sur un fichier.

Donner le droit en lecture/écriture au propriétaire et lecture au groupe :
 $ chmod 640 fichier

chmod peut s'utiliser avec des chiffres ou des lettres


 Droit 	                                    Valeur alphanumérique  Valeur octale
 aucun droit 	                                   --- 	                0
 exécution seulement 	                           --x 	                1
 écriture seulement 	                           -w- 	                2
 écriture et exécution 	                           -wx 	                3
 lecture seulement 	                           r-- 	                4
 lecture et exécution 	                           r-x 	                5
 lecture et écriture 	                           rw- 	                6
 tous les droits (lecture, écriture et exécution)   rwx          	7


== chown ==

Changer le propriétaire et/ou le groupe d'un fichier

Changer le propriétaire d'un fichier
 $ chown toto fichier

Changer le groupe d'un fichier (équivalent à chgrp)
 $ chown :toto fichier

Changer le propriétaire et le goupe d'un fichier
 $ chown toto:audio fichier

Comme d'habitude l'option -R permet d traitre récursivement la commande. Changer l'appartenance d'un dossier et de tous les fichiers qu'il contient :

 $ chown -R toto:audio /home/toto/repertoire


== deluser ==

Supprimer un utilisateur, ou retirer un utilisateur d'un groupe.

Supprimer l'utilisateur toto (son répertoire n'est pas supprimé)
 # deluser toto

 # del user toto audio

== gpasswd ==

gpasswd est utilisé pour administrer le fichier /etc/group ainsi que le fichier /etc/gshadow.

Chaque groupe peut avoir un administrateur, des membres et un mot de passe. Les administrateurs systèmes possèdent les droits d'administrateur de groupe et de membre, il peuvent utiliser l'option -A pour définir le(s) administrateur(s) de groupe et l'option -M pour en définir les membres
Un administrateur de groupe peut ajouter ou supprimer des utilisateurs en utilisant respectivement les options -a et -d . Les administrateurs peuvent utiliser l'option -r pour supprimer le mot de passe d'un groupe.

Ajouter un administrateur à un groupe :
 #  gpasswd -a utilisateur groupe

Enlever le mot de passe d'un groupe :
 # gpasswd -r groupe

== groupadd ==

Création de groupe avec les options de la commande plus celles par défaut du système.

 # grouppadd toto

== groupdel ==

Supprimer un groupe

 # groupdel toto

== groupmod ==

Modification des propriétés d'un groupe du système.
Les options sont modification de l'ID, du mot de passe, du nom du groupe.

Modification du GID du groupe scanner
 # groupmode -g 4713 scanner

Modification du nom du groupe1 pour groupe2
 # groupmode groupe2 groupe1

== id ==
Permet de savoir quel numéro - uid (comme user id) et quel numéro de groupe sont associés à utilisateur. Exemple

 $ id toto
 uid=1000(toto) gid=1000(toto) groupes=1000(toto),20(dialout),24(cdrom),25(floppy),29(audio),44(video),46(plugdev),110(netdev)

== passwd ==

Changement du mot de passe. Ou, en root, changer le mot de passe d'un utilisateur (l'ancien mot de passe est alors demandé)
 $ passwd
 # passwd toto

A Compléter...

== useradd ==

Créer un nouvel utilisateur ou mettre à jour l'information par défaut sur un nouvel utilisateur .

Le résultat est le même que pour la commande adduser, mais la syntaxe est différente. adduser est une commande interactive : elle pose des questions, il faut y répondre. useradd est une commande non interactive, il est possible de s'en servir pas exemple dans un script.

Ajouter un nouvel utilisateur (Attention, le mot de passe doit être crypté)
 # useradd -m -p MotDePasse login

A Compléter...

userdel

usermod

[[Catégorie:commandes]]</text>
      <sha1>l0sd33up3hftlistz7qei5h69bjhs68</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>807</id>
      <parentid>804</parentid>
      <timestamp>2010-02-03T16:00:20Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="6025">{{sid}} 

----

{{Ébauche|La gestion des fichiers}}


Les commandes d'utilisateurs et de groupes

== adduser ==

Ajouter un utilisateur.

Ajouter l'utilisateur ''toto'' au système. Un mot de passe sera demandé pour ce nouvel utilisateur ainsi que quelques informations
 # adduser toto

Ajouter l'utilisateur toto au groupe &quot;audio&quot;
 # adduser toto audio

== chgrp ==

Change l'appartenance d'un fichier à un groupe. On ne peut donner l'appartenance de groupe à un fichier qu'à un groupe dont on est membre... L'administrateur peut donc affecter un fichier à n'importe quel groupe.

Donner le groupe &quot;audio&quot; au fichier &quot;fichier&quot;
 $ chgrp audio fichier

Changer récursivement l'appartenance à un groupe. Le dossier et les fichiers contenus dans ce dossier changerons de groupe.
 $ chgrp -R audio /home/toto/dossier


== chmod ==

Changement des bits de comportement d'un (ou plusieurs fichiers); Il est utilisé pour changer les droits sur un fichier.

Donner le droit en lecture/écriture au propriétaire et lecture au groupe :
 $ chmod 640 fichier

chmod peut s'utiliser avec des chiffres ou des lettres


 Droit 	                                    Valeur alphanumérique  Valeur octale
 aucun droit 	                                   --- 	                0
 exécution seulement 	                           --x 	                1
 écriture seulement 	                           -w- 	                2
 écriture et exécution 	                           -wx 	                3
 lecture seulement 	                           r-- 	                4
 lecture et exécution 	                           r-x 	                5
 lecture et écriture 	                           rw- 	                6
 tous les droits (lecture, écriture et exécution)   rwx          	7


== chown ==

Changer le propriétaire et/ou le groupe d'un fichier

Changer le propriétaire d'un fichier
 $ chown toto fichier

Changer le groupe d'un fichier (équivalent à chgrp)
 $ chown :toto fichier

Changer le propriétaire et le goupe d'un fichier
 $ chown toto:audio fichier

Comme d'habitude l'option -R permet d traitre récursivement la commande. Changer l'appartenance d'un dossier et de tous les fichiers qu'il contient :

 $ chown -R toto:audio /home/toto/repertoire


== deluser ==

Supprimer un utilisateur, ou retirer un utilisateur d'un groupe.

Supprimer l'utilisateur toto (son répertoire n'est pas supprimé)
 # deluser toto

 # del user toto audio

== gpasswd ==

gpasswd est utilisé pour administrer le fichier /etc/group ainsi que le fichier /etc/gshadow.

Chaque groupe peut avoir un administrateur, des membres et un mot de passe. Les administrateurs systèmes possèdent les droits d'administrateur de groupe et de membre, il peuvent utiliser l'option -A pour définir le(s) administrateur(s) de groupe et l'option -M pour en définir les membres
Un administrateur de groupe peut ajouter ou supprimer des utilisateurs en utilisant respectivement les options -a et -d . Les administrateurs peuvent utiliser l'option -r pour supprimer le mot de passe d'un groupe.

Ajouter un administrateur à un groupe :
 #  gpasswd -a utilisateur groupe

Enlever le mot de passe d'un groupe :
 # gpasswd -r groupe

== groupadd ==

Création de groupe avec les options de la commande plus celles par défaut du système.

 # grouppadd toto

== groupdel ==

Supprimer un groupe

 # groupdel toto

== groupmod ==

Modification des propriétés d'un groupe du système.
Les options sont modification de l'ID, du mot de passe, du nom du groupe.

Modification du GID du groupe scanner
 # groupmode -g 4713 scanner

Modification du nom du groupe1 pour groupe2
 # groupmode groupe2 groupe1

== id ==
Permet de savoir quel numéro - uid (comme user id) et quel numéro de groupe sont associés à utilisateur. Exemple

 $ id toto
 uid=1000(toto) gid=1000(toto) groupes=1000(toto),20(dialout),24(cdrom),25(floppy),29(audio),44(video),46(plugdev),110(netdev)

== passwd ==

La commande passwd permet de changer son mot de passe. Ou, en root, changer le mot de passe d'un utilisateur (l'ancien mot de passe est alors demandé)

Elle demande :

# le mot de passe actuel (Current),
# le nouveau (New),
# puis la confirmation du nouveau (New again), afin d'éviter les erreurs. 

Remarque: Un mot de passe n'est jamais affiché et ne doit jamais l'être.

 $ passwd
 # passwd toto

== useradd ==

Créer un nouvel utilisateur ou mettre à jour l'information par défaut sur un nouvel utilisateur .

Le résultat est le même que pour la commande adduser, mais la syntaxe est différente. adduser est une commande interactive : elle pose des questions, il faut y répondre. useradd est une commande non interactive, il est possible de s'en servir pas exemple dans un script.

Ajouter un nouvel utilisateur (Attention, le mot de passe doit être crypté)
 # useradd -m -p MotDePasse login

== userdel ==

Effacer un compte utilisateur et les fichiers associés. La commande userdel modifie les fichiers des comptes du système, en supprimant toutes les entrées qui se réfèrent à login. L'utilisateur nommé doit exister. L'utilisateur ne doit pas être connecté...

Option : -r Les fichiers présents dans le répertoire personnel de l'utilisateur seront supprimés en même temps que le répertoire lui-même. Les fichiers situés dans d'autres systèmes de fichiers devront être recherchés et éliminés manuellement. 

Effacer l'utilisateur &quot;toto&quot; et ses fichiers dans /home/toto
 # userdel -r toto

== usermod ==

La commande usermod modifie les fichiers d’administration des comptes du système selon les modifications qui ont été indiquées sur la ligne de commande.

Ajouter l'utilisateur toto au groupe audio sans supprimer toto de son groupe originel.
 # usermod -aG audio toto

Renommer le répertoire (dossier) utilisateur et changer son nom. Pratique lorsque le pc change de mains. (Changer l'utilisateur toto en titi et changer son /home/toto en /home/titi)
 # usermod -d /home/titi -m -l titi toto

[[Catégorie:commandes]]</text>
      <sha1>a245rvbxv7mrcr2v1kq6qdnjoicmif4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1077</id>
      <parentid>807</parentid>
      <timestamp>2010-02-11T08:33:53Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="6034">{{sid}} 

----

{{Ébauche|La gestion des fichiers}}


Les commandes d'utilisateurs et de groupes

== adduser ==

Ajouter un utilisateur.

Ajouter l'utilisateur ''toto'' au système. Un mot de passe sera demandé pour ce nouvel utilisateur ainsi que quelques informations
 # adduser toto

Ajouter l'utilisateur toto au groupe &quot;audio&quot;
 # adduser toto audio

== chgrp ==

Change l'appartenance d'un fichier à un groupe. On ne peut donner l'appartenance de groupe à un fichier qu'à un groupe dont on est membre... L'administrateur peut donc affecter un fichier à n'importe quel groupe.

Donner le groupe &quot;audio&quot; au fichier &quot;fichier&quot;
 $ chgrp audio fichier

Changer récursivement l'appartenance à un groupe. Le dossier et les fichiers contenus dans ce dossier changerons de groupe.
 $ chgrp -R audio /home/toto/dossier


== chmod ==

Changement des bits de comportement d'un (ou plusieurs fichiers); Il est utilisé pour changer les droits sur un fichier.

Donner le droit en lecture/écriture au propriétaire et lecture au groupe :
 $ chmod 640 fichier

chmod peut s'utiliser avec des chiffres ou des lettres


 Droit 	                                    Valeur alphanumérique  Valeur octale
 aucun droit 	                                   --- 	                0
 exécution seulement 	                           --x 	                1
 écriture seulement 	                           -w- 	                2
 écriture et exécution 	                           -wx 	                3
 lecture seulement 	                           r-- 	                4
 lecture et exécution 	                           r-x 	                5
 lecture et écriture 	                           rw- 	                6
 tous les droits (lecture, écriture et exécution)   rwx          	7


== chown ==

Changer le propriétaire et/ou le groupe d'un fichier

Changer le propriétaire d'un fichier
 $ chown toto fichier

Changer le groupe d'un fichier (équivalent à chgrp)
 $ chown :toto fichier

Changer le propriétaire et le goupe d'un fichier
 $ chown toto:audio fichier

Comme d'habitude l'option -R permet d traitre récursivement la commande. Changer l'appartenance d'un dossier et de tous les fichiers qu'il contient :

 $ chown -R toto:audio /home/toto/repertoire


== deluser ==

Supprimer un utilisateur, ou retirer un utilisateur d'un groupe.

Supprimer l'utilisateur toto (son répertoire n'est pas supprimé)
 # deluser toto

 # del user toto audio

== gpasswd ==

gpasswd est utilisé pour administrer le fichier /etc/group ainsi que le fichier /etc/gshadow.

Chaque groupe peut avoir un administrateur, des membres et un mot de passe. Les administrateurs systèmes possèdent les droits d'administrateur de groupe et de membre, il peuvent utiliser l'option -A pour définir le(s) administrateur(s) de groupe et l'option -M pour en définir les membres
Un administrateur de groupe peut ajouter ou supprimer des utilisateurs en utilisant respectivement les options -a et -d . Les administrateurs peuvent utiliser l'option -r pour supprimer le mot de passe d'un groupe.

Ajouter un administrateur à un groupe :
 #  gpasswd -a utilisateur groupe

Enlever le mot de passe d'un groupe :
 # gpasswd -r groupe

== groupadd ==

Création de groupe avec les options de la commande plus celles par défaut du système.

 # grouppadd toto

== groupdel ==

Supprimer un groupe

 # groupdel toto

== groupmod ==

Modification des propriétés d'un groupe du système.
Les options sont modification de l'ID, du mot de passe, du nom du groupe.

Modification du GID du groupe scanner
 # groupmode -g 4713 scanner

Modification du nom du groupe1 pour groupe2
 # groupmode groupe2 groupe1

== id ==
Permet de savoir quel numéro - uid (comme user id) et quel numéro de groupe sont associés à utilisateur. Exemple

 $ id toto
 uid=1000(toto) gid=1000(toto) groupes=1000(toto),20(dialout),24(cdrom),25(floppy),29(audio),44(video),46(plugdev),110(netdev)

== passwd ==

La commande passwd permet de changer son mot de passe. Ou, en root, changer le mot de passe d'un utilisateur (l'ancien mot de passe est alors demandé)

Elle demande :

# le mot de passe actuel (Current),
# le nouveau (New),
# puis la confirmation du nouveau (New again), afin d'éviter les erreurs. 

Remarque: Un mot de passe n'est jamais affiché et ne doit jamais l'être.

 $ passwd
 # passwd toto

== useradd ==

Créer un nouvel utilisateur ou mettre à jour l'information par défaut sur un nouvel utilisateur .

Le résultat est le même que pour la commande adduser, mais la syntaxe est différente. adduser est une commande interactive : elle pose des questions, il faut y répondre. useradd est une commande non interactive, il est possible de s'en servir pas exemple dans un script.

Ajouter un nouvel utilisateur (Attention, le mot de passe doit être crypté)
 # useradd -m -p MotDePasse login

== userdel ==

Effacer un compte utilisateur et les fichiers associés. La commande userdel modifie les fichiers des comptes du système, en supprimant toutes les entrées qui se réfèrent à login. L'utilisateur nommé doit exister. L'utilisateur ne doit pas être connecté...

Option : -r Les fichiers présents dans le répertoire personnel de l'utilisateur seront supprimés en même temps que le répertoire lui-même. Les fichiers situés dans d'autres systèmes de fichiers devront être recherchés et éliminés manuellement. 

Effacer l'utilisateur &quot;toto&quot; et ses fichiers dans /home/toto
 # userdel -r toto

== usermod ==

La commande usermod modifie les fichiers d’administration des comptes du système selon les modifications qui ont été indiquées sur la ligne de commande.

Ajouter l'utilisateur toto au groupe audio sans supprimer toto de son groupe originel.
 # usermod -aG audio toto

Renommer le répertoire (dossier) utilisateur et changer son nom. Pratique lorsque le pc change de mains. (Changer l'utilisateur toto en titi et changer son /home/toto en /home/titi)
 # usermod -d /home/titi -m -l titi toto

[[Catégorie:cCommandes de base]]</text>
      <sha1>i6bewzto2jv3kg1qn7yihrqjqzqwfku</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1080</id>
      <parentid>1077</parentid>
      <timestamp>2010-02-11T08:35:55Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="6033">{{sid}} 

----

{{Ébauche|La gestion des fichiers}}


Les commandes d'utilisateurs et de groupes

== adduser ==

Ajouter un utilisateur.

Ajouter l'utilisateur ''toto'' au système. Un mot de passe sera demandé pour ce nouvel utilisateur ainsi que quelques informations
 # adduser toto

Ajouter l'utilisateur toto au groupe &quot;audio&quot;
 # adduser toto audio

== chgrp ==

Change l'appartenance d'un fichier à un groupe. On ne peut donner l'appartenance de groupe à un fichier qu'à un groupe dont on est membre... L'administrateur peut donc affecter un fichier à n'importe quel groupe.

Donner le groupe &quot;audio&quot; au fichier &quot;fichier&quot;
 $ chgrp audio fichier

Changer récursivement l'appartenance à un groupe. Le dossier et les fichiers contenus dans ce dossier changerons de groupe.
 $ chgrp -R audio /home/toto/dossier


== chmod ==

Changement des bits de comportement d'un (ou plusieurs fichiers); Il est utilisé pour changer les droits sur un fichier.

Donner le droit en lecture/écriture au propriétaire et lecture au groupe :
 $ chmod 640 fichier

chmod peut s'utiliser avec des chiffres ou des lettres


 Droit 	                                    Valeur alphanumérique  Valeur octale
 aucun droit 	                                   --- 	                0
 exécution seulement 	                           --x 	                1
 écriture seulement 	                           -w- 	                2
 écriture et exécution 	                           -wx 	                3
 lecture seulement 	                           r-- 	                4
 lecture et exécution 	                           r-x 	                5
 lecture et écriture 	                           rw- 	                6
 tous les droits (lecture, écriture et exécution)   rwx          	7


== chown ==

Changer le propriétaire et/ou le groupe d'un fichier

Changer le propriétaire d'un fichier
 $ chown toto fichier

Changer le groupe d'un fichier (équivalent à chgrp)
 $ chown :toto fichier

Changer le propriétaire et le goupe d'un fichier
 $ chown toto:audio fichier

Comme d'habitude l'option -R permet d traitre récursivement la commande. Changer l'appartenance d'un dossier et de tous les fichiers qu'il contient :

 $ chown -R toto:audio /home/toto/repertoire


== deluser ==

Supprimer un utilisateur, ou retirer un utilisateur d'un groupe.

Supprimer l'utilisateur toto (son répertoire n'est pas supprimé)
 # deluser toto

 # del user toto audio

== gpasswd ==

gpasswd est utilisé pour administrer le fichier /etc/group ainsi que le fichier /etc/gshadow.

Chaque groupe peut avoir un administrateur, des membres et un mot de passe. Les administrateurs systèmes possèdent les droits d'administrateur de groupe et de membre, il peuvent utiliser l'option -A pour définir le(s) administrateur(s) de groupe et l'option -M pour en définir les membres
Un administrateur de groupe peut ajouter ou supprimer des utilisateurs en utilisant respectivement les options -a et -d . Les administrateurs peuvent utiliser l'option -r pour supprimer le mot de passe d'un groupe.

Ajouter un administrateur à un groupe :
 #  gpasswd -a utilisateur groupe

Enlever le mot de passe d'un groupe :
 # gpasswd -r groupe

== groupadd ==

Création de groupe avec les options de la commande plus celles par défaut du système.

 # grouppadd toto

== groupdel ==

Supprimer un groupe

 # groupdel toto

== groupmod ==

Modification des propriétés d'un groupe du système.
Les options sont modification de l'ID, du mot de passe, du nom du groupe.

Modification du GID du groupe scanner
 # groupmode -g 4713 scanner

Modification du nom du groupe1 pour groupe2
 # groupmode groupe2 groupe1

== id ==
Permet de savoir quel numéro - uid (comme user id) et quel numéro de groupe sont associés à utilisateur. Exemple

 $ id toto
 uid=1000(toto) gid=1000(toto) groupes=1000(toto),20(dialout),24(cdrom),25(floppy),29(audio),44(video),46(plugdev),110(netdev)

== passwd ==

La commande passwd permet de changer son mot de passe. Ou, en root, changer le mot de passe d'un utilisateur (l'ancien mot de passe est alors demandé)

Elle demande :

# le mot de passe actuel (Current),
# le nouveau (New),
# puis la confirmation du nouveau (New again), afin d'éviter les erreurs. 

Remarque: Un mot de passe n'est jamais affiché et ne doit jamais l'être.

 $ passwd
 # passwd toto

== useradd ==

Créer un nouvel utilisateur ou mettre à jour l'information par défaut sur un nouvel utilisateur .

Le résultat est le même que pour la commande adduser, mais la syntaxe est différente. adduser est une commande interactive : elle pose des questions, il faut y répondre. useradd est une commande non interactive, il est possible de s'en servir pas exemple dans un script.

Ajouter un nouvel utilisateur (Attention, le mot de passe doit être crypté)
 # useradd -m -p MotDePasse login

== userdel ==

Effacer un compte utilisateur et les fichiers associés. La commande userdel modifie les fichiers des comptes du système, en supprimant toutes les entrées qui se réfèrent à login. L'utilisateur nommé doit exister. L'utilisateur ne doit pas être connecté...

Option : -r Les fichiers présents dans le répertoire personnel de l'utilisateur seront supprimés en même temps que le répertoire lui-même. Les fichiers situés dans d'autres systèmes de fichiers devront être recherchés et éliminés manuellement. 

Effacer l'utilisateur &quot;toto&quot; et ses fichiers dans /home/toto
 # userdel -r toto

== usermod ==

La commande usermod modifie les fichiers d’administration des comptes du système selon les modifications qui ont été indiquées sur la ligne de commande.

Ajouter l'utilisateur toto au groupe audio sans supprimer toto de son groupe originel.
 # usermod -aG audio toto

Renommer le répertoire (dossier) utilisateur et changer son nom. Pratique lorsque le pc change de mains. (Changer l'utilisateur toto en titi et changer son /home/toto en /home/titi)
 # usermod -d /home/titi -m -l titi toto

[[Catégorie:Commandes de base]]</text>
      <sha1>58vfum273w71aipagkuka9n7bt7e8pr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1099</id>
      <parentid>1080</parentid>
      <timestamp>2010-02-15T23:21:52Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>J'ai ajouté une description brève des droits utilisateurs. C'est un gros pavé pas forcément bien construit pour le moment mais il me semble important de parler des droits dans cette page.</comment>
      <text xml:space="preserve" bytes="7663">{{sid}} 

----

{{Ébauche|La gestion des fichiers}}

== Droits dans un système Debian ==
Les commandes que cette page vous présente permet de manipuler les utilisateurs et les groupes du système d'exploitation. Ces deux notions sont très fortement lié à la gestion des droits dans le système d'exploitation. C'est pour cela que nous commençons par vous expliquer ce point.

Sous GNU/Linux (comme sous beaucoup d'autres Unix), les droits sont gérer au travers d'utilisateurs et de groupe. Chaque utilisateur appartient à un ou plusieurs groupe(s) (s'il appartient à plusieurs groupe l'un d'entre eux seras son principal groupe).

Pour chaque fichier (que ce soit un fichier, un dossier, un exécutable, un périphérique ou quoi que ce soit d'autre), il est définit son propriétaire et son groupe. Ces deux attributs peuvent changer au cours du temps (les commandes ci-dessous vous indique comment faire). Ces deux attributs n'ont pas de liens entre eux le propriétaire d'un fichier ne doit pas nécessairement appartenir au groupe de celui-ci.

Ensuite l'idée consiste à définir des droits pour chaque fichier. Les droits sont différents pour le propriétaire, pour le groupe ou pour les autres utilisateurs du système. Ces droits s'expriment avec 3 attributs chacun, le droit en lecteur, en écriture ou en exécution. Nous allons prendre un exemple :

Imaginons le fichier ''fic.txt'', son propriétaire est l'utilisateur jean et son groupe est famille. On peut vouloir que l'utilisateur jean puisse lire et écrire dans ce fichier que les utilisateurs du groupe famille puisse uniquement lire le fichier et les autres ne puissent pas ni lire ni écrire dedans.

Les commandes d'utilisateurs et de groupes

== adduser ==

Ajouter un utilisateur.

Ajouter l'utilisateur ''toto'' au système. Un mot de passe sera demandé pour ce nouvel utilisateur ainsi que quelques informations
 # adduser toto

Ajouter l'utilisateur toto au groupe &quot;audio&quot;
 # adduser toto audio

== chgrp ==

Change l'appartenance d'un fichier à un groupe. On ne peut donner l'appartenance de groupe à un fichier qu'à un groupe dont on est membre... L'administrateur peut donc affecter un fichier à n'importe quel groupe.

Donner le groupe &quot;audio&quot; au fichier &quot;fichier&quot;
 $ chgrp audio fichier

Changer récursivement l'appartenance à un groupe. Le dossier et les fichiers contenus dans ce dossier changerons de groupe.
 $ chgrp -R audio /home/toto/dossier


== chmod ==

Changement des bits de comportement d'un (ou plusieurs fichiers); Il est utilisé pour changer les droits sur un fichier.

Donner le droit en lecture/écriture au propriétaire et lecture au groupe :
 $ chmod 640 fichier

chmod peut s'utiliser avec des chiffres ou des lettres


 Droit 	                                    Valeur alphanumérique  Valeur octale
 aucun droit 	                                   --- 	                0
 exécution seulement 	                           --x 	                1
 écriture seulement 	                           -w- 	                2
 écriture et exécution 	                           -wx 	                3
 lecture seulement 	                           r-- 	                4
 lecture et exécution 	                           r-x 	                5
 lecture et écriture 	                           rw- 	                6
 tous les droits (lecture, écriture et exécution)   rwx          	7


== chown ==

Changer le propriétaire et/ou le groupe d'un fichier

Changer le propriétaire d'un fichier
 $ chown toto fichier

Changer le groupe d'un fichier (équivalent à chgrp)
 $ chown :toto fichier

Changer le propriétaire et le goupe d'un fichier
 $ chown toto:audio fichier

Comme d'habitude l'option -R permet d traitre récursivement la commande. Changer l'appartenance d'un dossier et de tous les fichiers qu'il contient :

 $ chown -R toto:audio /home/toto/repertoire


== deluser ==

Supprimer un utilisateur, ou retirer un utilisateur d'un groupe.

Supprimer l'utilisateur toto (son répertoire n'est pas supprimé)
 # deluser toto

 # del user toto audio

== gpasswd ==

gpasswd est utilisé pour administrer le fichier /etc/group ainsi que le fichier /etc/gshadow.

Chaque groupe peut avoir un administrateur, des membres et un mot de passe. Les administrateurs systèmes possèdent les droits d'administrateur de groupe et de membre, il peuvent utiliser l'option -A pour définir le(s) administrateur(s) de groupe et l'option -M pour en définir les membres
Un administrateur de groupe peut ajouter ou supprimer des utilisateurs en utilisant respectivement les options -a et -d . Les administrateurs peuvent utiliser l'option -r pour supprimer le mot de passe d'un groupe.

Ajouter un administrateur à un groupe :
 #  gpasswd -a utilisateur groupe

Enlever le mot de passe d'un groupe :
 # gpasswd -r groupe

== groupadd ==

Création de groupe avec les options de la commande plus celles par défaut du système.

 # grouppadd toto

== groupdel ==

Supprimer un groupe

 # groupdel toto

== groupmod ==

Modification des propriétés d'un groupe du système.
Les options sont modification de l'ID, du mot de passe, du nom du groupe.

Modification du GID du groupe scanner
 # groupmode -g 4713 scanner

Modification du nom du groupe1 pour groupe2
 # groupmode groupe2 groupe1

== id ==
Permet de savoir quel numéro - uid (comme user id) et quel numéro de groupe sont associés à utilisateur. Exemple

 $ id toto
 uid=1000(toto) gid=1000(toto) groupes=1000(toto),20(dialout),24(cdrom),25(floppy),29(audio),44(video),46(plugdev),110(netdev)

== passwd ==

La commande passwd permet de changer son mot de passe. Ou, en root, changer le mot de passe d'un utilisateur (l'ancien mot de passe est alors demandé)

Elle demande :

# le mot de passe actuel (Current),
# le nouveau (New),
# puis la confirmation du nouveau (New again), afin d'éviter les erreurs. 

Remarque: Un mot de passe n'est jamais affiché et ne doit jamais l'être.

 $ passwd
 # passwd toto

== useradd ==

Créer un nouvel utilisateur ou mettre à jour l'information par défaut sur un nouvel utilisateur .

Le résultat est le même que pour la commande adduser, mais la syntaxe est différente. adduser est une commande interactive : elle pose des questions, il faut y répondre. useradd est une commande non interactive, il est possible de s'en servir pas exemple dans un script.

Ajouter un nouvel utilisateur (Attention, le mot de passe doit être crypté)
 # useradd -m -p MotDePasse login

== userdel ==

Effacer un compte utilisateur et les fichiers associés. La commande userdel modifie les fichiers des comptes du système, en supprimant toutes les entrées qui se réfèrent à login. L'utilisateur nommé doit exister. L'utilisateur ne doit pas être connecté...

Option : -r Les fichiers présents dans le répertoire personnel de l'utilisateur seront supprimés en même temps que le répertoire lui-même. Les fichiers situés dans d'autres systèmes de fichiers devront être recherchés et éliminés manuellement. 

Effacer l'utilisateur &quot;toto&quot; et ses fichiers dans /home/toto
 # userdel -r toto

== usermod ==

La commande usermod modifie les fichiers d’administration des comptes du système selon les modifications qui ont été indiquées sur la ligne de commande.

Ajouter l'utilisateur toto au groupe audio sans supprimer toto de son groupe originel.
 # usermod -aG audio toto

Renommer le répertoire (dossier) utilisateur et changer son nom. Pratique lorsque le pc change de mains. (Changer l'utilisateur toto en titi et changer son /home/toto en /home/titi)
 # usermod -d /home/titi -m -l titi toto

[[Catégorie:Commandes de base]]</text>
      <sha1>fgeavyqbm5l86l4d44azcx26pkh04wb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1905</id>
      <parentid>1099</parentid>
      <timestamp>2010-08-09T18:24:02Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* chown */</comment>
      <text xml:space="preserve" bytes="7689">{{sid}} 

----

{{Ébauche|La gestion des fichiers}}

== Droits dans un système Debian ==
Les commandes que cette page vous présente permet de manipuler les utilisateurs et les groupes du système d'exploitation. Ces deux notions sont très fortement lié à la gestion des droits dans le système d'exploitation. C'est pour cela que nous commençons par vous expliquer ce point.

Sous GNU/Linux (comme sous beaucoup d'autres Unix), les droits sont gérer au travers d'utilisateurs et de groupe. Chaque utilisateur appartient à un ou plusieurs groupe(s) (s'il appartient à plusieurs groupe l'un d'entre eux seras son principal groupe).

Pour chaque fichier (que ce soit un fichier, un dossier, un exécutable, un périphérique ou quoi que ce soit d'autre), il est définit son propriétaire et son groupe. Ces deux attributs peuvent changer au cours du temps (les commandes ci-dessous vous indique comment faire). Ces deux attributs n'ont pas de liens entre eux le propriétaire d'un fichier ne doit pas nécessairement appartenir au groupe de celui-ci.

Ensuite l'idée consiste à définir des droits pour chaque fichier. Les droits sont différents pour le propriétaire, pour le groupe ou pour les autres utilisateurs du système. Ces droits s'expriment avec 3 attributs chacun, le droit en lecteur, en écriture ou en exécution. Nous allons prendre un exemple :

Imaginons le fichier ''fic.txt'', son propriétaire est l'utilisateur jean et son groupe est famille. On peut vouloir que l'utilisateur jean puisse lire et écrire dans ce fichier que les utilisateurs du groupe famille puisse uniquement lire le fichier et les autres ne puissent pas ni lire ni écrire dedans.

Les commandes d'utilisateurs et de groupes

== adduser ==

Ajouter un utilisateur.

Ajouter l'utilisateur ''toto'' au système. Un mot de passe sera demandé pour ce nouvel utilisateur ainsi que quelques informations
 # adduser toto

Ajouter l'utilisateur toto au groupe &quot;audio&quot;
 # adduser toto audio

== chgrp ==

Change l'appartenance d'un fichier à un groupe. On ne peut donner l'appartenance de groupe à un fichier qu'à un groupe dont on est membre... L'administrateur peut donc affecter un fichier à n'importe quel groupe.

Donner le groupe &quot;audio&quot; au fichier &quot;fichier&quot;
 $ chgrp audio fichier

Changer récursivement l'appartenance à un groupe. Le dossier et les fichiers contenus dans ce dossier changerons de groupe.
 $ chgrp -R audio /home/toto/dossier


== chmod ==

Changement des bits de comportement d'un (ou plusieurs fichiers); Il est utilisé pour changer les droits sur un fichier.

Donner le droit en lecture/écriture au propriétaire et lecture au groupe :
 $ chmod 640 fichier

chmod peut s'utiliser avec des chiffres ou des lettres


 Droit 	                                    Valeur alphanumérique  Valeur octale
 aucun droit 	                                   --- 	                0
 exécution seulement 	                           --x 	                1
 écriture seulement 	                           -w- 	                2
 écriture et exécution 	                           -wx 	                3
 lecture seulement 	                           r-- 	                4
 lecture et exécution 	                           r-x 	                5
 lecture et écriture 	                           rw- 	                6
 tous les droits (lecture, écriture et exécution)   rwx          	7


== chown ==

Changer le propriétaire et/ou le groupe d'un fichier

Changer le propriétaire d'un fichier
 $ chown toto fichier

Changer le groupe d'un fichier (équivalent à chgrp)
 $ chown :toto fichier

Changer le propriétaire et le goupe d'un fichier
 $ chown toto:audio fichier

Comme d'habitude l'option -R permet de traiter récursivement la commande. Changer l'appartenance d'un dossier et de tous les fichiers qu'il contient :

 $ chown -R toto:audio /home/toto/repertoire

Remarquer le R majuscule

== deluser ==

Supprimer un utilisateur, ou retirer un utilisateur d'un groupe.

Supprimer l'utilisateur toto (son répertoire n'est pas supprimé)
 # deluser toto

 # del user toto audio

== gpasswd ==

gpasswd est utilisé pour administrer le fichier /etc/group ainsi que le fichier /etc/gshadow.

Chaque groupe peut avoir un administrateur, des membres et un mot de passe. Les administrateurs systèmes possèdent les droits d'administrateur de groupe et de membre, il peuvent utiliser l'option -A pour définir le(s) administrateur(s) de groupe et l'option -M pour en définir les membres
Un administrateur de groupe peut ajouter ou supprimer des utilisateurs en utilisant respectivement les options -a et -d . Les administrateurs peuvent utiliser l'option -r pour supprimer le mot de passe d'un groupe.

Ajouter un administrateur à un groupe :
 #  gpasswd -a utilisateur groupe

Enlever le mot de passe d'un groupe :
 # gpasswd -r groupe

== groupadd ==

Création de groupe avec les options de la commande plus celles par défaut du système.

 # grouppadd toto

== groupdel ==

Supprimer un groupe

 # groupdel toto

== groupmod ==

Modification des propriétés d'un groupe du système.
Les options sont modification de l'ID, du mot de passe, du nom du groupe.

Modification du GID du groupe scanner
 # groupmode -g 4713 scanner

Modification du nom du groupe1 pour groupe2
 # groupmode groupe2 groupe1

== id ==
Permet de savoir quel numéro - uid (comme user id) et quel numéro de groupe sont associés à utilisateur. Exemple

 $ id toto
 uid=1000(toto) gid=1000(toto) groupes=1000(toto),20(dialout),24(cdrom),25(floppy),29(audio),44(video),46(plugdev),110(netdev)

== passwd ==

La commande passwd permet de changer son mot de passe. Ou, en root, changer le mot de passe d'un utilisateur (l'ancien mot de passe est alors demandé)

Elle demande :

# le mot de passe actuel (Current),
# le nouveau (New),
# puis la confirmation du nouveau (New again), afin d'éviter les erreurs. 

Remarque: Un mot de passe n'est jamais affiché et ne doit jamais l'être.

 $ passwd
 # passwd toto

== useradd ==

Créer un nouvel utilisateur ou mettre à jour l'information par défaut sur un nouvel utilisateur .

Le résultat est le même que pour la commande adduser, mais la syntaxe est différente. adduser est une commande interactive : elle pose des questions, il faut y répondre. useradd est une commande non interactive, il est possible de s'en servir pas exemple dans un script.

Ajouter un nouvel utilisateur (Attention, le mot de passe doit être crypté)
 # useradd -m -p MotDePasse login

== userdel ==

Effacer un compte utilisateur et les fichiers associés. La commande userdel modifie les fichiers des comptes du système, en supprimant toutes les entrées qui se réfèrent à login. L'utilisateur nommé doit exister. L'utilisateur ne doit pas être connecté...

Option : -r Les fichiers présents dans le répertoire personnel de l'utilisateur seront supprimés en même temps que le répertoire lui-même. Les fichiers situés dans d'autres systèmes de fichiers devront être recherchés et éliminés manuellement. 

Effacer l'utilisateur &quot;toto&quot; et ses fichiers dans /home/toto
 # userdel -r toto

== usermod ==

La commande usermod modifie les fichiers d’administration des comptes du système selon les modifications qui ont été indiquées sur la ligne de commande.

Ajouter l'utilisateur toto au groupe audio sans supprimer toto de son groupe originel.
 # usermod -aG audio toto

Renommer le répertoire (dossier) utilisateur et changer son nom. Pratique lorsque le pc change de mains. (Changer l'utilisateur toto en titi et changer son /home/toto en /home/titi)
 # usermod -d /home/titi -m -l titi toto

[[Catégorie:Commandes de base]]</text>
      <sha1>7hzmmo3er20htfqjx0cl9vbuqfb8zwz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1906</id>
      <parentid>1905</parentid>
      <timestamp>2010-08-09T18:26:16Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* gpasswd */</comment>
      <text xml:space="preserve" bytes="7688">{{sid}} 

----

{{Ébauche|La gestion des fichiers}}

== Droits dans un système Debian ==
Les commandes que cette page vous présente permet de manipuler les utilisateurs et les groupes du système d'exploitation. Ces deux notions sont très fortement lié à la gestion des droits dans le système d'exploitation. C'est pour cela que nous commençons par vous expliquer ce point.

Sous GNU/Linux (comme sous beaucoup d'autres Unix), les droits sont gérer au travers d'utilisateurs et de groupe. Chaque utilisateur appartient à un ou plusieurs groupe(s) (s'il appartient à plusieurs groupe l'un d'entre eux seras son principal groupe).

Pour chaque fichier (que ce soit un fichier, un dossier, un exécutable, un périphérique ou quoi que ce soit d'autre), il est définit son propriétaire et son groupe. Ces deux attributs peuvent changer au cours du temps (les commandes ci-dessous vous indique comment faire). Ces deux attributs n'ont pas de liens entre eux le propriétaire d'un fichier ne doit pas nécessairement appartenir au groupe de celui-ci.

Ensuite l'idée consiste à définir des droits pour chaque fichier. Les droits sont différents pour le propriétaire, pour le groupe ou pour les autres utilisateurs du système. Ces droits s'expriment avec 3 attributs chacun, le droit en lecteur, en écriture ou en exécution. Nous allons prendre un exemple :

Imaginons le fichier ''fic.txt'', son propriétaire est l'utilisateur jean et son groupe est famille. On peut vouloir que l'utilisateur jean puisse lire et écrire dans ce fichier que les utilisateurs du groupe famille puisse uniquement lire le fichier et les autres ne puissent pas ni lire ni écrire dedans.

Les commandes d'utilisateurs et de groupes

== adduser ==

Ajouter un utilisateur.

Ajouter l'utilisateur ''toto'' au système. Un mot de passe sera demandé pour ce nouvel utilisateur ainsi que quelques informations
 # adduser toto

Ajouter l'utilisateur toto au groupe &quot;audio&quot;
 # adduser toto audio

== chgrp ==

Change l'appartenance d'un fichier à un groupe. On ne peut donner l'appartenance de groupe à un fichier qu'à un groupe dont on est membre... L'administrateur peut donc affecter un fichier à n'importe quel groupe.

Donner le groupe &quot;audio&quot; au fichier &quot;fichier&quot;
 $ chgrp audio fichier

Changer récursivement l'appartenance à un groupe. Le dossier et les fichiers contenus dans ce dossier changerons de groupe.
 $ chgrp -R audio /home/toto/dossier


== chmod ==

Changement des bits de comportement d'un (ou plusieurs fichiers); Il est utilisé pour changer les droits sur un fichier.

Donner le droit en lecture/écriture au propriétaire et lecture au groupe :
 $ chmod 640 fichier

chmod peut s'utiliser avec des chiffres ou des lettres


 Droit 	                                    Valeur alphanumérique  Valeur octale
 aucun droit 	                                   --- 	                0
 exécution seulement 	                           --x 	                1
 écriture seulement 	                           -w- 	                2
 écriture et exécution 	                           -wx 	                3
 lecture seulement 	                           r-- 	                4
 lecture et exécution 	                           r-x 	                5
 lecture et écriture 	                           rw- 	                6
 tous les droits (lecture, écriture et exécution)   rwx          	7


== chown ==

Changer le propriétaire et/ou le groupe d'un fichier

Changer le propriétaire d'un fichier
 $ chown toto fichier

Changer le groupe d'un fichier (équivalent à chgrp)
 $ chown :toto fichier

Changer le propriétaire et le goupe d'un fichier
 $ chown toto:audio fichier

Comme d'habitude l'option -R permet de traiter récursivement la commande. Changer l'appartenance d'un dossier et de tous les fichiers qu'il contient :

 $ chown -R toto:audio /home/toto/repertoire

Remarquer le R majuscule

== deluser ==

Supprimer un utilisateur, ou retirer un utilisateur d'un groupe.

Supprimer l'utilisateur toto (son répertoire n'est pas supprimé)
 # deluser toto

 # del user toto audio

== gpasswd ==

gpasswd est utilisé pour administrer le fichier /etc/group ainsi que le fichier /etc/shadow.

Chaque groupe peut avoir un administrateur, des membres et un mot de passe. Les administrateurs systèmes possèdent les droits d'administrateur de groupe et de membre, il peuvent utiliser l'option -A pour définir le(s) administrateur(s) de groupe et l'option -M pour en définir les membres
Un administrateur de groupe peut ajouter ou supprimer des utilisateurs en utilisant respectivement les options -a et -d . Les administrateurs peuvent utiliser l'option -r pour supprimer le mot de passe d'un groupe.

Ajouter un administrateur à un groupe :
 #  gpasswd -a utilisateur groupe

Enlever le mot de passe d'un groupe :
 # gpasswd -r groupe

== groupadd ==

Création de groupe avec les options de la commande plus celles par défaut du système.

 # grouppadd toto

== groupdel ==

Supprimer un groupe

 # groupdel toto

== groupmod ==

Modification des propriétés d'un groupe du système.
Les options sont modification de l'ID, du mot de passe, du nom du groupe.

Modification du GID du groupe scanner
 # groupmode -g 4713 scanner

Modification du nom du groupe1 pour groupe2
 # groupmode groupe2 groupe1

== id ==
Permet de savoir quel numéro - uid (comme user id) et quel numéro de groupe sont associés à utilisateur. Exemple

 $ id toto
 uid=1000(toto) gid=1000(toto) groupes=1000(toto),20(dialout),24(cdrom),25(floppy),29(audio),44(video),46(plugdev),110(netdev)

== passwd ==

La commande passwd permet de changer son mot de passe. Ou, en root, changer le mot de passe d'un utilisateur (l'ancien mot de passe est alors demandé)

Elle demande :

# le mot de passe actuel (Current),
# le nouveau (New),
# puis la confirmation du nouveau (New again), afin d'éviter les erreurs. 

Remarque: Un mot de passe n'est jamais affiché et ne doit jamais l'être.

 $ passwd
 # passwd toto

== useradd ==

Créer un nouvel utilisateur ou mettre à jour l'information par défaut sur un nouvel utilisateur .

Le résultat est le même que pour la commande adduser, mais la syntaxe est différente. adduser est une commande interactive : elle pose des questions, il faut y répondre. useradd est une commande non interactive, il est possible de s'en servir pas exemple dans un script.

Ajouter un nouvel utilisateur (Attention, le mot de passe doit être crypté)
 # useradd -m -p MotDePasse login

== userdel ==

Effacer un compte utilisateur et les fichiers associés. La commande userdel modifie les fichiers des comptes du système, en supprimant toutes les entrées qui se réfèrent à login. L'utilisateur nommé doit exister. L'utilisateur ne doit pas être connecté...

Option : -r Les fichiers présents dans le répertoire personnel de l'utilisateur seront supprimés en même temps que le répertoire lui-même. Les fichiers situés dans d'autres systèmes de fichiers devront être recherchés et éliminés manuellement. 

Effacer l'utilisateur &quot;toto&quot; et ses fichiers dans /home/toto
 # userdel -r toto

== usermod ==

La commande usermod modifie les fichiers d’administration des comptes du système selon les modifications qui ont été indiquées sur la ligne de commande.

Ajouter l'utilisateur toto au groupe audio sans supprimer toto de son groupe originel.
 # usermod -aG audio toto

Renommer le répertoire (dossier) utilisateur et changer son nom. Pratique lorsque le pc change de mains. (Changer l'utilisateur toto en titi et changer son /home/toto en /home/titi)
 # usermod -d /home/titi -m -l titi toto

[[Catégorie:Commandes de base]]</text>
      <sha1>akj0hlxlecjskuivov29i3k00z0tckt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1907</id>
      <parentid>1906</parentid>
      <timestamp>2010-08-09T18:26:45Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <comment>/* gpasswd */</comment>
      <text xml:space="preserve" bytes="7689">{{sid}} 

----

{{Ébauche|La gestion des fichiers}}

== Droits dans un système Debian ==
Les commandes que cette page vous présente permet de manipuler les utilisateurs et les groupes du système d'exploitation. Ces deux notions sont très fortement lié à la gestion des droits dans le système d'exploitation. C'est pour cela que nous commençons par vous expliquer ce point.

Sous GNU/Linux (comme sous beaucoup d'autres Unix), les droits sont gérer au travers d'utilisateurs et de groupe. Chaque utilisateur appartient à un ou plusieurs groupe(s) (s'il appartient à plusieurs groupe l'un d'entre eux seras son principal groupe).

Pour chaque fichier (que ce soit un fichier, un dossier, un exécutable, un périphérique ou quoi que ce soit d'autre), il est définit son propriétaire et son groupe. Ces deux attributs peuvent changer au cours du temps (les commandes ci-dessous vous indique comment faire). Ces deux attributs n'ont pas de liens entre eux le propriétaire d'un fichier ne doit pas nécessairement appartenir au groupe de celui-ci.

Ensuite l'idée consiste à définir des droits pour chaque fichier. Les droits sont différents pour le propriétaire, pour le groupe ou pour les autres utilisateurs du système. Ces droits s'expriment avec 3 attributs chacun, le droit en lecteur, en écriture ou en exécution. Nous allons prendre un exemple :

Imaginons le fichier ''fic.txt'', son propriétaire est l'utilisateur jean et son groupe est famille. On peut vouloir que l'utilisateur jean puisse lire et écrire dans ce fichier que les utilisateurs du groupe famille puisse uniquement lire le fichier et les autres ne puissent pas ni lire ni écrire dedans.

Les commandes d'utilisateurs et de groupes

== adduser ==

Ajouter un utilisateur.

Ajouter l'utilisateur ''toto'' au système. Un mot de passe sera demandé pour ce nouvel utilisateur ainsi que quelques informations
 # adduser toto

Ajouter l'utilisateur toto au groupe &quot;audio&quot;
 # adduser toto audio

== chgrp ==

Change l'appartenance d'un fichier à un groupe. On ne peut donner l'appartenance de groupe à un fichier qu'à un groupe dont on est membre... L'administrateur peut donc affecter un fichier à n'importe quel groupe.

Donner le groupe &quot;audio&quot; au fichier &quot;fichier&quot;
 $ chgrp audio fichier

Changer récursivement l'appartenance à un groupe. Le dossier et les fichiers contenus dans ce dossier changerons de groupe.
 $ chgrp -R audio /home/toto/dossier


== chmod ==

Changement des bits de comportement d'un (ou plusieurs fichiers); Il est utilisé pour changer les droits sur un fichier.

Donner le droit en lecture/écriture au propriétaire et lecture au groupe :
 $ chmod 640 fichier

chmod peut s'utiliser avec des chiffres ou des lettres


 Droit 	                                    Valeur alphanumérique  Valeur octale
 aucun droit 	                                   --- 	                0
 exécution seulement 	                           --x 	                1
 écriture seulement 	                           -w- 	                2
 écriture et exécution 	                           -wx 	                3
 lecture seulement 	                           r-- 	                4
 lecture et exécution 	                           r-x 	                5
 lecture et écriture 	                           rw- 	                6
 tous les droits (lecture, écriture et exécution)   rwx          	7


== chown ==

Changer le propriétaire et/ou le groupe d'un fichier

Changer le propriétaire d'un fichier
 $ chown toto fichier

Changer le groupe d'un fichier (équivalent à chgrp)
 $ chown :toto fichier

Changer le propriétaire et le goupe d'un fichier
 $ chown toto:audio fichier

Comme d'habitude l'option -R permet de traiter récursivement la commande. Changer l'appartenance d'un dossier et de tous les fichiers qu'il contient :

 $ chown -R toto:audio /home/toto/repertoire

Remarquer le R majuscule

== deluser ==

Supprimer un utilisateur, ou retirer un utilisateur d'un groupe.

Supprimer l'utilisateur toto (son répertoire n'est pas supprimé)
 # deluser toto

 # del user toto audio

== gpasswd ==

gpasswd est utilisé pour administrer le fichier /etc/group ainsi que le fichier /etc/gshadow.

Chaque groupe peut avoir un administrateur, des membres et un mot de passe. Les administrateurs systèmes possèdent les droits d'administrateur de groupe et de membre, il peuvent utiliser l'option -A pour définir le(s) administrateur(s) de groupe et l'option -M pour en définir les membres
Un administrateur de groupe peut ajouter ou supprimer des utilisateurs en utilisant respectivement les options -a et -d . Les administrateurs peuvent utiliser l'option -r pour supprimer le mot de passe d'un groupe.

Ajouter un administrateur à un groupe :
 #  gpasswd -a utilisateur groupe

Enlever le mot de passe d'un groupe :
 # gpasswd -r groupe

== groupadd ==

Création de groupe avec les options de la commande plus celles par défaut du système.

 # grouppadd toto

== groupdel ==

Supprimer un groupe

 # groupdel toto

== groupmod ==

Modification des propriétés d'un groupe du système.
Les options sont modification de l'ID, du mot de passe, du nom du groupe.

Modification du GID du groupe scanner
 # groupmode -g 4713 scanner

Modification du nom du groupe1 pour groupe2
 # groupmode groupe2 groupe1

== id ==
Permet de savoir quel numéro - uid (comme user id) et quel numéro de groupe sont associés à utilisateur. Exemple

 $ id toto
 uid=1000(toto) gid=1000(toto) groupes=1000(toto),20(dialout),24(cdrom),25(floppy),29(audio),44(video),46(plugdev),110(netdev)

== passwd ==

La commande passwd permet de changer son mot de passe. Ou, en root, changer le mot de passe d'un utilisateur (l'ancien mot de passe est alors demandé)

Elle demande :

# le mot de passe actuel (Current),
# le nouveau (New),
# puis la confirmation du nouveau (New again), afin d'éviter les erreurs. 

Remarque: Un mot de passe n'est jamais affiché et ne doit jamais l'être.

 $ passwd
 # passwd toto

== useradd ==

Créer un nouvel utilisateur ou mettre à jour l'information par défaut sur un nouvel utilisateur .

Le résultat est le même que pour la commande adduser, mais la syntaxe est différente. adduser est une commande interactive : elle pose des questions, il faut y répondre. useradd est une commande non interactive, il est possible de s'en servir pas exemple dans un script.

Ajouter un nouvel utilisateur (Attention, le mot de passe doit être crypté)
 # useradd -m -p MotDePasse login

== userdel ==

Effacer un compte utilisateur et les fichiers associés. La commande userdel modifie les fichiers des comptes du système, en supprimant toutes les entrées qui se réfèrent à login. L'utilisateur nommé doit exister. L'utilisateur ne doit pas être connecté...

Option : -r Les fichiers présents dans le répertoire personnel de l'utilisateur seront supprimés en même temps que le répertoire lui-même. Les fichiers situés dans d'autres systèmes de fichiers devront être recherchés et éliminés manuellement. 

Effacer l'utilisateur &quot;toto&quot; et ses fichiers dans /home/toto
 # userdel -r toto

== usermod ==

La commande usermod modifie les fichiers d’administration des comptes du système selon les modifications qui ont été indiquées sur la ligne de commande.

Ajouter l'utilisateur toto au groupe audio sans supprimer toto de son groupe originel.
 # usermod -aG audio toto

Renommer le répertoire (dossier) utilisateur et changer son nom. Pratique lorsque le pc change de mains. (Changer l'utilisateur toto en titi et changer son /home/toto en /home/titi)
 # usermod -d /home/titi -m -l titi toto

[[Catégorie:Commandes de base]]</text>
      <sha1>7hzmmo3er20htfqjx0cl9vbuqfb8zwz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2669</id>
      <parentid>1907</parentid>
      <timestamp>2011-02-02T05:56:36Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* chmod */</comment>
      <text xml:space="preserve" bytes="8167">{{sid}} 

----

{{Ébauche|La gestion des fichiers}}

== Droits dans un système Debian ==
Les commandes que cette page vous présente permet de manipuler les utilisateurs et les groupes du système d'exploitation. Ces deux notions sont très fortement lié à la gestion des droits dans le système d'exploitation. C'est pour cela que nous commençons par vous expliquer ce point.

Sous GNU/Linux (comme sous beaucoup d'autres Unix), les droits sont gérer au travers d'utilisateurs et de groupe. Chaque utilisateur appartient à un ou plusieurs groupe(s) (s'il appartient à plusieurs groupe l'un d'entre eux seras son principal groupe).

Pour chaque fichier (que ce soit un fichier, un dossier, un exécutable, un périphérique ou quoi que ce soit d'autre), il est définit son propriétaire et son groupe. Ces deux attributs peuvent changer au cours du temps (les commandes ci-dessous vous indique comment faire). Ces deux attributs n'ont pas de liens entre eux le propriétaire d'un fichier ne doit pas nécessairement appartenir au groupe de celui-ci.

Ensuite l'idée consiste à définir des droits pour chaque fichier. Les droits sont différents pour le propriétaire, pour le groupe ou pour les autres utilisateurs du système. Ces droits s'expriment avec 3 attributs chacun, le droit en lecteur, en écriture ou en exécution. Nous allons prendre un exemple :

Imaginons le fichier ''fic.txt'', son propriétaire est l'utilisateur jean et son groupe est famille. On peut vouloir que l'utilisateur jean puisse lire et écrire dans ce fichier que les utilisateurs du groupe famille puisse uniquement lire le fichier et les autres ne puissent pas ni lire ni écrire dedans.

Les commandes d'utilisateurs et de groupes

== adduser ==

Ajouter un utilisateur.

Ajouter l'utilisateur ''toto'' au système. Un mot de passe sera demandé pour ce nouvel utilisateur ainsi que quelques informations
 # adduser toto

Ajouter l'utilisateur toto au groupe &quot;audio&quot;
 # adduser toto audio

== chgrp ==

Change l'appartenance d'un fichier à un groupe. On ne peut donner l'appartenance de groupe à un fichier qu'à un groupe dont on est membre... L'administrateur peut donc affecter un fichier à n'importe quel groupe.

Donner le groupe &quot;audio&quot; au fichier &quot;fichier&quot;
 $ chgrp audio fichier

Changer récursivement l'appartenance à un groupe. Le dossier et les fichiers contenus dans ce dossier changerons de groupe.
 $ chgrp -R audio /home/toto/dossier


== chmod ==

Changement des bits de comportement d'un (ou plusieurs fichiers); Il est utilisé pour changer les droits sur un fichier.

Donner le droit en lecture/écriture au propriétaire et lecture au groupe :
 $ chmod 640 fichier

chmod peut s'utiliser avec des chiffres ou des lettres


 Droit 	                                    Valeur alphanumérique  Valeur octale
 aucun droit 	                                   --- 	                0
 exécution seulement 	                           --x 	                1
 écriture seulement 	                           -w- 	                2
 écriture et exécution 	                           -wx 	                3
 lecture seulement 	                           r-- 	                4
 lecture et exécution 	                           r-x 	                5
 lecture et écriture 	                           rw- 	                6
 tous les droits (lecture, écriture et exécution)   rwx          	7

Exemple de chmod plus complexe:
La commande ci-dessous fera un chmod 664 récursif sur les fichiers (et uniquement sur les fichiers) dans le répertoire /home/rep/

 $ find /home/rep/ -type f -exec chmod 664 {} \;

Faites très attention avec la commande chmod qui peut être très dangereuse pour votre système si elle est utilisée à mauvais escient...
(vous ne serrez pas toujours capable de retrouver les droits d'origine sur vos fichiers en cas de mauvaise manipulation)

== chown ==

Changer le propriétaire et/ou le groupe d'un fichier

Changer le propriétaire d'un fichier
 $ chown toto fichier

Changer le groupe d'un fichier (équivalent à chgrp)
 $ chown :toto fichier

Changer le propriétaire et le goupe d'un fichier
 $ chown toto:audio fichier

Comme d'habitude l'option -R permet de traiter récursivement la commande. Changer l'appartenance d'un dossier et de tous les fichiers qu'il contient :

 $ chown -R toto:audio /home/toto/repertoire

Remarquer le R majuscule

== deluser ==

Supprimer un utilisateur, ou retirer un utilisateur d'un groupe.

Supprimer l'utilisateur toto (son répertoire n'est pas supprimé)
 # deluser toto

 # del user toto audio

== gpasswd ==

gpasswd est utilisé pour administrer le fichier /etc/group ainsi que le fichier /etc/gshadow.

Chaque groupe peut avoir un administrateur, des membres et un mot de passe. Les administrateurs systèmes possèdent les droits d'administrateur de groupe et de membre, il peuvent utiliser l'option -A pour définir le(s) administrateur(s) de groupe et l'option -M pour en définir les membres
Un administrateur de groupe peut ajouter ou supprimer des utilisateurs en utilisant respectivement les options -a et -d . Les administrateurs peuvent utiliser l'option -r pour supprimer le mot de passe d'un groupe.

Ajouter un administrateur à un groupe :
 #  gpasswd -a utilisateur groupe

Enlever le mot de passe d'un groupe :
 # gpasswd -r groupe

== groupadd ==

Création de groupe avec les options de la commande plus celles par défaut du système.

 # grouppadd toto

== groupdel ==

Supprimer un groupe

 # groupdel toto

== groupmod ==

Modification des propriétés d'un groupe du système.
Les options sont modification de l'ID, du mot de passe, du nom du groupe.

Modification du GID du groupe scanner
 # groupmode -g 4713 scanner

Modification du nom du groupe1 pour groupe2
 # groupmode groupe2 groupe1

== id ==
Permet de savoir quel numéro - uid (comme user id) et quel numéro de groupe sont associés à utilisateur. Exemple

 $ id toto
 uid=1000(toto) gid=1000(toto) groupes=1000(toto),20(dialout),24(cdrom),25(floppy),29(audio),44(video),46(plugdev),110(netdev)

== passwd ==

La commande passwd permet de changer son mot de passe. Ou, en root, changer le mot de passe d'un utilisateur (l'ancien mot de passe est alors demandé)

Elle demande :

# le mot de passe actuel (Current),
# le nouveau (New),
# puis la confirmation du nouveau (New again), afin d'éviter les erreurs. 

Remarque: Un mot de passe n'est jamais affiché et ne doit jamais l'être.

 $ passwd
 # passwd toto

== useradd ==

Créer un nouvel utilisateur ou mettre à jour l'information par défaut sur un nouvel utilisateur .

Le résultat est le même que pour la commande adduser, mais la syntaxe est différente. adduser est une commande interactive : elle pose des questions, il faut y répondre. useradd est une commande non interactive, il est possible de s'en servir pas exemple dans un script.

Ajouter un nouvel utilisateur (Attention, le mot de passe doit être crypté)
 # useradd -m -p MotDePasse login

== userdel ==

Effacer un compte utilisateur et les fichiers associés. La commande userdel modifie les fichiers des comptes du système, en supprimant toutes les entrées qui se réfèrent à login. L'utilisateur nommé doit exister. L'utilisateur ne doit pas être connecté...

Option : -r Les fichiers présents dans le répertoire personnel de l'utilisateur seront supprimés en même temps que le répertoire lui-même. Les fichiers situés dans d'autres systèmes de fichiers devront être recherchés et éliminés manuellement. 

Effacer l'utilisateur &quot;toto&quot; et ses fichiers dans /home/toto
 # userdel -r toto

== usermod ==

La commande usermod modifie les fichiers d’administration des comptes du système selon les modifications qui ont été indiquées sur la ligne de commande.

Ajouter l'utilisateur toto au groupe audio sans supprimer toto de son groupe originel.
 # usermod -aG audio toto

Renommer le répertoire (dossier) utilisateur et changer son nom. Pratique lorsque le pc change de mains. (Changer l'utilisateur toto en titi et changer son /home/toto en /home/titi)
 # usermod -d /home/titi -m -l titi toto

[[Catégorie:Commandes de base]]</text>
      <sha1>h3ub1df92vsk59rktpz4vp1rpo4k28w</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2670</id>
      <parentid>2669</parentid>
      <timestamp>2011-02-02T07:28:16Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* groupmod */</comment>
      <text xml:space="preserve" bytes="8165">{{sid}} 

----

{{Ébauche|La gestion des fichiers}}

== Droits dans un système Debian ==
Les commandes que cette page vous présente permet de manipuler les utilisateurs et les groupes du système d'exploitation. Ces deux notions sont très fortement lié à la gestion des droits dans le système d'exploitation. C'est pour cela que nous commençons par vous expliquer ce point.

Sous GNU/Linux (comme sous beaucoup d'autres Unix), les droits sont gérer au travers d'utilisateurs et de groupe. Chaque utilisateur appartient à un ou plusieurs groupe(s) (s'il appartient à plusieurs groupe l'un d'entre eux seras son principal groupe).

Pour chaque fichier (que ce soit un fichier, un dossier, un exécutable, un périphérique ou quoi que ce soit d'autre), il est définit son propriétaire et son groupe. Ces deux attributs peuvent changer au cours du temps (les commandes ci-dessous vous indique comment faire). Ces deux attributs n'ont pas de liens entre eux le propriétaire d'un fichier ne doit pas nécessairement appartenir au groupe de celui-ci.

Ensuite l'idée consiste à définir des droits pour chaque fichier. Les droits sont différents pour le propriétaire, pour le groupe ou pour les autres utilisateurs du système. Ces droits s'expriment avec 3 attributs chacun, le droit en lecteur, en écriture ou en exécution. Nous allons prendre un exemple :

Imaginons le fichier ''fic.txt'', son propriétaire est l'utilisateur jean et son groupe est famille. On peut vouloir que l'utilisateur jean puisse lire et écrire dans ce fichier que les utilisateurs du groupe famille puisse uniquement lire le fichier et les autres ne puissent pas ni lire ni écrire dedans.

Les commandes d'utilisateurs et de groupes

== adduser ==

Ajouter un utilisateur.

Ajouter l'utilisateur ''toto'' au système. Un mot de passe sera demandé pour ce nouvel utilisateur ainsi que quelques informations
 # adduser toto

Ajouter l'utilisateur toto au groupe &quot;audio&quot;
 # adduser toto audio

== chgrp ==

Change l'appartenance d'un fichier à un groupe. On ne peut donner l'appartenance de groupe à un fichier qu'à un groupe dont on est membre... L'administrateur peut donc affecter un fichier à n'importe quel groupe.

Donner le groupe &quot;audio&quot; au fichier &quot;fichier&quot;
 $ chgrp audio fichier

Changer récursivement l'appartenance à un groupe. Le dossier et les fichiers contenus dans ce dossier changerons de groupe.
 $ chgrp -R audio /home/toto/dossier


== chmod ==

Changement des bits de comportement d'un (ou plusieurs fichiers); Il est utilisé pour changer les droits sur un fichier.

Donner le droit en lecture/écriture au propriétaire et lecture au groupe :
 $ chmod 640 fichier

chmod peut s'utiliser avec des chiffres ou des lettres


 Droit 	                                    Valeur alphanumérique  Valeur octale
 aucun droit 	                                   --- 	                0
 exécution seulement 	                           --x 	                1
 écriture seulement 	                           -w- 	                2
 écriture et exécution 	                           -wx 	                3
 lecture seulement 	                           r-- 	                4
 lecture et exécution 	                           r-x 	                5
 lecture et écriture 	                           rw- 	                6
 tous les droits (lecture, écriture et exécution)   rwx          	7

Exemple de chmod plus complexe:
La commande ci-dessous fera un chmod 664 récursif sur les fichiers (et uniquement sur les fichiers) dans le répertoire /home/rep/

 $ find /home/rep/ -type f -exec chmod 664 {} \;

Faites très attention avec la commande chmod qui peut être très dangereuse pour votre système si elle est utilisée à mauvais escient...
(vous ne serrez pas toujours capable de retrouver les droits d'origine sur vos fichiers en cas de mauvaise manipulation)

== chown ==

Changer le propriétaire et/ou le groupe d'un fichier

Changer le propriétaire d'un fichier
 $ chown toto fichier

Changer le groupe d'un fichier (équivalent à chgrp)
 $ chown :toto fichier

Changer le propriétaire et le goupe d'un fichier
 $ chown toto:audio fichier

Comme d'habitude l'option -R permet de traiter récursivement la commande. Changer l'appartenance d'un dossier et de tous les fichiers qu'il contient :

 $ chown -R toto:audio /home/toto/repertoire

Remarquer le R majuscule

== deluser ==

Supprimer un utilisateur, ou retirer un utilisateur d'un groupe.

Supprimer l'utilisateur toto (son répertoire n'est pas supprimé)
 # deluser toto

 # del user toto audio

== gpasswd ==

gpasswd est utilisé pour administrer le fichier /etc/group ainsi que le fichier /etc/gshadow.

Chaque groupe peut avoir un administrateur, des membres et un mot de passe. Les administrateurs systèmes possèdent les droits d'administrateur de groupe et de membre, il peuvent utiliser l'option -A pour définir le(s) administrateur(s) de groupe et l'option -M pour en définir les membres
Un administrateur de groupe peut ajouter ou supprimer des utilisateurs en utilisant respectivement les options -a et -d . Les administrateurs peuvent utiliser l'option -r pour supprimer le mot de passe d'un groupe.

Ajouter un administrateur à un groupe :
 #  gpasswd -a utilisateur groupe

Enlever le mot de passe d'un groupe :
 # gpasswd -r groupe

== groupadd ==

Création de groupe avec les options de la commande plus celles par défaut du système.

 # grouppadd toto

== groupdel ==

Supprimer un groupe

 # groupdel toto

== groupmod ==

Modification des propriétés d'un groupe du système.
Les options sont modification de l'ID, du mot de passe, du nom du groupe.

Modification du GID du groupe scanner
 # groupmod -g 4713 scanner

Modification du nom du groupe1 pour groupe2
 # groupmod groupe2 groupe1

== id ==
Permet de savoir quel numéro - uid (comme user id) et quel numéro de groupe sont associés à utilisateur. Exemple

 $ id toto
 uid=1000(toto) gid=1000(toto) groupes=1000(toto),20(dialout),24(cdrom),25(floppy),29(audio),44(video),46(plugdev),110(netdev)

== passwd ==

La commande passwd permet de changer son mot de passe. Ou, en root, changer le mot de passe d'un utilisateur (l'ancien mot de passe est alors demandé)

Elle demande :

# le mot de passe actuel (Current),
# le nouveau (New),
# puis la confirmation du nouveau (New again), afin d'éviter les erreurs. 

Remarque: Un mot de passe n'est jamais affiché et ne doit jamais l'être.

 $ passwd
 # passwd toto

== useradd ==

Créer un nouvel utilisateur ou mettre à jour l'information par défaut sur un nouvel utilisateur .

Le résultat est le même que pour la commande adduser, mais la syntaxe est différente. adduser est une commande interactive : elle pose des questions, il faut y répondre. useradd est une commande non interactive, il est possible de s'en servir pas exemple dans un script.

Ajouter un nouvel utilisateur (Attention, le mot de passe doit être crypté)
 # useradd -m -p MotDePasse login

== userdel ==

Effacer un compte utilisateur et les fichiers associés. La commande userdel modifie les fichiers des comptes du système, en supprimant toutes les entrées qui se réfèrent à login. L'utilisateur nommé doit exister. L'utilisateur ne doit pas être connecté...

Option : -r Les fichiers présents dans le répertoire personnel de l'utilisateur seront supprimés en même temps que le répertoire lui-même. Les fichiers situés dans d'autres systèmes de fichiers devront être recherchés et éliminés manuellement. 

Effacer l'utilisateur &quot;toto&quot; et ses fichiers dans /home/toto
 # userdel -r toto

== usermod ==

La commande usermod modifie les fichiers d’administration des comptes du système selon les modifications qui ont été indiquées sur la ligne de commande.

Ajouter l'utilisateur toto au groupe audio sans supprimer toto de son groupe originel.
 # usermod -aG audio toto

Renommer le répertoire (dossier) utilisateur et changer son nom. Pratique lorsque le pc change de mains. (Changer l'utilisateur toto en titi et changer son /home/toto en /home/titi)
 # usermod -d /home/titi -m -l titi toto

[[Catégorie:Commandes de base]]</text>
      <sha1>0q1lxvcvolweikuibf22uxigtn9p9x7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3217</id>
      <parentid>2670</parentid>
      <timestamp>2011-08-07T18:40:05Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="8111">== Droits dans un système Debian ==
Les commandes que cette page vous présente permet de manipuler les utilisateurs et les groupes du système d'exploitation. Ces deux notions sont très fortement lié à la gestion des droits dans le système d'exploitation. C'est pour cela que nous commençons par vous expliquer ce point.

Sous GNU/Linux (comme sous beaucoup d'autres Unix), les droits sont gérer au travers d'utilisateurs et de groupe. Chaque utilisateur appartient à un ou plusieurs groupe(s) (s'il appartient à plusieurs groupe l'un d'entre eux seras son principal groupe).

Pour chaque fichier (que ce soit un fichier, un dossier, un exécutable, un périphérique ou quoi que ce soit d'autre), il est définit son propriétaire et son groupe. Ces deux attributs peuvent changer au cours du temps (les commandes ci-dessous vous indique comment faire). Ces deux attributs n'ont pas de liens entre eux le propriétaire d'un fichier ne doit pas nécessairement appartenir au groupe de celui-ci.

Ensuite l'idée consiste à définir des droits pour chaque fichier. Les droits sont différents pour le propriétaire, pour le groupe ou pour les autres utilisateurs du système. Ces droits s'expriment avec 3 attributs chacun, le droit en lecteur, en écriture ou en exécution. Nous allons prendre un exemple :

Imaginons le fichier ''fic.txt'', son propriétaire est l'utilisateur jean et son groupe est famille. On peut vouloir que l'utilisateur jean puisse lire et écrire dans ce fichier que les utilisateurs du groupe famille puisse uniquement lire le fichier et les autres ne puissent pas ni lire ni écrire dedans.

Les commandes d'utilisateurs et de groupes

== adduser ==

Ajouter un utilisateur.

Ajouter l'utilisateur ''toto'' au système. Un mot de passe sera demandé pour ce nouvel utilisateur ainsi que quelques informations
 # adduser toto

Ajouter l'utilisateur toto au groupe &quot;audio&quot;
 # adduser toto audio

== chgrp ==

Change l'appartenance d'un fichier à un groupe. On ne peut donner l'appartenance de groupe à un fichier qu'à un groupe dont on est membre... L'administrateur peut donc affecter un fichier à n'importe quel groupe.

Donner le groupe &quot;audio&quot; au fichier &quot;fichier&quot;
 $ chgrp audio fichier

Changer récursivement l'appartenance à un groupe. Le dossier et les fichiers contenus dans ce dossier changerons de groupe.
 $ chgrp -R audio /home/toto/dossier


== chmod ==

Changement des bits de comportement d'un (ou plusieurs fichiers); Il est utilisé pour changer les droits sur un fichier.

Donner le droit en lecture/écriture au propriétaire et lecture au groupe :
 $ chmod 640 fichier

chmod peut s'utiliser avec des chiffres ou des lettres


 Droit 	                                    Valeur alphanumérique  Valeur octale
 aucun droit 	                                   --- 	                0
 exécution seulement 	                           --x 	                1
 écriture seulement 	                           -w- 	                2
 écriture et exécution 	                           -wx 	                3
 lecture seulement 	                           r-- 	                4
 lecture et exécution 	                           r-x 	                5
 lecture et écriture 	                           rw- 	                6
 tous les droits (lecture, écriture et exécution)   rwx          	7

Exemple de chmod plus complexe:
La commande ci-dessous fera un chmod 664 récursif sur les fichiers (et uniquement sur les fichiers) dans le répertoire /home/rep/

 $ find /home/rep/ -type f -exec chmod 664 {} \;

Faites très attention avec la commande chmod qui peut être très dangereuse pour votre système si elle est utilisée à mauvais escient...
(vous ne serrez pas toujours capable de retrouver les droits d'origine sur vos fichiers en cas de mauvaise manipulation)

== chown ==

Changer le propriétaire et/ou le groupe d'un fichier

Changer le propriétaire d'un fichier
 $ chown toto fichier

Changer le groupe d'un fichier (équivalent à chgrp)
 $ chown :toto fichier

Changer le propriétaire et le goupe d'un fichier
 $ chown toto:audio fichier

Comme d'habitude l'option -R permet de traiter récursivement la commande. Changer l'appartenance d'un dossier et de tous les fichiers qu'il contient :

 $ chown -R toto:audio /home/toto/repertoire

Remarquer le R majuscule

== deluser ==

Supprimer un utilisateur, ou retirer un utilisateur d'un groupe.

Supprimer l'utilisateur toto (son répertoire n'est pas supprimé)
 # deluser toto

 # del user toto audio

== gpasswd ==

gpasswd est utilisé pour administrer le fichier /etc/group ainsi que le fichier /etc/gshadow.

Chaque groupe peut avoir un administrateur, des membres et un mot de passe. Les administrateurs systèmes possèdent les droits d'administrateur de groupe et de membre, il peuvent utiliser l'option -A pour définir le(s) administrateur(s) de groupe et l'option -M pour en définir les membres
Un administrateur de groupe peut ajouter ou supprimer des utilisateurs en utilisant respectivement les options -a et -d . Les administrateurs peuvent utiliser l'option -r pour supprimer le mot de passe d'un groupe.

Ajouter un administrateur à un groupe :
 #  gpasswd -a utilisateur groupe

Enlever le mot de passe d'un groupe :
 # gpasswd -r groupe

== groupadd ==

Création de groupe avec les options de la commande plus celles par défaut du système.

 # grouppadd toto

== groupdel ==

Supprimer un groupe

 # groupdel toto

== groupmod ==

Modification des propriétés d'un groupe du système.
Les options sont modification de l'ID, du mot de passe, du nom du groupe.

Modification du GID du groupe scanner
 # groupmod -g 4713 scanner

Modification du nom du groupe1 pour groupe2
 # groupmod groupe2 groupe1

== id ==
Permet de savoir quel numéro - uid (comme user id) et quel numéro de groupe sont associés à utilisateur. Exemple

 $ id toto
 uid=1000(toto) gid=1000(toto) groupes=1000(toto),20(dialout),24(cdrom),25(floppy),29(audio),44(video),46(plugdev),110(netdev)

== passwd ==

La commande passwd permet de changer son mot de passe. Ou, en root, changer le mot de passe d'un utilisateur (l'ancien mot de passe est alors demandé)

Elle demande :

# le mot de passe actuel (Current),
# le nouveau (New),
# puis la confirmation du nouveau (New again), afin d'éviter les erreurs. 

Remarque: Un mot de passe n'est jamais affiché et ne doit jamais l'être.

 $ passwd
 # passwd toto

== useradd ==

Créer un nouvel utilisateur ou mettre à jour l'information par défaut sur un nouvel utilisateur .

Le résultat est le même que pour la commande adduser, mais la syntaxe est différente. adduser est une commande interactive : elle pose des questions, il faut y répondre. useradd est une commande non interactive, il est possible de s'en servir pas exemple dans un script.

Ajouter un nouvel utilisateur (Attention, le mot de passe doit être crypté)
 # useradd -m -p MotDePasse login

== userdel ==

Effacer un compte utilisateur et les fichiers associés. La commande userdel modifie les fichiers des comptes du système, en supprimant toutes les entrées qui se réfèrent à login. L'utilisateur nommé doit exister. L'utilisateur ne doit pas être connecté...

Option : -r Les fichiers présents dans le répertoire personnel de l'utilisateur seront supprimés en même temps que le répertoire lui-même. Les fichiers situés dans d'autres systèmes de fichiers devront être recherchés et éliminés manuellement. 

Effacer l'utilisateur &quot;toto&quot; et ses fichiers dans /home/toto
 # userdel -r toto

== usermod ==

La commande usermod modifie les fichiers d’administration des comptes du système selon les modifications qui ont été indiquées sur la ligne de commande.

Ajouter l'utilisateur toto au groupe audio sans supprimer toto de son groupe originel.
 # usermod -aG audio toto

Renommer le répertoire (dossier) utilisateur et changer son nom. Pratique lorsque le pc change de mains. (Changer l'utilisateur toto en titi et changer son /home/toto en /home/titi)
 # usermod -d /home/titi -m -l titi toto

[[Catégorie:Commandes de base]]</text>
      <sha1>jhyl5ukqgnluhxkbau775mq15m7fzww</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3229</id>
      <parentid>3217</parentid>
      <timestamp>2011-08-08T07:47:59Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="8112">== Droits dans un système Debian ==
Les commandes que cette page vous présente permet de manipuler les utilisateurs et les groupes du système d'exploitation. Ces deux notions sont très fortement liées à la gestion des droits dans le système d'exploitation. C'est pour cela que nous commençons par vous expliquer ce point.

Sous GNU/Linux (comme sous beaucoup d'autres Unix), les droits sont gérés au travers d'utilisateurs et de groupe. Chaque utilisateur appartient à un ou plusieurs groupe(s) (s'il appartient à plusieurs groupes l'un d'entre eux sera son principal groupe).

Pour chaque fichier (que ce soit un fichier, un dossier, un exécutable, un périphérique ou quoi que ce soit d'autre), il est défini son propriétaire et son groupe. Ces deux attributs peuvent changer au cours du temps (les commandes ci-dessous vous indique comment faire). Ces deux attributs n'ont pas de liens entre eux le propriétaire d'un fichier ne doit pas nécessairement appartenir au groupe de celui-ci.

Ensuite l'idée consiste à définir des droits pour chaque fichier. Les droits sont différents pour le propriétaire, pour le groupe ou pour les autres utilisateurs du système. Ces droits s'expriment avec 3 attributs chacun, le droit en lecture, en écriture et en exécution. Nous allons prendre un exemple :

Imaginons le fichier ''fic.txt'', son propriétaire est l'utilisateur jean et son groupe est famille. On peut vouloir que l'utilisateur jean puisse lire et écrire dans ce fichier que les utilisateurs du groupe famille puisse uniquement lire le fichier et les autres ne puissent pas ni lire ni écrire dedans.

Les commandes d'utilisateurs et de groupes

== adduser ==

Ajouter un utilisateur.

Ajouter l'utilisateur ''toto'' au système. Un mot de passe sera demandé pour ce nouvel utilisateur ainsi que quelques informations
 # adduser toto

Ajouter l'utilisateur toto au groupe &quot;audio&quot;
 # adduser toto audio

== chgrp ==

Change l'appartenance d'un fichier à un groupe. On ne peut donner l'appartenance de groupe à un fichier qu'à un groupe dont on est membre... L'administrateur peut lui affecter un fichier à n'importe quel groupe.

Donner le groupe &quot;audio&quot; au fichier &quot;fichier&quot;
 $ chgrp audio fichier

Changer récursivement l'appartenance à un groupe. Le dossier et les fichiers contenus dans ce dossier changerons de groupe.
 $ chgrp -R audio /home/toto/dossier


== chmod ==

Changement des bits de comportement d'un (ou plusieurs fichiers); Il est utilisé pour changer les droits sur un fichier.

Donner le droit en lecture/écriture au propriétaire et lecture au groupe :
 $ chmod 640 fichier

chmod peut s'utiliser avec des chiffres ou des lettres


 Droit 	                                    Valeur alphanumérique  Valeur octale
 aucun droit 	                                   --- 	                0
 exécution seulement 	                           --x 	                1
 écriture seulement 	                           -w- 	                2
 écriture et exécution 	                           -wx 	                3
 lecture seulement 	                           r-- 	                4
 lecture et exécution 	                           r-x 	                5
 lecture et écriture 	                           rw- 	                6
 tous les droits (lecture, écriture et exécution)   rwx          	7

Exemple de chmod plus complexe:
La commande ci-dessous fera un chmod 664 récursif sur les fichiers (et uniquement sur les fichiers) dans le répertoire /home/rep/

 $ find /home/rep/ -type f -exec chmod 664 {} \;

Faites très attention avec la commande chmod qui peut être très dangereuse pour votre système si elle est utilisée à mauvais escient...
(vous ne serez pas toujours capable de retrouver les droits d'origine sur vos fichiers en cas de mauvaise manipulation)

== chown ==

Changer le propriétaire et/ou le groupe d'un fichier

Changer le propriétaire d'un fichier
 $ chown toto fichier

Changer le groupe d'un fichier (équivalent à chgrp)
 $ chown :toto fichier

Changer le propriétaire et le groupe d'un fichier
 $ chown toto:audio fichier

Comme d'habitude l'option -R permet de traiter récursivement la commande. Changer l'appartenance d'un dossier et de tous les fichiers qu'il contient :

 $ chown -R toto:audio /home/toto/repertoire

Remarquer le R majuscule

== deluser ==

Supprimer un utilisateur, ou retirer un utilisateur d'un groupe.

Supprimer l'utilisateur toto (son répertoire n'est pas supprimé)
 # deluser toto

 # del user toto audio

== gpasswd ==

gpasswd est utilisé pour administrer le fichier /etc/group ainsi que le fichier /etc/gshadow.

Chaque groupe peut avoir un administrateur, des membres et un mot de passe. Les administrateurs systèmes possèdent les droits d'administrateur de groupe et de membre, il peuvent utiliser l'option -A pour définir le(s) administrateur(s) de groupe et l'option -M pour en définir les membres
Un administrateur de groupe peut ajouter ou supprimer des utilisateurs en utilisant respectivement les options -a et -d . Les administrateurs peuvent utiliser l'option -r pour supprimer le mot de passe d'un groupe.

Ajouter un administrateur à un groupe :
 #  gpasswd -a utilisateur groupe

Enlever le mot de passe d'un groupe :
 # gpasswd -r groupe

== groupadd ==

Création de groupe avec les options de la commande plus celles par défaut du système.

 # grouppadd toto

== groupdel ==

Supprimer un groupe

 # groupdel toto

== groupmod ==

Modification des propriétés d'un groupe du système.
Les options sont modification de l'ID, du mot de passe, du nom du groupe.

Modification du GID du groupe scanner
 # groupmod -g 4713 scanner

Modification du nom du groupe1 pour groupe2
 # groupmod groupe2 groupe1

== id ==
Permet de savoir quel numéro - uid (comme user id) et quel numéro de groupe sont associés à utilisateur. Exemple

 $ id toto
 uid=1000(toto) gid=1000(toto) groupes=1000(toto),20(dialout),24(cdrom),25(floppy),29(audio),44(video),46(plugdev),110(netdev)

== passwd ==

La commande passwd permet de changer son mot de passe. Ou, en root, changer le mot de passe d'un utilisateur (l'ancien mot de passe est alors demandé)

Elle demande :

# le mot de passe actuel (Current),
# le nouveau (New),
# puis la confirmation du nouveau (New again), afin d'éviter les erreurs. 

Remarque: Un mot de passe n'est jamais affiché et ne doit jamais l'être.

 $ passwd
 # passwd toto

== useradd ==

Créer un nouvel utilisateur ou mettre à jour l'information par défaut sur un nouvel utilisateur .

Le résultat est le même que pour la commande adduser, mais la syntaxe est différente. adduser est une commande interactive : elle pose des questions, il faut y répondre. useradd est une commande non interactive, il est possible de s'en servir pas exemple dans un script.

Ajouter un nouvel utilisateur (Attention, le mot de passe doit être crypté)
 # useradd -m -p MotDePasse login

== userdel ==

Effacer un compte utilisateur et les fichiers associés. La commande userdel modifie les fichiers des comptes du système, en supprimant toutes les entrées qui se réfèrent à login. L'utilisateur nommé doit exister. L'utilisateur ne doit pas être connecté...

Option : -r Les fichiers présents dans le répertoire personnel de l'utilisateur seront supprimés en même temps que le répertoire lui-même. Les fichiers situés dans d'autres systèmes de fichiers devront être recherchés et éliminés manuellement. 

Effacer l'utilisateur &quot;toto&quot; et ses fichiers dans /home/toto
 # userdel -r toto

== usermod ==

La commande usermod modifie les fichiers d’administration des comptes du système selon les modifications qui ont été indiquées sur la ligne de commande.

Ajouter l'utilisateur toto au groupe audio sans supprimer toto de son groupe originel.
 # usermod -aG audio toto

Renommer le répertoire (dossier) utilisateur et changer son nom. Pratique lorsque le pc change de mains. (Changer l'utilisateur toto en titi et changer son /home/toto en /home/titi)
 # usermod -d /home/titi -m -l titi toto

[[Catégorie:Commandes de base]]</text>
      <sha1>eegnw5hpvegkc7pg0czhy55ztufjiai</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3531</id>
      <parentid>3229</parentid>
      <timestamp>2011-11-02T00:20:07Z</timestamp>
      <contributor>
        <username>Martin mtl</username>
        <id>173</id>
      </contributor>
      <comment>/* Droits dans un système Debian */</comment>
      <text xml:space="preserve" bytes="8121">== Droits dans un système Debian ==
Les commandes que cette page vous présente permettent de manipuler les utilisateurs et les groupes du système d'exploitation. Ces deux notions sont très fortement liées à la gestion des droits dans le système d'exploitation. C'est pour cela que nous commençons par vous expliquer ce point.

Sous GNU/Linux (comme sous beaucoup d'autres Unix), les droits sont gérés au travers d'utilisateurs et de groupe. Chaque utilisateur appartient à un ou plusieurs groupe(s) (s'il appartient à plusieurs groupes l'un d'entre eux sera son principal groupe).

Pour chaque fichier (que ce soit un fichier, un dossier, un exécutable, un périphérique ou quoi que ce soit d'autre), il est défini son propriétaire et son groupe. Ces deux attributs peuvent changer au cours du temps (les commandes ci-dessous vous indique comment faire). Ces deux attributs n'ont pas de liens entre eux ; le propriétaire d'un fichier ne doit pas nécessairement appartenir au groupe de celui-ci.

Ensuite l'idée consiste à définir des droits pour chaque fichier. Les droits sont différents pour le propriétaire, pour le groupe ou pour les autres utilisateurs du système. Ces droits s'expriment avec 3 attributs chacun, le droit en lecture, en écriture et en exécution. Nous allons prendre un exemple :

Imaginons le fichier ''fic.txt'', son propriétaire est l'utilisateur jean et son groupe est famille. On peut vouloir que l'utilisateur jean puisse lire et écrire dans ce fichier, que les utilisateurs du groupe famille puissent uniquement lire le fichier et les autres ne puissent pas ni lire ni écrire dedans.

Les commandes d'utilisateurs et de groupes

== adduser ==

Ajouter un utilisateur.

Ajouter l'utilisateur ''toto'' au système. Un mot de passe sera demandé pour ce nouvel utilisateur ainsi que quelques informations
 # adduser toto

Ajouter l'utilisateur toto au groupe &quot;audio&quot;
 # adduser toto audio

== chgrp ==

Change l'appartenance d'un fichier à un groupe. On ne peut donner l'appartenance de groupe à un fichier qu'à un groupe dont on est membre... L'administrateur peut lui affecter un fichier à n'importe quel groupe.

Donner le groupe &quot;audio&quot; au fichier &quot;fichier&quot;
 $ chgrp audio fichier

Changer récursivement l'appartenance à un groupe. Le dossier et les fichiers contenus dans ce dossier changerons de groupe.
 $ chgrp -R audio /home/toto/dossier


== chmod ==

Changement des bits de comportement d'un (ou plusieurs fichiers); Il est utilisé pour changer les droits sur un fichier.

Donner le droit en lecture/écriture au propriétaire et lecture au groupe :
 $ chmod 640 fichier

chmod peut s'utiliser avec des chiffres ou des lettres


 Droit 	                                    Valeur alphanumérique  Valeur octale
 aucun droit 	                                   --- 	                0
 exécution seulement 	                           --x 	                1
 écriture seulement 	                           -w- 	                2
 écriture et exécution 	                           -wx 	                3
 lecture seulement 	                           r-- 	                4
 lecture et exécution 	                           r-x 	                5
 lecture et écriture 	                           rw- 	                6
 tous les droits (lecture, écriture et exécution)   rwx          	7

Exemple de chmod plus complexe:
La commande ci-dessous fera un chmod 664 récursif sur les fichiers (et uniquement sur les fichiers) dans le répertoire /home/rep/

 $ find /home/rep/ -type f -exec chmod 664 {} \;

Faites très attention avec la commande chmod qui peut être très dangereuse pour votre système si elle est utilisée à mauvais escient...
(vous ne serez pas toujours capable de retrouver les droits d'origine sur vos fichiers en cas de mauvaise manipulation)

== chown ==

Changer le propriétaire et/ou le groupe d'un fichier

Changer le propriétaire d'un fichier
 $ chown toto fichier

Changer le groupe d'un fichier (équivalent à chgrp)
 $ chown :toto fichier

Changer le propriétaire et le groupe d'un fichier
 $ chown toto:audio fichier

Comme d'habitude l'option -R permet de traiter récursivement la commande. Changer l'appartenance d'un dossier et de tous les fichiers qu'il contient :

 $ chown -R toto:audio /home/toto/repertoire

Remarquer le R majuscule

== deluser ==

Supprimer un utilisateur, ou retirer un utilisateur d'un groupe.

Supprimer l'utilisateur toto (son répertoire n'est pas supprimé)
 # deluser toto

 # del user toto audio

== gpasswd ==

gpasswd est utilisé pour administrer le fichier /etc/group ainsi que le fichier /etc/gshadow.

Chaque groupe peut avoir un administrateur, des membres et un mot de passe. Les administrateurs systèmes possèdent les droits d'administrateur de groupe et de membre, il peuvent utiliser l'option -A pour définir le(s) administrateur(s) de groupe et l'option -M pour en définir les membres
Un administrateur de groupe peut ajouter ou supprimer des utilisateurs en utilisant respectivement les options -a et -d . Les administrateurs peuvent utiliser l'option -r pour supprimer le mot de passe d'un groupe.

Ajouter un administrateur à un groupe :
 #  gpasswd -a utilisateur groupe

Enlever le mot de passe d'un groupe :
 # gpasswd -r groupe

== groupadd ==

Création de groupe avec les options de la commande plus celles par défaut du système.

 # grouppadd toto

== groupdel ==

Supprimer un groupe

 # groupdel toto

== groupmod ==

Modification des propriétés d'un groupe du système.
Les options sont modification de l'ID, du mot de passe, du nom du groupe.

Modification du GID du groupe scanner
 # groupmod -g 4713 scanner

Modification du nom du groupe1 pour groupe2
 # groupmod groupe2 groupe1

== id ==
Permet de savoir quel numéro - uid (comme user id) et quel numéro de groupe sont associés à utilisateur. Exemple

 $ id toto
 uid=1000(toto) gid=1000(toto) groupes=1000(toto),20(dialout),24(cdrom),25(floppy),29(audio),44(video),46(plugdev),110(netdev)

== passwd ==

La commande passwd permet de changer son mot de passe. Ou, en root, changer le mot de passe d'un utilisateur (l'ancien mot de passe est alors demandé)

Elle demande :

# le mot de passe actuel (Current),
# le nouveau (New),
# puis la confirmation du nouveau (New again), afin d'éviter les erreurs. 

Remarque: Un mot de passe n'est jamais affiché et ne doit jamais l'être.

 $ passwd
 # passwd toto

== useradd ==

Créer un nouvel utilisateur ou mettre à jour l'information par défaut sur un nouvel utilisateur .

Le résultat est le même que pour la commande adduser, mais la syntaxe est différente. adduser est une commande interactive : elle pose des questions, il faut y répondre. useradd est une commande non interactive, il est possible de s'en servir pas exemple dans un script.

Ajouter un nouvel utilisateur (Attention, le mot de passe doit être crypté)
 # useradd -m -p MotDePasse login

== userdel ==

Effacer un compte utilisateur et les fichiers associés. La commande userdel modifie les fichiers des comptes du système, en supprimant toutes les entrées qui se réfèrent à login. L'utilisateur nommé doit exister. L'utilisateur ne doit pas être connecté...

Option : -r Les fichiers présents dans le répertoire personnel de l'utilisateur seront supprimés en même temps que le répertoire lui-même. Les fichiers situés dans d'autres systèmes de fichiers devront être recherchés et éliminés manuellement. 

Effacer l'utilisateur &quot;toto&quot; et ses fichiers dans /home/toto
 # userdel -r toto

== usermod ==

La commande usermod modifie les fichiers d’administration des comptes du système selon les modifications qui ont été indiquées sur la ligne de commande.

Ajouter l'utilisateur toto au groupe audio sans supprimer toto de son groupe originel.
 # usermod -aG audio toto

Renommer le répertoire (dossier) utilisateur et changer son nom. Pratique lorsque le pc change de mains. (Changer l'utilisateur toto en titi et changer son /home/toto en /home/titi)
 # usermod -d /home/titi -m -l titi toto

[[Catégorie:Commandes de base]]</text>
      <sha1>b9gipuvg90uog5t67i8jj8d8dh5ybf7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3532</id>
      <parentid>3531</parentid>
      <timestamp>2011-11-02T00:21:32Z</timestamp>
      <contributor>
        <username>Martin mtl</username>
        <id>173</id>
      </contributor>
      <comment>/* chgrp */</comment>
      <text xml:space="preserve" bytes="8122">== Droits dans un système Debian ==
Les commandes que cette page vous présente permettent de manipuler les utilisateurs et les groupes du système d'exploitation. Ces deux notions sont très fortement liées à la gestion des droits dans le système d'exploitation. C'est pour cela que nous commençons par vous expliquer ce point.

Sous GNU/Linux (comme sous beaucoup d'autres Unix), les droits sont gérés au travers d'utilisateurs et de groupe. Chaque utilisateur appartient à un ou plusieurs groupe(s) (s'il appartient à plusieurs groupes l'un d'entre eux sera son principal groupe).

Pour chaque fichier (que ce soit un fichier, un dossier, un exécutable, un périphérique ou quoi que ce soit d'autre), il est défini son propriétaire et son groupe. Ces deux attributs peuvent changer au cours du temps (les commandes ci-dessous vous indique comment faire). Ces deux attributs n'ont pas de liens entre eux ; le propriétaire d'un fichier ne doit pas nécessairement appartenir au groupe de celui-ci.

Ensuite l'idée consiste à définir des droits pour chaque fichier. Les droits sont différents pour le propriétaire, pour le groupe ou pour les autres utilisateurs du système. Ces droits s'expriment avec 3 attributs chacun, le droit en lecture, en écriture et en exécution. Nous allons prendre un exemple :

Imaginons le fichier ''fic.txt'', son propriétaire est l'utilisateur jean et son groupe est famille. On peut vouloir que l'utilisateur jean puisse lire et écrire dans ce fichier, que les utilisateurs du groupe famille puissent uniquement lire le fichier et les autres ne puissent pas ni lire ni écrire dedans.

Les commandes d'utilisateurs et de groupes

== adduser ==

Ajouter un utilisateur.

Ajouter l'utilisateur ''toto'' au système. Un mot de passe sera demandé pour ce nouvel utilisateur ainsi que quelques informations
 # adduser toto

Ajouter l'utilisateur toto au groupe &quot;audio&quot;
 # adduser toto audio

== chgrp ==

Change l'appartenance d'un fichier à un groupe. On ne peut donner l'appartenance de groupe à un fichier qu'à un groupe dont on est membre... L'administrateur peut, lui, affecter un fichier à n'importe quel groupe.

Donner le groupe &quot;audio&quot; au fichier &quot;fichier&quot;
 $ chgrp audio fichier

Changer récursivement l'appartenance à un groupe. Le dossier et les fichiers contenus dans ce dossier changerons de groupe.
 $ chgrp -R audio /home/toto/dossier

== chmod ==

Changement des bits de comportement d'un (ou plusieurs fichiers); Il est utilisé pour changer les droits sur un fichier.

Donner le droit en lecture/écriture au propriétaire et lecture au groupe :
 $ chmod 640 fichier

chmod peut s'utiliser avec des chiffres ou des lettres


 Droit 	                                    Valeur alphanumérique  Valeur octale
 aucun droit 	                                   --- 	                0
 exécution seulement 	                           --x 	                1
 écriture seulement 	                           -w- 	                2
 écriture et exécution 	                           -wx 	                3
 lecture seulement 	                           r-- 	                4
 lecture et exécution 	                           r-x 	                5
 lecture et écriture 	                           rw- 	                6
 tous les droits (lecture, écriture et exécution)   rwx          	7

Exemple de chmod plus complexe:
La commande ci-dessous fera un chmod 664 récursif sur les fichiers (et uniquement sur les fichiers) dans le répertoire /home/rep/

 $ find /home/rep/ -type f -exec chmod 664 {} \;

Faites très attention avec la commande chmod qui peut être très dangereuse pour votre système si elle est utilisée à mauvais escient...
(vous ne serez pas toujours capable de retrouver les droits d'origine sur vos fichiers en cas de mauvaise manipulation)

== chown ==

Changer le propriétaire et/ou le groupe d'un fichier

Changer le propriétaire d'un fichier
 $ chown toto fichier

Changer le groupe d'un fichier (équivalent à chgrp)
 $ chown :toto fichier

Changer le propriétaire et le groupe d'un fichier
 $ chown toto:audio fichier

Comme d'habitude l'option -R permet de traiter récursivement la commande. Changer l'appartenance d'un dossier et de tous les fichiers qu'il contient :

 $ chown -R toto:audio /home/toto/repertoire

Remarquer le R majuscule

== deluser ==

Supprimer un utilisateur, ou retirer un utilisateur d'un groupe.

Supprimer l'utilisateur toto (son répertoire n'est pas supprimé)
 # deluser toto

 # del user toto audio

== gpasswd ==

gpasswd est utilisé pour administrer le fichier /etc/group ainsi que le fichier /etc/gshadow.

Chaque groupe peut avoir un administrateur, des membres et un mot de passe. Les administrateurs systèmes possèdent les droits d'administrateur de groupe et de membre, il peuvent utiliser l'option -A pour définir le(s) administrateur(s) de groupe et l'option -M pour en définir les membres
Un administrateur de groupe peut ajouter ou supprimer des utilisateurs en utilisant respectivement les options -a et -d . Les administrateurs peuvent utiliser l'option -r pour supprimer le mot de passe d'un groupe.

Ajouter un administrateur à un groupe :
 #  gpasswd -a utilisateur groupe

Enlever le mot de passe d'un groupe :
 # gpasswd -r groupe

== groupadd ==

Création de groupe avec les options de la commande plus celles par défaut du système.

 # grouppadd toto

== groupdel ==

Supprimer un groupe

 # groupdel toto

== groupmod ==

Modification des propriétés d'un groupe du système.
Les options sont modification de l'ID, du mot de passe, du nom du groupe.

Modification du GID du groupe scanner
 # groupmod -g 4713 scanner

Modification du nom du groupe1 pour groupe2
 # groupmod groupe2 groupe1

== id ==
Permet de savoir quel numéro - uid (comme user id) et quel numéro de groupe sont associés à utilisateur. Exemple

 $ id toto
 uid=1000(toto) gid=1000(toto) groupes=1000(toto),20(dialout),24(cdrom),25(floppy),29(audio),44(video),46(plugdev),110(netdev)

== passwd ==

La commande passwd permet de changer son mot de passe. Ou, en root, changer le mot de passe d'un utilisateur (l'ancien mot de passe est alors demandé)

Elle demande :

# le mot de passe actuel (Current),
# le nouveau (New),
# puis la confirmation du nouveau (New again), afin d'éviter les erreurs. 

Remarque: Un mot de passe n'est jamais affiché et ne doit jamais l'être.

 $ passwd
 # passwd toto

== useradd ==

Créer un nouvel utilisateur ou mettre à jour l'information par défaut sur un nouvel utilisateur .

Le résultat est le même que pour la commande adduser, mais la syntaxe est différente. adduser est une commande interactive : elle pose des questions, il faut y répondre. useradd est une commande non interactive, il est possible de s'en servir pas exemple dans un script.

Ajouter un nouvel utilisateur (Attention, le mot de passe doit être crypté)
 # useradd -m -p MotDePasse login

== userdel ==

Effacer un compte utilisateur et les fichiers associés. La commande userdel modifie les fichiers des comptes du système, en supprimant toutes les entrées qui se réfèrent à login. L'utilisateur nommé doit exister. L'utilisateur ne doit pas être connecté...

Option : -r Les fichiers présents dans le répertoire personnel de l'utilisateur seront supprimés en même temps que le répertoire lui-même. Les fichiers situés dans d'autres systèmes de fichiers devront être recherchés et éliminés manuellement. 

Effacer l'utilisateur &quot;toto&quot; et ses fichiers dans /home/toto
 # userdel -r toto

== usermod ==

La commande usermod modifie les fichiers d’administration des comptes du système selon les modifications qui ont été indiquées sur la ligne de commande.

Ajouter l'utilisateur toto au groupe audio sans supprimer toto de son groupe originel.
 # usermod -aG audio toto

Renommer le répertoire (dossier) utilisateur et changer son nom. Pratique lorsque le pc change de mains. (Changer l'utilisateur toto en titi et changer son /home/toto en /home/titi)
 # usermod -d /home/titi -m -l titi toto

[[Catégorie:Commandes de base]]</text>
      <sha1>g6cd0s4atksiy3rkbwpr8vyu2qxwpxf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3533</id>
      <parentid>3532</parentid>
      <timestamp>2011-11-02T00:22:42Z</timestamp>
      <contributor>
        <username>Martin mtl</username>
        <id>173</id>
      </contributor>
      <comment>/* chmod */</comment>
      <text xml:space="preserve" bytes="8123">== Droits dans un système Debian ==
Les commandes que cette page vous présente permettent de manipuler les utilisateurs et les groupes du système d'exploitation. Ces deux notions sont très fortement liées à la gestion des droits dans le système d'exploitation. C'est pour cela que nous commençons par vous expliquer ce point.

Sous GNU/Linux (comme sous beaucoup d'autres Unix), les droits sont gérés au travers d'utilisateurs et de groupe. Chaque utilisateur appartient à un ou plusieurs groupe(s) (s'il appartient à plusieurs groupes l'un d'entre eux sera son principal groupe).

Pour chaque fichier (que ce soit un fichier, un dossier, un exécutable, un périphérique ou quoi que ce soit d'autre), il est défini son propriétaire et son groupe. Ces deux attributs peuvent changer au cours du temps (les commandes ci-dessous vous indique comment faire). Ces deux attributs n'ont pas de liens entre eux ; le propriétaire d'un fichier ne doit pas nécessairement appartenir au groupe de celui-ci.

Ensuite l'idée consiste à définir des droits pour chaque fichier. Les droits sont différents pour le propriétaire, pour le groupe ou pour les autres utilisateurs du système. Ces droits s'expriment avec 3 attributs chacun, le droit en lecture, en écriture et en exécution. Nous allons prendre un exemple :

Imaginons le fichier ''fic.txt'', son propriétaire est l'utilisateur jean et son groupe est famille. On peut vouloir que l'utilisateur jean puisse lire et écrire dans ce fichier, que les utilisateurs du groupe famille puissent uniquement lire le fichier et les autres ne puissent pas ni lire ni écrire dedans.

Les commandes d'utilisateurs et de groupes

== adduser ==

Ajouter un utilisateur.

Ajouter l'utilisateur ''toto'' au système. Un mot de passe sera demandé pour ce nouvel utilisateur ainsi que quelques informations
 # adduser toto

Ajouter l'utilisateur toto au groupe &quot;audio&quot;
 # adduser toto audio

== chgrp ==

Change l'appartenance d'un fichier à un groupe. On ne peut donner l'appartenance de groupe à un fichier qu'à un groupe dont on est membre... L'administrateur peut, lui, affecter un fichier à n'importe quel groupe.

Donner le groupe &quot;audio&quot; au fichier &quot;fichier&quot;
 $ chgrp audio fichier

Changer récursivement l'appartenance à un groupe. Le dossier et les fichiers contenus dans ce dossier changerons de groupe.
 $ chgrp -R audio /home/toto/dossier

== chmod ==

Changement des bits de comportement d'un ou de plusieurs fichiers; Il est utilisé pour changer les droits sur un fichier.

Donner le droit en lecture/écriture au propriétaire et lecture au groupe :
 $ chmod 640 fichier

chmod peut s'utiliser avec des chiffres ou des lettres


 Droit 	                                    Valeur alphanumérique  Valeur octale
 aucun droit 	                                   --- 	                0
 exécution seulement 	                           --x 	                1
 écriture seulement 	                           -w- 	                2
 écriture et exécution 	                           -wx 	                3
 lecture seulement 	                           r-- 	                4
 lecture et exécution 	                           r-x 	                5
 lecture et écriture 	                           rw- 	                6
 tous les droits (lecture, écriture et exécution)   rwx          	7

Exemple de chmod plus complexe:
La commande ci-dessous fera un chmod 664 récursif sur les fichiers (et uniquement sur les fichiers) dans le répertoire /home/rep/

 $ find /home/rep/ -type f -exec chmod 664 {} \;

Faites très attention avec la commande chmod qui peut être très dangereuse pour votre système si elle est utilisée à mauvais escient...
(vous ne serez pas toujours capable de retrouver les droits d'origine sur vos fichiers en cas de mauvaise manipulation)

== chown ==

Changer le propriétaire et/ou le groupe d'un fichier

Changer le propriétaire d'un fichier
 $ chown toto fichier

Changer le groupe d'un fichier (équivalent à chgrp)
 $ chown :toto fichier

Changer le propriétaire et le groupe d'un fichier
 $ chown toto:audio fichier

Comme d'habitude l'option -R permet de traiter récursivement la commande. Changer l'appartenance d'un dossier et de tous les fichiers qu'il contient :

 $ chown -R toto:audio /home/toto/repertoire

Remarquer le R majuscule

== deluser ==

Supprimer un utilisateur, ou retirer un utilisateur d'un groupe.

Supprimer l'utilisateur toto (son répertoire n'est pas supprimé)
 # deluser toto

 # del user toto audio

== gpasswd ==

gpasswd est utilisé pour administrer le fichier /etc/group ainsi que le fichier /etc/gshadow.

Chaque groupe peut avoir un administrateur, des membres et un mot de passe. Les administrateurs systèmes possèdent les droits d'administrateur de groupe et de membre, il peuvent utiliser l'option -A pour définir le(s) administrateur(s) de groupe et l'option -M pour en définir les membres
Un administrateur de groupe peut ajouter ou supprimer des utilisateurs en utilisant respectivement les options -a et -d . Les administrateurs peuvent utiliser l'option -r pour supprimer le mot de passe d'un groupe.

Ajouter un administrateur à un groupe :
 #  gpasswd -a utilisateur groupe

Enlever le mot de passe d'un groupe :
 # gpasswd -r groupe

== groupadd ==

Création de groupe avec les options de la commande plus celles par défaut du système.

 # grouppadd toto

== groupdel ==

Supprimer un groupe

 # groupdel toto

== groupmod ==

Modification des propriétés d'un groupe du système.
Les options sont modification de l'ID, du mot de passe, du nom du groupe.

Modification du GID du groupe scanner
 # groupmod -g 4713 scanner

Modification du nom du groupe1 pour groupe2
 # groupmod groupe2 groupe1

== id ==
Permet de savoir quel numéro - uid (comme user id) et quel numéro de groupe sont associés à utilisateur. Exemple

 $ id toto
 uid=1000(toto) gid=1000(toto) groupes=1000(toto),20(dialout),24(cdrom),25(floppy),29(audio),44(video),46(plugdev),110(netdev)

== passwd ==

La commande passwd permet de changer son mot de passe. Ou, en root, changer le mot de passe d'un utilisateur (l'ancien mot de passe est alors demandé)

Elle demande :

# le mot de passe actuel (Current),
# le nouveau (New),
# puis la confirmation du nouveau (New again), afin d'éviter les erreurs. 

Remarque: Un mot de passe n'est jamais affiché et ne doit jamais l'être.

 $ passwd
 # passwd toto

== useradd ==

Créer un nouvel utilisateur ou mettre à jour l'information par défaut sur un nouvel utilisateur .

Le résultat est le même que pour la commande adduser, mais la syntaxe est différente. adduser est une commande interactive : elle pose des questions, il faut y répondre. useradd est une commande non interactive, il est possible de s'en servir pas exemple dans un script.

Ajouter un nouvel utilisateur (Attention, le mot de passe doit être crypté)
 # useradd -m -p MotDePasse login

== userdel ==

Effacer un compte utilisateur et les fichiers associés. La commande userdel modifie les fichiers des comptes du système, en supprimant toutes les entrées qui se réfèrent à login. L'utilisateur nommé doit exister. L'utilisateur ne doit pas être connecté...

Option : -r Les fichiers présents dans le répertoire personnel de l'utilisateur seront supprimés en même temps que le répertoire lui-même. Les fichiers situés dans d'autres systèmes de fichiers devront être recherchés et éliminés manuellement. 

Effacer l'utilisateur &quot;toto&quot; et ses fichiers dans /home/toto
 # userdel -r toto

== usermod ==

La commande usermod modifie les fichiers d’administration des comptes du système selon les modifications qui ont été indiquées sur la ligne de commande.

Ajouter l'utilisateur toto au groupe audio sans supprimer toto de son groupe originel.
 # usermod -aG audio toto

Renommer le répertoire (dossier) utilisateur et changer son nom. Pratique lorsque le pc change de mains. (Changer l'utilisateur toto en titi et changer son /home/toto en /home/titi)
 # usermod -d /home/titi -m -l titi toto

[[Catégorie:Commandes de base]]</text>
      <sha1>h9bpjdib5fz1hbi7sfpe428ugsddhx0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3539</id>
      <parentid>3533</parentid>
      <timestamp>2011-11-02T10:13:29Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Droits dans un système Debian */</comment>
      <text xml:space="preserve" bytes="8119">== Droits dans un système Debian ==
Les commandes que cette page vous présente permettent de manipuler les utilisateurs et les groupes du système d'exploitation. Ces deux notions sont très fortement liées à la gestion des droits dans le système d'exploitation. C'est pour cela que nous commençons par vous expliquer ce point.

Sous GNU/Linux (comme sous beaucoup d'autres Unix), les droits sont gérés au travers d'utilisateurs et de groupe. Chaque utilisateur appartient à un ou plusieurs groupe(s) (s'il appartient à plusieurs groupes l'un d'entre eux sera son principal groupe).

Pour chaque fichier (que ce soit un fichier, un dossier, un exécutable, un périphérique ou quoi que ce soit d'autre), il est défini son propriétaire et son groupe. Ces deux attributs peuvent changer au cours du temps (les commandes ci-dessous vous indique comment faire). Ces deux attributs n'ont pas de liens entre eux ; le propriétaire d'un fichier ne doit pas nécessairement appartenir au groupe de celui-ci.

Ensuite l'idée consiste à définir des droits pour chaque fichier. Les droits sont différents pour le propriétaire, pour le groupe ou pour les autres utilisateurs du système. Ces droits s'expriment avec 3 attributs chacun, le droit en lecture, en écriture et en exécution. Nous allons prendre un exemple :

Imaginons le fichier ''fic.txt'', son propriétaire est l'utilisateur jean et son groupe est famille. On peut vouloir que l'utilisateur jean puisse lire et écrire dans ce fichier, que les utilisateurs du groupe famille puissent uniquement lire le fichier et les autres ne puissent ni lire ni écrire dedans.

Les commandes d'utilisateurs et de groupes

== adduser ==

Ajouter un utilisateur.

Ajouter l'utilisateur ''toto'' au système. Un mot de passe sera demandé pour ce nouvel utilisateur ainsi que quelques informations
 # adduser toto

Ajouter l'utilisateur toto au groupe &quot;audio&quot;
 # adduser toto audio

== chgrp ==

Change l'appartenance d'un fichier à un groupe. On ne peut donner l'appartenance de groupe à un fichier qu'à un groupe dont on est membre... L'administrateur peut, lui, affecter un fichier à n'importe quel groupe.

Donner le groupe &quot;audio&quot; au fichier &quot;fichier&quot;
 $ chgrp audio fichier

Changer récursivement l'appartenance à un groupe. Le dossier et les fichiers contenus dans ce dossier changerons de groupe.
 $ chgrp -R audio /home/toto/dossier

== chmod ==

Changement des bits de comportement d'un ou de plusieurs fichiers; Il est utilisé pour changer les droits sur un fichier.

Donner le droit en lecture/écriture au propriétaire et lecture au groupe :
 $ chmod 640 fichier

chmod peut s'utiliser avec des chiffres ou des lettres


 Droit 	                                    Valeur alphanumérique  Valeur octale
 aucun droit 	                                   --- 	                0
 exécution seulement 	                           --x 	                1
 écriture seulement 	                           -w- 	                2
 écriture et exécution 	                           -wx 	                3
 lecture seulement 	                           r-- 	                4
 lecture et exécution 	                           r-x 	                5
 lecture et écriture 	                           rw- 	                6
 tous les droits (lecture, écriture et exécution)   rwx          	7

Exemple de chmod plus complexe:
La commande ci-dessous fera un chmod 664 récursif sur les fichiers (et uniquement sur les fichiers) dans le répertoire /home/rep/

 $ find /home/rep/ -type f -exec chmod 664 {} \;

Faites très attention avec la commande chmod qui peut être très dangereuse pour votre système si elle est utilisée à mauvais escient...
(vous ne serez pas toujours capable de retrouver les droits d'origine sur vos fichiers en cas de mauvaise manipulation)

== chown ==

Changer le propriétaire et/ou le groupe d'un fichier

Changer le propriétaire d'un fichier
 $ chown toto fichier

Changer le groupe d'un fichier (équivalent à chgrp)
 $ chown :toto fichier

Changer le propriétaire et le groupe d'un fichier
 $ chown toto:audio fichier

Comme d'habitude l'option -R permet de traiter récursivement la commande. Changer l'appartenance d'un dossier et de tous les fichiers qu'il contient :

 $ chown -R toto:audio /home/toto/repertoire

Remarquer le R majuscule

== deluser ==

Supprimer un utilisateur, ou retirer un utilisateur d'un groupe.

Supprimer l'utilisateur toto (son répertoire n'est pas supprimé)
 # deluser toto

 # del user toto audio

== gpasswd ==

gpasswd est utilisé pour administrer le fichier /etc/group ainsi que le fichier /etc/gshadow.

Chaque groupe peut avoir un administrateur, des membres et un mot de passe. Les administrateurs systèmes possèdent les droits d'administrateur de groupe et de membre, il peuvent utiliser l'option -A pour définir le(s) administrateur(s) de groupe et l'option -M pour en définir les membres
Un administrateur de groupe peut ajouter ou supprimer des utilisateurs en utilisant respectivement les options -a et -d . Les administrateurs peuvent utiliser l'option -r pour supprimer le mot de passe d'un groupe.

Ajouter un administrateur à un groupe :
 #  gpasswd -a utilisateur groupe

Enlever le mot de passe d'un groupe :
 # gpasswd -r groupe

== groupadd ==

Création de groupe avec les options de la commande plus celles par défaut du système.

 # grouppadd toto

== groupdel ==

Supprimer un groupe

 # groupdel toto

== groupmod ==

Modification des propriétés d'un groupe du système.
Les options sont modification de l'ID, du mot de passe, du nom du groupe.

Modification du GID du groupe scanner
 # groupmod -g 4713 scanner

Modification du nom du groupe1 pour groupe2
 # groupmod groupe2 groupe1

== id ==
Permet de savoir quel numéro - uid (comme user id) et quel numéro de groupe sont associés à utilisateur. Exemple

 $ id toto
 uid=1000(toto) gid=1000(toto) groupes=1000(toto),20(dialout),24(cdrom),25(floppy),29(audio),44(video),46(plugdev),110(netdev)

== passwd ==

La commande passwd permet de changer son mot de passe. Ou, en root, changer le mot de passe d'un utilisateur (l'ancien mot de passe est alors demandé)

Elle demande :

# le mot de passe actuel (Current),
# le nouveau (New),
# puis la confirmation du nouveau (New again), afin d'éviter les erreurs. 

Remarque: Un mot de passe n'est jamais affiché et ne doit jamais l'être.

 $ passwd
 # passwd toto

== useradd ==

Créer un nouvel utilisateur ou mettre à jour l'information par défaut sur un nouvel utilisateur .

Le résultat est le même que pour la commande adduser, mais la syntaxe est différente. adduser est une commande interactive : elle pose des questions, il faut y répondre. useradd est une commande non interactive, il est possible de s'en servir pas exemple dans un script.

Ajouter un nouvel utilisateur (Attention, le mot de passe doit être crypté)
 # useradd -m -p MotDePasse login

== userdel ==

Effacer un compte utilisateur et les fichiers associés. La commande userdel modifie les fichiers des comptes du système, en supprimant toutes les entrées qui se réfèrent à login. L'utilisateur nommé doit exister. L'utilisateur ne doit pas être connecté...

Option : -r Les fichiers présents dans le répertoire personnel de l'utilisateur seront supprimés en même temps que le répertoire lui-même. Les fichiers situés dans d'autres systèmes de fichiers devront être recherchés et éliminés manuellement. 

Effacer l'utilisateur &quot;toto&quot; et ses fichiers dans /home/toto
 # userdel -r toto

== usermod ==

La commande usermod modifie les fichiers d’administration des comptes du système selon les modifications qui ont été indiquées sur la ligne de commande.

Ajouter l'utilisateur toto au groupe audio sans supprimer toto de son groupe originel.
 # usermod -aG audio toto

Renommer le répertoire (dossier) utilisateur et changer son nom. Pratique lorsque le pc change de mains. (Changer l'utilisateur toto en titi et changer son /home/toto en /home/titi)
 # usermod -d /home/titi -m -l titi toto

[[Catégorie:Commandes de base]]</text>
      <sha1>pf9v7xyvgmq04iqv8l5sg8jwkqytzz1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4104</id>
      <parentid>3539</parentid>
      <timestamp>2012-04-28T08:45:36Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="8148">== Droits dans un système Debian ==
Les commandes que cette page vous présente permettent de manipuler les utilisateurs et les groupes du système d'exploitation. Ces deux notions sont très fortement liées à la gestion des droits dans le système d'exploitation. C'est pour cela que nous commençons par vous expliquer ce point.

Sous GNU/Linux (comme sous beaucoup d'autres Unix), les droits sont gérés au travers d'utilisateurs et de groupe. Chaque utilisateur appartient à un ou plusieurs groupe(s) (s'il appartient à plusieurs groupes l'un d'entre eux sera son principal groupe).

Pour chaque fichier (que ce soit un fichier, un dossier, un exécutable, un périphérique ou quoi que ce soit d'autre), il est défini son propriétaire et son groupe. Ces deux attributs peuvent changer au cours du temps (les commandes ci-dessous vous indique comment faire). Ces deux attributs n'ont pas de liens entre eux ; le propriétaire d'un fichier ne doit pas nécessairement appartenir au groupe de celui-ci.

Ensuite l'idée consiste à définir des droits pour chaque fichier. Les droits sont différents pour le propriétaire, pour le groupe ou pour les autres utilisateurs du système. Ces droits s'expriment avec 3 attributs chacun, le droit en lecture, en écriture et en exécution. Nous allons prendre un exemple :

Imaginons le fichier ''fic.txt'', son propriétaire est l'utilisateur jean et son groupe est famille. On peut vouloir que l'utilisateur jean puisse lire et écrire dans ce fichier, que les utilisateurs du groupe famille puissent uniquement lire le fichier et les autres ne puissent ni lire ni écrire dedans.

Les commandes d'utilisateurs et de groupes

== adduser ==

Ajouter un utilisateur.

Ajouter l'utilisateur ''toto'' au système. Un mot de passe sera demandé pour ce nouvel utilisateur ainsi que quelques informations
 # adduser toto

Ajouter l'utilisateur toto au groupe &quot;audio&quot;
 # adduser toto audio

== chgrp ==

Change l'appartenance d'un fichier à un groupe. On ne peut donner l'appartenance de groupe à un fichier qu'à un groupe dont on est membre... L'administrateur peut, lui, affecter un fichier à n'importe quel groupe.

Donner le groupe &quot;audio&quot; au fichier &quot;fichier&quot;
 $ chgrp audio fichier

Changer récursivement l'appartenance à un groupe. Le dossier et les fichiers contenus dans ce dossier changerons de groupe.
 $ chgrp -R audio /home/toto/dossier

== chmod ==

Changement des bits de comportement d'un ou de plusieurs fichiers; Il est utilisé pour changer les droits sur un fichier.

Donner le droit en lecture/écriture au propriétaire et lecture au groupe :
 $ chmod 640 fichier

chmod peut s'utiliser avec des chiffres ou des lettres


 Droit 	                                    Valeur alphanumérique  Valeur octale
 aucun droit 	                                   --- 	                0
 exécution seulement 	                           --x 	                1
 écriture seulement 	                           -w- 	                2
 écriture et exécution 	                           -wx 	                3
 lecture seulement 	                           r-- 	                4
 lecture et exécution 	                           r-x 	                5
 lecture et écriture 	                           rw- 	                6
 tous les droits (lecture, écriture et exécution)   rwx          	7

Exemple de chmod plus complexe:
La commande ci-dessous fera un chmod 664 récursif sur les fichiers (et uniquement sur les fichiers) dans le répertoire /home/rep/

 $ find /home/rep/ -type f -exec chmod 664 {} \;

Faites très attention avec la commande chmod qui peut être très dangereuse pour votre système si elle est utilisée à mauvais escient...
(vous ne serez pas toujours capable de retrouver les droits d'origine sur vos fichiers en cas de mauvaise manipulation)

== chown ==

Changer le propriétaire et/ou le groupe d'un fichier

Changer le propriétaire d'un fichier
 $ chown toto fichier

Changer le groupe d'un fichier (équivalent à chgrp)
 $ chown :toto fichier

Changer le propriétaire et le groupe d'un fichier
 $ chown toto:audio fichier

Comme d'habitude l'option -R permet de traiter récursivement la commande. Changer l'appartenance d'un dossier et de tous les fichiers qu'il contient :

 $ chown -R toto:audio /home/toto/repertoire

Remarquer le R majuscule

== deluser ==

Supprimer un utilisateur, ou retirer un utilisateur d'un groupe.

Supprimer l'utilisateur toto (son répertoire n'est pas supprimé)
 # deluser toto

 # del user toto audio

== gpasswd ==

gpasswd est utilisé pour administrer le fichier /etc/group ainsi que le fichier /etc/gshadow.

Chaque groupe peut avoir un administrateur, des membres et un mot de passe. Les administrateurs systèmes possèdent les droits d'administrateur de groupe et de membre, il peuvent utiliser l'option -A pour définir le(s) administrateur(s) de groupe et l'option -M pour en définir les membres
Un administrateur de groupe peut ajouter ou supprimer des utilisateurs en utilisant respectivement les options -a et -d . Les administrateurs peuvent utiliser l'option -r pour supprimer le mot de passe d'un groupe.

Ajouter un administrateur à un groupe :
 #  gpasswd -a utilisateur groupe

Enlever le mot de passe d'un groupe :
 # gpasswd -r groupe

== groupadd ==

Création de groupe avec les options de la commande plus celles par défaut du système.

 # grouppadd toto

== groupdel ==

Supprimer un groupe

 # groupdel toto

== groupmod ==

Modification des propriétés d'un groupe du système.
Les options sont modification de l'ID, du mot de passe, du nom du groupe.

Modification du GID du groupe scanner
 # groupmod -g 4713 scanner

Modification du nom du groupe1 pour groupe2
 # groupmod groupe2 groupe1

== id ==
Permet de savoir quel numéro - uid (comme user id) et quel numéro de groupe sont associés à utilisateur. Exemple

 $ id toto
 uid=1000(toto) gid=1000(toto) groupes=1000(toto),20(dialout),24(cdrom),25(floppy),29(audio),44(video),46(plugdev),110(netdev)

== passwd ==

La commande passwd permet de changer son mot de passe. Ou, en root, changer le mot de passe d'un utilisateur (l'ancien mot de passe est alors demandé)

Elle demande :

# le mot de passe actuel (Current),
# le nouveau (New),
# puis la confirmation du nouveau (New again), afin d'éviter les erreurs. 

Remarque: Un mot de passe n'est jamais affiché et ne doit jamais l'être.

 $ passwd
 # passwd toto

== useradd ==

Créer un nouvel utilisateur ou mettre à jour l'information par défaut sur un nouvel utilisateur .

Le résultat est le même que pour la commande adduser, mais la syntaxe est différente. adduser est une commande interactive : elle pose des questions, il faut y répondre. useradd est une commande non interactive, il est possible de s'en servir pas exemple dans un script.

Ajouter un nouvel utilisateur (Attention, le mot de passe doit être crypté)
 # useradd -m -p MotDePasse login

== userdel ==

Effacer un compte utilisateur et les fichiers associés. La commande userdel modifie les fichiers des comptes du système, en supprimant toutes les entrées qui se réfèrent à login. L'utilisateur nommé doit exister. L'utilisateur ne doit pas être connecté...

Option : -r Les fichiers présents dans le répertoire personnel de l'utilisateur seront supprimés en même temps que le répertoire lui-même. Les fichiers situés dans d'autres systèmes de fichiers devront être recherchés et éliminés manuellement. 

Effacer l'utilisateur &quot;toto&quot; et ses fichiers dans /home/toto
 # userdel -r toto

== usermod ==

La commande usermod modifie les fichiers d’administration des comptes du système selon les modifications qui ont été indiquées sur la ligne de commande.

Ajouter l'utilisateur toto au groupe audio sans supprimer toto de son groupe originel.
 # usermod -aG audio toto

Renommer le répertoire (dossier) utilisateur et changer son nom. Pratique lorsque le pc change de mains. (Changer l'utilisateur toto en titi et changer son /home/toto en /home/titi)
 # usermod -d /home/titi -m -l titi toto

[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>iqezp8309pv86es5fce1fnpjiwz1cnm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5714</id>
      <parentid>4104</parentid>
      <timestamp>2014-08-20T03:50:58Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Droits dans un système Debian */ chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="8152">== Droits dans un système Debian ==
Les commandes que cette page vous présente permettent de manipuler les utilisateurs et les groupes du système d'exploitation. Ces deux notions sont très fortement liées à la gestion des droits dans le système d'exploitation. C'est pour cela que nous commençons par vous expliquer ce point.

Sous GNU/Linux (comme sous beaucoup d'autres Unix), les droits sont gérés au travers d'utilisateurs et de groupe. Chaque utilisateur appartient à un ou plusieurs groupe(s) (s'il appartient à plusieurs groupes l'un d'entre eux sera son principal groupe).

Pour chaque fichier (que ce soit un fichier, un répertoire, un exécutable, un périphérique ou quoi que ce soit d'autre), il est défini son propriétaire et son groupe. Ces deux attributs peuvent changer au cours du temps (les commandes ci-dessous vous indique comment faire). Ces deux attributs n'ont pas de liens entre eux ; le propriétaire d'un fichier ne doit pas nécessairement appartenir au groupe de celui-ci.

Ensuite l'idée consiste à définir des droits pour chaque fichier. Les droits sont différents pour le propriétaire, pour le groupe ou pour les autres utilisateurs du système. Ces droits s'expriment avec 3 attributs chacun, le droit en lecture, en écriture et en exécution. Nous allons prendre un exemple :

Imaginons le fichier ''fic.txt'', son propriétaire est l'utilisateur jean et son groupe est famille. On peut vouloir que l'utilisateur jean puisse lire et écrire dans ce fichier, que les utilisateurs du groupe famille puissent uniquement lire le fichier et les autres ne puissent ni lire ni écrire dedans.

Les commandes d'utilisateurs et de groupes

== adduser ==

Ajouter un utilisateur.

Ajouter l'utilisateur ''toto'' au système. Un mot de passe sera demandé pour ce nouvel utilisateur ainsi que quelques informations
 # adduser toto

Ajouter l'utilisateur toto au groupe &quot;audio&quot;
 # adduser toto audio

== chgrp ==

Change l'appartenance d'un fichier à un groupe. On ne peut donner l'appartenance de groupe à un fichier qu'à un groupe dont on est membre... L'administrateur peut, lui, affecter un fichier à n'importe quel groupe.

Donner le groupe &quot;audio&quot; au fichier &quot;fichier&quot;
 $ chgrp audio fichier

Changer récursivement l'appartenance à un groupe. Le dossier et les fichiers contenus dans ce dossier changerons de groupe.
 $ chgrp -R audio /home/toto/dossier

== chmod ==

Changement des bits de comportement d'un ou de plusieurs fichiers; Il est utilisé pour changer les droits sur un fichier.

Donner le droit en lecture/écriture au propriétaire et lecture au groupe :
 $ chmod 640 fichier

chmod peut s'utiliser avec des chiffres ou des lettres


 Droit 	                                    Valeur alphanumérique  Valeur octale
 aucun droit 	                                   --- 	                0
 exécution seulement 	                           --x 	                1
 écriture seulement 	                           -w- 	                2
 écriture et exécution 	                           -wx 	                3
 lecture seulement 	                           r-- 	                4
 lecture et exécution 	                           r-x 	                5
 lecture et écriture 	                           rw- 	                6
 tous les droits (lecture, écriture et exécution)   rwx          	7

Exemple de chmod plus complexe:
La commande ci-dessous fera un chmod 664 récursif sur les fichiers (et uniquement sur les fichiers) dans le répertoire /home/rep/

 $ find /home/rep/ -type f -exec chmod 664 {} \;

Faites très attention avec la commande chmod qui peut être très dangereuse pour votre système si elle est utilisée à mauvais escient...
(vous ne serez pas toujours capable de retrouver les droits d'origine sur vos fichiers en cas de mauvaise manipulation)

== chown ==

Changer le propriétaire et/ou le groupe d'un fichier

Changer le propriétaire d'un fichier
 $ chown toto fichier

Changer le groupe d'un fichier (équivalent à chgrp)
 $ chown :toto fichier

Changer le propriétaire et le groupe d'un fichier
 $ chown toto:audio fichier

Comme d'habitude l'option -R permet de traiter récursivement la commande. Changer l'appartenance d'un dossier et de tous les fichiers qu'il contient :

 $ chown -R toto:audio /home/toto/repertoire

Remarquer le R majuscule

== deluser ==

Supprimer un utilisateur, ou retirer un utilisateur d'un groupe.

Supprimer l'utilisateur toto (son répertoire n'est pas supprimé)
 # deluser toto

 # del user toto audio

== gpasswd ==

gpasswd est utilisé pour administrer le fichier /etc/group ainsi que le fichier /etc/gshadow.

Chaque groupe peut avoir un administrateur, des membres et un mot de passe. Les administrateurs systèmes possèdent les droits d'administrateur de groupe et de membre, il peuvent utiliser l'option -A pour définir le(s) administrateur(s) de groupe et l'option -M pour en définir les membres
Un administrateur de groupe peut ajouter ou supprimer des utilisateurs en utilisant respectivement les options -a et -d . Les administrateurs peuvent utiliser l'option -r pour supprimer le mot de passe d'un groupe.

Ajouter un administrateur à un groupe :
 #  gpasswd -a utilisateur groupe

Enlever le mot de passe d'un groupe :
 # gpasswd -r groupe

== groupadd ==

Création de groupe avec les options de la commande plus celles par défaut du système.

 # grouppadd toto

== groupdel ==

Supprimer un groupe

 # groupdel toto

== groupmod ==

Modification des propriétés d'un groupe du système.
Les options sont modification de l'ID, du mot de passe, du nom du groupe.

Modification du GID du groupe scanner
 # groupmod -g 4713 scanner

Modification du nom du groupe1 pour groupe2
 # groupmod groupe2 groupe1

== id ==
Permet de savoir quel numéro - uid (comme user id) et quel numéro de groupe sont associés à utilisateur. Exemple

 $ id toto
 uid=1000(toto) gid=1000(toto) groupes=1000(toto),20(dialout),24(cdrom),25(floppy),29(audio),44(video),46(plugdev),110(netdev)

== passwd ==

La commande passwd permet de changer son mot de passe. Ou, en root, changer le mot de passe d'un utilisateur (l'ancien mot de passe est alors demandé)

Elle demande :

# le mot de passe actuel (Current),
# le nouveau (New),
# puis la confirmation du nouveau (New again), afin d'éviter les erreurs. 

Remarque: Un mot de passe n'est jamais affiché et ne doit jamais l'être.

 $ passwd
 # passwd toto

== useradd ==

Créer un nouvel utilisateur ou mettre à jour l'information par défaut sur un nouvel utilisateur .

Le résultat est le même que pour la commande adduser, mais la syntaxe est différente. adduser est une commande interactive : elle pose des questions, il faut y répondre. useradd est une commande non interactive, il est possible de s'en servir pas exemple dans un script.

Ajouter un nouvel utilisateur (Attention, le mot de passe doit être crypté)
 # useradd -m -p MotDePasse login

== userdel ==

Effacer un compte utilisateur et les fichiers associés. La commande userdel modifie les fichiers des comptes du système, en supprimant toutes les entrées qui se réfèrent à login. L'utilisateur nommé doit exister. L'utilisateur ne doit pas être connecté...

Option : -r Les fichiers présents dans le répertoire personnel de l'utilisateur seront supprimés en même temps que le répertoire lui-même. Les fichiers situés dans d'autres systèmes de fichiers devront être recherchés et éliminés manuellement. 

Effacer l'utilisateur &quot;toto&quot; et ses fichiers dans /home/toto
 # userdel -r toto

== usermod ==

La commande usermod modifie les fichiers d’administration des comptes du système selon les modifications qui ont été indiquées sur la ligne de commande.

Ajouter l'utilisateur toto au groupe audio sans supprimer toto de son groupe originel.
 # usermod -aG audio toto

Renommer le répertoire (dossier) utilisateur et changer son nom. Pratique lorsque le pc change de mains. (Changer l'utilisateur toto en titi et changer son /home/toto en /home/titi)
 # usermod -d /home/titi -m -l titi toto

[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>cwvpphczc1x4svox9tfnfzfe00jf7m1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5715</id>
      <parentid>5714</parentid>
      <timestamp>2014-08-20T03:51:41Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* chgrp */ chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="8164">== Droits dans un système Debian ==
Les commandes que cette page vous présente permettent de manipuler les utilisateurs et les groupes du système d'exploitation. Ces deux notions sont très fortement liées à la gestion des droits dans le système d'exploitation. C'est pour cela que nous commençons par vous expliquer ce point.

Sous GNU/Linux (comme sous beaucoup d'autres Unix), les droits sont gérés au travers d'utilisateurs et de groupe. Chaque utilisateur appartient à un ou plusieurs groupe(s) (s'il appartient à plusieurs groupes l'un d'entre eux sera son principal groupe).

Pour chaque fichier (que ce soit un fichier, un répertoire, un exécutable, un périphérique ou quoi que ce soit d'autre), il est défini son propriétaire et son groupe. Ces deux attributs peuvent changer au cours du temps (les commandes ci-dessous vous indique comment faire). Ces deux attributs n'ont pas de liens entre eux ; le propriétaire d'un fichier ne doit pas nécessairement appartenir au groupe de celui-ci.

Ensuite l'idée consiste à définir des droits pour chaque fichier. Les droits sont différents pour le propriétaire, pour le groupe ou pour les autres utilisateurs du système. Ces droits s'expriment avec 3 attributs chacun, le droit en lecture, en écriture et en exécution. Nous allons prendre un exemple :

Imaginons le fichier ''fic.txt'', son propriétaire est l'utilisateur jean et son groupe est famille. On peut vouloir que l'utilisateur jean puisse lire et écrire dans ce fichier, que les utilisateurs du groupe famille puissent uniquement lire le fichier et les autres ne puissent ni lire ni écrire dedans.

Les commandes d'utilisateurs et de groupes

== adduser ==

Ajouter un utilisateur.

Ajouter l'utilisateur ''toto'' au système. Un mot de passe sera demandé pour ce nouvel utilisateur ainsi que quelques informations
 # adduser toto

Ajouter l'utilisateur toto au groupe &quot;audio&quot;
 # adduser toto audio

== chgrp ==

Change l'appartenance d'un fichier à un groupe. On ne peut donner l'appartenance de groupe à un fichier qu'à un groupe dont on est membre... L'administrateur peut, lui, affecter un fichier à n'importe quel groupe.

Donner le groupe &quot;audio&quot; au fichier &quot;fichier&quot;
 $ chgrp audio fichier

Changer récursivement l'appartenance à un groupe. Le répertoire et les fichiers contenus dans ce répertoire changerons de groupe.
 $ chgrp -R audio /home/toto/répertoire

== chmod ==

Changement des bits de comportement d'un ou de plusieurs fichiers; Il est utilisé pour changer les droits sur un fichier.

Donner le droit en lecture/écriture au propriétaire et lecture au groupe :
 $ chmod 640 fichier

chmod peut s'utiliser avec des chiffres ou des lettres


 Droit 	                                    Valeur alphanumérique  Valeur octale
 aucun droit 	                                   --- 	                0
 exécution seulement 	                           --x 	                1
 écriture seulement 	                           -w- 	                2
 écriture et exécution 	                           -wx 	                3
 lecture seulement 	                           r-- 	                4
 lecture et exécution 	                           r-x 	                5
 lecture et écriture 	                           rw- 	                6
 tous les droits (lecture, écriture et exécution)   rwx          	7

Exemple de chmod plus complexe:
La commande ci-dessous fera un chmod 664 récursif sur les fichiers (et uniquement sur les fichiers) dans le répertoire /home/rep/

 $ find /home/rep/ -type f -exec chmod 664 {} \;

Faites très attention avec la commande chmod qui peut être très dangereuse pour votre système si elle est utilisée à mauvais escient...
(vous ne serez pas toujours capable de retrouver les droits d'origine sur vos fichiers en cas de mauvaise manipulation)

== chown ==

Changer le propriétaire et/ou le groupe d'un fichier

Changer le propriétaire d'un fichier
 $ chown toto fichier

Changer le groupe d'un fichier (équivalent à chgrp)
 $ chown :toto fichier

Changer le propriétaire et le groupe d'un fichier
 $ chown toto:audio fichier

Comme d'habitude l'option -R permet de traiter récursivement la commande. Changer l'appartenance d'un dossier et de tous les fichiers qu'il contient :

 $ chown -R toto:audio /home/toto/repertoire

Remarquer le R majuscule

== deluser ==

Supprimer un utilisateur, ou retirer un utilisateur d'un groupe.

Supprimer l'utilisateur toto (son répertoire n'est pas supprimé)
 # deluser toto

 # del user toto audio

== gpasswd ==

gpasswd est utilisé pour administrer le fichier /etc/group ainsi que le fichier /etc/gshadow.

Chaque groupe peut avoir un administrateur, des membres et un mot de passe. Les administrateurs systèmes possèdent les droits d'administrateur de groupe et de membre, il peuvent utiliser l'option -A pour définir le(s) administrateur(s) de groupe et l'option -M pour en définir les membres
Un administrateur de groupe peut ajouter ou supprimer des utilisateurs en utilisant respectivement les options -a et -d . Les administrateurs peuvent utiliser l'option -r pour supprimer le mot de passe d'un groupe.

Ajouter un administrateur à un groupe :
 #  gpasswd -a utilisateur groupe

Enlever le mot de passe d'un groupe :
 # gpasswd -r groupe

== groupadd ==

Création de groupe avec les options de la commande plus celles par défaut du système.

 # grouppadd toto

== groupdel ==

Supprimer un groupe

 # groupdel toto

== groupmod ==

Modification des propriétés d'un groupe du système.
Les options sont modification de l'ID, du mot de passe, du nom du groupe.

Modification du GID du groupe scanner
 # groupmod -g 4713 scanner

Modification du nom du groupe1 pour groupe2
 # groupmod groupe2 groupe1

== id ==
Permet de savoir quel numéro - uid (comme user id) et quel numéro de groupe sont associés à utilisateur. Exemple

 $ id toto
 uid=1000(toto) gid=1000(toto) groupes=1000(toto),20(dialout),24(cdrom),25(floppy),29(audio),44(video),46(plugdev),110(netdev)

== passwd ==

La commande passwd permet de changer son mot de passe. Ou, en root, changer le mot de passe d'un utilisateur (l'ancien mot de passe est alors demandé)

Elle demande :

# le mot de passe actuel (Current),
# le nouveau (New),
# puis la confirmation du nouveau (New again), afin d'éviter les erreurs. 

Remarque: Un mot de passe n'est jamais affiché et ne doit jamais l'être.

 $ passwd
 # passwd toto

== useradd ==

Créer un nouvel utilisateur ou mettre à jour l'information par défaut sur un nouvel utilisateur .

Le résultat est le même que pour la commande adduser, mais la syntaxe est différente. adduser est une commande interactive : elle pose des questions, il faut y répondre. useradd est une commande non interactive, il est possible de s'en servir pas exemple dans un script.

Ajouter un nouvel utilisateur (Attention, le mot de passe doit être crypté)
 # useradd -m -p MotDePasse login

== userdel ==

Effacer un compte utilisateur et les fichiers associés. La commande userdel modifie les fichiers des comptes du système, en supprimant toutes les entrées qui se réfèrent à login. L'utilisateur nommé doit exister. L'utilisateur ne doit pas être connecté...

Option : -r Les fichiers présents dans le répertoire personnel de l'utilisateur seront supprimés en même temps que le répertoire lui-même. Les fichiers situés dans d'autres systèmes de fichiers devront être recherchés et éliminés manuellement. 

Effacer l'utilisateur &quot;toto&quot; et ses fichiers dans /home/toto
 # userdel -r toto

== usermod ==

La commande usermod modifie les fichiers d’administration des comptes du système selon les modifications qui ont été indiquées sur la ligne de commande.

Ajouter l'utilisateur toto au groupe audio sans supprimer toto de son groupe originel.
 # usermod -aG audio toto

Renommer le répertoire (dossier) utilisateur et changer son nom. Pratique lorsque le pc change de mains. (Changer l'utilisateur toto en titi et changer son /home/toto en /home/titi)
 # usermod -d /home/titi -m -l titi toto

[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>jug7eef7bkwmo0f11u389bqxsdahs3o</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5716</id>
      <parentid>5715</parentid>
      <timestamp>2014-08-20T03:52:06Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* chown */ chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="8168">== Droits dans un système Debian ==
Les commandes que cette page vous présente permettent de manipuler les utilisateurs et les groupes du système d'exploitation. Ces deux notions sont très fortement liées à la gestion des droits dans le système d'exploitation. C'est pour cela que nous commençons par vous expliquer ce point.

Sous GNU/Linux (comme sous beaucoup d'autres Unix), les droits sont gérés au travers d'utilisateurs et de groupe. Chaque utilisateur appartient à un ou plusieurs groupe(s) (s'il appartient à plusieurs groupes l'un d'entre eux sera son principal groupe).

Pour chaque fichier (que ce soit un fichier, un répertoire, un exécutable, un périphérique ou quoi que ce soit d'autre), il est défini son propriétaire et son groupe. Ces deux attributs peuvent changer au cours du temps (les commandes ci-dessous vous indique comment faire). Ces deux attributs n'ont pas de liens entre eux ; le propriétaire d'un fichier ne doit pas nécessairement appartenir au groupe de celui-ci.

Ensuite l'idée consiste à définir des droits pour chaque fichier. Les droits sont différents pour le propriétaire, pour le groupe ou pour les autres utilisateurs du système. Ces droits s'expriment avec 3 attributs chacun, le droit en lecture, en écriture et en exécution. Nous allons prendre un exemple :

Imaginons le fichier ''fic.txt'', son propriétaire est l'utilisateur jean et son groupe est famille. On peut vouloir que l'utilisateur jean puisse lire et écrire dans ce fichier, que les utilisateurs du groupe famille puissent uniquement lire le fichier et les autres ne puissent ni lire ni écrire dedans.

Les commandes d'utilisateurs et de groupes

== adduser ==

Ajouter un utilisateur.

Ajouter l'utilisateur ''toto'' au système. Un mot de passe sera demandé pour ce nouvel utilisateur ainsi que quelques informations
 # adduser toto

Ajouter l'utilisateur toto au groupe &quot;audio&quot;
 # adduser toto audio

== chgrp ==

Change l'appartenance d'un fichier à un groupe. On ne peut donner l'appartenance de groupe à un fichier qu'à un groupe dont on est membre... L'administrateur peut, lui, affecter un fichier à n'importe quel groupe.

Donner le groupe &quot;audio&quot; au fichier &quot;fichier&quot;
 $ chgrp audio fichier

Changer récursivement l'appartenance à un groupe. Le répertoire et les fichiers contenus dans ce répertoire changerons de groupe.
 $ chgrp -R audio /home/toto/répertoire

== chmod ==

Changement des bits de comportement d'un ou de plusieurs fichiers; Il est utilisé pour changer les droits sur un fichier.

Donner le droit en lecture/écriture au propriétaire et lecture au groupe :
 $ chmod 640 fichier

chmod peut s'utiliser avec des chiffres ou des lettres


 Droit 	                                    Valeur alphanumérique  Valeur octale
 aucun droit 	                                   --- 	                0
 exécution seulement 	                           --x 	                1
 écriture seulement 	                           -w- 	                2
 écriture et exécution 	                           -wx 	                3
 lecture seulement 	                           r-- 	                4
 lecture et exécution 	                           r-x 	                5
 lecture et écriture 	                           rw- 	                6
 tous les droits (lecture, écriture et exécution)   rwx          	7

Exemple de chmod plus complexe:
La commande ci-dessous fera un chmod 664 récursif sur les fichiers (et uniquement sur les fichiers) dans le répertoire /home/rep/

 $ find /home/rep/ -type f -exec chmod 664 {} \;

Faites très attention avec la commande chmod qui peut être très dangereuse pour votre système si elle est utilisée à mauvais escient...
(vous ne serez pas toujours capable de retrouver les droits d'origine sur vos fichiers en cas de mauvaise manipulation)

== chown ==

Changer le propriétaire et/ou le groupe d'un fichier

Changer le propriétaire d'un fichier
 $ chown toto fichier

Changer le groupe d'un fichier (équivalent à chgrp)
 $ chown :toto fichier

Changer le propriétaire et le groupe d'un fichier
 $ chown toto:audio fichier

Comme d'habitude l'option -R permet de traiter récursivement la commande. Changer l'appartenance d'un répertoire et de tous les fichiers qu'il contient :

 $ chown -R toto:audio /home/toto/repertoire

Remarquer le R majuscule

== deluser ==

Supprimer un utilisateur, ou retirer un utilisateur d'un groupe.

Supprimer l'utilisateur toto (son répertoire n'est pas supprimé)
 # deluser toto

 # del user toto audio

== gpasswd ==

gpasswd est utilisé pour administrer le fichier /etc/group ainsi que le fichier /etc/gshadow.

Chaque groupe peut avoir un administrateur, des membres et un mot de passe. Les administrateurs systèmes possèdent les droits d'administrateur de groupe et de membre, il peuvent utiliser l'option -A pour définir le(s) administrateur(s) de groupe et l'option -M pour en définir les membres
Un administrateur de groupe peut ajouter ou supprimer des utilisateurs en utilisant respectivement les options -a et -d . Les administrateurs peuvent utiliser l'option -r pour supprimer le mot de passe d'un groupe.

Ajouter un administrateur à un groupe :
 #  gpasswd -a utilisateur groupe

Enlever le mot de passe d'un groupe :
 # gpasswd -r groupe

== groupadd ==

Création de groupe avec les options de la commande plus celles par défaut du système.

 # grouppadd toto

== groupdel ==

Supprimer un groupe

 # groupdel toto

== groupmod ==

Modification des propriétés d'un groupe du système.
Les options sont modification de l'ID, du mot de passe, du nom du groupe.

Modification du GID du groupe scanner
 # groupmod -g 4713 scanner

Modification du nom du groupe1 pour groupe2
 # groupmod groupe2 groupe1

== id ==
Permet de savoir quel numéro - uid (comme user id) et quel numéro de groupe sont associés à utilisateur. Exemple

 $ id toto
 uid=1000(toto) gid=1000(toto) groupes=1000(toto),20(dialout),24(cdrom),25(floppy),29(audio),44(video),46(plugdev),110(netdev)

== passwd ==

La commande passwd permet de changer son mot de passe. Ou, en root, changer le mot de passe d'un utilisateur (l'ancien mot de passe est alors demandé)

Elle demande :

# le mot de passe actuel (Current),
# le nouveau (New),
# puis la confirmation du nouveau (New again), afin d'éviter les erreurs. 

Remarque: Un mot de passe n'est jamais affiché et ne doit jamais l'être.

 $ passwd
 # passwd toto

== useradd ==

Créer un nouvel utilisateur ou mettre à jour l'information par défaut sur un nouvel utilisateur .

Le résultat est le même que pour la commande adduser, mais la syntaxe est différente. adduser est une commande interactive : elle pose des questions, il faut y répondre. useradd est une commande non interactive, il est possible de s'en servir pas exemple dans un script.

Ajouter un nouvel utilisateur (Attention, le mot de passe doit être crypté)
 # useradd -m -p MotDePasse login

== userdel ==

Effacer un compte utilisateur et les fichiers associés. La commande userdel modifie les fichiers des comptes du système, en supprimant toutes les entrées qui se réfèrent à login. L'utilisateur nommé doit exister. L'utilisateur ne doit pas être connecté...

Option : -r Les fichiers présents dans le répertoire personnel de l'utilisateur seront supprimés en même temps que le répertoire lui-même. Les fichiers situés dans d'autres systèmes de fichiers devront être recherchés et éliminés manuellement. 

Effacer l'utilisateur &quot;toto&quot; et ses fichiers dans /home/toto
 # userdel -r toto

== usermod ==

La commande usermod modifie les fichiers d’administration des comptes du système selon les modifications qui ont été indiquées sur la ligne de commande.

Ajouter l'utilisateur toto au groupe audio sans supprimer toto de son groupe originel.
 # usermod -aG audio toto

Renommer le répertoire (dossier) utilisateur et changer son nom. Pratique lorsque le pc change de mains. (Changer l'utilisateur toto en titi et changer son /home/toto en /home/titi)
 # usermod -d /home/titi -m -l titi toto

[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>cih6wbej2fcfake30gkkrj7r6rmlvn7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5717</id>
      <parentid>5716</parentid>
      <timestamp>2014-08-20T03:52:36Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* usermod */</comment>
      <text xml:space="preserve" bytes="8158">== Droits dans un système Debian ==
Les commandes que cette page vous présente permettent de manipuler les utilisateurs et les groupes du système d'exploitation. Ces deux notions sont très fortement liées à la gestion des droits dans le système d'exploitation. C'est pour cela que nous commençons par vous expliquer ce point.

Sous GNU/Linux (comme sous beaucoup d'autres Unix), les droits sont gérés au travers d'utilisateurs et de groupe. Chaque utilisateur appartient à un ou plusieurs groupe(s) (s'il appartient à plusieurs groupes l'un d'entre eux sera son principal groupe).

Pour chaque fichier (que ce soit un fichier, un répertoire, un exécutable, un périphérique ou quoi que ce soit d'autre), il est défini son propriétaire et son groupe. Ces deux attributs peuvent changer au cours du temps (les commandes ci-dessous vous indique comment faire). Ces deux attributs n'ont pas de liens entre eux ; le propriétaire d'un fichier ne doit pas nécessairement appartenir au groupe de celui-ci.

Ensuite l'idée consiste à définir des droits pour chaque fichier. Les droits sont différents pour le propriétaire, pour le groupe ou pour les autres utilisateurs du système. Ces droits s'expriment avec 3 attributs chacun, le droit en lecture, en écriture et en exécution. Nous allons prendre un exemple :

Imaginons le fichier ''fic.txt'', son propriétaire est l'utilisateur jean et son groupe est famille. On peut vouloir que l'utilisateur jean puisse lire et écrire dans ce fichier, que les utilisateurs du groupe famille puissent uniquement lire le fichier et les autres ne puissent ni lire ni écrire dedans.

Les commandes d'utilisateurs et de groupes

== adduser ==

Ajouter un utilisateur.

Ajouter l'utilisateur ''toto'' au système. Un mot de passe sera demandé pour ce nouvel utilisateur ainsi que quelques informations
 # adduser toto

Ajouter l'utilisateur toto au groupe &quot;audio&quot;
 # adduser toto audio

== chgrp ==

Change l'appartenance d'un fichier à un groupe. On ne peut donner l'appartenance de groupe à un fichier qu'à un groupe dont on est membre... L'administrateur peut, lui, affecter un fichier à n'importe quel groupe.

Donner le groupe &quot;audio&quot; au fichier &quot;fichier&quot;
 $ chgrp audio fichier

Changer récursivement l'appartenance à un groupe. Le répertoire et les fichiers contenus dans ce répertoire changerons de groupe.
 $ chgrp -R audio /home/toto/répertoire

== chmod ==

Changement des bits de comportement d'un ou de plusieurs fichiers; Il est utilisé pour changer les droits sur un fichier.

Donner le droit en lecture/écriture au propriétaire et lecture au groupe :
 $ chmod 640 fichier

chmod peut s'utiliser avec des chiffres ou des lettres


 Droit 	                                    Valeur alphanumérique  Valeur octale
 aucun droit 	                                   --- 	                0
 exécution seulement 	                           --x 	                1
 écriture seulement 	                           -w- 	                2
 écriture et exécution 	                           -wx 	                3
 lecture seulement 	                           r-- 	                4
 lecture et exécution 	                           r-x 	                5
 lecture et écriture 	                           rw- 	                6
 tous les droits (lecture, écriture et exécution)   rwx          	7

Exemple de chmod plus complexe:
La commande ci-dessous fera un chmod 664 récursif sur les fichiers (et uniquement sur les fichiers) dans le répertoire /home/rep/

 $ find /home/rep/ -type f -exec chmod 664 {} \;

Faites très attention avec la commande chmod qui peut être très dangereuse pour votre système si elle est utilisée à mauvais escient...
(vous ne serez pas toujours capable de retrouver les droits d'origine sur vos fichiers en cas de mauvaise manipulation)

== chown ==

Changer le propriétaire et/ou le groupe d'un fichier

Changer le propriétaire d'un fichier
 $ chown toto fichier

Changer le groupe d'un fichier (équivalent à chgrp)
 $ chown :toto fichier

Changer le propriétaire et le groupe d'un fichier
 $ chown toto:audio fichier

Comme d'habitude l'option -R permet de traiter récursivement la commande. Changer l'appartenance d'un répertoire et de tous les fichiers qu'il contient :

 $ chown -R toto:audio /home/toto/repertoire

Remarquer le R majuscule

== deluser ==

Supprimer un utilisateur, ou retirer un utilisateur d'un groupe.

Supprimer l'utilisateur toto (son répertoire n'est pas supprimé)
 # deluser toto

 # del user toto audio

== gpasswd ==

gpasswd est utilisé pour administrer le fichier /etc/group ainsi que le fichier /etc/gshadow.

Chaque groupe peut avoir un administrateur, des membres et un mot de passe. Les administrateurs systèmes possèdent les droits d'administrateur de groupe et de membre, il peuvent utiliser l'option -A pour définir le(s) administrateur(s) de groupe et l'option -M pour en définir les membres
Un administrateur de groupe peut ajouter ou supprimer des utilisateurs en utilisant respectivement les options -a et -d . Les administrateurs peuvent utiliser l'option -r pour supprimer le mot de passe d'un groupe.

Ajouter un administrateur à un groupe :
 #  gpasswd -a utilisateur groupe

Enlever le mot de passe d'un groupe :
 # gpasswd -r groupe

== groupadd ==

Création de groupe avec les options de la commande plus celles par défaut du système.

 # grouppadd toto

== groupdel ==

Supprimer un groupe

 # groupdel toto

== groupmod ==

Modification des propriétés d'un groupe du système.
Les options sont modification de l'ID, du mot de passe, du nom du groupe.

Modification du GID du groupe scanner
 # groupmod -g 4713 scanner

Modification du nom du groupe1 pour groupe2
 # groupmod groupe2 groupe1

== id ==
Permet de savoir quel numéro - uid (comme user id) et quel numéro de groupe sont associés à utilisateur. Exemple

 $ id toto
 uid=1000(toto) gid=1000(toto) groupes=1000(toto),20(dialout),24(cdrom),25(floppy),29(audio),44(video),46(plugdev),110(netdev)

== passwd ==

La commande passwd permet de changer son mot de passe. Ou, en root, changer le mot de passe d'un utilisateur (l'ancien mot de passe est alors demandé)

Elle demande :

# le mot de passe actuel (Current),
# le nouveau (New),
# puis la confirmation du nouveau (New again), afin d'éviter les erreurs. 

Remarque: Un mot de passe n'est jamais affiché et ne doit jamais l'être.

 $ passwd
 # passwd toto

== useradd ==

Créer un nouvel utilisateur ou mettre à jour l'information par défaut sur un nouvel utilisateur .

Le résultat est le même que pour la commande adduser, mais la syntaxe est différente. adduser est une commande interactive : elle pose des questions, il faut y répondre. useradd est une commande non interactive, il est possible de s'en servir pas exemple dans un script.

Ajouter un nouvel utilisateur (Attention, le mot de passe doit être crypté)
 # useradd -m -p MotDePasse login

== userdel ==

Effacer un compte utilisateur et les fichiers associés. La commande userdel modifie les fichiers des comptes du système, en supprimant toutes les entrées qui se réfèrent à login. L'utilisateur nommé doit exister. L'utilisateur ne doit pas être connecté...

Option : -r Les fichiers présents dans le répertoire personnel de l'utilisateur seront supprimés en même temps que le répertoire lui-même. Les fichiers situés dans d'autres systèmes de fichiers devront être recherchés et éliminés manuellement. 

Effacer l'utilisateur &quot;toto&quot; et ses fichiers dans /home/toto
 # userdel -r toto

== usermod ==

La commande usermod modifie les fichiers d’administration des comptes du système selon les modifications qui ont été indiquées sur la ligne de commande.

Ajouter l'utilisateur toto au groupe audio sans supprimer toto de son groupe originel.
 # usermod -aG audio toto

Renommer le répertoire utilisateur et changer son nom. Pratique lorsque le pc change de mains. (Changer l'utilisateur toto en titi et changer son /home/toto en /home/titi)
 # usermod -d /home/titi -m -l titi toto

[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>7ktgpavijwvro852ul01ctzel6z3tqj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Compiler et patcher son noyau</title>
    <ns>0</ns>
    <id>561</id>
    <revision>
      <id>2321</id>
      <timestamp>2010-11-20T08:02:13Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Compiler et patcher son noyau</comment>
      <text xml:space="preserve" bytes="7591">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

 # apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev

Dépendances pour menuconfig :
 # apt-get install libncurses5-dev (libncurses-dev ?) fakeroot

Dépendances pour gconfig :
 # apt-get install libglade2-dev

Dépendances pour xconfig :
 # apt-get install libqt3-mt-dev

== Préparation et récupération des sources ==

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
 $ cd ~/     

Créer le répertoire de travail :
 $ mkdir src
 $ cd src 

Télécharger les sources :

&lt;code&gt;$ wget http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt; 

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

 # su -
 # adduser laurent src
 Adding user `laurent' to group `src' ...
 Adding user laurent to group src
 Done.
 # exit

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.
C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

Décomprésser et dépaqueter les sources :

 $ tar xvzf linux-2.6.37-rc2.tar.gz

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

 $ cd /usr/src

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

 $ sudo ln -s ~/src/linux-2.6.37-rc2 linux
 $ cd ~/src                                                        
 $ sudo ln -s ~/src/linux-2.6.37-rc2 linux

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code&gt;$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

 $ cp -vi /boot/config-`uname -r` .config
 $ cd linux-2.6/

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte...
La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

 $ make localmodconfig

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

 $ yes &quot;&quot; | make localmodconfig

Sauvegarde de la configuration générée :
 $ cp /boot/config-$(uname -r) .config &amp;&amp; yes &quot;&quot; | make oldconfig

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :
 $ make menuconfig

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

 $ make config
Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

 $ make menuconfig
Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

 $ make gconfig
Très joli...
[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

 $ make xconfig
Le plus agréable à utiliser.
[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
 $ make-kpkg clean

== La compilation ==

 $ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)</text>
      <sha1>76vbx110dpvm088s9hvnrdkqd1o70a7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2322</id>
      <parentid>2321</parentid>
      <timestamp>2010-11-20T08:12:21Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="7902">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

 # apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev

Dépendances pour menuconfig :
 # apt-get install libncurses5-dev (libncurses-dev ?) fakeroot

Dépendances pour gconfig :
 # apt-get install libglade2-dev

Dépendances pour xconfig :
 # apt-get install libqt3-mt-dev

== Préparation et récupération des sources ==

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
 $ cd ~/     

Créer le répertoire de travail :
 $ mkdir src
 $ cd src 

Télécharger les sources :

&lt;code&gt;$ wget http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt; 

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

 # su -
 # adduser laurent src
 Adding user `laurent' to group `src' ...
 Adding user laurent to group src
 Done.
 # exit

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.
C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

Décomprésser et dépaqueter les sources :

 $ tar xvzf linux-2.6.37-rc2.tar.gz

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

 $ cd /usr/src

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

 $ sudo ln -s ~/src/linux-2.6.37-rc2 linux
 $ cd ~/src                                                        
 $ sudo ln -s ~/src/linux-2.6.37-rc2 linux

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code&gt;$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

 $ cp -vi /boot/config-`uname -r` .config
 $ cd linux-2.6/

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte...
La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

 $ make localmodconfig

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

 $ yes &quot;&quot; | make localmodconfig

Sauvegarde de la configuration générée :
 $ cp /boot/config-$(uname -r) .config &amp;&amp; yes &quot;&quot; | make oldconfig

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :
 $ make menuconfig

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

 $ make config
Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

 $ make menuconfig
Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

 $ make gconfig
Très joli...
[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

 $ make xconfig
Le plus agréable à utiliser.
[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
 $ make-kpkg clean

== La compilation ==

 $ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

== Installation ==

Vous vous retrouvez avec deux paquets, qu'il ne reste plus qu'a installer

 # dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

Et si vous avez besoin des &quot;headers&quot; :

 # dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)</text>
      <sha1>ftb00smmeyh0b2ttyq1djpb4bxi0sxq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2324</id>
      <parentid>2322</parentid>
      <timestamp>2010-11-20T08:41:53Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Prérequis */</comment>
      <text xml:space="preserve" bytes="7903">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

 # apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot


Dépendances pour menuconfig :
 # apt-get install libncurses5-dev (libncurses-dev ?)

Dépendances pour gconfig :
 # apt-get install libglade2-dev

Dépendances pour xconfig :
 # apt-get install libqt3-mt-dev

== Préparation et récupération des sources ==

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
 $ cd ~/     

Créer le répertoire de travail :
 $ mkdir src
 $ cd src 

Télécharger les sources :

&lt;code&gt;$ wget http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt; 

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

 # su -
 # adduser laurent src
 Adding user `laurent' to group `src' ...
 Adding user laurent to group src
 Done.
 # exit

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.
C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

Décomprésser et dépaqueter les sources :

 $ tar xvzf linux-2.6.37-rc2.tar.gz

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

 $ cd /usr/src

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

 $ sudo ln -s ~/src/linux-2.6.37-rc2 linux
 $ cd ~/src                                                        
 $ sudo ln -s ~/src/linux-2.6.37-rc2 linux

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code&gt;$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

 $ cp -vi /boot/config-`uname -r` .config
 $ cd linux-2.6/

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte...
La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

 $ make localmodconfig

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

 $ yes &quot;&quot; | make localmodconfig

Sauvegarde de la configuration générée :
 $ cp /boot/config-$(uname -r) .config &amp;&amp; yes &quot;&quot; | make oldconfig

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :
 $ make menuconfig

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

 $ make config
Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

 $ make menuconfig
Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

 $ make gconfig
Très joli...
[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

 $ make xconfig
Le plus agréable à utiliser.
[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
 $ make-kpkg clean

== La compilation ==

 $ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

== Installation ==

Vous vous retrouvez avec deux paquets, qu'il ne reste plus qu'a installer

 # dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

Et si vous avez besoin des &quot;headers&quot; :

 # dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)</text>
      <sha1>4t6vjkypq5h7ez07yh4xdm9opfbi8iq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2325</id>
      <parentid>2324</parentid>
      <timestamp>2010-11-20T08:49:07Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Préparer la compilation du noyau */</comment>
      <text xml:space="preserve" bytes="8639">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

 # apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot


Dépendances pour menuconfig :
 # apt-get install libncurses5-dev (libncurses-dev ?)

Dépendances pour gconfig :
 # apt-get install libglade2-dev

Dépendances pour xconfig :
 # apt-get install libqt3-mt-dev

== Préparation et récupération des sources ==

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
 $ cd ~/     

Créer le répertoire de travail :
 $ mkdir src
 $ cd src 

Télécharger les sources :

&lt;code&gt;$ wget http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt; 

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

 # su -
 # adduser laurent src
 Adding user `laurent' to group `src' ...
 Adding user laurent to group src
 Done.
 # exit

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.
C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

&lt;code&gt;I would suggest that people who compile new kernels should:

    NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.

    compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.

    not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).

And yes, this is what I do&lt;/code&gt;

Décompresser et dépaqueter les sources :

 $ tar xvzf linux-2.6.37-rc2.tar.gz

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

 $ cd /usr/src

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

 $ sudo ln -s ~/src/linux-2.6.37-rc2 linux
 $ cd ~/src                                                        
 $ sudo ln -s ~/src/linux-2.6.37-rc2 linux

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code&gt;$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

 $ cp -vi /boot/config-`uname -r` .config
 $ cd linux-2.6/

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte...
La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

 $ make localmodconfig

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

 $ yes &quot;&quot; | make localmodconfig

Sauvegarde de la configuration générée :
 $ cp /boot/config-$(uname -r) .config &amp;&amp; yes &quot;&quot; | make oldconfig

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :
 $ make menuconfig

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

 $ make config
Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

 $ make menuconfig
Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

 $ make gconfig
Très joli...
[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

 $ make xconfig
Le plus agréable à utiliser.
[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
 $ make-kpkg clean

== La compilation ==

 $ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

== Installation ==

Vous vous retrouvez avec deux paquets, qu'il ne reste plus qu'a installer

 # dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

Et si vous avez besoin des &quot;headers&quot; :

 # dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)</text>
      <sha1>nucp8kedgj1iueay09rkfmft0gv48zu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2326</id>
      <parentid>2325</parentid>
      <timestamp>2010-11-20T08:56:14Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Préparer la compilation du noyau */</comment>
      <text xml:space="preserve" bytes="8633">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

 # apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot


Dépendances pour menuconfig :
 # apt-get install libncurses5-dev (libncurses-dev ?)

Dépendances pour gconfig :
 # apt-get install libglade2-dev

Dépendances pour xconfig :
 # apt-get install libqt3-mt-dev

== Préparation et récupération des sources ==

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
 $ cd ~/     

Créer le répertoire de travail :
 $ mkdir src
 $ cd src 

Télécharger les sources :

&lt;code&gt;$ wget http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt; 

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

 # su -
 # adduser laurent src
 Adding user `laurent' to group `src' ...
 Adding user laurent to group src
 Done.
 # exit

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.
C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

 $ tar xvzf linux-2.6.37-rc2.tar.gz

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

 $ cd /usr/src

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

 $ sudo ln -s ~/src/linux-2.6.37-rc2 linux
 $ cd ~/src                                                        
 $ sudo ln -s ~/src/linux-2.6.37-rc2 linux

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code&gt;$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

 $ cp -vi /boot/config-`uname -r` .config
 $ cd linux-2.6/

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte...
La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

 $ make localmodconfig

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

 $ yes &quot;&quot; | make localmodconfig

Sauvegarde de la configuration générée :
 $ cp /boot/config-$(uname -r) .config &amp;&amp; yes &quot;&quot; | make oldconfig

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :
 $ make menuconfig

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

 $ make config
Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

 $ make menuconfig
Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

 $ make gconfig
Très joli...
[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

 $ make xconfig
Le plus agréable à utiliser.
[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
 $ make-kpkg clean

== La compilation ==

 $ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

== Installation ==

Vous vous retrouvez avec deux paquets, qu'il ne reste plus qu'a installer

 # dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

Et si vous avez besoin des &quot;headers&quot; :

 # dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)</text>
      <sha1>93ew0o2ka61fqtir6x9f45lz9zxxtrw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2327</id>
      <parentid>2326</parentid>
      <timestamp>2010-11-20T08:56:50Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="8634">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

 # apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot


Dépendances pour menuconfig :
 # apt-get install libncurses5-dev (libncurses-dev ?)

Dépendances pour gconfig :
 # apt-get install libglade2-dev

Dépendances pour xconfig :
 # apt-get install libqt3-mt-dev

== Préparation et récupération des sources ==

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
 $ cd ~/     

Créer le répertoire de travail :
 $ mkdir src
 $ cd src 

Télécharger les sources :

&lt;code&gt;$ wget http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt; 

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

 # su -
 # adduser laurent src
 Adding user `laurent' to group `src' ...
 Adding user laurent to group src
 Done.
 # exit

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

 $ tar xvzf linux-2.6.37-rc2.tar.gz

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

 $ cd /usr/src

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

 $ sudo ln -s ~/src/linux-2.6.37-rc2 linux
 $ cd ~/src                                                        
 $ sudo ln -s ~/src/linux-2.6.37-rc2 linux

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code&gt;$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

 $ cp -vi /boot/config-`uname -r` .config
 $ cd linux-2.6/

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte...
La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

 $ make localmodconfig

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

 $ yes &quot;&quot; | make localmodconfig

Sauvegarde de la configuration générée :
 $ cp /boot/config-$(uname -r) .config &amp;&amp; yes &quot;&quot; | make oldconfig

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :
 $ make menuconfig

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

 $ make config
Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

 $ make menuconfig
Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

 $ make gconfig
Très joli...
[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

 $ make xconfig
Le plus agréable à utiliser.
[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
 $ make-kpkg clean

== La compilation ==

 $ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

== Installation ==

Vous vous retrouvez avec deux paquets, qu'il ne reste plus qu'a installer

 # dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

Et si vous avez besoin des &quot;headers&quot; :

 # dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)</text>
      <sha1>tu4w7hd5ab3kjx8cu4opa9ksjtuyd6e</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2328</id>
      <parentid>2327</parentid>
      <timestamp>2010-11-20T19:12:46Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Préparation et récupération des sources */</comment>
      <text xml:space="preserve" bytes="8631">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

 # apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot


Dépendances pour menuconfig :
 # apt-get install libncurses5-dev (libncurses-dev ?)

Dépendances pour gconfig :
 # apt-get install libglade2-dev

Dépendances pour xconfig :
 # apt-get install libqt3-mt-dev

== Préparation et récupération des sources ==

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
 $ cd      

Créer le répertoire de travail :
 $ mkdir src
 $ cd src 

Télécharger les sources :

&lt;code&gt;$ wget http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

 # su -
 # adduser laurent src
 Adding user `laurent' to group `src' ...
 Adding user laurent to group src
 Done.
 # exit

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

 $ tar xvzf linux-2.6.37-rc2.tar.gz

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

 $ cd /usr/src

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

 $ sudo ln -s ~/src/linux-2.6.37-rc2 linux
 $ cd ~/src                                                        
 $ sudo ln -s ~/src/linux-2.6.37-rc2 linux

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code&gt;$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

 $ cp -vi /boot/config-`uname -r` .config
 $ cd linux-2.6/

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte...
La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

 $ make localmodconfig

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

 $ yes &quot;&quot; | make localmodconfig

Sauvegarde de la configuration générée :
 $ cp /boot/config-$(uname -r) .config &amp;&amp; yes &quot;&quot; | make oldconfig

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :
 $ make menuconfig

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

 $ make config
Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

 $ make menuconfig
Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

 $ make gconfig
Très joli...
[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

 $ make xconfig
Le plus agréable à utiliser.
[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
 $ make-kpkg clean

== La compilation ==

 $ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

== Installation ==

Vous vous retrouvez avec deux paquets, qu'il ne reste plus qu'a installer

 # dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

Et si vous avez besoin des &quot;headers&quot; :

 # dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)</text>
      <sha1>njwdrftwhv29a5kmp4rnfxpy2u98wu4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2340</id>
      <parentid>2328</parentid>
      <timestamp>2010-11-20T20:13:18Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Préparation et récupération des sources */</comment>
      <text xml:space="preserve" bytes="8628">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

 # apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot


Dépendances pour menuconfig :
 # apt-get install libncurses5-dev (libncurses-dev ?)

Dépendances pour gconfig :
 # apt-get install libglade2-dev

Dépendances pour xconfig :
 # apt-get install libqt3-mt-dev

== Préparation et récupération des sources ==

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
 $ cd ~/

Créer le répertoire de travail :
 $ mkdir src
 $ cd src 

Télécharger les sources :

&lt;code&gt;$ wget http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

 # su -
 # adduser laurent src
 Adding user `laurent' to group `src' ...
 Adding user laurent to group src
 Done.
 # exit

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

 $ tar xvzf linux-2.6.37-rc2.tar.gz

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

 $ cd /usr/src

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

 $ sudo ln -s ~/src/linux-2.6.37-rc2 linux
 $ cd ~/src                                                        
 $ sudo ln -s ~/src/linux-2.6.37-rc2 linux

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code&gt;$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

 $ cp -vi /boot/config-`uname -r` .config
 $ cd linux-2.6/

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte...
La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

 $ make localmodconfig

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

 $ yes &quot;&quot; | make localmodconfig

Sauvegarde de la configuration générée :
 $ cp /boot/config-$(uname -r) .config &amp;&amp; yes &quot;&quot; | make oldconfig

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :
 $ make menuconfig

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

 $ make config
Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

 $ make menuconfig
Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

 $ make gconfig
Très joli...
[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

 $ make xconfig
Le plus agréable à utiliser.
[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
 $ make-kpkg clean

== La compilation ==

 $ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

== Installation ==

Vous vous retrouvez avec deux paquets, qu'il ne reste plus qu'a installer

 # dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

Et si vous avez besoin des &quot;headers&quot; :

 # dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)</text>
      <sha1>s6xc2ejx6bd3ywlj2jqc0crr7cl753e</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2341</id>
      <parentid>2340</parentid>
      <timestamp>2010-11-21T08:45:47Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="8638">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

 # apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot


Dépendances pour menuconfig :
 # apt-get install libncurses5-dev (libncurses-dev ?)

Dépendances pour gconfig :
 # apt-get install libglade2-dev

Dépendances pour xconfig :
 # apt-get install libqt3-mt-dev

== Préparation et récupération des sources ==

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
 $ cd

Créer le répertoire de travail :
 $ mkdir src
 $ cd src 
 ~/src$

Télécharger les sources :

&lt;code&gt;~/src$ wget http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

 # su -
 # adduser laurent src
 Adding user `laurent' to group `src' ...
 Adding user laurent to group src
 Done.
 # exit

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

 $ tar xvzf linux-2.6.37-rc2.tar.gz

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

 $ cd /usr/src

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

 $ sudo ln -s ~/src/linux-2.6.37-rc2 linux
 $ cd ~/src                                                        
 $ sudo ln -s ~/src/linux-2.6.37-rc2 linux

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code&gt;$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

 $ cp -vi /boot/config-`uname -r` .config
 $ cd linux-2.6/

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte...
La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

 $ make localmodconfig

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

 $ yes &quot;&quot; | make localmodconfig

Sauvegarde de la configuration générée :
 $ cp /boot/config-$(uname -r) .config &amp;&amp; yes &quot;&quot; | make oldconfig

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :
 $ make menuconfig

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

 $ make config
Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

 $ make menuconfig
Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

 $ make gconfig
Très joli...
[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

 $ make xconfig
Le plus agréable à utiliser.
[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
 $ make-kpkg clean

== La compilation ==

 $ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

== Installation ==

Vous vous retrouvez avec deux paquets, qu'il ne reste plus qu'a installer

 # dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

Et si vous avez besoin des &quot;headers&quot; :

 # dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)</text>
      <sha1>jdri9xadpgcitl2zz7e2hh1q0vfas4k</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2342</id>
      <parentid>2341</parentid>
      <timestamp>2010-11-21T12:13:47Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Récupérer et peaufiner sa dernière configuration */</comment>
      <text xml:space="preserve" bytes="8964">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

 # apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot


Dépendances pour menuconfig :
 # apt-get install libncurses5-dev (libncurses-dev ?)

Dépendances pour gconfig :
 # apt-get install libglade2-dev

Dépendances pour xconfig :
 # apt-get install libqt3-mt-dev

== Préparation et récupération des sources ==

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
 $ cd

Créer le répertoire de travail :
 $ mkdir src
 $ cd src 
 ~/src$

Télécharger les sources :

&lt;code&gt;~/src$ wget http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

 # su -
 # adduser laurent src
 Adding user `laurent' to group `src' ...
 Adding user laurent to group src
 Done.
 # exit

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

 $ tar xvzf linux-2.6.37-rc2.tar.gz

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

 $ cd /usr/src

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

 $ sudo ln -s ~/src/linux-2.6.37-rc2 linux
 $ cd ~/src                                                        
 $ sudo ln -s ~/src/linux-2.6.37-rc2 linux

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code&gt;$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

 ~/src$ cp -vi /boot/config-`uname -r` .config
 ~/src$ cd linux
 ~/src/linux$

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte...
La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

 ~/src/linux$ make localmodconfig

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

 ~/src/linux$ yes &quot;&quot; | make localmodconfig

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;. N'en faite rien, la commande suivante le fera de toute façon...

Sauvegarde de la configuration générée :
 ~/src/linux$ cp /boot/config-$(uname -r) .config &amp;&amp; yes &quot;&quot; | make oldconfig

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :
 ~/src/linux$ make menuconfig

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

 ~/src/linux$ make config
Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

 ~/src/linux$ make menuconfig
Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

 ~/src/linux-2.6.37-rc2$ make gconfig
Très joli...
[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

 ~/src/linux-2.6.37-rc2$ make xconfig
Le plus agréable à utiliser.
[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
 $ make-kpkg clean

== La compilation ==

 $ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

== Installation ==

Vous vous retrouvez avec deux paquets, qu'il ne reste plus qu'a installer

 # dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

Et si vous avez besoin des &quot;headers&quot; :

 # dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)</text>
      <sha1>s8r3jktsvjvssvtky0eodlhhahdweik</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2343</id>
      <parentid>2342</parentid>
      <timestamp>2010-11-21T12:14:54Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Prérequis */</comment>
      <text xml:space="preserve" bytes="8943">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

 # apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot

Dépendances pour menuconfig :
 # apt-get install libncurses-dev

Dépendances pour gconfig :
 # apt-get install libglade2-dev

Dépendances pour xconfig :
 # apt-get install libqt3-mt-dev

== Préparation et récupération des sources ==

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
 $ cd

Créer le répertoire de travail :
 $ mkdir src
 $ cd src 
 ~/src$

Télécharger les sources :

&lt;code&gt;~/src$ wget http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

 # su -
 # adduser laurent src
 Adding user `laurent' to group `src' ...
 Adding user laurent to group src
 Done.
 # exit

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

 $ tar xvzf linux-2.6.37-rc2.tar.gz

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

 $ cd /usr/src

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

 $ sudo ln -s ~/src/linux-2.6.37-rc2 linux
 $ cd ~/src                                                        
 $ sudo ln -s ~/src/linux-2.6.37-rc2 linux

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code&gt;$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

 ~/src$ cp -vi /boot/config-`uname -r` .config
 ~/src$ cd linux
 ~/src/linux$

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte...
La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

 ~/src/linux$ make localmodconfig

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

 ~/src/linux$ yes &quot;&quot; | make localmodconfig

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;. N'en faite rien, la commande suivante le fera de toute façon...

Sauvegarde de la configuration générée :
 ~/src/linux$ cp /boot/config-$(uname -r) .config &amp;&amp; yes &quot;&quot; | make oldconfig

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :
 ~/src/linux$ make menuconfig

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

 ~/src/linux$ make config
Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

 ~/src/linux$ make menuconfig
Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

 ~/src/linux-2.6.37-rc2$ make gconfig
Très joli...
[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

 ~/src/linux-2.6.37-rc2$ make xconfig
Le plus agréable à utiliser.
[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
 $ make-kpkg clean

== La compilation ==

 $ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

== Installation ==

Vous vous retrouvez avec deux paquets, qu'il ne reste plus qu'a installer

 # dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

Et si vous avez besoin des &quot;headers&quot; :

 # dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)</text>
      <sha1>2fnokpghssqlxog074ir5touh6km6id</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2344</id>
      <parentid>2343</parentid>
      <timestamp>2010-11-21T12:48:14Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Préparer la compilation du noyau */</comment>
      <text xml:space="preserve" bytes="8943">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

 # apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot

Dépendances pour menuconfig :
 # apt-get install libncurses-dev

Dépendances pour gconfig :
 # apt-get install libglade2-dev

Dépendances pour xconfig :
 # apt-get install libqt3-mt-dev

== Préparation et récupération des sources ==

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
 $ cd

Créer le répertoire de travail :
 $ mkdir src
 $ cd src 
 ~/src$

Télécharger les sources :

&lt;code&gt;~/src$ wget http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

 $ su -
 # adduser laurent src
 Adding user `laurent' to group `src' ...
 Adding user laurent to group src
 Done.
 # exit

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

 $ tar xvzf linux-2.6.37-rc2.tar.gz

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

 $ cd /usr/src

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

 $ sudo ln -s ~/src/linux-2.6.37-rc2 linux
 $ cd ~/src                                                        
 $ sudo ln -s ~/src/linux-2.6.37-rc2 linux

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code&gt;$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

 ~/src$ cp -vi /boot/config-`uname -r` .config
 ~/src$ cd linux
 ~/src/linux$

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte...
La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

 ~/src/linux$ make localmodconfig

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

 ~/src/linux$ yes &quot;&quot; | make localmodconfig

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;. N'en faite rien, la commande suivante le fera de toute façon...

Sauvegarde de la configuration générée :
 ~/src/linux$ cp /boot/config-$(uname -r) .config &amp;&amp; yes &quot;&quot; | make oldconfig

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :
 ~/src/linux$ make menuconfig

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

 ~/src/linux$ make config
Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

 ~/src/linux$ make menuconfig
Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

 ~/src/linux-2.6.37-rc2$ make gconfig
Très joli...
[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

 ~/src/linux-2.6.37-rc2$ make xconfig
Le plus agréable à utiliser.
[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
 $ make-kpkg clean

== La compilation ==

 $ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

== Installation ==

Vous vous retrouvez avec deux paquets, qu'il ne reste plus qu'a installer

 # dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

Et si vous avez besoin des &quot;headers&quot; :

 # dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)</text>
      <sha1>fkm6e0h31pwknz7ocvzuscu4r94ml2r</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2345</id>
      <parentid>2344</parentid>
      <timestamp>2010-11-21T12:52:43Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="9095">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

 # apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot

Dépendances pour menuconfig :
 # apt-get install libncurses-dev

Dépendances pour gconfig :
 # apt-get install libglade2-dev

Dépendances pour xconfig :
 # apt-get install libqt3-mt-dev

== Préparation et récupération des sources ==

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
 $ cd

Créer le répertoire de travail :
 $ mkdir src
 $ cd src 
 ~/src$

Télécharger les sources :

&lt;code&gt;~/src$ wget http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

 $ su -
 # adduser laurent src
 Adding user `laurent' to group `src' ...
 Adding user laurent to group src
 Done.
 # exit

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

 ~/src$ tar xvzf linux-2.6.37-rc2.tar.gz

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

 ~/src$ cd /usr/src

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

 /usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
 /usr/src$ cd ~/src                                                        
 ~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

 ~/src/linux$ cd ~/src
 ~/src$ cp -vi /boot/config-`uname -r` .config
 ~/src$ cd linux
 ~/src/linux$

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte...
La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

 ~/src/linux$ make localmodconfig

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

 ~/src/linux$ yes &quot;&quot; | make localmodconfig

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;. N'en faite rien, la commande suivante le fera de toute façon...

Sauvegarde de la configuration générée :
 ~/src/linux$ cp /boot/config-$(uname -r) .config &amp;&amp; yes &quot;&quot; | make oldconfig

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :
 ~/src/linux$ make menuconfig

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

 ~/src/linux$ make config
Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

 ~/src/linux$ make menuconfig
Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

 ~/src/linux-2.6.37-rc2$ make gconfig
Très joli...
[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

 ~/src/linux-2.6.37-rc2$ make xconfig
Le plus agréable à utiliser.
[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
 ~/src/linux$ make-kpkg clean

== La compilation ==

 ~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

== Installation ==

Vous vous retrouvez avec deux paquets, qu'il ne reste plus qu'a installer

 ~/src/linux$ su -
 mot de passe:
 # dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

Et si vous avez besoin des &quot;headers&quot; :

 # dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

 # exit
 ~/src/linux$

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)</text>
      <sha1>h207ry6zyne9iwf1taro2j1cubr215h</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2346</id>
      <parentid>2345</parentid>
      <timestamp>2010-11-21T12:55:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="9115">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

 # apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot

Dépendances pour menuconfig :
 # apt-get install libncurses-dev

Dépendances pour gconfig :
 # apt-get install libglade2-dev

Dépendances pour xconfig :
 # apt-get install libqt3-mt-dev

== Préparation et récupération des sources ==

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
 $ cd

Créer le répertoire de travail :
 $ mkdir src
 $ cd src 
 ~/src$

Télécharger les sources :

&lt;code&gt;~/src$ wget http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

 $ su -
 # adduser laurent src
 Adding user `laurent' to group `src' ...
 Adding user laurent to group src
 Done.
 # exit

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

 ~/src$ tar xvzf linux-2.6.37-rc2.tar.gz

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

 ~/src$ cd /usr/src

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

 /usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
 /usr/src$ cd ~/src                                                        
 ~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

 ~/src/linux$ cd ~/src
 ~/src$ cp -vi /boot/config-`uname -r` .config
 ~/src$ cd linux
 ~/src/linux$

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte...
La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

 ~/src/linux$ make localmodconfig

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

 ~/src/linux$ yes &quot;&quot; | make localmodconfig

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;. N'en faite rien, la commande suivante le fera de toute façon...

Sauvegarde de la configuration générée :
 ~/src/linux$ cp /boot/config-$(uname -r) .config &amp;&amp; yes &quot;&quot; | make oldconfig

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :
 ~/src/linux$ make menuconfig

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

 ~/src/linux$ make config
Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

 ~/src/linux$ make menuconfig
Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

 ~/src/linux-2.6.37-rc2$ make gconfig
Très joli...
[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

 ~/src/linux-2.6.37-rc2$ make xconfig
Le plus agréable à utiliser.
[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
 ~/src/linux$ make-kpkg clean

== La compilation ==

 ~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

== Installation ==

Vous vous retrouvez avec deux paquets, qu'il ne reste plus qu'a installer

 ~/src/linux$ su -
 mot de passe:
 # dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

Et si vous avez besoin des &quot;headers&quot; :

 # dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

 # exit
 ~/src/linux$

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel]]</text>
      <sha1>jhso0uaffq9lm0dmoyyjy6x02uej5dh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2349</id>
      <parentid>2346</parentid>
      <timestamp>2010-11-21T13:01:25Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="9123">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

 # apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot

Dépendances pour menuconfig :
 # apt-get install libncurses-dev

Dépendances pour gconfig :
 # apt-get install libglade2-dev

Dépendances pour xconfig :
 # apt-get install libqt3-mt-dev

== Préparation et récupération des sources ==

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
 $ cd

Créer le répertoire de travail :
 $ mkdir src
 $ cd src 
 ~/src$

Télécharger les sources :

&lt;code&gt;~/src$ wget http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

 $ su -
 # adduser laurent src
 Adding user `laurent' to group `src' ...
 Adding user laurent to group src
 Done.
 # exit

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

 ~/src$ tar xvzf linux-2.6.37-rc2.tar.gz

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

 ~/src$ cd /usr/src

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

 /usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
 /usr/src$ cd ~/src                                                        
 ~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

 ~/src/linux$ cd ~/src
 ~/src$ cp -vi /boot/config-`uname -r` .config
 ~/src$ cd linux
 ~/src/linux$

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte...
La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

 ~/src/linux$ make localmodconfig

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

 ~/src/linux$ yes &quot;&quot; | make localmodconfig

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;. N'en faite rien, la commande suivante le fera de toute façon...

Sauvegarde de la configuration générée :
 ~/src/linux$ cp /boot/config-$(uname -r) .config &amp;&amp; yes &quot;&quot; | make oldconfig

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :
 ~/src/linux$ make menuconfig

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

 ~/src/linux$ make config
Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

 ~/src/linux$ make menuconfig
Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

 ~/src/linux-2.6.37-rc2$ make gconfig
Très joli...
[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

 ~/src/linux-2.6.37-rc2$ make xconfig
Le plus agréable à utiliser.
[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
 ~/src/linux$ make-kpkg clean

== La compilation ==

 ~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

== Installation ==

Vous vous retrouvez avec deux paquets, qu'il ne reste plus qu'a installer

 ~/src/linux$ su -
 mot de passe:
 # dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

Et si vous avez besoin des &quot;headers&quot; :

 # dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

 # exit
 ~/src/linux$

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>qbyd3j35sio8hho2vo7vx1yvtagou7l</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2351</id>
      <parentid>2349</parentid>
      <timestamp>2010-11-21T13:20:37Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Préparation et récupération des sources */</comment>
      <text xml:space="preserve" bytes="9126">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

 # apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot

Dépendances pour menuconfig :
 # apt-get install libncurses-dev

Dépendances pour gconfig :
 # apt-get install libglade2-dev

Dépendances pour xconfig :
 # apt-get install libqt3-mt-dev

== Préparation et récupération des sources ==

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
 $ cd

Créer le répertoire de travail :
 $ mkdir src
 $ cd src 
 ~/src$

Télécharger les sources :

&lt;code&gt;~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

 $ su -
 # adduser laurent src
 Adding user `laurent' to group `src' ...
 Adding user laurent to group src
 Done.
 # exit

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

 ~/src$ tar xvzf linux-2.6.37-rc2.tar.gz

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

 ~/src$ cd /usr/src

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

 /usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
 /usr/src$ cd ~/src                                                        
 ~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

 ~/src/linux$ cd ~/src
 ~/src$ cp -vi /boot/config-`uname -r` .config
 ~/src$ cd linux
 ~/src/linux$

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte...
La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

 ~/src/linux$ make localmodconfig

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

 ~/src/linux$ yes &quot;&quot; | make localmodconfig

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;. N'en faite rien, la commande suivante le fera de toute façon...

Sauvegarde de la configuration générée :
 ~/src/linux$ cp /boot/config-$(uname -r) .config &amp;&amp; yes &quot;&quot; | make oldconfig

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :
 ~/src/linux$ make menuconfig

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

 ~/src/linux$ make config
Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

 ~/src/linux$ make menuconfig
Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

 ~/src/linux-2.6.37-rc2$ make gconfig
Très joli...
[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

 ~/src/linux-2.6.37-rc2$ make xconfig
Le plus agréable à utiliser.
[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
 ~/src/linux$ make-kpkg clean

== La compilation ==

 ~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

== Installation ==

Vous vous retrouvez avec deux paquets, qu'il ne reste plus qu'a installer

 ~/src/linux$ su -
 mot de passe:
 # dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

Et si vous avez besoin des &quot;headers&quot; :

 # dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

 # exit
 ~/src/linux$

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>i7cm8u8ubqo8ya164vys9j1stis9t4u</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2352</id>
      <parentid>2351</parentid>
      <timestamp>2010-11-21T13:39:46Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Prérequis */</comment>
      <text xml:space="preserve" bytes="9194">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

&lt;code bash&gt;# apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot&lt;/code&gt;

Dépendances pour menuconfig :
&lt;code bash&gt;# apt-get install libncurses-dev&lt;/code&gt;

Dépendances pour gconfig :
&lt;code bash&gt;# apt-get install libglade2-dev&lt;/code&gt;

Dépendances pour xconfig :
&lt;code bash&gt;# apt-get install libqt3-mt-dev&lt;/code&gt;

== Préparation et récupération des sources ==

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
 $ cd

Créer le répertoire de travail :
 $ mkdir src
 $ cd src 
 ~/src$

Télécharger les sources :

&lt;code&gt;~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

 $ su -
 # adduser laurent src
 Adding user `laurent' to group `src' ...
 Adding user laurent to group src
 Done.
 # exit

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

 ~/src$ tar xvzf linux-2.6.37-rc2.tar.gz

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

 ~/src$ cd /usr/src

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

 /usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
 /usr/src$ cd ~/src                                                        
 ~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

 ~/src/linux$ cd ~/src
 ~/src$ cp -vi /boot/config-`uname -r` .config
 ~/src$ cd linux
 ~/src/linux$

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte...
La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

 ~/src/linux$ make localmodconfig

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

 ~/src/linux$ yes &quot;&quot; | make localmodconfig

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;. N'en faite rien, la commande suivante le fera de toute façon...

Sauvegarde de la configuration générée :
 ~/src/linux$ cp /boot/config-$(uname -r) .config &amp;&amp; yes &quot;&quot; | make oldconfig

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :
 ~/src/linux$ make menuconfig

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

 ~/src/linux$ make config
Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

 ~/src/linux$ make menuconfig
Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

 ~/src/linux-2.6.37-rc2$ make gconfig
Très joli...
[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

 ~/src/linux-2.6.37-rc2$ make xconfig
Le plus agréable à utiliser.
[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
 ~/src/linux$ make-kpkg clean

== La compilation ==

 ~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

== Installation ==

Vous vous retrouvez avec deux paquets, qu'il ne reste plus qu'a installer

 ~/src/linux$ su -
 mot de passe:
 # dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

Et si vous avez besoin des &quot;headers&quot; :

 # dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

 # exit
 ~/src/linux$

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>1k9qkeuipnxwfhjcks24814fqvr0cyd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2353</id>
      <parentid>2352</parentid>
      <timestamp>2010-11-21T13:43:35Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Récupérer et peaufiner sa dernière configuration */</comment>
      <text xml:space="preserve" bytes="9121">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

&lt;code bash&gt;# apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot&lt;/code&gt;

Dépendances pour menuconfig :
&lt;code bash&gt;# apt-get install libncurses-dev&lt;/code&gt;

Dépendances pour gconfig :
&lt;code bash&gt;# apt-get install libglade2-dev&lt;/code&gt;

Dépendances pour xconfig :
&lt;code bash&gt;# apt-get install libqt3-mt-dev&lt;/code&gt;

== Préparation et récupération des sources ==

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
 $ cd

Créer le répertoire de travail :
 $ mkdir src
 $ cd src 
 ~/src$

Télécharger les sources :

&lt;code&gt;~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

 $ su -
 # adduser laurent src
 Adding user `laurent' to group `src' ...
 Adding user laurent to group src
 Done.
 # exit

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

 ~/src$ tar xvzf linux-2.6.37-rc2.tar.gz

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

 ~/src$ cd /usr/src

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

 /usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
 /usr/src$ cd ~/src                                                        
 ~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

 ~/src/linux$ cd ~/src
 ~/src$ cp -vi /boot/config-`uname -r` .config
 ~/src$ cd linux
 ~/src/linux$

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte...
La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

 ~/src/linux$ make localmodconfig

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

 ~/src/linux$ yes &quot;&quot; | make localmodconfig

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;.

 ~/src/linux$ make oldconfig

Répondez aux questions. Les réponses par défaut sont généralement les bonnes.

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :
 ~/src/linux$ make menuconfig

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

 ~/src/linux$ make config
Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

 ~/src/linux$ make menuconfig
Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

 ~/src/linux-2.6.37-rc2$ make gconfig
Très joli...
[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

 ~/src/linux-2.6.37-rc2$ make xconfig
Le plus agréable à utiliser.
[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
 ~/src/linux$ make-kpkg clean

== La compilation ==

 ~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

== Installation ==

Vous vous retrouvez avec deux paquets, qu'il ne reste plus qu'a installer

 ~/src/linux$ su -
 mot de passe:
 # dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

Et si vous avez besoin des &quot;headers&quot; :

 # dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

 # exit
 ~/src/linux$

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>n3qvb3z040g2so384t95h879bsuw1bp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2354</id>
      <parentid>2353</parentid>
      <timestamp>2010-11-21T13:50:42Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* La compilation */</comment>
      <text xml:space="preserve" bytes="9756">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

&lt;code bash&gt;# apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot&lt;/code&gt;

Dépendances pour menuconfig :
&lt;code bash&gt;# apt-get install libncurses-dev&lt;/code&gt;

Dépendances pour gconfig :
&lt;code bash&gt;# apt-get install libglade2-dev&lt;/code&gt;

Dépendances pour xconfig :
&lt;code bash&gt;# apt-get install libqt3-mt-dev&lt;/code&gt;

== Préparation et récupération des sources ==

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
 $ cd

Créer le répertoire de travail :
 $ mkdir src
 $ cd src 
 ~/src$

Télécharger les sources :

&lt;code&gt;~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

 $ su -
 # adduser laurent src
 Adding user `laurent' to group `src' ...
 Adding user laurent to group src
 Done.
 # exit

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

 ~/src$ tar xvzf linux-2.6.37-rc2.tar.gz

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

 ~/src$ cd /usr/src

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

 /usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
 /usr/src$ cd ~/src                                                        
 ~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

 ~/src/linux$ cd ~/src
 ~/src$ cp -vi /boot/config-`uname -r` .config
 ~/src$ cd linux
 ~/src/linux$

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte...
La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

 ~/src/linux$ make localmodconfig

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

 ~/src/linux$ yes &quot;&quot; | make localmodconfig

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;.

 ~/src/linux$ make oldconfig

Répondez aux questions. Les réponses par défaut sont généralement les bonnes.

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :
 ~/src/linux$ make menuconfig

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

 ~/src/linux$ make config
Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

 ~/src/linux$ make menuconfig
Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

 ~/src/linux-2.6.37-rc2$ make gconfig
Très joli...
[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

 ~/src/linux-2.6.37-rc2$ make xconfig
Le plus agréable à utiliser.
[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
 ~/src/linux$ make-kpkg clean

== La compilation ==

 ~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

== En cas d'échec ==

Rien n'est perdu, et il est facile de revenir au début pour recommencer.
Pour recompiler à nouveau votre noyau, pas de problèmes car le .config a gardé toutes vos options en mémoire, il suffit donc de modifier les options que vous voulez par la commande

 ~/src/linux$ make menuconfig

Vous préférerez peut-être recommencer depuis le début :

 ~/src/linux$ cp -vi /boot/config-`uname -r` .config
 ~/src/linux$ make localmodconfig
 Etc.

Il faudra ensuite faire:

 ~/src/linux$ make-kpkg clean
 ~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers

== Installation ==

Vous vous retrouvez avec deux paquets, qu'il ne reste plus qu'a installer

 ~/src/linux$ su -
 mot de passe:
 # dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

Et si vous avez besoin des &quot;headers&quot; :

 # dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

 # exit
 ~/src/linux$

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>0ehfqa6jrotereq11wjls1s7nptjrxl</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2355</id>
      <parentid>2354</parentid>
      <timestamp>2010-11-21T14:07:36Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Prérequis */</comment>
      <text xml:space="preserve" bytes="9962">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

&lt;code bash&gt;# apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot&lt;/code&gt;

Dépendances pour menuconfig :
&lt;code bash&gt;# apt-get install libncurses-dev&lt;/code&gt;

Dépendances pour gconfig :
&lt;code bash&gt;# apt-get install libglade2-dev&lt;/code&gt;

Dépendances pour xconfig :
&lt;code bash&gt;# apt-get install libqt3-mt-dev&lt;/code&gt;

Il vous faut aussi un d'espace disque suffisant, l'archive compressée fait 90 Mo, l'archive décompressée des sources du noyau Linux fait dans les 400 Méga octets...
Comptez 3 Go pour être tranquille.

== Préparation et récupération des sources ==

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
 $ cd

Créer le répertoire de travail :
 $ mkdir src
 $ cd src 
 ~/src$

Télécharger les sources :

&lt;code&gt;~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

 $ su -
 # adduser laurent src
 Adding user `laurent' to group `src' ...
 Adding user laurent to group src
 Done.
 # exit

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

 ~/src$ tar xvzf linux-2.6.37-rc2.tar.gz

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

 ~/src$ cd /usr/src

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

 /usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
 /usr/src$ cd ~/src                                                        
 ~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

 ~/src/linux$ cd ~/src
 ~/src$ cp -vi /boot/config-`uname -r` .config
 ~/src$ cd linux
 ~/src/linux$

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte...
La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

 ~/src/linux$ make localmodconfig

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

 ~/src/linux$ yes &quot;&quot; | make localmodconfig

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;.

 ~/src/linux$ make oldconfig

Répondez aux questions. Les réponses par défaut sont généralement les bonnes.

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :
 ~/src/linux$ make menuconfig

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

 ~/src/linux$ make config
Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

 ~/src/linux$ make menuconfig
Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

 ~/src/linux-2.6.37-rc2$ make gconfig
Très joli...
[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

 ~/src/linux-2.6.37-rc2$ make xconfig
Le plus agréable à utiliser.
[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
 ~/src/linux$ make-kpkg clean

== La compilation ==

 ~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

== En cas d'échec ==

Rien n'est perdu, et il est facile de revenir au début pour recommencer.
Pour recompiler à nouveau votre noyau, pas de problèmes car le .config a gardé toutes vos options en mémoire, il suffit donc de modifier les options que vous voulez par la commande

 ~/src/linux$ make menuconfig

Vous préférerez peut-être recommencer depuis le début :

 ~/src/linux$ cp -vi /boot/config-`uname -r` .config
 ~/src/linux$ make localmodconfig
 Etc.

Il faudra ensuite faire:

 ~/src/linux$ make-kpkg clean
 ~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers

== Installation ==

Vous vous retrouvez avec deux paquets, qu'il ne reste plus qu'a installer

 ~/src/linux$ su -
 mot de passe:
 # dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

Et si vous avez besoin des &quot;headers&quot; :

 # dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

 # exit
 ~/src/linux$

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>hzbm2ddjy2owejjyque7edtcuv7ciye</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2356</id>
      <parentid>2355</parentid>
      <timestamp>2010-11-22T04:08:27Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Prérequis */</comment>
      <text xml:space="preserve" bytes="10009">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

&lt;code bash&gt;# apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot&lt;/code&gt;

Dépendances pour menuconfig :
&lt;code bash&gt;# apt-get install libncurses-dev&lt;/code&gt;

Dépendances pour gconfig :
&lt;code bash&gt;# apt-get install libglade2-dev&lt;/code&gt;

Dépendances pour xconfig :
&lt;code bash&gt;# apt-get install libqt3-mt-dev&lt;/code&gt;

Il vous faut aussi un d'espace disque suffisant, l'archive compressée fait 90 Mo, l'archive décompressée des sources du noyau Linux fait dans les 400 Méga octets...
Comptez au minimum 2.5 Go si vous souhaitez compiler linux-image et linux-headers.

== Préparation et récupération des sources ==

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
 $ cd

Créer le répertoire de travail :
 $ mkdir src
 $ cd src 
 ~/src$

Télécharger les sources :

&lt;code&gt;~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

 $ su -
 # adduser laurent src
 Adding user `laurent' to group `src' ...
 Adding user laurent to group src
 Done.
 # exit

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

 ~/src$ tar xvzf linux-2.6.37-rc2.tar.gz

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

 ~/src$ cd /usr/src

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

 /usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
 /usr/src$ cd ~/src                                                        
 ~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

 ~/src/linux$ cd ~/src
 ~/src$ cp -vi /boot/config-`uname -r` .config
 ~/src$ cd linux
 ~/src/linux$

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte...
La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

 ~/src/linux$ make localmodconfig

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

 ~/src/linux$ yes &quot;&quot; | make localmodconfig

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;.

 ~/src/linux$ make oldconfig

Répondez aux questions. Les réponses par défaut sont généralement les bonnes.

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :
 ~/src/linux$ make menuconfig

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

 ~/src/linux$ make config
Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

 ~/src/linux$ make menuconfig
Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

 ~/src/linux-2.6.37-rc2$ make gconfig
Très joli...
[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

 ~/src/linux-2.6.37-rc2$ make xconfig
Le plus agréable à utiliser.
[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
 ~/src/linux$ make-kpkg clean

== La compilation ==

 ~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

== En cas d'échec ==

Rien n'est perdu, et il est facile de revenir au début pour recommencer.
Pour recompiler à nouveau votre noyau, pas de problèmes car le .config a gardé toutes vos options en mémoire, il suffit donc de modifier les options que vous voulez par la commande

 ~/src/linux$ make menuconfig

Vous préférerez peut-être recommencer depuis le début :

 ~/src/linux$ cp -vi /boot/config-`uname -r` .config
 ~/src/linux$ make localmodconfig
 Etc.

Il faudra ensuite faire:

 ~/src/linux$ make-kpkg clean
 ~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers

== Installation ==

Vous vous retrouvez avec deux paquets, qu'il ne reste plus qu'a installer

 ~/src/linux$ su -
 mot de passe:
 # dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

Et si vous avez besoin des &quot;headers&quot; :

 # dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

 # exit
 ~/src/linux$

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>h2id53ghyy620xb3zib5v3ahkzzum4t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2357</id>
      <parentid>2356</parentid>
      <timestamp>2010-11-22T04:09:57Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Préparation et récupération des sources */</comment>
      <text xml:space="preserve" bytes="10051">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

&lt;code bash&gt;# apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot&lt;/code&gt;

Dépendances pour menuconfig :
&lt;code bash&gt;# apt-get install libncurses-dev&lt;/code&gt;

Dépendances pour gconfig :
&lt;code bash&gt;# apt-get install libglade2-dev&lt;/code&gt;

Dépendances pour xconfig :
&lt;code bash&gt;# apt-get install libqt3-mt-dev&lt;/code&gt;

Il vous faut aussi un d'espace disque suffisant, l'archive compressée fait 90 Mo, l'archive décompressée des sources du noyau Linux fait dans les 400 Méga octets...
Comptez au minimum 2.5 Go si vous souhaitez compiler linux-image et linux-headers.

== Préparation et récupération des sources ==

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
&lt;code bash&gt;
$ cd
&lt;/code&gt;

Créer le répertoire de travail :
&lt;code bash&gt;
$ mkdir src
$ cd src 
~/src$
&lt;/code&gt;

Télécharger les sources :

&lt;code bash&gt;
~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

 $ su -
 # adduser laurent src
 Adding user `laurent' to group `src' ...
 Adding user laurent to group src
 Done.
 # exit

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

 ~/src$ tar xvzf linux-2.6.37-rc2.tar.gz

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

 ~/src$ cd /usr/src

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

 /usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
 /usr/src$ cd ~/src                                                        
 ~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

 ~/src/linux$ cd ~/src
 ~/src$ cp -vi /boot/config-`uname -r` .config
 ~/src$ cd linux
 ~/src/linux$

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte...
La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

 ~/src/linux$ make localmodconfig

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

 ~/src/linux$ yes &quot;&quot; | make localmodconfig

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;.

 ~/src/linux$ make oldconfig

Répondez aux questions. Les réponses par défaut sont généralement les bonnes.

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :
 ~/src/linux$ make menuconfig

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

 ~/src/linux$ make config
Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

 ~/src/linux$ make menuconfig
Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

 ~/src/linux-2.6.37-rc2$ make gconfig
Très joli...
[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

 ~/src/linux-2.6.37-rc2$ make xconfig
Le plus agréable à utiliser.
[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
 ~/src/linux$ make-kpkg clean

== La compilation ==

 ~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

== En cas d'échec ==

Rien n'est perdu, et il est facile de revenir au début pour recommencer.
Pour recompiler à nouveau votre noyau, pas de problèmes car le .config a gardé toutes vos options en mémoire, il suffit donc de modifier les options que vous voulez par la commande

 ~/src/linux$ make menuconfig

Vous préférerez peut-être recommencer depuis le début :

 ~/src/linux$ cp -vi /boot/config-`uname -r` .config
 ~/src/linux$ make localmodconfig
 Etc.

Il faudra ensuite faire:

 ~/src/linux$ make-kpkg clean
 ~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers

== Installation ==

Vous vous retrouvez avec deux paquets, qu'il ne reste plus qu'a installer

 ~/src/linux$ su -
 mot de passe:
 # dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

Et si vous avez besoin des &quot;headers&quot; :

 # dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

 # exit
 ~/src/linux$

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>ht7bnen271yj5ee78vddw9sd5a88kfg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2358</id>
      <parentid>2357</parentid>
      <timestamp>2010-11-22T04:10:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Prérequis */</comment>
      <text xml:space="preserve" bytes="10059">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

&lt;code bash&gt;
# apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot
&lt;/code&gt;

Dépendances pour menuconfig :
&lt;code bash&gt;
# apt-get install libncurses-dev
&lt;/code&gt;

Dépendances pour gconfig :
&lt;code bash&gt;
# apt-get install libglade2-dev
&lt;/code&gt;

Dépendances pour xconfig :
&lt;code bash&gt;
# apt-get install libqt3-mt-dev
&lt;/code&gt;

Il vous faut aussi un d'espace disque suffisant, l'archive compressée fait 90 Mo, l'archive décompressée des sources du noyau Linux fait dans les 400 Méga octets...
Comptez au minimum 2.5 Go si vous souhaitez compiler linux-image et linux-headers.

== Préparation et récupération des sources ==

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
&lt;code bash&gt;
$ cd
&lt;/code&gt;

Créer le répertoire de travail :
&lt;code bash&gt;
$ mkdir src
$ cd src 
~/src$
&lt;/code&gt;

Télécharger les sources :

&lt;code bash&gt;
~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

 $ su -
 # adduser laurent src
 Adding user `laurent' to group `src' ...
 Adding user laurent to group src
 Done.
 # exit

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

 ~/src$ tar xvzf linux-2.6.37-rc2.tar.gz

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

 ~/src$ cd /usr/src

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

 /usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
 /usr/src$ cd ~/src                                                        
 ~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

 ~/src/linux$ cd ~/src
 ~/src$ cp -vi /boot/config-`uname -r` .config
 ~/src$ cd linux
 ~/src/linux$

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte...
La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

 ~/src/linux$ make localmodconfig

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

 ~/src/linux$ yes &quot;&quot; | make localmodconfig

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;.

 ~/src/linux$ make oldconfig

Répondez aux questions. Les réponses par défaut sont généralement les bonnes.

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :
 ~/src/linux$ make menuconfig

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

 ~/src/linux$ make config
Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

 ~/src/linux$ make menuconfig
Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

 ~/src/linux-2.6.37-rc2$ make gconfig
Très joli...
[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

 ~/src/linux-2.6.37-rc2$ make xconfig
Le plus agréable à utiliser.
[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
 ~/src/linux$ make-kpkg clean

== La compilation ==

 ~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

== En cas d'échec ==

Rien n'est perdu, et il est facile de revenir au début pour recommencer.
Pour recompiler à nouveau votre noyau, pas de problèmes car le .config a gardé toutes vos options en mémoire, il suffit donc de modifier les options que vous voulez par la commande

 ~/src/linux$ make menuconfig

Vous préférerez peut-être recommencer depuis le début :

 ~/src/linux$ cp -vi /boot/config-`uname -r` .config
 ~/src/linux$ make localmodconfig
 Etc.

Il faudra ensuite faire:

 ~/src/linux$ make-kpkg clean
 ~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers

== Installation ==

Vous vous retrouvez avec deux paquets, qu'il ne reste plus qu'a installer

 ~/src/linux$ su -
 mot de passe:
 # dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

Et si vous avez besoin des &quot;headers&quot; :

 # dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

 # exit
 ~/src/linux$

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>q6os6d2uqj9w5lsyrn9ebig46f9drto</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2359</id>
      <parentid>2358</parentid>
      <timestamp>2010-11-22T04:12:06Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Préparer la compilation du noyau */</comment>
      <text xml:space="preserve" bytes="10128">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

&lt;code bash&gt;
# apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot
&lt;/code&gt;

Dépendances pour menuconfig :
&lt;code bash&gt;
# apt-get install libncurses-dev
&lt;/code&gt;

Dépendances pour gconfig :
&lt;code bash&gt;
# apt-get install libglade2-dev
&lt;/code&gt;

Dépendances pour xconfig :
&lt;code bash&gt;
# apt-get install libqt3-mt-dev
&lt;/code&gt;

Il vous faut aussi un d'espace disque suffisant, l'archive compressée fait 90 Mo, l'archive décompressée des sources du noyau Linux fait dans les 400 Méga octets...
Comptez au minimum 2.5 Go si vous souhaitez compiler linux-image et linux-headers.

== Préparation et récupération des sources ==

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
&lt;code bash&gt;
$ cd
&lt;/code&gt;

Créer le répertoire de travail :
&lt;code bash&gt;
$ mkdir src
$ cd src 
~/src$
&lt;/code&gt;

Télécharger les sources :

&lt;code bash&gt;
~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

&lt;code bash&gt;
$ su -
# adduser laurent src
Adding user `laurent' to group `src' ...
Adding user laurent to group src
Done.
# exit
&lt;/code&gt;

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

&lt;code bash&gt;
~/src$ tar xvzf linux-2.6.37-rc2.tar.gz
&lt;/code&gt;

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

&lt;code bash&gt;
~/src$ cd /usr/src
&lt;/code&gt;

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

&lt;code bash&gt;
/usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
/usr/src$ cd ~/src                                                        
~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
&lt;/code&gt;

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

 ~/src/linux$ cd ~/src
 ~/src$ cp -vi /boot/config-`uname -r` .config
 ~/src$ cd linux
 ~/src/linux$

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte...
La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

 ~/src/linux$ make localmodconfig

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

 ~/src/linux$ yes &quot;&quot; | make localmodconfig

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;.

 ~/src/linux$ make oldconfig

Répondez aux questions. Les réponses par défaut sont généralement les bonnes.

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :
 ~/src/linux$ make menuconfig

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

 ~/src/linux$ make config
Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

 ~/src/linux$ make menuconfig
Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

 ~/src/linux-2.6.37-rc2$ make gconfig
Très joli...
[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

 ~/src/linux-2.6.37-rc2$ make xconfig
Le plus agréable à utiliser.
[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
 ~/src/linux$ make-kpkg clean

== La compilation ==

 ~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

== En cas d'échec ==

Rien n'est perdu, et il est facile de revenir au début pour recommencer.
Pour recompiler à nouveau votre noyau, pas de problèmes car le .config a gardé toutes vos options en mémoire, il suffit donc de modifier les options que vous voulez par la commande

 ~/src/linux$ make menuconfig

Vous préférerez peut-être recommencer depuis le début :

 ~/src/linux$ cp -vi /boot/config-`uname -r` .config
 ~/src/linux$ make localmodconfig
 Etc.

Il faudra ensuite faire:

 ~/src/linux$ make-kpkg clean
 ~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers

== Installation ==

Vous vous retrouvez avec deux paquets, qu'il ne reste plus qu'a installer

 ~/src/linux$ su -
 mot de passe:
 # dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

Et si vous avez besoin des &quot;headers&quot; :

 # dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

 # exit
 ~/src/linux$

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>qn3a9neg82he89l435vmdeevfwlw4aq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2360</id>
      <parentid>2359</parentid>
      <timestamp>2010-11-22T04:12:50Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Patcher les sources */</comment>
      <text xml:space="preserve" bytes="10138">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

&lt;code bash&gt;
# apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot
&lt;/code&gt;

Dépendances pour menuconfig :
&lt;code bash&gt;
# apt-get install libncurses-dev
&lt;/code&gt;

Dépendances pour gconfig :
&lt;code bash&gt;
# apt-get install libglade2-dev
&lt;/code&gt;

Dépendances pour xconfig :
&lt;code bash&gt;
# apt-get install libqt3-mt-dev
&lt;/code&gt;

Il vous faut aussi un d'espace disque suffisant, l'archive compressée fait 90 Mo, l'archive décompressée des sources du noyau Linux fait dans les 400 Méga octets...
Comptez au minimum 2.5 Go si vous souhaitez compiler linux-image et linux-headers.

== Préparation et récupération des sources ==

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
&lt;code bash&gt;
$ cd
&lt;/code&gt;

Créer le répertoire de travail :
&lt;code bash&gt;
$ mkdir src
$ cd src 
~/src$
&lt;/code&gt;

Télécharger les sources :

&lt;code bash&gt;
~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

&lt;code bash&gt;
$ su -
# adduser laurent src
Adding user `laurent' to group `src' ...
Adding user laurent to group src
Done.
# exit
&lt;/code&gt;

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

&lt;code bash&gt;
~/src$ tar xvzf linux-2.6.37-rc2.tar.gz
&lt;/code&gt;

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

&lt;code bash&gt;
~/src$ cd /usr/src
&lt;/code&gt;

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

&lt;code bash&gt;
/usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
/usr/src$ cd ~/src                                                        
~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
&lt;/code&gt;

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code bash&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code bash&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

 ~/src/linux$ cd ~/src
 ~/src$ cp -vi /boot/config-`uname -r` .config
 ~/src$ cd linux
 ~/src/linux$

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte...
La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

 ~/src/linux$ make localmodconfig

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

 ~/src/linux$ yes &quot;&quot; | make localmodconfig

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;.

 ~/src/linux$ make oldconfig

Répondez aux questions. Les réponses par défaut sont généralement les bonnes.

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :
 ~/src/linux$ make menuconfig

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

 ~/src/linux$ make config
Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

 ~/src/linux$ make menuconfig
Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

 ~/src/linux-2.6.37-rc2$ make gconfig
Très joli...
[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

 ~/src/linux-2.6.37-rc2$ make xconfig
Le plus agréable à utiliser.
[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
 ~/src/linux$ make-kpkg clean

== La compilation ==

 ~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

== En cas d'échec ==

Rien n'est perdu, et il est facile de revenir au début pour recommencer.
Pour recompiler à nouveau votre noyau, pas de problèmes car le .config a gardé toutes vos options en mémoire, il suffit donc de modifier les options que vous voulez par la commande

 ~/src/linux$ make menuconfig

Vous préférerez peut-être recommencer depuis le début :

 ~/src/linux$ cp -vi /boot/config-`uname -r` .config
 ~/src/linux$ make localmodconfig
 Etc.

Il faudra ensuite faire:

 ~/src/linux$ make-kpkg clean
 ~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers

== Installation ==

Vous vous retrouvez avec deux paquets, qu'il ne reste plus qu'a installer

 ~/src/linux$ su -
 mot de passe:
 # dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

Et si vous avez besoin des &quot;headers&quot; :

 # dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

 # exit
 ~/src/linux$

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>41xih87zvuk71a02yxhpsw4xk4yhuri</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2361</id>
      <parentid>2360</parentid>
      <timestamp>2010-11-22T04:15:28Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Récupérer et peaufiner sa dernière configuration */</comment>
      <text xml:space="preserve" bytes="10332">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

&lt;code bash&gt;
# apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot
&lt;/code&gt;

Dépendances pour menuconfig :
&lt;code bash&gt;
# apt-get install libncurses-dev
&lt;/code&gt;

Dépendances pour gconfig :
&lt;code bash&gt;
# apt-get install libglade2-dev
&lt;/code&gt;

Dépendances pour xconfig :
&lt;code bash&gt;
# apt-get install libqt3-mt-dev
&lt;/code&gt;

Il vous faut aussi un d'espace disque suffisant, l'archive compressée fait 90 Mo, l'archive décompressée des sources du noyau Linux fait dans les 400 Méga octets...
Comptez au minimum 2.5 Go si vous souhaitez compiler linux-image et linux-headers.

== Préparation et récupération des sources ==

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
&lt;code bash&gt;
$ cd
&lt;/code&gt;

Créer le répertoire de travail :
&lt;code bash&gt;
$ mkdir src
$ cd src 
~/src$
&lt;/code&gt;

Télécharger les sources :

&lt;code bash&gt;
~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

&lt;code bash&gt;
$ su -
# adduser laurent src
Adding user `laurent' to group `src' ...
Adding user laurent to group src
Done.
# exit
&lt;/code&gt;

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

&lt;code bash&gt;
~/src$ tar xvzf linux-2.6.37-rc2.tar.gz
&lt;/code&gt;

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

&lt;code bash&gt;
~/src$ cd /usr/src
&lt;/code&gt;

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

&lt;code bash&gt;
/usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
/usr/src$ cd ~/src                                                        
~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
&lt;/code&gt;

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code bash&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code bash&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

&lt;code bash&gt;
~/src/linux$ cd ~/src
~/src$ cp -vi /boot/config-`uname -r` .config
~/src$ cd linux
~/src/linux$
&lt;/code&gt;

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte...
La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

&lt;code bash&gt;
~/src/linux$ make localmodconfig
&lt;/code&gt;

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

&lt;code bash&gt;
~/src/linux$ yes &quot;&quot; | make localmodconfig
&lt;/code&gt;

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;.

&lt;code bash&gt;
~/src/linux$ make oldconfig
&lt;/code&gt;

Répondez aux questions. Les réponses par défaut sont généralement les bonnes.

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

&lt;code bash&gt;
~/src/linux$ make config
&lt;/code&gt;

Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make gconfig
&lt;/code&gt;

Très joli...

[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make xconfig
&lt;/code&gt;

Le plus agréable à utiliser.

[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
&lt;code bash&gt;
~/src/linux$ make-kpkg clean
&lt;/code&gt;

== La compilation ==

 ~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

== En cas d'échec ==

Rien n'est perdu, et il est facile de revenir au début pour recommencer.
Pour recompiler à nouveau votre noyau, pas de problèmes car le .config a gardé toutes vos options en mémoire, il suffit donc de modifier les options que vous voulez par la commande

 ~/src/linux$ make menuconfig

Vous préférerez peut-être recommencer depuis le début :

 ~/src/linux$ cp -vi /boot/config-`uname -r` .config
 ~/src/linux$ make localmodconfig
 Etc.

Il faudra ensuite faire:

 ~/src/linux$ make-kpkg clean
 ~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers

== Installation ==

Vous vous retrouvez avec deux paquets, qu'il ne reste plus qu'a installer

 ~/src/linux$ su -
 mot de passe:
 # dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

Et si vous avez besoin des &quot;headers&quot; :

 # dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb

 # exit
 ~/src/linux$

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>csz295qfchgqcj6934i28qf26z935pa</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2362</id>
      <parentid>2361</parentid>
      <timestamp>2010-11-22T04:17:36Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="10459">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

&lt;code bash&gt;
# apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot
&lt;/code&gt;

Dépendances pour menuconfig :
&lt;code bash&gt;
# apt-get install libncurses-dev
&lt;/code&gt;

Dépendances pour gconfig :
&lt;code bash&gt;
# apt-get install libglade2-dev
&lt;/code&gt;

Dépendances pour xconfig :
&lt;code bash&gt;
# apt-get install libqt3-mt-dev
&lt;/code&gt;

Il vous faut aussi un d'espace disque suffisant, l'archive compressée fait 90 Mo, l'archive décompressée des sources du noyau Linux fait dans les 400 Méga octets...
Comptez au minimum 2.5 Go si vous souhaitez compiler linux-image et linux-headers.

== Préparation et récupération des sources ==

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
&lt;code bash&gt;
$ cd
&lt;/code&gt;

Créer le répertoire de travail :
&lt;code bash&gt;
$ mkdir src
$ cd src 
~/src$
&lt;/code&gt;

Télécharger les sources :

&lt;code bash&gt;
~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

&lt;code bash&gt;
$ su -
# adduser laurent src
Adding user `laurent' to group `src' ...
Adding user laurent to group src
Done.
# exit
&lt;/code&gt;

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

&lt;code bash&gt;
~/src$ tar xvzf linux-2.6.37-rc2.tar.gz
&lt;/code&gt;

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

&lt;code bash&gt;
~/src$ cd /usr/src
&lt;/code&gt;

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

&lt;code bash&gt;
/usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
/usr/src$ cd ~/src                                                        
~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
&lt;/code&gt;

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code bash&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code bash&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

&lt;code bash&gt;
~/src/linux$ cd ~/src
~/src$ cp -vi /boot/config-`uname -r` .config
~/src$ cd linux
~/src/linux$
&lt;/code&gt;

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte...
La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

&lt;code bash&gt;
~/src/linux$ make localmodconfig
&lt;/code&gt;

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

&lt;code bash&gt;
~/src/linux$ yes &quot;&quot; | make localmodconfig
&lt;/code&gt;

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;.

&lt;code bash&gt;
~/src/linux$ make oldconfig
&lt;/code&gt;

Répondez aux questions. Les réponses par défaut sont généralement les bonnes.

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

&lt;code bash&gt;
~/src/linux$ make config
&lt;/code&gt;

Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make gconfig
&lt;/code&gt;

Très joli...

[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make xconfig
&lt;/code&gt;

Le plus agréable à utiliser.

[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
&lt;code bash&gt;
~/src/linux$ make-kpkg clean
&lt;/code&gt;

== La compilation ==

&lt;code bash&gt;
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

== En cas d'échec ==

Rien n'est perdu, et il est facile de revenir au début pour recommencer.
Pour recompiler à nouveau votre noyau, pas de problèmes car le .config a gardé toutes vos options en mémoire, il suffit donc de modifier les options que vous voulez par la commande

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Vous préférerez peut-être recommencer depuis le début :

&lt;code bash&gt;
~/src/linux$ cp -vi /boot/config-`uname -r` .config
~/src/linux$ make localmodconfig
Etc.
&lt;/code&gt;

Il faudra ensuite faire:

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

== Installation ==

Vous vous retrouvez avec deux paquets, qu'il ne reste plus qu'a installer

&lt;code bash&gt;
~/src/linux$ su -
mot de passe:
# dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

Et si vous avez besoin des &quot;headers&quot; :

&lt;code bash&gt;
# dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

&lt;code bash&gt;
# exit
~/src/linux$
&lt;/code&gt;

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>f52nu1vo7hlsy2meyuauvcasezurkyw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2364</id>
      <parentid>2362</parentid>
      <timestamp>2010-11-22T04:37:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="10891">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

&lt;code bash&gt;
# apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot
&lt;/code&gt;

Dépendances pour menuconfig :
&lt;code bash&gt;
# apt-get install libncurses-dev
&lt;/code&gt;

Dépendances pour gconfig :
&lt;code bash&gt;
# apt-get install libglade2-dev
&lt;/code&gt;

Dépendances pour xconfig :
&lt;code bash&gt;
# apt-get install libqt3-mt-dev
&lt;/code&gt;

Il vous faut aussi un d'espace disque suffisant, l'archive compressée fait 90 Mo, l'archive décompressée des sources du noyau Linux fait dans les 400 Méga octets...
Comptez au minimum 2.5 Go si vous souhaitez compiler linux-image et linux-headers.

== Préparation et récupération des sources ==

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
&lt;code bash&gt;
$ cd
&lt;/code&gt;

Créer le répertoire de travail :
&lt;code bash&gt;
$ mkdir src
$ cd src 
~/src$
&lt;/code&gt;

Télécharger les sources :

&lt;code bash&gt;
~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

&lt;code bash&gt;
$ su -
# adduser laurent src
Adding user `laurent' to group `src' ...
Adding user laurent to group src
Done.
# exit
&lt;/code&gt;

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

&lt;code bash&gt;
~/src$ tar xvzf linux-2.6.37-rc2.tar.gz
&lt;/code&gt;

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

&lt;code bash&gt;
~/src$ cd /usr/src
&lt;/code&gt;

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

&lt;code bash&gt;
/usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
/usr/src$ cd ~/src                                                        
~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
&lt;/code&gt;

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code bash&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code bash&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

&lt;code bash&gt;
~/src/linux$ cd ~/src
~/src$ cp -vi /boot/config-`uname -r` .config
~/src$ cd linux
~/src/linux$
&lt;/code&gt;

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte...
La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

&lt;code bash&gt;
~/src/linux$ make localmodconfig
&lt;/code&gt;

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

&lt;code bash&gt;
~/src/linux$ yes &quot;&quot; | make localmodconfig
&lt;/code&gt;

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;.

&lt;code bash&gt;
~/src/linux$ make oldconfig
&lt;/code&gt;

Répondez aux questions. Les réponses par défaut sont généralement les bonnes.

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

&lt;code bash&gt;
~/src/linux$ make config
&lt;/code&gt;

Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make gconfig
&lt;/code&gt;

Très joli...

[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make xconfig
&lt;/code&gt;

Le plus agréable à utiliser.

[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
&lt;code bash&gt;
~/src/linux$ make-kpkg clean
&lt;/code&gt;

== La compilation ==

&lt;code bash&gt;
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

== En cas d'échec ==

Rien n'est perdu, et il est facile de revenir au début pour recommencer.
Pour recompiler à nouveau votre noyau, pas de problèmes car le .config a gardé toutes vos options en mémoire, il suffit donc de modifier les options que vous voulez par la commande

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Vous préférerez peut-être recommencer depuis le début :

&lt;code bash&gt;
~/src/linux$ cp -vi /boot/config-`uname -r` .config
~/src/linux$ make localmodconfig
Etc.
&lt;/code&gt;

Il faudra ensuite faire:

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

Si vous n'avez pas besoin des &quot;headers&quot; du noyau :

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image
&lt;/code&gt;

== Installation ==

Vous vous retrouvez avec deux paquets (si vous avez aussi compilé les &quot;headers&quot;), qu'il ne reste plus qu'a installer

&lt;code bash&gt;
~/src/linux$ su -
mot de passe:
# dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

Et si vous avez besoin des &quot;headers&quot; :

&lt;code bash&gt;
# dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

&lt;code bash&gt;
# exit
~/src/linux$
&lt;/code&gt;

Si tout s'est bien passé vous devriez maintenant avoir une nouvelle entrée dans grub :

[[Fichier:Grub 2637.jpeg]]

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>pigxby8df7bro9atpyh06ylkrznihl7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2365</id>
      <parentid>2364</parentid>
      <timestamp>2010-11-22T04:45:42Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="11646">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

&lt;code bash&gt;
# apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot
&lt;/code&gt;

Dépendances pour menuconfig :
&lt;code bash&gt;
# apt-get install libncurses-dev
&lt;/code&gt;

Dépendances pour gconfig :
&lt;code bash&gt;
# apt-get install libglade2-dev
&lt;/code&gt;

Dépendances pour xconfig :
&lt;code bash&gt;
# apt-get install libqt3-mt-dev
&lt;/code&gt;

Il vous faut aussi un d'espace disque suffisant, l'archive compressée fait 90 Mo, l'archive décompressée des sources du noyau Linux fait dans les 400 Méga octets...
Comptez au minimum 2.5 Go si vous souhaitez compiler linux-image et linux-headers.

== Préparation et récupération des sources ==

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
&lt;code bash&gt;
$ cd
&lt;/code&gt;

Créer le répertoire de travail :
&lt;code bash&gt;
$ mkdir src
$ cd src 
~/src$
&lt;/code&gt;

Télécharger les sources :

&lt;code bash&gt;
~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

&lt;code bash&gt;
$ su -
# adduser laurent src
Adding user `laurent' to group `src' ...
Adding user laurent to group src
Done.
# exit
&lt;/code&gt;

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

&lt;code bash&gt;
~/src$ tar xvzf linux-2.6.37-rc2.tar.gz
&lt;/code&gt;

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

&lt;code bash&gt;
~/src$ cd /usr/src
&lt;/code&gt;

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

&lt;code bash&gt;
/usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
/usr/src$ cd ~/src                                                        
~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
&lt;/code&gt;

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code bash&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code bash&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

&lt;code bash&gt;
~/src/linux$ cd ~/src
~/src$ cp -vi /boot/config-`uname -r` .config
~/src$ cd linux
~/src/linux$
&lt;/code&gt;

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte...
La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

&lt;code bash&gt;
~/src/linux$ make localmodconfig
&lt;/code&gt;

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

&lt;code bash&gt;
~/src/linux$ yes &quot;&quot; | make localmodconfig
&lt;/code&gt;

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;.

&lt;code bash&gt;
~/src/linux$ make oldconfig
&lt;/code&gt;

Répondez aux questions. Les réponses par défaut sont généralement les bonnes.

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

&lt;code bash&gt;
~/src/linux$ make config
&lt;/code&gt;

Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make gconfig
&lt;/code&gt;

Très joli...

[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make xconfig
&lt;/code&gt;

Le plus agréable à utiliser.

[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
&lt;code bash&gt;
~/src/linux$ make-kpkg clean
&lt;/code&gt;

== La compilation ==

&lt;code bash&gt;
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

== En cas d'échec ==

Rien n'est perdu, et il est facile de revenir au début pour recommencer.
Pour recompiler à nouveau votre noyau, pas de problèmes car le .config a gardé toutes vos options en mémoire, il suffit donc de modifier les options que vous voulez par la commande

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Vous préférerez peut-être recommencer depuis le début :

&lt;code bash&gt;
~/src/linux$ cp -vi /boot/config-`uname -r` .config
~/src/linux$ make localmodconfig
Etc.
&lt;/code&gt;

Il faudra ensuite faire:

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

Si vous n'avez pas besoin des &quot;headers&quot; du noyau :

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image
&lt;/code&gt;

== Installation ==

Vous vous retrouvez avec deux paquets (si vous avez aussi compilé les &quot;headers&quot;), qu'il ne reste plus qu'a installer

&lt;code bash&gt;
~/src/linux$ su -
mot de passe:
# dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

Et si vous avez besoin des &quot;headers&quot; :

&lt;code bash&gt;
# dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

&lt;code bash&gt;
# exit
~/src/linux$
&lt;/code&gt;

Si tout s'est bien passé vous devriez maintenant avoir une nouvelle entrée dans grub :

[[Fichier:Grub 2637.jpeg]]

== Désinstallation ==

Si pour une raison ou une autre vous n'arrivez pas à démarrer sur votre nouveau noyau et que vous souhaitiez le désinstaller.
Redémmarer sur le dernier noyao opérationnel, puis :

&lt;code bash&gt;
laurent@Squeeze:~$ su -
Mot de passe : 
root@Squeeze:~# apt-get remove --purge linux-headers-2.6.37-rc2-20101121 linux-image-2.6.37-rc2-20101121
Lecture des listes de paquets... Fait
...
Les paquets suivants seront ENLEVÉS :
  linux-headers-2.6.37-rc2-20101121* linux-image-2.6.37-rc2-20101121*
0 mis à jour, 0 nouvellement installés, 2 à enlever et 0 non mis à jour.
Après cette opération, 71,3 Mo d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
...
Generating grub.cfg ...
...
root@Squeeze:~#
&lt;/code&gt;

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>rrwlopp7quxxzi3rkgx7fxq57v30bg2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2366</id>
      <parentid>2365</parentid>
      <timestamp>2010-11-22T05:06:48Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Préparer la compilation du noyau */</comment>
      <text xml:space="preserve" bytes="11726">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

&lt;code bash&gt;
# apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot
&lt;/code&gt;

Dépendances pour menuconfig :
&lt;code bash&gt;
# apt-get install libncurses-dev
&lt;/code&gt;

Dépendances pour gconfig :
&lt;code bash&gt;
# apt-get install libglade2-dev
&lt;/code&gt;

Dépendances pour xconfig :
&lt;code bash&gt;
# apt-get install libqt3-mt-dev
&lt;/code&gt;

Il vous faut aussi un d'espace disque suffisant, l'archive compressée fait 90 Mo, l'archive décompressée des sources du noyau Linux fait dans les 400 Méga octets...
Comptez au minimum 2.5 Go si vous souhaitez compiler linux-image et linux-headers.

== Préparation et récupération des sources ==

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
&lt;code bash&gt;
$ cd
&lt;/code&gt;

Créer le répertoire de travail :
&lt;code bash&gt;
$ mkdir src
$ cd src 
~/src$
&lt;/code&gt;

Télécharger les sources :

&lt;code bash&gt;
~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

&lt;code bash&gt;
$ su -
# adduser laurent src
Adding user `laurent' to group `src' ...
Adding user laurent to group src
Done.
# exit
&lt;/code&gt;

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

&lt;code bash&gt;
~/src$ tar xvzf linux-2.6.37-rc2.tar.gz
ou
~/src$ tar xvjf linux-2.6.37-rc2.tar.bz2 (si vous avez téléchargé le bz2)
&lt;/code&gt;

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

&lt;code bash&gt;
~/src$ cd /usr/src
&lt;/code&gt;

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

&lt;code bash&gt;
/usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
/usr/src$ cd ~/src                                                        
~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
&lt;/code&gt;

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code bash&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code bash&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

&lt;code bash&gt;
~/src/linux$ cd ~/src
~/src$ cp -vi /boot/config-`uname -r` .config
~/src$ cd linux
~/src/linux$
&lt;/code&gt;

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte...
La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

&lt;code bash&gt;
~/src/linux$ make localmodconfig
&lt;/code&gt;

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

&lt;code bash&gt;
~/src/linux$ yes &quot;&quot; | make localmodconfig
&lt;/code&gt;

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;.

&lt;code bash&gt;
~/src/linux$ make oldconfig
&lt;/code&gt;

Répondez aux questions. Les réponses par défaut sont généralement les bonnes.

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

&lt;code bash&gt;
~/src/linux$ make config
&lt;/code&gt;

Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make gconfig
&lt;/code&gt;

Très joli...

[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make xconfig
&lt;/code&gt;

Le plus agréable à utiliser.

[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
&lt;code bash&gt;
~/src/linux$ make-kpkg clean
&lt;/code&gt;

== La compilation ==

&lt;code bash&gt;
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

== En cas d'échec ==

Rien n'est perdu, et il est facile de revenir au début pour recommencer.
Pour recompiler à nouveau votre noyau, pas de problèmes car le .config a gardé toutes vos options en mémoire, il suffit donc de modifier les options que vous voulez par la commande

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Vous préférerez peut-être recommencer depuis le début :

&lt;code bash&gt;
~/src/linux$ cp -vi /boot/config-`uname -r` .config
~/src/linux$ make localmodconfig
Etc.
&lt;/code&gt;

Il faudra ensuite faire:

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

Si vous n'avez pas besoin des &quot;headers&quot; du noyau :

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image
&lt;/code&gt;

== Installation ==

Vous vous retrouvez avec deux paquets (si vous avez aussi compilé les &quot;headers&quot;), qu'il ne reste plus qu'a installer

&lt;code bash&gt;
~/src/linux$ su -
mot de passe:
# dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

Et si vous avez besoin des &quot;headers&quot; :

&lt;code bash&gt;
# dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

&lt;code bash&gt;
# exit
~/src/linux$
&lt;/code&gt;

Si tout s'est bien passé vous devriez maintenant avoir une nouvelle entrée dans grub :

[[Fichier:Grub 2637.jpeg]]

== Désinstallation ==

Si pour une raison ou une autre vous n'arrivez pas à démarrer sur votre nouveau noyau et que vous souhaitiez le désinstaller.
Redémmarer sur le dernier noyao opérationnel, puis :

&lt;code bash&gt;
laurent@Squeeze:~$ su -
Mot de passe : 
root@Squeeze:~# apt-get remove --purge linux-headers-2.6.37-rc2-20101121 linux-image-2.6.37-rc2-20101121
Lecture des listes de paquets... Fait
...
Les paquets suivants seront ENLEVÉS :
  linux-headers-2.6.37-rc2-20101121* linux-image-2.6.37-rc2-20101121*
0 mis à jour, 0 nouvellement installés, 2 à enlever et 0 non mis à jour.
Après cette opération, 71,3 Mo d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
...
Generating grub.cfg ...
...
root@Squeeze:~#
&lt;/code&gt;

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>jkbz5bcnrn84lo0pazhxdscdd1hva00</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2368</id>
      <parentid>2366</parentid>
      <timestamp>2010-11-22T05:43:36Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* La compilation */</comment>
      <text xml:space="preserve" bytes="11867">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

&lt;code bash&gt;
# apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot
&lt;/code&gt;

Dépendances pour menuconfig :
&lt;code bash&gt;
# apt-get install libncurses-dev
&lt;/code&gt;

Dépendances pour gconfig :
&lt;code bash&gt;
# apt-get install libglade2-dev
&lt;/code&gt;

Dépendances pour xconfig :
&lt;code bash&gt;
# apt-get install libqt3-mt-dev
&lt;/code&gt;

Il vous faut aussi un d'espace disque suffisant, l'archive compressée fait 90 Mo, l'archive décompressée des sources du noyau Linux fait dans les 400 Méga octets...
Comptez au minimum 2.5 Go si vous souhaitez compiler linux-image et linux-headers.

== Préparation et récupération des sources ==

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
&lt;code bash&gt;
$ cd
&lt;/code&gt;

Créer le répertoire de travail :
&lt;code bash&gt;
$ mkdir src
$ cd src 
~/src$
&lt;/code&gt;

Télécharger les sources :

&lt;code bash&gt;
~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

&lt;code bash&gt;
$ su -
# adduser laurent src
Adding user `laurent' to group `src' ...
Adding user laurent to group src
Done.
# exit
&lt;/code&gt;

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

&lt;code bash&gt;
~/src$ tar xvzf linux-2.6.37-rc2.tar.gz
ou
~/src$ tar xvjf linux-2.6.37-rc2.tar.bz2 (si vous avez téléchargé le bz2)
&lt;/code&gt;

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

&lt;code bash&gt;
~/src$ cd /usr/src
&lt;/code&gt;

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

&lt;code bash&gt;
/usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
/usr/src$ cd ~/src                                                        
~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
&lt;/code&gt;

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code bash&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code bash&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

&lt;code bash&gt;
~/src/linux$ cd ~/src
~/src$ cp -vi /boot/config-`uname -r` .config
~/src$ cd linux
~/src/linux$
&lt;/code&gt;

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte...
La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

&lt;code bash&gt;
~/src/linux$ make localmodconfig
&lt;/code&gt;

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

&lt;code bash&gt;
~/src/linux$ yes &quot;&quot; | make localmodconfig
&lt;/code&gt;

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;.

&lt;code bash&gt;
~/src/linux$ make oldconfig
&lt;/code&gt;

Répondez aux questions. Les réponses par défaut sont généralement les bonnes.

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

&lt;code bash&gt;
~/src/linux$ make config
&lt;/code&gt;

Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make gconfig
&lt;/code&gt;

Très joli...

[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make xconfig
&lt;/code&gt;

Le plus agréable à utiliser.

[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
&lt;code bash&gt;
~/src/linux$ make-kpkg clean
&lt;/code&gt;

== La compilation ==

&lt;code bash&gt;
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

La compilation sur une machine puissante dure à peine 30 minutes. Cela peut dépasser plusieurs heures en fonction de votre configuration.

== En cas d'échec ==

Rien n'est perdu, et il est facile de revenir au début pour recommencer.
Pour recompiler à nouveau votre noyau, pas de problèmes car le .config a gardé toutes vos options en mémoire, il suffit donc de modifier les options que vous voulez par la commande

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Vous préférerez peut-être recommencer depuis le début :

&lt;code bash&gt;
~/src/linux$ cp -vi /boot/config-`uname -r` .config
~/src/linux$ make localmodconfig
Etc.
&lt;/code&gt;

Il faudra ensuite faire:

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

Si vous n'avez pas besoin des &quot;headers&quot; du noyau :

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image
&lt;/code&gt;

== Installation ==

Vous vous retrouvez avec deux paquets (si vous avez aussi compilé les &quot;headers&quot;), qu'il ne reste plus qu'a installer

&lt;code bash&gt;
~/src/linux$ su -
mot de passe:
# dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

Et si vous avez besoin des &quot;headers&quot; :

&lt;code bash&gt;
# dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

&lt;code bash&gt;
# exit
~/src/linux$
&lt;/code&gt;

Si tout s'est bien passé vous devriez maintenant avoir une nouvelle entrée dans grub :

[[Fichier:Grub 2637.jpeg]]

== Désinstallation ==

Si pour une raison ou une autre vous n'arrivez pas à démarrer sur votre nouveau noyau et que vous souhaitiez le désinstaller.
Redémmarer sur le dernier noyao opérationnel, puis :

&lt;code bash&gt;
laurent@Squeeze:~$ su -
Mot de passe : 
root@Squeeze:~# apt-get remove --purge linux-headers-2.6.37-rc2-20101121 linux-image-2.6.37-rc2-20101121
Lecture des listes de paquets... Fait
...
Les paquets suivants seront ENLEVÉS :
  linux-headers-2.6.37-rc2-20101121* linux-image-2.6.37-rc2-20101121*
0 mis à jour, 0 nouvellement installés, 2 à enlever et 0 non mis à jour.
Après cette opération, 71,3 Mo d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
...
Generating grub.cfg ...
...
root@Squeeze:~#
&lt;/code&gt;

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>kujxbmev1ndld8w71768fcikhs58jwp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2369</id>
      <parentid>2368</parentid>
      <timestamp>2010-11-22T06:55:21Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Préparation et récupération des sources */</comment>
      <text xml:space="preserve" bytes="14422">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

&lt;code bash&gt;
# apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot
&lt;/code&gt;

Dépendances pour menuconfig :
&lt;code bash&gt;
# apt-get install libncurses-dev
&lt;/code&gt;

Dépendances pour gconfig :
&lt;code bash&gt;
# apt-get install libglade2-dev
&lt;/code&gt;

Dépendances pour xconfig :
&lt;code bash&gt;
# apt-get install libqt3-mt-dev
&lt;/code&gt;

Il vous faut aussi un d'espace disque suffisant, l'archive compressée fait 90 Mo, l'archive décompressée des sources du noyau Linux fait dans les 400 Méga octets...
Comptez au minimum 2.5 Go si vous souhaitez compiler linux-image et linux-headers.

== Préparation et récupération des sources ==

=== Téléchargement des sources à partir de kernel.org ===

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
&lt;code bash&gt;
$ cd
&lt;/code&gt;

Créer le répertoire de travail :
&lt;code bash&gt;
$ mkdir src
$ cd src 
~/src$
&lt;/code&gt;

Télécharger les sources :

&lt;code bash&gt;
~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

=== Obtenir les sources à partir des dépôts ===

Vous avez aussi la possibilité d'obtenir les sources à partir des dépôts Debian.
Cas le plus simple : Les sources sont disponibles dans la branche dans laquelle vous êtes...

à ce jour (22 novembre 2010)

* Stable : [http://packages.debian.org/lenny/linux-source-2.6.26 linux-source-2.6.26]
* Unstable : [http://packages.debian.org/squeeze/linux-source-2.6.32 linux-source-2.6.32]
* Sid : [http://packages.debian.org/sid/linux-source-2.6.32 linux-source-2.6.32]
* Experimental (qui n'est pas à proprement parlé une branche) : [http://packages.debian.org/experimental/linux-source-2.6.36 linux-source-2.6.36]

Pour savoir exactement les sources qui sont disponibles sur votre système :

&lt;code bash&gt;
aptitude search linux-source
v   linux-source                                             -                                                                    
p   linux-source-2.6                                         - Linux kernel source for Linux 2.6 (meta-package)                   
p   linux-source-2.6.26                                      - Linux kernel source for version 2.6.26 with Debian patches         
p   linux-source-2.6.27-git1-bling102008                     - Linux kernel source for version 2.6.27-git1-bling102008            
p   linux-source-2.6.29.1-090425                             - Linux kernel source for version 2.6.29.1-090425                    
p   linux-source-2.6.32                                      - Linux kernel source for version 2.6.32 with Debian patches         
i   linux-source-2.6.35                                      - Linux kernel source for version 2.6.35 with Debian patches         
i   linux-source-2.6.36                                      - Linux kernel source for version 2.6.36 with Debian patches
&lt;/code&gt;

Pour obtenir les sources, il suffit de se placer dans votre répertoire ~/src et de taper la commande :

&lt;code bash&gt;
$ cd
$ mkdir src
$ su -
mot de passe:
# apt-get install linux-source-2.6.36
# cp /usr/src/linux-source-2.6.36.tar.bz2 /home/votre_user/src
# chown votre_user:votre_user /home/votre_user/src/linux-source-2.6.36.tar.bz2
# exit
$
&lt;/code&gt;

Pour obtenir des sources qui réclament la modification de votre sources.list rendez-vous à [[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|cette page]] pour les explications. (Attention cette manipulation n'est pas sans risque et nécessite la mise en place d'un fichier &quot;préferences&quot;)

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

&lt;code bash&gt;
$ su -
# adduser laurent src
Adding user `laurent' to group `src' ...
Adding user laurent to group src
Done.
# exit
&lt;/code&gt;

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

&lt;code bash&gt;
~/src$ tar xvzf linux-2.6.37-rc2.tar.gz
ou
~/src$ tar xvjf linux-2.6.37-rc2.tar.bz2 (si vous avez téléchargé le bz2)
&lt;/code&gt;

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

&lt;code bash&gt;
~/src$ cd /usr/src
&lt;/code&gt;

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

&lt;code bash&gt;
/usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
/usr/src$ cd ~/src                                                        
~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
&lt;/code&gt;

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code bash&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code bash&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

&lt;code bash&gt;
~/src/linux$ cd ~/src
~/src$ cp -vi /boot/config-`uname -r` .config
~/src$ cd linux
~/src/linux$
&lt;/code&gt;

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte...
La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

&lt;code bash&gt;
~/src/linux$ make localmodconfig
&lt;/code&gt;

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

&lt;code bash&gt;
~/src/linux$ yes &quot;&quot; | make localmodconfig
&lt;/code&gt;

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;.

&lt;code bash&gt;
~/src/linux$ make oldconfig
&lt;/code&gt;

Répondez aux questions. Les réponses par défaut sont généralement les bonnes.

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

&lt;code bash&gt;
~/src/linux$ make config
&lt;/code&gt;

Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make gconfig
&lt;/code&gt;

Très joli...

[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make xconfig
&lt;/code&gt;

Le plus agréable à utiliser.

[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
&lt;code bash&gt;
~/src/linux$ make-kpkg clean
&lt;/code&gt;

== La compilation ==

&lt;code bash&gt;
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

La compilation sur une machine puissante dure à peine 30 minutes. Cela peut dépasser plusieurs heures en fonction de votre configuration.

== En cas d'échec ==

Rien n'est perdu, et il est facile de revenir au début pour recommencer.
Pour recompiler à nouveau votre noyau, pas de problèmes car le .config a gardé toutes vos options en mémoire, il suffit donc de modifier les options que vous voulez par la commande

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Vous préférerez peut-être recommencer depuis le début :

&lt;code bash&gt;
~/src/linux$ cp -vi /boot/config-`uname -r` .config
~/src/linux$ make localmodconfig
Etc.
&lt;/code&gt;

Il faudra ensuite faire:

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

Si vous n'avez pas besoin des &quot;headers&quot; du noyau :

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image
&lt;/code&gt;

== Installation ==

Vous vous retrouvez avec deux paquets (si vous avez aussi compilé les &quot;headers&quot;), qu'il ne reste plus qu'a installer

&lt;code bash&gt;
~/src/linux$ su -
mot de passe:
# dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

Et si vous avez besoin des &quot;headers&quot; :

&lt;code bash&gt;
# dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

&lt;code bash&gt;
# exit
~/src/linux$
&lt;/code&gt;

Si tout s'est bien passé vous devriez maintenant avoir une nouvelle entrée dans grub :

[[Fichier:Grub 2637.jpeg]]

== Désinstallation ==

Si pour une raison ou une autre vous n'arrivez pas à démarrer sur votre nouveau noyau et que vous souhaitiez le désinstaller.
Redémmarer sur le dernier noyao opérationnel, puis :

&lt;code bash&gt;
laurent@Squeeze:~$ su -
Mot de passe : 
root@Squeeze:~# apt-get remove --purge linux-headers-2.6.37-rc2-20101121 linux-image-2.6.37-rc2-20101121
Lecture des listes de paquets... Fait
...
Les paquets suivants seront ENLEVÉS :
  linux-headers-2.6.37-rc2-20101121* linux-image-2.6.37-rc2-20101121*
0 mis à jour, 0 nouvellement installés, 2 à enlever et 0 non mis à jour.
Après cette opération, 71,3 Mo d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
...
Generating grub.cfg ...
...
root@Squeeze:~#
&lt;/code&gt;

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>jl5b7s8ap1b82saaz4b2entp794tu1c</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2370</id>
      <parentid>2369</parentid>
      <timestamp>2010-11-22T06:57:24Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Obtenir les sources à partir des dépôts */</comment>
      <text xml:space="preserve" bytes="14402">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

&lt;code bash&gt;
# apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot
&lt;/code&gt;

Dépendances pour menuconfig :
&lt;code bash&gt;
# apt-get install libncurses-dev
&lt;/code&gt;

Dépendances pour gconfig :
&lt;code bash&gt;
# apt-get install libglade2-dev
&lt;/code&gt;

Dépendances pour xconfig :
&lt;code bash&gt;
# apt-get install libqt3-mt-dev
&lt;/code&gt;

Il vous faut aussi un d'espace disque suffisant, l'archive compressée fait 90 Mo, l'archive décompressée des sources du noyau Linux fait dans les 400 Méga octets...
Comptez au minimum 2.5 Go si vous souhaitez compiler linux-image et linux-headers.

== Préparation et récupération des sources ==

=== Téléchargement des sources à partir de kernel.org ===

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
&lt;code bash&gt;
$ cd
&lt;/code&gt;

Créer le répertoire de travail :
&lt;code bash&gt;
$ mkdir src
$ cd src 
~/src$
&lt;/code&gt;

Télécharger les sources :

&lt;code bash&gt;
~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

=== Obtenir les sources à partir des dépôts ===

Vous avez aussi la possibilité d'obtenir les sources à partir des dépôts Debian.
Cas le plus simple : Les sources sont disponibles dans la branche dans laquelle vous êtes...

à ce jour (22 novembre 2010)

* Stable : [http://packages.debian.org/lenny/linux-source-2.6.26 linux-source-2.6.26]
* Unstable : [http://packages.debian.org/squeeze/linux-source-2.6.32 linux-source-2.6.32]
* Sid : [http://packages.debian.org/sid/linux-source-2.6.32 linux-source-2.6.32]
* Experimental (qui n'est pas à proprement parlé une branche) : [http://packages.debian.org/experimental/linux-source-2.6.36 linux-source-2.6.36]

Connaître les sources disponibles pour votre système :

&lt;code bash&gt;
aptitude search linux-source
v   linux-source                                             -                                                                    
p   linux-source-2.6                                         - Linux kernel source for Linux 2.6 (meta-package)                   
p   linux-source-2.6.26                                      - Linux kernel source for version 2.6.26 with Debian patches         
p   linux-source-2.6.27-git1-bling102008                     - Linux kernel source for version 2.6.27-git1-bling102008            
p   linux-source-2.6.29.1-090425                             - Linux kernel source for version 2.6.29.1-090425                    
p   linux-source-2.6.32                                      - Linux kernel source for version 2.6.32 with Debian patches         
i   linux-source-2.6.35                                      - Linux kernel source for version 2.6.35 with Debian patches         
i   linux-source-2.6.36                                      - Linux kernel source for version 2.6.36 with Debian patches
&lt;/code&gt;

Pour obtenir les sources, il suffit de se placer dans votre répertoire ~/src et de taper la commande :

&lt;code bash&gt;
$ cd
$ mkdir src
$ su -
mot de passe:
# apt-get install linux-source-2.6.36
# cp /usr/src/linux-source-2.6.36.tar.bz2 /home/votre_user/src
# chown votre_user:votre_user /home/votre_user/src/linux-source-2.6.36.tar.bz2
# exit
$
&lt;/code&gt;

Pour obtenir des sources qui réclament la modification de votre sources.list rendez-vous à [[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|cette page]] pour les explications. (Attention cette manipulation n'est pas sans risque et nécessite la mise en place d'un fichier &quot;préferences&quot;)

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

&lt;code bash&gt;
$ su -
# adduser laurent src
Adding user `laurent' to group `src' ...
Adding user laurent to group src
Done.
# exit
&lt;/code&gt;

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

&lt;code bash&gt;
~/src$ tar xvzf linux-2.6.37-rc2.tar.gz
ou
~/src$ tar xvjf linux-2.6.37-rc2.tar.bz2 (si vous avez téléchargé le bz2)
&lt;/code&gt;

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

&lt;code bash&gt;
~/src$ cd /usr/src
&lt;/code&gt;

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

&lt;code bash&gt;
/usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
/usr/src$ cd ~/src                                                        
~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
&lt;/code&gt;

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code bash&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code bash&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

&lt;code bash&gt;
~/src/linux$ cd ~/src
~/src$ cp -vi /boot/config-`uname -r` .config
~/src$ cd linux
~/src/linux$
&lt;/code&gt;

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte...
La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

&lt;code bash&gt;
~/src/linux$ make localmodconfig
&lt;/code&gt;

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

&lt;code bash&gt;
~/src/linux$ yes &quot;&quot; | make localmodconfig
&lt;/code&gt;

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;.

&lt;code bash&gt;
~/src/linux$ make oldconfig
&lt;/code&gt;

Répondez aux questions. Les réponses par défaut sont généralement les bonnes.

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

&lt;code bash&gt;
~/src/linux$ make config
&lt;/code&gt;

Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make gconfig
&lt;/code&gt;

Très joli...

[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make xconfig
&lt;/code&gt;

Le plus agréable à utiliser.

[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
&lt;code bash&gt;
~/src/linux$ make-kpkg clean
&lt;/code&gt;

== La compilation ==

&lt;code bash&gt;
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

La compilation sur une machine puissante dure à peine 30 minutes. Cela peut dépasser plusieurs heures en fonction de votre configuration.

== En cas d'échec ==

Rien n'est perdu, et il est facile de revenir au début pour recommencer.
Pour recompiler à nouveau votre noyau, pas de problèmes car le .config a gardé toutes vos options en mémoire, il suffit donc de modifier les options que vous voulez par la commande

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Vous préférerez peut-être recommencer depuis le début :

&lt;code bash&gt;
~/src/linux$ cp -vi /boot/config-`uname -r` .config
~/src/linux$ make localmodconfig
Etc.
&lt;/code&gt;

Il faudra ensuite faire:

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

Si vous n'avez pas besoin des &quot;headers&quot; du noyau :

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image
&lt;/code&gt;

== Installation ==

Vous vous retrouvez avec deux paquets (si vous avez aussi compilé les &quot;headers&quot;), qu'il ne reste plus qu'a installer

&lt;code bash&gt;
~/src/linux$ su -
mot de passe:
# dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

Et si vous avez besoin des &quot;headers&quot; :

&lt;code bash&gt;
# dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

&lt;code bash&gt;
# exit
~/src/linux$
&lt;/code&gt;

Si tout s'est bien passé vous devriez maintenant avoir une nouvelle entrée dans grub :

[[Fichier:Grub 2637.jpeg]]

== Désinstallation ==

Si pour une raison ou une autre vous n'arrivez pas à démarrer sur votre nouveau noyau et que vous souhaitiez le désinstaller.
Redémmarer sur le dernier noyao opérationnel, puis :

&lt;code bash&gt;
laurent@Squeeze:~$ su -
Mot de passe : 
root@Squeeze:~# apt-get remove --purge linux-headers-2.6.37-rc2-20101121 linux-image-2.6.37-rc2-20101121
Lecture des listes de paquets... Fait
...
Les paquets suivants seront ENLEVÉS :
  linux-headers-2.6.37-rc2-20101121* linux-image-2.6.37-rc2-20101121*
0 mis à jour, 0 nouvellement installés, 2 à enlever et 0 non mis à jour.
Après cette opération, 71,3 Mo d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
...
Generating grub.cfg ...
...
root@Squeeze:~#
&lt;/code&gt;

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>qoydsg5hfv1b7ox4lt0b8vcika09t7z</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2371</id>
      <parentid>2370</parentid>
      <timestamp>2010-11-22T06:58:33Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Obtenir les sources à partir des dépôts */</comment>
      <text xml:space="preserve" bytes="14404">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

&lt;code bash&gt;
# apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot
&lt;/code&gt;

Dépendances pour menuconfig :
&lt;code bash&gt;
# apt-get install libncurses-dev
&lt;/code&gt;

Dépendances pour gconfig :
&lt;code bash&gt;
# apt-get install libglade2-dev
&lt;/code&gt;

Dépendances pour xconfig :
&lt;code bash&gt;
# apt-get install libqt3-mt-dev
&lt;/code&gt;

Il vous faut aussi un d'espace disque suffisant, l'archive compressée fait 90 Mo, l'archive décompressée des sources du noyau Linux fait dans les 400 Méga octets...
Comptez au minimum 2.5 Go si vous souhaitez compiler linux-image et linux-headers.

== Préparation et récupération des sources ==

=== Téléchargement des sources à partir de kernel.org ===

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
&lt;code bash&gt;
$ cd
&lt;/code&gt;

Créer le répertoire de travail :
&lt;code bash&gt;
$ mkdir src
$ cd src 
~/src$
&lt;/code&gt;

Télécharger les sources :

&lt;code bash&gt;
~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

=== Obtenir les sources à partir des dépôts ===

Vous avez aussi la possibilité d'obtenir les sources à partir des dépôts Debian.
Cas le plus simple : Les sources sont disponibles dans la branche dans laquelle vous êtes...

à ce jour (22 novembre 2010)

* Stable : [http://packages.debian.org/lenny/linux-source-2.6.26 linux-source-2.6.26]
* Unstable : [http://packages.debian.org/squeeze/linux-source-2.6.32 linux-source-2.6.32]
* Sid : [http://packages.debian.org/sid/linux-source-2.6.32 linux-source-2.6.32]
* Experimental (qui n'est pas à proprement parlé une branche) : [http://packages.debian.org/experimental/linux-source-2.6.36 linux-source-2.6.36]

Connaître les sources disponibles pour votre système :

&lt;code bash&gt;
$ aptitude search linux-source
v   linux-source                                             -                                                                    
p   linux-source-2.6                                         - Linux kernel source for Linux 2.6 (meta-package)                   
p   linux-source-2.6.26                                      - Linux kernel source for version 2.6.26 with Debian patches         
p   linux-source-2.6.27-git1-bling102008                     - Linux kernel source for version 2.6.27-git1-bling102008            
p   linux-source-2.6.29.1-090425                             - Linux kernel source for version 2.6.29.1-090425                    
p   linux-source-2.6.32                                      - Linux kernel source for version 2.6.32 with Debian patches         
i   linux-source-2.6.35                                      - Linux kernel source for version 2.6.35 with Debian patches         
i   linux-source-2.6.36                                      - Linux kernel source for version 2.6.36 with Debian patches
&lt;/code&gt;

Pour obtenir les sources, il suffit de se placer dans votre répertoire ~/src et de taper la commande :

&lt;code bash&gt;
$ cd
$ mkdir src
$ su -
mot de passe:
# apt-get install linux-source-2.6.36
# cp /usr/src/linux-source-2.6.36.tar.bz2 /home/votre_user/src
# chown votre_user:votre_user /home/votre_user/src/linux-source-2.6.36.tar.bz2
# exit
$
&lt;/code&gt;

Pour obtenir des sources qui réclament la modification de votre sources.list rendez-vous à [[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|cette page]] pour les explications. (Attention cette manipulation n'est pas sans risque et nécessite la mise en place d'un fichier &quot;préferences&quot;)

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

&lt;code bash&gt;
$ su -
# adduser laurent src
Adding user `laurent' to group `src' ...
Adding user laurent to group src
Done.
# exit
&lt;/code&gt;

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

&lt;code bash&gt;
~/src$ tar xvzf linux-2.6.37-rc2.tar.gz
ou
~/src$ tar xvjf linux-2.6.37-rc2.tar.bz2 (si vous avez téléchargé le bz2)
&lt;/code&gt;

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

&lt;code bash&gt;
~/src$ cd /usr/src
&lt;/code&gt;

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

&lt;code bash&gt;
/usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
/usr/src$ cd ~/src                                                        
~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
&lt;/code&gt;

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code bash&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code bash&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

&lt;code bash&gt;
~/src/linux$ cd ~/src
~/src$ cp -vi /boot/config-`uname -r` .config
~/src$ cd linux
~/src/linux$
&lt;/code&gt;

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte...
La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

&lt;code bash&gt;
~/src/linux$ make localmodconfig
&lt;/code&gt;

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

&lt;code bash&gt;
~/src/linux$ yes &quot;&quot; | make localmodconfig
&lt;/code&gt;

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;.

&lt;code bash&gt;
~/src/linux$ make oldconfig
&lt;/code&gt;

Répondez aux questions. Les réponses par défaut sont généralement les bonnes.

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

&lt;code bash&gt;
~/src/linux$ make config
&lt;/code&gt;

Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make gconfig
&lt;/code&gt;

Très joli...

[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make xconfig
&lt;/code&gt;

Le plus agréable à utiliser.

[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
&lt;code bash&gt;
~/src/linux$ make-kpkg clean
&lt;/code&gt;

== La compilation ==

&lt;code bash&gt;
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

La compilation sur une machine puissante dure à peine 30 minutes. Cela peut dépasser plusieurs heures en fonction de votre configuration.

== En cas d'échec ==

Rien n'est perdu, et il est facile de revenir au début pour recommencer.
Pour recompiler à nouveau votre noyau, pas de problèmes car le .config a gardé toutes vos options en mémoire, il suffit donc de modifier les options que vous voulez par la commande

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Vous préférerez peut-être recommencer depuis le début :

&lt;code bash&gt;
~/src/linux$ cp -vi /boot/config-`uname -r` .config
~/src/linux$ make localmodconfig
Etc.
&lt;/code&gt;

Il faudra ensuite faire:

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

Si vous n'avez pas besoin des &quot;headers&quot; du noyau :

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image
&lt;/code&gt;

== Installation ==

Vous vous retrouvez avec deux paquets (si vous avez aussi compilé les &quot;headers&quot;), qu'il ne reste plus qu'a installer

&lt;code bash&gt;
~/src/linux$ su -
mot de passe:
# dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

Et si vous avez besoin des &quot;headers&quot; :

&lt;code bash&gt;
# dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

&lt;code bash&gt;
# exit
~/src/linux$
&lt;/code&gt;

Si tout s'est bien passé vous devriez maintenant avoir une nouvelle entrée dans grub :

[[Fichier:Grub 2637.jpeg]]

== Désinstallation ==

Si pour une raison ou une autre vous n'arrivez pas à démarrer sur votre nouveau noyau et que vous souhaitiez le désinstaller.
Redémmarer sur le dernier noyao opérationnel, puis :

&lt;code bash&gt;
laurent@Squeeze:~$ su -
Mot de passe : 
root@Squeeze:~# apt-get remove --purge linux-headers-2.6.37-rc2-20101121 linux-image-2.6.37-rc2-20101121
Lecture des listes de paquets... Fait
...
Les paquets suivants seront ENLEVÉS :
  linux-headers-2.6.37-rc2-20101121* linux-image-2.6.37-rc2-20101121*
0 mis à jour, 0 nouvellement installés, 2 à enlever et 0 non mis à jour.
Après cette opération, 71,3 Mo d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
...
Generating grub.cfg ...
...
root@Squeeze:~#
&lt;/code&gt;

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>ddcz808h69cbdavqkl42a3vpz0r4tww</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2372</id>
      <parentid>2371</parentid>
      <timestamp>2010-11-22T07:05:12Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* En cas d'échec */</comment>
      <text xml:space="preserve" bytes="15043">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

&lt;code bash&gt;
# apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot
&lt;/code&gt;

Dépendances pour menuconfig :
&lt;code bash&gt;
# apt-get install libncurses-dev
&lt;/code&gt;

Dépendances pour gconfig :
&lt;code bash&gt;
# apt-get install libglade2-dev
&lt;/code&gt;

Dépendances pour xconfig :
&lt;code bash&gt;
# apt-get install libqt3-mt-dev
&lt;/code&gt;

Il vous faut aussi un d'espace disque suffisant, l'archive compressée fait 90 Mo, l'archive décompressée des sources du noyau Linux fait dans les 400 Méga octets...
Comptez au minimum 2.5 Go si vous souhaitez compiler linux-image et linux-headers.

== Préparation et récupération des sources ==

=== Téléchargement des sources à partir de kernel.org ===

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
&lt;code bash&gt;
$ cd
&lt;/code&gt;

Créer le répertoire de travail :
&lt;code bash&gt;
$ mkdir src
$ cd src 
~/src$
&lt;/code&gt;

Télécharger les sources :

&lt;code bash&gt;
~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

=== Obtenir les sources à partir des dépôts ===

Vous avez aussi la possibilité d'obtenir les sources à partir des dépôts Debian.
Cas le plus simple : Les sources sont disponibles dans la branche dans laquelle vous êtes...

à ce jour (22 novembre 2010)

* Stable : [http://packages.debian.org/lenny/linux-source-2.6.26 linux-source-2.6.26]
* Unstable : [http://packages.debian.org/squeeze/linux-source-2.6.32 linux-source-2.6.32]
* Sid : [http://packages.debian.org/sid/linux-source-2.6.32 linux-source-2.6.32]
* Experimental (qui n'est pas à proprement parlé une branche) : [http://packages.debian.org/experimental/linux-source-2.6.36 linux-source-2.6.36]

Connaître les sources disponibles pour votre système :

&lt;code bash&gt;
$ aptitude search linux-source
v   linux-source                                             -                                                                    
p   linux-source-2.6                                         - Linux kernel source for Linux 2.6 (meta-package)                   
p   linux-source-2.6.26                                      - Linux kernel source for version 2.6.26 with Debian patches         
p   linux-source-2.6.27-git1-bling102008                     - Linux kernel source for version 2.6.27-git1-bling102008            
p   linux-source-2.6.29.1-090425                             - Linux kernel source for version 2.6.29.1-090425                    
p   linux-source-2.6.32                                      - Linux kernel source for version 2.6.32 with Debian patches         
i   linux-source-2.6.35                                      - Linux kernel source for version 2.6.35 with Debian patches         
i   linux-source-2.6.36                                      - Linux kernel source for version 2.6.36 with Debian patches
&lt;/code&gt;

Pour obtenir les sources, il suffit de se placer dans votre répertoire ~/src et de taper la commande :

&lt;code bash&gt;
$ cd
$ mkdir src
$ su -
mot de passe:
# apt-get install linux-source-2.6.36
# cp /usr/src/linux-source-2.6.36.tar.bz2 /home/votre_user/src
# chown votre_user:votre_user /home/votre_user/src/linux-source-2.6.36.tar.bz2
# exit
$
&lt;/code&gt;

Pour obtenir des sources qui réclament la modification de votre sources.list rendez-vous à [[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|cette page]] pour les explications. (Attention cette manipulation n'est pas sans risque et nécessite la mise en place d'un fichier &quot;préferences&quot;)

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

&lt;code bash&gt;
$ su -
# adduser laurent src
Adding user `laurent' to group `src' ...
Adding user laurent to group src
Done.
# exit
&lt;/code&gt;

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

&lt;code bash&gt;
~/src$ tar xvzf linux-2.6.37-rc2.tar.gz
ou
~/src$ tar xvjf linux-2.6.37-rc2.tar.bz2 (si vous avez téléchargé le bz2)
&lt;/code&gt;

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

&lt;code bash&gt;
~/src$ cd /usr/src
&lt;/code&gt;

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

&lt;code bash&gt;
/usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
/usr/src$ cd ~/src                                                        
~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
&lt;/code&gt;

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code bash&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code bash&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

&lt;code bash&gt;
~/src/linux$ cd ~/src
~/src$ cp -vi /boot/config-`uname -r` .config
~/src$ cd linux
~/src/linux$
&lt;/code&gt;

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte...
La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

&lt;code bash&gt;
~/src/linux$ make localmodconfig
&lt;/code&gt;

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

&lt;code bash&gt;
~/src/linux$ yes &quot;&quot; | make localmodconfig
&lt;/code&gt;

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;.

&lt;code bash&gt;
~/src/linux$ make oldconfig
&lt;/code&gt;

Répondez aux questions. Les réponses par défaut sont généralement les bonnes.

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

&lt;code bash&gt;
~/src/linux$ make config
&lt;/code&gt;

Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make gconfig
&lt;/code&gt;

Très joli...

[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make xconfig
&lt;/code&gt;

Le plus agréable à utiliser.

[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
&lt;code bash&gt;
~/src/linux$ make-kpkg clean
&lt;/code&gt;

== La compilation ==

&lt;code bash&gt;
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

La compilation sur une machine puissante dure à peine 30 minutes. Cela peut dépasser plusieurs heures en fonction de votre configuration.

== En cas d'échec ==

Rien n'est perdu, et il est facile de revenir au début pour recommencer.

Tout d'abord &quot;nettoyer&quot; le répertoire /src/linux

&lt;code bash&gt;
$ cd ~/src/linux
~/src/linux$ make clean 
  CLEAN   .
  CLEAN   arch/x86/kernel/acpi/realmode
  CLEAN   arch/x86/kernel/cpu
  CLEAN   arch/x86/kernel
  CLEAN   arch/x86/vdso
  CLEAN   arch/x86/lib
  CLEAN   drivers/tty/vt
  CLEAN   drivers/video/logo
  CLEAN   firmware
  CLEAN   kernel
  CLEAN   lib
  CLEAN   security/selinux
  CLEAN   usr
  CLEAN   arch/x86/boot/compressed
  CLEAN   arch/x86/boot
  CLEAN   .tmp_versions
  CLEAN   vmlinux System.map .tmp_kallsyms1.o .tmp_kallsyms1.S .tmp_kallsyms2.o .tmp_kallsyms2.S .tmp_vmlinux1 .tmp_vmlinux2 .tmp_System.map
&lt;/code&gt;

Pour recompiler à nouveau votre noyau, pas de problèmes car le .config a gardé toutes vos options en mémoire, il suffit donc de modifier les options que vous voulez par la commande

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Vous préférerez peut-être recommencer depuis le début :

&lt;code bash&gt;
~/src/linux$ cp -vi /boot/config-`uname -r` .config
~/src/linux$ make localmodconfig
Etc.
&lt;/code&gt;

Il faudra ensuite faire:

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

Si vous n'avez pas besoin des &quot;headers&quot; du noyau :

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image
&lt;/code&gt;

== Installation ==

Vous vous retrouvez avec deux paquets (si vous avez aussi compilé les &quot;headers&quot;), qu'il ne reste plus qu'a installer

&lt;code bash&gt;
~/src/linux$ su -
mot de passe:
# dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

Et si vous avez besoin des &quot;headers&quot; :

&lt;code bash&gt;
# dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

&lt;code bash&gt;
# exit
~/src/linux$
&lt;/code&gt;

Si tout s'est bien passé vous devriez maintenant avoir une nouvelle entrée dans grub :

[[Fichier:Grub 2637.jpeg]]

== Désinstallation ==

Si pour une raison ou une autre vous n'arrivez pas à démarrer sur votre nouveau noyau et que vous souhaitiez le désinstaller.
Redémmarer sur le dernier noyao opérationnel, puis :

&lt;code bash&gt;
laurent@Squeeze:~$ su -
Mot de passe : 
root@Squeeze:~# apt-get remove --purge linux-headers-2.6.37-rc2-20101121 linux-image-2.6.37-rc2-20101121
Lecture des listes de paquets... Fait
...
Les paquets suivants seront ENLEVÉS :
  linux-headers-2.6.37-rc2-20101121* linux-image-2.6.37-rc2-20101121*
0 mis à jour, 0 nouvellement installés, 2 à enlever et 0 non mis à jour.
Après cette opération, 71,3 Mo d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
...
Generating grub.cfg ...
...
root@Squeeze:~#
&lt;/code&gt;

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>rztootk24bn2zzvwoxp59j9c0fmiut0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2377</id>
      <parentid>2372</parentid>
      <timestamp>2010-11-22T08:19:26Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Prérequis */</comment>
      <text xml:space="preserve" bytes="15041">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

&lt;code bash&gt;
# apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot
&lt;/code&gt;

Dépendances pour menuconfig :
&lt;code bash&gt;
# apt-get install libncurses-dev
&lt;/code&gt;

Dépendances pour gconfig :
&lt;code bash&gt;
# apt-get install libglade2-dev
&lt;/code&gt;

Dépendances pour xconfig :
&lt;code bash&gt;
# apt-get install libqt3-mt-dev
&lt;/code&gt;

Il vous faut aussi un espace disque suffisant, l'archive compressée fait 90 Mo, l'archive décompressée des sources du noyau Linux fait dans les 400 Méga octets...
Comptez au minimum 2.5 Go si vous souhaitez compiler linux-image et linux-headers.

== Préparation et récupération des sources ==

=== Téléchargement des sources à partir de kernel.org ===

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
&lt;code bash&gt;
$ cd
&lt;/code&gt;

Créer le répertoire de travail :
&lt;code bash&gt;
$ mkdir src
$ cd src 
~/src$
&lt;/code&gt;

Télécharger les sources :

&lt;code bash&gt;
~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

=== Obtenir les sources à partir des dépôts ===

Vous avez aussi la possibilité d'obtenir les sources à partir des dépôts Debian.
Cas le plus simple : Les sources sont disponibles dans la branche dans laquelle vous êtes...

à ce jour (22 novembre 2010)

* Stable : [http://packages.debian.org/lenny/linux-source-2.6.26 linux-source-2.6.26]
* Unstable : [http://packages.debian.org/squeeze/linux-source-2.6.32 linux-source-2.6.32]
* Sid : [http://packages.debian.org/sid/linux-source-2.6.32 linux-source-2.6.32]
* Experimental (qui n'est pas à proprement parlé une branche) : [http://packages.debian.org/experimental/linux-source-2.6.36 linux-source-2.6.36]

Connaître les sources disponibles pour votre système :

&lt;code bash&gt;
$ aptitude search linux-source
v   linux-source                                             -                                                                    
p   linux-source-2.6                                         - Linux kernel source for Linux 2.6 (meta-package)                   
p   linux-source-2.6.26                                      - Linux kernel source for version 2.6.26 with Debian patches         
p   linux-source-2.6.27-git1-bling102008                     - Linux kernel source for version 2.6.27-git1-bling102008            
p   linux-source-2.6.29.1-090425                             - Linux kernel source for version 2.6.29.1-090425                    
p   linux-source-2.6.32                                      - Linux kernel source for version 2.6.32 with Debian patches         
i   linux-source-2.6.35                                      - Linux kernel source for version 2.6.35 with Debian patches         
i   linux-source-2.6.36                                      - Linux kernel source for version 2.6.36 with Debian patches
&lt;/code&gt;

Pour obtenir les sources, il suffit de se placer dans votre répertoire ~/src et de taper la commande :

&lt;code bash&gt;
$ cd
$ mkdir src
$ su -
mot de passe:
# apt-get install linux-source-2.6.36
# cp /usr/src/linux-source-2.6.36.tar.bz2 /home/votre_user/src
# chown votre_user:votre_user /home/votre_user/src/linux-source-2.6.36.tar.bz2
# exit
$
&lt;/code&gt;

Pour obtenir des sources qui réclament la modification de votre sources.list rendez-vous à [[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|cette page]] pour les explications. (Attention cette manipulation n'est pas sans risque et nécessite la mise en place d'un fichier &quot;préferences&quot;)

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

&lt;code bash&gt;
$ su -
# adduser laurent src
Adding user `laurent' to group `src' ...
Adding user laurent to group src
Done.
# exit
&lt;/code&gt;

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

&lt;code bash&gt;
~/src$ tar xvzf linux-2.6.37-rc2.tar.gz
ou
~/src$ tar xvjf linux-2.6.37-rc2.tar.bz2 (si vous avez téléchargé le bz2)
&lt;/code&gt;

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

&lt;code bash&gt;
~/src$ cd /usr/src
&lt;/code&gt;

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

&lt;code bash&gt;
/usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
/usr/src$ cd ~/src                                                        
~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
&lt;/code&gt;

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code bash&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code bash&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

&lt;code bash&gt;
~/src/linux$ cd ~/src
~/src$ cp -vi /boot/config-`uname -r` .config
~/src$ cd linux
~/src/linux$
&lt;/code&gt;

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte...
La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

&lt;code bash&gt;
~/src/linux$ make localmodconfig
&lt;/code&gt;

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

&lt;code bash&gt;
~/src/linux$ yes &quot;&quot; | make localmodconfig
&lt;/code&gt;

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;.

&lt;code bash&gt;
~/src/linux$ make oldconfig
&lt;/code&gt;

Répondez aux questions. Les réponses par défaut sont généralement les bonnes.

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

&lt;code bash&gt;
~/src/linux$ make config
&lt;/code&gt;

Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make gconfig
&lt;/code&gt;

Très joli...

[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make xconfig
&lt;/code&gt;

Le plus agréable à utiliser.

[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
&lt;code bash&gt;
~/src/linux$ make-kpkg clean
&lt;/code&gt;

== La compilation ==

&lt;code bash&gt;
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

La compilation sur une machine puissante dure à peine 30 minutes. Cela peut dépasser plusieurs heures en fonction de votre configuration.

== En cas d'échec ==

Rien n'est perdu, et il est facile de revenir au début pour recommencer.

Tout d'abord &quot;nettoyer&quot; le répertoire /src/linux

&lt;code bash&gt;
$ cd ~/src/linux
~/src/linux$ make clean 
  CLEAN   .
  CLEAN   arch/x86/kernel/acpi/realmode
  CLEAN   arch/x86/kernel/cpu
  CLEAN   arch/x86/kernel
  CLEAN   arch/x86/vdso
  CLEAN   arch/x86/lib
  CLEAN   drivers/tty/vt
  CLEAN   drivers/video/logo
  CLEAN   firmware
  CLEAN   kernel
  CLEAN   lib
  CLEAN   security/selinux
  CLEAN   usr
  CLEAN   arch/x86/boot/compressed
  CLEAN   arch/x86/boot
  CLEAN   .tmp_versions
  CLEAN   vmlinux System.map .tmp_kallsyms1.o .tmp_kallsyms1.S .tmp_kallsyms2.o .tmp_kallsyms2.S .tmp_vmlinux1 .tmp_vmlinux2 .tmp_System.map
&lt;/code&gt;

Pour recompiler à nouveau votre noyau, pas de problèmes car le .config a gardé toutes vos options en mémoire, il suffit donc de modifier les options que vous voulez par la commande

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Vous préférerez peut-être recommencer depuis le début :

&lt;code bash&gt;
~/src/linux$ cp -vi /boot/config-`uname -r` .config
~/src/linux$ make localmodconfig
Etc.
&lt;/code&gt;

Il faudra ensuite faire:

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

Si vous n'avez pas besoin des &quot;headers&quot; du noyau :

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image
&lt;/code&gt;

== Installation ==

Vous vous retrouvez avec deux paquets (si vous avez aussi compilé les &quot;headers&quot;), qu'il ne reste plus qu'a installer

&lt;code bash&gt;
~/src/linux$ su -
mot de passe:
# dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

Et si vous avez besoin des &quot;headers&quot; :

&lt;code bash&gt;
# dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

&lt;code bash&gt;
# exit
~/src/linux$
&lt;/code&gt;

Si tout s'est bien passé vous devriez maintenant avoir une nouvelle entrée dans grub :

[[Fichier:Grub 2637.jpeg]]

== Désinstallation ==

Si pour une raison ou une autre vous n'arrivez pas à démarrer sur votre nouveau noyau et que vous souhaitiez le désinstaller.
Redémmarer sur le dernier noyao opérationnel, puis :

&lt;code bash&gt;
laurent@Squeeze:~$ su -
Mot de passe : 
root@Squeeze:~# apt-get remove --purge linux-headers-2.6.37-rc2-20101121 linux-image-2.6.37-rc2-20101121
Lecture des listes de paquets... Fait
...
Les paquets suivants seront ENLEVÉS :
  linux-headers-2.6.37-rc2-20101121* linux-image-2.6.37-rc2-20101121*
0 mis à jour, 0 nouvellement installés, 2 à enlever et 0 non mis à jour.
Après cette opération, 71,3 Mo d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
...
Generating grub.cfg ...
...
root@Squeeze:~#
&lt;/code&gt;

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>csm0nae3xhqyejnlzm9j2a5dgsw5mwz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2421</id>
      <parentid>2377</parentid>
      <timestamp>2010-11-25T17:10:12Z</timestamp>
      <contributor>
        <username>Knucky</username>
        <id>75</id>
      </contributor>
      <minor/>
      <comment>correction de typos</comment>
      <text xml:space="preserve" bytes="15041">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

&lt;code bash&gt;
# apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot
&lt;/code&gt;

Dépendances pour menuconfig :
&lt;code bash&gt;
# apt-get install libncurses-dev
&lt;/code&gt;

Dépendances pour gconfig :
&lt;code bash&gt;
# apt-get install libglade2-dev
&lt;/code&gt;

Dépendances pour xconfig :
&lt;code bash&gt;
# apt-get install libqt3-mt-dev
&lt;/code&gt;

Il vous faut aussi un espace disque suffisant, l'archive compressée fait 90 Mo, l'archive décompressée des sources du noyau Linux fait dans les 400 Méga octets...
Comptez au minimum 2.5 Go si vous souhaitez compiler linux-image et linux-headers.

== Préparation et récupération des sources ==

=== Téléchargement des sources à partir de kernel.org ===

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
&lt;code bash&gt;
$ cd
&lt;/code&gt;

Créer le répertoire de travail :
&lt;code bash&gt;
$ mkdir src
$ cd src 
~/src$
&lt;/code&gt;

Télécharger les sources :

&lt;code bash&gt;
~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

=== Obtenir les sources à partir des dépôts ===

Vous avez aussi la possibilité d'obtenir les sources à partir des dépôts Debian.
Cas le plus simple : Les sources sont disponibles dans la branche dans laquelle vous êtes...

à ce jour (22 novembre 2010)

* Stable : [http://packages.debian.org/lenny/linux-source-2.6.26 linux-source-2.6.26]
* Unstable : [http://packages.debian.org/squeeze/linux-source-2.6.32 linux-source-2.6.32]
* Sid : [http://packages.debian.org/sid/linux-source-2.6.32 linux-source-2.6.32]
* Experimental (qui n'est pas à proprement parlé une branche) : [http://packages.debian.org/experimental/linux-source-2.6.36 linux-source-2.6.36]

Connaître les sources disponibles pour votre système :

&lt;code bash&gt;
$ aptitude search linux-source
v   linux-source                                             -                                                                    
p   linux-source-2.6                                         - Linux kernel source for Linux 2.6 (meta-package)                   
p   linux-source-2.6.26                                      - Linux kernel source for version 2.6.26 with Debian patches         
p   linux-source-2.6.27-git1-bling102008                     - Linux kernel source for version 2.6.27-git1-bling102008            
p   linux-source-2.6.29.1-090425                             - Linux kernel source for version 2.6.29.1-090425                    
p   linux-source-2.6.32                                      - Linux kernel source for version 2.6.32 with Debian patches         
i   linux-source-2.6.35                                      - Linux kernel source for version 2.6.35 with Debian patches         
i   linux-source-2.6.36                                      - Linux kernel source for version 2.6.36 with Debian patches
&lt;/code&gt;

Pour obtenir les sources, il suffit de se placer dans votre répertoire ~/src et de taper la commande :

&lt;code bash&gt;
$ cd
$ mkdir src
$ su -
mot de passe:
# apt-get install linux-source-2.6.36
# cp /usr/src/linux-source-2.6.36.tar.bz2 /home/votre_user/src
# chown votre_user:votre_user /home/votre_user/src/linux-source-2.6.36.tar.bz2
# exit
$
&lt;/code&gt;

Pour obtenir des sources qui réclament la modification de votre sources.list rendez-vous à [[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|cette page]] pour les explications. (Attention cette manipulation n'est pas sans risque et nécessite la mise en place d'un fichier &quot;préferences&quot;)

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

&lt;code bash&gt;
$ su -
# adduser laurent src
Adding user `laurent' to group `src' ...
Adding user laurent to group src
Done.
# exit
&lt;/code&gt;

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

&lt;code bash&gt;
~/src$ tar xvzf linux-2.6.37-rc2.tar.gz
ou
~/src$ tar xvjf linux-2.6.37-rc2.tar.bz2 (si vous avez téléchargé le bz2)
&lt;/code&gt;

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

&lt;code bash&gt;
~/src$ cd /usr/src
&lt;/code&gt;

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

&lt;code bash&gt;
/usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
/usr/src$ cd ~/src                                                        
~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
&lt;/code&gt;

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code bash&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code bash&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

&lt;code bash&gt;
~/src/linux$ cd ~/src
~/src$ cp -vi /boot/config-`uname -r` .config
~/src$ cd linux
~/src/linux$
&lt;/code&gt;

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte...
La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

&lt;code bash&gt;
~/src/linux$ make localmodconfig
&lt;/code&gt;

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

&lt;code bash&gt;
~/src/linux$ yes &quot;&quot; | make localmodconfig
&lt;/code&gt;

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;.

&lt;code bash&gt;
~/src/linux$ make oldconfig
&lt;/code&gt;

Répondez aux questions. Les réponses par défaut sont généralement les bonnes.

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

&lt;code bash&gt;
~/src/linux$ make config
&lt;/code&gt;

Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make gconfig
&lt;/code&gt;

Très joli...

[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make xconfig
&lt;/code&gt;

Le plus agréable à utiliser.

[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
&lt;code bash&gt;
~/src/linux$ make-kpkg clean
&lt;/code&gt;

== La compilation ==

&lt;code bash&gt;
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

La compilation sur une machine puissante dure à peine 30 minutes. Cela peut dépasser plusieurs heures en fonction de votre configuration.

== En cas d'échec ==

Rien n'est perdu, et il est facile de revenir au début pour recommencer.

Tout d'abord &quot;nettoyer&quot; le répertoire /src/linux

&lt;code bash&gt;
$ cd ~/src/linux
~/src/linux$ make clean 
  CLEAN   .
  CLEAN   arch/x86/kernel/acpi/realmode
  CLEAN   arch/x86/kernel/cpu
  CLEAN   arch/x86/kernel
  CLEAN   arch/x86/vdso
  CLEAN   arch/x86/lib
  CLEAN   drivers/tty/vt
  CLEAN   drivers/video/logo
  CLEAN   firmware
  CLEAN   kernel
  CLEAN   lib
  CLEAN   security/selinux
  CLEAN   usr
  CLEAN   arch/x86/boot/compressed
  CLEAN   arch/x86/boot
  CLEAN   .tmp_versions
  CLEAN   vmlinux System.map .tmp_kallsyms1.o .tmp_kallsyms1.S .tmp_kallsyms2.o .tmp_kallsyms2.S .tmp_vmlinux1 .tmp_vmlinux2 .tmp_System.map
&lt;/code&gt;

Pour recompiler à nouveau votre noyau, pas de problèmes car le .config a gardé toutes vos options en mémoire, il suffit donc de modifier les options que vous voulez par la commande

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Vous préférerez peut-être recommencer depuis le début :

&lt;code bash&gt;
~/src/linux$ cp -vi /boot/config-`uname -r` .config
~/src/linux$ make localmodconfig
Etc.
&lt;/code&gt;

Il faudra ensuite faire:

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

Si vous n'avez pas besoin des &quot;headers&quot; du noyau :

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image
&lt;/code&gt;

== Installation ==

Vous vous retrouvez avec deux paquets (si vous avez aussi compilé les &quot;headers&quot;), qu'il ne reste plus qu'a installer

&lt;code bash&gt;
~/src/linux$ su -
mot de passe:
# dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

Et si vous avez besoin des &quot;headers&quot; :

&lt;code bash&gt;
# dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

&lt;code bash&gt;
# exit
~/src/linux$
&lt;/code&gt;

Si tout s'est bien passé vous devriez maintenant avoir une nouvelle entrée dans grub :

[[Fichier:Grub 2637.jpeg]]

== Désinstallation ==

Si pour une raison ou une autre vous n'arrivez pas à démarrer sur votre nouveau noyau et que vous souhaitiez le désinstaller.
Redémarrez sur le dernier noyau opérationnel, puis :

&lt;code bash&gt;
laurent@Squeeze:~$ su -
Mot de passe : 
root@Squeeze:~# apt-get remove --purge linux-headers-2.6.37-rc2-20101121 linux-image-2.6.37-rc2-20101121
Lecture des listes de paquets... Fait
...
Les paquets suivants seront ENLEVÉS :
  linux-headers-2.6.37-rc2-20101121* linux-image-2.6.37-rc2-20101121*
0 mis à jour, 0 nouvellement installés, 2 à enlever et 0 non mis à jour.
Après cette opération, 71,3 Mo d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
...
Generating grub.cfg ...
...
root@Squeeze:~#
&lt;/code&gt;

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>0lfdypo6vj3y6jheij8tcpdhbqd3p4d</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2443</id>
      <parentid>2421</parentid>
      <timestamp>2010-12-04T10:09:13Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Prérequis */</comment>
      <text xml:space="preserve" bytes="15144">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

&lt;code bash&gt;
# apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot
&lt;/code&gt;

Dépendances pour menuconfig :
&lt;code bash&gt;
# apt-get install libncurses-dev
&lt;/code&gt;

Dépendances pour gconfig :
&lt;code bash&gt;
# apt-get install libglade2-dev
&lt;/code&gt;

Dépendances pour xconfig :
&lt;code bash&gt;
# apt-get install libqt3-mt-dev
&lt;/code&gt;

Il vous faut aussi un espace disque suffisant, l'archive compressée fait 90 Mo, l'archive décompressée des sources du noyau Linux fait dans les 400 Méga octets...
Comptez au minimum 2.5 Go si vous souhaitez compiler linux-image et linux-headers.
Assurez vous que les paquets nécessaires soient au niveau du kernel à installer ( pas trop anciens).

== Préparation et récupération des sources ==

=== Téléchargement des sources à partir de kernel.org ===

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
&lt;code bash&gt;
$ cd
&lt;/code&gt;

Créer le répertoire de travail :
&lt;code bash&gt;
$ mkdir src
$ cd src 
~/src$
&lt;/code&gt;

Télécharger les sources :

&lt;code bash&gt;
~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

=== Obtenir les sources à partir des dépôts ===

Vous avez aussi la possibilité d'obtenir les sources à partir des dépôts Debian.
Cas le plus simple : Les sources sont disponibles dans la branche dans laquelle vous êtes...

à ce jour (22 novembre 2010)

* Stable : [http://packages.debian.org/lenny/linux-source-2.6.26 linux-source-2.6.26]
* Unstable : [http://packages.debian.org/squeeze/linux-source-2.6.32 linux-source-2.6.32]
* Sid : [http://packages.debian.org/sid/linux-source-2.6.32 linux-source-2.6.32]
* Experimental (qui n'est pas à proprement parlé une branche) : [http://packages.debian.org/experimental/linux-source-2.6.36 linux-source-2.6.36]

Connaître les sources disponibles pour votre système :

&lt;code bash&gt;
$ aptitude search linux-source
v   linux-source                                             -                                                                    
p   linux-source-2.6                                         - Linux kernel source for Linux 2.6 (meta-package)                   
p   linux-source-2.6.26                                      - Linux kernel source for version 2.6.26 with Debian patches         
p   linux-source-2.6.27-git1-bling102008                     - Linux kernel source for version 2.6.27-git1-bling102008            
p   linux-source-2.6.29.1-090425                             - Linux kernel source for version 2.6.29.1-090425                    
p   linux-source-2.6.32                                      - Linux kernel source for version 2.6.32 with Debian patches         
i   linux-source-2.6.35                                      - Linux kernel source for version 2.6.35 with Debian patches         
i   linux-source-2.6.36                                      - Linux kernel source for version 2.6.36 with Debian patches
&lt;/code&gt;

Pour obtenir les sources, il suffit de se placer dans votre répertoire ~/src et de taper la commande :

&lt;code bash&gt;
$ cd
$ mkdir src
$ su -
mot de passe:
# apt-get install linux-source-2.6.36
# cp /usr/src/linux-source-2.6.36.tar.bz2 /home/votre_user/src
# chown votre_user:votre_user /home/votre_user/src/linux-source-2.6.36.tar.bz2
# exit
$
&lt;/code&gt;

Pour obtenir des sources qui réclament la modification de votre sources.list rendez-vous à [[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|cette page]] pour les explications. (Attention cette manipulation n'est pas sans risque et nécessite la mise en place d'un fichier &quot;préferences&quot;)

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

&lt;code bash&gt;
$ su -
# adduser laurent src
Adding user `laurent' to group `src' ...
Adding user laurent to group src
Done.
# exit
&lt;/code&gt;

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

&lt;code bash&gt;
~/src$ tar xvzf linux-2.6.37-rc2.tar.gz
ou
~/src$ tar xvjf linux-2.6.37-rc2.tar.bz2 (si vous avez téléchargé le bz2)
&lt;/code&gt;

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

&lt;code bash&gt;
~/src$ cd /usr/src
&lt;/code&gt;

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

&lt;code bash&gt;
/usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
/usr/src$ cd ~/src                                                        
~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
&lt;/code&gt;

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code bash&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code bash&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

&lt;code bash&gt;
~/src/linux$ cd ~/src
~/src$ cp -vi /boot/config-`uname -r` .config
~/src$ cd linux
~/src/linux$
&lt;/code&gt;

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte...
La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

&lt;code bash&gt;
~/src/linux$ make localmodconfig
&lt;/code&gt;

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

&lt;code bash&gt;
~/src/linux$ yes &quot;&quot; | make localmodconfig
&lt;/code&gt;

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;.

&lt;code bash&gt;
~/src/linux$ make oldconfig
&lt;/code&gt;

Répondez aux questions. Les réponses par défaut sont généralement les bonnes.

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

&lt;code bash&gt;
~/src/linux$ make config
&lt;/code&gt;

Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make gconfig
&lt;/code&gt;

Très joli...

[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make xconfig
&lt;/code&gt;

Le plus agréable à utiliser.

[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
&lt;code bash&gt;
~/src/linux$ make-kpkg clean
&lt;/code&gt;

== La compilation ==

&lt;code bash&gt;
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

La compilation sur une machine puissante dure à peine 30 minutes. Cela peut dépasser plusieurs heures en fonction de votre configuration.

== En cas d'échec ==

Rien n'est perdu, et il est facile de revenir au début pour recommencer.

Tout d'abord &quot;nettoyer&quot; le répertoire /src/linux

&lt;code bash&gt;
$ cd ~/src/linux
~/src/linux$ make clean 
  CLEAN   .
  CLEAN   arch/x86/kernel/acpi/realmode
  CLEAN   arch/x86/kernel/cpu
  CLEAN   arch/x86/kernel
  CLEAN   arch/x86/vdso
  CLEAN   arch/x86/lib
  CLEAN   drivers/tty/vt
  CLEAN   drivers/video/logo
  CLEAN   firmware
  CLEAN   kernel
  CLEAN   lib
  CLEAN   security/selinux
  CLEAN   usr
  CLEAN   arch/x86/boot/compressed
  CLEAN   arch/x86/boot
  CLEAN   .tmp_versions
  CLEAN   vmlinux System.map .tmp_kallsyms1.o .tmp_kallsyms1.S .tmp_kallsyms2.o .tmp_kallsyms2.S .tmp_vmlinux1 .tmp_vmlinux2 .tmp_System.map
&lt;/code&gt;

Pour recompiler à nouveau votre noyau, pas de problèmes car le .config a gardé toutes vos options en mémoire, il suffit donc de modifier les options que vous voulez par la commande

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Vous préférerez peut-être recommencer depuis le début :

&lt;code bash&gt;
~/src/linux$ cp -vi /boot/config-`uname -r` .config
~/src/linux$ make localmodconfig
Etc.
&lt;/code&gt;

Il faudra ensuite faire:

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

Si vous n'avez pas besoin des &quot;headers&quot; du noyau :

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image
&lt;/code&gt;

== Installation ==

Vous vous retrouvez avec deux paquets (si vous avez aussi compilé les &quot;headers&quot;), qu'il ne reste plus qu'a installer

&lt;code bash&gt;
~/src/linux$ su -
mot de passe:
# dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

Et si vous avez besoin des &quot;headers&quot; :

&lt;code bash&gt;
# dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

&lt;code bash&gt;
# exit
~/src/linux$
&lt;/code&gt;

Si tout s'est bien passé vous devriez maintenant avoir une nouvelle entrée dans grub :

[[Fichier:Grub 2637.jpeg]]

== Désinstallation ==

Si pour une raison ou une autre vous n'arrivez pas à démarrer sur votre nouveau noyau et que vous souhaitiez le désinstaller.
Redémarrez sur le dernier noyau opérationnel, puis :

&lt;code bash&gt;
laurent@Squeeze:~$ su -
Mot de passe : 
root@Squeeze:~# apt-get remove --purge linux-headers-2.6.37-rc2-20101121 linux-image-2.6.37-rc2-20101121
Lecture des listes de paquets... Fait
...
Les paquets suivants seront ENLEVÉS :
  linux-headers-2.6.37-rc2-20101121* linux-image-2.6.37-rc2-20101121*
0 mis à jour, 0 nouvellement installés, 2 à enlever et 0 non mis à jour.
Après cette opération, 71,3 Mo d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
...
Generating grub.cfg ...
...
root@Squeeze:~#
&lt;/code&gt;

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>m6m2ve0frug1o4rogxf28032ix3tilc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2446</id>
      <parentid>2443</parentid>
      <timestamp>2010-12-06T10:33:05Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* En cas d'échec */</comment>
      <text xml:space="preserve" bytes="16158">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

&lt;code bash&gt;
# apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot
&lt;/code&gt;

Dépendances pour menuconfig :
&lt;code bash&gt;
# apt-get install libncurses-dev
&lt;/code&gt;

Dépendances pour gconfig :
&lt;code bash&gt;
# apt-get install libglade2-dev
&lt;/code&gt;

Dépendances pour xconfig :
&lt;code bash&gt;
# apt-get install libqt3-mt-dev
&lt;/code&gt;

Il vous faut aussi un espace disque suffisant, l'archive compressée fait 90 Mo, l'archive décompressée des sources du noyau Linux fait dans les 400 Méga octets...
Comptez au minimum 2.5 Go si vous souhaitez compiler linux-image et linux-headers.
Assurez vous que les paquets nécessaires soient au niveau du kernel à installer ( pas trop anciens).

== Préparation et récupération des sources ==

=== Téléchargement des sources à partir de kernel.org ===

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
&lt;code bash&gt;
$ cd
&lt;/code&gt;

Créer le répertoire de travail :
&lt;code bash&gt;
$ mkdir src
$ cd src 
~/src$
&lt;/code&gt;

Télécharger les sources :

&lt;code bash&gt;
~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

=== Obtenir les sources à partir des dépôts ===

Vous avez aussi la possibilité d'obtenir les sources à partir des dépôts Debian.
Cas le plus simple : Les sources sont disponibles dans la branche dans laquelle vous êtes...

à ce jour (22 novembre 2010)

* Stable : [http://packages.debian.org/lenny/linux-source-2.6.26 linux-source-2.6.26]
* Unstable : [http://packages.debian.org/squeeze/linux-source-2.6.32 linux-source-2.6.32]
* Sid : [http://packages.debian.org/sid/linux-source-2.6.32 linux-source-2.6.32]
* Experimental (qui n'est pas à proprement parlé une branche) : [http://packages.debian.org/experimental/linux-source-2.6.36 linux-source-2.6.36]

Connaître les sources disponibles pour votre système :

&lt;code bash&gt;
$ aptitude search linux-source
v   linux-source                                             -                                                                    
p   linux-source-2.6                                         - Linux kernel source for Linux 2.6 (meta-package)                   
p   linux-source-2.6.26                                      - Linux kernel source for version 2.6.26 with Debian patches         
p   linux-source-2.6.27-git1-bling102008                     - Linux kernel source for version 2.6.27-git1-bling102008            
p   linux-source-2.6.29.1-090425                             - Linux kernel source for version 2.6.29.1-090425                    
p   linux-source-2.6.32                                      - Linux kernel source for version 2.6.32 with Debian patches         
i   linux-source-2.6.35                                      - Linux kernel source for version 2.6.35 with Debian patches         
i   linux-source-2.6.36                                      - Linux kernel source for version 2.6.36 with Debian patches
&lt;/code&gt;

Pour obtenir les sources, il suffit de se placer dans votre répertoire ~/src et de taper la commande :

&lt;code bash&gt;
$ cd
$ mkdir src
$ su -
mot de passe:
# apt-get install linux-source-2.6.36
# cp /usr/src/linux-source-2.6.36.tar.bz2 /home/votre_user/src
# chown votre_user:votre_user /home/votre_user/src/linux-source-2.6.36.tar.bz2
# exit
$
&lt;/code&gt;

Pour obtenir des sources qui réclament la modification de votre sources.list rendez-vous à [[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|cette page]] pour les explications. (Attention cette manipulation n'est pas sans risque et nécessite la mise en place d'un fichier &quot;préferences&quot;)

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

&lt;code bash&gt;
$ su -
# adduser laurent src
Adding user `laurent' to group `src' ...
Adding user laurent to group src
Done.
# exit
&lt;/code&gt;

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

&lt;code bash&gt;
~/src$ tar xvzf linux-2.6.37-rc2.tar.gz
ou
~/src$ tar xvjf linux-2.6.37-rc2.tar.bz2 (si vous avez téléchargé le bz2)
&lt;/code&gt;

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

&lt;code bash&gt;
~/src$ cd /usr/src
&lt;/code&gt;

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

&lt;code bash&gt;
/usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
/usr/src$ cd ~/src                                                        
~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
&lt;/code&gt;

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code bash&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code bash&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

&lt;code bash&gt;
~/src/linux$ cd ~/src
~/src$ cp -vi /boot/config-`uname -r` .config
~/src$ cd linux
~/src/linux$
&lt;/code&gt;

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte...
La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

&lt;code bash&gt;
~/src/linux$ make localmodconfig
&lt;/code&gt;

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

&lt;code bash&gt;
~/src/linux$ yes &quot;&quot; | make localmodconfig
&lt;/code&gt;

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;.

&lt;code bash&gt;
~/src/linux$ make oldconfig
&lt;/code&gt;

Répondez aux questions. Les réponses par défaut sont généralement les bonnes.

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

&lt;code bash&gt;
~/src/linux$ make config
&lt;/code&gt;

Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make gconfig
&lt;/code&gt;

Très joli...

[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make xconfig
&lt;/code&gt;

Le plus agréable à utiliser.

[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
&lt;code bash&gt;
~/src/linux$ make-kpkg clean
&lt;/code&gt;

== La compilation ==

&lt;code bash&gt;
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

La compilation sur une machine puissante dure à peine 30 minutes. Cela peut dépasser plusieurs heures en fonction de votre configuration.

== En cas d'échec ==

Rien n'est perdu, et il est facile de revenir au début pour recommencer.

Tout d'abord &quot;nettoyer&quot; le répertoire /src/linux

&lt;code bash&gt;
$ cd ~/src/linux
~/src/linux$ make clean 
  CLEAN   .
  CLEAN   arch/x86/kernel/acpi/realmode
  CLEAN   arch/x86/kernel/cpu
  CLEAN   arch/x86/kernel
  CLEAN   arch/x86/vdso
  CLEAN   arch/x86/lib
  CLEAN   drivers/tty/vt
  CLEAN   drivers/video/logo
  CLEAN   firmware
  CLEAN   kernel
  CLEAN   lib
  CLEAN   security/selinux
  CLEAN   usr
  CLEAN   arch/x86/boot/compressed
  CLEAN   arch/x86/boot
  CLEAN   .tmp_versions
  CLEAN   vmlinux System.map .tmp_kallsyms1.o .tmp_kallsyms1.S .tmp_kallsyms2.o .tmp_kallsyms2.S .tmp_vmlinux1 .tmp_vmlinux2 .tmp_System.map
&lt;/code&gt;

Pour recompiler à nouveau votre noyau, pas de problèmes car le .config a gardé toutes vos options en mémoire, il suffit donc de modifier les options que vous voulez par la commande

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Vous préférerez peut-être recommencer depuis le début :

&lt;code bash&gt;
~/src/linux$ cp -vi /boot/config-`uname -r` .config
~/src/linux$ make localmodconfig
Etc.
&lt;/code&gt;

Il faudra ensuite faire:

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

Si vous n'avez pas besoin des &quot;headers&quot; du noyau :

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image
&lt;/code&gt;

=== En cas de problème d'initramfs ===

Vous pourriez rencontrer le problème suivant au cours de la compilation :

&lt;code&gt;
make[1]: entrant dans le répertoire « /home/gerard/src/linux-2.6.37-rc4 »
====== making target debian/stamp/install/linux-image-2.6.37-rc4-i486 [new prereqs: ]======
This is kernel package version 11.015.
echo &quot;The UTS Release version in include/linux/version.h&quot;; echo &quot; \&quot;\&quot; &quot;; echo &quot;does not match current version:&quot;; echo &quot; \&quot;2.6.37-rc4-i486\&quot; &quot;; echo &quot;Please correct this.&quot;; exit 2
The UTS Release version in include/linux/version.h
&quot;&quot;
does not match current version:
&quot;2.6.37-rc4-i486&quot;
Please correct this.
&lt;/code&gt;

Solution :

&gt; mettre à jour kernel-package;

Si ce n'est pas suffisant copier le contenu de /usr/share/kernel-package/examples/etc/kernel/postinst.d/ vers /etc/kernel/postinst.d/ (En particulier le script initramfs), puis :

 dpkg-reconfigure linux-image-2.6.3xxxxx

ou

 update-initramfs -c -k 2.6.3xxx

[http://www.debian-fr.org/nouveau-kernel-t30831.html Source]

== Installation ==

Vous vous retrouvez avec deux paquets (si vous avez aussi compilé les &quot;headers&quot;), qu'il ne reste plus qu'a installer

&lt;code bash&gt;
~/src/linux$ su -
mot de passe:
# dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

Et si vous avez besoin des &quot;headers&quot; :

&lt;code bash&gt;
# dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

&lt;code bash&gt;
# exit
~/src/linux$
&lt;/code&gt;

Si tout s'est bien passé vous devriez maintenant avoir une nouvelle entrée dans grub :

[[Fichier:Grub 2637.jpeg]]

== Désinstallation ==

Si pour une raison ou une autre vous n'arrivez pas à démarrer sur votre nouveau noyau et que vous souhaitiez le désinstaller.
Redémarrez sur le dernier noyau opérationnel, puis :

&lt;code bash&gt;
laurent@Squeeze:~$ su -
Mot de passe : 
root@Squeeze:~# apt-get remove --purge linux-headers-2.6.37-rc2-20101121 linux-image-2.6.37-rc2-20101121
Lecture des listes de paquets... Fait
...
Les paquets suivants seront ENLEVÉS :
  linux-headers-2.6.37-rc2-20101121* linux-image-2.6.37-rc2-20101121*
0 mis à jour, 0 nouvellement installés, 2 à enlever et 0 non mis à jour.
Après cette opération, 71,3 Mo d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
...
Generating grub.cfg ...
...
root@Squeeze:~#
&lt;/code&gt;

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>gx5fuiqg16qmomueq39z22q8aacpgwm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2447</id>
      <parentid>2446</parentid>
      <timestamp>2010-12-07T14:21:23Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="16305">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

&lt;code bash&gt;
# apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot
&lt;/code&gt;

Dépendances pour menuconfig :
&lt;code bash&gt;
# apt-get install libncurses-dev
&lt;/code&gt;

Dépendances pour gconfig :
&lt;code bash&gt;
# apt-get install libglade2-dev
&lt;/code&gt;

Dépendances pour xconfig :
&lt;code bash&gt;
# apt-get install libqt3-mt-dev
&lt;/code&gt;

Il vous faut aussi un espace disque suffisant, l'archive compressée fait 90 Mo, l'archive décompressée des sources du noyau Linux fait dans les 400 Méga octets...
Comptez au minimum 2.5 Go si vous souhaitez compiler linux-image et linux-headers.
Assurez vous que les paquets nécessaires soient au niveau du kernel à installer ( pas trop anciens).

== Préparation et récupération des sources ==

=== Téléchargement des sources à partir de kernel.org ===

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
&lt;code bash&gt;
$ cd
&lt;/code&gt;

Créer le répertoire de travail :
&lt;code bash&gt;
$ mkdir src
$ cd src 
~/src$
&lt;/code&gt;

Télécharger les sources :

&lt;code bash&gt;
~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

=== Obtenir les sources à partir des dépôts ===

Vous avez aussi la possibilité d'obtenir les sources à partir des dépôts Debian.
Cas le plus simple : Les sources sont disponibles dans la branche dans laquelle vous êtes...

à ce jour (22 novembre 2010)

* Stable : [http://packages.debian.org/lenny/linux-source-2.6.26 linux-source-2.6.26]
* Unstable : [http://packages.debian.org/squeeze/linux-source-2.6.32 linux-source-2.6.32]
* Sid : [http://packages.debian.org/sid/linux-source-2.6.32 linux-source-2.6.32]
* Experimental (qui n'est pas à proprement parlé une branche) : [http://packages.debian.org/experimental/linux-source-2.6.36 linux-source-2.6.36]

Connaître les sources disponibles pour votre système :

&lt;code bash&gt;
$ aptitude search linux-source
v   linux-source                                             -                                                                    
p   linux-source-2.6                                         - Linux kernel source for Linux 2.6 (meta-package)                   
p   linux-source-2.6.26                                      - Linux kernel source for version 2.6.26 with Debian patches         
p   linux-source-2.6.27-git1-bling102008                     - Linux kernel source for version 2.6.27-git1-bling102008            
p   linux-source-2.6.29.1-090425                             - Linux kernel source for version 2.6.29.1-090425                    
p   linux-source-2.6.32                                      - Linux kernel source for version 2.6.32 with Debian patches         
i   linux-source-2.6.35                                      - Linux kernel source for version 2.6.35 with Debian patches         
i   linux-source-2.6.36                                      - Linux kernel source for version 2.6.36 with Debian patches
&lt;/code&gt;

Pour obtenir les sources, il suffit de se placer dans votre répertoire ~/src et de taper la commande :

&lt;code bash&gt;
$ cd
$ mkdir src
$ su -
mot de passe:
# apt-get install linux-source-2.6.36
# cp /usr/src/linux-source-2.6.36.tar.bz2 /home/votre_user/src
# chown votre_user:votre_user /home/votre_user/src/linux-source-2.6.36.tar.bz2
# exit
$
&lt;/code&gt;

Pour obtenir des sources qui réclament la modification de votre sources.list rendez-vous à [[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|cette page]] pour les explications. (Attention cette manipulation n'est pas sans risque et nécessite la mise en place d'un fichier &quot;préferences&quot;)

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

&lt;code bash&gt;
$ su -
# adduser laurent src
Adding user `laurent' to group `src' ...
Adding user laurent to group src
Done.
# exit
&lt;/code&gt;

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

&lt;code bash&gt;
~/src$ tar xvzf linux-2.6.37-rc2.tar.gz
ou
~/src$ tar xvjf linux-2.6.37-rc2.tar.bz2 (si vous avez téléchargé le bz2)
&lt;/code&gt;

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

&lt;code bash&gt;
~/src$ cd /usr/src
&lt;/code&gt;

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

&lt;code bash&gt;
/usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
/usr/src$ cd ~/src                                                        
~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
&lt;/code&gt;

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code bash&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code bash&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

&lt;code bash&gt;
~/src/linux$ cd ~/src
~/src$ cp -vi /boot/config-`uname -r` .config
~/src$ cd linux
~/src/linux$
&lt;/code&gt;

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte... Pas exemple si vous utilisez des clef USB formatées en fat(16 ou 32) insérez-en une, faute de quoi l'option ne serait pas inclue dans le noyau.

La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

&lt;code bash&gt;
~/src/linux$ make localmodconfig
&lt;/code&gt;

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

&lt;code bash&gt;
~/src/linux$ yes &quot;&quot; | make localmodconfig
&lt;/code&gt;

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;.

&lt;code bash&gt;
~/src/linux$ make oldconfig
&lt;/code&gt;

Répondez aux questions. Les réponses par défaut sont généralement les bonnes.

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

&lt;code bash&gt;
~/src/linux$ make config
&lt;/code&gt;

Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make gconfig
&lt;/code&gt;

Très joli...

[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make xconfig
&lt;/code&gt;

Le plus agréable à utiliser.

[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
&lt;code bash&gt;
~/src/linux$ make-kpkg clean
&lt;/code&gt;

== La compilation ==

&lt;code bash&gt;
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.

La compilation sur une machine puissante dure à peine 30 minutes. Cela peut dépasser plusieurs heures en fonction de votre configuration.

== En cas d'échec ==

Rien n'est perdu, et il est facile de revenir au début pour recommencer.

Tout d'abord &quot;nettoyer&quot; le répertoire /src/linux

&lt;code bash&gt;
$ cd ~/src/linux
~/src/linux$ make clean 
  CLEAN   .
  CLEAN   arch/x86/kernel/acpi/realmode
  CLEAN   arch/x86/kernel/cpu
  CLEAN   arch/x86/kernel
  CLEAN   arch/x86/vdso
  CLEAN   arch/x86/lib
  CLEAN   drivers/tty/vt
  CLEAN   drivers/video/logo
  CLEAN   firmware
  CLEAN   kernel
  CLEAN   lib
  CLEAN   security/selinux
  CLEAN   usr
  CLEAN   arch/x86/boot/compressed
  CLEAN   arch/x86/boot
  CLEAN   .tmp_versions
  CLEAN   vmlinux System.map .tmp_kallsyms1.o .tmp_kallsyms1.S .tmp_kallsyms2.o .tmp_kallsyms2.S .tmp_vmlinux1 .tmp_vmlinux2 .tmp_System.map
&lt;/code&gt;

Pour recompiler à nouveau votre noyau, pas de problèmes car le .config a gardé toutes vos options en mémoire, il suffit donc de modifier les options que vous voulez par la commande

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Vous préférerez peut-être recommencer depuis le début :

&lt;code bash&gt;
~/src/linux$ cp -vi /boot/config-`uname -r` .config
~/src/linux$ make localmodconfig
Etc.
&lt;/code&gt;

Il faudra ensuite faire:

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

Si vous n'avez pas besoin des &quot;headers&quot; du noyau :

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image
&lt;/code&gt;

=== En cas de problème d'initramfs ===

Vous pourriez rencontrer le problème suivant au cours de la compilation :

&lt;code&gt;
make[1]: entrant dans le répertoire « /home/gerard/src/linux-2.6.37-rc4 »
====== making target debian/stamp/install/linux-image-2.6.37-rc4-i486 [new prereqs: ]======
This is kernel package version 11.015.
echo &quot;The UTS Release version in include/linux/version.h&quot;; echo &quot; \&quot;\&quot; &quot;; echo &quot;does not match current version:&quot;; echo &quot; \&quot;2.6.37-rc4-i486\&quot; &quot;; echo &quot;Please correct this.&quot;; exit 2
The UTS Release version in include/linux/version.h
&quot;&quot;
does not match current version:
&quot;2.6.37-rc4-i486&quot;
Please correct this.
&lt;/code&gt;

Solution :

&gt; mettre à jour kernel-package;

Si ce n'est pas suffisant copier le contenu de /usr/share/kernel-package/examples/etc/kernel/postinst.d/ vers /etc/kernel/postinst.d/ (En particulier le script initramfs), puis :

 dpkg-reconfigure linux-image-2.6.3xxxxx

ou

 update-initramfs -c -k 2.6.3xxx

[http://www.debian-fr.org/nouveau-kernel-t30831.html Source]

== Installation ==

Vous vous retrouvez avec deux paquets (si vous avez aussi compilé les &quot;headers&quot;), qu'il ne reste plus qu'a installer

&lt;code bash&gt;
~/src/linux$ su -
mot de passe:
# dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

Et si vous avez besoin des &quot;headers&quot; :

&lt;code bash&gt;
# dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

&lt;code bash&gt;
# exit
~/src/linux$
&lt;/code&gt;

Si tout s'est bien passé vous devriez maintenant avoir une nouvelle entrée dans grub :

[[Fichier:Grub 2637.jpeg]]

== Désinstallation ==

Si pour une raison ou une autre vous n'arrivez pas à démarrer sur votre nouveau noyau et que vous souhaitiez le désinstaller.
Redémarrez sur le dernier noyau opérationnel, puis :

&lt;code bash&gt;
laurent@Squeeze:~$ su -
Mot de passe : 
root@Squeeze:~# apt-get remove --purge linux-headers-2.6.37-rc2-20101121 linux-image-2.6.37-rc2-20101121
Lecture des listes de paquets... Fait
...
Les paquets suivants seront ENLEVÉS :
  linux-headers-2.6.37-rc2-20101121* linux-image-2.6.37-rc2-20101121*
0 mis à jour, 0 nouvellement installés, 2 à enlever et 0 non mis à jour.
Après cette opération, 71,3 Mo d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
...
Generating grub.cfg ...
...
root@Squeeze:~#
&lt;/code&gt;

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>t9yz908mvqig86du1oqraieelzpl1vt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2450</id>
      <parentid>2447</parentid>
      <timestamp>2010-12-08T20:47:21Z</timestamp>
      <contributor>
        <username>Fran.b</username>
        <id>13</id>
      </contributor>
      <comment>/* La compilation */</comment>
      <text xml:space="preserve" bytes="16694">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

&lt;code bash&gt;
# apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot
&lt;/code&gt;

Dépendances pour menuconfig :
&lt;code bash&gt;
# apt-get install libncurses-dev
&lt;/code&gt;

Dépendances pour gconfig :
&lt;code bash&gt;
# apt-get install libglade2-dev
&lt;/code&gt;

Dépendances pour xconfig :
&lt;code bash&gt;
# apt-get install libqt3-mt-dev
&lt;/code&gt;

Il vous faut aussi un espace disque suffisant, l'archive compressée fait 90 Mo, l'archive décompressée des sources du noyau Linux fait dans les 400 Méga octets...
Comptez au minimum 2.5 Go si vous souhaitez compiler linux-image et linux-headers.
Assurez vous que les paquets nécessaires soient au niveau du kernel à installer ( pas trop anciens).

== Préparation et récupération des sources ==

=== Téléchargement des sources à partir de kernel.org ===

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
&lt;code bash&gt;
$ cd
&lt;/code&gt;

Créer le répertoire de travail :
&lt;code bash&gt;
$ mkdir src
$ cd src 
~/src$
&lt;/code&gt;

Télécharger les sources :

&lt;code bash&gt;
~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

=== Obtenir les sources à partir des dépôts ===

Vous avez aussi la possibilité d'obtenir les sources à partir des dépôts Debian.
Cas le plus simple : Les sources sont disponibles dans la branche dans laquelle vous êtes...

à ce jour (22 novembre 2010)

* Stable : [http://packages.debian.org/lenny/linux-source-2.6.26 linux-source-2.6.26]
* Unstable : [http://packages.debian.org/squeeze/linux-source-2.6.32 linux-source-2.6.32]
* Sid : [http://packages.debian.org/sid/linux-source-2.6.32 linux-source-2.6.32]
* Experimental (qui n'est pas à proprement parlé une branche) : [http://packages.debian.org/experimental/linux-source-2.6.36 linux-source-2.6.36]

Connaître les sources disponibles pour votre système :

&lt;code bash&gt;
$ aptitude search linux-source
v   linux-source                                             -                                                                    
p   linux-source-2.6                                         - Linux kernel source for Linux 2.6 (meta-package)                   
p   linux-source-2.6.26                                      - Linux kernel source for version 2.6.26 with Debian patches         
p   linux-source-2.6.27-git1-bling102008                     - Linux kernel source for version 2.6.27-git1-bling102008            
p   linux-source-2.6.29.1-090425                             - Linux kernel source for version 2.6.29.1-090425                    
p   linux-source-2.6.32                                      - Linux kernel source for version 2.6.32 with Debian patches         
i   linux-source-2.6.35                                      - Linux kernel source for version 2.6.35 with Debian patches         
i   linux-source-2.6.36                                      - Linux kernel source for version 2.6.36 with Debian patches
&lt;/code&gt;

Pour obtenir les sources, il suffit de se placer dans votre répertoire ~/src et de taper la commande :

&lt;code bash&gt;
$ cd
$ mkdir src
$ su -
mot de passe:
# apt-get install linux-source-2.6.36
# cp /usr/src/linux-source-2.6.36.tar.bz2 /home/votre_user/src
# chown votre_user:votre_user /home/votre_user/src/linux-source-2.6.36.tar.bz2
# exit
$
&lt;/code&gt;

Pour obtenir des sources qui réclament la modification de votre sources.list rendez-vous à [[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|cette page]] pour les explications. (Attention cette manipulation n'est pas sans risque et nécessite la mise en place d'un fichier &quot;préferences&quot;)

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

&lt;code bash&gt;
$ su -
# adduser laurent src
Adding user `laurent' to group `src' ...
Adding user laurent to group src
Done.
# exit
&lt;/code&gt;

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

&lt;code bash&gt;
~/src$ tar xvzf linux-2.6.37-rc2.tar.gz
ou
~/src$ tar xvjf linux-2.6.37-rc2.tar.bz2 (si vous avez téléchargé le bz2)
&lt;/code&gt;

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

&lt;code bash&gt;
~/src$ cd /usr/src
&lt;/code&gt;

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

&lt;code bash&gt;
/usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
/usr/src$ cd ~/src                                                        
~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
&lt;/code&gt;

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code bash&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code bash&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

&lt;code bash&gt;
~/src/linux$ cd ~/src
~/src$ cp -vi /boot/config-`uname -r` .config
~/src$ cd linux
~/src/linux$
&lt;/code&gt;

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte... Pas exemple si vous utilisez des clef USB formatées en fat(16 ou 32) insérez-en une, faute de quoi l'option ne serait pas inclue dans le noyau.

La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

&lt;code bash&gt;
~/src/linux$ make localmodconfig
&lt;/code&gt;

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

&lt;code bash&gt;
~/src/linux$ yes &quot;&quot; | make localmodconfig
&lt;/code&gt;

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;.

&lt;code bash&gt;
~/src/linux$ make oldconfig
&lt;/code&gt;

Répondez aux questions. Les réponses par défaut sont généralement les bonnes.

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

&lt;code bash&gt;
~/src/linux$ make config
&lt;/code&gt;

Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make gconfig
&lt;/code&gt;

Très joli...

[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make xconfig
&lt;/code&gt;

Le plus agréable à utiliser.

[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
&lt;code bash&gt;
~/src/linux$ make-kpkg clean
&lt;/code&gt;

== La compilation ==

&lt;code bash&gt;
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.
Le nom peut être modifié en jouant sur le fichier /etc/kernel-pkg.conf afin de changer le «-10.00.Custom» en autre chose voire le supprimer. Il faut noter qu'il est *indispensable* que la chaine miuse dans append-to-version contienne un chiffre faute de quoi la construction du paquet échouera (ça énerve après 1h de compilation). La date comme dans l'exemple donné est parfaite.

La compilation sur une machine puissante dure à peine 30 minutes. Cela peut dépasser plusieurs heures en fonction de votre configuration.

== En cas d'échec ==

Rien n'est perdu, et il est facile de revenir au début pour recommencer.

Tout d'abord &quot;nettoyer&quot; le répertoire /src/linux

&lt;code bash&gt;
$ cd ~/src/linux
~/src/linux$ make clean 
  CLEAN   .
  CLEAN   arch/x86/kernel/acpi/realmode
  CLEAN   arch/x86/kernel/cpu
  CLEAN   arch/x86/kernel
  CLEAN   arch/x86/vdso
  CLEAN   arch/x86/lib
  CLEAN   drivers/tty/vt
  CLEAN   drivers/video/logo
  CLEAN   firmware
  CLEAN   kernel
  CLEAN   lib
  CLEAN   security/selinux
  CLEAN   usr
  CLEAN   arch/x86/boot/compressed
  CLEAN   arch/x86/boot
  CLEAN   .tmp_versions
  CLEAN   vmlinux System.map .tmp_kallsyms1.o .tmp_kallsyms1.S .tmp_kallsyms2.o .tmp_kallsyms2.S .tmp_vmlinux1 .tmp_vmlinux2 .tmp_System.map
&lt;/code&gt;

Pour recompiler à nouveau votre noyau, pas de problèmes car le .config a gardé toutes vos options en mémoire, il suffit donc de modifier les options que vous voulez par la commande

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Vous préférerez peut-être recommencer depuis le début :

&lt;code bash&gt;
~/src/linux$ cp -vi /boot/config-`uname -r` .config
~/src/linux$ make localmodconfig
Etc.
&lt;/code&gt;

Il faudra ensuite faire:

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

Si vous n'avez pas besoin des &quot;headers&quot; du noyau :

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image
&lt;/code&gt;

=== En cas de problème d'initramfs ===

Vous pourriez rencontrer le problème suivant au cours de la compilation :

&lt;code&gt;
make[1]: entrant dans le répertoire « /home/gerard/src/linux-2.6.37-rc4 »
====== making target debian/stamp/install/linux-image-2.6.37-rc4-i486 [new prereqs: ]======
This is kernel package version 11.015.
echo &quot;The UTS Release version in include/linux/version.h&quot;; echo &quot; \&quot;\&quot; &quot;; echo &quot;does not match current version:&quot;; echo &quot; \&quot;2.6.37-rc4-i486\&quot; &quot;; echo &quot;Please correct this.&quot;; exit 2
The UTS Release version in include/linux/version.h
&quot;&quot;
does not match current version:
&quot;2.6.37-rc4-i486&quot;
Please correct this.
&lt;/code&gt;

Solution :

&gt; mettre à jour kernel-package;

Si ce n'est pas suffisant copier le contenu de /usr/share/kernel-package/examples/etc/kernel/postinst.d/ vers /etc/kernel/postinst.d/ (En particulier le script initramfs), puis :

 dpkg-reconfigure linux-image-2.6.3xxxxx

ou

 update-initramfs -c -k 2.6.3xxx

[http://www.debian-fr.org/nouveau-kernel-t30831.html Source]

== Installation ==

Vous vous retrouvez avec deux paquets (si vous avez aussi compilé les &quot;headers&quot;), qu'il ne reste plus qu'a installer

&lt;code bash&gt;
~/src/linux$ su -
mot de passe:
# dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

Et si vous avez besoin des &quot;headers&quot; :

&lt;code bash&gt;
# dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

&lt;code bash&gt;
# exit
~/src/linux$
&lt;/code&gt;

Si tout s'est bien passé vous devriez maintenant avoir une nouvelle entrée dans grub :

[[Fichier:Grub 2637.jpeg]]

== Désinstallation ==

Si pour une raison ou une autre vous n'arrivez pas à démarrer sur votre nouveau noyau et que vous souhaitiez le désinstaller.
Redémarrez sur le dernier noyau opérationnel, puis :

&lt;code bash&gt;
laurent@Squeeze:~$ su -
Mot de passe : 
root@Squeeze:~# apt-get remove --purge linux-headers-2.6.37-rc2-20101121 linux-image-2.6.37-rc2-20101121
Lecture des listes de paquets... Fait
...
Les paquets suivants seront ENLEVÉS :
  linux-headers-2.6.37-rc2-20101121* linux-image-2.6.37-rc2-20101121*
0 mis à jour, 0 nouvellement installés, 2 à enlever et 0 non mis à jour.
Après cette opération, 71,3 Mo d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
...
Generating grub.cfg ...
...
root@Squeeze:~#
&lt;/code&gt;

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>smvb68y4di7qykhxjmi8kkdcsahbhwr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2749</id>
      <parentid>2450</parentid>
      <timestamp>2011-03-19T13:45:04Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* La compilation */</comment>
      <text xml:space="preserve" bytes="16693">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

&lt;code bash&gt;
# apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot
&lt;/code&gt;

Dépendances pour menuconfig :
&lt;code bash&gt;
# apt-get install libncurses-dev
&lt;/code&gt;

Dépendances pour gconfig :
&lt;code bash&gt;
# apt-get install libglade2-dev
&lt;/code&gt;

Dépendances pour xconfig :
&lt;code bash&gt;
# apt-get install libqt3-mt-dev
&lt;/code&gt;

Il vous faut aussi un espace disque suffisant, l'archive compressée fait 90 Mo, l'archive décompressée des sources du noyau Linux fait dans les 400 Méga octets...
Comptez au minimum 2.5 Go si vous souhaitez compiler linux-image et linux-headers.
Assurez vous que les paquets nécessaires soient au niveau du kernel à installer ( pas trop anciens).

== Préparation et récupération des sources ==

=== Téléchargement des sources à partir de kernel.org ===

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
&lt;code bash&gt;
$ cd
&lt;/code&gt;

Créer le répertoire de travail :
&lt;code bash&gt;
$ mkdir src
$ cd src 
~/src$
&lt;/code&gt;

Télécharger les sources :

&lt;code bash&gt;
~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

=== Obtenir les sources à partir des dépôts ===

Vous avez aussi la possibilité d'obtenir les sources à partir des dépôts Debian.
Cas le plus simple : Les sources sont disponibles dans la branche dans laquelle vous êtes...

à ce jour (22 novembre 2010)

* Stable : [http://packages.debian.org/lenny/linux-source-2.6.26 linux-source-2.6.26]
* Unstable : [http://packages.debian.org/squeeze/linux-source-2.6.32 linux-source-2.6.32]
* Sid : [http://packages.debian.org/sid/linux-source-2.6.32 linux-source-2.6.32]
* Experimental (qui n'est pas à proprement parlé une branche) : [http://packages.debian.org/experimental/linux-source-2.6.36 linux-source-2.6.36]

Connaître les sources disponibles pour votre système :

&lt;code bash&gt;
$ aptitude search linux-source
v   linux-source                                             -                                                                    
p   linux-source-2.6                                         - Linux kernel source for Linux 2.6 (meta-package)                   
p   linux-source-2.6.26                                      - Linux kernel source for version 2.6.26 with Debian patches         
p   linux-source-2.6.27-git1-bling102008                     - Linux kernel source for version 2.6.27-git1-bling102008            
p   linux-source-2.6.29.1-090425                             - Linux kernel source for version 2.6.29.1-090425                    
p   linux-source-2.6.32                                      - Linux kernel source for version 2.6.32 with Debian patches         
i   linux-source-2.6.35                                      - Linux kernel source for version 2.6.35 with Debian patches         
i   linux-source-2.6.36                                      - Linux kernel source for version 2.6.36 with Debian patches
&lt;/code&gt;

Pour obtenir les sources, il suffit de se placer dans votre répertoire ~/src et de taper la commande :

&lt;code bash&gt;
$ cd
$ mkdir src
$ su -
mot de passe:
# apt-get install linux-source-2.6.36
# cp /usr/src/linux-source-2.6.36.tar.bz2 /home/votre_user/src
# chown votre_user:votre_user /home/votre_user/src/linux-source-2.6.36.tar.bz2
# exit
$
&lt;/code&gt;

Pour obtenir des sources qui réclament la modification de votre sources.list rendez-vous à [[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|cette page]] pour les explications. (Attention cette manipulation n'est pas sans risque et nécessite la mise en place d'un fichier &quot;préferences&quot;)

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

&lt;code bash&gt;
$ su -
# adduser laurent src
Adding user `laurent' to group `src' ...
Adding user laurent to group src
Done.
# exit
&lt;/code&gt;

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

&lt;code bash&gt;
~/src$ tar xvzf linux-2.6.37-rc2.tar.gz
ou
~/src$ tar xvjf linux-2.6.37-rc2.tar.bz2 (si vous avez téléchargé le bz2)
&lt;/code&gt;

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

&lt;code bash&gt;
~/src$ cd /usr/src
&lt;/code&gt;

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

&lt;code bash&gt;
/usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
/usr/src$ cd ~/src                                                        
~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
&lt;/code&gt;

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code bash&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code bash&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

&lt;code bash&gt;
~/src/linux$ cd ~/src
~/src$ cp -vi /boot/config-`uname -r` .config
~/src$ cd linux
~/src/linux$
&lt;/code&gt;

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte... Pas exemple si vous utilisez des clef USB formatées en fat(16 ou 32) insérez-en une, faute de quoi l'option ne serait pas inclue dans le noyau.

La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

&lt;code bash&gt;
~/src/linux$ make localmodconfig
&lt;/code&gt;

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

&lt;code bash&gt;
~/src/linux$ yes &quot;&quot; | make localmodconfig
&lt;/code&gt;

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;.

&lt;code bash&gt;
~/src/linux$ make oldconfig
&lt;/code&gt;

Répondez aux questions. Les réponses par défaut sont généralement les bonnes.

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

&lt;code bash&gt;
~/src/linux$ make config
&lt;/code&gt;

Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make gconfig
&lt;/code&gt;

Très joli...

[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make xconfig
&lt;/code&gt;

Le plus agréable à utiliser.

[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
&lt;code bash&gt;
~/src/linux$ make-kpkg clean
&lt;/code&gt;

== La compilation ==

&lt;code bash&gt;
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.
Le nom peut être modifié en jouant sur le fichier /etc/kernel-pkg.conf afin de changer le «-10.00.Custom» en autre chose voire le supprimer. Il faut noter qu'il est *indispensable* que la chaine mise dans append-to-version contienne un chiffre faute de quoi la construction du paquet échouera (ça énerve après 1h de compilation). La date comme dans l'exemple donné est parfaite.

La compilation sur une machine puissante dure à peine 30 minutes. Cela peut dépasser plusieurs heures en fonction de votre configuration.

== En cas d'échec ==

Rien n'est perdu, et il est facile de revenir au début pour recommencer.

Tout d'abord &quot;nettoyer&quot; le répertoire /src/linux

&lt;code bash&gt;
$ cd ~/src/linux
~/src/linux$ make clean 
  CLEAN   .
  CLEAN   arch/x86/kernel/acpi/realmode
  CLEAN   arch/x86/kernel/cpu
  CLEAN   arch/x86/kernel
  CLEAN   arch/x86/vdso
  CLEAN   arch/x86/lib
  CLEAN   drivers/tty/vt
  CLEAN   drivers/video/logo
  CLEAN   firmware
  CLEAN   kernel
  CLEAN   lib
  CLEAN   security/selinux
  CLEAN   usr
  CLEAN   arch/x86/boot/compressed
  CLEAN   arch/x86/boot
  CLEAN   .tmp_versions
  CLEAN   vmlinux System.map .tmp_kallsyms1.o .tmp_kallsyms1.S .tmp_kallsyms2.o .tmp_kallsyms2.S .tmp_vmlinux1 .tmp_vmlinux2 .tmp_System.map
&lt;/code&gt;

Pour recompiler à nouveau votre noyau, pas de problèmes car le .config a gardé toutes vos options en mémoire, il suffit donc de modifier les options que vous voulez par la commande

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Vous préférerez peut-être recommencer depuis le début :

&lt;code bash&gt;
~/src/linux$ cp -vi /boot/config-`uname -r` .config
~/src/linux$ make localmodconfig
Etc.
&lt;/code&gt;

Il faudra ensuite faire:

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

Si vous n'avez pas besoin des &quot;headers&quot; du noyau :

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image
&lt;/code&gt;

=== En cas de problème d'initramfs ===

Vous pourriez rencontrer le problème suivant au cours de la compilation :

&lt;code&gt;
make[1]: entrant dans le répertoire « /home/gerard/src/linux-2.6.37-rc4 »
====== making target debian/stamp/install/linux-image-2.6.37-rc4-i486 [new prereqs: ]======
This is kernel package version 11.015.
echo &quot;The UTS Release version in include/linux/version.h&quot;; echo &quot; \&quot;\&quot; &quot;; echo &quot;does not match current version:&quot;; echo &quot; \&quot;2.6.37-rc4-i486\&quot; &quot;; echo &quot;Please correct this.&quot;; exit 2
The UTS Release version in include/linux/version.h
&quot;&quot;
does not match current version:
&quot;2.6.37-rc4-i486&quot;
Please correct this.
&lt;/code&gt;

Solution :

&gt; mettre à jour kernel-package;

Si ce n'est pas suffisant copier le contenu de /usr/share/kernel-package/examples/etc/kernel/postinst.d/ vers /etc/kernel/postinst.d/ (En particulier le script initramfs), puis :

 dpkg-reconfigure linux-image-2.6.3xxxxx

ou

 update-initramfs -c -k 2.6.3xxx

[http://www.debian-fr.org/nouveau-kernel-t30831.html Source]

== Installation ==

Vous vous retrouvez avec deux paquets (si vous avez aussi compilé les &quot;headers&quot;), qu'il ne reste plus qu'a installer

&lt;code bash&gt;
~/src/linux$ su -
mot de passe:
# dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

Et si vous avez besoin des &quot;headers&quot; :

&lt;code bash&gt;
# dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

&lt;code bash&gt;
# exit
~/src/linux$
&lt;/code&gt;

Si tout s'est bien passé vous devriez maintenant avoir une nouvelle entrée dans grub :

[[Fichier:Grub 2637.jpeg]]

== Désinstallation ==

Si pour une raison ou une autre vous n'arrivez pas à démarrer sur votre nouveau noyau et que vous souhaitiez le désinstaller.
Redémarrez sur le dernier noyau opérationnel, puis :

&lt;code bash&gt;
laurent@Squeeze:~$ su -
Mot de passe : 
root@Squeeze:~# apt-get remove --purge linux-headers-2.6.37-rc2-20101121 linux-image-2.6.37-rc2-20101121
Lecture des listes de paquets... Fait
...
Les paquets suivants seront ENLEVÉS :
  linux-headers-2.6.37-rc2-20101121* linux-image-2.6.37-rc2-20101121*
0 mis à jour, 0 nouvellement installés, 2 à enlever et 0 non mis à jour.
Après cette opération, 71,3 Mo d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
...
Generating grub.cfg ...
...
root@Squeeze:~#
&lt;/code&gt;

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>263h8bpcdo46el5xpijehj2c59sb2yv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2774</id>
      <parentid>2749</parentid>
      <timestamp>2011-04-05T11:09:43Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <comment>/* Récupérer et peaufiner sa dernière configuration */</comment>
      <text xml:space="preserve" bytes="16693">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

&lt;code bash&gt;
# apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot
&lt;/code&gt;

Dépendances pour menuconfig :
&lt;code bash&gt;
# apt-get install libncurses-dev
&lt;/code&gt;

Dépendances pour gconfig :
&lt;code bash&gt;
# apt-get install libglade2-dev
&lt;/code&gt;

Dépendances pour xconfig :
&lt;code bash&gt;
# apt-get install libqt3-mt-dev
&lt;/code&gt;

Il vous faut aussi un espace disque suffisant, l'archive compressée fait 90 Mo, l'archive décompressée des sources du noyau Linux fait dans les 400 Méga octets...
Comptez au minimum 2.5 Go si vous souhaitez compiler linux-image et linux-headers.
Assurez vous que les paquets nécessaires soient au niveau du kernel à installer ( pas trop anciens).

== Préparation et récupération des sources ==

=== Téléchargement des sources à partir de kernel.org ===

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
&lt;code bash&gt;
$ cd
&lt;/code&gt;

Créer le répertoire de travail :
&lt;code bash&gt;
$ mkdir src
$ cd src 
~/src$
&lt;/code&gt;

Télécharger les sources :

&lt;code bash&gt;
~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

=== Obtenir les sources à partir des dépôts ===

Vous avez aussi la possibilité d'obtenir les sources à partir des dépôts Debian.
Cas le plus simple : Les sources sont disponibles dans la branche dans laquelle vous êtes...

à ce jour (22 novembre 2010)

* Stable : [http://packages.debian.org/lenny/linux-source-2.6.26 linux-source-2.6.26]
* Unstable : [http://packages.debian.org/squeeze/linux-source-2.6.32 linux-source-2.6.32]
* Sid : [http://packages.debian.org/sid/linux-source-2.6.32 linux-source-2.6.32]
* Experimental (qui n'est pas à proprement parlé une branche) : [http://packages.debian.org/experimental/linux-source-2.6.36 linux-source-2.6.36]

Connaître les sources disponibles pour votre système :

&lt;code bash&gt;
$ aptitude search linux-source
v   linux-source                                             -                                                                    
p   linux-source-2.6                                         - Linux kernel source for Linux 2.6 (meta-package)                   
p   linux-source-2.6.26                                      - Linux kernel source for version 2.6.26 with Debian patches         
p   linux-source-2.6.27-git1-bling102008                     - Linux kernel source for version 2.6.27-git1-bling102008            
p   linux-source-2.6.29.1-090425                             - Linux kernel source for version 2.6.29.1-090425                    
p   linux-source-2.6.32                                      - Linux kernel source for version 2.6.32 with Debian patches         
i   linux-source-2.6.35                                      - Linux kernel source for version 2.6.35 with Debian patches         
i   linux-source-2.6.36                                      - Linux kernel source for version 2.6.36 with Debian patches
&lt;/code&gt;

Pour obtenir les sources, il suffit de se placer dans votre répertoire ~/src et de taper la commande :

&lt;code bash&gt;
$ cd
$ mkdir src
$ su -
mot de passe:
# apt-get install linux-source-2.6.36
# cp /usr/src/linux-source-2.6.36.tar.bz2 /home/votre_user/src
# chown votre_user:votre_user /home/votre_user/src/linux-source-2.6.36.tar.bz2
# exit
$
&lt;/code&gt;

Pour obtenir des sources qui réclament la modification de votre sources.list rendez-vous à [[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|cette page]] pour les explications. (Attention cette manipulation n'est pas sans risque et nécessite la mise en place d'un fichier &quot;préferences&quot;)

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

&lt;code bash&gt;
$ su -
# adduser laurent src
Adding user `laurent' to group `src' ...
Adding user laurent to group src
Done.
# exit
&lt;/code&gt;

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

&lt;code bash&gt;
~/src$ tar xvzf linux-2.6.37-rc2.tar.gz
ou
~/src$ tar xvjf linux-2.6.37-rc2.tar.bz2 (si vous avez téléchargé le bz2)
&lt;/code&gt;

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

&lt;code bash&gt;
~/src$ cd /usr/src
&lt;/code&gt;

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

&lt;code bash&gt;
/usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
/usr/src$ cd ~/src                                                        
~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
&lt;/code&gt;

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code bash&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code bash&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

&lt;code bash&gt;
~/src/linux$ cd ~/src
~/src$ cp -vi /boot/config-`uname -r` .config
~/src$ cd linux
~/src/linux$
&lt;/code&gt;

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte... Par exemple si vous utilisez des clef USB formatées en fat(16 ou 32) insérez-en une, faute de quoi l'option ne serait pas inclue dans le noyau.

La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

&lt;code bash&gt;
~/src/linux$ make localmodconfig
&lt;/code&gt;

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

&lt;code bash&gt;
~/src/linux$ yes &quot;&quot; | make localmodconfig
&lt;/code&gt;

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;.

&lt;code bash&gt;
~/src/linux$ make oldconfig
&lt;/code&gt;

Répondez aux questions. Les réponses par défaut sont généralement les bonnes.

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

&lt;code bash&gt;
~/src/linux$ make config
&lt;/code&gt;

Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg]]

==== make menuconfig ====

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make gconfig
&lt;/code&gt;

Très joli...

[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make xconfig
&lt;/code&gt;

Le plus agréable à utiliser.

[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
&lt;code bash&gt;
~/src/linux$ make-kpkg clean
&lt;/code&gt;

== La compilation ==

&lt;code bash&gt;
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.
Le nom peut être modifié en jouant sur le fichier /etc/kernel-pkg.conf afin de changer le «-10.00.Custom» en autre chose voire le supprimer. Il faut noter qu'il est *indispensable* que la chaine mise dans append-to-version contienne un chiffre faute de quoi la construction du paquet échouera (ça énerve après 1h de compilation). La date comme dans l'exemple donné est parfaite.

La compilation sur une machine puissante dure à peine 30 minutes. Cela peut dépasser plusieurs heures en fonction de votre configuration.

== En cas d'échec ==

Rien n'est perdu, et il est facile de revenir au début pour recommencer.

Tout d'abord &quot;nettoyer&quot; le répertoire /src/linux

&lt;code bash&gt;
$ cd ~/src/linux
~/src/linux$ make clean 
  CLEAN   .
  CLEAN   arch/x86/kernel/acpi/realmode
  CLEAN   arch/x86/kernel/cpu
  CLEAN   arch/x86/kernel
  CLEAN   arch/x86/vdso
  CLEAN   arch/x86/lib
  CLEAN   drivers/tty/vt
  CLEAN   drivers/video/logo
  CLEAN   firmware
  CLEAN   kernel
  CLEAN   lib
  CLEAN   security/selinux
  CLEAN   usr
  CLEAN   arch/x86/boot/compressed
  CLEAN   arch/x86/boot
  CLEAN   .tmp_versions
  CLEAN   vmlinux System.map .tmp_kallsyms1.o .tmp_kallsyms1.S .tmp_kallsyms2.o .tmp_kallsyms2.S .tmp_vmlinux1 .tmp_vmlinux2 .tmp_System.map
&lt;/code&gt;

Pour recompiler à nouveau votre noyau, pas de problèmes car le .config a gardé toutes vos options en mémoire, il suffit donc de modifier les options que vous voulez par la commande

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Vous préférerez peut-être recommencer depuis le début :

&lt;code bash&gt;
~/src/linux$ cp -vi /boot/config-`uname -r` .config
~/src/linux$ make localmodconfig
Etc.
&lt;/code&gt;

Il faudra ensuite faire:

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

Si vous n'avez pas besoin des &quot;headers&quot; du noyau :

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image
&lt;/code&gt;

=== En cas de problème d'initramfs ===

Vous pourriez rencontrer le problème suivant au cours de la compilation :

&lt;code&gt;
make[1]: entrant dans le répertoire « /home/gerard/src/linux-2.6.37-rc4 »
====== making target debian/stamp/install/linux-image-2.6.37-rc4-i486 [new prereqs: ]======
This is kernel package version 11.015.
echo &quot;The UTS Release version in include/linux/version.h&quot;; echo &quot; \&quot;\&quot; &quot;; echo &quot;does not match current version:&quot;; echo &quot; \&quot;2.6.37-rc4-i486\&quot; &quot;; echo &quot;Please correct this.&quot;; exit 2
The UTS Release version in include/linux/version.h
&quot;&quot;
does not match current version:
&quot;2.6.37-rc4-i486&quot;
Please correct this.
&lt;/code&gt;

Solution :

&gt; mettre à jour kernel-package;

Si ce n'est pas suffisant copier le contenu de /usr/share/kernel-package/examples/etc/kernel/postinst.d/ vers /etc/kernel/postinst.d/ (En particulier le script initramfs), puis :

 dpkg-reconfigure linux-image-2.6.3xxxxx

ou

 update-initramfs -c -k 2.6.3xxx

[http://www.debian-fr.org/nouveau-kernel-t30831.html Source]

== Installation ==

Vous vous retrouvez avec deux paquets (si vous avez aussi compilé les &quot;headers&quot;), qu'il ne reste plus qu'a installer

&lt;code bash&gt;
~/src/linux$ su -
mot de passe:
# dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

Et si vous avez besoin des &quot;headers&quot; :

&lt;code bash&gt;
# dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

&lt;code bash&gt;
# exit
~/src/linux$
&lt;/code&gt;

Si tout s'est bien passé vous devriez maintenant avoir une nouvelle entrée dans grub :

[[Fichier:Grub 2637.jpeg]]

== Désinstallation ==

Si pour une raison ou une autre vous n'arrivez pas à démarrer sur votre nouveau noyau et que vous souhaitiez le désinstaller.
Redémarrez sur le dernier noyau opérationnel, puis :

&lt;code bash&gt;
laurent@Squeeze:~$ su -
Mot de passe : 
root@Squeeze:~# apt-get remove --purge linux-headers-2.6.37-rc2-20101121 linux-image-2.6.37-rc2-20101121
Lecture des listes de paquets... Fait
...
Les paquets suivants seront ENLEVÉS :
  linux-headers-2.6.37-rc2-20101121* linux-image-2.6.37-rc2-20101121*
0 mis à jour, 0 nouvellement installés, 2 à enlever et 0 non mis à jour.
Après cette opération, 71,3 Mo d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
...
Generating grub.cfg ...
...
root@Squeeze:~#
&lt;/code&gt;

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>t7mnzge0yi6g54xmtmyzp0a2wx5io8b</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2932</id>
      <parentid>2774</parentid>
      <timestamp>2011-05-01T12:34:04Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* make config */</comment>
      <text xml:space="preserve" bytes="16723">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

&lt;code bash&gt;
# apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot
&lt;/code&gt;

Dépendances pour menuconfig :
&lt;code bash&gt;
# apt-get install libncurses-dev
&lt;/code&gt;

Dépendances pour gconfig :
&lt;code bash&gt;
# apt-get install libglade2-dev
&lt;/code&gt;

Dépendances pour xconfig :
&lt;code bash&gt;
# apt-get install libqt3-mt-dev
&lt;/code&gt;

Il vous faut aussi un espace disque suffisant, l'archive compressée fait 90 Mo, l'archive décompressée des sources du noyau Linux fait dans les 400 Méga octets...
Comptez au minimum 2.5 Go si vous souhaitez compiler linux-image et linux-headers.
Assurez vous que les paquets nécessaires soient au niveau du kernel à installer ( pas trop anciens).

== Préparation et récupération des sources ==

=== Téléchargement des sources à partir de kernel.org ===

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
&lt;code bash&gt;
$ cd
&lt;/code&gt;

Créer le répertoire de travail :
&lt;code bash&gt;
$ mkdir src
$ cd src 
~/src$
&lt;/code&gt;

Télécharger les sources :

&lt;code bash&gt;
~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

=== Obtenir les sources à partir des dépôts ===

Vous avez aussi la possibilité d'obtenir les sources à partir des dépôts Debian.
Cas le plus simple : Les sources sont disponibles dans la branche dans laquelle vous êtes...

à ce jour (22 novembre 2010)

* Stable : [http://packages.debian.org/lenny/linux-source-2.6.26 linux-source-2.6.26]
* Unstable : [http://packages.debian.org/squeeze/linux-source-2.6.32 linux-source-2.6.32]
* Sid : [http://packages.debian.org/sid/linux-source-2.6.32 linux-source-2.6.32]
* Experimental (qui n'est pas à proprement parlé une branche) : [http://packages.debian.org/experimental/linux-source-2.6.36 linux-source-2.6.36]

Connaître les sources disponibles pour votre système :

&lt;code bash&gt;
$ aptitude search linux-source
v   linux-source                                             -                                                                    
p   linux-source-2.6                                         - Linux kernel source for Linux 2.6 (meta-package)                   
p   linux-source-2.6.26                                      - Linux kernel source for version 2.6.26 with Debian patches         
p   linux-source-2.6.27-git1-bling102008                     - Linux kernel source for version 2.6.27-git1-bling102008            
p   linux-source-2.6.29.1-090425                             - Linux kernel source for version 2.6.29.1-090425                    
p   linux-source-2.6.32                                      - Linux kernel source for version 2.6.32 with Debian patches         
i   linux-source-2.6.35                                      - Linux kernel source for version 2.6.35 with Debian patches         
i   linux-source-2.6.36                                      - Linux kernel source for version 2.6.36 with Debian patches
&lt;/code&gt;

Pour obtenir les sources, il suffit de se placer dans votre répertoire ~/src et de taper la commande :

&lt;code bash&gt;
$ cd
$ mkdir src
$ su -
mot de passe:
# apt-get install linux-source-2.6.36
# cp /usr/src/linux-source-2.6.36.tar.bz2 /home/votre_user/src
# chown votre_user:votre_user /home/votre_user/src/linux-source-2.6.36.tar.bz2
# exit
$
&lt;/code&gt;

Pour obtenir des sources qui réclament la modification de votre sources.list rendez-vous à [[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|cette page]] pour les explications. (Attention cette manipulation n'est pas sans risque et nécessite la mise en place d'un fichier &quot;préferences&quot;)

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

&lt;code bash&gt;
$ su -
# adduser laurent src
Adding user `laurent' to group `src' ...
Adding user laurent to group src
Done.
# exit
&lt;/code&gt;

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

&lt;code bash&gt;
~/src$ tar xvzf linux-2.6.37-rc2.tar.gz
ou
~/src$ tar xvjf linux-2.6.37-rc2.tar.bz2 (si vous avez téléchargé le bz2)
&lt;/code&gt;

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

&lt;code bash&gt;
~/src$ cd /usr/src
&lt;/code&gt;

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

&lt;code bash&gt;
/usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
/usr/src$ cd ~/src                                                        
~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
&lt;/code&gt;

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code bash&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code bash&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

&lt;code bash&gt;
~/src/linux$ cd ~/src
~/src$ cp -vi /boot/config-`uname -r` .config
~/src$ cd linux
~/src/linux$
&lt;/code&gt;

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte... Par exemple si vous utilisez des clef USB formatées en fat(16 ou 32) insérez-en une, faute de quoi l'option ne serait pas inclue dans le noyau.

La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

&lt;code bash&gt;
~/src/linux$ make localmodconfig
&lt;/code&gt;

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

&lt;code bash&gt;
~/src/linux$ yes &quot;&quot; | make localmodconfig
&lt;/code&gt;

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;.

&lt;code bash&gt;
~/src/linux$ make oldconfig
&lt;/code&gt;

Répondez aux questions. Les réponses par défaut sont généralement les bonnes.

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

&lt;code bash&gt;
~/src/linux$ make config
&lt;/code&gt;

Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg|120px|left|thumb||make config]]

==== make menuconfig ====

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg]]

==== make gconfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make gconfig
&lt;/code&gt;

Très joli...

[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make xconfig
&lt;/code&gt;

Le plus agréable à utiliser.

[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
&lt;code bash&gt;
~/src/linux$ make-kpkg clean
&lt;/code&gt;

== La compilation ==

&lt;code bash&gt;
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.
Le nom peut être modifié en jouant sur le fichier /etc/kernel-pkg.conf afin de changer le «-10.00.Custom» en autre chose voire le supprimer. Il faut noter qu'il est *indispensable* que la chaine mise dans append-to-version contienne un chiffre faute de quoi la construction du paquet échouera (ça énerve après 1h de compilation). La date comme dans l'exemple donné est parfaite.

La compilation sur une machine puissante dure à peine 30 minutes. Cela peut dépasser plusieurs heures en fonction de votre configuration.

== En cas d'échec ==

Rien n'est perdu, et il est facile de revenir au début pour recommencer.

Tout d'abord &quot;nettoyer&quot; le répertoire /src/linux

&lt;code bash&gt;
$ cd ~/src/linux
~/src/linux$ make clean 
  CLEAN   .
  CLEAN   arch/x86/kernel/acpi/realmode
  CLEAN   arch/x86/kernel/cpu
  CLEAN   arch/x86/kernel
  CLEAN   arch/x86/vdso
  CLEAN   arch/x86/lib
  CLEAN   drivers/tty/vt
  CLEAN   drivers/video/logo
  CLEAN   firmware
  CLEAN   kernel
  CLEAN   lib
  CLEAN   security/selinux
  CLEAN   usr
  CLEAN   arch/x86/boot/compressed
  CLEAN   arch/x86/boot
  CLEAN   .tmp_versions
  CLEAN   vmlinux System.map .tmp_kallsyms1.o .tmp_kallsyms1.S .tmp_kallsyms2.o .tmp_kallsyms2.S .tmp_vmlinux1 .tmp_vmlinux2 .tmp_System.map
&lt;/code&gt;

Pour recompiler à nouveau votre noyau, pas de problèmes car le .config a gardé toutes vos options en mémoire, il suffit donc de modifier les options que vous voulez par la commande

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Vous préférerez peut-être recommencer depuis le début :

&lt;code bash&gt;
~/src/linux$ cp -vi /boot/config-`uname -r` .config
~/src/linux$ make localmodconfig
Etc.
&lt;/code&gt;

Il faudra ensuite faire:

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

Si vous n'avez pas besoin des &quot;headers&quot; du noyau :

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image
&lt;/code&gt;

=== En cas de problème d'initramfs ===

Vous pourriez rencontrer le problème suivant au cours de la compilation :

&lt;code&gt;
make[1]: entrant dans le répertoire « /home/gerard/src/linux-2.6.37-rc4 »
====== making target debian/stamp/install/linux-image-2.6.37-rc4-i486 [new prereqs: ]======
This is kernel package version 11.015.
echo &quot;The UTS Release version in include/linux/version.h&quot;; echo &quot; \&quot;\&quot; &quot;; echo &quot;does not match current version:&quot;; echo &quot; \&quot;2.6.37-rc4-i486\&quot; &quot;; echo &quot;Please correct this.&quot;; exit 2
The UTS Release version in include/linux/version.h
&quot;&quot;
does not match current version:
&quot;2.6.37-rc4-i486&quot;
Please correct this.
&lt;/code&gt;

Solution :

&gt; mettre à jour kernel-package;

Si ce n'est pas suffisant copier le contenu de /usr/share/kernel-package/examples/etc/kernel/postinst.d/ vers /etc/kernel/postinst.d/ (En particulier le script initramfs), puis :

 dpkg-reconfigure linux-image-2.6.3xxxxx

ou

 update-initramfs -c -k 2.6.3xxx

[http://www.debian-fr.org/nouveau-kernel-t30831.html Source]

== Installation ==

Vous vous retrouvez avec deux paquets (si vous avez aussi compilé les &quot;headers&quot;), qu'il ne reste plus qu'a installer

&lt;code bash&gt;
~/src/linux$ su -
mot de passe:
# dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

Et si vous avez besoin des &quot;headers&quot; :

&lt;code bash&gt;
# dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

&lt;code bash&gt;
# exit
~/src/linux$
&lt;/code&gt;

Si tout s'est bien passé vous devriez maintenant avoir une nouvelle entrée dans grub :

[[Fichier:Grub 2637.jpeg]]

== Désinstallation ==

Si pour une raison ou une autre vous n'arrivez pas à démarrer sur votre nouveau noyau et que vous souhaitiez le désinstaller.
Redémarrez sur le dernier noyau opérationnel, puis :

&lt;code bash&gt;
laurent@Squeeze:~$ su -
Mot de passe : 
root@Squeeze:~# apt-get remove --purge linux-headers-2.6.37-rc2-20101121 linux-image-2.6.37-rc2-20101121
Lecture des listes de paquets... Fait
...
Les paquets suivants seront ENLEVÉS :
  linux-headers-2.6.37-rc2-20101121* linux-image-2.6.37-rc2-20101121*
0 mis à jour, 0 nouvellement installés, 2 à enlever et 0 non mis à jour.
Après cette opération, 71,3 Mo d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
...
Generating grub.cfg ...
...
root@Squeeze:~#
&lt;/code&gt;

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>1f5s9swk86ha8kmtx8n340u4ggokw79</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2933</id>
      <parentid>2932</parentid>
      <timestamp>2011-05-01T12:35:02Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* make menuconfig */</comment>
      <text xml:space="preserve" bytes="16757">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

&lt;code bash&gt;
# apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot
&lt;/code&gt;

Dépendances pour menuconfig :
&lt;code bash&gt;
# apt-get install libncurses-dev
&lt;/code&gt;

Dépendances pour gconfig :
&lt;code bash&gt;
# apt-get install libglade2-dev
&lt;/code&gt;

Dépendances pour xconfig :
&lt;code bash&gt;
# apt-get install libqt3-mt-dev
&lt;/code&gt;

Il vous faut aussi un espace disque suffisant, l'archive compressée fait 90 Mo, l'archive décompressée des sources du noyau Linux fait dans les 400 Méga octets...
Comptez au minimum 2.5 Go si vous souhaitez compiler linux-image et linux-headers.
Assurez vous que les paquets nécessaires soient au niveau du kernel à installer ( pas trop anciens).

== Préparation et récupération des sources ==

=== Téléchargement des sources à partir de kernel.org ===

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
&lt;code bash&gt;
$ cd
&lt;/code&gt;

Créer le répertoire de travail :
&lt;code bash&gt;
$ mkdir src
$ cd src 
~/src$
&lt;/code&gt;

Télécharger les sources :

&lt;code bash&gt;
~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

=== Obtenir les sources à partir des dépôts ===

Vous avez aussi la possibilité d'obtenir les sources à partir des dépôts Debian.
Cas le plus simple : Les sources sont disponibles dans la branche dans laquelle vous êtes...

à ce jour (22 novembre 2010)

* Stable : [http://packages.debian.org/lenny/linux-source-2.6.26 linux-source-2.6.26]
* Unstable : [http://packages.debian.org/squeeze/linux-source-2.6.32 linux-source-2.6.32]
* Sid : [http://packages.debian.org/sid/linux-source-2.6.32 linux-source-2.6.32]
* Experimental (qui n'est pas à proprement parlé une branche) : [http://packages.debian.org/experimental/linux-source-2.6.36 linux-source-2.6.36]

Connaître les sources disponibles pour votre système :

&lt;code bash&gt;
$ aptitude search linux-source
v   linux-source                                             -                                                                    
p   linux-source-2.6                                         - Linux kernel source for Linux 2.6 (meta-package)                   
p   linux-source-2.6.26                                      - Linux kernel source for version 2.6.26 with Debian patches         
p   linux-source-2.6.27-git1-bling102008                     - Linux kernel source for version 2.6.27-git1-bling102008            
p   linux-source-2.6.29.1-090425                             - Linux kernel source for version 2.6.29.1-090425                    
p   linux-source-2.6.32                                      - Linux kernel source for version 2.6.32 with Debian patches         
i   linux-source-2.6.35                                      - Linux kernel source for version 2.6.35 with Debian patches         
i   linux-source-2.6.36                                      - Linux kernel source for version 2.6.36 with Debian patches
&lt;/code&gt;

Pour obtenir les sources, il suffit de se placer dans votre répertoire ~/src et de taper la commande :

&lt;code bash&gt;
$ cd
$ mkdir src
$ su -
mot de passe:
# apt-get install linux-source-2.6.36
# cp /usr/src/linux-source-2.6.36.tar.bz2 /home/votre_user/src
# chown votre_user:votre_user /home/votre_user/src/linux-source-2.6.36.tar.bz2
# exit
$
&lt;/code&gt;

Pour obtenir des sources qui réclament la modification de votre sources.list rendez-vous à [[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|cette page]] pour les explications. (Attention cette manipulation n'est pas sans risque et nécessite la mise en place d'un fichier &quot;préferences&quot;)

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

&lt;code bash&gt;
$ su -
# adduser laurent src
Adding user `laurent' to group `src' ...
Adding user laurent to group src
Done.
# exit
&lt;/code&gt;

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

&lt;code bash&gt;
~/src$ tar xvzf linux-2.6.37-rc2.tar.gz
ou
~/src$ tar xvjf linux-2.6.37-rc2.tar.bz2 (si vous avez téléchargé le bz2)
&lt;/code&gt;

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

&lt;code bash&gt;
~/src$ cd /usr/src
&lt;/code&gt;

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

&lt;code bash&gt;
/usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
/usr/src$ cd ~/src                                                        
~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
&lt;/code&gt;

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code bash&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code bash&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

&lt;code bash&gt;
~/src/linux$ cd ~/src
~/src$ cp -vi /boot/config-`uname -r` .config
~/src$ cd linux
~/src/linux$
&lt;/code&gt;

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte... Par exemple si vous utilisez des clef USB formatées en fat(16 ou 32) insérez-en une, faute de quoi l'option ne serait pas inclue dans le noyau.

La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

&lt;code bash&gt;
~/src/linux$ make localmodconfig
&lt;/code&gt;

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

&lt;code bash&gt;
~/src/linux$ yes &quot;&quot; | make localmodconfig
&lt;/code&gt;

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;.

&lt;code bash&gt;
~/src/linux$ make oldconfig
&lt;/code&gt;

Répondez aux questions. Les réponses par défaut sont généralement les bonnes.

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

&lt;code bash&gt;
~/src/linux$ make config
&lt;/code&gt;

Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg|120px|left|thumb||make config]]

==== make menuconfig ====

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg|120px|left|thumb||make menuconfig]]

==== make gconfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make gconfig
&lt;/code&gt;

Très joli...

[[Fichier:Gconfig.jpeg]]

==== make xonfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make xconfig
&lt;/code&gt;

Le plus agréable à utiliser.

[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
&lt;code bash&gt;
~/src/linux$ make-kpkg clean
&lt;/code&gt;

== La compilation ==

&lt;code bash&gt;
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.
Le nom peut être modifié en jouant sur le fichier /etc/kernel-pkg.conf afin de changer le «-10.00.Custom» en autre chose voire le supprimer. Il faut noter qu'il est *indispensable* que la chaine mise dans append-to-version contienne un chiffre faute de quoi la construction du paquet échouera (ça énerve après 1h de compilation). La date comme dans l'exemple donné est parfaite.

La compilation sur une machine puissante dure à peine 30 minutes. Cela peut dépasser plusieurs heures en fonction de votre configuration.

== En cas d'échec ==

Rien n'est perdu, et il est facile de revenir au début pour recommencer.

Tout d'abord &quot;nettoyer&quot; le répertoire /src/linux

&lt;code bash&gt;
$ cd ~/src/linux
~/src/linux$ make clean 
  CLEAN   .
  CLEAN   arch/x86/kernel/acpi/realmode
  CLEAN   arch/x86/kernel/cpu
  CLEAN   arch/x86/kernel
  CLEAN   arch/x86/vdso
  CLEAN   arch/x86/lib
  CLEAN   drivers/tty/vt
  CLEAN   drivers/video/logo
  CLEAN   firmware
  CLEAN   kernel
  CLEAN   lib
  CLEAN   security/selinux
  CLEAN   usr
  CLEAN   arch/x86/boot/compressed
  CLEAN   arch/x86/boot
  CLEAN   .tmp_versions
  CLEAN   vmlinux System.map .tmp_kallsyms1.o .tmp_kallsyms1.S .tmp_kallsyms2.o .tmp_kallsyms2.S .tmp_vmlinux1 .tmp_vmlinux2 .tmp_System.map
&lt;/code&gt;

Pour recompiler à nouveau votre noyau, pas de problèmes car le .config a gardé toutes vos options en mémoire, il suffit donc de modifier les options que vous voulez par la commande

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Vous préférerez peut-être recommencer depuis le début :

&lt;code bash&gt;
~/src/linux$ cp -vi /boot/config-`uname -r` .config
~/src/linux$ make localmodconfig
Etc.
&lt;/code&gt;

Il faudra ensuite faire:

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

Si vous n'avez pas besoin des &quot;headers&quot; du noyau :

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image
&lt;/code&gt;

=== En cas de problème d'initramfs ===

Vous pourriez rencontrer le problème suivant au cours de la compilation :

&lt;code&gt;
make[1]: entrant dans le répertoire « /home/gerard/src/linux-2.6.37-rc4 »
====== making target debian/stamp/install/linux-image-2.6.37-rc4-i486 [new prereqs: ]======
This is kernel package version 11.015.
echo &quot;The UTS Release version in include/linux/version.h&quot;; echo &quot; \&quot;\&quot; &quot;; echo &quot;does not match current version:&quot;; echo &quot; \&quot;2.6.37-rc4-i486\&quot; &quot;; echo &quot;Please correct this.&quot;; exit 2
The UTS Release version in include/linux/version.h
&quot;&quot;
does not match current version:
&quot;2.6.37-rc4-i486&quot;
Please correct this.
&lt;/code&gt;

Solution :

&gt; mettre à jour kernel-package;

Si ce n'est pas suffisant copier le contenu de /usr/share/kernel-package/examples/etc/kernel/postinst.d/ vers /etc/kernel/postinst.d/ (En particulier le script initramfs), puis :

 dpkg-reconfigure linux-image-2.6.3xxxxx

ou

 update-initramfs -c -k 2.6.3xxx

[http://www.debian-fr.org/nouveau-kernel-t30831.html Source]

== Installation ==

Vous vous retrouvez avec deux paquets (si vous avez aussi compilé les &quot;headers&quot;), qu'il ne reste plus qu'a installer

&lt;code bash&gt;
~/src/linux$ su -
mot de passe:
# dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

Et si vous avez besoin des &quot;headers&quot; :

&lt;code bash&gt;
# dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

&lt;code bash&gt;
# exit
~/src/linux$
&lt;/code&gt;

Si tout s'est bien passé vous devriez maintenant avoir une nouvelle entrée dans grub :

[[Fichier:Grub 2637.jpeg]]

== Désinstallation ==

Si pour une raison ou une autre vous n'arrivez pas à démarrer sur votre nouveau noyau et que vous souhaitiez le désinstaller.
Redémarrez sur le dernier noyau opérationnel, puis :

&lt;code bash&gt;
laurent@Squeeze:~$ su -
Mot de passe : 
root@Squeeze:~# apt-get remove --purge linux-headers-2.6.37-rc2-20101121 linux-image-2.6.37-rc2-20101121
Lecture des listes de paquets... Fait
...
Les paquets suivants seront ENLEVÉS :
  linux-headers-2.6.37-rc2-20101121* linux-image-2.6.37-rc2-20101121*
0 mis à jour, 0 nouvellement installés, 2 à enlever et 0 non mis à jour.
Après cette opération, 71,3 Mo d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
...
Generating grub.cfg ...
...
root@Squeeze:~#
&lt;/code&gt;

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>9k1udqge8ev251dul6dk3c9i54zwb98</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2934</id>
      <parentid>2933</parentid>
      <timestamp>2011-05-01T12:36:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* make gconfig */</comment>
      <text xml:space="preserve" bytes="16788">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

&lt;code bash&gt;
# apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot
&lt;/code&gt;

Dépendances pour menuconfig :
&lt;code bash&gt;
# apt-get install libncurses-dev
&lt;/code&gt;

Dépendances pour gconfig :
&lt;code bash&gt;
# apt-get install libglade2-dev
&lt;/code&gt;

Dépendances pour xconfig :
&lt;code bash&gt;
# apt-get install libqt3-mt-dev
&lt;/code&gt;

Il vous faut aussi un espace disque suffisant, l'archive compressée fait 90 Mo, l'archive décompressée des sources du noyau Linux fait dans les 400 Méga octets...
Comptez au minimum 2.5 Go si vous souhaitez compiler linux-image et linux-headers.
Assurez vous que les paquets nécessaires soient au niveau du kernel à installer ( pas trop anciens).

== Préparation et récupération des sources ==

=== Téléchargement des sources à partir de kernel.org ===

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
&lt;code bash&gt;
$ cd
&lt;/code&gt;

Créer le répertoire de travail :
&lt;code bash&gt;
$ mkdir src
$ cd src 
~/src$
&lt;/code&gt;

Télécharger les sources :

&lt;code bash&gt;
~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

=== Obtenir les sources à partir des dépôts ===

Vous avez aussi la possibilité d'obtenir les sources à partir des dépôts Debian.
Cas le plus simple : Les sources sont disponibles dans la branche dans laquelle vous êtes...

à ce jour (22 novembre 2010)

* Stable : [http://packages.debian.org/lenny/linux-source-2.6.26 linux-source-2.6.26]
* Unstable : [http://packages.debian.org/squeeze/linux-source-2.6.32 linux-source-2.6.32]
* Sid : [http://packages.debian.org/sid/linux-source-2.6.32 linux-source-2.6.32]
* Experimental (qui n'est pas à proprement parlé une branche) : [http://packages.debian.org/experimental/linux-source-2.6.36 linux-source-2.6.36]

Connaître les sources disponibles pour votre système :

&lt;code bash&gt;
$ aptitude search linux-source
v   linux-source                                             -                                                                    
p   linux-source-2.6                                         - Linux kernel source for Linux 2.6 (meta-package)                   
p   linux-source-2.6.26                                      - Linux kernel source for version 2.6.26 with Debian patches         
p   linux-source-2.6.27-git1-bling102008                     - Linux kernel source for version 2.6.27-git1-bling102008            
p   linux-source-2.6.29.1-090425                             - Linux kernel source for version 2.6.29.1-090425                    
p   linux-source-2.6.32                                      - Linux kernel source for version 2.6.32 with Debian patches         
i   linux-source-2.6.35                                      - Linux kernel source for version 2.6.35 with Debian patches         
i   linux-source-2.6.36                                      - Linux kernel source for version 2.6.36 with Debian patches
&lt;/code&gt;

Pour obtenir les sources, il suffit de se placer dans votre répertoire ~/src et de taper la commande :

&lt;code bash&gt;
$ cd
$ mkdir src
$ su -
mot de passe:
# apt-get install linux-source-2.6.36
# cp /usr/src/linux-source-2.6.36.tar.bz2 /home/votre_user/src
# chown votre_user:votre_user /home/votre_user/src/linux-source-2.6.36.tar.bz2
# exit
$
&lt;/code&gt;

Pour obtenir des sources qui réclament la modification de votre sources.list rendez-vous à [[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|cette page]] pour les explications. (Attention cette manipulation n'est pas sans risque et nécessite la mise en place d'un fichier &quot;préferences&quot;)

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

&lt;code bash&gt;
$ su -
# adduser laurent src
Adding user `laurent' to group `src' ...
Adding user laurent to group src
Done.
# exit
&lt;/code&gt;

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

&lt;code bash&gt;
~/src$ tar xvzf linux-2.6.37-rc2.tar.gz
ou
~/src$ tar xvjf linux-2.6.37-rc2.tar.bz2 (si vous avez téléchargé le bz2)
&lt;/code&gt;

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

&lt;code bash&gt;
~/src$ cd /usr/src
&lt;/code&gt;

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

&lt;code bash&gt;
/usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
/usr/src$ cd ~/src                                                        
~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
&lt;/code&gt;

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code bash&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code bash&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

&lt;code bash&gt;
~/src/linux$ cd ~/src
~/src$ cp -vi /boot/config-`uname -r` .config
~/src$ cd linux
~/src/linux$
&lt;/code&gt;

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte... Par exemple si vous utilisez des clef USB formatées en fat(16 ou 32) insérez-en une, faute de quoi l'option ne serait pas inclue dans le noyau.

La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

&lt;code bash&gt;
~/src/linux$ make localmodconfig
&lt;/code&gt;

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

&lt;code bash&gt;
~/src/linux$ yes &quot;&quot; | make localmodconfig
&lt;/code&gt;

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;.

&lt;code bash&gt;
~/src/linux$ make oldconfig
&lt;/code&gt;

Répondez aux questions. Les réponses par défaut sont généralement les bonnes.

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

&lt;code bash&gt;
~/src/linux$ make config
&lt;/code&gt;

Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg|120px|left|thumb||make config]]

==== make menuconfig ====

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg|120px|left|thumb||make menuconfig]]

==== make gconfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make gconfig
&lt;/code&gt;

Très joli...

[[Fichier:Gconfig.jpeg|120px|left|thumb||make gconfig]]

==== make xonfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make xconfig
&lt;/code&gt;

Le plus agréable à utiliser.

[[Fichier:Xconfig.jpeg]]

=== Nettoyage ===

Un petit nettoyage :
&lt;code bash&gt;
~/src/linux$ make-kpkg clean
&lt;/code&gt;

== La compilation ==

&lt;code bash&gt;
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.
Le nom peut être modifié en jouant sur le fichier /etc/kernel-pkg.conf afin de changer le «-10.00.Custom» en autre chose voire le supprimer. Il faut noter qu'il est *indispensable* que la chaine mise dans append-to-version contienne un chiffre faute de quoi la construction du paquet échouera (ça énerve après 1h de compilation). La date comme dans l'exemple donné est parfaite.

La compilation sur une machine puissante dure à peine 30 minutes. Cela peut dépasser plusieurs heures en fonction de votre configuration.

== En cas d'échec ==

Rien n'est perdu, et il est facile de revenir au début pour recommencer.

Tout d'abord &quot;nettoyer&quot; le répertoire /src/linux

&lt;code bash&gt;
$ cd ~/src/linux
~/src/linux$ make clean 
  CLEAN   .
  CLEAN   arch/x86/kernel/acpi/realmode
  CLEAN   arch/x86/kernel/cpu
  CLEAN   arch/x86/kernel
  CLEAN   arch/x86/vdso
  CLEAN   arch/x86/lib
  CLEAN   drivers/tty/vt
  CLEAN   drivers/video/logo
  CLEAN   firmware
  CLEAN   kernel
  CLEAN   lib
  CLEAN   security/selinux
  CLEAN   usr
  CLEAN   arch/x86/boot/compressed
  CLEAN   arch/x86/boot
  CLEAN   .tmp_versions
  CLEAN   vmlinux System.map .tmp_kallsyms1.o .tmp_kallsyms1.S .tmp_kallsyms2.o .tmp_kallsyms2.S .tmp_vmlinux1 .tmp_vmlinux2 .tmp_System.map
&lt;/code&gt;

Pour recompiler à nouveau votre noyau, pas de problèmes car le .config a gardé toutes vos options en mémoire, il suffit donc de modifier les options que vous voulez par la commande

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Vous préférerez peut-être recommencer depuis le début :

&lt;code bash&gt;
~/src/linux$ cp -vi /boot/config-`uname -r` .config
~/src/linux$ make localmodconfig
Etc.
&lt;/code&gt;

Il faudra ensuite faire:

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

Si vous n'avez pas besoin des &quot;headers&quot; du noyau :

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image
&lt;/code&gt;

=== En cas de problème d'initramfs ===

Vous pourriez rencontrer le problème suivant au cours de la compilation :

&lt;code&gt;
make[1]: entrant dans le répertoire « /home/gerard/src/linux-2.6.37-rc4 »
====== making target debian/stamp/install/linux-image-2.6.37-rc4-i486 [new prereqs: ]======
This is kernel package version 11.015.
echo &quot;The UTS Release version in include/linux/version.h&quot;; echo &quot; \&quot;\&quot; &quot;; echo &quot;does not match current version:&quot;; echo &quot; \&quot;2.6.37-rc4-i486\&quot; &quot;; echo &quot;Please correct this.&quot;; exit 2
The UTS Release version in include/linux/version.h
&quot;&quot;
does not match current version:
&quot;2.6.37-rc4-i486&quot;
Please correct this.
&lt;/code&gt;

Solution :

&gt; mettre à jour kernel-package;

Si ce n'est pas suffisant copier le contenu de /usr/share/kernel-package/examples/etc/kernel/postinst.d/ vers /etc/kernel/postinst.d/ (En particulier le script initramfs), puis :

 dpkg-reconfigure linux-image-2.6.3xxxxx

ou

 update-initramfs -c -k 2.6.3xxx

[http://www.debian-fr.org/nouveau-kernel-t30831.html Source]

== Installation ==

Vous vous retrouvez avec deux paquets (si vous avez aussi compilé les &quot;headers&quot;), qu'il ne reste plus qu'a installer

&lt;code bash&gt;
~/src/linux$ su -
mot de passe:
# dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

Et si vous avez besoin des &quot;headers&quot; :

&lt;code bash&gt;
# dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

&lt;code bash&gt;
# exit
~/src/linux$
&lt;/code&gt;

Si tout s'est bien passé vous devriez maintenant avoir une nouvelle entrée dans grub :

[[Fichier:Grub 2637.jpeg]]

== Désinstallation ==

Si pour une raison ou une autre vous n'arrivez pas à démarrer sur votre nouveau noyau et que vous souhaitiez le désinstaller.
Redémarrez sur le dernier noyau opérationnel, puis :

&lt;code bash&gt;
laurent@Squeeze:~$ su -
Mot de passe : 
root@Squeeze:~# apt-get remove --purge linux-headers-2.6.37-rc2-20101121 linux-image-2.6.37-rc2-20101121
Lecture des listes de paquets... Fait
...
Les paquets suivants seront ENLEVÉS :
  linux-headers-2.6.37-rc2-20101121* linux-image-2.6.37-rc2-20101121*
0 mis à jour, 0 nouvellement installés, 2 à enlever et 0 non mis à jour.
Après cette opération, 71,3 Mo d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
...
Generating grub.cfg ...
...
root@Squeeze:~#
&lt;/code&gt;

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>hruog73gvgsjnzkvzvc25xm17d0ylbz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2935</id>
      <parentid>2934</parentid>
      <timestamp>2011-05-01T12:38:38Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Ajustement de la configuration et choix des options personnelles */</comment>
      <text xml:space="preserve" bytes="16819">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

&lt;code bash&gt;
# apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot
&lt;/code&gt;

Dépendances pour menuconfig :
&lt;code bash&gt;
# apt-get install libncurses-dev
&lt;/code&gt;

Dépendances pour gconfig :
&lt;code bash&gt;
# apt-get install libglade2-dev
&lt;/code&gt;

Dépendances pour xconfig :
&lt;code bash&gt;
# apt-get install libqt3-mt-dev
&lt;/code&gt;

Il vous faut aussi un espace disque suffisant, l'archive compressée fait 90 Mo, l'archive décompressée des sources du noyau Linux fait dans les 400 Méga octets...
Comptez au minimum 2.5 Go si vous souhaitez compiler linux-image et linux-headers.
Assurez vous que les paquets nécessaires soient au niveau du kernel à installer ( pas trop anciens).

== Préparation et récupération des sources ==

=== Téléchargement des sources à partir de kernel.org ===

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
&lt;code bash&gt;
$ cd
&lt;/code&gt;

Créer le répertoire de travail :
&lt;code bash&gt;
$ mkdir src
$ cd src 
~/src$
&lt;/code&gt;

Télécharger les sources :

&lt;code bash&gt;
~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

=== Obtenir les sources à partir des dépôts ===

Vous avez aussi la possibilité d'obtenir les sources à partir des dépôts Debian.
Cas le plus simple : Les sources sont disponibles dans la branche dans laquelle vous êtes...

à ce jour (22 novembre 2010)

* Stable : [http://packages.debian.org/lenny/linux-source-2.6.26 linux-source-2.6.26]
* Unstable : [http://packages.debian.org/squeeze/linux-source-2.6.32 linux-source-2.6.32]
* Sid : [http://packages.debian.org/sid/linux-source-2.6.32 linux-source-2.6.32]
* Experimental (qui n'est pas à proprement parlé une branche) : [http://packages.debian.org/experimental/linux-source-2.6.36 linux-source-2.6.36]

Connaître les sources disponibles pour votre système :

&lt;code bash&gt;
$ aptitude search linux-source
v   linux-source                                             -                                                                    
p   linux-source-2.6                                         - Linux kernel source for Linux 2.6 (meta-package)                   
p   linux-source-2.6.26                                      - Linux kernel source for version 2.6.26 with Debian patches         
p   linux-source-2.6.27-git1-bling102008                     - Linux kernel source for version 2.6.27-git1-bling102008            
p   linux-source-2.6.29.1-090425                             - Linux kernel source for version 2.6.29.1-090425                    
p   linux-source-2.6.32                                      - Linux kernel source for version 2.6.32 with Debian patches         
i   linux-source-2.6.35                                      - Linux kernel source for version 2.6.35 with Debian patches         
i   linux-source-2.6.36                                      - Linux kernel source for version 2.6.36 with Debian patches
&lt;/code&gt;

Pour obtenir les sources, il suffit de se placer dans votre répertoire ~/src et de taper la commande :

&lt;code bash&gt;
$ cd
$ mkdir src
$ su -
mot de passe:
# apt-get install linux-source-2.6.36
# cp /usr/src/linux-source-2.6.36.tar.bz2 /home/votre_user/src
# chown votre_user:votre_user /home/votre_user/src/linux-source-2.6.36.tar.bz2
# exit
$
&lt;/code&gt;

Pour obtenir des sources qui réclament la modification de votre sources.list rendez-vous à [[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|cette page]] pour les explications. (Attention cette manipulation n'est pas sans risque et nécessite la mise en place d'un fichier &quot;préferences&quot;)

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

&lt;code bash&gt;
$ su -
# adduser laurent src
Adding user `laurent' to group `src' ...
Adding user laurent to group src
Done.
# exit
&lt;/code&gt;

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

&lt;code bash&gt;
~/src$ tar xvzf linux-2.6.37-rc2.tar.gz
ou
~/src$ tar xvjf linux-2.6.37-rc2.tar.bz2 (si vous avez téléchargé le bz2)
&lt;/code&gt;

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

&lt;code bash&gt;
~/src$ cd /usr/src
&lt;/code&gt;

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

&lt;code bash&gt;
/usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
/usr/src$ cd ~/src                                                        
~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
&lt;/code&gt;

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code bash&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code bash&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

&lt;code bash&gt;
~/src/linux$ cd ~/src
~/src$ cp -vi /boot/config-`uname -r` .config
~/src$ cd linux
~/src/linux$
&lt;/code&gt;

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte... Par exemple si vous utilisez des clef USB formatées en fat(16 ou 32) insérez-en une, faute de quoi l'option ne serait pas inclue dans le noyau.

La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

&lt;code bash&gt;
~/src/linux$ make localmodconfig
&lt;/code&gt;

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

&lt;code bash&gt;
~/src/linux$ yes &quot;&quot; | make localmodconfig
&lt;/code&gt;

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;.

&lt;code bash&gt;
~/src/linux$ make oldconfig
&lt;/code&gt;

Répondez aux questions. Les réponses par défaut sont généralement les bonnes.

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

&lt;code bash&gt;
~/src/linux$ make config
&lt;/code&gt;

Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg|120px|left|thumb||make config]]

==== make menuconfig ====

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg|120px|left|thumb||make menuconfig]]

==== make gconfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make gconfig
&lt;/code&gt;

Très joli...

[[Fichier:Gconfig.jpeg|120px|left|thumb||make gconfig]]

==== make xonfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make xconfig
&lt;/code&gt;

Le plus agréable à utiliser.

[[Fichier:Xconfig.jpeg|120px|left|thumb||make xconfig]]

=== Nettoyage ===

Un petit nettoyage :
&lt;code bash&gt;
~/src/linux$ make-kpkg clean
&lt;/code&gt;

== La compilation ==

&lt;code bash&gt;
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.
Le nom peut être modifié en jouant sur le fichier /etc/kernel-pkg.conf afin de changer le «-10.00.Custom» en autre chose voire le supprimer. Il faut noter qu'il est *indispensable* que la chaine mise dans append-to-version contienne un chiffre faute de quoi la construction du paquet échouera (ça énerve après 1h de compilation). La date comme dans l'exemple donné est parfaite.

La compilation sur une machine puissante dure à peine 30 minutes. Cela peut dépasser plusieurs heures en fonction de votre configuration.

== En cas d'échec ==

Rien n'est perdu, et il est facile de revenir au début pour recommencer.

Tout d'abord &quot;nettoyer&quot; le répertoire /src/linux

&lt;code bash&gt;
$ cd ~/src/linux
~/src/linux$ make clean 
  CLEAN   .
  CLEAN   arch/x86/kernel/acpi/realmode
  CLEAN   arch/x86/kernel/cpu
  CLEAN   arch/x86/kernel
  CLEAN   arch/x86/vdso
  CLEAN   arch/x86/lib
  CLEAN   drivers/tty/vt
  CLEAN   drivers/video/logo
  CLEAN   firmware
  CLEAN   kernel
  CLEAN   lib
  CLEAN   security/selinux
  CLEAN   usr
  CLEAN   arch/x86/boot/compressed
  CLEAN   arch/x86/boot
  CLEAN   .tmp_versions
  CLEAN   vmlinux System.map .tmp_kallsyms1.o .tmp_kallsyms1.S .tmp_kallsyms2.o .tmp_kallsyms2.S .tmp_vmlinux1 .tmp_vmlinux2 .tmp_System.map
&lt;/code&gt;

Pour recompiler à nouveau votre noyau, pas de problèmes car le .config a gardé toutes vos options en mémoire, il suffit donc de modifier les options que vous voulez par la commande

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Vous préférerez peut-être recommencer depuis le début :

&lt;code bash&gt;
~/src/linux$ cp -vi /boot/config-`uname -r` .config
~/src/linux$ make localmodconfig
Etc.
&lt;/code&gt;

Il faudra ensuite faire:

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

Si vous n'avez pas besoin des &quot;headers&quot; du noyau :

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image
&lt;/code&gt;

=== En cas de problème d'initramfs ===

Vous pourriez rencontrer le problème suivant au cours de la compilation :

&lt;code&gt;
make[1]: entrant dans le répertoire « /home/gerard/src/linux-2.6.37-rc4 »
====== making target debian/stamp/install/linux-image-2.6.37-rc4-i486 [new prereqs: ]======
This is kernel package version 11.015.
echo &quot;The UTS Release version in include/linux/version.h&quot;; echo &quot; \&quot;\&quot; &quot;; echo &quot;does not match current version:&quot;; echo &quot; \&quot;2.6.37-rc4-i486\&quot; &quot;; echo &quot;Please correct this.&quot;; exit 2
The UTS Release version in include/linux/version.h
&quot;&quot;
does not match current version:
&quot;2.6.37-rc4-i486&quot;
Please correct this.
&lt;/code&gt;

Solution :

&gt; mettre à jour kernel-package;

Si ce n'est pas suffisant copier le contenu de /usr/share/kernel-package/examples/etc/kernel/postinst.d/ vers /etc/kernel/postinst.d/ (En particulier le script initramfs), puis :

 dpkg-reconfigure linux-image-2.6.3xxxxx

ou

 update-initramfs -c -k 2.6.3xxx

[http://www.debian-fr.org/nouveau-kernel-t30831.html Source]

== Installation ==

Vous vous retrouvez avec deux paquets (si vous avez aussi compilé les &quot;headers&quot;), qu'il ne reste plus qu'a installer

&lt;code bash&gt;
~/src/linux$ su -
mot de passe:
# dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

Et si vous avez besoin des &quot;headers&quot; :

&lt;code bash&gt;
# dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

&lt;code bash&gt;
# exit
~/src/linux$
&lt;/code&gt;

Si tout s'est bien passé vous devriez maintenant avoir une nouvelle entrée dans grub :

[[Fichier:Grub 2637.jpeg]]

== Désinstallation ==

Si pour une raison ou une autre vous n'arrivez pas à démarrer sur votre nouveau noyau et que vous souhaitiez le désinstaller.
Redémarrez sur le dernier noyau opérationnel, puis :

&lt;code bash&gt;
laurent@Squeeze:~$ su -
Mot de passe : 
root@Squeeze:~# apt-get remove --purge linux-headers-2.6.37-rc2-20101121 linux-image-2.6.37-rc2-20101121
Lecture des listes de paquets... Fait
...
Les paquets suivants seront ENLEVÉS :
  linux-headers-2.6.37-rc2-20101121* linux-image-2.6.37-rc2-20101121*
0 mis à jour, 0 nouvellement installés, 2 à enlever et 0 non mis à jour.
Après cette opération, 71,3 Mo d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
...
Generating grub.cfg ...
...
root@Squeeze:~#
&lt;/code&gt;

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>kvolmcrgo97iqpti69nkj3y8vgzyu3i</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2936</id>
      <parentid>2935</parentid>
      <timestamp>2011-05-01T12:41:14Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Ajustement de la configuration et choix des options personnelles */</comment>
      <text xml:space="preserve" bytes="16775">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

&lt;code bash&gt;
# apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot
&lt;/code&gt;

Dépendances pour menuconfig :
&lt;code bash&gt;
# apt-get install libncurses-dev
&lt;/code&gt;

Dépendances pour gconfig :
&lt;code bash&gt;
# apt-get install libglade2-dev
&lt;/code&gt;

Dépendances pour xconfig :
&lt;code bash&gt;
# apt-get install libqt3-mt-dev
&lt;/code&gt;

Il vous faut aussi un espace disque suffisant, l'archive compressée fait 90 Mo, l'archive décompressée des sources du noyau Linux fait dans les 400 Méga octets...
Comptez au minimum 2.5 Go si vous souhaitez compiler linux-image et linux-headers.
Assurez vous que les paquets nécessaires soient au niveau du kernel à installer ( pas trop anciens).

== Préparation et récupération des sources ==

=== Téléchargement des sources à partir de kernel.org ===

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
&lt;code bash&gt;
$ cd
&lt;/code&gt;

Créer le répertoire de travail :
&lt;code bash&gt;
$ mkdir src
$ cd src 
~/src$
&lt;/code&gt;

Télécharger les sources :

&lt;code bash&gt;
~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

=== Obtenir les sources à partir des dépôts ===

Vous avez aussi la possibilité d'obtenir les sources à partir des dépôts Debian.
Cas le plus simple : Les sources sont disponibles dans la branche dans laquelle vous êtes...

à ce jour (22 novembre 2010)

* Stable : [http://packages.debian.org/lenny/linux-source-2.6.26 linux-source-2.6.26]
* Unstable : [http://packages.debian.org/squeeze/linux-source-2.6.32 linux-source-2.6.32]
* Sid : [http://packages.debian.org/sid/linux-source-2.6.32 linux-source-2.6.32]
* Experimental (qui n'est pas à proprement parlé une branche) : [http://packages.debian.org/experimental/linux-source-2.6.36 linux-source-2.6.36]

Connaître les sources disponibles pour votre système :

&lt;code bash&gt;
$ aptitude search linux-source
v   linux-source                                             -                                                                    
p   linux-source-2.6                                         - Linux kernel source for Linux 2.6 (meta-package)                   
p   linux-source-2.6.26                                      - Linux kernel source for version 2.6.26 with Debian patches         
p   linux-source-2.6.27-git1-bling102008                     - Linux kernel source for version 2.6.27-git1-bling102008            
p   linux-source-2.6.29.1-090425                             - Linux kernel source for version 2.6.29.1-090425                    
p   linux-source-2.6.32                                      - Linux kernel source for version 2.6.32 with Debian patches         
i   linux-source-2.6.35                                      - Linux kernel source for version 2.6.35 with Debian patches         
i   linux-source-2.6.36                                      - Linux kernel source for version 2.6.36 with Debian patches
&lt;/code&gt;

Pour obtenir les sources, il suffit de se placer dans votre répertoire ~/src et de taper la commande :

&lt;code bash&gt;
$ cd
$ mkdir src
$ su -
mot de passe:
# apt-get install linux-source-2.6.36
# cp /usr/src/linux-source-2.6.36.tar.bz2 /home/votre_user/src
# chown votre_user:votre_user /home/votre_user/src/linux-source-2.6.36.tar.bz2
# exit
$
&lt;/code&gt;

Pour obtenir des sources qui réclament la modification de votre sources.list rendez-vous à [[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|cette page]] pour les explications. (Attention cette manipulation n'est pas sans risque et nécessite la mise en place d'un fichier &quot;préferences&quot;)

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

&lt;code bash&gt;
$ su -
# adduser laurent src
Adding user `laurent' to group `src' ...
Adding user laurent to group src
Done.
# exit
&lt;/code&gt;

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

&lt;code bash&gt;
~/src$ tar xvzf linux-2.6.37-rc2.tar.gz
ou
~/src$ tar xvjf linux-2.6.37-rc2.tar.bz2 (si vous avez téléchargé le bz2)
&lt;/code&gt;

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

&lt;code bash&gt;
~/src$ cd /usr/src
&lt;/code&gt;

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

&lt;code bash&gt;
/usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
/usr/src$ cd ~/src                                                        
~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
&lt;/code&gt;

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code bash&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code bash&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

&lt;code bash&gt;
~/src/linux$ cd ~/src
~/src$ cp -vi /boot/config-`uname -r` .config
~/src$ cd linux
~/src/linux$
&lt;/code&gt;

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte... Par exemple si vous utilisez des clef USB formatées en fat(16 ou 32) insérez-en une, faute de quoi l'option ne serait pas inclue dans le noyau.

La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

&lt;code bash&gt;
~/src/linux$ make localmodconfig
&lt;/code&gt;

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

&lt;code bash&gt;
~/src/linux$ yes &quot;&quot; | make localmodconfig
&lt;/code&gt;

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;.

&lt;code bash&gt;
~/src/linux$ make oldconfig
&lt;/code&gt;

Répondez aux questions. Les réponses par défaut sont généralement les bonnes.

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

&lt;code bash&gt;
~/src/linux$ make config
&lt;/code&gt;

Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg|120px||make config]]

==== make menuconfig ====

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg|120px||make menuconfig]]

==== make gconfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make gconfig
&lt;/code&gt;

Très joli...

[[Fichier:Gconfig.jpeg|120px||make gconfig]]

==== make xonfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make xconfig
&lt;/code&gt;

Le plus agréable à utiliser.

[[Fichier:Xconfig.jpeg|120px||make xconfig]]

=== Nettoyage ===

Un petit nettoyage :
&lt;code bash&gt;
~/src/linux$ make-kpkg clean
&lt;/code&gt;

== La compilation ==

&lt;code bash&gt;
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.
Le nom peut être modifié en jouant sur le fichier /etc/kernel-pkg.conf afin de changer le «-10.00.Custom» en autre chose voire le supprimer. Il faut noter qu'il est *indispensable* que la chaine mise dans append-to-version contienne un chiffre faute de quoi la construction du paquet échouera (ça énerve après 1h de compilation). La date comme dans l'exemple donné est parfaite.

La compilation sur une machine puissante dure à peine 30 minutes. Cela peut dépasser plusieurs heures en fonction de votre configuration.

== En cas d'échec ==

Rien n'est perdu, et il est facile de revenir au début pour recommencer.

Tout d'abord &quot;nettoyer&quot; le répertoire /src/linux

&lt;code bash&gt;
$ cd ~/src/linux
~/src/linux$ make clean 
  CLEAN   .
  CLEAN   arch/x86/kernel/acpi/realmode
  CLEAN   arch/x86/kernel/cpu
  CLEAN   arch/x86/kernel
  CLEAN   arch/x86/vdso
  CLEAN   arch/x86/lib
  CLEAN   drivers/tty/vt
  CLEAN   drivers/video/logo
  CLEAN   firmware
  CLEAN   kernel
  CLEAN   lib
  CLEAN   security/selinux
  CLEAN   usr
  CLEAN   arch/x86/boot/compressed
  CLEAN   arch/x86/boot
  CLEAN   .tmp_versions
  CLEAN   vmlinux System.map .tmp_kallsyms1.o .tmp_kallsyms1.S .tmp_kallsyms2.o .tmp_kallsyms2.S .tmp_vmlinux1 .tmp_vmlinux2 .tmp_System.map
&lt;/code&gt;

Pour recompiler à nouveau votre noyau, pas de problèmes car le .config a gardé toutes vos options en mémoire, il suffit donc de modifier les options que vous voulez par la commande

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Vous préférerez peut-être recommencer depuis le début :

&lt;code bash&gt;
~/src/linux$ cp -vi /boot/config-`uname -r` .config
~/src/linux$ make localmodconfig
Etc.
&lt;/code&gt;

Il faudra ensuite faire:

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

Si vous n'avez pas besoin des &quot;headers&quot; du noyau :

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image
&lt;/code&gt;

=== En cas de problème d'initramfs ===

Vous pourriez rencontrer le problème suivant au cours de la compilation :

&lt;code&gt;
make[1]: entrant dans le répertoire « /home/gerard/src/linux-2.6.37-rc4 »
====== making target debian/stamp/install/linux-image-2.6.37-rc4-i486 [new prereqs: ]======
This is kernel package version 11.015.
echo &quot;The UTS Release version in include/linux/version.h&quot;; echo &quot; \&quot;\&quot; &quot;; echo &quot;does not match current version:&quot;; echo &quot; \&quot;2.6.37-rc4-i486\&quot; &quot;; echo &quot;Please correct this.&quot;; exit 2
The UTS Release version in include/linux/version.h
&quot;&quot;
does not match current version:
&quot;2.6.37-rc4-i486&quot;
Please correct this.
&lt;/code&gt;

Solution :

&gt; mettre à jour kernel-package;

Si ce n'est pas suffisant copier le contenu de /usr/share/kernel-package/examples/etc/kernel/postinst.d/ vers /etc/kernel/postinst.d/ (En particulier le script initramfs), puis :

 dpkg-reconfigure linux-image-2.6.3xxxxx

ou

 update-initramfs -c -k 2.6.3xxx

[http://www.debian-fr.org/nouveau-kernel-t30831.html Source]

== Installation ==

Vous vous retrouvez avec deux paquets (si vous avez aussi compilé les &quot;headers&quot;), qu'il ne reste plus qu'a installer

&lt;code bash&gt;
~/src/linux$ su -
mot de passe:
# dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

Et si vous avez besoin des &quot;headers&quot; :

&lt;code bash&gt;
# dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

&lt;code bash&gt;
# exit
~/src/linux$
&lt;/code&gt;

Si tout s'est bien passé vous devriez maintenant avoir une nouvelle entrée dans grub :

[[Fichier:Grub 2637.jpeg]]

== Désinstallation ==

Si pour une raison ou une autre vous n'arrivez pas à démarrer sur votre nouveau noyau et que vous souhaitiez le désinstaller.
Redémarrez sur le dernier noyau opérationnel, puis :

&lt;code bash&gt;
laurent@Squeeze:~$ su -
Mot de passe : 
root@Squeeze:~# apt-get remove --purge linux-headers-2.6.37-rc2-20101121 linux-image-2.6.37-rc2-20101121
Lecture des listes de paquets... Fait
...
Les paquets suivants seront ENLEVÉS :
  linux-headers-2.6.37-rc2-20101121* linux-image-2.6.37-rc2-20101121*
0 mis à jour, 0 nouvellement installés, 2 à enlever et 0 non mis à jour.
Après cette opération, 71,3 Mo d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
...
Generating grub.cfg ...
...
root@Squeeze:~#
&lt;/code&gt;

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>h9qbmuzbiml24b5bzyodbiz49hfk049</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2937</id>
      <parentid>2936</parentid>
      <timestamp>2011-05-01T12:42:21Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Installation */</comment>
      <text xml:space="preserve" bytes="16795">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;



Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

&lt;code bash&gt;
# apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot
&lt;/code&gt;

Dépendances pour menuconfig :
&lt;code bash&gt;
# apt-get install libncurses-dev
&lt;/code&gt;

Dépendances pour gconfig :
&lt;code bash&gt;
# apt-get install libglade2-dev
&lt;/code&gt;

Dépendances pour xconfig :
&lt;code bash&gt;
# apt-get install libqt3-mt-dev
&lt;/code&gt;

Il vous faut aussi un espace disque suffisant, l'archive compressée fait 90 Mo, l'archive décompressée des sources du noyau Linux fait dans les 400 Méga octets...
Comptez au minimum 2.5 Go si vous souhaitez compiler linux-image et linux-headers.
Assurez vous que les paquets nécessaires soient au niveau du kernel à installer ( pas trop anciens).

== Préparation et récupération des sources ==

=== Téléchargement des sources à partir de kernel.org ===

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
&lt;code bash&gt;
$ cd
&lt;/code&gt;

Créer le répertoire de travail :
&lt;code bash&gt;
$ mkdir src
$ cd src 
~/src$
&lt;/code&gt;

Télécharger les sources :

&lt;code bash&gt;
~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

=== Obtenir les sources à partir des dépôts ===

Vous avez aussi la possibilité d'obtenir les sources à partir des dépôts Debian.
Cas le plus simple : Les sources sont disponibles dans la branche dans laquelle vous êtes...

à ce jour (22 novembre 2010)

* Stable : [http://packages.debian.org/lenny/linux-source-2.6.26 linux-source-2.6.26]
* Unstable : [http://packages.debian.org/squeeze/linux-source-2.6.32 linux-source-2.6.32]
* Sid : [http://packages.debian.org/sid/linux-source-2.6.32 linux-source-2.6.32]
* Experimental (qui n'est pas à proprement parlé une branche) : [http://packages.debian.org/experimental/linux-source-2.6.36 linux-source-2.6.36]

Connaître les sources disponibles pour votre système :

&lt;code bash&gt;
$ aptitude search linux-source
v   linux-source                                             -                                                                    
p   linux-source-2.6                                         - Linux kernel source for Linux 2.6 (meta-package)                   
p   linux-source-2.6.26                                      - Linux kernel source for version 2.6.26 with Debian patches         
p   linux-source-2.6.27-git1-bling102008                     - Linux kernel source for version 2.6.27-git1-bling102008            
p   linux-source-2.6.29.1-090425                             - Linux kernel source for version 2.6.29.1-090425                    
p   linux-source-2.6.32                                      - Linux kernel source for version 2.6.32 with Debian patches         
i   linux-source-2.6.35                                      - Linux kernel source for version 2.6.35 with Debian patches         
i   linux-source-2.6.36                                      - Linux kernel source for version 2.6.36 with Debian patches
&lt;/code&gt;

Pour obtenir les sources, il suffit de se placer dans votre répertoire ~/src et de taper la commande :

&lt;code bash&gt;
$ cd
$ mkdir src
$ su -
mot de passe:
# apt-get install linux-source-2.6.36
# cp /usr/src/linux-source-2.6.36.tar.bz2 /home/votre_user/src
# chown votre_user:votre_user /home/votre_user/src/linux-source-2.6.36.tar.bz2
# exit
$
&lt;/code&gt;

Pour obtenir des sources qui réclament la modification de votre sources.list rendez-vous à [[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|cette page]] pour les explications. (Attention cette manipulation n'est pas sans risque et nécessite la mise en place d'un fichier &quot;préferences&quot;)

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

&lt;code bash&gt;
$ su -
# adduser laurent src
Adding user `laurent' to group `src' ...
Adding user laurent to group src
Done.
# exit
&lt;/code&gt;

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

&lt;code bash&gt;
~/src$ tar xvzf linux-2.6.37-rc2.tar.gz
ou
~/src$ tar xvjf linux-2.6.37-rc2.tar.bz2 (si vous avez téléchargé le bz2)
&lt;/code&gt;

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

&lt;code bash&gt;
~/src$ cd /usr/src
&lt;/code&gt;

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

&lt;code bash&gt;
/usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
/usr/src$ cd ~/src                                                        
~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
&lt;/code&gt;

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code bash&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code bash&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

&lt;code bash&gt;
~/src/linux$ cd ~/src
~/src$ cp -vi /boot/config-`uname -r` .config
~/src$ cd linux
~/src/linux$
&lt;/code&gt;

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte... Par exemple si vous utilisez des clef USB formatées en fat(16 ou 32) insérez-en une, faute de quoi l'option ne serait pas inclue dans le noyau.

La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

&lt;code bash&gt;
~/src/linux$ make localmodconfig
&lt;/code&gt;

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

&lt;code bash&gt;
~/src/linux$ yes &quot;&quot; | make localmodconfig
&lt;/code&gt;

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;.

&lt;code bash&gt;
~/src/linux$ make oldconfig
&lt;/code&gt;

Répondez aux questions. Les réponses par défaut sont généralement les bonnes.

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

&lt;code bash&gt;
~/src/linux$ make config
&lt;/code&gt;

Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg|120px||make config]]

==== make menuconfig ====

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg|120px||make menuconfig]]

==== make gconfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make gconfig
&lt;/code&gt;

Très joli...

[[Fichier:Gconfig.jpeg|120px||make gconfig]]

==== make xonfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make xconfig
&lt;/code&gt;

Le plus agréable à utiliser.

[[Fichier:Xconfig.jpeg|120px||make xconfig]]

=== Nettoyage ===

Un petit nettoyage :
&lt;code bash&gt;
~/src/linux$ make-kpkg clean
&lt;/code&gt;

== La compilation ==

&lt;code bash&gt;
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.
Le nom peut être modifié en jouant sur le fichier /etc/kernel-pkg.conf afin de changer le «-10.00.Custom» en autre chose voire le supprimer. Il faut noter qu'il est *indispensable* que la chaine mise dans append-to-version contienne un chiffre faute de quoi la construction du paquet échouera (ça énerve après 1h de compilation). La date comme dans l'exemple donné est parfaite.

La compilation sur une machine puissante dure à peine 30 minutes. Cela peut dépasser plusieurs heures en fonction de votre configuration.

== En cas d'échec ==

Rien n'est perdu, et il est facile de revenir au début pour recommencer.

Tout d'abord &quot;nettoyer&quot; le répertoire /src/linux

&lt;code bash&gt;
$ cd ~/src/linux
~/src/linux$ make clean 
  CLEAN   .
  CLEAN   arch/x86/kernel/acpi/realmode
  CLEAN   arch/x86/kernel/cpu
  CLEAN   arch/x86/kernel
  CLEAN   arch/x86/vdso
  CLEAN   arch/x86/lib
  CLEAN   drivers/tty/vt
  CLEAN   drivers/video/logo
  CLEAN   firmware
  CLEAN   kernel
  CLEAN   lib
  CLEAN   security/selinux
  CLEAN   usr
  CLEAN   arch/x86/boot/compressed
  CLEAN   arch/x86/boot
  CLEAN   .tmp_versions
  CLEAN   vmlinux System.map .tmp_kallsyms1.o .tmp_kallsyms1.S .tmp_kallsyms2.o .tmp_kallsyms2.S .tmp_vmlinux1 .tmp_vmlinux2 .tmp_System.map
&lt;/code&gt;

Pour recompiler à nouveau votre noyau, pas de problèmes car le .config a gardé toutes vos options en mémoire, il suffit donc de modifier les options que vous voulez par la commande

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Vous préférerez peut-être recommencer depuis le début :

&lt;code bash&gt;
~/src/linux$ cp -vi /boot/config-`uname -r` .config
~/src/linux$ make localmodconfig
Etc.
&lt;/code&gt;

Il faudra ensuite faire:

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

Si vous n'avez pas besoin des &quot;headers&quot; du noyau :

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image
&lt;/code&gt;

=== En cas de problème d'initramfs ===

Vous pourriez rencontrer le problème suivant au cours de la compilation :

&lt;code&gt;
make[1]: entrant dans le répertoire « /home/gerard/src/linux-2.6.37-rc4 »
====== making target debian/stamp/install/linux-image-2.6.37-rc4-i486 [new prereqs: ]======
This is kernel package version 11.015.
echo &quot;The UTS Release version in include/linux/version.h&quot;; echo &quot; \&quot;\&quot; &quot;; echo &quot;does not match current version:&quot;; echo &quot; \&quot;2.6.37-rc4-i486\&quot; &quot;; echo &quot;Please correct this.&quot;; exit 2
The UTS Release version in include/linux/version.h
&quot;&quot;
does not match current version:
&quot;2.6.37-rc4-i486&quot;
Please correct this.
&lt;/code&gt;

Solution :

&gt; mettre à jour kernel-package;

Si ce n'est pas suffisant copier le contenu de /usr/share/kernel-package/examples/etc/kernel/postinst.d/ vers /etc/kernel/postinst.d/ (En particulier le script initramfs), puis :

 dpkg-reconfigure linux-image-2.6.3xxxxx

ou

 update-initramfs -c -k 2.6.3xxx

[http://www.debian-fr.org/nouveau-kernel-t30831.html Source]

== Installation ==

Vous vous retrouvez avec deux paquets (si vous avez aussi compilé les &quot;headers&quot;), qu'il ne reste plus qu'a installer

&lt;code bash&gt;
~/src/linux$ su -
mot de passe:
# dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

Et si vous avez besoin des &quot;headers&quot; :

&lt;code bash&gt;
# dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

&lt;code bash&gt;
# exit
~/src/linux$
&lt;/code&gt;

Si tout s'est bien passé vous devriez maintenant avoir une nouvelle entrée dans grub :

[[Fichier:Grub 2637.jpeg|120px||make gconfig]]

== Désinstallation ==

Si pour une raison ou une autre vous n'arrivez pas à démarrer sur votre nouveau noyau et que vous souhaitiez le désinstaller.
Redémarrez sur le dernier noyau opérationnel, puis :

&lt;code bash&gt;
laurent@Squeeze:~$ su -
Mot de passe : 
root@Squeeze:~# apt-get remove --purge linux-headers-2.6.37-rc2-20101121 linux-image-2.6.37-rc2-20101121
Lecture des listes de paquets... Fait
...
Les paquets suivants seront ENLEVÉS :
  linux-headers-2.6.37-rc2-20101121* linux-image-2.6.37-rc2-20101121*
0 mis à jour, 0 nouvellement installés, 2 à enlever et 0 non mis à jour.
Après cette opération, 71,3 Mo d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
...
Generating grub.cfg ...
...
root@Squeeze:~#
&lt;/code&gt;

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>bpwy9iu04ts3xyjqb8uewfvno0aesnr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2938</id>
      <parentid>2937</parentid>
      <timestamp>2011-05-01T12:57:18Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="16373">Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

&lt;code bash&gt;
# apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot
&lt;/code&gt;

Dépendances pour menuconfig :
&lt;code bash&gt;
# apt-get install libncurses-dev
&lt;/code&gt;

Dépendances pour gconfig :
&lt;code bash&gt;
# apt-get install libglade2-dev
&lt;/code&gt;

Dépendances pour xconfig :
&lt;code bash&gt;
# apt-get install libqt3-mt-dev
&lt;/code&gt;

Il vous faut aussi un espace disque suffisant, l'archive compressée fait 90 Mo, l'archive décompressée des sources du noyau Linux fait dans les 400 Méga octets...
Comptez au minimum 2.5 Go si vous souhaitez compiler linux-image et linux-headers.
Assurez vous que les paquets nécessaires soient au niveau du kernel à installer ( pas trop anciens).

== Préparation et récupération des sources ==

=== Téléchargement des sources à partir de kernel.org ===

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
&lt;code bash&gt;
$ cd
&lt;/code&gt;

Créer le répertoire de travail :
&lt;code bash&gt;
$ mkdir src
$ cd src 
~/src$
&lt;/code&gt;

Télécharger les sources :

&lt;code bash&gt;
~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

=== Obtenir les sources à partir des dépôts ===

Vous avez aussi la possibilité d'obtenir les sources à partir des dépôts Debian.
Cas le plus simple : Les sources sont disponibles dans la branche dans laquelle vous êtes...

à ce jour (22 novembre 2010)

* Stable : [http://packages.debian.org/lenny/linux-source-2.6.26 linux-source-2.6.26]
* Unstable : [http://packages.debian.org/squeeze/linux-source-2.6.32 linux-source-2.6.32]
* Sid : [http://packages.debian.org/sid/linux-source-2.6.32 linux-source-2.6.32]
* Experimental (qui n'est pas à proprement parlé une branche) : [http://packages.debian.org/experimental/linux-source-2.6.36 linux-source-2.6.36]

Connaître les sources disponibles pour votre système :

&lt;code bash&gt;
$ aptitude search linux-source
v   linux-source                                             -                                                                    
p   linux-source-2.6                                         - Linux kernel source for Linux 2.6 (meta-package)                   
p   linux-source-2.6.26                                      - Linux kernel source for version 2.6.26 with Debian patches         
p   linux-source-2.6.27-git1-bling102008                     - Linux kernel source for version 2.6.27-git1-bling102008            
p   linux-source-2.6.29.1-090425                             - Linux kernel source for version 2.6.29.1-090425                    
p   linux-source-2.6.32                                      - Linux kernel source for version 2.6.32 with Debian patches         
i   linux-source-2.6.35                                      - Linux kernel source for version 2.6.35 with Debian patches         
i   linux-source-2.6.36                                      - Linux kernel source for version 2.6.36 with Debian patches
&lt;/code&gt;

Pour obtenir les sources, il suffit de se placer dans votre répertoire ~/src et de taper la commande :

&lt;code bash&gt;
$ cd
$ mkdir src
$ su -
mot de passe:
# apt-get install linux-source-2.6.36
# cp /usr/src/linux-source-2.6.36.tar.bz2 /home/votre_user/src
# chown votre_user:votre_user /home/votre_user/src/linux-source-2.6.36.tar.bz2
# exit
$
&lt;/code&gt;

Pour obtenir des sources qui réclament la modification de votre sources.list rendez-vous à [[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|cette page]] pour les explications. (Attention cette manipulation n'est pas sans risque et nécessite la mise en place d'un fichier &quot;préferences&quot;)

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

&lt;code bash&gt;
$ su -
# adduser laurent src
Adding user `laurent' to group `src' ...
Adding user laurent to group src
Done.
# exit
&lt;/code&gt;

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

&lt;code bash&gt;
~/src$ tar xvzf linux-2.6.37-rc2.tar.gz
ou
~/src$ tar xvjf linux-2.6.37-rc2.tar.bz2 (si vous avez téléchargé le bz2)
&lt;/code&gt;

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

&lt;code bash&gt;
~/src$ cd /usr/src
&lt;/code&gt;

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

&lt;code bash&gt;
/usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
/usr/src$ cd ~/src                                                        
~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
&lt;/code&gt;

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code bash&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code bash&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

&lt;code bash&gt;
~/src/linux$ cd ~/src
~/src$ cp -vi /boot/config-`uname -r` .config
~/src$ cd linux
~/src/linux$
&lt;/code&gt;

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte... Par exemple si vous utilisez des clef USB formatées en fat(16 ou 32) insérez-en une, faute de quoi l'option ne serait pas inclue dans le noyau.

La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

&lt;code bash&gt;
~/src/linux$ make localmodconfig
&lt;/code&gt;

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

&lt;code bash&gt;
~/src/linux$ yes &quot;&quot; | make localmodconfig
&lt;/code&gt;

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;.

&lt;code bash&gt;
~/src/linux$ make oldconfig
&lt;/code&gt;

Répondez aux questions. Les réponses par défaut sont généralement les bonnes.

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

&lt;code bash&gt;
~/src/linux$ make config
&lt;/code&gt;

Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg|120px||make config]]

==== make menuconfig ====

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg|120px||make menuconfig]]

==== make gconfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make gconfig
&lt;/code&gt;

Très joli...

[[Fichier:Gconfig.jpeg|120px||make gconfig]]

==== make xonfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make xconfig
&lt;/code&gt;

Le plus agréable à utiliser.

[[Fichier:Xconfig.jpeg|120px||make xconfig]]

=== Nettoyage ===

Un petit nettoyage :
&lt;code bash&gt;
~/src/linux$ make-kpkg clean
&lt;/code&gt;

== La compilation ==

&lt;code bash&gt;
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.
Le nom peut être modifié en jouant sur le fichier /etc/kernel-pkg.conf afin de changer le «-10.00.Custom» en autre chose voire le supprimer. Il faut noter qu'il est *indispensable* que la chaine mise dans append-to-version contienne un chiffre faute de quoi la construction du paquet échouera (ça énerve après 1h de compilation). La date comme dans l'exemple donné est parfaite.

La compilation sur une machine puissante dure à peine 30 minutes. Cela peut dépasser plusieurs heures en fonction de votre configuration.

== En cas d'échec ==

Rien n'est perdu, et il est facile de revenir au début pour recommencer.

Tout d'abord &quot;nettoyer&quot; le répertoire /src/linux

&lt;code bash&gt;
$ cd ~/src/linux
~/src/linux$ make clean 
  CLEAN   .
  CLEAN   arch/x86/kernel/acpi/realmode
  CLEAN   arch/x86/kernel/cpu
  CLEAN   arch/x86/kernel
  CLEAN   arch/x86/vdso
  CLEAN   arch/x86/lib
  CLEAN   drivers/tty/vt
  CLEAN   drivers/video/logo
  CLEAN   firmware
  CLEAN   kernel
  CLEAN   lib
  CLEAN   security/selinux
  CLEAN   usr
  CLEAN   arch/x86/boot/compressed
  CLEAN   arch/x86/boot
  CLEAN   .tmp_versions
  CLEAN   vmlinux System.map .tmp_kallsyms1.o .tmp_kallsyms1.S .tmp_kallsyms2.o .tmp_kallsyms2.S .tmp_vmlinux1 .tmp_vmlinux2 .tmp_System.map
&lt;/code&gt;

Pour recompiler à nouveau votre noyau, pas de problèmes car le .config a gardé toutes vos options en mémoire, il suffit donc de modifier les options que vous voulez par la commande

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Vous préférerez peut-être recommencer depuis le début :

&lt;code bash&gt;
~/src/linux$ cp -vi /boot/config-`uname -r` .config
~/src/linux$ make localmodconfig
Etc.
&lt;/code&gt;

Il faudra ensuite faire:

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

Si vous n'avez pas besoin des &quot;headers&quot; du noyau :

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image
&lt;/code&gt;

=== En cas de problème d'initramfs ===

Vous pourriez rencontrer le problème suivant au cours de la compilation :

&lt;code&gt;
make[1]: entrant dans le répertoire « /home/gerard/src/linux-2.6.37-rc4 »
====== making target debian/stamp/install/linux-image-2.6.37-rc4-i486 [new prereqs: ]======
This is kernel package version 11.015.
echo &quot;The UTS Release version in include/linux/version.h&quot;; echo &quot; \&quot;\&quot; &quot;; echo &quot;does not match current version:&quot;; echo &quot; \&quot;2.6.37-rc4-i486\&quot; &quot;; echo &quot;Please correct this.&quot;; exit 2
The UTS Release version in include/linux/version.h
&quot;&quot;
does not match current version:
&quot;2.6.37-rc4-i486&quot;
Please correct this.
&lt;/code&gt;

Solution :

&gt; mettre à jour kernel-package;

Si ce n'est pas suffisant copier le contenu de /usr/share/kernel-package/examples/etc/kernel/postinst.d/ vers /etc/kernel/postinst.d/ (En particulier le script initramfs), puis :

 dpkg-reconfigure linux-image-2.6.3xxxxx

ou

 update-initramfs -c -k 2.6.3xxx

[http://www.debian-fr.org/nouveau-kernel-t30831.html Source]

== Installation ==

Vous vous retrouvez avec deux paquets (si vous avez aussi compilé les &quot;headers&quot;), qu'il ne reste plus qu'a installer

&lt;code bash&gt;
~/src/linux$ su -
mot de passe:
# dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

Et si vous avez besoin des &quot;headers&quot; :

&lt;code bash&gt;
# dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

&lt;code bash&gt;
# exit
~/src/linux$
&lt;/code&gt;

Si tout s'est bien passé vous devriez maintenant avoir une nouvelle entrée dans grub :

[[Fichier:Grub 2637.jpeg|120px||make gconfig]]

== Désinstallation ==

Si pour une raison ou une autre vous n'arrivez pas à démarrer sur votre nouveau noyau et que vous souhaitiez le désinstaller.
Redémarrez sur le dernier noyau opérationnel, puis :

&lt;code bash&gt;
laurent@Squeeze:~$ su -
Mot de passe : 
root@Squeeze:~# apt-get remove --purge linux-headers-2.6.37-rc2-20101121 linux-image-2.6.37-rc2-20101121
Lecture des listes de paquets... Fait
...
Les paquets suivants seront ENLEVÉS :
  linux-headers-2.6.37-rc2-20101121* linux-image-2.6.37-rc2-20101121*
0 mis à jour, 0 nouvellement installés, 2 à enlever et 0 non mis à jour.
Après cette opération, 71,3 Mo d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
...
Generating grub.cfg ...
...
root@Squeeze:~#
&lt;/code&gt;

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>t6vqq0e96rkvr7ktxyfnske8hcq71bv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3843</id>
      <parentid>2938</parentid>
      <timestamp>2012-02-22T11:47:36Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>/* make menuconfig */</comment>
      <text xml:space="preserve" bytes="16503">Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

&lt;code bash&gt;
# apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot
&lt;/code&gt;

Dépendances pour menuconfig :
&lt;code bash&gt;
# apt-get install libncurses-dev
&lt;/code&gt;

Dépendances pour gconfig :
&lt;code bash&gt;
# apt-get install libglade2-dev
&lt;/code&gt;

Dépendances pour xconfig :
&lt;code bash&gt;
# apt-get install libqt3-mt-dev
&lt;/code&gt;

Il vous faut aussi un espace disque suffisant, l'archive compressée fait 90 Mo, l'archive décompressée des sources du noyau Linux fait dans les 400 Méga octets...
Comptez au minimum 2.5 Go si vous souhaitez compiler linux-image et linux-headers.
Assurez vous que les paquets nécessaires soient au niveau du kernel à installer ( pas trop anciens).

== Préparation et récupération des sources ==

=== Téléchargement des sources à partir de kernel.org ===

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
&lt;code bash&gt;
$ cd
&lt;/code&gt;

Créer le répertoire de travail :
&lt;code bash&gt;
$ mkdir src
$ cd src 
~/src$
&lt;/code&gt;

Télécharger les sources :

&lt;code bash&gt;
~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

=== Obtenir les sources à partir des dépôts ===

Vous avez aussi la possibilité d'obtenir les sources à partir des dépôts Debian.
Cas le plus simple : Les sources sont disponibles dans la branche dans laquelle vous êtes...

à ce jour (22 novembre 2010)

* Stable : [http://packages.debian.org/lenny/linux-source-2.6.26 linux-source-2.6.26]
* Unstable : [http://packages.debian.org/squeeze/linux-source-2.6.32 linux-source-2.6.32]
* Sid : [http://packages.debian.org/sid/linux-source-2.6.32 linux-source-2.6.32]
* Experimental (qui n'est pas à proprement parlé une branche) : [http://packages.debian.org/experimental/linux-source-2.6.36 linux-source-2.6.36]

Connaître les sources disponibles pour votre système :

&lt;code bash&gt;
$ aptitude search linux-source
v   linux-source                                             -                                                                    
p   linux-source-2.6                                         - Linux kernel source for Linux 2.6 (meta-package)                   
p   linux-source-2.6.26                                      - Linux kernel source for version 2.6.26 with Debian patches         
p   linux-source-2.6.27-git1-bling102008                     - Linux kernel source for version 2.6.27-git1-bling102008            
p   linux-source-2.6.29.1-090425                             - Linux kernel source for version 2.6.29.1-090425                    
p   linux-source-2.6.32                                      - Linux kernel source for version 2.6.32 with Debian patches         
i   linux-source-2.6.35                                      - Linux kernel source for version 2.6.35 with Debian patches         
i   linux-source-2.6.36                                      - Linux kernel source for version 2.6.36 with Debian patches
&lt;/code&gt;

Pour obtenir les sources, il suffit de se placer dans votre répertoire ~/src et de taper la commande :

&lt;code bash&gt;
$ cd
$ mkdir src
$ su -
mot de passe:
# apt-get install linux-source-2.6.36
# cp /usr/src/linux-source-2.6.36.tar.bz2 /home/votre_user/src
# chown votre_user:votre_user /home/votre_user/src/linux-source-2.6.36.tar.bz2
# exit
$
&lt;/code&gt;

Pour obtenir des sources qui réclament la modification de votre sources.list rendez-vous à [[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|cette page]] pour les explications. (Attention cette manipulation n'est pas sans risque et nécessite la mise en place d'un fichier &quot;préferences&quot;)

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

&lt;code bash&gt;
$ su -
# adduser laurent src
Adding user `laurent' to group `src' ...
Adding user laurent to group src
Done.
# exit
&lt;/code&gt;

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

&lt;code bash&gt;
~/src$ tar xvzf linux-2.6.37-rc2.tar.gz
ou
~/src$ tar xvjf linux-2.6.37-rc2.tar.bz2 (si vous avez téléchargé le bz2)
&lt;/code&gt;

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

&lt;code bash&gt;
~/src$ cd /usr/src
&lt;/code&gt;

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

&lt;code bash&gt;
/usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
/usr/src$ cd ~/src                                                        
~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
&lt;/code&gt;

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code bash&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code bash&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

&lt;code bash&gt;
~/src/linux$ cd ~/src
~/src$ cp -vi /boot/config-`uname -r` .config
~/src$ cd linux
~/src/linux$
&lt;/code&gt;

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte... Par exemple si vous utilisez des clef USB formatées en fat(16 ou 32) insérez-en une, faute de quoi l'option ne serait pas inclue dans le noyau.

La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

&lt;code bash&gt;
~/src/linux$ make localmodconfig
&lt;/code&gt;

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

&lt;code bash&gt;
~/src/linux$ yes &quot;&quot; | make localmodconfig
&lt;/code&gt;

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;.

&lt;code bash&gt;
~/src/linux$ make oldconfig
&lt;/code&gt;

Répondez aux questions. Les réponses par défaut sont généralement les bonnes.

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

&lt;code bash&gt;
~/src/linux$ make config
&lt;/code&gt;

Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg|120px||make config]]

==== make menuconfig ====

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg|120px||make menuconfig]]

==== make nconfig ====

&lt;code bash&gt;
~/src/linux$ make nconfig
&lt;/code&gt;

Une version améliorée de menuconfig toujours en ncurse.

==== make gconfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make gconfig
&lt;/code&gt;

Très joli...

[[Fichier:Gconfig.jpeg|120px||make gconfig]]

==== make xonfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make xconfig
&lt;/code&gt;

Le plus agréable à utiliser.

[[Fichier:Xconfig.jpeg|120px||make xconfig]]

=== Nettoyage ===

Un petit nettoyage :
&lt;code bash&gt;
~/src/linux$ make-kpkg clean
&lt;/code&gt;

== La compilation ==

&lt;code bash&gt;
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.
Le nom peut être modifié en jouant sur le fichier /etc/kernel-pkg.conf afin de changer le «-10.00.Custom» en autre chose voire le supprimer. Il faut noter qu'il est *indispensable* que la chaine mise dans append-to-version contienne un chiffre faute de quoi la construction du paquet échouera (ça énerve après 1h de compilation). La date comme dans l'exemple donné est parfaite.

La compilation sur une machine puissante dure à peine 30 minutes. Cela peut dépasser plusieurs heures en fonction de votre configuration.

== En cas d'échec ==

Rien n'est perdu, et il est facile de revenir au début pour recommencer.

Tout d'abord &quot;nettoyer&quot; le répertoire /src/linux

&lt;code bash&gt;
$ cd ~/src/linux
~/src/linux$ make clean 
  CLEAN   .
  CLEAN   arch/x86/kernel/acpi/realmode
  CLEAN   arch/x86/kernel/cpu
  CLEAN   arch/x86/kernel
  CLEAN   arch/x86/vdso
  CLEAN   arch/x86/lib
  CLEAN   drivers/tty/vt
  CLEAN   drivers/video/logo
  CLEAN   firmware
  CLEAN   kernel
  CLEAN   lib
  CLEAN   security/selinux
  CLEAN   usr
  CLEAN   arch/x86/boot/compressed
  CLEAN   arch/x86/boot
  CLEAN   .tmp_versions
  CLEAN   vmlinux System.map .tmp_kallsyms1.o .tmp_kallsyms1.S .tmp_kallsyms2.o .tmp_kallsyms2.S .tmp_vmlinux1 .tmp_vmlinux2 .tmp_System.map
&lt;/code&gt;

Pour recompiler à nouveau votre noyau, pas de problèmes car le .config a gardé toutes vos options en mémoire, il suffit donc de modifier les options que vous voulez par la commande

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Vous préférerez peut-être recommencer depuis le début :

&lt;code bash&gt;
~/src/linux$ cp -vi /boot/config-`uname -r` .config
~/src/linux$ make localmodconfig
Etc.
&lt;/code&gt;

Il faudra ensuite faire:

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

Si vous n'avez pas besoin des &quot;headers&quot; du noyau :

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image
&lt;/code&gt;

=== En cas de problème d'initramfs ===

Vous pourriez rencontrer le problème suivant au cours de la compilation :

&lt;code&gt;
make[1]: entrant dans le répertoire « /home/gerard/src/linux-2.6.37-rc4 »
====== making target debian/stamp/install/linux-image-2.6.37-rc4-i486 [new prereqs: ]======
This is kernel package version 11.015.
echo &quot;The UTS Release version in include/linux/version.h&quot;; echo &quot; \&quot;\&quot; &quot;; echo &quot;does not match current version:&quot;; echo &quot; \&quot;2.6.37-rc4-i486\&quot; &quot;; echo &quot;Please correct this.&quot;; exit 2
The UTS Release version in include/linux/version.h
&quot;&quot;
does not match current version:
&quot;2.6.37-rc4-i486&quot;
Please correct this.
&lt;/code&gt;

Solution :

&gt; mettre à jour kernel-package;

Si ce n'est pas suffisant copier le contenu de /usr/share/kernel-package/examples/etc/kernel/postinst.d/ vers /etc/kernel/postinst.d/ (En particulier le script initramfs), puis :

 dpkg-reconfigure linux-image-2.6.3xxxxx

ou

 update-initramfs -c -k 2.6.3xxx

[http://www.debian-fr.org/nouveau-kernel-t30831.html Source]

== Installation ==

Vous vous retrouvez avec deux paquets (si vous avez aussi compilé les &quot;headers&quot;), qu'il ne reste plus qu'a installer

&lt;code bash&gt;
~/src/linux$ su -
mot de passe:
# dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

Et si vous avez besoin des &quot;headers&quot; :

&lt;code bash&gt;
# dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

&lt;code bash&gt;
# exit
~/src/linux$
&lt;/code&gt;

Si tout s'est bien passé vous devriez maintenant avoir une nouvelle entrée dans grub :

[[Fichier:Grub 2637.jpeg|120px||make gconfig]]

== Désinstallation ==

Si pour une raison ou une autre vous n'arrivez pas à démarrer sur votre nouveau noyau et que vous souhaitiez le désinstaller.
Redémarrez sur le dernier noyau opérationnel, puis :

&lt;code bash&gt;
laurent@Squeeze:~$ su -
Mot de passe : 
root@Squeeze:~# apt-get remove --purge linux-headers-2.6.37-rc2-20101121 linux-image-2.6.37-rc2-20101121
Lecture des listes de paquets... Fait
...
Les paquets suivants seront ENLEVÉS :
  linux-headers-2.6.37-rc2-20101121* linux-image-2.6.37-rc2-20101121*
0 mis à jour, 0 nouvellement installés, 2 à enlever et 0 non mis à jour.
Après cette opération, 71,3 Mo d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
...
Generating grub.cfg ...
...
root@Squeeze:~#
&lt;/code&gt;

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>i4jf08y39cuaauqfizld7z9mhhy0olq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3849</id>
      <parentid>3843</parentid>
      <timestamp>2012-02-23T07:46:17Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>/* make nconfig */</comment>
      <text xml:space="preserve" bytes="16553">Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

&lt;code bash&gt;
# apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot
&lt;/code&gt;

Dépendances pour menuconfig :
&lt;code bash&gt;
# apt-get install libncurses-dev
&lt;/code&gt;

Dépendances pour gconfig :
&lt;code bash&gt;
# apt-get install libglade2-dev
&lt;/code&gt;

Dépendances pour xconfig :
&lt;code bash&gt;
# apt-get install libqt3-mt-dev
&lt;/code&gt;

Il vous faut aussi un espace disque suffisant, l'archive compressée fait 90 Mo, l'archive décompressée des sources du noyau Linux fait dans les 400 Méga octets...
Comptez au minimum 2.5 Go si vous souhaitez compiler linux-image et linux-headers.
Assurez vous que les paquets nécessaires soient au niveau du kernel à installer ( pas trop anciens).

== Préparation et récupération des sources ==

=== Téléchargement des sources à partir de kernel.org ===

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
&lt;code bash&gt;
$ cd
&lt;/code&gt;

Créer le répertoire de travail :
&lt;code bash&gt;
$ mkdir src
$ cd src 
~/src$
&lt;/code&gt;

Télécharger les sources :

&lt;code bash&gt;
~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

=== Obtenir les sources à partir des dépôts ===

Vous avez aussi la possibilité d'obtenir les sources à partir des dépôts Debian.
Cas le plus simple : Les sources sont disponibles dans la branche dans laquelle vous êtes...

à ce jour (22 novembre 2010)

* Stable : [http://packages.debian.org/lenny/linux-source-2.6.26 linux-source-2.6.26]
* Unstable : [http://packages.debian.org/squeeze/linux-source-2.6.32 linux-source-2.6.32]
* Sid : [http://packages.debian.org/sid/linux-source-2.6.32 linux-source-2.6.32]
* Experimental (qui n'est pas à proprement parlé une branche) : [http://packages.debian.org/experimental/linux-source-2.6.36 linux-source-2.6.36]

Connaître les sources disponibles pour votre système :

&lt;code bash&gt;
$ aptitude search linux-source
v   linux-source                                             -                                                                    
p   linux-source-2.6                                         - Linux kernel source for Linux 2.6 (meta-package)                   
p   linux-source-2.6.26                                      - Linux kernel source for version 2.6.26 with Debian patches         
p   linux-source-2.6.27-git1-bling102008                     - Linux kernel source for version 2.6.27-git1-bling102008            
p   linux-source-2.6.29.1-090425                             - Linux kernel source for version 2.6.29.1-090425                    
p   linux-source-2.6.32                                      - Linux kernel source for version 2.6.32 with Debian patches         
i   linux-source-2.6.35                                      - Linux kernel source for version 2.6.35 with Debian patches         
i   linux-source-2.6.36                                      - Linux kernel source for version 2.6.36 with Debian patches
&lt;/code&gt;

Pour obtenir les sources, il suffit de se placer dans votre répertoire ~/src et de taper la commande :

&lt;code bash&gt;
$ cd
$ mkdir src
$ su -
mot de passe:
# apt-get install linux-source-2.6.36
# cp /usr/src/linux-source-2.6.36.tar.bz2 /home/votre_user/src
# chown votre_user:votre_user /home/votre_user/src/linux-source-2.6.36.tar.bz2
# exit
$
&lt;/code&gt;

Pour obtenir des sources qui réclament la modification de votre sources.list rendez-vous à [[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|cette page]] pour les explications. (Attention cette manipulation n'est pas sans risque et nécessite la mise en place d'un fichier &quot;préferences&quot;)

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

&lt;code bash&gt;
$ su -
# adduser laurent src
Adding user `laurent' to group `src' ...
Adding user laurent to group src
Done.
# exit
&lt;/code&gt;

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

&lt;code bash&gt;
~/src$ tar xvzf linux-2.6.37-rc2.tar.gz
ou
~/src$ tar xvjf linux-2.6.37-rc2.tar.bz2 (si vous avez téléchargé le bz2)
&lt;/code&gt;

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

&lt;code bash&gt;
~/src$ cd /usr/src
&lt;/code&gt;

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

&lt;code bash&gt;
/usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
/usr/src$ cd ~/src                                                        
~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
&lt;/code&gt;

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code bash&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code bash&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

&lt;code bash&gt;
~/src/linux$ cd ~/src
~/src$ cp -vi /boot/config-`uname -r` .config
~/src$ cd linux
~/src/linux$
&lt;/code&gt;

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte... Par exemple si vous utilisez des clef USB formatées en fat(16 ou 32) insérez-en une, faute de quoi l'option ne serait pas inclue dans le noyau.

La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

&lt;code bash&gt;
~/src/linux$ make localmodconfig
&lt;/code&gt;

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

&lt;code bash&gt;
~/src/linux$ yes &quot;&quot; | make localmodconfig
&lt;/code&gt;

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;.

&lt;code bash&gt;
~/src/linux$ make oldconfig
&lt;/code&gt;

Répondez aux questions. Les réponses par défaut sont généralement les bonnes.

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

&lt;code bash&gt;
~/src/linux$ make config
&lt;/code&gt;

Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg|120px||make config]]

==== make menuconfig ====

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg|120px||make menuconfig]]

==== make nconfig ====

&lt;code bash&gt;
~/src/linux$ make nconfig
&lt;/code&gt;

Une version améliorée de menuconfig toujours en ncurse.

http://pix.isalo.org/upload/thumb/1329911740.png

==== make gconfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make gconfig
&lt;/code&gt;

Très joli...

[[Fichier:Gconfig.jpeg|120px||make gconfig]]

==== make xonfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make xconfig
&lt;/code&gt;

Le plus agréable à utiliser.

[[Fichier:Xconfig.jpeg|120px||make xconfig]]

=== Nettoyage ===

Un petit nettoyage :
&lt;code bash&gt;
~/src/linux$ make-kpkg clean
&lt;/code&gt;

== La compilation ==

&lt;code bash&gt;
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.
Le nom peut être modifié en jouant sur le fichier /etc/kernel-pkg.conf afin de changer le «-10.00.Custom» en autre chose voire le supprimer. Il faut noter qu'il est *indispensable* que la chaine mise dans append-to-version contienne un chiffre faute de quoi la construction du paquet échouera (ça énerve après 1h de compilation). La date comme dans l'exemple donné est parfaite.

La compilation sur une machine puissante dure à peine 30 minutes. Cela peut dépasser plusieurs heures en fonction de votre configuration.

== En cas d'échec ==

Rien n'est perdu, et il est facile de revenir au début pour recommencer.

Tout d'abord &quot;nettoyer&quot; le répertoire /src/linux

&lt;code bash&gt;
$ cd ~/src/linux
~/src/linux$ make clean 
  CLEAN   .
  CLEAN   arch/x86/kernel/acpi/realmode
  CLEAN   arch/x86/kernel/cpu
  CLEAN   arch/x86/kernel
  CLEAN   arch/x86/vdso
  CLEAN   arch/x86/lib
  CLEAN   drivers/tty/vt
  CLEAN   drivers/video/logo
  CLEAN   firmware
  CLEAN   kernel
  CLEAN   lib
  CLEAN   security/selinux
  CLEAN   usr
  CLEAN   arch/x86/boot/compressed
  CLEAN   arch/x86/boot
  CLEAN   .tmp_versions
  CLEAN   vmlinux System.map .tmp_kallsyms1.o .tmp_kallsyms1.S .tmp_kallsyms2.o .tmp_kallsyms2.S .tmp_vmlinux1 .tmp_vmlinux2 .tmp_System.map
&lt;/code&gt;

Pour recompiler à nouveau votre noyau, pas de problèmes car le .config a gardé toutes vos options en mémoire, il suffit donc de modifier les options que vous voulez par la commande

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Vous préférerez peut-être recommencer depuis le début :

&lt;code bash&gt;
~/src/linux$ cp -vi /boot/config-`uname -r` .config
~/src/linux$ make localmodconfig
Etc.
&lt;/code&gt;

Il faudra ensuite faire:

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

Si vous n'avez pas besoin des &quot;headers&quot; du noyau :

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image
&lt;/code&gt;

=== En cas de problème d'initramfs ===

Vous pourriez rencontrer le problème suivant au cours de la compilation :

&lt;code&gt;
make[1]: entrant dans le répertoire « /home/gerard/src/linux-2.6.37-rc4 »
====== making target debian/stamp/install/linux-image-2.6.37-rc4-i486 [new prereqs: ]======
This is kernel package version 11.015.
echo &quot;The UTS Release version in include/linux/version.h&quot;; echo &quot; \&quot;\&quot; &quot;; echo &quot;does not match current version:&quot;; echo &quot; \&quot;2.6.37-rc4-i486\&quot; &quot;; echo &quot;Please correct this.&quot;; exit 2
The UTS Release version in include/linux/version.h
&quot;&quot;
does not match current version:
&quot;2.6.37-rc4-i486&quot;
Please correct this.
&lt;/code&gt;

Solution :

&gt; mettre à jour kernel-package;

Si ce n'est pas suffisant copier le contenu de /usr/share/kernel-package/examples/etc/kernel/postinst.d/ vers /etc/kernel/postinst.d/ (En particulier le script initramfs), puis :

 dpkg-reconfigure linux-image-2.6.3xxxxx

ou

 update-initramfs -c -k 2.6.3xxx

[http://www.debian-fr.org/nouveau-kernel-t30831.html Source]

== Installation ==

Vous vous retrouvez avec deux paquets (si vous avez aussi compilé les &quot;headers&quot;), qu'il ne reste plus qu'a installer

&lt;code bash&gt;
~/src/linux$ su -
mot de passe:
# dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

Et si vous avez besoin des &quot;headers&quot; :

&lt;code bash&gt;
# dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

&lt;code bash&gt;
# exit
~/src/linux$
&lt;/code&gt;

Si tout s'est bien passé vous devriez maintenant avoir une nouvelle entrée dans grub :

[[Fichier:Grub 2637.jpeg|120px||make gconfig]]

== Désinstallation ==

Si pour une raison ou une autre vous n'arrivez pas à démarrer sur votre nouveau noyau et que vous souhaitiez le désinstaller.
Redémarrez sur le dernier noyau opérationnel, puis :

&lt;code bash&gt;
laurent@Squeeze:~$ su -
Mot de passe : 
root@Squeeze:~# apt-get remove --purge linux-headers-2.6.37-rc2-20101121 linux-image-2.6.37-rc2-20101121
Lecture des listes de paquets... Fait
...
Les paquets suivants seront ENLEVÉS :
  linux-headers-2.6.37-rc2-20101121* linux-image-2.6.37-rc2-20101121*
0 mis à jour, 0 nouvellement installés, 2 à enlever et 0 non mis à jour.
Après cette opération, 71,3 Mo d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
...
Generating grub.cfg ...
...
root@Squeeze:~#
&lt;/code&gt;

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>4zjasrf09rsnw7vgfe7vpihq7buz7kd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4859</id>
      <parentid>3849</parentid>
      <timestamp>2013-01-01T14:27:44Z</timestamp>
      <contributor>
        <username>Ustilago</username>
        <id>250</id>
      </contributor>
      <minor/>
      <comment>Correction typo xonfig -&gt; xconfig</comment>
      <text xml:space="preserve" bytes="16554">Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

&lt;code bash&gt;
# apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot
&lt;/code&gt;

Dépendances pour menuconfig :
&lt;code bash&gt;
# apt-get install libncurses-dev
&lt;/code&gt;

Dépendances pour gconfig :
&lt;code bash&gt;
# apt-get install libglade2-dev
&lt;/code&gt;

Dépendances pour xconfig :
&lt;code bash&gt;
# apt-get install libqt3-mt-dev
&lt;/code&gt;

Il vous faut aussi un espace disque suffisant, l'archive compressée fait 90 Mo, l'archive décompressée des sources du noyau Linux fait dans les 400 Méga octets...
Comptez au minimum 2.5 Go si vous souhaitez compiler linux-image et linux-headers.
Assurez vous que les paquets nécessaires soient au niveau du kernel à installer ( pas trop anciens).

== Préparation et récupération des sources ==

=== Téléchargement des sources à partir de kernel.org ===

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
&lt;code bash&gt;
$ cd
&lt;/code&gt;

Créer le répertoire de travail :
&lt;code bash&gt;
$ mkdir src
$ cd src 
~/src$
&lt;/code&gt;

Télécharger les sources :

&lt;code bash&gt;
~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

=== Obtenir les sources à partir des dépôts ===

Vous avez aussi la possibilité d'obtenir les sources à partir des dépôts Debian.
Cas le plus simple : Les sources sont disponibles dans la branche dans laquelle vous êtes...

à ce jour (22 novembre 2010)

* Stable : [http://packages.debian.org/lenny/linux-source-2.6.26 linux-source-2.6.26]
* Unstable : [http://packages.debian.org/squeeze/linux-source-2.6.32 linux-source-2.6.32]
* Sid : [http://packages.debian.org/sid/linux-source-2.6.32 linux-source-2.6.32]
* Experimental (qui n'est pas à proprement parlé une branche) : [http://packages.debian.org/experimental/linux-source-2.6.36 linux-source-2.6.36]

Connaître les sources disponibles pour votre système :

&lt;code bash&gt;
$ aptitude search linux-source
v   linux-source                                             -                                                                    
p   linux-source-2.6                                         - Linux kernel source for Linux 2.6 (meta-package)                   
p   linux-source-2.6.26                                      - Linux kernel source for version 2.6.26 with Debian patches         
p   linux-source-2.6.27-git1-bling102008                     - Linux kernel source for version 2.6.27-git1-bling102008            
p   linux-source-2.6.29.1-090425                             - Linux kernel source for version 2.6.29.1-090425                    
p   linux-source-2.6.32                                      - Linux kernel source for version 2.6.32 with Debian patches         
i   linux-source-2.6.35                                      - Linux kernel source for version 2.6.35 with Debian patches         
i   linux-source-2.6.36                                      - Linux kernel source for version 2.6.36 with Debian patches
&lt;/code&gt;

Pour obtenir les sources, il suffit de se placer dans votre répertoire ~/src et de taper la commande :

&lt;code bash&gt;
$ cd
$ mkdir src
$ su -
mot de passe:
# apt-get install linux-source-2.6.36
# cp /usr/src/linux-source-2.6.36.tar.bz2 /home/votre_user/src
# chown votre_user:votre_user /home/votre_user/src/linux-source-2.6.36.tar.bz2
# exit
$
&lt;/code&gt;

Pour obtenir des sources qui réclament la modification de votre sources.list rendez-vous à [[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|cette page]] pour les explications. (Attention cette manipulation n'est pas sans risque et nécessite la mise en place d'un fichier &quot;préferences&quot;)

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

&lt;code bash&gt;
$ su -
# adduser laurent src
Adding user `laurent' to group `src' ...
Adding user laurent to group src
Done.
# exit
&lt;/code&gt;

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

&lt;code bash&gt;
~/src$ tar xvzf linux-2.6.37-rc2.tar.gz
ou
~/src$ tar xvjf linux-2.6.37-rc2.tar.bz2 (si vous avez téléchargé le bz2)
&lt;/code&gt;

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

&lt;code bash&gt;
~/src$ cd /usr/src
&lt;/code&gt;

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

&lt;code bash&gt;
/usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
/usr/src$ cd ~/src                                                        
~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
&lt;/code&gt;

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code bash&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code bash&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

&lt;code bash&gt;
~/src/linux$ cd ~/src
~/src$ cp -vi /boot/config-`uname -r` .config
~/src$ cd linux
~/src/linux$
&lt;/code&gt;

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte... Par exemple si vous utilisez des clef USB formatées en fat(16 ou 32) insérez-en une, faute de quoi l'option ne serait pas inclue dans le noyau.

La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

&lt;code bash&gt;
~/src/linux$ make localmodconfig
&lt;/code&gt;

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

&lt;code bash&gt;
~/src/linux$ yes &quot;&quot; | make localmodconfig
&lt;/code&gt;

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;.

&lt;code bash&gt;
~/src/linux$ make oldconfig
&lt;/code&gt;

Répondez aux questions. Les réponses par défaut sont généralement les bonnes.

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

&lt;code bash&gt;
~/src/linux$ make config
&lt;/code&gt;

Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg|120px||make config]]

==== make menuconfig ====

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg|120px||make menuconfig]]

==== make nconfig ====

&lt;code bash&gt;
~/src/linux$ make nconfig
&lt;/code&gt;

Une version améliorée de menuconfig toujours en ncurse.

http://pix.isalo.org/upload/thumb/1329911740.png

==== make gconfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make gconfig
&lt;/code&gt;

Très joli...

[[Fichier:Gconfig.jpeg|120px||make gconfig]]

==== make xconfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make xconfig
&lt;/code&gt;

Le plus agréable à utiliser.

[[Fichier:Xconfig.jpeg|120px||make xconfig]]

=== Nettoyage ===

Un petit nettoyage :
&lt;code bash&gt;
~/src/linux$ make-kpkg clean
&lt;/code&gt;

== La compilation ==

&lt;code bash&gt;
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.
Le nom peut être modifié en jouant sur le fichier /etc/kernel-pkg.conf afin de changer le «-10.00.Custom» en autre chose voire le supprimer. Il faut noter qu'il est *indispensable* que la chaine mise dans append-to-version contienne un chiffre faute de quoi la construction du paquet échouera (ça énerve après 1h de compilation). La date comme dans l'exemple donné est parfaite.

La compilation sur une machine puissante dure à peine 30 minutes. Cela peut dépasser plusieurs heures en fonction de votre configuration.

== En cas d'échec ==

Rien n'est perdu, et il est facile de revenir au début pour recommencer.

Tout d'abord &quot;nettoyer&quot; le répertoire /src/linux

&lt;code bash&gt;
$ cd ~/src/linux
~/src/linux$ make clean 
  CLEAN   .
  CLEAN   arch/x86/kernel/acpi/realmode
  CLEAN   arch/x86/kernel/cpu
  CLEAN   arch/x86/kernel
  CLEAN   arch/x86/vdso
  CLEAN   arch/x86/lib
  CLEAN   drivers/tty/vt
  CLEAN   drivers/video/logo
  CLEAN   firmware
  CLEAN   kernel
  CLEAN   lib
  CLEAN   security/selinux
  CLEAN   usr
  CLEAN   arch/x86/boot/compressed
  CLEAN   arch/x86/boot
  CLEAN   .tmp_versions
  CLEAN   vmlinux System.map .tmp_kallsyms1.o .tmp_kallsyms1.S .tmp_kallsyms2.o .tmp_kallsyms2.S .tmp_vmlinux1 .tmp_vmlinux2 .tmp_System.map
&lt;/code&gt;

Pour recompiler à nouveau votre noyau, pas de problèmes car le .config a gardé toutes vos options en mémoire, il suffit donc de modifier les options que vous voulez par la commande

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Vous préférerez peut-être recommencer depuis le début :

&lt;code bash&gt;
~/src/linux$ cp -vi /boot/config-`uname -r` .config
~/src/linux$ make localmodconfig
Etc.
&lt;/code&gt;

Il faudra ensuite faire:

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

Si vous n'avez pas besoin des &quot;headers&quot; du noyau :

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image
&lt;/code&gt;

=== En cas de problème d'initramfs ===

Vous pourriez rencontrer le problème suivant au cours de la compilation :

&lt;code&gt;
make[1]: entrant dans le répertoire « /home/gerard/src/linux-2.6.37-rc4 »
====== making target debian/stamp/install/linux-image-2.6.37-rc4-i486 [new prereqs: ]======
This is kernel package version 11.015.
echo &quot;The UTS Release version in include/linux/version.h&quot;; echo &quot; \&quot;\&quot; &quot;; echo &quot;does not match current version:&quot;; echo &quot; \&quot;2.6.37-rc4-i486\&quot; &quot;; echo &quot;Please correct this.&quot;; exit 2
The UTS Release version in include/linux/version.h
&quot;&quot;
does not match current version:
&quot;2.6.37-rc4-i486&quot;
Please correct this.
&lt;/code&gt;

Solution :

&gt; mettre à jour kernel-package;

Si ce n'est pas suffisant copier le contenu de /usr/share/kernel-package/examples/etc/kernel/postinst.d/ vers /etc/kernel/postinst.d/ (En particulier le script initramfs), puis :

 dpkg-reconfigure linux-image-2.6.3xxxxx

ou

 update-initramfs -c -k 2.6.3xxx

[http://www.debian-fr.org/nouveau-kernel-t30831.html Source]

== Installation ==

Vous vous retrouvez avec deux paquets (si vous avez aussi compilé les &quot;headers&quot;), qu'il ne reste plus qu'a installer

&lt;code bash&gt;
~/src/linux$ su -
mot de passe:
# dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

Et si vous avez besoin des &quot;headers&quot; :

&lt;code bash&gt;
# dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

&lt;code bash&gt;
# exit
~/src/linux$
&lt;/code&gt;

Si tout s'est bien passé vous devriez maintenant avoir une nouvelle entrée dans grub :

[[Fichier:Grub 2637.jpeg|120px||make gconfig]]

== Désinstallation ==

Si pour une raison ou une autre vous n'arrivez pas à démarrer sur votre nouveau noyau et que vous souhaitiez le désinstaller.
Redémarrez sur le dernier noyau opérationnel, puis :

&lt;code bash&gt;
laurent@Squeeze:~$ su -
Mot de passe : 
root@Squeeze:~# apt-get remove --purge linux-headers-2.6.37-rc2-20101121 linux-image-2.6.37-rc2-20101121
Lecture des listes de paquets... Fait
...
Les paquets suivants seront ENLEVÉS :
  linux-headers-2.6.37-rc2-20101121* linux-image-2.6.37-rc2-20101121*
0 mis à jour, 0 nouvellement installés, 2 à enlever et 0 non mis à jour.
Après cette opération, 71,3 Mo d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
...
Generating grub.cfg ...
...
root@Squeeze:~#
&lt;/code&gt;

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>sk811hl42q32zc4dtzw6x3s17k6yg6d</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4860</id>
      <parentid>4859</parentid>
      <timestamp>2013-01-01T14:38:47Z</timestamp>
      <contributor>
        <username>Ustilago</username>
        <id>250</id>
      </contributor>
      <comment>ajout option -j pour tirer parti des processeurs multi-cœurs</comment>
      <text xml:space="preserve" bytes="16857">Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

&lt;code bash&gt;
# apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot
&lt;/code&gt;

Dépendances pour menuconfig :
&lt;code bash&gt;
# apt-get install libncurses-dev
&lt;/code&gt;

Dépendances pour gconfig :
&lt;code bash&gt;
# apt-get install libglade2-dev
&lt;/code&gt;

Dépendances pour xconfig :
&lt;code bash&gt;
# apt-get install libqt3-mt-dev
&lt;/code&gt;

Il vous faut aussi un espace disque suffisant, l'archive compressée fait 90 Mo, l'archive décompressée des sources du noyau Linux fait dans les 400 Méga octets...
Comptez au minimum 2.5 Go si vous souhaitez compiler linux-image et linux-headers.
Assurez vous que les paquets nécessaires soient au niveau du kernel à installer ( pas trop anciens).

== Préparation et récupération des sources ==

=== Téléchargement des sources à partir de kernel.org ===

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
&lt;code bash&gt;
$ cd
&lt;/code&gt;

Créer le répertoire de travail :
&lt;code bash&gt;
$ mkdir src
$ cd src 
~/src$
&lt;/code&gt;

Télécharger les sources :

&lt;code bash&gt;
~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

=== Obtenir les sources à partir des dépôts ===

Vous avez aussi la possibilité d'obtenir les sources à partir des dépôts Debian.
Cas le plus simple : Les sources sont disponibles dans la branche dans laquelle vous êtes...

à ce jour (22 novembre 2010)

* Stable : [http://packages.debian.org/lenny/linux-source-2.6.26 linux-source-2.6.26]
* Unstable : [http://packages.debian.org/squeeze/linux-source-2.6.32 linux-source-2.6.32]
* Sid : [http://packages.debian.org/sid/linux-source-2.6.32 linux-source-2.6.32]
* Experimental (qui n'est pas à proprement parlé une branche) : [http://packages.debian.org/experimental/linux-source-2.6.36 linux-source-2.6.36]

Connaître les sources disponibles pour votre système :

&lt;code bash&gt;
$ aptitude search linux-source
v   linux-source                                             -                                                                    
p   linux-source-2.6                                         - Linux kernel source for Linux 2.6 (meta-package)                   
p   linux-source-2.6.26                                      - Linux kernel source for version 2.6.26 with Debian patches         
p   linux-source-2.6.27-git1-bling102008                     - Linux kernel source for version 2.6.27-git1-bling102008            
p   linux-source-2.6.29.1-090425                             - Linux kernel source for version 2.6.29.1-090425                    
p   linux-source-2.6.32                                      - Linux kernel source for version 2.6.32 with Debian patches         
i   linux-source-2.6.35                                      - Linux kernel source for version 2.6.35 with Debian patches         
i   linux-source-2.6.36                                      - Linux kernel source for version 2.6.36 with Debian patches
&lt;/code&gt;

Pour obtenir les sources, il suffit de se placer dans votre répertoire ~/src et de taper la commande :

&lt;code bash&gt;
$ cd
$ mkdir src
$ su -
mot de passe:
# apt-get install linux-source-2.6.36
# cp /usr/src/linux-source-2.6.36.tar.bz2 /home/votre_user/src
# chown votre_user:votre_user /home/votre_user/src/linux-source-2.6.36.tar.bz2
# exit
$
&lt;/code&gt;

Pour obtenir des sources qui réclament la modification de votre sources.list rendez-vous à [[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|cette page]] pour les explications. (Attention cette manipulation n'est pas sans risque et nécessite la mise en place d'un fichier &quot;préferences&quot;)

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

&lt;code bash&gt;
$ su -
# adduser laurent src
Adding user `laurent' to group `src' ...
Adding user laurent to group src
Done.
# exit
&lt;/code&gt;

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

&lt;code bash&gt;
~/src$ tar xvzf linux-2.6.37-rc2.tar.gz
ou
~/src$ tar xvjf linux-2.6.37-rc2.tar.bz2 (si vous avez téléchargé le bz2)
&lt;/code&gt;

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

&lt;code bash&gt;
~/src$ cd /usr/src
&lt;/code&gt;

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

&lt;code bash&gt;
/usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
/usr/src$ cd ~/src                                                        
~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
&lt;/code&gt;

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code bash&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code bash&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

&lt;code bash&gt;
~/src/linux$ cd ~/src
~/src$ cp -vi /boot/config-`uname -r` .config
~/src$ cd linux
~/src/linux$
&lt;/code&gt;

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte... Par exemple si vous utilisez des clef USB formatées en fat(16 ou 32) insérez-en une, faute de quoi l'option ne serait pas inclue dans le noyau.

La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

&lt;code bash&gt;
~/src/linux$ make localmodconfig
&lt;/code&gt;

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

&lt;code bash&gt;
~/src/linux$ yes &quot;&quot; | make localmodconfig
&lt;/code&gt;

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;.

&lt;code bash&gt;
~/src/linux$ make oldconfig
&lt;/code&gt;

Répondez aux questions. Les réponses par défaut sont généralement les bonnes.

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

&lt;code bash&gt;
~/src/linux$ make config
&lt;/code&gt;

Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg|120px||make config]]

==== make menuconfig ====

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg|120px||make menuconfig]]

==== make nconfig ====

&lt;code bash&gt;
~/src/linux$ make nconfig
&lt;/code&gt;

Une version améliorée de menuconfig toujours en ncurse.

http://pix.isalo.org/upload/thumb/1329911740.png

==== make gconfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make gconfig
&lt;/code&gt;

Très joli...

[[Fichier:Gconfig.jpeg|120px||make gconfig]]

==== make xconfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make xconfig
&lt;/code&gt;

Le plus agréable à utiliser.

[[Fichier:Xconfig.jpeg|120px||make xconfig]]

=== Nettoyage ===

Un petit nettoyage :
&lt;code bash&gt;
~/src/linux$ make-kpkg clean
&lt;/code&gt;

== La compilation ==

&lt;code bash&gt;
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.
Le nom peut être modifié en jouant sur le fichier /etc/kernel-pkg.conf afin de changer le «-10.00.Custom» en autre chose voire le supprimer. Il faut noter qu'il est *indispensable* que la chaine mise dans append-to-version contienne un chiffre faute de quoi la construction du paquet échouera (ça énerve après 1h de compilation). La date comme dans l'exemple donné est parfaite.

La compilation sur une machine puissante dure à peine 30 minutes. Cela peut dépasser plusieurs heures en fonction de votre configuration.

Vous pouvez également tirer parti des processeurs multi-cœurs / multi-thread en utilisant l'option -j de make-kpkg (tout comme avec make), suivi du nombre de processus maximum à lancer. Ainsi sur un core i5, avec 4 cœurs, et donc l'option -j 4, on passe de 90 minutes à 40 minutes de compilation.

== En cas d'échec ==

Rien n'est perdu, et il est facile de revenir au début pour recommencer.

Tout d'abord &quot;nettoyer&quot; le répertoire /src/linux

&lt;code bash&gt;
$ cd ~/src/linux
~/src/linux$ make clean 
  CLEAN   .
  CLEAN   arch/x86/kernel/acpi/realmode
  CLEAN   arch/x86/kernel/cpu
  CLEAN   arch/x86/kernel
  CLEAN   arch/x86/vdso
  CLEAN   arch/x86/lib
  CLEAN   drivers/tty/vt
  CLEAN   drivers/video/logo
  CLEAN   firmware
  CLEAN   kernel
  CLEAN   lib
  CLEAN   security/selinux
  CLEAN   usr
  CLEAN   arch/x86/boot/compressed
  CLEAN   arch/x86/boot
  CLEAN   .tmp_versions
  CLEAN   vmlinux System.map .tmp_kallsyms1.o .tmp_kallsyms1.S .tmp_kallsyms2.o .tmp_kallsyms2.S .tmp_vmlinux1 .tmp_vmlinux2 .tmp_System.map
&lt;/code&gt;

Pour recompiler à nouveau votre noyau, pas de problèmes car le .config a gardé toutes vos options en mémoire, il suffit donc de modifier les options que vous voulez par la commande

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Vous préférerez peut-être recommencer depuis le début :

&lt;code bash&gt;
~/src/linux$ cp -vi /boot/config-`uname -r` .config
~/src/linux$ make localmodconfig
Etc.
&lt;/code&gt;

Il faudra ensuite faire:

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

Si vous n'avez pas besoin des &quot;headers&quot; du noyau :

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image
&lt;/code&gt;

=== En cas de problème d'initramfs ===

Vous pourriez rencontrer le problème suivant au cours de la compilation :

&lt;code&gt;
make[1]: entrant dans le répertoire « /home/gerard/src/linux-2.6.37-rc4 »
====== making target debian/stamp/install/linux-image-2.6.37-rc4-i486 [new prereqs: ]======
This is kernel package version 11.015.
echo &quot;The UTS Release version in include/linux/version.h&quot;; echo &quot; \&quot;\&quot; &quot;; echo &quot;does not match current version:&quot;; echo &quot; \&quot;2.6.37-rc4-i486\&quot; &quot;; echo &quot;Please correct this.&quot;; exit 2
The UTS Release version in include/linux/version.h
&quot;&quot;
does not match current version:
&quot;2.6.37-rc4-i486&quot;
Please correct this.
&lt;/code&gt;

Solution :

&gt; mettre à jour kernel-package;

Si ce n'est pas suffisant copier le contenu de /usr/share/kernel-package/examples/etc/kernel/postinst.d/ vers /etc/kernel/postinst.d/ (En particulier le script initramfs), puis :

 dpkg-reconfigure linux-image-2.6.3xxxxx

ou

 update-initramfs -c -k 2.6.3xxx

[http://www.debian-fr.org/nouveau-kernel-t30831.html Source]

== Installation ==

Vous vous retrouvez avec deux paquets (si vous avez aussi compilé les &quot;headers&quot;), qu'il ne reste plus qu'a installer

&lt;code bash&gt;
~/src/linux$ su -
mot de passe:
# dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

Et si vous avez besoin des &quot;headers&quot; :

&lt;code bash&gt;
# dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

&lt;code bash&gt;
# exit
~/src/linux$
&lt;/code&gt;

Si tout s'est bien passé vous devriez maintenant avoir une nouvelle entrée dans grub :

[[Fichier:Grub 2637.jpeg|120px||make gconfig]]

== Désinstallation ==

Si pour une raison ou une autre vous n'arrivez pas à démarrer sur votre nouveau noyau et que vous souhaitiez le désinstaller.
Redémarrez sur le dernier noyau opérationnel, puis :

&lt;code bash&gt;
laurent@Squeeze:~$ su -
Mot de passe : 
root@Squeeze:~# apt-get remove --purge linux-headers-2.6.37-rc2-20101121 linux-image-2.6.37-rc2-20101121
Lecture des listes de paquets... Fait
...
Les paquets suivants seront ENLEVÉS :
  linux-headers-2.6.37-rc2-20101121* linux-image-2.6.37-rc2-20101121*
0 mis à jour, 0 nouvellement installés, 2 à enlever et 0 non mis à jour.
Après cette opération, 71,3 Mo d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
...
Generating grub.cfg ...
...
root@Squeeze:~#
&lt;/code&gt;

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>rhu0ty3u6uhjlip5k5y7113riwlewol</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4875</id>
      <parentid>4860</parentid>
      <timestamp>2013-01-06T18:40:57Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* La compilation */</comment>
      <text xml:space="preserve" bytes="17025">Nous allons détailler ici les commandes à passer pour compiler un noyau à partir des sources, que vous aurez préalablement patchées...

Compiler son noyau n'est ni compliqué, il suffit de suivre la liste des commandes, ni risqué... En cas de problème, il vous suffira de revenir sur le dernier noyau fonctionnel.

Exemple avec le noyau 2.6.37-rc2

== Prérequis ==

Installer les programmes nécessaires à la compilation :

&lt;code bash&gt;
# apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot
&lt;/code&gt;

Dépendances pour menuconfig :
&lt;code bash&gt;
# apt-get install libncurses-dev
&lt;/code&gt;

Dépendances pour gconfig :
&lt;code bash&gt;
# apt-get install libglade2-dev
&lt;/code&gt;

Dépendances pour xconfig :
&lt;code bash&gt;
# apt-get install libqt3-mt-dev
&lt;/code&gt;

Il vous faut aussi un espace disque suffisant, l'archive compressée fait 90 Mo, l'archive décompressée des sources du noyau Linux fait dans les 400 Méga octets...
Comptez au minimum 2.5 Go si vous souhaitez compiler linux-image et linux-headers.
Assurez vous que les paquets nécessaires soient au niveau du kernel à installer ( pas trop anciens).

== Préparation et récupération des sources ==

=== Téléchargement des sources à partir de kernel.org ===

Tout le travail se fait dans son répertoire personnel, avec des droits restreints, inutile de compiler en étant root...

Aller dans son répertoire personnel :
&lt;code bash&gt;
$ cd
&lt;/code&gt;

Créer le répertoire de travail :
&lt;code bash&gt;
$ mkdir src
$ cd src 
~/src$
&lt;/code&gt;

Télécharger les sources :

&lt;code bash&gt;
~/src$ wget -c http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
--2010-11-19 11:13:11--  http://ftp.de.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.37-rc2.tar.gz
Résolution de ftp.de.kernel.org... 62.201.161.85, 129.143.116.10, 137.226.34.42, ...
Connexion vers ftp.de.kernel.org|62.201.161.85|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 92388836 (88M) [application/octet-stream]
Sauvegarde en : «linux-2.6.37-rc2.tar.gz»

100%[=======================================================================================&gt;] 92 388 836  87,5K/s   ds 18m 38s 

2010-11-19 11:31:49 (80,7 KB/s) - «linux-2.6.37-rc2.tar.gz» sauvegardé [92388836/92388836]
&lt;/code&gt;

=== Obtenir les sources à partir des dépôts ===

Vous avez aussi la possibilité d'obtenir les sources à partir des dépôts Debian.
Cas le plus simple : Les sources sont disponibles dans la branche dans laquelle vous êtes...

à ce jour (22 novembre 2010)

* Stable : [http://packages.debian.org/lenny/linux-source-2.6.26 linux-source-2.6.26]
* Unstable : [http://packages.debian.org/squeeze/linux-source-2.6.32 linux-source-2.6.32]
* Sid : [http://packages.debian.org/sid/linux-source-2.6.32 linux-source-2.6.32]
* Experimental (qui n'est pas à proprement parlé une branche) : [http://packages.debian.org/experimental/linux-source-2.6.36 linux-source-2.6.36]

Connaître les sources disponibles pour votre système :

&lt;code bash&gt;
$ aptitude search linux-source
v   linux-source                                             -                                                                    
p   linux-source-2.6                                         - Linux kernel source for Linux 2.6 (meta-package)                   
p   linux-source-2.6.26                                      - Linux kernel source for version 2.6.26 with Debian patches         
p   linux-source-2.6.27-git1-bling102008                     - Linux kernel source for version 2.6.27-git1-bling102008            
p   linux-source-2.6.29.1-090425                             - Linux kernel source for version 2.6.29.1-090425                    
p   linux-source-2.6.32                                      - Linux kernel source for version 2.6.32 with Debian patches         
i   linux-source-2.6.35                                      - Linux kernel source for version 2.6.35 with Debian patches         
i   linux-source-2.6.36                                      - Linux kernel source for version 2.6.36 with Debian patches
&lt;/code&gt;

Pour obtenir les sources, il suffit de se placer dans votre répertoire ~/src et de taper la commande :

&lt;code bash&gt;
$ cd
$ mkdir src
$ su -
mot de passe:
# apt-get install linux-source-2.6.36
# cp /usr/src/linux-source-2.6.36.tar.bz2 /home/votre_user/src
# chown votre_user:votre_user /home/votre_user/src/linux-source-2.6.36.tar.bz2
# exit
$
&lt;/code&gt;

Pour obtenir des sources qui réclament la modification de votre sources.list rendez-vous à [[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|cette page]] pour les explications. (Attention cette manipulation n'est pas sans risque et nécessite la mise en place d'un fichier &quot;préferences&quot;)

== Préparer la compilation du noyau ==

Une fois les paquets installés il va falloir décompresser les sources de votre futur noyau. Il est conseillé de déléguer les tâches de configuration du noyau à un utilisateur.
Pour cela, l'utilisateur doit appartenir au groupe src. Pour ajouter par exemple l'utilisateur laurent au groupe src :

&lt;code bash&gt;
$ su -
# adduser laurent src
Adding user `laurent' to group `src' ...
Adding user laurent to group src
Done.
# exit
&lt;/code&gt;

Ensuite il faut décompresser les sources de votre noyau.

On va décompresser les sources du noyau dans le répertoire de l'utilisateur et non dans le répertoire /usr/src comme trop de personnes ont tendance à le faire.

C'est Linus Torwarld en personne qui recommande de traiter les sources du noyau dans le répertoire de l'utilisateur !

[http://linuxmafia.com/faq/Kernel/usr-src-linux-symlink.html From: Linus Torvalds (torvalds@transmeta.com)]

::I would suggest that people who compile new kernels should:
::* NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it.
::* compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to install the kernel, but that's different.
::* not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the &quot;linux/include/asm&quot; symlink that is only used for the internal kernel compile itself).
::'''And yes, this is what I do'''


Décompresser et dépaqueter les sources :

&lt;code bash&gt;
~/src$ tar xvzf linux-2.6.37-rc2.tar.gz
ou
~/src$ tar xvjf linux-2.6.37-rc2.tar.bz2 (si vous avez téléchargé le bz2)
&lt;/code&gt;

On ajoute enfin le lien symbolique linux qui pointe vers le répertoire de vos sources.
Ainsi suivant la version de nos sources on sait qu'elles se trouveront toujours dans le répertoire ~/src/linux :

&lt;code bash&gt;
~/src$ cd /usr/src
&lt;/code&gt;

Remarque: Il est possible que le lien symbolique existe déjà, auquel cas il faudra l'effacer...

&lt;code bash&gt;
/usr/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
/usr/src$ cd ~/src                                                        
~/src$ sudo ln -s ~/src/linux-2.6.37-rc2 linux
&lt;/code&gt;

== Patcher les sources ==

Cette étape n'est absolument pas nécessaire, elle se trouve ici à titre d'exemple.

Dans cet exemple nous utiliserons un patch destiné au noyau 2.6.37 

Récupérons le patch
&lt;code bash&gt;$ cd ~/src
wget http://imanweb.free.fr/uploaded/autogroup.patch
--2010-11-19 09:15:31--  http://imanweb.free.fr/uploaded/autogroup.patch
Résolution de imanweb.free.fr... 212.27.63.165
Connexion vers imanweb.free.fr|212.27.63.165|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 10992 (11K) [text/plain]
Sauvegarde en : «autogroup.patch»
 
100%[============================================================================================&gt;] 10 992      20,7K/s   ds 0,5s    
 
2010-11-19 09:15:32 (20,7 KB/s) - «autogroup.patch» sauvegardé [10992/10992]&lt;/code&gt;

Appliquons le patch :

&lt;code bash&gt;~/src$ cd linux &amp;&amp; patch -p1 &lt; ../autogroup.patch
patching file include/linux/sched.h
Hunk #3 succeeded at 1935 (offset -1 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 616 (offset 10 lines).
Hunk #3 succeeded at 2020 (offset 10 lines).
Hunk #4 succeeded at 7967 (offset -17 lines).
Hunk #5 succeeded at 8497 (offset -17 lines).
Hunk #6 succeeded at 8522 (offset -17 lines).
patching file kernel/fork.c
patching file drivers/tty/tty_io.c
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
patching file init/Kconfig
patching file Documentation/kernel-parameters.txt
~/src/linux$
&lt;/code&gt;

== Récupérer et peaufiner sa dernière configuration ==

les quotes entourant uname -r sont des quotes inversés (Alt Gr + 7)

&lt;code bash&gt;
~/src/linux$ cd ~/src
~/src$ cp -vi /boot/config-`uname -r` .config
~/src$ cd linux
~/src/linux$
&lt;/code&gt;

Vous allez le voir dans la commande suivante: un nouveau menu a été ajouté, make localmodconfig.

Cette nouvelle commande va utiliser lsmod pour lister tous les modules actuellement en service elle lit les Makefiles, satisfait les dépendances, et crée une configuration purgée de tous les modules inutiles.
Attention, il faut donc activer et brancher tous vos matériel, faute de quoi ils ne seraient pas pris en compte... Par exemple si vous utilisez des clef USB formatées en fat(16 ou 32) insérez-en une, faute de quoi l'option ne serait pas inclue dans le noyau.

La commande va vous poser beaucoup de question, j'ai répondu à chaque fois par &quot;entrée&quot; choix par défaut.

&lt;code bash&gt;
~/src/linux$ make localmodconfig
&lt;/code&gt;

Si vous ne souhaitez pas passer en revue toutes les nouvelles options, préférez la commande :

&lt;code bash&gt;
~/src/linux$ yes &quot;&quot; | make localmodconfig
&lt;/code&gt;

Il est possible (avec cette dernière commande) qu'il vous propose alors de mettre à jour la configuration avec &quot;make oldconfig&quot;.

&lt;code bash&gt;
~/src/linux$ make oldconfig
&lt;/code&gt;

Répondez aux questions. Les réponses par défaut sont généralement les bonnes.

=== Ajustement de la configuration et choix des options personnelles ===

Un dernier tour dans votre configuration pour une dernière vérification et des réglages :

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Il existe plusieurs interface pour configurer votre noyau, j'ai utilisé un interface console très austère mais très pratique (menuconfig). Pour lancer cette interface vous devez vous placer dans le répertoire qui contient les sources de votre futur noyau.

==== make config ====

&lt;code bash&gt;
~/src/linux$ make config
&lt;/code&gt;

Très spartiate, très peu pratique, il faut faire son choix option par option...

[[Fichier:Config.jpeg|120px||make config]]

==== make menuconfig ====

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Nettement plus pratique, menu clair et navigable. Certainement le meilleur choix .

[[Fichier:Makemenuconfig.jpeg|120px||make menuconfig]]

==== make nconfig ====

&lt;code bash&gt;
~/src/linux$ make nconfig
&lt;/code&gt;

Une version améliorée de menuconfig toujours en ncurse.

http://pix.isalo.org/upload/thumb/1329911740.png

==== make gconfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make gconfig
&lt;/code&gt;

Très joli...

[[Fichier:Gconfig.jpeg|120px||make gconfig]]

==== make xconfig ====

&lt;code bash&gt;
~/src/linux-2.6.37-rc2$ make xconfig
&lt;/code&gt;

Le plus agréable à utiliser.

[[Fichier:Xconfig.jpeg|120px||make xconfig]]

=== Nettoyage ===

Un petit nettoyage :
&lt;code bash&gt;
~/src/linux$ make-kpkg clean
&lt;/code&gt;

== La compilation ==

&lt;code bash&gt;
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

La commande ci-dessus vous sortira une image nommée &quot;linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb&quot;
La commande fakeroot permet de simuler l'environnement root au programme make-kpkg pour que ce dernier puisse générer les paquets de votre futur noyau. Cela à l'avantage d'éviter de faire la compilation en tant que root.
Le nom peut être modifié en jouant sur le fichier /etc/kernel-pkg.conf afin de changer le «-10.00.Custom» en autre chose voire le supprimer. Il faut noter qu'il est *indispensable* que la chaine mise dans append-to-version contienne un chiffre faute de quoi la construction du paquet échouera (ça énerve après 1h de compilation). La date comme dans l'exemple donné est parfaite.

La compilation sur une machine puissante dure à peine 30 minutes. Cela peut dépasser plusieurs heures en fonction de votre configuration.

Vous pouvez également tirer parti des processeurs multi-cœurs / multi-thread en utilisant l'option -j de make-kpkg (tout comme avec make), suivi du nombre de processus maximum à lancer. Ainsi sur un core i5, avec 4 cœurs, et donc l'option -j 4, on passe de 90 minutes à 40 minutes de compilation.
Voir une intéressante discussion sur la manière d'optimiser les temps de compilation sur :
https://www.debian-fr.org/install-du-kernel-3-6-3-sous-squeeze-t40918.html

== En cas d'échec ==

Rien n'est perdu, et il est facile de revenir au début pour recommencer.

Tout d'abord &quot;nettoyer&quot; le répertoire /src/linux

&lt;code bash&gt;
$ cd ~/src/linux
~/src/linux$ make clean 
  CLEAN   .
  CLEAN   arch/x86/kernel/acpi/realmode
  CLEAN   arch/x86/kernel/cpu
  CLEAN   arch/x86/kernel
  CLEAN   arch/x86/vdso
  CLEAN   arch/x86/lib
  CLEAN   drivers/tty/vt
  CLEAN   drivers/video/logo
  CLEAN   firmware
  CLEAN   kernel
  CLEAN   lib
  CLEAN   security/selinux
  CLEAN   usr
  CLEAN   arch/x86/boot/compressed
  CLEAN   arch/x86/boot
  CLEAN   .tmp_versions
  CLEAN   vmlinux System.map .tmp_kallsyms1.o .tmp_kallsyms1.S .tmp_kallsyms2.o .tmp_kallsyms2.S .tmp_vmlinux1 .tmp_vmlinux2 .tmp_System.map
&lt;/code&gt;

Pour recompiler à nouveau votre noyau, pas de problèmes car le .config a gardé toutes vos options en mémoire, il suffit donc de modifier les options que vous voulez par la commande

&lt;code bash&gt;
~/src/linux$ make menuconfig
&lt;/code&gt;

Vous préférerez peut-être recommencer depuis le début :

&lt;code bash&gt;
~/src/linux$ cp -vi /boot/config-`uname -r` .config
~/src/linux$ make localmodconfig
Etc.
&lt;/code&gt;

Il faudra ensuite faire:

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image kernel-headers
&lt;/code&gt;

Si vous n'avez pas besoin des &quot;headers&quot; du noyau :

&lt;code bash&gt;
~/src/linux$ make-kpkg clean
~/src/linux$ fakeroot make-kpkg --initrd --append-to-version=-$(date '+%Y%m%d') kernel-image
&lt;/code&gt;

=== En cas de problème d'initramfs ===

Vous pourriez rencontrer le problème suivant au cours de la compilation :

&lt;code&gt;
make[1]: entrant dans le répertoire « /home/gerard/src/linux-2.6.37-rc4 »
====== making target debian/stamp/install/linux-image-2.6.37-rc4-i486 [new prereqs: ]======
This is kernel package version 11.015.
echo &quot;The UTS Release version in include/linux/version.h&quot;; echo &quot; \&quot;\&quot; &quot;; echo &quot;does not match current version:&quot;; echo &quot; \&quot;2.6.37-rc4-i486\&quot; &quot;; echo &quot;Please correct this.&quot;; exit 2
The UTS Release version in include/linux/version.h
&quot;&quot;
does not match current version:
&quot;2.6.37-rc4-i486&quot;
Please correct this.
&lt;/code&gt;

Solution :

&gt; mettre à jour kernel-package;

Si ce n'est pas suffisant copier le contenu de /usr/share/kernel-package/examples/etc/kernel/postinst.d/ vers /etc/kernel/postinst.d/ (En particulier le script initramfs), puis :

 dpkg-reconfigure linux-image-2.6.3xxxxx

ou

 update-initramfs -c -k 2.6.3xxx

[http://www.debian-fr.org/nouveau-kernel-t30831.html Source]

== Installation ==

Vous vous retrouvez avec deux paquets (si vous avez aussi compilé les &quot;headers&quot;), qu'il ne reste plus qu'a installer

&lt;code bash&gt;
~/src/linux$ su -
mot de passe:
# dpkg -i linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

Et si vous avez besoin des &quot;headers&quot; :

&lt;code bash&gt;
# dpkg -i linux-headers-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb linux-image-2.6.37-rc2-20101119_2.6.37-rc2-20101119-10.00.Custom_amd64.deb
&lt;/code&gt;

&lt;code bash&gt;
# exit
~/src/linux$
&lt;/code&gt;

Si tout s'est bien passé vous devriez maintenant avoir une nouvelle entrée dans grub :

[[Fichier:Grub 2637.jpeg|120px||make gconfig]]

== Désinstallation ==

Si pour une raison ou une autre vous n'arrivez pas à démarrer sur votre nouveau noyau et que vous souhaitiez le désinstaller.
Redémarrez sur le dernier noyau opérationnel, puis :

&lt;code bash&gt;
laurent@Squeeze:~$ su -
Mot de passe : 
root@Squeeze:~# apt-get remove --purge linux-headers-2.6.37-rc2-20101121 linux-image-2.6.37-rc2-20101121
Lecture des listes de paquets... Fait
...
Les paquets suivants seront ENLEVÉS :
  linux-headers-2.6.37-rc2-20101121* linux-image-2.6.37-rc2-20101121*
0 mis à jour, 0 nouvellement installés, 2 à enlever et 0 non mis à jour.
Après cette opération, 71,3 Mo d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
...
Generating grub.cfg ...
...
root@Squeeze:~#
&lt;/code&gt;

[[Utilisateur:Lol|Lol]] 20 novembre 2010 à 11:02 (EAT)
[[Category:Kernel (Noyau)]]</text>
      <sha1>0gov2a841m5ney3lkjdkzdpooik5uqk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Compiler linux-kbuild</title>
    <ns>0</ns>
    <id>510</id>
    <revision>
      <id>2015</id>
      <timestamp>2010-08-21T12:28:21Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « Vous souhaitez installer le dernier noyaux Linux sur votre machine mais linux-kbuild n'est pas encore dans les dépôts ?   $ apt-cache policy linux-kbuild-2.6.35  linux-kbui... »</comment>
      <text xml:space="preserve" bytes="1407">Vous souhaitez installer le dernier noyaux Linux sur votre machine mais linux-kbuild n'est pas encore dans les dépôts ?

 $ apt-cache policy linux-kbuild-2.6.35
 linux-kbuild-2.6.35:
   Installé : 2.6.35-1~experimental.3
   Candidat : 2.6.35-1~experimental.3
  Table de version :
  *** 2.6.35-1~experimental.3 0
         100 /var/lib/dpkg/status


Voici la liste des commandes pour le compiler vous-même :
Les commandes ci-dessous sont pour le noyau 2.6.35 (pour d'autres noyaux, il suffit de remplacer 2.6.35 par le n° du noyau qui vous intéresse)

 # apt-get install subversion

 $ mkdir /linux-kbuild
 $ cd linux-kbuild

 $ svn co svn://svn.debian.org/kernel/dists/trunk/linux-kbuild-2.6

 $ wget http://ftp.de.kernel.org/pub/linux/kernel/v2.6/linux-2.6.35.tar.bz2    

 $ cd linux-kbuild-2.6

 $ ./debian/bin/genorig.py ../linux-2.6.35.tar.bz2

 $ cd ..

 $ tar -xzf orig/linux-kbuild-2.6_2.6.35.orig.tar.gz

 $ cd linux-kbuild-2.6-2.6.35

 $ cp -a ../linux-kbuild-2.6/* ./

 $ ./debian/bin/gencontrol.py

 # apt-get install devscripts

 $ dch -i

 # make -f debian/rules clean

 # dpkg-checkbuilddeps

 $ cp -av ../orig/linux-kbuild-2.6_2.6.35.orig.tar.gz ../

 # dpkg-buildpackage -us -uc

 $ cd ..

 # dpkg -i linux-kbuild-2.6.35_2.6.35-1\~experimental.3_amd64.deb

Les commande ci-dessus sont tirées de cette page : [http://wiki.debian.org/HowToRebuildAnOfficialDebianKernelPackage Source]</text>
      <sha1>0kfv56m2umpnnkhd3idzeh9ei03lprf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2016</id>
      <parentid>2015</parentid>
      <timestamp>2010-08-21T12:28:38Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1461">Vous souhaitez installer le dernier noyaux Linux sur votre machine mais linux-kbuild n'est pas encore dans les dépôts ?

 $ apt-cache policy linux-kbuild-2.6.35
 linux-kbuild-2.6.35:
   Installé : 2.6.35-1~experimental.3
   Candidat : 2.6.35-1~experimental.3
  Table de version :
  *** 2.6.35-1~experimental.3 0
         100 /var/lib/dpkg/status


Voici la liste des commandes pour le compiler vous-même :
Les commandes ci-dessous sont pour le noyau 2.6.35 (pour d'autres noyaux, il suffit de remplacer 2.6.35 par le n° du noyau qui vous intéresse)

 # apt-get install subversion

 $ mkdir /linux-kbuild
 $ cd linux-kbuild

 $ svn co svn://svn.debian.org/kernel/dists/trunk/linux-kbuild-2.6

 $ wget http://ftp.de.kernel.org/pub/linux/kernel/v2.6/linux-2.6.35.tar.bz2    

 $ cd linux-kbuild-2.6

 $ ./debian/bin/genorig.py ../linux-2.6.35.tar.bz2

 $ cd ..

 $ tar -xzf orig/linux-kbuild-2.6_2.6.35.orig.tar.gz

 $ cd linux-kbuild-2.6-2.6.35

 $ cp -a ../linux-kbuild-2.6/* ./

 $ ./debian/bin/gencontrol.py

 # apt-get install devscripts

 $ dch -i

 # make -f debian/rules clean

 # dpkg-checkbuilddeps

 $ cp -av ../orig/linux-kbuild-2.6_2.6.35.orig.tar.gz ../

 # dpkg-buildpackage -us -uc

 $ cd ..

 # dpkg -i linux-kbuild-2.6.35_2.6.35-1\~experimental.3_amd64.deb

Les commande ci-dessus sont tirées de cette page : [http://wiki.debian.org/HowToRebuildAnOfficialDebianKernelPackage Source]

[[Utilisateur:Lol|Lol]] 21 août 2010 à 15:28 (EAT)</text>
      <sha1>b8slvnaj5a9n6kfrepwjw5xyet1gyqk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2018</id>
      <parentid>2016</parentid>
      <timestamp>2010-08-21T18:43:30Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1789">Vous souhaitez installer le dernier noyaux Linux sur votre machine mais linux-kbuild n'est pas encore dans les dépôts ?

Sans linux-kbuild, impossible d'installer le paquet &quot;headers&quot; du noyau, en effet linux-kbuild est une dépendance obligatoire; Et sans linux-headers, pas de compilation possible pour installer les drivers de votre carte vidéo (pas de dkms...), impossible de recompiler vboxdrv, etc.

Il vous faut donc à tous prix linux-kbuild !

Voici la liste des commandes pour le compiler vous-même :
Les commandes ci-dessous sont pour le noyau 2.6.35 (pour d'autres noyaux, il suffit de remplacer 2.6.35 par le n° du noyau qui vous intéresse)

 # apt-get install subversion

 $ mkdir /linux-kbuild
 $ cd linux-kbuild

 $ svn co svn://svn.debian.org/kernel/dists/trunk/linux-kbuild-2.6

 $ wget http://ftp.de.kernel.org/pub/linux/kernel/v2.6/linux-2.6.35.tar.bz2    

 $ cd linux-kbuild-2.6

 $ ./debian/bin/genorig.py ../linux-2.6.35.tar.bz2

 $ cd ..

 $ tar -xzf orig/linux-kbuild-2.6_2.6.35.orig.tar.gz

 $ cd linux-kbuild-2.6-2.6.35

 $ cp -a ../linux-kbuild-2.6/* ./

 $ ./debian/bin/gencontrol.py

 # apt-get install devscripts

 $ dch -i

 # make -f debian/rules clean

 # dpkg-checkbuilddeps

 $ cp -av ../orig/linux-kbuild-2.6_2.6.35.orig.tar.gz ../

 # dpkg-buildpackage -us -uc

 $ cd ..

 # dpkg -i linux-kbuild-2.6.35_2.6.35-1\~experimental.3_amd64.deb

 $ apt-cache policy linux-kbuild-2.6.35
 linux-kbuild-2.6.35:
   Installé : 2.6.35-1~experimental.3
   Candidat : 2.6.35-1~experimental.3
  Table de version :
  *** 2.6.35-1~experimental.3 0
         100 /var/lib/dpkg/status

Les commande ci-dessus sont tirées de cette page : [http://wiki.debian.org/HowToRebuildAnOfficialDebianKernelPackage Source]

[[Utilisateur:Lol|Lol]] 21 août 2010 à 15:28 (EAT)</text>
      <sha1>rxlidhlrtz8evackdnzj41n37kcvx32</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2019</id>
      <parentid>2018</parentid>
      <timestamp>2010-08-22T11:50:04Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1789">Vous souhaitez installer le dernier noyaux Linux sur votre machine mais linux-kbuild n'est pas encore dans les dépôts ?

Sans linux-kbuild, impossible d'installer le paquet &quot;headers&quot; du noyau, en effet linux-kbuild est une dépendance obligatoire; Et sans linux-headers, pas de compilation possible pour installer les drivers de votre carte vidéo (pas de dkms...), impossible de recompiler vboxdrv, etc.

Il vous faut donc à tout prix linux-kbuild !

Voici la liste des commandes pour le compiler vous-même :
Les commandes ci-dessous sont pour le noyau 2.6.35 (pour d'autres noyaux, il suffit de remplacer 2.6.35 par le n° du noyau qui vous intéresse)

 # apt-get install subversion

 $ mkdir /linux-kbuild
 $ cd linux-kbuild

 $ svn co svn://svn.debian.org/kernel/dists/trunk/linux-kbuild-2.6

 $ wget http://ftp.de.kernel.org/pub/linux/kernel/v2.6/linux-2.6.35.tar.bz2    

 $ cd linux-kbuild-2.6

 $ ./debian/bin/genorig.py ../linux-2.6.35.tar.bz2

 $ cd ..

 $ tar -xzf orig/linux-kbuild-2.6_2.6.35.orig.tar.gz

 $ cd linux-kbuild-2.6-2.6.35

 $ cp -a ../linux-kbuild-2.6/* ./

 $ ./debian/bin/gencontrol.py

 # apt-get install devscripts

 $ dch -i

 # make -f debian/rules clean

 # dpkg-checkbuilddeps

 $ cp -av ../orig/linux-kbuild-2.6_2.6.35.orig.tar.gz ../

 # dpkg-buildpackage -us -uc

 $ cd ..

 # dpkg -i linux-kbuild-2.6.35_2.6.35-1\~experimental.3_amd64.deb

 $ apt-cache policy linux-kbuild-2.6.35
 linux-kbuild-2.6.35:
   Installé : 2.6.35-1~experimental.3
   Candidat : 2.6.35-1~experimental.3
  Table de version :
  *** 2.6.35-1~experimental.3 0
         100 /var/lib/dpkg/status

Les commande ci-dessus sont tirées de cette page : [http://wiki.debian.org/HowToRebuildAnOfficialDebianKernelPackage Source]

[[Utilisateur:Lol|Lol]] 21 août 2010 à 15:28 (EAT)</text>
      <sha1>j3edghgq9mdbx8j9inh83x24ibhtmux</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2099</id>
      <parentid>2019</parentid>
      <timestamp>2010-09-15T17:07:56Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1813">Vous souhaitez installer le dernier noyaux Linux sur votre machine mais linux-kbuild n'est pas encore dans les dépôts ?

Sans linux-kbuild, impossible d'installer le paquet &quot;headers&quot; du noyau, en effet linux-kbuild est une dépendance obligatoire; Et sans linux-headers, pas de compilation possible pour installer les drivers de votre carte vidéo (pas de dkms...), impossible de recompiler vboxdrv, etc.

Il vous faut donc à tout prix linux-kbuild !

Voici la liste des commandes pour le compiler vous-même :
Les commandes ci-dessous sont pour le noyau 2.6.35 (pour d'autres noyaux, il suffit de remplacer 2.6.35 par le n° du noyau qui vous intéresse)

 # apt-get install subversion

 $ mkdir /linux-kbuild
 $ cd linux-kbuild

 $ svn co svn://svn.debian.org/kernel/dists/trunk/linux-kbuild-2.6

 $ wget http://ftp.de.kernel.org/pub/linux/kernel/v2.6/linux-2.6.35.tar.bz2    

 $ cd linux-kbuild-2.6

 $ ./debian/bin/genorig.py ../linux-2.6.35.tar.bz2

 $ cd ..

 $ tar -xzf orig/linux-kbuild-2.6_2.6.35.orig.tar.gz

 $ cd linux-kbuild-2.6-2.6.35

 $ cp -a ../linux-kbuild-2.6/* ./

 $ ./debian/bin/gencontrol.py

 # apt-get install devscripts

 $ dch -i

 # make -f debian/rules clean

 # dpkg-checkbuilddeps

 $ cp -av ../orig/linux-kbuild-2.6_2.6.35.orig.tar.gz ../

 # dpkg-buildpackage -us -uc

 $ cd ..

 # dpkg -i linux-kbuild-2.6.35_2.6.35-1\~experimental.3_amd64.deb

 $ apt-cache policy linux-kbuild-2.6.35
 linux-kbuild-2.6.35:
   Installé : 2.6.35-1~experimental.3
   Candidat : 2.6.35-1~experimental.3
  Table de version :
  *** 2.6.35-1~experimental.3 0
         100 /var/lib/dpkg/status

Les commande ci-dessus sont tirées de cette page : [http://wiki.debian.org/HowToRebuildAnOfficialDebianKernelPackage Source]

[[Utilisateur:Lol|Lol]] 21 août 2010 à 15:28 (EAT)

[[Catégorie:Paquets]]</text>
      <sha1>ivrhv37zuoeafsbryu2ds1m8kabadcl</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2131</id>
      <parentid>2099</parentid>
      <timestamp>2010-09-28T16:48:08Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2244">Vous souhaitez installer le dernier noyaux Linux sur votre machine mais linux-kbuild n'est pas encore dans les dépôts ?

Sans linux-kbuild, impossible d'installer le paquet &quot;headers&quot; du noyau, en effet linux-kbuild est une dépendance obligatoire; Et sans linux-headers, pas de compilation possible pour installer les drivers de votre carte vidéo (pas de dkms...), impossible de recompiler vboxdrv, etc.

Il vous faut donc à tout prix linux-kbuild !

Voici la liste des commandes pour le compiler vous-même :
Les commandes ci-dessous sont pour le noyau 2.6.35 (pour d'autres noyaux, il suffit de remplacer 2.6.35 par le n° du noyau qui vous intéresse)

 # apt-get install subversion

 $ mkdir /linux-kbuild
 $ cd linux-kbuild

 $ svn co svn://svn.debian.org/kernel/dists/trunk/linux-kbuild-2.6

Concernant le noyau 2.6.36, vous serez obligé de faire une modification au fichier /linux-kbuild-2.6/debian/changelog afin de ne pas avoir d'erreur à la compilation.
Il suffit d'éditer le &quot;changelog&quot; et d'y ajouter, en en-tête les lignes suivantes :

 linux-kbuild-2.6 (2.6.36-rc5~experimental.1) experimental; urgency=low
 
   * New upstream version
 
  -- Ben Hutchings &lt;ben@decadent.org.uk&gt;  Sun, 08 Aug 2010 22:31:47 +0100

  wget http://ftp.de.kernel.org/pub/linux/kernel/v2.6/linux-2.6.35.tar.bz2    

 $ cd linux-kbuild-2.6

 $ ./debian/bin/genorig.py ../linux-2.6.35.tar.bz2

 $ cd ..

 $ tar -xzf orig/linux-kbuild-2.6_2.6.35.orig.tar.gz

 $ cd linux-kbuild-2.6-2.6.35

 $ cp -a ../linux-kbuild-2.6/* ./

 $ ./debian/bin/gencontrol.py

 # apt-get install devscripts

 $ dch -i

 # make -f debian/rules clean

 # dpkg-checkbuilddeps

 $ cp -av ../orig/linux-kbuild-2.6_2.6.35.orig.tar.gz ../

 # dpkg-buildpackage -us -uc

 $ cd ..

 # dpkg -i linux-kbuild-2.6.35_2.6.35-1\~experimental.3_amd64.deb

 $ apt-cache policy linux-kbuild-2.6.35
 linux-kbuild-2.6.35:
   Installé : 2.6.35-1~experimental.3
   Candidat : 2.6.35-1~experimental.3
  Table de version :
  *** 2.6.35-1~experimental.3 0
         100 /var/lib/dpkg/status

Les commande ci-dessus sont tirées de cette page : [http://wiki.debian.org/HowToRebuildAnOfficialDebianKernelPackage Source]

[[Utilisateur:Lol|Lol]] 21 août 2010 à 15:28 (EAT)

[[Catégorie:Paquets]]</text>
      <sha1>7o8vsc5pgy4chjl27nwzray6egdhb9k</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2927</id>
      <parentid>2131</parentid>
      <timestamp>2011-05-01T08:49:34Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2245">Vous souhaitez installer le dernier noyaux Linux sur votre machine mais linux-kbuild n'est pas encore dans les dépôts ?

Sans linux-kbuild, impossible d'installer le paquet &quot;headers&quot; du noyau, en effet linux-kbuild est une dépendance obligatoire; Et sans linux-headers, pas de compilation possible pour installer les drivers de votre carte vidéo (pas de dkms...), impossible de recompiler vboxdrv, etc.

Il vous faut donc à tout prix linux-kbuild !

Voici la liste des commandes pour le compiler vous-même :
Les commandes ci-dessous sont pour le noyau 2.6.35 (pour d'autres noyaux, il suffit de remplacer 2.6.35 par le n° du noyau qui vous intéresse)

 # apt-get install subversion

 $ mkdir ~/linux-kbuild
 $ cd linux-kbuild

 $ svn co svn://svn.debian.org/kernel/dists/trunk/linux-kbuild-2.6

Concernant le noyau 2.6.36, vous serez obligé de faire une modification au fichier /linux-kbuild-2.6/debian/changelog afin de ne pas avoir d'erreur à la compilation.
Il suffit d'éditer le &quot;changelog&quot; et d'y ajouter, en en-tête les lignes suivantes :

 linux-kbuild-2.6 (2.6.36-rc5~experimental.1) experimental; urgency=low
 
   * New upstream version
 
  -- Ben Hutchings &lt;ben@decadent.org.uk&gt;  Sun, 08 Aug 2010 22:31:47 +0100

  wget http://ftp.de.kernel.org/pub/linux/kernel/v2.6/linux-2.6.35.tar.bz2    

 $ cd linux-kbuild-2.6

 $ ./debian/bin/genorig.py ../linux-2.6.35.tar.bz2

 $ cd ..

 $ tar -xzf orig/linux-kbuild-2.6_2.6.35.orig.tar.gz

 $ cd linux-kbuild-2.6-2.6.35

 $ cp -a ../linux-kbuild-2.6/* ./

 $ ./debian/bin/gencontrol.py

 # apt-get install devscripts

 $ dch -i

 # make -f debian/rules clean

 # dpkg-checkbuilddeps

 $ cp -av ../orig/linux-kbuild-2.6_2.6.35.orig.tar.gz ../

 # dpkg-buildpackage -us -uc

 $ cd ..

 # dpkg -i linux-kbuild-2.6.35_2.6.35-1\~experimental.3_amd64.deb

 $ apt-cache policy linux-kbuild-2.6.35
 linux-kbuild-2.6.35:
   Installé : 2.6.35-1~experimental.3
   Candidat : 2.6.35-1~experimental.3
  Table de version :
  *** 2.6.35-1~experimental.3 0
         100 /var/lib/dpkg/status

Les commande ci-dessus sont tirées de cette page : [http://wiki.debian.org/HowToRebuildAnOfficialDebianKernelPackage Source]

[[Utilisateur:Lol|Lol]] 21 août 2010 à 15:28 (EAT)

[[Catégorie:Paquets]]</text>
      <sha1>qzqyyprnql8ni3hucuha7c91k1nct5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2928</id>
      <parentid>2927</parentid>
      <timestamp>2011-05-01T08:52:57Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2267">Vous souhaitez installer le dernier noyaux Linux sur votre machine mais linux-kbuild n'est pas encore dans les dépôts ?

Sans linux-kbuild, impossible d'installer le paquet &quot;headers&quot; du noyau, en effet linux-kbuild est une dépendance obligatoire; Et sans linux-headers, pas de compilation possible pour installer les drivers de votre carte vidéo (pas de dkms...), impossible de recompiler vboxdrv, etc.

Il vous faut donc à tout prix linux-kbuild !

Voici la liste des commandes pour le compiler vous-même :
Les commandes ci-dessous sont pour le noyau 2.6.35 (pour d'autres noyaux, il suffit de remplacer 2.6.35 par le n° du noyau qui vous intéresse)

 # apt-get install subversion

 $ mkdir ~/linux-kbuild
 $ cd linux-kbuild

 $ svn co svn://svn.debian.org/kernel/dists/trunk/linux-kbuild-2.6

Il sera nécessaire de modifier le fichier ~/linux-kbuild/linux-kbuild-2.6/debian/changelog afin de ne pas avoir d'erreur à la compilation.

Il suffit d'éditer le &quot;changelog&quot; et d'y ajouter par exemple, en début de fichier, les lignes suivantes (adaptez à votre version):

 linux-kbuild-2.6 (2.6.36-rc5~experimental.1) experimental; urgency=low
 
   * New upstream version
 
  -- Ben Hutchings &lt;ben@decadent.org.uk&gt;  Sun, 08 Aug 2010 22:31:47 +0100

  wget http://ftp.de.kernel.org/pub/linux/kernel/v2.6/linux-2.6.35.tar.bz2    

 $ cd linux-kbuild-2.6

 $ ./debian/bin/genorig.py ../linux-2.6.35.tar.bz2

 $ cd ..

 $ tar -xzf orig/linux-kbuild-2.6_2.6.35.orig.tar.gz

 $ cd linux-kbuild-2.6-2.6.35

 $ cp -a ../linux-kbuild-2.6/* ./

 $ ./debian/bin/gencontrol.py

 # apt-get install devscripts

 $ dch -i

 # make -f debian/rules clean

 # dpkg-checkbuilddeps

 $ cp -av ../orig/linux-kbuild-2.6_2.6.35.orig.tar.gz ../

 # dpkg-buildpackage -us -uc

 $ cd ..

 # dpkg -i linux-kbuild-2.6.35_2.6.35-1\~experimental.3_amd64.deb

 $ apt-cache policy linux-kbuild-2.6.35
 linux-kbuild-2.6.35:
   Installé : 2.6.35-1~experimental.3
   Candidat : 2.6.35-1~experimental.3
  Table de version :
  *** 2.6.35-1~experimental.3 0
         100 /var/lib/dpkg/status

Les commande ci-dessus sont tirées de cette page : [http://wiki.debian.org/HowToRebuildAnOfficialDebianKernelPackage Source]

[[Utilisateur:Lol|Lol]] 21 août 2010 à 15:28 (EAT)

[[Catégorie:Paquets]]</text>
      <sha1>tp57o01dd6u7brxuc14u0hvg0u0pjt2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Configuration d'un serveur mail avec Postfix</title>
    <ns>0</ns>
    <id>420</id>
    <revision>
      <id>1540</id>
      <timestamp>2010-05-27T12:25:33Z</timestamp>
      <contributor>
        <username>AnatomicJC</username>
        <id>39</id>
      </contributor>
      <comment>[INIT] Création de la page</comment>
      <text xml:space="preserve" bytes="16207">= Configuration d'un serveur mail avec postfix  =

Vous ne voulez plus confier vos mails à Gmail, Yahoo ou Hotmail ? 

Vous aimeriez héberger vos mails chez vous mais vous pensez que c'est trop dur, trop compliqué ? 

Vous pensez qu'il faut être ingénieur pour monter un serveur mail ? 

Que nenni !! Nous allons voir dans ce tuto la mise en place d'un serveur mail avec Postfix dans le cadre d'une utilisation personnelle. 

Il ne s'agit pas ici de concurrencer Gmail ou Yahoo mais bien d'avoir notre petite boîte mail bien à nous. Faite avec amour. Et qui marche !! 

Ici, pas de gestion par base SQL ou annuaire LDAP, je vais tâcher de faire le plus simple possible. 

C'est parti !! 

= Une adresse mail, c'est quoi ?  =

== kevin@wanadoo.fr  ==

Une adresse mail, c'est un peu comme une adresse postale. Elle se divise en 2 parties&amp;nbsp;: 

*un domaine&amp;nbsp;: '''wanadoo.fr''' 
*un utilisateur&amp;nbsp;: '''kevin'''

Dans mon exemple, lorsque l'on écrit à Kevin via l'adresse '''kevin@wanadoo.fr''', cela signifie que l'on écrit à l'utilisateur '''kevin''' du domaine '''wanadoo.fr'''. 

Plus précisément, le mail arrive sur la '''machine''' sur laquelle se trouve le '''serveur mail''' de wanadoo.fr, pour être ensuite remis dans la '''boîte mail''' de l'utilisateur kevin. 

== Identifier le serveur mail de wanadoo.fr  ==

Wanadoo.fr, c'est le domaine. Le service mail se trouve quant à lui sur une machine bien precise. Pour l'identifier, une commande bien pratique&amp;nbsp;: 

 $ host -t MX wanadoo.fr
 wanadoo.fr mail is handled by 10 smtp.wanadoo.fr.

'''smtp''' est un ''sous-domaine'' de '''wanadoo.fr''', et la machine sur laquelle se trouve le serveur mail se nomme justement '''smtp.wanadoo.fr'''… 

 $ ping smtp.wanadoo.fr
 PING smtp.wanadoo.fr (80.12.242.142) 56(84) bytes of data.

… et son adresse IP est '''80.12.242.142'''. 

Dans la réalité, l'architecture mail de Wanadoo (Orange maintenant…) est je pense un peu plus compliquée que ça mais ça donne une bonne image de ce que nous allons reproduire pour notre serveur mail. 

= Prérequis  =

Pour avoir son serveur mail, il faut donc&amp;nbsp;: 

*un nom de domaine 
*une IP fixe 
*un PC allumé si possible 24h/24

Pourquoi une IP fixe&amp;nbsp;? Les mails doivent pouvoir toujours trouver le serveur mail, c'est pourquoi l'IP doit être fixe. 

L'association nom de domaine ⇔ adresse IP se règle au niveau du serveur DNS. C'est celui-ci que nous allons régler en premier. 

== Configurer le serveur DNS  ==

Cette partie se révèle souvent être une prise de tête pour les apprentis auto-hébergés. 

On doit spécifier dans le serveur DNS sur quelle IP on peut joindre le serveur mail. 

La plupart des registrars (les marchands de noms de domaine) fournissent une interface simplifiée pour le serveur DNS. 

=== Le champ A  ===

Il faut tout d'abord configurer le champ '''A''' qui fait le lien entre nom de domaine et l'adresse IP du serveur&amp;nbsp;: 

 @       IN    A    12.34.56.78 
 smtp    IN    A    12.34.56.78

'''@'''&amp;nbsp;: signifie que '''monDomaine.com''' est lié à l'IP 12.34.56.78 

'''smtp'''&amp;nbsp;: signifie que le sous-domaine '''smtp.monDomaine.com''' est lui aussi lié à l'IP 12.34.56.78 

Vous pouvez indiquer des adresses IP différentes si vous possédez plusieurs serveurs et plusieurs IP. 

=== Le champ MX  ===

Une fois que le champ '''A''' est complété, il faut pour définir le serveur mail s'occuper du champ '''MX''' ('''M'''ail e'''X'''change). 

Nous allons convenir que le serveur mail correspond au serveur '''smtp.monDomaine.com'''. Son adresse IP ayant déjà été définie par le champ '''A''', le champ '''MX''' s'écrit sous cette forme&amp;nbsp;: 

 monDomaine.com.    IN    MX    10    smtp

Ce qui signifie que '''smtp''' du champ '''A''' sera le serveur '''MX''' de '''monDomaine.com'''. 

Vous suivez toujours&amp;nbsp;?? 

Lorsque vous enverrez des mails sur le domaine '''monDomaine.com''', ils seront automatiquement acheminés vers le serveur '''smtp.monDomaine.com'''. 

'''''Important&amp;nbsp;:''''' 

*Un champ '''MX''' se définit toujours sur un champ '''A''', pas sur un '''CNAME''' (non abordé ici) 
*Ne pas oublier le point après monDomaine.com.

== Vérifications  ==

Avant même d'installer et configurer son serveur, il faut faire quelques vérifications. 

 $ host -t MX monDomaine.com

Cette commande doit retourner une ligne de ce genre&amp;nbsp;: 

 monDomaine.com mail is handled by 10 smtp.monDomaine.com

Bien sûr, ''smtp.monDomaine.com'' doit être associé à votre IP fixe (ici '''12.34.56.78''')&amp;nbsp;: 

 $ ping smtp.monDomaine.com
 PING smtp.monDomaine.com (12.34.56.78) 56(84) bytes of data.

Si ces 2 vérifications ne fonctionnent pas, '''ce n'est pas la peine d'aller plus loin''', votre serveur DNS est mal configuré. 

= Ouverture des ports  =

Si votre serveur se trouve derrière une *box, il ne pourra pas communiquer avec le monde extérieur. Il nous faut '''ouvrir des ports'''. 

Votre *box possède une '''IP fixe publique''', c'est l'IP que vous avez normalement renseignée dans votre serveur DNS. 

Derrière votre *box, il y a votre serveur mail qui lui possède également une adresse IP, '''privée'''. Les adresses privées sont en général 192.168.0.xxx ou 192.168.1.xxx. 

Admettons que votre serveur aie comme IP 192.168.0.25 dans votre réseau privé. Il faut alors que votre *box redirige toutes les requètes mail vers l'IP privée 192.168.0.25. 

Les ports à ouvrir sont&amp;nbsp;: 

*25&amp;nbsp;: pour que le serveur réceptionne les mails 
*110&amp;nbsp;: pour relever ses mails via POP 
*143&amp;nbsp;: pour relever ses mails via IMAP

Tous ces ports sont à ouvrir en '''TCP'''. 

Freebox&amp;nbsp;: [http://www.dslvalley.com/dossiers/freebox/freebox-nat.php http://www.dslvalley.com/dossiers/freebox/freebox-nat.php] 

NeufBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php] (fin de page) 

LiveBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/orange/livebox-emule.php http://www.dslvalley.com/dossiers/orange/livebox-emule.php] (fin de page) 

= Installation de postfix  =

Votre DNS est correctement configuré&amp;nbsp;? Les ports sont ouverts&amp;nbsp;? Bien. Vous avez fait le plus dur. 

Vérifiez le nom de votre machine&amp;nbsp;: 

 $ hostname

Cette commande doit vous retourner '''smtp.monDomaine.com'''. Si ce n'est pas le cas, éditez le fichier '''/etc/hosts''' et vérifiez que vous avez une ligne comme suit&amp;nbsp;: 

 127.0.0.1 smtp.monDomaine.com smtp

Puis&amp;nbsp;: 

 &lt;nowiki&gt;# hostname smtp.monDomaine.com&lt;/nowiki&gt;

Normalement, le hostname est maintenant OK. 

Il est important que le '''hostname''' de votre machine soit le même que celui retourné par la commande '''host -t MX monDomaine.com''', sinon Postfix va vous emmerder. 

Installons postfix&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install postfix&lt;/nowiki&gt;

Choisissez la configuration '''Internet Site'''. Indiquez ensuite le nom de votre machine&amp;nbsp;: '''smtp.monDomaine.com''' (correspond au ''hostname'') 

Au cas où vous voudriez recommencer&amp;nbsp;: 

 &lt;nowiki&gt;# dpkg-reconfigure postfix&lt;/nowiki&gt;

= Configuration  =

Le fichier de configuration de postfix est '''/etc/postfix/main.cf'''. Il est par défaut très bien sécurisé. 

Nous allons dans un premier temps y ajouter cette ligne&amp;nbsp;: 

 home_mailbox = Maildir/

Cette ligne dit à postfix que les mails des utilisateurs doivent aller dans un répertoire nommé Maildir. 

Commentez (ajoutez un #) la ligne où se trouve '''mailbox_command''' pour que procmail ne soit pas utilisé (en tout cas pas pour le moment): 

 &lt;nowiki&gt;#mailbox_command = procmail -a &quot;$EXTENSION&quot;&lt;/nowiki&gt;

Pour que la modification soit prise en compte, redémarrez postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

= Création d'un nouveau mail  =

Bien. Vous avez votre domaine, votre serveur mail tourne. Créer une adresse mail est très simple. Il suffit d'ajouter un utilisateur&amp;nbsp;!! 

Vous voulez créer une adresse kevin@monDomaine.com&amp;nbsp;? Ajoutez l'utilisateur kevin sur votre machine&amp;nbsp;: 

 &lt;nowiki&gt;# adduser kevin&lt;/nowiki&gt;

Répondez aux questions, choisissez un mot de passe à kevin et c'est tout. 

= Tester l'adresse en local  =

Nous allons envoyer un mail à Kevin, vérifions que le paquet '''mailx''' est installé&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install mailx&lt;/nowiki&gt;

On envoie le mail&amp;nbsp;: 

 &lt;nowiki&gt;# echo &quot;Le contenu du mail&quot; | mail -s &quot;ceci est le sujet&quot; kevin@monDomaine.com&lt;/nowiki&gt;

Le mail sera automatiquement déposé dans le répertoire '''Maildir''' situé dans le home de kevin. S'il n'existe pas, le dossier '''Maildir''' sera automatiquement créé. 

 &lt;nowiki&gt;# ls /home/kevin&lt;/nowiki&gt;
 Maildir

N'hésitez pas à consulter les logs pour voir tout ce qui se passe sur votre serveur mail&amp;nbsp;: 

 &lt;nowiki&gt;# cat /var/log/mail.log&lt;/nowiki&gt;

= Kevin veut lire ses mails&amp;nbsp;!!  =

Envoyer des mails, c'est bien mais pouvoir les lire, c'est mieux&amp;nbsp;!! Pour que Kevin puisse lire ses mails dans un client comme '''Mozilla Thunderbird''', c'est tout simple&amp;nbsp;: 

Kevin veut réceptionner ces mails via IMAP&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-imapd&lt;/nowiki&gt;

Il préfère POP3&amp;nbsp;? Pas de problèmes&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-pop3d&lt;/nowiki&gt;

C'est tout, vous pouvez maintenant utiliser votre client mail favori pour réceptionner vos mails. 

Serveur&amp;nbsp;: '''smtp.monDomaine.com''' 

Login&amp;nbsp;: '''kevin''' 

Password&amp;nbsp;: '''le password défini lors de la création de l'utilisateur kevin''' 

= Kevin veut envoyer des mails&amp;nbsp;!!  =

Kevin est content, il peut lire ses mails. Seulement, il aimerait répondre à ses amis mais il ne peut pas. 

== Utiliser le SMTP de son FAI  ==

Postfix possède son propre service SMTP, mais ce dernier sera généralement bloqué. Pour limiter les envois de SPAMS, les FAI bloquent généralement l'envoi de mails. 

Pour que votre serveur mail puisse envoyer des mails, il faut lui dire d'utiliser le SMTP de votre FAI. C'est le paramètre '''relayhost''' du fichier de configuration '''/etc/postfix/main.cf''' qu'il faut modifier&amp;nbsp;: 

 relayhost = smtp.votreFAI.com

Principaux SMTP français&amp;nbsp;: 

 Orange&amp;nbsp;: smtp.orange.fr
 Free&amp;nbsp;: smtp.free.fr
 Neuf&amp;nbsp;: smtp.neuf.fr

== Utiliser le SMTP de Postfix  ==

Cependant, certains FAI (comme Free) permettent de lever ce blocage via une option dans leur panel de gestion. 

Dans ce cas, plus besoin du '''relayhost'''. Vos mails ne passeront plus par votre FAI, c'est VOTRE serveur qui enverra directement les mails. 

Le problème est que les mails que vous enverrez vers les boîtes '''Yahoo''' seront classées en tant que SPAM. '''AOL''' ne voudra pas de vos mails (ce sera explicitement marqué dans les logs). Quant à '''Hotmail''', les logs vous diront que les mails ont bien été reçus, mais vos correspondants ne les recevront jamais. '''Gmail''' ne pose quant à lui aucun soucis. 

Vous voulez utiliser le plus possible votre propre SMTP mais vous voulez quand même pouvoir envoyer des mails vers vos potes qui restés chez Hotmail&amp;nbsp;? 

Créez un fichier '''/etc/postfix/transport''' avec ce contenu&amp;nbsp;: 

 hotmail.fr    smtp:smtp.free.fr
 hotmail.com   smtp:smtp.free.fr
 yahoo.fr      smtp:smtp.free.fr
 yahoo.com     smtp:smtp.free.fr

Ce fichier dit à postfix que pour les domaines hotmail.fr, hotmail.com, yahoo, etc., il utilisera le SMTP de free. Pour tous les autres domaine, il utilisera le smtp local. A vous d'adapter ce fichier en fonction des domaines qui ne veulent pas de vous. 

Bien sûr, si vous n'êtes pas abonné Free, vous ne pourrez pas utiliser le SMTP de Free. 

Pour que Postfix prenne en compte ce fichier, executez cette commande&amp;nbsp;: 

 &lt;nowiki&gt;# postmap /etc/postfix/transport&lt;/nowiki&gt;

Puis relancez Postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

A chaque fois que vous modifierez '''/etc/postfix/transport''', n'oubliez pas d'executer la commande précédente (postmap). 

== Login... Passwd...  ==

Actuellement, postfix n'accepte d'envoyer les mails que s'ils sont envoyés depuis le serveur mail. Vous avez sûrement l'habitude d'envoyer les mails depuis un autre PC. Généralement, le SMTP demande un login, un password et envoie vos mails. 

C'est ce que nous alons régler maintenant. 

Problème&amp;nbsp;: Postfix seul ne fournit pas de service d'identification. Il doit utiliser un serveur SASL externe. 

Solution&amp;nbsp;: Dovecot, que nous avons précédemment installé pour la réception de mails (IMAP-POP3) peut faire office de serveur SASL. 

Pour activer ce service, dans le fichier de configuration '''/etc/dovecot/dovecot.conf''', ajoutez (ou décommentez) ceci dans la section auth default { }&amp;nbsp;: 

 auth default {
 …
 socket listen {
   client {
     path  &lt;nowiki&gt;= /var/spool/postfix/private/auth&lt;/nowiki&gt;
    group = postfix
    mode  &lt;nowiki&gt;= 0660&lt;/nowiki&gt;
  }
 }
 …

Il s'agit pour Dovecot de créer un socket Unix, sur lequel il écoutera les demandes d'identification provenant de Postfix. Comme le service SMTP de Postfix est chrooté (emprisonné) dans le répertoire '''/var/spool/postfix/''', il faut placer ce socket sous ce répertoire. Maintenant, relancez Dovecot&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/dovecot restart&lt;/nowiki&gt;

Dovecot accepte l'identification mais Postfix ne le sait pas&amp;nbsp;!! Il faut lui dire (ajoutez dans '''/etc/postfix/main.cf''')&amp;nbsp;: 

 &lt;nowiki&gt;# Activer l'identification SASL&lt;/nowiki&gt;
 smtpd_sasl_auth_enable = yes

 &lt;nowiki&gt;# Utiliser le service d'identification de Dovecot&lt;/nowiki&gt;
 smtpd_sasl_type = dovecot
 smtpd_sasl_path = private/auth

 &lt;nowiki&gt;# Noter dans les en-tête des messages l'identifiant de l'utilisateur.&lt;/nowiki&gt;
 smtpd_sasl_authenticated_header = yes

Profitons-en pour paufiner le fichier de configuration de postfix '''/etc/postfix/main.cf'''&amp;nbsp;: 

 &lt;nowiki&gt;# Règles pour accepter ou refuser une connexion :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on attend une seconde (pour piéger les zombies) ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on interdit la parallélisation là où il n'est pas sensé y en avoir.&lt;/nowiki&gt;
 smtpd_client_restrictions =
    permit_mynetworks, permit_sasl_authenticated,
    sleep 1, reject_unauth_pipelining

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le nom&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'hôte de l'expéditeur (par sa commande HELO ou EHLO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on refuse les noms d'hôte invalides.&lt;/nowiki&gt;
 smtpd_helo_restrictions = reject_invalid_helo_hostname

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît l'adresse&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'expéditeur :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un expéditeur inexistant de notre domaine, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si le domaine de l'expéditeur n'a pas d'IP ou de MX, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un client sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de l'expéditeur n'est pas sous forme canonique, on le refuse.&lt;/nowiki&gt;
 smtpd_sender_restrictions =
    reject_unlisted_sender, reject_unknown_sender_domain,
    permit_mynetworks, permit_sasl_authenticated,
    reject_non_fqdn_sender

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le&lt;/nowiki&gt;
 &lt;nowiki&gt;# destinataire (par la commande RCPT TO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un expéditeur forgé chez nous, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un domaine forgé, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un hôte sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de destination n'est pas sous forme canonique, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - finalement, s'il n'est pas destiné à un domaine que l'on gère ou pour&lt;/nowiki&gt;
 &lt;nowiki&gt;# &lt;/nowiki&gt;  lequel on relaie, on le refuse.
 smtpd_recipient_restrictions =
     reject_unlisted_recipient, reject_unknown_recipient_domain,
     permit_mynetworks, permit_sasl_authenticated,
     reject_non_fqdn_recipient,
     reject_unauth_destination

Allez, on relance postfix pour qu'il prenne en compte tout ça&amp;nbsp;: 

 /etc/init.d/postfix restart</text>
      <sha1>2xtfazhucils3gf3y595r2y2yu2zjj5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1545</id>
      <parentid>1540</parentid>
      <timestamp>2010-05-27T18:25:54Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Utiliser le SMTP de Postfix */</comment>
      <text xml:space="preserve" bytes="16203">= Configuration d'un serveur mail avec postfix  =

Vous ne voulez plus confier vos mails à Gmail, Yahoo ou Hotmail ? 

Vous aimeriez héberger vos mails chez vous mais vous pensez que c'est trop dur, trop compliqué ? 

Vous pensez qu'il faut être ingénieur pour monter un serveur mail ? 

Que nenni !! Nous allons voir dans ce tuto la mise en place d'un serveur mail avec Postfix dans le cadre d'une utilisation personnelle. 

Il ne s'agit pas ici de concurrencer Gmail ou Yahoo mais bien d'avoir notre petite boîte mail bien à nous. Faite avec amour. Et qui marche !! 

Ici, pas de gestion par base SQL ou annuaire LDAP, je vais tâcher de faire le plus simple possible. 

C'est parti !! 

= Une adresse mail, c'est quoi ?  =

== kevin@wanadoo.fr  ==

Une adresse mail, c'est un peu comme une adresse postale. Elle se divise en 2 parties&amp;nbsp;: 

*un domaine&amp;nbsp;: '''wanadoo.fr''' 
*un utilisateur&amp;nbsp;: '''kevin'''

Dans mon exemple, lorsque l'on écrit à Kevin via l'adresse '''kevin@wanadoo.fr''', cela signifie que l'on écrit à l'utilisateur '''kevin''' du domaine '''wanadoo.fr'''. 

Plus précisément, le mail arrive sur la '''machine''' sur laquelle se trouve le '''serveur mail''' de wanadoo.fr, pour être ensuite remis dans la '''boîte mail''' de l'utilisateur kevin. 

== Identifier le serveur mail de wanadoo.fr  ==

Wanadoo.fr, c'est le domaine. Le service mail se trouve quant à lui sur une machine bien precise. Pour l'identifier, une commande bien pratique&amp;nbsp;: 

 $ host -t MX wanadoo.fr
 wanadoo.fr mail is handled by 10 smtp.wanadoo.fr.

'''smtp''' est un ''sous-domaine'' de '''wanadoo.fr''', et la machine sur laquelle se trouve le serveur mail se nomme justement '''smtp.wanadoo.fr'''… 

 $ ping smtp.wanadoo.fr
 PING smtp.wanadoo.fr (80.12.242.142) 56(84) bytes of data.

… et son adresse IP est '''80.12.242.142'''. 

Dans la réalité, l'architecture mail de Wanadoo (Orange maintenant…) est je pense un peu plus compliquée que ça mais ça donne une bonne image de ce que nous allons reproduire pour notre serveur mail. 

= Prérequis  =

Pour avoir son serveur mail, il faut donc&amp;nbsp;: 

*un nom de domaine 
*une IP fixe 
*un PC allumé si possible 24h/24

Pourquoi une IP fixe&amp;nbsp;? Les mails doivent pouvoir toujours trouver le serveur mail, c'est pourquoi l'IP doit être fixe. 

L'association nom de domaine ⇔ adresse IP se règle au niveau du serveur DNS. C'est celui-ci que nous allons régler en premier. 

== Configurer le serveur DNS  ==

Cette partie se révèle souvent être une prise de tête pour les apprentis auto-hébergés. 

On doit spécifier dans le serveur DNS sur quelle IP on peut joindre le serveur mail. 

La plupart des registrars (les marchands de noms de domaine) fournissent une interface simplifiée pour le serveur DNS. 

=== Le champ A  ===

Il faut tout d'abord configurer le champ '''A''' qui fait le lien entre nom de domaine et l'adresse IP du serveur&amp;nbsp;: 

 @       IN    A    12.34.56.78 
 smtp    IN    A    12.34.56.78

'''@'''&amp;nbsp;: signifie que '''monDomaine.com''' est lié à l'IP 12.34.56.78 

'''smtp'''&amp;nbsp;: signifie que le sous-domaine '''smtp.monDomaine.com''' est lui aussi lié à l'IP 12.34.56.78 

Vous pouvez indiquer des adresses IP différentes si vous possédez plusieurs serveurs et plusieurs IP. 

=== Le champ MX  ===

Une fois que le champ '''A''' est complété, il faut pour définir le serveur mail s'occuper du champ '''MX''' ('''M'''ail e'''X'''change). 

Nous allons convenir que le serveur mail correspond au serveur '''smtp.monDomaine.com'''. Son adresse IP ayant déjà été définie par le champ '''A''', le champ '''MX''' s'écrit sous cette forme&amp;nbsp;: 

 monDomaine.com.    IN    MX    10    smtp

Ce qui signifie que '''smtp''' du champ '''A''' sera le serveur '''MX''' de '''monDomaine.com'''. 

Vous suivez toujours&amp;nbsp;?? 

Lorsque vous enverrez des mails sur le domaine '''monDomaine.com''', ils seront automatiquement acheminés vers le serveur '''smtp.monDomaine.com'''. 

'''''Important&amp;nbsp;:''''' 

*Un champ '''MX''' se définit toujours sur un champ '''A''', pas sur un '''CNAME''' (non abordé ici) 
*Ne pas oublier le point après monDomaine.com.

== Vérifications  ==

Avant même d'installer et configurer son serveur, il faut faire quelques vérifications. 

 $ host -t MX monDomaine.com

Cette commande doit retourner une ligne de ce genre&amp;nbsp;: 

 monDomaine.com mail is handled by 10 smtp.monDomaine.com

Bien sûr, ''smtp.monDomaine.com'' doit être associé à votre IP fixe (ici '''12.34.56.78''')&amp;nbsp;: 

 $ ping smtp.monDomaine.com
 PING smtp.monDomaine.com (12.34.56.78) 56(84) bytes of data.

Si ces 2 vérifications ne fonctionnent pas, '''ce n'est pas la peine d'aller plus loin''', votre serveur DNS est mal configuré. 

= Ouverture des ports  =

Si votre serveur se trouve derrière une *box, il ne pourra pas communiquer avec le monde extérieur. Il nous faut '''ouvrir des ports'''. 

Votre *box possède une '''IP fixe publique''', c'est l'IP que vous avez normalement renseignée dans votre serveur DNS. 

Derrière votre *box, il y a votre serveur mail qui lui possède également une adresse IP, '''privée'''. Les adresses privées sont en général 192.168.0.xxx ou 192.168.1.xxx. 

Admettons que votre serveur aie comme IP 192.168.0.25 dans votre réseau privé. Il faut alors que votre *box redirige toutes les requètes mail vers l'IP privée 192.168.0.25. 

Les ports à ouvrir sont&amp;nbsp;: 

*25&amp;nbsp;: pour que le serveur réceptionne les mails 
*110&amp;nbsp;: pour relever ses mails via POP 
*143&amp;nbsp;: pour relever ses mails via IMAP

Tous ces ports sont à ouvrir en '''TCP'''. 

Freebox&amp;nbsp;: [http://www.dslvalley.com/dossiers/freebox/freebox-nat.php http://www.dslvalley.com/dossiers/freebox/freebox-nat.php] 

NeufBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php] (fin de page) 

LiveBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/orange/livebox-emule.php http://www.dslvalley.com/dossiers/orange/livebox-emule.php] (fin de page) 

= Installation de postfix  =

Votre DNS est correctement configuré&amp;nbsp;? Les ports sont ouverts&amp;nbsp;? Bien. Vous avez fait le plus dur. 

Vérifiez le nom de votre machine&amp;nbsp;: 

 $ hostname

Cette commande doit vous retourner '''smtp.monDomaine.com'''. Si ce n'est pas le cas, éditez le fichier '''/etc/hosts''' et vérifiez que vous avez une ligne comme suit&amp;nbsp;: 

 127.0.0.1 smtp.monDomaine.com smtp

Puis&amp;nbsp;: 

 &lt;nowiki&gt;# hostname smtp.monDomaine.com&lt;/nowiki&gt;

Normalement, le hostname est maintenant OK. 

Il est important que le '''hostname''' de votre machine soit le même que celui retourné par la commande '''host -t MX monDomaine.com''', sinon Postfix va vous emmerder. 

Installons postfix&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install postfix&lt;/nowiki&gt;

Choisissez la configuration '''Internet Site'''. Indiquez ensuite le nom de votre machine&amp;nbsp;: '''smtp.monDomaine.com''' (correspond au ''hostname'') 

Au cas où vous voudriez recommencer&amp;nbsp;: 

 &lt;nowiki&gt;# dpkg-reconfigure postfix&lt;/nowiki&gt;

= Configuration  =

Le fichier de configuration de postfix est '''/etc/postfix/main.cf'''. Il est par défaut très bien sécurisé. 

Nous allons dans un premier temps y ajouter cette ligne&amp;nbsp;: 

 home_mailbox = Maildir/

Cette ligne dit à postfix que les mails des utilisateurs doivent aller dans un répertoire nommé Maildir. 

Commentez (ajoutez un #) la ligne où se trouve '''mailbox_command''' pour que procmail ne soit pas utilisé (en tout cas pas pour le moment): 

 &lt;nowiki&gt;#mailbox_command = procmail -a &quot;$EXTENSION&quot;&lt;/nowiki&gt;

Pour que la modification soit prise en compte, redémarrez postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

= Création d'un nouveau mail  =

Bien. Vous avez votre domaine, votre serveur mail tourne. Créer une adresse mail est très simple. Il suffit d'ajouter un utilisateur&amp;nbsp;!! 

Vous voulez créer une adresse kevin@monDomaine.com&amp;nbsp;? Ajoutez l'utilisateur kevin sur votre machine&amp;nbsp;: 

 &lt;nowiki&gt;# adduser kevin&lt;/nowiki&gt;

Répondez aux questions, choisissez un mot de passe à kevin et c'est tout. 

= Tester l'adresse en local  =

Nous allons envoyer un mail à Kevin, vérifions que le paquet '''mailx''' est installé&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install mailx&lt;/nowiki&gt;

On envoie le mail&amp;nbsp;: 

 &lt;nowiki&gt;# echo &quot;Le contenu du mail&quot; | mail -s &quot;ceci est le sujet&quot; kevin@monDomaine.com&lt;/nowiki&gt;

Le mail sera automatiquement déposé dans le répertoire '''Maildir''' situé dans le home de kevin. S'il n'existe pas, le dossier '''Maildir''' sera automatiquement créé. 

 &lt;nowiki&gt;# ls /home/kevin&lt;/nowiki&gt;
 Maildir

N'hésitez pas à consulter les logs pour voir tout ce qui se passe sur votre serveur mail&amp;nbsp;: 

 &lt;nowiki&gt;# cat /var/log/mail.log&lt;/nowiki&gt;

= Kevin veut lire ses mails&amp;nbsp;!!  =

Envoyer des mails, c'est bien mais pouvoir les lire, c'est mieux&amp;nbsp;!! Pour que Kevin puisse lire ses mails dans un client comme '''Mozilla Thunderbird''', c'est tout simple&amp;nbsp;: 

Kevin veut réceptionner ces mails via IMAP&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-imapd&lt;/nowiki&gt;

Il préfère POP3&amp;nbsp;? Pas de problèmes&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-pop3d&lt;/nowiki&gt;

C'est tout, vous pouvez maintenant utiliser votre client mail favori pour réceptionner vos mails. 

Serveur&amp;nbsp;: '''smtp.monDomaine.com''' 

Login&amp;nbsp;: '''kevin''' 

Password&amp;nbsp;: '''le password défini lors de la création de l'utilisateur kevin''' 

= Kevin veut envoyer des mails&amp;nbsp;!!  =

Kevin est content, il peut lire ses mails. Seulement, il aimerait répondre à ses amis mais il ne peut pas. 

== Utiliser le SMTP de son FAI  ==

Postfix possède son propre service SMTP, mais ce dernier sera généralement bloqué. Pour limiter les envois de SPAMS, les FAI bloquent généralement l'envoi de mails. 

Pour que votre serveur mail puisse envoyer des mails, il faut lui dire d'utiliser le SMTP de votre FAI. C'est le paramètre '''relayhost''' du fichier de configuration '''/etc/postfix/main.cf''' qu'il faut modifier&amp;nbsp;: 

 relayhost = smtp.votreFAI.com

Principaux SMTP français&amp;nbsp;: 

 Orange&amp;nbsp;: smtp.orange.fr
 Free&amp;nbsp;: smtp.free.fr
 Neuf&amp;nbsp;: smtp.neuf.fr

== Utiliser le SMTP de Postfix  ==

Cependant, certains FAI (comme Free) permettent de lever ce blocage via une option dans leur panel de gestion. 

Dans ce cas, plus besoin du '''relayhost'''. Vos mails ne passeront plus par votre FAI, c'est VOTRE serveur qui enverra directement les mails. 

Le problème est que les mails que vous enverrez vers les boîtes '''Yahoo''' seront classées en tant que SPAM. '''AOL''' ne voudra pas de vos mails (ce sera explicitement marqué dans les logs). Quant à '''Hotmail''', les logs vous diront que les mails ont bien été reçus, mais vos correspondants ne les recevront jamais. '''Gmail''' ne pose quant à lui aucun soucis. 

Vous voulez utiliser le plus possible votre propre SMTP mais vous voulez quand même pouvoir envoyer des mails vers vos potes restés chez Hotmail&amp;nbsp;? 

Créez un fichier '''/etc/postfix/transport''' avec ce contenu&amp;nbsp;: 

 hotmail.fr    smtp:smtp.free.fr
 hotmail.com   smtp:smtp.free.fr
 yahoo.fr      smtp:smtp.free.fr
 yahoo.com     smtp:smtp.free.fr

Ce fichier dit à postfix que pour les domaines hotmail.fr, hotmail.com, yahoo, etc., il utilisera le SMTP de free. Pour tous les autres domaine, il utilisera le smtp local. A vous d'adapter ce fichier en fonction des domaines qui ne veulent pas de vous. 

Bien sûr, si vous n'êtes pas abonné Free, vous ne pourrez pas utiliser le SMTP de Free. 

Pour que Postfix prenne en compte ce fichier, exécutez cette commande&amp;nbsp;: 

 &lt;nowiki&gt;# postmap /etc/postfix/transport&lt;/nowiki&gt;

Puis relancez Postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

A chaque fois que vous modifierez '''/etc/postfix/transport''', n'oubliez pas d'executer la commande précédente (postmap).

== Login... Passwd...  ==

Actuellement, postfix n'accepte d'envoyer les mails que s'ils sont envoyés depuis le serveur mail. Vous avez sûrement l'habitude d'envoyer les mails depuis un autre PC. Généralement, le SMTP demande un login, un password et envoie vos mails. 

C'est ce que nous alons régler maintenant. 

Problème&amp;nbsp;: Postfix seul ne fournit pas de service d'identification. Il doit utiliser un serveur SASL externe. 

Solution&amp;nbsp;: Dovecot, que nous avons précédemment installé pour la réception de mails (IMAP-POP3) peut faire office de serveur SASL. 

Pour activer ce service, dans le fichier de configuration '''/etc/dovecot/dovecot.conf''', ajoutez (ou décommentez) ceci dans la section auth default { }&amp;nbsp;: 

 auth default {
 …
 socket listen {
   client {
     path  &lt;nowiki&gt;= /var/spool/postfix/private/auth&lt;/nowiki&gt;
    group = postfix
    mode  &lt;nowiki&gt;= 0660&lt;/nowiki&gt;
  }
 }
 …

Il s'agit pour Dovecot de créer un socket Unix, sur lequel il écoutera les demandes d'identification provenant de Postfix. Comme le service SMTP de Postfix est chrooté (emprisonné) dans le répertoire '''/var/spool/postfix/''', il faut placer ce socket sous ce répertoire. Maintenant, relancez Dovecot&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/dovecot restart&lt;/nowiki&gt;

Dovecot accepte l'identification mais Postfix ne le sait pas&amp;nbsp;!! Il faut lui dire (ajoutez dans '''/etc/postfix/main.cf''')&amp;nbsp;: 

 &lt;nowiki&gt;# Activer l'identification SASL&lt;/nowiki&gt;
 smtpd_sasl_auth_enable = yes

 &lt;nowiki&gt;# Utiliser le service d'identification de Dovecot&lt;/nowiki&gt;
 smtpd_sasl_type = dovecot
 smtpd_sasl_path = private/auth

 &lt;nowiki&gt;# Noter dans les en-tête des messages l'identifiant de l'utilisateur.&lt;/nowiki&gt;
 smtpd_sasl_authenticated_header = yes

Profitons-en pour paufiner le fichier de configuration de postfix '''/etc/postfix/main.cf'''&amp;nbsp;: 

 &lt;nowiki&gt;# Règles pour accepter ou refuser une connexion :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on attend une seconde (pour piéger les zombies) ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on interdit la parallélisation là où il n'est pas sensé y en avoir.&lt;/nowiki&gt;
 smtpd_client_restrictions =
    permit_mynetworks, permit_sasl_authenticated,
    sleep 1, reject_unauth_pipelining

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le nom&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'hôte de l'expéditeur (par sa commande HELO ou EHLO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on refuse les noms d'hôte invalides.&lt;/nowiki&gt;
 smtpd_helo_restrictions = reject_invalid_helo_hostname

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît l'adresse&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'expéditeur :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un expéditeur inexistant de notre domaine, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si le domaine de l'expéditeur n'a pas d'IP ou de MX, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un client sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de l'expéditeur n'est pas sous forme canonique, on le refuse.&lt;/nowiki&gt;
 smtpd_sender_restrictions =
    reject_unlisted_sender, reject_unknown_sender_domain,
    permit_mynetworks, permit_sasl_authenticated,
    reject_non_fqdn_sender

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le&lt;/nowiki&gt;
 &lt;nowiki&gt;# destinataire (par la commande RCPT TO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un expéditeur forgé chez nous, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un domaine forgé, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un hôte sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de destination n'est pas sous forme canonique, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - finalement, s'il n'est pas destiné à un domaine que l'on gère ou pour&lt;/nowiki&gt;
 &lt;nowiki&gt;# &lt;/nowiki&gt;  lequel on relaie, on le refuse.
 smtpd_recipient_restrictions =
     reject_unlisted_recipient, reject_unknown_recipient_domain,
     permit_mynetworks, permit_sasl_authenticated,
     reject_non_fqdn_recipient,
     reject_unauth_destination

Allez, on relance postfix pour qu'il prenne en compte tout ça&amp;nbsp;: 

 /etc/init.d/postfix restart</text>
      <sha1>a7283o32ck2n6odd2k04ltpm859crpz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1546</id>
      <parentid>1545</parentid>
      <timestamp>2010-05-27T18:28:54Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Login... Passwd... */</comment>
      <text xml:space="preserve" bytes="16205">= Configuration d'un serveur mail avec postfix  =

Vous ne voulez plus confier vos mails à Gmail, Yahoo ou Hotmail ? 

Vous aimeriez héberger vos mails chez vous mais vous pensez que c'est trop dur, trop compliqué ? 

Vous pensez qu'il faut être ingénieur pour monter un serveur mail ? 

Que nenni !! Nous allons voir dans ce tuto la mise en place d'un serveur mail avec Postfix dans le cadre d'une utilisation personnelle. 

Il ne s'agit pas ici de concurrencer Gmail ou Yahoo mais bien d'avoir notre petite boîte mail bien à nous. Faite avec amour. Et qui marche !! 

Ici, pas de gestion par base SQL ou annuaire LDAP, je vais tâcher de faire le plus simple possible. 

C'est parti !! 

= Une adresse mail, c'est quoi ?  =

== kevin@wanadoo.fr  ==

Une adresse mail, c'est un peu comme une adresse postale. Elle se divise en 2 parties&amp;nbsp;: 

*un domaine&amp;nbsp;: '''wanadoo.fr''' 
*un utilisateur&amp;nbsp;: '''kevin'''

Dans mon exemple, lorsque l'on écrit à Kevin via l'adresse '''kevin@wanadoo.fr''', cela signifie que l'on écrit à l'utilisateur '''kevin''' du domaine '''wanadoo.fr'''. 

Plus précisément, le mail arrive sur la '''machine''' sur laquelle se trouve le '''serveur mail''' de wanadoo.fr, pour être ensuite remis dans la '''boîte mail''' de l'utilisateur kevin. 

== Identifier le serveur mail de wanadoo.fr  ==

Wanadoo.fr, c'est le domaine. Le service mail se trouve quant à lui sur une machine bien precise. Pour l'identifier, une commande bien pratique&amp;nbsp;: 

 $ host -t MX wanadoo.fr
 wanadoo.fr mail is handled by 10 smtp.wanadoo.fr.

'''smtp''' est un ''sous-domaine'' de '''wanadoo.fr''', et la machine sur laquelle se trouve le serveur mail se nomme justement '''smtp.wanadoo.fr'''… 

 $ ping smtp.wanadoo.fr
 PING smtp.wanadoo.fr (80.12.242.142) 56(84) bytes of data.

… et son adresse IP est '''80.12.242.142'''. 

Dans la réalité, l'architecture mail de Wanadoo (Orange maintenant…) est je pense un peu plus compliquée que ça mais ça donne une bonne image de ce que nous allons reproduire pour notre serveur mail. 

= Prérequis  =

Pour avoir son serveur mail, il faut donc&amp;nbsp;: 

*un nom de domaine 
*une IP fixe 
*un PC allumé si possible 24h/24

Pourquoi une IP fixe&amp;nbsp;? Les mails doivent pouvoir toujours trouver le serveur mail, c'est pourquoi l'IP doit être fixe. 

L'association nom de domaine ⇔ adresse IP se règle au niveau du serveur DNS. C'est celui-ci que nous allons régler en premier. 

== Configurer le serveur DNS  ==

Cette partie se révèle souvent être une prise de tête pour les apprentis auto-hébergés. 

On doit spécifier dans le serveur DNS sur quelle IP on peut joindre le serveur mail. 

La plupart des registrars (les marchands de noms de domaine) fournissent une interface simplifiée pour le serveur DNS. 

=== Le champ A  ===

Il faut tout d'abord configurer le champ '''A''' qui fait le lien entre nom de domaine et l'adresse IP du serveur&amp;nbsp;: 

 @       IN    A    12.34.56.78 
 smtp    IN    A    12.34.56.78

'''@'''&amp;nbsp;: signifie que '''monDomaine.com''' est lié à l'IP 12.34.56.78 

'''smtp'''&amp;nbsp;: signifie que le sous-domaine '''smtp.monDomaine.com''' est lui aussi lié à l'IP 12.34.56.78 

Vous pouvez indiquer des adresses IP différentes si vous possédez plusieurs serveurs et plusieurs IP. 

=== Le champ MX  ===

Une fois que le champ '''A''' est complété, il faut pour définir le serveur mail s'occuper du champ '''MX''' ('''M'''ail e'''X'''change). 

Nous allons convenir que le serveur mail correspond au serveur '''smtp.monDomaine.com'''. Son adresse IP ayant déjà été définie par le champ '''A''', le champ '''MX''' s'écrit sous cette forme&amp;nbsp;: 

 monDomaine.com.    IN    MX    10    smtp

Ce qui signifie que '''smtp''' du champ '''A''' sera le serveur '''MX''' de '''monDomaine.com'''. 

Vous suivez toujours&amp;nbsp;?? 

Lorsque vous enverrez des mails sur le domaine '''monDomaine.com''', ils seront automatiquement acheminés vers le serveur '''smtp.monDomaine.com'''. 

'''''Important&amp;nbsp;:''''' 

*Un champ '''MX''' se définit toujours sur un champ '''A''', pas sur un '''CNAME''' (non abordé ici) 
*Ne pas oublier le point après monDomaine.com.

== Vérifications  ==

Avant même d'installer et configurer son serveur, il faut faire quelques vérifications. 

 $ host -t MX monDomaine.com

Cette commande doit retourner une ligne de ce genre&amp;nbsp;: 

 monDomaine.com mail is handled by 10 smtp.monDomaine.com

Bien sûr, ''smtp.monDomaine.com'' doit être associé à votre IP fixe (ici '''12.34.56.78''')&amp;nbsp;: 

 $ ping smtp.monDomaine.com
 PING smtp.monDomaine.com (12.34.56.78) 56(84) bytes of data.

Si ces 2 vérifications ne fonctionnent pas, '''ce n'est pas la peine d'aller plus loin''', votre serveur DNS est mal configuré. 

= Ouverture des ports  =

Si votre serveur se trouve derrière une *box, il ne pourra pas communiquer avec le monde extérieur. Il nous faut '''ouvrir des ports'''. 

Votre *box possède une '''IP fixe publique''', c'est l'IP que vous avez normalement renseignée dans votre serveur DNS. 

Derrière votre *box, il y a votre serveur mail qui lui possède également une adresse IP, '''privée'''. Les adresses privées sont en général 192.168.0.xxx ou 192.168.1.xxx. 

Admettons que votre serveur aie comme IP 192.168.0.25 dans votre réseau privé. Il faut alors que votre *box redirige toutes les requètes mail vers l'IP privée 192.168.0.25. 

Les ports à ouvrir sont&amp;nbsp;: 

*25&amp;nbsp;: pour que le serveur réceptionne les mails 
*110&amp;nbsp;: pour relever ses mails via POP 
*143&amp;nbsp;: pour relever ses mails via IMAP

Tous ces ports sont à ouvrir en '''TCP'''. 

Freebox&amp;nbsp;: [http://www.dslvalley.com/dossiers/freebox/freebox-nat.php http://www.dslvalley.com/dossiers/freebox/freebox-nat.php] 

NeufBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php] (fin de page) 

LiveBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/orange/livebox-emule.php http://www.dslvalley.com/dossiers/orange/livebox-emule.php] (fin de page) 

= Installation de postfix  =

Votre DNS est correctement configuré&amp;nbsp;? Les ports sont ouverts&amp;nbsp;? Bien. Vous avez fait le plus dur. 

Vérifiez le nom de votre machine&amp;nbsp;: 

 $ hostname

Cette commande doit vous retourner '''smtp.monDomaine.com'''. Si ce n'est pas le cas, éditez le fichier '''/etc/hosts''' et vérifiez que vous avez une ligne comme suit&amp;nbsp;: 

 127.0.0.1 smtp.monDomaine.com smtp

Puis&amp;nbsp;: 

 &lt;nowiki&gt;# hostname smtp.monDomaine.com&lt;/nowiki&gt;

Normalement, le hostname est maintenant OK. 

Il est important que le '''hostname''' de votre machine soit le même que celui retourné par la commande '''host -t MX monDomaine.com''', sinon Postfix va vous emmerder. 

Installons postfix&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install postfix&lt;/nowiki&gt;

Choisissez la configuration '''Internet Site'''. Indiquez ensuite le nom de votre machine&amp;nbsp;: '''smtp.monDomaine.com''' (correspond au ''hostname'') 

Au cas où vous voudriez recommencer&amp;nbsp;: 

 &lt;nowiki&gt;# dpkg-reconfigure postfix&lt;/nowiki&gt;

= Configuration  =

Le fichier de configuration de postfix est '''/etc/postfix/main.cf'''. Il est par défaut très bien sécurisé. 

Nous allons dans un premier temps y ajouter cette ligne&amp;nbsp;: 

 home_mailbox = Maildir/

Cette ligne dit à postfix que les mails des utilisateurs doivent aller dans un répertoire nommé Maildir. 

Commentez (ajoutez un #) la ligne où se trouve '''mailbox_command''' pour que procmail ne soit pas utilisé (en tout cas pas pour le moment): 

 &lt;nowiki&gt;#mailbox_command = procmail -a &quot;$EXTENSION&quot;&lt;/nowiki&gt;

Pour que la modification soit prise en compte, redémarrez postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

= Création d'un nouveau mail  =

Bien. Vous avez votre domaine, votre serveur mail tourne. Créer une adresse mail est très simple. Il suffit d'ajouter un utilisateur&amp;nbsp;!! 

Vous voulez créer une adresse kevin@monDomaine.com&amp;nbsp;? Ajoutez l'utilisateur kevin sur votre machine&amp;nbsp;: 

 &lt;nowiki&gt;# adduser kevin&lt;/nowiki&gt;

Répondez aux questions, choisissez un mot de passe à kevin et c'est tout. 

= Tester l'adresse en local  =

Nous allons envoyer un mail à Kevin, vérifions que le paquet '''mailx''' est installé&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install mailx&lt;/nowiki&gt;

On envoie le mail&amp;nbsp;: 

 &lt;nowiki&gt;# echo &quot;Le contenu du mail&quot; | mail -s &quot;ceci est le sujet&quot; kevin@monDomaine.com&lt;/nowiki&gt;

Le mail sera automatiquement déposé dans le répertoire '''Maildir''' situé dans le home de kevin. S'il n'existe pas, le dossier '''Maildir''' sera automatiquement créé. 

 &lt;nowiki&gt;# ls /home/kevin&lt;/nowiki&gt;
 Maildir

N'hésitez pas à consulter les logs pour voir tout ce qui se passe sur votre serveur mail&amp;nbsp;: 

 &lt;nowiki&gt;# cat /var/log/mail.log&lt;/nowiki&gt;

= Kevin veut lire ses mails&amp;nbsp;!!  =

Envoyer des mails, c'est bien mais pouvoir les lire, c'est mieux&amp;nbsp;!! Pour que Kevin puisse lire ses mails dans un client comme '''Mozilla Thunderbird''', c'est tout simple&amp;nbsp;: 

Kevin veut réceptionner ces mails via IMAP&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-imapd&lt;/nowiki&gt;

Il préfère POP3&amp;nbsp;? Pas de problèmes&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-pop3d&lt;/nowiki&gt;

C'est tout, vous pouvez maintenant utiliser votre client mail favori pour réceptionner vos mails. 

Serveur&amp;nbsp;: '''smtp.monDomaine.com''' 

Login&amp;nbsp;: '''kevin''' 

Password&amp;nbsp;: '''le password défini lors de la création de l'utilisateur kevin''' 

= Kevin veut envoyer des mails&amp;nbsp;!!  =

Kevin est content, il peut lire ses mails. Seulement, il aimerait répondre à ses amis mais il ne peut pas. 

== Utiliser le SMTP de son FAI  ==

Postfix possède son propre service SMTP, mais ce dernier sera généralement bloqué. Pour limiter les envois de SPAMS, les FAI bloquent généralement l'envoi de mails. 

Pour que votre serveur mail puisse envoyer des mails, il faut lui dire d'utiliser le SMTP de votre FAI. C'est le paramètre '''relayhost''' du fichier de configuration '''/etc/postfix/main.cf''' qu'il faut modifier&amp;nbsp;: 

 relayhost = smtp.votreFAI.com

Principaux SMTP français&amp;nbsp;: 

 Orange&amp;nbsp;: smtp.orange.fr
 Free&amp;nbsp;: smtp.free.fr
 Neuf&amp;nbsp;: smtp.neuf.fr

== Utiliser le SMTP de Postfix  ==

Cependant, certains FAI (comme Free) permettent de lever ce blocage via une option dans leur panel de gestion. 

Dans ce cas, plus besoin du '''relayhost'''. Vos mails ne passeront plus par votre FAI, c'est VOTRE serveur qui enverra directement les mails. 

Le problème est que les mails que vous enverrez vers les boîtes '''Yahoo''' seront classées en tant que SPAM. '''AOL''' ne voudra pas de vos mails (ce sera explicitement marqué dans les logs). Quant à '''Hotmail''', les logs vous diront que les mails ont bien été reçus, mais vos correspondants ne les recevront jamais. '''Gmail''' ne pose quant à lui aucun soucis. 

Vous voulez utiliser le plus possible votre propre SMTP mais vous voulez quand même pouvoir envoyer des mails vers vos potes restés chez Hotmail&amp;nbsp;? 

Créez un fichier '''/etc/postfix/transport''' avec ce contenu&amp;nbsp;: 

 hotmail.fr    smtp:smtp.free.fr
 hotmail.com   smtp:smtp.free.fr
 yahoo.fr      smtp:smtp.free.fr
 yahoo.com     smtp:smtp.free.fr

Ce fichier dit à postfix que pour les domaines hotmail.fr, hotmail.com, yahoo, etc., il utilisera le SMTP de free. Pour tous les autres domaine, il utilisera le smtp local. A vous d'adapter ce fichier en fonction des domaines qui ne veulent pas de vous. 

Bien sûr, si vous n'êtes pas abonné Free, vous ne pourrez pas utiliser le SMTP de Free. 

Pour que Postfix prenne en compte ce fichier, exécutez cette commande&amp;nbsp;: 

 &lt;nowiki&gt;# postmap /etc/postfix/transport&lt;/nowiki&gt;

Puis relancez Postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

A chaque fois que vous modifierez '''/etc/postfix/transport''', n'oubliez pas d'executer la commande précédente (postmap).

== Login... Passwd...  ==

Actuellement, postfix n'accepte d'envoyer les mails que s'ils sont envoyés depuis le serveur mail. Vous avez sûrement l'habitude d'envoyer les mails depuis un autre PC. Généralement, le SMTP demande un login, un password et envoie vos mails. 

C'est ce que nous allons régler maintenant. 

Problème&amp;nbsp;: Postfix seul ne fournit pas de service d'identification. Il doit utiliser un serveur SASL externe. 

Solution&amp;nbsp;: Dovecot, que nous avons précédemment installé pour la réception de mails (IMAP-POP3) peut faire office de serveur SASL. 

Pour activer ce service, dans le fichier de configuration '''/etc/dovecot/dovecot.conf''', ajoutez (ou décommentez) ceci dans la section auth default { }&amp;nbsp;: 

 auth default {
 …
 socket listen {
   client {
     path  &lt;nowiki&gt;= /var/spool/postfix/private/auth&lt;/nowiki&gt;
    group = postfix
    mode  &lt;nowiki&gt;= 0660&lt;/nowiki&gt;
  }
 }
 …

Il s'agit pour Dovecot de créer un socket Unix, sur lequel il écoutera les demandes d'identification provenant de Postfix. Comme le service SMTP de Postfix est chrooté (emprisonné) dans le répertoire '''/var/spool/postfix/''', il faut placer ce socket sous ce répertoire. Maintenant, relancez Dovecot&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/dovecot restart&lt;/nowiki&gt;

Dovecot accepte l'identification mais Postfix ne le sait pas&amp;nbsp;!! Il faut lui dire (ajoutez dans '''/etc/postfix/main.cf''')&amp;nbsp;: 

 &lt;nowiki&gt;# Activer l'identification SASL&lt;/nowiki&gt;
 smtpd_sasl_auth_enable = yes

 &lt;nowiki&gt;# Utiliser le service d'identification de Dovecot&lt;/nowiki&gt;
 smtpd_sasl_type = dovecot
 smtpd_sasl_path = private/auth

 &lt;nowiki&gt;# Noter dans les en-tête des messages l'identifiant de l'utilisateur.&lt;/nowiki&gt;
 smtpd_sasl_authenticated_header = yes

Profitons-en pour peaufiner le fichier de configuration de postfix '''/etc/postfix/main.cf'''&amp;nbsp;: 

 &lt;nowiki&gt;# Règles pour accepter ou refuser une connexion :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on attend une seconde (pour piéger les zombies) ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on interdit la parallélisation là où il n'est pas sensé y en avoir.&lt;/nowiki&gt;
 smtpd_client_restrictions =
    permit_mynetworks, permit_sasl_authenticated,
    sleep 1, reject_unauth_pipelining

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le nom&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'hôte de l'expéditeur (par sa commande HELO ou EHLO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on refuse les noms d'hôte invalides.&lt;/nowiki&gt;
 smtpd_helo_restrictions = reject_invalid_helo_hostname

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît l'adresse&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'expéditeur :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un expéditeur inexistant de notre domaine, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si le domaine de l'expéditeur n'a pas d'IP ou de MX, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un client sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de l'expéditeur n'est pas sous forme canonique, on le refuse.&lt;/nowiki&gt;
 smtpd_sender_restrictions =
    reject_unlisted_sender, reject_unknown_sender_domain,
    permit_mynetworks, permit_sasl_authenticated,
    reject_non_fqdn_sender

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le&lt;/nowiki&gt;
 &lt;nowiki&gt;# destinataire (par la commande RCPT TO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un expéditeur forgé chez nous, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un domaine forgé, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un hôte sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de destination n'est pas sous forme canonique, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - finalement, s'il n'est pas destiné à un domaine que l'on gère ou pour&lt;/nowiki&gt;
 &lt;nowiki&gt;# &lt;/nowiki&gt;  lequel on relaie, on le refuse.
 smtpd_recipient_restrictions =
     reject_unlisted_recipient, reject_unknown_recipient_domain,
     permit_mynetworks, permit_sasl_authenticated,
     reject_non_fqdn_recipient,
     reject_unauth_destination

Allez, on relance postfix pour qu'il prenne en compte tout ça&amp;nbsp;: 

 /etc/init.d/postfix restart</text>
      <sha1>e4shycrcl7ghhk1lvt66cbe2t4iw0qi</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1548</id>
      <parentid>1546</parentid>
      <timestamp>2010-05-27T18:45:20Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="16230">= Configuration d'un serveur mail avec postfix  =

Vous ne voulez plus confier vos mails à Gmail, Yahoo ou Hotmail ? 

Vous aimeriez héberger vos mails chez vous mais vous pensez que c'est trop dur, trop compliqué ? 

Vous pensez qu'il faut être ingénieur pour monter un serveur mail ? 

Que nenni !! Nous allons voir dans ce tuto la mise en place d'un serveur mail avec Postfix dans le cadre d'une utilisation personnelle. 

Il ne s'agit pas ici de concurrencer Gmail ou Yahoo mais bien d'avoir notre petite boîte mail bien à nous. Faite avec amour. Et qui marche !! 

Ici, pas de gestion par base SQL ou annuaire LDAP, je vais tâcher de faire le plus simple possible. 

C'est parti !! 

= Une adresse mail, c'est quoi ?  =

== kevin@wanadoo.fr  ==

Une adresse mail, c'est un peu comme une adresse postale. Elle se divise en 2 parties&amp;nbsp;: 

*un domaine&amp;nbsp;: '''wanadoo.fr''' 
*un utilisateur&amp;nbsp;: '''kevin'''

Dans mon exemple, lorsque l'on écrit à Kevin via l'adresse '''kevin@wanadoo.fr''', cela signifie que l'on écrit à l'utilisateur '''kevin''' du domaine '''wanadoo.fr'''. 

Plus précisément, le mail arrive sur la '''machine''' sur laquelle se trouve le '''serveur mail''' de wanadoo.fr, pour être ensuite remis dans la '''boîte mail''' de l'utilisateur kevin. 

== Identifier le serveur mail de wanadoo.fr  ==

Wanadoo.fr, c'est le domaine. Le service mail se trouve quant à lui sur une machine bien precise. Pour l'identifier, une commande bien pratique&amp;nbsp;: 

 $ host -t MX wanadoo.fr
 wanadoo.fr mail is handled by 10 smtp.wanadoo.fr.

'''smtp''' est un ''sous-domaine'' de '''wanadoo.fr''', et la machine sur laquelle se trouve le serveur mail se nomme justement '''smtp.wanadoo.fr'''… 

 $ ping smtp.wanadoo.fr
 PING smtp.wanadoo.fr (80.12.242.142) 56(84) bytes of data.

… et son adresse IP est '''80.12.242.142'''. 

Dans la réalité, l'architecture mail de Wanadoo (Orange maintenant…) est je pense un peu plus compliquée que ça mais ça donne une bonne image de ce que nous allons reproduire pour notre serveur mail. 

= Prérequis  =

Pour avoir son serveur mail, il faut donc&amp;nbsp;: 

*un nom de domaine 
*une IP fixe 
*un PC allumé si possible 24h/24

Pourquoi une IP fixe&amp;nbsp;? Les mails doivent pouvoir toujours trouver le serveur mail, c'est pourquoi l'IP doit être fixe. 

L'association nom de domaine ⇔ adresse IP se règle au niveau du serveur DNS. C'est celui-ci que nous allons régler en premier. 

== Configurer le serveur DNS  ==

Cette partie se révèle souvent être une prise de tête pour les apprentis auto-hébergés. 

On doit spécifier dans le serveur DNS sur quelle IP on peut joindre le serveur mail. 

La plupart des registrars (les marchands de noms de domaine) fournissent une interface simplifiée pour le serveur DNS. 

=== Le champ A  ===

Il faut tout d'abord configurer le champ '''A''' qui fait le lien entre nom de domaine et l'adresse IP du serveur&amp;nbsp;: 

 @       IN    A    12.34.56.78 
 smtp    IN    A    12.34.56.78

'''@'''&amp;nbsp;: signifie que '''monDomaine.com''' est lié à l'IP 12.34.56.78 

'''smtp'''&amp;nbsp;: signifie que le sous-domaine '''smtp.monDomaine.com''' est lui aussi lié à l'IP 12.34.56.78 

Vous pouvez indiquer des adresses IP différentes si vous possédez plusieurs serveurs et plusieurs IP. 

=== Le champ MX  ===

Une fois que le champ '''A''' est complété, il faut pour définir le serveur mail s'occuper du champ '''MX''' ('''M'''ail e'''X'''change). 

Nous allons convenir que le serveur mail correspond au serveur '''smtp.monDomaine.com'''. Son adresse IP ayant déjà été définie par le champ '''A''', le champ '''MX''' s'écrit sous cette forme&amp;nbsp;: 

 monDomaine.com.    IN    MX    10    smtp

Ce qui signifie que '''smtp''' du champ '''A''' sera le serveur '''MX''' de '''monDomaine.com'''. 

Vous suivez toujours&amp;nbsp;?? 

Lorsque vous enverrez des mails sur le domaine '''monDomaine.com''', ils seront automatiquement acheminés vers le serveur '''smtp.monDomaine.com'''. 

'''''Important&amp;nbsp;:''''' 

*Un champ '''MX''' se définit toujours sur un champ '''A''', pas sur un '''CNAME''' (non abordé ici) 
*Ne pas oublier le point après monDomaine.com.

== Vérifications  ==

Avant même d'installer et configurer son serveur, il faut faire quelques vérifications. 

 $ host -t MX monDomaine.com

Cette commande doit retourner une ligne de ce genre&amp;nbsp;: 

 monDomaine.com mail is handled by 10 smtp.monDomaine.com

Bien sûr, ''smtp.monDomaine.com'' doit être associé à votre IP fixe (ici '''12.34.56.78''')&amp;nbsp;: 

 $ ping smtp.monDomaine.com
 PING smtp.monDomaine.com (12.34.56.78) 56(84) bytes of data.

Si ces 2 vérifications ne fonctionnent pas, '''ce n'est pas la peine d'aller plus loin''', votre serveur DNS est mal configuré. 

= Ouverture des ports  =

Si votre serveur se trouve derrière une *box, il ne pourra pas communiquer avec le monde extérieur. Il nous faut '''ouvrir des ports'''. 

Votre *box possède une '''IP fixe publique''', c'est l'IP que vous avez normalement renseignée dans votre serveur DNS. 

Derrière votre *box, il y a votre serveur mail qui lui possède également une adresse IP, '''privée'''. Les adresses privées sont en général 192.168.0.xxx ou 192.168.1.xxx. 

Admettons que votre serveur aie comme IP 192.168.0.25 dans votre réseau privé. Il faut alors que votre *box redirige toutes les requètes mail vers l'IP privée 192.168.0.25. 

Les ports à ouvrir sont&amp;nbsp;: 

*25&amp;nbsp;: pour que le serveur réceptionne les mails 
*110&amp;nbsp;: pour relever ses mails via POP 
*143&amp;nbsp;: pour relever ses mails via IMAP

Tous ces ports sont à ouvrir en '''TCP'''. 

Freebox&amp;nbsp;: [http://www.dslvalley.com/dossiers/freebox/freebox-nat.php http://www.dslvalley.com/dossiers/freebox/freebox-nat.php] 

NeufBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php] (fin de page) 

LiveBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/orange/livebox-emule.php http://www.dslvalley.com/dossiers/orange/livebox-emule.php] (fin de page) 

= Installation de postfix  =

Votre DNS est correctement configuré&amp;nbsp;? Les ports sont ouverts&amp;nbsp;? Bien. Vous avez fait le plus dur. 

Vérifiez le nom de votre machine&amp;nbsp;: 

 $ hostname

Cette commande doit vous retourner '''smtp.monDomaine.com'''. Si ce n'est pas le cas, éditez le fichier '''/etc/hosts''' et vérifiez que vous avez une ligne comme suit&amp;nbsp;: 

 127.0.0.1 smtp.monDomaine.com smtp

Puis&amp;nbsp;: 

 &lt;nowiki&gt;# hostname smtp.monDomaine.com&lt;/nowiki&gt;

Normalement, le hostname est maintenant OK. 

Il est important que le '''hostname''' de votre machine soit le même que celui retourné par la commande '''host -t MX monDomaine.com''', sinon Postfix va vous emmerder. 

Installons postfix&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install postfix&lt;/nowiki&gt;

Choisissez la configuration '''Internet Site'''. Indiquez ensuite le nom de votre machine&amp;nbsp;: '''smtp.monDomaine.com''' (correspond au ''hostname'') 

Au cas où vous voudriez recommencer&amp;nbsp;: 

 &lt;nowiki&gt;# dpkg-reconfigure postfix&lt;/nowiki&gt;

= Configuration  =

Le fichier de configuration de postfix est '''/etc/postfix/main.cf'''. Il est par défaut très bien sécurisé. 

Nous allons dans un premier temps y ajouter cette ligne&amp;nbsp;: 

 home_mailbox = Maildir/

Cette ligne dit à postfix que les mails des utilisateurs doivent aller dans un répertoire nommé Maildir. 

Commentez (ajoutez un #) la ligne où se trouve '''mailbox_command''' pour que procmail ne soit pas utilisé (en tout cas pas pour le moment): 

 &lt;nowiki&gt;#mailbox_command = procmail -a &quot;$EXTENSION&quot;&lt;/nowiki&gt;

Pour que la modification soit prise en compte, redémarrez postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

= Création d'un nouveau mail  =

Bien. Vous avez votre domaine, votre serveur mail tourne. Créer une adresse mail est très simple. Il suffit d'ajouter un utilisateur&amp;nbsp;!! 

Vous voulez créer une adresse kevin@monDomaine.com&amp;nbsp;? Ajoutez l'utilisateur kevin sur votre machine&amp;nbsp;: 

 &lt;nowiki&gt;# adduser kevin&lt;/nowiki&gt;

Répondez aux questions, choisissez un mot de passe à kevin et c'est tout. 

= Tester l'adresse en local  =

Nous allons envoyer un mail à Kevin, vérifions que le paquet '''mailx''' est installé&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install mailx&lt;/nowiki&gt;

On envoie le mail&amp;nbsp;: 

 &lt;nowiki&gt;# echo &quot;Le contenu du mail&quot; | mail -s &quot;ceci est le sujet&quot; kevin@monDomaine.com&lt;/nowiki&gt;

Le mail sera automatiquement déposé dans le répertoire '''Maildir''' situé dans le home de kevin. S'il n'existe pas, le dossier '''Maildir''' sera automatiquement créé. 

 &lt;nowiki&gt;# ls /home/kevin&lt;/nowiki&gt;
 Maildir

N'hésitez pas à consulter les logs pour voir tout ce qui se passe sur votre serveur mail&amp;nbsp;: 

 &lt;nowiki&gt;# cat /var/log/mail.log&lt;/nowiki&gt;

= Kevin veut lire ses mails&amp;nbsp;!!  =

Envoyer des mails, c'est bien mais pouvoir les lire, c'est mieux&amp;nbsp;!! Pour que Kevin puisse lire ses mails dans un client comme '''Mozilla Thunderbird''', c'est tout simple&amp;nbsp;: 

Kevin veut réceptionner ces mails via IMAP&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-imapd&lt;/nowiki&gt;

Il préfère POP3&amp;nbsp;? Pas de problèmes&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-pop3d&lt;/nowiki&gt;

C'est tout, vous pouvez maintenant utiliser votre client mail favori pour réceptionner vos mails. 

Serveur&amp;nbsp;: '''smtp.monDomaine.com''' 

Login&amp;nbsp;: '''kevin''' 

Password&amp;nbsp;: '''le password défini lors de la création de l'utilisateur kevin''' 

= Kevin veut envoyer des mails&amp;nbsp;!!  =

Kevin est content, il peut lire ses mails. Seulement, il aimerait répondre à ses amis mais il ne peut pas. 

== Utiliser le SMTP de son FAI  ==

Postfix possède son propre service SMTP, mais ce dernier sera généralement bloqué. Pour limiter les envois de SPAMS, les FAI bloquent généralement l'envoi de mails. 

Pour que votre serveur mail puisse envoyer des mails, il faut lui dire d'utiliser le SMTP de votre FAI. C'est le paramètre '''relayhost''' du fichier de configuration '''/etc/postfix/main.cf''' qu'il faut modifier&amp;nbsp;: 

 relayhost = smtp.votreFAI.com

Principaux SMTP français&amp;nbsp;: 

 Orange&amp;nbsp;: smtp.orange.fr
 Free&amp;nbsp;: smtp.free.fr
 Neuf&amp;nbsp;: smtp.neuf.fr

== Utiliser le SMTP de Postfix  ==

Cependant, certains FAI (comme Free) permettent de lever ce blocage via une option dans leur panel de gestion. 

Dans ce cas, plus besoin du '''relayhost'''. Vos mails ne passeront plus par votre FAI, c'est VOTRE serveur qui enverra directement les mails. 

Le problème est que les mails que vous enverrez vers les boîtes '''Yahoo''' seront classées en tant que SPAM. '''AOL''' ne voudra pas de vos mails (ce sera explicitement marqué dans les logs). Quant à '''Hotmail''', les logs vous diront que les mails ont bien été reçus, mais vos correspondants ne les recevront jamais. '''Gmail''' ne pose quant à lui aucun soucis. 

Vous voulez utiliser le plus possible votre propre SMTP mais vous voulez quand même pouvoir envoyer des mails vers vos potes restés chez Hotmail&amp;nbsp;? 

Créez un fichier '''/etc/postfix/transport''' avec ce contenu&amp;nbsp;: 

 hotmail.fr    smtp:smtp.free.fr
 hotmail.com   smtp:smtp.free.fr
 yahoo.fr      smtp:smtp.free.fr
 yahoo.com     smtp:smtp.free.fr

Ce fichier dit à postfix que pour les domaines hotmail.fr, hotmail.com, yahoo, etc., il utilisera le SMTP de free. Pour tous les autres domaine, il utilisera le smtp local. A vous d'adapter ce fichier en fonction des domaines qui ne veulent pas de vous. 

Bien sûr, si vous n'êtes pas abonné Free, vous ne pourrez pas utiliser le SMTP de Free. 

Pour que Postfix prenne en compte ce fichier, exécutez cette commande&amp;nbsp;: 

 &lt;nowiki&gt;# postmap /etc/postfix/transport&lt;/nowiki&gt;

Puis relancez Postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

A chaque fois que vous modifierez '''/etc/postfix/transport''', n'oubliez pas d'executer la commande précédente (postmap).

== Login... Passwd...  ==

Actuellement, postfix n'accepte d'envoyer les mails que s'ils sont envoyés depuis le serveur mail. Vous avez sûrement l'habitude d'envoyer les mails depuis un autre PC. Généralement, le SMTP demande un login, un password et envoie vos mails. 

C'est ce que nous allons régler maintenant. 

Problème&amp;nbsp;: Postfix seul ne fournit pas de service d'identification. Il doit utiliser un serveur SASL externe. 

Solution&amp;nbsp;: Dovecot, que nous avons précédemment installé pour la réception de mails (IMAP-POP3) peut faire office de serveur SASL. 

Pour activer ce service, dans le fichier de configuration '''/etc/dovecot/dovecot.conf''', ajoutez (ou décommentez) ceci dans la section auth default { }&amp;nbsp;: 

 auth default {
 …
 socket listen {
   client {
     path  &lt;nowiki&gt;= /var/spool/postfix/private/auth&lt;/nowiki&gt;
    group = postfix
    mode  &lt;nowiki&gt;= 0660&lt;/nowiki&gt;
  }
 }
 …

Il s'agit pour Dovecot de créer un socket Unix, sur lequel il écoutera les demandes d'identification provenant de Postfix. Comme le service SMTP de Postfix est chrooté (emprisonné) dans le répertoire '''/var/spool/postfix/''', il faut placer ce socket sous ce répertoire. Maintenant, relancez Dovecot&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/dovecot restart&lt;/nowiki&gt;

Dovecot accepte l'identification mais Postfix ne le sait pas&amp;nbsp;!! Il faut lui dire (ajoutez dans '''/etc/postfix/main.cf''')&amp;nbsp;: 

 &lt;nowiki&gt;# Activer l'identification SASL&lt;/nowiki&gt;
 smtpd_sasl_auth_enable = yes

 &lt;nowiki&gt;# Utiliser le service d'identification de Dovecot&lt;/nowiki&gt;
 smtpd_sasl_type = dovecot
 smtpd_sasl_path = private/auth

 &lt;nowiki&gt;# Noter dans les en-tête des messages l'identifiant de l'utilisateur.&lt;/nowiki&gt;
 smtpd_sasl_authenticated_header = yes

Profitons-en pour peaufiner le fichier de configuration de postfix '''/etc/postfix/main.cf'''&amp;nbsp;: 

 &lt;nowiki&gt;# Règles pour accepter ou refuser une connexion :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on attend une seconde (pour piéger les zombies) ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on interdit la parallélisation là où il n'est pas sensé y en avoir.&lt;/nowiki&gt;
 smtpd_client_restrictions =
    permit_mynetworks, permit_sasl_authenticated,
    sleep 1, reject_unauth_pipelining

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le nom&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'hôte de l'expéditeur (par sa commande HELO ou EHLO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on refuse les noms d'hôte invalides.&lt;/nowiki&gt;
 smtpd_helo_restrictions = reject_invalid_helo_hostname

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît l'adresse&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'expéditeur :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un expéditeur inexistant de notre domaine, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si le domaine de l'expéditeur n'a pas d'IP ou de MX, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un client sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de l'expéditeur n'est pas sous forme canonique, on le refuse.&lt;/nowiki&gt;
 smtpd_sender_restrictions =
    reject_unlisted_sender, reject_unknown_sender_domain,
    permit_mynetworks, permit_sasl_authenticated,
    reject_non_fqdn_sender

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le&lt;/nowiki&gt;
 &lt;nowiki&gt;# destinataire (par la commande RCPT TO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un expéditeur forgé chez nous, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un domaine forgé, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un hôte sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de destination n'est pas sous forme canonique, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - finalement, s'il n'est pas destiné à un domaine que l'on gère ou pour&lt;/nowiki&gt;
 &lt;nowiki&gt;# &lt;/nowiki&gt;  lequel on relaie, on le refuse.
 smtpd_recipient_restrictions =
     reject_unlisted_recipient, reject_unknown_recipient_domain,
     permit_mynetworks, permit_sasl_authenticated,
     reject_non_fqdn_recipient,
     reject_unauth_destination

Allez, on relance postfix pour qu'il prenne en compte tout ça&amp;nbsp;: 

 /etc/init.d/postfix restart

[[Catégorie:Serveurs]]</text>
      <sha1>ikrhufh1aa4zcm3lvxc9sttk1a5pjnm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1549</id>
      <parentid>1548</parentid>
      <timestamp>2010-05-29T08:40:05Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="16229">= Configuration d'un serveur mail avec postfix  =

Vous ne voulez plus confier vos mails à Gmail, Yahoo ou Hotmail ? 

Vous aimeriez héberger vos mails chez vous mais vous pensez que c'est trop dur, trop compliqué ? 

Vous pensez qu'il faut être ingénieur pour monter un serveur mail ? 

Que nenni !! Nous allons voir dans ce tuto la mise en place d'un serveur mail avec Postfix dans le cadre d'une utilisation personnelle. 

Il ne s'agit pas ici de concurrencer Gmail ou Yahoo mais bien d'avoir notre petite boîte mail bien à nous. Faite avec amour. Et qui marche !! 

Ici, pas de gestion par base SQL ou annuaire LDAP, je vais tâcher de faire le plus simple possible. 

C'est parti !! 

= Une adresse mail, c'est quoi ?  =

== kevin@wanadoo.fr  ==

Une adresse mail, c'est un peu comme une adresse postale. Elle se divise en 2 parties&amp;nbsp;: 

*un domaine&amp;nbsp;: '''wanadoo.fr''' 
*un utilisateur&amp;nbsp;: '''kevin'''

Dans mon exemple, lorsque l'on écrit à Kevin via l'adresse '''kevin@wanadoo.fr''', cela signifie que l'on écrit à l'utilisateur '''kevin''' du domaine '''wanadoo.fr'''. 

Plus précisément, le mail arrive sur la '''machine''' sur laquelle se trouve le '''serveur mail''' de wanadoo.fr, pour être ensuite remis dans la '''boîte mail''' de l'utilisateur kevin. 

== Identifier le serveur mail de wanadoo.fr  ==

Wanadoo.fr, c'est le domaine. Le service mail se trouve quant à lui sur une machine bien precise. Pour l'identifier, une commande bien pratique&amp;nbsp;: 

 $ host -t MX wanadoo.fr
 wanadoo.fr mail is handled by 10 smtp.wanadoo.fr.

'''smtp''' est un ''sous-domaine'' de '''wanadoo.fr''', et la machine sur laquelle se trouve le serveur mail se nomme justement '''smtp.wanadoo.fr'''… 

 $ ping smtp.wanadoo.fr
 PING smtp.wanadoo.fr (80.12.242.142) 56(84) bytes of data.

… et son adresse IP est '''80.12.242.142'''. 

Dans la réalité, l'architecture mail de Wanadoo (Orange maintenant…) est je pense un peu plus compliquée que ça mais ça donne une bonne image de ce que nous allons reproduire pour notre serveur mail. 

= Prérequis  =

Pour avoir son serveur mail, il faut donc&amp;nbsp;: 

*un nom de domaine 
*une IP fixe 
*un PC allumé si possible 24h/24

Pourquoi une IP fixe&amp;nbsp;? Les mails doivent pouvoir toujours trouver le serveur mail, c'est pourquoi l'IP doit être fixe. 

L'association nom de domaine ⇔ adresse IP se règle au niveau du serveur DNS. C'est celui-ci que nous allons régler en premier. 

== Configurer le serveur DNS  ==

Cette partie se révèle souvent être une prise de tête pour les apprentis auto-hébergés. 

On doit spécifier dans le serveur DNS sur quelle IP on peut joindre le serveur mail. 

La plupart des registrars (les marchands de noms de domaine) fournissent une interface simplifiée pour le serveur DNS. 

=== Le champ A  ===

Il faut tout d'abord configurer le champ '''A''' qui fait le lien entre nom de domaine et l'adresse IP du serveur&amp;nbsp;: 

 @       IN    A    12.34.56.78 
 smtp    IN    A    12.34.56.78

'''@'''&amp;nbsp;: signifie que '''monDomaine.com''' est lié à l'IP 12.34.56.78 

'''smtp'''&amp;nbsp;: signifie que le sous-domaine '''smtp.monDomaine.com''' est lui aussi lié à l'IP 12.34.56.78 

Vous pouvez indiquer des adresses IP différentes si vous possédez plusieurs serveurs et plusieurs IP. 

=== Le champ MX  ===

Une fois que le champ '''A''' est complété, il faut pour définir le serveur mail s'occuper du champ '''MX''' ('''M'''ail e'''X'''change). 

Nous allons convenir que le serveur mail correspond au serveur '''smtp.monDomaine.com'''. Son adresse IP ayant déjà été définie par le champ '''A''', le champ '''MX''' s'écrit sous cette forme&amp;nbsp;: 

 monDomaine.com.    IN    MX    10    smtp

Ce qui signifie que '''smtp''' du champ '''A''' sera le serveur '''MX''' de '''monDomaine.com'''. 

Vous suivez toujours&amp;nbsp;?? 

Lorsque vous enverrez des mails sur le domaine '''monDomaine.com''', ils seront automatiquement acheminés vers le serveur '''smtp.monDomaine.com'''. 

'''''Important&amp;nbsp;:''''' 

*Un champ '''MX''' se définit toujours sur un champ '''A''', pas sur un '''CNAME''' (non abordé ici) 
*Ne pas oublier le point après monDomaine.com.

== Vérifications  ==

Avant même d'installer et configurer son serveur, il faut faire quelques vérifications. 

 $ host -t MX monDomaine.com

Cette commande doit retourner une ligne de ce genre&amp;nbsp;: 

 monDomaine.com mail is handled by 10 smtp.monDomaine.com

Bien sûr, ''smtp.monDomaine.com'' doit être associé à votre IP fixe (ici '''12.34.56.78''')&amp;nbsp;: 

 $ ping smtp.monDomaine.com
 PING smtp.monDomaine.com (12.34.56.78) 56(84) bytes of data.

Si ces 2 vérifications ne fonctionnent pas, '''ce n'est pas la peine d'aller plus loin''', votre serveur DNS est mal configuré. 

= Ouverture des ports  =

Si votre serveur se trouve derrière une *box, il ne pourra pas communiquer avec le monde extérieur. Il nous faut '''ouvrir des ports'''. 

Votre *box possède une '''IP fixe publique''', c'est l'IP que vous avez normalement renseignée dans votre serveur DNS. 

Derrière votre *box, il y a votre serveur mail qui lui possède également une adresse IP, '''privée'''. Les adresses privées sont en général 192.168.0.xxx ou 192.168.1.xxx. 

Admettons que votre serveur aie comme IP 192.168.0.25 dans votre réseau privé. Il faut alors que votre *box redirige toutes les requètes mail vers l'IP privée 192.168.0.25. 

Les ports à ouvrir sont&amp;nbsp;: 

*25&amp;nbsp;: pour que le serveur réceptionne les mails 
*110&amp;nbsp;: pour relever ses mails via POP 
*143&amp;nbsp;: pour relever ses mails via IMAP

Tous ces ports sont à ouvrir en '''TCP'''. 

Freebox&amp;nbsp;: [http://www.dslvalley.com/dossiers/freebox/freebox-nat.php http://www.dslvalley.com/dossiers/freebox/freebox-nat.php] 

NeufBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php] (fin de page) 

LiveBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/orange/livebox-emule.php http://www.dslvalley.com/dossiers/orange/livebox-emule.php] (fin de page) 

= Installation de postfix  =

Votre DNS est correctement configuré&amp;nbsp;? Les ports sont ouverts&amp;nbsp;? Bien. Vous avez fait le plus dur. 

Vérifiez le nom de votre machine&amp;nbsp;: 

 $ hostname

Cette commande doit vous retourner '''smtp.monDomaine.com'''. Si ce n'est pas le cas, éditez le fichier '''/etc/hosts''' et vérifiez que vous avez une ligne comme suit&amp;nbsp;: 

 127.0.0.1 smtp.monDomaine.com smtp

Puis&amp;nbsp;: 

 &lt;nowiki&gt;# hostname smtp.monDomaine.com&lt;/nowiki&gt;

Normalement, le hostname est maintenant OK. 

Il est important que le '''hostname''' de votre machine soit le même que celui retourné par la commande '''host -t MX monDomaine.com''', sinon Postfix va vous emmerder. 

Installons postfix&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install postfix&lt;/nowiki&gt;

Choisissez la configuration '''Internet Site'''. Indiquez ensuite le nom de votre machine&amp;nbsp;: '''smtp.monDomaine.com''' (correspond au ''hostname'') 

Au cas où vous voudriez recommencer&amp;nbsp;: 

 &lt;nowiki&gt;# dpkg-reconfigure postfix&lt;/nowiki&gt;

= Configuration  =

Le fichier de configuration de postfix est '''/etc/postfix/main.cf'''. Il est par défaut très bien sécurisé. 

Nous allons dans un premier temps y ajouter cette ligne&amp;nbsp;: 

 home_mailbox = Maildir/

Cette ligne dit à postfix que les mails des utilisateurs doivent aller dans un répertoire nommé Maildir. 

Commentez (ajoutez un #) la ligne où se trouve '''mailbox_command''' pour que procmail ne soit pas utilisé (en tout cas pas pour le moment): 

 &lt;nowiki&gt;#mailbox_command = procmail -a &quot;$EXTENSION&quot;&lt;/nowiki&gt;

Pour que la modification soit prise en compte, redémarrez postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

= Création d'un nouveau mail  =

Bien. Vous avez votre domaine, votre serveur mail tourne. Créer une adresse mail est très simple. Il suffit d'ajouter un utilisateur&amp;nbsp;!! 

Vous voulez créer une adresse kevin@monDomaine.com&amp;nbsp;? Ajoutez l'utilisateur kevin sur votre machine&amp;nbsp;: 

 &lt;nowiki&gt;# adduser kevin&lt;/nowiki&gt;

Répondez aux questions, choisissez un mot de passe à kevin et c'est tout. 

= Tester l'adresse en local  =

Nous allons envoyer un mail à Kevin, vérifions que le paquet '''mailx''' est installé&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install mailx&lt;/nowiki&gt;

On envoie le mail&amp;nbsp;: 

 &lt;nowiki&gt;# echo &quot;Le contenu du mail&quot; | mail -s &quot;ceci est le sujet&quot; kevin@monDomaine.com&lt;/nowiki&gt;

Le mail sera automatiquement déposé dans le répertoire '''Maildir''' situé dans le home de kevin. S'il n'existe pas, le dossier '''Maildir''' sera automatiquement créé. 

 &lt;nowiki&gt;# ls /home/kevin&lt;/nowiki&gt;
 Maildir

N'hésitez pas à consulter les logs pour voir tout ce qui se passe sur votre serveur mail&amp;nbsp;: 

 &lt;nowiki&gt;# cat /var/log/mail.log&lt;/nowiki&gt;

= Kevin veut lire ses mails&amp;nbsp;!!  =

Envoyer des mails, c'est bien mais pouvoir les lire, c'est mieux&amp;nbsp;!! Pour que Kevin puisse lire ses mails dans un client comme '''Mozilla Thunderbird''', c'est tout simple&amp;nbsp;: 

Kevin veut réceptionner ces mails via IMAP&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-imapd&lt;/nowiki&gt;

Il préfère POP3&amp;nbsp;? Pas de problèmes&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-pop3d&lt;/nowiki&gt;

C'est tout, vous pouvez maintenant utiliser votre client mail favori pour réceptionner vos mails. 

Serveur&amp;nbsp;: '''smtp.monDomaine.com''' 

Login&amp;nbsp;: '''kevin''' 

Password&amp;nbsp;: '''le password défini lors de la création de l'utilisateur kevin''' 

= Kevin veut envoyer des mails&amp;nbsp;!!  =

Kevin est content, il peut lire ses mails. Seulement, il aimerait répondre à ses amis mais il ne peut pas. 

== Utiliser le SMTP de son FAI  ==

Postfix possède son propre service SMTP, mais ce dernier sera généralement bloqué. Pour limiter les envois de SPAMS, les FAI bloquent généralement l'envoi de mails. 

Pour que votre serveur mail puisse envoyer des mails, il faut lui dire d'utiliser le SMTP de votre FAI. C'est le paramètre '''relayhost''' du fichier de configuration '''/etc/postfix/main.cf''' qu'il faut modifier&amp;nbsp;: 

 relayhost = smtp.votreFAI.com

Principaux SMTP français&amp;nbsp;: 

 Orange&amp;nbsp;: smtp.orange.fr
 Free&amp;nbsp;: smtp.free.fr
 Neuf&amp;nbsp;: smtp.neuf.fr

== Utiliser le SMTP de Postfix  ==

Cependant, certains FAI (comme Free) permettent de lever ce blocage via une option dans leur panel de gestion. 

Dans ce cas, plus besoin du '''relayhost'''. Vos mails ne passeront plus par votre FAI, c'est VOTRE serveur qui enverra directement les mails. 

Le problème est que les mails que vous enverrez vers les boîtes '''Yahoo''' seront classées en tant que SPAM. '''AOL''' ne voudra pas de vos mails (ce sera explicitement marqué dans les logs). Quant à '''Hotmail''', les logs vous diront que les mails ont bien été reçus, mais vos correspondants ne les recevront jamais. '''Gmail''' ne pose quant à lui aucun souci. 

Vous voulez utiliser le plus possible votre propre SMTP mais vous voulez quand même pouvoir envoyer des mails vers vos potes restés chez Hotmail&amp;nbsp;? 

Créez un fichier '''/etc/postfix/transport''' avec ce contenu&amp;nbsp;: 

 hotmail.fr    smtp:smtp.free.fr
 hotmail.com   smtp:smtp.free.fr
 yahoo.fr      smtp:smtp.free.fr
 yahoo.com     smtp:smtp.free.fr

Ce fichier dit à postfix que pour les domaines hotmail.fr, hotmail.com, yahoo, etc., il utilisera le SMTP de free. Pour tous les autres domaine, il utilisera le smtp local. A vous d'adapter ce fichier en fonction des domaines qui ne veulent pas de vous. 

Bien sûr, si vous n'êtes pas abonné Free, vous ne pourrez pas utiliser le SMTP de Free. 

Pour que Postfix prenne en compte ce fichier, exécutez cette commande&amp;nbsp;: 

 &lt;nowiki&gt;# postmap /etc/postfix/transport&lt;/nowiki&gt;

Puis relancez Postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

A chaque fois que vous modifierez '''/etc/postfix/transport''', n'oubliez pas d'executer la commande précédente (postmap).

== Login... Passwd...  ==

Actuellement, postfix n'accepte d'envoyer les mails que s'ils sont envoyés depuis le serveur mail. Vous avez sûrement l'habitude d'envoyer les mails depuis un autre PC. Généralement, le SMTP demande un login, un password et envoie vos mails. 

C'est ce que nous allons régler maintenant. 

Problème&amp;nbsp;: Postfix seul ne fournit pas de service d'identification. Il doit utiliser un serveur SASL externe. 

Solution&amp;nbsp;: Dovecot, que nous avons précédemment installé pour la réception de mails (IMAP-POP3) peut faire office de serveur SASL. 

Pour activer ce service, dans le fichier de configuration '''/etc/dovecot/dovecot.conf''', ajoutez (ou décommentez) ceci dans la section auth default { }&amp;nbsp;: 

 auth default {
 …
 socket listen {
   client {
     path  &lt;nowiki&gt;= /var/spool/postfix/private/auth&lt;/nowiki&gt;
    group = postfix
    mode  &lt;nowiki&gt;= 0660&lt;/nowiki&gt;
  }
 }
 …

Il s'agit pour Dovecot de créer un socket Unix, sur lequel il écoutera les demandes d'identification provenant de Postfix. Comme le service SMTP de Postfix est chrooté (emprisonné) dans le répertoire '''/var/spool/postfix/''', il faut placer ce socket sous ce répertoire. Maintenant, relancez Dovecot&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/dovecot restart&lt;/nowiki&gt;

Dovecot accepte l'identification mais Postfix ne le sait pas&amp;nbsp;!! Il faut lui dire (ajoutez dans '''/etc/postfix/main.cf''')&amp;nbsp;: 

 &lt;nowiki&gt;# Activer l'identification SASL&lt;/nowiki&gt;
 smtpd_sasl_auth_enable = yes

 &lt;nowiki&gt;# Utiliser le service d'identification de Dovecot&lt;/nowiki&gt;
 smtpd_sasl_type = dovecot
 smtpd_sasl_path = private/auth

 &lt;nowiki&gt;# Noter dans les en-tête des messages l'identifiant de l'utilisateur.&lt;/nowiki&gt;
 smtpd_sasl_authenticated_header = yes

Profitons-en pour peaufiner le fichier de configuration de postfix '''/etc/postfix/main.cf'''&amp;nbsp;: 

 &lt;nowiki&gt;# Règles pour accepter ou refuser une connexion :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on attend une seconde (pour piéger les zombies) ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on interdit la parallélisation là où il n'est pas sensé y en avoir.&lt;/nowiki&gt;
 smtpd_client_restrictions =
    permit_mynetworks, permit_sasl_authenticated,
    sleep 1, reject_unauth_pipelining

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le nom&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'hôte de l'expéditeur (par sa commande HELO ou EHLO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on refuse les noms d'hôte invalides.&lt;/nowiki&gt;
 smtpd_helo_restrictions = reject_invalid_helo_hostname

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît l'adresse&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'expéditeur :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un expéditeur inexistant de notre domaine, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si le domaine de l'expéditeur n'a pas d'IP ou de MX, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un client sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de l'expéditeur n'est pas sous forme canonique, on le refuse.&lt;/nowiki&gt;
 smtpd_sender_restrictions =
    reject_unlisted_sender, reject_unknown_sender_domain,
    permit_mynetworks, permit_sasl_authenticated,
    reject_non_fqdn_sender

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le&lt;/nowiki&gt;
 &lt;nowiki&gt;# destinataire (par la commande RCPT TO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un expéditeur forgé chez nous, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un domaine forgé, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un hôte sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de destination n'est pas sous forme canonique, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - finalement, s'il n'est pas destiné à un domaine que l'on gère ou pour&lt;/nowiki&gt;
 &lt;nowiki&gt;# &lt;/nowiki&gt;  lequel on relaie, on le refuse.
 smtpd_recipient_restrictions =
     reject_unlisted_recipient, reject_unknown_recipient_domain,
     permit_mynetworks, permit_sasl_authenticated,
     reject_non_fqdn_recipient,
     reject_unauth_destination

Allez, on relance postfix pour qu'il prenne en compte tout ça&amp;nbsp;: 

 /etc/init.d/postfix restart

[[Catégorie:Serveurs]]</text>
      <sha1>04t8ui4707ql0wthfaql63gir1gec98</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1805</id>
      <parentid>1549</parentid>
      <timestamp>2010-08-02T10:27:03Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <minor/>
      <comment>/* Ouverture des ports */</comment>
      <text xml:space="preserve" bytes="16228">= Configuration d'un serveur mail avec postfix  =

Vous ne voulez plus confier vos mails à Gmail, Yahoo ou Hotmail ? 

Vous aimeriez héberger vos mails chez vous mais vous pensez que c'est trop dur, trop compliqué ? 

Vous pensez qu'il faut être ingénieur pour monter un serveur mail ? 

Que nenni !! Nous allons voir dans ce tuto la mise en place d'un serveur mail avec Postfix dans le cadre d'une utilisation personnelle. 

Il ne s'agit pas ici de concurrencer Gmail ou Yahoo mais bien d'avoir notre petite boîte mail bien à nous. Faite avec amour. Et qui marche !! 

Ici, pas de gestion par base SQL ou annuaire LDAP, je vais tâcher de faire le plus simple possible. 

C'est parti !! 

= Une adresse mail, c'est quoi ?  =

== kevin@wanadoo.fr  ==

Une adresse mail, c'est un peu comme une adresse postale. Elle se divise en 2 parties&amp;nbsp;: 

*un domaine&amp;nbsp;: '''wanadoo.fr''' 
*un utilisateur&amp;nbsp;: '''kevin'''

Dans mon exemple, lorsque l'on écrit à Kevin via l'adresse '''kevin@wanadoo.fr''', cela signifie que l'on écrit à l'utilisateur '''kevin''' du domaine '''wanadoo.fr'''. 

Plus précisément, le mail arrive sur la '''machine''' sur laquelle se trouve le '''serveur mail''' de wanadoo.fr, pour être ensuite remis dans la '''boîte mail''' de l'utilisateur kevin. 

== Identifier le serveur mail de wanadoo.fr  ==

Wanadoo.fr, c'est le domaine. Le service mail se trouve quant à lui sur une machine bien precise. Pour l'identifier, une commande bien pratique&amp;nbsp;: 

 $ host -t MX wanadoo.fr
 wanadoo.fr mail is handled by 10 smtp.wanadoo.fr.

'''smtp''' est un ''sous-domaine'' de '''wanadoo.fr''', et la machine sur laquelle se trouve le serveur mail se nomme justement '''smtp.wanadoo.fr'''… 

 $ ping smtp.wanadoo.fr
 PING smtp.wanadoo.fr (80.12.242.142) 56(84) bytes of data.

… et son adresse IP est '''80.12.242.142'''. 

Dans la réalité, l'architecture mail de Wanadoo (Orange maintenant…) est je pense un peu plus compliquée que ça mais ça donne une bonne image de ce que nous allons reproduire pour notre serveur mail. 

= Prérequis  =

Pour avoir son serveur mail, il faut donc&amp;nbsp;: 

*un nom de domaine 
*une IP fixe 
*un PC allumé si possible 24h/24

Pourquoi une IP fixe&amp;nbsp;? Les mails doivent pouvoir toujours trouver le serveur mail, c'est pourquoi l'IP doit être fixe. 

L'association nom de domaine ⇔ adresse IP se règle au niveau du serveur DNS. C'est celui-ci que nous allons régler en premier. 

== Configurer le serveur DNS  ==

Cette partie se révèle souvent être une prise de tête pour les apprentis auto-hébergés. 

On doit spécifier dans le serveur DNS sur quelle IP on peut joindre le serveur mail. 

La plupart des registrars (les marchands de noms de domaine) fournissent une interface simplifiée pour le serveur DNS. 

=== Le champ A  ===

Il faut tout d'abord configurer le champ '''A''' qui fait le lien entre nom de domaine et l'adresse IP du serveur&amp;nbsp;: 

 @       IN    A    12.34.56.78 
 smtp    IN    A    12.34.56.78

'''@'''&amp;nbsp;: signifie que '''monDomaine.com''' est lié à l'IP 12.34.56.78 

'''smtp'''&amp;nbsp;: signifie que le sous-domaine '''smtp.monDomaine.com''' est lui aussi lié à l'IP 12.34.56.78 

Vous pouvez indiquer des adresses IP différentes si vous possédez plusieurs serveurs et plusieurs IP. 

=== Le champ MX  ===

Une fois que le champ '''A''' est complété, il faut pour définir le serveur mail s'occuper du champ '''MX''' ('''M'''ail e'''X'''change). 

Nous allons convenir que le serveur mail correspond au serveur '''smtp.monDomaine.com'''. Son adresse IP ayant déjà été définie par le champ '''A''', le champ '''MX''' s'écrit sous cette forme&amp;nbsp;: 

 monDomaine.com.    IN    MX    10    smtp

Ce qui signifie que '''smtp''' du champ '''A''' sera le serveur '''MX''' de '''monDomaine.com'''. 

Vous suivez toujours&amp;nbsp;?? 

Lorsque vous enverrez des mails sur le domaine '''monDomaine.com''', ils seront automatiquement acheminés vers le serveur '''smtp.monDomaine.com'''. 

'''''Important&amp;nbsp;:''''' 

*Un champ '''MX''' se définit toujours sur un champ '''A''', pas sur un '''CNAME''' (non abordé ici) 
*Ne pas oublier le point après monDomaine.com.

== Vérifications  ==

Avant même d'installer et configurer son serveur, il faut faire quelques vérifications. 

 $ host -t MX monDomaine.com

Cette commande doit retourner une ligne de ce genre&amp;nbsp;: 

 monDomaine.com mail is handled by 10 smtp.monDomaine.com

Bien sûr, ''smtp.monDomaine.com'' doit être associé à votre IP fixe (ici '''12.34.56.78''')&amp;nbsp;: 

 $ ping smtp.monDomaine.com
 PING smtp.monDomaine.com (12.34.56.78) 56(84) bytes of data.

Si ces 2 vérifications ne fonctionnent pas, '''ce n'est pas la peine d'aller plus loin''', votre serveur DNS est mal configuré. 

= Ouverture des ports  =

Si votre serveur se trouve derrière une *box, il ne pourra pas communiquer avec le monde extérieur. Il nous faut '''ouvrir des ports'''. 

Votre *box possède une '''IP fixe publique''', c'est l'IP que vous avez normalement renseignée dans votre serveur DNS. 

Derrière votre *box, il y a votre serveur mail qui lui possède également une adresse IP, '''privée'''. Les adresses privées sont en général 192.168.0.xxx ou 192.168.1.xxx. 

Admettons que votre serveur ait comme IP 192.168.0.25 dans votre réseau privé. Il faut alors que votre *box redirige toutes les requètes mail vers l'IP privée 192.168.0.25. 

Les ports à ouvrir sont&amp;nbsp;: 

*25&amp;nbsp;: pour que le serveur réceptionne les mails 
*110&amp;nbsp;: pour relever ses mails via POP 
*143&amp;nbsp;: pour relever ses mails via IMAP

Tous ces ports sont à ouvrir en '''TCP'''. 

Freebox&amp;nbsp;: [http://www.dslvalley.com/dossiers/freebox/freebox-nat.php http://www.dslvalley.com/dossiers/freebox/freebox-nat.php] 

NeufBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php] (fin de page) 

LiveBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/orange/livebox-emule.php http://www.dslvalley.com/dossiers/orange/livebox-emule.php] (fin de page)

= Installation de postfix  =

Votre DNS est correctement configuré&amp;nbsp;? Les ports sont ouverts&amp;nbsp;? Bien. Vous avez fait le plus dur. 

Vérifiez le nom de votre machine&amp;nbsp;: 

 $ hostname

Cette commande doit vous retourner '''smtp.monDomaine.com'''. Si ce n'est pas le cas, éditez le fichier '''/etc/hosts''' et vérifiez que vous avez une ligne comme suit&amp;nbsp;: 

 127.0.0.1 smtp.monDomaine.com smtp

Puis&amp;nbsp;: 

 &lt;nowiki&gt;# hostname smtp.monDomaine.com&lt;/nowiki&gt;

Normalement, le hostname est maintenant OK. 

Il est important que le '''hostname''' de votre machine soit le même que celui retourné par la commande '''host -t MX monDomaine.com''', sinon Postfix va vous emmerder. 

Installons postfix&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install postfix&lt;/nowiki&gt;

Choisissez la configuration '''Internet Site'''. Indiquez ensuite le nom de votre machine&amp;nbsp;: '''smtp.monDomaine.com''' (correspond au ''hostname'') 

Au cas où vous voudriez recommencer&amp;nbsp;: 

 &lt;nowiki&gt;# dpkg-reconfigure postfix&lt;/nowiki&gt;

= Configuration  =

Le fichier de configuration de postfix est '''/etc/postfix/main.cf'''. Il est par défaut très bien sécurisé. 

Nous allons dans un premier temps y ajouter cette ligne&amp;nbsp;: 

 home_mailbox = Maildir/

Cette ligne dit à postfix que les mails des utilisateurs doivent aller dans un répertoire nommé Maildir. 

Commentez (ajoutez un #) la ligne où se trouve '''mailbox_command''' pour que procmail ne soit pas utilisé (en tout cas pas pour le moment): 

 &lt;nowiki&gt;#mailbox_command = procmail -a &quot;$EXTENSION&quot;&lt;/nowiki&gt;

Pour que la modification soit prise en compte, redémarrez postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

= Création d'un nouveau mail  =

Bien. Vous avez votre domaine, votre serveur mail tourne. Créer une adresse mail est très simple. Il suffit d'ajouter un utilisateur&amp;nbsp;!! 

Vous voulez créer une adresse kevin@monDomaine.com&amp;nbsp;? Ajoutez l'utilisateur kevin sur votre machine&amp;nbsp;: 

 &lt;nowiki&gt;# adduser kevin&lt;/nowiki&gt;

Répondez aux questions, choisissez un mot de passe à kevin et c'est tout. 

= Tester l'adresse en local  =

Nous allons envoyer un mail à Kevin, vérifions que le paquet '''mailx''' est installé&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install mailx&lt;/nowiki&gt;

On envoie le mail&amp;nbsp;: 

 &lt;nowiki&gt;# echo &quot;Le contenu du mail&quot; | mail -s &quot;ceci est le sujet&quot; kevin@monDomaine.com&lt;/nowiki&gt;

Le mail sera automatiquement déposé dans le répertoire '''Maildir''' situé dans le home de kevin. S'il n'existe pas, le dossier '''Maildir''' sera automatiquement créé. 

 &lt;nowiki&gt;# ls /home/kevin&lt;/nowiki&gt;
 Maildir

N'hésitez pas à consulter les logs pour voir tout ce qui se passe sur votre serveur mail&amp;nbsp;: 

 &lt;nowiki&gt;# cat /var/log/mail.log&lt;/nowiki&gt;

= Kevin veut lire ses mails&amp;nbsp;!!  =

Envoyer des mails, c'est bien mais pouvoir les lire, c'est mieux&amp;nbsp;!! Pour que Kevin puisse lire ses mails dans un client comme '''Mozilla Thunderbird''', c'est tout simple&amp;nbsp;: 

Kevin veut réceptionner ces mails via IMAP&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-imapd&lt;/nowiki&gt;

Il préfère POP3&amp;nbsp;? Pas de problèmes&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-pop3d&lt;/nowiki&gt;

C'est tout, vous pouvez maintenant utiliser votre client mail favori pour réceptionner vos mails. 

Serveur&amp;nbsp;: '''smtp.monDomaine.com''' 

Login&amp;nbsp;: '''kevin''' 

Password&amp;nbsp;: '''le password défini lors de la création de l'utilisateur kevin''' 

= Kevin veut envoyer des mails&amp;nbsp;!!  =

Kevin est content, il peut lire ses mails. Seulement, il aimerait répondre à ses amis mais il ne peut pas. 

== Utiliser le SMTP de son FAI  ==

Postfix possède son propre service SMTP, mais ce dernier sera généralement bloqué. Pour limiter les envois de SPAMS, les FAI bloquent généralement l'envoi de mails. 

Pour que votre serveur mail puisse envoyer des mails, il faut lui dire d'utiliser le SMTP de votre FAI. C'est le paramètre '''relayhost''' du fichier de configuration '''/etc/postfix/main.cf''' qu'il faut modifier&amp;nbsp;: 

 relayhost = smtp.votreFAI.com

Principaux SMTP français&amp;nbsp;: 

 Orange&amp;nbsp;: smtp.orange.fr
 Free&amp;nbsp;: smtp.free.fr
 Neuf&amp;nbsp;: smtp.neuf.fr

== Utiliser le SMTP de Postfix  ==

Cependant, certains FAI (comme Free) permettent de lever ce blocage via une option dans leur panel de gestion. 

Dans ce cas, plus besoin du '''relayhost'''. Vos mails ne passeront plus par votre FAI, c'est VOTRE serveur qui enverra directement les mails. 

Le problème est que les mails que vous enverrez vers les boîtes '''Yahoo''' seront classées en tant que SPAM. '''AOL''' ne voudra pas de vos mails (ce sera explicitement marqué dans les logs). Quant à '''Hotmail''', les logs vous diront que les mails ont bien été reçus, mais vos correspondants ne les recevront jamais. '''Gmail''' ne pose quant à lui aucun souci. 

Vous voulez utiliser le plus possible votre propre SMTP mais vous voulez quand même pouvoir envoyer des mails vers vos potes restés chez Hotmail&amp;nbsp;? 

Créez un fichier '''/etc/postfix/transport''' avec ce contenu&amp;nbsp;: 

 hotmail.fr    smtp:smtp.free.fr
 hotmail.com   smtp:smtp.free.fr
 yahoo.fr      smtp:smtp.free.fr
 yahoo.com     smtp:smtp.free.fr

Ce fichier dit à postfix que pour les domaines hotmail.fr, hotmail.com, yahoo, etc., il utilisera le SMTP de free. Pour tous les autres domaine, il utilisera le smtp local. A vous d'adapter ce fichier en fonction des domaines qui ne veulent pas de vous. 

Bien sûr, si vous n'êtes pas abonné Free, vous ne pourrez pas utiliser le SMTP de Free. 

Pour que Postfix prenne en compte ce fichier, exécutez cette commande&amp;nbsp;: 

 &lt;nowiki&gt;# postmap /etc/postfix/transport&lt;/nowiki&gt;

Puis relancez Postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

A chaque fois que vous modifierez '''/etc/postfix/transport''', n'oubliez pas d'executer la commande précédente (postmap).

== Login... Passwd...  ==

Actuellement, postfix n'accepte d'envoyer les mails que s'ils sont envoyés depuis le serveur mail. Vous avez sûrement l'habitude d'envoyer les mails depuis un autre PC. Généralement, le SMTP demande un login, un password et envoie vos mails. 

C'est ce que nous allons régler maintenant. 

Problème&amp;nbsp;: Postfix seul ne fournit pas de service d'identification. Il doit utiliser un serveur SASL externe. 

Solution&amp;nbsp;: Dovecot, que nous avons précédemment installé pour la réception de mails (IMAP-POP3) peut faire office de serveur SASL. 

Pour activer ce service, dans le fichier de configuration '''/etc/dovecot/dovecot.conf''', ajoutez (ou décommentez) ceci dans la section auth default { }&amp;nbsp;: 

 auth default {
 …
 socket listen {
   client {
     path  &lt;nowiki&gt;= /var/spool/postfix/private/auth&lt;/nowiki&gt;
    group = postfix
    mode  &lt;nowiki&gt;= 0660&lt;/nowiki&gt;
  }
 }
 …

Il s'agit pour Dovecot de créer un socket Unix, sur lequel il écoutera les demandes d'identification provenant de Postfix. Comme le service SMTP de Postfix est chrooté (emprisonné) dans le répertoire '''/var/spool/postfix/''', il faut placer ce socket sous ce répertoire. Maintenant, relancez Dovecot&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/dovecot restart&lt;/nowiki&gt;

Dovecot accepte l'identification mais Postfix ne le sait pas&amp;nbsp;!! Il faut lui dire (ajoutez dans '''/etc/postfix/main.cf''')&amp;nbsp;: 

 &lt;nowiki&gt;# Activer l'identification SASL&lt;/nowiki&gt;
 smtpd_sasl_auth_enable = yes

 &lt;nowiki&gt;# Utiliser le service d'identification de Dovecot&lt;/nowiki&gt;
 smtpd_sasl_type = dovecot
 smtpd_sasl_path = private/auth

 &lt;nowiki&gt;# Noter dans les en-tête des messages l'identifiant de l'utilisateur.&lt;/nowiki&gt;
 smtpd_sasl_authenticated_header = yes

Profitons-en pour peaufiner le fichier de configuration de postfix '''/etc/postfix/main.cf'''&amp;nbsp;: 

 &lt;nowiki&gt;# Règles pour accepter ou refuser une connexion :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on attend une seconde (pour piéger les zombies) ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on interdit la parallélisation là où il n'est pas sensé y en avoir.&lt;/nowiki&gt;
 smtpd_client_restrictions =
    permit_mynetworks, permit_sasl_authenticated,
    sleep 1, reject_unauth_pipelining

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le nom&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'hôte de l'expéditeur (par sa commande HELO ou EHLO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on refuse les noms d'hôte invalides.&lt;/nowiki&gt;
 smtpd_helo_restrictions = reject_invalid_helo_hostname

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît l'adresse&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'expéditeur :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un expéditeur inexistant de notre domaine, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si le domaine de l'expéditeur n'a pas d'IP ou de MX, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un client sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de l'expéditeur n'est pas sous forme canonique, on le refuse.&lt;/nowiki&gt;
 smtpd_sender_restrictions =
    reject_unlisted_sender, reject_unknown_sender_domain,
    permit_mynetworks, permit_sasl_authenticated,
    reject_non_fqdn_sender

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le&lt;/nowiki&gt;
 &lt;nowiki&gt;# destinataire (par la commande RCPT TO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un expéditeur forgé chez nous, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un domaine forgé, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un hôte sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de destination n'est pas sous forme canonique, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - finalement, s'il n'est pas destiné à un domaine que l'on gère ou pour&lt;/nowiki&gt;
 &lt;nowiki&gt;# &lt;/nowiki&gt;  lequel on relaie, on le refuse.
 smtpd_recipient_restrictions =
     reject_unlisted_recipient, reject_unknown_recipient_domain,
     permit_mynetworks, permit_sasl_authenticated,
     reject_non_fqdn_recipient,
     reject_unauth_destination

Allez, on relance postfix pour qu'il prenne en compte tout ça&amp;nbsp;: 

 /etc/init.d/postfix restart

[[Catégorie:Serveurs]]</text>
      <sha1>2ivzcqf4cd5ktrz5n14sojjcjpz935e</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1851</id>
      <parentid>1805</parentid>
      <timestamp>2010-08-05T09:10:17Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Ajout exemple DNS Gandi</comment>
      <text xml:space="preserve" bytes="16496">= Configuration d'un serveur mail avec postfix  =

Vous ne voulez plus confier vos mails à Gmail, Yahoo ou Hotmail ? 

Vous aimeriez héberger vos mails chez vous mais vous pensez que c'est trop dur, trop compliqué ? 

Vous pensez qu'il faut être ingénieur pour monter un serveur mail ? 

Que nenni !! Nous allons voir dans ce tuto la mise en place d'un serveur mail avec Postfix dans le cadre d'une utilisation personnelle. 

Il ne s'agit pas ici de concurrencer Gmail ou Yahoo mais bien d'avoir notre petite boîte mail bien à nous. Faite avec amour. Et qui marche !! 

Ici, pas de gestion par base SQL ou annuaire LDAP, je vais tâcher de faire le plus simple possible. 

C'est parti !! 

= Une adresse mail, c'est quoi ?  =

== kevin@wanadoo.fr  ==

Une adresse mail, c'est un peu comme une adresse postale. Elle se divise en 2 parties&amp;nbsp;: 

*un domaine&amp;nbsp;: '''wanadoo.fr''' 
*un utilisateur&amp;nbsp;: '''kevin'''

Dans mon exemple, lorsque l'on écrit à Kevin via l'adresse '''kevin@wanadoo.fr''', cela signifie que l'on écrit à l'utilisateur '''kevin''' du domaine '''wanadoo.fr'''. 

Plus précisément, le mail arrive sur la '''machine''' sur laquelle se trouve le '''serveur mail''' de wanadoo.fr, pour être ensuite remis dans la '''boîte mail''' de l'utilisateur kevin. 

== Identifier le serveur mail de wanadoo.fr  ==

Wanadoo.fr, c'est le domaine. Le service mail se trouve quant à lui sur une machine bien precise. Pour l'identifier, une commande bien pratique&amp;nbsp;: 

 $ host -t MX wanadoo.fr
 wanadoo.fr mail is handled by 10 smtp.wanadoo.fr.

'''smtp''' est un ''sous-domaine'' de '''wanadoo.fr''', et la machine sur laquelle se trouve le serveur mail se nomme justement '''smtp.wanadoo.fr'''… 

 $ ping smtp.wanadoo.fr
 PING smtp.wanadoo.fr (80.12.242.142) 56(84) bytes of data.

… et son adresse IP est '''80.12.242.142'''. 

Dans la réalité, l'architecture mail de Wanadoo (Orange maintenant…) est je pense un peu plus compliquée que ça mais ça donne une bonne image de ce que nous allons reproduire pour notre serveur mail. 

= Prérequis  =

Pour avoir son serveur mail, il faut donc&amp;nbsp;: 

*un nom de domaine 
*une IP fixe 
*un PC allumé si possible 24h/24

Pourquoi une IP fixe&amp;nbsp;? Les mails doivent pouvoir toujours trouver le serveur mail, c'est pourquoi l'IP doit être fixe. 

L'association nom de domaine ⇔ adresse IP se règle au niveau du serveur DNS. C'est celui-ci que nous allons régler en premier. 

== Configurer le serveur DNS  ==

Cette partie se révèle souvent être une prise de tête pour les apprentis auto-hébergés. 

On doit spécifier dans le serveur DNS sur quelle IP on peut joindre le serveur mail. 

La plupart des registrars (les marchands de noms de domaine) fournissent une interface simplifiée pour le serveur DNS. 

Un exemple de configuration pour un domaine acheté chez Gandi.net

=== Le champ A  ===

Il faut tout d'abord configurer le champ '''A''' qui fait le lien entre nom de domaine et l'adresse IP du serveur&amp;nbsp;: 

 @       IN    A    12.34.56.78 
 smtp    IN    A    12.34.56.78

'''@'''&amp;nbsp;: signifie que '''monDomaine.com''' est lié à l'IP 12.34.56.78 

'''smtp'''&amp;nbsp;: signifie que le sous-domaine '''smtp.monDomaine.com''' est lui aussi lié à l'IP 12.34.56.78 

Vous pouvez indiquer des adresses IP différentes si vous possédez plusieurs serveurs et plusieurs IP. 

=== Le champ MX  ===

Une fois que le champ '''A''' est complété, il faut pour définir le serveur mail s'occuper du champ '''MX''' ('''M'''ail e'''X'''change). 

Nous allons convenir que le serveur mail correspond au serveur '''smtp.monDomaine.com'''. Son adresse IP ayant déjà été définie par le champ '''A''', le champ '''MX''' s'écrit sous cette forme&amp;nbsp;: 

 monDomaine.com.    IN    MX    10    smtp

Ce qui signifie que '''smtp''' du champ '''A''' sera le serveur '''MX''' de '''monDomaine.com'''. 

Vous suivez toujours&amp;nbsp;?? 

Lorsque vous enverrez des mails sur le domaine '''monDomaine.com''', ils seront automatiquement acheminés vers le serveur '''smtp.monDomaine.com'''. 

'''''Important&amp;nbsp;:''''' 

*Un champ '''MX''' se définit toujours sur un champ '''A''', pas sur un '''CNAME''' (non abordé ici) 
*Ne pas oublier le point après monDomaine.com.

=== Un exemple de configuration de DNS chez gandi.net ===

[[Fichier:Gandi.jpeg]]

Ce qui donne en mode &quot;expert&quot;

 smtp 300 IN A 41.188.26.122 
 @ 28800 IN MX 10 smtp 
 www 10800 IN A 41.188.26.122 

== Vérifications  ==

Avant même d'installer et configurer son serveur, il faut faire quelques vérifications. 

 $ host -t MX monDomaine.com

Cette commande doit retourner une ligne de ce genre&amp;nbsp;: 

 monDomaine.com mail is handled by 10 smtp.monDomaine.com

Bien sûr, ''smtp.monDomaine.com'' doit être associé à votre IP fixe (ici '''12.34.56.78''')&amp;nbsp;: 

 $ ping smtp.monDomaine.com
 PING smtp.monDomaine.com (12.34.56.78) 56(84) bytes of data.

Si ces 2 vérifications ne fonctionnent pas, '''ce n'est pas la peine d'aller plus loin''', votre serveur DNS est mal configuré. 

= Ouverture des ports  =

Si votre serveur se trouve derrière une *box, il ne pourra pas communiquer avec le monde extérieur. Il nous faut '''ouvrir des ports'''. 

Votre *box possède une '''IP fixe publique''', c'est l'IP que vous avez normalement renseignée dans votre serveur DNS. 

Derrière votre *box, il y a votre serveur mail qui lui possède également une adresse IP, '''privée'''. Les adresses privées sont en général 192.168.0.xxx ou 192.168.1.xxx. 

Admettons que votre serveur ait comme IP 192.168.0.25 dans votre réseau privé. Il faut alors que votre *box redirige toutes les requètes mail vers l'IP privée 192.168.0.25. 

Les ports à ouvrir sont&amp;nbsp;: 

*25&amp;nbsp;: pour que le serveur réceptionne les mails 
*110&amp;nbsp;: pour relever ses mails via POP 
*143&amp;nbsp;: pour relever ses mails via IMAP

Tous ces ports sont à ouvrir en '''TCP'''. 

Freebox&amp;nbsp;: [http://www.dslvalley.com/dossiers/freebox/freebox-nat.php http://www.dslvalley.com/dossiers/freebox/freebox-nat.php] 

NeufBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php] (fin de page) 

LiveBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/orange/livebox-emule.php http://www.dslvalley.com/dossiers/orange/livebox-emule.php] (fin de page)

= Installation de postfix  =

Votre DNS est correctement configuré&amp;nbsp;? Les ports sont ouverts&amp;nbsp;? Bien. Vous avez fait le plus dur. 

Vérifiez le nom de votre machine&amp;nbsp;: 

 $ hostname

Cette commande doit vous retourner '''smtp.monDomaine.com'''. Si ce n'est pas le cas, éditez le fichier '''/etc/hosts''' et vérifiez que vous avez une ligne comme suit&amp;nbsp;: 

 127.0.0.1 smtp.monDomaine.com smtp

Puis&amp;nbsp;: 

 &lt;nowiki&gt;# hostname smtp.monDomaine.com&lt;/nowiki&gt;

Normalement, le hostname est maintenant OK. 

Il est important que le '''hostname''' de votre machine soit le même que celui retourné par la commande '''host -t MX monDomaine.com''', sinon Postfix va vous emmerder. 

Installons postfix&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install postfix&lt;/nowiki&gt;

Choisissez la configuration '''Internet Site'''. Indiquez ensuite le nom de votre machine&amp;nbsp;: '''smtp.monDomaine.com''' (correspond au ''hostname'') 

Au cas où vous voudriez recommencer&amp;nbsp;: 

 &lt;nowiki&gt;# dpkg-reconfigure postfix&lt;/nowiki&gt;

= Configuration  =

Le fichier de configuration de postfix est '''/etc/postfix/main.cf'''. Il est par défaut très bien sécurisé. 

Nous allons dans un premier temps y ajouter cette ligne&amp;nbsp;: 

 home_mailbox = Maildir/

Cette ligne dit à postfix que les mails des utilisateurs doivent aller dans un répertoire nommé Maildir. 

Commentez (ajoutez un #) la ligne où se trouve '''mailbox_command''' pour que procmail ne soit pas utilisé (en tout cas pas pour le moment): 

 &lt;nowiki&gt;#mailbox_command = procmail -a &quot;$EXTENSION&quot;&lt;/nowiki&gt;

Pour que la modification soit prise en compte, redémarrez postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

= Création d'un nouveau mail  =

Bien. Vous avez votre domaine, votre serveur mail tourne. Créer une adresse mail est très simple. Il suffit d'ajouter un utilisateur&amp;nbsp;!! 

Vous voulez créer une adresse kevin@monDomaine.com&amp;nbsp;? Ajoutez l'utilisateur kevin sur votre machine&amp;nbsp;: 

 &lt;nowiki&gt;# adduser kevin&lt;/nowiki&gt;

Répondez aux questions, choisissez un mot de passe à kevin et c'est tout. 

= Tester l'adresse en local  =

Nous allons envoyer un mail à Kevin, vérifions que le paquet '''mailx''' est installé&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install mailx&lt;/nowiki&gt;

On envoie le mail&amp;nbsp;: 

 &lt;nowiki&gt;# echo &quot;Le contenu du mail&quot; | mail -s &quot;ceci est le sujet&quot; kevin@monDomaine.com&lt;/nowiki&gt;

Le mail sera automatiquement déposé dans le répertoire '''Maildir''' situé dans le home de kevin. S'il n'existe pas, le dossier '''Maildir''' sera automatiquement créé. 

 &lt;nowiki&gt;# ls /home/kevin&lt;/nowiki&gt;
 Maildir

N'hésitez pas à consulter les logs pour voir tout ce qui se passe sur votre serveur mail&amp;nbsp;: 

 &lt;nowiki&gt;# cat /var/log/mail.log&lt;/nowiki&gt;

= Kevin veut lire ses mails&amp;nbsp;!!  =

Envoyer des mails, c'est bien mais pouvoir les lire, c'est mieux&amp;nbsp;!! Pour que Kevin puisse lire ses mails dans un client comme '''Mozilla Thunderbird''', c'est tout simple&amp;nbsp;: 

Kevin veut réceptionner ces mails via IMAP&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-imapd&lt;/nowiki&gt;

Il préfère POP3&amp;nbsp;? Pas de problèmes&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-pop3d&lt;/nowiki&gt;

C'est tout, vous pouvez maintenant utiliser votre client mail favori pour réceptionner vos mails. 

Serveur&amp;nbsp;: '''smtp.monDomaine.com''' 

Login&amp;nbsp;: '''kevin''' 

Password&amp;nbsp;: '''le password défini lors de la création de l'utilisateur kevin''' 

= Kevin veut envoyer des mails&amp;nbsp;!!  =

Kevin est content, il peut lire ses mails. Seulement, il aimerait répondre à ses amis mais il ne peut pas. 

== Utiliser le SMTP de son FAI  ==

Postfix possède son propre service SMTP, mais ce dernier sera généralement bloqué. Pour limiter les envois de SPAMS, les FAI bloquent généralement l'envoi de mails. 

Pour que votre serveur mail puisse envoyer des mails, il faut lui dire d'utiliser le SMTP de votre FAI. C'est le paramètre '''relayhost''' du fichier de configuration '''/etc/postfix/main.cf''' qu'il faut modifier&amp;nbsp;: 

 relayhost = smtp.votreFAI.com

Principaux SMTP français&amp;nbsp;: 

 Orange&amp;nbsp;: smtp.orange.fr
 Free&amp;nbsp;: smtp.free.fr
 Neuf&amp;nbsp;: smtp.neuf.fr

== Utiliser le SMTP de Postfix  ==

Cependant, certains FAI (comme Free) permettent de lever ce blocage via une option dans leur panel de gestion. 

Dans ce cas, plus besoin du '''relayhost'''. Vos mails ne passeront plus par votre FAI, c'est VOTRE serveur qui enverra directement les mails. 

Le problème est que les mails que vous enverrez vers les boîtes '''Yahoo''' seront classées en tant que SPAM. '''AOL''' ne voudra pas de vos mails (ce sera explicitement marqué dans les logs). Quant à '''Hotmail''', les logs vous diront que les mails ont bien été reçus, mais vos correspondants ne les recevront jamais. '''Gmail''' ne pose quant à lui aucun souci. 

Vous voulez utiliser le plus possible votre propre SMTP mais vous voulez quand même pouvoir envoyer des mails vers vos potes restés chez Hotmail&amp;nbsp;? 

Créez un fichier '''/etc/postfix/transport''' avec ce contenu&amp;nbsp;: 

 hotmail.fr    smtp:smtp.free.fr
 hotmail.com   smtp:smtp.free.fr
 yahoo.fr      smtp:smtp.free.fr
 yahoo.com     smtp:smtp.free.fr

Ce fichier dit à postfix que pour les domaines hotmail.fr, hotmail.com, yahoo, etc., il utilisera le SMTP de free. Pour tous les autres domaine, il utilisera le smtp local. A vous d'adapter ce fichier en fonction des domaines qui ne veulent pas de vous. 

Bien sûr, si vous n'êtes pas abonné Free, vous ne pourrez pas utiliser le SMTP de Free. 

Pour que Postfix prenne en compte ce fichier, exécutez cette commande&amp;nbsp;: 

 &lt;nowiki&gt;# postmap /etc/postfix/transport&lt;/nowiki&gt;

Puis relancez Postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

A chaque fois que vous modifierez '''/etc/postfix/transport''', n'oubliez pas d'executer la commande précédente (postmap).

== Login... Passwd...  ==

Actuellement, postfix n'accepte d'envoyer les mails que s'ils sont envoyés depuis le serveur mail. Vous avez sûrement l'habitude d'envoyer les mails depuis un autre PC. Généralement, le SMTP demande un login, un password et envoie vos mails. 

C'est ce que nous allons régler maintenant. 

Problème&amp;nbsp;: Postfix seul ne fournit pas de service d'identification. Il doit utiliser un serveur SASL externe. 

Solution&amp;nbsp;: Dovecot, que nous avons précédemment installé pour la réception de mails (IMAP-POP3) peut faire office de serveur SASL. 

Pour activer ce service, dans le fichier de configuration '''/etc/dovecot/dovecot.conf''', ajoutez (ou décommentez) ceci dans la section auth default { }&amp;nbsp;: 

 auth default {
 …
 socket listen {
   client {
     path  &lt;nowiki&gt;= /var/spool/postfix/private/auth&lt;/nowiki&gt;
    group = postfix
    mode  &lt;nowiki&gt;= 0660&lt;/nowiki&gt;
  }
 }
 …

Il s'agit pour Dovecot de créer un socket Unix, sur lequel il écoutera les demandes d'identification provenant de Postfix. Comme le service SMTP de Postfix est chrooté (emprisonné) dans le répertoire '''/var/spool/postfix/''', il faut placer ce socket sous ce répertoire. Maintenant, relancez Dovecot&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/dovecot restart&lt;/nowiki&gt;

Dovecot accepte l'identification mais Postfix ne le sait pas&amp;nbsp;!! Il faut lui dire (ajoutez dans '''/etc/postfix/main.cf''')&amp;nbsp;: 

 &lt;nowiki&gt;# Activer l'identification SASL&lt;/nowiki&gt;
 smtpd_sasl_auth_enable = yes

 &lt;nowiki&gt;# Utiliser le service d'identification de Dovecot&lt;/nowiki&gt;
 smtpd_sasl_type = dovecot
 smtpd_sasl_path = private/auth

 &lt;nowiki&gt;# Noter dans les en-tête des messages l'identifiant de l'utilisateur.&lt;/nowiki&gt;
 smtpd_sasl_authenticated_header = yes

Profitons-en pour peaufiner le fichier de configuration de postfix '''/etc/postfix/main.cf'''&amp;nbsp;: 

 &lt;nowiki&gt;# Règles pour accepter ou refuser une connexion :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on attend une seconde (pour piéger les zombies) ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on interdit la parallélisation là où il n'est pas sensé y en avoir.&lt;/nowiki&gt;
 smtpd_client_restrictions =
    permit_mynetworks, permit_sasl_authenticated,
    sleep 1, reject_unauth_pipelining

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le nom&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'hôte de l'expéditeur (par sa commande HELO ou EHLO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on refuse les noms d'hôte invalides.&lt;/nowiki&gt;
 smtpd_helo_restrictions = reject_invalid_helo_hostname

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît l'adresse&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'expéditeur :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un expéditeur inexistant de notre domaine, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si le domaine de l'expéditeur n'a pas d'IP ou de MX, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un client sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de l'expéditeur n'est pas sous forme canonique, on le refuse.&lt;/nowiki&gt;
 smtpd_sender_restrictions =
    reject_unlisted_sender, reject_unknown_sender_domain,
    permit_mynetworks, permit_sasl_authenticated,
    reject_non_fqdn_sender

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le&lt;/nowiki&gt;
 &lt;nowiki&gt;# destinataire (par la commande RCPT TO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un expéditeur forgé chez nous, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un domaine forgé, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un hôte sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de destination n'est pas sous forme canonique, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - finalement, s'il n'est pas destiné à un domaine que l'on gère ou pour&lt;/nowiki&gt;
 &lt;nowiki&gt;# &lt;/nowiki&gt;  lequel on relaie, on le refuse.
 smtpd_recipient_restrictions =
     reject_unlisted_recipient, reject_unknown_recipient_domain,
     permit_mynetworks, permit_sasl_authenticated,
     reject_non_fqdn_recipient,
     reject_unauth_destination

Allez, on relance postfix pour qu'il prenne en compte tout ça&amp;nbsp;: 

 /etc/init.d/postfix restart

[[Catégorie:Serveurs]]</text>
      <sha1>kb04jpwx3pe1tpfktub8i9i8tna6pfu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1852</id>
      <parentid>1851</parentid>
      <timestamp>2010-08-05T11:37:27Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Vérifications */</comment>
      <text xml:space="preserve" bytes="16794">= Configuration d'un serveur mail avec postfix  =

Vous ne voulez plus confier vos mails à Gmail, Yahoo ou Hotmail ? 

Vous aimeriez héberger vos mails chez vous mais vous pensez que c'est trop dur, trop compliqué ? 

Vous pensez qu'il faut être ingénieur pour monter un serveur mail ? 

Que nenni !! Nous allons voir dans ce tuto la mise en place d'un serveur mail avec Postfix dans le cadre d'une utilisation personnelle. 

Il ne s'agit pas ici de concurrencer Gmail ou Yahoo mais bien d'avoir notre petite boîte mail bien à nous. Faite avec amour. Et qui marche !! 

Ici, pas de gestion par base SQL ou annuaire LDAP, je vais tâcher de faire le plus simple possible. 

C'est parti !! 

= Une adresse mail, c'est quoi ?  =

== kevin@wanadoo.fr  ==

Une adresse mail, c'est un peu comme une adresse postale. Elle se divise en 2 parties&amp;nbsp;: 

*un domaine&amp;nbsp;: '''wanadoo.fr''' 
*un utilisateur&amp;nbsp;: '''kevin'''

Dans mon exemple, lorsque l'on écrit à Kevin via l'adresse '''kevin@wanadoo.fr''', cela signifie que l'on écrit à l'utilisateur '''kevin''' du domaine '''wanadoo.fr'''. 

Plus précisément, le mail arrive sur la '''machine''' sur laquelle se trouve le '''serveur mail''' de wanadoo.fr, pour être ensuite remis dans la '''boîte mail''' de l'utilisateur kevin. 

== Identifier le serveur mail de wanadoo.fr  ==

Wanadoo.fr, c'est le domaine. Le service mail se trouve quant à lui sur une machine bien precise. Pour l'identifier, une commande bien pratique&amp;nbsp;: 

 $ host -t MX wanadoo.fr
 wanadoo.fr mail is handled by 10 smtp.wanadoo.fr.

'''smtp''' est un ''sous-domaine'' de '''wanadoo.fr''', et la machine sur laquelle se trouve le serveur mail se nomme justement '''smtp.wanadoo.fr'''… 

 $ ping smtp.wanadoo.fr
 PING smtp.wanadoo.fr (80.12.242.142) 56(84) bytes of data.

… et son adresse IP est '''80.12.242.142'''. 

Dans la réalité, l'architecture mail de Wanadoo (Orange maintenant…) est je pense un peu plus compliquée que ça mais ça donne une bonne image de ce que nous allons reproduire pour notre serveur mail. 

= Prérequis  =

Pour avoir son serveur mail, il faut donc&amp;nbsp;: 

*un nom de domaine 
*une IP fixe 
*un PC allumé si possible 24h/24

Pourquoi une IP fixe&amp;nbsp;? Les mails doivent pouvoir toujours trouver le serveur mail, c'est pourquoi l'IP doit être fixe. 

L'association nom de domaine ⇔ adresse IP se règle au niveau du serveur DNS. C'est celui-ci que nous allons régler en premier. 

== Configurer le serveur DNS  ==

Cette partie se révèle souvent être une prise de tête pour les apprentis auto-hébergés. 

On doit spécifier dans le serveur DNS sur quelle IP on peut joindre le serveur mail. 

La plupart des registrars (les marchands de noms de domaine) fournissent une interface simplifiée pour le serveur DNS. 

Un exemple de configuration pour un domaine acheté chez Gandi.net

=== Le champ A  ===

Il faut tout d'abord configurer le champ '''A''' qui fait le lien entre nom de domaine et l'adresse IP du serveur&amp;nbsp;: 

 @       IN    A    12.34.56.78 
 smtp    IN    A    12.34.56.78

'''@'''&amp;nbsp;: signifie que '''monDomaine.com''' est lié à l'IP 12.34.56.78 

'''smtp'''&amp;nbsp;: signifie que le sous-domaine '''smtp.monDomaine.com''' est lui aussi lié à l'IP 12.34.56.78 

Vous pouvez indiquer des adresses IP différentes si vous possédez plusieurs serveurs et plusieurs IP. 

=== Le champ MX  ===

Une fois que le champ '''A''' est complété, il faut pour définir le serveur mail s'occuper du champ '''MX''' ('''M'''ail e'''X'''change). 

Nous allons convenir que le serveur mail correspond au serveur '''smtp.monDomaine.com'''. Son adresse IP ayant déjà été définie par le champ '''A''', le champ '''MX''' s'écrit sous cette forme&amp;nbsp;: 

 monDomaine.com.    IN    MX    10    smtp

Ce qui signifie que '''smtp''' du champ '''A''' sera le serveur '''MX''' de '''monDomaine.com'''. 

Vous suivez toujours&amp;nbsp;?? 

Lorsque vous enverrez des mails sur le domaine '''monDomaine.com''', ils seront automatiquement acheminés vers le serveur '''smtp.monDomaine.com'''. 

'''''Important&amp;nbsp;:''''' 

*Un champ '''MX''' se définit toujours sur un champ '''A''', pas sur un '''CNAME''' (non abordé ici) 
*Ne pas oublier le point après monDomaine.com.

=== Un exemple de configuration de DNS chez gandi.net ===

[[Fichier:Gandi.jpeg]]

Ce qui donne en mode &quot;expert&quot;

 smtp 300 IN A 41.188.26.122 
 @ 28800 IN MX 10 smtp 
 www 10800 IN A 41.188.26.122 

== Vérifications  ==

Avant même d'installer et configurer son serveur, il faut faire quelques vérifications. 

 $ host -t MX monDomaine.com

Cette commande doit retourner une ligne de ce genre&amp;nbsp;: 

 monDomaine.com mail is handled by 10 smtp.monDomaine.com

Bien sûr, ''smtp.monDomaine.com'' doit être associé à votre IP fixe (ici '''12.34.56.78''')&amp;nbsp;: 

 $ ping smtp.monDomaine.com
 PING smtp.monDomaine.com (12.34.56.78) 56(84) bytes of data.

Si ces 2 vérifications ne fonctionnent pas, '''ce n'est pas la peine d'aller plus loin''', votre serveur DNS est mal configuré.

=== Vérification si vous disposez d'un DNS local ===

Au cas ou vous disposeriez d'un DNS sur votre réseau local, pensez à vérifier sur un DNS externe...

 $ host -t MX monDomaine.com DNS_Externe

C'est le seul moyen d'être certain que &quot;le monde extérieur&quot; saura ou vous envoyer vos mails...

= Ouverture des ports  =

Si votre serveur se trouve derrière une *box, il ne pourra pas communiquer avec le monde extérieur. Il nous faut '''ouvrir des ports'''. 

Votre *box possède une '''IP fixe publique''', c'est l'IP que vous avez normalement renseignée dans votre serveur DNS. 

Derrière votre *box, il y a votre serveur mail qui lui possède également une adresse IP, '''privée'''. Les adresses privées sont en général 192.168.0.xxx ou 192.168.1.xxx. 

Admettons que votre serveur ait comme IP 192.168.0.25 dans votre réseau privé. Il faut alors que votre *box redirige toutes les requètes mail vers l'IP privée 192.168.0.25. 

Les ports à ouvrir sont&amp;nbsp;: 

*25&amp;nbsp;: pour que le serveur réceptionne les mails 
*110&amp;nbsp;: pour relever ses mails via POP 
*143&amp;nbsp;: pour relever ses mails via IMAP

Tous ces ports sont à ouvrir en '''TCP'''. 

Freebox&amp;nbsp;: [http://www.dslvalley.com/dossiers/freebox/freebox-nat.php http://www.dslvalley.com/dossiers/freebox/freebox-nat.php] 

NeufBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php] (fin de page) 

LiveBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/orange/livebox-emule.php http://www.dslvalley.com/dossiers/orange/livebox-emule.php] (fin de page)

= Installation de postfix  =

Votre DNS est correctement configuré&amp;nbsp;? Les ports sont ouverts&amp;nbsp;? Bien. Vous avez fait le plus dur. 

Vérifiez le nom de votre machine&amp;nbsp;: 

 $ hostname

Cette commande doit vous retourner '''smtp.monDomaine.com'''. Si ce n'est pas le cas, éditez le fichier '''/etc/hosts''' et vérifiez que vous avez une ligne comme suit&amp;nbsp;: 

 127.0.0.1 smtp.monDomaine.com smtp

Puis&amp;nbsp;: 

 &lt;nowiki&gt;# hostname smtp.monDomaine.com&lt;/nowiki&gt;

Normalement, le hostname est maintenant OK. 

Il est important que le '''hostname''' de votre machine soit le même que celui retourné par la commande '''host -t MX monDomaine.com''', sinon Postfix va vous emmerder. 

Installons postfix&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install postfix&lt;/nowiki&gt;

Choisissez la configuration '''Internet Site'''. Indiquez ensuite le nom de votre machine&amp;nbsp;: '''smtp.monDomaine.com''' (correspond au ''hostname'') 

Au cas où vous voudriez recommencer&amp;nbsp;: 

 &lt;nowiki&gt;# dpkg-reconfigure postfix&lt;/nowiki&gt;

= Configuration  =

Le fichier de configuration de postfix est '''/etc/postfix/main.cf'''. Il est par défaut très bien sécurisé. 

Nous allons dans un premier temps y ajouter cette ligne&amp;nbsp;: 

 home_mailbox = Maildir/

Cette ligne dit à postfix que les mails des utilisateurs doivent aller dans un répertoire nommé Maildir. 

Commentez (ajoutez un #) la ligne où se trouve '''mailbox_command''' pour que procmail ne soit pas utilisé (en tout cas pas pour le moment): 

 &lt;nowiki&gt;#mailbox_command = procmail -a &quot;$EXTENSION&quot;&lt;/nowiki&gt;

Pour que la modification soit prise en compte, redémarrez postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

= Création d'un nouveau mail  =

Bien. Vous avez votre domaine, votre serveur mail tourne. Créer une adresse mail est très simple. Il suffit d'ajouter un utilisateur&amp;nbsp;!! 

Vous voulez créer une adresse kevin@monDomaine.com&amp;nbsp;? Ajoutez l'utilisateur kevin sur votre machine&amp;nbsp;: 

 &lt;nowiki&gt;# adduser kevin&lt;/nowiki&gt;

Répondez aux questions, choisissez un mot de passe à kevin et c'est tout. 

= Tester l'adresse en local  =

Nous allons envoyer un mail à Kevin, vérifions que le paquet '''mailx''' est installé&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install mailx&lt;/nowiki&gt;

On envoie le mail&amp;nbsp;: 

 &lt;nowiki&gt;# echo &quot;Le contenu du mail&quot; | mail -s &quot;ceci est le sujet&quot; kevin@monDomaine.com&lt;/nowiki&gt;

Le mail sera automatiquement déposé dans le répertoire '''Maildir''' situé dans le home de kevin. S'il n'existe pas, le dossier '''Maildir''' sera automatiquement créé. 

 &lt;nowiki&gt;# ls /home/kevin&lt;/nowiki&gt;
 Maildir

N'hésitez pas à consulter les logs pour voir tout ce qui se passe sur votre serveur mail&amp;nbsp;: 

 &lt;nowiki&gt;# cat /var/log/mail.log&lt;/nowiki&gt;

= Kevin veut lire ses mails&amp;nbsp;!!  =

Envoyer des mails, c'est bien mais pouvoir les lire, c'est mieux&amp;nbsp;!! Pour que Kevin puisse lire ses mails dans un client comme '''Mozilla Thunderbird''', c'est tout simple&amp;nbsp;: 

Kevin veut réceptionner ces mails via IMAP&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-imapd&lt;/nowiki&gt;

Il préfère POP3&amp;nbsp;? Pas de problèmes&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-pop3d&lt;/nowiki&gt;

C'est tout, vous pouvez maintenant utiliser votre client mail favori pour réceptionner vos mails. 

Serveur&amp;nbsp;: '''smtp.monDomaine.com''' 

Login&amp;nbsp;: '''kevin''' 

Password&amp;nbsp;: '''le password défini lors de la création de l'utilisateur kevin''' 

= Kevin veut envoyer des mails&amp;nbsp;!!  =

Kevin est content, il peut lire ses mails. Seulement, il aimerait répondre à ses amis mais il ne peut pas. 

== Utiliser le SMTP de son FAI  ==

Postfix possède son propre service SMTP, mais ce dernier sera généralement bloqué. Pour limiter les envois de SPAMS, les FAI bloquent généralement l'envoi de mails. 

Pour que votre serveur mail puisse envoyer des mails, il faut lui dire d'utiliser le SMTP de votre FAI. C'est le paramètre '''relayhost''' du fichier de configuration '''/etc/postfix/main.cf''' qu'il faut modifier&amp;nbsp;: 

 relayhost = smtp.votreFAI.com

Principaux SMTP français&amp;nbsp;: 

 Orange&amp;nbsp;: smtp.orange.fr
 Free&amp;nbsp;: smtp.free.fr
 Neuf&amp;nbsp;: smtp.neuf.fr

== Utiliser le SMTP de Postfix  ==

Cependant, certains FAI (comme Free) permettent de lever ce blocage via une option dans leur panel de gestion. 

Dans ce cas, plus besoin du '''relayhost'''. Vos mails ne passeront plus par votre FAI, c'est VOTRE serveur qui enverra directement les mails. 

Le problème est que les mails que vous enverrez vers les boîtes '''Yahoo''' seront classées en tant que SPAM. '''AOL''' ne voudra pas de vos mails (ce sera explicitement marqué dans les logs). Quant à '''Hotmail''', les logs vous diront que les mails ont bien été reçus, mais vos correspondants ne les recevront jamais. '''Gmail''' ne pose quant à lui aucun souci. 

Vous voulez utiliser le plus possible votre propre SMTP mais vous voulez quand même pouvoir envoyer des mails vers vos potes restés chez Hotmail&amp;nbsp;? 

Créez un fichier '''/etc/postfix/transport''' avec ce contenu&amp;nbsp;: 

 hotmail.fr    smtp:smtp.free.fr
 hotmail.com   smtp:smtp.free.fr
 yahoo.fr      smtp:smtp.free.fr
 yahoo.com     smtp:smtp.free.fr

Ce fichier dit à postfix que pour les domaines hotmail.fr, hotmail.com, yahoo, etc., il utilisera le SMTP de free. Pour tous les autres domaine, il utilisera le smtp local. A vous d'adapter ce fichier en fonction des domaines qui ne veulent pas de vous. 

Bien sûr, si vous n'êtes pas abonné Free, vous ne pourrez pas utiliser le SMTP de Free. 

Pour que Postfix prenne en compte ce fichier, exécutez cette commande&amp;nbsp;: 

 &lt;nowiki&gt;# postmap /etc/postfix/transport&lt;/nowiki&gt;

Puis relancez Postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

A chaque fois que vous modifierez '''/etc/postfix/transport''', n'oubliez pas d'executer la commande précédente (postmap).

== Login... Passwd...  ==

Actuellement, postfix n'accepte d'envoyer les mails que s'ils sont envoyés depuis le serveur mail. Vous avez sûrement l'habitude d'envoyer les mails depuis un autre PC. Généralement, le SMTP demande un login, un password et envoie vos mails. 

C'est ce que nous allons régler maintenant. 

Problème&amp;nbsp;: Postfix seul ne fournit pas de service d'identification. Il doit utiliser un serveur SASL externe. 

Solution&amp;nbsp;: Dovecot, que nous avons précédemment installé pour la réception de mails (IMAP-POP3) peut faire office de serveur SASL. 

Pour activer ce service, dans le fichier de configuration '''/etc/dovecot/dovecot.conf''', ajoutez (ou décommentez) ceci dans la section auth default { }&amp;nbsp;: 

 auth default {
 …
 socket listen {
   client {
     path  &lt;nowiki&gt;= /var/spool/postfix/private/auth&lt;/nowiki&gt;
    group = postfix
    mode  &lt;nowiki&gt;= 0660&lt;/nowiki&gt;
  }
 }
 …

Il s'agit pour Dovecot de créer un socket Unix, sur lequel il écoutera les demandes d'identification provenant de Postfix. Comme le service SMTP de Postfix est chrooté (emprisonné) dans le répertoire '''/var/spool/postfix/''', il faut placer ce socket sous ce répertoire. Maintenant, relancez Dovecot&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/dovecot restart&lt;/nowiki&gt;

Dovecot accepte l'identification mais Postfix ne le sait pas&amp;nbsp;!! Il faut lui dire (ajoutez dans '''/etc/postfix/main.cf''')&amp;nbsp;: 

 &lt;nowiki&gt;# Activer l'identification SASL&lt;/nowiki&gt;
 smtpd_sasl_auth_enable = yes

 &lt;nowiki&gt;# Utiliser le service d'identification de Dovecot&lt;/nowiki&gt;
 smtpd_sasl_type = dovecot
 smtpd_sasl_path = private/auth

 &lt;nowiki&gt;# Noter dans les en-tête des messages l'identifiant de l'utilisateur.&lt;/nowiki&gt;
 smtpd_sasl_authenticated_header = yes

Profitons-en pour peaufiner le fichier de configuration de postfix '''/etc/postfix/main.cf'''&amp;nbsp;: 

 &lt;nowiki&gt;# Règles pour accepter ou refuser une connexion :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on attend une seconde (pour piéger les zombies) ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on interdit la parallélisation là où il n'est pas sensé y en avoir.&lt;/nowiki&gt;
 smtpd_client_restrictions =
    permit_mynetworks, permit_sasl_authenticated,
    sleep 1, reject_unauth_pipelining

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le nom&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'hôte de l'expéditeur (par sa commande HELO ou EHLO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on refuse les noms d'hôte invalides.&lt;/nowiki&gt;
 smtpd_helo_restrictions = reject_invalid_helo_hostname

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît l'adresse&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'expéditeur :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un expéditeur inexistant de notre domaine, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si le domaine de l'expéditeur n'a pas d'IP ou de MX, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un client sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de l'expéditeur n'est pas sous forme canonique, on le refuse.&lt;/nowiki&gt;
 smtpd_sender_restrictions =
    reject_unlisted_sender, reject_unknown_sender_domain,
    permit_mynetworks, permit_sasl_authenticated,
    reject_non_fqdn_sender

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le&lt;/nowiki&gt;
 &lt;nowiki&gt;# destinataire (par la commande RCPT TO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un expéditeur forgé chez nous, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un domaine forgé, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un hôte sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de destination n'est pas sous forme canonique, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - finalement, s'il n'est pas destiné à un domaine que l'on gère ou pour&lt;/nowiki&gt;
 &lt;nowiki&gt;# &lt;/nowiki&gt;  lequel on relaie, on le refuse.
 smtpd_recipient_restrictions =
     reject_unlisted_recipient, reject_unknown_recipient_domain,
     permit_mynetworks, permit_sasl_authenticated,
     reject_non_fqdn_recipient,
     reject_unauth_destination

Allez, on relance postfix pour qu'il prenne en compte tout ça&amp;nbsp;: 

 /etc/init.d/postfix restart

[[Catégorie:Serveurs]]</text>
      <sha1>9112jazugtgkonbdpcnl5rgu70womwa</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2031</id>
      <parentid>1852</parentid>
      <timestamp>2010-08-27T14:55:03Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Vérifications */</comment>
      <text xml:space="preserve" bytes="16830">= Configuration d'un serveur mail avec postfix  =

Vous ne voulez plus confier vos mails à Gmail, Yahoo ou Hotmail ? 

Vous aimeriez héberger vos mails chez vous mais vous pensez que c'est trop dur, trop compliqué ? 

Vous pensez qu'il faut être ingénieur pour monter un serveur mail ? 

Que nenni !! Nous allons voir dans ce tuto la mise en place d'un serveur mail avec Postfix dans le cadre d'une utilisation personnelle. 

Il ne s'agit pas ici de concurrencer Gmail ou Yahoo mais bien d'avoir notre petite boîte mail bien à nous. Faite avec amour. Et qui marche !! 

Ici, pas de gestion par base SQL ou annuaire LDAP, je vais tâcher de faire le plus simple possible. 

C'est parti !! 

= Une adresse mail, c'est quoi ?  =

== kevin@wanadoo.fr  ==

Une adresse mail, c'est un peu comme une adresse postale. Elle se divise en 2 parties&amp;nbsp;: 

*un domaine&amp;nbsp;: '''wanadoo.fr''' 
*un utilisateur&amp;nbsp;: '''kevin'''

Dans mon exemple, lorsque l'on écrit à Kevin via l'adresse '''kevin@wanadoo.fr''', cela signifie que l'on écrit à l'utilisateur '''kevin''' du domaine '''wanadoo.fr'''. 

Plus précisément, le mail arrive sur la '''machine''' sur laquelle se trouve le '''serveur mail''' de wanadoo.fr, pour être ensuite remis dans la '''boîte mail''' de l'utilisateur kevin. 

== Identifier le serveur mail de wanadoo.fr  ==

Wanadoo.fr, c'est le domaine. Le service mail se trouve quant à lui sur une machine bien precise. Pour l'identifier, une commande bien pratique&amp;nbsp;: 

 $ host -t MX wanadoo.fr
 wanadoo.fr mail is handled by 10 smtp.wanadoo.fr.

'''smtp''' est un ''sous-domaine'' de '''wanadoo.fr''', et la machine sur laquelle se trouve le serveur mail se nomme justement '''smtp.wanadoo.fr'''… 

 $ ping smtp.wanadoo.fr
 PING smtp.wanadoo.fr (80.12.242.142) 56(84) bytes of data.

… et son adresse IP est '''80.12.242.142'''. 

Dans la réalité, l'architecture mail de Wanadoo (Orange maintenant…) est je pense un peu plus compliquée que ça mais ça donne une bonne image de ce que nous allons reproduire pour notre serveur mail. 

= Prérequis  =

Pour avoir son serveur mail, il faut donc&amp;nbsp;: 

*un nom de domaine 
*une IP fixe 
*un PC allumé si possible 24h/24

Pourquoi une IP fixe&amp;nbsp;? Les mails doivent pouvoir toujours trouver le serveur mail, c'est pourquoi l'IP doit être fixe. 

L'association nom de domaine ⇔ adresse IP se règle au niveau du serveur DNS. C'est celui-ci que nous allons régler en premier. 

== Configurer le serveur DNS  ==

Cette partie se révèle souvent être une prise de tête pour les apprentis auto-hébergés. 

On doit spécifier dans le serveur DNS sur quelle IP on peut joindre le serveur mail. 

La plupart des registrars (les marchands de noms de domaine) fournissent une interface simplifiée pour le serveur DNS. 

Un exemple de configuration pour un domaine acheté chez Gandi.net

=== Le champ A  ===

Il faut tout d'abord configurer le champ '''A''' qui fait le lien entre nom de domaine et l'adresse IP du serveur&amp;nbsp;: 

 @       IN    A    12.34.56.78 
 smtp    IN    A    12.34.56.78

'''@'''&amp;nbsp;: signifie que '''monDomaine.com''' est lié à l'IP 12.34.56.78 

'''smtp'''&amp;nbsp;: signifie que le sous-domaine '''smtp.monDomaine.com''' est lui aussi lié à l'IP 12.34.56.78 

Vous pouvez indiquer des adresses IP différentes si vous possédez plusieurs serveurs et plusieurs IP. 

=== Le champ MX  ===

Une fois que le champ '''A''' est complété, il faut pour définir le serveur mail s'occuper du champ '''MX''' ('''M'''ail e'''X'''change). 

Nous allons convenir que le serveur mail correspond au serveur '''smtp.monDomaine.com'''. Son adresse IP ayant déjà été définie par le champ '''A''', le champ '''MX''' s'écrit sous cette forme&amp;nbsp;: 

 monDomaine.com.    IN    MX    10    smtp

Ce qui signifie que '''smtp''' du champ '''A''' sera le serveur '''MX''' de '''monDomaine.com'''. 

Vous suivez toujours&amp;nbsp;?? 

Lorsque vous enverrez des mails sur le domaine '''monDomaine.com''', ils seront automatiquement acheminés vers le serveur '''smtp.monDomaine.com'''. 

'''''Important&amp;nbsp;:''''' 

*Un champ '''MX''' se définit toujours sur un champ '''A''', pas sur un '''CNAME''' (non abordé ici) 
*Ne pas oublier le point après monDomaine.com.

=== Un exemple de configuration de DNS chez gandi.net ===

[[Fichier:Gandi.jpeg]]

Ce qui donne en mode &quot;expert&quot;

 smtp 300 IN A 41.188.26.122 
 @ 28800 IN MX 10 smtp 
 www 10800 IN A 41.188.26.122 

== Vérifications  ==

Avant même d'installer et configurer son serveur, il faut faire quelques vérifications (après avoir installé bind9-host). 

 $ host -t MX monDomaine.com

Cette commande doit retourner une ligne de ce genre&amp;nbsp;: 

 monDomaine.com mail is handled by 10 smtp.monDomaine.com

Bien sûr, ''smtp.monDomaine.com'' doit être associé à votre IP fixe (ici '''12.34.56.78''')&amp;nbsp;: 

 $ ping smtp.monDomaine.com
 PING smtp.monDomaine.com (12.34.56.78) 56(84) bytes of data.

Si ces 2 vérifications ne fonctionnent pas, '''ce n'est pas la peine d'aller plus loin''', votre serveur DNS est mal configuré.

=== Vérification si vous disposez d'un DNS local ===

Au cas ou vous disposeriez d'un DNS sur votre réseau local, pensez à vérifier sur un DNS externe...

 $ host -t MX monDomaine.com DNS_Externe

C'est le seul moyen d'être certain que &quot;le monde extérieur&quot; saura ou vous envoyer vos mails...

= Ouverture des ports  =

Si votre serveur se trouve derrière une *box, il ne pourra pas communiquer avec le monde extérieur. Il nous faut '''ouvrir des ports'''. 

Votre *box possède une '''IP fixe publique''', c'est l'IP que vous avez normalement renseignée dans votre serveur DNS. 

Derrière votre *box, il y a votre serveur mail qui lui possède également une adresse IP, '''privée'''. Les adresses privées sont en général 192.168.0.xxx ou 192.168.1.xxx. 

Admettons que votre serveur ait comme IP 192.168.0.25 dans votre réseau privé. Il faut alors que votre *box redirige toutes les requètes mail vers l'IP privée 192.168.0.25. 

Les ports à ouvrir sont&amp;nbsp;: 

*25&amp;nbsp;: pour que le serveur réceptionne les mails 
*110&amp;nbsp;: pour relever ses mails via POP 
*143&amp;nbsp;: pour relever ses mails via IMAP

Tous ces ports sont à ouvrir en '''TCP'''. 

Freebox&amp;nbsp;: [http://www.dslvalley.com/dossiers/freebox/freebox-nat.php http://www.dslvalley.com/dossiers/freebox/freebox-nat.php] 

NeufBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php] (fin de page) 

LiveBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/orange/livebox-emule.php http://www.dslvalley.com/dossiers/orange/livebox-emule.php] (fin de page)

= Installation de postfix  =

Votre DNS est correctement configuré&amp;nbsp;? Les ports sont ouverts&amp;nbsp;? Bien. Vous avez fait le plus dur. 

Vérifiez le nom de votre machine&amp;nbsp;: 

 $ hostname

Cette commande doit vous retourner '''smtp.monDomaine.com'''. Si ce n'est pas le cas, éditez le fichier '''/etc/hosts''' et vérifiez que vous avez une ligne comme suit&amp;nbsp;: 

 127.0.0.1 smtp.monDomaine.com smtp

Puis&amp;nbsp;: 

 &lt;nowiki&gt;# hostname smtp.monDomaine.com&lt;/nowiki&gt;

Normalement, le hostname est maintenant OK. 

Il est important que le '''hostname''' de votre machine soit le même que celui retourné par la commande '''host -t MX monDomaine.com''', sinon Postfix va vous emmerder. 

Installons postfix&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install postfix&lt;/nowiki&gt;

Choisissez la configuration '''Internet Site'''. Indiquez ensuite le nom de votre machine&amp;nbsp;: '''smtp.monDomaine.com''' (correspond au ''hostname'') 

Au cas où vous voudriez recommencer&amp;nbsp;: 

 &lt;nowiki&gt;# dpkg-reconfigure postfix&lt;/nowiki&gt;

= Configuration  =

Le fichier de configuration de postfix est '''/etc/postfix/main.cf'''. Il est par défaut très bien sécurisé. 

Nous allons dans un premier temps y ajouter cette ligne&amp;nbsp;: 

 home_mailbox = Maildir/

Cette ligne dit à postfix que les mails des utilisateurs doivent aller dans un répertoire nommé Maildir. 

Commentez (ajoutez un #) la ligne où se trouve '''mailbox_command''' pour que procmail ne soit pas utilisé (en tout cas pas pour le moment): 

 &lt;nowiki&gt;#mailbox_command = procmail -a &quot;$EXTENSION&quot;&lt;/nowiki&gt;

Pour que la modification soit prise en compte, redémarrez postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

= Création d'un nouveau mail  =

Bien. Vous avez votre domaine, votre serveur mail tourne. Créer une adresse mail est très simple. Il suffit d'ajouter un utilisateur&amp;nbsp;!! 

Vous voulez créer une adresse kevin@monDomaine.com&amp;nbsp;? Ajoutez l'utilisateur kevin sur votre machine&amp;nbsp;: 

 &lt;nowiki&gt;# adduser kevin&lt;/nowiki&gt;

Répondez aux questions, choisissez un mot de passe à kevin et c'est tout. 

= Tester l'adresse en local  =

Nous allons envoyer un mail à Kevin, vérifions que le paquet '''mailx''' est installé&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install mailx&lt;/nowiki&gt;

On envoie le mail&amp;nbsp;: 

 &lt;nowiki&gt;# echo &quot;Le contenu du mail&quot; | mail -s &quot;ceci est le sujet&quot; kevin@monDomaine.com&lt;/nowiki&gt;

Le mail sera automatiquement déposé dans le répertoire '''Maildir''' situé dans le home de kevin. S'il n'existe pas, le dossier '''Maildir''' sera automatiquement créé. 

 &lt;nowiki&gt;# ls /home/kevin&lt;/nowiki&gt;
 Maildir

N'hésitez pas à consulter les logs pour voir tout ce qui se passe sur votre serveur mail&amp;nbsp;: 

 &lt;nowiki&gt;# cat /var/log/mail.log&lt;/nowiki&gt;

= Kevin veut lire ses mails&amp;nbsp;!!  =

Envoyer des mails, c'est bien mais pouvoir les lire, c'est mieux&amp;nbsp;!! Pour que Kevin puisse lire ses mails dans un client comme '''Mozilla Thunderbird''', c'est tout simple&amp;nbsp;: 

Kevin veut réceptionner ces mails via IMAP&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-imapd&lt;/nowiki&gt;

Il préfère POP3&amp;nbsp;? Pas de problèmes&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-pop3d&lt;/nowiki&gt;

C'est tout, vous pouvez maintenant utiliser votre client mail favori pour réceptionner vos mails. 

Serveur&amp;nbsp;: '''smtp.monDomaine.com''' 

Login&amp;nbsp;: '''kevin''' 

Password&amp;nbsp;: '''le password défini lors de la création de l'utilisateur kevin''' 

= Kevin veut envoyer des mails&amp;nbsp;!!  =

Kevin est content, il peut lire ses mails. Seulement, il aimerait répondre à ses amis mais il ne peut pas. 

== Utiliser le SMTP de son FAI  ==

Postfix possède son propre service SMTP, mais ce dernier sera généralement bloqué. Pour limiter les envois de SPAMS, les FAI bloquent généralement l'envoi de mails. 

Pour que votre serveur mail puisse envoyer des mails, il faut lui dire d'utiliser le SMTP de votre FAI. C'est le paramètre '''relayhost''' du fichier de configuration '''/etc/postfix/main.cf''' qu'il faut modifier&amp;nbsp;: 

 relayhost = smtp.votreFAI.com

Principaux SMTP français&amp;nbsp;: 

 Orange&amp;nbsp;: smtp.orange.fr
 Free&amp;nbsp;: smtp.free.fr
 Neuf&amp;nbsp;: smtp.neuf.fr

== Utiliser le SMTP de Postfix  ==

Cependant, certains FAI (comme Free) permettent de lever ce blocage via une option dans leur panel de gestion. 

Dans ce cas, plus besoin du '''relayhost'''. Vos mails ne passeront plus par votre FAI, c'est VOTRE serveur qui enverra directement les mails. 

Le problème est que les mails que vous enverrez vers les boîtes '''Yahoo''' seront classées en tant que SPAM. '''AOL''' ne voudra pas de vos mails (ce sera explicitement marqué dans les logs). Quant à '''Hotmail''', les logs vous diront que les mails ont bien été reçus, mais vos correspondants ne les recevront jamais. '''Gmail''' ne pose quant à lui aucun souci. 

Vous voulez utiliser le plus possible votre propre SMTP mais vous voulez quand même pouvoir envoyer des mails vers vos potes restés chez Hotmail&amp;nbsp;? 

Créez un fichier '''/etc/postfix/transport''' avec ce contenu&amp;nbsp;: 

 hotmail.fr    smtp:smtp.free.fr
 hotmail.com   smtp:smtp.free.fr
 yahoo.fr      smtp:smtp.free.fr
 yahoo.com     smtp:smtp.free.fr

Ce fichier dit à postfix que pour les domaines hotmail.fr, hotmail.com, yahoo, etc., il utilisera le SMTP de free. Pour tous les autres domaine, il utilisera le smtp local. A vous d'adapter ce fichier en fonction des domaines qui ne veulent pas de vous. 

Bien sûr, si vous n'êtes pas abonné Free, vous ne pourrez pas utiliser le SMTP de Free. 

Pour que Postfix prenne en compte ce fichier, exécutez cette commande&amp;nbsp;: 

 &lt;nowiki&gt;# postmap /etc/postfix/transport&lt;/nowiki&gt;

Puis relancez Postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

A chaque fois que vous modifierez '''/etc/postfix/transport''', n'oubliez pas d'executer la commande précédente (postmap).

== Login... Passwd...  ==

Actuellement, postfix n'accepte d'envoyer les mails que s'ils sont envoyés depuis le serveur mail. Vous avez sûrement l'habitude d'envoyer les mails depuis un autre PC. Généralement, le SMTP demande un login, un password et envoie vos mails. 

C'est ce que nous allons régler maintenant. 

Problème&amp;nbsp;: Postfix seul ne fournit pas de service d'identification. Il doit utiliser un serveur SASL externe. 

Solution&amp;nbsp;: Dovecot, que nous avons précédemment installé pour la réception de mails (IMAP-POP3) peut faire office de serveur SASL. 

Pour activer ce service, dans le fichier de configuration '''/etc/dovecot/dovecot.conf''', ajoutez (ou décommentez) ceci dans la section auth default { }&amp;nbsp;: 

 auth default {
 …
 socket listen {
   client {
     path  &lt;nowiki&gt;= /var/spool/postfix/private/auth&lt;/nowiki&gt;
    group = postfix
    mode  &lt;nowiki&gt;= 0660&lt;/nowiki&gt;
  }
 }
 …

Il s'agit pour Dovecot de créer un socket Unix, sur lequel il écoutera les demandes d'identification provenant de Postfix. Comme le service SMTP de Postfix est chrooté (emprisonné) dans le répertoire '''/var/spool/postfix/''', il faut placer ce socket sous ce répertoire. Maintenant, relancez Dovecot&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/dovecot restart&lt;/nowiki&gt;

Dovecot accepte l'identification mais Postfix ne le sait pas&amp;nbsp;!! Il faut lui dire (ajoutez dans '''/etc/postfix/main.cf''')&amp;nbsp;: 

 &lt;nowiki&gt;# Activer l'identification SASL&lt;/nowiki&gt;
 smtpd_sasl_auth_enable = yes

 &lt;nowiki&gt;# Utiliser le service d'identification de Dovecot&lt;/nowiki&gt;
 smtpd_sasl_type = dovecot
 smtpd_sasl_path = private/auth

 &lt;nowiki&gt;# Noter dans les en-tête des messages l'identifiant de l'utilisateur.&lt;/nowiki&gt;
 smtpd_sasl_authenticated_header = yes

Profitons-en pour peaufiner le fichier de configuration de postfix '''/etc/postfix/main.cf'''&amp;nbsp;: 

 &lt;nowiki&gt;# Règles pour accepter ou refuser une connexion :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on attend une seconde (pour piéger les zombies) ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on interdit la parallélisation là où il n'est pas sensé y en avoir.&lt;/nowiki&gt;
 smtpd_client_restrictions =
    permit_mynetworks, permit_sasl_authenticated,
    sleep 1, reject_unauth_pipelining

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le nom&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'hôte de l'expéditeur (par sa commande HELO ou EHLO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on refuse les noms d'hôte invalides.&lt;/nowiki&gt;
 smtpd_helo_restrictions = reject_invalid_helo_hostname

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît l'adresse&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'expéditeur :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un expéditeur inexistant de notre domaine, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si le domaine de l'expéditeur n'a pas d'IP ou de MX, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un client sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de l'expéditeur n'est pas sous forme canonique, on le refuse.&lt;/nowiki&gt;
 smtpd_sender_restrictions =
    reject_unlisted_sender, reject_unknown_sender_domain,
    permit_mynetworks, permit_sasl_authenticated,
    reject_non_fqdn_sender

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le&lt;/nowiki&gt;
 &lt;nowiki&gt;# destinataire (par la commande RCPT TO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un expéditeur forgé chez nous, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un domaine forgé, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un hôte sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de destination n'est pas sous forme canonique, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - finalement, s'il n'est pas destiné à un domaine que l'on gère ou pour&lt;/nowiki&gt;
 &lt;nowiki&gt;# &lt;/nowiki&gt;  lequel on relaie, on le refuse.
 smtpd_recipient_restrictions =
     reject_unlisted_recipient, reject_unknown_recipient_domain,
     permit_mynetworks, permit_sasl_authenticated,
     reject_non_fqdn_recipient,
     reject_unauth_destination

Allez, on relance postfix pour qu'il prenne en compte tout ça&amp;nbsp;: 

 /etc/init.d/postfix restart

[[Catégorie:Serveurs]]</text>
      <sha1>rpf8xz01u4babucdh3i4d6itnkq2065</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2444</id>
      <parentid>2031</parentid>
      <timestamp>2010-12-04T17:26:59Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Un exemple de configuration de DNS chez gandi.net */</comment>
      <text xml:space="preserve" bytes="17671">= Configuration d'un serveur mail avec postfix  =

Vous ne voulez plus confier vos mails à Gmail, Yahoo ou Hotmail ? 

Vous aimeriez héberger vos mails chez vous mais vous pensez que c'est trop dur, trop compliqué ? 

Vous pensez qu'il faut être ingénieur pour monter un serveur mail ? 

Que nenni !! Nous allons voir dans ce tuto la mise en place d'un serveur mail avec Postfix dans le cadre d'une utilisation personnelle. 

Il ne s'agit pas ici de concurrencer Gmail ou Yahoo mais bien d'avoir notre petite boîte mail bien à nous. Faite avec amour. Et qui marche !! 

Ici, pas de gestion par base SQL ou annuaire LDAP, je vais tâcher de faire le plus simple possible. 

C'est parti !! 

= Une adresse mail, c'est quoi ?  =

== kevin@wanadoo.fr  ==

Une adresse mail, c'est un peu comme une adresse postale. Elle se divise en 2 parties&amp;nbsp;: 

*un domaine&amp;nbsp;: '''wanadoo.fr''' 
*un utilisateur&amp;nbsp;: '''kevin'''

Dans mon exemple, lorsque l'on écrit à Kevin via l'adresse '''kevin@wanadoo.fr''', cela signifie que l'on écrit à l'utilisateur '''kevin''' du domaine '''wanadoo.fr'''. 

Plus précisément, le mail arrive sur la '''machine''' sur laquelle se trouve le '''serveur mail''' de wanadoo.fr, pour être ensuite remis dans la '''boîte mail''' de l'utilisateur kevin. 

== Identifier le serveur mail de wanadoo.fr  ==

Wanadoo.fr, c'est le domaine. Le service mail se trouve quant à lui sur une machine bien precise. Pour l'identifier, une commande bien pratique&amp;nbsp;: 

 $ host -t MX wanadoo.fr
 wanadoo.fr mail is handled by 10 smtp.wanadoo.fr.

'''smtp''' est un ''sous-domaine'' de '''wanadoo.fr''', et la machine sur laquelle se trouve le serveur mail se nomme justement '''smtp.wanadoo.fr'''… 

 $ ping smtp.wanadoo.fr
 PING smtp.wanadoo.fr (80.12.242.142) 56(84) bytes of data.

… et son adresse IP est '''80.12.242.142'''. 

Dans la réalité, l'architecture mail de Wanadoo (Orange maintenant…) est je pense un peu plus compliquée que ça mais ça donne une bonne image de ce que nous allons reproduire pour notre serveur mail. 

= Prérequis  =

Pour avoir son serveur mail, il faut donc&amp;nbsp;: 

*un nom de domaine 
*une IP fixe 
*un PC allumé si possible 24h/24

Pourquoi une IP fixe&amp;nbsp;? Les mails doivent pouvoir toujours trouver le serveur mail, c'est pourquoi l'IP doit être fixe. 

L'association nom de domaine ⇔ adresse IP se règle au niveau du serveur DNS. C'est celui-ci que nous allons régler en premier. 

== Configurer le serveur DNS  ==

Cette partie se révèle souvent être une prise de tête pour les apprentis auto-hébergés. 

On doit spécifier dans le serveur DNS sur quelle IP on peut joindre le serveur mail. 

La plupart des registrars (les marchands de noms de domaine) fournissent une interface simplifiée pour le serveur DNS. 

Un exemple de configuration pour un domaine acheté chez Gandi.net

=== Le champ A  ===

Il faut tout d'abord configurer le champ '''A''' qui fait le lien entre nom de domaine et l'adresse IP du serveur&amp;nbsp;: 

 @       IN    A    12.34.56.78 
 smtp    IN    A    12.34.56.78

'''@'''&amp;nbsp;: signifie que '''monDomaine.com''' est lié à l'IP 12.34.56.78 

'''smtp'''&amp;nbsp;: signifie que le sous-domaine '''smtp.monDomaine.com''' est lui aussi lié à l'IP 12.34.56.78 

Vous pouvez indiquer des adresses IP différentes si vous possédez plusieurs serveurs et plusieurs IP. 

=== Le champ MX  ===

Une fois que le champ '''A''' est complété, il faut pour définir le serveur mail s'occuper du champ '''MX''' ('''M'''ail e'''X'''change). 

Nous allons convenir que le serveur mail correspond au serveur '''smtp.monDomaine.com'''. Son adresse IP ayant déjà été définie par le champ '''A''', le champ '''MX''' s'écrit sous cette forme&amp;nbsp;: 

 monDomaine.com.    IN    MX    10    smtp

Ce qui signifie que '''smtp''' du champ '''A''' sera le serveur '''MX''' de '''monDomaine.com'''. 

Vous suivez toujours&amp;nbsp;?? 

Lorsque vous enverrez des mails sur le domaine '''monDomaine.com''', ils seront automatiquement acheminés vers le serveur '''smtp.monDomaine.com'''. 

'''''Important&amp;nbsp;:''''' 

*Un champ '''MX''' se définit toujours sur un champ '''A''', pas sur un '''CNAME''' (non abordé ici) 
*Ne pas oublier le point après monDomaine.com.

=== Un exemple de configuration de DNS chez gandi.net ===

[[Fichier:Gandi.jpeg]]

Ce qui donne en mode &quot;expert&quot;

 smtp 300 IN A 41.188.26.122 
 @ 28800 IN MX 10 smtp 
 www 10800 IN A 41.188.26.122

=== Configuration chez OVH ===

Rendez-vous sur votre &quot;manager&quot; puis cliquez sur &quot;Domaines &amp; DNS&quot;.
Dans la rubrique &quot;Zone DNS&quot; du domaine concerné, effacez les champs MX existants puis cliquez sur 'Type A&quot; et ajoutez un champ comme ci-dessous :

 sous-domaine: mail2.votre_domaine.com

Sélectionner une IP : adresse_IP_du_serveur_de_mail

Cliquez sur &quot;Validez&quot; pour confirmer l'operation. Ensuite, choisissez 'Type MX&quot; et ajoutez un champ comme ci-dessous :

 Sous-domaine : votre_domaine.com

 Destination: mail2.votre_domaine.com

Cliquez sur &quot;Validez&quot; pour confirmer l'operation. Si la création du champ MX ne passe pas, recommencez en cochant la case &quot;forcer l'opération&quot;. Les changements sont pris en compte le lendemain matin et vos mails seront redirigés vers votre serveur mail.

[http://guides.ovh.com/VotreServeurMail Source]

== Vérifications  ==

Avant même d'installer et configurer son serveur, il faut faire quelques vérifications (après avoir installé bind9-host). 

 $ host -t MX monDomaine.com

Cette commande doit retourner une ligne de ce genre&amp;nbsp;: 

 monDomaine.com mail is handled by 10 smtp.monDomaine.com

Bien sûr, ''smtp.monDomaine.com'' doit être associé à votre IP fixe (ici '''12.34.56.78''')&amp;nbsp;: 

 $ ping smtp.monDomaine.com
 PING smtp.monDomaine.com (12.34.56.78) 56(84) bytes of data.

Si ces 2 vérifications ne fonctionnent pas, '''ce n'est pas la peine d'aller plus loin''', votre serveur DNS est mal configuré.

=== Vérification si vous disposez d'un DNS local ===

Au cas ou vous disposeriez d'un DNS sur votre réseau local, pensez à vérifier sur un DNS externe...

 $ host -t MX monDomaine.com DNS_Externe

C'est le seul moyen d'être certain que &quot;le monde extérieur&quot; saura ou vous envoyer vos mails...

= Ouverture des ports  =

Si votre serveur se trouve derrière une *box, il ne pourra pas communiquer avec le monde extérieur. Il nous faut '''ouvrir des ports'''. 

Votre *box possède une '''IP fixe publique''', c'est l'IP que vous avez normalement renseignée dans votre serveur DNS. 

Derrière votre *box, il y a votre serveur mail qui lui possède également une adresse IP, '''privée'''. Les adresses privées sont en général 192.168.0.xxx ou 192.168.1.xxx. 

Admettons que votre serveur ait comme IP 192.168.0.25 dans votre réseau privé. Il faut alors que votre *box redirige toutes les requètes mail vers l'IP privée 192.168.0.25. 

Les ports à ouvrir sont&amp;nbsp;: 

*25&amp;nbsp;: pour que le serveur réceptionne les mails 
*110&amp;nbsp;: pour relever ses mails via POP 
*143&amp;nbsp;: pour relever ses mails via IMAP

Tous ces ports sont à ouvrir en '''TCP'''. 

Freebox&amp;nbsp;: [http://www.dslvalley.com/dossiers/freebox/freebox-nat.php http://www.dslvalley.com/dossiers/freebox/freebox-nat.php] 

NeufBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php] (fin de page) 

LiveBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/orange/livebox-emule.php http://www.dslvalley.com/dossiers/orange/livebox-emule.php] (fin de page)

= Installation de postfix  =

Votre DNS est correctement configuré&amp;nbsp;? Les ports sont ouverts&amp;nbsp;? Bien. Vous avez fait le plus dur. 

Vérifiez le nom de votre machine&amp;nbsp;: 

 $ hostname

Cette commande doit vous retourner '''smtp.monDomaine.com'''. Si ce n'est pas le cas, éditez le fichier '''/etc/hosts''' et vérifiez que vous avez une ligne comme suit&amp;nbsp;: 

 127.0.0.1 smtp.monDomaine.com smtp

Puis&amp;nbsp;: 

 &lt;nowiki&gt;# hostname smtp.monDomaine.com&lt;/nowiki&gt;

Normalement, le hostname est maintenant OK. 

Il est important que le '''hostname''' de votre machine soit le même que celui retourné par la commande '''host -t MX monDomaine.com''', sinon Postfix va vous emmerder. 

Installons postfix&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install postfix&lt;/nowiki&gt;

Choisissez la configuration '''Internet Site'''. Indiquez ensuite le nom de votre machine&amp;nbsp;: '''smtp.monDomaine.com''' (correspond au ''hostname'') 

Au cas où vous voudriez recommencer&amp;nbsp;: 

 &lt;nowiki&gt;# dpkg-reconfigure postfix&lt;/nowiki&gt;

= Configuration  =

Le fichier de configuration de postfix est '''/etc/postfix/main.cf'''. Il est par défaut très bien sécurisé. 

Nous allons dans un premier temps y ajouter cette ligne&amp;nbsp;: 

 home_mailbox = Maildir/

Cette ligne dit à postfix que les mails des utilisateurs doivent aller dans un répertoire nommé Maildir. 

Commentez (ajoutez un #) la ligne où se trouve '''mailbox_command''' pour que procmail ne soit pas utilisé (en tout cas pas pour le moment): 

 &lt;nowiki&gt;#mailbox_command = procmail -a &quot;$EXTENSION&quot;&lt;/nowiki&gt;

Pour que la modification soit prise en compte, redémarrez postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

= Création d'un nouveau mail  =

Bien. Vous avez votre domaine, votre serveur mail tourne. Créer une adresse mail est très simple. Il suffit d'ajouter un utilisateur&amp;nbsp;!! 

Vous voulez créer une adresse kevin@monDomaine.com&amp;nbsp;? Ajoutez l'utilisateur kevin sur votre machine&amp;nbsp;: 

 &lt;nowiki&gt;# adduser kevin&lt;/nowiki&gt;

Répondez aux questions, choisissez un mot de passe à kevin et c'est tout. 

= Tester l'adresse en local  =

Nous allons envoyer un mail à Kevin, vérifions que le paquet '''mailx''' est installé&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install mailx&lt;/nowiki&gt;

On envoie le mail&amp;nbsp;: 

 &lt;nowiki&gt;# echo &quot;Le contenu du mail&quot; | mail -s &quot;ceci est le sujet&quot; kevin@monDomaine.com&lt;/nowiki&gt;

Le mail sera automatiquement déposé dans le répertoire '''Maildir''' situé dans le home de kevin. S'il n'existe pas, le dossier '''Maildir''' sera automatiquement créé. 

 &lt;nowiki&gt;# ls /home/kevin&lt;/nowiki&gt;
 Maildir

N'hésitez pas à consulter les logs pour voir tout ce qui se passe sur votre serveur mail&amp;nbsp;: 

 &lt;nowiki&gt;# cat /var/log/mail.log&lt;/nowiki&gt;

= Kevin veut lire ses mails&amp;nbsp;!!  =

Envoyer des mails, c'est bien mais pouvoir les lire, c'est mieux&amp;nbsp;!! Pour que Kevin puisse lire ses mails dans un client comme '''Mozilla Thunderbird''', c'est tout simple&amp;nbsp;: 

Kevin veut réceptionner ces mails via IMAP&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-imapd&lt;/nowiki&gt;

Il préfère POP3&amp;nbsp;? Pas de problèmes&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-pop3d&lt;/nowiki&gt;

C'est tout, vous pouvez maintenant utiliser votre client mail favori pour réceptionner vos mails. 

Serveur&amp;nbsp;: '''smtp.monDomaine.com''' 

Login&amp;nbsp;: '''kevin''' 

Password&amp;nbsp;: '''le password défini lors de la création de l'utilisateur kevin''' 

= Kevin veut envoyer des mails&amp;nbsp;!!  =

Kevin est content, il peut lire ses mails. Seulement, il aimerait répondre à ses amis mais il ne peut pas. 

== Utiliser le SMTP de son FAI  ==

Postfix possède son propre service SMTP, mais ce dernier sera généralement bloqué. Pour limiter les envois de SPAMS, les FAI bloquent généralement l'envoi de mails. 

Pour que votre serveur mail puisse envoyer des mails, il faut lui dire d'utiliser le SMTP de votre FAI. C'est le paramètre '''relayhost''' du fichier de configuration '''/etc/postfix/main.cf''' qu'il faut modifier&amp;nbsp;: 

 relayhost = smtp.votreFAI.com

Principaux SMTP français&amp;nbsp;: 

 Orange&amp;nbsp;: smtp.orange.fr
 Free&amp;nbsp;: smtp.free.fr
 Neuf&amp;nbsp;: smtp.neuf.fr

== Utiliser le SMTP de Postfix  ==

Cependant, certains FAI (comme Free) permettent de lever ce blocage via une option dans leur panel de gestion. 

Dans ce cas, plus besoin du '''relayhost'''. Vos mails ne passeront plus par votre FAI, c'est VOTRE serveur qui enverra directement les mails. 

Le problème est que les mails que vous enverrez vers les boîtes '''Yahoo''' seront classées en tant que SPAM. '''AOL''' ne voudra pas de vos mails (ce sera explicitement marqué dans les logs). Quant à '''Hotmail''', les logs vous diront que les mails ont bien été reçus, mais vos correspondants ne les recevront jamais. '''Gmail''' ne pose quant à lui aucun souci. 

Vous voulez utiliser le plus possible votre propre SMTP mais vous voulez quand même pouvoir envoyer des mails vers vos potes restés chez Hotmail&amp;nbsp;? 

Créez un fichier '''/etc/postfix/transport''' avec ce contenu&amp;nbsp;: 

 hotmail.fr    smtp:smtp.free.fr
 hotmail.com   smtp:smtp.free.fr
 yahoo.fr      smtp:smtp.free.fr
 yahoo.com     smtp:smtp.free.fr

Ce fichier dit à postfix que pour les domaines hotmail.fr, hotmail.com, yahoo, etc., il utilisera le SMTP de free. Pour tous les autres domaine, il utilisera le smtp local. A vous d'adapter ce fichier en fonction des domaines qui ne veulent pas de vous. 

Bien sûr, si vous n'êtes pas abonné Free, vous ne pourrez pas utiliser le SMTP de Free. 

Pour que Postfix prenne en compte ce fichier, exécutez cette commande&amp;nbsp;: 

 &lt;nowiki&gt;# postmap /etc/postfix/transport&lt;/nowiki&gt;

Puis relancez Postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

A chaque fois que vous modifierez '''/etc/postfix/transport''', n'oubliez pas d'executer la commande précédente (postmap).

== Login... Passwd...  ==

Actuellement, postfix n'accepte d'envoyer les mails que s'ils sont envoyés depuis le serveur mail. Vous avez sûrement l'habitude d'envoyer les mails depuis un autre PC. Généralement, le SMTP demande un login, un password et envoie vos mails. 

C'est ce que nous allons régler maintenant. 

Problème&amp;nbsp;: Postfix seul ne fournit pas de service d'identification. Il doit utiliser un serveur SASL externe. 

Solution&amp;nbsp;: Dovecot, que nous avons précédemment installé pour la réception de mails (IMAP-POP3) peut faire office de serveur SASL. 

Pour activer ce service, dans le fichier de configuration '''/etc/dovecot/dovecot.conf''', ajoutez (ou décommentez) ceci dans la section auth default { }&amp;nbsp;: 

 auth default {
 …
 socket listen {
   client {
     path  &lt;nowiki&gt;= /var/spool/postfix/private/auth&lt;/nowiki&gt;
    group = postfix
    mode  &lt;nowiki&gt;= 0660&lt;/nowiki&gt;
  }
 }
 …

Il s'agit pour Dovecot de créer un socket Unix, sur lequel il écoutera les demandes d'identification provenant de Postfix. Comme le service SMTP de Postfix est chrooté (emprisonné) dans le répertoire '''/var/spool/postfix/''', il faut placer ce socket sous ce répertoire. Maintenant, relancez Dovecot&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/dovecot restart&lt;/nowiki&gt;

Dovecot accepte l'identification mais Postfix ne le sait pas&amp;nbsp;!! Il faut lui dire (ajoutez dans '''/etc/postfix/main.cf''')&amp;nbsp;: 

 &lt;nowiki&gt;# Activer l'identification SASL&lt;/nowiki&gt;
 smtpd_sasl_auth_enable = yes

 &lt;nowiki&gt;# Utiliser le service d'identification de Dovecot&lt;/nowiki&gt;
 smtpd_sasl_type = dovecot
 smtpd_sasl_path = private/auth

 &lt;nowiki&gt;# Noter dans les en-tête des messages l'identifiant de l'utilisateur.&lt;/nowiki&gt;
 smtpd_sasl_authenticated_header = yes

Profitons-en pour peaufiner le fichier de configuration de postfix '''/etc/postfix/main.cf'''&amp;nbsp;: 

 &lt;nowiki&gt;# Règles pour accepter ou refuser une connexion :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on attend une seconde (pour piéger les zombies) ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on interdit la parallélisation là où il n'est pas sensé y en avoir.&lt;/nowiki&gt;
 smtpd_client_restrictions =
    permit_mynetworks, permit_sasl_authenticated,
    sleep 1, reject_unauth_pipelining

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le nom&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'hôte de l'expéditeur (par sa commande HELO ou EHLO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on refuse les noms d'hôte invalides.&lt;/nowiki&gt;
 smtpd_helo_restrictions = reject_invalid_helo_hostname

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît l'adresse&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'expéditeur :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un expéditeur inexistant de notre domaine, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si le domaine de l'expéditeur n'a pas d'IP ou de MX, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un client sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de l'expéditeur n'est pas sous forme canonique, on le refuse.&lt;/nowiki&gt;
 smtpd_sender_restrictions =
    reject_unlisted_sender, reject_unknown_sender_domain,
    permit_mynetworks, permit_sasl_authenticated,
    reject_non_fqdn_sender

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le&lt;/nowiki&gt;
 &lt;nowiki&gt;# destinataire (par la commande RCPT TO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un expéditeur forgé chez nous, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un domaine forgé, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un hôte sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de destination n'est pas sous forme canonique, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - finalement, s'il n'est pas destiné à un domaine que l'on gère ou pour&lt;/nowiki&gt;
 &lt;nowiki&gt;# &lt;/nowiki&gt;  lequel on relaie, on le refuse.
 smtpd_recipient_restrictions =
     reject_unlisted_recipient, reject_unknown_recipient_domain,
     permit_mynetworks, permit_sasl_authenticated,
     reject_non_fqdn_recipient,
     reject_unauth_destination

Allez, on relance postfix pour qu'il prenne en compte tout ça&amp;nbsp;: 

 /etc/init.d/postfix restart

[[Catégorie:Serveurs]]</text>
      <sha1>5orcjzr2tyecty9600emuu5cea6y9pi</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2484</id>
      <parentid>2444</parentid>
      <timestamp>2010-12-12T16:48:12Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <minor/>
      <comment>/* Login... Passwd... */</comment>
      <text xml:space="preserve" bytes="17719">= Configuration d'un serveur mail avec postfix  =

Vous ne voulez plus confier vos mails à Gmail, Yahoo ou Hotmail ? 

Vous aimeriez héberger vos mails chez vous mais vous pensez que c'est trop dur, trop compliqué ? 

Vous pensez qu'il faut être ingénieur pour monter un serveur mail ? 

Que nenni !! Nous allons voir dans ce tuto la mise en place d'un serveur mail avec Postfix dans le cadre d'une utilisation personnelle. 

Il ne s'agit pas ici de concurrencer Gmail ou Yahoo mais bien d'avoir notre petite boîte mail bien à nous. Faite avec amour. Et qui marche !! 

Ici, pas de gestion par base SQL ou annuaire LDAP, je vais tâcher de faire le plus simple possible. 

C'est parti !! 

= Une adresse mail, c'est quoi ?  =

== kevin@wanadoo.fr  ==

Une adresse mail, c'est un peu comme une adresse postale. Elle se divise en 2 parties&amp;nbsp;: 

*un domaine&amp;nbsp;: '''wanadoo.fr''' 
*un utilisateur&amp;nbsp;: '''kevin'''

Dans mon exemple, lorsque l'on écrit à Kevin via l'adresse '''kevin@wanadoo.fr''', cela signifie que l'on écrit à l'utilisateur '''kevin''' du domaine '''wanadoo.fr'''. 

Plus précisément, le mail arrive sur la '''machine''' sur laquelle se trouve le '''serveur mail''' de wanadoo.fr, pour être ensuite remis dans la '''boîte mail''' de l'utilisateur kevin. 

== Identifier le serveur mail de wanadoo.fr  ==

Wanadoo.fr, c'est le domaine. Le service mail se trouve quant à lui sur une machine bien precise. Pour l'identifier, une commande bien pratique&amp;nbsp;: 

 $ host -t MX wanadoo.fr
 wanadoo.fr mail is handled by 10 smtp.wanadoo.fr.

'''smtp''' est un ''sous-domaine'' de '''wanadoo.fr''', et la machine sur laquelle se trouve le serveur mail se nomme justement '''smtp.wanadoo.fr'''… 

 $ ping smtp.wanadoo.fr
 PING smtp.wanadoo.fr (80.12.242.142) 56(84) bytes of data.

… et son adresse IP est '''80.12.242.142'''. 

Dans la réalité, l'architecture mail de Wanadoo (Orange maintenant…) est je pense un peu plus compliquée que ça mais ça donne une bonne image de ce que nous allons reproduire pour notre serveur mail. 

= Prérequis  =

Pour avoir son serveur mail, il faut donc&amp;nbsp;: 

*un nom de domaine 
*une IP fixe 
*un PC allumé si possible 24h/24

Pourquoi une IP fixe&amp;nbsp;? Les mails doivent pouvoir toujours trouver le serveur mail, c'est pourquoi l'IP doit être fixe. 

L'association nom de domaine ⇔ adresse IP se règle au niveau du serveur DNS. C'est celui-ci que nous allons régler en premier. 

== Configurer le serveur DNS  ==

Cette partie se révèle souvent être une prise de tête pour les apprentis auto-hébergés. 

On doit spécifier dans le serveur DNS sur quelle IP on peut joindre le serveur mail. 

La plupart des registrars (les marchands de noms de domaine) fournissent une interface simplifiée pour le serveur DNS. 

Un exemple de configuration pour un domaine acheté chez Gandi.net

=== Le champ A  ===

Il faut tout d'abord configurer le champ '''A''' qui fait le lien entre nom de domaine et l'adresse IP du serveur&amp;nbsp;: 

 @       IN    A    12.34.56.78 
 smtp    IN    A    12.34.56.78

'''@'''&amp;nbsp;: signifie que '''monDomaine.com''' est lié à l'IP 12.34.56.78 

'''smtp'''&amp;nbsp;: signifie que le sous-domaine '''smtp.monDomaine.com''' est lui aussi lié à l'IP 12.34.56.78 

Vous pouvez indiquer des adresses IP différentes si vous possédez plusieurs serveurs et plusieurs IP. 

=== Le champ MX  ===

Une fois que le champ '''A''' est complété, il faut pour définir le serveur mail s'occuper du champ '''MX''' ('''M'''ail e'''X'''change). 

Nous allons convenir que le serveur mail correspond au serveur '''smtp.monDomaine.com'''. Son adresse IP ayant déjà été définie par le champ '''A''', le champ '''MX''' s'écrit sous cette forme&amp;nbsp;: 

 monDomaine.com.    IN    MX    10    smtp

Ce qui signifie que '''smtp''' du champ '''A''' sera le serveur '''MX''' de '''monDomaine.com'''. 

Vous suivez toujours&amp;nbsp;?? 

Lorsque vous enverrez des mails sur le domaine '''monDomaine.com''', ils seront automatiquement acheminés vers le serveur '''smtp.monDomaine.com'''. 

'''''Important&amp;nbsp;:''''' 

*Un champ '''MX''' se définit toujours sur un champ '''A''', pas sur un '''CNAME''' (non abordé ici) 
*Ne pas oublier le point après monDomaine.com.

=== Un exemple de configuration de DNS chez gandi.net ===

[[Fichier:Gandi.jpeg]]

Ce qui donne en mode &quot;expert&quot;

 smtp 300 IN A 41.188.26.122 
 @ 28800 IN MX 10 smtp 
 www 10800 IN A 41.188.26.122

=== Configuration chez OVH ===

Rendez-vous sur votre &quot;manager&quot; puis cliquez sur &quot;Domaines &amp; DNS&quot;.
Dans la rubrique &quot;Zone DNS&quot; du domaine concerné, effacez les champs MX existants puis cliquez sur 'Type A&quot; et ajoutez un champ comme ci-dessous :

 sous-domaine: mail2.votre_domaine.com

Sélectionner une IP : adresse_IP_du_serveur_de_mail

Cliquez sur &quot;Validez&quot; pour confirmer l'operation. Ensuite, choisissez 'Type MX&quot; et ajoutez un champ comme ci-dessous :

 Sous-domaine : votre_domaine.com

 Destination: mail2.votre_domaine.com

Cliquez sur &quot;Validez&quot; pour confirmer l'operation. Si la création du champ MX ne passe pas, recommencez en cochant la case &quot;forcer l'opération&quot;. Les changements sont pris en compte le lendemain matin et vos mails seront redirigés vers votre serveur mail.

[http://guides.ovh.com/VotreServeurMail Source]

== Vérifications  ==

Avant même d'installer et configurer son serveur, il faut faire quelques vérifications (après avoir installé bind9-host). 

 $ host -t MX monDomaine.com

Cette commande doit retourner une ligne de ce genre&amp;nbsp;: 

 monDomaine.com mail is handled by 10 smtp.monDomaine.com

Bien sûr, ''smtp.monDomaine.com'' doit être associé à votre IP fixe (ici '''12.34.56.78''')&amp;nbsp;: 

 $ ping smtp.monDomaine.com
 PING smtp.monDomaine.com (12.34.56.78) 56(84) bytes of data.

Si ces 2 vérifications ne fonctionnent pas, '''ce n'est pas la peine d'aller plus loin''', votre serveur DNS est mal configuré.

=== Vérification si vous disposez d'un DNS local ===

Au cas ou vous disposeriez d'un DNS sur votre réseau local, pensez à vérifier sur un DNS externe...

 $ host -t MX monDomaine.com DNS_Externe

C'est le seul moyen d'être certain que &quot;le monde extérieur&quot; saura ou vous envoyer vos mails...

= Ouverture des ports  =

Si votre serveur se trouve derrière une *box, il ne pourra pas communiquer avec le monde extérieur. Il nous faut '''ouvrir des ports'''. 

Votre *box possède une '''IP fixe publique''', c'est l'IP que vous avez normalement renseignée dans votre serveur DNS. 

Derrière votre *box, il y a votre serveur mail qui lui possède également une adresse IP, '''privée'''. Les adresses privées sont en général 192.168.0.xxx ou 192.168.1.xxx. 

Admettons que votre serveur ait comme IP 192.168.0.25 dans votre réseau privé. Il faut alors que votre *box redirige toutes les requètes mail vers l'IP privée 192.168.0.25. 

Les ports à ouvrir sont&amp;nbsp;: 

*25&amp;nbsp;: pour que le serveur réceptionne les mails 
*110&amp;nbsp;: pour relever ses mails via POP 
*143&amp;nbsp;: pour relever ses mails via IMAP

Tous ces ports sont à ouvrir en '''TCP'''. 

Freebox&amp;nbsp;: [http://www.dslvalley.com/dossiers/freebox/freebox-nat.php http://www.dslvalley.com/dossiers/freebox/freebox-nat.php] 

NeufBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php] (fin de page) 

LiveBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/orange/livebox-emule.php http://www.dslvalley.com/dossiers/orange/livebox-emule.php] (fin de page)

= Installation de postfix  =

Votre DNS est correctement configuré&amp;nbsp;? Les ports sont ouverts&amp;nbsp;? Bien. Vous avez fait le plus dur. 

Vérifiez le nom de votre machine&amp;nbsp;: 

 $ hostname

Cette commande doit vous retourner '''smtp.monDomaine.com'''. Si ce n'est pas le cas, éditez le fichier '''/etc/hosts''' et vérifiez que vous avez une ligne comme suit&amp;nbsp;: 

 127.0.0.1 smtp.monDomaine.com smtp

Puis&amp;nbsp;: 

 &lt;nowiki&gt;# hostname smtp.monDomaine.com&lt;/nowiki&gt;

Normalement, le hostname est maintenant OK. 

Il est important que le '''hostname''' de votre machine soit le même que celui retourné par la commande '''host -t MX monDomaine.com''', sinon Postfix va vous emmerder. 

Installons postfix&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install postfix&lt;/nowiki&gt;

Choisissez la configuration '''Internet Site'''. Indiquez ensuite le nom de votre machine&amp;nbsp;: '''smtp.monDomaine.com''' (correspond au ''hostname'') 

Au cas où vous voudriez recommencer&amp;nbsp;: 

 &lt;nowiki&gt;# dpkg-reconfigure postfix&lt;/nowiki&gt;

= Configuration  =

Le fichier de configuration de postfix est '''/etc/postfix/main.cf'''. Il est par défaut très bien sécurisé. 

Nous allons dans un premier temps y ajouter cette ligne&amp;nbsp;: 

 home_mailbox = Maildir/

Cette ligne dit à postfix que les mails des utilisateurs doivent aller dans un répertoire nommé Maildir. 

Commentez (ajoutez un #) la ligne où se trouve '''mailbox_command''' pour que procmail ne soit pas utilisé (en tout cas pas pour le moment): 

 &lt;nowiki&gt;#mailbox_command = procmail -a &quot;$EXTENSION&quot;&lt;/nowiki&gt;

Pour que la modification soit prise en compte, redémarrez postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

= Création d'un nouveau mail  =

Bien. Vous avez votre domaine, votre serveur mail tourne. Créer une adresse mail est très simple. Il suffit d'ajouter un utilisateur&amp;nbsp;!! 

Vous voulez créer une adresse kevin@monDomaine.com&amp;nbsp;? Ajoutez l'utilisateur kevin sur votre machine&amp;nbsp;: 

 &lt;nowiki&gt;# adduser kevin&lt;/nowiki&gt;

Répondez aux questions, choisissez un mot de passe à kevin et c'est tout. 

= Tester l'adresse en local  =

Nous allons envoyer un mail à Kevin, vérifions que le paquet '''mailx''' est installé&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install mailx&lt;/nowiki&gt;

On envoie le mail&amp;nbsp;: 

 &lt;nowiki&gt;# echo &quot;Le contenu du mail&quot; | mail -s &quot;ceci est le sujet&quot; kevin@monDomaine.com&lt;/nowiki&gt;

Le mail sera automatiquement déposé dans le répertoire '''Maildir''' situé dans le home de kevin. S'il n'existe pas, le dossier '''Maildir''' sera automatiquement créé. 

 &lt;nowiki&gt;# ls /home/kevin&lt;/nowiki&gt;
 Maildir

N'hésitez pas à consulter les logs pour voir tout ce qui se passe sur votre serveur mail&amp;nbsp;: 

 &lt;nowiki&gt;# cat /var/log/mail.log&lt;/nowiki&gt;

= Kevin veut lire ses mails&amp;nbsp;!!  =

Envoyer des mails, c'est bien mais pouvoir les lire, c'est mieux&amp;nbsp;!! Pour que Kevin puisse lire ses mails dans un client comme '''Mozilla Thunderbird''', c'est tout simple&amp;nbsp;: 

Kevin veut réceptionner ces mails via IMAP&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-imapd&lt;/nowiki&gt;

Il préfère POP3&amp;nbsp;? Pas de problèmes&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-pop3d&lt;/nowiki&gt;

C'est tout, vous pouvez maintenant utiliser votre client mail favori pour réceptionner vos mails. 

Serveur&amp;nbsp;: '''smtp.monDomaine.com''' 

Login&amp;nbsp;: '''kevin''' 

Password&amp;nbsp;: '''le password défini lors de la création de l'utilisateur kevin''' 

= Kevin veut envoyer des mails&amp;nbsp;!!  =

Kevin est content, il peut lire ses mails. Seulement, il aimerait répondre à ses amis mais il ne peut pas. 

== Utiliser le SMTP de son FAI  ==

Postfix possède son propre service SMTP, mais ce dernier sera généralement bloqué. Pour limiter les envois de SPAMS, les FAI bloquent généralement l'envoi de mails. 

Pour que votre serveur mail puisse envoyer des mails, il faut lui dire d'utiliser le SMTP de votre FAI. C'est le paramètre '''relayhost''' du fichier de configuration '''/etc/postfix/main.cf''' qu'il faut modifier&amp;nbsp;: 

 relayhost = smtp.votreFAI.com

Principaux SMTP français&amp;nbsp;: 

 Orange&amp;nbsp;: smtp.orange.fr
 Free&amp;nbsp;: smtp.free.fr
 Neuf&amp;nbsp;: smtp.neuf.fr

== Utiliser le SMTP de Postfix  ==

Cependant, certains FAI (comme Free) permettent de lever ce blocage via une option dans leur panel de gestion. 

Dans ce cas, plus besoin du '''relayhost'''. Vos mails ne passeront plus par votre FAI, c'est VOTRE serveur qui enverra directement les mails. 

Le problème est que les mails que vous enverrez vers les boîtes '''Yahoo''' seront classées en tant que SPAM. '''AOL''' ne voudra pas de vos mails (ce sera explicitement marqué dans les logs). Quant à '''Hotmail''', les logs vous diront que les mails ont bien été reçus, mais vos correspondants ne les recevront jamais. '''Gmail''' ne pose quant à lui aucun souci. 

Vous voulez utiliser le plus possible votre propre SMTP mais vous voulez quand même pouvoir envoyer des mails vers vos potes restés chez Hotmail&amp;nbsp;? 

Créez un fichier '''/etc/postfix/transport''' avec ce contenu&amp;nbsp;: 

 hotmail.fr    smtp:smtp.free.fr
 hotmail.com   smtp:smtp.free.fr
 yahoo.fr      smtp:smtp.free.fr
 yahoo.com     smtp:smtp.free.fr

Ce fichier dit à postfix que pour les domaines hotmail.fr, hotmail.com, yahoo, etc., il utilisera le SMTP de free. Pour tous les autres domaine, il utilisera le smtp local. A vous d'adapter ce fichier en fonction des domaines qui ne veulent pas de vous. 

Bien sûr, si vous n'êtes pas abonné Free, vous ne pourrez pas utiliser le SMTP de Free. 

Pour que Postfix prenne en compte ce fichier, exécutez cette commande&amp;nbsp;: 

 &lt;nowiki&gt;# postmap /etc/postfix/transport&lt;/nowiki&gt;

Puis relancez Postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

A chaque fois que vous modifierez '''/etc/postfix/transport''', n'oubliez pas d'executer la commande précédente (postmap).

== Login... Passwd...  ==

Actuellement, postfix n'accepte d'envoyer les mails que s'ils sont envoyés depuis le serveur mail. Vous avez sûrement l'habitude d'envoyer les mails depuis un autre PC. Généralement, le SMTP demande un login, un password et envoie vos mails. 

C'est ce que nous allons régler maintenant. 

Problème&amp;nbsp;: Postfix seul ne fournit pas de service d'identification. Il doit utiliser un serveur SASL externe. 

Solution&amp;nbsp;: Dovecot, que nous avons précédemment installé pour la réception de mails (IMAP-POP3) peut faire office de serveur SASL. 

Pour activer ce service, dans le fichier de configuration '''/etc/dovecot/dovecot.conf''', ajoutez (ou décommentez) ceci dans la section auth default { }&amp;nbsp;: 

 auth default {
 …
 socket listen {
   client {
     path  &lt;nowiki&gt;= /var/spool/postfix/private/auth&lt;/nowiki&gt;
    group = postfix
    mode  &lt;nowiki&gt;= 0660&lt;/nowiki&gt;
  }
 }
 …

Il s'agit pour Dovecot de créer un socket Unix, sur lequel il écoutera les demandes d'identification provenant de Postfix. Comme le service SMTP de Postfix est chrooté (emprisonné) dans le répertoire '''/var/spool/postfix/''', il faut placer ce socket sous ce répertoire, ce qui se fera automatiquement en relançant Dovecot avec la commande :             

 &lt;nowiki&gt;# /etc/init.d/dovecot restart&lt;/nowiki&gt;

Dovecot accepte l'identification mais Postfix ne le sait pas&amp;nbsp;!! Il faut lui dire (ajoutez dans '''/etc/postfix/main.cf''')&amp;nbsp;: 

 &lt;nowiki&gt;# Activer l'identification SASL&lt;/nowiki&gt;
 smtpd_sasl_auth_enable = yes

 &lt;nowiki&gt;# Utiliser le service d'identification de Dovecot&lt;/nowiki&gt;
 smtpd_sasl_type = dovecot
 smtpd_sasl_path = private/auth

 &lt;nowiki&gt;# Noter dans les en-tête des messages l'identifiant de l'utilisateur.&lt;/nowiki&gt;
 smtpd_sasl_authenticated_header = yes

Profitons-en pour peaufiner le fichier de configuration de postfix '''/etc/postfix/main.cf'''&amp;nbsp;: 

 &lt;nowiki&gt;# Règles pour accepter ou refuser une connexion :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on attend une seconde (pour piéger les zombies) ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on interdit la parallélisation là où il n'est pas sensé y en avoir.&lt;/nowiki&gt;
 smtpd_client_restrictions =
    permit_mynetworks, permit_sasl_authenticated,
    sleep 1, reject_unauth_pipelining

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le nom&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'hôte de l'expéditeur (par sa commande HELO ou EHLO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on refuse les noms d'hôte invalides.&lt;/nowiki&gt;
 smtpd_helo_restrictions = reject_invalid_helo_hostname

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît l'adresse&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'expéditeur :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un expéditeur inexistant de notre domaine, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si le domaine de l'expéditeur n'a pas d'IP ou de MX, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un client sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de l'expéditeur n'est pas sous forme canonique, on le refuse.&lt;/nowiki&gt;
 smtpd_sender_restrictions =
    reject_unlisted_sender, reject_unknown_sender_domain,
    permit_mynetworks, permit_sasl_authenticated,
    reject_non_fqdn_sender

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le&lt;/nowiki&gt;
 &lt;nowiki&gt;# destinataire (par la commande RCPT TO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un expéditeur forgé chez nous, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un domaine forgé, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un hôte sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de destination n'est pas sous forme canonique, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - finalement, s'il n'est pas destiné à un domaine que l'on gère ou pour&lt;/nowiki&gt;
 &lt;nowiki&gt;# &lt;/nowiki&gt;  lequel on relaie, on le refuse.
 smtpd_recipient_restrictions =
     reject_unlisted_recipient, reject_unknown_recipient_domain,
     permit_mynetworks, permit_sasl_authenticated,
     reject_non_fqdn_recipient,
     reject_unauth_destination

Allez, on relance postfix pour qu'il prenne en compte tout ça&amp;nbsp;: 

 /etc/init.d/postfix restart

[[Catégorie:Serveurs]]</text>
      <sha1>cek07uo4t7nqpu6l9neb6l4vfu8bmzt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2675</id>
      <parentid>2484</parentid>
      <timestamp>2011-02-06T13:55:08Z</timestamp>
      <contributor>
        <username>Kna</username>
        <id>35</id>
      </contributor>
      <text xml:space="preserve" bytes="19231">= Configuration d'un serveur mail avec postfix  =

Vous ne voulez plus confier vos mails à Gmail, Yahoo ou Hotmail ? 

Vous aimeriez héberger vos mails chez vous mais vous pensez que c'est trop dur, trop compliqué ? 

Vous pensez qu'il faut être ingénieur pour monter un serveur mail ? 

Que nenni !! Nous allons voir dans ce tuto la mise en place d'un serveur mail avec Postfix dans le cadre d'une utilisation personnelle. 

Il ne s'agit pas ici de concurrencer Gmail ou Yahoo mais bien d'avoir notre petite boîte mail bien à nous. Faite avec amour. Et qui marche !! 

Ici, pas de gestion par base SQL ou annuaire LDAP, je vais tâcher de faire le plus simple possible. 

C'est parti !! 

= Une adresse mail, c'est quoi ?  =

== kevin@wanadoo.fr  ==

Une adresse mail, c'est un peu comme une adresse postale. Elle se divise en 2 parties&amp;nbsp;: 

*un domaine&amp;nbsp;: '''wanadoo.fr''' 
*un utilisateur&amp;nbsp;: '''kevin'''

Dans mon exemple, lorsque l'on écrit à Kevin via l'adresse '''kevin@wanadoo.fr''', cela signifie que l'on écrit à l'utilisateur '''kevin''' du domaine '''wanadoo.fr'''. 

Plus précisément, le mail arrive sur la '''machine''' sur laquelle se trouve le '''serveur mail''' de wanadoo.fr, pour être ensuite remis dans la '''boîte mail''' de l'utilisateur kevin. 

== Identifier le serveur mail de wanadoo.fr  ==

Wanadoo.fr, c'est le domaine. Le service mail se trouve quant à lui sur une machine bien precise. Pour l'identifier, une commande bien pratique&amp;nbsp;: 

 $ host -t MX wanadoo.fr
 wanadoo.fr mail is handled by 10 smtp.wanadoo.fr.

'''smtp''' est un ''sous-domaine'' de '''wanadoo.fr''', et la machine sur laquelle se trouve le serveur mail se nomme justement '''smtp.wanadoo.fr'''… 

 $ ping smtp.wanadoo.fr
 PING smtp.wanadoo.fr (80.12.242.142) 56(84) bytes of data.

… et son adresse IP est '''80.12.242.142'''. 

Dans la réalité, l'architecture mail de Wanadoo (Orange maintenant…) est je pense un peu plus compliquée que ça mais ça donne une bonne image de ce que nous allons reproduire pour notre serveur mail. 

= Prérequis  =

Pour avoir son serveur mail, il faut donc&amp;nbsp;: 

*un nom de domaine 
*une IP fixe 
*un PC allumé si possible 24h/24

Pourquoi une IP fixe&amp;nbsp;? Les mails doivent pouvoir toujours trouver le serveur mail, c'est pourquoi l'IP doit être fixe. 

L'association nom de domaine ⇔ adresse IP se règle au niveau du serveur DNS. C'est celui-ci que nous allons régler en premier. 

== Configurer le serveur DNS  ==

Cette partie se révèle souvent être une prise de tête pour les apprentis auto-hébergés. 

On doit spécifier dans le serveur DNS sur quelle IP on peut joindre le serveur mail. 

La plupart des registrars (les marchands de noms de domaine) fournissent une interface simplifiée pour le serveur DNS. 

Un exemple de configuration pour un domaine acheté chez Gandi.net

=== Le champ A  ===

Il faut tout d'abord configurer le champ '''A''' qui fait le lien entre nom de domaine et l'adresse IP du serveur&amp;nbsp;: 

 @       IN    A    12.34.56.78 
 smtp    IN    A    12.34.56.78

'''@'''&amp;nbsp;: signifie que '''monDomaine.com''' est lié à l'IP 12.34.56.78 

'''smtp'''&amp;nbsp;: signifie que le sous-domaine '''smtp.monDomaine.com''' est lui aussi lié à l'IP 12.34.56.78 

Vous pouvez indiquer des adresses IP différentes si vous possédez plusieurs serveurs et plusieurs IP. 

=== Le champ MX  ===

Une fois que le champ '''A''' est complété, il faut pour définir le serveur mail s'occuper du champ '''MX''' ('''M'''ail e'''X'''change). 

Nous allons convenir que le serveur mail correspond au serveur '''smtp.monDomaine.com'''. Son adresse IP ayant déjà été définie par le champ '''A''', le champ '''MX''' s'écrit sous cette forme&amp;nbsp;: 

 monDomaine.com.    IN    MX    10    smtp

Ce qui signifie que '''smtp''' du champ '''A''' sera le serveur '''MX''' de '''monDomaine.com'''. 

Vous suivez toujours&amp;nbsp;?? 

Lorsque vous enverrez des mails sur le domaine '''monDomaine.com''', ils seront automatiquement acheminés vers le serveur '''smtp.monDomaine.com'''. 

'''''Important&amp;nbsp;:''''' 

*Un champ '''MX''' se définit toujours sur un champ '''A''', pas sur un '''CNAME''' (non abordé ici) 
*Ne pas oublier le point après monDomaine.com.

=== Un exemple de configuration de DNS chez gandi.net ===

[[Fichier:Gandi.jpeg]]

Ce qui donne en mode &quot;expert&quot;

 smtp 300 IN A 41.188.26.122 
 @ 28800 IN MX 10 smtp 
 www 10800 IN A 41.188.26.122

=== Configuration chez OVH ===

Rendez-vous sur votre &quot;manager&quot; puis cliquez sur &quot;Domaines &amp; DNS&quot;.
Dans la rubrique &quot;Zone DNS&quot; du domaine concerné, effacez les champs MX existants puis cliquez sur 'Type A&quot; et ajoutez un champ comme ci-dessous :

 sous-domaine: mail2.votre_domaine.com

Sélectionner une IP : adresse_IP_du_serveur_de_mail

Cliquez sur &quot;Validez&quot; pour confirmer l'operation. Ensuite, choisissez 'Type MX&quot; et ajoutez un champ comme ci-dessous :

 Sous-domaine : votre_domaine.com

 Destination: mail2.votre_domaine.com

Cliquez sur &quot;Validez&quot; pour confirmer l'operation. Si la création du champ MX ne passe pas, recommencez en cochant la case &quot;forcer l'opération&quot;. Les changements sont pris en compte le lendemain matin et vos mails seront redirigés vers votre serveur mail.

[http://guides.ovh.com/VotreServeurMail Source]

== Vérifications  ==

Avant même d'installer et configurer son serveur, il faut faire quelques vérifications (après avoir installé bind9-host). 

 $ host -t MX monDomaine.com

Cette commande doit retourner une ligne de ce genre&amp;nbsp;: 

 monDomaine.com mail is handled by 10 smtp.monDomaine.com

Bien sûr, ''smtp.monDomaine.com'' doit être associé à votre IP fixe (ici '''12.34.56.78''')&amp;nbsp;: 

 $ ping smtp.monDomaine.com
 PING smtp.monDomaine.com (12.34.56.78) 56(84) bytes of data.

Si ces 2 vérifications ne fonctionnent pas, '''ce n'est pas la peine d'aller plus loin''', votre serveur DNS est mal configuré.

=== Vérification si vous disposez d'un DNS local ===

Au cas ou vous disposeriez d'un DNS sur votre réseau local, pensez à vérifier sur un DNS externe...

 $ host -t MX monDomaine.com DNS_Externe

C'est le seul moyen d'être certain que &quot;le monde extérieur&quot; saura ou vous envoyer vos mails...

= Ouverture des ports  =

Si votre serveur se trouve derrière une *box, il ne pourra pas communiquer avec le monde extérieur. Il nous faut '''ouvrir des ports'''. 

Votre *box possède une '''IP fixe publique''', c'est l'IP que vous avez normalement renseignée dans votre serveur DNS. 

Derrière votre *box, il y a votre serveur mail qui lui possède également une adresse IP, '''privée'''. Les adresses privées sont en général 192.168.0.xxx ou 192.168.1.xxx. 

Admettons que votre serveur ait comme IP 192.168.0.25 dans votre réseau privé. Il faut alors que votre *box redirige toutes les requètes mail vers l'IP privée 192.168.0.25. 

Les ports à ouvrir sont&amp;nbsp;: 

*25&amp;nbsp;: pour que le serveur réceptionne les mails 
*110&amp;nbsp;: pour relever ses mails via POP 
*143&amp;nbsp;: pour relever ses mails via IMAP

Tous ces ports sont à ouvrir en '''TCP'''. 

Freebox&amp;nbsp;: [http://www.dslvalley.com/dossiers/freebox/freebox-nat.php http://www.dslvalley.com/dossiers/freebox/freebox-nat.php] 

NeufBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php] (fin de page) 

LiveBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/orange/livebox-emule.php http://www.dslvalley.com/dossiers/orange/livebox-emule.php] (fin de page)

= Installation de postfix  =

Votre DNS est correctement configuré&amp;nbsp;? Les ports sont ouverts&amp;nbsp;? Bien. Vous avez fait le plus dur. 

Vérifiez le nom de votre machine&amp;nbsp;: 

 $ hostname

Cette commande doit vous retourner '''smtp.monDomaine.com'''. Si ce n'est pas le cas, éditez le fichier '''/etc/hosts''' et vérifiez que vous avez une ligne comme suit&amp;nbsp;: 

 127.0.0.1 smtp.monDomaine.com smtp

Puis&amp;nbsp;: 

 &lt;nowiki&gt;# hostname smtp.monDomaine.com&lt;/nowiki&gt;

Normalement, le hostname est maintenant OK. 

Il est important que le '''hostname''' de votre machine soit le même que celui retourné par la commande '''host -t MX monDomaine.com''', sinon Postfix va vous emmerder. 

Installons postfix&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install postfix&lt;/nowiki&gt;

Choisissez la configuration '''Internet Site'''. Indiquez ensuite le nom de votre machine&amp;nbsp;: '''smtp.monDomaine.com''' (correspond au ''hostname'') 

Au cas où vous voudriez recommencer&amp;nbsp;: 

 &lt;nowiki&gt;# dpkg-reconfigure postfix&lt;/nowiki&gt;

= Configuration  =

Le fichier de configuration de postfix est '''/etc/postfix/main.cf'''. Il est par défaut très bien sécurisé. 

Nous allons dans un premier temps y ajouter cette ligne&amp;nbsp;: 

 home_mailbox = Maildir/

Cette ligne dit à postfix que les mails des utilisateurs doivent aller dans un répertoire nommé Maildir. 

Commentez (ajoutez un #) la ligne où se trouve '''mailbox_command''' pour que procmail ne soit pas utilisé (en tout cas pas pour le moment): 

 &lt;nowiki&gt;#mailbox_command = procmail -a &quot;$EXTENSION&quot;&lt;/nowiki&gt;

Pour que la modification soit prise en compte, redémarrez postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

= Création d'un nouveau mail  =

Bien. Vous avez votre domaine, votre serveur mail tourne. Créer une adresse mail est très simple. Il suffit d'ajouter un utilisateur&amp;nbsp;!! 

Vous voulez créer une adresse kevin@monDomaine.com&amp;nbsp;? Ajoutez l'utilisateur kevin sur votre machine&amp;nbsp;: 

 &lt;nowiki&gt;# adduser kevin&lt;/nowiki&gt;

Répondez aux questions, choisissez un mot de passe à kevin et c'est tout. 

= Tester l'adresse en local  =

Nous allons envoyer un mail à Kevin, vérifions que le paquet '''mailx''' est installé&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install mailx&lt;/nowiki&gt;

On envoie le mail&amp;nbsp;: 

 &lt;nowiki&gt;# echo &quot;Le contenu du mail&quot; | mail -s &quot;ceci est le sujet&quot; kevin@monDomaine.com&lt;/nowiki&gt;

Le mail sera automatiquement déposé dans le répertoire '''Maildir''' situé dans le home de kevin. S'il n'existe pas, le dossier '''Maildir''' sera automatiquement créé. 

 &lt;nowiki&gt;# ls /home/kevin&lt;/nowiki&gt;
 Maildir

N'hésitez pas à consulter les logs pour voir tout ce qui se passe sur votre serveur mail&amp;nbsp;: 

 &lt;nowiki&gt;# cat /var/log/mail.log&lt;/nowiki&gt;

= Kevin veut lire ses mails&amp;nbsp;!!  =

Envoyer des mails, c'est bien mais pouvoir les lire, c'est mieux&amp;nbsp;!! Pour que Kevin puisse lire ses mails dans un client comme '''Mozilla Thunderbird''', c'est tout simple&amp;nbsp;: 

Kevin veut réceptionner ces mails via IMAP&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-imapd&lt;/nowiki&gt;

Il préfère POP3&amp;nbsp;? Pas de problèmes&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-pop3d&lt;/nowiki&gt;

C'est tout, vous pouvez maintenant utiliser votre client mail favori pour réceptionner vos mails. 

Serveur&amp;nbsp;: '''smtp.monDomaine.com''' 

Login&amp;nbsp;: '''kevin''' 

Password&amp;nbsp;: '''le password défini lors de la création de l'utilisateur kevin''' 

= Kevin veut envoyer des mails&amp;nbsp;!!  =

Kevin est content, il peut lire ses mails. Seulement, il aimerait répondre à ses amis mais il ne peut pas. 

== Utiliser le SMTP de son FAI  ==

Postfix possède son propre service SMTP, mais ce dernier sera généralement bloqué. Pour limiter les envois de SPAMS, les FAI bloquent généralement l'envoi de mails. 

Pour que votre serveur mail puisse envoyer des mails, il faut lui dire d'utiliser le SMTP de votre FAI. C'est le paramètre '''relayhost''' du fichier de configuration '''/etc/postfix/main.cf''' qu'il faut modifier&amp;nbsp;: 

 relayhost = smtp.votreFAI.com

Principaux SMTP français&amp;nbsp;: 

 Orange&amp;nbsp;: smtp.orange.fr
 Free&amp;nbsp;: smtp.free.fr
 Neuf&amp;nbsp;: smtp.neuf.fr

== Utiliser le SMTP de Postfix  ==

Cependant, certains FAI (comme Free) permettent de lever ce blocage via une option dans leur panel de gestion. 

Dans ce cas, plus besoin du '''relayhost'''. Vos mails ne passeront plus par votre FAI, c'est VOTRE serveur qui enverra directement les mails. 

Le problème est que les mails que vous enverrez vers les boîtes '''Yahoo''' seront classées en tant que SPAM. '''AOL''' ne voudra pas de vos mails (ce sera explicitement marqué dans les logs). Quant à '''Hotmail''', les logs vous diront que les mails ont bien été reçus, mais vos correspondants ne les recevront jamais. '''Gmail''' ne pose quant à lui aucun souci. 

Vous voulez utiliser le plus possible votre propre SMTP mais vous voulez quand même pouvoir envoyer des mails vers vos potes restés chez Hotmail&amp;nbsp;? 

Créez un fichier '''/etc/postfix/transport''' avec ce contenu&amp;nbsp;: 

 hotmail.fr    smtp:smtp.free.fr
 hotmail.com   smtp:smtp.free.fr
 yahoo.fr      smtp:smtp.free.fr
 yahoo.com     smtp:smtp.free.fr

Ce fichier dit à postfix que pour les domaines hotmail.fr, hotmail.com, yahoo, etc., il utilisera le SMTP de free. Pour tous les autres domaine, il utilisera le smtp local. A vous d'adapter ce fichier en fonction des domaines qui ne veulent pas de vous. 

Bien sûr, si vous n'êtes pas abonné Free, vous ne pourrez pas utiliser le SMTP de Free. 

Pour que Postfix prenne en compte ce fichier, exécutez cette commande&amp;nbsp;: 

 &lt;nowiki&gt;# postmap /etc/postfix/transport&lt;/nowiki&gt;

Puis relancez Postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

A chaque fois que vous modifierez '''/etc/postfix/transport''', n'oubliez pas d'executer la commande précédente (postmap).

== Login... Passwd...  ==

Actuellement, postfix n'accepte d'envoyer les mails que s'ils sont envoyés depuis le serveur mail. Vous avez sûrement l'habitude d'envoyer les mails depuis un autre PC. Généralement, le SMTP demande un login, un password et envoie vos mails. 

C'est ce que nous allons régler maintenant. 

Problème&amp;nbsp;: Postfix seul ne fournit pas de service d'identification. Il doit utiliser un serveur SASL externe. 

Solution&amp;nbsp;: Dovecot, que nous avons précédemment installé pour la réception de mails (IMAP-POP3) peut faire office de serveur SASL. 

Pour activer ce service, dans le fichier de configuration '''/etc/dovecot/dovecot.conf''', ajoutez (ou décommentez) ceci dans la section auth default { }&amp;nbsp;: 

 auth default {
 …
 socket listen {
   client {
     path  &lt;nowiki&gt;= /var/spool/postfix/private/auth&lt;/nowiki&gt;
    group = postfix
    mode  &lt;nowiki&gt;= 0660&lt;/nowiki&gt;
  }
 }
 …

Il s'agit pour Dovecot de créer un socket Unix, sur lequel il écoutera les demandes d'identification provenant de Postfix. Comme le service SMTP de Postfix est chrooté (emprisonné) dans le répertoire '''/var/spool/postfix/''', il faut placer ce socket sous ce répertoire, ce qui se fera automatiquement en relançant Dovecot avec la commande :             

 &lt;nowiki&gt;# /etc/init.d/dovecot restart&lt;/nowiki&gt;

Dovecot accepte l'identification mais Postfix ne le sait pas&amp;nbsp;!! Il faut lui dire (ajoutez dans '''/etc/postfix/main.cf''')&amp;nbsp;: 

 &lt;nowiki&gt;# Activer l'identification SASL&lt;/nowiki&gt;
 smtpd_sasl_auth_enable = yes

 &lt;nowiki&gt;# Utiliser le service d'identification de Dovecot&lt;/nowiki&gt;
 smtpd_sasl_type = dovecot
 smtpd_sasl_path = private/auth

 &lt;nowiki&gt;# Noter dans les en-tête des messages l'identifiant de l'utilisateur.&lt;/nowiki&gt;
 smtpd_sasl_authenticated_header = yes

Profitons-en pour peaufiner le fichier de configuration de postfix '''/etc/postfix/main.cf'''&amp;nbsp;: 

 &lt;nowiki&gt;# Règles pour accepter ou refuser une connexion :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on attend une seconde (pour piéger les zombies) ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on interdit la parallélisation là où il n'est pas sensé y en avoir.&lt;/nowiki&gt;
 smtpd_client_restrictions =
    permit_mynetworks, permit_sasl_authenticated,
    sleep 1, reject_unauth_pipelining

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le nom&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'hôte de l'expéditeur (par sa commande HELO ou EHLO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on refuse les noms d'hôte invalides.&lt;/nowiki&gt;
 smtpd_helo_restrictions = reject_invalid_helo_hostname

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît l'adresse&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'expéditeur :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un expéditeur inexistant de notre domaine, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si le domaine de l'expéditeur n'a pas d'IP ou de MX, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un client sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de l'expéditeur n'est pas sous forme canonique, on le refuse.&lt;/nowiki&gt;
 smtpd_sender_restrictions =
    reject_unlisted_sender, reject_unknown_sender_domain,
    permit_mynetworks, permit_sasl_authenticated,
    reject_non_fqdn_sender

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le&lt;/nowiki&gt;
 &lt;nowiki&gt;# destinataire (par la commande RCPT TO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un expéditeur forgé chez nous, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un domaine forgé, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un hôte sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de destination n'est pas sous forme canonique, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - finalement, s'il n'est pas destiné à un domaine que l'on gère ou pour&lt;/nowiki&gt;
 &lt;nowiki&gt;# &lt;/nowiki&gt;  lequel on relaie, on le refuse.
 smtpd_recipient_restrictions =
     reject_unlisted_recipient, reject_unknown_recipient_domain,
     permit_mynetworks, permit_sasl_authenticated,
     reject_non_fqdn_recipient,
     reject_unauth_destination

Allez, on relance postfix pour qu'il prenne en compte tout ça&amp;nbsp;: 

 /etc/init.d/postfix restart

== Chiffrement STARTTLS ==

Nous pouvons rajouter le support de STARTTLS, ce qui permet à un moment donné de chiffrer la connexion avec Postfix.
L'avantage est que l'on peut alors chiffrer l'authentification SASL pour que le mot de passe ne passe pas en clair.
On peut aussi chiffrer le contenu des messages, mais pour celà il est plus intéressant de s'orienter vers GPG ou S/MIME, afin de s'assurer que le message reste chiffré d'un bout à l'autre entre l'expéditeur et le destinataire.

Pour pouvoir utiliser STARTTLS, il nous faut un [[openssl|certificat SSL]]. Une fois le certificat obtenu, il suffit de rajouter dans main.cf :

 smtpd_tls_cert_file = /chemin/vers/certificat
 smtpd_tls_key_file = /chemin/vers/cle
 smtpd_use_tls = yes

Ceci suffit pour activer STARTTLS. Nous pouvons choisir le niveau de verbosité des logs :

 smtpd_tls_loglevel = 0

*0 : Désactive l'enregistrement de l'activité TLS.
*1 : Enregistre les informations de négociation TLS et des certificats.
*2 : Enregistre les niveaux durant la négociation TLS.
*3 : Retranscrit en hexadecimal et ASCII le processus de négotiation TLS
*4 : Retranscrit en hexadecimal et ASCII toute la transmission après STARTTLS

Enfin, il est possible d'interdire l'authentification SASL en clair avec :

 smtpd_tls_auth_only = yes


= Ressources =
*(en) http://www.postfix.org/documentation.html
*(fr) http://x.guimard.free.fr/postfix/
La traduction française n'est pas à jour, mais reste largement suffisante dans la plupart des cas.

[[Catégorie:Serveurs]]</text>
      <sha1>rpduq3tyoepwmem52pjiimp9bff903s</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2886</id>
      <parentid>2675</parentid>
      <timestamp>2011-04-13T07:50:31Z</timestamp>
      <contributor>
        <username>Debianhadic</username>
        <id>11</id>
      </contributor>
      <text xml:space="preserve" bytes="19232">= Configuration d''un serveur mail avec postfix  =

Vous ne voulez plus confier vos mails à Gmail, Yahoo ou Hotmail ? 

Vous aimeriez héberger vos mails chez vous mais vous pensez que c'est trop dur, trop compliqué ? 

Vous pensez qu'il faut être ingénieur pour monter un serveur mail ? 

Que nenni !! Nous allons voir dans ce tuto la mise en place d'un serveur mail avec Postfix dans le cadre d'une utilisation personnelle. 

Il ne s'agit pas ici de concurrencer Gmail ou Yahoo mais bien d'avoir notre petite boîte mail bien à nous. Faite avec amour. Et qui marche !! 

Ici, pas de gestion par base SQL ou annuaire LDAP, je vais tâcher de faire le plus simple possible. 

C'est parti !! 

= Une adresse mail, c'est quoi ?  =

== kevin@wanadoo.fr  ==

Une adresse mail, c'est un peu comme une adresse postale. Elle se divise en 2 parties&amp;nbsp;: 

*un domaine&amp;nbsp;: '''wanadoo.fr''' 
*un utilisateur&amp;nbsp;: '''kevin'''

Dans mon exemple, lorsque l'on écrit à Kevin via l'adresse '''kevin@wanadoo.fr''', cela signifie que l'on écrit à l'utilisateur '''kevin''' du domaine '''wanadoo.fr'''. 

Plus précisément, le mail arrive sur la '''machine''' sur laquelle se trouve le '''serveur mail''' de wanadoo.fr, pour être ensuite remis dans la '''boîte mail''' de l'utilisateur kevin. 

== Identifier le serveur mail de wanadoo.fr  ==

Wanadoo.fr, c'est le domaine. Le service mail se trouve quant à lui sur une machine bien precise. Pour l'identifier, une commande bien pratique&amp;nbsp;: 

 $ host -t MX wanadoo.fr
 wanadoo.fr mail is handled by 10 smtp.wanadoo.fr.

'''smtp''' est un ''sous-domaine'' de '''wanadoo.fr''', et la machine sur laquelle se trouve le serveur mail se nomme justement '''smtp.wanadoo.fr'''… 

 $ ping smtp.wanadoo.fr
 PING smtp.wanadoo.fr (80.12.242.142) 56(84) bytes of data.

… et son adresse IP est '''80.12.242.142'''. 

Dans la réalité, l'architecture mail de Wanadoo (Orange maintenant…) est je pense un peu plus compliquée que ça mais ça donne une bonne image de ce que nous allons reproduire pour notre serveur mail. 

= Prérequis  =

Pour avoir son serveur mail, il faut donc&amp;nbsp;: 

*un nom de domaine 
*une IP fixe 
*un PC allumé si possible 24h/24

Pourquoi une IP fixe&amp;nbsp;? Les mails doivent pouvoir toujours trouver le serveur mail, c'est pourquoi l'IP doit être fixe. 

L'association nom de domaine ⇔ adresse IP se règle au niveau du serveur DNS. C'est celui-ci que nous allons régler en premier. 

== Configurer le serveur DNS  ==

Cette partie se révèle souvent être une prise de tête pour les apprentis auto-hébergés. 

On doit spécifier dans le serveur DNS sur quelle IP on peut joindre le serveur mail. 

La plupart des registrars (les marchands de noms de domaine) fournissent une interface simplifiée pour le serveur DNS. 

Un exemple de configuration pour un domaine acheté chez Gandi.net

=== Le champ A  ===

Il faut tout d'abord configurer le champ '''A''' qui fait le lien entre nom de domaine et l'adresse IP du serveur&amp;nbsp;: 

 @       IN    A    12.34.56.78 
 smtp    IN    A    12.34.56.78

'''@'''&amp;nbsp;: signifie que '''monDomaine.com''' est lié à l'IP 12.34.56.78 

'''smtp'''&amp;nbsp;: signifie que le sous-domaine '''smtp.monDomaine.com''' est lui aussi lié à l'IP 12.34.56.78 

Vous pouvez indiquer des adresses IP différentes si vous possédez plusieurs serveurs et plusieurs IP. 

=== Le champ MX  ===

Une fois que le champ '''A''' est complété, il faut pour définir le serveur mail s'occuper du champ '''MX''' ('''M'''ail e'''X'''change). 

Nous allons convenir que le serveur mail correspond au serveur '''smtp.monDomaine.com'''. Son adresse IP ayant déjà été définie par le champ '''A''', le champ '''MX''' s'écrit sous cette forme&amp;nbsp;: 

 monDomaine.com.    IN    MX    10    smtp

Ce qui signifie que '''smtp''' du champ '''A''' sera le serveur '''MX''' de '''monDomaine.com'''. 

Vous suivez toujours&amp;nbsp;?? 

Lorsque vous enverrez des mails sur le domaine '''monDomaine.com''', ils seront automatiquement acheminés vers le serveur '''smtp.monDomaine.com'''. 

'''''Important&amp;nbsp;:''''' 

*Un champ '''MX''' se définit toujours sur un champ '''A''', pas sur un '''CNAME''' (non abordé ici) 
*Ne pas oublier le point après monDomaine.com.

=== Un exemple de configuration de DNS chez gandi.net ===

[[Fichier:Gandi.jpeg]]

Ce qui donne en mode &quot;expert&quot;

 smtp 300 IN A 41.188.26.122 
 @ 28800 IN MX 10 smtp 
 www 10800 IN A 41.188.26.122

=== Configuration chez OVH ===

Rendez-vous sur votre &quot;manager&quot; puis cliquez sur &quot;Domaines &amp; DNS&quot;.
Dans la rubrique &quot;Zone DNS&quot; du domaine concerné, effacez les champs MX existants puis cliquez sur 'Type A&quot; et ajoutez un champ comme ci-dessous :

 sous-domaine: mail2.votre_domaine.com

Sélectionner une IP : adresse_IP_du_serveur_de_mail

Cliquez sur &quot;Validez&quot; pour confirmer l'operation. Ensuite, choisissez 'Type MX&quot; et ajoutez un champ comme ci-dessous :

 Sous-domaine : votre_domaine.com

 Destination: mail2.votre_domaine.com

Cliquez sur &quot;Validez&quot; pour confirmer l'operation. Si la création du champ MX ne passe pas, recommencez en cochant la case &quot;forcer l'opération&quot;. Les changements sont pris en compte le lendemain matin et vos mails seront redirigés vers votre serveur mail.

[http://guides.ovh.com/VotreServeurMail Source]

== Vérifications  ==

Avant même d'installer et configurer son serveur, il faut faire quelques vérifications (après avoir installé bind9-host). 

 $ host -t MX monDomaine.com

Cette commande doit retourner une ligne de ce genre&amp;nbsp;: 

 monDomaine.com mail is handled by 10 smtp.monDomaine.com

Bien sûr, ''smtp.monDomaine.com'' doit être associé à votre IP fixe (ici '''12.34.56.78''')&amp;nbsp;: 

 $ ping smtp.monDomaine.com
 PING smtp.monDomaine.com (12.34.56.78) 56(84) bytes of data.

Si ces 2 vérifications ne fonctionnent pas, '''ce n'est pas la peine d'aller plus loin''', votre serveur DNS est mal configuré.

=== Vérification si vous disposez d'un DNS local ===

Au cas ou vous disposeriez d'un DNS sur votre réseau local, pensez à vérifier sur un DNS externe...

 $ host -t MX monDomaine.com DNS_Externe

C'est le seul moyen d'être certain que &quot;le monde extérieur&quot; saura ou vous envoyer vos mails...

= Ouverture des ports  =

Si votre serveur se trouve derrière une *box, il ne pourra pas communiquer avec le monde extérieur. Il nous faut '''ouvrir des ports'''. 

Votre *box possède une '''IP fixe publique''', c'est l'IP que vous avez normalement renseignée dans votre serveur DNS. 

Derrière votre *box, il y a votre serveur mail qui lui possède également une adresse IP, '''privée'''. Les adresses privées sont en général 192.168.0.xxx ou 192.168.1.xxx. 

Admettons que votre serveur ait comme IP 192.168.0.25 dans votre réseau privé. Il faut alors que votre *box redirige toutes les requètes mail vers l'IP privée 192.168.0.25. 

Les ports à ouvrir sont&amp;nbsp;: 

*25&amp;nbsp;: pour que le serveur réceptionne les mails 
*110&amp;nbsp;: pour relever ses mails via POP 
*143&amp;nbsp;: pour relever ses mails via IMAP

Tous ces ports sont à ouvrir en '''TCP'''. 

Freebox&amp;nbsp;: [http://www.dslvalley.com/dossiers/freebox/freebox-nat.php http://www.dslvalley.com/dossiers/freebox/freebox-nat.php] 

NeufBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php] (fin de page) 

LiveBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/orange/livebox-emule.php http://www.dslvalley.com/dossiers/orange/livebox-emule.php] (fin de page)

= Installation de postfix  =

Votre DNS est correctement configuré&amp;nbsp;? Les ports sont ouverts&amp;nbsp;? Bien. Vous avez fait le plus dur. 

Vérifiez le nom de votre machine&amp;nbsp;: 

 $ hostname

Cette commande doit vous retourner '''smtp.monDomaine.com'''. Si ce n'est pas le cas, éditez le fichier '''/etc/hosts''' et vérifiez que vous avez une ligne comme suit&amp;nbsp;: 

 127.0.0.1 smtp.monDomaine.com smtp

Puis&amp;nbsp;: 

 &lt;nowiki&gt;# hostname smtp.monDomaine.com&lt;/nowiki&gt;

Normalement, le hostname est maintenant OK. 

Il est important que le '''hostname''' de votre machine soit le même que celui retourné par la commande '''host -t MX monDomaine.com''', sinon Postfix va vous emmerder. 

Installons postfix&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install postfix&lt;/nowiki&gt;

Choisissez la configuration '''Internet Site'''. Indiquez ensuite le nom de votre machine&amp;nbsp;: '''smtp.monDomaine.com''' (correspond au ''hostname'') 

Au cas où vous voudriez recommencer&amp;nbsp;: 

 &lt;nowiki&gt;# dpkg-reconfigure postfix&lt;/nowiki&gt;

= Configuration  =

Le fichier de configuration de postfix est '''/etc/postfix/main.cf'''. Il est par défaut très bien sécurisé. 

Nous allons dans un premier temps y ajouter cette ligne&amp;nbsp;: 

 home_mailbox = Maildir/

Cette ligne dit à postfix que les mails des utilisateurs doivent aller dans un répertoire nommé Maildir. 

Commentez (ajoutez un #) la ligne où se trouve '''mailbox_command''' pour que procmail ne soit pas utilisé (en tout cas pas pour le moment): 

 &lt;nowiki&gt;#mailbox_command = procmail -a &quot;$EXTENSION&quot;&lt;/nowiki&gt;

Pour que la modification soit prise en compte, redémarrez postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

= Création d'un nouveau mail  =

Bien. Vous avez votre domaine, votre serveur mail tourne. Créer une adresse mail est très simple. Il suffit d'ajouter un utilisateur&amp;nbsp;!! 

Vous voulez créer une adresse kevin@monDomaine.com&amp;nbsp;? Ajoutez l'utilisateur kevin sur votre machine&amp;nbsp;: 

 &lt;nowiki&gt;# adduser kevin&lt;/nowiki&gt;

Répondez aux questions, choisissez un mot de passe à kevin et c'est tout. 

= Tester l'adresse en local  =

Nous allons envoyer un mail à Kevin, vérifions que le paquet '''mailx''' est installé&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install mailx&lt;/nowiki&gt;

On envoie le mail&amp;nbsp;: 

 &lt;nowiki&gt;# echo &quot;Le contenu du mail&quot; | mail -s &quot;ceci est le sujet&quot; kevin@monDomaine.com&lt;/nowiki&gt;

Le mail sera automatiquement déposé dans le répertoire '''Maildir''' situé dans le home de kevin. S'il n'existe pas, le dossier '''Maildir''' sera automatiquement créé. 

 &lt;nowiki&gt;# ls /home/kevin&lt;/nowiki&gt;
 Maildir

N'hésitez pas à consulter les logs pour voir tout ce qui se passe sur votre serveur mail&amp;nbsp;: 

 &lt;nowiki&gt;# cat /var/log/mail.log&lt;/nowiki&gt;

= Kevin veut lire ses mails&amp;nbsp;!!  =

Envoyer des mails, c'est bien mais pouvoir les lire, c'est mieux&amp;nbsp;!! Pour que Kevin puisse lire ses mails dans un client comme '''Mozilla Thunderbird''', c'est tout simple&amp;nbsp;: 

Kevin veut réceptionner ces mails via IMAP&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-imapd&lt;/nowiki&gt;

Il préfère POP3&amp;nbsp;? Pas de problèmes&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-pop3d&lt;/nowiki&gt;

C'est tout, vous pouvez maintenant utiliser votre client mail favori pour réceptionner vos mails. 

Serveur&amp;nbsp;: '''smtp.monDomaine.com''' 

Login&amp;nbsp;: '''kevin''' 

Password&amp;nbsp;: '''le password défini lors de la création de l'utilisateur kevin''' 

= Kevin veut envoyer des mails&amp;nbsp;!!  =

Kevin est content, il peut lire ses mails. Seulement, il aimerait répondre à ses amis mais il ne peut pas. 

== Utiliser le SMTP de son FAI  ==

Postfix possède son propre service SMTP, mais ce dernier sera généralement bloqué. Pour limiter les envois de SPAMS, les FAI bloquent généralement l'envoi de mails. 

Pour que votre serveur mail puisse envoyer des mails, il faut lui dire d'utiliser le SMTP de votre FAI. C'est le paramètre '''relayhost''' du fichier de configuration '''/etc/postfix/main.cf''' qu'il faut modifier&amp;nbsp;: 

 relayhost = smtp.votreFAI.com

Principaux SMTP français&amp;nbsp;: 

 Orange&amp;nbsp;: smtp.orange.fr
 Free&amp;nbsp;: smtp.free.fr
 Neuf&amp;nbsp;: smtp.neuf.fr

== Utiliser le SMTP de Postfix  ==

Cependant, certains FAI (comme Free) permettent de lever ce blocage via une option dans leur panel de gestion. 

Dans ce cas, plus besoin du '''relayhost'''. Vos mails ne passeront plus par votre FAI, c'est VOTRE serveur qui enverra directement les mails. 

Le problème est que les mails que vous enverrez vers les boîtes '''Yahoo''' seront classées en tant que SPAM. '''AOL''' ne voudra pas de vos mails (ce sera explicitement marqué dans les logs). Quant à '''Hotmail''', les logs vous diront que les mails ont bien été reçus, mais vos correspondants ne les recevront jamais. '''Gmail''' ne pose quant à lui aucun souci. 

Vous voulez utiliser le plus possible votre propre SMTP mais vous voulez quand même pouvoir envoyer des mails vers vos potes restés chez Hotmail&amp;nbsp;? 

Créez un fichier '''/etc/postfix/transport''' avec ce contenu&amp;nbsp;: 

 hotmail.fr    smtp:smtp.free.fr
 hotmail.com   smtp:smtp.free.fr
 yahoo.fr      smtp:smtp.free.fr
 yahoo.com     smtp:smtp.free.fr

Ce fichier dit à postfix que pour les domaines hotmail.fr, hotmail.com, yahoo, etc., il utilisera le SMTP de free. Pour tous les autres domaine, il utilisera le smtp local. A vous d'adapter ce fichier en fonction des domaines qui ne veulent pas de vous. 

Bien sûr, si vous n'êtes pas abonné Free, vous ne pourrez pas utiliser le SMTP de Free. 

Pour que Postfix prenne en compte ce fichier, exécutez cette commande&amp;nbsp;: 

 &lt;nowiki&gt;# postmap /etc/postfix/transport&lt;/nowiki&gt;

Puis relancez Postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

A chaque fois que vous modifierez '''/etc/postfix/transport''', n'oubliez pas d'executer la commande précédente (postmap).

== Login... Passwd...  ==

Actuellement, postfix n'accepte d'envoyer les mails que s'ils sont envoyés depuis le serveur mail. Vous avez sûrement l'habitude d'envoyer les mails depuis un autre PC. Généralement, le SMTP demande un login, un password et envoie vos mails. 

C'est ce que nous allons régler maintenant. 

Problème&amp;nbsp;: Postfix seul ne fournit pas de service d'identification. Il doit utiliser un serveur SASL externe. 

Solution&amp;nbsp;: Dovecot, que nous avons précédemment installé pour la réception de mails (IMAP-POP3) peut faire office de serveur SASL. 

Pour activer ce service, dans le fichier de configuration '''/etc/dovecot/dovecot.conf''', ajoutez (ou décommentez) ceci dans la section auth default { }&amp;nbsp;: 

 auth default {
 …
 socket listen {
   client {
     path  &lt;nowiki&gt;= /var/spool/postfix/private/auth&lt;/nowiki&gt;
    group = postfix
    mode  &lt;nowiki&gt;= 0660&lt;/nowiki&gt;
  }
 }
 …

Il s'agit pour Dovecot de créer un socket Unix, sur lequel il écoutera les demandes d'identification provenant de Postfix. Comme le service SMTP de Postfix est chrooté (emprisonné) dans le répertoire '''/var/spool/postfix/''', il faut placer ce socket sous ce répertoire, ce qui se fera automatiquement en relançant Dovecot avec la commande :             

 &lt;nowiki&gt;# /etc/init.d/dovecot restart&lt;/nowiki&gt;

Dovecot accepte l'identification mais Postfix ne le sait pas&amp;nbsp;!! Il faut lui dire (ajoutez dans '''/etc/postfix/main.cf''')&amp;nbsp;: 

 &lt;nowiki&gt;# Activer l'identification SASL&lt;/nowiki&gt;
 smtpd_sasl_auth_enable = yes

 &lt;nowiki&gt;# Utiliser le service d'identification de Dovecot&lt;/nowiki&gt;
 smtpd_sasl_type = dovecot
 smtpd_sasl_path = private/auth

 &lt;nowiki&gt;# Noter dans les en-tête des messages l'identifiant de l'utilisateur.&lt;/nowiki&gt;
 smtpd_sasl_authenticated_header = yes

Profitons-en pour peaufiner le fichier de configuration de postfix '''/etc/postfix/main.cf'''&amp;nbsp;: 

 &lt;nowiki&gt;# Règles pour accepter ou refuser une connexion :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on attend une seconde (pour piéger les zombies) ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on interdit la parallélisation là où il n'est pas sensé y en avoir.&lt;/nowiki&gt;
 smtpd_client_restrictions =
    permit_mynetworks, permit_sasl_authenticated,
    sleep 1, reject_unauth_pipelining

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le nom&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'hôte de l'expéditeur (par sa commande HELO ou EHLO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on refuse les noms d'hôte invalides.&lt;/nowiki&gt;
 smtpd_helo_restrictions = reject_invalid_helo_hostname

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît l'adresse&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'expéditeur :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un expéditeur inexistant de notre domaine, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si le domaine de l'expéditeur n'a pas d'IP ou de MX, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un client sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de l'expéditeur n'est pas sous forme canonique, on le refuse.&lt;/nowiki&gt;
 smtpd_sender_restrictions =
    reject_unlisted_sender, reject_unknown_sender_domain,
    permit_mynetworks, permit_sasl_authenticated,
    reject_non_fqdn_sender

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le&lt;/nowiki&gt;
 &lt;nowiki&gt;# destinataire (par la commande RCPT TO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un expéditeur forgé chez nous, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un domaine forgé, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un hôte sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de destination n'est pas sous forme canonique, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - finalement, s'il n'est pas destiné à un domaine que l'on gère ou pour&lt;/nowiki&gt;
 &lt;nowiki&gt;# &lt;/nowiki&gt;  lequel on relaie, on le refuse.
 smtpd_recipient_restrictions =
     reject_unlisted_recipient, reject_unknown_recipient_domain,
     permit_mynetworks, permit_sasl_authenticated,
     reject_non_fqdn_recipient,
     reject_unauth_destination

Allez, on relance postfix pour qu'il prenne en compte tout ça&amp;nbsp;: 

 /etc/init.d/postfix restart

== Chiffrement STARTTLS ==

Nous pouvons rajouter le support de STARTTLS, ce qui permet à un moment donné de chiffrer la connexion avec Postfix.
L'avantage est que l'on peut alors chiffrer l'authentification SASL pour que le mot de passe ne passe pas en clair.
On peut aussi chiffrer le contenu des messages, mais pour celà il est plus intéressant de s'orienter vers GPG ou S/MIME, afin de s'assurer que le message reste chiffré d'un bout à l'autre entre l'expéditeur et le destinataire.

Pour pouvoir utiliser STARTTLS, il nous faut un [[openssl|certificat SSL]]. Une fois le certificat obtenu, il suffit de rajouter dans main.cf :

 smtpd_tls_cert_file = /chemin/vers/certificat
 smtpd_tls_key_file = /chemin/vers/cle
 smtpd_use_tls = yes

Ceci suffit pour activer STARTTLS. Nous pouvons choisir le niveau de verbosité des logs :

 smtpd_tls_loglevel = 0

*0 : Désactive l'enregistrement de l'activité TLS.
*1 : Enregistre les informations de négociation TLS et des certificats.
*2 : Enregistre les niveaux durant la négociation TLS.
*3 : Retranscrit en hexadecimal et ASCII le processus de négotiation TLS
*4 : Retranscrit en hexadecimal et ASCII toute la transmission après STARTTLS

Enfin, il est possible d'interdire l'authentification SASL en clair avec :

 smtpd_tls_auth_only = yes


= Ressources =
*(en) http://www.postfix.org/documentation.html
*(fr) http://x.guimard.free.fr/postfix/
La traduction française n'est pas à jour, mais reste largement suffisante dans la plupart des cas.

[[Catégorie:Serveurs]]</text>
      <sha1>q9focy31fqkrd53yr44ncbrgivgabor</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2887</id>
      <parentid>2886</parentid>
      <timestamp>2011-04-13T07:51:02Z</timestamp>
      <contributor>
        <username>Debianhadic</username>
        <id>11</id>
      </contributor>
      <text xml:space="preserve" bytes="19232">= Configuration d\'un serveur mail avec postfix  =

Vous ne voulez plus confier vos mails à Gmail, Yahoo ou Hotmail ? 

Vous aimeriez héberger vos mails chez vous mais vous pensez que c'est trop dur, trop compliqué ? 

Vous pensez qu'il faut être ingénieur pour monter un serveur mail ? 

Que nenni !! Nous allons voir dans ce tuto la mise en place d'un serveur mail avec Postfix dans le cadre d'une utilisation personnelle. 

Il ne s'agit pas ici de concurrencer Gmail ou Yahoo mais bien d'avoir notre petite boîte mail bien à nous. Faite avec amour. Et qui marche !! 

Ici, pas de gestion par base SQL ou annuaire LDAP, je vais tâcher de faire le plus simple possible. 

C'est parti !! 

= Une adresse mail, c'est quoi ?  =

== kevin@wanadoo.fr  ==

Une adresse mail, c'est un peu comme une adresse postale. Elle se divise en 2 parties&amp;nbsp;: 

*un domaine&amp;nbsp;: '''wanadoo.fr''' 
*un utilisateur&amp;nbsp;: '''kevin'''

Dans mon exemple, lorsque l'on écrit à Kevin via l'adresse '''kevin@wanadoo.fr''', cela signifie que l'on écrit à l'utilisateur '''kevin''' du domaine '''wanadoo.fr'''. 

Plus précisément, le mail arrive sur la '''machine''' sur laquelle se trouve le '''serveur mail''' de wanadoo.fr, pour être ensuite remis dans la '''boîte mail''' de l'utilisateur kevin. 

== Identifier le serveur mail de wanadoo.fr  ==

Wanadoo.fr, c'est le domaine. Le service mail se trouve quant à lui sur une machine bien precise. Pour l'identifier, une commande bien pratique&amp;nbsp;: 

 $ host -t MX wanadoo.fr
 wanadoo.fr mail is handled by 10 smtp.wanadoo.fr.

'''smtp''' est un ''sous-domaine'' de '''wanadoo.fr''', et la machine sur laquelle se trouve le serveur mail se nomme justement '''smtp.wanadoo.fr'''… 

 $ ping smtp.wanadoo.fr
 PING smtp.wanadoo.fr (80.12.242.142) 56(84) bytes of data.

… et son adresse IP est '''80.12.242.142'''. 

Dans la réalité, l'architecture mail de Wanadoo (Orange maintenant…) est je pense un peu plus compliquée que ça mais ça donne une bonne image de ce que nous allons reproduire pour notre serveur mail. 

= Prérequis  =

Pour avoir son serveur mail, il faut donc&amp;nbsp;: 

*un nom de domaine 
*une IP fixe 
*un PC allumé si possible 24h/24

Pourquoi une IP fixe&amp;nbsp;? Les mails doivent pouvoir toujours trouver le serveur mail, c'est pourquoi l'IP doit être fixe. 

L'association nom de domaine ⇔ adresse IP se règle au niveau du serveur DNS. C'est celui-ci que nous allons régler en premier. 

== Configurer le serveur DNS  ==

Cette partie se révèle souvent être une prise de tête pour les apprentis auto-hébergés. 

On doit spécifier dans le serveur DNS sur quelle IP on peut joindre le serveur mail. 

La plupart des registrars (les marchands de noms de domaine) fournissent une interface simplifiée pour le serveur DNS. 

Un exemple de configuration pour un domaine acheté chez Gandi.net

=== Le champ A  ===

Il faut tout d'abord configurer le champ '''A''' qui fait le lien entre nom de domaine et l'adresse IP du serveur&amp;nbsp;: 

 @       IN    A    12.34.56.78 
 smtp    IN    A    12.34.56.78

'''@'''&amp;nbsp;: signifie que '''monDomaine.com''' est lié à l'IP 12.34.56.78 

'''smtp'''&amp;nbsp;: signifie que le sous-domaine '''smtp.monDomaine.com''' est lui aussi lié à l'IP 12.34.56.78 

Vous pouvez indiquer des adresses IP différentes si vous possédez plusieurs serveurs et plusieurs IP. 

=== Le champ MX  ===

Une fois que le champ '''A''' est complété, il faut pour définir le serveur mail s'occuper du champ '''MX''' ('''M'''ail e'''X'''change). 

Nous allons convenir que le serveur mail correspond au serveur '''smtp.monDomaine.com'''. Son adresse IP ayant déjà été définie par le champ '''A''', le champ '''MX''' s'écrit sous cette forme&amp;nbsp;: 

 monDomaine.com.    IN    MX    10    smtp

Ce qui signifie que '''smtp''' du champ '''A''' sera le serveur '''MX''' de '''monDomaine.com'''. 

Vous suivez toujours&amp;nbsp;?? 

Lorsque vous enverrez des mails sur le domaine '''monDomaine.com''', ils seront automatiquement acheminés vers le serveur '''smtp.monDomaine.com'''. 

'''''Important&amp;nbsp;:''''' 

*Un champ '''MX''' se définit toujours sur un champ '''A''', pas sur un '''CNAME''' (non abordé ici) 
*Ne pas oublier le point après monDomaine.com.

=== Un exemple de configuration de DNS chez gandi.net ===

[[Fichier:Gandi.jpeg]]

Ce qui donne en mode &quot;expert&quot;

 smtp 300 IN A 41.188.26.122 
 @ 28800 IN MX 10 smtp 
 www 10800 IN A 41.188.26.122

=== Configuration chez OVH ===

Rendez-vous sur votre &quot;manager&quot; puis cliquez sur &quot;Domaines &amp; DNS&quot;.
Dans la rubrique &quot;Zone DNS&quot; du domaine concerné, effacez les champs MX existants puis cliquez sur 'Type A&quot; et ajoutez un champ comme ci-dessous :

 sous-domaine: mail2.votre_domaine.com

Sélectionner une IP : adresse_IP_du_serveur_de_mail

Cliquez sur &quot;Validez&quot; pour confirmer l'operation. Ensuite, choisissez 'Type MX&quot; et ajoutez un champ comme ci-dessous :

 Sous-domaine : votre_domaine.com

 Destination: mail2.votre_domaine.com

Cliquez sur &quot;Validez&quot; pour confirmer l'operation. Si la création du champ MX ne passe pas, recommencez en cochant la case &quot;forcer l'opération&quot;. Les changements sont pris en compte le lendemain matin et vos mails seront redirigés vers votre serveur mail.

[http://guides.ovh.com/VotreServeurMail Source]

== Vérifications  ==

Avant même d'installer et configurer son serveur, il faut faire quelques vérifications (après avoir installé bind9-host). 

 $ host -t MX monDomaine.com

Cette commande doit retourner une ligne de ce genre&amp;nbsp;: 

 monDomaine.com mail is handled by 10 smtp.monDomaine.com

Bien sûr, ''smtp.monDomaine.com'' doit être associé à votre IP fixe (ici '''12.34.56.78''')&amp;nbsp;: 

 $ ping smtp.monDomaine.com
 PING smtp.monDomaine.com (12.34.56.78) 56(84) bytes of data.

Si ces 2 vérifications ne fonctionnent pas, '''ce n'est pas la peine d'aller plus loin''', votre serveur DNS est mal configuré.

=== Vérification si vous disposez d'un DNS local ===

Au cas ou vous disposeriez d'un DNS sur votre réseau local, pensez à vérifier sur un DNS externe...

 $ host -t MX monDomaine.com DNS_Externe

C'est le seul moyen d'être certain que &quot;le monde extérieur&quot; saura ou vous envoyer vos mails...

= Ouverture des ports  =

Si votre serveur se trouve derrière une *box, il ne pourra pas communiquer avec le monde extérieur. Il nous faut '''ouvrir des ports'''. 

Votre *box possède une '''IP fixe publique''', c'est l'IP que vous avez normalement renseignée dans votre serveur DNS. 

Derrière votre *box, il y a votre serveur mail qui lui possède également une adresse IP, '''privée'''. Les adresses privées sont en général 192.168.0.xxx ou 192.168.1.xxx. 

Admettons que votre serveur ait comme IP 192.168.0.25 dans votre réseau privé. Il faut alors que votre *box redirige toutes les requètes mail vers l'IP privée 192.168.0.25. 

Les ports à ouvrir sont&amp;nbsp;: 

*25&amp;nbsp;: pour que le serveur réceptionne les mails 
*110&amp;nbsp;: pour relever ses mails via POP 
*143&amp;nbsp;: pour relever ses mails via IMAP

Tous ces ports sont à ouvrir en '''TCP'''. 

Freebox&amp;nbsp;: [http://www.dslvalley.com/dossiers/freebox/freebox-nat.php http://www.dslvalley.com/dossiers/freebox/freebox-nat.php] 

NeufBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php] (fin de page) 

LiveBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/orange/livebox-emule.php http://www.dslvalley.com/dossiers/orange/livebox-emule.php] (fin de page)

= Installation de postfix  =

Votre DNS est correctement configuré&amp;nbsp;? Les ports sont ouverts&amp;nbsp;? Bien. Vous avez fait le plus dur. 

Vérifiez le nom de votre machine&amp;nbsp;: 

 $ hostname

Cette commande doit vous retourner '''smtp.monDomaine.com'''. Si ce n'est pas le cas, éditez le fichier '''/etc/hosts''' et vérifiez que vous avez une ligne comme suit&amp;nbsp;: 

 127.0.0.1 smtp.monDomaine.com smtp

Puis&amp;nbsp;: 

 &lt;nowiki&gt;# hostname smtp.monDomaine.com&lt;/nowiki&gt;

Normalement, le hostname est maintenant OK. 

Il est important que le '''hostname''' de votre machine soit le même que celui retourné par la commande '''host -t MX monDomaine.com''', sinon Postfix va vous emmerder. 

Installons postfix&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install postfix&lt;/nowiki&gt;

Choisissez la configuration '''Internet Site'''. Indiquez ensuite le nom de votre machine&amp;nbsp;: '''smtp.monDomaine.com''' (correspond au ''hostname'') 

Au cas où vous voudriez recommencer&amp;nbsp;: 

 &lt;nowiki&gt;# dpkg-reconfigure postfix&lt;/nowiki&gt;

= Configuration  =

Le fichier de configuration de postfix est '''/etc/postfix/main.cf'''. Il est par défaut très bien sécurisé. 

Nous allons dans un premier temps y ajouter cette ligne&amp;nbsp;: 

 home_mailbox = Maildir/

Cette ligne dit à postfix que les mails des utilisateurs doivent aller dans un répertoire nommé Maildir. 

Commentez (ajoutez un #) la ligne où se trouve '''mailbox_command''' pour que procmail ne soit pas utilisé (en tout cas pas pour le moment): 

 &lt;nowiki&gt;#mailbox_command = procmail -a &quot;$EXTENSION&quot;&lt;/nowiki&gt;

Pour que la modification soit prise en compte, redémarrez postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

= Création d'un nouveau mail  =

Bien. Vous avez votre domaine, votre serveur mail tourne. Créer une adresse mail est très simple. Il suffit d'ajouter un utilisateur&amp;nbsp;!! 

Vous voulez créer une adresse kevin@monDomaine.com&amp;nbsp;? Ajoutez l'utilisateur kevin sur votre machine&amp;nbsp;: 

 &lt;nowiki&gt;# adduser kevin&lt;/nowiki&gt;

Répondez aux questions, choisissez un mot de passe à kevin et c'est tout. 

= Tester l'adresse en local  =

Nous allons envoyer un mail à Kevin, vérifions que le paquet '''mailx''' est installé&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install mailx&lt;/nowiki&gt;

On envoie le mail&amp;nbsp;: 

 &lt;nowiki&gt;# echo &quot;Le contenu du mail&quot; | mail -s &quot;ceci est le sujet&quot; kevin@monDomaine.com&lt;/nowiki&gt;

Le mail sera automatiquement déposé dans le répertoire '''Maildir''' situé dans le home de kevin. S'il n'existe pas, le dossier '''Maildir''' sera automatiquement créé. 

 &lt;nowiki&gt;# ls /home/kevin&lt;/nowiki&gt;
 Maildir

N'hésitez pas à consulter les logs pour voir tout ce qui se passe sur votre serveur mail&amp;nbsp;: 

 &lt;nowiki&gt;# cat /var/log/mail.log&lt;/nowiki&gt;

= Kevin veut lire ses mails&amp;nbsp;!!  =

Envoyer des mails, c'est bien mais pouvoir les lire, c'est mieux&amp;nbsp;!! Pour que Kevin puisse lire ses mails dans un client comme '''Mozilla Thunderbird''', c'est tout simple&amp;nbsp;: 

Kevin veut réceptionner ces mails via IMAP&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-imapd&lt;/nowiki&gt;

Il préfère POP3&amp;nbsp;? Pas de problèmes&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-pop3d&lt;/nowiki&gt;

C'est tout, vous pouvez maintenant utiliser votre client mail favori pour réceptionner vos mails. 

Serveur&amp;nbsp;: '''smtp.monDomaine.com''' 

Login&amp;nbsp;: '''kevin''' 

Password&amp;nbsp;: '''le password défini lors de la création de l'utilisateur kevin''' 

= Kevin veut envoyer des mails&amp;nbsp;!!  =

Kevin est content, il peut lire ses mails. Seulement, il aimerait répondre à ses amis mais il ne peut pas. 

== Utiliser le SMTP de son FAI  ==

Postfix possède son propre service SMTP, mais ce dernier sera généralement bloqué. Pour limiter les envois de SPAMS, les FAI bloquent généralement l'envoi de mails. 

Pour que votre serveur mail puisse envoyer des mails, il faut lui dire d'utiliser le SMTP de votre FAI. C'est le paramètre '''relayhost''' du fichier de configuration '''/etc/postfix/main.cf''' qu'il faut modifier&amp;nbsp;: 

 relayhost = smtp.votreFAI.com

Principaux SMTP français&amp;nbsp;: 

 Orange&amp;nbsp;: smtp.orange.fr
 Free&amp;nbsp;: smtp.free.fr
 Neuf&amp;nbsp;: smtp.neuf.fr

== Utiliser le SMTP de Postfix  ==

Cependant, certains FAI (comme Free) permettent de lever ce blocage via une option dans leur panel de gestion. 

Dans ce cas, plus besoin du '''relayhost'''. Vos mails ne passeront plus par votre FAI, c'est VOTRE serveur qui enverra directement les mails. 

Le problème est que les mails que vous enverrez vers les boîtes '''Yahoo''' seront classées en tant que SPAM. '''AOL''' ne voudra pas de vos mails (ce sera explicitement marqué dans les logs). Quant à '''Hotmail''', les logs vous diront que les mails ont bien été reçus, mais vos correspondants ne les recevront jamais. '''Gmail''' ne pose quant à lui aucun souci. 

Vous voulez utiliser le plus possible votre propre SMTP mais vous voulez quand même pouvoir envoyer des mails vers vos potes restés chez Hotmail&amp;nbsp;? 

Créez un fichier '''/etc/postfix/transport''' avec ce contenu&amp;nbsp;: 

 hotmail.fr    smtp:smtp.free.fr
 hotmail.com   smtp:smtp.free.fr
 yahoo.fr      smtp:smtp.free.fr
 yahoo.com     smtp:smtp.free.fr

Ce fichier dit à postfix que pour les domaines hotmail.fr, hotmail.com, yahoo, etc., il utilisera le SMTP de free. Pour tous les autres domaine, il utilisera le smtp local. A vous d'adapter ce fichier en fonction des domaines qui ne veulent pas de vous. 

Bien sûr, si vous n'êtes pas abonné Free, vous ne pourrez pas utiliser le SMTP de Free. 

Pour que Postfix prenne en compte ce fichier, exécutez cette commande&amp;nbsp;: 

 &lt;nowiki&gt;# postmap /etc/postfix/transport&lt;/nowiki&gt;

Puis relancez Postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

A chaque fois que vous modifierez '''/etc/postfix/transport''', n'oubliez pas d'executer la commande précédente (postmap).

== Login... Passwd...  ==

Actuellement, postfix n'accepte d'envoyer les mails que s'ils sont envoyés depuis le serveur mail. Vous avez sûrement l'habitude d'envoyer les mails depuis un autre PC. Généralement, le SMTP demande un login, un password et envoie vos mails. 

C'est ce que nous allons régler maintenant. 

Problème&amp;nbsp;: Postfix seul ne fournit pas de service d'identification. Il doit utiliser un serveur SASL externe. 

Solution&amp;nbsp;: Dovecot, que nous avons précédemment installé pour la réception de mails (IMAP-POP3) peut faire office de serveur SASL. 

Pour activer ce service, dans le fichier de configuration '''/etc/dovecot/dovecot.conf''', ajoutez (ou décommentez) ceci dans la section auth default { }&amp;nbsp;: 

 auth default {
 …
 socket listen {
   client {
     path  &lt;nowiki&gt;= /var/spool/postfix/private/auth&lt;/nowiki&gt;
    group = postfix
    mode  &lt;nowiki&gt;= 0660&lt;/nowiki&gt;
  }
 }
 …

Il s'agit pour Dovecot de créer un socket Unix, sur lequel il écoutera les demandes d'identification provenant de Postfix. Comme le service SMTP de Postfix est chrooté (emprisonné) dans le répertoire '''/var/spool/postfix/''', il faut placer ce socket sous ce répertoire, ce qui se fera automatiquement en relançant Dovecot avec la commande :             

 &lt;nowiki&gt;# /etc/init.d/dovecot restart&lt;/nowiki&gt;

Dovecot accepte l'identification mais Postfix ne le sait pas&amp;nbsp;!! Il faut lui dire (ajoutez dans '''/etc/postfix/main.cf''')&amp;nbsp;: 

 &lt;nowiki&gt;# Activer l'identification SASL&lt;/nowiki&gt;
 smtpd_sasl_auth_enable = yes

 &lt;nowiki&gt;# Utiliser le service d'identification de Dovecot&lt;/nowiki&gt;
 smtpd_sasl_type = dovecot
 smtpd_sasl_path = private/auth

 &lt;nowiki&gt;# Noter dans les en-tête des messages l'identifiant de l'utilisateur.&lt;/nowiki&gt;
 smtpd_sasl_authenticated_header = yes

Profitons-en pour peaufiner le fichier de configuration de postfix '''/etc/postfix/main.cf'''&amp;nbsp;: 

 &lt;nowiki&gt;# Règles pour accepter ou refuser une connexion :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on attend une seconde (pour piéger les zombies) ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on interdit la parallélisation là où il n'est pas sensé y en avoir.&lt;/nowiki&gt;
 smtpd_client_restrictions =
    permit_mynetworks, permit_sasl_authenticated,
    sleep 1, reject_unauth_pipelining

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le nom&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'hôte de l'expéditeur (par sa commande HELO ou EHLO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on refuse les noms d'hôte invalides.&lt;/nowiki&gt;
 smtpd_helo_restrictions = reject_invalid_helo_hostname

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît l'adresse&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'expéditeur :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un expéditeur inexistant de notre domaine, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si le domaine de l'expéditeur n'a pas d'IP ou de MX, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un client sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de l'expéditeur n'est pas sous forme canonique, on le refuse.&lt;/nowiki&gt;
 smtpd_sender_restrictions =
    reject_unlisted_sender, reject_unknown_sender_domain,
    permit_mynetworks, permit_sasl_authenticated,
    reject_non_fqdn_sender

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le&lt;/nowiki&gt;
 &lt;nowiki&gt;# destinataire (par la commande RCPT TO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un expéditeur forgé chez nous, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un domaine forgé, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un hôte sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de destination n'est pas sous forme canonique, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - finalement, s'il n'est pas destiné à un domaine que l'on gère ou pour&lt;/nowiki&gt;
 &lt;nowiki&gt;# &lt;/nowiki&gt;  lequel on relaie, on le refuse.
 smtpd_recipient_restrictions =
     reject_unlisted_recipient, reject_unknown_recipient_domain,
     permit_mynetworks, permit_sasl_authenticated,
     reject_non_fqdn_recipient,
     reject_unauth_destination

Allez, on relance postfix pour qu'il prenne en compte tout ça&amp;nbsp;: 

 /etc/init.d/postfix restart

== Chiffrement STARTTLS ==

Nous pouvons rajouter le support de STARTTLS, ce qui permet à un moment donné de chiffrer la connexion avec Postfix.
L'avantage est que l'on peut alors chiffrer l'authentification SASL pour que le mot de passe ne passe pas en clair.
On peut aussi chiffrer le contenu des messages, mais pour celà il est plus intéressant de s'orienter vers GPG ou S/MIME, afin de s'assurer que le message reste chiffré d'un bout à l'autre entre l'expéditeur et le destinataire.

Pour pouvoir utiliser STARTTLS, il nous faut un [[openssl|certificat SSL]]. Une fois le certificat obtenu, il suffit de rajouter dans main.cf :

 smtpd_tls_cert_file = /chemin/vers/certificat
 smtpd_tls_key_file = /chemin/vers/cle
 smtpd_use_tls = yes

Ceci suffit pour activer STARTTLS. Nous pouvons choisir le niveau de verbosité des logs :

 smtpd_tls_loglevel = 0

*0 : Désactive l'enregistrement de l'activité TLS.
*1 : Enregistre les informations de négociation TLS et des certificats.
*2 : Enregistre les niveaux durant la négociation TLS.
*3 : Retranscrit en hexadecimal et ASCII le processus de négotiation TLS
*4 : Retranscrit en hexadecimal et ASCII toute la transmission après STARTTLS

Enfin, il est possible d'interdire l'authentification SASL en clair avec :

 smtpd_tls_auth_only = yes


= Ressources =
*(en) http://www.postfix.org/documentation.html
*(fr) http://x.guimard.free.fr/postfix/
La traduction française n'est pas à jour, mais reste largement suffisante dans la plupart des cas.

[[Catégorie:Serveurs]]</text>
      <sha1>7jfeg9qv9ojlanzwek3yu6o213x9ex8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2888</id>
      <parentid>2887</parentid>
      <timestamp>2011-04-13T07:51:55Z</timestamp>
      <contributor>
        <username>Debianhadic</username>
        <id>11</id>
      </contributor>
      <minor/>
      <comment>a renommé [[Configuration dun serveur mail avec Postfix]] en [[Configuration d'un serveur mail avec Postfix]] : et l'apostrophe nom de non !</comment>
      <text xml:space="preserve" bytes="19232">= Configuration d\'un serveur mail avec postfix  =

Vous ne voulez plus confier vos mails à Gmail, Yahoo ou Hotmail ? 

Vous aimeriez héberger vos mails chez vous mais vous pensez que c'est trop dur, trop compliqué ? 

Vous pensez qu'il faut être ingénieur pour monter un serveur mail ? 

Que nenni !! Nous allons voir dans ce tuto la mise en place d'un serveur mail avec Postfix dans le cadre d'une utilisation personnelle. 

Il ne s'agit pas ici de concurrencer Gmail ou Yahoo mais bien d'avoir notre petite boîte mail bien à nous. Faite avec amour. Et qui marche !! 

Ici, pas de gestion par base SQL ou annuaire LDAP, je vais tâcher de faire le plus simple possible. 

C'est parti !! 

= Une adresse mail, c'est quoi ?  =

== kevin@wanadoo.fr  ==

Une adresse mail, c'est un peu comme une adresse postale. Elle se divise en 2 parties&amp;nbsp;: 

*un domaine&amp;nbsp;: '''wanadoo.fr''' 
*un utilisateur&amp;nbsp;: '''kevin'''

Dans mon exemple, lorsque l'on écrit à Kevin via l'adresse '''kevin@wanadoo.fr''', cela signifie que l'on écrit à l'utilisateur '''kevin''' du domaine '''wanadoo.fr'''. 

Plus précisément, le mail arrive sur la '''machine''' sur laquelle se trouve le '''serveur mail''' de wanadoo.fr, pour être ensuite remis dans la '''boîte mail''' de l'utilisateur kevin. 

== Identifier le serveur mail de wanadoo.fr  ==

Wanadoo.fr, c'est le domaine. Le service mail se trouve quant à lui sur une machine bien precise. Pour l'identifier, une commande bien pratique&amp;nbsp;: 

 $ host -t MX wanadoo.fr
 wanadoo.fr mail is handled by 10 smtp.wanadoo.fr.

'''smtp''' est un ''sous-domaine'' de '''wanadoo.fr''', et la machine sur laquelle se trouve le serveur mail se nomme justement '''smtp.wanadoo.fr'''… 

 $ ping smtp.wanadoo.fr
 PING smtp.wanadoo.fr (80.12.242.142) 56(84) bytes of data.

… et son adresse IP est '''80.12.242.142'''. 

Dans la réalité, l'architecture mail de Wanadoo (Orange maintenant…) est je pense un peu plus compliquée que ça mais ça donne une bonne image de ce que nous allons reproduire pour notre serveur mail. 

= Prérequis  =

Pour avoir son serveur mail, il faut donc&amp;nbsp;: 

*un nom de domaine 
*une IP fixe 
*un PC allumé si possible 24h/24

Pourquoi une IP fixe&amp;nbsp;? Les mails doivent pouvoir toujours trouver le serveur mail, c'est pourquoi l'IP doit être fixe. 

L'association nom de domaine ⇔ adresse IP se règle au niveau du serveur DNS. C'est celui-ci que nous allons régler en premier. 

== Configurer le serveur DNS  ==

Cette partie se révèle souvent être une prise de tête pour les apprentis auto-hébergés. 

On doit spécifier dans le serveur DNS sur quelle IP on peut joindre le serveur mail. 

La plupart des registrars (les marchands de noms de domaine) fournissent une interface simplifiée pour le serveur DNS. 

Un exemple de configuration pour un domaine acheté chez Gandi.net

=== Le champ A  ===

Il faut tout d'abord configurer le champ '''A''' qui fait le lien entre nom de domaine et l'adresse IP du serveur&amp;nbsp;: 

 @       IN    A    12.34.56.78 
 smtp    IN    A    12.34.56.78

'''@'''&amp;nbsp;: signifie que '''monDomaine.com''' est lié à l'IP 12.34.56.78 

'''smtp'''&amp;nbsp;: signifie que le sous-domaine '''smtp.monDomaine.com''' est lui aussi lié à l'IP 12.34.56.78 

Vous pouvez indiquer des adresses IP différentes si vous possédez plusieurs serveurs et plusieurs IP. 

=== Le champ MX  ===

Une fois que le champ '''A''' est complété, il faut pour définir le serveur mail s'occuper du champ '''MX''' ('''M'''ail e'''X'''change). 

Nous allons convenir que le serveur mail correspond au serveur '''smtp.monDomaine.com'''. Son adresse IP ayant déjà été définie par le champ '''A''', le champ '''MX''' s'écrit sous cette forme&amp;nbsp;: 

 monDomaine.com.    IN    MX    10    smtp

Ce qui signifie que '''smtp''' du champ '''A''' sera le serveur '''MX''' de '''monDomaine.com'''. 

Vous suivez toujours&amp;nbsp;?? 

Lorsque vous enverrez des mails sur le domaine '''monDomaine.com''', ils seront automatiquement acheminés vers le serveur '''smtp.monDomaine.com'''. 

'''''Important&amp;nbsp;:''''' 

*Un champ '''MX''' se définit toujours sur un champ '''A''', pas sur un '''CNAME''' (non abordé ici) 
*Ne pas oublier le point après monDomaine.com.

=== Un exemple de configuration de DNS chez gandi.net ===

[[Fichier:Gandi.jpeg]]

Ce qui donne en mode &quot;expert&quot;

 smtp 300 IN A 41.188.26.122 
 @ 28800 IN MX 10 smtp 
 www 10800 IN A 41.188.26.122

=== Configuration chez OVH ===

Rendez-vous sur votre &quot;manager&quot; puis cliquez sur &quot;Domaines &amp; DNS&quot;.
Dans la rubrique &quot;Zone DNS&quot; du domaine concerné, effacez les champs MX existants puis cliquez sur 'Type A&quot; et ajoutez un champ comme ci-dessous :

 sous-domaine: mail2.votre_domaine.com

Sélectionner une IP : adresse_IP_du_serveur_de_mail

Cliquez sur &quot;Validez&quot; pour confirmer l'operation. Ensuite, choisissez 'Type MX&quot; et ajoutez un champ comme ci-dessous :

 Sous-domaine : votre_domaine.com

 Destination: mail2.votre_domaine.com

Cliquez sur &quot;Validez&quot; pour confirmer l'operation. Si la création du champ MX ne passe pas, recommencez en cochant la case &quot;forcer l'opération&quot;. Les changements sont pris en compte le lendemain matin et vos mails seront redirigés vers votre serveur mail.

[http://guides.ovh.com/VotreServeurMail Source]

== Vérifications  ==

Avant même d'installer et configurer son serveur, il faut faire quelques vérifications (après avoir installé bind9-host). 

 $ host -t MX monDomaine.com

Cette commande doit retourner une ligne de ce genre&amp;nbsp;: 

 monDomaine.com mail is handled by 10 smtp.monDomaine.com

Bien sûr, ''smtp.monDomaine.com'' doit être associé à votre IP fixe (ici '''12.34.56.78''')&amp;nbsp;: 

 $ ping smtp.monDomaine.com
 PING smtp.monDomaine.com (12.34.56.78) 56(84) bytes of data.

Si ces 2 vérifications ne fonctionnent pas, '''ce n'est pas la peine d'aller plus loin''', votre serveur DNS est mal configuré.

=== Vérification si vous disposez d'un DNS local ===

Au cas ou vous disposeriez d'un DNS sur votre réseau local, pensez à vérifier sur un DNS externe...

 $ host -t MX monDomaine.com DNS_Externe

C'est le seul moyen d'être certain que &quot;le monde extérieur&quot; saura ou vous envoyer vos mails...

= Ouverture des ports  =

Si votre serveur se trouve derrière une *box, il ne pourra pas communiquer avec le monde extérieur. Il nous faut '''ouvrir des ports'''. 

Votre *box possède une '''IP fixe publique''', c'est l'IP que vous avez normalement renseignée dans votre serveur DNS. 

Derrière votre *box, il y a votre serveur mail qui lui possède également une adresse IP, '''privée'''. Les adresses privées sont en général 192.168.0.xxx ou 192.168.1.xxx. 

Admettons que votre serveur ait comme IP 192.168.0.25 dans votre réseau privé. Il faut alors que votre *box redirige toutes les requètes mail vers l'IP privée 192.168.0.25. 

Les ports à ouvrir sont&amp;nbsp;: 

*25&amp;nbsp;: pour que le serveur réceptionne les mails 
*110&amp;nbsp;: pour relever ses mails via POP 
*143&amp;nbsp;: pour relever ses mails via IMAP

Tous ces ports sont à ouvrir en '''TCP'''. 

Freebox&amp;nbsp;: [http://www.dslvalley.com/dossiers/freebox/freebox-nat.php http://www.dslvalley.com/dossiers/freebox/freebox-nat.php] 

NeufBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php] (fin de page) 

LiveBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/orange/livebox-emule.php http://www.dslvalley.com/dossiers/orange/livebox-emule.php] (fin de page)

= Installation de postfix  =

Votre DNS est correctement configuré&amp;nbsp;? Les ports sont ouverts&amp;nbsp;? Bien. Vous avez fait le plus dur. 

Vérifiez le nom de votre machine&amp;nbsp;: 

 $ hostname

Cette commande doit vous retourner '''smtp.monDomaine.com'''. Si ce n'est pas le cas, éditez le fichier '''/etc/hosts''' et vérifiez que vous avez une ligne comme suit&amp;nbsp;: 

 127.0.0.1 smtp.monDomaine.com smtp

Puis&amp;nbsp;: 

 &lt;nowiki&gt;# hostname smtp.monDomaine.com&lt;/nowiki&gt;

Normalement, le hostname est maintenant OK. 

Il est important que le '''hostname''' de votre machine soit le même que celui retourné par la commande '''host -t MX monDomaine.com''', sinon Postfix va vous emmerder. 

Installons postfix&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install postfix&lt;/nowiki&gt;

Choisissez la configuration '''Internet Site'''. Indiquez ensuite le nom de votre machine&amp;nbsp;: '''smtp.monDomaine.com''' (correspond au ''hostname'') 

Au cas où vous voudriez recommencer&amp;nbsp;: 

 &lt;nowiki&gt;# dpkg-reconfigure postfix&lt;/nowiki&gt;

= Configuration  =

Le fichier de configuration de postfix est '''/etc/postfix/main.cf'''. Il est par défaut très bien sécurisé. 

Nous allons dans un premier temps y ajouter cette ligne&amp;nbsp;: 

 home_mailbox = Maildir/

Cette ligne dit à postfix que les mails des utilisateurs doivent aller dans un répertoire nommé Maildir. 

Commentez (ajoutez un #) la ligne où se trouve '''mailbox_command''' pour que procmail ne soit pas utilisé (en tout cas pas pour le moment): 

 &lt;nowiki&gt;#mailbox_command = procmail -a &quot;$EXTENSION&quot;&lt;/nowiki&gt;

Pour que la modification soit prise en compte, redémarrez postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

= Création d'un nouveau mail  =

Bien. Vous avez votre domaine, votre serveur mail tourne. Créer une adresse mail est très simple. Il suffit d'ajouter un utilisateur&amp;nbsp;!! 

Vous voulez créer une adresse kevin@monDomaine.com&amp;nbsp;? Ajoutez l'utilisateur kevin sur votre machine&amp;nbsp;: 

 &lt;nowiki&gt;# adduser kevin&lt;/nowiki&gt;

Répondez aux questions, choisissez un mot de passe à kevin et c'est tout. 

= Tester l'adresse en local  =

Nous allons envoyer un mail à Kevin, vérifions que le paquet '''mailx''' est installé&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install mailx&lt;/nowiki&gt;

On envoie le mail&amp;nbsp;: 

 &lt;nowiki&gt;# echo &quot;Le contenu du mail&quot; | mail -s &quot;ceci est le sujet&quot; kevin@monDomaine.com&lt;/nowiki&gt;

Le mail sera automatiquement déposé dans le répertoire '''Maildir''' situé dans le home de kevin. S'il n'existe pas, le dossier '''Maildir''' sera automatiquement créé. 

 &lt;nowiki&gt;# ls /home/kevin&lt;/nowiki&gt;
 Maildir

N'hésitez pas à consulter les logs pour voir tout ce qui se passe sur votre serveur mail&amp;nbsp;: 

 &lt;nowiki&gt;# cat /var/log/mail.log&lt;/nowiki&gt;

= Kevin veut lire ses mails&amp;nbsp;!!  =

Envoyer des mails, c'est bien mais pouvoir les lire, c'est mieux&amp;nbsp;!! Pour que Kevin puisse lire ses mails dans un client comme '''Mozilla Thunderbird''', c'est tout simple&amp;nbsp;: 

Kevin veut réceptionner ces mails via IMAP&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-imapd&lt;/nowiki&gt;

Il préfère POP3&amp;nbsp;? Pas de problèmes&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-pop3d&lt;/nowiki&gt;

C'est tout, vous pouvez maintenant utiliser votre client mail favori pour réceptionner vos mails. 

Serveur&amp;nbsp;: '''smtp.monDomaine.com''' 

Login&amp;nbsp;: '''kevin''' 

Password&amp;nbsp;: '''le password défini lors de la création de l'utilisateur kevin''' 

= Kevin veut envoyer des mails&amp;nbsp;!!  =

Kevin est content, il peut lire ses mails. Seulement, il aimerait répondre à ses amis mais il ne peut pas. 

== Utiliser le SMTP de son FAI  ==

Postfix possède son propre service SMTP, mais ce dernier sera généralement bloqué. Pour limiter les envois de SPAMS, les FAI bloquent généralement l'envoi de mails. 

Pour que votre serveur mail puisse envoyer des mails, il faut lui dire d'utiliser le SMTP de votre FAI. C'est le paramètre '''relayhost''' du fichier de configuration '''/etc/postfix/main.cf''' qu'il faut modifier&amp;nbsp;: 

 relayhost = smtp.votreFAI.com

Principaux SMTP français&amp;nbsp;: 

 Orange&amp;nbsp;: smtp.orange.fr
 Free&amp;nbsp;: smtp.free.fr
 Neuf&amp;nbsp;: smtp.neuf.fr

== Utiliser le SMTP de Postfix  ==

Cependant, certains FAI (comme Free) permettent de lever ce blocage via une option dans leur panel de gestion. 

Dans ce cas, plus besoin du '''relayhost'''. Vos mails ne passeront plus par votre FAI, c'est VOTRE serveur qui enverra directement les mails. 

Le problème est que les mails que vous enverrez vers les boîtes '''Yahoo''' seront classées en tant que SPAM. '''AOL''' ne voudra pas de vos mails (ce sera explicitement marqué dans les logs). Quant à '''Hotmail''', les logs vous diront que les mails ont bien été reçus, mais vos correspondants ne les recevront jamais. '''Gmail''' ne pose quant à lui aucun souci. 

Vous voulez utiliser le plus possible votre propre SMTP mais vous voulez quand même pouvoir envoyer des mails vers vos potes restés chez Hotmail&amp;nbsp;? 

Créez un fichier '''/etc/postfix/transport''' avec ce contenu&amp;nbsp;: 

 hotmail.fr    smtp:smtp.free.fr
 hotmail.com   smtp:smtp.free.fr
 yahoo.fr      smtp:smtp.free.fr
 yahoo.com     smtp:smtp.free.fr

Ce fichier dit à postfix que pour les domaines hotmail.fr, hotmail.com, yahoo, etc., il utilisera le SMTP de free. Pour tous les autres domaine, il utilisera le smtp local. A vous d'adapter ce fichier en fonction des domaines qui ne veulent pas de vous. 

Bien sûr, si vous n'êtes pas abonné Free, vous ne pourrez pas utiliser le SMTP de Free. 

Pour que Postfix prenne en compte ce fichier, exécutez cette commande&amp;nbsp;: 

 &lt;nowiki&gt;# postmap /etc/postfix/transport&lt;/nowiki&gt;

Puis relancez Postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

A chaque fois que vous modifierez '''/etc/postfix/transport''', n'oubliez pas d'executer la commande précédente (postmap).

== Login... Passwd...  ==

Actuellement, postfix n'accepte d'envoyer les mails que s'ils sont envoyés depuis le serveur mail. Vous avez sûrement l'habitude d'envoyer les mails depuis un autre PC. Généralement, le SMTP demande un login, un password et envoie vos mails. 

C'est ce que nous allons régler maintenant. 

Problème&amp;nbsp;: Postfix seul ne fournit pas de service d'identification. Il doit utiliser un serveur SASL externe. 

Solution&amp;nbsp;: Dovecot, que nous avons précédemment installé pour la réception de mails (IMAP-POP3) peut faire office de serveur SASL. 

Pour activer ce service, dans le fichier de configuration '''/etc/dovecot/dovecot.conf''', ajoutez (ou décommentez) ceci dans la section auth default { }&amp;nbsp;: 

 auth default {
 …
 socket listen {
   client {
     path  &lt;nowiki&gt;= /var/spool/postfix/private/auth&lt;/nowiki&gt;
    group = postfix
    mode  &lt;nowiki&gt;= 0660&lt;/nowiki&gt;
  }
 }
 …

Il s'agit pour Dovecot de créer un socket Unix, sur lequel il écoutera les demandes d'identification provenant de Postfix. Comme le service SMTP de Postfix est chrooté (emprisonné) dans le répertoire '''/var/spool/postfix/''', il faut placer ce socket sous ce répertoire, ce qui se fera automatiquement en relançant Dovecot avec la commande :             

 &lt;nowiki&gt;# /etc/init.d/dovecot restart&lt;/nowiki&gt;

Dovecot accepte l'identification mais Postfix ne le sait pas&amp;nbsp;!! Il faut lui dire (ajoutez dans '''/etc/postfix/main.cf''')&amp;nbsp;: 

 &lt;nowiki&gt;# Activer l'identification SASL&lt;/nowiki&gt;
 smtpd_sasl_auth_enable = yes

 &lt;nowiki&gt;# Utiliser le service d'identification de Dovecot&lt;/nowiki&gt;
 smtpd_sasl_type = dovecot
 smtpd_sasl_path = private/auth

 &lt;nowiki&gt;# Noter dans les en-tête des messages l'identifiant de l'utilisateur.&lt;/nowiki&gt;
 smtpd_sasl_authenticated_header = yes

Profitons-en pour peaufiner le fichier de configuration de postfix '''/etc/postfix/main.cf'''&amp;nbsp;: 

 &lt;nowiki&gt;# Règles pour accepter ou refuser une connexion :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on attend une seconde (pour piéger les zombies) ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on interdit la parallélisation là où il n'est pas sensé y en avoir.&lt;/nowiki&gt;
 smtpd_client_restrictions =
    permit_mynetworks, permit_sasl_authenticated,
    sleep 1, reject_unauth_pipelining

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le nom&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'hôte de l'expéditeur (par sa commande HELO ou EHLO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on refuse les noms d'hôte invalides.&lt;/nowiki&gt;
 smtpd_helo_restrictions = reject_invalid_helo_hostname

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît l'adresse&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'expéditeur :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un expéditeur inexistant de notre domaine, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si le domaine de l'expéditeur n'a pas d'IP ou de MX, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un client sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de l'expéditeur n'est pas sous forme canonique, on le refuse.&lt;/nowiki&gt;
 smtpd_sender_restrictions =
    reject_unlisted_sender, reject_unknown_sender_domain,
    permit_mynetworks, permit_sasl_authenticated,
    reject_non_fqdn_sender

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le&lt;/nowiki&gt;
 &lt;nowiki&gt;# destinataire (par la commande RCPT TO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un expéditeur forgé chez nous, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un domaine forgé, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un hôte sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de destination n'est pas sous forme canonique, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - finalement, s'il n'est pas destiné à un domaine que l'on gère ou pour&lt;/nowiki&gt;
 &lt;nowiki&gt;# &lt;/nowiki&gt;  lequel on relaie, on le refuse.
 smtpd_recipient_restrictions =
     reject_unlisted_recipient, reject_unknown_recipient_domain,
     permit_mynetworks, permit_sasl_authenticated,
     reject_non_fqdn_recipient,
     reject_unauth_destination

Allez, on relance postfix pour qu'il prenne en compte tout ça&amp;nbsp;: 

 /etc/init.d/postfix restart

== Chiffrement STARTTLS ==

Nous pouvons rajouter le support de STARTTLS, ce qui permet à un moment donné de chiffrer la connexion avec Postfix.
L'avantage est que l'on peut alors chiffrer l'authentification SASL pour que le mot de passe ne passe pas en clair.
On peut aussi chiffrer le contenu des messages, mais pour celà il est plus intéressant de s'orienter vers GPG ou S/MIME, afin de s'assurer que le message reste chiffré d'un bout à l'autre entre l'expéditeur et le destinataire.

Pour pouvoir utiliser STARTTLS, il nous faut un [[openssl|certificat SSL]]. Une fois le certificat obtenu, il suffit de rajouter dans main.cf :

 smtpd_tls_cert_file = /chemin/vers/certificat
 smtpd_tls_key_file = /chemin/vers/cle
 smtpd_use_tls = yes

Ceci suffit pour activer STARTTLS. Nous pouvons choisir le niveau de verbosité des logs :

 smtpd_tls_loglevel = 0

*0 : Désactive l'enregistrement de l'activité TLS.
*1 : Enregistre les informations de négociation TLS et des certificats.
*2 : Enregistre les niveaux durant la négociation TLS.
*3 : Retranscrit en hexadecimal et ASCII le processus de négotiation TLS
*4 : Retranscrit en hexadecimal et ASCII toute la transmission après STARTTLS

Enfin, il est possible d'interdire l'authentification SASL en clair avec :

 smtpd_tls_auth_only = yes


= Ressources =
*(en) http://www.postfix.org/documentation.html
*(fr) http://x.guimard.free.fr/postfix/
La traduction française n'est pas à jour, mais reste largement suffisante dans la plupart des cas.

[[Catégorie:Serveurs]]</text>
      <sha1>7jfeg9qv9ojlanzwek3yu6o213x9ex8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2892</id>
      <parentid>2888</parentid>
      <timestamp>2011-04-13T07:52:27Z</timestamp>
      <contributor>
        <username>Debianhadic</username>
        <id>11</id>
      </contributor>
      <comment>/* Configuration d\'un serveur mail avec postfix */</comment>
      <text xml:space="preserve" bytes="19230">= Configuration d'un serveur mail avec postfix  =

Vous ne voulez plus confier vos mails à Gmail, Yahoo ou Hotmail ? 

Vous aimeriez héberger vos mails chez vous mais vous pensez que c'est trop dur, trop compliqué ? 

Vous pensez qu'il faut être ingénieur pour monter un serveur mail ? 

Que nenni !! Nous allons voir dans ce tuto la mise en place d'un serveur mail avec Postfix dans le cadre d'une utilisation personnelle. 

Il ne s'agit pas ici de concurrencer Gmail ou Yahoo mais bien d'avoir notre petite boîte mail bien à nous. Faite avec amour. Et qui marche !! 

Ici, pas de gestion par base SQL ou annuaire LDAP, je vais tâcher de faire le plus simple possible. 

C'est parti !!

= Une adresse mail, c'est quoi ?  =

== kevin@wanadoo.fr  ==

Une adresse mail, c'est un peu comme une adresse postale. Elle se divise en 2 parties&amp;nbsp;: 

*un domaine&amp;nbsp;: '''wanadoo.fr''' 
*un utilisateur&amp;nbsp;: '''kevin'''

Dans mon exemple, lorsque l'on écrit à Kevin via l'adresse '''kevin@wanadoo.fr''', cela signifie que l'on écrit à l'utilisateur '''kevin''' du domaine '''wanadoo.fr'''. 

Plus précisément, le mail arrive sur la '''machine''' sur laquelle se trouve le '''serveur mail''' de wanadoo.fr, pour être ensuite remis dans la '''boîte mail''' de l'utilisateur kevin. 

== Identifier le serveur mail de wanadoo.fr  ==

Wanadoo.fr, c'est le domaine. Le service mail se trouve quant à lui sur une machine bien precise. Pour l'identifier, une commande bien pratique&amp;nbsp;: 

 $ host -t MX wanadoo.fr
 wanadoo.fr mail is handled by 10 smtp.wanadoo.fr.

'''smtp''' est un ''sous-domaine'' de '''wanadoo.fr''', et la machine sur laquelle se trouve le serveur mail se nomme justement '''smtp.wanadoo.fr'''… 

 $ ping smtp.wanadoo.fr
 PING smtp.wanadoo.fr (80.12.242.142) 56(84) bytes of data.

… et son adresse IP est '''80.12.242.142'''. 

Dans la réalité, l'architecture mail de Wanadoo (Orange maintenant…) est je pense un peu plus compliquée que ça mais ça donne une bonne image de ce que nous allons reproduire pour notre serveur mail. 

= Prérequis  =

Pour avoir son serveur mail, il faut donc&amp;nbsp;: 

*un nom de domaine 
*une IP fixe 
*un PC allumé si possible 24h/24

Pourquoi une IP fixe&amp;nbsp;? Les mails doivent pouvoir toujours trouver le serveur mail, c'est pourquoi l'IP doit être fixe. 

L'association nom de domaine ⇔ adresse IP se règle au niveau du serveur DNS. C'est celui-ci que nous allons régler en premier. 

== Configurer le serveur DNS  ==

Cette partie se révèle souvent être une prise de tête pour les apprentis auto-hébergés. 

On doit spécifier dans le serveur DNS sur quelle IP on peut joindre le serveur mail. 

La plupart des registrars (les marchands de noms de domaine) fournissent une interface simplifiée pour le serveur DNS. 

Un exemple de configuration pour un domaine acheté chez Gandi.net

=== Le champ A  ===

Il faut tout d'abord configurer le champ '''A''' qui fait le lien entre nom de domaine et l'adresse IP du serveur&amp;nbsp;: 

 @       IN    A    12.34.56.78 
 smtp    IN    A    12.34.56.78

'''@'''&amp;nbsp;: signifie que '''monDomaine.com''' est lié à l'IP 12.34.56.78 

'''smtp'''&amp;nbsp;: signifie que le sous-domaine '''smtp.monDomaine.com''' est lui aussi lié à l'IP 12.34.56.78 

Vous pouvez indiquer des adresses IP différentes si vous possédez plusieurs serveurs et plusieurs IP. 

=== Le champ MX  ===

Une fois que le champ '''A''' est complété, il faut pour définir le serveur mail s'occuper du champ '''MX''' ('''M'''ail e'''X'''change). 

Nous allons convenir que le serveur mail correspond au serveur '''smtp.monDomaine.com'''. Son adresse IP ayant déjà été définie par le champ '''A''', le champ '''MX''' s'écrit sous cette forme&amp;nbsp;: 

 monDomaine.com.    IN    MX    10    smtp

Ce qui signifie que '''smtp''' du champ '''A''' sera le serveur '''MX''' de '''monDomaine.com'''. 

Vous suivez toujours&amp;nbsp;?? 

Lorsque vous enverrez des mails sur le domaine '''monDomaine.com''', ils seront automatiquement acheminés vers le serveur '''smtp.monDomaine.com'''. 

'''''Important&amp;nbsp;:''''' 

*Un champ '''MX''' se définit toujours sur un champ '''A''', pas sur un '''CNAME''' (non abordé ici) 
*Ne pas oublier le point après monDomaine.com.

=== Un exemple de configuration de DNS chez gandi.net ===

[[Fichier:Gandi.jpeg]]

Ce qui donne en mode &quot;expert&quot;

 smtp 300 IN A 41.188.26.122 
 @ 28800 IN MX 10 smtp 
 www 10800 IN A 41.188.26.122

=== Configuration chez OVH ===

Rendez-vous sur votre &quot;manager&quot; puis cliquez sur &quot;Domaines &amp; DNS&quot;.
Dans la rubrique &quot;Zone DNS&quot; du domaine concerné, effacez les champs MX existants puis cliquez sur 'Type A&quot; et ajoutez un champ comme ci-dessous :

 sous-domaine: mail2.votre_domaine.com

Sélectionner une IP : adresse_IP_du_serveur_de_mail

Cliquez sur &quot;Validez&quot; pour confirmer l'operation. Ensuite, choisissez 'Type MX&quot; et ajoutez un champ comme ci-dessous :

 Sous-domaine : votre_domaine.com

 Destination: mail2.votre_domaine.com

Cliquez sur &quot;Validez&quot; pour confirmer l'operation. Si la création du champ MX ne passe pas, recommencez en cochant la case &quot;forcer l'opération&quot;. Les changements sont pris en compte le lendemain matin et vos mails seront redirigés vers votre serveur mail.

[http://guides.ovh.com/VotreServeurMail Source]

== Vérifications  ==

Avant même d'installer et configurer son serveur, il faut faire quelques vérifications (après avoir installé bind9-host). 

 $ host -t MX monDomaine.com

Cette commande doit retourner une ligne de ce genre&amp;nbsp;: 

 monDomaine.com mail is handled by 10 smtp.monDomaine.com

Bien sûr, ''smtp.monDomaine.com'' doit être associé à votre IP fixe (ici '''12.34.56.78''')&amp;nbsp;: 

 $ ping smtp.monDomaine.com
 PING smtp.monDomaine.com (12.34.56.78) 56(84) bytes of data.

Si ces 2 vérifications ne fonctionnent pas, '''ce n'est pas la peine d'aller plus loin''', votre serveur DNS est mal configuré.

=== Vérification si vous disposez d'un DNS local ===

Au cas ou vous disposeriez d'un DNS sur votre réseau local, pensez à vérifier sur un DNS externe...

 $ host -t MX monDomaine.com DNS_Externe

C'est le seul moyen d'être certain que &quot;le monde extérieur&quot; saura ou vous envoyer vos mails...

= Ouverture des ports  =

Si votre serveur se trouve derrière une *box, il ne pourra pas communiquer avec le monde extérieur. Il nous faut '''ouvrir des ports'''. 

Votre *box possède une '''IP fixe publique''', c'est l'IP que vous avez normalement renseignée dans votre serveur DNS. 

Derrière votre *box, il y a votre serveur mail qui lui possède également une adresse IP, '''privée'''. Les adresses privées sont en général 192.168.0.xxx ou 192.168.1.xxx. 

Admettons que votre serveur ait comme IP 192.168.0.25 dans votre réseau privé. Il faut alors que votre *box redirige toutes les requètes mail vers l'IP privée 192.168.0.25. 

Les ports à ouvrir sont&amp;nbsp;: 

*25&amp;nbsp;: pour que le serveur réceptionne les mails 
*110&amp;nbsp;: pour relever ses mails via POP 
*143&amp;nbsp;: pour relever ses mails via IMAP

Tous ces ports sont à ouvrir en '''TCP'''. 

Freebox&amp;nbsp;: [http://www.dslvalley.com/dossiers/freebox/freebox-nat.php http://www.dslvalley.com/dossiers/freebox/freebox-nat.php] 

NeufBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php] (fin de page) 

LiveBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/orange/livebox-emule.php http://www.dslvalley.com/dossiers/orange/livebox-emule.php] (fin de page)

= Installation de postfix  =

Votre DNS est correctement configuré&amp;nbsp;? Les ports sont ouverts&amp;nbsp;? Bien. Vous avez fait le plus dur. 

Vérifiez le nom de votre machine&amp;nbsp;: 

 $ hostname

Cette commande doit vous retourner '''smtp.monDomaine.com'''. Si ce n'est pas le cas, éditez le fichier '''/etc/hosts''' et vérifiez que vous avez une ligne comme suit&amp;nbsp;: 

 127.0.0.1 smtp.monDomaine.com smtp

Puis&amp;nbsp;: 

 &lt;nowiki&gt;# hostname smtp.monDomaine.com&lt;/nowiki&gt;

Normalement, le hostname est maintenant OK. 

Il est important que le '''hostname''' de votre machine soit le même que celui retourné par la commande '''host -t MX monDomaine.com''', sinon Postfix va vous emmerder. 

Installons postfix&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install postfix&lt;/nowiki&gt;

Choisissez la configuration '''Internet Site'''. Indiquez ensuite le nom de votre machine&amp;nbsp;: '''smtp.monDomaine.com''' (correspond au ''hostname'') 

Au cas où vous voudriez recommencer&amp;nbsp;: 

 &lt;nowiki&gt;# dpkg-reconfigure postfix&lt;/nowiki&gt;

= Configuration  =

Le fichier de configuration de postfix est '''/etc/postfix/main.cf'''. Il est par défaut très bien sécurisé. 

Nous allons dans un premier temps y ajouter cette ligne&amp;nbsp;: 

 home_mailbox = Maildir/

Cette ligne dit à postfix que les mails des utilisateurs doivent aller dans un répertoire nommé Maildir. 

Commentez (ajoutez un #) la ligne où se trouve '''mailbox_command''' pour que procmail ne soit pas utilisé (en tout cas pas pour le moment): 

 &lt;nowiki&gt;#mailbox_command = procmail -a &quot;$EXTENSION&quot;&lt;/nowiki&gt;

Pour que la modification soit prise en compte, redémarrez postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

= Création d'un nouveau mail  =

Bien. Vous avez votre domaine, votre serveur mail tourne. Créer une adresse mail est très simple. Il suffit d'ajouter un utilisateur&amp;nbsp;!! 

Vous voulez créer une adresse kevin@monDomaine.com&amp;nbsp;? Ajoutez l'utilisateur kevin sur votre machine&amp;nbsp;: 

 &lt;nowiki&gt;# adduser kevin&lt;/nowiki&gt;

Répondez aux questions, choisissez un mot de passe à kevin et c'est tout. 

= Tester l'adresse en local  =

Nous allons envoyer un mail à Kevin, vérifions que le paquet '''mailx''' est installé&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install mailx&lt;/nowiki&gt;

On envoie le mail&amp;nbsp;: 

 &lt;nowiki&gt;# echo &quot;Le contenu du mail&quot; | mail -s &quot;ceci est le sujet&quot; kevin@monDomaine.com&lt;/nowiki&gt;

Le mail sera automatiquement déposé dans le répertoire '''Maildir''' situé dans le home de kevin. S'il n'existe pas, le dossier '''Maildir''' sera automatiquement créé. 

 &lt;nowiki&gt;# ls /home/kevin&lt;/nowiki&gt;
 Maildir

N'hésitez pas à consulter les logs pour voir tout ce qui se passe sur votre serveur mail&amp;nbsp;: 

 &lt;nowiki&gt;# cat /var/log/mail.log&lt;/nowiki&gt;

= Kevin veut lire ses mails&amp;nbsp;!!  =

Envoyer des mails, c'est bien mais pouvoir les lire, c'est mieux&amp;nbsp;!! Pour que Kevin puisse lire ses mails dans un client comme '''Mozilla Thunderbird''', c'est tout simple&amp;nbsp;: 

Kevin veut réceptionner ces mails via IMAP&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-imapd&lt;/nowiki&gt;

Il préfère POP3&amp;nbsp;? Pas de problèmes&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-pop3d&lt;/nowiki&gt;

C'est tout, vous pouvez maintenant utiliser votre client mail favori pour réceptionner vos mails. 

Serveur&amp;nbsp;: '''smtp.monDomaine.com''' 

Login&amp;nbsp;: '''kevin''' 

Password&amp;nbsp;: '''le password défini lors de la création de l'utilisateur kevin''' 

= Kevin veut envoyer des mails&amp;nbsp;!!  =

Kevin est content, il peut lire ses mails. Seulement, il aimerait répondre à ses amis mais il ne peut pas. 

== Utiliser le SMTP de son FAI  ==

Postfix possède son propre service SMTP, mais ce dernier sera généralement bloqué. Pour limiter les envois de SPAMS, les FAI bloquent généralement l'envoi de mails. 

Pour que votre serveur mail puisse envoyer des mails, il faut lui dire d'utiliser le SMTP de votre FAI. C'est le paramètre '''relayhost''' du fichier de configuration '''/etc/postfix/main.cf''' qu'il faut modifier&amp;nbsp;: 

 relayhost = smtp.votreFAI.com

Principaux SMTP français&amp;nbsp;: 

 Orange&amp;nbsp;: smtp.orange.fr
 Free&amp;nbsp;: smtp.free.fr
 Neuf&amp;nbsp;: smtp.neuf.fr

== Utiliser le SMTP de Postfix  ==

Cependant, certains FAI (comme Free) permettent de lever ce blocage via une option dans leur panel de gestion. 

Dans ce cas, plus besoin du '''relayhost'''. Vos mails ne passeront plus par votre FAI, c'est VOTRE serveur qui enverra directement les mails. 

Le problème est que les mails que vous enverrez vers les boîtes '''Yahoo''' seront classées en tant que SPAM. '''AOL''' ne voudra pas de vos mails (ce sera explicitement marqué dans les logs). Quant à '''Hotmail''', les logs vous diront que les mails ont bien été reçus, mais vos correspondants ne les recevront jamais. '''Gmail''' ne pose quant à lui aucun souci. 

Vous voulez utiliser le plus possible votre propre SMTP mais vous voulez quand même pouvoir envoyer des mails vers vos potes restés chez Hotmail&amp;nbsp;? 

Créez un fichier '''/etc/postfix/transport''' avec ce contenu&amp;nbsp;: 

 hotmail.fr    smtp:smtp.free.fr
 hotmail.com   smtp:smtp.free.fr
 yahoo.fr      smtp:smtp.free.fr
 yahoo.com     smtp:smtp.free.fr

Ce fichier dit à postfix que pour les domaines hotmail.fr, hotmail.com, yahoo, etc., il utilisera le SMTP de free. Pour tous les autres domaine, il utilisera le smtp local. A vous d'adapter ce fichier en fonction des domaines qui ne veulent pas de vous. 

Bien sûr, si vous n'êtes pas abonné Free, vous ne pourrez pas utiliser le SMTP de Free. 

Pour que Postfix prenne en compte ce fichier, exécutez cette commande&amp;nbsp;: 

 &lt;nowiki&gt;# postmap /etc/postfix/transport&lt;/nowiki&gt;

Puis relancez Postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

A chaque fois que vous modifierez '''/etc/postfix/transport''', n'oubliez pas d'executer la commande précédente (postmap).

== Login... Passwd...  ==

Actuellement, postfix n'accepte d'envoyer les mails que s'ils sont envoyés depuis le serveur mail. Vous avez sûrement l'habitude d'envoyer les mails depuis un autre PC. Généralement, le SMTP demande un login, un password et envoie vos mails. 

C'est ce que nous allons régler maintenant. 

Problème&amp;nbsp;: Postfix seul ne fournit pas de service d'identification. Il doit utiliser un serveur SASL externe. 

Solution&amp;nbsp;: Dovecot, que nous avons précédemment installé pour la réception de mails (IMAP-POP3) peut faire office de serveur SASL. 

Pour activer ce service, dans le fichier de configuration '''/etc/dovecot/dovecot.conf''', ajoutez (ou décommentez) ceci dans la section auth default { }&amp;nbsp;: 

 auth default {
 …
 socket listen {
   client {
     path  &lt;nowiki&gt;= /var/spool/postfix/private/auth&lt;/nowiki&gt;
    group = postfix
    mode  &lt;nowiki&gt;= 0660&lt;/nowiki&gt;
  }
 }
 …

Il s'agit pour Dovecot de créer un socket Unix, sur lequel il écoutera les demandes d'identification provenant de Postfix. Comme le service SMTP de Postfix est chrooté (emprisonné) dans le répertoire '''/var/spool/postfix/''', il faut placer ce socket sous ce répertoire, ce qui se fera automatiquement en relançant Dovecot avec la commande :             

 &lt;nowiki&gt;# /etc/init.d/dovecot restart&lt;/nowiki&gt;

Dovecot accepte l'identification mais Postfix ne le sait pas&amp;nbsp;!! Il faut lui dire (ajoutez dans '''/etc/postfix/main.cf''')&amp;nbsp;: 

 &lt;nowiki&gt;# Activer l'identification SASL&lt;/nowiki&gt;
 smtpd_sasl_auth_enable = yes

 &lt;nowiki&gt;# Utiliser le service d'identification de Dovecot&lt;/nowiki&gt;
 smtpd_sasl_type = dovecot
 smtpd_sasl_path = private/auth

 &lt;nowiki&gt;# Noter dans les en-tête des messages l'identifiant de l'utilisateur.&lt;/nowiki&gt;
 smtpd_sasl_authenticated_header = yes

Profitons-en pour peaufiner le fichier de configuration de postfix '''/etc/postfix/main.cf'''&amp;nbsp;: 

 &lt;nowiki&gt;# Règles pour accepter ou refuser une connexion :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on attend une seconde (pour piéger les zombies) ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on interdit la parallélisation là où il n'est pas sensé y en avoir.&lt;/nowiki&gt;
 smtpd_client_restrictions =
    permit_mynetworks, permit_sasl_authenticated,
    sleep 1, reject_unauth_pipelining

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le nom&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'hôte de l'expéditeur (par sa commande HELO ou EHLO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on refuse les noms d'hôte invalides.&lt;/nowiki&gt;
 smtpd_helo_restrictions = reject_invalid_helo_hostname

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît l'adresse&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'expéditeur :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un expéditeur inexistant de notre domaine, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si le domaine de l'expéditeur n'a pas d'IP ou de MX, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un client sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de l'expéditeur n'est pas sous forme canonique, on le refuse.&lt;/nowiki&gt;
 smtpd_sender_restrictions =
    reject_unlisted_sender, reject_unknown_sender_domain,
    permit_mynetworks, permit_sasl_authenticated,
    reject_non_fqdn_sender

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le&lt;/nowiki&gt;
 &lt;nowiki&gt;# destinataire (par la commande RCPT TO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un expéditeur forgé chez nous, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un domaine forgé, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un hôte sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de destination n'est pas sous forme canonique, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - finalement, s'il n'est pas destiné à un domaine que l'on gère ou pour&lt;/nowiki&gt;
 &lt;nowiki&gt;# &lt;/nowiki&gt;  lequel on relaie, on le refuse.
 smtpd_recipient_restrictions =
     reject_unlisted_recipient, reject_unknown_recipient_domain,
     permit_mynetworks, permit_sasl_authenticated,
     reject_non_fqdn_recipient,
     reject_unauth_destination

Allez, on relance postfix pour qu'il prenne en compte tout ça&amp;nbsp;: 

 /etc/init.d/postfix restart

== Chiffrement STARTTLS ==

Nous pouvons rajouter le support de STARTTLS, ce qui permet à un moment donné de chiffrer la connexion avec Postfix.
L'avantage est que l'on peut alors chiffrer l'authentification SASL pour que le mot de passe ne passe pas en clair.
On peut aussi chiffrer le contenu des messages, mais pour celà il est plus intéressant de s'orienter vers GPG ou S/MIME, afin de s'assurer que le message reste chiffré d'un bout à l'autre entre l'expéditeur et le destinataire.

Pour pouvoir utiliser STARTTLS, il nous faut un [[openssl|certificat SSL]]. Une fois le certificat obtenu, il suffit de rajouter dans main.cf :

 smtpd_tls_cert_file = /chemin/vers/certificat
 smtpd_tls_key_file = /chemin/vers/cle
 smtpd_use_tls = yes

Ceci suffit pour activer STARTTLS. Nous pouvons choisir le niveau de verbosité des logs :

 smtpd_tls_loglevel = 0

*0 : Désactive l'enregistrement de l'activité TLS.
*1 : Enregistre les informations de négociation TLS et des certificats.
*2 : Enregistre les niveaux durant la négociation TLS.
*3 : Retranscrit en hexadecimal et ASCII le processus de négotiation TLS
*4 : Retranscrit en hexadecimal et ASCII toute la transmission après STARTTLS

Enfin, il est possible d'interdire l'authentification SASL en clair avec :

 smtpd_tls_auth_only = yes


= Ressources =
*(en) http://www.postfix.org/documentation.html
*(fr) http://x.guimard.free.fr/postfix/
La traduction française n'est pas à jour, mais reste largement suffisante dans la plupart des cas.

[[Catégorie:Serveurs]]</text>
      <sha1>9zjw0dumges3hiv6pebybupg4e6lay2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3170</id>
      <parentid>2892</parentid>
      <timestamp>2011-08-03T14:09:48Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>lien</comment>
      <text xml:space="preserve" bytes="19280">= Configuration d'un serveur mail avec postfix  =

Vous ne voulez plus confier vos mails à Gmail, Yahoo ou Hotmail ? 

Vous aimeriez héberger vos mails chez vous mais vous pensez que c'est trop dur, trop compliqué ? 

Vous pensez qu'il faut être ingénieur pour monter un serveur mail ? 

Que nenni !! Nous allons voir dans ce tuto la mise en place d'un serveur mail avec Postfix dans le cadre d'une utilisation personnelle. 

Il ne s'agit pas ici de concurrencer Gmail ou Yahoo mais bien d'avoir notre petite boîte mail bien à nous. Faite avec amour. Et qui marche !! 

Ici, pas de gestion par base SQL ou annuaire LDAP, je vais tâcher de faire le plus simple possible. 

C'est parti !!

= Une adresse mail, c'est quoi ?  =

== kevin@wanadoo.fr  ==

Une adresse mail, c'est un peu comme une adresse postale. Elle se divise en 2 parties&amp;nbsp;: 

*un domaine&amp;nbsp;: '''wanadoo.fr''' 
*un utilisateur&amp;nbsp;: '''kevin'''

Dans mon exemple, lorsque l'on écrit à Kevin via l'adresse '''kevin@wanadoo.fr''', cela signifie que l'on écrit à l'utilisateur '''kevin''' du domaine '''wanadoo.fr'''. 

Plus précisément, le mail arrive sur la '''machine''' sur laquelle se trouve le '''serveur mail''' de wanadoo.fr, pour être ensuite remis dans la '''boîte mail''' de l'utilisateur kevin. 

== Identifier le serveur mail de wanadoo.fr  ==

Wanadoo.fr, c'est le domaine. Le service mail se trouve quant à lui sur une machine bien precise. Pour l'identifier, une commande bien pratique&amp;nbsp;: 

 $ host -t MX wanadoo.fr
 wanadoo.fr mail is handled by 10 smtp.wanadoo.fr.

'''smtp''' est un ''sous-domaine'' de '''wanadoo.fr''', et la machine sur laquelle se trouve le serveur mail se nomme justement '''smtp.wanadoo.fr'''… 

 $ ping smtp.wanadoo.fr
 PING smtp.wanadoo.fr (80.12.242.142) 56(84) bytes of data.

… et son adresse IP est '''80.12.242.142'''. 

Dans la réalité, l'architecture mail de Wanadoo (Orange maintenant…) est je pense un peu plus compliquée que ça mais ça donne une bonne image de ce que nous allons reproduire pour notre serveur mail. 

= Prérequis  =

Pour avoir son serveur mail, il faut donc&amp;nbsp;: 

*un nom de domaine 
*une IP fixe 
*un PC allumé si possible 24h/24

Pourquoi une IP fixe&amp;nbsp;? Les mails doivent pouvoir toujours trouver le serveur mail, c'est pourquoi l'IP doit être fixe. 

L'association nom de domaine ⇔ adresse IP se règle au niveau du serveur DNS. C'est celui-ci que nous allons régler en premier. 

== Configurer le serveur DNS  ==

Cette partie se révèle souvent être une prise de tête pour les apprentis auto-hébergés. 

On doit spécifier dans le serveur DNS sur quelle IP on peut joindre le serveur mail. 

La plupart des registrars (les marchands de noms de domaine) fournissent une interface simplifiée pour le serveur DNS. 

Un exemple de configuration pour un domaine acheté chez Gandi.net

=== Le champ A  ===

Il faut tout d'abord configurer le champ '''A''' qui fait le lien entre nom de domaine et l'adresse IP du serveur&amp;nbsp;: 

 @       IN    A    12.34.56.78 
 smtp    IN    A    12.34.56.78

'''@'''&amp;nbsp;: signifie que '''monDomaine.com''' est lié à l'IP 12.34.56.78 

'''smtp'''&amp;nbsp;: signifie que le sous-domaine '''smtp.monDomaine.com''' est lui aussi lié à l'IP 12.34.56.78 

Vous pouvez indiquer des adresses IP différentes si vous possédez plusieurs serveurs et plusieurs IP. 

=== Le champ MX  ===

Une fois que le champ '''A''' est complété, il faut pour définir le serveur mail s'occuper du champ '''MX''' ('''M'''ail e'''X'''change). 

Nous allons convenir que le serveur mail correspond au serveur '''smtp.monDomaine.com'''. Son adresse IP ayant déjà été définie par le champ '''A''', le champ '''MX''' s'écrit sous cette forme&amp;nbsp;: 

 monDomaine.com.    IN    MX    10    smtp

Ce qui signifie que '''smtp''' du champ '''A''' sera le serveur '''MX''' de '''monDomaine.com'''. 

Vous suivez toujours&amp;nbsp;?? 

Lorsque vous enverrez des mails sur le domaine '''monDomaine.com''', ils seront automatiquement acheminés vers le serveur '''smtp.monDomaine.com'''. 

'''''Important&amp;nbsp;:''''' 

*Un champ '''MX''' se définit toujours sur un champ '''A''', pas sur un '''CNAME''' (non abordé ici) 
*Ne pas oublier le point après monDomaine.com.

=== Un exemple de configuration de DNS chez gandi.net ===

[[Fichier:Gandi.jpeg]]

Ce qui donne en mode &quot;expert&quot;

 smtp 300 IN A 41.188.26.122 
 @ 28800 IN MX 10 smtp 
 www 10800 IN A 41.188.26.122

=== Configuration chez OVH ===

Rendez-vous sur votre &quot;manager&quot; puis cliquez sur &quot;Domaines &amp; DNS&quot;.
Dans la rubrique &quot;Zone DNS&quot; du domaine concerné, effacez les champs MX existants puis cliquez sur 'Type A&quot; et ajoutez un champ comme ci-dessous :

 sous-domaine: mail2.votre_domaine.com

Sélectionner une IP : adresse_IP_du_serveur_de_mail

Cliquez sur &quot;Validez&quot; pour confirmer l'operation. Ensuite, choisissez 'Type MX&quot; et ajoutez un champ comme ci-dessous :

 Sous-domaine : votre_domaine.com

 Destination: mail2.votre_domaine.com

Cliquez sur &quot;Validez&quot; pour confirmer l'operation. Si la création du champ MX ne passe pas, recommencez en cochant la case &quot;forcer l'opération&quot;. Les changements sont pris en compte le lendemain matin et vos mails seront redirigés vers votre serveur mail.

[http://guides.ovh.com/VotreServeurMail Source]

== Vérifications  ==

Avant même d'installer et configurer son serveur, il faut faire quelques vérifications (après avoir installé bind9-host). 

 $ host -t MX monDomaine.com

Cette commande doit retourner une ligne de ce genre&amp;nbsp;: 

 monDomaine.com mail is handled by 10 smtp.monDomaine.com

Bien sûr, ''smtp.monDomaine.com'' doit être associé à votre IP fixe (ici '''12.34.56.78''')&amp;nbsp;: 

 $ ping smtp.monDomaine.com
 PING smtp.monDomaine.com (12.34.56.78) 56(84) bytes of data.

Si ces 2 vérifications ne fonctionnent pas, '''ce n'est pas la peine d'aller plus loin''', votre serveur DNS est mal configuré.

=== Vérification si vous disposez d'un DNS local ===

Au cas ou vous disposeriez d'un DNS sur votre réseau local, pensez à vérifier sur un DNS externe...

 $ host -t MX monDomaine.com DNS_Externe

C'est le seul moyen d'être certain que &quot;le monde extérieur&quot; saura ou vous envoyer vos mails...

= Ouverture des ports  =

Si votre serveur se trouve derrière une *box, il ne pourra pas communiquer avec le monde extérieur. Il nous faut '''ouvrir des ports'''. 

Votre *box possède une '''IP fixe publique''', c'est l'IP que vous avez normalement renseignée dans votre serveur DNS. 

Derrière votre *box, il y a votre serveur mail qui lui possède également une adresse IP, '''privée'''. Les adresses privées sont en général 192.168.0.xxx ou 192.168.1.xxx. 

Admettons que votre serveur ait comme IP 192.168.0.25 dans votre réseau privé. Il faut alors que votre *box redirige toutes les requètes mail vers l'IP privée 192.168.0.25. 

Les ports à ouvrir sont&amp;nbsp;: 

*25&amp;nbsp;: pour que le serveur réceptionne les mails 
*110&amp;nbsp;: pour relever ses mails via POP 
*143&amp;nbsp;: pour relever ses mails via IMAP

Tous ces ports sont à ouvrir en '''TCP'''. 

Freebox&amp;nbsp;: [http://www.dslvalley.com/dossiers/freebox/freebox-nat.php http://www.dslvalley.com/dossiers/freebox/freebox-nat.php] 

NeufBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php] (fin de page) 

LiveBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/orange/livebox-emule.php http://www.dslvalley.com/dossiers/orange/livebox-emule.php] (fin de page)

= Installation de postfix  =

Votre DNS est correctement configuré&amp;nbsp;? Les ports sont ouverts&amp;nbsp;? Bien. Vous avez fait le plus dur. 

Vérifiez le nom de votre machine&amp;nbsp;: 

 $ hostname

Cette commande doit vous retourner '''smtp.monDomaine.com'''. Si ce n'est pas le cas, éditez le fichier '''/etc/hosts''' et vérifiez que vous avez une ligne comme suit&amp;nbsp;: 

 127.0.0.1 smtp.monDomaine.com smtp

Puis&amp;nbsp;: 

 &lt;nowiki&gt;# hostname smtp.monDomaine.com&lt;/nowiki&gt;

Normalement, le hostname est maintenant OK. 

Il est important que le '''hostname''' de votre machine soit le même que celui retourné par la commande '''host -t MX monDomaine.com''', sinon Postfix va vous emmerder. 

Installons postfix&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install postfix&lt;/nowiki&gt;

Choisissez la configuration '''Internet Site'''. Indiquez ensuite le nom de votre machine&amp;nbsp;: '''smtp.monDomaine.com''' (correspond au ''hostname'') 

Au cas où vous voudriez recommencer&amp;nbsp;: 

 &lt;nowiki&gt;# dpkg-reconfigure postfix&lt;/nowiki&gt;

= Configuration  =

Le fichier de configuration de postfix est '''/etc/postfix/main.cf'''. Il est par défaut très bien sécurisé. 

Nous allons dans un premier temps y ajouter cette ligne&amp;nbsp;: 

 home_mailbox = Maildir/

Cette ligne dit à postfix que les mails des utilisateurs doivent aller dans un répertoire nommé Maildir. 

Commentez (ajoutez un #) la ligne où se trouve '''mailbox_command''' pour que procmail ne soit pas utilisé (en tout cas pas pour le moment): 

 &lt;nowiki&gt;#mailbox_command = procmail -a &quot;$EXTENSION&quot;&lt;/nowiki&gt;

Pour que la modification soit prise en compte, redémarrez postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

= Création d'un nouveau mail  =

Bien. Vous avez votre domaine, votre serveur mail tourne. Créer une adresse mail est très simple. Il suffit d'ajouter un utilisateur&amp;nbsp;!! 

Vous voulez créer une adresse kevin@monDomaine.com&amp;nbsp;? Ajoutez l'utilisateur kevin sur votre machine&amp;nbsp;: 

 &lt;nowiki&gt;# adduser kevin&lt;/nowiki&gt;

Répondez aux questions, choisissez un mot de passe à kevin et c'est tout. 

= Tester l'adresse en local  =

Nous allons envoyer un mail à Kevin, vérifions que le paquet '''mailx''' est installé&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install mailx&lt;/nowiki&gt;

On envoie le mail&amp;nbsp;: 

 &lt;nowiki&gt;# echo &quot;Le contenu du mail&quot; | mail -s &quot;ceci est le sujet&quot; kevin@monDomaine.com&lt;/nowiki&gt;

Le mail sera automatiquement déposé dans le répertoire '''Maildir''' situé dans le home de kevin. S'il n'existe pas, le dossier '''Maildir''' sera automatiquement créé. 

 &lt;nowiki&gt;# ls /home/kevin&lt;/nowiki&gt;
 Maildir

N'hésitez pas à consulter les logs pour voir tout ce qui se passe sur votre serveur mail&amp;nbsp;: 

 &lt;nowiki&gt;# cat /var/log/mail.log&lt;/nowiki&gt;

= Kevin veut lire ses mails&amp;nbsp;!!  =

Envoyer des mails, c'est bien mais pouvoir les lire, c'est mieux&amp;nbsp;!! Pour que Kevin puisse lire ses mails dans un client comme '''Mozilla Thunderbird''', c'est tout simple&amp;nbsp;: 

Kevin veut réceptionner ces mails via IMAP&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-imapd&lt;/nowiki&gt;

Il préfère POP3&amp;nbsp;? Pas de problèmes&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-pop3d&lt;/nowiki&gt;

C'est tout, vous pouvez maintenant utiliser votre client mail favori pour réceptionner vos mails. 

Serveur&amp;nbsp;: '''smtp.monDomaine.com''' 

Login&amp;nbsp;: '''kevin''' 

Password&amp;nbsp;: '''le password défini lors de la création de l'utilisateur kevin''' 

= Kevin veut envoyer des mails&amp;nbsp;!!  =

Kevin est content, il peut lire ses mails. Seulement, il aimerait répondre à ses amis mais il ne peut pas. 

== Utiliser le SMTP de son FAI  ==

Postfix possède son propre service SMTP, mais ce dernier sera généralement bloqué. Pour limiter les envois de SPAMS, les FAI bloquent généralement l'envoi de mails. 

Pour que votre serveur mail puisse envoyer des mails, il faut lui dire d'utiliser le SMTP de votre FAI. C'est le paramètre '''relayhost''' du fichier de configuration '''/etc/postfix/main.cf''' qu'il faut modifier&amp;nbsp;: 

 relayhost = smtp.votreFAI.com

Principaux SMTP français&amp;nbsp;: 

 Orange&amp;nbsp;: smtp.orange.fr
 Free&amp;nbsp;: smtp.free.fr
 Neuf&amp;nbsp;: smtp.neuf.fr

== Utiliser le SMTP de Postfix  ==

Cependant, certains FAI (comme Free) permettent de lever ce blocage via une option dans leur panel de gestion. 

Dans ce cas, plus besoin du '''relayhost'''. Vos mails ne passeront plus par votre FAI, c'est VOTRE serveur qui enverra directement les mails. 

Le problème est que les mails que vous enverrez vers les boîtes '''Yahoo''' seront classées en tant que SPAM. '''AOL''' ne voudra pas de vos mails (ce sera explicitement marqué dans les logs). Quant à '''Hotmail''', les logs vous diront que les mails ont bien été reçus, mais vos correspondants ne les recevront jamais. '''Gmail''' ne pose quant à lui aucun souci. 

Vous voulez utiliser le plus possible votre propre SMTP mais vous voulez quand même pouvoir envoyer des mails vers vos potes restés chez Hotmail&amp;nbsp;? 

Créez un fichier '''/etc/postfix/transport''' avec ce contenu&amp;nbsp;: 

 hotmail.fr    smtp:smtp.free.fr
 hotmail.com   smtp:smtp.free.fr
 yahoo.fr      smtp:smtp.free.fr
 yahoo.com     smtp:smtp.free.fr

Ce fichier dit à postfix que pour les domaines hotmail.fr, hotmail.com, yahoo, etc., il utilisera le SMTP de free. Pour tous les autres domaine, il utilisera le smtp local. A vous d'adapter ce fichier en fonction des domaines qui ne veulent pas de vous. 

Bien sûr, si vous n'êtes pas abonné Free, vous ne pourrez pas utiliser le SMTP de Free. 

Pour que Postfix prenne en compte ce fichier, exécutez cette commande&amp;nbsp;: 

 &lt;nowiki&gt;# postmap /etc/postfix/transport&lt;/nowiki&gt;

Puis relancez Postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

A chaque fois que vous modifierez '''/etc/postfix/transport''', n'oubliez pas d'executer la commande précédente (postmap).

== Login... Passwd...  ==

Actuellement, postfix n'accepte d'envoyer les mails que s'ils sont envoyés depuis le serveur mail. Vous avez sûrement l'habitude d'envoyer les mails depuis un autre PC. Généralement, le SMTP demande un login, un password et envoie vos mails. 

C'est ce que nous allons régler maintenant. 

Problème&amp;nbsp;: Postfix seul ne fournit pas de service d'identification. Il doit utiliser un serveur SASL externe. 

Solution&amp;nbsp;: Dovecot, que nous avons précédemment installé pour la réception de mails (IMAP-POP3) peut faire office de serveur SASL. 

Pour activer ce service, dans le fichier de configuration '''/etc/dovecot/dovecot.conf''', ajoutez (ou décommentez) ceci dans la section auth default { }&amp;nbsp;: 

 auth default {
 …
 socket listen {
   client {
     path  &lt;nowiki&gt;= /var/spool/postfix/private/auth&lt;/nowiki&gt;
    group = postfix
    mode  &lt;nowiki&gt;= 0660&lt;/nowiki&gt;
  }
 }
 …

Il s'agit pour Dovecot de créer un socket Unix, sur lequel il écoutera les demandes d'identification provenant de Postfix. Comme le service SMTP de Postfix est chrooté (emprisonné) dans le répertoire '''/var/spool/postfix/''', il faut placer ce socket sous ce répertoire, ce qui se fera automatiquement en relançant Dovecot avec la commande :             

 &lt;nowiki&gt;# /etc/init.d/dovecot restart&lt;/nowiki&gt;

Dovecot accepte l'identification mais Postfix ne le sait pas&amp;nbsp;!! Il faut lui dire (ajoutez dans '''/etc/postfix/main.cf''')&amp;nbsp;: 

 &lt;nowiki&gt;# Activer l'identification SASL&lt;/nowiki&gt;
 smtpd_sasl_auth_enable = yes

 &lt;nowiki&gt;# Utiliser le service d'identification de Dovecot&lt;/nowiki&gt;
 smtpd_sasl_type = dovecot
 smtpd_sasl_path = private/auth

 &lt;nowiki&gt;# Noter dans les en-tête des messages l'identifiant de l'utilisateur.&lt;/nowiki&gt;
 smtpd_sasl_authenticated_header = yes

Profitons-en pour peaufiner le fichier de configuration de postfix '''/etc/postfix/main.cf'''&amp;nbsp;: 

 &lt;nowiki&gt;# Règles pour accepter ou refuser une connexion :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on attend une seconde (pour piéger les zombies) ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on interdit la parallélisation là où il n'est pas sensé y en avoir.&lt;/nowiki&gt;
 smtpd_client_restrictions =
    permit_mynetworks, permit_sasl_authenticated,
    sleep 1, reject_unauth_pipelining

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le nom&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'hôte de l'expéditeur (par sa commande HELO ou EHLO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on refuse les noms d'hôte invalides.&lt;/nowiki&gt;
 smtpd_helo_restrictions = reject_invalid_helo_hostname

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît l'adresse&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'expéditeur :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un expéditeur inexistant de notre domaine, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si le domaine de l'expéditeur n'a pas d'IP ou de MX, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un client sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de l'expéditeur n'est pas sous forme canonique, on le refuse.&lt;/nowiki&gt;
 smtpd_sender_restrictions =
    reject_unlisted_sender, reject_unknown_sender_domain,
    permit_mynetworks, permit_sasl_authenticated,
    reject_non_fqdn_sender

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le&lt;/nowiki&gt;
 &lt;nowiki&gt;# destinataire (par la commande RCPT TO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un expéditeur forgé chez nous, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un domaine forgé, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un hôte sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de destination n'est pas sous forme canonique, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - finalement, s'il n'est pas destiné à un domaine que l'on gère ou pour&lt;/nowiki&gt;
 &lt;nowiki&gt;# &lt;/nowiki&gt;  lequel on relaie, on le refuse.
 smtpd_recipient_restrictions =
     reject_unlisted_recipient, reject_unknown_recipient_domain,
     permit_mynetworks, permit_sasl_authenticated,
     reject_non_fqdn_recipient,
     reject_unauth_destination

Allez, on relance postfix pour qu'il prenne en compte tout ça&amp;nbsp;: 

 /etc/init.d/postfix restart

== Chiffrement STARTTLS ==

Nous pouvons rajouter le support de STARTTLS, ce qui permet à un moment donné de chiffrer la connexion avec Postfix.
L'avantage est que l'on peut alors chiffrer l'authentification SASL pour que le mot de passe ne passe pas en clair.
On peut aussi chiffrer le contenu des messages, mais pour celà il est plus intéressant de s'orienter vers GPG ou S/MIME, afin de s'assurer que le message reste chiffré d'un bout à l'autre entre l'expéditeur et le destinataire.

Pour pouvoir utiliser STARTTLS, il nous faut un [[openssl|certificat SSL]]. Une fois le certificat obtenu, il suffit de rajouter dans main.cf :

 smtpd_tls_cert_file = /chemin/vers/certificat
 smtpd_tls_key_file = /chemin/vers/cle
 smtpd_use_tls = yes

Ceci suffit pour activer STARTTLS. Nous pouvons choisir le niveau de verbosité des logs :

 smtpd_tls_loglevel = 0

*0 : Désactive l'enregistrement de l'activité TLS.
*1 : Enregistre les informations de négociation TLS et des certificats.
*2 : Enregistre les niveaux durant la négociation TLS.
*3 : Retranscrit en hexadecimal et ASCII le processus de négotiation TLS
*4 : Retranscrit en hexadecimal et ASCII toute la transmission après STARTTLS

Enfin, il est possible d'interdire l'authentification SASL en clair avec :

 smtpd_tls_auth_only = yes


= Ressources =
* {{en}} http://www.postfix.org/documentation.html
* {{fr}} [http://x.guimard.free.fr/postfix/ Documentation très complète sur Postfix]
La traduction française n'est pas à jour, mais reste largement suffisante dans la plupart des cas.

[[Catégorie:Serveurs]]</text>
      <sha1>crv3vhekd1cr2ftaa7gzg4a9ke2hj3t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3250</id>
      <parentid>3170</parentid>
      <timestamp>2011-08-10T15:18:28Z</timestamp>
      <contributor>
        <username>Panthere</username>
        <id>133</id>
      </contributor>
      <minor/>
      <comment>/* Login... Passwd... */</comment>
      <text xml:space="preserve" bytes="19879">= Configuration d'un serveur mail avec postfix  =

Vous ne voulez plus confier vos mails à Gmail, Yahoo ou Hotmail ? 

Vous aimeriez héberger vos mails chez vous mais vous pensez que c'est trop dur, trop compliqué ? 

Vous pensez qu'il faut être ingénieur pour monter un serveur mail ? 

Que nenni !! Nous allons voir dans ce tuto la mise en place d'un serveur mail avec Postfix dans le cadre d'une utilisation personnelle. 

Il ne s'agit pas ici de concurrencer Gmail ou Yahoo mais bien d'avoir notre petite boîte mail bien à nous. Faite avec amour. Et qui marche !! 

Ici, pas de gestion par base SQL ou annuaire LDAP, je vais tâcher de faire le plus simple possible. 

C'est parti !!

= Une adresse mail, c'est quoi ?  =

== kevin@wanadoo.fr  ==

Une adresse mail, c'est un peu comme une adresse postale. Elle se divise en 2 parties&amp;nbsp;: 

*un domaine&amp;nbsp;: '''wanadoo.fr''' 
*un utilisateur&amp;nbsp;: '''kevin'''

Dans mon exemple, lorsque l'on écrit à Kevin via l'adresse '''kevin@wanadoo.fr''', cela signifie que l'on écrit à l'utilisateur '''kevin''' du domaine '''wanadoo.fr'''. 

Plus précisément, le mail arrive sur la '''machine''' sur laquelle se trouve le '''serveur mail''' de wanadoo.fr, pour être ensuite remis dans la '''boîte mail''' de l'utilisateur kevin. 

== Identifier le serveur mail de wanadoo.fr  ==

Wanadoo.fr, c'est le domaine. Le service mail se trouve quant à lui sur une machine bien precise. Pour l'identifier, une commande bien pratique&amp;nbsp;: 

 $ host -t MX wanadoo.fr
 wanadoo.fr mail is handled by 10 smtp.wanadoo.fr.

'''smtp''' est un ''sous-domaine'' de '''wanadoo.fr''', et la machine sur laquelle se trouve le serveur mail se nomme justement '''smtp.wanadoo.fr'''… 

 $ ping smtp.wanadoo.fr
 PING smtp.wanadoo.fr (80.12.242.142) 56(84) bytes of data.

… et son adresse IP est '''80.12.242.142'''. 

Dans la réalité, l'architecture mail de Wanadoo (Orange maintenant…) est je pense un peu plus compliquée que ça mais ça donne une bonne image de ce que nous allons reproduire pour notre serveur mail. 

= Prérequis  =

Pour avoir son serveur mail, il faut donc&amp;nbsp;: 

*un nom de domaine 
*une IP fixe 
*un PC allumé si possible 24h/24

Pourquoi une IP fixe&amp;nbsp;? Les mails doivent pouvoir toujours trouver le serveur mail, c'est pourquoi l'IP doit être fixe. 

L'association nom de domaine ⇔ adresse IP se règle au niveau du serveur DNS. C'est celui-ci que nous allons régler en premier. 

== Configurer le serveur DNS  ==

Cette partie se révèle souvent être une prise de tête pour les apprentis auto-hébergés. 

On doit spécifier dans le serveur DNS sur quelle IP on peut joindre le serveur mail. 

La plupart des registrars (les marchands de noms de domaine) fournissent une interface simplifiée pour le serveur DNS. 

Un exemple de configuration pour un domaine acheté chez Gandi.net

=== Le champ A  ===

Il faut tout d'abord configurer le champ '''A''' qui fait le lien entre nom de domaine et l'adresse IP du serveur&amp;nbsp;: 

 @       IN    A    12.34.56.78 
 smtp    IN    A    12.34.56.78

'''@'''&amp;nbsp;: signifie que '''monDomaine.com''' est lié à l'IP 12.34.56.78 

'''smtp'''&amp;nbsp;: signifie que le sous-domaine '''smtp.monDomaine.com''' est lui aussi lié à l'IP 12.34.56.78 

Vous pouvez indiquer des adresses IP différentes si vous possédez plusieurs serveurs et plusieurs IP. 

=== Le champ MX  ===

Une fois que le champ '''A''' est complété, il faut pour définir le serveur mail s'occuper du champ '''MX''' ('''M'''ail e'''X'''change). 

Nous allons convenir que le serveur mail correspond au serveur '''smtp.monDomaine.com'''. Son adresse IP ayant déjà été définie par le champ '''A''', le champ '''MX''' s'écrit sous cette forme&amp;nbsp;: 

 monDomaine.com.    IN    MX    10    smtp

Ce qui signifie que '''smtp''' du champ '''A''' sera le serveur '''MX''' de '''monDomaine.com'''. 

Vous suivez toujours&amp;nbsp;?? 

Lorsque vous enverrez des mails sur le domaine '''monDomaine.com''', ils seront automatiquement acheminés vers le serveur '''smtp.monDomaine.com'''. 

'''''Important&amp;nbsp;:''''' 

*Un champ '''MX''' se définit toujours sur un champ '''A''', pas sur un '''CNAME''' (non abordé ici) 
*Ne pas oublier le point après monDomaine.com.

=== Un exemple de configuration de DNS chez gandi.net ===

[[Fichier:Gandi.jpeg]]

Ce qui donne en mode &quot;expert&quot;

 smtp 300 IN A 41.188.26.122 
 @ 28800 IN MX 10 smtp 
 www 10800 IN A 41.188.26.122

=== Configuration chez OVH ===

Rendez-vous sur votre &quot;manager&quot; puis cliquez sur &quot;Domaines &amp; DNS&quot;.
Dans la rubrique &quot;Zone DNS&quot; du domaine concerné, effacez les champs MX existants puis cliquez sur 'Type A&quot; et ajoutez un champ comme ci-dessous :

 sous-domaine: mail2.votre_domaine.com

Sélectionner une IP : adresse_IP_du_serveur_de_mail

Cliquez sur &quot;Validez&quot; pour confirmer l'operation. Ensuite, choisissez 'Type MX&quot; et ajoutez un champ comme ci-dessous :

 Sous-domaine : votre_domaine.com

 Destination: mail2.votre_domaine.com

Cliquez sur &quot;Validez&quot; pour confirmer l'operation. Si la création du champ MX ne passe pas, recommencez en cochant la case &quot;forcer l'opération&quot;. Les changements sont pris en compte le lendemain matin et vos mails seront redirigés vers votre serveur mail.

[http://guides.ovh.com/VotreServeurMail Source]

== Vérifications  ==

Avant même d'installer et configurer son serveur, il faut faire quelques vérifications (après avoir installé bind9-host). 

 $ host -t MX monDomaine.com

Cette commande doit retourner une ligne de ce genre&amp;nbsp;: 

 monDomaine.com mail is handled by 10 smtp.monDomaine.com

Bien sûr, ''smtp.monDomaine.com'' doit être associé à votre IP fixe (ici '''12.34.56.78''')&amp;nbsp;: 

 $ ping smtp.monDomaine.com
 PING smtp.monDomaine.com (12.34.56.78) 56(84) bytes of data.

Si ces 2 vérifications ne fonctionnent pas, '''ce n'est pas la peine d'aller plus loin''', votre serveur DNS est mal configuré.

=== Vérification si vous disposez d'un DNS local ===

Au cas ou vous disposeriez d'un DNS sur votre réseau local, pensez à vérifier sur un DNS externe...

 $ host -t MX monDomaine.com DNS_Externe

C'est le seul moyen d'être certain que &quot;le monde extérieur&quot; saura ou vous envoyer vos mails...

= Ouverture des ports  =

Si votre serveur se trouve derrière une *box, il ne pourra pas communiquer avec le monde extérieur. Il nous faut '''ouvrir des ports'''. 

Votre *box possède une '''IP fixe publique''', c'est l'IP que vous avez normalement renseignée dans votre serveur DNS. 

Derrière votre *box, il y a votre serveur mail qui lui possède également une adresse IP, '''privée'''. Les adresses privées sont en général 192.168.0.xxx ou 192.168.1.xxx. 

Admettons que votre serveur ait comme IP 192.168.0.25 dans votre réseau privé. Il faut alors que votre *box redirige toutes les requètes mail vers l'IP privée 192.168.0.25. 

Les ports à ouvrir sont&amp;nbsp;: 

*25&amp;nbsp;: pour que le serveur réceptionne les mails 
*110&amp;nbsp;: pour relever ses mails via POP 
*143&amp;nbsp;: pour relever ses mails via IMAP

Tous ces ports sont à ouvrir en '''TCP'''. 

Freebox&amp;nbsp;: [http://www.dslvalley.com/dossiers/freebox/freebox-nat.php http://www.dslvalley.com/dossiers/freebox/freebox-nat.php] 

NeufBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php] (fin de page) 

LiveBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/orange/livebox-emule.php http://www.dslvalley.com/dossiers/orange/livebox-emule.php] (fin de page)

= Installation de postfix  =

Votre DNS est correctement configuré&amp;nbsp;? Les ports sont ouverts&amp;nbsp;? Bien. Vous avez fait le plus dur. 

Vérifiez le nom de votre machine&amp;nbsp;: 

 $ hostname

Cette commande doit vous retourner '''smtp.monDomaine.com'''. Si ce n'est pas le cas, éditez le fichier '''/etc/hosts''' et vérifiez que vous avez une ligne comme suit&amp;nbsp;: 

 127.0.0.1 smtp.monDomaine.com smtp

Puis&amp;nbsp;: 

 &lt;nowiki&gt;# hostname smtp.monDomaine.com&lt;/nowiki&gt;

Normalement, le hostname est maintenant OK. 

Il est important que le '''hostname''' de votre machine soit le même que celui retourné par la commande '''host -t MX monDomaine.com''', sinon Postfix va vous emmerder. 

Installons postfix&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install postfix&lt;/nowiki&gt;

Choisissez la configuration '''Internet Site'''. Indiquez ensuite le nom de votre machine&amp;nbsp;: '''smtp.monDomaine.com''' (correspond au ''hostname'') 

Au cas où vous voudriez recommencer&amp;nbsp;: 

 &lt;nowiki&gt;# dpkg-reconfigure postfix&lt;/nowiki&gt;

= Configuration  =

Le fichier de configuration de postfix est '''/etc/postfix/main.cf'''. Il est par défaut très bien sécurisé. 

Nous allons dans un premier temps y ajouter cette ligne&amp;nbsp;: 

 home_mailbox = Maildir/

Cette ligne dit à postfix que les mails des utilisateurs doivent aller dans un répertoire nommé Maildir. 

Commentez (ajoutez un #) la ligne où se trouve '''mailbox_command''' pour que procmail ne soit pas utilisé (en tout cas pas pour le moment): 

 &lt;nowiki&gt;#mailbox_command = procmail -a &quot;$EXTENSION&quot;&lt;/nowiki&gt;

Pour que la modification soit prise en compte, redémarrez postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

= Création d'un nouveau mail  =

Bien. Vous avez votre domaine, votre serveur mail tourne. Créer une adresse mail est très simple. Il suffit d'ajouter un utilisateur&amp;nbsp;!! 

Vous voulez créer une adresse kevin@monDomaine.com&amp;nbsp;? Ajoutez l'utilisateur kevin sur votre machine&amp;nbsp;: 

 &lt;nowiki&gt;# adduser kevin&lt;/nowiki&gt;

Répondez aux questions, choisissez un mot de passe à kevin et c'est tout. 

= Tester l'adresse en local  =

Nous allons envoyer un mail à Kevin, vérifions que le paquet '''mailx''' est installé&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install mailx&lt;/nowiki&gt;

On envoie le mail&amp;nbsp;: 

 &lt;nowiki&gt;# echo &quot;Le contenu du mail&quot; | mail -s &quot;ceci est le sujet&quot; kevin@monDomaine.com&lt;/nowiki&gt;

Le mail sera automatiquement déposé dans le répertoire '''Maildir''' situé dans le home de kevin. S'il n'existe pas, le dossier '''Maildir''' sera automatiquement créé. 

 &lt;nowiki&gt;# ls /home/kevin&lt;/nowiki&gt;
 Maildir

N'hésitez pas à consulter les logs pour voir tout ce qui se passe sur votre serveur mail&amp;nbsp;: 

 &lt;nowiki&gt;# cat /var/log/mail.log&lt;/nowiki&gt;

= Kevin veut lire ses mails&amp;nbsp;!!  =

Envoyer des mails, c'est bien mais pouvoir les lire, c'est mieux&amp;nbsp;!! Pour que Kevin puisse lire ses mails dans un client comme '''Mozilla Thunderbird''', c'est tout simple&amp;nbsp;: 

Kevin veut réceptionner ces mails via IMAP&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-imapd&lt;/nowiki&gt;

Il préfère POP3&amp;nbsp;? Pas de problèmes&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-pop3d&lt;/nowiki&gt;

C'est tout, vous pouvez maintenant utiliser votre client mail favori pour réceptionner vos mails. 

Serveur&amp;nbsp;: '''smtp.monDomaine.com''' 

Login&amp;nbsp;: '''kevin''' 

Password&amp;nbsp;: '''le password défini lors de la création de l'utilisateur kevin''' 

= Kevin veut envoyer des mails&amp;nbsp;!!  =

Kevin est content, il peut lire ses mails. Seulement, il aimerait répondre à ses amis mais il ne peut pas. 

== Utiliser le SMTP de son FAI  ==

Postfix possède son propre service SMTP, mais ce dernier sera généralement bloqué. Pour limiter les envois de SPAMS, les FAI bloquent généralement l'envoi de mails. 

Pour que votre serveur mail puisse envoyer des mails, il faut lui dire d'utiliser le SMTP de votre FAI. C'est le paramètre '''relayhost''' du fichier de configuration '''/etc/postfix/main.cf''' qu'il faut modifier&amp;nbsp;: 

 relayhost = smtp.votreFAI.com

Principaux SMTP français&amp;nbsp;: 

 Orange&amp;nbsp;: smtp.orange.fr
 Free&amp;nbsp;: smtp.free.fr
 Neuf&amp;nbsp;: smtp.neuf.fr

== Utiliser le SMTP de Postfix  ==

Cependant, certains FAI (comme Free) permettent de lever ce blocage via une option dans leur panel de gestion. 

Dans ce cas, plus besoin du '''relayhost'''. Vos mails ne passeront plus par votre FAI, c'est VOTRE serveur qui enverra directement les mails. 

Le problème est que les mails que vous enverrez vers les boîtes '''Yahoo''' seront classées en tant que SPAM. '''AOL''' ne voudra pas de vos mails (ce sera explicitement marqué dans les logs). Quant à '''Hotmail''', les logs vous diront que les mails ont bien été reçus, mais vos correspondants ne les recevront jamais. '''Gmail''' ne pose quant à lui aucun souci. 

Vous voulez utiliser le plus possible votre propre SMTP mais vous voulez quand même pouvoir envoyer des mails vers vos potes restés chez Hotmail&amp;nbsp;? 

Créez un fichier '''/etc/postfix/transport''' avec ce contenu&amp;nbsp;: 

 hotmail.fr    smtp:smtp.free.fr
 hotmail.com   smtp:smtp.free.fr
 yahoo.fr      smtp:smtp.free.fr
 yahoo.com     smtp:smtp.free.fr

Ce fichier dit à postfix que pour les domaines hotmail.fr, hotmail.com, yahoo, etc., il utilisera le SMTP de free. Pour tous les autres domaine, il utilisera le smtp local. A vous d'adapter ce fichier en fonction des domaines qui ne veulent pas de vous. 

Bien sûr, si vous n'êtes pas abonné Free, vous ne pourrez pas utiliser le SMTP de Free. 

Pour que Postfix prenne en compte ce fichier, exécutez cette commande&amp;nbsp;: 

 &lt;nowiki&gt;# postmap /etc/postfix/transport&lt;/nowiki&gt;

Puis relancez Postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

A chaque fois que vous modifierez '''/etc/postfix/transport''', n'oubliez pas d'executer la commande précédente (postmap).

== Login... Passwd...  ==

Actuellement, postfix n'accepte d'envoyer les mails que s'ils sont envoyés depuis le serveur mail. Vous avez sûrement l'habitude d'envoyer les mails depuis un autre PC. Généralement, le SMTP demande un login, un password et envoie vos mails. 

C'est ce que nous allons régler maintenant. 

Problème&amp;nbsp;: Postfix seul ne fournit pas de service d'identification. Il doit utiliser un serveur SASL externe. 

Solution&amp;nbsp;: Dovecot, que nous avons précédemment installé pour la réception de mails (IMAP-POP3) peut faire office de serveur SASL. 

Pour activer ce service, dans le fichier de configuration '''/etc/dovecot/dovecot.conf''', ajoutez (ou décommentez) ceci dans la section auth default { }&amp;nbsp;: 

 auth default {
 …
 socket listen {
   client {
     path  &lt;nowiki&gt;= /var/spool/postfix/private/auth&lt;/nowiki&gt;
    group = postfix
    mode  &lt;nowiki&gt;= 0660&lt;/nowiki&gt;
  }
 }
 …

Il s'agit pour Dovecot de créer un socket Unix, sur lequel il écoutera les demandes d'identification provenant de Postfix. Comme le service SMTP de Postfix est chrooté (emprisonné) dans le répertoire '''/var/spool/postfix/''', il faut placer ce socket sous ce répertoire, ce qui se fera automatiquement en relançant Dovecot avec la commande :             

 &lt;nowiki&gt;# /etc/init.d/dovecot restart&lt;/nowiki&gt;

Dovecot accepte l'identification mais Postfix ne le sait pas&amp;nbsp;!! Il faut lui dire (ajoutez dans '''/etc/postfix/main.cf''')&amp;nbsp;: 

 &lt;nowiki&gt;# Activer l'identification SASL&lt;/nowiki&gt;
 smtpd_sasl_auth_enable = yes

 &lt;nowiki&gt;# Utiliser le service d'identification de Dovecot&lt;/nowiki&gt;
 smtpd_sasl_type = dovecot
 smtpd_sasl_path = private/auth

 &lt;nowiki&gt;# Noter dans les en-tête des messages l'identifiant de l'utilisateur.&lt;/nowiki&gt;
 smtpd_sasl_authenticated_header = yes

Profitons-en pour peaufiner le fichier de configuration de postfix '''/etc/postfix/main.cf'''&amp;nbsp;: 

 &lt;nowiki&gt;# Règles pour accepter ou refuser une connexion :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on attend une seconde (pour piéger les zombies) ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on interdit la parallélisation là où il n'est pas sensé y en avoir.&lt;/nowiki&gt;
 smtpd_client_restrictions =
    permit_mynetworks, permit_sasl_authenticated,
    sleep 1, reject_unauth_pipelining

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le nom&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'hôte de l'expéditeur (par sa commande HELO ou EHLO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on refuse les noms d'hôte invalides.&lt;/nowiki&gt;
 smtpd_helo_restrictions = reject_invalid_helo_hostname

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît l'adresse&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'expéditeur :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un expéditeur inexistant de notre domaine, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si le domaine de l'expéditeur n'a pas d'IP ou de MX, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un client sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de l'expéditeur n'est pas sous forme canonique, on le refuse.&lt;/nowiki&gt;
 smtpd_sender_restrictions =
    reject_unlisted_sender, reject_unknown_sender_domain,
    permit_mynetworks, permit_sasl_authenticated,
    reject_non_fqdn_sender

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le&lt;/nowiki&gt;
 &lt;nowiki&gt;# destinataire (par la commande RCPT TO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un expéditeur forgé chez nous, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un domaine forgé, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un hôte sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de destination n'est pas sous forme canonique, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - finalement, s'il n'est pas destiné à un domaine que l'on gère ou pour&lt;/nowiki&gt;
 &lt;nowiki&gt;# &lt;/nowiki&gt;  lequel on relaie, on le refuse.
 smtpd_recipient_restrictions =
     reject_unlisted_recipient, reject_unknown_recipient_domain,
     permit_mynetworks, permit_sasl_authenticated,
     reject_non_fqdn_recipient,
     reject_unauth_destination

Allez, on relance postfix pour qu'il prenne en compte tout ça&amp;nbsp;: 

 /etc/init.d/postfix restart


Important il faut vérifier que tout ce passe bien dans les log de devcot.
tail -f permet de voir les nouvelle entrée en &quot;direct&quot; donc dans une console lancer.
 &lt;nowiki&gt;#tail -f /var/log/dovecot-info.log &lt;/nowiki&gt;
Relever le courier  avec ce qui vous convient.
Et si vous avez quelque chose qui ressemble a ceci:
 &lt;nowiki&gt;#Error: mail_location not set and autodetection failed: Mail storage autodetection failed with home=/home/votreutilisateur &lt;/nowiki&gt;
il faut modifier le fichier de configuration de Dovecot
et vérifier que vous avez bien:
 &lt;nowiki&gt;mail_location = maildir:~/Maildir&lt;/nowiki&gt;

== Chiffrement STARTTLS ==

Nous pouvons rajouter le support de STARTTLS, ce qui permet à un moment donné de chiffrer la connexion avec Postfix.
L'avantage est que l'on peut alors chiffrer l'authentification SASL pour que le mot de passe ne passe pas en clair.
On peut aussi chiffrer le contenu des messages, mais pour celà il est plus intéressant de s'orienter vers GPG ou S/MIME, afin de s'assurer que le message reste chiffré d'un bout à l'autre entre l'expéditeur et le destinataire.

Pour pouvoir utiliser STARTTLS, il nous faut un [[openssl|certificat SSL]]. Une fois le certificat obtenu, il suffit de rajouter dans main.cf :

 smtpd_tls_cert_file = /chemin/vers/certificat
 smtpd_tls_key_file = /chemin/vers/cle
 smtpd_use_tls = yes

Ceci suffit pour activer STARTTLS. Nous pouvons choisir le niveau de verbosité des logs :

 smtpd_tls_loglevel = 0

*0 : Désactive l'enregistrement de l'activité TLS.
*1 : Enregistre les informations de négociation TLS et des certificats.
*2 : Enregistre les niveaux durant la négociation TLS.
*3 : Retranscrit en hexadecimal et ASCII le processus de négotiation TLS
*4 : Retranscrit en hexadecimal et ASCII toute la transmission après STARTTLS

Enfin, il est possible d'interdire l'authentification SASL en clair avec :

 smtpd_tls_auth_only = yes


= Ressources =
* {{en}} http://www.postfix.org/documentation.html
* {{fr}} [http://x.guimard.free.fr/postfix/ Documentation très complète sur Postfix]
La traduction française n'est pas à jour, mais reste largement suffisante dans la plupart des cas.

[[Catégorie:Serveurs]]</text>
      <sha1>cbheycpu5papv9m209t7zk6yl0alwyi</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3251</id>
      <parentid>3250</parentid>
      <timestamp>2011-08-10T17:30:27Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="19891">= Configuration d'un serveur mail avec postfix  =

Vous ne voulez plus confier vos mails à Gmail, Yahoo ou Hotmail ? 

Vous aimeriez héberger vos mails chez vous mais vous pensez que c'est trop dur, trop compliqué ? 

Vous pensez qu'il faut être ingénieur pour monter un serveur mail ? 

Que nenni !! Nous allons voir dans ce tuto la mise en place d'un serveur mail avec Postfix dans le cadre d'une utilisation personnelle. 

Il ne s'agit pas ici de concurrencer Gmail ou Yahoo mais bien d'avoir notre petite boîte mail bien à nous. Faite avec amour. Et qui marche !! 

Ici, pas de gestion par base SQL ou annuaire LDAP, je vais tâcher de faire le plus simple possible. 

C'est parti !!

= Une adresse mail, c'est quoi ?  =

== kevin@wanadoo.fr  ==

Une adresse mail, c'est un peu comme une adresse postale. Elle se divise en 2 parties&amp;nbsp;: 

*un domaine&amp;nbsp;: '''wanadoo.fr''' 
*un utilisateur&amp;nbsp;: '''kevin'''

Dans mon exemple, lorsque l'on écrit à Kevin via l'adresse '''kevin@wanadoo.fr''', cela signifie que l'on écrit à l'utilisateur '''kevin''' du domaine '''wanadoo.fr'''. 

Plus précisément, le mail arrive sur la '''machine''' sur laquelle se trouve le '''serveur mail''' de wanadoo.fr, pour être ensuite remis dans la '''boîte mail''' de l'utilisateur kevin. 

== Identifier le serveur mail de wanadoo.fr  ==

Wanadoo.fr, c'est le domaine. Le service mail se trouve quant à lui sur une machine bien precise. Pour l'identifier, une commande bien pratique&amp;nbsp;: 

 $ host -t MX wanadoo.fr
 wanadoo.fr mail is handled by 10 smtp.wanadoo.fr.

'''smtp''' est un ''sous-domaine'' de '''wanadoo.fr''', et la machine sur laquelle se trouve le serveur mail se nomme justement '''smtp.wanadoo.fr'''… 

 $ ping smtp.wanadoo.fr
 PING smtp.wanadoo.fr (80.12.242.142) 56(84) bytes of data.

… et son adresse IP est '''80.12.242.142'''. 

Dans la réalité, l'architecture mail de Wanadoo (Orange maintenant…) est je pense un peu plus compliquée que ça mais ça donne une bonne image de ce que nous allons reproduire pour notre serveur mail. 

= Prérequis  =

Pour avoir son serveur mail, il faut donc&amp;nbsp;: 

*un nom de domaine 
*une IP fixe 
*un PC allumé si possible 24h/24

Pourquoi une IP fixe&amp;nbsp;? Les mails doivent pouvoir toujours trouver le serveur mail, c'est pourquoi l'IP doit être fixe. 

L'association nom de domaine ⇔ adresse IP se règle au niveau du serveur DNS. C'est celui-ci que nous allons régler en premier. 

== Configurer le serveur DNS  ==

Cette partie se révèle souvent être une prise de tête pour les apprentis auto-hébergés. 

On doit spécifier dans le serveur DNS sur quelle IP on peut joindre le serveur mail. 

La plupart des registrars (les marchands de noms de domaine) fournissent une interface simplifiée pour le serveur DNS. 

Un exemple de configuration pour un domaine acheté chez Gandi.net

=== Le champ A  ===

Il faut tout d'abord configurer le champ '''A''' qui fait le lien entre nom de domaine et l'adresse IP du serveur&amp;nbsp;: 

 @       IN    A    12.34.56.78 
 smtp    IN    A    12.34.56.78

'''@'''&amp;nbsp;: signifie que '''monDomaine.com''' est lié à l'IP 12.34.56.78 

'''smtp'''&amp;nbsp;: signifie que le sous-domaine '''smtp.monDomaine.com''' est lui aussi lié à l'IP 12.34.56.78 

Vous pouvez indiquer des adresses IP différentes si vous possédez plusieurs serveurs et plusieurs IP. 

=== Le champ MX  ===

Une fois que le champ '''A''' est complété, il faut pour définir le serveur mail s'occuper du champ '''MX''' ('''M'''ail e'''X'''change). 

Nous allons convenir que le serveur mail correspond au serveur '''smtp.monDomaine.com'''. Son adresse IP ayant déjà été définie par le champ '''A''', le champ '''MX''' s'écrit sous cette forme&amp;nbsp;: 

 monDomaine.com.    IN    MX    10    smtp

Ce qui signifie que '''smtp''' du champ '''A''' sera le serveur '''MX''' de '''monDomaine.com'''. 

Vous suivez toujours&amp;nbsp;?? 

Lorsque vous enverrez des mails sur le domaine '''monDomaine.com''', ils seront automatiquement acheminés vers le serveur '''smtp.monDomaine.com'''. 

'''''Important&amp;nbsp;:''''' 

*Un champ '''MX''' se définit toujours sur un champ '''A''', pas sur un '''CNAME''' (non abordé ici) 
*Ne pas oublier le point après monDomaine.com.

=== Un exemple de configuration de DNS chez gandi.net ===

[[Fichier:Gandi.jpeg]]

Ce qui donne en mode &quot;expert&quot;

 smtp 300 IN A 41.188.26.122 
 @ 28800 IN MX 10 smtp 
 www 10800 IN A 41.188.26.122

=== Configuration chez OVH ===

Rendez-vous sur votre &quot;manager&quot; puis cliquez sur &quot;Domaines &amp; DNS&quot;.
Dans la rubrique &quot;Zone DNS&quot; du domaine concerné, effacez les champs MX existants puis cliquez sur 'Type A&quot; et ajoutez un champ comme ci-dessous :

 sous-domaine: mail2.votre_domaine.com

Sélectionner une IP : adresse_IP_du_serveur_de_mail

Cliquez sur &quot;Validez&quot; pour confirmer l'operation. Ensuite, choisissez 'Type MX&quot; et ajoutez un champ comme ci-dessous :

 Sous-domaine : votre_domaine.com

 Destination: mail2.votre_domaine.com

Cliquez sur &quot;Validez&quot; pour confirmer l'operation. Si la création du champ MX ne passe pas, recommencez en cochant la case &quot;forcer l'opération&quot;. Les changements sont pris en compte le lendemain matin et vos mails seront redirigés vers votre serveur mail.

[http://guides.ovh.com/VotreServeurMail Source]

== Vérifications  ==

Avant même d'installer et configurer son serveur, il faut faire quelques vérifications (après avoir installé bind9-host). 

 $ host -t MX monDomaine.com

Cette commande doit retourner une ligne de ce genre&amp;nbsp;: 

 monDomaine.com mail is handled by 10 smtp.monDomaine.com

Bien sûr, ''smtp.monDomaine.com'' doit être associé à votre IP fixe (ici '''12.34.56.78''')&amp;nbsp;: 

 $ ping smtp.monDomaine.com
 PING smtp.monDomaine.com (12.34.56.78) 56(84) bytes of data.

Si ces 2 vérifications ne fonctionnent pas, '''ce n'est pas la peine d'aller plus loin''', votre serveur DNS est mal configuré.

=== Vérification si vous disposez d'un DNS local ===

Au cas ou vous disposeriez d'un DNS sur votre réseau local, pensez à vérifier sur un DNS externe...

 $ host -t MX monDomaine.com DNS_Externe

C'est le seul moyen d'être certain que &quot;le monde extérieur&quot; saura ou vous envoyer vos mails...

= Ouverture des ports  =

Si votre serveur se trouve derrière une *box, il ne pourra pas communiquer avec le monde extérieur. Il nous faut '''ouvrir des ports'''. 

Votre *box possède une '''IP fixe publique''', c'est l'IP que vous avez normalement renseignée dans votre serveur DNS. 

Derrière votre *box, il y a votre serveur mail qui lui possède également une adresse IP, '''privée'''. Les adresses privées sont en général 192.168.0.xxx ou 192.168.1.xxx. 

Admettons que votre serveur ait comme IP 192.168.0.25 dans votre réseau privé. Il faut alors que votre *box redirige toutes les requètes mail vers l'IP privée 192.168.0.25. 

Les ports à ouvrir sont&amp;nbsp;: 

*25&amp;nbsp;: pour que le serveur réceptionne les mails 
*110&amp;nbsp;: pour relever ses mails via POP 
*143&amp;nbsp;: pour relever ses mails via IMAP

Tous ces ports sont à ouvrir en '''TCP'''. 

Freebox&amp;nbsp;: [http://www.dslvalley.com/dossiers/freebox/freebox-nat.php http://www.dslvalley.com/dossiers/freebox/freebox-nat.php] 

NeufBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php] (fin de page) 

LiveBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/orange/livebox-emule.php http://www.dslvalley.com/dossiers/orange/livebox-emule.php] (fin de page)

= Installation de postfix  =

Votre DNS est correctement configuré&amp;nbsp;? Les ports sont ouverts&amp;nbsp;? Bien. Vous avez fait le plus dur. 

Vérifiez le nom de votre machine&amp;nbsp;: 

 $ hostname

Cette commande doit vous retourner '''smtp.monDomaine.com'''. Si ce n'est pas le cas, éditez le fichier '''/etc/hosts''' et vérifiez que vous avez une ligne comme suit&amp;nbsp;: 

 127.0.0.1 smtp.monDomaine.com smtp

Puis&amp;nbsp;: 

 &lt;nowiki&gt;# hostname smtp.monDomaine.com&lt;/nowiki&gt;

Normalement, le hostname est maintenant OK. 

Il est important que le '''hostname''' de votre machine soit le même que celui retourné par la commande '''host -t MX monDomaine.com''', sinon Postfix posera des problèmes. 

Installons postfix&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install postfix&lt;/nowiki&gt;

Choisissez la configuration '''Internet Site'''. Indiquez ensuite le nom de votre machine&amp;nbsp;: '''smtp.monDomaine.com''' (correspond au ''hostname'') 

Au cas où vous voudriez recommencer&amp;nbsp;: 

 &lt;nowiki&gt;# dpkg-reconfigure postfix&lt;/nowiki&gt;

= Configuration  =

Le fichier de configuration de postfix est '''/etc/postfix/main.cf'''. Il est par défaut très bien sécurisé. 

Nous allons dans un premier temps y ajouter cette ligne&amp;nbsp;: 

 home_mailbox = Maildir/

Cette ligne dit à postfix que les mails des utilisateurs doivent aller dans un répertoire nommé Maildir. 

Commentez (ajoutez un #) la ligne où se trouve '''mailbox_command''' pour que procmail ne soit pas utilisé (en tout cas pas pour le moment): 

 &lt;nowiki&gt;#mailbox_command = procmail -a &quot;$EXTENSION&quot;&lt;/nowiki&gt;

Pour que la modification soit prise en compte, redémarrez postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

= Création d'un nouveau mail  =

Bien. Vous avez votre domaine, votre serveur mail tourne. Créer une adresse mail est très simple. Il suffit d'ajouter un utilisateur&amp;nbsp;!! 

Vous voulez créer une adresse kevin@monDomaine.com&amp;nbsp;? Ajoutez l'utilisateur kevin sur votre machine&amp;nbsp;: 

 &lt;nowiki&gt;# adduser kevin&lt;/nowiki&gt;

Répondez aux questions, choisissez un mot de passe à kevin et c'est tout. 

= Tester l'adresse en local  =

Nous allons envoyer un mail à Kevin, vérifions que le paquet '''mailx''' est installé&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install mailx&lt;/nowiki&gt;

On envoie le mail&amp;nbsp;: 

 &lt;nowiki&gt;# echo &quot;Le contenu du mail&quot; | mail -s &quot;ceci est le sujet&quot; kevin@monDomaine.com&lt;/nowiki&gt;

Le mail sera automatiquement déposé dans le répertoire '''Maildir''' situé dans le home de kevin. S'il n'existe pas, le dossier '''Maildir''' sera automatiquement créé. 

 &lt;nowiki&gt;# ls /home/kevin&lt;/nowiki&gt;
 Maildir

N'hésitez pas à consulter les logs pour voir tout ce qui se passe sur votre serveur mail&amp;nbsp;: 

 &lt;nowiki&gt;# cat /var/log/mail.log&lt;/nowiki&gt;

= Kevin veut lire ses mails&amp;nbsp;!!  =

Envoyer des mails, c'est bien mais pouvoir les lire, c'est mieux&amp;nbsp;!! Pour que Kevin puisse lire ses mails dans un client comme '''Mozilla Thunderbird''', c'est tout simple&amp;nbsp;: 

Kevin veut réceptionner ces mails via IMAP&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-imapd&lt;/nowiki&gt;

Il préfère POP3&amp;nbsp;? Pas de problèmes&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-pop3d&lt;/nowiki&gt;

C'est tout, vous pouvez maintenant utiliser votre client mail favori pour réceptionner vos mails. 

Serveur&amp;nbsp;: '''smtp.monDomaine.com''' 

Login&amp;nbsp;: '''kevin''' 

Password&amp;nbsp;: '''le password défini lors de la création de l'utilisateur kevin''' 

= Kevin veut envoyer des mails&amp;nbsp;!!  =

Kevin est content, il peut lire ses mails. Seulement, il aimerait répondre à ses amis mais il ne peut pas. 

== Utiliser le SMTP de son FAI  ==

Postfix possède son propre service SMTP, mais ce dernier sera généralement bloqué. Pour limiter les envois de SPAMS, les FAI bloquent généralement l'envoi de mails. 

Pour que votre serveur mail puisse envoyer des mails, il faut lui dire d'utiliser le SMTP de votre FAI. C'est le paramètre '''relayhost''' du fichier de configuration '''/etc/postfix/main.cf''' qu'il faut modifier&amp;nbsp;: 

 relayhost = smtp.votreFAI.com

Principaux SMTP français&amp;nbsp;: 

 Orange&amp;nbsp;: smtp.orange.fr
 Free&amp;nbsp;: smtp.free.fr
 Neuf&amp;nbsp;: smtp.neuf.fr

== Utiliser le SMTP de Postfix  ==

Cependant, certains FAI (comme Free) permettent de lever ce blocage via une option dans leur panel de gestion. 

Dans ce cas, plus besoin du '''relayhost'''. Vos mails ne passeront plus par votre FAI, c'est VOTRE serveur qui enverra directement les mails. 

Le problème est que les mails que vous enverrez vers les boîtes '''Yahoo''' seront classées en tant que SPAM. '''AOL''' ne voudra pas de vos mails (ce sera explicitement marqué dans les logs). Quant à '''Hotmail''', les logs vous diront que les mails ont bien été reçus, mais vos correspondants ne les recevront jamais. '''Gmail''' ne pose quant à lui aucun souci. 

Vous voulez utiliser le plus possible votre propre SMTP mais vous voulez quand même pouvoir envoyer des mails vers vos potes restés chez Hotmail&amp;nbsp;? 

Créez un fichier '''/etc/postfix/transport''' avec ce contenu&amp;nbsp;: 

 hotmail.fr    smtp:smtp.free.fr
 hotmail.com   smtp:smtp.free.fr
 yahoo.fr      smtp:smtp.free.fr
 yahoo.com     smtp:smtp.free.fr

Ce fichier dit à postfix que pour les domaines hotmail.fr, hotmail.com, yahoo, etc., il utilisera le SMTP de free. Pour tous les autres domaine, il utilisera le smtp local. A vous d'adapter ce fichier en fonction des domaines qui ne veulent pas de vous. 

Bien sûr, si vous n'êtes pas abonné Free, vous ne pourrez pas utiliser le SMTP de Free. 

Pour que Postfix prenne en compte ce fichier, exécutez cette commande&amp;nbsp;: 

 &lt;nowiki&gt;# postmap /etc/postfix/transport&lt;/nowiki&gt;

Puis relancez Postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

A chaque fois que vous modifierez '''/etc/postfix/transport''', n'oubliez pas d'executer la commande précédente (postmap).

== Login... Passwd...  ==

Actuellement, postfix n'accepte d'envoyer les mails que s'ils sont envoyés depuis le serveur mail. Vous avez sûrement l'habitude d'envoyer les mails depuis un autre PC. Généralement, le SMTP demande un login, un password et envoie vos mails. 

C'est ce que nous allons régler maintenant. 

Problème&amp;nbsp;: Postfix seul ne fournit pas de service d'identification. Il doit utiliser un serveur SASL externe. 

Solution&amp;nbsp;: Dovecot, que nous avons précédemment installé pour la réception de mails (IMAP-POP3) peut faire office de serveur SASL. 

Pour activer ce service, dans le fichier de configuration '''/etc/dovecot/dovecot.conf''', ajoutez (ou décommentez) ceci dans la section auth default { }&amp;nbsp;: 

 auth default {
 …
 socket listen {
   client {
     path  &lt;nowiki&gt;= /var/spool/postfix/private/auth&lt;/nowiki&gt;
    group = postfix
    mode  &lt;nowiki&gt;= 0660&lt;/nowiki&gt;
  }
 }
 …

Il s'agit pour Dovecot de créer un socket Unix, sur lequel il écoutera les demandes d'identification provenant de Postfix. Comme le service SMTP de Postfix est chrooté (emprisonné) dans le répertoire '''/var/spool/postfix/''', il faut placer ce socket sous ce répertoire, ce qui se fera automatiquement en relançant Dovecot avec la commande :             

 &lt;nowiki&gt;# /etc/init.d/dovecot restart&lt;/nowiki&gt;

Dovecot accepte l'identification mais Postfix ne le sait pas&amp;nbsp;!! Il faut lui dire (ajoutez dans '''/etc/postfix/main.cf''')&amp;nbsp;: 

 &lt;nowiki&gt;# Activer l'identification SASL&lt;/nowiki&gt;
 smtpd_sasl_auth_enable = yes

 &lt;nowiki&gt;# Utiliser le service d'identification de Dovecot&lt;/nowiki&gt;
 smtpd_sasl_type = dovecot
 smtpd_sasl_path = private/auth

 &lt;nowiki&gt;# Noter dans les en-tête des messages l'identifiant de l'utilisateur.&lt;/nowiki&gt;
 smtpd_sasl_authenticated_header = yes

Profitons-en pour peaufiner le fichier de configuration de postfix '''/etc/postfix/main.cf'''&amp;nbsp;: 

 &lt;nowiki&gt;# Règles pour accepter ou refuser une connexion :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on attend une seconde (pour piéger les zombies) ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on interdit la parallélisation là où il n'est pas sensé y en avoir.&lt;/nowiki&gt;
 smtpd_client_restrictions =
    permit_mynetworks, permit_sasl_authenticated,
    sleep 1, reject_unauth_pipelining

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le nom&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'hôte de l'expéditeur (par sa commande HELO ou EHLO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on refuse les noms d'hôte invalides.&lt;/nowiki&gt;
 smtpd_helo_restrictions = reject_invalid_helo_hostname

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît l'adresse&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'expéditeur :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un expéditeur inexistant de notre domaine, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si le domaine de l'expéditeur n'a pas d'IP ou de MX, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un client sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de l'expéditeur n'est pas sous forme canonique, on le refuse.&lt;/nowiki&gt;
 smtpd_sender_restrictions =
    reject_unlisted_sender, reject_unknown_sender_domain,
    permit_mynetworks, permit_sasl_authenticated,
    reject_non_fqdn_sender

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le&lt;/nowiki&gt;
 &lt;nowiki&gt;# destinataire (par la commande RCPT TO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un expéditeur forgé chez nous, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un domaine forgé, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un hôte sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de destination n'est pas sous forme canonique, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - finalement, s'il n'est pas destiné à un domaine que l'on gère ou pour&lt;/nowiki&gt;
 &lt;nowiki&gt;# &lt;/nowiki&gt;  lequel on relaie, on le refuse.
 smtpd_recipient_restrictions =
     reject_unlisted_recipient, reject_unknown_recipient_domain,
     permit_mynetworks, permit_sasl_authenticated,
     reject_non_fqdn_recipient,
     reject_unauth_destination

Allez, on relance postfix pour qu'il prenne en compte tout ça&amp;nbsp;: 

 /etc/init.d/postfix restart


Important il faut vérifier que tout se passe bien dans les log de dovecot.
tail -f permet de voir les nouvelle entrées en &quot;direct&quot; donc dans une console lancer.
 &lt;nowiki&gt;#tail -f /var/log/dovecot-info.log &lt;/nowiki&gt;
Relever le courier  avec ce qui vous convient.
Et si vous avez quelque chose qui ressemble à ceci:
 &lt;nowiki&gt;#Error: mail_location not set and autodetection failed: Mail storage autodetection failed with home=/home/votreutilisateur &lt;/nowiki&gt;
il faut modifier le fichier de configuration de Dovecot
et vérifier que vous avez bien:
 &lt;nowiki&gt;mail_location = maildir:~/Maildir&lt;/nowiki&gt;

== Chiffrement STARTTLS ==

Nous pouvons rajouter le support de STARTTLS, ce qui permet à un moment donné de chiffrer la connexion avec Postfix.
L'avantage est que l'on peut alors chiffrer l'authentification SASL pour que le mot de passe n'apparaisse pas en clair.
On peut aussi chiffrer le contenu des messages, mais pour celà il est plus intéressant de s'orienter vers GPG ou S/MIME, afin de s'assurer que le message reste chiffré d'un bout à l'autre entre l'expéditeur et le destinataire.

Pour pouvoir utiliser STARTTLS, il nous faut un [[openssl|certificat SSL]]. Une fois le certificat obtenu, il suffit de rajouter dans main.cf :

 smtpd_tls_cert_file = /chemin/vers/certificat
 smtpd_tls_key_file = /chemin/vers/cle
 smtpd_use_tls = yes

Ceci suffit pour activer STARTTLS. Nous pouvons choisir le niveau de verbosité des logs :

 smtpd_tls_loglevel = 0

*0 : Désactive l'enregistrement de l'activité TLS.
*1 : Enregistre les informations de négociation TLS et des certificats.
*2 : Enregistre les niveaux durant la négociation TLS.
*3 : Retranscrit en hexadecimal et ASCII le processus de négotiation TLS
*4 : Retranscrit en hexadecimal et ASCII toute la transmission après STARTTLS

Enfin, il est possible d'interdire l'authentification SASL en clair avec :

 smtpd_tls_auth_only = yes


= Ressources =
* {{en}} http://www.postfix.org/documentation.html
* {{fr}} [http://x.guimard.free.fr/postfix/ Documentation très complète sur Postfix]
La traduction française n'est pas à jour, mais reste largement suffisante dans la plupart des cas.

[[Catégorie:Serveurs]]</text>
      <sha1>o1xwsbazhu1tjwqpst3ej15bpku36rb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4094</id>
      <parentid>3251</parentid>
      <timestamp>2012-04-27T16:00:22Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>/* Configuration d'un serveur mail avec postfix */</comment>
      <text xml:space="preserve" bytes="19910">= Configuration d'un [[Installé sur::serveur]] mail avec postfix  =

Vous ne voulez plus confier vos mails à Gmail, Yahoo ou Hotmail ? 

Vous aimeriez héberger vos mails chez vous mais vous pensez que c'est trop dur, trop compliqué ? 

Vous pensez qu'il faut être ingénieur pour monter un serveur mail ? 

Que nenni !! Nous allons voir dans ce tuto la mise en place d'un serveur mail avec Postfix dans le cadre d'une utilisation personnelle. 

Il ne s'agit pas ici de concurrencer Gmail ou Yahoo mais bien d'avoir notre petite boîte mail bien à nous. Faite avec amour. Et qui marche !! 

Ici, pas de gestion par base SQL ou annuaire LDAP, je vais tâcher de faire le plus simple possible. 

C'est parti !!

= Une adresse mail, c'est quoi ?  =

== kevin@wanadoo.fr  ==

Une adresse mail, c'est un peu comme une adresse postale. Elle se divise en 2 parties&amp;nbsp;: 

*un domaine&amp;nbsp;: '''wanadoo.fr''' 
*un utilisateur&amp;nbsp;: '''kevin'''

Dans mon exemple, lorsque l'on écrit à Kevin via l'adresse '''kevin@wanadoo.fr''', cela signifie que l'on écrit à l'utilisateur '''kevin''' du domaine '''wanadoo.fr'''. 

Plus précisément, le mail arrive sur la '''machine''' sur laquelle se trouve le '''serveur mail''' de wanadoo.fr, pour être ensuite remis dans la '''boîte mail''' de l'utilisateur kevin. 

== Identifier le serveur mail de wanadoo.fr  ==

Wanadoo.fr, c'est le domaine. Le service mail se trouve quant à lui sur une machine bien precise. Pour l'identifier, une commande bien pratique&amp;nbsp;: 

 $ host -t MX wanadoo.fr
 wanadoo.fr mail is handled by 10 smtp.wanadoo.fr.

'''smtp''' est un ''sous-domaine'' de '''wanadoo.fr''', et la machine sur laquelle se trouve le serveur mail se nomme justement '''smtp.wanadoo.fr'''… 

 $ ping smtp.wanadoo.fr
 PING smtp.wanadoo.fr (80.12.242.142) 56(84) bytes of data.

… et son adresse IP est '''80.12.242.142'''. 

Dans la réalité, l'architecture mail de Wanadoo (Orange maintenant…) est je pense un peu plus compliquée que ça mais ça donne une bonne image de ce que nous allons reproduire pour notre serveur mail. 

= Prérequis  =

Pour avoir son serveur mail, il faut donc&amp;nbsp;: 

*un nom de domaine 
*une IP fixe 
*un PC allumé si possible 24h/24

Pourquoi une IP fixe&amp;nbsp;? Les mails doivent pouvoir toujours trouver le serveur mail, c'est pourquoi l'IP doit être fixe. 

L'association nom de domaine ⇔ adresse IP se règle au niveau du serveur DNS. C'est celui-ci que nous allons régler en premier. 

== Configurer le serveur DNS  ==

Cette partie se révèle souvent être une prise de tête pour les apprentis auto-hébergés. 

On doit spécifier dans le serveur DNS sur quelle IP on peut joindre le serveur mail. 

La plupart des registrars (les marchands de noms de domaine) fournissent une interface simplifiée pour le serveur DNS. 

Un exemple de configuration pour un domaine acheté chez Gandi.net

=== Le champ A  ===

Il faut tout d'abord configurer le champ '''A''' qui fait le lien entre nom de domaine et l'adresse IP du serveur&amp;nbsp;: 

 @       IN    A    12.34.56.78 
 smtp    IN    A    12.34.56.78

'''@'''&amp;nbsp;: signifie que '''monDomaine.com''' est lié à l'IP 12.34.56.78 

'''smtp'''&amp;nbsp;: signifie que le sous-domaine '''smtp.monDomaine.com''' est lui aussi lié à l'IP 12.34.56.78 

Vous pouvez indiquer des adresses IP différentes si vous possédez plusieurs serveurs et plusieurs IP. 

=== Le champ MX  ===

Une fois que le champ '''A''' est complété, il faut pour définir le serveur mail s'occuper du champ '''MX''' ('''M'''ail e'''X'''change). 

Nous allons convenir que le serveur mail correspond au serveur '''smtp.monDomaine.com'''. Son adresse IP ayant déjà été définie par le champ '''A''', le champ '''MX''' s'écrit sous cette forme&amp;nbsp;: 

 monDomaine.com.    IN    MX    10    smtp

Ce qui signifie que '''smtp''' du champ '''A''' sera le serveur '''MX''' de '''monDomaine.com'''. 

Vous suivez toujours&amp;nbsp;?? 

Lorsque vous enverrez des mails sur le domaine '''monDomaine.com''', ils seront automatiquement acheminés vers le serveur '''smtp.monDomaine.com'''. 

'''''Important&amp;nbsp;:''''' 

*Un champ '''MX''' se définit toujours sur un champ '''A''', pas sur un '''CNAME''' (non abordé ici) 
*Ne pas oublier le point après monDomaine.com.

=== Un exemple de configuration de DNS chez gandi.net ===

[[Fichier:Gandi.jpeg]]

Ce qui donne en mode &quot;expert&quot;

 smtp 300 IN A 41.188.26.122 
 @ 28800 IN MX 10 smtp 
 www 10800 IN A 41.188.26.122

=== Configuration chez OVH ===

Rendez-vous sur votre &quot;manager&quot; puis cliquez sur &quot;Domaines &amp; DNS&quot;.
Dans la rubrique &quot;Zone DNS&quot; du domaine concerné, effacez les champs MX existants puis cliquez sur 'Type A&quot; et ajoutez un champ comme ci-dessous :

 sous-domaine: mail2.votre_domaine.com

Sélectionner une IP : adresse_IP_du_serveur_de_mail

Cliquez sur &quot;Validez&quot; pour confirmer l'operation. Ensuite, choisissez 'Type MX&quot; et ajoutez un champ comme ci-dessous :

 Sous-domaine : votre_domaine.com

 Destination: mail2.votre_domaine.com

Cliquez sur &quot;Validez&quot; pour confirmer l'operation. Si la création du champ MX ne passe pas, recommencez en cochant la case &quot;forcer l'opération&quot;. Les changements sont pris en compte le lendemain matin et vos mails seront redirigés vers votre serveur mail.

[http://guides.ovh.com/VotreServeurMail Source]

== Vérifications  ==

Avant même d'installer et configurer son serveur, il faut faire quelques vérifications (après avoir installé bind9-host). 

 $ host -t MX monDomaine.com

Cette commande doit retourner une ligne de ce genre&amp;nbsp;: 

 monDomaine.com mail is handled by 10 smtp.monDomaine.com

Bien sûr, ''smtp.monDomaine.com'' doit être associé à votre IP fixe (ici '''12.34.56.78''')&amp;nbsp;: 

 $ ping smtp.monDomaine.com
 PING smtp.monDomaine.com (12.34.56.78) 56(84) bytes of data.

Si ces 2 vérifications ne fonctionnent pas, '''ce n'est pas la peine d'aller plus loin''', votre serveur DNS est mal configuré.

=== Vérification si vous disposez d'un DNS local ===

Au cas ou vous disposeriez d'un DNS sur votre réseau local, pensez à vérifier sur un DNS externe...

 $ host -t MX monDomaine.com DNS_Externe

C'est le seul moyen d'être certain que &quot;le monde extérieur&quot; saura ou vous envoyer vos mails...

= Ouverture des ports  =

Si votre serveur se trouve derrière une *box, il ne pourra pas communiquer avec le monde extérieur. Il nous faut '''ouvrir des ports'''. 

Votre *box possède une '''IP fixe publique''', c'est l'IP que vous avez normalement renseignée dans votre serveur DNS. 

Derrière votre *box, il y a votre serveur mail qui lui possède également une adresse IP, '''privée'''. Les adresses privées sont en général 192.168.0.xxx ou 192.168.1.xxx. 

Admettons que votre serveur ait comme IP 192.168.0.25 dans votre réseau privé. Il faut alors que votre *box redirige toutes les requètes mail vers l'IP privée 192.168.0.25. 

Les ports à ouvrir sont&amp;nbsp;: 

*25&amp;nbsp;: pour que le serveur réceptionne les mails 
*110&amp;nbsp;: pour relever ses mails via POP 
*143&amp;nbsp;: pour relever ses mails via IMAP

Tous ces ports sont à ouvrir en '''TCP'''. 

Freebox&amp;nbsp;: [http://www.dslvalley.com/dossiers/freebox/freebox-nat.php http://www.dslvalley.com/dossiers/freebox/freebox-nat.php] 

NeufBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php] (fin de page) 

LiveBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/orange/livebox-emule.php http://www.dslvalley.com/dossiers/orange/livebox-emule.php] (fin de page)

= Installation de postfix  =

Votre DNS est correctement configuré&amp;nbsp;? Les ports sont ouverts&amp;nbsp;? Bien. Vous avez fait le plus dur. 

Vérifiez le nom de votre machine&amp;nbsp;: 

 $ hostname

Cette commande doit vous retourner '''smtp.monDomaine.com'''. Si ce n'est pas le cas, éditez le fichier '''/etc/hosts''' et vérifiez que vous avez une ligne comme suit&amp;nbsp;: 

 127.0.0.1 smtp.monDomaine.com smtp

Puis&amp;nbsp;: 

 &lt;nowiki&gt;# hostname smtp.monDomaine.com&lt;/nowiki&gt;

Normalement, le hostname est maintenant OK. 

Il est important que le '''hostname''' de votre machine soit le même que celui retourné par la commande '''host -t MX monDomaine.com''', sinon Postfix posera des problèmes. 

Installons postfix&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install postfix&lt;/nowiki&gt;

Choisissez la configuration '''Internet Site'''. Indiquez ensuite le nom de votre machine&amp;nbsp;: '''smtp.monDomaine.com''' (correspond au ''hostname'') 

Au cas où vous voudriez recommencer&amp;nbsp;: 

 &lt;nowiki&gt;# dpkg-reconfigure postfix&lt;/nowiki&gt;

= Configuration  =

Le fichier de configuration de postfix est '''/etc/postfix/main.cf'''. Il est par défaut très bien sécurisé. 

Nous allons dans un premier temps y ajouter cette ligne&amp;nbsp;: 

 home_mailbox = Maildir/

Cette ligne dit à postfix que les mails des utilisateurs doivent aller dans un répertoire nommé Maildir. 

Commentez (ajoutez un #) la ligne où se trouve '''mailbox_command''' pour que procmail ne soit pas utilisé (en tout cas pas pour le moment): 

 &lt;nowiki&gt;#mailbox_command = procmail -a &quot;$EXTENSION&quot;&lt;/nowiki&gt;

Pour que la modification soit prise en compte, redémarrez postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

= Création d'un nouveau mail  =

Bien. Vous avez votre domaine, votre serveur mail tourne. Créer une adresse mail est très simple. Il suffit d'ajouter un utilisateur&amp;nbsp;!! 

Vous voulez créer une adresse kevin@monDomaine.com&amp;nbsp;? Ajoutez l'utilisateur kevin sur votre machine&amp;nbsp;: 

 &lt;nowiki&gt;# adduser kevin&lt;/nowiki&gt;

Répondez aux questions, choisissez un mot de passe à kevin et c'est tout. 

= Tester l'adresse en local  =

Nous allons envoyer un mail à Kevin, vérifions que le paquet '''mailx''' est installé&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install mailx&lt;/nowiki&gt;

On envoie le mail&amp;nbsp;: 

 &lt;nowiki&gt;# echo &quot;Le contenu du mail&quot; | mail -s &quot;ceci est le sujet&quot; kevin@monDomaine.com&lt;/nowiki&gt;

Le mail sera automatiquement déposé dans le répertoire '''Maildir''' situé dans le home de kevin. S'il n'existe pas, le dossier '''Maildir''' sera automatiquement créé. 

 &lt;nowiki&gt;# ls /home/kevin&lt;/nowiki&gt;
 Maildir

N'hésitez pas à consulter les logs pour voir tout ce qui se passe sur votre serveur mail&amp;nbsp;: 

 &lt;nowiki&gt;# cat /var/log/mail.log&lt;/nowiki&gt;

= Kevin veut lire ses mails&amp;nbsp;!!  =

Envoyer des mails, c'est bien mais pouvoir les lire, c'est mieux&amp;nbsp;!! Pour que Kevin puisse lire ses mails dans un client comme '''Mozilla Thunderbird''', c'est tout simple&amp;nbsp;: 

Kevin veut réceptionner ces mails via IMAP&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-imapd&lt;/nowiki&gt;

Il préfère POP3&amp;nbsp;? Pas de problèmes&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-pop3d&lt;/nowiki&gt;

C'est tout, vous pouvez maintenant utiliser votre client mail favori pour réceptionner vos mails. 

Serveur&amp;nbsp;: '''smtp.monDomaine.com''' 

Login&amp;nbsp;: '''kevin''' 

Password&amp;nbsp;: '''le password défini lors de la création de l'utilisateur kevin''' 

= Kevin veut envoyer des mails&amp;nbsp;!!  =

Kevin est content, il peut lire ses mails. Seulement, il aimerait répondre à ses amis mais il ne peut pas. 

== Utiliser le SMTP de son FAI  ==

Postfix possède son propre service SMTP, mais ce dernier sera généralement bloqué. Pour limiter les envois de SPAMS, les FAI bloquent généralement l'envoi de mails. 

Pour que votre serveur mail puisse envoyer des mails, il faut lui dire d'utiliser le SMTP de votre FAI. C'est le paramètre '''relayhost''' du fichier de configuration '''/etc/postfix/main.cf''' qu'il faut modifier&amp;nbsp;: 

 relayhost = smtp.votreFAI.com

Principaux SMTP français&amp;nbsp;: 

 Orange&amp;nbsp;: smtp.orange.fr
 Free&amp;nbsp;: smtp.free.fr
 Neuf&amp;nbsp;: smtp.neuf.fr

== Utiliser le SMTP de Postfix  ==

Cependant, certains FAI (comme Free) permettent de lever ce blocage via une option dans leur panel de gestion. 

Dans ce cas, plus besoin du '''relayhost'''. Vos mails ne passeront plus par votre FAI, c'est VOTRE serveur qui enverra directement les mails. 

Le problème est que les mails que vous enverrez vers les boîtes '''Yahoo''' seront classées en tant que SPAM. '''AOL''' ne voudra pas de vos mails (ce sera explicitement marqué dans les logs). Quant à '''Hotmail''', les logs vous diront que les mails ont bien été reçus, mais vos correspondants ne les recevront jamais. '''Gmail''' ne pose quant à lui aucun souci. 

Vous voulez utiliser le plus possible votre propre SMTP mais vous voulez quand même pouvoir envoyer des mails vers vos potes restés chez Hotmail&amp;nbsp;? 

Créez un fichier '''/etc/postfix/transport''' avec ce contenu&amp;nbsp;: 

 hotmail.fr    smtp:smtp.free.fr
 hotmail.com   smtp:smtp.free.fr
 yahoo.fr      smtp:smtp.free.fr
 yahoo.com     smtp:smtp.free.fr

Ce fichier dit à postfix que pour les domaines hotmail.fr, hotmail.com, yahoo, etc., il utilisera le SMTP de free. Pour tous les autres domaine, il utilisera le smtp local. A vous d'adapter ce fichier en fonction des domaines qui ne veulent pas de vous. 

Bien sûr, si vous n'êtes pas abonné Free, vous ne pourrez pas utiliser le SMTP de Free. 

Pour que Postfix prenne en compte ce fichier, exécutez cette commande&amp;nbsp;: 

 &lt;nowiki&gt;# postmap /etc/postfix/transport&lt;/nowiki&gt;

Puis relancez Postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

A chaque fois que vous modifierez '''/etc/postfix/transport''', n'oubliez pas d'executer la commande précédente (postmap).

== Login... Passwd...  ==

Actuellement, postfix n'accepte d'envoyer les mails que s'ils sont envoyés depuis le serveur mail. Vous avez sûrement l'habitude d'envoyer les mails depuis un autre PC. Généralement, le SMTP demande un login, un password et envoie vos mails. 

C'est ce que nous allons régler maintenant. 

Problème&amp;nbsp;: Postfix seul ne fournit pas de service d'identification. Il doit utiliser un serveur SASL externe. 

Solution&amp;nbsp;: Dovecot, que nous avons précédemment installé pour la réception de mails (IMAP-POP3) peut faire office de serveur SASL. 

Pour activer ce service, dans le fichier de configuration '''/etc/dovecot/dovecot.conf''', ajoutez (ou décommentez) ceci dans la section auth default { }&amp;nbsp;: 

 auth default {
 …
 socket listen {
   client {
     path  &lt;nowiki&gt;= /var/spool/postfix/private/auth&lt;/nowiki&gt;
    group = postfix
    mode  &lt;nowiki&gt;= 0660&lt;/nowiki&gt;
  }
 }
 …

Il s'agit pour Dovecot de créer un socket Unix, sur lequel il écoutera les demandes d'identification provenant de Postfix. Comme le service SMTP de Postfix est chrooté (emprisonné) dans le répertoire '''/var/spool/postfix/''', il faut placer ce socket sous ce répertoire, ce qui se fera automatiquement en relançant Dovecot avec la commande :             

 &lt;nowiki&gt;# /etc/init.d/dovecot restart&lt;/nowiki&gt;

Dovecot accepte l'identification mais Postfix ne le sait pas&amp;nbsp;!! Il faut lui dire (ajoutez dans '''/etc/postfix/main.cf''')&amp;nbsp;: 

 &lt;nowiki&gt;# Activer l'identification SASL&lt;/nowiki&gt;
 smtpd_sasl_auth_enable = yes

 &lt;nowiki&gt;# Utiliser le service d'identification de Dovecot&lt;/nowiki&gt;
 smtpd_sasl_type = dovecot
 smtpd_sasl_path = private/auth

 &lt;nowiki&gt;# Noter dans les en-tête des messages l'identifiant de l'utilisateur.&lt;/nowiki&gt;
 smtpd_sasl_authenticated_header = yes

Profitons-en pour peaufiner le fichier de configuration de postfix '''/etc/postfix/main.cf'''&amp;nbsp;: 

 &lt;nowiki&gt;# Règles pour accepter ou refuser une connexion :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on attend une seconde (pour piéger les zombies) ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on interdit la parallélisation là où il n'est pas sensé y en avoir.&lt;/nowiki&gt;
 smtpd_client_restrictions =
    permit_mynetworks, permit_sasl_authenticated,
    sleep 1, reject_unauth_pipelining

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le nom&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'hôte de l'expéditeur (par sa commande HELO ou EHLO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on refuse les noms d'hôte invalides.&lt;/nowiki&gt;
 smtpd_helo_restrictions = reject_invalid_helo_hostname

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît l'adresse&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'expéditeur :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un expéditeur inexistant de notre domaine, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si le domaine de l'expéditeur n'a pas d'IP ou de MX, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un client sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de l'expéditeur n'est pas sous forme canonique, on le refuse.&lt;/nowiki&gt;
 smtpd_sender_restrictions =
    reject_unlisted_sender, reject_unknown_sender_domain,
    permit_mynetworks, permit_sasl_authenticated,
    reject_non_fqdn_sender

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le&lt;/nowiki&gt;
 &lt;nowiki&gt;# destinataire (par la commande RCPT TO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un expéditeur forgé chez nous, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un domaine forgé, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un hôte sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de destination n'est pas sous forme canonique, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - finalement, s'il n'est pas destiné à un domaine que l'on gère ou pour&lt;/nowiki&gt;
 &lt;nowiki&gt;# &lt;/nowiki&gt;  lequel on relaie, on le refuse.
 smtpd_recipient_restrictions =
     reject_unlisted_recipient, reject_unknown_recipient_domain,
     permit_mynetworks, permit_sasl_authenticated,
     reject_non_fqdn_recipient,
     reject_unauth_destination

Allez, on relance postfix pour qu'il prenne en compte tout ça&amp;nbsp;: 

 /etc/init.d/postfix restart


Important il faut vérifier que tout se passe bien dans les log de dovecot.
tail -f permet de voir les nouvelle entrées en &quot;direct&quot; donc dans une console lancer.
 &lt;nowiki&gt;#tail -f /var/log/dovecot-info.log &lt;/nowiki&gt;
Relever le courier  avec ce qui vous convient.
Et si vous avez quelque chose qui ressemble à ceci:
 &lt;nowiki&gt;#Error: mail_location not set and autodetection failed: Mail storage autodetection failed with home=/home/votreutilisateur &lt;/nowiki&gt;
il faut modifier le fichier de configuration de Dovecot
et vérifier que vous avez bien:
 &lt;nowiki&gt;mail_location = maildir:~/Maildir&lt;/nowiki&gt;

== Chiffrement STARTTLS ==

Nous pouvons rajouter le support de STARTTLS, ce qui permet à un moment donné de chiffrer la connexion avec Postfix.
L'avantage est que l'on peut alors chiffrer l'authentification SASL pour que le mot de passe n'apparaisse pas en clair.
On peut aussi chiffrer le contenu des messages, mais pour celà il est plus intéressant de s'orienter vers GPG ou S/MIME, afin de s'assurer que le message reste chiffré d'un bout à l'autre entre l'expéditeur et le destinataire.

Pour pouvoir utiliser STARTTLS, il nous faut un [[openssl|certificat SSL]]. Une fois le certificat obtenu, il suffit de rajouter dans main.cf :

 smtpd_tls_cert_file = /chemin/vers/certificat
 smtpd_tls_key_file = /chemin/vers/cle
 smtpd_use_tls = yes

Ceci suffit pour activer STARTTLS. Nous pouvons choisir le niveau de verbosité des logs :

 smtpd_tls_loglevel = 0

*0 : Désactive l'enregistrement de l'activité TLS.
*1 : Enregistre les informations de négociation TLS et des certificats.
*2 : Enregistre les niveaux durant la négociation TLS.
*3 : Retranscrit en hexadecimal et ASCII le processus de négotiation TLS
*4 : Retranscrit en hexadecimal et ASCII toute la transmission après STARTTLS

Enfin, il est possible d'interdire l'authentification SASL en clair avec :

 smtpd_tls_auth_only = yes


= Ressources =
* {{en}} http://www.postfix.org/documentation.html
* {{fr}} [http://x.guimard.free.fr/postfix/ Documentation très complète sur Postfix]
La traduction française n'est pas à jour, mais reste largement suffisante dans la plupart des cas.

[[Catégorie:Serveurs]]</text>
      <sha1>7hksj4yjrs1vtmso3zduk8l7apvlerw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5546</id>
      <parentid>4094</parentid>
      <timestamp>2014-02-23T11:24:48Z</timestamp>
      <contributor>
        <username>Agentsteel</username>
        <id>260</id>
      </contributor>
      <comment>ajout config dovecot 2.0 pour Wheezy (auth postfix)</comment>
      <text xml:space="preserve" bytes="20543">= Configuration d'un [[Installé sur::serveur]] mail avec postfix  =

Vous ne voulez plus confier vos mails à Gmail, Yahoo ou Hotmail ? 

Vous aimeriez héberger vos mails chez vous mais vous pensez que c'est trop dur, trop compliqué ? 

Vous pensez qu'il faut être ingénieur pour monter un serveur mail ? 

Que nenni !! Nous allons voir dans ce tuto la mise en place d'un serveur mail avec Postfix dans le cadre d'une utilisation personnelle. 

Il ne s'agit pas ici de concurrencer Gmail ou Yahoo mais bien d'avoir notre petite boîte mail bien à nous. Faite avec amour. Et qui marche !! 

Ici, pas de gestion par base SQL ou annuaire LDAP, je vais tâcher de faire le plus simple possible. 

C'est parti !!

= Une adresse mail, c'est quoi ?  =

== kevin@wanadoo.fr  ==

Une adresse mail, c'est un peu comme une adresse postale. Elle se divise en 2 parties&amp;nbsp;: 

*un domaine&amp;nbsp;: '''wanadoo.fr''' 
*un utilisateur&amp;nbsp;: '''kevin'''

Dans mon exemple, lorsque l'on écrit à Kevin via l'adresse '''kevin@wanadoo.fr''', cela signifie que l'on écrit à l'utilisateur '''kevin''' du domaine '''wanadoo.fr'''. 

Plus précisément, le mail arrive sur la '''machine''' sur laquelle se trouve le '''serveur mail''' de wanadoo.fr, pour être ensuite remis dans la '''boîte mail''' de l'utilisateur kevin. 

== Identifier le serveur mail de wanadoo.fr  ==

Wanadoo.fr, c'est le domaine. Le service mail se trouve quant à lui sur une machine bien precise. Pour l'identifier, une commande bien pratique&amp;nbsp;: 

 $ host -t MX wanadoo.fr
 wanadoo.fr mail is handled by 10 smtp.wanadoo.fr.

'''smtp''' est un ''sous-domaine'' de '''wanadoo.fr''', et la machine sur laquelle se trouve le serveur mail se nomme justement '''smtp.wanadoo.fr'''… 

 $ ping smtp.wanadoo.fr
 PING smtp.wanadoo.fr (80.12.242.142) 56(84) bytes of data.

… et son adresse IP est '''80.12.242.142'''. 

Dans la réalité, l'architecture mail de Wanadoo (Orange maintenant…) est je pense un peu plus compliquée que ça mais ça donne une bonne image de ce que nous allons reproduire pour notre serveur mail. 

= Prérequis  =

Pour avoir son serveur mail, il faut donc&amp;nbsp;: 

*un nom de domaine 
*une IP fixe 
*un PC allumé si possible 24h/24

Pourquoi une IP fixe&amp;nbsp;? Les mails doivent pouvoir toujours trouver le serveur mail, c'est pourquoi l'IP doit être fixe. 

L'association nom de domaine ⇔ adresse IP se règle au niveau du serveur DNS. C'est celui-ci que nous allons régler en premier. 

== Configurer le serveur DNS  ==

Cette partie se révèle souvent être une prise de tête pour les apprentis auto-hébergés. 

On doit spécifier dans le serveur DNS sur quelle IP on peut joindre le serveur mail. 

La plupart des registrars (les marchands de noms de domaine) fournissent une interface simplifiée pour le serveur DNS. 

Un exemple de configuration pour un domaine acheté chez Gandi.net

=== Le champ A  ===

Il faut tout d'abord configurer le champ '''A''' qui fait le lien entre nom de domaine et l'adresse IP du serveur&amp;nbsp;: 

 @       IN    A    12.34.56.78 
 smtp    IN    A    12.34.56.78

'''@'''&amp;nbsp;: signifie que '''monDomaine.com''' est lié à l'IP 12.34.56.78 

'''smtp'''&amp;nbsp;: signifie que le sous-domaine '''smtp.monDomaine.com''' est lui aussi lié à l'IP 12.34.56.78 

Vous pouvez indiquer des adresses IP différentes si vous possédez plusieurs serveurs et plusieurs IP. 

=== Le champ MX  ===

Une fois que le champ '''A''' est complété, il faut pour définir le serveur mail s'occuper du champ '''MX''' ('''M'''ail e'''X'''change). 

Nous allons convenir que le serveur mail correspond au serveur '''smtp.monDomaine.com'''. Son adresse IP ayant déjà été définie par le champ '''A''', le champ '''MX''' s'écrit sous cette forme&amp;nbsp;: 

 monDomaine.com.    IN    MX    10    smtp

Ce qui signifie que '''smtp''' du champ '''A''' sera le serveur '''MX''' de '''monDomaine.com'''. 

Vous suivez toujours&amp;nbsp;?? 

Lorsque vous enverrez des mails sur le domaine '''monDomaine.com''', ils seront automatiquement acheminés vers le serveur '''smtp.monDomaine.com'''. 

'''''Important&amp;nbsp;:''''' 

*Un champ '''MX''' se définit toujours sur un champ '''A''', pas sur un '''CNAME''' (non abordé ici) 
*Ne pas oublier le point après monDomaine.com.

=== Un exemple de configuration de DNS chez gandi.net ===

[[Fichier:Gandi.jpeg]]

Ce qui donne en mode &quot;expert&quot;

 smtp 300 IN A 41.188.26.122 
 @ 28800 IN MX 10 smtp 
 www 10800 IN A 41.188.26.122

=== Configuration chez OVH ===

Rendez-vous sur votre &quot;manager&quot; puis cliquez sur &quot;Domaines &amp; DNS&quot;.
Dans la rubrique &quot;Zone DNS&quot; du domaine concerné, effacez les champs MX existants puis cliquez sur 'Type A&quot; et ajoutez un champ comme ci-dessous :

 sous-domaine: mail2.votre_domaine.com

Sélectionner une IP : adresse_IP_du_serveur_de_mail

Cliquez sur &quot;Validez&quot; pour confirmer l'operation. Ensuite, choisissez 'Type MX&quot; et ajoutez un champ comme ci-dessous :

 Sous-domaine : votre_domaine.com

 Destination: mail2.votre_domaine.com

Cliquez sur &quot;Validez&quot; pour confirmer l'operation. Si la création du champ MX ne passe pas, recommencez en cochant la case &quot;forcer l'opération&quot;. Les changements sont pris en compte le lendemain matin et vos mails seront redirigés vers votre serveur mail.

[http://guides.ovh.com/VotreServeurMail Source]

== Vérifications  ==

Avant même d'installer et configurer son serveur, il faut faire quelques vérifications (après avoir installé bind9-host). 

 $ host -t MX monDomaine.com

Cette commande doit retourner une ligne de ce genre&amp;nbsp;: 

 monDomaine.com mail is handled by 10 smtp.monDomaine.com

Bien sûr, ''smtp.monDomaine.com'' doit être associé à votre IP fixe (ici '''12.34.56.78''')&amp;nbsp;: 

 $ ping smtp.monDomaine.com
 PING smtp.monDomaine.com (12.34.56.78) 56(84) bytes of data.

Si ces 2 vérifications ne fonctionnent pas, '''ce n'est pas la peine d'aller plus loin''', votre serveur DNS est mal configuré.

=== Vérification si vous disposez d'un DNS local ===

Au cas ou vous disposeriez d'un DNS sur votre réseau local, pensez à vérifier sur un DNS externe...

 $ host -t MX monDomaine.com DNS_Externe

C'est le seul moyen d'être certain que &quot;le monde extérieur&quot; saura ou vous envoyer vos mails...

= Ouverture des ports  =

Si votre serveur se trouve derrière une *box, il ne pourra pas communiquer avec le monde extérieur. Il nous faut '''ouvrir des ports'''. 

Votre *box possède une '''IP fixe publique''', c'est l'IP que vous avez normalement renseignée dans votre serveur DNS. 

Derrière votre *box, il y a votre serveur mail qui lui possède également une adresse IP, '''privée'''. Les adresses privées sont en général 192.168.0.xxx ou 192.168.1.xxx. 

Admettons que votre serveur ait comme IP 192.168.0.25 dans votre réseau privé. Il faut alors que votre *box redirige toutes les requètes mail vers l'IP privée 192.168.0.25. 

Les ports à ouvrir sont&amp;nbsp;: 

*25&amp;nbsp;: pour que le serveur réceptionne les mails 
*110&amp;nbsp;: pour relever ses mails via POP 
*143&amp;nbsp;: pour relever ses mails via IMAP

Tous ces ports sont à ouvrir en '''TCP'''. 

Freebox&amp;nbsp;: [http://www.dslvalley.com/dossiers/freebox/freebox-nat.php http://www.dslvalley.com/dossiers/freebox/freebox-nat.php] 

NeufBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php] (fin de page) 

LiveBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/orange/livebox-emule.php http://www.dslvalley.com/dossiers/orange/livebox-emule.php] (fin de page)

= Installation de postfix  =

Votre DNS est correctement configuré&amp;nbsp;? Les ports sont ouverts&amp;nbsp;? Bien. Vous avez fait le plus dur. 

Vérifiez le nom de votre machine&amp;nbsp;: 

 $ hostname

Cette commande doit vous retourner '''smtp.monDomaine.com'''. Si ce n'est pas le cas, éditez le fichier '''/etc/hosts''' et vérifiez que vous avez une ligne comme suit&amp;nbsp;: 

 127.0.0.1 smtp.monDomaine.com smtp

Puis&amp;nbsp;: 

 &lt;nowiki&gt;# hostname smtp.monDomaine.com&lt;/nowiki&gt;

Normalement, le hostname est maintenant OK. 

Il est important que le '''hostname''' de votre machine soit le même que celui retourné par la commande '''host -t MX monDomaine.com''', sinon Postfix posera des problèmes. 

Installons postfix&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install postfix&lt;/nowiki&gt;

Choisissez la configuration '''Internet Site'''. Indiquez ensuite le nom de votre machine&amp;nbsp;: '''smtp.monDomaine.com''' (correspond au ''hostname'') 

Au cas où vous voudriez recommencer&amp;nbsp;: 

 &lt;nowiki&gt;# dpkg-reconfigure postfix&lt;/nowiki&gt;

= Configuration  =

Le fichier de configuration de postfix est '''/etc/postfix/main.cf'''. Il est par défaut très bien sécurisé. 

Nous allons dans un premier temps y ajouter cette ligne&amp;nbsp;: 

 home_mailbox = Maildir/

Cette ligne dit à postfix que les mails des utilisateurs doivent aller dans un répertoire nommé Maildir. 

Commentez (ajoutez un #) la ligne où se trouve '''mailbox_command''' pour que procmail ne soit pas utilisé (en tout cas pas pour le moment): 

 &lt;nowiki&gt;#mailbox_command = procmail -a &quot;$EXTENSION&quot;&lt;/nowiki&gt;

Pour que la modification soit prise en compte, redémarrez postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

= Création d'un nouveau mail  =

Bien. Vous avez votre domaine, votre serveur mail tourne. Créer une adresse mail est très simple. Il suffit d'ajouter un utilisateur&amp;nbsp;!! 

Vous voulez créer une adresse kevin@monDomaine.com&amp;nbsp;? Ajoutez l'utilisateur kevin sur votre machine&amp;nbsp;: 

 &lt;nowiki&gt;# adduser kevin&lt;/nowiki&gt;

Répondez aux questions, choisissez un mot de passe à kevin et c'est tout. 

= Tester l'adresse en local  =

Nous allons envoyer un mail à Kevin, vérifions que le paquet '''mailx''' est installé&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install mailx&lt;/nowiki&gt;

On envoie le mail&amp;nbsp;: 

 &lt;nowiki&gt;# echo &quot;Le contenu du mail&quot; | mail -s &quot;ceci est le sujet&quot; kevin@monDomaine.com&lt;/nowiki&gt;

Le mail sera automatiquement déposé dans le répertoire '''Maildir''' situé dans le home de kevin. S'il n'existe pas, le dossier '''Maildir''' sera automatiquement créé. 

 &lt;nowiki&gt;# ls /home/kevin&lt;/nowiki&gt;
 Maildir

N'hésitez pas à consulter les logs pour voir tout ce qui se passe sur votre serveur mail&amp;nbsp;: 

 &lt;nowiki&gt;# cat /var/log/mail.log&lt;/nowiki&gt;

= Kevin veut lire ses mails&amp;nbsp;!!  =

Envoyer des mails, c'est bien mais pouvoir les lire, c'est mieux&amp;nbsp;!! Pour que Kevin puisse lire ses mails dans un client comme '''Mozilla Thunderbird''', c'est tout simple&amp;nbsp;: 

Kevin veut réceptionner ces mails via IMAP&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-imapd&lt;/nowiki&gt;

Il préfère POP3&amp;nbsp;? Pas de problèmes&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-pop3d&lt;/nowiki&gt;

C'est tout, vous pouvez maintenant utiliser votre client mail favori pour réceptionner vos mails. 

Serveur&amp;nbsp;: '''smtp.monDomaine.com''' 

Login&amp;nbsp;: '''kevin''' 

Password&amp;nbsp;: '''le password défini lors de la création de l'utilisateur kevin''' 

= Kevin veut envoyer des mails&amp;nbsp;!!  =

Kevin est content, il peut lire ses mails. Seulement, il aimerait répondre à ses amis mais il ne peut pas. 

== Utiliser le SMTP de son FAI  ==

Postfix possède son propre service SMTP, mais ce dernier sera généralement bloqué. Pour limiter les envois de SPAMS, les FAI bloquent généralement l'envoi de mails. 

Pour que votre serveur mail puisse envoyer des mails, il faut lui dire d'utiliser le SMTP de votre FAI. C'est le paramètre '''relayhost''' du fichier de configuration '''/etc/postfix/main.cf''' qu'il faut modifier&amp;nbsp;: 

 relayhost = smtp.votreFAI.com

Principaux SMTP français&amp;nbsp;: 

 Orange&amp;nbsp;: smtp.orange.fr
 Free&amp;nbsp;: smtp.free.fr
 Neuf&amp;nbsp;: smtp.neuf.fr

== Utiliser le SMTP de Postfix  ==

Cependant, certains FAI (comme Free) permettent de lever ce blocage via une option dans leur panel de gestion. 

Dans ce cas, plus besoin du '''relayhost'''. Vos mails ne passeront plus par votre FAI, c'est VOTRE serveur qui enverra directement les mails. 

Le problème est que les mails que vous enverrez vers les boîtes '''Yahoo''' seront classées en tant que SPAM. '''AOL''' ne voudra pas de vos mails (ce sera explicitement marqué dans les logs). Quant à '''Hotmail''', les logs vous diront que les mails ont bien été reçus, mais vos correspondants ne les recevront jamais. '''Gmail''' ne pose quant à lui aucun souci. 

Vous voulez utiliser le plus possible votre propre SMTP mais vous voulez quand même pouvoir envoyer des mails vers vos potes restés chez Hotmail&amp;nbsp;? 

Créez un fichier '''/etc/postfix/transport''' avec ce contenu&amp;nbsp;: 

 hotmail.fr    smtp:smtp.free.fr
 hotmail.com   smtp:smtp.free.fr
 yahoo.fr      smtp:smtp.free.fr
 yahoo.com     smtp:smtp.free.fr

Ce fichier dit à postfix que pour les domaines hotmail.fr, hotmail.com, yahoo, etc., il utilisera le SMTP de free. Pour tous les autres domaine, il utilisera le smtp local. A vous d'adapter ce fichier en fonction des domaines qui ne veulent pas de vous. 

Bien sûr, si vous n'êtes pas abonné Free, vous ne pourrez pas utiliser le SMTP de Free. 

Pour que Postfix prenne en compte ce fichier, exécutez cette commande&amp;nbsp;: 

 &lt;nowiki&gt;# postmap /etc/postfix/transport&lt;/nowiki&gt;

Puis relancez Postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

A chaque fois que vous modifierez '''/etc/postfix/transport''', n'oubliez pas d'executer la commande précédente (postmap).

== Login... Passwd...  ==

Actuellement, postfix n'accepte d'envoyer les mails que s'ils sont envoyés depuis le serveur mail. Vous avez sûrement l'habitude d'envoyer les mails depuis un autre PC. Généralement, le SMTP demande un login, un password et envoie vos mails. 

C'est ce que nous allons régler maintenant. 

Problème&amp;nbsp;: Postfix seul ne fournit pas de service d'identification. Il doit utiliser un serveur SASL externe. 

Solution&amp;nbsp;: Dovecot, que nous avons précédemment installé pour la réception de mails (IMAP-POP3) peut faire office de serveur SASL. 

=== Sous Debian Squeeze (6.0) avec Dovecot 1.x ===

Pour activer ce service, dans le fichier de configuration '''/etc/dovecot/dovecot.conf''', ajoutez (ou décommentez) ceci dans la section auth default { }&amp;nbsp;: 

 auth default {
 …
 socket listen {
   client {
     path  &lt;nowiki&gt;= /var/spool/postfix/private/auth&lt;/nowiki&gt;
    group = postfix
    mode  &lt;nowiki&gt;= 0660&lt;/nowiki&gt;
  }
 }
 …

=== Sous Debian Wheezy (7.0) avec Dovecot 2.x ===

Les fichiers de configuration sont séparés. Lire la documentation (obligatoire en cas de migration Squeeze -&gt; Wheezy!)
&lt;code&gt;zless /usr/share/doc/dovecot-core/README.Debian.gz&lt;/code&gt;


Le fichier de configuration à modifier est : '''/etc/dovecot/conf.d/10-master.conf'''

&lt;code&gt;
  service auth {
  ...
  # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth {
    mode = 0660
        user=postfix
        group=postfix
  }

  # Auth process is run as this user.
  #user = $default_internal_user
 }
 ...
&lt;/code&gt;


Il s'agit pour Dovecot de créer un socket Unix, sur lequel il écoutera les demandes d'identification provenant de Postfix. Comme le service SMTP de Postfix est chrooté (emprisonné) dans le répertoire '''/var/spool/postfix/''', il faut placer ce socket sous ce répertoire, ce qui se fera automatiquement en relançant Dovecot avec la commande :             

 &lt;nowiki&gt;# /etc/init.d/dovecot restart&lt;/nowiki&gt;

Dovecot accepte l'identification mais Postfix ne le sait pas&amp;nbsp;!! Il faut lui dire (ajoutez dans '''/etc/postfix/main.cf''')&amp;nbsp;: 

 &lt;nowiki&gt;# Activer l'identification SASL&lt;/nowiki&gt;
 smtpd_sasl_auth_enable = yes

 &lt;nowiki&gt;# Utiliser le service d'identification de Dovecot&lt;/nowiki&gt;
 smtpd_sasl_type = dovecot
 smtpd_sasl_path = private/auth

 &lt;nowiki&gt;# Noter dans les en-tête des messages l'identifiant de l'utilisateur.&lt;/nowiki&gt;
 smtpd_sasl_authenticated_header = yes

Profitons-en pour peaufiner le fichier de configuration de postfix '''/etc/postfix/main.cf'''&amp;nbsp;: 

 &lt;nowiki&gt;# Règles pour accepter ou refuser une connexion :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on attend une seconde (pour piéger les zombies) ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on interdit la parallélisation là où il n'est pas sensé y en avoir.&lt;/nowiki&gt;
 smtpd_client_restrictions =
    permit_mynetworks, permit_sasl_authenticated,
    sleep 1, reject_unauth_pipelining

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le nom&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'hôte de l'expéditeur (par sa commande HELO ou EHLO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on refuse les noms d'hôte invalides.&lt;/nowiki&gt;
 smtpd_helo_restrictions = reject_invalid_helo_hostname

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît l'adresse&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'expéditeur :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un expéditeur inexistant de notre domaine, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si le domaine de l'expéditeur n'a pas d'IP ou de MX, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un client sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de l'expéditeur n'est pas sous forme canonique, on le refuse.&lt;/nowiki&gt;
 smtpd_sender_restrictions =
    reject_unlisted_sender, reject_unknown_sender_domain,
    permit_mynetworks, permit_sasl_authenticated,
    reject_non_fqdn_sender

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le&lt;/nowiki&gt;
 &lt;nowiki&gt;# destinataire (par la commande RCPT TO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un expéditeur forgé chez nous, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un domaine forgé, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un hôte sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de destination n'est pas sous forme canonique, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - finalement, s'il n'est pas destiné à un domaine que l'on gère ou pour&lt;/nowiki&gt;
 &lt;nowiki&gt;# &lt;/nowiki&gt;  lequel on relaie, on le refuse.
 smtpd_recipient_restrictions =
     reject_unlisted_recipient, reject_unknown_recipient_domain,
     permit_mynetworks, permit_sasl_authenticated,
     reject_non_fqdn_recipient,
     reject_unauth_destination

Allez, on relance postfix pour qu'il prenne en compte tout ça&amp;nbsp;: 

 /etc/init.d/postfix restart


Important il faut vérifier que tout se passe bien dans les log de dovecot.
tail -f permet de voir les nouvelle entrées en &quot;direct&quot; donc dans une console lancer.
 &lt;nowiki&gt;#tail -f /var/log/dovecot-info.log &lt;/nowiki&gt;
Relever le courier  avec ce qui vous convient.
Et si vous avez quelque chose qui ressemble à ceci:
 &lt;nowiki&gt;#Error: mail_location not set and autodetection failed: Mail storage autodetection failed with home=/home/votreutilisateur &lt;/nowiki&gt;
il faut modifier le fichier de configuration de Dovecot
et vérifier que vous avez bien:
 &lt;nowiki&gt;mail_location = maildir:~/Maildir&lt;/nowiki&gt;

== Chiffrement STARTTLS ==

Nous pouvons rajouter le support de STARTTLS, ce qui permet à un moment donné de chiffrer la connexion avec Postfix.
L'avantage est que l'on peut alors chiffrer l'authentification SASL pour que le mot de passe n'apparaisse pas en clair.
On peut aussi chiffrer le contenu des messages, mais pour celà il est plus intéressant de s'orienter vers GPG ou S/MIME, afin de s'assurer que le message reste chiffré d'un bout à l'autre entre l'expéditeur et le destinataire.

Pour pouvoir utiliser STARTTLS, il nous faut un [[openssl|certificat SSL]]. Une fois le certificat obtenu, il suffit de rajouter dans main.cf :

 smtpd_tls_cert_file = /chemin/vers/certificat
 smtpd_tls_key_file = /chemin/vers/cle
 smtpd_use_tls = yes

Ceci suffit pour activer STARTTLS. Nous pouvons choisir le niveau de verbosité des logs :

 smtpd_tls_loglevel = 0

*0 : Désactive l'enregistrement de l'activité TLS.
*1 : Enregistre les informations de négociation TLS et des certificats.
*2 : Enregistre les niveaux durant la négociation TLS.
*3 : Retranscrit en hexadecimal et ASCII le processus de négotiation TLS
*4 : Retranscrit en hexadecimal et ASCII toute la transmission après STARTTLS

Enfin, il est possible d'interdire l'authentification SASL en clair avec :

 smtpd_tls_auth_only = yes


= Ressources =
* {{en}} http://www.postfix.org/documentation.html
* {{fr}} [http://x.guimard.free.fr/postfix/ Documentation très complète sur Postfix]
La traduction française n'est pas à jour, mais reste largement suffisante dans la plupart des cas.

[[Catégorie:Serveurs]]</text>
      <sha1>dht5j7vhcz04vkbkl8cl7f6igfjlif4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5547</id>
      <parentid>5546</parentid>
      <timestamp>2014-02-23T11:36:46Z</timestamp>
      <contributor>
        <username>Agentsteel</username>
        <id>260</id>
      </contributor>
      <comment>/* Ressources */  correction lien postfix en français</comment>
      <text xml:space="preserve" bytes="20549">= Configuration d'un [[Installé sur::serveur]] mail avec postfix  =

Vous ne voulez plus confier vos mails à Gmail, Yahoo ou Hotmail ? 

Vous aimeriez héberger vos mails chez vous mais vous pensez que c'est trop dur, trop compliqué ? 

Vous pensez qu'il faut être ingénieur pour monter un serveur mail ? 

Que nenni !! Nous allons voir dans ce tuto la mise en place d'un serveur mail avec Postfix dans le cadre d'une utilisation personnelle. 

Il ne s'agit pas ici de concurrencer Gmail ou Yahoo mais bien d'avoir notre petite boîte mail bien à nous. Faite avec amour. Et qui marche !! 

Ici, pas de gestion par base SQL ou annuaire LDAP, je vais tâcher de faire le plus simple possible. 

C'est parti !!

= Une adresse mail, c'est quoi ?  =

== kevin@wanadoo.fr  ==

Une adresse mail, c'est un peu comme une adresse postale. Elle se divise en 2 parties&amp;nbsp;: 

*un domaine&amp;nbsp;: '''wanadoo.fr''' 
*un utilisateur&amp;nbsp;: '''kevin'''

Dans mon exemple, lorsque l'on écrit à Kevin via l'adresse '''kevin@wanadoo.fr''', cela signifie que l'on écrit à l'utilisateur '''kevin''' du domaine '''wanadoo.fr'''. 

Plus précisément, le mail arrive sur la '''machine''' sur laquelle se trouve le '''serveur mail''' de wanadoo.fr, pour être ensuite remis dans la '''boîte mail''' de l'utilisateur kevin. 

== Identifier le serveur mail de wanadoo.fr  ==

Wanadoo.fr, c'est le domaine. Le service mail se trouve quant à lui sur une machine bien precise. Pour l'identifier, une commande bien pratique&amp;nbsp;: 

 $ host -t MX wanadoo.fr
 wanadoo.fr mail is handled by 10 smtp.wanadoo.fr.

'''smtp''' est un ''sous-domaine'' de '''wanadoo.fr''', et la machine sur laquelle se trouve le serveur mail se nomme justement '''smtp.wanadoo.fr'''… 

 $ ping smtp.wanadoo.fr
 PING smtp.wanadoo.fr (80.12.242.142) 56(84) bytes of data.

… et son adresse IP est '''80.12.242.142'''. 

Dans la réalité, l'architecture mail de Wanadoo (Orange maintenant…) est je pense un peu plus compliquée que ça mais ça donne une bonne image de ce que nous allons reproduire pour notre serveur mail. 

= Prérequis  =

Pour avoir son serveur mail, il faut donc&amp;nbsp;: 

*un nom de domaine 
*une IP fixe 
*un PC allumé si possible 24h/24

Pourquoi une IP fixe&amp;nbsp;? Les mails doivent pouvoir toujours trouver le serveur mail, c'est pourquoi l'IP doit être fixe. 

L'association nom de domaine ⇔ adresse IP se règle au niveau du serveur DNS. C'est celui-ci que nous allons régler en premier. 

== Configurer le serveur DNS  ==

Cette partie se révèle souvent être une prise de tête pour les apprentis auto-hébergés. 

On doit spécifier dans le serveur DNS sur quelle IP on peut joindre le serveur mail. 

La plupart des registrars (les marchands de noms de domaine) fournissent une interface simplifiée pour le serveur DNS. 

Un exemple de configuration pour un domaine acheté chez Gandi.net

=== Le champ A  ===

Il faut tout d'abord configurer le champ '''A''' qui fait le lien entre nom de domaine et l'adresse IP du serveur&amp;nbsp;: 

 @       IN    A    12.34.56.78 
 smtp    IN    A    12.34.56.78

'''@'''&amp;nbsp;: signifie que '''monDomaine.com''' est lié à l'IP 12.34.56.78 

'''smtp'''&amp;nbsp;: signifie que le sous-domaine '''smtp.monDomaine.com''' est lui aussi lié à l'IP 12.34.56.78 

Vous pouvez indiquer des adresses IP différentes si vous possédez plusieurs serveurs et plusieurs IP. 

=== Le champ MX  ===

Une fois que le champ '''A''' est complété, il faut pour définir le serveur mail s'occuper du champ '''MX''' ('''M'''ail e'''X'''change). 

Nous allons convenir que le serveur mail correspond au serveur '''smtp.monDomaine.com'''. Son adresse IP ayant déjà été définie par le champ '''A''', le champ '''MX''' s'écrit sous cette forme&amp;nbsp;: 

 monDomaine.com.    IN    MX    10    smtp

Ce qui signifie que '''smtp''' du champ '''A''' sera le serveur '''MX''' de '''monDomaine.com'''. 

Vous suivez toujours&amp;nbsp;?? 

Lorsque vous enverrez des mails sur le domaine '''monDomaine.com''', ils seront automatiquement acheminés vers le serveur '''smtp.monDomaine.com'''. 

'''''Important&amp;nbsp;:''''' 

*Un champ '''MX''' se définit toujours sur un champ '''A''', pas sur un '''CNAME''' (non abordé ici) 
*Ne pas oublier le point après monDomaine.com.

=== Un exemple de configuration de DNS chez gandi.net ===

[[Fichier:Gandi.jpeg]]

Ce qui donne en mode &quot;expert&quot;

 smtp 300 IN A 41.188.26.122 
 @ 28800 IN MX 10 smtp 
 www 10800 IN A 41.188.26.122

=== Configuration chez OVH ===

Rendez-vous sur votre &quot;manager&quot; puis cliquez sur &quot;Domaines &amp; DNS&quot;.
Dans la rubrique &quot;Zone DNS&quot; du domaine concerné, effacez les champs MX existants puis cliquez sur 'Type A&quot; et ajoutez un champ comme ci-dessous :

 sous-domaine: mail2.votre_domaine.com

Sélectionner une IP : adresse_IP_du_serveur_de_mail

Cliquez sur &quot;Validez&quot; pour confirmer l'operation. Ensuite, choisissez 'Type MX&quot; et ajoutez un champ comme ci-dessous :

 Sous-domaine : votre_domaine.com

 Destination: mail2.votre_domaine.com

Cliquez sur &quot;Validez&quot; pour confirmer l'operation. Si la création du champ MX ne passe pas, recommencez en cochant la case &quot;forcer l'opération&quot;. Les changements sont pris en compte le lendemain matin et vos mails seront redirigés vers votre serveur mail.

[http://guides.ovh.com/VotreServeurMail Source]

== Vérifications  ==

Avant même d'installer et configurer son serveur, il faut faire quelques vérifications (après avoir installé bind9-host). 

 $ host -t MX monDomaine.com

Cette commande doit retourner une ligne de ce genre&amp;nbsp;: 

 monDomaine.com mail is handled by 10 smtp.monDomaine.com

Bien sûr, ''smtp.monDomaine.com'' doit être associé à votre IP fixe (ici '''12.34.56.78''')&amp;nbsp;: 

 $ ping smtp.monDomaine.com
 PING smtp.monDomaine.com (12.34.56.78) 56(84) bytes of data.

Si ces 2 vérifications ne fonctionnent pas, '''ce n'est pas la peine d'aller plus loin''', votre serveur DNS est mal configuré.

=== Vérification si vous disposez d'un DNS local ===

Au cas ou vous disposeriez d'un DNS sur votre réseau local, pensez à vérifier sur un DNS externe...

 $ host -t MX monDomaine.com DNS_Externe

C'est le seul moyen d'être certain que &quot;le monde extérieur&quot; saura ou vous envoyer vos mails...

= Ouverture des ports  =

Si votre serveur se trouve derrière une *box, il ne pourra pas communiquer avec le monde extérieur. Il nous faut '''ouvrir des ports'''. 

Votre *box possède une '''IP fixe publique''', c'est l'IP que vous avez normalement renseignée dans votre serveur DNS. 

Derrière votre *box, il y a votre serveur mail qui lui possède également une adresse IP, '''privée'''. Les adresses privées sont en général 192.168.0.xxx ou 192.168.1.xxx. 

Admettons que votre serveur ait comme IP 192.168.0.25 dans votre réseau privé. Il faut alors que votre *box redirige toutes les requètes mail vers l'IP privée 192.168.0.25. 

Les ports à ouvrir sont&amp;nbsp;: 

*25&amp;nbsp;: pour que le serveur réceptionne les mails 
*110&amp;nbsp;: pour relever ses mails via POP 
*143&amp;nbsp;: pour relever ses mails via IMAP

Tous ces ports sont à ouvrir en '''TCP'''. 

Freebox&amp;nbsp;: [http://www.dslvalley.com/dossiers/freebox/freebox-nat.php http://www.dslvalley.com/dossiers/freebox/freebox-nat.php] 

NeufBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php] (fin de page) 

LiveBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/orange/livebox-emule.php http://www.dslvalley.com/dossiers/orange/livebox-emule.php] (fin de page)

= Installation de postfix  =

Votre DNS est correctement configuré&amp;nbsp;? Les ports sont ouverts&amp;nbsp;? Bien. Vous avez fait le plus dur. 

Vérifiez le nom de votre machine&amp;nbsp;: 

 $ hostname

Cette commande doit vous retourner '''smtp.monDomaine.com'''. Si ce n'est pas le cas, éditez le fichier '''/etc/hosts''' et vérifiez que vous avez une ligne comme suit&amp;nbsp;: 

 127.0.0.1 smtp.monDomaine.com smtp

Puis&amp;nbsp;: 

 &lt;nowiki&gt;# hostname smtp.monDomaine.com&lt;/nowiki&gt;

Normalement, le hostname est maintenant OK. 

Il est important que le '''hostname''' de votre machine soit le même que celui retourné par la commande '''host -t MX monDomaine.com''', sinon Postfix posera des problèmes. 

Installons postfix&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install postfix&lt;/nowiki&gt;

Choisissez la configuration '''Internet Site'''. Indiquez ensuite le nom de votre machine&amp;nbsp;: '''smtp.monDomaine.com''' (correspond au ''hostname'') 

Au cas où vous voudriez recommencer&amp;nbsp;: 

 &lt;nowiki&gt;# dpkg-reconfigure postfix&lt;/nowiki&gt;

= Configuration  =

Le fichier de configuration de postfix est '''/etc/postfix/main.cf'''. Il est par défaut très bien sécurisé. 

Nous allons dans un premier temps y ajouter cette ligne&amp;nbsp;: 

 home_mailbox = Maildir/

Cette ligne dit à postfix que les mails des utilisateurs doivent aller dans un répertoire nommé Maildir. 

Commentez (ajoutez un #) la ligne où se trouve '''mailbox_command''' pour que procmail ne soit pas utilisé (en tout cas pas pour le moment): 

 &lt;nowiki&gt;#mailbox_command = procmail -a &quot;$EXTENSION&quot;&lt;/nowiki&gt;

Pour que la modification soit prise en compte, redémarrez postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

= Création d'un nouveau mail  =

Bien. Vous avez votre domaine, votre serveur mail tourne. Créer une adresse mail est très simple. Il suffit d'ajouter un utilisateur&amp;nbsp;!! 

Vous voulez créer une adresse kevin@monDomaine.com&amp;nbsp;? Ajoutez l'utilisateur kevin sur votre machine&amp;nbsp;: 

 &lt;nowiki&gt;# adduser kevin&lt;/nowiki&gt;

Répondez aux questions, choisissez un mot de passe à kevin et c'est tout. 

= Tester l'adresse en local  =

Nous allons envoyer un mail à Kevin, vérifions que le paquet '''mailx''' est installé&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install mailx&lt;/nowiki&gt;

On envoie le mail&amp;nbsp;: 

 &lt;nowiki&gt;# echo &quot;Le contenu du mail&quot; | mail -s &quot;ceci est le sujet&quot; kevin@monDomaine.com&lt;/nowiki&gt;

Le mail sera automatiquement déposé dans le répertoire '''Maildir''' situé dans le home de kevin. S'il n'existe pas, le dossier '''Maildir''' sera automatiquement créé. 

 &lt;nowiki&gt;# ls /home/kevin&lt;/nowiki&gt;
 Maildir

N'hésitez pas à consulter les logs pour voir tout ce qui se passe sur votre serveur mail&amp;nbsp;: 

 &lt;nowiki&gt;# cat /var/log/mail.log&lt;/nowiki&gt;

= Kevin veut lire ses mails&amp;nbsp;!!  =

Envoyer des mails, c'est bien mais pouvoir les lire, c'est mieux&amp;nbsp;!! Pour que Kevin puisse lire ses mails dans un client comme '''Mozilla Thunderbird''', c'est tout simple&amp;nbsp;: 

Kevin veut réceptionner ces mails via IMAP&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-imapd&lt;/nowiki&gt;

Il préfère POP3&amp;nbsp;? Pas de problèmes&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-pop3d&lt;/nowiki&gt;

C'est tout, vous pouvez maintenant utiliser votre client mail favori pour réceptionner vos mails. 

Serveur&amp;nbsp;: '''smtp.monDomaine.com''' 

Login&amp;nbsp;: '''kevin''' 

Password&amp;nbsp;: '''le password défini lors de la création de l'utilisateur kevin''' 

= Kevin veut envoyer des mails&amp;nbsp;!!  =

Kevin est content, il peut lire ses mails. Seulement, il aimerait répondre à ses amis mais il ne peut pas. 

== Utiliser le SMTP de son FAI  ==

Postfix possède son propre service SMTP, mais ce dernier sera généralement bloqué. Pour limiter les envois de SPAMS, les FAI bloquent généralement l'envoi de mails. 

Pour que votre serveur mail puisse envoyer des mails, il faut lui dire d'utiliser le SMTP de votre FAI. C'est le paramètre '''relayhost''' du fichier de configuration '''/etc/postfix/main.cf''' qu'il faut modifier&amp;nbsp;: 

 relayhost = smtp.votreFAI.com

Principaux SMTP français&amp;nbsp;: 

 Orange&amp;nbsp;: smtp.orange.fr
 Free&amp;nbsp;: smtp.free.fr
 Neuf&amp;nbsp;: smtp.neuf.fr

== Utiliser le SMTP de Postfix  ==

Cependant, certains FAI (comme Free) permettent de lever ce blocage via une option dans leur panel de gestion. 

Dans ce cas, plus besoin du '''relayhost'''. Vos mails ne passeront plus par votre FAI, c'est VOTRE serveur qui enverra directement les mails. 

Le problème est que les mails que vous enverrez vers les boîtes '''Yahoo''' seront classées en tant que SPAM. '''AOL''' ne voudra pas de vos mails (ce sera explicitement marqué dans les logs). Quant à '''Hotmail''', les logs vous diront que les mails ont bien été reçus, mais vos correspondants ne les recevront jamais. '''Gmail''' ne pose quant à lui aucun souci. 

Vous voulez utiliser le plus possible votre propre SMTP mais vous voulez quand même pouvoir envoyer des mails vers vos potes restés chez Hotmail&amp;nbsp;? 

Créez un fichier '''/etc/postfix/transport''' avec ce contenu&amp;nbsp;: 

 hotmail.fr    smtp:smtp.free.fr
 hotmail.com   smtp:smtp.free.fr
 yahoo.fr      smtp:smtp.free.fr
 yahoo.com     smtp:smtp.free.fr

Ce fichier dit à postfix que pour les domaines hotmail.fr, hotmail.com, yahoo, etc., il utilisera le SMTP de free. Pour tous les autres domaine, il utilisera le smtp local. A vous d'adapter ce fichier en fonction des domaines qui ne veulent pas de vous. 

Bien sûr, si vous n'êtes pas abonné Free, vous ne pourrez pas utiliser le SMTP de Free. 

Pour que Postfix prenne en compte ce fichier, exécutez cette commande&amp;nbsp;: 

 &lt;nowiki&gt;# postmap /etc/postfix/transport&lt;/nowiki&gt;

Puis relancez Postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

A chaque fois que vous modifierez '''/etc/postfix/transport''', n'oubliez pas d'executer la commande précédente (postmap).

== Login... Passwd...  ==

Actuellement, postfix n'accepte d'envoyer les mails que s'ils sont envoyés depuis le serveur mail. Vous avez sûrement l'habitude d'envoyer les mails depuis un autre PC. Généralement, le SMTP demande un login, un password et envoie vos mails. 

C'est ce que nous allons régler maintenant. 

Problème&amp;nbsp;: Postfix seul ne fournit pas de service d'identification. Il doit utiliser un serveur SASL externe. 

Solution&amp;nbsp;: Dovecot, que nous avons précédemment installé pour la réception de mails (IMAP-POP3) peut faire office de serveur SASL. 

=== Sous Debian Squeeze (6.0) avec Dovecot 1.x ===

Pour activer ce service, dans le fichier de configuration '''/etc/dovecot/dovecot.conf''', ajoutez (ou décommentez) ceci dans la section auth default { }&amp;nbsp;: 

 auth default {
 …
 socket listen {
   client {
     path  &lt;nowiki&gt;= /var/spool/postfix/private/auth&lt;/nowiki&gt;
    group = postfix
    mode  &lt;nowiki&gt;= 0660&lt;/nowiki&gt;
  }
 }
 …

=== Sous Debian Wheezy (7.0) avec Dovecot 2.x ===

Les fichiers de configuration sont séparés. Lire la documentation (obligatoire en cas de migration Squeeze -&gt; Wheezy!)
&lt;code&gt;zless /usr/share/doc/dovecot-core/README.Debian.gz&lt;/code&gt;


Le fichier de configuration à modifier est : '''/etc/dovecot/conf.d/10-master.conf'''

&lt;code&gt;
  service auth {
  ...
  # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth {
    mode = 0660
        user=postfix
        group=postfix
  }

  # Auth process is run as this user.
  #user = $default_internal_user
 }
 ...
&lt;/code&gt;


Il s'agit pour Dovecot de créer un socket Unix, sur lequel il écoutera les demandes d'identification provenant de Postfix. Comme le service SMTP de Postfix est chrooté (emprisonné) dans le répertoire '''/var/spool/postfix/''', il faut placer ce socket sous ce répertoire, ce qui se fera automatiquement en relançant Dovecot avec la commande :             

 &lt;nowiki&gt;# /etc/init.d/dovecot restart&lt;/nowiki&gt;

Dovecot accepte l'identification mais Postfix ne le sait pas&amp;nbsp;!! Il faut lui dire (ajoutez dans '''/etc/postfix/main.cf''')&amp;nbsp;: 

 &lt;nowiki&gt;# Activer l'identification SASL&lt;/nowiki&gt;
 smtpd_sasl_auth_enable = yes

 &lt;nowiki&gt;# Utiliser le service d'identification de Dovecot&lt;/nowiki&gt;
 smtpd_sasl_type = dovecot
 smtpd_sasl_path = private/auth

 &lt;nowiki&gt;# Noter dans les en-tête des messages l'identifiant de l'utilisateur.&lt;/nowiki&gt;
 smtpd_sasl_authenticated_header = yes

Profitons-en pour peaufiner le fichier de configuration de postfix '''/etc/postfix/main.cf'''&amp;nbsp;: 

 &lt;nowiki&gt;# Règles pour accepter ou refuser une connexion :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on attend une seconde (pour piéger les zombies) ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on interdit la parallélisation là où il n'est pas sensé y en avoir.&lt;/nowiki&gt;
 smtpd_client_restrictions =
    permit_mynetworks, permit_sasl_authenticated,
    sleep 1, reject_unauth_pipelining

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le nom&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'hôte de l'expéditeur (par sa commande HELO ou EHLO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on refuse les noms d'hôte invalides.&lt;/nowiki&gt;
 smtpd_helo_restrictions = reject_invalid_helo_hostname

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît l'adresse&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'expéditeur :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un expéditeur inexistant de notre domaine, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si le domaine de l'expéditeur n'a pas d'IP ou de MX, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un client sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de l'expéditeur n'est pas sous forme canonique, on le refuse.&lt;/nowiki&gt;
 smtpd_sender_restrictions =
    reject_unlisted_sender, reject_unknown_sender_domain,
    permit_mynetworks, permit_sasl_authenticated,
    reject_non_fqdn_sender

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le&lt;/nowiki&gt;
 &lt;nowiki&gt;# destinataire (par la commande RCPT TO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un expéditeur forgé chez nous, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un domaine forgé, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un hôte sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de destination n'est pas sous forme canonique, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - finalement, s'il n'est pas destiné à un domaine que l'on gère ou pour&lt;/nowiki&gt;
 &lt;nowiki&gt;# &lt;/nowiki&gt;  lequel on relaie, on le refuse.
 smtpd_recipient_restrictions =
     reject_unlisted_recipient, reject_unknown_recipient_domain,
     permit_mynetworks, permit_sasl_authenticated,
     reject_non_fqdn_recipient,
     reject_unauth_destination

Allez, on relance postfix pour qu'il prenne en compte tout ça&amp;nbsp;: 

 /etc/init.d/postfix restart


Important il faut vérifier que tout se passe bien dans les log de dovecot.
tail -f permet de voir les nouvelle entrées en &quot;direct&quot; donc dans une console lancer.
 &lt;nowiki&gt;#tail -f /var/log/dovecot-info.log &lt;/nowiki&gt;
Relever le courier  avec ce qui vous convient.
Et si vous avez quelque chose qui ressemble à ceci:
 &lt;nowiki&gt;#Error: mail_location not set and autodetection failed: Mail storage autodetection failed with home=/home/votreutilisateur &lt;/nowiki&gt;
il faut modifier le fichier de configuration de Dovecot
et vérifier que vous avez bien:
 &lt;nowiki&gt;mail_location = maildir:~/Maildir&lt;/nowiki&gt;

== Chiffrement STARTTLS ==

Nous pouvons rajouter le support de STARTTLS, ce qui permet à un moment donné de chiffrer la connexion avec Postfix.
L'avantage est que l'on peut alors chiffrer l'authentification SASL pour que le mot de passe n'apparaisse pas en clair.
On peut aussi chiffrer le contenu des messages, mais pour celà il est plus intéressant de s'orienter vers GPG ou S/MIME, afin de s'assurer que le message reste chiffré d'un bout à l'autre entre l'expéditeur et le destinataire.

Pour pouvoir utiliser STARTTLS, il nous faut un [[openssl|certificat SSL]]. Une fois le certificat obtenu, il suffit de rajouter dans main.cf :

 smtpd_tls_cert_file = /chemin/vers/certificat
 smtpd_tls_key_file = /chemin/vers/cle
 smtpd_use_tls = yes

Ceci suffit pour activer STARTTLS. Nous pouvons choisir le niveau de verbosité des logs :

 smtpd_tls_loglevel = 0

*0 : Désactive l'enregistrement de l'activité TLS.
*1 : Enregistre les informations de négociation TLS et des certificats.
*2 : Enregistre les niveaux durant la négociation TLS.
*3 : Retranscrit en hexadecimal et ASCII le processus de négotiation TLS
*4 : Retranscrit en hexadecimal et ASCII toute la transmission après STARTTLS

Enfin, il est possible d'interdire l'authentification SASL en clair avec :

 smtpd_tls_auth_only = yes


= Ressources =
* {{fr}} [http://postfix.traduc.org/ Traduction française de la documentation de Postfix]
* {{en}} [http://www.postfix.org/documentation.html Documentation originale de Postfix]
* {{en}} [http://wiki2.dovecot.org/ Wiki officiel de Dovecot 2.x]

[[Catégorie:Serveurs]]</text>
      <sha1>0wd3wvon9nwh73srm2o63mirorja2rm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5548</id>
      <parentid>5547</parentid>
      <timestamp>2014-02-23T11:39:18Z</timestamp>
      <contributor>
        <username>Agentsteel</username>
        <id>260</id>
      </contributor>
      <minor/>
      <comment>/* Login... Passwd... */  ajout lien wiki dovecot</comment>
      <text xml:space="preserve" bytes="20649">= Configuration d'un [[Installé sur::serveur]] mail avec postfix  =

Vous ne voulez plus confier vos mails à Gmail, Yahoo ou Hotmail ? 

Vous aimeriez héberger vos mails chez vous mais vous pensez que c'est trop dur, trop compliqué ? 

Vous pensez qu'il faut être ingénieur pour monter un serveur mail ? 

Que nenni !! Nous allons voir dans ce tuto la mise en place d'un serveur mail avec Postfix dans le cadre d'une utilisation personnelle. 

Il ne s'agit pas ici de concurrencer Gmail ou Yahoo mais bien d'avoir notre petite boîte mail bien à nous. Faite avec amour. Et qui marche !! 

Ici, pas de gestion par base SQL ou annuaire LDAP, je vais tâcher de faire le plus simple possible. 

C'est parti !!

= Une adresse mail, c'est quoi ?  =

== kevin@wanadoo.fr  ==

Une adresse mail, c'est un peu comme une adresse postale. Elle se divise en 2 parties&amp;nbsp;: 

*un domaine&amp;nbsp;: '''wanadoo.fr''' 
*un utilisateur&amp;nbsp;: '''kevin'''

Dans mon exemple, lorsque l'on écrit à Kevin via l'adresse '''kevin@wanadoo.fr''', cela signifie que l'on écrit à l'utilisateur '''kevin''' du domaine '''wanadoo.fr'''. 

Plus précisément, le mail arrive sur la '''machine''' sur laquelle se trouve le '''serveur mail''' de wanadoo.fr, pour être ensuite remis dans la '''boîte mail''' de l'utilisateur kevin. 

== Identifier le serveur mail de wanadoo.fr  ==

Wanadoo.fr, c'est le domaine. Le service mail se trouve quant à lui sur une machine bien precise. Pour l'identifier, une commande bien pratique&amp;nbsp;: 

 $ host -t MX wanadoo.fr
 wanadoo.fr mail is handled by 10 smtp.wanadoo.fr.

'''smtp''' est un ''sous-domaine'' de '''wanadoo.fr''', et la machine sur laquelle se trouve le serveur mail se nomme justement '''smtp.wanadoo.fr'''… 

 $ ping smtp.wanadoo.fr
 PING smtp.wanadoo.fr (80.12.242.142) 56(84) bytes of data.

… et son adresse IP est '''80.12.242.142'''. 

Dans la réalité, l'architecture mail de Wanadoo (Orange maintenant…) est je pense un peu plus compliquée que ça mais ça donne une bonne image de ce que nous allons reproduire pour notre serveur mail. 

= Prérequis  =

Pour avoir son serveur mail, il faut donc&amp;nbsp;: 

*un nom de domaine 
*une IP fixe 
*un PC allumé si possible 24h/24

Pourquoi une IP fixe&amp;nbsp;? Les mails doivent pouvoir toujours trouver le serveur mail, c'est pourquoi l'IP doit être fixe. 

L'association nom de domaine ⇔ adresse IP se règle au niveau du serveur DNS. C'est celui-ci que nous allons régler en premier. 

== Configurer le serveur DNS  ==

Cette partie se révèle souvent être une prise de tête pour les apprentis auto-hébergés. 

On doit spécifier dans le serveur DNS sur quelle IP on peut joindre le serveur mail. 

La plupart des registrars (les marchands de noms de domaine) fournissent une interface simplifiée pour le serveur DNS. 

Un exemple de configuration pour un domaine acheté chez Gandi.net

=== Le champ A  ===

Il faut tout d'abord configurer le champ '''A''' qui fait le lien entre nom de domaine et l'adresse IP du serveur&amp;nbsp;: 

 @       IN    A    12.34.56.78 
 smtp    IN    A    12.34.56.78

'''@'''&amp;nbsp;: signifie que '''monDomaine.com''' est lié à l'IP 12.34.56.78 

'''smtp'''&amp;nbsp;: signifie que le sous-domaine '''smtp.monDomaine.com''' est lui aussi lié à l'IP 12.34.56.78 

Vous pouvez indiquer des adresses IP différentes si vous possédez plusieurs serveurs et plusieurs IP. 

=== Le champ MX  ===

Une fois que le champ '''A''' est complété, il faut pour définir le serveur mail s'occuper du champ '''MX''' ('''M'''ail e'''X'''change). 

Nous allons convenir que le serveur mail correspond au serveur '''smtp.monDomaine.com'''. Son adresse IP ayant déjà été définie par le champ '''A''', le champ '''MX''' s'écrit sous cette forme&amp;nbsp;: 

 monDomaine.com.    IN    MX    10    smtp

Ce qui signifie que '''smtp''' du champ '''A''' sera le serveur '''MX''' de '''monDomaine.com'''. 

Vous suivez toujours&amp;nbsp;?? 

Lorsque vous enverrez des mails sur le domaine '''monDomaine.com''', ils seront automatiquement acheminés vers le serveur '''smtp.monDomaine.com'''. 

'''''Important&amp;nbsp;:''''' 

*Un champ '''MX''' se définit toujours sur un champ '''A''', pas sur un '''CNAME''' (non abordé ici) 
*Ne pas oublier le point après monDomaine.com.

=== Un exemple de configuration de DNS chez gandi.net ===

[[Fichier:Gandi.jpeg]]

Ce qui donne en mode &quot;expert&quot;

 smtp 300 IN A 41.188.26.122 
 @ 28800 IN MX 10 smtp 
 www 10800 IN A 41.188.26.122

=== Configuration chez OVH ===

Rendez-vous sur votre &quot;manager&quot; puis cliquez sur &quot;Domaines &amp; DNS&quot;.
Dans la rubrique &quot;Zone DNS&quot; du domaine concerné, effacez les champs MX existants puis cliquez sur 'Type A&quot; et ajoutez un champ comme ci-dessous :

 sous-domaine: mail2.votre_domaine.com

Sélectionner une IP : adresse_IP_du_serveur_de_mail

Cliquez sur &quot;Validez&quot; pour confirmer l'operation. Ensuite, choisissez 'Type MX&quot; et ajoutez un champ comme ci-dessous :

 Sous-domaine : votre_domaine.com

 Destination: mail2.votre_domaine.com

Cliquez sur &quot;Validez&quot; pour confirmer l'operation. Si la création du champ MX ne passe pas, recommencez en cochant la case &quot;forcer l'opération&quot;. Les changements sont pris en compte le lendemain matin et vos mails seront redirigés vers votre serveur mail.

[http://guides.ovh.com/VotreServeurMail Source]

== Vérifications  ==

Avant même d'installer et configurer son serveur, il faut faire quelques vérifications (après avoir installé bind9-host). 

 $ host -t MX monDomaine.com

Cette commande doit retourner une ligne de ce genre&amp;nbsp;: 

 monDomaine.com mail is handled by 10 smtp.monDomaine.com

Bien sûr, ''smtp.monDomaine.com'' doit être associé à votre IP fixe (ici '''12.34.56.78''')&amp;nbsp;: 

 $ ping smtp.monDomaine.com
 PING smtp.monDomaine.com (12.34.56.78) 56(84) bytes of data.

Si ces 2 vérifications ne fonctionnent pas, '''ce n'est pas la peine d'aller plus loin''', votre serveur DNS est mal configuré.

=== Vérification si vous disposez d'un DNS local ===

Au cas ou vous disposeriez d'un DNS sur votre réseau local, pensez à vérifier sur un DNS externe...

 $ host -t MX monDomaine.com DNS_Externe

C'est le seul moyen d'être certain que &quot;le monde extérieur&quot; saura ou vous envoyer vos mails...

= Ouverture des ports  =

Si votre serveur se trouve derrière une *box, il ne pourra pas communiquer avec le monde extérieur. Il nous faut '''ouvrir des ports'''. 

Votre *box possède une '''IP fixe publique''', c'est l'IP que vous avez normalement renseignée dans votre serveur DNS. 

Derrière votre *box, il y a votre serveur mail qui lui possède également une adresse IP, '''privée'''. Les adresses privées sont en général 192.168.0.xxx ou 192.168.1.xxx. 

Admettons que votre serveur ait comme IP 192.168.0.25 dans votre réseau privé. Il faut alors que votre *box redirige toutes les requètes mail vers l'IP privée 192.168.0.25. 

Les ports à ouvrir sont&amp;nbsp;: 

*25&amp;nbsp;: pour que le serveur réceptionne les mails 
*110&amp;nbsp;: pour relever ses mails via POP 
*143&amp;nbsp;: pour relever ses mails via IMAP

Tous ces ports sont à ouvrir en '''TCP'''. 

Freebox&amp;nbsp;: [http://www.dslvalley.com/dossiers/freebox/freebox-nat.php http://www.dslvalley.com/dossiers/freebox/freebox-nat.php] 

NeufBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php] (fin de page) 

LiveBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/orange/livebox-emule.php http://www.dslvalley.com/dossiers/orange/livebox-emule.php] (fin de page)

= Installation de postfix  =

Votre DNS est correctement configuré&amp;nbsp;? Les ports sont ouverts&amp;nbsp;? Bien. Vous avez fait le plus dur. 

Vérifiez le nom de votre machine&amp;nbsp;: 

 $ hostname

Cette commande doit vous retourner '''smtp.monDomaine.com'''. Si ce n'est pas le cas, éditez le fichier '''/etc/hosts''' et vérifiez que vous avez une ligne comme suit&amp;nbsp;: 

 127.0.0.1 smtp.monDomaine.com smtp

Puis&amp;nbsp;: 

 &lt;nowiki&gt;# hostname smtp.monDomaine.com&lt;/nowiki&gt;

Normalement, le hostname est maintenant OK. 

Il est important que le '''hostname''' de votre machine soit le même que celui retourné par la commande '''host -t MX monDomaine.com''', sinon Postfix posera des problèmes. 

Installons postfix&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install postfix&lt;/nowiki&gt;

Choisissez la configuration '''Internet Site'''. Indiquez ensuite le nom de votre machine&amp;nbsp;: '''smtp.monDomaine.com''' (correspond au ''hostname'') 

Au cas où vous voudriez recommencer&amp;nbsp;: 

 &lt;nowiki&gt;# dpkg-reconfigure postfix&lt;/nowiki&gt;

= Configuration  =

Le fichier de configuration de postfix est '''/etc/postfix/main.cf'''. Il est par défaut très bien sécurisé. 

Nous allons dans un premier temps y ajouter cette ligne&amp;nbsp;: 

 home_mailbox = Maildir/

Cette ligne dit à postfix que les mails des utilisateurs doivent aller dans un répertoire nommé Maildir. 

Commentez (ajoutez un #) la ligne où se trouve '''mailbox_command''' pour que procmail ne soit pas utilisé (en tout cas pas pour le moment): 

 &lt;nowiki&gt;#mailbox_command = procmail -a &quot;$EXTENSION&quot;&lt;/nowiki&gt;

Pour que la modification soit prise en compte, redémarrez postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

= Création d'un nouveau mail  =

Bien. Vous avez votre domaine, votre serveur mail tourne. Créer une adresse mail est très simple. Il suffit d'ajouter un utilisateur&amp;nbsp;!! 

Vous voulez créer une adresse kevin@monDomaine.com&amp;nbsp;? Ajoutez l'utilisateur kevin sur votre machine&amp;nbsp;: 

 &lt;nowiki&gt;# adduser kevin&lt;/nowiki&gt;

Répondez aux questions, choisissez un mot de passe à kevin et c'est tout. 

= Tester l'adresse en local  =

Nous allons envoyer un mail à Kevin, vérifions que le paquet '''mailx''' est installé&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install mailx&lt;/nowiki&gt;

On envoie le mail&amp;nbsp;: 

 &lt;nowiki&gt;# echo &quot;Le contenu du mail&quot; | mail -s &quot;ceci est le sujet&quot; kevin@monDomaine.com&lt;/nowiki&gt;

Le mail sera automatiquement déposé dans le répertoire '''Maildir''' situé dans le home de kevin. S'il n'existe pas, le dossier '''Maildir''' sera automatiquement créé. 

 &lt;nowiki&gt;# ls /home/kevin&lt;/nowiki&gt;
 Maildir

N'hésitez pas à consulter les logs pour voir tout ce qui se passe sur votre serveur mail&amp;nbsp;: 

 &lt;nowiki&gt;# cat /var/log/mail.log&lt;/nowiki&gt;

= Kevin veut lire ses mails&amp;nbsp;!!  =

Envoyer des mails, c'est bien mais pouvoir les lire, c'est mieux&amp;nbsp;!! Pour que Kevin puisse lire ses mails dans un client comme '''Mozilla Thunderbird''', c'est tout simple&amp;nbsp;: 

Kevin veut réceptionner ces mails via IMAP&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-imapd&lt;/nowiki&gt;

Il préfère POP3&amp;nbsp;? Pas de problèmes&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-pop3d&lt;/nowiki&gt;

C'est tout, vous pouvez maintenant utiliser votre client mail favori pour réceptionner vos mails. 

Serveur&amp;nbsp;: '''smtp.monDomaine.com''' 

Login&amp;nbsp;: '''kevin''' 

Password&amp;nbsp;: '''le password défini lors de la création de l'utilisateur kevin''' 

= Kevin veut envoyer des mails&amp;nbsp;!!  =

Kevin est content, il peut lire ses mails. Seulement, il aimerait répondre à ses amis mais il ne peut pas. 

== Utiliser le SMTP de son FAI  ==

Postfix possède son propre service SMTP, mais ce dernier sera généralement bloqué. Pour limiter les envois de SPAMS, les FAI bloquent généralement l'envoi de mails. 

Pour que votre serveur mail puisse envoyer des mails, il faut lui dire d'utiliser le SMTP de votre FAI. C'est le paramètre '''relayhost''' du fichier de configuration '''/etc/postfix/main.cf''' qu'il faut modifier&amp;nbsp;: 

 relayhost = smtp.votreFAI.com

Principaux SMTP français&amp;nbsp;: 

 Orange&amp;nbsp;: smtp.orange.fr
 Free&amp;nbsp;: smtp.free.fr
 Neuf&amp;nbsp;: smtp.neuf.fr

== Utiliser le SMTP de Postfix  ==

Cependant, certains FAI (comme Free) permettent de lever ce blocage via une option dans leur panel de gestion. 

Dans ce cas, plus besoin du '''relayhost'''. Vos mails ne passeront plus par votre FAI, c'est VOTRE serveur qui enverra directement les mails. 

Le problème est que les mails que vous enverrez vers les boîtes '''Yahoo''' seront classées en tant que SPAM. '''AOL''' ne voudra pas de vos mails (ce sera explicitement marqué dans les logs). Quant à '''Hotmail''', les logs vous diront que les mails ont bien été reçus, mais vos correspondants ne les recevront jamais. '''Gmail''' ne pose quant à lui aucun souci. 

Vous voulez utiliser le plus possible votre propre SMTP mais vous voulez quand même pouvoir envoyer des mails vers vos potes restés chez Hotmail&amp;nbsp;? 

Créez un fichier '''/etc/postfix/transport''' avec ce contenu&amp;nbsp;: 

 hotmail.fr    smtp:smtp.free.fr
 hotmail.com   smtp:smtp.free.fr
 yahoo.fr      smtp:smtp.free.fr
 yahoo.com     smtp:smtp.free.fr

Ce fichier dit à postfix que pour les domaines hotmail.fr, hotmail.com, yahoo, etc., il utilisera le SMTP de free. Pour tous les autres domaine, il utilisera le smtp local. A vous d'adapter ce fichier en fonction des domaines qui ne veulent pas de vous. 

Bien sûr, si vous n'êtes pas abonné Free, vous ne pourrez pas utiliser le SMTP de Free. 

Pour que Postfix prenne en compte ce fichier, exécutez cette commande&amp;nbsp;: 

 &lt;nowiki&gt;# postmap /etc/postfix/transport&lt;/nowiki&gt;

Puis relancez Postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

A chaque fois que vous modifierez '''/etc/postfix/transport''', n'oubliez pas d'executer la commande précédente (postmap).

== Login... Passwd...  ==

Actuellement, postfix n'accepte d'envoyer les mails que s'ils sont envoyés depuis le serveur mail. Vous avez sûrement l'habitude d'envoyer les mails depuis un autre PC. Généralement, le SMTP demande un login, un password et envoie vos mails. 

C'est ce que nous allons régler maintenant. 

Problème&amp;nbsp;: Postfix seul ne fournit pas de service d'identification. Il doit utiliser un serveur SASL externe. 

Solution&amp;nbsp;: Dovecot, que nous avons précédemment installé pour la réception de mails (IMAP-POP3) peut faire office de serveur SASL. 


=== Sous Debian Squeeze (6.0) avec Dovecot 1.x ===

Pour activer ce service, dans le fichier de configuration '''/etc/dovecot/dovecot.conf''', ajoutez (ou décommentez) ceci dans la section auth default { }&amp;nbsp;: 

 auth default {
 …
 socket listen {
   client {
     path  &lt;nowiki&gt;= /var/spool/postfix/private/auth&lt;/nowiki&gt;
    group = postfix
    mode  &lt;nowiki&gt;= 0660&lt;/nowiki&gt;
  }
 }
 …

=== Sous Debian Wheezy (7.0) avec Dovecot 2.x ===

Les fichiers de configuration sont séparés. Lire la documentation (obligatoire en cas de migration Squeeze -&gt; Wheezy!)
&lt;code&gt;zless /usr/share/doc/dovecot-core/README.Debian.gz&lt;/code&gt;

Voir aussi le wiki officiel de Dovecot 2.x : http://wiki2.dovecot.org/HowTo/PostfixAndDovecotSASL


Le fichier de configuration à modifier est : '''/etc/dovecot/conf.d/10-master.conf'''

&lt;code&gt;
  service auth {
  ...
  # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth {
    mode = 0660
        user=postfix
        group=postfix
  }

  # Auth process is run as this user.
  #user = $default_internal_user
 }
 ...
&lt;/code&gt;


Il s'agit pour Dovecot de créer un socket Unix, sur lequel il écoutera les demandes d'identification provenant de Postfix. Comme le service SMTP de Postfix est chrooté (emprisonné) dans le répertoire '''/var/spool/postfix/''', il faut placer ce socket sous ce répertoire, ce qui se fera automatiquement en relançant Dovecot avec la commande :             

 &lt;nowiki&gt;# /etc/init.d/dovecot restart&lt;/nowiki&gt;

Dovecot accepte l'identification mais Postfix ne le sait pas&amp;nbsp;!! Il faut lui dire (ajoutez dans '''/etc/postfix/main.cf''')&amp;nbsp;: 

 &lt;nowiki&gt;# Activer l'identification SASL&lt;/nowiki&gt;
 smtpd_sasl_auth_enable = yes

 &lt;nowiki&gt;# Utiliser le service d'identification de Dovecot&lt;/nowiki&gt;
 smtpd_sasl_type = dovecot
 smtpd_sasl_path = private/auth

 &lt;nowiki&gt;# Noter dans les en-tête des messages l'identifiant de l'utilisateur.&lt;/nowiki&gt;
 smtpd_sasl_authenticated_header = yes

Profitons-en pour peaufiner le fichier de configuration de postfix '''/etc/postfix/main.cf'''&amp;nbsp;: 

 &lt;nowiki&gt;# Règles pour accepter ou refuser une connexion :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on attend une seconde (pour piéger les zombies) ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on interdit la parallélisation là où il n'est pas sensé y en avoir.&lt;/nowiki&gt;
 smtpd_client_restrictions =
    permit_mynetworks, permit_sasl_authenticated,
    sleep 1, reject_unauth_pipelining

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le nom&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'hôte de l'expéditeur (par sa commande HELO ou EHLO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on refuse les noms d'hôte invalides.&lt;/nowiki&gt;
 smtpd_helo_restrictions = reject_invalid_helo_hostname

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît l'adresse&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'expéditeur :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un expéditeur inexistant de notre domaine, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si le domaine de l'expéditeur n'a pas d'IP ou de MX, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un client sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de l'expéditeur n'est pas sous forme canonique, on le refuse.&lt;/nowiki&gt;
 smtpd_sender_restrictions =
    reject_unlisted_sender, reject_unknown_sender_domain,
    permit_mynetworks, permit_sasl_authenticated,
    reject_non_fqdn_sender

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le&lt;/nowiki&gt;
 &lt;nowiki&gt;# destinataire (par la commande RCPT TO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un expéditeur forgé chez nous, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un domaine forgé, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un hôte sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de destination n'est pas sous forme canonique, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - finalement, s'il n'est pas destiné à un domaine que l'on gère ou pour&lt;/nowiki&gt;
 &lt;nowiki&gt;# &lt;/nowiki&gt;  lequel on relaie, on le refuse.
 smtpd_recipient_restrictions =
     reject_unlisted_recipient, reject_unknown_recipient_domain,
     permit_mynetworks, permit_sasl_authenticated,
     reject_non_fqdn_recipient,
     reject_unauth_destination

Allez, on relance postfix pour qu'il prenne en compte tout ça&amp;nbsp;: 

 /etc/init.d/postfix restart


Important il faut vérifier que tout se passe bien dans les log de dovecot.
tail -f permet de voir les nouvelle entrées en &quot;direct&quot; donc dans une console lancer.
 &lt;nowiki&gt;#tail -f /var/log/dovecot-info.log &lt;/nowiki&gt;
Relever le courier  avec ce qui vous convient.
Et si vous avez quelque chose qui ressemble à ceci:
 &lt;nowiki&gt;#Error: mail_location not set and autodetection failed: Mail storage autodetection failed with home=/home/votreutilisateur &lt;/nowiki&gt;
il faut modifier le fichier de configuration de Dovecot
et vérifier que vous avez bien:
 &lt;nowiki&gt;mail_location = maildir:~/Maildir&lt;/nowiki&gt;

== Chiffrement STARTTLS ==

Nous pouvons rajouter le support de STARTTLS, ce qui permet à un moment donné de chiffrer la connexion avec Postfix.
L'avantage est que l'on peut alors chiffrer l'authentification SASL pour que le mot de passe n'apparaisse pas en clair.
On peut aussi chiffrer le contenu des messages, mais pour celà il est plus intéressant de s'orienter vers GPG ou S/MIME, afin de s'assurer que le message reste chiffré d'un bout à l'autre entre l'expéditeur et le destinataire.

Pour pouvoir utiliser STARTTLS, il nous faut un [[openssl|certificat SSL]]. Une fois le certificat obtenu, il suffit de rajouter dans main.cf :

 smtpd_tls_cert_file = /chemin/vers/certificat
 smtpd_tls_key_file = /chemin/vers/cle
 smtpd_use_tls = yes

Ceci suffit pour activer STARTTLS. Nous pouvons choisir le niveau de verbosité des logs :

 smtpd_tls_loglevel = 0

*0 : Désactive l'enregistrement de l'activité TLS.
*1 : Enregistre les informations de négociation TLS et des certificats.
*2 : Enregistre les niveaux durant la négociation TLS.
*3 : Retranscrit en hexadecimal et ASCII le processus de négotiation TLS
*4 : Retranscrit en hexadecimal et ASCII toute la transmission après STARTTLS

Enfin, il est possible d'interdire l'authentification SASL en clair avec :

 smtpd_tls_auth_only = yes


= Ressources =
* {{fr}} [http://postfix.traduc.org/ Traduction française de la documentation de Postfix]
* {{en}} [http://www.postfix.org/documentation.html Documentation originale de Postfix]
* {{en}} [http://wiki2.dovecot.org/ Wiki officiel de Dovecot 2.x]

[[Catégorie:Serveurs]]</text>
      <sha1>toug6k23uoo15rbufkgbtkrsy4prnx3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5770</id>
      <parentid>5548</parentid>
      <timestamp>2014-08-20T05:25:43Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Tester l'adresse en local */ chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="20653">= Configuration d'un [[Installé sur::serveur]] mail avec postfix  =

Vous ne voulez plus confier vos mails à Gmail, Yahoo ou Hotmail ? 

Vous aimeriez héberger vos mails chez vous mais vous pensez que c'est trop dur, trop compliqué ? 

Vous pensez qu'il faut être ingénieur pour monter un serveur mail ? 

Que nenni !! Nous allons voir dans ce tuto la mise en place d'un serveur mail avec Postfix dans le cadre d'une utilisation personnelle. 

Il ne s'agit pas ici de concurrencer Gmail ou Yahoo mais bien d'avoir notre petite boîte mail bien à nous. Faite avec amour. Et qui marche !! 

Ici, pas de gestion par base SQL ou annuaire LDAP, je vais tâcher de faire le plus simple possible. 

C'est parti !!

= Une adresse mail, c'est quoi ?  =

== kevin@wanadoo.fr  ==

Une adresse mail, c'est un peu comme une adresse postale. Elle se divise en 2 parties&amp;nbsp;: 

*un domaine&amp;nbsp;: '''wanadoo.fr''' 
*un utilisateur&amp;nbsp;: '''kevin'''

Dans mon exemple, lorsque l'on écrit à Kevin via l'adresse '''kevin@wanadoo.fr''', cela signifie que l'on écrit à l'utilisateur '''kevin''' du domaine '''wanadoo.fr'''. 

Plus précisément, le mail arrive sur la '''machine''' sur laquelle se trouve le '''serveur mail''' de wanadoo.fr, pour être ensuite remis dans la '''boîte mail''' de l'utilisateur kevin. 

== Identifier le serveur mail de wanadoo.fr  ==

Wanadoo.fr, c'est le domaine. Le service mail se trouve quant à lui sur une machine bien precise. Pour l'identifier, une commande bien pratique&amp;nbsp;: 

 $ host -t MX wanadoo.fr
 wanadoo.fr mail is handled by 10 smtp.wanadoo.fr.

'''smtp''' est un ''sous-domaine'' de '''wanadoo.fr''', et la machine sur laquelle se trouve le serveur mail se nomme justement '''smtp.wanadoo.fr'''… 

 $ ping smtp.wanadoo.fr
 PING smtp.wanadoo.fr (80.12.242.142) 56(84) bytes of data.

… et son adresse IP est '''80.12.242.142'''. 

Dans la réalité, l'architecture mail de Wanadoo (Orange maintenant…) est je pense un peu plus compliquée que ça mais ça donne une bonne image de ce que nous allons reproduire pour notre serveur mail. 

= Prérequis  =

Pour avoir son serveur mail, il faut donc&amp;nbsp;: 

*un nom de domaine 
*une IP fixe 
*un PC allumé si possible 24h/24

Pourquoi une IP fixe&amp;nbsp;? Les mails doivent pouvoir toujours trouver le serveur mail, c'est pourquoi l'IP doit être fixe. 

L'association nom de domaine ⇔ adresse IP se règle au niveau du serveur DNS. C'est celui-ci que nous allons régler en premier. 

== Configurer le serveur DNS  ==

Cette partie se révèle souvent être une prise de tête pour les apprentis auto-hébergés. 

On doit spécifier dans le serveur DNS sur quelle IP on peut joindre le serveur mail. 

La plupart des registrars (les marchands de noms de domaine) fournissent une interface simplifiée pour le serveur DNS. 

Un exemple de configuration pour un domaine acheté chez Gandi.net

=== Le champ A  ===

Il faut tout d'abord configurer le champ '''A''' qui fait le lien entre nom de domaine et l'adresse IP du serveur&amp;nbsp;: 

 @       IN    A    12.34.56.78 
 smtp    IN    A    12.34.56.78

'''@'''&amp;nbsp;: signifie que '''monDomaine.com''' est lié à l'IP 12.34.56.78 

'''smtp'''&amp;nbsp;: signifie que le sous-domaine '''smtp.monDomaine.com''' est lui aussi lié à l'IP 12.34.56.78 

Vous pouvez indiquer des adresses IP différentes si vous possédez plusieurs serveurs et plusieurs IP. 

=== Le champ MX  ===

Une fois que le champ '''A''' est complété, il faut pour définir le serveur mail s'occuper du champ '''MX''' ('''M'''ail e'''X'''change). 

Nous allons convenir que le serveur mail correspond au serveur '''smtp.monDomaine.com'''. Son adresse IP ayant déjà été définie par le champ '''A''', le champ '''MX''' s'écrit sous cette forme&amp;nbsp;: 

 monDomaine.com.    IN    MX    10    smtp

Ce qui signifie que '''smtp''' du champ '''A''' sera le serveur '''MX''' de '''monDomaine.com'''. 

Vous suivez toujours&amp;nbsp;?? 

Lorsque vous enverrez des mails sur le domaine '''monDomaine.com''', ils seront automatiquement acheminés vers le serveur '''smtp.monDomaine.com'''. 

'''''Important&amp;nbsp;:''''' 

*Un champ '''MX''' se définit toujours sur un champ '''A''', pas sur un '''CNAME''' (non abordé ici) 
*Ne pas oublier le point après monDomaine.com.

=== Un exemple de configuration de DNS chez gandi.net ===

[[Fichier:Gandi.jpeg]]

Ce qui donne en mode &quot;expert&quot;

 smtp 300 IN A 41.188.26.122 
 @ 28800 IN MX 10 smtp 
 www 10800 IN A 41.188.26.122

=== Configuration chez OVH ===

Rendez-vous sur votre &quot;manager&quot; puis cliquez sur &quot;Domaines &amp; DNS&quot;.
Dans la rubrique &quot;Zone DNS&quot; du domaine concerné, effacez les champs MX existants puis cliquez sur 'Type A&quot; et ajoutez un champ comme ci-dessous :

 sous-domaine: mail2.votre_domaine.com

Sélectionner une IP : adresse_IP_du_serveur_de_mail

Cliquez sur &quot;Validez&quot; pour confirmer l'operation. Ensuite, choisissez 'Type MX&quot; et ajoutez un champ comme ci-dessous :

 Sous-domaine : votre_domaine.com

 Destination: mail2.votre_domaine.com

Cliquez sur &quot;Validez&quot; pour confirmer l'operation. Si la création du champ MX ne passe pas, recommencez en cochant la case &quot;forcer l'opération&quot;. Les changements sont pris en compte le lendemain matin et vos mails seront redirigés vers votre serveur mail.

[http://guides.ovh.com/VotreServeurMail Source]

== Vérifications  ==

Avant même d'installer et configurer son serveur, il faut faire quelques vérifications (après avoir installé bind9-host). 

 $ host -t MX monDomaine.com

Cette commande doit retourner une ligne de ce genre&amp;nbsp;: 

 monDomaine.com mail is handled by 10 smtp.monDomaine.com

Bien sûr, ''smtp.monDomaine.com'' doit être associé à votre IP fixe (ici '''12.34.56.78''')&amp;nbsp;: 

 $ ping smtp.monDomaine.com
 PING smtp.monDomaine.com (12.34.56.78) 56(84) bytes of data.

Si ces 2 vérifications ne fonctionnent pas, '''ce n'est pas la peine d'aller plus loin''', votre serveur DNS est mal configuré.

=== Vérification si vous disposez d'un DNS local ===

Au cas ou vous disposeriez d'un DNS sur votre réseau local, pensez à vérifier sur un DNS externe...

 $ host -t MX monDomaine.com DNS_Externe

C'est le seul moyen d'être certain que &quot;le monde extérieur&quot; saura ou vous envoyer vos mails...

= Ouverture des ports  =

Si votre serveur se trouve derrière une *box, il ne pourra pas communiquer avec le monde extérieur. Il nous faut '''ouvrir des ports'''. 

Votre *box possède une '''IP fixe publique''', c'est l'IP que vous avez normalement renseignée dans votre serveur DNS. 

Derrière votre *box, il y a votre serveur mail qui lui possède également une adresse IP, '''privée'''. Les adresses privées sont en général 192.168.0.xxx ou 192.168.1.xxx. 

Admettons que votre serveur ait comme IP 192.168.0.25 dans votre réseau privé. Il faut alors que votre *box redirige toutes les requètes mail vers l'IP privée 192.168.0.25. 

Les ports à ouvrir sont&amp;nbsp;: 

*25&amp;nbsp;: pour que le serveur réceptionne les mails 
*110&amp;nbsp;: pour relever ses mails via POP 
*143&amp;nbsp;: pour relever ses mails via IMAP

Tous ces ports sont à ouvrir en '''TCP'''. 

Freebox&amp;nbsp;: [http://www.dslvalley.com/dossiers/freebox/freebox-nat.php http://www.dslvalley.com/dossiers/freebox/freebox-nat.php] 

NeufBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php] (fin de page) 

LiveBox&amp;nbsp;: [http://www.dslvalley.com/dossiers/orange/livebox-emule.php http://www.dslvalley.com/dossiers/orange/livebox-emule.php] (fin de page)

= Installation de postfix  =

Votre DNS est correctement configuré&amp;nbsp;? Les ports sont ouverts&amp;nbsp;? Bien. Vous avez fait le plus dur. 

Vérifiez le nom de votre machine&amp;nbsp;: 

 $ hostname

Cette commande doit vous retourner '''smtp.monDomaine.com'''. Si ce n'est pas le cas, éditez le fichier '''/etc/hosts''' et vérifiez que vous avez une ligne comme suit&amp;nbsp;: 

 127.0.0.1 smtp.monDomaine.com smtp

Puis&amp;nbsp;: 

 &lt;nowiki&gt;# hostname smtp.monDomaine.com&lt;/nowiki&gt;

Normalement, le hostname est maintenant OK. 

Il est important que le '''hostname''' de votre machine soit le même que celui retourné par la commande '''host -t MX monDomaine.com''', sinon Postfix posera des problèmes. 

Installons postfix&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install postfix&lt;/nowiki&gt;

Choisissez la configuration '''Internet Site'''. Indiquez ensuite le nom de votre machine&amp;nbsp;: '''smtp.monDomaine.com''' (correspond au ''hostname'') 

Au cas où vous voudriez recommencer&amp;nbsp;: 

 &lt;nowiki&gt;# dpkg-reconfigure postfix&lt;/nowiki&gt;

= Configuration  =

Le fichier de configuration de postfix est '''/etc/postfix/main.cf'''. Il est par défaut très bien sécurisé. 

Nous allons dans un premier temps y ajouter cette ligne&amp;nbsp;: 

 home_mailbox = Maildir/

Cette ligne dit à postfix que les mails des utilisateurs doivent aller dans un répertoire nommé Maildir. 

Commentez (ajoutez un #) la ligne où se trouve '''mailbox_command''' pour que procmail ne soit pas utilisé (en tout cas pas pour le moment): 

 &lt;nowiki&gt;#mailbox_command = procmail -a &quot;$EXTENSION&quot;&lt;/nowiki&gt;

Pour que la modification soit prise en compte, redémarrez postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

= Création d'un nouveau mail  =

Bien. Vous avez votre domaine, votre serveur mail tourne. Créer une adresse mail est très simple. Il suffit d'ajouter un utilisateur&amp;nbsp;!! 

Vous voulez créer une adresse kevin@monDomaine.com&amp;nbsp;? Ajoutez l'utilisateur kevin sur votre machine&amp;nbsp;: 

 &lt;nowiki&gt;# adduser kevin&lt;/nowiki&gt;

Répondez aux questions, choisissez un mot de passe à kevin et c'est tout. 

= Tester l'adresse en local  =

Nous allons envoyer un mail à Kevin, vérifions que le paquet '''mailx''' est installé&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install mailx&lt;/nowiki&gt;

On envoie le mail&amp;nbsp;: 

 &lt;nowiki&gt;# echo &quot;Le contenu du mail&quot; | mail -s &quot;ceci est le sujet&quot; kevin@monDomaine.com&lt;/nowiki&gt;

Le mail sera automatiquement déposé dans le répertoire '''Maildir''' situé dans le home de kevin. S'il n'existe pas, le répertoire '''Maildir''' sera automatiquement créé. 

 &lt;nowiki&gt;# ls /home/kevin&lt;/nowiki&gt;
 Maildir

N'hésitez pas à consulter les logs pour voir tout ce qui se passe sur votre serveur mail&amp;nbsp;: 

 &lt;nowiki&gt;# cat /var/log/mail.log&lt;/nowiki&gt;

= Kevin veut lire ses mails&amp;nbsp;!!  =

Envoyer des mails, c'est bien mais pouvoir les lire, c'est mieux&amp;nbsp;!! Pour que Kevin puisse lire ses mails dans un client comme '''Mozilla Thunderbird''', c'est tout simple&amp;nbsp;: 

Kevin veut réceptionner ces mails via IMAP&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-imapd&lt;/nowiki&gt;

Il préfère POP3&amp;nbsp;? Pas de problèmes&amp;nbsp;: 

 &lt;nowiki&gt;# aptitude install dovecot-pop3d&lt;/nowiki&gt;

C'est tout, vous pouvez maintenant utiliser votre client mail favori pour réceptionner vos mails. 

Serveur&amp;nbsp;: '''smtp.monDomaine.com''' 

Login&amp;nbsp;: '''kevin''' 

Password&amp;nbsp;: '''le password défini lors de la création de l'utilisateur kevin''' 

= Kevin veut envoyer des mails&amp;nbsp;!!  =

Kevin est content, il peut lire ses mails. Seulement, il aimerait répondre à ses amis mais il ne peut pas. 

== Utiliser le SMTP de son FAI  ==

Postfix possède son propre service SMTP, mais ce dernier sera généralement bloqué. Pour limiter les envois de SPAMS, les FAI bloquent généralement l'envoi de mails. 

Pour que votre serveur mail puisse envoyer des mails, il faut lui dire d'utiliser le SMTP de votre FAI. C'est le paramètre '''relayhost''' du fichier de configuration '''/etc/postfix/main.cf''' qu'il faut modifier&amp;nbsp;: 

 relayhost = smtp.votreFAI.com

Principaux SMTP français&amp;nbsp;: 

 Orange&amp;nbsp;: smtp.orange.fr
 Free&amp;nbsp;: smtp.free.fr
 Neuf&amp;nbsp;: smtp.neuf.fr

== Utiliser le SMTP de Postfix  ==

Cependant, certains FAI (comme Free) permettent de lever ce blocage via une option dans leur panel de gestion. 

Dans ce cas, plus besoin du '''relayhost'''. Vos mails ne passeront plus par votre FAI, c'est VOTRE serveur qui enverra directement les mails. 

Le problème est que les mails que vous enverrez vers les boîtes '''Yahoo''' seront classées en tant que SPAM. '''AOL''' ne voudra pas de vos mails (ce sera explicitement marqué dans les logs). Quant à '''Hotmail''', les logs vous diront que les mails ont bien été reçus, mais vos correspondants ne les recevront jamais. '''Gmail''' ne pose quant à lui aucun souci. 

Vous voulez utiliser le plus possible votre propre SMTP mais vous voulez quand même pouvoir envoyer des mails vers vos potes restés chez Hotmail&amp;nbsp;? 

Créez un fichier '''/etc/postfix/transport''' avec ce contenu&amp;nbsp;: 

 hotmail.fr    smtp:smtp.free.fr
 hotmail.com   smtp:smtp.free.fr
 yahoo.fr      smtp:smtp.free.fr
 yahoo.com     smtp:smtp.free.fr

Ce fichier dit à postfix que pour les domaines hotmail.fr, hotmail.com, yahoo, etc., il utilisera le SMTP de free. Pour tous les autres domaine, il utilisera le smtp local. A vous d'adapter ce fichier en fonction des domaines qui ne veulent pas de vous. 

Bien sûr, si vous n'êtes pas abonné Free, vous ne pourrez pas utiliser le SMTP de Free. 

Pour que Postfix prenne en compte ce fichier, exécutez cette commande&amp;nbsp;: 

 &lt;nowiki&gt;# postmap /etc/postfix/transport&lt;/nowiki&gt;

Puis relancez Postfix&amp;nbsp;: 

 &lt;nowiki&gt;# /etc/init.d/postfix restart&lt;/nowiki&gt;

A chaque fois que vous modifierez '''/etc/postfix/transport''', n'oubliez pas d'executer la commande précédente (postmap).

== Login... Passwd...  ==

Actuellement, postfix n'accepte d'envoyer les mails que s'ils sont envoyés depuis le serveur mail. Vous avez sûrement l'habitude d'envoyer les mails depuis un autre PC. Généralement, le SMTP demande un login, un password et envoie vos mails. 

C'est ce que nous allons régler maintenant. 

Problème&amp;nbsp;: Postfix seul ne fournit pas de service d'identification. Il doit utiliser un serveur SASL externe. 

Solution&amp;nbsp;: Dovecot, que nous avons précédemment installé pour la réception de mails (IMAP-POP3) peut faire office de serveur SASL. 


=== Sous Debian Squeeze (6.0) avec Dovecot 1.x ===

Pour activer ce service, dans le fichier de configuration '''/etc/dovecot/dovecot.conf''', ajoutez (ou décommentez) ceci dans la section auth default { }&amp;nbsp;: 

 auth default {
 …
 socket listen {
   client {
     path  &lt;nowiki&gt;= /var/spool/postfix/private/auth&lt;/nowiki&gt;
    group = postfix
    mode  &lt;nowiki&gt;= 0660&lt;/nowiki&gt;
  }
 }
 …

=== Sous Debian Wheezy (7.0) avec Dovecot 2.x ===

Les fichiers de configuration sont séparés. Lire la documentation (obligatoire en cas de migration Squeeze -&gt; Wheezy!)
&lt;code&gt;zless /usr/share/doc/dovecot-core/README.Debian.gz&lt;/code&gt;

Voir aussi le wiki officiel de Dovecot 2.x : http://wiki2.dovecot.org/HowTo/PostfixAndDovecotSASL


Le fichier de configuration à modifier est : '''/etc/dovecot/conf.d/10-master.conf'''

&lt;code&gt;
  service auth {
  ...
  # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth {
    mode = 0660
        user=postfix
        group=postfix
  }

  # Auth process is run as this user.
  #user = $default_internal_user
 }
 ...
&lt;/code&gt;


Il s'agit pour Dovecot de créer un socket Unix, sur lequel il écoutera les demandes d'identification provenant de Postfix. Comme le service SMTP de Postfix est chrooté (emprisonné) dans le répertoire '''/var/spool/postfix/''', il faut placer ce socket sous ce répertoire, ce qui se fera automatiquement en relançant Dovecot avec la commande :             

 &lt;nowiki&gt;# /etc/init.d/dovecot restart&lt;/nowiki&gt;

Dovecot accepte l'identification mais Postfix ne le sait pas&amp;nbsp;!! Il faut lui dire (ajoutez dans '''/etc/postfix/main.cf''')&amp;nbsp;: 

 &lt;nowiki&gt;# Activer l'identification SASL&lt;/nowiki&gt;
 smtpd_sasl_auth_enable = yes

 &lt;nowiki&gt;# Utiliser le service d'identification de Dovecot&lt;/nowiki&gt;
 smtpd_sasl_type = dovecot
 smtpd_sasl_path = private/auth

 &lt;nowiki&gt;# Noter dans les en-tête des messages l'identifiant de l'utilisateur.&lt;/nowiki&gt;
 smtpd_sasl_authenticated_header = yes

Profitons-en pour peaufiner le fichier de configuration de postfix '''/etc/postfix/main.cf'''&amp;nbsp;: 

 &lt;nowiki&gt;# Règles pour accepter ou refuser une connexion :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on attend une seconde (pour piéger les zombies) ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on interdit la parallélisation là où il n'est pas sensé y en avoir.&lt;/nowiki&gt;
 smtpd_client_restrictions =
    permit_mynetworks, permit_sasl_authenticated,
    sleep 1, reject_unauth_pipelining

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le nom&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'hôte de l'expéditeur (par sa commande HELO ou EHLO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - on refuse les noms d'hôte invalides.&lt;/nowiki&gt;
 smtpd_helo_restrictions = reject_invalid_helo_hostname

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît l'adresse&lt;/nowiki&gt;
 &lt;nowiki&gt;# de l'expéditeur :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un expéditeur inexistant de notre domaine, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si le domaine de l'expéditeur n'a pas d'IP ou de MX, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un client sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de l'expéditeur n'est pas sous forme canonique, on le refuse.&lt;/nowiki&gt;
 smtpd_sender_restrictions =
    reject_unlisted_sender, reject_unknown_sender_domain,
    permit_mynetworks, permit_sasl_authenticated,
    reject_non_fqdn_sender

 &lt;nowiki&gt;# Règles pour accepter ou refuser un message, dès lors qu'on connaît le&lt;/nowiki&gt;
 &lt;nowiki&gt;# destinataire (par la commande RCPT TO) :&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un expéditeur forgé chez nous, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il est destiné à un domaine forgé, on le rejette ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - s'il vient d'un hôte sûr ou d'un client authentifié, on l'accepte ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - si l'adresse de destination n'est pas sous forme canonique, on le refuse ;&lt;/nowiki&gt;
 &lt;nowiki&gt;# - finalement, s'il n'est pas destiné à un domaine que l'on gère ou pour&lt;/nowiki&gt;
 &lt;nowiki&gt;# &lt;/nowiki&gt;  lequel on relaie, on le refuse.
 smtpd_recipient_restrictions =
     reject_unlisted_recipient, reject_unknown_recipient_domain,
     permit_mynetworks, permit_sasl_authenticated,
     reject_non_fqdn_recipient,
     reject_unauth_destination

Allez, on relance postfix pour qu'il prenne en compte tout ça&amp;nbsp;: 

 /etc/init.d/postfix restart


Important il faut vérifier que tout se passe bien dans les log de dovecot.
tail -f permet de voir les nouvelle entrées en &quot;direct&quot; donc dans une console lancer.
 &lt;nowiki&gt;#tail -f /var/log/dovecot-info.log &lt;/nowiki&gt;
Relever le courier  avec ce qui vous convient.
Et si vous avez quelque chose qui ressemble à ceci:
 &lt;nowiki&gt;#Error: mail_location not set and autodetection failed: Mail storage autodetection failed with home=/home/votreutilisateur &lt;/nowiki&gt;
il faut modifier le fichier de configuration de Dovecot
et vérifier que vous avez bien:
 &lt;nowiki&gt;mail_location = maildir:~/Maildir&lt;/nowiki&gt;

== Chiffrement STARTTLS ==

Nous pouvons rajouter le support de STARTTLS, ce qui permet à un moment donné de chiffrer la connexion avec Postfix.
L'avantage est que l'on peut alors chiffrer l'authentification SASL pour que le mot de passe n'apparaisse pas en clair.
On peut aussi chiffrer le contenu des messages, mais pour celà il est plus intéressant de s'orienter vers GPG ou S/MIME, afin de s'assurer que le message reste chiffré d'un bout à l'autre entre l'expéditeur et le destinataire.

Pour pouvoir utiliser STARTTLS, il nous faut un [[openssl|certificat SSL]]. Une fois le certificat obtenu, il suffit de rajouter dans main.cf :

 smtpd_tls_cert_file = /chemin/vers/certificat
 smtpd_tls_key_file = /chemin/vers/cle
 smtpd_use_tls = yes

Ceci suffit pour activer STARTTLS. Nous pouvons choisir le niveau de verbosité des logs :

 smtpd_tls_loglevel = 0

*0 : Désactive l'enregistrement de l'activité TLS.
*1 : Enregistre les informations de négociation TLS et des certificats.
*2 : Enregistre les niveaux durant la négociation TLS.
*3 : Retranscrit en hexadecimal et ASCII le processus de négotiation TLS
*4 : Retranscrit en hexadecimal et ASCII toute la transmission après STARTTLS

Enfin, il est possible d'interdire l'authentification SASL en clair avec :

 smtpd_tls_auth_only = yes


= Ressources =
* {{fr}} [http://postfix.traduc.org/ Traduction française de la documentation de Postfix]
* {{en}} [http://www.postfix.org/documentation.html Documentation originale de Postfix]
* {{en}} [http://wiki2.dovecot.org/ Wiki officiel de Dovecot 2.x]

[[Catégorie:Serveurs]]</text>
      <sha1>n73ejw9bd2w11haoddqj8i1ji91jlti</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Configuration du réseau</title>
    <ns>0</ns>
    <id>226</id>
    <revision>
      <id>936</id>
      <timestamp>2010-02-06T23:50:56Z</timestamp>
      <contributor>
        <username>Kna</username>
        <id>35</id>
      </contributor>
      <comment>Page créée avec « '''En cours de rédaction  Ne pas toucher'''  Sous Debian (et sous n'importe quel GNU/Linux), on peut se connecter au réseau avec quelques commandes de bases.  = Connaitre s… »</comment>
      <text xml:space="preserve" bytes="5012">'''En cours de rédaction  Ne pas toucher'''

Sous Debian (et sous n'importe quel GNU/Linux), on peut se connecter au réseau avec quelques commandes de bases.

= Connaitre ses interfaces =

Pour connaitre le nom de prendra son interface, faites la commande:

 $ /sbin/ifconfig -a

Les interfaces sont listées dans la colonne de gauche. Les interfaces ethernet s'appellent généralement « ethX » et les interfaces WiFi s'appellent généralement « wlanX », X étant un chiffre (elles sont numérotées à partir de zéro) mais peuvent varier selon le pilote utilisé. 
Si votre interface n'apparaît pas, il manque probablement un pilote, allez sur http://kmuto.jp/debian/hcl/ pour savoir quel pilote vous devez utiliser. Vous pouvez aussi voir la page sur les [[Les_Modules|modules]] pour plus d'infos.

= Enregistrer la configuration =

Les commandes qui vous seront montrées sur cette page vous permettront de vous connecter au net. Cependant, la configuration ne sera pas enregistrée et il faudra recommencer au prochain démarrage. Pour configurer votre réseau une fois pour toutes, vous préfèrerez plutôt passez par le fichier de configuration du réseau sous Debian: [[Le_fichier_interfaces|/etc/network/interfaces]]

Vous pouvez cependant lire la suite si vous devez vous connecter provisoirement à un réseau, pour mieux comprendre. Notez d'ailleurs que vous retrouverez ces commandes sur n'importe quelle distribution, alors que le fichier interfaces est propre à Debian et ses dérivés.

= Activer et désactiver une interface =

La commande '''ifconfig''', sans l'option ''-a'', ne vous montre que les interfaces activées. Pour activer une interface, il faut lancer :

 # ifconfig &lt;interface&gt; up

Pour la désactiver :

 # ifconfig &lt;interface&gt; down

= Se connecter en ethernet =

Pour se connecter à un réseau, il faut :
* être branché à une machine qui vous relie aux autres machines du réseau, généralement, la box que vous donne votre fournisseur d'accès à Internet.
* que votre machine aie un numéro unique sur le réseau pour qu'on la reconnaisse : c'est l'adresse IP
* connaitre l'adresse d'un serveur DNS auquel vous avez accès. En gros, c'est une machine qui enregistre un annuaire des adresses IP des sites. Ce qui vous permet de taper ''www.google.fr'' plutôt que ''209.85.227.103''

== DHCP ==

Le DHCP permet d'attribuer une adresse IP à votre machine automatiquement. Votre machine envoie une demande d'adresse à un serveur DHCP qui se charge de lui attribuer une adresse. Il en profite pour donner l'adresse du des DNS en même temps, ce qui fait que vous n'avez rien d'autre à faire pour vous connecter.
Généralement, votre box fait office de serveur DHCP, et c'est son réglage par défaut.

Il existe deux clients dhcp, '''dhclient''' et '''dhcpcd'''. Le plus probable est que vous ayez dhclient d'installé (il est en priorité standard sous Debian). Les deux s'utilisent de la même façon :

 # dhclient &lt;interface&gt;
 # dhcpcd &lt;interface&gt;

Et c'est tout !

== IP statique ==

Pour vous connecter en choisissant vous même votre IP, il faut utiliser la commande '''ifconfig''', par exemple :

 # ifconfig 192.168.0.1

Vous pouvez aussi changer le masque de sous-réseau :

 # ifconfig 10.0.0.1 netmask 255.255.0.0

(si vous ne savez pas ce qu'est un masque, ignorer simplement cette remarque).

Si vous vous connectez en statique, il vous faut indiquer un ou plusieurs serveur(s) DNS. Pour celà, il faut éditer le fichier '''/etc/resolv.conf''' de la sorte :

 nameserver 8.8.8.8
 nameserver 8.8.4.4

Les adresses montrées ici sont celles des serveurs DNS de google et devraient fonctionner. Cependant, il est plus judicieux d'utiliser ceux fourni par votre FAI.
Certains fournissent une box qui fait cache DNS, dans ce cas, il vous suffit d'indiquer l'IP de votre box (voir '''routes''' ci-dessous).
Vous pouvez aussi utiliser les serveurs d'[http://www.opendns.com/ OpenDNS], ou vous faire votre propre serveur DNS avec [[Bind]].

= PPP =

'''ToDo'''

= WiFi =

Pour vous connecter en WiFi, il vous faut des commandes supplémentaires, que vous pouvez installer en faisant :

 # aptitude install wireless-tools wpasupplicant

== Voir les réseaux ==

Pour voir les réseaux WiFi à portée, il faut utiliser '''iwlist'''

 # iwlist &lt;interface&gt; scan

== Se connecter en WEP ==

'''Attention''' : Le chiffrement WEP n'est pas sûr. Il est crackable en 10 minutes avec les outils adaptés. Il est vivement recommandé de passer ou WPA.

Pour se connecter en WEP, il faut utiliser '''iwconfig''' :

 # iwconfig &lt;interface&gt; essid &lt;essid&gt; key &lt;clé WEP&gt;

en remplaçant &lt;essid&gt; par le nom de votre réseau, et &lt;clé WEP&gt; par votre clé.

Voir la partie '''ethernet''' ci-dessus pour attribuer une adresse IP à votre carte.

== Se connecter en WPA ==

Pour le WPA, il faut utiliser '''wpa_supplicant'''.

Pour celà, il vous faut créer un fichier de configuration, par exemple '''/etc/wpasupplicant.conf''', qui doit avoir une syntaxe de la sorte :</text>
      <sha1>9z85nt8o1foeowv2x774436fikec9ix</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>938</id>
      <parentid>936</parentid>
      <timestamp>2010-02-07T00:14:34Z</timestamp>
      <contributor>
        <username>Kna</username>
        <id>35</id>
      </contributor>
      <text xml:space="preserve" bytes="7899">Sous Debian, on peut se connecter au réseau avec quelques commandes de bases.

= Connaitre ses interfaces =

Pour connaitre le nom de prendra son interface, faites la commande:

 $ /sbin/ifconfig -a

Les interfaces sont listées dans la colonne de gauche. Les interfaces ethernet s'appellent généralement « ethX » et les interfaces WiFi s'appellent généralement « wlanX », X étant un chiffre (elles sont numérotées à partir de zéro) mais peuvent varier selon le pilote utilisé. 
Si votre interface n'apparaît pas, il manque probablement un pilote, allez sur http://kmuto.jp/debian/hcl/ pour savoir quel pilote vous devez utiliser. Vous pouvez aussi voir la page sur les [[Les_Modules|modules]] pour plus d'infos.

= Enregistrer la configuration =

Les commandes qui vous seront montrées sur cette page vous permettront de vous connecter au net. Cependant, la configuration ne sera pas enregistrée et il faudra recommencer au prochain démarrage. Pour configurer votre réseau une fois pour toutes, vous préfèrerez plutôt passez par le fichier de configuration du réseau sous Debian: [[Le_fichier_interfaces|/etc/network/interfaces]]

Vous pouvez cependant lire la suite si vous devez vous connecter provisoirement à un réseau, ou bien pour mieux comprendre. Notez d'ailleurs que vous retrouverez ces commandes sur n'importe quelle distribution, alors que le fichier '''interfaces''' est propre à Debian et ses dérivés.

= Activer et désactiver une interface =

La commande '''ifconfig''', sans l'option ''-a'', ne vous montre que les interfaces activées. Pour activer une interface, il faut lancer :

 # ifconfig &lt;interface&gt; up

Pour la désactiver :

 # ifconfig &lt;interface&gt; down

= Se connecter en ethernet =

Pour se connecter à un réseau, il faut :
* être branché à une machine qui vous relie aux autres machines du réseau, généralement, la box que vous donne votre fournisseur d'accès à Internet.
* que votre machine aie un numéro unique sur le réseau pour qu'on la reconnaisse : c'est l'adresse IP
* connaitre l'adresse d'un serveur DNS auquel vous avez accès. En gros, c'est une machine qui enregistre un annuaire des adresses IP des sites. Ce qui vous permet de taper ''www.google.fr'' plutôt que ''209.85.227.103''

== DHCP ==

Le DHCP permet d'attribuer une adresse IP à votre machine automatiquement. Votre machine envoie une demande d'adresse à un serveur DHCP qui se charge de lui attribuer une adresse. Il en profite pour donner l'adresse du des DNS en même temps, ce qui fait que vous n'avez rien d'autre à faire pour vous connecter.
Généralement, votre box fait office de serveur DHCP, et c'est son réglage par défaut.

Il existe deux clients dhcp, '''dhclient''' et '''dhcpcd'''. Le plus probable est que vous ayez dhclient d'installé (il est en priorité standard sous Debian). Les deux s'utilisent de la même façon :

 # dhclient &lt;interface&gt;
 # dhcpcd &lt;interface&gt;

Et c'est tout !

== IP statique ==

Pour vous connecter en choisissant vous même votre IP, il faut utiliser la commande '''ifconfig''', par exemple :

 # ifconfig 192.168.0.1

Vous pouvez aussi changer le masque de sous-réseau :

 # ifconfig 10.0.0.1 netmask 255.255.0.0

(si vous ne savez pas ce qu'est un masque, ignorer simplement cette remarque).

Si vous vous connectez en statique, il vous faut indiquer un ou plusieurs serveur(s) DNS. Pour celà, il faut éditer le fichier '''/etc/resolv.conf''' de la sorte :

 nameserver 8.8.8.8
 nameserver 8.8.4.4

Les adresses montrées ici sont celles des serveurs DNS de google et devraient fonctionner. Cependant, il est plus judicieux d'utiliser ceux fourni par votre FAI.
Certains fournissent une box qui fait cache DNS, dans ce cas, il vous suffit d'indiquer l'IP de votre box (voir '''routes''' ci-dessous).
Vous pouvez aussi utiliser les serveurs d'[http://www.opendns.com/ OpenDNS], ou vous faire votre propre serveur DNS avec [[Bind]].

Il vous faudra aussi une route par défaut vers votre box, voir la partie '''routes''' ci-dessous.

= PPP =

'''ToDo'''

= WiFi =

Pour vous connecter en WiFi, il vous faut des commandes supplémentaires, que vous pouvez installer en faisant :

 # aptitude install wireless-tools wpasupplicant

== Voir les réseaux ==

Pour voir les réseaux WiFi à portée, il faut utiliser '''iwlist'''

 # iwlist &lt;interface&gt; scan

== Se connecter en WEP ==

'''Attention''' : Le chiffrement WEP n'est pas sûr. Il est crackable en 10 minutes avec les outils adaptés. Il est vivement recommandé de passer ou WPA.

Pour se connecter en WEP, il faut utiliser '''iwconfig''' :

 # iwconfig &lt;interface&gt; essid &lt;essid&gt; key &lt;clé WEP&gt;

en remplaçant &lt;essid&gt; par le nom de votre réseau, et &lt;clé WEP&gt; par votre clé.

Voir la partie '''ethernet''' ci-dessus pour attribuer une adresse IP à votre carte.

== Se connecter en WPA ==

Pour le WPA, il faut utiliser '''wpa_supplicant'''.

Pour celà, il vous faut créer un fichier de configuration, par exemple '''/etc/wpasupplicant.conf''', qui doit avoir une en-tête de la sorte :

 ctrl_interface=/var/run/wpa_supplicant
 ctrl_interface_group=0
 ap_scan=1
 fast_reauth=1
 eapol_version=1


Pour ajouter un réseau, il vous pouvez obtenir la syntaxe avec '''wpa_passphrase''' qui va vous permettre de récupérer la clé chiffrée à partir du mot de passe en clair et du nom de notre réseau (ssid).

Par exemple :

* notre réseau se nomme : Mon_wifi_chez_moi
* la clé en clair est  : Ma_clé_ultra_secrète_anti_hackers 

On lance en console wpa_passphrase comme ceci : wpa_passphrase &lt;ssid&gt; &lt;clé en clair&gt;

Ce qui, dans l'exemple donne :

 $ wpa_passphrase Mon_wifi_chez_moi Ma_clé_ultra_secrète_anti_hackers
 network={
        ssid=&quot;Mon_wifi_chez_moi&quot;
        #psk=&quot;Ma_clé_ultra_secrète_anti_hackers&quot;
        psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116
 }

On vient de récupérer la clé chiffrée, ici psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116. Il suffira alors de la recopier

Vous pouvez recopier le résultat complet de la commande wpa_passphrase dans /etc/wpasupplicant.conf. Vous pourrez alors vous connectez en lançant (en root) :

 # wpa_supplicant -i&lt;interface&gt; -d&lt;driver&gt;-c/etc/wpa_supplicant.conf

Pour &lt;driver&gt;, en général, il faut indiquer « wext ». Mais ceci peut varier selon votre carte WiFi et la version de wpa_supplicant. Pour voir la liste des drivers, lancez :

 $ /sbin/wpa_supplicant -l


Une fois connecté, voir la partie '''ethernet''' ci-dessus pour attribuer une adresse IP à votre carte.

= Routage =

La table de routage de votre machine, lui permet de savoir à quelle machine envoyer un paquet. Vous pouvez la visualiser grace à la commande '''route''' :

 $ /sbin/route -n
 Table de routage IP du noyau
 Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
 192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan0
 0.0.0.0         192.168.0.254   0.0.0.0         UG    0      0        0 wlan0

Ici, la première route est celle du sous-réseau qui permet de communiquer avec d'autres machine du réseau local. Elle indique simplement que pour ces machines là, on communique avec elles directement (passerelle : 0.0.0.0 signifiant qu'il n'y a pas de passerelle). Elle est inscrite automatiquement lors de l'attribution d'une adresse IP à une interface.

La seconde destination, notée 0.0.0.0 est la passerelle par défaut. La passerelle est la box qui me donne accès à Internet (192.168.0.254), car c'est elle qui me relie aux autres machines du réseau. Ainsi, si ma machine veut envoyer un paquet à une adresse qui ne fait pas partie de mon réseau local, elle l'enverra à ma box, qui se chargera de la transmettre.

Si vous vous êtes connecté en IP statique, il vous faut rajouter manuellement la route par défaut :

 # route add default gw &lt;Adresse IP de la passerelle&gt;</text>
      <sha1>1qe1bw3cl1wox63yfdo88pna18m0knx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>939</id>
      <parentid>938</parentid>
      <timestamp>2010-02-07T00:24:23Z</timestamp>
      <contributor>
        <username>Kna</username>
        <id>35</id>
      </contributor>
      <text xml:space="preserve" bytes="7921">Sous Debian, on peut se connecter au réseau avec quelques commandes de bases.

= Connaitre ses interfaces =

Pour connaitre le nom de prendra son interface, faites la commande:

 $ /sbin/ifconfig -a

Les interfaces sont listées dans la colonne de gauche. Les interfaces ethernet s'appellent généralement « ethX » et les interfaces WiFi s'appellent généralement « wlanX », X étant un chiffre (elles sont numérotées à partir de zéro) mais peuvent varier selon le pilote utilisé. 
Si votre interface n'apparaît pas, il manque probablement un pilote, allez sur http://kmuto.jp/debian/hcl/ pour savoir quel pilote vous devez utiliser. Vous pouvez aussi voir la page sur les [[Les_Modules|modules]] pour plus d'infos.

= Enregistrer la configuration =

Les commandes qui vous seront montrées sur cette page vous permettront de vous connecter au net. Cependant, la configuration ne sera pas enregistrée et il faudra recommencer au prochain démarrage. Pour configurer votre réseau une fois pour toutes, vous préfèrerez plutôt passez par le fichier de configuration du réseau sous Debian: [[Le_fichier_interfaces|/etc/network/interfaces]]

Vous pouvez cependant lire la suite si vous devez vous connecter provisoirement à un réseau, ou bien pour mieux comprendre. Notez d'ailleurs que vous retrouverez ces commandes sur n'importe quelle distribution, alors que le fichier '''interfaces''' est propre à Debian et ses dérivés.

= Activer et désactiver une interface =

La commande '''ifconfig''', sans l'option ''-a'', ne vous montre que les interfaces activées. Pour activer une interface, il faut lancer :

 # ifconfig &lt;interface&gt; up

Pour la désactiver :

 # ifconfig &lt;interface&gt; down

= Se connecter en ethernet =

Pour se connecter à un réseau, il faut :
* être branché à une machine qui vous relie aux autres machines du réseau, généralement, la box que vous donne votre fournisseur d'accès à Internet.
* que votre machine aie un numéro unique sur le réseau pour qu'on la reconnaisse : c'est l'adresse IP
* connaitre l'adresse d'un serveur DNS auquel vous avez accès. En gros, c'est une machine qui enregistre un annuaire des adresses IP des sites. Ce qui vous permet de taper ''www.google.fr'' plutôt que ''209.85.227.103''

== DHCP ==

Le DHCP permet d'attribuer une adresse IP à votre machine automatiquement. Votre machine envoie une demande d'adresse à un serveur DHCP qui se charge de lui attribuer une adresse. Il en profite pour donner l'adresse du des DNS en même temps, ce qui fait que vous n'avez rien d'autre à faire pour vous connecter.
Généralement, votre box fait office de serveur DHCP, et c'est son réglage par défaut.

Il existe deux clients dhcp, '''dhclient''' et '''dhcpcd'''. Le plus probable est que vous ayez dhclient d'installé (il est en priorité standard sous Debian). Les deux s'utilisent de la même façon :

 # dhclient &lt;interface&gt;
 # dhcpcd &lt;interface&gt;

Et c'est tout !

== IP statique ==

Pour vous connecter en choisissant vous même votre IP, il faut utiliser la commande '''ifconfig''', par exemple :

 # ifconfig 192.168.0.1

Vous pouvez aussi changer le masque de sous-réseau :

 # ifconfig 10.0.0.1 netmask 255.255.0.0

(si vous ne savez pas ce qu'est un masque, ignorer simplement cette remarque).

Si vous vous connectez en statique, il vous faut indiquer un ou plusieurs serveur(s) DNS. Pour celà, il faut éditer le fichier '''/etc/resolv.conf''' de la sorte :

 nameserver 8.8.8.8
 nameserver 8.8.4.4

Les adresses montrées ici sont celles des serveurs DNS de google et devraient fonctionner. Cependant, il est plus judicieux d'utiliser ceux fourni par votre FAI.
Certains fournissent une box qui fait cache DNS, dans ce cas, il vous suffit d'indiquer l'IP de votre box (voir '''routes''' ci-dessous).
Vous pouvez aussi utiliser les serveurs d'[http://www.opendns.com/ OpenDNS], ou vous faire votre propre serveur DNS avec [[Bind]].

Il vous faudra aussi une route par défaut vers votre box, voir la partie '''routes''' ci-dessous.

= PPP =

'''ToDo'''

= WiFi =

Pour vous connecter en WiFi, il vous faut des commandes supplémentaires, que vous pouvez installer en faisant :

 # aptitude install wireless-tools wpasupplicant

== Voir les réseaux ==

Pour voir les réseaux WiFi à portée, il faut utiliser '''iwlist'''

 # iwlist &lt;interface&gt; scan

== Se connecter en WEP ==

'''Attention''' : Le chiffrement WEP n'est pas sûr. Il est crackable en 10 minutes avec les outils adaptés. Il est vivement recommandé de passer ou WPA.

Pour se connecter en WEP, il faut utiliser '''iwconfig''' :

 # iwconfig &lt;interface&gt; essid &lt;essid&gt; key &lt;clé WEP&gt;

en remplaçant &lt;essid&gt; par le nom de votre réseau, et &lt;clé WEP&gt; par votre clé.

Voir la partie '''ethernet''' ci-dessus pour attribuer une adresse IP à votre carte.

== Se connecter en WPA ==

Pour le WPA, il faut utiliser '''wpa_supplicant'''.

Pour celà, il vous faut créer un fichier de configuration, par exemple '''/etc/wpasupplicant.conf''', qui doit avoir une en-tête de la sorte :

 ctrl_interface=/var/run/wpa_supplicant
 ctrl_interface_group=0
 ap_scan=1
 fast_reauth=1
 eapol_version=1


Pour ajouter un réseau, il vous pouvez obtenir la syntaxe avec '''wpa_passphrase''' qui va vous permettre de récupérer la clé chiffrée à partir du mot de passe en clair et du nom de notre réseau (ssid).

Par exemple :

* notre réseau se nomme : Mon_wifi_chez_moi
* la clé en clair est  : Ma_clé_ultra_secrète_anti_hackers 

On lance en console wpa_passphrase comme ceci : wpa_passphrase &lt;ssid&gt; &lt;clé en clair&gt;

Ce qui, dans l'exemple donne :

 $ wpa_passphrase Mon_wifi_chez_moi Ma_clé_ultra_secrète_anti_hackers
 network={
        ssid=&quot;Mon_wifi_chez_moi&quot;
        #psk=&quot;Ma_clé_ultra_secrète_anti_hackers&quot;
        psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116
 }

On vient de récupérer la clé chiffrée, ici psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116. Il suffira alors de la recopier

Vous pouvez recopier le résultat complet de la commande wpa_passphrase dans /etc/wpasupplicant.conf. Vous pourrez alors vous connectez en lançant (en root) :

 # wpa_supplicant -i&lt;interface&gt; -d&lt;driver&gt;-c/etc/wpa_supplicant.conf

Pour &lt;driver&gt;, en général, il faut indiquer « wext ». Mais ceci peut varier selon votre carte WiFi et la version de wpa_supplicant. Pour voir la liste des drivers, lancez :

 $ /sbin/wpa_supplicant -l


Une fois connecté, voir la partie '''ethernet''' ci-dessus pour attribuer une adresse IP à votre carte.

= Routage =

La table de routage de votre machine, lui permet de savoir à quelle machine envoyer un paquet. Vous pouvez la visualiser grace à la commande '''route''' :

 $ /sbin/route -n
 Table de routage IP du noyau
 Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
 192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan0
 0.0.0.0         192.168.0.254   0.0.0.0         UG    0      0        0 wlan0

Ici, la première route est celle du sous-réseau qui permet de communiquer avec d'autres machine du réseau local. Elle indique simplement que pour ces machines là, on communique avec elles directement (passerelle : 0.0.0.0 signifiant qu'il n'y a pas de passerelle). Elle est inscrite automatiquement lors de l'attribution d'une adresse IP à une interface.

La seconde destination, notée 0.0.0.0 est la passerelle par défaut. La passerelle est la box qui me donne accès à Internet (192.168.0.254), car c'est elle qui me relie aux autres machines du réseau. Ainsi, si ma machine veut envoyer un paquet à une adresse qui ne fait pas partie de mon réseau local, elle l'enverra à ma box, qui se chargera de la transmettre.

Si vous vous êtes connecté en IP statique, il vous faut rajouter manuellement la route par défaut :

 # route add default gw &lt;Adresse IP de la passerelle&gt;

[[Category:Réseau]]</text>
      <sha1>0r9eyqdrx4faro7uhnaq7vldwmdnpeb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1034</id>
      <parentid>939</parentid>
      <timestamp>2010-02-08T04:33:21Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="7929">Sous Debian, on peut se connecter au réseau avec quelques commandes de bases.

= Connaitre ses interfaces =

Pour connaitre le nom de prendra son interface, faites la commande:

 $ /sbin/ifconfig -a

Les interfaces sont listées dans la colonne de gauche. Les interfaces ethernet s'appellent généralement « ethX » et les interfaces WiFi s'appellent généralement « wlanX », X étant un chiffre (elles sont numérotées à partir de zéro) mais peuvent varier selon le pilote utilisé. 
Si votre interface n'apparaît pas, il manque probablement un pilote, allez sur http://kmuto.jp/debian/hcl/ pour savoir quel pilote vous devez utiliser. Vous pouvez aussi voir la page sur les [[Les_Modules|modules]] pour plus d'infos.

= Enregistrer la configuration =

Les commandes qui vous seront montrées sur cette page vous permettront de vous connecter au net. Cependant, la configuration ne sera pas enregistrée et il faudra recommencer au prochain démarrage. Pour configurer votre réseau une fois pour toutes, vous préfèrerez plutôt passez par le fichier de configuration du réseau sous Debian: [[Le_fichier_interfaces|/etc/network/interfaces]]

Vous pouvez cependant lire la suite si vous devez vous connecter provisoirement à un réseau, ou bien pour mieux comprendre. Notez d'ailleurs que vous retrouverez ces commandes sur n'importe quelle distribution, alors que le fichier '''interfaces''' est propre à Debian et ses dérivés.

= Activer et désactiver une interface =

La commande '''ifconfig''', sans l'option ''-a'', ne vous montre que les interfaces activées. Pour activer une interface, il faut lancer :

 # ifconfig &lt;interface&gt; up

Pour la désactiver :

 # ifconfig &lt;interface&gt; down

= Se connecter en ethernet =

Pour se connecter à un réseau, il faut :
* être branché à une machine qui vous relie aux autres machines du réseau, généralement, la box que vous donne votre fournisseur d'accès à Internet.
* que votre machine aie un numéro unique sur le réseau pour qu'on la reconnaisse : c'est l'adresse IP
* connaitre l'adresse d'un serveur DNS auquel vous avez accès. En gros, c'est une machine qui enregistre un annuaire des adresses IP des sites. Ce qui vous permet de taper ''www.google.fr'' plutôt que ''209.85.227.103''

== DHCP ==

Le DHCP permet d'attribuer une adresse IP à votre machine automatiquement. Votre machine envoie une demande d'adresse à un serveur DHCP qui se charge de lui attribuer une adresse. Il en profite pour donner l'adresse du des DNS en même temps, ce qui fait que vous n'avez rien d'autre à faire pour vous connecter.
Généralement, votre box fait office de serveur DHCP, et c'est son réglage par défaut.

Il existe deux clients dhcp, '''dhclient''' et '''dhcpcd'''. Le plus probable est que vous ayez dhclient d'installé (il est en priorité standard sous Debian). Les deux s'utilisent de la même façon :

 # dhclient &lt;interface&gt;
 # dhcpcd &lt;interface&gt;

Et c'est tout !

== IP statique ==

Pour vous connecter en choisissant vous même votre IP, il faut utiliser la commande '''ifconfig''', par exemple :

 # ifconfig 192.168.0.1

Vous pouvez aussi changer le masque de sous-réseau :

 # ifconfig 10.0.0.1 netmask 255.255.0.0

(si vous ne savez pas ce qu'est un masque, ignorer simplement cette remarque).

Si vous vous connectez en statique, il vous faut indiquer un ou plusieurs serveur(s) DNS. Pour celà, il faut éditer le fichier '''/etc/resolv.conf''' de la sorte :

 nameserver 8.8.8.8
 nameserver 8.8.4.4

Les adresses montrées ici sont celles des serveurs DNS de google et devraient fonctionner. Cependant, il est plus judicieux d'utiliser ceux fourni par votre FAI.
Certains fournissent une box qui fait cache DNS, dans ce cas, il vous suffit d'indiquer l'IP de votre box (voir '''routes''' ci-dessous).
Vous pouvez aussi utiliser les serveurs d'[http://www.opendns.com/ OpenDNS], ou vous faire votre propre serveur DNS avec [[Bind]].

Il vous faudra aussi une route par défaut vers votre box, voir la partie '''routes''' ci-dessous.

= PPP =

'''ToDo'''

= WiFi =

Pour vous connecter en WiFi, il vous faut des commandes supplémentaires, que vous pouvez installer en faisant :

 # aptitude install wireless-tools wpasupplicant

== Voir les réseaux ==

Pour voir les réseaux WiFi à portée, il faut utiliser '''iwlist'''

 # iwlist &lt;interface&gt; scan

== Se connecter en WEP ==

'''Attention''' : Le chiffrement WEP n'est pas sûr. Il est crackable en 10 minutes avec les outils adaptés. Il est vivement recommandé de passer ou WPA.

Pour se connecter en WEP, il faut utiliser '''iwconfig''' :

 # iwconfig &lt;interface&gt; essid &lt;essid&gt; key &lt;clé WEP&gt;

en remplaçant &lt;essid&gt; par le nom de votre réseau, et &lt;clé WEP&gt; par votre clé.

Voir la partie '''ethernet''' ci-dessus pour attribuer une adresse IP à votre carte.

== Se connecter en WPA ==

Pour le WPA, il faut utiliser '''wpa_supplicant'''.

Pour celà, il vous faut créer un fichier de configuration, par exemple '''/etc/wpasupplicant.conf''', qui doit avoir une en-tête de la sorte :

 ctrl_interface=/var/run/wpa_supplicant
 ctrl_interface_group=0
 ap_scan=1
 fast_reauth=1
 eapol_version=1


Pour ajouter un réseau, il vous pouvez obtenir la syntaxe avec '''wpa_passphrase''' qui va vous permettre de récupérer la clé chiffrée à partir du mot de passe en clair et du nom de notre réseau (ssid).

Par exemple :

* notre réseau se nomme : Mon_wifi_chez_moi
* la clé en clair est  : Ma_clé_ultra_secrète_anti_hackers 

On lance en console wpa_passphrase comme ceci : wpa_passphrase &lt;ssid&gt; &lt;clé en clair&gt;

Ce qui, dans l'exemple donne :

 $ wpa_passphrase Mon_wifi_chez_moi Ma_clé_ultra_secrète_anti_hackers
 network={
        ssid=&quot;Mon_wifi_chez_moi&quot;
        #psk=&quot;Ma_clé_ultra_secrète_anti_hackers&quot;
        psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116
 }

On vient de récupérer la clé chiffrée, ici psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116. Il suffira alors de la recopier

Vous pouvez recopier le résultat complet de la commande wpa_passphrase dans /etc/wpasupplicant.conf. Vous pourrez alors vous connectez en lançant (en root) :

 # wpa_supplicant -i&lt;interface&gt; -d&lt;driver&gt;-c/etc/wpa_supplicant.conf

Pour &lt;driver&gt;, en général, il faut indiquer « wext ». Mais ceci peut varier selon votre carte WiFi et la version de wpa_supplicant. Pour voir la liste des drivers, lancez :

 $ /sbin/wpa_supplicant -l


Une fois connecté, voir la partie '''ethernet''' ci-dessus pour attribuer une adresse IP à votre carte.

= Routage =

La table de routage de votre machine, lui permet de savoir à quelle machine envoyer un paquet. Vous pouvez la visualiser grace à la commande '''route''' :

 $ /sbin/route -n
 Table de routage IP du noyau
 Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
 192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan0
 0.0.0.0         192.168.0.254   0.0.0.0         UG    0      0        0 wlan0

Ici, la première route est celle du sous-réseau qui permet de communiquer avec d'autres machine du réseau local. Elle indique simplement que pour ces machines là, on communique avec elles directement (passerelle : 0.0.0.0 signifiant qu'il n'y a pas de passerelle). Elle est inscrite automatiquement lors de l'attribution d'une adresse IP à une interface.

La seconde destination, notée 0.0.0.0 est la passerelle par défaut. La passerelle est la box qui me donne accès à Internet (192.168.0.254), car c'est elle qui me relie aux autres machines du réseau. Ainsi, si ma machine veut envoyer un paquet à une adresse qui ne fait pas partie de mon réseau local, elle l'enverra à ma box, qui se chargera de la transmettre.

Si vous vous êtes connecté en IP statique, il vous faut rajouter manuellement la route par défaut :

 # route add default gw &lt;Adresse IP de la passerelle&gt;

[[Category:Réseau et Wifi]]</text>
      <sha1>hic66n3qhoo72tqpa60uqqwgq863l7n</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1042</id>
      <parentid>1034</parentid>
      <timestamp>2010-02-08T06:53:41Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="7965">Sous Debian, on peut se connecter au réseau avec quelques commandes de bases.

= Connaitre ses interfaces =

Pour connaitre le nom de prendra son interface, faites la commande:

 $ /sbin/ifconfig -a

Les interfaces sont listées dans la colonne de gauche. Les interfaces ethernet s'appellent généralement « ethX » et les interfaces WiFi s'appellent généralement « wlanX », X étant un chiffre (elles sont numérotées à partir de zéro) mais peuvent varier selon le pilote utilisé. 
Si votre interface n'apparaît pas, il manque probablement un pilote, allez sur http://kmuto.jp/debian/hcl/ pour savoir quel pilote vous devez utiliser. Vous pouvez aussi voir la page sur les [[Les_Modules|modules]] pour plus d'infos.

= Enregistrer la configuration =

Les commandes qui vous seront montrées sur cette page vous permettront de vous connecter au net. Cependant, la configuration ne sera pas enregistrée et il faudra recommencer au prochain démarrage. Pour configurer votre réseau une fois pour toutes, vous préfèrerez plutôt passez par le fichier de configuration du réseau sous Debian: [[Le_fichier_interfaces|/etc/network/interfaces]]

Vous pouvez cependant lire la suite si vous devez vous connecter provisoirement à un réseau, ou bien pour mieux comprendre. Notez d'ailleurs que vous retrouverez ces commandes sur n'importe quelle distribution, alors que le fichier '''interfaces''' est propre à Debian et ses dérivés.

= Activer et désactiver une interface =

La commande '''ifconfig''', sans l'option ''-a'', ne vous montre que les interfaces activées. Pour activer une interface, il faut lancer :

 # ifconfig &lt;interface&gt; up

Pour la désactiver :

 # ifconfig &lt;interface&gt; down

= Se connecter en ethernet =

Pour se connecter à un réseau, il faut :
* être branché à une machine qui vous relie aux autres machines du réseau, généralement, la box que vous donne votre fournisseur d'accès à Internet.
* que votre machine aie un numéro unique sur le réseau pour qu'on la reconnaisse : c'est l'adresse IP
* connaitre l'adresse d'un serveur DNS auquel vous avez accès. En gros, c'est une machine qui enregistre un annuaire des adresses IP des sites. Ce qui vous permet de taper ''www.google.fr'' plutôt que ''209.85.227.103''

== DHCP ==

Le DHCP permet d'attribuer une adresse IP à votre machine automatiquement. Votre machine envoie une demande d'adresse à un serveur DHCP qui se charge de lui attribuer une adresse. Il en profite pour donner l'adresse du des DNS en même temps, ce qui fait que vous n'avez rien d'autre à faire pour vous connecter.
Généralement, votre box fait office de serveur DHCP, et c'est son réglage par défaut.

Il existe deux clients dhcp, '''dhclient''' et '''dhcpcd'''. Le plus probable est que vous ayez dhclient d'installé (il est en priorité standard sous Debian). Les deux s'utilisent de la même façon :

 # dhclient &lt;interface&gt;
 # dhcpcd &lt;interface&gt;

Et c'est tout !

== IP statique ==

Pour vous connecter en choisissant vous même votre IP, il faut utiliser la commande '''ifconfig''', par exemple :

 # ifconfig 192.168.0.1

Vous pouvez aussi changer le masque de sous-réseau :

 # ifconfig 10.0.0.1 netmask 255.255.0.0

(si vous ne savez pas ce qu'est un masque, ignorer simplement cette remarque).

Si vous vous connectez en statique, il vous faut indiquer un ou plusieurs serveur(s) DNS. Pour celà, il faut éditer le fichier '''/etc/resolv.conf''' de la sorte :

 nameserver 8.8.8.8
 nameserver 8.8.4.4

Les adresses montrées ici sont celles des serveurs DNS de google et devraient fonctionner. Cependant, il est plus judicieux d'utiliser ceux fourni par votre FAI.
Certains fournissent une box qui fait cache DNS, dans ce cas, il vous suffit d'indiquer l'IP de votre box (voir '''routes''' ci-dessous).
Vous pouvez aussi utiliser les serveurs d'[http://www.opendns.com/ OpenDNS], ou vous faire votre propre serveur DNS avec [[Bind]].

Il vous faudra aussi une route par défaut vers votre box, voir la partie '''routes''' ci-dessous.

= PPP =

'''ToDo'''

= WiFi =

Pour vous connecter en WiFi, il vous faut des commandes supplémentaires, que vous pouvez installer en faisant :

 # aptitude install wireless-tools wpasupplicant

== Voir les réseaux ==

Pour voir les réseaux WiFi à portée, il faut utiliser '''iwlist'''

 # iwlist &lt;interface&gt; scan

== Se connecter en WEP ==

'''Attention''' : Le chiffrement WEP n'est pas sûr. Il est crackable en 10 minutes avec les outils adaptés. Il est vivement recommandé de passer ou WPA.

Pour se connecter en WEP, il faut utiliser '''iwconfig''' :

 # iwconfig &lt;interface&gt; essid &lt;essid&gt; key &lt;clé WEP&gt;

en remplaçant &lt;essid&gt; par le nom de votre réseau, et &lt;clé WEP&gt; par votre clé.

Voir la partie '''ethernet''' ci-dessus pour attribuer une adresse IP à votre carte.

== Se connecter en WPA ==

Pour le WPA, il faut utiliser '''wpa_supplicant'''.

Pour celà, il vous faut créer un fichier de configuration, par exemple '''/etc/wpasupplicant.conf''', qui doit avoir une en-tête de la sorte :

 ctrl_interface=/var/run/wpa_supplicant
 ctrl_interface_group=0
 ap_scan=1
 fast_reauth=1
 eapol_version=1


Pour ajouter un réseau, il vous pouvez obtenir la syntaxe avec '''wpa_passphrase''' qui va vous permettre de récupérer la clé chiffrée à partir du mot de passe en clair et du nom de notre réseau (ssid).

Par exemple :

* notre réseau se nomme : Mon_wifi_chez_moi
* la clé en clair est  : Ma_clé_ultra_secrète_anti_hackers 

On lance en console wpa_passphrase comme ceci : wpa_passphrase &lt;ssid&gt; &lt;clé en clair&gt;

Ce qui, dans l'exemple donne :

 $ wpa_passphrase Mon_wifi_chez_moi Ma_clé_ultra_secrète_anti_hackers
 network={
        ssid=&quot;Mon_wifi_chez_moi&quot;
        #psk=&quot;Ma_clé_ultra_secrète_anti_hackers&quot;
        psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116
 }

On vient de récupérer la clé chiffrée, ici psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116. Il suffira alors de la recopier

Vous pouvez recopier le résultat complet de la commande wpa_passphrase dans /etc/wpasupplicant.conf. Vous pourrez alors vous connectez en lançant (en root) :

 # wpa_supplicant -i&lt;interface&gt; -d&lt;driver&gt;-c/etc/wpa_supplicant.conf

Pour &lt;driver&gt;, en général, il faut indiquer « wext ». Mais ceci peut varier selon votre carte WiFi et la version de wpa_supplicant. Pour voir la liste des drivers, lancez :

 $ /sbin/wpa_supplicant -l


Une fois connecté, voir la partie '''ethernet''' ci-dessus pour attribuer une adresse IP à votre carte.

= Routage =

La table de routage de votre machine, lui permet de savoir à quelle machine envoyer un paquet. Vous pouvez la visualiser grace à la commande '''route''' :

 $ /sbin/route -n
 Table de routage IP du noyau
 Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
 192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan0
 0.0.0.0         192.168.0.254   0.0.0.0         UG    0      0        0 wlan0

Ici, la première route est celle du sous-réseau qui permet de communiquer avec d'autres machine du réseau local. Elle indique simplement que pour ces machines là, on communique avec elles directement (passerelle : 0.0.0.0 signifiant qu'il n'y a pas de passerelle). Elle est inscrite automatiquement lors de l'attribution d'une adresse IP à une interface.

La seconde destination, notée 0.0.0.0 est la passerelle par défaut. La passerelle est la box qui me donne accès à Internet (192.168.0.254), car c'est elle qui me relie aux autres machines du réseau. Ainsi, si ma machine veut envoyer un paquet à une adresse qui ne fait pas partie de mon réseau local, elle l'enverra à ma box, qui se chargera de la transmettre.

Si vous vous êtes connecté en IP statique, il vous faut rajouter manuellement la route par défaut :

 # route add default gw &lt;Adresse IP de la passerelle&gt;

[[Category:Réseau et Wifi]]
[[Category:Réseau Généralités]]</text>
      <sha1>0c11tpurxmdyd2xkux6g7jqirfbyfk5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1641</id>
      <parentid>1042</parentid>
      <timestamp>2010-07-05T11:14:14Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Enregistrer la configuration */</comment>
      <text xml:space="preserve" bytes="7965">Sous Debian, on peut se connecter au réseau avec quelques commandes de bases.

= Connaitre ses interfaces =

Pour connaitre le nom de prendra son interface, faites la commande:

 $ /sbin/ifconfig -a

Les interfaces sont listées dans la colonne de gauche. Les interfaces ethernet s'appellent généralement « ethX » et les interfaces WiFi s'appellent généralement « wlanX », X étant un chiffre (elles sont numérotées à partir de zéro) mais peuvent varier selon le pilote utilisé. 
Si votre interface n'apparaît pas, il manque probablement un pilote, allez sur http://kmuto.jp/debian/hcl/ pour savoir quel pilote vous devez utiliser. Vous pouvez aussi voir la page sur les [[Les_Modules|modules]] pour plus d'infos.

= Enregistrer la configuration =

Les commandes qui vous seront montrées sur cette page vous permettront de vous connecter au net. Cependant, la configuration ne sera pas enregistrée et il faudra recommencer au prochain démarrage. Pour configurer votre réseau une fois pour toutes, vous préfèrerez plutôt passer par le fichier de configuration du réseau sous Debian: [[Le_fichier_interfaces|/etc/network/interfaces]]

Vous pouvez cependant lire la suite si vous devez vous connecter provisoirement à un réseau, ou bien pour mieux comprendre. Notez d'ailleurs que vous retrouverez ces commandes sur n'importe quelle distribution, alors que le fichier '''interfaces''' est propre à Debian et ses dérivés.

= Activer et désactiver une interface =

La commande '''ifconfig''', sans l'option ''-a'', ne vous montre que les interfaces activées. Pour activer une interface, il faut lancer :

 # ifconfig &lt;interface&gt; up

Pour la désactiver :

 # ifconfig &lt;interface&gt; down

= Se connecter en ethernet =

Pour se connecter à un réseau, il faut :
* être branché à une machine qui vous relie aux autres machines du réseau, généralement, la box que vous donne votre fournisseur d'accès à Internet.
* que votre machine aie un numéro unique sur le réseau pour qu'on la reconnaisse : c'est l'adresse IP
* connaitre l'adresse d'un serveur DNS auquel vous avez accès. En gros, c'est une machine qui enregistre un annuaire des adresses IP des sites. Ce qui vous permet de taper ''www.google.fr'' plutôt que ''209.85.227.103''

== DHCP ==

Le DHCP permet d'attribuer une adresse IP à votre machine automatiquement. Votre machine envoie une demande d'adresse à un serveur DHCP qui se charge de lui attribuer une adresse. Il en profite pour donner l'adresse du des DNS en même temps, ce qui fait que vous n'avez rien d'autre à faire pour vous connecter.
Généralement, votre box fait office de serveur DHCP, et c'est son réglage par défaut.

Il existe deux clients dhcp, '''dhclient''' et '''dhcpcd'''. Le plus probable est que vous ayez dhclient d'installé (il est en priorité standard sous Debian). Les deux s'utilisent de la même façon :

 # dhclient &lt;interface&gt;
 # dhcpcd &lt;interface&gt;

Et c'est tout !

== IP statique ==

Pour vous connecter en choisissant vous même votre IP, il faut utiliser la commande '''ifconfig''', par exemple :

 # ifconfig 192.168.0.1

Vous pouvez aussi changer le masque de sous-réseau :

 # ifconfig 10.0.0.1 netmask 255.255.0.0

(si vous ne savez pas ce qu'est un masque, ignorer simplement cette remarque).

Si vous vous connectez en statique, il vous faut indiquer un ou plusieurs serveur(s) DNS. Pour celà, il faut éditer le fichier '''/etc/resolv.conf''' de la sorte :

 nameserver 8.8.8.8
 nameserver 8.8.4.4

Les adresses montrées ici sont celles des serveurs DNS de google et devraient fonctionner. Cependant, il est plus judicieux d'utiliser ceux fourni par votre FAI.
Certains fournissent une box qui fait cache DNS, dans ce cas, il vous suffit d'indiquer l'IP de votre box (voir '''routes''' ci-dessous).
Vous pouvez aussi utiliser les serveurs d'[http://www.opendns.com/ OpenDNS], ou vous faire votre propre serveur DNS avec [[Bind]].

Il vous faudra aussi une route par défaut vers votre box, voir la partie '''routes''' ci-dessous.

= PPP =

'''ToDo'''

= WiFi =

Pour vous connecter en WiFi, il vous faut des commandes supplémentaires, que vous pouvez installer en faisant :

 # aptitude install wireless-tools wpasupplicant

== Voir les réseaux ==

Pour voir les réseaux WiFi à portée, il faut utiliser '''iwlist'''

 # iwlist &lt;interface&gt; scan

== Se connecter en WEP ==

'''Attention''' : Le chiffrement WEP n'est pas sûr. Il est crackable en 10 minutes avec les outils adaptés. Il est vivement recommandé de passer ou WPA.

Pour se connecter en WEP, il faut utiliser '''iwconfig''' :

 # iwconfig &lt;interface&gt; essid &lt;essid&gt; key &lt;clé WEP&gt;

en remplaçant &lt;essid&gt; par le nom de votre réseau, et &lt;clé WEP&gt; par votre clé.

Voir la partie '''ethernet''' ci-dessus pour attribuer une adresse IP à votre carte.

== Se connecter en WPA ==

Pour le WPA, il faut utiliser '''wpa_supplicant'''.

Pour celà, il vous faut créer un fichier de configuration, par exemple '''/etc/wpasupplicant.conf''', qui doit avoir une en-tête de la sorte :

 ctrl_interface=/var/run/wpa_supplicant
 ctrl_interface_group=0
 ap_scan=1
 fast_reauth=1
 eapol_version=1


Pour ajouter un réseau, il vous pouvez obtenir la syntaxe avec '''wpa_passphrase''' qui va vous permettre de récupérer la clé chiffrée à partir du mot de passe en clair et du nom de notre réseau (ssid).

Par exemple :

* notre réseau se nomme : Mon_wifi_chez_moi
* la clé en clair est  : Ma_clé_ultra_secrète_anti_hackers 

On lance en console wpa_passphrase comme ceci : wpa_passphrase &lt;ssid&gt; &lt;clé en clair&gt;

Ce qui, dans l'exemple donne :

 $ wpa_passphrase Mon_wifi_chez_moi Ma_clé_ultra_secrète_anti_hackers
 network={
        ssid=&quot;Mon_wifi_chez_moi&quot;
        #psk=&quot;Ma_clé_ultra_secrète_anti_hackers&quot;
        psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116
 }

On vient de récupérer la clé chiffrée, ici psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116. Il suffira alors de la recopier

Vous pouvez recopier le résultat complet de la commande wpa_passphrase dans /etc/wpasupplicant.conf. Vous pourrez alors vous connectez en lançant (en root) :

 # wpa_supplicant -i&lt;interface&gt; -d&lt;driver&gt;-c/etc/wpa_supplicant.conf

Pour &lt;driver&gt;, en général, il faut indiquer « wext ». Mais ceci peut varier selon votre carte WiFi et la version de wpa_supplicant. Pour voir la liste des drivers, lancez :

 $ /sbin/wpa_supplicant -l


Une fois connecté, voir la partie '''ethernet''' ci-dessus pour attribuer une adresse IP à votre carte.

= Routage =

La table de routage de votre machine, lui permet de savoir à quelle machine envoyer un paquet. Vous pouvez la visualiser grace à la commande '''route''' :

 $ /sbin/route -n
 Table de routage IP du noyau
 Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
 192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan0
 0.0.0.0         192.168.0.254   0.0.0.0         UG    0      0        0 wlan0

Ici, la première route est celle du sous-réseau qui permet de communiquer avec d'autres machine du réseau local. Elle indique simplement que pour ces machines là, on communique avec elles directement (passerelle : 0.0.0.0 signifiant qu'il n'y a pas de passerelle). Elle est inscrite automatiquement lors de l'attribution d'une adresse IP à une interface.

La seconde destination, notée 0.0.0.0 est la passerelle par défaut. La passerelle est la box qui me donne accès à Internet (192.168.0.254), car c'est elle qui me relie aux autres machines du réseau. Ainsi, si ma machine veut envoyer un paquet à une adresse qui ne fait pas partie de mon réseau local, elle l'enverra à ma box, qui se chargera de la transmettre.

Si vous vous êtes connecté en IP statique, il vous faut rajouter manuellement la route par défaut :

 # route add default gw &lt;Adresse IP de la passerelle&gt;

[[Category:Réseau et Wifi]]
[[Category:Réseau Généralités]]</text>
      <sha1>px5n5x5zpnkb35ndu0s6v6f726uiixr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1642</id>
      <parentid>1641</parentid>
      <timestamp>2010-07-05T11:15:30Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Connaitre ses interfaces */</comment>
      <text xml:space="preserve" bytes="7967">Sous Debian, on peut se connecter au réseau avec quelques commandes de bases.

= Connaitre ses interfaces =

Pour connaitre le nom de prendra son interface, faites la commande:

 $ /sbin/ifconfig -a

Les interfaces sont listées dans la colonne de gauche. Les interfaces ethernet se nomment généralement « ethX » et les interfaces WiFi se nomment généralement « wlanX », X étant un chiffre (elles sont numérotées à partir de zéro) mais peuvent varier selon le pilote utilisé. 
Si votre interface n'apparait pas, il manque probablement un pilote, allez sur http://kmuto.jp/debian/hcl/ pour savoir quel pilote vous devez utiliser. Vous pouvez aussi voir la page sur les [[Les_Modules|modules]] pour plus d'infos.
root

= Enregistrer la configuration =

Les commandes qui vous seront montrées sur cette page vous permettront de vous connecter au net. Cependant, la configuration ne sera pas enregistrée et il faudra recommencer au prochain démarrage. Pour configurer votre réseau une fois pour toutes, vous préfèrerez plutôt passer par le fichier de configuration du réseau sous Debian: [[Le_fichier_interfaces|/etc/network/interfaces]]

Vous pouvez cependant lire la suite si vous devez vous connecter provisoirement à un réseau, ou bien pour mieux comprendre. Notez d'ailleurs que vous retrouverez ces commandes sur n'importe quelle distribution, alors que le fichier '''interfaces''' est propre à Debian et ses dérivés.

= Activer et désactiver une interface =

La commande '''ifconfig''', sans l'option ''-a'', ne vous montre que les interfaces activées. Pour activer une interface, il faut lancer :

 # ifconfig &lt;interface&gt; up

Pour la désactiver :

 # ifconfig &lt;interface&gt; down

= Se connecter en ethernet =

Pour se connecter à un réseau, il faut :
* être branché à une machine qui vous relie aux autres machines du réseau, généralement, la box que vous donne votre fournisseur d'accès à Internet.
* que votre machine aie un numéro unique sur le réseau pour qu'on la reconnaisse : c'est l'adresse IP
* connaitre l'adresse d'un serveur DNS auquel vous avez accès. En gros, c'est une machine qui enregistre un annuaire des adresses IP des sites. Ce qui vous permet de taper ''www.google.fr'' plutôt que ''209.85.227.103''

== DHCP ==

Le DHCP permet d'attribuer une adresse IP à votre machine automatiquement. Votre machine envoie une demande d'adresse à un serveur DHCP qui se charge de lui attribuer une adresse. Il en profite pour donner l'adresse du des DNS en même temps, ce qui fait que vous n'avez rien d'autre à faire pour vous connecter.
Généralement, votre box fait office de serveur DHCP, et c'est son réglage par défaut.

Il existe deux clients dhcp, '''dhclient''' et '''dhcpcd'''. Le plus probable est que vous ayez dhclient d'installé (il est en priorité standard sous Debian). Les deux s'utilisent de la même façon :

 # dhclient &lt;interface&gt;
 # dhcpcd &lt;interface&gt;

Et c'est tout !

== IP statique ==

Pour vous connecter en choisissant vous même votre IP, il faut utiliser la commande '''ifconfig''', par exemple :

 # ifconfig 192.168.0.1

Vous pouvez aussi changer le masque de sous-réseau :

 # ifconfig 10.0.0.1 netmask 255.255.0.0

(si vous ne savez pas ce qu'est un masque, ignorer simplement cette remarque).

Si vous vous connectez en statique, il vous faut indiquer un ou plusieurs serveur(s) DNS. Pour celà, il faut éditer le fichier '''/etc/resolv.conf''' de la sorte :

 nameserver 8.8.8.8
 nameserver 8.8.4.4

Les adresses montrées ici sont celles des serveurs DNS de google et devraient fonctionner. Cependant, il est plus judicieux d'utiliser ceux fourni par votre FAI.
Certains fournissent une box qui fait cache DNS, dans ce cas, il vous suffit d'indiquer l'IP de votre box (voir '''routes''' ci-dessous).
Vous pouvez aussi utiliser les serveurs d'[http://www.opendns.com/ OpenDNS], ou vous faire votre propre serveur DNS avec [[Bind]].

Il vous faudra aussi une route par défaut vers votre box, voir la partie '''routes''' ci-dessous.

= PPP =

'''ToDo'''

= WiFi =

Pour vous connecter en WiFi, il vous faut des commandes supplémentaires, que vous pouvez installer en faisant :

 # aptitude install wireless-tools wpasupplicant

== Voir les réseaux ==

Pour voir les réseaux WiFi à portée, il faut utiliser '''iwlist'''

 # iwlist &lt;interface&gt; scan

== Se connecter en WEP ==

'''Attention''' : Le chiffrement WEP n'est pas sûr. Il est crackable en 10 minutes avec les outils adaptés. Il est vivement recommandé de passer ou WPA.

Pour se connecter en WEP, il faut utiliser '''iwconfig''' :

 # iwconfig &lt;interface&gt; essid &lt;essid&gt; key &lt;clé WEP&gt;

en remplaçant &lt;essid&gt; par le nom de votre réseau, et &lt;clé WEP&gt; par votre clé.

Voir la partie '''ethernet''' ci-dessus pour attribuer une adresse IP à votre carte.

== Se connecter en WPA ==

Pour le WPA, il faut utiliser '''wpa_supplicant'''.

Pour celà, il vous faut créer un fichier de configuration, par exemple '''/etc/wpasupplicant.conf''', qui doit avoir une en-tête de la sorte :

 ctrl_interface=/var/run/wpa_supplicant
 ctrl_interface_group=0
 ap_scan=1
 fast_reauth=1
 eapol_version=1


Pour ajouter un réseau, il vous pouvez obtenir la syntaxe avec '''wpa_passphrase''' qui va vous permettre de récupérer la clé chiffrée à partir du mot de passe en clair et du nom de notre réseau (ssid).

Par exemple :

* notre réseau se nomme : Mon_wifi_chez_moi
* la clé en clair est  : Ma_clé_ultra_secrète_anti_hackers 

On lance en console wpa_passphrase comme ceci : wpa_passphrase &lt;ssid&gt; &lt;clé en clair&gt;

Ce qui, dans l'exemple donne :

 $ wpa_passphrase Mon_wifi_chez_moi Ma_clé_ultra_secrète_anti_hackers
 network={
        ssid=&quot;Mon_wifi_chez_moi&quot;
        #psk=&quot;Ma_clé_ultra_secrète_anti_hackers&quot;
        psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116
 }

On vient de récupérer la clé chiffrée, ici psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116. Il suffira alors de la recopier

Vous pouvez recopier le résultat complet de la commande wpa_passphrase dans /etc/wpasupplicant.conf. Vous pourrez alors vous connectez en lançant (en root) :

 # wpa_supplicant -i&lt;interface&gt; -d&lt;driver&gt;-c/etc/wpa_supplicant.conf

Pour &lt;driver&gt;, en général, il faut indiquer « wext ». Mais ceci peut varier selon votre carte WiFi et la version de wpa_supplicant. Pour voir la liste des drivers, lancez :

 $ /sbin/wpa_supplicant -l


Une fois connecté, voir la partie '''ethernet''' ci-dessus pour attribuer une adresse IP à votre carte.

= Routage =

La table de routage de votre machine, lui permet de savoir à quelle machine envoyer un paquet. Vous pouvez la visualiser grace à la commande '''route''' :

 $ /sbin/route -n
 Table de routage IP du noyau
 Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
 192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan0
 0.0.0.0         192.168.0.254   0.0.0.0         UG    0      0        0 wlan0

Ici, la première route est celle du sous-réseau qui permet de communiquer avec d'autres machine du réseau local. Elle indique simplement que pour ces machines là, on communique avec elles directement (passerelle : 0.0.0.0 signifiant qu'il n'y a pas de passerelle). Elle est inscrite automatiquement lors de l'attribution d'une adresse IP à une interface.

La seconde destination, notée 0.0.0.0 est la passerelle par défaut. La passerelle est la box qui me donne accès à Internet (192.168.0.254), car c'est elle qui me relie aux autres machines du réseau. Ainsi, si ma machine veut envoyer un paquet à une adresse qui ne fait pas partie de mon réseau local, elle l'enverra à ma box, qui se chargera de la transmettre.

Si vous vous êtes connecté en IP statique, il vous faut rajouter manuellement la route par défaut :

 # route add default gw &lt;Adresse IP de la passerelle&gt;

[[Category:Réseau et Wifi]]
[[Category:Réseau Généralités]]</text>
      <sha1>239ze9358jl49gf9umci8fs33xmkoll</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1643</id>
      <parentid>1642</parentid>
      <timestamp>2010-07-05T11:19:15Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Se connecter en ethernet */</comment>
      <text xml:space="preserve" bytes="7977">Sous Debian, on peut se connecter au réseau avec quelques commandes de bases.

= Connaitre ses interfaces =

Pour connaitre le nom de prendra son interface, faites la commande:

 $ /sbin/ifconfig -a

Les interfaces sont listées dans la colonne de gauche. Les interfaces ethernet se nomment généralement « ethX » et les interfaces WiFi se nomment généralement « wlanX », X étant un chiffre (elles sont numérotées à partir de zéro) mais peuvent varier selon le pilote utilisé. 
Si votre interface n'apparait pas, il manque probablement un pilote, allez sur http://kmuto.jp/debian/hcl/ pour savoir quel pilote vous devez utiliser. Vous pouvez aussi voir la page sur les [[Les_Modules|modules]] pour plus d'infos.
root

= Enregistrer la configuration =

Les commandes qui vous seront montrées sur cette page vous permettront de vous connecter au net. Cependant, la configuration ne sera pas enregistrée et il faudra recommencer au prochain démarrage. Pour configurer votre réseau une fois pour toutes, vous préfèrerez plutôt passer par le fichier de configuration du réseau sous Debian: [[Le_fichier_interfaces|/etc/network/interfaces]]

Vous pouvez cependant lire la suite si vous devez vous connecter provisoirement à un réseau, ou bien pour mieux comprendre. Notez d'ailleurs que vous retrouverez ces commandes sur n'importe quelle distribution, alors que le fichier '''interfaces''' est propre à Debian et ses dérivés.

= Activer et désactiver une interface =

La commande '''ifconfig''', sans l'option ''-a'', ne vous montre que les interfaces activées. Pour activer une interface, il faut lancer :

 # ifconfig &lt;interface&gt; up

Pour la désactiver :

 # ifconfig &lt;interface&gt; down

= Se connecter en ethernet =

Pour se connecter à un réseau, il faut :
* être branché à une machine qui vous relie aux autres machines du réseau, généralement la box que vous donne votre fournisseur d'accès à Internet.
* que votre machine ait un numéro unique sur le réseau pour qu'on la reconnaisse : c'est l'adresse IP
* connaitre l'adresse d'un serveur DNS auquel vous avez accès. En gros, c'est une machine qui enregistre un annuaire des adresses IP des sites. Ce qui vous permet de taper ''www.google.fr'' plutôt que ''209.85.227.103''

== DHCP ==

Le DHCP permet d'attribuer une adresse IP à votre machine automatiquement. Votre machine envoie une demande d'adresse à un serveur DHCP qui se charge de lui attribuer une adresse. Il en profite pour donner l'adresse des DNS en même temps, ce qui fait que vous n'avez rien d'autre à faire pour vous connecter.
Généralement, votre box fait office de serveur DHCP, et c'est son réglage par défaut.

Il existe deux clients dhcp, '''dhclient''' et '''dhcpcd'''. Le plus probable est que vous ayez dhclient d'installé (il est en priorité standard sous Debian). Les deux s'utilisent de la même façon :

 # dhclient &lt;interface&gt;
 # dhcpcd &lt;interface&gt;

Et c'est tout !

== IP statique ==

Pour vous connecter en choisissant vous même votre IP, il faut utiliser la commande '''ifconfig''', par exemple :

 # ifconfig ethX 192.168.0.1

Vous pouvez aussi changer le masque de sous-réseau :

 # ifconfig ethX 10.0.0.1 netmask 255.255.0.0

(si vous ne savez pas ce qu'est un masque, ignorer simplement cette remarque).

Si vous vous connectez en statique, il vous faut indiquer un ou plusieurs serveur(s) DNS. Pour celà, il faut éditer le fichier '''/etc/resolv.conf''' de la sorte :

 nameserver 8.8.8.8
 nameserver 8.8.4.4

Les adresses montrées ici sont celles des serveurs DNS de google et devraient fonctionner. Cependant, il est plus judicieux d'utiliser celles fournies par votre FAI.
Certains fournissent une box qui fait cache DNS, dans ce cas, il vous suffit d'indiquer l'IP de votre box (voir '''routes''' ci-dessous).
Vous pouvez aussi utiliser les serveurs d'[http://www.opendns.com/ OpenDNS], ou vous faire votre propre serveur DNS avec [[Bind]].

Il vous faudra aussi une route par défaut vers votre box, voir la partie '''routes''' ci-dessous.

= PPP =

'''ToDo'''

= WiFi =

Pour vous connecter en WiFi, il vous faut des commandes supplémentaires, que vous pouvez installer en faisant :

 # aptitude install wireless-tools wpasupplicant

== Voir les réseaux ==

Pour voir les réseaux WiFi à portée, il faut utiliser '''iwlist'''

 # iwlist &lt;interface&gt; scan

== Se connecter en WEP ==

'''Attention''' : Le chiffrement WEP n'est pas sûr. Il est crackable en 10 minutes avec les outils adaptés. Il est vivement recommandé de passer ou WPA.

Pour se connecter en WEP, il faut utiliser '''iwconfig''' :

 # iwconfig &lt;interface&gt; essid &lt;essid&gt; key &lt;clé WEP&gt;

en remplaçant &lt;essid&gt; par le nom de votre réseau, et &lt;clé WEP&gt; par votre clé.

Voir la partie '''ethernet''' ci-dessus pour attribuer une adresse IP à votre carte.

== Se connecter en WPA ==

Pour le WPA, il faut utiliser '''wpa_supplicant'''.

Pour celà, il vous faut créer un fichier de configuration, par exemple '''/etc/wpasupplicant.conf''', qui doit avoir une en-tête de la sorte :

 ctrl_interface=/var/run/wpa_supplicant
 ctrl_interface_group=0
 ap_scan=1
 fast_reauth=1
 eapol_version=1


Pour ajouter un réseau, il vous pouvez obtenir la syntaxe avec '''wpa_passphrase''' qui va vous permettre de récupérer la clé chiffrée à partir du mot de passe en clair et du nom de notre réseau (ssid).

Par exemple :

* notre réseau se nomme : Mon_wifi_chez_moi
* la clé en clair est  : Ma_clé_ultra_secrète_anti_hackers 

On lance en console wpa_passphrase comme ceci : wpa_passphrase &lt;ssid&gt; &lt;clé en clair&gt;

Ce qui, dans l'exemple donne :

 $ wpa_passphrase Mon_wifi_chez_moi Ma_clé_ultra_secrète_anti_hackers
 network={
        ssid=&quot;Mon_wifi_chez_moi&quot;
        #psk=&quot;Ma_clé_ultra_secrète_anti_hackers&quot;
        psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116
 }

On vient de récupérer la clé chiffrée, ici psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116. Il suffira alors de la recopier

Vous pouvez recopier le résultat complet de la commande wpa_passphrase dans /etc/wpasupplicant.conf. Vous pourrez alors vous connectez en lançant (en root) :

 # wpa_supplicant -i&lt;interface&gt; -d&lt;driver&gt;-c/etc/wpa_supplicant.conf

Pour &lt;driver&gt;, en général, il faut indiquer « wext ». Mais ceci peut varier selon votre carte WiFi et la version de wpa_supplicant. Pour voir la liste des drivers, lancez :

 $ /sbin/wpa_supplicant -l


Une fois connecté, voir la partie '''ethernet''' ci-dessus pour attribuer une adresse IP à votre carte.

= Routage =

La table de routage de votre machine, lui permet de savoir à quelle machine envoyer un paquet. Vous pouvez la visualiser grace à la commande '''route''' :

 $ /sbin/route -n
 Table de routage IP du noyau
 Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
 192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan0
 0.0.0.0         192.168.0.254   0.0.0.0         UG    0      0        0 wlan0

Ici, la première route est celle du sous-réseau qui permet de communiquer avec d'autres machine du réseau local. Elle indique simplement que pour ces machines là, on communique avec elles directement (passerelle : 0.0.0.0 signifiant qu'il n'y a pas de passerelle). Elle est inscrite automatiquement lors de l'attribution d'une adresse IP à une interface.

La seconde destination, notée 0.0.0.0 est la passerelle par défaut. La passerelle est la box qui me donne accès à Internet (192.168.0.254), car c'est elle qui me relie aux autres machines du réseau. Ainsi, si ma machine veut envoyer un paquet à une adresse qui ne fait pas partie de mon réseau local, elle l'enverra à ma box, qui se chargera de la transmettre.

Si vous vous êtes connecté en IP statique, il vous faut rajouter manuellement la route par défaut :

 # route add default gw &lt;Adresse IP de la passerelle&gt;

[[Category:Réseau et Wifi]]
[[Category:Réseau Généralités]]</text>
      <sha1>i8eonpo47c0ifahup0ilbukdqgxhbom</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4078</id>
      <parentid>1643</parentid>
      <timestamp>2012-04-26T08:37:46Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="7948">Sous Debian, on peut se connecter au réseau avec quelques commandes de bases.

= Connaitre ses interfaces =

Pour connaitre le nom de prendra son interface, faites la commande:

 $ /sbin/ifconfig -a

Les interfaces sont listées dans la colonne de gauche. Les interfaces ethernet se nomment généralement « ethX » et les interfaces [[Protocole::Wifi]] se nomment généralement « wlanX », X étant un chiffre (elles sont numérotées à partir de zéro) mais peuvent varier selon le pilote utilisé. 
Si votre interface n'apparait pas, il manque probablement un pilote, allez sur http://kmuto.jp/debian/hcl/ pour savoir quel pilote vous devez utiliser. Vous pouvez aussi voir la page sur les [[Les_Modules|modules]] pour plus d'infos.
root

= Enregistrer la configuration =

Les commandes qui vous seront montrées sur cette page vous permettront de vous connecter au net. Cependant, la configuration ne sera pas enregistrée et il faudra recommencer au prochain démarrage. Pour configurer votre réseau une fois pour toutes, vous préfèrerez plutôt passer par le fichier de configuration du réseau sous Debian: [[Le_fichier_interfaces|/etc/network/interfaces]]

Vous pouvez cependant lire la suite si vous devez vous connecter provisoirement à un réseau, ou bien pour mieux comprendre. Notez d'ailleurs que vous retrouverez ces commandes sur n'importe quelle distribution, alors que le fichier '''interfaces''' est propre à Debian et ses dérivés.

= Activer et désactiver une interface =

La commande '''ifconfig''', sans l'option ''-a'', ne vous montre que les interfaces activées. Pour activer une interface, il faut lancer :

 # ifconfig &lt;interface&gt; up

Pour la désactiver :

 # ifconfig &lt;interface&gt; down

= Se connecter en ethernet =

Pour se connecter à un réseau, il faut :
* être branché à une machine qui vous relie aux autres machines du réseau, généralement la box que vous donne votre fournisseur d'accès à Internet.
* que votre machine ait un numéro unique sur le réseau pour qu'on la reconnaisse : c'est l'adresse IP
* connaitre l'adresse d'un serveur DNS auquel vous avez accès. En gros, c'est une machine qui enregistre un annuaire des adresses IP des sites. Ce qui vous permet de taper ''www.google.fr'' plutôt que ''209.85.227.103''

== DHCP ==

Le DHCP permet d'attribuer une adresse IP à votre machine automatiquement. Votre machine envoie une demande d'adresse à un serveur DHCP qui se charge de lui attribuer une adresse. Il en profite pour donner l'adresse des DNS en même temps, ce qui fait que vous n'avez rien d'autre à faire pour vous connecter.
Généralement, votre box fait office de serveur DHCP, et c'est son réglage par défaut.

Il existe deux clients dhcp, '''dhclient''' et '''dhcpcd'''. Le plus probable est que vous ayez dhclient d'installé (il est en priorité standard sous Debian). Les deux s'utilisent de la même façon :

 # dhclient &lt;interface&gt;
 # dhcpcd &lt;interface&gt;

Et c'est tout !

== IP statique ==

Pour vous connecter en choisissant vous même votre IP, il faut utiliser la commande '''ifconfig''', par exemple :

 # ifconfig ethX 192.168.0.1

Vous pouvez aussi changer le masque de sous-réseau :

 # ifconfig ethX 10.0.0.1 netmask 255.255.0.0

(si vous ne savez pas ce qu'est un masque, ignorer simplement cette remarque).

Si vous vous connectez en statique, il vous faut indiquer un ou plusieurs serveur(s) DNS. Pour celà, il faut éditer le fichier '''/etc/resolv.conf''' de la sorte :

 nameserver 8.8.8.8
 nameserver 8.8.4.4

Les adresses montrées ici sont celles des serveurs DNS de google et devraient fonctionner. Cependant, il est plus judicieux d'utiliser celles fournies par votre FAI.
Certains fournissent une box qui fait cache DNS, dans ce cas, il vous suffit d'indiquer l'IP de votre box (voir '''routes''' ci-dessous).
Vous pouvez aussi utiliser les serveurs d'[http://www.opendns.com/ OpenDNS], ou vous faire votre propre serveur DNS avec [[Bind]].

Il vous faudra aussi une route par défaut vers votre box, voir la partie '''routes''' ci-dessous.

= PPP =

'''ToDo'''

= WiFi =

Pour vous connecter en WiFi, il vous faut des commandes supplémentaires, que vous pouvez installer en faisant :

 # aptitude install wireless-tools wpasupplicant

== Voir les réseaux ==

Pour voir les réseaux WiFi à portée, il faut utiliser '''iwlist'''

 # iwlist &lt;interface&gt; scan

== Se connecter en WEP ==

'''Attention''' : Le chiffrement WEP n'est pas sûr. Il est crackable en 10 minutes avec les outils adaptés. Il est vivement recommandé de passer ou WPA.

Pour se connecter en WEP, il faut utiliser '''iwconfig''' :

 # iwconfig &lt;interface&gt; essid &lt;essid&gt; key &lt;clé WEP&gt;

en remplaçant &lt;essid&gt; par le nom de votre réseau, et &lt;clé WEP&gt; par votre clé.

Voir la partie '''ethernet''' ci-dessus pour attribuer une adresse IP à votre carte.

== Se connecter en WPA ==

Pour le WPA, il faut utiliser '''wpa_supplicant'''.

Pour celà, il vous faut créer un fichier de configuration, par exemple '''/etc/wpasupplicant.conf''', qui doit avoir une en-tête de la sorte :

 ctrl_interface=/var/run/wpa_supplicant
 ctrl_interface_group=0
 ap_scan=1
 fast_reauth=1
 eapol_version=1


Pour ajouter un réseau, il vous pouvez obtenir la syntaxe avec '''wpa_passphrase''' qui va vous permettre de récupérer la clé chiffrée à partir du mot de passe en clair et du nom de notre réseau (ssid).

Par exemple :

* notre réseau se nomme : Mon_wifi_chez_moi
* la clé en clair est  : Ma_clé_ultra_secrète_anti_hackers 

On lance en console wpa_passphrase comme ceci : wpa_passphrase &lt;ssid&gt; &lt;clé en clair&gt;

Ce qui, dans l'exemple donne :

 $ wpa_passphrase Mon_wifi_chez_moi Ma_clé_ultra_secrète_anti_hackers
 network={
        ssid=&quot;Mon_wifi_chez_moi&quot;
        #psk=&quot;Ma_clé_ultra_secrète_anti_hackers&quot;
        psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116
 }

On vient de récupérer la clé chiffrée, ici psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116. Il suffira alors de la recopier

Vous pouvez recopier le résultat complet de la commande wpa_passphrase dans /etc/wpasupplicant.conf. Vous pourrez alors vous connectez en lançant (en root) :

 # wpa_supplicant -i&lt;interface&gt; -d&lt;driver&gt;-c/etc/wpa_supplicant.conf

Pour &lt;driver&gt;, en général, il faut indiquer « wext ». Mais ceci peut varier selon votre carte WiFi et la version de wpa_supplicant. Pour voir la liste des drivers, lancez :

 $ /sbin/wpa_supplicant -l


Une fois connecté, voir la partie '''ethernet''' ci-dessus pour attribuer une adresse IP à votre carte.

= Routage =

La table de routage de votre machine, lui permet de savoir à quelle machine envoyer un paquet. Vous pouvez la visualiser grace à la commande '''route''' :

 $ /sbin/route -n
 Table de routage IP du noyau
 Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
 192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan0
 0.0.0.0         192.168.0.254   0.0.0.0         UG    0      0        0 wlan0

Ici, la première route est celle du sous-réseau qui permet de communiquer avec d'autres machine du réseau local. Elle indique simplement que pour ces machines là, on communique avec elles directement (passerelle : 0.0.0.0 signifiant qu'il n'y a pas de passerelle). Elle est inscrite automatiquement lors de l'attribution d'une adresse IP à une interface.

La seconde destination, notée 0.0.0.0 est la passerelle par défaut. La passerelle est la box qui me donne accès à Internet (192.168.0.254), car c'est elle qui me relie aux autres machines du réseau. Ainsi, si ma machine veut envoyer un paquet à une adresse qui ne fait pas partie de mon réseau local, elle l'enverra à ma box, qui se chargera de la transmettre.

Si vous vous êtes connecté en IP statique, il vous faut rajouter manuellement la route par défaut :

 # route add default gw &lt;Adresse IP de la passerelle&gt;

[[Category:Réseau]]</text>
      <sha1>rtmdqnjvhmi4itqdlzinx7khkh0ffnn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4403</id>
      <parentid>4078</parentid>
      <timestamp>2012-08-18T03:25:55Z</timestamp>
      <contributor>
        <username>Martin mtl</username>
        <id>173</id>
      </contributor>
      <minor/>
      <comment>/* Connaitre ses interfaces */</comment>
      <text xml:space="preserve" bytes="7952">Sous Debian, on peut se connecter au réseau avec quelques commandes de bases.

= Connaître ses interfaces =

Pour connaître le nom que prendra son interface, faites la commande:

 $ /sbin/ifconfig -a

Les interfaces sont listées dans la colonne de gauche. Les interfaces ethernet se nomment généralement « ethX » et les interfaces [[Protocole::Wifi]] se nomment généralement « wlanX », X étant un chiffre (elles sont numérotées à partir de zéro) mais peuvent varier selon le pilote utilisé. 
Si votre interface n'apparaît pas, il manque probablement un pilote, allez sur http://kmuto.jp/debian/hcl/ pour savoir quel pilote vous devez utiliser. Vous pouvez aussi voir la page sur les [[Les_Modules|modules]] pour plus d'infos.
root

= Enregistrer la configuration =

Les commandes qui vous seront montrées sur cette page vous permettront de vous connecter au net. Cependant, la configuration ne sera pas enregistrée et il faudra recommencer au prochain démarrage. Pour configurer votre réseau une fois pour toutes, vous préfèrerez plutôt passer par le fichier de configuration du réseau sous Debian: [[Le_fichier_interfaces|/etc/network/interfaces]]

Vous pouvez cependant lire la suite si vous devez vous connecter provisoirement à un réseau, ou bien pour mieux comprendre. Notez d'ailleurs que vous retrouverez ces commandes sur n'importe quelle distribution, alors que le fichier '''interfaces''' est propre à Debian et ses dérivés.

= Activer et désactiver une interface =

La commande '''ifconfig''', sans l'option ''-a'', ne vous montre que les interfaces activées. Pour activer une interface, il faut lancer :

 # ifconfig &lt;interface&gt; up

Pour la désactiver :

 # ifconfig &lt;interface&gt; down

= Se connecter en ethernet =

Pour se connecter à un réseau, il faut :
* être branché à une machine qui vous relie aux autres machines du réseau, généralement la box que vous donne votre fournisseur d'accès à Internet.
* que votre machine ait un numéro unique sur le réseau pour qu'on la reconnaisse : c'est l'adresse IP
* connaitre l'adresse d'un serveur DNS auquel vous avez accès. En gros, c'est une machine qui enregistre un annuaire des adresses IP des sites. Ce qui vous permet de taper ''www.google.fr'' plutôt que ''209.85.227.103''

== DHCP ==

Le DHCP permet d'attribuer une adresse IP à votre machine automatiquement. Votre machine envoie une demande d'adresse à un serveur DHCP qui se charge de lui attribuer une adresse. Il en profite pour donner l'adresse des DNS en même temps, ce qui fait que vous n'avez rien d'autre à faire pour vous connecter.
Généralement, votre box fait office de serveur DHCP, et c'est son réglage par défaut.

Il existe deux clients dhcp, '''dhclient''' et '''dhcpcd'''. Le plus probable est que vous ayez dhclient d'installé (il est en priorité standard sous Debian). Les deux s'utilisent de la même façon :

 # dhclient &lt;interface&gt;
 # dhcpcd &lt;interface&gt;

Et c'est tout !

== IP statique ==

Pour vous connecter en choisissant vous même votre IP, il faut utiliser la commande '''ifconfig''', par exemple :

 # ifconfig ethX 192.168.0.1

Vous pouvez aussi changer le masque de sous-réseau :

 # ifconfig ethX 10.0.0.1 netmask 255.255.0.0

(si vous ne savez pas ce qu'est un masque, ignorer simplement cette remarque).

Si vous vous connectez en statique, il vous faut indiquer un ou plusieurs serveur(s) DNS. Pour celà, il faut éditer le fichier '''/etc/resolv.conf''' de la sorte :

 nameserver 8.8.8.8
 nameserver 8.8.4.4

Les adresses montrées ici sont celles des serveurs DNS de google et devraient fonctionner. Cependant, il est plus judicieux d'utiliser celles fournies par votre FAI.
Certains fournissent une box qui fait cache DNS, dans ce cas, il vous suffit d'indiquer l'IP de votre box (voir '''routes''' ci-dessous).
Vous pouvez aussi utiliser les serveurs d'[http://www.opendns.com/ OpenDNS], ou vous faire votre propre serveur DNS avec [[Bind]].

Il vous faudra aussi une route par défaut vers votre box, voir la partie '''routes''' ci-dessous.

= PPP =

'''ToDo'''

= WiFi =

Pour vous connecter en WiFi, il vous faut des commandes supplémentaires, que vous pouvez installer en faisant :

 # aptitude install wireless-tools wpasupplicant

== Voir les réseaux ==

Pour voir les réseaux WiFi à portée, il faut utiliser '''iwlist'''

 # iwlist &lt;interface&gt; scan

== Se connecter en WEP ==

'''Attention''' : Le chiffrement WEP n'est pas sûr. Il est crackable en 10 minutes avec les outils adaptés. Il est vivement recommandé de passer ou WPA.

Pour se connecter en WEP, il faut utiliser '''iwconfig''' :

 # iwconfig &lt;interface&gt; essid &lt;essid&gt; key &lt;clé WEP&gt;

en remplaçant &lt;essid&gt; par le nom de votre réseau, et &lt;clé WEP&gt; par votre clé.

Voir la partie '''ethernet''' ci-dessus pour attribuer une adresse IP à votre carte.

== Se connecter en WPA ==

Pour le WPA, il faut utiliser '''wpa_supplicant'''.

Pour celà, il vous faut créer un fichier de configuration, par exemple '''/etc/wpasupplicant.conf''', qui doit avoir une en-tête de la sorte :

 ctrl_interface=/var/run/wpa_supplicant
 ctrl_interface_group=0
 ap_scan=1
 fast_reauth=1
 eapol_version=1


Pour ajouter un réseau, il vous pouvez obtenir la syntaxe avec '''wpa_passphrase''' qui va vous permettre de récupérer la clé chiffrée à partir du mot de passe en clair et du nom de notre réseau (ssid).

Par exemple :

* notre réseau se nomme : Mon_wifi_chez_moi
* la clé en clair est  : Ma_clé_ultra_secrète_anti_hackers 

On lance en console wpa_passphrase comme ceci : wpa_passphrase &lt;ssid&gt; &lt;clé en clair&gt;

Ce qui, dans l'exemple donne :

 $ wpa_passphrase Mon_wifi_chez_moi Ma_clé_ultra_secrète_anti_hackers
 network={
        ssid=&quot;Mon_wifi_chez_moi&quot;
        #psk=&quot;Ma_clé_ultra_secrète_anti_hackers&quot;
        psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116
 }

On vient de récupérer la clé chiffrée, ici psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116. Il suffira alors de la recopier

Vous pouvez recopier le résultat complet de la commande wpa_passphrase dans /etc/wpasupplicant.conf. Vous pourrez alors vous connectez en lançant (en root) :

 # wpa_supplicant -i&lt;interface&gt; -d&lt;driver&gt;-c/etc/wpa_supplicant.conf

Pour &lt;driver&gt;, en général, il faut indiquer « wext ». Mais ceci peut varier selon votre carte WiFi et la version de wpa_supplicant. Pour voir la liste des drivers, lancez :

 $ /sbin/wpa_supplicant -l


Une fois connecté, voir la partie '''ethernet''' ci-dessus pour attribuer une adresse IP à votre carte.

= Routage =

La table de routage de votre machine, lui permet de savoir à quelle machine envoyer un paquet. Vous pouvez la visualiser grace à la commande '''route''' :

 $ /sbin/route -n
 Table de routage IP du noyau
 Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
 192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan0
 0.0.0.0         192.168.0.254   0.0.0.0         UG    0      0        0 wlan0

Ici, la première route est celle du sous-réseau qui permet de communiquer avec d'autres machine du réseau local. Elle indique simplement que pour ces machines là, on communique avec elles directement (passerelle : 0.0.0.0 signifiant qu'il n'y a pas de passerelle). Elle est inscrite automatiquement lors de l'attribution d'une adresse IP à une interface.

La seconde destination, notée 0.0.0.0 est la passerelle par défaut. La passerelle est la box qui me donne accès à Internet (192.168.0.254), car c'est elle qui me relie aux autres machines du réseau. Ainsi, si ma machine veut envoyer un paquet à une adresse qui ne fait pas partie de mon réseau local, elle l'enverra à ma box, qui se chargera de la transmettre.

Si vous vous êtes connecté en IP statique, il vous faut rajouter manuellement la route par défaut :

 # route add default gw &lt;Adresse IP de la passerelle&gt;

[[Category:Réseau]]</text>
      <sha1>2m61aveu1bsregfamak7hr8unltycz9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4404</id>
      <parentid>4403</parentid>
      <timestamp>2012-08-18T03:30:03Z</timestamp>
      <contributor>
        <username>Martin mtl</username>
        <id>173</id>
      </contributor>
      <minor/>
      <comment>/* Se connecter en ethernet */</comment>
      <text xml:space="preserve" bytes="7952">Sous Debian, on peut se connecter au réseau avec quelques commandes de bases.

= Connaître ses interfaces =

Pour connaître le nom que prendra son interface, faites la commande:

 $ /sbin/ifconfig -a

Les interfaces sont listées dans la colonne de gauche. Les interfaces ethernet se nomment généralement « ethX » et les interfaces [[Protocole::Wifi]] se nomment généralement « wlanX », X étant un chiffre (elles sont numérotées à partir de zéro) mais peuvent varier selon le pilote utilisé. 
Si votre interface n'apparaît pas, il manque probablement un pilote, allez sur http://kmuto.jp/debian/hcl/ pour savoir quel pilote vous devez utiliser. Vous pouvez aussi voir la page sur les [[Les_Modules|modules]] pour plus d'infos.
root

= Enregistrer la configuration =

Les commandes qui vous seront montrées sur cette page vous permettront de vous connecter au net. Cependant, la configuration ne sera pas enregistrée et il faudra recommencer au prochain démarrage. Pour configurer votre réseau une fois pour toutes, vous préfèrerez plutôt passer par le fichier de configuration du réseau sous Debian: [[Le_fichier_interfaces|/etc/network/interfaces]]

Vous pouvez cependant lire la suite si vous devez vous connecter provisoirement à un réseau, ou bien pour mieux comprendre. Notez d'ailleurs que vous retrouverez ces commandes sur n'importe quelle distribution, alors que le fichier '''interfaces''' est propre à Debian et ses dérivés.

= Activer et désactiver une interface =

La commande '''ifconfig''', sans l'option ''-a'', ne vous montre que les interfaces activées. Pour activer une interface, il faut lancer :

 # ifconfig &lt;interface&gt; up

Pour la désactiver :

 # ifconfig &lt;interface&gt; down

= Se connecter en ethernet =

Pour se connecter à un réseau, il faut :
* être branché à une machine qui vous relie aux autres machines du réseau, généralement la box que vous donne votre fournisseur d'accès à Internet.
* que votre machine ait un numéro unique sur le réseau pour qu'on la reconnaisse : c'est l'adresse IP
* connaître l'adresse d'un serveur DNS auquel vous avez accès. En gros, c'est une machine qui enregistre un annuaire des adresses IP des sites. Ce qui vous permet de taper ''www.google.fr'' plutôt que ''209.85.227.103''

== DHCP ==

Le DHCP permet d'attribuer une adresse IP à votre machine automatiquement. Votre machine envoie une demande d'adresse à un serveur DHCP qui se charge de lui attribuer une adresse. Il en profite pour donner l'adresse des DNS en même temps, ce qui fait que vous n'avez rien d'autre à faire pour vous connecter.
Généralement, votre box fait office de serveur DHCP, et c'est son réglage par défaut.

Il existe deux clients dhcp, '''dhclient''' et '''dhcpcd'''. Le plus probable est que vous ayez dhclient d'installé (il est en priorité standard sous Debian). Les deux s'utilisent de la même façon :

 # dhclient &lt;interface&gt;
 # dhcpcd &lt;interface&gt;

Et c'est tout !

== IP statique ==

Pour vous connecter en choisissant vous même votre IP, il faut utiliser la commande '''ifconfig''', par exemple :

 # ifconfig ethX 192.168.0.1

Vous pouvez aussi changer le masque de sous-réseau :

 # ifconfig ethX 10.0.0.1 netmask 255.255.0.0

(si vous ne savez pas ce qu'est un masque, ignorer simplement cette remarque).

Si vous vous connectez en statique, il vous faut indiquer un ou plusieurs serveur(s) DNS. Pour cela, il faut éditer le fichier '''/etc/resolv.conf''' de la sorte :

 nameserver 8.8.8.8
 nameserver 8.8.4.4

Les adresses montrées ici sont celles des serveurs DNS de google et devraient fonctionner. Cependant, il est plus judicieux d'utiliser celles fournies par votre FAI.
Certains fournissent une box qui fait cache DNS, dans ce cas, il vous suffit d'indiquer l'IP de votre box (voir '''routes''' ci-dessous).
Vous pouvez aussi utiliser les serveurs d'[http://www.opendns.com/ OpenDNS], ou vous faire votre propre serveur DNS avec [[Bind]].

Il vous faudra aussi une route par défaut vers votre box, voir la partie '''routes''' ci-dessous.

= PPP =

'''ToDo'''

= WiFi =

Pour vous connecter en WiFi, il vous faut des commandes supplémentaires, que vous pouvez installer en faisant :

 # aptitude install wireless-tools wpasupplicant

== Voir les réseaux ==

Pour voir les réseaux WiFi à portée, il faut utiliser '''iwlist'''

 # iwlist &lt;interface&gt; scan

== Se connecter en WEP ==

'''Attention''' : Le chiffrement WEP n'est pas sûr. Il est crackable en 10 minutes avec les outils adaptés. Il est vivement recommandé de passer ou WPA.

Pour se connecter en WEP, il faut utiliser '''iwconfig''' :

 # iwconfig &lt;interface&gt; essid &lt;essid&gt; key &lt;clé WEP&gt;

en remplaçant &lt;essid&gt; par le nom de votre réseau, et &lt;clé WEP&gt; par votre clé.

Voir la partie '''ethernet''' ci-dessus pour attribuer une adresse IP à votre carte.

== Se connecter en WPA ==

Pour le WPA, il faut utiliser '''wpa_supplicant'''.

Pour celà, il vous faut créer un fichier de configuration, par exemple '''/etc/wpasupplicant.conf''', qui doit avoir une en-tête de la sorte :

 ctrl_interface=/var/run/wpa_supplicant
 ctrl_interface_group=0
 ap_scan=1
 fast_reauth=1
 eapol_version=1


Pour ajouter un réseau, il vous pouvez obtenir la syntaxe avec '''wpa_passphrase''' qui va vous permettre de récupérer la clé chiffrée à partir du mot de passe en clair et du nom de notre réseau (ssid).

Par exemple :

* notre réseau se nomme : Mon_wifi_chez_moi
* la clé en clair est  : Ma_clé_ultra_secrète_anti_hackers 

On lance en console wpa_passphrase comme ceci : wpa_passphrase &lt;ssid&gt; &lt;clé en clair&gt;

Ce qui, dans l'exemple donne :

 $ wpa_passphrase Mon_wifi_chez_moi Ma_clé_ultra_secrète_anti_hackers
 network={
        ssid=&quot;Mon_wifi_chez_moi&quot;
        #psk=&quot;Ma_clé_ultra_secrète_anti_hackers&quot;
        psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116
 }

On vient de récupérer la clé chiffrée, ici psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116. Il suffira alors de la recopier

Vous pouvez recopier le résultat complet de la commande wpa_passphrase dans /etc/wpasupplicant.conf. Vous pourrez alors vous connectez en lançant (en root) :

 # wpa_supplicant -i&lt;interface&gt; -d&lt;driver&gt;-c/etc/wpa_supplicant.conf

Pour &lt;driver&gt;, en général, il faut indiquer « wext ». Mais ceci peut varier selon votre carte WiFi et la version de wpa_supplicant. Pour voir la liste des drivers, lancez :

 $ /sbin/wpa_supplicant -l


Une fois connecté, voir la partie '''ethernet''' ci-dessus pour attribuer une adresse IP à votre carte.

= Routage =

La table de routage de votre machine, lui permet de savoir à quelle machine envoyer un paquet. Vous pouvez la visualiser grace à la commande '''route''' :

 $ /sbin/route -n
 Table de routage IP du noyau
 Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
 192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan0
 0.0.0.0         192.168.0.254   0.0.0.0         UG    0      0        0 wlan0

Ici, la première route est celle du sous-réseau qui permet de communiquer avec d'autres machine du réseau local. Elle indique simplement que pour ces machines là, on communique avec elles directement (passerelle : 0.0.0.0 signifiant qu'il n'y a pas de passerelle). Elle est inscrite automatiquement lors de l'attribution d'une adresse IP à une interface.

La seconde destination, notée 0.0.0.0 est la passerelle par défaut. La passerelle est la box qui me donne accès à Internet (192.168.0.254), car c'est elle qui me relie aux autres machines du réseau. Ainsi, si ma machine veut envoyer un paquet à une adresse qui ne fait pas partie de mon réseau local, elle l'enverra à ma box, qui se chargera de la transmettre.

Si vous vous êtes connecté en IP statique, il vous faut rajouter manuellement la route par défaut :

 # route add default gw &lt;Adresse IP de la passerelle&gt;

[[Category:Réseau]]</text>
      <sha1>5wtlg4t014xgckjuvsh3yy1k6qpek7d</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4405</id>
      <parentid>4404</parentid>
      <timestamp>2012-08-18T03:32:59Z</timestamp>
      <contributor>
        <username>Martin mtl</username>
        <id>173</id>
      </contributor>
      <minor/>
      <comment>/* Se connecter en WEP */</comment>
      <text xml:space="preserve" bytes="7952">Sous Debian, on peut se connecter au réseau avec quelques commandes de bases.

= Connaître ses interfaces =

Pour connaître le nom que prendra son interface, faites la commande:

 $ /sbin/ifconfig -a

Les interfaces sont listées dans la colonne de gauche. Les interfaces ethernet se nomment généralement « ethX » et les interfaces [[Protocole::Wifi]] se nomment généralement « wlanX », X étant un chiffre (elles sont numérotées à partir de zéro) mais peuvent varier selon le pilote utilisé. 
Si votre interface n'apparaît pas, il manque probablement un pilote, allez sur http://kmuto.jp/debian/hcl/ pour savoir quel pilote vous devez utiliser. Vous pouvez aussi voir la page sur les [[Les_Modules|modules]] pour plus d'infos.
root

= Enregistrer la configuration =

Les commandes qui vous seront montrées sur cette page vous permettront de vous connecter au net. Cependant, la configuration ne sera pas enregistrée et il faudra recommencer au prochain démarrage. Pour configurer votre réseau une fois pour toutes, vous préfèrerez plutôt passer par le fichier de configuration du réseau sous Debian: [[Le_fichier_interfaces|/etc/network/interfaces]]

Vous pouvez cependant lire la suite si vous devez vous connecter provisoirement à un réseau, ou bien pour mieux comprendre. Notez d'ailleurs que vous retrouverez ces commandes sur n'importe quelle distribution, alors que le fichier '''interfaces''' est propre à Debian et ses dérivés.

= Activer et désactiver une interface =

La commande '''ifconfig''', sans l'option ''-a'', ne vous montre que les interfaces activées. Pour activer une interface, il faut lancer :

 # ifconfig &lt;interface&gt; up

Pour la désactiver :

 # ifconfig &lt;interface&gt; down

= Se connecter en ethernet =

Pour se connecter à un réseau, il faut :
* être branché à une machine qui vous relie aux autres machines du réseau, généralement la box que vous donne votre fournisseur d'accès à Internet.
* que votre machine ait un numéro unique sur le réseau pour qu'on la reconnaisse : c'est l'adresse IP
* connaître l'adresse d'un serveur DNS auquel vous avez accès. En gros, c'est une machine qui enregistre un annuaire des adresses IP des sites. Ce qui vous permet de taper ''www.google.fr'' plutôt que ''209.85.227.103''

== DHCP ==

Le DHCP permet d'attribuer une adresse IP à votre machine automatiquement. Votre machine envoie une demande d'adresse à un serveur DHCP qui se charge de lui attribuer une adresse. Il en profite pour donner l'adresse des DNS en même temps, ce qui fait que vous n'avez rien d'autre à faire pour vous connecter.
Généralement, votre box fait office de serveur DHCP, et c'est son réglage par défaut.

Il existe deux clients dhcp, '''dhclient''' et '''dhcpcd'''. Le plus probable est que vous ayez dhclient d'installé (il est en priorité standard sous Debian). Les deux s'utilisent de la même façon :

 # dhclient &lt;interface&gt;
 # dhcpcd &lt;interface&gt;

Et c'est tout !

== IP statique ==

Pour vous connecter en choisissant vous même votre IP, il faut utiliser la commande '''ifconfig''', par exemple :

 # ifconfig ethX 192.168.0.1

Vous pouvez aussi changer le masque de sous-réseau :

 # ifconfig ethX 10.0.0.1 netmask 255.255.0.0

(si vous ne savez pas ce qu'est un masque, ignorer simplement cette remarque).

Si vous vous connectez en statique, il vous faut indiquer un ou plusieurs serveur(s) DNS. Pour cela, il faut éditer le fichier '''/etc/resolv.conf''' de la sorte :

 nameserver 8.8.8.8
 nameserver 8.8.4.4

Les adresses montrées ici sont celles des serveurs DNS de google et devraient fonctionner. Cependant, il est plus judicieux d'utiliser celles fournies par votre FAI.
Certains fournissent une box qui fait cache DNS, dans ce cas, il vous suffit d'indiquer l'IP de votre box (voir '''routes''' ci-dessous).
Vous pouvez aussi utiliser les serveurs d'[http://www.opendns.com/ OpenDNS], ou vous faire votre propre serveur DNS avec [[Bind]].

Il vous faudra aussi une route par défaut vers votre box, voir la partie '''routes''' ci-dessous.

= PPP =

'''ToDo'''

= WiFi =

Pour vous connecter en WiFi, il vous faut des commandes supplémentaires, que vous pouvez installer en faisant :

 # aptitude install wireless-tools wpasupplicant

== Voir les réseaux ==

Pour voir les réseaux WiFi à portée, il faut utiliser '''iwlist'''

 # iwlist &lt;interface&gt; scan

== Se connecter en WEP ==

'''Attention''' : Le chiffrement WEP n'est pas sûr. Il est crackable en 10 minutes avec les outils adaptés. Il est vivement recommandé de passer au WPA.

Pour se connecter en WEP, il faut utiliser '''iwconfig''' :

 # iwconfig &lt;interface&gt; essid &lt;essid&gt; key &lt;clé WEP&gt;

en remplaçant &lt;essid&gt; par le nom de votre réseau, et &lt;clé WEP&gt; par votre clé.

Voir la partie '''ethernet''' ci-dessus pour attribuer une adresse IP à votre carte.

== Se connecter en WPA ==

Pour le WPA, il faut utiliser '''wpa_supplicant'''.

Pour celà, il vous faut créer un fichier de configuration, par exemple '''/etc/wpasupplicant.conf''', qui doit avoir une en-tête de la sorte :

 ctrl_interface=/var/run/wpa_supplicant
 ctrl_interface_group=0
 ap_scan=1
 fast_reauth=1
 eapol_version=1


Pour ajouter un réseau, il vous pouvez obtenir la syntaxe avec '''wpa_passphrase''' qui va vous permettre de récupérer la clé chiffrée à partir du mot de passe en clair et du nom de notre réseau (ssid).

Par exemple :

* notre réseau se nomme : Mon_wifi_chez_moi
* la clé en clair est  : Ma_clé_ultra_secrète_anti_hackers 

On lance en console wpa_passphrase comme ceci : wpa_passphrase &lt;ssid&gt; &lt;clé en clair&gt;

Ce qui, dans l'exemple donne :

 $ wpa_passphrase Mon_wifi_chez_moi Ma_clé_ultra_secrète_anti_hackers
 network={
        ssid=&quot;Mon_wifi_chez_moi&quot;
        #psk=&quot;Ma_clé_ultra_secrète_anti_hackers&quot;
        psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116
 }

On vient de récupérer la clé chiffrée, ici psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116. Il suffira alors de la recopier

Vous pouvez recopier le résultat complet de la commande wpa_passphrase dans /etc/wpasupplicant.conf. Vous pourrez alors vous connectez en lançant (en root) :

 # wpa_supplicant -i&lt;interface&gt; -d&lt;driver&gt;-c/etc/wpa_supplicant.conf

Pour &lt;driver&gt;, en général, il faut indiquer « wext ». Mais ceci peut varier selon votre carte WiFi et la version de wpa_supplicant. Pour voir la liste des drivers, lancez :

 $ /sbin/wpa_supplicant -l


Une fois connecté, voir la partie '''ethernet''' ci-dessus pour attribuer une adresse IP à votre carte.

= Routage =

La table de routage de votre machine, lui permet de savoir à quelle machine envoyer un paquet. Vous pouvez la visualiser grace à la commande '''route''' :

 $ /sbin/route -n
 Table de routage IP du noyau
 Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
 192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan0
 0.0.0.0         192.168.0.254   0.0.0.0         UG    0      0        0 wlan0

Ici, la première route est celle du sous-réseau qui permet de communiquer avec d'autres machine du réseau local. Elle indique simplement que pour ces machines là, on communique avec elles directement (passerelle : 0.0.0.0 signifiant qu'il n'y a pas de passerelle). Elle est inscrite automatiquement lors de l'attribution d'une adresse IP à une interface.

La seconde destination, notée 0.0.0.0 est la passerelle par défaut. La passerelle est la box qui me donne accès à Internet (192.168.0.254), car c'est elle qui me relie aux autres machines du réseau. Ainsi, si ma machine veut envoyer un paquet à une adresse qui ne fait pas partie de mon réseau local, elle l'enverra à ma box, qui se chargera de la transmettre.

Si vous vous êtes connecté en IP statique, il vous faut rajouter manuellement la route par défaut :

 # route add default gw &lt;Adresse IP de la passerelle&gt;

[[Category:Réseau]]</text>
      <sha1>o87407atexeuua051boam3ua7e6qyn1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4406</id>
      <parentid>4405</parentid>
      <timestamp>2012-08-18T03:34:11Z</timestamp>
      <contributor>
        <username>Martin mtl</username>
        <id>173</id>
      </contributor>
      <minor/>
      <comment>/* IP statique */</comment>
      <text xml:space="preserve" bytes="7952">Sous Debian, on peut se connecter au réseau avec quelques commandes de bases.

= Connaître ses interfaces =

Pour connaître le nom que prendra son interface, faites la commande:

 $ /sbin/ifconfig -a

Les interfaces sont listées dans la colonne de gauche. Les interfaces ethernet se nomment généralement « ethX » et les interfaces [[Protocole::Wifi]] se nomment généralement « wlanX », X étant un chiffre (elles sont numérotées à partir de zéro) mais peuvent varier selon le pilote utilisé. 
Si votre interface n'apparaît pas, il manque probablement un pilote, allez sur http://kmuto.jp/debian/hcl/ pour savoir quel pilote vous devez utiliser. Vous pouvez aussi voir la page sur les [[Les_Modules|modules]] pour plus d'infos.
root

= Enregistrer la configuration =

Les commandes qui vous seront montrées sur cette page vous permettront de vous connecter au net. Cependant, la configuration ne sera pas enregistrée et il faudra recommencer au prochain démarrage. Pour configurer votre réseau une fois pour toutes, vous préfèrerez plutôt passer par le fichier de configuration du réseau sous Debian: [[Le_fichier_interfaces|/etc/network/interfaces]]

Vous pouvez cependant lire la suite si vous devez vous connecter provisoirement à un réseau, ou bien pour mieux comprendre. Notez d'ailleurs que vous retrouverez ces commandes sur n'importe quelle distribution, alors que le fichier '''interfaces''' est propre à Debian et ses dérivés.

= Activer et désactiver une interface =

La commande '''ifconfig''', sans l'option ''-a'', ne vous montre que les interfaces activées. Pour activer une interface, il faut lancer :

 # ifconfig &lt;interface&gt; up

Pour la désactiver :

 # ifconfig &lt;interface&gt; down

= Se connecter en ethernet =

Pour se connecter à un réseau, il faut :
* être branché à une machine qui vous relie aux autres machines du réseau, généralement la box que vous donne votre fournisseur d'accès à Internet.
* que votre machine ait un numéro unique sur le réseau pour qu'on la reconnaisse : c'est l'adresse IP
* connaître l'adresse d'un serveur DNS auquel vous avez accès. En gros, c'est une machine qui enregistre un annuaire des adresses IP des sites. Ce qui vous permet de taper ''www.google.fr'' plutôt que ''209.85.227.103''

== DHCP ==

Le DHCP permet d'attribuer une adresse IP à votre machine automatiquement. Votre machine envoie une demande d'adresse à un serveur DHCP qui se charge de lui attribuer une adresse. Il en profite pour donner l'adresse des DNS en même temps, ce qui fait que vous n'avez rien d'autre à faire pour vous connecter.
Généralement, votre box fait office de serveur DHCP, et c'est son réglage par défaut.

Il existe deux clients dhcp, '''dhclient''' et '''dhcpcd'''. Le plus probable est que vous ayez dhclient d'installé (il est en priorité standard sous Debian). Les deux s'utilisent de la même façon :

 # dhclient &lt;interface&gt;
 # dhcpcd &lt;interface&gt;

Et c'est tout !

== IP statique ==

Pour vous connecter en choisissant vous-même votre IP, il faut utiliser la commande '''ifconfig''', par exemple :

 # ifconfig ethX 192.168.0.1

Vous pouvez aussi changer le masque de sous-réseau :

 # ifconfig ethX 10.0.0.1 netmask 255.255.0.0

(si vous ne savez pas ce qu'est un masque, ignorer simplement cette remarque).

Si vous vous connectez en statique, il vous faut indiquer un ou plusieurs serveur(s) DNS. Pour cela, il faut éditer le fichier '''/etc/resolv.conf''' de la sorte :

 nameserver 8.8.8.8
 nameserver 8.8.4.4

Les adresses montrées ici sont celles des serveurs DNS de google et devraient fonctionner. Cependant, il est plus judicieux d'utiliser celles fournies par votre FAI.
Certains fournissent une box qui fait cache DNS, dans ce cas, il vous suffit d'indiquer l'IP de votre box (voir '''routes''' ci-dessous).
Vous pouvez aussi utiliser les serveurs d'[http://www.opendns.com/ OpenDNS], ou vous faire votre propre serveur DNS avec [[Bind]].

Il vous faudra aussi une route par défaut vers votre box, voir la partie '''routes''' ci-dessous.

= PPP =

'''ToDo'''

= WiFi =

Pour vous connecter en WiFi, il vous faut des commandes supplémentaires, que vous pouvez installer en faisant :

 # aptitude install wireless-tools wpasupplicant

== Voir les réseaux ==

Pour voir les réseaux WiFi à portée, il faut utiliser '''iwlist'''

 # iwlist &lt;interface&gt; scan

== Se connecter en WEP ==

'''Attention''' : Le chiffrement WEP n'est pas sûr. Il est crackable en 10 minutes avec les outils adaptés. Il est vivement recommandé de passer au WPA.

Pour se connecter en WEP, il faut utiliser '''iwconfig''' :

 # iwconfig &lt;interface&gt; essid &lt;essid&gt; key &lt;clé WEP&gt;

en remplaçant &lt;essid&gt; par le nom de votre réseau, et &lt;clé WEP&gt; par votre clé.

Voir la partie '''ethernet''' ci-dessus pour attribuer une adresse IP à votre carte.

== Se connecter en WPA ==

Pour le WPA, il faut utiliser '''wpa_supplicant'''.

Pour celà, il vous faut créer un fichier de configuration, par exemple '''/etc/wpasupplicant.conf''', qui doit avoir une en-tête de la sorte :

 ctrl_interface=/var/run/wpa_supplicant
 ctrl_interface_group=0
 ap_scan=1
 fast_reauth=1
 eapol_version=1


Pour ajouter un réseau, il vous pouvez obtenir la syntaxe avec '''wpa_passphrase''' qui va vous permettre de récupérer la clé chiffrée à partir du mot de passe en clair et du nom de notre réseau (ssid).

Par exemple :

* notre réseau se nomme : Mon_wifi_chez_moi
* la clé en clair est  : Ma_clé_ultra_secrète_anti_hackers 

On lance en console wpa_passphrase comme ceci : wpa_passphrase &lt;ssid&gt; &lt;clé en clair&gt;

Ce qui, dans l'exemple donne :

 $ wpa_passphrase Mon_wifi_chez_moi Ma_clé_ultra_secrète_anti_hackers
 network={
        ssid=&quot;Mon_wifi_chez_moi&quot;
        #psk=&quot;Ma_clé_ultra_secrète_anti_hackers&quot;
        psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116
 }

On vient de récupérer la clé chiffrée, ici psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116. Il suffira alors de la recopier

Vous pouvez recopier le résultat complet de la commande wpa_passphrase dans /etc/wpasupplicant.conf. Vous pourrez alors vous connectez en lançant (en root) :

 # wpa_supplicant -i&lt;interface&gt; -d&lt;driver&gt;-c/etc/wpa_supplicant.conf

Pour &lt;driver&gt;, en général, il faut indiquer « wext ». Mais ceci peut varier selon votre carte WiFi et la version de wpa_supplicant. Pour voir la liste des drivers, lancez :

 $ /sbin/wpa_supplicant -l


Une fois connecté, voir la partie '''ethernet''' ci-dessus pour attribuer une adresse IP à votre carte.

= Routage =

La table de routage de votre machine, lui permet de savoir à quelle machine envoyer un paquet. Vous pouvez la visualiser grace à la commande '''route''' :

 $ /sbin/route -n
 Table de routage IP du noyau
 Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
 192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan0
 0.0.0.0         192.168.0.254   0.0.0.0         UG    0      0        0 wlan0

Ici, la première route est celle du sous-réseau qui permet de communiquer avec d'autres machine du réseau local. Elle indique simplement que pour ces machines là, on communique avec elles directement (passerelle : 0.0.0.0 signifiant qu'il n'y a pas de passerelle). Elle est inscrite automatiquement lors de l'attribution d'une adresse IP à une interface.

La seconde destination, notée 0.0.0.0 est la passerelle par défaut. La passerelle est la box qui me donne accès à Internet (192.168.0.254), car c'est elle qui me relie aux autres machines du réseau. Ainsi, si ma machine veut envoyer un paquet à une adresse qui ne fait pas partie de mon réseau local, elle l'enverra à ma box, qui se chargera de la transmettre.

Si vous vous êtes connecté en IP statique, il vous faut rajouter manuellement la route par défaut :

 # route add default gw &lt;Adresse IP de la passerelle&gt;

[[Category:Réseau]]</text>
      <sha1>dxjzj1mqfm9ox689di8xzk6c0nx44i3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4407</id>
      <parentid>4406</parentid>
      <timestamp>2012-08-18T03:37:48Z</timestamp>
      <contributor>
        <username>Martin mtl</username>
        <id>173</id>
      </contributor>
      <minor/>
      <comment>/* Se connecter en WPA */</comment>
      <text xml:space="preserve" bytes="7951">Sous Debian, on peut se connecter au réseau avec quelques commandes de bases.

= Connaître ses interfaces =

Pour connaître le nom que prendra son interface, faites la commande:

 $ /sbin/ifconfig -a

Les interfaces sont listées dans la colonne de gauche. Les interfaces ethernet se nomment généralement « ethX » et les interfaces [[Protocole::Wifi]] se nomment généralement « wlanX », X étant un chiffre (elles sont numérotées à partir de zéro) mais peuvent varier selon le pilote utilisé. 
Si votre interface n'apparaît pas, il manque probablement un pilote, allez sur http://kmuto.jp/debian/hcl/ pour savoir quel pilote vous devez utiliser. Vous pouvez aussi voir la page sur les [[Les_Modules|modules]] pour plus d'infos.
root

= Enregistrer la configuration =

Les commandes qui vous seront montrées sur cette page vous permettront de vous connecter au net. Cependant, la configuration ne sera pas enregistrée et il faudra recommencer au prochain démarrage. Pour configurer votre réseau une fois pour toutes, vous préfèrerez plutôt passer par le fichier de configuration du réseau sous Debian: [[Le_fichier_interfaces|/etc/network/interfaces]]

Vous pouvez cependant lire la suite si vous devez vous connecter provisoirement à un réseau, ou bien pour mieux comprendre. Notez d'ailleurs que vous retrouverez ces commandes sur n'importe quelle distribution, alors que le fichier '''interfaces''' est propre à Debian et ses dérivés.

= Activer et désactiver une interface =

La commande '''ifconfig''', sans l'option ''-a'', ne vous montre que les interfaces activées. Pour activer une interface, il faut lancer :

 # ifconfig &lt;interface&gt; up

Pour la désactiver :

 # ifconfig &lt;interface&gt; down

= Se connecter en ethernet =

Pour se connecter à un réseau, il faut :
* être branché à une machine qui vous relie aux autres machines du réseau, généralement la box que vous donne votre fournisseur d'accès à Internet.
* que votre machine ait un numéro unique sur le réseau pour qu'on la reconnaisse : c'est l'adresse IP
* connaître l'adresse d'un serveur DNS auquel vous avez accès. En gros, c'est une machine qui enregistre un annuaire des adresses IP des sites. Ce qui vous permet de taper ''www.google.fr'' plutôt que ''209.85.227.103''

== DHCP ==

Le DHCP permet d'attribuer une adresse IP à votre machine automatiquement. Votre machine envoie une demande d'adresse à un serveur DHCP qui se charge de lui attribuer une adresse. Il en profite pour donner l'adresse des DNS en même temps, ce qui fait que vous n'avez rien d'autre à faire pour vous connecter.
Généralement, votre box fait office de serveur DHCP, et c'est son réglage par défaut.

Il existe deux clients dhcp, '''dhclient''' et '''dhcpcd'''. Le plus probable est que vous ayez dhclient d'installé (il est en priorité standard sous Debian). Les deux s'utilisent de la même façon :

 # dhclient &lt;interface&gt;
 # dhcpcd &lt;interface&gt;

Et c'est tout !

== IP statique ==

Pour vous connecter en choisissant vous-même votre IP, il faut utiliser la commande '''ifconfig''', par exemple :

 # ifconfig ethX 192.168.0.1

Vous pouvez aussi changer le masque de sous-réseau :

 # ifconfig ethX 10.0.0.1 netmask 255.255.0.0

(si vous ne savez pas ce qu'est un masque, ignorer simplement cette remarque).

Si vous vous connectez en statique, il vous faut indiquer un ou plusieurs serveur(s) DNS. Pour cela, il faut éditer le fichier '''/etc/resolv.conf''' de la sorte :

 nameserver 8.8.8.8
 nameserver 8.8.4.4

Les adresses montrées ici sont celles des serveurs DNS de google et devraient fonctionner. Cependant, il est plus judicieux d'utiliser celles fournies par votre FAI.
Certains fournissent une box qui fait cache DNS, dans ce cas, il vous suffit d'indiquer l'IP de votre box (voir '''routes''' ci-dessous).
Vous pouvez aussi utiliser les serveurs d'[http://www.opendns.com/ OpenDNS], ou vous faire votre propre serveur DNS avec [[Bind]].

Il vous faudra aussi une route par défaut vers votre box, voir la partie '''routes''' ci-dessous.

= PPP =

'''ToDo'''

= WiFi =

Pour vous connecter en WiFi, il vous faut des commandes supplémentaires, que vous pouvez installer en faisant :

 # aptitude install wireless-tools wpasupplicant

== Voir les réseaux ==

Pour voir les réseaux WiFi à portée, il faut utiliser '''iwlist'''

 # iwlist &lt;interface&gt; scan

== Se connecter en WEP ==

'''Attention''' : Le chiffrement WEP n'est pas sûr. Il est crackable en 10 minutes avec les outils adaptés. Il est vivement recommandé de passer au WPA.

Pour se connecter en WEP, il faut utiliser '''iwconfig''' :

 # iwconfig &lt;interface&gt; essid &lt;essid&gt; key &lt;clé WEP&gt;

en remplaçant &lt;essid&gt; par le nom de votre réseau, et &lt;clé WEP&gt; par votre clé.

Voir la partie '''ethernet''' ci-dessus pour attribuer une adresse IP à votre carte.

== Se connecter en WPA ==

Pour le WPA, il faut utiliser '''wpa_supplicant'''.

Pour cela, il vous faut créer un fichier de configuration, par exemple '''/etc/wpasupplicant.conf''', qui doit avoir une en-tête de la sorte :

 ctrl_interface=/var/run/wpa_supplicant
 ctrl_interface_group=0
 ap_scan=1
 fast_reauth=1
 eapol_version=1


Pour ajouter un réseau, il vous pouvez obtenir la syntaxe avec '''wpa_passphrase''' qui va vous permettre de récupérer la clé chiffrée à partir du mot de passe en clair et du nom de notre réseau (ssid).

Par exemple :

* notre réseau se nomme : Mon_wifi_chez_moi
* la clé en clair est  : Ma_clé_ultra_secrète_anti_hackers 

On lance en console wpa_passphrase comme ceci : wpa_passphrase &lt;ssid&gt; &lt;clé en clair&gt;

Ce qui, dans l'exemple donne :

 $ wpa_passphrase Mon_wifi_chez_moi Ma_clé_ultra_secrète_anti_hackers
 network={
        ssid=&quot;Mon_wifi_chez_moi&quot;
        #psk=&quot;Ma_clé_ultra_secrète_anti_hackers&quot;
        psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116
 }

On vient de récupérer la clé chiffrée, ici psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116. Il suffira alors de la recopier

Vous pouvez recopier le résultat complet de la commande wpa_passphrase dans /etc/wpasupplicant.conf. Vous pourrez alors vous connectez en lançant (en root) :

 # wpa_supplicant -i&lt;interface&gt; -d&lt;driver&gt;-c/etc/wpa_supplicant.conf

Pour &lt;driver&gt;, en général, il faut indiquer « wext ». Mais ceci peut varier selon votre carte WiFi et la version de wpa_supplicant. Pour voir la liste des drivers, lancez :

 $ /sbin/wpa_supplicant -l


Une fois connecté, voir la partie '''ethernet''' ci-dessus pour attribuer une adresse IP à votre carte.

= Routage =

La table de routage de votre machine, lui permet de savoir à quelle machine envoyer un paquet. Vous pouvez la visualiser grace à la commande '''route''' :

 $ /sbin/route -n
 Table de routage IP du noyau
 Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
 192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan0
 0.0.0.0         192.168.0.254   0.0.0.0         UG    0      0        0 wlan0

Ici, la première route est celle du sous-réseau qui permet de communiquer avec d'autres machine du réseau local. Elle indique simplement que pour ces machines là, on communique avec elles directement (passerelle : 0.0.0.0 signifiant qu'il n'y a pas de passerelle). Elle est inscrite automatiquement lors de l'attribution d'une adresse IP à une interface.

La seconde destination, notée 0.0.0.0 est la passerelle par défaut. La passerelle est la box qui me donne accès à Internet (192.168.0.254), car c'est elle qui me relie aux autres machines du réseau. Ainsi, si ma machine veut envoyer un paquet à une adresse qui ne fait pas partie de mon réseau local, elle l'enverra à ma box, qui se chargera de la transmettre.

Si vous vous êtes connecté en IP statique, il vous faut rajouter manuellement la route par défaut :

 # route add default gw &lt;Adresse IP de la passerelle&gt;

[[Category:Réseau]]</text>
      <sha1>p0syp52zlynfeiv67g8offep6uioh4r</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4408</id>
      <parentid>4407</parentid>
      <timestamp>2012-08-18T03:39:31Z</timestamp>
      <contributor>
        <username>Martin mtl</username>
        <id>173</id>
      </contributor>
      <minor/>
      <comment>/* Routage */</comment>
      <text xml:space="preserve" bytes="7952">Sous Debian, on peut se connecter au réseau avec quelques commandes de bases.

= Connaître ses interfaces =

Pour connaître le nom que prendra son interface, faites la commande:

 $ /sbin/ifconfig -a

Les interfaces sont listées dans la colonne de gauche. Les interfaces ethernet se nomment généralement « ethX » et les interfaces [[Protocole::Wifi]] se nomment généralement « wlanX », X étant un chiffre (elles sont numérotées à partir de zéro) mais peuvent varier selon le pilote utilisé. 
Si votre interface n'apparaît pas, il manque probablement un pilote, allez sur http://kmuto.jp/debian/hcl/ pour savoir quel pilote vous devez utiliser. Vous pouvez aussi voir la page sur les [[Les_Modules|modules]] pour plus d'infos.
root

= Enregistrer la configuration =

Les commandes qui vous seront montrées sur cette page vous permettront de vous connecter au net. Cependant, la configuration ne sera pas enregistrée et il faudra recommencer au prochain démarrage. Pour configurer votre réseau une fois pour toutes, vous préfèrerez plutôt passer par le fichier de configuration du réseau sous Debian: [[Le_fichier_interfaces|/etc/network/interfaces]]

Vous pouvez cependant lire la suite si vous devez vous connecter provisoirement à un réseau, ou bien pour mieux comprendre. Notez d'ailleurs que vous retrouverez ces commandes sur n'importe quelle distribution, alors que le fichier '''interfaces''' est propre à Debian et ses dérivés.

= Activer et désactiver une interface =

La commande '''ifconfig''', sans l'option ''-a'', ne vous montre que les interfaces activées. Pour activer une interface, il faut lancer :

 # ifconfig &lt;interface&gt; up

Pour la désactiver :

 # ifconfig &lt;interface&gt; down

= Se connecter en ethernet =

Pour se connecter à un réseau, il faut :
* être branché à une machine qui vous relie aux autres machines du réseau, généralement la box que vous donne votre fournisseur d'accès à Internet.
* que votre machine ait un numéro unique sur le réseau pour qu'on la reconnaisse : c'est l'adresse IP
* connaître l'adresse d'un serveur DNS auquel vous avez accès. En gros, c'est une machine qui enregistre un annuaire des adresses IP des sites. Ce qui vous permet de taper ''www.google.fr'' plutôt que ''209.85.227.103''

== DHCP ==

Le DHCP permet d'attribuer une adresse IP à votre machine automatiquement. Votre machine envoie une demande d'adresse à un serveur DHCP qui se charge de lui attribuer une adresse. Il en profite pour donner l'adresse des DNS en même temps, ce qui fait que vous n'avez rien d'autre à faire pour vous connecter.
Généralement, votre box fait office de serveur DHCP, et c'est son réglage par défaut.

Il existe deux clients dhcp, '''dhclient''' et '''dhcpcd'''. Le plus probable est que vous ayez dhclient d'installé (il est en priorité standard sous Debian). Les deux s'utilisent de la même façon :

 # dhclient &lt;interface&gt;
 # dhcpcd &lt;interface&gt;

Et c'est tout !

== IP statique ==

Pour vous connecter en choisissant vous-même votre IP, il faut utiliser la commande '''ifconfig''', par exemple :

 # ifconfig ethX 192.168.0.1

Vous pouvez aussi changer le masque de sous-réseau :

 # ifconfig ethX 10.0.0.1 netmask 255.255.0.0

(si vous ne savez pas ce qu'est un masque, ignorer simplement cette remarque).

Si vous vous connectez en statique, il vous faut indiquer un ou plusieurs serveur(s) DNS. Pour cela, il faut éditer le fichier '''/etc/resolv.conf''' de la sorte :

 nameserver 8.8.8.8
 nameserver 8.8.4.4

Les adresses montrées ici sont celles des serveurs DNS de google et devraient fonctionner. Cependant, il est plus judicieux d'utiliser celles fournies par votre FAI.
Certains fournissent une box qui fait cache DNS, dans ce cas, il vous suffit d'indiquer l'IP de votre box (voir '''routes''' ci-dessous).
Vous pouvez aussi utiliser les serveurs d'[http://www.opendns.com/ OpenDNS], ou vous faire votre propre serveur DNS avec [[Bind]].

Il vous faudra aussi une route par défaut vers votre box, voir la partie '''routes''' ci-dessous.

= PPP =

'''ToDo'''

= WiFi =

Pour vous connecter en WiFi, il vous faut des commandes supplémentaires, que vous pouvez installer en faisant :

 # aptitude install wireless-tools wpasupplicant

== Voir les réseaux ==

Pour voir les réseaux WiFi à portée, il faut utiliser '''iwlist'''

 # iwlist &lt;interface&gt; scan

== Se connecter en WEP ==

'''Attention''' : Le chiffrement WEP n'est pas sûr. Il est crackable en 10 minutes avec les outils adaptés. Il est vivement recommandé de passer au WPA.

Pour se connecter en WEP, il faut utiliser '''iwconfig''' :

 # iwconfig &lt;interface&gt; essid &lt;essid&gt; key &lt;clé WEP&gt;

en remplaçant &lt;essid&gt; par le nom de votre réseau, et &lt;clé WEP&gt; par votre clé.

Voir la partie '''ethernet''' ci-dessus pour attribuer une adresse IP à votre carte.

== Se connecter en WPA ==

Pour le WPA, il faut utiliser '''wpa_supplicant'''.

Pour cela, il vous faut créer un fichier de configuration, par exemple '''/etc/wpasupplicant.conf''', qui doit avoir une en-tête de la sorte :

 ctrl_interface=/var/run/wpa_supplicant
 ctrl_interface_group=0
 ap_scan=1
 fast_reauth=1
 eapol_version=1


Pour ajouter un réseau, il vous pouvez obtenir la syntaxe avec '''wpa_passphrase''' qui va vous permettre de récupérer la clé chiffrée à partir du mot de passe en clair et du nom de notre réseau (ssid).

Par exemple :

* notre réseau se nomme : Mon_wifi_chez_moi
* la clé en clair est  : Ma_clé_ultra_secrète_anti_hackers 

On lance en console wpa_passphrase comme ceci : wpa_passphrase &lt;ssid&gt; &lt;clé en clair&gt;

Ce qui, dans l'exemple donne :

 $ wpa_passphrase Mon_wifi_chez_moi Ma_clé_ultra_secrète_anti_hackers
 network={
        ssid=&quot;Mon_wifi_chez_moi&quot;
        #psk=&quot;Ma_clé_ultra_secrète_anti_hackers&quot;
        psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116
 }

On vient de récupérer la clé chiffrée, ici psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116. Il suffira alors de la recopier

Vous pouvez recopier le résultat complet de la commande wpa_passphrase dans /etc/wpasupplicant.conf. Vous pourrez alors vous connectez en lançant (en root) :

 # wpa_supplicant -i&lt;interface&gt; -d&lt;driver&gt;-c/etc/wpa_supplicant.conf

Pour &lt;driver&gt;, en général, il faut indiquer « wext ». Mais ceci peut varier selon votre carte WiFi et la version de wpa_supplicant. Pour voir la liste des drivers, lancez :

 $ /sbin/wpa_supplicant -l


Une fois connecté, voir la partie '''ethernet''' ci-dessus pour attribuer une adresse IP à votre carte.

= Routage =

La table de routage de votre machine lui permet de savoir à quelle machine envoyer un paquet. Vous pouvez la visualiser grâce à la commande '''route''' :

 $ /sbin/route -n
 Table de routage IP du noyau
 Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
 192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan0
 0.0.0.0         192.168.0.254   0.0.0.0         UG    0      0        0 wlan0

Ici, la première route est celle du sous-réseau qui permet de communiquer avec d'autres machines du réseau local. Elle indique simplement que pour ces machines-là, on communique avec elles directement (passerelle : 0.0.0.0 signifiant qu'il n'y a pas de passerelle). Elle est inscrite automatiquement lors de l'attribution d'une adresse IP à une interface.

La seconde destination, notée 0.0.0.0 est la passerelle par défaut. La passerelle est la box qui me donne accès à Internet (192.168.0.254), car c'est elle qui me relie aux autres machines du réseau. Ainsi, si ma machine veut envoyer un paquet à une adresse qui ne fait pas partie de mon réseau local, elle l'enverra à ma box, qui se chargera de la transmettre.

Si vous vous êtes connecté en IP statique, il vous faut rajouter manuellement la route par défaut :

 # route add default gw &lt;Adresse IP de la passerelle&gt;

[[Category:Réseau]]</text>
      <sha1>elo7yl6msxnhnsjse39ehlc9c23rszf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5089</id>
      <parentid>4408</parentid>
      <timestamp>2013-04-07T13:28:00Z</timestamp>
      <contributor>
        <username>Arpinux</username>
        <id>269</id>
      </contributor>
      <comment>/* Se connecter en WPA */</comment>
      <text xml:space="preserve" bytes="8729">Sous Debian, on peut se connecter au réseau avec quelques commandes de bases.

= Connaître ses interfaces =

Pour connaître le nom que prendra son interface, faites la commande:

 $ /sbin/ifconfig -a

Les interfaces sont listées dans la colonne de gauche. Les interfaces ethernet se nomment généralement « ethX » et les interfaces [[Protocole::Wifi]] se nomment généralement « wlanX », X étant un chiffre (elles sont numérotées à partir de zéro) mais peuvent varier selon le pilote utilisé. 
Si votre interface n'apparaît pas, il manque probablement un pilote, allez sur http://kmuto.jp/debian/hcl/ pour savoir quel pilote vous devez utiliser. Vous pouvez aussi voir la page sur les [[Les_Modules|modules]] pour plus d'infos.
root

= Enregistrer la configuration =

Les commandes qui vous seront montrées sur cette page vous permettront de vous connecter au net. Cependant, la configuration ne sera pas enregistrée et il faudra recommencer au prochain démarrage. Pour configurer votre réseau une fois pour toutes, vous préfèrerez plutôt passer par le fichier de configuration du réseau sous Debian: [[Le_fichier_interfaces|/etc/network/interfaces]]

Vous pouvez cependant lire la suite si vous devez vous connecter provisoirement à un réseau, ou bien pour mieux comprendre. Notez d'ailleurs que vous retrouverez ces commandes sur n'importe quelle distribution, alors que le fichier '''interfaces''' est propre à Debian et ses dérivés.

= Activer et désactiver une interface =

La commande '''ifconfig''', sans l'option ''-a'', ne vous montre que les interfaces activées. Pour activer une interface, il faut lancer :

 # ifconfig &lt;interface&gt; up

Pour la désactiver :

 # ifconfig &lt;interface&gt; down

= Se connecter en ethernet =

Pour se connecter à un réseau, il faut :
* être branché à une machine qui vous relie aux autres machines du réseau, généralement la box que vous donne votre fournisseur d'accès à Internet.
* que votre machine ait un numéro unique sur le réseau pour qu'on la reconnaisse : c'est l'adresse IP
* connaître l'adresse d'un serveur DNS auquel vous avez accès. En gros, c'est une machine qui enregistre un annuaire des adresses IP des sites. Ce qui vous permet de taper ''www.google.fr'' plutôt que ''209.85.227.103''

== DHCP ==

Le DHCP permet d'attribuer une adresse IP à votre machine automatiquement. Votre machine envoie une demande d'adresse à un serveur DHCP qui se charge de lui attribuer une adresse. Il en profite pour donner l'adresse des DNS en même temps, ce qui fait que vous n'avez rien d'autre à faire pour vous connecter.
Généralement, votre box fait office de serveur DHCP, et c'est son réglage par défaut.

Il existe deux clients dhcp, '''dhclient''' et '''dhcpcd'''. Le plus probable est que vous ayez dhclient d'installé (il est en priorité standard sous Debian). Les deux s'utilisent de la même façon :

 # dhclient &lt;interface&gt;
 # dhcpcd &lt;interface&gt;

Et c'est tout !

== IP statique ==

Pour vous connecter en choisissant vous-même votre IP, il faut utiliser la commande '''ifconfig''', par exemple :

 # ifconfig ethX 192.168.0.1

Vous pouvez aussi changer le masque de sous-réseau :

 # ifconfig ethX 10.0.0.1 netmask 255.255.0.0

(si vous ne savez pas ce qu'est un masque, ignorer simplement cette remarque).

Si vous vous connectez en statique, il vous faut indiquer un ou plusieurs serveur(s) DNS. Pour cela, il faut éditer le fichier '''/etc/resolv.conf''' de la sorte :

 nameserver 8.8.8.8
 nameserver 8.8.4.4

Les adresses montrées ici sont celles des serveurs DNS de google et devraient fonctionner. Cependant, il est plus judicieux d'utiliser celles fournies par votre FAI.
Certains fournissent une box qui fait cache DNS, dans ce cas, il vous suffit d'indiquer l'IP de votre box (voir '''routes''' ci-dessous).
Vous pouvez aussi utiliser les serveurs d'[http://www.opendns.com/ OpenDNS], ou vous faire votre propre serveur DNS avec [[Bind]].

Il vous faudra aussi une route par défaut vers votre box, voir la partie '''routes''' ci-dessous.

= PPP =

'''ToDo'''

= WiFi =

Pour vous connecter en WiFi, il vous faut des commandes supplémentaires, que vous pouvez installer en faisant :

 # aptitude install wireless-tools wpasupplicant

== Voir les réseaux ==

Pour voir les réseaux WiFi à portée, il faut utiliser '''iwlist'''

 # iwlist &lt;interface&gt; scan

== Se connecter en WEP ==

'''Attention''' : Le chiffrement WEP n'est pas sûr. Il est crackable en 10 minutes avec les outils adaptés. Il est vivement recommandé de passer au WPA.

Pour se connecter en WEP, il faut utiliser '''iwconfig''' :

 # iwconfig &lt;interface&gt; essid &lt;essid&gt; key &lt;clé WEP&gt;

en remplaçant &lt;essid&gt; par le nom de votre réseau, et &lt;clé WEP&gt; par votre clé.

Voir la partie '''ethernet''' ci-dessus pour attribuer une adresse IP à votre carte.

== Se connecter en WPA ==

Pour le WPA, il faut utiliser '''wpa_supplicant'''.

Pour cela, il vous faut créer un fichier de configuration, par exemple '''/etc/wpasupplicant.conf''', qui doit avoir une en-tête de la sorte :

 ctrl_interface=/var/run/wpa_supplicant
 ctrl_interface_group=0
 ap_scan=1
 fast_reauth=1
 eapol_version=1


Pour ajouter un réseau, il vous pouvez obtenir la syntaxe avec '''wpa_passphrase''' qui va vous permettre de récupérer la clé chiffrée à partir du mot de passe en clair et du nom de notre réseau (ssid).

Par exemple :

* notre réseau se nomme : Mon_wifi_chez_moi
* la clé en clair est  : Ma_clé_ultra_secrète_anti_hackers 

On lance en console wpa_passphrase comme ceci : wpa_passphrase &lt;ssid&gt; &lt;clé en clair&gt;

Ce qui, dans l'exemple donne :

 $ wpa_passphrase Mon_wifi_chez_moi Ma_clé_ultra_secrète_anti_hackers
 network={
        ssid=&quot;Mon_wifi_chez_moi&quot;
        #psk=&quot;Ma_clé_ultra_secrète_anti_hackers&quot;
        psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116
 }

On vient de récupérer la clé chiffrée, ici psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116. Il suffira alors de la recopier

Vous pouvez recopier le résultat complet de la commande wpa_passphrase dans /etc/wpasupplicant.conf. Vous pourrez alors vous connectez en lançant (en root) :

 # wpa_supplicant -i&lt;interface&gt; -d&lt;driver&gt;-c/etc/wpa_supplicant.conf

Pour &lt;driver&gt;, en général, il faut indiquer « wext ». Mais ceci peut varier selon votre carte WiFi et la version de wpa_supplicant. Pour voir la liste des drivers, lancez :

 $ /sbin/wpa_supplicant -l


Une fois connecté, voir la partie '''ethernet''' ci-dessus pour attribuer une adresse IP à votre carte.


== Méthode simplifiée WPA ==

wpa_supplicant possède un mode ''roaming'' qui permet de n'avoir que wpa_supplicant à configurer. paquets nécessaires: '''wireless-tools''', '''firmware''' de votre carte wifi.
ajouter à votre /etc/network/interfaces (en s'assurant que votre interface wifi est 'wlan0'):

 allow-hotplug wlan0
 iface wlan0 inet manual
     wpa-roam /etc/wpa_supplicant.conf

 iface default inet dhcp

un petit &quot;iwlist&quot; pour voir les point d'accès disponibles (il faut que votre carte wifi soit déjà configurée et up), puis il suffit d'ajouter les point d'accès à votre fichier de configuration:

 # wpa_passphrase votre_essid &gt;&gt; /etc/wpa_supplicant.conf

voila, au prochain démarrage (ou relance du service networking) votre wifi sera operationnel.

= Routage =

La table de routage de votre machine lui permet de savoir à quelle machine envoyer un paquet. Vous pouvez la visualiser grâce à la commande '''route''' :

 $ /sbin/route -n
 Table de routage IP du noyau
 Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
 192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan0
 0.0.0.0         192.168.0.254   0.0.0.0         UG    0      0        0 wlan0

Ici, la première route est celle du sous-réseau qui permet de communiquer avec d'autres machines du réseau local. Elle indique simplement que pour ces machines-là, on communique avec elles directement (passerelle : 0.0.0.0 signifiant qu'il n'y a pas de passerelle). Elle est inscrite automatiquement lors de l'attribution d'une adresse IP à une interface.

La seconde destination, notée 0.0.0.0 est la passerelle par défaut. La passerelle est la box qui me donne accès à Internet (192.168.0.254), car c'est elle qui me relie aux autres machines du réseau. Ainsi, si ma machine veut envoyer un paquet à une adresse qui ne fait pas partie de mon réseau local, elle l'enverra à ma box, qui se chargera de la transmettre.

Si vous vous êtes connecté en IP statique, il vous faut rajouter manuellement la route par défaut :

 # route add default gw &lt;Adresse IP de la passerelle&gt;

[[Category:Réseau]]</text>
      <sha1>ddcwcaienxkhxpdoersveafikfmx6dc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Configuration dun serveur mail avec Postfix</title>
    <ns>0</ns>
    <id>680</id>
    <redirect title="Configuration d&#039;un serveur mail avec Postfix" />
    <revision>
      <id>2889</id>
      <timestamp>2011-04-13T07:51:55Z</timestamp>
      <contributor>
        <username>Debianhadic</username>
        <id>11</id>
      </contributor>
      <comment>a renommé [[Configuration dun serveur mail avec Postfix]] en [[Configuration d'un serveur mail avec Postfix]] : et l'apostrophe nom de non !</comment>
      <text xml:space="preserve" bytes="61">#REDIRECTION [[Configuration d'un serveur mail avec Postfix]]</text>
      <sha1>4f00hvbx82u009arg16lx7b18z0c2c5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Configurer et surveiller un onduleur</title>
    <ns>0</ns>
    <id>1169</id>
    <redirect title="Configurer et surveiller un onduleur avec NUT" />
    <revision>
      <id>4798</id>
      <timestamp>2012-12-07T08:11:22Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <comment>WikiSysop a déplacé la page [[Configurer et surveiller un onduleur]] vers [[Configurer et surveiller un onduleur avec NUT]] : Oublie de NUT dans le titre.</comment>
      <text xml:space="preserve" bytes="62">#REDIRECTION [[Configurer et surveiller un onduleur avec NUT]]</text>
      <sha1>eb9h4ogf9znobc1yqb7hdam549itbih</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Configurer et surveiller un onduleur avec NUT</title>
    <ns>0</ns>
    <id>1168</id>
    <revision>
      <id>4795</id>
      <timestamp>2012-12-07T08:04:18Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « Ce tuto est destiné à vous aider à configurer (et surveiller) un onduleur sur une Debian.  Nous avons utilisés un onduleur PROLINK PRO850VU, connecté à l'ordinateur ... »</comment>
      <text xml:space="preserve" bytes="12204">Ce tuto est destiné à vous aider à configurer (et surveiller) un onduleur sur une Debian.

Nous avons utilisés un onduleur PROLINK PRO850VU, connecté à l'ordinateur par un câble USB.

== Installation de NUT ==

=== Installation ===

Branchez le câble de communication (ici un cable USB) de l'onduleur et vérifiez qu'il est bien détecté

 $ dmesg
 ... 
 [60193.736139] usb 3-4: new low-speed USB device number 2 using xhci_hcd
 [60193.762985] generic-usb 0003:0665:5161.0004: hiddev0,hidraw3: USB HID v1.00 Device [INNO TECH USB to Serial] on usb-0000:00:14.0-4/input0

Installez nut

 # apt-get install nut
 ...
 Les paquets supplémentaires suivants seront installés : 
  libupsclient1 nut-client nut-server
 ...

=== Configuration ===

Configurez votre onduleur:
Il existe toute sorte de drivers, il faudra trouver le bon...

 ls /lib/nut
 apcsmart      belkin        bestuferrups  clone         everups     ivtscd        metasys      newmge-shut  powerpanel    solis          upscode2
 apcsmart-old  belkinunv     bestups       clone-outlet  gamatronic  liebert       mge-shut     oneac        rhino         tripplite      usbhid-ups
 bcmxcp        bestfcom      blazer_ser    dummy-ups     genericups  liebert-esp2  mge-utalk    optiups      richcomm_usb  tripplitesu    victronups
 bcmxcp_usb    bestfortress  blazer_usb    etapro        isbmex      masterguard   microdowell  powercom     safenet       tripplite_usb

Ce fichier ''/usr/share/nut/driver.list'' contient une liste d'onduleurs et le driver qu'il faut utiliser.

Prolink n'est pas dans la liste (il ne doivent pas ouvrir les spécification de leur matériel...); Nous avons réussi à faire fonctionner notre PRO850VU avec le driver &quot;blazer_usb&quot;

Si vous n'êtes pas sur du port de communication, mettez le à: port = auto

 # nano /etc/nut/ups.conf
 ...
 [apc]
        driver = blazer_usb
        port = /dev/ttyS0
        #port = auto
 ...

Ajoutez ensuite une règle à UDEV afin qu'il attribue ttyS0 (si c'est bien le port sur lequel est l'onduleur) au groupe nut:

 # nano /etc/udev/rules.d/99_nut-serialups.rules
 KERNEL==&quot;ttyS0&quot;, GROUP=&quot;nut&quot;

Rafraichissez UDEV

 udevadm trigger
 udevadm control --reload-rules

Changez manuellement le groupe de ttyS0 (ce sera automatique au prochain demarrage):

 chgrp nut /dev/ttyS0

Démarrez upsdrvctl afin de vérifier que votre configuration (dans ups.conf) est la bonne:

 upsdrvctl start

 Network UPS Tools - UPS driver controller 2.6.3
 Network UPS Tools - Megatec/Q1 protocol USB driver 0.04 (2.6.3)
 Supported UPS detected with mustek protocol
 Vendor information unavailable
 Battery runtime will not be calculated (runtimecal not set)

Configurez nut.conf

 # nano /etc/nut/nut.conf
 MODE=standalone

Configuration pour upsmon:

 # nano /etc/nut/upsd.conf
 LISTEN 127.0.0.1 3493

 # nano /etc/nut/upsd.users
 [admin]
     password = motdepasse
     allowfrom = localhost
     upsmon master
     actions = SET
     instcmds = ALL

=== Configuration des alertes et actions ===

 # nano /etc/nut/upsmon.conf
&lt;pre&gt;
# Network UPS Tools: example upsmon configuration
#
# This file contains passwords, so keep it secure.

MONITOR apc@localhost 1 admin motdepasse master
SHUTDOWNCMD &quot;/sbin/shutdown -h now&quot;
HOSTSYNC 15
POWERDOWNFLAG /etc/nut/killpower
FINALDELAY 5
NOTIFYCMD /sbin/upssched
NOTIFYMSG ONBATT &quot;%s is on battery&quot;
NOTIFYMSG ONLINE &quot;%s is back online&quot;
NOTIFYMSG LOWBATT &quot;%s has a low battery!&quot;
NOTIFYMSG SHUTDOWN &quot;System is being shutdown!&quot;

NOTIFYFLAG ONLINE SYSLOG+EXEC
NOTIFYFLAG ONBATT SYSLOG+EXEC
NOTIFYFLAG LOWBATT SYSLOG+EXEC
NOTIFYFLAG FSD SYSLOG+WALL+EXEC
NOTIFYFLAG COMMOK SYSLOG+EXEC
NOTIFYFLAG COMMBAD SYSLOG+EXEC
NOTIFYFLAG SHUTDOWN SYSLOG+EXEC
NOTIFYFLAG REPLBATT SYSLOG+EXEC
NOTIFYFLAG NOCOMM SYSLOG+EXEC
&lt;/pre&gt;

Configurons l'arrêt:

 # nano /etc/nut/upssched.conf
&lt;pre&gt;
LOCKFN /var/lib/nut/upssched.lock
PIPEFN /var/lib/nut/upssched.pipe
CMDSCRIPT /bin/upssched-cmd
AT ONBATT * START-TIMER onbatt1 13
AT ONLINE * CANCEL-TIMER onbatt1
#AT ONBATT * START-TIMER earlyshutdown 30
#AT ONLINE * CANCEL-TIMER earlyshutdown
AT ONBATT * START-TIMER onbattwarn 30
AT ONLINE * CANCEL-TIMER onbattwarn
&lt;/pre&gt;

Le point important est de vérifier sur votre système si la fichier upssched-cmd existe et s'il se trouve à l'endroit que vous avez indiqué dans upssched.conf
S'il n'existe pas:

 touch /bin/upssched-cmd
 chmod +x /bin/upssched-cmd

Préparez le démarrage automatique de upsd et upsmon (selon votre branche - Stable, Testing ou Unstable - il peut y avoir des variations dans les noms des scripts dans init.d)

 # update-rc.d ups-monitor defaults
  Adding system startup for /etc/init.d/ups-monitor ...
    /etc/rc0.d/K20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc1.d/K20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc6.d/K20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc2.d/S20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc3.d/S20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc4.d/S20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc5.d/S20ups-monitor -&gt; ../init.d/ups-monitor

=== Tests ===

Éteignez la machine, branchez l'onduleur et redémarrez:

 /etc/init.d/ups-monitor restart &amp;&amp; tail -f /var/log/syslog
  * Restarting Network UPS Tools                                                                                                                                           [ OK ] 
 Dec  5 12:00:19 laurent upsd[2404]: ACL in upsd.conf is no longer supported - switch to LISTEN
 Dec  5 12:00:19 laurent upsd[2404]: ACCEPT in upsd.conf is no longer supported - switch to LISTEN
 Dec  5 12:00:19 laurent upsd[2404]: REJECT in upsd.conf is no longer supported - switch to LISTEN
 Dec  5 12:00:19 laurent upsd[2404]: listening on 127.0.0.1 port 3493
 Dec  5 12:00:19 laurent upsd[2404]: listening on ::1 port 3493
 Dec  5 12:00:19 laurent upsd[2404]: Connected to UPS [apc]: blazer_usb-apc
 Dec  5 12:00:19 laurent upsd[2404]: allowfrom in upsd.users is no longer used
 Dec  5 12:00:19 laurent upsd[2405]: Startup successful
 Dec  5 12:00:19 laurent upsmon[2407]: Startup successful
 Dec  5 12:00:19 laurent upsd[2405]: User admin@127.0.0.1 logged into UPS [apc]

 # /etc/init.d/ups-monitor status
 Checking status of Network UPS Tools
  * upsd is running
  * upsmon is running

 # upsc -l
 apc

Vérification de l'état complet:

 # /bin/upsc apc@localhost
 battery.voltage: 13.10
 battery.voltage.nominal: 12.0
 beeper.status: enabled
 device.type: ups
 driver.name: blazer_usb
 driver.parameter.pollinterval: 2
 driver.parameter.port: /dev/ttyS0
 driver.version: 2.6.3
 driver.version.internal: 0.04
 input.current.nominal: 3.0
 input.frequency: 49.6
 input.frequency.nominal: 50
 input.voltage: 232.8
 input.voltage.fault: 232.8
 input.voltage.nominal: 230
 output.voltage: 234.9
 ups.delay.shutdown: 30
 ups.delay.start: 180
 ups.load: 9
 ups.productid: 5161
 ups.status: OL
 ups.type: offline / line interactive
 ups.vendorid: 0665

S'il manque la charge (comme c'est le cas ci-dessus, il faut préciser le minima et maxima du voltage de la batterie dans le fichier ups.conf:

 [apc]
        driver = blazer_usb
        port = /dev/ttyS0
        default.battery.voltage.high = 14
        default.battery.voltage.low = 11

 # /bin/upsc apc@localhost
&lt;pre&gt;
battery.charge: 77
battery.voltage: 13.30
battery.voltage.high: 14
battery.voltage.low: 11
battery.voltage.nominal: 12.0
beeper.status: enabled
device.type: ups
driver.name: blazer_usb
driver.parameter.pollinterval: 2
driver.parameter.port: /dev/ttyS0
driver.version: 2.6.3
driver.version.internal: 0.04
input.current.nominal: 3.0
input.frequency: 49.6
input.frequency.nominal: 50
input.voltage: 237.0
input.voltage.fault: 234.9
input.voltage.nominal: 230
output.voltage: 234.9
ups.delay.shutdown: 30
ups.delay.start: 180
ups.load: 8
ups.productid: 5161
ups.status: OL
ups.type: offline / line interactive
ups.vendorid: 0665
&lt;/pre&gt;

Vérifions si la commande d'arrêt fonctionne (Attention cela va arrếter la machine immédiatement...)

 # /sbin/upsmon -c fsd

Vérifions si le &quot;timer&quot; fonctionne (débranchez le cable d'alimentation de l'onduleur - Rebranchez le quand l'alerte est passé dans les logs):

 # tail -f /var/log/daemon.log | grep upssched
 Dec  5 15:23:33 sidlol upssched[28374]: Timer daemon started
 Dec  5 15:23:33 sidlol upssched[28374]: New timer: earlyshutdown (120 seconds)
 ...
 Dec  5 15:25:18 sidlol upssched[28374]: Cancelling timer: earlyshutdown
 Dec  5 15:25:31 sidlol upssched[28374]: Timer queue empty, exiting

Et observons les messages (broadcast) dans une console:

 Diffusion de message de nut@laurent
         (somewhere) at 15:25 ...
 
 UPS apc@localhost on battery


Modifions le script-exemple (upssched-cmd) pour qu'il envoie la commande d’arrêt sur l'évènement onbattwarn:

&lt;pre&gt;
#! /bin/sh
#
# This script should be called by upssched via the CMDSCRIPT directive.
# 
# Here is a quick example to show how to handle a bunch of possible
# timer names with the help of the case structure.
#
# This script may be replaced with another program without harm.
#
# The first argument passed to your CMDSCRIPT is the name of the timer
# from your AT lines.

case $1 in
        upsgone)
                logger -t upssched-cmd &quot;The UPS has been gone for a while&quot;
                ;;
        onbattwarn)
                logger -t upssched-cmd &quot;Shutting down using: upsmon -c fsd&quot;
                upsmon -c fsd
                ;;
        *)
                logger -t upssched-cmd &quot;Unrecognized command: $1&quot;
                ;;
esac
&lt;/pre&gt;

Vous pouvez bien sur lancer la commande (ou le script) que vous souhaitez, envoyer un mail ou un message d'alerte par ejabberd, stopper un programme, etc.

Et bien sur, testez!

 # tail -f /var/log/syslog
&lt;pre&gt;
...
Dec  6 07:34:44 sidlol upsmon[3968]: apc@localhost is on battery
Dec  6 07:34:44 sidlol upssched[16976]: Timer daemon started
Dec  6 07:34:44 sidlol upssched[16976]: New timer: onbatt1 (13 seconds)
Dec  6 07:34:44 sidlol upssched[16976]: New timer: onbattwarn (120 seconds)
...
Dec  6 07:36:44 sidlol upssched[16976]: Event: onbattwarn
Dec  6 07:36:44 sidlol upssched-cmd: Shutting down using: upsmon -c fsd
Dec  6 07:36:44 sidlol upsmon[3968]: Signal 10: User requested FSD
Dec  6 07:36:44 sidlol upsd[3890]: Client admin@127.0.0.1 set FSD on UPS [apc]
Dec  6 07:36:44 sidlol upsmon[3968]: Executing automatic power-fail shutdown
Dec  6 07:36:44 sidlol upsmon[3968]: System is being shutdown!
&lt;/pre&gt;

== nut-cgi: Surveillance Web de votre onduleur dans un navigateur ==

 #apt-get install nut-cgi
 ...
 Les paquets supplémentaires suivants seront installés : 
   apache2 apache2-mpm-worker apache2-utils apache2.2-bin apache2.2-common libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap

Les dépendances sont importantes (Apache2). Si vous ne souhaitez pas installer Apache, préférez [[nut-monitor: Surveillance Web de votre onduleur via un GUI NUT-monitor]]
 # nano /etc/nut/hosts.conf
 MONITOR apc@localhost &quot;Local Prolink&quot;

 # nano /etc/apache2/sites-available/apache-nut.conf

 ScriptAlias /nut /usr/lib/cgi-bin/nut
 &lt;Directory /usr/lib/cgi-bin/nut&gt;
        Deny from all
        Allow from 127.0.0.1 10.10.10.0
        AllowOverride None
        Options ExecCGI
 &lt;/Directory&gt;

 # a2ensite apache-nut.conf &amp;&amp; service apache2 restart
 Enabling site apache-nut.conf.
 To activate the new configuration, you need to run:
   service apache2 reload
  [ ok ] Restarting web server: apache2 ... waiting .

Vous devriez déjà avoir accès à la page Web de monitoring de nut:

[[Fichier:Nut-cgi 01.png]]

[[Fichier:Nut-cgi 02.png]]

[[Fichier:Nut-cgi 03.png]]

Mais pas à la page de configuration...

[[Fichier:Nut-cgi 04.png]]

Pour cela il faudra un peu de sécurité, sans quoi vous ne pourrez pas y accéder!

 # nano /usr/lib/cgi-bin/nut/.htaccess
 &lt;Files upsset.cgi&gt;
        deny from all
        allow from localhost
 &lt;/Files&gt;

 # nano /etc/nut/upsset.conf
 ...
 
 I_HAVE_SECURED_MY_CGI_DIRECTORY
 
[[Fichier:Nut-cgi 05.png]]

== nut-monitor: Surveillance Web de votre onduleur via un GUI ==

 # apt-get install nut-monitor
 ...
 Les paquets supplémentaires suivants seront installés : 
   python-nut

[[Fichier:Nut-cgi 06.png]]

== Sources ==

A faire.</text>
      <sha1>2pieccrmpw91bxq7o8y04n7xsjg8xqm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4796</id>
      <parentid>4795</parentid>
      <timestamp>2012-12-07T08:08:44Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Remplacement nano par editor + &quot;ébauche&quot;</comment>
      <text xml:space="preserve" bytes="12255">{{Ébauche|NUT}}

Ce tuto est destiné à vous aider à configurer (et surveiller) un onduleur sur une Debian.

Nous avons utilisés un onduleur PROLINK PRO850VU, connecté à l'ordinateur par un câble USB.

== Installation de NUT ==

=== Installation ===

Branchez le câble de communication (ici un cable USB) de l'onduleur et vérifiez qu'il est bien détecté

 $ dmesg
 ... 
 [60193.736139] usb 3-4: new low-speed USB device number 2 using xhci_hcd
 [60193.762985] generic-usb 0003:0665:5161.0004: hiddev0,hidraw3: USB HID v1.00 Device [INNO TECH USB to Serial] on usb-0000:00:14.0-4/input0

Installez nut

 # apt-get install nut
 ...
 Les paquets supplémentaires suivants seront installés : 
  libupsclient1 nut-client nut-server
 ...

=== Configuration ===

Configurez votre onduleur:
Il existe toute sorte de drivers, il faudra trouver le bon...

 ls /lib/nut
 apcsmart      belkin        bestuferrups  clone         everups     ivtscd        metasys      newmge-shut  powerpanel    solis          upscode2
 apcsmart-old  belkinunv     bestups       clone-outlet  gamatronic  liebert       mge-shut     oneac        rhino         tripplite      usbhid-ups
 bcmxcp        bestfcom      blazer_ser    dummy-ups     genericups  liebert-esp2  mge-utalk    optiups      richcomm_usb  tripplitesu    victronups
 bcmxcp_usb    bestfortress  blazer_usb    etapro        isbmex      masterguard   microdowell  powercom     safenet       tripplite_usb

Ce fichier ''/usr/share/nut/driver.list'' contient une liste d'onduleurs et le driver qu'il faut utiliser.

Prolink n'est pas dans la liste (il ne doivent pas ouvrir les spécification de leur matériel...); Nous avons réussi à faire fonctionner notre PRO850VU avec le driver &quot;blazer_usb&quot;

Si vous n'êtes pas sur du port de communication, mettez le à: port = auto

 # $editor /etc/nut/ups.conf
 ...
 [apc]
        driver = blazer_usb
        port = /dev/ttyS0
        #port = auto
 ...

Ajoutez ensuite une règle à UDEV afin qu'il attribue ttyS0 (si c'est bien le port sur lequel est l'onduleur) au groupe nut:

 # $editor /etc/udev/rules.d/99_nut-serialups.rules
 KERNEL==&quot;ttyS0&quot;, GROUP=&quot;nut&quot;

Rafraichissez UDEV

 udevadm trigger
 udevadm control --reload-rules

Changez manuellement le groupe de ttyS0 (ce sera automatique au prochain demarrage):

 chgrp nut /dev/ttyS0

Démarrez upsdrvctl afin de vérifier que votre configuration (dans ups.conf) est la bonne:

 upsdrvctl start

 Network UPS Tools - UPS driver controller 2.6.3
 Network UPS Tools - Megatec/Q1 protocol USB driver 0.04 (2.6.3)
 Supported UPS detected with mustek protocol
 Vendor information unavailable
 Battery runtime will not be calculated (runtimecal not set)

Configurez nut.conf

 # $editor /etc/nut/nut.conf
 MODE=standalone

Configuration pour upsmon:

 # $editor /etc/nut/upsd.conf
 LISTEN 127.0.0.1 3493

 # $editor /etc/nut/upsd.users
 [admin]
     password = motdepasse
     allowfrom = localhost
     upsmon master
     actions = SET
     instcmds = ALL

=== Configuration des alertes et actions ===

 # $editor /etc/nut/upsmon.conf
&lt;pre&gt;
# Network UPS Tools: example upsmon configuration
#
# This file contains passwords, so keep it secure.

MONITOR apc@localhost 1 admin motdepasse master
SHUTDOWNCMD &quot;/sbin/shutdown -h now&quot;
HOSTSYNC 15
POWERDOWNFLAG /etc/nut/killpower
FINALDELAY 5
NOTIFYCMD /sbin/upssched
NOTIFYMSG ONBATT &quot;%s is on battery&quot;
NOTIFYMSG ONLINE &quot;%s is back online&quot;
NOTIFYMSG LOWBATT &quot;%s has a low battery!&quot;
NOTIFYMSG SHUTDOWN &quot;System is being shutdown!&quot;

NOTIFYFLAG ONLINE SYSLOG+EXEC
NOTIFYFLAG ONBATT SYSLOG+EXEC
NOTIFYFLAG LOWBATT SYSLOG+EXEC
NOTIFYFLAG FSD SYSLOG+WALL+EXEC
NOTIFYFLAG COMMOK SYSLOG+EXEC
NOTIFYFLAG COMMBAD SYSLOG+EXEC
NOTIFYFLAG SHUTDOWN SYSLOG+EXEC
NOTIFYFLAG REPLBATT SYSLOG+EXEC
NOTIFYFLAG NOCOMM SYSLOG+EXEC
&lt;/pre&gt;

Configurons l'arrêt:

 # $editor /etc/nut/upssched.conf
&lt;pre&gt;
LOCKFN /var/lib/nut/upssched.lock
PIPEFN /var/lib/nut/upssched.pipe
CMDSCRIPT /bin/upssched-cmd
AT ONBATT * START-TIMER onbatt1 13
AT ONLINE * CANCEL-TIMER onbatt1
#AT ONBATT * START-TIMER earlyshutdown 30
#AT ONLINE * CANCEL-TIMER earlyshutdown
AT ONBATT * START-TIMER onbattwarn 30
AT ONLINE * CANCEL-TIMER onbattwarn
&lt;/pre&gt;

Le point important est de vérifier sur votre système si la fichier upssched-cmd existe et s'il se trouve à l'endroit que vous avez indiqué dans upssched.conf
S'il n'existe pas:

 touch /bin/upssched-cmd
 chmod +x /bin/upssched-cmd

Préparez le démarrage automatique de upsd et upsmon (selon votre branche - Stable, Testing ou Unstable - il peut y avoir des variations dans les noms des scripts dans init.d)

 # update-rc.d ups-monitor defaults
  Adding system startup for /etc/init.d/ups-monitor ...
    /etc/rc0.d/K20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc1.d/K20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc6.d/K20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc2.d/S20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc3.d/S20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc4.d/S20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc5.d/S20ups-monitor -&gt; ../init.d/ups-monitor

=== Tests ===

Éteignez la machine, branchez l'onduleur et redémarrez:

 /etc/init.d/ups-monitor restart &amp;&amp; tail -f /var/log/syslog
  * Restarting Network UPS Tools                                                                                                                                           [ OK ] 
 Dec  5 12:00:19 laurent upsd[2404]: ACL in upsd.conf is no longer supported - switch to LISTEN
 Dec  5 12:00:19 laurent upsd[2404]: ACCEPT in upsd.conf is no longer supported - switch to LISTEN
 Dec  5 12:00:19 laurent upsd[2404]: REJECT in upsd.conf is no longer supported - switch to LISTEN
 Dec  5 12:00:19 laurent upsd[2404]: listening on 127.0.0.1 port 3493
 Dec  5 12:00:19 laurent upsd[2404]: listening on ::1 port 3493
 Dec  5 12:00:19 laurent upsd[2404]: Connected to UPS [apc]: blazer_usb-apc
 Dec  5 12:00:19 laurent upsd[2404]: allowfrom in upsd.users is no longer used
 Dec  5 12:00:19 laurent upsd[2405]: Startup successful
 Dec  5 12:00:19 laurent upsmon[2407]: Startup successful
 Dec  5 12:00:19 laurent upsd[2405]: User admin@127.0.0.1 logged into UPS [apc]

 # /etc/init.d/ups-monitor status
 Checking status of Network UPS Tools
  * upsd is running
  * upsmon is running

 # upsc -l
 apc

Vérification de l'état complet:

 # /bin/upsc apc@localhost
 battery.voltage: 13.10
 battery.voltage.nominal: 12.0
 beeper.status: enabled
 device.type: ups
 driver.name: blazer_usb
 driver.parameter.pollinterval: 2
 driver.parameter.port: /dev/ttyS0
 driver.version: 2.6.3
 driver.version.internal: 0.04
 input.current.nominal: 3.0
 input.frequency: 49.6
 input.frequency.nominal: 50
 input.voltage: 232.8
 input.voltage.fault: 232.8
 input.voltage.nominal: 230
 output.voltage: 234.9
 ups.delay.shutdown: 30
 ups.delay.start: 180
 ups.load: 9
 ups.productid: 5161
 ups.status: OL
 ups.type: offline / line interactive
 ups.vendorid: 0665

S'il manque la charge (comme c'est le cas ci-dessus, il faut préciser le minima et maxima du voltage de la batterie dans le fichier ups.conf:

 [apc]
        driver = blazer_usb
        port = /dev/ttyS0
        default.battery.voltage.high = 14
        default.battery.voltage.low = 11

 # /bin/upsc apc@localhost
&lt;pre&gt;
battery.charge: 77
battery.voltage: 13.30
battery.voltage.high: 14
battery.voltage.low: 11
battery.voltage.nominal: 12.0
beeper.status: enabled
device.type: ups
driver.name: blazer_usb
driver.parameter.pollinterval: 2
driver.parameter.port: /dev/ttyS0
driver.version: 2.6.3
driver.version.internal: 0.04
input.current.nominal: 3.0
input.frequency: 49.6
input.frequency.nominal: 50
input.voltage: 237.0
input.voltage.fault: 234.9
input.voltage.nominal: 230
output.voltage: 234.9
ups.delay.shutdown: 30
ups.delay.start: 180
ups.load: 8
ups.productid: 5161
ups.status: OL
ups.type: offline / line interactive
ups.vendorid: 0665
&lt;/pre&gt;

Vérifions si la commande d'arrêt fonctionne (Attention cela va arrếter la machine immédiatement...)

 # /sbin/upsmon -c fsd

Vérifions si le &quot;timer&quot; fonctionne (débranchez le cable d'alimentation de l'onduleur - Rebranchez le quand l'alerte est passé dans les logs):

 # tail -f /var/log/daemon.log | grep upssched
 Dec  5 15:23:33 sidlol upssched[28374]: Timer daemon started
 Dec  5 15:23:33 sidlol upssched[28374]: New timer: earlyshutdown (120 seconds)
 ...
 Dec  5 15:25:18 sidlol upssched[28374]: Cancelling timer: earlyshutdown
 Dec  5 15:25:31 sidlol upssched[28374]: Timer queue empty, exiting

Et observons les messages (broadcast) dans une console:

 Diffusion de message de nut@laurent
         (somewhere) at 15:25 ...
 
 UPS apc@localhost on battery


Modifions le script-exemple (upssched-cmd) pour qu'il envoie la commande d’arrêt sur l'évènement onbattwarn:

&lt;pre&gt;
#! /bin/sh
#
# This script should be called by upssched via the CMDSCRIPT directive.
# 
# Here is a quick example to show how to handle a bunch of possible
# timer names with the help of the case structure.
#
# This script may be replaced with another program without harm.
#
# The first argument passed to your CMDSCRIPT is the name of the timer
# from your AT lines.

case $1 in
        upsgone)
                logger -t upssched-cmd &quot;The UPS has been gone for a while&quot;
                ;;
        onbattwarn)
                logger -t upssched-cmd &quot;Shutting down using: upsmon -c fsd&quot;
                upsmon -c fsd
                ;;
        *)
                logger -t upssched-cmd &quot;Unrecognized command: $1&quot;
                ;;
esac
&lt;/pre&gt;

Vous pouvez bien sur lancer la commande (ou le script) que vous souhaitez, envoyer un mail ou un message d'alerte par ejabberd, stopper un programme, etc.

Et bien sur, testez!

 # tail -f /var/log/syslog
&lt;pre&gt;
...
Dec  6 07:34:44 sidlol upsmon[3968]: apc@localhost is on battery
Dec  6 07:34:44 sidlol upssched[16976]: Timer daemon started
Dec  6 07:34:44 sidlol upssched[16976]: New timer: onbatt1 (13 seconds)
Dec  6 07:34:44 sidlol upssched[16976]: New timer: onbattwarn (120 seconds)
...
Dec  6 07:36:44 sidlol upssched[16976]: Event: onbattwarn
Dec  6 07:36:44 sidlol upssched-cmd: Shutting down using: upsmon -c fsd
Dec  6 07:36:44 sidlol upsmon[3968]: Signal 10: User requested FSD
Dec  6 07:36:44 sidlol upsd[3890]: Client admin@127.0.0.1 set FSD on UPS [apc]
Dec  6 07:36:44 sidlol upsmon[3968]: Executing automatic power-fail shutdown
Dec  6 07:36:44 sidlol upsmon[3968]: System is being shutdown!
&lt;/pre&gt;

== nut-cgi: Surveillance Web de votre onduleur dans un navigateur ==

 #apt-get install nut-cgi
 ...
 Les paquets supplémentaires suivants seront installés : 
   apache2 apache2-mpm-worker apache2-utils apache2.2-bin apache2.2-common libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap

Les dépendances sont importantes (Apache2). Si vous ne souhaitez pas installer Apache, préférez [[nut-monitor: Surveillance Web de votre onduleur via un GUI NUT-monitor]]
 # $editor /etc/nut/hosts.conf
 MONITOR apc@localhost &quot;Local Prolink&quot;

 # $editor /etc/apache2/sites-available/apache-nut.conf

 ScriptAlias /nut /usr/lib/cgi-bin/nut
 &lt;Directory /usr/lib/cgi-bin/nut&gt;
        Deny from all
        Allow from 127.0.0.1 10.10.10.0
        AllowOverride None
        Options ExecCGI
 &lt;/Directory&gt;

 # a2ensite apache-nut.conf &amp;&amp; service apache2 restart
 Enabling site apache-nut.conf.
 To activate the new configuration, you need to run:
   service apache2 reload
  [ ok ] Restarting web server: apache2 ... waiting .

Vous devriez déjà avoir accès à la page Web de monitoring de nut:

[[Fichier:Nut-cgi 01.png]]

[[Fichier:Nut-cgi 02.png]]

[[Fichier:Nut-cgi 03.png]]

Mais pas à la page de configuration...

[[Fichier:Nut-cgi 04.png]]

Pour cela il faudra un peu de sécurité, sans quoi vous ne pourrez pas y accéder!

 # $editor /usr/lib/cgi-bin/nut/.htaccess
 &lt;Files upsset.cgi&gt;
        deny from all
        allow from localhost
 &lt;/Files&gt;

 # $editor /etc/nut/upsset.conf
 ...
 
 I_HAVE_SECURED_MY_CGI_DIRECTORY
 
[[Fichier:Nut-cgi 05.png]]

== nut-monitor: Surveillance Web de votre onduleur via un GUI ==

 # apt-get install nut-monitor
 ...
 Les paquets supplémentaires suivants seront installés : 
   python-nut

[[Fichier:Nut-cgi 06.png]]

== Sources ==

A faire.</text>
      <sha1>jpb83g9j6dzkx2vukgvkmms2qcedzxl</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4797</id>
      <parentid>4796</parentid>
      <timestamp>2012-12-07T08:11:22Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <minor/>
      <comment>WikiSysop a déplacé la page [[Configurer et surveiller un onduleur]] vers [[Configurer et surveiller un onduleur avec NUT]] : Oublie de NUT dans le titre.</comment>
      <text xml:space="preserve" bytes="12255">{{Ébauche|NUT}}

Ce tuto est destiné à vous aider à configurer (et surveiller) un onduleur sur une Debian.

Nous avons utilisés un onduleur PROLINK PRO850VU, connecté à l'ordinateur par un câble USB.

== Installation de NUT ==

=== Installation ===

Branchez le câble de communication (ici un cable USB) de l'onduleur et vérifiez qu'il est bien détecté

 $ dmesg
 ... 
 [60193.736139] usb 3-4: new low-speed USB device number 2 using xhci_hcd
 [60193.762985] generic-usb 0003:0665:5161.0004: hiddev0,hidraw3: USB HID v1.00 Device [INNO TECH USB to Serial] on usb-0000:00:14.0-4/input0

Installez nut

 # apt-get install nut
 ...
 Les paquets supplémentaires suivants seront installés : 
  libupsclient1 nut-client nut-server
 ...

=== Configuration ===

Configurez votre onduleur:
Il existe toute sorte de drivers, il faudra trouver le bon...

 ls /lib/nut
 apcsmart      belkin        bestuferrups  clone         everups     ivtscd        metasys      newmge-shut  powerpanel    solis          upscode2
 apcsmart-old  belkinunv     bestups       clone-outlet  gamatronic  liebert       mge-shut     oneac        rhino         tripplite      usbhid-ups
 bcmxcp        bestfcom      blazer_ser    dummy-ups     genericups  liebert-esp2  mge-utalk    optiups      richcomm_usb  tripplitesu    victronups
 bcmxcp_usb    bestfortress  blazer_usb    etapro        isbmex      masterguard   microdowell  powercom     safenet       tripplite_usb

Ce fichier ''/usr/share/nut/driver.list'' contient une liste d'onduleurs et le driver qu'il faut utiliser.

Prolink n'est pas dans la liste (il ne doivent pas ouvrir les spécification de leur matériel...); Nous avons réussi à faire fonctionner notre PRO850VU avec le driver &quot;blazer_usb&quot;

Si vous n'êtes pas sur du port de communication, mettez le à: port = auto

 # $editor /etc/nut/ups.conf
 ...
 [apc]
        driver = blazer_usb
        port = /dev/ttyS0
        #port = auto
 ...

Ajoutez ensuite une règle à UDEV afin qu'il attribue ttyS0 (si c'est bien le port sur lequel est l'onduleur) au groupe nut:

 # $editor /etc/udev/rules.d/99_nut-serialups.rules
 KERNEL==&quot;ttyS0&quot;, GROUP=&quot;nut&quot;

Rafraichissez UDEV

 udevadm trigger
 udevadm control --reload-rules

Changez manuellement le groupe de ttyS0 (ce sera automatique au prochain demarrage):

 chgrp nut /dev/ttyS0

Démarrez upsdrvctl afin de vérifier que votre configuration (dans ups.conf) est la bonne:

 upsdrvctl start

 Network UPS Tools - UPS driver controller 2.6.3
 Network UPS Tools - Megatec/Q1 protocol USB driver 0.04 (2.6.3)
 Supported UPS detected with mustek protocol
 Vendor information unavailable
 Battery runtime will not be calculated (runtimecal not set)

Configurez nut.conf

 # $editor /etc/nut/nut.conf
 MODE=standalone

Configuration pour upsmon:

 # $editor /etc/nut/upsd.conf
 LISTEN 127.0.0.1 3493

 # $editor /etc/nut/upsd.users
 [admin]
     password = motdepasse
     allowfrom = localhost
     upsmon master
     actions = SET
     instcmds = ALL

=== Configuration des alertes et actions ===

 # $editor /etc/nut/upsmon.conf
&lt;pre&gt;
# Network UPS Tools: example upsmon configuration
#
# This file contains passwords, so keep it secure.

MONITOR apc@localhost 1 admin motdepasse master
SHUTDOWNCMD &quot;/sbin/shutdown -h now&quot;
HOSTSYNC 15
POWERDOWNFLAG /etc/nut/killpower
FINALDELAY 5
NOTIFYCMD /sbin/upssched
NOTIFYMSG ONBATT &quot;%s is on battery&quot;
NOTIFYMSG ONLINE &quot;%s is back online&quot;
NOTIFYMSG LOWBATT &quot;%s has a low battery!&quot;
NOTIFYMSG SHUTDOWN &quot;System is being shutdown!&quot;

NOTIFYFLAG ONLINE SYSLOG+EXEC
NOTIFYFLAG ONBATT SYSLOG+EXEC
NOTIFYFLAG LOWBATT SYSLOG+EXEC
NOTIFYFLAG FSD SYSLOG+WALL+EXEC
NOTIFYFLAG COMMOK SYSLOG+EXEC
NOTIFYFLAG COMMBAD SYSLOG+EXEC
NOTIFYFLAG SHUTDOWN SYSLOG+EXEC
NOTIFYFLAG REPLBATT SYSLOG+EXEC
NOTIFYFLAG NOCOMM SYSLOG+EXEC
&lt;/pre&gt;

Configurons l'arrêt:

 # $editor /etc/nut/upssched.conf
&lt;pre&gt;
LOCKFN /var/lib/nut/upssched.lock
PIPEFN /var/lib/nut/upssched.pipe
CMDSCRIPT /bin/upssched-cmd
AT ONBATT * START-TIMER onbatt1 13
AT ONLINE * CANCEL-TIMER onbatt1
#AT ONBATT * START-TIMER earlyshutdown 30
#AT ONLINE * CANCEL-TIMER earlyshutdown
AT ONBATT * START-TIMER onbattwarn 30
AT ONLINE * CANCEL-TIMER onbattwarn
&lt;/pre&gt;

Le point important est de vérifier sur votre système si la fichier upssched-cmd existe et s'il se trouve à l'endroit que vous avez indiqué dans upssched.conf
S'il n'existe pas:

 touch /bin/upssched-cmd
 chmod +x /bin/upssched-cmd

Préparez le démarrage automatique de upsd et upsmon (selon votre branche - Stable, Testing ou Unstable - il peut y avoir des variations dans les noms des scripts dans init.d)

 # update-rc.d ups-monitor defaults
  Adding system startup for /etc/init.d/ups-monitor ...
    /etc/rc0.d/K20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc1.d/K20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc6.d/K20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc2.d/S20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc3.d/S20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc4.d/S20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc5.d/S20ups-monitor -&gt; ../init.d/ups-monitor

=== Tests ===

Éteignez la machine, branchez l'onduleur et redémarrez:

 /etc/init.d/ups-monitor restart &amp;&amp; tail -f /var/log/syslog
  * Restarting Network UPS Tools                                                                                                                                           [ OK ] 
 Dec  5 12:00:19 laurent upsd[2404]: ACL in upsd.conf is no longer supported - switch to LISTEN
 Dec  5 12:00:19 laurent upsd[2404]: ACCEPT in upsd.conf is no longer supported - switch to LISTEN
 Dec  5 12:00:19 laurent upsd[2404]: REJECT in upsd.conf is no longer supported - switch to LISTEN
 Dec  5 12:00:19 laurent upsd[2404]: listening on 127.0.0.1 port 3493
 Dec  5 12:00:19 laurent upsd[2404]: listening on ::1 port 3493
 Dec  5 12:00:19 laurent upsd[2404]: Connected to UPS [apc]: blazer_usb-apc
 Dec  5 12:00:19 laurent upsd[2404]: allowfrom in upsd.users is no longer used
 Dec  5 12:00:19 laurent upsd[2405]: Startup successful
 Dec  5 12:00:19 laurent upsmon[2407]: Startup successful
 Dec  5 12:00:19 laurent upsd[2405]: User admin@127.0.0.1 logged into UPS [apc]

 # /etc/init.d/ups-monitor status
 Checking status of Network UPS Tools
  * upsd is running
  * upsmon is running

 # upsc -l
 apc

Vérification de l'état complet:

 # /bin/upsc apc@localhost
 battery.voltage: 13.10
 battery.voltage.nominal: 12.0
 beeper.status: enabled
 device.type: ups
 driver.name: blazer_usb
 driver.parameter.pollinterval: 2
 driver.parameter.port: /dev/ttyS0
 driver.version: 2.6.3
 driver.version.internal: 0.04
 input.current.nominal: 3.0
 input.frequency: 49.6
 input.frequency.nominal: 50
 input.voltage: 232.8
 input.voltage.fault: 232.8
 input.voltage.nominal: 230
 output.voltage: 234.9
 ups.delay.shutdown: 30
 ups.delay.start: 180
 ups.load: 9
 ups.productid: 5161
 ups.status: OL
 ups.type: offline / line interactive
 ups.vendorid: 0665

S'il manque la charge (comme c'est le cas ci-dessus, il faut préciser le minima et maxima du voltage de la batterie dans le fichier ups.conf:

 [apc]
        driver = blazer_usb
        port = /dev/ttyS0
        default.battery.voltage.high = 14
        default.battery.voltage.low = 11

 # /bin/upsc apc@localhost
&lt;pre&gt;
battery.charge: 77
battery.voltage: 13.30
battery.voltage.high: 14
battery.voltage.low: 11
battery.voltage.nominal: 12.0
beeper.status: enabled
device.type: ups
driver.name: blazer_usb
driver.parameter.pollinterval: 2
driver.parameter.port: /dev/ttyS0
driver.version: 2.6.3
driver.version.internal: 0.04
input.current.nominal: 3.0
input.frequency: 49.6
input.frequency.nominal: 50
input.voltage: 237.0
input.voltage.fault: 234.9
input.voltage.nominal: 230
output.voltage: 234.9
ups.delay.shutdown: 30
ups.delay.start: 180
ups.load: 8
ups.productid: 5161
ups.status: OL
ups.type: offline / line interactive
ups.vendorid: 0665
&lt;/pre&gt;

Vérifions si la commande d'arrêt fonctionne (Attention cela va arrếter la machine immédiatement...)

 # /sbin/upsmon -c fsd

Vérifions si le &quot;timer&quot; fonctionne (débranchez le cable d'alimentation de l'onduleur - Rebranchez le quand l'alerte est passé dans les logs):

 # tail -f /var/log/daemon.log | grep upssched
 Dec  5 15:23:33 sidlol upssched[28374]: Timer daemon started
 Dec  5 15:23:33 sidlol upssched[28374]: New timer: earlyshutdown (120 seconds)
 ...
 Dec  5 15:25:18 sidlol upssched[28374]: Cancelling timer: earlyshutdown
 Dec  5 15:25:31 sidlol upssched[28374]: Timer queue empty, exiting

Et observons les messages (broadcast) dans une console:

 Diffusion de message de nut@laurent
         (somewhere) at 15:25 ...
 
 UPS apc@localhost on battery


Modifions le script-exemple (upssched-cmd) pour qu'il envoie la commande d’arrêt sur l'évènement onbattwarn:

&lt;pre&gt;
#! /bin/sh
#
# This script should be called by upssched via the CMDSCRIPT directive.
# 
# Here is a quick example to show how to handle a bunch of possible
# timer names with the help of the case structure.
#
# This script may be replaced with another program without harm.
#
# The first argument passed to your CMDSCRIPT is the name of the timer
# from your AT lines.

case $1 in
        upsgone)
                logger -t upssched-cmd &quot;The UPS has been gone for a while&quot;
                ;;
        onbattwarn)
                logger -t upssched-cmd &quot;Shutting down using: upsmon -c fsd&quot;
                upsmon -c fsd
                ;;
        *)
                logger -t upssched-cmd &quot;Unrecognized command: $1&quot;
                ;;
esac
&lt;/pre&gt;

Vous pouvez bien sur lancer la commande (ou le script) que vous souhaitez, envoyer un mail ou un message d'alerte par ejabberd, stopper un programme, etc.

Et bien sur, testez!

 # tail -f /var/log/syslog
&lt;pre&gt;
...
Dec  6 07:34:44 sidlol upsmon[3968]: apc@localhost is on battery
Dec  6 07:34:44 sidlol upssched[16976]: Timer daemon started
Dec  6 07:34:44 sidlol upssched[16976]: New timer: onbatt1 (13 seconds)
Dec  6 07:34:44 sidlol upssched[16976]: New timer: onbattwarn (120 seconds)
...
Dec  6 07:36:44 sidlol upssched[16976]: Event: onbattwarn
Dec  6 07:36:44 sidlol upssched-cmd: Shutting down using: upsmon -c fsd
Dec  6 07:36:44 sidlol upsmon[3968]: Signal 10: User requested FSD
Dec  6 07:36:44 sidlol upsd[3890]: Client admin@127.0.0.1 set FSD on UPS [apc]
Dec  6 07:36:44 sidlol upsmon[3968]: Executing automatic power-fail shutdown
Dec  6 07:36:44 sidlol upsmon[3968]: System is being shutdown!
&lt;/pre&gt;

== nut-cgi: Surveillance Web de votre onduleur dans un navigateur ==

 #apt-get install nut-cgi
 ...
 Les paquets supplémentaires suivants seront installés : 
   apache2 apache2-mpm-worker apache2-utils apache2.2-bin apache2.2-common libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap

Les dépendances sont importantes (Apache2). Si vous ne souhaitez pas installer Apache, préférez [[nut-monitor: Surveillance Web de votre onduleur via un GUI NUT-monitor]]
 # $editor /etc/nut/hosts.conf
 MONITOR apc@localhost &quot;Local Prolink&quot;

 # $editor /etc/apache2/sites-available/apache-nut.conf

 ScriptAlias /nut /usr/lib/cgi-bin/nut
 &lt;Directory /usr/lib/cgi-bin/nut&gt;
        Deny from all
        Allow from 127.0.0.1 10.10.10.0
        AllowOverride None
        Options ExecCGI
 &lt;/Directory&gt;

 # a2ensite apache-nut.conf &amp;&amp; service apache2 restart
 Enabling site apache-nut.conf.
 To activate the new configuration, you need to run:
   service apache2 reload
  [ ok ] Restarting web server: apache2 ... waiting .

Vous devriez déjà avoir accès à la page Web de monitoring de nut:

[[Fichier:Nut-cgi 01.png]]

[[Fichier:Nut-cgi 02.png]]

[[Fichier:Nut-cgi 03.png]]

Mais pas à la page de configuration...

[[Fichier:Nut-cgi 04.png]]

Pour cela il faudra un peu de sécurité, sans quoi vous ne pourrez pas y accéder!

 # $editor /usr/lib/cgi-bin/nut/.htaccess
 &lt;Files upsset.cgi&gt;
        deny from all
        allow from localhost
 &lt;/Files&gt;

 # $editor /etc/nut/upsset.conf
 ...
 
 I_HAVE_SECURED_MY_CGI_DIRECTORY
 
[[Fichier:Nut-cgi 05.png]]

== nut-monitor: Surveillance Web de votre onduleur via un GUI ==

 # apt-get install nut-monitor
 ...
 Les paquets supplémentaires suivants seront installés : 
   python-nut

[[Fichier:Nut-cgi 06.png]]

== Sources ==

A faire.</text>
      <sha1>jpb83g9j6dzkx2vukgvkmms2qcedzxl</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4815</id>
      <parentid>4797</parentid>
      <timestamp>2012-12-09T08:47:13Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Avantage</comment>
      <text xml:space="preserve" bytes="12991">{{Ébauche|NUT}}

Ce tuto est destiné à vous aider à configurer (et surveiller) un onduleur sur une Debian.

Nous avons utilisés un onduleur PROLINK PRO850VU, connecté à l'ordinateur par un câble USB.

== Intérêt ==

L'intérêt d'avoir un onduleur n'est plus à démontrer.

Pouvoir contrôler celui-ci et ordonner l'arrêt de votre machine en cas de coupure prolongée du secteur en est un autre. En effet, si la coupure de secteur dure trop longtemps et que vous videz la batterie de votre UPS (Uninterruptible Power Supply qui signifie alimentation sans interruption) avant d'avoir le temps d'éteindre votre machine, l'intérêt de l'onduleur est nul... Vous aurez tout juste gagné quelques minutes avant la coupure sauvage de votre système.

De plus NUT vous permettra aussi d'éteindre l'onduleur: une fois la machine arrêtée l'onduleur s’arrêtera complètement, évitant ainsi une décharge complète de(s) batterie(s).

== Installation de NUT ==

=== Installation ===

Branchez le câble de communication (ici un cable USB) de l'onduleur et vérifiez qu'il est bien détecté

 $ dmesg
 ... 
 [60193.736139] usb 3-4: new low-speed USB device number 2 using xhci_hcd
 [60193.762985] generic-usb 0003:0665:5161.0004: hiddev0,hidraw3: USB HID v1.00 Device [INNO TECH USB to Serial] on usb-0000:00:14.0-4/input0

Installez nut

 # apt-get install nut
 ...
 Les paquets supplémentaires suivants seront installés : 
  libupsclient1 nut-client nut-server
 ...

=== Configuration ===

Configurez votre onduleur:
Il existe toute sorte de drivers, il faudra trouver le bon...

 ls /lib/nut
 apcsmart      belkin        bestuferrups  clone         everups     ivtscd        metasys      newmge-shut  powerpanel    solis          upscode2
 apcsmart-old  belkinunv     bestups       clone-outlet  gamatronic  liebert       mge-shut     oneac        rhino         tripplite      usbhid-ups
 bcmxcp        bestfcom      blazer_ser    dummy-ups     genericups  liebert-esp2  mge-utalk    optiups      richcomm_usb  tripplitesu    victronups
 bcmxcp_usb    bestfortress  blazer_usb    etapro        isbmex      masterguard   microdowell  powercom     safenet       tripplite_usb

Ce fichier ''/usr/share/nut/driver.list'' contient une liste d'onduleurs et le driver qu'il faut utiliser.

Prolink n'est pas dans la liste (il ne doivent pas ouvrir les spécification de leur matériel...); Nous avons réussi à faire fonctionner notre PRO850VU avec le driver &quot;blazer_usb&quot;

Si vous n'êtes pas sur du port de communication, mettez le à: port = auto

 # $editor /etc/nut/ups.conf
 ...
 [apc]
        driver = blazer_usb
        port = /dev/ttyS0
        #port = auto
 ...

Ajoutez ensuite une règle à UDEV afin qu'il attribue ttyS0 (si c'est bien le port sur lequel est l'onduleur) au groupe nut:

 # $editor /etc/udev/rules.d/99_nut-serialups.rules
 KERNEL==&quot;ttyS0&quot;, GROUP=&quot;nut&quot;

Rafraichissez UDEV

 udevadm trigger
 udevadm control --reload-rules

Changez manuellement le groupe de ttyS0 (ce sera automatique au prochain demarrage):

 chgrp nut /dev/ttyS0

Démarrez upsdrvctl afin de vérifier que votre configuration (dans ups.conf) est la bonne:

 upsdrvctl start

 Network UPS Tools - UPS driver controller 2.6.3
 Network UPS Tools - Megatec/Q1 protocol USB driver 0.04 (2.6.3)
 Supported UPS detected with mustek protocol
 Vendor information unavailable
 Battery runtime will not be calculated (runtimecal not set)

Configurez nut.conf

 # $editor /etc/nut/nut.conf
 MODE=standalone

Configuration pour upsmon:

 # $editor /etc/nut/upsd.conf
 LISTEN 127.0.0.1 3493

 # $editor /etc/nut/upsd.users
 [admin]
     password = motdepasse
     allowfrom = localhost
     upsmon master
     actions = SET
     instcmds = ALL

=== Configuration des alertes et actions ===

 # $editor /etc/nut/upsmon.conf
&lt;pre&gt;
# Network UPS Tools: example upsmon configuration
#
# This file contains passwords, so keep it secure.

MONITOR apc@localhost 1 admin motdepasse master
SHUTDOWNCMD &quot;/sbin/shutdown -h now&quot;
HOSTSYNC 15
POWERDOWNFLAG /etc/nut/killpower
FINALDELAY 5
NOTIFYCMD /sbin/upssched
NOTIFYMSG ONBATT &quot;%s is on battery&quot;
NOTIFYMSG ONLINE &quot;%s is back online&quot;
NOTIFYMSG LOWBATT &quot;%s has a low battery!&quot;
NOTIFYMSG SHUTDOWN &quot;System is being shutdown!&quot;

NOTIFYFLAG ONLINE SYSLOG+EXEC
NOTIFYFLAG ONBATT SYSLOG+EXEC
NOTIFYFLAG LOWBATT SYSLOG+EXEC
NOTIFYFLAG FSD SYSLOG+WALL+EXEC
NOTIFYFLAG COMMOK SYSLOG+EXEC
NOTIFYFLAG COMMBAD SYSLOG+EXEC
NOTIFYFLAG SHUTDOWN SYSLOG+EXEC
NOTIFYFLAG REPLBATT SYSLOG+EXEC
NOTIFYFLAG NOCOMM SYSLOG+EXEC
&lt;/pre&gt;

Configurons l'arrêt:

 # $editor /etc/nut/upssched.conf
&lt;pre&gt;
LOCKFN /var/lib/nut/upssched.lock
PIPEFN /var/lib/nut/upssched.pipe
CMDSCRIPT /bin/upssched-cmd
AT ONBATT * START-TIMER onbatt1 13
AT ONLINE * CANCEL-TIMER onbatt1
#AT ONBATT * START-TIMER earlyshutdown 30
#AT ONLINE * CANCEL-TIMER earlyshutdown
AT ONBATT * START-TIMER onbattwarn 30
AT ONLINE * CANCEL-TIMER onbattwarn
&lt;/pre&gt;

Le point important est de vérifier sur votre système si la fichier upssched-cmd existe et s'il se trouve à l'endroit que vous avez indiqué dans upssched.conf
S'il n'existe pas:

 touch /bin/upssched-cmd
 chmod +x /bin/upssched-cmd

Préparez le démarrage automatique de upsd et upsmon (selon votre branche - Stable, Testing ou Unstable - il peut y avoir des variations dans les noms des scripts dans init.d)

 # update-rc.d ups-monitor defaults
  Adding system startup for /etc/init.d/ups-monitor ...
    /etc/rc0.d/K20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc1.d/K20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc6.d/K20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc2.d/S20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc3.d/S20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc4.d/S20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc5.d/S20ups-monitor -&gt; ../init.d/ups-monitor

=== Tests ===

Éteignez la machine, branchez l'onduleur et redémarrez:

 /etc/init.d/ups-monitor restart &amp;&amp; tail -f /var/log/syslog
  * Restarting Network UPS Tools                                                                                                                                           [ OK ] 
 Dec  5 12:00:19 laurent upsd[2404]: ACL in upsd.conf is no longer supported - switch to LISTEN
 Dec  5 12:00:19 laurent upsd[2404]: ACCEPT in upsd.conf is no longer supported - switch to LISTEN
 Dec  5 12:00:19 laurent upsd[2404]: REJECT in upsd.conf is no longer supported - switch to LISTEN
 Dec  5 12:00:19 laurent upsd[2404]: listening on 127.0.0.1 port 3493
 Dec  5 12:00:19 laurent upsd[2404]: listening on ::1 port 3493
 Dec  5 12:00:19 laurent upsd[2404]: Connected to UPS [apc]: blazer_usb-apc
 Dec  5 12:00:19 laurent upsd[2404]: allowfrom in upsd.users is no longer used
 Dec  5 12:00:19 laurent upsd[2405]: Startup successful
 Dec  5 12:00:19 laurent upsmon[2407]: Startup successful
 Dec  5 12:00:19 laurent upsd[2405]: User admin@127.0.0.1 logged into UPS [apc]

 # /etc/init.d/ups-monitor status
 Checking status of Network UPS Tools
  * upsd is running
  * upsmon is running

 # upsc -l
 apc

Vérification de l'état complet:

 # /bin/upsc apc@localhost
 battery.voltage: 13.10
 battery.voltage.nominal: 12.0
 beeper.status: enabled
 device.type: ups
 driver.name: blazer_usb
 driver.parameter.pollinterval: 2
 driver.parameter.port: /dev/ttyS0
 driver.version: 2.6.3
 driver.version.internal: 0.04
 input.current.nominal: 3.0
 input.frequency: 49.6
 input.frequency.nominal: 50
 input.voltage: 232.8
 input.voltage.fault: 232.8
 input.voltage.nominal: 230
 output.voltage: 234.9
 ups.delay.shutdown: 30
 ups.delay.start: 180
 ups.load: 9
 ups.productid: 5161
 ups.status: OL
 ups.type: offline / line interactive
 ups.vendorid: 0665

S'il manque la charge (comme c'est le cas ci-dessus, il faut préciser le minima et maxima du voltage de la batterie dans le fichier ups.conf:

 [apc]
        driver = blazer_usb
        port = /dev/ttyS0
        default.battery.voltage.high = 14
        default.battery.voltage.low = 11

 # /bin/upsc apc@localhost
&lt;pre&gt;
battery.charge: 77
battery.voltage: 13.30
battery.voltage.high: 14
battery.voltage.low: 11
battery.voltage.nominal: 12.0
beeper.status: enabled
device.type: ups
driver.name: blazer_usb
driver.parameter.pollinterval: 2
driver.parameter.port: /dev/ttyS0
driver.version: 2.6.3
driver.version.internal: 0.04
input.current.nominal: 3.0
input.frequency: 49.6
input.frequency.nominal: 50
input.voltage: 237.0
input.voltage.fault: 234.9
input.voltage.nominal: 230
output.voltage: 234.9
ups.delay.shutdown: 30
ups.delay.start: 180
ups.load: 8
ups.productid: 5161
ups.status: OL
ups.type: offline / line interactive
ups.vendorid: 0665
&lt;/pre&gt;

Vérifions si la commande d'arrêt fonctionne (Attention cela va arrếter la machine immédiatement...)

 # /sbin/upsmon -c fsd

Vérifions si le &quot;timer&quot; fonctionne (débranchez le cable d'alimentation de l'onduleur - Rebranchez le quand l'alerte est passé dans les logs):

 # tail -f /var/log/daemon.log | grep upssched
 Dec  5 15:23:33 sidlol upssched[28374]: Timer daemon started
 Dec  5 15:23:33 sidlol upssched[28374]: New timer: earlyshutdown (120 seconds)
 ...
 Dec  5 15:25:18 sidlol upssched[28374]: Cancelling timer: earlyshutdown
 Dec  5 15:25:31 sidlol upssched[28374]: Timer queue empty, exiting

Et observons les messages (broadcast) dans une console:

 Diffusion de message de nut@laurent
         (somewhere) at 15:25 ...
 
 UPS apc@localhost on battery


Modifions le script-exemple (upssched-cmd) pour qu'il envoie la commande d’arrêt sur l'évènement onbattwarn:

&lt;pre&gt;
#! /bin/sh
#
# This script should be called by upssched via the CMDSCRIPT directive.
# 
# Here is a quick example to show how to handle a bunch of possible
# timer names with the help of the case structure.
#
# This script may be replaced with another program without harm.
#
# The first argument passed to your CMDSCRIPT is the name of the timer
# from your AT lines.

case $1 in
        upsgone)
                logger -t upssched-cmd &quot;The UPS has been gone for a while&quot;
                ;;
        onbattwarn)
                logger -t upssched-cmd &quot;Shutting down using: upsmon -c fsd&quot;
                upsmon -c fsd
                ;;
        *)
                logger -t upssched-cmd &quot;Unrecognized command: $1&quot;
                ;;
esac
&lt;/pre&gt;

Vous pouvez bien sur lancer la commande (ou le script) que vous souhaitez, envoyer un mail ou un message d'alerte par ejabberd, stopper un programme, etc.

Et bien sur, testez!

 # tail -f /var/log/syslog
&lt;pre&gt;
...
Dec  6 07:34:44 sidlol upsmon[3968]: apc@localhost is on battery
Dec  6 07:34:44 sidlol upssched[16976]: Timer daemon started
Dec  6 07:34:44 sidlol upssched[16976]: New timer: onbatt1 (13 seconds)
Dec  6 07:34:44 sidlol upssched[16976]: New timer: onbattwarn (120 seconds)
...
Dec  6 07:36:44 sidlol upssched[16976]: Event: onbattwarn
Dec  6 07:36:44 sidlol upssched-cmd: Shutting down using: upsmon -c fsd
Dec  6 07:36:44 sidlol upsmon[3968]: Signal 10: User requested FSD
Dec  6 07:36:44 sidlol upsd[3890]: Client admin@127.0.0.1 set FSD on UPS [apc]
Dec  6 07:36:44 sidlol upsmon[3968]: Executing automatic power-fail shutdown
Dec  6 07:36:44 sidlol upsmon[3968]: System is being shutdown!
&lt;/pre&gt;

== nut-cgi: Surveillance Web de votre onduleur dans un navigateur ==

 #apt-get install nut-cgi
 ...
 Les paquets supplémentaires suivants seront installés : 
   apache2 apache2-mpm-worker apache2-utils apache2.2-bin apache2.2-common libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap

Les dépendances sont importantes (Apache2). Si vous ne souhaitez pas installer Apache, préférez [[nut-monitor: Surveillance Web de votre onduleur via un GUI NUT-monitor]]
 # $editor /etc/nut/hosts.conf
 MONITOR apc@localhost &quot;Local Prolink&quot;

 # $editor /etc/apache2/sites-available/apache-nut.conf

 ScriptAlias /nut /usr/lib/cgi-bin/nut
 &lt;Directory /usr/lib/cgi-bin/nut&gt;
        Deny from all
        Allow from 127.0.0.1 10.10.10.0
        AllowOverride None
        Options ExecCGI
 &lt;/Directory&gt;

 # a2ensite apache-nut.conf &amp;&amp; service apache2 restart
 Enabling site apache-nut.conf.
 To activate the new configuration, you need to run:
   service apache2 reload
  [ ok ] Restarting web server: apache2 ... waiting .

Vous devriez déjà avoir accès à la page Web de monitoring de nut:

[[Fichier:Nut-cgi 01.png]]

[[Fichier:Nut-cgi 02.png]]

[[Fichier:Nut-cgi 03.png]]

Mais pas à la page de configuration...

[[Fichier:Nut-cgi 04.png]]

Pour cela il faudra un peu de sécurité, sans quoi vous ne pourrez pas y accéder!

 # $editor /usr/lib/cgi-bin/nut/.htaccess
 &lt;Files upsset.cgi&gt;
        deny from all
        allow from localhost
 &lt;/Files&gt;

 # $editor /etc/nut/upsset.conf
 ...
 
 I_HAVE_SECURED_MY_CGI_DIRECTORY
 
[[Fichier:Nut-cgi 05.png]]

== nut-monitor: Surveillance Web de votre onduleur via un GUI ==

 # apt-get install nut-monitor
 ...
 Les paquets supplémentaires suivants seront installés : 
   python-nut

[[Fichier:Nut-cgi 06.png]]

== Sources ==

A faire.</text>
      <sha1>il6xb7osz3thvkd7w9kwm1hig84rxto</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4816</id>
      <parentid>4815</parentid>
      <timestamp>2012-12-09T09:00:18Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Installation de NUT */</comment>
      <text xml:space="preserve" bytes="14857">{{Ébauche|NUT}}

Ce tuto est destiné à vous aider à configurer (et surveiller) un onduleur sur une Debian.

Nous avons utilisés un onduleur PROLINK PRO850VU, connecté à l'ordinateur par un câble USB.

== Intérêt ==

L'intérêt d'avoir un onduleur n'est plus à démontrer.

Pouvoir contrôler celui-ci et ordonner l'arrêt de votre machine en cas de coupure prolongée du secteur en est un autre. En effet, si la coupure de secteur dure trop longtemps et que vous videz la batterie de votre UPS (Uninterruptible Power Supply qui signifie alimentation sans interruption) avant d'avoir le temps d'éteindre votre machine, l'intérêt de l'onduleur est nul... Vous aurez tout juste gagné quelques minutes avant la coupure sauvage de votre système.

De plus NUT vous permettra aussi d'éteindre l'onduleur: une fois la machine arrêtée l'onduleur s’arrêtera complètement, évitant ainsi une décharge complète de(s) batterie(s).

== Installation de NUT ==

=== Installation ===

Branchez le câble de communication (ici un cable USB) de l'onduleur et vérifiez qu'il est bien détecté

 $ dmesg
 ... 
 [60193.736139] usb 3-4: new low-speed USB device number 2 using xhci_hcd
 [60193.762985] generic-usb 0003:0665:5161.0004: hiddev0,hidraw3: USB HID v1.00 Device [INNO TECH USB to Serial] on usb-0000:00:14.0-4/input0

Installez nut

 # apt-get install nut
 ...
 Les paquets supplémentaires suivants seront installés : 
  libupsclient1 nut-client nut-server
 ...

=== Configuration ===

Configurez votre onduleur:
Il existe toute sorte de drivers, il faudra trouver le bon...

 ls /lib/nut
 apcsmart      belkin        bestuferrups  clone         everups     ivtscd        metasys      newmge-shut  powerpanel    solis          upscode2
 apcsmart-old  belkinunv     bestups       clone-outlet  gamatronic  liebert       mge-shut     oneac        rhino         tripplite      usbhid-ups
 bcmxcp        bestfcom      blazer_ser    dummy-ups     genericups  liebert-esp2  mge-utalk    optiups      richcomm_usb  tripplitesu    victronups
 bcmxcp_usb    bestfortress  blazer_usb    etapro        isbmex      masterguard   microdowell  powercom     safenet       tripplite_usb

Ce fichier ''/usr/share/nut/driver.list'' contient une liste d'onduleurs et le driver qu'il faut utiliser.

Prolink n'est pas dans la liste (il ne doivent pas ouvrir les spécification de leur matériel...); Nous avons réussi à faire fonctionner notre PRO850VU avec le driver &quot;blazer_usb&quot;

Si vous n'êtes pas sur du port de communication, mettez le à: port = auto

 # $editor /etc/nut/ups.conf
 ...
 [apc]
        driver = blazer_usb
        port = /dev/ttyS0
        #port = auto
 ...

Ajoutez ensuite une règle à UDEV afin qu'il attribue ttyS0 (si c'est bien le port sur lequel est l'onduleur) au groupe nut:

 # $editor /etc/udev/rules.d/99_nut-serialups.rules
 KERNEL==&quot;ttyS0&quot;, GROUP=&quot;nut&quot;

Rafraichissez UDEV

 udevadm trigger
 udevadm control --reload-rules

Changez manuellement le groupe de ttyS0 (ce sera automatique au prochain demarrage):

 chgrp nut /dev/ttyS0

Démarrez upsdrvctl afin de vérifier que votre configuration (dans ups.conf) est la bonne:

 upsdrvctl start

 Network UPS Tools - UPS driver controller 2.6.3
 Network UPS Tools - Megatec/Q1 protocol USB driver 0.04 (2.6.3)
 Supported UPS detected with mustek protocol
 Vendor information unavailable
 Battery runtime will not be calculated (runtimecal not set)

Configurez nut.conf

 # $editor /etc/nut/nut.conf
 MODE=standalone

Configuration pour upsmon:

 # $editor /etc/nut/upsd.conf
 LISTEN 127.0.0.1 3493

 # $editor /etc/nut/upsd.users
 [admin]
     password = motdepasse
     allowfrom = localhost
     upsmon master
     actions = SET
     instcmds = ALL

=== Configuration des alertes et actions ===

 # $editor /etc/nut/upsmon.conf
&lt;pre&gt;
# Network UPS Tools: example upsmon configuration
#
# This file contains passwords, so keep it secure.

MONITOR apc@localhost 1 admin motdepasse master
SHUTDOWNCMD &quot;/sbin/shutdown -h now&quot;
HOSTSYNC 15
POWERDOWNFLAG /etc/nut/killpower
FINALDELAY 5
NOTIFYCMD /sbin/upssched
NOTIFYMSG ONBATT &quot;%s is on battery&quot;
NOTIFYMSG ONLINE &quot;%s is back online&quot;
NOTIFYMSG LOWBATT &quot;%s has a low battery!&quot;
NOTIFYMSG SHUTDOWN &quot;System is being shutdown!&quot;

NOTIFYFLAG ONLINE SYSLOG+EXEC
NOTIFYFLAG ONBATT SYSLOG+EXEC
NOTIFYFLAG LOWBATT SYSLOG+EXEC
NOTIFYFLAG FSD SYSLOG+WALL+EXEC
NOTIFYFLAG COMMOK SYSLOG+EXEC
NOTIFYFLAG COMMBAD SYSLOG+EXEC
NOTIFYFLAG SHUTDOWN SYSLOG+EXEC
NOTIFYFLAG REPLBATT SYSLOG+EXEC
NOTIFYFLAG NOCOMM SYSLOG+EXEC
&lt;/pre&gt;

Configurons l'arrêt:

 # $editor /etc/nut/upssched.conf
&lt;pre&gt;
LOCKFN /var/lib/nut/upssched.lock
PIPEFN /var/lib/nut/upssched.pipe
CMDSCRIPT /bin/upssched-cmd
AT ONBATT * START-TIMER onbatt1 13
AT ONLINE * CANCEL-TIMER onbatt1
#AT ONBATT * START-TIMER earlyshutdown 30
#AT ONLINE * CANCEL-TIMER earlyshutdown
AT ONBATT * START-TIMER onbattwarn 30
AT ONLINE * CANCEL-TIMER onbattwarn
&lt;/pre&gt;

Le point important est de vérifier sur votre système si la fichier upssched-cmd existe et s'il se trouve à l'endroit que vous avez indiqué dans upssched.conf
S'il n'existe pas:

 touch /bin/upssched-cmd
 chmod +x /bin/upssched-cmd

Préparez le démarrage automatique de upsd et upsmon (selon votre branche - Stable, Testing ou Unstable - il peut y avoir des variations dans les noms des scripts dans init.d)

 # update-rc.d ups-monitor defaults
  Adding system startup for /etc/init.d/ups-monitor ...
    /etc/rc0.d/K20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc1.d/K20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc6.d/K20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc2.d/S20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc3.d/S20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc4.d/S20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc5.d/S20ups-monitor -&gt; ../init.d/ups-monitor

=== Tests ===

Éteignez la machine, branchez l'onduleur et redémarrez:

 /etc/init.d/ups-monitor restart &amp;&amp; tail -f /var/log/syslog
  * Restarting Network UPS Tools                                                                                                                                           [ OK ] 
 Dec  5 12:00:19 laurent upsd[2404]: ACL in upsd.conf is no longer supported - switch to LISTEN
 Dec  5 12:00:19 laurent upsd[2404]: ACCEPT in upsd.conf is no longer supported - switch to LISTEN
 Dec  5 12:00:19 laurent upsd[2404]: REJECT in upsd.conf is no longer supported - switch to LISTEN
 Dec  5 12:00:19 laurent upsd[2404]: listening on 127.0.0.1 port 3493
 Dec  5 12:00:19 laurent upsd[2404]: listening on ::1 port 3493
 Dec  5 12:00:19 laurent upsd[2404]: Connected to UPS [apc]: blazer_usb-apc
 Dec  5 12:00:19 laurent upsd[2404]: allowfrom in upsd.users is no longer used
 Dec  5 12:00:19 laurent upsd[2405]: Startup successful
 Dec  5 12:00:19 laurent upsmon[2407]: Startup successful
 Dec  5 12:00:19 laurent upsd[2405]: User admin@127.0.0.1 logged into UPS [apc]

 # /etc/init.d/ups-monitor status
 Checking status of Network UPS Tools
  * upsd is running
  * upsmon is running

 # upsc -l
 apc

Vérification de l'état complet:

 # /bin/upsc apc@localhost
 battery.voltage: 13.10
 battery.voltage.nominal: 12.0
 beeper.status: enabled
 device.type: ups
 driver.name: blazer_usb
 driver.parameter.pollinterval: 2
 driver.parameter.port: /dev/ttyS0
 driver.version: 2.6.3
 driver.version.internal: 0.04
 input.current.nominal: 3.0
 input.frequency: 49.6
 input.frequency.nominal: 50
 input.voltage: 232.8
 input.voltage.fault: 232.8
 input.voltage.nominal: 230
 output.voltage: 234.9
 ups.delay.shutdown: 30
 ups.delay.start: 180
 ups.load: 9
 ups.productid: 5161
 ups.status: OL
 ups.type: offline / line interactive
 ups.vendorid: 0665

S'il manque la charge (comme c'est le cas ci-dessus, il faut préciser le minima et maxima du voltage de la batterie dans le fichier ups.conf:

 [apc]
        driver = blazer_usb
        port = /dev/ttyS0
        default.battery.voltage.high = 14
        default.battery.voltage.low = 11

 # /bin/upsc apc@localhost
&lt;pre&gt;
battery.charge: 77
battery.voltage: 13.30
battery.voltage.high: 14
battery.voltage.low: 11
battery.voltage.nominal: 12.0
beeper.status: enabled
device.type: ups
driver.name: blazer_usb
driver.parameter.pollinterval: 2
driver.parameter.port: /dev/ttyS0
driver.version: 2.6.3
driver.version.internal: 0.04
input.current.nominal: 3.0
input.frequency: 49.6
input.frequency.nominal: 50
input.voltage: 237.0
input.voltage.fault: 234.9
input.voltage.nominal: 230
output.voltage: 234.9
ups.delay.shutdown: 30
ups.delay.start: 180
ups.load: 8
ups.productid: 5161
ups.status: OL
ups.type: offline / line interactive
ups.vendorid: 0665
&lt;/pre&gt;

Vérifions si la commande d'arrêt fonctionne (Attention cela va arrếter la machine immédiatement...)

 # /sbin/upsmon -c fsd

Vérifions si le &quot;timer&quot; fonctionne (débranchez le cable d'alimentation de l'onduleur - Rebranchez le quand l'alerte est passé dans les logs):

 # tail -f /var/log/daemon.log | grep upssched
 Dec  5 15:23:33 sidlol upssched[28374]: Timer daemon started
 Dec  5 15:23:33 sidlol upssched[28374]: New timer: earlyshutdown (120 seconds)
 ...
 Dec  5 15:25:18 sidlol upssched[28374]: Cancelling timer: earlyshutdown
 Dec  5 15:25:31 sidlol upssched[28374]: Timer queue empty, exiting

Et observons les messages (broadcast) dans une console:

 Diffusion de message de nut@laurent
         (somewhere) at 15:25 ...
 
 UPS apc@localhost on battery


Modifions le script-exemple (upssched-cmd) pour qu'il envoie la commande d’arrêt sur l'évènement onbattwarn:

&lt;pre&gt;
#! /bin/sh
#
# This script should be called by upssched via the CMDSCRIPT directive.
# 
# Here is a quick example to show how to handle a bunch of possible
# timer names with the help of the case structure.
#
# This script may be replaced with another program without harm.
#
# The first argument passed to your CMDSCRIPT is the name of the timer
# from your AT lines.

case $1 in
        upsgone)
                logger -t upssched-cmd &quot;The UPS has been gone for a while&quot;
                ;;
        onbattwarn)
                logger -t upssched-cmd &quot;Shutting down using: upsmon -c fsd&quot;
                upsmon -c fsd
                ;;
        *)
                logger -t upssched-cmd &quot;Unrecognized command: $1&quot;
                ;;
esac
&lt;/pre&gt;

Vous pouvez bien sur lancer la commande (ou le script) que vous souhaitez, envoyer un mail ou un message d'alerte par ejabberd, stopper un programme, etc.

Exemple:
Lancer le script /usr/local/bin/stoptout.sh avant d'éteindre votre machine:
&lt;pre&gt;
ARRET=&quot;/usr/local/bin/stoptout.sh&quot;
case $1 in
        upsgone)
                logger -t upssched-cmd &quot;Systeme sur onduleur&quot;;;
        onbat30)
                logger -t upssched-cmd &quot;Lancement script&quot;
                $ARRET;;
        onbat60)
                logger -t upssched-cmd &quot;Arret systeme avec: upsmon -c fsd&quot;
                upsmon -c fsd;;
        *)
                logger -t upssched-cmd &quot;Unrecognized command: $1&quot;;;
esac
&lt;/pre&gt;

Et bien sur, testez!

 # tail -f /var/log/syslog
&lt;pre&gt;
...
Dec  6 07:34:44 sidlol upsmon[3968]: apc@localhost is on battery
Dec  6 07:34:44 sidlol upssched[16976]: Timer daemon started
Dec  6 07:34:44 sidlol upssched[16976]: New timer: onbatt1 (13 seconds)
Dec  6 07:34:44 sidlol upssched[16976]: New timer: onbattwarn (120 seconds)
...
Dec  6 07:36:44 sidlol upssched[16976]: Event: onbattwarn
Dec  6 07:36:44 sidlol upssched-cmd: Shutting down using: upsmon -c fsd
Dec  6 07:36:44 sidlol upsmon[3968]: Signal 10: User requested FSD
Dec  6 07:36:44 sidlol upsd[3890]: Client admin@127.0.0.1 set FSD on UPS [apc]
Dec  6 07:36:44 sidlol upsmon[3968]: Executing automatic power-fail shutdown
Dec  6 07:36:44 sidlol upsmon[3968]: System is being shutdown!
&lt;/pre&gt;

=== Surveiller l'onduleur par le réseau ===

Vous avez deux (ou plus) machines connectées à votre ondueleur ? Vous pouvez utiliser NUT pour surveiller (via le réseau) l'onduleur sur celles-ci:

Sur le serveur (la machine connectée à l'onduleur qui va surveiller celui-ci) modifiez les fichiers suivants:

 # $editor /etc/nut/upsd.conf
 LISTEN 10.10.10.101 3493

 # $editor /etc/nut/upsd.users
 [slave]
         password = motdepasse
         allowfrom = slaves
         upsmon slave

Sur le client:

 # $editor /etc/nut/upsmon.conf
&lt;pre&gt;
MONITOR apc@10.10.10.101 1 slave motdepasse slave
SHUTDOWNCMD &quot;/sbin/shutdown -h +0&quot;
HOSTSYNC 15
POWERDOWNFLAG /etc/killpower
FINALDELAY 5
NOTIFYCMD /sbin/upssched
NOTIFYMSG ONBATT &quot;%s is on battery&quot;
NOTIFYMSG ONLINE &quot;%s is back online&quot;
NOTIFYMSG LOWBATT &quot;%s has a low battery!&quot;
NOTIFYMSG SHUTDOWN &quot;System is being shutdown!&quot;

NOTIFYFLAG ONLINE SYSLOG+EXEC
NOTIFYFLAG ONBATT SYSLOG+EXEC
NOTIFYFLAG LOWBATT SYSLOG+EXEC
NOTIFYFLAG FSD SYSLOG+WALL+EXEC
NOTIFYFLAG COMMOK SYSLOG+EXEC
NOTIFYFLAG COMMBAD SYSLOG+EXEC
NOTIFYFLAG SHUTDOWN SYSLOG+EXEC
NOTIFYFLAG REPLBATT SYSLOG+EXEC
NOTIFYFLAG NOCOMM SYSLOG+EXEC
&lt;/pre&gt;

Relancez ups-monitor (ou nut-client et nut-server) sur le serveur et sur le client.
Votre client est prêt à recevoir les alertes du serveur et s'éteindre si nécessaire.

== nut-cgi: Surveillance Web de votre onduleur dans un navigateur ==

 #apt-get install nut-cgi
 ...
 Les paquets supplémentaires suivants seront installés : 
   apache2 apache2-mpm-worker apache2-utils apache2.2-bin apache2.2-common libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap

Les dépendances sont importantes (Apache2). Si vous ne souhaitez pas installer Apache, préférez [[nut-monitor: Surveillance Web de votre onduleur via un GUI NUT-monitor]]
 # $editor /etc/nut/hosts.conf
 MONITOR apc@localhost &quot;Local Prolink&quot;

 # $editor /etc/apache2/sites-available/apache-nut.conf

 ScriptAlias /nut /usr/lib/cgi-bin/nut
 &lt;Directory /usr/lib/cgi-bin/nut&gt;
        Deny from all
        Allow from 127.0.0.1 10.10.10.0
        AllowOverride None
        Options ExecCGI
 &lt;/Directory&gt;

 # a2ensite apache-nut.conf &amp;&amp; service apache2 restart
 Enabling site apache-nut.conf.
 To activate the new configuration, you need to run:
   service apache2 reload
  [ ok ] Restarting web server: apache2 ... waiting .

Vous devriez déjà avoir accès à la page Web de monitoring de nut:

[[Fichier:Nut-cgi 01.png]]

[[Fichier:Nut-cgi 02.png]]

[[Fichier:Nut-cgi 03.png]]

Mais pas à la page de configuration...

[[Fichier:Nut-cgi 04.png]]

Pour cela il faudra un peu de sécurité, sans quoi vous ne pourrez pas y accéder!

 # $editor /usr/lib/cgi-bin/nut/.htaccess
 &lt;Files upsset.cgi&gt;
        deny from all
        allow from localhost
 &lt;/Files&gt;

 # $editor /etc/nut/upsset.conf
 ...
 
 I_HAVE_SECURED_MY_CGI_DIRECTORY
 
[[Fichier:Nut-cgi 05.png]]

== nut-monitor: Surveillance Web de votre onduleur via un GUI ==

 # apt-get install nut-monitor
 ...
 Les paquets supplémentaires suivants seront installés : 
   python-nut

[[Fichier:Nut-cgi 06.png]]

== Sources ==

A faire.</text>
      <sha1>da67l0jwkuz6b1rbhxibvq1m0q1stv6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4818</id>
      <parentid>4816</parentid>
      <timestamp>2012-12-09T09:11:36Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>images</comment>
      <text xml:space="preserve" bytes="14893">{{Ébauche|NUT}}

Ce tuto est destiné à vous aider à configurer (et surveiller) un onduleur sur une Debian.

Nous avons utilisés un onduleur PROLINK PRO850VU, connecté à l'ordinateur par un câble USB.

== Intérêt ==

L'intérêt d'avoir un onduleur n'est plus à démontrer.

Pouvoir contrôler celui-ci et ordonner l'arrêt de votre machine en cas de coupure prolongée du secteur en est un autre. En effet, si la coupure de secteur dure trop longtemps et que vous videz la batterie de votre UPS (Uninterruptible Power Supply qui signifie alimentation sans interruption) avant d'avoir le temps d'éteindre votre machine, l'intérêt de l'onduleur est nul... Vous aurez tout juste gagné quelques minutes avant la coupure sauvage de votre système.

De plus NUT vous permettra aussi d'éteindre l'onduleur: une fois la machine arrêtée l'onduleur s’arrêtera complètement, évitant ainsi une décharge complète de(s) batterie(s).

== Installation de NUT ==

=== Installation ===

Branchez le câble de communication (ici un cable USB) de l'onduleur et vérifiez qu'il est bien détecté

 $ dmesg
 ... 
 [60193.736139] usb 3-4: new low-speed USB device number 2 using xhci_hcd
 [60193.762985] generic-usb 0003:0665:5161.0004: hiddev0,hidraw3: USB HID v1.00 Device [INNO TECH USB to Serial] on usb-0000:00:14.0-4/input0

Installez nut

 # apt-get install nut
 ...
 Les paquets supplémentaires suivants seront installés : 
  libupsclient1 nut-client nut-server
 ...

=== Configuration ===

Configurez votre onduleur:
Il existe toute sorte de drivers, il faudra trouver le bon...

 ls /lib/nut
 apcsmart      belkin        bestuferrups  clone         everups     ivtscd        metasys      newmge-shut  powerpanel    solis          upscode2
 apcsmart-old  belkinunv     bestups       clone-outlet  gamatronic  liebert       mge-shut     oneac        rhino         tripplite      usbhid-ups
 bcmxcp        bestfcom      blazer_ser    dummy-ups     genericups  liebert-esp2  mge-utalk    optiups      richcomm_usb  tripplitesu    victronups
 bcmxcp_usb    bestfortress  blazer_usb    etapro        isbmex      masterguard   microdowell  powercom     safenet       tripplite_usb

Ce fichier ''/usr/share/nut/driver.list'' contient une liste d'onduleurs et le driver qu'il faut utiliser.

Prolink n'est pas dans la liste (il ne doivent pas ouvrir les spécification de leur matériel...); Nous avons réussi à faire fonctionner notre PRO850VU avec le driver &quot;blazer_usb&quot;

Si vous n'êtes pas sur du port de communication, mettez le à: port = auto

 # $editor /etc/nut/ups.conf
 ...
 [apc]
        driver = blazer_usb
        port = /dev/ttyS0
        #port = auto
 ...

Ajoutez ensuite une règle à UDEV afin qu'il attribue ttyS0 (si c'est bien le port sur lequel est l'onduleur) au groupe nut:

 # $editor /etc/udev/rules.d/99_nut-serialups.rules
 KERNEL==&quot;ttyS0&quot;, GROUP=&quot;nut&quot;

Rafraichissez UDEV

 udevadm trigger
 udevadm control --reload-rules

Changez manuellement le groupe de ttyS0 (ce sera automatique au prochain demarrage):

 chgrp nut /dev/ttyS0

Démarrez upsdrvctl afin de vérifier que votre configuration (dans ups.conf) est la bonne:

 upsdrvctl start

 Network UPS Tools - UPS driver controller 2.6.3
 Network UPS Tools - Megatec/Q1 protocol USB driver 0.04 (2.6.3)
 Supported UPS detected with mustek protocol
 Vendor information unavailable
 Battery runtime will not be calculated (runtimecal not set)

Configurez nut.conf

 # $editor /etc/nut/nut.conf
 MODE=standalone

Configuration pour upsmon:

 # $editor /etc/nut/upsd.conf
 LISTEN 127.0.0.1 3493

 # $editor /etc/nut/upsd.users
 [admin]
     password = motdepasse
     allowfrom = localhost
     upsmon master
     actions = SET
     instcmds = ALL

=== Configuration des alertes et actions ===

 # $editor /etc/nut/upsmon.conf
&lt;pre&gt;
# Network UPS Tools: example upsmon configuration
#
# This file contains passwords, so keep it secure.

MONITOR apc@localhost 1 admin motdepasse master
SHUTDOWNCMD &quot;/sbin/shutdown -h now&quot;
HOSTSYNC 15
POWERDOWNFLAG /etc/nut/killpower
FINALDELAY 5
NOTIFYCMD /sbin/upssched
NOTIFYMSG ONBATT &quot;%s is on battery&quot;
NOTIFYMSG ONLINE &quot;%s is back online&quot;
NOTIFYMSG LOWBATT &quot;%s has a low battery!&quot;
NOTIFYMSG SHUTDOWN &quot;System is being shutdown!&quot;

NOTIFYFLAG ONLINE SYSLOG+EXEC
NOTIFYFLAG ONBATT SYSLOG+EXEC
NOTIFYFLAG LOWBATT SYSLOG+EXEC
NOTIFYFLAG FSD SYSLOG+WALL+EXEC
NOTIFYFLAG COMMOK SYSLOG+EXEC
NOTIFYFLAG COMMBAD SYSLOG+EXEC
NOTIFYFLAG SHUTDOWN SYSLOG+EXEC
NOTIFYFLAG REPLBATT SYSLOG+EXEC
NOTIFYFLAG NOCOMM SYSLOG+EXEC
&lt;/pre&gt;

Configurons l'arrêt:

 # $editor /etc/nut/upssched.conf
&lt;pre&gt;
LOCKFN /var/lib/nut/upssched.lock
PIPEFN /var/lib/nut/upssched.pipe
CMDSCRIPT /bin/upssched-cmd
AT ONBATT * START-TIMER onbatt1 13
AT ONLINE * CANCEL-TIMER onbatt1
#AT ONBATT * START-TIMER earlyshutdown 30
#AT ONLINE * CANCEL-TIMER earlyshutdown
AT ONBATT * START-TIMER onbattwarn 30
AT ONLINE * CANCEL-TIMER onbattwarn
&lt;/pre&gt;

Le point important est de vérifier sur votre système si la fichier upssched-cmd existe et s'il se trouve à l'endroit que vous avez indiqué dans upssched.conf
S'il n'existe pas:

 touch /bin/upssched-cmd
 chmod +x /bin/upssched-cmd

Préparez le démarrage automatique de upsd et upsmon (selon votre branche - Stable, Testing ou Unstable - il peut y avoir des variations dans les noms des scripts dans init.d)

 # update-rc.d ups-monitor defaults
  Adding system startup for /etc/init.d/ups-monitor ...
    /etc/rc0.d/K20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc1.d/K20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc6.d/K20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc2.d/S20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc3.d/S20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc4.d/S20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc5.d/S20ups-monitor -&gt; ../init.d/ups-monitor

=== Tests ===

Éteignez la machine, branchez l'onduleur et redémarrez:

 /etc/init.d/ups-monitor restart &amp;&amp; tail -f /var/log/syslog
  * Restarting Network UPS Tools                                                                                                                                           [ OK ] 
 Dec  5 12:00:19 laurent upsd[2404]: ACL in upsd.conf is no longer supported - switch to LISTEN
 Dec  5 12:00:19 laurent upsd[2404]: ACCEPT in upsd.conf is no longer supported - switch to LISTEN
 Dec  5 12:00:19 laurent upsd[2404]: REJECT in upsd.conf is no longer supported - switch to LISTEN
 Dec  5 12:00:19 laurent upsd[2404]: listening on 127.0.0.1 port 3493
 Dec  5 12:00:19 laurent upsd[2404]: listening on ::1 port 3493
 Dec  5 12:00:19 laurent upsd[2404]: Connected to UPS [apc]: blazer_usb-apc
 Dec  5 12:00:19 laurent upsd[2404]: allowfrom in upsd.users is no longer used
 Dec  5 12:00:19 laurent upsd[2405]: Startup successful
 Dec  5 12:00:19 laurent upsmon[2407]: Startup successful
 Dec  5 12:00:19 laurent upsd[2405]: User admin@127.0.0.1 logged into UPS [apc]

 # /etc/init.d/ups-monitor status
 Checking status of Network UPS Tools
  * upsd is running
  * upsmon is running

 # upsc -l
 apc

Vérification de l'état complet:

 # /bin/upsc apc@localhost
 battery.voltage: 13.10
 battery.voltage.nominal: 12.0
 beeper.status: enabled
 device.type: ups
 driver.name: blazer_usb
 driver.parameter.pollinterval: 2
 driver.parameter.port: /dev/ttyS0
 driver.version: 2.6.3
 driver.version.internal: 0.04
 input.current.nominal: 3.0
 input.frequency: 49.6
 input.frequency.nominal: 50
 input.voltage: 232.8
 input.voltage.fault: 232.8
 input.voltage.nominal: 230
 output.voltage: 234.9
 ups.delay.shutdown: 30
 ups.delay.start: 180
 ups.load: 9
 ups.productid: 5161
 ups.status: OL
 ups.type: offline / line interactive
 ups.vendorid: 0665

S'il manque la charge (comme c'est le cas ci-dessus, il faut préciser le minima et maxima du voltage de la batterie dans le fichier ups.conf:

 [apc]
        driver = blazer_usb
        port = /dev/ttyS0
        default.battery.voltage.high = 14
        default.battery.voltage.low = 11

 # /bin/upsc apc@localhost
&lt;pre&gt;
battery.charge: 77
battery.voltage: 13.30
battery.voltage.high: 14
battery.voltage.low: 11
battery.voltage.nominal: 12.0
beeper.status: enabled
device.type: ups
driver.name: blazer_usb
driver.parameter.pollinterval: 2
driver.parameter.port: /dev/ttyS0
driver.version: 2.6.3
driver.version.internal: 0.04
input.current.nominal: 3.0
input.frequency: 49.6
input.frequency.nominal: 50
input.voltage: 237.0
input.voltage.fault: 234.9
input.voltage.nominal: 230
output.voltage: 234.9
ups.delay.shutdown: 30
ups.delay.start: 180
ups.load: 8
ups.productid: 5161
ups.status: OL
ups.type: offline / line interactive
ups.vendorid: 0665
&lt;/pre&gt;

Vérifions si la commande d'arrêt fonctionne (Attention cela va arrếter la machine immédiatement...)

 # /sbin/upsmon -c fsd

Vérifions si le &quot;timer&quot; fonctionne (débranchez le cable d'alimentation de l'onduleur - Rebranchez le quand l'alerte est passé dans les logs):

 # tail -f /var/log/daemon.log | grep upssched
 Dec  5 15:23:33 sidlol upssched[28374]: Timer daemon started
 Dec  5 15:23:33 sidlol upssched[28374]: New timer: earlyshutdown (120 seconds)
 ...
 Dec  5 15:25:18 sidlol upssched[28374]: Cancelling timer: earlyshutdown
 Dec  5 15:25:31 sidlol upssched[28374]: Timer queue empty, exiting

Et observons les messages (broadcast) dans une console:

 Diffusion de message de nut@laurent
         (somewhere) at 15:25 ...
 
 UPS apc@localhost on battery


Modifions le script-exemple (upssched-cmd) pour qu'il envoie la commande d’arrêt sur l'évènement onbattwarn:

&lt;pre&gt;
#! /bin/sh
#
# This script should be called by upssched via the CMDSCRIPT directive.
# 
# Here is a quick example to show how to handle a bunch of possible
# timer names with the help of the case structure.
#
# This script may be replaced with another program without harm.
#
# The first argument passed to your CMDSCRIPT is the name of the timer
# from your AT lines.

case $1 in
        upsgone)
                logger -t upssched-cmd &quot;The UPS has been gone for a while&quot;
                ;;
        onbattwarn)
                logger -t upssched-cmd &quot;Shutting down using: upsmon -c fsd&quot;
                upsmon -c fsd
                ;;
        *)
                logger -t upssched-cmd &quot;Unrecognized command: $1&quot;
                ;;
esac
&lt;/pre&gt;

Vous pouvez bien sur lancer la commande (ou le script) que vous souhaitez, envoyer un mail ou un message d'alerte par ejabberd, stopper un programme, etc.

Exemple:
Lancer le script /usr/local/bin/stoptout.sh avant d'éteindre votre machine:
&lt;pre&gt;
ARRET=&quot;/usr/local/bin/stoptout.sh&quot;
case $1 in
        upsgone)
                logger -t upssched-cmd &quot;Systeme sur onduleur&quot;;;
        onbat30)
                logger -t upssched-cmd &quot;Lancement script&quot;
                $ARRET;;
        onbat60)
                logger -t upssched-cmd &quot;Arret systeme avec: upsmon -c fsd&quot;
                upsmon -c fsd;;
        *)
                logger -t upssched-cmd &quot;Unrecognized command: $1&quot;;;
esac
&lt;/pre&gt;

Et bien sur, testez!

 # tail -f /var/log/syslog
&lt;pre&gt;
...
Dec  6 07:34:44 sidlol upsmon[3968]: apc@localhost is on battery
Dec  6 07:34:44 sidlol upssched[16976]: Timer daemon started
Dec  6 07:34:44 sidlol upssched[16976]: New timer: onbatt1 (13 seconds)
Dec  6 07:34:44 sidlol upssched[16976]: New timer: onbattwarn (120 seconds)
...
Dec  6 07:36:44 sidlol upssched[16976]: Event: onbattwarn
Dec  6 07:36:44 sidlol upssched-cmd: Shutting down using: upsmon -c fsd
Dec  6 07:36:44 sidlol upsmon[3968]: Signal 10: User requested FSD
Dec  6 07:36:44 sidlol upsd[3890]: Client admin@127.0.0.1 set FSD on UPS [apc]
Dec  6 07:36:44 sidlol upsmon[3968]: Executing automatic power-fail shutdown
Dec  6 07:36:44 sidlol upsmon[3968]: System is being shutdown!
&lt;/pre&gt;

=== Surveiller l'onduleur par le réseau ===

Vous avez deux (ou plus) machines connectées à votre ondueleur ? Vous pouvez utiliser NUT pour surveiller (via le réseau) l'onduleur sur celles-ci:

Sur le serveur (la machine connectée à l'onduleur qui va surveiller celui-ci) modifiez les fichiers suivants:

 # $editor /etc/nut/upsd.conf
 LISTEN 10.10.10.101 3493

 # $editor /etc/nut/upsd.users
 [slave]
         password = motdepasse
         allowfrom = slaves
         upsmon slave

Sur le client:

 # $editor /etc/nut/upsmon.conf
&lt;pre&gt;
MONITOR apc@10.10.10.101 1 slave motdepasse slave
SHUTDOWNCMD &quot;/sbin/shutdown -h +0&quot;
HOSTSYNC 15
POWERDOWNFLAG /etc/killpower
FINALDELAY 5
NOTIFYCMD /sbin/upssched
NOTIFYMSG ONBATT &quot;%s is on battery&quot;
NOTIFYMSG ONLINE &quot;%s is back online&quot;
NOTIFYMSG LOWBATT &quot;%s has a low battery!&quot;
NOTIFYMSG SHUTDOWN &quot;System is being shutdown!&quot;

NOTIFYFLAG ONLINE SYSLOG+EXEC
NOTIFYFLAG ONBATT SYSLOG+EXEC
NOTIFYFLAG LOWBATT SYSLOG+EXEC
NOTIFYFLAG FSD SYSLOG+WALL+EXEC
NOTIFYFLAG COMMOK SYSLOG+EXEC
NOTIFYFLAG COMMBAD SYSLOG+EXEC
NOTIFYFLAG SHUTDOWN SYSLOG+EXEC
NOTIFYFLAG REPLBATT SYSLOG+EXEC
NOTIFYFLAG NOCOMM SYSLOG+EXEC
&lt;/pre&gt;

Relancez ups-monitor (ou nut-client et nut-server) sur le serveur et sur le client.
Votre client est prêt à recevoir les alertes du serveur et s'éteindre si nécessaire.

== nut-cgi: Surveillance Web de votre onduleur dans un navigateur ==

 #apt-get install nut-cgi
 ...
 Les paquets supplémentaires suivants seront installés : 
   apache2 apache2-mpm-worker apache2-utils apache2.2-bin apache2.2-common libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap

Les dépendances sont importantes (Apache2). Si vous ne souhaitez pas installer Apache, préférez [[nut-monitor: Surveillance Web de votre onduleur via un GUI NUT-monitor]]
 # $editor /etc/nut/hosts.conf
 MONITOR apc@localhost &quot;Local Prolink&quot;

 # $editor /etc/apache2/sites-available/apache-nut.conf

 ScriptAlias /nut /usr/lib/cgi-bin/nut
 &lt;Directory /usr/lib/cgi-bin/nut&gt;
        Deny from all
        Allow from 127.0.0.1 10.10.10.0
        AllowOverride None
        Options ExecCGI
 &lt;/Directory&gt;

 # a2ensite apache-nut.conf &amp;&amp; service apache2 restart
 Enabling site apache-nut.conf.
 To activate the new configuration, you need to run:
   service apache2 reload
  [ ok ] Restarting web server: apache2 ... waiting .

Vous devriez déjà avoir accès à la page Web de monitoring de nut:

[[Fichier:Nut-cgi 01.png|300px]]

[[Fichier:Nut-cgi 02.png|300px]]

[[Fichier:Nut-cgi 03.png|300px]]

Mais pas à la page de configuration...

[[Fichier:Nut-cgi 04.png|300px]]

Pour cela il faudra un peu de sécurité, sans quoi vous ne pourrez pas y accéder!

 # $editor /usr/lib/cgi-bin/nut/.htaccess
 &lt;Files upsset.cgi&gt;
        deny from all
        allow from localhost
 &lt;/Files&gt;

 # $editor /etc/nut/upsset.conf
 ...
 
 I_HAVE_SECURED_MY_CGI_DIRECTORY
 
[[Fichier:Nut-cgi 05.png|300px]]

== nut-monitor: Surveillance Web de votre onduleur via un GUI ==

 # apt-get install nut-monitor
 ...
 Les paquets supplémentaires suivants seront installés : 
   python-nut

[[Fichier:Nut-cgi 06.png|300px]]

== Sources ==

A faire.</text>
      <sha1>bvswpjpzyl4mijlksfcqxzbp0ansqi7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4824</id>
      <parentid>4818</parentid>
      <timestamp>2012-12-09T09:18:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* nut-cgi: Surveillance Web de votre onduleur dans un navigateur */  Lien</comment>
      <text xml:space="preserve" bytes="14939">{{Ébauche|NUT}}

Ce tuto est destiné à vous aider à configurer (et surveiller) un onduleur sur une Debian.

Nous avons utilisés un onduleur PROLINK PRO850VU, connecté à l'ordinateur par un câble USB.

== Intérêt ==

L'intérêt d'avoir un onduleur n'est plus à démontrer.

Pouvoir contrôler celui-ci et ordonner l'arrêt de votre machine en cas de coupure prolongée du secteur en est un autre. En effet, si la coupure de secteur dure trop longtemps et que vous videz la batterie de votre UPS (Uninterruptible Power Supply qui signifie alimentation sans interruption) avant d'avoir le temps d'éteindre votre machine, l'intérêt de l'onduleur est nul... Vous aurez tout juste gagné quelques minutes avant la coupure sauvage de votre système.

De plus NUT vous permettra aussi d'éteindre l'onduleur: une fois la machine arrêtée l'onduleur s’arrêtera complètement, évitant ainsi une décharge complète de(s) batterie(s).

== Installation de NUT ==

=== Installation ===

Branchez le câble de communication (ici un cable USB) de l'onduleur et vérifiez qu'il est bien détecté

 $ dmesg
 ... 
 [60193.736139] usb 3-4: new low-speed USB device number 2 using xhci_hcd
 [60193.762985] generic-usb 0003:0665:5161.0004: hiddev0,hidraw3: USB HID v1.00 Device [INNO TECH USB to Serial] on usb-0000:00:14.0-4/input0

Installez nut

 # apt-get install nut
 ...
 Les paquets supplémentaires suivants seront installés : 
  libupsclient1 nut-client nut-server
 ...

=== Configuration ===

Configurez votre onduleur:
Il existe toute sorte de drivers, il faudra trouver le bon...

 ls /lib/nut
 apcsmart      belkin        bestuferrups  clone         everups     ivtscd        metasys      newmge-shut  powerpanel    solis          upscode2
 apcsmart-old  belkinunv     bestups       clone-outlet  gamatronic  liebert       mge-shut     oneac        rhino         tripplite      usbhid-ups
 bcmxcp        bestfcom      blazer_ser    dummy-ups     genericups  liebert-esp2  mge-utalk    optiups      richcomm_usb  tripplitesu    victronups
 bcmxcp_usb    bestfortress  blazer_usb    etapro        isbmex      masterguard   microdowell  powercom     safenet       tripplite_usb

Ce fichier ''/usr/share/nut/driver.list'' contient une liste d'onduleurs et le driver qu'il faut utiliser.

Prolink n'est pas dans la liste (il ne doivent pas ouvrir les spécification de leur matériel...); Nous avons réussi à faire fonctionner notre PRO850VU avec le driver &quot;blazer_usb&quot;

Si vous n'êtes pas sur du port de communication, mettez le à: port = auto

 # $editor /etc/nut/ups.conf
 ...
 [apc]
        driver = blazer_usb
        port = /dev/ttyS0
        #port = auto
 ...

Ajoutez ensuite une règle à UDEV afin qu'il attribue ttyS0 (si c'est bien le port sur lequel est l'onduleur) au groupe nut:

 # $editor /etc/udev/rules.d/99_nut-serialups.rules
 KERNEL==&quot;ttyS0&quot;, GROUP=&quot;nut&quot;

Rafraichissez UDEV

 udevadm trigger
 udevadm control --reload-rules

Changez manuellement le groupe de ttyS0 (ce sera automatique au prochain demarrage):

 chgrp nut /dev/ttyS0

Démarrez upsdrvctl afin de vérifier que votre configuration (dans ups.conf) est la bonne:

 upsdrvctl start

 Network UPS Tools - UPS driver controller 2.6.3
 Network UPS Tools - Megatec/Q1 protocol USB driver 0.04 (2.6.3)
 Supported UPS detected with mustek protocol
 Vendor information unavailable
 Battery runtime will not be calculated (runtimecal not set)

Configurez nut.conf

 # $editor /etc/nut/nut.conf
 MODE=standalone

Configuration pour upsmon:

 # $editor /etc/nut/upsd.conf
 LISTEN 127.0.0.1 3493

 # $editor /etc/nut/upsd.users
 [admin]
     password = motdepasse
     allowfrom = localhost
     upsmon master
     actions = SET
     instcmds = ALL

=== Configuration des alertes et actions ===

 # $editor /etc/nut/upsmon.conf
&lt;pre&gt;
# Network UPS Tools: example upsmon configuration
#
# This file contains passwords, so keep it secure.

MONITOR apc@localhost 1 admin motdepasse master
SHUTDOWNCMD &quot;/sbin/shutdown -h now&quot;
HOSTSYNC 15
POWERDOWNFLAG /etc/nut/killpower
FINALDELAY 5
NOTIFYCMD /sbin/upssched
NOTIFYMSG ONBATT &quot;%s is on battery&quot;
NOTIFYMSG ONLINE &quot;%s is back online&quot;
NOTIFYMSG LOWBATT &quot;%s has a low battery!&quot;
NOTIFYMSG SHUTDOWN &quot;System is being shutdown!&quot;

NOTIFYFLAG ONLINE SYSLOG+EXEC
NOTIFYFLAG ONBATT SYSLOG+EXEC
NOTIFYFLAG LOWBATT SYSLOG+EXEC
NOTIFYFLAG FSD SYSLOG+WALL+EXEC
NOTIFYFLAG COMMOK SYSLOG+EXEC
NOTIFYFLAG COMMBAD SYSLOG+EXEC
NOTIFYFLAG SHUTDOWN SYSLOG+EXEC
NOTIFYFLAG REPLBATT SYSLOG+EXEC
NOTIFYFLAG NOCOMM SYSLOG+EXEC
&lt;/pre&gt;

Configurons l'arrêt:

 # $editor /etc/nut/upssched.conf
&lt;pre&gt;
LOCKFN /var/lib/nut/upssched.lock
PIPEFN /var/lib/nut/upssched.pipe
CMDSCRIPT /bin/upssched-cmd
AT ONBATT * START-TIMER onbatt1 13
AT ONLINE * CANCEL-TIMER onbatt1
#AT ONBATT * START-TIMER earlyshutdown 30
#AT ONLINE * CANCEL-TIMER earlyshutdown
AT ONBATT * START-TIMER onbattwarn 30
AT ONLINE * CANCEL-TIMER onbattwarn
&lt;/pre&gt;

Le point important est de vérifier sur votre système si la fichier upssched-cmd existe et s'il se trouve à l'endroit que vous avez indiqué dans upssched.conf
S'il n'existe pas:

 touch /bin/upssched-cmd
 chmod +x /bin/upssched-cmd

Préparez le démarrage automatique de upsd et upsmon (selon votre branche - Stable, Testing ou Unstable - il peut y avoir des variations dans les noms des scripts dans init.d)

 # update-rc.d ups-monitor defaults
  Adding system startup for /etc/init.d/ups-monitor ...
    /etc/rc0.d/K20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc1.d/K20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc6.d/K20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc2.d/S20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc3.d/S20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc4.d/S20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc5.d/S20ups-monitor -&gt; ../init.d/ups-monitor

=== Tests ===

Éteignez la machine, branchez l'onduleur et redémarrez:

 /etc/init.d/ups-monitor restart &amp;&amp; tail -f /var/log/syslog
  * Restarting Network UPS Tools                                                                                                                                           [ OK ] 
 Dec  5 12:00:19 laurent upsd[2404]: ACL in upsd.conf is no longer supported - switch to LISTEN
 Dec  5 12:00:19 laurent upsd[2404]: ACCEPT in upsd.conf is no longer supported - switch to LISTEN
 Dec  5 12:00:19 laurent upsd[2404]: REJECT in upsd.conf is no longer supported - switch to LISTEN
 Dec  5 12:00:19 laurent upsd[2404]: listening on 127.0.0.1 port 3493
 Dec  5 12:00:19 laurent upsd[2404]: listening on ::1 port 3493
 Dec  5 12:00:19 laurent upsd[2404]: Connected to UPS [apc]: blazer_usb-apc
 Dec  5 12:00:19 laurent upsd[2404]: allowfrom in upsd.users is no longer used
 Dec  5 12:00:19 laurent upsd[2405]: Startup successful
 Dec  5 12:00:19 laurent upsmon[2407]: Startup successful
 Dec  5 12:00:19 laurent upsd[2405]: User admin@127.0.0.1 logged into UPS [apc]

 # /etc/init.d/ups-monitor status
 Checking status of Network UPS Tools
  * upsd is running
  * upsmon is running

 # upsc -l
 apc

Vérification de l'état complet:

 # /bin/upsc apc@localhost
 battery.voltage: 13.10
 battery.voltage.nominal: 12.0
 beeper.status: enabled
 device.type: ups
 driver.name: blazer_usb
 driver.parameter.pollinterval: 2
 driver.parameter.port: /dev/ttyS0
 driver.version: 2.6.3
 driver.version.internal: 0.04
 input.current.nominal: 3.0
 input.frequency: 49.6
 input.frequency.nominal: 50
 input.voltage: 232.8
 input.voltage.fault: 232.8
 input.voltage.nominal: 230
 output.voltage: 234.9
 ups.delay.shutdown: 30
 ups.delay.start: 180
 ups.load: 9
 ups.productid: 5161
 ups.status: OL
 ups.type: offline / line interactive
 ups.vendorid: 0665

S'il manque la charge (comme c'est le cas ci-dessus, il faut préciser le minima et maxima du voltage de la batterie dans le fichier ups.conf:

 [apc]
        driver = blazer_usb
        port = /dev/ttyS0
        default.battery.voltage.high = 14
        default.battery.voltage.low = 11

 # /bin/upsc apc@localhost
&lt;pre&gt;
battery.charge: 77
battery.voltage: 13.30
battery.voltage.high: 14
battery.voltage.low: 11
battery.voltage.nominal: 12.0
beeper.status: enabled
device.type: ups
driver.name: blazer_usb
driver.parameter.pollinterval: 2
driver.parameter.port: /dev/ttyS0
driver.version: 2.6.3
driver.version.internal: 0.04
input.current.nominal: 3.0
input.frequency: 49.6
input.frequency.nominal: 50
input.voltage: 237.0
input.voltage.fault: 234.9
input.voltage.nominal: 230
output.voltage: 234.9
ups.delay.shutdown: 30
ups.delay.start: 180
ups.load: 8
ups.productid: 5161
ups.status: OL
ups.type: offline / line interactive
ups.vendorid: 0665
&lt;/pre&gt;

Vérifions si la commande d'arrêt fonctionne (Attention cela va arrếter la machine immédiatement...)

 # /sbin/upsmon -c fsd

Vérifions si le &quot;timer&quot; fonctionne (débranchez le cable d'alimentation de l'onduleur - Rebranchez le quand l'alerte est passé dans les logs):

 # tail -f /var/log/daemon.log | grep upssched
 Dec  5 15:23:33 sidlol upssched[28374]: Timer daemon started
 Dec  5 15:23:33 sidlol upssched[28374]: New timer: earlyshutdown (120 seconds)
 ...
 Dec  5 15:25:18 sidlol upssched[28374]: Cancelling timer: earlyshutdown
 Dec  5 15:25:31 sidlol upssched[28374]: Timer queue empty, exiting

Et observons les messages (broadcast) dans une console:

 Diffusion de message de nut@laurent
         (somewhere) at 15:25 ...
 
 UPS apc@localhost on battery


Modifions le script-exemple (upssched-cmd) pour qu'il envoie la commande d’arrêt sur l'évènement onbattwarn:

&lt;pre&gt;
#! /bin/sh
#
# This script should be called by upssched via the CMDSCRIPT directive.
# 
# Here is a quick example to show how to handle a bunch of possible
# timer names with the help of the case structure.
#
# This script may be replaced with another program without harm.
#
# The first argument passed to your CMDSCRIPT is the name of the timer
# from your AT lines.

case $1 in
        upsgone)
                logger -t upssched-cmd &quot;The UPS has been gone for a while&quot;
                ;;
        onbattwarn)
                logger -t upssched-cmd &quot;Shutting down using: upsmon -c fsd&quot;
                upsmon -c fsd
                ;;
        *)
                logger -t upssched-cmd &quot;Unrecognized command: $1&quot;
                ;;
esac
&lt;/pre&gt;

Vous pouvez bien sur lancer la commande (ou le script) que vous souhaitez, envoyer un mail ou un message d'alerte par ejabberd, stopper un programme, etc.

Exemple:
Lancer le script /usr/local/bin/stoptout.sh avant d'éteindre votre machine:
&lt;pre&gt;
ARRET=&quot;/usr/local/bin/stoptout.sh&quot;
case $1 in
        upsgone)
                logger -t upssched-cmd &quot;Systeme sur onduleur&quot;;;
        onbat30)
                logger -t upssched-cmd &quot;Lancement script&quot;
                $ARRET;;
        onbat60)
                logger -t upssched-cmd &quot;Arret systeme avec: upsmon -c fsd&quot;
                upsmon -c fsd;;
        *)
                logger -t upssched-cmd &quot;Unrecognized command: $1&quot;;;
esac
&lt;/pre&gt;

Et bien sur, testez!

 # tail -f /var/log/syslog
&lt;pre&gt;
...
Dec  6 07:34:44 sidlol upsmon[3968]: apc@localhost is on battery
Dec  6 07:34:44 sidlol upssched[16976]: Timer daemon started
Dec  6 07:34:44 sidlol upssched[16976]: New timer: onbatt1 (13 seconds)
Dec  6 07:34:44 sidlol upssched[16976]: New timer: onbattwarn (120 seconds)
...
Dec  6 07:36:44 sidlol upssched[16976]: Event: onbattwarn
Dec  6 07:36:44 sidlol upssched-cmd: Shutting down using: upsmon -c fsd
Dec  6 07:36:44 sidlol upsmon[3968]: Signal 10: User requested FSD
Dec  6 07:36:44 sidlol upsd[3890]: Client admin@127.0.0.1 set FSD on UPS [apc]
Dec  6 07:36:44 sidlol upsmon[3968]: Executing automatic power-fail shutdown
Dec  6 07:36:44 sidlol upsmon[3968]: System is being shutdown!
&lt;/pre&gt;

=== Surveiller l'onduleur par le réseau ===

Vous avez deux (ou plus) machines connectées à votre ondueleur ? Vous pouvez utiliser NUT pour surveiller (via le réseau) l'onduleur sur celles-ci:

Sur le serveur (la machine connectée à l'onduleur qui va surveiller celui-ci) modifiez les fichiers suivants:

 # $editor /etc/nut/upsd.conf
 LISTEN 10.10.10.101 3493

 # $editor /etc/nut/upsd.users
 [slave]
         password = motdepasse
         allowfrom = slaves
         upsmon slave

Sur le client:

 # $editor /etc/nut/upsmon.conf
&lt;pre&gt;
MONITOR apc@10.10.10.101 1 slave motdepasse slave
SHUTDOWNCMD &quot;/sbin/shutdown -h +0&quot;
HOSTSYNC 15
POWERDOWNFLAG /etc/killpower
FINALDELAY 5
NOTIFYCMD /sbin/upssched
NOTIFYMSG ONBATT &quot;%s is on battery&quot;
NOTIFYMSG ONLINE &quot;%s is back online&quot;
NOTIFYMSG LOWBATT &quot;%s has a low battery!&quot;
NOTIFYMSG SHUTDOWN &quot;System is being shutdown!&quot;

NOTIFYFLAG ONLINE SYSLOG+EXEC
NOTIFYFLAG ONBATT SYSLOG+EXEC
NOTIFYFLAG LOWBATT SYSLOG+EXEC
NOTIFYFLAG FSD SYSLOG+WALL+EXEC
NOTIFYFLAG COMMOK SYSLOG+EXEC
NOTIFYFLAG COMMBAD SYSLOG+EXEC
NOTIFYFLAG SHUTDOWN SYSLOG+EXEC
NOTIFYFLAG REPLBATT SYSLOG+EXEC
NOTIFYFLAG NOCOMM SYSLOG+EXEC
&lt;/pre&gt;

Relancez ups-monitor (ou nut-client et nut-server) sur le serveur et sur le client.
Votre client est prêt à recevoir les alertes du serveur et s'éteindre si nécessaire.

== nut-cgi: Surveillance Web de votre onduleur dans un navigateur ==

 #apt-get install nut-cgi
 ...
 Les paquets supplémentaires suivants seront installés : 
   apache2 apache2-mpm-worker apache2-utils apache2.2-bin apache2.2-common libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap

Les dépendances sont importantes (Apache2). Si vous ne souhaitez pas installer Apache, préférez [[Configurer_et_surveiller_un_onduleur_avec_NUT#nut-monitor:_Surveillance_Web_de_votre_onduleur_via_un_GUI|NUT-monitor]]
 # $editor /etc/nut/hosts.conf
 MONITOR apc@localhost &quot;Local Prolink&quot;

 # $editor /etc/apache2/sites-available/apache-nut.conf

 ScriptAlias /nut /usr/lib/cgi-bin/nut
 &lt;Directory /usr/lib/cgi-bin/nut&gt;
        Deny from all
        Allow from 127.0.0.1 10.10.10.0
        AllowOverride None
        Options ExecCGI
 &lt;/Directory&gt;

 # a2ensite apache-nut.conf &amp;&amp; service apache2 restart
 Enabling site apache-nut.conf.
 To activate the new configuration, you need to run:
   service apache2 reload
  [ ok ] Restarting web server: apache2 ... waiting .

Vous devriez déjà avoir accès à la page Web de monitoring de nut:

[[Fichier:Nut-cgi 01.png|300px]]

[[Fichier:Nut-cgi 02.png|300px]]

[[Fichier:Nut-cgi 03.png|300px]]

Mais pas à la page de configuration...

[[Fichier:Nut-cgi 04.png|300px]]

Pour cela il faudra un peu de sécurité, sans quoi vous ne pourrez pas y accéder!

 # $editor /usr/lib/cgi-bin/nut/.htaccess
 &lt;Files upsset.cgi&gt;
        deny from all
        allow from localhost
 &lt;/Files&gt;

 # $editor /etc/nut/upsset.conf
 ...
 
 I_HAVE_SECURED_MY_CGI_DIRECTORY
 
[[Fichier:Nut-cgi 05.png|300px]]

== nut-monitor: Surveillance Web de votre onduleur via un GUI ==

 # apt-get install nut-monitor
 ...
 Les paquets supplémentaires suivants seront installés : 
   python-nut

[[Fichier:Nut-cgi 06.png|300px]]

== Sources ==

A faire.</text>
      <sha1>7uv3pao3p49ly018zvkr5we0ruab36n</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4825</id>
      <parentid>4824</parentid>
      <timestamp>2012-12-09T14:03:03Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Sources */</comment>
      <text xml:space="preserve" bytes="15009">{{Ébauche|NUT}}

Ce tuto est destiné à vous aider à configurer (et surveiller) un onduleur sur une Debian.

Nous avons utilisés un onduleur PROLINK PRO850VU, connecté à l'ordinateur par un câble USB.

== Intérêt ==

L'intérêt d'avoir un onduleur n'est plus à démontrer.

Pouvoir contrôler celui-ci et ordonner l'arrêt de votre machine en cas de coupure prolongée du secteur en est un autre. En effet, si la coupure de secteur dure trop longtemps et que vous videz la batterie de votre UPS (Uninterruptible Power Supply qui signifie alimentation sans interruption) avant d'avoir le temps d'éteindre votre machine, l'intérêt de l'onduleur est nul... Vous aurez tout juste gagné quelques minutes avant la coupure sauvage de votre système.

De plus NUT vous permettra aussi d'éteindre l'onduleur: une fois la machine arrêtée l'onduleur s’arrêtera complètement, évitant ainsi une décharge complète de(s) batterie(s).

== Installation de NUT ==

=== Installation ===

Branchez le câble de communication (ici un cable USB) de l'onduleur et vérifiez qu'il est bien détecté

 $ dmesg
 ... 
 [60193.736139] usb 3-4: new low-speed USB device number 2 using xhci_hcd
 [60193.762985] generic-usb 0003:0665:5161.0004: hiddev0,hidraw3: USB HID v1.00 Device [INNO TECH USB to Serial] on usb-0000:00:14.0-4/input0

Installez nut

 # apt-get install nut
 ...
 Les paquets supplémentaires suivants seront installés : 
  libupsclient1 nut-client nut-server
 ...

=== Configuration ===

Configurez votre onduleur:
Il existe toute sorte de drivers, il faudra trouver le bon...

 ls /lib/nut
 apcsmart      belkin        bestuferrups  clone         everups     ivtscd        metasys      newmge-shut  powerpanel    solis          upscode2
 apcsmart-old  belkinunv     bestups       clone-outlet  gamatronic  liebert       mge-shut     oneac        rhino         tripplite      usbhid-ups
 bcmxcp        bestfcom      blazer_ser    dummy-ups     genericups  liebert-esp2  mge-utalk    optiups      richcomm_usb  tripplitesu    victronups
 bcmxcp_usb    bestfortress  blazer_usb    etapro        isbmex      masterguard   microdowell  powercom     safenet       tripplite_usb

Ce fichier ''/usr/share/nut/driver.list'' contient une liste d'onduleurs et le driver qu'il faut utiliser.

Prolink n'est pas dans la liste (il ne doivent pas ouvrir les spécification de leur matériel...); Nous avons réussi à faire fonctionner notre PRO850VU avec le driver &quot;blazer_usb&quot;

Si vous n'êtes pas sur du port de communication, mettez le à: port = auto

 # $editor /etc/nut/ups.conf
 ...
 [apc]
        driver = blazer_usb
        port = /dev/ttyS0
        #port = auto
 ...

Ajoutez ensuite une règle à UDEV afin qu'il attribue ttyS0 (si c'est bien le port sur lequel est l'onduleur) au groupe nut:

 # $editor /etc/udev/rules.d/99_nut-serialups.rules
 KERNEL==&quot;ttyS0&quot;, GROUP=&quot;nut&quot;

Rafraichissez UDEV

 udevadm trigger
 udevadm control --reload-rules

Changez manuellement le groupe de ttyS0 (ce sera automatique au prochain demarrage):

 chgrp nut /dev/ttyS0

Démarrez upsdrvctl afin de vérifier que votre configuration (dans ups.conf) est la bonne:

 upsdrvctl start

 Network UPS Tools - UPS driver controller 2.6.3
 Network UPS Tools - Megatec/Q1 protocol USB driver 0.04 (2.6.3)
 Supported UPS detected with mustek protocol
 Vendor information unavailable
 Battery runtime will not be calculated (runtimecal not set)

Configurez nut.conf

 # $editor /etc/nut/nut.conf
 MODE=standalone

Configuration pour upsmon:

 # $editor /etc/nut/upsd.conf
 LISTEN 127.0.0.1 3493

 # $editor /etc/nut/upsd.users
 [admin]
     password = motdepasse
     allowfrom = localhost
     upsmon master
     actions = SET
     instcmds = ALL

=== Configuration des alertes et actions ===

 # $editor /etc/nut/upsmon.conf
&lt;pre&gt;
# Network UPS Tools: example upsmon configuration
#
# This file contains passwords, so keep it secure.

MONITOR apc@localhost 1 admin motdepasse master
SHUTDOWNCMD &quot;/sbin/shutdown -h now&quot;
HOSTSYNC 15
POWERDOWNFLAG /etc/nut/killpower
FINALDELAY 5
NOTIFYCMD /sbin/upssched
NOTIFYMSG ONBATT &quot;%s is on battery&quot;
NOTIFYMSG ONLINE &quot;%s is back online&quot;
NOTIFYMSG LOWBATT &quot;%s has a low battery!&quot;
NOTIFYMSG SHUTDOWN &quot;System is being shutdown!&quot;

NOTIFYFLAG ONLINE SYSLOG+EXEC
NOTIFYFLAG ONBATT SYSLOG+EXEC
NOTIFYFLAG LOWBATT SYSLOG+EXEC
NOTIFYFLAG FSD SYSLOG+WALL+EXEC
NOTIFYFLAG COMMOK SYSLOG+EXEC
NOTIFYFLAG COMMBAD SYSLOG+EXEC
NOTIFYFLAG SHUTDOWN SYSLOG+EXEC
NOTIFYFLAG REPLBATT SYSLOG+EXEC
NOTIFYFLAG NOCOMM SYSLOG+EXEC
&lt;/pre&gt;

Configurons l'arrêt:

 # $editor /etc/nut/upssched.conf
&lt;pre&gt;
LOCKFN /var/lib/nut/upssched.lock
PIPEFN /var/lib/nut/upssched.pipe
CMDSCRIPT /bin/upssched-cmd
AT ONBATT * START-TIMER onbatt1 13
AT ONLINE * CANCEL-TIMER onbatt1
#AT ONBATT * START-TIMER earlyshutdown 30
#AT ONLINE * CANCEL-TIMER earlyshutdown
AT ONBATT * START-TIMER onbattwarn 30
AT ONLINE * CANCEL-TIMER onbattwarn
&lt;/pre&gt;

Le point important est de vérifier sur votre système si la fichier upssched-cmd existe et s'il se trouve à l'endroit que vous avez indiqué dans upssched.conf
S'il n'existe pas:

 touch /bin/upssched-cmd
 chmod +x /bin/upssched-cmd

Préparez le démarrage automatique de upsd et upsmon (selon votre branche - Stable, Testing ou Unstable - il peut y avoir des variations dans les noms des scripts dans init.d)

 # update-rc.d ups-monitor defaults
  Adding system startup for /etc/init.d/ups-monitor ...
    /etc/rc0.d/K20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc1.d/K20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc6.d/K20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc2.d/S20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc3.d/S20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc4.d/S20ups-monitor -&gt; ../init.d/ups-monitor
    /etc/rc5.d/S20ups-monitor -&gt; ../init.d/ups-monitor

=== Tests ===

Éteignez la machine, branchez l'onduleur et redémarrez:

 /etc/init.d/ups-monitor restart &amp;&amp; tail -f /var/log/syslog
  * Restarting Network UPS Tools                                                                                                                                           [ OK ] 
 Dec  5 12:00:19 laurent upsd[2404]: ACL in upsd.conf is no longer supported - switch to LISTEN
 Dec  5 12:00:19 laurent upsd[2404]: ACCEPT in upsd.conf is no longer supported - switch to LISTEN
 Dec  5 12:00:19 laurent upsd[2404]: REJECT in upsd.conf is no longer supported - switch to LISTEN
 Dec  5 12:00:19 laurent upsd[2404]: listening on 127.0.0.1 port 3493
 Dec  5 12:00:19 laurent upsd[2404]: listening on ::1 port 3493
 Dec  5 12:00:19 laurent upsd[2404]: Connected to UPS [apc]: blazer_usb-apc
 Dec  5 12:00:19 laurent upsd[2404]: allowfrom in upsd.users is no longer used
 Dec  5 12:00:19 laurent upsd[2405]: Startup successful
 Dec  5 12:00:19 laurent upsmon[2407]: Startup successful
 Dec  5 12:00:19 laurent upsd[2405]: User admin@127.0.0.1 logged into UPS [apc]

 # /etc/init.d/ups-monitor status
 Checking status of Network UPS Tools
  * upsd is running
  * upsmon is running

 # upsc -l
 apc

Vérification de l'état complet:

 # /bin/upsc apc@localhost
 battery.voltage: 13.10
 battery.voltage.nominal: 12.0
 beeper.status: enabled
 device.type: ups
 driver.name: blazer_usb
 driver.parameter.pollinterval: 2
 driver.parameter.port: /dev/ttyS0
 driver.version: 2.6.3
 driver.version.internal: 0.04
 input.current.nominal: 3.0
 input.frequency: 49.6
 input.frequency.nominal: 50
 input.voltage: 232.8
 input.voltage.fault: 232.8
 input.voltage.nominal: 230
 output.voltage: 234.9
 ups.delay.shutdown: 30
 ups.delay.start: 180
 ups.load: 9
 ups.productid: 5161
 ups.status: OL
 ups.type: offline / line interactive
 ups.vendorid: 0665

S'il manque la charge (comme c'est le cas ci-dessus, il faut préciser le minima et maxima du voltage de la batterie dans le fichier ups.conf:

 [apc]
        driver = blazer_usb
        port = /dev/ttyS0
        default.battery.voltage.high = 14
        default.battery.voltage.low = 11

 # /bin/upsc apc@localhost
&lt;pre&gt;
battery.charge: 77
battery.voltage: 13.30
battery.voltage.high: 14
battery.voltage.low: 11
battery.voltage.nominal: 12.0
beeper.status: enabled
device.type: ups
driver.name: blazer_usb
driver.parameter.pollinterval: 2
driver.parameter.port: /dev/ttyS0
driver.version: 2.6.3
driver.version.internal: 0.04
input.current.nominal: 3.0
input.frequency: 49.6
input.frequency.nominal: 50
input.voltage: 237.0
input.voltage.fault: 234.9
input.voltage.nominal: 230
output.voltage: 234.9
ups.delay.shutdown: 30
ups.delay.start: 180
ups.load: 8
ups.productid: 5161
ups.status: OL
ups.type: offline / line interactive
ups.vendorid: 0665
&lt;/pre&gt;

Vérifions si la commande d'arrêt fonctionne (Attention cela va arrếter la machine immédiatement...)

 # /sbin/upsmon -c fsd

Vérifions si le &quot;timer&quot; fonctionne (débranchez le cable d'alimentation de l'onduleur - Rebranchez le quand l'alerte est passé dans les logs):

 # tail -f /var/log/daemon.log | grep upssched
 Dec  5 15:23:33 sidlol upssched[28374]: Timer daemon started
 Dec  5 15:23:33 sidlol upssched[28374]: New timer: earlyshutdown (120 seconds)
 ...
 Dec  5 15:25:18 sidlol upssched[28374]: Cancelling timer: earlyshutdown
 Dec  5 15:25:31 sidlol upssched[28374]: Timer queue empty, exiting

Et observons les messages (broadcast) dans une console:

 Diffusion de message de nut@laurent
         (somewhere) at 15:25 ...
 
 UPS apc@localhost on battery


Modifions le script-exemple (upssched-cmd) pour qu'il envoie la commande d’arrêt sur l'évènement onbattwarn:

&lt;pre&gt;
#! /bin/sh
#
# This script should be called by upssched via the CMDSCRIPT directive.
# 
# Here is a quick example to show how to handle a bunch of possible
# timer names with the help of the case structure.
#
# This script may be replaced with another program without harm.
#
# The first argument passed to your CMDSCRIPT is the name of the timer
# from your AT lines.

case $1 in
        upsgone)
                logger -t upssched-cmd &quot;The UPS has been gone for a while&quot;
                ;;
        onbattwarn)
                logger -t upssched-cmd &quot;Shutting down using: upsmon -c fsd&quot;
                upsmon -c fsd
                ;;
        *)
                logger -t upssched-cmd &quot;Unrecognized command: $1&quot;
                ;;
esac
&lt;/pre&gt;

Vous pouvez bien sur lancer la commande (ou le script) que vous souhaitez, envoyer un mail ou un message d'alerte par ejabberd, stopper un programme, etc.

Exemple:
Lancer le script /usr/local/bin/stoptout.sh avant d'éteindre votre machine:
&lt;pre&gt;
ARRET=&quot;/usr/local/bin/stoptout.sh&quot;
case $1 in
        upsgone)
                logger -t upssched-cmd &quot;Systeme sur onduleur&quot;;;
        onbat30)
                logger -t upssched-cmd &quot;Lancement script&quot;
                $ARRET;;
        onbat60)
                logger -t upssched-cmd &quot;Arret systeme avec: upsmon -c fsd&quot;
                upsmon -c fsd;;
        *)
                logger -t upssched-cmd &quot;Unrecognized command: $1&quot;;;
esac
&lt;/pre&gt;

Et bien sur, testez!

 # tail -f /var/log/syslog
&lt;pre&gt;
...
Dec  6 07:34:44 sidlol upsmon[3968]: apc@localhost is on battery
Dec  6 07:34:44 sidlol upssched[16976]: Timer daemon started
Dec  6 07:34:44 sidlol upssched[16976]: New timer: onbatt1 (13 seconds)
Dec  6 07:34:44 sidlol upssched[16976]: New timer: onbattwarn (120 seconds)
...
Dec  6 07:36:44 sidlol upssched[16976]: Event: onbattwarn
Dec  6 07:36:44 sidlol upssched-cmd: Shutting down using: upsmon -c fsd
Dec  6 07:36:44 sidlol upsmon[3968]: Signal 10: User requested FSD
Dec  6 07:36:44 sidlol upsd[3890]: Client admin@127.0.0.1 set FSD on UPS [apc]
Dec  6 07:36:44 sidlol upsmon[3968]: Executing automatic power-fail shutdown
Dec  6 07:36:44 sidlol upsmon[3968]: System is being shutdown!
&lt;/pre&gt;

=== Surveiller l'onduleur par le réseau ===

Vous avez deux (ou plus) machines connectées à votre ondueleur ? Vous pouvez utiliser NUT pour surveiller (via le réseau) l'onduleur sur celles-ci:

Sur le serveur (la machine connectée à l'onduleur qui va surveiller celui-ci) modifiez les fichiers suivants:

 # $editor /etc/nut/upsd.conf
 LISTEN 10.10.10.101 3493

 # $editor /etc/nut/upsd.users
 [slave]
         password = motdepasse
         allowfrom = slaves
         upsmon slave

Sur le client:

 # $editor /etc/nut/upsmon.conf
&lt;pre&gt;
MONITOR apc@10.10.10.101 1 slave motdepasse slave
SHUTDOWNCMD &quot;/sbin/shutdown -h +0&quot;
HOSTSYNC 15
POWERDOWNFLAG /etc/killpower
FINALDELAY 5
NOTIFYCMD /sbin/upssched
NOTIFYMSG ONBATT &quot;%s is on battery&quot;
NOTIFYMSG ONLINE &quot;%s is back online&quot;
NOTIFYMSG LOWBATT &quot;%s has a low battery!&quot;
NOTIFYMSG SHUTDOWN &quot;System is being shutdown!&quot;

NOTIFYFLAG ONLINE SYSLOG+EXEC
NOTIFYFLAG ONBATT SYSLOG+EXEC
NOTIFYFLAG LOWBATT SYSLOG+EXEC
NOTIFYFLAG FSD SYSLOG+WALL+EXEC
NOTIFYFLAG COMMOK SYSLOG+EXEC
NOTIFYFLAG COMMBAD SYSLOG+EXEC
NOTIFYFLAG SHUTDOWN SYSLOG+EXEC
NOTIFYFLAG REPLBATT SYSLOG+EXEC
NOTIFYFLAG NOCOMM SYSLOG+EXEC
&lt;/pre&gt;

Relancez ups-monitor (ou nut-client et nut-server) sur le serveur et sur le client.
Votre client est prêt à recevoir les alertes du serveur et s'éteindre si nécessaire.

== nut-cgi: Surveillance Web de votre onduleur dans un navigateur ==

 #apt-get install nut-cgi
 ...
 Les paquets supplémentaires suivants seront installés : 
   apache2 apache2-mpm-worker apache2-utils apache2.2-bin apache2.2-common libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap

Les dépendances sont importantes (Apache2). Si vous ne souhaitez pas installer Apache, préférez [[Configurer_et_surveiller_un_onduleur_avec_NUT#nut-monitor:_Surveillance_Web_de_votre_onduleur_via_un_GUI|NUT-monitor]]
 # $editor /etc/nut/hosts.conf
 MONITOR apc@localhost &quot;Local Prolink&quot;

 # $editor /etc/apache2/sites-available/apache-nut.conf

 ScriptAlias /nut /usr/lib/cgi-bin/nut
 &lt;Directory /usr/lib/cgi-bin/nut&gt;
        Deny from all
        Allow from 127.0.0.1 10.10.10.0
        AllowOverride None
        Options ExecCGI
 &lt;/Directory&gt;

 # a2ensite apache-nut.conf &amp;&amp; service apache2 restart
 Enabling site apache-nut.conf.
 To activate the new configuration, you need to run:
   service apache2 reload
  [ ok ] Restarting web server: apache2 ... waiting .

Vous devriez déjà avoir accès à la page Web de monitoring de nut:

[[Fichier:Nut-cgi 01.png|300px]]

[[Fichier:Nut-cgi 02.png|300px]]

[[Fichier:Nut-cgi 03.png|300px]]

Mais pas à la page de configuration...

[[Fichier:Nut-cgi 04.png|300px]]

Pour cela il faudra un peu de sécurité, sans quoi vous ne pourrez pas y accéder!

 # $editor /usr/lib/cgi-bin/nut/.htaccess
 &lt;Files upsset.cgi&gt;
        deny from all
        allow from localhost
 &lt;/Files&gt;

 # $editor /etc/nut/upsset.conf
 ...
 
 I_HAVE_SECURED_MY_CGI_DIRECTORY
 
[[Fichier:Nut-cgi 05.png|300px]]

== nut-monitor: Surveillance Web de votre onduleur via un GUI ==

 # apt-get install nut-monitor
 ...
 Les paquets supplémentaires suivants seront installés : 
   python-nut

[[Fichier:Nut-cgi 06.png|300px]]

== Sources ==

{{en}} [http://www.networkupstools.org/ Site officiel NUT - Network UPS Tools]</text>
      <sha1>5eg1wc6h710crdbh66cto2btq1ewfrw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Contrôle parental</title>
    <ns>0</ns>
    <id>1249</id>
    <revision>
      <id>5120</id>
      <timestamp>2013-05-04T05:46:21Z</timestamp>
      <contributor>
        <username>Hulk</username>
        <id>190</id>
      </contributor>
      <comment>Scripte de Contrôle parental basé sur dnsmasq et la blackliste de l'université de Toulouse</comment>
      <text xml:space="preserve" bytes="30380">&lt;code bash&gt;
#!/bin/bash

# CTparental.sh
#
# par guillaume MARSAT
# une parti du code est tirer du scripte alcasar-bl.sh créer par Franck BOUIJOUX and Richard REY
# présent dans le code du projet alcasar en version 2.6.1 ; web page http://www.alcasar.net/

# This script is distributed under the Gnu General Public License (GPL)
if [ ! $UID -eq 0 ]; then
   echo &quot;Il vous faut les droit root pour lancer ce scripte&quot;
   exit 1
fi
args=${1}
SED=&quot;/bin/sed -i&quot;
DIR_CONF=&quot;/usr/local/etc/CTparental&quot;
tempDIR=&quot;/tmp/alcasar&quot;
RougeD=&quot;\033[1;31m&quot;
BleuD=&quot;\033[1;36m&quot;
VertD=&quot;\033[1;32m&quot;
Fcolor=&quot;\033[0m&quot;
GESTIONNAIREDESESSIONS=&quot; login gdm lightdm slim kdm xdm &quot;
FILEPAMTIMECONF=&quot;/etc/security/time.conf&quot;
DIRPAM=&quot;/etc/pam.d/&quot;
DAYS=( lundi mardi mercredi jeudi vendredi samedi dimanche )
DAYSPAM=( Mo Tu We Th Fr Sa Su )
DAYSCRON=( mon tue wed thu fri sat sun )
 
service --help 2&amp;&gt; /dev/null
if [ $? -eq 0 ] ; then
  CMDSERVICE=&quot;service &quot;
else
  CMDSERVICE=&quot;/etc/init.d/&quot;
fi
DNSMASQCONF=&quot;/etc/dnsmasq.conf&quot;
MAINCONFHTTPD=&quot;/etc/lighttpd/lighttpd.conf&quot;
DIRCONFENABLEDHTTPD=&quot;/etc/lighttpd/conf-enabled&quot;
CTPARENTALCONFHTTPD=$DIRCONFENABLEDHTTPD&quot;/10-CTparental.conf&quot;
RESOLVCONFMAIN=&quot;/etc/resolvconf&quot;
RESOLVDNSMASQ=&quot;$RESOLVCONFMAIN/run/interface/lo.dnsmasq&quot;
RESOLVCONFORDER=&quot;$RESOLVCONFMAIN/interface-order&quot;
DIRHTML=&quot;/var/www/CTparental&quot;
namservicednsmaq=&quot;dnsmasq&quot;
namservicehttpd=&quot;lighttpd&quot;
namservicecrond=&quot;cron&quot;
CMDINSTALL=&quot;&quot;
yum help 2&amp;&gt; /dev/null
if [ $? -eq 0 ] ; then
   ## &quot;Distribution baser sur yum exemple readhat,fedora...&quot;
   CMDINSTALL=&quot;yum install &quot;
   CMDREMOVE=&quot;yum remove &quot;
fi
urpmi --help 2&amp;&gt; /dev/null
if [ $? -eq 1 ] ; then
   ## &quot;Distribution baser sur urpmi exemple mandriva...&quot;
   CMDINSTALL=&quot;urpmi -a --auto &quot;
   CMDREMOVE=&quot;urpme --auto &quot;
   namservicecrond=&quot;crond&quot;
fi
apt-get -h 2&amp;&gt; /dev/null
if [ $? -eq 0 ] ; then
   ## &quot;Distribution baser sur apt-get exemple debian,ubuntu ...&quot;
   CMDINSTALL=&quot;apt-get -y --force-yes install &quot;
   CMDREMOVE=&quot;apt-get -y --force-yes remove --purge &quot;
fi
if [ $args=&quot;-i&quot; ] ; then
   namserviceNetworkManager=&quot;network-manager&quot;
   if [ -f /etc/NetworkManager/NetworkManager.conf ];then
     $SED &quot;s/^dns=dnsmasq/#dns=dnsmasq/g&quot; /etc/NetworkManager/NetworkManager.conf
     $CMDSERVICE$namserviceNetworkManager restart
     sleep 5
   fi
fi
if [ $( echo $CMDINSTALL | wc -m ) -eq 1 ] ; then
   echo &quot;Aucun gestionner de paquet connu , n'a été détecté.&quot;
   exit 1
fi


interface_WAN=$(ip route | awk '/^default via/{print $5}') # suppose que la passerelle est la route par default

if [ -f $DIR_CONF/resolv.conf.sav ];then
   DNS1=$(cat $DIR_CONF/resolv.conf.sav | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f1)
   DNS2=$(cat $DIR_CONF/resolv.conf.sav | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f2)
else
   DNS1=$(cat /etc/resolv.conf | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f1)
   DNS2=$(cat /etc/resolv.conf | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f2)
fi

PRIVATE_IP=&quot;127.0.0.10&quot;
FILE_tmp=&quot;$tempDIR/filetmp.txt&quot;
BL_SERVER=&quot;dsi.ut-capitole.fr&quot;
CATEGORIES_ENABLED=&quot;$DIR_CONF/categories-enabled&quot;
BL_CATEGORIES_AVAILABLE=&quot;$DIR_CONF/bl-categories-available&quot;
WL_CATEGORIES_AVAILABLE=&quot;$DIR_CONF/wl-categories-available&quot;
DIR_DNS_FILTER_AVAILABLE=&quot;$DIR_CONF/dnsfilter-available&quot;
DIR_DNS_BLACKLISTE_ENABLED=&quot;$DIR_CONF/blackliste-enabled&quot;
DIR_DNS_WHITELIST_ENABLED=&quot;$DIR_CONF/whitelist-enabled&quot;
DNS_FILTER_OSSI=&quot;$DIR_CONF/blackliste-local&quot;
DREAB=&quot;$DIR_CONF/domaine-rehabiliter&quot; 
LASTUPDATE=&quot;$DIR_CONF/last-update&quot; 
THISDAYS=$(expr $(date +%Y) \* 365 + $(date +%j))
MAXDAYSFORUPDATE=&quot;7&quot; # update tous les 7 jours
CHEMINCTPARENTLE=$(readlink -f $0)

initblenabled () {
   cat &lt;&lt; EOF &gt; $CATEGORIES_ENABLED
adult
agressif
dangerous_material
dating
drogue
gambling
hacking
malware
marketingware
mixed_adult
phishing
redirector
sect
strict_redirector
strong_redirector
tricheur
warez
ossi   
EOF
         

}

download() {
   wget -P $tempDIR http://$BL_SERVER/blacklists/download/blacklists.tar.gz 2&gt;&amp;1 | cat
   if [ ! $? -eq 0 ]; then
      echo &quot;erreur lors du téléchargement processu interompu&quot;
      rm -rf $tempDIR
      exit 1
   fi
   tar -xzf $tempDIR/blacklists.tar.gz -C $tempDIR
   if [ ! $? -eq 0 ]; then
      echo &quot;erreur d'extraction de l'archive processu interompu&quot;
      exit 1
   fi
   rm -rf $DIR_DNS_FILTER_AVAILABLE/
   mkdir $DIR_DNS_FILTER_AVAILABLE
}
autoupdate() {
	LASTUPDATEDAY=`sed -n &quot;1 p&quot; $LASTUPDATE`
        DIFFDAY=$(expr $THISDAYS - $LASTUPDATEDAY)
	if [ $DIFFDAY -ge $MAXDAYSFORUPDATE ] ; then
		download
		adapt
		catChoice
		dnsmasqon
		exit 0
	fi
	echo $THISDAYS &gt; $LASTUPDATE
	
}
autoupdateon() {
echo $THISDAYS &gt; $LASTUPDATE
echo &quot;*/10 * * * * root $CHEMINCTPARENTLE -aup&quot; &gt; /etc/cron.d/CTparental-autoupdate
$CMDSERVICE$namservicecrond restart
}

autoupdateoff() {
rm -f /etc/cron.d/CTparental-autoupdate
$CMDSERVICE$namservicecrond restart
}
adapt() {
   dnsmasqoff
   if [ ! -f $DNS_FILTER_OSSI ] ; then
            echo &gt; $DNS_FILTER_OSSI
   fi

   if [ -d $tempDIR  ] ; then
	  CATEGORIES_AVAILABLE=$tempDIR/categories_available
	  ls -FR $tempDIR/blacklists | grep '/$' | sed -e &quot;s/\///g&quot; &gt; $CATEGORIES_AVAILABLE
          echo -n &gt; $BL_CATEGORIES_AVAILABLE
          echo -n &gt; $WL_CATEGORIES_AVAILABLE
          if [ ! -f $DIR_DNS_FILTER_AVAILABLE/ossi.conf ] ; then
		echo &gt; $DIR_DNS_FILTER_AVAILABLE/ossi.conf
	  fi
	  for categorie in `cat $CATEGORIES_AVAILABLE` # creation des deux fichiers de categories (BL / WL)
	  do
		if [ -e $tempDIR/blacklists/$categorie/usage ]
		then
			is_whitelist=`grep white $tempDIR/blacklists/$categorie/usage|wc -l`
		else
			is_whitelist=0 # ou si le fichier 'usage' n'existe pas, on considère que la catégorie est une BL
		fi
		if [ $is_whitelist -eq &quot;0&quot; ]
		then
			echo &quot;$categorie&quot; &gt;&gt; $BL_CATEGORIES_AVAILABLE
		else
			echo &quot;$categorie&quot; &gt;&gt; $WL_CATEGORIES_AVAILABLE
		fi
	   done
         echo -n &quot;Toulouse Black and White List migration process. Please wait : &quot;
         for DOMAINE in `cat  $CATEGORIES_AVAILABLE`  # pour chaque catégorie
         do
            echo -n &quot;.&quot;
            # suppression des @IP, de caractères acccentués et des lignes commentées ou vide
            egrep  -v &quot;([0-9]{1,3}\.){3}[0-9]{1,3}&quot; $tempDIR/blacklists/$DOMAINE/domains &gt; $FILE_tmp
            $SED &quot;/[äâëêïîöôüû]/d&quot; $FILE_tmp
            $SED &quot;/^#.*/d&quot; $FILE_tmp
            $SED &quot;/^$/d&quot; $FILE_tmp
            $SED &quot;s/\.\{2,1000\}/\./g&quot; $FILE_tmp # supprime les suite de &quot;.&quot; exemple: address=/fucking-big-tits..com/127.0.0.10 devient address=/fucking-big-tits.com/127.0.0.10
	    is_blacklist=`grep $DOMAINE $BL_CATEGORIES_AVAILABLE |wc -l`
	    if [ $is_blacklist -ge &quot;1&quot; ] ; then
            	$SED &quot;s?.*?address=/&amp;/$PRIVATE_IP?g&quot; $FILE_tmp  # Mise en forme dnsmasq des listes noires
		mv $FILE_tmp $DIR_DNS_FILTER_AVAILABLE/$DOMAINE.conf  
            else
		$SED &quot;s?.*?server=/&amp;/#?g&quot; $FILE_tmp  # Mise en forme dnsmasq des listes blanches
		mv $FILE_tmp $DIR_DNS_FILTER_AVAILABLE/$DOMAINE.conf
            fi
         done
   else
         mkdir   $tempDIR
         echo -n &quot;.&quot;
 	 # suppression des @IP, de caractères acccentués et des lignes commentées ou vide
         egrep  -v &quot;([0-9]{1,3}\.){3}[0-9]{1,3}&quot; $DNS_FILTER_OSSI  &gt; $FILE_tmp
         $SED &quot;/[äâëêïîöôüû]/d&quot; $FILE_tmp 
         $SED &quot;/^#.*/d&quot; $FILE_tmp 
         $SED &quot;/^$/d&quot; $FILE_tmp 
         $SED &quot;s/\.\{2,1000\}/\./g&quot; $FILE_tmp # supprime les suite de &quot;.&quot; exemple: address=/fucking-big-tits..com/127.0.0.10 devient address=/fucking-big-tits.com/127.0.0.10
         $SED &quot;s?.*?address=/&amp;/$PRIVATE_IP?g&quot; $FILE_tmp  # Mise en forme dnsmasq
         mv $FILE_tmp $DIR_DNS_FILTER_AVAILABLE/ossi.conf
   fi     
   echo
   rm -rf $tempDIR
}
catChoice() {
#   echo &quot;catChoice&quot;
   rm -rf $DIR_DNS_BLACKLISTE_ENABLED/
   mkdir $DIR_DNS_BLACKLISTE_ENABLED
   rm -rf  $DIR_DNS_WHITELIST_ENABLED/
   mkdir  $DIR_DNS_WHITELIST_ENABLED
     
      for CATEGORIE in `cat $CATEGORIES_ENABLED` # on affecte les catégories dnsmasq
      do
	 is_blacklist=`grep $CATEGORIE $BL_CATEGORIES_AVAILABLE |wc -l`
	 if [ $is_blacklist -ge &quot;1&quot; ] ; then
		cp $DIR_DNS_FILTER_AVAILABLE/$CATEGORIE.conf $DIR_DNS_BLACKLISTE_ENABLED/
         else
		cp $DIR_DNS_FILTER_AVAILABLE/$CATEGORIE.conf $DIR_DNS_WHITELIST_ENABLED/
     	 fi     
      done
      cp $DIR_DNS_FILTER_AVAILABLE/ossi.conf $DIR_DNS_BLACKLISTE_ENABLED/
#      echo &quot;fincatChoice&quot;
      reabdomaine
}

reabdomaine () {
if [ ! -f $DREAB ] ; then
cat &lt;&lt; EOF &gt; $DREAB
   www.google.com
   www.google.fr
EOF
fi
if [ ! -f $DIR_DNS_BLACKLISTE_ENABLED/ossi.conf ] ; then
	echo &gt; $DIR_DNS_BLACKLISTE_ENABLED/ossi.conf
fi
echo
echo -n &quot;Application de la liste blanche (domaine réabiliter):&quot;
for CATEGORIE in `cat  $CATEGORIES_ENABLED  `  # pour chaque catégorie
do 
	is_blacklist=`grep $CATEGORIE $BL_CATEGORIES_AVAILABLE |wc -l`
	if [ $is_blacklist -ge &quot;1&quot; ] ; then
		echo -n &quot;.&quot;
		for DOMAINE in `cat  $DREAB`
		do
		    $SED &quot;/$DOMAINE/d&quot; $DIR_DNS_BLACKLISTE_ENABLED/$CATEGORIE.conf
		done
        fi
done
echo -n &quot;.&quot;
cat $DREAB | sed -e &quot;s?.*?server=/&amp;/#?g&quot; &gt;  $DIR_DNS_WHITELIST_ENABLED/whiteliste.ossi.conf
echo
}

dnsmasqon () {
   categorie1=`sed -n &quot;1 p&quot; $CATEGORIES_ENABLED` # on considaire que si la 1 er categorie activer est un blackliste on fonctionne par blackliste.
   is_blacklist=`grep $categorie1 $BL_CATEGORIES_AVAILABLE |wc -l`
   if [ $is_blacklist -ge &quot;1&quot; ] ; then
   cat &lt;&lt; EOF &gt; $DNSMASQCONF
         # Configuration file for &quot;dnsmasq with blackhole&quot;
   # Inclusion de la blacklist &lt;domains&gt; de Toulouse dans la configuration
   conf-dir=$DIR_DNS_BLACKLISTE_ENABLED
   # conf-file=$DIR_DEST_ETC/alcasar-dns-name   # zone de definition de noms DNS locaux
   no-dhcp-interface=$interface_WAN
   bind-interfaces
   cache-size=1024
   domain-needed
   expand-hosts
   bogus-priv
   server=$DNS1
   server=$DNS2
   
EOF
$CMDSERVICE$namservicednsmaq restart
else
  dnsmasqwhitelistonly
fi
}
dnsmasqoff () {
   cat &lt;&lt; EOF &gt; $DNSMASQCONF
         # Configuration file for &quot;dnsmasq with blackhole&quot;
   # Inclusion de la blacklist &lt;domains&gt; de Toulouse dans la configuration
   # conf-dir=$DIR_DNS_BLACKLISTE_ENABLED
   # conf-file=$DIR_DEST_ETC/alcasar-dns-name   # zone de definition de noms DNS locaux
   no-dhcp-interface=$interface_WAN
   bind-interfaces
   cache-size=0
   domain-needed
   expand-hosts
   bogus-priv
   server=$DNS1
   server=$DNS2
   
EOF

$CMDSERVICE$namservicednsmaq restart
}
dnsmasqwhitelistonly  () {
   cat &lt;&lt; EOF &gt; $DNSMASQCONF
         # Configuration file for &quot;dnsmasq with blackhole&quot;
   # Inclusion de la blacklist &lt;domains&gt; de Toulouse dans la configuration
   conf-dir=$DIR_DNS_WHITELIST_ENABLED
   # conf-file=$DIR_DEST_ETC/alcasar-dns-name   # zone de definition de noms DNS locaux
   no-dhcp-interface=$interface_WAN
   bind-interfaces
   cache-size=0
   domain-needed
   expand-hosts
   bogus-priv
   server=$DNS1
   server=$DNS2
   address=/#/$PRIVATE_IP #redirige vers $PRIVATE_IP pour tous ce qui n'a pas étais resolut dans les listes blanches
EOF

$CMDSERVICE$namservicednsmaq restart
}


FoncHTTPDCONF () {
$CMDSERVICE$namservicehttpd stop
rm -rf $DIRHTML/*
mkdir -v $DIRHTML
if [ ! -z $DIRhtmlPersonaliser ];then
   cp -r $DIRhtmlPersonaliser/* $DIRHTML
else
s=&quot;span&quot;
st=&quot;style&quot;
c=&quot;$c&quot;
cab=&quot;;\&quot;&gt;&quot;

cat &lt;&lt; EOF &gt; $DIRHTML/index.html
 &lt;HTML&gt;
&lt;HEAD&gt;
   &lt;META HTTP-EQUIV=&quot;CONTENT-TYPE&quot; CONTENT=&quot;text/html; charset=utf-8&quot;&gt;
   &lt;TITLE&gt;danger&lt;/TITLE&gt;
&lt;/HEAD&gt;
&lt;BODY LANG=&quot;fr-FR&quot; DIR=&quot;LTR&quot;&gt;
&lt;CENTER&gt;
&lt;img alt=&quot;Site dangereux pour des mineurs&quot;
  HEIGHT=&quot;600&quot;   
  src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKIAAACgCAYAAACPOrcQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz
AAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAuGSURB
VHic7d17jFTlGcfx7zMol7KriRpF3Sii3FyooE1EWuNaFrFeWjXWqEBCmyYtrSa2iX9g+wcx9RZN
kya29i+1ETWKMSZI1AiClyI2KiJyFa8BBC9EuyAXhad/vDO7s8PszpyZc857zrzPJ9nsZvac931g
fnnf2Zlz3ldUFVNBZCQwDhhf/H480A60Fb+X/9xWPGsP0FP2vfznr4AtwGZgC6p70/qn5IUEHUSR
EcAFwGRc6Epfpybc83ZcKEtf64DXUd2XcL+ZFVYQRYYB04CLi1/TgKFea+pzEFgNrCh+rUb1gN+S
0tP6QRQ5B7gSF7zpwHC/BdVtP7AKF8olqK71XE+iWjOIIh3AjcBcYJLnauLyHvAI8Biq23wXE7fW
CaJIO3AtMAfoAgpe60nOYWAlsAh4CtUev+XEI/9BdFPvrcA1wAjP1aRtH/A0cG/ep+78BlFkOnAb
cLnvUjJiKXAnqqt8F9KI/AVRZBawALjIdykZ9TJwF6ov+C4kivwEUeQq4C/Aeb5LyYm3gL+i+ozv
QuqR/SCKTADuB2b4LiWnlgM3obrJdyGDye5fliIjEbkbeBcLYTNmAO8icnfxo8tMyuaIKPJL4G9A
h+9SWsw24E+oLvZdSKVsBVHkLOABoNt3KS1uGTAf1a2+CynJztQsMhtYg4UwDd3AGkTm+C6kxH8Q
RX6AyIO4Twraah1uYtMGPILIw1l47eh3ahaZDDwBTPRXhMFdinY9qu/4KsDfiCjyW+C/WAizYDyw
GpGbfBWQ/ogoMhR4EJidbsemTouBuWlfC5luEEWOwX1Ib+8LZtsrwM9R/SatDtMLosgo4DlgSjod
miatAy5FdUcanaXzGlFkHPA6FsI8mQysKn7EmrjkgyhyPvAfYHTifZm4nQ68hsi0pDtKNogi3cBL
wAmJ9mOSdDywvPhcJia514huJFwOeH+z1MRiLzAD1TeSaDyZIIqcDbwKHBd/48aj3cCFqG6Iu+H4
gyhyOu41YdI3qRs/tgM/RvWTOBuN9zWiyInAi1gIW9mpwIvF5zo28QXRvVn9PDA2tjZNVo0Fni8+
57GIJ4giAjwJTI2lPZMHU4Eni8990+IaEf8MzIqpLZMfs3DPfdOa/2NFpAt3xe+QGOox+XMI6EZ1
ZTONNBdEkZOAd4BRzRRhcm8nMAXVXY020PjULFIAHsdCaFwGHi9moiHNvEZciFvqzRhwWVjY6MmN
Tc0iF+JWpPJ/z4vJksNAF6qvRj0xehBFjsbdbdcZtTMThPXAVFS/i3JSIyPaH7EQmoF14jISSbQR
UeQ0YAN2RY0Z3F7gbFQ/rfeEqCPi37EQmtpG4rJSt/pHRJHLgWej12QCdgWqS+s5sL4guv1I1gNn
NFeXCcxHQGc9+8fUOzXPx0JoojsDl52aao+IIsOBD4GTmy7LhOgzYAyq+wc7qJ4R8TdYCE3jTsZl
aFCDj4hueZAPsAUzTXO2AWeienCgA2qNiPOwEJrmdeCyNKCBR0SRo4D3sRvjTTw+Bsai+n21Xw42
Is7BQmjiMxqXqaoGC+IfYi/FhG7ATFWfmkU6cbthGhO3Saiur3xwoBFxXrK1mIDNq/bgkSOiyBDc
n9t2C4BJwk6gA9VD5Q9WGxEvxUJokjMKl7F+qgVxXuKlmNDNq3yg/9QschywAxiWWkkmRAeAU1Dd
XXqgckT8BRZCk7xhuKz1qgyirfZv0tIva5VT83bglJQLMmHagWrv8oV9QXSrx2+M3Nwtt8Dw4XEV
Z/Jm1y546KFGz55Y2tC8PIjzgX9Gburrr+HYYxstxOTd2rUwpeFdS36P6gPQ/zXiT5suyphoejPn
gugWW+zyVIwJV1dpoc/SiPhDbC8Uk74TcNnrDeK5/moxgTsX+oKYyn5rxlQxASyIxr9+QbRd5I0v
EwEKxVtGx3guxoRrDCJDC8BZ2I4Axp8hwFkFbFo2/k0sAON9V2GCN74AxLq5nzENOLEAtPuuwgSv
3YJosqC9ALT5rsIEr81GRJMFNjWbTLCp2WSCTc0mE9ptU0eTCQWgx3cRJng9BWCP7ypM8PbYiGiy
oMeCaLLApmaTCTY1m0ywqdlkQk8B+Nx3FSZ4nxeAzb6rMMHbXKCRpeiMidfGArAVOFTrSGMScgjY
WihuXfqh72pMsD5E9WDpogebno0vG6FvyZFNHgsxYdsEFkTjX78gvu2xEBO2t6EviO8CX/qrxQTq
S1z2ikF0Wwus9FePCdTKYvb67SrwkqdiTLh6M1cexBUeCjFh681cXxDdDkA7fFRjgrSjtOsUwFEV
v1wBzI7U3IIFMMw2NA3WF180ema/GbhyU8hfAQ82XJQx9fs1qr2b+NnG4caHGhuHu18sSbkoE54l
5SGEIzcOB3g4nVpMwB6ufKD/1AwgMgTYBoxKpSQTmp1AB6r9roE9ckR0ByxKqSgTnkWVIYRqIyKA
SCfwXgpFmfBMQnV95YPVVwNzB76ZdEUmOG9WCyEMFETnHwkVY8I1YKaqT80AIkcB7wOjEynJhOZj
YCyq31f75cAjojvhrmRqMgG6a6AQwmAjIlDcufQDoCP+ukxAtgFnFu8YrWrwpYvdiffEXJQJzz2D
hRBqjYgAIsNx9z2fHF9dJiCfAWNQ3T/YQbUXc3cN3BdTUSY899UKIdQzIgKIjADWA2c0X5cJyEdA
J6r7ah1Y3/YWrqGbmyzKhOfmekII9QYRQHUp8EyjFZngPFPMTF3qm5p7j5bTgA3AyOh1mYDsBc5G
9dN6T4i285Rr+PaIRZnw3B4lhBB1RAQQORpYA3RGO9EEYj0wFdXvopwUfS8+18F84HDkc02rOwzM
jxpCaCSIAKqvAnc0dK5pZXcUsxFZ9Km590wpAMuAixtrwLSYFUA3qg3NlI0HEUDkJOAd7P6W0O0E
pqC6q9EGmtuv2XV8A7YYfMgOATc0E0JoNogAqiuBhU23Y/JqYTEDTWluau5tRQR4DpjVfGMmR14A
fkYMIYoniAAix+AW+5waT4Mm49YAXaj+L47G4gsigMiJwGvA2PgaNRn0PvATVGPbx7H514jlXGEz
ge2xtmuyZDswM84QQtxBBFD9BLgE2F3rUJM7u4FLis9xrOIPIoDqBuAy3FUYpjXsBS4rPrexSyaI
AKpvAFcB3ybWh0nLt8BVxec0EfH+sVK1BzkfeBY4IdmOTEK+Aq5AdXWSnSQfRACRcbj3nEYn35mJ
0SfApeWLricluam5nOoW4ALc59ImH9YB09MIIaQVRADVncBFwPLU+jSNegW4ENXUtjtJL4hA8V34
y4BHU+3XRLEY9xbNN2l2mm4QwS1jojoH+B1Q88Zrk5oDuNs/r0P1QNqdp/PHyoC9y2TgCWCivyIM
sBm4HlVvr+HTHxHLqa4DfgQ8VOtQk5h/A+f5DCH4HhHLicwG/gW0+S4lEHtwNzplYuF+vyNiOdVH
cZeQLfNdSgCW4W75zEQIIUtBBFDdiupM4Drc4o4mXtuA61CdiepW38WUy1YQS1QXAxNwi4RGvkfW
HOE73P/lhOL/beZk5zXiQEQmAPcDM3yXklPLgZvS+oSkUdkcEcupbkK1G7gaeMt3OTnyFnA1qt1Z
DyHkYUSsJDILWID7uNAc6WXcCv4v+C4kivwFsURkOnAbcLnvUjJiKXAnqqt8F9KI/AaxROQc4Fbg
GmCE52rStg94GrgX1bW+i2lG/oNYItIOXAvMAbrIw+vfxhzG3ba7CHgK1R6/5cSjdYJYTqQDuBGY
C0zyXE1c3gMeAR5DteXeY23NIJZzU/eVuFXLpgPD/RZUt/3AKtwqW0vyPvXW0vpBLCcyDJiGC+XF
xZ+Heq2pz0FgNS54K4DVPi7H8iWsIFZy+8dcAEwGxpd9nZpwz9txl16VvtYBr9e7FUQrCjuIAxEZ
CYzDhXIccDzQjrsyqL3i59LVQnuAnrLv5T9/BWzBhW4Lqna/d4X/A/bydTBs1YRqAAAAAElFTkSu
QmCC&quot; /&gt;
&lt;/CENTER&gt;
&lt;/BODY&gt;
&lt;/HTML&gt;
EOF

fi
## GENERATION

ln -s  $DIRHTML/index.html $DIRHTML/err404.html
USERHTTPD=$(cat /etc/passwd | grep /var/www | cut -d&quot;:&quot; -f1)
GROUPHTTPD=$(cat /etc/group | grep $USERHTTPD | cut -d&quot;:&quot; -f1)
cat &lt;&lt; EOF &gt; $MAINCONFHTTPD
server.modules = (
&quot;mod_access&quot;,
&quot;mod_alias&quot;,
&quot;mod_redirect&quot;,
# &quot;mod_rewrite&quot;,
)
server.document-root = &quot;/var/www&quot;
server.upload-dirs = ( &quot;/var/cache/lighttpd/uploads&quot; )
server.errorlog = &quot;/var/log/lighttpd/error.log&quot;
server.pid-file = &quot;/var/run/lighttpd.pid&quot;
server.username = &quot;$USERHTTPD&quot;
server.groupname = &quot;$GROUPHTTPD&quot;
server.port = 80
server.bind = &quot;127.0.0.1&quot;


index-file.names = ( &quot;index.php&quot;, &quot;index.html&quot; )
url.access-deny = ( &quot;~&quot;, &quot;.inc&quot; )
static-file.exclude-extensions = ( &quot;.php&quot;, &quot;.pl&quot;, &quot;.fcgi&quot; )

compress.cache-dir = &quot;/var/cache/lighttpd/compress/&quot;
compress.filetype = ( &quot;text/css&quot;, &quot;text/html&quot;, &quot;text/plain&quot; )

server.tag = &quot;&quot;

include_shell &quot;/usr/share/lighttpd/create-mime.assign.pl&quot;
include_shell &quot;/usr/share/lighttpd/include-conf-enabled.pl&quot;
EOF

mkdir -p /usr/share/lighttpd/

if [ ! -f /usr/share/lighttpd/create-mime.assign.pl ];then
cat &lt;&lt; EOF &gt; /usr/share/lighttpd/create-mime.assign.pl
#!/usr/bin/perl -w
use strict;
open MIMETYPES, &quot;/etc/mime.types&quot; or exit;
print &quot;mimetype.assign = (\n&quot;;
my %extensions;
while(&lt;MIMETYPES&gt;) {
  chomp;
  s/\#.*//;
  next if /^\w*$/;
  if(/^([a-z0-9\/+-.]+)\s+((?:[a-z0-9.+-]+[ ]?)+)$/) {
    foreach(split / /, \$2) {
      # mime.types can have same extension for different
      # mime types
      next if \$extensions{\$_};
      \$extensions{\$_} = 1;
      print &quot;\&quot;.\$_\&quot; =&gt; \&quot;\$1\&quot;,\n&quot;;
    }
  }
}
print &quot;)\n&quot;;
EOF
chmod +x /usr/share/lighttpd/create-mime.assign.pl
fi


if [ ! -f /usr/share/lighttpd/include-conf-enabled.pl ];then
cat &lt;&lt; EOF &gt; /usr/share/lighttpd/include-conf-enabled.pl
#!/usr/bin/perl -wl

use strict;
use File::Glob ':glob';

my \$confdir = shift || &quot;/etc/lighttpd/&quot;;
my \$enabled = &quot;conf-enabled/*.conf&quot;;

chdir(\$confdir);
my @files = bsd_glob(\$enabled);

for my \$file (@files)
{
        print &quot;include \&quot;\$file\&quot;&quot;;
}
EOF
chmod +x /usr/share/lighttpd/include-conf-enabled.pl 

fi

mkdir -p $DIRCONFENABLEDHTTPD
cat &lt;&lt; EOF &gt; $CTPARENTALCONFHTTPD

\$SERVER[&quot;socket&quot;] == &quot;$PRIVATE_IP:80&quot; {
server.document-root = &quot;$DIRHTML&quot;
server.errorfile-prefix = &quot;$DIRHTML/err&quot; 
#ssl.engine = &quot;enable&quot; 
#ssl.pemfile = &quot;/etc/lighttpd/ssl/$PRIVATE_IP.pem&quot; 
}

EOF

$CMDSERVICE$namservicehttpd start
}

install () {
      if [ $(netstat -anlp | grep -w LISTEN | grep &quot;:80&quot; | cut -d&quot;/&quot; -f2 | wc -l ) -gt 0 ] ; then
	   echo &quot;le Serveur Web $(netstat -anlp | grep -w LISTEN | grep &quot;:80&quot; | cut -d&quot;/&quot; -f2 | sort -u ) tourne deja sur ce pc&quot;
	   echo &quot;veuiller le désinstaler avant d'installer le control parental.&quot;
	   exit 1
      fi
      mkdir $tempDIR
      mkdir -p $DIR_CONF
      initblenabled
      cat /etc/resolv.conf &gt; $DIR_CONF/resolv.conf.sav
      $CMDINSTALL dnsmasq
      $CMDINSTALL lighttpd
      if [ ! -f blacklists.tar.gz ]
      then
         download
      else
         tar -xzf blacklists.tar.gz -C $tempDIR
         if [ ! $? -eq 0 ]; then
            echo &quot;erreur d'extraction de l'archive processu interompu&quot;
            exit 1
         fi
         rm -rf $DIR_DNS_FILTER_AVAILABLE/
         mkdir $DIR_DNS_FILTER_AVAILABLE
      fi
      adapt
      catChoice
      dnsmasqon
      $CMDINSTALL resolvconf
      confresolvconf

      FoncHTTPDCONF
}

confresolvconf () {
echo &quot;nameserver 127.0.0.1&quot; &gt; $RESOLVDNSMASQ
if [ ! -f $RESOLVCONFORDER ];then
cat &lt;&lt; EOF &gt; $RESOLVCONFORDER
# interface-order(5)
lo.inet*
lo.dnsmasq
lo.pdnsd
lo.!(pdns|pdns-recursor)
lo
tun*
tap*
hso*
em+([0-9])?[+([0-9]))*
p+([0-9]p+([0-9])?(_+([0-9]))*
eth*
ath*
wlan*
ppp*
*
EOF
fi
resolvconf -u
}

uninstall () {
   rm -f /etc/cron.d/CTparental*
   $CMDSERVICE$namservicecrond restart
   $CMDSERVICE$namservicehttpd stop
   rm -f /var/www/index.lighttpd.html
   rm -rf $tempDIR
   rm -rf $DIR_CONF
   rm -rf $DIRHTML

   if [ -f /etc/NetworkManager/NetworkManager.conf ];then
	$SED &quot;s/^#dns=dnsmasq/dns=dnsmasq/g&quot; /etc/NetworkManager/NetworkManager.conf
	$CMDSERVICE$namserviceNetworkManager restart
  	sleep 5
   fi
   rm -rf /usr/share/lighttpd/*
   rm -f $CTPARENTALCONFHTTPD
   rm -f $RESOLVDNSMASQ
   resolvconf -u

   $CMDREMOVE lighttpd
   $CMDREMOVE dnsmasq 
   $CMDREMOVE resolvconf
}

choiblenabled () {
echo -n &gt; $CATEGORIES_ENABLED
clear
echo &quot;Voulez Filtre par Blackliste ou Whiteliste :&quot;
echo -n &quot; B/W :&quot;
while (true); do
         read choi
         case $choi in
         B | b )
         echo &quot;Vous aller maintenant choisir les \&quot;Black listes\&quot; a appliquer.&quot;
		for CATEGORIE in `cat  $BL_CATEGORIES_AVAILABLE`  # pour chaque catégorie
		do   
		      clear
		      echo &quot;Voulez vous activer la categorie :&quot;
		      echo -n &quot;$CATEGORIE  O/N :&quot;
		      while (true); do
			 read choi
			 case $choi in
			 O | o )
			 echo $CATEGORIE &gt;&gt; $CATEGORIES_ENABLED
			 break
			 ;;
			 N | n )
			 break
			 ;;
		      esac
		      done
		done
         break
         ;;
         W | w )
         echo &quot;Vous aller maintenant choisir les \&quot;White listes\&quot; a appliquer.&quot;
		for CATEGORIE in `cat  $WL_CATEGORIES_AVAILABLE`  # pour chaque catégorie
		do   
		      clear
		      echo &quot;Voulez vous activer la categorie :&quot;
		      echo -n &quot;$CATEGORIE  O/N :&quot;
		      while (true); do
			 read choi
			 case $choi in
			 O | o )
			 echo $CATEGORIE &gt;&gt; $CATEGORIES_ENABLED
			 break
			 ;;
			 N | n )
			 break
			 ;;
		      esac
		      done
		done
         break
         ;;
      esac
done
}


errortime1 () {
clear
echo -e &quot;L'heure de debut doit ètre strictement inférieur a l'heure de fin: $RougeD$input$Fcolor &quot;
echo &quot;exemple: 08h00 a 24h00 ou 08h00 a 12h00 et 14h00 a 24h00&quot;
echo -e -n &quot;$RougeD$PCUSER$Fcolor est autorisés à se connecter le $BleuD${DAYS[$NumDAY]}$Fcolor de:&quot;
}
errortime2 () {
clear
echo -e &quot;Mauvaise syntaxe: $RougeD$input$Fcolor &quot;
echo &quot;exemple: 08h00 a 24h00 ou 08h00 a 12h00 et 14h00 a 24h00&quot;
echo -e -n &quot;$RougeD$PCUSER$Fcolor est autorisés à se connecter le $BleuD${DAYS[$NumDAY]}$Fcolor de:&quot;
}

pause () {   # fonction pause pour debugage
      choi=&quot;&quot;
      echo  &quot;pour continuer  press Q :&quot;
      while (true); do
         read choi
         case $choi in
         Q | q )
         break
         ;;
      esac
      done
}
activetimelogin () {
   TESTGESTIONNAIRE=&quot;&quot;
   for FILE in `echo $GESTIONNAIREDESESSIONS`
   do
      if [ -f $DIRPAM$FILE ];then
         if [ $(cat $DIRPAM$FILE | grep -c &quot;account required pam_time.so&quot;) -eq 0  ] ; then
            echo &quot;account required pam_time.so&quot; &gt;&gt; $DIRPAM$FILE
         fi
         TESTGESTIONNAIRE=$TESTGESTIONNAIRE\ $FILE
      fi
   done
   if [ $( echo $TESTGESTIONNAIRE | wc -m ) -eq 1 ] ; then
      echo &quot;Aucun gestionner de session connu , n'a été détecté.&quot;
      echo &quot; il est donc impossible d'activer le controle horaires des connections&quot;
      exit 1
   fi
   
   if [ ! -f $FILEPAMTIMECONF.old ] ; then
   cp $FILEPAMTIMECONF $FILEPAMTIMECONF.old
   fi
   echo &quot;*;*;root;Al0000-2400&quot; &gt; $FILEPAMTIMECONF
   for NumDAY in 0 1 2 3 4 5 6
   do
   echo  &gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
   done
   for PCUSER in `cat /etc/passwd | cut -d&quot;:&quot; -f1,3| grep -E [1-9][0-9][0-9][0-9]| grep -v 65534 | cut -d &quot;:&quot; -f1`
   do
   echo $PCUSER
      HORAIRES=&quot;&quot;
      for NumDAY in 0 1 2 3 4 5 6
         do
         clear
         echo &quot;exemple: 08h00 a 24h00 ou 08h00 a 12h00 et 14h00 a 24h00&quot;
         echo -e -n &quot;$RougeD$PCUSER$Fcolor est autorisés à se connecter le $BleuD${DAYS[$NumDAY]}$Fcolor de:&quot;
         while (true); do
            read choi
            input=$choi
            choi=$(echo $choi | sed -e &quot;s/h//g&quot; | sed -e &quot;s/ //g&quot; | sed -e &quot;s/a/-/g&quot; | sed -e &quot;s/et/:/g&quot; ) # mise en forme de choi pour pam   
               if [ $( echo $choi | grep -E -c &quot;^[0-2][0-9][0-5][0-9]-[0-2][0-9][0-5][0-9]$|^[0-2][0-9][0-5][0-9]-[0-2][0-9][0-5][0-9]:[0-2][0-9][0-5][0-9]-[0-2][0-9][0-5][0-9]$&quot; ) -eq 1 ];then
                  int1=$(echo $choi | cut -d &quot;:&quot; -f1 | cut -d &quot;-&quot; -f1)
                  int2=$(echo $choi | cut -d &quot;:&quot; -f1 | cut -d &quot;-&quot; -f2)
                  int3=$(echo $choi | cut -d &quot;:&quot; -f2 | cut -d &quot;-&quot; -f1)
                  int4=$(echo $choi | cut -d &quot;:&quot; -f2 | cut -d &quot;-&quot; -f2)
                  if [ $int1 -lt $int2 ];then
                     if [ ! $(echo $choi | grep -E -c &quot;:&quot;) -eq 1 ] ; then
                        if [ $NumDAY -eq 6 ] ; then
                           HORAIRESPAM=$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1\-$int2
                        else
                           HORAIRESPAM=$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1\-$int2\|
                        fi
                        MINUTES1=$(echo $int2 | sed -e 's/.\{02\}//')
                        HEURES1=$(echo $int2 | sed -e 's/.\{02\}$//')   
                        echo &quot;$MINUTES1 $HEURES1 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
                        break
   
                     else   
                        if [ $int2 -lt $int3 ];then
                           if [ $int3 -lt $int4 ];then
                              if [ $NumDAY -eq 6 ] ; then
                                 HORAIRESPAM=$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1\-$int2\|${DAYSPAM[$NumDAY]}$int3\-$int4
                              else
                                 HORAIRESPAM=$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1\-$int2\|${DAYSPAM[$NumDAY]}$int3\-$int4\|
                              fi
                              MINUTES1=$(echo $int2 | sed -e 's/.\{02\}//')
                              HEURES1=$(echo $int2 | sed -e 's/.\{02\}$//')   
                              MINUTES2=$(echo $int4 | sed -e 's/.\{02\}//')
                              HEURES2=$(echo $int4 | sed -e 's/.\{02\}$//')   
                              ## minutes heures jourdumoi moi jourdelasemaine utilisateur  commande

                              echo &quot;$MINUTES1 $HEURES1 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
                              echo &quot;$MINUTES2 $HEURES2 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
                              break   
                           else
                              errortime1
                           fi
                        else
                           errortime1
                        fi
                     fi
                  else
                     errortime1
   
                  fi
                       
               else
                  errortime2   
               fi
           
         done
     
        done
     
      echo &quot;*;*;$PCUSER;$HORAIRESPAM&quot; &gt;&gt; $FILEPAMTIMECONF
   done
   for NumDAY in 0 1 2 3 4 5 6
   do
      echo &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
   done
$CMDSERVICE$namservicecrond restart
}
desactivetimelogin () {
for FILE in `echo $GESTIONNAIREDESESSIONS`
do
   $SED &quot;/account required pam_time.so/d&quot; $DIRPAM$FILE
done
cat $FILEPAMTIMECONF.old &gt; $FILEPAMTIMECONF
for NumDAY in 0 1 2 3 4 5 6
do
   rm -f /etc/cron.d/CTparental${DAYS[$NumDAY]}
done
$CMDSERVICE$namservicecrond restart
}



if [ ! -z ${2} ];then
   DIRhtmlPersonaliser=${2}
   if [ ! -d $DIRhtmlPersonaliser ];then
      echo &quot;Chemin de répertoir non valide!&quot;
      exit 0
   fi
fi
usage=&quot;Usage: CTparental.sh    {-i }|{ -u }|{ -dl }|{ -ubl }|{ -rl }|{ -on }|{ -off }|{ -cble }|{ -dble }
                               |{ -tlo }|{ -tlu }|{ -uhtml }|{ -aupon }|{ -aupoff }|{ -aup } 
-i      =&gt; Install le controll parental sur l'ordinateur (pc de bureau) peut ètre utiliser avec
           un paramètre suplémentaire pour indiquer un chemin de sources pour la page web de redirection.
           exemple : CTparental.sh -i /home/toto/html/
           si pas d'option le \&quot;sens interdit\&quot; est utiliser par default.
-u      =&gt; désinstall le controll parental de l'ordinateur (pc de bureau)
-dl     =&gt; mais a jour le controll a partir de la black liste de l'université de toulouse
-ubl    =&gt; A faire aprés chaque modification du fichier $DNS_FILTER_OSSI
-rl     =&gt; A faire aprés chaque modification manuel du fichier $DREAB
-on     =&gt; Active le controll parental
-off    =&gt; Désactive le controll parental
-cble   =&gt; Configure du mode de filtrage par liste blanche ou par liste noir(default) ainssi que les 
           catégories que l'on veux activer.
-dble   =&gt; Remet les catégories activent par défaut et filtrage par liste noir.
-tlo    =&gt; Active est paramètre les restrictions horaire de login pour les utilisateurs.
           Compatible avec les gestionnaire de sessions suivant $GESTIONNAIREDESESSIONS .
-tlu    =&gt; Desative les restrictions horaire de login pour les utilisateurs.
-uhtml  =&gt; mait a jour la page de redirection a partir d'un repertoir source ou par defaut avec 
            le \&quot;sens interdit\&quot;.
            exemples:
                     - avec un repertoir source : CTparental.sh -uhtml /home/toto/html/
   		     - par default :              CTparental.sh -uhtml
-aupon  =&gt; active la mise ajour automatique de la black liste de toulouse (tous les 7 jours).
-aupoff =&gt; desactve la mise ajour automatique de la black liste de toulouse.
-aup    =&gt; comme -dl mais seulement si il n'y a pas eu de mise a jour depuis plus de 7 jours.	
 &quot;
case $args in
   -\? | -h* | --h*)
      echo &quot;$usage&quot;
      exit 0
      ;;
   -i | --install )
      install
      exit 0
      ;;
   -u | --uninstall )
      uninstall
      exit 0
      ;;
   -dl | --download )
      download
      adapt
      catChoice
      dnsmasqon
      echo $THISDAYS &gt; $LASTUPDATE
      exit 0
      ;;
   -ubl | --updatebl )
      adapt
      catChoice
      dnsmasqon
      exit 0
      ;;
   -uhtml | --updatehtml )
      FoncHTTPDCONF
      exit 0
      ;;
   -rl | --reload )
      catChoice
      dnsmasqon
      exit 0
      ;;
   -on | --on )
      dnsmasqon
      exit 0
      ;;
   -off | --off )
      dnsmasqoff
      exit 0
      ;;
   -wlo | --whitelistonly )
      dnsmasqwhitelistonly
      exit 0
      ;;
   -cble | --confblenable )
      choiblenabled
      catChoice
      dnsmasqon
      exit 0
      ;;
    -dble | --defaultblenable )
      initblenabled
      catChoice
      dnsmasqon
      ;;
    -tlo | --timeloginon )
      activetimelogin
      ;;
    -tlu | --timeloginon )
      desactivetimelogin
      ;;
    -aupon | --autoupdateon )
      autoupdateon
      ;;
    -aupoff | --autoupdateoff )
      autoupdateoff
      ;;
    -aup | --autoupdate )
      autoupdate
      ;;
   *)
      echo &quot;Argument inconnu :$1&quot;;
      echo &quot;$usage&quot;;
      exit 1
      ;;
esac
&lt;/code&gt;</text>
      <sha1>p5t4sicrqvez0fdf0n90w6i6ts2qf9f</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5121</id>
      <parentid>5120</parentid>
      <timestamp>2013-05-04T05:56:52Z</timestamp>
      <contributor>
        <username>Hulk</username>
        <id>190</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="30489">lien sur le [http://www.debian-fr.org/controle-parental-pour-le-pc-debian-de-vos-enfants-t42009.html forum]

&lt;code bash&gt;
#!/bin/bash

# CTparental.sh
#
# par guillaume MARSAT
# une parti du code est tirer du scripte alcasar-bl.sh créer par Franck BOUIJOUX and Richard REY
# présent dans le code du projet alcasar en version 2.6.1 ; web page http://www.alcasar.net/

# This script is distributed under the Gnu General Public License (GPL)
if [ ! $UID -eq 0 ]; then
   echo &quot;Il vous faut les droit root pour lancer ce scripte&quot;
   exit 1
fi
args=${1}
SED=&quot;/bin/sed -i&quot;
DIR_CONF=&quot;/usr/local/etc/CTparental&quot;
tempDIR=&quot;/tmp/alcasar&quot;
RougeD=&quot;\033[1;31m&quot;
BleuD=&quot;\033[1;36m&quot;
VertD=&quot;\033[1;32m&quot;
Fcolor=&quot;\033[0m&quot;
GESTIONNAIREDESESSIONS=&quot; login gdm lightdm slim kdm xdm &quot;
FILEPAMTIMECONF=&quot;/etc/security/time.conf&quot;
DIRPAM=&quot;/etc/pam.d/&quot;
DAYS=( lundi mardi mercredi jeudi vendredi samedi dimanche )
DAYSPAM=( Mo Tu We Th Fr Sa Su )
DAYSCRON=( mon tue wed thu fri sat sun )
 
service --help 2&amp;&gt; /dev/null
if [ $? -eq 0 ] ; then
  CMDSERVICE=&quot;service &quot;
else
  CMDSERVICE=&quot;/etc/init.d/&quot;
fi
DNSMASQCONF=&quot;/etc/dnsmasq.conf&quot;
MAINCONFHTTPD=&quot;/etc/lighttpd/lighttpd.conf&quot;
DIRCONFENABLEDHTTPD=&quot;/etc/lighttpd/conf-enabled&quot;
CTPARENTALCONFHTTPD=$DIRCONFENABLEDHTTPD&quot;/10-CTparental.conf&quot;
RESOLVCONFMAIN=&quot;/etc/resolvconf&quot;
RESOLVDNSMASQ=&quot;$RESOLVCONFMAIN/run/interface/lo.dnsmasq&quot;
RESOLVCONFORDER=&quot;$RESOLVCONFMAIN/interface-order&quot;
DIRHTML=&quot;/var/www/CTparental&quot;
namservicednsmaq=&quot;dnsmasq&quot;
namservicehttpd=&quot;lighttpd&quot;
namservicecrond=&quot;cron&quot;
CMDINSTALL=&quot;&quot;
yum help 2&amp;&gt; /dev/null
if [ $? -eq 0 ] ; then
   ## &quot;Distribution baser sur yum exemple readhat,fedora...&quot;
   CMDINSTALL=&quot;yum install &quot;
   CMDREMOVE=&quot;yum remove &quot;
fi
urpmi --help 2&amp;&gt; /dev/null
if [ $? -eq 1 ] ; then
   ## &quot;Distribution baser sur urpmi exemple mandriva...&quot;
   CMDINSTALL=&quot;urpmi -a --auto &quot;
   CMDREMOVE=&quot;urpme --auto &quot;
   namservicecrond=&quot;crond&quot;
fi
apt-get -h 2&amp;&gt; /dev/null
if [ $? -eq 0 ] ; then
   ## &quot;Distribution baser sur apt-get exemple debian,ubuntu ...&quot;
   CMDINSTALL=&quot;apt-get -y --force-yes install &quot;
   CMDREMOVE=&quot;apt-get -y --force-yes remove --purge &quot;
fi
if [ $args=&quot;-i&quot; ] ; then
   namserviceNetworkManager=&quot;network-manager&quot;
   if [ -f /etc/NetworkManager/NetworkManager.conf ];then
     $SED &quot;s/^dns=dnsmasq/#dns=dnsmasq/g&quot; /etc/NetworkManager/NetworkManager.conf
     $CMDSERVICE$namserviceNetworkManager restart
     sleep 5
   fi
fi
if [ $( echo $CMDINSTALL | wc -m ) -eq 1 ] ; then
   echo &quot;Aucun gestionner de paquet connu , n'a été détecté.&quot;
   exit 1
fi


interface_WAN=$(ip route | awk '/^default via/{print $5}') # suppose que la passerelle est la route par default

if [ -f $DIR_CONF/resolv.conf.sav ];then
   DNS1=$(cat $DIR_CONF/resolv.conf.sav | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f1)
   DNS2=$(cat $DIR_CONF/resolv.conf.sav | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f2)
else
   DNS1=$(cat /etc/resolv.conf | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f1)
   DNS2=$(cat /etc/resolv.conf | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f2)
fi

PRIVATE_IP=&quot;127.0.0.10&quot;
FILE_tmp=&quot;$tempDIR/filetmp.txt&quot;
BL_SERVER=&quot;dsi.ut-capitole.fr&quot;
CATEGORIES_ENABLED=&quot;$DIR_CONF/categories-enabled&quot;
BL_CATEGORIES_AVAILABLE=&quot;$DIR_CONF/bl-categories-available&quot;
WL_CATEGORIES_AVAILABLE=&quot;$DIR_CONF/wl-categories-available&quot;
DIR_DNS_FILTER_AVAILABLE=&quot;$DIR_CONF/dnsfilter-available&quot;
DIR_DNS_BLACKLISTE_ENABLED=&quot;$DIR_CONF/blackliste-enabled&quot;
DIR_DNS_WHITELIST_ENABLED=&quot;$DIR_CONF/whitelist-enabled&quot;
DNS_FILTER_OSSI=&quot;$DIR_CONF/blackliste-local&quot;
DREAB=&quot;$DIR_CONF/domaine-rehabiliter&quot; 
LASTUPDATE=&quot;$DIR_CONF/last-update&quot; 
THISDAYS=$(expr $(date +%Y) \* 365 + $(date +%j))
MAXDAYSFORUPDATE=&quot;7&quot; # update tous les 7 jours
CHEMINCTPARENTLE=$(readlink -f $0)

initblenabled () {
   cat &lt;&lt; EOF &gt; $CATEGORIES_ENABLED
adult
agressif
dangerous_material
dating
drogue
gambling
hacking
malware
marketingware
mixed_adult
phishing
redirector
sect
strict_redirector
strong_redirector
tricheur
warez
ossi   
EOF
         

}

download() {
   wget -P $tempDIR http://$BL_SERVER/blacklists/download/blacklists.tar.gz 2&gt;&amp;1 | cat
   if [ ! $? -eq 0 ]; then
      echo &quot;erreur lors du téléchargement processu interompu&quot;
      rm -rf $tempDIR
      exit 1
   fi
   tar -xzf $tempDIR/blacklists.tar.gz -C $tempDIR
   if [ ! $? -eq 0 ]; then
      echo &quot;erreur d'extraction de l'archive processu interompu&quot;
      exit 1
   fi
   rm -rf $DIR_DNS_FILTER_AVAILABLE/
   mkdir $DIR_DNS_FILTER_AVAILABLE
}
autoupdate() {
	LASTUPDATEDAY=`sed -n &quot;1 p&quot; $LASTUPDATE`
        DIFFDAY=$(expr $THISDAYS - $LASTUPDATEDAY)
	if [ $DIFFDAY -ge $MAXDAYSFORUPDATE ] ; then
		download
		adapt
		catChoice
		dnsmasqon
		exit 0
	fi
	echo $THISDAYS &gt; $LASTUPDATE
	
}
autoupdateon() {
echo $THISDAYS &gt; $LASTUPDATE
echo &quot;*/10 * * * * root $CHEMINCTPARENTLE -aup&quot; &gt; /etc/cron.d/CTparental-autoupdate
$CMDSERVICE$namservicecrond restart
}

autoupdateoff() {
rm -f /etc/cron.d/CTparental-autoupdate
$CMDSERVICE$namservicecrond restart
}
adapt() {
   dnsmasqoff
   if [ ! -f $DNS_FILTER_OSSI ] ; then
            echo &gt; $DNS_FILTER_OSSI
   fi

   if [ -d $tempDIR  ] ; then
	  CATEGORIES_AVAILABLE=$tempDIR/categories_available
	  ls -FR $tempDIR/blacklists | grep '/$' | sed -e &quot;s/\///g&quot; &gt; $CATEGORIES_AVAILABLE
          echo -n &gt; $BL_CATEGORIES_AVAILABLE
          echo -n &gt; $WL_CATEGORIES_AVAILABLE
          if [ ! -f $DIR_DNS_FILTER_AVAILABLE/ossi.conf ] ; then
		echo &gt; $DIR_DNS_FILTER_AVAILABLE/ossi.conf
	  fi
	  for categorie in `cat $CATEGORIES_AVAILABLE` # creation des deux fichiers de categories (BL / WL)
	  do
		if [ -e $tempDIR/blacklists/$categorie/usage ]
		then
			is_whitelist=`grep white $tempDIR/blacklists/$categorie/usage|wc -l`
		else
			is_whitelist=0 # ou si le fichier 'usage' n'existe pas, on considère que la catégorie est une BL
		fi
		if [ $is_whitelist -eq &quot;0&quot; ]
		then
			echo &quot;$categorie&quot; &gt;&gt; $BL_CATEGORIES_AVAILABLE
		else
			echo &quot;$categorie&quot; &gt;&gt; $WL_CATEGORIES_AVAILABLE
		fi
	   done
         echo -n &quot;Toulouse Black and White List migration process. Please wait : &quot;
         for DOMAINE in `cat  $CATEGORIES_AVAILABLE`  # pour chaque catégorie
         do
            echo -n &quot;.&quot;
            # suppression des @IP, de caractères acccentués et des lignes commentées ou vide
            egrep  -v &quot;([0-9]{1,3}\.){3}[0-9]{1,3}&quot; $tempDIR/blacklists/$DOMAINE/domains &gt; $FILE_tmp
            $SED &quot;/[äâëêïîöôüû]/d&quot; $FILE_tmp
            $SED &quot;/^#.*/d&quot; $FILE_tmp
            $SED &quot;/^$/d&quot; $FILE_tmp
            $SED &quot;s/\.\{2,1000\}/\./g&quot; $FILE_tmp # supprime les suite de &quot;.&quot; exemple: address=/fucking-big-tits..com/127.0.0.10 devient address=/fucking-big-tits.com/127.0.0.10
	    is_blacklist=`grep $DOMAINE $BL_CATEGORIES_AVAILABLE |wc -l`
	    if [ $is_blacklist -ge &quot;1&quot; ] ; then
            	$SED &quot;s?.*?address=/&amp;/$PRIVATE_IP?g&quot; $FILE_tmp  # Mise en forme dnsmasq des listes noires
		mv $FILE_tmp $DIR_DNS_FILTER_AVAILABLE/$DOMAINE.conf  
            else
		$SED &quot;s?.*?server=/&amp;/#?g&quot; $FILE_tmp  # Mise en forme dnsmasq des listes blanches
		mv $FILE_tmp $DIR_DNS_FILTER_AVAILABLE/$DOMAINE.conf
            fi
         done
   else
         mkdir   $tempDIR
         echo -n &quot;.&quot;
 	 # suppression des @IP, de caractères acccentués et des lignes commentées ou vide
         egrep  -v &quot;([0-9]{1,3}\.){3}[0-9]{1,3}&quot; $DNS_FILTER_OSSI  &gt; $FILE_tmp
         $SED &quot;/[äâëêïîöôüû]/d&quot; $FILE_tmp 
         $SED &quot;/^#.*/d&quot; $FILE_tmp 
         $SED &quot;/^$/d&quot; $FILE_tmp 
         $SED &quot;s/\.\{2,1000\}/\./g&quot; $FILE_tmp # supprime les suite de &quot;.&quot; exemple: address=/fucking-big-tits..com/127.0.0.10 devient address=/fucking-big-tits.com/127.0.0.10
         $SED &quot;s?.*?address=/&amp;/$PRIVATE_IP?g&quot; $FILE_tmp  # Mise en forme dnsmasq
         mv $FILE_tmp $DIR_DNS_FILTER_AVAILABLE/ossi.conf
   fi     
   echo
   rm -rf $tempDIR
}
catChoice() {
#   echo &quot;catChoice&quot;
   rm -rf $DIR_DNS_BLACKLISTE_ENABLED/
   mkdir $DIR_DNS_BLACKLISTE_ENABLED
   rm -rf  $DIR_DNS_WHITELIST_ENABLED/
   mkdir  $DIR_DNS_WHITELIST_ENABLED
     
      for CATEGORIE in `cat $CATEGORIES_ENABLED` # on affecte les catégories dnsmasq
      do
	 is_blacklist=`grep $CATEGORIE $BL_CATEGORIES_AVAILABLE |wc -l`
	 if [ $is_blacklist -ge &quot;1&quot; ] ; then
		cp $DIR_DNS_FILTER_AVAILABLE/$CATEGORIE.conf $DIR_DNS_BLACKLISTE_ENABLED/
         else
		cp $DIR_DNS_FILTER_AVAILABLE/$CATEGORIE.conf $DIR_DNS_WHITELIST_ENABLED/
     	 fi     
      done
      cp $DIR_DNS_FILTER_AVAILABLE/ossi.conf $DIR_DNS_BLACKLISTE_ENABLED/
#      echo &quot;fincatChoice&quot;
      reabdomaine
}

reabdomaine () {
if [ ! -f $DREAB ] ; then
cat &lt;&lt; EOF &gt; $DREAB
   www.google.com
   www.google.fr
EOF
fi
if [ ! -f $DIR_DNS_BLACKLISTE_ENABLED/ossi.conf ] ; then
	echo &gt; $DIR_DNS_BLACKLISTE_ENABLED/ossi.conf
fi
echo
echo -n &quot;Application de la liste blanche (domaine réabiliter):&quot;
for CATEGORIE in `cat  $CATEGORIES_ENABLED  `  # pour chaque catégorie
do 
	is_blacklist=`grep $CATEGORIE $BL_CATEGORIES_AVAILABLE |wc -l`
	if [ $is_blacklist -ge &quot;1&quot; ] ; then
		echo -n &quot;.&quot;
		for DOMAINE in `cat  $DREAB`
		do
		    $SED &quot;/$DOMAINE/d&quot; $DIR_DNS_BLACKLISTE_ENABLED/$CATEGORIE.conf
		done
        fi
done
echo -n &quot;.&quot;
cat $DREAB | sed -e &quot;s?.*?server=/&amp;/#?g&quot; &gt;  $DIR_DNS_WHITELIST_ENABLED/whiteliste.ossi.conf
echo
}

dnsmasqon () {
   categorie1=`sed -n &quot;1 p&quot; $CATEGORIES_ENABLED` # on considaire que si la 1 er categorie activer est un blackliste on fonctionne par blackliste.
   is_blacklist=`grep $categorie1 $BL_CATEGORIES_AVAILABLE |wc -l`
   if [ $is_blacklist -ge &quot;1&quot; ] ; then
   cat &lt;&lt; EOF &gt; $DNSMASQCONF
         # Configuration file for &quot;dnsmasq with blackhole&quot;
   # Inclusion de la blacklist &lt;domains&gt; de Toulouse dans la configuration
   conf-dir=$DIR_DNS_BLACKLISTE_ENABLED
   # conf-file=$DIR_DEST_ETC/alcasar-dns-name   # zone de definition de noms DNS locaux
   no-dhcp-interface=$interface_WAN
   bind-interfaces
   cache-size=1024
   domain-needed
   expand-hosts
   bogus-priv
   server=$DNS1
   server=$DNS2
   
EOF
$CMDSERVICE$namservicednsmaq restart
else
  dnsmasqwhitelistonly
fi
}
dnsmasqoff () {
   cat &lt;&lt; EOF &gt; $DNSMASQCONF
         # Configuration file for &quot;dnsmasq with blackhole&quot;
   # Inclusion de la blacklist &lt;domains&gt; de Toulouse dans la configuration
   # conf-dir=$DIR_DNS_BLACKLISTE_ENABLED
   # conf-file=$DIR_DEST_ETC/alcasar-dns-name   # zone de definition de noms DNS locaux
   no-dhcp-interface=$interface_WAN
   bind-interfaces
   cache-size=0
   domain-needed
   expand-hosts
   bogus-priv
   server=$DNS1
   server=$DNS2
   
EOF

$CMDSERVICE$namservicednsmaq restart
}
dnsmasqwhitelistonly  () {
   cat &lt;&lt; EOF &gt; $DNSMASQCONF
         # Configuration file for &quot;dnsmasq with blackhole&quot;
   # Inclusion de la blacklist &lt;domains&gt; de Toulouse dans la configuration
   conf-dir=$DIR_DNS_WHITELIST_ENABLED
   # conf-file=$DIR_DEST_ETC/alcasar-dns-name   # zone de definition de noms DNS locaux
   no-dhcp-interface=$interface_WAN
   bind-interfaces
   cache-size=0
   domain-needed
   expand-hosts
   bogus-priv
   server=$DNS1
   server=$DNS2
   address=/#/$PRIVATE_IP #redirige vers $PRIVATE_IP pour tous ce qui n'a pas étais resolut dans les listes blanches
EOF

$CMDSERVICE$namservicednsmaq restart
}


FoncHTTPDCONF () {
$CMDSERVICE$namservicehttpd stop
rm -rf $DIRHTML/*
mkdir -v $DIRHTML
if [ ! -z $DIRhtmlPersonaliser ];then
   cp -r $DIRhtmlPersonaliser/* $DIRHTML
else
s=&quot;span&quot;
st=&quot;style&quot;
c=&quot;$c&quot;
cab=&quot;;\&quot;&gt;&quot;

cat &lt;&lt; EOF &gt; $DIRHTML/index.html
 &lt;HTML&gt;
&lt;HEAD&gt;
   &lt;META HTTP-EQUIV=&quot;CONTENT-TYPE&quot; CONTENT=&quot;text/html; charset=utf-8&quot;&gt;
   &lt;TITLE&gt;danger&lt;/TITLE&gt;
&lt;/HEAD&gt;
&lt;BODY LANG=&quot;fr-FR&quot; DIR=&quot;LTR&quot;&gt;
&lt;CENTER&gt;
&lt;img alt=&quot;Site dangereux pour des mineurs&quot;
  HEIGHT=&quot;600&quot;   
  src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKIAAACgCAYAAACPOrcQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz
AAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAuGSURB
VHic7d17jFTlGcfx7zMol7KriRpF3Sii3FyooE1EWuNaFrFeWjXWqEBCmyYtrSa2iX9g+wcx9RZN
kya29i+1ETWKMSZI1AiClyI2KiJyFa8BBC9EuyAXhad/vDO7s8PszpyZc857zrzPJ9nsZvac931g
fnnf2Zlz3ldUFVNBZCQwDhhf/H480A60Fb+X/9xWPGsP0FP2vfznr4AtwGZgC6p70/qn5IUEHUSR
EcAFwGRc6Epfpybc83ZcKEtf64DXUd2XcL+ZFVYQRYYB04CLi1/TgKFea+pzEFgNrCh+rUb1gN+S
0tP6QRQ5B7gSF7zpwHC/BdVtP7AKF8olqK71XE+iWjOIIh3AjcBcYJLnauLyHvAI8Biq23wXE7fW
CaJIO3AtMAfoAgpe60nOYWAlsAh4CtUev+XEI/9BdFPvrcA1wAjP1aRtH/A0cG/ep+78BlFkOnAb
cLnvUjJiKXAnqqt8F9KI/AVRZBawALjIdykZ9TJwF6ov+C4kivwEUeQq4C/Aeb5LyYm3gL+i+ozv
QuqR/SCKTADuB2b4LiWnlgM3obrJdyGDye5fliIjEbkbeBcLYTNmAO8icnfxo8tMyuaIKPJL4G9A
h+9SWsw24E+oLvZdSKVsBVHkLOABoNt3KS1uGTAf1a2+CynJztQsMhtYg4UwDd3AGkTm+C6kxH8Q
RX6AyIO4Twraah1uYtMGPILIw1l47eh3ahaZDDwBTPRXhMFdinY9qu/4KsDfiCjyW+C/WAizYDyw
GpGbfBWQ/ogoMhR4EJidbsemTouBuWlfC5luEEWOwX1Ib+8LZtsrwM9R/SatDtMLosgo4DlgSjod
miatAy5FdUcanaXzGlFkHPA6FsI8mQysKn7EmrjkgyhyPvAfYHTifZm4nQ68hsi0pDtKNogi3cBL
wAmJ9mOSdDywvPhcJia514huJFwOeH+z1MRiLzAD1TeSaDyZIIqcDbwKHBd/48aj3cCFqG6Iu+H4
gyhyOu41YdI3qRs/tgM/RvWTOBuN9zWiyInAi1gIW9mpwIvF5zo28QXRvVn9PDA2tjZNVo0Fni8+
57GIJ4giAjwJTI2lPZMHU4Eni8990+IaEf8MzIqpLZMfs3DPfdOa/2NFpAt3xe+QGOox+XMI6EZ1
ZTONNBdEkZOAd4BRzRRhcm8nMAXVXY020PjULFIAHsdCaFwGHi9moiHNvEZciFvqzRhwWVjY6MmN
Tc0iF+JWpPJ/z4vJksNAF6qvRj0xehBFjsbdbdcZtTMThPXAVFS/i3JSIyPaH7EQmoF14jISSbQR
UeQ0YAN2RY0Z3F7gbFQ/rfeEqCPi37EQmtpG4rJSt/pHRJHLgWej12QCdgWqS+s5sL4guv1I1gNn
NFeXCcxHQGc9+8fUOzXPx0JoojsDl52aao+IIsOBD4GTmy7LhOgzYAyq+wc7qJ4R8TdYCE3jTsZl
aFCDj4hueZAPsAUzTXO2AWeienCgA2qNiPOwEJrmdeCyNKCBR0SRo4D3sRvjTTw+Bsai+n21Xw42
Is7BQmjiMxqXqaoGC+IfYi/FhG7ATFWfmkU6cbthGhO3Saiur3xwoBFxXrK1mIDNq/bgkSOiyBDc
n9t2C4BJwk6gA9VD5Q9WGxEvxUJokjMKl7F+qgVxXuKlmNDNq3yg/9QschywAxiWWkkmRAeAU1Dd
XXqgckT8BRZCk7xhuKz1qgyirfZv0tIva5VT83bglJQLMmHagWrv8oV9QXSrx2+M3Nwtt8Dw4XEV
Z/Jm1y546KFGz55Y2tC8PIjzgX9Gburrr+HYYxstxOTd2rUwpeFdS36P6gPQ/zXiT5suyphoejPn
gugWW+zyVIwJV1dpoc/SiPhDbC8Uk74TcNnrDeK5/moxgTsX+oKYyn5rxlQxASyIxr9+QbRd5I0v
EwEKxVtGx3guxoRrDCJDC8BZ2I4Axp8hwFkFbFo2/k0sAON9V2GCN74AxLq5nzENOLEAtPuuwgSv
3YJosqC9ALT5rsIEr81GRJMFNjWbTLCp2WSCTc0mE9ptU0eTCQWgx3cRJng9BWCP7ypM8PbYiGiy
oMeCaLLApmaTCTY1m0ywqdlkQk8B+Nx3FSZ4nxeAzb6rMMHbXKCRpeiMidfGArAVOFTrSGMScgjY
WihuXfqh72pMsD5E9WDpogebno0vG6FvyZFNHgsxYdsEFkTjX78gvu2xEBO2t6EviO8CX/qrxQTq
S1z2ikF0Wwus9FePCdTKYvb67SrwkqdiTLh6M1cexBUeCjFh681cXxDdDkA7fFRjgrSjtOsUwFEV
v1wBzI7U3IIFMMw2NA3WF180ema/GbhyU8hfAQ82XJQx9fs1qr2b+NnG4caHGhuHu18sSbkoE54l
5SGEIzcOB3g4nVpMwB6ufKD/1AwgMgTYBoxKpSQTmp1AB6r9roE9ckR0ByxKqSgTnkWVIYRqIyKA
SCfwXgpFmfBMQnV95YPVVwNzB76ZdEUmOG9WCyEMFETnHwkVY8I1YKaqT80AIkcB7wOjEynJhOZj
YCyq31f75cAjojvhrmRqMgG6a6AQwmAjIlDcufQDoCP+ukxAtgFnFu8YrWrwpYvdiffEXJQJzz2D
hRBqjYgAIsNx9z2fHF9dJiCfAWNQ3T/YQbUXc3cN3BdTUSY899UKIdQzIgKIjADWA2c0X5cJyEdA
J6r7ah1Y3/YWrqGbmyzKhOfmekII9QYRQHUp8EyjFZngPFPMTF3qm5p7j5bTgA3AyOh1mYDsBc5G
9dN6T4i285Rr+PaIRZnw3B4lhBB1RAQQORpYA3RGO9EEYj0wFdXvopwUfS8+18F84HDkc02rOwzM
jxpCaCSIAKqvAnc0dK5pZXcUsxFZ9Km590wpAMuAixtrwLSYFUA3qg3NlI0HEUDkJOAd7P6W0O0E
pqC6q9EGmtuv2XV8A7YYfMgOATc0E0JoNogAqiuBhU23Y/JqYTEDTWluau5tRQR4DpjVfGMmR14A
fkYMIYoniAAix+AW+5waT4Mm49YAXaj+L47G4gsigMiJwGvA2PgaNRn0PvATVGPbx7H514jlXGEz
ge2xtmuyZDswM84QQtxBBFD9BLgE2F3rUJM7u4FLis9xrOIPIoDqBuAy3FUYpjXsBS4rPrexSyaI
AKpvAFcB3ybWh0nLt8BVxec0EfH+sVK1BzkfeBY4IdmOTEK+Aq5AdXWSnSQfRACRcbj3nEYn35mJ
0SfApeWLricluam5nOoW4ALc59ImH9YB09MIIaQVRADVncBFwPLU+jSNegW4ENXUtjtJL4hA8V34
y4BHU+3XRLEY9xbNN2l2mm4QwS1jojoH+B1Q88Zrk5oDuNs/r0P1QNqdp/PHyoC9y2TgCWCivyIM
sBm4HlVvr+HTHxHLqa4DfgQ8VOtQk5h/A+f5DCH4HhHLicwG/gW0+S4lEHtwNzplYuF+vyNiOdVH
cZeQLfNdSgCW4W75zEQIIUtBBFDdiupM4Drc4o4mXtuA61CdiepW38WUy1YQS1QXAxNwi4RGvkfW
HOE73P/lhOL/beZk5zXiQEQmAPcDM3yXklPLgZvS+oSkUdkcEcupbkK1G7gaeMt3OTnyFnA1qt1Z
DyHkYUSsJDILWID7uNAc6WXcCv4v+C4kivwFsURkOnAbcLnvUjJiKXAnqqt8F9KI/AaxROQc4Fbg
GmCE52rStg94GrgX1bW+i2lG/oNYItIOXAvMAbrIw+vfxhzG3ba7CHgK1R6/5cSjdYJYTqQDuBGY
C0zyXE1c3gMeAR5DteXeY23NIJZzU/eVuFXLpgPD/RZUt/3AKtwqW0vyPvXW0vpBLCcyDJiGC+XF
xZ+Heq2pz0FgNS54K4DVPi7H8iWsIFZy+8dcAEwGxpd9nZpwz9txl16VvtYBr9e7FUQrCjuIAxEZ
CYzDhXIccDzQjrsyqL3i59LVQnuAnrLv5T9/BWzBhW4Lqna/d4X/A/bydTBs1YRqAAAAAElFTkSu
QmCC&quot; /&gt;
&lt;/CENTER&gt;
&lt;/BODY&gt;
&lt;/HTML&gt;
EOF

fi
## GENERATION

ln -s  $DIRHTML/index.html $DIRHTML/err404.html
USERHTTPD=$(cat /etc/passwd | grep /var/www | cut -d&quot;:&quot; -f1)
GROUPHTTPD=$(cat /etc/group | grep $USERHTTPD | cut -d&quot;:&quot; -f1)
cat &lt;&lt; EOF &gt; $MAINCONFHTTPD
server.modules = (
&quot;mod_access&quot;,
&quot;mod_alias&quot;,
&quot;mod_redirect&quot;,
# &quot;mod_rewrite&quot;,
)
server.document-root = &quot;/var/www&quot;
server.upload-dirs = ( &quot;/var/cache/lighttpd/uploads&quot; )
server.errorlog = &quot;/var/log/lighttpd/error.log&quot;
server.pid-file = &quot;/var/run/lighttpd.pid&quot;
server.username = &quot;$USERHTTPD&quot;
server.groupname = &quot;$GROUPHTTPD&quot;
server.port = 80
server.bind = &quot;127.0.0.1&quot;


index-file.names = ( &quot;index.php&quot;, &quot;index.html&quot; )
url.access-deny = ( &quot;~&quot;, &quot;.inc&quot; )
static-file.exclude-extensions = ( &quot;.php&quot;, &quot;.pl&quot;, &quot;.fcgi&quot; )

compress.cache-dir = &quot;/var/cache/lighttpd/compress/&quot;
compress.filetype = ( &quot;text/css&quot;, &quot;text/html&quot;, &quot;text/plain&quot; )

server.tag = &quot;&quot;

include_shell &quot;/usr/share/lighttpd/create-mime.assign.pl&quot;
include_shell &quot;/usr/share/lighttpd/include-conf-enabled.pl&quot;
EOF

mkdir -p /usr/share/lighttpd/

if [ ! -f /usr/share/lighttpd/create-mime.assign.pl ];then
cat &lt;&lt; EOF &gt; /usr/share/lighttpd/create-mime.assign.pl
#!/usr/bin/perl -w
use strict;
open MIMETYPES, &quot;/etc/mime.types&quot; or exit;
print &quot;mimetype.assign = (\n&quot;;
my %extensions;
while(&lt;MIMETYPES&gt;) {
  chomp;
  s/\#.*//;
  next if /^\w*$/;
  if(/^([a-z0-9\/+-.]+)\s+((?:[a-z0-9.+-]+[ ]?)+)$/) {
    foreach(split / /, \$2) {
      # mime.types can have same extension for different
      # mime types
      next if \$extensions{\$_};
      \$extensions{\$_} = 1;
      print &quot;\&quot;.\$_\&quot; =&gt; \&quot;\$1\&quot;,\n&quot;;
    }
  }
}
print &quot;)\n&quot;;
EOF
chmod +x /usr/share/lighttpd/create-mime.assign.pl
fi


if [ ! -f /usr/share/lighttpd/include-conf-enabled.pl ];then
cat &lt;&lt; EOF &gt; /usr/share/lighttpd/include-conf-enabled.pl
#!/usr/bin/perl -wl

use strict;
use File::Glob ':glob';

my \$confdir = shift || &quot;/etc/lighttpd/&quot;;
my \$enabled = &quot;conf-enabled/*.conf&quot;;

chdir(\$confdir);
my @files = bsd_glob(\$enabled);

for my \$file (@files)
{
        print &quot;include \&quot;\$file\&quot;&quot;;
}
EOF
chmod +x /usr/share/lighttpd/include-conf-enabled.pl 

fi

mkdir -p $DIRCONFENABLEDHTTPD
cat &lt;&lt; EOF &gt; $CTPARENTALCONFHTTPD

\$SERVER[&quot;socket&quot;] == &quot;$PRIVATE_IP:80&quot; {
server.document-root = &quot;$DIRHTML&quot;
server.errorfile-prefix = &quot;$DIRHTML/err&quot; 
#ssl.engine = &quot;enable&quot; 
#ssl.pemfile = &quot;/etc/lighttpd/ssl/$PRIVATE_IP.pem&quot; 
}

EOF

$CMDSERVICE$namservicehttpd start
}

install () {
      if [ $(netstat -anlp | grep -w LISTEN | grep &quot;:80&quot; | cut -d&quot;/&quot; -f2 | wc -l ) -gt 0 ] ; then
	   echo &quot;le Serveur Web $(netstat -anlp | grep -w LISTEN | grep &quot;:80&quot; | cut -d&quot;/&quot; -f2 | sort -u ) tourne deja sur ce pc&quot;
	   echo &quot;veuiller le désinstaler avant d'installer le control parental.&quot;
	   exit 1
      fi
      mkdir $tempDIR
      mkdir -p $DIR_CONF
      initblenabled
      cat /etc/resolv.conf &gt; $DIR_CONF/resolv.conf.sav
      $CMDINSTALL dnsmasq
      $CMDINSTALL lighttpd
      if [ ! -f blacklists.tar.gz ]
      then
         download
      else
         tar -xzf blacklists.tar.gz -C $tempDIR
         if [ ! $? -eq 0 ]; then
            echo &quot;erreur d'extraction de l'archive processu interompu&quot;
            exit 1
         fi
         rm -rf $DIR_DNS_FILTER_AVAILABLE/
         mkdir $DIR_DNS_FILTER_AVAILABLE
      fi
      adapt
      catChoice
      dnsmasqon
      $CMDINSTALL resolvconf
      confresolvconf

      FoncHTTPDCONF
}

confresolvconf () {
echo &quot;nameserver 127.0.0.1&quot; &gt; $RESOLVDNSMASQ
if [ ! -f $RESOLVCONFORDER ];then
cat &lt;&lt; EOF &gt; $RESOLVCONFORDER
# interface-order(5)
lo.inet*
lo.dnsmasq
lo.pdnsd
lo.!(pdns|pdns-recursor)
lo
tun*
tap*
hso*
em+([0-9])?[+([0-9]))*
p+([0-9]p+([0-9])?(_+([0-9]))*
eth*
ath*
wlan*
ppp*
*
EOF
fi
resolvconf -u
}

uninstall () {
   rm -f /etc/cron.d/CTparental*
   $CMDSERVICE$namservicecrond restart
   $CMDSERVICE$namservicehttpd stop
   rm -f /var/www/index.lighttpd.html
   rm -rf $tempDIR
   rm -rf $DIR_CONF
   rm -rf $DIRHTML

   if [ -f /etc/NetworkManager/NetworkManager.conf ];then
	$SED &quot;s/^#dns=dnsmasq/dns=dnsmasq/g&quot; /etc/NetworkManager/NetworkManager.conf
	$CMDSERVICE$namserviceNetworkManager restart
  	sleep 5
   fi
   rm -rf /usr/share/lighttpd/*
   rm -f $CTPARENTALCONFHTTPD
   rm -f $RESOLVDNSMASQ
   resolvconf -u

   $CMDREMOVE lighttpd
   $CMDREMOVE dnsmasq 
   $CMDREMOVE resolvconf
}

choiblenabled () {
echo -n &gt; $CATEGORIES_ENABLED
clear
echo &quot;Voulez Filtre par Blackliste ou Whiteliste :&quot;
echo -n &quot; B/W :&quot;
while (true); do
         read choi
         case $choi in
         B | b )
         echo &quot;Vous aller maintenant choisir les \&quot;Black listes\&quot; a appliquer.&quot;
		for CATEGORIE in `cat  $BL_CATEGORIES_AVAILABLE`  # pour chaque catégorie
		do   
		      clear
		      echo &quot;Voulez vous activer la categorie :&quot;
		      echo -n &quot;$CATEGORIE  O/N :&quot;
		      while (true); do
			 read choi
			 case $choi in
			 O | o )
			 echo $CATEGORIE &gt;&gt; $CATEGORIES_ENABLED
			 break
			 ;;
			 N | n )
			 break
			 ;;
		      esac
		      done
		done
         break
         ;;
         W | w )
         echo &quot;Vous aller maintenant choisir les \&quot;White listes\&quot; a appliquer.&quot;
		for CATEGORIE in `cat  $WL_CATEGORIES_AVAILABLE`  # pour chaque catégorie
		do   
		      clear
		      echo &quot;Voulez vous activer la categorie :&quot;
		      echo -n &quot;$CATEGORIE  O/N :&quot;
		      while (true); do
			 read choi
			 case $choi in
			 O | o )
			 echo $CATEGORIE &gt;&gt; $CATEGORIES_ENABLED
			 break
			 ;;
			 N | n )
			 break
			 ;;
		      esac
		      done
		done
         break
         ;;
      esac
done
}


errortime1 () {
clear
echo -e &quot;L'heure de debut doit ètre strictement inférieur a l'heure de fin: $RougeD$input$Fcolor &quot;
echo &quot;exemple: 08h00 a 24h00 ou 08h00 a 12h00 et 14h00 a 24h00&quot;
echo -e -n &quot;$RougeD$PCUSER$Fcolor est autorisés à se connecter le $BleuD${DAYS[$NumDAY]}$Fcolor de:&quot;
}
errortime2 () {
clear
echo -e &quot;Mauvaise syntaxe: $RougeD$input$Fcolor &quot;
echo &quot;exemple: 08h00 a 24h00 ou 08h00 a 12h00 et 14h00 a 24h00&quot;
echo -e -n &quot;$RougeD$PCUSER$Fcolor est autorisés à se connecter le $BleuD${DAYS[$NumDAY]}$Fcolor de:&quot;
}

pause () {   # fonction pause pour debugage
      choi=&quot;&quot;
      echo  &quot;pour continuer  press Q :&quot;
      while (true); do
         read choi
         case $choi in
         Q | q )
         break
         ;;
      esac
      done
}
activetimelogin () {
   TESTGESTIONNAIRE=&quot;&quot;
   for FILE in `echo $GESTIONNAIREDESESSIONS`
   do
      if [ -f $DIRPAM$FILE ];then
         if [ $(cat $DIRPAM$FILE | grep -c &quot;account required pam_time.so&quot;) -eq 0  ] ; then
            echo &quot;account required pam_time.so&quot; &gt;&gt; $DIRPAM$FILE
         fi
         TESTGESTIONNAIRE=$TESTGESTIONNAIRE\ $FILE
      fi
   done
   if [ $( echo $TESTGESTIONNAIRE | wc -m ) -eq 1 ] ; then
      echo &quot;Aucun gestionner de session connu , n'a été détecté.&quot;
      echo &quot; il est donc impossible d'activer le controle horaires des connections&quot;
      exit 1
   fi
   
   if [ ! -f $FILEPAMTIMECONF.old ] ; then
   cp $FILEPAMTIMECONF $FILEPAMTIMECONF.old
   fi
   echo &quot;*;*;root;Al0000-2400&quot; &gt; $FILEPAMTIMECONF
   for NumDAY in 0 1 2 3 4 5 6
   do
   echo  &gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
   done
   for PCUSER in `cat /etc/passwd | cut -d&quot;:&quot; -f1,3| grep -E [1-9][0-9][0-9][0-9]| grep -v 65534 | cut -d &quot;:&quot; -f1`
   do
   echo $PCUSER
      HORAIRES=&quot;&quot;
      for NumDAY in 0 1 2 3 4 5 6
         do
         clear
         echo &quot;exemple: 08h00 a 24h00 ou 08h00 a 12h00 et 14h00 a 24h00&quot;
         echo -e -n &quot;$RougeD$PCUSER$Fcolor est autorisés à se connecter le $BleuD${DAYS[$NumDAY]}$Fcolor de:&quot;
         while (true); do
            read choi
            input=$choi
            choi=$(echo $choi | sed -e &quot;s/h//g&quot; | sed -e &quot;s/ //g&quot; | sed -e &quot;s/a/-/g&quot; | sed -e &quot;s/et/:/g&quot; ) # mise en forme de choi pour pam   
               if [ $( echo $choi | grep -E -c &quot;^[0-2][0-9][0-5][0-9]-[0-2][0-9][0-5][0-9]$|^[0-2][0-9][0-5][0-9]-[0-2][0-9][0-5][0-9]:[0-2][0-9][0-5][0-9]-[0-2][0-9][0-5][0-9]$&quot; ) -eq 1 ];then
                  int1=$(echo $choi | cut -d &quot;:&quot; -f1 | cut -d &quot;-&quot; -f1)
                  int2=$(echo $choi | cut -d &quot;:&quot; -f1 | cut -d &quot;-&quot; -f2)
                  int3=$(echo $choi | cut -d &quot;:&quot; -f2 | cut -d &quot;-&quot; -f1)
                  int4=$(echo $choi | cut -d &quot;:&quot; -f2 | cut -d &quot;-&quot; -f2)
                  if [ $int1 -lt $int2 ];then
                     if [ ! $(echo $choi | grep -E -c &quot;:&quot;) -eq 1 ] ; then
                        if [ $NumDAY -eq 6 ] ; then
                           HORAIRESPAM=$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1\-$int2
                        else
                           HORAIRESPAM=$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1\-$int2\|
                        fi
                        MINUTES1=$(echo $int2 | sed -e 's/.\{02\}//')
                        HEURES1=$(echo $int2 | sed -e 's/.\{02\}$//')   
                        echo &quot;$MINUTES1 $HEURES1 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
                        break
   
                     else   
                        if [ $int2 -lt $int3 ];then
                           if [ $int3 -lt $int4 ];then
                              if [ $NumDAY -eq 6 ] ; then
                                 HORAIRESPAM=$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1\-$int2\|${DAYSPAM[$NumDAY]}$int3\-$int4
                              else
                                 HORAIRESPAM=$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1\-$int2\|${DAYSPAM[$NumDAY]}$int3\-$int4\|
                              fi
                              MINUTES1=$(echo $int2 | sed -e 's/.\{02\}//')
                              HEURES1=$(echo $int2 | sed -e 's/.\{02\}$//')   
                              MINUTES2=$(echo $int4 | sed -e 's/.\{02\}//')
                              HEURES2=$(echo $int4 | sed -e 's/.\{02\}$//')   
                              ## minutes heures jourdumoi moi jourdelasemaine utilisateur  commande

                              echo &quot;$MINUTES1 $HEURES1 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
                              echo &quot;$MINUTES2 $HEURES2 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
                              break   
                           else
                              errortime1
                           fi
                        else
                           errortime1
                        fi
                     fi
                  else
                     errortime1
   
                  fi
                       
               else
                  errortime2   
               fi
           
         done
     
        done
     
      echo &quot;*;*;$PCUSER;$HORAIRESPAM&quot; &gt;&gt; $FILEPAMTIMECONF
   done
   for NumDAY in 0 1 2 3 4 5 6
   do
      echo &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
   done
$CMDSERVICE$namservicecrond restart
}
desactivetimelogin () {
for FILE in `echo $GESTIONNAIREDESESSIONS`
do
   $SED &quot;/account required pam_time.so/d&quot; $DIRPAM$FILE
done
cat $FILEPAMTIMECONF.old &gt; $FILEPAMTIMECONF
for NumDAY in 0 1 2 3 4 5 6
do
   rm -f /etc/cron.d/CTparental${DAYS[$NumDAY]}
done
$CMDSERVICE$namservicecrond restart
}



if [ ! -z ${2} ];then
   DIRhtmlPersonaliser=${2}
   if [ ! -d $DIRhtmlPersonaliser ];then
      echo &quot;Chemin de répertoir non valide!&quot;
      exit 0
   fi
fi
usage=&quot;Usage: CTparental.sh    {-i }|{ -u }|{ -dl }|{ -ubl }|{ -rl }|{ -on }|{ -off }|{ -cble }|{ -dble }
                               |{ -tlo }|{ -tlu }|{ -uhtml }|{ -aupon }|{ -aupoff }|{ -aup } 
-i      =&gt; Install le controll parental sur l'ordinateur (pc de bureau) peut ètre utiliser avec
           un paramètre suplémentaire pour indiquer un chemin de sources pour la page web de redirection.
           exemple : CTparental.sh -i /home/toto/html/
           si pas d'option le \&quot;sens interdit\&quot; est utiliser par default.
-u      =&gt; désinstall le controll parental de l'ordinateur (pc de bureau)
-dl     =&gt; mais a jour le controll a partir de la black liste de l'université de toulouse
-ubl    =&gt; A faire aprés chaque modification du fichier $DNS_FILTER_OSSI
-rl     =&gt; A faire aprés chaque modification manuel du fichier $DREAB
-on     =&gt; Active le controll parental
-off    =&gt; Désactive le controll parental
-cble   =&gt; Configure du mode de filtrage par liste blanche ou par liste noir(default) ainssi que les 
           catégories que l'on veux activer.
-dble   =&gt; Remet les catégories activent par défaut et filtrage par liste noir.
-tlo    =&gt; Active est paramètre les restrictions horaire de login pour les utilisateurs.
           Compatible avec les gestionnaire de sessions suivant $GESTIONNAIREDESESSIONS .
-tlu    =&gt; Desative les restrictions horaire de login pour les utilisateurs.
-uhtml  =&gt; mait a jour la page de redirection a partir d'un repertoir source ou par defaut avec 
            le \&quot;sens interdit\&quot;.
            exemples:
                     - avec un repertoir source : CTparental.sh -uhtml /home/toto/html/
   		     - par default :              CTparental.sh -uhtml
-aupon  =&gt; active la mise ajour automatique de la black liste de toulouse (tous les 7 jours).
-aupoff =&gt; desactve la mise ajour automatique de la black liste de toulouse.
-aup    =&gt; comme -dl mais seulement si il n'y a pas eu de mise a jour depuis plus de 7 jours.	
 &quot;
case $args in
   -\? | -h* | --h*)
      echo &quot;$usage&quot;
      exit 0
      ;;
   -i | --install )
      install
      exit 0
      ;;
   -u | --uninstall )
      uninstall
      exit 0
      ;;
   -dl | --download )
      download
      adapt
      catChoice
      dnsmasqon
      echo $THISDAYS &gt; $LASTUPDATE
      exit 0
      ;;
   -ubl | --updatebl )
      adapt
      catChoice
      dnsmasqon
      exit 0
      ;;
   -uhtml | --updatehtml )
      FoncHTTPDCONF
      exit 0
      ;;
   -rl | --reload )
      catChoice
      dnsmasqon
      exit 0
      ;;
   -on | --on )
      dnsmasqon
      exit 0
      ;;
   -off | --off )
      dnsmasqoff
      exit 0
      ;;
   -wlo | --whitelistonly )
      dnsmasqwhitelistonly
      exit 0
      ;;
   -cble | --confblenable )
      choiblenabled
      catChoice
      dnsmasqon
      exit 0
      ;;
    -dble | --defaultblenable )
      initblenabled
      catChoice
      dnsmasqon
      ;;
    -tlo | --timeloginon )
      activetimelogin
      ;;
    -tlu | --timeloginon )
      desactivetimelogin
      ;;
    -aupon | --autoupdateon )
      autoupdateon
      ;;
    -aupoff | --autoupdateoff )
      autoupdateoff
      ;;
    -aup | --autoupdate )
      autoupdate
      ;;
   *)
      echo &quot;Argument inconnu :$1&quot;;
      echo &quot;$usage&quot;;
      exit 1
      ;;
esac
&lt;/code&gt;</text>
      <sha1>d1bm1zf75iwso225kapz5fenkph4viz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5136</id>
      <parentid>5121</parentid>
      <timestamp>2013-05-08T06:44:02Z</timestamp>
      <contributor>
        <username>Hulk</username>
        <id>190</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="30513">lien sur le [http://www.debian-fr.org/controle-parental-pour-le-pc-debian-de-vos-enfants-t42009.html forum]

&lt;code bash&gt;
#!/bin/bash

# CTparental.sh
#
# par guillaume MARSAT
# une parti du code est tirer du scripte alcasar-bl.sh créer par Franck BOUIJOUX and Richard REY
# présent dans le code du projet alcasar en version 2.6.1 ; web page http://www.alcasar.net/

# This script is distributed under the Gnu General Public License (GPL)
if [ ! $UID -eq 0 ]; then
   echo &quot;Il vous faut les droit root pour lancer ce scripte&quot;
   exit 1
fi
args=${1}
SED=&quot;/bin/sed -i&quot;
DIR_CONF=&quot;/usr/local/etc/CTparental&quot;
tempDIR=&quot;/tmp/alcasar&quot;
RougeD=&quot;\033[1;31m&quot;
BleuD=&quot;\033[1;36m&quot;
VertD=&quot;\033[1;32m&quot;
Fcolor=&quot;\033[0m&quot;
GESTIONNAIREDESESSIONS=&quot; login gdm lightdm slim kdm xdm &quot;
FILEPAMTIMECONF=&quot;/etc/security/time.conf&quot;
DIRPAM=&quot;/etc/pam.d/&quot;
DAYS=( lundi mardi mercredi jeudi vendredi samedi dimanche )
DAYSPAM=( Mo Tu We Th Fr Sa Su )
DAYSCRON=( mon tue wed thu fri sat sun )
 
service --help 2&amp;&gt; /dev/null
if [ $? -eq 0 ] ; then
  CMDSERVICE=&quot;service &quot;
else
  CMDSERVICE=&quot;/etc/init.d/&quot;
fi
DNSMASQCONF=&quot;/etc/dnsmasq.conf&quot;
MAINCONFHTTPD=&quot;/etc/lighttpd/lighttpd.conf&quot;
DIRCONFENABLEDHTTPD=&quot;/etc/lighttpd/conf-enabled&quot;
CTPARENTALCONFHTTPD=$DIRCONFENABLEDHTTPD&quot;/10-CTparental.conf&quot;
RESOLVCONFMAIN=&quot;/etc/resolvconf&quot;
RESOLVDNSMASQ=&quot;$RESOLVCONFMAIN/run/interface/lo.dnsmasq&quot;
RESOLVCONFORDER=&quot;$RESOLVCONFMAIN/interface-order&quot;
DIRHTML=&quot;/var/www/CTparental&quot;
namservicednsmaq=&quot;dnsmasq&quot;
namservicehttpd=&quot;lighttpd&quot;
namservicecrond=&quot;cron&quot;
CMDINSTALL=&quot;&quot;
yum help 2&amp;&gt; /dev/null
if [ $? -eq 0 ] ; then
   ## &quot;Distribution baser sur yum exemple readhat,fedora...&quot;
   CMDINSTALL=&quot;yum install &quot;
   CMDREMOVE=&quot;yum remove &quot;
fi
urpmi --help 2&amp;&gt; /dev/null
if [ $? -eq 1 ] ; then
   ## &quot;Distribution baser sur urpmi exemple mandriva...&quot;
   CMDINSTALL=&quot;urpmi -a --auto &quot;
   CMDREMOVE=&quot;urpme --auto &quot;
   namservicecrond=&quot;crond&quot;
fi
apt-get -h 2&amp;&gt; /dev/null
if [ $? -eq 0 ] ; then
   ## &quot;Distribution baser sur apt-get exemple debian,ubuntu ...&quot;
   CMDINSTALL=&quot;apt-get -y --force-yes install &quot;
   CMDREMOVE=&quot;apt-get -y --force-yes remove --purge &quot;
fi
if [ $args=&quot;-i&quot; ] ; then
   namserviceNetworkManager=&quot;network-manager&quot;
   if [ -f /etc/NetworkManager/NetworkManager.conf ];then
     $SED &quot;s/^dns=dnsmasq/#dns=dnsmasq/g&quot; /etc/NetworkManager/NetworkManager.conf
     $CMDSERVICE$namserviceNetworkManager restart
     sleep 5
   fi
fi
if [ $( echo $CMDINSTALL | wc -m ) -eq 1 ] ; then
   echo &quot;Aucun gestionner de paquet connu , n'a été détecté.&quot;
   exit 1
fi


interface_WAN=$(ip route | awk '/^default via/{print $5}') # suppose que la passerelle est la route par default

if [ -f $DIR_CONF/resolv.conf.sav ];then
   DNS1=$(cat $DIR_CONF/resolv.conf.sav | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f1)
   DNS2=$(cat $DIR_CONF/resolv.conf.sav | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f2)
else
   DNS1=$(cat /etc/resolv.conf | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f1)
   DNS2=$(cat /etc/resolv.conf | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f2)
fi

PRIVATE_IP=&quot;127.0.0.10&quot;
FILE_tmp=&quot;$tempDIR/filetmp.txt&quot;
BL_SERVER=&quot;dsi.ut-capitole.fr&quot;
CATEGORIES_ENABLED=&quot;$DIR_CONF/categories-enabled&quot;
BL_CATEGORIES_AVAILABLE=&quot;$DIR_CONF/bl-categories-available&quot;
WL_CATEGORIES_AVAILABLE=&quot;$DIR_CONF/wl-categories-available&quot;
DIR_DNS_FILTER_AVAILABLE=&quot;$DIR_CONF/dnsfilter-available&quot;
DIR_DNS_BLACKLISTE_ENABLED=&quot;$DIR_CONF/blackliste-enabled&quot;
DIR_DNS_WHITELIST_ENABLED=&quot;$DIR_CONF/whitelist-enabled&quot;
DNS_FILTER_OSSI=&quot;$DIR_CONF/blackliste-local&quot;
DREAB=&quot;$DIR_CONF/domaine-rehabiliter&quot; 
LASTUPDATE=&quot;$DIR_CONF/last-update&quot; 
THISDAYS=$(expr $(date +%Y) \* 365 + $(date +%j))
MAXDAYSFORUPDATE=&quot;7&quot; # update tous les 7 jours
CHEMINCTPARENTLE=$(readlink -f $0)

initblenabled () {
   cat &lt;&lt; EOF &gt; $CATEGORIES_ENABLED
adult
agressif
dangerous_material
dating
drogue
gambling
hacking
malware
marketingware
mixed_adult
phishing
redirector
sect
strict_redirector
strong_redirector
tricheur
warez
ossi   
EOF
         

}

download() {
   wget -P $tempDIR http://$BL_SERVER/blacklists/download/blacklists.tar.gz 2&gt;&amp;1 | cat
   if [ ! $? -eq 0 ]; then
      echo &quot;erreur lors du téléchargement processu interompu&quot;
      rm -rf $tempDIR
      exit 1
   fi
   tar -xzf $tempDIR/blacklists.tar.gz -C $tempDIR
   if [ ! $? -eq 0 ]; then
      echo &quot;erreur d'extraction de l'archive processu interompu&quot;
      exit 1
   fi
   rm -rf $DIR_DNS_FILTER_AVAILABLE/
   mkdir $DIR_DNS_FILTER_AVAILABLE
}
autoupdate() {
	LASTUPDATEDAY=`sed -n &quot;1 p&quot; $LASTUPDATE`
        DIFFDAY=$(expr $THISDAYS - $LASTUPDATEDAY)
	if [ $DIFFDAY -ge $MAXDAYSFORUPDATE ] ; then
		download
		adapt
		catChoice
		dnsmasqon
		exit 0
	fi
	echo $THISDAYS &gt; $LASTUPDATE
	
}
autoupdateon() {
echo $THISDAYS &gt; $LASTUPDATE
echo &quot;*/10 * * * * root $CHEMINCTPARENTLE -aup&quot; &gt; /etc/cron.d/CTparental-autoupdate
$CMDSERVICE$namservicecrond restart
}

autoupdateoff() {
rm -f /etc/cron.d/CTparental-autoupdate
$CMDSERVICE$namservicecrond restart
}
adapt() {
   dnsmasqoff
   if [ ! -f $DNS_FILTER_OSSI ] ; then
            echo &gt; $DNS_FILTER_OSSI
   fi

   if [ -d $tempDIR  ] ; then
	  CATEGORIES_AVAILABLE=$tempDIR/categories_available
	  ls -FR $tempDIR/blacklists | grep '/$' | sed -e &quot;s/\///g&quot; &gt; $CATEGORIES_AVAILABLE
          echo -n &gt; $BL_CATEGORIES_AVAILABLE
          echo -n &gt; $WL_CATEGORIES_AVAILABLE
          if [ ! -f $DIR_DNS_FILTER_AVAILABLE/ossi.conf ] ; then
		echo &gt; $DIR_DNS_FILTER_AVAILABLE/ossi.conf
	  fi
	  for categorie in `cat $CATEGORIES_AVAILABLE` # creation des deux fichiers de categories (BL / WL)
	  do
		if [ -e $tempDIR/blacklists/$categorie/usage ]
		then
			is_whitelist=`grep white $tempDIR/blacklists/$categorie/usage|wc -l`
		else
			is_whitelist=0 # ou si le fichier 'usage' n'existe pas, on considère que la catégorie est une BL
		fi
		if [ $is_whitelist -eq &quot;0&quot; ]
		then
			echo &quot;$categorie&quot; &gt;&gt; $BL_CATEGORIES_AVAILABLE
		else
			echo &quot;$categorie&quot; &gt;&gt; $WL_CATEGORIES_AVAILABLE
		fi
	   done
         echo -n &quot;Toulouse Black and White List migration process. Please wait : &quot;
         for DOMAINE in `cat  $CATEGORIES_AVAILABLE`  # pour chaque catégorie
         do
            echo -n &quot;.&quot;
            # suppression des @IP, de caractères acccentués et des lignes commentées ou vide
            egrep  -v &quot;([0-9]{1,3}\.){3}[0-9]{1,3}&quot; $tempDIR/blacklists/$DOMAINE/domains &gt; $FILE_tmp
            $SED &quot;/[äâëêïîöôüû]/d&quot; $FILE_tmp
            $SED &quot;/^#.*/d&quot; $FILE_tmp
            $SED &quot;/^$/d&quot; $FILE_tmp
            $SED &quot;s/\.\{2,1000\}/\./g&quot; $FILE_tmp # supprime les suite de &quot;.&quot; exemple: address=/fucking-big-tits..com/127.0.0.10 devient address=/fucking-big-tits.com/127.0.0.10
	    is_blacklist=`grep $DOMAINE $BL_CATEGORIES_AVAILABLE |wc -l`
	    if [ $is_blacklist -ge &quot;1&quot; ] ; then
            	$SED &quot;s?.*?address=/&amp;/$PRIVATE_IP?g&quot; $FILE_tmp  # Mise en forme dnsmasq des listes noires
		mv $FILE_tmp $DIR_DNS_FILTER_AVAILABLE/$DOMAINE.conf  
            else
		$SED &quot;s?.*?server=/&amp;/#?g&quot; $FILE_tmp  # Mise en forme dnsmasq des listes blanches
		mv $FILE_tmp $DIR_DNS_FILTER_AVAILABLE/$DOMAINE.conf
            fi
         done
   else
         mkdir   $tempDIR
         echo -n &quot;.&quot;
 	 # suppression des @IP, de caractères acccentués et des lignes commentées ou vide
         egrep  -v &quot;([0-9]{1,3}\.){3}[0-9]{1,3}&quot; $DNS_FILTER_OSSI  &gt; $FILE_tmp
         $SED &quot;/[äâëêïîöôüû]/d&quot; $FILE_tmp 
         $SED &quot;/^#.*/d&quot; $FILE_tmp 
         $SED &quot;/^$/d&quot; $FILE_tmp 
         $SED &quot;s/\.\{2,1000\}/\./g&quot; $FILE_tmp # supprime les suite de &quot;.&quot; exemple: address=/fucking-big-tits..com/127.0.0.10 devient address=/fucking-big-tits.com/127.0.0.10
         $SED &quot;s?.*?address=/&amp;/$PRIVATE_IP?g&quot; $FILE_tmp  # Mise en forme dnsmasq
         mv $FILE_tmp $DIR_DNS_FILTER_AVAILABLE/ossi.conf
   fi     
   echo
   rm -rf $tempDIR
}
catChoice() {
#   echo &quot;catChoice&quot;
   rm -rf $DIR_DNS_BLACKLISTE_ENABLED/
   mkdir $DIR_DNS_BLACKLISTE_ENABLED
   rm -rf  $DIR_DNS_WHITELIST_ENABLED/
   mkdir  $DIR_DNS_WHITELIST_ENABLED
     
      for CATEGORIE in `cat $CATEGORIES_ENABLED` # on affecte les catégories dnsmasq
      do
	 is_blacklist=`grep $CATEGORIE $BL_CATEGORIES_AVAILABLE |wc -l`
	 if [ $is_blacklist -ge &quot;1&quot; ] ; then
		cp $DIR_DNS_FILTER_AVAILABLE/$CATEGORIE.conf $DIR_DNS_BLACKLISTE_ENABLED/
         else
		cp $DIR_DNS_FILTER_AVAILABLE/$CATEGORIE.conf $DIR_DNS_WHITELIST_ENABLED/
     	 fi     
      done
      cp $DIR_DNS_FILTER_AVAILABLE/ossi.conf $DIR_DNS_BLACKLISTE_ENABLED/
#      echo &quot;fincatChoice&quot;
      reabdomaine
}

reabdomaine () {
if [ ! -f $DREAB ] ; then
cat &lt;&lt; EOF &gt; $DREAB
   www.google.com
   www.google.fr
EOF
fi
if [ ! -f $DIR_DNS_BLACKLISTE_ENABLED/ossi.conf ] ; then
	echo &gt; $DIR_DNS_BLACKLISTE_ENABLED/ossi.conf
fi
echo
echo -n &quot;Application de la liste blanche (domaine réabiliter):&quot;
for CATEGORIE in `cat  $CATEGORIES_ENABLED  `  # pour chaque catégorie
do 
	is_blacklist=`grep $CATEGORIE $BL_CATEGORIES_AVAILABLE |wc -l`
	if [ $is_blacklist -ge &quot;1&quot; ] ; then
		echo -n &quot;.&quot;
		for DOMAINE in `cat  $DREAB`
		do
		    $SED &quot;/$DOMAINE/d&quot; $DIR_DNS_BLACKLISTE_ENABLED/$CATEGORIE.conf
		done
        fi
done
echo -n &quot;.&quot;
cat $DREAB | sed -e &quot;s?.*?server=/&amp;/#?g&quot; &gt;  $DIR_DNS_WHITELIST_ENABLED/whiteliste.ossi.conf
echo
}

dnsmasqon () {
   categorie1=`sed -n &quot;1 p&quot; $CATEGORIES_ENABLED` # on considaire que si la 1 er categorie activer est un blackliste on fonctionne par blackliste.
   is_blacklist=`grep $categorie1 $BL_CATEGORIES_AVAILABLE |wc -l`
   if [ $is_blacklist -ge &quot;1&quot; ] ; then
   cat &lt;&lt; EOF &gt; $DNSMASQCONF
         # Configuration file for &quot;dnsmasq with blackhole&quot;
   # Inclusion de la blacklist &lt;domains&gt; de Toulouse dans la configuration
   conf-dir=$DIR_DNS_BLACKLISTE_ENABLED
   # conf-file=$DIR_DEST_ETC/alcasar-dns-name   # zone de definition de noms DNS locaux
   no-dhcp-interface=$interface_WAN
   bind-interfaces
   cache-size=1024
   domain-needed
   expand-hosts
   bogus-priv
   server=$DNS1
   server=$DNS2
   
EOF
$CMDSERVICE$namservicednsmaq restart
else
  dnsmasqwhitelistonly
fi
}
dnsmasqoff () {
   cat &lt;&lt; EOF &gt; $DNSMASQCONF
         # Configuration file for &quot;dnsmasq with blackhole&quot;
   # Inclusion de la blacklist &lt;domains&gt; de Toulouse dans la configuration
   # conf-dir=$DIR_DNS_BLACKLISTE_ENABLED
   # conf-file=$DIR_DEST_ETC/alcasar-dns-name   # zone de definition de noms DNS locaux
   no-dhcp-interface=$interface_WAN
   bind-interfaces
   cache-size=0
   domain-needed
   expand-hosts
   bogus-priv
   server=$DNS1
   server=$DNS2
   
EOF

$CMDSERVICE$namservicednsmaq restart
}
dnsmasqwhitelistonly  () {
   cat &lt;&lt; EOF &gt; $DNSMASQCONF
         # Configuration file for &quot;dnsmasq with blackhole&quot;
   # Inclusion de la blacklist &lt;domains&gt; de Toulouse dans la configuration
   conf-dir=$DIR_DNS_WHITELIST_ENABLED
   # conf-file=$DIR_DEST_ETC/alcasar-dns-name   # zone de definition de noms DNS locaux
   no-dhcp-interface=$interface_WAN
   bind-interfaces
   cache-size=0
   domain-needed
   expand-hosts
   bogus-priv
   server=$DNS1
   server=$DNS2
   address=/#/$PRIVATE_IP #redirige vers $PRIVATE_IP pour tous ce qui n'a pas étais resolut dans les listes blanches
EOF

$CMDSERVICE$namservicednsmaq restart
}


FoncHTTPDCONF () {
$CMDSERVICE$namservicehttpd stop
rm -rf $DIRHTML/*
mkdir -v $DIRHTML
if [ ! -z $DIRhtmlPersonaliser ];then
   cp -r $DIRhtmlPersonaliser/* $DIRHTML
else
s=&quot;span&quot;
st=&quot;style&quot;
c=&quot;$c&quot;
cab=&quot;;\&quot;&gt;&quot;

cat &lt;&lt; EOF &gt; $DIRHTML/index.html
 &lt;HTML&gt;
&lt;HEAD&gt;
   &lt;META HTTP-EQUIV=&quot;CONTENT-TYPE&quot; CONTENT=&quot;text/html; charset=utf-8&quot;&gt;
   &lt;TITLE&gt;danger&lt;/TITLE&gt;
&lt;/HEAD&gt;
&lt;BODY LANG=&quot;fr-FR&quot; DIR=&quot;LTR&quot;&gt;
&lt;CENTER&gt;
&lt;img alt=&quot;Site dangereux pour des mineurs&quot;
  HEIGHT=&quot;600&quot;   
  src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKIAAACgCAYAAACPOrcQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz
AAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAuGSURB
VHic7d17jFTlGcfx7zMol7KriRpF3Sii3FyooE1EWuNaFrFeWjXWqEBCmyYtrSa2iX9g+wcx9RZN
kya29i+1ETWKMSZI1AiClyI2KiJyFa8BBC9EuyAXhad/vDO7s8PszpyZc857zrzPJ9nsZvac931g
fnnf2Zlz3ldUFVNBZCQwDhhf/H480A60Fb+X/9xWPGsP0FP2vfznr4AtwGZgC6p70/qn5IUEHUSR
EcAFwGRc6Epfpybc83ZcKEtf64DXUd2XcL+ZFVYQRYYB04CLi1/TgKFea+pzEFgNrCh+rUb1gN+S
0tP6QRQ5B7gSF7zpwHC/BdVtP7AKF8olqK71XE+iWjOIIh3AjcBcYJLnauLyHvAI8Biq23wXE7fW
CaJIO3AtMAfoAgpe60nOYWAlsAh4CtUev+XEI/9BdFPvrcA1wAjP1aRtH/A0cG/ep+78BlFkOnAb
cLnvUjJiKXAnqqt8F9KI/AVRZBawALjIdykZ9TJwF6ov+C4kivwEUeQq4C/Aeb5LyYm3gL+i+ozv
QuqR/SCKTADuB2b4LiWnlgM3obrJdyGDye5fliIjEbkbeBcLYTNmAO8icnfxo8tMyuaIKPJL4G9A
h+9SWsw24E+oLvZdSKVsBVHkLOABoNt3KS1uGTAf1a2+CynJztQsMhtYg4UwDd3AGkTm+C6kxH8Q
RX6AyIO4Twraah1uYtMGPILIw1l47eh3ahaZDDwBTPRXhMFdinY9qu/4KsDfiCjyW+C/WAizYDyw
GpGbfBWQ/ogoMhR4EJidbsemTouBuWlfC5luEEWOwX1Ib+8LZtsrwM9R/SatDtMLosgo4DlgSjod
miatAy5FdUcanaXzGlFkHPA6FsI8mQysKn7EmrjkgyhyPvAfYHTifZm4nQ68hsi0pDtKNogi3cBL
wAmJ9mOSdDywvPhcJia514huJFwOeH+z1MRiLzAD1TeSaDyZIIqcDbwKHBd/48aj3cCFqG6Iu+H4
gyhyOu41YdI3qRs/tgM/RvWTOBuN9zWiyInAi1gIW9mpwIvF5zo28QXRvVn9PDA2tjZNVo0Fni8+
57GIJ4giAjwJTI2lPZMHU4Eni8990+IaEf8MzIqpLZMfs3DPfdOa/2NFpAt3xe+QGOox+XMI6EZ1
ZTONNBdEkZOAd4BRzRRhcm8nMAXVXY020PjULFIAHsdCaFwGHi9moiHNvEZciFvqzRhwWVjY6MmN
Tc0iF+JWpPJ/z4vJksNAF6qvRj0xehBFjsbdbdcZtTMThPXAVFS/i3JSIyPaH7EQmoF14jISSbQR
UeQ0YAN2RY0Z3F7gbFQ/rfeEqCPi37EQmtpG4rJSt/pHRJHLgWej12QCdgWqS+s5sL4guv1I1gNn
NFeXCcxHQGc9+8fUOzXPx0JoojsDl52aao+IIsOBD4GTmy7LhOgzYAyq+wc7qJ4R8TdYCE3jTsZl
aFCDj4hueZAPsAUzTXO2AWeienCgA2qNiPOwEJrmdeCyNKCBR0SRo4D3sRvjTTw+Bsai+n21Xw42
Is7BQmjiMxqXqaoGC+IfYi/FhG7ATFWfmkU6cbthGhO3Saiur3xwoBFxXrK1mIDNq/bgkSOiyBDc
n9t2C4BJwk6gA9VD5Q9WGxEvxUJokjMKl7F+qgVxXuKlmNDNq3yg/9QschywAxiWWkkmRAeAU1Dd
XXqgckT8BRZCk7xhuKz1qgyirfZv0tIva5VT83bglJQLMmHagWrv8oV9QXSrx2+M3Nwtt8Dw4XEV
Z/Jm1y546KFGz55Y2tC8PIjzgX9Gburrr+HYYxstxOTd2rUwpeFdS36P6gPQ/zXiT5suyphoejPn
gugWW+zyVIwJV1dpoc/SiPhDbC8Uk74TcNnrDeK5/moxgTsX+oKYyn5rxlQxASyIxr9+QbRd5I0v
EwEKxVtGx3guxoRrDCJDC8BZ2I4Axp8hwFkFbFo2/k0sAON9V2GCN74AxLq5nzENOLEAtPuuwgSv
3YJosqC9ALT5rsIEr81GRJMFNjWbTLCp2WSCTc0mE9ptU0eTCQWgx3cRJng9BWCP7ypM8PbYiGiy
oMeCaLLApmaTCTY1m0ywqdlkQk8B+Nx3FSZ4nxeAzb6rMMHbXKCRpeiMidfGArAVOFTrSGMScgjY
WihuXfqh72pMsD5E9WDpogebno0vG6FvyZFNHgsxYdsEFkTjX78gvu2xEBO2t6EviO8CX/qrxQTq
S1z2ikF0Wwus9FePCdTKYvb67SrwkqdiTLh6M1cexBUeCjFh681cXxDdDkA7fFRjgrSjtOsUwFEV
v1wBzI7U3IIFMMw2NA3WF180ema/GbhyU8hfAQ82XJQx9fs1qr2b+NnG4caHGhuHu18sSbkoE54l
5SGEIzcOB3g4nVpMwB6ufKD/1AwgMgTYBoxKpSQTmp1AB6r9roE9ckR0ByxKqSgTnkWVIYRqIyKA
SCfwXgpFmfBMQnV95YPVVwNzB76ZdEUmOG9WCyEMFETnHwkVY8I1YKaqT80AIkcB7wOjEynJhOZj
YCyq31f75cAjojvhrmRqMgG6a6AQwmAjIlDcufQDoCP+ukxAtgFnFu8YrWrwpYvdiffEXJQJzz2D
hRBqjYgAIsNx9z2fHF9dJiCfAWNQ3T/YQbUXc3cN3BdTUSY899UKIdQzIgKIjADWA2c0X5cJyEdA
J6r7ah1Y3/YWrqGbmyzKhOfmekII9QYRQHUp8EyjFZngPFPMTF3qm5p7j5bTgA3AyOh1mYDsBc5G
9dN6T4i285Rr+PaIRZnw3B4lhBB1RAQQORpYA3RGO9EEYj0wFdXvopwUfS8+18F84HDkc02rOwzM
jxpCaCSIAKqvAnc0dK5pZXcUsxFZ9Km590wpAMuAixtrwLSYFUA3qg3NlI0HEUDkJOAd7P6W0O0E
pqC6q9EGmtuv2XV8A7YYfMgOATc0E0JoNogAqiuBhU23Y/JqYTEDTWluau5tRQR4DpjVfGMmR14A
fkYMIYoniAAix+AW+5waT4Mm49YAXaj+L47G4gsigMiJwGvA2PgaNRn0PvATVGPbx7H514jlXGEz
ge2xtmuyZDswM84QQtxBBFD9BLgE2F3rUJM7u4FLis9xrOIPIoDqBuAy3FUYpjXsBS4rPrexSyaI
AKpvAFcB3ybWh0nLt8BVxec0EfH+sVK1BzkfeBY4IdmOTEK+Aq5AdXWSnSQfRACRcbj3nEYn35mJ
0SfApeWLricluam5nOoW4ALc59ImH9YB09MIIaQVRADVncBFwPLU+jSNegW4ENXUtjtJL4hA8V34
y4BHU+3XRLEY9xbNN2l2mm4QwS1jojoH+B1Q88Zrk5oDuNs/r0P1QNqdp/PHyoC9y2TgCWCivyIM
sBm4HlVvr+HTHxHLqa4DfgQ8VOtQk5h/A+f5DCH4HhHLicwG/gW0+S4lEHtwNzplYuF+vyNiOdVH
cZeQLfNdSgCW4W75zEQIIUtBBFDdiupM4Drc4o4mXtuA61CdiepW38WUy1YQS1QXAxNwi4RGvkfW
HOE73P/lhOL/beZk5zXiQEQmAPcDM3yXklPLgZvS+oSkUdkcEcupbkK1G7gaeMt3OTnyFnA1qt1Z
DyHkYUSsJDILWID7uNAc6WXcCv4v+C4kivwFsURkOnAbcLnvUjJiKXAnqqt8F9KI/AaxROQc4Fbg
GmCE52rStg94GrgX1bW+i2lG/oNYItIOXAvMAbrIw+vfxhzG3ba7CHgK1R6/5cSjdYJYTqQDuBGY
C0zyXE1c3gMeAR5DteXeY23NIJZzU/eVuFXLpgPD/RZUt/3AKtwqW0vyPvXW0vpBLCcyDJiGC+XF
xZ+Heq2pz0FgNS54K4DVPi7H8iWsIFZy+8dcAEwGxpd9nZpwz9txl16VvtYBr9e7FUQrCjuIAxEZ
CYzDhXIccDzQjrsyqL3i59LVQnuAnrLv5T9/BWzBhW4Lqna/d4X/A/bydTBs1YRqAAAAAElFTkSu
QmCC&quot; /&gt;
&lt;/CENTER&gt;
&lt;/BODY&gt;
&lt;/HTML&gt;
EOF

fi
## GENERATION

ln -s  $DIRHTML/index.html $DIRHTML/err404.html
USERHTTPD=$(cat /etc/passwd | grep /var/www | cut -d&quot;:&quot; -f1)
GROUPHTTPD=$(cat /etc/group | grep $USERHTTPD | cut -d&quot;:&quot; -f1)
cat &lt;&lt; EOF &gt; $MAINCONFHTTPD
server.modules = (
&quot;mod_access&quot;,
&quot;mod_alias&quot;,
&quot;mod_redirect&quot;,
# &quot;mod_rewrite&quot;,
)
server.document-root = &quot;/var/www&quot;
server.upload-dirs = ( &quot;/var/cache/lighttpd/uploads&quot; )
server.errorlog = &quot;/var/log/lighttpd/error.log&quot;
server.pid-file = &quot;/var/run/lighttpd.pid&quot;
server.username = &quot;$USERHTTPD&quot;
server.groupname = &quot;$GROUPHTTPD&quot;
server.port = 80
server.bind = &quot;127.0.0.1&quot;


index-file.names = ( &quot;index.php&quot;, &quot;index.html&quot; )
url.access-deny = ( &quot;~&quot;, &quot;.inc&quot; )
static-file.exclude-extensions = ( &quot;.php&quot;, &quot;.pl&quot;, &quot;.fcgi&quot; )

compress.cache-dir = &quot;/var/cache/lighttpd/compress/&quot;
compress.filetype = ( &quot;text/css&quot;, &quot;text/html&quot;, &quot;text/plain&quot; )

server.tag = &quot;&quot;

include_shell &quot;/usr/share/lighttpd/create-mime.assign.pl&quot;
include_shell &quot;/usr/share/lighttpd/include-conf-enabled.pl&quot;
EOF

mkdir -p /usr/share/lighttpd/

if [ ! -f /usr/share/lighttpd/create-mime.assign.pl ];then
cat &lt;&lt; EOF &gt; /usr/share/lighttpd/create-mime.assign.pl
#!/usr/bin/perl -w
use strict;
open MIMETYPES, &quot;/etc/mime.types&quot; or exit;
print &quot;mimetype.assign = (\n&quot;;
my %extensions;
while(&lt;MIMETYPES&gt;) {
  chomp;
  s/\#.*//;
  next if /^\w*$/;
  if(/^([a-z0-9\/+-.]+)\s+((?:[a-z0-9.+-]+[ ]?)+)$/) {
    foreach(split / /, \$2) {
      # mime.types can have same extension for different
      # mime types
      next if \$extensions{\$_};
      \$extensions{\$_} = 1;
      print &quot;\&quot;.\$_\&quot; =&gt; \&quot;\$1\&quot;,\n&quot;;
    }
  }
}
print &quot;)\n&quot;;
EOF
chmod +x /usr/share/lighttpd/create-mime.assign.pl
fi


if [ ! -f /usr/share/lighttpd/include-conf-enabled.pl ];then
cat &lt;&lt; EOF &gt; /usr/share/lighttpd/include-conf-enabled.pl
#!/usr/bin/perl -wl

use strict;
use File::Glob ':glob';

my \$confdir = shift || &quot;/etc/lighttpd/&quot;;
my \$enabled = &quot;conf-enabled/*.conf&quot;;

chdir(\$confdir);
my @files = bsd_glob(\$enabled);

for my \$file (@files)
{
        print &quot;include \&quot;\$file\&quot;&quot;;
}
EOF
chmod +x /usr/share/lighttpd/include-conf-enabled.pl 

fi

mkdir -p $DIRCONFENABLEDHTTPD
cat &lt;&lt; EOF &gt; $CTPARENTALCONFHTTPD

\$SERVER[&quot;socket&quot;] == &quot;$PRIVATE_IP:80&quot; {
server.document-root = &quot;$DIRHTML&quot;
server.errorfile-prefix = &quot;$DIRHTML/err&quot; 
#ssl.engine = &quot;enable&quot; 
#ssl.pemfile = &quot;/etc/lighttpd/ssl/$PRIVATE_IP.pem&quot; 
}

EOF

$CMDSERVICE$namservicehttpd start
}

install () {
      if [ $(netstat -anlp | grep -w LISTEN | grep &quot;:80&quot; | cut -d&quot;/&quot; -f2 | wc -l ) -gt 0 ] ; then
	   echo &quot;le Serveur Web $(netstat -anlp | grep -w LISTEN | grep &quot;:80&quot; | cut -d&quot;/&quot; -f2 | sort -u ) tourne deja sur ce pc&quot;
	   echo &quot;veuiller le désinstaler avant d'installer le control parental.&quot;
	   exit 1
      fi
      mkdir $tempDIR
      mkdir -p $DIR_CONF
      initblenabled
      cat /etc/resolv.conf &gt; $DIR_CONF/resolv.conf.sav
      $CMDINSTALL dnsmasq
      $CMDINSTALL lighttpd
      if [ ! -f blacklists.tar.gz ]
      then
         download
      else
         tar -xzf blacklists.tar.gz -C $tempDIR
         if [ ! $? -eq 0 ]; then
            echo &quot;erreur d'extraction de l'archive processu interompu&quot;
            exit 1
         fi
         rm -rf $DIR_DNS_FILTER_AVAILABLE/
         mkdir $DIR_DNS_FILTER_AVAILABLE
      fi
      adapt
      catChoice
      dnsmasqon
      $CMDINSTALL resolvconf
      confresolvconf

      FoncHTTPDCONF
}

confresolvconf () {
echo &quot;nameserver 127.0.0.1&quot; &gt; $RESOLVDNSMASQ
if [ ! -f $RESOLVCONFORDER ];then
cat &lt;&lt; EOF &gt; $RESOLVCONFORDER
# interface-order(5)
lo.inet*
lo.dnsmasq
lo.pdnsd
lo.!(pdns|pdns-recursor)
lo
tun*
tap*
hso*
em+([0-9])?[+([0-9]))*
p+([0-9]p+([0-9])?(_+([0-9]))*
eth*
ath*
wlan*
ppp*
*
EOF
fi
resolvconf -u
}

uninstall () {
   rm -f /etc/cron.d/CTparental*
   $CMDSERVICE$namservicecrond restart
   $CMDSERVICE$namservicehttpd stop
   rm -f /var/www/index.lighttpd.html
   rm -rf $tempDIR
   rm -rf $DIR_CONF
   rm -rf $DIRHTML

   if [ -f /etc/NetworkManager/NetworkManager.conf ];then
	$SED &quot;s/^#dns=dnsmasq/dns=dnsmasq/g&quot; /etc/NetworkManager/NetworkManager.conf
	$CMDSERVICE$namserviceNetworkManager restart
  	sleep 5
   fi
   rm -rf /usr/share/lighttpd/*
   rm -f $CTPARENTALCONFHTTPD
   rm -f $RESOLVDNSMASQ
   resolvconf -u

   $CMDREMOVE lighttpd
   $CMDREMOVE dnsmasq 
   $CMDREMOVE resolvconf
}

choiblenabled () {
echo -n &gt; $CATEGORIES_ENABLED
clear
echo &quot;Voulez Filtre par Blackliste ou Whiteliste :&quot;
echo -n &quot; B/W :&quot;
while (true); do
         read choi
         case $choi in
         B | b )
         echo &quot;Vous aller maintenant choisir les \&quot;Black listes\&quot; a appliquer.&quot;
		for CATEGORIE in `cat  $BL_CATEGORIES_AVAILABLE`  # pour chaque catégorie
		do   
		      clear
		      echo &quot;Voulez vous activer la categorie :&quot;
		      echo -n &quot;$CATEGORIE  O/N :&quot;
		      while (true); do
			 read choi
			 case $choi in
			 O | o )
			 echo $CATEGORIE &gt;&gt; $CATEGORIES_ENABLED
			 break
			 ;;
			 N | n )
			 break
			 ;;
		      esac
		      done
		done
         break
         ;;
         W | w )
         echo &quot;Vous aller maintenant choisir les \&quot;White listes\&quot; a appliquer.&quot;
		for CATEGORIE in `cat  $WL_CATEGORIES_AVAILABLE`  # pour chaque catégorie
		do   
		      clear
		      echo &quot;Voulez vous activer la categorie :&quot;
		      echo -n &quot;$CATEGORIE  O/N :&quot;
		      while (true); do
			 read choi
			 case $choi in
			 O | o )
			 echo $CATEGORIE &gt;&gt; $CATEGORIES_ENABLED
			 break
			 ;;
			 N | n )
			 break
			 ;;
		      esac
		      done
		done
         break
         ;;
      esac
done
}


errortime1 () {
clear
echo -e &quot;L'heure de debut doit ètre strictement inférieur a l'heure de fin: $RougeD$input$Fcolor &quot;
echo &quot;exemple: 08h00 a 24h00 ou 08h00 a 12h00 et 14h00 a 24h00&quot;
echo -e -n &quot;$RougeD$PCUSER$Fcolor est autorisés à se connecter le $BleuD${DAYS[$NumDAY]}$Fcolor de:&quot;
}
errortime2 () {
clear
echo -e &quot;Mauvaise syntaxe: $RougeD$input$Fcolor &quot;
echo &quot;exemple: 08h00 a 24h00 ou 08h00 a 12h00 et 14h00 a 24h00&quot;
echo -e -n &quot;$RougeD$PCUSER$Fcolor est autorisés à se connecter le $BleuD${DAYS[$NumDAY]}$Fcolor de:&quot;
}

pause () {   # fonction pause pour debugage
      choi=&quot;&quot;
      echo  &quot;pour continuer  press Q :&quot;
      while (true); do
         read choi
         case $choi in
         Q | q )
         break
         ;;
      esac
      done
}
activetimelogin () {
   TESTGESTIONNAIRE=&quot;&quot;
   for FILE in `echo $GESTIONNAIREDESESSIONS`
   do
      if [ -f $DIRPAM$FILE ];then
         if [ $(cat $DIRPAM$FILE | grep -c &quot;account required pam_time.so&quot;) -eq 0  ] ; then
            echo &quot;account required pam_time.so&quot; &gt;&gt; $DIRPAM$FILE
         fi
         TESTGESTIONNAIRE=$TESTGESTIONNAIRE\ $FILE
      fi
   done
   if [ $( echo $TESTGESTIONNAIRE | wc -m ) -eq 1 ] ; then
      echo &quot;Aucun gestionner de session connu , n'a été détecté.&quot;
      echo &quot; il est donc impossible d'activer le controle horaires des connections&quot;
      exit 1
   fi
   
   if [ ! -f $FILEPAMTIMECONF.old ] ; then
   cp $FILEPAMTIMECONF $FILEPAMTIMECONF.old
   fi
   echo &quot;*;*;root;Al0000-2400&quot; &gt; $FILEPAMTIMECONF
   for NumDAY in 0 1 2 3 4 5 6
   do
   echo  &gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
   done
   for PCUSER in `cat /etc/passwd | cut -d&quot;:&quot; -f1,3| grep -E [1-9][0-9][0-9][0-9]| grep -v 65534 | cut -d &quot;:&quot; -f1`
   do
   echo $PCUSER
      HORAIRES=&quot;&quot;
      for NumDAY in 0 1 2 3 4 5 6
         do
         clear
         echo &quot;exemple: 08h00 a 24h00 ou 08h00 a 12h00 et 14h00 a 24h00&quot;
         echo -e -n &quot;$RougeD$PCUSER$Fcolor est autorisés à se connecter le $BleuD${DAYS[$NumDAY]}$Fcolor de:&quot;
         while (true); do
            read choi
            input=$choi
            choi=$(echo $choi | sed -e &quot;s/h//g&quot; | sed -e &quot;s/ //g&quot; | sed -e &quot;s/a/-/g&quot; | sed -e &quot;s/et/:/g&quot; ) # mise en forme de choi pour pam   
               if [ $( echo $choi | grep -E -c &quot;^[0-2][0-9][0-5][0-9]-[0-2][0-9][0-5][0-9]$|^[0-2][0-9][0-5][0-9]-[0-2][0-9][0-5][0-9]:[0-2][0-9][0-5][0-9]-[0-2][0-9][0-5][0-9]$&quot; ) -eq 1 ];then
                  int1=$(echo $choi | cut -d &quot;:&quot; -f1 | cut -d &quot;-&quot; -f1)
                  int2=$(echo $choi | cut -d &quot;:&quot; -f1 | cut -d &quot;-&quot; -f2)
                  int3=$(echo $choi | cut -d &quot;:&quot; -f2 | cut -d &quot;-&quot; -f1)
                  int4=$(echo $choi | cut -d &quot;:&quot; -f2 | cut -d &quot;-&quot; -f2)
                  if [ $int1 -lt $int2 ];then
                     if [ ! $(echo $choi | grep -E -c &quot;:&quot;) -eq 1 ] ; then
                        if [ $NumDAY -eq 6 ] ; then
                           HORAIRESPAM=$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1\-$int2
                        else
                           HORAIRESPAM=$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1\-$int2\|
                        fi
                        MINUTES1=$(echo $int2 | sed -e 's/.\{02\}//')
                        HEURES1=$(echo $int2 | sed -e 's/.\{02\}$//')   
                        echo &quot;$MINUTES1 $HEURES1 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
                        break
   
                     else   
                        if [ $int2 -lt $int3 ];then
                           if [ $int3 -lt $int4 ];then
                              if [ $NumDAY -eq 6 ] ; then
                                 HORAIRESPAM=$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1\-$int2\|${DAYSPAM[$NumDAY]}$int3\-$int4
                              else
                                 HORAIRESPAM=$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1\-$int2\|${DAYSPAM[$NumDAY]}$int3\-$int4\|
                              fi
                              MINUTES1=$(echo $int2 | sed -e 's/.\{02\}//')
                              HEURES1=$(echo $int2 | sed -e 's/.\{02\}$//')   
                              MINUTES2=$(echo $int4 | sed -e 's/.\{02\}//')
                              HEURES2=$(echo $int4 | sed -e 's/.\{02\}$//')   
                              ## minutes heures jourdumoi moi jourdelasemaine utilisateur  commande

                              echo &quot;$MINUTES1 $HEURES1 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
                              echo &quot;$MINUTES2 $HEURES2 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
                              break   
                           else
                              errortime1
                           fi
                        else
                           errortime1
                        fi
                     fi
                  else
                     errortime1
   
                  fi
                       
               else
                  errortime2   
               fi
           
         done
     
        done
     
      echo &quot;*;*;$PCUSER;$HORAIRESPAM&quot; &gt;&gt; $FILEPAMTIMECONF
   done
   for NumDAY in 0 1 2 3 4 5 6
   do
      echo &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
   done
$CMDSERVICE$namservicecrond restart
}
desactivetimelogin () {
for FILE in `echo $GESTIONNAIREDESESSIONS`
do
   $SED &quot;/account required pam_time.so/d&quot; $DIRPAM$FILE
done
cat $FILEPAMTIMECONF.old &gt; $FILEPAMTIMECONF
for NumDAY in 0 1 2 3 4 5 6
do
   rm -f /etc/cron.d/CTparental${DAYS[$NumDAY]}
done
$CMDSERVICE$namservicecrond restart
}



if [ ! -z ${2} ];then
   DIRhtmlPersonaliser=${2}
   if [ ! -d $DIRhtmlPersonaliser ];then
      echo &quot;Chemin de répertoir non valide!&quot;
      exit 0
   fi
fi
usage=&quot;Usage: CTparental.sh    {-i }|{ -u }|{ -dl }|{ -ubl }|{ -rl }|{ -on }|{ -off }|{ -cble }|{ -dble }
                               |{ -tlo }|{ -tlu }|{ -uhtml }|{ -aupon }|{ -aupoff }|{ -aup } 
-i      =&gt; Install le controll parental sur l'ordinateur (pc de bureau) peut ètre utiliser avec
           un paramètre suplémentaire pour indiquer un chemin de sources pour la page web de redirection.
           exemple : CTparental.sh -i /home/toto/html/
           si pas d'option le \&quot;sens interdit\&quot; est utiliser par default.
-u      =&gt; désinstall le controll parental de l'ordinateur (pc de bureau)
-dl     =&gt; mais a jour le controll a partir de la black liste de l'université de toulouse
-ubl    =&gt; A faire aprés chaque modification du fichier $DNS_FILTER_OSSI
-rl     =&gt; A faire aprés chaque modification manuel du fichier $DREAB
-on     =&gt; Active le controll parental
-off    =&gt; Désactive le controll parental
-cble   =&gt; Configure du mode de filtrage par liste blanche ou par liste noir(default) ainssi que les 
           catégories que l'on veux activer.
-dble   =&gt; Remet les catégories activent par défaut et filtrage par liste noir.
-tlo    =&gt; Active est paramètre les restrictions horaire de login pour les utilisateurs.
           Compatible avec les gestionnaire de sessions suivant $GESTIONNAIREDESESSIONS .
-tlu    =&gt; Desative les restrictions horaire de login pour les utilisateurs.
-uhtml  =&gt; mait a jour la page de redirection a partir d'un repertoir source ou par defaut avec 
            le \&quot;sens interdit\&quot;.
            exemples:
                     - avec un repertoir source : CTparental.sh -uhtml /home/toto/html/
   		     - par default :              CTparental.sh -uhtml
-aupon  =&gt; active la mise ajour automatique de la black liste de toulouse (tous les 7 jours).
-aupoff =&gt; desactve la mise ajour automatique de la black liste de toulouse.
-aup    =&gt; comme -dl mais seulement si il n'y a pas eu de mise a jour depuis plus de 7 jours.	
 &quot;
case $args in
   -\? | -h* | --h*)
      echo &quot;$usage&quot;
      exit 0
      ;;
   -i | --install )
      install
      exit 0
      ;;
   -u | --uninstall )
      uninstall
      exit 0
      ;;
   -dl | --download )
      download
      adapt
      catChoice
      dnsmasqon
      echo $THISDAYS &gt; $LASTUPDATE
      exit 0
      ;;
   -ubl | --updatebl )
      adapt
      catChoice
      dnsmasqon
      exit 0
      ;;
   -uhtml | --updatehtml )
      FoncHTTPDCONF
      exit 0
      ;;
   -rl | --reload )
      catChoice
      dnsmasqon
      exit 0
      ;;
   -on | --on )
      dnsmasqon
      exit 0
      ;;
   -off | --off )
      dnsmasqoff
      exit 0
      ;;
   -wlo | --whitelistonly )
      dnsmasqwhitelistonly
      exit 0
      ;;
   -cble | --confblenable )
      choiblenabled
      catChoice
      dnsmasqon
      exit 0
      ;;
    -dble | --defaultblenable )
      initblenabled
      catChoice
      dnsmasqon
      ;;
    -tlo | --timeloginon )
      activetimelogin
      ;;
    -tlu | --timeloginon )
      desactivetimelogin
      ;;
    -aupon | --autoupdateon )
      autoupdateon
      ;;
    -aupoff | --autoupdateoff )
      autoupdateoff
      ;;
    -aup | --autoupdate )
      autoupdate
      ;;
   *)
      echo &quot;Argument inconnu :$1&quot;;
      echo &quot;$usage&quot;;
      exit 1
      ;;
esac
&lt;/code&gt;

[[Catégorie:Scripts]]</text>
      <sha1>ijsza3a5y8o9cphw6d1cu15z7mog0j4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5238</id>
      <parentid>5136</parentid>
      <timestamp>2013-06-02T06:37:29Z</timestamp>
      <contributor>
        <username>Hulk</username>
        <id>190</id>
      </contributor>
      <comment>up version 3.10</comment>
      <text xml:space="preserve" bytes="39474">lien sur le [http://www.debian-fr.org/controle-parental-pour-le-pc-debian-de-vos-enfants-t42009.html forum]

&lt;code bash&gt;
#!/bin/bash 
# CTparental.sh
#
# par guillaume MARSAT
# une parti du code est tirer du scripte alcasar-bl.sh créer par Franck BOUIJOUX and Richard REY
# présent dans le code du projet alcasar en version 2.6.1 ; web page http://www.alcasar.net/

# This script is distributed under the Gnu General Public License (GPL)
#if [ ! $UID -eq 0 ]; then
#   echo &quot;Il vous faut les droit root pour lancer ce scripte&quot;
#   exit 1
#fi
args=${1}
SED=&quot;/bin/sed -i&quot;
DIR_CONF=&quot;/usr/local/etc/CTparental&quot;
FILE_CONF=&quot;$DIR_CONF/CTparental.conf&quot;
FILE_HCONF=&quot;$DIR_CONF/CThours.conf&quot;;
if [ ! -f $FILE_CONF ] ; then
mkdir -p $DIR_CONF
cat &lt;&lt; EOF &gt; $FILE_CONF
LASTUPDATE=0
DNSMASQ=BLACK
AUTOUPDATE=OFF
HOURSCONNECT=OFF
EOF

fi

tempDIR=&quot;/tmp/alcasar&quot;
RougeD=&quot;\033[1;31m&quot;
BleuD=&quot;\033[1;36m&quot;
VertD=&quot;\033[1;32m&quot;
Fcolor=&quot;\033[0m&quot;
GESTIONNAIREDESESSIONS=&quot; login gdm lightdm slim kdm xdm &quot;
FILEPAMTIMECONF=&quot;/etc/security/time.conf&quot;
DIRPAM=&quot;/etc/pam.d/&quot;
DAYS=( lundi mardi mercredi jeudi vendredi samedi dimanche )
DAYSPAM=( Mo Tu We Th Fr Sa Su )
DAYSCRON=( mon tue wed thu fri sat sun )
 
service --help 2&amp;&gt; /dev/null
if [ $? -eq 0 ] ; then
  CMDSERVICE=&quot;service &quot;
else
  CMDSERVICE=&quot;/etc/init.d/&quot;
fi
DNSMASQCONF=&quot;/etc/dnsmasq.conf&quot;
MAINCONFHTTPD=&quot;/etc/lighttpd/lighttpd.conf&quot;
DIRCONFENABLEDHTTPD=&quot;/etc/lighttpd/conf-enabled&quot;
CTPARENTALCONFHTTPD=$DIRCONFENABLEDHTTPD&quot;/10-CTparental.conf&quot;
RESOLVCONFMAIN=&quot;/etc/resolvconf&quot;
RESOLVDNSMASQ=&quot;$RESOLVCONFMAIN/run/interface/lo.dnsmasq&quot;
RESOLVCONFORDER=&quot;$RESOLVCONFMAIN/interface-order&quot;
DIRHTML=&quot;/var/www/CTparental&quot;
DIRadminHTML=&quot;/var/www/CTadmin&quot;
namservicednsmaq=&quot;dnsmasq&quot;
namservicehttpd=&quot;lighttpd&quot;
namservicecrond=&quot;cron&quot;
PASSWORDFILEHTTPD=&quot;/etc/lighttpd/lighttpd-htdigest.user&quot;
REALMADMINHTTPD=&quot;interface admin&quot;
CMDINSTALL=&quot;&quot;
yum help 2&amp;&gt; /dev/null
if [ $? -eq 0 ] ; then
   ## &quot;Distribution baser sur yum exemple readhat,fedora...&quot;
   CMDINSTALL=&quot;yum install &quot;
   CMDREMOVE=&quot;yum remove &quot;
   yum info openresolv 2&amp;&gt; /dev/null
   if [ $? -eq 0 ] ; then
	paquetresolv=&quot;openresolv&quot;
   else
        paquetresolv=&quot;resolvconf&quot;
   fi
fi
urpmi --help 2&amp;&gt; /dev/null
if [ $? -eq 1 ] ; then
   ## &quot;Distribution baser sur urpmi exemple mandriva...&quot;
   CMDINSTALL=&quot;urpmi -a --auto &quot;
   CMDREMOVE=&quot;urpme --auto &quot;
   namservicecrond=&quot;crond&quot;
   paquetresolv=&quot;openresolv&quot;
fi
apt-get -h 2&amp;&gt; /dev/null
if [ $? -eq 0 ] ; then
   ## &quot;Distribution baser sur apt-get exemple debian,ubuntu ...&quot;
   CMDINSTALL=&quot;apt-get -y --force-yes install &quot;
   CMDREMOVE=&quot;apt-get -y --force-yes remove --purge &quot;
   paquetresolv=&quot;resolvconf&quot; # pour compatibiliter debian 6
fi
if [ $args=&quot;-i&quot; ] ; then
   namserviceNetworkManager=&quot;network-manager&quot;
   if [ -f /etc/NetworkManager/NetworkManager.conf ];then
     $SED &quot;s/^dns=dnsmasq/#dns=dnsmasq/g&quot; /etc/NetworkManager/NetworkManager.conf
     $CMDSERVICE$namserviceNetworkManager restart
     sleep 5
   fi
fi
if [ $( echo $CMDINSTALL | wc -m ) -eq 1 ] ; then
   echo &quot;Aucun gestionner de paquet connu , n'a été détecté.&quot;
   exit 1
fi



interface_WAN=$(ip route | awk '/^default via/{print $5}') # suppose que la passerelle est la route par default

if [ -f $DIR_CONF/resolv.conf.sav ];then
   DNS1=$(cat $DIR_CONF/resolv.conf.sav | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f1)
   DNS2=$(cat $DIR_CONF/resolv.conf.sav | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f2)
else
   DNS1=$(cat /etc/resolv.conf | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f1)
   DNS2=$(cat /etc/resolv.conf | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f2)
fi

PRIVATE_IP=&quot;127.0.0.10&quot;
FILE_tmp=&quot;$tempDIR/filetmp.txt&quot;
BL_SERVER=&quot;dsi.ut-capitole.fr&quot;
CATEGORIES_ENABLED=&quot;$DIR_CONF/categories-enabled&quot;
BL_CATEGORIES_AVAILABLE=&quot;$DIR_CONF/bl-categories-available&quot;
WL_CATEGORIES_AVAILABLE=&quot;$DIR_CONF/wl-categories-available&quot;
DIR_DNS_FILTER_AVAILABLE=&quot;$DIR_CONF/dnsfilter-available&quot;
DIR_DNS_BLACKLISTE_ENABLED=&quot;$DIR_CONF/blackliste-enabled&quot;
DIR_DNS_WHITELIST_ENABLED=&quot;$DIR_CONF/whitelist-enabled&quot;
DNS_FILTER_OSSI=&quot;$DIR_CONF/blackliste-local&quot;
DREAB=&quot;$DIR_CONF/domaine-rehabiliter&quot; 
THISDAYS=$(expr $(date +%Y) \* 365 + $(date +%j))
MAXDAYSFORUPDATE=&quot;7&quot; # update tous les 7 jours
CHEMINCTPARENTLE=$(readlink -f $0)

initblenabled () {
   cat &lt;&lt; EOF &gt; $CATEGORIES_ENABLED
adult
agressif
dangerous_material
dating
drogue
gambling
hacking
malware
marketingware
mixed_adult
phishing
redirector
sect
strict_redirector
strong_redirector
tricheur
warez
ossi   
EOF
         

}

addadminhttpd() {
if [ ! -f $PASSWORDFILEHTTPD ] ; then
    echo -n &gt; $PASSWORDFILEHTTPD   
fi
chown root:$USERHTTPD $PASSWORDFILEHTTPD
chmod 640 $PASSWORDFILEHTTPD
USERADMINHTTPD=${1}
pass=${2}
hash=`echo -n &quot;$USERADMINHTTPD:$REALMADMINHTTPD:$pass&quot; | md5sum | cut -b -32`
ligne=$(echo &quot;$USERADMINHTTPD:$REALMADMINHTTPD:$hash&quot;)
$SED &quot;/^$USERADMINHTTPD:$REALMADMINHTTPD.*/d&quot; $PASSWORDFILEHTTPD
echo $ligne &gt;&gt; $PASSWORDFILEHTTPD
}

download() {
   rm -rf $tempDIR
   mkdir $tempDIR
   wget -P $tempDIR http://$BL_SERVER/blacklists/download/blacklists.tar.gz 2&gt;&amp;1 | cat
   if [ ! $? -eq 0 ]; then
      echo &quot;erreur lors du téléchargement processu interompu&quot;
      rm -rf $tempDIR
      exit 1
   fi
   tar -xzf $tempDIR/blacklists.tar.gz -C $tempDIR
   if [ ! $? -eq 0 ]; then
      echo &quot;erreur d'extraction de l'archive processu interompu&quot;
      exit 1
   fi
   rm -rf $DIR_DNS_FILTER_AVAILABLE/
   mkdir $DIR_DNS_FILTER_AVAILABLE
}
autoupdate() {
        LASTUPDATEDAY=`grep LASTUPDATE= $FILE_CONF | cut -d&quot;=&quot; -f2`
        LASTUPDATEDAY=${LASTUPDATEDAY:=0}
        DIFFDAY=$(expr $THISDAYS - $LASTUPDATEDAY)
	if [ $DIFFDAY -ge $MAXDAYSFORUPDATE ] ; then
		download
		adapt
		catChoice
		dnsmasqon
                $SED &quot;s?^LASTUPDATE.*?LASTUPDATE=$THISDAYS=`date +%d-%m-%Y\ %T`?g&quot; $FILE_CONF
		exit 0
	fi
}
autoupdateon() {
$SED &quot;s?^AUTOUPDATE.*?AUTOUPDATE=ON?g&quot; $FILE_CONF
echo &quot;*/10 * * * * root $CHEMINCTPARENTLE -aup&quot; &gt; /etc/cron.d/CTparental-autoupdate
$CMDSERVICE$namservicecrond restart
}

autoupdateoff() {
$SED &quot;s?^AUTOUPDATE.*?AUTOUPDATE=OFF?g&quot; $FILE_CONF
rm -f /etc/cron.d/CTparental-autoupdate
$CMDSERVICE$namservicecrond restart
}
adapt() {
   dnsmasqoff
   if [ ! -f $DNS_FILTER_OSSI ] ; then
            echo &gt; $DNS_FILTER_OSSI
   fi

   if [ -d $tempDIR  ] ; then
	  CATEGORIES_AVAILABLE=$tempDIR/categories_available
	  ls -FR $tempDIR/blacklists | grep '/$' | sed -e &quot;s/\///g&quot; &gt; $CATEGORIES_AVAILABLE
          echo -n &gt; $BL_CATEGORIES_AVAILABLE
          echo -n &gt; $WL_CATEGORIES_AVAILABLE
          if [ ! -f $DIR_DNS_FILTER_AVAILABLE/ossi.conf ] ; then
		echo &gt; $DIR_DNS_FILTER_AVAILABLE/ossi.conf
	  fi
	  for categorie in `cat $CATEGORIES_AVAILABLE` # creation des deux fichiers de categories (BL / WL)
	  do
		if [ -e $tempDIR/blacklists/$categorie/usage ]
		then
			is_whitelist=`grep white $tempDIR/blacklists/$categorie/usage|wc -l`
		else
			is_whitelist=0 # ou si le fichier 'usage' n'existe pas, on considère que la catégorie est une BL
		fi
		if [ $is_whitelist -eq &quot;0&quot; ]
		then
			echo &quot;$categorie&quot; &gt;&gt; $BL_CATEGORIES_AVAILABLE
		else
			echo &quot;$categorie&quot; &gt;&gt; $WL_CATEGORIES_AVAILABLE
		fi
	   done
         echo -n &quot;Toulouse Black and White List migration process. Please wait : &quot;
         for DOMAINE in `cat  $CATEGORIES_AVAILABLE`  # pour chaque catégorie
         do
            echo -n &quot;.&quot;
            # suppression des @IP, de caractères acccentués et des lignes commentées ou vide
            egrep  -v &quot;([0-9]{1,3}\.){3}[0-9]{1,3}&quot; $tempDIR/blacklists/$DOMAINE/domains &gt; $FILE_tmp
            $SED &quot;/[äâëêïîöôüû]/d&quot; $FILE_tmp
            $SED &quot;/^#.*/d&quot; $FILE_tmp
            $SED &quot;/^$/d&quot; $FILE_tmp
            $SED &quot;s/\.\{2,1000\}/\./g&quot; $FILE_tmp # supprime les suite de &quot;.&quot; exemple: address=/fucking-big-tits..com/127.0.0.10 devient address=/fucking-big-tits.com/127.0.0.10
	    is_blacklist=`grep $DOMAINE $BL_CATEGORIES_AVAILABLE |wc -l`
	    if [ $is_blacklist -ge &quot;1&quot; ] ; then
            	$SED &quot;s?.*?address=/&amp;/$PRIVATE_IP?g&quot; $FILE_tmp  # Mise en forme dnsmasq des listes noires
		mv $FILE_tmp $DIR_DNS_FILTER_AVAILABLE/$DOMAINE.conf  
            else
		$SED &quot;s?.*?server=/&amp;/#?g&quot; $FILE_tmp  # Mise en forme dnsmasq des listes blanches
		mv $FILE_tmp $DIR_DNS_FILTER_AVAILABLE/$DOMAINE.conf
            fi
         done
   else
         mkdir   $tempDIR
         echo -n &quot;.&quot;
 	 # suppression des @IP, de caractères acccentués et des lignes commentées ou vide
         egrep  -v &quot;([0-9]{1,3}\.){3}[0-9]{1,3}&quot; $DNS_FILTER_OSSI  &gt; $FILE_tmp
         $SED &quot;/[äâëêïîöôüû]/d&quot; $FILE_tmp 
         $SED &quot;/^#.*/d&quot; $FILE_tmp 
         $SED &quot;/^$/d&quot; $FILE_tmp 
         $SED &quot;s/\.\{2,1000\}/\./g&quot; $FILE_tmp # supprime les suite de &quot;.&quot; exemple: address=/fucking-big-tits..com/127.0.0.10 devient address=/fucking-big-tits.com/127.0.0.10
         $SED &quot;s?.*?address=/&amp;/$PRIVATE_IP?g&quot; $FILE_tmp  # Mise en forme dnsmasq
         mv $FILE_tmp $DIR_DNS_FILTER_AVAILABLE/ossi.conf
   fi     
   echo
   rm -rf $tempDIR
}
catChoice() {
#   echo &quot;catChoice&quot;
   rm -rf $DIR_DNS_BLACKLISTE_ENABLED/
   mkdir $DIR_DNS_BLACKLISTE_ENABLED
   rm -rf  $DIR_DNS_WHITELIST_ENABLED/
   mkdir  $DIR_DNS_WHITELIST_ENABLED
     
      for CATEGORIE in `cat $CATEGORIES_ENABLED` # on affecte les catégories dnsmasq
      do
	 is_blacklist=`grep $CATEGORIE $BL_CATEGORIES_AVAILABLE |wc -l`
	 if [ $is_blacklist -ge &quot;1&quot; ] ; then
		cp $DIR_DNS_FILTER_AVAILABLE/$CATEGORIE.conf $DIR_DNS_BLACKLISTE_ENABLED/
         else
		cp $DIR_DNS_FILTER_AVAILABLE/$CATEGORIE.conf $DIR_DNS_WHITELIST_ENABLED/
     	 fi     
      done
      cp $DIR_DNS_FILTER_AVAILABLE/ossi.conf $DIR_DNS_BLACKLISTE_ENABLED/
#      echo &quot;fincatChoice&quot;
      reabdomaine
}

reabdomaine () {
if [ ! -f $DREAB ] ; then
cat &lt;&lt; EOF &gt; $DREAB
   www.google.com
   www.google.fr
EOF
fi
if [ ! -f $DIR_DNS_BLACKLISTE_ENABLED/ossi.conf ] ; then
	echo &gt; $DIR_DNS_BLACKLISTE_ENABLED/ossi.conf
fi
echo
echo -n &quot;Application de la liste blanche (domaine réabiliter):&quot;
for CATEGORIE in `cat  $CATEGORIES_ENABLED  `  # pour chaque catégorie
do 
	is_blacklist=`grep $CATEGORIE $BL_CATEGORIES_AVAILABLE |wc -l`
	if [ $is_blacklist -ge &quot;1&quot; ] ; then
		echo -n &quot;.&quot;
		for DOMAINE in `cat  $DREAB`
		do
		    $SED &quot;/$DOMAINE/d&quot; $DIR_DNS_BLACKLISTE_ENABLED/$CATEGORIE.conf
		done
        fi
done
echo -n &quot;.&quot;
cat $DREAB | sed -e &quot;s? ??g&quot; | sed -e &quot;s?.*?server=/&amp;/#?g&quot; &gt;  $DIR_DNS_WHITELIST_ENABLED/whiteliste.ossi.conf
echo
}

dnsmasqon () {
   categorie1=`sed -n &quot;1 p&quot; $CATEGORIES_ENABLED` # on considaire que si la 1 er categorie activer est un blackliste on fonctionne par blackliste.
   is_blacklist=`grep $categorie1 $BL_CATEGORIES_AVAILABLE |wc -l`
   if [ $is_blacklist -ge &quot;1&quot; ] ; then
   $SED &quot;s?^DNSMASQ.*?DNSMASQ=BLACK?g&quot; $FILE_CONF
   cat &lt;&lt; EOF &gt; $DNSMASQCONF
         # Configuration file for &quot;dnsmasq with blackhole&quot;
   # Inclusion de la blacklist &lt;domains&gt; de Toulouse dans la configuration
   conf-dir=$DIR_DNS_BLACKLISTE_ENABLED
   # conf-file=$DIR_DEST_ETC/alcasar-dns-name   # zone de definition de noms DNS locaux
   no-dhcp-interface=$interface_WAN
   bind-interfaces
   cache-size=1024
   domain-needed
   expand-hosts
   bogus-priv
   server=$DNS1
   server=$DNS2
   
EOF
$CMDSERVICE$namservicednsmaq restart
else
  dnsmasqwhitelistonly
fi
}
dnsmasqoff () {
   $SED &quot;s?^DNSMASQ.*?DNSMASQ=OFF?g&quot; $FILE_CONF
   cat &lt;&lt; EOF &gt; $DNSMASQCONF
         # Configuration file for &quot;dnsmasq with blackhole&quot;
   # Inclusion de la blacklist &lt;domains&gt; de Toulouse dans la configuration
   # conf-dir=$DIR_DNS_BLACKLISTE_ENABLED
   # conf-file=$DIR_DEST_ETC/alcasar-dns-name   # zone de definition de noms DNS locaux
   no-dhcp-interface=$interface_WAN
   bind-interfaces
   cache-size=0
   domain-needed
   expand-hosts
   bogus-priv
   server=$DNS1
   server=$DNS2
   
EOF

$CMDSERVICE$namservicednsmaq restart
}
dnsmasqwhitelistonly  () {
   $SED &quot;s?^DNSMASQ.*?DNSMASQ=WHITE?g&quot; $FILE_CONF
   cat &lt;&lt; EOF &gt; $DNSMASQCONF
         # Configuration file for &quot;dnsmasq with blackhole&quot;
   # Inclusion de la blacklist &lt;domains&gt; de Toulouse dans la configuration
   conf-dir=$DIR_DNS_WHITELIST_ENABLED
   # conf-file=$DIR_DEST_ETC/alcasar-dns-name   # zone de definition de noms DNS locaux
   no-dhcp-interface=$interface_WAN
   bind-interfaces
   cache-size=0
   domain-needed
   expand-hosts
   bogus-priv
   server=$DNS1
   server=$DNS2
   address=/#/$PRIVATE_IP #redirige vers $PRIVATE_IP pour tous ce qui n'a pas étais resolut dans les listes blanches
EOF

$CMDSERVICE$namservicednsmaq restart
}


FoncHTTPDCONF () {
$CMDSERVICE$namservicehttpd stop
rm -rf $DIRHTML/*
mkdir -v $DIRHTML
if [ ! -z $DIRhtmlPersonaliser ];then
   cp -r $DIRhtmlPersonaliser/* $DIRHTML
else
s=&quot;span&quot;
st=&quot;style&quot;
c=&quot;$c&quot;
cab=&quot;;\&quot;&gt;&quot;

cat &lt;&lt; EOF &gt; $DIRHTML/index.html
 &lt;HTML&gt;
&lt;HEAD&gt;
   &lt;META HTTP-EQUIV=&quot;CONTENT-TYPE&quot; CONTENT=&quot;text/html; charset=utf-8&quot;&gt;
   &lt;TITLE&gt;danger&lt;/TITLE&gt;
&lt;/HEAD&gt;
&lt;BODY LANG=&quot;fr-FR&quot; DIR=&quot;LTR&quot;&gt;
&lt;CENTER&gt;
&lt;img alt=&quot;Site dangereux pour des mineurs&quot;
  HEIGHT=&quot;600&quot;   
  src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKIAAACgCAYAAACPOrcQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz
AAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAuGSURB
VHic7d17jFTlGcfx7zMol7KriRpF3Sii3FyooE1EWuNaFrFeWjXWqEBCmyYtrSa2iX9g+wcx9RZN
kya29i+1ETWKMSZI1AiClyI2KiJyFa8BBC9EuyAXhad/vDO7s8PszpyZc857zrzPJ9nsZvac931g
fnnf2Zlz3ldUFVNBZCQwDhhf/H480A60Fb+X/9xWPGsP0FP2vfznr4AtwGZgC6p70/qn5IUEHUSR
EcAFwGRc6Epfpybc83ZcKEtf64DXUd2XcL+ZFVYQRYYB04CLi1/TgKFea+pzEFgNrCh+rUb1gN+S
0tP6QRQ5B7gSF7zpwHC/BdVtP7AKF8olqK71XE+iWjOIIh3AjcBcYJLnauLyHvAI8Biq23wXE7fW
CaJIO3AtMAfoAgpe60nOYWAlsAh4CtUev+XEI/9BdFPvrcA1wAjP1aRtH/A0cG/ep+78BlFkOnAb
cLnvUjJiKXAnqqt8F9KI/AVRZBawALjIdykZ9TJwF6ov+C4kivwEUeQq4C/Aeb5LyYm3gL+i+ozv
QuqR/SCKTADuB2b4LiWnlgM3obrJdyGDye5fliIjEbkbeBcLYTNmAO8icnfxo8tMyuaIKPJL4G9A
h+9SWsw24E+oLvZdSKVsBVHkLOABoNt3KS1uGTAf1a2+CynJztQsMhtYg4UwDd3AGkTm+C6kxH8Q
RX6AyIO4Twraah1uYtMGPILIw1l47eh3ahaZDDwBTPRXhMFdinY9qu/4KsDfiCjyW+C/WAizYDyw
GpGbfBWQ/ogoMhR4EJidbsemTouBuWlfC5luEEWOwX1Ib+8LZtsrwM9R/SatDtMLosgo4DlgSjod
miatAy5FdUcanaXzGlFkHPA6FsI8mQysKn7EmrjkgyhyPvAfYHTifZm4nQ68hsi0pDtKNogi3cBL
wAmJ9mOSdDywvPhcJia514huJFwOeH+z1MRiLzAD1TeSaDyZIIqcDbwKHBd/48aj3cCFqG6Iu+H4
gyhyOu41YdI3qRs/tgM/RvWTOBuN9zWiyInAi1gIW9mpwIvF5zo28QXRvVn9PDA2tjZNVo0Fni8+
57GIJ4giAjwJTI2lPZMHU4Eni8990+IaEf8MzIqpLZMfs3DPfdOa/2NFpAt3xe+QGOox+XMI6EZ1
ZTONNBdEkZOAd4BRzRRhcm8nMAXVXY020PjULFIAHsdCaFwGHi9moiHNvEZciFvqzRhwWVjY6MmN
Tc0iF+JWpPJ/z4vJksNAF6qvRj0xehBFjsbdbdcZtTMThPXAVFS/i3JSIyPaH7EQmoF14jISSbQR
UeQ0YAN2RY0Z3F7gbFQ/rfeEqCPi37EQmtpG4rJSt/pHRJHLgWej12QCdgWqS+s5sL4guv1I1gNn
NFeXCcxHQGc9+8fUOzXPx0JoojsDl52aao+IIsOBD4GTmy7LhOgzYAyq+wc7qJ4R8TdYCE3jTsZl
aFCDj4hueZAPsAUzTXO2AWeienCgA2qNiPOwEJrmdeCyNKCBR0SRo4D3sRvjTTw+Bsai+n21Xw42
Is7BQmjiMxqXqaoGC+IfYi/FhG7ATFWfmkU6cbthGhO3Saiur3xwoBFxXrK1mIDNq/bgkSOiyBDc
n9t2C4BJwk6gA9VD5Q9WGxEvxUJokjMKl7F+qgVxXuKlmNDNq3yg/9QschywAxiWWkkmRAeAU1Dd
XXqgckT8BRZCk7xhuKz1qgyirfZv0tIva5VT83bglJQLMmHagWrv8oV9QXSrx2+M3Nwtt8Dw4XEV
Z/Jm1y546KFGz55Y2tC8PIjzgX9Gburrr+HYYxstxOTd2rUwpeFdS36P6gPQ/zXiT5suyphoejPn
gugWW+zyVIwJV1dpoc/SiPhDbC8Uk74TcNnrDeK5/moxgTsX+oKYyn5rxlQxASyIxr9+QbRd5I0v
EwEKxVtGx3guxoRrDCJDC8BZ2I4Axp8hwFkFbFo2/k0sAON9V2GCN74AxLq5nzENOLEAtPuuwgSv
3YJosqC9ALT5rsIEr81GRJMFNjWbTLCp2WSCTc0mE9ptU0eTCQWgx3cRJng9BWCP7ypM8PbYiGiy
oMeCaLLApmaTCTY1m0ywqdlkQk8B+Nx3FSZ4nxeAzb6rMMHbXKCRpeiMidfGArAVOFTrSGMScgjY
WihuXfqh72pMsD5E9WDpogebno0vG6FvyZFNHgsxYdsEFkTjX78gvu2xEBO2t6EviO8CX/qrxQTq
S1z2ikF0Wwus9FePCdTKYvb67SrwkqdiTLh6M1cexBUeCjFh681cXxDdDkA7fFRjgrSjtOsUwFEV
v1wBzI7U3IIFMMw2NA3WF180ema/GbhyU8hfAQ82XJQx9fs1qr2b+NnG4caHGhuHu18sSbkoE54l
5SGEIzcOB3g4nVpMwB6ufKD/1AwgMgTYBoxKpSQTmp1AB6r9roE9ckR0ByxKqSgTnkWVIYRqIyKA
SCfwXgpFmfBMQnV95YPVVwNzB76ZdEUmOG9WCyEMFETnHwkVY8I1YKaqT80AIkcB7wOjEynJhOZj
YCyq31f75cAjojvhrmRqMgG6a6AQwmAjIlDcufQDoCP+ukxAtgFnFu8YrWrwpYvdiffEXJQJzz2D
hRBqjYgAIsNx9z2fHF9dJiCfAWNQ3T/YQbUXc3cN3BdTUSY899UKIdQzIgKIjADWA2c0X5cJyEdA
J6r7ah1Y3/YWrqGbmyzKhOfmekII9QYRQHUp8EyjFZngPFPMTF3qm5p7j5bTgA3AyOh1mYDsBc5G
9dN6T4i285Rr+PaIRZnw3B4lhBB1RAQQORpYA3RGO9EEYj0wFdXvopwUfS8+18F84HDkc02rOwzM
jxpCaCSIAKqvAnc0dK5pZXcUsxFZ9Km590wpAMuAixtrwLSYFUA3qg3NlI0HEUDkJOAd7P6W0O0E
pqC6q9EGmtuv2XV8A7YYfMgOATc0E0JoNogAqiuBhU23Y/JqYTEDTWluau5tRQR4DpjVfGMmR14A
fkYMIYoniAAix+AW+5waT4Mm49YAXaj+L47G4gsigMiJwGvA2PgaNRn0PvATVGPbx7H514jlXGEz
ge2xtmuyZDswM84QQtxBBFD9BLgE2F3rUJM7u4FLis9xrOIPIoDqBuAy3FUYpjXsBS4rPrexSyaI
AKpvAFcB3ybWh0nLt8BVxec0EfH+sVK1BzkfeBY4IdmOTEK+Aq5AdXWSnSQfRACRcbj3nEYn35mJ
0SfApeWLricluam5nOoW4ALc59ImH9YB09MIIaQVRADVncBFwPLU+jSNegW4ENXUtjtJL4hA8V34
y4BHU+3XRLEY9xbNN2l2mm4QwS1jojoH+B1Q88Zrk5oDuNs/r0P1QNqdp/PHyoC9y2TgCWCivyIM
sBm4HlVvr+HTHxHLqa4DfgQ8VOtQk5h/A+f5DCH4HhHLicwG/gW0+S4lEHtwNzplYuF+vyNiOdVH
cZeQLfNdSgCW4W75zEQIIUtBBFDdiupM4Drc4o4mXtuA61CdiepW38WUy1YQS1QXAxNwi4RGvkfW
HOE73P/lhOL/beZk5zXiQEQmAPcDM3yXklPLgZvS+oSkUdkcEcupbkK1G7gaeMt3OTnyFnA1qt1Z
DyHkYUSsJDILWID7uNAc6WXcCv4v+C4kivwFsURkOnAbcLnvUjJiKXAnqqt8F9KI/AaxROQc4Fbg
GmCE52rStg94GrgX1bW+i2lG/oNYItIOXAvMAbrIw+vfxhzG3ba7CHgK1R6/5cSjdYJYTqQDuBGY
C0zyXE1c3gMeAR5DteXeY23NIJZzU/eVuFXLpgPD/RZUt/3AKtwqW0vyPvXW0vpBLCcyDJiGC+XF
xZ+Heq2pz0FgNS54K4DVPi7H8iWsIFZy+8dcAEwGxpd9nZpwz9txl16VvtYBr9e7FUQrCjuIAxEZ
CYzDhXIccDzQjrsyqL3i59LVQnuAnrLv5T9/BWzBhW4Lqna/d4X/A/bydTBs1YRqAAAAAElFTkSu
QmCC&quot; /&gt;
&lt;/CENTER&gt;
&lt;/BODY&gt;
&lt;/HTML&gt;
EOF

fi
## GENERATION

ln -s  $DIRHTML/index.html $DIRHTML/err404.html
USERHTTPD=$(cat /etc/passwd | grep /var/www | cut -d&quot;:&quot; -f1)
GROUPHTTPD=$(cat /etc/group | grep $USERHTTPD | cut -d&quot;:&quot; -f1)

cat &lt;&lt; EOF &gt; $MAINCONFHTTPD
server.modules = (
&quot;mod_access&quot;,
&quot;mod_alias&quot;,
&quot;mod_redirect&quot;,
&quot;mod_auth&quot;,	#pour insteface admin
&quot;mod_fastcgi&quot;,  #pour insteface admin (activation du php)
# &quot;mod_rewrite&quot;,
)
auth.debug                 = 0
auth.backend               = &quot;htdigest&quot; 
auth.backend.htdigest.userfile = &quot;$PASSWORDFILEHTTPD&quot; 

server.document-root = &quot;/var/www&quot;
server.upload-dirs = ( &quot;/var/cache/lighttpd/uploads&quot; )
server.errorlog = &quot;/var/log/lighttpd/error.log&quot;
server.pid-file = &quot;/var/run/lighttpd.pid&quot;
server.username = &quot;$USERHTTPD&quot;
server.groupname = &quot;$GROUPHTTPD&quot;
server.port = 80
server.bind = &quot;127.0.0.1&quot;


index-file.names = ( &quot;index.php&quot;, &quot;index.html&quot; )
url.access-deny = ( &quot;~&quot;, &quot;.inc&quot; )
static-file.exclude-extensions = (&quot;.php&quot;, &quot;.pl&quot;, &quot;.fcgi&quot; )

compress.cache-dir = &quot;/var/cache/lighttpd/compress/&quot;
compress.filetype = ( &quot;text/css&quot;, &quot;text/html&quot;, &quot;text/plain&quot; )

server.tag = &quot;&quot;

include_shell &quot;/usr/share/lighttpd/create-mime.assign.pl&quot;
include_shell &quot;/usr/share/lighttpd/include-conf-enabled.pl&quot;
EOF

mkdir -p /usr/share/lighttpd/

if [ ! -f /usr/share/lighttpd/create-mime.assign.pl ];then
cat &lt;&lt; EOF &gt; /usr/share/lighttpd/create-mime.assign.pl
#!/usr/bin/perl -w
use strict;
open MIMETYPES, &quot;/etc/mime.types&quot; or exit;
print &quot;mimetype.assign = (\n&quot;;
my %extensions;
while(&lt;MIMETYPES&gt;) {
  chomp;
  s/\#.*//;
  next if /^\w*$/;
  if(/^([a-z0-9\/+-.]+)\s+((?:[a-z0-9.+-]+[ ]?)+)$/) {
    foreach(split / /, \$2) {
      # mime.types can have same extension for different
      # mime types
      next if \$extensions{\$_};
      \$extensions{\$_} = 1;
      print &quot;\&quot;.\$_\&quot; =&gt; \&quot;\$1\&quot;,\n&quot;;
    }
  }
}
print &quot;)\n&quot;;
EOF
chmod +x /usr/share/lighttpd/create-mime.assign.pl
fi


if [ ! -f /usr/share/lighttpd/include-conf-enabled.pl ];then
cat &lt;&lt; EOF &gt; /usr/share/lighttpd/include-conf-enabled.pl
#!/usr/bin/perl -wl

use strict;
use File::Glob ':glob';

my \$confdir = shift || &quot;/etc/lighttpd/&quot;;
my \$enabled = &quot;conf-enabled/*.conf&quot;;

chdir(\$confdir);
my @files = bsd_glob(\$enabled);

for my \$file (@files)
{
        print &quot;include \&quot;\$file\&quot;&quot;;
}
EOF
chmod +x /usr/share/lighttpd/include-conf-enabled.pl 

fi

mkdir -p $DIRCONFENABLEDHTTPD
mkdir -p $DIRadminHTML
cp -rf CTadmin/* $DIRadminHTML/
clear 
echo &quot;Entrer le login pour l'interface d'administration :&quot;
while (true); do
	 read loginhttp
	 case $loginhttp in
		 * )
		 echo &quot;login:  $loginhttp&quot; &gt; /root/passwordCTadmin
		 break
		 ;;
         esac
      done
clear
      echo &quot;Entrer le mot de $loginhttp :&quot;
      while (true); do
	 read password
	 case $password in
		 * )
		 echo &quot;password: $password&quot; &gt;&gt; /root/passwordCTadmin
                 addadminhttpd &quot;$loginhttp&quot; &quot;$password&quot;
		 break
		 ;;
         esac
      done
chmod 700 /root/passwordCTadmin
chown root:root /root/passwordCTadmin
cat &lt;&lt; EOF &gt; $CTPARENTALCONFHTTPD

fastcgi.server = (
    &quot;.php&quot; =&gt; (
      &quot;localhost&quot; =&gt; ( 
        &quot;bin-path&quot; =&gt; &quot;/usr/bin/php-cgi&quot;,
        &quot;socket&quot; =&gt; &quot;/run/lighttpd/php-fastcgi.sock&quot;,
        &quot;max-procs&quot; =&gt; 4, # default value
        &quot;bin-environment&quot; =&gt; (
          &quot;PHP_FCGI_CHILDREN&quot; =&gt; &quot;1&quot;, # default value
        ),
        &quot;broken-scriptfilename&quot; =&gt; &quot;enable&quot;
      ))
)
  fastcgi.map-extensions     = ( &quot;.php3&quot; =&gt; &quot;.php&quot;,
                               &quot;.php4&quot; =&gt; &quot;.php&quot;,
                               &quot;.php5&quot; =&gt; &quot;.php&quot;,
                               &quot;.phps&quot; =&gt; &quot;.php&quot;,
                               &quot;.phtml&quot; =&gt; &quot;.php&quot; )

\$HTTP[&quot;url&quot;] =~ &quot;.*CTadmin.*&quot; {
  auth.require = ( &quot;&quot; =&gt;
                   (
                     &quot;method&quot;  =&gt; &quot;digest&quot;,
                     &quot;realm&quot;   =&gt; &quot;$REALMADMINHTTPD&quot;,
                     &quot;require&quot; =&gt; &quot;user=$USERADMINHTTPD&quot; 
                   )
                 )

}
\$SERVER[&quot;socket&quot;] == &quot;$PRIVATE_IP:80&quot; {
server.document-root = &quot;$DIRHTML&quot;
server.errorfile-prefix = &quot;$DIRHTML/err&quot; 
#ssl.engine = &quot;enable&quot; 
#ssl.pemfile = &quot;/etc/lighttpd/ssl/$PRIVATE_IP.pem&quot; 
}

EOF
chown root:$GROUPHTTPD $DREAB
chmod 660 $DREAB
chown root:$GROUPHTTPD $DNS_FILTER_OSSI
chmod 660 $DNS_FILTER_OSSI
chown root:$GROUPHTTPD $CATEGORIES_ENABLED
chmod 660 $CATEGORIES_ENABLED
chmod 660 /etc/sudoers
is_sudo_ok=`grep $USERHTTPD /etc/sudoers |wc -l`
         if [ $is_sudo_ok -ge &quot;1&quot; ] ; then
		$SED &quot;s?^$USERHTTPD.*?$USERHTTPD ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh -tlu,/usr/local/bin/CTparental.sh -trf,/usr/local/bin/CTparental.sh -dble,/usr/local/bin/CTparental.sh -ubl,/usr/local/bin/CTparental.sh -dl,/usr/local/bin/CTparental.sh -on,/usr/local/bin/CTparental.sh -off,/usr/local/bin/CTparental.sh -aupon,/usr/local/bin/CTparental.sh -aupoff?g&quot; /etc/sudoers
         else
         	echo &quot;$USERHTTPD ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh -tlu,/usr/local/bin/CTparental.sh -trf,/usr/local/bin/CTparental.sh -dble,/usr/local/bin/CTparental.sh -ubl,/usr/local/bin/CTparental.sh -dl,/usr/local/bin/CTparental.sh -on,/usr/local/bin/CTparental.sh -off,/usr/local/bin/CTparental.sh -aupon,/usr/local/bin/CTparental.sh -aupoff&quot; &gt;&gt; /etc/sudoers
         fi
chmod 440 /etc/sudoers
if [ ! -f $FILE_HCONF ] ; then 
	echo &gt; $FILE_HCONF 
fi
chown root:$GROUPHTTPD $FILE_HCONF
chmod 660 $FILE_HCONF
$CMDSERVICE$namservicehttpd start
}

install () {
      if [ $(netstat -anlp | grep -w LISTEN | grep &quot;:80&quot; | cut -d&quot;/&quot; -f2 | wc -l ) -gt 0 ] ; then
	   echo &quot;le Serveur Web $(netstat -anlp | grep -w LISTEN | grep &quot;:80&quot; | cut -d&quot;/&quot; -f2 | sort -u ) tourne deja sur ce pc&quot;
	   echo &quot;veuiller le désinstaler avant d'installer le control parental.&quot;
	   exit 1
      fi
      mkdir $tempDIR
      mkdir -p $DIR_CONF
      initblenabled
      cat /etc/resolv.conf &gt; $DIR_CONF/resolv.conf.sav
      $CMDINSTALL dnsmasq
      $CMDINSTALL lighttpd
      $CMDINSTALL php5-cgi
      if [ ! -f blacklists.tar.gz ]
      then
         download
      else
         tar -xzf blacklists.tar.gz -C $tempDIR
         if [ ! $? -eq 0 ]; then
            echo &quot;erreur d'extraction de l'archive processu interompu&quot;
            exit 1
         fi
         rm -rf $DIR_DNS_FILTER_AVAILABLE/
         mkdir $DIR_DNS_FILTER_AVAILABLE
      fi
      adapt
      catChoice
      dnsmasqon
      $SED &quot;s?^LASTUPDATE.*?LASTUPDATE=$THISDAYS=`date +%d-%m-%Y\ %T`?g&quot; $FILE_CONF
      $CMDINSTALL $paquetresolv
      confresolvconf

      FoncHTTPDCONF
}

confresolvconf () {
echo &quot;nameserver 127.0.0.1&quot; &gt; $RESOLVDNSMASQ
if [ ! -f $RESOLVCONFORDER ];then
cat &lt;&lt; EOF &gt; $RESOLVCONFORDER
# interface-order(5)
lo.inet*
lo.dnsmasq
lo.pdnsd
lo.!(pdns|pdns-recursor)
lo
tun*
tap*
hso*
em+([0-9])?[+([0-9]))*
p+([0-9]p+([0-9])?(_+([0-9]))*
eth*
ath*
wlan*
ppp*
*
EOF
fi
resolvconf -u
}

uninstall () {
   rm -f /etc/cron.d/CTparental*
   $CMDSERVICE$namservicecrond restart
   $CMDSERVICE$namservicehttpd stop
   rm -f /var/www/index.lighttpd.html
   rm -rf $tempDIR
   rm -rf $DIR_CONF
   rm -rf $DIRHTML

   if [ -f /etc/NetworkManager/NetworkManager.conf ];then
	$SED &quot;s/^#dns=dnsmasq/dns=dnsmasq/g&quot; /etc/NetworkManager/NetworkManager.conf
	$CMDSERVICE$namserviceNetworkManager restart
  	sleep 5
   fi
   rm -rf /usr/share/lighttpd/*
   rm -f $CTPARENTALCONFHTTPD
   rm -rf $DIRadminHTML
   rm -f $RESOLVDNSMASQ
   resolvconf -u

   $CMDREMOVE lighttpd
   $CMDREMOVE dnsmasq 
   $CMDREMOVE $paquetresolv
}

choiblenabled () {
echo -n &gt; $CATEGORIES_ENABLED
clear
echo &quot;Voulez Filtre par Blackliste ou Whiteliste :&quot;
echo -n &quot; B/W :&quot;
while (true); do
         read choi
         case $choi in
         B | b )
         echo &quot;Vous aller maintenant choisir les \&quot;Black listes\&quot; a appliquer.&quot;
		for CATEGORIE in `cat  $BL_CATEGORIES_AVAILABLE`  # pour chaque catégorie
		do   
		      clear
		      echo &quot;Voulez vous activer la categorie :&quot;
		      echo -n &quot;$CATEGORIE  O/N :&quot;
		      while (true); do
			 read choi
			 case $choi in
			 O | o )
			 echo $CATEGORIE &gt;&gt; $CATEGORIES_ENABLED
			 break
			 ;;
			 N | n )
			 break
			 ;;
		      esac
		      done
		done
         break
         ;;
         W | w )
         echo &quot;Vous aller maintenant choisir les \&quot;White listes\&quot; a appliquer.&quot;
		for CATEGORIE in `cat  $WL_CATEGORIES_AVAILABLE`  # pour chaque catégorie
		do   
		      clear
		      echo &quot;Voulez vous activer la categorie :&quot;
		      echo -n &quot;$CATEGORIE  O/N :&quot;
		      while (true); do
			 read choi
			 case $choi in
			 O | o )
			 echo $CATEGORIE &gt;&gt; $CATEGORIES_ENABLED
			 break
			 ;;
			 N | n )
			 break
			 ;;
		      esac
		      done
		done
         break
         ;;
      esac
done
}


errortime1 () {
clear
echo -e &quot;L'heure de debut doit ètre strictement inférieur a l'heure de fin: $RougeD$input$Fcolor &quot;
echo &quot;exemple: 08h00 a 24h00 ou 08h00 a 12h00 et 14h00 a 24h00&quot;
echo -e -n &quot;$RougeD$PCUSER$Fcolor est autorisés à se connecter le $BleuD${DAYS[$NumDAY]}$Fcolor de:&quot;
}
errortime2 () {
clear
echo -e &quot;Mauvaise syntaxe: $RougeD$input$Fcolor &quot;
echo &quot;exemple: 08h00 a 24h00 ou 08h00 a 12h00 et 14h00 a 24h00&quot;
echo -e -n &quot;$RougeD$PCUSER$Fcolor est autorisés à se connecter le $BleuD${DAYS[$NumDAY]}$Fcolor de:&quot;
}

pause () {   # fonction pause pour debugage
      choi=&quot;&quot;
      echo  &quot;pour continuer  press Q :&quot;
      while (true); do
         read choi
         case $choi in
         Q | q )
         break
         ;;
      esac
      done
}
activetimelogin () {
   TESTGESTIONNAIRE=&quot;&quot;
   for FILE in `echo $GESTIONNAIREDESESSIONS`
   do
      if [ -f $DIRPAM$FILE ];then
         if [ $(cat $DIRPAM$FILE | grep -c &quot;account required pam_time.so&quot;) -eq 0  ] ; then
            echo &quot;account required pam_time.so&quot; &gt;&gt; $DIRPAM$FILE
         fi
         TESTGESTIONNAIRE=$TESTGESTIONNAIRE\ $FILE
      fi
   done
   if [ $( echo $TESTGESTIONNAIRE | wc -m ) -eq 1 ] ; then
      echo &quot;Aucun gestionner de session connu , n'a été détecté.&quot;
      echo &quot; il est donc impossible d'activer le controle horaires des connections&quot;
      desactivetimelogin
      exit 1
   fi
   
   if [ ! -f $FILEPAMTIMECONF.old ] ; then
   cp $FILEPAMTIMECONF $FILEPAMTIMECONF.old
   fi
   echo &quot;*;*;root;Al0000-2400&quot; &gt; $FILEPAMTIMECONF
   for NumDAY in 0 1 2 3 4 5 6
   do
   echo  &gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
   done
   for PCUSER in `cat /etc/passwd | cut -d&quot;:&quot; -f1,3| grep -E [1-9][0-9][0-9][0-9] | cut -d &quot;:&quot; -f1`
   do
   $SED &quot;/^$PCUSER=/d&quot; $FILE_HCONF
   echo -e -n &quot;$PCUSER est autoriser a ce connecter 7j/7 24h/24 O/N?&quot; 
   choi=&quot;&quot;
   while (true); do
   read choi
        case $choi in
         O | o )
	 alltime=&quot;O&quot;
   	break
         ;;
	 N| n )
         alltime=&quot;N&quot;
   	break
         ;;	
   esac
   done
      HORAIRES=&quot;&quot;
      for NumDAY in 0 1 2 3 4 5 6
         do
	 if [$alltime = &quot;O&quot;];then
		echo &quot;*;*;$PCUSER;Al0000-2400&quot; &gt;&gt; $FILEPAMTIMECONF
		echo &quot;$PCUSER=admin=&quot; &gt;&gt; $FILE_HCONF
		break
	 else
		echo &quot;$PCUSER=user=&quot; &gt;&gt; $FILE_HCONF
	 fi
	 
         clear
         echo &quot;exemple: 00h00 a 23h59 ou 08h00 a 12h00 et 14h00 a 16h50&quot;
         echo -e -n &quot;$RougeD$PCUSER$Fcolor est autorisés à se connecter le $BleuD${DAYS[$NumDAY]}$Fcolor de:&quot;
         while (true); do
            read choi
            input=$choi
            choi=$(echo $choi | sed -e &quot;s/h//g&quot; | sed -e &quot;s/ //g&quot; | sed -e &quot;s/a/-/g&quot; | sed -e &quot;s/et/:/g&quot; ) # mise en forme de choi pour pam   
               if [ $( echo $choi | grep -E -c &quot;^[0-2][0-9][0-5][0-9]-[0-2][0-9][0-5][0-9]$|^[0-2][0-9][0-5][0-9]-[0-2][0-9][0-5][0-9]:[0-2][0-9][0-5][0-9]-[0-2][0-9][0-5][0-9]$&quot; ) -eq 1 ];then
                  int1=$(echo $choi | cut -d &quot;:&quot; -f1 | cut -d &quot;-&quot; -f1)
                  int2=$(echo $choi | cut -d &quot;:&quot; -f1 | cut -d &quot;-&quot; -f2)
                  int3=$(echo $choi | cut -d &quot;:&quot; -f2 | cut -d &quot;-&quot; -f1)
                  int4=$(echo $choi | cut -d &quot;:&quot; -f2 | cut -d &quot;-&quot; -f2)
                  if [ $int1 -lt $int2 ];then
                     if [ ! $(echo $choi | grep -E -c &quot;:&quot;) -eq 1 ] ; then
                        if [ $NumDAY -eq 6 ] ; then
                           HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1-$int2&quot;
                        else
                           HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1-$int2|&quot;
                        fi
                        MINUTES1=$(echo $int1 | sed -e 's/.\{02\}//')
                        HEURES1=$(echo $int1 | sed -e 's/.\{02\}$//') 
                        MINUTES2=$(echo $int2 | sed -e 's/.\{02\}//')
                        HEURES2=$(echo $int2 | sed -e 's/.\{02\}$//')
			echo &quot;$PCUSER=$NumDAY=$HEURES1\h$MINUTES1\:$HEURES2\h$MINUTES2&quot; &gt;&gt; $FILE_HCONF   
                        echo &quot;$MINUTES2 $HEURES2 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
                        break
   
                     else   
                        if [ $int2 -lt $int3 ];then
                           if [ $int3 -lt $int4 ];then
                              if [ $NumDAY -eq 6 ] ; then
                                 HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1-$int2|${DAYSPAM[$NumDAY]}$int3-$int4&quot;
                              else
                                 HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1-$int2|${DAYSPAM[$NumDAY]}$int3-$int4|&quot;
                              fi
                              MINUTES1=$(echo $int1 | sed -e 's/.\{02\}//')
                              HEURES1=$(echo $int1 | sed -e 's/.\{02\}$//')   
                              MINUTES2=$(echo $int2 | sed -e 's/.\{02\}//')
                              HEURES2=$(echo $int2 | sed -e 's/.\{02\}$//')  
                              MINUTES3=$(echo $int3 | sed -e 's/.\{02\}//')
                              HEURES3=$(echo $int3 | sed -e 's/.\{02\}$//')   
                              MINUTES4=$(echo $int4 | sed -e 's/.\{02\}//')
                              HEURES4=$(echo $int4 | sed -e 's/.\{02\}$//')   
                              ## minutes heures jourdumoi moi jourdelasemaine utilisateur  commande
			      echo &quot;$PCUSER=$NumDAY=$HEURES1\h$MINUTES1\:$HEURES2\h$MINUTES2:$HEURES3\h$MINUTES3\:$HEURES4\h$MINUTES4&quot; &gt;&gt; $FILE_HCONF
                              echo &quot;$MINUTES2 $HEURES2 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
                              echo &quot;$MINUTES4 $HEURES4 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
                              break   
                           else
                              errortime1
                           fi
                        else
                           errortime1
                        fi
                     fi
                  else
                     errortime1
   
                  fi
                       
               else
                  errortime2   
               fi
           
         done
     
        done
     
      echo &quot;*;*;$PCUSER;$HORAIRESPAM&quot; &gt;&gt; $FILEPAMTIMECONF
   done
   
   for NumDAY in 0 1 2 3 4 5 6
   do
      echo &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
   done
   echo &gt;&gt; $FILE_HCONF
$SED &quot;s?^HOURSCONNECT.*?HOURSCONNECT=ON?g&quot; $FILE_CONF
$CMDSERVICE$namservicecrond restart
}

desactivetimelogin () {
for FILE in `echo $GESTIONNAIREDESESSIONS`
do
   $SED &quot;/account required pam_time.so/d&quot; $DIRPAM$FILE
done
cat $FILEPAMTIMECONF.old &gt; $FILEPAMTIMECONF
for NumDAY in 0 1 2 3 4 5 6
do
   rm -f /etc/cron.d/CTparental${DAYS[$NumDAY]}
done
$SED &quot;s?^HOURSCONNECT.*?HOURSCONNECT=OFF?g&quot; $FILE_CONF

$CMDSERVICE$namservicecrond restart
}


readTimeFILECONF () {
   TESTGESTIONNAIRE=&quot;&quot;
   for FILE in `echo $GESTIONNAIREDESESSIONS`
   do
      if [ -f $DIRPAM$FILE ];then
         if [ $(cat $DIRPAM$FILE | grep -c &quot;account required pam_time.so&quot;) -eq 0  ] ; then
            echo &quot;account required pam_time.so&quot; &gt;&gt; $DIRPAM$FILE
         fi
         TESTGESTIONNAIRE=$TESTGESTIONNAIRE\ $FILE
      fi
   done
   if [ $( echo $TESTGESTIONNAIRE | wc -m ) -eq 1 ] ; then
      echo &quot;Aucun gestionner de session connu , n'a été détecté.&quot;
      echo &quot; il est donc impossible d'activer le controle horaires des connections&quot;
      desactivetimelogin
      exit 1
   fi
   
   if [ ! -f $FILEPAMTIMECONF.old ] ; then
   cp $FILEPAMTIMECONF $FILEPAMTIMECONF.old
   fi
   echo &quot;*;*;root;Al0000-2400&quot; &gt; $FILEPAMTIMECONF
   for NumDAY in 0 1 2 3 4 5 6
   do
   echo  &gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
   done
   
   for PCUSER in `cat /etc/passwd | cut -d&quot;:&quot; -f1,3| grep -E [1-9][0-9][0-9][0-9] | cut -d &quot;:&quot; -f1`
   do
   HORAIRESPAM=&quot;&quot;
  	userisconfigured=&quot;0&quot;

	while read line
	do
	
			if [ $( echo $line | grep -E -c &quot;^$PCUSER=[0-6]=&quot; ) -eq 1 ] ; then
				echo &quot;$line&quot; 
				NumDAY=$(echo $line | cut -d&quot;=&quot; -f2)
				h1=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f1 | cut -d&quot;h&quot; -f1)
				m1=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f1 | cut -d&quot;h&quot; -f2)
				h2=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f2 | cut -d&quot;h&quot; -f1)
				m2=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f2 | cut -d&quot;h&quot; -f2)
				h3=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f3 | cut -d&quot;h&quot; -f1)
				m3=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f3 | cut -d&quot;h&quot; -f2)
				h4=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f4 | cut -d&quot;h&quot; -f1)
				m4=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f4 | cut -d&quot;h&quot; -f2)
				if [ $(echo -n $h3$m3 | wc -c) -gt 2 ]; then
 					if [ $NumDAY -eq 6 ] ; then
		                        	HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$h1$m1-$h2$m2|${DAYSPAM[$NumDAY]}$h3$m3-$h4$m4&quot;
						
		                      	else
		                        	HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$h1$m1-$h2$m2|${DAYSPAM[$NumDAY]}$h3$m3-$h4$m4|&quot;
		                      	fi
					echo &quot;$m2 $h2 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
					echo &quot;$m4 $h4 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
					userisconfigured=&quot;1&quot;

				else
				        if [ $NumDAY -eq 6 ] ; then
				           HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$h1$m1-$h2$m2&quot;
				        else
				           HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$h1$m1-$h2$m2|&quot;
				        fi
					echo &quot;$m2 $h2 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
					userisconfigured=&quot;1&quot;
				fi
			fi
	
	
	done &lt; $FILE_HCONF
	if [ $userisconfigured -eq 1 ] ; then
		echo &quot;*;*;$PCUSER;$HORAIRESPAM&quot; &gt;&gt; $FILEPAMTIMECONF
	else
		echo &quot;*;*;$PCUSER;Al0000-2400&quot; &gt;&gt; $FILEPAMTIMECONF
	fi
   done

$SED &quot;s?^HOURSCONNECT.*?HOURSCONNECT=ON?g&quot; $FILE_CONF
$CMDSERVICE$namservicecrond restart
}


if [ ! -z ${2} ];then
   DIRhtmlPersonaliser=${2}
   if [ ! -d $DIRhtmlPersonaliser ];then
      echo &quot;Chemin de répertoir non valide!&quot;
      exit 0
   fi
fi
usage=&quot;Usage: CTparental.sh    {-i }|{ -u }|{ -dl }|{ -ubl }|{ -rl }|{ -on }|{ -off }|{ -cble }|{ -dble }
                               |{ -tlo }|{ -tlu }|{ -uhtml }|{ -aupon }|{ -aupoff }|{ -aup } 
-i      =&gt; Install le controll parental sur l'ordinateur (pc de bureau) peut ètre utiliser avec
           un paramètre suplémentaire pour indiquer un chemin de sources pour la page web de redirection.
           exemple : CTparental.sh -i /home/toto/html/
           si pas d'option le \&quot;sens interdit\&quot; est utiliser par default.
-u      =&gt; désinstall le controll parental de l'ordinateur (pc de bureau)
-dl     =&gt; mais a jour le controll a partir de la black liste de l'université de toulouse
-ubl    =&gt; A faire aprés chaque modification du fichier $DNS_FILTER_OSSI
-rl     =&gt; A faire aprés chaque modification manuel du fichier $DREAB
-on     =&gt; Active le controll parental
-off    =&gt; Désactive le controll parental
-cble   =&gt; Configure du mode de filtrage par liste blanche ou par liste noir(default) ainssi que les 
           catégories que l'on veux activer.
-dble   =&gt; Remet les catégories activent par défaut et filtrage par liste noir.
-tlo    =&gt; Active est paramètre les restrictions horaire de login pour les utilisateurs.
           Compatible avec les gestionnaire de sessions suivant $GESTIONNAIREDESESSIONS .
-tlu    =&gt; Desative les restrictions horaire de login pour les utilisateurs.
-uhtml  =&gt; mait a jour la page de redirection a partir d'un repertoir source ou par defaut avec 
            le \&quot;sens interdit\&quot;.
            exemples:
                     - avec un repertoir source : CTparental.sh -uhtml /home/toto/html/
   		     - par default :              CTparental.sh -uhtml
-aupon  =&gt; active la mise ajour automatique de la black liste de toulouse (tous les 7 jours).
-aupoff =&gt; desactve la mise ajour automatique de la black liste de toulouse.
-aup    =&gt; comme -dl mais seulement si il n'y a pas eu de mise a jour depuis plus de 7 jours.	
 &quot;
case $args in
   -\? | -h* | --h*)
      echo &quot;$usage&quot;
      exit 0
      ;;
   -i | --install )
      install
      exit 0
      ;;
   -u | --uninstall )
      autoupdateoff 
      dnsmasqoff
      desactivetimelogin
      uninstall
      exit 0
      ;;
   -dl | --download )
      download
      adapt
      catChoice
      dnsmasqon
      $SED &quot;s?^LASTUPDATE.*?LASTUPDATE=$THISDAYS=`date +%d-%m-%Y\ %T`?g&quot; $FILE_CONF
      exit 0
      ;;
   -ubl | --updatebl )
      adapt
      catChoice
      dnsmasqon
      exit 0
      ;;
   -uhtml | --updatehtml )
      FoncHTTPDCONF
      exit 0
      ;;
   -rl | --reload )
      catChoice
      dnsmasqon
      exit 0
      ;;
   -on | --on )
      dnsmasqon
      exit 0
      ;;
   -off | --off )
      autoupdateoff 
      dnsmasqoff
      exit 0
      ;;
   -wlo | --whitelistonly )
      dnsmasqwhitelistonly
      exit 0
      ;;
   -cble | --confblenable )
      choiblenabled
      catChoice
      dnsmasqon
      exit 0
      ;;
    -dble | --defaultblenable )
      initblenabled
      catChoice
      dnsmasqon
      ;;
    -tlo | --timeloginon )
      activetimelogin
      ;;
    -tlu | --timeloginon )
      desactivetimelogin
      ;;
    -trf | --timeloginon )
      readTimeFILECONF
      ;;
    -aupon | --autoupdateon )
      autoupdateon
      ;;
    -aupoff | --autoupdateoff )
      autoupdateoff
      ;;
    -aup | --autoupdate )
      autoupdate
      ;;
      
   *)
      echo &quot;Argument inconnu :$1&quot;;
      echo &quot;$usage&quot;;
      exit 1
      ;;
esac


&lt;/code&gt;

[[Catégorie:Scripts]]</text>
      <sha1>c33ho7ugnglnk08vs0blfaunwrit033</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5239</id>
      <parentid>5238</parentid>
      <timestamp>2013-06-02T06:45:51Z</timestamp>
      <contributor>
        <username>Hulk</username>
        <id>190</id>
      </contributor>
      <comment>ajout du code interface web</comment>
      <text xml:space="preserve" bytes="68990">lien sur le [http://www.debian-fr.org/controle-parental-pour-le-pc-debian-de-vos-enfants-t42009.html forum]
'''CTparental.sh'''
&lt;code bash&gt;
#!/bin/bash 
# CTparental.sh
#
# par guillaume MARSAT
# une parti du code est tirer du scripte alcasar-bl.sh créer par Franck BOUIJOUX and Richard REY
# présent dans le code du projet alcasar en version 2.6.1 ; web page http://www.alcasar.net/

# This script is distributed under the Gnu General Public License (GPL)
#if [ ! $UID -eq 0 ]; then
#   echo &quot;Il vous faut les droit root pour lancer ce scripte&quot;
#   exit 1
#fi
args=${1}
SED=&quot;/bin/sed -i&quot;
DIR_CONF=&quot;/usr/local/etc/CTparental&quot;
FILE_CONF=&quot;$DIR_CONF/CTparental.conf&quot;
FILE_HCONF=&quot;$DIR_CONF/CThours.conf&quot;;
if [ ! -f $FILE_CONF ] ; then
mkdir -p $DIR_CONF
cat &lt;&lt; EOF &gt; $FILE_CONF
LASTUPDATE=0
DNSMASQ=BLACK
AUTOUPDATE=OFF
HOURSCONNECT=OFF
EOF

fi

tempDIR=&quot;/tmp/alcasar&quot;
RougeD=&quot;\033[1;31m&quot;
BleuD=&quot;\033[1;36m&quot;
VertD=&quot;\033[1;32m&quot;
Fcolor=&quot;\033[0m&quot;
GESTIONNAIREDESESSIONS=&quot; login gdm lightdm slim kdm xdm &quot;
FILEPAMTIMECONF=&quot;/etc/security/time.conf&quot;
DIRPAM=&quot;/etc/pam.d/&quot;
DAYS=( lundi mardi mercredi jeudi vendredi samedi dimanche )
DAYSPAM=( Mo Tu We Th Fr Sa Su )
DAYSCRON=( mon tue wed thu fri sat sun )
 
service --help 2&amp;&gt; /dev/null
if [ $? -eq 0 ] ; then
  CMDSERVICE=&quot;service &quot;
else
  CMDSERVICE=&quot;/etc/init.d/&quot;
fi
DNSMASQCONF=&quot;/etc/dnsmasq.conf&quot;
MAINCONFHTTPD=&quot;/etc/lighttpd/lighttpd.conf&quot;
DIRCONFENABLEDHTTPD=&quot;/etc/lighttpd/conf-enabled&quot;
CTPARENTALCONFHTTPD=$DIRCONFENABLEDHTTPD&quot;/10-CTparental.conf&quot;
RESOLVCONFMAIN=&quot;/etc/resolvconf&quot;
RESOLVDNSMASQ=&quot;$RESOLVCONFMAIN/run/interface/lo.dnsmasq&quot;
RESOLVCONFORDER=&quot;$RESOLVCONFMAIN/interface-order&quot;
DIRHTML=&quot;/var/www/CTparental&quot;
DIRadminHTML=&quot;/var/www/CTadmin&quot;
namservicednsmaq=&quot;dnsmasq&quot;
namservicehttpd=&quot;lighttpd&quot;
namservicecrond=&quot;cron&quot;
PASSWORDFILEHTTPD=&quot;/etc/lighttpd/lighttpd-htdigest.user&quot;
REALMADMINHTTPD=&quot;interface admin&quot;
CMDINSTALL=&quot;&quot;
yum help 2&amp;&gt; /dev/null
if [ $? -eq 0 ] ; then
   ## &quot;Distribution baser sur yum exemple readhat,fedora...&quot;
   CMDINSTALL=&quot;yum install &quot;
   CMDREMOVE=&quot;yum remove &quot;
   yum info openresolv 2&amp;&gt; /dev/null
   if [ $? -eq 0 ] ; then
	paquetresolv=&quot;openresolv&quot;
   else
        paquetresolv=&quot;resolvconf&quot;
   fi
fi
urpmi --help 2&amp;&gt; /dev/null
if [ $? -eq 1 ] ; then
   ## &quot;Distribution baser sur urpmi exemple mandriva...&quot;
   CMDINSTALL=&quot;urpmi -a --auto &quot;
   CMDREMOVE=&quot;urpme --auto &quot;
   namservicecrond=&quot;crond&quot;
   paquetresolv=&quot;openresolv&quot;
fi
apt-get -h 2&amp;&gt; /dev/null
if [ $? -eq 0 ] ; then
   ## &quot;Distribution baser sur apt-get exemple debian,ubuntu ...&quot;
   CMDINSTALL=&quot;apt-get -y --force-yes install &quot;
   CMDREMOVE=&quot;apt-get -y --force-yes remove --purge &quot;
   paquetresolv=&quot;resolvconf&quot; # pour compatibiliter debian 6
fi
if [ $args=&quot;-i&quot; ] ; then
   namserviceNetworkManager=&quot;network-manager&quot;
   if [ -f /etc/NetworkManager/NetworkManager.conf ];then
     $SED &quot;s/^dns=dnsmasq/#dns=dnsmasq/g&quot; /etc/NetworkManager/NetworkManager.conf
     $CMDSERVICE$namserviceNetworkManager restart
     sleep 5
   fi
fi
if [ $( echo $CMDINSTALL | wc -m ) -eq 1 ] ; then
   echo &quot;Aucun gestionner de paquet connu , n'a été détecté.&quot;
   exit 1
fi



interface_WAN=$(ip route | awk '/^default via/{print $5}') # suppose que la passerelle est la route par default

if [ -f $DIR_CONF/resolv.conf.sav ];then
   DNS1=$(cat $DIR_CONF/resolv.conf.sav | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f1)
   DNS2=$(cat $DIR_CONF/resolv.conf.sav | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f2)
else
   DNS1=$(cat /etc/resolv.conf | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f1)
   DNS2=$(cat /etc/resolv.conf | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f2)
fi

PRIVATE_IP=&quot;127.0.0.10&quot;
FILE_tmp=&quot;$tempDIR/filetmp.txt&quot;
BL_SERVER=&quot;dsi.ut-capitole.fr&quot;
CATEGORIES_ENABLED=&quot;$DIR_CONF/categories-enabled&quot;
BL_CATEGORIES_AVAILABLE=&quot;$DIR_CONF/bl-categories-available&quot;
WL_CATEGORIES_AVAILABLE=&quot;$DIR_CONF/wl-categories-available&quot;
DIR_DNS_FILTER_AVAILABLE=&quot;$DIR_CONF/dnsfilter-available&quot;
DIR_DNS_BLACKLISTE_ENABLED=&quot;$DIR_CONF/blackliste-enabled&quot;
DIR_DNS_WHITELIST_ENABLED=&quot;$DIR_CONF/whitelist-enabled&quot;
DNS_FILTER_OSSI=&quot;$DIR_CONF/blackliste-local&quot;
DREAB=&quot;$DIR_CONF/domaine-rehabiliter&quot; 
THISDAYS=$(expr $(date +%Y) \* 365 + $(date +%j))
MAXDAYSFORUPDATE=&quot;7&quot; # update tous les 7 jours
CHEMINCTPARENTLE=$(readlink -f $0)

initblenabled () {
   cat &lt;&lt; EOF &gt; $CATEGORIES_ENABLED
adult
agressif
dangerous_material
dating
drogue
gambling
hacking
malware
marketingware
mixed_adult
phishing
redirector
sect
strict_redirector
strong_redirector
tricheur
warez
ossi   
EOF
         

}

addadminhttpd() {
if [ ! -f $PASSWORDFILEHTTPD ] ; then
    echo -n &gt; $PASSWORDFILEHTTPD   
fi
chown root:$USERHTTPD $PASSWORDFILEHTTPD
chmod 640 $PASSWORDFILEHTTPD
USERADMINHTTPD=${1}
pass=${2}
hash=`echo -n &quot;$USERADMINHTTPD:$REALMADMINHTTPD:$pass&quot; | md5sum | cut -b -32`
ligne=$(echo &quot;$USERADMINHTTPD:$REALMADMINHTTPD:$hash&quot;)
$SED &quot;/^$USERADMINHTTPD:$REALMADMINHTTPD.*/d&quot; $PASSWORDFILEHTTPD
echo $ligne &gt;&gt; $PASSWORDFILEHTTPD
}

download() {
   rm -rf $tempDIR
   mkdir $tempDIR
   wget -P $tempDIR http://$BL_SERVER/blacklists/download/blacklists.tar.gz 2&gt;&amp;1 | cat
   if [ ! $? -eq 0 ]; then
      echo &quot;erreur lors du téléchargement processu interompu&quot;
      rm -rf $tempDIR
      exit 1
   fi
   tar -xzf $tempDIR/blacklists.tar.gz -C $tempDIR
   if [ ! $? -eq 0 ]; then
      echo &quot;erreur d'extraction de l'archive processu interompu&quot;
      exit 1
   fi
   rm -rf $DIR_DNS_FILTER_AVAILABLE/
   mkdir $DIR_DNS_FILTER_AVAILABLE
}
autoupdate() {
        LASTUPDATEDAY=`grep LASTUPDATE= $FILE_CONF | cut -d&quot;=&quot; -f2`
        LASTUPDATEDAY=${LASTUPDATEDAY:=0}
        DIFFDAY=$(expr $THISDAYS - $LASTUPDATEDAY)
	if [ $DIFFDAY -ge $MAXDAYSFORUPDATE ] ; then
		download
		adapt
		catChoice
		dnsmasqon
                $SED &quot;s?^LASTUPDATE.*?LASTUPDATE=$THISDAYS=`date +%d-%m-%Y\ %T`?g&quot; $FILE_CONF
		exit 0
	fi
}
autoupdateon() {
$SED &quot;s?^AUTOUPDATE.*?AUTOUPDATE=ON?g&quot; $FILE_CONF
echo &quot;*/10 * * * * root $CHEMINCTPARENTLE -aup&quot; &gt; /etc/cron.d/CTparental-autoupdate
$CMDSERVICE$namservicecrond restart
}

autoupdateoff() {
$SED &quot;s?^AUTOUPDATE.*?AUTOUPDATE=OFF?g&quot; $FILE_CONF
rm -f /etc/cron.d/CTparental-autoupdate
$CMDSERVICE$namservicecrond restart
}
adapt() {
   dnsmasqoff
   if [ ! -f $DNS_FILTER_OSSI ] ; then
            echo &gt; $DNS_FILTER_OSSI
   fi

   if [ -d $tempDIR  ] ; then
	  CATEGORIES_AVAILABLE=$tempDIR/categories_available
	  ls -FR $tempDIR/blacklists | grep '/$' | sed -e &quot;s/\///g&quot; &gt; $CATEGORIES_AVAILABLE
          echo -n &gt; $BL_CATEGORIES_AVAILABLE
          echo -n &gt; $WL_CATEGORIES_AVAILABLE
          if [ ! -f $DIR_DNS_FILTER_AVAILABLE/ossi.conf ] ; then
		echo &gt; $DIR_DNS_FILTER_AVAILABLE/ossi.conf
	  fi
	  for categorie in `cat $CATEGORIES_AVAILABLE` # creation des deux fichiers de categories (BL / WL)
	  do
		if [ -e $tempDIR/blacklists/$categorie/usage ]
		then
			is_whitelist=`grep white $tempDIR/blacklists/$categorie/usage|wc -l`
		else
			is_whitelist=0 # ou si le fichier 'usage' n'existe pas, on considère que la catégorie est une BL
		fi
		if [ $is_whitelist -eq &quot;0&quot; ]
		then
			echo &quot;$categorie&quot; &gt;&gt; $BL_CATEGORIES_AVAILABLE
		else
			echo &quot;$categorie&quot; &gt;&gt; $WL_CATEGORIES_AVAILABLE
		fi
	   done
         echo -n &quot;Toulouse Black and White List migration process. Please wait : &quot;
         for DOMAINE in `cat  $CATEGORIES_AVAILABLE`  # pour chaque catégorie
         do
            echo -n &quot;.&quot;
            # suppression des @IP, de caractères acccentués et des lignes commentées ou vide
            egrep  -v &quot;([0-9]{1,3}\.){3}[0-9]{1,3}&quot; $tempDIR/blacklists/$DOMAINE/domains &gt; $FILE_tmp
            $SED &quot;/[äâëêïîöôüû]/d&quot; $FILE_tmp
            $SED &quot;/^#.*/d&quot; $FILE_tmp
            $SED &quot;/^$/d&quot; $FILE_tmp
            $SED &quot;s/\.\{2,1000\}/\./g&quot; $FILE_tmp # supprime les suite de &quot;.&quot; exemple: address=/fucking-big-tits..com/127.0.0.10 devient address=/fucking-big-tits.com/127.0.0.10
	    is_blacklist=`grep $DOMAINE $BL_CATEGORIES_AVAILABLE |wc -l`
	    if [ $is_blacklist -ge &quot;1&quot; ] ; then
            	$SED &quot;s?.*?address=/&amp;/$PRIVATE_IP?g&quot; $FILE_tmp  # Mise en forme dnsmasq des listes noires
		mv $FILE_tmp $DIR_DNS_FILTER_AVAILABLE/$DOMAINE.conf  
            else
		$SED &quot;s?.*?server=/&amp;/#?g&quot; $FILE_tmp  # Mise en forme dnsmasq des listes blanches
		mv $FILE_tmp $DIR_DNS_FILTER_AVAILABLE/$DOMAINE.conf
            fi
         done
   else
         mkdir   $tempDIR
         echo -n &quot;.&quot;
 	 # suppression des @IP, de caractères acccentués et des lignes commentées ou vide
         egrep  -v &quot;([0-9]{1,3}\.){3}[0-9]{1,3}&quot; $DNS_FILTER_OSSI  &gt; $FILE_tmp
         $SED &quot;/[äâëêïîöôüû]/d&quot; $FILE_tmp 
         $SED &quot;/^#.*/d&quot; $FILE_tmp 
         $SED &quot;/^$/d&quot; $FILE_tmp 
         $SED &quot;s/\.\{2,1000\}/\./g&quot; $FILE_tmp # supprime les suite de &quot;.&quot; exemple: address=/fucking-big-tits..com/127.0.0.10 devient address=/fucking-big-tits.com/127.0.0.10
         $SED &quot;s?.*?address=/&amp;/$PRIVATE_IP?g&quot; $FILE_tmp  # Mise en forme dnsmasq
         mv $FILE_tmp $DIR_DNS_FILTER_AVAILABLE/ossi.conf
   fi     
   echo
   rm -rf $tempDIR
}
catChoice() {
#   echo &quot;catChoice&quot;
   rm -rf $DIR_DNS_BLACKLISTE_ENABLED/
   mkdir $DIR_DNS_BLACKLISTE_ENABLED
   rm -rf  $DIR_DNS_WHITELIST_ENABLED/
   mkdir  $DIR_DNS_WHITELIST_ENABLED
     
      for CATEGORIE in `cat $CATEGORIES_ENABLED` # on affecte les catégories dnsmasq
      do
	 is_blacklist=`grep $CATEGORIE $BL_CATEGORIES_AVAILABLE |wc -l`
	 if [ $is_blacklist -ge &quot;1&quot; ] ; then
		cp $DIR_DNS_FILTER_AVAILABLE/$CATEGORIE.conf $DIR_DNS_BLACKLISTE_ENABLED/
         else
		cp $DIR_DNS_FILTER_AVAILABLE/$CATEGORIE.conf $DIR_DNS_WHITELIST_ENABLED/
     	 fi     
      done
      cp $DIR_DNS_FILTER_AVAILABLE/ossi.conf $DIR_DNS_BLACKLISTE_ENABLED/
#      echo &quot;fincatChoice&quot;
      reabdomaine
}

reabdomaine () {
if [ ! -f $DREAB ] ; then
cat &lt;&lt; EOF &gt; $DREAB
   www.google.com
   www.google.fr
EOF
fi
if [ ! -f $DIR_DNS_BLACKLISTE_ENABLED/ossi.conf ] ; then
	echo &gt; $DIR_DNS_BLACKLISTE_ENABLED/ossi.conf
fi
echo
echo -n &quot;Application de la liste blanche (domaine réabiliter):&quot;
for CATEGORIE in `cat  $CATEGORIES_ENABLED  `  # pour chaque catégorie
do 
	is_blacklist=`grep $CATEGORIE $BL_CATEGORIES_AVAILABLE |wc -l`
	if [ $is_blacklist -ge &quot;1&quot; ] ; then
		echo -n &quot;.&quot;
		for DOMAINE in `cat  $DREAB`
		do
		    $SED &quot;/$DOMAINE/d&quot; $DIR_DNS_BLACKLISTE_ENABLED/$CATEGORIE.conf
		done
        fi
done
echo -n &quot;.&quot;
cat $DREAB | sed -e &quot;s? ??g&quot; | sed -e &quot;s?.*?server=/&amp;/#?g&quot; &gt;  $DIR_DNS_WHITELIST_ENABLED/whiteliste.ossi.conf
echo
}

dnsmasqon () {
   categorie1=`sed -n &quot;1 p&quot; $CATEGORIES_ENABLED` # on considaire que si la 1 er categorie activer est un blackliste on fonctionne par blackliste.
   is_blacklist=`grep $categorie1 $BL_CATEGORIES_AVAILABLE |wc -l`
   if [ $is_blacklist -ge &quot;1&quot; ] ; then
   $SED &quot;s?^DNSMASQ.*?DNSMASQ=BLACK?g&quot; $FILE_CONF
   cat &lt;&lt; EOF &gt; $DNSMASQCONF
         # Configuration file for &quot;dnsmasq with blackhole&quot;
   # Inclusion de la blacklist &lt;domains&gt; de Toulouse dans la configuration
   conf-dir=$DIR_DNS_BLACKLISTE_ENABLED
   # conf-file=$DIR_DEST_ETC/alcasar-dns-name   # zone de definition de noms DNS locaux
   no-dhcp-interface=$interface_WAN
   bind-interfaces
   cache-size=1024
   domain-needed
   expand-hosts
   bogus-priv
   server=$DNS1
   server=$DNS2
   
EOF
$CMDSERVICE$namservicednsmaq restart
else
  dnsmasqwhitelistonly
fi
}
dnsmasqoff () {
   $SED &quot;s?^DNSMASQ.*?DNSMASQ=OFF?g&quot; $FILE_CONF
   cat &lt;&lt; EOF &gt; $DNSMASQCONF
         # Configuration file for &quot;dnsmasq with blackhole&quot;
   # Inclusion de la blacklist &lt;domains&gt; de Toulouse dans la configuration
   # conf-dir=$DIR_DNS_BLACKLISTE_ENABLED
   # conf-file=$DIR_DEST_ETC/alcasar-dns-name   # zone de definition de noms DNS locaux
   no-dhcp-interface=$interface_WAN
   bind-interfaces
   cache-size=0
   domain-needed
   expand-hosts
   bogus-priv
   server=$DNS1
   server=$DNS2
   
EOF

$CMDSERVICE$namservicednsmaq restart
}
dnsmasqwhitelistonly  () {
   $SED &quot;s?^DNSMASQ.*?DNSMASQ=WHITE?g&quot; $FILE_CONF
   cat &lt;&lt; EOF &gt; $DNSMASQCONF
         # Configuration file for &quot;dnsmasq with blackhole&quot;
   # Inclusion de la blacklist &lt;domains&gt; de Toulouse dans la configuration
   conf-dir=$DIR_DNS_WHITELIST_ENABLED
   # conf-file=$DIR_DEST_ETC/alcasar-dns-name   # zone de definition de noms DNS locaux
   no-dhcp-interface=$interface_WAN
   bind-interfaces
   cache-size=0
   domain-needed
   expand-hosts
   bogus-priv
   server=$DNS1
   server=$DNS2
   address=/#/$PRIVATE_IP #redirige vers $PRIVATE_IP pour tous ce qui n'a pas étais resolut dans les listes blanches
EOF

$CMDSERVICE$namservicednsmaq restart
}


FoncHTTPDCONF () {
$CMDSERVICE$namservicehttpd stop
rm -rf $DIRHTML/*
mkdir -v $DIRHTML
if [ ! -z $DIRhtmlPersonaliser ];then
   cp -r $DIRhtmlPersonaliser/* $DIRHTML
else
s=&quot;span&quot;
st=&quot;style&quot;
c=&quot;$c&quot;
cab=&quot;;\&quot;&gt;&quot;

cat &lt;&lt; EOF &gt; $DIRHTML/index.html
 &lt;HTML&gt;
&lt;HEAD&gt;
   &lt;META HTTP-EQUIV=&quot;CONTENT-TYPE&quot; CONTENT=&quot;text/html; charset=utf-8&quot;&gt;
   &lt;TITLE&gt;danger&lt;/TITLE&gt;
&lt;/HEAD&gt;
&lt;BODY LANG=&quot;fr-FR&quot; DIR=&quot;LTR&quot;&gt;
&lt;CENTER&gt;
&lt;img alt=&quot;Site dangereux pour des mineurs&quot;
  HEIGHT=&quot;600&quot;   
  src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKIAAACgCAYAAACPOrcQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz
AAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAuGSURB
VHic7d17jFTlGcfx7zMol7KriRpF3Sii3FyooE1EWuNaFrFeWjXWqEBCmyYtrSa2iX9g+wcx9RZN
kya29i+1ETWKMSZI1AiClyI2KiJyFa8BBC9EuyAXhad/vDO7s8PszpyZc857zrzPJ9nsZvac931g
fnnf2Zlz3ldUFVNBZCQwDhhf/H480A60Fb+X/9xWPGsP0FP2vfznr4AtwGZgC6p70/qn5IUEHUSR
EcAFwGRc6Epfpybc83ZcKEtf64DXUd2XcL+ZFVYQRYYB04CLi1/TgKFea+pzEFgNrCh+rUb1gN+S
0tP6QRQ5B7gSF7zpwHC/BdVtP7AKF8olqK71XE+iWjOIIh3AjcBcYJLnauLyHvAI8Biq23wXE7fW
CaJIO3AtMAfoAgpe60nOYWAlsAh4CtUev+XEI/9BdFPvrcA1wAjP1aRtH/A0cG/ep+78BlFkOnAb
cLnvUjJiKXAnqqt8F9KI/AVRZBawALjIdykZ9TJwF6ov+C4kivwEUeQq4C/Aeb5LyYm3gL+i+ozv
QuqR/SCKTADuB2b4LiWnlgM3obrJdyGDye5fliIjEbkbeBcLYTNmAO8icnfxo8tMyuaIKPJL4G9A
h+9SWsw24E+oLvZdSKVsBVHkLOABoNt3KS1uGTAf1a2+CynJztQsMhtYg4UwDd3AGkTm+C6kxH8Q
RX6AyIO4Twraah1uYtMGPILIw1l47eh3ahaZDDwBTPRXhMFdinY9qu/4KsDfiCjyW+C/WAizYDyw
GpGbfBWQ/ogoMhR4EJidbsemTouBuWlfC5luEEWOwX1Ib+8LZtsrwM9R/SatDtMLosgo4DlgSjod
miatAy5FdUcanaXzGlFkHPA6FsI8mQysKn7EmrjkgyhyPvAfYHTifZm4nQ68hsi0pDtKNogi3cBL
wAmJ9mOSdDywvPhcJia514huJFwOeH+z1MRiLzAD1TeSaDyZIIqcDbwKHBd/48aj3cCFqG6Iu+H4
gyhyOu41YdI3qRs/tgM/RvWTOBuN9zWiyInAi1gIW9mpwIvF5zo28QXRvVn9PDA2tjZNVo0Fni8+
57GIJ4giAjwJTI2lPZMHU4Eni8990+IaEf8MzIqpLZMfs3DPfdOa/2NFpAt3xe+QGOox+XMI6EZ1
ZTONNBdEkZOAd4BRzRRhcm8nMAXVXY020PjULFIAHsdCaFwGHi9moiHNvEZciFvqzRhwWVjY6MmN
Tc0iF+JWpPJ/z4vJksNAF6qvRj0xehBFjsbdbdcZtTMThPXAVFS/i3JSIyPaH7EQmoF14jISSbQR
UeQ0YAN2RY0Z3F7gbFQ/rfeEqCPi37EQmtpG4rJSt/pHRJHLgWej12QCdgWqS+s5sL4guv1I1gNn
NFeXCcxHQGc9+8fUOzXPx0JoojsDl52aao+IIsOBD4GTmy7LhOgzYAyq+wc7qJ4R8TdYCE3jTsZl
aFCDj4hueZAPsAUzTXO2AWeienCgA2qNiPOwEJrmdeCyNKCBR0SRo4D3sRvjTTw+Bsai+n21Xw42
Is7BQmjiMxqXqaoGC+IfYi/FhG7ATFWfmkU6cbthGhO3Saiur3xwoBFxXrK1mIDNq/bgkSOiyBDc
n9t2C4BJwk6gA9VD5Q9WGxEvxUJokjMKl7F+qgVxXuKlmNDNq3yg/9QschywAxiWWkkmRAeAU1Dd
XXqgckT8BRZCk7xhuKz1qgyirfZv0tIva5VT83bglJQLMmHagWrv8oV9QXSrx2+M3Nwtt8Dw4XEV
Z/Jm1y546KFGz55Y2tC8PIjzgX9Gburrr+HYYxstxOTd2rUwpeFdS36P6gPQ/zXiT5suyphoejPn
gugWW+zyVIwJV1dpoc/SiPhDbC8Uk74TcNnrDeK5/moxgTsX+oKYyn5rxlQxASyIxr9+QbRd5I0v
EwEKxVtGx3guxoRrDCJDC8BZ2I4Axp8hwFkFbFo2/k0sAON9V2GCN74AxLq5nzENOLEAtPuuwgSv
3YJosqC9ALT5rsIEr81GRJMFNjWbTLCp2WSCTc0mE9ptU0eTCQWgx3cRJng9BWCP7ypM8PbYiGiy
oMeCaLLApmaTCTY1m0ywqdlkQk8B+Nx3FSZ4nxeAzb6rMMHbXKCRpeiMidfGArAVOFTrSGMScgjY
WihuXfqh72pMsD5E9WDpogebno0vG6FvyZFNHgsxYdsEFkTjX78gvu2xEBO2t6EviO8CX/qrxQTq
S1z2ikF0Wwus9FePCdTKYvb67SrwkqdiTLh6M1cexBUeCjFh681cXxDdDkA7fFRjgrSjtOsUwFEV
v1wBzI7U3IIFMMw2NA3WF180ema/GbhyU8hfAQ82XJQx9fs1qr2b+NnG4caHGhuHu18sSbkoE54l
5SGEIzcOB3g4nVpMwB6ufKD/1AwgMgTYBoxKpSQTmp1AB6r9roE9ckR0ByxKqSgTnkWVIYRqIyKA
SCfwXgpFmfBMQnV95YPVVwNzB76ZdEUmOG9WCyEMFETnHwkVY8I1YKaqT80AIkcB7wOjEynJhOZj
YCyq31f75cAjojvhrmRqMgG6a6AQwmAjIlDcufQDoCP+ukxAtgFnFu8YrWrwpYvdiffEXJQJzz2D
hRBqjYgAIsNx9z2fHF9dJiCfAWNQ3T/YQbUXc3cN3BdTUSY899UKIdQzIgKIjADWA2c0X5cJyEdA
J6r7ah1Y3/YWrqGbmyzKhOfmekII9QYRQHUp8EyjFZngPFPMTF3qm5p7j5bTgA3AyOh1mYDsBc5G
9dN6T4i285Rr+PaIRZnw3B4lhBB1RAQQORpYA3RGO9EEYj0wFdXvopwUfS8+18F84HDkc02rOwzM
jxpCaCSIAKqvAnc0dK5pZXcUsxFZ9Km590wpAMuAixtrwLSYFUA3qg3NlI0HEUDkJOAd7P6W0O0E
pqC6q9EGmtuv2XV8A7YYfMgOATc0E0JoNogAqiuBhU23Y/JqYTEDTWluau5tRQR4DpjVfGMmR14A
fkYMIYoniAAix+AW+5waT4Mm49YAXaj+L47G4gsigMiJwGvA2PgaNRn0PvATVGPbx7H514jlXGEz
ge2xtmuyZDswM84QQtxBBFD9BLgE2F3rUJM7u4FLis9xrOIPIoDqBuAy3FUYpjXsBS4rPrexSyaI
AKpvAFcB3ybWh0nLt8BVxec0EfH+sVK1BzkfeBY4IdmOTEK+Aq5AdXWSnSQfRACRcbj3nEYn35mJ
0SfApeWLricluam5nOoW4ALc59ImH9YB09MIIaQVRADVncBFwPLU+jSNegW4ENXUtjtJL4hA8V34
y4BHU+3XRLEY9xbNN2l2mm4QwS1jojoH+B1Q88Zrk5oDuNs/r0P1QNqdp/PHyoC9y2TgCWCivyIM
sBm4HlVvr+HTHxHLqa4DfgQ8VOtQk5h/A+f5DCH4HhHLicwG/gW0+S4lEHtwNzplYuF+vyNiOdVH
cZeQLfNdSgCW4W75zEQIIUtBBFDdiupM4Drc4o4mXtuA61CdiepW38WUy1YQS1QXAxNwi4RGvkfW
HOE73P/lhOL/beZk5zXiQEQmAPcDM3yXklPLgZvS+oSkUdkcEcupbkK1G7gaeMt3OTnyFnA1qt1Z
DyHkYUSsJDILWID7uNAc6WXcCv4v+C4kivwFsURkOnAbcLnvUjJiKXAnqqt8F9KI/AaxROQc4Fbg
GmCE52rStg94GrgX1bW+i2lG/oNYItIOXAvMAbrIw+vfxhzG3ba7CHgK1R6/5cSjdYJYTqQDuBGY
C0zyXE1c3gMeAR5DteXeY23NIJZzU/eVuFXLpgPD/RZUt/3AKtwqW0vyPvXW0vpBLCcyDJiGC+XF
xZ+Heq2pz0FgNS54K4DVPi7H8iWsIFZy+8dcAEwGxpd9nZpwz9txl16VvtYBr9e7FUQrCjuIAxEZ
CYzDhXIccDzQjrsyqL3i59LVQnuAnrLv5T9/BWzBhW4Lqna/d4X/A/bydTBs1YRqAAAAAElFTkSu
QmCC&quot; /&gt;
&lt;/CENTER&gt;
&lt;/BODY&gt;
&lt;/HTML&gt;
EOF

fi
## GENERATION

ln -s  $DIRHTML/index.html $DIRHTML/err404.html
USERHTTPD=$(cat /etc/passwd | grep /var/www | cut -d&quot;:&quot; -f1)
GROUPHTTPD=$(cat /etc/group | grep $USERHTTPD | cut -d&quot;:&quot; -f1)

cat &lt;&lt; EOF &gt; $MAINCONFHTTPD
server.modules = (
&quot;mod_access&quot;,
&quot;mod_alias&quot;,
&quot;mod_redirect&quot;,
&quot;mod_auth&quot;,	#pour insteface admin
&quot;mod_fastcgi&quot;,  #pour insteface admin (activation du php)
# &quot;mod_rewrite&quot;,
)
auth.debug                 = 0
auth.backend               = &quot;htdigest&quot; 
auth.backend.htdigest.userfile = &quot;$PASSWORDFILEHTTPD&quot; 

server.document-root = &quot;/var/www&quot;
server.upload-dirs = ( &quot;/var/cache/lighttpd/uploads&quot; )
server.errorlog = &quot;/var/log/lighttpd/error.log&quot;
server.pid-file = &quot;/var/run/lighttpd.pid&quot;
server.username = &quot;$USERHTTPD&quot;
server.groupname = &quot;$GROUPHTTPD&quot;
server.port = 80
server.bind = &quot;127.0.0.1&quot;


index-file.names = ( &quot;index.php&quot;, &quot;index.html&quot; )
url.access-deny = ( &quot;~&quot;, &quot;.inc&quot; )
static-file.exclude-extensions = (&quot;.php&quot;, &quot;.pl&quot;, &quot;.fcgi&quot; )

compress.cache-dir = &quot;/var/cache/lighttpd/compress/&quot;
compress.filetype = ( &quot;text/css&quot;, &quot;text/html&quot;, &quot;text/plain&quot; )

server.tag = &quot;&quot;

include_shell &quot;/usr/share/lighttpd/create-mime.assign.pl&quot;
include_shell &quot;/usr/share/lighttpd/include-conf-enabled.pl&quot;
EOF

mkdir -p /usr/share/lighttpd/

if [ ! -f /usr/share/lighttpd/create-mime.assign.pl ];then
cat &lt;&lt; EOF &gt; /usr/share/lighttpd/create-mime.assign.pl
#!/usr/bin/perl -w
use strict;
open MIMETYPES, &quot;/etc/mime.types&quot; or exit;
print &quot;mimetype.assign = (\n&quot;;
my %extensions;
while(&lt;MIMETYPES&gt;) {
  chomp;
  s/\#.*//;
  next if /^\w*$/;
  if(/^([a-z0-9\/+-.]+)\s+((?:[a-z0-9.+-]+[ ]?)+)$/) {
    foreach(split / /, \$2) {
      # mime.types can have same extension for different
      # mime types
      next if \$extensions{\$_};
      \$extensions{\$_} = 1;
      print &quot;\&quot;.\$_\&quot; =&gt; \&quot;\$1\&quot;,\n&quot;;
    }
  }
}
print &quot;)\n&quot;;
EOF
chmod +x /usr/share/lighttpd/create-mime.assign.pl
fi


if [ ! -f /usr/share/lighttpd/include-conf-enabled.pl ];then
cat &lt;&lt; EOF &gt; /usr/share/lighttpd/include-conf-enabled.pl
#!/usr/bin/perl -wl

use strict;
use File::Glob ':glob';

my \$confdir = shift || &quot;/etc/lighttpd/&quot;;
my \$enabled = &quot;conf-enabled/*.conf&quot;;

chdir(\$confdir);
my @files = bsd_glob(\$enabled);

for my \$file (@files)
{
        print &quot;include \&quot;\$file\&quot;&quot;;
}
EOF
chmod +x /usr/share/lighttpd/include-conf-enabled.pl 

fi

mkdir -p $DIRCONFENABLEDHTTPD
mkdir -p $DIRadminHTML
cp -rf CTadmin/* $DIRadminHTML/
clear 
echo &quot;Entrer le login pour l'interface d'administration :&quot;
while (true); do
	 read loginhttp
	 case $loginhttp in
		 * )
		 echo &quot;login:  $loginhttp&quot; &gt; /root/passwordCTadmin
		 break
		 ;;
         esac
      done
clear
      echo &quot;Entrer le mot de $loginhttp :&quot;
      while (true); do
	 read password
	 case $password in
		 * )
		 echo &quot;password: $password&quot; &gt;&gt; /root/passwordCTadmin
                 addadminhttpd &quot;$loginhttp&quot; &quot;$password&quot;
		 break
		 ;;
         esac
      done
chmod 700 /root/passwordCTadmin
chown root:root /root/passwordCTadmin
cat &lt;&lt; EOF &gt; $CTPARENTALCONFHTTPD

fastcgi.server = (
    &quot;.php&quot; =&gt; (
      &quot;localhost&quot; =&gt; ( 
        &quot;bin-path&quot; =&gt; &quot;/usr/bin/php-cgi&quot;,
        &quot;socket&quot; =&gt; &quot;/run/lighttpd/php-fastcgi.sock&quot;,
        &quot;max-procs&quot; =&gt; 4, # default value
        &quot;bin-environment&quot; =&gt; (
          &quot;PHP_FCGI_CHILDREN&quot; =&gt; &quot;1&quot;, # default value
        ),
        &quot;broken-scriptfilename&quot; =&gt; &quot;enable&quot;
      ))
)
  fastcgi.map-extensions     = ( &quot;.php3&quot; =&gt; &quot;.php&quot;,
                               &quot;.php4&quot; =&gt; &quot;.php&quot;,
                               &quot;.php5&quot; =&gt; &quot;.php&quot;,
                               &quot;.phps&quot; =&gt; &quot;.php&quot;,
                               &quot;.phtml&quot; =&gt; &quot;.php&quot; )

\$HTTP[&quot;url&quot;] =~ &quot;.*CTadmin.*&quot; {
  auth.require = ( &quot;&quot; =&gt;
                   (
                     &quot;method&quot;  =&gt; &quot;digest&quot;,
                     &quot;realm&quot;   =&gt; &quot;$REALMADMINHTTPD&quot;,
                     &quot;require&quot; =&gt; &quot;user=$USERADMINHTTPD&quot; 
                   )
                 )

}
\$SERVER[&quot;socket&quot;] == &quot;$PRIVATE_IP:80&quot; {
server.document-root = &quot;$DIRHTML&quot;
server.errorfile-prefix = &quot;$DIRHTML/err&quot; 
#ssl.engine = &quot;enable&quot; 
#ssl.pemfile = &quot;/etc/lighttpd/ssl/$PRIVATE_IP.pem&quot; 
}

EOF
chown root:$GROUPHTTPD $DREAB
chmod 660 $DREAB
chown root:$GROUPHTTPD $DNS_FILTER_OSSI
chmod 660 $DNS_FILTER_OSSI
chown root:$GROUPHTTPD $CATEGORIES_ENABLED
chmod 660 $CATEGORIES_ENABLED
chmod 660 /etc/sudoers
is_sudo_ok=`grep $USERHTTPD /etc/sudoers |wc -l`
         if [ $is_sudo_ok -ge &quot;1&quot; ] ; then
		$SED &quot;s?^$USERHTTPD.*?$USERHTTPD ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh -tlu,/usr/local/bin/CTparental.sh -trf,/usr/local/bin/CTparental.sh -dble,/usr/local/bin/CTparental.sh -ubl,/usr/local/bin/CTparental.sh -dl,/usr/local/bin/CTparental.sh -on,/usr/local/bin/CTparental.sh -off,/usr/local/bin/CTparental.sh -aupon,/usr/local/bin/CTparental.sh -aupoff?g&quot; /etc/sudoers
         else
         	echo &quot;$USERHTTPD ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh -tlu,/usr/local/bin/CTparental.sh -trf,/usr/local/bin/CTparental.sh -dble,/usr/local/bin/CTparental.sh -ubl,/usr/local/bin/CTparental.sh -dl,/usr/local/bin/CTparental.sh -on,/usr/local/bin/CTparental.sh -off,/usr/local/bin/CTparental.sh -aupon,/usr/local/bin/CTparental.sh -aupoff&quot; &gt;&gt; /etc/sudoers
         fi
chmod 440 /etc/sudoers
if [ ! -f $FILE_HCONF ] ; then 
	echo &gt; $FILE_HCONF 
fi
chown root:$GROUPHTTPD $FILE_HCONF
chmod 660 $FILE_HCONF
$CMDSERVICE$namservicehttpd start
}

install () {
      if [ $(netstat -anlp | grep -w LISTEN | grep &quot;:80&quot; | cut -d&quot;/&quot; -f2 | wc -l ) -gt 0 ] ; then
	   echo &quot;le Serveur Web $(netstat -anlp | grep -w LISTEN | grep &quot;:80&quot; | cut -d&quot;/&quot; -f2 | sort -u ) tourne deja sur ce pc&quot;
	   echo &quot;veuiller le désinstaler avant d'installer le control parental.&quot;
	   exit 1
      fi
      mkdir $tempDIR
      mkdir -p $DIR_CONF
      initblenabled
      cat /etc/resolv.conf &gt; $DIR_CONF/resolv.conf.sav
      $CMDINSTALL dnsmasq
      $CMDINSTALL lighttpd
      $CMDINSTALL php5-cgi
      if [ ! -f blacklists.tar.gz ]
      then
         download
      else
         tar -xzf blacklists.tar.gz -C $tempDIR
         if [ ! $? -eq 0 ]; then
            echo &quot;erreur d'extraction de l'archive processu interompu&quot;
            exit 1
         fi
         rm -rf $DIR_DNS_FILTER_AVAILABLE/
         mkdir $DIR_DNS_FILTER_AVAILABLE
      fi
      adapt
      catChoice
      dnsmasqon
      $SED &quot;s?^LASTUPDATE.*?LASTUPDATE=$THISDAYS=`date +%d-%m-%Y\ %T`?g&quot; $FILE_CONF
      $CMDINSTALL $paquetresolv
      confresolvconf

      FoncHTTPDCONF
}

confresolvconf () {
echo &quot;nameserver 127.0.0.1&quot; &gt; $RESOLVDNSMASQ
if [ ! -f $RESOLVCONFORDER ];then
cat &lt;&lt; EOF &gt; $RESOLVCONFORDER
# interface-order(5)
lo.inet*
lo.dnsmasq
lo.pdnsd
lo.!(pdns|pdns-recursor)
lo
tun*
tap*
hso*
em+([0-9])?[+([0-9]))*
p+([0-9]p+([0-9])?(_+([0-9]))*
eth*
ath*
wlan*
ppp*
*
EOF
fi
resolvconf -u
}

uninstall () {
   rm -f /etc/cron.d/CTparental*
   $CMDSERVICE$namservicecrond restart
   $CMDSERVICE$namservicehttpd stop
   rm -f /var/www/index.lighttpd.html
   rm -rf $tempDIR
   rm -rf $DIR_CONF
   rm -rf $DIRHTML

   if [ -f /etc/NetworkManager/NetworkManager.conf ];then
	$SED &quot;s/^#dns=dnsmasq/dns=dnsmasq/g&quot; /etc/NetworkManager/NetworkManager.conf
	$CMDSERVICE$namserviceNetworkManager restart
  	sleep 5
   fi
   rm -rf /usr/share/lighttpd/*
   rm -f $CTPARENTALCONFHTTPD
   rm -rf $DIRadminHTML
   rm -f $RESOLVDNSMASQ
   resolvconf -u

   $CMDREMOVE lighttpd
   $CMDREMOVE dnsmasq 
   $CMDREMOVE $paquetresolv
}

choiblenabled () {
echo -n &gt; $CATEGORIES_ENABLED
clear
echo &quot;Voulez Filtre par Blackliste ou Whiteliste :&quot;
echo -n &quot; B/W :&quot;
while (true); do
         read choi
         case $choi in
         B | b )
         echo &quot;Vous aller maintenant choisir les \&quot;Black listes\&quot; a appliquer.&quot;
		for CATEGORIE in `cat  $BL_CATEGORIES_AVAILABLE`  # pour chaque catégorie
		do   
		      clear
		      echo &quot;Voulez vous activer la categorie :&quot;
		      echo -n &quot;$CATEGORIE  O/N :&quot;
		      while (true); do
			 read choi
			 case $choi in
			 O | o )
			 echo $CATEGORIE &gt;&gt; $CATEGORIES_ENABLED
			 break
			 ;;
			 N | n )
			 break
			 ;;
		      esac
		      done
		done
         break
         ;;
         W | w )
         echo &quot;Vous aller maintenant choisir les \&quot;White listes\&quot; a appliquer.&quot;
		for CATEGORIE in `cat  $WL_CATEGORIES_AVAILABLE`  # pour chaque catégorie
		do   
		      clear
		      echo &quot;Voulez vous activer la categorie :&quot;
		      echo -n &quot;$CATEGORIE  O/N :&quot;
		      while (true); do
			 read choi
			 case $choi in
			 O | o )
			 echo $CATEGORIE &gt;&gt; $CATEGORIES_ENABLED
			 break
			 ;;
			 N | n )
			 break
			 ;;
		      esac
		      done
		done
         break
         ;;
      esac
done
}


errortime1 () {
clear
echo -e &quot;L'heure de debut doit ètre strictement inférieur a l'heure de fin: $RougeD$input$Fcolor &quot;
echo &quot;exemple: 08h00 a 24h00 ou 08h00 a 12h00 et 14h00 a 24h00&quot;
echo -e -n &quot;$RougeD$PCUSER$Fcolor est autorisés à se connecter le $BleuD${DAYS[$NumDAY]}$Fcolor de:&quot;
}
errortime2 () {
clear
echo -e &quot;Mauvaise syntaxe: $RougeD$input$Fcolor &quot;
echo &quot;exemple: 08h00 a 24h00 ou 08h00 a 12h00 et 14h00 a 24h00&quot;
echo -e -n &quot;$RougeD$PCUSER$Fcolor est autorisés à se connecter le $BleuD${DAYS[$NumDAY]}$Fcolor de:&quot;
}

pause () {   # fonction pause pour debugage
      choi=&quot;&quot;
      echo  &quot;pour continuer  press Q :&quot;
      while (true); do
         read choi
         case $choi in
         Q | q )
         break
         ;;
      esac
      done
}
activetimelogin () {
   TESTGESTIONNAIRE=&quot;&quot;
   for FILE in `echo $GESTIONNAIREDESESSIONS`
   do
      if [ -f $DIRPAM$FILE ];then
         if [ $(cat $DIRPAM$FILE | grep -c &quot;account required pam_time.so&quot;) -eq 0  ] ; then
            echo &quot;account required pam_time.so&quot; &gt;&gt; $DIRPAM$FILE
         fi
         TESTGESTIONNAIRE=$TESTGESTIONNAIRE\ $FILE
      fi
   done
   if [ $( echo $TESTGESTIONNAIRE | wc -m ) -eq 1 ] ; then
      echo &quot;Aucun gestionner de session connu , n'a été détecté.&quot;
      echo &quot; il est donc impossible d'activer le controle horaires des connections&quot;
      desactivetimelogin
      exit 1
   fi
   
   if [ ! -f $FILEPAMTIMECONF.old ] ; then
   cp $FILEPAMTIMECONF $FILEPAMTIMECONF.old
   fi
   echo &quot;*;*;root;Al0000-2400&quot; &gt; $FILEPAMTIMECONF
   for NumDAY in 0 1 2 3 4 5 6
   do
   echo  &gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
   done
   for PCUSER in `cat /etc/passwd | cut -d&quot;:&quot; -f1,3| grep -E [1-9][0-9][0-9][0-9] | cut -d &quot;:&quot; -f1`
   do
   $SED &quot;/^$PCUSER=/d&quot; $FILE_HCONF
   echo -e -n &quot;$PCUSER est autoriser a ce connecter 7j/7 24h/24 O/N?&quot; 
   choi=&quot;&quot;
   while (true); do
   read choi
        case $choi in
         O | o )
	 alltime=&quot;O&quot;
   	break
         ;;
	 N| n )
         alltime=&quot;N&quot;
   	break
         ;;	
   esac
   done
      HORAIRES=&quot;&quot;
      for NumDAY in 0 1 2 3 4 5 6
         do
	 if [$alltime = &quot;O&quot;];then
		echo &quot;*;*;$PCUSER;Al0000-2400&quot; &gt;&gt; $FILEPAMTIMECONF
		echo &quot;$PCUSER=admin=&quot; &gt;&gt; $FILE_HCONF
		break
	 else
		echo &quot;$PCUSER=user=&quot; &gt;&gt; $FILE_HCONF
	 fi
	 
         clear
         echo &quot;exemple: 00h00 a 23h59 ou 08h00 a 12h00 et 14h00 a 16h50&quot;
         echo -e -n &quot;$RougeD$PCUSER$Fcolor est autorisés à se connecter le $BleuD${DAYS[$NumDAY]}$Fcolor de:&quot;
         while (true); do
            read choi
            input=$choi
            choi=$(echo $choi | sed -e &quot;s/h//g&quot; | sed -e &quot;s/ //g&quot; | sed -e &quot;s/a/-/g&quot; | sed -e &quot;s/et/:/g&quot; ) # mise en forme de choi pour pam   
               if [ $( echo $choi | grep -E -c &quot;^[0-2][0-9][0-5][0-9]-[0-2][0-9][0-5][0-9]$|^[0-2][0-9][0-5][0-9]-[0-2][0-9][0-5][0-9]:[0-2][0-9][0-5][0-9]-[0-2][0-9][0-5][0-9]$&quot; ) -eq 1 ];then
                  int1=$(echo $choi | cut -d &quot;:&quot; -f1 | cut -d &quot;-&quot; -f1)
                  int2=$(echo $choi | cut -d &quot;:&quot; -f1 | cut -d &quot;-&quot; -f2)
                  int3=$(echo $choi | cut -d &quot;:&quot; -f2 | cut -d &quot;-&quot; -f1)
                  int4=$(echo $choi | cut -d &quot;:&quot; -f2 | cut -d &quot;-&quot; -f2)
                  if [ $int1 -lt $int2 ];then
                     if [ ! $(echo $choi | grep -E -c &quot;:&quot;) -eq 1 ] ; then
                        if [ $NumDAY -eq 6 ] ; then
                           HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1-$int2&quot;
                        else
                           HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1-$int2|&quot;
                        fi
                        MINUTES1=$(echo $int1 | sed -e 's/.\{02\}//')
                        HEURES1=$(echo $int1 | sed -e 's/.\{02\}$//') 
                        MINUTES2=$(echo $int2 | sed -e 's/.\{02\}//')
                        HEURES2=$(echo $int2 | sed -e 's/.\{02\}$//')
			echo &quot;$PCUSER=$NumDAY=$HEURES1\h$MINUTES1\:$HEURES2\h$MINUTES2&quot; &gt;&gt; $FILE_HCONF   
                        echo &quot;$MINUTES2 $HEURES2 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
                        break
   
                     else   
                        if [ $int2 -lt $int3 ];then
                           if [ $int3 -lt $int4 ];then
                              if [ $NumDAY -eq 6 ] ; then
                                 HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1-$int2|${DAYSPAM[$NumDAY]}$int3-$int4&quot;
                              else
                                 HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1-$int2|${DAYSPAM[$NumDAY]}$int3-$int4|&quot;
                              fi
                              MINUTES1=$(echo $int1 | sed -e 's/.\{02\}//')
                              HEURES1=$(echo $int1 | sed -e 's/.\{02\}$//')   
                              MINUTES2=$(echo $int2 | sed -e 's/.\{02\}//')
                              HEURES2=$(echo $int2 | sed -e 's/.\{02\}$//')  
                              MINUTES3=$(echo $int3 | sed -e 's/.\{02\}//')
                              HEURES3=$(echo $int3 | sed -e 's/.\{02\}$//')   
                              MINUTES4=$(echo $int4 | sed -e 's/.\{02\}//')
                              HEURES4=$(echo $int4 | sed -e 's/.\{02\}$//')   
                              ## minutes heures jourdumoi moi jourdelasemaine utilisateur  commande
			      echo &quot;$PCUSER=$NumDAY=$HEURES1\h$MINUTES1\:$HEURES2\h$MINUTES2:$HEURES3\h$MINUTES3\:$HEURES4\h$MINUTES4&quot; &gt;&gt; $FILE_HCONF
                              echo &quot;$MINUTES2 $HEURES2 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
                              echo &quot;$MINUTES4 $HEURES4 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
                              break   
                           else
                              errortime1
                           fi
                        else
                           errortime1
                        fi
                     fi
                  else
                     errortime1
   
                  fi
                       
               else
                  errortime2   
               fi
           
         done
     
        done
     
      echo &quot;*;*;$PCUSER;$HORAIRESPAM&quot; &gt;&gt; $FILEPAMTIMECONF
   done
   
   for NumDAY in 0 1 2 3 4 5 6
   do
      echo &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
   done
   echo &gt;&gt; $FILE_HCONF
$SED &quot;s?^HOURSCONNECT.*?HOURSCONNECT=ON?g&quot; $FILE_CONF
$CMDSERVICE$namservicecrond restart
}

desactivetimelogin () {
for FILE in `echo $GESTIONNAIREDESESSIONS`
do
   $SED &quot;/account required pam_time.so/d&quot; $DIRPAM$FILE
done
cat $FILEPAMTIMECONF.old &gt; $FILEPAMTIMECONF
for NumDAY in 0 1 2 3 4 5 6
do
   rm -f /etc/cron.d/CTparental${DAYS[$NumDAY]}
done
$SED &quot;s?^HOURSCONNECT.*?HOURSCONNECT=OFF?g&quot; $FILE_CONF

$CMDSERVICE$namservicecrond restart
}


readTimeFILECONF () {
   TESTGESTIONNAIRE=&quot;&quot;
   for FILE in `echo $GESTIONNAIREDESESSIONS`
   do
      if [ -f $DIRPAM$FILE ];then
         if [ $(cat $DIRPAM$FILE | grep -c &quot;account required pam_time.so&quot;) -eq 0  ] ; then
            echo &quot;account required pam_time.so&quot; &gt;&gt; $DIRPAM$FILE
         fi
         TESTGESTIONNAIRE=$TESTGESTIONNAIRE\ $FILE
      fi
   done
   if [ $( echo $TESTGESTIONNAIRE | wc -m ) -eq 1 ] ; then
      echo &quot;Aucun gestionner de session connu , n'a été détecté.&quot;
      echo &quot; il est donc impossible d'activer le controle horaires des connections&quot;
      desactivetimelogin
      exit 1
   fi
   
   if [ ! -f $FILEPAMTIMECONF.old ] ; then
   cp $FILEPAMTIMECONF $FILEPAMTIMECONF.old
   fi
   echo &quot;*;*;root;Al0000-2400&quot; &gt; $FILEPAMTIMECONF
   for NumDAY in 0 1 2 3 4 5 6
   do
   echo  &gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
   done
   
   for PCUSER in `cat /etc/passwd | cut -d&quot;:&quot; -f1,3| grep -E [1-9][0-9][0-9][0-9] | cut -d &quot;:&quot; -f1`
   do
   HORAIRESPAM=&quot;&quot;
  	userisconfigured=&quot;0&quot;

	while read line
	do
	
			if [ $( echo $line | grep -E -c &quot;^$PCUSER=[0-6]=&quot; ) -eq 1 ] ; then
				echo &quot;$line&quot; 
				NumDAY=$(echo $line | cut -d&quot;=&quot; -f2)
				h1=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f1 | cut -d&quot;h&quot; -f1)
				m1=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f1 | cut -d&quot;h&quot; -f2)
				h2=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f2 | cut -d&quot;h&quot; -f1)
				m2=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f2 | cut -d&quot;h&quot; -f2)
				h3=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f3 | cut -d&quot;h&quot; -f1)
				m3=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f3 | cut -d&quot;h&quot; -f2)
				h4=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f4 | cut -d&quot;h&quot; -f1)
				m4=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f4 | cut -d&quot;h&quot; -f2)
				if [ $(echo -n $h3$m3 | wc -c) -gt 2 ]; then
 					if [ $NumDAY -eq 6 ] ; then
		                        	HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$h1$m1-$h2$m2|${DAYSPAM[$NumDAY]}$h3$m3-$h4$m4&quot;
						
		                      	else
		                        	HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$h1$m1-$h2$m2|${DAYSPAM[$NumDAY]}$h3$m3-$h4$m4|&quot;
		                      	fi
					echo &quot;$m2 $h2 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
					echo &quot;$m4 $h4 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
					userisconfigured=&quot;1&quot;

				else
				        if [ $NumDAY -eq 6 ] ; then
				           HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$h1$m1-$h2$m2&quot;
				        else
				           HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$h1$m1-$h2$m2|&quot;
				        fi
					echo &quot;$m2 $h2 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
					userisconfigured=&quot;1&quot;
				fi
			fi
	
	
	done &lt; $FILE_HCONF
	if [ $userisconfigured -eq 1 ] ; then
		echo &quot;*;*;$PCUSER;$HORAIRESPAM&quot; &gt;&gt; $FILEPAMTIMECONF
	else
		echo &quot;*;*;$PCUSER;Al0000-2400&quot; &gt;&gt; $FILEPAMTIMECONF
	fi
   done

$SED &quot;s?^HOURSCONNECT.*?HOURSCONNECT=ON?g&quot; $FILE_CONF
$CMDSERVICE$namservicecrond restart
}


if [ ! -z ${2} ];then
   DIRhtmlPersonaliser=${2}
   if [ ! -d $DIRhtmlPersonaliser ];then
      echo &quot;Chemin de répertoir non valide!&quot;
      exit 0
   fi
fi
usage=&quot;Usage: CTparental.sh    {-i }|{ -u }|{ -dl }|{ -ubl }|{ -rl }|{ -on }|{ -off }|{ -cble }|{ -dble }
                               |{ -tlo }|{ -tlu }|{ -uhtml }|{ -aupon }|{ -aupoff }|{ -aup } 
-i      =&gt; Install le controll parental sur l'ordinateur (pc de bureau) peut ètre utiliser avec
           un paramètre suplémentaire pour indiquer un chemin de sources pour la page web de redirection.
           exemple : CTparental.sh -i /home/toto/html/
           si pas d'option le \&quot;sens interdit\&quot; est utiliser par default.
-u      =&gt; désinstall le controll parental de l'ordinateur (pc de bureau)
-dl     =&gt; mais a jour le controll a partir de la black liste de l'université de toulouse
-ubl    =&gt; A faire aprés chaque modification du fichier $DNS_FILTER_OSSI
-rl     =&gt; A faire aprés chaque modification manuel du fichier $DREAB
-on     =&gt; Active le controll parental
-off    =&gt; Désactive le controll parental
-cble   =&gt; Configure du mode de filtrage par liste blanche ou par liste noir(default) ainssi que les 
           catégories que l'on veux activer.
-dble   =&gt; Remet les catégories activent par défaut et filtrage par liste noir.
-tlo    =&gt; Active est paramètre les restrictions horaire de login pour les utilisateurs.
           Compatible avec les gestionnaire de sessions suivant $GESTIONNAIREDESESSIONS .
-tlu    =&gt; Desative les restrictions horaire de login pour les utilisateurs.
-uhtml  =&gt; mait a jour la page de redirection a partir d'un repertoir source ou par defaut avec 
            le \&quot;sens interdit\&quot;.
            exemples:
                     - avec un repertoir source : CTparental.sh -uhtml /home/toto/html/
   		     - par default :              CTparental.sh -uhtml
-aupon  =&gt; active la mise ajour automatique de la black liste de toulouse (tous les 7 jours).
-aupoff =&gt; desactve la mise ajour automatique de la black liste de toulouse.
-aup    =&gt; comme -dl mais seulement si il n'y a pas eu de mise a jour depuis plus de 7 jours.	
 &quot;
case $args in
   -\? | -h* | --h*)
      echo &quot;$usage&quot;
      exit 0
      ;;
   -i | --install )
      install
      exit 0
      ;;
   -u | --uninstall )
      autoupdateoff 
      dnsmasqoff
      desactivetimelogin
      uninstall
      exit 0
      ;;
   -dl | --download )
      download
      adapt
      catChoice
      dnsmasqon
      $SED &quot;s?^LASTUPDATE.*?LASTUPDATE=$THISDAYS=`date +%d-%m-%Y\ %T`?g&quot; $FILE_CONF
      exit 0
      ;;
   -ubl | --updatebl )
      adapt
      catChoice
      dnsmasqon
      exit 0
      ;;
   -uhtml | --updatehtml )
      FoncHTTPDCONF
      exit 0
      ;;
   -rl | --reload )
      catChoice
      dnsmasqon
      exit 0
      ;;
   -on | --on )
      dnsmasqon
      exit 0
      ;;
   -off | --off )
      autoupdateoff 
      dnsmasqoff
      exit 0
      ;;
   -wlo | --whitelistonly )
      dnsmasqwhitelistonly
      exit 0
      ;;
   -cble | --confblenable )
      choiblenabled
      catChoice
      dnsmasqon
      exit 0
      ;;
    -dble | --defaultblenable )
      initblenabled
      catChoice
      dnsmasqon
      ;;
    -tlo | --timeloginon )
      activetimelogin
      ;;
    -tlu | --timeloginon )
      desactivetimelogin
      ;;
    -trf | --timeloginon )
      readTimeFILECONF
      ;;
    -aupon | --autoupdateon )
      autoupdateon
      ;;
    -aupoff | --autoupdateoff )
      autoupdateoff
      ;;
    -aup | --autoupdate )
      autoupdate
      ;;
      
   *)
      echo &quot;Argument inconnu :$1&quot;;
      echo &quot;$usage&quot;;
      exit 1
      ;;
esac


&lt;/code&gt;
'''index.php'''
&lt;code php&gt;
&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;
&lt;HTML&gt;&lt;!-- written by Rexy --&gt;
&lt;HEAD&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot;&gt;
&lt;TITLE&gt;ALCASAR DNS filtering&lt;/TITLE&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;/CTadmin/css/style.css&quot; type=&quot;text/css&quot;&gt;
&lt;/HEAD&gt;
&lt;body&gt;
&lt;?
function form_filter ($form_content)
{
// réencodage iso + format unix + rc fin de ligne (ouf...)
	$list = str_replace(&quot;\r\n&quot;, &quot;\n&quot;, utf8_decode($form_content));
	if (strlen($list) != 0){
		if ($list[strlen($list)-1] != &quot;\n&quot;) { $list[strlen($list)]=&quot;\n&quot;;} ;} ;
	return $list;
}
# Choice of language
$Language = 'en';
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
  $Langue = explode(&quot;,&quot;,$_SERVER['HTTP_ACCEPT_LANGUAGE']);
  $Language = strtolower(substr(chop($Langue[0]),0,2)); }
if($Language == 'fr'){
  $l_hours_error1=&quot;un mauvais format horaire a étais trouver:exemple 8h30 doit c'écrir 08h30&quot;;
  $l_hours_error2=&quot;incoérance horaire: &quot;;
  $l_hours_on = &quot;Les horaires de connection sont actuellement activés&quot;;
  $l_hours_off = &quot;Les horaires de connection sont actuellement désactivés&quot;;
  $l_switch_hours_off = &quot;Désactiver les horaires de connection&quot;;
  $l_switch_hours_on = &quot;Activer les horaires de connection&quot;;
  $l_hours1 = &quot;Heures de connections autorisées&quot;;
  $l_switch_Init_bl = &quot;Init Catégories&quot;;
  $l_auto_update_on = &quot;La mise a jour de la blackliste de Toulouse tout les 7 jour est activé&quot;;
  $l_auto_update_off = &quot;La mise a jour de la blackliste de Toulouse tout les 7 jour est désactivé&quot;;
  $l_switch_auto_update_on = &quot;Activer Maj Auto&quot;;
  $l_switch_auto_update_off = &quot;Désactiver Maj Auto&quot;;
  $l_fmenu_black = &quot;Firlrage par BlackListe&quot;;
  $l_fmenu_white = &quot;Firlrage par WhiteListe&quot;;
  $l_title1 = &quot;Filtrage de noms de domaine &quot;;
  $l_error_open_file=&quot;Erreur d'ouverture du fichier&quot;;
  $l_dnsfilter_on=&quot;Le filtrage de noms de domaine est actuellement activé&quot;;
  $l_dnsfilter_off=&quot;Le filtrage de noms de domaine est actuellement désactivé&quot;;
  $l_switch_filtering_on=&quot;Activer le filtrage&quot;;
  $l_switch_filtering_off=&quot;Désactiver le filtrage&quot;;
  $l_main_bl=&quot;Liste noire/blanche&quot;;
  $l_bl_version=&quot;Version actuelle :&quot;;
  $l_bl_categories_bl=&quot;Choix des catégories à filtrer&quot;;
  $l_bl_categories_wl=&quot;Choix des catégories à autoriser&quot;;
  $l_download_bl=&quot;Télécharger la dernière version&quot;;
  $l_fingerprint=&quot;L'empreinte numérique du fichier téléchargé est : &quot;;
  $l_fingerprint2=&quot;Vérifiez-là en suivant ce lien (ligne 'blacklists.tar.gz') : &quot;;
  $l_activate_bl=&quot;Activer la nouvelle version&quot;;
  $l_reject_bl=&quot;Rejeter&quot;;
  $l_warning=&quot;Temps estimé : une minute.&quot;;
  $l_specific_filtering=&quot;Filtrage special&quot;;
  $l_forbidden_dns=&quot;Noms de domaine filtrés&quot;;
  $l_forbidden_dns_explain=&quot;Entrez un nom de domaine par ligne (exemple : domaine.org)&quot;;
  $l_one_dns=&quot;Entrez un nom de domaine par ligne (exemple : domaine.org)&quot;;
  $l_rehabilitated_dns=&quot;Noms de domaine réhabilités&quot;;
  $l_rehabilitated_dns_explain_bl=&quot;1-Entrez ici des noms de domaine bloqués par la liste noire &lt;BR&gt; que vous souhaitez réhabiliter.&quot;;
  $l_rehabilitated_dns_explain_wl=&quot;2-Entrez ici des noms de domaine autorisée en plus de ceux &lt;BR&gt; de la liste blanche de Toulouze.&quot;;
  $l_add_to_bl=&quot;Noms de domaine ajoutés à la liste noire&quot;;
   $l_record=&quot;Enregistrer les modifications&quot;;
  $l_wait=&quot;Une fois validées, 30 secondes sont nécessaires pour traiter vos modifications&quot;;
}
else {
  $l_hours_error1=&quot;un mauvais format horaire a étais trouver:exemple 8h30 doit c'écrir 08h30&quot;;
  $l_hours_error2=&quot;incoérance horaire: &quot;;
  $l_hours_on = &quot;Les horaires de connection sont actuellement activés&quot;;
  $l_hours_off = &quot;Les horaires de connection sont actuellement désactivés&quot;;
  $l_switch_hours_off = &quot;Désactiver les horaires de connection&quot;;
  $l_switch_hours_on = &quot;Activer les horaires de connection&quot;;
  $l_hours1 = &quot;Heures de connections autorisées&quot;;
  $l_switch_Init_bl = &quot;Init Catégories&quot;;
  $l_auto_update_on = &quot;La mise a jour de la blackliste de Toulouse tout les 7 jour est activé&quot;;
  $l_auto_update_off = &quot;La mise a jour de la blackliste de Toulouse tout les 7 jour est désactivé&quot;;
  $l_switch_auto_update_on = &quot;Activer Maj Auto&quot;;
  $l_switch_auto_update_off = &quot;Désactiver Maj Auto&quot;;
  $l_fmenu_black = &quot;Firlrage par BlackListe&quot;;
  $l_fmenu_white = &quot;Firlrage par WhiteListe&quot;;
  $l_title1 = &quot;Domain names filtering&quot;;
  $l_error_open_file=&quot;Error opening the file&quot;;
  $l_dnsfilter_on=&quot;Actually, the Domain name filter is on&quot;;
  $l_dnsfilter_off=&quot;Actually, the Domain name filter is off&quot;;
  $l_switch_filtering_on=&quot;Switch the Filter on&quot;;
  $l_switch_filtering_off=&quot;Switch the Filter off&quot;;
  $l_main_bl=&quot;Blacklist/Whiteliste&quot;;
  $l_bl_version=&quot;Current version : &quot;;
  $l_bl_categories_bl=&quot;Choice of filtered categories&quot;;
  $l_bl_categories_wl=&quot;Choice of autorised categories&quot;;
  $l_download_bl=&quot;Download the last version&quot;;
  $l_fingerprint=&quot;The digital fingerprint of the downloaded blacklist is : &quot;;
  $l_fingerprint2=&quot;Verify it with this link (line 'blacklists.tar.gz') : &quot;;
  $l_activate_bl=&quot;Activate the new version&quot;;
  $l_reject_bl=&quot;Reject&quot;;
  $l_warning=&quot;Estimated time : one minute.&quot;;
  $l_specific_filtering=&quot;Specific filtering&quot;;
  $l_forbidden_dns=&quot;Filtered domain names&quot;;
  $l_forbidden_dns_explain=&quot;Enter one domain name per row (exemple : domain.org)&quot;;
  $l_one_dns=&quot;Enter one domain name per row (example : domain.org)&quot;;
  $l_rehabilitated_dns=&quot;Rehabilitated domain names&quot;;
  $l_rehabilitated_dns_explain_bl=&quot;Enter here domain names that are blocked by the blacklist &lt;BR&gt; and you want to rehabilitate.&quot;;
  $l_rehabilitated_dns_explain_wl=&quot;2-Entrez ici des noms de domaine autorisée en plus de ceux &lt;BR&gt; de la liste blanche de Toulouze.&quot;;
  $l_add_to_bl=&quot;Domain names to add to blacklist&quot;;
  $l_record=&quot;Save changes&quot;;
  $l_wait=&quot;Once validated, 30 seconds is necessary to compute your modifications&quot;;
 }
$weeknum = array( 0,1,2,3,4,5,6);
$bl_categories=&quot;/usr/local/etc/CTparental/bl-categories-available&quot;;
$bl_categories_enabled=&quot;/usr/local/etc/CTparental/categories-enabled&quot;;
$conf_file=&quot;/usr/local/etc/CTparental/CTparental.conf&quot;;
$hconf_file=&quot;/usr/local/etc/CTparental/CThours.conf&quot;;
$wl_domains=&quot;/usr/local/etc/CTparental/domaine-rehabiliter&quot;;
$bl_domains=&quot;/usr/local/etc/CTparental/blackliste-local&quot;;
# default values


if (isset($_POST['choix'])){ $choix=$_POST['choix']; } else { $choix=&quot;&quot;; }
switch ($choix)
{
case 'BL_On' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -on&quot;);
	break;
case 'BL_Off' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -off&quot;);
	break;
case 'H_On' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -trf&quot;);
	break;
case 'H_Off' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -tlu&quot;);
	break;
case 'AUP_On' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -aupon&quot;);
	break;
case 'AUP_Off' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -aupoff&quot;);
	break;
case 'INIT_BL' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -dble&quot;);
	break;
case 'Download_bl' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -dl&quot;);
	break;
case 'MAJ_cat' :
	$tab=file($bl_categories_enabled);	
	if ($tab)
		{
		$pointeur=fopen($bl_categories_enabled, &quot;w+&quot;);
		foreach ($_POST as $key =&gt; $value)
			{
                        if (strstr($key,'chk-'))
				{	
				$line=str_replace('chk-','',$key).&quot;\n&quot;;
				fwrite($pointeur,$line);
				}
			}
		fclose($pointeur);
		}
	else {echo &quot;$l_error_open_file $bl_categories_enabled&quot;;}
	$fichier=fopen($bl_domains,&quot;w+&quot;);
	fputs($fichier, form_filter($_POST['OSSI_bl_domains']));
	fclose($fichier);
	unset($_POST['OSSI_bl_domains']);
	$fichier=fopen($wl_domains,&quot;w+&quot;);
	fputs($fichier, form_filter($_POST['OSSI_wl_domains']));
	fclose($fichier);
	unset($_POST['OSSI_wl_domains']);
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -ubl&quot;);
	break;
case 'MAJ_H' :
	$formatheuresok=1;
	if (isset($_POST['selectuser'])){ $selectuser=$_POST['selectuser']; }
	#echo &quot;$selectuser&quot;;
	$tab=file($hconf_file);	
	if ($tab)
	{
		$pointeur=fopen($hconf_file, &quot;w+&quot;);	
		foreach ($tab as $line)
		{
			if (strstr($line,$selectuser) == false)
			{
				fwrite($pointeur,$line); # on reécrit toutes les lignes ne corepondent pas a l'utilisateur selectionner
			}
	
		}
	}
	else {echo &quot;$l_error_open_file $hconf_file&quot;;}
	if (isset($_POST[&quot;isadmin&quot;])){fwrite($pointeur,&quot;$selectuser=admin=&quot;.&quot;\n&quot;); } 
	else 
	{
		fwrite($pointeur,&quot;$selectuser=user=&quot;.&quot;\n&quot;); 
		foreach ($weeknum as $numday)
		{
			$formatheuresok=1;
			if (isset($_POST[&quot;h1$numday&quot;])){ $h1[$numday]=$_POST[&quot;h1$numday&quot;]; } else { $h1[$numday]=&quot;00h00&quot;; }
			if (isset($_POST[&quot;h2$numday&quot;])){ $h2[$numday]=$_POST[&quot;h2$numday&quot;]; } else { $h2[$numday]=&quot;23h59&quot;; }
			if (isset($_POST[&quot;h3$numday&quot;])){ $h3[$numday]=$_POST[&quot;h3$numday&quot;]; } else { $h3[$numday]=&quot;&quot;; }
			if (isset($_POST[&quot;h4$numday&quot;])){ $h4[$numday]=$_POST[&quot;h4$numday&quot;]; } else { $h4[$numday]=&quot;&quot;; }
			if (preg_match(&quot;/^[0-1][0-9]h[0-5][0-9]$|^2[0-3]h[0-5][0-9]$/&quot;,$h1[$numday])!=1){$formatheuresok=0;}
			if (preg_match(&quot;/^[0-1][0-9]h[0-5][0-9]$|^2[0-3]h[0-5][0-9]$/&quot;,$h2[$numday])!=1){$formatheuresok=0;}
			if ($h3[$numday]==&quot;&quot;)
			{	
	
				if ($formatheuresok == 1)
				{
					$t1=explode(&quot;h&quot;, $h1[$numday]);
					$t2=explode(&quot;h&quot;, $h2[$numday]);
					$v1=&quot;$t1[0]$t1[1]&quot;;
					$v2=&quot;$t2[0]$t2[1]&quot;;
					if ( $v1 &lt; $v2)
					{
						fwrite($pointeur,&quot;$selectuser=$numday=$h1[$numday]:$h2[$numday]&quot;.&quot;\n&quot;);
					}
					else
					{
						fwrite($pointeur,&quot;$selectuser=$numday=00h00:23h59&quot;.&quot;\n&quot;);
						echo &quot;&lt;H3&gt;$l_hours_error2 $h1[$numday]&gt;=$h2[$numday]&lt;/H3&gt;&quot;;
					}
				}
				else 
				{
					fwrite($pointeur,&quot;$selectuser=$numday=00h00:23h59&quot;.&quot;\n&quot;);
					echo &quot;&lt;H3&gt;$l_hours_error1&lt;/H3&gt;&quot;;
				}
			}
			else 
			{
				if (preg_match(&quot;/^[0-1][0-9]h[0-5][0-9]$|^2[0-3]h[0-5][0-9]$/&quot;,$h3[$numday])!=1){$formatheuresok=0;}
				if (preg_match(&quot;/^[0-1][0-9]h[0-5][0-9]$|^2[0-3]h[0-5][0-9]$/&quot;,$h4[$numday])!=1){$formatheuresok=0;}
				if ($formatheuresok == 1)
				{
					$t1=explode(&quot;h&quot;, $h1[$numday]);
					$t2=explode(&quot;h&quot;, $h2[$numday]);
					$t3=explode(&quot;h&quot;, $h3[$numday]);
					$t4=explode(&quot;h&quot;, $h4[$numday]);
					$v1=&quot;$t1[0]$t1[1]&quot;;
					$v2=&quot;$t2[0]$t2[1]&quot;;
					$v3=&quot;$t3[0]$t3[1]&quot;;
					$v4=&quot;$t4[0]$t4[1]&quot;;
					if ( $v1 &lt; $v2 &amp;&amp; $v2 &lt; $v3 &amp;&amp; $v3 &lt; $v4)
					{
					fwrite($pointeur,&quot;$selectuser=$numday=$h1[$numday]:$h2[$numday]:$h3[$numday]:$h4[$numday]&quot;.&quot;\n&quot;);
					}
					else
					{
						fwrite($pointeur,&quot;$selectuser=$numday=00h00:23h59&quot;.&quot;\n&quot;);
						echo &quot;&lt;H3&gt;$l_hours_error2 $h1[$numday]&gt;=$h2[$numday]&gt;=$h3[$numday]&gt;=$h4[$numday]&lt;/H3&gt;&quot;;
					}
				}
				else 
				{
					fwrite($pointeur,&quot;$selectuser=$numday=00h00:23h59&quot;.&quot;\n&quot;);
					echo &quot;&lt;H3&gt;$l_hours_error1&lt;/H3&gt;&quot;;
					
				}
			}

		}
	}
	
	fclose($pointeur);
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -trf&quot;);
	break;

}

echo &quot;&lt;TABLE width='100%' border=0 cellspacing=0 cellpadding=0&gt;&quot;;
echo &quot;&lt;tr&gt;&lt;th&gt;$l_title1&lt;/th&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;tr bgcolor='#FFCC66'&gt;&lt;td&gt;&lt;img src='/images/pix.gif' width=1 height=2&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;/TABLE&gt;&quot;;
echo &quot;&lt;TABLE width='100%' border=1 cellspacing=0 cellpadding=0&gt;&quot;;
echo &quot;&lt;tr&gt;&lt;td valign='middle' align='left'&gt;&quot;;

if (is_file ($conf_file))
	{
	$tab=file($conf_file);
	if ($tab)
		{
		foreach ($tab as $line)
			{
			$field=explode(&quot;=&quot;, $line);
			if ($field[0] == &quot;LASTUPDATE&quot;)	{$LASTUPDATE=trim($field[2]);}
			if ($field[0] == &quot;DNSMASQ&quot;)		{$DNSMASQ=trim($field[1]);}
			if ($field[0] == &quot;AUTOUPDATE&quot;)		{$AUTOUPDATE=trim($field[1]);}
			if ($field[0] == &quot;HOURSCONNECT&quot;)	{$HOURSCONNECT=trim($field[1]);}
                        
			}
		}
	}
else { echo &quot;$l_error_open_file $conf_file&quot;;}
if ($DNSMASQ &lt;&gt; &quot;OFF&quot;)
	{
	echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_dnsfilter_on&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
 	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type=hidden name='choix' value=\&quot;BL_Off\&quot;&gt;&quot;;
	echo &quot;&lt;input type=submit value=\&quot;$l_switch_filtering_off\&quot;&gt;&quot;;
}
else
	{
	echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_dnsfilter_off&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
 	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type=hidden name='choix' value=\&quot;BL_On\&quot;&gt;&quot;;
	echo &quot;&lt;input type=submit value=\&quot;$l_switch_filtering_on\&quot;&gt;&quot;;
	}
echo &quot;&lt;/FORM&gt;&quot;;
if ( $DNSMASQ&lt;&gt;&quot;OFF&quot;){
include 'dns.php';
}
echo &quot;&lt;/TABLE&gt;&quot;;
echo &quot;&lt;TABLE width='100%' border=0 cellspacing=0 cellpadding=0&gt;&quot;;
echo &quot;&lt;tr&gt;&lt;th&gt;$l_hours1&lt;/th&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;tr bgcolor='#FFCC66'&gt;&lt;td&gt;&lt;img src='/images/pix.gif' width=1 height=2&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;/TABLE&gt;&quot;;
echo &quot;&lt;TABLE width='100%' border=1 cellspacing=0 cellpadding=0&gt;&quot;;
echo &quot;&lt;tr&gt;&lt;td valign='middle' align='left'&gt;&quot;;
if ($HOURSCONNECT == &quot;ON&quot;)
	{
	echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_hours_on&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
 	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type=hidden name='choix' value=\&quot;H_Off\&quot;&gt;&quot;;
	echo &quot;&lt;input type=submit value=\&quot;$l_switch_hours_off\&quot;&gt;&quot;;
}
else
	{
	echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_hours_off&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
 	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type=hidden name='choix' value=\&quot;H_On\&quot;&gt;&quot;;
	echo &quot;&lt;input type=submit value=\&quot;$l_switch_hours_on\&quot;&gt;&quot;;
	}
echo &quot;&lt;/FORM&gt;&quot;;

if ($HOURSCONNECT == &quot;ON&quot;)
{
include 'hours.php';
}
echo &quot;&lt;/td&gt;&lt;/tr&gt;&quot;;
?&gt;
&lt;/BODY&gt;
&lt;/HTML&gt;
&lt;/code&gt;
'''dns.php'''
&lt;code php&gt;
&lt;?
if (isset($_GET['filtragemode'])){ $filtragemode=$_GET['filtragemode']; } else {$filtragemode=$DNSMASQ;}
if ($filtragemode == 'WHITE')
{
$bl_categories=&quot;/usr/local/etc/CTparental/wl-categories-available&quot;;
}
else { $bl_categories=&quot;/usr/local/etc/CTparental/bl-categories-available&quot;;}

$filtragemode = urlencode($filtragemode);
echo &quot;&lt;table border=0 width=400 cellpadding=0 cellspacing=2&gt;&quot;;
echo &quot;&lt;tr valign=top&gt;&quot;;
echo &quot;&lt;td align=center&quot;; if ( $filtragemode == &quot;BLACK&quot; ) { echo &quot; bgcolor=\&quot;#FFCC66\&quot;&quot;;} echo &quot;&gt;&quot;;
echo &quot;&lt;a href=\&quot;$_SERVER[PHP_SELF]?filtragemode=BLACK\&quot; title=\&quot;\&quot;&gt;&lt;font color=\&quot;black\&quot;&gt;&lt;b&gt;$l_fmenu_black&lt;/b&gt;&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&quot;;
echo &quot;&lt;td align=center&quot;; if ( $filtragemode == &quot;WHITE&quot; ) { echo &quot; bgcolor=\&quot;#FFCC66\&quot;&quot;;} echo &quot;&gt;&quot;;
echo &quot;&lt;a href=\&quot;$_SERVER[PHP_SELF]?filtragemode=WHITE\&quot; title=\&quot;\&quot;&gt;&lt;font color=\&quot;black\&quot;&gt;&lt;b&gt;$l_fmenu_white&lt;/b&gt;&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&quot;;
echo &quot;&lt;/tr&gt;&quot;;
echo&quot; &lt;/table&gt;&quot;;
echo &quot;&lt;/td&gt;&lt;/tr&gt;&quot;;


function echo_file ($filename)
	{
	if (file_exists($filename))
		{
		if (filesize($filename) != 0)
			{
			$pointeur=fopen($filename,&quot;r&quot;);
			$tampon = fread($pointeur, filesize($filename));
			fclose($pointeur);
			echo $tampon;
			}
		}
	else
		{
		echo &quot;$l_error_openfile $filename&quot;;
		}
	}

echo &quot;&lt;TABLE width='100%' border=1 cellspacing=0 cellpadding=1&gt;&quot;;
echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_main_bl&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
echo &quot;&lt;tr&gt;&lt;td valign='middle' align='left' colspan=10&gt;&quot;;
echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
echo &quot;&lt;center&gt;$l_bl_version $LASTUPDATE&quot;;
echo &quot;&lt;/center&gt;&lt;BR&gt;&quot;;
	echo &quot;&lt;input type='hidden' name='choix' value='Download_bl'&gt;&quot;;
	echo &quot;&lt;input type='submit' value='$l_download_bl'&gt;&quot;;
	echo &quot; ($l_warning)&quot;;

echo &quot;&lt;/FORM&gt;&quot;;
echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
echo &quot;&lt;input type='hidden' name='choix' value='INIT_BL'&gt;&quot;;
echo &quot;&lt;input type='submit' value='$l_switch_Init_bl'&gt;&quot;;
echo &quot;&lt;/FORM&gt;&quot;;
if ($AUTOUPDATE == &quot;ON&quot;)
	{
	echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_auto_update_on&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
 	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type=hidden name='choix' value=\&quot;AUP_Off\&quot;&gt;&quot;;
	echo &quot;&lt;input type=submit value=\&quot;$l_switch_auto_update_off\&quot;&gt;&quot;;
}
else
	{
	echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_auto_update_off&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
 	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type=hidden name='choix' value=\&quot;AUP_On\&quot;&gt;&quot;;
	echo &quot;&lt;input type=submit value=\&quot;$l_switch_auto_update_on\&quot;&gt;&quot;;
	}
echo &quot;&lt;/FORM&gt;&quot;;
echo &quot;&lt;/td&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;tr&gt;&lt;td valign=\&quot;middle\&quot; align=\&quot;left\&quot; colspan=10&gt;&quot;;
echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
echo &quot;&lt;input type='hidden' name='choix' value='MAJ_cat'&gt;&quot;;
if ($filtragemode == &quot;BLACK&quot;){echo &quot;&lt;center&gt;$l_bl_categories_bl&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;}
else {echo &quot;&lt;center&gt;$l_bl_categories_wl&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;}

//on lit et on interprete le fichier de catégories
$cols=1; 
if (file_exists($bl_categories))
	{
	$pointeur=fopen($bl_categories,&quot;r&quot;);
	while (!feof ($pointeur))
		{
		$ligne=fgets($pointeur, 4096);
		if ($ligne)
			{
			if ($cols == 1) { echo &quot;&lt;tr&gt;&quot;;}
			$categorie=trim(basename($ligne));
			echo &quot;&lt;td&gt;&lt;a href='bl_categories_help.php?cat=$categorie' target='cat_help' onclick=window.open('bl_categories_help.php','cat_help','width=600,height=150,toolbar=no,scrollbars=no,resizable=yes') title='categories help page'&gt;$categorie&lt;/a&gt;&lt;br&gt;&quot;;
			echo &quot;&lt;input type='checkbox' name='chk-$categorie'&quot;;
			// la categorie n'existe pas dans le fichier de categorie activer -&gt; categorie non selectionnée
                        $str = file_get_contents($bl_categories_enabled);
			if (strpos($str, $categorie)===false) { echo &quot;&gt;&quot;;}
			else { echo &quot;checked&gt;&quot;; }
			echo &quot;&lt;/td&gt;&quot;;
			$cols++;
			if ($cols &gt; 10) {
				echo &quot;&lt;/tr&gt;&quot;;
				$cols=1; }
			}
		}
	fclose($pointeur);
	}
else	{
	echo &quot;$l_error_open_file $bl_categories&quot;;
	}
echo &quot;&lt;/td&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;tr&gt;&lt;td valign='middle' align='left' colspan=10&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;tr&gt;&lt;td colspan=5 align=center&gt;&quot;;
if ($filtragemode == &quot;BLACK&quot;){echo &quot;&lt;H3&gt;$l_rehabilitated_dns&lt;/H3&gt;$l_rehabilitated_dns_explain_bl&lt;BR&gt;$l_one_dns&lt;BR&gt;&quot;;}
else {echo &quot;&lt;H3&gt;$l_rehabilitated_dns&lt;/H3&gt;$l_rehabilitated_dns_explain_wl&lt;BR&gt;$l_one_dns&lt;BR&gt;&quot;;}
echo &quot;&lt;textarea name='OSSI_wl_domains' rows=5 cols=40&gt;&quot;;
echo_file ($wl_domains);
echo &quot;&lt;/textarea&gt;&lt;/td&gt;&quot;;
if ( $filtragemode == &quot;BLACK&quot; ) {
echo &quot;&lt;td colspan=5 align=center&gt;&quot;;
echo &quot;&lt;H3&gt;$l_forbidden_dns&lt;/H3&gt;$l_forbidden_dns_explain&lt;BR&gt;&quot;;
echo &quot;&lt;textarea name='OSSI_bl_domains' rows=5 cols=40&gt;&quot;;
echo_file ($bl_domains);
echo &quot;&lt;/textarea&gt;&lt;/td&gt;&quot;;
}
echo &quot;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=10&gt;&quot;;

echo &quot;&lt;input type='submit' value='$l_record'&gt;&quot;;
echo &quot;&lt;/form&gt; ($l_wait)&quot;;

echo &quot;&lt;/td&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;/TABLE&gt;&quot;;
?&gt;
&lt;/code&gt;
'''hours.php'''
&lt;code php&gt;

&lt;?
# Choice of language
$Language = 'en';
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
  $Langue = explode(&quot;,&quot;,$_SERVER['HTTP_ACCEPT_LANGUAGE']);
  $Language = strtolower(substr(chop($Langue[0]),0,2)); }
if($Language == 'fr'){
  $l_selectuser=&quot;l'utilisateur selectionner est: &quot;;
  $l_userisnotselect=&quot;Veuillez selectionner un utilisateur.&quot;;
  $l_isadmin = &quot;7j/7 24h/24&quot;;
  $l_valide = &quot;Enregistrer&quot;;
  $to = &quot; a &quot; ;
  $and = &quot; et &quot; ;
  $l_select = &quot;Selectionner&quot;;
  $l_info1 = &quot;08h00 a 24h00 ou 08h00 a 12h00 et 14h00 a 24h00&quot;;
  $week = array( &quot;lundi&quot;,&quot;mardi&quot;,&quot;mercredi&quot;,&quot;jeudi&quot;,&quot;vendredi&quot;,&quot;samedi&quot;,&quot;dimanche&quot;);
}
else {
  $l_userisnotselect=&quot;Veuillez selectionner un utilisateur.&quot;;
  $l_selectuser=&quot;l'utilisateur selectionner est: &quot;;
  $l_isadmin = &quot;7j/7 24h/24&quot;;
  $l_valide = &quot;Enregistrer&quot;;
  $l_select = &quot;Select&quot;;
  $to = &quot; to &quot; ;
  $and = &quot; and &quot; ;
  $l_info1 = &quot;08h00 a 24h00 ou 08h00 a 12h00 et 14h00 a 24h00&quot;;
  $week = array( &quot;lundi&quot;,&quot;mardi&quot;,&quot;mercredi&quot;,&quot;jeudi&quot;,&quot;vendredi&quot;,&quot;samedi&quot;,&quot;dimanche&quot;);
}
if (isset($_POST['selectuser'])){ $selectuser=$_POST['selectuser']; }


### on lit est on interprète le fichier CTparental.conf
echo &quot;&lt;TABLE width='100%' border=0 cellspacing=0 cellpadding=0&gt;&quot;;
exec (&quot;cat /etc/passwd | cut -d\&quot;:\&quot; -f1,3| grep -E [1-9][0-9][0-9][0-9] | cut -d \&quot;:\&quot; -f1&quot;,$USERSPC); # récupération des utilisateurs du poste.(UID &gt;= 1000)
echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;select name=\&quot;selectuser\&quot;&gt;&quot;;
	if ($selectuser){echo &quot;&lt;option value=\&quot;$selectuser\&quot;&gt;$selectuser\n&quot;; }
        else {echo &quot;&lt;option value=\&quot;\&quot;&gt;\n&quot;; }
	foreach ($USERSPC as $USERSELECT){echo &quot;&lt;option value=\&quot;$USERSELECT\&quot;&gt;$USERSELECT\n&quot;;}
	echo &quot; &lt;/select&gt;&quot;;
echo &quot;&lt;input type=\&quot;submit\&quot; value=\&quot;$l_select\&quot;&gt;&quot;;
echo &quot;&lt;/FORM&gt;&quot;;
if (isset($selectuser)) {
	echo &quot;&lt;/TABLE&gt;&quot;;
	echo &quot;&lt;TABLE width='400' border=0 cellspacing=0 cellpadding=0&gt;&quot;;
	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_selectuser $selectuser&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
	
	if (is_file ($hconf_file))
		{
		$tab=file($hconf_file);
		if ($tab)
			{
			foreach ($tab as $line)
				{
		                $field=explode(&quot;=&quot;, $line);
		                	if ( $field[0] == $selectuser ){
				        	$field2=explode(&quot;:&quot;, $field[2]);
						$numday=$field[1];
						$isconfigured=1;
						
		                        	if ( $numday == &quot;admin&quot;) { echo &quot;&lt;tr&gt;&lt;td&gt;$l_isadmin : &lt;/td&gt;&lt;td&gt;&lt;input type='checkbox' name='isadmin' checked&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;}
						elseif ( $numday == &quot;user&quot;) {echo &quot;&lt;tr&gt;&lt;td&gt;$l_isadmin : &lt;/td&gt;&lt;td&gt;&lt;input type='checkbox' name='isadmin' &gt;&lt;/td&gt;&lt;/tr&gt;&quot;;}
						else {
							echo&quot;&lt;tr&gt;&lt;td&gt;$week[$numday]:&lt;/td&gt;&lt;td&gt;&lt;INPUT type=\&quot;text\&quot; size=5 maxlength=5 value=\&quot;$field2[0]\&quot;  name=\&quot;h1$numday\&quot;&gt;&lt;/td&gt;&quot;;
				        	        echo&quot; &lt;td&gt;$to &lt;INPUT type=\&quot;text\&quot; size=5 maxlength=5 value=\&quot;$field2[1]\&quot; name=\&quot;h2$numday\&quot;&gt;&lt;/td&gt;&quot;;
				        	        echo&quot; &lt;td&gt;$and &lt;INPUT type=\&quot;text\&quot; size=5 maxlength=5 value=\&quot;$field2[2]\&quot; name=\&quot;h3$numday\&quot;&gt;&lt;/td&gt;&quot;;	
							echo&quot; &lt;td&gt;$to &lt;INPUT type=\&quot;text\&quot; size=5 maxlength=5 value=\&quot;$field2[3]\&quot; name=\&quot;h4$numday\&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;
						}
								            		
					}
				        
				}
			 	
			}
		
		}
	else { echo &quot;$l_error_open_file $hconf_file&quot;;}

	if (isset($isconfigured)==0){
		echo &quot;&lt;tr&gt;&lt;td&gt;$l_isadmin : &lt;/td&gt;&lt;td&gt;&lt;input type='checkbox' name='isadmin' checked=\&quot;checked\&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;
	}


	echo &quot;&lt;/TABLE&gt;&quot;;
	echo &quot;&lt;input type=hidden name='selectuser' value=\&quot;$selectuser\&quot;&gt;&quot;;
        echo &quot;&lt;input type=hidden name='choix' value=\&quot;MAJ_H\&quot;&gt;&quot;;
	echo &quot;&lt;input type=\&quot;submit\&quot; value=\&quot;$l_valide\&quot;&gt;&quot;;
	echo &quot;&lt;/FORM&gt;&quot;;
}
else { echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_userisnotselect&lt;/H3&gt;&lt;/CENTER&gt;&quot;;}
?&gt;

&lt;/code&gt;
'''bl_categories_help.php'''
&lt;code php&gt;
&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;
&lt;HTML&gt;&lt;!-- written by Rexy --&gt;
&lt;HEAD&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot;&gt;
&lt;?
$bl_dir=&quot;/usr/local/etc/CTparental/dnsfilter-available/&quot;;
# Choice of language
$Language = 'en';
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
  $Langue = explode(&quot;,&quot;,$_SERVER['HTTP_ACCEPT_LANGUAGE']);
  $Language = strtolower(substr(chop($Langue[0]),0,2)); }
if($Language == 'fr'){
  $l_title = &quot;Catégories de la liste noire&quot;;
  $l_error_open_file=&quot;Erreur d'ouverture du fichier&quot;;
  $l_close=&quot;Fermer&quot;;
  $l_unknown_cat=&quot;Cette catégorie n'est pas décrite&quot;;
  $l_nb_domains=&quot;Nombre de noms de domaine filtrés :&quot;;
  $l_nb_urls=&quot;Nombre d'URL filtrés :&quot;;
  $l_explain_adult=&quot;Sites relatifs à l'érotisme et à la pornographie&quot;;
  $l_explain_agressif=&quot;Sites extrémistes, racistes, antisémites ou incitant à la haine&quot;;
  $l_explain_arjel=&quot;Sites de pari en ligne certifies par l'ARJEL (Autorité de Régulation des Jeux En Ligne)&quot;;
  $l_explain_astrology=&quot;Sites relatifs à l'astrologie&quot;;
  $l_explain_bank=&quot;Sites de banques en ligne&quot;;
  $l_explain_audio_video=&quot;Sites de téléchargement de fichiers audio et vidéo&quot;;
  $l_explain_blog=&quot;Sites d'hébergement de blogs&quot;;
  $l_explain_celebrity=&quot;Sites « people », stars, etc.&quot;;
  $l_explain_chat=&quot;Sites de dialogue en ligne&quot;;
  $l_explain_child=&quot;Sites pour enfants&quot;;
  $l_explain_cleaning=&quot;Sites relatifs à la mise à jour logicielle ou antivirale&quot;;
  $l_explain_dangerous_material=&quot;Sites relatifs à la création de produits dangereux (explosif, poison, etc.)&quot;;
  $l_explain_dating=&quot;Sites de rencontres en ligne&quot;;
  $l_explain_drogue=&quot;Sites relatifs aux produits stupéfiants&quot;;
  $l_explain_filehosting=&quot;Entrepôts de fichiers  (vidéo, images, son, logiciels, etc.)&quot;;
  $l_explain_financial=&quot;Sites d'informations financières, bourses, etc.&quot;;
  $l_explain_forums=&quot;Sites d'hébergement de forums de discussion&quot;;
  $l_explain_gambling=&quot;Sites de jeux d'argent en ligne (casino, grattage virtuel, etc.)&quot;;
  $l_explain_games=&quot;Sites de jeux en ligne&quot;;
  $l_explain_hacking=&quot;Sites relatifs au piratage informatique&quot;;
  $l_explain_jobsearch=&quot;Sites de recherche d'emplois&quot;;
  $l_explain_liste_bu=&quot;Liste de sites éducatifs pour bibliothèque&quot;;
  $l_explain_malware=&quot;Site relatifs au logiciels malveillants (virus, vers, trojans, etc.)&quot;;
  $l_explain_manga=&quot;Site de Mangas&quot;;
  $l_explain_marketingware=&quot;Sites marchands douteux (X, organes, enfants, etc.)&quot;;
  $l_explain_mixed_adult=&quot;Sites pour adultes (image-choc, gore, guerre, etc.)&quot;;
  $l_explain_mobile_phone=&quot;Sites relatifs aux mobiles GSM (sonneries, logos, etc.)&quot;;
  $l_explain_ossi=&quot;Noms de domaine et URLs que vous ajoutez à la liste noire (voir ci-dessous)&quot;;
  $l_explain_phishing=&quot;Sites relatifs à l'hammeçonnage (pièges bancaires, redirection, etc.)&quot;;
  $l_explain_press=&quot;Sites de presse&quot;;
  $l_explain_publicite=&quot;Sites ou bannières publicitaires&quot;;
  $l_explain_radio=&quot;Sites de radios en ligne ou de podcast&quot;;
  $l_explain_reaffected=&quot;Sites connus ayant changé de propriétaire (et donc de contenu)&quot;;
  $l_explain_redirector=&quot;Sites de redirection, d'anonymisation ou de contournement&quot;;
  $l_explain_remote_control=&quot;Sites permettant la prise de controle a distance&quot;;
  $l_explain_sect=&quot;Sites sectaires&quot;;
  $l_explain_social_networks=&quot;Sites de réseaux sociaux&quot;;
  $l_explain_sexual_education=&quot;Sites relatifs à l'éducation sexuelle&quot;;
  $l_explain_shopping=&quot;Sites de vente et d'achat en ligne&quot;;
  $l_explain_sport=&quot;Sites de sport&quot;;
  $l_explain_strict_redirector=&quot;URL intentionnellement mal formées&quot;;
  $l_explain_strong_redirector=&quot;URL mal formées dans une requête « google »&quot;;
  $l_explain_tricheur=&quot;Sites relatifs aux tricheries (examens, concours, etc.)&quot;;
  $l_explain_webmail=&quot;Site WEB permettant de consultation son courrier électronique&quot;;
  $l_explain_warez=&quot;Sites relatifs aux logiciels piratés (crackés), aux générateurs de clés, etc.&quot;;
}
else {
  $l_title = &quot;Blacklist categories&quot;;
  $l_error_open_file=&quot;Error opening the file&quot;;
  $l_close=&quot;Close&quot;;
  $l_unknown_cat=&quot;This category isn't describe&quot;;
  $l_nb_domains=&quot;Number of filtered domain names :&quot;;
  $l_nb_urls=&quot;Number of filtered URL :&quot;;
  $l_explain_adult=&quot;Sites related to eroticism and pornography&quot;;
  $l_explain_agressif=&quot;Sites extremist, racist, anti-Semitic or hate&quot;;
  $l_explain_arjel=&quot;Online gambling sites allowed by the french authority 'ARJEL' (Autorité de Régulation des Jeux En Ligne)&quot;;
  $l_explain_astrology=&quot;Sites related to astrology&quot;;
  $l_explain_audio_video=&quot;Sites for downloading audio and video&quot;;
  $l_explain_bank=&quot;Online bank sites&quot;;
  $l_explain_blog=&quot;Sites hosting blogs&quot;;
  $l_explain_celebrity=&quot;Sites « people », stars, etc.&quot;;
  $l_explain_chat=&quot;Online chat sites&quot;;
  $l_explain_child=&quot;Sites for children&quot;;
  $l_explain_cleaning=&quot;Sites related to software update or antiviral&quot;;
  $l_explain_dangerous_material=&quot;Sites related to the creation of dangerous goods (explosives, poison, etc.)&quot;;
  $l_explain_dating=&quot;Online dating sites&quot;;
  $l_explain_drogue=&quot;Sites related to narcotic&quot;;
  $l_explain_filehosting=&quot;Warehouses of files (video, images, sound, software, etc.)&quot;;
  $l_explain_financial=&quot;Sites of financial information&quot;;
  $l_explain_forums=&quot;Sites hosting discussion forums&quot;;
  $l_explain_gambling=&quot;Online gambling sites (casino, virtual scratching, etc.)&quot;;
  $l_explain_games=&quot;Online games sites&quot;;
  $l_explain_hacking=&quot;Sites related to hacking&quot;;
  $l_explain_jobsearch=&quot;Job search sites&quot;;
  $l_explain_liste_bu=&quot;List of educational sites for library&quot;;
  $l_explain_malware=&quot;Malware sites (viruses, worms, trojans, etc.).&quot;;
  $l_explain_manga=&quot;Manga site&quot;;
  $l_explain_marketingware=&quot;doubtful commercial sites&quot;;
  $l_explain_mixed_adult=&quot;Adult sites (shock, gore, war, etc.).&quot;;
  $l_explain_mobile_phone=&quot;Sites related to GSM mobile (ringtones, logos, etc.)&quot;;
  $l_explain_ossi=&quot;Domain names and URLs you add to the blacklist (see below)&quot;;
  $l_explain_phishing=&quot;Phishing sites (traps banking, redirect, etc..)&quot;;
  $l_explain_press=&quot;News sites&quot;;
  $l_explain_publicite=&quot;Advertising sites&quot;;
  $l_explain_radio=&quot;Online radio podcast sites&quot;;
  $l_explain_reaffected=&quot;Sites that have changed ownership (and therefore content)&quot;;
  $l_explain_redirector=&quot;redirects, anonymization or bypass sites&quot;;
  $l_explain_remote_control=&quot;Sites for making remote control&quot;;
  $l_explain_sect=&quot;Sectarian sites&quot;;
  $l_explain_social_networks=&quot;Social networks sites&quot;;
  $l_explain_sexual_education=&quot;Sites related to sex education&quot;;
  $l_explain_shopping=&quot;Shopping sites and online shopping&quot;;
  $l_explain_sport=&quot;Sport sites&quot;;
  $l_explain_strict_redirector=&quot;Intentionally malformed URL&quot;;
  $l_explain_strong_redirector=&quot;Malformed URL in a 'google' query&quot;;
  $l_explain_tricheur=&quot;Sites related to cheating (tests, examinations, etc.)&quot;;
  $l_explain_webmail=&quot;Web sites for e-mail consultation&quot;;
  $l_explain_warez=&quot;Sites related to cracked softwares&quot;;
}
if (isset($_GET['cat'])){$categorie=$_GET['cat'];} 
$bl_categorie_domain_file=$bl_dir.$categorie.&quot;.conf&quot;;
if (file_exists($bl_categorie_domain_file))
	$nb_domains=exec (&quot;wc -w $bl_categorie_domain_file|cut -d' ' -f1&quot;);
else
	$nb_domains=$l_error_openfilei.&quot; &quot;.$bl_categorie_domain_file;
if (file_exists($bl_categorie_url_file))
	$nb_urls=exec (&quot;wc -w $bl_categorie_url_file|cut -d' ' -f1&quot;);
else
	$nb_urls=$l_error_openfile.&quot; &quot;.$bl_categorie_url_file;
echo &quot;&lt;TITLE&gt;$l_title&lt;/TITLE&gt;&quot;;
?&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;/CTadmin/css/style.css&quot; type=&quot;text/css&quot;&gt;
&lt;/HEAD&gt;
&lt;body&gt;
&lt;TABLE width=&quot;100%&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
	&lt;tr&gt;&lt;th&gt;&lt;?php echo $categorie ;?&gt;&lt;/th&gt;&lt;/tr&gt;
	&lt;tr bgcolor=&quot;#FFCC66&quot;&gt;&lt;td&gt;&lt;img src=&quot;/images/pix.gif&quot; width=&quot;1&quot; height=&quot;2&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/TABLE&gt;
&lt;TABLE width=&quot;100%&quot; border=1 cellspacing=0 cellpadding=1&gt;
&lt;tr&gt;&lt;td valign=&quot;middle&quot; align=&quot;left&quot;&gt;
&lt;?php
$compat_categorie=strtr($categorie,&quot;-&quot;,&quot;_&quot;);
if (!empty(${'l_explain_'.$compat_categorie}))
	echo &quot;&lt;center&gt;&lt;b&gt;${'l_explain_'.$compat_categorie}&lt;/b&gt;&lt;/center&gt;&quot;;
else echo &quot;$l_unknown_cat&quot;;
echo &quot;&lt;br&gt;$l_nb_domains &lt;b&gt;$nb_domains&lt;/b&gt;&lt;br&gt;&quot;;
?&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/TABLE&gt;
&lt;br&gt;
&lt;center&gt;&lt;a href=&quot;javascript:window.close();&quot;&gt;&lt;b&gt;&lt;?php echo &quot;$l_close&quot;; ?&gt;&lt;/b&gt;&lt;/a&gt;&lt;/center&gt;
&lt;/BODY&gt;
&lt;/HTML&gt;
&lt;/code&gt;
[[Catégorie:Scripts]]</text>
      <sha1>90nsi7jfrb6h3npxh5zrz4n122bxtfr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5244</id>
      <parentid>5239</parentid>
      <timestamp>2013-06-05T18:35:31Z</timestamp>
      <contributor>
        <username>Hulk</username>
        <id>190</id>
      </contributor>
      <comment>version 3.21 nombreux correctif pour le paramètre -tlo + nouveau paramètre caché  -deb utile pour la création du deb.</comment>
      <text xml:space="preserve" bytes="69272">lien sur le [http://www.debian-fr.org/controle-parental-pour-le-pc-debian-de-vos-enfants-t42009.html forum]
'''CTparental.sh'''
&lt;code bash&gt;
#!/bin/bash 
# CTparental.sh
#
# par guillaume MARSAT
# une parti du code est tirer du scripte alcasar-bl.sh créer par Franck BOUIJOUX and Richard REY
# présent dans le code du projet alcasar en version 2.6.1 ; web page http://www.alcasar.net/

# This script is distributed under the Gnu General Public License (GPL)
#if [ ! $UID -eq 0 ]; then
#   echo &quot;Il vous faut les droit root pour lancer ce scripte&quot;
#   exit 1
#fi
args=${1}
installdeb=&quot;0&quot;
if [ ! -z ${2} ];then
   if [ ${2} = &quot;-deb&quot; ];then # utiliser dans les fichiers postinst et prerm du deb
      installdeb=&quot;1&quot;
   else
	   DIRhtmlPersonaliser=${2}
	   if [ ! -d $DIRhtmlPersonaliser ];then
	      echo &quot;Chemin de répertoir non valide!&quot;
	      exit 0
	   fi
   fi
fi
SED=&quot;/bin/sed -i&quot;
DIR_CONF=&quot;/usr/local/etc/CTparental&quot;
FILE_CONF=&quot;$DIR_CONF/CTparental.conf&quot;
FILE_HCONF=&quot;$DIR_CONF/CThours.conf&quot;;
if [ ! -f $FILE_CONF ] ; then
mkdir -p $DIR_CONF
cat &lt;&lt; EOF &gt; $FILE_CONF
LASTUPDATE=0
DNSMASQ=BLACK
AUTOUPDATE=OFF
HOURSCONNECT=OFF
EOF
fi

tempDIR=&quot;/tmp/alcasar&quot;
RougeD=&quot;\033[1;31m&quot;
BleuD=&quot;\033[1;36m&quot;
VertD=&quot;\033[1;32m&quot;
Fcolor=&quot;\033[0m&quot;
GESTIONNAIREDESESSIONS=&quot; login gdm lightdm slim kdm xdm &quot;
FILEPAMTIMECONF=&quot;/etc/security/time.conf&quot;
DIRPAM=&quot;/etc/pam.d/&quot;
DAYS=( lundi mardi mercredi jeudi vendredi samedi dimanche )
DAYSPAM=( Mo Tu We Th Fr Sa Su )
DAYSCRON=( mon tue wed thu fri sat sun )
 
service --help 2&amp;&gt; /dev/null
if [ $? -eq 0 ] ; then
  CMDSERVICE=&quot;service &quot;
else
  CMDSERVICE=&quot;/etc/init.d/&quot;
fi
DNSMASQCONF=&quot;/etc/dnsmasq.conf&quot;
MAINCONFHTTPD=&quot;/etc/lighttpd/lighttpd.conf&quot;
DIRCONFENABLEDHTTPD=&quot;/etc/lighttpd/conf-enabled&quot;
CTPARENTALCONFHTTPD=$DIRCONFENABLEDHTTPD&quot;/10-CTparental.conf&quot;
RESOLVCONFMAIN=&quot;/etc/resolvconf&quot;
RESOLVDNSMASQ=&quot;$RESOLVCONFMAIN/run/interface/lo.dnsmasq&quot;
RESOLVCONFORDER=&quot;$RESOLVCONFMAIN/interface-order&quot;
DIRHTML=&quot;/var/www/CTparental&quot;
DIRadminHTML=&quot;/var/www/CTadmin&quot;
namservicednsmaq=&quot;dnsmasq&quot;
namservicehttpd=&quot;lighttpd&quot;
namservicecrond=&quot;cron&quot;
PASSWORDFILEHTTPD=&quot;/etc/lighttpd/lighttpd-htdigest.user&quot;
REALMADMINHTTPD=&quot;interface admin&quot;
CMDINSTALL=&quot;&quot;
paquetresolv=&quot;resolvconf&quot;
yum help 2&amp;&gt; /dev/null
if [ $? -eq 0 ] ; then
   ## &quot;Distribution baser sur yum exemple readhat,fedora...&quot;
   CMDINSTALL=&quot;yum install &quot;
   CMDREMOVE=&quot;yum remove &quot;
fi
urpmi --help 2&amp;&gt; /dev/null
if [ $? -eq 1 ] ; then
   ## &quot;Distribution baser sur urpmi exemple mandriva...&quot;
   CMDINSTALL=&quot;urpmi -a --auto &quot;
   CMDREMOVE=&quot;urpme --auto &quot;
   namservicecrond=&quot;crond&quot;
fi
apt-get -h 2&amp;&gt; /dev/null
if [ $? -eq 0 ] ; then
   ## &quot;Distribution baser sur apt-get exemple debian,ubuntu ...&quot;
   CMDINSTALL=&quot;apt-get -y --force-yes install &quot;
   CMDREMOVE=&quot;apt-get -y --force-yes remove --purge &quot;
fi
if [ $args=&quot;-i&quot; ] ; then
   namserviceNetworkManager=&quot;network-manager&quot;
   if [ -f /etc/NetworkManager/NetworkManager.conf ];then
     $SED &quot;s/^dns=dnsmasq/#dns=dnsmasq/g&quot; /etc/NetworkManager/NetworkManager.conf
     $CMDSERVICE$namserviceNetworkManager restart
     sleep 5
   fi
fi

if [ $( echo $CMDINSTALL | wc -m ) -eq 1 ] ; then
   echo &quot;Aucun gestionner de paquet connu , n'a été détecté.&quot;
   set -e
   exit 1
fi




interface_WAN=$(ip route | awk '/^default via/{print $5}') # suppose que la passerelle est la route par default

if [ -f $DIR_CONF/resolv.conf.sav ];then
   DNS1=$(cat $DIR_CONF/resolv.conf.sav | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f1)
   DNS2=$(cat $DIR_CONF/resolv.conf.sav | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f2)
else
   DNS1=$(cat /etc/resolv.conf | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f1)
   DNS2=$(cat /etc/resolv.conf | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f2)
fi

PRIVATE_IP=&quot;127.0.0.10&quot;
FILE_tmp=&quot;$tempDIR/filetmp.txt&quot;
BL_SERVER=&quot;dsi.ut-capitole.fr&quot;
CATEGORIES_ENABLED=&quot;$DIR_CONF/categories-enabled&quot;
BL_CATEGORIES_AVAILABLE=&quot;$DIR_CONF/bl-categories-available&quot;
WL_CATEGORIES_AVAILABLE=&quot;$DIR_CONF/wl-categories-available&quot;
DIR_DNS_FILTER_AVAILABLE=&quot;$DIR_CONF/dnsfilter-available&quot;
DIR_DNS_BLACKLISTE_ENABLED=&quot;$DIR_CONF/blackliste-enabled&quot;
DIR_DNS_WHITELIST_ENABLED=&quot;$DIR_CONF/whitelist-enabled&quot;
DNS_FILTER_OSSI=&quot;$DIR_CONF/blackliste-local&quot;
DREAB=&quot;$DIR_CONF/domaine-rehabiliter&quot; 
THISDAYS=$(expr $(date +%Y) \* 365 + $(date +%j))
MAXDAYSFORUPDATE=&quot;7&quot; # update tous les 7 jours
CHEMINCTPARENTLE=$(readlink -f $0)

initblenabled () {
   cat &lt;&lt; EOF &gt; $CATEGORIES_ENABLED
adult
agressif
dangerous_material
dating
drogue
gambling
hacking
malware
marketingware
mixed_adult
phishing
redirector
sect
strict_redirector
strong_redirector
tricheur
warez
ossi   
EOF
         

}

addadminhttpd() {
if [ ! -f $PASSWORDFILEHTTPD ] ; then
    echo -n &gt; $PASSWORDFILEHTTPD   
fi
chown root:$USERHTTPD $PASSWORDFILEHTTPD
chmod 640 $PASSWORDFILEHTTPD
USERADMINHTTPD=${1}
pass=${2}
hash=`echo -n &quot;$USERADMINHTTPD:$REALMADMINHTTPD:$pass&quot; | md5sum | cut -b -32`
ligne=$(echo &quot;$USERADMINHTTPD:$REALMADMINHTTPD:$hash&quot;)
$SED &quot;/^$USERADMINHTTPD:$REALMADMINHTTPD.*/d&quot; $PASSWORDFILEHTTPD
echo $ligne &gt;&gt; $PASSWORDFILEHTTPD
}

download() {
   rm -rf $tempDIR
   mkdir $tempDIR
   wget -P $tempDIR http://$BL_SERVER/blacklists/download/blacklists.tar.gz 2&gt;&amp;1 | cat
   if [ ! $? -eq 0 ]; then
      echo &quot;erreur lors du téléchargement processu interompu&quot;
      rm -rf $tempDIR
      set -e
      exit 1
   fi
   tar -xzf $tempDIR/blacklists.tar.gz -C $tempDIR
   if [ ! $? -eq 0 ]; then
      echo &quot;erreur d'extraction de l'archive processu interompu&quot;
      set -e
      exit 1
   fi
   rm -rf $DIR_DNS_FILTER_AVAILABLE/
   mkdir $DIR_DNS_FILTER_AVAILABLE
}
autoupdate() {
        LASTUPDATEDAY=`grep LASTUPDATE= $FILE_CONF | cut -d&quot;=&quot; -f2`
        LASTUPDATEDAY=${LASTUPDATEDAY:=0}
        DIFFDAY=$(expr $THISDAYS - $LASTUPDATEDAY)
	if [ $DIFFDAY -ge $MAXDAYSFORUPDATE ] ; then
		download
		adapt
		catChoice
		dnsmasqon
                $SED &quot;s?^LASTUPDATE.*?LASTUPDATE=$THISDAYS=`date +%d-%m-%Y\ %T`?g&quot; $FILE_CONF
		exit 0
	fi
}
autoupdateon() {
$SED &quot;s?^AUTOUPDATE.*?AUTOUPDATE=ON?g&quot; $FILE_CONF
echo &quot;*/10 * * * * root $CHEMINCTPARENTLE -aup&quot; &gt; /etc/cron.d/CTparental-autoupdate
$CMDSERVICE$namservicecrond restart
}

autoupdateoff() {
$SED &quot;s?^AUTOUPDATE.*?AUTOUPDATE=OFF?g&quot; $FILE_CONF
rm -f /etc/cron.d/CTparental-autoupdate
$CMDSERVICE$namservicecrond restart
}
adapt() {
   dnsmasqoff
   if [ ! -f $DNS_FILTER_OSSI ] ; then
            echo &gt; $DNS_FILTER_OSSI
   fi

   if [ -d $tempDIR  ] ; then
	  CATEGORIES_AVAILABLE=$tempDIR/categories_available
	  ls -FR $tempDIR/blacklists | grep '/$' | sed -e &quot;s/\///g&quot; &gt; $CATEGORIES_AVAILABLE
          echo -n &gt; $BL_CATEGORIES_AVAILABLE
          echo -n &gt; $WL_CATEGORIES_AVAILABLE
          if [ ! -f $DIR_DNS_FILTER_AVAILABLE/ossi.conf ] ; then
		echo &gt; $DIR_DNS_FILTER_AVAILABLE/ossi.conf
	  fi
	  for categorie in `cat $CATEGORIES_AVAILABLE` # creation des deux fichiers de categories (BL / WL)
	  do
		if [ -e $tempDIR/blacklists/$categorie/usage ]
		then
			is_whitelist=`grep white $tempDIR/blacklists/$categorie/usage|wc -l`
		else
			is_whitelist=0 # ou si le fichier 'usage' n'existe pas, on considère que la catégorie est une BL
		fi
		if [ $is_whitelist -eq &quot;0&quot; ]
		then
			echo &quot;$categorie&quot; &gt;&gt; $BL_CATEGORIES_AVAILABLE
		else
			echo &quot;$categorie&quot; &gt;&gt; $WL_CATEGORIES_AVAILABLE
		fi
	   done
         echo -n &quot;Toulouse Black and White List migration process. Please wait : &quot;
         for DOMAINE in `cat  $CATEGORIES_AVAILABLE`  # pour chaque catégorie
         do
            echo -n &quot;.&quot;
            # suppression des @IP, de caractères acccentués et des lignes commentées ou vide
            egrep  -v &quot;([0-9]{1,3}\.){3}[0-9]{1,3}&quot; $tempDIR/blacklists/$DOMAINE/domains &gt; $FILE_tmp
            $SED &quot;/[äâëêïîöôüû]/d&quot; $FILE_tmp
            $SED &quot;/^#.*/d&quot; $FILE_tmp
            $SED &quot;/^$/d&quot; $FILE_tmp
            $SED &quot;s/\.\{2,1000\}/\./g&quot; $FILE_tmp # supprime les suite de &quot;.&quot; exemple: address=/fucking-big-tits..com/127.0.0.10 devient address=/fucking-big-tits.com/127.0.0.10
	    is_blacklist=`grep $DOMAINE $BL_CATEGORIES_AVAILABLE |wc -l`
	    if [ $is_blacklist -ge &quot;1&quot; ] ; then
            	$SED &quot;s?.*?address=/&amp;/$PRIVATE_IP?g&quot; $FILE_tmp  # Mise en forme dnsmasq des listes noires
		mv $FILE_tmp $DIR_DNS_FILTER_AVAILABLE/$DOMAINE.conf  
            else
		$SED &quot;s?.*?server=/&amp;/#?g&quot; $FILE_tmp  # Mise en forme dnsmasq des listes blanches
		mv $FILE_tmp $DIR_DNS_FILTER_AVAILABLE/$DOMAINE.conf
            fi
         done
   else
         mkdir   $tempDIR
         echo -n &quot;.&quot;
 	 # suppression des @IP, de caractères acccentués et des lignes commentées ou vide
         egrep  -v &quot;([0-9]{1,3}\.){3}[0-9]{1,3}&quot; $DNS_FILTER_OSSI  &gt; $FILE_tmp
         $SED &quot;/[äâëêïîöôüû]/d&quot; $FILE_tmp 
         $SED &quot;/^#.*/d&quot; $FILE_tmp 
         $SED &quot;/^$/d&quot; $FILE_tmp 
         $SED &quot;s/\.\{2,1000\}/\./g&quot; $FILE_tmp # supprime les suite de &quot;.&quot; exemple: address=/fucking-big-tits..com/127.0.0.10 devient address=/fucking-big-tits.com/127.0.0.10
         $SED &quot;s?.*?address=/&amp;/$PRIVATE_IP?g&quot; $FILE_tmp  # Mise en forme dnsmasq
         mv $FILE_tmp $DIR_DNS_FILTER_AVAILABLE/ossi.conf
   fi     
   echo
   rm -rf $tempDIR
}
catChoice() {
#   echo &quot;catChoice&quot;
   rm -rf $DIR_DNS_BLACKLISTE_ENABLED/
   mkdir $DIR_DNS_BLACKLISTE_ENABLED
   rm -rf  $DIR_DNS_WHITELIST_ENABLED/
   mkdir  $DIR_DNS_WHITELIST_ENABLED
     
      for CATEGORIE in `cat $CATEGORIES_ENABLED` # on affecte les catégories dnsmasq
      do
	 is_blacklist=`grep $CATEGORIE $BL_CATEGORIES_AVAILABLE |wc -l`
	 if [ $is_blacklist -ge &quot;1&quot; ] ; then
		cp $DIR_DNS_FILTER_AVAILABLE/$CATEGORIE.conf $DIR_DNS_BLACKLISTE_ENABLED/
         else
		cp $DIR_DNS_FILTER_AVAILABLE/$CATEGORIE.conf $DIR_DNS_WHITELIST_ENABLED/
     	 fi     
      done
      cp $DIR_DNS_FILTER_AVAILABLE/ossi.conf $DIR_DNS_BLACKLISTE_ENABLED/
#      echo &quot;fincatChoice&quot;
      reabdomaine
}

reabdomaine () {
if [ ! -f $DREAB ] ; then
cat &lt;&lt; EOF &gt; $DREAB
   www.google.com
   www.google.fr
EOF
fi
if [ ! -f $DIR_DNS_BLACKLISTE_ENABLED/ossi.conf ] ; then
	echo &gt; $DIR_DNS_BLACKLISTE_ENABLED/ossi.conf
fi
echo
echo -n &quot;Application de la liste blanche (domaine réabiliter):&quot;
for CATEGORIE in `cat  $CATEGORIES_ENABLED  `  # pour chaque catégorie
do 
	is_blacklist=`grep $CATEGORIE $BL_CATEGORIES_AVAILABLE |wc -l`
	if [ $is_blacklist -ge &quot;1&quot; ] ; then
		echo -n &quot;.&quot;
		for DOMAINE in `cat  $DREAB`
		do
		    $SED &quot;/$DOMAINE/d&quot; $DIR_DNS_BLACKLISTE_ENABLED/$CATEGORIE.conf
		done
        fi
done
echo -n &quot;.&quot;
cat $DREAB | sed -e &quot;s? ??g&quot; | sed -e &quot;s?.*?server=/&amp;/#?g&quot; &gt;  $DIR_DNS_WHITELIST_ENABLED/whiteliste.ossi.conf
echo
}

dnsmasqon () {
   categorie1=`sed -n &quot;1 p&quot; $CATEGORIES_ENABLED` # on considaire que si la 1 er categorie activer est un blackliste on fonctionne par blackliste.
   is_blacklist=`grep $categorie1 $BL_CATEGORIES_AVAILABLE |wc -l`
   if [ $is_blacklist -ge &quot;1&quot; ] ; then
   $SED &quot;s?^DNSMASQ.*?DNSMASQ=BLACK?g&quot; $FILE_CONF
   cat &lt;&lt; EOF &gt; $DNSMASQCONF
         # Configuration file for &quot;dnsmasq with blackhole&quot;
   # Inclusion de la blacklist &lt;domains&gt; de Toulouse dans la configuration
   conf-dir=$DIR_DNS_BLACKLISTE_ENABLED
   # conf-file=$DIR_DEST_ETC/alcasar-dns-name   # zone de definition de noms DNS locaux
   no-dhcp-interface=$interface_WAN
   bind-interfaces
   cache-size=1024
   domain-needed
   expand-hosts
   bogus-priv
   server=$DNS1
   server=$DNS2
   
EOF
$CMDSERVICE$namservicednsmaq restart
else
  dnsmasqwhitelistonly
fi
}
dnsmasqoff () {
   $SED &quot;s?^DNSMASQ.*?DNSMASQ=OFF?g&quot; $FILE_CONF
   cat &lt;&lt; EOF &gt; $DNSMASQCONF
         # Configuration file for &quot;dnsmasq with blackhole&quot;
   # Inclusion de la blacklist &lt;domains&gt; de Toulouse dans la configuration
   # conf-dir=$DIR_DNS_BLACKLISTE_ENABLED
   # conf-file=$DIR_DEST_ETC/alcasar-dns-name   # zone de definition de noms DNS locaux
   no-dhcp-interface=$interface_WAN
   bind-interfaces
   cache-size=0
   domain-needed
   expand-hosts
   bogus-priv
   server=$DNS1
   server=$DNS2
   
EOF

$CMDSERVICE$namservicednsmaq restart
}
dnsmasqwhitelistonly  () {
   $SED &quot;s?^DNSMASQ.*?DNSMASQ=WHITE?g&quot; $FILE_CONF
   cat &lt;&lt; EOF &gt; $DNSMASQCONF
         # Configuration file for &quot;dnsmasq with blackhole&quot;
   # Inclusion de la blacklist &lt;domains&gt; de Toulouse dans la configuration
   conf-dir=$DIR_DNS_WHITELIST_ENABLED
   # conf-file=$DIR_DEST_ETC/alcasar-dns-name   # zone de definition de noms DNS locaux
   no-dhcp-interface=$interface_WAN
   bind-interfaces
   cache-size=0
   domain-needed
   expand-hosts
   bogus-priv
   server=$DNS1
   server=$DNS2
   address=/#/$PRIVATE_IP #redirige vers $PRIVATE_IP pour tous ce qui n'a pas étais resolut dans les listes blanches
EOF

$CMDSERVICE$namservicednsmaq restart
}


FoncHTTPDCONF () {
$CMDSERVICE$namservicehttpd stop
rm -rf $DIRHTML/*
mkdir -v $DIRHTML
if [ ! -z $DIRhtmlPersonaliser ];then
   cp -r $DIRhtmlPersonaliser/* $DIRHTML
else
s=&quot;span&quot;
st=&quot;style&quot;
c=&quot;$c&quot;
cab=&quot;;\&quot;&gt;&quot;

cat &lt;&lt; EOF &gt; $DIRHTML/index.html
 &lt;HTML&gt;
&lt;HEAD&gt;
   &lt;META HTTP-EQUIV=&quot;CONTENT-TYPE&quot; CONTENT=&quot;text/html; charset=utf-8&quot;&gt;
   &lt;TITLE&gt;danger&lt;/TITLE&gt;
&lt;/HEAD&gt;
&lt;BODY LANG=&quot;fr-FR&quot; DIR=&quot;LTR&quot;&gt;
&lt;CENTER&gt;
&lt;img alt=&quot;Site dangereux pour des mineurs&quot;
  HEIGHT=&quot;600&quot;   
  src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKIAAACgCAYAAACPOrcQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz
AAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAuGSURB
VHic7d17jFTlGcfx7zMol7KriRpF3Sii3FyooE1EWuNaFrFeWjXWqEBCmyYtrSa2iX9g+wcx9RZN
kya29i+1ETWKMSZI1AiClyI2KiJyFa8BBC9EuyAXhad/vDO7s8PszpyZc857zrzPJ9nsZvac931g
fnnf2Zlz3ldUFVNBZCQwDhhf/H480A60Fb+X/9xWPGsP0FP2vfznr4AtwGZgC6p70/qn5IUEHUSR
EcAFwGRc6Epfpybc83ZcKEtf64DXUd2XcL+ZFVYQRYYB04CLi1/TgKFea+pzEFgNrCh+rUb1gN+S
0tP6QRQ5B7gSF7zpwHC/BdVtP7AKF8olqK71XE+iWjOIIh3AjcBcYJLnauLyHvAI8Biq23wXE7fW
CaJIO3AtMAfoAgpe60nOYWAlsAh4CtUev+XEI/9BdFPvrcA1wAjP1aRtH/A0cG/ep+78BlFkOnAb
cLnvUjJiKXAnqqt8F9KI/AVRZBawALjIdykZ9TJwF6ov+C4kivwEUeQq4C/Aeb5LyYm3gL+i+ozv
QuqR/SCKTADuB2b4LiWnlgM3obrJdyGDye5fliIjEbkbeBcLYTNmAO8icnfxo8tMyuaIKPJL4G9A
h+9SWsw24E+oLvZdSKVsBVHkLOABoNt3KS1uGTAf1a2+CynJztQsMhtYg4UwDd3AGkTm+C6kxH8Q
RX6AyIO4Twraah1uYtMGPILIw1l47eh3ahaZDDwBTPRXhMFdinY9qu/4KsDfiCjyW+C/WAizYDyw
GpGbfBWQ/ogoMhR4EJidbsemTouBuWlfC5luEEWOwX1Ib+8LZtsrwM9R/SatDtMLosgo4DlgSjod
miatAy5FdUcanaXzGlFkHPA6FsI8mQysKn7EmrjkgyhyPvAfYHTifZm4nQ68hsi0pDtKNogi3cBL
wAmJ9mOSdDywvPhcJia514huJFwOeH+z1MRiLzAD1TeSaDyZIIqcDbwKHBd/48aj3cCFqG6Iu+H4
gyhyOu41YdI3qRs/tgM/RvWTOBuN9zWiyInAi1gIW9mpwIvF5zo28QXRvVn9PDA2tjZNVo0Fni8+
57GIJ4giAjwJTI2lPZMHU4Eni8990+IaEf8MzIqpLZMfs3DPfdOa/2NFpAt3xe+QGOox+XMI6EZ1
ZTONNBdEkZOAd4BRzRRhcm8nMAXVXY020PjULFIAHsdCaFwGHi9moiHNvEZciFvqzRhwWVjY6MmN
Tc0iF+JWpPJ/z4vJksNAF6qvRj0xehBFjsbdbdcZtTMThPXAVFS/i3JSIyPaH7EQmoF14jISSbQR
UeQ0YAN2RY0Z3F7gbFQ/rfeEqCPi37EQmtpG4rJSt/pHRJHLgWej12QCdgWqS+s5sL4guv1I1gNn
NFeXCcxHQGc9+8fUOzXPx0JoojsDl52aao+IIsOBD4GTmy7LhOgzYAyq+wc7qJ4R8TdYCE3jTsZl
aFCDj4hueZAPsAUzTXO2AWeienCgA2qNiPOwEJrmdeCyNKCBR0SRo4D3sRvjTTw+Bsai+n21Xw42
Is7BQmjiMxqXqaoGC+IfYi/FhG7ATFWfmkU6cbthGhO3Saiur3xwoBFxXrK1mIDNq/bgkSOiyBDc
n9t2C4BJwk6gA9VD5Q9WGxEvxUJokjMKl7F+qgVxXuKlmNDNq3yg/9QschywAxiWWkkmRAeAU1Dd
XXqgckT8BRZCk7xhuKz1qgyirfZv0tIva5VT83bglJQLMmHagWrv8oV9QXSrx2+M3Nwtt8Dw4XEV
Z/Jm1y546KFGz55Y2tC8PIjzgX9Gburrr+HYYxstxOTd2rUwpeFdS36P6gPQ/zXiT5suyphoejPn
gugWW+zyVIwJV1dpoc/SiPhDbC8Uk74TcNnrDeK5/moxgTsX+oKYyn5rxlQxASyIxr9+QbRd5I0v
EwEKxVtGx3guxoRrDCJDC8BZ2I4Axp8hwFkFbFo2/k0sAON9V2GCN74AxLq5nzENOLEAtPuuwgSv
3YJosqC9ALT5rsIEr81GRJMFNjWbTLCp2WSCTc0mE9ptU0eTCQWgx3cRJng9BWCP7ypM8PbYiGiy
oMeCaLLApmaTCTY1m0ywqdlkQk8B+Nx3FSZ4nxeAzb6rMMHbXKCRpeiMidfGArAVOFTrSGMScgjY
WihuXfqh72pMsD5E9WDpogebno0vG6FvyZFNHgsxYdsEFkTjX78gvu2xEBO2t6EviO8CX/qrxQTq
S1z2ikF0Wwus9FePCdTKYvb67SrwkqdiTLh6M1cexBUeCjFh681cXxDdDkA7fFRjgrSjtOsUwFEV
v1wBzI7U3IIFMMw2NA3WF180ema/GbhyU8hfAQ82XJQx9fs1qr2b+NnG4caHGhuHu18sSbkoE54l
5SGEIzcOB3g4nVpMwB6ufKD/1AwgMgTYBoxKpSQTmp1AB6r9roE9ckR0ByxKqSgTnkWVIYRqIyKA
SCfwXgpFmfBMQnV95YPVVwNzB76ZdEUmOG9WCyEMFETnHwkVY8I1YKaqT80AIkcB7wOjEynJhOZj
YCyq31f75cAjojvhrmRqMgG6a6AQwmAjIlDcufQDoCP+ukxAtgFnFu8YrWrwpYvdiffEXJQJzz2D
hRBqjYgAIsNx9z2fHF9dJiCfAWNQ3T/YQbUXc3cN3BdTUSY899UKIdQzIgKIjADWA2c0X5cJyEdA
J6r7ah1Y3/YWrqGbmyzKhOfmekII9QYRQHUp8EyjFZngPFPMTF3qm5p7j5bTgA3AyOh1mYDsBc5G
9dN6T4i285Rr+PaIRZnw3B4lhBB1RAQQORpYA3RGO9EEYj0wFdXvopwUfS8+18F84HDkc02rOwzM
jxpCaCSIAKqvAnc0dK5pZXcUsxFZ9Km590wpAMuAixtrwLSYFUA3qg3NlI0HEUDkJOAd7P6W0O0E
pqC6q9EGmtuv2XV8A7YYfMgOATc0E0JoNogAqiuBhU23Y/JqYTEDTWluau5tRQR4DpjVfGMmR14A
fkYMIYoniAAix+AW+5waT4Mm49YAXaj+L47G4gsigMiJwGvA2PgaNRn0PvATVGPbx7H514jlXGEz
ge2xtmuyZDswM84QQtxBBFD9BLgE2F3rUJM7u4FLis9xrOIPIoDqBuAy3FUYpjXsBS4rPrexSyaI
AKpvAFcB3ybWh0nLt8BVxec0EfH+sVK1BzkfeBY4IdmOTEK+Aq5AdXWSnSQfRACRcbj3nEYn35mJ
0SfApeWLricluam5nOoW4ALc59ImH9YB09MIIaQVRADVncBFwPLU+jSNegW4ENXUtjtJL4hA8V34
y4BHU+3XRLEY9xbNN2l2mm4QwS1jojoH+B1Q88Zrk5oDuNs/r0P1QNqdp/PHyoC9y2TgCWCivyIM
sBm4HlVvr+HTHxHLqa4DfgQ8VOtQk5h/A+f5DCH4HhHLicwG/gW0+S4lEHtwNzplYuF+vyNiOdVH
cZeQLfNdSgCW4W75zEQIIUtBBFDdiupM4Drc4o4mXtuA61CdiepW38WUy1YQS1QXAxNwi4RGvkfW
HOE73P/lhOL/beZk5zXiQEQmAPcDM3yXklPLgZvS+oSkUdkcEcupbkK1G7gaeMt3OTnyFnA1qt1Z
DyHkYUSsJDILWID7uNAc6WXcCv4v+C4kivwFsURkOnAbcLnvUjJiKXAnqqt8F9KI/AaxROQc4Fbg
GmCE52rStg94GrgX1bW+i2lG/oNYItIOXAvMAbrIw+vfxhzG3ba7CHgK1R6/5cSjdYJYTqQDuBGY
C0zyXE1c3gMeAR5DteXeY23NIJZzU/eVuFXLpgPD/RZUt/3AKtwqW0vyPvXW0vpBLCcyDJiGC+XF
xZ+Heq2pz0FgNS54K4DVPi7H8iWsIFZy+8dcAEwGxpd9nZpwz9txl16VvtYBr9e7FUQrCjuIAxEZ
CYzDhXIccDzQjrsyqL3i59LVQnuAnrLv5T9/BWzBhW4Lqna/d4X/A/bydTBs1YRqAAAAAElFTkSu
QmCC&quot; /&gt;
&lt;/CENTER&gt;
&lt;/BODY&gt;
&lt;/HTML&gt;
EOF

fi
## GENERATION

ln -s  $DIRHTML/index.html $DIRHTML/err404.html
USERHTTPD=$(cat /etc/passwd | grep /var/www | cut -d&quot;:&quot; -f1)
GROUPHTTPD=$(cat /etc/group | grep $USERHTTPD | cut -d&quot;:&quot; -f1)
chmod 640 $FILE_CONF
chown root:$GROUPHTTPD $FILE_CONF
cat &lt;&lt; EOF &gt; $MAINCONFHTTPD
server.modules = (
&quot;mod_access&quot;,
&quot;mod_alias&quot;,
&quot;mod_redirect&quot;,
&quot;mod_auth&quot;,	#pour insteface admin
&quot;mod_fastcgi&quot;,  #pour insteface admin (activation du php)
# &quot;mod_rewrite&quot;,
)
auth.debug                 = 0
auth.backend               = &quot;htdigest&quot; 
auth.backend.htdigest.userfile = &quot;$PASSWORDFILEHTTPD&quot; 

server.document-root = &quot;/var/www&quot;
server.upload-dirs = ( &quot;/var/cache/lighttpd/uploads&quot; )
server.errorlog = &quot;/var/log/lighttpd/error.log&quot;
server.pid-file = &quot;/var/run/lighttpd.pid&quot;
server.username = &quot;$USERHTTPD&quot;
server.groupname = &quot;$GROUPHTTPD&quot;
server.port = 80
server.bind = &quot;127.0.0.1&quot;


index-file.names = ( &quot;index.php&quot;, &quot;index.html&quot; )
url.access-deny = ( &quot;~&quot;, &quot;.inc&quot; )
static-file.exclude-extensions = (&quot;.php&quot;, &quot;.pl&quot;, &quot;.fcgi&quot; )

compress.cache-dir = &quot;/var/cache/lighttpd/compress/&quot;
compress.filetype = ( &quot;text/css&quot;, &quot;text/html&quot;, &quot;text/plain&quot; )

server.tag = &quot;&quot;

include_shell &quot;/usr/share/lighttpd/create-mime.assign.pl&quot;
include_shell &quot;/usr/share/lighttpd/include-conf-enabled.pl&quot;
EOF

mkdir -p /usr/share/lighttpd/

if [ ! -f /usr/share/lighttpd/create-mime.assign.pl ];then
cat &lt;&lt; EOF &gt; /usr/share/lighttpd/create-mime.assign.pl
#!/usr/bin/perl -w
use strict;
open MIMETYPES, &quot;/etc/mime.types&quot; or exit;
print &quot;mimetype.assign = (\n&quot;;
my %extensions;
while(&lt;MIMETYPES&gt;) {
  chomp;
  s/\#.*//;
  next if /^\w*$/;
  if(/^([a-z0-9\/+-.]+)\s+((?:[a-z0-9.+-]+[ ]?)+)$/) {
    foreach(split / /, \$2) {
      # mime.types can have same extension for different
      # mime types
      next if \$extensions{\$_};
      \$extensions{\$_} = 1;
      print &quot;\&quot;.\$_\&quot; =&gt; \&quot;\$1\&quot;,\n&quot;;
    }
  }
}
print &quot;)\n&quot;;
EOF
chmod +x /usr/share/lighttpd/create-mime.assign.pl
fi


if [ ! -f /usr/share/lighttpd/include-conf-enabled.pl ];then
cat &lt;&lt; EOF &gt; /usr/share/lighttpd/include-conf-enabled.pl
#!/usr/bin/perl -wl

use strict;
use File::Glob ':glob';

my \$confdir = shift || &quot;/etc/lighttpd/&quot;;
my \$enabled = &quot;conf-enabled/*.conf&quot;;

chdir(\$confdir);
my @files = bsd_glob(\$enabled);

for my \$file (@files)
{
        print &quot;include \&quot;\$file\&quot;&quot;;
}
EOF
chmod +x /usr/share/lighttpd/include-conf-enabled.pl 

fi

mkdir -p $DIRCONFENABLEDHTTPD
mkdir -p $DIRadminHTML
cp -rf CTadmin/* $DIRadminHTML/
#if [ $installdeb = &quot;1&quot; ]; then
#	addadminhttpd &quot;admin&quot; &quot;admin&quot;
#else
	clear 
	echo &quot;Entrer le login pour l'interface d'administration :&quot;
	while (true); do
		 read loginhttp
		 case $loginhttp in
			 * )
			 echo &quot;login:  $loginhttp&quot; &gt; /root/passwordCTadmin
			 break
			 ;;
		 esac
	done
	clear
	echo &quot;Entrer le mot de $loginhttp :&quot;
	while (true); do
		 read password
		 case $password in
			 * )
			 echo &quot;password: $password&quot; &gt;&gt; /root/passwordCTadmin
		         addadminhttpd &quot;$loginhttp&quot; &quot;$password&quot;
			 break
			 ;;
		 esac
	done
#fi
chmod 700 /root/passwordCTadmin
chown root:root /root/passwordCTadmin
cat &lt;&lt; EOF &gt; $CTPARENTALCONFHTTPD

fastcgi.server = (
    &quot;.php&quot; =&gt; (
      &quot;localhost&quot; =&gt; ( 
        &quot;bin-path&quot; =&gt; &quot;/usr/bin/php-cgi&quot;,
        &quot;socket&quot; =&gt; &quot;/run/lighttpd/php-fastcgi.sock&quot;,
        &quot;max-procs&quot; =&gt; 4, # default value
        &quot;bin-environment&quot; =&gt; (
          &quot;PHP_FCGI_CHILDREN&quot; =&gt; &quot;1&quot;, # default value
        ),
        &quot;broken-scriptfilename&quot; =&gt; &quot;enable&quot;
      ))
)
  fastcgi.map-extensions     = ( &quot;.php3&quot; =&gt; &quot;.php&quot;,
                               &quot;.php4&quot; =&gt; &quot;.php&quot;,
                               &quot;.php5&quot; =&gt; &quot;.php&quot;,
                               &quot;.phps&quot; =&gt; &quot;.php&quot;,
                               &quot;.phtml&quot; =&gt; &quot;.php&quot; )

\$HTTP[&quot;url&quot;] =~ &quot;.*CTadmin.*&quot; {
  auth.require = ( &quot;&quot; =&gt;
                   (
                     &quot;method&quot;  =&gt; &quot;digest&quot;,
                     &quot;realm&quot;   =&gt; &quot;$REALMADMINHTTPD&quot;,
                     &quot;require&quot; =&gt; &quot;user=$USERADMINHTTPD&quot; 
                   )
                 )

}
\$SERVER[&quot;socket&quot;] == &quot;$PRIVATE_IP:80&quot; {
server.document-root = &quot;$DIRHTML&quot;
server.errorfile-prefix = &quot;$DIRHTML/err&quot; 
#ssl.engine = &quot;enable&quot; 
#ssl.pemfile = &quot;/etc/lighttpd/ssl/$PRIVATE_IP.pem&quot; 
}

EOF
chown root:$GROUPHTTPD $DREAB
chmod 660 $DREAB
chown root:$GROUPHTTPD $DNS_FILTER_OSSI
chmod 660 $DNS_FILTER_OSSI
chown root:$GROUPHTTPD $CATEGORIES_ENABLED
chmod 660 $CATEGORIES_ENABLED
chmod 660 /etc/sudoers
is_sudo_ok=`grep $USERHTTPD /etc/sudoers |wc -l`
         if [ $is_sudo_ok -ge &quot;1&quot; ] ; then
		$SED &quot;s?^$USERHTTPD.*?$USERHTTPD ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh -tlu,/usr/local/bin/CTparental.sh -trf,/usr/local/bin/CTparental.sh -dble,/usr/local/bin/CTparental.sh -ubl,/usr/local/bin/CTparental.sh -dl,/usr/local/bin/CTparental.sh -on,/usr/local/bin/CTparental.sh -off,/usr/local/bin/CTparental.sh -aupon,/usr/local/bin/CTparental.sh -aupoff?g&quot; /etc/sudoers
         else
         	echo &quot;$USERHTTPD ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh -tlu,/usr/local/bin/CTparental.sh -trf,/usr/local/bin/CTparental.sh -dble,/usr/local/bin/CTparental.sh -ubl,/usr/local/bin/CTparental.sh -dl,/usr/local/bin/CTparental.sh -on,/usr/local/bin/CTparental.sh -off,/usr/local/bin/CTparental.sh -aupon,/usr/local/bin/CTparental.sh -aupoff&quot; &gt;&gt; /etc/sudoers
         fi
chmod 440 /etc/sudoers
if [ ! -f $FILE_HCONF ] ; then 
	echo &gt; $FILE_HCONF 
fi
chown root:$GROUPHTTPD $FILE_HCONF
chmod 660 $FILE_HCONF

$CMDSERVICE$namservicehttpd start
test=$?
if [ ! $test -eq 0 ];then
	echo &quot;Erreur au lancement du service lighttpd &quot;
	set -e
	exit 1
fi
}

install () {

      mkdir $tempDIR
      mkdir -p $DIR_CONF
      initblenabled
      cat /etc/resolv.conf &gt; $DIR_CONF/resolv.conf.sav
      if [ $installdeb = &quot;0&quot; ]; then
	      $CMDINSTALL dnsmasq
	      $CMDINSTALL lighttpd
	      $CMDINSTALL php5-cgi
      fi
      if [ ! -f blacklists.tar.gz ]
      then
         download
      else
         tar -xzf blacklists.tar.gz -C $tempDIR
         if [ ! $? -eq 0 ]; then
            echo &quot;erreur d'extraction de l'archive processu interompu&quot;
            uninstall
            set -e
            exit 1
         fi
         rm -rf $DIR_DNS_FILTER_AVAILABLE/
         mkdir $DIR_DNS_FILTER_AVAILABLE
      fi
      adapt
      catChoice
      dnsmasqon
      $SED &quot;s?^LASTUPDATE.*?LASTUPDATE=$THISDAYS=`date +%d-%m-%Y\ %T`?g&quot; $FILE_CONF
      if [ $installdeb = &quot;0&quot; ]; then
     	 $CMDINSTALL $paquetresolv
      fi
      confresolvconf

      FoncHTTPDCONF
}

confresolvconf () {
echo &quot;nameserver 127.0.0.1&quot; &gt; $RESOLVDNSMASQ
if [ ! -f $RESOLVCONFORDER ];then
cat &lt;&lt; EOF &gt; $RESOLVCONFORDER
# interface-order(5)
lo.inet*
lo.dnsmasq
lo.pdnsd
lo.!(pdns|pdns-recursor)
lo
tun*
tap*
hso*
em+([0-9])?[+([0-9]))*
p+([0-9]p+([0-9])?(_+([0-9]))*
eth*
ath*
wlan*
ppp*
*
EOF
fi
resolvconf -u
}

uninstall () {
   rm -f /etc/cron.d/CTparental*
   $CMDSERVICE$namservicecrond restart
   $CMDSERVICE$namservicehttpd stop
   rm -f /var/www/index.lighttpd.html
   rm -rf $tempDIR
   rm -rf $DIR_CONF
   rm -rf $DIRHTML

   if [ -f /etc/NetworkManager/NetworkManager.conf ];then
	$SED &quot;s/^#dns=dnsmasq/dns=dnsmasq/g&quot; /etc/NetworkManager/NetworkManager.conf
	$CMDSERVICE$namserviceNetworkManager restart
  	sleep 5
   fi
   rm -rf /usr/share/lighttpd/*
   rm -f $CTPARENTALCONFHTTPD
   rm -rf $DIRadminHTML
   rm -f $RESOLVDNSMASQ
   resolvconf -u
   if [ $installdeb = &quot;0&quot; ]; then
           $CMDREMOVE php5-cgi
	   $CMDREMOVE lighttpd
	   $CMDREMOVE dnsmasq 
	   $CMDREMOVE $paquetresolv
   fi
}

choiblenabled () {
echo -n &gt; $CATEGORIES_ENABLED
clear
echo &quot;Voulez Filtre par Blackliste ou Whiteliste :&quot;
echo -n &quot; B/W :&quot;
while (true); do
         read choi
         case $choi in
         B | b )
         echo &quot;Vous aller maintenant choisir les \&quot;Black listes\&quot; a appliquer.&quot;
		for CATEGORIE in `cat  $BL_CATEGORIES_AVAILABLE`  # pour chaque catégorie
		do   
		      clear
		      echo &quot;Voulez vous activer la categorie :&quot;
		      echo -n &quot;$CATEGORIE  O/N :&quot;
		      while (true); do
			 read choi
			 case $choi in
			 O | o )
			 echo $CATEGORIE &gt;&gt; $CATEGORIES_ENABLED
			 break
			 ;;
			 N | n )
			 break
			 ;;
		      esac
		      done
		done
         break
         ;;
         W | w )
         echo &quot;Vous aller maintenant choisir les \&quot;White listes\&quot; a appliquer.&quot;
		for CATEGORIE in `cat  $WL_CATEGORIES_AVAILABLE`  # pour chaque catégorie
		do   
		      clear
		      echo &quot;Voulez vous activer la categorie :&quot;
		      echo -n &quot;$CATEGORIE  O/N :&quot;
		      while (true); do
			 read choi
			 case $choi in
			 O | o )
			 echo $CATEGORIE &gt;&gt; $CATEGORIES_ENABLED
			 break
			 ;;
			 N | n )
			 break
			 ;;
		      esac
		      done
		done
         break
         ;;
      esac
done
}


errortime1 () {
clear
echo -e &quot;L'heure de debut doit ètre strictement inférieur a l'heure de fin: $RougeD$input$Fcolor &quot;
echo &quot;exemple: 08h00 a 23h59 ou 08h00 a 12h00 et 14h00 a 23h59&quot;
echo -e -n &quot;$RougeD$PCUSER$Fcolor est autorisés à se connecter le $BleuD${DAYS[$NumDAY]}$Fcolor de:&quot;
}
errortime2 () {
clear
echo -e &quot;Mauvaise syntaxe: $RougeD$input$Fcolor &quot;
echo &quot;exemple: 08h00 a 23h59 ou 08h00 a 12h00 et 14h00 a 23h59&quot;
echo -e -n &quot;$RougeD$PCUSER$Fcolor est autorisés à se connecter le $BleuD${DAYS[$NumDAY]}$Fcolor de:&quot;
}

pause () {   # fonction pause pour debugage
      choi=&quot;&quot;
      echo  &quot;pour continuer  press Q :&quot;
      while (true); do
         read choi
         case $choi in
         Q | q )
         break
         ;;
      esac
      done
}
activetimelogin () {
   TESTGESTIONNAIRE=&quot;&quot;
   for FILE in `echo $GESTIONNAIREDESESSIONS`
   do
      if [ -f $DIRPAM$FILE ];then
         if [ $(cat $DIRPAM$FILE | grep -c &quot;account required pam_time.so&quot;) -eq 0  ] ; then
            echo &quot;account required pam_time.so&quot; &gt;&gt; $DIRPAM$FILE
         fi
         TESTGESTIONNAIRE=$TESTGESTIONNAIRE\ $FILE
      fi
   done
   if [ $( echo $TESTGESTIONNAIRE | wc -m ) -eq 1 ] ; then
      echo &quot;Aucun gestionner de session connu , n'a été détecté.&quot;
      echo &quot; il est donc impossible d'activer le controle horaires des connections&quot;
      desactivetimelogin
      exit 1
   fi
   
   if [ ! -f $FILEPAMTIMECONF.old ] ; then
   cp $FILEPAMTIMECONF $FILEPAMTIMECONF.old
   fi
   echo &quot;*;*;root;Al0000-2400&quot; &gt; $FILEPAMTIMECONF
   for NumDAY in 0 1 2 3 4 5 6
   do
   echo  &gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
   done
   for PCUSER in `cat /etc/passwd | cut -d&quot;:&quot; -f1,3| grep -E [1-9][0-9][0-9][0-9] | cut -d &quot;:&quot; -f1`
   do
   $SED &quot;/^$PCUSER=/d&quot; $FILE_HCONF
   echo -e -n &quot;$PCUSER est autoriser a ce connecter 7j/7 24h/24 O/N?&quot; 
   choi=&quot;&quot;
   while (true); do
   read choi
        case $choi in
         O | o )
	 alltime=&quot;O&quot;
         echo &quot;$PCUSER=admin=&quot; &gt;&gt; $FILE_HCONF
   	break
         ;;
	 N| n )
         alltime=&quot;N&quot;
         echo &quot;$PCUSER=user=&quot; &gt;&gt; $FILE_HCONF
   	break
         ;;	
   esac
   done
      HORAIRES=&quot;&quot;
      for NumDAY in 0 1 2 3 4 5 6
         do
	 if [ $alltime = &quot;O&quot; ];then	
		break	
	 fi
	 
         clear
         echo &quot;exemple: 00h00 a 23h59 ou 08h00 a 12h00 et 14h00 a 16h50&quot;
         echo -e -n &quot;$RougeD$PCUSER$Fcolor est autorisés à se connecter le $BleuD${DAYS[$NumDAY]}$Fcolor de:&quot;
         while (true); do
            read choi
            input=$choi
            choi=$(echo $choi | sed -e &quot;s/h//g&quot; | sed -e &quot;s/ //g&quot; | sed -e &quot;s/a/-/g&quot; | sed -e &quot;s/et/:/g&quot; ) # mise en forme de choi pour pam   
               if [ $( echo $choi | grep -E -c &quot;^([0-1][0-9]|2[0-3])[0-5][0-9]-([0-1][0-9]|2[0-3])[0-5][0-9]$|^([0-1][0-9]|2[0-3])[0-5][0-9]-([0-1][0-9]|2[0-3])[0-5][0-9]:([0-1][0-9]|2[0-3])[0-5][0-9]-([0-1][0-9]|2[0-3])[0-5][0-9]$&quot; ) -eq 1 ];then
                  int1=$(echo $choi | cut -d &quot;:&quot; -f1 | cut -d &quot;-&quot; -f1)
                  int2=$(echo $choi | cut -d &quot;:&quot; -f1 | cut -d &quot;-&quot; -f2)
                  int3=$(echo $choi | cut -d &quot;:&quot; -f2 | cut -d &quot;-&quot; -f1)
                  int4=$(echo $choi | cut -d &quot;:&quot; -f2 | cut -d &quot;-&quot; -f2)
                  if [ $int1 -lt $int2 ];then
                     if [ ! $(echo $choi | grep -E -c &quot;:&quot;) -eq 1 ] ; then
                        if [ $NumDAY -eq 6 ] ; then
                           HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1-$int2&quot;
                        else
                           HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1-$int2|&quot;
                        fi
                        MINUTES1=$(echo $int1 | sed -e 's/.\{02\}//')
                        HEURES1=$(echo $int1 | sed -e 's/.\{02\}$//') 
                        MINUTES2=$(echo $int2 | sed -e 's/.\{02\}//')
                        HEURES2=$(echo $int2 | sed -e 's/.\{02\}$//')
			echo &quot;$PCUSER=$NumDAY=$HEURES1${h}h$MINUTES1:$HEURES2${h}h$MINUTES2&quot; &gt;&gt; $FILE_HCONF   
                        echo &quot;$MINUTES2 $HEURES2 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
                        break
   
                     else   
                        if [ $int2 -lt $int3 ];then
                           if [ $int3 -lt $int4 ];then
                              if [ $NumDAY -eq 6 ] ; then
                                 HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1-$int2|${DAYSPAM[$NumDAY]}$int3-$int4&quot;
                              else
                                 HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1-$int2|${DAYSPAM[$NumDAY]}$int3-$int4|&quot;
                              fi
                              MINUTES1=$(echo $int1 | sed -e 's/.\{02\}//')
                              HEURES1=$(echo $int1 | sed -e 's/.\{02\}$//')   
                              MINUTES2=$(echo $int2 | sed -e 's/.\{02\}//')
                              HEURES2=$(echo $int2 | sed -e 's/.\{02\}$//')  
                              MINUTES3=$(echo $int3 | sed -e 's/.\{02\}//')
                              HEURES3=$(echo $int3 | sed -e 's/.\{02\}$//')   
                              MINUTES4=$(echo $int4 | sed -e 's/.\{02\}//')
                              HEURES4=$(echo $int4 | sed -e 's/.\{02\}$//')   
                              ## minutes heures jourdumoi moi jourdelasemaine utilisateur  commande
			      echo &quot;$PCUSER=$NumDAY=$HEURES1${h}h$MINUTES1:$HEURES2${h}h$MINUTES2:$HEURES3${h}h$MINUTES3:$HEURES4${h}h$MINUTES4&quot; &gt;&gt; $FILE_HCONF
                              echo &quot;$MINUTES2 $HEURES2 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
                              echo &quot;$MINUTES4 $HEURES4 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
                              break   
                           else
                              errortime1
                           fi
                        else
                           errortime1
                        fi
                     fi
                  else
                     errortime1
   
                  fi
                       
               else
                  errortime2   
               fi
           
         done
     
        done
     	if [ $alltime = &quot;N&quot; ] ; then
		echo &quot;*;*;$PCUSER;$HORAIRESPAM&quot; &gt;&gt; $FILEPAMTIMECONF
	else
		echo &quot;*;*;$PCUSER;Al0000-2400&quot; &gt;&gt; $FILEPAMTIMECONF
	fi
   done
   
   for NumDAY in 0 1 2 3 4 5 6
   do
      echo &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
   done
   echo &gt;&gt; $FILE_HCONF
$SED &quot;s?^HOURSCONNECT.*?HOURSCONNECT=ON?g&quot; $FILE_CONF
$CMDSERVICE$namservicecrond restart
}

desactivetimelogin () {
for FILE in `echo $GESTIONNAIREDESESSIONS`
do
   $SED &quot;/account required pam_time.so/d&quot; $DIRPAM$FILE
done
cat $FILEPAMTIMECONF.old &gt; $FILEPAMTIMECONF
for NumDAY in 0 1 2 3 4 5 6
do
   rm -f /etc/cron.d/CTparental${DAYS[$NumDAY]}
done
$SED &quot;s?^HOURSCONNECT.*?HOURSCONNECT=OFF?g&quot; $FILE_CONF

$CMDSERVICE$namservicecrond restart
}


readTimeFILECONF () {
   TESTGESTIONNAIRE=&quot;&quot;
   for FILE in `echo $GESTIONNAIREDESESSIONS`
   do
      if [ -f $DIRPAM$FILE ];then
         if [ $(cat $DIRPAM$FILE | grep -c &quot;account required pam_time.so&quot;) -eq 0  ] ; then
            echo &quot;account required pam_time.so&quot; &gt;&gt; $DIRPAM$FILE
         fi
         TESTGESTIONNAIRE=$TESTGESTIONNAIRE\ $FILE
      fi
   done
   if [ $( echo $TESTGESTIONNAIRE | wc -m ) -eq 1 ] ; then
      echo &quot;Aucun gestionner de session connu , n'a été détecté.&quot;
      echo &quot; il est donc impossible d'activer le controle horaires des connections&quot;
      desactivetimelogin
      exit 1
   fi
   
   if [ ! -f $FILEPAMTIMECONF.old ] ; then
   cp $FILEPAMTIMECONF $FILEPAMTIMECONF.old
   fi
   echo &quot;*;*;root;Al0000-2400&quot; &gt; $FILEPAMTIMECONF
   for NumDAY in 0 1 2 3 4 5 6
   do
   echo  &gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
   done
   
   for PCUSER in `cat /etc/passwd | cut -d&quot;:&quot; -f1,3| grep -E [1-9][0-9][0-9][0-9] | cut -d &quot;:&quot; -f1`
   do
   HORAIRESPAM=&quot;&quot;
  	userisconfigured=&quot;0&quot;

	while read line
	do
	
			if [ $( echo $line | grep -E -c &quot;^$PCUSER=[0-6]=&quot; ) -eq 1 ] ; then
				echo &quot;$line&quot; 
				NumDAY=$(echo $line | cut -d&quot;=&quot; -f2)
				h1=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f1 | cut -d&quot;h&quot; -f1)
				m1=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f1 | cut -d&quot;h&quot; -f2)
				h2=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f2 | cut -d&quot;h&quot; -f1)
				m2=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f2 | cut -d&quot;h&quot; -f2)
				h3=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f3 | cut -d&quot;h&quot; -f1)
				m3=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f3 | cut -d&quot;h&quot; -f2)
				h4=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f4 | cut -d&quot;h&quot; -f1)
				m4=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f4 | cut -d&quot;h&quot; -f2)
				if [ $(echo -n $h3$m3 | wc -c) -gt 2 ]; then
 					if [ $NumDAY -eq 6 ] ; then
		                        	HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$h1$m1-$h2$m2|${DAYSPAM[$NumDAY]}$h3$m3-$h4$m4&quot;
						
		                      	else
		                        	HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$h1$m1-$h2$m2|${DAYSPAM[$NumDAY]}$h3$m3-$h4$m4|&quot;
		                      	fi
					echo &quot;$m2 $h2 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
					echo &quot;$m4 $h4 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
					userisconfigured=&quot;1&quot;

				else
				        if [ $NumDAY -eq 6 ] ; then
				           HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$h1$m1-$h2$m2&quot;
				        else
				           HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$h1$m1-$h2$m2|&quot;
				        fi
					echo &quot;$m2 $h2 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
					userisconfigured=&quot;1&quot;
				fi
			fi
	
	
	done &lt; $FILE_HCONF
	if [ $userisconfigured -eq 1 ] ; then
		echo &quot;*;*;$PCUSER;$HORAIRESPAM&quot; &gt;&gt; $FILEPAMTIMECONF
	else
		echo &quot;*;*;$PCUSER;Al0000-2400&quot; &gt;&gt; $FILEPAMTIMECONF
	fi
   done

$SED &quot;s?^HOURSCONNECT.*?HOURSCONNECT=ON?g&quot; $FILE_CONF
$CMDSERVICE$namservicecrond restart
}



usage=&quot;Usage: CTparental.sh    {-i }|{ -u }|{ -dl }|{ -ubl }|{ -rl }|{ -on }|{ -off }|{ -cble }|{ -dble }
                               |{ -tlo }|{ -tlu }|{ -uhtml }|{ -aupon }|{ -aupoff }|{ -aup } 
-i      =&gt; Install le controll parental sur l'ordinateur (pc de bureau) peut ètre utiliser avec
           un paramètre suplémentaire pour indiquer un chemin de sources pour la page web de redirection.
           exemple : CTparental.sh -i /home/toto/html/
           si pas d'option le \&quot;sens interdit\&quot; est utiliser par default.
-u      =&gt; désinstall le controll parental de l'ordinateur (pc de bureau)
-dl     =&gt; mais a jour le controll a partir de la black liste de l'université de toulouse
-ubl    =&gt; A faire aprés chaque modification du fichier $DNS_FILTER_OSSI
-rl     =&gt; A faire aprés chaque modification manuel du fichier $DREAB
-on     =&gt; Active le controll parental
-off    =&gt; Désactive le controll parental
-cble   =&gt; Configure du mode de filtrage par liste blanche ou par liste noir(default) ainssi que les 
           catégories que l'on veux activer.
-dble   =&gt; Remet les catégories activent par défaut et filtrage par liste noir.
-tlo    =&gt; Active est paramètre les restrictions horaire de login pour les utilisateurs.
           Compatible avec les gestionnaire de sessions suivant $GESTIONNAIREDESESSIONS .
-tlu    =&gt; Desative les restrictions horaire de login pour les utilisateurs.
-uhtml  =&gt; mait a jour la page de redirection a partir d'un repertoir source ou par defaut avec 
            le \&quot;sens interdit\&quot;.
            exemples:
                     - avec un repertoir source : CTparental.sh -uhtml /home/toto/html/
   		     - par default :              CTparental.sh -uhtml
            permet aussi de changer le couple login ,mots de passe de l'interface web.
-aupon  =&gt; active la mise ajour automatique de la black liste de toulouse (tous les 7 jours).
-aupoff =&gt; desactve la mise ajour automatique de la black liste de toulouse.
-aup    =&gt; comme -dl mais seulement si il n'y a pas eu de mise a jour depuis plus de 7 jours.	
 &quot;
case $args in
   -\? | -h* | --h*)
      echo &quot;$usage&quot;
      exit 0
      ;;
   -i | --install )
      install
      exit 0
      ;;
   -u | --uninstall )
      autoupdateoff 
      dnsmasqoff
      desactivetimelogin
      uninstall
      exit 0
      ;;
   -dl | --download )
      download
      adapt
      catChoice
      dnsmasqon
      $SED &quot;s?^LASTUPDATE.*?LASTUPDATE=$THISDAYS=`date +%d-%m-%Y\ %T`?g&quot; $FILE_CONF
      exit 0
      ;;
   -ubl | --updatebl )
      adapt
      catChoice
      dnsmasqon
      exit 0
      ;;
   -uhtml | --updatehtml )
      FoncHTTPDCONF
      exit 0
      ;;
   -rl | --reload )
      catChoice
      dnsmasqon
      exit 0
      ;;
   -on | --on )
      dnsmasqon
      exit 0
      ;;
   -off | --off )
      autoupdateoff 
      dnsmasqoff
      exit 0
      ;;
   -wlo | --whitelistonly )
      dnsmasqwhitelistonly
      exit 0
      ;;
   -cble | --confblenable )
      choiblenabled
      catChoice
      dnsmasqon
      exit 0
      ;;
    -dble | --defaultblenable )
      initblenabled
      catChoice
      dnsmasqon
      ;;
    -tlo | --timeloginon )
      activetimelogin
      ;;
    -tlu | --timeloginon )
      desactivetimelogin
      ;;
    -trf | --timeloginon )
      readTimeFILECONF
      ;;
    -aupon | --autoupdateon )
      autoupdateon
      ;;
    -aupoff | --autoupdateoff )
      autoupdateoff
      ;;
    -aup | --autoupdate )
      autoupdate
      ;;
      
   *)
      echo &quot;Argument inconnu :$1&quot;;
      echo &quot;$usage&quot;;
      exit 1
      ;;
esac


&lt;/code&gt;
'''index.php'''
&lt;code php&gt;
&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;
&lt;HTML&gt;&lt;!-- written by Rexy --&gt;
&lt;HEAD&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot;&gt;
&lt;TITLE&gt;ALCASAR DNS filtering&lt;/TITLE&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;/CTadmin/css/style.css&quot; type=&quot;text/css&quot;&gt;
&lt;/HEAD&gt;
&lt;body&gt;
&lt;?
function form_filter ($form_content)
{
// réencodage iso + format unix + rc fin de ligne (ouf...)
	$list = str_replace(&quot;\r\n&quot;, &quot;\n&quot;, utf8_decode($form_content));
	if (strlen($list) != 0){
		if ($list[strlen($list)-1] != &quot;\n&quot;) { $list[strlen($list)]=&quot;\n&quot;;} ;} ;
	return $list;
}
# Choice of language
$Language = 'en';
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
  $Langue = explode(&quot;,&quot;,$_SERVER['HTTP_ACCEPT_LANGUAGE']);
  $Language = strtolower(substr(chop($Langue[0]),0,2)); }
if($Language == 'fr'){
  $l_hours_error1=&quot;un mauvais format horaire a étais trouver:exemple 8h30 doit c'écrir 08h30&quot;;
  $l_hours_error2=&quot;incoérance horaire: &quot;;
  $l_hours_on = &quot;Les horaires de connection sont actuellement activés&quot;;
  $l_hours_off = &quot;Les horaires de connection sont actuellement désactivés&quot;;
  $l_switch_hours_off = &quot;Désactiver les horaires de connection&quot;;
  $l_switch_hours_on = &quot;Activer les horaires de connection&quot;;
  $l_hours1 = &quot;Heures de connections autorisées&quot;;
  $l_switch_Init_bl = &quot;Init Catégories&quot;;
  $l_auto_update_on = &quot;La mise a jour de la blackliste de Toulouse tout les 7 jour est activé&quot;;
  $l_auto_update_off = &quot;La mise a jour de la blackliste de Toulouse tout les 7 jour est désactivé&quot;;
  $l_switch_auto_update_on = &quot;Activer Maj Auto&quot;;
  $l_switch_auto_update_off = &quot;Désactiver Maj Auto&quot;;
  $l_fmenu_black = &quot;Firlrage par BlackListe&quot;;
  $l_fmenu_white = &quot;Firlrage par WhiteListe&quot;;
  $l_title1 = &quot;Filtrage de noms de domaine &quot;;
  $l_error_open_file=&quot;Erreur d'ouverture du fichier&quot;;
  $l_dnsfilter_on=&quot;Le filtrage de noms de domaine est actuellement activé&quot;;
  $l_dnsfilter_off=&quot;Le filtrage de noms de domaine est actuellement désactivé&quot;;
  $l_switch_filtering_on=&quot;Activer le filtrage&quot;;
  $l_switch_filtering_off=&quot;Désactiver le filtrage&quot;;
  $l_main_bl=&quot;Liste noire/blanche&quot;;
  $l_bl_version=&quot;Version actuelle :&quot;;
  $l_bl_categories_bl=&quot;Choix des catégories à filtrer&quot;;
  $l_bl_categories_wl=&quot;Choix des catégories à autoriser&quot;;
  $l_download_bl=&quot;Télécharger la dernière version&quot;;
  $l_fingerprint=&quot;L'empreinte numérique du fichier téléchargé est : &quot;;
  $l_fingerprint2=&quot;Vérifiez-là en suivant ce lien (ligne 'blacklists.tar.gz') : &quot;;
  $l_activate_bl=&quot;Activer la nouvelle version&quot;;
  $l_reject_bl=&quot;Rejeter&quot;;
  $l_warning=&quot;Temps estimé : une minute.&quot;;
  $l_specific_filtering=&quot;Filtrage special&quot;;
  $l_forbidden_dns=&quot;Noms de domaine filtrés&quot;;
  $l_forbidden_dns_explain=&quot;Entrez un nom de domaine par ligne (exemple : domaine.org)&quot;;
  $l_one_dns=&quot;Entrez un nom de domaine par ligne (exemple : domaine.org)&quot;;
  $l_rehabilitated_dns=&quot;Noms de domaine réhabilités&quot;;
  $l_rehabilitated_dns_explain_bl=&quot;1-Entrez ici des noms de domaine bloqués par la liste noire &lt;BR&gt; que vous souhaitez réhabiliter.&quot;;
  $l_rehabilitated_dns_explain_wl=&quot;2-Entrez ici des noms de domaine autorisée en plus de ceux &lt;BR&gt; de la liste blanche de Toulouze.&quot;;
  $l_add_to_bl=&quot;Noms de domaine ajoutés à la liste noire&quot;;
   $l_record=&quot;Enregistrer les modifications&quot;;
  $l_wait=&quot;Une fois validées, 30 secondes sont nécessaires pour traiter vos modifications&quot;;
}
else {
  $l_hours_error1=&quot;un mauvais format horaire a étais trouver:exemple 8h30 doit c'écrir 08h30&quot;;
  $l_hours_error2=&quot;incoérance horaire: &quot;;
  $l_hours_on = &quot;Les horaires de connection sont actuellement activés&quot;;
  $l_hours_off = &quot;Les horaires de connection sont actuellement désactivés&quot;;
  $l_switch_hours_off = &quot;Désactiver les horaires de connection&quot;;
  $l_switch_hours_on = &quot;Activer les horaires de connection&quot;;
  $l_hours1 = &quot;Heures de connections autorisées&quot;;
  $l_switch_Init_bl = &quot;Init Catégories&quot;;
  $l_auto_update_on = &quot;La mise a jour de la blackliste de Toulouse tout les 7 jour est activé&quot;;
  $l_auto_update_off = &quot;La mise a jour de la blackliste de Toulouse tout les 7 jour est désactivé&quot;;
  $l_switch_auto_update_on = &quot;Activer Maj Auto&quot;;
  $l_switch_auto_update_off = &quot;Désactiver Maj Auto&quot;;
  $l_fmenu_black = &quot;Firlrage par BlackListe&quot;;
  $l_fmenu_white = &quot;Firlrage par WhiteListe&quot;;
  $l_title1 = &quot;Domain names filtering&quot;;
  $l_error_open_file=&quot;Error opening the file&quot;;
  $l_dnsfilter_on=&quot;Actually, the Domain name filter is on&quot;;
  $l_dnsfilter_off=&quot;Actually, the Domain name filter is off&quot;;
  $l_switch_filtering_on=&quot;Switch the Filter on&quot;;
  $l_switch_filtering_off=&quot;Switch the Filter off&quot;;
  $l_main_bl=&quot;Blacklist/Whiteliste&quot;;
  $l_bl_version=&quot;Current version : &quot;;
  $l_bl_categories_bl=&quot;Choice of filtered categories&quot;;
  $l_bl_categories_wl=&quot;Choice of autorised categories&quot;;
  $l_download_bl=&quot;Download the last version&quot;;
  $l_fingerprint=&quot;The digital fingerprint of the downloaded blacklist is : &quot;;
  $l_fingerprint2=&quot;Verify it with this link (line 'blacklists.tar.gz') : &quot;;
  $l_activate_bl=&quot;Activate the new version&quot;;
  $l_reject_bl=&quot;Reject&quot;;
  $l_warning=&quot;Estimated time : one minute.&quot;;
  $l_specific_filtering=&quot;Specific filtering&quot;;
  $l_forbidden_dns=&quot;Filtered domain names&quot;;
  $l_forbidden_dns_explain=&quot;Enter one domain name per row (exemple : domain.org)&quot;;
  $l_one_dns=&quot;Enter one domain name per row (example : domain.org)&quot;;
  $l_rehabilitated_dns=&quot;Rehabilitated domain names&quot;;
  $l_rehabilitated_dns_explain_bl=&quot;Enter here domain names that are blocked by the blacklist &lt;BR&gt; and you want to rehabilitate.&quot;;
  $l_rehabilitated_dns_explain_wl=&quot;2-Entrez ici des noms de domaine autorisée en plus de ceux &lt;BR&gt; de la liste blanche de Toulouze.&quot;;
  $l_add_to_bl=&quot;Domain names to add to blacklist&quot;;
  $l_record=&quot;Save changes&quot;;
  $l_wait=&quot;Once validated, 30 seconds is necessary to compute your modifications&quot;;
 }
$weeknum = array( 0,1,2,3,4,5,6);
$bl_categories=&quot;/usr/local/etc/CTparental/bl-categories-available&quot;;
$bl_categories_enabled=&quot;/usr/local/etc/CTparental/categories-enabled&quot;;
$conf_file=&quot;/usr/local/etc/CTparental/CTparental.conf&quot;;
$hconf_file=&quot;/usr/local/etc/CTparental/CThours.conf&quot;;
$wl_domains=&quot;/usr/local/etc/CTparental/domaine-rehabiliter&quot;;
$bl_domains=&quot;/usr/local/etc/CTparental/blackliste-local&quot;;
# default values


if (isset($_POST['choix'])){ $choix=$_POST['choix']; } else { $choix=&quot;&quot;; }
switch ($choix)
{
case 'BL_On' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -on&quot;);
	break;
case 'BL_Off' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -off&quot;);
	break;
case 'H_On' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -trf&quot;);
	break;
case 'H_Off' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -tlu&quot;);
	break;
case 'AUP_On' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -aupon&quot;);
	break;
case 'AUP_Off' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -aupoff&quot;);
	break;
case 'INIT_BL' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -dble&quot;);
	break;
case 'Download_bl' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -dl&quot;);
	break;
case 'MAJ_cat' :
	$tab=file($bl_categories_enabled);	
	if ($tab)
		{
		$pointeur=fopen($bl_categories_enabled, &quot;w+&quot;);
		foreach ($_POST as $key =&gt; $value)
			{
                        if (strstr($key,'chk-'))
				{	
				$line=str_replace('chk-','',$key).&quot;\n&quot;;
				fwrite($pointeur,$line);
				}
			}
		fclose($pointeur);
		}
	else {echo &quot;$l_error_open_file $bl_categories_enabled&quot;;}
	$fichier=fopen($bl_domains,&quot;w+&quot;);
	fputs($fichier, form_filter($_POST['OSSI_bl_domains']));
	fclose($fichier);
	unset($_POST['OSSI_bl_domains']);
	$fichier=fopen($wl_domains,&quot;w+&quot;);
	fputs($fichier, form_filter($_POST['OSSI_wl_domains']));
	fclose($fichier);
	unset($_POST['OSSI_wl_domains']);
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -ubl&quot;);
	break;
case 'MAJ_H' :
	$formatheuresok=1;
	if (isset($_POST['selectuser'])){ $selectuser=$_POST['selectuser']; }
	#echo &quot;$selectuser&quot;;
	$tab=file($hconf_file);	
	if ($tab)
	{
		$pointeur=fopen($hconf_file, &quot;w+&quot;);	
		foreach ($tab as $line)
		{
			if (strstr($line,$selectuser) == false)
			{
				fwrite($pointeur,$line); # on reécrit toutes les lignes ne corepondent pas a l'utilisateur selectionner
			}
	
		}
	}
	else {echo &quot;$l_error_open_file $hconf_file&quot;;}
	if (isset($_POST[&quot;isadmin&quot;])){fwrite($pointeur,&quot;$selectuser=admin=&quot;.&quot;\n&quot;); } 
	else 
	{
		fwrite($pointeur,&quot;$selectuser=user=&quot;.&quot;\n&quot;); 
		foreach ($weeknum as $numday)
		{
			$formatheuresok=1;
			if (isset($_POST[&quot;h1$numday&quot;])){ $h1[$numday]=$_POST[&quot;h1$numday&quot;]; } else { $h1[$numday]=&quot;00h00&quot;; }
			if (isset($_POST[&quot;h2$numday&quot;])){ $h2[$numday]=$_POST[&quot;h2$numday&quot;]; } else { $h2[$numday]=&quot;23h59&quot;; }
			if (isset($_POST[&quot;h3$numday&quot;])){ $h3[$numday]=$_POST[&quot;h3$numday&quot;]; } else { $h3[$numday]=&quot;&quot;; }
			if (isset($_POST[&quot;h4$numday&quot;])){ $h4[$numday]=$_POST[&quot;h4$numday&quot;]; } else { $h4[$numday]=&quot;&quot;; }
			if (preg_match(&quot;/^[0-1][0-9]h[0-5][0-9]$|^2[0-3]h[0-5][0-9]$/&quot;,$h1[$numday])!=1){$formatheuresok=0;}
			if (preg_match(&quot;/^[0-1][0-9]h[0-5][0-9]$|^2[0-3]h[0-5][0-9]$/&quot;,$h2[$numday])!=1){$formatheuresok=0;}
			if ($h3[$numday]==&quot;&quot;)
			{	
	
				if ($formatheuresok == 1)
				{
					$t1=explode(&quot;h&quot;, $h1[$numday]);
					$t2=explode(&quot;h&quot;, $h2[$numday]);
					$v1=&quot;$t1[0]$t1[1]&quot;;
					$v2=&quot;$t2[0]$t2[1]&quot;;
					if ( $v1 &lt; $v2)
					{
						fwrite($pointeur,&quot;$selectuser=$numday=$h1[$numday]:$h2[$numday]&quot;.&quot;\n&quot;);
					}
					else
					{
						fwrite($pointeur,&quot;$selectuser=$numday=00h00:23h59&quot;.&quot;\n&quot;);
						echo &quot;&lt;H3&gt;$l_hours_error2 $h1[$numday]&gt;=$h2[$numday]&lt;/H3&gt;&quot;;
					}
				}
				else 
				{
					fwrite($pointeur,&quot;$selectuser=$numday=00h00:23h59&quot;.&quot;\n&quot;);
					echo &quot;&lt;H3&gt;$l_hours_error1&lt;/H3&gt;&quot;;
				}
			}
			else 
			{
				if (preg_match(&quot;/^[0-1][0-9]h[0-5][0-9]$|^2[0-3]h[0-5][0-9]$/&quot;,$h3[$numday])!=1){$formatheuresok=0;}
				if (preg_match(&quot;/^[0-1][0-9]h[0-5][0-9]$|^2[0-3]h[0-5][0-9]$/&quot;,$h4[$numday])!=1){$formatheuresok=0;}
				if ($formatheuresok == 1)
				{
					$t1=explode(&quot;h&quot;, $h1[$numday]);
					$t2=explode(&quot;h&quot;, $h2[$numday]);
					$t3=explode(&quot;h&quot;, $h3[$numday]);
					$t4=explode(&quot;h&quot;, $h4[$numday]);
					$v1=&quot;$t1[0]$t1[1]&quot;;
					$v2=&quot;$t2[0]$t2[1]&quot;;
					$v3=&quot;$t3[0]$t3[1]&quot;;
					$v4=&quot;$t4[0]$t4[1]&quot;;
					if ( $v1 &lt; $v2 &amp;&amp; $v2 &lt; $v3 &amp;&amp; $v3 &lt; $v4)
					{
					fwrite($pointeur,&quot;$selectuser=$numday=$h1[$numday]:$h2[$numday]:$h3[$numday]:$h4[$numday]&quot;.&quot;\n&quot;);
					}
					else
					{
						fwrite($pointeur,&quot;$selectuser=$numday=00h00:23h59&quot;.&quot;\n&quot;);
						echo &quot;&lt;H3&gt;$l_hours_error2 $h1[$numday]&gt;=$h2[$numday]&gt;=$h3[$numday]&gt;=$h4[$numday]&lt;/H3&gt;&quot;;
					}
				}
				else 
				{
					fwrite($pointeur,&quot;$selectuser=$numday=00h00:23h59&quot;.&quot;\n&quot;);
					echo &quot;&lt;H3&gt;$l_hours_error1&lt;/H3&gt;&quot;;
					
				}
			}

		}
	}
	
	fclose($pointeur);
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -trf&quot;);
	break;

}

echo &quot;&lt;TABLE width='100%' border=0 cellspacing=0 cellpadding=0&gt;&quot;;
echo &quot;&lt;tr&gt;&lt;th&gt;$l_title1&lt;/th&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;tr bgcolor='#FFCC66'&gt;&lt;td&gt;&lt;img src='/images/pix.gif' width=1 height=2&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;/TABLE&gt;&quot;;
echo &quot;&lt;TABLE width='100%' border=1 cellspacing=0 cellpadding=0&gt;&quot;;
echo &quot;&lt;tr&gt;&lt;td valign='middle' align='left'&gt;&quot;;

if (is_file ($conf_file))
	{
	$tab=file($conf_file);
	if ($tab)
		{
		foreach ($tab as $line)
			{
			$field=explode(&quot;=&quot;, $line);
			if ($field[0] == &quot;LASTUPDATE&quot;)	{$LASTUPDATE=trim($field[2]);}
			if ($field[0] == &quot;DNSMASQ&quot;)		{$DNSMASQ=trim($field[1]);}
			if ($field[0] == &quot;AUTOUPDATE&quot;)		{$AUTOUPDATE=trim($field[1]);}
			if ($field[0] == &quot;HOURSCONNECT&quot;)	{$HOURSCONNECT=trim($field[1]);}
                        
			}
		}
	}
else { echo &quot;$l_error_open_file $conf_file&quot;;}
if ($DNSMASQ &lt;&gt; &quot;OFF&quot;)
	{
	echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_dnsfilter_on&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
 	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type=hidden name='choix' value=\&quot;BL_Off\&quot;&gt;&quot;;
	echo &quot;&lt;input type=submit value=\&quot;$l_switch_filtering_off\&quot;&gt;&quot;;
}
else
	{
	echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_dnsfilter_off&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
 	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type=hidden name='choix' value=\&quot;BL_On\&quot;&gt;&quot;;
	echo &quot;&lt;input type=submit value=\&quot;$l_switch_filtering_on\&quot;&gt;&quot;;
	}
echo &quot;&lt;/FORM&gt;&quot;;
if ( $DNSMASQ&lt;&gt;&quot;OFF&quot;){
include 'dns.php';
}
echo &quot;&lt;/TABLE&gt;&quot;;
echo &quot;&lt;TABLE width='100%' border=0 cellspacing=0 cellpadding=0&gt;&quot;;
echo &quot;&lt;tr&gt;&lt;th&gt;$l_hours1&lt;/th&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;tr bgcolor='#FFCC66'&gt;&lt;td&gt;&lt;img src='/images/pix.gif' width=1 height=2&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;/TABLE&gt;&quot;;
echo &quot;&lt;TABLE width='100%' border=1 cellspacing=0 cellpadding=0&gt;&quot;;
echo &quot;&lt;tr&gt;&lt;td valign='middle' align='left'&gt;&quot;;
if ($HOURSCONNECT == &quot;ON&quot;)
	{
	echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_hours_on&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
 	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type=hidden name='choix' value=\&quot;H_Off\&quot;&gt;&quot;;
	echo &quot;&lt;input type=submit value=\&quot;$l_switch_hours_off\&quot;&gt;&quot;;
}
else
	{
	echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_hours_off&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
 	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type=hidden name='choix' value=\&quot;H_On\&quot;&gt;&quot;;
	echo &quot;&lt;input type=submit value=\&quot;$l_switch_hours_on\&quot;&gt;&quot;;
	}
echo &quot;&lt;/FORM&gt;&quot;;

if ($HOURSCONNECT == &quot;ON&quot;)
{
include 'hours.php';
}
echo &quot;&lt;/td&gt;&lt;/tr&gt;&quot;;
?&gt;
&lt;/BODY&gt;
&lt;/HTML&gt;
&lt;/code&gt;
'''dns.php'''
&lt;code php&gt;
&lt;?
if (isset($_GET['filtragemode'])){ $filtragemode=$_GET['filtragemode']; } else {$filtragemode=$DNSMASQ;}
if ($filtragemode == 'WHITE')
{
$bl_categories=&quot;/usr/local/etc/CTparental/wl-categories-available&quot;;
}
else { $bl_categories=&quot;/usr/local/etc/CTparental/bl-categories-available&quot;;}

$filtragemode = urlencode($filtragemode);
echo &quot;&lt;table border=0 width=400 cellpadding=0 cellspacing=2&gt;&quot;;
echo &quot;&lt;tr valign=top&gt;&quot;;
echo &quot;&lt;td align=center&quot;; if ( $filtragemode == &quot;BLACK&quot; ) { echo &quot; bgcolor=\&quot;#FFCC66\&quot;&quot;;} echo &quot;&gt;&quot;;
echo &quot;&lt;a href=\&quot;$_SERVER[PHP_SELF]?filtragemode=BLACK\&quot; title=\&quot;\&quot;&gt;&lt;font color=\&quot;black\&quot;&gt;&lt;b&gt;$l_fmenu_black&lt;/b&gt;&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&quot;;
echo &quot;&lt;td align=center&quot;; if ( $filtragemode == &quot;WHITE&quot; ) { echo &quot; bgcolor=\&quot;#FFCC66\&quot;&quot;;} echo &quot;&gt;&quot;;
echo &quot;&lt;a href=\&quot;$_SERVER[PHP_SELF]?filtragemode=WHITE\&quot; title=\&quot;\&quot;&gt;&lt;font color=\&quot;black\&quot;&gt;&lt;b&gt;$l_fmenu_white&lt;/b&gt;&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&quot;;
echo &quot;&lt;/tr&gt;&quot;;
echo&quot; &lt;/table&gt;&quot;;
echo &quot;&lt;/td&gt;&lt;/tr&gt;&quot;;


function echo_file ($filename)
	{
	if (file_exists($filename))
		{
		if (filesize($filename) != 0)
			{
			$pointeur=fopen($filename,&quot;r&quot;);
			$tampon = fread($pointeur, filesize($filename));
			fclose($pointeur);
			echo $tampon;
			}
		}
	else
		{
		echo &quot;$l_error_openfile $filename&quot;;
		}
	}

echo &quot;&lt;TABLE width='100%' border=1 cellspacing=0 cellpadding=1&gt;&quot;;
echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_main_bl&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
echo &quot;&lt;tr&gt;&lt;td valign='middle' align='left' colspan=10&gt;&quot;;
echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
echo &quot;&lt;center&gt;$l_bl_version $LASTUPDATE&quot;;
echo &quot;&lt;/center&gt;&lt;BR&gt;&quot;;
	echo &quot;&lt;input type='hidden' name='choix' value='Download_bl'&gt;&quot;;
	echo &quot;&lt;input type='submit' value='$l_download_bl'&gt;&quot;;
	echo &quot; ($l_warning)&quot;;

echo &quot;&lt;/FORM&gt;&quot;;
echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
echo &quot;&lt;input type='hidden' name='choix' value='INIT_BL'&gt;&quot;;
echo &quot;&lt;input type='submit' value='$l_switch_Init_bl'&gt;&quot;;
echo &quot;&lt;/FORM&gt;&quot;;
if ($AUTOUPDATE == &quot;ON&quot;)
	{
	echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_auto_update_on&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
 	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type=hidden name='choix' value=\&quot;AUP_Off\&quot;&gt;&quot;;
	echo &quot;&lt;input type=submit value=\&quot;$l_switch_auto_update_off\&quot;&gt;&quot;;
}
else
	{
	echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_auto_update_off&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
 	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type=hidden name='choix' value=\&quot;AUP_On\&quot;&gt;&quot;;
	echo &quot;&lt;input type=submit value=\&quot;$l_switch_auto_update_on\&quot;&gt;&quot;;
	}
echo &quot;&lt;/FORM&gt;&quot;;
echo &quot;&lt;/td&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;tr&gt;&lt;td valign=\&quot;middle\&quot; align=\&quot;left\&quot; colspan=10&gt;&quot;;
echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
echo &quot;&lt;input type='hidden' name='choix' value='MAJ_cat'&gt;&quot;;
if ($filtragemode == &quot;BLACK&quot;){echo &quot;&lt;center&gt;$l_bl_categories_bl&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;}
else {echo &quot;&lt;center&gt;$l_bl_categories_wl&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;}

//on lit et on interprete le fichier de catégories
$cols=1; 
if (file_exists($bl_categories))
	{
	$pointeur=fopen($bl_categories,&quot;r&quot;);
	while (!feof ($pointeur))
		{
		$ligne=fgets($pointeur, 4096);
		if ($ligne)
			{
			if ($cols == 1) { echo &quot;&lt;tr&gt;&quot;;}
			$categorie=trim(basename($ligne));
			echo &quot;&lt;td&gt;&lt;a href='bl_categories_help.php?cat=$categorie' target='cat_help' onclick=window.open('bl_categories_help.php','cat_help','width=600,height=150,toolbar=no,scrollbars=no,resizable=yes') title='categories help page'&gt;$categorie&lt;/a&gt;&lt;br&gt;&quot;;
			echo &quot;&lt;input type='checkbox' name='chk-$categorie'&quot;;
			// la categorie n'existe pas dans le fichier de categorie activer -&gt; categorie non selectionnée
                        $str = file_get_contents($bl_categories_enabled);
			if (strpos($str, $categorie)===false) { echo &quot;&gt;&quot;;}
			else { echo &quot;checked&gt;&quot;; }
			echo &quot;&lt;/td&gt;&quot;;
			$cols++;
			if ($cols &gt; 10) {
				echo &quot;&lt;/tr&gt;&quot;;
				$cols=1; }
			}
		}
	fclose($pointeur);
	}
else	{
	echo &quot;$l_error_open_file $bl_categories&quot;;
	}
echo &quot;&lt;/td&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;tr&gt;&lt;td valign='middle' align='left' colspan=10&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;tr&gt;&lt;td colspan=5 align=center&gt;&quot;;
if ($filtragemode == &quot;BLACK&quot;){echo &quot;&lt;H3&gt;$l_rehabilitated_dns&lt;/H3&gt;$l_rehabilitated_dns_explain_bl&lt;BR&gt;$l_one_dns&lt;BR&gt;&quot;;}
else {echo &quot;&lt;H3&gt;$l_rehabilitated_dns&lt;/H3&gt;$l_rehabilitated_dns_explain_wl&lt;BR&gt;$l_one_dns&lt;BR&gt;&quot;;}
echo &quot;&lt;textarea name='OSSI_wl_domains' rows=5 cols=40&gt;&quot;;
echo_file ($wl_domains);
echo &quot;&lt;/textarea&gt;&lt;/td&gt;&quot;;
if ( $filtragemode == &quot;BLACK&quot; ) {
echo &quot;&lt;td colspan=5 align=center&gt;&quot;;
echo &quot;&lt;H3&gt;$l_forbidden_dns&lt;/H3&gt;$l_forbidden_dns_explain&lt;BR&gt;&quot;;
echo &quot;&lt;textarea name='OSSI_bl_domains' rows=5 cols=40&gt;&quot;;
echo_file ($bl_domains);
echo &quot;&lt;/textarea&gt;&lt;/td&gt;&quot;;
}
echo &quot;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=10&gt;&quot;;

echo &quot;&lt;input type='submit' value='$l_record'&gt;&quot;;
echo &quot;&lt;/form&gt; ($l_wait)&quot;;

echo &quot;&lt;/td&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;/TABLE&gt;&quot;;
?&gt;
&lt;/code&gt;
'''hours.php'''
&lt;code php&gt;

&lt;?
# Choice of language
$Language = 'en';
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
  $Langue = explode(&quot;,&quot;,$_SERVER['HTTP_ACCEPT_LANGUAGE']);
  $Language = strtolower(substr(chop($Langue[0]),0,2)); }
if($Language == 'fr'){
  $l_selectuser=&quot;l'utilisateur selectionner est: &quot;;
  $l_userisnotselect=&quot;Veuillez selectionner un utilisateur.&quot;;
  $l_isadmin = &quot;7j/7 24h/24&quot;;
  $l_valide = &quot;Enregistrer&quot;;
  $to = &quot; a &quot; ;
  $and = &quot; et &quot; ;
  $l_select = &quot;Selectionner&quot;;
  $l_info1 = &quot;08h00 a 24h00 ou 08h00 a 12h00 et 14h00 a 24h00&quot;;
  $week = array( &quot;lundi&quot;,&quot;mardi&quot;,&quot;mercredi&quot;,&quot;jeudi&quot;,&quot;vendredi&quot;,&quot;samedi&quot;,&quot;dimanche&quot;);
}
else {
  $l_userisnotselect=&quot;Veuillez selectionner un utilisateur.&quot;;
  $l_selectuser=&quot;l'utilisateur selectionner est: &quot;;
  $l_isadmin = &quot;7j/7 24h/24&quot;;
  $l_valide = &quot;Enregistrer&quot;;
  $l_select = &quot;Select&quot;;
  $to = &quot; to &quot; ;
  $and = &quot; and &quot; ;
  $l_info1 = &quot;08h00 a 24h00 ou 08h00 a 12h00 et 14h00 a 24h00&quot;;
  $week = array( &quot;lundi&quot;,&quot;mardi&quot;,&quot;mercredi&quot;,&quot;jeudi&quot;,&quot;vendredi&quot;,&quot;samedi&quot;,&quot;dimanche&quot;);
}
if (isset($_POST['selectuser'])){ $selectuser=$_POST['selectuser']; }


### on lit est on interprète le fichier CTparental.conf
echo &quot;&lt;TABLE width='100%' border=0 cellspacing=0 cellpadding=0&gt;&quot;;
exec (&quot;cat /etc/passwd | cut -d\&quot;:\&quot; -f1,3| grep -E [1-9][0-9][0-9][0-9] | cut -d \&quot;:\&quot; -f1&quot;,$USERSPC); # récupération des utilisateurs du poste.(UID &gt;= 1000)
echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;select name=\&quot;selectuser\&quot;&gt;&quot;;
	if ($selectuser){echo &quot;&lt;option value=\&quot;$selectuser\&quot;&gt;$selectuser\n&quot;; }
        else {echo &quot;&lt;option value=\&quot;\&quot;&gt;\n&quot;; }
	foreach ($USERSPC as $USERSELECT){echo &quot;&lt;option value=\&quot;$USERSELECT\&quot;&gt;$USERSELECT\n&quot;;}
	echo &quot; &lt;/select&gt;&quot;;
echo &quot;&lt;input type=\&quot;submit\&quot; value=\&quot;$l_select\&quot;&gt;&quot;;
echo &quot;&lt;/FORM&gt;&quot;;
if (isset($selectuser)) {
	echo &quot;&lt;/TABLE&gt;&quot;;
	echo &quot;&lt;TABLE width='400' border=0 cellspacing=0 cellpadding=0&gt;&quot;;
	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_selectuser $selectuser&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
	
	if (is_file ($hconf_file))
		{
		$tab=file($hconf_file);
		if ($tab)
			{
			foreach ($tab as $line)
				{
		                $field=explode(&quot;=&quot;, $line);
		                	if ( $field[0] == $selectuser ){
				        	$field2=explode(&quot;:&quot;, $field[2]);
						$numday=$field[1];
						$isconfigured=1;
						
		                        	if ( $numday == &quot;admin&quot;) { echo &quot;&lt;tr&gt;&lt;td&gt;$l_isadmin : &lt;/td&gt;&lt;td&gt;&lt;input type='checkbox' name='isadmin' checked&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;}
						elseif ( $numday == &quot;user&quot;) {echo &quot;&lt;tr&gt;&lt;td&gt;$l_isadmin : &lt;/td&gt;&lt;td&gt;&lt;input type='checkbox' name='isadmin' &gt;&lt;/td&gt;&lt;/tr&gt;&quot;;}
						else {
							echo&quot;&lt;tr&gt;&lt;td&gt;$week[$numday]:&lt;/td&gt;&lt;td&gt;&lt;INPUT type=\&quot;text\&quot; size=5 maxlength=5 value=\&quot;$field2[0]\&quot;  name=\&quot;h1$numday\&quot;&gt;&lt;/td&gt;&quot;;
				        	        echo&quot; &lt;td&gt;$to &lt;INPUT type=\&quot;text\&quot; size=5 maxlength=5 value=\&quot;$field2[1]\&quot; name=\&quot;h2$numday\&quot;&gt;&lt;/td&gt;&quot;;
				        	        echo&quot; &lt;td&gt;$and &lt;INPUT type=\&quot;text\&quot; size=5 maxlength=5 value=\&quot;$field2[2]\&quot; name=\&quot;h3$numday\&quot;&gt;&lt;/td&gt;&quot;;	
							echo&quot; &lt;td&gt;$to &lt;INPUT type=\&quot;text\&quot; size=5 maxlength=5 value=\&quot;$field2[3]\&quot; name=\&quot;h4$numday\&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;
						}
								            		
					}
				        
				}
			 	
			}
		
		}
	else { echo &quot;$l_error_open_file $hconf_file&quot;;}

	if (isset($isconfigured)==0){
		echo &quot;&lt;tr&gt;&lt;td&gt;$l_isadmin : &lt;/td&gt;&lt;td&gt;&lt;input type='checkbox' name='isadmin' checked=\&quot;checked\&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;
	}


	echo &quot;&lt;/TABLE&gt;&quot;;
	echo &quot;&lt;input type=hidden name='selectuser' value=\&quot;$selectuser\&quot;&gt;&quot;;
        echo &quot;&lt;input type=hidden name='choix' value=\&quot;MAJ_H\&quot;&gt;&quot;;
	echo &quot;&lt;input type=\&quot;submit\&quot; value=\&quot;$l_valide\&quot;&gt;&quot;;
	echo &quot;&lt;/FORM&gt;&quot;;
}
else { echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_userisnotselect&lt;/H3&gt;&lt;/CENTER&gt;&quot;;}
?&gt;

&lt;/code&gt;
'''bl_categories_help.php'''
&lt;code php&gt;
&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;
&lt;HTML&gt;&lt;!-- written by Rexy --&gt;
&lt;HEAD&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot;&gt;
&lt;?
$bl_dir=&quot;/usr/local/etc/CTparental/dnsfilter-available/&quot;;
# Choice of language
$Language = 'en';
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
  $Langue = explode(&quot;,&quot;,$_SERVER['HTTP_ACCEPT_LANGUAGE']);
  $Language = strtolower(substr(chop($Langue[0]),0,2)); }
if($Language == 'fr'){
  $l_title = &quot;Catégories de la liste noire&quot;;
  $l_error_open_file=&quot;Erreur d'ouverture du fichier&quot;;
  $l_close=&quot;Fermer&quot;;
  $l_unknown_cat=&quot;Cette catégorie n'est pas décrite&quot;;
  $l_nb_domains=&quot;Nombre de noms de domaine filtrés :&quot;;
  $l_nb_urls=&quot;Nombre d'URL filtrés :&quot;;
  $l_explain_adult=&quot;Sites relatifs à l'érotisme et à la pornographie&quot;;
  $l_explain_agressif=&quot;Sites extrémistes, racistes, antisémites ou incitant à la haine&quot;;
  $l_explain_arjel=&quot;Sites de pari en ligne certifies par l'ARJEL (Autorité de Régulation des Jeux En Ligne)&quot;;
  $l_explain_astrology=&quot;Sites relatifs à l'astrologie&quot;;
  $l_explain_bank=&quot;Sites de banques en ligne&quot;;
  $l_explain_audio_video=&quot;Sites de téléchargement de fichiers audio et vidéo&quot;;
  $l_explain_blog=&quot;Sites d'hébergement de blogs&quot;;
  $l_explain_celebrity=&quot;Sites « people », stars, etc.&quot;;
  $l_explain_chat=&quot;Sites de dialogue en ligne&quot;;
  $l_explain_child=&quot;Sites pour enfants&quot;;
  $l_explain_cleaning=&quot;Sites relatifs à la mise à jour logicielle ou antivirale&quot;;
  $l_explain_dangerous_material=&quot;Sites relatifs à la création de produits dangereux (explosif, poison, etc.)&quot;;
  $l_explain_dating=&quot;Sites de rencontres en ligne&quot;;
  $l_explain_drogue=&quot;Sites relatifs aux produits stupéfiants&quot;;
  $l_explain_filehosting=&quot;Entrepôts de fichiers  (vidéo, images, son, logiciels, etc.)&quot;;
  $l_explain_financial=&quot;Sites d'informations financières, bourses, etc.&quot;;
  $l_explain_forums=&quot;Sites d'hébergement de forums de discussion&quot;;
  $l_explain_gambling=&quot;Sites de jeux d'argent en ligne (casino, grattage virtuel, etc.)&quot;;
  $l_explain_games=&quot;Sites de jeux en ligne&quot;;
  $l_explain_hacking=&quot;Sites relatifs au piratage informatique&quot;;
  $l_explain_jobsearch=&quot;Sites de recherche d'emplois&quot;;
  $l_explain_liste_bu=&quot;Liste de sites éducatifs pour bibliothèque&quot;;
  $l_explain_malware=&quot;Site relatifs au logiciels malveillants (virus, vers, trojans, etc.)&quot;;
  $l_explain_manga=&quot;Site de Mangas&quot;;
  $l_explain_marketingware=&quot;Sites marchands douteux (X, organes, enfants, etc.)&quot;;
  $l_explain_mixed_adult=&quot;Sites pour adultes (image-choc, gore, guerre, etc.)&quot;;
  $l_explain_mobile_phone=&quot;Sites relatifs aux mobiles GSM (sonneries, logos, etc.)&quot;;
  $l_explain_ossi=&quot;Noms de domaine et URLs que vous ajoutez à la liste noire (voir ci-dessous)&quot;;
  $l_explain_phishing=&quot;Sites relatifs à l'hammeçonnage (pièges bancaires, redirection, etc.)&quot;;
  $l_explain_press=&quot;Sites de presse&quot;;
  $l_explain_publicite=&quot;Sites ou bannières publicitaires&quot;;
  $l_explain_radio=&quot;Sites de radios en ligne ou de podcast&quot;;
  $l_explain_reaffected=&quot;Sites connus ayant changé de propriétaire (et donc de contenu)&quot;;
  $l_explain_redirector=&quot;Sites de redirection, d'anonymisation ou de contournement&quot;;
  $l_explain_remote_control=&quot;Sites permettant la prise de controle a distance&quot;;
  $l_explain_sect=&quot;Sites sectaires&quot;;
  $l_explain_social_networks=&quot;Sites de réseaux sociaux&quot;;
  $l_explain_sexual_education=&quot;Sites relatifs à l'éducation sexuelle&quot;;
  $l_explain_shopping=&quot;Sites de vente et d'achat en ligne&quot;;
  $l_explain_sport=&quot;Sites de sport&quot;;
  $l_explain_strict_redirector=&quot;URL intentionnellement mal formées&quot;;
  $l_explain_strong_redirector=&quot;URL mal formées dans une requête « google »&quot;;
  $l_explain_tricheur=&quot;Sites relatifs aux tricheries (examens, concours, etc.)&quot;;
  $l_explain_webmail=&quot;Site WEB permettant de consultation son courrier électronique&quot;;
  $l_explain_warez=&quot;Sites relatifs aux logiciels piratés (crackés), aux générateurs de clés, etc.&quot;;
}
else {
  $l_title = &quot;Blacklist categories&quot;;
  $l_error_open_file=&quot;Error opening the file&quot;;
  $l_close=&quot;Close&quot;;
  $l_unknown_cat=&quot;This category isn't describe&quot;;
  $l_nb_domains=&quot;Number of filtered domain names :&quot;;
  $l_nb_urls=&quot;Number of filtered URL :&quot;;
  $l_explain_adult=&quot;Sites related to eroticism and pornography&quot;;
  $l_explain_agressif=&quot;Sites extremist, racist, anti-Semitic or hate&quot;;
  $l_explain_arjel=&quot;Online gambling sites allowed by the french authority 'ARJEL' (Autorité de Régulation des Jeux En Ligne)&quot;;
  $l_explain_astrology=&quot;Sites related to astrology&quot;;
  $l_explain_audio_video=&quot;Sites for downloading audio and video&quot;;
  $l_explain_bank=&quot;Online bank sites&quot;;
  $l_explain_blog=&quot;Sites hosting blogs&quot;;
  $l_explain_celebrity=&quot;Sites « people », stars, etc.&quot;;
  $l_explain_chat=&quot;Online chat sites&quot;;
  $l_explain_child=&quot;Sites for children&quot;;
  $l_explain_cleaning=&quot;Sites related to software update or antiviral&quot;;
  $l_explain_dangerous_material=&quot;Sites related to the creation of dangerous goods (explosives, poison, etc.)&quot;;
  $l_explain_dating=&quot;Online dating sites&quot;;
  $l_explain_drogue=&quot;Sites related to narcotic&quot;;
  $l_explain_filehosting=&quot;Warehouses of files (video, images, sound, software, etc.)&quot;;
  $l_explain_financial=&quot;Sites of financial information&quot;;
  $l_explain_forums=&quot;Sites hosting discussion forums&quot;;
  $l_explain_gambling=&quot;Online gambling sites (casino, virtual scratching, etc.)&quot;;
  $l_explain_games=&quot;Online games sites&quot;;
  $l_explain_hacking=&quot;Sites related to hacking&quot;;
  $l_explain_jobsearch=&quot;Job search sites&quot;;
  $l_explain_liste_bu=&quot;List of educational sites for library&quot;;
  $l_explain_malware=&quot;Malware sites (viruses, worms, trojans, etc.).&quot;;
  $l_explain_manga=&quot;Manga site&quot;;
  $l_explain_marketingware=&quot;doubtful commercial sites&quot;;
  $l_explain_mixed_adult=&quot;Adult sites (shock, gore, war, etc.).&quot;;
  $l_explain_mobile_phone=&quot;Sites related to GSM mobile (ringtones, logos, etc.)&quot;;
  $l_explain_ossi=&quot;Domain names and URLs you add to the blacklist (see below)&quot;;
  $l_explain_phishing=&quot;Phishing sites (traps banking, redirect, etc..)&quot;;
  $l_explain_press=&quot;News sites&quot;;
  $l_explain_publicite=&quot;Advertising sites&quot;;
  $l_explain_radio=&quot;Online radio podcast sites&quot;;
  $l_explain_reaffected=&quot;Sites that have changed ownership (and therefore content)&quot;;
  $l_explain_redirector=&quot;redirects, anonymization or bypass sites&quot;;
  $l_explain_remote_control=&quot;Sites for making remote control&quot;;
  $l_explain_sect=&quot;Sectarian sites&quot;;
  $l_explain_social_networks=&quot;Social networks sites&quot;;
  $l_explain_sexual_education=&quot;Sites related to sex education&quot;;
  $l_explain_shopping=&quot;Shopping sites and online shopping&quot;;
  $l_explain_sport=&quot;Sport sites&quot;;
  $l_explain_strict_redirector=&quot;Intentionally malformed URL&quot;;
  $l_explain_strong_redirector=&quot;Malformed URL in a 'google' query&quot;;
  $l_explain_tricheur=&quot;Sites related to cheating (tests, examinations, etc.)&quot;;
  $l_explain_webmail=&quot;Web sites for e-mail consultation&quot;;
  $l_explain_warez=&quot;Sites related to cracked softwares&quot;;
}
if (isset($_GET['cat'])){$categorie=$_GET['cat'];} 
$bl_categorie_domain_file=$bl_dir.$categorie.&quot;.conf&quot;;
if (file_exists($bl_categorie_domain_file))
	$nb_domains=exec (&quot;wc -w $bl_categorie_domain_file|cut -d' ' -f1&quot;);
else
	$nb_domains=$l_error_openfilei.&quot; &quot;.$bl_categorie_domain_file;
if (file_exists($bl_categorie_url_file))
	$nb_urls=exec (&quot;wc -w $bl_categorie_url_file|cut -d' ' -f1&quot;);
else
	$nb_urls=$l_error_openfile.&quot; &quot;.$bl_categorie_url_file;
echo &quot;&lt;TITLE&gt;$l_title&lt;/TITLE&gt;&quot;;
?&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;/CTadmin/css/style.css&quot; type=&quot;text/css&quot;&gt;
&lt;/HEAD&gt;
&lt;body&gt;
&lt;TABLE width=&quot;100%&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
	&lt;tr&gt;&lt;th&gt;&lt;?php echo $categorie ;?&gt;&lt;/th&gt;&lt;/tr&gt;
	&lt;tr bgcolor=&quot;#FFCC66&quot;&gt;&lt;td&gt;&lt;img src=&quot;/images/pix.gif&quot; width=&quot;1&quot; height=&quot;2&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/TABLE&gt;
&lt;TABLE width=&quot;100%&quot; border=1 cellspacing=0 cellpadding=1&gt;
&lt;tr&gt;&lt;td valign=&quot;middle&quot; align=&quot;left&quot;&gt;
&lt;?php
$compat_categorie=strtr($categorie,&quot;-&quot;,&quot;_&quot;);
if (!empty(${'l_explain_'.$compat_categorie}))
	echo &quot;&lt;center&gt;&lt;b&gt;${'l_explain_'.$compat_categorie}&lt;/b&gt;&lt;/center&gt;&quot;;
else echo &quot;$l_unknown_cat&quot;;
echo &quot;&lt;br&gt;$l_nb_domains &lt;b&gt;$nb_domains&lt;/b&gt;&lt;br&gt;&quot;;
?&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/TABLE&gt;
&lt;br&gt;
&lt;center&gt;&lt;a href=&quot;javascript:window.close();&quot;&gt;&lt;b&gt;&lt;?php echo &quot;$l_close&quot;; ?&gt;&lt;/b&gt;&lt;/a&gt;&lt;/center&gt;
&lt;/BODY&gt;
&lt;/HTML&gt;
&lt;/code&gt;
[[Catégorie:Scripts]]</text>
      <sha1>alct2orxsvsntl2c171y83cznazscpe</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5491</id>
      <parentid>5244</parentid>
      <timestamp>2013-12-09T20:17:03Z</timestamp>
      <contributor>
        <username>Hulk</username>
        <id>190</id>
      </contributor>
      <text xml:space="preserve" bytes="75882">lien sur le [http://www.debian-fr.org/controle-parental-pour-le-pc-debian-de-vos-enfants-t42009.html forum]
'''CTparental.sh'''
&lt;code bash&gt;
#!/bin/bash 
# CTparental.sh
#
# par Guillaume MARSAT
# Corrections orthographiques par Pierre-Edouard TESSIER
# une parti du code est tiré du script alcasar-bl.sh créé par Franck BOUIJOUX et Richard REY
# présent dans le code du projet alcasar en version 2.6.1 ; web page http://www.alcasar.net/
 
# This script is distributed under the Gnu General Public License (GPL)
arg1=${1}
if [ $arg1 != &quot;-listusers&quot; ] ; then
if [ ! $UID -le 499 ]; then # considaire comme root tous les utilisateurs avec un uid inferieur ou egale a 499,ce qui permet a apt-get,urpmi,yum... de lance le scripte sans erreur.
   echo &quot;Il vous faut des droits root pour lancer ce script&quot;
   exit 1
fi
fi


noinstalldep=&quot;0&quot;
nomanuel=&quot;0&quot;
ARGS=($*)
for (( narg=1; narg&lt;=$#; narg++ )) ; do
        case &quot;${ARGS[$narg]}&quot; in
	  -nodep )
	     noinstalldep=&quot;1&quot;
	  ;;
	  -nomanuel )
	     nomanuel=&quot;1&quot;
	  ;;
	  -dirhtml )
	     narg=$(( $narg +1 ))
	     DIRhtmlPersonaliser=${ARGS[$narg]}
	     if [ ! -d $DIRhtmlPersonaliser ];then
		echo &quot;Chemin de répertoire non valide!&quot;
		exit 0
	     fi
	  ;;
	esac
done
pause () {   # fonction pause pour debugage
      MESSAGE=&quot;$*&quot;
      choi=&quot;&quot;
      MESSAGE=${MESSAGE:=&quot;pour continuer appuyez sur une touche :&quot;}
      echo  &quot;$MESSAGE&quot;
      while (true); do
         read choi
         case $choi in
         * )
         break
         ;;
      esac
      done
}
SED=&quot;/bin/sed -i&quot;
DIR_CONF=&quot;/usr/local/etc/CTparental&quot;
FILE_CONF=&quot;$DIR_CONF/CTparental.conf&quot;
FILE_HCONF=&quot;$DIR_CONF/CThours.conf&quot;
if [ ! -f $FILE_CONF ] ; then
mkdir -p $DIR_CONF
mkdir -p /usr/local/share/CTparental/
cat &lt;&lt; EOF &gt; $FILE_CONF
LASTUPDATE=0
DNSMASQ=BLACK
AUTOUPDATE=OFF
HOURSCONNECT=OFF
EOF
fi


## imports du plugin de la distributions si il existe
if [ -f $DIR_CONF/dist.conf ];then
	source  $DIR_CONF/dist.conf 
fi

tempDIR=&quot;/tmp/alcasar&quot;
RougeD=&quot;\033[1;31m&quot;
BleuD=&quot;\033[1;36m&quot;
VertD=&quot;\033[1;32m&quot;
Fcolor=&quot;\033[0m&quot;
GESTIONNAIREDESESSIONS=&quot; login gdm lightdm slim kdm xdm lxdm gdm3 &quot;
FILEPAMTIMECONF=&quot;/etc/security/time.conf&quot;
DIRPAM=&quot;/etc/pam.d/&quot;
DAYS=${DAYS:=&quot;lundi mardi mercredi jeudi vendredi samedi dimanche &quot;}
DAYS=( $DAYS )
DAYSPAM=( Mo Tu We Th Fr Sa Su )
DAYSCRON=( mon tue wed thu fri sat sun )

#### DEPENDANCES par DEFAULT #####
DEPENDANCES=${DEPENDANCES:=&quot; dnsmasq lighttpd php5-cgi libnotify-bin notification-daemon resolvconf &quot;}
#### RESOLVCONF EST PAS PRESENT DANS LA DISTRIBUTION ####
NORESOLVCONF=${NORESOLVCONF:=0}
#### COMMANDES de services par DEFAULT #####
CMDSERVICE=${CMDSERVICE:=&quot;service &quot;}
CRONstart=${CRONstart:=&quot;$CMDSERVICE crond start &quot;}
CRONstop=${CRONstop:=&quot;$CMDSERVICE crond stop &quot;}
CRONrestart=${CRONrestart:=&quot;$CMDSERVICE crond restart &quot;}
LIGHTTPDstart=${LIGHTTPDstart:=&quot;$CMDSERVICE lighttpd start &quot;}
LIGHTTPDstop=${LIGHTTPDstop:=&quot;$CMDSERVICE lighttpd stop &quot;}
LIGHTTPDrestart=${LIGHTTPDrestart:=&quot;$CMDSERVICE lighttpd restart &quot;}
DNSMASQstart=${DNSMASQstart:=&quot;$CMDSERVICE dnsmasq start &quot;}
DNSMASQstop=${DNSMASQstop:=&quot;$CMDSERVICE dnsmasq stop &quot;}
DNSMASQrestart=${DNSMASQrestart:=&quot;$CMDSERVICE dnsmasq restart &quot;}
NWMANAGERstop=${NWMANAGERstop:=&quot;$CMDSERVICE network-manager stop&quot;}
NWMANAGERstart=${NWMANAGERstart:=&quot;$CMDSERVICE network-manager start&quot;}
NWMANAGERrestart=${NWMANAGERrestart:=&quot;$CMDSERVICE network-manager restart&quot;}

#### LOCALISATION du fichier PID lighttpd par default ####
LIGHTTPpidfile=${LIGHTTPpidfile:=&quot;/var/run/lighttpd.pid&quot;}

#### COMMANDES D'ACTIVATION DES SERVICES AU DEMARAGE DU PC ####
ENCRON=${ENCRON:=&quot;&quot;}
ENLIGHTTPD=${ENLIGHTTPD:=&quot;&quot;}
ENDNSMASQ=${ENDNSMASQ:=&quot;&quot;}
ENNWMANAGER=${ENNWMANAGER:=&quot;&quot;}
#### UID MINIMUM pour les UTILISATEUR
UIDMINUSER=${UIDMINUSER:=1000}

DNSMASQCONF=${DNSMASQCONF:=&quot;/etc/dnsmasq.conf&quot;}
MAINCONFHTTPD=${MAINCONFHTTPD:=&quot;/etc/lighttpd/lighttpd.conf&quot;}
DIRCONFENABLEDHTTPD=${DIRCONFENABLEDHTTPD:=&quot;/etc/lighttpd/conf-enabled&quot;}
CTPARENTALCONFHTTPD=${CTPARENTALCONFHTTPD:=&quot;$DIRCONFENABLEDHTTPD/10-CTparental.conf&quot;}
RESOLVCONFMAIN=${RESOLVCONFMAIN:=&quot;/etc/resolvconf&quot;}
RESOLVDNSMASQ=${RESOLVDNSMASQ:=&quot;$RESOLVCONFMAIN/run/interface/lo.dnsmasq&quot;}
RESOLVCONFORDER=${RESOLVCONFORDER:=&quot;$RESOLVCONFMAIN/interface-order&quot;}
DIRHTML=${DIRHTML:=&quot;/var/www/CTparental&quot;}
DIRadminHTML=${DIRadminHTML:=&quot;/var/www/CTadmin&quot;}
PASSWORDFILEHTTPD=${PASSWORDFILEHTTPD:=&quot;/etc/lighttpd/lighttpd-htdigest.user&quot;}
REALMADMINHTTPD=${REALMADMINHTTPD:=&quot;interface admin&quot;}
CMDINSTALL=&quot;&quot;

if [ $(yum help | wc -l ) -ge 50 ] ; then
   ## &quot;Distribution basée sur yum exemple redhat, fedora...&quot;
   CMDINSTALL=${CMDINSTALL:=&quot;yum install &quot;}
   CMDREMOVE=${CMDREMOVE:=&quot;yum remove &quot;}
fi
urpmi --help 2&amp;&gt; /dev/null
if [ $? -eq 1 ] ; then
   ## &quot;Distribution basée sur urpmi exemple mandriva...&quot;
   CMDINSTALL=${CMDINSTALL:=&quot;urpmi -a --auto &quot;}
   CMDREMOVE=${CMDREMOVE:=&quot;urpme --auto &quot;}
fi
apt-get -h 2&amp;&gt; /dev/null
if [ $? -eq 0 ] ; then
   ## &quot;Distribution basée sur apt-get exemple debian, ubuntu ...&quot;
   CMDINSTALL=${CMDINSTALL:=&quot;apt-get -y --force-yes install &quot;}
   CMDREMOVE=${CMDREMOVE:=&quot;apt-get -y --force-yes remove --purge &quot;}
fi

if [ $( echo $CMDINSTALL | wc -m ) -eq 1 ] ; then
   echo &quot;Aucun gestionner de paquet connu , n'a été détecté.&quot;
   set -e
   exit 1
fi




interface_WAN=$(ip route | awk '/^default via/{print $5}') # suppose que la passerelle est la route par default

if [ -f $DIR_CONF/resolv.conf.sav ];then
   DNS1=$(cat $DIR_CONF/resolv.conf.sav | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f1)
   DNS2=$(cat $DIR_CONF/resolv.conf.sav | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f2)
else
   DNS1=$(cat /etc/resolv.conf | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f1)
   DNS2=$(cat /etc/resolv.conf | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f2)
fi

PRIVATE_IP=&quot;127.0.0.10&quot;
FILE_tmp=&quot;$tempDIR/filetmp.txt&quot;
BL_SERVER=&quot;dsi.ut-capitole.fr&quot;
CATEGORIES_ENABLED=&quot;$DIR_CONF/categories-enabled&quot;
BL_CATEGORIES_AVAILABLE=&quot;$DIR_CONF/bl-categories-available&quot;
WL_CATEGORIES_AVAILABLE=&quot;$DIR_CONF/wl-categories-available&quot;
DIR_DNS_FILTER_AVAILABLE=&quot;$DIR_CONF/dnsfilter-available&quot;
DIR_DNS_BLACKLIST_ENABLED=&quot;$DIR_CONF/blacklist-enabled&quot;
DIR_DNS_WHITELIST_ENABLED=&quot;$DIR_CONF/whitelist-enabled&quot;
DNS_FILTER_OSSI=&quot;$DIR_CONF/blacklist-local&quot;
DREAB=&quot;$DIR_CONF/domaine-rehabiliter&quot; 
THISDAYS=$(expr $(date +%Y) \* 365 + $(date +%j))
MAXDAYSFORUPDATE=&quot;7&quot; # update tous les 7 jours
CHEMINCTPARENTLE=$(readlink -f $0)

initblenabled () {
   cat &lt;&lt; EOF &gt; $CATEGORIES_ENABLED
adult
agressif
dangerous_material
dating
drogue
gambling
hacking
malware
marketingware
mixed_adult
phishing
redirector
sect
strict_redirector
strong_redirector
tricheur
warez
ossi   
EOF
         

}

addadminhttpd() {
if [ ! -f $PASSWORDFILEHTTPD ] ; then
    echo -n &gt; $PASSWORDFILEHTTPD   
fi
chown root:$USERHTTPD $PASSWORDFILEHTTPD
chmod 640 $PASSWORDFILEHTTPD
USERADMINHTTPD=${1}
pass=${2}
hash=`echo -n &quot;$USERADMINHTTPD:$REALMADMINHTTPD:$pass&quot; | md5sum | cut -b -32`
ligne=$(echo &quot;$USERADMINHTTPD:$REALMADMINHTTPD:$hash&quot;)
$SED &quot;/^$USERADMINHTTPD:$REALMADMINHTTPD.*/d&quot; $PASSWORDFILEHTTPD
echo $ligne &gt;&gt; $PASSWORDFILEHTTPD
}

download() {
   rm -rf $tempDIR
   mkdir $tempDIR
   wget -P $tempDIR http://$BL_SERVER/blacklists/download/blacklists.tar.gz 2&gt;&amp;1 | cat
   if [ ! $? -eq 0 ]; then
      echo &quot;erreur lors du téléchargement, processus interrompu&quot;
      rm -rf $tempDIR
      set -e
      exit 1
   fi
   tar -xzf $tempDIR/blacklists.tar.gz -C $tempDIR
   if [ ! $? -eq 0 ]; then
      echo &quot;erreur d'extraction de l'archive, processus interrompu&quot;
      set -e
      exit 1
   fi
   rm -rf $DIR_DNS_FILTER_AVAILABLE/
   mkdir $DIR_DNS_FILTER_AVAILABLE
}
autoupdate() {
        LASTUPDATEDAY=`grep LASTUPDATE= $FILE_CONF | cut -d&quot;=&quot; -f2`
        LASTUPDATEDAY=${LASTUPDATEDAY:=0}
        DIFFDAY=$(expr $THISDAYS - $LASTUPDATEDAY)
	if [ $DIFFDAY -ge $MAXDAYSFORUPDATE ] ; then
		download
		adapt
		catChoice
		dnsmasqon
                $SED &quot;s?^LASTUPDATE.*?LASTUPDATE=$THISDAYS=`date +%d-%m-%Y\ %T`?g&quot; $FILE_CONF
		exit 0
	fi
}
autoupdateon() {
$SED &quot;s?^AUTOUPDATE.*?AUTOUPDATE=ON?g&quot; $FILE_CONF
echo &quot;*/10 * * * * root $CHEMINCTPARENTLE -aup&quot; &gt; /etc/cron.d/CTparental-autoupdate
$CRONrestart
}

autoupdateoff() {
$SED &quot;s?^AUTOUPDATE.*?AUTOUPDATE=OFF?g&quot; $FILE_CONF
rm -f /etc/cron.d/CTparental-autoupdate
$CRONrestart
}
adapt() {
   dnsmasqoff
   if [ ! -f $DNS_FILTER_OSSI ] ; then
            echo &gt; $DNS_FILTER_OSSI
   fi

   if [ -d $tempDIR  ] ; then
	  CATEGORIES_AVAILABLE=$tempDIR/categories_available
	  ls -FR $tempDIR/blacklists | grep '/$' | sed -e &quot;s/\///g&quot; &gt; $CATEGORIES_AVAILABLE
          echo -n &gt; $BL_CATEGORIES_AVAILABLE
          echo -n &gt; $WL_CATEGORIES_AVAILABLE
          if [ ! -f $DIR_DNS_FILTER_AVAILABLE/ossi.conf ] ; then
		echo &gt; $DIR_DNS_FILTER_AVAILABLE/ossi.conf
	  fi
	  for categorie in `cat $CATEGORIES_AVAILABLE` # creation des deux fichiers de categories (BL / WL)
	  do
		if [ -e $tempDIR/blacklists/$categorie/usage ]
		then
			is_whitelist=`grep white $tempDIR/blacklists/$categorie/usage|wc -l`
		else
			is_whitelist=0 # ou si le fichier 'usage' n'existe pas, on considère que la catégorie est une BL
		fi
		if [ $is_whitelist -eq &quot;0&quot; ]
		then
			echo &quot;$categorie&quot; &gt;&gt; $BL_CATEGORIES_AVAILABLE
		else
			echo &quot;$categorie&quot; &gt;&gt; $WL_CATEGORIES_AVAILABLE
		fi
	   done
         echo -n &quot;Toulouse Black and White List migration process. Please wait : &quot;
         for DOMAINE in `cat  $CATEGORIES_AVAILABLE`  # pour chaque catégorie
         do
            echo -n &quot;.&quot;
            # suppression des @IP, de caractères acccentués et des lignes commentées ou vide
            egrep  -v &quot;([0-9]{1,3}\.){3}[0-9]{1,3}&quot; $tempDIR/blacklists/$DOMAINE/domains &gt; $FILE_tmp
            $SED &quot;/[äâëêïîöôüû]/d&quot; $FILE_tmp
            $SED &quot;/^#.*/d&quot; $FILE_tmp
            $SED &quot;/^$/d&quot; $FILE_tmp
            $SED &quot;s/\.\{2,10\}/\./g&quot; $FILE_tmp # supprime les suite de &quot;.&quot; exemple: address=/fucking-big-tits..com/127.0.0.10 devient address=/fucking-big-tits.com/127.0.0.10
	    is_blacklist=`grep $DOMAINE $BL_CATEGORIES_AVAILABLE |wc -l`
	    if [ $is_blacklist -ge &quot;1&quot; ] ; then
            	$SED &quot;s?.*?address=/&amp;/$PRIVATE_IP?g&quot; $FILE_tmp  # Mise en forme dnsmasq des listes noires
		mv $FILE_tmp $DIR_DNS_FILTER_AVAILABLE/$DOMAINE.conf  
            else
		$SED &quot;s?.*?server=/&amp;/#?g&quot; $FILE_tmp  # Mise en forme dnsmasq des listes blanches
		mv $FILE_tmp $DIR_DNS_FILTER_AVAILABLE/$DOMAINE.conf
            fi
         done
   else
         mkdir   $tempDIR
         echo -n &quot;.&quot;
 	 # suppression des @IP, de caractères acccentués et des lignes commentées ou vide
         egrep  -v &quot;([0-9]{1,3}\.){3}[0-9]{1,3}&quot; $DNS_FILTER_OSSI  &gt; $FILE_tmp
         $SED &quot;/[äâëêïîöôüû]/d&quot; $FILE_tmp 
         $SED &quot;/^#.*/d&quot; $FILE_tmp 
         $SED &quot;/^$/d&quot; $FILE_tmp 
         $SED &quot;s/\.\{2,10\}/\./g&quot; $FILE_tmp # supprime les suite de &quot;.&quot; exemple: address=/fucking-big-tits..com/127.0.0.10 devient address=/fucking-big-tits.com/127.0.0.10
         $SED &quot;s?.*?address=/&amp;/$PRIVATE_IP?g&quot; $FILE_tmp  # Mise en forme dnsmasq
         mv $FILE_tmp $DIR_DNS_FILTER_AVAILABLE/ossi.conf
   fi     
   echo
   rm -rf $tempDIR
}
catChoice() {
#   echo &quot;catChoice&quot;
   rm -rf $DIR_DNS_BLACKLIST_ENABLED/
   mkdir $DIR_DNS_BLACKLIST_ENABLED
   rm -rf  $DIR_DNS_WHITELIST_ENABLED/
   mkdir  $DIR_DNS_WHITELIST_ENABLED
     
      for CATEGORIE in `cat $CATEGORIES_ENABLED` # on affecte les catégories dnsmasq
      do
	 is_blacklist=`grep $CATEGORIE $BL_CATEGORIES_AVAILABLE |wc -l`
	 if [ $is_blacklist -ge &quot;1&quot; ] ; then
		cp $DIR_DNS_FILTER_AVAILABLE/$CATEGORIE.conf $DIR_DNS_BLACKLIST_ENABLED/
         else
		cp $DIR_DNS_FILTER_AVAILABLE/$CATEGORIE.conf $DIR_DNS_WHITELIST_ENABLED/
     	 fi     
      done
      cp $DIR_DNS_FILTER_AVAILABLE/ossi.conf $DIR_DNS_BLACKLIST_ENABLED/
#      echo &quot;fincatChoice&quot;
      reabdomaine
}

reabdomaine () {
if [ ! -f $DREAB ] ; then
cat &lt;&lt; EOF &gt; $DREAB
   www.google.com
   www.google.fr
EOF
fi
if [ ! -f $DIR_DNS_BLACKLIST_ENABLED/ossi.conf ] ; then
	echo &gt; $DIR_DNS_BLACKLIST_ENABLED/ossi.conf
fi
echo
echo -n &quot;Application de la liste blanche (domaine réhabilité):&quot;
for CATEGORIE in `cat  $CATEGORIES_ENABLED  `  # pour chaque catégorie
do 
	is_blacklist=`grep $CATEGORIE $BL_CATEGORIES_AVAILABLE |wc -l`
	if [ $is_blacklist -ge &quot;1&quot; ] ; then
		echo -n &quot;.&quot;
		for DOMAINE in `cat  $DREAB`
		do
		    $SED &quot;/$DOMAINE/d&quot; $DIR_DNS_BLACKLIST_ENABLED/$CATEGORIE.conf
		done
        fi
done
echo -n &quot;.&quot;
cat $DREAB | sed -e &quot;s? ??g&quot; | sed -e &quot;s?.*?server=/&amp;/#?g&quot; &gt;  $DIR_DNS_WHITELIST_ENABLED/whiteliste.ossi.conf
echo
}

dnsmasqon () {
   categorie1=`sed -n &quot;1 p&quot; $CATEGORIES_ENABLED` # on considère que si la 1ère categorie activée est un blacklist on fonctionne par blacklist.
   is_blacklist=`grep $categorie1 $BL_CATEGORIES_AVAILABLE |wc -l`
   if [ $is_blacklist -ge &quot;1&quot; ] ; then
   $SED &quot;s?^DNSMASQ.*?DNSMASQ=BLACK?g&quot; $FILE_CONF
   cat &lt;&lt; EOF &gt; $DNSMASQCONF
         # Configuration file for &quot;dnsmasq with blackhole&quot;
   # Inclusion de la blacklist &lt;domains&gt; de Toulouse dans la configuration
   conf-dir=$DIR_DNS_BLACKLIST_ENABLED
   # conf-file=$DIR_DEST_ETC/alcasar-dns-name   # zone de definition de noms DNS locaux
   no-dhcp-interface=$interface_WAN
   bind-interfaces
   cache-size=1024
   domain-needed
   expand-hosts
   bogus-priv
   server=$DNS1
   server=$DNS2
   
EOF
$DNSMASQrestart
else
  dnsmasqwhitelistonly
fi
}
dnsmasqoff () {
   $SED &quot;s?^DNSMASQ.*?DNSMASQ=OFF?g&quot; $FILE_CONF
   cat &lt;&lt; EOF &gt; $DNSMASQCONF
         # Configuration file for &quot;dnsmasq with blackhole&quot;
   # Inclusion de la blacklist &lt;domains&gt; de Toulouse dans la configuration
   # conf-dir=$DIR_DNS_BLACKLIST_ENABLED
   # conf-file=$DIR_DEST_ETC/alcasar-dns-name   # zone de definition de noms DNS locaux
   no-dhcp-interface=$interface_WAN
   bind-interfaces
   cache-size=0
   domain-needed
   expand-hosts
   bogus-priv
   server=$DNS1
   server=$DNS2
   
EOF

$DNSMASQrestart
}
dnsmasqwhitelistonly  () {
   $SED &quot;s?^DNSMASQ.*?DNSMASQ=WHITE?g&quot; $FILE_CONF
   cat &lt;&lt; EOF &gt; $DNSMASQCONF
         # Configuration file for &quot;dnsmasq with blackhole&quot;
   # Inclusion de la blacklist &lt;domains&gt; de Toulouse dans la configuration
   conf-dir=$DIR_DNS_WHITELIST_ENABLED
   # conf-file=$DIR_DEST_ETC/alcasar-dns-name   # zone de definition de noms DNS locaux
   no-dhcp-interface=$interface_WAN
   bind-interfaces
   cache-size=0
   domain-needed
   expand-hosts
   bogus-priv
   server=$DNS1
   server=$DNS2
   address=/#/$PRIVATE_IP #redirige vers $PRIVATE_IP pour tout ce qui n'a pas été resolu dans les listes blanches
EOF

$DNSMASQrestart
}


FoncHTTPDCONF () {
$LIGHTTPDstop
rm -rf $DIRHTML/*
mkdir -v $DIRHTML
if [ ! -z $DIRhtmlPersonaliser ];then
   cp -r $DIRhtmlPersonaliser/* $DIRHTML
else
s=&quot;span&quot;
st=&quot;style&quot;
c=&quot;$c&quot;
cab=&quot;;\&quot;&gt;&quot;

cat &lt;&lt; EOF &gt; $DIRHTML/index.html
 &lt;HTML&gt;
&lt;HEAD&gt;
   &lt;META HTTP-EQUIV=&quot;CONTENT-TYPE&quot; CONTENT=&quot;text/html; charset=utf-8&quot;&gt;
   &lt;TITLE&gt;danger&lt;/TITLE&gt;
&lt;/HEAD&gt;
&lt;BODY LANG=&quot;fr-FR&quot; DIR=&quot;LTR&quot;&gt;
&lt;CENTER&gt;
&lt;img alt=&quot;Site dangereux pour des mineurs&quot;
  HEIGHT=&quot;600&quot;   
  src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKIAAACgCAYAAACPOrcQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz
AAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAuGSURB
VHic7d17jFTlGcfx7zMol7KriRpF3Sii3FyooE1EWuNaFrFeWjXWqEBCmyYtrSa2iX9g+wcx9RZN
kya29i+1ETWKMSZI1AiClyI2KiJyFa8BBC9EuyAXhad/vDO7s8PszpyZc857zrzPJ9nsZvac931g
fnnf2Zlz3ldUFVNBZCQwDhhf/H480A60Fb+X/9xWPGsP0FP2vfznr4AtwGZgC6p70/qn5IUEHUSR
EcAFwGRc6Epfpybc83ZcKEtf64DXUd2XcL+ZFVYQRYYB04CLi1/TgKFea+pzEFgNrCh+rUb1gN+S
0tP6QRQ5B7gSF7zpwHC/BdVtP7AKF8olqK71XE+iWjOIIh3AjcBcYJLnauLyHvAI8Biq23wXE7fW
CaJIO3AtMAfoAgpe60nOYWAlsAh4CtUev+XEI/9BdFPvrcA1wAjP1aRtH/A0cG/ep+78BlFkOnAb
cLnvUjJiKXAnqqt8F9KI/AVRZBawALjIdykZ9TJwF6ov+C4kivwEUeQq4C/Aeb5LyYm3gL+i+ozv
QuqR/SCKTADuB2b4LiWnlgM3obrJdyGDye5fliIjEbkbeBcLYTNmAO8icnfxo8tMyuaIKPJL4G9A
h+9SWsw24E+oLvZdSKVsBVHkLOABoNt3KS1uGTAf1a2+CynJztQsMhtYg4UwDd3AGkTm+C6kxH8Q
RX6AyIO4Twraah1uYtMGPILIw1l47eh3ahaZDDwBTPRXhMFdinY9qu/4KsDfiCjyW+C/WAizYDyw
GpGbfBWQ/ogoMhR4EJidbsemTouBuWlfC5luEEWOwX1Ib+8LZtsrwM9R/SatDtMLosgo4DlgSjod
miatAy5FdUcanaXzGlFkHPA6FsI8mQysKn7EmrjkgyhyPvAfYHTifZm4nQ68hsi0pDtKNogi3cBL
wAmJ9mOSdDywvPhcJia514huJFwOeH+z1MRiLzAD1TeSaDyZIIqcDbwKHBd/48aj3cCFqG6Iu+H4
gyhyOu41YdI3qRs/tgM/RvWTOBuN9zWiyInAi1gIW9mpwIvF5zo28QXRvVn9PDA2tjZNVo0Fni8+
57GIJ4giAjwJTI2lPZMHU4Eni8990+IaEf8MzIqpLZMfs3DPfdOa/2NFpAt3xe+QGOox+XMI6EZ1
ZTONNBdEkZOAd4BRzRRhcm8nMAXVXY020PjULFIAHsdCaFwGHi9moiHNvEZciFvqzRhwWVjY6MmN
Tc0iF+JWpPJ/z4vJksNAF6qvRj0xehBFjsbdbdcZtTMThPXAVFS/i3JSIyPaH7EQmoF14jISSbQR
UeQ0YAN2RY0Z3F7gbFQ/rfeEqCPi37EQmtpG4rJSt/pHRJHLgWej12QCdgWqS+s5sL4guv1I1gNn
NFeXCcxHQGc9+8fUOzXPx0JoojsDl52aao+IIsOBD4GTmy7LhOgzYAyq+wc7qJ4R8TdYCE3jTsZl
aFCDj4hueZAPsAUzTXO2AWeienCgA2qNiPOwEJrmdeCyNKCBR0SRo4D3sRvjTTw+Bsai+n21Xw42
Is7BQmjiMxqXqaoGC+IfYi/FhG7ATFWfmkU6cbthGhO3Saiur3xwoBFxXrK1mIDNq/bgkSOiyBDc
n9t2C4BJwk6gA9VD5Q9WGxEvxUJokjMKl7F+qgVxXuKlmNDNq3yg/9QschywAxiWWkkmRAeAU1Dd
XXqgckT8BRZCk7xhuKz1qgyirfZv0tIva5VT83bglJQLMmHagWrv8oV9QXSrx2+M3Nwtt8Dw4XEV
Z/Jm1y546KFGz55Y2tC8PIjzgX9Gburrr+HYYxstxOTd2rUwpeFdS36P6gPQ/zXiT5suyphoejPn
gugWW+zyVIwJV1dpoc/SiPhDbC8Uk74TcNnrDeK5/moxgTsX+oKYyn5rxlQxASyIxr9+QbRd5I0v
EwEKxVtGx3guxoRrDCJDC8BZ2I4Axp8hwFkFbFo2/k0sAON9V2GCN74AxLq5nzENOLEAtPuuwgSv
3YJosqC9ALT5rsIEr81GRJMFNjWbTLCp2WSCTc0mE9ptU0eTCQWgx3cRJng9BWCP7ypM8PbYiGiy
oMeCaLLApmaTCTY1m0ywqdlkQk8B+Nx3FSZ4nxeAzb6rMMHbXKCRpeiMidfGArAVOFTrSGMScgjY
WihuXfqh72pMsD5E9WDpogebno0vG6FvyZFNHgsxYdsEFkTjX78gvu2xEBO2t6EviO8CX/qrxQTq
S1z2ikF0Wwus9FePCdTKYvb67SrwkqdiTLh6M1cexBUeCjFh681cXxDdDkA7fFRjgrSjtOsUwFEV
v1wBzI7U3IIFMMw2NA3WF180ema/GbhyU8hfAQ82XJQx9fs1qr2b+NnG4caHGhuHu18sSbkoE54l
5SGEIzcOB3g4nVpMwB6ufKD/1AwgMgTYBoxKpSQTmp1AB6r9roE9ckR0ByxKqSgTnkWVIYRqIyKA
SCfwXgpFmfBMQnV95YPVVwNzB76ZdEUmOG9WCyEMFETnHwkVY8I1YKaqT80AIkcB7wOjEynJhOZj
YCyq31f75cAjojvhrmRqMgG6a6AQwmAjIlDcufQDoCP+ukxAtgFnFu8YrWrwpYvdiffEXJQJzz2D
hRBqjYgAIsNx9z2fHF9dJiCfAWNQ3T/YQbUXc3cN3BdTUSY899UKIdQzIgKIjADWA2c0X5cJyEdA
J6r7ah1Y3/YWrqGbmyzKhOfmekII9QYRQHUp8EyjFZngPFPMTF3qm5p7j5bTgA3AyOh1mYDsBc5G
9dN6T4i285Rr+PaIRZnw3B4lhBB1RAQQORpYA3RGO9EEYj0wFdXvopwUfS8+18F84HDkc02rOwzM
jxpCaCSIAKqvAnc0dK5pZXcUsxFZ9Km590wpAMuAixtrwLSYFUA3qg3NlI0HEUDkJOAd7P6W0O0E
pqC6q9EGmtuv2XV8A7YYfMgOATc0E0JoNogAqiuBhU23Y/JqYTEDTWluau5tRQR4DpjVfGMmR14A
fkYMIYoniAAix+AW+5waT4Mm49YAXaj+L47G4gsigMiJwGvA2PgaNRn0PvATVGPbx7H514jlXGEz
ge2xtmuyZDswM84QQtxBBFD9BLgE2F3rUJM7u4FLis9xrOIPIoDqBuAy3FUYpjXsBS4rPrexSyaI
AKpvAFcB3ybWh0nLt8BVxec0EfH+sVK1BzkfeBY4IdmOTEK+Aq5AdXWSnSQfRACRcbj3nEYn35mJ
0SfApeWLricluam5nOoW4ALc59ImH9YB09MIIaQVRADVncBFwPLU+jSNegW4ENXUtjtJL4hA8V34
y4BHU+3XRLEY9xbNN2l2mm4QwS1jojoH+B1Q88Zrk5oDuNs/r0P1QNqdp/PHyoC9y2TgCWCivyIM
sBm4HlVvr+HTHxHLqa4DfgQ8VOtQk5h/A+f5DCH4HhHLicwG/gW0+S4lEHtwNzplYuF+vyNiOdVH
cZeQLfNdSgCW4W75zEQIIUtBBFDdiupM4Drc4o4mXtuA61CdiepW38WUy1YQS1QXAxNwi4RGvkfW
HOE73P/lhOL/beZk5zXiQEQmAPcDM3yXklPLgZvS+oSkUdkcEcupbkK1G7gaeMt3OTnyFnA1qt1Z
DyHkYUSsJDILWID7uNAc6WXcCv4v+C4kivwFsURkOnAbcLnvUjJiKXAnqqt8F9KI/AaxROQc4Fbg
GmCE52rStg94GrgX1bW+i2lG/oNYItIOXAvMAbrIw+vfxhzG3ba7CHgK1R6/5cSjdYJYTqQDuBGY
C0zyXE1c3gMeAR5DteXeY23NIJZzU/eVuFXLpgPD/RZUt/3AKtwqW0vyPvXW0vpBLCcyDJiGC+XF
xZ+Heq2pz0FgNS54K4DVPi7H8iWsIFZy+8dcAEwGxpd9nZpwz9txl16VvtYBr9e7FUQrCjuIAxEZ
CYzDhXIccDzQjrsyqL3i59LVQnuAnrLv5T9/BWzBhW4Lqna/d4X/A/bydTBs1YRqAAAAAElFTkSu
QmCC&quot; /&gt;
&lt;/CENTER&gt;
&lt;/BODY&gt;
&lt;/HTML&gt;
EOF

fi
## GENERATION

ln -s  $DIRHTML/index.html $DIRHTML/err404.html
USERHTTPD=$(cat /etc/passwd | grep /var/www | cut -d&quot;:&quot; -f1)
GROUPHTTPD=$(cat /etc/group | grep $USERHTTPD | cut -d&quot;:&quot; -f1)
chmod 640 $FILE_CONF
chown root:$GROUPHTTPD $FILE_CONF
cat &lt;&lt; EOF &gt; $MAINCONFHTTPD
server.modules = (
&quot;mod_access&quot;,
&quot;mod_alias&quot;,
&quot;mod_redirect&quot;,
&quot;mod_auth&quot;,	#pour interface admin
&quot;mod_fastcgi&quot;,  #pour interface admin (activation du php)
)
auth.debug                 = 0
auth.backend               = &quot;htdigest&quot; 
auth.backend.htdigest.userfile = &quot;$PASSWORDFILEHTTPD&quot; 

server.document-root = &quot;/var/www&quot;
server.upload-dirs = ( &quot;/var/cache/lighttpd/uploads&quot; )
server.errorlog = &quot;/var/log/lighttpd/error.log&quot;
server.pid-file = &quot;$LIGHTTPpidfile&quot;
server.username = &quot;$USERHTTPD&quot;
server.groupname = &quot;$GROUPHTTPD&quot;
server.port = 80
server.bind = &quot;127.0.0.1&quot;


index-file.names = ( &quot;index.php&quot;, &quot;index.html&quot; )
url.access-deny = ( &quot;~&quot;, &quot;.inc&quot; )
static-file.exclude-extensions = (&quot;.php&quot;, &quot;.pl&quot;, &quot;.fcgi&quot; )

server.tag = &quot;&quot;

include_shell &quot;/usr/share/lighttpd/create-mime.assign.pl&quot;
include_shell &quot;/usr/share/lighttpd/include-conf-enabled.pl&quot;
EOF

mkdir -p /usr/share/lighttpd/

if [ ! -f /usr/share/lighttpd/create-mime.assign.pl ];then
cat &lt;&lt; EOF &gt; /usr/share/lighttpd/create-mime.assign.pl
#!/usr/bin/perl -w
use strict;
open MIMETYPES, &quot;/etc/mime.types&quot; or exit;
print &quot;mimetype.assign = (\n&quot;;
my %extensions;
while(&lt;MIMETYPES&gt;) {
  chomp;
  s/\#.*//;
  next if /^\w*$/;
  if(/^([a-z0-9\/+-.]+)\s+((?:[a-z0-9.+-]+[ ]?)+)$/) {
    foreach(split / /, \$2) {
      # mime.types can have same extension for different
      # mime types
      next if \$extensions{\$_};
      \$extensions{\$_} = 1;
      print &quot;\&quot;.\$_\&quot; =&gt; \&quot;\$1\&quot;,\n&quot;;
    }
  }
}
print &quot;)\n&quot;;
EOF
chmod +x /usr/share/lighttpd/create-mime.assign.pl
fi


if [ ! -f /usr/share/lighttpd/include-conf-enabled.pl ];then
cat &lt;&lt; EOF &gt; /usr/share/lighttpd/include-conf-enabled.pl
#!/usr/bin/perl -wl

use strict;
use File::Glob ':glob';

my \$confdir = shift || &quot;/etc/lighttpd/&quot;;
my \$enabled = &quot;conf-enabled/*.conf&quot;;

chdir(\$confdir);
my @files = bsd_glob(\$enabled);

for my \$file (@files)
{
        print &quot;include \&quot;\$file\&quot;&quot;;
}
EOF
chmod +x /usr/share/lighttpd/include-conf-enabled.pl 

fi

mkdir -p $DIRCONFENABLEDHTTPD
mkdir -p $DIRadminHTML
cp -rf CTadmin/* $DIRadminHTML/
#if [ $noinstalldep = &quot;1&quot; ]; then
#	addadminhttpd &quot;admin&quot; &quot;admin&quot;
#else
	clear 
	echo &quot;Entrer le login pour l'interface d'administration :&quot;
	while (true); do
		 read loginhttp
		 case $loginhttp in
			 * )
			 echo &quot;login:  $loginhttp&quot; &gt; /root/passwordCTadmin
			 break
			 ;;
		 esac
	done
	clear
	echo &quot;Entrer le mot de passe de $loginhttp :&quot;
	while (true); do
		 read password
		 case $password in
			 * )
			 echo &quot;password: $password&quot; &gt;&gt; /root/passwordCTadmin
		         addadminhttpd &quot;$loginhttp&quot; &quot;$password&quot;
			 break
			 ;;
		 esac
	done
#fi
chmod 700 /root/passwordCTadmin
chown root:root /root/passwordCTadmin
cat &lt;&lt; EOF &gt; $CTPARENTALCONFHTTPD

fastcgi.server = (
    &quot;.php&quot; =&gt; (
      &quot;localhost&quot; =&gt; ( 
        &quot;bin-path&quot; =&gt; &quot;/usr/bin/php-cgi&quot;,
        &quot;socket&quot; =&gt; &quot;/run/lighttpd/php-fastcgi.sock&quot;,
        &quot;max-procs&quot; =&gt; 4, # default value
        &quot;bin-environment&quot; =&gt; (
          &quot;PHP_FCGI_CHILDREN&quot; =&gt; &quot;1&quot;, # default value
        ),
        &quot;broken-scriptfilename&quot; =&gt; &quot;enable&quot;
      ))
)
  fastcgi.map-extensions     = ( &quot;.php3&quot; =&gt; &quot;.php&quot;,
                               &quot;.php4&quot; =&gt; &quot;.php&quot;,
                               &quot;.php5&quot; =&gt; &quot;.php&quot;,
                               &quot;.phps&quot; =&gt; &quot;.php&quot;,
                               &quot;.phtml&quot; =&gt; &quot;.php&quot; )

\$HTTP[&quot;url&quot;] =~ &quot;.*CTadmin.*&quot; {
  auth.require = ( &quot;&quot; =&gt;
                   (
                     &quot;method&quot;  =&gt; &quot;digest&quot;,
                     &quot;realm&quot;   =&gt; &quot;$REALMADMINHTTPD&quot;,
                     &quot;require&quot; =&gt; &quot;user=$USERADMINHTTPD&quot; 
                   )
                 )

}
\$SERVER[&quot;socket&quot;] == &quot;$PRIVATE_IP:80&quot; {
server.document-root = &quot;$DIRHTML&quot;
server.errorfile-prefix = &quot;$DIRHTML/err&quot; 
#ssl.engine = &quot;enable&quot; 
#ssl.pemfile = &quot;/etc/lighttpd/ssl/$PRIVATE_IP.pem&quot; 
}

EOF
chown root:$GROUPHTTPD $DREAB
chmod 660 $DREAB
chown root:$GROUPHTTPD $DNS_FILTER_OSSI
chmod 660 $DNS_FILTER_OSSI
chown root:$GROUPHTTPD $CATEGORIES_ENABLED
chmod 660 $CATEGORIES_ENABLED
chmod 660 /etc/sudoers
is_sudo_ok=`grep $USERHTTPD /etc/sudoers |wc -l`
         if [ $is_sudo_ok -ge &quot;1&quot; ] ; then
	
		$SED &quot;s?^Defaults:$USERHTTPD.*requiretty.*?Defaults:$USERHTTPD     \!requiretty?g&quot; /etc/sudoers
		$SED &quot;s?^$USERHTTPD.*?$USERHTTPD ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh -tlu,/usr/local/bin/CTparental.sh -trf,/usr/local/bin/CTparental.sh -dble,/usr/local/bin/CTparental.sh -ubl,/usr/local/bin/CTparental.sh -dl,/usr/local/bin/CTparental.sh -on,/usr/local/bin/CTparental.sh -off,/usr/local/bin/CTparental.sh -aupon,/usr/local/bin/CTparental.sh -aupoff?g&quot; /etc/sudoers
         else
		echo &quot;Defaults:$USERHTTPD     !requiretty&quot; &gt;&gt; /etc/sudoers
         	echo &quot;$USERHTTPD ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh -tlu,/usr/local/bin/CTparental.sh -trf,/usr/local/bin/CTparental.sh -dble,/usr/local/bin/CTparental.sh -ubl,/usr/local/bin/CTparental.sh -dl,/usr/local/bin/CTparental.sh -on,/usr/local/bin/CTparental.sh -off,/usr/local/bin/CTparental.sh -aupon,/usr/local/bin/CTparental.sh -aupoff&quot; &gt;&gt; /etc/sudoers
         fi
chmod 440 /etc/sudoers
if [ ! -f $FILE_HCONF ] ; then 
	echo &gt; $FILE_HCONF 
fi
chown root:$GROUPHTTPD $FILE_HCONF
chmod 660 $FILE_HCONF
chown -R root:$GROUPHTTPD $DIRHTML
chown -R root:$GROUPHTTPD $DIRadminHTML
$LIGHTTPDstart
test=$?
if [ ! $test -eq 0 ];then
	echo &quot;Erreur au lancement du service lighttpd &quot;
	set -e
	exit 1
fi
}

install () {
	if [ $nomanuel -eq 0 ]; then 
		vim -h 2&amp;&gt; /dev/null
		if [ $? -eq 0 ] ; then
		EDIT=&quot;vim &quot;
		fi
		mono -h 2&amp;&gt; /dev/null
		if [ $? -eq 0 ] ; then
		EDIT=${EDIT:=&quot;mono &quot;}
		fi
		vi -h 2&amp;&gt; /dev/null
		if [ $? -eq 0 ] ; then
		EDIT=${EDIT:=&quot;vi &quot;}
		fi
		if [ -f gpl-3.0.fr.txt ] ; then
			cp -f gpl-3.0.fr.txt /usr/local/share/CTparental/
		fi
		if [ -f gpl-3.0.txt ] ; then
			cp -f gpl-3.0.txt /usr/local/share/CTparental/
		fi
		if [ -f CHANGELOG ] ; then
			cp -f CHANGELOG /usr/local/share/CTparental/
		fi
		if [ -f dist.conf ];then
			cp -f dist.conf /usr/local/share/CTparental/dist.conf.orig
			cp -f dist.conf $DIR_CONF/
		fi
		while (true); do
		$EDIT $DIR_CONF/dist.conf
		clear
		cat $EDIT $DIR_CONF/dist.conf | grep -v -E ^#
		echo &quot;Entrer : S pour continuer avec ces parramêtres .&quot;
		echo &quot;Entrer : Q pour Quiter l'installation.&quot;
		echo &quot;Entrer tous autre choix pour modifier les parramêtres.&quot;
		 read choi
		case $choi in
			 S | s )
				break
			;;
			 Q | q )
				exit
			;;
			esac
		done
			
	fi
	if [ -f $DIR_CONF/dist.conf ];then
		source  $DIR_CONF/dist.conf 
	fi

	if [ -f /etc/NetworkManager/NetworkManager.conf ];then
    		 $SED &quot;s/^dns=dnsmasq/#dns=dnsmasq/g&quot; /etc/NetworkManager/NetworkManager.conf
    		 $NWMANAGERrestart
     		sleep 5
   	fi

      mkdir $tempDIR
      mkdir -p $DIR_CONF
      initblenabled
      cat /etc/resolv.conf &gt; $DIR_CONF/resolv.conf.sav
      if [ $noinstalldep = &quot;0&quot; ]; then
	      $CMDINSTALL $DEPENDANCES
      fi
      if [ ! -f blacklists.tar.gz ]
      then
         download
      else
         tar -xzf blacklists.tar.gz -C $tempDIR
         if [ ! $? -eq 0 ]; then
            echo &quot;Erreur d'extraction de l'archive, processus interrompu&quot;
            uninstall
            set -e
            exit 1
         fi
         rm -rf $DIR_DNS_FILTER_AVAILABLE/
         mkdir $DIR_DNS_FILTER_AVAILABLE
      fi
      adapt
      catChoice
      dnsmasqon
      $SED &quot;s?^LASTUPDATE.*?LASTUPDATE=$THISDAYS=`date +%d-%m-%Y\ %T`?g&quot; $FILE_CONF
      confresolvconf
      FoncHTTPDCONF
      $ENCRON
      $ENLIGHTTPD
      $ENDNSMASQ
      $ENNWMANAGER

      
}

confresolvconf () {
if [ $NORESOLVCONF -eq 1 ] ; then
	chattr -i /etc/resolv.conf
	echo &quot;nameserver 127.0.0.1&quot; &gt; /etc/resolv.conf
	chattr +i /etc/resolv.conf
else 
	echo &quot;nameserver 127.0.0.1&quot; &gt; $RESOLVDNSMASQ
	if [ ! -f $RESOLVCONFORDER ];then
cat &lt;&lt; EOF &gt; $RESOLVCONFORDER
	# interface-order(5)
	lo.inet*
	lo.dnsmasq
	lo.pdnsd
	lo.!(pdns|pdns-recursor)
	lo
	tun*
	tap*
	hso*
	em+([0-9])?[+([0-9]))*
	p+([0-9]p+([0-9])?(_+([0-9]))*
	eth*
	ath*
	wlan*
	ppp*
	*
EOF
	fi
	resolvconf -u
fi
}

uninstall () {
   rm -f /etc/cron.d/CTparental*
   $DNSMASQrestart
   $LIGHTTPDstop
   rm -f /var/www/index.lighttpd.html
   rm -rf $tempDIR
   rm -rf $DIRHTML


   rm -rf /usr/local/share/CTparental
   rm -rf /usr/share/lighttpd/*
   rm -f $CTPARENTALCONFHTTPD
   rm -rf $DIRadminHTML
   if [ $NORESOLVCONF -eq 1 ] ; then
		chattr -i /etc/resolv.conf
		cat $DIR_CONF/resolv.conf.sav &gt; /etc/resolv.conf
		dhclient -r
		dhclient
   else 
	   rm -f $RESOLVDNSMASQ
	   resolvconf -u
   fi
   if [ -f /etc/NetworkManager/NetworkManager.conf ];then
	$SED &quot;s/^#dns=dnsmasq/dns=dnsmasq/g&quot; /etc/NetworkManager/NetworkManager.conf
	$NWMANAGERrestart
  	sleep 5
   fi
   rm -rf $DIR_CONF
   if [ $noinstalldep = &quot;0&quot; ]; then
	   $CMDREMOVE $DEPENDANCES 
   fi
}

choiblenabled () {
echo -n &gt; $CATEGORIES_ENABLED
clear
echo &quot;Voulez-vous filtrer par Blacklist ou Whitelist :&quot;
echo -n &quot; B/W :&quot;
while (true); do
         read choi
         case $choi in
         B | b )
         echo &quot;Vous allez maintenant choisir les \&quot;Black listes\&quot; à appliquer.&quot;
		for CATEGORIE in `cat  $BL_CATEGORIES_AVAILABLE`  # pour chaque catégorie
		do   
		      clear
		      echo &quot;Voulez vous activer la categorie :&quot;
		      echo -n &quot;$CATEGORIE  O/N :&quot;
		      while (true); do
			 read choi
			 case $choi in
			 O | o )
			 echo $CATEGORIE &gt;&gt; $CATEGORIES_ENABLED
			 break
			 ;;
			 N | n )
			 break
			 ;;
		      esac
		      done
		done
         break
         ;;
         W | w )
         echo &quot;Vous allez maintenant choisir les \&quot;White listes\&quot; à appliquer.&quot;
		for CATEGORIE in `cat  $WL_CATEGORIES_AVAILABLE`  # pour chaque catégorie
		do   
		      clear
		      echo &quot;Voulez vous activer la categorie :&quot;
		      echo -n &quot;$CATEGORIE  O/N :&quot;
		      while (true); do
			 read choi
			 case $choi in
			 O | o )
			 echo $CATEGORIE &gt;&gt; $CATEGORIES_ENABLED
			 break
			 ;;
			 N | n )
			 break
			 ;;
		      esac
		      done
		done
         break
         ;;
      esac
done
}


errortime1 () {
clear
echo -e &quot;L'heure de début doit être strictement inférieure a l'heure de fin: $RougeD$input$Fcolor &quot;
echo &quot;exemple: 08h00 à 23h59 ou 08h00 à 12h00 et 14h00 à 23h59&quot;
echo -e -n &quot;$RougeD$PCUSER$Fcolor est autorisé à se connecter le $BleuD${DAYS[$NumDAY]}$Fcolor de :&quot;
}
errortime2 () {
clear
echo -e &quot;Mauvaise syntaxe: $RougeD$input$Fcolor &quot;
echo &quot;exemple: 08h00 à 23h59 ou 08h00 à 12h00 et 14h00 à 23h59&quot;
echo -e -n &quot;$RougeD$PCUSER$Fcolor est autorisé à se connecter le $BleuD${DAYS[$NumDAY]}$Fcolor de :&quot;
}


timecronalert () {
MinAlert=${1} # temp en minute entre l'alerte et l'action
H=$((10#${2}))
M=$((10#${3}))
D=$((10#${4}))
MinTotalAlert=&quot;$(($H*60+$M-$MinAlert))&quot;
if [ $(( $MinTotalAlert &lt; 0 )) -eq 1 ] 
then
	if [ $Numday -eq 0 ] ; then
		D=6
	else
		D=$(( $D -1 ))
	fi
	MinTotalAlert=&quot;$(($(($H + 24))*60+$M-$MinAlert))&quot;
fi
Halert=$(($MinTotalAlert/60))
MAlert=$(($MinTotalAlert - $(( $Halert *60 )) ))
echo &quot;$MAlert $Halert * * ${DAYSCRON[$D]}&quot;
}

activetimelogin () {
   TESTGESTIONNAIRE=&quot;&quot;
   for FILE in `echo $GESTIONNAIREDESESSIONS`
   do
      if [ -f $DIRPAM$FILE ];then
         if [ $(cat $DIRPAM$FILE | grep -c &quot;account required pam_time.so&quot;) -eq 0  ] ; then
            $SED &quot;1i account required pam_time.so&quot;  $DIRPAM$FILE
         fi
         TESTGESTIONNAIRE=$TESTGESTIONNAIRE\ $FILE
      fi
   done
   if [ $( echo $TESTGESTIONNAIRE | wc -m ) -eq 1 ] ; then
      echo &quot;Aucun gestionnaire de session connu n'a été détecté.&quot;
      echo &quot; il est donc impossible d'activer le contrôle horaire des connexions&quot;
      desactivetimelogin
      exit 1
   fi
   
   if [ ! -f $FILEPAMTIMECONF.old ] ; then
   cp $FILEPAMTIMECONF $FILEPAMTIMECONF.old
   fi
   echo &quot;*;*;root;Al0000-2400&quot; &gt; $FILEPAMTIMECONF
   for NumDAY in 0 1 2 3 4 5 6
   do
   echo  &gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
   done
   for PCUSER in `listeusers`
   do
   HOMEPCUSER=$(getent passwd &quot;$PCUSER&quot; | cut -d ':' -f6)
   $SED &quot;/^$PCUSER=/d&quot; $FILE_HCONF
   echo -e -n &quot;$PCUSER est autorisé a se connecter 7j/7 24h/24 O/N?&quot; 
   choi=&quot;&quot;
   while (true); do
   read choi
        case $choi in
         O | o )
	 alltime=&quot;O&quot;
         echo &quot;$PCUSER=admin=&quot; &gt;&gt; $FILE_HCONF
   	break
         ;;
	 N| n )
         alltime=&quot;N&quot;
         echo &quot;$PCUSER=user=&quot; &gt;&gt; $FILE_HCONF
   	break
         ;;	
   esac
   done
      HORAIRES=&quot;&quot;
      for NumDAY in 0 1 2 3 4 5 6
         do
	 if [ $alltime = &quot;O&quot; ];then	
		break	
	 fi
	 
         clear
         echo &quot;exemple: 00h00 à 23h59 ou 08h00 à 12h00 et 14h00 à 16h50&quot;
         echo -e -n &quot;$RougeD$PCUSER$Fcolor est autorisé à se connecter le $BleuD${DAYS[$NumDAY]}$Fcolor de :&quot;
         while (true); do
            read choi
            input=$choi
            choi=$(echo $choi | sed -e &quot;s/h//g&quot; | sed -e &quot;s/ //g&quot; | sed -e &quot;s/a/-/g&quot; | sed -e &quot;s/et/:/g&quot; ) # mise en forme de la variable choi pour pam   
               if [ $( echo $choi | grep -E -c &quot;^([0-1][0-9]|2[0-3])[0-5][0-9]-([0-1][0-9]|2[0-3])[0-5][0-9]$|^([0-1][0-9]|2[0-3])[0-5][0-9]-([0-1][0-9]|2[0-3])[0-5][0-9]:([0-1][0-9]|2[0-3])[0-5][0-9]-([0-1][0-9]|2[0-3])[0-5][0-9]$&quot; ) -eq 1 ];then
                  int1=$(echo $choi | cut -d &quot;:&quot; -f1 | cut -d &quot;-&quot; -f1)
                  int2=$(echo $choi | cut -d &quot;:&quot; -f1 | cut -d &quot;-&quot; -f2)
                  int3=$(echo $choi | cut -d &quot;:&quot; -f2 | cut -d &quot;-&quot; -f1)
                  int4=$(echo $choi | cut -d &quot;:&quot; -f2 | cut -d &quot;-&quot; -f2)
                  if [ $int1 -lt $int2 ];then
                     if [ ! $(echo $choi | grep -E -c &quot;:&quot;) -eq 1 ] ; then
                        if [ $NumDAY -eq 6 ] ; then
                           HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1-$int2&quot;
                        else
                           HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1-$int2|&quot;
                        fi
                        m1=$(echo $int1 | sed -e 's/.\{02\}//')
                        h1=$(echo $int1 | sed -e 's/.\{02\}$//') 
                        m2=$(echo $int2 | sed -e 's/.\{02\}//')
                        h2=$(echo $int2 | sed -e 's/.\{02\}$//')
						echo &quot;$PCUSER=$NumDAY=$h1${h}h$m1:$h2${h}h$m2&quot; &gt;&gt; $FILE_HCONF   
                        echo &quot;$m2 $h2 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
			for count in 1 2 3 4 5
			do
                        echo &quot;$(timecronalert $count $h2 $m2 $NumDAY) root export DISPLAY=:0.0 &amp;&amp; export XAUTHORITY=$HOMEPCUSER/.Xauthority &amp;&amp; sudo -u $PCUSER  /usr/bin/notify-send -u critical \&quot;Alerte CTparental\&quot; \&quot;fermeture de session dans $count minutes \&quot; &quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
			done
                        break
   
                     else   
                        if [ $int2 -lt $int3 ];then
                           if [ $int3 -lt $int4 ];then
                              if [ $NumDAY -eq 6 ] ; then
                                 HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1-$int2|${DAYSPAM[$NumDAY]}$int3-$int4&quot;
                              else
                                 HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1-$int2|${DAYSPAM[$NumDAY]}$int3-$int4|&quot;
                              fi
                              m1=$(echo $int1 | sed -e 's/.\{02\}//')
                              h1=$(echo $int1 | sed -e 's/.\{02\}$//')   
                              m2=$(echo $int2 | sed -e 's/.\{02\}//')
                              h2=$(echo $int2 | sed -e 's/.\{02\}$//')  
                              m3=$(echo $int3 | sed -e 's/.\{02\}//')
                              h3=$(echo $int3 | sed -e 's/.\{02\}$//')   
                              m4=$(echo $int4 | sed -e 's/.\{02\}//')
                              h4=$(echo $int4 | sed -e 's/.\{02\}$//')   
                              ## minutes heures jourdumoi moi jourdelasemaine utilisateur  commande
							  echo &quot;$PCUSER=$NumDAY=$h1${h}h$m1:$h2${h}h$m2:$h3${h}h$m3:$h4${h}h$m4&quot; &gt;&gt; $FILE_HCONF
                              echo &quot;$m2 $h2 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
			      echo &quot;$m4 $h4 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
			      for count in 1 2 3 4 5
			      do
                              echo &quot;$(timecronalert $count $h2 $m2 $NumDAY) root export DISPLAY=:0.0 &amp;&amp; export XAUTHORITY=$HOMEPCUSER/.Xauthority &amp;&amp; sudo -u $PCUSER  /usr/bin/notify-send -u critical \&quot;Alerte CTparental\&quot; \&quot;fermeture de session dans $count minutes \&quot; &quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
                              echo &quot;$(timecronalert $count $h4 $m4 $NumDAY) root export DISPLAY=:0.0 &amp;&amp; export XAUTHORITY=$HOMEPCUSER/.Xauthority &amp;&amp; sudo -u $PCUSER  /usr/bin/notify-send -u critical \&quot;Alerte CTparental\&quot; \&quot;fermeture de session dans $count minutes\&quot; &quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
			      done
                             
                              break   
                           else
                              errortime1
                           fi
                        else
                           errortime1
                        fi
                     fi
                  else
                     errortime1
   
                  fi
                       
               else
                  errortime2   
               fi
           
         done
     
        done
     	if [ $alltime = &quot;N&quot; ] ; then
		echo &quot;*;*;$PCUSER;$HORAIRESPAM&quot; &gt;&gt; $FILEPAMTIMECONF
	else
		echo &quot;*;*;$PCUSER;Al0000-2400&quot; &gt;&gt; $FILEPAMTIMECONF
	fi
   done
   
   for NumDAY in 0 1 2 3 4 5 6
   do
      echo &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
   done
   echo &gt;&gt; $FILE_HCONF
$SED &quot;s?^HOURSCONNECT.*?HOURSCONNECT=ON?g&quot; $FILE_CONF
$CRONrestart
}

desactivetimelogin () {
for FILE in `echo $GESTIONNAIREDESESSIONS`
do
   $SED &quot;/account required pam_time.so/d&quot; $DIRPAM$FILE
done
cat $FILEPAMTIMECONF.old &gt; $FILEPAMTIMECONF
for NumDAY in 0 1 2 3 4 5 6
do
   rm -f /etc/cron.d/CTparental${DAYS[$NumDAY]}
done
$SED &quot;s?^HOURSCONNECT.*?HOURSCONNECT=OFF?g&quot; $FILE_CONF

$CRONrestart
}


listeusers () {
TABUSER=( &quot; $(getent passwd | cut -d&quot;:&quot; -f1,3) &quot; )
for LIGNES in $TABUSER
do
#echo $(echo $LIGNES | cut -d&quot;:&quot; -f2)
if [ $(echo $LIGNES | cut -d&quot;:&quot; -f2) -ge $UIDMINUSER ] ;then
	echo $LIGNES | cut -d&quot;:&quot; -f1
fi
done
}


readTimeFILECONF () {
   TESTGESTIONNAIRE=&quot;&quot;
   for FILE in `echo $GESTIONNAIREDESESSIONS`
   do
      if [ -f $DIRPAM$FILE ];then
         if [ $(cat $DIRPAM$FILE | grep -c &quot;account required pam_time.so&quot;) -eq 0  ] ; then
            $SED &quot;1i account required pam_time.so&quot;  $DIRPAM$FILE
         fi
         TESTGESTIONNAIRE=$TESTGESTIONNAIRE\ $FILE
      fi
   done
   if [ $( echo $TESTGESTIONNAIRE | wc -m ) -eq 1 ] ; then
      echo &quot;Aucun gestionnaire de session connu n'a été détecté.&quot;
      echo &quot; il est donc impossible d'activer le contrôle horaire des connexions&quot;
      desactivetimelogin
      exit 1
   fi
   
   if [ ! -f $FILEPAMTIMECONF.old ] ; then
   cp $FILEPAMTIMECONF $FILEPAMTIMECONF.old
   fi
   echo &quot;*;*;root;Al0000-2400&quot; &gt; $FILEPAMTIMECONF
   for NumDAY in 0 1 2 3 4 5 6
   do
   echo  &gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
   done
   
   for PCUSER in `listeusers`
   do
   HOMEPCUSER=$(getent passwd &quot;$PCUSER&quot; | cut -d ':' -f6)
   HORAIRESPAM=&quot;&quot;
  	userisconfigured=&quot;0&quot;

	while read line
	do
	
			if [ $( echo $line | grep -E -c &quot;^$PCUSER=[0-6]=&quot; ) -eq 1 ] ; then
				echo &quot;$line&quot; 
				NumDAY=$(echo $line | cut -d&quot;=&quot; -f2)
				h1=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f1 | cut -d&quot;h&quot; -f1)
				m1=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f1 | cut -d&quot;h&quot; -f2)
				h2=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f2 | cut -d&quot;h&quot; -f1)
				m2=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f2 | cut -d&quot;h&quot; -f2)
				h3=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f3 | cut -d&quot;h&quot; -f1)
				m3=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f3 | cut -d&quot;h&quot; -f2)
				h4=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f4 | cut -d&quot;h&quot; -f1)
				m4=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f4 | cut -d&quot;h&quot; -f2)
				if [ $(echo -n $h3$m3 | wc -c) -gt 2 ]; then
 					if [ $NumDAY -eq 6 ] ; then
		                        	HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$h1$m1-$h2$m2|${DAYSPAM[$NumDAY]}$h3$m3-$h4$m4&quot;
						
		                      	else
		                        	HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$h1$m1-$h2$m2|${DAYSPAM[$NumDAY]}$h3$m3-$h4$m4|&quot;
		                      	fi
					echo &quot;$m2 $h2 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
					echo &quot;$m4 $h4 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
					for count in 1 2 3 4 5
					do
					echo &quot;$(timecronalert $count $h2 $m2 $NumDAY) root export DISPLAY=:0.0 &amp;&amp; export XAUTHORITY=$HOMEPCUSER/.Xauthority &amp;&amp; sudo -u $PCUSER  /usr/bin/notify-send -u critical \&quot;Alerte CTparental\&quot; \&quot;fermeture de session dans $count minutes \&quot; &quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
					echo &quot;$(timecronalert $count $h4 $m4 $NumDAY) root export DISPLAY=:0.0 &amp;&amp; export XAUTHORITY=$HOMEPCUSER/.Xauthority &amp;&amp; sudo -u $PCUSER  /usr/bin/notify-send -u critical \&quot;Alerte CTparental\&quot; \&quot;fermeture de session dans $count minutes \&quot; &quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
					userisconfigured=&quot;1&quot;
					done

				else
				        if [ $NumDAY -eq 6 ] ; then
				           HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$h1$m1-$h2$m2&quot;
				        else
				           HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$h1$m1-$h2$m2|&quot;
				        fi
					for count in 1 2 3 4 5
					do
					echo &quot;$(timecronalert $count $h2 $m2 $NumDAY) root export DISPLAY=:0.0 &amp;&amp; export XAUTHORITY=$HOMEPCUSER/.Xauthority &amp;&amp; sudo -u $PCUSER  /usr/bin/notify-send -u critical \&quot;Alerte CTparental\&quot; \&quot;fermeture de session dans $count minutes \&quot; &quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
					done
					echo &quot;$m2 $h2 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
					
					userisconfigured=&quot;1&quot;
				fi
			fi
	
	
	done &lt; $FILE_HCONF
	if [ $userisconfigured -eq 1 ] ; then
		echo &quot;*;*;$PCUSER;$HORAIRESPAM&quot; &gt;&gt; $FILEPAMTIMECONF
	else
		echo &quot;*;*;$PCUSER;Al0000-2400&quot; &gt;&gt; $FILEPAMTIMECONF
	fi
   done

$SED &quot;s?^HOURSCONNECT.*?HOURSCONNECT=ON?g&quot; $FILE_CONF
$CRONrestart
}



usage=&quot;Usage: CTparental.sh    {-i }|{ -u }|{ -dl }|{ -ubl }|{ -rl }|{ -on }|{ -off }|{ -cble }|{ -dble }
                               |{ -tlo }|{ -tlu }|{ -uhtml }|{ -aupon }|{ -aupoff }|{ -aup } 
-i      =&gt; Installe le contrôle parental sur l'ordinateur (pc de bureau). Peut être utilisé avec
           un paramètre supplémentaire pour indiquer un chemin de sources pour la page web de redirection.
           exemple : CTparental.sh -i -dirhtml /home/toto/html/
           si pas d'option le \&quot;sens interdit\&quot; est utilisé par défaut.
-u      =&gt; désinstalle le contrôle parental de l'ordinateur (pc de bureau)
-dl     =&gt; met à jour le contrôle parental à partir de la blacklist de l'université de Toulouse
-ubl    =&gt; A faire après chaque modification du fichier $DNS_FILTER_OSSI
-rl     =&gt; A faire après chaque modification manuelle du fichier $DREAB
-on     =&gt; Active le contrôle parental
-off    =&gt; Désactive le contrôle parental
-cble   =&gt; Configure le mode de filtrage par liste blanche ou par liste noire (défaut) ainsi que les 
           catégories que l'on veut activer.
-dble   =&gt; Remet les catégories actives par défaut et le filtrage par liste noire.
-tlo    =&gt; Active et paramètre les restrictions horaires de login pour les utilisateurs.
           Compatible avec les gestionnaire de sessions suivant $GESTIONNAIREDESESSIONS .
-tlu    =&gt; Désactive les restrictions horaires de login pour les utilisateurs.
-uhtml  =&gt; met à jour la page de redirection à partir d'un répertoire source ou par défaut avec 
            le \&quot;sens interdit\&quot;.
            exemples:
                     - avec un repertoire source : CTparental.sh -uhtml -dirhtml /home/toto/html/
   		     - par défaut :              CTparental.sh -uhtml
            permet aussi de changer le couple login, mot de passe de l'interface web.
-aupon  =&gt; active la mise à jour automatique de la blacklist de Toulouse (tous les 7 jours).
-aupoff =&gt; désactive la mise à jour automatique de la blacklist de Toulouse.
-aup    =&gt; comme -dl mais seulement si il n'y a pas eu de mise à jour depuis plus de 7 jours.
-nodep  =&gt; si placer aprés -i ou -u permet de ne pas installer/désinstaller les dépendances, utiles si 
            on préfaire les installer a la mains , ou pour le scripte de postinst et prerm 
            du deb.
            exemples:
                     CTparental.sh -i -nodep	
		     CTparental.sh -i -dirhtml /home/toto/html/ -nodep   
		     CTparental.sh -u -nodep 
-nomanuel =&gt; utiliser uniquement pour le scripte de postinst et prerm 
            du deb.
 &quot;
case $arg1 in
   -\? | -h* | --h*)
      echo &quot;$usage&quot;
      exit 0
      ;;
   -i | --install )
      install
      exit 0
      ;;
   -u | --uninstall )
      autoupdateoff 
      dnsmasqoff
      desactivetimelogin
      uninstall
      exit 0
      ;;
   -dl | --download )
      download
      adapt
      catChoice
      dnsmasqon
      $SED &quot;s?^LASTUPDATE.*?LASTUPDATE=$THISDAYS=`date +%d-%m-%Y\ %T`?g&quot; $FILE_CONF
      exit 0
      ;;
   -ubl | --updatebl )
      adapt
      catChoice
      dnsmasqon
      exit 0
      ;;
   -uhtml | --updatehtml )
      FoncHTTPDCONF
      exit 0
      ;;
   -rl | --reload )
      catChoice
      dnsmasqon
      exit 0
      ;;
   -on | --on )
      dnsmasqon
      exit 0
      ;;
   -off | --off )
      autoupdateoff 
      dnsmasqoff
      exit 0
      ;;
   -wlo | --whitelistonly )
      dnsmasqwhitelistonly
      exit 0
      ;;
   -cble | --confblenable )
      choiblenabled
      catChoice
      dnsmasqon
      exit 0
      ;;
    -dble | --defaultblenable )
      initblenabled
      catChoice
      dnsmasqon
      ;;
    -tlo | --timeloginon )
      activetimelogin
      ;;
    -tlu | --timeloginon )
      desactivetimelogin
      ;;
    -trf | --timeloginon )
      readTimeFILECONF
      ;;
    -aupon | --autoupdateon )
      autoupdateon
      ;;
    -aupoff | --autoupdateoff )
      autoupdateoff
      ;;
    -aup | --autoupdate )
      autoupdate
      ;;
    -listusers )
      listeusers
      ;;
      
   *)
      echo &quot;Argument inconnu :$1&quot;;
      echo &quot;$usage&quot;;
      exit 1
      ;;
esac


&lt;/code&gt;
'''index.php'''
&lt;code php&gt;
&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;
&lt;HTML&gt;&lt;!-- written by Rexy --&gt;
&lt;HEAD&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot;&gt;
&lt;TITLE&gt;ALCASAR DNS filtering&lt;/TITLE&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;/CTadmin/css/style.css&quot; type=&quot;text/css&quot;&gt;
&lt;/HEAD&gt;
&lt;body&gt;
&lt;?php
function form_filter ($form_content)
{
// réencodage iso + format unix + rc fin de ligne (ouf...)
	$list = str_replace(&quot;\r\n&quot;, &quot;\n&quot;, utf8_decode($form_content));
	if (strlen($list) != 0){
		if ($list[strlen($list)-1] != &quot;\n&quot;) { $list[strlen($list)]=&quot;\n&quot;;} ;} ;
	return $list;
}
# Choice of language
$Language = 'en';
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
  $Langue = explode(&quot;,&quot;,$_SERVER['HTTP_ACCEPT_LANGUAGE']);
  $Language = strtolower(substr(chop($Langue[0]),0,2)); }
if($Language == 'fr'){
  $l_switch_LogOFF=&quot;Déconnection&quot;;
  $l_hours_error1=&quot;un mauvais format horaire a été trouvé :exemple 8h30 doit s'écrire 08h30&quot;;
  $l_hours_error2=&quot;incohérence horaire : &quot;;
  $l_hours_on = &quot;Les horaires de connexion sont actuellement activés&quot;;
  $l_hours_off = &quot;Les horaires de connexion sont actuellement désactivés&quot;;
  $l_switch_hours_off = &quot;Désactiver les horaires de connexion&quot;;
  $l_switch_hours_on = &quot;Activer les horaires de connexion&quot;;
  $l_hours1 = &quot;Heures de connexions autorisées&quot;;
  $l_switch_Init_bl = &quot;Init Catégories&quot;;
  $l_auto_update_on = &quot;La mise à jour de la blacklist de Toulouse tous les 7 jours est activée&quot;;
  $l_auto_update_off = &quot;La mise à jour de la blacklist de Toulouse tous les 7 jours est désactivée&quot;;
  $l_switch_auto_update_on = &quot;Activer Maj Auto&quot;;
  $l_switch_auto_update_off = &quot;Désactiver Maj Auto&quot;;
  $l_fmenu_black = &quot;Filtrage par BlackList&quot;;
  $l_fmenu_white = &quot;Filtrage par WhiteList&quot;;
  $l_title1 = &quot;Filtrage de noms de domaine &quot;;
  $l_error_open_file=&quot;Erreur d'ouverture du fichier&quot;;
  $l_dnsfilter_on=&quot;Le filtrage de noms de domaine est actuellement activé&quot;;
  $l_dnsfilter_off=&quot;Le filtrage de noms de domaine est actuellement désactivé&quot;;
  $l_switch_filtering_on=&quot;Activer le filtrage&quot;;
  $l_switch_filtering_off=&quot;Désactiver le filtrage&quot;;
  $l_main_bl=&quot;Liste noire/blanche&quot;;
  $l_bl_version=&quot;Version actuelle :&quot;;
  $l_bl_categories_bl=&quot;Choix des catégories à filtrer&quot;;
  $l_bl_categories_wl=&quot;Choix des catégories à autoriser&quot;;
  $l_download_bl=&quot;Télécharger la dernière version&quot;;
  $l_fingerprint=&quot;L'empreinte numérique du fichier téléchargé est : &quot;;
  $l_fingerprint2=&quot;Vérifiez-là en suivant ce lien (ligne 'blacklists.tar.gz') : &quot;;
  $l_activate_bl=&quot;Activer la nouvelle version&quot;;
  $l_reject_bl=&quot;Rejeter&quot;;
  $l_warning=&quot;Temps estimé : une minute.&quot;;
  $l_specific_filtering=&quot;Filtrage spécial&quot;;
  $l_forbidden_dns=&quot;Noms de domaine filtrés&quot;;
  $l_forbidden_dns_explain=&quot;Entrez un nom de domaine par ligne (exemple : domaine.org)&quot;;
  $l_one_dns=&quot;Entrez un nom de domaine par ligne (exemple : domaine.org)&quot;;
  $l_rehabilitated_dns=&quot;Noms de domaine réhabilités&quot;;
  $l_rehabilitated_dns_explain_bl=&quot;1-Entrez ici des noms de domaine bloqués par la liste noire &lt;BR&gt; que vous souhaitez réhabiliter.&quot;;
  $l_rehabilitated_dns_explain_wl=&quot;2-Entrez ici des noms de domaine autorisés en plus de ceux &lt;BR&gt; de la liste blanche de Toulouse.&quot;;
  $l_add_to_bl=&quot;Noms de domaine ajoutés à la liste noire&quot;;
   $l_record=&quot;Enregistrer les modifications&quot;;
  $l_wait=&quot;Une fois validées, 30 secondes sont nécessaires pour traiter vos modifications&quot;;
}
else {
  $l_switch_LogOFF=&quot;Logout&quot;;
  $l_hours_error1=&quot;Un mauvais format horaire a été trouvé : exemple 8h30 doit s'écrire 08h30&quot;;
  $l_hours_error2=&quot;incohérence horaire : &quot;;
  $l_hours_on = &quot;Les horaires de connexion sont actuellement activés&quot;;
  $l_hours_off = &quot;Les horaires de connexion sont actuellement désactivés&quot;;
  $l_switch_hours_off = &quot;Désactiver les horaires de connexion&quot;;
  $l_switch_hours_on = &quot;Activer les horaires de connexion&quot;;
  $l_hours1 = &quot;Heures de connexions autorisées&quot;;
  $l_switch_Init_bl = &quot;Init Catégories&quot;;
  $l_auto_update_on = &quot;La mise à jour de la blacklist de Toulouse tous les 7 jours est activée&quot;;
  $l_auto_update_off = &quot;La mise à jour de la blacklist de Toulouse tous les 7 jours est désactivée&quot;;
  $l_switch_auto_update_on = &quot;Activer Maj Auto&quot;;
  $l_switch_auto_update_off = &quot;Désactiver Maj Auto&quot;;
  $l_fmenu_black = &quot;Filtrage par BlackList&quot;;
  $l_fmenu_white = &quot;Filtrage par WhiteList&quot;;
  $l_title1 = &quot;Domain names filtering&quot;;
  $l_error_open_file=&quot;Error opening the file&quot;;
  $l_dnsfilter_on=&quot;Actually, the Domain name filter is on&quot;;
  $l_dnsfilter_off=&quot;Actually, the Domain name filter is off&quot;;
  $l_switch_filtering_on=&quot;Switch the Filter on&quot;;
  $l_switch_filtering_off=&quot;Switch the Filter off&quot;;
  $l_main_bl=&quot;Blacklist/Whitelist&quot;;
  $l_bl_version=&quot;Current version : &quot;;
  $l_bl_categories_bl=&quot;Choice of filtered categories&quot;;
  $l_bl_categories_wl=&quot;Choice of authorized categories&quot;;
  $l_download_bl=&quot;Download the last version&quot;;
  $l_fingerprint=&quot;The digital fingerprint of the downloaded blacklist is : &quot;;
  $l_fingerprint2=&quot;Verify it with this link (line 'blacklists.tar.gz') : &quot;;
  $l_activate_bl=&quot;Activate the new version&quot;;
  $l_reject_bl=&quot;Reject&quot;;
  $l_warning=&quot;Estimated time : one minute.&quot;;
  $l_specific_filtering=&quot;Specific filtering&quot;;
  $l_forbidden_dns=&quot;Filtered domain names&quot;;
  $l_forbidden_dns_explain=&quot;Enter one domain name per row (exemple : domain.org)&quot;;
  $l_one_dns=&quot;Enter one domain name per row (example : domain.org)&quot;;
  $l_rehabilitated_dns=&quot;Rehabilitated domain names&quot;;
  $l_rehabilitated_dns_explain_bl=&quot;Enter here domain names that are blocked by the blacklist &lt;BR&gt; and you want to rehabilitate.&quot;;
  $l_rehabilitated_dns_explain_wl=&quot;2-Entrez ici des noms de domaine autorisés en plus de ceux &lt;BR&gt; de la liste blanche de Toulouse.&quot;;
  $l_add_to_bl=&quot;Domain names to add to blacklist&quot;;
  $l_record=&quot;Save changes&quot;;
  $l_wait=&quot;Once validated, 30 seconds is necessary to compute your modifications&quot;;
 }
$weeknum = array( 0,1,2,3,4,5,6);
$bl_categories=&quot;/usr/local/etc/CTparental/bl-categories-available&quot;;
$bl_categories_enabled=&quot;/usr/local/etc/CTparental/categories-enabled&quot;;
$conf_file=&quot;/usr/local/etc/CTparental/CTparental.conf&quot;;
$hconf_file=&quot;/usr/local/etc/CTparental/CThours.conf&quot;;
$wl_domains=&quot;/usr/local/etc/CTparental/domaine-rehabiliter&quot;;
$bl_domains=&quot;/usr/local/etc/CTparental/blacklist-local&quot;;
# default values


if (isset($_POST['choix'])){ $choix=$_POST['choix']; } else { $choix=&quot;&quot;; }
switch ($choix)
{
case 'LogOFF' :
	header('HTTP/1.0 401 Unauthorized');
	header('WWW-Authenticate: Digest realm=&quot;interface admin&quot;');
	exit;
	break;
case 'BL_On' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -on&quot;);
	break;
case 'BL_Off' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -off&quot;);
	break;
case 'H_On' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -trf&quot;);
	break;
case 'H_Off' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -tlu&quot;);
	break;
case 'AUP_On' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -aupon&quot;);
	break;
case 'AUP_Off' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -aupoff&quot;);
	break;
case 'INIT_BL' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -dble&quot;);
	break;
case 'Download_bl' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -dl&quot;);
	break;
case 'MAJ_cat' :
	$tab=file($bl_categories_enabled);	
	if ($tab)
		{
		$pointeur=fopen($bl_categories_enabled, &quot;w+&quot;);
		foreach ($_POST as $key =&gt; $value)
			{
                        if (strstr($key,'chk-'))
				{	
				$line=str_replace('chk-','',$key).&quot;\n&quot;;
				fwrite($pointeur,$line);
				}
			}
		fclose($pointeur);
		}
	else {echo &quot;$l_error_open_file $bl_categories_enabled&quot;;}
	$fichier=fopen($bl_domains,&quot;w+&quot;);
	fputs($fichier, form_filter($_POST['OSSI_bl_domains']));
	fclose($fichier);
	unset($_POST['OSSI_bl_domains']);
	$fichier=fopen($wl_domains,&quot;w+&quot;);
	fputs($fichier, form_filter($_POST['OSSI_wl_domains']));
	fclose($fichier);
	unset($_POST['OSSI_wl_domains']);
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -ubl&quot;);
	break;
case 'MAJ_H' :
	$formatheuresok=1;
	if (isset($_POST['selectuser'])){ $selectuser=$_POST['selectuser']; }
	#echo &quot;$selectuser&quot;;
	$tab=file($hconf_file);	
	if ($tab)
	{
		$pointeur=fopen($hconf_file, &quot;w+&quot;);	
		foreach ($tab as $line)
		{
			if (strstr($line,$selectuser) == false)
			{
				fwrite($pointeur,$line); # on reécrit toutes les lignes ne correspondant pas à l'utilisateur sélectionné
			}
	
		}
	}
	else {echo &quot;$l_error_open_file $hconf_file&quot;;}
	if (isset($_POST[&quot;isadmin&quot;])){fwrite($pointeur,&quot;$selectuser=admin=&quot;.&quot;\n&quot;); } 
	else 
	{
		fwrite($pointeur,&quot;$selectuser=user=&quot;.&quot;\n&quot;); 
		foreach ($weeknum as $numday)
		{
			$formatheuresok=1;
			if (isset($_POST[&quot;h1$numday&quot;])){ $h1[$numday]=$_POST[&quot;h1$numday&quot;]; } else { $h1[$numday]=&quot;00h00&quot;; }
			if (isset($_POST[&quot;h2$numday&quot;])){ $h2[$numday]=$_POST[&quot;h2$numday&quot;]; } else { $h2[$numday]=&quot;23h59&quot;; }
			if (isset($_POST[&quot;h3$numday&quot;])){ $h3[$numday]=$_POST[&quot;h3$numday&quot;]; } else { $h3[$numday]=&quot;&quot;; }
			if (isset($_POST[&quot;h4$numday&quot;])){ $h4[$numday]=$_POST[&quot;h4$numday&quot;]; } else { $h4[$numday]=&quot;&quot;; }
			if (preg_match(&quot;/^[0-1][0-9]h[0-5][0-9]$|^2[0-3]h[0-5][0-9]$/&quot;,$h1[$numday])!=1){$formatheuresok=0;}
			if (preg_match(&quot;/^[0-1][0-9]h[0-5][0-9]$|^2[0-3]h[0-5][0-9]$/&quot;,$h2[$numday])!=1){$formatheuresok=0;}
			if ($h3[$numday]==&quot;&quot;)
			{	
	
				if ($formatheuresok == 1)
				{
					$t1=explode(&quot;h&quot;, $h1[$numday]);
					$t2=explode(&quot;h&quot;, $h2[$numday]);
					$v1=&quot;$t1[0]$t1[1]&quot;;
					$v2=&quot;$t2[0]$t2[1]&quot;;
					if ( $v1 &lt; $v2)
					{
						fwrite($pointeur,&quot;$selectuser=$numday=$h1[$numday]:$h2[$numday]&quot;.&quot;\n&quot;);
					}
					else
					{
						fwrite($pointeur,&quot;$selectuser=$numday=00h00:23h59&quot;.&quot;\n&quot;);
						echo &quot;&lt;H3&gt;$l_hours_error2 $h1[$numday]&gt;=$h2[$numday]&lt;/H3&gt;&quot;;
					}
				}
				else 
				{
					fwrite($pointeur,&quot;$selectuser=$numday=00h00:23h59&quot;.&quot;\n&quot;);
					echo &quot;&lt;H3&gt;$l_hours_error1&lt;/H3&gt;&quot;;
				}
			}
			else 
			{
				if (preg_match(&quot;/^[0-1][0-9]h[0-5][0-9]$|^2[0-3]h[0-5][0-9]$/&quot;,$h3[$numday])!=1){$formatheuresok=0;}
				if (preg_match(&quot;/^[0-1][0-9]h[0-5][0-9]$|^2[0-3]h[0-5][0-9]$/&quot;,$h4[$numday])!=1){$formatheuresok=0;}
				if ($formatheuresok == 1)
				{
					$t1=explode(&quot;h&quot;, $h1[$numday]);
					$t2=explode(&quot;h&quot;, $h2[$numday]);
					$t3=explode(&quot;h&quot;, $h3[$numday]);
					$t4=explode(&quot;h&quot;, $h4[$numday]);
					$v1=&quot;$t1[0]$t1[1]&quot;;
					$v2=&quot;$t2[0]$t2[1]&quot;;
					$v3=&quot;$t3[0]$t3[1]&quot;;
					$v4=&quot;$t4[0]$t4[1]&quot;;
					if ( $v1 &lt; $v2 &amp;&amp; $v2 &lt; $v3 &amp;&amp; $v3 &lt; $v4)
					{
					fwrite($pointeur,&quot;$selectuser=$numday=$h1[$numday]:$h2[$numday]:$h3[$numday]:$h4[$numday]&quot;.&quot;\n&quot;);
					}
					else
					{
						fwrite($pointeur,&quot;$selectuser=$numday=00h00:23h59&quot;.&quot;\n&quot;);
						echo &quot;&lt;H3&gt;$l_hours_error2 $h1[$numday]&gt;=$h2[$numday]&gt;=$h3[$numday]&gt;=$h4[$numday]&lt;/H3&gt;&quot;;
					}
				}
				else 
				{
					fwrite($pointeur,&quot;$selectuser=$numday=00h00:23h59&quot;.&quot;\n&quot;);
					echo &quot;&lt;H3&gt;$l_hours_error1&lt;/H3&gt;&quot;;
					
				}
			}

		}
	}
	
	fclose($pointeur);
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -trf&quot;);
	break;

}

echo &quot;&lt;TABLE width='100%' border=0 cellspacing=0 cellpadding=0&gt;&quot;;
echo &quot;&lt;tr&gt;&lt;th&gt;$l_title1&lt;/th&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;tr bgcolor='#FFCC66'&gt;&lt;td&gt;&lt;img src='/images/pix.gif' width=1 height=2&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;/TABLE&gt;&quot;;
echo &quot;&lt;TABLE width='100%' border=1 cellspacing=0 cellpadding=0&gt;&quot;;
echo &quot;&lt;tr&gt;&lt;td valign='middle' align='left'&gt;&quot;;
echo &quot;&lt;CENTER&gt;&quot;;
echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
echo &quot;&lt;input type=hidden name='choix' value=\&quot;LogOFF\&quot;&gt;&quot;;
echo &quot;&lt;input type=submit value=\&quot;$l_switch_LogOFF\&quot;&gt;&quot;;
echo &quot;&lt;/FORM&gt;&quot;;
echo &quot;&lt;/CENTER&gt;&quot;;
if (is_file ($conf_file))
	{
	$tab=file($conf_file);
	if ($tab)
		{
		foreach ($tab as $line)
			{
			$field=explode(&quot;=&quot;, $line);
			if ($field[0] == &quot;LASTUPDATE&quot;)	{$LASTUPDATE=trim($field[2]);}
			if ($field[0] == &quot;DNSMASQ&quot;)		{$DNSMASQ=trim($field[1]);}
			if ($field[0] == &quot;AUTOUPDATE&quot;)		{$AUTOUPDATE=trim($field[1]);}
			if ($field[0] == &quot;HOURSCONNECT&quot;)	{$HOURSCONNECT=trim($field[1]);}
                        
			}
		}
	}
else { echo &quot;$l_error_open_file $conf_file&quot;;}
if ($DNSMASQ &lt;&gt; &quot;OFF&quot;)
	{
	echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_dnsfilter_on&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
 	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type=hidden name='choix' value=\&quot;BL_Off\&quot;&gt;&quot;;
	echo &quot;&lt;input type=submit value=\&quot;$l_switch_filtering_off\&quot;&gt;&quot;;
}
else
	{
	echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_dnsfilter_off&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
 	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type=hidden name='choix' value=\&quot;BL_On\&quot;&gt;&quot;;
	echo &quot;&lt;input type=submit value=\&quot;$l_switch_filtering_on\&quot;&gt;&quot;;
	}
echo &quot;&lt;/FORM&gt;&quot;;

if ( $DNSMASQ&lt;&gt;&quot;OFF&quot;){
include 'dns.php';
}
echo &quot;&lt;/TABLE&gt;&quot;;
echo &quot;&lt;TABLE width='100%' border=0 cellspacing=0 cellpadding=0&gt;&quot;;
echo &quot;&lt;tr&gt;&lt;th&gt;$l_hours1&lt;/th&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;tr bgcolor='#FFCC66'&gt;&lt;td&gt;&lt;img src='/images/pix.gif' width=1 height=2&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;/TABLE&gt;&quot;;
echo &quot;&lt;TABLE width='100%' border=1 cellspacing=0 cellpadding=0&gt;&quot;;
echo &quot;&lt;tr&gt;&lt;td valign='middle' align='left'&gt;&quot;;
if ($HOURSCONNECT == &quot;ON&quot;)
	{
	echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_hours_on&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
 	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type=hidden name='choix' value=\&quot;H_Off\&quot;&gt;&quot;;
	echo &quot;&lt;input type=submit value=\&quot;$l_switch_hours_off\&quot;&gt;&quot;;
}
else
	{
	echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_hours_off&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
 	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type=hidden name='choix' value=\&quot;H_On\&quot;&gt;&quot;;
	echo &quot;&lt;input type=submit value=\&quot;$l_switch_hours_on\&quot;&gt;&quot;;
	}
echo &quot;&lt;/FORM&gt;&quot;;

if ($HOURSCONNECT == &quot;ON&quot;)
{
include 'hours.php';
}
echo &quot;&lt;/td&gt;&lt;/tr&gt;&quot;;
?&gt;
&lt;/BODY&gt;
&lt;/HTML&gt;
&lt;/code&gt;
'''dns.php'''
&lt;code php&gt;
&lt;?php
if (isset($_GET['filtragemode'])){ $filtragemode=$_GET['filtragemode']; } else {$filtragemode=$DNSMASQ;}
if ($filtragemode == 'WHITE')
{
$bl_categories=&quot;/usr/local/etc/CTparental/wl-categories-available&quot;;
}
else { $bl_categories=&quot;/usr/local/etc/CTparental/bl-categories-available&quot;;}

$filtragemode = urlencode($filtragemode);
echo &quot;&lt;table border=0 width=400 cellpadding=0 cellspacing=2&gt;&quot;;
echo &quot;&lt;tr valign=top&gt;&quot;;
echo &quot;&lt;td align=center&quot;; if ( $filtragemode == &quot;BLACK&quot; ) { echo &quot; bgcolor=\&quot;#FFCC66\&quot;&quot;;} echo &quot;&gt;&quot;;
echo &quot;&lt;a href=\&quot;$_SERVER[PHP_SELF]?filtragemode=BLACK\&quot; title=\&quot;\&quot;&gt;&lt;font color=\&quot;black\&quot;&gt;&lt;b&gt;$l_fmenu_black&lt;/b&gt;&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&quot;;
echo &quot;&lt;td align=center&quot;; if ( $filtragemode == &quot;WHITE&quot; ) { echo &quot; bgcolor=\&quot;#FFCC66\&quot;&quot;;} echo &quot;&gt;&quot;;
echo &quot;&lt;a href=\&quot;$_SERVER[PHP_SELF]?filtragemode=WHITE\&quot; title=\&quot;\&quot;&gt;&lt;font color=\&quot;black\&quot;&gt;&lt;b&gt;$l_fmenu_white&lt;/b&gt;&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&quot;;
echo &quot;&lt;/tr&gt;&quot;;
echo&quot; &lt;/table&gt;&quot;;
echo &quot;&lt;/td&gt;&lt;/tr&gt;&quot;;


function echo_file ($filename)
	{
	if (file_exists($filename))
		{
		if (filesize($filename) != 0)
			{
			$pointeur=fopen($filename,&quot;r&quot;);
			$tampon = fread($pointeur, filesize($filename));
			fclose($pointeur);
			echo $tampon;
			}
		}
	else
		{
		echo &quot;$l_error_openfile $filename&quot;;
		}
	}

echo &quot;&lt;TABLE width='100%' border=1 cellspacing=0 cellpadding=1&gt;&quot;;
echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_main_bl&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
echo &quot;&lt;tr&gt;&lt;td valign='middle' align='left' colspan=10&gt;&quot;;
echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
echo &quot;&lt;center&gt;$l_bl_version $LASTUPDATE&quot;;
echo &quot;&lt;/center&gt;&lt;BR&gt;&quot;;
	echo &quot;&lt;input type='hidden' name='choix' value='Download_bl'&gt;&quot;;
	echo &quot;&lt;input type='submit' value='$l_download_bl'&gt;&quot;;
	echo &quot; ($l_warning)&quot;;

echo &quot;&lt;/FORM&gt;&quot;;
echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
echo &quot;&lt;input type='hidden' name='choix' value='INIT_BL'&gt;&quot;;
echo &quot;&lt;input type='submit' value='$l_switch_Init_bl'&gt;&quot;;
echo &quot;&lt;/FORM&gt;&quot;;
if ($AUTOUPDATE == &quot;ON&quot;)
	{
	echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_auto_update_on&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
 	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type=hidden name='choix' value=\&quot;AUP_Off\&quot;&gt;&quot;;
	echo &quot;&lt;input type=submit value=\&quot;$l_switch_auto_update_off\&quot;&gt;&quot;;
}
else
	{
	echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_auto_update_off&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
 	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type=hidden name='choix' value=\&quot;AUP_On\&quot;&gt;&quot;;
	echo &quot;&lt;input type=submit value=\&quot;$l_switch_auto_update_on\&quot;&gt;&quot;;
	}
echo &quot;&lt;/FORM&gt;&quot;;
echo &quot;&lt;/td&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;tr&gt;&lt;td valign=\&quot;middle\&quot; align=\&quot;left\&quot; colspan=10&gt;&quot;;
echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
echo &quot;&lt;input type='hidden' name='choix' value='MAJ_cat'&gt;&quot;;
if ($filtragemode == &quot;BLACK&quot;){echo &quot;&lt;center&gt;$l_bl_categories_bl&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;}
else {echo &quot;&lt;center&gt;$l_bl_categories_wl&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;}

//on lit et on interprète le fichier de catégories
$cols=1; 
if (file_exists($bl_categories))
	{
	$pointeur=fopen($bl_categories,&quot;r&quot;);
	while (!feof ($pointeur))
		{
		$ligne=fgets($pointeur, 4096);
		if ($ligne)
			{
			if ($cols == 1) { echo &quot;&lt;tr&gt;&quot;;}
			$categorie=trim(basename($ligne));
			echo &quot;&lt;td&gt;&lt;a href='bl_categories_help.php?cat=$categorie' target='cat_help' onclick=window.open('bl_categories_help.php','cat_help','width=600,height=150,toolbar=no,scrollbars=no,resizable=yes') title='categories help page'&gt;$categorie&lt;/a&gt;&lt;br&gt;&quot;;
			echo &quot;&lt;input type='checkbox' name='chk-$categorie'&quot;;
			// la catégorie n'existe pas dans le fichier de catégorie activé -&gt; categorie non selectionnée
                        $str = file_get_contents($bl_categories_enabled);
			if (strpos($str, $categorie)===false) { echo &quot;&gt;&quot;;}
			else { echo &quot;checked&gt;&quot;; }
			echo &quot;&lt;/td&gt;&quot;;
			$cols++;
			if ($cols &gt; 10) {
				echo &quot;&lt;/tr&gt;&quot;;
				$cols=1; }
			}
		}
	fclose($pointeur);
	}
else	{
	echo &quot;$l_error_open_file $bl_categories&quot;;
	}
echo &quot;&lt;/td&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;tr&gt;&lt;td valign='middle' align='left' colspan=10&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;tr&gt;&lt;td colspan=5 align=center&gt;&quot;;
if ($filtragemode == &quot;BLACK&quot;){echo &quot;&lt;H3&gt;$l_rehabilitated_dns&lt;/H3&gt;$l_rehabilitated_dns_explain_bl&lt;BR&gt;$l_one_dns&lt;BR&gt;&quot;;}
else {echo &quot;&lt;H3&gt;$l_rehabilitated_dns&lt;/H3&gt;$l_rehabilitated_dns_explain_wl&lt;BR&gt;$l_one_dns&lt;BR&gt;&quot;;}
echo &quot;&lt;textarea name='OSSI_wl_domains' rows=5 cols=40&gt;&quot;;
echo_file ($wl_domains);
echo &quot;&lt;/textarea&gt;&lt;/td&gt;&quot;;
if ( $filtragemode == &quot;BLACK&quot; ) {
echo &quot;&lt;td colspan=5 align=center&gt;&quot;;
echo &quot;&lt;H3&gt;$l_forbidden_dns&lt;/H3&gt;$l_forbidden_dns_explain&lt;BR&gt;&quot;;
echo &quot;&lt;textarea name='OSSI_bl_domains' rows=5 cols=40&gt;&quot;;
echo_file ($bl_domains);
echo &quot;&lt;/textarea&gt;&lt;/td&gt;&quot;;
}
echo &quot;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=10&gt;&quot;;

echo &quot;&lt;input type='submit' value='$l_record'&gt;&quot;;
echo &quot;&lt;/form&gt; ($l_wait)&quot;;

echo &quot;&lt;/td&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;/TABLE&gt;&quot;;
?&gt;
&lt;/code&gt;
'''hours.php'''
&lt;code php&gt;

&lt;?php
# Choice of language
$Language = 'en';
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
  $Langue = explode(&quot;,&quot;,$_SERVER['HTTP_ACCEPT_LANGUAGE']);
  $Language = strtolower(substr(chop($Langue[0]),0,2)); }
if($Language == 'fr'){
  $l_selectuser=&quot;l'utilisateur selectionné est : &quot;;
  $l_userisnotselect=&quot;Veuillez selectionner un utilisateur.&quot;;
  $l_isadmin = &quot;7j/7 24h/24&quot;;
  $l_valide = &quot;Enregistrer&quot;;
  $to = &quot; à &quot; ;
  $and = &quot; et &quot; ;
  $l_select = &quot;Sélectionner&quot;;
  $l_info1 = &quot;08h00 à 24h00 ou 08h00 à 12h00 et 14h00 à 24h00&quot;;
  $week = array( &quot;lundi&quot;,&quot;mardi&quot;,&quot;mercredi&quot;,&quot;jeudi&quot;,&quot;vendredi&quot;,&quot;samedi&quot;,&quot;dimanche&quot;);
}
else {
  $l_userisnotselect=&quot;Veuillez sélectionner un utilisateur.&quot;;
  $l_selectuser=&quot;l'utilisateur sélectionné est : &quot;;
  $l_isadmin = &quot;7j/7 24h/24&quot;;
  $l_valide = &quot;Enregistrer&quot;;
  $l_select = &quot;Select&quot;;
  $to = &quot; to &quot; ;
  $and = &quot; and &quot; ;
  $l_info1 = &quot;08h00 à 24h00 ou 08h00 à 12h00 et 14h00 à 24h00&quot;;
  $week = array( &quot;lundi&quot;,&quot;mardi&quot;,&quot;mercredi&quot;,&quot;jeudi&quot;,&quot;vendredi&quot;,&quot;samedi&quot;,&quot;dimanche&quot;);
}
if (isset($_POST['selectuser'])){ $selectuser=$_POST['selectuser']; }


### on lit est on interprète le fichier CTparental.conf
echo &quot;&lt;TABLE width='100%' border=0 cellspacing=0 cellpadding=0&gt;&quot;;
exec (&quot;/usr/local/bin/CTparental.sh -listusers 2&gt; /dev/null&quot;,$USERSPC); # récupération des utilisateurs du poste.(UID &gt;= 1000)
echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;select name=\&quot;selectuser\&quot;&gt;&quot;;
	if ($selectuser){echo &quot;&lt;option value=\&quot;$selectuser\&quot;&gt;$selectuser\n&quot;; }
        else {echo &quot;&lt;option value=\&quot;\&quot;&gt;\n&quot;; }
	foreach ($USERSPC as $USERSELECT){echo &quot;&lt;option value=\&quot;$USERSELECT\&quot;&gt;$USERSELECT\n&quot;;}
	echo &quot; &lt;/select&gt;&quot;;
echo &quot;&lt;input type=\&quot;submit\&quot; value=\&quot;$l_select\&quot;&gt;&quot;;
echo &quot;&lt;/FORM&gt;&quot;;
if (isset($selectuser)) {
	echo &quot;&lt;/TABLE&gt;&quot;;
	echo &quot;&lt;TABLE width='400' border=0 cellspacing=0 cellpadding=0&gt;&quot;;
	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_selectuser $selectuser&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
	
	if (is_file ($hconf_file))
		{
		$tab=file($hconf_file);
		if ($tab)
			{
			foreach ($tab as $line)
				{
		                $field=explode(&quot;=&quot;, $line);
		                	if ( $field[0] == $selectuser ){
				        	$field2=explode(&quot;:&quot;, $field[2]);
						$numday=$field[1];
						$isconfigured=1;
						
		                        	if ( $numday == &quot;admin&quot;) { echo &quot;&lt;tr&gt;&lt;td&gt;$l_isadmin : &lt;/td&gt;&lt;td&gt;&lt;input type='checkbox' name='isadmin' checked&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;}
						elseif ( $numday == &quot;user&quot;) {echo &quot;&lt;tr&gt;&lt;td&gt;$l_isadmin : &lt;/td&gt;&lt;td&gt;&lt;input type='checkbox' name='isadmin' &gt;&lt;/td&gt;&lt;/tr&gt;&quot;;}
						else {
							echo&quot;&lt;tr&gt;&lt;td&gt;$week[$numday]:&lt;/td&gt;&lt;td&gt;&lt;INPUT type=\&quot;text\&quot; size=5 maxlength=5 value=\&quot;$field2[0]\&quot;  name=\&quot;h1$numday\&quot;&gt;&lt;/td&gt;&quot;;
				        	        echo&quot; &lt;td&gt;$to &lt;INPUT type=\&quot;text\&quot; size=5 maxlength=5 value=\&quot;$field2[1]\&quot; name=\&quot;h2$numday\&quot;&gt;&lt;/td&gt;&quot;;
				        	        echo&quot; &lt;td&gt;$and &lt;INPUT type=\&quot;text\&quot; size=5 maxlength=5 value=\&quot;$field2[2]\&quot; name=\&quot;h3$numday\&quot;&gt;&lt;/td&gt;&quot;;	
							echo&quot; &lt;td&gt;$to &lt;INPUT type=\&quot;text\&quot; size=5 maxlength=5 value=\&quot;$field2[3]\&quot; name=\&quot;h4$numday\&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;
						}
								            		
					}
				        
				}
			 	
			}
		
		}
	else { echo &quot;$l_error_open_file $hconf_file&quot;;}

	if (isset($isconfigured)==0){
		echo &quot;&lt;tr&gt;&lt;td&gt;$l_isadmin : &lt;/td&gt;&lt;td&gt;&lt;input type='checkbox' name='isadmin' checked=\&quot;checked\&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;
	}


	echo &quot;&lt;/TABLE&gt;&quot;;
	echo &quot;&lt;input type=hidden name='selectuser' value=\&quot;$selectuser\&quot;&gt;&quot;;
        echo &quot;&lt;input type=hidden name='choix' value=\&quot;MAJ_H\&quot;&gt;&quot;;
	echo &quot;&lt;input type=\&quot;submit\&quot; value=\&quot;$l_valide\&quot;&gt;&quot;;
	echo &quot;&lt;/FORM&gt;&quot;;
}
else { echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_userisnotselect&lt;/H3&gt;&lt;/CENTER&gt;&quot;;}
?&gt;

&lt;/code&gt;
'''bl_categories_help.php'''
&lt;code php&gt;
&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;
&lt;HTML&gt;&lt;!-- written by Rexy --&gt;
&lt;HEAD&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot;&gt;
&lt;?php
$bl_dir=&quot;/usr/local/etc/CTparental/dnsfilter-available/&quot;;
# Choice of language
$Language = 'en';
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
  $Langue = explode(&quot;,&quot;,$_SERVER['HTTP_ACCEPT_LANGUAGE']);
  $Language = strtolower(substr(chop($Langue[0]),0,2)); }
if($Language == 'fr'){
  $l_title = &quot;Catégories de la liste noire&quot;;
  $l_error_open_file=&quot;Erreur d'ouverture du fichier&quot;;
  $l_close=&quot;Fermer&quot;;
  $l_unknown_cat=&quot;Cette catégorie n'est pas décrite&quot;;
  $l_nb_domains=&quot;Nombre de noms de domaine filtrés :&quot;;
  $l_nb_urls=&quot;Nombre d'URL filtrés :&quot;;
  $l_explain_adult=&quot;Sites relatifs à l'érotisme et à la pornographie&quot;;
  $l_explain_agressif=&quot;Sites extrémistes, racistes, antisémites ou incitant à la haine&quot;;
  $l_explain_arjel=&quot;Sites de pari en ligne certifies par l'ARJEL (Autorité de Régulation des Jeux En Ligne)&quot;;
  $l_explain_astrology=&quot;Sites relatifs à l'astrologie&quot;;
  $l_explain_bank=&quot;Sites de banques en ligne&quot;;
  $l_explain_audio_video=&quot;Sites de téléchargement de fichiers audio et vidéo&quot;;
  $l_explain_blog=&quot;Sites d'hébergement de blogs&quot;;
  $l_explain_celebrity=&quot;Sites « people », stars, etc.&quot;;
  $l_explain_chat=&quot;Sites de dialogue en ligne&quot;;
  $l_explain_child=&quot;Sites pour enfants&quot;;
  $l_explain_cleaning=&quot;Sites relatifs à la mise à jour logicielle ou antivirale&quot;;
  $l_explain_dangerous_material=&quot;Sites relatifs à la création de produits dangereux (explosif, poison, etc.)&quot;;
  $l_explain_dating=&quot;Sites de rencontres en ligne&quot;;
  $l_explain_drogue=&quot;Sites relatifs aux produits stupéfiants&quot;;
  $l_explain_filehosting=&quot;Entrepôts de fichiers  (vidéo, images, son, logiciels, etc.)&quot;;
  $l_explain_financial=&quot;Sites d'informations financières, bourses, etc.&quot;;
  $l_explain_forums=&quot;Sites d'hébergement de forums de discussion&quot;;
  $l_explain_gambling=&quot;Sites de jeux d'argent en ligne (casino, grattage virtuel, etc.)&quot;;
  $l_explain_games=&quot;Sites de jeux en ligne&quot;;
  $l_explain_hacking=&quot;Sites relatifs au piratage informatique&quot;;
  $l_explain_jobsearch=&quot;Sites de recherche d'emplois&quot;;
  $l_explain_liste_bu=&quot;Liste de sites éducatifs pour bibliothèque&quot;;
  $l_explain_malware=&quot;Site relatifs au logiciels malveillants (virus, vers, trojans, etc.)&quot;;
  $l_explain_manga=&quot;Site de Mangas&quot;;
  $l_explain_marketingware=&quot;Sites marchands douteux (X, organes, enfants, etc.)&quot;;
  $l_explain_mixed_adult=&quot;Sites pour adultes (image-choc, gore, guerre, etc.)&quot;;
  $l_explain_mobile_phone=&quot;Sites relatifs aux mobiles GSM (sonneries, logos, etc.)&quot;;
  $l_explain_ossi=&quot;Noms de domaine et URLs que vous ajoutez à la liste noire (voir ci-dessous)&quot;;
  $l_explain_phishing=&quot;Sites relatifs à l'hammeçonnage (pièges bancaires, redirection, etc.)&quot;;
  $l_explain_press=&quot;Sites de presse&quot;;
  $l_explain_publicite=&quot;Sites ou bannières publicitaires&quot;;
  $l_explain_radio=&quot;Sites de radios en ligne ou de podcast&quot;;
  $l_explain_reaffected=&quot;Sites connus ayant changé de propriétaire (et donc de contenu)&quot;;
  $l_explain_redirector=&quot;Sites de redirection, d'anonymisation ou de contournement&quot;;
  $l_explain_remote_control=&quot;Sites permettant la prise de controle a distance&quot;;
  $l_explain_sect=&quot;Sites sectaires&quot;;
  $l_explain_social_networks=&quot;Sites de réseaux sociaux&quot;;
  $l_explain_sexual_education=&quot;Sites relatifs à l'éducation sexuelle&quot;;
  $l_explain_shopping=&quot;Sites de vente et d'achat en ligne&quot;;
  $l_explain_sport=&quot;Sites de sport&quot;;
  $l_explain_strict_redirector=&quot;URL intentionnellement mal formées&quot;;
  $l_explain_strong_redirector=&quot;URL mal formées dans une requête « google »&quot;;
  $l_explain_tricheur=&quot;Sites relatifs aux tricheries (examens, concours, etc.)&quot;;
  $l_explain_webmail=&quot;Site WEB permettant de consultation son courrier électronique&quot;;
  $l_explain_warez=&quot;Sites relatifs aux logiciels piratés (crackés), aux générateurs de clés, etc.&quot;;
}
else {
  $l_title = &quot;Blacklist categories&quot;;
  $l_error_open_file=&quot;Error opening the file&quot;;
  $l_close=&quot;Close&quot;;
  $l_unknown_cat=&quot;This category isn't describe&quot;;
  $l_nb_domains=&quot;Number of filtered domain names :&quot;;
  $l_nb_urls=&quot;Number of filtered URL :&quot;;
  $l_explain_adult=&quot;Sites related to eroticism and pornography&quot;;
  $l_explain_agressif=&quot;Sites extremist, racist, anti-Semitic or hate&quot;;
  $l_explain_arjel=&quot;Online gambling sites allowed by the french authority 'ARJEL' (Autorité de Régulation des Jeux En Ligne)&quot;;
  $l_explain_astrology=&quot;Sites related to astrology&quot;;
  $l_explain_audio_video=&quot;Sites for downloading audio and video&quot;;
  $l_explain_bank=&quot;Online bank sites&quot;;
  $l_explain_blog=&quot;Sites hosting blogs&quot;;
  $l_explain_celebrity=&quot;Sites « people », stars, etc.&quot;;
  $l_explain_chat=&quot;Online chat sites&quot;;
  $l_explain_child=&quot;Sites for children&quot;;
  $l_explain_cleaning=&quot;Sites related to software update or antiviral&quot;;
  $l_explain_dangerous_material=&quot;Sites related to the creation of dangerous goods (explosives, poison, etc.)&quot;;
  $l_explain_dating=&quot;Online dating sites&quot;;
  $l_explain_drogue=&quot;Sites related to narcotic&quot;;
  $l_explain_filehosting=&quot;Warehouses of files (video, images, sound, software, etc.)&quot;;
  $l_explain_financial=&quot;Sites of financial information&quot;;
  $l_explain_forums=&quot;Sites hosting discussion forums&quot;;
  $l_explain_gambling=&quot;Online gambling sites (casino, virtual scratching, etc.)&quot;;
  $l_explain_games=&quot;Online games sites&quot;;
  $l_explain_hacking=&quot;Sites related to hacking&quot;;
  $l_explain_jobsearch=&quot;Job search sites&quot;;
  $l_explain_liste_bu=&quot;List of educational sites for library&quot;;
  $l_explain_malware=&quot;Malware sites (viruses, worms, trojans, etc.).&quot;;
  $l_explain_manga=&quot;Manga site&quot;;
  $l_explain_marketingware=&quot;doubtful commercial sites&quot;;
  $l_explain_mixed_adult=&quot;Adult sites (shock, gore, war, etc.).&quot;;
  $l_explain_mobile_phone=&quot;Sites related to GSM mobile (ringtones, logos, etc.)&quot;;
  $l_explain_ossi=&quot;Domain names and URLs you add to the blacklist (see below)&quot;;
  $l_explain_phishing=&quot;Phishing sites (traps banking, redirect, etc..)&quot;;
  $l_explain_press=&quot;News sites&quot;;
  $l_explain_publicite=&quot;Advertising sites&quot;;
  $l_explain_radio=&quot;Online radio podcast sites&quot;;
  $l_explain_reaffected=&quot;Sites that have changed ownership (and therefore content)&quot;;
  $l_explain_redirector=&quot;redirects, anonymization or bypass sites&quot;;
  $l_explain_remote_control=&quot;Sites for making remote control&quot;;
  $l_explain_sect=&quot;Sectarian sites&quot;;
  $l_explain_social_networks=&quot;Social networks sites&quot;;
  $l_explain_sexual_education=&quot;Sites related to sex education&quot;;
  $l_explain_shopping=&quot;Shopping sites and online shopping&quot;;
  $l_explain_sport=&quot;Sport sites&quot;;
  $l_explain_strict_redirector=&quot;Intentionally malformed URL&quot;;
  $l_explain_strong_redirector=&quot;Malformed URL in a 'google' query&quot;;
  $l_explain_tricheur=&quot;Sites related to cheating (tests, examinations, etc.)&quot;;
  $l_explain_webmail=&quot;Web sites for e-mail consultation&quot;;
  $l_explain_warez=&quot;Sites related to cracked softwares&quot;;
}
if (isset($_GET['cat'])){$categorie=$_GET['cat'];} 
$bl_categorie_domain_file=$bl_dir.$categorie.&quot;.conf&quot;;
if (file_exists($bl_categorie_domain_file))
	$nb_domains=exec (&quot;wc -w $bl_categorie_domain_file|cut -d' ' -f1&quot;);
else
	$nb_domains=$l_error_openfilei.&quot; &quot;.$bl_categorie_domain_file;
if (file_exists($bl_categorie_url_file))
	$nb_urls=exec (&quot;wc -w $bl_categorie_url_file|cut -d' ' -f1&quot;);
else
	$nb_urls=$l_error_openfile.&quot; &quot;.$bl_categorie_url_file;
echo &quot;&lt;TITLE&gt;$l_title&lt;/TITLE&gt;&quot;;
?&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;/CTadmin/css/style.css&quot; type=&quot;text/css&quot;&gt;
&lt;/HEAD&gt;
&lt;body&gt;
&lt;TABLE width=&quot;100%&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
	&lt;tr&gt;&lt;th&gt;&lt;?php echo $categorie ;?&gt;&lt;/th&gt;&lt;/tr&gt;
	&lt;tr bgcolor=&quot;#FFCC66&quot;&gt;&lt;td&gt;&lt;img src=&quot;/images/pix.gif&quot; width=&quot;1&quot; height=&quot;2&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/TABLE&gt;
&lt;TABLE width=&quot;100%&quot; border=1 cellspacing=0 cellpadding=1&gt;
&lt;tr&gt;&lt;td valign=&quot;middle&quot; align=&quot;left&quot;&gt;
&lt;?php
$compat_categorie=strtr($categorie,&quot;-&quot;,&quot;_&quot;);
if (!empty(${'l_explain_'.$compat_categorie}))
	echo &quot;&lt;center&gt;&lt;b&gt;${'l_explain_'.$compat_categorie}&lt;/b&gt;&lt;/center&gt;&quot;;
else echo &quot;$l_unknown_cat&quot;;
echo &quot;&lt;br&gt;$l_nb_domains &lt;b&gt;$nb_domains&lt;/b&gt;&lt;br&gt;&quot;;
?&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/TABLE&gt;
&lt;br&gt;
&lt;center&gt;&lt;a href=&quot;javascript:window.close();&quot;&gt;&lt;b&gt;&lt;?php echo &quot;$l_close&quot;; ?&gt;&lt;/b&gt;&lt;/a&gt;&lt;/center&gt;
&lt;/BODY&gt;
&lt;/HTML&gt;
&lt;/code&gt;
[[Catégorie:Scripts]]</text>
      <sha1>mso31haawt2l6h46al3h7dfxma0dj5r</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5518</id>
      <parentid>5491</parentid>
      <timestamp>2013-12-27T09:25:41Z</timestamp>
      <contributor>
        <username>Hulk</username>
        <id>190</id>
      </contributor>
      <comment>update v 3.80</comment>
      <text xml:space="preserve" bytes="90126">lien sur le [http://www.debian-fr.org/controle-parental-pour-le-pc-debian-de-vos-enfants-t42009.html forum]
'''CTparental.sh'''
&lt;code bash&gt;
#!/bin/bash 
# CTparental.sh
#
# par Guillaume MARSAT
# Corrections orthographiques par Pierre-Edouard TESSIER
# une parti du code est tiré du script alcasar-bl.sh créé par Franck BOUIJOUX et Richard REY
# présent dans le code du projet alcasar en version 2.6.1 ; web page http://www.alcasar.net/
 
# This script is distributed under the Gnu General Public License (GPL)
arg1=${1}
if [ $# -ge 1 ];then
if [ $arg1 != &quot;-listusers&quot; ] ; then
if [ ! $UID -le 499 ]; then # considaire comme root tous les utilisateurs avec un uid inferieur ou egale a 499,ce qui permet a apt-get,urpmi,yum... de lance le scripte sans erreur.
   echo &quot;Il vous faut des droits root pour lancer ce script&quot;
   exit 1
fi
fi
fi


noinstalldep=&quot;0&quot;
nomanuel=&quot;0&quot;
ARGS=($*)
for (( narg=1; narg&lt;=$#; narg++ )) ; do
        case &quot;${ARGS[$narg]}&quot; in
	  -nodep )
	     noinstalldep=&quot;1&quot;
	  ;;
	  -nomanuel )
	     nomanuel=&quot;1&quot;
	  ;;
	  -dirhtml )
	     narg=$(( $narg +1 ))
	     DIRhtmlPersonaliser=${ARGS[$narg]}
	     if [ ! -d $DIRhtmlPersonaliser ];then
		echo &quot;Chemin de répertoire non valide!&quot;
		exit 0
	     fi
	  ;;
	esac
done
pause () {   # fonction pause pour debugage
      MESSAGE=&quot;$*&quot;
      choi=&quot;&quot;
      MESSAGE=${MESSAGE:=&quot;pour continuer appuyez sur une touche :&quot;}
      echo  &quot;$MESSAGE&quot;
      while (true); do
         read choi
         case $choi in
         * )
         break
         ;;
      esac
      done
}
SED=&quot;/bin/sed -i&quot;
DIR_CONF=&quot;/usr/local/etc/CTparental&quot;
FILE_CONF=&quot;$DIR_CONF/CTparental.conf&quot;
FILE_GCTOFFCONF=&quot;$DIR_CONF/GCToff.conf&quot;
FILE_HCOMPT=&quot;$DIR_CONF/CThourscompteur&quot;
FILE_HCONF=&quot;$DIR_CONF/CThours.conf&quot;
if [ ! -f $FILE_CONF ] ; then
mkdir -p $DIR_CONF
mkdir -p /usr/local/share/CTparental/
cat &lt;&lt; EOF &gt; $FILE_CONF
LASTUPDATE=0
DNSMASQ=BLACK
AUTOUPDATE=OFF
HOURSCONNECT=OFF
GCTOFF=OFF
EOF
fi




## imports du plugin de la distributions si il existe
if [ -f $DIR_CONF/dist.conf ];then
	source  $DIR_CONF/dist.conf 
fi

tempDIR=&quot;/tmp/alcasar&quot;
tempDIRRamfs=&quot;/tmp/alcasarRamfs&quot;
if [ ! -d $tempDIRRamfs ] ; then
mkdir $tempDIRRamfs
fi
RougeD=&quot;\033[1;31m&quot;
BleuD=&quot;\033[1;36m&quot;
VertD=&quot;\033[1;32m&quot;
Fcolor=&quot;\033[0m&quot;
GESTIONNAIREDESESSIONS=&quot; login gdm lightdm slim kdm xdm lxdm gdm3 &quot;
FILEPAMTIMECONF=&quot;/etc/security/time.conf&quot;
DIRPAM=&quot;/etc/pam.d/&quot;
DAYS=${DAYS:=&quot;lundi mardi mercredi jeudi vendredi samedi dimanche &quot;}
DAYS=( $DAYS )
DAYSPAM=( Mo Tu We Th Fr Sa Su )
DAYSCRON=( mon tue wed thu fri sat sun )

#### DEPENDANCES par DEFAULT #####
DEPENDANCES=${DEPENDANCES:=&quot; dnsmasq lighttpd php5-cgi libnotify-bin notification-daemon resolvconf &quot;}
#### RESOLVCONF EST PAS PRESENT DANS LA DISTRIBUTION ####
NORESOLVCONF=${NORESOLVCONF:=0}
#### COMMANDES de services par DEFAULT #####
CMDSERVICE=${CMDSERVICE:=&quot;service &quot;}
CRONstart=${CRONstart:=&quot;$CMDSERVICE cron start &quot;}
CRONstop=${CRONstop:=&quot;$CMDSERVICE cron stop &quot;}
CRONrestart=${CRONrestart:=&quot;$CMDSERVICE cron restart &quot;}
LIGHTTPDstart=${LIGHTTPDstart:=&quot;$CMDSERVICE lighttpd start &quot;}
LIGHTTPDstop=${LIGHTTPDstop:=&quot;$CMDSERVICE lighttpd stop &quot;}
LIGHTTPDrestart=${LIGHTTPDrestart:=&quot;$CMDSERVICE lighttpd restart &quot;}
DNSMASQstart=${DNSMASQstart:=&quot;$CMDSERVICE dnsmasq start &quot;}
DNSMASQstop=${DNSMASQstop:=&quot;$CMDSERVICE dnsmasq stop &quot;}
DNSMASQrestart=${DNSMASQrestart:=&quot;$CMDSERVICE dnsmasq restart &quot;}
NWMANAGERstop=${NWMANAGERstop:=&quot;$CMDSERVICE network-manager stop&quot;}
NWMANAGERstart=${NWMANAGERstart:=&quot;$CMDSERVICE network-manager start&quot;}
NWMANAGERrestart=${NWMANAGERrestart:=&quot;$CMDSERVICE network-manager restart&quot;}

#### LOCALISATION du fichier PID lighttpd par default ####
LIGHTTPpidfile=${LIGHTTPpidfile:=&quot;/var/run/lighttpd.pid&quot;}

#### COMMANDES D'ACTIVATION DES SERVICES AU DEMARAGE DU PC ####
ENCRON=${ENCRON:=&quot;&quot;}
ENLIGHTTPD=${ENLIGHTTPD:=&quot;&quot;}
ENDNSMASQ=${ENDNSMASQ:=&quot;&quot;}
ENNWMANAGER=${ENNWMANAGER:=&quot;&quot;}
#### UID MINIMUM pour les UTILISATEUR
UIDMINUSER=${UIDMINUSER:=1000}

DNSMASQCONF=${DNSMASQCONF:=&quot;/etc/dnsmasq.conf&quot;}
MAINCONFHTTPD=${MAINCONFHTTPD:=&quot;/etc/lighttpd/lighttpd.conf&quot;}
DIRCONFENABLEDHTTPD=${DIRCONFENABLEDHTTPD:=&quot;/etc/lighttpd/conf-enabled&quot;}
CTPARENTALCONFHTTPD=${CTPARENTALCONFHTTPD:=&quot;$DIRCONFENABLEDHTTPD/10-CTparental.conf&quot;}
RESOLVCONFMAIN=${RESOLVCONFMAIN:=&quot;/etc/resolvconf&quot;}
RESOLVDNSMASQ=${RESOLVDNSMASQ:=&quot;$RESOLVCONFMAIN/run/interface/lo.dnsmasq&quot;}
RESOLVCONFORDER=${RESOLVCONFORDER:=&quot;$RESOLVCONFMAIN/interface-order&quot;}
DIRHTML=${DIRHTML:=&quot;/var/www/CTparental&quot;}
DIRadminHTML=${DIRadminHTML:=&quot;/var/www/CTadmin&quot;}
PASSWORDFILEHTTPD=${PASSWORDFILEHTTPD:=&quot;/etc/lighttpd/lighttpd-htdigest.user&quot;}
REALMADMINHTTPD=${REALMADMINHTTPD:=&quot;interface admin&quot;}
CMDINSTALL=&quot;&quot;
NOXSESSIOND=${NOXSESSIOND:=0}
LOGONDDIR=${LOGONDDIR:=&quot;/etc/X11/Xsession.d&quot;}
if [ ! -d $LOGONDDIR ];then
   mkdir $LOGONDDIR 
fi
STARTUPKDM=${STARTUPKDM:=/etc/kde/kdm/Xsetup}
STARTUPGDM=${STARTUPGDM:=/etc/gdm/PostLogin/Default}
CONFLIGHTDM=${CONFLIGHTDM:=/etc/lightdm/lightdm.conf}
if [ $(cat $CONFLIGHTDM | grep -c ^greeter-setup-script= ) -eq 1 ];then
STARTUPLIGHTDM=$(cat $CONFLIGHTDM | grep ^greeter-setup-script= | cut -d&quot;=&quot; -f2 )
else
STARTUPLIGHTDM=${STARTUPLIGHTDM:=/usr/local/bin/lightdm-greeter-script}
fi


XLOGONSCRIPTE=${XLOGONSCRIPTE:=&quot;$LOGONDDIR/10x11-CTparentalLogin&quot;}
XLOGONSCRIPTEALT=${XLOGONSCRIPTEALT:=&quot;/usr/local/bin/10x11-CTparentalLogin&quot;}
ADDUSERTOGROUP=${ADDUSERTOGROUP:=&quot;gpasswd -a &quot;}
DELUSERTOGROUP=${DELUSERTOGROUP:=&quot;gpasswd -d &quot;}
if [ $(yum help 2&gt; /dev/null | wc -l ) -ge 50 ] ; then
   ## &quot;Distribution basée sur yum exemple redhat, fedora...&quot;
   CMDINSTALL=${CMDINSTALL:=&quot;yum install &quot;}
   CMDREMOVE=${CMDREMOVE:=&quot;yum remove &quot;}
fi
urpmi --help 2&amp;&gt; /dev/null
if [ $? -eq 1 ] ; then
   ## &quot;Distribution basée sur urpmi exemple mandriva...&quot;
   CMDINSTALL=${CMDINSTALL:=&quot;urpmi -a --auto &quot;}
   CMDREMOVE=${CMDREMOVE:=&quot;urpme --auto &quot;}
fi
apt-get -h 2&amp;&gt; /dev/null
if [ $? -eq 0 ] ; then
   ## &quot;Distribution basée sur apt-get exemple debian, ubuntu ...&quot;
   CMDINSTALL=${CMDINSTALL:=&quot;apt-get -y --force-yes install &quot;}
   CMDREMOVE=${CMDREMOVE:=&quot;apt-get -y --force-yes remove --purge &quot;}
fi

if [ $( echo $CMDINSTALL | wc -m ) -eq 1 ] ; then
   echo &quot;Aucun gestionner de paquet connu , n'a été détecté.&quot;
   set -e
   exit 1
fi




interface_WAN=$(ip route | awk '/^default via/{print $5}' | sort -u ) # suppose que la passerelle est la route par default

if [ -f $DIR_CONF/resolv.conf.sav ];then
   DNS1=$(cat $DIR_CONF/resolv.conf.sav | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f1)
   DNS2=$(cat $DIR_CONF/resolv.conf.sav | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f2)
else
   DNS1=$(cat /etc/resolv.conf | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f1)
   DNS2=$(cat /etc/resolv.conf | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f2)
fi

PRIVATE_IP=&quot;127.0.0.10&quot;

FILE_tmp=${FILE_tmp:=&quot;$tempDIRRamfs/filetmp.txt&quot;}
FILE_tmpSizeMax=${FILE_tmpSizeMax:=&quot;128M&quot;}  # 70 Min, Recomend 128M 
LOWRAM=${LOWRAM:=0}
if [ $LOWRAM -eq 0 ] ; then
MFILEtmp=&quot;mount -t tmpfs -o size=$FILE_tmpSizeMax tmpfs $tempDIRRamfs&quot;
UMFILEtmp=&quot;umount $tempDIRRamfs&quot;
else
MFILEtmp=&quot;&quot;
UMFILEtmp=&quot;&quot;
fi
BL_SERVER=&quot;dsi.ut-capitole.fr&quot;
CATEGORIES_ENABLED=&quot;$DIR_CONF/categories-enabled&quot;
BL_CATEGORIES_AVAILABLE=&quot;$DIR_CONF/bl-categories-available&quot;
WL_CATEGORIES_AVAILABLE=&quot;$DIR_CONF/wl-categories-available&quot;
DIR_DNS_FILTER_AVAILABLE=&quot;$DIR_CONF/dnsfilter-available&quot;
DIR_DNS_BLACKLIST_ENABLED=&quot;$DIR_CONF/blacklist-enabled&quot;
DIR_DNS_WHITELIST_ENABLED=&quot;$DIR_CONF/whitelist-enabled&quot;
DNS_FILTER_OSSI=&quot;$DIR_CONF/blacklist-local&quot;
DREAB=&quot;$DIR_CONF/domaine-rehabiliter&quot; 
THISDAYS=$(expr $(date +%Y) \* 365 + $(date +%j))
MAXDAYSFORUPDATE=&quot;7&quot; # update tous les 7 jours
CHEMINCTPARENTLE=$(readlink -f $0)

initblenabled () {
   cat &lt;&lt; EOF &gt; $CATEGORIES_ENABLED
adult
agressif
dangerous_material
dating
drogue
gambling
hacking
malware
marketingware
mixed_adult
phishing
redirector
sect
strict_redirector
strong_redirector
tricheur
warez
ossi   
EOF
         

}

addadminhttpd() {
if [ ! -f $PASSWORDFILEHTTPD ] ; then
    echo -n &gt; $PASSWORDFILEHTTPD   
fi
chown root:$USERHTTPD $PASSWORDFILEHTTPD
chmod 640 $PASSWORDFILEHTTPD
USERADMINHTTPD=${1}
pass=${2}
hash=`echo -n &quot;$USERADMINHTTPD:$REALMADMINHTTPD:$pass&quot; | md5sum | cut -b -32`
ligne=$(echo &quot;$USERADMINHTTPD:$REALMADMINHTTPD:$hash&quot;)
$SED &quot;/^$USERADMINHTTPD:$REALMADMINHTTPD.*/d&quot; $PASSWORDFILEHTTPD
echo $ligne &gt;&gt; $PASSWORDFILEHTTPD
}

download() {
   rm -rf $tempDIR
   mkdir $tempDIR
   wget -P $tempDIR http://$BL_SERVER/blacklists/download/blacklists.tar.gz 2&gt;&amp;1 | cat
   if [ ! $? -eq 0 ]; then
      echo &quot;erreur lors du téléchargement, processus interrompu&quot;
      rm -rf $tempDIR
      set -e
      exit 1
   fi
   tar -xzf $tempDIR/blacklists.tar.gz -C $tempDIR
   if [ ! $? -eq 0 ]; then
      echo &quot;erreur d'extraction de l'archive, processus interrompu&quot;
      set -e
      exit 1
   fi
   rm -rf $DIR_DNS_FILTER_AVAILABLE/
   mkdir $DIR_DNS_FILTER_AVAILABLE
}
autoupdate() {
        LASTUPDATEDAY=`grep LASTUPDATE= $FILE_CONF | cut -d&quot;=&quot; -f2`
        LASTUPDATEDAY=${LASTUPDATEDAY:=0}
        DIFFDAY=$(expr $THISDAYS - $LASTUPDATEDAY)
	if [ $DIFFDAY -ge $MAXDAYSFORUPDATE ] ; then
		download
		adapt
		catChoice
		dnsmasqon
                $SED &quot;s?^LASTUPDATE.*?LASTUPDATE=$THISDAYS=`date +%d-%m-%Y\ %T`?g&quot; $FILE_CONF
		exit 0
	fi
}
autoupdateon() {
$SED &quot;s?^AUTOUPDATE.*?AUTOUPDATE=ON?g&quot; $FILE_CONF
echo &quot;*/10 * * * * root $CHEMINCTPARENTLE -aup&quot; &gt; /etc/cron.d/CTparental-autoupdate
$CRONrestart
}

autoupdateoff() {
$SED &quot;s?^AUTOUPDATE.*?AUTOUPDATE=OFF?g&quot; $FILE_CONF
rm -f /etc/cron.d/CTparental-autoupdate
$CRONrestart
}
adapt() {
   echo adapt
   date +%H:%M:%S
   dnsmasqoff
   $MFILEtmp
   if [ ! -f $DNS_FILTER_OSSI ] ; then
            echo &gt; $DNS_FILTER_OSSI
   fi

   if [ -d $tempDIR  ] ; then
	  CATEGORIES_AVAILABLE=$tempDIR/categories_available
	  ls -FR $tempDIR/blacklists | grep '/$' | sed -e &quot;s/\///g&quot; &gt; $CATEGORIES_AVAILABLE
          echo -n &gt; $BL_CATEGORIES_AVAILABLE
          echo -n &gt; $WL_CATEGORIES_AVAILABLE
          if [ ! -f $DIR_DNS_FILTER_AVAILABLE/ossi.conf ] ; then
		echo &gt; $DIR_DNS_FILTER_AVAILABLE/ossi.conf
	  fi
	  for categorie in `cat $CATEGORIES_AVAILABLE` # creation des deux fichiers de categories (BL / WL)
	  do
		if [ -e $tempDIR/blacklists/$categorie/usage ]
		then
			is_whitelist=`grep white $tempDIR/blacklists/$categorie/usage|wc -l`
		else
			is_whitelist=0 # ou si le fichier 'usage' n'existe pas, on considère que la catégorie est une BL
		fi
		if [ $is_whitelist -eq &quot;0&quot; ]
		then
			echo &quot;$categorie&quot; &gt;&gt; $BL_CATEGORIES_AVAILABLE
		else
			echo &quot;$categorie&quot; &gt;&gt; $WL_CATEGORIES_AVAILABLE
		fi
	   done
         echo -n &quot;Toulouse Black and White List migration process. Please wait : &quot;
         for DOMAINE in `cat  $CATEGORIES_AVAILABLE`  # pour chaque catégorie
         do
            echo -n &quot;.&quot;
            # suppression des @IP, de caractères acccentués et des lignes commentées ou vide
            cp -f $tempDIR/blacklists/$DOMAINE/domains $FILE_tmp
            $SED -r '/([0-9]{1,3}\.){3}[0-9]{1,3}/d' $FILE_tmp
	    $SED &quot;/[äâëêïîöôüû]/d&quot; $FILE_tmp
	    $SED &quot;/^#.*/d&quot; $FILE_tmp
            $SED &quot;/^$/d&quot; $FILE_tmp
            $SED &quot;s/\.\{2,10\}/\./g&quot; $FILE_tmp # supprime les suite de &quot;.&quot; exemple: address=/fucking-big-tits..com/127.0.0.10 devient address=/fucking-big-tits.com/127.0.0.10
	    is_blacklist=`grep $DOMAINE $BL_CATEGORIES_AVAILABLE |wc -l`
	    if [ $is_blacklist -ge &quot;1&quot; ] ; then
            	$SED &quot;s?.*?address=/&amp;/$PRIVATE_IP?g&quot; $FILE_tmp  # Mise en forme dnsmasq des listes noires
		mv $FILE_tmp $DIR_DNS_FILTER_AVAILABLE/$DOMAINE.conf  
            else
		$SED &quot;s?.*?server=/&amp;/#?g&quot; $FILE_tmp  # Mise en forme dnsmasq des listes blanches
		mv $FILE_tmp $DIR_DNS_FILTER_AVAILABLE/$DOMAINE.conf
            fi
         done
   else
         mkdir   $tempDIR
         echo -n &quot;.&quot;
 	 # suppression des @IP, de caractères acccentués et des lignes commentées ou vide
         cp -f $DNS_FILTER_OSSI $FILE_tmp
         $SED -r '/([0-9]{1,3}\.){3}[0-9]{1,3}/d' $FILE_tmp
         $SED &quot;/[äâëêïîöôüû]/d&quot; $FILE_tmp 
         $SED &quot;/^#.*/d&quot; $FILE_tmp 
         $SED &quot;/^$/d&quot; $FILE_tmp 
         $SED &quot;s/\.\{2,10\}/\./g&quot; $FILE_tmp # supprime les suite de &quot;.&quot; exemple: address=/fucking-big-tits..com/127.0.0.10 devient address=/fucking-big-tits.com/127.0.0.10
         $SED &quot;s?.*?address=/&amp;/$PRIVATE_IP?g&quot; $FILE_tmp  # Mise en forme dnsmasq
         mv $FILE_tmp $DIR_DNS_FILTER_AVAILABLE/ossi.conf
   fi     
   echo
   $UMFILEtmp
   rm -rf $tempDIR
date +%H:%M:%S
}
catChoice() {
#   echo &quot;catChoice&quot;
   rm -rf $DIR_DNS_BLACKLIST_ENABLED/
   mkdir $DIR_DNS_BLACKLIST_ENABLED
   rm -rf  $DIR_DNS_WHITELIST_ENABLED/
   mkdir  $DIR_DNS_WHITELIST_ENABLED
     
      for CATEGORIE in `cat $CATEGORIES_ENABLED` # on affecte les catégories dnsmasq
      do
	 is_blacklist=`grep $CATEGORIE $BL_CATEGORIES_AVAILABLE |wc -l`
	 if [ $is_blacklist -ge &quot;1&quot; ] ; then
		cp $DIR_DNS_FILTER_AVAILABLE/$CATEGORIE.conf $DIR_DNS_BLACKLIST_ENABLED/
         else
		cp $DIR_DNS_FILTER_AVAILABLE/$CATEGORIE.conf $DIR_DNS_WHITELIST_ENABLED/
     	 fi     
      done
      cp $DIR_DNS_FILTER_AVAILABLE/ossi.conf $DIR_DNS_BLACKLIST_ENABLED/
#      echo &quot;fincatChoice&quot;
      reabdomaine
}

reabdomaine () {
echo reabdomaine
date +%H:%M:%S
$MFILEtmp
if [ ! -f $DREAB ] ; then
cat &lt;&lt; EOF &gt; $DREAB
www.google.com
www.google.fr
EOF
fi
if [ ! -f $DIR_DNS_BLACKLIST_ENABLED/ossi.conf ] ; then
	echo &gt; $DIR_DNS_BLACKLIST_ENABLED/ossi.conf
fi
echo
echo -n &quot;Application de la liste blanche (domaine réhabilité):&quot;
for CATEGORIE in `cat  $CATEGORIES_ENABLED  `  # pour chaque catégorie
do 
	is_blacklist=`grep $CATEGORIE $BL_CATEGORIES_AVAILABLE |wc -l`
	if [ $is_blacklist -ge &quot;1&quot; ] ; then
		echo -n &quot;.&quot;
		for DOMAINE in `cat  $DREAB`
		do
		    cp -f $DIR_DNS_BLACKLIST_ENABLED/$CATEGORIE.conf $FILE_tmp
		    $SED &quot;/$DOMAINE/d&quot; $FILE_tmp
                    cp -f $FILE_tmp $DIR_DNS_BLACKLIST_ENABLED/$CATEGORIE.conf
		done
        fi
done
echo -n &quot;.&quot;
cat $DREAB | sed -e &quot;s? ??g&quot; | sed -e &quot;s?.*?server=/&amp;/#?g&quot; &gt;  $DIR_DNS_WHITELIST_ENABLED/whiteliste.ossi.conf
echo
$UMFILEtmp
rm -f $FILE_tmp
date +%H:%M:%S
}

dnsmasqon () {
   categorie1=`sed -n &quot;1 p&quot; $CATEGORIES_ENABLED` # on considère que si la 1ère categorie activée est un blacklist on fonctionne par blacklist.
   is_blacklist=`grep $categorie1 $BL_CATEGORIES_AVAILABLE |wc -l`
   if [ $is_blacklist -ge &quot;1&quot; ] ; then
   $SED &quot;s?^DNSMASQ.*?DNSMASQ=BLACK?g&quot; $FILE_CONF
   cat &lt;&lt; EOF &gt; $DNSMASQCONF
         # Configuration file for &quot;dnsmasq with blackhole&quot;
   # Inclusion de la blacklist &lt;domains&gt; de Toulouse dans la configuration
   conf-dir=$DIR_DNS_BLACKLIST_ENABLED
   # conf-file=$DIR_DEST_ETC/alcasar-dns-name   # zone de definition de noms DNS locaux
   no-dhcp-interface=$interface_WAN
   bind-interfaces
   cache-size=1024
   domain-needed
   expand-hosts
   bogus-priv
   server=$DNS1
   server=$DNS2
   
EOF
$DNSMASQrestart
else
  dnsmasqwhitelistonly
fi
}
dnsmasqoff () {
   $SED &quot;s?^DNSMASQ.*?DNSMASQ=OFF?g&quot; $FILE_CONF
   cat &lt;&lt; EOF &gt; $DNSMASQCONF
         # Configuration file for &quot;dnsmasq with blackhole&quot;
   # Inclusion de la blacklist &lt;domains&gt; de Toulouse dans la configuration
   # conf-dir=$DIR_DNS_BLACKLIST_ENABLED
   # conf-file=$DIR_DEST_ETC/alcasar-dns-name   # zone de definition de noms DNS locaux
   no-dhcp-interface=$interface_WAN
   bind-interfaces
   cache-size=0
   domain-needed
   expand-hosts
   bogus-priv
   server=$DNS1
   server=$DNS2
   
EOF

$DNSMASQrestart
}
dnsmasqwhitelistonly  () {
   $SED &quot;s?^DNSMASQ.*?DNSMASQ=WHITE?g&quot; $FILE_CONF
   cat &lt;&lt; EOF &gt; $DNSMASQCONF
         # Configuration file for &quot;dnsmasq with blackhole&quot;
   # Inclusion de la blacklist &lt;domains&gt; de Toulouse dans la configuration
   conf-dir=$DIR_DNS_WHITELIST_ENABLED
   # conf-file=$DIR_DEST_ETC/alcasar-dns-name   # zone de definition de noms DNS locaux
   no-dhcp-interface=$interface_WAN
   bind-interfaces
   cache-size=0
   domain-needed
   expand-hosts
   bogus-priv
   server=$DNS1
   server=$DNS2
   address=/#/$PRIVATE_IP #redirige vers $PRIVATE_IP pour tout ce qui n'a pas été resolu dans les listes blanches
EOF

$DNSMASQrestart
}


FoncHTTPDCONF () {
$LIGHTTPDstop
rm -rf $DIRHTML/*
mkdir -v $DIRHTML
if [ ! -z $DIRhtmlPersonaliser ];then
   cp -r $DIRhtmlPersonaliser/* $DIRHTML
else
s=&quot;span&quot;
st=&quot;style&quot;
c=&quot;$c&quot;
cab=&quot;;\&quot;&gt;&quot;

cat &lt;&lt; EOF &gt; $DIRHTML/index.html
 &lt;HTML&gt;
&lt;HEAD&gt;
   &lt;META HTTP-EQUIV=&quot;CONTENT-TYPE&quot; CONTENT=&quot;text/html; charset=utf-8&quot;&gt;
   &lt;TITLE&gt;danger&lt;/TITLE&gt;
&lt;/HEAD&gt;
&lt;BODY LANG=&quot;fr-FR&quot; DIR=&quot;LTR&quot;&gt;
&lt;CENTER&gt;
&lt;img alt=&quot;Site dangereux pour des mineurs&quot;
  HEIGHT=&quot;600&quot;   
  src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKIAAACgCAYAAACPOrcQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz
AAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAuGSURB
VHic7d17jFTlGcfx7zMol7KriRpF3Sii3FyooE1EWuNaFrFeWjXWqEBCmyYtrSa2iX9g+wcx9RZN
kya29i+1ETWKMSZI1AiClyI2KiJyFa8BBC9EuyAXhad/vDO7s8PszpyZc857zrzPJ9nsZvac931g
fnnf2Zlz3ldUFVNBZCQwDhhf/H480A60Fb+X/9xWPGsP0FP2vfznr4AtwGZgC6p70/qn5IUEHUSR
EcAFwGRc6Epfpybc83ZcKEtf64DXUd2XcL+ZFVYQRYYB04CLi1/TgKFea+pzEFgNrCh+rUb1gN+S
0tP6QRQ5B7gSF7zpwHC/BdVtP7AKF8olqK71XE+iWjOIIh3AjcBcYJLnauLyHvAI8Biq23wXE7fW
CaJIO3AtMAfoAgpe60nOYWAlsAh4CtUev+XEI/9BdFPvrcA1wAjP1aRtH/A0cG/ep+78BlFkOnAb
cLnvUjJiKXAnqqt8F9KI/AVRZBawALjIdykZ9TJwF6ov+C4kivwEUeQq4C/Aeb5LyYm3gL+i+ozv
QuqR/SCKTADuB2b4LiWnlgM3obrJdyGDye5fliIjEbkbeBcLYTNmAO8icnfxo8tMyuaIKPJL4G9A
h+9SWsw24E+oLvZdSKVsBVHkLOABoNt3KS1uGTAf1a2+CynJztQsMhtYg4UwDd3AGkTm+C6kxH8Q
RX6AyIO4Twraah1uYtMGPILIw1l47eh3ahaZDDwBTPRXhMFdinY9qu/4KsDfiCjyW+C/WAizYDyw
GpGbfBWQ/ogoMhR4EJidbsemTouBuWlfC5luEEWOwX1Ib+8LZtsrwM9R/SatDtMLosgo4DlgSjod
miatAy5FdUcanaXzGlFkHPA6FsI8mQysKn7EmrjkgyhyPvAfYHTifZm4nQ68hsi0pDtKNogi3cBL
wAmJ9mOSdDywvPhcJia514huJFwOeH+z1MRiLzAD1TeSaDyZIIqcDbwKHBd/48aj3cCFqG6Iu+H4
gyhyOu41YdI3qRs/tgM/RvWTOBuN9zWiyInAi1gIW9mpwIvF5zo28QXRvVn9PDA2tjZNVo0Fni8+
57GIJ4giAjwJTI2lPZMHU4Eni8990+IaEf8MzIqpLZMfs3DPfdOa/2NFpAt3xe+QGOox+XMI6EZ1
ZTONNBdEkZOAd4BRzRRhcm8nMAXVXY020PjULFIAHsdCaFwGHi9moiHNvEZciFvqzRhwWVjY6MmN
Tc0iF+JWpPJ/z4vJksNAF6qvRj0xehBFjsbdbdcZtTMThPXAVFS/i3JSIyPaH7EQmoF14jISSbQR
UeQ0YAN2RY0Z3F7gbFQ/rfeEqCPi37EQmtpG4rJSt/pHRJHLgWej12QCdgWqS+s5sL4guv1I1gNn
NFeXCcxHQGc9+8fUOzXPx0JoojsDl52aao+IIsOBD4GTmy7LhOgzYAyq+wc7qJ4R8TdYCE3jTsZl
aFCDj4hueZAPsAUzTXO2AWeienCgA2qNiPOwEJrmdeCyNKCBR0SRo4D3sRvjTTw+Bsai+n21Xw42
Is7BQmjiMxqXqaoGC+IfYi/FhG7ATFWfmkU6cbthGhO3Saiur3xwoBFxXrK1mIDNq/bgkSOiyBDc
n9t2C4BJwk6gA9VD5Q9WGxEvxUJokjMKl7F+qgVxXuKlmNDNq3yg/9QschywAxiWWkkmRAeAU1Dd
XXqgckT8BRZCk7xhuKz1qgyirfZv0tIva5VT83bglJQLMmHagWrv8oV9QXSrx2+M3Nwtt8Dw4XEV
Z/Jm1y546KFGz55Y2tC8PIjzgX9Gburrr+HYYxstxOTd2rUwpeFdS36P6gPQ/zXiT5suyphoejPn
gugWW+zyVIwJV1dpoc/SiPhDbC8Uk74TcNnrDeK5/moxgTsX+oKYyn5rxlQxASyIxr9+QbRd5I0v
EwEKxVtGx3guxoRrDCJDC8BZ2I4Axp8hwFkFbFo2/k0sAON9V2GCN74AxLq5nzENOLEAtPuuwgSv
3YJosqC9ALT5rsIEr81GRJMFNjWbTLCp2WSCTc0mE9ptU0eTCQWgx3cRJng9BWCP7ypM8PbYiGiy
oMeCaLLApmaTCTY1m0ywqdlkQk8B+Nx3FSZ4nxeAzb6rMMHbXKCRpeiMidfGArAVOFTrSGMScgjY
WihuXfqh72pMsD5E9WDpogebno0vG6FvyZFNHgsxYdsEFkTjX78gvu2xEBO2t6EviO8CX/qrxQTq
S1z2ikF0Wwus9FePCdTKYvb67SrwkqdiTLh6M1cexBUeCjFh681cXxDdDkA7fFRjgrSjtOsUwFEV
v1wBzI7U3IIFMMw2NA3WF180ema/GbhyU8hfAQ82XJQx9fs1qr2b+NnG4caHGhuHu18sSbkoE54l
5SGEIzcOB3g4nVpMwB6ufKD/1AwgMgTYBoxKpSQTmp1AB6r9roE9ckR0ByxKqSgTnkWVIYRqIyKA
SCfwXgpFmfBMQnV95YPVVwNzB76ZdEUmOG9WCyEMFETnHwkVY8I1YKaqT80AIkcB7wOjEynJhOZj
YCyq31f75cAjojvhrmRqMgG6a6AQwmAjIlDcufQDoCP+ukxAtgFnFu8YrWrwpYvdiffEXJQJzz2D
hRBqjYgAIsNx9z2fHF9dJiCfAWNQ3T/YQbUXc3cN3BdTUSY899UKIdQzIgKIjADWA2c0X5cJyEdA
J6r7ah1Y3/YWrqGbmyzKhOfmekII9QYRQHUp8EyjFZngPFPMTF3qm5p7j5bTgA3AyOh1mYDsBc5G
9dN6T4i285Rr+PaIRZnw3B4lhBB1RAQQORpYA3RGO9EEYj0wFdXvopwUfS8+18F84HDkc02rOwzM
jxpCaCSIAKqvAnc0dK5pZXcUsxFZ9Km590wpAMuAixtrwLSYFUA3qg3NlI0HEUDkJOAd7P6W0O0E
pqC6q9EGmtuv2XV8A7YYfMgOATc0E0JoNogAqiuBhU23Y/JqYTEDTWluau5tRQR4DpjVfGMmR14A
fkYMIYoniAAix+AW+5waT4Mm49YAXaj+L47G4gsigMiJwGvA2PgaNRn0PvATVGPbx7H514jlXGEz
ge2xtmuyZDswM84QQtxBBFD9BLgE2F3rUJM7u4FLis9xrOIPIoDqBuAy3FUYpjXsBS4rPrexSyaI
AKpvAFcB3ybWh0nLt8BVxec0EfH+sVK1BzkfeBY4IdmOTEK+Aq5AdXWSnSQfRACRcbj3nEYn35mJ
0SfApeWLricluam5nOoW4ALc59ImH9YB09MIIaQVRADVncBFwPLU+jSNegW4ENXUtjtJL4hA8V34
y4BHU+3XRLEY9xbNN2l2mm4QwS1jojoH+B1Q88Zrk5oDuNs/r0P1QNqdp/PHyoC9y2TgCWCivyIM
sBm4HlVvr+HTHxHLqa4DfgQ8VOtQk5h/A+f5DCH4HhHLicwG/gW0+S4lEHtwNzplYuF+vyNiOdVH
cZeQLfNdSgCW4W75zEQIIUtBBFDdiupM4Drc4o4mXtuA61CdiepW38WUy1YQS1QXAxNwi4RGvkfW
HOE73P/lhOL/beZk5zXiQEQmAPcDM3yXklPLgZvS+oSkUdkcEcupbkK1G7gaeMt3OTnyFnA1qt1Z
DyHkYUSsJDILWID7uNAc6WXcCv4v+C4kivwFsURkOnAbcLnvUjJiKXAnqqt8F9KI/AaxROQc4Fbg
GmCE52rStg94GrgX1bW+i2lG/oNYItIOXAvMAbrIw+vfxhzG3ba7CHgK1R6/5cSjdYJYTqQDuBGY
C0zyXE1c3gMeAR5DteXeY23NIJZzU/eVuFXLpgPD/RZUt/3AKtwqW0vyPvXW0vpBLCcyDJiGC+XF
xZ+Heq2pz0FgNS54K4DVPi7H8iWsIFZy+8dcAEwGxpd9nZpwz9txl16VvtYBr9e7FUQrCjuIAxEZ
CYzDhXIccDzQjrsyqL3i59LVQnuAnrLv5T9/BWzBhW4Lqna/d4X/A/bydTBs1YRqAAAAAElFTkSu
QmCC&quot; /&gt;
&lt;/CENTER&gt;
&lt;/BODY&gt;
&lt;/HTML&gt;
EOF

fi
## GENERATION

ln -s  $DIRHTML/index.html $DIRHTML/err404.html
USERHTTPD=$(cat /etc/passwd | grep /var/www | cut -d&quot;:&quot; -f1)
GROUPHTTPD=$(cat /etc/group | grep $USERHTTPD | cut -d&quot;:&quot; -f1)
chmod 644 $FILE_CONF
chown root:$GROUPHTTPD $FILE_CONF
cat &lt;&lt; EOF &gt; $MAINCONFHTTPD
server.modules = (
&quot;mod_access&quot;,
&quot;mod_alias&quot;,
&quot;mod_redirect&quot;,
&quot;mod_auth&quot;,	#pour interface admin
&quot;mod_fastcgi&quot;,  #pour interface admin (activation du php)
)
auth.debug                 = 0
auth.backend               = &quot;htdigest&quot; 
auth.backend.htdigest.userfile = &quot;$PASSWORDFILEHTTPD&quot; 

server.document-root = &quot;/var/www&quot;
server.upload-dirs = ( &quot;/var/cache/lighttpd/uploads&quot; )
server.errorlog = &quot;/var/log/lighttpd/error.log&quot;
server.pid-file = &quot;$LIGHTTPpidfile&quot;
server.username = &quot;$USERHTTPD&quot;
server.groupname = &quot;$GROUPHTTPD&quot;
server.port = 80
server.bind = &quot;127.0.0.1&quot;


index-file.names = ( &quot;index.php&quot;, &quot;index.html&quot; )
url.access-deny = ( &quot;~&quot;, &quot;.inc&quot; )
static-file.exclude-extensions = (&quot;.php&quot;, &quot;.pl&quot;, &quot;.fcgi&quot; )

server.tag = &quot;&quot;

include_shell &quot;/usr/share/lighttpd/create-mime.assign.pl&quot;
include_shell &quot;/usr/share/lighttpd/include-conf-enabled.pl&quot;
EOF

mkdir -p /usr/share/lighttpd/

if [ ! -f /usr/share/lighttpd/create-mime.assign.pl ];then
cat &lt;&lt; EOF &gt; /usr/share/lighttpd/create-mime.assign.pl
#!/usr/bin/perl -w
use strict;
open MIMETYPES, &quot;/etc/mime.types&quot; or exit;
print &quot;mimetype.assign = (\n&quot;;
my %extensions;
while(&lt;MIMETYPES&gt;) {
  chomp;
  s/\#.*//;
  next if /^\w*$/;
  if(/^([a-z0-9\/+-.]+)\s+((?:[a-z0-9.+-]+[ ]?)+)$/) {
    foreach(split / /, \$2) {
      # mime.types can have same extension for different
      # mime types
      next if \$extensions{\$_};
      \$extensions{\$_} = 1;
      print &quot;\&quot;.\$_\&quot; =&gt; \&quot;\$1\&quot;,\n&quot;;
    }
  }
}
print &quot;)\n&quot;;
EOF
chmod +x /usr/share/lighttpd/create-mime.assign.pl
fi


if [ ! -f /usr/share/lighttpd/include-conf-enabled.pl ];then
cat &lt;&lt; EOF &gt; /usr/share/lighttpd/include-conf-enabled.pl
#!/usr/bin/perl -wl

use strict;
use File::Glob ':glob';

my \$confdir = shift || &quot;/etc/lighttpd/&quot;;
my \$enabled = &quot;conf-enabled/*.conf&quot;;

chdir(\$confdir);
my @files = bsd_glob(\$enabled);

for my \$file (@files)
{
        print &quot;include \&quot;\$file\&quot;&quot;;
}
EOF
chmod +x /usr/share/lighttpd/include-conf-enabled.pl 

fi

mkdir -p $DIRCONFENABLEDHTTPD
mkdir -p $DIRadminHTML
cp -rf CTadmin/* $DIRadminHTML/
#if [ $noinstalldep = &quot;1&quot; ]; then
#	addadminhttpd &quot;admin&quot; &quot;admin&quot;
#else
	clear 
	echo &quot;Entrer le login pour l'interface d'administration :&quot;
	while (true); do
		 read loginhttp
		 case $loginhttp in
			 * )
			 echo &quot;login:  $loginhttp&quot; &gt; /root/passwordCTadmin
			 break
			 ;;
		 esac
	done
	clear
	echo &quot;Entrer le mot de passe de $loginhttp :&quot;
	while (true); do
		 read password
		 case $password in
			 * )
			 echo &quot;password: $password&quot; &gt;&gt; /root/passwordCTadmin
		         addadminhttpd &quot;$loginhttp&quot; &quot;$password&quot;
			 break
			 ;;
		 esac
	done
#fi
chmod 700 /root/passwordCTadmin
chown root:root /root/passwordCTadmin
cat &lt;&lt; EOF &gt; $CTPARENTALCONFHTTPD

fastcgi.server = (
    &quot;.php&quot; =&gt; (
      &quot;localhost&quot; =&gt; ( 
        &quot;bin-path&quot; =&gt; &quot;/usr/bin/php-cgi&quot;,
        &quot;socket&quot; =&gt; &quot;/run/lighttpd/php-fastcgi.sock&quot;,
        &quot;max-procs&quot; =&gt; 4, # default value
        &quot;bin-environment&quot; =&gt; (
          &quot;PHP_FCGI_CHILDREN&quot; =&gt; &quot;1&quot;, # default value
        ),
        &quot;broken-scriptfilename&quot; =&gt; &quot;enable&quot;
      ))
)
  fastcgi.map-extensions     = ( &quot;.php3&quot; =&gt; &quot;.php&quot;,
                               &quot;.php4&quot; =&gt; &quot;.php&quot;,
                               &quot;.php5&quot; =&gt; &quot;.php&quot;,
                               &quot;.phps&quot; =&gt; &quot;.php&quot;,
                               &quot;.phtml&quot; =&gt; &quot;.php&quot; )

\$HTTP[&quot;url&quot;] =~ &quot;.*CTadmin.*&quot; {
  auth.require = ( &quot;&quot; =&gt;
                   (
                     &quot;method&quot;  =&gt; &quot;digest&quot;,
                     &quot;realm&quot;   =&gt; &quot;$REALMADMINHTTPD&quot;,
                     &quot;require&quot; =&gt; &quot;user=$USERADMINHTTPD&quot; 
                   )
                 )

}
\$SERVER[&quot;socket&quot;] == &quot;$PRIVATE_IP:80&quot; {
server.document-root = &quot;$DIRHTML&quot;
server.errorfile-prefix = &quot;$DIRHTML/err&quot; 
#ssl.engine = &quot;enable&quot; 
#ssl.pemfile = &quot;/etc/lighttpd/ssl/$PRIVATE_IP.pem&quot; 
}

EOF
chown root:$GROUPHTTPD $DREAB
chmod 660 $DREAB
chown root:$GROUPHTTPD $DNS_FILTER_OSSI
chmod 660 $DNS_FILTER_OSSI
chown root:$GROUPHTTPD $CATEGORIES_ENABLED
chmod 660 $CATEGORIES_ENABLED
chmod 660 /etc/sudoers

sudotest=`grep Defaults:$USERHTTPD /etc/sudoers |wc -l`
if [ $sudotest -ge &quot;1&quot; ] ; then
    $SED &quot;s?^Defaults:$USERHTTPD.*requiretty.*?Defaults:$USERHTTPD     \!requiretty?g&quot; /etc/sudoers
else
    echo &quot;Defaults:$USERHTTPD     !requiretty&quot; &gt;&gt; /etc/sudoers
fi

sudotest=`grep &quot;$USERHTTPD ALL=&quot; /etc/sudoers |wc -l`
if [ $sudotest -ge &quot;1&quot; ] ; then
    $SED &quot;s?^$USERHTTPD.*?$USERHTTPD ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh -gctalist,/usr/local/bin/CTparental.sh -gctulist,/usr/local/bin/CTparental.sh -gcton,/usr/local/bin/CTparental.sh -gctoff,/usr/local/bin/CTparental.sh -tlu,/usr/local/bin/CTparental.sh -trf,/usr/local/bin/CTparental.sh -dble,/usr/local/bin/CTparental.sh -ubl,/usr/local/bin/CTparental.sh -dl,/usr/local/bin/CTparental.sh -on,/usr/local/bin/CTparental.sh -off,/usr/local/bin/CTparental.sh -aupon,/usr/local/bin/CTparental.sh -aupoff?g&quot; /etc/sudoers
else
    echo &quot;$USERHTTPD ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh -gctalist,/usr/local/bin/CTparental.sh -gctulist,/usr/local/bin/CTparental.sh -gcton,/usr/local/bin/CTparental.sh -gctoff,/usr/local/bin/CTparental.sh -tlu,/usr/local/bin/CTparental.sh -trf,/usr/local/bin/CTparental.sh -dble,/usr/local/bin/CTparental.sh -ubl,/usr/local/bin/CTparental.sh -dl,/usr/local/bin/CTparental.sh -on,/usr/local/bin/CTparental.sh -off,/usr/local/bin/CTparental.sh -aupon,/usr/local/bin/CTparental.sh -aupoff&quot; &gt;&gt; /etc/sudoers
fi
	

sudotest=`grep %ctoff /etc/sudoers |wc -l`		
if [ $sudotest -ge &quot;1&quot; ] ; then	
   $SED &quot;s?^%ctoff.*?%ctoff ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh -off,/usr/local/bin/CTparental.sh -on?g&quot; /etc/sudoers
else
   echo &quot;%ctoff ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh -off,/usr/local/bin/CTparental.sh -on&quot;  &gt;&gt; /etc/sudoers
fi
sudotest=`grep &quot;ALL  ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh&quot; /etc/sudoers |wc -l`		
if [ $sudotest -ge &quot;1&quot; ] ; then	
	$SED &quot;s?^ALL  ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh.*?ALL  ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh -on?g&quot; /etc/sudoers
else
	echo &quot;ALL  ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh -on&quot; &gt;&gt; /etc/sudoers
fi
unset sudotest
    
chmod 440 /etc/sudoers
if [ ! -f $FILE_HCONF ] ; then 
	echo &gt; $FILE_HCONF 
fi
chown root:$GROUPHTTPD $FILE_HCONF
chmod 660 $FILE_HCONF
listeusers &gt; $FILE_GCTOFFCONF
chown root:$GROUPHTTPD $FILE_GCTOFFCONF
chmod 660 $FILE_GCTOFFCONF
if [ ! -f $FILE_HCOMPT ] ; then
	echo &quot;date=$(date +%D)&quot; &gt; $FILE_HCOMPT
fi
chown root:$GROUPHTTPD $FILE_HCOMPT
chmod 660 $FILE_HCOMPT

chown -R root:$GROUPHTTPD $DIRHTML
chown -R root:$GROUPHTTPD $DIRadminHTML
$LIGHTTPDstart
test=$?
if [ ! $test -eq 0 ];then
	echo &quot;Erreur au lancement du service lighttpd &quot;
	set -e
	exit 1
fi
}

install () {
	groupadd ctoff
	
	if [ $nomanuel -eq 0 ]; then 
		vim -h 2&amp;&gt; /dev/null
		if [ $? -eq 0 ] ; then
		EDIT=&quot;vim &quot;
		fi
		mono -h 2&amp;&gt; /dev/null
		if [ $? -eq 0 ] ; then
		EDIT=${EDIT:=&quot;mono &quot;}
		fi
		vi -h 2&amp;&gt; /dev/null
		if [ $? -eq 0 ] ; then
		EDIT=${EDIT:=&quot;vi &quot;}
		fi
		if [ -f gpl-3.0.fr.txt ] ; then
			cp -f gpl-3.0.fr.txt /usr/local/share/CTparental/
		fi
		if [ -f gpl-3.0.txt ] ; then
			cp -f gpl-3.0.txt /usr/local/share/CTparental/
		fi
		if [ -f CHANGELOG ] ; then
			cp -f CHANGELOG /usr/local/share/CTparental/
		fi
		if [ -f dist.conf ];then
			cp -f dist.conf /usr/local/share/CTparental/dist.conf.orig
			cp -f dist.conf $DIR_CONF/
		fi
		while (true); do
		$EDIT $DIR_CONF/dist.conf
		clear
		cat $EDIT $DIR_CONF/dist.conf | grep -v -E ^#
		echo &quot;Entrer : S pour continuer avec ces parramêtres .&quot;
		echo &quot;Entrer : Q pour Quiter l'installation.&quot;
		echo &quot;Entrer tous autre choix pour modifier les parramêtres.&quot;
		 read choi
		case $choi in
			 S | s )
				break
			;;
			 Q | q )
				exit
			;;
			esac
		done
			
	fi
	if [ -f $DIR_CONF/dist.conf ];then
		source  $DIR_CONF/dist.conf 
	fi

	if [ -f /etc/NetworkManager/NetworkManager.conf ];then
    		 $SED &quot;s/^dns=dnsmasq/#dns=dnsmasq/g&quot; /etc/NetworkManager/NetworkManager.conf
    		 $NWMANAGERrestart
     		sleep 5
   	fi

      mkdir $tempDIR
      mkdir -p $DIR_CONF
      initblenabled
      cat /etc/resolv.conf &gt; $DIR_CONF/resolv.conf.sav
      if [ $noinstalldep = &quot;0&quot; ]; then
	      $CMDINSTALL $DEPENDANCES
      fi
      if [ ! -f blacklists.tar.gz ]
      then
         download
      else
         tar -xzf blacklists.tar.gz -C $tempDIR
         if [ ! $? -eq 0 ]; then
            echo &quot;Erreur d'extraction de l'archive, processus interrompu&quot;
            uninstall
            set -e
            exit 1
         fi
         rm -rf $DIR_DNS_FILTER_AVAILABLE/
         mkdir $DIR_DNS_FILTER_AVAILABLE
      fi
      adapt
      catChoice
      dnsmasqon
      $SED &quot;s?^LASTUPDATE.*?LASTUPDATE=$THISDAYS=`date +%d-%m-%Y\ %T`?g&quot; $FILE_CONF
      confresolvconf
      FoncHTTPDCONF
      $ENCRON
      $ENLIGHTTPD
      $ENDNSMASQ
      $ENNWMANAGER

      
}

confresolvconf () {
if [ $NORESOLVCONF -eq 1 ] ; then
	chattr -i /etc/resolv.conf
	echo &quot;nameserver 127.0.0.1&quot; &gt; /etc/resolv.conf
	chattr +i /etc/resolv.conf
else 
	echo &quot;nameserver 127.0.0.1&quot; &gt; $RESOLVDNSMASQ
	if [ ! -f $RESOLVCONFORDER ];then
cat &lt;&lt; EOF &gt; $RESOLVCONFORDER
	# interface-order(5)
	lo.inet*
	lo.dnsmasq
	lo.pdnsd
	lo.!(pdns|pdns-recursor)
	lo
	tun*
	tap*
	hso*
	em+([0-9])?[+([0-9]))*
	p+([0-9]p+([0-9])?(_+([0-9]))*
	eth*
	ath*
	wlan*
	ppp*
	*
EOF
	fi
	resolvconf -u
fi
}
updatelistgctoff () {
	## on ajoutes tous les utilisateurs manquant dans la liste
	for PCUSER in `listeusers`
	do
		if [ $(cat $FILE_GCTOFFCONF | sed -e &quot;s/#//g&quot; | grep -c -E &quot;^$PCUSER$&quot;) -eq 0 ];then
			echo $PCUSER &gt;&gt; $FILE_GCTOFFCONF
		fi
	done
	## on suprime tous ceux qui n'existe plus sur le pc.
	for PCUSER in $(cat $FILE_GCTOFFCONF | sed -e &quot;s/#//g&quot; )
	do
		if [ $( listeusers | grep -c -E &quot;^$PCUSER$&quot;) -eq 0 ];then
			$SED &quot;/^$PCUSER$/d&quot; $FILE_GCTOFFCONF
			$SED &quot;/^#$PCUSER$/d&quot; $FILE_GCTOFFCONF
		fi
	done
}
applistegctoff () {
	updatelistgctoff

	$ADDUSERTOGROUP root ctoff 2&gt; /dev/null
	for PCUSER in $(cat $FILE_GCTOFFCONF )
	do
		if [ $(echo $PCUSER | grep -c -v &quot;#&quot;) -eq 1 ];then
			$ADDUSERTOGROUP $PCUSER ctoff 2&gt; /dev/null
		else
			$DELUSERTOGROUP $(echo $PCUSER | sed -e &quot;s/#//g&quot; ) ctoff 2&gt; /dev/null
		fi
	done 
}

activegourpectoff () {
groupadd ctoff
$ADDUSERTOGROUP root ctoff
if [ ! -f $STARTUPGDM ];then
cat &lt;&lt; EOF &gt; $STARTUPGDM
#!/bin/bash

exit 0
EOF
chmod 755 $STARTUPGDM
chown root:root $STARTUPGDM
fi
if [ ! -f $STARTUPLIGHTDM ];then
cat &lt;&lt; EOF &gt; $STARTUPLIGHTDM
#!/bin/bash

exit 0
EOF
chmod 755 $STARTUPLIGHTDM
chown root:root $STARTUPLIGHTDM 
fi 
if [ $NOXSESSIOND -eq 1 ];then
$SED &quot;s?\#greeter-setup-script.*?greeter-setup-script=$STARTUPLIGHTDM?g&quot; $CONFLIGHTDM
$SED &quot;$(grep -n -E &quot;^\#\!/bin/&quot; $STARTUPKDM | cut -d&quot;:&quot; -f1)a$XLOGONSCRIPTEALT &amp;&quot; $STARTUPKDM
$SED &quot;$(grep -n -E &quot;^\#\!/bin/&quot; $STARTUPGDM | cut -d&quot;:&quot; -f1)a$XLOGONSCRIPTEALT &amp;&quot; $STARTUPGDM
$SED &quot;$(grep -n -E &quot;^\#\!/bin/&quot; $STARTUPLIGHTDM | cut -d&quot;:&quot; -f1)a$XLOGONSCRIPTEALT &amp;&quot; $STARTUPLIGHTDM

fi
cat &lt;&lt; EOF &gt; $XLOGONSCRIPTEALT
#!/bin/bash
sleep 10
USERSCONECT=\$(who | awk '//{print \$1}' | sort -u)
childloginon=0
for USERCT in \$USERSCONECT
do      
        if [ \$(groups \$USERCT | grep -v -c ctoff ) -eq 1 ] ;then
        childloginon=1
        fi
done
        if [ \$childloginon -eq 1 ];then
                if [ \$(cat $FILE_CONF | grep -c DNSMASQ=OFF ) -eq 1 ];then
                /usr/local/bin/CTparental.sh -on &gt; /dev/null
                fi
        else
                if [ \$(cat $FILE_CONF | grep -c DNSMASQ=OFF ) -eq 0 ];then
                 /usr/local/bin/CTparental.sh -off &gt; /dev/null
                fi
        fi
EOF

cat &lt;&lt; EOF &gt; $XLOGONSCRIPTE
#!/bin/bash
USERSCONECT=\$(who | awk '//{print \$1}' | sort -u)
childloginon=0
for USERCT in \$USERSCONECT
do
	if [ \$(groups \$USERCT | grep -v -c ctoff ) -eq 1 ] ;then
        childloginon=1
	fi
done
	if [ \$childloginon -eq 1 ];then
		if [ \$(cat $FILE_CONF | grep -c DNSMASQ=OFF ) -eq 1 ];then
		sudo /usr/local/bin/CTparental.sh -on &gt; /dev/null
		fi
	else
		if [ \$(cat $FILE_CONF | grep -c DNSMASQ=OFF ) -eq 0 ];then
		sudo /usr/local/bin/CTparental.sh -off &gt; /dev/null
		fi
	fi
EOF
chown root:root $XLOGONSCRIPTEALT
chmod 755 $XLOGONSCRIPTEALT
chown root:root $XLOGONSCRIPTE
chmod 655 $XLOGONSCRIPTE
$SED &quot;s?^GCTOFF.*?GCTOFF=ON?g&quot; $FILE_CONF
applistegctoff
}

desactivegourpectoff () {
if [ $NOXSESSIOND -eq 1 ];then
$SED &quot;$(echo $XLOGONSCRIPTEALT | sed -e 's|\/|\\/|g' | sed -e 's|\.|\\.|g')/d&quot; $STARTUPLIGHTDM
$SED &quot;$(echo $XLOGONSCRIPTEALT | sed -e 's|\/|\\/|g' | sed -e 's|\.|\\.|g')/d&quot; $STARTUPKDM
$SED &quot;$(echo $XLOGONSCRIPTEALT | sed -e 's|\/|\\/|g' | sed -e 's|\.|\\.|g')/d&quot; $STARTUPGDM
fi
   rm -f $XLOGONSCRIPTEALT
   rm -f $XLOGONSCRIPTE
   groupdel ctoff
$SED &quot;s?^GCTOFF.*?GCTOFF=OFF?g&quot; $FILE_CONF
}

uninstall () {
   desactivegourpectoff
   rm -f /etc/cron.d/CTparental*
   $DNSMASQrestart
   $LIGHTTPDstop
   rm -f /var/www/index.lighttpd.html
   rm -rf $tempDIR
   rm -rf $DIRHTML


   rm -rf /usr/local/share/CTparental
   rm -rf /usr/share/lighttpd/*
   rm -f $CTPARENTALCONFHTTPD
   rm -rf $DIRadminHTML
   if [ $NORESOLVCONF -eq 1 ] ; then
		chattr -i /etc/resolv.conf
		cat $DIR_CONF/resolv.conf.sav &gt; /etc/resolv.conf
		dhclient -r
		dhclient
   else 
	   rm -f $RESOLVDNSMASQ
	   resolvconf -u
   fi
   if [ -f /etc/NetworkManager/NetworkManager.conf ];then
	$SED &quot;s/^#dns=dnsmasq/dns=dnsmasq/g&quot; /etc/NetworkManager/NetworkManager.conf
	$NWMANAGERrestart
  	sleep 5
   fi
   rm -rf $DIR_CONF
   if [ $noinstalldep = &quot;0&quot; ]; then
	   $CMDREMOVE $DEPENDANCES 
   fi
}

choiblenabled () {
echo -n &gt; $CATEGORIES_ENABLED
clear
echo &quot;Voulez-vous filtrer par Blacklist ou Whitelist :&quot;
echo -n &quot; B/W :&quot;
while (true); do
         read choi
         case $choi in
         B | b )
         echo &quot;Vous allez maintenant choisir les \&quot;Black listes\&quot; à appliquer.&quot;
		for CATEGORIE in `cat  $BL_CATEGORIES_AVAILABLE`  # pour chaque catégorie
		do   
		      clear
		      echo &quot;Voulez vous activer la categorie :&quot;
		      echo -n &quot;$CATEGORIE  O/N :&quot;
		      while (true); do
			 read choi
			 case $choi in
			 O | o )
			 echo $CATEGORIE &gt;&gt; $CATEGORIES_ENABLED
			 break
			 ;;
			 N | n )
			 break
			 ;;
		      esac
		      done
		done
         break
         ;;
         W | w )
         echo &quot;Vous allez maintenant choisir les \&quot;White listes\&quot; à appliquer.&quot;
		for CATEGORIE in `cat  $WL_CATEGORIES_AVAILABLE`  # pour chaque catégorie
		do   
		      clear
		      echo &quot;Voulez vous activer la categorie :&quot;
		      echo -n &quot;$CATEGORIE  O/N :&quot;
		      while (true); do
			 read choi
			 case $choi in
			 O | o )
			 echo $CATEGORIE &gt;&gt; $CATEGORIES_ENABLED
			 break
			 ;;
			 N | n )
			 break
			 ;;
		      esac
		      done
		done
         break
         ;;
      esac
done
}


errortime1 () {
clear
echo -e &quot;L'heure de début doit être strictement inférieure a l'heure de fin: $RougeD$input$Fcolor &quot;
echo &quot;exemple: 08h00 à 23h59 ou 08h00 à 12h00 et 14h00 à 23h59&quot;
echo -e -n &quot;$RougeD$PCUSER$Fcolor est autorisé à se connecter le $BleuD${DAYS[$NumDAY]}$Fcolor de :&quot;
}
errortime2 () {
clear
echo -e &quot;Mauvaise syntaxe: $RougeD$input$Fcolor &quot;
echo &quot;exemple: 08h00 à 23h59 ou 08h00 à 12h00 et 14h00 à 23h59&quot;
echo -e -n &quot;$RougeD$PCUSER$Fcolor est autorisé à se connecter le $BleuD${DAYS[$NumDAY]}$Fcolor de :&quot;
}


timecronalert () {
MinAlert=${1} # temp en minute entre l'alerte et l'action
H=$((10#${2}))
M=$((10#${3}))
D=$((10#${4}))
MinTotalAlert=&quot;$(($H*60+$M-$MinAlert))&quot;
if [ $(( $MinTotalAlert &lt; 0 )) -eq 1 ] 
then
	if [ $Numday -eq 0 ] ; then
		D=6
	else
		D=$(( $D -1 ))
	fi
	MinTotalAlert=&quot;$(($(($H + 24))*60+$M-$MinAlert))&quot;
fi
Halert=$(($MinTotalAlert/60))
MAlert=$(($MinTotalAlert - $(( $Halert *60 )) ))
echo &quot;$MAlert $Halert * * ${DAYSCRON[$D]}&quot;
}
updatetimelogin () {
	USERSCONECT=$(who | awk '//{print $1}' | sort -u)
   	if [ $(cat $FILE_HCOMPT | grep -c $(date +%D)) -eq 1 ] ; then
			# on incrément le conteur de temps de connection. pour chaque utilisateur connecter
		for PCUSER in $USERSCONECT
		do
		
			if [ $(cat $FILE_HCONF | grep -c ^$PCUSER=user= ) -eq 1 ] ;then
			   if [ $(cat $FILE_HCOMPT | grep -c ^$PCUSER= ) -eq 0 ] ;then
					echo &quot;$PCUSER=1&quot; &gt;&gt; $FILE_HCOMPT
			   else
					count=$(($(cat $FILE_HCOMPT | grep ^$PCUSER= | cut -d&quot;=&quot; -f2) + 1 ))
					$SED &quot;s?^$PCUSER=.*?$PCUSER=$count?g&quot; $FILE_HCOMPT
					temprest=$(($(cat $FILE_HCONF | grep ^$PCUSER=user= | cut -d &quot;=&quot; -f3 ) - $count ))
					echo $temprest
					# si le compteur de l'usager depace la valeur max autoriser on verrouille le compte et on deconnect l'utilisateur.
					if [ $temprest -le 0 ];then
						/usr/bin/skill -KILL -u$PCUSER
						passwd -l $PCUSER
					else
						if [ $temprest -le 5 ];then
						HOMEPCUSER=$(getent passwd &quot;$PCUSER&quot; | cut -d ':' -f6)
						export HOME=$HOMEPCUSER &amp;&amp; export DISPLAY=:0.0 &amp;&amp; export XAUTHORITY=$HOMEPCUSER/.Xauthority &amp;&amp; sudo -u $PCUSER  /usr/bin/notify-send -u critical &quot;Alerte CTparental&quot; &quot;Votre temps de connection restent est de $temprest minutes &quot;
						fi
					fi
			   fi
			   
			else
			# on efface les ligne relative a cette utilisateur
			$SED &quot;/^$PCUSER$/d&quot; $FILE_HCOMPT
			fi

		done	
	else
		# on réactivent tous les comptes
		for PCUSER in `listeusers`
		do
			passwd -u $PCUSER
		done
		# on remait tous les compteurs a zero.
		echo &quot;date=$(date +%D)&quot; &gt; $FILE_HCOMPT
		
	fi
	
}
activetimelogin () {
   TESTGESTIONNAIRE=&quot;&quot;
   for FILE in `echo $GESTIONNAIREDESESSIONS`
   do
      if [ -f $DIRPAM$FILE ];then
         if [ $(cat $DIRPAM$FILE | grep -c &quot;account required pam_time.so&quot;) -eq 0  ] ; then
            $SED &quot;1i account required pam_time.so&quot;  $DIRPAM$FILE
         fi
         TESTGESTIONNAIRE=$TESTGESTIONNAIRE\ $FILE
      fi
   done
   if [ $( echo $TESTGESTIONNAIRE | wc -m ) -eq 1 ] ; then
      echo &quot;Aucun gestionnaire de session connu n'a été détecté.&quot;
      echo &quot; il est donc impossible d'activer le contrôle horaire des connexions&quot;
      desactivetimelogin
      exit 1
   fi
   
   if [ ! -f $FILEPAMTIMECONF.old ] ; then
   cp $FILEPAMTIMECONF $FILEPAMTIMECONF.old
   fi
   echo &quot;*;*;root;Al0000-2400&quot; &gt; $FILEPAMTIMECONF
   for NumDAY in 0 1 2 3 4 5 6
   do
   echo &quot;PATH=$PATH&quot;  &gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
   done
   for PCUSER in `listeusers`
   do
   HOMEPCUSER=$(getent passwd &quot;$PCUSER&quot; | cut -d ':' -f6)
   $SED &quot;/^$PCUSER=/d&quot; $FILE_HCONF
   echo -e -n &quot;$PCUSER est autorisé a se connecter 7j/7 24h/24 O/N?&quot; 
   choi=&quot;&quot;
   while (true); do
   read choi
        case $choi in
         O | o )
	 alltime=&quot;O&quot;
         echo &quot;$PCUSER=admin=&quot; &gt;&gt; $FILE_HCONF
   	break
         ;;
	 N| n )
         alltime=&quot;N&quot;
         clear
         echo -e &quot;$PCUSER est autorisé a se connecter X minutes par jours&quot; 
         echo -e -n &quot;X (1 a 1440) = &quot; 
         while (true); do
         read choi
         if [ $choi -ge 1 ];then
			if [ $choi -le 1440 ];then
				break
			fi
		 fi	
         echo &quot; X doit prendre un valeur entre 1 et 1440 &quot;
         done
         echo &quot;$PCUSER=user=$choi&quot; &gt;&gt; $FILE_HCONF
		 break
         ;;	
   esac
   done
      HORAIRES=&quot;&quot;
      for NumDAY in 0 1 2 3 4 5 6
         do
	 if [ $alltime = &quot;O&quot; ];then	
		break	
	 fi
	 
         clear
         echo &quot;exemple: 00h00 à 23h59 ou 08h00 à 12h00 et 14h00 à 16h50&quot;
         echo -e -n &quot;$RougeD$PCUSER$Fcolor est autorisé à se connecter le $BleuD${DAYS[$NumDAY]}$Fcolor de :&quot;
         while (true); do
            read choi
            input=$choi
            choi=$(echo $choi | sed -e &quot;s/h//g&quot; | sed -e &quot;s/ //g&quot; | sed -e &quot;s/a/-/g&quot; | sed -e &quot;s/et/:/g&quot; ) # mise en forme de la variable choi pour pam   
               if [ $( echo $choi | grep -E -c &quot;^([0-1][0-9]|2[0-3])[0-5][0-9]-([0-1][0-9]|2[0-3])[0-5][0-9]$|^([0-1][0-9]|2[0-3])[0-5][0-9]-([0-1][0-9]|2[0-3])[0-5][0-9]:([0-1][0-9]|2[0-3])[0-5][0-9]-([0-1][0-9]|2[0-3])[0-5][0-9]$&quot; ) -eq 1 ];then
                  int1=$(echo $choi | cut -d &quot;:&quot; -f1 | cut -d &quot;-&quot; -f1)
                  int2=$(echo $choi | cut -d &quot;:&quot; -f1 | cut -d &quot;-&quot; -f2)
                  int3=$(echo $choi | cut -d &quot;:&quot; -f2 | cut -d &quot;-&quot; -f1)
                  int4=$(echo $choi | cut -d &quot;:&quot; -f2 | cut -d &quot;-&quot; -f2)
                  if [ $int1 -lt $int2 ];then
                     if [ ! $(echo $choi | grep -E -c &quot;:&quot;) -eq 1 ] ; then
                        if [ $NumDAY -eq 6 ] ; then
                           HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1-$int2&quot;
                        else
                           HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1-$int2|&quot;
                        fi
                        m1=$(echo $int1 | sed -e 's/.\{02\}//')
                        h1=$(echo $int1 | sed -e 's/.\{02\}$//') 
                        m2=$(echo $int2 | sed -e 's/.\{02\}//')
                        h2=$(echo $int2 | sed -e 's/.\{02\}$//')
						echo &quot;$PCUSER=$NumDAY=$h1${h}h$m1:$h2${h}h$m2&quot; &gt;&gt; $FILE_HCONF   
                        echo &quot;$m2 $h2 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
			for count in 1 2 3 4 5
			do
                        echo &quot;$(timecronalert $count $h2 $m2 $NumDAY) root export HOME=$HOMEPCUSER &amp;&amp; export DISPLAY=:0.0 &amp;&amp; export XAUTHORITY=$HOMEPCUSER/.Xauthority &amp;&amp; sudo -u $PCUSER  /usr/bin/notify-send -u critical \&quot;Alerte CTparental\&quot; \&quot;fermeture de session dans $count minutes \&quot; &quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
			done
                        break
   
                     else   
                        if [ $int2 -lt $int3 ];then
                           if [ $int3 -lt $int4 ];then
                              if [ $NumDAY -eq 6 ] ; then
                                 HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1-$int2|${DAYSPAM[$NumDAY]}$int3-$int4&quot;
                              else
                                 HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1-$int2|${DAYSPAM[$NumDAY]}$int3-$int4|&quot;
                              fi
                              m1=$(echo $int1 | sed -e 's/.\{02\}//')
                              h1=$(echo $int1 | sed -e 's/.\{02\}$//')   
                              m2=$(echo $int2 | sed -e 's/.\{02\}//')
                              h2=$(echo $int2 | sed -e 's/.\{02\}$//')  
                              m3=$(echo $int3 | sed -e 's/.\{02\}//')
                              h3=$(echo $int3 | sed -e 's/.\{02\}$//')   
                              m4=$(echo $int4 | sed -e 's/.\{02\}//')
                              h4=$(echo $int4 | sed -e 's/.\{02\}$//')   
                              ## minutes heures jourdumoi moi jourdelasemaine utilisateur  commande
							  echo &quot;$PCUSER=$NumDAY=$h1${h}h$m1:$h2${h}h$m2:$h3${h}h$m3:$h4${h}h$m4&quot; &gt;&gt; $FILE_HCONF
                              echo &quot;$m2 $h2 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
			      echo &quot;$m4 $h4 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
			      for count in 1 2 3 4 5
			      do
                              echo &quot;$(timecronalert $count $h2 $m2 $NumDAY) root export HOME=$HOMEPCUSER &amp;&amp; export DISPLAY=:0.0 &amp;&amp; export XAUTHORITY=$HOMEPCUSER/.Xauthority &amp;&amp; sudo -u $PCUSER  /usr/bin/notify-send -u critical \&quot;Alerte CTparental\&quot; \&quot;fermeture de session dans $count minutes \&quot; &quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
                              echo &quot;$(timecronalert $count $h4 $m4 $NumDAY) root export HOME=$HOMEPCUSER &amp;&amp; export DISPLAY=:0.0 &amp;&amp; export XAUTHORITY=$HOMEPCUSER/.Xauthority &amp;&amp; sudo -u $PCUSER  /usr/bin/notify-send -u critical \&quot;Alerte CTparental\&quot; \&quot;fermeture de session dans $count minutes\&quot; &quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
			      done
                             
                              break   
                           else
                              errortime1
                           fi
                        else
                           errortime1
                        fi
                     fi
                  else
                     errortime1
   
                  fi
                       
               else
                  errortime2   
               fi
           
         done
     
        done
     	if [ $alltime = &quot;N&quot; ] ; then
		echo &quot;*;*;$PCUSER;$HORAIRESPAM&quot; &gt;&gt; $FILEPAMTIMECONF
	else
		echo &quot;*;*;$PCUSER;Al0000-2400&quot; &gt;&gt; $FILEPAMTIMECONF
	fi
   done
   
   for NumDAY in 0 1 2 3 4 5 6
   do
      echo &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
   done
   echo &gt;&gt; $FILE_HCONF
echo &quot;PATH=$PATH&quot;  &gt; /etc/cron.d/CTparentalmaxtimelogin
echo &quot;*/1 * * * * root /usr/local/bin/CTparental.sh -uctl&quot; &gt;&gt; /etc/cron.d/CTparentalmaxtimelogin
$SED &quot;s?^HOURSCONNECT.*?HOURSCONNECT=ON?g&quot; $FILE_CONF
$CRONrestart
}

desactivetimelogin () {
for FILE in `echo $GESTIONNAIREDESESSIONS`
do
   $SED &quot;/account required pam_time.so/d&quot; $DIRPAM$FILE
done
cat $FILEPAMTIMECONF.old &gt; $FILEPAMTIMECONF
for NumDAY in 0 1 2 3 4 5 6
do
   rm -f /etc/cron.d/CTparental${DAYS[$NumDAY]}
done
rm -f /etc/cron.d/CTparentalmaxtimelogin
$SED &quot;s?^HOURSCONNECT.*?HOURSCONNECT=OFF?g&quot; $FILE_CONF
for PCUSER in `listeusers`
do
	passwd -u $PCUSER
done
# on remait tous les compteurs a zero.
echo &quot;date=$(date +%D)&quot; &gt; $FILE_HCOMPT
echo &gt; $FILE_HCONF
$CRONrestart
}


listeusers () {
TABUSER=( &quot; $(getent passwd | cut -d&quot;:&quot; -f1,3) &quot; )
for LIGNES in $TABUSER
do
#echo $(echo $LIGNES | cut -d&quot;:&quot; -f2)
if [ $(echo $LIGNES | cut -d&quot;:&quot; -f2) -ge $UIDMINUSER ] ;then
	echo $LIGNES | cut -d&quot;:&quot; -f1
fi
done
}


readTimeFILECONF () {
   TESTGESTIONNAIRE=&quot;&quot;
   for FILE in `echo $GESTIONNAIREDESESSIONS`
   do
      if [ -f $DIRPAM$FILE ];then
         if [ $(cat $DIRPAM$FILE | grep -c &quot;account required pam_time.so&quot;) -eq 0  ] ; then
            $SED &quot;1i account required pam_time.so&quot;  $DIRPAM$FILE
         fi
         TESTGESTIONNAIRE=$TESTGESTIONNAIRE\ $FILE
      fi
   done
   if [ $( echo $TESTGESTIONNAIRE | wc -m ) -eq 1 ] ; then
      echo &quot;Aucun gestionnaire de session connu n'a été détecté.&quot;
      echo &quot; il est donc impossible d'activer le contrôle horaire des connexions&quot;
      desactivetimelogin
      exit 1
   fi
   
   if [ ! -f $FILEPAMTIMECONF.old ] ; then
   cp $FILEPAMTIMECONF $FILEPAMTIMECONF.old
   fi
   echo &quot;*;*;root;Al0000-2400&quot; &gt; $FILEPAMTIMECONF
   for NumDAY in 0 1 2 3 4 5 6
   do
   echo &quot;PATH=$PATH&quot; &gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
   done
   
   for PCUSER in `listeusers`
   do
   HOMEPCUSER=$(getent passwd &quot;$PCUSER&quot; | cut -d ':' -f6)
   HORAIRESPAM=&quot;&quot;
  	userisconfigured=&quot;0&quot;

	while read line
	do
	
			if [ $( echo $line | grep -E -c &quot;^$PCUSER=[0-6]=&quot; ) -eq 1 ] ; then
				echo &quot;$line&quot; 
				NumDAY=$(echo $line | cut -d&quot;=&quot; -f2)
				h1=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f1 | cut -d&quot;h&quot; -f1)
				m1=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f1 | cut -d&quot;h&quot; -f2)
				h2=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f2 | cut -d&quot;h&quot; -f1)
				m2=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f2 | cut -d&quot;h&quot; -f2)
				h3=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f3 | cut -d&quot;h&quot; -f1)
				m3=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f3 | cut -d&quot;h&quot; -f2)
				h4=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f4 | cut -d&quot;h&quot; -f1)
				m4=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f4 | cut -d&quot;h&quot; -f2)
				if [ $(echo -n $h3$m3 | wc -c) -gt 2 ]; then
 					if [ $NumDAY -eq 6 ] ; then
		                        	HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$h1$m1-$h2$m2|${DAYSPAM[$NumDAY]}$h3$m3-$h4$m4&quot;
						
		                      	else
		                        	HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$h1$m1-$h2$m2|${DAYSPAM[$NumDAY]}$h3$m3-$h4$m4|&quot;
		                      	fi
					echo &quot;$m2 $h2 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
					echo &quot;$m4 $h4 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
					for count in 1 2 3 4 5
					do
					echo &quot;$(timecronalert $count $h2 $m2 $NumDAY) root export HOME=$HOMEPCUSER &amp;&amp; export DISPLAY=:0.0 &amp;&amp; export XAUTHORITY=$HOMEPCUSER/.Xauthority &amp;&amp; sudo -u $PCUSER  /usr/bin/notify-send -u critical \&quot;Alerte CTparental\&quot; \&quot;fermeture de session dans $count minutes \&quot; &quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
					echo &quot;$(timecronalert $count $h4 $m4 $NumDAY) root export HOME=$HOMEPCUSER &amp;&amp; export DISPLAY=:0.0 &amp;&amp; export XAUTHORITY=$HOMEPCUSER/.Xauthority &amp;&amp; sudo -u $PCUSER  /usr/bin/notify-send -u critical \&quot;Alerte CTparental\&quot; \&quot;fermeture de session dans $count minutes \&quot; &quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
					userisconfigured=&quot;1&quot;
					done

				else
				        if [ $NumDAY -eq 6 ] ; then
				           HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$h1$m1-$h2$m2&quot;
				        else
				           HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$h1$m1-$h2$m2|&quot;
				        fi
					for count in 1 2 3 4 5
					do
					echo &quot;$(timecronalert $count $h2 $m2 $NumDAY) root export HOME=$HOMEPCUSER &amp;&amp; export DISPLAY=:0.0 &amp;&amp; export XAUTHORITY=$HOMEPCUSER/.Xauthority &amp;&amp; sudo -u $PCUSER  /usr/bin/notify-send -u critical \&quot;Alerte CTparental\&quot; \&quot;fermeture de session dans $count minutes \&quot; &quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
					done
					echo &quot;$m2 $h2 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
					
					userisconfigured=&quot;1&quot;
				fi
			fi
	
	
	done &lt; $FILE_HCONF
	if [ $userisconfigured -eq 1 ] ; then
		echo &quot;*;*;$PCUSER;$HORAIRESPAM&quot; &gt;&gt; $FILEPAMTIMECONF
	else
		echo &quot;*;*;$PCUSER;Al0000-2400&quot; &gt;&gt; $FILEPAMTIMECONF
	fi
   done
echo &quot;PATH=$PATH&quot;  &gt; /etc/cron.d/CTparentalmaxtimelogin  
echo &quot;*/1 * * * * root /usr/local/bin/CTparental.sh -uctl&quot; &gt; /etc/cron.d/CTparentalmaxtimelogin
$SED &quot;s?^HOURSCONNECT.*?HOURSCONNECT=ON?g&quot; $FILE_CONF
$CRONrestart
}



usage=&quot;Usage: CTparental.sh    {-i }|{ -u }|{ -dl }|{ -ubl }|{ -rl }|{ -on }|{ -off }|{ -cble }|{ -dble }
                               |{ -tlo }|{ -tlu }|{ -uhtml }|{ -aupon }|{ -aupoff }|{ -aup } 
-i      =&gt; Installe le contrôle parental sur l'ordinateur (pc de bureau). Peut être utilisé avec
           un paramètre supplémentaire pour indiquer un chemin de sources pour la page web de redirection.
           exemple : CTparental.sh -i -dirhtml /home/toto/html/
           si pas d'option le \&quot;sens interdit\&quot; est utilisé par défaut.
-u      =&gt; désinstalle le contrôle parental de l'ordinateur (pc de bureau)
-dl     =&gt; met à jour le contrôle parental à partir de la blacklist de l'université de Toulouse
-ubl    =&gt; A faire après chaque modification du fichier $DNS_FILTER_OSSI
-rl     =&gt; A faire après chaque modification manuelle du fichier $DREAB
-on     =&gt; Active le contrôle parental
-off    =&gt; Désactive le contrôle parental
-cble   =&gt; Configure le mode de filtrage par liste blanche ou par liste noire (défaut) ainsi que les 
           catégories que l'on veut activer.
-dble   =&gt; Remet les catégories actives par défaut et le filtrage par liste noire.
-tlo    =&gt; Active et paramètre les restrictions horaires de login pour les utilisateurs.
           Compatible avec les gestionnaire de sessions suivant $GESTIONNAIREDESESSIONS .
-tlu    =&gt; Désactive les restrictions horaires de login pour les utilisateurs.
-uhtml  =&gt; met à jour la page de redirection à partir d'un répertoire source ou par défaut avec 
            le \&quot;sens interdit\&quot;.
            exemples:
                     - avec un repertoire source : CTparental.sh -uhtml -dirhtml /home/toto/html/
   		     - par défaut :              CTparental.sh -uhtml
            permet aussi de changer le couple login, mot de passe de l'interface web.
-aupon  =&gt; active la mise à jour automatique de la blacklist de Toulouse (tous les 7 jours).
-aupoff =&gt; désactive la mise à jour automatique de la blacklist de Toulouse.
-aup    =&gt; comme -dl mais seulement si il n'y a pas eu de mise à jour depuis plus de 7 jours.
-nodep  =&gt; si placer aprés -i ou -u permet de ne pas installer/désinstaller les dépendances, utiles si 
            on préfaire les installer a la mains , ou pour le scripte de postinst et prerm 
            du deb.
            exemples:
                     CTparental.sh -i -nodep	
		     CTparental.sh -i -dirhtml /home/toto/html/ -nodep   
		     CTparental.sh -u -nodep 
-nomanuel =&gt; utiliser uniquement pour le scripte de postinst et prerm 
            du deb.
-gcton	  =&gt; créer un group de privilégier ne subisent pas le filtrage.
			 mais ralenti les ouvertures de sessions, quant on passe d'un user restraint a un qui ne l'est pas 
			 est inversement.
			 exemple:CTparental.sh -gctulist
			 editer $FILE_GCTOFFCONF et y commanter tous les utilisateurs que l'on veut filtrer.
			 CTparental.sh -gctalist
			 (note temps qu'un utilisateur non privilégier restera connecter le filtrage sera actif!!)
-gctoff   =&gt; suprime le group de privilégier .
			 tous les utilisateurs du system subisse le filtrages!!
-gctulist =&gt; Mes a jour le fichier de conf du group , $FILE_GCTOFFCONF
			 en fonction des utilisateur ajouter ou suprimer du pc.
-gctalist =&gt; Ajoute/Suprime les utilisateurs dans le group ctoff en fonction du fichier de conf.
	 
 &quot;
case $arg1 in
   -\? | -h* | --h*)
      echo &quot;$usage&quot;
      exit 0
      ;;
   -i | --install )
      install
      exit 0
      ;;
   -u | --uninstall )
      autoupdateoff 
      dnsmasqoff
      desactivetimelogin
      uninstall
      exit 0
      ;;
   -dl | --download )
      download
      adapt
      catChoice
      dnsmasqon
      $SED &quot;s?^LASTUPDATE.*?LASTUPDATE=$THISDAYS=`date +%d-%m-%Y\ %T`?g&quot; $FILE_CONF
      exit 0
      ;;
   -ubl | --updatebl )
      adapt
      catChoice
      dnsmasqon
      exit 0
      ;;
   -uhtml | --updatehtml )
      FoncHTTPDCONF
      exit 0
      ;;
   -rl | --reload )
      catChoice
      dnsmasqon
      exit 0
      ;;
   -on | --on )
      dnsmasqon
      exit 0
      ;;
   -off | --off )
      autoupdateoff 
      dnsmasqoff
      exit 0
      ;;
   -wlo | --whitelistonly )
      dnsmasqwhitelistonly
      exit 0
      ;;
   -cble | --confblenable )
      choiblenabled
      catChoice
      dnsmasqon
      exit 0
      ;;
    -dble | --defaultblenable )
      initblenabled
      catChoice
      dnsmasqon
      ;;
    -tlo | --timeloginon )
      activetimelogin
      ;;
    -tlu | --timeloginon )
      desactivetimelogin
      ;;
    -trf | --timeloginon )
      readTimeFILECONF
      ;;
    -aupon | --autoupdateon )
      autoupdateon
      ;;
    -aupoff | --autoupdateoff )
      autoupdateoff
      ;;
    -aup | --autoupdate )
      autoupdate
      ;;
    -listusers )
      listeusers
      ;;
    -gcton )
      activegourpectoff
      ;;
    -gctoff )
	  desactivegourpectoff
      ;;
    -gctulist )
	  updatelistgctoff
      ;;
    -gctalist )
	  applistegctoff
      ;;
    -uctl )
	  # apelet toute les minute par cron pour activer desactiver les usagers ayant des restrictions de temps journalier de connection.
	  updatetimelogin
      ;;      
      
   *)
      echo &quot;Argument inconnu :$1&quot;;
      echo &quot;$usage&quot;;
      exit 1
      ;;
esac

&lt;/code&gt;
'''index.php'''
&lt;code php&gt;
&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;
&lt;HTML&gt;&lt;!-- written by Rexy --&gt;
&lt;HEAD&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot;&gt;
&lt;TITLE&gt;CTparental DNS filtering&lt;/TITLE&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;/CTadmin/css/style.css&quot; type=&quot;text/css&quot;&gt;
&lt;/HEAD&gt;
&lt;body&gt;
&lt;?php
function form_filter ($form_content)
{
// réencodage iso + format unix + rc fin de ligne (ouf...)
	$list = str_replace(&quot;\r\n&quot;, &quot;\n&quot;, utf8_decode($form_content));
	if (strlen($list) != 0){
		if ($list[strlen($list)-1] != &quot;\n&quot;) { $list[strlen($list)]=&quot;\n&quot;;} ;} ;
	return $list;
}
# Choice of language
$Language = 'en';
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
  $Langue = explode(&quot;,&quot;,$_SERVER['HTTP_ACCEPT_LANGUAGE']);
  $Language = strtolower(substr(chop($Langue[0]),0,2)); }
if($Language == 'fr'){
  $l_switch_LogOFF=&quot;Déconnection&quot;;
  $l_hours_error1=&quot;un mauvais format horaire a été trouvé :exemple 8h30 doit s'écrire 08h30&quot;;
  $l_hours_error2=&quot;incohérence horaire : &quot;;
  $l_hours_on = &quot;Les horaires de connexion sont actuellement activés&quot;;
  $l_hours_off = &quot;Les horaires de connexion sont actuellement désactivés&quot;;
  $l_switch_hours_off = &quot;Désactiver les horaires de connexion&quot;;
  $l_switch_hours_on = &quot;Activer les horaires de connexion&quot;;
  $l_hours1 = &quot;Heures de connexions autorisées&quot;;
  $l_switch_Init_bl = &quot;Init Catégories&quot;;
  $l_auto_update_on = &quot;La mise à jour de la blacklist de Toulouse tous les 7 jours est activée&quot;;
  $l_auto_update_off = &quot;La mise à jour de la blacklist de Toulouse tous les 7 jours est désactivée&quot;;
  $l_switch_auto_update_on = &quot;Activer Maj Auto&quot;;
  $l_switch_auto_update_off = &quot;Désactiver Maj Auto&quot;;
  $l_fmenu_black = &quot;Filtrage par BlackList&quot;;
  $l_fmenu_white = &quot;Filtrage par WhiteList&quot;;
  $l_title1 = &quot;Filtrage de noms de domaine &quot;;
  $l_error_open_file=&quot;Erreur d'ouverture du fichier&quot;;
  $l_dnsfilter_on=&quot;Le filtrage de noms de domaine est actuellement activé&quot;;
  $l_dnsfilter_off=&quot;Le filtrage de noms de domaine est actuellement désactivé&quot;;
  $l_switch_filtering_on=&quot;Activer le filtrage&quot;;
  $l_switch_filtering_off=&quot;Désactiver le filtrage&quot;;
  $l_main_bl=&quot;Liste noire/blanche&quot;;
  $l_bl_version=&quot;Version actuelle :&quot;;
  $l_bl_categories_bl=&quot;Choix des catégories à filtrer&quot;;
  $l_bl_categories_wl=&quot;Choix des catégories à autoriser&quot;;
  $l_download_bl=&quot;Télécharger la dernière version&quot;;
  $l_fingerprint=&quot;L'empreinte numérique du fichier téléchargé est : &quot;;
  $l_fingerprint2=&quot;Vérifiez-là en suivant ce lien (ligne 'blacklists.tar.gz') : &quot;;
  $l_activate_bl=&quot;Activer la nouvelle version&quot;;
  $l_reject_bl=&quot;Rejeter&quot;;
  $l_warning=&quot;Temps estimé : une minute.&quot;;
  $l_specific_filtering=&quot;Filtrage spécial&quot;;
  $l_forbidden_dns=&quot;Noms de domaine filtrés&quot;;
  $l_forbidden_dns_explain=&quot;Entrez un nom de domaine par ligne (exemple : domaine.org)&quot;;
  $l_one_dns=&quot;Entrez un nom de domaine par ligne (exemple : domaine.org)&quot;;
  $l_rehabilitated_dns=&quot;Noms de domaine réhabilités&quot;;
  $l_rehabilitated_dns_explain_bl=&quot;1-Entrez ici des noms de domaine bloqués par la liste noire &lt;BR&gt; que vous souhaitez réhabiliter.&quot;;
  $l_rehabilitated_dns_explain_wl=&quot;2-Entrez ici des noms de domaine autorisés en plus de ceux &lt;BR&gt; de la liste blanche de Toulouse.&quot;;
  $l_add_to_bl=&quot;Noms de domaine ajoutés à la liste noire&quot;;
  $l_record=&quot;Enregistrer les modifications&quot;;
  $l_wait=&quot;Une fois validées, 30 secondes sont nécessaires pour traiter vos modifications&quot;;
  $l_title_gctoff=&quot;Groupe privilégié&quot;;
  $l_gctoff_explain=&quot;Cocher des utilisateurs ne devant pas subir de filtrage&quot;;
  $l_gctoff_username=&quot;Nom d'utilisateur&quot;;
  $l_gctoff_username_comment=&quot;Commentaires&quot;;
  $l_switch_gctoff_on=&quot;Activer le groupe de privilégiés.&quot;;
  $l_switch_gctoff_off=&quot;Désactiver le groupe de privilégiés.&quot;;
  $l_gctoff_on = &quot;Le Groupe privilégié est actuellement activés&quot;;
  $l_gctoff_off = &quot;Le Groupe privilégié est actuellement désactivés&quot;;

}
else {
  $l_switch_LogOFF=&quot;Logout&quot;;
  $l_hours_error1=&quot;Un mauvais format horaire a été trouvé : exemple 8h30 doit s'écrire 08h30&quot;;
  $l_hours_error2=&quot;incohérence horaire : &quot;;
  $l_hours_on = &quot;Les horaires de connexion sont actuellement activés&quot;;
  $l_hours_off = &quot;Les horaires de connexion sont actuellement désactivés&quot;;
  $l_switch_hours_off = &quot;Désactiver les horaires de connexion&quot;;
  $l_switch_hours_on = &quot;Activer les horaires de connexion&quot;;
  $l_hours1 = &quot;Heures de connexions autorisées&quot;;
  $l_switch_Init_bl = &quot;Init Catégories&quot;;
  $l_auto_update_on = &quot;La mise à jour de la blacklist de Toulouse tous les 7 jours est activée&quot;;
  $l_auto_update_off = &quot;La mise à jour de la blacklist de Toulouse tous les 7 jours est désactivée&quot;;
  $l_switch_auto_update_on = &quot;Activer Maj Auto&quot;;
  $l_switch_auto_update_off = &quot;Désactiver Maj Auto&quot;;
  $l_fmenu_black = &quot;Filtrage par BlackList&quot;;
  $l_fmenu_white = &quot;Filtrage par WhiteList&quot;;
  $l_title1 = &quot;Domain names filtering&quot;;
  $l_error_open_file=&quot;Error opening the file&quot;;
  $l_dnsfilter_on=&quot;Actually, the Domain name filter is on&quot;;
  $l_dnsfilter_off=&quot;Actually, the Domain name filter is off&quot;;
  $l_switch_filtering_on=&quot;Switch the Filter on&quot;;
  $l_switch_filtering_off=&quot;Switch the Filter off&quot;;
  $l_main_bl=&quot;Blacklist/Whitelist&quot;;
  $l_bl_version=&quot;Current version : &quot;;
  $l_bl_categories_bl=&quot;Choice of filtered categories&quot;;
  $l_bl_categories_wl=&quot;Choice of authorized categories&quot;;
  $l_download_bl=&quot;Download the last version&quot;;
  $l_fingerprint=&quot;The digital fingerprint of the downloaded blacklist is : &quot;;
  $l_fingerprint2=&quot;Verify it with this link (line 'blacklists.tar.gz') : &quot;;
  $l_activate_bl=&quot;Activate the new version&quot;;
  $l_reject_bl=&quot;Reject&quot;;
  $l_warning=&quot;Estimated time : one minute.&quot;;
  $l_specific_filtering=&quot;Specific filtering&quot;;
  $l_forbidden_dns=&quot;Filtered domain names&quot;;
  $l_forbidden_dns_explain=&quot;Enter one domain name per row (exemple : domain.org)&quot;;
  $l_one_dns=&quot;Enter one domain name per row (example : domain.org)&quot;;
  $l_rehabilitated_dns=&quot;Rehabilitated domain names&quot;;
  $l_rehabilitated_dns_explain_bl=&quot;Enter here domain names that are blocked by the blacklist &lt;BR&gt; and you want to rehabilitate.&quot;;
  $l_rehabilitated_dns_explain_wl=&quot;2-Entrez ici des noms de domaine autorisés en plus de ceux &lt;BR&gt; de la liste blanche de Toulouse.&quot;;
  $l_add_to_bl=&quot;Domain names to add to blacklist&quot;;
  $l_record=&quot;Save changes&quot;;
  $l_wait=&quot;Once validated, 30 seconds is necessary to compute your modifications&quot;;
  $l_title_gctoff=&quot;Groupe privilégié&quot;;
  $l_gctoff_explain=&quot;Cocher des utilisateurs ne devant pas subir de filtrage&quot;;
  $l_gctoff_username=&quot;Username&quot;;
  $l_gctoff_username_comment=&quot;Comments&quot;;
  $l_switch_gctoff_on=&quot;Activer le groupe de privilégiés.&quot;;
  $l_switch_gctoff_off=&quot;Désactiver le groupe de privilégiés.&quot;;
  $l_gctoff_on = &quot;Le Groupe privilégié est actuellement activés&quot;;
  $l_gctoff_off = &quot;Le Groupe privilégié est actuellement désactivés&quot;;

 }
$weeknum = array( 0,1,2,3,4,5,6);
$bl_categories=&quot;/usr/local/etc/CTparental/bl-categories-available&quot;;
$bl_categories_enabled=&quot;/usr/local/etc/CTparental/categories-enabled&quot;;
$conf_file=&quot;/usr/local/etc/CTparental/CTparental.conf&quot;;
$conf_ctoff_file=&quot;/usr/local/etc/CTparental/GCToff.conf&quot;;
$hconf_file=&quot;/usr/local/etc/CTparental/CThours.conf&quot;;
$wl_domains=&quot;/usr/local/etc/CTparental/domaine-rehabiliter&quot;;
$bl_domains=&quot;/usr/local/etc/CTparental/blacklist-local&quot;;
# default values


if (isset($_POST['choix'])){ $choix=$_POST['choix']; } else { $choix=&quot;&quot;; }
switch ($choix)
{
case 'gct_Off' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -gctoff&quot;);
	break;
case 'gct_On' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -gcton&quot;);
	break;
case 'LogOFF' :
	header('HTTP/1.0 401 Unauthorized');
	header('WWW-Authenticate: Digest realm=&quot;interface admin&quot;');
	exit;
	break;
case 'BL_On' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -on&quot;);
	break;
case 'BL_Off' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -off&quot;);
	break;
case 'H_On' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -trf&quot;);
	break;
case 'H_Off' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -tlu&quot;);
	break;
case 'AUP_On' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -aupon&quot;);
	break;
case 'AUP_Off' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -aupoff&quot;);
	break;
case 'INIT_BL' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -dble&quot;);
	break;
case 'Download_bl' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -dl&quot;);
	break;
case 'MAJ_cat' :
	$tab=file($bl_categories_enabled);	
	if ($tab)
		{
		$pointeur=fopen($bl_categories_enabled, &quot;w+&quot;);
		foreach ($_POST as $key =&gt; $value)
			{
                        if (strstr($key,'chk-'))
				{	
				$line=str_replace('chk-','',$key).&quot;\n&quot;;
				fwrite($pointeur,$line);
				}
			}
		fclose($pointeur);
		}
	else {echo &quot;$l_error_open_file $bl_categories_enabled&quot;;}
	$fichier=fopen($bl_domains,&quot;w+&quot;);
	fputs($fichier, form_filter($_POST['OSSI_bl_domains']));
	fclose($fichier);
	unset($_POST['OSSI_bl_domains']);
	$fichier=fopen($wl_domains,&quot;w+&quot;);
	fputs($fichier, form_filter($_POST['OSSI_wl_domains']));
	fclose($fichier);
	unset($_POST['OSSI_wl_domains']);
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -ubl&quot;);
	break;
case 'MAJ_H' :
	$formatheuresok=1;
	if (isset($_POST['selectuser'])){ $selectuser=$_POST['selectuser']; }
	#echo &quot;$selectuser&quot;;
	$tab=file($hconf_file);	
	if ($tab)
	{
		$pointeur=fopen($hconf_file, &quot;w+&quot;);	
		foreach ($tab as $line)
		{
			if (strstr($line,$selectuser) == false)
			{
				fwrite($pointeur,$line); # on reécrit toutes les lignes ne correspondant pas à l'utilisateur sélectionné
			}
	
		}
	}
	else {echo &quot;$l_error_open_file $hconf_file&quot;;}
	if (isset($_POST[&quot;isadmin&quot;])){fwrite($pointeur,&quot;$selectuser=admin=&quot;.&quot;\n&quot;); } 
	else 
	{
		if (isset($_POST[&quot;tmax&quot;])){fwrite($pointeur,&quot;$selectuser=user=&quot;.$_POST[&quot;tmax&quot;].&quot;\n&quot;); }
		else {fwrite($pointeur,&quot;$selectuser=user=1440&quot;.&quot;\n&quot;); }
		foreach ($weeknum as $numday)
		{
			$formatheuresok=1;
			if (isset($_POST[&quot;h1$numday&quot;])){ $h1[$numday]=$_POST[&quot;h1$numday&quot;]; } else { $h1[$numday]=&quot;00h00&quot;; }
			if (isset($_POST[&quot;h2$numday&quot;])){ $h2[$numday]=$_POST[&quot;h2$numday&quot;]; } else { $h2[$numday]=&quot;23h59&quot;; }
			if (isset($_POST[&quot;h3$numday&quot;])){ $h3[$numday]=$_POST[&quot;h3$numday&quot;]; } else { $h3[$numday]=&quot;&quot;; }
			if (isset($_POST[&quot;h4$numday&quot;])){ $h4[$numday]=$_POST[&quot;h4$numday&quot;]; } else { $h4[$numday]=&quot;&quot;; }
			if (preg_match(&quot;/^[0-1][0-9]h[0-5][0-9]$|^2[0-3]h[0-5][0-9]$/&quot;,$h1[$numday])!=1){$formatheuresok=0;}
			if (preg_match(&quot;/^[0-1][0-9]h[0-5][0-9]$|^2[0-3]h[0-5][0-9]$/&quot;,$h2[$numday])!=1){$formatheuresok=0;}
			if ($h3[$numday]==&quot;&quot;)
			{	
	
				if ($formatheuresok == 1)
				{
					$t1=explode(&quot;h&quot;, $h1[$numday]);
					$t2=explode(&quot;h&quot;, $h2[$numday]);
					$v1=&quot;$t1[0]$t1[1]&quot;;
					$v2=&quot;$t2[0]$t2[1]&quot;;
					if ( $v1 &lt; $v2)
					{
						fwrite($pointeur,&quot;$selectuser=$numday=$h1[$numday]:$h2[$numday]&quot;.&quot;\n&quot;);
					}
					else
					{
						fwrite($pointeur,&quot;$selectuser=$numday=00h00:23h59&quot;.&quot;\n&quot;);
						echo &quot;&lt;H3&gt;$l_hours_error2 $h1[$numday]&gt;=$h2[$numday]&lt;/H3&gt;&quot;;
					}
				}
				else 
				{
					fwrite($pointeur,&quot;$selectuser=$numday=00h00:23h59&quot;.&quot;\n&quot;);
					echo &quot;&lt;H3&gt;$l_hours_error1&lt;/H3&gt;&quot;;
				}
			}
			else 
			{
				if (preg_match(&quot;/^[0-1][0-9]h[0-5][0-9]$|^2[0-3]h[0-5][0-9]$/&quot;,$h3[$numday])!=1){$formatheuresok=0;}
				if (preg_match(&quot;/^[0-1][0-9]h[0-5][0-9]$|^2[0-3]h[0-5][0-9]$/&quot;,$h4[$numday])!=1){$formatheuresok=0;}
				if ($formatheuresok == 1)
				{
					$t1=explode(&quot;h&quot;, $h1[$numday]);
					$t2=explode(&quot;h&quot;, $h2[$numday]);
					$t3=explode(&quot;h&quot;, $h3[$numday]);
					$t4=explode(&quot;h&quot;, $h4[$numday]);
					$v1=&quot;$t1[0]$t1[1]&quot;;
					$v2=&quot;$t2[0]$t2[1]&quot;;
					$v3=&quot;$t3[0]$t3[1]&quot;;
					$v4=&quot;$t4[0]$t4[1]&quot;;
					if ( $v1 &lt; $v2 &amp;&amp; $v2 &lt; $v3 &amp;&amp; $v3 &lt; $v4)
					{
					fwrite($pointeur,&quot;$selectuser=$numday=$h1[$numday]:$h2[$numday]:$h3[$numday]:$h4[$numday]&quot;.&quot;\n&quot;);
					}
					else
					{
						fwrite($pointeur,&quot;$selectuser=$numday=00h00:23h59&quot;.&quot;\n&quot;);
						echo &quot;&lt;H3&gt;$l_hours_error2 $h1[$numday]&gt;=$h2[$numday]&gt;=$h3[$numday]&gt;=$h4[$numday]&lt;/H3&gt;&quot;;
					}
				}
				else 
				{
					fwrite($pointeur,&quot;$selectuser=$numday=00h00:23h59&quot;.&quot;\n&quot;);
					echo &quot;&lt;H3&gt;$l_hours_error1&lt;/H3&gt;&quot;;
					
				}
			}

		}
	}
	
	fclose($pointeur);
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -trf&quot;);
	break;
	
case 'change_user' :
$tab=file($conf_ctoff_file);
	if ($tab)
		{
		$pointeur=fopen($conf_ctoff_file,&quot;w+&quot;);
		foreach ($tab as $ligne)
			{
			$CONF_CTOFF1 = str_replace('#','',$ligne);
			$actif = False ;	
			foreach ($_POST as $key =&gt; $value)
				{
					if (strstr($key,'chk-'))
					{
						$CONF_CTOFF2 = str_replace('chk-','',$key);
						if ( trim($CONF_CTOFF1) == trim($CONF_CTOFF2) )
						{ 
							$actif = True; 
							break;
						}
					}
				}

			if (! $actif) {	$line=&quot;#$CONF_CTOFF1&quot;;}
			else { $line=&quot;$CONF_CTOFF1&quot;;}
			fwrite($pointeur,$line);
				
			}
		fclose($pointeur);
		}
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -gctalist&quot;);
	break;

}

echo &quot;&lt;TABLE width='100%' border=0 cellspacing=0 cellpadding=0&gt;&quot;;
echo &quot;&lt;tr&gt;&lt;th&gt;$l_title1&lt;/th&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;tr bgcolor='#FFCC66'&gt;&lt;td&gt;&lt;img src='/images/pix.gif' width=1 height=2&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;/TABLE&gt;&quot;;
echo &quot;&lt;TABLE width='100%' border=1 cellspacing=0 cellpadding=0&gt;&quot;;
echo &quot;&lt;tr&gt;&lt;td valign='middle' align='left'&gt;&quot;;
echo &quot;&lt;CENTER&gt;&quot;;
echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
echo &quot;&lt;input type=hidden name='choix' value=\&quot;LogOFF\&quot;&gt;&quot;;
echo &quot;&lt;input type=submit value=\&quot;$l_switch_LogOFF\&quot;&gt;&quot;;
echo &quot;&lt;/FORM&gt;&quot;;
echo &quot;&lt;/CENTER&gt;&quot;;
if (is_file ($conf_file))
	{
	$tab=file($conf_file);
	if ($tab)
		{
		foreach ($tab as $line)
			{
			$field=explode(&quot;=&quot;, $line);
			if ($field[0] == &quot;LASTUPDATE&quot;)	{$LASTUPDATE=trim($field[2]);}
			if ($field[0] == &quot;DNSMASQ&quot;)		{$DNSMASQ=trim($field[1]);}
			if ($field[0] == &quot;AUTOUPDATE&quot;)		{$AUTOUPDATE=trim($field[1]);}
			if ($field[0] == &quot;HOURSCONNECT&quot;)	{$HOURSCONNECT=trim($field[1]);}
            if ($field[0] == &quot;GCTOFF&quot;)	{$GCTOFF=trim($field[1]);}            
			}
		}
	}
else { echo &quot;$l_error_open_file $conf_file&quot;;}

include 'dns.php';

include 'hours.php';

include 'gctoff.php';

//echo &quot;&lt;/td&gt;&lt;/tr&gt;&quot;;
?&gt;
&lt;/BODY&gt;
&lt;/HTML&gt;

&lt;/code&gt;
'''dns.php'''
&lt;code php&gt;
&lt;?php

if ($DNSMASQ &lt;&gt; &quot;OFF&quot;)
	{
	echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_dnsfilter_on&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
 	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type=hidden name='choix' value=\&quot;BL_Off\&quot;&gt;&quot;;
	echo &quot;&lt;input type=submit value=\&quot;$l_switch_filtering_off\&quot;&gt;&quot;;
	echo &quot;&lt;/FORM&gt;&quot;;

	if (isset($_GET['filtragemode'])){ $filtragemode=$_GET['filtragemode']; } else {$filtragemode=$DNSMASQ;}
	if ($filtragemode == 'WHITE')
	{
	$bl_categories=&quot;/usr/local/etc/CTparental/wl-categories-available&quot;;
	}
	else { $bl_categories=&quot;/usr/local/etc/CTparental/bl-categories-available&quot;;}

	$filtragemode = urlencode($filtragemode);
	echo &quot;&lt;table border=0 width=400 cellpadding=0 cellspacing=2&gt;&quot;;
	echo &quot;&lt;tr valign=top&gt;&quot;;
	echo &quot;&lt;td align=center&quot;; if ( $filtragemode == &quot;BLACK&quot; ) { echo &quot; bgcolor=\&quot;#FFCC66\&quot;&quot;;} echo &quot;&gt;&quot;;
	echo &quot;&lt;a href=\&quot;$_SERVER[PHP_SELF]?filtragemode=BLACK\&quot; title=\&quot;\&quot;&gt;&lt;font color=\&quot;black\&quot;&gt;&lt;b&gt;$l_fmenu_black&lt;/b&gt;&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&quot;;
	echo &quot;&lt;td align=center&quot;; if ( $filtragemode == &quot;WHITE&quot; ) { echo &quot; bgcolor=\&quot;#FFCC66\&quot;&quot;;} echo &quot;&gt;&quot;;
	echo &quot;&lt;a href=\&quot;$_SERVER[PHP_SELF]?filtragemode=WHITE\&quot; title=\&quot;\&quot;&gt;&lt;font color=\&quot;black\&quot;&gt;&lt;b&gt;$l_fmenu_white&lt;/b&gt;&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&quot;;
	echo &quot;&lt;/tr&gt;&quot;;
	echo&quot; &lt;/table&gt;&quot;;
	echo &quot;&lt;/td&gt;&lt;/tr&gt;&quot;;


	function echo_file ($filename)
		{
		if (file_exists($filename))
			{
			if (filesize($filename) != 0)
				{
				$pointeur=fopen($filename,&quot;r&quot;);
				$tampon = fread($pointeur, filesize($filename));
				fclose($pointeur);
				echo $tampon;
				}
			}
		else
			{
			echo &quot;$l_error_openfile $filename&quot;;
			}
		}

	echo &quot;&lt;TABLE width='100%' border=1 cellspacing=0 cellpadding=1&gt;&quot;;
	echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_main_bl&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
	echo &quot;&lt;tr&gt;&lt;td valign='middle' align='left' colspan=10&gt;&quot;;
	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;center&gt;$l_bl_version $LASTUPDATE&quot;;
	echo &quot;&lt;/center&gt;&lt;BR&gt;&quot;;
		echo &quot;&lt;input type='hidden' name='choix' value='Download_bl'&gt;&quot;;
		echo &quot;&lt;input type='submit' value='$l_download_bl'&gt;&quot;;
		echo &quot; ($l_warning)&quot;;

	echo &quot;&lt;/FORM&gt;&quot;;
	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type='hidden' name='choix' value='INIT_BL'&gt;&quot;;
	echo &quot;&lt;input type='submit' value='$l_switch_Init_bl'&gt;&quot;;
	echo &quot;&lt;/FORM&gt;&quot;;
	if ($AUTOUPDATE == &quot;ON&quot;)
		{
		echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_auto_update_on&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
		echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
		echo &quot;&lt;input type=hidden name='choix' value=\&quot;AUP_Off\&quot;&gt;&quot;;
		echo &quot;&lt;input type=submit value=\&quot;$l_switch_auto_update_off\&quot;&gt;&quot;;
	}
	else
		{
		echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_auto_update_off&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
		echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
		echo &quot;&lt;input type=hidden name='choix' value=\&quot;AUP_On\&quot;&gt;&quot;;
		echo &quot;&lt;input type=submit value=\&quot;$l_switch_auto_update_on\&quot;&gt;&quot;;
		}
	echo &quot;&lt;/FORM&gt;&quot;;
	echo &quot;&lt;/td&gt;&lt;/tr&gt;&quot;;
	echo &quot;&lt;tr&gt;&lt;td valign=\&quot;middle\&quot; align=\&quot;left\&quot; colspan=10&gt;&quot;;
	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type='hidden' name='choix' value='MAJ_cat'&gt;&quot;;
	if ($filtragemode == &quot;BLACK&quot;){echo &quot;&lt;center&gt;$l_bl_categories_bl&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;}
	else {echo &quot;&lt;center&gt;$l_bl_categories_wl&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;}

	//on lit et on interprète le fichier de catégories
	$cols=1; 
	if (file_exists($bl_categories))
		{
		$pointeur=fopen($bl_categories,&quot;r&quot;);
		while (!feof ($pointeur))
			{
			$ligne=fgets($pointeur, 4096);
			if ($ligne)
				{
				if ($cols == 1) { echo &quot;&lt;tr&gt;&quot;;}
				$categorie=trim(basename($ligne));
				echo &quot;&lt;td&gt;&lt;a href='bl_categories_help.php?cat=$categorie' target='cat_help' onclick=window.open('bl_categories_help.php','cat_help','width=600,height=150,toolbar=no,scrollbars=no,resizable=yes') title='categories help page'&gt;$categorie&lt;/a&gt;&lt;br&gt;&quot;;
				echo &quot;&lt;input type='checkbox' name='chk-$categorie'&quot;;
				// la catégorie n'existe pas dans le fichier de catégorie activé -&gt; categorie non selectionnée
							$str = file_get_contents($bl_categories_enabled);
				if (strpos($str, $categorie)===false) { echo &quot;&gt;&quot;;}
				else { echo &quot;checked&gt;&quot;; }
				echo &quot;&lt;/td&gt;&quot;;
				$cols++;
				if ($cols &gt; 10) {
					echo &quot;&lt;/tr&gt;&quot;;
					$cols=1; }
				}
			}
		fclose($pointeur);
		}
	else	{
		echo &quot;$l_error_open_file $bl_categories&quot;;
		}
	echo &quot;&lt;/td&gt;&lt;/tr&gt;&quot;;
	echo &quot;&lt;tr&gt;&lt;td valign='middle' align='left' colspan=10&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;
	echo &quot;&lt;tr&gt;&lt;td colspan=5 align=center&gt;&quot;;
	if ($filtragemode == &quot;BLACK&quot;){echo &quot;&lt;H3&gt;$l_rehabilitated_dns&lt;/H3&gt;$l_rehabilitated_dns_explain_bl&lt;BR&gt;$l_one_dns&lt;BR&gt;&quot;;}
	else {echo &quot;&lt;H3&gt;$l_rehabilitated_dns&lt;/H3&gt;$l_rehabilitated_dns_explain_wl&lt;BR&gt;$l_one_dns&lt;BR&gt;&quot;;}
	echo &quot;&lt;textarea name='OSSI_wl_domains' rows=5 cols=40&gt;&quot;;
	echo_file ($wl_domains);
	echo &quot;&lt;/textarea&gt;&lt;/td&gt;&quot;;
	if ( $filtragemode == &quot;BLACK&quot; ) {
	echo &quot;&lt;td colspan=5 align=center&gt;&quot;;
	echo &quot;&lt;H3&gt;$l_forbidden_dns&lt;/H3&gt;$l_forbidden_dns_explain&lt;BR&gt;&quot;;
	echo &quot;&lt;textarea name='OSSI_bl_domains' rows=5 cols=40&gt;&quot;;
	echo_file ($bl_domains);
	echo &quot;&lt;/textarea&gt;&lt;/td&gt;&quot;;
	}
	echo &quot;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=10&gt;&quot;;

	echo &quot;&lt;input type='submit' value='$l_record'&gt;&quot;;
	echo &quot;&lt;/form&gt; ($l_wait)&quot;;

	echo &quot;&lt;/td&gt;&lt;/tr&gt;&quot;;
	echo &quot;&lt;/TABLE&gt;&quot;;
	echo &quot;&lt;/TABLE&gt;&quot;;


}
else
	{
	echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_dnsfilter_off&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
 	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type=hidden name='choix' value=\&quot;BL_On\&quot;&gt;&quot;;
	echo &quot;&lt;input type=submit value=\&quot;$l_switch_filtering_on\&quot;&gt;&quot;;
	echo &quot;&lt;/FORM&gt;&quot;;
	echo &quot;&lt;/td&gt;&lt;/tr&gt;&quot;;
	}




?&gt;

&lt;/code&gt;
'''hours.php'''
&lt;code php&gt;

&lt;?php
echo &quot;&lt;TABLE width='100%' border=0 cellspacing=0 cellpadding=0&gt;&quot;;
echo &quot;&lt;tr&gt;&lt;th&gt;$l_hours1&lt;/th&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;tr bgcolor='#FFCC66'&gt;&lt;td&gt;&lt;img src='/images/pix.gif' width=1 height=2&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;/TABLE&gt;&quot;;
echo &quot;&lt;TABLE width='100%' border=1 cellspacing=0 cellpadding=0&gt;&quot;;
echo &quot;&lt;tr&gt;&lt;td valign='middle' align='left'&gt;&quot;;
if ($HOURSCONNECT == &quot;ON&quot;)
	{
	echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_hours_on&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
 	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type=hidden name='choix' value=\&quot;H_Off\&quot;&gt;&quot;;
	echo &quot;&lt;input type=submit value=\&quot;$l_switch_hours_off\&quot;&gt;&quot;;
	echo &quot;&lt;/FORM&gt;&quot;;
	# Choice of language
	$Language = 'en';
	if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
	  $Langue = explode(&quot;,&quot;,$_SERVER['HTTP_ACCEPT_LANGUAGE']);
	  $Language = strtolower(substr(chop($Langue[0]),0,2)); }
	if($Language == 'fr'){
	  $l_selectuser=&quot;l'utilisateur selectionné est : &quot;;
	  $l_userisnotselect=&quot;Veuillez selectionner un utilisateur.&quot;;
	  $l_isadmin = &quot;7j/7 24h/24&quot;;
	  $l_valide = &quot;Enregistrer&quot;;
	  $to = &quot; à &quot; ;
	  $and = &quot; et &quot; ;
	  $l_select = &quot;Sélectionner&quot;;
	  $l_info1 = &quot;08h00 à 24h00 ou 08h00 à 12h00 et 14h00 à 24h00&quot;;
	  $week = array( &quot;lundi&quot;,&quot;mardi&quot;,&quot;mercredi&quot;,&quot;jeudi&quot;,&quot;vendredi&quot;,&quot;samedi&quot;,&quot;dimanche&quot;);
	   $tmaxinfo= &quot;Minutes max /24 heurs&quot;;
	}
	else {
	  $l_userisnotselect=&quot;Veuillez sélectionner un utilisateur.&quot;;
	  $l_selectuser=&quot;l'utilisateur sélectionné est : &quot;;
	  $l_isadmin = &quot;7j/7 24h/24&quot;;
	  $l_valide = &quot;Enregistrer&quot;;
	  $l_select = &quot;Select&quot;;
	  $to = &quot; to &quot; ;
	  $and = &quot; and &quot; ;
	  $l_info1 = &quot;08h00 à 24h00 ou 08h00 à 12h00 et 14h00 à 24h00&quot;;
	  $week = array( &quot;lundi&quot;,&quot;mardi&quot;,&quot;mercredi&quot;,&quot;jeudi&quot;,&quot;vendredi&quot;,&quot;samedi&quot;,&quot;dimanche&quot;);
	   $tmaxinfo= &quot;Minutes max /24 heurs&quot;;
	}
	if (isset($_POST['selectuser'])){ $selectuser=$_POST['selectuser']; }


	### on lit est on interprète le fichier CTparental.conf
	echo &quot;&lt;TABLE width='100%' border=0 cellspacing=0 cellpadding=0&gt;&quot;;
	exec (&quot;/usr/local/bin/CTparental.sh -listusers 2&gt; /dev/null&quot;,$USERSPC); # récupération des utilisateurs du poste.(UID &gt;= 1000)
	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
		echo &quot;&lt;select name=\&quot;selectuser\&quot;&gt;&quot;;
		if ($selectuser){echo &quot;&lt;option value=\&quot;$selectuser\&quot;&gt;$selectuser\n&quot;; }
			else {echo &quot;&lt;option value=\&quot;\&quot;&gt;\n&quot;; }
		foreach ($USERSPC as $USERSELECT){echo &quot;&lt;option value=\&quot;$USERSELECT\&quot;&gt;$USERSELECT\n&quot;;}
		echo &quot; &lt;/select&gt;&quot;;
	echo &quot;&lt;input type=\&quot;submit\&quot; value=\&quot;$l_select\&quot;&gt;&quot;;
	echo &quot;&lt;/FORM&gt;&quot;;
	if (isset($selectuser)) {
		echo &quot;&lt;/TABLE&gt;&quot;;
		echo &quot;&lt;TABLE width='600' border=0 cellspacing=0 cellpadding=0&gt;&quot;;
		echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
		echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_selectuser $selectuser&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
		
		if (is_file ($hconf_file))
			{
			$tab=file($hconf_file);
			if ($tab)
				{
				foreach ($tab as $line)
					{
							$field=explode(&quot;=&quot;, $line);
								if ( $field[0] == $selectuser ){
								$field2=explode(&quot;:&quot;, $field[2]);
							$numday=$field[1];
							$isconfigured=1;
							
							if ( $numday == &quot;admin&quot;) { echo &quot;&lt;tr&gt;&lt;td&gt;$l_isadmin : &lt;input type='checkbox' name='isadmin' checked&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;}
							elseif ( $numday == &quot;user&quot;) {echo &quot;&lt;tr&gt;&lt;td&gt;$l_isadmin : &lt;input type='checkbox' name='isadmin' &gt;&lt;/td&gt;&lt;/tr&gt;&quot;;
										if ( intval ($field[2]) == 0 ) { $field[2]=&quot;1440&quot;; }
										echo&quot;&lt;tr&gt;&lt;td&gt;$tmaxinfo&lt;td&gt;&lt;INPUT type=\&quot;text\&quot; size=4 maxlength=4 value=\&quot;$field[2]\&quot;  name=\&quot;tmax\&quot;&gt;/1440&lt;td&lt;/tr&gt;&quot;;	
										}
										
							else {
								echo&quot;&lt;tr&gt;&lt;td&gt;$week[$numday]:&lt;/td&gt;&lt;td&gt;&lt;INPUT type=\&quot;text\&quot; size=5 maxlength=5 value=\&quot;$field2[0]\&quot;  name=\&quot;h1$numday\&quot;&gt;&lt;/td&gt;&quot;;
										echo&quot; &lt;td&gt;$to &lt;INPUT type=\&quot;text\&quot; size=5 maxlength=5 value=\&quot;$field2[1]\&quot; name=\&quot;h2$numday\&quot;&gt;&lt;/td&gt;&quot;;
										echo&quot; &lt;td&gt;$and &lt;INPUT type=\&quot;text\&quot; size=5 maxlength=5 value=\&quot;$field2[2]\&quot; name=\&quot;h3$numday\&quot;&gt;&lt;/td&gt;&quot;;	
								echo&quot; &lt;td&gt;$to &lt;INPUT type=\&quot;text\&quot; size=5 maxlength=5 value=\&quot;$field2[3]\&quot; name=\&quot;h4$numday\&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;
							}
														
						}
							
					}
					
				}
			
			}
		else { echo &quot;$l_error_open_file $hconf_file&quot;;}

		if (isset($isconfigured)==0){
			echo &quot;&lt;tr&gt;&lt;td&gt;$l_isadmin : &lt;input type='checkbox' name='isadmin' checked=\&quot;checked\&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;
		}


		echo &quot;&lt;/TABLE&gt;&quot;;
		echo &quot;&lt;input type=hidden name='selectuser' value=\&quot;$selectuser\&quot;&gt;&quot;;
			echo &quot;&lt;input type=hidden name='choix' value=\&quot;MAJ_H\&quot;&gt;&quot;;
		echo &quot;&lt;input type=\&quot;submit\&quot; value=\&quot;$l_valide\&quot;&gt;&quot;;
		echo &quot;&lt;/FORM&gt;&quot;;
	}
	else { echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_userisnotselect&lt;/H3&gt;&lt;/CENTER&gt;&quot;;}

}
else
	{
	echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_hours_off&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
 	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type=hidden name='choix' value=\&quot;H_On\&quot;&gt;&quot;;
	echo &quot;&lt;input type=submit value=\&quot;$l_switch_hours_on\&quot;&gt;&quot;;
	echo &quot;&lt;/FORM&gt;&quot;;
	}



?&gt;

&lt;/code&gt;
'''gctoff.php'''
&lt;code php&gt;
&lt;?php
echo &quot;&lt;TABLE width='100%' border=0 cellspacing=0 cellpadding=0&gt;&quot;;
echo &quot;&lt;tr&gt;&lt;th&gt;$l_title_gctoff&lt;/th&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;tr bgcolor='#FFCC66'&gt;&lt;td&gt;&lt;img src='/images/pix.gif' width='1' height='2'&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;/table&gt;&quot;;
echo &quot;&lt;table width='100%' border=1 cellspacing=0 cellpadding=1&gt;&quot;;
if ($GCTOFF == &quot;ON&quot;)
	{
	echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_gctoff_on&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
 	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type=hidden name='choix' value=\&quot;gct_Off\&quot;&gt;&quot;;
	echo &quot;&lt;input type=submit value=\&quot;$l_switch_gctoff_off\&quot;&gt;&quot;;
	echo &quot;&lt;/FORM&gt;&quot;;

	
	echo &quot;&lt;tr&gt;&lt;td colspan=2 align='center'&gt;&quot;;
	echo &quot;$l_gctoff_explain&lt;/td&gt;&lt;/tr&gt;&quot;;
	echo &quot;&lt;tr&gt;&lt;td align='center' valign='middle'&gt;&quot;;
	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method='POST'&gt;&quot;;
	echo &quot;&lt;table cellspacing=2 cellpadding=2 border=1&gt;&quot;;
	echo &quot;&lt;tr&gt;&lt;th&gt;$l_gctoff_username&lt;th&gt;$l_blocked&lt;/tr&gt;&quot;;
	// Read the &quot;CTOFF.conf&quot; file
	exec (&quot;sudo /usr/local/bin/CTparental.sh -gctulist&quot;);
	$tab=file($conf_ctoff_file);
	if ($tab)  # the file isn't empty
		{
		foreach ($tab as $line)
			{
			if (trim($line) != '') # the line isn't empty
				{
				$user_lignes=explode(&quot; &quot;, $line);
				$userx=trim($user_lignes[0],&quot;#&quot;);
				echo &quot;&lt;tr&gt;&lt;td&gt;$userx&quot;;
				echo &quot;&lt;td&gt;&lt;input type='checkbox' name='chk-$userx'&quot;;
				if (preg_match('/^#/',$line, $r)) {
					echo &quot;&gt;&quot;;}
				else {
					echo &quot;checked&gt;&quot;;}
				echo &quot;&lt;/tr&gt;&quot;;
				}
			}
		}
	
	echo &quot;&lt;/table&gt;&quot;;
	echo &quot;&lt;input type='hidden' name='choix' value='change_user'&gt;&quot;;
	echo &quot;&lt;input type='submit' value='$l_record'&gt;&quot;;
	echo &quot;&lt;/form&gt;&quot;;
}
else
	{
	echo &quot;&lt;CENTER&gt;&lt;H3&gt; $l_gctoff_off&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
 	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type=hidden name='choix' value=\&quot;gct_On\&quot;&gt;&quot;;
	echo &quot;&lt;input type=submit value=\&quot;$l_switch_gctoff_on\&quot;&gt;&quot;;
	echo &quot;&lt;/FORM&gt;&quot;;
	}

&lt;/code&gt;
'''bl_categories_help.php'''
&lt;code php&gt;
&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;
&lt;HTML&gt;&lt;!-- written by Rexy --&gt;
&lt;HEAD&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot;&gt;
&lt;?php
$bl_dir=&quot;/usr/local/etc/CTparental/dnsfilter-available/&quot;;
# Choice of language
$Language = 'en';
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
  $Langue = explode(&quot;,&quot;,$_SERVER['HTTP_ACCEPT_LANGUAGE']);
  $Language = strtolower(substr(chop($Langue[0]),0,2)); }
if($Language == 'fr'){
  $l_title = &quot;Catégories de la liste noire&quot;;
  $l_error_open_file=&quot;Erreur d'ouverture du fichier&quot;;
  $l_close=&quot;Fermer&quot;;
  $l_unknown_cat=&quot;Cette catégorie n'est pas décrite&quot;;
  $l_nb_domains=&quot;Nombre de noms de domaine filtrés :&quot;;
  $l_nb_urls=&quot;Nombre d'URL filtrés :&quot;;
  $l_explain_adult=&quot;Sites relatifs à l'érotisme et à la pornographie&quot;;
  $l_explain_agressif=&quot;Sites extrémistes, racistes, antisémites ou incitant à la haine&quot;;
  $l_explain_arjel=&quot;Sites de pari en ligne certifies par l'ARJEL (Autorité de Régulation des Jeux En Ligne)&quot;;
  $l_explain_astrology=&quot;Sites relatifs à l'astrologie&quot;;
  $l_explain_bank=&quot;Sites de banques en ligne&quot;;
  $l_explain_audio_video=&quot;Sites de téléchargement de fichiers audio et vidéo&quot;;
  $l_explain_blog=&quot;Sites d'hébergement de blogs&quot;;
  $l_explain_celebrity=&quot;Sites « people », stars, etc.&quot;;
  $l_explain_chat=&quot;Sites de dialogue en ligne&quot;;
  $l_explain_child=&quot;Sites pour enfants&quot;;
  $l_explain_cleaning=&quot;Sites relatifs à la mise à jour logicielle ou antivirale&quot;;
  $l_explain_dangerous_material=&quot;Sites relatifs à la création de produits dangereux (explosif, poison, etc.)&quot;;
  $l_explain_dating=&quot;Sites de rencontres en ligne&quot;;
  $l_explain_drogue=&quot;Sites relatifs aux produits stupéfiants&quot;;
  $l_explain_filehosting=&quot;Entrepôts de fichiers  (vidéo, images, son, logiciels, etc.)&quot;;
  $l_explain_financial=&quot;Sites d'informations financières, bourses, etc.&quot;;
  $l_explain_forums=&quot;Sites d'hébergement de forums de discussion&quot;;
  $l_explain_gambling=&quot;Sites de jeux d'argent en ligne (casino, grattage virtuel, etc.)&quot;;
  $l_explain_games=&quot;Sites de jeux en ligne&quot;;
  $l_explain_hacking=&quot;Sites relatifs au piratage informatique&quot;;
  $l_explain_jobsearch=&quot;Sites de recherche d'emplois&quot;;
  $l_explain_liste_bu=&quot;Liste de sites éducatifs pour bibliothèque&quot;;
  $l_explain_malware=&quot;Site relatifs au logiciels malveillants (virus, vers, trojans, etc.)&quot;;
  $l_explain_manga=&quot;Site de Mangas&quot;;
  $l_explain_marketingware=&quot;Sites marchands douteux (X, organes, enfants, etc.)&quot;;
  $l_explain_mixed_adult=&quot;Sites pour adultes (image-choc, gore, guerre, etc.)&quot;;
  $l_explain_mobile_phone=&quot;Sites relatifs aux mobiles GSM (sonneries, logos, etc.)&quot;;
  $l_explain_ossi=&quot;Noms de domaine et URLs que vous ajoutez à la liste noire (voir ci-dessous)&quot;;
  $l_explain_phishing=&quot;Sites relatifs à l'hammeçonnage (pièges bancaires, redirection, etc.)&quot;;
  $l_explain_press=&quot;Sites de presse&quot;;
  $l_explain_publicite=&quot;Sites ou bannières publicitaires&quot;;
  $l_explain_radio=&quot;Sites de radios en ligne ou de podcast&quot;;
  $l_explain_reaffected=&quot;Sites connus ayant changé de propriétaire (et donc de contenu)&quot;;
  $l_explain_redirector=&quot;Sites de redirection, d'anonymisation ou de contournement&quot;;
  $l_explain_remote_control=&quot;Sites permettant la prise de controle a distance&quot;;
  $l_explain_sect=&quot;Sites sectaires&quot;;
  $l_explain_social_networks=&quot;Sites de réseaux sociaux&quot;;
  $l_explain_sexual_education=&quot;Sites relatifs à l'éducation sexuelle&quot;;
  $l_explain_shopping=&quot;Sites de vente et d'achat en ligne&quot;;
  $l_explain_sport=&quot;Sites de sport&quot;;
  $l_explain_strict_redirector=&quot;URL intentionnellement mal formées&quot;;
  $l_explain_strong_redirector=&quot;URL mal formées dans une requête « google »&quot;;
  $l_explain_tricheur=&quot;Sites relatifs aux tricheries (examens, concours, etc.)&quot;;
  $l_explain_webmail=&quot;Site WEB permettant de consultation son courrier électronique&quot;;
  $l_explain_warez=&quot;Sites relatifs aux logiciels piratés (crackés), aux générateurs de clés, etc.&quot;;
}
else {
  $l_title = &quot;Blacklist categories&quot;;
  $l_error_open_file=&quot;Error opening the file&quot;;
  $l_close=&quot;Close&quot;;
  $l_unknown_cat=&quot;This category isn't describe&quot;;
  $l_nb_domains=&quot;Number of filtered domain names :&quot;;
  $l_nb_urls=&quot;Number of filtered URL :&quot;;
  $l_explain_adult=&quot;Sites related to eroticism and pornography&quot;;
  $l_explain_agressif=&quot;Sites extremist, racist, anti-Semitic or hate&quot;;
  $l_explain_arjel=&quot;Online gambling sites allowed by the french authority 'ARJEL' (Autorité de Régulation des Jeux En Ligne)&quot;;
  $l_explain_astrology=&quot;Sites related to astrology&quot;;
  $l_explain_audio_video=&quot;Sites for downloading audio and video&quot;;
  $l_explain_bank=&quot;Online bank sites&quot;;
  $l_explain_blog=&quot;Sites hosting blogs&quot;;
  $l_explain_celebrity=&quot;Sites « people », stars, etc.&quot;;
  $l_explain_chat=&quot;Online chat sites&quot;;
  $l_explain_child=&quot;Sites for children&quot;;
  $l_explain_cleaning=&quot;Sites related to software update or antiviral&quot;;
  $l_explain_dangerous_material=&quot;Sites related to the creation of dangerous goods (explosives, poison, etc.)&quot;;
  $l_explain_dating=&quot;Online dating sites&quot;;
  $l_explain_drogue=&quot;Sites related to narcotic&quot;;
  $l_explain_filehosting=&quot;Warehouses of files (video, images, sound, software, etc.)&quot;;
  $l_explain_financial=&quot;Sites of financial information&quot;;
  $l_explain_forums=&quot;Sites hosting discussion forums&quot;;
  $l_explain_gambling=&quot;Online gambling sites (casino, virtual scratching, etc.)&quot;;
  $l_explain_games=&quot;Online games sites&quot;;
  $l_explain_hacking=&quot;Sites related to hacking&quot;;
  $l_explain_jobsearch=&quot;Job search sites&quot;;
  $l_explain_liste_bu=&quot;List of educational sites for library&quot;;
  $l_explain_malware=&quot;Malware sites (viruses, worms, trojans, etc.).&quot;;
  $l_explain_manga=&quot;Manga site&quot;;
  $l_explain_marketingware=&quot;doubtful commercial sites&quot;;
  $l_explain_mixed_adult=&quot;Adult sites (shock, gore, war, etc.).&quot;;
  $l_explain_mobile_phone=&quot;Sites related to GSM mobile (ringtones, logos, etc.)&quot;;
  $l_explain_ossi=&quot;Domain names and URLs you add to the blacklist (see below)&quot;;
  $l_explain_phishing=&quot;Phishing sites (traps banking, redirect, etc..)&quot;;
  $l_explain_press=&quot;News sites&quot;;
  $l_explain_publicite=&quot;Advertising sites&quot;;
  $l_explain_radio=&quot;Online radio podcast sites&quot;;
  $l_explain_reaffected=&quot;Sites that have changed ownership (and therefore content)&quot;;
  $l_explain_redirector=&quot;redirects, anonymization or bypass sites&quot;;
  $l_explain_remote_control=&quot;Sites for making remote control&quot;;
  $l_explain_sect=&quot;Sectarian sites&quot;;
  $l_explain_social_networks=&quot;Social networks sites&quot;;
  $l_explain_sexual_education=&quot;Sites related to sex education&quot;;
  $l_explain_shopping=&quot;Shopping sites and online shopping&quot;;
  $l_explain_sport=&quot;Sport sites&quot;;
  $l_explain_strict_redirector=&quot;Intentionally malformed URL&quot;;
  $l_explain_strong_redirector=&quot;Malformed URL in a 'google' query&quot;;
  $l_explain_tricheur=&quot;Sites related to cheating (tests, examinations, etc.)&quot;;
  $l_explain_webmail=&quot;Web sites for e-mail consultation&quot;;
  $l_explain_warez=&quot;Sites related to cracked softwares&quot;;
}
if (isset($_GET['cat'])){$categorie=$_GET['cat'];} 
$bl_categorie_domain_file=$bl_dir.$categorie.&quot;.conf&quot;;
if (file_exists($bl_categorie_domain_file))
	$nb_domains=exec (&quot;wc -w $bl_categorie_domain_file|cut -d' ' -f1&quot;);
else
	$nb_domains=$l_error_openfilei.&quot; &quot;.$bl_categorie_domain_file;
if (file_exists($bl_categorie_url_file))
	$nb_urls=exec (&quot;wc -w $bl_categorie_url_file|cut -d' ' -f1&quot;);
else
	$nb_urls=$l_error_openfile.&quot; &quot;.$bl_categorie_url_file;
echo &quot;&lt;TITLE&gt;$l_title&lt;/TITLE&gt;&quot;;
?&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;/CTadmin/css/style.css&quot; type=&quot;text/css&quot;&gt;
&lt;/HEAD&gt;
&lt;body&gt;
&lt;TABLE width=&quot;100%&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
	&lt;tr&gt;&lt;th&gt;&lt;?php echo $categorie ;?&gt;&lt;/th&gt;&lt;/tr&gt;
	&lt;tr bgcolor=&quot;#FFCC66&quot;&gt;&lt;td&gt;&lt;img src=&quot;/images/pix.gif&quot; width=&quot;1&quot; height=&quot;2&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/TABLE&gt;
&lt;TABLE width=&quot;100%&quot; border=1 cellspacing=0 cellpadding=1&gt;
&lt;tr&gt;&lt;td valign=&quot;middle&quot; align=&quot;left&quot;&gt;
&lt;?php
$compat_categorie=strtr($categorie,&quot;-&quot;,&quot;_&quot;);
if (!empty(${'l_explain_'.$compat_categorie}))
	echo &quot;&lt;center&gt;&lt;b&gt;${'l_explain_'.$compat_categorie}&lt;/b&gt;&lt;/center&gt;&quot;;
else echo &quot;$l_unknown_cat&quot;;
echo &quot;&lt;br&gt;$l_nb_domains &lt;b&gt;$nb_domains&lt;/b&gt;&lt;br&gt;&quot;;
?&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/TABLE&gt;
&lt;br&gt;
&lt;center&gt;&lt;a href=&quot;javascript:window.close();&quot;&gt;&lt;b&gt;&lt;?php echo &quot;$l_close&quot;; ?&gt;&lt;/b&gt;&lt;/a&gt;&lt;/center&gt;
&lt;/BODY&gt;
&lt;/HTML&gt;
&lt;/code&gt;
[[Catégorie:Scripts]]</text>
      <sha1>j0k1y1fex5m77ojkfxoqe8c6wbry42q</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5582</id>
      <parentid>5518</parentid>
      <timestamp>2014-03-24T14:33:46Z</timestamp>
      <contributor>
        <username>Pathe</username>
        <id>294</id>
      </contributor>
      <comment>selection* &gt; sélection*</comment>
      <text xml:space="preserve" bytes="90129">lien sur le [http://www.debian-fr.org/controle-parental-pour-le-pc-debian-de-vos-enfants-t42009.html forum]
'''CTparental.sh'''
&lt;code bash&gt;
#!/bin/bash 
# CTparental.sh
#
# par Guillaume MARSAT
# Corrections orthographiques par Pierre-Edouard TESSIER
# une parti du code est tiré du script alcasar-bl.sh créé par Franck BOUIJOUX et Richard REY
# présent dans le code du projet alcasar en version 2.6.1 ; web page http://www.alcasar.net/
 
# This script is distributed under the Gnu General Public License (GPL)
arg1=${1}
if [ $# -ge 1 ];then
if [ $arg1 != &quot;-listusers&quot; ] ; then
if [ ! $UID -le 499 ]; then # considaire comme root tous les utilisateurs avec un uid inferieur ou egale a 499,ce qui permet a apt-get,urpmi,yum... de lance le scripte sans erreur.
   echo &quot;Il vous faut des droits root pour lancer ce script&quot;
   exit 1
fi
fi
fi


noinstalldep=&quot;0&quot;
nomanuel=&quot;0&quot;
ARGS=($*)
for (( narg=1; narg&lt;=$#; narg++ )) ; do
        case &quot;${ARGS[$narg]}&quot; in
	  -nodep )
	     noinstalldep=&quot;1&quot;
	  ;;
	  -nomanuel )
	     nomanuel=&quot;1&quot;
	  ;;
	  -dirhtml )
	     narg=$(( $narg +1 ))
	     DIRhtmlPersonaliser=${ARGS[$narg]}
	     if [ ! -d $DIRhtmlPersonaliser ];then
		echo &quot;Chemin de répertoire non valide!&quot;
		exit 0
	     fi
	  ;;
	esac
done
pause () {   # fonction pause pour debugage
      MESSAGE=&quot;$*&quot;
      choi=&quot;&quot;
      MESSAGE=${MESSAGE:=&quot;pour continuer appuyez sur une touche :&quot;}
      echo  &quot;$MESSAGE&quot;
      while (true); do
         read choi
         case $choi in
         * )
         break
         ;;
      esac
      done
}
SED=&quot;/bin/sed -i&quot;
DIR_CONF=&quot;/usr/local/etc/CTparental&quot;
FILE_CONF=&quot;$DIR_CONF/CTparental.conf&quot;
FILE_GCTOFFCONF=&quot;$DIR_CONF/GCToff.conf&quot;
FILE_HCOMPT=&quot;$DIR_CONF/CThourscompteur&quot;
FILE_HCONF=&quot;$DIR_CONF/CThours.conf&quot;
if [ ! -f $FILE_CONF ] ; then
mkdir -p $DIR_CONF
mkdir -p /usr/local/share/CTparental/
cat &lt;&lt; EOF &gt; $FILE_CONF
LASTUPDATE=0
DNSMASQ=BLACK
AUTOUPDATE=OFF
HOURSCONNECT=OFF
GCTOFF=OFF
EOF
fi




## imports du plugin de la distributions si il existe
if [ -f $DIR_CONF/dist.conf ];then
	source  $DIR_CONF/dist.conf 
fi

tempDIR=&quot;/tmp/alcasar&quot;
tempDIRRamfs=&quot;/tmp/alcasarRamfs&quot;
if [ ! -d $tempDIRRamfs ] ; then
mkdir $tempDIRRamfs
fi
RougeD=&quot;\033[1;31m&quot;
BleuD=&quot;\033[1;36m&quot;
VertD=&quot;\033[1;32m&quot;
Fcolor=&quot;\033[0m&quot;
GESTIONNAIREDESESSIONS=&quot; login gdm lightdm slim kdm xdm lxdm gdm3 &quot;
FILEPAMTIMECONF=&quot;/etc/security/time.conf&quot;
DIRPAM=&quot;/etc/pam.d/&quot;
DAYS=${DAYS:=&quot;lundi mardi mercredi jeudi vendredi samedi dimanche &quot;}
DAYS=( $DAYS )
DAYSPAM=( Mo Tu We Th Fr Sa Su )
DAYSCRON=( mon tue wed thu fri sat sun )

#### DEPENDANCES par DEFAULT #####
DEPENDANCES=${DEPENDANCES:=&quot; dnsmasq lighttpd php5-cgi libnotify-bin notification-daemon resolvconf &quot;}
#### RESOLVCONF EST PAS PRESENT DANS LA DISTRIBUTION ####
NORESOLVCONF=${NORESOLVCONF:=0}
#### COMMANDES de services par DEFAULT #####
CMDSERVICE=${CMDSERVICE:=&quot;service &quot;}
CRONstart=${CRONstart:=&quot;$CMDSERVICE cron start &quot;}
CRONstop=${CRONstop:=&quot;$CMDSERVICE cron stop &quot;}
CRONrestart=${CRONrestart:=&quot;$CMDSERVICE cron restart &quot;}
LIGHTTPDstart=${LIGHTTPDstart:=&quot;$CMDSERVICE lighttpd start &quot;}
LIGHTTPDstop=${LIGHTTPDstop:=&quot;$CMDSERVICE lighttpd stop &quot;}
LIGHTTPDrestart=${LIGHTTPDrestart:=&quot;$CMDSERVICE lighttpd restart &quot;}
DNSMASQstart=${DNSMASQstart:=&quot;$CMDSERVICE dnsmasq start &quot;}
DNSMASQstop=${DNSMASQstop:=&quot;$CMDSERVICE dnsmasq stop &quot;}
DNSMASQrestart=${DNSMASQrestart:=&quot;$CMDSERVICE dnsmasq restart &quot;}
NWMANAGERstop=${NWMANAGERstop:=&quot;$CMDSERVICE network-manager stop&quot;}
NWMANAGERstart=${NWMANAGERstart:=&quot;$CMDSERVICE network-manager start&quot;}
NWMANAGERrestart=${NWMANAGERrestart:=&quot;$CMDSERVICE network-manager restart&quot;}

#### LOCALISATION du fichier PID lighttpd par default ####
LIGHTTPpidfile=${LIGHTTPpidfile:=&quot;/var/run/lighttpd.pid&quot;}

#### COMMANDES D'ACTIVATION DES SERVICES AU DEMARAGE DU PC ####
ENCRON=${ENCRON:=&quot;&quot;}
ENLIGHTTPD=${ENLIGHTTPD:=&quot;&quot;}
ENDNSMASQ=${ENDNSMASQ:=&quot;&quot;}
ENNWMANAGER=${ENNWMANAGER:=&quot;&quot;}
#### UID MINIMUM pour les UTILISATEUR
UIDMINUSER=${UIDMINUSER:=1000}

DNSMASQCONF=${DNSMASQCONF:=&quot;/etc/dnsmasq.conf&quot;}
MAINCONFHTTPD=${MAINCONFHTTPD:=&quot;/etc/lighttpd/lighttpd.conf&quot;}
DIRCONFENABLEDHTTPD=${DIRCONFENABLEDHTTPD:=&quot;/etc/lighttpd/conf-enabled&quot;}
CTPARENTALCONFHTTPD=${CTPARENTALCONFHTTPD:=&quot;$DIRCONFENABLEDHTTPD/10-CTparental.conf&quot;}
RESOLVCONFMAIN=${RESOLVCONFMAIN:=&quot;/etc/resolvconf&quot;}
RESOLVDNSMASQ=${RESOLVDNSMASQ:=&quot;$RESOLVCONFMAIN/run/interface/lo.dnsmasq&quot;}
RESOLVCONFORDER=${RESOLVCONFORDER:=&quot;$RESOLVCONFMAIN/interface-order&quot;}
DIRHTML=${DIRHTML:=&quot;/var/www/CTparental&quot;}
DIRadminHTML=${DIRadminHTML:=&quot;/var/www/CTadmin&quot;}
PASSWORDFILEHTTPD=${PASSWORDFILEHTTPD:=&quot;/etc/lighttpd/lighttpd-htdigest.user&quot;}
REALMADMINHTTPD=${REALMADMINHTTPD:=&quot;interface admin&quot;}
CMDINSTALL=&quot;&quot;
NOXSESSIOND=${NOXSESSIOND:=0}
LOGONDDIR=${LOGONDDIR:=&quot;/etc/X11/Xsession.d&quot;}
if [ ! -d $LOGONDDIR ];then
   mkdir $LOGONDDIR 
fi
STARTUPKDM=${STARTUPKDM:=/etc/kde/kdm/Xsetup}
STARTUPGDM=${STARTUPGDM:=/etc/gdm/PostLogin/Default}
CONFLIGHTDM=${CONFLIGHTDM:=/etc/lightdm/lightdm.conf}
if [ $(cat $CONFLIGHTDM | grep -c ^greeter-setup-script= ) -eq 1 ];then
STARTUPLIGHTDM=$(cat $CONFLIGHTDM | grep ^greeter-setup-script= | cut -d&quot;=&quot; -f2 )
else
STARTUPLIGHTDM=${STARTUPLIGHTDM:=/usr/local/bin/lightdm-greeter-script}
fi


XLOGONSCRIPTE=${XLOGONSCRIPTE:=&quot;$LOGONDDIR/10x11-CTparentalLogin&quot;}
XLOGONSCRIPTEALT=${XLOGONSCRIPTEALT:=&quot;/usr/local/bin/10x11-CTparentalLogin&quot;}
ADDUSERTOGROUP=${ADDUSERTOGROUP:=&quot;gpasswd -a &quot;}
DELUSERTOGROUP=${DELUSERTOGROUP:=&quot;gpasswd -d &quot;}
if [ $(yum help 2&gt; /dev/null | wc -l ) -ge 50 ] ; then
   ## &quot;Distribution basée sur yum exemple redhat, fedora...&quot;
   CMDINSTALL=${CMDINSTALL:=&quot;yum install &quot;}
   CMDREMOVE=${CMDREMOVE:=&quot;yum remove &quot;}
fi
urpmi --help 2&amp;&gt; /dev/null
if [ $? -eq 1 ] ; then
   ## &quot;Distribution basée sur urpmi exemple mandriva...&quot;
   CMDINSTALL=${CMDINSTALL:=&quot;urpmi -a --auto &quot;}
   CMDREMOVE=${CMDREMOVE:=&quot;urpme --auto &quot;}
fi
apt-get -h 2&amp;&gt; /dev/null
if [ $? -eq 0 ] ; then
   ## &quot;Distribution basée sur apt-get exemple debian, ubuntu ...&quot;
   CMDINSTALL=${CMDINSTALL:=&quot;apt-get -y --force-yes install &quot;}
   CMDREMOVE=${CMDREMOVE:=&quot;apt-get -y --force-yes remove --purge &quot;}
fi

if [ $( echo $CMDINSTALL | wc -m ) -eq 1 ] ; then
   echo &quot;Aucun gestionner de paquet connu , n'a été détecté.&quot;
   set -e
   exit 1
fi




interface_WAN=$(ip route | awk '/^default via/{print $5}' | sort -u ) # suppose que la passerelle est la route par default

if [ -f $DIR_CONF/resolv.conf.sav ];then
   DNS1=$(cat $DIR_CONF/resolv.conf.sav | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f1)
   DNS2=$(cat $DIR_CONF/resolv.conf.sav | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f2)
else
   DNS1=$(cat /etc/resolv.conf | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f1)
   DNS2=$(cat /etc/resolv.conf | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f2)
fi

PRIVATE_IP=&quot;127.0.0.10&quot;

FILE_tmp=${FILE_tmp:=&quot;$tempDIRRamfs/filetmp.txt&quot;}
FILE_tmpSizeMax=${FILE_tmpSizeMax:=&quot;128M&quot;}  # 70 Min, Recomend 128M 
LOWRAM=${LOWRAM:=0}
if [ $LOWRAM -eq 0 ] ; then
MFILEtmp=&quot;mount -t tmpfs -o size=$FILE_tmpSizeMax tmpfs $tempDIRRamfs&quot;
UMFILEtmp=&quot;umount $tempDIRRamfs&quot;
else
MFILEtmp=&quot;&quot;
UMFILEtmp=&quot;&quot;
fi
BL_SERVER=&quot;dsi.ut-capitole.fr&quot;
CATEGORIES_ENABLED=&quot;$DIR_CONF/categories-enabled&quot;
BL_CATEGORIES_AVAILABLE=&quot;$DIR_CONF/bl-categories-available&quot;
WL_CATEGORIES_AVAILABLE=&quot;$DIR_CONF/wl-categories-available&quot;
DIR_DNS_FILTER_AVAILABLE=&quot;$DIR_CONF/dnsfilter-available&quot;
DIR_DNS_BLACKLIST_ENABLED=&quot;$DIR_CONF/blacklist-enabled&quot;
DIR_DNS_WHITELIST_ENABLED=&quot;$DIR_CONF/whitelist-enabled&quot;
DNS_FILTER_OSSI=&quot;$DIR_CONF/blacklist-local&quot;
DREAB=&quot;$DIR_CONF/domaine-rehabiliter&quot; 
THISDAYS=$(expr $(date +%Y) \* 365 + $(date +%j))
MAXDAYSFORUPDATE=&quot;7&quot; # update tous les 7 jours
CHEMINCTPARENTLE=$(readlink -f $0)

initblenabled () {
   cat &lt;&lt; EOF &gt; $CATEGORIES_ENABLED
adult
agressif
dangerous_material
dating
drogue
gambling
hacking
malware
marketingware
mixed_adult
phishing
redirector
sect
strict_redirector
strong_redirector
tricheur
warez
ossi   
EOF
         

}

addadminhttpd() {
if [ ! -f $PASSWORDFILEHTTPD ] ; then
    echo -n &gt; $PASSWORDFILEHTTPD   
fi
chown root:$USERHTTPD $PASSWORDFILEHTTPD
chmod 640 $PASSWORDFILEHTTPD
USERADMINHTTPD=${1}
pass=${2}
hash=`echo -n &quot;$USERADMINHTTPD:$REALMADMINHTTPD:$pass&quot; | md5sum | cut -b -32`
ligne=$(echo &quot;$USERADMINHTTPD:$REALMADMINHTTPD:$hash&quot;)
$SED &quot;/^$USERADMINHTTPD:$REALMADMINHTTPD.*/d&quot; $PASSWORDFILEHTTPD
echo $ligne &gt;&gt; $PASSWORDFILEHTTPD
}

download() {
   rm -rf $tempDIR
   mkdir $tempDIR
   wget -P $tempDIR http://$BL_SERVER/blacklists/download/blacklists.tar.gz 2&gt;&amp;1 | cat
   if [ ! $? -eq 0 ]; then
      echo &quot;erreur lors du téléchargement, processus interrompu&quot;
      rm -rf $tempDIR
      set -e
      exit 1
   fi
   tar -xzf $tempDIR/blacklists.tar.gz -C $tempDIR
   if [ ! $? -eq 0 ]; then
      echo &quot;erreur d'extraction de l'archive, processus interrompu&quot;
      set -e
      exit 1
   fi
   rm -rf $DIR_DNS_FILTER_AVAILABLE/
   mkdir $DIR_DNS_FILTER_AVAILABLE
}
autoupdate() {
        LASTUPDATEDAY=`grep LASTUPDATE= $FILE_CONF | cut -d&quot;=&quot; -f2`
        LASTUPDATEDAY=${LASTUPDATEDAY:=0}
        DIFFDAY=$(expr $THISDAYS - $LASTUPDATEDAY)
	if [ $DIFFDAY -ge $MAXDAYSFORUPDATE ] ; then
		download
		adapt
		catChoice
		dnsmasqon
                $SED &quot;s?^LASTUPDATE.*?LASTUPDATE=$THISDAYS=`date +%d-%m-%Y\ %T`?g&quot; $FILE_CONF
		exit 0
	fi
}
autoupdateon() {
$SED &quot;s?^AUTOUPDATE.*?AUTOUPDATE=ON?g&quot; $FILE_CONF
echo &quot;*/10 * * * * root $CHEMINCTPARENTLE -aup&quot; &gt; /etc/cron.d/CTparental-autoupdate
$CRONrestart
}

autoupdateoff() {
$SED &quot;s?^AUTOUPDATE.*?AUTOUPDATE=OFF?g&quot; $FILE_CONF
rm -f /etc/cron.d/CTparental-autoupdate
$CRONrestart
}
adapt() {
   echo adapt
   date +%H:%M:%S
   dnsmasqoff
   $MFILEtmp
   if [ ! -f $DNS_FILTER_OSSI ] ; then
            echo &gt; $DNS_FILTER_OSSI
   fi

   if [ -d $tempDIR  ] ; then
	  CATEGORIES_AVAILABLE=$tempDIR/categories_available
	  ls -FR $tempDIR/blacklists | grep '/$' | sed -e &quot;s/\///g&quot; &gt; $CATEGORIES_AVAILABLE
          echo -n &gt; $BL_CATEGORIES_AVAILABLE
          echo -n &gt; $WL_CATEGORIES_AVAILABLE
          if [ ! -f $DIR_DNS_FILTER_AVAILABLE/ossi.conf ] ; then
		echo &gt; $DIR_DNS_FILTER_AVAILABLE/ossi.conf
	  fi
	  for categorie in `cat $CATEGORIES_AVAILABLE` # creation des deux fichiers de categories (BL / WL)
	  do
		if [ -e $tempDIR/blacklists/$categorie/usage ]
		then
			is_whitelist=`grep white $tempDIR/blacklists/$categorie/usage|wc -l`
		else
			is_whitelist=0 # ou si le fichier 'usage' n'existe pas, on considère que la catégorie est une BL
		fi
		if [ $is_whitelist -eq &quot;0&quot; ]
		then
			echo &quot;$categorie&quot; &gt;&gt; $BL_CATEGORIES_AVAILABLE
		else
			echo &quot;$categorie&quot; &gt;&gt; $WL_CATEGORIES_AVAILABLE
		fi
	   done
         echo -n &quot;Toulouse Black and White List migration process. Please wait : &quot;
         for DOMAINE in `cat  $CATEGORIES_AVAILABLE`  # pour chaque catégorie
         do
            echo -n &quot;.&quot;
            # suppression des @IP, de caractères acccentués et des lignes commentées ou vide
            cp -f $tempDIR/blacklists/$DOMAINE/domains $FILE_tmp
            $SED -r '/([0-9]{1,3}\.){3}[0-9]{1,3}/d' $FILE_tmp
	    $SED &quot;/[äâëêïîöôüû]/d&quot; $FILE_tmp
	    $SED &quot;/^#.*/d&quot; $FILE_tmp
            $SED &quot;/^$/d&quot; $FILE_tmp
            $SED &quot;s/\.\{2,10\}/\./g&quot; $FILE_tmp # supprime les suite de &quot;.&quot; exemple: address=/fucking-big-tits..com/127.0.0.10 devient address=/fucking-big-tits.com/127.0.0.10
	    is_blacklist=`grep $DOMAINE $BL_CATEGORIES_AVAILABLE |wc -l`
	    if [ $is_blacklist -ge &quot;1&quot; ] ; then
            	$SED &quot;s?.*?address=/&amp;/$PRIVATE_IP?g&quot; $FILE_tmp  # Mise en forme dnsmasq des listes noires
		mv $FILE_tmp $DIR_DNS_FILTER_AVAILABLE/$DOMAINE.conf  
            else
		$SED &quot;s?.*?server=/&amp;/#?g&quot; $FILE_tmp  # Mise en forme dnsmasq des listes blanches
		mv $FILE_tmp $DIR_DNS_FILTER_AVAILABLE/$DOMAINE.conf
            fi
         done
   else
         mkdir   $tempDIR
         echo -n &quot;.&quot;
 	 # suppression des @IP, de caractères acccentués et des lignes commentées ou vide
         cp -f $DNS_FILTER_OSSI $FILE_tmp
         $SED -r '/([0-9]{1,3}\.){3}[0-9]{1,3}/d' $FILE_tmp
         $SED &quot;/[äâëêïîöôüû]/d&quot; $FILE_tmp 
         $SED &quot;/^#.*/d&quot; $FILE_tmp 
         $SED &quot;/^$/d&quot; $FILE_tmp 
         $SED &quot;s/\.\{2,10\}/\./g&quot; $FILE_tmp # supprime les suite de &quot;.&quot; exemple: address=/fucking-big-tits..com/127.0.0.10 devient address=/fucking-big-tits.com/127.0.0.10
         $SED &quot;s?.*?address=/&amp;/$PRIVATE_IP?g&quot; $FILE_tmp  # Mise en forme dnsmasq
         mv $FILE_tmp $DIR_DNS_FILTER_AVAILABLE/ossi.conf
   fi     
   echo
   $UMFILEtmp
   rm -rf $tempDIR
date +%H:%M:%S
}
catChoice() {
#   echo &quot;catChoice&quot;
   rm -rf $DIR_DNS_BLACKLIST_ENABLED/
   mkdir $DIR_DNS_BLACKLIST_ENABLED
   rm -rf  $DIR_DNS_WHITELIST_ENABLED/
   mkdir  $DIR_DNS_WHITELIST_ENABLED
     
      for CATEGORIE in `cat $CATEGORIES_ENABLED` # on affecte les catégories dnsmasq
      do
	 is_blacklist=`grep $CATEGORIE $BL_CATEGORIES_AVAILABLE |wc -l`
	 if [ $is_blacklist -ge &quot;1&quot; ] ; then
		cp $DIR_DNS_FILTER_AVAILABLE/$CATEGORIE.conf $DIR_DNS_BLACKLIST_ENABLED/
         else
		cp $DIR_DNS_FILTER_AVAILABLE/$CATEGORIE.conf $DIR_DNS_WHITELIST_ENABLED/
     	 fi     
      done
      cp $DIR_DNS_FILTER_AVAILABLE/ossi.conf $DIR_DNS_BLACKLIST_ENABLED/
#      echo &quot;fincatChoice&quot;
      reabdomaine
}

reabdomaine () {
echo reabdomaine
date +%H:%M:%S
$MFILEtmp
if [ ! -f $DREAB ] ; then
cat &lt;&lt; EOF &gt; $DREAB
www.google.com
www.google.fr
EOF
fi
if [ ! -f $DIR_DNS_BLACKLIST_ENABLED/ossi.conf ] ; then
	echo &gt; $DIR_DNS_BLACKLIST_ENABLED/ossi.conf
fi
echo
echo -n &quot;Application de la liste blanche (domaine réhabilité):&quot;
for CATEGORIE in `cat  $CATEGORIES_ENABLED  `  # pour chaque catégorie
do 
	is_blacklist=`grep $CATEGORIE $BL_CATEGORIES_AVAILABLE |wc -l`
	if [ $is_blacklist -ge &quot;1&quot; ] ; then
		echo -n &quot;.&quot;
		for DOMAINE in `cat  $DREAB`
		do
		    cp -f $DIR_DNS_BLACKLIST_ENABLED/$CATEGORIE.conf $FILE_tmp
		    $SED &quot;/$DOMAINE/d&quot; $FILE_tmp
                    cp -f $FILE_tmp $DIR_DNS_BLACKLIST_ENABLED/$CATEGORIE.conf
		done
        fi
done
echo -n &quot;.&quot;
cat $DREAB | sed -e &quot;s? ??g&quot; | sed -e &quot;s?.*?server=/&amp;/#?g&quot; &gt;  $DIR_DNS_WHITELIST_ENABLED/whiteliste.ossi.conf
echo
$UMFILEtmp
rm -f $FILE_tmp
date +%H:%M:%S
}

dnsmasqon () {
   categorie1=`sed -n &quot;1 p&quot; $CATEGORIES_ENABLED` # on considère que si la 1ère categorie activée est un blacklist on fonctionne par blacklist.
   is_blacklist=`grep $categorie1 $BL_CATEGORIES_AVAILABLE |wc -l`
   if [ $is_blacklist -ge &quot;1&quot; ] ; then
   $SED &quot;s?^DNSMASQ.*?DNSMASQ=BLACK?g&quot; $FILE_CONF
   cat &lt;&lt; EOF &gt; $DNSMASQCONF
         # Configuration file for &quot;dnsmasq with blackhole&quot;
   # Inclusion de la blacklist &lt;domains&gt; de Toulouse dans la configuration
   conf-dir=$DIR_DNS_BLACKLIST_ENABLED
   # conf-file=$DIR_DEST_ETC/alcasar-dns-name   # zone de definition de noms DNS locaux
   no-dhcp-interface=$interface_WAN
   bind-interfaces
   cache-size=1024
   domain-needed
   expand-hosts
   bogus-priv
   server=$DNS1
   server=$DNS2
   
EOF
$DNSMASQrestart
else
  dnsmasqwhitelistonly
fi
}
dnsmasqoff () {
   $SED &quot;s?^DNSMASQ.*?DNSMASQ=OFF?g&quot; $FILE_CONF
   cat &lt;&lt; EOF &gt; $DNSMASQCONF
         # Configuration file for &quot;dnsmasq with blackhole&quot;
   # Inclusion de la blacklist &lt;domains&gt; de Toulouse dans la configuration
   # conf-dir=$DIR_DNS_BLACKLIST_ENABLED
   # conf-file=$DIR_DEST_ETC/alcasar-dns-name   # zone de definition de noms DNS locaux
   no-dhcp-interface=$interface_WAN
   bind-interfaces
   cache-size=0
   domain-needed
   expand-hosts
   bogus-priv
   server=$DNS1
   server=$DNS2
   
EOF

$DNSMASQrestart
}
dnsmasqwhitelistonly  () {
   $SED &quot;s?^DNSMASQ.*?DNSMASQ=WHITE?g&quot; $FILE_CONF
   cat &lt;&lt; EOF &gt; $DNSMASQCONF
         # Configuration file for &quot;dnsmasq with blackhole&quot;
   # Inclusion de la blacklist &lt;domains&gt; de Toulouse dans la configuration
   conf-dir=$DIR_DNS_WHITELIST_ENABLED
   # conf-file=$DIR_DEST_ETC/alcasar-dns-name   # zone de definition de noms DNS locaux
   no-dhcp-interface=$interface_WAN
   bind-interfaces
   cache-size=0
   domain-needed
   expand-hosts
   bogus-priv
   server=$DNS1
   server=$DNS2
   address=/#/$PRIVATE_IP #redirige vers $PRIVATE_IP pour tout ce qui n'a pas été resolu dans les listes blanches
EOF

$DNSMASQrestart
}


FoncHTTPDCONF () {
$LIGHTTPDstop
rm -rf $DIRHTML/*
mkdir -v $DIRHTML
if [ ! -z $DIRhtmlPersonaliser ];then
   cp -r $DIRhtmlPersonaliser/* $DIRHTML
else
s=&quot;span&quot;
st=&quot;style&quot;
c=&quot;$c&quot;
cab=&quot;;\&quot;&gt;&quot;

cat &lt;&lt; EOF &gt; $DIRHTML/index.html
 &lt;HTML&gt;
&lt;HEAD&gt;
   &lt;META HTTP-EQUIV=&quot;CONTENT-TYPE&quot; CONTENT=&quot;text/html; charset=utf-8&quot;&gt;
   &lt;TITLE&gt;danger&lt;/TITLE&gt;
&lt;/HEAD&gt;
&lt;BODY LANG=&quot;fr-FR&quot; DIR=&quot;LTR&quot;&gt;
&lt;CENTER&gt;
&lt;img alt=&quot;Site dangereux pour des mineurs&quot;
  HEIGHT=&quot;600&quot;   
  src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKIAAACgCAYAAACPOrcQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz
AAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAuGSURB
VHic7d17jFTlGcfx7zMol7KriRpF3Sii3FyooE1EWuNaFrFeWjXWqEBCmyYtrSa2iX9g+wcx9RZN
kya29i+1ETWKMSZI1AiClyI2KiJyFa8BBC9EuyAXhad/vDO7s8PszpyZc857zrzPJ9nsZvac931g
fnnf2Zlz3ldUFVNBZCQwDhhf/H480A60Fb+X/9xWPGsP0FP2vfznr4AtwGZgC6p70/qn5IUEHUSR
EcAFwGRc6Epfpybc83ZcKEtf64DXUd2XcL+ZFVYQRYYB04CLi1/TgKFea+pzEFgNrCh+rUb1gN+S
0tP6QRQ5B7gSF7zpwHC/BdVtP7AKF8olqK71XE+iWjOIIh3AjcBcYJLnauLyHvAI8Biq23wXE7fW
CaJIO3AtMAfoAgpe60nOYWAlsAh4CtUev+XEI/9BdFPvrcA1wAjP1aRtH/A0cG/ep+78BlFkOnAb
cLnvUjJiKXAnqqt8F9KI/AVRZBawALjIdykZ9TJwF6ov+C4kivwEUeQq4C/Aeb5LyYm3gL+i+ozv
QuqR/SCKTADuB2b4LiWnlgM3obrJdyGDye5fliIjEbkbeBcLYTNmAO8icnfxo8tMyuaIKPJL4G9A
h+9SWsw24E+oLvZdSKVsBVHkLOABoNt3KS1uGTAf1a2+CynJztQsMhtYg4UwDd3AGkTm+C6kxH8Q
RX6AyIO4Twraah1uYtMGPILIw1l47eh3ahaZDDwBTPRXhMFdinY9qu/4KsDfiCjyW+C/WAizYDyw
GpGbfBWQ/ogoMhR4EJidbsemTouBuWlfC5luEEWOwX1Ib+8LZtsrwM9R/SatDtMLosgo4DlgSjod
miatAy5FdUcanaXzGlFkHPA6FsI8mQysKn7EmrjkgyhyPvAfYHTifZm4nQ68hsi0pDtKNogi3cBL
wAmJ9mOSdDywvPhcJia514huJFwOeH+z1MRiLzAD1TeSaDyZIIqcDbwKHBd/48aj3cCFqG6Iu+H4
gyhyOu41YdI3qRs/tgM/RvWTOBuN9zWiyInAi1gIW9mpwIvF5zo28QXRvVn9PDA2tjZNVo0Fni8+
57GIJ4giAjwJTI2lPZMHU4Eni8990+IaEf8MzIqpLZMfs3DPfdOa/2NFpAt3xe+QGOox+XMI6EZ1
ZTONNBdEkZOAd4BRzRRhcm8nMAXVXY020PjULFIAHsdCaFwGHi9moiHNvEZciFvqzRhwWVjY6MmN
Tc0iF+JWpPJ/z4vJksNAF6qvRj0xehBFjsbdbdcZtTMThPXAVFS/i3JSIyPaH7EQmoF14jISSbQR
UeQ0YAN2RY0Z3F7gbFQ/rfeEqCPi37EQmtpG4rJSt/pHRJHLgWej12QCdgWqS+s5sL4guv1I1gNn
NFeXCcxHQGc9+8fUOzXPx0JoojsDl52aao+IIsOBD4GTmy7LhOgzYAyq+wc7qJ4R8TdYCE3jTsZl
aFCDj4hueZAPsAUzTXO2AWeienCgA2qNiPOwEJrmdeCyNKCBR0SRo4D3sRvjTTw+Bsai+n21Xw42
Is7BQmjiMxqXqaoGC+IfYi/FhG7ATFWfmkU6cbthGhO3Saiur3xwoBFxXrK1mIDNq/bgkSOiyBDc
n9t2C4BJwk6gA9VD5Q9WGxEvxUJokjMKl7F+qgVxXuKlmNDNq3yg/9QschywAxiWWkkmRAeAU1Dd
XXqgckT8BRZCk7xhuKz1qgyirfZv0tIva5VT83bglJQLMmHagWrv8oV9QXSrx2+M3Nwtt8Dw4XEV
Z/Jm1y546KFGz55Y2tC8PIjzgX9Gburrr+HYYxstxOTd2rUwpeFdS36P6gPQ/zXiT5suyphoejPn
gugWW+zyVIwJV1dpoc/SiPhDbC8Uk74TcNnrDeK5/moxgTsX+oKYyn5rxlQxASyIxr9+QbRd5I0v
EwEKxVtGx3guxoRrDCJDC8BZ2I4Axp8hwFkFbFo2/k0sAON9V2GCN74AxLq5nzENOLEAtPuuwgSv
3YJosqC9ALT5rsIEr81GRJMFNjWbTLCp2WSCTc0mE9ptU0eTCQWgx3cRJng9BWCP7ypM8PbYiGiy
oMeCaLLApmaTCTY1m0ywqdlkQk8B+Nx3FSZ4nxeAzb6rMMHbXKCRpeiMidfGArAVOFTrSGMScgjY
WihuXfqh72pMsD5E9WDpogebno0vG6FvyZFNHgsxYdsEFkTjX78gvu2xEBO2t6EviO8CX/qrxQTq
S1z2ikF0Wwus9FePCdTKYvb67SrwkqdiTLh6M1cexBUeCjFh681cXxDdDkA7fFRjgrSjtOsUwFEV
v1wBzI7U3IIFMMw2NA3WF180ema/GbhyU8hfAQ82XJQx9fs1qr2b+NnG4caHGhuHu18sSbkoE54l
5SGEIzcOB3g4nVpMwB6ufKD/1AwgMgTYBoxKpSQTmp1AB6r9roE9ckR0ByxKqSgTnkWVIYRqIyKA
SCfwXgpFmfBMQnV95YPVVwNzB76ZdEUmOG9WCyEMFETnHwkVY8I1YKaqT80AIkcB7wOjEynJhOZj
YCyq31f75cAjojvhrmRqMgG6a6AQwmAjIlDcufQDoCP+ukxAtgFnFu8YrWrwpYvdiffEXJQJzz2D
hRBqjYgAIsNx9z2fHF9dJiCfAWNQ3T/YQbUXc3cN3BdTUSY899UKIdQzIgKIjADWA2c0X5cJyEdA
J6r7ah1Y3/YWrqGbmyzKhOfmekII9QYRQHUp8EyjFZngPFPMTF3qm5p7j5bTgA3AyOh1mYDsBc5G
9dN6T4i285Rr+PaIRZnw3B4lhBB1RAQQORpYA3RGO9EEYj0wFdXvopwUfS8+18F84HDkc02rOwzM
jxpCaCSIAKqvAnc0dK5pZXcUsxFZ9Km590wpAMuAixtrwLSYFUA3qg3NlI0HEUDkJOAd7P6W0O0E
pqC6q9EGmtuv2XV8A7YYfMgOATc0E0JoNogAqiuBhU23Y/JqYTEDTWluau5tRQR4DpjVfGMmR14A
fkYMIYoniAAix+AW+5waT4Mm49YAXaj+L47G4gsigMiJwGvA2PgaNRn0PvATVGPbx7H514jlXGEz
ge2xtmuyZDswM84QQtxBBFD9BLgE2F3rUJM7u4FLis9xrOIPIoDqBuAy3FUYpjXsBS4rPrexSyaI
AKpvAFcB3ybWh0nLt8BVxec0EfH+sVK1BzkfeBY4IdmOTEK+Aq5AdXWSnSQfRACRcbj3nEYn35mJ
0SfApeWLricluam5nOoW4ALc59ImH9YB09MIIaQVRADVncBFwPLU+jSNegW4ENXUtjtJL4hA8V34
y4BHU+3XRLEY9xbNN2l2mm4QwS1jojoH+B1Q88Zrk5oDuNs/r0P1QNqdp/PHyoC9y2TgCWCivyIM
sBm4HlVvr+HTHxHLqa4DfgQ8VOtQk5h/A+f5DCH4HhHLicwG/gW0+S4lEHtwNzplYuF+vyNiOdVH
cZeQLfNdSgCW4W75zEQIIUtBBFDdiupM4Drc4o4mXtuA61CdiepW38WUy1YQS1QXAxNwi4RGvkfW
HOE73P/lhOL/beZk5zXiQEQmAPcDM3yXklPLgZvS+oSkUdkcEcupbkK1G7gaeMt3OTnyFnA1qt1Z
DyHkYUSsJDILWID7uNAc6WXcCv4v+C4kivwFsURkOnAbcLnvUjJiKXAnqqt8F9KI/AaxROQc4Fbg
GmCE52rStg94GrgX1bW+i2lG/oNYItIOXAvMAbrIw+vfxhzG3ba7CHgK1R6/5cSjdYJYTqQDuBGY
C0zyXE1c3gMeAR5DteXeY23NIJZzU/eVuFXLpgPD/RZUt/3AKtwqW0vyPvXW0vpBLCcyDJiGC+XF
xZ+Heq2pz0FgNS54K4DVPi7H8iWsIFZy+8dcAEwGxpd9nZpwz9txl16VvtYBr9e7FUQrCjuIAxEZ
CYzDhXIccDzQjrsyqL3i59LVQnuAnrLv5T9/BWzBhW4Lqna/d4X/A/bydTBs1YRqAAAAAElFTkSu
QmCC&quot; /&gt;
&lt;/CENTER&gt;
&lt;/BODY&gt;
&lt;/HTML&gt;
EOF

fi
## GENERATION

ln -s  $DIRHTML/index.html $DIRHTML/err404.html
USERHTTPD=$(cat /etc/passwd | grep /var/www | cut -d&quot;:&quot; -f1)
GROUPHTTPD=$(cat /etc/group | grep $USERHTTPD | cut -d&quot;:&quot; -f1)
chmod 644 $FILE_CONF
chown root:$GROUPHTTPD $FILE_CONF
cat &lt;&lt; EOF &gt; $MAINCONFHTTPD
server.modules = (
&quot;mod_access&quot;,
&quot;mod_alias&quot;,
&quot;mod_redirect&quot;,
&quot;mod_auth&quot;,	#pour interface admin
&quot;mod_fastcgi&quot;,  #pour interface admin (activation du php)
)
auth.debug                 = 0
auth.backend               = &quot;htdigest&quot; 
auth.backend.htdigest.userfile = &quot;$PASSWORDFILEHTTPD&quot; 

server.document-root = &quot;/var/www&quot;
server.upload-dirs = ( &quot;/var/cache/lighttpd/uploads&quot; )
server.errorlog = &quot;/var/log/lighttpd/error.log&quot;
server.pid-file = &quot;$LIGHTTPpidfile&quot;
server.username = &quot;$USERHTTPD&quot;
server.groupname = &quot;$GROUPHTTPD&quot;
server.port = 80
server.bind = &quot;127.0.0.1&quot;


index-file.names = ( &quot;index.php&quot;, &quot;index.html&quot; )
url.access-deny = ( &quot;~&quot;, &quot;.inc&quot; )
static-file.exclude-extensions = (&quot;.php&quot;, &quot;.pl&quot;, &quot;.fcgi&quot; )

server.tag = &quot;&quot;

include_shell &quot;/usr/share/lighttpd/create-mime.assign.pl&quot;
include_shell &quot;/usr/share/lighttpd/include-conf-enabled.pl&quot;
EOF

mkdir -p /usr/share/lighttpd/

if [ ! -f /usr/share/lighttpd/create-mime.assign.pl ];then
cat &lt;&lt; EOF &gt; /usr/share/lighttpd/create-mime.assign.pl
#!/usr/bin/perl -w
use strict;
open MIMETYPES, &quot;/etc/mime.types&quot; or exit;
print &quot;mimetype.assign = (\n&quot;;
my %extensions;
while(&lt;MIMETYPES&gt;) {
  chomp;
  s/\#.*//;
  next if /^\w*$/;
  if(/^([a-z0-9\/+-.]+)\s+((?:[a-z0-9.+-]+[ ]?)+)$/) {
    foreach(split / /, \$2) {
      # mime.types can have same extension for different
      # mime types
      next if \$extensions{\$_};
      \$extensions{\$_} = 1;
      print &quot;\&quot;.\$_\&quot; =&gt; \&quot;\$1\&quot;,\n&quot;;
    }
  }
}
print &quot;)\n&quot;;
EOF
chmod +x /usr/share/lighttpd/create-mime.assign.pl
fi


if [ ! -f /usr/share/lighttpd/include-conf-enabled.pl ];then
cat &lt;&lt; EOF &gt; /usr/share/lighttpd/include-conf-enabled.pl
#!/usr/bin/perl -wl

use strict;
use File::Glob ':glob';

my \$confdir = shift || &quot;/etc/lighttpd/&quot;;
my \$enabled = &quot;conf-enabled/*.conf&quot;;

chdir(\$confdir);
my @files = bsd_glob(\$enabled);

for my \$file (@files)
{
        print &quot;include \&quot;\$file\&quot;&quot;;
}
EOF
chmod +x /usr/share/lighttpd/include-conf-enabled.pl 

fi

mkdir -p $DIRCONFENABLEDHTTPD
mkdir -p $DIRadminHTML
cp -rf CTadmin/* $DIRadminHTML/
#if [ $noinstalldep = &quot;1&quot; ]; then
#	addadminhttpd &quot;admin&quot; &quot;admin&quot;
#else
	clear 
	echo &quot;Entrer le login pour l'interface d'administration :&quot;
	while (true); do
		 read loginhttp
		 case $loginhttp in
			 * )
			 echo &quot;login:  $loginhttp&quot; &gt; /root/passwordCTadmin
			 break
			 ;;
		 esac
	done
	clear
	echo &quot;Entrer le mot de passe de $loginhttp :&quot;
	while (true); do
		 read password
		 case $password in
			 * )
			 echo &quot;password: $password&quot; &gt;&gt; /root/passwordCTadmin
		         addadminhttpd &quot;$loginhttp&quot; &quot;$password&quot;
			 break
			 ;;
		 esac
	done
#fi
chmod 700 /root/passwordCTadmin
chown root:root /root/passwordCTadmin
cat &lt;&lt; EOF &gt; $CTPARENTALCONFHTTPD

fastcgi.server = (
    &quot;.php&quot; =&gt; (
      &quot;localhost&quot; =&gt; ( 
        &quot;bin-path&quot; =&gt; &quot;/usr/bin/php-cgi&quot;,
        &quot;socket&quot; =&gt; &quot;/run/lighttpd/php-fastcgi.sock&quot;,
        &quot;max-procs&quot; =&gt; 4, # default value
        &quot;bin-environment&quot; =&gt; (
          &quot;PHP_FCGI_CHILDREN&quot; =&gt; &quot;1&quot;, # default value
        ),
        &quot;broken-scriptfilename&quot; =&gt; &quot;enable&quot;
      ))
)
  fastcgi.map-extensions     = ( &quot;.php3&quot; =&gt; &quot;.php&quot;,
                               &quot;.php4&quot; =&gt; &quot;.php&quot;,
                               &quot;.php5&quot; =&gt; &quot;.php&quot;,
                               &quot;.phps&quot; =&gt; &quot;.php&quot;,
                               &quot;.phtml&quot; =&gt; &quot;.php&quot; )

\$HTTP[&quot;url&quot;] =~ &quot;.*CTadmin.*&quot; {
  auth.require = ( &quot;&quot; =&gt;
                   (
                     &quot;method&quot;  =&gt; &quot;digest&quot;,
                     &quot;realm&quot;   =&gt; &quot;$REALMADMINHTTPD&quot;,
                     &quot;require&quot; =&gt; &quot;user=$USERADMINHTTPD&quot; 
                   )
                 )

}
\$SERVER[&quot;socket&quot;] == &quot;$PRIVATE_IP:80&quot; {
server.document-root = &quot;$DIRHTML&quot;
server.errorfile-prefix = &quot;$DIRHTML/err&quot; 
#ssl.engine = &quot;enable&quot; 
#ssl.pemfile = &quot;/etc/lighttpd/ssl/$PRIVATE_IP.pem&quot; 
}

EOF
chown root:$GROUPHTTPD $DREAB
chmod 660 $DREAB
chown root:$GROUPHTTPD $DNS_FILTER_OSSI
chmod 660 $DNS_FILTER_OSSI
chown root:$GROUPHTTPD $CATEGORIES_ENABLED
chmod 660 $CATEGORIES_ENABLED
chmod 660 /etc/sudoers

sudotest=`grep Defaults:$USERHTTPD /etc/sudoers |wc -l`
if [ $sudotest -ge &quot;1&quot; ] ; then
    $SED &quot;s?^Defaults:$USERHTTPD.*requiretty.*?Defaults:$USERHTTPD     \!requiretty?g&quot; /etc/sudoers
else
    echo &quot;Defaults:$USERHTTPD     !requiretty&quot; &gt;&gt; /etc/sudoers
fi

sudotest=`grep &quot;$USERHTTPD ALL=&quot; /etc/sudoers |wc -l`
if [ $sudotest -ge &quot;1&quot; ] ; then
    $SED &quot;s?^$USERHTTPD.*?$USERHTTPD ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh -gctalist,/usr/local/bin/CTparental.sh -gctulist,/usr/local/bin/CTparental.sh -gcton,/usr/local/bin/CTparental.sh -gctoff,/usr/local/bin/CTparental.sh -tlu,/usr/local/bin/CTparental.sh -trf,/usr/local/bin/CTparental.sh -dble,/usr/local/bin/CTparental.sh -ubl,/usr/local/bin/CTparental.sh -dl,/usr/local/bin/CTparental.sh -on,/usr/local/bin/CTparental.sh -off,/usr/local/bin/CTparental.sh -aupon,/usr/local/bin/CTparental.sh -aupoff?g&quot; /etc/sudoers
else
    echo &quot;$USERHTTPD ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh -gctalist,/usr/local/bin/CTparental.sh -gctulist,/usr/local/bin/CTparental.sh -gcton,/usr/local/bin/CTparental.sh -gctoff,/usr/local/bin/CTparental.sh -tlu,/usr/local/bin/CTparental.sh -trf,/usr/local/bin/CTparental.sh -dble,/usr/local/bin/CTparental.sh -ubl,/usr/local/bin/CTparental.sh -dl,/usr/local/bin/CTparental.sh -on,/usr/local/bin/CTparental.sh -off,/usr/local/bin/CTparental.sh -aupon,/usr/local/bin/CTparental.sh -aupoff&quot; &gt;&gt; /etc/sudoers
fi
	

sudotest=`grep %ctoff /etc/sudoers |wc -l`		
if [ $sudotest -ge &quot;1&quot; ] ; then	
   $SED &quot;s?^%ctoff.*?%ctoff ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh -off,/usr/local/bin/CTparental.sh -on?g&quot; /etc/sudoers
else
   echo &quot;%ctoff ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh -off,/usr/local/bin/CTparental.sh -on&quot;  &gt;&gt; /etc/sudoers
fi
sudotest=`grep &quot;ALL  ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh&quot; /etc/sudoers |wc -l`		
if [ $sudotest -ge &quot;1&quot; ] ; then	
	$SED &quot;s?^ALL  ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh.*?ALL  ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh -on?g&quot; /etc/sudoers
else
	echo &quot;ALL  ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh -on&quot; &gt;&gt; /etc/sudoers
fi
unset sudotest
    
chmod 440 /etc/sudoers
if [ ! -f $FILE_HCONF ] ; then 
	echo &gt; $FILE_HCONF 
fi
chown root:$GROUPHTTPD $FILE_HCONF
chmod 660 $FILE_HCONF
listeusers &gt; $FILE_GCTOFFCONF
chown root:$GROUPHTTPD $FILE_GCTOFFCONF
chmod 660 $FILE_GCTOFFCONF
if [ ! -f $FILE_HCOMPT ] ; then
	echo &quot;date=$(date +%D)&quot; &gt; $FILE_HCOMPT
fi
chown root:$GROUPHTTPD $FILE_HCOMPT
chmod 660 $FILE_HCOMPT

chown -R root:$GROUPHTTPD $DIRHTML
chown -R root:$GROUPHTTPD $DIRadminHTML
$LIGHTTPDstart
test=$?
if [ ! $test -eq 0 ];then
	echo &quot;Erreur au lancement du service lighttpd &quot;
	set -e
	exit 1
fi
}

install () {
	groupadd ctoff
	
	if [ $nomanuel -eq 0 ]; then 
		vim -h 2&amp;&gt; /dev/null
		if [ $? -eq 0 ] ; then
		EDIT=&quot;vim &quot;
		fi
		mono -h 2&amp;&gt; /dev/null
		if [ $? -eq 0 ] ; then
		EDIT=${EDIT:=&quot;mono &quot;}
		fi
		vi -h 2&amp;&gt; /dev/null
		if [ $? -eq 0 ] ; then
		EDIT=${EDIT:=&quot;vi &quot;}
		fi
		if [ -f gpl-3.0.fr.txt ] ; then
			cp -f gpl-3.0.fr.txt /usr/local/share/CTparental/
		fi
		if [ -f gpl-3.0.txt ] ; then
			cp -f gpl-3.0.txt /usr/local/share/CTparental/
		fi
		if [ -f CHANGELOG ] ; then
			cp -f CHANGELOG /usr/local/share/CTparental/
		fi
		if [ -f dist.conf ];then
			cp -f dist.conf /usr/local/share/CTparental/dist.conf.orig
			cp -f dist.conf $DIR_CONF/
		fi
		while (true); do
		$EDIT $DIR_CONF/dist.conf
		clear
		cat $EDIT $DIR_CONF/dist.conf | grep -v -E ^#
		echo &quot;Entrer : S pour continuer avec ces parramêtres .&quot;
		echo &quot;Entrer : Q pour Quiter l'installation.&quot;
		echo &quot;Entrer tous autre choix pour modifier les parramêtres.&quot;
		 read choi
		case $choi in
			 S | s )
				break
			;;
			 Q | q )
				exit
			;;
			esac
		done
			
	fi
	if [ -f $DIR_CONF/dist.conf ];then
		source  $DIR_CONF/dist.conf 
	fi

	if [ -f /etc/NetworkManager/NetworkManager.conf ];then
    		 $SED &quot;s/^dns=dnsmasq/#dns=dnsmasq/g&quot; /etc/NetworkManager/NetworkManager.conf
    		 $NWMANAGERrestart
     		sleep 5
   	fi

      mkdir $tempDIR
      mkdir -p $DIR_CONF
      initblenabled
      cat /etc/resolv.conf &gt; $DIR_CONF/resolv.conf.sav
      if [ $noinstalldep = &quot;0&quot; ]; then
	      $CMDINSTALL $DEPENDANCES
      fi
      if [ ! -f blacklists.tar.gz ]
      then
         download
      else
         tar -xzf blacklists.tar.gz -C $tempDIR
         if [ ! $? -eq 0 ]; then
            echo &quot;Erreur d'extraction de l'archive, processus interrompu&quot;
            uninstall
            set -e
            exit 1
         fi
         rm -rf $DIR_DNS_FILTER_AVAILABLE/
         mkdir $DIR_DNS_FILTER_AVAILABLE
      fi
      adapt
      catChoice
      dnsmasqon
      $SED &quot;s?^LASTUPDATE.*?LASTUPDATE=$THISDAYS=`date +%d-%m-%Y\ %T`?g&quot; $FILE_CONF
      confresolvconf
      FoncHTTPDCONF
      $ENCRON
      $ENLIGHTTPD
      $ENDNSMASQ
      $ENNWMANAGER

      
}

confresolvconf () {
if [ $NORESOLVCONF -eq 1 ] ; then
	chattr -i /etc/resolv.conf
	echo &quot;nameserver 127.0.0.1&quot; &gt; /etc/resolv.conf
	chattr +i /etc/resolv.conf
else 
	echo &quot;nameserver 127.0.0.1&quot; &gt; $RESOLVDNSMASQ
	if [ ! -f $RESOLVCONFORDER ];then
cat &lt;&lt; EOF &gt; $RESOLVCONFORDER
	# interface-order(5)
	lo.inet*
	lo.dnsmasq
	lo.pdnsd
	lo.!(pdns|pdns-recursor)
	lo
	tun*
	tap*
	hso*
	em+([0-9])?[+([0-9]))*
	p+([0-9]p+([0-9])?(_+([0-9]))*
	eth*
	ath*
	wlan*
	ppp*
	*
EOF
	fi
	resolvconf -u
fi
}
updatelistgctoff () {
	## on ajoutes tous les utilisateurs manquant dans la liste
	for PCUSER in `listeusers`
	do
		if [ $(cat $FILE_GCTOFFCONF | sed -e &quot;s/#//g&quot; | grep -c -E &quot;^$PCUSER$&quot;) -eq 0 ];then
			echo $PCUSER &gt;&gt; $FILE_GCTOFFCONF
		fi
	done
	## on suprime tous ceux qui n'existe plus sur le pc.
	for PCUSER in $(cat $FILE_GCTOFFCONF | sed -e &quot;s/#//g&quot; )
	do
		if [ $( listeusers | grep -c -E &quot;^$PCUSER$&quot;) -eq 0 ];then
			$SED &quot;/^$PCUSER$/d&quot; $FILE_GCTOFFCONF
			$SED &quot;/^#$PCUSER$/d&quot; $FILE_GCTOFFCONF
		fi
	done
}
applistegctoff () {
	updatelistgctoff

	$ADDUSERTOGROUP root ctoff 2&gt; /dev/null
	for PCUSER in $(cat $FILE_GCTOFFCONF )
	do
		if [ $(echo $PCUSER | grep -c -v &quot;#&quot;) -eq 1 ];then
			$ADDUSERTOGROUP $PCUSER ctoff 2&gt; /dev/null
		else
			$DELUSERTOGROUP $(echo $PCUSER | sed -e &quot;s/#//g&quot; ) ctoff 2&gt; /dev/null
		fi
	done 
}

activegourpectoff () {
groupadd ctoff
$ADDUSERTOGROUP root ctoff
if [ ! -f $STARTUPGDM ];then
cat &lt;&lt; EOF &gt; $STARTUPGDM
#!/bin/bash

exit 0
EOF
chmod 755 $STARTUPGDM
chown root:root $STARTUPGDM
fi
if [ ! -f $STARTUPLIGHTDM ];then
cat &lt;&lt; EOF &gt; $STARTUPLIGHTDM
#!/bin/bash

exit 0
EOF
chmod 755 $STARTUPLIGHTDM
chown root:root $STARTUPLIGHTDM 
fi 
if [ $NOXSESSIOND -eq 1 ];then
$SED &quot;s?\#greeter-setup-script.*?greeter-setup-script=$STARTUPLIGHTDM?g&quot; $CONFLIGHTDM
$SED &quot;$(grep -n -E &quot;^\#\!/bin/&quot; $STARTUPKDM | cut -d&quot;:&quot; -f1)a$XLOGONSCRIPTEALT &amp;&quot; $STARTUPKDM
$SED &quot;$(grep -n -E &quot;^\#\!/bin/&quot; $STARTUPGDM | cut -d&quot;:&quot; -f1)a$XLOGONSCRIPTEALT &amp;&quot; $STARTUPGDM
$SED &quot;$(grep -n -E &quot;^\#\!/bin/&quot; $STARTUPLIGHTDM | cut -d&quot;:&quot; -f1)a$XLOGONSCRIPTEALT &amp;&quot; $STARTUPLIGHTDM

fi
cat &lt;&lt; EOF &gt; $XLOGONSCRIPTEALT
#!/bin/bash
sleep 10
USERSCONECT=\$(who | awk '//{print \$1}' | sort -u)
childloginon=0
for USERCT in \$USERSCONECT
do      
        if [ \$(groups \$USERCT | grep -v -c ctoff ) -eq 1 ] ;then
        childloginon=1
        fi
done
        if [ \$childloginon -eq 1 ];then
                if [ \$(cat $FILE_CONF | grep -c DNSMASQ=OFF ) -eq 1 ];then
                /usr/local/bin/CTparental.sh -on &gt; /dev/null
                fi
        else
                if [ \$(cat $FILE_CONF | grep -c DNSMASQ=OFF ) -eq 0 ];then
                 /usr/local/bin/CTparental.sh -off &gt; /dev/null
                fi
        fi
EOF

cat &lt;&lt; EOF &gt; $XLOGONSCRIPTE
#!/bin/bash
USERSCONECT=\$(who | awk '//{print \$1}' | sort -u)
childloginon=0
for USERCT in \$USERSCONECT
do
	if [ \$(groups \$USERCT | grep -v -c ctoff ) -eq 1 ] ;then
        childloginon=1
	fi
done
	if [ \$childloginon -eq 1 ];then
		if [ \$(cat $FILE_CONF | grep -c DNSMASQ=OFF ) -eq 1 ];then
		sudo /usr/local/bin/CTparental.sh -on &gt; /dev/null
		fi
	else
		if [ \$(cat $FILE_CONF | grep -c DNSMASQ=OFF ) -eq 0 ];then
		sudo /usr/local/bin/CTparental.sh -off &gt; /dev/null
		fi
	fi
EOF
chown root:root $XLOGONSCRIPTEALT
chmod 755 $XLOGONSCRIPTEALT
chown root:root $XLOGONSCRIPTE
chmod 655 $XLOGONSCRIPTE
$SED &quot;s?^GCTOFF.*?GCTOFF=ON?g&quot; $FILE_CONF
applistegctoff
}

desactivegourpectoff () {
if [ $NOXSESSIOND -eq 1 ];then
$SED &quot;$(echo $XLOGONSCRIPTEALT | sed -e 's|\/|\\/|g' | sed -e 's|\.|\\.|g')/d&quot; $STARTUPLIGHTDM
$SED &quot;$(echo $XLOGONSCRIPTEALT | sed -e 's|\/|\\/|g' | sed -e 's|\.|\\.|g')/d&quot; $STARTUPKDM
$SED &quot;$(echo $XLOGONSCRIPTEALT | sed -e 's|\/|\\/|g' | sed -e 's|\.|\\.|g')/d&quot; $STARTUPGDM
fi
   rm -f $XLOGONSCRIPTEALT
   rm -f $XLOGONSCRIPTE
   groupdel ctoff
$SED &quot;s?^GCTOFF.*?GCTOFF=OFF?g&quot; $FILE_CONF
}

uninstall () {
   desactivegourpectoff
   rm -f /etc/cron.d/CTparental*
   $DNSMASQrestart
   $LIGHTTPDstop
   rm -f /var/www/index.lighttpd.html
   rm -rf $tempDIR
   rm -rf $DIRHTML


   rm -rf /usr/local/share/CTparental
   rm -rf /usr/share/lighttpd/*
   rm -f $CTPARENTALCONFHTTPD
   rm -rf $DIRadminHTML
   if [ $NORESOLVCONF -eq 1 ] ; then
		chattr -i /etc/resolv.conf
		cat $DIR_CONF/resolv.conf.sav &gt; /etc/resolv.conf
		dhclient -r
		dhclient
   else 
	   rm -f $RESOLVDNSMASQ
	   resolvconf -u
   fi
   if [ -f /etc/NetworkManager/NetworkManager.conf ];then
	$SED &quot;s/^#dns=dnsmasq/dns=dnsmasq/g&quot; /etc/NetworkManager/NetworkManager.conf
	$NWMANAGERrestart
  	sleep 5
   fi
   rm -rf $DIR_CONF
   if [ $noinstalldep = &quot;0&quot; ]; then
	   $CMDREMOVE $DEPENDANCES 
   fi
}

choiblenabled () {
echo -n &gt; $CATEGORIES_ENABLED
clear
echo &quot;Voulez-vous filtrer par Blacklist ou Whitelist :&quot;
echo -n &quot; B/W :&quot;
while (true); do
         read choi
         case $choi in
         B | b )
         echo &quot;Vous allez maintenant choisir les \&quot;Black listes\&quot; à appliquer.&quot;
		for CATEGORIE in `cat  $BL_CATEGORIES_AVAILABLE`  # pour chaque catégorie
		do   
		      clear
		      echo &quot;Voulez vous activer la categorie :&quot;
		      echo -n &quot;$CATEGORIE  O/N :&quot;
		      while (true); do
			 read choi
			 case $choi in
			 O | o )
			 echo $CATEGORIE &gt;&gt; $CATEGORIES_ENABLED
			 break
			 ;;
			 N | n )
			 break
			 ;;
		      esac
		      done
		done
         break
         ;;
         W | w )
         echo &quot;Vous allez maintenant choisir les \&quot;White listes\&quot; à appliquer.&quot;
		for CATEGORIE in `cat  $WL_CATEGORIES_AVAILABLE`  # pour chaque catégorie
		do   
		      clear
		      echo &quot;Voulez vous activer la categorie :&quot;
		      echo -n &quot;$CATEGORIE  O/N :&quot;
		      while (true); do
			 read choi
			 case $choi in
			 O | o )
			 echo $CATEGORIE &gt;&gt; $CATEGORIES_ENABLED
			 break
			 ;;
			 N | n )
			 break
			 ;;
		      esac
		      done
		done
         break
         ;;
      esac
done
}


errortime1 () {
clear
echo -e &quot;L'heure de début doit être strictement inférieure a l'heure de fin: $RougeD$input$Fcolor &quot;
echo &quot;exemple: 08h00 à 23h59 ou 08h00 à 12h00 et 14h00 à 23h59&quot;
echo -e -n &quot;$RougeD$PCUSER$Fcolor est autorisé à se connecter le $BleuD${DAYS[$NumDAY]}$Fcolor de :&quot;
}
errortime2 () {
clear
echo -e &quot;Mauvaise syntaxe: $RougeD$input$Fcolor &quot;
echo &quot;exemple: 08h00 à 23h59 ou 08h00 à 12h00 et 14h00 à 23h59&quot;
echo -e -n &quot;$RougeD$PCUSER$Fcolor est autorisé à se connecter le $BleuD${DAYS[$NumDAY]}$Fcolor de :&quot;
}


timecronalert () {
MinAlert=${1} # temp en minute entre l'alerte et l'action
H=$((10#${2}))
M=$((10#${3}))
D=$((10#${4}))
MinTotalAlert=&quot;$(($H*60+$M-$MinAlert))&quot;
if [ $(( $MinTotalAlert &lt; 0 )) -eq 1 ] 
then
	if [ $Numday -eq 0 ] ; then
		D=6
	else
		D=$(( $D -1 ))
	fi
	MinTotalAlert=&quot;$(($(($H + 24))*60+$M-$MinAlert))&quot;
fi
Halert=$(($MinTotalAlert/60))
MAlert=$(($MinTotalAlert - $(( $Halert *60 )) ))
echo &quot;$MAlert $Halert * * ${DAYSCRON[$D]}&quot;
}
updatetimelogin () {
	USERSCONECT=$(who | awk '//{print $1}' | sort -u)
   	if [ $(cat $FILE_HCOMPT | grep -c $(date +%D)) -eq 1 ] ; then
			# on incrément le conteur de temps de connection. pour chaque utilisateur connecter
		for PCUSER in $USERSCONECT
		do
		
			if [ $(cat $FILE_HCONF | grep -c ^$PCUSER=user= ) -eq 1 ] ;then
			   if [ $(cat $FILE_HCOMPT | grep -c ^$PCUSER= ) -eq 0 ] ;then
					echo &quot;$PCUSER=1&quot; &gt;&gt; $FILE_HCOMPT
			   else
					count=$(($(cat $FILE_HCOMPT | grep ^$PCUSER= | cut -d&quot;=&quot; -f2) + 1 ))
					$SED &quot;s?^$PCUSER=.*?$PCUSER=$count?g&quot; $FILE_HCOMPT
					temprest=$(($(cat $FILE_HCONF | grep ^$PCUSER=user= | cut -d &quot;=&quot; -f3 ) - $count ))
					echo $temprest
					# si le compteur de l'usager depace la valeur max autoriser on verrouille le compte et on deconnect l'utilisateur.
					if [ $temprest -le 0 ];then
						/usr/bin/skill -KILL -u$PCUSER
						passwd -l $PCUSER
					else
						if [ $temprest -le 5 ];then
						HOMEPCUSER=$(getent passwd &quot;$PCUSER&quot; | cut -d ':' -f6)
						export HOME=$HOMEPCUSER &amp;&amp; export DISPLAY=:0.0 &amp;&amp; export XAUTHORITY=$HOMEPCUSER/.Xauthority &amp;&amp; sudo -u $PCUSER  /usr/bin/notify-send -u critical &quot;Alerte CTparental&quot; &quot;Votre temps de connection restent est de $temprest minutes &quot;
						fi
					fi
			   fi
			   
			else
			# on efface les ligne relative a cette utilisateur
			$SED &quot;/^$PCUSER$/d&quot; $FILE_HCOMPT
			fi

		done	
	else
		# on réactivent tous les comptes
		for PCUSER in `listeusers`
		do
			passwd -u $PCUSER
		done
		# on remait tous les compteurs a zero.
		echo &quot;date=$(date +%D)&quot; &gt; $FILE_HCOMPT
		
	fi
	
}
activetimelogin () {
   TESTGESTIONNAIRE=&quot;&quot;
   for FILE in `echo $GESTIONNAIREDESESSIONS`
   do
      if [ -f $DIRPAM$FILE ];then
         if [ $(cat $DIRPAM$FILE | grep -c &quot;account required pam_time.so&quot;) -eq 0  ] ; then
            $SED &quot;1i account required pam_time.so&quot;  $DIRPAM$FILE
         fi
         TESTGESTIONNAIRE=$TESTGESTIONNAIRE\ $FILE
      fi
   done
   if [ $( echo $TESTGESTIONNAIRE | wc -m ) -eq 1 ] ; then
      echo &quot;Aucun gestionnaire de session connu n'a été détecté.&quot;
      echo &quot; il est donc impossible d'activer le contrôle horaire des connexions&quot;
      desactivetimelogin
      exit 1
   fi
   
   if [ ! -f $FILEPAMTIMECONF.old ] ; then
   cp $FILEPAMTIMECONF $FILEPAMTIMECONF.old
   fi
   echo &quot;*;*;root;Al0000-2400&quot; &gt; $FILEPAMTIMECONF
   for NumDAY in 0 1 2 3 4 5 6
   do
   echo &quot;PATH=$PATH&quot;  &gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
   done
   for PCUSER in `listeusers`
   do
   HOMEPCUSER=$(getent passwd &quot;$PCUSER&quot; | cut -d ':' -f6)
   $SED &quot;/^$PCUSER=/d&quot; $FILE_HCONF
   echo -e -n &quot;$PCUSER est autorisé a se connecter 7j/7 24h/24 O/N?&quot; 
   choi=&quot;&quot;
   while (true); do
   read choi
        case $choi in
         O | o )
	 alltime=&quot;O&quot;
         echo &quot;$PCUSER=admin=&quot; &gt;&gt; $FILE_HCONF
   	break
         ;;
	 N| n )
         alltime=&quot;N&quot;
         clear
         echo -e &quot;$PCUSER est autorisé a se connecter X minutes par jours&quot; 
         echo -e -n &quot;X (1 a 1440) = &quot; 
         while (true); do
         read choi
         if [ $choi -ge 1 ];then
			if [ $choi -le 1440 ];then
				break
			fi
		 fi	
         echo &quot; X doit prendre un valeur entre 1 et 1440 &quot;
         done
         echo &quot;$PCUSER=user=$choi&quot; &gt;&gt; $FILE_HCONF
		 break
         ;;	
   esac
   done
      HORAIRES=&quot;&quot;
      for NumDAY in 0 1 2 3 4 5 6
         do
	 if [ $alltime = &quot;O&quot; ];then	
		break	
	 fi
	 
         clear
         echo &quot;exemple: 00h00 à 23h59 ou 08h00 à 12h00 et 14h00 à 16h50&quot;
         echo -e -n &quot;$RougeD$PCUSER$Fcolor est autorisé à se connecter le $BleuD${DAYS[$NumDAY]}$Fcolor de :&quot;
         while (true); do
            read choi
            input=$choi
            choi=$(echo $choi | sed -e &quot;s/h//g&quot; | sed -e &quot;s/ //g&quot; | sed -e &quot;s/a/-/g&quot; | sed -e &quot;s/et/:/g&quot; ) # mise en forme de la variable choi pour pam   
               if [ $( echo $choi | grep -E -c &quot;^([0-1][0-9]|2[0-3])[0-5][0-9]-([0-1][0-9]|2[0-3])[0-5][0-9]$|^([0-1][0-9]|2[0-3])[0-5][0-9]-([0-1][0-9]|2[0-3])[0-5][0-9]:([0-1][0-9]|2[0-3])[0-5][0-9]-([0-1][0-9]|2[0-3])[0-5][0-9]$&quot; ) -eq 1 ];then
                  int1=$(echo $choi | cut -d &quot;:&quot; -f1 | cut -d &quot;-&quot; -f1)
                  int2=$(echo $choi | cut -d &quot;:&quot; -f1 | cut -d &quot;-&quot; -f2)
                  int3=$(echo $choi | cut -d &quot;:&quot; -f2 | cut -d &quot;-&quot; -f1)
                  int4=$(echo $choi | cut -d &quot;:&quot; -f2 | cut -d &quot;-&quot; -f2)
                  if [ $int1 -lt $int2 ];then
                     if [ ! $(echo $choi | grep -E -c &quot;:&quot;) -eq 1 ] ; then
                        if [ $NumDAY -eq 6 ] ; then
                           HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1-$int2&quot;
                        else
                           HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1-$int2|&quot;
                        fi
                        m1=$(echo $int1 | sed -e 's/.\{02\}//')
                        h1=$(echo $int1 | sed -e 's/.\{02\}$//') 
                        m2=$(echo $int2 | sed -e 's/.\{02\}//')
                        h2=$(echo $int2 | sed -e 's/.\{02\}$//')
						echo &quot;$PCUSER=$NumDAY=$h1${h}h$m1:$h2${h}h$m2&quot; &gt;&gt; $FILE_HCONF   
                        echo &quot;$m2 $h2 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
			for count in 1 2 3 4 5
			do
                        echo &quot;$(timecronalert $count $h2 $m2 $NumDAY) root export HOME=$HOMEPCUSER &amp;&amp; export DISPLAY=:0.0 &amp;&amp; export XAUTHORITY=$HOMEPCUSER/.Xauthority &amp;&amp; sudo -u $PCUSER  /usr/bin/notify-send -u critical \&quot;Alerte CTparental\&quot; \&quot;fermeture de session dans $count minutes \&quot; &quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
			done
                        break
   
                     else   
                        if [ $int2 -lt $int3 ];then
                           if [ $int3 -lt $int4 ];then
                              if [ $NumDAY -eq 6 ] ; then
                                 HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1-$int2|${DAYSPAM[$NumDAY]}$int3-$int4&quot;
                              else
                                 HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1-$int2|${DAYSPAM[$NumDAY]}$int3-$int4|&quot;
                              fi
                              m1=$(echo $int1 | sed -e 's/.\{02\}//')
                              h1=$(echo $int1 | sed -e 's/.\{02\}$//')   
                              m2=$(echo $int2 | sed -e 's/.\{02\}//')
                              h2=$(echo $int2 | sed -e 's/.\{02\}$//')  
                              m3=$(echo $int3 | sed -e 's/.\{02\}//')
                              h3=$(echo $int3 | sed -e 's/.\{02\}$//')   
                              m4=$(echo $int4 | sed -e 's/.\{02\}//')
                              h4=$(echo $int4 | sed -e 's/.\{02\}$//')   
                              ## minutes heures jourdumoi moi jourdelasemaine utilisateur  commande
							  echo &quot;$PCUSER=$NumDAY=$h1${h}h$m1:$h2${h}h$m2:$h3${h}h$m3:$h4${h}h$m4&quot; &gt;&gt; $FILE_HCONF
                              echo &quot;$m2 $h2 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
			      echo &quot;$m4 $h4 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
			      for count in 1 2 3 4 5
			      do
                              echo &quot;$(timecronalert $count $h2 $m2 $NumDAY) root export HOME=$HOMEPCUSER &amp;&amp; export DISPLAY=:0.0 &amp;&amp; export XAUTHORITY=$HOMEPCUSER/.Xauthority &amp;&amp; sudo -u $PCUSER  /usr/bin/notify-send -u critical \&quot;Alerte CTparental\&quot; \&quot;fermeture de session dans $count minutes \&quot; &quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
                              echo &quot;$(timecronalert $count $h4 $m4 $NumDAY) root export HOME=$HOMEPCUSER &amp;&amp; export DISPLAY=:0.0 &amp;&amp; export XAUTHORITY=$HOMEPCUSER/.Xauthority &amp;&amp; sudo -u $PCUSER  /usr/bin/notify-send -u critical \&quot;Alerte CTparental\&quot; \&quot;fermeture de session dans $count minutes\&quot; &quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
			      done
                             
                              break   
                           else
                              errortime1
                           fi
                        else
                           errortime1
                        fi
                     fi
                  else
                     errortime1
   
                  fi
                       
               else
                  errortime2   
               fi
           
         done
     
        done
     	if [ $alltime = &quot;N&quot; ] ; then
		echo &quot;*;*;$PCUSER;$HORAIRESPAM&quot; &gt;&gt; $FILEPAMTIMECONF
	else
		echo &quot;*;*;$PCUSER;Al0000-2400&quot; &gt;&gt; $FILEPAMTIMECONF
	fi
   done
   
   for NumDAY in 0 1 2 3 4 5 6
   do
      echo &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
   done
   echo &gt;&gt; $FILE_HCONF
echo &quot;PATH=$PATH&quot;  &gt; /etc/cron.d/CTparentalmaxtimelogin
echo &quot;*/1 * * * * root /usr/local/bin/CTparental.sh -uctl&quot; &gt;&gt; /etc/cron.d/CTparentalmaxtimelogin
$SED &quot;s?^HOURSCONNECT.*?HOURSCONNECT=ON?g&quot; $FILE_CONF
$CRONrestart
}

desactivetimelogin () {
for FILE in `echo $GESTIONNAIREDESESSIONS`
do
   $SED &quot;/account required pam_time.so/d&quot; $DIRPAM$FILE
done
cat $FILEPAMTIMECONF.old &gt; $FILEPAMTIMECONF
for NumDAY in 0 1 2 3 4 5 6
do
   rm -f /etc/cron.d/CTparental${DAYS[$NumDAY]}
done
rm -f /etc/cron.d/CTparentalmaxtimelogin
$SED &quot;s?^HOURSCONNECT.*?HOURSCONNECT=OFF?g&quot; $FILE_CONF
for PCUSER in `listeusers`
do
	passwd -u $PCUSER
done
# on remait tous les compteurs a zero.
echo &quot;date=$(date +%D)&quot; &gt; $FILE_HCOMPT
echo &gt; $FILE_HCONF
$CRONrestart
}


listeusers () {
TABUSER=( &quot; $(getent passwd | cut -d&quot;:&quot; -f1,3) &quot; )
for LIGNES in $TABUSER
do
#echo $(echo $LIGNES | cut -d&quot;:&quot; -f2)
if [ $(echo $LIGNES | cut -d&quot;:&quot; -f2) -ge $UIDMINUSER ] ;then
	echo $LIGNES | cut -d&quot;:&quot; -f1
fi
done
}


readTimeFILECONF () {
   TESTGESTIONNAIRE=&quot;&quot;
   for FILE in `echo $GESTIONNAIREDESESSIONS`
   do
      if [ -f $DIRPAM$FILE ];then
         if [ $(cat $DIRPAM$FILE | grep -c &quot;account required pam_time.so&quot;) -eq 0  ] ; then
            $SED &quot;1i account required pam_time.so&quot;  $DIRPAM$FILE
         fi
         TESTGESTIONNAIRE=$TESTGESTIONNAIRE\ $FILE
      fi
   done
   if [ $( echo $TESTGESTIONNAIRE | wc -m ) -eq 1 ] ; then
      echo &quot;Aucun gestionnaire de session connu n'a été détecté.&quot;
      echo &quot; il est donc impossible d'activer le contrôle horaire des connexions&quot;
      desactivetimelogin
      exit 1
   fi
   
   if [ ! -f $FILEPAMTIMECONF.old ] ; then
   cp $FILEPAMTIMECONF $FILEPAMTIMECONF.old
   fi
   echo &quot;*;*;root;Al0000-2400&quot; &gt; $FILEPAMTIMECONF
   for NumDAY in 0 1 2 3 4 5 6
   do
   echo &quot;PATH=$PATH&quot; &gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
   done
   
   for PCUSER in `listeusers`
   do
   HOMEPCUSER=$(getent passwd &quot;$PCUSER&quot; | cut -d ':' -f6)
   HORAIRESPAM=&quot;&quot;
  	userisconfigured=&quot;0&quot;

	while read line
	do
	
			if [ $( echo $line | grep -E -c &quot;^$PCUSER=[0-6]=&quot; ) -eq 1 ] ; then
				echo &quot;$line&quot; 
				NumDAY=$(echo $line | cut -d&quot;=&quot; -f2)
				h1=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f1 | cut -d&quot;h&quot; -f1)
				m1=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f1 | cut -d&quot;h&quot; -f2)
				h2=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f2 | cut -d&quot;h&quot; -f1)
				m2=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f2 | cut -d&quot;h&quot; -f2)
				h3=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f3 | cut -d&quot;h&quot; -f1)
				m3=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f3 | cut -d&quot;h&quot; -f2)
				h4=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f4 | cut -d&quot;h&quot; -f1)
				m4=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f4 | cut -d&quot;h&quot; -f2)
				if [ $(echo -n $h3$m3 | wc -c) -gt 2 ]; then
 					if [ $NumDAY -eq 6 ] ; then
		                        	HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$h1$m1-$h2$m2|${DAYSPAM[$NumDAY]}$h3$m3-$h4$m4&quot;
						
		                      	else
		                        	HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$h1$m1-$h2$m2|${DAYSPAM[$NumDAY]}$h3$m3-$h4$m4|&quot;
		                      	fi
					echo &quot;$m2 $h2 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
					echo &quot;$m4 $h4 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
					for count in 1 2 3 4 5
					do
					echo &quot;$(timecronalert $count $h2 $m2 $NumDAY) root export HOME=$HOMEPCUSER &amp;&amp; export DISPLAY=:0.0 &amp;&amp; export XAUTHORITY=$HOMEPCUSER/.Xauthority &amp;&amp; sudo -u $PCUSER  /usr/bin/notify-send -u critical \&quot;Alerte CTparental\&quot; \&quot;fermeture de session dans $count minutes \&quot; &quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
					echo &quot;$(timecronalert $count $h4 $m4 $NumDAY) root export HOME=$HOMEPCUSER &amp;&amp; export DISPLAY=:0.0 &amp;&amp; export XAUTHORITY=$HOMEPCUSER/.Xauthority &amp;&amp; sudo -u $PCUSER  /usr/bin/notify-send -u critical \&quot;Alerte CTparental\&quot; \&quot;fermeture de session dans $count minutes \&quot; &quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
					userisconfigured=&quot;1&quot;
					done

				else
				        if [ $NumDAY -eq 6 ] ; then
				           HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$h1$m1-$h2$m2&quot;
				        else
				           HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$h1$m1-$h2$m2|&quot;
				        fi
					for count in 1 2 3 4 5
					do
					echo &quot;$(timecronalert $count $h2 $m2 $NumDAY) root export HOME=$HOMEPCUSER &amp;&amp; export DISPLAY=:0.0 &amp;&amp; export XAUTHORITY=$HOMEPCUSER/.Xauthority &amp;&amp; sudo -u $PCUSER  /usr/bin/notify-send -u critical \&quot;Alerte CTparental\&quot; \&quot;fermeture de session dans $count minutes \&quot; &quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
					done
					echo &quot;$m2 $h2 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
					
					userisconfigured=&quot;1&quot;
				fi
			fi
	
	
	done &lt; $FILE_HCONF
	if [ $userisconfigured -eq 1 ] ; then
		echo &quot;*;*;$PCUSER;$HORAIRESPAM&quot; &gt;&gt; $FILEPAMTIMECONF
	else
		echo &quot;*;*;$PCUSER;Al0000-2400&quot; &gt;&gt; $FILEPAMTIMECONF
	fi
   done
echo &quot;PATH=$PATH&quot;  &gt; /etc/cron.d/CTparentalmaxtimelogin  
echo &quot;*/1 * * * * root /usr/local/bin/CTparental.sh -uctl&quot; &gt; /etc/cron.d/CTparentalmaxtimelogin
$SED &quot;s?^HOURSCONNECT.*?HOURSCONNECT=ON?g&quot; $FILE_CONF
$CRONrestart
}



usage=&quot;Usage: CTparental.sh    {-i }|{ -u }|{ -dl }|{ -ubl }|{ -rl }|{ -on }|{ -off }|{ -cble }|{ -dble }
                               |{ -tlo }|{ -tlu }|{ -uhtml }|{ -aupon }|{ -aupoff }|{ -aup } 
-i      =&gt; Installe le contrôle parental sur l'ordinateur (pc de bureau). Peut être utilisé avec
           un paramètre supplémentaire pour indiquer un chemin de sources pour la page web de redirection.
           exemple : CTparental.sh -i -dirhtml /home/toto/html/
           si pas d'option le \&quot;sens interdit\&quot; est utilisé par défaut.
-u      =&gt; désinstalle le contrôle parental de l'ordinateur (pc de bureau)
-dl     =&gt; met à jour le contrôle parental à partir de la blacklist de l'université de Toulouse
-ubl    =&gt; A faire après chaque modification du fichier $DNS_FILTER_OSSI
-rl     =&gt; A faire après chaque modification manuelle du fichier $DREAB
-on     =&gt; Active le contrôle parental
-off    =&gt; Désactive le contrôle parental
-cble   =&gt; Configure le mode de filtrage par liste blanche ou par liste noire (défaut) ainsi que les 
           catégories que l'on veut activer.
-dble   =&gt; Remet les catégories actives par défaut et le filtrage par liste noire.
-tlo    =&gt; Active et paramètre les restrictions horaires de login pour les utilisateurs.
           Compatible avec les gestionnaire de sessions suivant $GESTIONNAIREDESESSIONS .
-tlu    =&gt; Désactive les restrictions horaires de login pour les utilisateurs.
-uhtml  =&gt; met à jour la page de redirection à partir d'un répertoire source ou par défaut avec 
            le \&quot;sens interdit\&quot;.
            exemples:
                     - avec un repertoire source : CTparental.sh -uhtml -dirhtml /home/toto/html/
   		     - par défaut :              CTparental.sh -uhtml
            permet aussi de changer le couple login, mot de passe de l'interface web.
-aupon  =&gt; active la mise à jour automatique de la blacklist de Toulouse (tous les 7 jours).
-aupoff =&gt; désactive la mise à jour automatique de la blacklist de Toulouse.
-aup    =&gt; comme -dl mais seulement si il n'y a pas eu de mise à jour depuis plus de 7 jours.
-nodep  =&gt; si placer aprés -i ou -u permet de ne pas installer/désinstaller les dépendances, utiles si 
            on préfaire les installer a la mains , ou pour le scripte de postinst et prerm 
            du deb.
            exemples:
                     CTparental.sh -i -nodep	
		     CTparental.sh -i -dirhtml /home/toto/html/ -nodep   
		     CTparental.sh -u -nodep 
-nomanuel =&gt; utiliser uniquement pour le scripte de postinst et prerm 
            du deb.
-gcton	  =&gt; créer un group de privilégier ne subisent pas le filtrage.
			 mais ralenti les ouvertures de sessions, quant on passe d'un user restraint a un qui ne l'est pas 
			 est inversement.
			 exemple:CTparental.sh -gctulist
			 editer $FILE_GCTOFFCONF et y commanter tous les utilisateurs que l'on veut filtrer.
			 CTparental.sh -gctalist
			 (note temps qu'un utilisateur non privilégier restera connecter le filtrage sera actif!!)
-gctoff   =&gt; suprime le group de privilégier .
			 tous les utilisateurs du system subisse le filtrages!!
-gctulist =&gt; Mes a jour le fichier de conf du group , $FILE_GCTOFFCONF
			 en fonction des utilisateur ajouter ou suprimer du pc.
-gctalist =&gt; Ajoute/Suprime les utilisateurs dans le group ctoff en fonction du fichier de conf.
	 
 &quot;
case $arg1 in
   -\? | -h* | --h*)
      echo &quot;$usage&quot;
      exit 0
      ;;
   -i | --install )
      install
      exit 0
      ;;
   -u | --uninstall )
      autoupdateoff 
      dnsmasqoff
      desactivetimelogin
      uninstall
      exit 0
      ;;
   -dl | --download )
      download
      adapt
      catChoice
      dnsmasqon
      $SED &quot;s?^LASTUPDATE.*?LASTUPDATE=$THISDAYS=`date +%d-%m-%Y\ %T`?g&quot; $FILE_CONF
      exit 0
      ;;
   -ubl | --updatebl )
      adapt
      catChoice
      dnsmasqon
      exit 0
      ;;
   -uhtml | --updatehtml )
      FoncHTTPDCONF
      exit 0
      ;;
   -rl | --reload )
      catChoice
      dnsmasqon
      exit 0
      ;;
   -on | --on )
      dnsmasqon
      exit 0
      ;;
   -off | --off )
      autoupdateoff 
      dnsmasqoff
      exit 0
      ;;
   -wlo | --whitelistonly )
      dnsmasqwhitelistonly
      exit 0
      ;;
   -cble | --confblenable )
      choiblenabled
      catChoice
      dnsmasqon
      exit 0
      ;;
    -dble | --defaultblenable )
      initblenabled
      catChoice
      dnsmasqon
      ;;
    -tlo | --timeloginon )
      activetimelogin
      ;;
    -tlu | --timeloginon )
      desactivetimelogin
      ;;
    -trf | --timeloginon )
      readTimeFILECONF
      ;;
    -aupon | --autoupdateon )
      autoupdateon
      ;;
    -aupoff | --autoupdateoff )
      autoupdateoff
      ;;
    -aup | --autoupdate )
      autoupdate
      ;;
    -listusers )
      listeusers
      ;;
    -gcton )
      activegourpectoff
      ;;
    -gctoff )
	  desactivegourpectoff
      ;;
    -gctulist )
	  updatelistgctoff
      ;;
    -gctalist )
	  applistegctoff
      ;;
    -uctl )
	  # apelet toute les minute par cron pour activer desactiver les usagers ayant des restrictions de temps journalier de connection.
	  updatetimelogin
      ;;      
      
   *)
      echo &quot;Argument inconnu :$1&quot;;
      echo &quot;$usage&quot;;
      exit 1
      ;;
esac

&lt;/code&gt;
'''index.php'''
&lt;code php&gt;
&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;
&lt;HTML&gt;&lt;!-- written by Rexy --&gt;
&lt;HEAD&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot;&gt;
&lt;TITLE&gt;CTparental DNS filtering&lt;/TITLE&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;/CTadmin/css/style.css&quot; type=&quot;text/css&quot;&gt;
&lt;/HEAD&gt;
&lt;body&gt;
&lt;?php
function form_filter ($form_content)
{
// réencodage iso + format unix + rc fin de ligne (ouf...)
	$list = str_replace(&quot;\r\n&quot;, &quot;\n&quot;, utf8_decode($form_content));
	if (strlen($list) != 0){
		if ($list[strlen($list)-1] != &quot;\n&quot;) { $list[strlen($list)]=&quot;\n&quot;;} ;} ;
	return $list;
}
# Choice of language
$Language = 'en';
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
  $Langue = explode(&quot;,&quot;,$_SERVER['HTTP_ACCEPT_LANGUAGE']);
  $Language = strtolower(substr(chop($Langue[0]),0,2)); }
if($Language == 'fr'){
  $l_switch_LogOFF=&quot;Déconnection&quot;;
  $l_hours_error1=&quot;un mauvais format horaire a été trouvé :exemple 8h30 doit s'écrire 08h30&quot;;
  $l_hours_error2=&quot;incohérence horaire : &quot;;
  $l_hours_on = &quot;Les horaires de connexion sont actuellement activés&quot;;
  $l_hours_off = &quot;Les horaires de connexion sont actuellement désactivés&quot;;
  $l_switch_hours_off = &quot;Désactiver les horaires de connexion&quot;;
  $l_switch_hours_on = &quot;Activer les horaires de connexion&quot;;
  $l_hours1 = &quot;Heures de connexions autorisées&quot;;
  $l_switch_Init_bl = &quot;Init Catégories&quot;;
  $l_auto_update_on = &quot;La mise à jour de la blacklist de Toulouse tous les 7 jours est activée&quot;;
  $l_auto_update_off = &quot;La mise à jour de la blacklist de Toulouse tous les 7 jours est désactivée&quot;;
  $l_switch_auto_update_on = &quot;Activer Maj Auto&quot;;
  $l_switch_auto_update_off = &quot;Désactiver Maj Auto&quot;;
  $l_fmenu_black = &quot;Filtrage par BlackList&quot;;
  $l_fmenu_white = &quot;Filtrage par WhiteList&quot;;
  $l_title1 = &quot;Filtrage de noms de domaine &quot;;
  $l_error_open_file=&quot;Erreur d'ouverture du fichier&quot;;
  $l_dnsfilter_on=&quot;Le filtrage de noms de domaine est actuellement activé&quot;;
  $l_dnsfilter_off=&quot;Le filtrage de noms de domaine est actuellement désactivé&quot;;
  $l_switch_filtering_on=&quot;Activer le filtrage&quot;;
  $l_switch_filtering_off=&quot;Désactiver le filtrage&quot;;
  $l_main_bl=&quot;Liste noire/blanche&quot;;
  $l_bl_version=&quot;Version actuelle :&quot;;
  $l_bl_categories_bl=&quot;Choix des catégories à filtrer&quot;;
  $l_bl_categories_wl=&quot;Choix des catégories à autoriser&quot;;
  $l_download_bl=&quot;Télécharger la dernière version&quot;;
  $l_fingerprint=&quot;L'empreinte numérique du fichier téléchargé est : &quot;;
  $l_fingerprint2=&quot;Vérifiez-là en suivant ce lien (ligne 'blacklists.tar.gz') : &quot;;
  $l_activate_bl=&quot;Activer la nouvelle version&quot;;
  $l_reject_bl=&quot;Rejeter&quot;;
  $l_warning=&quot;Temps estimé : une minute.&quot;;
  $l_specific_filtering=&quot;Filtrage spécial&quot;;
  $l_forbidden_dns=&quot;Noms de domaine filtrés&quot;;
  $l_forbidden_dns_explain=&quot;Entrez un nom de domaine par ligne (exemple : domaine.org)&quot;;
  $l_one_dns=&quot;Entrez un nom de domaine par ligne (exemple : domaine.org)&quot;;
  $l_rehabilitated_dns=&quot;Noms de domaine réhabilités&quot;;
  $l_rehabilitated_dns_explain_bl=&quot;1-Entrez ici des noms de domaine bloqués par la liste noire &lt;BR&gt; que vous souhaitez réhabiliter.&quot;;
  $l_rehabilitated_dns_explain_wl=&quot;2-Entrez ici des noms de domaine autorisés en plus de ceux &lt;BR&gt; de la liste blanche de Toulouse.&quot;;
  $l_add_to_bl=&quot;Noms de domaine ajoutés à la liste noire&quot;;
  $l_record=&quot;Enregistrer les modifications&quot;;
  $l_wait=&quot;Une fois validées, 30 secondes sont nécessaires pour traiter vos modifications&quot;;
  $l_title_gctoff=&quot;Groupe privilégié&quot;;
  $l_gctoff_explain=&quot;Cocher des utilisateurs ne devant pas subir de filtrage&quot;;
  $l_gctoff_username=&quot;Nom d'utilisateur&quot;;
  $l_gctoff_username_comment=&quot;Commentaires&quot;;
  $l_switch_gctoff_on=&quot;Activer le groupe de privilégiés.&quot;;
  $l_switch_gctoff_off=&quot;Désactiver le groupe de privilégiés.&quot;;
  $l_gctoff_on = &quot;Le Groupe privilégié est actuellement activés&quot;;
  $l_gctoff_off = &quot;Le Groupe privilégié est actuellement désactivés&quot;;

}
else {
  $l_switch_LogOFF=&quot;Logout&quot;;
  $l_hours_error1=&quot;Un mauvais format horaire a été trouvé : exemple 8h30 doit s'écrire 08h30&quot;;
  $l_hours_error2=&quot;incohérence horaire : &quot;;
  $l_hours_on = &quot;Les horaires de connexion sont actuellement activés&quot;;
  $l_hours_off = &quot;Les horaires de connexion sont actuellement désactivés&quot;;
  $l_switch_hours_off = &quot;Désactiver les horaires de connexion&quot;;
  $l_switch_hours_on = &quot;Activer les horaires de connexion&quot;;
  $l_hours1 = &quot;Heures de connexions autorisées&quot;;
  $l_switch_Init_bl = &quot;Init Catégories&quot;;
  $l_auto_update_on = &quot;La mise à jour de la blacklist de Toulouse tous les 7 jours est activée&quot;;
  $l_auto_update_off = &quot;La mise à jour de la blacklist de Toulouse tous les 7 jours est désactivée&quot;;
  $l_switch_auto_update_on = &quot;Activer Maj Auto&quot;;
  $l_switch_auto_update_off = &quot;Désactiver Maj Auto&quot;;
  $l_fmenu_black = &quot;Filtrage par BlackList&quot;;
  $l_fmenu_white = &quot;Filtrage par WhiteList&quot;;
  $l_title1 = &quot;Domain names filtering&quot;;
  $l_error_open_file=&quot;Error opening the file&quot;;
  $l_dnsfilter_on=&quot;Actually, the Domain name filter is on&quot;;
  $l_dnsfilter_off=&quot;Actually, the Domain name filter is off&quot;;
  $l_switch_filtering_on=&quot;Switch the Filter on&quot;;
  $l_switch_filtering_off=&quot;Switch the Filter off&quot;;
  $l_main_bl=&quot;Blacklist/Whitelist&quot;;
  $l_bl_version=&quot;Current version : &quot;;
  $l_bl_categories_bl=&quot;Choice of filtered categories&quot;;
  $l_bl_categories_wl=&quot;Choice of authorized categories&quot;;
  $l_download_bl=&quot;Download the last version&quot;;
  $l_fingerprint=&quot;The digital fingerprint of the downloaded blacklist is : &quot;;
  $l_fingerprint2=&quot;Verify it with this link (line 'blacklists.tar.gz') : &quot;;
  $l_activate_bl=&quot;Activate the new version&quot;;
  $l_reject_bl=&quot;Reject&quot;;
  $l_warning=&quot;Estimated time : one minute.&quot;;
  $l_specific_filtering=&quot;Specific filtering&quot;;
  $l_forbidden_dns=&quot;Filtered domain names&quot;;
  $l_forbidden_dns_explain=&quot;Enter one domain name per row (exemple : domain.org)&quot;;
  $l_one_dns=&quot;Enter one domain name per row (example : domain.org)&quot;;
  $l_rehabilitated_dns=&quot;Rehabilitated domain names&quot;;
  $l_rehabilitated_dns_explain_bl=&quot;Enter here domain names that are blocked by the blacklist &lt;BR&gt; and you want to rehabilitate.&quot;;
  $l_rehabilitated_dns_explain_wl=&quot;2-Entrez ici des noms de domaine autorisés en plus de ceux &lt;BR&gt; de la liste blanche de Toulouse.&quot;;
  $l_add_to_bl=&quot;Domain names to add to blacklist&quot;;
  $l_record=&quot;Save changes&quot;;
  $l_wait=&quot;Once validated, 30 seconds is necessary to compute your modifications&quot;;
  $l_title_gctoff=&quot;Groupe privilégié&quot;;
  $l_gctoff_explain=&quot;Cocher des utilisateurs ne devant pas subir de filtrage&quot;;
  $l_gctoff_username=&quot;Username&quot;;
  $l_gctoff_username_comment=&quot;Comments&quot;;
  $l_switch_gctoff_on=&quot;Activer le groupe de privilégiés.&quot;;
  $l_switch_gctoff_off=&quot;Désactiver le groupe de privilégiés.&quot;;
  $l_gctoff_on = &quot;Le Groupe privilégié est actuellement activés&quot;;
  $l_gctoff_off = &quot;Le Groupe privilégié est actuellement désactivés&quot;;

 }
$weeknum = array( 0,1,2,3,4,5,6);
$bl_categories=&quot;/usr/local/etc/CTparental/bl-categories-available&quot;;
$bl_categories_enabled=&quot;/usr/local/etc/CTparental/categories-enabled&quot;;
$conf_file=&quot;/usr/local/etc/CTparental/CTparental.conf&quot;;
$conf_ctoff_file=&quot;/usr/local/etc/CTparental/GCToff.conf&quot;;
$hconf_file=&quot;/usr/local/etc/CTparental/CThours.conf&quot;;
$wl_domains=&quot;/usr/local/etc/CTparental/domaine-rehabiliter&quot;;
$bl_domains=&quot;/usr/local/etc/CTparental/blacklist-local&quot;;
# default values


if (isset($_POST['choix'])){ $choix=$_POST['choix']; } else { $choix=&quot;&quot;; }
switch ($choix)
{
case 'gct_Off' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -gctoff&quot;);
	break;
case 'gct_On' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -gcton&quot;);
	break;
case 'LogOFF' :
	header('HTTP/1.0 401 Unauthorized');
	header('WWW-Authenticate: Digest realm=&quot;interface admin&quot;');
	exit;
	break;
case 'BL_On' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -on&quot;);
	break;
case 'BL_Off' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -off&quot;);
	break;
case 'H_On' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -trf&quot;);
	break;
case 'H_Off' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -tlu&quot;);
	break;
case 'AUP_On' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -aupon&quot;);
	break;
case 'AUP_Off' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -aupoff&quot;);
	break;
case 'INIT_BL' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -dble&quot;);
	break;
case 'Download_bl' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -dl&quot;);
	break;
case 'MAJ_cat' :
	$tab=file($bl_categories_enabled);	
	if ($tab)
		{
		$pointeur=fopen($bl_categories_enabled, &quot;w+&quot;);
		foreach ($_POST as $key =&gt; $value)
			{
                        if (strstr($key,'chk-'))
				{	
				$line=str_replace('chk-','',$key).&quot;\n&quot;;
				fwrite($pointeur,$line);
				}
			}
		fclose($pointeur);
		}
	else {echo &quot;$l_error_open_file $bl_categories_enabled&quot;;}
	$fichier=fopen($bl_domains,&quot;w+&quot;);
	fputs($fichier, form_filter($_POST['OSSI_bl_domains']));
	fclose($fichier);
	unset($_POST['OSSI_bl_domains']);
	$fichier=fopen($wl_domains,&quot;w+&quot;);
	fputs($fichier, form_filter($_POST['OSSI_wl_domains']));
	fclose($fichier);
	unset($_POST['OSSI_wl_domains']);
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -ubl&quot;);
	break;
case 'MAJ_H' :
	$formatheuresok=1;
	if (isset($_POST['selectuser'])){ $selectuser=$_POST['selectuser']; }
	#echo &quot;$selectuser&quot;;
	$tab=file($hconf_file);	
	if ($tab)
	{
		$pointeur=fopen($hconf_file, &quot;w+&quot;);	
		foreach ($tab as $line)
		{
			if (strstr($line,$selectuser) == false)
			{
				fwrite($pointeur,$line); # on reécrit toutes les lignes ne correspondant pas à l'utilisateur sélectionné
			}
	
		}
	}
	else {echo &quot;$l_error_open_file $hconf_file&quot;;}
	if (isset($_POST[&quot;isadmin&quot;])){fwrite($pointeur,&quot;$selectuser=admin=&quot;.&quot;\n&quot;); } 
	else 
	{
		if (isset($_POST[&quot;tmax&quot;])){fwrite($pointeur,&quot;$selectuser=user=&quot;.$_POST[&quot;tmax&quot;].&quot;\n&quot;); }
		else {fwrite($pointeur,&quot;$selectuser=user=1440&quot;.&quot;\n&quot;); }
		foreach ($weeknum as $numday)
		{
			$formatheuresok=1;
			if (isset($_POST[&quot;h1$numday&quot;])){ $h1[$numday]=$_POST[&quot;h1$numday&quot;]; } else { $h1[$numday]=&quot;00h00&quot;; }
			if (isset($_POST[&quot;h2$numday&quot;])){ $h2[$numday]=$_POST[&quot;h2$numday&quot;]; } else { $h2[$numday]=&quot;23h59&quot;; }
			if (isset($_POST[&quot;h3$numday&quot;])){ $h3[$numday]=$_POST[&quot;h3$numday&quot;]; } else { $h3[$numday]=&quot;&quot;; }
			if (isset($_POST[&quot;h4$numday&quot;])){ $h4[$numday]=$_POST[&quot;h4$numday&quot;]; } else { $h4[$numday]=&quot;&quot;; }
			if (preg_match(&quot;/^[0-1][0-9]h[0-5][0-9]$|^2[0-3]h[0-5][0-9]$/&quot;,$h1[$numday])!=1){$formatheuresok=0;}
			if (preg_match(&quot;/^[0-1][0-9]h[0-5][0-9]$|^2[0-3]h[0-5][0-9]$/&quot;,$h2[$numday])!=1){$formatheuresok=0;}
			if ($h3[$numday]==&quot;&quot;)
			{	
	
				if ($formatheuresok == 1)
				{
					$t1=explode(&quot;h&quot;, $h1[$numday]);
					$t2=explode(&quot;h&quot;, $h2[$numday]);
					$v1=&quot;$t1[0]$t1[1]&quot;;
					$v2=&quot;$t2[0]$t2[1]&quot;;
					if ( $v1 &lt; $v2)
					{
						fwrite($pointeur,&quot;$selectuser=$numday=$h1[$numday]:$h2[$numday]&quot;.&quot;\n&quot;);
					}
					else
					{
						fwrite($pointeur,&quot;$selectuser=$numday=00h00:23h59&quot;.&quot;\n&quot;);
						echo &quot;&lt;H3&gt;$l_hours_error2 $h1[$numday]&gt;=$h2[$numday]&lt;/H3&gt;&quot;;
					}
				}
				else 
				{
					fwrite($pointeur,&quot;$selectuser=$numday=00h00:23h59&quot;.&quot;\n&quot;);
					echo &quot;&lt;H3&gt;$l_hours_error1&lt;/H3&gt;&quot;;
				}
			}
			else 
			{
				if (preg_match(&quot;/^[0-1][0-9]h[0-5][0-9]$|^2[0-3]h[0-5][0-9]$/&quot;,$h3[$numday])!=1){$formatheuresok=0;}
				if (preg_match(&quot;/^[0-1][0-9]h[0-5][0-9]$|^2[0-3]h[0-5][0-9]$/&quot;,$h4[$numday])!=1){$formatheuresok=0;}
				if ($formatheuresok == 1)
				{
					$t1=explode(&quot;h&quot;, $h1[$numday]);
					$t2=explode(&quot;h&quot;, $h2[$numday]);
					$t3=explode(&quot;h&quot;, $h3[$numday]);
					$t4=explode(&quot;h&quot;, $h4[$numday]);
					$v1=&quot;$t1[0]$t1[1]&quot;;
					$v2=&quot;$t2[0]$t2[1]&quot;;
					$v3=&quot;$t3[0]$t3[1]&quot;;
					$v4=&quot;$t4[0]$t4[1]&quot;;
					if ( $v1 &lt; $v2 &amp;&amp; $v2 &lt; $v3 &amp;&amp; $v3 &lt; $v4)
					{
					fwrite($pointeur,&quot;$selectuser=$numday=$h1[$numday]:$h2[$numday]:$h3[$numday]:$h4[$numday]&quot;.&quot;\n&quot;);
					}
					else
					{
						fwrite($pointeur,&quot;$selectuser=$numday=00h00:23h59&quot;.&quot;\n&quot;);
						echo &quot;&lt;H3&gt;$l_hours_error2 $h1[$numday]&gt;=$h2[$numday]&gt;=$h3[$numday]&gt;=$h4[$numday]&lt;/H3&gt;&quot;;
					}
				}
				else 
				{
					fwrite($pointeur,&quot;$selectuser=$numday=00h00:23h59&quot;.&quot;\n&quot;);
					echo &quot;&lt;H3&gt;$l_hours_error1&lt;/H3&gt;&quot;;
					
				}
			}

		}
	}
	
	fclose($pointeur);
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -trf&quot;);
	break;
	
case 'change_user' :
$tab=file($conf_ctoff_file);
	if ($tab)
		{
		$pointeur=fopen($conf_ctoff_file,&quot;w+&quot;);
		foreach ($tab as $ligne)
			{
			$CONF_CTOFF1 = str_replace('#','',$ligne);
			$actif = False ;	
			foreach ($_POST as $key =&gt; $value)
				{
					if (strstr($key,'chk-'))
					{
						$CONF_CTOFF2 = str_replace('chk-','',$key);
						if ( trim($CONF_CTOFF1) == trim($CONF_CTOFF2) )
						{ 
							$actif = True; 
							break;
						}
					}
				}

			if (! $actif) {	$line=&quot;#$CONF_CTOFF1&quot;;}
			else { $line=&quot;$CONF_CTOFF1&quot;;}
			fwrite($pointeur,$line);
				
			}
		fclose($pointeur);
		}
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -gctalist&quot;);
	break;

}

echo &quot;&lt;TABLE width='100%' border=0 cellspacing=0 cellpadding=0&gt;&quot;;
echo &quot;&lt;tr&gt;&lt;th&gt;$l_title1&lt;/th&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;tr bgcolor='#FFCC66'&gt;&lt;td&gt;&lt;img src='/images/pix.gif' width=1 height=2&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;/TABLE&gt;&quot;;
echo &quot;&lt;TABLE width='100%' border=1 cellspacing=0 cellpadding=0&gt;&quot;;
echo &quot;&lt;tr&gt;&lt;td valign='middle' align='left'&gt;&quot;;
echo &quot;&lt;CENTER&gt;&quot;;
echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
echo &quot;&lt;input type=hidden name='choix' value=\&quot;LogOFF\&quot;&gt;&quot;;
echo &quot;&lt;input type=submit value=\&quot;$l_switch_LogOFF\&quot;&gt;&quot;;
echo &quot;&lt;/FORM&gt;&quot;;
echo &quot;&lt;/CENTER&gt;&quot;;
if (is_file ($conf_file))
	{
	$tab=file($conf_file);
	if ($tab)
		{
		foreach ($tab as $line)
			{
			$field=explode(&quot;=&quot;, $line);
			if ($field[0] == &quot;LASTUPDATE&quot;)	{$LASTUPDATE=trim($field[2]);}
			if ($field[0] == &quot;DNSMASQ&quot;)		{$DNSMASQ=trim($field[1]);}
			if ($field[0] == &quot;AUTOUPDATE&quot;)		{$AUTOUPDATE=trim($field[1]);}
			if ($field[0] == &quot;HOURSCONNECT&quot;)	{$HOURSCONNECT=trim($field[1]);}
            if ($field[0] == &quot;GCTOFF&quot;)	{$GCTOFF=trim($field[1]);}            
			}
		}
	}
else { echo &quot;$l_error_open_file $conf_file&quot;;}

include 'dns.php';

include 'hours.php';

include 'gctoff.php';

//echo &quot;&lt;/td&gt;&lt;/tr&gt;&quot;;
?&gt;
&lt;/BODY&gt;
&lt;/HTML&gt;

&lt;/code&gt;
'''dns.php'''
&lt;code php&gt;
&lt;?php

if ($DNSMASQ &lt;&gt; &quot;OFF&quot;)
	{
	echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_dnsfilter_on&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
 	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type=hidden name='choix' value=\&quot;BL_Off\&quot;&gt;&quot;;
	echo &quot;&lt;input type=submit value=\&quot;$l_switch_filtering_off\&quot;&gt;&quot;;
	echo &quot;&lt;/FORM&gt;&quot;;

	if (isset($_GET['filtragemode'])){ $filtragemode=$_GET['filtragemode']; } else {$filtragemode=$DNSMASQ;}
	if ($filtragemode == 'WHITE')
	{
	$bl_categories=&quot;/usr/local/etc/CTparental/wl-categories-available&quot;;
	}
	else { $bl_categories=&quot;/usr/local/etc/CTparental/bl-categories-available&quot;;}

	$filtragemode = urlencode($filtragemode);
	echo &quot;&lt;table border=0 width=400 cellpadding=0 cellspacing=2&gt;&quot;;
	echo &quot;&lt;tr valign=top&gt;&quot;;
	echo &quot;&lt;td align=center&quot;; if ( $filtragemode == &quot;BLACK&quot; ) { echo &quot; bgcolor=\&quot;#FFCC66\&quot;&quot;;} echo &quot;&gt;&quot;;
	echo &quot;&lt;a href=\&quot;$_SERVER[PHP_SELF]?filtragemode=BLACK\&quot; title=\&quot;\&quot;&gt;&lt;font color=\&quot;black\&quot;&gt;&lt;b&gt;$l_fmenu_black&lt;/b&gt;&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&quot;;
	echo &quot;&lt;td align=center&quot;; if ( $filtragemode == &quot;WHITE&quot; ) { echo &quot; bgcolor=\&quot;#FFCC66\&quot;&quot;;} echo &quot;&gt;&quot;;
	echo &quot;&lt;a href=\&quot;$_SERVER[PHP_SELF]?filtragemode=WHITE\&quot; title=\&quot;\&quot;&gt;&lt;font color=\&quot;black\&quot;&gt;&lt;b&gt;$l_fmenu_white&lt;/b&gt;&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&quot;;
	echo &quot;&lt;/tr&gt;&quot;;
	echo&quot; &lt;/table&gt;&quot;;
	echo &quot;&lt;/td&gt;&lt;/tr&gt;&quot;;


	function echo_file ($filename)
		{
		if (file_exists($filename))
			{
			if (filesize($filename) != 0)
				{
				$pointeur=fopen($filename,&quot;r&quot;);
				$tampon = fread($pointeur, filesize($filename));
				fclose($pointeur);
				echo $tampon;
				}
			}
		else
			{
			echo &quot;$l_error_openfile $filename&quot;;
			}
		}

	echo &quot;&lt;TABLE width='100%' border=1 cellspacing=0 cellpadding=1&gt;&quot;;
	echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_main_bl&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
	echo &quot;&lt;tr&gt;&lt;td valign='middle' align='left' colspan=10&gt;&quot;;
	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;center&gt;$l_bl_version $LASTUPDATE&quot;;
	echo &quot;&lt;/center&gt;&lt;BR&gt;&quot;;
		echo &quot;&lt;input type='hidden' name='choix' value='Download_bl'&gt;&quot;;
		echo &quot;&lt;input type='submit' value='$l_download_bl'&gt;&quot;;
		echo &quot; ($l_warning)&quot;;

	echo &quot;&lt;/FORM&gt;&quot;;
	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type='hidden' name='choix' value='INIT_BL'&gt;&quot;;
	echo &quot;&lt;input type='submit' value='$l_switch_Init_bl'&gt;&quot;;
	echo &quot;&lt;/FORM&gt;&quot;;
	if ($AUTOUPDATE == &quot;ON&quot;)
		{
		echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_auto_update_on&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
		echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
		echo &quot;&lt;input type=hidden name='choix' value=\&quot;AUP_Off\&quot;&gt;&quot;;
		echo &quot;&lt;input type=submit value=\&quot;$l_switch_auto_update_off\&quot;&gt;&quot;;
	}
	else
		{
		echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_auto_update_off&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
		echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
		echo &quot;&lt;input type=hidden name='choix' value=\&quot;AUP_On\&quot;&gt;&quot;;
		echo &quot;&lt;input type=submit value=\&quot;$l_switch_auto_update_on\&quot;&gt;&quot;;
		}
	echo &quot;&lt;/FORM&gt;&quot;;
	echo &quot;&lt;/td&gt;&lt;/tr&gt;&quot;;
	echo &quot;&lt;tr&gt;&lt;td valign=\&quot;middle\&quot; align=\&quot;left\&quot; colspan=10&gt;&quot;;
	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type='hidden' name='choix' value='MAJ_cat'&gt;&quot;;
	if ($filtragemode == &quot;BLACK&quot;){echo &quot;&lt;center&gt;$l_bl_categories_bl&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;}
	else {echo &quot;&lt;center&gt;$l_bl_categories_wl&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;}

	//on lit et on interprète le fichier de catégories
	$cols=1; 
	if (file_exists($bl_categories))
		{
		$pointeur=fopen($bl_categories,&quot;r&quot;);
		while (!feof ($pointeur))
			{
			$ligne=fgets($pointeur, 4096);
			if ($ligne)
				{
				if ($cols == 1) { echo &quot;&lt;tr&gt;&quot;;}
				$categorie=trim(basename($ligne));
				echo &quot;&lt;td&gt;&lt;a href='bl_categories_help.php?cat=$categorie' target='cat_help' onclick=window.open('bl_categories_help.php','cat_help','width=600,height=150,toolbar=no,scrollbars=no,resizable=yes') title='categories help page'&gt;$categorie&lt;/a&gt;&lt;br&gt;&quot;;
				echo &quot;&lt;input type='checkbox' name='chk-$categorie'&quot;;
				// la catégorie n'existe pas dans le fichier de catégorie activé -&gt; categorie non sélectionnée
							$str = file_get_contents($bl_categories_enabled);
				if (strpos($str, $categorie)===false) { echo &quot;&gt;&quot;;}
				else { echo &quot;checked&gt;&quot;; }
				echo &quot;&lt;/td&gt;&quot;;
				$cols++;
				if ($cols &gt; 10) {
					echo &quot;&lt;/tr&gt;&quot;;
					$cols=1; }
				}
			}
		fclose($pointeur);
		}
	else	{
		echo &quot;$l_error_open_file $bl_categories&quot;;
		}
	echo &quot;&lt;/td&gt;&lt;/tr&gt;&quot;;
	echo &quot;&lt;tr&gt;&lt;td valign='middle' align='left' colspan=10&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;
	echo &quot;&lt;tr&gt;&lt;td colspan=5 align=center&gt;&quot;;
	if ($filtragemode == &quot;BLACK&quot;){echo &quot;&lt;H3&gt;$l_rehabilitated_dns&lt;/H3&gt;$l_rehabilitated_dns_explain_bl&lt;BR&gt;$l_one_dns&lt;BR&gt;&quot;;}
	else {echo &quot;&lt;H3&gt;$l_rehabilitated_dns&lt;/H3&gt;$l_rehabilitated_dns_explain_wl&lt;BR&gt;$l_one_dns&lt;BR&gt;&quot;;}
	echo &quot;&lt;textarea name='OSSI_wl_domains' rows=5 cols=40&gt;&quot;;
	echo_file ($wl_domains);
	echo &quot;&lt;/textarea&gt;&lt;/td&gt;&quot;;
	if ( $filtragemode == &quot;BLACK&quot; ) {
	echo &quot;&lt;td colspan=5 align=center&gt;&quot;;
	echo &quot;&lt;H3&gt;$l_forbidden_dns&lt;/H3&gt;$l_forbidden_dns_explain&lt;BR&gt;&quot;;
	echo &quot;&lt;textarea name='OSSI_bl_domains' rows=5 cols=40&gt;&quot;;
	echo_file ($bl_domains);
	echo &quot;&lt;/textarea&gt;&lt;/td&gt;&quot;;
	}
	echo &quot;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=10&gt;&quot;;

	echo &quot;&lt;input type='submit' value='$l_record'&gt;&quot;;
	echo &quot;&lt;/form&gt; ($l_wait)&quot;;

	echo &quot;&lt;/td&gt;&lt;/tr&gt;&quot;;
	echo &quot;&lt;/TABLE&gt;&quot;;
	echo &quot;&lt;/TABLE&gt;&quot;;


}
else
	{
	echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_dnsfilter_off&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
 	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type=hidden name='choix' value=\&quot;BL_On\&quot;&gt;&quot;;
	echo &quot;&lt;input type=submit value=\&quot;$l_switch_filtering_on\&quot;&gt;&quot;;
	echo &quot;&lt;/FORM&gt;&quot;;
	echo &quot;&lt;/td&gt;&lt;/tr&gt;&quot;;
	}




?&gt;

&lt;/code&gt;
'''hours.php'''
&lt;code php&gt;

&lt;?php
echo &quot;&lt;TABLE width='100%' border=0 cellspacing=0 cellpadding=0&gt;&quot;;
echo &quot;&lt;tr&gt;&lt;th&gt;$l_hours1&lt;/th&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;tr bgcolor='#FFCC66'&gt;&lt;td&gt;&lt;img src='/images/pix.gif' width=1 height=2&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;/TABLE&gt;&quot;;
echo &quot;&lt;TABLE width='100%' border=1 cellspacing=0 cellpadding=0&gt;&quot;;
echo &quot;&lt;tr&gt;&lt;td valign='middle' align='left'&gt;&quot;;
if ($HOURSCONNECT == &quot;ON&quot;)
	{
	echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_hours_on&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
 	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type=hidden name='choix' value=\&quot;H_Off\&quot;&gt;&quot;;
	echo &quot;&lt;input type=submit value=\&quot;$l_switch_hours_off\&quot;&gt;&quot;;
	echo &quot;&lt;/FORM&gt;&quot;;
	# Choice of language
	$Language = 'en';
	if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
	  $Langue = explode(&quot;,&quot;,$_SERVER['HTTP_ACCEPT_LANGUAGE']);
	  $Language = strtolower(substr(chop($Langue[0]),0,2)); }
	if($Language == 'fr'){
	  $l_selectuser=&quot;l'utilisateur sélectionné est : &quot;;
	  $l_userisnotselect=&quot;Veuillez sélectionner un utilisateur.&quot;;
	  $l_isadmin = &quot;7j/7 24h/24&quot;;
	  $l_valide = &quot;Enregistrer&quot;;
	  $to = &quot; à &quot; ;
	  $and = &quot; et &quot; ;
	  $l_select = &quot;Sélectionner&quot;;
	  $l_info1 = &quot;08h00 à 24h00 ou 08h00 à 12h00 et 14h00 à 24h00&quot;;
	  $week = array( &quot;lundi&quot;,&quot;mardi&quot;,&quot;mercredi&quot;,&quot;jeudi&quot;,&quot;vendredi&quot;,&quot;samedi&quot;,&quot;dimanche&quot;);
	   $tmaxinfo= &quot;Minutes max /24 heurs&quot;;
	}
	else {
	  $l_userisnotselect=&quot;Veuillez sélectionner un utilisateur.&quot;;
	  $l_selectuser=&quot;l'utilisateur sélectionné est : &quot;;
	  $l_isadmin = &quot;7j/7 24h/24&quot;;
	  $l_valide = &quot;Enregistrer&quot;;
	  $l_select = &quot;Select&quot;;
	  $to = &quot; to &quot; ;
	  $and = &quot; and &quot; ;
	  $l_info1 = &quot;08h00 à 24h00 ou 08h00 à 12h00 et 14h00 à 24h00&quot;;
	  $week = array( &quot;lundi&quot;,&quot;mardi&quot;,&quot;mercredi&quot;,&quot;jeudi&quot;,&quot;vendredi&quot;,&quot;samedi&quot;,&quot;dimanche&quot;);
	   $tmaxinfo= &quot;Minutes max /24 heurs&quot;;
	}
	if (isset($_POST['selectuser'])){ $selectuser=$_POST['selectuser']; }


	### on lit est on interprète le fichier CTparental.conf
	echo &quot;&lt;TABLE width='100%' border=0 cellspacing=0 cellpadding=0&gt;&quot;;
	exec (&quot;/usr/local/bin/CTparental.sh -listusers 2&gt; /dev/null&quot;,$USERSPC); # récupération des utilisateurs du poste.(UID &gt;= 1000)
	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
		echo &quot;&lt;select name=\&quot;selectuser\&quot;&gt;&quot;;
		if ($selectuser){echo &quot;&lt;option value=\&quot;$selectuser\&quot;&gt;$selectuser\n&quot;; }
			else {echo &quot;&lt;option value=\&quot;\&quot;&gt;\n&quot;; }
		foreach ($USERSPC as $USERSELECT){echo &quot;&lt;option value=\&quot;$USERSELECT\&quot;&gt;$USERSELECT\n&quot;;}
		echo &quot; &lt;/select&gt;&quot;;
	echo &quot;&lt;input type=\&quot;submit\&quot; value=\&quot;$l_select\&quot;&gt;&quot;;
	echo &quot;&lt;/FORM&gt;&quot;;
	if (isset($selectuser)) {
		echo &quot;&lt;/TABLE&gt;&quot;;
		echo &quot;&lt;TABLE width='600' border=0 cellspacing=0 cellpadding=0&gt;&quot;;
		echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
		echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_selectuser $selectuser&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
		
		if (is_file ($hconf_file))
			{
			$tab=file($hconf_file);
			if ($tab)
				{
				foreach ($tab as $line)
					{
							$field=explode(&quot;=&quot;, $line);
								if ( $field[0] == $selectuser ){
								$field2=explode(&quot;:&quot;, $field[2]);
							$numday=$field[1];
							$isconfigured=1;
							
							if ( $numday == &quot;admin&quot;) { echo &quot;&lt;tr&gt;&lt;td&gt;$l_isadmin : &lt;input type='checkbox' name='isadmin' checked&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;}
							elseif ( $numday == &quot;user&quot;) {echo &quot;&lt;tr&gt;&lt;td&gt;$l_isadmin : &lt;input type='checkbox' name='isadmin' &gt;&lt;/td&gt;&lt;/tr&gt;&quot;;
										if ( intval ($field[2]) == 0 ) { $field[2]=&quot;1440&quot;; }
										echo&quot;&lt;tr&gt;&lt;td&gt;$tmaxinfo&lt;td&gt;&lt;INPUT type=\&quot;text\&quot; size=4 maxlength=4 value=\&quot;$field[2]\&quot;  name=\&quot;tmax\&quot;&gt;/1440&lt;td&lt;/tr&gt;&quot;;	
										}
										
							else {
								echo&quot;&lt;tr&gt;&lt;td&gt;$week[$numday]:&lt;/td&gt;&lt;td&gt;&lt;INPUT type=\&quot;text\&quot; size=5 maxlength=5 value=\&quot;$field2[0]\&quot;  name=\&quot;h1$numday\&quot;&gt;&lt;/td&gt;&quot;;
										echo&quot; &lt;td&gt;$to &lt;INPUT type=\&quot;text\&quot; size=5 maxlength=5 value=\&quot;$field2[1]\&quot; name=\&quot;h2$numday\&quot;&gt;&lt;/td&gt;&quot;;
										echo&quot; &lt;td&gt;$and &lt;INPUT type=\&quot;text\&quot; size=5 maxlength=5 value=\&quot;$field2[2]\&quot; name=\&quot;h3$numday\&quot;&gt;&lt;/td&gt;&quot;;	
								echo&quot; &lt;td&gt;$to &lt;INPUT type=\&quot;text\&quot; size=5 maxlength=5 value=\&quot;$field2[3]\&quot; name=\&quot;h4$numday\&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;
							}
														
						}
							
					}
					
				}
			
			}
		else { echo &quot;$l_error_open_file $hconf_file&quot;;}

		if (isset($isconfigured)==0){
			echo &quot;&lt;tr&gt;&lt;td&gt;$l_isadmin : &lt;input type='checkbox' name='isadmin' checked=\&quot;checked\&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;
		}


		echo &quot;&lt;/TABLE&gt;&quot;;
		echo &quot;&lt;input type=hidden name='selectuser' value=\&quot;$selectuser\&quot;&gt;&quot;;
			echo &quot;&lt;input type=hidden name='choix' value=\&quot;MAJ_H\&quot;&gt;&quot;;
		echo &quot;&lt;input type=\&quot;submit\&quot; value=\&quot;$l_valide\&quot;&gt;&quot;;
		echo &quot;&lt;/FORM&gt;&quot;;
	}
	else { echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_userisnotselect&lt;/H3&gt;&lt;/CENTER&gt;&quot;;}

}
else
	{
	echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_hours_off&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
 	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type=hidden name='choix' value=\&quot;H_On\&quot;&gt;&quot;;
	echo &quot;&lt;input type=submit value=\&quot;$l_switch_hours_on\&quot;&gt;&quot;;
	echo &quot;&lt;/FORM&gt;&quot;;
	}



?&gt;

&lt;/code&gt;
'''gctoff.php'''
&lt;code php&gt;
&lt;?php
echo &quot;&lt;TABLE width='100%' border=0 cellspacing=0 cellpadding=0&gt;&quot;;
echo &quot;&lt;tr&gt;&lt;th&gt;$l_title_gctoff&lt;/th&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;tr bgcolor='#FFCC66'&gt;&lt;td&gt;&lt;img src='/images/pix.gif' width='1' height='2'&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;/table&gt;&quot;;
echo &quot;&lt;table width='100%' border=1 cellspacing=0 cellpadding=1&gt;&quot;;
if ($GCTOFF == &quot;ON&quot;)
	{
	echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_gctoff_on&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
 	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type=hidden name='choix' value=\&quot;gct_Off\&quot;&gt;&quot;;
	echo &quot;&lt;input type=submit value=\&quot;$l_switch_gctoff_off\&quot;&gt;&quot;;
	echo &quot;&lt;/FORM&gt;&quot;;

	
	echo &quot;&lt;tr&gt;&lt;td colspan=2 align='center'&gt;&quot;;
	echo &quot;$l_gctoff_explain&lt;/td&gt;&lt;/tr&gt;&quot;;
	echo &quot;&lt;tr&gt;&lt;td align='center' valign='middle'&gt;&quot;;
	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method='POST'&gt;&quot;;
	echo &quot;&lt;table cellspacing=2 cellpadding=2 border=1&gt;&quot;;
	echo &quot;&lt;tr&gt;&lt;th&gt;$l_gctoff_username&lt;th&gt;$l_blocked&lt;/tr&gt;&quot;;
	// Read the &quot;CTOFF.conf&quot; file
	exec (&quot;sudo /usr/local/bin/CTparental.sh -gctulist&quot;);
	$tab=file($conf_ctoff_file);
	if ($tab)  # the file isn't empty
		{
		foreach ($tab as $line)
			{
			if (trim($line) != '') # the line isn't empty
				{
				$user_lignes=explode(&quot; &quot;, $line);
				$userx=trim($user_lignes[0],&quot;#&quot;);
				echo &quot;&lt;tr&gt;&lt;td&gt;$userx&quot;;
				echo &quot;&lt;td&gt;&lt;input type='checkbox' name='chk-$userx'&quot;;
				if (preg_match('/^#/',$line, $r)) {
					echo &quot;&gt;&quot;;}
				else {
					echo &quot;checked&gt;&quot;;}
				echo &quot;&lt;/tr&gt;&quot;;
				}
			}
		}
	
	echo &quot;&lt;/table&gt;&quot;;
	echo &quot;&lt;input type='hidden' name='choix' value='change_user'&gt;&quot;;
	echo &quot;&lt;input type='submit' value='$l_record'&gt;&quot;;
	echo &quot;&lt;/form&gt;&quot;;
}
else
	{
	echo &quot;&lt;CENTER&gt;&lt;H3&gt; $l_gctoff_off&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
 	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type=hidden name='choix' value=\&quot;gct_On\&quot;&gt;&quot;;
	echo &quot;&lt;input type=submit value=\&quot;$l_switch_gctoff_on\&quot;&gt;&quot;;
	echo &quot;&lt;/FORM&gt;&quot;;
	}

&lt;/code&gt;
'''bl_categories_help.php'''
&lt;code php&gt;
&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;
&lt;HTML&gt;&lt;!-- written by Rexy --&gt;
&lt;HEAD&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot;&gt;
&lt;?php
$bl_dir=&quot;/usr/local/etc/CTparental/dnsfilter-available/&quot;;
# Choice of language
$Language = 'en';
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
  $Langue = explode(&quot;,&quot;,$_SERVER['HTTP_ACCEPT_LANGUAGE']);
  $Language = strtolower(substr(chop($Langue[0]),0,2)); }
if($Language == 'fr'){
  $l_title = &quot;Catégories de la liste noire&quot;;
  $l_error_open_file=&quot;Erreur d'ouverture du fichier&quot;;
  $l_close=&quot;Fermer&quot;;
  $l_unknown_cat=&quot;Cette catégorie n'est pas décrite&quot;;
  $l_nb_domains=&quot;Nombre de noms de domaine filtrés :&quot;;
  $l_nb_urls=&quot;Nombre d'URL filtrés :&quot;;
  $l_explain_adult=&quot;Sites relatifs à l'érotisme et à la pornographie&quot;;
  $l_explain_agressif=&quot;Sites extrémistes, racistes, antisémites ou incitant à la haine&quot;;
  $l_explain_arjel=&quot;Sites de pari en ligne certifies par l'ARJEL (Autorité de Régulation des Jeux En Ligne)&quot;;
  $l_explain_astrology=&quot;Sites relatifs à l'astrologie&quot;;
  $l_explain_bank=&quot;Sites de banques en ligne&quot;;
  $l_explain_audio_video=&quot;Sites de téléchargement de fichiers audio et vidéo&quot;;
  $l_explain_blog=&quot;Sites d'hébergement de blogs&quot;;
  $l_explain_celebrity=&quot;Sites « people », stars, etc.&quot;;
  $l_explain_chat=&quot;Sites de dialogue en ligne&quot;;
  $l_explain_child=&quot;Sites pour enfants&quot;;
  $l_explain_cleaning=&quot;Sites relatifs à la mise à jour logicielle ou antivirale&quot;;
  $l_explain_dangerous_material=&quot;Sites relatifs à la création de produits dangereux (explosif, poison, etc.)&quot;;
  $l_explain_dating=&quot;Sites de rencontres en ligne&quot;;
  $l_explain_drogue=&quot;Sites relatifs aux produits stupéfiants&quot;;
  $l_explain_filehosting=&quot;Entrepôts de fichiers  (vidéo, images, son, logiciels, etc.)&quot;;
  $l_explain_financial=&quot;Sites d'informations financières, bourses, etc.&quot;;
  $l_explain_forums=&quot;Sites d'hébergement de forums de discussion&quot;;
  $l_explain_gambling=&quot;Sites de jeux d'argent en ligne (casino, grattage virtuel, etc.)&quot;;
  $l_explain_games=&quot;Sites de jeux en ligne&quot;;
  $l_explain_hacking=&quot;Sites relatifs au piratage informatique&quot;;
  $l_explain_jobsearch=&quot;Sites de recherche d'emplois&quot;;
  $l_explain_liste_bu=&quot;Liste de sites éducatifs pour bibliothèque&quot;;
  $l_explain_malware=&quot;Site relatifs au logiciels malveillants (virus, vers, trojans, etc.)&quot;;
  $l_explain_manga=&quot;Site de Mangas&quot;;
  $l_explain_marketingware=&quot;Sites marchands douteux (X, organes, enfants, etc.)&quot;;
  $l_explain_mixed_adult=&quot;Sites pour adultes (image-choc, gore, guerre, etc.)&quot;;
  $l_explain_mobile_phone=&quot;Sites relatifs aux mobiles GSM (sonneries, logos, etc.)&quot;;
  $l_explain_ossi=&quot;Noms de domaine et URLs que vous ajoutez à la liste noire (voir ci-dessous)&quot;;
  $l_explain_phishing=&quot;Sites relatifs à l'hammeçonnage (pièges bancaires, redirection, etc.)&quot;;
  $l_explain_press=&quot;Sites de presse&quot;;
  $l_explain_publicite=&quot;Sites ou bannières publicitaires&quot;;
  $l_explain_radio=&quot;Sites de radios en ligne ou de podcast&quot;;
  $l_explain_reaffected=&quot;Sites connus ayant changé de propriétaire (et donc de contenu)&quot;;
  $l_explain_redirector=&quot;Sites de redirection, d'anonymisation ou de contournement&quot;;
  $l_explain_remote_control=&quot;Sites permettant la prise de controle a distance&quot;;
  $l_explain_sect=&quot;Sites sectaires&quot;;
  $l_explain_social_networks=&quot;Sites de réseaux sociaux&quot;;
  $l_explain_sexual_education=&quot;Sites relatifs à l'éducation sexuelle&quot;;
  $l_explain_shopping=&quot;Sites de vente et d'achat en ligne&quot;;
  $l_explain_sport=&quot;Sites de sport&quot;;
  $l_explain_strict_redirector=&quot;URL intentionnellement mal formées&quot;;
  $l_explain_strong_redirector=&quot;URL mal formées dans une requête « google »&quot;;
  $l_explain_tricheur=&quot;Sites relatifs aux tricheries (examens, concours, etc.)&quot;;
  $l_explain_webmail=&quot;Site WEB permettant de consultation son courrier électronique&quot;;
  $l_explain_warez=&quot;Sites relatifs aux logiciels piratés (crackés), aux générateurs de clés, etc.&quot;;
}
else {
  $l_title = &quot;Blacklist categories&quot;;
  $l_error_open_file=&quot;Error opening the file&quot;;
  $l_close=&quot;Close&quot;;
  $l_unknown_cat=&quot;This category isn't describe&quot;;
  $l_nb_domains=&quot;Number of filtered domain names :&quot;;
  $l_nb_urls=&quot;Number of filtered URL :&quot;;
  $l_explain_adult=&quot;Sites related to eroticism and pornography&quot;;
  $l_explain_agressif=&quot;Sites extremist, racist, anti-Semitic or hate&quot;;
  $l_explain_arjel=&quot;Online gambling sites allowed by the french authority 'ARJEL' (Autorité de Régulation des Jeux En Ligne)&quot;;
  $l_explain_astrology=&quot;Sites related to astrology&quot;;
  $l_explain_audio_video=&quot;Sites for downloading audio and video&quot;;
  $l_explain_bank=&quot;Online bank sites&quot;;
  $l_explain_blog=&quot;Sites hosting blogs&quot;;
  $l_explain_celebrity=&quot;Sites « people », stars, etc.&quot;;
  $l_explain_chat=&quot;Online chat sites&quot;;
  $l_explain_child=&quot;Sites for children&quot;;
  $l_explain_cleaning=&quot;Sites related to software update or antiviral&quot;;
  $l_explain_dangerous_material=&quot;Sites related to the creation of dangerous goods (explosives, poison, etc.)&quot;;
  $l_explain_dating=&quot;Online dating sites&quot;;
  $l_explain_drogue=&quot;Sites related to narcotic&quot;;
  $l_explain_filehosting=&quot;Warehouses of files (video, images, sound, software, etc.)&quot;;
  $l_explain_financial=&quot;Sites of financial information&quot;;
  $l_explain_forums=&quot;Sites hosting discussion forums&quot;;
  $l_explain_gambling=&quot;Online gambling sites (casino, virtual scratching, etc.)&quot;;
  $l_explain_games=&quot;Online games sites&quot;;
  $l_explain_hacking=&quot;Sites related to hacking&quot;;
  $l_explain_jobsearch=&quot;Job search sites&quot;;
  $l_explain_liste_bu=&quot;List of educational sites for library&quot;;
  $l_explain_malware=&quot;Malware sites (viruses, worms, trojans, etc.).&quot;;
  $l_explain_manga=&quot;Manga site&quot;;
  $l_explain_marketingware=&quot;doubtful commercial sites&quot;;
  $l_explain_mixed_adult=&quot;Adult sites (shock, gore, war, etc.).&quot;;
  $l_explain_mobile_phone=&quot;Sites related to GSM mobile (ringtones, logos, etc.)&quot;;
  $l_explain_ossi=&quot;Domain names and URLs you add to the blacklist (see below)&quot;;
  $l_explain_phishing=&quot;Phishing sites (traps banking, redirect, etc..)&quot;;
  $l_explain_press=&quot;News sites&quot;;
  $l_explain_publicite=&quot;Advertising sites&quot;;
  $l_explain_radio=&quot;Online radio podcast sites&quot;;
  $l_explain_reaffected=&quot;Sites that have changed ownership (and therefore content)&quot;;
  $l_explain_redirector=&quot;redirects, anonymization or bypass sites&quot;;
  $l_explain_remote_control=&quot;Sites for making remote control&quot;;
  $l_explain_sect=&quot;Sectarian sites&quot;;
  $l_explain_social_networks=&quot;Social networks sites&quot;;
  $l_explain_sexual_education=&quot;Sites related to sex education&quot;;
  $l_explain_shopping=&quot;Shopping sites and online shopping&quot;;
  $l_explain_sport=&quot;Sport sites&quot;;
  $l_explain_strict_redirector=&quot;Intentionally malformed URL&quot;;
  $l_explain_strong_redirector=&quot;Malformed URL in a 'google' query&quot;;
  $l_explain_tricheur=&quot;Sites related to cheating (tests, examinations, etc.)&quot;;
  $l_explain_webmail=&quot;Web sites for e-mail consultation&quot;;
  $l_explain_warez=&quot;Sites related to cracked softwares&quot;;
}
if (isset($_GET['cat'])){$categorie=$_GET['cat'];} 
$bl_categorie_domain_file=$bl_dir.$categorie.&quot;.conf&quot;;
if (file_exists($bl_categorie_domain_file))
	$nb_domains=exec (&quot;wc -w $bl_categorie_domain_file|cut -d' ' -f1&quot;);
else
	$nb_domains=$l_error_openfilei.&quot; &quot;.$bl_categorie_domain_file;
if (file_exists($bl_categorie_url_file))
	$nb_urls=exec (&quot;wc -w $bl_categorie_url_file|cut -d' ' -f1&quot;);
else
	$nb_urls=$l_error_openfile.&quot; &quot;.$bl_categorie_url_file;
echo &quot;&lt;TITLE&gt;$l_title&lt;/TITLE&gt;&quot;;
?&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;/CTadmin/css/style.css&quot; type=&quot;text/css&quot;&gt;
&lt;/HEAD&gt;
&lt;body&gt;
&lt;TABLE width=&quot;100%&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
	&lt;tr&gt;&lt;th&gt;&lt;?php echo $categorie ;?&gt;&lt;/th&gt;&lt;/tr&gt;
	&lt;tr bgcolor=&quot;#FFCC66&quot;&gt;&lt;td&gt;&lt;img src=&quot;/images/pix.gif&quot; width=&quot;1&quot; height=&quot;2&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/TABLE&gt;
&lt;TABLE width=&quot;100%&quot; border=1 cellspacing=0 cellpadding=1&gt;
&lt;tr&gt;&lt;td valign=&quot;middle&quot; align=&quot;left&quot;&gt;
&lt;?php
$compat_categorie=strtr($categorie,&quot;-&quot;,&quot;_&quot;);
if (!empty(${'l_explain_'.$compat_categorie}))
	echo &quot;&lt;center&gt;&lt;b&gt;${'l_explain_'.$compat_categorie}&lt;/b&gt;&lt;/center&gt;&quot;;
else echo &quot;$l_unknown_cat&quot;;
echo &quot;&lt;br&gt;$l_nb_domains &lt;b&gt;$nb_domains&lt;/b&gt;&lt;br&gt;&quot;;
?&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/TABLE&gt;
&lt;br&gt;
&lt;center&gt;&lt;a href=&quot;javascript:window.close();&quot;&gt;&lt;b&gt;&lt;?php echo &quot;$l_close&quot;; ?&gt;&lt;/b&gt;&lt;/a&gt;&lt;/center&gt;
&lt;/BODY&gt;
&lt;/HTML&gt;
&lt;/code&gt;
[[Catégorie:Scripts]]</text>
      <sha1>d90xldgrc7mnw4dm3jkrcx1k7wemdfk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5617</id>
      <parentid>5582</parentid>
      <timestamp>2014-05-29T12:28:53Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="90164">lien sur le [http://www.debian-fr.org/controle-parental-pour-le-pc-debian-de-vos-enfants-t42009.html forum]
'''CTparental.sh'''
&lt;code bash&gt;
#!/bin/bash 
# CTparental.sh
#
# par Guillaume MARSAT
# Corrections orthographiques par Pierre-Edouard TESSIER
# une partie du code est tirée du script alcasar-bl.sh créé par Franck BOUIJOUX et Richard REY
# présente dans le code du projet alcasar en version 2.6.1 ; web page http://www.alcasar.net/
 
# This script is distributed under the Gnu General Public License (GPL)
arg1=${1}
if [ $# -ge 1 ];then
if [ $arg1 != &quot;-listusers&quot; ] ; then
if [ ! $UID -le 499 ]; then # considère comme root tous les utilisateurs avec un uid inferieur ou egale a 499,ce qui permet à apt-get,urpmi,yum... de lancer le script sans erreur.
   echo &quot;Il vous faut des droits root pour lancer ce script&quot;
   exit 1
fi
fi
fi


noinstalldep=&quot;0&quot;
nomanuel=&quot;0&quot;
ARGS=($*)
for (( narg=1; narg&lt;=$#; narg++ )) ; do
        case &quot;${ARGS[$narg]}&quot; in
	  -nodep )
	     noinstalldep=&quot;1&quot;
	  ;;
	  -nomanuel )
	     nomanuel=&quot;1&quot;
	  ;;
	  -dirhtml )
	     narg=$(( $narg +1 ))
	     DIRhtmlPersonaliser=${ARGS[$narg]}
	     if [ ! -d $DIRhtmlPersonaliser ];then
		echo &quot;Chemin de répertoire non valide!&quot;
		exit 0
	     fi
	  ;;
	esac
done
pause () {   # fonction pause pour debugage
      MESSAGE=&quot;$*&quot;
      choi=&quot;&quot;
      MESSAGE=${MESSAGE:=&quot;pour continuer appuyez sur une touche :&quot;}
      echo  &quot;$MESSAGE&quot;
      while (true); do
         read choi
         case $choi in
         * )
         break
         ;;
      esac
      done
}
SED=&quot;/bin/sed -i&quot;
DIR_CONF=&quot;/usr/local/etc/CTparental&quot;
FILE_CONF=&quot;$DIR_CONF/CTparental.conf&quot;
FILE_GCTOFFCONF=&quot;$DIR_CONF/GCToff.conf&quot;
FILE_HCOMPT=&quot;$DIR_CONF/CThourscompteur&quot;
FILE_HCONF=&quot;$DIR_CONF/CThours.conf&quot;
if [ ! -f $FILE_CONF ] ; then
mkdir -p $DIR_CONF
mkdir -p /usr/local/share/CTparental/
cat &lt;&lt; EOF &gt; $FILE_CONF
LASTUPDATE=0
DNSMASQ=BLACK
AUTOUPDATE=OFF
HOURSCONNECT=OFF
GCTOFF=OFF
EOF
fi




## imports du plugin de la distributions si il existe
if [ -f $DIR_CONF/dist.conf ];then
	source  $DIR_CONF/dist.conf 
fi

tempDIR=&quot;/tmp/alcasar&quot;
tempDIRRamfs=&quot;/tmp/alcasarRamfs&quot;
if [ ! -d $tempDIRRamfs ] ; then
mkdir $tempDIRRamfs
fi
RougeD=&quot;\033[1;31m&quot;
BleuD=&quot;\033[1;36m&quot;
VertD=&quot;\033[1;32m&quot;
Fcolor=&quot;\033[0m&quot;
GESTIONNAIREDESESSIONS=&quot; login gdm lightdm slim kdm xdm lxdm gdm3 &quot;
FILEPAMTIMECONF=&quot;/etc/security/time.conf&quot;
DIRPAM=&quot;/etc/pam.d/&quot;
DAYS=${DAYS:=&quot;lundi mardi mercredi jeudi vendredi samedi dimanche &quot;}
DAYS=( $DAYS )
DAYSPAM=( Mo Tu We Th Fr Sa Su )
DAYSCRON=( mon tue wed thu fri sat sun )

#### DEPENDANCES par DEFAULT #####
DEPENDANCES=${DEPENDANCES:=&quot; dnsmasq lighttpd php5-cgi libnotify-bin notification-daemon resolvconf &quot;}
#### RESOLVCONF EST PAS PRESENT DANS LA DISTRIBUTION ####
NORESOLVCONF=${NORESOLVCONF:=0}
#### COMMANDES de services par DEFAULT #####
CMDSERVICE=${CMDSERVICE:=&quot;service &quot;}
CRONstart=${CRONstart:=&quot;$CMDSERVICE cron start &quot;}
CRONstop=${CRONstop:=&quot;$CMDSERVICE cron stop &quot;}
CRONrestart=${CRONrestart:=&quot;$CMDSERVICE cron restart &quot;}
LIGHTTPDstart=${LIGHTTPDstart:=&quot;$CMDSERVICE lighttpd start &quot;}
LIGHTTPDstop=${LIGHTTPDstop:=&quot;$CMDSERVICE lighttpd stop &quot;}
LIGHTTPDrestart=${LIGHTTPDrestart:=&quot;$CMDSERVICE lighttpd restart &quot;}
DNSMASQstart=${DNSMASQstart:=&quot;$CMDSERVICE dnsmasq start &quot;}
DNSMASQstop=${DNSMASQstop:=&quot;$CMDSERVICE dnsmasq stop &quot;}
DNSMASQrestart=${DNSMASQrestart:=&quot;$CMDSERVICE dnsmasq restart &quot;}
NWMANAGERstop=${NWMANAGERstop:=&quot;$CMDSERVICE network-manager stop&quot;}
NWMANAGERstart=${NWMANAGERstart:=&quot;$CMDSERVICE network-manager start&quot;}
NWMANAGERrestart=${NWMANAGERrestart:=&quot;$CMDSERVICE network-manager restart&quot;}

#### LOCALISATION du fichier PID lighttpd par default ####
LIGHTTPpidfile=${LIGHTTPpidfile:=&quot;/var/run/lighttpd.pid&quot;}

#### COMMANDES D'ACTIVATION DES SERVICES AU DEMARAGE DU PC ####
ENCRON=${ENCRON:=&quot;&quot;}
ENLIGHTTPD=${ENLIGHTTPD:=&quot;&quot;}
ENDNSMASQ=${ENDNSMASQ:=&quot;&quot;}
ENNWMANAGER=${ENNWMANAGER:=&quot;&quot;}
#### UID MINIMUM pour les UTILISATEUR
UIDMINUSER=${UIDMINUSER:=1000}

DNSMASQCONF=${DNSMASQCONF:=&quot;/etc/dnsmasq.conf&quot;}
MAINCONFHTTPD=${MAINCONFHTTPD:=&quot;/etc/lighttpd/lighttpd.conf&quot;}
DIRCONFENABLEDHTTPD=${DIRCONFENABLEDHTTPD:=&quot;/etc/lighttpd/conf-enabled&quot;}
CTPARENTALCONFHTTPD=${CTPARENTALCONFHTTPD:=&quot;$DIRCONFENABLEDHTTPD/10-CTparental.conf&quot;}
RESOLVCONFMAIN=${RESOLVCONFMAIN:=&quot;/etc/resolvconf&quot;}
RESOLVDNSMASQ=${RESOLVDNSMASQ:=&quot;$RESOLVCONFMAIN/run/interface/lo.dnsmasq&quot;}
RESOLVCONFORDER=${RESOLVCONFORDER:=&quot;$RESOLVCONFMAIN/interface-order&quot;}
DIRHTML=${DIRHTML:=&quot;/var/www/CTparental&quot;}
DIRadminHTML=${DIRadminHTML:=&quot;/var/www/CTadmin&quot;}
PASSWORDFILEHTTPD=${PASSWORDFILEHTTPD:=&quot;/etc/lighttpd/lighttpd-htdigest.user&quot;}
REALMADMINHTTPD=${REALMADMINHTTPD:=&quot;interface admin&quot;}
CMDINSTALL=&quot;&quot;
NOXSESSIOND=${NOXSESSIOND:=0}
LOGONDDIR=${LOGONDDIR:=&quot;/etc/X11/Xsession.d&quot;}
if [ ! -d $LOGONDDIR ];then
   mkdir $LOGONDDIR 
fi
STARTUPKDM=${STARTUPKDM:=/etc/kde/kdm/Xsetup}
STARTUPGDM=${STARTUPGDM:=/etc/gdm/PostLogin/Default}
CONFLIGHTDM=${CONFLIGHTDM:=/etc/lightdm/lightdm.conf}
if [ $(cat $CONFLIGHTDM | grep -c ^greeter-setup-script= ) -eq 1 ];then
STARTUPLIGHTDM=$(cat $CONFLIGHTDM | grep ^greeter-setup-script= | cut -d&quot;=&quot; -f2 )
else
STARTUPLIGHTDM=${STARTUPLIGHTDM:=/usr/local/bin/lightdm-greeter-script}
fi


XLOGONSCRIPTE=${XLOGONSCRIPTE:=&quot;$LOGONDDIR/10x11-CTparentalLogin&quot;}
XLOGONSCRIPTEALT=${XLOGONSCRIPTEALT:=&quot;/usr/local/bin/10x11-CTparentalLogin&quot;}
ADDUSERTOGROUP=${ADDUSERTOGROUP:=&quot;gpasswd -a &quot;}
DELUSERTOGROUP=${DELUSERTOGROUP:=&quot;gpasswd -d &quot;}
if [ $(yum help 2&gt; /dev/null | wc -l ) -ge 50 ] ; then
   ## &quot;Distribution basée sur yum exemple redhat, fedora...&quot;
   CMDINSTALL=${CMDINSTALL:=&quot;yum install &quot;}
   CMDREMOVE=${CMDREMOVE:=&quot;yum remove &quot;}
fi
urpmi --help 2&amp;&gt; /dev/null
if [ $? -eq 1 ] ; then
   ## &quot;Distribution basée sur urpmi exemple mandriva...&quot;
   CMDINSTALL=${CMDINSTALL:=&quot;urpmi -a --auto &quot;}
   CMDREMOVE=${CMDREMOVE:=&quot;urpme --auto &quot;}
fi
apt-get -h 2&amp;&gt; /dev/null
if [ $? -eq 0 ] ; then
   ## &quot;Distribution basée sur apt-get exemple debian, ubuntu ...&quot;
   CMDINSTALL=${CMDINSTALL:=&quot;apt-get -y --force-yes install &quot;}
   CMDREMOVE=${CMDREMOVE:=&quot;apt-get -y --force-yes remove --purge &quot;}
fi

if [ $( echo $CMDINSTALL | wc -m ) -eq 1 ] ; then
   echo &quot;Aucun gestionnaire de paquet connu , n'a été détecté.&quot;
   set -e
   exit 1
fi




interface_WAN=$(ip route | awk '/^default via/{print $5}' | sort -u ) # suppose que la passerelle est la route par défaut

if [ -f $DIR_CONF/resolv.conf.sav ];then
   DNS1=$(cat $DIR_CONF/resolv.conf.sav | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f1)
   DNS2=$(cat $DIR_CONF/resolv.conf.sav | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f2)
else
   DNS1=$(cat /etc/resolv.conf | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f1)
   DNS2=$(cat /etc/resolv.conf | grep ^nameserver | cut -d &quot; &quot; -f2 | tr &quot;\n&quot; &quot; &quot; | cut -d &quot; &quot; -f2)
fi

PRIVATE_IP=&quot;127.0.0.10&quot;

FILE_tmp=${FILE_tmp:=&quot;$tempDIRRamfs/filetmp.txt&quot;}
FILE_tmpSizeMax=${FILE_tmpSizeMax:=&quot;128M&quot;}  # 70 Min, Recomend 128M 
LOWRAM=${LOWRAM:=0}
if [ $LOWRAM -eq 0 ] ; then
MFILEtmp=&quot;mount -t tmpfs -o size=$FILE_tmpSizeMax tmpfs $tempDIRRamfs&quot;
UMFILEtmp=&quot;umount $tempDIRRamfs&quot;
else
MFILEtmp=&quot;&quot;
UMFILEtmp=&quot;&quot;
fi
BL_SERVER=&quot;dsi.ut-capitole.fr&quot;
CATEGORIES_ENABLED=&quot;$DIR_CONF/categories-enabled&quot;
BL_CATEGORIES_AVAILABLE=&quot;$DIR_CONF/bl-categories-available&quot;
WL_CATEGORIES_AVAILABLE=&quot;$DIR_CONF/wl-categories-available&quot;
DIR_DNS_FILTER_AVAILABLE=&quot;$DIR_CONF/dnsfilter-available&quot;
DIR_DNS_BLACKLIST_ENABLED=&quot;$DIR_CONF/blacklist-enabled&quot;
DIR_DNS_WHITELIST_ENABLED=&quot;$DIR_CONF/whitelist-enabled&quot;
DNS_FILTER_OSSI=&quot;$DIR_CONF/blacklist-local&quot;
DREAB=&quot;$DIR_CONF/domaine-rehabiliter&quot; 
THISDAYS=$(expr $(date +%Y) \* 365 + $(date +%j))
MAXDAYSFORUPDATE=&quot;7&quot; # update tous les 7 jours
CHEMINCTPARENTLE=$(readlink -f $0)

initblenabled () {
   cat &lt;&lt; EOF &gt; $CATEGORIES_ENABLED
adult
agressif
dangerous_material
dating
drogue
gambling
hacking
malware
marketingware
mixed_adult
phishing
redirector
sect
strict_redirector
strong_redirector
tricheur
warez
ossi   
EOF
         

}

addadminhttpd() {
if [ ! -f $PASSWORDFILEHTTPD ] ; then
    echo -n &gt; $PASSWORDFILEHTTPD   
fi
chown root:$USERHTTPD $PASSWORDFILEHTTPD
chmod 640 $PASSWORDFILEHTTPD
USERADMINHTTPD=${1}
pass=${2}
hash=`echo -n &quot;$USERADMINHTTPD:$REALMADMINHTTPD:$pass&quot; | md5sum | cut -b -32`
ligne=$(echo &quot;$USERADMINHTTPD:$REALMADMINHTTPD:$hash&quot;)
$SED &quot;/^$USERADMINHTTPD:$REALMADMINHTTPD.*/d&quot; $PASSWORDFILEHTTPD
echo $ligne &gt;&gt; $PASSWORDFILEHTTPD
}

download() {
   rm -rf $tempDIR
   mkdir $tempDIR
   wget -P $tempDIR http://$BL_SERVER/blacklists/download/blacklists.tar.gz 2&gt;&amp;1 | cat
   if [ ! $? -eq 0 ]; then
      echo &quot;erreur lors du téléchargement, processus interrompu&quot;
      rm -rf $tempDIR
      set -e
      exit 1
   fi
   tar -xzf $tempDIR/blacklists.tar.gz -C $tempDIR
   if [ ! $? -eq 0 ]; then
      echo &quot;erreur d'extraction de l'archive, processus interrompu&quot;
      set -e
      exit 1
   fi
   rm -rf $DIR_DNS_FILTER_AVAILABLE/
   mkdir $DIR_DNS_FILTER_AVAILABLE
}
autoupdate() {
        LASTUPDATEDAY=`grep LASTUPDATE= $FILE_CONF | cut -d&quot;=&quot; -f2`
        LASTUPDATEDAY=${LASTUPDATEDAY:=0}
        DIFFDAY=$(expr $THISDAYS - $LASTUPDATEDAY)
	if [ $DIFFDAY -ge $MAXDAYSFORUPDATE ] ; then
		download
		adapt
		catChoice
		dnsmasqon
                $SED &quot;s?^LASTUPDATE.*?LASTUPDATE=$THISDAYS=`date +%d-%m-%Y\ %T`?g&quot; $FILE_CONF
		exit 0
	fi
}
autoupdateon() {
$SED &quot;s?^AUTOUPDATE.*?AUTOUPDATE=ON?g&quot; $FILE_CONF
echo &quot;*/10 * * * * root $CHEMINCTPARENTLE -aup&quot; &gt; /etc/cron.d/CTparental-autoupdate
$CRONrestart
}

autoupdateoff() {
$SED &quot;s?^AUTOUPDATE.*?AUTOUPDATE=OFF?g&quot; $FILE_CONF
rm -f /etc/cron.d/CTparental-autoupdate
$CRONrestart
}
adapt() {
   echo adapt
   date +%H:%M:%S
   dnsmasqoff
   $MFILEtmp
   if [ ! -f $DNS_FILTER_OSSI ] ; then
            echo &gt; $DNS_FILTER_OSSI
   fi

   if [ -d $tempDIR  ] ; then
	  CATEGORIES_AVAILABLE=$tempDIR/categories_available
	  ls -FR $tempDIR/blacklists | grep '/$' | sed -e &quot;s/\///g&quot; &gt; $CATEGORIES_AVAILABLE
          echo -n &gt; $BL_CATEGORIES_AVAILABLE
          echo -n &gt; $WL_CATEGORIES_AVAILABLE
          if [ ! -f $DIR_DNS_FILTER_AVAILABLE/ossi.conf ] ; then
		echo &gt; $DIR_DNS_FILTER_AVAILABLE/ossi.conf
	  fi
	  for categorie in `cat $CATEGORIES_AVAILABLE` # creation des deux fichiers de categories (BL / WL)
	  do
		if [ -e $tempDIR/blacklists/$categorie/usage ]
		then
			is_whitelist=`grep white $tempDIR/blacklists/$categorie/usage|wc -l`
		else
			is_whitelist=0 # ou si le fichier 'usage' n'existe pas, on considère que la catégorie est une BL
		fi
		if [ $is_whitelist -eq &quot;0&quot; ]
		then
			echo &quot;$categorie&quot; &gt;&gt; $BL_CATEGORIES_AVAILABLE
		else
			echo &quot;$categorie&quot; &gt;&gt; $WL_CATEGORIES_AVAILABLE
		fi
	   done
         echo -n &quot;Toulouse Black and White List migration process. Please wait : &quot;
         for DOMAINE in `cat  $CATEGORIES_AVAILABLE`  # pour chaque catégorie
         do
            echo -n &quot;.&quot;
            # suppression des @IP, de caractères acccentués et des lignes commentées ou vides
            cp -f $tempDIR/blacklists/$DOMAINE/domains $FILE_tmp
            $SED -r '/([0-9]{1,3}\.){3}[0-9]{1,3}/d' $FILE_tmp
	    $SED &quot;/[äâëêïîöôüû]/d&quot; $FILE_tmp
	    $SED &quot;/^#.*/d&quot; $FILE_tmp
            $SED &quot;/^$/d&quot; $FILE_tmp
            $SED &quot;s/\.\{2,10\}/\./g&quot; $FILE_tmp # supprime les suite de &quot;.&quot; exemple: address=/fucking-big-tits..com/127.0.0.10 devient address=/fucking-big-tits.com/127.0.0.10
	    is_blacklist=`grep $DOMAINE $BL_CATEGORIES_AVAILABLE |wc -l`
	    if [ $is_blacklist -ge &quot;1&quot; ] ; then
            	$SED &quot;s?.*?address=/&amp;/$PRIVATE_IP?g&quot; $FILE_tmp  # Mise en forme dnsmasq des listes noires
		mv $FILE_tmp $DIR_DNS_FILTER_AVAILABLE/$DOMAINE.conf  
            else
		$SED &quot;s?.*?server=/&amp;/#?g&quot; $FILE_tmp  # Mise en forme dnsmasq des listes blanches
		mv $FILE_tmp $DIR_DNS_FILTER_AVAILABLE/$DOMAINE.conf
            fi
         done
   else
         mkdir   $tempDIR
         echo -n &quot;.&quot;
 	 # suppression des @IP, de caractères acccentués et des lignes commentées ou vides
         cp -f $DNS_FILTER_OSSI $FILE_tmp
         $SED -r '/([0-9]{1,3}\.){3}[0-9]{1,3}/d' $FILE_tmp
         $SED &quot;/[äâëêïîöôüû]/d&quot; $FILE_tmp 
         $SED &quot;/^#.*/d&quot; $FILE_tmp 
         $SED &quot;/^$/d&quot; $FILE_tmp 
         $SED &quot;s/\.\{2,10\}/\./g&quot; $FILE_tmp # supprime les suite de &quot;.&quot; exemple: address=/fucking-big-tits..com/127.0.0.10 devient address=/fucking-big-tits.com/127.0.0.10
         $SED &quot;s?.*?address=/&amp;/$PRIVATE_IP?g&quot; $FILE_tmp  # Mise en forme dnsmasq
         mv $FILE_tmp $DIR_DNS_FILTER_AVAILABLE/ossi.conf
   fi     
   echo
   $UMFILEtmp
   rm -rf $tempDIR
date +%H:%M:%S
}
catChoice() {
#   echo &quot;catChoice&quot;
   rm -rf $DIR_DNS_BLACKLIST_ENABLED/
   mkdir $DIR_DNS_BLACKLIST_ENABLED
   rm -rf  $DIR_DNS_WHITELIST_ENABLED/
   mkdir  $DIR_DNS_WHITELIST_ENABLED
     
      for CATEGORIE in `cat $CATEGORIES_ENABLED` # on affecte les catégories dnsmasq
      do
	 is_blacklist=`grep $CATEGORIE $BL_CATEGORIES_AVAILABLE |wc -l`
	 if [ $is_blacklist -ge &quot;1&quot; ] ; then
		cp $DIR_DNS_FILTER_AVAILABLE/$CATEGORIE.conf $DIR_DNS_BLACKLIST_ENABLED/
         else
		cp $DIR_DNS_FILTER_AVAILABLE/$CATEGORIE.conf $DIR_DNS_WHITELIST_ENABLED/
     	 fi     
      done
      cp $DIR_DNS_FILTER_AVAILABLE/ossi.conf $DIR_DNS_BLACKLIST_ENABLED/
#      echo &quot;fincatChoice&quot;
      reabdomaine
}

reabdomaine () {
echo reabdomaine
date +%H:%M:%S
$MFILEtmp
if [ ! -f $DREAB ] ; then
cat &lt;&lt; EOF &gt; $DREAB
www.google.com
www.google.fr
EOF
fi
if [ ! -f $DIR_DNS_BLACKLIST_ENABLED/ossi.conf ] ; then
	echo &gt; $DIR_DNS_BLACKLIST_ENABLED/ossi.conf
fi
echo
echo -n &quot;Application de la liste blanche (domaine réhabilité):&quot;
for CATEGORIE in `cat  $CATEGORIES_ENABLED  `  # pour chaque catégorie
do 
	is_blacklist=`grep $CATEGORIE $BL_CATEGORIES_AVAILABLE |wc -l`
	if [ $is_blacklist -ge &quot;1&quot; ] ; then
		echo -n &quot;.&quot;
		for DOMAINE in `cat  $DREAB`
		do
		    cp -f $DIR_DNS_BLACKLIST_ENABLED/$CATEGORIE.conf $FILE_tmp
		    $SED &quot;/$DOMAINE/d&quot; $FILE_tmp
                    cp -f $FILE_tmp $DIR_DNS_BLACKLIST_ENABLED/$CATEGORIE.conf
		done
        fi
done
echo -n &quot;.&quot;
cat $DREAB | sed -e &quot;s? ??g&quot; | sed -e &quot;s?.*?server=/&amp;/#?g&quot; &gt;  $DIR_DNS_WHITELIST_ENABLED/whiteliste.ossi.conf
echo
$UMFILEtmp
rm -f $FILE_tmp
date +%H:%M:%S
}

dnsmasqon () {
   categorie1=`sed -n &quot;1 p&quot; $CATEGORIES_ENABLED` # on considère que si la 1ère catégorie activée est un blacklist on fonctionne par blacklist.
   is_blacklist=`grep $categorie1 $BL_CATEGORIES_AVAILABLE |wc -l`
   if [ $is_blacklist -ge &quot;1&quot; ] ; then
   $SED &quot;s?^DNSMASQ.*?DNSMASQ=BLACK?g&quot; $FILE_CONF
   cat &lt;&lt; EOF &gt; $DNSMASQCONF
         # Configuration file for &quot;dnsmasq with blackhole&quot;
   # Inclusion de la blacklist &lt;domains&gt; de Toulouse dans la configuration
   conf-dir=$DIR_DNS_BLACKLIST_ENABLED
   # conf-file=$DIR_DEST_ETC/alcasar-dns-name   # zone de definition de noms DNS locaux
   no-dhcp-interface=$interface_WAN
   bind-interfaces
   cache-size=1024
   domain-needed
   expand-hosts
   bogus-priv
   server=$DNS1
   server=$DNS2
   
EOF
$DNSMASQrestart
else
  dnsmasqwhitelistonly
fi
}
dnsmasqoff () {
   $SED &quot;s?^DNSMASQ.*?DNSMASQ=OFF?g&quot; $FILE_CONF
   cat &lt;&lt; EOF &gt; $DNSMASQCONF
         # Configuration file for &quot;dnsmasq with blackhole&quot;
   # Inclusion de la blacklist &lt;domains&gt; de Toulouse dans la configuration
   # conf-dir=$DIR_DNS_BLACKLIST_ENABLED
   # conf-file=$DIR_DEST_ETC/alcasar-dns-name   # zone de definition de noms DNS locaux
   no-dhcp-interface=$interface_WAN
   bind-interfaces
   cache-size=0
   domain-needed
   expand-hosts
   bogus-priv
   server=$DNS1
   server=$DNS2
   
EOF

$DNSMASQrestart
}
dnsmasqwhitelistonly  () {
   $SED &quot;s?^DNSMASQ.*?DNSMASQ=WHITE?g&quot; $FILE_CONF
   cat &lt;&lt; EOF &gt; $DNSMASQCONF
         # Configuration file for &quot;dnsmasq with blackhole&quot;
   # Inclusion de la blacklist &lt;domains&gt; de Toulouse dans la configuration
   conf-dir=$DIR_DNS_WHITELIST_ENABLED
   # conf-file=$DIR_DEST_ETC/alcasar-dns-name   # zone de definition de noms DNS locaux
   no-dhcp-interface=$interface_WAN
   bind-interfaces
   cache-size=0
   domain-needed
   expand-hosts
   bogus-priv
   server=$DNS1
   server=$DNS2
   address=/#/$PRIVATE_IP #redirige vers $PRIVATE_IP pour tout ce qui n'a pas été resolu dans les listes blanches
EOF

$DNSMASQrestart
}


FoncHTTPDCONF () {
$LIGHTTPDstop
rm -rf $DIRHTML/*
mkdir -v $DIRHTML
if [ ! -z $DIRhtmlPersonaliser ];then
   cp -r $DIRhtmlPersonaliser/* $DIRHTML
else
s=&quot;span&quot;
st=&quot;style&quot;
c=&quot;$c&quot;
cab=&quot;;\&quot;&gt;&quot;

cat &lt;&lt; EOF &gt; $DIRHTML/index.html
 &lt;HTML&gt;
&lt;HEAD&gt;
   &lt;META HTTP-EQUIV=&quot;CONTENT-TYPE&quot; CONTENT=&quot;text/html; charset=utf-8&quot;&gt;
   &lt;TITLE&gt;danger&lt;/TITLE&gt;
&lt;/HEAD&gt;
&lt;BODY LANG=&quot;fr-FR&quot; DIR=&quot;LTR&quot;&gt;
&lt;CENTER&gt;
&lt;img alt=&quot;Site dangereux pour des mineurs&quot;
  HEIGHT=&quot;600&quot;   
  src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKIAAACgCAYAAACPOrcQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz
AAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAuGSURB
VHic7d17jFTlGcfx7zMol7KriRpF3Sii3FyooE1EWuNaFrFeWjXWqEBCmyYtrSa2iX9g+wcx9RZN
kya29i+1ETWKMSZI1AiClyI2KiJyFa8BBC9EuyAXhad/vDO7s8PszpyZc857zrzPJ9nsZvac931g
fnnf2Zlz3ldUFVNBZCQwDhhf/H480A60Fb+X/9xWPGsP0FP2vfznr4AtwGZgC6p70/qn5IUEHUSR
EcAFwGRc6Epfpybc83ZcKEtf64DXUd2XcL+ZFVYQRYYB04CLi1/TgKFea+pzEFgNrCh+rUb1gN+S
0tP6QRQ5B7gSF7zpwHC/BdVtP7AKF8olqK71XE+iWjOIIh3AjcBcYJLnauLyHvAI8Biq23wXE7fW
CaJIO3AtMAfoAgpe60nOYWAlsAh4CtUev+XEI/9BdFPvrcA1wAjP1aRtH/A0cG/ep+78BlFkOnAb
cLnvUjJiKXAnqqt8F9KI/AVRZBawALjIdykZ9TJwF6ov+C4kivwEUeQq4C/Aeb5LyYm3gL+i+ozv
QuqR/SCKTADuB2b4LiWnlgM3obrJdyGDye5fliIjEbkbeBcLYTNmAO8icnfxo8tMyuaIKPJL4G9A
h+9SWsw24E+oLvZdSKVsBVHkLOABoNt3KS1uGTAf1a2+CynJztQsMhtYg4UwDd3AGkTm+C6kxH8Q
RX6AyIO4Twraah1uYtMGPILIw1l47eh3ahaZDDwBTPRXhMFdinY9qu/4KsDfiCjyW+C/WAizYDyw
GpGbfBWQ/ogoMhR4EJidbsemTouBuWlfC5luEEWOwX1Ib+8LZtsrwM9R/SatDtMLosgo4DlgSjod
miatAy5FdUcanaXzGlFkHPA6FsI8mQysKn7EmrjkgyhyPvAfYHTifZm4nQ68hsi0pDtKNogi3cBL
wAmJ9mOSdDywvPhcJia514huJFwOeH+z1MRiLzAD1TeSaDyZIIqcDbwKHBd/48aj3cCFqG6Iu+H4
gyhyOu41YdI3qRs/tgM/RvWTOBuN9zWiyInAi1gIW9mpwIvF5zo28QXRvVn9PDA2tjZNVo0Fni8+
57GIJ4giAjwJTI2lPZMHU4Eni8990+IaEf8MzIqpLZMfs3DPfdOa/2NFpAt3xe+QGOox+XMI6EZ1
ZTONNBdEkZOAd4BRzRRhcm8nMAXVXY020PjULFIAHsdCaFwGHi9moiHNvEZciFvqzRhwWVjY6MmN
Tc0iF+JWpPJ/z4vJksNAF6qvRj0xehBFjsbdbdcZtTMThPXAVFS/i3JSIyPaH7EQmoF14jISSbQR
UeQ0YAN2RY0Z3F7gbFQ/rfeEqCPi37EQmtpG4rJSt/pHRJHLgWej12QCdgWqS+s5sL4guv1I1gNn
NFeXCcxHQGc9+8fUOzXPx0JoojsDl52aao+IIsOBD4GTmy7LhOgzYAyq+wc7qJ4R8TdYCE3jTsZl
aFCDj4hueZAPsAUzTXO2AWeienCgA2qNiPOwEJrmdeCyNKCBR0SRo4D3sRvjTTw+Bsai+n21Xw42
Is7BQmjiMxqXqaoGC+IfYi/FhG7ATFWfmkU6cbthGhO3Saiur3xwoBFxXrK1mIDNq/bgkSOiyBDc
n9t2C4BJwk6gA9VD5Q9WGxEvxUJokjMKl7F+qgVxXuKlmNDNq3yg/9QschywAxiWWkkmRAeAU1Dd
XXqgckT8BRZCk7xhuKz1qgyirfZv0tIva5VT83bglJQLMmHagWrv8oV9QXSrx2+M3Nwtt8Dw4XEV
Z/Jm1y546KFGz55Y2tC8PIjzgX9Gburrr+HYYxstxOTd2rUwpeFdS36P6gPQ/zXiT5suyphoejPn
gugWW+zyVIwJV1dpoc/SiPhDbC8Uk74TcNnrDeK5/moxgTsX+oKYyn5rxlQxASyIxr9+QbRd5I0v
EwEKxVtGx3guxoRrDCJDC8BZ2I4Axp8hwFkFbFo2/k0sAON9V2GCN74AxLq5nzENOLEAtPuuwgSv
3YJosqC9ALT5rsIEr81GRJMFNjWbTLCp2WSCTc0mE9ptU0eTCQWgx3cRJng9BWCP7ypM8PbYiGiy
oMeCaLLApmaTCTY1m0ywqdlkQk8B+Nx3FSZ4nxeAzb6rMMHbXKCRpeiMidfGArAVOFTrSGMScgjY
WihuXfqh72pMsD5E9WDpogebno0vG6FvyZFNHgsxYdsEFkTjX78gvu2xEBO2t6EviO8CX/qrxQTq
S1z2ikF0Wwus9FePCdTKYvb67SrwkqdiTLh6M1cexBUeCjFh681cXxDdDkA7fFRjgrSjtOsUwFEV
v1wBzI7U3IIFMMw2NA3WF180ema/GbhyU8hfAQ82XJQx9fs1qr2b+NnG4caHGhuHu18sSbkoE54l
5SGEIzcOB3g4nVpMwB6ufKD/1AwgMgTYBoxKpSQTmp1AB6r9roE9ckR0ByxKqSgTnkWVIYRqIyKA
SCfwXgpFmfBMQnV95YPVVwNzB76ZdEUmOG9WCyEMFETnHwkVY8I1YKaqT80AIkcB7wOjEynJhOZj
YCyq31f75cAjojvhrmRqMgG6a6AQwmAjIlDcufQDoCP+ukxAtgFnFu8YrWrwpYvdiffEXJQJzz2D
hRBqjYgAIsNx9z2fHF9dJiCfAWNQ3T/YQbUXc3cN3BdTUSY899UKIdQzIgKIjADWA2c0X5cJyEdA
J6r7ah1Y3/YWrqGbmyzKhOfmekII9QYRQHUp8EyjFZngPFPMTF3qm5p7j5bTgA3AyOh1mYDsBc5G
9dN6T4i285Rr+PaIRZnw3B4lhBB1RAQQORpYA3RGO9EEYj0wFdXvopwUfS8+18F84HDkc02rOwzM
jxpCaCSIAKqvAnc0dK5pZXcUsxFZ9Km590wpAMuAixtrwLSYFUA3qg3NlI0HEUDkJOAd7P6W0O0E
pqC6q9EGmtuv2XV8A7YYfMgOATc0E0JoNogAqiuBhU23Y/JqYTEDTWluau5tRQR4DpjVfGMmR14A
fkYMIYoniAAix+AW+5waT4Mm49YAXaj+L47G4gsigMiJwGvA2PgaNRn0PvATVGPbx7H514jlXGEz
ge2xtmuyZDswM84QQtxBBFD9BLgE2F3rUJM7u4FLis9xrOIPIoDqBuAy3FUYpjXsBS4rPrexSyaI
AKpvAFcB3ybWh0nLt8BVxec0EfH+sVK1BzkfeBY4IdmOTEK+Aq5AdXWSnSQfRACRcbj3nEYn35mJ
0SfApeWLricluam5nOoW4ALc59ImH9YB09MIIaQVRADVncBFwPLU+jSNegW4ENXUtjtJL4hA8V34
y4BHU+3XRLEY9xbNN2l2mm4QwS1jojoH+B1Q88Zrk5oDuNs/r0P1QNqdp/PHyoC9y2TgCWCivyIM
sBm4HlVvr+HTHxHLqa4DfgQ8VOtQk5h/A+f5DCH4HhHLicwG/gW0+S4lEHtwNzplYuF+vyNiOdVH
cZeQLfNdSgCW4W75zEQIIUtBBFDdiupM4Drc4o4mXtuA61CdiepW38WUy1YQS1QXAxNwi4RGvkfW
HOE73P/lhOL/beZk5zXiQEQmAPcDM3yXklPLgZvS+oSkUdkcEcupbkK1G7gaeMt3OTnyFnA1qt1Z
DyHkYUSsJDILWID7uNAc6WXcCv4v+C4kivwFsURkOnAbcLnvUjJiKXAnqqt8F9KI/AaxROQc4Fbg
GmCE52rStg94GrgX1bW+i2lG/oNYItIOXAvMAbrIw+vfxhzG3ba7CHgK1R6/5cSjdYJYTqQDuBGY
C0zyXE1c3gMeAR5DteXeY23NIJZzU/eVuFXLpgPD/RZUt/3AKtwqW0vyPvXW0vpBLCcyDJiGC+XF
xZ+Heq2pz0FgNS54K4DVPi7H8iWsIFZy+8dcAEwGxpd9nZpwz9txl16VvtYBr9e7FUQrCjuIAxEZ
CYzDhXIccDzQjrsyqL3i59LVQnuAnrLv5T9/BWzBhW4Lqna/d4X/A/bydTBs1YRqAAAAAElFTkSu
QmCC&quot; /&gt;
&lt;/CENTER&gt;
&lt;/BODY&gt;
&lt;/HTML&gt;
EOF

fi
## GENERATION

ln -s  $DIRHTML/index.html $DIRHTML/err404.html
USERHTTPD=$(cat /etc/passwd | grep /var/www | cut -d&quot;:&quot; -f1)
GROUPHTTPD=$(cat /etc/group | grep $USERHTTPD | cut -d&quot;:&quot; -f1)
chmod 644 $FILE_CONF
chown root:$GROUPHTTPD $FILE_CONF
cat &lt;&lt; EOF &gt; $MAINCONFHTTPD
server.modules = (
&quot;mod_access&quot;,
&quot;mod_alias&quot;,
&quot;mod_redirect&quot;,
&quot;mod_auth&quot;,	#pour interface admin
&quot;mod_fastcgi&quot;,  #pour interface admin (activation du php)
)
auth.debug                 = 0
auth.backend               = &quot;htdigest&quot; 
auth.backend.htdigest.userfile = &quot;$PASSWORDFILEHTTPD&quot; 

server.document-root = &quot;/var/www&quot;
server.upload-dirs = ( &quot;/var/cache/lighttpd/uploads&quot; )
server.errorlog = &quot;/var/log/lighttpd/error.log&quot;
server.pid-file = &quot;$LIGHTTPpidfile&quot;
server.username = &quot;$USERHTTPD&quot;
server.groupname = &quot;$GROUPHTTPD&quot;
server.port = 80
server.bind = &quot;127.0.0.1&quot;


index-file.names = ( &quot;index.php&quot;, &quot;index.html&quot; )
url.access-deny = ( &quot;~&quot;, &quot;.inc&quot; )
static-file.exclude-extensions = (&quot;.php&quot;, &quot;.pl&quot;, &quot;.fcgi&quot; )

server.tag = &quot;&quot;

include_shell &quot;/usr/share/lighttpd/create-mime.assign.pl&quot;
include_shell &quot;/usr/share/lighttpd/include-conf-enabled.pl&quot;
EOF

mkdir -p /usr/share/lighttpd/

if [ ! -f /usr/share/lighttpd/create-mime.assign.pl ];then
cat &lt;&lt; EOF &gt; /usr/share/lighttpd/create-mime.assign.pl
#!/usr/bin/perl -w
use strict;
open MIMETYPES, &quot;/etc/mime.types&quot; or exit;
print &quot;mimetype.assign = (\n&quot;;
my %extensions;
while(&lt;MIMETYPES&gt;) {
  chomp;
  s/\#.*//;
  next if /^\w*$/;
  if(/^([a-z0-9\/+-.]+)\s+((?:[a-z0-9.+-]+[ ]?)+)$/) {
    foreach(split / /, \$2) {
      # mime.types can have same extension for different
      # mime types
      next if \$extensions{\$_};
      \$extensions{\$_} = 1;
      print &quot;\&quot;.\$_\&quot; =&gt; \&quot;\$1\&quot;,\n&quot;;
    }
  }
}
print &quot;)\n&quot;;
EOF
chmod +x /usr/share/lighttpd/create-mime.assign.pl
fi


if [ ! -f /usr/share/lighttpd/include-conf-enabled.pl ];then
cat &lt;&lt; EOF &gt; /usr/share/lighttpd/include-conf-enabled.pl
#!/usr/bin/perl -wl

use strict;
use File::Glob ':glob';

my \$confdir = shift || &quot;/etc/lighttpd/&quot;;
my \$enabled = &quot;conf-enabled/*.conf&quot;;

chdir(\$confdir);
my @files = bsd_glob(\$enabled);

for my \$file (@files)
{
        print &quot;include \&quot;\$file\&quot;&quot;;
}
EOF
chmod +x /usr/share/lighttpd/include-conf-enabled.pl 

fi

mkdir -p $DIRCONFENABLEDHTTPD
mkdir -p $DIRadminHTML
cp -rf CTadmin/* $DIRadminHTML/
#if [ $noinstalldep = &quot;1&quot; ]; then
#	addadminhttpd &quot;admin&quot; &quot;admin&quot;
#else
	clear 
	echo &quot;Entrer le login pour l'interface d'administration :&quot;
	while (true); do
		 read loginhttp
		 case $loginhttp in
			 * )
			 echo &quot;login:  $loginhttp&quot; &gt; /root/passwordCTadmin
			 break
			 ;;
		 esac
	done
	clear
	echo &quot;Entrer le mot de passe de $loginhttp :&quot;
	while (true); do
		 read password
		 case $password in
			 * )
			 echo &quot;password: $password&quot; &gt;&gt; /root/passwordCTadmin
		         addadminhttpd &quot;$loginhttp&quot; &quot;$password&quot;
			 break
			 ;;
		 esac
	done
#fi
chmod 700 /root/passwordCTadmin
chown root:root /root/passwordCTadmin
cat &lt;&lt; EOF &gt; $CTPARENTALCONFHTTPD

fastcgi.server = (
    &quot;.php&quot; =&gt; (
      &quot;localhost&quot; =&gt; ( 
        &quot;bin-path&quot; =&gt; &quot;/usr/bin/php-cgi&quot;,
        &quot;socket&quot; =&gt; &quot;/run/lighttpd/php-fastcgi.sock&quot;,
        &quot;max-procs&quot; =&gt; 4, # default value
        &quot;bin-environment&quot; =&gt; (
          &quot;PHP_FCGI_CHILDREN&quot; =&gt; &quot;1&quot;, # default value
        ),
        &quot;broken-scriptfilename&quot; =&gt; &quot;enable&quot;
      ))
)
  fastcgi.map-extensions     = ( &quot;.php3&quot; =&gt; &quot;.php&quot;,
                               &quot;.php4&quot; =&gt; &quot;.php&quot;,
                               &quot;.php5&quot; =&gt; &quot;.php&quot;,
                               &quot;.phps&quot; =&gt; &quot;.php&quot;,
                               &quot;.phtml&quot; =&gt; &quot;.php&quot; )

\$HTTP[&quot;url&quot;] =~ &quot;.*CTadmin.*&quot; {
  auth.require = ( &quot;&quot; =&gt;
                   (
                     &quot;method&quot;  =&gt; &quot;digest&quot;,
                     &quot;realm&quot;   =&gt; &quot;$REALMADMINHTTPD&quot;,
                     &quot;require&quot; =&gt; &quot;user=$USERADMINHTTPD&quot; 
                   )
                 )

}
\$SERVER[&quot;socket&quot;] == &quot;$PRIVATE_IP:80&quot; {
server.document-root = &quot;$DIRHTML&quot;
server.errorfile-prefix = &quot;$DIRHTML/err&quot; 
#ssl.engine = &quot;enable&quot; 
#ssl.pemfile = &quot;/etc/lighttpd/ssl/$PRIVATE_IP.pem&quot; 
}

EOF
chown root:$GROUPHTTPD $DREAB
chmod 660 $DREAB
chown root:$GROUPHTTPD $DNS_FILTER_OSSI
chmod 660 $DNS_FILTER_OSSI
chown root:$GROUPHTTPD $CATEGORIES_ENABLED
chmod 660 $CATEGORIES_ENABLED
chmod 660 /etc/sudoers

sudotest=`grep Defaults:$USERHTTPD /etc/sudoers |wc -l`
if [ $sudotest -ge &quot;1&quot; ] ; then
    $SED &quot;s?^Defaults:$USERHTTPD.*requiretty.*?Defaults:$USERHTTPD     \!requiretty?g&quot; /etc/sudoers
else
    echo &quot;Defaults:$USERHTTPD     !requiretty&quot; &gt;&gt; /etc/sudoers
fi

sudotest=`grep &quot;$USERHTTPD ALL=&quot; /etc/sudoers |wc -l`
if [ $sudotest -ge &quot;1&quot; ] ; then
    $SED &quot;s?^$USERHTTPD.*?$USERHTTPD ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh -gctalist,/usr/local/bin/CTparental.sh -gctulist,/usr/local/bin/CTparental.sh -gcton,/usr/local/bin/CTparental.sh -gctoff,/usr/local/bin/CTparental.sh -tlu,/usr/local/bin/CTparental.sh -trf,/usr/local/bin/CTparental.sh -dble,/usr/local/bin/CTparental.sh -ubl,/usr/local/bin/CTparental.sh -dl,/usr/local/bin/CTparental.sh -on,/usr/local/bin/CTparental.sh -off,/usr/local/bin/CTparental.sh -aupon,/usr/local/bin/CTparental.sh -aupoff?g&quot; /etc/sudoers
else
    echo &quot;$USERHTTPD ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh -gctalist,/usr/local/bin/CTparental.sh -gctulist,/usr/local/bin/CTparental.sh -gcton,/usr/local/bin/CTparental.sh -gctoff,/usr/local/bin/CTparental.sh -tlu,/usr/local/bin/CTparental.sh -trf,/usr/local/bin/CTparental.sh -dble,/usr/local/bin/CTparental.sh -ubl,/usr/local/bin/CTparental.sh -dl,/usr/local/bin/CTparental.sh -on,/usr/local/bin/CTparental.sh -off,/usr/local/bin/CTparental.sh -aupon,/usr/local/bin/CTparental.sh -aupoff&quot; &gt;&gt; /etc/sudoers
fi
	

sudotest=`grep %ctoff /etc/sudoers |wc -l`		
if [ $sudotest -ge &quot;1&quot; ] ; then	
   $SED &quot;s?^%ctoff.*?%ctoff ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh -off,/usr/local/bin/CTparental.sh -on?g&quot; /etc/sudoers
else
   echo &quot;%ctoff ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh -off,/usr/local/bin/CTparental.sh -on&quot;  &gt;&gt; /etc/sudoers
fi
sudotest=`grep &quot;ALL  ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh&quot; /etc/sudoers |wc -l`		
if [ $sudotest -ge &quot;1&quot; ] ; then	
	$SED &quot;s?^ALL  ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh.*?ALL  ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh -on?g&quot; /etc/sudoers
else
	echo &quot;ALL  ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh -on&quot; &gt;&gt; /etc/sudoers
fi
unset sudotest
    
chmod 440 /etc/sudoers
if [ ! -f $FILE_HCONF ] ; then 
	echo &gt; $FILE_HCONF 
fi
chown root:$GROUPHTTPD $FILE_HCONF
chmod 660 $FILE_HCONF
listeusers &gt; $FILE_GCTOFFCONF
chown root:$GROUPHTTPD $FILE_GCTOFFCONF
chmod 660 $FILE_GCTOFFCONF
if [ ! -f $FILE_HCOMPT ] ; then
	echo &quot;date=$(date +%D)&quot; &gt; $FILE_HCOMPT
fi
chown root:$GROUPHTTPD $FILE_HCOMPT
chmod 660 $FILE_HCOMPT

chown -R root:$GROUPHTTPD $DIRHTML
chown -R root:$GROUPHTTPD $DIRadminHTML
$LIGHTTPDstart
test=$?
if [ ! $test -eq 0 ];then
	echo &quot;Erreur au lancement du service lighttpd &quot;
	set -e
	exit 1
fi
}

install () {
	groupadd ctoff
	
	if [ $nomanuel -eq 0 ]; then 
		vim -h 2&amp;&gt; /dev/null
		if [ $? -eq 0 ] ; then
		EDIT=&quot;vim &quot;
		fi
		mono -h 2&amp;&gt; /dev/null
		if [ $? -eq 0 ] ; then
		EDIT=${EDIT:=&quot;mono &quot;}
		fi
		vi -h 2&amp;&gt; /dev/null
		if [ $? -eq 0 ] ; then
		EDIT=${EDIT:=&quot;vi &quot;}
		fi
		if [ -f gpl-3.0.fr.txt ] ; then
			cp -f gpl-3.0.fr.txt /usr/local/share/CTparental/
		fi
		if [ -f gpl-3.0.txt ] ; then
			cp -f gpl-3.0.txt /usr/local/share/CTparental/
		fi
		if [ -f CHANGELOG ] ; then
			cp -f CHANGELOG /usr/local/share/CTparental/
		fi
		if [ -f dist.conf ];then
			cp -f dist.conf /usr/local/share/CTparental/dist.conf.orig
			cp -f dist.conf $DIR_CONF/
		fi
		while (true); do
		$EDIT $DIR_CONF/dist.conf
		clear
		cat $EDIT $DIR_CONF/dist.conf | grep -v -E ^#
		echo &quot;Entrer : S pour continuer avec ces parramêtres .&quot;
		echo &quot;Entrer : Q pour Quiter l'installation.&quot;
		echo &quot;Entrer tous autre choix pour modifier les parramêtres.&quot;
		 read choi
		case $choi in
			 S | s )
				break
			;;
			 Q | q )
				exit
			;;
			esac
		done
			
	fi
	if [ -f $DIR_CONF/dist.conf ];then
		source  $DIR_CONF/dist.conf 
	fi

	if [ -f /etc/NetworkManager/NetworkManager.conf ];then
    		 $SED &quot;s/^dns=dnsmasq/#dns=dnsmasq/g&quot; /etc/NetworkManager/NetworkManager.conf
    		 $NWMANAGERrestart
     		sleep 5
   	fi

      mkdir $tempDIR
      mkdir -p $DIR_CONF
      initblenabled
      cat /etc/resolv.conf &gt; $DIR_CONF/resolv.conf.sav
      if [ $noinstalldep = &quot;0&quot; ]; then
	      $CMDINSTALL $DEPENDANCES
      fi
      if [ ! -f blacklists.tar.gz ]
      then
         download
      else
         tar -xzf blacklists.tar.gz -C $tempDIR
         if [ ! $? -eq 0 ]; then
            echo &quot;Erreur d'extraction de l'archive, processus interrompu&quot;
            uninstall
            set -e
            exit 1
         fi
         rm -rf $DIR_DNS_FILTER_AVAILABLE/
         mkdir $DIR_DNS_FILTER_AVAILABLE
      fi
      adapt
      catChoice
      dnsmasqon
      $SED &quot;s?^LASTUPDATE.*?LASTUPDATE=$THISDAYS=`date +%d-%m-%Y\ %T`?g&quot; $FILE_CONF
      confresolvconf
      FoncHTTPDCONF
      $ENCRON
      $ENLIGHTTPD
      $ENDNSMASQ
      $ENNWMANAGER

      
}

confresolvconf () {
if [ $NORESOLVCONF -eq 1 ] ; then
	chattr -i /etc/resolv.conf
	echo &quot;nameserver 127.0.0.1&quot; &gt; /etc/resolv.conf
	chattr +i /etc/resolv.conf
else 
	echo &quot;nameserver 127.0.0.1&quot; &gt; $RESOLVDNSMASQ
	if [ ! -f $RESOLVCONFORDER ];then
cat &lt;&lt; EOF &gt; $RESOLVCONFORDER
	# interface-order(5)
	lo.inet*
	lo.dnsmasq
	lo.pdnsd
	lo.!(pdns|pdns-recursor)
	lo
	tun*
	tap*
	hso*
	em+([0-9])?[+([0-9]))*
	p+([0-9]p+([0-9])?(_+([0-9]))*
	eth*
	ath*
	wlan*
	ppp*
	*
EOF
	fi
	resolvconf -u
fi
}
updatelistgctoff () {
	## on ajoute tous les utilisateurs manquants dans la liste
	for PCUSER in `listeusers`
	do
		if [ $(cat $FILE_GCTOFFCONF | sed -e &quot;s/#//g&quot; | grep -c -E &quot;^$PCUSER$&quot;) -eq 0 ];then
			echo $PCUSER &gt;&gt; $FILE_GCTOFFCONF
		fi
	done
	## on supprime tout ceux qui n'existent plus sur le pc.
	for PCUSER in $(cat $FILE_GCTOFFCONF | sed -e &quot;s/#//g&quot; )
	do
		if [ $( listeusers | grep -c -E &quot;^$PCUSER$&quot;) -eq 0 ];then
			$SED &quot;/^$PCUSER$/d&quot; $FILE_GCTOFFCONF
			$SED &quot;/^#$PCUSER$/d&quot; $FILE_GCTOFFCONF
		fi
	done
}
applistegctoff () {
	updatelistgctoff

	$ADDUSERTOGROUP root ctoff 2&gt; /dev/null
	for PCUSER in $(cat $FILE_GCTOFFCONF )
	do
		if [ $(echo $PCUSER | grep -c -v &quot;#&quot;) -eq 1 ];then
			$ADDUSERTOGROUP $PCUSER ctoff 2&gt; /dev/null
		else
			$DELUSERTOGROUP $(echo $PCUSER | sed -e &quot;s/#//g&quot; ) ctoff 2&gt; /dev/null
		fi
	done 
}

activegourpectoff () {
groupadd ctoff
$ADDUSERTOGROUP root ctoff
if [ ! -f $STARTUPGDM ];then
cat &lt;&lt; EOF &gt; $STARTUPGDM
#!/bin/bash

exit 0
EOF
chmod 755 $STARTUPGDM
chown root:root $STARTUPGDM
fi
if [ ! -f $STARTUPLIGHTDM ];then
cat &lt;&lt; EOF &gt; $STARTUPLIGHTDM
#!/bin/bash

exit 0
EOF
chmod 755 $STARTUPLIGHTDM
chown root:root $STARTUPLIGHTDM 
fi 
if [ $NOXSESSIOND -eq 1 ];then
$SED &quot;s?\#greeter-setup-script.*?greeter-setup-script=$STARTUPLIGHTDM?g&quot; $CONFLIGHTDM
$SED &quot;$(grep -n -E &quot;^\#\!/bin/&quot; $STARTUPKDM | cut -d&quot;:&quot; -f1)a$XLOGONSCRIPTEALT &amp;&quot; $STARTUPKDM
$SED &quot;$(grep -n -E &quot;^\#\!/bin/&quot; $STARTUPGDM | cut -d&quot;:&quot; -f1)a$XLOGONSCRIPTEALT &amp;&quot; $STARTUPGDM
$SED &quot;$(grep -n -E &quot;^\#\!/bin/&quot; $STARTUPLIGHTDM | cut -d&quot;:&quot; -f1)a$XLOGONSCRIPTEALT &amp;&quot; $STARTUPLIGHTDM

fi
cat &lt;&lt; EOF &gt; $XLOGONSCRIPTEALT
#!/bin/bash
sleep 10
USERSCONECT=\$(who | awk '//{print \$1}' | sort -u)
childloginon=0
for USERCT in \$USERSCONECT
do      
        if [ \$(groups \$USERCT | grep -v -c ctoff ) -eq 1 ] ;then
        childloginon=1
        fi
done
        if [ \$childloginon -eq 1 ];then
                if [ \$(cat $FILE_CONF | grep -c DNSMASQ=OFF ) -eq 1 ];then
                /usr/local/bin/CTparental.sh -on &gt; /dev/null
                fi
        else
                if [ \$(cat $FILE_CONF | grep -c DNSMASQ=OFF ) -eq 0 ];then
                 /usr/local/bin/CTparental.sh -off &gt; /dev/null
                fi
        fi
EOF

cat &lt;&lt; EOF &gt; $XLOGONSCRIPTE
#!/bin/bash
USERSCONECT=\$(who | awk '//{print \$1}' | sort -u)
childloginon=0
for USERCT in \$USERSCONECT
do
	if [ \$(groups \$USERCT | grep -v -c ctoff ) -eq 1 ] ;then
        childloginon=1
	fi
done
	if [ \$childloginon -eq 1 ];then
		if [ \$(cat $FILE_CONF | grep -c DNSMASQ=OFF ) -eq 1 ];then
		sudo /usr/local/bin/CTparental.sh -on &gt; /dev/null
		fi
	else
		if [ \$(cat $FILE_CONF | grep -c DNSMASQ=OFF ) -eq 0 ];then
		sudo /usr/local/bin/CTparental.sh -off &gt; /dev/null
		fi
	fi
EOF
chown root:root $XLOGONSCRIPTEALT
chmod 755 $XLOGONSCRIPTEALT
chown root:root $XLOGONSCRIPTE
chmod 655 $XLOGONSCRIPTE
$SED &quot;s?^GCTOFF.*?GCTOFF=ON?g&quot; $FILE_CONF
applistegctoff
}

desactivegourpectoff () {
if [ $NOXSESSIOND -eq 1 ];then
$SED &quot;$(echo $XLOGONSCRIPTEALT | sed -e 's|\/|\\/|g' | sed -e 's|\.|\\.|g')/d&quot; $STARTUPLIGHTDM
$SED &quot;$(echo $XLOGONSCRIPTEALT | sed -e 's|\/|\\/|g' | sed -e 's|\.|\\.|g')/d&quot; $STARTUPKDM
$SED &quot;$(echo $XLOGONSCRIPTEALT | sed -e 's|\/|\\/|g' | sed -e 's|\.|\\.|g')/d&quot; $STARTUPGDM
fi
   rm -f $XLOGONSCRIPTEALT
   rm -f $XLOGONSCRIPTE
   groupdel ctoff
$SED &quot;s?^GCTOFF.*?GCTOFF=OFF?g&quot; $FILE_CONF
}

uninstall () {
   desactivegourpectoff
   rm -f /etc/cron.d/CTparental*
   $DNSMASQrestart
   $LIGHTTPDstop
   rm -f /var/www/index.lighttpd.html
   rm -rf $tempDIR
   rm -rf $DIRHTML


   rm -rf /usr/local/share/CTparental
   rm -rf /usr/share/lighttpd/*
   rm -f $CTPARENTALCONFHTTPD
   rm -rf $DIRadminHTML
   if [ $NORESOLVCONF -eq 1 ] ; then
		chattr -i /etc/resolv.conf
		cat $DIR_CONF/resolv.conf.sav &gt; /etc/resolv.conf
		dhclient -r
		dhclient
   else 
	   rm -f $RESOLVDNSMASQ
	   resolvconf -u
   fi
   if [ -f /etc/NetworkManager/NetworkManager.conf ];then
	$SED &quot;s/^#dns=dnsmasq/dns=dnsmasq/g&quot; /etc/NetworkManager/NetworkManager.conf
	$NWMANAGERrestart
  	sleep 5
   fi
   rm -rf $DIR_CONF
   if [ $noinstalldep = &quot;0&quot; ]; then
	   $CMDREMOVE $DEPENDANCES 
   fi
}

choiblenabled () {
echo -n &gt; $CATEGORIES_ENABLED
clear
echo &quot;Voulez-vous filtrer par Blacklist ou Whitelist :&quot;
echo -n &quot; B/W :&quot;
while (true); do
         read choi
         case $choi in
         B | b )
         echo &quot;Vous allez maintenant choisir les \&quot;Black listes\&quot; à appliquer.&quot;
		for CATEGORIE in `cat  $BL_CATEGORIES_AVAILABLE`  # pour chaque catégorie
		do   
		      clear
		      echo &quot;Voulez vous activer la categorie :&quot;
		      echo -n &quot;$CATEGORIE  O/N :&quot;
		      while (true); do
			 read choi
			 case $choi in
			 O | o )
			 echo $CATEGORIE &gt;&gt; $CATEGORIES_ENABLED
			 break
			 ;;
			 N | n )
			 break
			 ;;
		      esac
		      done
		done
         break
         ;;
         W | w )
         echo &quot;Vous allez maintenant choisir les \&quot;White listes\&quot; à appliquer.&quot;
		for CATEGORIE in `cat  $WL_CATEGORIES_AVAILABLE`  # pour chaque catégorie
		do   
		      clear
		      echo &quot;Voulez vous activer la categorie :&quot;
		      echo -n &quot;$CATEGORIE  O/N :&quot;
		      while (true); do
			 read choi
			 case $choi in
			 O | o )
			 echo $CATEGORIE &gt;&gt; $CATEGORIES_ENABLED
			 break
			 ;;
			 N | n )
			 break
			 ;;
		      esac
		      done
		done
         break
         ;;
      esac
done
}


errortime1 () {
clear
echo -e &quot;L'heure de début doit être strictement inférieure à l'heure de fin: $RougeD$input$Fcolor &quot;
echo &quot;exemple: 08h00 à 23h59 ou 08h00 à 12h00 et 14h00 à 23h59&quot;
echo -e -n &quot;$RougeD$PCUSER$Fcolor est autorisé à se connecter le $BleuD${DAYS[$NumDAY]}$Fcolor de :&quot;
}
errortime2 () {
clear
echo -e &quot;Mauvaise syntaxe: $RougeD$input$Fcolor &quot;
echo &quot;exemple: 08h00 à 23h59 ou 08h00 à 12h00 et 14h00 à 23h59&quot;
echo -e -n &quot;$RougeD$PCUSER$Fcolor est autorisé à se connecter le $BleuD${DAYS[$NumDAY]}$Fcolor de :&quot;
}


timecronalert () {
MinAlert=${1} # temp en minute entre l'alerte et l'action
H=$((10#${2}))
M=$((10#${3}))
D=$((10#${4}))
MinTotalAlert=&quot;$(($H*60+$M-$MinAlert))&quot;
if [ $(( $MinTotalAlert &lt; 0 )) -eq 1 ] 
then
	if [ $Numday -eq 0 ] ; then
		D=6
	else
		D=$(( $D -1 ))
	fi
	MinTotalAlert=&quot;$(($(($H + 24))*60+$M-$MinAlert))&quot;
fi
Halert=$(($MinTotalAlert/60))
MAlert=$(($MinTotalAlert - $(( $Halert *60 )) ))
echo &quot;$MAlert $Halert * * ${DAYSCRON[$D]}&quot;
}
updatetimelogin () {
	USERSCONECT=$(who | awk '//{print $1}' | sort -u)
   	if [ $(cat $FILE_HCOMPT | grep -c $(date +%D)) -eq 1 ] ; then
			# on incrément le conteur de temps de connection. pour chaque utilisateur connecter
		for PCUSER in $USERSCONECT
		do
		
			if [ $(cat $FILE_HCONF | grep -c ^$PCUSER=user= ) -eq 1 ] ;then
			   if [ $(cat $FILE_HCOMPT | grep -c ^$PCUSER= ) -eq 0 ] ;then
					echo &quot;$PCUSER=1&quot; &gt;&gt; $FILE_HCOMPT
			   else
					count=$(($(cat $FILE_HCOMPT | grep ^$PCUSER= | cut -d&quot;=&quot; -f2) + 1 ))
					$SED &quot;s?^$PCUSER=.*?$PCUSER=$count?g&quot; $FILE_HCOMPT
					temprest=$(($(cat $FILE_HCONF | grep ^$PCUSER=user= | cut -d &quot;=&quot; -f3 ) - $count ))
					echo $temprest
					# si le compteur de l'usager dépasse la valeur max autorisée on verrouille le compte et on deconnecte l'utilisateur.
					if [ $temprest -le 0 ];then
						/usr/bin/skill -KILL -u$PCUSER
						passwd -l $PCUSER
					else
						if [ $temprest -le 5 ];then
						HOMEPCUSER=$(getent passwd &quot;$PCUSER&quot; | cut -d ':' -f6)
						export HOME=$HOMEPCUSER &amp;&amp; export DISPLAY=:0.0 &amp;&amp; export XAUTHORITY=$HOMEPCUSER/.Xauthority &amp;&amp; sudo -u $PCUSER  /usr/bin/notify-send -u critical &quot;Alerte CTparental&quot; &quot;Votre temps de connexion restant est de $temprest minutes &quot;
						fi
					fi
			   fi
			   
			else
			# on efface les ligne relative a cette utilisateur
			$SED &quot;/^$PCUSER$/d&quot; $FILE_HCOMPT
			fi

		done	
	else
		# on réactivent tous les comptes
		for PCUSER in `listeusers`
		do
			passwd -u $PCUSER
		done
		# on remait tous les compteurs a zero.
		echo &quot;date=$(date +%D)&quot; &gt; $FILE_HCOMPT
		
	fi
	
}
activetimelogin () {
   TESTGESTIONNAIRE=&quot;&quot;
   for FILE in `echo $GESTIONNAIREDESESSIONS`
   do
      if [ -f $DIRPAM$FILE ];then
         if [ $(cat $DIRPAM$FILE | grep -c &quot;account required pam_time.so&quot;) -eq 0  ] ; then
            $SED &quot;1i account required pam_time.so&quot;  $DIRPAM$FILE
         fi
         TESTGESTIONNAIRE=$TESTGESTIONNAIRE\ $FILE
      fi
   done
   if [ $( echo $TESTGESTIONNAIRE | wc -m ) -eq 1 ] ; then
      echo &quot;Aucun gestionnaire de session connu n'a été détecté.&quot;
      echo &quot; il est donc impossible d'activer le contrôle horaire des connexions&quot;
      desactivetimelogin
      exit 1
   fi
   
   if [ ! -f $FILEPAMTIMECONF.old ] ; then
   cp $FILEPAMTIMECONF $FILEPAMTIMECONF.old
   fi
   echo &quot;*;*;root;Al0000-2400&quot; &gt; $FILEPAMTIMECONF
   for NumDAY in 0 1 2 3 4 5 6
   do
   echo &quot;PATH=$PATH&quot;  &gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
   done
   for PCUSER in `listeusers`
   do
   HOMEPCUSER=$(getent passwd &quot;$PCUSER&quot; | cut -d ':' -f6)
   $SED &quot;/^$PCUSER=/d&quot; $FILE_HCONF
   echo -e -n &quot;$PCUSER est autorisé a se connecter 7j/7 24h/24 O/N?&quot; 
   choi=&quot;&quot;
   while (true); do
   read choi
        case $choi in
         O | o )
	 alltime=&quot;O&quot;
         echo &quot;$PCUSER=admin=&quot; &gt;&gt; $FILE_HCONF
   	break
         ;;
	 N| n )
         alltime=&quot;N&quot;
         clear
         echo -e &quot;$PCUSER est autorisé à se connecter X minutes par jours&quot; 
         echo -e -n &quot;X (1 a 1440) = &quot; 
         while (true); do
         read choi
         if [ $choi -ge 1 ];then
			if [ $choi -le 1440 ];then
				break
			fi
		 fi	
         echo &quot; X doit prendre un valeur entre 1 et 1440 &quot;
         done
         echo &quot;$PCUSER=user=$choi&quot; &gt;&gt; $FILE_HCONF
		 break
         ;;	
   esac
   done
      HORAIRES=&quot;&quot;
      for NumDAY in 0 1 2 3 4 5 6
         do
	 if [ $alltime = &quot;O&quot; ];then	
		break	
	 fi
	 
         clear
         echo &quot;exemple: 00h00 à 23h59 ou 08h00 à 12h00 et 14h00 à 16h50&quot;
         echo -e -n &quot;$RougeD$PCUSER$Fcolor est autorisé à se connecter le $BleuD${DAYS[$NumDAY]}$Fcolor de :&quot;
         while (true); do
            read choi
            input=$choi
            choi=$(echo $choi | sed -e &quot;s/h//g&quot; | sed -e &quot;s/ //g&quot; | sed -e &quot;s/a/-/g&quot; | sed -e &quot;s/et/:/g&quot; ) # mise en forme de la variable choi pour pam   
               if [ $( echo $choi | grep -E -c &quot;^([0-1][0-9]|2[0-3])[0-5][0-9]-([0-1][0-9]|2[0-3])[0-5][0-9]$|^([0-1][0-9]|2[0-3])[0-5][0-9]-([0-1][0-9]|2[0-3])[0-5][0-9]:([0-1][0-9]|2[0-3])[0-5][0-9]-([0-1][0-9]|2[0-3])[0-5][0-9]$&quot; ) -eq 1 ];then
                  int1=$(echo $choi | cut -d &quot;:&quot; -f1 | cut -d &quot;-&quot; -f1)
                  int2=$(echo $choi | cut -d &quot;:&quot; -f1 | cut -d &quot;-&quot; -f2)
                  int3=$(echo $choi | cut -d &quot;:&quot; -f2 | cut -d &quot;-&quot; -f1)
                  int4=$(echo $choi | cut -d &quot;:&quot; -f2 | cut -d &quot;-&quot; -f2)
                  if [ $int1 -lt $int2 ];then
                     if [ ! $(echo $choi | grep -E -c &quot;:&quot;) -eq 1 ] ; then
                        if [ $NumDAY -eq 6 ] ; then
                           HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1-$int2&quot;
                        else
                           HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1-$int2|&quot;
                        fi
                        m1=$(echo $int1 | sed -e 's/.\{02\}//')
                        h1=$(echo $int1 | sed -e 's/.\{02\}$//') 
                        m2=$(echo $int2 | sed -e 's/.\{02\}//')
                        h2=$(echo $int2 | sed -e 's/.\{02\}$//')
						echo &quot;$PCUSER=$NumDAY=$h1${h}h$m1:$h2${h}h$m2&quot; &gt;&gt; $FILE_HCONF   
                        echo &quot;$m2 $h2 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
			for count in 1 2 3 4 5
			do
                        echo &quot;$(timecronalert $count $h2 $m2 $NumDAY) root export HOME=$HOMEPCUSER &amp;&amp; export DISPLAY=:0.0 &amp;&amp; export XAUTHORITY=$HOMEPCUSER/.Xauthority &amp;&amp; sudo -u $PCUSER  /usr/bin/notify-send -u critical \&quot;Alerte CTparental\&quot; \&quot;fermeture de session dans $count minutes \&quot; &quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
			done
                        break
   
                     else   
                        if [ $int2 -lt $int3 ];then
                           if [ $int3 -lt $int4 ];then
                              if [ $NumDAY -eq 6 ] ; then
                                 HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1-$int2|${DAYSPAM[$NumDAY]}$int3-$int4&quot;
                              else
                                 HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$int1-$int2|${DAYSPAM[$NumDAY]}$int3-$int4|&quot;
                              fi
                              m1=$(echo $int1 | sed -e 's/.\{02\}//')
                              h1=$(echo $int1 | sed -e 's/.\{02\}$//')   
                              m2=$(echo $int2 | sed -e 's/.\{02\}//')
                              h2=$(echo $int2 | sed -e 's/.\{02\}$//')  
                              m3=$(echo $int3 | sed -e 's/.\{02\}//')
                              h3=$(echo $int3 | sed -e 's/.\{02\}$//')   
                              m4=$(echo $int4 | sed -e 's/.\{02\}//')
                              h4=$(echo $int4 | sed -e 's/.\{02\}$//')   
                              ## minutes heures jourdumoi moi jourdelasemaine utilisateur  commande
							  echo &quot;$PCUSER=$NumDAY=$h1${h}h$m1:$h2${h}h$m2:$h3${h}h$m3:$h4${h}h$m4&quot; &gt;&gt; $FILE_HCONF
                              echo &quot;$m2 $h2 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
			      echo &quot;$m4 $h4 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
			      for count in 1 2 3 4 5
			      do
                              echo &quot;$(timecronalert $count $h2 $m2 $NumDAY) root export HOME=$HOMEPCUSER &amp;&amp; export DISPLAY=:0.0 &amp;&amp; export XAUTHORITY=$HOMEPCUSER/.Xauthority &amp;&amp; sudo -u $PCUSER  /usr/bin/notify-send -u critical \&quot;Alerte CTparental\&quot; \&quot;fermeture de session dans $count minutes \&quot; &quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
                              echo &quot;$(timecronalert $count $h4 $m4 $NumDAY) root export HOME=$HOMEPCUSER &amp;&amp; export DISPLAY=:0.0 &amp;&amp; export XAUTHORITY=$HOMEPCUSER/.Xauthority &amp;&amp; sudo -u $PCUSER  /usr/bin/notify-send -u critical \&quot;Alerte CTparental\&quot; \&quot;fermeture de session dans $count minutes\&quot; &quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
			      done
                             
                              break   
                           else
                              errortime1
                           fi
                        else
                           errortime1
                        fi
                     fi
                  else
                     errortime1
   
                  fi
                       
               else
                  errortime2   
               fi
           
         done
     
        done
     	if [ $alltime = &quot;N&quot; ] ; then
		echo &quot;*;*;$PCUSER;$HORAIRESPAM&quot; &gt;&gt; $FILEPAMTIMECONF
	else
		echo &quot;*;*;$PCUSER;Al0000-2400&quot; &gt;&gt; $FILEPAMTIMECONF
	fi
   done
   
   for NumDAY in 0 1 2 3 4 5 6
   do
      echo &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
   done
   echo &gt;&gt; $FILE_HCONF
echo &quot;PATH=$PATH&quot;  &gt; /etc/cron.d/CTparentalmaxtimelogin
echo &quot;*/1 * * * * root /usr/local/bin/CTparental.sh -uctl&quot; &gt;&gt; /etc/cron.d/CTparentalmaxtimelogin
$SED &quot;s?^HOURSCONNECT.*?HOURSCONNECT=ON?g&quot; $FILE_CONF
$CRONrestart
}

desactivetimelogin () {
for FILE in `echo $GESTIONNAIREDESESSIONS`
do
   $SED &quot;/account required pam_time.so/d&quot; $DIRPAM$FILE
done
cat $FILEPAMTIMECONF.old &gt; $FILEPAMTIMECONF
for NumDAY in 0 1 2 3 4 5 6
do
   rm -f /etc/cron.d/CTparental${DAYS[$NumDAY]}
done
rm -f /etc/cron.d/CTparentalmaxtimelogin
$SED &quot;s?^HOURSCONNECT.*?HOURSCONNECT=OFF?g&quot; $FILE_CONF
for PCUSER in `listeusers`
do
	passwd -u $PCUSER
done
# on remet tous les compteurs à zéro.
echo &quot;date=$(date +%D)&quot; &gt; $FILE_HCOMPT
echo &gt; $FILE_HCONF
$CRONrestart
}


listeusers () {
TABUSER=( &quot; $(getent passwd | cut -d&quot;:&quot; -f1,3) &quot; )
for LIGNES in $TABUSER
do
#echo $(echo $LIGNES | cut -d&quot;:&quot; -f2)
if [ $(echo $LIGNES | cut -d&quot;:&quot; -f2) -ge $UIDMINUSER ] ;then
	echo $LIGNES | cut -d&quot;:&quot; -f1
fi
done
}


readTimeFILECONF () {
   TESTGESTIONNAIRE=&quot;&quot;
   for FILE in `echo $GESTIONNAIREDESESSIONS`
   do
      if [ -f $DIRPAM$FILE ];then
         if [ $(cat $DIRPAM$FILE | grep -c &quot;account required pam_time.so&quot;) -eq 0  ] ; then
            $SED &quot;1i account required pam_time.so&quot;  $DIRPAM$FILE
         fi
         TESTGESTIONNAIRE=$TESTGESTIONNAIRE\ $FILE
      fi
   done
   if [ $( echo $TESTGESTIONNAIRE | wc -m ) -eq 1 ] ; then
      echo &quot;Aucun gestionnaire de session connu n'a été détecté.&quot;
      echo &quot; il est donc impossible d'activer le contrôle horaire des connexions&quot;
      desactivetimelogin
      exit 1
   fi
   
   if [ ! -f $FILEPAMTIMECONF.old ] ; then
   cp $FILEPAMTIMECONF $FILEPAMTIMECONF.old
   fi
   echo &quot;*;*;root;Al0000-2400&quot; &gt; $FILEPAMTIMECONF
   for NumDAY in 0 1 2 3 4 5 6
   do
   echo &quot;PATH=$PATH&quot; &gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
   done
   
   for PCUSER in `listeusers`
   do
   HOMEPCUSER=$(getent passwd &quot;$PCUSER&quot; | cut -d ':' -f6)
   HORAIRESPAM=&quot;&quot;
  	userisconfigured=&quot;0&quot;

	while read line
	do
	
			if [ $( echo $line | grep -E -c &quot;^$PCUSER=[0-6]=&quot; ) -eq 1 ] ; then
				echo &quot;$line&quot; 
				NumDAY=$(echo $line | cut -d&quot;=&quot; -f2)
				h1=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f1 | cut -d&quot;h&quot; -f1)
				m1=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f1 | cut -d&quot;h&quot; -f2)
				h2=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f2 | cut -d&quot;h&quot; -f1)
				m2=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f2 | cut -d&quot;h&quot; -f2)
				h3=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f3 | cut -d&quot;h&quot; -f1)
				m3=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f3 | cut -d&quot;h&quot; -f2)
				h4=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f4 | cut -d&quot;h&quot; -f1)
				m4=$(echo $line | cut -d&quot;=&quot; -f3 | cut -d&quot;:&quot; -f4 | cut -d&quot;h&quot; -f2)
				if [ $(echo -n $h3$m3 | wc -c) -gt 2 ]; then
 					if [ $NumDAY -eq 6 ] ; then
		                        	HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$h1$m1-$h2$m2|${DAYSPAM[$NumDAY]}$h3$m3-$h4$m4&quot;
						
		                      	else
		                        	HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$h1$m1-$h2$m2|${DAYSPAM[$NumDAY]}$h3$m3-$h4$m4|&quot;
		                      	fi
					echo &quot;$m2 $h2 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
					echo &quot;$m4 $h4 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
					for count in 1 2 3 4 5
					do
					echo &quot;$(timecronalert $count $h2 $m2 $NumDAY) root export HOME=$HOMEPCUSER &amp;&amp; export DISPLAY=:0.0 &amp;&amp; export XAUTHORITY=$HOMEPCUSER/.Xauthority &amp;&amp; sudo -u $PCUSER  /usr/bin/notify-send -u critical \&quot;Alerte CTparental\&quot; \&quot;fermeture de session dans $count minutes \&quot; &quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
					echo &quot;$(timecronalert $count $h4 $m4 $NumDAY) root export HOME=$HOMEPCUSER &amp;&amp; export DISPLAY=:0.0 &amp;&amp; export XAUTHORITY=$HOMEPCUSER/.Xauthority &amp;&amp; sudo -u $PCUSER  /usr/bin/notify-send -u critical \&quot;Alerte CTparental\&quot; \&quot;fermeture de session dans $count minutes \&quot; &quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
					userisconfigured=&quot;1&quot;
					done

				else
				        if [ $NumDAY -eq 6 ] ; then
				           HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$h1$m1-$h2$m2&quot;
				        else
				           HORAIRESPAM=&quot;$HORAIRESPAM${DAYSPAM[$NumDAY]}$h1$m1-$h2$m2|&quot;
				        fi
					for count in 1 2 3 4 5
					do
					echo &quot;$(timecronalert $count $h2 $m2 $NumDAY) root export HOME=$HOMEPCUSER &amp;&amp; export DISPLAY=:0.0 &amp;&amp; export XAUTHORITY=$HOMEPCUSER/.Xauthority &amp;&amp; sudo -u $PCUSER  /usr/bin/notify-send -u critical \&quot;Alerte CTparental\&quot; \&quot;fermeture de session dans $count minutes \&quot; &quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
					done
					echo &quot;$m2 $h2 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER&quot; &gt;&gt; /etc/cron.d/CTparental${DAYS[$NumDAY]}
					
					userisconfigured=&quot;1&quot;
				fi
			fi
	
	
	done &lt; $FILE_HCONF
	if [ $userisconfigured -eq 1 ] ; then
		echo &quot;*;*;$PCUSER;$HORAIRESPAM&quot; &gt;&gt; $FILEPAMTIMECONF
	else
		echo &quot;*;*;$PCUSER;Al0000-2400&quot; &gt;&gt; $FILEPAMTIMECONF
	fi
   done
echo &quot;PATH=$PATH&quot;  &gt; /etc/cron.d/CTparentalmaxtimelogin  
echo &quot;*/1 * * * * root /usr/local/bin/CTparental.sh -uctl&quot; &gt; /etc/cron.d/CTparentalmaxtimelogin
$SED &quot;s?^HOURSCONNECT.*?HOURSCONNECT=ON?g&quot; $FILE_CONF
$CRONrestart
}



usage=&quot;Usage: CTparental.sh    {-i }|{ -u }|{ -dl }|{ -ubl }|{ -rl }|{ -on }|{ -off }|{ -cble }|{ -dble }
                               |{ -tlo }|{ -tlu }|{ -uhtml }|{ -aupon }|{ -aupoff }|{ -aup } 
-i      =&gt; Installe le contrôle parental sur l'ordinateur (pc de bureau). Peut être utilisé avec
           un paramètre supplémentaire pour indiquer un chemin de sources pour la page web de redirection.
           exemple : CTparental.sh -i -dirhtml /home/toto/html/
           si pas d'option le \&quot;sens interdit\&quot; est utilisé par défaut.
-u      =&gt; désinstalle le contrôle parental de l'ordinateur (pc de bureau)
-dl     =&gt; met à jour le contrôle parental à partir de la blacklist de l'université de Toulouse
-ubl    =&gt; A faire après chaque modification du fichier $DNS_FILTER_OSSI
-rl     =&gt; A faire après chaque modification manuelle du fichier $DREAB
-on     =&gt; Active le contrôle parental
-off    =&gt; Désactive le contrôle parental
-cble   =&gt; Configure le mode de filtrage par liste blanche ou par liste noire (défaut) ainsi que les 
           catégories que l'on veut activer.
-dble   =&gt; Remet les catégories actives par défaut et le filtrage par liste noire.
-tlo    =&gt; Active et paramètre les restrictions horaires de login pour les utilisateurs.
           Compatible avec les gestionnaire de sessions suivant $GESTIONNAIREDESESSIONS .
-tlu    =&gt; Désactive les restrictions horaires de login pour les utilisateurs.
-uhtml  =&gt; met à jour la page de redirection à partir d'un répertoire source ou par défaut avec 
            le \&quot;sens interdit\&quot;.
            exemples:
                     - avec un repertoire source : CTparental.sh -uhtml -dirhtml /home/toto/html/
   		     - par défaut :              CTparental.sh -uhtml
            permet aussi de changer le couple login, mot de passe de l'interface web.
-aupon  =&gt; active la mise à jour automatique de la blacklist de Toulouse (tous les 7 jours).
-aupoff =&gt; désactive la mise à jour automatique de la blacklist de Toulouse.
-aup    =&gt; comme -dl mais seulement si il n'y a pas eu de mise à jour depuis plus de 7 jours.
-nodep  =&gt; si placé aprés -i ou -u permet de ne pas installer/désinstaller les dépendances, utiles si 
            on préfère les installer à la main , ou pour le script de postinst et prerm 
            du deb.
            exemples:
                     CTparental.sh -i -nodep	
		     CTparental.sh -i -dirhtml /home/toto/html/ -nodep   
		     CTparental.sh -u -nodep 
-nomanuel =&gt; utilisé uniquement pour le script de postinst et prerm 
            du deb.
-gcton	  =&gt; créé un groupe de privilégiés ne subissant pas le filtrage.
			 mais ralentit les ouvertures de sessions, quand on passe d'un user restreint à un qui ne l'est pas 
			 et inversement.
			 exemple:CTparental.sh -gctulist
			 editer $FILE_GCTOFFCONF et y commenter tous les utilisateurs que l'on veut filtrer.
			 CTparental.sh -gctalist
			 (note temps qu'un utilisateur non privilégier restera connecter le filtrage sera actif!!)
-gctoff   =&gt; supprime le groupe de privilégiés .
			 tous les utilisateurs du système subissent le filtrages!!
-gctulist =&gt; Met a jour le fichier de conf du groupe , $FILE_GCTOFFCONF
			 en fonction des utilisateurs ajoutés ou supprimés du pc.
-gctalist =&gt; Ajoute/Supprime les utilisateurs dans le group ctoff en fonction du fichier de conf.
	 
 &quot;
case $arg1 in
   -\? | -h* | --h*)
      echo &quot;$usage&quot;
      exit 0
      ;;
   -i | --install )
      install
      exit 0
      ;;
   -u | --uninstall )
      autoupdateoff 
      dnsmasqoff
      desactivetimelogin
      uninstall
      exit 0
      ;;
   -dl | --download )
      download
      adapt
      catChoice
      dnsmasqon
      $SED &quot;s?^LASTUPDATE.*?LASTUPDATE=$THISDAYS=`date +%d-%m-%Y\ %T`?g&quot; $FILE_CONF
      exit 0
      ;;
   -ubl | --updatebl )
      adapt
      catChoice
      dnsmasqon
      exit 0
      ;;
   -uhtml | --updatehtml )
      FoncHTTPDCONF
      exit 0
      ;;
   -rl | --reload )
      catChoice
      dnsmasqon
      exit 0
      ;;
   -on | --on )
      dnsmasqon
      exit 0
      ;;
   -off | --off )
      autoupdateoff 
      dnsmasqoff
      exit 0
      ;;
   -wlo | --whitelistonly )
      dnsmasqwhitelistonly
      exit 0
      ;;
   -cble | --confblenable )
      choiblenabled
      catChoice
      dnsmasqon
      exit 0
      ;;
    -dble | --defaultblenable )
      initblenabled
      catChoice
      dnsmasqon
      ;;
    -tlo | --timeloginon )
      activetimelogin
      ;;
    -tlu | --timeloginon )
      desactivetimelogin
      ;;
    -trf | --timeloginon )
      readTimeFILECONF
      ;;
    -aupon | --autoupdateon )
      autoupdateon
      ;;
    -aupoff | --autoupdateoff )
      autoupdateoff
      ;;
    -aup | --autoupdate )
      autoupdate
      ;;
    -listusers )
      listeusers
      ;;
    -gcton )
      activegourpectoff
      ;;
    -gctoff )
	  desactivegourpectoff
      ;;
    -gctulist )
	  updatelistgctoff
      ;;
    -gctalist )
	  applistegctoff
      ;;
    -uctl )
	  # appelé toutes les minutes par cron pour activer désactiver les usagers ayant des restrictions de temps journalier de connexion.
	  updatetimelogin
      ;;      
      
   *)
      echo &quot;Argument inconnu :$1&quot;;
      echo &quot;$usage&quot;;
      exit 1
      ;;
esac

&lt;/code&gt;
'''index.php'''
&lt;code php&gt;
&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;
&lt;HTML&gt;&lt;!-- written by Rexy --&gt;
&lt;HEAD&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot;&gt;
&lt;TITLE&gt;CTparental DNS filtering&lt;/TITLE&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;/CTadmin/css/style.css&quot; type=&quot;text/css&quot;&gt;
&lt;/HEAD&gt;
&lt;body&gt;
&lt;?php
function form_filter ($form_content)
{
// réencodage iso + format unix + rc fin de ligne (ouf...)
	$list = str_replace(&quot;\r\n&quot;, &quot;\n&quot;, utf8_decode($form_content));
	if (strlen($list) != 0){
		if ($list[strlen($list)-1] != &quot;\n&quot;) { $list[strlen($list)]=&quot;\n&quot;;} ;} ;
	return $list;
}
# Choice of language
$Language = 'en';
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
  $Langue = explode(&quot;,&quot;,$_SERVER['HTTP_ACCEPT_LANGUAGE']);
  $Language = strtolower(substr(chop($Langue[0]),0,2)); }
if($Language == 'fr'){
  $l_switch_LogOFF=&quot;Déconnection&quot;;
  $l_hours_error1=&quot;un mauvais format horaire a été trouvé :exemple 8h30 doit s'écrire 08h30&quot;;
  $l_hours_error2=&quot;incohérence horaire : &quot;;
  $l_hours_on = &quot;Les horaires de connexion sont actuellement activés&quot;;
  $l_hours_off = &quot;Les horaires de connexion sont actuellement désactivés&quot;;
  $l_switch_hours_off = &quot;Désactiver les horaires de connexion&quot;;
  $l_switch_hours_on = &quot;Activer les horaires de connexion&quot;;
  $l_hours1 = &quot;Heures de connexions autorisées&quot;;
  $l_switch_Init_bl = &quot;Init Catégories&quot;;
  $l_auto_update_on = &quot;La mise à jour de la blacklist de Toulouse tous les 7 jours est activée&quot;;
  $l_auto_update_off = &quot;La mise à jour de la blacklist de Toulouse tous les 7 jours est désactivée&quot;;
  $l_switch_auto_update_on = &quot;Activer Maj Auto&quot;;
  $l_switch_auto_update_off = &quot;Désactiver Maj Auto&quot;;
  $l_fmenu_black = &quot;Filtrage par BlackList&quot;;
  $l_fmenu_white = &quot;Filtrage par WhiteList&quot;;
  $l_title1 = &quot;Filtrage de noms de domaine &quot;;
  $l_error_open_file=&quot;Erreur d'ouverture du fichier&quot;;
  $l_dnsfilter_on=&quot;Le filtrage de noms de domaine est actuellement activé&quot;;
  $l_dnsfilter_off=&quot;Le filtrage de noms de domaine est actuellement désactivé&quot;;
  $l_switch_filtering_on=&quot;Activer le filtrage&quot;;
  $l_switch_filtering_off=&quot;Désactiver le filtrage&quot;;
  $l_main_bl=&quot;Liste noire/blanche&quot;;
  $l_bl_version=&quot;Version actuelle :&quot;;
  $l_bl_categories_bl=&quot;Choix des catégories à filtrer&quot;;
  $l_bl_categories_wl=&quot;Choix des catégories à autoriser&quot;;
  $l_download_bl=&quot;Télécharger la dernière version&quot;;
  $l_fingerprint=&quot;L'empreinte numérique du fichier téléchargé est : &quot;;
  $l_fingerprint2=&quot;Vérifiez-là en suivant ce lien (ligne 'blacklists.tar.gz') : &quot;;
  $l_activate_bl=&quot;Activer la nouvelle version&quot;;
  $l_reject_bl=&quot;Rejeter&quot;;
  $l_warning=&quot;Temps estimé : une minute.&quot;;
  $l_specific_filtering=&quot;Filtrage spécial&quot;;
  $l_forbidden_dns=&quot;Noms de domaine filtrés&quot;;
  $l_forbidden_dns_explain=&quot;Entrez un nom de domaine par ligne (exemple : domaine.org)&quot;;
  $l_one_dns=&quot;Entrez un nom de domaine par ligne (exemple : domaine.org)&quot;;
  $l_rehabilitated_dns=&quot;Noms de domaine réhabilités&quot;;
  $l_rehabilitated_dns_explain_bl=&quot;1-Entrez ici des noms de domaine bloqués par la liste noire &lt;BR&gt; que vous souhaitez réhabiliter.&quot;;
  $l_rehabilitated_dns_explain_wl=&quot;2-Entrez ici des noms de domaine autorisés en plus de ceux &lt;BR&gt; de la liste blanche de Toulouse.&quot;;
  $l_add_to_bl=&quot;Noms de domaine ajoutés à la liste noire&quot;;
  $l_record=&quot;Enregistrer les modifications&quot;;
  $l_wait=&quot;Une fois validées, 30 secondes sont nécessaires pour traiter vos modifications&quot;;
  $l_title_gctoff=&quot;Groupe privilégié&quot;;
  $l_gctoff_explain=&quot;Cocher des utilisateurs ne devant pas subir de filtrage&quot;;
  $l_gctoff_username=&quot;Nom d'utilisateur&quot;;
  $l_gctoff_username_comment=&quot;Commentaires&quot;;
  $l_switch_gctoff_on=&quot;Activer le groupe de privilégiés.&quot;;
  $l_switch_gctoff_off=&quot;Désactiver le groupe de privilégiés.&quot;;
  $l_gctoff_on = &quot;Le Groupe privilégié est actuellement activés&quot;;
  $l_gctoff_off = &quot;Le Groupe privilégié est actuellement désactivés&quot;;

}
else {
  $l_switch_LogOFF=&quot;Logout&quot;;
  $l_hours_error1=&quot;Un mauvais format horaire a été trouvé : exemple 8h30 doit s'écrire 08h30&quot;;
  $l_hours_error2=&quot;incohérence horaire : &quot;;
  $l_hours_on = &quot;Les horaires de connexion sont actuellement activés&quot;;
  $l_hours_off = &quot;Les horaires de connexion sont actuellement désactivés&quot;;
  $l_switch_hours_off = &quot;Désactiver les horaires de connexion&quot;;
  $l_switch_hours_on = &quot;Activer les horaires de connexion&quot;;
  $l_hours1 = &quot;Heures de connexions autorisées&quot;;
  $l_switch_Init_bl = &quot;Init Catégories&quot;;
  $l_auto_update_on = &quot;La mise à jour de la blacklist de Toulouse tous les 7 jours est activée&quot;;
  $l_auto_update_off = &quot;La mise à jour de la blacklist de Toulouse tous les 7 jours est désactivée&quot;;
  $l_switch_auto_update_on = &quot;Activer Maj Auto&quot;;
  $l_switch_auto_update_off = &quot;Désactiver Maj Auto&quot;;
  $l_fmenu_black = &quot;Filtrage par BlackList&quot;;
  $l_fmenu_white = &quot;Filtrage par WhiteList&quot;;
  $l_title1 = &quot;Domain names filtering&quot;;
  $l_error_open_file=&quot;Error opening the file&quot;;
  $l_dnsfilter_on=&quot;Actually, the Domain name filter is on&quot;;
  $l_dnsfilter_off=&quot;Actually, the Domain name filter is off&quot;;
  $l_switch_filtering_on=&quot;Switch the Filter on&quot;;
  $l_switch_filtering_off=&quot;Switch the Filter off&quot;;
  $l_main_bl=&quot;Blacklist/Whitelist&quot;;
  $l_bl_version=&quot;Current version : &quot;;
  $l_bl_categories_bl=&quot;Choice of filtered categories&quot;;
  $l_bl_categories_wl=&quot;Choice of authorized categories&quot;;
  $l_download_bl=&quot;Download the last version&quot;;
  $l_fingerprint=&quot;The digital fingerprint of the downloaded blacklist is : &quot;;
  $l_fingerprint2=&quot;Verify it with this link (line 'blacklists.tar.gz') : &quot;;
  $l_activate_bl=&quot;Activate the new version&quot;;
  $l_reject_bl=&quot;Reject&quot;;
  $l_warning=&quot;Estimated time : one minute.&quot;;
  $l_specific_filtering=&quot;Specific filtering&quot;;
  $l_forbidden_dns=&quot;Filtered domain names&quot;;
  $l_forbidden_dns_explain=&quot;Enter one domain name per row (exemple : domain.org)&quot;;
  $l_one_dns=&quot;Enter one domain name per row (example : domain.org)&quot;;
  $l_rehabilitated_dns=&quot;Rehabilitated domain names&quot;;
  $l_rehabilitated_dns_explain_bl=&quot;Enter here domain names that are blocked by the blacklist &lt;BR&gt; and you want to rehabilitate.&quot;;
  $l_rehabilitated_dns_explain_wl=&quot;2-Entrez ici des noms de domaine autorisés en plus de ceux &lt;BR&gt; de la liste blanche de Toulouse.&quot;;
  $l_add_to_bl=&quot;Domain names to add to blacklist&quot;;
  $l_record=&quot;Save changes&quot;;
  $l_wait=&quot;Once validated, 30 seconds is necessary to compute your modifications&quot;;
  $l_title_gctoff=&quot;Groupe privilégié&quot;;
  $l_gctoff_explain=&quot;Cocher des utilisateurs ne devant pas subir de filtrage&quot;;
  $l_gctoff_username=&quot;Username&quot;;
  $l_gctoff_username_comment=&quot;Comments&quot;;
  $l_switch_gctoff_on=&quot;Activer le groupe de privilégiés.&quot;;
  $l_switch_gctoff_off=&quot;Désactiver le groupe de privilégiés.&quot;;
  $l_gctoff_on = &quot;Le Groupe privilégié est actuellement activés&quot;;
  $l_gctoff_off = &quot;Le Groupe privilégié est actuellement désactivés&quot;;

 }
$weeknum = array( 0,1,2,3,4,5,6);
$bl_categories=&quot;/usr/local/etc/CTparental/bl-categories-available&quot;;
$bl_categories_enabled=&quot;/usr/local/etc/CTparental/categories-enabled&quot;;
$conf_file=&quot;/usr/local/etc/CTparental/CTparental.conf&quot;;
$conf_ctoff_file=&quot;/usr/local/etc/CTparental/GCToff.conf&quot;;
$hconf_file=&quot;/usr/local/etc/CTparental/CThours.conf&quot;;
$wl_domains=&quot;/usr/local/etc/CTparental/domaine-rehabiliter&quot;;
$bl_domains=&quot;/usr/local/etc/CTparental/blacklist-local&quot;;
# default values


if (isset($_POST['choix'])){ $choix=$_POST['choix']; } else { $choix=&quot;&quot;; }
switch ($choix)
{
case 'gct_Off' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -gctoff&quot;);
	break;
case 'gct_On' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -gcton&quot;);
	break;
case 'LogOFF' :
	header('HTTP/1.0 401 Unauthorized');
	header('WWW-Authenticate: Digest realm=&quot;interface admin&quot;');
	exit;
	break;
case 'BL_On' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -on&quot;);
	break;
case 'BL_Off' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -off&quot;);
	break;
case 'H_On' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -trf&quot;);
	break;
case 'H_Off' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -tlu&quot;);
	break;
case 'AUP_On' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -aupon&quot;);
	break;
case 'AUP_Off' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -aupoff&quot;);
	break;
case 'INIT_BL' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -dble&quot;);
	break;
case 'Download_bl' :
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -dl&quot;);
	break;
case 'MAJ_cat' :
	$tab=file($bl_categories_enabled);	
	if ($tab)
		{
		$pointeur=fopen($bl_categories_enabled, &quot;w+&quot;);
		foreach ($_POST as $key =&gt; $value)
			{
                        if (strstr($key,'chk-'))
				{	
				$line=str_replace('chk-','',$key).&quot;\n&quot;;
				fwrite($pointeur,$line);
				}
			}
		fclose($pointeur);
		}
	else {echo &quot;$l_error_open_file $bl_categories_enabled&quot;;}
	$fichier=fopen($bl_domains,&quot;w+&quot;);
	fputs($fichier, form_filter($_POST['OSSI_bl_domains']));
	fclose($fichier);
	unset($_POST['OSSI_bl_domains']);
	$fichier=fopen($wl_domains,&quot;w+&quot;);
	fputs($fichier, form_filter($_POST['OSSI_wl_domains']));
	fclose($fichier);
	unset($_POST['OSSI_wl_domains']);
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -ubl&quot;);
	break;
case 'MAJ_H' :
	$formatheuresok=1;
	if (isset($_POST['selectuser'])){ $selectuser=$_POST['selectuser']; }
	#echo &quot;$selectuser&quot;;
	$tab=file($hconf_file);	
	if ($tab)
	{
		$pointeur=fopen($hconf_file, &quot;w+&quot;);	
		foreach ($tab as $line)
		{
			if (strstr($line,$selectuser) == false)
			{
				fwrite($pointeur,$line); # on reécrit toutes les lignes ne correspondant pas à l'utilisateur sélectionné
			}
	
		}
	}
	else {echo &quot;$l_error_open_file $hconf_file&quot;;}
	if (isset($_POST[&quot;isadmin&quot;])){fwrite($pointeur,&quot;$selectuser=admin=&quot;.&quot;\n&quot;); } 
	else 
	{
		if (isset($_POST[&quot;tmax&quot;])){fwrite($pointeur,&quot;$selectuser=user=&quot;.$_POST[&quot;tmax&quot;].&quot;\n&quot;); }
		else {fwrite($pointeur,&quot;$selectuser=user=1440&quot;.&quot;\n&quot;); }
		foreach ($weeknum as $numday)
		{
			$formatheuresok=1;
			if (isset($_POST[&quot;h1$numday&quot;])){ $h1[$numday]=$_POST[&quot;h1$numday&quot;]; } else { $h1[$numday]=&quot;00h00&quot;; }
			if (isset($_POST[&quot;h2$numday&quot;])){ $h2[$numday]=$_POST[&quot;h2$numday&quot;]; } else { $h2[$numday]=&quot;23h59&quot;; }
			if (isset($_POST[&quot;h3$numday&quot;])){ $h3[$numday]=$_POST[&quot;h3$numday&quot;]; } else { $h3[$numday]=&quot;&quot;; }
			if (isset($_POST[&quot;h4$numday&quot;])){ $h4[$numday]=$_POST[&quot;h4$numday&quot;]; } else { $h4[$numday]=&quot;&quot;; }
			if (preg_match(&quot;/^[0-1][0-9]h[0-5][0-9]$|^2[0-3]h[0-5][0-9]$/&quot;,$h1[$numday])!=1){$formatheuresok=0;}
			if (preg_match(&quot;/^[0-1][0-9]h[0-5][0-9]$|^2[0-3]h[0-5][0-9]$/&quot;,$h2[$numday])!=1){$formatheuresok=0;}
			if ($h3[$numday]==&quot;&quot;)
			{	
	
				if ($formatheuresok == 1)
				{
					$t1=explode(&quot;h&quot;, $h1[$numday]);
					$t2=explode(&quot;h&quot;, $h2[$numday]);
					$v1=&quot;$t1[0]$t1[1]&quot;;
					$v2=&quot;$t2[0]$t2[1]&quot;;
					if ( $v1 &lt; $v2)
					{
						fwrite($pointeur,&quot;$selectuser=$numday=$h1[$numday]:$h2[$numday]&quot;.&quot;\n&quot;);
					}
					else
					{
						fwrite($pointeur,&quot;$selectuser=$numday=00h00:23h59&quot;.&quot;\n&quot;);
						echo &quot;&lt;H3&gt;$l_hours_error2 $h1[$numday]&gt;=$h2[$numday]&lt;/H3&gt;&quot;;
					}
				}
				else 
				{
					fwrite($pointeur,&quot;$selectuser=$numday=00h00:23h59&quot;.&quot;\n&quot;);
					echo &quot;&lt;H3&gt;$l_hours_error1&lt;/H3&gt;&quot;;
				}
			}
			else 
			{
				if (preg_match(&quot;/^[0-1][0-9]h[0-5][0-9]$|^2[0-3]h[0-5][0-9]$/&quot;,$h3[$numday])!=1){$formatheuresok=0;}
				if (preg_match(&quot;/^[0-1][0-9]h[0-5][0-9]$|^2[0-3]h[0-5][0-9]$/&quot;,$h4[$numday])!=1){$formatheuresok=0;}
				if ($formatheuresok == 1)
				{
					$t1=explode(&quot;h&quot;, $h1[$numday]);
					$t2=explode(&quot;h&quot;, $h2[$numday]);
					$t3=explode(&quot;h&quot;, $h3[$numday]);
					$t4=explode(&quot;h&quot;, $h4[$numday]);
					$v1=&quot;$t1[0]$t1[1]&quot;;
					$v2=&quot;$t2[0]$t2[1]&quot;;
					$v3=&quot;$t3[0]$t3[1]&quot;;
					$v4=&quot;$t4[0]$t4[1]&quot;;
					if ( $v1 &lt; $v2 &amp;&amp; $v2 &lt; $v3 &amp;&amp; $v3 &lt; $v4)
					{
					fwrite($pointeur,&quot;$selectuser=$numday=$h1[$numday]:$h2[$numday]:$h3[$numday]:$h4[$numday]&quot;.&quot;\n&quot;);
					}
					else
					{
						fwrite($pointeur,&quot;$selectuser=$numday=00h00:23h59&quot;.&quot;\n&quot;);
						echo &quot;&lt;H3&gt;$l_hours_error2 $h1[$numday]&gt;=$h2[$numday]&gt;=$h3[$numday]&gt;=$h4[$numday]&lt;/H3&gt;&quot;;
					}
				}
				else 
				{
					fwrite($pointeur,&quot;$selectuser=$numday=00h00:23h59&quot;.&quot;\n&quot;);
					echo &quot;&lt;H3&gt;$l_hours_error1&lt;/H3&gt;&quot;;
					
				}
			}

		}
	}
	
	fclose($pointeur);
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -trf&quot;);
	break;
	
case 'change_user' :
$tab=file($conf_ctoff_file);
	if ($tab)
		{
		$pointeur=fopen($conf_ctoff_file,&quot;w+&quot;);
		foreach ($tab as $ligne)
			{
			$CONF_CTOFF1 = str_replace('#','',$ligne);
			$actif = False ;	
			foreach ($_POST as $key =&gt; $value)
				{
					if (strstr($key,'chk-'))
					{
						$CONF_CTOFF2 = str_replace('chk-','',$key);
						if ( trim($CONF_CTOFF1) == trim($CONF_CTOFF2) )
						{ 
							$actif = True; 
							break;
						}
					}
				}

			if (! $actif) {	$line=&quot;#$CONF_CTOFF1&quot;;}
			else { $line=&quot;$CONF_CTOFF1&quot;;}
			fwrite($pointeur,$line);
				
			}
		fclose($pointeur);
		}
	exec (&quot;sudo -u root /usr/local/bin/CTparental.sh -gctalist&quot;);
	break;

}

echo &quot;&lt;TABLE width='100%' border=0 cellspacing=0 cellpadding=0&gt;&quot;;
echo &quot;&lt;tr&gt;&lt;th&gt;$l_title1&lt;/th&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;tr bgcolor='#FFCC66'&gt;&lt;td&gt;&lt;img src='/images/pix.gif' width=1 height=2&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;/TABLE&gt;&quot;;
echo &quot;&lt;TABLE width='100%' border=1 cellspacing=0 cellpadding=0&gt;&quot;;
echo &quot;&lt;tr&gt;&lt;td valign='middle' align='left'&gt;&quot;;
echo &quot;&lt;CENTER&gt;&quot;;
echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
echo &quot;&lt;input type=hidden name='choix' value=\&quot;LogOFF\&quot;&gt;&quot;;
echo &quot;&lt;input type=submit value=\&quot;$l_switch_LogOFF\&quot;&gt;&quot;;
echo &quot;&lt;/FORM&gt;&quot;;
echo &quot;&lt;/CENTER&gt;&quot;;
if (is_file ($conf_file))
	{
	$tab=file($conf_file);
	if ($tab)
		{
		foreach ($tab as $line)
			{
			$field=explode(&quot;=&quot;, $line);
			if ($field[0] == &quot;LASTUPDATE&quot;)	{$LASTUPDATE=trim($field[2]);}
			if ($field[0] == &quot;DNSMASQ&quot;)		{$DNSMASQ=trim($field[1]);}
			if ($field[0] == &quot;AUTOUPDATE&quot;)		{$AUTOUPDATE=trim($field[1]);}
			if ($field[0] == &quot;HOURSCONNECT&quot;)	{$HOURSCONNECT=trim($field[1]);}
            if ($field[0] == &quot;GCTOFF&quot;)	{$GCTOFF=trim($field[1]);}            
			}
		}
	}
else { echo &quot;$l_error_open_file $conf_file&quot;;}

include 'dns.php';

include 'hours.php';

include 'gctoff.php';

//echo &quot;&lt;/td&gt;&lt;/tr&gt;&quot;;
?&gt;
&lt;/BODY&gt;
&lt;/HTML&gt;

&lt;/code&gt;
'''dns.php'''
&lt;code php&gt;
&lt;?php

if ($DNSMASQ &lt;&gt; &quot;OFF&quot;)
	{
	echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_dnsfilter_on&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
 	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type=hidden name='choix' value=\&quot;BL_Off\&quot;&gt;&quot;;
	echo &quot;&lt;input type=submit value=\&quot;$l_switch_filtering_off\&quot;&gt;&quot;;
	echo &quot;&lt;/FORM&gt;&quot;;

	if (isset($_GET['filtragemode'])){ $filtragemode=$_GET['filtragemode']; } else {$filtragemode=$DNSMASQ;}
	if ($filtragemode == 'WHITE')
	{
	$bl_categories=&quot;/usr/local/etc/CTparental/wl-categories-available&quot;;
	}
	else { $bl_categories=&quot;/usr/local/etc/CTparental/bl-categories-available&quot;;}

	$filtragemode = urlencode($filtragemode);
	echo &quot;&lt;table border=0 width=400 cellpadding=0 cellspacing=2&gt;&quot;;
	echo &quot;&lt;tr valign=top&gt;&quot;;
	echo &quot;&lt;td align=center&quot;; if ( $filtragemode == &quot;BLACK&quot; ) { echo &quot; bgcolor=\&quot;#FFCC66\&quot;&quot;;} echo &quot;&gt;&quot;;
	echo &quot;&lt;a href=\&quot;$_SERVER[PHP_SELF]?filtragemode=BLACK\&quot; title=\&quot;\&quot;&gt;&lt;font color=\&quot;black\&quot;&gt;&lt;b&gt;$l_fmenu_black&lt;/b&gt;&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&quot;;
	echo &quot;&lt;td align=center&quot;; if ( $filtragemode == &quot;WHITE&quot; ) { echo &quot; bgcolor=\&quot;#FFCC66\&quot;&quot;;} echo &quot;&gt;&quot;;
	echo &quot;&lt;a href=\&quot;$_SERVER[PHP_SELF]?filtragemode=WHITE\&quot; title=\&quot;\&quot;&gt;&lt;font color=\&quot;black\&quot;&gt;&lt;b&gt;$l_fmenu_white&lt;/b&gt;&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&quot;;
	echo &quot;&lt;/tr&gt;&quot;;
	echo&quot; &lt;/table&gt;&quot;;
	echo &quot;&lt;/td&gt;&lt;/tr&gt;&quot;;


	function echo_file ($filename)
		{
		if (file_exists($filename))
			{
			if (filesize($filename) != 0)
				{
				$pointeur=fopen($filename,&quot;r&quot;);
				$tampon = fread($pointeur, filesize($filename));
				fclose($pointeur);
				echo $tampon;
				}
			}
		else
			{
			echo &quot;$l_error_openfile $filename&quot;;
			}
		}

	echo &quot;&lt;TABLE width='100%' border=1 cellspacing=0 cellpadding=1&gt;&quot;;
	echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_main_bl&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
	echo &quot;&lt;tr&gt;&lt;td valign='middle' align='left' colspan=10&gt;&quot;;
	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;center&gt;$l_bl_version $LASTUPDATE&quot;;
	echo &quot;&lt;/center&gt;&lt;BR&gt;&quot;;
		echo &quot;&lt;input type='hidden' name='choix' value='Download_bl'&gt;&quot;;
		echo &quot;&lt;input type='submit' value='$l_download_bl'&gt;&quot;;
		echo &quot; ($l_warning)&quot;;

	echo &quot;&lt;/FORM&gt;&quot;;
	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type='hidden' name='choix' value='INIT_BL'&gt;&quot;;
	echo &quot;&lt;input type='submit' value='$l_switch_Init_bl'&gt;&quot;;
	echo &quot;&lt;/FORM&gt;&quot;;
	if ($AUTOUPDATE == &quot;ON&quot;)
		{
		echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_auto_update_on&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
		echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
		echo &quot;&lt;input type=hidden name='choix' value=\&quot;AUP_Off\&quot;&gt;&quot;;
		echo &quot;&lt;input type=submit value=\&quot;$l_switch_auto_update_off\&quot;&gt;&quot;;
	}
	else
		{
		echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_auto_update_off&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
		echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
		echo &quot;&lt;input type=hidden name='choix' value=\&quot;AUP_On\&quot;&gt;&quot;;
		echo &quot;&lt;input type=submit value=\&quot;$l_switch_auto_update_on\&quot;&gt;&quot;;
		}
	echo &quot;&lt;/FORM&gt;&quot;;
	echo &quot;&lt;/td&gt;&lt;/tr&gt;&quot;;
	echo &quot;&lt;tr&gt;&lt;td valign=\&quot;middle\&quot; align=\&quot;left\&quot; colspan=10&gt;&quot;;
	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type='hidden' name='choix' value='MAJ_cat'&gt;&quot;;
	if ($filtragemode == &quot;BLACK&quot;){echo &quot;&lt;center&gt;$l_bl_categories_bl&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;}
	else {echo &quot;&lt;center&gt;$l_bl_categories_wl&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;}

	//on lit et on interprète le fichier de catégories
	$cols=1; 
	if (file_exists($bl_categories))
		{
		$pointeur=fopen($bl_categories,&quot;r&quot;);
		while (!feof ($pointeur))
			{
			$ligne=fgets($pointeur, 4096);
			if ($ligne)
				{
				if ($cols == 1) { echo &quot;&lt;tr&gt;&quot;;}
				$categorie=trim(basename($ligne));
				echo &quot;&lt;td&gt;&lt;a href='bl_categories_help.php?cat=$categorie' target='cat_help' onclick=window.open('bl_categories_help.php','cat_help','width=600,height=150,toolbar=no,scrollbars=no,resizable=yes') title='categories help page'&gt;$categorie&lt;/a&gt;&lt;br&gt;&quot;;
				echo &quot;&lt;input type='checkbox' name='chk-$categorie'&quot;;
				// la catégorie n'existe pas dans le fichier de catégorie activé -&gt; categorie non sélectionnée
							$str = file_get_contents($bl_categories_enabled);
				if (strpos($str, $categorie)===false) { echo &quot;&gt;&quot;;}
				else { echo &quot;checked&gt;&quot;; }
				echo &quot;&lt;/td&gt;&quot;;
				$cols++;
				if ($cols &gt; 10) {
					echo &quot;&lt;/tr&gt;&quot;;
					$cols=1; }
				}
			}
		fclose($pointeur);
		}
	else	{
		echo &quot;$l_error_open_file $bl_categories&quot;;
		}
	echo &quot;&lt;/td&gt;&lt;/tr&gt;&quot;;
	echo &quot;&lt;tr&gt;&lt;td valign='middle' align='left' colspan=10&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;
	echo &quot;&lt;tr&gt;&lt;td colspan=5 align=center&gt;&quot;;
	if ($filtragemode == &quot;BLACK&quot;){echo &quot;&lt;H3&gt;$l_rehabilitated_dns&lt;/H3&gt;$l_rehabilitated_dns_explain_bl&lt;BR&gt;$l_one_dns&lt;BR&gt;&quot;;}
	else {echo &quot;&lt;H3&gt;$l_rehabilitated_dns&lt;/H3&gt;$l_rehabilitated_dns_explain_wl&lt;BR&gt;$l_one_dns&lt;BR&gt;&quot;;}
	echo &quot;&lt;textarea name='OSSI_wl_domains' rows=5 cols=40&gt;&quot;;
	echo_file ($wl_domains);
	echo &quot;&lt;/textarea&gt;&lt;/td&gt;&quot;;
	if ( $filtragemode == &quot;BLACK&quot; ) {
	echo &quot;&lt;td colspan=5 align=center&gt;&quot;;
	echo &quot;&lt;H3&gt;$l_forbidden_dns&lt;/H3&gt;$l_forbidden_dns_explain&lt;BR&gt;&quot;;
	echo &quot;&lt;textarea name='OSSI_bl_domains' rows=5 cols=40&gt;&quot;;
	echo_file ($bl_domains);
	echo &quot;&lt;/textarea&gt;&lt;/td&gt;&quot;;
	}
	echo &quot;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=10&gt;&quot;;

	echo &quot;&lt;input type='submit' value='$l_record'&gt;&quot;;
	echo &quot;&lt;/form&gt; ($l_wait)&quot;;

	echo &quot;&lt;/td&gt;&lt;/tr&gt;&quot;;
	echo &quot;&lt;/TABLE&gt;&quot;;
	echo &quot;&lt;/TABLE&gt;&quot;;


}
else
	{
	echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_dnsfilter_off&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
 	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type=hidden name='choix' value=\&quot;BL_On\&quot;&gt;&quot;;
	echo &quot;&lt;input type=submit value=\&quot;$l_switch_filtering_on\&quot;&gt;&quot;;
	echo &quot;&lt;/FORM&gt;&quot;;
	echo &quot;&lt;/td&gt;&lt;/tr&gt;&quot;;
	}




?&gt;

&lt;/code&gt;
'''hours.php'''
&lt;code php&gt;

&lt;?php
echo &quot;&lt;TABLE width='100%' border=0 cellspacing=0 cellpadding=0&gt;&quot;;
echo &quot;&lt;tr&gt;&lt;th&gt;$l_hours1&lt;/th&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;tr bgcolor='#FFCC66'&gt;&lt;td&gt;&lt;img src='/images/pix.gif' width=1 height=2&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;/TABLE&gt;&quot;;
echo &quot;&lt;TABLE width='100%' border=1 cellspacing=0 cellpadding=0&gt;&quot;;
echo &quot;&lt;tr&gt;&lt;td valign='middle' align='left'&gt;&quot;;
if ($HOURSCONNECT == &quot;ON&quot;)
	{
	echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_hours_on&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
 	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type=hidden name='choix' value=\&quot;H_Off\&quot;&gt;&quot;;
	echo &quot;&lt;input type=submit value=\&quot;$l_switch_hours_off\&quot;&gt;&quot;;
	echo &quot;&lt;/FORM&gt;&quot;;
	# Choice of language
	$Language = 'en';
	if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
	  $Langue = explode(&quot;,&quot;,$_SERVER['HTTP_ACCEPT_LANGUAGE']);
	  $Language = strtolower(substr(chop($Langue[0]),0,2)); }
	if($Language == 'fr'){
	  $l_selectuser=&quot;l'utilisateur sélectionné est : &quot;;
	  $l_userisnotselect=&quot;Veuillez sélectionner un utilisateur.&quot;;
	  $l_isadmin = &quot;7j/7 24h/24&quot;;
	  $l_valide = &quot;Enregistrer&quot;;
	  $to = &quot; à &quot; ;
	  $and = &quot; et &quot; ;
	  $l_select = &quot;Sélectionner&quot;;
	  $l_info1 = &quot;08h00 à 24h00 ou 08h00 à 12h00 et 14h00 à 24h00&quot;;
	  $week = array( &quot;lundi&quot;,&quot;mardi&quot;,&quot;mercredi&quot;,&quot;jeudi&quot;,&quot;vendredi&quot;,&quot;samedi&quot;,&quot;dimanche&quot;);
	   $tmaxinfo= &quot;Minutes max /24 heurs&quot;;
	}
	else {
	  $l_userisnotselect=&quot;Veuillez sélectionner un utilisateur.&quot;;
	  $l_selectuser=&quot;l'utilisateur sélectionné est : &quot;;
	  $l_isadmin = &quot;7j/7 24h/24&quot;;
	  $l_valide = &quot;Enregistrer&quot;;
	  $l_select = &quot;Select&quot;;
	  $to = &quot; to &quot; ;
	  $and = &quot; and &quot; ;
	  $l_info1 = &quot;08h00 à 24h00 ou 08h00 à 12h00 et 14h00 à 24h00&quot;;
	  $week = array( &quot;lundi&quot;,&quot;mardi&quot;,&quot;mercredi&quot;,&quot;jeudi&quot;,&quot;vendredi&quot;,&quot;samedi&quot;,&quot;dimanche&quot;);
	   $tmaxinfo= &quot;Minutes max /24 heurs&quot;;
	}
	if (isset($_POST['selectuser'])){ $selectuser=$_POST['selectuser']; }


	### on lit et on interprète le fichier CTparental.conf
	echo &quot;&lt;TABLE width='100%' border=0 cellspacing=0 cellpadding=0&gt;&quot;;
	exec (&quot;/usr/local/bin/CTparental.sh -listusers 2&gt; /dev/null&quot;,$USERSPC); # récupération des utilisateurs du poste.(UID &gt;= 1000)
	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
		echo &quot;&lt;select name=\&quot;selectuser\&quot;&gt;&quot;;
		if ($selectuser){echo &quot;&lt;option value=\&quot;$selectuser\&quot;&gt;$selectuser\n&quot;; }
			else {echo &quot;&lt;option value=\&quot;\&quot;&gt;\n&quot;; }
		foreach ($USERSPC as $USERSELECT){echo &quot;&lt;option value=\&quot;$USERSELECT\&quot;&gt;$USERSELECT\n&quot;;}
		echo &quot; &lt;/select&gt;&quot;;
	echo &quot;&lt;input type=\&quot;submit\&quot; value=\&quot;$l_select\&quot;&gt;&quot;;
	echo &quot;&lt;/FORM&gt;&quot;;
	if (isset($selectuser)) {
		echo &quot;&lt;/TABLE&gt;&quot;;
		echo &quot;&lt;TABLE width='600' border=0 cellspacing=0 cellpadding=0&gt;&quot;;
		echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
		echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_selectuser $selectuser&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
		
		if (is_file ($hconf_file))
			{
			$tab=file($hconf_file);
			if ($tab)
				{
				foreach ($tab as $line)
					{
							$field=explode(&quot;=&quot;, $line);
								if ( $field[0] == $selectuser ){
								$field2=explode(&quot;:&quot;, $field[2]);
							$numday=$field[1];
							$isconfigured=1;
							
							if ( $numday == &quot;admin&quot;) { echo &quot;&lt;tr&gt;&lt;td&gt;$l_isadmin : &lt;input type='checkbox' name='isadmin' checked&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;}
							elseif ( $numday == &quot;user&quot;) {echo &quot;&lt;tr&gt;&lt;td&gt;$l_isadmin : &lt;input type='checkbox' name='isadmin' &gt;&lt;/td&gt;&lt;/tr&gt;&quot;;
										if ( intval ($field[2]) == 0 ) { $field[2]=&quot;1440&quot;; }
										echo&quot;&lt;tr&gt;&lt;td&gt;$tmaxinfo&lt;td&gt;&lt;INPUT type=\&quot;text\&quot; size=4 maxlength=4 value=\&quot;$field[2]\&quot;  name=\&quot;tmax\&quot;&gt;/1440&lt;td&lt;/tr&gt;&quot;;	
										}
										
							else {
								echo&quot;&lt;tr&gt;&lt;td&gt;$week[$numday]:&lt;/td&gt;&lt;td&gt;&lt;INPUT type=\&quot;text\&quot; size=5 maxlength=5 value=\&quot;$field2[0]\&quot;  name=\&quot;h1$numday\&quot;&gt;&lt;/td&gt;&quot;;
										echo&quot; &lt;td&gt;$to &lt;INPUT type=\&quot;text\&quot; size=5 maxlength=5 value=\&quot;$field2[1]\&quot; name=\&quot;h2$numday\&quot;&gt;&lt;/td&gt;&quot;;
										echo&quot; &lt;td&gt;$and &lt;INPUT type=\&quot;text\&quot; size=5 maxlength=5 value=\&quot;$field2[2]\&quot; name=\&quot;h3$numday\&quot;&gt;&lt;/td&gt;&quot;;	
								echo&quot; &lt;td&gt;$to &lt;INPUT type=\&quot;text\&quot; size=5 maxlength=5 value=\&quot;$field2[3]\&quot; name=\&quot;h4$numday\&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;
							}
														
						}
							
					}
					
				}
			
			}
		else { echo &quot;$l_error_open_file $hconf_file&quot;;}

		if (isset($isconfigured)==0){
			echo &quot;&lt;tr&gt;&lt;td&gt;$l_isadmin : &lt;input type='checkbox' name='isadmin' checked=\&quot;checked\&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;
		}


		echo &quot;&lt;/TABLE&gt;&quot;;
		echo &quot;&lt;input type=hidden name='selectuser' value=\&quot;$selectuser\&quot;&gt;&quot;;
			echo &quot;&lt;input type=hidden name='choix' value=\&quot;MAJ_H\&quot;&gt;&quot;;
		echo &quot;&lt;input type=\&quot;submit\&quot; value=\&quot;$l_valide\&quot;&gt;&quot;;
		echo &quot;&lt;/FORM&gt;&quot;;
	}
	else { echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_userisnotselect&lt;/H3&gt;&lt;/CENTER&gt;&quot;;}

}
else
	{
	echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_hours_off&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
 	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type=hidden name='choix' value=\&quot;H_On\&quot;&gt;&quot;;
	echo &quot;&lt;input type=submit value=\&quot;$l_switch_hours_on\&quot;&gt;&quot;;
	echo &quot;&lt;/FORM&gt;&quot;;
	}



?&gt;

&lt;/code&gt;
'''gctoff.php'''
&lt;code php&gt;
&lt;?php
echo &quot;&lt;TABLE width='100%' border=0 cellspacing=0 cellpadding=0&gt;&quot;;
echo &quot;&lt;tr&gt;&lt;th&gt;$l_title_gctoff&lt;/th&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;tr bgcolor='#FFCC66'&gt;&lt;td&gt;&lt;img src='/images/pix.gif' width='1' height='2'&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;
echo &quot;&lt;/table&gt;&quot;;
echo &quot;&lt;table width='100%' border=1 cellspacing=0 cellpadding=1&gt;&quot;;
if ($GCTOFF == &quot;ON&quot;)
	{
	echo &quot;&lt;CENTER&gt;&lt;H3&gt;$l_gctoff_on&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
 	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type=hidden name='choix' value=\&quot;gct_Off\&quot;&gt;&quot;;
	echo &quot;&lt;input type=submit value=\&quot;$l_switch_gctoff_off\&quot;&gt;&quot;;
	echo &quot;&lt;/FORM&gt;&quot;;

	
	echo &quot;&lt;tr&gt;&lt;td colspan=2 align='center'&gt;&quot;;
	echo &quot;$l_gctoff_explain&lt;/td&gt;&lt;/tr&gt;&quot;;
	echo &quot;&lt;tr&gt;&lt;td align='center' valign='middle'&gt;&quot;;
	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method='POST'&gt;&quot;;
	echo &quot;&lt;table cellspacing=2 cellpadding=2 border=1&gt;&quot;;
	echo &quot;&lt;tr&gt;&lt;th&gt;$l_gctoff_username&lt;th&gt;$l_blocked&lt;/tr&gt;&quot;;
	// Read the &quot;CTOFF.conf&quot; file
	exec (&quot;sudo /usr/local/bin/CTparental.sh -gctulist&quot;);
	$tab=file($conf_ctoff_file);
	if ($tab)  # the file isn't empty
		{
		foreach ($tab as $line)
			{
			if (trim($line) != '') # the line isn't empty
				{
				$user_lignes=explode(&quot; &quot;, $line);
				$userx=trim($user_lignes[0],&quot;#&quot;);
				echo &quot;&lt;tr&gt;&lt;td&gt;$userx&quot;;
				echo &quot;&lt;td&gt;&lt;input type='checkbox' name='chk-$userx'&quot;;
				if (preg_match('/^#/',$line, $r)) {
					echo &quot;&gt;&quot;;}
				else {
					echo &quot;checked&gt;&quot;;}
				echo &quot;&lt;/tr&gt;&quot;;
				}
			}
		}
	
	echo &quot;&lt;/table&gt;&quot;;
	echo &quot;&lt;input type='hidden' name='choix' value='change_user'&gt;&quot;;
	echo &quot;&lt;input type='submit' value='$l_record'&gt;&quot;;
	echo &quot;&lt;/form&gt;&quot;;
}
else
	{
	echo &quot;&lt;CENTER&gt;&lt;H3&gt; $l_gctoff_off&lt;/H3&gt;&lt;/CENTER&gt;&quot;;
 	echo &quot;&lt;FORM action='$_SERVER[PHP_SELF]' method=POST&gt;&quot;;
	echo &quot;&lt;input type=hidden name='choix' value=\&quot;gct_On\&quot;&gt;&quot;;
	echo &quot;&lt;input type=submit value=\&quot;$l_switch_gctoff_on\&quot;&gt;&quot;;
	echo &quot;&lt;/FORM&gt;&quot;;
	}

&lt;/code&gt;
'''bl_categories_help.php'''
&lt;code php&gt;
&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;
&lt;HTML&gt;&lt;!-- written by Rexy --&gt;
&lt;HEAD&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot;&gt;
&lt;?php
$bl_dir=&quot;/usr/local/etc/CTparental/dnsfilter-available/&quot;;
# Choice of language
$Language = 'en';
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
  $Langue = explode(&quot;,&quot;,$_SERVER['HTTP_ACCEPT_LANGUAGE']);
  $Language = strtolower(substr(chop($Langue[0]),0,2)); }
if($Language == 'fr'){
  $l_title = &quot;Catégories de la liste noire&quot;;
  $l_error_open_file=&quot;Erreur d'ouverture du fichier&quot;;
  $l_close=&quot;Fermer&quot;;
  $l_unknown_cat=&quot;Cette catégorie n'est pas décrite&quot;;
  $l_nb_domains=&quot;Nombre de noms de domaine filtrés :&quot;;
  $l_nb_urls=&quot;Nombre d'URL filtrés :&quot;;
  $l_explain_adult=&quot;Sites relatifs à l'érotisme et à la pornographie&quot;;
  $l_explain_agressif=&quot;Sites extrémistes, racistes, antisémites ou incitant à la haine&quot;;
  $l_explain_arjel=&quot;Sites de pari en ligne certifies par l'ARJEL (Autorité de Régulation des Jeux En Ligne)&quot;;
  $l_explain_astrology=&quot;Sites relatifs à l'astrologie&quot;;
  $l_explain_bank=&quot;Sites de banques en ligne&quot;;
  $l_explain_audio_video=&quot;Sites de téléchargement de fichiers audio et vidéo&quot;;
  $l_explain_blog=&quot;Sites d'hébergement de blogs&quot;;
  $l_explain_celebrity=&quot;Sites « people », stars, etc.&quot;;
  $l_explain_chat=&quot;Sites de dialogue en ligne&quot;;
  $l_explain_child=&quot;Sites pour enfants&quot;;
  $l_explain_cleaning=&quot;Sites relatifs à la mise à jour logicielle ou antivirale&quot;;
  $l_explain_dangerous_material=&quot;Sites relatifs à la création de produits dangereux (explosif, poison, etc.)&quot;;
  $l_explain_dating=&quot;Sites de rencontres en ligne&quot;;
  $l_explain_drogue=&quot;Sites relatifs aux produits stupéfiants&quot;;
  $l_explain_filehosting=&quot;Entrepôts de fichiers  (vidéo, images, son, logiciels, etc.)&quot;;
  $l_explain_financial=&quot;Sites d'informations financières, bourses, etc.&quot;;
  $l_explain_forums=&quot;Sites d'hébergement de forums de discussion&quot;;
  $l_explain_gambling=&quot;Sites de jeux d'argent en ligne (casino, grattage virtuel, etc.)&quot;;
  $l_explain_games=&quot;Sites de jeux en ligne&quot;;
  $l_explain_hacking=&quot;Sites relatifs au piratage informatique&quot;;
  $l_explain_jobsearch=&quot;Sites de recherche d'emplois&quot;;
  $l_explain_liste_bu=&quot;Liste de sites éducatifs pour bibliothèque&quot;;
  $l_explain_malware=&quot;Site relatifs au logiciels malveillants (virus, vers, trojans, etc.)&quot;;
  $l_explain_manga=&quot;Site de Mangas&quot;;
  $l_explain_marketingware=&quot;Sites marchands douteux (X, organes, enfants, etc.)&quot;;
  $l_explain_mixed_adult=&quot;Sites pour adultes (image-choc, gore, guerre, etc.)&quot;;
  $l_explain_mobile_phone=&quot;Sites relatifs aux mobiles GSM (sonneries, logos, etc.)&quot;;
  $l_explain_ossi=&quot;Noms de domaine et URLs que vous ajoutez à la liste noire (voir ci-dessous)&quot;;
  $l_explain_phishing=&quot;Sites relatifs à l'hammeçonnage (pièges bancaires, redirection, etc.)&quot;;
  $l_explain_press=&quot;Sites de presse&quot;;
  $l_explain_publicite=&quot;Sites ou bannières publicitaires&quot;;
  $l_explain_radio=&quot;Sites de radios en ligne ou de podcast&quot;;
  $l_explain_reaffected=&quot;Sites connus ayant changé de propriétaire (et donc de contenu)&quot;;
  $l_explain_redirector=&quot;Sites de redirection, d'anonymisation ou de contournement&quot;;
  $l_explain_remote_control=&quot;Sites permettant la prise de controle a distance&quot;;
  $l_explain_sect=&quot;Sites sectaires&quot;;
  $l_explain_social_networks=&quot;Sites de réseaux sociaux&quot;;
  $l_explain_sexual_education=&quot;Sites relatifs à l'éducation sexuelle&quot;;
  $l_explain_shopping=&quot;Sites de vente et d'achat en ligne&quot;;
  $l_explain_sport=&quot;Sites de sport&quot;;
  $l_explain_strict_redirector=&quot;URL intentionnellement mal formées&quot;;
  $l_explain_strong_redirector=&quot;URL mal formées dans une requête « google »&quot;;
  $l_explain_tricheur=&quot;Sites relatifs aux tricheries (examens, concours, etc.)&quot;;
  $l_explain_webmail=&quot;Site WEB permettant de consultation son courrier électronique&quot;;
  $l_explain_warez=&quot;Sites relatifs aux logiciels piratés (crackés), aux générateurs de clés, etc.&quot;;
}
else {
  $l_title = &quot;Blacklist categories&quot;;
  $l_error_open_file=&quot;Error opening the file&quot;;
  $l_close=&quot;Close&quot;;
  $l_unknown_cat=&quot;This category isn't describe&quot;;
  $l_nb_domains=&quot;Number of filtered domain names :&quot;;
  $l_nb_urls=&quot;Number of filtered URL :&quot;;
  $l_explain_adult=&quot;Sites related to eroticism and pornography&quot;;
  $l_explain_agressif=&quot;Sites extremist, racist, anti-Semitic or hate&quot;;
  $l_explain_arjel=&quot;Online gambling sites allowed by the french authority 'ARJEL' (Autorité de Régulation des Jeux En Ligne)&quot;;
  $l_explain_astrology=&quot;Sites related to astrology&quot;;
  $l_explain_audio_video=&quot;Sites for downloading audio and video&quot;;
  $l_explain_bank=&quot;Online bank sites&quot;;
  $l_explain_blog=&quot;Sites hosting blogs&quot;;
  $l_explain_celebrity=&quot;Sites « people », stars, etc.&quot;;
  $l_explain_chat=&quot;Online chat sites&quot;;
  $l_explain_child=&quot;Sites for children&quot;;
  $l_explain_cleaning=&quot;Sites related to software update or antiviral&quot;;
  $l_explain_dangerous_material=&quot;Sites related to the creation of dangerous goods (explosives, poison, etc.)&quot;;
  $l_explain_dating=&quot;Online dating sites&quot;;
  $l_explain_drogue=&quot;Sites related to narcotic&quot;;
  $l_explain_filehosting=&quot;Warehouses of files (video, images, sound, software, etc.)&quot;;
  $l_explain_financial=&quot;Sites of financial information&quot;;
  $l_explain_forums=&quot;Sites hosting discussion forums&quot;;
  $l_explain_gambling=&quot;Online gambling sites (casino, virtual scratching, etc.)&quot;;
  $l_explain_games=&quot;Online games sites&quot;;
  $l_explain_hacking=&quot;Sites related to hacking&quot;;
  $l_explain_jobsearch=&quot;Job search sites&quot;;
  $l_explain_liste_bu=&quot;List of educational sites for library&quot;;
  $l_explain_malware=&quot;Malware sites (viruses, worms, trojans, etc.).&quot;;
  $l_explain_manga=&quot;Manga site&quot;;
  $l_explain_marketingware=&quot;doubtful commercial sites&quot;;
  $l_explain_mixed_adult=&quot;Adult sites (shock, gore, war, etc.).&quot;;
  $l_explain_mobile_phone=&quot;Sites related to GSM mobile (ringtones, logos, etc.)&quot;;
  $l_explain_ossi=&quot;Domain names and URLs you add to the blacklist (see below)&quot;;
  $l_explain_phishing=&quot;Phishing sites (traps banking, redirect, etc..)&quot;;
  $l_explain_press=&quot;News sites&quot;;
  $l_explain_publicite=&quot;Advertising sites&quot;;
  $l_explain_radio=&quot;Online radio podcast sites&quot;;
  $l_explain_reaffected=&quot;Sites that have changed ownership (and therefore content)&quot;;
  $l_explain_redirector=&quot;redirects, anonymization or bypass sites&quot;;
  $l_explain_remote_control=&quot;Sites for making remote control&quot;;
  $l_explain_sect=&quot;Sectarian sites&quot;;
  $l_explain_social_networks=&quot;Social networks sites&quot;;
  $l_explain_sexual_education=&quot;Sites related to sex education&quot;;
  $l_explain_shopping=&quot;Shopping sites and online shopping&quot;;
  $l_explain_sport=&quot;Sport sites&quot;;
  $l_explain_strict_redirector=&quot;Intentionally malformed URL&quot;;
  $l_explain_strong_redirector=&quot;Malformed URL in a 'google' query&quot;;
  $l_explain_tricheur=&quot;Sites related to cheating (tests, examinations, etc.)&quot;;
  $l_explain_webmail=&quot;Web sites for e-mail consultation&quot;;
  $l_explain_warez=&quot;Sites related to cracked softwares&quot;;
}
if (isset($_GET['cat'])){$categorie=$_GET['cat'];} 
$bl_categorie_domain_file=$bl_dir.$categorie.&quot;.conf&quot;;
if (file_exists($bl_categorie_domain_file))
	$nb_domains=exec (&quot;wc -w $bl_categorie_domain_file|cut -d' ' -f1&quot;);
else
	$nb_domains=$l_error_openfilei.&quot; &quot;.$bl_categorie_domain_file;
if (file_exists($bl_categorie_url_file))
	$nb_urls=exec (&quot;wc -w $bl_categorie_url_file|cut -d' ' -f1&quot;);
else
	$nb_urls=$l_error_openfile.&quot; &quot;.$bl_categorie_url_file;
echo &quot;&lt;TITLE&gt;$l_title&lt;/TITLE&gt;&quot;;
?&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;/CTadmin/css/style.css&quot; type=&quot;text/css&quot;&gt;
&lt;/HEAD&gt;
&lt;body&gt;
&lt;TABLE width=&quot;100%&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
	&lt;tr&gt;&lt;th&gt;&lt;?php echo $categorie ;?&gt;&lt;/th&gt;&lt;/tr&gt;
	&lt;tr bgcolor=&quot;#FFCC66&quot;&gt;&lt;td&gt;&lt;img src=&quot;/images/pix.gif&quot; width=&quot;1&quot; height=&quot;2&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/TABLE&gt;
&lt;TABLE width=&quot;100%&quot; border=1 cellspacing=0 cellpadding=1&gt;
&lt;tr&gt;&lt;td valign=&quot;middle&quot; align=&quot;left&quot;&gt;
&lt;?php
$compat_categorie=strtr($categorie,&quot;-&quot;,&quot;_&quot;);
if (!empty(${'l_explain_'.$compat_categorie}))
	echo &quot;&lt;center&gt;&lt;b&gt;${'l_explain_'.$compat_categorie}&lt;/b&gt;&lt;/center&gt;&quot;;
else echo &quot;$l_unknown_cat&quot;;
echo &quot;&lt;br&gt;$l_nb_domains &lt;b&gt;$nb_domains&lt;/b&gt;&lt;br&gt;&quot;;
?&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/TABLE&gt;
&lt;br&gt;
&lt;center&gt;&lt;a href=&quot;javascript:window.close();&quot;&gt;&lt;b&gt;&lt;?php echo &quot;$l_close&quot;; ?&gt;&lt;/b&gt;&lt;/a&gt;&lt;/center&gt;
&lt;/BODY&gt;
&lt;/HTML&gt;
&lt;/code&gt;
[[Catégorie:Scripts]]</text>
      <sha1>kfiqrov2scsv4wfozv6saye2jhftdho</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Cowsay et fortunes</title>
    <ns>0</ns>
    <id>398</id>
    <revision>
      <id>1429</id>
      <timestamp>2010-04-19T18:31:34Z</timestamp>
      <contributor>
        <username>Spatule</username>
        <id>47</id>
      </contributor>
      <comment>Page créée avec « &lt;br/&gt; &lt;u&gt;Pour ceux qui ne connaissent pas :&lt;/u&gt; &lt;br/&gt; '''cowsay''' est un petit programme qui affiche un dessin en ASCII d'un animal qui parle. A l'origine, cowsay n'affichai… »</comment>
      <text xml:space="preserve" bytes="2386">&lt;br/&gt;
&lt;u&gt;Pour ceux qui ne connaissent pas :&lt;/u&gt;
&lt;br/&gt;
'''cowsay''' est un petit programme qui affiche un dessin en ASCII d'un animal qui parle. A l'origine, cowsay n'affichait qu'une vache (d'ou son nom...), mais aujourd'hui il permet d'afficher plus ou moins ce que l'on veut grace à l'existence des fichiers *.cow
&lt;br/&gt;
'''fortunes''' quant à lui, est un générateur aléatoire de citations, proverbes, et autres geekeries du monde irc.
&lt;br/&gt;
Si on combine les deux, alors on se retrouve à chaque ouverture de shell avec un animal de son choix qui nous pond une citation de victor hugo, un proverbe persan, ou encore une remarque désobligeante accusant redhat de ne pas être un linux (ça c'est méchant... xD)
&lt;br/&gt;
[[Fichier:cowsay_fortune.png]]
&lt;br/&gt;
&lt;br/&gt;
&lt;u&gt;Voici comment faire :&lt;/u&gt;
 # aptitude install cowsay fortunes fortunes-fr
Retrouver la liste des &quot;cows&quot; dispo ici : /usr/share/cowsay/cows
&lt;br/&gt;
Ensuite, suivant votre shell (bash, ksh, csh, zsh, etc..) éditer son fichier de configuration (~/.bashrc, ~/.zshrc, etc...) et coller ces lignes à la fin du fichier :
 cow_name=dragon
 cowsay -f $cow_name &quot;`fortune -s`&quot;
Remplacer &quot;dragon&quot; par le nom que vous voulez (la listes des &quot;cows&quot; étant dans /usr/share/cowsay/cows)
&lt;br/&gt;
&lt;br/&gt;
&lt;u&gt;Encore plus fort :&lt;/u&gt;
&lt;br/&gt;
Votre &quot;cow&quot; toujours identique vous ennuie ? Envie que celui-ci change son déguisement à chaque ouverture de shell ? Alors remplacer la commande cowsay ci-dessus par celle-ci (un grand merci à Dunatotatos sur [http://forum.debian-fr.org le forum debian-fr])&lt;br/&gt;
 cowsay -f `ls /usr/share/cowsay/cows/ | rl | tail -n 1 | cut -d'.' -f1` &quot;`fortune -s`&quot;
''&lt;u&gt;'''Important :'''&lt;/u&gt; cette commande utilise l'exécutable '''''rl''''' qui dépend du paquet '''''randomize-lines''''', il est donc nécessaire de l'installer.''
&lt;br/&gt;
Notons qu'il est possible de se passer de la dépendance '''randomize-lines''' en utilisant ces quelques lignes de code toujours dans notre fichier de configuration du shell :
 NBRE_COWS=`ls -l /usr/share/cowsay/cows/ | grep -v total | wc -l`
 COWS_RANDOM=`echo $[$RANDOM % ($[$NBRE_COWS - 1] + 1) + 1]`
 COW_NAME=`ls -l /usr/share/cowsay/cows/ | grep -v total | awk -v COWS_RANDOM_AWK=$COWS_RANDOM 'NR == COWS_RANDOM_AWK {print $NF}' | cut -d&quot;.&quot; -f1`
 cowsay -f $COW_NAME &quot;`fortune -s`&quot;
''si quelqu'un trouve une solution plus simple et sans dépendance je suis preneur''</text>
      <sha1>soh12jytdkibqpnrd828vtx4xq0e9dq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1432</id>
      <parentid>1429</parentid>
      <timestamp>2010-04-19T18:56:55Z</timestamp>
      <contributor>
        <username>Spatule</username>
        <id>47</id>
      </contributor>
      <text xml:space="preserve" bytes="2409">&lt;br/&gt;
&lt;u&gt;Pour ceux qui ne connaissent pas :&lt;/u&gt;
&lt;br/&gt;
'''cowsay''' est un petit programme qui affiche un dessin en ASCII d'un animal qui parle. A l'origine, cowsay n'affichait qu'une vache (d'ou son nom...), mais aujourd'hui il permet d'afficher plus ou moins ce que l'on veut grace à l'existence des fichiers *.cow
&lt;br/&gt;
'''fortunes''' quant à lui, est un générateur aléatoire de citations, proverbes, et autres geekeries du monde irc.
&lt;br/&gt;
Si on combine les deux, alors on se retrouve à chaque ouverture de shell avec un animal de son choix qui nous pond une citation de victor hugo, un proverbe persan, ou encore une remarque désobligeante accusant redhat de ne pas être un linux (ça c'est méchant... xD)
&lt;br/&gt;
[[Fichier:cowsay_fortune.png]]
&lt;br/&gt;
&lt;br/&gt;
&lt;u&gt;Voici comment faire :&lt;/u&gt;
 # aptitude install cowsay fortunes fortunes-fr
Retrouver la liste des &quot;cows&quot; dispo ici : /usr/share/cowsay/cows
&lt;br/&gt;
Ensuite, suivant votre shell (bash, ksh, csh, zsh, etc..) éditer son fichier de configuration (~/.bashrc, ~/.zshrc, etc...) et coller ces lignes à la fin du fichier :
 cow_name=dragon
 cowsay -f $cow_name &quot;`fortune -s`&quot;
Remplacer &quot;dragon&quot; par le nom que vous voulez (la listes des &quot;cows&quot; étant dans /usr/share/cowsay/cows)
&lt;br/&gt;
&lt;br/&gt;
&lt;u&gt;Encore plus fort :&lt;/u&gt;
&lt;br/&gt;
Votre &quot;cow&quot; toujours identique vous ennuie ? Envie que celui-ci change son déguisement à chaque ouverture de shell ? Alors remplacer la commande cowsay ci-dessus par celle-ci (un grand merci à Dunatotatos sur [http://forum.debian-fr.org le forum debian-fr])&lt;br/&gt;
 cowsay -f `ls /usr/share/cowsay/cows/ | rl | tail -n 1 | cut -d'.' -f1` &quot;`fortune -s`&quot;
''&lt;u&gt;'''Important :'''&lt;/u&gt; cette commande utilise l'exécutable '''''rl''''' qui dépend du paquet '''''randomize-lines''''', il est donc nécessaire de l'installer.''
&lt;br/&gt;
Notons qu'il est possible de se passer de la dépendance '''randomize-lines''' en utilisant ces quelques lignes de code toujours dans notre fichier de configuration du shell :
 NBRE_COWS=`ls -l /usr/share/cowsay/cows/ | grep -v total | wc -l`
 COWS_RANDOM=`echo $[$RANDOM % ($[$NBRE_COWS - 1] + 1) + 1]`
 COW_NAME=`ls -l /usr/share/cowsay/cows/ | grep -v total | awk -v COWS_RANDOM_AWK=$COWS_RANDOM 'NR == COWS_RANDOM_AWK {print $NF}' | cut -d&quot;.&quot; -f1`
 cowsay -f $COW_NAME &quot;`fortune -s`&quot;
''si quelqu'un trouve une solution plus simple et sans dépendance je suis preneur''

[[Catégorie:Divers]]</text>
      <sha1>e018tydz6fkwdseyzd6zj6efdzsa497</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1434</id>
      <parentid>1432</parentid>
      <timestamp>2010-04-20T11:19:02Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <text xml:space="preserve" bytes="2863">&lt;br/&gt;
&lt;u&gt;Pour ceux qui ne connaissent pas :&lt;/u&gt;
&lt;br/&gt;
'''cowsay''' est un petit programme qui affiche un dessin en ASCII d'un animal qui parle. A l'origine, cowsay n'affichait qu'une vache (d'ou son nom...), mais aujourd'hui il permet d'afficher plus ou moins ce que l'on veut grace à l'existence des fichiers *.cow
&lt;br/&gt;
'''fortunes''' quant à lui, est un générateur aléatoire de citations, proverbes, et autres geekeries du monde irc.
&lt;br/&gt;
Si on combine les deux, alors on se retrouve à chaque ouverture de shell avec un animal de son choix qui nous pond une citation de victor hugo, un proverbe persan, ou encore une remarque désobligeante accusant redhat de ne pas être un linux (ça c'est méchant... xD)
&lt;br/&gt;
[[Fichier:cowsay_fortune.png]]
&lt;br/&gt;
&lt;br/&gt;
&lt;u&gt;Voici comment faire :&lt;/u&gt;
 # aptitude install cowsay fortunes fortunes-fr
Retrouver la liste des &quot;cows&quot; dispo ici : /usr/share/cowsay/cows
&lt;br/&gt;
Ensuite, suivant votre shell (bash, ksh, csh, zsh, etc..) éditer son fichier de configuration (~/.bashrc, ~/.zshrc, etc...) et coller ces lignes à la fin du fichier :
 cow_name=dragon
 cowsay -f $cow_name &quot;`fortune -s`&quot;
Remplacer &quot;dragon&quot; par le nom que vous voulez (la listes des &quot;cows&quot; étant dans /usr/share/cowsay/cows)
&lt;br/&gt;
&lt;br/&gt;
&lt;u&gt;Encore plus fort :&lt;/u&gt;
&lt;br/&gt;
Votre &quot;cow&quot; toujours identique vous ennuie ? Envie que celui-ci change son déguisement à chaque ouverture de shell ? Alors remplacer la commande cowsay ci-dessus par celle-ci (un grand merci à Dunatotatos sur [http://forum.debian-fr.org le forum debian-fr])&lt;br/&gt;
 cowsay -f `ls /usr/share/cowsay/cows/ | rl | tail -n 1 | cut -d'.' -f1` &quot;`fortune -s`&quot;
''&lt;u&gt;'''Important :'''&lt;/u&gt; cette commande utilise l'exécutable '''''rl''''' qui dépend du paquet '''''randomize-lines''''', il est donc nécessaire de l'installer.''
&lt;br/&gt;
Notons qu'il est possible de se passer de la dépendance '''randomize-lines''' en utilisant ces quelques lignes de code toujours dans notre fichier de configuration du shell :
 #!/bin/bash
 # on place le nombre total de fichiers *.cows dans NBRE_COWS
 NBRE_COWS=`ls -1 /usr/share/cowsay/cows/ | wc -l`
 # on génère un nombre aléatoire compris entre 1 et NBRE_COWS
 COWS_RANDOM=$(($RANDOM % $NBRE_COWS + 1))
 # là il faut comprendre la syntaxe awk :
 # NR correspond au numéro de la ligne en cours de traitement par awk.
 # NF correspond au dernier champs de la ligne traitée (soit le nom du fichier cow).
 # Le NR == COWS_RANDOM_AWK et un critère de sélection conditionnel qui dit :
 # &quot;je n'execute l'action {print NF} que si le numéro de ligne est égal à COWS_RANDOM_AWK&quot;
 COW_NAME=`ls -1 /usr/share/cowsay/cows/ | awk -F\. -v COWS_RANDOM_AWK=$COWS_RANDOM 'NR == COWS_RANDOM_AWK {print $1}'`
 cowsay -f $COW_NAME &quot;`fortune -s`&quot;

''si quelqu'un trouve une solution plus simple et sans dépendance je suis preneur''

[[Catégorie:Divers]]</text>
      <sha1>9x6w5wpim8lczpzjmrcby71wpdfsyop</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1435</id>
      <parentid>1434</parentid>
      <timestamp>2010-04-20T11:19:55Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <text xml:space="preserve" bytes="2865">&lt;br/&gt;
&lt;u&gt;Pour ceux qui ne connaissent pas :&lt;/u&gt;
&lt;br/&gt;
'''cowsay''' est un petit programme qui affiche un dessin en ASCII d'un animal qui parle. A l'origine, cowsay n'affichait qu'une vache (d'ou son nom...), mais aujourd'hui il permet d'afficher plus ou moins ce que l'on veut grace à l'existence des fichiers *.cow
&lt;br/&gt;
'''fortunes''' quant à lui, est un générateur aléatoire de citations, proverbes, et autres geekeries du monde irc.
&lt;br/&gt;
Si on combine les deux, alors on se retrouve à chaque ouverture de shell avec un animal de son choix qui nous pond une citation de victor hugo, un proverbe persan, ou encore une remarque désobligeante accusant redhat de ne pas être un linux (ça c'est méchant... xD)
&lt;br/&gt;
[[Fichier:cowsay_fortune.png]]
&lt;br/&gt;
&lt;br/&gt;
&lt;u&gt;Voici comment faire :&lt;/u&gt;
 # aptitude install cowsay fortunes fortunes-fr
Retrouver la liste des &quot;cows&quot; dispo ici : /usr/share/cowsay/cows
&lt;br/&gt;
Ensuite, suivant votre shell (bash, ksh, csh, zsh, etc..) éditer son fichier de configuration (~/.bashrc, ~/.zshrc, etc...) et coller ces lignes à la fin du fichier :
 cow_name=dragon
 cowsay -f $cow_name &quot;`fortune -s`&quot;
Remplacer &quot;dragon&quot; par le nom que vous voulez (la listes des &quot;cows&quot; étant dans /usr/share/cowsay/cows)
&lt;br/&gt;
&lt;br/&gt;
&lt;u&gt;Encore plus fort :&lt;/u&gt;
&lt;br/&gt;
Votre &quot;cow&quot; toujours identique vous ennuie ? Envie que celui-ci change son déguisement à chaque ouverture de shell ? Alors remplacer la commande cowsay ci-dessus par celle-ci (un grand merci à Dunatotatos sur [http://forum.debian-fr.org le forum debian-fr])&lt;br/&gt;
 cowsay -f `ls /usr/share/cowsay/cows/ | rl | tail -n 1 | cut -d'.' -f1` &quot;`fortune -s`&quot;
''&lt;u&gt;'''Important :'''&lt;/u&gt; cette commande utilise l'exécutable '''''rl''''' qui dépend du paquet '''''randomize-lines''''', il est donc nécessaire de l'installer.''
&lt;br/&gt;
Notons qu'il est possible de se passer de la dépendance '''randomize-lines''' en utilisant ces quelques lignes de code toujours dans notre fichier de configuration du shell :
 #!/bin/bash
 # on place le nombre total de fichiers *.cows dans NBRE_COWS
 NBRE_COWS=$(ls -1 /usr/share/cowsay/cows/ | wc -l)
 # on génère un nombre aléatoire compris entre 1 et NBRE_COWS
 COWS_RANDOM=$(($RANDOM % $NBRE_COWS + 1))
 # là il faut comprendre la syntaxe awk :
 # NR correspond au numéro de la ligne en cours de traitement par awk.
 # NF correspond au dernier champs de la ligne traitée (soit le nom du fichier cow).
 # Le NR == COWS_RANDOM_AWK et un critère de sélection conditionnel qui dit :
 # &quot;je n'execute l'action {print NF} que si le numéro de ligne est égal à COWS_RANDOM_AWK&quot;
 COW_NAME=$(ls -1 /usr/share/cowsay/cows/ | awk -F\. -v COWS_RANDOM_AWK=$COWS_RANDOM 'NR == COWS_RANDOM_AWK {print $1}')
 cowsay -f $COW_NAME &quot;`fortune -s`&quot;

''si quelqu'un trouve une solution plus simple et sans dépendance je suis preneur''

[[Catégorie:Divers]]</text>
      <sha1>20xg3jb2lvaq8cb8n6sdo9e8zf5q5hd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1436</id>
      <parentid>1435</parentid>
      <timestamp>2010-04-20T11:23:09Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>retrait de la dépendance à bash</comment>
      <text xml:space="preserve" bytes="2866">&lt;br/&gt;
&lt;u&gt;Pour ceux qui ne connaissent pas :&lt;/u&gt;
&lt;br/&gt;
'''cowsay''' est un petit programme qui affiche un dessin en ASCII d'un animal qui parle. A l'origine, cowsay n'affichait qu'une vache (d'ou son nom...), mais aujourd'hui il permet d'afficher plus ou moins ce que l'on veut grace à l'existence des fichiers *.cow
&lt;br/&gt;
'''fortunes''' quant à lui, est un générateur aléatoire de citations, proverbes, et autres geekeries du monde irc.
&lt;br/&gt;
Si on combine les deux, alors on se retrouve à chaque ouverture de shell avec un animal de son choix qui nous pond une citation de victor hugo, un proverbe persan, ou encore une remarque désobligeante accusant redhat de ne pas être un linux (ça c'est méchant... xD)
&lt;br/&gt;
[[Fichier:cowsay_fortune.png]]
&lt;br/&gt;
&lt;br/&gt;
&lt;u&gt;Voici comment faire :&lt;/u&gt;
 # aptitude install cowsay fortunes fortunes-fr
Retrouver la liste des &quot;cows&quot; dispo ici : /usr/share/cowsay/cows
&lt;br/&gt;
Ensuite, suivant votre shell (bash, ksh, csh, zsh, etc..) éditer son fichier de configuration (~/.bashrc, ~/.zshrc, etc...) et coller ces lignes à la fin du fichier :
 cow_name=dragon
 cowsay -f $cow_name &quot;`fortune -s`&quot;
Remplacer &quot;dragon&quot; par le nom que vous voulez (la listes des &quot;cows&quot; étant dans /usr/share/cowsay/cows)
&lt;br/&gt;
&lt;br/&gt;
&lt;u&gt;Encore plus fort :&lt;/u&gt;
&lt;br/&gt;
Votre &quot;cow&quot; toujours identique vous ennuie ? Envie que celui-ci change son déguisement à chaque ouverture de shell ? Alors remplacer la commande cowsay ci-dessus par celle-ci (un grand merci à Dunatotatos sur [http://forum.debian-fr.org le forum debian-fr])&lt;br/&gt;
 cowsay -f `ls /usr/share/cowsay/cows/ | rl | tail -n 1 | cut -d'.' -f1` &quot;`fortune -s`&quot;
''&lt;u&gt;'''Important :'''&lt;/u&gt; cette commande utilise l'exécutable '''''rl''''' qui dépend du paquet '''''randomize-lines''''', il est donc nécessaire de l'installer.''
&lt;br/&gt;
Notons qu'il est possible de se passer de la dépendance '''randomize-lines''' en utilisant ces quelques lignes de code toujours dans notre fichier de configuration du shell :
 #!/bin/sh
 # on place le nombre total de fichiers *.cows dans NBRE_COWS
 NBRE_COWS=$(ls -1 /usr/share/cowsay/cows/ | wc -l)
 # on génère un nombre aléatoire compris entre 1 et NBRE_COWS
 COWS_RANDOM=$(expr $RANDOM % $NBRE_COWS + 1)
 # là il faut comprendre la syntaxe awk :
 # NR correspond au numéro de la ligne en cours de traitement par awk.
 # NF correspond au dernier champs de la ligne traitée (soit le nom du fichier cow).
 # Le NR == COWS_RANDOM_AWK et un critère de sélection conditionnel qui dit :
 # &quot;je n'execute l'action {print NF} que si le numéro de ligne est égal à COWS_RANDOM_AWK&quot;
 COW_NAME=$(ls -1 /usr/share/cowsay/cows/ | awk -F\. -v COWS_RANDOM_AWK=$COWS_RANDOM 'NR == COWS_RANDOM_AWK {print $1}')
 cowsay -f $COW_NAME &quot;`fortune -s`&quot;

''si quelqu'un trouve une solution plus simple et sans dépendance je suis preneur''

[[Catégorie:Divers]]</text>
      <sha1>nhwsw9fzebaiorwehxnixx07mih3ay5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1437</id>
      <parentid>1436</parentid>
      <timestamp>2010-04-20T16:06:55Z</timestamp>
      <contributor>
        <username>Spatule</username>
        <id>47</id>
      </contributor>
      <text xml:space="preserve" bytes="2938">&lt;br/&gt;
&lt;u&gt;Pour ceux qui ne connaissent pas :&lt;/u&gt;
&lt;br/&gt;
'''cowsay''' est un petit programme qui affiche un dessin en ASCII d'un animal qui parle. A l'origine, cowsay n'affichait qu'une vache (d'ou son nom...), mais aujourd'hui il permet d'afficher plus ou moins ce que l'on veut grace à l'existence des fichiers *.cow
&lt;br/&gt;
'''fortunes''' quant à lui, est un générateur aléatoire de citations, proverbes, et autres geekeries du monde irc.
&lt;br/&gt;
Si on combine les deux, alors on se retrouve à chaque ouverture de shell avec un animal de son choix qui nous pond une citation de victor hugo, un proverbe persan, ou encore une remarque désobligeante accusant redhat de ne pas être un linux (ça c'est méchant... xD)
&lt;br/&gt;
[[Fichier:cowsay_fortune.png]]
&lt;br/&gt;
&lt;br/&gt;
&lt;u&gt;Voici comment faire :&lt;/u&gt;
 # aptitude install cowsay fortunes fortunes-fr
Retrouver la liste des &quot;cows&quot; dispo ici : /usr/share/cowsay/cows
&lt;br/&gt;
Ensuite, suivant votre shell (bash, ksh, csh, zsh, etc..) éditer son fichier de configuration (~/.bashrc, ~/.zshrc, etc...) et coller ces lignes à la fin du fichier :
 cow_name=dragon
 cowsay -f $cow_name &quot;`fortune -s`&quot;
Remplacer &quot;dragon&quot; par le nom que vous voulez (la listes des &quot;cows&quot; étant dans /usr/share/cowsay/cows)
&lt;br/&gt;
&lt;br/&gt;
&lt;u&gt;Encore plus fort :&lt;/u&gt;
&lt;br/&gt;
Votre &quot;cow&quot; toujours identique vous ennuie ? Envie que celui-ci change son déguisement à chaque ouverture de shell ? Alors remplacer la commande cowsay ci-dessus par celle-ci (un grand merci à Dunatotatos sur [http://forum.debian-fr.org le forum debian-fr])&lt;br/&gt;
 cowsay -f `ls /usr/share/cowsay/cows/ | rl | tail -n 1 | cut -d'.' -f1` &quot;`fortune -s`&quot;
''&lt;u&gt;'''Important :'''&lt;/u&gt; cette commande utilise l'exécutable '''''rl''''' qui dépend du paquet '''''randomize-lines''''', il est donc nécessaire de l'installer.''
&lt;br/&gt;
Notons qu'il est possible de se passer de la dépendance '''randomize-lines''' en utilisant ces quelques lignes de code toujours dans notre fichier de configuration du shell :
 #!/bin/sh
 # on place le nombre total de fichiers *.cows dans NBRE_COWS
 NBRE_COWS=$(ls -1 /usr/share/cowsay/cows/ | wc -l)
 # on génère un nombre aléatoire compris entre 1 et NBRE_COWS
 COWS_RANDOM=$(expr $RANDOM % $NBRE_COWS + 1)
 # là il faut comprendre la syntaxe awk :
 # NR correspond au numéro de la ligne en cours de traitement par awk.
 # NF correspond au dernier champs de la ligne traitée (soit le nom du fichier cow).
 # Le NR == COWS_RANDOM_AWK et un critère de sélection conditionnel qui dit :
 # &quot;je n'execute l'action {print NF} que si le numéro de ligne est égal à COWS_RANDOM_AWK&quot;
 COW_NAME=$(ls -1 /usr/share/cowsay/cows/ | awk -F\. -v COWS_RANDOM_AWK=$COWS_RANDOM 'NR == COWS_RANDOM_AWK {print $1}')
 cowsay -f $COW_NAME &quot;`fortune -s`&quot;

''si quelqu'un trouve une solution plus simple et sans dépendance je suis preneur''
&lt;br/&gt;
&lt;br/&gt;
[[Utilisateur:Spatule|Spatule]] 20 avril 2010 à 16:06 (UTC)
[[Catégorie:Divers]]</text>
      <sha1>qumccs3ro39wpz81rscwd60dy8azkpz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1439</id>
      <parentid>1437</parentid>
      <timestamp>2010-04-20T18:53:50Z</timestamp>
      <contributor>
        <username>Spatule</username>
        <id>47</id>
      </contributor>
      <text xml:space="preserve" bytes="2539">&lt;br/&gt;
&lt;u&gt;Pour ceux qui ne connaissent pas :&lt;/u&gt;
&lt;br/&gt;
'''cowsay''' est un petit programme qui affiche un dessin en ASCII d'un animal qui parle. A l'origine, cowsay n'affichait qu'une vache (d'ou son nom...), mais aujourd'hui il permet d'afficher plus ou moins ce que l'on veut grace à l'existence des fichiers *.cow
&lt;br/&gt;
'''fortunes''' quant à lui, est un générateur aléatoire de citations, proverbes, et autres geekeries du monde irc.
&lt;br/&gt;
Si on combine les deux, alors on se retrouve à chaque ouverture de shell avec un animal de son choix qui nous pond une citation de victor hugo, un proverbe persan, ou encore une remarque désobligeante accusant redhat de ne pas être un linux (ça c'est méchant... xD)
&lt;br/&gt;
[[Fichier:cowsay_fortune.png]]
&lt;br/&gt;
&lt;br/&gt;
&lt;u&gt;Voici comment faire :&lt;/u&gt;
 # aptitude install cowsay fortunes fortunes-fr
Retrouver la liste des &quot;cows&quot; dispo ici : /usr/share/cowsay/cows
&lt;br/&gt;
Ensuite, suivant votre shell (bash, ksh, csh, zsh, etc..) éditer son fichier de configuration (~/.bashrc, ~/.zshrc, etc...) et coller ces lignes à la fin du fichier :
 cow_name=dragon
 cowsay -f $cow_name &quot;`fortune -s`&quot;
Remplacer &quot;dragon&quot; par le nom que vous voulez (la listes des &quot;cows&quot; étant dans /usr/share/cowsay/cows)
&lt;br/&gt;
&lt;br/&gt;
&lt;u&gt;Encore plus fort :&lt;/u&gt;
&lt;br/&gt;
Votre &quot;cow&quot; toujours identique vous ennuie ? Envie que celui-ci change son déguisement à chaque ouverture de shell ? Alors remplacer la commande cowsay ci-dessus par celle-ci (un grand merci à Dunatotatos sur [http://forum.debian-fr.org le forum debian-fr])&lt;br/&gt;
 cowsay -f `ls /usr/share/cowsay/cows/ | rl | tail -n 1 | cut -d'.' -f1` &quot;`fortune -s`&quot;
''&lt;u&gt;'''Important :'''&lt;/u&gt; cette commande utilise l'exécutable '''''rl''''' qui dépend du paquet '''''randomize-lines''''', il est donc nécessaire de l'installer.''
&lt;br/&gt;
Notons qu'il est possible de se passer de la dépendance '''randomize-lines''' (et même de bash) en utilisant ces quelques lignes de code toujours dans notre fichier de configuration du shell (merci à [[Utilisateur:MisterFreez|MisterFreez]] pour m'avoir épuré le code de cette idée) :
 NBRE_COWS=$(ls -1 /usr/share/cowsay/cows/ | wc -l)
 COWS_RANDOM=$(expr $RANDOM % $NBRE_COWS + 1)
 COW_NAME=$(ls -1 /usr/share/cowsay/cows/ | awk -F\. -v COWS_RANDOM_AWK=$COWS_RANDOM 'NR == COWS_RANDOM_AWK {print $1}')
 cowsay -f $COW_NAME &quot;`fortune -s`&quot;

''si quelqu'un trouve une solution plus simple et sans dépendance je suis preneur''
&lt;br/&gt;
&lt;br/&gt;
[[Utilisateur:Spatule|Spatule]] 20 avril 2010 à 16:06 (UTC)
[[Catégorie:Divers]]</text>
      <sha1>98g3pxu4kce8t6yk004pbvurzxbk1e8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1440</id>
      <parentid>1439</parentid>
      <timestamp>2010-04-20T18:54:52Z</timestamp>
      <contributor>
        <username>Spatule</username>
        <id>47</id>
      </contributor>
      <text xml:space="preserve" bytes="2454">&lt;br/&gt;
&lt;u&gt;Pour ceux qui ne connaissent pas :&lt;/u&gt;
&lt;br/&gt;
'''cowsay''' est un petit programme qui affiche un dessin en ASCII d'un animal qui parle. A l'origine, cowsay n'affichait qu'une vache (d'ou son nom...), mais aujourd'hui il permet d'afficher plus ou moins ce que l'on veut grace à l'existence des fichiers *.cow
&lt;br/&gt;
'''fortunes''' quant à lui, est un générateur aléatoire de citations, proverbes, et autres geekeries du monde irc.
&lt;br/&gt;
Si on combine les deux, alors on se retrouve à chaque ouverture de shell avec un animal de son choix qui nous pond une citation de victor hugo, un proverbe persan, ou encore une remarque désobligeante accusant redhat de ne pas être un linux (ça c'est méchant... xD)
&lt;br/&gt;
[[Fichier:cowsay_fortune.png]]
&lt;br/&gt;
&lt;br/&gt;
&lt;u&gt;Voici comment faire :&lt;/u&gt;
 # aptitude install cowsay fortunes fortunes-fr
Retrouver la liste des &quot;cows&quot; dispo ici : /usr/share/cowsay/cows
&lt;br/&gt;
Ensuite, suivant votre shell (bash, ksh, csh, zsh, etc..) éditer son fichier de configuration (~/.bashrc, ~/.zshrc, etc...) et coller ces lignes à la fin du fichier :
 cow_name=dragon
 cowsay -f $cow_name &quot;`fortune -s`&quot;
Remplacer &quot;dragon&quot; par le nom que vous voulez (la listes des &quot;cows&quot; étant dans /usr/share/cowsay/cows)
&lt;br/&gt;
&lt;br/&gt;
&lt;u&gt;Encore plus fort :&lt;/u&gt;
&lt;br/&gt;
Votre &quot;cow&quot; toujours identique vous ennuie ? Envie que celui-ci change son déguisement à chaque ouverture de shell ? Alors remplacer la commande cowsay ci-dessus par celle-ci (un grand merci à Dunatotatos sur [http://forum.debian-fr.org le forum debian-fr])&lt;br/&gt;
 cowsay -f `ls /usr/share/cowsay/cows/ | rl | tail -n 1 | cut -d'.' -f1` &quot;`fortune -s`&quot;
''&lt;u&gt;'''Important :'''&lt;/u&gt; cette commande utilise l'exécutable '''''rl''''' qui dépend du paquet '''''randomize-lines''''', il est donc nécessaire de l'installer.''
&lt;br/&gt;
Notons qu'il est possible de se passer de la dépendance '''randomize-lines''' (et même de bash) en utilisant ces quelques lignes de code toujours dans notre fichier de configuration du shell (merci à [[Utilisateur:MisterFreez|MisterFreez]] pour m'avoir épuré le code de cette idée) :
 NBRE_COWS=$(ls -1 /usr/share/cowsay/cows/ | wc -l)
 COWS_RANDOM=$(expr $RANDOM % $NBRE_COWS + 1)
 COW_NAME=$(ls -1 /usr/share/cowsay/cows/ | awk -F\. -v COWS_RANDOM_AWK=$COWS_RANDOM 'NR == COWS_RANDOM_AWK {print $1}')
 cowsay -f $COW_NAME &quot;`fortune -s`&quot;

&lt;br/&gt;
&lt;br/&gt;
[[Utilisateur:Spatule|Spatule]] 20 avril 2010 à 16:06 (UTC)
[[Catégorie:Divers]]</text>
      <sha1>ci7isgawq7ydl3kjqb4xogouc1b4p9e</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1441</id>
      <parentid>1440</parentid>
      <timestamp>2010-04-21T07:11:28Z</timestamp>
      <contributor>
        <username>Spatule</username>
        <id>47</id>
      </contributor>
      <text xml:space="preserve" bytes="2542">&lt;br/&gt;
&lt;u&gt;Pour ceux qui ne connaissent pas :&lt;/u&gt;
&lt;br/&gt;
'''cowsay''' est un petit programme qui affiche un dessin en ASCII d'un animal qui parle. A l'origine, cowsay n'affichait qu'une vache (d'ou son nom...), mais aujourd'hui il permet d'afficher plus ou moins ce que l'on veut grace à l'existence des fichiers *.cow
&lt;br/&gt;
'''fortunes''' quant à lui, est un générateur aléatoire de citations, proverbes, et autres geekeries du monde irc.
&lt;br/&gt;
Si on combine les deux, alors on se retrouve à chaque ouverture de shell avec un animal de son choix qui nous pond une citation de victor hugo, un proverbe persan, ou encore une remarque désobligeante accusant redhat de ne pas être un linux (ça c'est méchant... xD)
&lt;br/&gt;
[[Fichier:cowsay_fortune.png]]
&lt;br/&gt;
&lt;br/&gt;
&lt;u&gt;Voici comment faire :&lt;/u&gt;
 # aptitude install cowsay fortunes fortunes-fr
Retrouver la liste des &quot;cows&quot; dispo ici : /usr/share/cowsay/cows
&lt;br/&gt;
Ensuite, suivant votre shell (bash, ksh, csh, zsh, etc..) éditer son fichier de configuration (~/.bashrc, ~/.zshrc, etc...) et coller ces lignes à la fin du fichier :
 cow_name=dragon
 cowsay -f $cow_name &quot;`fortune -s`&quot;
Remplacer &quot;dragon&quot; par le nom que vous voulez (la listes des &quot;cows&quot; étant dans /usr/share/cowsay/cows)
&lt;br/&gt;
&lt;br/&gt;
&lt;u&gt;Encore plus fort :&lt;/u&gt;
&lt;br/&gt;
Votre &quot;cow&quot; toujours identique vous ennuie ? Envie que celui-ci change son déguisement à chaque ouverture de shell ? Alors remplacer la commande cowsay ci-dessus par celle-ci (un grand merci à Dunatotatos sur [http://forum.debian-fr.org le forum debian-fr])&lt;br/&gt;
 cowsay -f `ls /usr/share/cowsay/cows/ | rl | tail -n 1 | cut -d'.' -f1` &quot;`fortune -s`&quot;
''&lt;u&gt;'''Important :'''&lt;/u&gt; cette commande utilise l'exécutable '''''rl''''' qui dépend du paquet '''''randomize-lines''''', il est donc nécessaire de l'installer.''
&lt;br/&gt;
&lt;br/&gt;
Notons qu'il est possible de se passer de la dépendance '''randomize-lines''' en utilisant ces quelques lignes de code toujours dans notre fichier de configuration du shell (merci à [[Utilisateur:MisterFreez|MisterFreez]] pour m'avoir épuré le code de cette idée)
&lt;br/&gt;
Cependant '''attention''', ce qui suit n'est pas compatible avec ''csh'', ''ksh'', et ''tcsh'' :
 NBRE_COWS=$(ls -1 /usr/share/cowsay/cows/ | wc -l)
 COWS_RANDOM=$(expr $RANDOM % $NBRE_COWS + 1)
 COW_NAME=$(ls -1 /usr/share/cowsay/cows/ | awk -F\. -v COWS_RANDOM_AWK=$COWS_RANDOM 'NR == COWS_RANDOM_AWK {print $1}')
 cowsay -f $COW_NAME &quot;`fortune -s`&quot;

&lt;br/&gt;
&lt;br/&gt;
[[Utilisateur:Spatule|Spatule]] 20 avril 2010 à 16:06 (UTC)
[[Catégorie:Divers]]</text>
      <sha1>dx3c28e5rsrzmd357v32ylfeztr7muq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2203</id>
      <parentid>1441</parentid>
      <timestamp>2010-10-11T17:22:15Z</timestamp>
      <contributor>
        <username>Glorf</username>
        <id>70</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2899">&lt;br/&gt;
&lt;u&gt;Pour ceux qui ne connaissent pas :&lt;/u&gt;
&lt;br/&gt;
'''cowsay''' est un petit programme qui affiche un dessin en ASCII d'un animal qui parle. A l'origine, cowsay n'affichait qu'une vache (d'ou son nom...), mais aujourd'hui il permet d'afficher plus ou moins ce que l'on veut grace à l'existence des fichiers *.cow
&lt;br/&gt;
'''fortunes''' quant à lui, est un générateur aléatoire de citations, proverbes, et autres geekeries du monde irc.
&lt;br/&gt;
Si on combine les deux, alors on se retrouve à chaque ouverture de shell avec un animal de son choix qui nous pond une citation de victor hugo, un proverbe persan, ou encore une remarque désobligeante accusant redhat de ne pas être un linux (ça c'est méchant... xD)
&lt;br/&gt;
[[Fichier:cowsay_fortune.png]]
&lt;br/&gt;
&lt;br/&gt;
&lt;u&gt;Voici comment faire :&lt;/u&gt;
 # aptitude install cowsay fortunes fortunes-fr
Retrouver la liste des &quot;cows&quot; dispo ici : /usr/share/cowsay/cows
&lt;br/&gt;
Ensuite, suivant votre shell (bash, ksh, csh, zsh, etc..) éditer son fichier de configuration (~/.bashrc, ~/.zshrc, etc...) et coller ces lignes à la fin du fichier :
 cow_name=dragon
 cowsay -f $cow_name &quot;`fortune -s`&quot;
Remplacer &quot;dragon&quot; par le nom que vous voulez (la listes des &quot;cows&quot; étant dans /usr/share/cowsay/cows)
&lt;br/&gt;
&lt;br/&gt;
&lt;u&gt;Encore plus fort :&lt;/u&gt;
&lt;br/&gt;
Votre &quot;cow&quot; toujours identique vous ennuie ? Envie que celui-ci change son déguisement à chaque ouverture de shell ? Alors remplacer la commande cowsay ci-dessus par celle-ci (un grand merci à Dunatotatos sur [http://forum.debian-fr.org le forum debian-fr])&lt;br/&gt;
 cowsay -f `ls /usr/share/cowsay/cows/ | rl | tail -n 1 | cut -d'.' -f1` &quot;`fortune -s`&quot;
''&lt;u&gt;'''Important :'''&lt;/u&gt; cette commande utilise l'exécutable '''''rl''''' qui dépend du paquet '''''randomize-lines''''', il est donc nécessaire de l'installer.''&lt;br/&gt;
''&lt;u&gt;'''Important :'''&lt;/u&gt;  l'exécutable '''''rl''''' qui dépend du paquet '''''randomize-lines''''', indique sur sa description qu'il devrait être considéré comme obsolète, et qu'il faut utiliser shuf. On peut donc utiliser la commande suivante à la place : ''&lt;br/&gt;
 cowsay -f `ls /usr/share/cowsay/cows |shuf -n1|cut -d'.' -f1` &quot;`fortune -s`&quot;
&lt;br/&gt;
&lt;br/&gt;
Notons qu'il est possible de se passer de la dépendance '''randomize-lines''' en utilisant ces quelques lignes de code toujours dans notre fichier de configuration du shell (merci à [[Utilisateur:MisterFreez|MisterFreez]] pour m'avoir épuré le code de cette idée)
&lt;br/&gt;
Cependant '''attention''', ce qui suit n'est pas compatible avec ''csh'', ''ksh'', et ''tcsh'' :
 NBRE_COWS=$(ls -1 /usr/share/cowsay/cows/ | wc -l)
 COWS_RANDOM=$(expr $RANDOM % $NBRE_COWS + 1)
 COW_NAME=$(ls -1 /usr/share/cowsay/cows/ | awk -F\. -v COWS_RANDOM_AWK=$COWS_RANDOM 'NR == COWS_RANDOM_AWK {print $1}')
 cowsay -f $COW_NAME &quot;`fortune -s`&quot;

&lt;br/&gt;
&lt;br/&gt;
[[Utilisateur:Spatule|Spatule]] 20 avril 2010 à 16:06 (UTC)
[[Catégorie:Divers]]</text>
      <sha1>okg5htg7h41ce9oca365jwsckcyo4b2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2205</id>
      <parentid>2203</parentid>
      <timestamp>2010-10-12T08:08:18Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2975">&lt;br/&gt;
&lt;u&gt;Pour ceux qui ne connaissent pas :&lt;/u&gt;
&lt;br/&gt;
'''cowsay''' est un petit programme qui affiche un dessin en ASCII d'un animal qui parle. A l'origine, cowsay n'affichait qu'une vache (d'ou son nom...), mais aujourd'hui il permet d'afficher plus ou moins ce que l'on veut grace à l'existence des fichiers *.cow
&lt;br/&gt;
'''fortunes''' quant à lui, est un générateur aléatoire de citations, proverbes, et autres geekeries du monde irc.
&lt;br/&gt;
Si on combine les deux, alors on se retrouve à chaque ouverture de shell avec un animal de son choix qui nous pond une citation de victor hugo, un proverbe persan, ou encore une remarque désobligeante accusant redhat de ne pas être un linux (ça c'est méchant... xD)
&lt;br/&gt;
[[Fichier:cowsay_fortune.png]]
&lt;br/&gt;
&lt;br/&gt;
&lt;u&gt;Voici comment faire :&lt;/u&gt;
 # aptitude install cowsay fortunes fortunes-fr
Retrouver la liste des &quot;cows&quot; dispo ici : /usr/share/cowsay/cows
&lt;br/&gt;
Ensuite, suivant votre shell (bash, ksh, csh, zsh, etc..) éditer son fichier de configuration (~/.bashrc, ~/.zshrc, etc...) et coller ces lignes à la fin du fichier :
 cow_name=dragon
 cowsay -f $cow_name &quot;`fortune -s`&quot;
Remplacer &quot;dragon&quot; par le nom que vous voulez (la listes des &quot;cows&quot; étant dans /usr/share/cowsay/cows)
&lt;br/&gt;
&lt;br/&gt;
&lt;u&gt;Encore plus fort :&lt;/u&gt;
&lt;br/&gt;
Votre &quot;cow&quot; toujours identique vous ennuie ? Envie que celui-ci change son déguisement à chaque ouverture de shell ? Alors remplacer l'''linuxlogo''' en moins drôle.
&lt;br/&gt;a commande cowsay ci-dessus par celle-ci (un grand merci à Dunatotatos sur [http://forum.debian-fr.org le forum debian-fr])&lt;br/&gt;
 cowsay -f `ls /usr/share/cowsay/cows/ | rl | tail -n 1 | cut -d'.' -f1` &quot;`fortune -s`&quot;
''&lt;u&gt;'''Important :'''&lt;/u&gt; cette commande utilise l'exécutable '''''rl''''' qui dépend du paquet '''''randomize-lines''''', il est donc nécessaire de l'installer.''&lt;br/&gt;
''&lt;u&gt;'''Important :'''&lt;/u&gt;  l'exécutable '''''rl''''' qui dépend du paquet '''''randomize-lines''''', indique sur sa description qu'il devrait être considéré comme obsolète, et qu'il faut utiliser shuf. On peut donc utiliser la commande suivante à la place : ''&lt;br/&gt;
 cowsay -f `ls /usr/share/cowsay/cows |shuf -n1|cut -d'.' -f1` &quot;`fortune -s`&quot;
&lt;br/&gt;
&lt;br/&gt;
Notons qu'il est possible de se passer de la dépendance '''randomize-lines''' en utilisant ces quelques lignes de code toujours dans notre fichier de configuration du shell (merci à [[Utilisateur:MisterFreez|MisterFreez]] pour m'avoir épuré le code de cette idée)
&lt;br/&gt;
Cependant '''attention''', ce qui suit n'est pas compatible avec ''csh'', ''ksh'', et ''tcsh'' :
 NBRE_COWS=$(ls -1 /usr/share/cowsay/cows/ | wc -l)
 COWS_RANDOM=$(expr $RANDOM % $NBRE_COWS + 1)
 COW_NAME=$(ls -1 /usr/share/cowsay/cows/ | awk -F\. -v COWS_RANDOM_AWK=$COWS_RANDOM 'NR == COWS_RANDOM_AWK {print $1}')
 cowsay -f $COW_NAME &quot;`fortune -s`&quot;

&lt;br/&gt;
&lt;br/&gt;'''linuxlogo''' en moins drôle.
&lt;br/&gt;
[[Utilisateur:Spatule|Spatule]] 20 avril 2010 à 16:06 (UTC)
[[Catégorie:Divers]]</text>
      <sha1>i7d8fdreyg4d8coymp80dqe30va03je</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2206</id>
      <parentid>2205</parentid>
      <timestamp>2010-10-12T12:46:54Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Annulation des modifications 2205 de [[Special:Contributions/Ggoodluck47|Ggoodluck47]] ([[User talk:Ggoodluck47|discussion]])</comment>
      <text xml:space="preserve" bytes="2899">&lt;br/&gt;
&lt;u&gt;Pour ceux qui ne connaissent pas :&lt;/u&gt;
&lt;br/&gt;
'''cowsay''' est un petit programme qui affiche un dessin en ASCII d'un animal qui parle. A l'origine, cowsay n'affichait qu'une vache (d'ou son nom...), mais aujourd'hui il permet d'afficher plus ou moins ce que l'on veut grace à l'existence des fichiers *.cow
&lt;br/&gt;
'''fortunes''' quant à lui, est un générateur aléatoire de citations, proverbes, et autres geekeries du monde irc.
&lt;br/&gt;
Si on combine les deux, alors on se retrouve à chaque ouverture de shell avec un animal de son choix qui nous pond une citation de victor hugo, un proverbe persan, ou encore une remarque désobligeante accusant redhat de ne pas être un linux (ça c'est méchant... xD)
&lt;br/&gt;
[[Fichier:cowsay_fortune.png]]
&lt;br/&gt;
&lt;br/&gt;
&lt;u&gt;Voici comment faire :&lt;/u&gt;
 # aptitude install cowsay fortunes fortunes-fr
Retrouver la liste des &quot;cows&quot; dispo ici : /usr/share/cowsay/cows
&lt;br/&gt;
Ensuite, suivant votre shell (bash, ksh, csh, zsh, etc..) éditer son fichier de configuration (~/.bashrc, ~/.zshrc, etc...) et coller ces lignes à la fin du fichier :
 cow_name=dragon
 cowsay -f $cow_name &quot;`fortune -s`&quot;
Remplacer &quot;dragon&quot; par le nom que vous voulez (la listes des &quot;cows&quot; étant dans /usr/share/cowsay/cows)
&lt;br/&gt;
&lt;br/&gt;
&lt;u&gt;Encore plus fort :&lt;/u&gt;
&lt;br/&gt;
Votre &quot;cow&quot; toujours identique vous ennuie ? Envie que celui-ci change son déguisement à chaque ouverture de shell ? Alors remplacer la commande cowsay ci-dessus par celle-ci (un grand merci à Dunatotatos sur [http://forum.debian-fr.org le forum debian-fr])&lt;br/&gt;
 cowsay -f `ls /usr/share/cowsay/cows/ | rl | tail -n 1 | cut -d'.' -f1` &quot;`fortune -s`&quot;
''&lt;u&gt;'''Important :'''&lt;/u&gt; cette commande utilise l'exécutable '''''rl''''' qui dépend du paquet '''''randomize-lines''''', il est donc nécessaire de l'installer.''&lt;br/&gt;
''&lt;u&gt;'''Important :'''&lt;/u&gt;  l'exécutable '''''rl''''' qui dépend du paquet '''''randomize-lines''''', indique sur sa description qu'il devrait être considéré comme obsolète, et qu'il faut utiliser shuf. On peut donc utiliser la commande suivante à la place : ''&lt;br/&gt;
 cowsay -f `ls /usr/share/cowsay/cows |shuf -n1|cut -d'.' -f1` &quot;`fortune -s`&quot;
&lt;br/&gt;
&lt;br/&gt;
Notons qu'il est possible de se passer de la dépendance '''randomize-lines''' en utilisant ces quelques lignes de code toujours dans notre fichier de configuration du shell (merci à [[Utilisateur:MisterFreez|MisterFreez]] pour m'avoir épuré le code de cette idée)
&lt;br/&gt;
Cependant '''attention''', ce qui suit n'est pas compatible avec ''csh'', ''ksh'', et ''tcsh'' :
 NBRE_COWS=$(ls -1 /usr/share/cowsay/cows/ | wc -l)
 COWS_RANDOM=$(expr $RANDOM % $NBRE_COWS + 1)
 COW_NAME=$(ls -1 /usr/share/cowsay/cows/ | awk -F\. -v COWS_RANDOM_AWK=$COWS_RANDOM 'NR == COWS_RANDOM_AWK {print $1}')
 cowsay -f $COW_NAME &quot;`fortune -s`&quot;

&lt;br/&gt;
&lt;br/&gt;
[[Utilisateur:Spatule|Spatule]] 20 avril 2010 à 16:06 (UTC)
[[Catégorie:Divers]]</text>
      <sha1>okg5htg7h41ce9oca365jwsckcyo4b2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2259</id>
      <parentid>2206</parentid>
      <timestamp>2010-11-10T14:33:07Z</timestamp>
      <contributor>
        <username>Arthur</username>
        <id>53</id>
      </contributor>
      <text xml:space="preserve" bytes="3203">&lt;br/&gt;
&lt;u&gt;Pour ceux qui ne connaissent pas :&lt;/u&gt;
&lt;br/&gt;
'''cowsay''' est un petit programme qui affiche un dessin en ASCII d'un animal qui parle. A l'origine, cowsay n'affichait qu'une vache (d'ou son nom...), mais aujourd'hui il permet d'afficher plus ou moins ce que l'on veut grace à l'existence des fichiers *.cow
&lt;br/&gt;
'''fortunes''' quant à lui, est un générateur aléatoire de citations, proverbes, et autres geekeries du monde irc.
&lt;br/&gt;
Si on combine les deux, alors on se retrouve à chaque ouverture de shell avec un animal de son choix qui nous pond une citation de victor hugo, un proverbe persan, ou encore une remarque désobligeante accusant redhat de ne pas être un linux (ça c'est méchant... xD)
&lt;br/&gt;
[[Fichier:cowsay_fortune.png]]
&lt;br/&gt;
&lt;br/&gt;
&lt;u&gt;Voici comment faire :&lt;/u&gt;
 # aptitude install cowsay fortunes fortunes-fr
Retrouver la liste des &quot;cows&quot; dispo ici : /usr/share/cowsay/cows
&lt;br/&gt;
Ensuite, suivant votre shell (bash, ksh, csh, zsh, etc..) éditer son fichier de configuration (~/.bashrc, ~/.zshrc, etc...) et coller ces lignes à la fin du fichier :
 cow_name=dragon
 cowsay -f $cow_name &quot;`fortune -s`&quot;
Remplacer &quot;dragon&quot; par le nom que vous voulez (la listes des &quot;cows&quot; étant dans /usr/share/cowsay/cows)
&lt;br/&gt;
&lt;br/&gt;
&lt;u&gt;Encore plus fort :&lt;/u&gt;
&lt;br/&gt;
Votre &quot;cow&quot; toujours identique vous ennuie ? Envie que celui-ci change son déguisement à chaque ouverture de shell ? Alors remplacer la commande cowsay ci-dessus par celle-ci (un grand merci à Dunatotatos sur [http://forum.debian-fr.org le forum debian-fr])&lt;br/&gt;
 cowsay -f `ls /usr/share/cowsay/cows/ | rl | tail -n 1 | cut -d'.' -f1` &quot;`fortune -s`&quot;
''&lt;u&gt;'''Important :'''&lt;/u&gt; cette commande utilise l'exécutable '''''rl''''' qui dépend du paquet '''''randomize-lines''''', il est donc nécessaire de l'installer.''&lt;br/&gt;
''&lt;u&gt;'''Important :'''&lt;/u&gt;  l'exécutable '''''rl''''' qui dépend du paquet '''''randomize-lines''''', indique sur sa description qu'il devrait être considéré comme obsolète, et qu'il faut utiliser shuf. On peut donc utiliser la commande suivante à la place : ''&lt;br/&gt;
 cowsay -f `ls /usr/share/cowsay/cows |shuf -n1|cut -d'.' -f1` &quot;`fortune -s`&quot;
&lt;br/&gt;
&lt;br/&gt;
Notons qu'il est possible de se passer de la dépendance '''randomize-lines''' en utilisant ces quelques lignes de code toujours dans notre fichier de configuration du shell (merci à [[Utilisateur:MisterFreez|MisterFreez]] pour m'avoir épuré le code de cette idée)
&lt;br/&gt;
Cependant '''attention''', ce qui suit n'est pas compatible avec ''csh'', ''ksh'', et ''tcsh'' :
 NBRE_COWS=$(ls -1 /usr/share/cowsay/cows/ | wc -l)
 COWS_RANDOM=$(expr $RANDOM % $NBRE_COWS + 1)
 COW_NAME=$(ls -1 /usr/share/cowsay/cows/ | awk -F\. -v COWS_RANDOM_AWK=$COWS_RANDOM 'NR == COWS_RANDOM_AWK {print $1}')
 cowsay -f $COW_NAME &quot;`fortune -s`&quot;

&lt;br/&gt;
&lt;br/&gt;
[[Utilisateur:Spatule|Spatule]] 20 avril 2010 à 16:06 (UTC)
&lt;br/&gt;
&lt;br/&gt;
&lt;u&gt;Rsync, ssh &amp; les fortunes à la connexion :&lt;/u&gt;
&lt;br/&gt;
Attention : Si vous paramétrez votre invite de commande pour qu'une fortune s'affiche à la connexion (ou d'ailleurs avec un message d'accueil trop fourni), rsync ne reconnaitra pas le type de shell et vous renverra une erreur.
&lt;/br&gt;
[[Catégorie:Divers]]</text>
      <sha1>gyts4vull17mam1r6q69o6geqs8vc4r</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2260</id>
      <parentid>2259</parentid>
      <timestamp>2010-11-10T14:33:48Z</timestamp>
      <contributor>
        <username>Arthur</username>
        <id>53</id>
      </contributor>
      <minor/>
      <comment>Ajour de l'avertissement rsync</comment>
      <text xml:space="preserve" bytes="3198">&lt;br/&gt;
&lt;u&gt;Pour ceux qui ne connaissent pas :&lt;/u&gt;
&lt;br/&gt;
'''cowsay''' est un petit programme qui affiche un dessin en ASCII d'un animal qui parle. A l'origine, cowsay n'affichait qu'une vache (d'ou son nom...), mais aujourd'hui il permet d'afficher plus ou moins ce que l'on veut grace à l'existence des fichiers *.cow
&lt;br/&gt;
'''fortunes''' quant à lui, est un générateur aléatoire de citations, proverbes, et autres geekeries du monde irc.
&lt;br/&gt;
Si on combine les deux, alors on se retrouve à chaque ouverture de shell avec un animal de son choix qui nous pond une citation de victor hugo, un proverbe persan, ou encore une remarque désobligeante accusant redhat de ne pas être un linux (ça c'est méchant... xD)
&lt;br/&gt;
[[Fichier:cowsay_fortune.png]]
&lt;br/&gt;
&lt;br/&gt;
&lt;u&gt;Voici comment faire :&lt;/u&gt;
 # aptitude install cowsay fortunes fortunes-fr
Retrouver la liste des &quot;cows&quot; dispo ici : /usr/share/cowsay/cows
&lt;br/&gt;
Ensuite, suivant votre shell (bash, ksh, csh, zsh, etc..) éditer son fichier de configuration (~/.bashrc, ~/.zshrc, etc...) et coller ces lignes à la fin du fichier :
 cow_name=dragon
 cowsay -f $cow_name &quot;`fortune -s`&quot;
Remplacer &quot;dragon&quot; par le nom que vous voulez (la listes des &quot;cows&quot; étant dans /usr/share/cowsay/cows)
&lt;br/&gt;
&lt;br/&gt;
&lt;u&gt;Encore plus fort :&lt;/u&gt;
&lt;br/&gt;
Votre &quot;cow&quot; toujours identique vous ennuie ? Envie que celui-ci change son déguisement à chaque ouverture de shell ? Alors remplacer la commande cowsay ci-dessus par celle-ci (un grand merci à Dunatotatos sur [http://forum.debian-fr.org le forum debian-fr])&lt;br/&gt;
 cowsay -f `ls /usr/share/cowsay/cows/ | rl | tail -n 1 | cut -d'.' -f1` &quot;`fortune -s`&quot;
''&lt;u&gt;'''Important :'''&lt;/u&gt; cette commande utilise l'exécutable '''''rl''''' qui dépend du paquet '''''randomize-lines''''', il est donc nécessaire de l'installer.''&lt;br/&gt;
''&lt;u&gt;'''Important :'''&lt;/u&gt;  l'exécutable '''''rl''''' qui dépend du paquet '''''randomize-lines''''', indique sur sa description qu'il devrait être considéré comme obsolète, et qu'il faut utiliser shuf. On peut donc utiliser la commande suivante à la place : ''&lt;br/&gt;
 cowsay -f `ls /usr/share/cowsay/cows |shuf -n1|cut -d'.' -f1` &quot;`fortune -s`&quot;
&lt;br/&gt;
&lt;br/&gt;
Notons qu'il est possible de se passer de la dépendance '''randomize-lines''' en utilisant ces quelques lignes de code toujours dans notre fichier de configuration du shell (merci à [[Utilisateur:MisterFreez|MisterFreez]] pour m'avoir épuré le code de cette idée)
&lt;br/&gt;
Cependant '''attention''', ce qui suit n'est pas compatible avec ''csh'', ''ksh'', et ''tcsh'' :
 NBRE_COWS=$(ls -1 /usr/share/cowsay/cows/ | wc -l)
 COWS_RANDOM=$(expr $RANDOM % $NBRE_COWS + 1)
 COW_NAME=$(ls -1 /usr/share/cowsay/cows/ | awk -F\. -v COWS_RANDOM_AWK=$COWS_RANDOM 'NR == COWS_RANDOM_AWK {print $1}')
 cowsay -f $COW_NAME &quot;`fortune -s`&quot;

&lt;br/&gt;
&lt;br/&gt;
[[Utilisateur:Spatule|Spatule]] 20 avril 2010 à 16:06 (UTC)
&lt;br/&gt;
&lt;br/&gt;
&lt;u&gt;Rsync, ssh &amp; les fortunes à la connexion :&lt;/u&gt;
&lt;br/&gt;
Attention : Si vous paramétrez votre invite de commande pour qu'une fortune s'affiche à la connexion (ou d'ailleurs avec un message d'accueil trop fourni), rsync ne reconnaitra pas le type de shell et vous renverra une erreur.

[[Catégorie:Divers]]</text>
      <sha1>1z5wp2j2a5d5r1cm73jwe7fwl0m40ri</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2261</id>
      <parentid>2260</parentid>
      <timestamp>2010-11-10T14:43:27Z</timestamp>
      <contributor>
        <username>Arthur</username>
        <id>53</id>
      </contributor>
      <text xml:space="preserve" bytes="3358">&lt;br/&gt;
&lt;u&gt;Pour ceux qui ne connaissent pas :&lt;/u&gt;
&lt;br/&gt;
'''cowsay''' est un petit programme qui affiche un dessin en ASCII d'un animal qui parle. A l'origine, cowsay n'affichait qu'une vache (d'ou son nom...), mais aujourd'hui il permet d'afficher plus ou moins ce que l'on veut grace à l'existence des fichiers *.cow
&lt;br/&gt;
'''fortunes''' quant à lui, est un générateur aléatoire de citations, proverbes, et autres geekeries du monde irc.
&lt;br/&gt;
Si on combine les deux, alors on se retrouve à chaque ouverture de shell avec un animal de son choix qui nous pond une citation de victor hugo, un proverbe persan, ou encore une remarque désobligeante accusant redhat de ne pas être un linux (ça c'est méchant... xD)
&lt;br/&gt;
[[Fichier:cowsay_fortune.png]]
&lt;br/&gt;
&lt;br/&gt;
&lt;u&gt;Voici comment faire :&lt;/u&gt;
 # aptitude install cowsay fortunes fortunes-fr
Retrouver la liste des &quot;cows&quot; dispo ici : /usr/share/cowsay/cows
&lt;br/&gt;
Ensuite, suivant votre shell (bash, ksh, csh, zsh, etc..) éditer son fichier de configuration (~/.bashrc, ~/.zshrc, etc...) et coller ces lignes à la fin du fichier :
 cow_name=dragon
 cowsay -f $cow_name &quot;`fortune -s`&quot;
Remplacer &quot;dragon&quot; par le nom que vous voulez (la listes des &quot;cows&quot; étant dans /usr/share/cowsay/cows)
&lt;br/&gt;
&lt;br/&gt;
&lt;u&gt;Encore plus fort :&lt;/u&gt;
&lt;br/&gt;
Votre &quot;cow&quot; toujours identique vous ennuie ? Envie que celui-ci change son déguisement à chaque ouverture de shell ? Alors remplacer la commande cowsay ci-dessus par celle-ci (un grand merci à Dunatotatos sur [http://forum.debian-fr.org le forum debian-fr])&lt;br/&gt;
 cowsay -f `ls /usr/share/cowsay/cows/ | rl | tail -n 1 | cut -d'.' -f1` &quot;`fortune -s`&quot;
''&lt;u&gt;'''Important :'''&lt;/u&gt; cette commande utilise l'exécutable '''''rl''''' qui dépend du paquet '''''randomize-lines''''', il est donc nécessaire de l'installer.''&lt;br/&gt;
''&lt;u&gt;'''Important :'''&lt;/u&gt;  l'exécutable '''''rl''''' qui dépend du paquet '''''randomize-lines''''', indique sur sa description qu'il devrait être considéré comme obsolète, et qu'il faut utiliser shuf. On peut donc utiliser la commande suivante à la place : ''&lt;br/&gt;
 cowsay -f `ls /usr/share/cowsay/cows |shuf -n1|cut -d'.' -f1` &quot;`fortune -s`&quot;
&lt;br/&gt;
&lt;br/&gt;
Notons qu'il est possible de se passer de la dépendance '''randomize-lines''' en utilisant ces quelques lignes de code toujours dans notre fichier de configuration du shell (merci à [[Utilisateur:MisterFreez|MisterFreez]] pour m'avoir épuré le code de cette idée)
&lt;br/&gt;
Cependant '''attention''', ce qui suit n'est pas compatible avec ''csh'', ''ksh'', et ''tcsh'' :
 NBRE_COWS=$(ls -1 /usr/share/cowsay/cows/ | wc -l)
 COWS_RANDOM=$(expr $RANDOM % $NBRE_COWS + 1)
 COW_NAME=$(ls -1 /usr/share/cowsay/cows/ | awk -F\. -v COWS_RANDOM_AWK=$COWS_RANDOM 'NR == COWS_RANDOM_AWK {print $1}')
 cowsay -f $COW_NAME &quot;`fortune -s`&quot;

&lt;br/&gt;
&lt;br/&gt;
[[Utilisateur:Spatule|Spatule]] 20 avril 2010 à 16:06 (UTC)
&lt;br/&gt;
&lt;br/&gt;
&lt;u&gt;Rsync, ssh &amp; les fortunes à la connexion :&lt;/u&gt;
&lt;br/&gt;
Attention : Si vous paramétrez votre invite de commande pour qu'une fortune s'affiche à la connexion (ou d'ailleurs avec un message d'accueil trop fourni), rsync ne reconnaitra pas le type de shell et vous renverra une erreur :
 protocol version mismatch - is your shell clean?
 (see the rsync man page for an explanation)
 rsync error: protocol incompatibility (code 2) at compat.c(69)

[[Catégorie:Divers]]</text>
      <sha1>n5df1l02fsm7qwoc72mdbt3gxbc8g7e</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2316</id>
      <parentid>2261</parentid>
      <timestamp>2010-11-19T20:42:23Z</timestamp>
      <contributor>
        <username>Arthur</username>
        <id>53</id>
      </contributor>
      <text xml:space="preserve" bytes="4041">&lt;br/&gt;
&lt;u&gt;Pour ceux qui ne connaissent pas :&lt;/u&gt;
&lt;br/&gt;
'''cowsay''' est un petit programme qui affiche un dessin en ASCII d'un animal qui parle. A l'origine, cowsay n'affichait qu'une vache (d'ou son nom...), mais aujourd'hui il permet d'afficher plus ou moins ce que l'on veut grace à l'existence des fichiers *.cow
&lt;br/&gt;
'''fortunes''' quant à lui, est un générateur aléatoire de citations, proverbes, et autres geekeries du monde irc.
&lt;br/&gt;
Si on combine les deux, alors on se retrouve à chaque ouverture de shell avec un animal de son choix qui nous pond une citation de victor hugo, un proverbe persan, ou encore une remarque désobligeante accusant redhat de ne pas être un linux (ça c'est méchant... xD)
&lt;br/&gt;
[[Fichier:cowsay_fortune.png]]
&lt;br/&gt;
&lt;br/&gt;
&lt;u&gt;Voici comment faire :&lt;/u&gt;
 # aptitude install cowsay fortunes fortunes-fr
Retrouver la liste des &quot;cows&quot; dispo ici : /usr/share/cowsay/cows
&lt;br/&gt;
Ensuite, suivant votre shell (bash, ksh, csh, zsh, etc..) éditer son fichier de configuration (~/.bashrc, ~/.zshrc, etc...) et coller ces lignes à la fin du fichier :
 cow_name=dragon
 cowsay -f $cow_name &quot;`fortune -s`&quot;
Remplacer &quot;dragon&quot; par le nom que vous voulez (la listes des &quot;cows&quot; étant dans /usr/share/cowsay/cows)
&lt;br/&gt;
&lt;br/&gt;
&lt;u&gt;Encore plus fort :&lt;/u&gt;
&lt;br/&gt;
Votre &quot;cow&quot; toujours identique vous ennuie ? Envie que celui-ci change son déguisement à chaque ouverture de shell ? Alors remplacer la commande cowsay ci-dessus par celle-ci (un grand merci à Dunatotatos sur [http://forum.debian-fr.org le forum debian-fr])&lt;br/&gt;
 cowsay -f `ls /usr/share/cowsay/cows/ | rl | tail -n 1 | cut -d'.' -f1` &quot;`fortune -s`&quot;
''&lt;u&gt;'''Important :'''&lt;/u&gt; cette commande utilise l'exécutable '''''rl''''' qui dépend du paquet '''''randomize-lines''''', il est donc nécessaire de l'installer.''&lt;br/&gt;
''&lt;u&gt;'''Important :'''&lt;/u&gt;  l'exécutable '''''rl''''' qui dépend du paquet '''''randomize-lines''''', indique sur sa description qu'il devrait être considéré comme obsolète, et qu'il faut utiliser shuf. On peut donc utiliser la commande suivante à la place : ''&lt;br/&gt;
 cowsay -f `ls /usr/share/cowsay/cows |shuf -n1|cut -d'.' -f1` &quot;`fortune -s`&quot;
&lt;br/&gt;
&lt;br/&gt;
Notons qu'il est possible de se passer de la dépendance '''randomize-lines''' en utilisant ces quelques lignes de code toujours dans notre fichier de configuration du shell (merci à [[Utilisateur:MisterFreez|MisterFreez]] pour m'avoir épuré le code de cette idée)
&lt;br/&gt;
Cependant '''attention''', ce qui suit n'est pas compatible avec ''csh'', ''ksh'', et ''tcsh'' :
 NBRE_COWS=$(ls -1 /usr/share/cowsay/cows/ | wc -l)
 COWS_RANDOM=$(expr $RANDOM % $NBRE_COWS + 1)
 COW_NAME=$(ls -1 /usr/share/cowsay/cows/ | awk -F\. -v COWS_RANDOM_AWK=$COWS_RANDOM 'NR == COWS_RANDOM_AWK {print $1}')
 cowsay -f $COW_NAME &quot;`fortune -s`&quot;

&lt;br/&gt;
&lt;br/&gt;
[[Utilisateur:Spatule|Spatule]] 20 avril 2010 à 16:06 (UTC)
&lt;br/&gt;
&lt;br/&gt;
&lt;u&gt;Rsync, ssh &amp; les fortunes à la connexion :&lt;/u&gt;
&lt;br/&gt;
Attention : Si vous paramétrez votre invite de commande pour qu'une fortune s'affiche à la connexion (ou d'ailleurs avec un message d'accueil trop fourni), rsync ne reconnaitra pas le type de shell et vous renverra une erreur :
 protocol version mismatch - is your shell clean?
 (see the rsync man page for an explanation)
 rsync error: protocol incompatibility (code 2) at compat.c(69)

Cela peut normalement être solutionné en ajoutant :
 [ -z &quot;PS1&quot; ] &amp;&amp; return
Au début du fichier .bashrc.

Cela empêche les interpréteurs de commandes non interactifs tels rsync d'exécuter le code suivant (merci à kna pour cette solution de contournement).

&lt;br/&gt;
&lt;br/&gt;
&lt;u&gt;Afficher une fortune sur votre site web avec php :&lt;/u&gt;
&lt;br/&gt;
Ajoutez le code suivant dans une page HTML :
 &lt;!-- PHP --&gt;
 putenv('LANG=fr_FR.UTF-8'); /* Afin d'éviter les problèmes d'interprétation de certains caractères spéciaux */
 exec(&quot;/usr/games/fortune fr | tr -d '\n'&quot;,$output); /* On lance fortune en français en supprimant les retours à la ligne */
 print_r($output[0]);
 &lt;!-- ENDPHP --&gt;

[[Catégorie:Divers]]</text>
      <sha1>g9a8sskqjnkaag3pr20uo790tskn2n3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Créer la page</title>
    <ns>0</ns>
    <id>125</id>
    <redirect title="Alias (raccourci)" />
    <revision>
      <id>574</id>
      <timestamp>2010-01-30T17:07:18Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <comment>a renommé [[Créer la page]] en [[Alias (raccourci)]]</comment>
      <text xml:space="preserve" bytes="34">#REDIRECTION [[Alias (raccourci)]]</text>
      <sha1>03i6sgz8tzovhspv4lcgvhuzk2xxcnl</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Créer un dépôt debian trivial</title>
    <ns>0</ns>
    <id>530</id>
    <revision>
      <id>2157</id>
      <timestamp>2010-09-30T15:44:28Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « &lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt; '''/!\''' Ce document n'a pas été validé par la communauté. Soyez ... »</comment>
      <text xml:space="preserve" bytes="4595">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


Document réalisé à partir du [http://www.debian-fr.org/mon-premier-referentiel-perso-t1863.html T&amp;A de Mattotop] et de [http://www.debian.org/doc/manuals/repository-howto/repository-howto.fr.html la doc Debian]

'''Créer un diférentiel Debian trivial'''

L'objectif, outre le fait de comprendre comment fonctionne un dépôt (un référentiel)... est de mettre à disposition vos paquets simplement, pour votre réseau ou sur le net...

== Introduction ==

Un dépôt (référentiel) est un ensemble de répertoires et fichiers qui permettent la mise à disposition simple de paquets Debian. Le dépôt est organisé selon une architecture précise, les paquets sont référencés dans des catalogues (fichiers Packages.gz et Sources.gz)

Ainsi, si le référentiel est correctement ajouté dans un fichier sources.list, la commande apt-get récupérera les catalogues. Les paquets du dépôts seront dés lors à disposition pour être installés.

Le fichier Packages.gz contient le nom, la version, la taille, une description courte et une longue, ainsi que les dépendances de chaque paquet (et des informations complémentaires).

Le fichier Sources.gz contient le nom, la version et les dépendances pour la compilation (les paquets nécessaires pour construire le paquet) de chaque paquet (et des informations complémentaires)

Si le référentiel a été correctement créé, vous pouvez obtenir les paquets pour chaque distribution et pour chaque architecture (actuellement onze) supportées ; apt récupérera automatiquement le bon paquet pour la machine de l'utilisateur, sans rien connaître des autres architectures. Il est aussi possible de grouper les paquets selon différents composants. Les paquets officiels Debian sont répartis en trois composants, main, non-free et contrib. Donc si votre paquet a été porté sur plusieurs architectures, vous apprécierez la souplesse des référentiels. 

== Installation des dépendances ==

 # apt-get install dpkg-dev

Nous supposons que vous avez un serveur Web installé et opérationnel. Cela permettra de mettre votre dépôt (référenteil) à disposition de votre lan, et pourquoi pas du net...

== Préparation des dossiers ==

Structure :
 (racine du référentiel)
 |
 |-binary
 +-source

 $ cd /var/www/
 $ sudo su www-data
 $ mkdir debian
 $ cd debian/
 ~/debian$ mkdir binary
 ~/debian$ mkdir source

== Remplissage du référentiel ==

Copiez &quot;vos&quot; deb perso dans /var/www/debian/binary, puis :

 ~/debian$ dpkg-scanpackages binary /dev/null | gzip -9c &gt; binary/Packages.gz
 
  ** Paquets dans l'archive mais pas dans le fichier d'override : **
   amaya google-chrome-beta googleearth gtkevemon icedove knoppix-
   customize kopete kopete-silc-plugin libtimedate-perl linux-kbuild-
   2.6.36 lmb notalweg nvidia-glx skype unetbootin virtualbox-3.1
 
 16 entrées écrites dans le fichier Packages.

== Test sur une machine distante ==

 # nano /etc/apt/sources.list.d/lol.list

 # Referenciel perso
 deb http://lol.isalo.org/debian binary/
 #deb-src http://lol.isalo.org/ sources/

 # apt-get update

Ça marche...

 apt-cache policy linux-kbuild-2.6.36
 linux-kbuild-2.6.36:
   Installé : 2.6.36-rc5~experimental.1
   Candidat : 2.6.36-rc5~experimental.1
  Table de version :
  *** 2.6.36-rc5~experimental.1 0
         500 http://lol.isalo.org/debian/ binary/ Packages
         100 /var/lib/dpkg/status

== Fichier preferences ==

Afin de ne pas être ennuyé avec les préférences, et donner une priorité plus basse à votre dépôt par rapport aux dépôts officiels, vous pouvez créer un fichier release (dans le répertoire /var/www/debian/binary)

 $ nano Release
 Archive: unstable
 Component: main, contrib, non-free
 Origin: lol@isalo.org
 Label: Repertoire de paquets persos
 Architecture: i386, amd64

Et le fichier /etc/apt/preferences des &quot;clients&quot; :

 Package: *
 Pin: origin lol.isalo.org
 Pin-Priority: 1

Qui nous donne bien :

 $ apt-cache policy
 
   1 http://lol.isalo.org/debian/ binary/ Packages
     release o=lol@isalo.org,l=Repertoire de paquets persos,c=main, contrib, non-free,b=i386, amd64
     origin lol.isalo.org</text>
      <sha1>mdpbdhw4u1c4cwiixuj8qdp1q56whsb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2171</id>
      <parentid>2157</parentid>
      <timestamp>2010-10-01T08:03:05Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Installation des dépendances */</comment>
      <text xml:space="preserve" bytes="4595">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


Document réalisé à partir du [http://www.debian-fr.org/mon-premier-referentiel-perso-t1863.html T&amp;A de Mattotop] et de [http://www.debian.org/doc/manuals/repository-howto/repository-howto.fr.html la doc Debian]

'''Créer un diférentiel Debian trivial'''

L'objectif, outre le fait de comprendre comment fonctionne un dépôt (un référentiel)... est de mettre à disposition vos paquets simplement, pour votre réseau ou sur le net...

== Introduction ==

Un dépôt (référentiel) est un ensemble de répertoires et fichiers qui permettent la mise à disposition simple de paquets Debian. Le dépôt est organisé selon une architecture précise, les paquets sont référencés dans des catalogues (fichiers Packages.gz et Sources.gz)

Ainsi, si le référentiel est correctement ajouté dans un fichier sources.list, la commande apt-get récupérera les catalogues. Les paquets du dépôts seront dés lors à disposition pour être installés.

Le fichier Packages.gz contient le nom, la version, la taille, une description courte et une longue, ainsi que les dépendances de chaque paquet (et des informations complémentaires).

Le fichier Sources.gz contient le nom, la version et les dépendances pour la compilation (les paquets nécessaires pour construire le paquet) de chaque paquet (et des informations complémentaires)

Si le référentiel a été correctement créé, vous pouvez obtenir les paquets pour chaque distribution et pour chaque architecture (actuellement onze) supportées ; apt récupérera automatiquement le bon paquet pour la machine de l'utilisateur, sans rien connaître des autres architectures. Il est aussi possible de grouper les paquets selon différents composants. Les paquets officiels Debian sont répartis en trois composants, main, non-free et contrib. Donc si votre paquet a été porté sur plusieurs architectures, vous apprécierez la souplesse des référentiels. 

== Installation des dépendances ==

 # apt-get install dpkg-dev

Nous supposons que vous avez un serveur Web installé et opérationnel. Cela permettra de mettre votre dépôt (référentiel) à disposition de votre lan, et pourquoi pas du net...

== Préparation des dossiers ==

Structure :
 (racine du référentiel)
 |
 |-binary
 +-source

 $ cd /var/www/
 $ sudo su www-data
 $ mkdir debian
 $ cd debian/
 ~/debian$ mkdir binary
 ~/debian$ mkdir source

== Remplissage du référentiel ==

Copiez &quot;vos&quot; deb perso dans /var/www/debian/binary, puis :

 ~/debian$ dpkg-scanpackages binary /dev/null | gzip -9c &gt; binary/Packages.gz
 
  ** Paquets dans l'archive mais pas dans le fichier d'override : **
   amaya google-chrome-beta googleearth gtkevemon icedove knoppix-
   customize kopete kopete-silc-plugin libtimedate-perl linux-kbuild-
   2.6.36 lmb notalweg nvidia-glx skype unetbootin virtualbox-3.1
 
 16 entrées écrites dans le fichier Packages.

== Test sur une machine distante ==

 # nano /etc/apt/sources.list.d/lol.list

 # Referenciel perso
 deb http://lol.isalo.org/debian binary/
 #deb-src http://lol.isalo.org/ sources/

 # apt-get update

Ça marche...

 apt-cache policy linux-kbuild-2.6.36
 linux-kbuild-2.6.36:
   Installé : 2.6.36-rc5~experimental.1
   Candidat : 2.6.36-rc5~experimental.1
  Table de version :
  *** 2.6.36-rc5~experimental.1 0
         500 http://lol.isalo.org/debian/ binary/ Packages
         100 /var/lib/dpkg/status

== Fichier preferences ==

Afin de ne pas être ennuyé avec les préférences, et donner une priorité plus basse à votre dépôt par rapport aux dépôts officiels, vous pouvez créer un fichier release (dans le répertoire /var/www/debian/binary)

 $ nano Release
 Archive: unstable
 Component: main, contrib, non-free
 Origin: lol@isalo.org
 Label: Repertoire de paquets persos
 Architecture: i386, amd64

Et le fichier /etc/apt/preferences des &quot;clients&quot; :

 Package: *
 Pin: origin lol.isalo.org
 Pin-Priority: 1

Qui nous donne bien :

 $ apt-cache policy
 
   1 http://lol.isalo.org/debian/ binary/ Packages
     release o=lol@isalo.org,l=Repertoire de paquets persos,c=main, contrib, non-free,b=i386, amd64
     origin lol.isalo.org</text>
      <sha1>09wnq2lpupkdzlm26utcc3v7lbjc3zc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2172</id>
      <parentid>2171</parentid>
      <timestamp>2010-10-01T08:58:34Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Installation des dépendances */</comment>
      <text xml:space="preserve" bytes="4603">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


Document réalisé à partir du [http://www.debian-fr.org/mon-premier-referentiel-perso-t1863.html T&amp;A de Mattotop] et de [http://www.debian.org/doc/manuals/repository-howto/repository-howto.fr.html la doc Debian]

'''Créer un diférentiel Debian trivial'''

L'objectif, outre le fait de comprendre comment fonctionne un dépôt (un référentiel)... est de mettre à disposition vos paquets simplement, pour votre réseau ou sur le net...

== Introduction ==

Un dépôt (référentiel) est un ensemble de répertoires et fichiers qui permettent la mise à disposition simple de paquets Debian. Le dépôt est organisé selon une architecture précise, les paquets sont référencés dans des catalogues (fichiers Packages.gz et Sources.gz)

Ainsi, si le référentiel est correctement ajouté dans un fichier sources.list, la commande apt-get récupérera les catalogues. Les paquets du dépôts seront dés lors à disposition pour être installés.

Le fichier Packages.gz contient le nom, la version, la taille, une description courte et une longue, ainsi que les dépendances de chaque paquet (et des informations complémentaires).

Le fichier Sources.gz contient le nom, la version et les dépendances pour la compilation (les paquets nécessaires pour construire le paquet) de chaque paquet (et des informations complémentaires)

Si le référentiel a été correctement créé, vous pouvez obtenir les paquets pour chaque distribution et pour chaque architecture (actuellement onze) supportées ; apt récupérera automatiquement le bon paquet pour la machine de l'utilisateur, sans rien connaître des autres architectures. Il est aussi possible de grouper les paquets selon différents composants. Les paquets officiels Debian sont répartis en trois composants, main, non-free et contrib. Donc si votre paquet a été porté sur plusieurs architectures, vous apprécierez la souplesse des référentiels. 

== Installation des dépendances ==

 # apt-get install dpkg-dev

Nous supposons que vous avez un serveur Web installé et opérationnel. Cela vous permettra de naviguer dans votre dépôt (référentiel), à partir de votre lan, et pourquoi pas du net...

== Préparation des dossiers ==

Structure :
 (racine du référentiel)
 |
 |-binary
 +-source

 $ cd /var/www/
 $ sudo su www-data
 $ mkdir debian
 $ cd debian/
 ~/debian$ mkdir binary
 ~/debian$ mkdir source

== Remplissage du référentiel ==

Copiez &quot;vos&quot; deb perso dans /var/www/debian/binary, puis :

 ~/debian$ dpkg-scanpackages binary /dev/null | gzip -9c &gt; binary/Packages.gz
 
  ** Paquets dans l'archive mais pas dans le fichier d'override : **
   amaya google-chrome-beta googleearth gtkevemon icedove knoppix-
   customize kopete kopete-silc-plugin libtimedate-perl linux-kbuild-
   2.6.36 lmb notalweg nvidia-glx skype unetbootin virtualbox-3.1
 
 16 entrées écrites dans le fichier Packages.

== Test sur une machine distante ==

 # nano /etc/apt/sources.list.d/lol.list

 # Referenciel perso
 deb http://lol.isalo.org/debian binary/
 #deb-src http://lol.isalo.org/ sources/

 # apt-get update

Ça marche...

 apt-cache policy linux-kbuild-2.6.36
 linux-kbuild-2.6.36:
   Installé : 2.6.36-rc5~experimental.1
   Candidat : 2.6.36-rc5~experimental.1
  Table de version :
  *** 2.6.36-rc5~experimental.1 0
         500 http://lol.isalo.org/debian/ binary/ Packages
         100 /var/lib/dpkg/status

== Fichier preferences ==

Afin de ne pas être ennuyé avec les préférences, et donner une priorité plus basse à votre dépôt par rapport aux dépôts officiels, vous pouvez créer un fichier release (dans le répertoire /var/www/debian/binary)

 $ nano Release
 Archive: unstable
 Component: main, contrib, non-free
 Origin: lol@isalo.org
 Label: Repertoire de paquets persos
 Architecture: i386, amd64

Et le fichier /etc/apt/preferences des &quot;clients&quot; :

 Package: *
 Pin: origin lol.isalo.org
 Pin-Priority: 1

Qui nous donne bien :

 $ apt-cache policy
 
   1 http://lol.isalo.org/debian/ binary/ Packages
     release o=lol@isalo.org,l=Repertoire de paquets persos,c=main, contrib, non-free,b=i386, amd64
     origin lol.isalo.org</text>
      <sha1>ojg7lok91ssykq0sa6i3jiborbmnql8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2181</id>
      <parentid>2172</parentid>
      <timestamp>2010-10-01T16:03:31Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="4628">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


Document réalisé à partir du [http://www.debian-fr.org/mon-premier-referentiel-perso-t1863.html T&amp;A de Mattotop] et de [http://www.debian.org/doc/manuals/repository-howto/repository-howto.fr.html la doc Debian]

'''Créer un diférentiel Debian trivial'''

L'objectif, outre le fait de comprendre comment fonctionne un dépôt (un référentiel)... est de mettre à disposition vos paquets simplement, pour votre réseau ou sur le net...

== Introduction ==

Un dépôt (référentiel) est un ensemble de répertoires et fichiers qui permettent la mise à disposition simple de paquets Debian. Le dépôt est organisé selon une architecture précise, les paquets sont référencés dans des catalogues (fichiers Packages.gz et Sources.gz)

Ainsi, si le référentiel est correctement ajouté dans un fichier sources.list, la commande apt-get récupérera les catalogues. Les paquets du dépôts seront dés lors à disposition pour être installés.

Le fichier Packages.gz contient le nom, la version, la taille, une description courte et une longue, ainsi que les dépendances de chaque paquet (et des informations complémentaires).

Le fichier Sources.gz contient le nom, la version et les dépendances pour la compilation (les paquets nécessaires pour construire le paquet) de chaque paquet (et des informations complémentaires)

Si le référentiel a été correctement créé, vous pouvez obtenir les paquets pour chaque distribution et pour chaque architecture (actuellement onze) supportées ; apt récupérera automatiquement le bon paquet pour la machine de l'utilisateur, sans rien connaître des autres architectures. Il est aussi possible de grouper les paquets selon différents composants. Les paquets officiels Debian sont répartis en trois composants, main, non-free et contrib. Donc si votre paquet a été porté sur plusieurs architectures, vous apprécierez la souplesse des référentiels. 

== Installation des dépendances ==

 # apt-get install dpkg-dev

Nous supposons que vous avez un serveur Web installé et opérationnel. Cela vous permettra de naviguer dans votre dépôt (référentiel), à partir de votre lan, et pourquoi pas du net...

== Préparation des dossiers ==

Structure :
 (racine du référentiel)
 |
 |-binary
 +-source

 $ cd /var/www/
 $ sudo su www-data
 $ mkdir debian
 $ cd debian/
 ~/debian$ mkdir binary
 ~/debian$ mkdir source

== Remplissage du référentiel ==

Copiez &quot;vos&quot; deb perso dans /var/www/debian/binary, puis :

 ~/debian$ dpkg-scanpackages binary /dev/null | gzip -9c &gt; binary/Packages.gz
 
  ** Paquets dans l'archive mais pas dans le fichier d'override : **
   amaya google-chrome-beta googleearth gtkevemon icedove knoppix-
   customize kopete kopete-silc-plugin libtimedate-perl linux-kbuild-
   2.6.36 lmb notalweg nvidia-glx skype unetbootin virtualbox-3.1
 
 16 entrées écrites dans le fichier Packages.

== Test sur une machine distante ==

 # nano /etc/apt/sources.list.d/lol.list

 # Referenciel perso
 deb http://lol.isalo.org/debian binary/
 #deb-src http://lol.isalo.org/ sources/

 # apt-get update

Ça marche...

 apt-cache policy linux-kbuild-2.6.36
 linux-kbuild-2.6.36:
   Installé : 2.6.36-rc5~experimental.1
   Candidat : 2.6.36-rc5~experimental.1
  Table de version :
  *** 2.6.36-rc5~experimental.1 0
         500 http://lol.isalo.org/debian/ binary/ Packages
         100 /var/lib/dpkg/status

== Fichier preferences ==

Afin de ne pas être ennuyé avec les préférences, et donner une priorité plus basse à votre dépôt par rapport aux dépôts officiels, vous pouvez créer un fichier release (dans le répertoire /var/www/debian/binary)

 $ nano Release
 Archive: unstable
 Component: main, contrib, non-free
 Origin: lol@isalo.org
 Label: Repertoire de paquets persos
 Architecture: i386, amd64

Et le fichier /etc/apt/preferences des &quot;clients&quot; :

 Package: *
 Pin: origin lol.isalo.org
 Pin-Priority: 1

Qui nous donne bien :

 $ apt-cache policy
 
   1 http://lol.isalo.org/debian/ binary/ Packages
     release o=lol@isalo.org,l=Repertoire de paquets persos,c=main, contrib, non-free,b=i386, amd64
     origin lol.isalo.org

[[Catégorie:Serveurs]]</text>
      <sha1>1orz2y5dxh5sb1utwcsttmrbazjcccp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2893</id>
      <parentid>2181</parentid>
      <timestamp>2011-04-13T12:44:15Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Préparation des dossiers */</comment>
      <text xml:space="preserve" bytes="4629">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


Document réalisé à partir du [http://www.debian-fr.org/mon-premier-referentiel-perso-t1863.html T&amp;A de Mattotop] et de [http://www.debian.org/doc/manuals/repository-howto/repository-howto.fr.html la doc Debian]

'''Créer un diférentiel Debian trivial'''

L'objectif, outre le fait de comprendre comment fonctionne un dépôt (un référentiel)... est de mettre à disposition vos paquets simplement, pour votre réseau ou sur le net...

== Introduction ==

Un dépôt (référentiel) est un ensemble de répertoires et fichiers qui permettent la mise à disposition simple de paquets Debian. Le dépôt est organisé selon une architecture précise, les paquets sont référencés dans des catalogues (fichiers Packages.gz et Sources.gz)

Ainsi, si le référentiel est correctement ajouté dans un fichier sources.list, la commande apt-get récupérera les catalogues. Les paquets du dépôts seront dés lors à disposition pour être installés.

Le fichier Packages.gz contient le nom, la version, la taille, une description courte et une longue, ainsi que les dépendances de chaque paquet (et des informations complémentaires).

Le fichier Sources.gz contient le nom, la version et les dépendances pour la compilation (les paquets nécessaires pour construire le paquet) de chaque paquet (et des informations complémentaires)

Si le référentiel a été correctement créé, vous pouvez obtenir les paquets pour chaque distribution et pour chaque architecture (actuellement onze) supportées ; apt récupérera automatiquement le bon paquet pour la machine de l'utilisateur, sans rien connaître des autres architectures. Il est aussi possible de grouper les paquets selon différents composants. Les paquets officiels Debian sont répartis en trois composants, main, non-free et contrib. Donc si votre paquet a été porté sur plusieurs architectures, vous apprécierez la souplesse des référentiels. 

== Installation des dépendances ==

 # apt-get install dpkg-dev

Nous supposons que vous avez un serveur Web installé et opérationnel. Cela vous permettra de naviguer dans votre dépôt (référentiel), à partir de votre lan, et pourquoi pas du net...

== Préparation des dossiers ==

Structure :
 (racine du référentiel)
 |
 |-binary
 +-source

 $ cd /var/www/
 $ sudo su www-data
 $ mkdir debian
 $ cd debian/
 ~/debian$ mkdir binary
 ~/debian$ mkdir sources

== Remplissage du référentiel ==

Copiez &quot;vos&quot; deb perso dans /var/www/debian/binary, puis :

 ~/debian$ dpkg-scanpackages binary /dev/null | gzip -9c &gt; binary/Packages.gz
 
  ** Paquets dans l'archive mais pas dans le fichier d'override : **
   amaya google-chrome-beta googleearth gtkevemon icedove knoppix-
   customize kopete kopete-silc-plugin libtimedate-perl linux-kbuild-
   2.6.36 lmb notalweg nvidia-glx skype unetbootin virtualbox-3.1
 
 16 entrées écrites dans le fichier Packages.

== Test sur une machine distante ==

 # nano /etc/apt/sources.list.d/lol.list

 # Referenciel perso
 deb http://lol.isalo.org/debian binary/
 #deb-src http://lol.isalo.org/ sources/

 # apt-get update

Ça marche...

 apt-cache policy linux-kbuild-2.6.36
 linux-kbuild-2.6.36:
   Installé : 2.6.36-rc5~experimental.1
   Candidat : 2.6.36-rc5~experimental.1
  Table de version :
  *** 2.6.36-rc5~experimental.1 0
         500 http://lol.isalo.org/debian/ binary/ Packages
         100 /var/lib/dpkg/status

== Fichier preferences ==

Afin de ne pas être ennuyé avec les préférences, et donner une priorité plus basse à votre dépôt par rapport aux dépôts officiels, vous pouvez créer un fichier release (dans le répertoire /var/www/debian/binary)

 $ nano Release
 Archive: unstable
 Component: main, contrib, non-free
 Origin: lol@isalo.org
 Label: Repertoire de paquets persos
 Architecture: i386, amd64

Et le fichier /etc/apt/preferences des &quot;clients&quot; :

 Package: *
 Pin: origin lol.isalo.org
 Pin-Priority: 1

Qui nous donne bien :

 $ apt-cache policy
 
   1 http://lol.isalo.org/debian/ binary/ Packages
     release o=lol@isalo.org,l=Repertoire de paquets persos,c=main, contrib, non-free,b=i386, amd64
     origin lol.isalo.org

[[Catégorie:Serveurs]]</text>
      <sha1>erxiycoc0g2vymvbl1s3nudzqllrbn2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2894</id>
      <parentid>2893</parentid>
      <timestamp>2011-04-13T12:44:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Préparation des dossiers */</comment>
      <text xml:space="preserve" bytes="4628">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


Document réalisé à partir du [http://www.debian-fr.org/mon-premier-referentiel-perso-t1863.html T&amp;A de Mattotop] et de [http://www.debian.org/doc/manuals/repository-howto/repository-howto.fr.html la doc Debian]

'''Créer un diférentiel Debian trivial'''

L'objectif, outre le fait de comprendre comment fonctionne un dépôt (un référentiel)... est de mettre à disposition vos paquets simplement, pour votre réseau ou sur le net...

== Introduction ==

Un dépôt (référentiel) est un ensemble de répertoires et fichiers qui permettent la mise à disposition simple de paquets Debian. Le dépôt est organisé selon une architecture précise, les paquets sont référencés dans des catalogues (fichiers Packages.gz et Sources.gz)

Ainsi, si le référentiel est correctement ajouté dans un fichier sources.list, la commande apt-get récupérera les catalogues. Les paquets du dépôts seront dés lors à disposition pour être installés.

Le fichier Packages.gz contient le nom, la version, la taille, une description courte et une longue, ainsi que les dépendances de chaque paquet (et des informations complémentaires).

Le fichier Sources.gz contient le nom, la version et les dépendances pour la compilation (les paquets nécessaires pour construire le paquet) de chaque paquet (et des informations complémentaires)

Si le référentiel a été correctement créé, vous pouvez obtenir les paquets pour chaque distribution et pour chaque architecture (actuellement onze) supportées ; apt récupérera automatiquement le bon paquet pour la machine de l'utilisateur, sans rien connaître des autres architectures. Il est aussi possible de grouper les paquets selon différents composants. Les paquets officiels Debian sont répartis en trois composants, main, non-free et contrib. Donc si votre paquet a été porté sur plusieurs architectures, vous apprécierez la souplesse des référentiels. 

== Installation des dépendances ==

 # apt-get install dpkg-dev

Nous supposons que vous avez un serveur Web installé et opérationnel. Cela vous permettra de naviguer dans votre dépôt (référentiel), à partir de votre lan, et pourquoi pas du net...

== Préparation des dossiers ==

Structure :
 (racine du référentiel)
 |
 |-binary
 +-source

 $ cd /var/www/
 $ sudo su www-data
 $ mkdir debian
 $ cd debian/
 ~/debian$ mkdir binary
 ~/debian$ mkdir source

== Remplissage du référentiel ==

Copiez &quot;vos&quot; deb perso dans /var/www/debian/binary, puis :

 ~/debian$ dpkg-scanpackages binary /dev/null | gzip -9c &gt; binary/Packages.gz
 
  ** Paquets dans l'archive mais pas dans le fichier d'override : **
   amaya google-chrome-beta googleearth gtkevemon icedove knoppix-
   customize kopete kopete-silc-plugin libtimedate-perl linux-kbuild-
   2.6.36 lmb notalweg nvidia-glx skype unetbootin virtualbox-3.1
 
 16 entrées écrites dans le fichier Packages.

== Test sur une machine distante ==

 # nano /etc/apt/sources.list.d/lol.list

 # Referenciel perso
 deb http://lol.isalo.org/debian binary/
 #deb-src http://lol.isalo.org/ sources/

 # apt-get update

Ça marche...

 apt-cache policy linux-kbuild-2.6.36
 linux-kbuild-2.6.36:
   Installé : 2.6.36-rc5~experimental.1
   Candidat : 2.6.36-rc5~experimental.1
  Table de version :
  *** 2.6.36-rc5~experimental.1 0
         500 http://lol.isalo.org/debian/ binary/ Packages
         100 /var/lib/dpkg/status

== Fichier preferences ==

Afin de ne pas être ennuyé avec les préférences, et donner une priorité plus basse à votre dépôt par rapport aux dépôts officiels, vous pouvez créer un fichier release (dans le répertoire /var/www/debian/binary)

 $ nano Release
 Archive: unstable
 Component: main, contrib, non-free
 Origin: lol@isalo.org
 Label: Repertoire de paquets persos
 Architecture: i386, amd64

Et le fichier /etc/apt/preferences des &quot;clients&quot; :

 Package: *
 Pin: origin lol.isalo.org
 Pin-Priority: 1

Qui nous donne bien :

 $ apt-cache policy
 
   1 http://lol.isalo.org/debian/ binary/ Packages
     release o=lol@isalo.org,l=Repertoire de paquets persos,c=main, contrib, non-free,b=i386, amd64
     origin lol.isalo.org

[[Catégorie:Serveurs]]</text>
      <sha1>1orz2y5dxh5sb1utwcsttmrbazjcccp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2895</id>
      <parentid>2894</parentid>
      <timestamp>2011-04-13T12:45:05Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Test sur une machine distante */</comment>
      <text xml:space="preserve" bytes="4633">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


Document réalisé à partir du [http://www.debian-fr.org/mon-premier-referentiel-perso-t1863.html T&amp;A de Mattotop] et de [http://www.debian.org/doc/manuals/repository-howto/repository-howto.fr.html la doc Debian]

'''Créer un diférentiel Debian trivial'''

L'objectif, outre le fait de comprendre comment fonctionne un dépôt (un référentiel)... est de mettre à disposition vos paquets simplement, pour votre réseau ou sur le net...

== Introduction ==

Un dépôt (référentiel) est un ensemble de répertoires et fichiers qui permettent la mise à disposition simple de paquets Debian. Le dépôt est organisé selon une architecture précise, les paquets sont référencés dans des catalogues (fichiers Packages.gz et Sources.gz)

Ainsi, si le référentiel est correctement ajouté dans un fichier sources.list, la commande apt-get récupérera les catalogues. Les paquets du dépôts seront dés lors à disposition pour être installés.

Le fichier Packages.gz contient le nom, la version, la taille, une description courte et une longue, ainsi que les dépendances de chaque paquet (et des informations complémentaires).

Le fichier Sources.gz contient le nom, la version et les dépendances pour la compilation (les paquets nécessaires pour construire le paquet) de chaque paquet (et des informations complémentaires)

Si le référentiel a été correctement créé, vous pouvez obtenir les paquets pour chaque distribution et pour chaque architecture (actuellement onze) supportées ; apt récupérera automatiquement le bon paquet pour la machine de l'utilisateur, sans rien connaître des autres architectures. Il est aussi possible de grouper les paquets selon différents composants. Les paquets officiels Debian sont répartis en trois composants, main, non-free et contrib. Donc si votre paquet a été porté sur plusieurs architectures, vous apprécierez la souplesse des référentiels. 

== Installation des dépendances ==

 # apt-get install dpkg-dev

Nous supposons que vous avez un serveur Web installé et opérationnel. Cela vous permettra de naviguer dans votre dépôt (référentiel), à partir de votre lan, et pourquoi pas du net...

== Préparation des dossiers ==

Structure :
 (racine du référentiel)
 |
 |-binary
 +-source

 $ cd /var/www/
 $ sudo su www-data
 $ mkdir debian
 $ cd debian/
 ~/debian$ mkdir binary
 ~/debian$ mkdir source

== Remplissage du référentiel ==

Copiez &quot;vos&quot; deb perso dans /var/www/debian/binary, puis :

 ~/debian$ dpkg-scanpackages binary /dev/null | gzip -9c &gt; binary/Packages.gz
 
  ** Paquets dans l'archive mais pas dans le fichier d'override : **
   amaya google-chrome-beta googleearth gtkevemon icedove knoppix-
   customize kopete kopete-silc-plugin libtimedate-perl linux-kbuild-
   2.6.36 lmb notalweg nvidia-glx skype unetbootin virtualbox-3.1
 
 16 entrées écrites dans le fichier Packages.

== Test sur une machine distante ==

 # nano /etc/apt/sources.list.d/lol.list

 # Referenciel perso
 deb http://lol.isalo.org/debian binary/
 #deb-src http://lol.isalo.org/debian source/

 # apt-get update

Ça marche...

 apt-cache policy linux-kbuild-2.6.36
 linux-kbuild-2.6.36:
   Installé : 2.6.36-rc5~experimental.1
   Candidat : 2.6.36-rc5~experimental.1
  Table de version :
  *** 2.6.36-rc5~experimental.1 0
         500 http://lol.isalo.org/debian/ binary/ Packages
         100 /var/lib/dpkg/status

== Fichier preferences ==

Afin de ne pas être ennuyé avec les préférences, et donner une priorité plus basse à votre dépôt par rapport aux dépôts officiels, vous pouvez créer un fichier release (dans le répertoire /var/www/debian/binary)

 $ nano Release
 Archive: unstable
 Component: main, contrib, non-free
 Origin: lol@isalo.org
 Label: Repertoire de paquets persos
 Architecture: i386, amd64

Et le fichier /etc/apt/preferences des &quot;clients&quot; :

 Package: *
 Pin: origin lol.isalo.org
 Pin-Priority: 1

Qui nous donne bien :

 $ apt-cache policy
 
   1 http://lol.isalo.org/debian/ binary/ Packages
     release o=lol@isalo.org,l=Repertoire de paquets persos,c=main, contrib, non-free,b=i386, amd64
     origin lol.isalo.org

[[Catégorie:Serveurs]]</text>
      <sha1>rnc6yjg7l920vc6i9qcq30zm6r3q8ei</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2896</id>
      <parentid>2895</parentid>
      <timestamp>2011-04-13T12:53:30Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="4634">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


Document réalisé à partir du [http://www.debian-fr.org/mon-premier-referentiel-perso-t1863.html T&amp;A de Mattotop] et de [http://www.debian.org/doc/manuals/repository-howto/repository-howto.fr.html la doc Debian]

'''Créer un différentiel Debian trivial'''

L'objectif, outre le fait de comprendre comment fonctionne un dépôt (un référentiel)... est de mettre à disposition vos paquets simplement, pour votre réseau ou sur le net...

== Introduction ==

Un dépôt (référentiel) est un ensemble de répertoires et fichiers qui permettent la mise à disposition simple de paquets Debian. Le dépôt est organisé selon une architecture précise, les paquets sont référencés dans des catalogues (fichiers Packages.gz et Sources.gz)

Ainsi, si le référentiel est correctement ajouté dans un fichier sources.list, la commande apt-get récupérera les catalogues. Les paquets du dépôts seront dés lors à disposition pour être installés.

Le fichier Packages.gz contient le nom, la version, la taille, une description courte et une longue, ainsi que les dépendances de chaque paquet (et des informations complémentaires).

Le fichier Sources.gz contient le nom, la version et les dépendances pour la compilation (les paquets nécessaires pour construire le paquet) de chaque paquet (et des informations complémentaires)

Si le référentiel a été correctement créé, vous pouvez obtenir les paquets pour chaque distribution et pour chaque architecture (actuellement onze) supportées ; apt récupérera automatiquement le bon paquet pour la machine de l'utilisateur, sans rien connaître des autres architectures. Il est aussi possible de grouper les paquets selon différents composants. Les paquets officiels Debian sont répartis en trois composants, main, non-free et contrib. Donc si votre paquet a été porté sur plusieurs architectures, vous apprécierez la souplesse des référentiels. 

== Installation des dépendances ==

 # apt-get install dpkg-dev

Nous supposons que vous avez un serveur Web installé et opérationnel. Cela vous permettra de naviguer dans votre dépôt (référentiel), à partir de votre lan, et pourquoi pas du net...

== Préparation des dossiers ==

Structure :
 (racine du référentiel)
 |
 |-binary
 +-source

 $ cd /var/www/
 $ sudo su www-data
 $ mkdir debian
 $ cd debian/
 ~/debian$ mkdir binary
 ~/debian$ mkdir source

== Remplissage du référentiel ==

Copiez &quot;vos&quot; deb perso dans /var/www/debian/binary, puis :

 ~/debian$ dpkg-scanpackages binary /dev/null | gzip -9c &gt; binary/Packages.gz
 
  ** Paquets dans l'archive mais pas dans le fichier d'override : **
   amaya google-chrome-beta googleearth gtkevemon icedove knoppix-
   customize kopete kopete-silc-plugin libtimedate-perl linux-kbuild-
   2.6.36 lmb notalweg nvidia-glx skype unetbootin virtualbox-3.1
 
 16 entrées écrites dans le fichier Packages.

== Test sur une machine distante ==

 # nano /etc/apt/sources.list.d/lol.list

 # Referenciel perso
 deb http://lol.isalo.org/debian binary/
 #deb-src http://lol.isalo.org/debian source/

 # apt-get update

Ça marche...

 apt-cache policy linux-kbuild-2.6.36
 linux-kbuild-2.6.36:
   Installé : 2.6.36-rc5~experimental.1
   Candidat : 2.6.36-rc5~experimental.1
  Table de version :
  *** 2.6.36-rc5~experimental.1 0
         500 http://lol.isalo.org/debian/ binary/ Packages
         100 /var/lib/dpkg/status

== Fichier preferences ==

Afin de ne pas être ennuyé avec les préférences, et donner une priorité plus basse à votre dépôt par rapport aux dépôts officiels, vous pouvez créer un fichier release (dans le répertoire /var/www/debian/binary)

 $ nano Release
 Archive: unstable
 Component: main, contrib, non-free
 Origin: lol@isalo.org
 Label: Repertoire de paquets persos
 Architecture: i386, amd64

Et le fichier /etc/apt/preferences des &quot;clients&quot; :

 Package: *
 Pin: origin lol.isalo.org
 Pin-Priority: 1

Qui nous donne bien :

 $ apt-cache policy
 
   1 http://lol.isalo.org/debian/ binary/ Packages
     release o=lol@isalo.org,l=Repertoire de paquets persos,c=main, contrib, non-free,b=i386, amd64
     origin lol.isalo.org

[[Catégorie:Serveurs]]</text>
      <sha1>9a8y8xwvlqy1mlu0kaqym1689kuxc83</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2897</id>
      <parentid>2896</parentid>
      <timestamp>2011-04-13T12:54:35Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="4636">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


Document réalisé à partir du [http://www.debian-fr.org/mon-premier-referentiel-perso-t1863.html T&amp;A de Mattotop] et de [http://www.debian.org/doc/manuals/repository-howto/repository-howto.fr.html la doc Debian]

'''Créer un différentiel Debian trivial'''

L'objectif, outre le fait de comprendre comment fonctionne un dépôt (un référentiel)... est de mettre à disposition vos paquets simplement, pour votre réseau ou sur le net...

== Introduction ==

Un dépôt (référentiel) est un ensemble de répertoires et fichiers qui permettent la mise à disposition simple de paquets Debian. Le dépôt est organisé selon une architecture précise, les paquets sont référencés dans des catalogues (fichiers Packages.gz et Sources.gz)

Ainsi, si le référentiel est correctement ajouté dans un fichier sources.list, la commande apt-get récupérera les catalogues. Les paquets du dépôts seront dés lors à disposition pour être installés.

Le fichier Packages.gz contient le nom, la version, la taille, une description courte et une longue, ainsi que les dépendances de chaque paquet (et des informations complémentaires).

Le fichier Sources.gz contient le nom, la version et les dépendances pour la compilation (les paquets nécessaires pour construire le paquet) de chaque paquet (et des informations complémentaires)

Si le référentiel a été correctement créé, vous pouvez obtenir les paquets pour chaque distribution et pour chaque architecture (actuellement onze) supportées ; apt récupérera automatiquement le bon paquet pour la machine de l'utilisateur, sans rien connaître des autres architectures. Il est aussi possible de grouper les paquets selon différents composants. Les paquets officiels Debian sont répartis en trois composants, main, non-free et contrib. Donc si votre paquet a été porté sur plusieurs architectures, vous apprécierez la souplesse des référentiels. 

== Installation des dépendances ==

 # apt-get install dpkg-dev

Nous supposons que vous avez un serveur Web installé et opérationnel. Cela vous permettra de naviguer dans votre dépôt (référentiel), à partir de votre lan, et pourquoi pas du net...

== Préparation des dossiers ==

Structure :
 (racine du référentiel)
 |
 |-binary
 +-source

 $ cd /var/www/
 $ sudo su www-data
 $ mkdir debian
 $ cd debian/
 ~/debian$ mkdir binary
 ~/debian$ mkdir source

== Remplissage du référentiel ==

Copiez &quot;vos&quot; deb perso dans /var/www/debian/binary, puis :

 ~/debian$ dpkg-scanpackages binary /dev/null | gzip -9c &gt; binary/Packages.gz
 
  ** Paquets dans l'archive mais pas dans le fichier d'override : **
   amaya google-chrome-beta googleearth gtkevemon icedove knoppix-
   customize kopete kopete-silc-plugin libtimedate-perl linux-kbuild-
   2.6.36 lmb notalweg nvidia-glx skype unetbootin virtualbox-3.1
 
 16 entrées écrites dans le fichier Packages.

== Test sur une machine distante ==

 # nano /etc/apt/sources.list.d/lol.list

 # Référentiel perso
 deb http://lol.isalo.org/debian binary/
 #deb-src http://lol.isalo.org/debian source/

 # apt-get update

Ça marche...

 apt-cache policy linux-kbuild-2.6.36
 linux-kbuild-2.6.36:
   Installé : 2.6.36-rc5~experimental.1
   Candidat : 2.6.36-rc5~experimental.1
  Table de version :
  *** 2.6.36-rc5~experimental.1 0
         500 http://lol.isalo.org/debian/ binary/ Packages
         100 /var/lib/dpkg/status

== Fichier preferences ==

Afin de ne pas être ennuyé avec les préférences, et donner une priorité plus basse à votre dépôt par rapport aux dépôts officiels, vous pouvez créer un fichier release (dans le répertoire /var/www/debian/binary)

 $ nano Release
 Archive: unstable
 Component: main, contrib, non-free
 Origin: lol@isalo.org
 Label: Repertoire de paquets persos
 Architecture: i386, amd64

Et le fichier /etc/apt/preferences des &quot;clients&quot; :

 Package: *
 Pin: origin lol.isalo.org
 Pin-Priority: 1

Qui nous donne bien :

 $ apt-cache policy
 
   1 http://lol.isalo.org/debian/ binary/ Packages
     release o=lol@isalo.org,l=Repertoire de paquets persos,c=main, contrib, non-free,b=i386, amd64
     origin lol.isalo.org

[[Catégorie:Serveurs]]</text>
      <sha1>405op76dk3xiix56i6wyd309bhqfcyj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5780</id>
      <parentid>2897</parentid>
      <timestamp>2014-08-20T05:37:30Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="4640">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


Document réalisé à partir du [http://www.debian-fr.org/mon-premier-referentiel-perso-t1863.html T&amp;A de Mattotop] et de [http://www.debian.org/doc/manuals/repository-howto/repository-howto.fr.html la doc Debian]

'''Créer un différentiel Debian trivial'''

L'objectif, outre le fait de comprendre comment fonctionne un dépôt (un référentiel)... est de mettre à disposition vos paquets simplement, pour votre réseau ou sur le net...

== Introduction ==

Un dépôt (référentiel) est un ensemble de répertoires et fichiers qui permettent la mise à disposition simple de paquets Debian. Le dépôt est organisé selon une architecture précise, les paquets sont référencés dans des catalogues (fichiers Packages.gz et Sources.gz)

Ainsi, si le référentiel est correctement ajouté dans un fichier sources.list, la commande apt-get récupérera les catalogues. Les paquets du dépôts seront dés lors à disposition pour être installés.

Le fichier Packages.gz contient le nom, la version, la taille, une description courte et une longue, ainsi que les dépendances de chaque paquet (et des informations complémentaires).

Le fichier Sources.gz contient le nom, la version et les dépendances pour la compilation (les paquets nécessaires pour construire le paquet) de chaque paquet (et des informations complémentaires)

Si le référentiel a été correctement créé, vous pouvez obtenir les paquets pour chaque distribution et pour chaque architecture (actuellement onze) supportées ; apt récupérera automatiquement le bon paquet pour la machine de l'utilisateur, sans rien connaître des autres architectures. Il est aussi possible de grouper les paquets selon différents composants. Les paquets officiels Debian sont répartis en trois composants, main, non-free et contrib. Donc si votre paquet a été porté sur plusieurs architectures, vous apprécierez la souplesse des référentiels. 

== Installation des dépendances ==

 # apt-get install dpkg-dev

Nous supposons que vous avez un serveur Web installé et opérationnel. Cela vous permettra de naviguer dans votre dépôt (référentiel), à partir de votre lan, et pourquoi pas du net...

== Préparation des répertoires ==

Structure :
 (racine du référentiel)
 |
 |-binary
 +-source

 $ cd /var/www/
 $ sudo su www-data
 $ mkdir debian
 $ cd debian/
 ~/debian$ mkdir binary
 ~/debian$ mkdir source

== Remplissage du référentiel ==

Copiez &quot;vos&quot; deb perso dans /var/www/debian/binary, puis :

 ~/debian$ dpkg-scanpackages binary /dev/null | gzip -9c &gt; binary/Packages.gz
 
  ** Paquets dans l'archive mais pas dans le fichier d'override : **
   amaya google-chrome-beta googleearth gtkevemon icedove knoppix-
   customize kopete kopete-silc-plugin libtimedate-perl linux-kbuild-
   2.6.36 lmb notalweg nvidia-glx skype unetbootin virtualbox-3.1
 
 16 entrées écrites dans le fichier Packages.

== Test sur une machine distante ==

 # nano /etc/apt/sources.list.d/lol.list

 # Référentiel perso
 deb http://lol.isalo.org/debian binary/
 #deb-src http://lol.isalo.org/debian source/

 # apt-get update

Ça marche...

 apt-cache policy linux-kbuild-2.6.36
 linux-kbuild-2.6.36:
   Installé : 2.6.36-rc5~experimental.1
   Candidat : 2.6.36-rc5~experimental.1
  Table de version :
  *** 2.6.36-rc5~experimental.1 0
         500 http://lol.isalo.org/debian/ binary/ Packages
         100 /var/lib/dpkg/status

== Fichier preferences ==

Afin de ne pas être ennuyé avec les préférences, et donner une priorité plus basse à votre dépôt par rapport aux dépôts officiels, vous pouvez créer un fichier release (dans le répertoire /var/www/debian/binary)

 $ nano Release
 Archive: unstable
 Component: main, contrib, non-free
 Origin: lol@isalo.org
 Label: Repertoire de paquets persos
 Architecture: i386, amd64

Et le fichier /etc/apt/preferences des &quot;clients&quot; :

 Package: *
 Pin: origin lol.isalo.org
 Pin-Priority: 1

Qui nous donne bien :

 $ apt-cache policy
 
   1 http://lol.isalo.org/debian/ binary/ Packages
     release o=lol@isalo.org,l=Repertoire de paquets persos,c=main, contrib, non-free,b=i386, amd64
     origin lol.isalo.org

[[Catégorie:Serveurs]]</text>
      <sha1>6ohpf95rlev522oi2dup4imn9uy1f08</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>DHCP</title>
    <ns>0</ns>
    <id>412</id>
    <revision>
      <id>1504</id>
      <timestamp>2010-05-17T11:13:59Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « [[Category:Serveurs]] »</comment>
      <text xml:space="preserve" bytes="21">[[Category:Serveurs]]</text>
      <sha1>l2nmaskv3bffsjpw0yst96acqex6l44</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2272</id>
      <parentid>1504</parentid>
      <timestamp>2010-11-12T07:05:43Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Installation et configuration d'un serveur DHCP sur une squeeze</comment>
      <text xml:space="preserve" bytes="12501">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;


Nous allons installer un serveur DHCP (à destination d'un petit réseau domestique, nous n'allons pas nous lancer dans la configuration d'une usine à gaz...) sur une squeeze.

== DHCP, qu'est-ce que c'est ? ==

Le DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Lorqu'il est convenablement configuré et fonctionnel, ce service est très pratique... Il permet d'administrer un réseau sans avoir à configurer machine après machine.
Toutes vos &quot;box&quot; possèdent ce service par défaut, d'une manière plus ou moins élaborée.

Lorsque vous connectez une machine à un réseau Ethernet TCP/IP, cette machine, pour fonctionner correctement, doit disposer :

# d'une adresse IP unique dans votre réseau et appartenant au même réseau;
# d'un masque de sous réseau, le même pour tous les hôtes du réseau;
# d'une adresse de DNS, pour pouvoir résoudre les noms des hôtes;
# de l'adresse de la passerelle qui permet d'accéder au Net (le &quot;gateway&quot;)

Pour configurer vos hôtes locaux, vous avez trois possibilités :

# avec « zeroconf » (rfc3927). ce système s'il est fonctionnel ne permet aucune administration du réseau;
# vous passez de machine en machine, et configurez les paramètres réseau;
# vous installez un serveur DHCP sur votre réseau et vous dites à vos clients de configurer leur réseau par dhcp.

Détail de fonctionnement du protocole

# Le client DHCP démarre, il envoie une trame « DHCPDISCOVER », destinée à trouver un serveur DHCP.
# Le (ou les) serveur(s) DHCP du réseau réponde(nt) par un « DHCPOFFER ». Cette trame contient une proposition de bail, la « MAC Address » du client, et l'adresse IP du serveur. Le client accepte normalement la première réponse venue.
# Le client envoie alors un DHCPREQUEST à tous les serveurs (toujours en « Broadcast ») pour indiquer quelle offre il accepte.
# Le serveur DHCP concerné répond définitivement par un DHCPACK qui constitue une confirmation du bail. L'adresse du client est alors marquée comme utilisée et ne sera plus proposée à un autre client pour toute la durée du bail.

Un serveur DHCP a à sa disposition une plage d'adresses dans laquelle il est enfermé. Il tient à jour une base de données des adresses déjà utilisées et en cours d'utilisation. C'est ce qui explique que bien qu'attribuées dynamiquement, l'IP servie est souvent la même pour un client.

Lorsqu'il attribue une adresse, il le fait par l'intermédiaire d'un bail. Ce bail a normalement une durée limitée dans le temps. Tout ceci est configurable. L'avantage d'un bail long est une diminution du trafic vers le serveur dhcp. L'inconvénient, c'est qu'il faut planifier plus longtemps à l'avance des modification dans l'architecture de son réseau.

Après expiration du bail, ou résiliation par le client, les informations concernant ce bail restent mémorisées dans la base de données du serveur pendant un certain temps.

== Installation du serveur DHCP ==

Sur Debian, ceci se fait très simplement en installant les paquetages isc-dhcp-server et isc-dhcp-common.

 # apt-get update
 # apt-get install isc-dhcp-server isc-dhcp-common

== Configuration ==

=== Définition de l'interface ===

Le « daemon » dhcpd écoute par défaut sur toutes les interfaces réseau actives sur le serveur. Pour des raison de sécurité ce n'est pas souhaitable.
Pour Debian Squeeze, il faudra éditer le fichier /etc/default/isc-dhcp-server. Si vous souhaitez que votre dhcp écoute sur une seule interface, il faut la définir ici:

 INTERFACES=&quot;eth0&quot;

=== Le fichier /etc/dhcp/dhcpd.conf ===

La configuration de votre dhcp se trouve dans un seul fichier : /etc/dhcp/dhcpd.conf

Voici le fichier &quot;original&quot;

&lt;code&gt;# cat /etc/dhcp/dhcpd.conf
#
# Sample configuration file for ISC dhcpd for Debian
#
#

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;

# option definitions common to all supported networks...
option domain-name &quot;example.org&quot;;
option domain-name-servers ns1.example.org, ns2.example.org;

default-lease-time 600;
max-lease-time 7200;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# No service will be given on this subnet, but declaring it helps the 
# DHCP server to understand the network topology.

#subnet 10.152.187.0 netmask 255.255.255.0 {
#}

# This is a very basic subnet declaration.

#subnet 10.254.239.0 netmask 255.255.255.224 {
#  range 10.254.239.10 10.254.239.20;
#  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
#}

# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.

#subnet 10.254.239.32 netmask 255.255.255.224 {
#  range dynamic-bootp 10.254.239.40 10.254.239.60;
#  option broadcast-address 10.254.239.31;
#  option routers rtr-239-32-1.example.org;
#}

# A slightly different configuration for an internal subnet.
#subnet 10.5.5.0 netmask 255.255.255.224 {
#  range 10.5.5.26 10.5.5.30;
#  option domain-name-servers ns1.internal.example.org;
#  option domain-name &quot;internal.example.org&quot;;
#  option routers 10.5.5.1;
#  option broadcast-address 10.5.5.31;
#  default-lease-time 600;
#  max-lease-time 7200;
#}

# Hosts which require special configuration options can be listed in
# host statements.   If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.

#host passacaglia {
#  hardware ethernet 0:0:c0:5d:bd:95;
#  filename &quot;vmunix.passacaglia&quot;;
#  server-name &quot;toccata.fugue.com&quot;;
#}

# Fixed IP addresses can also be specified for hosts.   These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP.   Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
#host fantasia {
#  hardware ethernet 08:00:07:26:c0:a5;
#  fixed-address fantasia.fugue.com;
#}

# You can declare a class of clients and then do address allocation
# based on that.   The example below shows a case where all clients
# in a certain class get addresses on the 10.17.224/24 subnet, and all
# other clients get addresses on the 10.0.29/24 subnet.

#class &quot;foo&quot; {
#  match if substring (option vendor-class-identifier, 0, 4) = &quot;SUNW&quot;;
#}

#shared-network 224-29 {
#  subnet 10.17.224.0 netmask 255.255.255.0 {
#    option routers rtr-224.example.org;
#  }
#  subnet 10.0.29.0 netmask 255.255.255.0 {
#    option routers rtr-29.example.org;
#  }
#  pool {
#    allow members of &quot;foo&quot;;
#    range 10.17.224.10 10.17.224.250;
#  }
#  pool {
#    deny members of &quot;foo&quot;;
#    range 10.0.29.10 10.0.29.230;
#  }
#}&lt;/code&gt;

Une sauvegarde s'impose :

 # cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.ori

Voici notre fichier &quot;modifié&quot;

&lt;code&gt;# cat /etc/dhcp/dhcpd.conf
ddns-update-style none;
authoritative;

option domain-name &quot;isalo.org&quot;;
default-lease-time 7200;
max-lease-time 86400;
log-facility local7;

subnet 192.168.0.0 netmask 255.255.255.0 {
        pool {
                option domain-name-servers 192.168.0.1,41.188.9.130;
                range 192.168.0.199 192.168.0.249;
        }
        option routers 192.168.0.254;
        option domain-name &quot;isalo.org&quot;;
        option domain-name-servers 192.168.0.1,41.188.9.130;
        option netbios-name-servers 192.168.0.6;
        option netbios-node-type 8;
        option tftp-server-name &quot;192.168.0.6&quot;;

        next-server 192.168.0.6;
        filename &quot;pxelinux.0&quot;;
}
host s_lan_0 {
	hardware ethernet 00:25:11:79:8a:76;
	fixed-address 192.168.0.1;
	option host-name lol;
}&lt;/code&gt;

==== Explications ====

ddns-update-style: Vous pouvez demander au serveur DHCP de mettre à jour un serveur DNS si l'adresse IP d'un serveur dans votre réseau local a changé (car elle a été attribuée une adresse IP différente par DHCP).
Si vous n'avez pas de serveurs DNS dans notre LAN ou donnez des adresses IP statiques (qui est une bonne idée pour les serveurs ...) vous ne voudrez pas mettre à jour les enregistrements DNS, vous mettrez donc &quot;none&quot;

 ddns-update-style none;

Ce serveur fait autorité sur le réseau

 authoritative;

Les options globales

 #option time-servers 192.168.0.252;
 max-lease-time 7200;
 default-lease-time 86400;

Le réseau 192.168.0.0/24, avec la réserve d'adresses dynamiques, les IP des DNS, l'adresse du routeur, la définition du domaine de recherche, et trois lignes permettant de trouver un serveur PXE qui se trouve sur le réseau à l'IP 192.168.0.6

 subnet 192.168.0.0 netmask 255.255.255.0 {
         pool {
                 option domain-name-servers 192.168.0.1,41.188.9.130;
                 range 192.168.0.199 192.168.0.249;
         }
         option routers 192.168.0.254;
         option domain-name &quot;isalo.org&quot;;
         option domain-name-servers 192.168.0.1,41.188.9.130;
         option netbios-name-servers 192.168.0.6;

         option tftp-server-name &quot;192.168.0.6&quot;;
         next-server 192.168.0.6;
         filename &quot;pxelinux.0&quot;;
 }

==== Les réservation d'adresses ====

Nous attriburons automatiquement l'IP 192.168.0.1 à la machine qui dispose de l'adresse MAC 00:25:11:79:8a:76.

 host s_lan_0 {
 	hardware ethernet 00:25:11:79:8a:76;
 	fixed-address 192.168.0.1;
 	option host-name lol;
 }

=== Coupler DHCP avec BIND9 ===

'''Cette option n'a pas encore été testée... A prendre avec précaution.'''

Cerise sur le gateau, vous disposez d'un serveur DNS bind. Nous pouvons alors coupler DHCP et BIND pour que ce dernier mette automatiquement à jour les IP dans ses fichiers de configuration:

==== dans /etc/dhcp/dhcpd.conf ====

Remplacer :

 ddns-update-style none;

Par :

&lt;code&gt;include &quot;/etc/bind/rndc.key&quot;;
ddns-updates on;
ddns-update-style interim;
ddns-domainname &quot;isalo.org.&quot;;
ddns-rev-domainname &quot;in-addr.arpa.&quot;;
ignore client-updates;
zone test.edu. { primary 127.0.0.1; key rndc-key; }
zone 192.in-addr.arpa. { primary 127.0.0.1; key rndc-key;  }&lt;/code&gt;

==== dans /etc/dhcp/dhcpd.conf ====

Configurez vos zones comme suit :

 controls {
 inet 127.0.0.1 allow { localhost; } keys { &quot;rndc-key&quot;; };
 };
 
 include &quot;/etc/bind/rndc.key&quot;;
 
 zone &quot;isalo.org&quot; {
         type master;
         file &quot;/etc/bind/db.isalo.org&quot;;
         allow-update { key &quot;rndc-key&quot;; };
         notify no;
         };
 zone &quot;192.in-addr.arpa&quot; {
         type master;
         file &quot;/etc/bind/db.192&quot;;
         allow-update { key &quot;rndc-key&quot;; };
         notify no;
         };

=== Test ===

Sur une machine cliente :

 # ifup eth0
 Internet Systems Consortium DHCP Client 4.1.1-P1
 Copyright 2004-2010 Internet Systems Consortium.
 All rights reserved.
 For info, please visit https://www.isc.org/software/dhcp/
 
 Listening on LPF/eth0/6c:f0:49:07:15:8b
 Sending on   LPF/eth0/6c:f0:49:07:15:8b
 Sending on   Socket/fallback
 DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4
 DHCPOFFER from 192.168.0.1
 DHCPREQUEST on eth0 to 255.255.255.255 port 67
 DHCPACK from 192.168.0.1
 bound to 192.168.0.2 -- renewal in 3552 seconds.

== Conclusion ==

Voilà, notre dhcp est configuré et opérationnel !
Très simple à mettre en place comme vous l'avez vu, votre dhcp est maintenant prêt à vous rendre de très nombreux services pour une gestion centralisée de votre réseau.

De nombreuses option existent, elles permettent de mieux servir vos clients. A vous de les découvrir...

[[Utilisateur:Lol|Lol]] 12 novembre 2010 à 10:05 (EAT)

[[Category:Serveurs]]</text>
      <sha1>lbe109m7b7sa8yz456hd0tovam1y072</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2273</id>
      <parentid>2272</parentid>
      <timestamp>2010-11-12T07:51:05Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* DHCP, qu'est-ce que c'est ? */</comment>
      <text xml:space="preserve" bytes="12536">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;


Nous allons installer un serveur DHCP (à destination d'un petit réseau domestique, nous n'allons pas nous lancer dans la configuration d'une usine à gaz...) sur une squeeze.

== DHCP, qu'est-ce que c'est ? ==

Le DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Lorqu'il est convenablement configuré et fonctionnel, ce service est très pratique... Il permet d'administrer un réseau sans avoir à configurer machine après machine.
Toutes vos &quot;box&quot; possèdent ce service par défaut, d'une manière plus ou moins élaborée.

Lorsque vous connectez une machine à un réseau Ethernet TCP/IP, cette machine, pour fonctionner correctement, doit disposer :

# d'une adresse IP unique dans votre réseau et appartenant au même réseau;
# d'un masque de sous réseau, le même pour tous les hôtes du réseau (le &quot;netmask&quot;);
# d'une adresse d'un ou plusieurs DNS, pour pouvoir résoudre les noms des hôtes;
# de l'adresse de la passerelle qui permet d'accéder à Internet (le &quot;gateway&quot;)

Pour configurer vos hôtes locaux, vous avez trois possibilités :

# avec « zeroconf » (rfc3927). ce système s'il est fonctionnel ne permet aucune administration du réseau;
# vous passez de machine en machine, et configurez les paramètres réseau;
# vous installez un serveur DHCP sur votre réseau et vous dites à vos clients de configurer leur réseau par dhcp.

Détail de fonctionnement du protocole

# Le client DHCP démarre, il envoie une trame « DHCPDISCOVER », destinée à trouver un serveur DHCP.
# Le (ou les) serveur(s) DHCP du réseau réponde(nt) par un « DHCPOFFER ». Cette trame contient une proposition de bail, la « MAC Address » du client, et l'adresse IP du serveur. Le client accepte normalement la première réponse venue.
# Le client envoie alors un DHCPREQUEST à tous les serveurs (toujours en « Broadcast ») pour indiquer quelle offre il accepte.
# Le serveur DHCP concerné répond définitivement par un DHCPACK qui constitue une confirmation du bail. L'adresse du client est alors marquée comme utilisée et ne sera plus proposée à un autre client pour toute la durée du bail.

Un serveur DHCP a à sa disposition une plage d'adresses dans laquelle il est enfermé. Il tient à jour une base de données des adresses déjà utilisées et en cours d'utilisation. C'est ce qui explique que bien qu'attribuées dynamiquement, l'IP servie est souvent la même pour un client.

Lorsqu'il attribue une adresse, il le fait par l'intermédiaire d'un bail. Ce bail a normalement une durée limitée dans le temps. Tout ceci est configurable. L'avantage d'un bail long est une diminution du trafic vers le serveur dhcp. L'inconvénient, c'est qu'il faut planifier plus longtemps à l'avance des modification dans l'architecture de son réseau.

Après expiration du bail, ou résiliation par le client, les informations concernant ce bail restent mémorisées dans la base de données du serveur pendant un certain temps.

== Installation du serveur DHCP ==

Sur Debian, ceci se fait très simplement en installant les paquetages isc-dhcp-server et isc-dhcp-common.

 # apt-get update
 # apt-get install isc-dhcp-server isc-dhcp-common

== Configuration ==

=== Définition de l'interface ===

Le « daemon » dhcpd écoute par défaut sur toutes les interfaces réseau actives sur le serveur. Pour des raison de sécurité ce n'est pas souhaitable.
Pour Debian Squeeze, il faudra éditer le fichier /etc/default/isc-dhcp-server. Si vous souhaitez que votre dhcp écoute sur une seule interface, il faut la définir ici:

 INTERFACES=&quot;eth0&quot;

=== Le fichier /etc/dhcp/dhcpd.conf ===

La configuration de votre dhcp se trouve dans un seul fichier : /etc/dhcp/dhcpd.conf

Voici le fichier &quot;original&quot;

&lt;code&gt;# cat /etc/dhcp/dhcpd.conf
#
# Sample configuration file for ISC dhcpd for Debian
#
#

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;

# option definitions common to all supported networks...
option domain-name &quot;example.org&quot;;
option domain-name-servers ns1.example.org, ns2.example.org;

default-lease-time 600;
max-lease-time 7200;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# No service will be given on this subnet, but declaring it helps the 
# DHCP server to understand the network topology.

#subnet 10.152.187.0 netmask 255.255.255.0 {
#}

# This is a very basic subnet declaration.

#subnet 10.254.239.0 netmask 255.255.255.224 {
#  range 10.254.239.10 10.254.239.20;
#  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
#}

# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.

#subnet 10.254.239.32 netmask 255.255.255.224 {
#  range dynamic-bootp 10.254.239.40 10.254.239.60;
#  option broadcast-address 10.254.239.31;
#  option routers rtr-239-32-1.example.org;
#}

# A slightly different configuration for an internal subnet.
#subnet 10.5.5.0 netmask 255.255.255.224 {
#  range 10.5.5.26 10.5.5.30;
#  option domain-name-servers ns1.internal.example.org;
#  option domain-name &quot;internal.example.org&quot;;
#  option routers 10.5.5.1;
#  option broadcast-address 10.5.5.31;
#  default-lease-time 600;
#  max-lease-time 7200;
#}

# Hosts which require special configuration options can be listed in
# host statements.   If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.

#host passacaglia {
#  hardware ethernet 0:0:c0:5d:bd:95;
#  filename &quot;vmunix.passacaglia&quot;;
#  server-name &quot;toccata.fugue.com&quot;;
#}

# Fixed IP addresses can also be specified for hosts.   These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP.   Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
#host fantasia {
#  hardware ethernet 08:00:07:26:c0:a5;
#  fixed-address fantasia.fugue.com;
#}

# You can declare a class of clients and then do address allocation
# based on that.   The example below shows a case where all clients
# in a certain class get addresses on the 10.17.224/24 subnet, and all
# other clients get addresses on the 10.0.29/24 subnet.

#class &quot;foo&quot; {
#  match if substring (option vendor-class-identifier, 0, 4) = &quot;SUNW&quot;;
#}

#shared-network 224-29 {
#  subnet 10.17.224.0 netmask 255.255.255.0 {
#    option routers rtr-224.example.org;
#  }
#  subnet 10.0.29.0 netmask 255.255.255.0 {
#    option routers rtr-29.example.org;
#  }
#  pool {
#    allow members of &quot;foo&quot;;
#    range 10.17.224.10 10.17.224.250;
#  }
#  pool {
#    deny members of &quot;foo&quot;;
#    range 10.0.29.10 10.0.29.230;
#  }
#}&lt;/code&gt;

Une sauvegarde s'impose :

 # cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.ori

Voici notre fichier &quot;modifié&quot;

&lt;code&gt;# cat /etc/dhcp/dhcpd.conf
ddns-update-style none;
authoritative;

option domain-name &quot;isalo.org&quot;;
default-lease-time 7200;
max-lease-time 86400;
log-facility local7;

subnet 192.168.0.0 netmask 255.255.255.0 {
        pool {
                option domain-name-servers 192.168.0.1,41.188.9.130;
                range 192.168.0.199 192.168.0.249;
        }
        option routers 192.168.0.254;
        option domain-name &quot;isalo.org&quot;;
        option domain-name-servers 192.168.0.1,41.188.9.130;
        option netbios-name-servers 192.168.0.6;
        option netbios-node-type 8;
        option tftp-server-name &quot;192.168.0.6&quot;;

        next-server 192.168.0.6;
        filename &quot;pxelinux.0&quot;;
}
host s_lan_0 {
	hardware ethernet 00:25:11:79:8a:76;
	fixed-address 192.168.0.1;
	option host-name lol;
}&lt;/code&gt;

==== Explications ====

ddns-update-style: Vous pouvez demander au serveur DHCP de mettre à jour un serveur DNS si l'adresse IP d'un serveur dans votre réseau local a changé (car elle a été attribuée une adresse IP différente par DHCP).
Si vous n'avez pas de serveurs DNS dans notre LAN ou donnez des adresses IP statiques (qui est une bonne idée pour les serveurs ...) vous ne voudrez pas mettre à jour les enregistrements DNS, vous mettrez donc &quot;none&quot;

 ddns-update-style none;

Ce serveur fait autorité sur le réseau

 authoritative;

Les options globales

 #option time-servers 192.168.0.252;
 max-lease-time 7200;
 default-lease-time 86400;

Le réseau 192.168.0.0/24, avec la réserve d'adresses dynamiques, les IP des DNS, l'adresse du routeur, la définition du domaine de recherche, et trois lignes permettant de trouver un serveur PXE qui se trouve sur le réseau à l'IP 192.168.0.6

 subnet 192.168.0.0 netmask 255.255.255.0 {
         pool {
                 option domain-name-servers 192.168.0.1,41.188.9.130;
                 range 192.168.0.199 192.168.0.249;
         }
         option routers 192.168.0.254;
         option domain-name &quot;isalo.org&quot;;
         option domain-name-servers 192.168.0.1,41.188.9.130;
         option netbios-name-servers 192.168.0.6;

         option tftp-server-name &quot;192.168.0.6&quot;;
         next-server 192.168.0.6;
         filename &quot;pxelinux.0&quot;;
 }

==== Les réservation d'adresses ====

Nous attriburons automatiquement l'IP 192.168.0.1 à la machine qui dispose de l'adresse MAC 00:25:11:79:8a:76.

 host s_lan_0 {
 	hardware ethernet 00:25:11:79:8a:76;
 	fixed-address 192.168.0.1;
 	option host-name lol;
 }

=== Coupler DHCP avec BIND9 ===

'''Cette option n'a pas encore été testée... A prendre avec précaution.'''

Cerise sur le gateau, vous disposez d'un serveur DNS bind. Nous pouvons alors coupler DHCP et BIND pour que ce dernier mette automatiquement à jour les IP dans ses fichiers de configuration:

==== dans /etc/dhcp/dhcpd.conf ====

Remplacer :

 ddns-update-style none;

Par :

&lt;code&gt;include &quot;/etc/bind/rndc.key&quot;;
ddns-updates on;
ddns-update-style interim;
ddns-domainname &quot;isalo.org.&quot;;
ddns-rev-domainname &quot;in-addr.arpa.&quot;;
ignore client-updates;
zone test.edu. { primary 127.0.0.1; key rndc-key; }
zone 192.in-addr.arpa. { primary 127.0.0.1; key rndc-key;  }&lt;/code&gt;

==== dans /etc/dhcp/dhcpd.conf ====

Configurez vos zones comme suit :

 controls {
 inet 127.0.0.1 allow { localhost; } keys { &quot;rndc-key&quot;; };
 };
 
 include &quot;/etc/bind/rndc.key&quot;;
 
 zone &quot;isalo.org&quot; {
         type master;
         file &quot;/etc/bind/db.isalo.org&quot;;
         allow-update { key &quot;rndc-key&quot;; };
         notify no;
         };
 zone &quot;192.in-addr.arpa&quot; {
         type master;
         file &quot;/etc/bind/db.192&quot;;
         allow-update { key &quot;rndc-key&quot;; };
         notify no;
         };

=== Test ===

Sur une machine cliente :

 # ifup eth0
 Internet Systems Consortium DHCP Client 4.1.1-P1
 Copyright 2004-2010 Internet Systems Consortium.
 All rights reserved.
 For info, please visit https://www.isc.org/software/dhcp/
 
 Listening on LPF/eth0/6c:f0:49:07:15:8b
 Sending on   LPF/eth0/6c:f0:49:07:15:8b
 Sending on   Socket/fallback
 DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4
 DHCPOFFER from 192.168.0.1
 DHCPREQUEST on eth0 to 255.255.255.255 port 67
 DHCPACK from 192.168.0.1
 bound to 192.168.0.2 -- renewal in 3552 seconds.

== Conclusion ==

Voilà, notre dhcp est configuré et opérationnel !
Très simple à mettre en place comme vous l'avez vu, votre dhcp est maintenant prêt à vous rendre de très nombreux services pour une gestion centralisée de votre réseau.

De nombreuses option existent, elles permettent de mieux servir vos clients. A vous de les découvrir...

[[Utilisateur:Lol|Lol]] 12 novembre 2010 à 10:05 (EAT)

[[Category:Serveurs]]</text>
      <sha1>pa7yxaq1mx8ity3aln3nbd8ilug265i</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2274</id>
      <parentid>2273</parentid>
      <timestamp>2010-11-12T08:55:26Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* DHCP, qu'est-ce que c'est ? */</comment>
      <text xml:space="preserve" bytes="12923">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;


Nous allons installer un serveur DHCP (à destination d'un petit réseau domestique, nous n'allons pas nous lancer dans la configuration d'une usine à gaz...) sur une squeeze.

== DHCP, qu'est-ce que c'est ? ==

Le DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Lorqu'il est convenablement configuré et fonctionnel, ce service est très pratique... Il permet d'administrer un réseau sans avoir à configurer machine après machine.
Toutes vos &quot;box&quot; possèdent ce service par défaut, d'une manière plus ou moins élaborée.

=== Détail du protocole DHCP ===

Lorsque vous connectez une machine à un réseau Ethernet TCP/IP, cette machine, pour fonctionner correctement, doit disposer :

# d'une adresse IP unique dans votre réseau et appartenant au même réseau;
# d'un masque de sous réseau, le même pour tous les hôtes du réseau (le &quot;netmask&quot;);
# d'une adresse d'un ou plusieurs DNS, pour pouvoir résoudre les noms des hôtes;
# de l'adresse de la passerelle qui permet d'accéder à Internet (le &quot;gateway&quot;)

'''Pour configurer vos hôtes locaux, vous avez trois possibilités :'''

# avec « zeroconf » (rfc3927). ce système s'il est fonctionnel ne permet aucune administration du réseau;
# vous passez de machine en machine, et configurez les paramètres réseau;
# vous installez un serveur DHCP sur votre réseau et vous dites à vos clients de configurer leur réseau par dhcp.

'''Détail de fonctionnement du protocole'''

# Le client DHCP démarre, il envoie une trame « DHCPDISCOVER », destinée à trouver un serveur DHCP.

&lt;code&gt;Listening on LPF/eth0/6c:f0:49:07:15:8b
Sending on LPF/eth0/6c:f0:49:07:15:8b
Sending on Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4&lt;/code&gt;

# Le (ou les) serveur(s) DHCP du réseau réponde(nt) par un « DHCPOFFER ». Cette trame contient une proposition de bail, la « MAC Address » du client, et l'adresse IP du serveur. Le client accepte normalement la première réponse venue.

 DHCPOFFER from 192.168.0.254

# Le client envoie alors un DHCPREQUEST à tous les serveurs (toujours en « Broadcast ») pour indiquer quelle offre il accepte.

 DHCPREQUEST on eth0 to 255.255.255.255 port 67

# Le serveur DHCP concerné répond définitivement par un DHCPACK qui constitue une confirmation du bail. L'adresse du client est alors marquée comme utilisée et ne sera plus proposée à un autre client pour toute la durée du bail.

 DHCPACK from 192.168.0.254
 bound to 192.168.0.2 -- renewal in 2850 seconds.

Un serveur DHCP a à sa disposition une plage d'adresses dans laquelle il est enfermé. Il tient à jour une base de données des adresses déjà utilisées et en cours d'utilisation. C'est ce qui explique que bien qu'attribuées dynamiquement, l'IP servie est souvent la même pour un client.

Lorsqu'il attribue une adresse, il le fait par l'intermédiaire d'un bail. Ce bail a normalement une durée limitée dans le temps. Tout ceci est configurable. L'avantage d'un bail long est une diminution du trafic vers le serveur dhcp. L'inconvénient, c'est qu'il faut planifier plus longtemps à l'avance des modification dans l'architecture de son réseau.

Après expiration du bail, ou résiliation par le client, les informations concernant ce bail restent mémorisées dans la base de données du serveur pendant un certain temps.

== Installation du serveur DHCP ==

Sur Debian, ceci se fait très simplement en installant les paquetages isc-dhcp-server et isc-dhcp-common.

 # apt-get update
 # apt-get install isc-dhcp-server isc-dhcp-common

== Configuration ==

=== Définition de l'interface ===

Le « daemon » dhcpd écoute par défaut sur toutes les interfaces réseau actives sur le serveur. Pour des raison de sécurité ce n'est pas souhaitable.
Pour Debian Squeeze, il faudra éditer le fichier /etc/default/isc-dhcp-server. Si vous souhaitez que votre dhcp écoute sur une seule interface, il faut la définir ici:

 INTERFACES=&quot;eth0&quot;

=== Le fichier /etc/dhcp/dhcpd.conf ===

La configuration de votre dhcp se trouve dans un seul fichier : /etc/dhcp/dhcpd.conf

Voici le fichier &quot;original&quot;

&lt;code&gt;# cat /etc/dhcp/dhcpd.conf
#
# Sample configuration file for ISC dhcpd for Debian
#
#

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;

# option definitions common to all supported networks...
option domain-name &quot;example.org&quot;;
option domain-name-servers ns1.example.org, ns2.example.org;

default-lease-time 600;
max-lease-time 7200;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# No service will be given on this subnet, but declaring it helps the 
# DHCP server to understand the network topology.

#subnet 10.152.187.0 netmask 255.255.255.0 {
#}

# This is a very basic subnet declaration.

#subnet 10.254.239.0 netmask 255.255.255.224 {
#  range 10.254.239.10 10.254.239.20;
#  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
#}

# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.

#subnet 10.254.239.32 netmask 255.255.255.224 {
#  range dynamic-bootp 10.254.239.40 10.254.239.60;
#  option broadcast-address 10.254.239.31;
#  option routers rtr-239-32-1.example.org;
#}

# A slightly different configuration for an internal subnet.
#subnet 10.5.5.0 netmask 255.255.255.224 {
#  range 10.5.5.26 10.5.5.30;
#  option domain-name-servers ns1.internal.example.org;
#  option domain-name &quot;internal.example.org&quot;;
#  option routers 10.5.5.1;
#  option broadcast-address 10.5.5.31;
#  default-lease-time 600;
#  max-lease-time 7200;
#}

# Hosts which require special configuration options can be listed in
# host statements.   If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.

#host passacaglia {
#  hardware ethernet 0:0:c0:5d:bd:95;
#  filename &quot;vmunix.passacaglia&quot;;
#  server-name &quot;toccata.fugue.com&quot;;
#}

# Fixed IP addresses can also be specified for hosts.   These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP.   Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
#host fantasia {
#  hardware ethernet 08:00:07:26:c0:a5;
#  fixed-address fantasia.fugue.com;
#}

# You can declare a class of clients and then do address allocation
# based on that.   The example below shows a case where all clients
# in a certain class get addresses on the 10.17.224/24 subnet, and all
# other clients get addresses on the 10.0.29/24 subnet.

#class &quot;foo&quot; {
#  match if substring (option vendor-class-identifier, 0, 4) = &quot;SUNW&quot;;
#}

#shared-network 224-29 {
#  subnet 10.17.224.0 netmask 255.255.255.0 {
#    option routers rtr-224.example.org;
#  }
#  subnet 10.0.29.0 netmask 255.255.255.0 {
#    option routers rtr-29.example.org;
#  }
#  pool {
#    allow members of &quot;foo&quot;;
#    range 10.17.224.10 10.17.224.250;
#  }
#  pool {
#    deny members of &quot;foo&quot;;
#    range 10.0.29.10 10.0.29.230;
#  }
#}&lt;/code&gt;

Une sauvegarde s'impose :

 # cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.ori

Voici notre fichier &quot;modifié&quot;

&lt;code&gt;# cat /etc/dhcp/dhcpd.conf
ddns-update-style none;
authoritative;

option domain-name &quot;isalo.org&quot;;
default-lease-time 7200;
max-lease-time 86400;
log-facility local7;

subnet 192.168.0.0 netmask 255.255.255.0 {
        pool {
                option domain-name-servers 192.168.0.1,41.188.9.130;
                range 192.168.0.199 192.168.0.249;
        }
        option routers 192.168.0.254;
        option domain-name &quot;isalo.org&quot;;
        option domain-name-servers 192.168.0.1,41.188.9.130;
        option netbios-name-servers 192.168.0.6;
        option netbios-node-type 8;
        option tftp-server-name &quot;192.168.0.6&quot;;

        next-server 192.168.0.6;
        filename &quot;pxelinux.0&quot;;
}
host s_lan_0 {
	hardware ethernet 00:25:11:79:8a:76;
	fixed-address 192.168.0.1;
	option host-name lol;
}&lt;/code&gt;

==== Explications ====

ddns-update-style: Vous pouvez demander au serveur DHCP de mettre à jour un serveur DNS si l'adresse IP d'un serveur dans votre réseau local a changé (car elle a été attribuée une adresse IP différente par DHCP).
Si vous n'avez pas de serveurs DNS dans notre LAN ou donnez des adresses IP statiques (qui est une bonne idée pour les serveurs ...) vous ne voudrez pas mettre à jour les enregistrements DNS, vous mettrez donc &quot;none&quot;

 ddns-update-style none;

Ce serveur fait autorité sur le réseau

 authoritative;

Les options globales

 #option time-servers 192.168.0.252;
 max-lease-time 7200;
 default-lease-time 86400;

Le réseau 192.168.0.0/24, avec la réserve d'adresses dynamiques, les IP des DNS, l'adresse du routeur, la définition du domaine de recherche, et trois lignes permettant de trouver un serveur PXE qui se trouve sur le réseau à l'IP 192.168.0.6

 subnet 192.168.0.0 netmask 255.255.255.0 {
         pool {
                 option domain-name-servers 192.168.0.1,41.188.9.130;
                 range 192.168.0.199 192.168.0.249;
         }
         option routers 192.168.0.254;
         option domain-name &quot;isalo.org&quot;;
         option domain-name-servers 192.168.0.1,41.188.9.130;
         option netbios-name-servers 192.168.0.6;

         option tftp-server-name &quot;192.168.0.6&quot;;
         next-server 192.168.0.6;
         filename &quot;pxelinux.0&quot;;
 }

==== Les réservation d'adresses ====

Nous attriburons automatiquement l'IP 192.168.0.1 à la machine qui dispose de l'adresse MAC 00:25:11:79:8a:76.

 host s_lan_0 {
 	hardware ethernet 00:25:11:79:8a:76;
 	fixed-address 192.168.0.1;
 	option host-name lol;
 }

=== Coupler DHCP avec BIND9 ===

'''Cette option n'a pas encore été testée... A prendre avec précaution.'''

Cerise sur le gateau, vous disposez d'un serveur DNS bind. Nous pouvons alors coupler DHCP et BIND pour que ce dernier mette automatiquement à jour les IP dans ses fichiers de configuration:

==== dans /etc/dhcp/dhcpd.conf ====

Remplacer :

 ddns-update-style none;

Par :

&lt;code&gt;include &quot;/etc/bind/rndc.key&quot;;
ddns-updates on;
ddns-update-style interim;
ddns-domainname &quot;isalo.org.&quot;;
ddns-rev-domainname &quot;in-addr.arpa.&quot;;
ignore client-updates;
zone test.edu. { primary 127.0.0.1; key rndc-key; }
zone 192.in-addr.arpa. { primary 127.0.0.1; key rndc-key;  }&lt;/code&gt;

==== dans /etc/dhcp/dhcpd.conf ====

Configurez vos zones comme suit :

 controls {
 inet 127.0.0.1 allow { localhost; } keys { &quot;rndc-key&quot;; };
 };
 
 include &quot;/etc/bind/rndc.key&quot;;
 
 zone &quot;isalo.org&quot; {
         type master;
         file &quot;/etc/bind/db.isalo.org&quot;;
         allow-update { key &quot;rndc-key&quot;; };
         notify no;
         };
 zone &quot;192.in-addr.arpa&quot; {
         type master;
         file &quot;/etc/bind/db.192&quot;;
         allow-update { key &quot;rndc-key&quot;; };
         notify no;
         };

=== Test ===

Sur une machine cliente :

 # ifup eth0
 Internet Systems Consortium DHCP Client 4.1.1-P1
 Copyright 2004-2010 Internet Systems Consortium.
 All rights reserved.
 For info, please visit https://www.isc.org/software/dhcp/
 
 Listening on LPF/eth0/6c:f0:49:07:15:8b
 Sending on   LPF/eth0/6c:f0:49:07:15:8b
 Sending on   Socket/fallback
 DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4
 DHCPOFFER from 192.168.0.1
 DHCPREQUEST on eth0 to 255.255.255.255 port 67
 DHCPACK from 192.168.0.1
 bound to 192.168.0.2 -- renewal in 3552 seconds.

== Conclusion ==

Voilà, notre dhcp est configuré et opérationnel !
Très simple à mettre en place comme vous l'avez vu, votre dhcp est maintenant prêt à vous rendre de très nombreux services pour une gestion centralisée de votre réseau.

De nombreuses option existent, elles permettent de mieux servir vos clients. A vous de les découvrir...

[[Utilisateur:Lol|Lol]] 12 novembre 2010 à 10:05 (EAT)

[[Category:Serveurs]]</text>
      <sha1>nstr2kpdogluqyyuva6ls0eki4kir2d</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2275</id>
      <parentid>2274</parentid>
      <timestamp>2010-11-12T08:56:33Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Détail du protocole DHCP */</comment>
      <text xml:space="preserve" bytes="12931">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;


Nous allons installer un serveur DHCP (à destination d'un petit réseau domestique, nous n'allons pas nous lancer dans la configuration d'une usine à gaz...) sur une squeeze.

== DHCP, qu'est-ce que c'est ? ==

Le DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Lorqu'il est convenablement configuré et fonctionnel, ce service est très pratique... Il permet d'administrer un réseau sans avoir à configurer machine après machine.
Toutes vos &quot;box&quot; possèdent ce service par défaut, d'une manière plus ou moins élaborée.

=== Détail du protocole DHCP ===

Lorsque vous connectez une machine à un réseau Ethernet TCP/IP, cette machine, pour fonctionner correctement, doit disposer :

# d'une adresse IP unique dans votre réseau et appartenant au même réseau;
# d'un masque de sous réseau, le même pour tous les hôtes du réseau (le &quot;netmask&quot;);
# d'une adresse d'un ou plusieurs DNS, pour pouvoir résoudre les noms des hôtes;
# de l'adresse de la passerelle qui permet d'accéder à Internet (le &quot;gateway&quot;)

'''Pour configurer vos hôtes locaux, vous avez trois possibilités :'''

# avec « zeroconf » (rfc3927). ce système s'il est fonctionnel ne permet aucune administration du réseau;
# vous passez de machine en machine, et configurez les paramètres réseau;
# vous installez un serveur DHCP sur votre réseau et vous dites à vos clients de configurer leur réseau par dhcp.

'''Détail de fonctionnement du protocole'''

:1) Le client DHCP démarre, il envoie une trame « DHCPDISCOVER », destinée à trouver un serveur DHCP.

&lt;code&gt;Listening on LPF/eth0/6c:f0:49:07:15:8b
Sending on LPF/eth0/6c:f0:49:07:15:8b
Sending on Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4&lt;/code&gt;

:2) Le (ou les) serveur(s) DHCP du réseau réponde(nt) par un « DHCPOFFER ». Cette trame contient une proposition de bail, la « MAC Address » du client, et l'adresse IP du serveur. Le client accepte normalement la première réponse venue.

 DHCPOFFER from 192.168.0.254

:3) Le client envoie alors un DHCPREQUEST à tous les serveurs (toujours en « Broadcast ») pour indiquer quelle offre il accepte.

 DHCPREQUEST on eth0 to 255.255.255.255 port 67

:4) Le serveur DHCP concerné répond définitivement par un DHCPACK qui constitue une confirmation du bail. L'adresse du client est alors marquée comme utilisée et ne sera plus proposée à un autre client pour toute la durée du bail.

 DHCPACK from 192.168.0.254
 bound to 192.168.0.2 -- renewal in 2850 seconds.

Un serveur DHCP a à sa disposition une plage d'adresses dans laquelle il est enfermé. Il tient à jour une base de données des adresses déjà utilisées et en cours d'utilisation. C'est ce qui explique que bien qu'attribuées dynamiquement, l'IP servie est souvent la même pour un client.

Lorsqu'il attribue une adresse, il le fait par l'intermédiaire d'un bail. Ce bail a normalement une durée limitée dans le temps. Tout ceci est configurable. L'avantage d'un bail long est une diminution du trafic vers le serveur dhcp. L'inconvénient, c'est qu'il faut planifier plus longtemps à l'avance des modification dans l'architecture de son réseau.

Après expiration du bail, ou résiliation par le client, les informations concernant ce bail restent mémorisées dans la base de données du serveur pendant un certain temps.

== Installation du serveur DHCP ==

Sur Debian, ceci se fait très simplement en installant les paquetages isc-dhcp-server et isc-dhcp-common.

 # apt-get update
 # apt-get install isc-dhcp-server isc-dhcp-common

== Configuration ==

=== Définition de l'interface ===

Le « daemon » dhcpd écoute par défaut sur toutes les interfaces réseau actives sur le serveur. Pour des raison de sécurité ce n'est pas souhaitable.
Pour Debian Squeeze, il faudra éditer le fichier /etc/default/isc-dhcp-server. Si vous souhaitez que votre dhcp écoute sur une seule interface, il faut la définir ici:

 INTERFACES=&quot;eth0&quot;

=== Le fichier /etc/dhcp/dhcpd.conf ===

La configuration de votre dhcp se trouve dans un seul fichier : /etc/dhcp/dhcpd.conf

Voici le fichier &quot;original&quot;

&lt;code&gt;# cat /etc/dhcp/dhcpd.conf
#
# Sample configuration file for ISC dhcpd for Debian
#
#

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;

# option definitions common to all supported networks...
option domain-name &quot;example.org&quot;;
option domain-name-servers ns1.example.org, ns2.example.org;

default-lease-time 600;
max-lease-time 7200;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# No service will be given on this subnet, but declaring it helps the 
# DHCP server to understand the network topology.

#subnet 10.152.187.0 netmask 255.255.255.0 {
#}

# This is a very basic subnet declaration.

#subnet 10.254.239.0 netmask 255.255.255.224 {
#  range 10.254.239.10 10.254.239.20;
#  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
#}

# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.

#subnet 10.254.239.32 netmask 255.255.255.224 {
#  range dynamic-bootp 10.254.239.40 10.254.239.60;
#  option broadcast-address 10.254.239.31;
#  option routers rtr-239-32-1.example.org;
#}

# A slightly different configuration for an internal subnet.
#subnet 10.5.5.0 netmask 255.255.255.224 {
#  range 10.5.5.26 10.5.5.30;
#  option domain-name-servers ns1.internal.example.org;
#  option domain-name &quot;internal.example.org&quot;;
#  option routers 10.5.5.1;
#  option broadcast-address 10.5.5.31;
#  default-lease-time 600;
#  max-lease-time 7200;
#}

# Hosts which require special configuration options can be listed in
# host statements.   If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.

#host passacaglia {
#  hardware ethernet 0:0:c0:5d:bd:95;
#  filename &quot;vmunix.passacaglia&quot;;
#  server-name &quot;toccata.fugue.com&quot;;
#}

# Fixed IP addresses can also be specified for hosts.   These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP.   Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
#host fantasia {
#  hardware ethernet 08:00:07:26:c0:a5;
#  fixed-address fantasia.fugue.com;
#}

# You can declare a class of clients and then do address allocation
# based on that.   The example below shows a case where all clients
# in a certain class get addresses on the 10.17.224/24 subnet, and all
# other clients get addresses on the 10.0.29/24 subnet.

#class &quot;foo&quot; {
#  match if substring (option vendor-class-identifier, 0, 4) = &quot;SUNW&quot;;
#}

#shared-network 224-29 {
#  subnet 10.17.224.0 netmask 255.255.255.0 {
#    option routers rtr-224.example.org;
#  }
#  subnet 10.0.29.0 netmask 255.255.255.0 {
#    option routers rtr-29.example.org;
#  }
#  pool {
#    allow members of &quot;foo&quot;;
#    range 10.17.224.10 10.17.224.250;
#  }
#  pool {
#    deny members of &quot;foo&quot;;
#    range 10.0.29.10 10.0.29.230;
#  }
#}&lt;/code&gt;

Une sauvegarde s'impose :

 # cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.ori

Voici notre fichier &quot;modifié&quot;

&lt;code&gt;# cat /etc/dhcp/dhcpd.conf
ddns-update-style none;
authoritative;

option domain-name &quot;isalo.org&quot;;
default-lease-time 7200;
max-lease-time 86400;
log-facility local7;

subnet 192.168.0.0 netmask 255.255.255.0 {
        pool {
                option domain-name-servers 192.168.0.1,41.188.9.130;
                range 192.168.0.199 192.168.0.249;
        }
        option routers 192.168.0.254;
        option domain-name &quot;isalo.org&quot;;
        option domain-name-servers 192.168.0.1,41.188.9.130;
        option netbios-name-servers 192.168.0.6;
        option netbios-node-type 8;
        option tftp-server-name &quot;192.168.0.6&quot;;

        next-server 192.168.0.6;
        filename &quot;pxelinux.0&quot;;
}
host s_lan_0 {
	hardware ethernet 00:25:11:79:8a:76;
	fixed-address 192.168.0.1;
	option host-name lol;
}&lt;/code&gt;

==== Explications ====

ddns-update-style: Vous pouvez demander au serveur DHCP de mettre à jour un serveur DNS si l'adresse IP d'un serveur dans votre réseau local a changé (car elle a été attribuée une adresse IP différente par DHCP).
Si vous n'avez pas de serveurs DNS dans notre LAN ou donnez des adresses IP statiques (qui est une bonne idée pour les serveurs ...) vous ne voudrez pas mettre à jour les enregistrements DNS, vous mettrez donc &quot;none&quot;

 ddns-update-style none;

Ce serveur fait autorité sur le réseau

 authoritative;

Les options globales

 #option time-servers 192.168.0.252;
 max-lease-time 7200;
 default-lease-time 86400;

Le réseau 192.168.0.0/24, avec la réserve d'adresses dynamiques, les IP des DNS, l'adresse du routeur, la définition du domaine de recherche, et trois lignes permettant de trouver un serveur PXE qui se trouve sur le réseau à l'IP 192.168.0.6

 subnet 192.168.0.0 netmask 255.255.255.0 {
         pool {
                 option domain-name-servers 192.168.0.1,41.188.9.130;
                 range 192.168.0.199 192.168.0.249;
         }
         option routers 192.168.0.254;
         option domain-name &quot;isalo.org&quot;;
         option domain-name-servers 192.168.0.1,41.188.9.130;
         option netbios-name-servers 192.168.0.6;

         option tftp-server-name &quot;192.168.0.6&quot;;
         next-server 192.168.0.6;
         filename &quot;pxelinux.0&quot;;
 }

==== Les réservation d'adresses ====

Nous attriburons automatiquement l'IP 192.168.0.1 à la machine qui dispose de l'adresse MAC 00:25:11:79:8a:76.

 host s_lan_0 {
 	hardware ethernet 00:25:11:79:8a:76;
 	fixed-address 192.168.0.1;
 	option host-name lol;
 }

=== Coupler DHCP avec BIND9 ===

'''Cette option n'a pas encore été testée... A prendre avec précaution.'''

Cerise sur le gateau, vous disposez d'un serveur DNS bind. Nous pouvons alors coupler DHCP et BIND pour que ce dernier mette automatiquement à jour les IP dans ses fichiers de configuration:

==== dans /etc/dhcp/dhcpd.conf ====

Remplacer :

 ddns-update-style none;

Par :

&lt;code&gt;include &quot;/etc/bind/rndc.key&quot;;
ddns-updates on;
ddns-update-style interim;
ddns-domainname &quot;isalo.org.&quot;;
ddns-rev-domainname &quot;in-addr.arpa.&quot;;
ignore client-updates;
zone test.edu. { primary 127.0.0.1; key rndc-key; }
zone 192.in-addr.arpa. { primary 127.0.0.1; key rndc-key;  }&lt;/code&gt;

==== dans /etc/dhcp/dhcpd.conf ====

Configurez vos zones comme suit :

 controls {
 inet 127.0.0.1 allow { localhost; } keys { &quot;rndc-key&quot;; };
 };
 
 include &quot;/etc/bind/rndc.key&quot;;
 
 zone &quot;isalo.org&quot; {
         type master;
         file &quot;/etc/bind/db.isalo.org&quot;;
         allow-update { key &quot;rndc-key&quot;; };
         notify no;
         };
 zone &quot;192.in-addr.arpa&quot; {
         type master;
         file &quot;/etc/bind/db.192&quot;;
         allow-update { key &quot;rndc-key&quot;; };
         notify no;
         };

=== Test ===

Sur une machine cliente :

 # ifup eth0
 Internet Systems Consortium DHCP Client 4.1.1-P1
 Copyright 2004-2010 Internet Systems Consortium.
 All rights reserved.
 For info, please visit https://www.isc.org/software/dhcp/
 
 Listening on LPF/eth0/6c:f0:49:07:15:8b
 Sending on   LPF/eth0/6c:f0:49:07:15:8b
 Sending on   Socket/fallback
 DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4
 DHCPOFFER from 192.168.0.1
 DHCPREQUEST on eth0 to 255.255.255.255 port 67
 DHCPACK from 192.168.0.1
 bound to 192.168.0.2 -- renewal in 3552 seconds.

== Conclusion ==

Voilà, notre dhcp est configuré et opérationnel !
Très simple à mettre en place comme vous l'avez vu, votre dhcp est maintenant prêt à vous rendre de très nombreux services pour une gestion centralisée de votre réseau.

De nombreuses option existent, elles permettent de mieux servir vos clients. A vous de les découvrir...

[[Utilisateur:Lol|Lol]] 12 novembre 2010 à 10:05 (EAT)

[[Category:Serveurs]]</text>
      <sha1>7pse11iyltfdkn5ah5anitcaa5ngu48</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2276</id>
      <parentid>2275</parentid>
      <timestamp>2010-11-12T12:15:27Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Les réservation d'adresses */</comment>
      <text xml:space="preserve" bytes="12933">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;


Nous allons installer un serveur DHCP (à destination d'un petit réseau domestique, nous n'allons pas nous lancer dans la configuration d'une usine à gaz...) sur une squeeze.

== DHCP, qu'est-ce que c'est ? ==

Le DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Lorqu'il est convenablement configuré et fonctionnel, ce service est très pratique... Il permet d'administrer un réseau sans avoir à configurer machine après machine.
Toutes vos &quot;box&quot; possèdent ce service par défaut, d'une manière plus ou moins élaborée.

=== Détail du protocole DHCP ===

Lorsque vous connectez une machine à un réseau Ethernet TCP/IP, cette machine, pour fonctionner correctement, doit disposer :

# d'une adresse IP unique dans votre réseau et appartenant au même réseau;
# d'un masque de sous réseau, le même pour tous les hôtes du réseau (le &quot;netmask&quot;);
# d'une adresse d'un ou plusieurs DNS, pour pouvoir résoudre les noms des hôtes;
# de l'adresse de la passerelle qui permet d'accéder à Internet (le &quot;gateway&quot;)

'''Pour configurer vos hôtes locaux, vous avez trois possibilités :'''

# avec « zeroconf » (rfc3927). ce système s'il est fonctionnel ne permet aucune administration du réseau;
# vous passez de machine en machine, et configurez les paramètres réseau;
# vous installez un serveur DHCP sur votre réseau et vous dites à vos clients de configurer leur réseau par dhcp.

'''Détail de fonctionnement du protocole'''

:1) Le client DHCP démarre, il envoie une trame « DHCPDISCOVER », destinée à trouver un serveur DHCP.

&lt;code&gt;Listening on LPF/eth0/6c:f0:49:07:15:8b
Sending on LPF/eth0/6c:f0:49:07:15:8b
Sending on Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4&lt;/code&gt;

:2) Le (ou les) serveur(s) DHCP du réseau réponde(nt) par un « DHCPOFFER ». Cette trame contient une proposition de bail, la « MAC Address » du client, et l'adresse IP du serveur. Le client accepte normalement la première réponse venue.

 DHCPOFFER from 192.168.0.254

:3) Le client envoie alors un DHCPREQUEST à tous les serveurs (toujours en « Broadcast ») pour indiquer quelle offre il accepte.

 DHCPREQUEST on eth0 to 255.255.255.255 port 67

:4) Le serveur DHCP concerné répond définitivement par un DHCPACK qui constitue une confirmation du bail. L'adresse du client est alors marquée comme utilisée et ne sera plus proposée à un autre client pour toute la durée du bail.

 DHCPACK from 192.168.0.254
 bound to 192.168.0.2 -- renewal in 2850 seconds.

Un serveur DHCP a à sa disposition une plage d'adresses dans laquelle il est enfermé. Il tient à jour une base de données des adresses déjà utilisées et en cours d'utilisation. C'est ce qui explique que bien qu'attribuées dynamiquement, l'IP servie est souvent la même pour un client.

Lorsqu'il attribue une adresse, il le fait par l'intermédiaire d'un bail. Ce bail a normalement une durée limitée dans le temps. Tout ceci est configurable. L'avantage d'un bail long est une diminution du trafic vers le serveur dhcp. L'inconvénient, c'est qu'il faut planifier plus longtemps à l'avance des modification dans l'architecture de son réseau.

Après expiration du bail, ou résiliation par le client, les informations concernant ce bail restent mémorisées dans la base de données du serveur pendant un certain temps.

== Installation du serveur DHCP ==

Sur Debian, ceci se fait très simplement en installant les paquetages isc-dhcp-server et isc-dhcp-common.

 # apt-get update
 # apt-get install isc-dhcp-server isc-dhcp-common

== Configuration ==

=== Définition de l'interface ===

Le « daemon » dhcpd écoute par défaut sur toutes les interfaces réseau actives sur le serveur. Pour des raison de sécurité ce n'est pas souhaitable.
Pour Debian Squeeze, il faudra éditer le fichier /etc/default/isc-dhcp-server. Si vous souhaitez que votre dhcp écoute sur une seule interface, il faut la définir ici:

 INTERFACES=&quot;eth0&quot;

=== Le fichier /etc/dhcp/dhcpd.conf ===

La configuration de votre dhcp se trouve dans un seul fichier : /etc/dhcp/dhcpd.conf

Voici le fichier &quot;original&quot;

&lt;code&gt;# cat /etc/dhcp/dhcpd.conf
#
# Sample configuration file for ISC dhcpd for Debian
#
#

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;

# option definitions common to all supported networks...
option domain-name &quot;example.org&quot;;
option domain-name-servers ns1.example.org, ns2.example.org;

default-lease-time 600;
max-lease-time 7200;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# No service will be given on this subnet, but declaring it helps the 
# DHCP server to understand the network topology.

#subnet 10.152.187.0 netmask 255.255.255.0 {
#}

# This is a very basic subnet declaration.

#subnet 10.254.239.0 netmask 255.255.255.224 {
#  range 10.254.239.10 10.254.239.20;
#  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
#}

# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.

#subnet 10.254.239.32 netmask 255.255.255.224 {
#  range dynamic-bootp 10.254.239.40 10.254.239.60;
#  option broadcast-address 10.254.239.31;
#  option routers rtr-239-32-1.example.org;
#}

# A slightly different configuration for an internal subnet.
#subnet 10.5.5.0 netmask 255.255.255.224 {
#  range 10.5.5.26 10.5.5.30;
#  option domain-name-servers ns1.internal.example.org;
#  option domain-name &quot;internal.example.org&quot;;
#  option routers 10.5.5.1;
#  option broadcast-address 10.5.5.31;
#  default-lease-time 600;
#  max-lease-time 7200;
#}

# Hosts which require special configuration options can be listed in
# host statements.   If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.

#host passacaglia {
#  hardware ethernet 0:0:c0:5d:bd:95;
#  filename &quot;vmunix.passacaglia&quot;;
#  server-name &quot;toccata.fugue.com&quot;;
#}

# Fixed IP addresses can also be specified for hosts.   These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP.   Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
#host fantasia {
#  hardware ethernet 08:00:07:26:c0:a5;
#  fixed-address fantasia.fugue.com;
#}

# You can declare a class of clients and then do address allocation
# based on that.   The example below shows a case where all clients
# in a certain class get addresses on the 10.17.224/24 subnet, and all
# other clients get addresses on the 10.0.29/24 subnet.

#class &quot;foo&quot; {
#  match if substring (option vendor-class-identifier, 0, 4) = &quot;SUNW&quot;;
#}

#shared-network 224-29 {
#  subnet 10.17.224.0 netmask 255.255.255.0 {
#    option routers rtr-224.example.org;
#  }
#  subnet 10.0.29.0 netmask 255.255.255.0 {
#    option routers rtr-29.example.org;
#  }
#  pool {
#    allow members of &quot;foo&quot;;
#    range 10.17.224.10 10.17.224.250;
#  }
#  pool {
#    deny members of &quot;foo&quot;;
#    range 10.0.29.10 10.0.29.230;
#  }
#}&lt;/code&gt;

Une sauvegarde s'impose :

 # cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.ori

Voici notre fichier &quot;modifié&quot;

&lt;code&gt;# cat /etc/dhcp/dhcpd.conf
ddns-update-style none;
authoritative;

option domain-name &quot;isalo.org&quot;;
default-lease-time 7200;
max-lease-time 86400;
log-facility local7;

subnet 192.168.0.0 netmask 255.255.255.0 {
        pool {
                option domain-name-servers 192.168.0.1,41.188.9.130;
                range 192.168.0.199 192.168.0.249;
        }
        option routers 192.168.0.254;
        option domain-name &quot;isalo.org&quot;;
        option domain-name-servers 192.168.0.1,41.188.9.130;
        option netbios-name-servers 192.168.0.6;
        option netbios-node-type 8;
        option tftp-server-name &quot;192.168.0.6&quot;;

        next-server 192.168.0.6;
        filename &quot;pxelinux.0&quot;;
}
host s_lan_0 {
	hardware ethernet 00:25:11:79:8a:76;
	fixed-address 192.168.0.1;
	option host-name lol;
}&lt;/code&gt;

==== Explications ====

ddns-update-style: Vous pouvez demander au serveur DHCP de mettre à jour un serveur DNS si l'adresse IP d'un serveur dans votre réseau local a changé (car elle a été attribuée une adresse IP différente par DHCP).
Si vous n'avez pas de serveurs DNS dans notre LAN ou donnez des adresses IP statiques (qui est une bonne idée pour les serveurs ...) vous ne voudrez pas mettre à jour les enregistrements DNS, vous mettrez donc &quot;none&quot;

 ddns-update-style none;

Ce serveur fait autorité sur le réseau

 authoritative;

Les options globales

 #option time-servers 192.168.0.252;
 max-lease-time 7200;
 default-lease-time 86400;

Le réseau 192.168.0.0/24, avec la réserve d'adresses dynamiques, les IP des DNS, l'adresse du routeur, la définition du domaine de recherche, et trois lignes permettant de trouver un serveur PXE qui se trouve sur le réseau à l'IP 192.168.0.6

 subnet 192.168.0.0 netmask 255.255.255.0 {
         pool {
                 option domain-name-servers 192.168.0.1,41.188.9.130;
                 range 192.168.0.199 192.168.0.249;
         }
         option routers 192.168.0.254;
         option domain-name &quot;isalo.org&quot;;
         option domain-name-servers 192.168.0.1,41.188.9.130;
         option netbios-name-servers 192.168.0.6;

         option tftp-server-name &quot;192.168.0.6&quot;;
         next-server 192.168.0.6;
         filename &quot;pxelinux.0&quot;;
 }

==== Les réservations d'adresses ====

Nous attribuerons automatiquement l'IP 192.168.0.1 à la machine qui dispose de l'adresse MAC 00:25:11:79:8a:76.

 host s_lan_0 {
 	hardware ethernet 00:25:11:79:8a:76;
 	fixed-address 192.168.0.1;
 	option host-name lol;
 }

=== Coupler DHCP avec BIND9 ===

'''Cette option n'a pas encore été testée... A prendre avec précaution.'''

Cerise sur le gateau, vous disposez d'un serveur DNS bind. Nous pouvons alors coupler DHCP et BIND pour que ce dernier mette automatiquement à jour les IP dans ses fichiers de configuration:

==== dans /etc/dhcp/dhcpd.conf ====

Remplacer :

 ddns-update-style none;

Par :

&lt;code&gt;include &quot;/etc/bind/rndc.key&quot;;
ddns-updates on;
ddns-update-style interim;
ddns-domainname &quot;isalo.org.&quot;;
ddns-rev-domainname &quot;in-addr.arpa.&quot;;
ignore client-updates;
zone test.edu. { primary 127.0.0.1; key rndc-key; }
zone 192.in-addr.arpa. { primary 127.0.0.1; key rndc-key;  }&lt;/code&gt;

==== dans /etc/dhcp/dhcpd.conf ====

Configurez vos zones comme suit :

 controls {
 inet 127.0.0.1 allow { localhost; } keys { &quot;rndc-key&quot;; };
 };
 
 include &quot;/etc/bind/rndc.key&quot;;
 
 zone &quot;isalo.org&quot; {
         type master;
         file &quot;/etc/bind/db.isalo.org&quot;;
         allow-update { key &quot;rndc-key&quot;; };
         notify no;
         };
 zone &quot;192.in-addr.arpa&quot; {
         type master;
         file &quot;/etc/bind/db.192&quot;;
         allow-update { key &quot;rndc-key&quot;; };
         notify no;
         };

=== Test ===

Sur une machine cliente :

 # ifup eth0
 Internet Systems Consortium DHCP Client 4.1.1-P1
 Copyright 2004-2010 Internet Systems Consortium.
 All rights reserved.
 For info, please visit https://www.isc.org/software/dhcp/
 
 Listening on LPF/eth0/6c:f0:49:07:15:8b
 Sending on   LPF/eth0/6c:f0:49:07:15:8b
 Sending on   Socket/fallback
 DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4
 DHCPOFFER from 192.168.0.1
 DHCPREQUEST on eth0 to 255.255.255.255 port 67
 DHCPACK from 192.168.0.1
 bound to 192.168.0.2 -- renewal in 3552 seconds.

== Conclusion ==

Voilà, notre dhcp est configuré et opérationnel !
Très simple à mettre en place comme vous l'avez vu, votre dhcp est maintenant prêt à vous rendre de très nombreux services pour une gestion centralisée de votre réseau.

De nombreuses option existent, elles permettent de mieux servir vos clients. A vous de les découvrir...

[[Utilisateur:Lol|Lol]] 12 novembre 2010 à 10:05 (EAT)

[[Category:Serveurs]]</text>
      <sha1>7qxrfngmzm8hiiqmazr0q9528zt4qnz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2277</id>
      <parentid>2276</parentid>
      <timestamp>2010-11-12T14:34:28Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Les réservations d'adresses */</comment>
      <text xml:space="preserve" bytes="13105">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;


Nous allons installer un serveur DHCP (à destination d'un petit réseau domestique, nous n'allons pas nous lancer dans la configuration d'une usine à gaz...) sur une squeeze.

== DHCP, qu'est-ce que c'est ? ==

Le DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Lorqu'il est convenablement configuré et fonctionnel, ce service est très pratique... Il permet d'administrer un réseau sans avoir à configurer machine après machine.
Toutes vos &quot;box&quot; possèdent ce service par défaut, d'une manière plus ou moins élaborée.

=== Détail du protocole DHCP ===

Lorsque vous connectez une machine à un réseau Ethernet TCP/IP, cette machine, pour fonctionner correctement, doit disposer :

# d'une adresse IP unique dans votre réseau et appartenant au même réseau;
# d'un masque de sous réseau, le même pour tous les hôtes du réseau (le &quot;netmask&quot;);
# d'une adresse d'un ou plusieurs DNS, pour pouvoir résoudre les noms des hôtes;
# de l'adresse de la passerelle qui permet d'accéder à Internet (le &quot;gateway&quot;)

'''Pour configurer vos hôtes locaux, vous avez trois possibilités :'''

# avec « zeroconf » (rfc3927). ce système s'il est fonctionnel ne permet aucune administration du réseau;
# vous passez de machine en machine, et configurez les paramètres réseau;
# vous installez un serveur DHCP sur votre réseau et vous dites à vos clients de configurer leur réseau par dhcp.

'''Détail de fonctionnement du protocole'''

:1) Le client DHCP démarre, il envoie une trame « DHCPDISCOVER », destinée à trouver un serveur DHCP.

&lt;code&gt;Listening on LPF/eth0/6c:f0:49:07:15:8b
Sending on LPF/eth0/6c:f0:49:07:15:8b
Sending on Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4&lt;/code&gt;

:2) Le (ou les) serveur(s) DHCP du réseau réponde(nt) par un « DHCPOFFER ». Cette trame contient une proposition de bail, la « MAC Address » du client, et l'adresse IP du serveur. Le client accepte normalement la première réponse venue.

 DHCPOFFER from 192.168.0.254

:3) Le client envoie alors un DHCPREQUEST à tous les serveurs (toujours en « Broadcast ») pour indiquer quelle offre il accepte.

 DHCPREQUEST on eth0 to 255.255.255.255 port 67

:4) Le serveur DHCP concerné répond définitivement par un DHCPACK qui constitue une confirmation du bail. L'adresse du client est alors marquée comme utilisée et ne sera plus proposée à un autre client pour toute la durée du bail.

 DHCPACK from 192.168.0.254
 bound to 192.168.0.2 -- renewal in 2850 seconds.

Un serveur DHCP a à sa disposition une plage d'adresses dans laquelle il est enfermé. Il tient à jour une base de données des adresses déjà utilisées et en cours d'utilisation. C'est ce qui explique que bien qu'attribuées dynamiquement, l'IP servie est souvent la même pour un client.

Lorsqu'il attribue une adresse, il le fait par l'intermédiaire d'un bail. Ce bail a normalement une durée limitée dans le temps. Tout ceci est configurable. L'avantage d'un bail long est une diminution du trafic vers le serveur dhcp. L'inconvénient, c'est qu'il faut planifier plus longtemps à l'avance des modification dans l'architecture de son réseau.

Après expiration du bail, ou résiliation par le client, les informations concernant ce bail restent mémorisées dans la base de données du serveur pendant un certain temps.

== Installation du serveur DHCP ==

Sur Debian, ceci se fait très simplement en installant les paquetages isc-dhcp-server et isc-dhcp-common.

 # apt-get update
 # apt-get install isc-dhcp-server isc-dhcp-common

== Configuration ==

=== Définition de l'interface ===

Le « daemon » dhcpd écoute par défaut sur toutes les interfaces réseau actives sur le serveur. Pour des raison de sécurité ce n'est pas souhaitable.
Pour Debian Squeeze, il faudra éditer le fichier /etc/default/isc-dhcp-server. Si vous souhaitez que votre dhcp écoute sur une seule interface, il faut la définir ici:

 INTERFACES=&quot;eth0&quot;

=== Le fichier /etc/dhcp/dhcpd.conf ===

La configuration de votre dhcp se trouve dans un seul fichier : /etc/dhcp/dhcpd.conf

Voici le fichier &quot;original&quot;

&lt;code&gt;# cat /etc/dhcp/dhcpd.conf
#
# Sample configuration file for ISC dhcpd for Debian
#
#

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;

# option definitions common to all supported networks...
option domain-name &quot;example.org&quot;;
option domain-name-servers ns1.example.org, ns2.example.org;

default-lease-time 600;
max-lease-time 7200;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# No service will be given on this subnet, but declaring it helps the 
# DHCP server to understand the network topology.

#subnet 10.152.187.0 netmask 255.255.255.0 {
#}

# This is a very basic subnet declaration.

#subnet 10.254.239.0 netmask 255.255.255.224 {
#  range 10.254.239.10 10.254.239.20;
#  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
#}

# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.

#subnet 10.254.239.32 netmask 255.255.255.224 {
#  range dynamic-bootp 10.254.239.40 10.254.239.60;
#  option broadcast-address 10.254.239.31;
#  option routers rtr-239-32-1.example.org;
#}

# A slightly different configuration for an internal subnet.
#subnet 10.5.5.0 netmask 255.255.255.224 {
#  range 10.5.5.26 10.5.5.30;
#  option domain-name-servers ns1.internal.example.org;
#  option domain-name &quot;internal.example.org&quot;;
#  option routers 10.5.5.1;
#  option broadcast-address 10.5.5.31;
#  default-lease-time 600;
#  max-lease-time 7200;
#}

# Hosts which require special configuration options can be listed in
# host statements.   If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.

#host passacaglia {
#  hardware ethernet 0:0:c0:5d:bd:95;
#  filename &quot;vmunix.passacaglia&quot;;
#  server-name &quot;toccata.fugue.com&quot;;
#}

# Fixed IP addresses can also be specified for hosts.   These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP.   Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
#host fantasia {
#  hardware ethernet 08:00:07:26:c0:a5;
#  fixed-address fantasia.fugue.com;
#}

# You can declare a class of clients and then do address allocation
# based on that.   The example below shows a case where all clients
# in a certain class get addresses on the 10.17.224/24 subnet, and all
# other clients get addresses on the 10.0.29/24 subnet.

#class &quot;foo&quot; {
#  match if substring (option vendor-class-identifier, 0, 4) = &quot;SUNW&quot;;
#}

#shared-network 224-29 {
#  subnet 10.17.224.0 netmask 255.255.255.0 {
#    option routers rtr-224.example.org;
#  }
#  subnet 10.0.29.0 netmask 255.255.255.0 {
#    option routers rtr-29.example.org;
#  }
#  pool {
#    allow members of &quot;foo&quot;;
#    range 10.17.224.10 10.17.224.250;
#  }
#  pool {
#    deny members of &quot;foo&quot;;
#    range 10.0.29.10 10.0.29.230;
#  }
#}&lt;/code&gt;

Une sauvegarde s'impose :

 # cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.ori

Voici notre fichier &quot;modifié&quot;

&lt;code&gt;# cat /etc/dhcp/dhcpd.conf
ddns-update-style none;
authoritative;

option domain-name &quot;isalo.org&quot;;
default-lease-time 7200;
max-lease-time 86400;
log-facility local7;

subnet 192.168.0.0 netmask 255.255.255.0 {
        pool {
                option domain-name-servers 192.168.0.1,41.188.9.130;
                range 192.168.0.199 192.168.0.249;
        }
        option routers 192.168.0.254;
        option domain-name &quot;isalo.org&quot;;
        option domain-name-servers 192.168.0.1,41.188.9.130;
        option netbios-name-servers 192.168.0.6;
        option netbios-node-type 8;
        option tftp-server-name &quot;192.168.0.6&quot;;

        next-server 192.168.0.6;
        filename &quot;pxelinux.0&quot;;
}
host s_lan_0 {
	hardware ethernet 00:25:11:79:8a:76;
	fixed-address 192.168.0.1;
	option host-name lol;
}&lt;/code&gt;

==== Explications ====

ddns-update-style: Vous pouvez demander au serveur DHCP de mettre à jour un serveur DNS si l'adresse IP d'un serveur dans votre réseau local a changé (car elle a été attribuée une adresse IP différente par DHCP).
Si vous n'avez pas de serveurs DNS dans notre LAN ou donnez des adresses IP statiques (qui est une bonne idée pour les serveurs ...) vous ne voudrez pas mettre à jour les enregistrements DNS, vous mettrez donc &quot;none&quot;

 ddns-update-style none;

Ce serveur fait autorité sur le réseau

 authoritative;

Les options globales

 #option time-servers 192.168.0.252;
 max-lease-time 7200;
 default-lease-time 86400;

Le réseau 192.168.0.0/24, avec la réserve d'adresses dynamiques, les IP des DNS, l'adresse du routeur, la définition du domaine de recherche, et trois lignes permettant de trouver un serveur PXE qui se trouve sur le réseau à l'IP 192.168.0.6

 subnet 192.168.0.0 netmask 255.255.255.0 {
         pool {
                 option domain-name-servers 192.168.0.1,41.188.9.130;
                 range 192.168.0.199 192.168.0.249;
         }
         option routers 192.168.0.254;
         option domain-name &quot;isalo.org&quot;;
         option domain-name-servers 192.168.0.1,41.188.9.130;
         option netbios-name-servers 192.168.0.6;

         option tftp-server-name &quot;192.168.0.6&quot;;
         next-server 192.168.0.6;
         filename &quot;pxelinux.0&quot;;
 }

==== Les réservations d'adresses ====

Nous attribuerons automatiquement l'IP 192.168.0.1 à la machine qui dispose de l'adresse MAC 00:25:11:79:8a:76.

&lt;code&gt;host s_lan_0 {
	hardware ethernet 00:25:11:79:8a:76;
	fixed-address 192.168.0.1;
	option host-name lol;
}&lt;/code&gt;

Avertissement: La sécurité par attribution d'IP à des adresses MAC est facilement contournable par la technique dite &quot;ARP Spoofing&quot; - usurpation d'adresse MAC.

=== Coupler DHCP avec BIND9 ===

'''Cette option n'a pas encore été testée... A prendre avec précaution.'''

Cerise sur le gateau, vous disposez d'un serveur DNS bind. Nous pouvons alors coupler DHCP et BIND pour que ce dernier mette automatiquement à jour les IP dans ses fichiers de configuration:

==== dans /etc/dhcp/dhcpd.conf ====

Remplacer :

 ddns-update-style none;

Par :

&lt;code&gt;include &quot;/etc/bind/rndc.key&quot;;
ddns-updates on;
ddns-update-style interim;
ddns-domainname &quot;isalo.org.&quot;;
ddns-rev-domainname &quot;in-addr.arpa.&quot;;
ignore client-updates;
zone test.edu. { primary 127.0.0.1; key rndc-key; }
zone 192.in-addr.arpa. { primary 127.0.0.1; key rndc-key;  }&lt;/code&gt;

==== dans /etc/dhcp/dhcpd.conf ====

Configurez vos zones comme suit :

 controls {
 inet 127.0.0.1 allow { localhost; } keys { &quot;rndc-key&quot;; };
 };
 
 include &quot;/etc/bind/rndc.key&quot;;
 
 zone &quot;isalo.org&quot; {
         type master;
         file &quot;/etc/bind/db.isalo.org&quot;;
         allow-update { key &quot;rndc-key&quot;; };
         notify no;
         };
 zone &quot;192.in-addr.arpa&quot; {
         type master;
         file &quot;/etc/bind/db.192&quot;;
         allow-update { key &quot;rndc-key&quot;; };
         notify no;
         };

=== Test ===

Sur une machine cliente :

 # ifup eth0
 Internet Systems Consortium DHCP Client 4.1.1-P1
 Copyright 2004-2010 Internet Systems Consortium.
 All rights reserved.
 For info, please visit https://www.isc.org/software/dhcp/
 
 Listening on LPF/eth0/6c:f0:49:07:15:8b
 Sending on   LPF/eth0/6c:f0:49:07:15:8b
 Sending on   Socket/fallback
 DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4
 DHCPOFFER from 192.168.0.1
 DHCPREQUEST on eth0 to 255.255.255.255 port 67
 DHCPACK from 192.168.0.1
 bound to 192.168.0.2 -- renewal in 3552 seconds.

== Conclusion ==

Voilà, notre dhcp est configuré et opérationnel !
Très simple à mettre en place comme vous l'avez vu, votre dhcp est maintenant prêt à vous rendre de très nombreux services pour une gestion centralisée de votre réseau.

De nombreuses option existent, elles permettent de mieux servir vos clients. A vous de les découvrir...

[[Utilisateur:Lol|Lol]] 12 novembre 2010 à 10:05 (EAT)

[[Category:Serveurs]]</text>
      <sha1>j1obcxc03d8nx1eyynd37wj1qcvni79</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2278</id>
      <parentid>2277</parentid>
      <timestamp>2010-11-13T10:02:49Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Détail du protocole DHCP */</comment>
      <text xml:space="preserve" bytes="13107">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;


Nous allons installer un serveur DHCP (à destination d'un petit réseau domestique, nous n'allons pas nous lancer dans la configuration d'une usine à gaz...) sur une squeeze.

== DHCP, qu'est-ce que c'est ? ==

Le DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Lorqu'il est convenablement configuré et fonctionnel, ce service est très pratique... Il permet d'administrer un réseau sans avoir à configurer machine après machine.
Toutes vos &quot;box&quot; possèdent ce service par défaut, d'une manière plus ou moins élaborée.

=== Détail du protocole DHCP ===

Lorsque vous connectez une machine à un réseau Ethernet TCP/IP, cette machine, pour fonctionner correctement, doit disposer :

# d'une adresse IP unique dans votre réseau et appartenant au même réseau;
# d'un masque de sous réseau, le même pour tous les hôtes du réseau (le &quot;netmask&quot;);
# d'une adresse d'un ou plusieurs DNS, pour pouvoir résoudre les noms des hôtes;
# de l'adresse de la passerelle qui permet d'accéder à Internet (le &quot;gateway&quot;)

'''Pour configurer vos hôtes locaux, vous avez trois possibilités :'''

# avec « zeroconf » (rfc3927). ce système s'il est fonctionnel ne permet aucune administration du réseau;
# vous passez de machine en machine, et configurez les paramètres réseau;
# vous installez un serveur DHCP sur votre réseau et vous dites à vos clients de configurer leur réseau par dhcp.

'''Détail de fonctionnement du protocole'''

:1) Le client DHCP démarre, il envoie une trame « DHCPDISCOVER », destinée à trouver un serveur DHCP.

&lt;code&gt;Listening on LPF/eth0/6c:f0:49:07:15:8b
Sending on LPF/eth0/6c:f0:49:07:15:8b
Sending on Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4&lt;/code&gt;

:2) Le (ou les) serveur(s) DHCP du réseau réponde(nt) par un « DHCPOFFER ». Cette trame contient une proposition de bail, la « MAC Address » du client, et l'adresse IP du serveur. Le client accepte normalement la première réponse venue.

 DHCPOFFER from 192.168.0.254

:3) Le client envoie alors un DHCPREQUEST à tous les serveurs (toujours en « Broadcast ») pour indiquer quelle offre il accepte.

 DHCPREQUEST on eth0 to 255.255.255.255 port 67

:4) Le serveur DHCP concerné répond définitivement par un DHCPACK qui constitue une confirmation du bail. L'adresse du client est alors marquée comme utilisée et ne sera plus proposée à un autre client pour toute la durée du bail.

 DHCPACK from 192.168.0.254
 bound to 192.168.0.2 -- renewal in 2850 seconds.

Un serveur DHCP a, à sa disposition, une plage d'adresses dans laquelle il est enfermé. Il tient à jour une base de données des adresses déjà utilisées et en cours d'utilisation. C'est ce qui explique que bien qu'attribuées dynamiquement, l'IP servie est souvent la même pour un client.

Lorsqu'il attribue une adresse, il le fait par l'intermédiaire d'un bail. Ce bail a normalement une durée limitée dans le temps. Tout ceci est configurable. L'avantage d'un bail long est une diminution du trafic vers le serveur dhcp. L'inconvénient, c'est qu'il faut planifier plus longtemps à l'avance des modification dans l'architecture de son réseau.

Après expiration du bail, ou résiliation par le client, les informations concernant ce bail restent mémorisées dans la base de données du serveur pendant un certain temps.

== Installation du serveur DHCP ==

Sur Debian, ceci se fait très simplement en installant les paquetages isc-dhcp-server et isc-dhcp-common.

 # apt-get update
 # apt-get install isc-dhcp-server isc-dhcp-common

== Configuration ==

=== Définition de l'interface ===

Le « daemon » dhcpd écoute par défaut sur toutes les interfaces réseau actives sur le serveur. Pour des raison de sécurité ce n'est pas souhaitable.
Pour Debian Squeeze, il faudra éditer le fichier /etc/default/isc-dhcp-server. Si vous souhaitez que votre dhcp écoute sur une seule interface, il faut la définir ici:

 INTERFACES=&quot;eth0&quot;

=== Le fichier /etc/dhcp/dhcpd.conf ===

La configuration de votre dhcp se trouve dans un seul fichier : /etc/dhcp/dhcpd.conf

Voici le fichier &quot;original&quot;

&lt;code&gt;# cat /etc/dhcp/dhcpd.conf
#
# Sample configuration file for ISC dhcpd for Debian
#
#

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;

# option definitions common to all supported networks...
option domain-name &quot;example.org&quot;;
option domain-name-servers ns1.example.org, ns2.example.org;

default-lease-time 600;
max-lease-time 7200;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# No service will be given on this subnet, but declaring it helps the 
# DHCP server to understand the network topology.

#subnet 10.152.187.0 netmask 255.255.255.0 {
#}

# This is a very basic subnet declaration.

#subnet 10.254.239.0 netmask 255.255.255.224 {
#  range 10.254.239.10 10.254.239.20;
#  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
#}

# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.

#subnet 10.254.239.32 netmask 255.255.255.224 {
#  range dynamic-bootp 10.254.239.40 10.254.239.60;
#  option broadcast-address 10.254.239.31;
#  option routers rtr-239-32-1.example.org;
#}

# A slightly different configuration for an internal subnet.
#subnet 10.5.5.0 netmask 255.255.255.224 {
#  range 10.5.5.26 10.5.5.30;
#  option domain-name-servers ns1.internal.example.org;
#  option domain-name &quot;internal.example.org&quot;;
#  option routers 10.5.5.1;
#  option broadcast-address 10.5.5.31;
#  default-lease-time 600;
#  max-lease-time 7200;
#}

# Hosts which require special configuration options can be listed in
# host statements.   If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.

#host passacaglia {
#  hardware ethernet 0:0:c0:5d:bd:95;
#  filename &quot;vmunix.passacaglia&quot;;
#  server-name &quot;toccata.fugue.com&quot;;
#}

# Fixed IP addresses can also be specified for hosts.   These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP.   Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
#host fantasia {
#  hardware ethernet 08:00:07:26:c0:a5;
#  fixed-address fantasia.fugue.com;
#}

# You can declare a class of clients and then do address allocation
# based on that.   The example below shows a case where all clients
# in a certain class get addresses on the 10.17.224/24 subnet, and all
# other clients get addresses on the 10.0.29/24 subnet.

#class &quot;foo&quot; {
#  match if substring (option vendor-class-identifier, 0, 4) = &quot;SUNW&quot;;
#}

#shared-network 224-29 {
#  subnet 10.17.224.0 netmask 255.255.255.0 {
#    option routers rtr-224.example.org;
#  }
#  subnet 10.0.29.0 netmask 255.255.255.0 {
#    option routers rtr-29.example.org;
#  }
#  pool {
#    allow members of &quot;foo&quot;;
#    range 10.17.224.10 10.17.224.250;
#  }
#  pool {
#    deny members of &quot;foo&quot;;
#    range 10.0.29.10 10.0.29.230;
#  }
#}&lt;/code&gt;

Une sauvegarde s'impose :

 # cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.ori

Voici notre fichier &quot;modifié&quot;

&lt;code&gt;# cat /etc/dhcp/dhcpd.conf
ddns-update-style none;
authoritative;

option domain-name &quot;isalo.org&quot;;
default-lease-time 7200;
max-lease-time 86400;
log-facility local7;

subnet 192.168.0.0 netmask 255.255.255.0 {
        pool {
                option domain-name-servers 192.168.0.1,41.188.9.130;
                range 192.168.0.199 192.168.0.249;
        }
        option routers 192.168.0.254;
        option domain-name &quot;isalo.org&quot;;
        option domain-name-servers 192.168.0.1,41.188.9.130;
        option netbios-name-servers 192.168.0.6;
        option netbios-node-type 8;
        option tftp-server-name &quot;192.168.0.6&quot;;

        next-server 192.168.0.6;
        filename &quot;pxelinux.0&quot;;
}
host s_lan_0 {
	hardware ethernet 00:25:11:79:8a:76;
	fixed-address 192.168.0.1;
	option host-name lol;
}&lt;/code&gt;

==== Explications ====

ddns-update-style: Vous pouvez demander au serveur DHCP de mettre à jour un serveur DNS si l'adresse IP d'un serveur dans votre réseau local a changé (car elle a été attribuée une adresse IP différente par DHCP).
Si vous n'avez pas de serveurs DNS dans notre LAN ou donnez des adresses IP statiques (qui est une bonne idée pour les serveurs ...) vous ne voudrez pas mettre à jour les enregistrements DNS, vous mettrez donc &quot;none&quot;

 ddns-update-style none;

Ce serveur fait autorité sur le réseau

 authoritative;

Les options globales

 #option time-servers 192.168.0.252;
 max-lease-time 7200;
 default-lease-time 86400;

Le réseau 192.168.0.0/24, avec la réserve d'adresses dynamiques, les IP des DNS, l'adresse du routeur, la définition du domaine de recherche, et trois lignes permettant de trouver un serveur PXE qui se trouve sur le réseau à l'IP 192.168.0.6

 subnet 192.168.0.0 netmask 255.255.255.0 {
         pool {
                 option domain-name-servers 192.168.0.1,41.188.9.130;
                 range 192.168.0.199 192.168.0.249;
         }
         option routers 192.168.0.254;
         option domain-name &quot;isalo.org&quot;;
         option domain-name-servers 192.168.0.1,41.188.9.130;
         option netbios-name-servers 192.168.0.6;

         option tftp-server-name &quot;192.168.0.6&quot;;
         next-server 192.168.0.6;
         filename &quot;pxelinux.0&quot;;
 }

==== Les réservations d'adresses ====

Nous attribuerons automatiquement l'IP 192.168.0.1 à la machine qui dispose de l'adresse MAC 00:25:11:79:8a:76.

&lt;code&gt;host s_lan_0 {
	hardware ethernet 00:25:11:79:8a:76;
	fixed-address 192.168.0.1;
	option host-name lol;
}&lt;/code&gt;

Avertissement: La sécurité par attribution d'IP à des adresses MAC est facilement contournable par la technique dite &quot;ARP Spoofing&quot; - usurpation d'adresse MAC.

=== Coupler DHCP avec BIND9 ===

'''Cette option n'a pas encore été testée... A prendre avec précaution.'''

Cerise sur le gateau, vous disposez d'un serveur DNS bind. Nous pouvons alors coupler DHCP et BIND pour que ce dernier mette automatiquement à jour les IP dans ses fichiers de configuration:

==== dans /etc/dhcp/dhcpd.conf ====

Remplacer :

 ddns-update-style none;

Par :

&lt;code&gt;include &quot;/etc/bind/rndc.key&quot;;
ddns-updates on;
ddns-update-style interim;
ddns-domainname &quot;isalo.org.&quot;;
ddns-rev-domainname &quot;in-addr.arpa.&quot;;
ignore client-updates;
zone test.edu. { primary 127.0.0.1; key rndc-key; }
zone 192.in-addr.arpa. { primary 127.0.0.1; key rndc-key;  }&lt;/code&gt;

==== dans /etc/dhcp/dhcpd.conf ====

Configurez vos zones comme suit :

 controls {
 inet 127.0.0.1 allow { localhost; } keys { &quot;rndc-key&quot;; };
 };
 
 include &quot;/etc/bind/rndc.key&quot;;
 
 zone &quot;isalo.org&quot; {
         type master;
         file &quot;/etc/bind/db.isalo.org&quot;;
         allow-update { key &quot;rndc-key&quot;; };
         notify no;
         };
 zone &quot;192.in-addr.arpa&quot; {
         type master;
         file &quot;/etc/bind/db.192&quot;;
         allow-update { key &quot;rndc-key&quot;; };
         notify no;
         };

=== Test ===

Sur une machine cliente :

 # ifup eth0
 Internet Systems Consortium DHCP Client 4.1.1-P1
 Copyright 2004-2010 Internet Systems Consortium.
 All rights reserved.
 For info, please visit https://www.isc.org/software/dhcp/
 
 Listening on LPF/eth0/6c:f0:49:07:15:8b
 Sending on   LPF/eth0/6c:f0:49:07:15:8b
 Sending on   Socket/fallback
 DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4
 DHCPOFFER from 192.168.0.1
 DHCPREQUEST on eth0 to 255.255.255.255 port 67
 DHCPACK from 192.168.0.1
 bound to 192.168.0.2 -- renewal in 3552 seconds.

== Conclusion ==

Voilà, notre dhcp est configuré et opérationnel !
Très simple à mettre en place comme vous l'avez vu, votre dhcp est maintenant prêt à vous rendre de très nombreux services pour une gestion centralisée de votre réseau.

De nombreuses option existent, elles permettent de mieux servir vos clients. A vous de les découvrir...

[[Utilisateur:Lol|Lol]] 12 novembre 2010 à 10:05 (EAT)

[[Category:Serveurs]]</text>
      <sha1>8f7n4gsc7zppjjfvw3fj64od4gzjtyu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2279</id>
      <parentid>2278</parentid>
      <timestamp>2010-11-14T04:23:07Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Les réservations d'adresses */</comment>
      <text xml:space="preserve" bytes="13393">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;


Nous allons installer un serveur DHCP (à destination d'un petit réseau domestique, nous n'allons pas nous lancer dans la configuration d'une usine à gaz...) sur une squeeze.

== DHCP, qu'est-ce que c'est ? ==

Le DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Lorqu'il est convenablement configuré et fonctionnel, ce service est très pratique... Il permet d'administrer un réseau sans avoir à configurer machine après machine.
Toutes vos &quot;box&quot; possèdent ce service par défaut, d'une manière plus ou moins élaborée.

=== Détail du protocole DHCP ===

Lorsque vous connectez une machine à un réseau Ethernet TCP/IP, cette machine, pour fonctionner correctement, doit disposer :

# d'une adresse IP unique dans votre réseau et appartenant au même réseau;
# d'un masque de sous réseau, le même pour tous les hôtes du réseau (le &quot;netmask&quot;);
# d'une adresse d'un ou plusieurs DNS, pour pouvoir résoudre les noms des hôtes;
# de l'adresse de la passerelle qui permet d'accéder à Internet (le &quot;gateway&quot;)

'''Pour configurer vos hôtes locaux, vous avez trois possibilités :'''

# avec « zeroconf » (rfc3927). ce système s'il est fonctionnel ne permet aucune administration du réseau;
# vous passez de machine en machine, et configurez les paramètres réseau;
# vous installez un serveur DHCP sur votre réseau et vous dites à vos clients de configurer leur réseau par dhcp.

'''Détail de fonctionnement du protocole'''

:1) Le client DHCP démarre, il envoie une trame « DHCPDISCOVER », destinée à trouver un serveur DHCP.

&lt;code&gt;Listening on LPF/eth0/6c:f0:49:07:15:8b
Sending on LPF/eth0/6c:f0:49:07:15:8b
Sending on Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4&lt;/code&gt;

:2) Le (ou les) serveur(s) DHCP du réseau réponde(nt) par un « DHCPOFFER ». Cette trame contient une proposition de bail, la « MAC Address » du client, et l'adresse IP du serveur. Le client accepte normalement la première réponse venue.

 DHCPOFFER from 192.168.0.254

:3) Le client envoie alors un DHCPREQUEST à tous les serveurs (toujours en « Broadcast ») pour indiquer quelle offre il accepte.

 DHCPREQUEST on eth0 to 255.255.255.255 port 67

:4) Le serveur DHCP concerné répond définitivement par un DHCPACK qui constitue une confirmation du bail. L'adresse du client est alors marquée comme utilisée et ne sera plus proposée à un autre client pour toute la durée du bail.

 DHCPACK from 192.168.0.254
 bound to 192.168.0.2 -- renewal in 2850 seconds.

Un serveur DHCP a, à sa disposition, une plage d'adresses dans laquelle il est enfermé. Il tient à jour une base de données des adresses déjà utilisées et en cours d'utilisation. C'est ce qui explique que bien qu'attribuées dynamiquement, l'IP servie est souvent la même pour un client.

Lorsqu'il attribue une adresse, il le fait par l'intermédiaire d'un bail. Ce bail a normalement une durée limitée dans le temps. Tout ceci est configurable. L'avantage d'un bail long est une diminution du trafic vers le serveur dhcp. L'inconvénient, c'est qu'il faut planifier plus longtemps à l'avance des modification dans l'architecture de son réseau.

Après expiration du bail, ou résiliation par le client, les informations concernant ce bail restent mémorisées dans la base de données du serveur pendant un certain temps.

== Installation du serveur DHCP ==

Sur Debian, ceci se fait très simplement en installant les paquetages isc-dhcp-server et isc-dhcp-common.

 # apt-get update
 # apt-get install isc-dhcp-server isc-dhcp-common

== Configuration ==

=== Définition de l'interface ===

Le « daemon » dhcpd écoute par défaut sur toutes les interfaces réseau actives sur le serveur. Pour des raison de sécurité ce n'est pas souhaitable.
Pour Debian Squeeze, il faudra éditer le fichier /etc/default/isc-dhcp-server. Si vous souhaitez que votre dhcp écoute sur une seule interface, il faut la définir ici:

 INTERFACES=&quot;eth0&quot;

=== Le fichier /etc/dhcp/dhcpd.conf ===

La configuration de votre dhcp se trouve dans un seul fichier : /etc/dhcp/dhcpd.conf

Voici le fichier &quot;original&quot;

&lt;code&gt;# cat /etc/dhcp/dhcpd.conf
#
# Sample configuration file for ISC dhcpd for Debian
#
#

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;

# option definitions common to all supported networks...
option domain-name &quot;example.org&quot;;
option domain-name-servers ns1.example.org, ns2.example.org;

default-lease-time 600;
max-lease-time 7200;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# No service will be given on this subnet, but declaring it helps the 
# DHCP server to understand the network topology.

#subnet 10.152.187.0 netmask 255.255.255.0 {
#}

# This is a very basic subnet declaration.

#subnet 10.254.239.0 netmask 255.255.255.224 {
#  range 10.254.239.10 10.254.239.20;
#  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
#}

# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.

#subnet 10.254.239.32 netmask 255.255.255.224 {
#  range dynamic-bootp 10.254.239.40 10.254.239.60;
#  option broadcast-address 10.254.239.31;
#  option routers rtr-239-32-1.example.org;
#}

# A slightly different configuration for an internal subnet.
#subnet 10.5.5.0 netmask 255.255.255.224 {
#  range 10.5.5.26 10.5.5.30;
#  option domain-name-servers ns1.internal.example.org;
#  option domain-name &quot;internal.example.org&quot;;
#  option routers 10.5.5.1;
#  option broadcast-address 10.5.5.31;
#  default-lease-time 600;
#  max-lease-time 7200;
#}

# Hosts which require special configuration options can be listed in
# host statements.   If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.

#host passacaglia {
#  hardware ethernet 0:0:c0:5d:bd:95;
#  filename &quot;vmunix.passacaglia&quot;;
#  server-name &quot;toccata.fugue.com&quot;;
#}

# Fixed IP addresses can also be specified for hosts.   These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP.   Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
#host fantasia {
#  hardware ethernet 08:00:07:26:c0:a5;
#  fixed-address fantasia.fugue.com;
#}

# You can declare a class of clients and then do address allocation
# based on that.   The example below shows a case where all clients
# in a certain class get addresses on the 10.17.224/24 subnet, and all
# other clients get addresses on the 10.0.29/24 subnet.

#class &quot;foo&quot; {
#  match if substring (option vendor-class-identifier, 0, 4) = &quot;SUNW&quot;;
#}

#shared-network 224-29 {
#  subnet 10.17.224.0 netmask 255.255.255.0 {
#    option routers rtr-224.example.org;
#  }
#  subnet 10.0.29.0 netmask 255.255.255.0 {
#    option routers rtr-29.example.org;
#  }
#  pool {
#    allow members of &quot;foo&quot;;
#    range 10.17.224.10 10.17.224.250;
#  }
#  pool {
#    deny members of &quot;foo&quot;;
#    range 10.0.29.10 10.0.29.230;
#  }
#}&lt;/code&gt;

Une sauvegarde s'impose :

 # cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.ori

Voici notre fichier &quot;modifié&quot;

&lt;code&gt;# cat /etc/dhcp/dhcpd.conf
ddns-update-style none;
authoritative;

option domain-name &quot;isalo.org&quot;;
default-lease-time 7200;
max-lease-time 86400;
log-facility local7;

subnet 192.168.0.0 netmask 255.255.255.0 {
        pool {
                option domain-name-servers 192.168.0.1,41.188.9.130;
                range 192.168.0.199 192.168.0.249;
        }
        option routers 192.168.0.254;
        option domain-name &quot;isalo.org&quot;;
        option domain-name-servers 192.168.0.1,41.188.9.130;
        option netbios-name-servers 192.168.0.6;
        option netbios-node-type 8;
        option tftp-server-name &quot;192.168.0.6&quot;;

        next-server 192.168.0.6;
        filename &quot;pxelinux.0&quot;;
}
host s_lan_0 {
	hardware ethernet 00:25:11:79:8a:76;
	fixed-address 192.168.0.1;
	option host-name lol;
}&lt;/code&gt;

==== Explications ====

ddns-update-style: Vous pouvez demander au serveur DHCP de mettre à jour un serveur DNS si l'adresse IP d'un serveur dans votre réseau local a changé (car elle a été attribuée une adresse IP différente par DHCP).
Si vous n'avez pas de serveurs DNS dans notre LAN ou donnez des adresses IP statiques (qui est une bonne idée pour les serveurs ...) vous ne voudrez pas mettre à jour les enregistrements DNS, vous mettrez donc &quot;none&quot;

 ddns-update-style none;

Ce serveur fait autorité sur le réseau

 authoritative;

Les options globales

 #option time-servers 192.168.0.252;
 max-lease-time 7200;
 default-lease-time 86400;

Le réseau 192.168.0.0/24, avec la réserve d'adresses dynamiques, les IP des DNS, l'adresse du routeur, la définition du domaine de recherche, et trois lignes permettant de trouver un serveur PXE qui se trouve sur le réseau à l'IP 192.168.0.6

 subnet 192.168.0.0 netmask 255.255.255.0 {
         pool {
                 option domain-name-servers 192.168.0.1,41.188.9.130;
                 range 192.168.0.199 192.168.0.249;
         }
         option routers 192.168.0.254;
         option domain-name &quot;isalo.org&quot;;
         option domain-name-servers 192.168.0.1,41.188.9.130;
         option netbios-name-servers 192.168.0.6;

         option tftp-server-name &quot;192.168.0.6&quot;;
         next-server 192.168.0.6;
         filename &quot;pxelinux.0&quot;;
 }

==== Les réservations d'adresses ====

Nous attribuerons automatiquement l'IP 192.168.0.1 à la machine qui dispose de l'adresse MAC 00:25:11:79:8a:76.

&lt;code&gt;host s_lan_0 {
	hardware ethernet 00:25:11:79:8a:76;
	fixed-address 192.168.0.1;
	option host-name lol;
}&lt;/code&gt;

Avertissement: La sécurité par attribution d'IP à des adresses MAC est facilement contournable par la technique dite &quot;ARP Spoofing&quot; - usurpation d'adresse MAC.

==== Les logs ====

Si vous souhaitez séparer vos logs :

Ajoutez :

 local7.debug     /var/log/dhcpd.log

Au fichier /etc/rsyslog.conf ou syslog.conf (en fonction de votre configuration)  

et relancez le daemon syslog :

 # service rsyslog restart ou # /etc/init.d/sysklogd restart

=== Coupler DHCP avec BIND9 ===

'''Cette option n'a pas encore été testée... A prendre avec précaution.'''

Cerise sur le gateau, vous disposez d'un serveur DNS bind. Nous pouvons alors coupler DHCP et BIND pour que ce dernier mette automatiquement à jour les IP dans ses fichiers de configuration:

==== dans /etc/dhcp/dhcpd.conf ====

Remplacer :

 ddns-update-style none;

Par :

&lt;code&gt;include &quot;/etc/bind/rndc.key&quot;;
ddns-updates on;
ddns-update-style interim;
ddns-domainname &quot;isalo.org.&quot;;
ddns-rev-domainname &quot;in-addr.arpa.&quot;;
ignore client-updates;
zone test.edu. { primary 127.0.0.1; key rndc-key; }
zone 192.in-addr.arpa. { primary 127.0.0.1; key rndc-key;  }&lt;/code&gt;

==== dans /etc/dhcp/dhcpd.conf ====

Configurez vos zones comme suit :

 controls {
 inet 127.0.0.1 allow { localhost; } keys { &quot;rndc-key&quot;; };
 };
 
 include &quot;/etc/bind/rndc.key&quot;;
 
 zone &quot;isalo.org&quot; {
         type master;
         file &quot;/etc/bind/db.isalo.org&quot;;
         allow-update { key &quot;rndc-key&quot;; };
         notify no;
         };
 zone &quot;192.in-addr.arpa&quot; {
         type master;
         file &quot;/etc/bind/db.192&quot;;
         allow-update { key &quot;rndc-key&quot;; };
         notify no;
         };

=== Test ===

Sur une machine cliente :

 # ifup eth0
 Internet Systems Consortium DHCP Client 4.1.1-P1
 Copyright 2004-2010 Internet Systems Consortium.
 All rights reserved.
 For info, please visit https://www.isc.org/software/dhcp/
 
 Listening on LPF/eth0/6c:f0:49:07:15:8b
 Sending on   LPF/eth0/6c:f0:49:07:15:8b
 Sending on   Socket/fallback
 DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4
 DHCPOFFER from 192.168.0.1
 DHCPREQUEST on eth0 to 255.255.255.255 port 67
 DHCPACK from 192.168.0.1
 bound to 192.168.0.2 -- renewal in 3552 seconds.

== Conclusion ==

Voilà, notre dhcp est configuré et opérationnel !
Très simple à mettre en place comme vous l'avez vu, votre dhcp est maintenant prêt à vous rendre de très nombreux services pour une gestion centralisée de votre réseau.

De nombreuses option existent, elles permettent de mieux servir vos clients. A vous de les découvrir...

[[Utilisateur:Lol|Lol]] 12 novembre 2010 à 10:05 (EAT)

[[Category:Serveurs]]</text>
      <sha1>656ybv6yxlxg3g6yy2pnxur0xuy5nwp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2280</id>
      <parentid>2279</parentid>
      <timestamp>2010-11-14T04:24:21Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Conclusion */</comment>
      <text xml:space="preserve" bytes="13492">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;


Nous allons installer un serveur DHCP (à destination d'un petit réseau domestique, nous n'allons pas nous lancer dans la configuration d'une usine à gaz...) sur une squeeze.

== DHCP, qu'est-ce que c'est ? ==

Le DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Lorqu'il est convenablement configuré et fonctionnel, ce service est très pratique... Il permet d'administrer un réseau sans avoir à configurer machine après machine.
Toutes vos &quot;box&quot; possèdent ce service par défaut, d'une manière plus ou moins élaborée.

=== Détail du protocole DHCP ===

Lorsque vous connectez une machine à un réseau Ethernet TCP/IP, cette machine, pour fonctionner correctement, doit disposer :

# d'une adresse IP unique dans votre réseau et appartenant au même réseau;
# d'un masque de sous réseau, le même pour tous les hôtes du réseau (le &quot;netmask&quot;);
# d'une adresse d'un ou plusieurs DNS, pour pouvoir résoudre les noms des hôtes;
# de l'adresse de la passerelle qui permet d'accéder à Internet (le &quot;gateway&quot;)

'''Pour configurer vos hôtes locaux, vous avez trois possibilités :'''

# avec « zeroconf » (rfc3927). ce système s'il est fonctionnel ne permet aucune administration du réseau;
# vous passez de machine en machine, et configurez les paramètres réseau;
# vous installez un serveur DHCP sur votre réseau et vous dites à vos clients de configurer leur réseau par dhcp.

'''Détail de fonctionnement du protocole'''

:1) Le client DHCP démarre, il envoie une trame « DHCPDISCOVER », destinée à trouver un serveur DHCP.

&lt;code&gt;Listening on LPF/eth0/6c:f0:49:07:15:8b
Sending on LPF/eth0/6c:f0:49:07:15:8b
Sending on Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4&lt;/code&gt;

:2) Le (ou les) serveur(s) DHCP du réseau réponde(nt) par un « DHCPOFFER ». Cette trame contient une proposition de bail, la « MAC Address » du client, et l'adresse IP du serveur. Le client accepte normalement la première réponse venue.

 DHCPOFFER from 192.168.0.254

:3) Le client envoie alors un DHCPREQUEST à tous les serveurs (toujours en « Broadcast ») pour indiquer quelle offre il accepte.

 DHCPREQUEST on eth0 to 255.255.255.255 port 67

:4) Le serveur DHCP concerné répond définitivement par un DHCPACK qui constitue une confirmation du bail. L'adresse du client est alors marquée comme utilisée et ne sera plus proposée à un autre client pour toute la durée du bail.

 DHCPACK from 192.168.0.254
 bound to 192.168.0.2 -- renewal in 2850 seconds.

Un serveur DHCP a, à sa disposition, une plage d'adresses dans laquelle il est enfermé. Il tient à jour une base de données des adresses déjà utilisées et en cours d'utilisation. C'est ce qui explique que bien qu'attribuées dynamiquement, l'IP servie est souvent la même pour un client.

Lorsqu'il attribue une adresse, il le fait par l'intermédiaire d'un bail. Ce bail a normalement une durée limitée dans le temps. Tout ceci est configurable. L'avantage d'un bail long est une diminution du trafic vers le serveur dhcp. L'inconvénient, c'est qu'il faut planifier plus longtemps à l'avance des modification dans l'architecture de son réseau.

Après expiration du bail, ou résiliation par le client, les informations concernant ce bail restent mémorisées dans la base de données du serveur pendant un certain temps.

== Installation du serveur DHCP ==

Sur Debian, ceci se fait très simplement en installant les paquetages isc-dhcp-server et isc-dhcp-common.

 # apt-get update
 # apt-get install isc-dhcp-server isc-dhcp-common

== Configuration ==

=== Définition de l'interface ===

Le « daemon » dhcpd écoute par défaut sur toutes les interfaces réseau actives sur le serveur. Pour des raison de sécurité ce n'est pas souhaitable.
Pour Debian Squeeze, il faudra éditer le fichier /etc/default/isc-dhcp-server. Si vous souhaitez que votre dhcp écoute sur une seule interface, il faut la définir ici:

 INTERFACES=&quot;eth0&quot;

=== Le fichier /etc/dhcp/dhcpd.conf ===

La configuration de votre dhcp se trouve dans un seul fichier : /etc/dhcp/dhcpd.conf

Voici le fichier &quot;original&quot;

&lt;code&gt;# cat /etc/dhcp/dhcpd.conf
#
# Sample configuration file for ISC dhcpd for Debian
#
#

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;

# option definitions common to all supported networks...
option domain-name &quot;example.org&quot;;
option domain-name-servers ns1.example.org, ns2.example.org;

default-lease-time 600;
max-lease-time 7200;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# No service will be given on this subnet, but declaring it helps the 
# DHCP server to understand the network topology.

#subnet 10.152.187.0 netmask 255.255.255.0 {
#}

# This is a very basic subnet declaration.

#subnet 10.254.239.0 netmask 255.255.255.224 {
#  range 10.254.239.10 10.254.239.20;
#  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
#}

# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.

#subnet 10.254.239.32 netmask 255.255.255.224 {
#  range dynamic-bootp 10.254.239.40 10.254.239.60;
#  option broadcast-address 10.254.239.31;
#  option routers rtr-239-32-1.example.org;
#}

# A slightly different configuration for an internal subnet.
#subnet 10.5.5.0 netmask 255.255.255.224 {
#  range 10.5.5.26 10.5.5.30;
#  option domain-name-servers ns1.internal.example.org;
#  option domain-name &quot;internal.example.org&quot;;
#  option routers 10.5.5.1;
#  option broadcast-address 10.5.5.31;
#  default-lease-time 600;
#  max-lease-time 7200;
#}

# Hosts which require special configuration options can be listed in
# host statements.   If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.

#host passacaglia {
#  hardware ethernet 0:0:c0:5d:bd:95;
#  filename &quot;vmunix.passacaglia&quot;;
#  server-name &quot;toccata.fugue.com&quot;;
#}

# Fixed IP addresses can also be specified for hosts.   These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP.   Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
#host fantasia {
#  hardware ethernet 08:00:07:26:c0:a5;
#  fixed-address fantasia.fugue.com;
#}

# You can declare a class of clients and then do address allocation
# based on that.   The example below shows a case where all clients
# in a certain class get addresses on the 10.17.224/24 subnet, and all
# other clients get addresses on the 10.0.29/24 subnet.

#class &quot;foo&quot; {
#  match if substring (option vendor-class-identifier, 0, 4) = &quot;SUNW&quot;;
#}

#shared-network 224-29 {
#  subnet 10.17.224.0 netmask 255.255.255.0 {
#    option routers rtr-224.example.org;
#  }
#  subnet 10.0.29.0 netmask 255.255.255.0 {
#    option routers rtr-29.example.org;
#  }
#  pool {
#    allow members of &quot;foo&quot;;
#    range 10.17.224.10 10.17.224.250;
#  }
#  pool {
#    deny members of &quot;foo&quot;;
#    range 10.0.29.10 10.0.29.230;
#  }
#}&lt;/code&gt;

Une sauvegarde s'impose :

 # cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.ori

Voici notre fichier &quot;modifié&quot;

&lt;code&gt;# cat /etc/dhcp/dhcpd.conf
ddns-update-style none;
authoritative;

option domain-name &quot;isalo.org&quot;;
default-lease-time 7200;
max-lease-time 86400;
log-facility local7;

subnet 192.168.0.0 netmask 255.255.255.0 {
        pool {
                option domain-name-servers 192.168.0.1,41.188.9.130;
                range 192.168.0.199 192.168.0.249;
        }
        option routers 192.168.0.254;
        option domain-name &quot;isalo.org&quot;;
        option domain-name-servers 192.168.0.1,41.188.9.130;
        option netbios-name-servers 192.168.0.6;
        option netbios-node-type 8;
        option tftp-server-name &quot;192.168.0.6&quot;;

        next-server 192.168.0.6;
        filename &quot;pxelinux.0&quot;;
}
host s_lan_0 {
	hardware ethernet 00:25:11:79:8a:76;
	fixed-address 192.168.0.1;
	option host-name lol;
}&lt;/code&gt;

==== Explications ====

ddns-update-style: Vous pouvez demander au serveur DHCP de mettre à jour un serveur DNS si l'adresse IP d'un serveur dans votre réseau local a changé (car elle a été attribuée une adresse IP différente par DHCP).
Si vous n'avez pas de serveurs DNS dans notre LAN ou donnez des adresses IP statiques (qui est une bonne idée pour les serveurs ...) vous ne voudrez pas mettre à jour les enregistrements DNS, vous mettrez donc &quot;none&quot;

 ddns-update-style none;

Ce serveur fait autorité sur le réseau

 authoritative;

Les options globales

 #option time-servers 192.168.0.252;
 max-lease-time 7200;
 default-lease-time 86400;

Le réseau 192.168.0.0/24, avec la réserve d'adresses dynamiques, les IP des DNS, l'adresse du routeur, la définition du domaine de recherche, et trois lignes permettant de trouver un serveur PXE qui se trouve sur le réseau à l'IP 192.168.0.6

 subnet 192.168.0.0 netmask 255.255.255.0 {
         pool {
                 option domain-name-servers 192.168.0.1,41.188.9.130;
                 range 192.168.0.199 192.168.0.249;
         }
         option routers 192.168.0.254;
         option domain-name &quot;isalo.org&quot;;
         option domain-name-servers 192.168.0.1,41.188.9.130;
         option netbios-name-servers 192.168.0.6;

         option tftp-server-name &quot;192.168.0.6&quot;;
         next-server 192.168.0.6;
         filename &quot;pxelinux.0&quot;;
 }

==== Les réservations d'adresses ====

Nous attribuerons automatiquement l'IP 192.168.0.1 à la machine qui dispose de l'adresse MAC 00:25:11:79:8a:76.

&lt;code&gt;host s_lan_0 {
	hardware ethernet 00:25:11:79:8a:76;
	fixed-address 192.168.0.1;
	option host-name lol;
}&lt;/code&gt;

Avertissement: La sécurité par attribution d'IP à des adresses MAC est facilement contournable par la technique dite &quot;ARP Spoofing&quot; - usurpation d'adresse MAC.

==== Les logs ====

Si vous souhaitez séparer vos logs :

Ajoutez :

 local7.debug     /var/log/dhcpd.log

Au fichier /etc/rsyslog.conf ou syslog.conf (en fonction de votre configuration)  

et relancez le daemon syslog :

 # service rsyslog restart ou # /etc/init.d/sysklogd restart

=== Coupler DHCP avec BIND9 ===

'''Cette option n'a pas encore été testée... A prendre avec précaution.'''

Cerise sur le gateau, vous disposez d'un serveur DNS bind. Nous pouvons alors coupler DHCP et BIND pour que ce dernier mette automatiquement à jour les IP dans ses fichiers de configuration:

==== dans /etc/dhcp/dhcpd.conf ====

Remplacer :

 ddns-update-style none;

Par :

&lt;code&gt;include &quot;/etc/bind/rndc.key&quot;;
ddns-updates on;
ddns-update-style interim;
ddns-domainname &quot;isalo.org.&quot;;
ddns-rev-domainname &quot;in-addr.arpa.&quot;;
ignore client-updates;
zone test.edu. { primary 127.0.0.1; key rndc-key; }
zone 192.in-addr.arpa. { primary 127.0.0.1; key rndc-key;  }&lt;/code&gt;

==== dans /etc/dhcp/dhcpd.conf ====

Configurez vos zones comme suit :

 controls {
 inet 127.0.0.1 allow { localhost; } keys { &quot;rndc-key&quot;; };
 };
 
 include &quot;/etc/bind/rndc.key&quot;;
 
 zone &quot;isalo.org&quot; {
         type master;
         file &quot;/etc/bind/db.isalo.org&quot;;
         allow-update { key &quot;rndc-key&quot;; };
         notify no;
         };
 zone &quot;192.in-addr.arpa&quot; {
         type master;
         file &quot;/etc/bind/db.192&quot;;
         allow-update { key &quot;rndc-key&quot;; };
         notify no;
         };

=== Test ===

Sur une machine cliente :

 # ifup eth0
 Internet Systems Consortium DHCP Client 4.1.1-P1
 Copyright 2004-2010 Internet Systems Consortium.
 All rights reserved.
 For info, please visit https://www.isc.org/software/dhcp/
 
 Listening on LPF/eth0/6c:f0:49:07:15:8b
 Sending on   LPF/eth0/6c:f0:49:07:15:8b
 Sending on   Socket/fallback
 DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4
 DHCPOFFER from 192.168.0.1
 DHCPREQUEST on eth0 to 255.255.255.255 port 67
 DHCPACK from 192.168.0.1
 bound to 192.168.0.2 -- renewal in 3552 seconds.

== Conclusion ==

Voilà, notre dhcp est configuré et opérationnel !
Très simple à mettre en place comme vous l'avez vu, votre dhcp est maintenant prêt à vous rendre de très nombreux services pour une gestion centralisée de votre réseau.

De nombreuses option existent, elles permettent de mieux servir vos clients. A vous de les découvrir...

Référence : [[http://www.daemon-systems.org/man/dhcpd.conf.5.html|'''Le fichier dhcpd.conf''']]

[[Utilisateur:Lol|Lol]] 12 novembre 2010 à 10:05 (EAT)

[[Category:Serveurs]]</text>
      <sha1>ex21ue1uve1crph6wk10k17180h7u6v</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2281</id>
      <parentid>2280</parentid>
      <timestamp>2010-11-14T04:33:11Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Explications */</comment>
      <text xml:space="preserve" bytes="13874">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;


Nous allons installer un serveur DHCP (à destination d'un petit réseau domestique, nous n'allons pas nous lancer dans la configuration d'une usine à gaz...) sur une squeeze.

== DHCP, qu'est-ce que c'est ? ==

Le DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Lorqu'il est convenablement configuré et fonctionnel, ce service est très pratique... Il permet d'administrer un réseau sans avoir à configurer machine après machine.
Toutes vos &quot;box&quot; possèdent ce service par défaut, d'une manière plus ou moins élaborée.

=== Détail du protocole DHCP ===

Lorsque vous connectez une machine à un réseau Ethernet TCP/IP, cette machine, pour fonctionner correctement, doit disposer :

# d'une adresse IP unique dans votre réseau et appartenant au même réseau;
# d'un masque de sous réseau, le même pour tous les hôtes du réseau (le &quot;netmask&quot;);
# d'une adresse d'un ou plusieurs DNS, pour pouvoir résoudre les noms des hôtes;
# de l'adresse de la passerelle qui permet d'accéder à Internet (le &quot;gateway&quot;)

'''Pour configurer vos hôtes locaux, vous avez trois possibilités :'''

# avec « zeroconf » (rfc3927). ce système s'il est fonctionnel ne permet aucune administration du réseau;
# vous passez de machine en machine, et configurez les paramètres réseau;
# vous installez un serveur DHCP sur votre réseau et vous dites à vos clients de configurer leur réseau par dhcp.

'''Détail de fonctionnement du protocole'''

:1) Le client DHCP démarre, il envoie une trame « DHCPDISCOVER », destinée à trouver un serveur DHCP.

&lt;code&gt;Listening on LPF/eth0/6c:f0:49:07:15:8b
Sending on LPF/eth0/6c:f0:49:07:15:8b
Sending on Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4&lt;/code&gt;

:2) Le (ou les) serveur(s) DHCP du réseau réponde(nt) par un « DHCPOFFER ». Cette trame contient une proposition de bail, la « MAC Address » du client, et l'adresse IP du serveur. Le client accepte normalement la première réponse venue.

 DHCPOFFER from 192.168.0.254

:3) Le client envoie alors un DHCPREQUEST à tous les serveurs (toujours en « Broadcast ») pour indiquer quelle offre il accepte.

 DHCPREQUEST on eth0 to 255.255.255.255 port 67

:4) Le serveur DHCP concerné répond définitivement par un DHCPACK qui constitue une confirmation du bail. L'adresse du client est alors marquée comme utilisée et ne sera plus proposée à un autre client pour toute la durée du bail.

 DHCPACK from 192.168.0.254
 bound to 192.168.0.2 -- renewal in 2850 seconds.

Un serveur DHCP a, à sa disposition, une plage d'adresses dans laquelle il est enfermé. Il tient à jour une base de données des adresses déjà utilisées et en cours d'utilisation. C'est ce qui explique que bien qu'attribuées dynamiquement, l'IP servie est souvent la même pour un client.

Lorsqu'il attribue une adresse, il le fait par l'intermédiaire d'un bail. Ce bail a normalement une durée limitée dans le temps. Tout ceci est configurable. L'avantage d'un bail long est une diminution du trafic vers le serveur dhcp. L'inconvénient, c'est qu'il faut planifier plus longtemps à l'avance des modification dans l'architecture de son réseau.

Après expiration du bail, ou résiliation par le client, les informations concernant ce bail restent mémorisées dans la base de données du serveur pendant un certain temps.

== Installation du serveur DHCP ==

Sur Debian, ceci se fait très simplement en installant les paquetages isc-dhcp-server et isc-dhcp-common.

 # apt-get update
 # apt-get install isc-dhcp-server isc-dhcp-common

== Configuration ==

=== Définition de l'interface ===

Le « daemon » dhcpd écoute par défaut sur toutes les interfaces réseau actives sur le serveur. Pour des raison de sécurité ce n'est pas souhaitable.
Pour Debian Squeeze, il faudra éditer le fichier /etc/default/isc-dhcp-server. Si vous souhaitez que votre dhcp écoute sur une seule interface, il faut la définir ici:

 INTERFACES=&quot;eth0&quot;

=== Le fichier /etc/dhcp/dhcpd.conf ===

La configuration de votre dhcp se trouve dans un seul fichier : /etc/dhcp/dhcpd.conf

Voici le fichier &quot;original&quot;

&lt;code&gt;# cat /etc/dhcp/dhcpd.conf
#
# Sample configuration file for ISC dhcpd for Debian
#
#

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;

# option definitions common to all supported networks...
option domain-name &quot;example.org&quot;;
option domain-name-servers ns1.example.org, ns2.example.org;

default-lease-time 600;
max-lease-time 7200;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# No service will be given on this subnet, but declaring it helps the 
# DHCP server to understand the network topology.

#subnet 10.152.187.0 netmask 255.255.255.0 {
#}

# This is a very basic subnet declaration.

#subnet 10.254.239.0 netmask 255.255.255.224 {
#  range 10.254.239.10 10.254.239.20;
#  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
#}

# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.

#subnet 10.254.239.32 netmask 255.255.255.224 {
#  range dynamic-bootp 10.254.239.40 10.254.239.60;
#  option broadcast-address 10.254.239.31;
#  option routers rtr-239-32-1.example.org;
#}

# A slightly different configuration for an internal subnet.
#subnet 10.5.5.0 netmask 255.255.255.224 {
#  range 10.5.5.26 10.5.5.30;
#  option domain-name-servers ns1.internal.example.org;
#  option domain-name &quot;internal.example.org&quot;;
#  option routers 10.5.5.1;
#  option broadcast-address 10.5.5.31;
#  default-lease-time 600;
#  max-lease-time 7200;
#}

# Hosts which require special configuration options can be listed in
# host statements.   If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.

#host passacaglia {
#  hardware ethernet 0:0:c0:5d:bd:95;
#  filename &quot;vmunix.passacaglia&quot;;
#  server-name &quot;toccata.fugue.com&quot;;
#}

# Fixed IP addresses can also be specified for hosts.   These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP.   Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
#host fantasia {
#  hardware ethernet 08:00:07:26:c0:a5;
#  fixed-address fantasia.fugue.com;
#}

# You can declare a class of clients and then do address allocation
# based on that.   The example below shows a case where all clients
# in a certain class get addresses on the 10.17.224/24 subnet, and all
# other clients get addresses on the 10.0.29/24 subnet.

#class &quot;foo&quot; {
#  match if substring (option vendor-class-identifier, 0, 4) = &quot;SUNW&quot;;
#}

#shared-network 224-29 {
#  subnet 10.17.224.0 netmask 255.255.255.0 {
#    option routers rtr-224.example.org;
#  }
#  subnet 10.0.29.0 netmask 255.255.255.0 {
#    option routers rtr-29.example.org;
#  }
#  pool {
#    allow members of &quot;foo&quot;;
#    range 10.17.224.10 10.17.224.250;
#  }
#  pool {
#    deny members of &quot;foo&quot;;
#    range 10.0.29.10 10.0.29.230;
#  }
#}&lt;/code&gt;

Une sauvegarde s'impose :

 # cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.ori

Voici notre fichier &quot;modifié&quot;

&lt;code&gt;# cat /etc/dhcp/dhcpd.conf
ddns-update-style none;
authoritative;

option domain-name &quot;isalo.org&quot;;
default-lease-time 7200;
max-lease-time 86400;
log-facility local7;

subnet 192.168.0.0 netmask 255.255.255.0 {
        pool {
                option domain-name-servers 192.168.0.1,41.188.9.130;
                range 192.168.0.199 192.168.0.249;
        }
        option routers 192.168.0.254;
        option domain-name &quot;isalo.org&quot;;
        option domain-name-servers 192.168.0.1,41.188.9.130;
        option netbios-name-servers 192.168.0.6;
        option netbios-node-type 8;
        option tftp-server-name &quot;192.168.0.6&quot;;

        next-server 192.168.0.6;
        filename &quot;pxelinux.0&quot;;
}
host s_lan_0 {
	hardware ethernet 00:25:11:79:8a:76;
	fixed-address 192.168.0.1;
	option host-name lol;
}&lt;/code&gt;

==== Explications ====

ddns-update-style: Vous pouvez demander au serveur DHCP de mettre à jour un serveur DNS si l'adresse IP d'un serveur dans votre réseau local a changé (car elle a été attribuée une adresse IP différente par DHCP).
Si vous n'avez pas de serveurs DNS dans notre LAN ou donnez des adresses IP statiques (qui est une bonne idée pour les serveurs ...) vous ne voudrez pas mettre à jour les enregistrements DNS, vous mettrez donc &quot;none&quot;

 ddns-update-style none;

Ce serveur fait autorité sur le réseau

 authoritative;

Les options globales
La durée des baux... En minutes. Vous pouvez laisser les durées par défaut. En augmentant ces durées, vous diminurez le trafic généré par les demandes de renouvellement de baux. La valeur par défaut (600 minutes) semble un peu faible, j'ai choisi de passer cette valeur à 7200. Pour des essais, vous pouvez parfaitement passer ces valeurs à 120 ou moins...

 #option time-servers 192.168.0.252; # A développer
 default-lease-time 7200;
 max-lease-time 7200;

Le réseau 192.168.0.0/24, avec la réserve d'adresses dynamiques, les IP des DNS, l'adresse du routeur, la définition du domaine de recherche, et trois lignes permettant de trouver un serveur PXE qui se trouve sur le réseau à l'IP 192.168.0.6

 subnet 192.168.0.0 netmask 255.255.255.0 {
         pool {
                 option domain-name-servers 192.168.0.1,41.188.9.130;
                 range 192.168.0.199 192.168.0.249;
         }
         option routers 192.168.0.254;
         option domain-name &quot;isalo.org&quot;;
         option domain-name-servers 192.168.0.1,41.188.9.130;
         option netbios-name-servers 192.168.0.6;

         option tftp-server-name &quot;192.168.0.6&quot;;
         next-server 192.168.0.6;
         filename &quot;pxelinux.0&quot;;
 }

==== Les réservations d'adresses ====

Nous attribuerons automatiquement l'IP 192.168.0.1 à la machine qui dispose de l'adresse MAC 00:25:11:79:8a:76.

&lt;code&gt;host s_lan_0 {
	hardware ethernet 00:25:11:79:8a:76;
	fixed-address 192.168.0.1;
	option host-name lol;
}&lt;/code&gt;

Avertissement: La sécurité par attribution d'IP à des adresses MAC est facilement contournable par la technique dite &quot;ARP Spoofing&quot; - usurpation d'adresse MAC.

==== Les logs ====

Si vous souhaitez séparer vos logs :

Ajoutez :

 local7.debug     /var/log/dhcpd.log

Au fichier /etc/rsyslog.conf ou syslog.conf (en fonction de votre configuration)  

et relancez le daemon syslog :

 # service rsyslog restart ou # /etc/init.d/sysklogd restart

=== Coupler DHCP avec BIND9 ===

'''Cette option n'a pas encore été testée... A prendre avec précaution.'''

Cerise sur le gateau, vous disposez d'un serveur DNS bind. Nous pouvons alors coupler DHCP et BIND pour que ce dernier mette automatiquement à jour les IP dans ses fichiers de configuration:

==== dans /etc/dhcp/dhcpd.conf ====

Remplacer :

 ddns-update-style none;

Par :

&lt;code&gt;include &quot;/etc/bind/rndc.key&quot;;
ddns-updates on;
ddns-update-style interim;
ddns-domainname &quot;isalo.org.&quot;;
ddns-rev-domainname &quot;in-addr.arpa.&quot;;
ignore client-updates;
zone test.edu. { primary 127.0.0.1; key rndc-key; }
zone 192.in-addr.arpa. { primary 127.0.0.1; key rndc-key;  }&lt;/code&gt;

==== dans /etc/dhcp/dhcpd.conf ====

Configurez vos zones comme suit :

 controls {
 inet 127.0.0.1 allow { localhost; } keys { &quot;rndc-key&quot;; };
 };
 
 include &quot;/etc/bind/rndc.key&quot;;
 
 zone &quot;isalo.org&quot; {
         type master;
         file &quot;/etc/bind/db.isalo.org&quot;;
         allow-update { key &quot;rndc-key&quot;; };
         notify no;
         };
 zone &quot;192.in-addr.arpa&quot; {
         type master;
         file &quot;/etc/bind/db.192&quot;;
         allow-update { key &quot;rndc-key&quot;; };
         notify no;
         };

=== Test ===

Sur une machine cliente :

 # ifup eth0
 Internet Systems Consortium DHCP Client 4.1.1-P1
 Copyright 2004-2010 Internet Systems Consortium.
 All rights reserved.
 For info, please visit https://www.isc.org/software/dhcp/
 
 Listening on LPF/eth0/6c:f0:49:07:15:8b
 Sending on   LPF/eth0/6c:f0:49:07:15:8b
 Sending on   Socket/fallback
 DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4
 DHCPOFFER from 192.168.0.1
 DHCPREQUEST on eth0 to 255.255.255.255 port 67
 DHCPACK from 192.168.0.1
 bound to 192.168.0.2 -- renewal in 3552 seconds.

== Conclusion ==

Voilà, notre dhcp est configuré et opérationnel !
Très simple à mettre en place comme vous l'avez vu, votre dhcp est maintenant prêt à vous rendre de très nombreux services pour une gestion centralisée de votre réseau.

De nombreuses option existent, elles permettent de mieux servir vos clients. A vous de les découvrir...

Référence : [[http://www.daemon-systems.org/man/dhcpd.conf.5.html|'''Le fichier dhcpd.conf''']]

[[Utilisateur:Lol|Lol]] 12 novembre 2010 à 10:05 (EAT)

[[Category:Serveurs]]</text>
      <sha1>lw7njwlinus6v3h6yriw8i2py7gg0fn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2282</id>
      <parentid>2281</parentid>
      <timestamp>2010-11-14T04:51:45Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Explications */</comment>
      <text xml:space="preserve" bytes="14234">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;


Nous allons installer un serveur DHCP (à destination d'un petit réseau domestique, nous n'allons pas nous lancer dans la configuration d'une usine à gaz...) sur une squeeze.

== DHCP, qu'est-ce que c'est ? ==

Le DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Lorqu'il est convenablement configuré et fonctionnel, ce service est très pratique... Il permet d'administrer un réseau sans avoir à configurer machine après machine.
Toutes vos &quot;box&quot; possèdent ce service par défaut, d'une manière plus ou moins élaborée.

=== Détail du protocole DHCP ===

Lorsque vous connectez une machine à un réseau Ethernet TCP/IP, cette machine, pour fonctionner correctement, doit disposer :

# d'une adresse IP unique dans votre réseau et appartenant au même réseau;
# d'un masque de sous réseau, le même pour tous les hôtes du réseau (le &quot;netmask&quot;);
# d'une adresse d'un ou plusieurs DNS, pour pouvoir résoudre les noms des hôtes;
# de l'adresse de la passerelle qui permet d'accéder à Internet (le &quot;gateway&quot;)

'''Pour configurer vos hôtes locaux, vous avez trois possibilités :'''

# avec « zeroconf » (rfc3927). ce système s'il est fonctionnel ne permet aucune administration du réseau;
# vous passez de machine en machine, et configurez les paramètres réseau;
# vous installez un serveur DHCP sur votre réseau et vous dites à vos clients de configurer leur réseau par dhcp.

'''Détail de fonctionnement du protocole'''

:1) Le client DHCP démarre, il envoie une trame « DHCPDISCOVER », destinée à trouver un serveur DHCP.

&lt;code&gt;Listening on LPF/eth0/6c:f0:49:07:15:8b
Sending on LPF/eth0/6c:f0:49:07:15:8b
Sending on Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4&lt;/code&gt;

:2) Le (ou les) serveur(s) DHCP du réseau réponde(nt) par un « DHCPOFFER ». Cette trame contient une proposition de bail, la « MAC Address » du client, et l'adresse IP du serveur. Le client accepte normalement la première réponse venue.

 DHCPOFFER from 192.168.0.254

:3) Le client envoie alors un DHCPREQUEST à tous les serveurs (toujours en « Broadcast ») pour indiquer quelle offre il accepte.

 DHCPREQUEST on eth0 to 255.255.255.255 port 67

:4) Le serveur DHCP concerné répond définitivement par un DHCPACK qui constitue une confirmation du bail. L'adresse du client est alors marquée comme utilisée et ne sera plus proposée à un autre client pour toute la durée du bail.

 DHCPACK from 192.168.0.254
 bound to 192.168.0.2 -- renewal in 2850 seconds.

Un serveur DHCP a, à sa disposition, une plage d'adresses dans laquelle il est enfermé. Il tient à jour une base de données des adresses déjà utilisées et en cours d'utilisation. C'est ce qui explique que bien qu'attribuées dynamiquement, l'IP servie est souvent la même pour un client.

Lorsqu'il attribue une adresse, il le fait par l'intermédiaire d'un bail. Ce bail a normalement une durée limitée dans le temps. Tout ceci est configurable. L'avantage d'un bail long est une diminution du trafic vers le serveur dhcp. L'inconvénient, c'est qu'il faut planifier plus longtemps à l'avance des modification dans l'architecture de son réseau.

Après expiration du bail, ou résiliation par le client, les informations concernant ce bail restent mémorisées dans la base de données du serveur pendant un certain temps.

== Installation du serveur DHCP ==

Sur Debian, ceci se fait très simplement en installant les paquetages isc-dhcp-server et isc-dhcp-common.

 # apt-get update
 # apt-get install isc-dhcp-server isc-dhcp-common

== Configuration ==

=== Définition de l'interface ===

Le « daemon » dhcpd écoute par défaut sur toutes les interfaces réseau actives sur le serveur. Pour des raison de sécurité ce n'est pas souhaitable.
Pour Debian Squeeze, il faudra éditer le fichier /etc/default/isc-dhcp-server. Si vous souhaitez que votre dhcp écoute sur une seule interface, il faut la définir ici:

 INTERFACES=&quot;eth0&quot;

=== Le fichier /etc/dhcp/dhcpd.conf ===

La configuration de votre dhcp se trouve dans un seul fichier : /etc/dhcp/dhcpd.conf

Voici le fichier &quot;original&quot;

&lt;code&gt;# cat /etc/dhcp/dhcpd.conf
#
# Sample configuration file for ISC dhcpd for Debian
#
#

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;

# option definitions common to all supported networks...
option domain-name &quot;example.org&quot;;
option domain-name-servers ns1.example.org, ns2.example.org;

default-lease-time 600;
max-lease-time 7200;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# No service will be given on this subnet, but declaring it helps the 
# DHCP server to understand the network topology.

#subnet 10.152.187.0 netmask 255.255.255.0 {
#}

# This is a very basic subnet declaration.

#subnet 10.254.239.0 netmask 255.255.255.224 {
#  range 10.254.239.10 10.254.239.20;
#  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
#}

# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.

#subnet 10.254.239.32 netmask 255.255.255.224 {
#  range dynamic-bootp 10.254.239.40 10.254.239.60;
#  option broadcast-address 10.254.239.31;
#  option routers rtr-239-32-1.example.org;
#}

# A slightly different configuration for an internal subnet.
#subnet 10.5.5.0 netmask 255.255.255.224 {
#  range 10.5.5.26 10.5.5.30;
#  option domain-name-servers ns1.internal.example.org;
#  option domain-name &quot;internal.example.org&quot;;
#  option routers 10.5.5.1;
#  option broadcast-address 10.5.5.31;
#  default-lease-time 600;
#  max-lease-time 7200;
#}

# Hosts which require special configuration options can be listed in
# host statements.   If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.

#host passacaglia {
#  hardware ethernet 0:0:c0:5d:bd:95;
#  filename &quot;vmunix.passacaglia&quot;;
#  server-name &quot;toccata.fugue.com&quot;;
#}

# Fixed IP addresses can also be specified for hosts.   These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP.   Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
#host fantasia {
#  hardware ethernet 08:00:07:26:c0:a5;
#  fixed-address fantasia.fugue.com;
#}

# You can declare a class of clients and then do address allocation
# based on that.   The example below shows a case where all clients
# in a certain class get addresses on the 10.17.224/24 subnet, and all
# other clients get addresses on the 10.0.29/24 subnet.

#class &quot;foo&quot; {
#  match if substring (option vendor-class-identifier, 0, 4) = &quot;SUNW&quot;;
#}

#shared-network 224-29 {
#  subnet 10.17.224.0 netmask 255.255.255.0 {
#    option routers rtr-224.example.org;
#  }
#  subnet 10.0.29.0 netmask 255.255.255.0 {
#    option routers rtr-29.example.org;
#  }
#  pool {
#    allow members of &quot;foo&quot;;
#    range 10.17.224.10 10.17.224.250;
#  }
#  pool {
#    deny members of &quot;foo&quot;;
#    range 10.0.29.10 10.0.29.230;
#  }
#}&lt;/code&gt;

Une sauvegarde s'impose :

 # cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.ori

Voici notre fichier &quot;modifié&quot;

&lt;code&gt;# cat /etc/dhcp/dhcpd.conf
ddns-update-style none;
authoritative;

option domain-name &quot;isalo.org&quot;;
default-lease-time 7200;
max-lease-time 86400;
log-facility local7;

subnet 192.168.0.0 netmask 255.255.255.0 {
        pool {
                option domain-name-servers 192.168.0.1,41.188.9.130;
                range 192.168.0.199 192.168.0.249;
        }
        option routers 192.168.0.254;
        option domain-name &quot;isalo.org&quot;;
        option domain-name-servers 192.168.0.1,41.188.9.130;
        option netbios-name-servers 192.168.0.6;
        option netbios-node-type 8;
        option tftp-server-name &quot;192.168.0.6&quot;;

        next-server 192.168.0.6;
        filename &quot;pxelinux.0&quot;;
}
host s_lan_0 {
	hardware ethernet 00:25:11:79:8a:76;
	fixed-address 192.168.0.1;
	option host-name lol;
}&lt;/code&gt;

==== Explications ====

ddns-update-style: Vous pouvez demander au serveur DHCP de mettre à jour un serveur DNS si l'adresse IP d'un serveur dans votre réseau local a changé (car elle a été attribuée une adresse IP différente par DHCP).
Si vous n'avez pas de serveurs DNS dans notre LAN ou donnez des adresses IP statiques (qui est une bonne idée pour les serveurs ...) vous ne voudrez pas mettre à jour les enregistrements DNS, vous mettrez donc &quot;none&quot;

 ddns-update-style none;

Ce serveur fait autorité sur le réseau

 authoritative;

Les options globales
La durée des baux... En minutes. Vous pouvez laisser les durées par défaut. En augmentant ces durées, vous diminurez le trafic généré par les demandes de renouvellement de baux. La valeur par défaut (600 minutes) semble un peu faible, j'ai choisi de passer cette valeur à 7200. Pour des essais, vous pouvez parfaitement passer ces valeurs à 120 ou moins...
Vous disposez d'un serveur NTP, précisez-le ici.

 option time-servers 192.168.0.254;
 default-lease-time 7200;
 max-lease-time 7200;

Précision : Les option globales, définies avant tout autre définition sont applicables à l'ensemble des &quot;clients&quot;. Si vous souhaitez préciser des options pour chauque &quot;pool&quot; il faudra mettre ces options dans la partie &quot;pool {&quot; concernée.

Le réseau 192.168.0.0/24, avec la réserve d'adresses dynamiques, les IP des DNS, l'adresse du routeur, la définition du domaine de recherche, et trois lignes permettant de trouver un serveur PXE qui se trouve sur le réseau à l'IP 192.168.0.6
&lt;code&gt;
subnet 192.168.0.0 netmask 255.255.255.0 {
        pool {
               range 192.168.0.199 192.168.0.249; # La plage d'adresses IP à distribuer
        }
        option domain-name-servers 192.168.0.1,41.188.9.130; # Les DNS
        option routers 192.168.0.254; # La passerelle
        option domain-name &quot;isalo.org&quot;; # Le domaine
        option netbios-name-servers 192.168.0.6; # L'adresse du serveur Netbios

        option tftp-server-name &quot;192.168.0.6&quot;; # L'adresse du serveur tftp (pour un PXE)
        next-server 192.168.0.6;
        filename &quot;pxelinux.0&quot;;
}
&lt;/code&gt;

==== Les réservations d'adresses ====

Nous attribuerons automatiquement l'IP 192.168.0.1 à la machine qui dispose de l'adresse MAC 00:25:11:79:8a:76.

&lt;code&gt;host s_lan_0 {
	hardware ethernet 00:25:11:79:8a:76;
	fixed-address 192.168.0.1;
	option host-name lol;
}&lt;/code&gt;

Avertissement: La sécurité par attribution d'IP à des adresses MAC est facilement contournable par la technique dite &quot;ARP Spoofing&quot; - usurpation d'adresse MAC.

==== Les logs ====

Si vous souhaitez séparer vos logs :

Ajoutez :

 local7.debug     /var/log/dhcpd.log

Au fichier /etc/rsyslog.conf ou syslog.conf (en fonction de votre configuration)  

et relancez le daemon syslog :

 # service rsyslog restart ou # /etc/init.d/sysklogd restart

=== Coupler DHCP avec BIND9 ===

'''Cette option n'a pas encore été testée... A prendre avec précaution.'''

Cerise sur le gateau, vous disposez d'un serveur DNS bind. Nous pouvons alors coupler DHCP et BIND pour que ce dernier mette automatiquement à jour les IP dans ses fichiers de configuration:

==== dans /etc/dhcp/dhcpd.conf ====

Remplacer :

 ddns-update-style none;

Par :

&lt;code&gt;include &quot;/etc/bind/rndc.key&quot;;
ddns-updates on;
ddns-update-style interim;
ddns-domainname &quot;isalo.org.&quot;;
ddns-rev-domainname &quot;in-addr.arpa.&quot;;
ignore client-updates;
zone test.edu. { primary 127.0.0.1; key rndc-key; }
zone 192.in-addr.arpa. { primary 127.0.0.1; key rndc-key;  }&lt;/code&gt;

==== dans /etc/dhcp/dhcpd.conf ====

Configurez vos zones comme suit :

 controls {
 inet 127.0.0.1 allow { localhost; } keys { &quot;rndc-key&quot;; };
 };
 
 include &quot;/etc/bind/rndc.key&quot;;
 
 zone &quot;isalo.org&quot; {
         type master;
         file &quot;/etc/bind/db.isalo.org&quot;;
         allow-update { key &quot;rndc-key&quot;; };
         notify no;
         };
 zone &quot;192.in-addr.arpa&quot; {
         type master;
         file &quot;/etc/bind/db.192&quot;;
         allow-update { key &quot;rndc-key&quot;; };
         notify no;
         };

=== Test ===

Sur une machine cliente :

 # ifup eth0
 Internet Systems Consortium DHCP Client 4.1.1-P1
 Copyright 2004-2010 Internet Systems Consortium.
 All rights reserved.
 For info, please visit https://www.isc.org/software/dhcp/
 
 Listening on LPF/eth0/6c:f0:49:07:15:8b
 Sending on   LPF/eth0/6c:f0:49:07:15:8b
 Sending on   Socket/fallback
 DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4
 DHCPOFFER from 192.168.0.1
 DHCPREQUEST on eth0 to 255.255.255.255 port 67
 DHCPACK from 192.168.0.1
 bound to 192.168.0.2 -- renewal in 3552 seconds.

== Conclusion ==

Voilà, notre dhcp est configuré et opérationnel !
Très simple à mettre en place comme vous l'avez vu, votre dhcp est maintenant prêt à vous rendre de très nombreux services pour une gestion centralisée de votre réseau.

De nombreuses option existent, elles permettent de mieux servir vos clients. A vous de les découvrir...

Référence : [[http://www.daemon-systems.org/man/dhcpd.conf.5.html|'''Le fichier dhcpd.conf''']]

[[Utilisateur:Lol|Lol]] 12 novembre 2010 à 10:05 (EAT)

[[Category:Serveurs]]</text>
      <sha1>gyriuch1ff7bglh1bz65ef3xg20eb5w</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2283</id>
      <parentid>2282</parentid>
      <timestamp>2010-11-14T05:25:51Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Explications */</comment>
      <text xml:space="preserve" bytes="14235">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;


Nous allons installer un serveur DHCP (à destination d'un petit réseau domestique, nous n'allons pas nous lancer dans la configuration d'une usine à gaz...) sur une squeeze.

== DHCP, qu'est-ce que c'est ? ==

Le DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Lorqu'il est convenablement configuré et fonctionnel, ce service est très pratique... Il permet d'administrer un réseau sans avoir à configurer machine après machine.
Toutes vos &quot;box&quot; possèdent ce service par défaut, d'une manière plus ou moins élaborée.

=== Détail du protocole DHCP ===

Lorsque vous connectez une machine à un réseau Ethernet TCP/IP, cette machine, pour fonctionner correctement, doit disposer :

# d'une adresse IP unique dans votre réseau et appartenant au même réseau;
# d'un masque de sous réseau, le même pour tous les hôtes du réseau (le &quot;netmask&quot;);
# d'une adresse d'un ou plusieurs DNS, pour pouvoir résoudre les noms des hôtes;
# de l'adresse de la passerelle qui permet d'accéder à Internet (le &quot;gateway&quot;)

'''Pour configurer vos hôtes locaux, vous avez trois possibilités :'''

# avec « zeroconf » (rfc3927). ce système s'il est fonctionnel ne permet aucune administration du réseau;
# vous passez de machine en machine, et configurez les paramètres réseau;
# vous installez un serveur DHCP sur votre réseau et vous dites à vos clients de configurer leur réseau par dhcp.

'''Détail de fonctionnement du protocole'''

:1) Le client DHCP démarre, il envoie une trame « DHCPDISCOVER », destinée à trouver un serveur DHCP.

&lt;code&gt;Listening on LPF/eth0/6c:f0:49:07:15:8b
Sending on LPF/eth0/6c:f0:49:07:15:8b
Sending on Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4&lt;/code&gt;

:2) Le (ou les) serveur(s) DHCP du réseau réponde(nt) par un « DHCPOFFER ». Cette trame contient une proposition de bail, la « MAC Address » du client, et l'adresse IP du serveur. Le client accepte normalement la première réponse venue.

 DHCPOFFER from 192.168.0.254

:3) Le client envoie alors un DHCPREQUEST à tous les serveurs (toujours en « Broadcast ») pour indiquer quelle offre il accepte.

 DHCPREQUEST on eth0 to 255.255.255.255 port 67

:4) Le serveur DHCP concerné répond définitivement par un DHCPACK qui constitue une confirmation du bail. L'adresse du client est alors marquée comme utilisée et ne sera plus proposée à un autre client pour toute la durée du bail.

 DHCPACK from 192.168.0.254
 bound to 192.168.0.2 -- renewal in 2850 seconds.

Un serveur DHCP a, à sa disposition, une plage d'adresses dans laquelle il est enfermé. Il tient à jour une base de données des adresses déjà utilisées et en cours d'utilisation. C'est ce qui explique que bien qu'attribuées dynamiquement, l'IP servie est souvent la même pour un client.

Lorsqu'il attribue une adresse, il le fait par l'intermédiaire d'un bail. Ce bail a normalement une durée limitée dans le temps. Tout ceci est configurable. L'avantage d'un bail long est une diminution du trafic vers le serveur dhcp. L'inconvénient, c'est qu'il faut planifier plus longtemps à l'avance des modification dans l'architecture de son réseau.

Après expiration du bail, ou résiliation par le client, les informations concernant ce bail restent mémorisées dans la base de données du serveur pendant un certain temps.

== Installation du serveur DHCP ==

Sur Debian, ceci se fait très simplement en installant les paquetages isc-dhcp-server et isc-dhcp-common.

 # apt-get update
 # apt-get install isc-dhcp-server isc-dhcp-common

== Configuration ==

=== Définition de l'interface ===

Le « daemon » dhcpd écoute par défaut sur toutes les interfaces réseau actives sur le serveur. Pour des raison de sécurité ce n'est pas souhaitable.
Pour Debian Squeeze, il faudra éditer le fichier /etc/default/isc-dhcp-server. Si vous souhaitez que votre dhcp écoute sur une seule interface, il faut la définir ici:

 INTERFACES=&quot;eth0&quot;

=== Le fichier /etc/dhcp/dhcpd.conf ===

La configuration de votre dhcp se trouve dans un seul fichier : /etc/dhcp/dhcpd.conf

Voici le fichier &quot;original&quot;

&lt;code&gt;# cat /etc/dhcp/dhcpd.conf
#
# Sample configuration file for ISC dhcpd for Debian
#
#

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;

# option definitions common to all supported networks...
option domain-name &quot;example.org&quot;;
option domain-name-servers ns1.example.org, ns2.example.org;

default-lease-time 600;
max-lease-time 7200;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# No service will be given on this subnet, but declaring it helps the 
# DHCP server to understand the network topology.

#subnet 10.152.187.0 netmask 255.255.255.0 {
#}

# This is a very basic subnet declaration.

#subnet 10.254.239.0 netmask 255.255.255.224 {
#  range 10.254.239.10 10.254.239.20;
#  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
#}

# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.

#subnet 10.254.239.32 netmask 255.255.255.224 {
#  range dynamic-bootp 10.254.239.40 10.254.239.60;
#  option broadcast-address 10.254.239.31;
#  option routers rtr-239-32-1.example.org;
#}

# A slightly different configuration for an internal subnet.
#subnet 10.5.5.0 netmask 255.255.255.224 {
#  range 10.5.5.26 10.5.5.30;
#  option domain-name-servers ns1.internal.example.org;
#  option domain-name &quot;internal.example.org&quot;;
#  option routers 10.5.5.1;
#  option broadcast-address 10.5.5.31;
#  default-lease-time 600;
#  max-lease-time 7200;
#}

# Hosts which require special configuration options can be listed in
# host statements.   If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.

#host passacaglia {
#  hardware ethernet 0:0:c0:5d:bd:95;
#  filename &quot;vmunix.passacaglia&quot;;
#  server-name &quot;toccata.fugue.com&quot;;
#}

# Fixed IP addresses can also be specified for hosts.   These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP.   Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
#host fantasia {
#  hardware ethernet 08:00:07:26:c0:a5;
#  fixed-address fantasia.fugue.com;
#}

# You can declare a class of clients and then do address allocation
# based on that.   The example below shows a case where all clients
# in a certain class get addresses on the 10.17.224/24 subnet, and all
# other clients get addresses on the 10.0.29/24 subnet.

#class &quot;foo&quot; {
#  match if substring (option vendor-class-identifier, 0, 4) = &quot;SUNW&quot;;
#}

#shared-network 224-29 {
#  subnet 10.17.224.0 netmask 255.255.255.0 {
#    option routers rtr-224.example.org;
#  }
#  subnet 10.0.29.0 netmask 255.255.255.0 {
#    option routers rtr-29.example.org;
#  }
#  pool {
#    allow members of &quot;foo&quot;;
#    range 10.17.224.10 10.17.224.250;
#  }
#  pool {
#    deny members of &quot;foo&quot;;
#    range 10.0.29.10 10.0.29.230;
#  }
#}&lt;/code&gt;

Une sauvegarde s'impose :

 # cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.ori

Voici notre fichier &quot;modifié&quot;

&lt;code&gt;# cat /etc/dhcp/dhcpd.conf
ddns-update-style none;
authoritative;

option domain-name &quot;isalo.org&quot;;
default-lease-time 7200;
max-lease-time 86400;
log-facility local7;

subnet 192.168.0.0 netmask 255.255.255.0 {
        pool {
                option domain-name-servers 192.168.0.1,41.188.9.130;
                range 192.168.0.199 192.168.0.249;
        }
        option routers 192.168.0.254;
        option domain-name &quot;isalo.org&quot;;
        option domain-name-servers 192.168.0.1,41.188.9.130;
        option netbios-name-servers 192.168.0.6;
        option netbios-node-type 8;
        option tftp-server-name &quot;192.168.0.6&quot;;

        next-server 192.168.0.6;
        filename &quot;pxelinux.0&quot;;
}
host s_lan_0 {
	hardware ethernet 00:25:11:79:8a:76;
	fixed-address 192.168.0.1;
	option host-name lol;
}&lt;/code&gt;

==== Explications ====

ddns-update-style: Vous pouvez demander au serveur DHCP de mettre à jour un serveur DNS si l'adresse IP d'un serveur dans votre réseau local a changé (car elle a été attribuée une adresse IP différente par DHCP).
Si vous n'avez pas de serveurs DNS dans notre LAN ou donnez des adresses IP statiques (qui est une bonne idée pour les serveurs ...) vous ne voudrez pas mettre à jour les enregistrements DNS, vous mettrez donc &quot;none&quot;

 ddns-update-style none;

Ce serveur fait autorité sur le réseau

 authoritative;

Les options globales
La durée des baux... En secondes. Vous pouvez laisser les durées par défaut. En augmentant ces durées, vous diminurez le trafic généré par les demandes de renouvellement de baux. La valeur par défaut (600 minutes) semble un peu faible, j'ai choisi de passer cette valeur à 7200. Pour des essais, vous pouvez parfaitement passer ces valeurs à 120 ou moins...
Vous disposez d'un serveur NTP, précisez-le ici.

 option time-servers 192.168.0.254;
 default-lease-time 7200;
 max-lease-time 7200;

Précision : Les option globales, définies avant tout autre définition sont applicables à l'ensemble des &quot;clients&quot;. Si vous souhaitez préciser des options pour chauque &quot;pool&quot; il faudra mettre ces options dans la partie &quot;pool {&quot; concernée.

Le réseau 192.168.0.0/24, avec la réserve d'adresses dynamiques, les IP des DNS, l'adresse du routeur, la définition du domaine de recherche, et trois lignes permettant de trouver un serveur PXE qui se trouve sur le réseau à l'IP 192.168.0.6
&lt;code&gt;
subnet 192.168.0.0 netmask 255.255.255.0 {
        pool {
               range 192.168.0.199 192.168.0.249; # La plage d'adresses IP à distribuer
        }
        option domain-name-servers 192.168.0.1,41.188.9.130; # Les DNS
        option routers 192.168.0.254; # La passerelle
        option domain-name &quot;isalo.org&quot;; # Le domaine
        option netbios-name-servers 192.168.0.6; # L'adresse du serveur Netbios

        option tftp-server-name &quot;192.168.0.6&quot;; # L'adresse du serveur tftp (pour un PXE)
        next-server 192.168.0.6;
        filename &quot;pxelinux.0&quot;;
}
&lt;/code&gt;

==== Les réservations d'adresses ====

Nous attribuerons automatiquement l'IP 192.168.0.1 à la machine qui dispose de l'adresse MAC 00:25:11:79:8a:76.

&lt;code&gt;host s_lan_0 {
	hardware ethernet 00:25:11:79:8a:76;
	fixed-address 192.168.0.1;
	option host-name lol;
}&lt;/code&gt;

Avertissement: La sécurité par attribution d'IP à des adresses MAC est facilement contournable par la technique dite &quot;ARP Spoofing&quot; - usurpation d'adresse MAC.

==== Les logs ====

Si vous souhaitez séparer vos logs :

Ajoutez :

 local7.debug     /var/log/dhcpd.log

Au fichier /etc/rsyslog.conf ou syslog.conf (en fonction de votre configuration)  

et relancez le daemon syslog :

 # service rsyslog restart ou # /etc/init.d/sysklogd restart

=== Coupler DHCP avec BIND9 ===

'''Cette option n'a pas encore été testée... A prendre avec précaution.'''

Cerise sur le gateau, vous disposez d'un serveur DNS bind. Nous pouvons alors coupler DHCP et BIND pour que ce dernier mette automatiquement à jour les IP dans ses fichiers de configuration:

==== dans /etc/dhcp/dhcpd.conf ====

Remplacer :

 ddns-update-style none;

Par :

&lt;code&gt;include &quot;/etc/bind/rndc.key&quot;;
ddns-updates on;
ddns-update-style interim;
ddns-domainname &quot;isalo.org.&quot;;
ddns-rev-domainname &quot;in-addr.arpa.&quot;;
ignore client-updates;
zone test.edu. { primary 127.0.0.1; key rndc-key; }
zone 192.in-addr.arpa. { primary 127.0.0.1; key rndc-key;  }&lt;/code&gt;

==== dans /etc/dhcp/dhcpd.conf ====

Configurez vos zones comme suit :

 controls {
 inet 127.0.0.1 allow { localhost; } keys { &quot;rndc-key&quot;; };
 };
 
 include &quot;/etc/bind/rndc.key&quot;;
 
 zone &quot;isalo.org&quot; {
         type master;
         file &quot;/etc/bind/db.isalo.org&quot;;
         allow-update { key &quot;rndc-key&quot;; };
         notify no;
         };
 zone &quot;192.in-addr.arpa&quot; {
         type master;
         file &quot;/etc/bind/db.192&quot;;
         allow-update { key &quot;rndc-key&quot;; };
         notify no;
         };

=== Test ===

Sur une machine cliente :

 # ifup eth0
 Internet Systems Consortium DHCP Client 4.1.1-P1
 Copyright 2004-2010 Internet Systems Consortium.
 All rights reserved.
 For info, please visit https://www.isc.org/software/dhcp/
 
 Listening on LPF/eth0/6c:f0:49:07:15:8b
 Sending on   LPF/eth0/6c:f0:49:07:15:8b
 Sending on   Socket/fallback
 DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4
 DHCPOFFER from 192.168.0.1
 DHCPREQUEST on eth0 to 255.255.255.255 port 67
 DHCPACK from 192.168.0.1
 bound to 192.168.0.2 -- renewal in 3552 seconds.

== Conclusion ==

Voilà, notre dhcp est configuré et opérationnel !
Très simple à mettre en place comme vous l'avez vu, votre dhcp est maintenant prêt à vous rendre de très nombreux services pour une gestion centralisée de votre réseau.

De nombreuses option existent, elles permettent de mieux servir vos clients. A vous de les découvrir...

Référence : [[http://www.daemon-systems.org/man/dhcpd.conf.5.html|'''Le fichier dhcpd.conf''']]

[[Utilisateur:Lol|Lol]] 12 novembre 2010 à 10:05 (EAT)

[[Category:Serveurs]]</text>
      <sha1>gyezsv3vua75qht5yh6ufjf0jpt1wnt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2284</id>
      <parentid>2283</parentid>
      <timestamp>2010-11-14T06:51:45Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* dans /etc/dhcp/dhcpd.conf */</comment>
      <text xml:space="preserve" bytes="14252">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;


Nous allons installer un serveur DHCP (à destination d'un petit réseau domestique, nous n'allons pas nous lancer dans la configuration d'une usine à gaz...) sur une squeeze.

== DHCP, qu'est-ce que c'est ? ==

Le DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Lorqu'il est convenablement configuré et fonctionnel, ce service est très pratique... Il permet d'administrer un réseau sans avoir à configurer machine après machine.
Toutes vos &quot;box&quot; possèdent ce service par défaut, d'une manière plus ou moins élaborée.

=== Détail du protocole DHCP ===

Lorsque vous connectez une machine à un réseau Ethernet TCP/IP, cette machine, pour fonctionner correctement, doit disposer :

# d'une adresse IP unique dans votre réseau et appartenant au même réseau;
# d'un masque de sous réseau, le même pour tous les hôtes du réseau (le &quot;netmask&quot;);
# d'une adresse d'un ou plusieurs DNS, pour pouvoir résoudre les noms des hôtes;
# de l'adresse de la passerelle qui permet d'accéder à Internet (le &quot;gateway&quot;)

'''Pour configurer vos hôtes locaux, vous avez trois possibilités :'''

# avec « zeroconf » (rfc3927). ce système s'il est fonctionnel ne permet aucune administration du réseau;
# vous passez de machine en machine, et configurez les paramètres réseau;
# vous installez un serveur DHCP sur votre réseau et vous dites à vos clients de configurer leur réseau par dhcp.

'''Détail de fonctionnement du protocole'''

:1) Le client DHCP démarre, il envoie une trame « DHCPDISCOVER », destinée à trouver un serveur DHCP.

&lt;code&gt;Listening on LPF/eth0/6c:f0:49:07:15:8b
Sending on LPF/eth0/6c:f0:49:07:15:8b
Sending on Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4&lt;/code&gt;

:2) Le (ou les) serveur(s) DHCP du réseau réponde(nt) par un « DHCPOFFER ». Cette trame contient une proposition de bail, la « MAC Address » du client, et l'adresse IP du serveur. Le client accepte normalement la première réponse venue.

 DHCPOFFER from 192.168.0.254

:3) Le client envoie alors un DHCPREQUEST à tous les serveurs (toujours en « Broadcast ») pour indiquer quelle offre il accepte.

 DHCPREQUEST on eth0 to 255.255.255.255 port 67

:4) Le serveur DHCP concerné répond définitivement par un DHCPACK qui constitue une confirmation du bail. L'adresse du client est alors marquée comme utilisée et ne sera plus proposée à un autre client pour toute la durée du bail.

 DHCPACK from 192.168.0.254
 bound to 192.168.0.2 -- renewal in 2850 seconds.

Un serveur DHCP a, à sa disposition, une plage d'adresses dans laquelle il est enfermé. Il tient à jour une base de données des adresses déjà utilisées et en cours d'utilisation. C'est ce qui explique que bien qu'attribuées dynamiquement, l'IP servie est souvent la même pour un client.

Lorsqu'il attribue une adresse, il le fait par l'intermédiaire d'un bail. Ce bail a normalement une durée limitée dans le temps. Tout ceci est configurable. L'avantage d'un bail long est une diminution du trafic vers le serveur dhcp. L'inconvénient, c'est qu'il faut planifier plus longtemps à l'avance des modification dans l'architecture de son réseau.

Après expiration du bail, ou résiliation par le client, les informations concernant ce bail restent mémorisées dans la base de données du serveur pendant un certain temps.

== Installation du serveur DHCP ==

Sur Debian, ceci se fait très simplement en installant les paquetages isc-dhcp-server et isc-dhcp-common.

 # apt-get update
 # apt-get install isc-dhcp-server isc-dhcp-common

== Configuration ==

=== Définition de l'interface ===

Le « daemon » dhcpd écoute par défaut sur toutes les interfaces réseau actives sur le serveur. Pour des raison de sécurité ce n'est pas souhaitable.
Pour Debian Squeeze, il faudra éditer le fichier /etc/default/isc-dhcp-server. Si vous souhaitez que votre dhcp écoute sur une seule interface, il faut la définir ici:

 INTERFACES=&quot;eth0&quot;

=== Le fichier /etc/dhcp/dhcpd.conf ===

La configuration de votre dhcp se trouve dans un seul fichier : /etc/dhcp/dhcpd.conf

Voici le fichier &quot;original&quot;

&lt;code&gt;# cat /etc/dhcp/dhcpd.conf
#
# Sample configuration file for ISC dhcpd for Debian
#
#

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;

# option definitions common to all supported networks...
option domain-name &quot;example.org&quot;;
option domain-name-servers ns1.example.org, ns2.example.org;

default-lease-time 600;
max-lease-time 7200;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# No service will be given on this subnet, but declaring it helps the 
# DHCP server to understand the network topology.

#subnet 10.152.187.0 netmask 255.255.255.0 {
#}

# This is a very basic subnet declaration.

#subnet 10.254.239.0 netmask 255.255.255.224 {
#  range 10.254.239.10 10.254.239.20;
#  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
#}

# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.

#subnet 10.254.239.32 netmask 255.255.255.224 {
#  range dynamic-bootp 10.254.239.40 10.254.239.60;
#  option broadcast-address 10.254.239.31;
#  option routers rtr-239-32-1.example.org;
#}

# A slightly different configuration for an internal subnet.
#subnet 10.5.5.0 netmask 255.255.255.224 {
#  range 10.5.5.26 10.5.5.30;
#  option domain-name-servers ns1.internal.example.org;
#  option domain-name &quot;internal.example.org&quot;;
#  option routers 10.5.5.1;
#  option broadcast-address 10.5.5.31;
#  default-lease-time 600;
#  max-lease-time 7200;
#}

# Hosts which require special configuration options can be listed in
# host statements.   If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.

#host passacaglia {
#  hardware ethernet 0:0:c0:5d:bd:95;
#  filename &quot;vmunix.passacaglia&quot;;
#  server-name &quot;toccata.fugue.com&quot;;
#}

# Fixed IP addresses can also be specified for hosts.   These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP.   Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
#host fantasia {
#  hardware ethernet 08:00:07:26:c0:a5;
#  fixed-address fantasia.fugue.com;
#}

# You can declare a class of clients and then do address allocation
# based on that.   The example below shows a case where all clients
# in a certain class get addresses on the 10.17.224/24 subnet, and all
# other clients get addresses on the 10.0.29/24 subnet.

#class &quot;foo&quot; {
#  match if substring (option vendor-class-identifier, 0, 4) = &quot;SUNW&quot;;
#}

#shared-network 224-29 {
#  subnet 10.17.224.0 netmask 255.255.255.0 {
#    option routers rtr-224.example.org;
#  }
#  subnet 10.0.29.0 netmask 255.255.255.0 {
#    option routers rtr-29.example.org;
#  }
#  pool {
#    allow members of &quot;foo&quot;;
#    range 10.17.224.10 10.17.224.250;
#  }
#  pool {
#    deny members of &quot;foo&quot;;
#    range 10.0.29.10 10.0.29.230;
#  }
#}&lt;/code&gt;

Une sauvegarde s'impose :

 # cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.ori

Voici notre fichier &quot;modifié&quot;

&lt;code&gt;# cat /etc/dhcp/dhcpd.conf
ddns-update-style none;
authoritative;

option domain-name &quot;isalo.org&quot;;
default-lease-time 7200;
max-lease-time 86400;
log-facility local7;

subnet 192.168.0.0 netmask 255.255.255.0 {
        pool {
                option domain-name-servers 192.168.0.1,41.188.9.130;
                range 192.168.0.199 192.168.0.249;
        }
        option routers 192.168.0.254;
        option domain-name &quot;isalo.org&quot;;
        option domain-name-servers 192.168.0.1,41.188.9.130;
        option netbios-name-servers 192.168.0.6;
        option netbios-node-type 8;
        option tftp-server-name &quot;192.168.0.6&quot;;

        next-server 192.168.0.6;
        filename &quot;pxelinux.0&quot;;
}
host s_lan_0 {
	hardware ethernet 00:25:11:79:8a:76;
	fixed-address 192.168.0.1;
	option host-name lol;
}&lt;/code&gt;

==== Explications ====

ddns-update-style: Vous pouvez demander au serveur DHCP de mettre à jour un serveur DNS si l'adresse IP d'un serveur dans votre réseau local a changé (car elle a été attribuée une adresse IP différente par DHCP).
Si vous n'avez pas de serveurs DNS dans notre LAN ou donnez des adresses IP statiques (qui est une bonne idée pour les serveurs ...) vous ne voudrez pas mettre à jour les enregistrements DNS, vous mettrez donc &quot;none&quot;

 ddns-update-style none;

Ce serveur fait autorité sur le réseau

 authoritative;

Les options globales
La durée des baux... En secondes. Vous pouvez laisser les durées par défaut. En augmentant ces durées, vous diminurez le trafic généré par les demandes de renouvellement de baux. La valeur par défaut (600 minutes) semble un peu faible, j'ai choisi de passer cette valeur à 7200. Pour des essais, vous pouvez parfaitement passer ces valeurs à 120 ou moins...
Vous disposez d'un serveur NTP, précisez-le ici.

 option time-servers 192.168.0.254;
 default-lease-time 7200;
 max-lease-time 7200;

Précision : Les option globales, définies avant tout autre définition sont applicables à l'ensemble des &quot;clients&quot;. Si vous souhaitez préciser des options pour chauque &quot;pool&quot; il faudra mettre ces options dans la partie &quot;pool {&quot; concernée.

Le réseau 192.168.0.0/24, avec la réserve d'adresses dynamiques, les IP des DNS, l'adresse du routeur, la définition du domaine de recherche, et trois lignes permettant de trouver un serveur PXE qui se trouve sur le réseau à l'IP 192.168.0.6
&lt;code&gt;
subnet 192.168.0.0 netmask 255.255.255.0 {
        pool {
               range 192.168.0.199 192.168.0.249; # La plage d'adresses IP à distribuer
        }
        option domain-name-servers 192.168.0.1,41.188.9.130; # Les DNS
        option routers 192.168.0.254; # La passerelle
        option domain-name &quot;isalo.org&quot;; # Le domaine
        option netbios-name-servers 192.168.0.6; # L'adresse du serveur Netbios

        option tftp-server-name &quot;192.168.0.6&quot;; # L'adresse du serveur tftp (pour un PXE)
        next-server 192.168.0.6;
        filename &quot;pxelinux.0&quot;;
}
&lt;/code&gt;

==== Les réservations d'adresses ====

Nous attribuerons automatiquement l'IP 192.168.0.1 à la machine qui dispose de l'adresse MAC 00:25:11:79:8a:76.

&lt;code&gt;host s_lan_0 {
	hardware ethernet 00:25:11:79:8a:76;
	fixed-address 192.168.0.1;
	option host-name lol;
}&lt;/code&gt;

Avertissement: La sécurité par attribution d'IP à des adresses MAC est facilement contournable par la technique dite &quot;ARP Spoofing&quot; - usurpation d'adresse MAC.

==== Les logs ====

Si vous souhaitez séparer vos logs :

Ajoutez :

 local7.debug     /var/log/dhcpd.log

Au fichier /etc/rsyslog.conf ou syslog.conf (en fonction de votre configuration)  

et relancez le daemon syslog :

 # service rsyslog restart ou # /etc/init.d/sysklogd restart

=== Coupler DHCP avec BIND9 ===

'''Cette option n'a pas encore été testée... A prendre avec précaution.'''

Cerise sur le gateau, vous disposez d'un serveur DNS bind. Nous pouvons alors coupler DHCP et BIND pour que ce dernier mette automatiquement à jour les IP dans ses fichiers de configuration:

==== dans /etc/dhcp/dhcpd.conf ====

Remplacer :

 ddns-update-style none;

Par :

&lt;code&gt;include &quot;/etc/bind/rndc.key&quot;;
ddns-updates on;
ddns-update-style interim;
ddns-domainname &quot;isalo.org.&quot;;
ddns-rev-domainname &quot;in-addr.arpa.&quot;;
ignore client-updates;
zone test.edu. { primary 127.0.0.1; key rndc-key; }
zone 192.in-addr.arpa. { primary 127.0.0.1; key rndc-key;  }&lt;/code&gt;

==== dans /etc/bind/named.conf ou named.conf.local ====

Configurez vos zones comme suit :

&lt;code&gt;
controls {
inet 127.0.0.1 allow { localhost; } keys { &quot;rndc-key&quot;; };
};

include &quot;/etc/bind/rndc.key&quot;;

zone &quot;isalo.org&quot; {
        type master;
        file &quot;/etc/bind/db.isalo.org&quot;;
        allow-update { key &quot;rndc-key&quot;; };
        notify no;
        };
zone &quot;192.in-addr.arpa&quot; {
        type master;
        file &quot;/etc/bind/db.192&quot;;
        allow-update { key &quot;rndc-key&quot;; };
        notify no;
        };
&lt;/code&gt;

=== Test ===

Sur une machine cliente :

 # ifup eth0
 Internet Systems Consortium DHCP Client 4.1.1-P1
 Copyright 2004-2010 Internet Systems Consortium.
 All rights reserved.
 For info, please visit https://www.isc.org/software/dhcp/
 
 Listening on LPF/eth0/6c:f0:49:07:15:8b
 Sending on   LPF/eth0/6c:f0:49:07:15:8b
 Sending on   Socket/fallback
 DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4
 DHCPOFFER from 192.168.0.1
 DHCPREQUEST on eth0 to 255.255.255.255 port 67
 DHCPACK from 192.168.0.1
 bound to 192.168.0.2 -- renewal in 3552 seconds.

== Conclusion ==

Voilà, notre dhcp est configuré et opérationnel !
Très simple à mettre en place comme vous l'avez vu, votre dhcp est maintenant prêt à vous rendre de très nombreux services pour une gestion centralisée de votre réseau.

De nombreuses option existent, elles permettent de mieux servir vos clients. A vous de les découvrir...

Référence : [[http://www.daemon-systems.org/man/dhcpd.conf.5.html|'''Le fichier dhcpd.conf''']]

[[Utilisateur:Lol|Lol]] 12 novembre 2010 à 10:05 (EAT)

[[Category:Serveurs]]</text>
      <sha1>p5uryw358ip23vp0qrdmbuplkdu76l6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2285</id>
      <parentid>2284</parentid>
      <timestamp>2010-11-14T08:51:03Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="14252">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;


Nous allons installer un serveur DHCP (à destination d'un petit réseau domestique, nous n'allons pas nous lancer dans la configuration d'une usine à gaz...) sur une squeeze.

== DHCP, qu'est-ce que c'est ? ==

Le DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Lorqu'il est convenablement configuré et fonctionnel, ce service est très pratique... Il permet d'administrer un réseau sans avoir à configurer machine après machine.
Toutes vos &quot;box&quot; possèdent ce service par défaut, d'une manière plus ou moins élaborée.

=== Détail du protocole DHCP ===

Lorsque vous connectez une machine à un réseau Ethernet TCP/IP, cette machine, pour fonctionner correctement, doit disposer :

# d'une adresse IP unique dans votre réseau et appartenant au même réseau;
# d'un masque de sous réseau, le même pour tous les hôtes du réseau (le &quot;netmask&quot;);
# d'une adresse d'un ou plusieurs DNS, pour pouvoir résoudre les noms des hôtes;
# de l'adresse de la passerelle qui permet d'accéder à Internet (le &quot;gateway&quot;)

'''Pour configurer vos hôtes locaux, vous avez trois possibilités :'''

# avec « zeroconf » (rfc3927). ce système s'il est fonctionnel ne permet aucune administration du réseau;
# vous passez de machine en machine, et configurez les paramètres réseau;
# vous installez un serveur DHCP sur votre réseau et vous dites à vos clients de configurer leur réseau par dhcp.

'''Détail de fonctionnement du protocole'''

:1) Le client DHCP démarre, il envoie une trame « DHCPDISCOVER », destinée à trouver un serveur DHCP.

&lt;code&gt;Listening on LPF/eth0/6c:f0:49:07:15:8b
Sending on LPF/eth0/6c:f0:49:07:15:8b
Sending on Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4&lt;/code&gt;

:2) Le (ou les) serveur(s) DHCP du réseau réponde(nt) par un « DHCPOFFER ». Cette trame contient une proposition de bail, la « MAC Address » du client, et l'adresse IP du serveur. Le client accepte normalement la première réponse venue.

 DHCPOFFER from 192.168.0.254

:3) Le client envoie alors un DHCPREQUEST à tous les serveurs (toujours en « Broadcast ») pour indiquer quelle offre il accepte.

 DHCPREQUEST on eth0 to 255.255.255.255 port 67

:4) Le serveur DHCP concerné répond définitivement par un DHCPACK qui constitue une confirmation du bail. L'adresse du client est alors marquée comme utilisée et ne sera plus proposée à un autre client pour toute la durée du bail.

 DHCPACK from 192.168.0.254
 bound to 192.168.0.2 -- renewal in 2850 seconds.

Un serveur DHCP a, à sa disposition, une plage d'adresses dans laquelle il est enfermé. Il tient à jour une base de données des adresses déjà utilisées et en cours d'utilisation. C'est ce qui explique que bien qu'attribuées dynamiquement, l'IP servie est souvent la même pour un client.

Lorsqu'il attribue une adresse, il le fait par l'intermédiaire d'un bail. Ce bail a normalement une durée limitée dans le temps. Tout ceci est configurable. L'avantage d'un bail long est une diminution du trafic vers le serveur dhcp. L'inconvénient, c'est qu'il faut planifier plus longtemps à l'avance des modification dans l'architecture de son réseau.

Après expiration du bail, ou résiliation par le client, les informations concernant ce bail restent mémorisées dans la base de données du serveur pendant un certain temps.

== Installation du serveur DHCP ==

Sur Debian, ceci se fait très simplement en installant les paquetages isc-dhcp-server et isc-dhcp-common.

 # apt-get update
 # apt-get install isc-dhcp-server isc-dhcp-common

== Configuration ==

=== Définition de l'interface ===

Le « daemon » dhcpd écoute par défaut sur toutes les interfaces réseau actives sur le serveur. Pour des raison de sécurité ce n'est pas souhaitable.
Pour Debian Squeeze, il faudra éditer le fichier /etc/default/isc-dhcp-server. Si vous souhaitez que votre dhcp écoute sur une seule interface, il faut la définir ici:

 INTERFACES=&quot;eth0&quot;

=== Le fichier /etc/dhcp/dhcpd.conf ===

La configuration de votre dhcp se trouve dans un seul fichier : /etc/dhcp/dhcpd.conf

Voici le fichier &quot;original&quot;

&lt;code&gt;# cat /etc/dhcp/dhcpd.conf
#
# Sample configuration file for ISC dhcpd for Debian
#
#

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;

# option definitions common to all supported networks...
option domain-name &quot;example.org&quot;;
option domain-name-servers ns1.example.org, ns2.example.org;

default-lease-time 600;
max-lease-time 7200;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# No service will be given on this subnet, but declaring it helps the 
# DHCP server to understand the network topology.

#subnet 10.152.187.0 netmask 255.255.255.0 {
#}

# This is a very basic subnet declaration.

#subnet 10.254.239.0 netmask 255.255.255.224 {
#  range 10.254.239.10 10.254.239.20;
#  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
#}

# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.

#subnet 10.254.239.32 netmask 255.255.255.224 {
#  range dynamic-bootp 10.254.239.40 10.254.239.60;
#  option broadcast-address 10.254.239.31;
#  option routers rtr-239-32-1.example.org;
#}

# A slightly different configuration for an internal subnet.
#subnet 10.5.5.0 netmask 255.255.255.224 {
#  range 10.5.5.26 10.5.5.30;
#  option domain-name-servers ns1.internal.example.org;
#  option domain-name &quot;internal.example.org&quot;;
#  option routers 10.5.5.1;
#  option broadcast-address 10.5.5.31;
#  default-lease-time 600;
#  max-lease-time 7200;
#}

# Hosts which require special configuration options can be listed in
# host statements.   If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.

#host passacaglia {
#  hardware ethernet 0:0:c0:5d:bd:95;
#  filename &quot;vmunix.passacaglia&quot;;
#  server-name &quot;toccata.fugue.com&quot;;
#}

# Fixed IP addresses can also be specified for hosts.   These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP.   Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
#host fantasia {
#  hardware ethernet 08:00:07:26:c0:a5;
#  fixed-address fantasia.fugue.com;
#}

# You can declare a class of clients and then do address allocation
# based on that.   The example below shows a case where all clients
# in a certain class get addresses on the 10.17.224/24 subnet, and all
# other clients get addresses on the 10.0.29/24 subnet.

#class &quot;foo&quot; {
#  match if substring (option vendor-class-identifier, 0, 4) = &quot;SUNW&quot;;
#}

#shared-network 224-29 {
#  subnet 10.17.224.0 netmask 255.255.255.0 {
#    option routers rtr-224.example.org;
#  }
#  subnet 10.0.29.0 netmask 255.255.255.0 {
#    option routers rtr-29.example.org;
#  }
#  pool {
#    allow members of &quot;foo&quot;;
#    range 10.17.224.10 10.17.224.250;
#  }
#  pool {
#    deny members of &quot;foo&quot;;
#    range 10.0.29.10 10.0.29.230;
#  }
#}&lt;/code&gt;

Une sauvegarde s'impose :

 # cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.ori

Voici notre fichier &quot;modifié&quot;

&lt;code&gt;# cat /etc/dhcp/dhcpd.conf
ddns-update-style none;
authoritative;

option domain-name &quot;isalo.org&quot;;
default-lease-time 7200;
max-lease-time 86400;
log-facility local7;

subnet 192.168.0.0 netmask 255.255.255.0 {
        pool {
                option domain-name-servers 192.168.0.1,41.188.9.130;
                range 192.168.0.199 192.168.0.249;
        }
        option routers 192.168.0.254;
        option domain-name &quot;isalo.org&quot;;
        option domain-name-servers 192.168.0.1,41.188.9.130;
        option netbios-name-servers 192.168.0.6;
        option netbios-node-type 8;
        option tftp-server-name &quot;192.168.0.6&quot;;

        next-server 192.168.0.6;
        filename &quot;pxelinux.0&quot;;
}
host s_lan_0 {
	hardware ethernet 00:25:11:79:8a:76;
	fixed-address 192.168.0.1;
	option host-name lol;
}&lt;/code&gt;

==== Explications ====

ddns-update-style: Vous pouvez demander au serveur DHCP de mettre à jour un serveur DNS si l'adresse IP d'un serveur dans votre réseau local a changé (car elle a été attribuée une adresse IP différente par DHCP).
Si vous n'avez pas de serveurs DNS dans notre LAN ou donnez des adresses IP statiques (qui est une bonne idée pour les serveurs ...) vous ne voudrez pas mettre à jour les enregistrements DNS, vous mettrez donc &quot;none&quot;

 ddns-update-style none;

Ce serveur fait autorité sur le réseau

 authoritative;

Les options globales
La durée des baux... En secondes. Vous pouvez laisser les durées par défaut. En augmentant ces durées, vous diminuerez le trafic généré par les demandes de renouvellement de baux. La valeur par défaut (600 minutes) semble un peu faible, j'ai choisi de passer cette valeur à 7200. Pour des essais, vous pouvez parfaitement passer ces valeurs à 120 ou moins...
Vous disposez d'un serveur NTP, précisez-le ici.

 option time-servers 192.168.0.254;
 default-lease-time 7200;
 max-lease-time 7200;

Précision : Les option globales, définies avant toute autre définition sont applicables à l'ensemble des &quot;clients&quot;. Si vous souhaitez préciser des options pour chauque &quot;pool&quot; il faudra mettre ces options dans la partie &quot;pool&quot; concernée.

Le réseau 192.168.0.0/24, avec la réserve d'adresses dynamiques, les IP des DNS, l'adresse du routeur, la définition du domaine de recherche, et trois lignes permettant de trouver un serveur PXE qui se trouve sur le réseau à l'IP 192.168.0.6
&lt;code&gt;
subnet 192.168.0.0 netmask 255.255.255.0 {
        pool {
               range 192.168.0.199 192.168.0.249; # La plage d'adresses IP à distribuer
        }
        option domain-name-servers 192.168.0.1,41.188.9.130; # Les DNS
        option routers 192.168.0.254; # La passerelle
        option domain-name &quot;isalo.org&quot;; # Le domaine
        option netbios-name-servers 192.168.0.6; # L'adresse du serveur Netbios

        option tftp-server-name &quot;192.168.0.6&quot;; # L'adresse du serveur tftp (pour un PXE)
        next-server 192.168.0.6;
        filename &quot;pxelinux.0&quot;;
}
&lt;/code&gt;

==== Les réservations d'adresses ====

Nous attribuerons automatiquement l'IP 192.168.0.1 à la machine qui dispose de l'adresse MAC 00:25:11:79:8a:76.

&lt;code&gt;host s_lan_0 {
	hardware ethernet 00:25:11:79:8a:76;
	fixed-address 192.168.0.1;
	option host-name lol;
}&lt;/code&gt;

Avertissement: La sécurité par attribution d'IP à des adresses MAC est facilement contournable par la technique dite &quot;ARP Spoofing&quot; - usurpation d'adresse MAC.

==== Les logs ====

Si vous souhaitez séparer vos logs :

Ajoutez :

 local7.debug     /var/log/dhcpd.log

Au fichier /etc/rsyslog.conf ou syslog.conf (en fonction de votre configuration)  

et relancez le daemon syslog :

 # service rsyslog restart ou # /etc/init.d/sysklogd restart

=== Coupler DHCP avec BIND9 ===

'''Cette option n'a pas encore été testée... A prendre avec précaution.'''

Cerise sur le gateau, vous disposez d'un serveur DNS bind. Nous pouvons alors coupler DHCP et BIND pour que ce dernier mette automatiquement à jour les IP dans ses fichiers de configuration:

==== dans /etc/dhcp/dhcpd.conf ====

Remplacer :

 ddns-update-style none;

Par :

&lt;code&gt;include &quot;/etc/bind/rndc.key&quot;;
ddns-updates on;
ddns-update-style interim;
ddns-domainname &quot;isalo.org.&quot;;
ddns-rev-domainname &quot;in-addr.arpa.&quot;;
ignore client-updates;
zone test.edu. { primary 127.0.0.1; key rndc-key; }
zone 192.in-addr.arpa. { primary 127.0.0.1; key rndc-key;  }&lt;/code&gt;

==== dans /etc/bind/named.conf ou named.conf.local ====

Configurez vos zones comme suit :

&lt;code&gt;
controls {
inet 127.0.0.1 allow { localhost; } keys { &quot;rndc-key&quot;; };
};

include &quot;/etc/bind/rndc.key&quot;;

zone &quot;isalo.org&quot; {
        type master;
        file &quot;/etc/bind/db.isalo.org&quot;;
        allow-update { key &quot;rndc-key&quot;; };
        notify no;
        };
zone &quot;192.in-addr.arpa&quot; {
        type master;
        file &quot;/etc/bind/db.192&quot;;
        allow-update { key &quot;rndc-key&quot;; };
        notify no;
        };
&lt;/code&gt;

=== Test ===

Sur une machine cliente :

 # ifup eth0
 Internet Systems Consortium DHCP Client 4.1.1-P1
 Copyright 2004-2010 Internet Systems Consortium.
 All rights reserved.
 For info, please visit https://www.isc.org/software/dhcp/
 
 Listening on LPF/eth0/6c:f0:49:07:15:8b
 Sending on   LPF/eth0/6c:f0:49:07:15:8b
 Sending on   Socket/fallback
 DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4
 DHCPOFFER from 192.168.0.1
 DHCPREQUEST on eth0 to 255.255.255.255 port 67
 DHCPACK from 192.168.0.1
 bound to 192.168.0.2 -- renewal in 3552 seconds.

== Conclusion ==

Voilà, notre dhcp est configuré et opérationnel !
Très simple à mettre en place comme vous l'avez vu, votre dhcp est maintenant prêt à vous rendre de très nombreux services pour une gestion centralisée de votre réseau.

De nombreuses option existent, elles permettent de mieux servir vos clients. A vous de les découvrir...

Référence : [[http://www.daemon-systems.org/man/dhcpd.conf.5.html|'''Le fichier dhcpd.conf''']]

[[Utilisateur:Lol|Lol]] 12 novembre 2010 à 10:05 (EAT)

[[Category:Serveurs]]</text>
      <sha1>l4td3963wu693jvp5mfrwioeeii8ap7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2286</id>
      <parentid>2285</parentid>
      <timestamp>2010-11-14T08:54:42Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="14251">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;


Nous allons installer un serveur DHCP (à destination d'un petit réseau domestique, nous n'allons pas nous lancer dans la configuration d'une usine à gaz...) sur une squeeze.

== DHCP, qu'est-ce que c'est ? ==

Le DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Lorqu'il est convenablement configuré et fonctionnel, ce service est très pratique... Il permet d'administrer un réseau sans avoir à configurer machine après machine.
Toutes vos &quot;box&quot; possèdent ce service par défaut, d'une manière plus ou moins élaborée.

=== Détail du protocole DHCP ===

Lorsque vous connectez une machine à un réseau Ethernet TCP/IP, cette machine, pour fonctionner correctement, doit disposer :

# d'une adresse IP unique dans votre réseau et appartenant au même réseau;
# d'un masque de sous réseau, le même pour tous les hôtes du réseau (le &quot;netmask&quot;);
# d'une adresse d'un ou plusieurs DNS, pour pouvoir résoudre les noms des hôtes;
# de l'adresse de la passerelle qui permet d'accéder à Internet (le &quot;gateway&quot;)

'''Pour configurer vos hôtes locaux, vous avez trois possibilités :'''

# avec « zeroconf » (rfc3927). ce système s'il est fonctionnel ne permet aucune administration du réseau;
# vous passez de machine en machine, et configurez les paramètres réseau;
# vous installez un serveur DHCP sur votre réseau et vous dites à vos clients de configurer leur réseau par dhcp.

'''Détail de fonctionnement du protocole'''

:1) Le client DHCP démarre, il envoie une trame « DHCPDISCOVER », destinée à trouver un serveur DHCP.

&lt;code&gt;Listening on LPF/eth0/6c:f0:49:07:15:8b
Sending on LPF/eth0/6c:f0:49:07:15:8b
Sending on Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4&lt;/code&gt;

:2) Le (ou les) serveur(s) DHCP du réseau réponde(nt) par un « DHCPOFFER ». Cette trame contient une proposition de bail, la « MAC Address » du client, et l'adresse IP du serveur. Le client accepte normalement la première réponse venue.

 DHCPOFFER from 192.168.0.254

:3) Le client envoie alors un DHCPREQUEST à tous les serveurs (toujours en « Broadcast ») pour indiquer quelle offre il accepte.

 DHCPREQUEST on eth0 to 255.255.255.255 port 67

:4) Le serveur DHCP concerné répond définitivement par un DHCPACK qui constitue une confirmation du bail. L'adresse du client est alors marquée comme utilisée et ne sera plus proposée à un autre client pour toute la durée du bail.

 DHCPACK from 192.168.0.254
 bound to 192.168.0.2 -- renewal in 2850 seconds.

Un serveur DHCP a, à sa disposition, une plage d'adresses dans laquelle il est enfermé. Il tient à jour une base de données des adresses déjà utilisées et en cours d'utilisation. C'est ce qui explique que bien qu'attribuées dynamiquement, l'IP servie est souvent la même pour un client.

Lorsqu'il attribue une adresse, il le fait par l'intermédiaire d'un bail. Ce bail a normalement une durée limitée dans le temps. Tout ceci est configurable. L'avantage d'un bail long est une diminution du trafic vers le serveur dhcp. L'inconvénient, c'est qu'il faut planifier plus longtemps à l'avance des modification dans l'architecture de son réseau.

Après expiration du bail, ou résiliation par le client, les informations concernant ce bail restent mémorisées dans la base de données du serveur pendant un certain temps.

== Installation du serveur DHCP ==

Sur Debian, ceci se fait très simplement en installant les paquetages isc-dhcp-server et isc-dhcp-common.

 # apt-get update
 # apt-get install isc-dhcp-server isc-dhcp-common

== Configuration ==

=== Définition de l'interface ===

Le « daemon » dhcpd écoute par défaut sur toutes les interfaces réseau actives sur le serveur. Pour des raison de sécurité ce n'est pas souhaitable.
Pour Debian Squeeze, il faudra éditer le fichier /etc/default/isc-dhcp-server. Si vous souhaitez que votre dhcp écoute sur une seule interface, il faut la définir ici:

 INTERFACES=&quot;eth0&quot;

=== Le fichier /etc/dhcp/dhcpd.conf ===

La configuration de votre dhcp se trouve dans un seul fichier : /etc/dhcp/dhcpd.conf

Voici le fichier &quot;original&quot;

&lt;code&gt;# cat /etc/dhcp/dhcpd.conf
#
# Sample configuration file for ISC dhcpd for Debian
#
#

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;

# option definitions common to all supported networks...
option domain-name &quot;example.org&quot;;
option domain-name-servers ns1.example.org, ns2.example.org;

default-lease-time 600;
max-lease-time 7200;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# No service will be given on this subnet, but declaring it helps the 
# DHCP server to understand the network topology.

#subnet 10.152.187.0 netmask 255.255.255.0 {
#}

# This is a very basic subnet declaration.

#subnet 10.254.239.0 netmask 255.255.255.224 {
#  range 10.254.239.10 10.254.239.20;
#  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
#}

# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.

#subnet 10.254.239.32 netmask 255.255.255.224 {
#  range dynamic-bootp 10.254.239.40 10.254.239.60;
#  option broadcast-address 10.254.239.31;
#  option routers rtr-239-32-1.example.org;
#}

# A slightly different configuration for an internal subnet.
#subnet 10.5.5.0 netmask 255.255.255.224 {
#  range 10.5.5.26 10.5.5.30;
#  option domain-name-servers ns1.internal.example.org;
#  option domain-name &quot;internal.example.org&quot;;
#  option routers 10.5.5.1;
#  option broadcast-address 10.5.5.31;
#  default-lease-time 600;
#  max-lease-time 7200;
#}

# Hosts which require special configuration options can be listed in
# host statements.   If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.

#host passacaglia {
#  hardware ethernet 0:0:c0:5d:bd:95;
#  filename &quot;vmunix.passacaglia&quot;;
#  server-name &quot;toccata.fugue.com&quot;;
#}

# Fixed IP addresses can also be specified for hosts.   These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP.   Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
#host fantasia {
#  hardware ethernet 08:00:07:26:c0:a5;
#  fixed-address fantasia.fugue.com;
#}

# You can declare a class of clients and then do address allocation
# based on that.   The example below shows a case where all clients
# in a certain class get addresses on the 10.17.224/24 subnet, and all
# other clients get addresses on the 10.0.29/24 subnet.

#class &quot;foo&quot; {
#  match if substring (option vendor-class-identifier, 0, 4) = &quot;SUNW&quot;;
#}

#shared-network 224-29 {
#  subnet 10.17.224.0 netmask 255.255.255.0 {
#    option routers rtr-224.example.org;
#  }
#  subnet 10.0.29.0 netmask 255.255.255.0 {
#    option routers rtr-29.example.org;
#  }
#  pool {
#    allow members of &quot;foo&quot;;
#    range 10.17.224.10 10.17.224.250;
#  }
#  pool {
#    deny members of &quot;foo&quot;;
#    range 10.0.29.10 10.0.29.230;
#  }
#}&lt;/code&gt;

Une sauvegarde s'impose :

 # cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.ori

Voici notre fichier &quot;modifié&quot;

&lt;code&gt;# cat /etc/dhcp/dhcpd.conf
ddns-update-style none;
authoritative;

option domain-name &quot;isalo.org&quot;;
default-lease-time 7200;
max-lease-time 86400;
log-facility local7;

subnet 192.168.0.0 netmask 255.255.255.0 {
        pool {
                option domain-name-servers 192.168.0.1,41.188.9.130;
                range 192.168.0.199 192.168.0.249;
        }
        option routers 192.168.0.254;
        option domain-name &quot;isalo.org&quot;;
        option domain-name-servers 192.168.0.1,41.188.9.130;
        option netbios-name-servers 192.168.0.6;
        option netbios-node-type 8;
        option tftp-server-name &quot;192.168.0.6&quot;;

        next-server 192.168.0.6;
        filename &quot;pxelinux.0&quot;;
}
host s_lan_0 {
	hardware ethernet 00:25:11:79:8a:76;
	fixed-address 192.168.0.1;
	option host-name lol;
}&lt;/code&gt;

==== Explications ====

ddns-update-style: Vous pouvez demander au serveur DHCP de mettre à jour un serveur DNS si l'adresse IP d'un serveur dans votre réseau local a changé (car elle a été attribuée une adresse IP différente par DHCP).
Si vous n'avez pas de serveurs DNS dans notre LAN ou donnez des adresses IP statiques (qui est une bonne idée pour les serveurs ...) vous ne voudrez pas mettre à jour les enregistrements DNS, vous mettrez donc &quot;none&quot;

 ddns-update-style none;

Ce serveur fait autorité sur le réseau

 authoritative;

Les options globales
La durée des baux... En secondes. Vous pouvez laisser les durées par défaut. En augmentant ces durées, vous diminuerez le trafic généré par les demandes de renouvellement de baux. La valeur par défaut (600 minutes) semble un peu faible, j'ai choisi de passer cette valeur à 7200. Pour des essais, vous pouvez parfaitement passer ces valeurs à 120 ou moins...
Vous disposez d'un serveur NTP, précisez-le ici.

 option time-servers 192.168.0.254;
 default-lease-time 7200;
 max-lease-time 7200;

Précision : Les option globales, définies avant toute autre définition sont applicables à l'ensemble des &quot;clients&quot;. Si vous souhaitez préciser des options pour chaque &quot;pool&quot; il faudra mettre ces options dans la partie &quot;pool&quot; concernée.

Le réseau 192.168.0.0/24, avec la réserve d'adresses dynamiques, les IP des DNS, l'adresse du routeur, la définition du domaine de recherche, et trois lignes permettant de trouver un serveur PXE qui se trouve sur le réseau à l'IP 192.168.0.6
&lt;code&gt;
subnet 192.168.0.0 netmask 255.255.255.0 {
        pool {
               range 192.168.0.199 192.168.0.249; # La plage d'adresses IP à distribuer
        }
        option domain-name-servers 192.168.0.1,41.188.9.130; # Les DNS
        option routers 192.168.0.254; # La passerelle
        option domain-name &quot;isalo.org&quot;; # Le domaine
        option netbios-name-servers 192.168.0.6; # L'adresse du serveur Netbios

        option tftp-server-name &quot;192.168.0.6&quot;; # L'adresse du serveur tftp (pour un PXE)
        next-server 192.168.0.6;
        filename &quot;pxelinux.0&quot;;
}
&lt;/code&gt;

==== Les réservations d'adresses ====

Nous attribuerons automatiquement l'IP 192.168.0.1 à la machine qui dispose de l'adresse MAC 00:25:11:79:8a:76.

&lt;code&gt;host s_lan_0 {
	hardware ethernet 00:25:11:79:8a:76;
	fixed-address 192.168.0.1;
	option host-name lol;
}&lt;/code&gt;

Avertissement: La sécurité par attribution d'IP à des adresses MAC est facilement contournable par la technique dite &quot;ARP Spoofing&quot; - usurpation d'adresse MAC.

==== Les logs ====

Si vous souhaitez séparer vos logs :

Ajoutez :

 local7.debug     /var/log/dhcpd.log

Au fichier /etc/rsyslog.conf ou syslog.conf (en fonction de votre configuration)  

et relancez le daemon syslog :

 # service rsyslog restart ou # /etc/init.d/sysklogd restart

=== Coupler DHCP avec BIND9 ===

'''Cette option n'a pas encore été testée... A prendre avec précaution.'''

Cerise sur le gateau, vous disposez d'un serveur DNS bind. Nous pouvons alors coupler DHCP et BIND pour que ce dernier mette automatiquement à jour les IP dans ses fichiers de configuration:

==== dans /etc/dhcp/dhcpd.conf ====

Remplacer :

 ddns-update-style none;

Par :

&lt;code&gt;include &quot;/etc/bind/rndc.key&quot;;
ddns-updates on;
ddns-update-style interim;
ddns-domainname &quot;isalo.org.&quot;;
ddns-rev-domainname &quot;in-addr.arpa.&quot;;
ignore client-updates;
zone test.edu. { primary 127.0.0.1; key rndc-key; }
zone 192.in-addr.arpa. { primary 127.0.0.1; key rndc-key;  }&lt;/code&gt;

==== dans /etc/bind/named.conf ou named.conf.local ====

Configurez vos zones comme suit :

&lt;code&gt;
controls {
inet 127.0.0.1 allow { localhost; } keys { &quot;rndc-key&quot;; };
};

include &quot;/etc/bind/rndc.key&quot;;

zone &quot;isalo.org&quot; {
        type master;
        file &quot;/etc/bind/db.isalo.org&quot;;
        allow-update { key &quot;rndc-key&quot;; };
        notify no;
        };
zone &quot;192.in-addr.arpa&quot; {
        type master;
        file &quot;/etc/bind/db.192&quot;;
        allow-update { key &quot;rndc-key&quot;; };
        notify no;
        };
&lt;/code&gt;

=== Test ===

Sur une machine cliente :

 # ifup eth0
 Internet Systems Consortium DHCP Client 4.1.1-P1
 Copyright 2004-2010 Internet Systems Consortium.
 All rights reserved.
 For info, please visit https://www.isc.org/software/dhcp/
 
 Listening on LPF/eth0/6c:f0:49:07:15:8b
 Sending on   LPF/eth0/6c:f0:49:07:15:8b
 Sending on   Socket/fallback
 DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4
 DHCPOFFER from 192.168.0.1
 DHCPREQUEST on eth0 to 255.255.255.255 port 67
 DHCPACK from 192.168.0.1
 bound to 192.168.0.2 -- renewal in 3552 seconds.

== Conclusion ==

Voilà, notre dhcp est configuré et opérationnel !
Très simple à mettre en place comme vous l'avez vu, votre dhcp est maintenant prêt à vous rendre de très nombreux services pour une gestion centralisée de votre réseau.

De nombreuses option existent, elles permettent de mieux servir vos clients. A vous de les découvrir...

Référence : [[http://www.daemon-systems.org/man/dhcpd.conf.5.html|'''Le fichier dhcpd.conf''']]

[[Utilisateur:Lol|Lol]] 12 novembre 2010 à 10:05 (EAT)

[[Category:Serveurs]]</text>
      <sha1>igkqd74ya2xrswcp2h862stxvb0mwjz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2287</id>
      <parentid>2286</parentid>
      <timestamp>2010-11-15T15:02:50Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Coupler DHCP avec BIND9 */</comment>
      <text xml:space="preserve" bytes="15766">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;


Nous allons installer un serveur DHCP (à destination d'un petit réseau domestique, nous n'allons pas nous lancer dans la configuration d'une usine à gaz...) sur une squeeze.

== DHCP, qu'est-ce que c'est ? ==

Le DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Lorqu'il est convenablement configuré et fonctionnel, ce service est très pratique... Il permet d'administrer un réseau sans avoir à configurer machine après machine.
Toutes vos &quot;box&quot; possèdent ce service par défaut, d'une manière plus ou moins élaborée.

=== Détail du protocole DHCP ===

Lorsque vous connectez une machine à un réseau Ethernet TCP/IP, cette machine, pour fonctionner correctement, doit disposer :

# d'une adresse IP unique dans votre réseau et appartenant au même réseau;
# d'un masque de sous réseau, le même pour tous les hôtes du réseau (le &quot;netmask&quot;);
# d'une adresse d'un ou plusieurs DNS, pour pouvoir résoudre les noms des hôtes;
# de l'adresse de la passerelle qui permet d'accéder à Internet (le &quot;gateway&quot;)

'''Pour configurer vos hôtes locaux, vous avez trois possibilités :'''

# avec « zeroconf » (rfc3927). ce système s'il est fonctionnel ne permet aucune administration du réseau;
# vous passez de machine en machine, et configurez les paramètres réseau;
# vous installez un serveur DHCP sur votre réseau et vous dites à vos clients de configurer leur réseau par dhcp.

'''Détail de fonctionnement du protocole'''

:1) Le client DHCP démarre, il envoie une trame « DHCPDISCOVER », destinée à trouver un serveur DHCP.

&lt;code&gt;Listening on LPF/eth0/6c:f0:49:07:15:8b
Sending on LPF/eth0/6c:f0:49:07:15:8b
Sending on Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4&lt;/code&gt;

:2) Le (ou les) serveur(s) DHCP du réseau réponde(nt) par un « DHCPOFFER ». Cette trame contient une proposition de bail, la « MAC Address » du client, et l'adresse IP du serveur. Le client accepte normalement la première réponse venue.

 DHCPOFFER from 192.168.0.254

:3) Le client envoie alors un DHCPREQUEST à tous les serveurs (toujours en « Broadcast ») pour indiquer quelle offre il accepte.

 DHCPREQUEST on eth0 to 255.255.255.255 port 67

:4) Le serveur DHCP concerné répond définitivement par un DHCPACK qui constitue une confirmation du bail. L'adresse du client est alors marquée comme utilisée et ne sera plus proposée à un autre client pour toute la durée du bail.

 DHCPACK from 192.168.0.254
 bound to 192.168.0.2 -- renewal in 2850 seconds.

Un serveur DHCP a, à sa disposition, une plage d'adresses dans laquelle il est enfermé. Il tient à jour une base de données des adresses déjà utilisées et en cours d'utilisation. C'est ce qui explique que bien qu'attribuées dynamiquement, l'IP servie est souvent la même pour un client.

Lorsqu'il attribue une adresse, il le fait par l'intermédiaire d'un bail. Ce bail a normalement une durée limitée dans le temps. Tout ceci est configurable. L'avantage d'un bail long est une diminution du trafic vers le serveur dhcp. L'inconvénient, c'est qu'il faut planifier plus longtemps à l'avance des modification dans l'architecture de son réseau.

Après expiration du bail, ou résiliation par le client, les informations concernant ce bail restent mémorisées dans la base de données du serveur pendant un certain temps.

== Installation du serveur DHCP ==

Sur Debian, ceci se fait très simplement en installant les paquetages isc-dhcp-server et isc-dhcp-common.

 # apt-get update
 # apt-get install isc-dhcp-server isc-dhcp-common

== Configuration ==

=== Définition de l'interface ===

Le « daemon » dhcpd écoute par défaut sur toutes les interfaces réseau actives sur le serveur. Pour des raison de sécurité ce n'est pas souhaitable.
Pour Debian Squeeze, il faudra éditer le fichier /etc/default/isc-dhcp-server. Si vous souhaitez que votre dhcp écoute sur une seule interface, il faut la définir ici:

 INTERFACES=&quot;eth0&quot;

=== Le fichier /etc/dhcp/dhcpd.conf ===

La configuration de votre dhcp se trouve dans un seul fichier : /etc/dhcp/dhcpd.conf

Voici le fichier &quot;original&quot;

&lt;code&gt;# cat /etc/dhcp/dhcpd.conf
#
# Sample configuration file for ISC dhcpd for Debian
#
#

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;

# option definitions common to all supported networks...
option domain-name &quot;example.org&quot;;
option domain-name-servers ns1.example.org, ns2.example.org;

default-lease-time 600;
max-lease-time 7200;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# No service will be given on this subnet, but declaring it helps the 
# DHCP server to understand the network topology.

#subnet 10.152.187.0 netmask 255.255.255.0 {
#}

# This is a very basic subnet declaration.

#subnet 10.254.239.0 netmask 255.255.255.224 {
#  range 10.254.239.10 10.254.239.20;
#  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
#}

# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.

#subnet 10.254.239.32 netmask 255.255.255.224 {
#  range dynamic-bootp 10.254.239.40 10.254.239.60;
#  option broadcast-address 10.254.239.31;
#  option routers rtr-239-32-1.example.org;
#}

# A slightly different configuration for an internal subnet.
#subnet 10.5.5.0 netmask 255.255.255.224 {
#  range 10.5.5.26 10.5.5.30;
#  option domain-name-servers ns1.internal.example.org;
#  option domain-name &quot;internal.example.org&quot;;
#  option routers 10.5.5.1;
#  option broadcast-address 10.5.5.31;
#  default-lease-time 600;
#  max-lease-time 7200;
#}

# Hosts which require special configuration options can be listed in
# host statements.   If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.

#host passacaglia {
#  hardware ethernet 0:0:c0:5d:bd:95;
#  filename &quot;vmunix.passacaglia&quot;;
#  server-name &quot;toccata.fugue.com&quot;;
#}

# Fixed IP addresses can also be specified for hosts.   These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP.   Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
#host fantasia {
#  hardware ethernet 08:00:07:26:c0:a5;
#  fixed-address fantasia.fugue.com;
#}

# You can declare a class of clients and then do address allocation
# based on that.   The example below shows a case where all clients
# in a certain class get addresses on the 10.17.224/24 subnet, and all
# other clients get addresses on the 10.0.29/24 subnet.

#class &quot;foo&quot; {
#  match if substring (option vendor-class-identifier, 0, 4) = &quot;SUNW&quot;;
#}

#shared-network 224-29 {
#  subnet 10.17.224.0 netmask 255.255.255.0 {
#    option routers rtr-224.example.org;
#  }
#  subnet 10.0.29.0 netmask 255.255.255.0 {
#    option routers rtr-29.example.org;
#  }
#  pool {
#    allow members of &quot;foo&quot;;
#    range 10.17.224.10 10.17.224.250;
#  }
#  pool {
#    deny members of &quot;foo&quot;;
#    range 10.0.29.10 10.0.29.230;
#  }
#}&lt;/code&gt;

Une sauvegarde s'impose :

 # cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.ori

Voici notre fichier &quot;modifié&quot;

&lt;code&gt;# cat /etc/dhcp/dhcpd.conf
ddns-update-style none;
authoritative;

option domain-name &quot;isalo.org&quot;;
default-lease-time 7200;
max-lease-time 86400;
log-facility local7;

subnet 192.168.0.0 netmask 255.255.255.0 {
        pool {
                option domain-name-servers 192.168.0.1,41.188.9.130;
                range 192.168.0.199 192.168.0.249;
        }
        option routers 192.168.0.254;
        option domain-name &quot;isalo.org&quot;;
        option domain-name-servers 192.168.0.1,41.188.9.130;
        option netbios-name-servers 192.168.0.6;
        option netbios-node-type 8;
        option tftp-server-name &quot;192.168.0.6&quot;;

        next-server 192.168.0.6;
        filename &quot;pxelinux.0&quot;;
}
host s_lan_0 {
	hardware ethernet 00:25:11:79:8a:76;
	fixed-address 192.168.0.1;
	option host-name lol;
}&lt;/code&gt;

==== Explications ====

ddns-update-style: Vous pouvez demander au serveur DHCP de mettre à jour un serveur DNS si l'adresse IP d'un serveur dans votre réseau local a changé (car elle a été attribuée une adresse IP différente par DHCP).
Si vous n'avez pas de serveurs DNS dans notre LAN ou donnez des adresses IP statiques (qui est une bonne idée pour les serveurs ...) vous ne voudrez pas mettre à jour les enregistrements DNS, vous mettrez donc &quot;none&quot;

 ddns-update-style none;

Ce serveur fait autorité sur le réseau

 authoritative;

Les options globales
La durée des baux... En secondes. Vous pouvez laisser les durées par défaut. En augmentant ces durées, vous diminuerez le trafic généré par les demandes de renouvellement de baux. La valeur par défaut (600 minutes) semble un peu faible, j'ai choisi de passer cette valeur à 7200. Pour des essais, vous pouvez parfaitement passer ces valeurs à 120 ou moins...
Vous disposez d'un serveur NTP, précisez-le ici.

 option time-servers 192.168.0.254;
 default-lease-time 7200;
 max-lease-time 7200;

Précision : Les option globales, définies avant toute autre définition sont applicables à l'ensemble des &quot;clients&quot;. Si vous souhaitez préciser des options pour chaque &quot;pool&quot; il faudra mettre ces options dans la partie &quot;pool&quot; concernée.

Le réseau 192.168.0.0/24, avec la réserve d'adresses dynamiques, les IP des DNS, l'adresse du routeur, la définition du domaine de recherche, et trois lignes permettant de trouver un serveur PXE qui se trouve sur le réseau à l'IP 192.168.0.6
&lt;code&gt;
subnet 192.168.0.0 netmask 255.255.255.0 {
        pool {
               range 192.168.0.199 192.168.0.249; # La plage d'adresses IP à distribuer
        }
        option domain-name-servers 192.168.0.1,41.188.9.130; # Les DNS
        option routers 192.168.0.254; # La passerelle
        option domain-name &quot;isalo.org&quot;; # Le domaine
        option netbios-name-servers 192.168.0.6; # L'adresse du serveur Netbios

        option tftp-server-name &quot;192.168.0.6&quot;; # L'adresse du serveur tftp (pour un PXE)
        next-server 192.168.0.6;
        filename &quot;pxelinux.0&quot;;
}
&lt;/code&gt;

==== Les réservations d'adresses ====

Nous attribuerons automatiquement l'IP 192.168.0.1 à la machine qui dispose de l'adresse MAC 00:25:11:79:8a:76.

&lt;code&gt;host s_lan_0 {
	hardware ethernet 00:25:11:79:8a:76;
	fixed-address 192.168.0.1;
	option host-name lol;
}&lt;/code&gt;

Avertissement: La sécurité par attribution d'IP à des adresses MAC est facilement contournable par la technique dite &quot;ARP Spoofing&quot; - usurpation d'adresse MAC.

==== Les logs ====

Si vous souhaitez séparer vos logs :

Ajoutez :

 local7.debug     /var/log/dhcpd.log

Au fichier /etc/rsyslog.conf ou syslog.conf (en fonction de votre configuration)  

et relancez le daemon syslog :

 # service rsyslog restart ou # /etc/init.d/sysklogd restart

=== Coupler DHCP avec BIND9 ===

'''Cette option n'a pas encore été testée... A prendre avec précaution.'''

Cerise sur le gateau, vous disposez d'un serveur DNS bind. Nous pouvons alors coupler DHCP et BIND pour que ce dernier mette automatiquement à jour les IP dans ses fichiers de configuration:

==== dans /etc/dhcp/dhcpd.conf ====

Remplacer :

 ddns-update-style none;

Par :

&lt;code&gt;include &quot;/etc/bind/rndc.key&quot;;
ddns-updates on;
ddns-update-style interim;
ddns-domainname &quot;isalo.org.&quot;;
ddns-rev-domainname &quot;in-addr.arpa.&quot;;
ignore client-updates;
zone test.edu. { primary 127.0.0.1; key rndc-key; }
zone 192.in-addr.arpa. { primary 127.0.0.1; key rndc-key;  }&lt;/code&gt;

==== dans /etc/bind/named.conf ou named.conf.local ====

Configurez vos zones comme suit :

&lt;code&gt;
controls {
inet 127.0.0.1 allow { localhost; } keys { &quot;rndc-key&quot;; };
};

include &quot;/etc/bind/rndc.key&quot;;

zone &quot;isalo.org&quot; {
        type master;
        file &quot;/etc/bind/db.isalo.org&quot;;
        allow-update { key &quot;rndc-key&quot;; };
        notify no;
        };
zone &quot;192.in-addr.arpa&quot; {
        type master;
        file &quot;/etc/bind/db.192&quot;;
        allow-update { key &quot;rndc-key&quot;; };
        notify no;
        };
&lt;/code&gt;

=== Refuser des adresses MAC ou des plages d'adresses MAC ===

Est-il possible de bloquer les demandes de certains matériels réseau en fonction de leur adresse MAC : Oui!

Il faudra utiliser ces commandes :
 match if substring(hardware, 1, 3) = xx:xx:xx;
ou
 match if binary-to-ascii(16, 8, &quot;:&quot;, substring(hardware, 1, 3)) = &quot;xx:xx:xx&quot;;
Attention dans la chaîne ASCII de comparaison le zéro de  poids fort des  octets doit être omis, par exemple : 08:00:27 -&gt;  8:0:27


L'exemple suivant permet de mettre dans le groupe &quot;banni&quot; une plage d'adresses MAC et de leur fournir une IP particulière :
&lt;code&gt;
class &quot;banni&quot; {
        match if binary-to-ascii(16, 8, &quot;:&quot;, substring(hardware, 1, 3)) = &quot;8:0:27&quot;;
}
subnet 192.168.0.0 netmask 255.255.255.0 {
  option routers 192.168.0.254;
  pool {     deny members of &quot;banni&quot;;
     range 192.168.0.70 192.168.0.71;
  }
  pool {
     range 192.168.0.72 192.168.0.73;
  }
}
&lt;/code&gt;
L'exemple suivant permet de mettre dans le groupe &quot;banni&quot; une plage d'adresses MAC et de leur refuser une IP :
&lt;code&gt;
class &quot;banni&quot; {
        match if substring(hardware, 1, 3) = 08:00:27;
}
subnet 192.168.0.0 netmask 255.255.255.0 {
  option routers 192.168.0.254;
  pool {
     deny members of &quot;banni&quot;;
     range 192.168.0.70 192.168.0.71;
  }
}

Vous devriez avoir dans /var/log/syslog ceci :

 DHCPDISCOVER from 08:00:27:02:65:60 via eth0: network 192.168.0.0/24: no free leases

&lt;/code&gt;
[http://www.debian-fr.org/dhcp3-refuser-plage-mac-address-t30589.html#p308248 Discussion forum]

=== Test ===

Sur une machine cliente :

 # ifup eth0
 Internet Systems Consortium DHCP Client 4.1.1-P1
 Copyright 2004-2010 Internet Systems Consortium.
 All rights reserved.
 For info, please visit https://www.isc.org/software/dhcp/
 
 Listening on LPF/eth0/6c:f0:49:07:15:8b
 Sending on   LPF/eth0/6c:f0:49:07:15:8b
 Sending on   Socket/fallback
 DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4
 DHCPOFFER from 192.168.0.1
 DHCPREQUEST on eth0 to 255.255.255.255 port 67
 DHCPACK from 192.168.0.1
 bound to 192.168.0.2 -- renewal in 3552 seconds.

== Conclusion ==

Voilà, notre dhcp est configuré et opérationnel !
Très simple à mettre en place comme vous l'avez vu, votre dhcp est maintenant prêt à vous rendre de très nombreux services pour une gestion centralisée de votre réseau.

De nombreuses option existent, elles permettent de mieux servir vos clients. A vous de les découvrir...

Référence : [[http://www.daemon-systems.org/man/dhcpd.conf.5.html|'''Le fichier dhcpd.conf''']]

[[Utilisateur:Lol|Lol]] 12 novembre 2010 à 10:05 (EAT)

[[Category:Serveurs]]</text>
      <sha1>9fc6qecv8wgt2d5j246hvnewentmqmc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2288</id>
      <parentid>2287</parentid>
      <timestamp>2010-11-15T15:05:38Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Refuser des adresses MAC ou des plages d'adresses MAC */</comment>
      <text xml:space="preserve" bytes="15765">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;


Nous allons installer un serveur DHCP (à destination d'un petit réseau domestique, nous n'allons pas nous lancer dans la configuration d'une usine à gaz...) sur une squeeze.

== DHCP, qu'est-ce que c'est ? ==

Le DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Lorqu'il est convenablement configuré et fonctionnel, ce service est très pratique... Il permet d'administrer un réseau sans avoir à configurer machine après machine.
Toutes vos &quot;box&quot; possèdent ce service par défaut, d'une manière plus ou moins élaborée.

=== Détail du protocole DHCP ===

Lorsque vous connectez une machine à un réseau Ethernet TCP/IP, cette machine, pour fonctionner correctement, doit disposer :

# d'une adresse IP unique dans votre réseau et appartenant au même réseau;
# d'un masque de sous réseau, le même pour tous les hôtes du réseau (le &quot;netmask&quot;);
# d'une adresse d'un ou plusieurs DNS, pour pouvoir résoudre les noms des hôtes;
# de l'adresse de la passerelle qui permet d'accéder à Internet (le &quot;gateway&quot;)

'''Pour configurer vos hôtes locaux, vous avez trois possibilités :'''

# avec « zeroconf » (rfc3927). ce système s'il est fonctionnel ne permet aucune administration du réseau;
# vous passez de machine en machine, et configurez les paramètres réseau;
# vous installez un serveur DHCP sur votre réseau et vous dites à vos clients de configurer leur réseau par dhcp.

'''Détail de fonctionnement du protocole'''

:1) Le client DHCP démarre, il envoie une trame « DHCPDISCOVER », destinée à trouver un serveur DHCP.

&lt;code&gt;Listening on LPF/eth0/6c:f0:49:07:15:8b
Sending on LPF/eth0/6c:f0:49:07:15:8b
Sending on Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4&lt;/code&gt;

:2) Le (ou les) serveur(s) DHCP du réseau réponde(nt) par un « DHCPOFFER ». Cette trame contient une proposition de bail, la « MAC Address » du client, et l'adresse IP du serveur. Le client accepte normalement la première réponse venue.

 DHCPOFFER from 192.168.0.254

:3) Le client envoie alors un DHCPREQUEST à tous les serveurs (toujours en « Broadcast ») pour indiquer quelle offre il accepte.

 DHCPREQUEST on eth0 to 255.255.255.255 port 67

:4) Le serveur DHCP concerné répond définitivement par un DHCPACK qui constitue une confirmation du bail. L'adresse du client est alors marquée comme utilisée et ne sera plus proposée à un autre client pour toute la durée du bail.

 DHCPACK from 192.168.0.254
 bound to 192.168.0.2 -- renewal in 2850 seconds.

Un serveur DHCP a, à sa disposition, une plage d'adresses dans laquelle il est enfermé. Il tient à jour une base de données des adresses déjà utilisées et en cours d'utilisation. C'est ce qui explique que bien qu'attribuées dynamiquement, l'IP servie est souvent la même pour un client.

Lorsqu'il attribue une adresse, il le fait par l'intermédiaire d'un bail. Ce bail a normalement une durée limitée dans le temps. Tout ceci est configurable. L'avantage d'un bail long est une diminution du trafic vers le serveur dhcp. L'inconvénient, c'est qu'il faut planifier plus longtemps à l'avance des modification dans l'architecture de son réseau.

Après expiration du bail, ou résiliation par le client, les informations concernant ce bail restent mémorisées dans la base de données du serveur pendant un certain temps.

== Installation du serveur DHCP ==

Sur Debian, ceci se fait très simplement en installant les paquetages isc-dhcp-server et isc-dhcp-common.

 # apt-get update
 # apt-get install isc-dhcp-server isc-dhcp-common

== Configuration ==

=== Définition de l'interface ===

Le « daemon » dhcpd écoute par défaut sur toutes les interfaces réseau actives sur le serveur. Pour des raison de sécurité ce n'est pas souhaitable.
Pour Debian Squeeze, il faudra éditer le fichier /etc/default/isc-dhcp-server. Si vous souhaitez que votre dhcp écoute sur une seule interface, il faut la définir ici:

 INTERFACES=&quot;eth0&quot;

=== Le fichier /etc/dhcp/dhcpd.conf ===

La configuration de votre dhcp se trouve dans un seul fichier : /etc/dhcp/dhcpd.conf

Voici le fichier &quot;original&quot;

&lt;code&gt;# cat /etc/dhcp/dhcpd.conf
#
# Sample configuration file for ISC dhcpd for Debian
#
#

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;

# option definitions common to all supported networks...
option domain-name &quot;example.org&quot;;
option domain-name-servers ns1.example.org, ns2.example.org;

default-lease-time 600;
max-lease-time 7200;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# No service will be given on this subnet, but declaring it helps the 
# DHCP server to understand the network topology.

#subnet 10.152.187.0 netmask 255.255.255.0 {
#}

# This is a very basic subnet declaration.

#subnet 10.254.239.0 netmask 255.255.255.224 {
#  range 10.254.239.10 10.254.239.20;
#  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
#}

# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.

#subnet 10.254.239.32 netmask 255.255.255.224 {
#  range dynamic-bootp 10.254.239.40 10.254.239.60;
#  option broadcast-address 10.254.239.31;
#  option routers rtr-239-32-1.example.org;
#}

# A slightly different configuration for an internal subnet.
#subnet 10.5.5.0 netmask 255.255.255.224 {
#  range 10.5.5.26 10.5.5.30;
#  option domain-name-servers ns1.internal.example.org;
#  option domain-name &quot;internal.example.org&quot;;
#  option routers 10.5.5.1;
#  option broadcast-address 10.5.5.31;
#  default-lease-time 600;
#  max-lease-time 7200;
#}

# Hosts which require special configuration options can be listed in
# host statements.   If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.

#host passacaglia {
#  hardware ethernet 0:0:c0:5d:bd:95;
#  filename &quot;vmunix.passacaglia&quot;;
#  server-name &quot;toccata.fugue.com&quot;;
#}

# Fixed IP addresses can also be specified for hosts.   These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP.   Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
#host fantasia {
#  hardware ethernet 08:00:07:26:c0:a5;
#  fixed-address fantasia.fugue.com;
#}

# You can declare a class of clients and then do address allocation
# based on that.   The example below shows a case where all clients
# in a certain class get addresses on the 10.17.224/24 subnet, and all
# other clients get addresses on the 10.0.29/24 subnet.

#class &quot;foo&quot; {
#  match if substring (option vendor-class-identifier, 0, 4) = &quot;SUNW&quot;;
#}

#shared-network 224-29 {
#  subnet 10.17.224.0 netmask 255.255.255.0 {
#    option routers rtr-224.example.org;
#  }
#  subnet 10.0.29.0 netmask 255.255.255.0 {
#    option routers rtr-29.example.org;
#  }
#  pool {
#    allow members of &quot;foo&quot;;
#    range 10.17.224.10 10.17.224.250;
#  }
#  pool {
#    deny members of &quot;foo&quot;;
#    range 10.0.29.10 10.0.29.230;
#  }
#}&lt;/code&gt;

Une sauvegarde s'impose :

 # cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.ori

Voici notre fichier &quot;modifié&quot;

&lt;code&gt;# cat /etc/dhcp/dhcpd.conf
ddns-update-style none;
authoritative;

option domain-name &quot;isalo.org&quot;;
default-lease-time 7200;
max-lease-time 86400;
log-facility local7;

subnet 192.168.0.0 netmask 255.255.255.0 {
        pool {
                option domain-name-servers 192.168.0.1,41.188.9.130;
                range 192.168.0.199 192.168.0.249;
        }
        option routers 192.168.0.254;
        option domain-name &quot;isalo.org&quot;;
        option domain-name-servers 192.168.0.1,41.188.9.130;
        option netbios-name-servers 192.168.0.6;
        option netbios-node-type 8;
        option tftp-server-name &quot;192.168.0.6&quot;;

        next-server 192.168.0.6;
        filename &quot;pxelinux.0&quot;;
}
host s_lan_0 {
	hardware ethernet 00:25:11:79:8a:76;
	fixed-address 192.168.0.1;
	option host-name lol;
}&lt;/code&gt;

==== Explications ====

ddns-update-style: Vous pouvez demander au serveur DHCP de mettre à jour un serveur DNS si l'adresse IP d'un serveur dans votre réseau local a changé (car elle a été attribuée une adresse IP différente par DHCP).
Si vous n'avez pas de serveurs DNS dans notre LAN ou donnez des adresses IP statiques (qui est une bonne idée pour les serveurs ...) vous ne voudrez pas mettre à jour les enregistrements DNS, vous mettrez donc &quot;none&quot;

 ddns-update-style none;

Ce serveur fait autorité sur le réseau

 authoritative;

Les options globales
La durée des baux... En secondes. Vous pouvez laisser les durées par défaut. En augmentant ces durées, vous diminuerez le trafic généré par les demandes de renouvellement de baux. La valeur par défaut (600 minutes) semble un peu faible, j'ai choisi de passer cette valeur à 7200. Pour des essais, vous pouvez parfaitement passer ces valeurs à 120 ou moins...
Vous disposez d'un serveur NTP, précisez-le ici.

 option time-servers 192.168.0.254;
 default-lease-time 7200;
 max-lease-time 7200;

Précision : Les option globales, définies avant toute autre définition sont applicables à l'ensemble des &quot;clients&quot;. Si vous souhaitez préciser des options pour chaque &quot;pool&quot; il faudra mettre ces options dans la partie &quot;pool&quot; concernée.

Le réseau 192.168.0.0/24, avec la réserve d'adresses dynamiques, les IP des DNS, l'adresse du routeur, la définition du domaine de recherche, et trois lignes permettant de trouver un serveur PXE qui se trouve sur le réseau à l'IP 192.168.0.6
&lt;code&gt;
subnet 192.168.0.0 netmask 255.255.255.0 {
        pool {
               range 192.168.0.199 192.168.0.249; # La plage d'adresses IP à distribuer
        }
        option domain-name-servers 192.168.0.1,41.188.9.130; # Les DNS
        option routers 192.168.0.254; # La passerelle
        option domain-name &quot;isalo.org&quot;; # Le domaine
        option netbios-name-servers 192.168.0.6; # L'adresse du serveur Netbios

        option tftp-server-name &quot;192.168.0.6&quot;; # L'adresse du serveur tftp (pour un PXE)
        next-server 192.168.0.6;
        filename &quot;pxelinux.0&quot;;
}
&lt;/code&gt;

==== Les réservations d'adresses ====

Nous attribuerons automatiquement l'IP 192.168.0.1 à la machine qui dispose de l'adresse MAC 00:25:11:79:8a:76.

&lt;code&gt;host s_lan_0 {
	hardware ethernet 00:25:11:79:8a:76;
	fixed-address 192.168.0.1;
	option host-name lol;
}&lt;/code&gt;

Avertissement: La sécurité par attribution d'IP à des adresses MAC est facilement contournable par la technique dite &quot;ARP Spoofing&quot; - usurpation d'adresse MAC.

==== Les logs ====

Si vous souhaitez séparer vos logs :

Ajoutez :

 local7.debug     /var/log/dhcpd.log

Au fichier /etc/rsyslog.conf ou syslog.conf (en fonction de votre configuration)  

et relancez le daemon syslog :

 # service rsyslog restart ou # /etc/init.d/sysklogd restart

=== Coupler DHCP avec BIND9 ===

'''Cette option n'a pas encore été testée... A prendre avec précaution.'''

Cerise sur le gateau, vous disposez d'un serveur DNS bind. Nous pouvons alors coupler DHCP et BIND pour que ce dernier mette automatiquement à jour les IP dans ses fichiers de configuration:

==== dans /etc/dhcp/dhcpd.conf ====

Remplacer :

 ddns-update-style none;

Par :

&lt;code&gt;include &quot;/etc/bind/rndc.key&quot;;
ddns-updates on;
ddns-update-style interim;
ddns-domainname &quot;isalo.org.&quot;;
ddns-rev-domainname &quot;in-addr.arpa.&quot;;
ignore client-updates;
zone test.edu. { primary 127.0.0.1; key rndc-key; }
zone 192.in-addr.arpa. { primary 127.0.0.1; key rndc-key;  }&lt;/code&gt;

==== dans /etc/bind/named.conf ou named.conf.local ====

Configurez vos zones comme suit :

&lt;code&gt;
controls {
inet 127.0.0.1 allow { localhost; } keys { &quot;rndc-key&quot;; };
};

include &quot;/etc/bind/rndc.key&quot;;

zone &quot;isalo.org&quot; {
        type master;
        file &quot;/etc/bind/db.isalo.org&quot;;
        allow-update { key &quot;rndc-key&quot;; };
        notify no;
        };
zone &quot;192.in-addr.arpa&quot; {
        type master;
        file &quot;/etc/bind/db.192&quot;;
        allow-update { key &quot;rndc-key&quot;; };
        notify no;
        };
&lt;/code&gt;

=== Refuser des adresses MAC ou des plages d'adresses MAC ===

Est-il possible de bloquer les demandes de certains matériels réseau en fonction de leur adresse MAC : Oui!

Il faudra utiliser ces commandes :
 match if substring(hardware, 1, 3) = xx:xx:xx;
ou
 match if binary-to-ascii(16, 8, &quot;:&quot;, substring(hardware, 1, 3)) = &quot;xx:xx:xx&quot;;
Attention dans la chaîne ASCII de comparaison le zéro de  poids fort des  octets doit être omis, par exemple : 08:00:27 -&gt;  8:0:27


L'exemple suivant permet de mettre dans le groupe &quot;banni&quot; une plage d'adresses MAC et de leur fournir une IP particulière :
&lt;code&gt;
class &quot;banni&quot; {
        match if binary-to-ascii(16, 8, &quot;:&quot;, substring(hardware, 1, 3)) = &quot;8:0:27&quot;;
}
subnet 192.168.0.0 netmask 255.255.255.0 {
  option routers 192.168.0.254;
  pool {     deny members of &quot;banni&quot;;
     range 192.168.0.70 192.168.0.71;
  }
  pool {
     range 192.168.0.72 192.168.0.73;
  }
}
&lt;/code&gt;
L'exemple suivant permet de mettre dans le groupe &quot;banni&quot; une plage d'adresses MAC et de leur refuser une IP :
&lt;code&gt;
class &quot;banni&quot; {
        match if substring(hardware, 1, 3) = 08:00:27;
}
subnet 192.168.0.0 netmask 255.255.255.0 {
  option routers 192.168.0.254;
  pool {
     deny members of &quot;banni&quot;;
     range 192.168.0.70 192.168.0.71;
  }
}
&lt;/code&gt;
Vous devriez avoir dans /var/log/syslog ceci :

 DHCPDISCOVER from 08:00:27:02:65:60 via eth0: network 192.168.0.0/24: no free leases

[http://www.debian-fr.org/dhcp3-refuser-plage-mac-address-t30589.html#p308248 Discussion forum]

=== Test ===

Sur une machine cliente :

 # ifup eth0
 Internet Systems Consortium DHCP Client 4.1.1-P1
 Copyright 2004-2010 Internet Systems Consortium.
 All rights reserved.
 For info, please visit https://www.isc.org/software/dhcp/
 
 Listening on LPF/eth0/6c:f0:49:07:15:8b
 Sending on   LPF/eth0/6c:f0:49:07:15:8b
 Sending on   Socket/fallback
 DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4
 DHCPOFFER from 192.168.0.1
 DHCPREQUEST on eth0 to 255.255.255.255 port 67
 DHCPACK from 192.168.0.1
 bound to 192.168.0.2 -- renewal in 3552 seconds.

== Conclusion ==

Voilà, notre dhcp est configuré et opérationnel !
Très simple à mettre en place comme vous l'avez vu, votre dhcp est maintenant prêt à vous rendre de très nombreux services pour une gestion centralisée de votre réseau.

De nombreuses option existent, elles permettent de mieux servir vos clients. A vous de les découvrir...

Référence : [[http://www.daemon-systems.org/man/dhcpd.conf.5.html|'''Le fichier dhcpd.conf''']]

[[Utilisateur:Lol|Lol]] 12 novembre 2010 à 10:05 (EAT)

[[Category:Serveurs]]</text>
      <sha1>r2ki477vsohnxxg54a6oj5wkd0kcyhm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2662</id>
      <parentid>2288</parentid>
      <timestamp>2011-01-05T21:28:52Z</timestamp>
      <contributor>
        <username>DR I</username>
        <id>85</id>
      </contributor>
      <minor/>
      <comment>Modification et suppression des directives DEPRECATED.</comment>
      <text xml:space="preserve" bytes="15827">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;


Nous allons installer un serveur DHCP (à destination d'un petit réseau domestique, nous n'allons pas nous lancer dans la configuration d'une usine à gaz...) sur une squeeze.

== DHCP, qu'est-ce que c'est ? ==

Le DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Lorqu'il est convenablement configuré et fonctionnel, ce service est très pratique... Il permet d'administrer un réseau sans avoir à configurer machine après machine.
Toutes vos &quot;box&quot; possèdent ce service par défaut, d'une manière plus ou moins élaborée.

=== Détail du protocole DHCP ===

Lorsque vous connectez une machine à un réseau Ethernet TCP/IP, cette machine, pour fonctionner correctement, doit disposer :

# d'une adresse IP unique dans votre réseau et appartenant au même réseau;
# d'un masque de sous réseau, le même pour tous les hôtes du réseau (le &quot;netmask&quot;);
# d'une adresse d'un ou plusieurs DNS, pour pouvoir résoudre les noms des hôtes;
# de l'adresse de la passerelle qui permet d'accéder à Internet (le &quot;gateway&quot;)

'''Pour configurer vos hôtes locaux, vous avez trois possibilités :'''

# avec « zeroconf » (rfc3927). ce système s'il est fonctionnel ne permet aucune administration du réseau;
# vous passez de machine en machine, et configurez les paramètres réseau;
# vous installez un serveur DHCP sur votre réseau et vous dites à vos clients de configurer leur réseau par dhcp.

'''Détail de fonctionnement du protocole'''

:1) Le client DHCP démarre, il envoie une trame « DHCPDISCOVER », destinée à trouver un serveur DHCP.

&lt;code&gt;Listening on LPF/eth0/6c:f0:49:07:15:8b
Sending on LPF/eth0/6c:f0:49:07:15:8b
Sending on Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4&lt;/code&gt;

:2) Le (ou les) serveur(s) DHCP du réseau réponde(nt) par un « DHCPOFFER ». Cette trame contient une proposition de bail, la « MAC Address » du client, et l'adresse IP du serveur. Le client accepte normalement la première réponse venue.

 DHCPOFFER from 192.168.0.254

:3) Le client envoie alors un DHCPREQUEST à tous les serveurs (toujours en « Broadcast ») pour indiquer quelle offre il accepte.

 DHCPREQUEST on eth0 to 255.255.255.255 port 67

:4) Le serveur DHCP concerné répond définitivement par un DHCPACK qui constitue une confirmation du bail. L'adresse du client est alors marquée comme utilisée et ne sera plus proposée à un autre client pour toute la durée du bail.

 DHCPACK from 192.168.0.254
 bound to 192.168.0.2 -- renewal in 2850 seconds.

Un serveur DHCP a, à sa disposition, une plage d'adresses dans laquelle il est enfermé. Il tient à jour une base de données des adresses déjà utilisées et en cours d'utilisation. C'est ce qui explique que bien qu'attribuées dynamiquement, l'IP servie est souvent la même pour un client.

Lorsqu'il attribue une adresse, il le fait par l'intermédiaire d'un bail. Ce bail a normalement une durée limitée dans le temps. Tout ceci est configurable. L'avantage d'un bail long est une diminution du trafic vers le serveur dhcp. L'inconvénient, c'est qu'il faut planifier plus longtemps à l'avance des modification dans l'architecture de son réseau.

Après expiration du bail, ou résiliation par le client, les informations concernant ce bail restent mémorisées dans la base de données du serveur pendant un certain temps.

== Installation du serveur DHCP ==

Sur Debian, ceci se fait très simplement en installant les paquetages isc-dhcp-server et isc-dhcp-common.

 # apt-get update
 # apt-get install isc-dhcp-server isc-dhcp-common

== Configuration ==

=== Définition de l'interface ===

Le « daemon » dhcpd écoute par défaut sur toutes les interfaces réseau actives sur le serveur. Pour des raison de sécurité ce n'est pas souhaitable.
Pour Debian Squeeze, il faudra éditer le fichier /etc/default/isc-dhcp-server.
Par défaut, sur une Debian Lenny vous trouverez le fichier /etc/default/dhcp.
Si vous souhaitez que votre dhcp écoute sur une seule interface, il faut la définir ici:

 INTERFACES=&quot;eth0&quot;

=== Le fichier /etc/dhcp/dhcpd.conf ===

La configuration de votre dhcp se trouve dans un seul fichier : /etc/dhcp/dhcpd.conf

Voici le fichier &quot;original&quot;

&lt;code&gt;# cat /etc/dhcp/dhcpd.conf
#
# Sample configuration file for ISC dhcpd for Debian
#
#

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;

# option definitions common to all supported networks...
option domain-name &quot;example.org&quot;;
option domain-name-servers ns1.example.org, ns2.example.org;

default-lease-time 600;
max-lease-time 7200;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# No service will be given on this subnet, but declaring it helps the 
# DHCP server to understand the network topology.

#subnet 10.152.187.0 netmask 255.255.255.0 {
#}

# This is a very basic subnet declaration.

#subnet 10.254.239.0 netmask 255.255.255.224 {
#  range 10.254.239.10 10.254.239.20;
#  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
#}

# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.

#subnet 10.254.239.32 netmask 255.255.255.224 {
#  range dynamic-bootp 10.254.239.40 10.254.239.60;
#  option broadcast-address 10.254.239.31;
#  option routers rtr-239-32-1.example.org;
#}

# A slightly different configuration for an internal subnet.
#subnet 10.5.5.0 netmask 255.255.255.224 {
#  range 10.5.5.26 10.5.5.30;
#  option domain-name-servers ns1.internal.example.org;
#  option domain-name &quot;internal.example.org&quot;;
#  option routers 10.5.5.1;
#  option broadcast-address 10.5.5.31;
#  default-lease-time 600;
#  max-lease-time 7200;
#}

# Hosts which require special configuration options can be listed in
# host statements.   If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.

#host passacaglia {
#  hardware ethernet 0:0:c0:5d:bd:95;
#  filename &quot;vmunix.passacaglia&quot;;
#  server-name &quot;toccata.fugue.com&quot;;
#}

# Fixed IP addresses can also be specified for hosts.   These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP.   Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
#host fantasia {
#  hardware ethernet 08:00:07:26:c0:a5;
#  fixed-address fantasia.fugue.com;
#}

# You can declare a class of clients and then do address allocation
# based on that.   The example below shows a case where all clients
# in a certain class get addresses on the 10.17.224/24 subnet, and all
# other clients get addresses on the 10.0.29/24 subnet.

#class &quot;foo&quot; {
#  match if substring (option vendor-class-identifier, 0, 4) = &quot;SUNW&quot;;
#}

#shared-network 224-29 {
#  subnet 10.17.224.0 netmask 255.255.255.0 {
#    option routers rtr-224.example.org;
#  }
#  subnet 10.0.29.0 netmask 255.255.255.0 {
#    option routers rtr-29.example.org;
#  }
#  pool {
#    allow members of &quot;foo&quot;;
#    range 10.17.224.10 10.17.224.250;
#  }
#  pool {
#    deny members of &quot;foo&quot;;
#    range 10.0.29.10 10.0.29.230;
#  }
#}&lt;/code&gt;

Une sauvegarde s'impose :

 # cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.ori

Voici notre fichier &quot;modifié&quot;

&lt;code&gt;# cat /etc/dhcp/dhcpd.conf
ddns-update-style none;
authoritative;

option domain-name &quot;isalo.org&quot;;
default-lease-time 7200;
max-lease-time 86400;
log-facility local7;

subnet 192.168.0.0 netmask 255.255.255.0 {
        pool {
                option domain-name-servers 192.168.0.1,41.188.9.130;
                range 192.168.0.199 192.168.0.249;
        }
        option routers 192.168.0.254;
        option domain-name &quot;isalo.org&quot;;
        option domain-name-servers 192.168.0.1,41.188.9.130;
        option netbios-name-servers 192.168.0.6;
        option netbios-node-type 8;
        option tftp-server-name &quot;192.168.0.6&quot;;

        next-server 192.168.0.6;
        filename &quot;pxelinux.0&quot;;
}
host s_lan_0 {
	hardware ethernet 00:25:11:79:8a:76;
	fixed-address 192.168.0.1;
	option host-name lol;
}&lt;/code&gt;

==== Explications ====

ddns-update-style: Vous pouvez demander au serveur DHCP de mettre à jour un serveur DNS si l'adresse IP d'un serveur dans votre réseau local a changé (car elle a été attribuée une adresse IP différente par DHCP).
Si vous n'avez pas de serveurs DNS dans notre LAN ou donnez des adresses IP statiques (qui est une bonne idée pour les serveurs ...) vous ne voudrez pas mettre à jour les enregistrements DNS, vous mettrez donc &quot;none&quot;

 ddns-update-style none;

Ce serveur fait autorité sur le réseau

 authoritative;

Les options globales
La durée des baux... En secondes. Vous pouvez laisser les durées par défaut. En augmentant ces durées, vous diminuerez le trafic généré par les demandes de renouvellement de baux. La valeur par défaut (600 minutes) semble un peu faible, j'ai choisi de passer cette valeur à 7200. Pour des essais, vous pouvez parfaitement passer ces valeurs à 120 ou moins...
Vous disposez d'un serveur NTP, précisez-le ici.

 option time-servers 192.168.0.254;
 default-lease-time 7200;
 max-lease-time 7200;

Précision : Les option globales, définies avant toute autre définition sont applicables à l'ensemble des &quot;clients&quot;. Si vous souhaitez préciser des options pour chaque &quot;pool&quot; il faudra mettre ces options dans la partie &quot;pool&quot; concernée.

Le réseau 192.168.0.0/24, avec la réserve d'adresses dynamiques, les IP des DNS, l'adresse du routeur, la définition du domaine de recherche, et trois lignes permettant de trouver un serveur PXE qui se trouve sur le réseau à l'IP 192.168.0.6
&lt;code&gt;
subnet 192.168.0.0 netmask 255.255.255.0 {
        pool {
               range 192.168.0.199 192.168.0.249; # La plage d'adresses IP à distribuer
        }
        option domain-name-servers 192.168.0.1,41.188.9.130; # Les DNS
        option routers 192.168.0.254; # La passerelle
        option domain-name &quot;isalo.org&quot;; # Le domaine
        option netbios-name-servers 192.168.0.6; # L'adresse du serveur Netbios

        option tftp-server-name &quot;192.168.0.6&quot;; # L'adresse du serveur tftp (pour un PXE)
        next-server 192.168.0.6;
        filename &quot;pxelinux.0&quot;;
}
&lt;/code&gt;

==== Les réservations d'adresses ====

Nous attribuerons automatiquement l'IP 192.168.0.1 à la machine qui dispose de l'adresse MAC 00:25:11:79:8a:76.

&lt;code&gt;host s_lan_0 {
	hardware ethernet 00:25:11:79:8a:76;
	fixed-address 192.168.0.1;
	option host-name lol;
}&lt;/code&gt;

Avertissement: La sécurité par attribution d'IP à des adresses MAC est facilement contournable par la technique dite &quot;ARP Spoofing&quot; - usurpation d'adresse MAC.

==== Les logs ====

Si vous souhaitez séparer vos logs :

Ajoutez :

 local7.debug     /var/log/dhcpd.log

Au fichier /etc/rsyslog.conf ou syslog.conf (en fonction de votre configuration)  

et relancez le daemon syslog :

 # service rsyslog restart ou # /etc/init.d/sysklogd restart

=== Coupler DHCP avec BIND9 ===

'''Cette option n'a pas encore été testée... A prendre avec précaution.'''

Cerise sur le gateau, vous disposez d'un serveur DNS bind. Nous pouvons alors coupler DHCP et BIND pour que ce dernier mette automatiquement à jour les IP dans ses fichiers de configuration:

==== dans /etc/dhcp/dhcpd.conf ====

Remplacer :

 ddns-update-style none;

Par :

&lt;code&gt;include &quot;/etc/bind/rndc.key&quot;;
ddns-update-style interim;
ddns-domainname &quot;isalo.org.&quot;;
ddns-rev-domainname &quot;in-addr.arpa.&quot;;
ignore client-updates;
zone test.edu. { primary 127.0.0.1; key rndc-key; }
zone 192.in-addr.arpa. { primary 127.0.0.1; key rndc-key;  }&lt;/code&gt;

==== dans /etc/bind/named.conf ou named.conf.local ====

Configurez vos zones comme suit :

&lt;code&gt;
controls {
inet 127.0.0.1 allow { localhost; } keys { &quot;rndc-key&quot;; };
};

include &quot;/etc/bind/rndc.key&quot;;

zone &quot;isalo.org&quot; {
        type master;
        file &quot;/etc/bind/db.isalo.org&quot;;
        allow-update { key &quot;rndc-key&quot;; };
        notify no;
        };
zone &quot;192.in-addr.arpa&quot; {
        type master;
        file &quot;/etc/bind/db.192&quot;;
        allow-update { key &quot;rndc-key&quot;; };
        notify no;
        };
&lt;/code&gt;

=== Refuser des adresses MAC ou des plages d'adresses MAC ===

Est-il possible de bloquer les demandes de certains matériels réseau en fonction de leur adresse MAC : Oui!

Il faudra utiliser ces commandes :
 match if substring(hardware, 1, 3) = xx:xx:xx;
ou
 match if binary-to-ascii(16, 8, &quot;:&quot;, substring(hardware, 1, 3)) = &quot;xx:xx:xx&quot;;
Attention dans la chaîne ASCII de comparaison le zéro de  poids fort des  octets doit être omis, par exemple : 08:00:27 -&gt;  8:0:27


L'exemple suivant permet de mettre dans le groupe &quot;banni&quot; une plage d'adresses MAC et de leur fournir une IP particulière :
&lt;code&gt;
class &quot;banni&quot; {
        match if binary-to-ascii(16, 8, &quot;:&quot;, substring(hardware, 1, 3)) = &quot;8:0:27&quot;;
}
subnet 192.168.0.0 netmask 255.255.255.0 {
  option routers 192.168.0.254;
  pool {     deny members of &quot;banni&quot;;
     range 192.168.0.70 192.168.0.71;
  }
  pool {
     range 192.168.0.72 192.168.0.73;
  }
}
&lt;/code&gt;
L'exemple suivant permet de mettre dans le groupe &quot;banni&quot; une plage d'adresses MAC et de leur refuser une IP :
&lt;code&gt;
class &quot;banni&quot; {
        match if substring(hardware, 1, 3) = 08:00:27;
}
subnet 192.168.0.0 netmask 255.255.255.0 {
  option routers 192.168.0.254;
  pool {
     deny members of &quot;banni&quot;;
     range 192.168.0.70 192.168.0.71;
  }
}
&lt;/code&gt;
Vous devriez avoir dans /var/log/syslog ceci :

 DHCPDISCOVER from 08:00:27:02:65:60 via eth0: network 192.168.0.0/24: no free leases

[http://www.debian-fr.org/dhcp3-refuser-plage-mac-address-t30589.html#p308248 Discussion forum]

=== Test ===

Sur une machine cliente :

 # ifup eth0
 Internet Systems Consortium DHCP Client 4.1.1-P1
 Copyright 2004-2010 Internet Systems Consortium.
 All rights reserved.
 For info, please visit https://www.isc.org/software/dhcp/
 
 Listening on LPF/eth0/6c:f0:49:07:15:8b
 Sending on   LPF/eth0/6c:f0:49:07:15:8b
 Sending on   Socket/fallback
 DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4
 DHCPOFFER from 192.168.0.1
 DHCPREQUEST on eth0 to 255.255.255.255 port 67
 DHCPACK from 192.168.0.1
 bound to 192.168.0.2 -- renewal in 3552 seconds.

== Conclusion ==

Voilà, notre dhcp est configuré et opérationnel !
Très simple à mettre en place comme vous l'avez vu, votre dhcp est maintenant prêt à vous rendre de très nombreux services pour une gestion centralisée de votre réseau.

De nombreuses option existent, elles permettent de mieux servir vos clients. A vous de les découvrir...

Référence : [[http://www.daemon-systems.org/man/dhcpd.conf.5.html|'''Le fichier dhcpd.conf''']]

[[Utilisateur:Lol|Lol]] 12 novembre 2010 à 10:05 (EAT)

[[Category:Serveurs]]</text>
      <sha1>3y1dum5ecmnexy5lq02b6x30zpimvry</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2735</id>
      <parentid>2662</parentid>
      <timestamp>2011-02-28T18:49:25Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Conclusion */</comment>
      <text xml:space="preserve" bytes="15828">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;

'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;

'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].

&lt;/div&gt;


Nous allons installer un serveur DHCP (à destination d'un petit réseau domestique, nous n'allons pas nous lancer dans la configuration d'une usine à gaz...) sur une squeeze.

== DHCP, qu'est-ce que c'est ? ==

Le DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Lorqu'il est convenablement configuré et fonctionnel, ce service est très pratique... Il permet d'administrer un réseau sans avoir à configurer machine après machine.
Toutes vos &quot;box&quot; possèdent ce service par défaut, d'une manière plus ou moins élaborée.

=== Détail du protocole DHCP ===

Lorsque vous connectez une machine à un réseau Ethernet TCP/IP, cette machine, pour fonctionner correctement, doit disposer :

# d'une adresse IP unique dans votre réseau et appartenant au même réseau;
# d'un masque de sous réseau, le même pour tous les hôtes du réseau (le &quot;netmask&quot;);
# d'une adresse d'un ou plusieurs DNS, pour pouvoir résoudre les noms des hôtes;
# de l'adresse de la passerelle qui permet d'accéder à Internet (le &quot;gateway&quot;)

'''Pour configurer vos hôtes locaux, vous avez trois possibilités :'''

# avec « zeroconf » (rfc3927). ce système s'il est fonctionnel ne permet aucune administration du réseau;
# vous passez de machine en machine, et configurez les paramètres réseau;
# vous installez un serveur DHCP sur votre réseau et vous dites à vos clients de configurer leur réseau par dhcp.

'''Détail de fonctionnement du protocole'''

:1) Le client DHCP démarre, il envoie une trame « DHCPDISCOVER », destinée à trouver un serveur DHCP.

&lt;code&gt;Listening on LPF/eth0/6c:f0:49:07:15:8b
Sending on LPF/eth0/6c:f0:49:07:15:8b
Sending on Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4&lt;/code&gt;

:2) Le (ou les) serveur(s) DHCP du réseau réponde(nt) par un « DHCPOFFER ». Cette trame contient une proposition de bail, la « MAC Address » du client, et l'adresse IP du serveur. Le client accepte normalement la première réponse venue.

 DHCPOFFER from 192.168.0.254

:3) Le client envoie alors un DHCPREQUEST à tous les serveurs (toujours en « Broadcast ») pour indiquer quelle offre il accepte.

 DHCPREQUEST on eth0 to 255.255.255.255 port 67

:4) Le serveur DHCP concerné répond définitivement par un DHCPACK qui constitue une confirmation du bail. L'adresse du client est alors marquée comme utilisée et ne sera plus proposée à un autre client pour toute la durée du bail.

 DHCPACK from 192.168.0.254
 bound to 192.168.0.2 -- renewal in 2850 seconds.

Un serveur DHCP a, à sa disposition, une plage d'adresses dans laquelle il est enfermé. Il tient à jour une base de données des adresses déjà utilisées et en cours d'utilisation. C'est ce qui explique que bien qu'attribuées dynamiquement, l'IP servie est souvent la même pour un client.

Lorsqu'il attribue une adresse, il le fait par l'intermédiaire d'un bail. Ce bail a normalement une durée limitée dans le temps. Tout ceci est configurable. L'avantage d'un bail long est une diminution du trafic vers le serveur dhcp. L'inconvénient, c'est qu'il faut planifier plus longtemps à l'avance des modification dans l'architecture de son réseau.

Après expiration du bail, ou résiliation par le client, les informations concernant ce bail restent mémorisées dans la base de données du serveur pendant un certain temps.

== Installation du serveur DHCP ==

Sur Debian, ceci se fait très simplement en installant les paquetages isc-dhcp-server et isc-dhcp-common.

 # apt-get update
 # apt-get install isc-dhcp-server isc-dhcp-common

== Configuration ==

=== Définition de l'interface ===

Le « daemon » dhcpd écoute par défaut sur toutes les interfaces réseau actives sur le serveur. Pour des raison de sécurité ce n'est pas souhaitable.
Pour Debian Squeeze, il faudra éditer le fichier /etc/default/isc-dhcp-server.
Par défaut, sur une Debian Lenny vous trouverez le fichier /etc/default/dhcp.
Si vous souhaitez que votre dhcp écoute sur une seule interface, il faut la définir ici:

 INTERFACES=&quot;eth0&quot;

=== Le fichier /etc/dhcp/dhcpd.conf ===

La configuration de votre dhcp se trouve dans un seul fichier : /etc/dhcp/dhcpd.conf

Voici le fichier &quot;original&quot;

&lt;code&gt;# cat /etc/dhcp/dhcpd.conf
#
# Sample configuration file for ISC dhcpd for Debian
#
#

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;

# option definitions common to all supported networks...
option domain-name &quot;example.org&quot;;
option domain-name-servers ns1.example.org, ns2.example.org;

default-lease-time 600;
max-lease-time 7200;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# No service will be given on this subnet, but declaring it helps the 
# DHCP server to understand the network topology.

#subnet 10.152.187.0 netmask 255.255.255.0 {
#}

# This is a very basic subnet declaration.

#subnet 10.254.239.0 netmask 255.255.255.224 {
#  range 10.254.239.10 10.254.239.20;
#  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
#}

# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.

#subnet 10.254.239.32 netmask 255.255.255.224 {
#  range dynamic-bootp 10.254.239.40 10.254.239.60;
#  option broadcast-address 10.254.239.31;
#  option routers rtr-239-32-1.example.org;
#}

# A slightly different configuration for an internal subnet.
#subnet 10.5.5.0 netmask 255.255.255.224 {
#  range 10.5.5.26 10.5.5.30;
#  option domain-name-servers ns1.internal.example.org;
#  option domain-name &quot;internal.example.org&quot;;
#  option routers 10.5.5.1;
#  option broadcast-address 10.5.5.31;
#  default-lease-time 600;
#  max-lease-time 7200;
#}

# Hosts which require special configuration options can be listed in
# host statements.   If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.

#host passacaglia {
#  hardware ethernet 0:0:c0:5d:bd:95;
#  filename &quot;vmunix.passacaglia&quot;;
#  server-name &quot;toccata.fugue.com&quot;;
#}

# Fixed IP addresses can also be specified for hosts.   These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP.   Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
#host fantasia {
#  hardware ethernet 08:00:07:26:c0:a5;
#  fixed-address fantasia.fugue.com;
#}

# You can declare a class of clients and then do address allocation
# based on that.   The example below shows a case where all clients
# in a certain class get addresses on the 10.17.224/24 subnet, and all
# other clients get addresses on the 10.0.29/24 subnet.

#class &quot;foo&quot; {
#  match if substring (option vendor-class-identifier, 0, 4) = &quot;SUNW&quot;;
#}

#shared-network 224-29 {
#  subnet 10.17.224.0 netmask 255.255.255.0 {
#    option routers rtr-224.example.org;
#  }
#  subnet 10.0.29.0 netmask 255.255.255.0 {
#    option routers rtr-29.example.org;
#  }
#  pool {
#    allow members of &quot;foo&quot;;
#    range 10.17.224.10 10.17.224.250;
#  }
#  pool {
#    deny members of &quot;foo&quot;;
#    range 10.0.29.10 10.0.29.230;
#  }
#}&lt;/code&gt;

Une sauvegarde s'impose :

 # cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.ori

Voici notre fichier &quot;modifié&quot;

&lt;code&gt;# cat /etc/dhcp/dhcpd.conf
ddns-update-style none;
authoritative;

option domain-name &quot;isalo.org&quot;;
default-lease-time 7200;
max-lease-time 86400;
log-facility local7;

subnet 192.168.0.0 netmask 255.255.255.0 {
        pool {
                option domain-name-servers 192.168.0.1,41.188.9.130;
                range 192.168.0.199 192.168.0.249;
        }
        option routers 192.168.0.254;
        option domain-name &quot;isalo.org&quot;;
        option domain-name-servers 192.168.0.1,41.188.9.130;
        option netbios-name-servers 192.168.0.6;
        option netbios-node-type 8;
        option tftp-server-name &quot;192.168.0.6&quot;;

        next-server 192.168.0.6;
        filename &quot;pxelinux.0&quot;;
}
host s_lan_0 {
	hardware ethernet 00:25:11:79:8a:76;
	fixed-address 192.168.0.1;
	option host-name lol;
}&lt;/code&gt;

==== Explications ====

ddns-update-style: Vous pouvez demander au serveur DHCP de mettre à jour un serveur DNS si l'adresse IP d'un serveur dans votre réseau local a changé (car elle a été attribuée une adresse IP différente par DHCP).
Si vous n'avez pas de serveurs DNS dans notre LAN ou donnez des adresses IP statiques (qui est une bonne idée pour les serveurs ...) vous ne voudrez pas mettre à jour les enregistrements DNS, vous mettrez donc &quot;none&quot;

 ddns-update-style none;

Ce serveur fait autorité sur le réseau

 authoritative;

Les options globales
La durée des baux... En secondes. Vous pouvez laisser les durées par défaut. En augmentant ces durées, vous diminuerez le trafic généré par les demandes de renouvellement de baux. La valeur par défaut (600 minutes) semble un peu faible, j'ai choisi de passer cette valeur à 7200. Pour des essais, vous pouvez parfaitement passer ces valeurs à 120 ou moins...
Vous disposez d'un serveur NTP, précisez-le ici.

 option time-servers 192.168.0.254;
 default-lease-time 7200;
 max-lease-time 7200;

Précision : Les option globales, définies avant toute autre définition sont applicables à l'ensemble des &quot;clients&quot;. Si vous souhaitez préciser des options pour chaque &quot;pool&quot; il faudra mettre ces options dans la partie &quot;pool&quot; concernée.

Le réseau 192.168.0.0/24, avec la réserve d'adresses dynamiques, les IP des DNS, l'adresse du routeur, la définition du domaine de recherche, et trois lignes permettant de trouver un serveur PXE qui se trouve sur le réseau à l'IP 192.168.0.6
&lt;code&gt;
subnet 192.168.0.0 netmask 255.255.255.0 {
        pool {
               range 192.168.0.199 192.168.0.249; # La plage d'adresses IP à distribuer
        }
        option domain-name-servers 192.168.0.1,41.188.9.130; # Les DNS
        option routers 192.168.0.254; # La passerelle
        option domain-name &quot;isalo.org&quot;; # Le domaine
        option netbios-name-servers 192.168.0.6; # L'adresse du serveur Netbios

        option tftp-server-name &quot;192.168.0.6&quot;; # L'adresse du serveur tftp (pour un PXE)
        next-server 192.168.0.6;
        filename &quot;pxelinux.0&quot;;
}
&lt;/code&gt;

==== Les réservations d'adresses ====

Nous attribuerons automatiquement l'IP 192.168.0.1 à la machine qui dispose de l'adresse MAC 00:25:11:79:8a:76.

&lt;code&gt;host s_lan_0 {
	hardware ethernet 00:25:11:79:8a:76;
	fixed-address 192.168.0.1;
	option host-name lol;
}&lt;/code&gt;

Avertissement: La sécurité par attribution d'IP à des adresses MAC est facilement contournable par la technique dite &quot;ARP Spoofing&quot; - usurpation d'adresse MAC.

==== Les logs ====

Si vous souhaitez séparer vos logs :

Ajoutez :

 local7.debug     /var/log/dhcpd.log

Au fichier /etc/rsyslog.conf ou syslog.conf (en fonction de votre configuration)  

et relancez le daemon syslog :

 # service rsyslog restart ou # /etc/init.d/sysklogd restart

=== Coupler DHCP avec BIND9 ===

'''Cette option n'a pas encore été testée... A prendre avec précaution.'''

Cerise sur le gateau, vous disposez d'un serveur DNS bind. Nous pouvons alors coupler DHCP et BIND pour que ce dernier mette automatiquement à jour les IP dans ses fichiers de configuration:

==== dans /etc/dhcp/dhcpd.conf ====

Remplacer :

 ddns-update-style none;

Par :

&lt;code&gt;include &quot;/etc/bind/rndc.key&quot;;
ddns-update-style interim;
ddns-domainname &quot;isalo.org.&quot;;
ddns-rev-domainname &quot;in-addr.arpa.&quot;;
ignore client-updates;
zone test.edu. { primary 127.0.0.1; key rndc-key; }
zone 192.in-addr.arpa. { primary 127.0.0.1; key rndc-key;  }&lt;/code&gt;

==== dans /etc/bind/named.conf ou named.conf.local ====

Configurez vos zones comme suit :

&lt;code&gt;
controls {
inet 127.0.0.1 allow { localhost; } keys { &quot;rndc-key&quot;; };
};

include &quot;/etc/bind/rndc.key&quot;;

zone &quot;isalo.org&quot; {
        type master;
        file &quot;/etc/bind/db.isalo.org&quot;;
        allow-update { key &quot;rndc-key&quot;; };
        notify no;
        };
zone &quot;192.in-addr.arpa&quot; {
        type master;
        file &quot;/etc/bind/db.192&quot;;
        allow-update { key &quot;rndc-key&quot;; };
        notify no;
        };
&lt;/code&gt;

=== Refuser des adresses MAC ou des plages d'adresses MAC ===

Est-il possible de bloquer les demandes de certains matériels réseau en fonction de leur adresse MAC : Oui!

Il faudra utiliser ces commandes :
 match if substring(hardware, 1, 3) = xx:xx:xx;
ou
 match if binary-to-ascii(16, 8, &quot;:&quot;, substring(hardware, 1, 3)) = &quot;xx:xx:xx&quot;;
Attention dans la chaîne ASCII de comparaison le zéro de  poids fort des  octets doit être omis, par exemple : 08:00:27 -&gt;  8:0:27


L'exemple suivant permet de mettre dans le groupe &quot;banni&quot; une plage d'adresses MAC et de leur fournir une IP particulière :
&lt;code&gt;
class &quot;banni&quot; {
        match if binary-to-ascii(16, 8, &quot;:&quot;, substring(hardware, 1, 3)) = &quot;8:0:27&quot;;
}
subnet 192.168.0.0 netmask 255.255.255.0 {
  option routers 192.168.0.254;
  pool {     deny members of &quot;banni&quot;;
     range 192.168.0.70 192.168.0.71;
  }
  pool {
     range 192.168.0.72 192.168.0.73;
  }
}
&lt;/code&gt;
L'exemple suivant permet de mettre dans le groupe &quot;banni&quot; une plage d'adresses MAC et de leur refuser une IP :
&lt;code&gt;
class &quot;banni&quot; {
        match if substring(hardware, 1, 3) = 08:00:27;
}
subnet 192.168.0.0 netmask 255.255.255.0 {
  option routers 192.168.0.254;
  pool {
     deny members of &quot;banni&quot;;
     range 192.168.0.70 192.168.0.71;
  }
}
&lt;/code&gt;
Vous devriez avoir dans /var/log/syslog ceci :

 DHCPDISCOVER from 08:00:27:02:65:60 via eth0: network 192.168.0.0/24: no free leases

[http://www.debian-fr.org/dhcp3-refuser-plage-mac-address-t30589.html#p308248 Discussion forum]

=== Test ===

Sur une machine cliente :

 # ifup eth0
 Internet Systems Consortium DHCP Client 4.1.1-P1
 Copyright 2004-2010 Internet Systems Consortium.
 All rights reserved.
 For info, please visit https://www.isc.org/software/dhcp/
 
 Listening on LPF/eth0/6c:f0:49:07:15:8b
 Sending on   LPF/eth0/6c:f0:49:07:15:8b
 Sending on   Socket/fallback
 DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4
 DHCPOFFER from 192.168.0.1
 DHCPREQUEST on eth0 to 255.255.255.255 port 67
 DHCPACK from 192.168.0.1
 bound to 192.168.0.2 -- renewal in 3552 seconds.

== Conclusion ==

Voilà, notre dhcp est configuré et opérationnel !
Très simple à mettre en place comme vous l'avez vu, votre dhcp est maintenant prêt à vous rendre de très nombreux services pour une gestion centralisée de votre réseau.

De nombreuses options existent, elles permettent de mieux servir vos clients. A vous de les découvrir...

Référence : [[http://www.daemon-systems.org/man/dhcpd.conf.5.html|'''Le fichier dhcpd.conf''']]

[[Utilisateur:Lol|Lol]] 12 novembre 2010 à 10:05 (EAT)

[[Category:Serveurs]]</text>
      <sha1>g0sn0t744bvw2ak63c4eldi9xzp0um4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>DPKG</title>
    <ns>0</ns>
    <id>526</id>
    <revision>
      <id>2115</id>
      <timestamp>2010-09-23T08:11:57Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « &lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt; '''/!\''' Ce document n'a pas été validé par la communauté. Soyez ... »</comment>
      <text xml:space="preserve" bytes="5459">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;

DPKG est un utilitaire de base pour gérer les paquets Debian .deb

=== Commandes diverses avec dpkg ===

* Installer un paquet présent sur votre système:
 # dpkg -i Nom_du_paquet

* Supprimer un paquet:
 # dpkg -r Nom_du_paquet

* Supprimer un paquet même défectueux et marquer comme demandant une réinstallation:
 # dpkg -r --force-remove-reinstreq Nom_du_paquet

* Liste complète des paquets installés:
 $ dpkg -l

* Liste partielle des paquets installés:
 $ dpkg -l nom_du_paquet
 $ dpkg -l début_du_nom_du_paquet*
 $ dpkg -l *nom_partiel_du_paquet*

* Rechercher l’emplacement du fichier contenu dans un paquet et le nom de ce paquet:
 $ dpkg -S nom_partiel_du_fichier

* Connaître la liste des fichiers d’un paquet:
 $ dpkg -L nom_exacte_du_paquet

* Informations complètes sur un paquet:
 $ dpkg -p nom_du_paquet

* Re-configurer un paquet:
 $ dpkg-reconfigure nom_exact_du_paquet

==== Astuce: ====

* Copier la configuration d’un système sur un autre : [[Reinstallation_rapide]]

* Automatiser le télé-chargement des mises à jour tout les matins a 9h30 : (à placer dans un fichier dans /etc/cron.d)
 30 9 * * * (/usr/bin/apt-get update &amp;&amp; /usr/bin/apt-get -dy dist-upgrade)

=== Opération sur les versions ===

==== &quot;Géler et dégeler&quot; des paquets ====

DPKG permet de facilement opérer sur les version des paquets.
Il peut être nécessaire par exemple de conserver un paquet dans une version, et d'empêcher sa mise à jour lors d'un apt-get dist-upgrade ou aptitude safe-upgrade
Il peut aussi être nécessaire de redescendre un paquet dans une version antérieure

Attention, les paquets mis en attente (hold) le seront tant que vous n'aurez pas levé le &quot;gel&quot;.
J'ai pris fluxbox dans les exemples suivants :

* Conserver un paquet en l'état

 # echo fluxbox hold|dpkg --set-selections
 
* Afficher les paquets conservés en l'état:

 # dpkg --get-selections | grep hold
 fluxbox						hold

* Lever la conservation en l'etat

 # echo fluxbox install|dpkg --set-selections

==== Revenir à une version antérieure ====

Nous sommes sous Sid et souhaitons installer la version testing de fluxbox, et empêcher qu'elle ne soit mise-à-jour accidentellement: (nous allons geler sa version)
Les étapes de cet exemple utiliseront fluxbox :

:1) Dans votre sources.list vous avez testing et Sid activés

 # apt-get update
 # apt-get install fluxbox/testing
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Version choisie « 1.1.1+dfsg2-1 » (Debian:testing [amd64]) pour « fluxbox »
 Paquets suggérés :
   fluxconf fbpager fbdesk
 Paquets recommandés :
   xfonts-terminus
 Les paquets retenus suivants seront changés :
   fluxbox
 Les paquets suivants seront mis à une VERSION INFÉRIEURE :
   fluxbox
 0 mis à jour, 0 nouvellement installés, 1 remis à une version inférieure, 0 à enlever et 16 non mis à jour.
 Il est nécessaire de prendre 1 168ko dans les archives.
 Après cette opération, 639ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ? o
 Réception de : 1 http://ftp.fr.debian.org/debian/ testing/main fluxbox amd64 1.1.1+dfsg2-1 [1 168kB]
 1 168ko réceptionnés en 10s (111ko/s)                                                                                     
 Lecture des champs des paquets... Fait
 Lecture de l'état des paquets... Fait 
 Récupération des rapports de bogue... Fait  
 Analyse des informations Trouvé/Corrigé... Fait  
 dpkg : avertissement : dégradation (« downgrade ») de fluxbox depuis 1.1.1+git20100908.df2f51b-1 vers 1.1.1+dfsg2-1.
 (Lecture de la base de données... 173472 fichiers et répertoires déjà installés.)
 Préparation du remplacement de fluxbox 1.1.1+git20100908.df2f51b-1 (en utilisant .../fluxbox_1.1.1+dfsg2-1_amd64.deb) ...
 Dépaquetage de la mise à jour de fluxbox ...
 Traitement des actions différées (« triggers ») pour « man-db »...
 Traitement des actions différées (« triggers ») pour « menu »...
 Paramétrage de fluxbox (1.1.1+dfsg2-1) ...
 Installation de la nouvelle version du fichier de configuration /etc/X11/fluxbox/init ...
 Installation de la nouvelle version du fichier de configuration /etc/X11/fluxbox/keys ...
 Installation de la nouvelle version du fichier de configuration /etc/menu-methods/fluxbox ...
 Traitement des actions différées (« triggers ») pour « menu »...

:2) Nous commandons le gel de la version &quot;testing&quot; de fluxbox

 # echo fluxbox hold|dpkg --set-selections

Si nous faisons un apt-get dist-upgrade, APT ne proposera pas la mise à jour de fluxbox :

:3) Vous apprenez qu'une nouvelle version non boguée de fluxbox est entrée en Sid, vous souhaitez l'installer :

 # echo fluxbox install|dpkg --set-selections
 # apt-get update
 # apt-get install fluxbox

[http://www.debian-fr.org/viewtopic.php?f=8&amp;t=1969&amp;start=0 Source forum]

[[Utilisateur:Lol|Lol]] 23 septembre 2010 à 11:11 (EAT)

[[Catégorie:Paquets]]</text>
      <sha1>lnmafvm6nshu19j2zbchzsyezvj73pw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2117</id>
      <parentid>2115</parentid>
      <timestamp>2010-09-23T08:23:05Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Commandes diverses avec dpkg */</comment>
      <text xml:space="preserve" bytes="5459">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;

DPKG est un utilitaire de base pour gérer les paquets Debian .deb

=== Commandes diverses avec dpkg ===

* Installer un paquet présent sur votre système:
 # dpkg -i Nom_du_paquet

* Supprimer un paquet:
 # dpkg -r Nom_du_paquet

* Supprimer un paquet même défectueux et marquer comme demandant une réinstallation:
 # dpkg -r --force-remove-reinstreq Nom_du_paquet

* Liste complète des paquets installés:
 $ dpkg -l

* Liste partielle des paquets installés:
 $ dpkg -l nom_du_paquet
 $ dpkg -l début_du_nom_du_paquet*
 $ dpkg -l *nom_partiel_du_paquet*

* Rechercher l’emplacement du fichier contenu dans un paquet et le nom de ce paquet:
 $ dpkg -S nom_partiel_du_fichier

* Connaître la liste des fichiers d’un paquet:
 $ dpkg -L nom_exact_du_paquet

* Informations complètes sur un paquet:
 $ dpkg -p nom_du_paquet

* Re-configurer un paquet:
 $ dpkg-reconfigure nom_exact_du_paquet

==== Astuce: ====

* Copier la configuration d’un système sur un autre : [[Reinstallation_rapide]]

* Automatiser le télé-chargement des mises à jour tous les matins à 9h30 : (à placer dans un fichier dans /etc/cron.d)
 30 9 * * * (/usr/bin/apt-get update &amp;&amp; /usr/bin/apt-get -dy dist-upgrade)

=== Opération sur les versions ===

==== &quot;Géler et dégeler&quot; des paquets ====

DPKG permet de facilement opérer sur les version des paquets.
Il peut être nécessaire par exemple de conserver un paquet dans une version, et d'empêcher sa mise à jour lors d'un apt-get dist-upgrade ou aptitude safe-upgrade
Il peut aussi être nécessaire de redescendre un paquet dans une version antérieure

Attention, les paquets mis en attente (hold) le seront tant que vous n'aurez pas levé le &quot;gel&quot;.
J'ai pris fluxbox dans les exemples suivants :

* Conserver un paquet en l'état

 # echo fluxbox hold|dpkg --set-selections
 
* Afficher les paquets conservés en l'état:

 # dpkg --get-selections | grep hold
 fluxbox						hold

* Lever la conservation en l'etat

 # echo fluxbox install|dpkg --set-selections

==== Revenir à une version antérieure ====

Nous sommes sous Sid et souhaitons installer la version testing de fluxbox, et empêcher qu'elle ne soit mise-à-jour accidentellement: (nous allons geler sa version)
Les étapes de cet exemple utiliseront fluxbox :

:1) Dans votre sources.list vous avez testing et Sid activés

 # apt-get update
 # apt-get install fluxbox/testing
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Version choisie « 1.1.1+dfsg2-1 » (Debian:testing [amd64]) pour « fluxbox »
 Paquets suggérés :
   fluxconf fbpager fbdesk
 Paquets recommandés :
   xfonts-terminus
 Les paquets retenus suivants seront changés :
   fluxbox
 Les paquets suivants seront mis à une VERSION INFÉRIEURE :
   fluxbox
 0 mis à jour, 0 nouvellement installés, 1 remis à une version inférieure, 0 à enlever et 16 non mis à jour.
 Il est nécessaire de prendre 1 168ko dans les archives.
 Après cette opération, 639ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ? o
 Réception de : 1 http://ftp.fr.debian.org/debian/ testing/main fluxbox amd64 1.1.1+dfsg2-1 [1 168kB]
 1 168ko réceptionnés en 10s (111ko/s)                                                                                     
 Lecture des champs des paquets... Fait
 Lecture de l'état des paquets... Fait 
 Récupération des rapports de bogue... Fait  
 Analyse des informations Trouvé/Corrigé... Fait  
 dpkg : avertissement : dégradation (« downgrade ») de fluxbox depuis 1.1.1+git20100908.df2f51b-1 vers 1.1.1+dfsg2-1.
 (Lecture de la base de données... 173472 fichiers et répertoires déjà installés.)
 Préparation du remplacement de fluxbox 1.1.1+git20100908.df2f51b-1 (en utilisant .../fluxbox_1.1.1+dfsg2-1_amd64.deb) ...
 Dépaquetage de la mise à jour de fluxbox ...
 Traitement des actions différées (« triggers ») pour « man-db »...
 Traitement des actions différées (« triggers ») pour « menu »...
 Paramétrage de fluxbox (1.1.1+dfsg2-1) ...
 Installation de la nouvelle version du fichier de configuration /etc/X11/fluxbox/init ...
 Installation de la nouvelle version du fichier de configuration /etc/X11/fluxbox/keys ...
 Installation de la nouvelle version du fichier de configuration /etc/menu-methods/fluxbox ...
 Traitement des actions différées (« triggers ») pour « menu »...

:2) Nous commandons le gel de la version &quot;testing&quot; de fluxbox

 # echo fluxbox hold|dpkg --set-selections

Si nous faisons un apt-get dist-upgrade, APT ne proposera pas la mise à jour de fluxbox :

:3) Vous apprenez qu'une nouvelle version non boguée de fluxbox est entrée en Sid, vous souhaitez l'installer :

 # echo fluxbox install|dpkg --set-selections
 # apt-get update
 # apt-get install fluxbox

[http://www.debian-fr.org/viewtopic.php?f=8&amp;t=1969&amp;start=0 Source forum]

[[Utilisateur:Lol|Lol]] 23 septembre 2010 à 11:11 (EAT)

[[Catégorie:Paquets]]</text>
      <sha1>kgm9e7yo9nr1ul63takdury02tanc64</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2118</id>
      <parentid>2117</parentid>
      <timestamp>2010-09-23T08:25:02Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* &quot;Géler et dégeler&quot; des paquets */</comment>
      <text xml:space="preserve" bytes="5460">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;

DPKG est un utilitaire de base pour gérer les paquets Debian .deb

=== Commandes diverses avec dpkg ===

* Installer un paquet présent sur votre système:
 # dpkg -i Nom_du_paquet

* Supprimer un paquet:
 # dpkg -r Nom_du_paquet

* Supprimer un paquet même défectueux et marquer comme demandant une réinstallation:
 # dpkg -r --force-remove-reinstreq Nom_du_paquet

* Liste complète des paquets installés:
 $ dpkg -l

* Liste partielle des paquets installés:
 $ dpkg -l nom_du_paquet
 $ dpkg -l début_du_nom_du_paquet*
 $ dpkg -l *nom_partiel_du_paquet*

* Rechercher l’emplacement du fichier contenu dans un paquet et le nom de ce paquet:
 $ dpkg -S nom_partiel_du_fichier

* Connaître la liste des fichiers d’un paquet:
 $ dpkg -L nom_exact_du_paquet

* Informations complètes sur un paquet:
 $ dpkg -p nom_du_paquet

* Re-configurer un paquet:
 $ dpkg-reconfigure nom_exact_du_paquet

==== Astuce: ====

* Copier la configuration d’un système sur un autre : [[Reinstallation_rapide]]

* Automatiser le télé-chargement des mises à jour tous les matins à 9h30 : (à placer dans un fichier dans /etc/cron.d)
 30 9 * * * (/usr/bin/apt-get update &amp;&amp; /usr/bin/apt-get -dy dist-upgrade)

=== Opération sur les versions ===

==== &quot;Geler et dégeler&quot; des paquets ====

DPKG permet de facilement opérer sur les versions des paquets.
Il peut être nécessaire par exemple de conserver un paquet dans une version, et d'empêcher sa mise à jour lors d'un apt-get dist-upgrade ou aptitude safe-upgrade
Il peut aussi être nécessaire de redescendre un paquet dans une version antérieure

Attention, les paquets mis en attente (hold) le seront tant que vous n'aurez pas levé le &quot;gel&quot;.
J'ai pris fluxbox dans les exemples suivants :

* Conserver un paquet en l'état

 # echo fluxbox hold|dpkg --set-selections
 
* Afficher les paquets conservés en l'état:

 # dpkg --get-selections | grep hold
 fluxbox						hold

* Lever la conservation en l'état

 # echo fluxbox install|dpkg --set-selections

==== Revenir à une version antérieure ====

Nous sommes sous Sid et souhaitons installer la version testing de fluxbox, et empêcher qu'elle ne soit mise-à-jour accidentellement: (nous allons geler sa version)
Les étapes de cet exemple utiliseront fluxbox :

:1) Dans votre sources.list vous avez testing et Sid activés

 # apt-get update
 # apt-get install fluxbox/testing
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Version choisie « 1.1.1+dfsg2-1 » (Debian:testing [amd64]) pour « fluxbox »
 Paquets suggérés :
   fluxconf fbpager fbdesk
 Paquets recommandés :
   xfonts-terminus
 Les paquets retenus suivants seront changés :
   fluxbox
 Les paquets suivants seront mis à une VERSION INFÉRIEURE :
   fluxbox
 0 mis à jour, 0 nouvellement installés, 1 remis à une version inférieure, 0 à enlever et 16 non mis à jour.
 Il est nécessaire de prendre 1 168ko dans les archives.
 Après cette opération, 639ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ? o
 Réception de : 1 http://ftp.fr.debian.org/debian/ testing/main fluxbox amd64 1.1.1+dfsg2-1 [1 168kB]
 1 168ko réceptionnés en 10s (111ko/s)                                                                                     
 Lecture des champs des paquets... Fait
 Lecture de l'état des paquets... Fait 
 Récupération des rapports de bogue... Fait  
 Analyse des informations Trouvé/Corrigé... Fait  
 dpkg : avertissement : dégradation (« downgrade ») de fluxbox depuis 1.1.1+git20100908.df2f51b-1 vers 1.1.1+dfsg2-1.
 (Lecture de la base de données... 173472 fichiers et répertoires déjà installés.)
 Préparation du remplacement de fluxbox 1.1.1+git20100908.df2f51b-1 (en utilisant .../fluxbox_1.1.1+dfsg2-1_amd64.deb) ...
 Dépaquetage de la mise à jour de fluxbox ...
 Traitement des actions différées (« triggers ») pour « man-db »...
 Traitement des actions différées (« triggers ») pour « menu »...
 Paramétrage de fluxbox (1.1.1+dfsg2-1) ...
 Installation de la nouvelle version du fichier de configuration /etc/X11/fluxbox/init ...
 Installation de la nouvelle version du fichier de configuration /etc/X11/fluxbox/keys ...
 Installation de la nouvelle version du fichier de configuration /etc/menu-methods/fluxbox ...
 Traitement des actions différées (« triggers ») pour « menu »...

:2) Nous commandons le gel de la version &quot;testing&quot; de fluxbox

 # echo fluxbox hold|dpkg --set-selections

Si nous faisons un apt-get dist-upgrade, APT ne proposera pas la mise à jour de fluxbox :

:3) Vous apprenez qu'une nouvelle version non boguée de fluxbox est entrée en Sid, vous souhaitez l'installer :

 # echo fluxbox install|dpkg --set-selections
 # apt-get update
 # apt-get install fluxbox

[http://www.debian-fr.org/viewtopic.php?f=8&amp;t=1969&amp;start=0 Source forum]

[[Utilisateur:Lol|Lol]] 23 septembre 2010 à 11:11 (EAT)

[[Catégorie:Paquets]]</text>
      <sha1>rsp1xwly1bp7lbye6sca4yrxa3psgik</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2119</id>
      <parentid>2118</parentid>
      <timestamp>2010-09-23T08:35:06Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <minor/>
      <comment>prévention de certains risques</comment>
      <text xml:space="preserve" bytes="5768">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;

DPKG est un utilitaire de base pour gérer les paquets Debian .deb

=== Commandes diverses avec dpkg ===

* Installer un paquet présent sur votre système:
 # dpkg -i Nom_du_paquet

* Supprimer un paquet:
 # dpkg -r Nom_du_paquet

* Supprimer un paquet même défectueux et marquer comme demandant une réinstallation:
 # dpkg -r --force-remove-reinstreq Nom_du_paquet

* Liste complète des paquets installés:
 $ dpkg -l

* Liste partielle des paquets installés:
 $ dpkg -l nom_du_paquet
 $ dpkg -l début_du_nom_du_paquet*
 $ dpkg -l *nom_partiel_du_paquet*

* Rechercher l’emplacement du fichier contenu dans un paquet et le nom de ce paquet:
 $ dpkg -S nom_partiel_du_fichier

* Connaître la liste des fichiers d’un paquet:
 $ dpkg -L nom_exact_du_paquet

* Informations complètes sur un paquet:
 $ dpkg -p nom_du_paquet

* Re-configurer un paquet:
 $ dpkg-reconfigure nom_exact_du_paquet

==== Astuce: ====

* Copier la configuration d’un système sur un autre : [[Reinstallation_rapide]]

* Automatiser le télé-chargement des mises à jour tous les matins à 9h30 : (à placer dans un fichier dans /etc/cron.d)
 30 9 * * * (/usr/bin/apt-get update &amp;&amp; /usr/bin/apt-get -dy dist-upgrade)

Attention: Si vous êtes sur une version &quot;testing&quot; ou &quot;unstable&quot; de Debian, il y a de grands risques à mettre l'option -y ( répondre automatiquement Oui à chaque question ) car il y a un grand risque que certains paquets défectueux soient installés, même si vous utilisez apt-listbugs ou équivalent.

=== Opération sur les versions ===

==== &quot;Geler et dégeler&quot; des paquets ====

DPKG permet de facilement opérer sur les versions des paquets.
Il peut être nécessaire par exemple de conserver un paquet dans une version, et d'empêcher sa mise à jour lors d'un apt-get dist-upgrade ou aptitude safe-upgrade
Il peut aussi être nécessaire de redescendre un paquet dans une version antérieure

Attention, les paquets mis en attente (hold) le seront tant que vous n'aurez pas levé le &quot;gel&quot;.
J'ai pris fluxbox dans les exemples suivants :

* Conserver un paquet en l'état

 # echo fluxbox hold|dpkg --set-selections
 
* Afficher les paquets conservés en l'état:

 # dpkg --get-selections | grep hold
 fluxbox						hold

* Lever la conservation en l'état

 # echo fluxbox install|dpkg --set-selections

==== Revenir à une version antérieure ====

Nous sommes sous Sid et souhaitons installer la version testing de fluxbox, et empêcher qu'elle ne soit mise-à-jour accidentellement: (nous allons geler sa version)
Les étapes de cet exemple utiliseront fluxbox :

:1) Dans votre sources.list vous avez testing et Sid activés

 # apt-get update
 # apt-get install fluxbox/testing
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Version choisie « 1.1.1+dfsg2-1 » (Debian:testing [amd64]) pour « fluxbox »
 Paquets suggérés :
   fluxconf fbpager fbdesk
 Paquets recommandés :
   xfonts-terminus
 Les paquets retenus suivants seront changés :
   fluxbox
 Les paquets suivants seront mis à une VERSION INFÉRIEURE :
   fluxbox
 0 mis à jour, 0 nouvellement installés, 1 remis à une version inférieure, 0 à enlever et 16 non mis à jour.
 Il est nécessaire de prendre 1 168ko dans les archives.
 Après cette opération, 639ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ? o
 Réception de : 1 http://ftp.fr.debian.org/debian/ testing/main fluxbox amd64 1.1.1+dfsg2-1 [1 168kB]
 1 168ko réceptionnés en 10s (111ko/s)                                                                                     
 Lecture des champs des paquets... Fait
 Lecture de l'état des paquets... Fait 
 Récupération des rapports de bogue... Fait  
 Analyse des informations Trouvé/Corrigé... Fait  
 dpkg : avertissement : dégradation (« downgrade ») de fluxbox depuis 1.1.1+git20100908.df2f51b-1 vers 1.1.1+dfsg2-1.
 (Lecture de la base de données... 173472 fichiers et répertoires déjà installés.)
 Préparation du remplacement de fluxbox 1.1.1+git20100908.df2f51b-1 (en utilisant .../fluxbox_1.1.1+dfsg2-1_amd64.deb) ...
 Dépaquetage de la mise à jour de fluxbox ...
 Traitement des actions différées (« triggers ») pour « man-db »...
 Traitement des actions différées (« triggers ») pour « menu »...
 Paramétrage de fluxbox (1.1.1+dfsg2-1) ...
 Installation de la nouvelle version du fichier de configuration /etc/X11/fluxbox/init ...
 Installation de la nouvelle version du fichier de configuration /etc/X11/fluxbox/keys ...
 Installation de la nouvelle version du fichier de configuration /etc/menu-methods/fluxbox ...
 Traitement des actions différées (« triggers ») pour « menu »...

:2) Nous commandons le gel de la version &quot;testing&quot; de fluxbox

 # echo fluxbox hold|dpkg --set-selections

Si nous faisons un apt-get dist-upgrade, APT ne proposera pas la mise à jour de fluxbox :

:3) Vous apprenez qu'une nouvelle version non boguée de fluxbox est entrée en Sid, vous souhaitez l'installer :

 # echo fluxbox install|dpkg --set-selections
 # apt-get update
 # apt-get install fluxbox

[http://www.debian-fr.org/viewtopic.php?f=8&amp;t=1969&amp;start=0 Source forum]

[[Utilisateur:Lol|Lol]] 23 septembre 2010 à 11:11 (EAT)

[[Catégorie:Paquets]]</text>
      <sha1>pfng9cbtx75pv1d8q93y632p68sgio9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2130</id>
      <parentid>2119</parentid>
      <timestamp>2010-09-26T07:41:34Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="5476">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;

DPKG est un utilitaire de base pour gérer les paquets Debian .deb

=== Commandes diverses avec dpkg ===

* Installer un paquet présent sur votre système:
 # dpkg -i Nom_du_paquet

* Supprimer un paquet:
 # dpkg -r Nom_du_paquet

* Supprimer un paquet même défectueux et marquer comme demandant une réinstallation:
 # dpkg -r --force-remove-reinstreq Nom_du_paquet

* Liste complète des paquets installés:
 $ dpkg -l

* Liste partielle des paquets installés:
 $ dpkg -l nom_du_paquet
 $ dpkg -l début_du_nom_du_paquet*
 $ dpkg -l *nom_partiel_du_paquet*

* Rechercher l’emplacement du fichier contenu dans un paquet et le nom de ce paquet:
 $ dpkg -S nom_partiel_du_fichier

* Connaître la liste des fichiers d’un paquet:
 $ dpkg -L nom_exact_du_paquet

* Informations complètes sur un paquet:
 $ dpkg -p nom_du_paquet

* Re-configurer un paquet:
 $ dpkg-reconfigure nom_exact_du_paquet

==== Astuce: ====

* Copier la configuration d’un système sur un autre : [[Reinstallation_rapide]]

* Automatiser le '''télé-chargement''' seulement des mises à jour tous les matins à 9h30 : (à placer dans un fichier dans /etc/cron.d)
 30 9 * * * (/usr/bin/apt-get update &amp;&amp; /usr/bin/apt-get -dy dist-upgrade)

=== Opération sur les versions ===

==== &quot;Geler et dégeler&quot; des paquets ====

DPKG permet de facilement opérer sur les versions des paquets.
Il peut être nécessaire par exemple de conserver un paquet dans une version, et d'empêcher sa mise à jour lors d'un apt-get dist-upgrade ou aptitude safe-upgrade
Il peut aussi être nécessaire de redescendre un paquet dans une version antérieure

Attention, les paquets mis en attente (hold) le seront tant que vous n'aurez pas levé le &quot;gel&quot;.
J'ai pris fluxbox dans les exemples suivants :

* Conserver un paquet en l'état

 # echo fluxbox hold|dpkg --set-selections
 
* Afficher les paquets conservés en l'état:

 # dpkg --get-selections | grep hold
 fluxbox						hold

* Lever la conservation en l'état

 # echo fluxbox install|dpkg --set-selections

==== Revenir à une version antérieure ====

Nous sommes sous Sid et souhaitons installer la version testing de fluxbox, et empêcher qu'elle ne soit mise-à-jour accidentellement: (nous allons geler sa version)
Les étapes de cet exemple utiliseront fluxbox :

:1) Dans votre sources.list vous avez testing et Sid activés

 # apt-get update
 # apt-get install fluxbox/testing
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Version choisie « 1.1.1+dfsg2-1 » (Debian:testing [amd64]) pour « fluxbox »
 Paquets suggérés :
   fluxconf fbpager fbdesk
 Paquets recommandés :
   xfonts-terminus
 Les paquets retenus suivants seront changés :
   fluxbox
 Les paquets suivants seront mis à une VERSION INFÉRIEURE :
   fluxbox
 0 mis à jour, 0 nouvellement installés, 1 remis à une version inférieure, 0 à enlever et 16 non mis à jour.
 Il est nécessaire de prendre 1 168ko dans les archives.
 Après cette opération, 639ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ? o
 Réception de : 1 http://ftp.fr.debian.org/debian/ testing/main fluxbox amd64 1.1.1+dfsg2-1 [1 168kB]
 1 168ko réceptionnés en 10s (111ko/s)                                                                                     
 Lecture des champs des paquets... Fait
 Lecture de l'état des paquets... Fait 
 Récupération des rapports de bogue... Fait  
 Analyse des informations Trouvé/Corrigé... Fait  
 dpkg : avertissement : dégradation (« downgrade ») de fluxbox depuis 1.1.1+git20100908.df2f51b-1 vers 1.1.1+dfsg2-1.
 (Lecture de la base de données... 173472 fichiers et répertoires déjà installés.)
 Préparation du remplacement de fluxbox 1.1.1+git20100908.df2f51b-1 (en utilisant .../fluxbox_1.1.1+dfsg2-1_amd64.deb) ...
 Dépaquetage de la mise à jour de fluxbox ...
 Traitement des actions différées (« triggers ») pour « man-db »...
 Traitement des actions différées (« triggers ») pour « menu »...
 Paramétrage de fluxbox (1.1.1+dfsg2-1) ...
 Installation de la nouvelle version du fichier de configuration /etc/X11/fluxbox/init ...
 Installation de la nouvelle version du fichier de configuration /etc/X11/fluxbox/keys ...
 Installation de la nouvelle version du fichier de configuration /etc/menu-methods/fluxbox ...
 Traitement des actions différées (« triggers ») pour « menu »...

:2) Nous commandons le gel de la version &quot;testing&quot; de fluxbox

 # echo fluxbox hold|dpkg --set-selections

Si nous faisons un apt-get dist-upgrade, APT ne proposera pas la mise à jour de fluxbox :

:3) Vous apprenez qu'une nouvelle version non boguée de fluxbox est entrée en Sid, vous souhaitez l'installer :

 # echo fluxbox install|dpkg --set-selections
 # apt-get update
 # apt-get install fluxbox

[http://www.debian-fr.org/viewtopic.php?f=8&amp;t=1969&amp;start=0 Source forum]

[[Utilisateur:Lol|Lol]] 23 septembre 2010 à 11:11 (EAT)

[[Catégorie:Paquets]]</text>
      <sha1>ej430tkchfgr0n5tt3ec2poqwdaezbh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2132</id>
      <parentid>2130</parentid>
      <timestamp>2010-09-29T06:20:47Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Commandes diverses avec dpkg */</comment>
      <text xml:space="preserve" bytes="5860">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;

DPKG est un utilitaire de base pour gérer les paquets Debian .deb

=== Commandes diverses avec dpkg ===

* Installer un paquet présent sur votre système:
 # dpkg -i Nom_du_paquet

* Forcer l'installation un paquet présent sur votre système en ignorant les dépendances.
:En général forcer l'installation d'un paquet '''N'EST PAS UNE BONNE IDéE'''...
 # dpkg -i --force-all Nom_du_paquet

* Installer un paquet d'une branche particulière (Nous supposons que la branche est déjà dans votre sources.list). 
 # apt-get install -t unstable Nom_du_paquet

* Supprimer un paquet:
 # dpkg -r Nom_du_paquet

* Supprimer un paquet '''même défectueux''' et marquer comme demandant une réinstallation:
 # dpkg -r --force-remove-reinstreq Nom_du_paquet

* Liste complète des paquets installés:
 $ dpkg -l

* Liste partielle des paquets installés:
 $ dpkg -l nom_du_paquet
 $ dpkg -l début_du_nom_du_paquet*
 $ dpkg -l *nom_partiel_du_paquet*

* Rechercher l’emplacement du fichier contenu dans un paquet et le nom de ce paquet:
 $ dpkg -S nom_partiel_du_fichier

* Connaître la liste des fichiers d’un paquet:
 $ dpkg -L nom_exact_du_paquet

* Informations complètes sur un paquet:
 $ dpkg -p nom_du_paquet

* Re-configurer un paquet:
 $ dpkg-reconfigure nom_exact_du_paquet

==== Astuce: ====

* Copier la configuration d’un système sur un autre : [[Reinstallation_rapide]]

* Automatiser le '''télé-chargement''' seulement des mises à jour tous les matins à 9h30 : (à placer dans un fichier dans /etc/cron.d)
 30 9 * * * (/usr/bin/apt-get update &amp;&amp; /usr/bin/apt-get -dy dist-upgrade)

=== Opération sur les versions ===

==== &quot;Geler et dégeler&quot; des paquets ====

DPKG permet de facilement opérer sur les versions des paquets.
Il peut être nécessaire par exemple de conserver un paquet dans une version, et d'empêcher sa mise à jour lors d'un apt-get dist-upgrade ou aptitude safe-upgrade
Il peut aussi être nécessaire de redescendre un paquet dans une version antérieure

Attention, les paquets mis en attente (hold) le seront tant que vous n'aurez pas levé le &quot;gel&quot;.
J'ai pris fluxbox dans les exemples suivants :

* Conserver un paquet en l'état

 # echo fluxbox hold|dpkg --set-selections
 
* Afficher les paquets conservés en l'état:

 # dpkg --get-selections | grep hold
 fluxbox						hold

* Lever la conservation en l'état

 # echo fluxbox install|dpkg --set-selections

==== Revenir à une version antérieure ====

Nous sommes sous Sid et souhaitons installer la version testing de fluxbox, et empêcher qu'elle ne soit mise-à-jour accidentellement: (nous allons geler sa version)
Les étapes de cet exemple utiliseront fluxbox :

:1) Dans votre sources.list vous avez testing et Sid activés

 # apt-get update
 # apt-get install fluxbox/testing
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Version choisie « 1.1.1+dfsg2-1 » (Debian:testing [amd64]) pour « fluxbox »
 Paquets suggérés :
   fluxconf fbpager fbdesk
 Paquets recommandés :
   xfonts-terminus
 Les paquets retenus suivants seront changés :
   fluxbox
 Les paquets suivants seront mis à une VERSION INFÉRIEURE :
   fluxbox
 0 mis à jour, 0 nouvellement installés, 1 remis à une version inférieure, 0 à enlever et 16 non mis à jour.
 Il est nécessaire de prendre 1 168ko dans les archives.
 Après cette opération, 639ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ? o
 Réception de : 1 http://ftp.fr.debian.org/debian/ testing/main fluxbox amd64 1.1.1+dfsg2-1 [1 168kB]
 1 168ko réceptionnés en 10s (111ko/s)                                                                                     
 Lecture des champs des paquets... Fait
 Lecture de l'état des paquets... Fait 
 Récupération des rapports de bogue... Fait  
 Analyse des informations Trouvé/Corrigé... Fait  
 dpkg : avertissement : dégradation (« downgrade ») de fluxbox depuis 1.1.1+git20100908.df2f51b-1 vers 1.1.1+dfsg2-1.
 (Lecture de la base de données... 173472 fichiers et répertoires déjà installés.)
 Préparation du remplacement de fluxbox 1.1.1+git20100908.df2f51b-1 (en utilisant .../fluxbox_1.1.1+dfsg2-1_amd64.deb) ...
 Dépaquetage de la mise à jour de fluxbox ...
 Traitement des actions différées (« triggers ») pour « man-db »...
 Traitement des actions différées (« triggers ») pour « menu »...
 Paramétrage de fluxbox (1.1.1+dfsg2-1) ...
 Installation de la nouvelle version du fichier de configuration /etc/X11/fluxbox/init ...
 Installation de la nouvelle version du fichier de configuration /etc/X11/fluxbox/keys ...
 Installation de la nouvelle version du fichier de configuration /etc/menu-methods/fluxbox ...
 Traitement des actions différées (« triggers ») pour « menu »...

:2) Nous commandons le gel de la version &quot;testing&quot; de fluxbox

 # echo fluxbox hold|dpkg --set-selections

Si nous faisons un apt-get dist-upgrade, APT ne proposera pas la mise à jour de fluxbox :

:3) Vous apprenez qu'une nouvelle version non boguée de fluxbox est entrée en Sid, vous souhaitez l'installer :

 # echo fluxbox install|dpkg --set-selections
 # apt-get update
 # apt-get install fluxbox

[http://www.debian-fr.org/viewtopic.php?f=8&amp;t=1969&amp;start=0 Source forum]

[[Utilisateur:Lol|Lol]] 23 septembre 2010 à 11:11 (EAT)

[[Catégorie:Paquets]]</text>
      <sha1>c2834nyon4h0gax2imjdlr82qs031z4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2133</id>
      <parentid>2132</parentid>
      <timestamp>2010-09-29T06:28:48Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="7078">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;

DPKG est un utilitaire de base pour gérer les paquets Debian .deb

=== Commandes diverses avec dpkg ===

* Installer un paquet présent sur votre système:
 # dpkg -i Nom_du_paquet

* Forcer l'installation un paquet présent sur votre système en ignorant les dépendances.
:En général forcer l'installation d'un paquet '''N'EST PAS UNE BONNE IDéE'''...
 # dpkg -i --force-all Nom_du_paquet

* Installer un paquet d'une branche particulière (Nous supposons que la branche est déjà dans votre sources.list). 
 # apt-get install -t unstable Nom_du_paquet

* Supprimer un paquet:
 # dpkg -r Nom_du_paquet

* Supprimer un paquet '''même défectueux''' et marquer comme demandant une réinstallation:
 # dpkg -r --force-remove-reinstreq Nom_du_paquet

* Liste complète des paquets installés:
 $ dpkg -l

* Liste partielle des paquets installés:
 $ dpkg -l nom_du_paquet
 $ dpkg -l début_du_nom_du_paquet*
 $ dpkg -l *nom_partiel_du_paquet*

* Rechercher l’emplacement du fichier contenu dans un paquet et le nom de ce paquet:
 $ dpkg -S nom_partiel_du_fichier

* Connaître la liste des fichiers d’un paquet:
 $ dpkg -L nom_exact_du_paquet

* Informations complètes sur un paquet:
 $ dpkg -p nom_du_paquet

* Re-configurer un paquet:
 $ dpkg-reconfigure nom_exact_du_paquet

* Lister la version d'un paquet installé 
 $ apt-cache policy linux-base | grep Installé 
  Installé : 2.6.36~rc5-1~experimental.1

* Chercher un paquets contenant un mot - nom, description ou version (ici &quot;2.6.36&quot;)
 $ COLUMNS=120 dpkg -l | grep 2.6.36 
 ii  configure-dsl            2.6.36.10                transitional dummy package
 ii  linux-base               2.6.36~rc5-1~experimenta Linux image base package
 ii  linux-headers-2.6.36-rc5 2.6.36~rc5-1~experimenta All header files for Linux 2.6.36 (meta-package)
 ii  linux-headers-2.6.36-rc5 2.6.36~rc5-1~experimenta All header files for Linux 2.6.36 (meta-package)
 ii  linux-headers-2.6.36-rc5 2.6.36~rc5-1~experimenta Header files for Linux 2.6.36-rc5-amd64
 ii  linux-headers-2.6.36-rc5 2.6.36~rc5-1~experimenta Common header files for Linux 2.6.36-rc5
 ii  linux-image-2.6.36-rc5-a 2.6.36~rc5-1~experimenta Linux 2.6.36-rc5 for 64-bit PCs
 ii  linux-kbuild-2.6.36      2.6.36-rc5~experimental. Kbuild infrastructure for Linux 2.6.36
 ii  linux-source-2.6.36      2.6.36~rc5-1~experimenta Linux kernel source for version 2.6.36 with Debian patches
 ii  linux-tools-2.6.36       2.6.36~rc5-1~experimenta Performance analysis tools for Linux 2.6.36-rc5

==== Astuce: ====

* Copier la configuration d’un système sur un autre : [[Reinstallation_rapide]]

* Automatiser le '''télé-chargement''' seulement des mises à jour tous les matins à 9h30 : (à placer dans un fichier dans /etc/cron.d)
 30 9 * * * (/usr/bin/apt-get update &amp;&amp; /usr/bin/apt-get -dy dist-upgrade)

=== Opération sur les versions ===

==== &quot;Geler et dégeler&quot; des paquets ====

DPKG permet de facilement opérer sur les versions des paquets.
Il peut être nécessaire par exemple de conserver un paquet dans une version, et d'empêcher sa mise à jour lors d'un apt-get dist-upgrade ou aptitude safe-upgrade
Il peut aussi être nécessaire de redescendre un paquet dans une version antérieure

Attention, les paquets mis en attente (hold) le seront tant que vous n'aurez pas levé le &quot;gel&quot;.
J'ai pris fluxbox dans les exemples suivants :

* Conserver un paquet en l'état

 # echo fluxbox hold|dpkg --set-selections
 
* Afficher les paquets conservés en l'état:

 # dpkg --get-selections | grep hold
 fluxbox						hold

* Lever la conservation en l'état

 # echo fluxbox install|dpkg --set-selections

==== Revenir à une version antérieure ====

Nous sommes sous Sid et souhaitons installer la version testing de fluxbox, et empêcher qu'elle ne soit mise-à-jour accidentellement: (nous allons geler sa version)
Les étapes de cet exemple utiliseront fluxbox :

:1) Dans votre sources.list vous avez testing et Sid activés

 # apt-get update
 # apt-get install fluxbox/testing
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Version choisie « 1.1.1+dfsg2-1 » (Debian:testing [amd64]) pour « fluxbox »
 Paquets suggérés :
   fluxconf fbpager fbdesk
 Paquets recommandés :
   xfonts-terminus
 Les paquets retenus suivants seront changés :
   fluxbox
 Les paquets suivants seront mis à une VERSION INFÉRIEURE :
   fluxbox
 0 mis à jour, 0 nouvellement installés, 1 remis à une version inférieure, 0 à enlever et 16 non mis à jour.
 Il est nécessaire de prendre 1 168ko dans les archives.
 Après cette opération, 639ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ? o
 Réception de : 1 http://ftp.fr.debian.org/debian/ testing/main fluxbox amd64 1.1.1+dfsg2-1 [1 168kB]
 1 168ko réceptionnés en 10s (111ko/s)                                                                                     
 Lecture des champs des paquets... Fait
 Lecture de l'état des paquets... Fait 
 Récupération des rapports de bogue... Fait  
 Analyse des informations Trouvé/Corrigé... Fait  
 dpkg : avertissement : dégradation (« downgrade ») de fluxbox depuis 1.1.1+git20100908.df2f51b-1 vers 1.1.1+dfsg2-1.
 (Lecture de la base de données... 173472 fichiers et répertoires déjà installés.)
 Préparation du remplacement de fluxbox 1.1.1+git20100908.df2f51b-1 (en utilisant .../fluxbox_1.1.1+dfsg2-1_amd64.deb) ...
 Dépaquetage de la mise à jour de fluxbox ...
 Traitement des actions différées (« triggers ») pour « man-db »...
 Traitement des actions différées (« triggers ») pour « menu »...
 Paramétrage de fluxbox (1.1.1+dfsg2-1) ...
 Installation de la nouvelle version du fichier de configuration /etc/X11/fluxbox/init ...
 Installation de la nouvelle version du fichier de configuration /etc/X11/fluxbox/keys ...
 Installation de la nouvelle version du fichier de configuration /etc/menu-methods/fluxbox ...
 Traitement des actions différées (« triggers ») pour « menu »...

:2) Nous commandons le gel de la version &quot;testing&quot; de fluxbox

 # echo fluxbox hold|dpkg --set-selections

Si nous faisons un apt-get dist-upgrade, APT ne proposera pas la mise à jour de fluxbox :

:3) Vous apprenez qu'une nouvelle version non boguée de fluxbox est entrée en Sid, vous souhaitez l'installer :

 # echo fluxbox install|dpkg --set-selections
 # apt-get update
 # apt-get install fluxbox

[http://www.debian-fr.org/viewtopic.php?f=8&amp;t=1969&amp;start=0 Source forum]

[[Utilisateur:Lol|Lol]] 23 septembre 2010 à 11:11 (EAT)

[[Catégorie:Paquets]]</text>
      <sha1>isk73j3jpisl6nx2tbuoliakwhd2b0p</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>DVD edition</title>
    <ns>0</ns>
    <id>1221</id>
    <revision>
      <id>5042</id>
      <timestamp>2013-03-03T14:15:44Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>ébauche</comment>
      <text xml:space="preserve" bytes="1629">{{Ébauche|L'extraction et la création de DVD audio/video}}

= L'extraction/création de DVD =

Cet article traitera plusieurs choses, dont:
* Prérequis pour la lecture/extraction d'un DVD
* L'extraction (rip) du DVD
* La création (authoring) d'un DVD

Cet article ne devrait pas parler d'utilisations type logiciels de lecture de DVD, ni de [[Edition_Video|l'édition video]] et des spécificités d'endocage. 

Sources du web à phagocyter/replacer:
* https://www.bunkus.org/videotools/mkvtoolnix/doc/mmg.html
* http://eng.anarchopedia.org/how_to_encode_video_to_OGG_Theora#Thoggen
* http://vobcopy.org/
* http://thoggen.net/git/index.html http://thoggen.git.sourceforge.net/git/gitweb.cgi?p=thoggen/thoggen
*

== Prérequis ==

La section &quot;DVD Playback&quot; de [http://wiki.debian.org/MultimediaCodecs cet article] du wiki Debian indique la voie, il est nécessaire d'installer libdvdcss2 pour lire (et donc extraire) certains DVD protégés par le cryptage CSS.

== Extraction ==

L'objectif serait de partir du DVD, pour obtenir  un fichier MKV (ou OGV) à la fin, avec audio en Ogg Vorbis et flux video en Ogg Theora.

Des outils:

* dvdbackup (inconvénient: comment rassembler les .VOB proprement ?)
* vobcopy (pas essayé)
* mmg (interface graphique pour les commands fournies par mkvtoolnix)
* ffmpeg2theora
* k3b (permet normalement l'extraction de DVDs)
* thoggen (n'est pas présent dans les dépots Debian, semble brèvement entretenu, espoir de le voir intégré dans les dépots ?)
* transcode (outil ligne de commande utilisé par k3b, pour réencoder la video)

== Création ==

Ca, j'me suis pas penché dessus.</text>
      <sha1>iv1gd3nrdua7jws4npuf330wqvm5oiw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5044</id>
      <parentid>5042</parentid>
      <timestamp>2013-03-03T14:25:20Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* L'extraction/création de DVD */</comment>
      <text xml:space="preserve" bytes="1725">{{Ébauche|L'extraction et la création de DVD audio/video}}

= L'extraction/création de DVD =

Cet article traitera plusieurs choses, dont:
* Prérequis pour la lecture/extraction d'un DVD
* L'extraction (rip) du DVD
* La création (authoring) d'un DVD

Cet article ne devrait pas parler d'utilisations type logiciels de lecture de DVD, ni de [[Edition_Video|l'édition video]] et des spécificités d'endocage. 

Notes/Sources du web à phagocyter/replacer:
* https://www.bunkus.org/videotools/mkvtoolnix/doc/mmg.html
* http://eng.anarchopedia.org/how_to_encode_video_to_OGG_Theora#Thoggen
* http://vobcopy.org/
* http://thoggen.net/git/index.html http://thoggen.git.sourceforge.net/git/gitweb.cgi?p=thoggen/thoggen
* https://wiki.xiph.org/TheoraSoftwareEncoders
* http://doc.ubuntu-fr.org/encodage_dvd_mkv


== Prérequis ==

La section &quot;DVD Playback&quot; de [http://wiki.debian.org/MultimediaCodecs cet article] du wiki Debian indique la voie, il est nécessaire d'installer libdvdcss2 pour lire (et donc extraire) certains DVD protégés par le cryptage CSS.

== Extraction ==

L'objectif serait de partir du DVD, pour obtenir  un fichier MKV (ou OGV) à la fin, avec audio en Ogg Vorbis et flux video en Ogg Theora.

Des outils:

* dvdbackup (inconvénient: comment rassembler les .VOB proprement ?)
* vobcopy (pas essayé)
* mmg (interface graphique pour les commands fournies par mkvtoolnix)
* ffmpeg2theora
* k3b (permet normalement l'extraction de DVDs)
* thoggen (n'est pas présent dans les dépots Debian, semble brèvement entretenu, espoir de le voir intégré dans les dépots ?)
* transcode (outil ligne de commande utilisé par k3b, pour réencoder la video)

== Création ==

Ca, j'me suis pas penché dessus.</text>
      <sha1>iwue0wimiktr5b8g6isfzm9xy1vcayf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5045</id>
      <parentid>5044</parentid>
      <timestamp>2013-03-03T15:32:29Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Extraction */</comment>
      <text xml:space="preserve" bytes="1759">{{Ébauche|L'extraction et la création de DVD audio/video}}

= L'extraction/création de DVD =

Cet article traitera plusieurs choses, dont:
* Prérequis pour la lecture/extraction d'un DVD
* L'extraction (rip) du DVD
* La création (authoring) d'un DVD

Cet article ne devrait pas parler d'utilisations type logiciels de lecture de DVD, ni de [[Edition_Video|l'édition video]] et des spécificités d'endocage. 

Notes/Sources du web à phagocyter/replacer:
* https://www.bunkus.org/videotools/mkvtoolnix/doc/mmg.html
* http://eng.anarchopedia.org/how_to_encode_video_to_OGG_Theora#Thoggen
* http://vobcopy.org/
* http://thoggen.net/git/index.html http://thoggen.git.sourceforge.net/git/gitweb.cgi?p=thoggen/thoggen
* https://wiki.xiph.org/TheoraSoftwareEncoders
* http://doc.ubuntu-fr.org/encodage_dvd_mkv


== Prérequis ==

La section &quot;DVD Playback&quot; de [http://wiki.debian.org/MultimediaCodecs cet article] du wiki Debian indique la voie, il est nécessaire d'installer libdvdcss2 pour lire (et donc extraire) certains DVD protégés par le cryptage CSS.

== Extraction ==

L'objectif serait de partir du DVD, pour obtenir  un fichier MKV (ou OGV) à la fin, avec audio en Ogg Vorbis et flux video en Ogg Theora.

Des outils:

* dvdbackup (inconvénient: comment rassembler les .VOB proprement ? cat 1.vob 2.vob 3.vob &gt; final.vob)
* vobcopy (pas essayé)
* mmg (interface graphique pour les commands fournies par mkvtoolnix)
* ffmpeg2theora
* k3b (permet normalement l'extraction de DVDs)
* thoggen (n'est pas présent dans les dépots Debian, semble brèvement entretenu, espoir de le voir intégré dans les dépots ?)
* transcode (outil ligne de commande utilisé par k3b, pour réencoder la video)

== Création ==

Ca, j'me suis pas penché dessus.</text>
      <sha1>6krdcaaku3t5da059f0zqfraevm0ckl</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5046</id>
      <parentid>5045</parentid>
      <timestamp>2013-03-05T19:24:25Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Extraction */</comment>
      <text xml:space="preserve" bytes="4160">{{Ébauche|L'extraction et la création de DVD audio/video}}

= L'extraction/création de DVD =

Cet article traitera plusieurs choses, dont:
* Prérequis pour la lecture/extraction d'un DVD
* L'extraction (rip) du DVD
* La création (authoring) d'un DVD

Cet article ne devrait pas parler d'utilisations type logiciels de lecture de DVD, ni de [[Edition_Video|l'édition video]] et des spécificités d'endocage. 

Notes/Sources du web à phagocyter/replacer:
* https://www.bunkus.org/videotools/mkvtoolnix/doc/mmg.html
* http://eng.anarchopedia.org/how_to_encode_video_to_OGG_Theora#Thoggen
* http://vobcopy.org/
* http://thoggen.net/git/index.html http://thoggen.git.sourceforge.net/git/gitweb.cgi?p=thoggen/thoggen
* https://wiki.xiph.org/TheoraSoftwareEncoders
* http://doc.ubuntu-fr.org/encodage_dvd_mkv


== Prérequis ==

La section &quot;DVD Playback&quot; de [http://wiki.debian.org/MultimediaCodecs cet article] du wiki Debian indique la voie, il est nécessaire d'installer libdvdcss2 pour lire (et donc extraire) certains DVD protégés par le cryptage CSS.

== Extraction ==

L'objectif serait de partir du DVD, pour obtenir  un fichier MKV (ou OGV) à la fin, avec audio en Ogg Vorbis et flux video en Ogg Theora.

Des outils:

* dvdbackup (inconvénient: comment rassembler les .VOB proprement ? cat 1.vob 2.vob 3.vob &gt; final.vob)
* vobcopy (pas essayé)
* mmg (interface graphique pour les commands fournies par mkvtoolnix)
* ffmpeg2theora
* k3b (permet normalement l'extraction de DVDs)
* thoggen (n'est pas présent dans les dépots Debian, semble brèvement entretenu, espoir de le voir intégré dans les dépots ?)
* transcode (outil ligne de commande utilisé par k3b, pour réencoder la video)

=== Extraire avec dvdbackup ===

&lt;code bash&gt;
# Créer un mirroir (-M) du DVD, affiche la progression (-p)
# (il est possible d'indiquer le périphérique à utiliser avec -i /dev/chemin_vers_dvd/ )
dvdbackup -M -p
&lt;/code&gt;

On obtient un bon gros répertoire nommé comme le DVD, avec de multiple .VOB et des fichiers .IFO.

=== Réassembler les .VOB ===

==== Réassembler (et encoder) les .VOB avec kdenlive ====

* Ouvrez kdenlive.
* Ajoutez les clips, uniquement les .VOB qui contiennent de la video et non pas les menus ou .VOB intermédiaires (les placer dans la piste video donne un temps infini et a fait planter kdenlive chez moi).
* Vous aurez selectionné le profil DVD PAL pour le projet
* Tentez un &quot;Rendu&quot;, et selectionnez DVD, il propose une resolution, qui convient.
* Choisissez Theora comme codec, affinez les réglages qui vous bottent, et lancez l'opération.

==== Réassembler les .VOB avec cat ====

Une méthode proposée consiste à simplement concaténer les fichiers avec 'cat'.

Attention: opération peu concluante chez moi. En effet, les .VOB contiennent une entête, et les réassembler comme une brute en les collant les uns au bout des autres ne tient pas compte de cela.

Chez moi, j'ai tenté:
&lt;code bash&gt;
cat VTS_01_1.VOB VTS_02_0.VOB VTS_02_1.VOB VTS_02_2.VOB VTS_02_3.VOB VTS_03_0.VOB VTS_03_1.VOB &gt; ../Phoque.vob
&lt;/code&gt;
On aurait aussi pu faire:
&lt;code bash&gt;
cat *.VOB &gt; ../LeDVD.vob
&lt;/code&gt;

=== Sous-titres et chapitres ===

Je me demande comment il est censé retrouver une indexation correcte, si on ne copie pas tous les VOB dans l'ordre. Je n'ai pas été fou, j'ai laissé tout dans l'ordre.
Bref, j'ignore les outils pour le moment.

=== Transcoder avec ffmpeg2theora ===

Chez moi, j'obtiens un frame sync error, d'où les soupçons sur la méthode d'assemblage des .VOB ci-dessus.

&lt;code bash&gt;
% ffmpeg2theora Phoque.vob 
[mpeg @ 0x1d8c740] max_analyze_duration reached
Input #0, mpeg, from 'Phoque.vob':
  Duration: 00:01:30.05, start: 0.233567, bitrate: 100560 kb/s
    Stream #0.0[0x1e0]: Video: mpeg2video (Main), yuv420p, 720x480 [PAR 8:9 DAR 4:3], 8500 kb/s, 23.98 fps, 59.94 tbr, 90k tbn, 59.94 tbc
    Stream #0.1[0x80]: Audio: ac3, 48000 Hz, stereo, s16, 384 kb/s
  Pixel Aspect Ratio: 0.89/1   Frame Aspect Ratio: 1.33/1

  0:00:32.97 audio: 66kbps video: 104kbps, ET: 00:01:16, est. size: 1.8 MB   [ac3 @ 0x1d90e20] frame sync error
&lt;/code&gt;

== Création ==

Ca, j'me suis pas penché dessus.</text>
      <sha1>k7e9ugjq4ppe91gbxeeqak4wyhk6ovw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5047</id>
      <parentid>5046</parentid>
      <timestamp>2013-03-05T20:36:27Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Réassembler les .VOB avec cat */</comment>
      <text xml:space="preserve" bytes="4255">{{Ébauche|L'extraction et la création de DVD audio/video}}

= L'extraction/création de DVD =

Cet article traitera plusieurs choses, dont:
* Prérequis pour la lecture/extraction d'un DVD
* L'extraction (rip) du DVD
* La création (authoring) d'un DVD

Cet article ne devrait pas parler d'utilisations type logiciels de lecture de DVD, ni de [[Edition_Video|l'édition video]] et des spécificités d'endocage. 

Notes/Sources du web à phagocyter/replacer:
* https://www.bunkus.org/videotools/mkvtoolnix/doc/mmg.html
* http://eng.anarchopedia.org/how_to_encode_video_to_OGG_Theora#Thoggen
* http://vobcopy.org/
* http://thoggen.net/git/index.html http://thoggen.git.sourceforge.net/git/gitweb.cgi?p=thoggen/thoggen
* https://wiki.xiph.org/TheoraSoftwareEncoders
* http://doc.ubuntu-fr.org/encodage_dvd_mkv


== Prérequis ==

La section &quot;DVD Playback&quot; de [http://wiki.debian.org/MultimediaCodecs cet article] du wiki Debian indique la voie, il est nécessaire d'installer libdvdcss2 pour lire (et donc extraire) certains DVD protégés par le cryptage CSS.

== Extraction ==

L'objectif serait de partir du DVD, pour obtenir  un fichier MKV (ou OGV) à la fin, avec audio en Ogg Vorbis et flux video en Ogg Theora.

Des outils:

* dvdbackup (inconvénient: comment rassembler les .VOB proprement ? cat 1.vob 2.vob 3.vob &gt; final.vob)
* vobcopy (pas essayé)
* mmg (interface graphique pour les commands fournies par mkvtoolnix)
* ffmpeg2theora
* k3b (permet normalement l'extraction de DVDs)
* thoggen (n'est pas présent dans les dépots Debian, semble brèvement entretenu, espoir de le voir intégré dans les dépots ?)
* transcode (outil ligne de commande utilisé par k3b, pour réencoder la video)

=== Extraire avec dvdbackup ===

&lt;code bash&gt;
# Créer un mirroir (-M) du DVD, affiche la progression (-p)
# (il est possible d'indiquer le périphérique à utiliser avec -i /dev/chemin_vers_dvd/ )
dvdbackup -M -p
&lt;/code&gt;

On obtient un bon gros répertoire nommé comme le DVD, avec de multiple .VOB et des fichiers .IFO.

=== Réassembler les .VOB ===

==== Réassembler (et encoder) les .VOB avec kdenlive ====

* Ouvrez kdenlive.
* Ajoutez les clips, uniquement les .VOB qui contiennent de la video et non pas les menus ou .VOB intermédiaires (les placer dans la piste video donne un temps infini et a fait planter kdenlive chez moi).
* Vous aurez selectionné le profil DVD PAL pour le projet
* Tentez un &quot;Rendu&quot;, et selectionnez DVD, il propose une resolution, qui convient.
* Choisissez Theora comme codec, affinez les réglages qui vous bottent, et lancez l'opération.

==== Réassembler les .VOB avec cat ====

[http://superuser.com/questions/49248/vob-merging-what-command-line-tool-is-recommended-linux Une méthode proposée] consiste à simplement concaténer les fichiers avec 'cat'.

Attention: opération peu concluante chez moi. En effet, les .VOB contiennent une entête, et les réassembler comme une brute en les collant les uns au bout des autres ne tient pas compte de cela.

Chez moi, j'ai tenté:
&lt;code bash&gt;
cat VTS_01_1.VOB VTS_02_0.VOB VTS_02_1.VOB VTS_02_2.VOB VTS_02_3.VOB VTS_03_0.VOB VTS_03_1.VOB &gt; ../Phoque.vob
&lt;/code&gt;
On aurait aussi pu faire:
&lt;code bash&gt;
cat *.VOB &gt; ../LeDVD.vob
&lt;/code&gt;

=== Sous-titres et chapitres ===

Je me demande comment il est censé retrouver une indexation correcte, si on ne copie pas tous les VOB dans l'ordre. Je n'ai pas été fou, j'ai laissé tout dans l'ordre.
Bref, j'ignore les outils pour le moment.

=== Transcoder avec ffmpeg2theora ===

Chez moi, j'obtiens un frame sync error, d'où les soupçons sur la méthode d'assemblage des .VOB ci-dessus.

&lt;code bash&gt;
% ffmpeg2theora Phoque.vob 
[mpeg @ 0x1d8c740] max_analyze_duration reached
Input #0, mpeg, from 'Phoque.vob':
  Duration: 00:01:30.05, start: 0.233567, bitrate: 100560 kb/s
    Stream #0.0[0x1e0]: Video: mpeg2video (Main), yuv420p, 720x480 [PAR 8:9 DAR 4:3], 8500 kb/s, 23.98 fps, 59.94 tbr, 90k tbn, 59.94 tbc
    Stream #0.1[0x80]: Audio: ac3, 48000 Hz, stereo, s16, 384 kb/s
  Pixel Aspect Ratio: 0.89/1   Frame Aspect Ratio: 1.33/1

  0:00:32.97 audio: 66kbps video: 104kbps, ET: 00:01:16, est. size: 1.8 MB   [ac3 @ 0x1d90e20] frame sync error
&lt;/code&gt;

== Création ==

Ca, j'me suis pas penché dessus.</text>
      <sha1>o7tjtnpjp7ichpyhu70r8d4q11a8377</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5048</id>
      <parentid>5047</parentid>
      <timestamp>2013-03-05T22:28:04Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Sous-titres et chapitres */</comment>
      <text xml:space="preserve" bytes="4283">{{Ébauche|L'extraction et la création de DVD audio/video}}

= L'extraction/création de DVD =

Cet article traitera plusieurs choses, dont:
* Prérequis pour la lecture/extraction d'un DVD
* L'extraction (rip) du DVD
* La création (authoring) d'un DVD

Cet article ne devrait pas parler d'utilisations type logiciels de lecture de DVD, ni de [[Edition_Video|l'édition video]] et des spécificités d'endocage. 

Notes/Sources du web à phagocyter/replacer:
* https://www.bunkus.org/videotools/mkvtoolnix/doc/mmg.html
* http://eng.anarchopedia.org/how_to_encode_video_to_OGG_Theora#Thoggen
* http://vobcopy.org/
* http://thoggen.net/git/index.html http://thoggen.git.sourceforge.net/git/gitweb.cgi?p=thoggen/thoggen
* https://wiki.xiph.org/TheoraSoftwareEncoders
* http://doc.ubuntu-fr.org/encodage_dvd_mkv


== Prérequis ==

La section &quot;DVD Playback&quot; de [http://wiki.debian.org/MultimediaCodecs cet article] du wiki Debian indique la voie, il est nécessaire d'installer libdvdcss2 pour lire (et donc extraire) certains DVD protégés par le cryptage CSS.

== Extraction ==

L'objectif serait de partir du DVD, pour obtenir  un fichier MKV (ou OGV) à la fin, avec audio en Ogg Vorbis et flux video en Ogg Theora.

Des outils:

* dvdbackup (inconvénient: comment rassembler les .VOB proprement ? cat 1.vob 2.vob 3.vob &gt; final.vob)
* vobcopy (pas essayé)
* mmg (interface graphique pour les commands fournies par mkvtoolnix)
* ffmpeg2theora
* k3b (permet normalement l'extraction de DVDs)
* thoggen (n'est pas présent dans les dépots Debian, semble brèvement entretenu, espoir de le voir intégré dans les dépots ?)
* transcode (outil ligne de commande utilisé par k3b, pour réencoder la video)

=== Extraire avec dvdbackup ===

&lt;code bash&gt;
# Créer un mirroir (-M) du DVD, affiche la progression (-p)
# (il est possible d'indiquer le périphérique à utiliser avec -i /dev/chemin_vers_dvd/ )
dvdbackup -M -p
&lt;/code&gt;

On obtient un bon gros répertoire nommé comme le DVD, avec de multiple .VOB et des fichiers .IFO.

=== Réassembler les .VOB ===

==== Réassembler (et encoder) les .VOB avec kdenlive ====

* Ouvrez kdenlive.
* Ajoutez les clips, uniquement les .VOB qui contiennent de la video et non pas les menus ou .VOB intermédiaires (les placer dans la piste video donne un temps infini et a fait planter kdenlive chez moi).
* Vous aurez selectionné le profil DVD PAL pour le projet
* Tentez un &quot;Rendu&quot;, et selectionnez DVD, il propose une resolution, qui convient.
* Choisissez Theora comme codec, affinez les réglages qui vous bottent, et lancez l'opération.

==== Réassembler les .VOB avec cat ====

[http://superuser.com/questions/49248/vob-merging-what-command-line-tool-is-recommended-linux Une méthode proposée] consiste à simplement concaténer les fichiers avec 'cat'.

Attention: opération peu concluante chez moi. En effet, les .VOB contiennent une entête, et les réassembler comme une brute en les collant les uns au bout des autres ne tient pas compte de cela.

Chez moi, j'ai tenté:
&lt;code bash&gt;
cat VTS_01_1.VOB VTS_02_0.VOB VTS_02_1.VOB VTS_02_2.VOB VTS_02_3.VOB VTS_03_0.VOB VTS_03_1.VOB &gt; ../Phoque.vob
&lt;/code&gt;
On aurait aussi pu faire:
&lt;code bash&gt;
cat *.VOB &gt; ../LeDVD.vob
&lt;/code&gt;

=== Sous-titres et chapitres ===

Le hic, c'est que si je ne m'abuse, la jointure du .VOB fait perdre l'indexation. Et puis, comment les sous-titres sont ils tirés/exploités ?
Bref, j'ignore les outils pour le moment.

Voir aussi: http://wiki.debian.org/Multimedia/Subtitle

=== Transcoder avec ffmpeg2theora ===

Chez moi, j'obtiens un frame sync error, d'où les soupçons sur la méthode d'assemblage des .VOB ci-dessus.

&lt;code bash&gt;
% ffmpeg2theora Phoque.vob 
[mpeg @ 0x1d8c740] max_analyze_duration reached
Input #0, mpeg, from 'Phoque.vob':
  Duration: 00:01:30.05, start: 0.233567, bitrate: 100560 kb/s
    Stream #0.0[0x1e0]: Video: mpeg2video (Main), yuv420p, 720x480 [PAR 8:9 DAR 4:3], 8500 kb/s, 23.98 fps, 59.94 tbr, 90k tbn, 59.94 tbc
    Stream #0.1[0x80]: Audio: ac3, 48000 Hz, stereo, s16, 384 kb/s
  Pixel Aspect Ratio: 0.89/1   Frame Aspect Ratio: 1.33/1

  0:00:32.97 audio: 66kbps video: 104kbps, ET: 00:01:16, est. size: 1.8 MB   [ac3 @ 0x1d90e20] frame sync error
&lt;/code&gt;

== Création ==

Ca, j'me suis pas penché dessus.</text>
      <sha1>2f6n6mltpxc5uyziwhgf4ln78amj6os</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5173</id>
      <parentid>5048</parentid>
      <timestamp>2013-05-14T13:14:50Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* L'extraction/création de DVD */ lxdvdrip</comment>
      <text xml:space="preserve" bytes="4382">{{Ébauche|L'extraction et la création de DVD audio/video}}

= L'extraction/création de DVD =

Cet article traitera plusieurs choses, dont:
* Prérequis pour la lecture/extraction d'un DVD
* L'extraction (rip) du DVD
* La création (authoring) d'un DVD

Cet article ne devrait pas parler d'utilisations type logiciels de lecture de DVD, ni de [[Edition_Video|l'édition video]] et des spécificités d'endocage. 

Notes/Sources du web à phagocyter/replacer:
* https://www.bunkus.org/videotools/mkvtoolnix/doc/mmg.html
* http://eng.anarchopedia.org/how_to_encode_video_to_OGG_Theora#Thoggen
* http://vobcopy.org/
* http://thoggen.net/git/index.html http://thoggen.git.sourceforge.net/git/gitweb.cgi?p=thoggen/thoggen
* https://wiki.xiph.org/TheoraSoftwareEncoders
* http://doc.ubuntu-fr.org/encodage_dvd_mkv
* '''https://www.debian-fr.org/les-meilleurs-logiciels-console-t21796-75.html#p297386''', lxdvdrip


== Prérequis ==

La section &quot;DVD Playback&quot; de [http://wiki.debian.org/MultimediaCodecs cet article] du wiki Debian indique la voie, il est nécessaire d'installer libdvdcss2 pour lire (et donc extraire) certains DVD protégés par le cryptage CSS.

== Extraction ==

L'objectif serait de partir du DVD, pour obtenir  un fichier MKV (ou OGV) à la fin, avec audio en Ogg Vorbis et flux video en Ogg Theora.

Des outils:

* dvdbackup (inconvénient: comment rassembler les .VOB proprement ? cat 1.vob 2.vob 3.vob &gt; final.vob)
* vobcopy (pas essayé)
* mmg (interface graphique pour les commands fournies par mkvtoolnix)
* ffmpeg2theora
* k3b (permet normalement l'extraction de DVDs)
* thoggen (n'est pas présent dans les dépots Debian, semble brèvement entretenu, espoir de le voir intégré dans les dépots ?)
* transcode (outil ligne de commande utilisé par k3b, pour réencoder la video)

=== Extraire avec dvdbackup ===

&lt;code bash&gt;
# Créer un mirroir (-M) du DVD, affiche la progression (-p)
# (il est possible d'indiquer le périphérique à utiliser avec -i /dev/chemin_vers_dvd/ )
dvdbackup -M -p
&lt;/code&gt;

On obtient un bon gros répertoire nommé comme le DVD, avec de multiple .VOB et des fichiers .IFO.

=== Réassembler les .VOB ===

==== Réassembler (et encoder) les .VOB avec kdenlive ====

* Ouvrez kdenlive.
* Ajoutez les clips, uniquement les .VOB qui contiennent de la video et non pas les menus ou .VOB intermédiaires (les placer dans la piste video donne un temps infini et a fait planter kdenlive chez moi).
* Vous aurez selectionné le profil DVD PAL pour le projet
* Tentez un &quot;Rendu&quot;, et selectionnez DVD, il propose une resolution, qui convient.
* Choisissez Theora comme codec, affinez les réglages qui vous bottent, et lancez l'opération.

==== Réassembler les .VOB avec cat ====

[http://superuser.com/questions/49248/vob-merging-what-command-line-tool-is-recommended-linux Une méthode proposée] consiste à simplement concaténer les fichiers avec 'cat'.

Attention: opération peu concluante chez moi. En effet, les .VOB contiennent une entête, et les réassembler comme une brute en les collant les uns au bout des autres ne tient pas compte de cela.

Chez moi, j'ai tenté:
&lt;code bash&gt;
cat VTS_01_1.VOB VTS_02_0.VOB VTS_02_1.VOB VTS_02_2.VOB VTS_02_3.VOB VTS_03_0.VOB VTS_03_1.VOB &gt; ../Phoque.vob
&lt;/code&gt;
On aurait aussi pu faire:
&lt;code bash&gt;
cat *.VOB &gt; ../LeDVD.vob
&lt;/code&gt;

=== Sous-titres et chapitres ===

Le hic, c'est que si je ne m'abuse, la jointure du .VOB fait perdre l'indexation. Et puis, comment les sous-titres sont ils tirés/exploités ?
Bref, j'ignore les outils pour le moment.

Voir aussi: http://wiki.debian.org/Multimedia/Subtitle

=== Transcoder avec ffmpeg2theora ===

Chez moi, j'obtiens un frame sync error, d'où les soupçons sur la méthode d'assemblage des .VOB ci-dessus.

&lt;code bash&gt;
% ffmpeg2theora Phoque.vob 
[mpeg @ 0x1d8c740] max_analyze_duration reached
Input #0, mpeg, from 'Phoque.vob':
  Duration: 00:01:30.05, start: 0.233567, bitrate: 100560 kb/s
    Stream #0.0[0x1e0]: Video: mpeg2video (Main), yuv420p, 720x480 [PAR 8:9 DAR 4:3], 8500 kb/s, 23.98 fps, 59.94 tbr, 90k tbn, 59.94 tbc
    Stream #0.1[0x80]: Audio: ac3, 48000 Hz, stereo, s16, 384 kb/s
  Pixel Aspect Ratio: 0.89/1   Frame Aspect Ratio: 1.33/1

  0:00:32.97 audio: 66kbps video: 104kbps, ET: 00:01:16, est. size: 1.8 MB   [ac3 @ 0x1d90e20] frame sync error
&lt;/code&gt;

== Création ==

Ca, j'me suis pas penché dessus.</text>
      <sha1>qs7k80vzixladg58d08optxl7q597a0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5175</id>
      <parentid>5173</parentid>
      <timestamp>2013-05-14T13:22:13Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* L'extraction/création de DVD */ lxdvdrip remarque</comment>
      <text xml:space="preserve" bytes="4406">{{Ébauche|L'extraction et la création de DVD audio/video}}

= L'extraction/création de DVD =

Cet article traitera plusieurs choses, dont:
* Prérequis pour la lecture/extraction d'un DVD
* L'extraction (rip) du DVD
* La création (authoring) d'un DVD

Cet article ne devrait pas parler d'utilisations type logiciels de lecture de DVD, ni de [[Edition_Video|l'édition video]] et des spécificités d'endocage. 

Notes/Sources du web à phagocyter/replacer:
* https://www.bunkus.org/videotools/mkvtoolnix/doc/mmg.html
* http://eng.anarchopedia.org/how_to_encode_video_to_OGG_Theora#Thoggen
* http://vobcopy.org/
* http://thoggen.net/git/index.html http://thoggen.git.sourceforge.net/git/gitweb.cgi?p=thoggen/thoggen
* https://wiki.xiph.org/TheoraSoftwareEncoders
* http://doc.ubuntu-fr.org/encodage_dvd_mkv
* https://www.debian-fr.org/les-meilleurs-logiciels-console-t21796-75.html#p297386, lxdvdrip est absent des dépots Debian


== Prérequis ==

La section &quot;DVD Playback&quot; de [http://wiki.debian.org/MultimediaCodecs cet article] du wiki Debian indique la voie, il est nécessaire d'installer libdvdcss2 pour lire (et donc extraire) certains DVD protégés par le cryptage CSS.

== Extraction ==

L'objectif serait de partir du DVD, pour obtenir  un fichier MKV (ou OGV) à la fin, avec audio en Ogg Vorbis et flux video en Ogg Theora.

Des outils:

* dvdbackup (inconvénient: comment rassembler les .VOB proprement ? cat 1.vob 2.vob 3.vob &gt; final.vob)
* vobcopy (pas essayé)
* mmg (interface graphique pour les commands fournies par mkvtoolnix)
* ffmpeg2theora
* k3b (permet normalement l'extraction de DVDs)
* thoggen (n'est pas présent dans les dépots Debian, semble brèvement entretenu, espoir de le voir intégré dans les dépots ?)
* transcode (outil ligne de commande utilisé par k3b, pour réencoder la video)

=== Extraire avec dvdbackup ===

&lt;code bash&gt;
# Créer un mirroir (-M) du DVD, affiche la progression (-p)
# (il est possible d'indiquer le périphérique à utiliser avec -i /dev/chemin_vers_dvd/ )
dvdbackup -M -p
&lt;/code&gt;

On obtient un bon gros répertoire nommé comme le DVD, avec de multiple .VOB et des fichiers .IFO.

=== Réassembler les .VOB ===

==== Réassembler (et encoder) les .VOB avec kdenlive ====

* Ouvrez kdenlive.
* Ajoutez les clips, uniquement les .VOB qui contiennent de la video et non pas les menus ou .VOB intermédiaires (les placer dans la piste video donne un temps infini et a fait planter kdenlive chez moi).
* Vous aurez selectionné le profil DVD PAL pour le projet
* Tentez un &quot;Rendu&quot;, et selectionnez DVD, il propose une resolution, qui convient.
* Choisissez Theora comme codec, affinez les réglages qui vous bottent, et lancez l'opération.

==== Réassembler les .VOB avec cat ====

[http://superuser.com/questions/49248/vob-merging-what-command-line-tool-is-recommended-linux Une méthode proposée] consiste à simplement concaténer les fichiers avec 'cat'.

Attention: opération peu concluante chez moi. En effet, les .VOB contiennent une entête, et les réassembler comme une brute en les collant les uns au bout des autres ne tient pas compte de cela.

Chez moi, j'ai tenté:
&lt;code bash&gt;
cat VTS_01_1.VOB VTS_02_0.VOB VTS_02_1.VOB VTS_02_2.VOB VTS_02_3.VOB VTS_03_0.VOB VTS_03_1.VOB &gt; ../Phoque.vob
&lt;/code&gt;
On aurait aussi pu faire:
&lt;code bash&gt;
cat *.VOB &gt; ../LeDVD.vob
&lt;/code&gt;

=== Sous-titres et chapitres ===

Le hic, c'est que si je ne m'abuse, la jointure du .VOB fait perdre l'indexation. Et puis, comment les sous-titres sont ils tirés/exploités ?
Bref, j'ignore les outils pour le moment.

Voir aussi: http://wiki.debian.org/Multimedia/Subtitle

=== Transcoder avec ffmpeg2theora ===

Chez moi, j'obtiens un frame sync error, d'où les soupçons sur la méthode d'assemblage des .VOB ci-dessus.

&lt;code bash&gt;
% ffmpeg2theora Phoque.vob 
[mpeg @ 0x1d8c740] max_analyze_duration reached
Input #0, mpeg, from 'Phoque.vob':
  Duration: 00:01:30.05, start: 0.233567, bitrate: 100560 kb/s
    Stream #0.0[0x1e0]: Video: mpeg2video (Main), yuv420p, 720x480 [PAR 8:9 DAR 4:3], 8500 kb/s, 23.98 fps, 59.94 tbr, 90k tbn, 59.94 tbc
    Stream #0.1[0x80]: Audio: ac3, 48000 Hz, stereo, s16, 384 kb/s
  Pixel Aspect Ratio: 0.89/1   Frame Aspect Ratio: 1.33/1

  0:00:32.97 audio: 66kbps video: 104kbps, ET: 00:01:16, est. size: 1.8 MB   [ac3 @ 0x1d90e20] frame sync error
&lt;/code&gt;

== Création ==

Ca, j'me suis pas penché dessus.</text>
      <sha1>obt9ihgbmfun2r3ehzmpkpqqfbcz0bo</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5454</id>
      <parentid>5175</parentid>
      <timestamp>2013-11-26T15:55:18Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Prérequis */ + MàJ indics libdvdcss</comment>
      <text xml:space="preserve" bytes="4729">{{Ébauche|L'extraction et la création de DVD audio/video}}

= L'extraction/création de DVD =

Cet article traitera plusieurs choses, dont:
* Prérequis pour la lecture/extraction d'un DVD
* L'extraction (rip) du DVD
* La création (authoring) d'un DVD

Cet article ne devrait pas parler d'utilisations type logiciels de lecture de DVD, ni de [[Edition_Video|l'édition video]] et des spécificités d'endocage. 

Notes/Sources du web à phagocyter/replacer:
* https://www.bunkus.org/videotools/mkvtoolnix/doc/mmg.html
* http://eng.anarchopedia.org/how_to_encode_video_to_OGG_Theora#Thoggen
* http://vobcopy.org/
* http://thoggen.net/git/index.html http://thoggen.git.sourceforge.net/git/gitweb.cgi?p=thoggen/thoggen
* https://wiki.xiph.org/TheoraSoftwareEncoders
* http://doc.ubuntu-fr.org/encodage_dvd_mkv
* https://www.debian-fr.org/les-meilleurs-logiciels-console-t21796-75.html#p297386, lxdvdrip est absent des dépots Debian


== Prérequis ==

=== Installer libdvdcss2 ===

La section &quot;DVD&quot; de [https://wiki.debian.org/CDDVD#DVD cet article] du wiki Debian indique la voie, il est nécessaire d'installer libdvdcss2 pour lire (et donc extraire) certains DVD protégés par le cryptage CSS.

En résumé, plusieurs solutions au choix:
* Installer le .deb [http://download.videolan.org/debian fourni par le projet videolan]
* Compiler libdvdcss depuis [http://download.videolan.org/pub/libdvdcss/ les sources de videolan]
* Installer le .deb fourni par [http://deb-multimedia.org deb-multimedia.org]

== Extraction ==

L'objectif serait de partir du DVD, pour obtenir  un fichier MKV (ou OGV) à la fin, avec audio en Ogg Vorbis et flux video en Ogg Theora.

Des outils:

* dvdbackup (inconvénient: comment rassembler les .VOB proprement ? cat 1.vob 2.vob 3.vob &gt; final.vob)
* vobcopy (pas essayé)
* mmg (interface graphique pour les commands fournies par mkvtoolnix)
* ffmpeg2theora
* k3b (permet normalement l'extraction de DVDs)
* thoggen (n'est pas présent dans les dépots Debian, semble brèvement entretenu, espoir de le voir intégré dans les dépots ?)
* transcode (outil ligne de commande utilisé par k3b, pour réencoder la video)

=== Extraire avec dvdbackup ===

&lt;code bash&gt;
# Créer un mirroir (-M) du DVD, affiche la progression (-p)
# (il est possible d'indiquer le périphérique à utiliser avec -i /dev/chemin_vers_dvd/ )
dvdbackup -M -p
&lt;/code&gt;

On obtient un bon gros répertoire nommé comme le DVD, avec de multiple .VOB et des fichiers .IFO.

=== Réassembler les .VOB ===

==== Réassembler (et encoder) les .VOB avec kdenlive ====

* Ouvrez kdenlive.
* Ajoutez les clips, uniquement les .VOB qui contiennent de la video et non pas les menus ou .VOB intermédiaires (les placer dans la piste video donne un temps infini et a fait planter kdenlive chez moi).
* Vous aurez selectionné le profil DVD PAL pour le projet
* Tentez un &quot;Rendu&quot;, et selectionnez DVD, il propose une resolution, qui convient.
* Choisissez Theora comme codec, affinez les réglages qui vous bottent, et lancez l'opération.

==== Réassembler les .VOB avec cat ====

[http://superuser.com/questions/49248/vob-merging-what-command-line-tool-is-recommended-linux Une méthode proposée] consiste à simplement concaténer les fichiers avec 'cat'.

Attention: opération peu concluante chez moi. En effet, les .VOB contiennent une entête, et les réassembler comme une brute en les collant les uns au bout des autres ne tient pas compte de cela.

Chez moi, j'ai tenté:
&lt;code bash&gt;
cat VTS_01_1.VOB VTS_02_0.VOB VTS_02_1.VOB VTS_02_2.VOB VTS_02_3.VOB VTS_03_0.VOB VTS_03_1.VOB &gt; ../Phoque.vob
&lt;/code&gt;
On aurait aussi pu faire:
&lt;code bash&gt;
cat *.VOB &gt; ../LeDVD.vob
&lt;/code&gt;

=== Sous-titres et chapitres ===

Le hic, c'est que si je ne m'abuse, la jointure du .VOB fait perdre l'indexation. Et puis, comment les sous-titres sont ils tirés/exploités ?
Bref, j'ignore les outils pour le moment.

Voir aussi: http://wiki.debian.org/Multimedia/Subtitle

=== Transcoder avec ffmpeg2theora ===

Chez moi, j'obtiens un frame sync error, d'où les soupçons sur la méthode d'assemblage des .VOB ci-dessus.

&lt;code bash&gt;
% ffmpeg2theora Phoque.vob 
[mpeg @ 0x1d8c740] max_analyze_duration reached
Input #0, mpeg, from 'Phoque.vob':
  Duration: 00:01:30.05, start: 0.233567, bitrate: 100560 kb/s
    Stream #0.0[0x1e0]: Video: mpeg2video (Main), yuv420p, 720x480 [PAR 8:9 DAR 4:3], 8500 kb/s, 23.98 fps, 59.94 tbr, 90k tbn, 59.94 tbc
    Stream #0.1[0x80]: Audio: ac3, 48000 Hz, stereo, s16, 384 kb/s
  Pixel Aspect Ratio: 0.89/1   Frame Aspect Ratio: 1.33/1

  0:00:32.97 audio: 66kbps video: 104kbps, ET: 00:01:16, est. size: 1.8 MB   [ac3 @ 0x1d90e20] frame sync error
&lt;/code&gt;

== Création ==

Ca, j'me suis pas penché dessus.</text>
      <sha1>0wa73ekdtdnzaxznxs95rrfqiakn4uk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5594</id>
      <parentid>5454</parentid>
      <timestamp>2014-04-23T20:37:37Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>expérience k3b + divers</comment>
      <text xml:space="preserve" bytes="6328">{{Ébauche|L'extraction et la création de DVD audio/video}}

= L'extraction/création de DVD =

Cet article traitera plusieurs choses, dont:
* Prérequis pour la lecture/extraction d'un DVD
* L'extraction (rip) du DVD
* La création (authoring) d'un DVD

Cet article ne devrait pas parler d'utilisations type logiciels de lecture de DVD, ni de [[Edition_Video|l'édition video]] et des spécificités d'endocage. 

Notes/Sources du web à phagocyter/replacer:
* https://www.bunkus.org/videotools/mkvtoolnix/doc/mmg.html
* http://eng.anarchopedia.org/how_to_encode_video_to_OGG_Theora#Thoggen
* http://vobcopy.org/
* http://thoggen.net/git/index.html http://thoggen.git.sourceforge.net/git/gitweb.cgi?p=thoggen/thoggen
* https://wiki.xiph.org/TheoraSoftwareEncoders
* http://doc.ubuntu-fr.org/encodage_dvd_mkv
* https://www.debian-fr.org/les-meilleurs-logiciels-console-t21796-75.html#p297386, lxdvdrip est absent des dépots Debian


== Prérequis ==

=== Installer libdvdcss2 ===

La section &quot;DVD&quot; de [https://wiki.debian.org/CDDVD#DVD cet article] du wiki Debian indique la voie, il est nécessaire d'installer libdvdcss2 pour lire (et donc extraire) certains DVD protégés par le cryptage CSS.

En résumé, plusieurs solutions au choix:
* Installer le .deb [http://download.videolan.org/debian fourni par le projet videolan]
* Compiler libdvdcss depuis [http://download.videolan.org/pub/libdvdcss/ les sources de videolan]
* Installer le .deb fourni par [http://deb-multimedia.org deb-multimedia.org]

== Extraction ==

L'objectif serait de partir du DVD, pour obtenir  un fichier MKV (ou OGV) à la fin, avec audio en Ogg Vorbis et flux video en Ogg Theora.

Des outils:

* dvdbackup (inconvénient: comment rassembler les .VOB proprement ? cat 1.vob 2.vob 3.vob &gt; final.vob)
* dvd::rip https://wiki.debian.org/fr/DVD ; bien que la page du wiki Debian en parle, n'existe plus dans les dépots
* dvdwizard (pas essayé) https://packages.debian.org/jessie/dvdwizard ; introduit depuis Jessie, à tenter ?
* vobcopy (pas essayé)
* mmg (interface graphique pour les commands fournies par mkvtoolnix)
* ffmpeg2theora
* k3b (permet normalement l'extraction de DVDs)
* thoggen (n'est pas présent dans les dépots Debian, semble brèvement entretenu, espoir de le voir intégré dans les dépots ?)
* transcode (outil ligne de commande utilisé par k3b, pour réencoder la video)

=== Extraire (et encoder) avec K3B ===

C'est la méthode la plus simple, **mais elle aboutit à un échec** !
Malheureusement, pour le moment sous Debian, ça ne va pas fort...

Bugs liés aux rips de DVD:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=507901
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=689013
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=741661

Chez moi le déroulement est le suivant:

J'insère le DVD. Je lance K3B. Je lui indique &quot;vazy, extraie le DVD&quot;. Il trouve 2 &quot;titles&quot;, qui correspondent à l'intro très courte de 30 secondes au lancement du DVD avant l'apparition du menu, et le 2nd titre donc qui correspond au film en lui-même.
Je coche les 2.

Il me propose d'extraire au format MPEG4 + MP3. Je valide. Il fait le tout en 2 passes. A la fin de la seconde passe pour la 1ère section du DVD, il grogne déjà à propos d'une erreur inconnue de transcode (code 1), puis failed to rip title 1. L'extraction du titre 2 est en cours, la 1ère passe prends du temps, et je pense que ça va aboutir à un échec à la fin de la 2nde passe.

=== Extraire avec mplayer ===

A voir si ceci fonctionne:

&lt;code bash&gt;
mplayer dvd://1 -dumpstream -dumpfile Title1.vob
&lt;/code&gt;

=== Extraire avec transcode ===

Un guide indique ici comment extraire les pistes audio du DVD, mais pas la video: http://ubuntuforums.org/showthread.php?t=1357157

=== Extraire avec dvdbackup ===

&lt;code bash&gt;
# Créer un mirroir (-M) du DVD, affiche la progression (-p)
# (il est possible d'indiquer le périphérique à utiliser avec -i /dev/chemin_vers_dvd/ )
dvdbackup -M -p
&lt;/code&gt;

On obtient un bon gros répertoire nommé comme le DVD, avec de multiple .VOB et des fichiers .IFO.

== Réassembler les .VOB ==

=== Réassembler (et encoder) les .VOB avec kdenlive ===

* Ouvrez kdenlive.
* Ajoutez les clips, uniquement les .VOB qui contiennent de la video et non pas les menus ou .VOB intermédiaires (les placer dans la piste video donne un temps infini et a fait planter kdenlive chez moi).
* Vous aurez selectionné le profil DVD PAL pour le projet
* Tentez un &quot;Rendu&quot;, et selectionnez DVD, il propose une resolution, qui convient.
* Choisissez Theora comme codec, affinez les réglages qui vous bottent, et lancez l'opération.

=== Réassembler les .VOB avec cat ===

[http://superuser.com/questions/49248/vob-merging-what-command-line-tool-is-recommended-linux Une méthode proposée] consiste à simplement concaténer les fichiers avec 'cat'.

Attention: opération peu concluante chez moi. En effet, les .VOB contiennent une entête, et les réassembler comme une brute en les collant les uns au bout des autres ne tient pas compte de cela.

Chez moi, j'ai tenté:
&lt;code bash&gt;
cat VTS_01_1.VOB VTS_02_0.VOB VTS_02_1.VOB VTS_02_2.VOB VTS_02_3.VOB VTS_03_0.VOB VTS_03_1.VOB &gt; ../Phoque.vob
&lt;/code&gt;
On aurait aussi pu faire:
&lt;code bash&gt;
cat *.VOB &gt; ../LeDVD.vob
&lt;/code&gt;

=== Sous-titres et chapitres ===

Le hic, c'est que si je ne m'abuse, la jointure du .VOB fait perdre l'indexation. Et puis, comment les sous-titres sont ils tirés/exploités ?
Bref, j'ignore les outils pour le moment.

Voir aussi: http://wiki.debian.org/Multimedia/Subtitle

=== Transcoder avec ffmpeg2theora ===

Chez moi, j'obtiens un frame sync error, d'où les soupçons sur la méthode d'assemblage des .VOB ci-dessus.

&lt;code bash&gt;
% ffmpeg2theora Phoque.vob 
[mpeg @ 0x1d8c740] max_analyze_duration reached
Input #0, mpeg, from 'Phoque.vob':
  Duration: 00:01:30.05, start: 0.233567, bitrate: 100560 kb/s
    Stream #0.0[0x1e0]: Video: mpeg2video (Main), yuv420p, 720x480 [PAR 8:9 DAR 4:3], 8500 kb/s, 23.98 fps, 59.94 tbr, 90k tbn, 59.94 tbc
    Stream #0.1[0x80]: Audio: ac3, 48000 Hz, stereo, s16, 384 kb/s
  Pixel Aspect Ratio: 0.89/1   Frame Aspect Ratio: 1.33/1

  0:00:32.97 audio: 66kbps video: 104kbps, ET: 00:01:16, est. size: 1.8 MB   [ac3 @ 0x1d90e20] frame sync error
&lt;/code&gt;

== Création ==

Ca, j'me suis pas penché dessus.</text>
      <sha1>s0c5hrmcyf8i0lzp0n01b70sm4e2jzh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5595</id>
      <parentid>5594</parentid>
      <timestamp>2014-04-23T20:45:13Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* L'extraction/création de DVD */</comment>
      <text xml:space="preserve" bytes="6458">{{Ébauche|L'extraction et la création de DVD audio/video}}

= L'extraction/création de DVD =

Cet article traitera plusieurs choses, dont:
* Prérequis pour la lecture/extraction d'un DVD
* L'extraction (rip) du DVD
* Conserver le chapitrage, les langues...
* La création (authoring) d'un DVD

Cet article ne devrait pas parler d'utilisations type «visionnage de DVD», ni de «[[Edition_Video|l'édition video]]» et des spécificités d'endocage. 

Notes/Sources du web à phagocyter/replacer:
* https://www.bunkus.org/videotools/mkvtoolnix/doc/mmg.html
* http://eng.anarchopedia.org/how_to_encode_video_to_OGG_Theora#Thoggen
* http://vobcopy.org/
* http://thoggen.net/git/index.html http://thoggen.git.sourceforge.net/git/gitweb.cgi?p=thoggen/thoggen
* https://wiki.xiph.org/TheoraSoftwareEncoders
* http://doc.ubuntu-fr.org/encodage_dvd_mkv
* https://www.debian-fr.org/les-meilleurs-logiciels-console-t21796-75.html#p297386, lxdvdrip est absent des dépots Debian
* https://packages.debian.org/jessie/lsdvd, sert juste à lister les infos d'un DVD ... ?
* mmg (interface graphique pour les commandes fournies par mkvtoolnix)

== Prérequis ==

=== Installer libdvdcss2 ===

La section &quot;DVD&quot; de [https://wiki.debian.org/CDDVD#DVD cet article] du wiki Debian indique la voie, il est nécessaire d'installer libdvdcss2 pour lire (et donc extraire) certains DVD protégés par le cryptage CSS.

En résumé, plusieurs solutions au choix:
* Installer le .deb [http://download.videolan.org/debian fourni par le projet videolan]
* Compiler libdvdcss depuis [http://download.videolan.org/pub/libdvdcss/ les sources de videolan]
* Installer le .deb fourni par [http://deb-multimedia.org deb-multimedia.org]

== Extraction ==

L'objectif serait de partir du DVD, pour obtenir  un fichier MKV (ou OGV) à la fin, avec audio en Ogg Vorbis et flux video en Ogg Theora.

Des outils:

* dvdbackup (inconvénient: comment rassembler les .VOB proprement ? cat 1.vob 2.vob 3.vob &gt; final.vob)
* dvd::rip https://wiki.debian.org/fr/DVD ; bien que la page du wiki Debian en parle, n'existe plus dans les dépots
* dvdwizard (pas essayé) https://packages.debian.org/jessie/dvdwizard ; introduit depuis Jessie, à tenter ?
* vobcopy (pas essayé)
* ffmpeg2theora
* k3b (permet normalement l'extraction de DVDs)
* thoggen (n'est pas présent dans les dépots Debian, semble brèvement entretenu, espoir de le voir intégré dans les dépots ?)
* transcode (outil ligne de commande utilisé par k3b, pour réencoder la video)

=== Extraire (et encoder) avec K3B ===

C'est la méthode la plus simple, **mais elle aboutit à un échec** !
Malheureusement, pour le moment sous Debian, ça ne va pas fort...

Bugs liés aux rips de DVD:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=507901
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=689013
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=741661

Chez moi le déroulement est le suivant:

J'insère le DVD. Je lance K3B. Je lui indique &quot;vazy, extraie le DVD&quot;. Il trouve 2 &quot;titles&quot;, qui correspondent à l'intro très courte de 30 secondes au lancement du DVD avant l'apparition du menu, et le 2nd titre donc qui correspond au film en lui-même.
Je coche les 2.

Il me propose d'extraire au format MPEG4 + MP3. Je valide. Il fait le tout en 2 passes. A la fin de la seconde passe pour la 1ère section du DVD, il grogne déjà à propos d'une erreur inconnue de transcode (code 1), puis failed to rip title 1. L'extraction du titre 2 est en cours, la 1ère passe prends du temps, et je pense que ça va aboutir à un échec à la fin de la 2nde passe.

=== Extraire avec mplayer ===

A voir si ceci fonctionne:

&lt;code bash&gt;
mplayer dvd://1 -dumpstream -dumpfile Title1.vob
&lt;/code&gt;

=== Extraire avec transcode ===

Un guide indique ici comment extraire les pistes audio du DVD, mais pas la video: http://ubuntuforums.org/showthread.php?t=1357157

=== Extraire avec dvdbackup ===

&lt;code bash&gt;
# Créer un mirroir (-M) du DVD, affiche la progression (-p)
# (il est possible d'indiquer le périphérique à utiliser avec -i /dev/chemin_vers_dvd/ )
dvdbackup -M -p
&lt;/code&gt;

On obtient un bon gros répertoire nommé comme le DVD, avec de multiple .VOB et des fichiers .IFO.

== Réassembler les .VOB ==

=== Réassembler (et encoder) les .VOB avec kdenlive ===

* Ouvrez kdenlive.
* Ajoutez les clips, uniquement les .VOB qui contiennent de la video et non pas les menus ou .VOB intermédiaires (les placer dans la piste video donne un temps infini et a fait planter kdenlive chez moi).
* Vous aurez selectionné le profil DVD PAL pour le projet
* Tentez un &quot;Rendu&quot;, et selectionnez DVD, il propose une resolution, qui convient.
* Choisissez Theora comme codec, affinez les réglages qui vous bottent, et lancez l'opération.

=== Réassembler les .VOB avec cat ===

[http://superuser.com/questions/49248/vob-merging-what-command-line-tool-is-recommended-linux Une méthode proposée] consiste à simplement concaténer les fichiers avec 'cat'.

Attention: opération peu concluante chez moi. En effet, les .VOB contiennent une entête, et les réassembler comme une brute en les collant les uns au bout des autres ne tient pas compte de cela.

Chez moi, j'ai tenté:
&lt;code bash&gt;
cat VTS_01_1.VOB VTS_02_0.VOB VTS_02_1.VOB VTS_02_2.VOB VTS_02_3.VOB VTS_03_0.VOB VTS_03_1.VOB &gt; ../Phoque.vob
&lt;/code&gt;
On aurait aussi pu faire:
&lt;code bash&gt;
cat *.VOB &gt; ../LeDVD.vob
&lt;/code&gt;

=== Sous-titres et chapitres ===

Le hic, c'est que si je ne m'abuse, la jointure du .VOB fait perdre l'indexation. Et puis, comment les sous-titres sont ils tirés/exploités ?
Bref, j'ignore les outils pour le moment.

Voir aussi: http://wiki.debian.org/Multimedia/Subtitle

=== Transcoder avec ffmpeg2theora ===

Chez moi, j'obtiens un frame sync error, d'où les soupçons sur la méthode d'assemblage des .VOB ci-dessus.

&lt;code bash&gt;
% ffmpeg2theora Phoque.vob 
[mpeg @ 0x1d8c740] max_analyze_duration reached
Input #0, mpeg, from 'Phoque.vob':
  Duration: 00:01:30.05, start: 0.233567, bitrate: 100560 kb/s
    Stream #0.0[0x1e0]: Video: mpeg2video (Main), yuv420p, 720x480 [PAR 8:9 DAR 4:3], 8500 kb/s, 23.98 fps, 59.94 tbr, 90k tbn, 59.94 tbc
    Stream #0.1[0x80]: Audio: ac3, 48000 Hz, stereo, s16, 384 kb/s
  Pixel Aspect Ratio: 0.89/1   Frame Aspect Ratio: 1.33/1

  0:00:32.97 audio: 66kbps video: 104kbps, ET: 00:01:16, est. size: 1.8 MB   [ac3 @ 0x1d90e20] frame sync error
&lt;/code&gt;

== Création ==

Ca, j'me suis pas penché dessus.</text>
      <sha1>6zgycgoq9krjer4zzpixckhloyvw06f</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5596</id>
      <parentid>5595</parentid>
      <timestamp>2014-04-23T21:23:19Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Extraire (et encoder) avec K3B */ log d'erreur k3b</comment>
      <text xml:space="preserve" bytes="6535">{{Ébauche|L'extraction et la création de DVD audio/video}}

= L'extraction/création de DVD =

Cet article traitera plusieurs choses, dont:
* Prérequis pour la lecture/extraction d'un DVD
* L'extraction (rip) du DVD
* Conserver le chapitrage, les langues...
* La création (authoring) d'un DVD

Cet article ne devrait pas parler d'utilisations type «visionnage de DVD», ni de «[[Edition_Video|l'édition video]]» et des spécificités d'endocage. 

Notes/Sources du web à phagocyter/replacer:
* https://www.bunkus.org/videotools/mkvtoolnix/doc/mmg.html
* http://eng.anarchopedia.org/how_to_encode_video_to_OGG_Theora#Thoggen
* http://vobcopy.org/
* http://thoggen.net/git/index.html http://thoggen.git.sourceforge.net/git/gitweb.cgi?p=thoggen/thoggen
* https://wiki.xiph.org/TheoraSoftwareEncoders
* http://doc.ubuntu-fr.org/encodage_dvd_mkv
* https://www.debian-fr.org/les-meilleurs-logiciels-console-t21796-75.html#p297386, lxdvdrip est absent des dépots Debian
* https://packages.debian.org/jessie/lsdvd, sert juste à lister les infos d'un DVD ... ?
* mmg (interface graphique pour les commandes fournies par mkvtoolnix)

== Prérequis ==

=== Installer libdvdcss2 ===

La section &quot;DVD&quot; de [https://wiki.debian.org/CDDVD#DVD cet article] du wiki Debian indique la voie, il est nécessaire d'installer libdvdcss2 pour lire (et donc extraire) certains DVD protégés par le cryptage CSS.

En résumé, plusieurs solutions au choix:
* Installer le .deb [http://download.videolan.org/debian fourni par le projet videolan]
* Compiler libdvdcss depuis [http://download.videolan.org/pub/libdvdcss/ les sources de videolan]
* Installer le .deb fourni par [http://deb-multimedia.org deb-multimedia.org]

== Extraction ==

L'objectif serait de partir du DVD, pour obtenir  un fichier MKV (ou OGV) à la fin, avec audio en Ogg Vorbis et flux video en Ogg Theora.

Des outils:

* dvdbackup (inconvénient: comment rassembler les .VOB proprement ? cat 1.vob 2.vob 3.vob &gt; final.vob)
* dvd::rip https://wiki.debian.org/fr/DVD ; bien que la page du wiki Debian en parle, n'existe plus dans les dépots
* dvdwizard (pas essayé) https://packages.debian.org/jessie/dvdwizard ; introduit depuis Jessie, à tenter ?
* vobcopy (pas essayé)
* ffmpeg2theora
* k3b (permet normalement l'extraction de DVDs)
* thoggen (n'est pas présent dans les dépots Debian, semble brèvement entretenu, espoir de le voir intégré dans les dépots ?)
* transcode (outil ligne de commande utilisé par k3b, pour réencoder la video)

=== Extraire (et encoder) avec K3B ===

C'est la méthode la plus simple, '''mais elle aboutit à un échec''' !

Malheureusement, pour le moment sous Debian, ça ne va pas fort...

Bugs liés aux rips de DVD:
* https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=507901
* https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=689013
* https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=741661

Chez moi le déroulement est le suivant:

J'insère le DVD. Je lance K3B. Je lui indique &quot;vazy, extraie le DVD&quot;. Il trouve 2 &quot;titles&quot;, qui correspondent à l'intro très courte de 30 secondes au lancement du DVD avant l'apparition du menu, et le 2nd titre donc qui correspond au film en lui-même.
Je coche les 2.

Il me propose d'extraire au format MPEG4 + MP3. Je valide. Il fait le tout en 2 passes. Il négocie la 1ère section du DVD assez rapidement mais abotuit à une erreur inconnue de transcode (code 1), puis failed to rip title 1. L'extraction du titre 2 se poursuit normalement jusqu'à la fin de la 1ère passe, qui prend 1h, et dès le début de la 2nde passe, même erreur au sujet de transcode.

Voir le log complet de k3b ici: http://paste.isalo.org/179

=== Extraire avec mplayer ===

A voir si ceci fonctionne:

&lt;code bash&gt;
mplayer dvd://1 -dumpstream -dumpfile Title1.vob
&lt;/code&gt;

=== Extraire avec transcode ===

Un guide indique ici comment extraire les pistes audio du DVD, mais pas la video: http://ubuntuforums.org/showthread.php?t=1357157

=== Extraire avec dvdbackup ===

&lt;code bash&gt;
# Créer un mirroir (-M) du DVD, affiche la progression (-p)
# (il est possible d'indiquer le périphérique à utiliser avec -i /dev/chemin_vers_dvd/ )
dvdbackup -M -p
&lt;/code&gt;

On obtient un bon gros répertoire nommé comme le DVD, avec de multiple .VOB et des fichiers .IFO.

== Réassembler les .VOB ==

=== Réassembler (et encoder) les .VOB avec kdenlive ===

* Ouvrez kdenlive.
* Ajoutez les clips, uniquement les .VOB qui contiennent de la video et non pas les menus ou .VOB intermédiaires (les placer dans la piste video donne un temps infini et a fait planter kdenlive chez moi).
* Vous aurez selectionné le profil DVD PAL pour le projet
* Tentez un &quot;Rendu&quot;, et selectionnez DVD, il propose une resolution, qui convient.
* Choisissez Theora comme codec, affinez les réglages qui vous bottent, et lancez l'opération.

=== Réassembler les .VOB avec cat ===

[http://superuser.com/questions/49248/vob-merging-what-command-line-tool-is-recommended-linux Une méthode proposée] consiste à simplement concaténer les fichiers avec 'cat'.

Attention: opération peu concluante chez moi. En effet, les .VOB contiennent une entête, et les réassembler comme une brute en les collant les uns au bout des autres ne tient pas compte de cela.

Chez moi, j'ai tenté:
&lt;code bash&gt;
cat VTS_01_1.VOB VTS_02_0.VOB VTS_02_1.VOB VTS_02_2.VOB VTS_02_3.VOB VTS_03_0.VOB VTS_03_1.VOB &gt; ../Phoque.vob
&lt;/code&gt;
On aurait aussi pu faire:
&lt;code bash&gt;
cat *.VOB &gt; ../LeDVD.vob
&lt;/code&gt;

=== Sous-titres et chapitres ===

Le hic, c'est que si je ne m'abuse, la jointure du .VOB fait perdre l'indexation. Et puis, comment les sous-titres sont ils tirés/exploités ?
Bref, j'ignore les outils pour le moment.

Voir aussi: http://wiki.debian.org/Multimedia/Subtitle

=== Transcoder avec ffmpeg2theora ===

Chez moi, j'obtiens un frame sync error, d'où les soupçons sur la méthode d'assemblage des .VOB ci-dessus.

&lt;code bash&gt;
% ffmpeg2theora Phoque.vob 
[mpeg @ 0x1d8c740] max_analyze_duration reached
Input #0, mpeg, from 'Phoque.vob':
  Duration: 00:01:30.05, start: 0.233567, bitrate: 100560 kb/s
    Stream #0.0[0x1e0]: Video: mpeg2video (Main), yuv420p, 720x480 [PAR 8:9 DAR 4:3], 8500 kb/s, 23.98 fps, 59.94 tbr, 90k tbn, 59.94 tbc
    Stream #0.1[0x80]: Audio: ac3, 48000 Hz, stereo, s16, 384 kb/s
  Pixel Aspect Ratio: 0.89/1   Frame Aspect Ratio: 1.33/1

  0:00:32.97 audio: 66kbps video: 104kbps, ET: 00:01:16, est. size: 1.8 MB   [ac3 @ 0x1d90e20] frame sync error
&lt;/code&gt;

== Création ==

Ca, j'me suis pas penché dessus.</text>
      <sha1>r6gzko83d3ythcghg2bhkdj1xxtcn4w</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5597</id>
      <parentid>5596</parentid>
      <timestamp>2014-04-23T21:29:52Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Extraire avec mplayer */</comment>
      <text xml:space="preserve" bytes="6769">{{Ébauche|L'extraction et la création de DVD audio/video}}

= L'extraction/création de DVD =

Cet article traitera plusieurs choses, dont:
* Prérequis pour la lecture/extraction d'un DVD
* L'extraction (rip) du DVD
* Conserver le chapitrage, les langues...
* La création (authoring) d'un DVD

Cet article ne devrait pas parler d'utilisations type «visionnage de DVD», ni de «[[Edition_Video|l'édition video]]» et des spécificités d'endocage. 

Notes/Sources du web à phagocyter/replacer:
* https://www.bunkus.org/videotools/mkvtoolnix/doc/mmg.html
* http://eng.anarchopedia.org/how_to_encode_video_to_OGG_Theora#Thoggen
* http://vobcopy.org/
* http://thoggen.net/git/index.html http://thoggen.git.sourceforge.net/git/gitweb.cgi?p=thoggen/thoggen
* https://wiki.xiph.org/TheoraSoftwareEncoders
* http://doc.ubuntu-fr.org/encodage_dvd_mkv
* https://www.debian-fr.org/les-meilleurs-logiciels-console-t21796-75.html#p297386, lxdvdrip est absent des dépots Debian
* https://packages.debian.org/jessie/lsdvd, sert juste à lister les infos d'un DVD ... ?
* mmg (interface graphique pour les commandes fournies par mkvtoolnix)

== Prérequis ==

=== Installer libdvdcss2 ===

La section &quot;DVD&quot; de [https://wiki.debian.org/CDDVD#DVD cet article] du wiki Debian indique la voie, il est nécessaire d'installer libdvdcss2 pour lire (et donc extraire) certains DVD protégés par le cryptage CSS.

En résumé, plusieurs solutions au choix:
* Installer le .deb [http://download.videolan.org/debian fourni par le projet videolan]
* Compiler libdvdcss depuis [http://download.videolan.org/pub/libdvdcss/ les sources de videolan]
* Installer le .deb fourni par [http://deb-multimedia.org deb-multimedia.org]

== Extraction ==

L'objectif serait de partir du DVD, pour obtenir  un fichier MKV (ou OGV) à la fin, avec audio en Ogg Vorbis et flux video en Ogg Theora.

Des outils:

* dvdbackup (inconvénient: comment rassembler les .VOB proprement ? cat 1.vob 2.vob 3.vob &gt; final.vob)
* dvd::rip https://wiki.debian.org/fr/DVD ; bien que la page du wiki Debian en parle, n'existe plus dans les dépots
* dvdwizard (pas essayé) https://packages.debian.org/jessie/dvdwizard ; introduit depuis Jessie, à tenter ?
* vobcopy (pas essayé)
* ffmpeg2theora
* k3b (permet normalement l'extraction de DVDs)
* thoggen (n'est pas présent dans les dépots Debian, semble brèvement entretenu, espoir de le voir intégré dans les dépots ?)
* transcode (outil ligne de commande utilisé par k3b, pour réencoder la video)

=== Extraire (et encoder) avec K3B ===

C'est la méthode la plus simple, '''mais elle aboutit à un échec''' !

Malheureusement, pour le moment sous Debian, ça ne va pas fort...

Bugs liés aux rips de DVD:
* https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=507901
* https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=689013
* https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=741661

Chez moi le déroulement est le suivant:

J'insère le DVD. Je lance K3B. Je lui indique &quot;vazy, extraie le DVD&quot;. Il trouve 2 &quot;titles&quot;, qui correspondent à l'intro très courte de 30 secondes au lancement du DVD avant l'apparition du menu, et le 2nd titre donc qui correspond au film en lui-même.
Je coche les 2.

Il me propose d'extraire au format MPEG4 + MP3. Je valide. Il fait le tout en 2 passes. Il négocie la 1ère section du DVD assez rapidement mais abotuit à une erreur inconnue de transcode (code 1), puis failed to rip title 1. L'extraction du titre 2 se poursuit normalement jusqu'à la fin de la 1ère passe, qui prend 1h, et dès le début de la 2nde passe, même erreur au sujet de transcode.

Voir le log complet de k3b ici: http://paste.isalo.org/179

=== Extraire avec mplayer ===

A voir si ceci fonctionne:

&lt;code bash&gt;
mplayer dvd://1 -dumpstream -dumpfile Title1.vob
&lt;/code&gt;

&lt;code bash&gt;
# Ici on précise que le périphérique du DVD est /dev/cdrom
# On indique également qu'on souhaite la section 2 du DVD
mplayer dvd://2//dev/cdrom -dumpstream -dumpfile Title2.vob
&lt;/code&gt;

Yeah, ça semble fonctionner !

=== Extraire avec transcode ===

Un guide indique ici comment extraire les pistes audio du DVD, mais pas la video: http://ubuntuforums.org/showthread.php?t=1357157

=== Extraire avec dvdbackup ===

&lt;code bash&gt;
# Créer un mirroir (-M) du DVD, affiche la progression (-p)
# (il est possible d'indiquer le périphérique à utiliser avec -i /dev/chemin_vers_dvd/ )
dvdbackup -M -p
&lt;/code&gt;

On obtient un bon gros répertoire nommé comme le DVD, avec de multiple .VOB et des fichiers .IFO.

== Réassembler les .VOB ==

=== Réassembler (et encoder) les .VOB avec kdenlive ===

* Ouvrez kdenlive.
* Ajoutez les clips, uniquement les .VOB qui contiennent de la video et non pas les menus ou .VOB intermédiaires (les placer dans la piste video donne un temps infini et a fait planter kdenlive chez moi).
* Vous aurez selectionné le profil DVD PAL pour le projet
* Tentez un &quot;Rendu&quot;, et selectionnez DVD, il propose une resolution, qui convient.
* Choisissez Theora comme codec, affinez les réglages qui vous bottent, et lancez l'opération.

=== Réassembler les .VOB avec cat ===

[http://superuser.com/questions/49248/vob-merging-what-command-line-tool-is-recommended-linux Une méthode proposée] consiste à simplement concaténer les fichiers avec 'cat'.

Attention: opération peu concluante chez moi. En effet, les .VOB contiennent une entête, et les réassembler comme une brute en les collant les uns au bout des autres ne tient pas compte de cela.

Chez moi, j'ai tenté:
&lt;code bash&gt;
cat VTS_01_1.VOB VTS_02_0.VOB VTS_02_1.VOB VTS_02_2.VOB VTS_02_3.VOB VTS_03_0.VOB VTS_03_1.VOB &gt; ../Phoque.vob
&lt;/code&gt;
On aurait aussi pu faire:
&lt;code bash&gt;
cat *.VOB &gt; ../LeDVD.vob
&lt;/code&gt;

=== Sous-titres et chapitres ===

Le hic, c'est que si je ne m'abuse, la jointure du .VOB fait perdre l'indexation. Et puis, comment les sous-titres sont ils tirés/exploités ?
Bref, j'ignore les outils pour le moment.

Voir aussi: http://wiki.debian.org/Multimedia/Subtitle

=== Transcoder avec ffmpeg2theora ===

Chez moi, j'obtiens un frame sync error, d'où les soupçons sur la méthode d'assemblage des .VOB ci-dessus.

&lt;code bash&gt;
% ffmpeg2theora Phoque.vob 
[mpeg @ 0x1d8c740] max_analyze_duration reached
Input #0, mpeg, from 'Phoque.vob':
  Duration: 00:01:30.05, start: 0.233567, bitrate: 100560 kb/s
    Stream #0.0[0x1e0]: Video: mpeg2video (Main), yuv420p, 720x480 [PAR 8:9 DAR 4:3], 8500 kb/s, 23.98 fps, 59.94 tbr, 90k tbn, 59.94 tbc
    Stream #0.1[0x80]: Audio: ac3, 48000 Hz, stereo, s16, 384 kb/s
  Pixel Aspect Ratio: 0.89/1   Frame Aspect Ratio: 1.33/1

  0:00:32.97 audio: 66kbps video: 104kbps, ET: 00:01:16, est. size: 1.8 MB   [ac3 @ 0x1d90e20] frame sync error
&lt;/code&gt;

== Création ==

Ca, j'me suis pas penché dessus.</text>
      <sha1>ou2xhdxh1hwur12fxy4i8z0kf40p2y6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5598</id>
      <parentid>5597</parentid>
      <timestamp>2014-04-23T22:54:13Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Extraire avec mplayer */ +inconvénient</comment>
      <text xml:space="preserve" bytes="6885">{{Ébauche|L'extraction et la création de DVD audio/video}}

= L'extraction/création de DVD =

Cet article traitera plusieurs choses, dont:
* Prérequis pour la lecture/extraction d'un DVD
* L'extraction (rip) du DVD
* Conserver le chapitrage, les langues...
* La création (authoring) d'un DVD

Cet article ne devrait pas parler d'utilisations type «visionnage de DVD», ni de «[[Edition_Video|l'édition video]]» et des spécificités d'endocage. 

Notes/Sources du web à phagocyter/replacer:
* https://www.bunkus.org/videotools/mkvtoolnix/doc/mmg.html
* http://eng.anarchopedia.org/how_to_encode_video_to_OGG_Theora#Thoggen
* http://vobcopy.org/
* http://thoggen.net/git/index.html http://thoggen.git.sourceforge.net/git/gitweb.cgi?p=thoggen/thoggen
* https://wiki.xiph.org/TheoraSoftwareEncoders
* http://doc.ubuntu-fr.org/encodage_dvd_mkv
* https://www.debian-fr.org/les-meilleurs-logiciels-console-t21796-75.html#p297386, lxdvdrip est absent des dépots Debian
* https://packages.debian.org/jessie/lsdvd, sert juste à lister les infos d'un DVD ... ?
* mmg (interface graphique pour les commandes fournies par mkvtoolnix)

== Prérequis ==

=== Installer libdvdcss2 ===

La section &quot;DVD&quot; de [https://wiki.debian.org/CDDVD#DVD cet article] du wiki Debian indique la voie, il est nécessaire d'installer libdvdcss2 pour lire (et donc extraire) certains DVD protégés par le cryptage CSS.

En résumé, plusieurs solutions au choix:
* Installer le .deb [http://download.videolan.org/debian fourni par le projet videolan]
* Compiler libdvdcss depuis [http://download.videolan.org/pub/libdvdcss/ les sources de videolan]
* Installer le .deb fourni par [http://deb-multimedia.org deb-multimedia.org]

== Extraction ==

L'objectif serait de partir du DVD, pour obtenir  un fichier MKV (ou OGV) à la fin, avec audio en Ogg Vorbis et flux video en Ogg Theora.

Des outils:

* dvdbackup (inconvénient: comment rassembler les .VOB proprement ? cat 1.vob 2.vob 3.vob &gt; final.vob)
* dvd::rip https://wiki.debian.org/fr/DVD ; bien que la page du wiki Debian en parle, n'existe plus dans les dépots
* dvdwizard (pas essayé) https://packages.debian.org/jessie/dvdwizard ; introduit depuis Jessie, à tenter ?
* vobcopy (pas essayé)
* ffmpeg2theora
* k3b (permet normalement l'extraction de DVDs)
* thoggen (n'est pas présent dans les dépots Debian, semble brèvement entretenu, espoir de le voir intégré dans les dépots ?)
* transcode (outil ligne de commande utilisé par k3b, pour réencoder la video)

=== Extraire (et encoder) avec K3B ===

C'est la méthode la plus simple, '''mais elle aboutit à un échec''' !

Malheureusement, pour le moment sous Debian, ça ne va pas fort...

Bugs liés aux rips de DVD:
* https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=507901
* https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=689013
* https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=741661

Chez moi le déroulement est le suivant:

J'insère le DVD. Je lance K3B. Je lui indique &quot;vazy, extraie le DVD&quot;. Il trouve 2 &quot;titles&quot;, qui correspondent à l'intro très courte de 30 secondes au lancement du DVD avant l'apparition du menu, et le 2nd titre donc qui correspond au film en lui-même.
Je coche les 2.

Il me propose d'extraire au format MPEG4 + MP3. Je valide. Il fait le tout en 2 passes. Il négocie la 1ère section du DVD assez rapidement mais abotuit à une erreur inconnue de transcode (code 1), puis failed to rip title 1. L'extraction du titre 2 se poursuit normalement jusqu'à la fin de la 1ère passe, qui prend 1h, et dès le début de la 2nde passe, même erreur au sujet de transcode.

Voir le log complet de k3b ici: http://paste.isalo.org/179

=== Extraire avec mplayer ===

A voir si ceci fonctionne:

&lt;code bash&gt;
mplayer dvd://1 -dumpstream -dumpfile Title1.vob
&lt;/code&gt;

&lt;code bash&gt;
# Ici on précise que le périphérique du DVD est /dev/cdrom
# On indique également qu'on souhaite la section 2 du DVD
mplayer dvd://2//dev/cdrom -dumpstream -dumpfile Title2.vob
&lt;/code&gt;

Yeah, ça semble fonctionner !

''Inconvénient'': avec cette commande, on ne récupère pas les sous-titres, ni le chapitrage (ni les langues ?).

=== Extraire avec transcode ===

Un guide indique ici comment extraire les pistes audio du DVD, mais pas la video: http://ubuntuforums.org/showthread.php?t=1357157

=== Extraire avec dvdbackup ===

&lt;code bash&gt;
# Créer un mirroir (-M) du DVD, affiche la progression (-p)
# (il est possible d'indiquer le périphérique à utiliser avec -i /dev/chemin_vers_dvd/ )
dvdbackup -M -p
&lt;/code&gt;

On obtient un bon gros répertoire nommé comme le DVD, avec de multiple .VOB et des fichiers .IFO.

== Réassembler les .VOB ==

=== Réassembler (et encoder) les .VOB avec kdenlive ===

* Ouvrez kdenlive.
* Ajoutez les clips, uniquement les .VOB qui contiennent de la video et non pas les menus ou .VOB intermédiaires (les placer dans la piste video donne un temps infini et a fait planter kdenlive chez moi).
* Vous aurez selectionné le profil DVD PAL pour le projet
* Tentez un &quot;Rendu&quot;, et selectionnez DVD, il propose une resolution, qui convient.
* Choisissez Theora comme codec, affinez les réglages qui vous bottent, et lancez l'opération.

=== Réassembler les .VOB avec cat ===

[http://superuser.com/questions/49248/vob-merging-what-command-line-tool-is-recommended-linux Une méthode proposée] consiste à simplement concaténer les fichiers avec 'cat'.

Attention: opération peu concluante chez moi. En effet, les .VOB contiennent une entête, et les réassembler comme une brute en les collant les uns au bout des autres ne tient pas compte de cela.

Chez moi, j'ai tenté:
&lt;code bash&gt;
cat VTS_01_1.VOB VTS_02_0.VOB VTS_02_1.VOB VTS_02_2.VOB VTS_02_3.VOB VTS_03_0.VOB VTS_03_1.VOB &gt; ../Phoque.vob
&lt;/code&gt;
On aurait aussi pu faire:
&lt;code bash&gt;
cat *.VOB &gt; ../LeDVD.vob
&lt;/code&gt;

=== Sous-titres et chapitres ===

Le hic, c'est que si je ne m'abuse, la jointure du .VOB fait perdre l'indexation. Et puis, comment les sous-titres sont ils tirés/exploités ?
Bref, j'ignore les outils pour le moment.

Voir aussi: http://wiki.debian.org/Multimedia/Subtitle

=== Transcoder avec ffmpeg2theora ===

Chez moi, j'obtiens un frame sync error, d'où les soupçons sur la méthode d'assemblage des .VOB ci-dessus.

&lt;code bash&gt;
% ffmpeg2theora Phoque.vob 
[mpeg @ 0x1d8c740] max_analyze_duration reached
Input #0, mpeg, from 'Phoque.vob':
  Duration: 00:01:30.05, start: 0.233567, bitrate: 100560 kb/s
    Stream #0.0[0x1e0]: Video: mpeg2video (Main), yuv420p, 720x480 [PAR 8:9 DAR 4:3], 8500 kb/s, 23.98 fps, 59.94 tbr, 90k tbn, 59.94 tbc
    Stream #0.1[0x80]: Audio: ac3, 48000 Hz, stereo, s16, 384 kb/s
  Pixel Aspect Ratio: 0.89/1   Frame Aspect Ratio: 1.33/1

  0:00:32.97 audio: 66kbps video: 104kbps, ET: 00:01:16, est. size: 1.8 MB   [ac3 @ 0x1d90e20] frame sync error
&lt;/code&gt;

== Création ==

Ca, j'me suis pas penché dessus.</text>
      <sha1>s5bd2rk46ha4pdk0d5l8j8vnvegnd4w</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>De qwerty @ azerty</title>
    <ns>0</ns>
    <id>941</id>
    <revision>
      <id>3909</id>
      <timestamp>2012-03-07T18:42:37Z</timestamp>
      <contributor>
        <username>Grhim</username>
        <id>116</id>
      </contributor>
      <comment>Page créée avec « vous venez de vous logger en live cd ou apres une install et vous désirer avoir le clavier en français :&gt;  &lt;pre&gt;setxkbmap fr&lt;/pre&gt; »</comment>
      <text xml:space="preserve" bytes="132">vous venez de vous logger en live cd ou apres une install et vous désirer avoir le clavier en français :&gt;

&lt;pre&gt;setxkbmap fr&lt;/pre&gt;</text>
      <sha1>nfg3hs4t5qbytks8vpy6ojm1t7h16ty</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4429</id>
      <parentid>3909</parentid>
      <timestamp>2012-09-08T17:45:32Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="138">Vous venez de vous logger en live cd ou après une installation et vous désirez avoir le clavier en français :&gt;

&lt;pre&gt;setxkbmap fr&lt;/pre&gt;</text>
      <sha1>1lwslf3fijgyxjbyvi282pbl8klgzfa</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Debian</title>
    <ns>0</ns>
    <id>1214</id>
    <redirect title="Debian &amp; UEFI" />
    <revision>
      <id>4983</id>
      <timestamp>2013-02-20T15:58:21Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <comment>Thald' a déplacé la page [[Debian]] vers [[Debian &amp; UEFI]] : Fail lors de la création de la page.</comment>
      <text xml:space="preserve" bytes="30">#REDIRECTION [[Debian &amp; UEFI]]</text>
      <sha1>9d93wakole9o3yv5uj8oyf72rfh7u2s</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Debian &amp; UEFI</title>
    <ns>0</ns>
    <id>1213</id>
    <revision>
      <id>4981</id>
      <timestamp>2013-02-20T15:50:59Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <comment>Page créée avec « Page en cours de rédaction !!!!   Debian &amp; UEFI  Cette page à pour but de vous aider à démarrer Debian sur un EFI.  Il n'a pas pour but d'expliquer ce qu'est (U)EFI et... »</comment>
      <text xml:space="preserve" bytes="4135">Page en cours de rédaction !!!! 

Debian &amp; UEFI

Cette page à pour but de vous aider à démarrer Debian sur un EFI. 
Il n'a pas pour but d'expliquer ce qu'est (U)EFI et les table de partitions GPT.

Sommaire

I - Kézako ?
II-A - Installation &quot;neuve&quot; de Debian
II-B - Debian est déjà installé
III - Migrer de BIOS vers UEFI
IV - Démarrer en UEFI


I - kézako ? 

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclus quand même une compatibilité avec l'ancien bios.
L'UEFI boot Manager est capable de chargé les chargeurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 

- installer le chargeur de démarrage sur la partition FAT
- Dire à UEFI de créer une entrée pour ce chargeur

II-A Installation neuve de Debian

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
 - Faire votre propre image d'installation en installant un chargeur de démarrage UEFI sur une clef USB qui lancera une installation.
 - Installer en utilisant l'image classique avec le BIOS

Nous allons ici traiter le second point.

1 - Formater votre disques et créer vos partitions en utilisant le GUID Partition Table (GPT), vous pouvez utiliser gdisk ou parted pour cela)
 Faire une petite partition ( 1Mio devrait suffire)
 Initialiser le type sur &quot;BIos Boot Partition&quot;
 NE PAS la formater et ne pas la monter

2 - Faire une seconde partition ( de même taille ou plus si vous avez plusieurs OS à lancer)
 Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
 Formater la partition en FAT
 Monter cette partition sur /boot/efi

3 - continuer l'installation normal de debian en utilisant le BIOS pour démarrer

II-B Debian déjà installé 

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk ( à vos risques et périls car je n'ai pas testé cette solution)

 Utiliser une LiveCD pour faire une peu de place sur le disque. 
 créez une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
 formatez-la en FAT et montez là sur /boot/efi (/boot /efi n'existe pas, créez-le auparavant) et montez la de façon permanente via le fstab

III Passer en UEFI

&amp; - Installez le paquet grub-efi-amd64 - Attention le paquet dans les dépots stables &amp; testing ne semblent pas fonctionner correctement, j'ai du dans mon cas utiliser le paquet dans SID.
2 - Préparez Grub via la commande habituelle : grub-install /dev/sda

Cette commande fait 3 choses : 
 - Génère une image Grub
 - Installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est à dire /boot/efi/efi/debian ....)
 - Essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarrer en UEFI. Attention arrêter ici et votre système ne pourra plus démarrer !

Copiez (Pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boo/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

Nettoyage

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

Bugs &amp; Informations Importantes 

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...) il bloque après la selection du noyau dans GRUB
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de Tanguy Ortolo : http://tanguy.ortolo.eu/blog/article51/debian-efi et ma propre expérience ; http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html</text>
      <sha1>85z9o75u0y3leufc3320se7ghj9deu1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4982</id>
      <parentid>4981</parentid>
      <timestamp>2013-02-20T15:58:21Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <minor/>
      <comment>Thald' a déplacé la page [[Debian]] vers [[Debian &amp; UEFI]] : Fail lors de la création de la page.</comment>
      <text xml:space="preserve" bytes="4135">Page en cours de rédaction !!!! 

Debian &amp; UEFI

Cette page à pour but de vous aider à démarrer Debian sur un EFI. 
Il n'a pas pour but d'expliquer ce qu'est (U)EFI et les table de partitions GPT.

Sommaire

I - Kézako ?
II-A - Installation &quot;neuve&quot; de Debian
II-B - Debian est déjà installé
III - Migrer de BIOS vers UEFI
IV - Démarrer en UEFI


I - kézako ? 

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclus quand même une compatibilité avec l'ancien bios.
L'UEFI boot Manager est capable de chargé les chargeurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 

- installer le chargeur de démarrage sur la partition FAT
- Dire à UEFI de créer une entrée pour ce chargeur

II-A Installation neuve de Debian

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
 - Faire votre propre image d'installation en installant un chargeur de démarrage UEFI sur une clef USB qui lancera une installation.
 - Installer en utilisant l'image classique avec le BIOS

Nous allons ici traiter le second point.

1 - Formater votre disques et créer vos partitions en utilisant le GUID Partition Table (GPT), vous pouvez utiliser gdisk ou parted pour cela)
 Faire une petite partition ( 1Mio devrait suffire)
 Initialiser le type sur &quot;BIos Boot Partition&quot;
 NE PAS la formater et ne pas la monter

2 - Faire une seconde partition ( de même taille ou plus si vous avez plusieurs OS à lancer)
 Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
 Formater la partition en FAT
 Monter cette partition sur /boot/efi

3 - continuer l'installation normal de debian en utilisant le BIOS pour démarrer

II-B Debian déjà installé 

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk ( à vos risques et périls car je n'ai pas testé cette solution)

 Utiliser une LiveCD pour faire une peu de place sur le disque. 
 créez une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
 formatez-la en FAT et montez là sur /boot/efi (/boot /efi n'existe pas, créez-le auparavant) et montez la de façon permanente via le fstab

III Passer en UEFI

&amp; - Installez le paquet grub-efi-amd64 - Attention le paquet dans les dépots stables &amp; testing ne semblent pas fonctionner correctement, j'ai du dans mon cas utiliser le paquet dans SID.
2 - Préparez Grub via la commande habituelle : grub-install /dev/sda

Cette commande fait 3 choses : 
 - Génère une image Grub
 - Installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est à dire /boot/efi/efi/debian ....)
 - Essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarrer en UEFI. Attention arrêter ici et votre système ne pourra plus démarrer !

Copiez (Pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boo/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

Nettoyage

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

Bugs &amp; Informations Importantes 

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...) il bloque après la selection du noyau dans GRUB
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de Tanguy Ortolo : http://tanguy.ortolo.eu/blog/article51/debian-efi et ma propre expérience ; http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html</text>
      <sha1>85z9o75u0y3leufc3320se7ghj9deu1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4984</id>
      <parentid>4982</parentid>
      <timestamp>2013-02-20T15:59:25Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <text xml:space="preserve" bytes="4014">'''''Page en cours de rédaction !!!!''' 
''

== '''Debian &amp; UEFI ==

Cette page à pour but de vous aider à démarrer Debian sur un EFI. 
Il n'a pas pour but d'expliquer ce qu'est (U)EFI et les table de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclus quand même une compatibilité avec l'ancien bios.
L'UEFI boot Manager est capable de chargé les chargeurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 

- installer le chargeur de démarrage sur la partition FAT
- Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
 - Faire votre propre image d'installation en installant un chargeur de démarrage UEFI sur une clef USB qui lancera une installation.
 - Installer en utilisant l'image classique avec le BIOS

Nous allons ici traiter le second point.

1 - Formater votre disques et créer vos partitions en utilisant le GUID Partition Table (GPT), vous pouvez utiliser gdisk ou parted pour cela)
 Faire une petite partition ( 1Mio devrait suffire)
 Initialiser le type sur &quot;BIos Boot Partition&quot;
 NE PAS la formater et ne pas la monter

2 - Faire une seconde partition ( de même taille ou plus si vous avez plusieurs OS à lancer)
 Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
 Formater la partition en FAT
 Monter cette partition sur /boot/efi

3 - continuer l'installation normal de debian en utilisant le BIOS pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk ( à vos risques et périls car je n'ai pas testé cette solution)

 Utiliser une LiveCD pour faire une peu de place sur le disque. 
 créez une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
 formatez-la en FAT et montez là sur /boot/efi (/boot /efi n'existe pas, créez-le auparavant) et montez la de façon permanente via le fstab

== Passer en UEFI ==
Installez le paquet grub-efi-amd64 - Attention le paquet dans les dépots stables &amp; testing ne semblent pas fonctionner correctement, j'ai du dans mon cas utiliser le paquet dans SID.
Préparez Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
 - Génère une image Grub
 - Installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est à dire /boot/efi/efi/debian ....)
 - Essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarrer en UEFI. Attention arrêter ici et votre système ne pourra plus démarrer !

Copiez (Pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boo/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...) il bloque après la selection du noyau dans GRUB
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] :  et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>969dj43bum4fyjlpishs59d7vcv226a</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4985</id>
      <parentid>4984</parentid>
      <timestamp>2013-02-20T15:59:55Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <text xml:space="preserve" bytes="3990">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI. 
Il n'a pas pour but d'expliquer ce qu'est (U)EFI et les table de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclus quand même une compatibilité avec l'ancien bios.
L'UEFI boot Manager est capable de chargé les chargeurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 

- installer le chargeur de démarrage sur la partition FAT
- Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
 - Faire votre propre image d'installation en installant un chargeur de démarrage UEFI sur une clef USB qui lancera une installation.
 - Installer en utilisant l'image classique avec le BIOS

Nous allons ici traiter le second point.

1 - Formater votre disques et créer vos partitions en utilisant le GUID Partition Table (GPT), vous pouvez utiliser gdisk ou parted pour cela)
 Faire une petite partition ( 1Mio devrait suffire)
 Initialiser le type sur &quot;BIos Boot Partition&quot;
 NE PAS la formater et ne pas la monter

2 - Faire une seconde partition ( de même taille ou plus si vous avez plusieurs OS à lancer)
 Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
 Formater la partition en FAT
 Monter cette partition sur /boot/efi

3 - continuer l'installation normal de debian en utilisant le BIOS pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk ( à vos risques et périls car je n'ai pas testé cette solution)

 Utiliser une LiveCD pour faire une peu de place sur le disque. 
 créez une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
 formatez-la en FAT et montez là sur /boot/efi (/boot /efi n'existe pas, créez-le auparavant) et montez la de façon permanente via le fstab

== Passer en UEFI ==
Installez le paquet grub-efi-amd64 - Attention le paquet dans les dépots stables &amp; testing ne semblent pas fonctionner correctement, j'ai du dans mon cas utiliser le paquet dans SID.
Préparez Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
 - Génère une image Grub
 - Installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est à dire /boot/efi/efi/debian ....)
 - Essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarrer en UEFI. Attention arrêter ici et votre système ne pourra plus démarrer !

Copiez (Pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boo/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...) il bloque après la selection du noyau dans GRUB
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] :  et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>tsp3u87vx93142a9k4u37pybaf3j4wa</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4986</id>
      <parentid>4985</parentid>
      <timestamp>2013-02-20T16:02:19Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <text xml:space="preserve" bytes="3989">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI. 
Il n'a pas pour but d'expliquer ce qu'est (U)EFI et les table de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclus quand même une compatibilité avec l'ancien bios.
L'UEFI boot Manager est capable d'amorcé les chargeurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 

- installer le chargeur de démarrage sur la partition FAT
- Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
 - Faire votre propre image d'installation en installant un chargeur de démarrage UEFI sur une clef USB qui lancera une installation.
 - Installer en utilisant l'image classique avec le BIOS

Nous allons ici traiter le second point.

1 - Formater votre disques et créer vos partitions en utilisant le GUID Partition Table (GPT), vous pouvez utiliser gdisk ou parted pour cela)
 Faire une petite partition ( 1Mio devrait suffire)
 Initialiser le type sur &quot;BIos Boot Partition&quot;
 NE PAS la formater et ne pas la monter

2 - Faire une seconde partition ( de même taille ou plus si vous avez plusieurs OS à lancer)
 Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
 Formater la partition en FAT
 Monter cette partition sur /boot/efi

3 - continuer l'installation normal de debian en utilisant le BIOS pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk ( à vos risques et périls car je n'ai pas testé cette solution)

 Utiliser une LiveCD pour faire une peu de place sur le disque. 
 créez une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
 formatez-la en FAT et montez là sur /boot/efi (/boot /efi n'existe pas, créez-le auparavant) et montez la de façon permanente via le fstab

== Passer en UEFI ==
Installez le paquet grub-efi-amd64 - Attention le paquet dans les dépots stables &amp; testing ne semblent pas fonctionner correctement, j'ai du dans mon cas utiliser le paquet dans SID.
Préparez Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
 - Génère une image Grub
 - Installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est à dire /boot/efi/efi/debian ....)
 - Essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarrer en UEFI. Attention arrêter ici et votre système ne pourra plus démarrer !

Copiez (Pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boo/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...) il bloque après la selection du noyau dans GRUB
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] :  et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>gk9z4ptev26exj1s4v81smcog3i09jm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4987</id>
      <parentid>4986</parentid>
      <timestamp>2013-02-20T16:16:33Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <text xml:space="preserve" bytes="3983">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI. 
Il n'a pas pour but d'expliquer ce qu'est (U)EFI et les table de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclus quand même une compatibilité avec l'ancien bios.
L'UEFI boot Manager est capable d'amorcé les chargeurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 

* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation en installant un chargeur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le BIOS

Nous allons ici traiter le second point.

*Formater votre disques et créer vos partitions en utilisant le GUID Partition Table (GPT), vous pouvez utiliser gdisk ou parted pour cela)
**Faire une petite partition ( 1Mio devrait suffire)
**Initialiser le type sur &quot;BIos Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition ( de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

3 - continuer l'installation normal de debian en utilisant le BIOS pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk ( à vos risques et périls car je n'ai pas testé cette solution)

 Utiliser une LiveCD pour faire une peu de place sur le disque. 
 créez une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
 formatez-la en FAT et montez là sur /boot/efi (/boot /efi n'existe pas, créez-le auparavant) et montez la de façon permanente via le fstab

== Passer en UEFI ==
Installez le paquet grub-efi-amd64
''Attention le paquet dans les dépots stables &amp; testing ne semblent pas fonctionner correctement, j'ai du dans mon cas utiliser le paquet dans SID.''
Préparez Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Génère une image Grub
*Installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est à dire /boot/efi/efi/debian ....)
*Essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarrer en UEFI. Attention arrêter ici et votre système ne pourra plus démarrer !

Copiez (Pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boo/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...) il bloque après la selection du noyau dans GRUB
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] :  et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>s0mjj5ko5egmhttqndiawtpxw9rmvzh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4988</id>
      <parentid>4987</parentid>
      <timestamp>2013-02-20T16:25:03Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <text xml:space="preserve" bytes="4033">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Il n'a pas pour but d'expliquer ce qu'est (U)EFI et les table de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclus quand même une compatibilité avec l'ancien bios.
L'UEFI boot Manager est capable d'amorcé les chargeurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 

* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation en installant un chargeur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le BIOS

Nous allons ici traiter le second point.

*Formater votre disques et créer vos partitions en utilisant le GUID Partition Table (GPT), vous pouvez utiliser gdisk ou parted pour cela)
**Faire une petite partition ( 1Mio devrait suffire)
**Initialiser le type sur &quot;BIos Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition ( de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

3 - continuer l'installation normal de debian en utilisant le BIOS pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk ( à vos risques et périls car je n'ai pas testé cette solution)

 Utiliser une LiveCD pour faire une peu de place sur le disque. 
 créez une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
 formatez-la en FAT et montez là sur /boot/efi (/boot /efi n'existe pas, créez-le auparavant) et montez la de façon permanente via le fstab

== Passer en UEFI ==
Installez le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stables &amp; testing ne semblent pas fonctionner correctement, j'ai du dans mon cas utiliser le paquet dans SID.''
Préparez Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Génère une image Grub
*Installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est à dire /boot/efi/efi/debian ....)
*Essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarrer en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêter ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''
Copiez (Pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boo/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...) il bloque après la selection du noyau dans GRUB
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>2ep6ybmpae6gun9v0hq2zfnrgunezr4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4990</id>
      <parentid>4988</parentid>
      <timestamp>2013-02-20T16:28:21Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <comment>/* kézako ? */</comment>
      <text xml:space="preserve" bytes="4033">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Il n'a pas pour but d'expliquer ce qu'est (U)EFI et les table de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclus quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation en installant un chargeur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le BIOS

Nous allons ici traiter le second point.

*Formater votre disques et créer vos partitions en utilisant le GUID Partition Table (GPT), vous pouvez utiliser gdisk ou parted pour cela)
**Faire une petite partition ( 1Mio devrait suffire)
**Initialiser le type sur &quot;BIos Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition ( de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

3 - continuer l'installation normal de debian en utilisant le BIOS pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk ( à vos risques et périls car je n'ai pas testé cette solution)

 Utiliser une LiveCD pour faire une peu de place sur le disque. 
 créez une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
 formatez-la en FAT et montez là sur /boot/efi (/boot /efi n'existe pas, créez-le auparavant) et montez la de façon permanente via le fstab

== Passer en UEFI ==
Installez le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stables &amp; testing ne semblent pas fonctionner correctement, j'ai du dans mon cas utiliser le paquet dans SID.''
Préparez Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Génère une image Grub
*Installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est à dire /boot/efi/efi/debian ....)
*Essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarrer en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêter ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''
Copiez (Pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boo/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...) il bloque après la selection du noyau dans GRUB
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>1enrsnn54vnq9875kwizi8bss3tdenu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4991</id>
      <parentid>4990</parentid>
      <timestamp>2013-02-20T16:29:30Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <comment>/* Installation neuve de Debian */</comment>
      <text xml:space="preserve" bytes="4031">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Il n'a pas pour but d'expliquer ce qu'est (U)EFI et les table de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclus quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation en installant un chargeur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le BIOS

Nous allons ici traiter le second point.


*Formater votre disques et créer vos partitions en utilisant le GUID Partition Table (GPT), vous pouvez utiliser gdisk ou parted pour cela)
**Faire une petite partition ( 1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition ( de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normal de debian en utilisant le BIOS pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk ( à vos risques et périls car je n'ai pas testé cette solution)

 Utiliser une LiveCD pour faire une peu de place sur le disque. 
 créez une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
 formatez-la en FAT et montez là sur /boot/efi (/boot /efi n'existe pas, créez-le auparavant) et montez la de façon permanente via le fstab

== Passer en UEFI ==
Installez le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stables &amp; testing ne semblent pas fonctionner correctement, j'ai du dans mon cas utiliser le paquet dans SID.''
Préparez Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Génère une image Grub
*Installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est à dire /boot/efi/efi/debian ....)
*Essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarrer en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêter ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''
Copiez (Pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boo/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...) il bloque après la selection du noyau dans GRUB
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>bydwuphwvqn9axy157wq81coq869lob</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4992</id>
      <parentid>4991</parentid>
      <timestamp>2013-02-20T16:30:00Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <minor/>
      <comment>/* Debian déjà installé */</comment>
      <text xml:space="preserve" bytes="4031">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Il n'a pas pour but d'expliquer ce qu'est (U)EFI et les table de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclus quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation en installant un chargeur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le BIOS

Nous allons ici traiter le second point.


*Formater votre disques et créer vos partitions en utilisant le GUID Partition Table (GPT), vous pouvez utiliser gdisk ou parted pour cela)
**Faire une petite partition ( 1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition ( de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normal de debian en utilisant le BIOS pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk ( à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une LiveCD pour faire une peu de place sur le disque. 
*créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*formater-la en FAT et montez là sur /boot/efi (/boot /efi n'existe pas, créez-le auparavant) et montez la de façon permanente via le fstab

== Passer en UEFI ==
Installez le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stables &amp; testing ne semblent pas fonctionner correctement, j'ai du dans mon cas utiliser le paquet dans SID.''
Préparez Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Génère une image Grub
*Installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est à dire /boot/efi/efi/debian ....)
*Essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarrer en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêter ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''
Copiez (Pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boo/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...) il bloque après la selection du noyau dans GRUB
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>t13v8k0gz27f2ofrctkdbzkbdjcc7an</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4993</id>
      <parentid>4992</parentid>
      <timestamp>2013-02-20T16:30:21Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <comment>/* Debian déjà installé */</comment>
      <text xml:space="preserve" bytes="4031">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Il n'a pas pour but d'expliquer ce qu'est (U)EFI et les table de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclus quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation en installant un chargeur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le BIOS

Nous allons ici traiter le second point.


*Formater votre disques et créer vos partitions en utilisant le GUID Partition Table (GPT), vous pouvez utiliser gdisk ou parted pour cela)
**Faire une petite partition ( 1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition ( de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normal de debian en utilisant le BIOS pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk ( à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une LiveCD pour faire une peu de place sur le disque. 
*créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*formatez-la en FAT et montez là sur /boot/efi (/boot /efi n'existe pas, créez-le auparavant) et montez la de façon permanente via le fstab

== Passer en UEFI ==
Installez le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stables &amp; testing ne semblent pas fonctionner correctement, j'ai du dans mon cas utiliser le paquet dans SID.''
Préparez Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Génère une image Grub
*Installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est à dire /boot/efi/efi/debian ....)
*Essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarrer en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêter ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''
Copiez (Pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boo/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...) il bloque après la selection du noyau dans GRUB
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>na5s88wr58uzxmmt0k8ettsaw3z8koy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4994</id>
      <parentid>4993</parentid>
      <timestamp>2013-02-20T16:32:10Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <comment>/* Installation neuve de Debian */</comment>
      <text xml:space="preserve" bytes="4030">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Il n'a pas pour but d'expliquer ce qu'est (U)EFI et les table de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclus quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation en installant un chargeur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le BIOS

Nous allons ici traiter le second point.

*Formater votre disques et créer vos partitions en utilisant le GUID Partition Table (GPT), vous pouvez utiliser gdisk ou parted pour cela)
**Faire une petite partition ( 1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition ( de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normal de debian en utilisant le BIOS pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk ( à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une LiveCD pour faire une peu de place sur le disque. 
*créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*formatez-la en FAT et montez là sur /boot/efi (/boot /efi n'existe pas, créez-le auparavant) et montez la de façon permanente via le fstab

== Passer en UEFI ==
Installez le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stables &amp; testing ne semblent pas fonctionner correctement, j'ai du dans mon cas utiliser le paquet dans SID.''
Préparez Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Génère une image Grub
*Installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est à dire /boot/efi/efi/debian ....)
*Essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarrer en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêter ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''
Copiez (Pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boo/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...) il bloque après la selection du noyau dans GRUB
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>8z3c0ccxwg9nvh6eaer0gd0f3gc19mj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4995</id>
      <parentid>4994</parentid>
      <timestamp>2013-02-20T16:33:35Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <comment>/* Installation neuve de Debian */</comment>
      <text xml:space="preserve" bytes="4027">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Il n'a pas pour but d'expliquer ce qu'est (U)EFI et les table de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclus quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le BIOS

Nous allons ici traiter le second point.

*Formater votre disques et créer vos partitions en utilisant le GUID Partition Table (GPT), vous pouvez utiliser gdisk ou parted pour cela)
**Faire une petite partition ( 1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition ( de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normal de debian en utilisant le BIOS pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk ( à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une LiveCD pour faire une peu de place sur le disque. 
*créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*formatez-la en FAT et montez là sur /boot/efi (/boot /efi n'existe pas, créez-le auparavant) et montez la de façon permanente via le fstab

== Passer en UEFI ==
Installez le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stables &amp; testing ne semblent pas fonctionner correctement, j'ai du dans mon cas utiliser le paquet dans SID.''
Préparez Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Génère une image Grub
*Installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est à dire /boot/efi/efi/debian ....)
*Essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarrer en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêter ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''
Copiez (Pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boo/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...) il bloque après la selection du noyau dans GRUB
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>jddor0480ponqehlmz54kjqmiaqnpzi</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4996</id>
      <parentid>4995</parentid>
      <timestamp>2013-02-20T16:35:03Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <comment>/* Passer en UEFI */</comment>
      <text xml:space="preserve" bytes="4028">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Il n'a pas pour but d'expliquer ce qu'est (U)EFI et les table de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclus quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le BIOS

Nous allons ici traiter le second point.

*Formater votre disques et créer vos partitions en utilisant le GUID Partition Table (GPT), vous pouvez utiliser gdisk ou parted pour cela)
**Faire une petite partition ( 1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition ( de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normal de debian en utilisant le BIOS pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk ( à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une LiveCD pour faire une peu de place sur le disque. 
*créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*formatez-la en FAT et montez là sur /boot/efi (/boot /efi n'existe pas, créez-le auparavant) et montez la de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stables &amp; testing ne semblent pas fonctionner correctement, j'ai du dans mon cas utiliser le paquet dans SID.''
Préparez Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Génère une image Grub
*Installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est à dire /boot/efi/efi/debian ....)
*Essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêter ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''
Copiez (Pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...) il bloque après la selection du noyau dans GRUB
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>frnqpv2zmuunj9ar2jkqa7izx694nlp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4997</id>
      <parentid>4996</parentid>
      <timestamp>2013-02-20T16:36:09Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <text xml:space="preserve" bytes="4030">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les table de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclus quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le BIOS

Nous allons ici traiter le second point.

*Formater votre disques et créer vos partitions en utilisant le GUID Partition Table (GPT), vous pouvez utiliser gdisk ou parted pour cela)
**Faire une petite partition ( 1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition ( de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normal de debian en utilisant le BIOS pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk ( à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une LiveCD pour faire une peu de place sur le disque. 
*créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*formatez-la en FAT et montez là sur /boot/efi (/boot /efi n'existe pas, créez-le auparavant) et montez la de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stables &amp; testing ne semblent pas fonctionner correctement, j'ai du dans mon cas utiliser le paquet dans SID.''
Préparez Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Génère une image Grub
*Installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est à dire /boot/efi/efi/debian ....)
*Essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêter ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''
Copiez (Pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...) il bloque après la selection du noyau dans GRUB
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>7t9plwyov0xm7cgnfckgj39lgbky7x2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4998</id>
      <parentid>4997</parentid>
      <timestamp>2013-02-20T16:36:26Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <text xml:space="preserve" bytes="4031">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclus quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le BIOS

Nous allons ici traiter le second point.

*Formater votre disques et créer vos partitions en utilisant le GUID Partition Table (GPT), vous pouvez utiliser gdisk ou parted pour cela)
**Faire une petite partition ( 1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition ( de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normal de debian en utilisant le BIOS pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk ( à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une LiveCD pour faire une peu de place sur le disque. 
*créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*formatez-la en FAT et montez là sur /boot/efi (/boot /efi n'existe pas, créez-le auparavant) et montez la de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stables &amp; testing ne semblent pas fonctionner correctement, j'ai du dans mon cas utiliser le paquet dans SID.''
Préparez Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Génère une image Grub
*Installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est à dire /boot/efi/efi/debian ....)
*Essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêter ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''
Copiez (Pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...) il bloque après la selection du noyau dans GRUB
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>iopi8e3q92kt0x7wyfptleb0u9dnm5w</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4999</id>
      <parentid>4998</parentid>
      <timestamp>2013-02-20T16:38:40Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <minor/>
      <comment>/* kézako ? */</comment>
      <text xml:space="preserve" bytes="4031">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le BIOS

Nous allons ici traiter le second point.

*Formater votre disques et créer vos partitions en utilisant le GUID Partition Table (GPT), vous pouvez utiliser gdisk ou parted pour cela)
**Faire une petite partition ( 1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition ( de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normal de debian en utilisant le BIOS pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk ( à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une LiveCD pour faire une peu de place sur le disque. 
*créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*formatez-la en FAT et montez là sur /boot/efi (/boot /efi n'existe pas, créez-le auparavant) et montez la de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stables &amp; testing ne semblent pas fonctionner correctement, j'ai du dans mon cas utiliser le paquet dans SID.''
Préparez Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Génère une image Grub
*Installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est à dire /boot/efi/efi/debian ....)
*Essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêter ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''
Copiez (Pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...) il bloque après la selection du noyau dans GRUB
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>rh3fh2c4h72ipsenvytqqk4o2rzkik2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5000</id>
      <parentid>4999</parentid>
      <timestamp>2013-02-20T16:39:32Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <comment>/* Installation neuve de Debian */</comment>
      <text xml:space="preserve" bytes="4031">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

*Formater votre disques et créer vos partitions en utilisant le GUID Partition Table (GPT), vous pouvez utiliser gdisk ou parted pour cela)
**Faire une petite partition ( 1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition ( de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normal de debian en utilisant le BIOS pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk ( à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une LiveCD pour faire une peu de place sur le disque. 
*créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*formatez-la en FAT et montez là sur /boot/efi (/boot /efi n'existe pas, créez-le auparavant) et montez la de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stables &amp; testing ne semblent pas fonctionner correctement, j'ai du dans mon cas utiliser le paquet dans SID.''
Préparez Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Génère une image Grub
*Installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est à dire /boot/efi/efi/debian ....)
*Essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêter ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''
Copiez (Pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...) il bloque après la selection du noyau dans GRUB
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>mj21h7uicj2999at61bf3fwlihdl3sr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5001</id>
      <parentid>5000</parentid>
      <timestamp>2013-02-20T16:39:56Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <comment>/* Installation neuve de Debian */</comment>
      <text xml:space="preserve" bytes="4030">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

*Formater votre disque et créer vos partitions en utilisant le GUID Partition Table (GPT), vous pouvez utiliser gdisk ou parted pour cela)
**Faire une petite partition ( 1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition ( de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normal de debian en utilisant le BIOS pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk ( à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une LiveCD pour faire une peu de place sur le disque. 
*créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*formatez-la en FAT et montez là sur /boot/efi (/boot /efi n'existe pas, créez-le auparavant) et montez la de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stables &amp; testing ne semblent pas fonctionner correctement, j'ai du dans mon cas utiliser le paquet dans SID.''
Préparez Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Génère une image Grub
*Installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est à dire /boot/efi/efi/debian ....)
*Essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêter ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''
Copiez (Pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...) il bloque après la selection du noyau dans GRUB
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>4yoqwoafwo069chol78pkn38iwqgr5v</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5002</id>
      <parentid>5001</parentid>
      <timestamp>2013-02-20T16:40:24Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <comment>/* Installation neuve de Debian */</comment>
      <text xml:space="preserve" bytes="4027">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

*Formater le disque et créer les partitions en utilisant le GUID Partition Table (GPT), vous pouvez utiliser gdisk ou parted pour cela)
**Faire une petite partition ( 1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition ( de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normal de debian en utilisant le BIOS pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk ( à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une LiveCD pour faire une peu de place sur le disque. 
*créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*formatez-la en FAT et montez là sur /boot/efi (/boot /efi n'existe pas, créez-le auparavant) et montez la de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stables &amp; testing ne semblent pas fonctionner correctement, j'ai du dans mon cas utiliser le paquet dans SID.''
Préparez Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Génère une image Grub
*Installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est à dire /boot/efi/efi/debian ....)
*Essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêter ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''
Copiez (Pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...) il bloque après la selection du noyau dans GRUB
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>gviavpb1ggbv06i845vhu70q79qmpkj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5003</id>
      <parentid>5002</parentid>
      <timestamp>2013-02-20T16:41:13Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <comment>/* Installation neuve de Debian */</comment>
      <text xml:space="preserve" bytes="4028">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

*Formater le disque et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition ( 1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition ( de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normal de debian en utilisant le BIOS pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk ( à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une LiveCD pour faire une peu de place sur le disque. 
*créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*formatez-la en FAT et montez là sur /boot/efi (/boot /efi n'existe pas, créez-le auparavant) et montez la de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stables &amp; testing ne semblent pas fonctionner correctement, j'ai du dans mon cas utiliser le paquet dans SID.''
Préparez Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Génère une image Grub
*Installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est à dire /boot/efi/efi/debian ....)
*Essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêter ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''
Copiez (Pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...) il bloque après la selection du noyau dans GRUB
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>ju87zbka8n64qhac1quaopu6mvxcyl3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5004</id>
      <parentid>5003</parentid>
      <timestamp>2013-02-20T16:42:04Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <comment>/* Installation neuve de Debian */</comment>
      <text xml:space="preserve" bytes="4028">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

*Formater le disque et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition ( 1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition ( de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normal de debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk ( à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une LiveCD pour faire une peu de place sur le disque. 
*créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*formatez-la en FAT et montez là sur /boot/efi (/boot /efi n'existe pas, créez-le auparavant) et montez la de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stables &amp; testing ne semblent pas fonctionner correctement, j'ai du dans mon cas utiliser le paquet dans SID.''
Préparez Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Génère une image Grub
*Installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est à dire /boot/efi/efi/debian ....)
*Essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêter ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''
Copiez (Pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...) il bloque après la selection du noyau dans GRUB
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>21e6ki695zeje370ihj50ivpz47o48p</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5005</id>
      <parentid>5004</parentid>
      <timestamp>2013-02-20T16:42:23Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <comment>/* Installation neuve de Debian */</comment>
      <text xml:space="preserve" bytes="4027">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

*Formater le disque et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition ( de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normal de debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk ( à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une LiveCD pour faire une peu de place sur le disque. 
*créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*formatez-la en FAT et montez là sur /boot/efi (/boot /efi n'existe pas, créez-le auparavant) et montez la de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stables &amp; testing ne semblent pas fonctionner correctement, j'ai du dans mon cas utiliser le paquet dans SID.''
Préparez Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Génère une image Grub
*Installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est à dire /boot/efi/efi/debian ....)
*Essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêter ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''
Copiez (Pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...) il bloque après la selection du noyau dans GRUB
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>5at0k26sfhmf3409rlnni6l7hjjhwtg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5006</id>
      <parentid>5005</parentid>
      <timestamp>2013-02-20T16:43:12Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <comment>/* Installation neuve de Debian */</comment>
      <text xml:space="preserve" bytes="4027">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

*Formater le disque et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk ( à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une LiveCD pour faire une peu de place sur le disque. 
*créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*formatez-la en FAT et montez là sur /boot/efi (/boot /efi n'existe pas, créez-le auparavant) et montez la de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stables &amp; testing ne semblent pas fonctionner correctement, j'ai du dans mon cas utiliser le paquet dans SID.''
Préparez Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Génère une image Grub
*Installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est à dire /boot/efi/efi/debian ....)
*Essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêter ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''
Copiez (Pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...) il bloque après la selection du noyau dans GRUB
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>afb9fexbnw78xmc96rwi9wmf4ututi9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5007</id>
      <parentid>5006</parentid>
      <timestamp>2013-02-20T16:44:05Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <comment>/* Installation neuve de Debian */</comment>
      <text xml:space="preserve" bytes="4027">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

*Formater le disque et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk ( à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une LiveCD pour faire une peu de place sur le disque. 
*créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*formatez-la en FAT et montez là sur /boot/efi (/boot /efi n'existe pas, créez-le auparavant) et montez la de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stables &amp; testing ne semblent pas fonctionner correctement, j'ai du dans mon cas utiliser le paquet dans SID.''
Préparez Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Génère une image Grub
*Installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est à dire /boot/efi/efi/debian ....)
*Essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêter ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''
Copiez (Pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...) il bloque après la selection du noyau dans GRUB
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>0k6geey9hl3rhprgivpeobr7pfhwwll</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5008</id>
      <parentid>5007</parentid>
      <timestamp>2013-02-20T16:44:33Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <comment>/* Debian déjà installé */</comment>
      <text xml:space="preserve" bytes="4026">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

*Formater le disque et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une LiveCD pour faire une peu de place sur le disque. 
*créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*formatez-la en FAT et montez là sur /boot/efi (/boot /efi n'existe pas, créez-le auparavant) et montez la de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stables &amp; testing ne semblent pas fonctionner correctement, j'ai du dans mon cas utiliser le paquet dans SID.''
Préparez Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Génère une image Grub
*Installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est à dire /boot/efi/efi/debian ....)
*Essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêter ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''
Copiez (Pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...) il bloque après la selection du noyau dans GRUB
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>lxkk3zmuecf3n22rg9s9efcdbzyxj6z</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5009</id>
      <parentid>5008</parentid>
      <timestamp>2013-02-20T16:45:11Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <comment>/* Debian déjà installé */</comment>
      <text xml:space="preserve" bytes="4025">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

*Formater le disque et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une LiveCD pour faire une peu de place sur le disque. 
*créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*formatez-la en FAT et montez là sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) et montez la de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stables &amp; testing ne semblent pas fonctionner correctement, j'ai du dans mon cas utiliser le paquet dans SID.''
Préparez Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Génère une image Grub
*Installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est à dire /boot/efi/efi/debian ....)
*Essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêter ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''
Copiez (Pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...) il bloque après la selection du noyau dans GRUB
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>qj9odt5yc5ii5331xmngs255s7g9eu7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5010</id>
      <parentid>5009</parentid>
      <timestamp>2013-02-20T16:47:16Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <comment>/* Debian déjà installé */</comment>
      <text xml:space="preserve" bytes="4025">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

*Formater le disque et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une liveCD pour faire une peu de place sur le disque. 
*créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*formatez-la en FAT et montez là sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) et montez la de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stables &amp; testing ne semblent pas fonctionner correctement, j'ai du dans mon cas utiliser le paquet dans SID.''
Préparez Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Génère une image Grub
*Installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est à dire /boot/efi/efi/debian ....)
*Essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêter ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''
Copiez (Pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...) il bloque après la selection du noyau dans GRUB
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>ikzx48if0i3fwi0uln8e12jm3tpdja0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5011</id>
      <parentid>5010</parentid>
      <timestamp>2013-02-20T16:48:51Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <comment>/* Passer en UEFI */</comment>
      <text xml:space="preserve" bytes="4031">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

*Formater le disque et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une liveCD pour faire une peu de place sur le disque. 
*créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*formatez-la en FAT et montez là sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) et montez la de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stables &amp; testing ne semblent pas fonctionner correctement, j'ai du dans mon cas utiliser le paquet dans SID.''
Préparez Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Génère une image Grub
*Installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est à dire /boot/efi/efi/debian ....)
*Essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêter ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''&lt;br /&gt;
Copiez (Pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...) il bloque après la selection du noyau dans GRUB
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>m06s0mtziayngushlchkxg5ck8tz77c</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5012</id>
      <parentid>5011</parentid>
      <timestamp>2013-02-20T16:49:51Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <comment>/* Passer en UEFI */</comment>
      <text xml:space="preserve" bytes="4032">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

*Formater le disque et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une liveCD pour faire une peu de place sur le disque. 
*créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*formatez-la en FAT et montez là sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) et montez la de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stable &amp; testing ne semblent pas fonctionner correctement, j'ai du, dans mon cas, utiliser le paquet dans SID.''
Préparez Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Génère une image Grub
*Installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est à dire /boot/efi/efi/debian ....)
*Essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêter ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''&lt;br /&gt;
Copiez (Pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...) il bloque après la selection du noyau dans GRUB
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>jny14riqdpej5jd7a5srvpy4myf7g0s</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5013</id>
      <parentid>5012</parentid>
      <timestamp>2013-02-20T16:52:26Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <comment>/* Debian déjà installé */</comment>
      <text xml:space="preserve" bytes="4031">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

*Formater le disque et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une liveCD pour faire une peu de place sur le disque. 
*créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*formater la partition FAT puis la monter là sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stable &amp; testing ne semblent pas fonctionner correctement, j'ai du, dans mon cas, utiliser le paquet dans SID.''
Préparez Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Génère une image Grub
*Installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est à dire /boot/efi/efi/debian ....)
*Essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêter ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''&lt;br /&gt;
Copiez (Pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...) il bloque après la selection du noyau dans GRUB
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>eopnr3d0jzxobs2dybs7ebbs7ltnige</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5014</id>
      <parentid>5013</parentid>
      <timestamp>2013-02-20T16:53:14Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <comment>/* Debian déjà installé */</comment>
      <text xml:space="preserve" bytes="4027">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

*Formater le disque et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une liveCD pour faire une peu de place sur le disque. 
*créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*formater la partition FAT puis la monter sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stable &amp; testing ne semblent pas fonctionner correctement, j'ai du, dans mon cas, utiliser le paquet dans SID.''
Préparez Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Génère une image Grub
*Installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est à dire /boot/efi/efi/debian ....)
*Essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêter ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''&lt;br /&gt;
Copiez (Pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...) il bloque après la selection du noyau dans GRUB
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>aeqvwo119ywmjzfsuddzwg7sxxwtars</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5015</id>
      <parentid>5014</parentid>
      <timestamp>2013-02-20T16:54:27Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <comment>/* Debian déjà installé */</comment>
      <text xml:space="preserve" bytes="4023">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

*Formater le disque et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une liveCD pour faire une peu de place sur le disque. 
*Créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*Formater la partition en FAT
*Monter sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stable &amp; testing ne semblent pas fonctionner correctement, j'ai du, dans mon cas, utiliser le paquet dans SID.''
Préparez Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Génère une image Grub
*Installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est à dire /boot/efi/efi/debian ....)
*Essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêter ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''&lt;br /&gt;
Copiez (Pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...) il bloque après la selection du noyau dans GRUB
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>7cc9nl4ronr53nsdje80pp4ftm8lhti</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5016</id>
      <parentid>5015</parentid>
      <timestamp>2013-02-20T16:55:43Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <comment>/* Passer en UEFI */</comment>
      <text xml:space="preserve" bytes="4023">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

*Formater le disque et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une liveCD pour faire une peu de place sur le disque. 
*Créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*Formater la partition en FAT
*Monter sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stable &amp; testing ne semblent pas fonctionner correctement. J'ai du, dans mon cas, utiliser le paquet dans SID.''
Préparez Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Génère une image Grub
*Installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est à dire /boot/efi/efi/debian ....)
*Essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêter ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''&lt;br /&gt;
Copiez (Pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...) il bloque après la selection du noyau dans GRUB
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>6b4wmjscdtd2rterxi4oqdua4am7lj3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5017</id>
      <parentid>5016</parentid>
      <timestamp>2013-02-20T16:56:11Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <comment>/* Passer en UEFI */</comment>
      <text xml:space="preserve" bytes="4029">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

*Formater le disque et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une liveCD pour faire une peu de place sur le disque. 
*Créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*Formater la partition en FAT
*Monter sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stable &amp; testing ne semblent pas fonctionner correctement. J'ai du, dans mon cas, utiliser le paquet dans SID.''&lt;br /&gt;
Préparez Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Génère une image Grub
*Installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est à dire /boot/efi/efi/debian ....)
*Essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêter ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''&lt;br /&gt;
Copiez (Pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...) il bloque après la selection du noyau dans GRUB
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>7drzmyz5r1fdulyjpwkogszm2fu6fyr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5018</id>
      <parentid>5017</parentid>
      <timestamp>2013-02-20T16:56:21Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <comment>/* Passer en UEFI */</comment>
      <text xml:space="preserve" bytes="4030">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

*Formater le disque et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une liveCD pour faire une peu de place sur le disque. 
*Créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*Formater la partition en FAT
*Monter sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stable &amp; testing ne semblent pas fonctionner correctement. J'ai du, dans mon cas, utiliser le paquet dans SID.''&lt;br /&gt;

Préparez Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Génère une image Grub
*Installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est à dire /boot/efi/efi/debian ....)
*Essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêter ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''&lt;br /&gt;
Copiez (Pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...) il bloque après la selection du noyau dans GRUB
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>mwr1nkypvyoslnovfs1weshxt8h94gb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5019</id>
      <parentid>5018</parentid>
      <timestamp>2013-02-20T16:57:08Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <comment>/* Passer en UEFI */</comment>
      <text xml:space="preserve" bytes="4031">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

*Formater le disque et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une liveCD pour faire une peu de place sur le disque. 
*Créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*Formater la partition en FAT
*Monter sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stable &amp; testing ne semblent pas fonctionner correctement. J'ai dû, dans mon cas, utiliser le paquet dans SID.''&lt;br /&gt;

Préparez Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Génère une image Grub
*Installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est à dire /boot/efi/efi/debian ....)
*Essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêter ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''&lt;br /&gt;
Copiez (Pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...) il bloque après la selection du noyau dans GRUB
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>liqyas9iun34ycunnw18jcrlyx154gb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5020</id>
      <parentid>5019</parentid>
      <timestamp>2013-02-20T17:03:32Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <comment>/* Passer en UEFI */</comment>
      <text xml:space="preserve" bytes="4046">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

*Formater le disque et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une liveCD pour faire une peu de place sur le disque. 
*Créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*Formater la partition en FAT
*Monter sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stable &amp; testing ne semblent pas fonctionner correctement. J'ai dû, dans mon cas, utiliser le paquet dans SID.''&lt;br /&gt;

Préparer Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Elle génère une image Grub
*Elle installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est-à-dire /boot/efi/efi/debian ....)
*Elle essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêtez ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''&lt;br /&gt;
Copier (Pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...) il bloque après la selection du noyau dans GRUB
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>nsp44oyizlk1i2ep35q52valuskhgpf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5021</id>
      <parentid>5020</parentid>
      <timestamp>2013-02-20T17:04:31Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <comment>/* Passer en UEFI */</comment>
      <text xml:space="preserve" bytes="4046">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

*Formater le disque et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une liveCD pour faire une peu de place sur le disque. 
*Créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*Formater la partition en FAT
*Monter sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stable &amp; testing ne semblent pas fonctionner correctement. J'ai dû, dans mon cas, utiliser le paquet dans SID.''&lt;br /&gt;

Préparer Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Elle génère une image Grub
*Elle installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est-à-dire /boot/efi/efi/debian ....)
*Elle essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêtez ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''&lt;br /&gt;
Copier (pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...) il bloque après la selection du noyau dans GRUB
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>pscpkkrwf1b8f6tkslvy2ib6whdncrx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5022</id>
      <parentid>5021</parentid>
      <timestamp>2013-02-20T17:05:33Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <comment>/* Bugs &amp; Informations Importantes */</comment>
      <text xml:space="preserve" bytes="4054">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

*Formater le disque et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une liveCD pour faire une peu de place sur le disque. 
*Créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*Formater la partition en FAT
*Monter sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stable &amp; testing ne semblent pas fonctionner correctement. J'ai dû, dans mon cas, utiliser le paquet dans SID.''&lt;br /&gt;

Préparer Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Elle génère une image Grub
*Elle installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est-à-dire /boot/efi/efi/debian ....)
*Elle essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêtez ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''&lt;br /&gt;
Copier (pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (Penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...). Il bloque après la selection du noyau dans Grub.&lt;br /&gt;
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>dcs5u4wqbp0038qrbg3q7r59kblmh4z</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5023</id>
      <parentid>5022</parentid>
      <timestamp>2013-02-20T17:06:10Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <comment>/* Passer en UEFI */</comment>
      <text xml:space="preserve" bytes="4062">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

*Formater le disque et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une liveCD pour faire une peu de place sur le disque. 
*Créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*Formater la partition en FAT
*Monter sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stable &amp; testing ne semblent pas fonctionner correctement. J'ai dû, dans mon cas, utiliser le paquet dans SID.''&lt;br /&gt;

Préparer Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Elle génère une image Grub
*Elle installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est-à-dire /boot/efi/efi/debian ....)
*Elle essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêtez ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''&lt;br /&gt;
Copier (pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (il faut penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois démarrer votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...). Il bloque après la selection du noyau dans Grub.&lt;br /&gt;
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>sxbvh62n81nbsvcucvgnnc2yw2xw4xg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5024</id>
      <parentid>5023</parentid>
      <timestamp>2013-02-20T17:07:27Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <comment>/* Nettoyage */</comment>
      <text xml:space="preserve" bytes="4078">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

*Formater le disque et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une liveCD pour faire une peu de place sur le disque. 
*Créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*Formater la partition en FAT
*Monter sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stable &amp; testing ne semblent pas fonctionner correctement. J'ai dû, dans mon cas, utiliser le paquet dans SID.''&lt;br /&gt;

Préparer Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Elle génère une image Grub
*Elle installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est-à-dire /boot/efi/efi/debian ....)
*Elle essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêtez ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''&lt;br /&gt;
Copier (pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (il faut penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois que vous aurez démarré votre Debian via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire.

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...). Il bloque après la selection du noyau dans Grub.&lt;br /&gt;
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>r2r8lxpkd0pyxsil65uvaoxhurfx3uo</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5025</id>
      <parentid>5024</parentid>
      <timestamp>2013-02-20T17:09:11Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <comment>/* Nettoyage */</comment>
      <text xml:space="preserve" bytes="4062">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

*Formater le disque et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une liveCD pour faire une peu de place sur le disque. 
*Créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*Formater la partition en FAT
*Monter sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stable &amp; testing ne semblent pas fonctionner correctement. J'ai dû, dans mon cas, utiliser le paquet dans SID.''&lt;br /&gt;

Préparer Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Elle génère une image Grub
*Elle installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est-à-dire /boot/efi/efi/debian ....)
*Elle essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêtez ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''&lt;br /&gt;
Copier (pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (il faut penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois le système démarré via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire.

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...). Il bloque après la selection du noyau dans Grub.&lt;br /&gt;
J'ai du installer le paquet depuis les dépots &quot;unstable&quot; un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]</text>
      <sha1>lp3oshjmplhi8gqo0dp4l6h4b9hql1m</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5026</id>
      <parentid>5025</parentid>
      <timestamp>2013-02-20T17:10:04Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <comment>/* Bugs &amp; Informations Importantes */</comment>
      <text xml:space="preserve" bytes="4101">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

*Formater le disque et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une liveCD pour faire une peu de place sur le disque. 
*Créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*Formater la partition en FAT
*Monter sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stable &amp; testing ne semblent pas fonctionner correctement. J'ai dû, dans mon cas, utiliser le paquet dans SID.''&lt;br /&gt;

Préparer Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Elle génère une image Grub
*Elle installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est-à-dire /boot/efi/efi/debian ....)
*Elle essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêtez ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''&lt;br /&gt;
Copier (pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (il faut penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois le système démarré via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire.

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...). Il bloque après la selection du noyau dans Grub.&lt;br /&gt;
J'ai dû installer le paquet depuis les dépots &quot;unstable&quot;. Un premier essai avec les dépots en testing n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]. Merci à ORNis pour sa relecture :)</text>
      <sha1>nuh9wecrvd15vqp0uise3846crlkaya</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5027</id>
      <parentid>5026</parentid>
      <timestamp>2013-02-20T17:10:41Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <comment>/* Bugs &amp; Informations Importantes */</comment>
      <text xml:space="preserve" bytes="4107">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

*Formater le disque et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une liveCD pour faire une peu de place sur le disque. 
*Créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*Formater la partition en FAT
*Monter sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stable &amp; testing ne semblent pas fonctionner correctement. J'ai dû, dans mon cas, utiliser le paquet dans SID.''&lt;br /&gt;

Préparer Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Elle génère une image Grub
*Elle installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est-à-dire /boot/efi/efi/debian ....)
*Elle essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêtez ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''&lt;br /&gt;
Copier (pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (il faut penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois le système démarré via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire.

== Bugs &amp; Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...). Il bloque après la selection du noyau dans Grub.&lt;br /&gt;
J'ai dû installer le paquet depuis les dépots ''unstable''. Un premier essai avec les dépots en ''testing'' n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]. Merci à ORNis pour sa relecture :)</text>
      <sha1>1ekyu9noij4x03atybjasduugmvj23g</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5028</id>
      <parentid>5027</parentid>
      <timestamp>2013-02-20T17:11:50Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <comment>/* Bugs &amp; Informations Importantes */</comment>
      <text xml:space="preserve" bytes="4108">'''''Page en cours de rédaction !!!!''' 
''

Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

*Formater le disque et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une liveCD pour faire une peu de place sur le disque. 
*Créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*Formater la partition en FAT
*Monter sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stable &amp; testing ne semblent pas fonctionner correctement. J'ai dû, dans mon cas, utiliser le paquet dans SID.''&lt;br /&gt;

Préparer Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Elle génère une image Grub
*Elle installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est-à-dire /boot/efi/efi/debian ....)
*Elle essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêtez ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''&lt;br /&gt;
Copier (pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (il faut penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois le système démarré via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire.

== Bugs et Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...). Il bloque après la selection du noyau dans Grub.&lt;br /&gt;
J'ai dû installer le paquet depuis les dépots ''unstable''. Un premier essai avec les dépots en ''testing'' n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]. Merci à ORNis pour sa relecture :)</text>
      <sha1>p5y9mvxnk93u69tfit4s7ic9ibrd2ni</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5029</id>
      <parentid>5028</parentid>
      <timestamp>2013-02-20T17:15:55Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <text xml:space="preserve" bytes="4062">Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

*Formater le disque et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une liveCD pour faire une peu de place sur le disque. 
*Créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*Formater la partition en FAT
*Monter sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stable &amp; testing ne semblent pas fonctionner correctement. J'ai dû, dans mon cas, utiliser le paquet dans SID.''&lt;br /&gt;

Préparer Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Elle génère une image Grub
*Elle installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est-à-dire /boot/efi/efi/debian ....)
*Elle essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêtez ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''&lt;br /&gt;
Copier (pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (il faut penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois le système démarré via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire.

== Bugs et Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...). Il bloque après la selection du noyau dans Grub.&lt;br /&gt;
J'ai dû installer le paquet depuis les dépots ''unstable''. Un premier essai avec les dépots en ''testing'' n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]. Merci à ORNis pour sa relecture :)</text>
      <sha1>5597xftfsizufnntz7cb9w4x69t9u1y</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5030</id>
      <parentid>5029</parentid>
      <timestamp>2013-02-20T17:18:29Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <comment>/* kézako ? */</comment>
      <text xml:space="preserve" bytes="4062">Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien Bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

*Formater le disque et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une liveCD pour faire une peu de place sur le disque. 
*Créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*Formater la partition en FAT
*Monter sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stable &amp; testing ne semblent pas fonctionner correctement. J'ai dû, dans mon cas, utiliser le paquet dans SID.''&lt;br /&gt;

Préparer Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Elle génère une image Grub
*Elle installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est-à-dire /boot/efi/efi/debian ....)
*Elle essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêtez ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''&lt;br /&gt;
Copier (pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (il faut penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois le système démarré via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire.

== Bugs et Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...). Il bloque après la selection du noyau dans Grub.&lt;br /&gt;
J'ai dû installer le paquet depuis les dépots ''unstable''. Un premier essai avec les dépots en ''testing'' n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]. Merci à ORNis pour sa relecture :)</text>
      <sha1>f5ieiskv362zg7agjtonp6pjfsrvyov</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5607</id>
      <parentid>5030</parentid>
      <timestamp>2014-04-28T08:28:13Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="4079">Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien Bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

* Supprimer les artitions existantes et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une liveCD pour faire une peu de place sur le disque. 
*Créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*Formater la partition en FAT
*Monter sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stable &amp; testing ne semblent pas fonctionner correctement. J'ai dû, dans mon cas, utiliser le paquet dans SID.''&lt;br /&gt;

Préparer Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Elle génère une image Grub
*Elle installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est-à-dire /boot/efi/efi/debian ....)
*Elle essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêtez ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''&lt;br /&gt;
Copier (pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce dossier que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (il faut penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois le système démarré via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire.

== Bugs et Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...). Il bloque après la selection du noyau dans Grub.&lt;br /&gt;
J'ai dû installer le paquet depuis les dépots ''unstable''. Un premier essai avec les dépots en ''testing'' n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]. Merci à ORNis pour sa relecture :)</text>
      <sha1>iq5mtatwr1etjm0805lpiiuz477j5x9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5719</id>
      <parentid>5607</parentid>
      <timestamp>2014-08-20T03:56:27Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Passer en UEFI */ chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="4087">Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien Bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

* Supprimer les artitions existantes et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une liveCD pour faire une peu de place sur le disque. 
*Créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*Formater la partition en FAT
*Monter sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stable &amp; testing ne semblent pas fonctionner correctement. J'ai dû, dans mon cas, utiliser le paquet dans SID.''&lt;br /&gt;

Préparer Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Elle génère une image Grub
*Elle installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est-à-dire /boot/efi/efi/debian ....)
*Elle essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêtez ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''&lt;br /&gt;
Copier (pas de lien symbolique !, système FAT oblige) l'image GRUB dans le répertoire de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce répertoire que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (il faut penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois le système démarré via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire.

== Bugs et Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...). Il bloque après la selection du noyau dans Grub.&lt;br /&gt;
J'ai dû installer le paquet depuis les dépots ''unstable''. Un premier essai avec les dépots en ''testing'' n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]. Merci à ORNis pour sa relecture :)</text>
      <sha1>rmd9zds313e5c5gz7htuspiwnkrwpaf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5785</id>
      <parentid>5719</parentid>
      <timestamp>2014-08-21T14:54:55Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Installation neuve de Debian */</comment>
      <text xml:space="preserve" bytes="4088">Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien Bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

* Supprimer les partitions existantes et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**Initialiser le type sur &quot;Bios Boot Partition&quot;
**NE PAS la formater et ne pas la monter

*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une liveCD pour faire une peu de place sur le disque. 
*Créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*Formater la partition en FAT
*Monter sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stable &amp; testing ne semblent pas fonctionner correctement. J'ai dû, dans mon cas, utiliser le paquet dans SID.''&lt;br /&gt;

Préparer Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Elle génère une image Grub
*Elle installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est-à-dire /boot/efi/efi/debian ....)
*Elle essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêtez ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''&lt;br /&gt;
Copier (pas de lien symbolique !, système FAT oblige) l'image GRUB dans le répertoire de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce répertoire que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (il faut penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois le système démarré via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire.

== Bugs et Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...). Il bloque après la selection du noyau dans Grub.&lt;br /&gt;
J'ai dû installer le paquet depuis les dépots ''unstable''. Un premier essai avec les dépots en ''testing'' n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]. Merci à ORNis pour sa relecture :)</text>
      <sha1>bzrzb041irpnk0sausayrxhb9ljs4pc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5789</id>
      <parentid>5785</parentid>
      <timestamp>2014-09-02T17:57:21Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <minor/>
      <comment>Précision pour initialiser le type de partition</comment>
      <text xml:space="preserve" bytes="4390">Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien Bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

* Supprimer les partitions existantes et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**NE PAS la formater et ne pas la monter
**Initialiser le type sur &quot;Bios Boot Partition&quot;
*** Avec Gparted il faut mettre le drapeau &quot;bios_grub&quot;, s'il ne veut pas il faut formater la partition en FAT16 pour le mettre
*** Avec parted taper la commande &quot;set 1 bios_grub on&quot;, le numéro étant le rang de la partition
*** Avec gdisk (GPT fdisk) donner le code &quot;EF02&quot; à la partition visé


*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
**Formater la partition en FAT16/32
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une liveCD pour faire une peu de place sur le disque. 
*Créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*Formater la partition en FAT
*Monter sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stable &amp; testing ne semblent pas fonctionner correctement. J'ai dû, dans mon cas, utiliser le paquet dans SID.''&lt;br /&gt;

Préparer Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Elle génère une image Grub
*Elle installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est-à-dire /boot/efi/efi/debian ....)
*Elle essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêtez ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''&lt;br /&gt;
Copier (pas de lien symbolique !, système FAT oblige) l'image GRUB dans le répertoire de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce répertoire que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (il faut penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois le système démarré via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire.

== Bugs et Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...). Il bloque après la selection du noyau dans Grub.&lt;br /&gt;
J'ai dû installer le paquet depuis les dépots ''unstable''. Un premier essai avec les dépots en ''testing'' n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]. Merci à ORNis pour sa relecture :)</text>
      <sha1>4n5ffgx6vyfjde87ptj69cbp9c441rb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5790</id>
      <parentid>5789</parentid>
      <timestamp>2014-09-02T19:23:22Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="4594">Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien Bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

* Supprimer les partitions existantes et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**NE PAS la formater et ne pas la monter
**Initialiser le type sur &quot;Bios Boot Partition&quot;
*** Avec ''Gparted'' il faut mettre le drapeau &quot;bios_grub&quot;, s'il ne veut pas il faut formater la partition en FAT16 pour le mettre
*** Avec ''parted'' taper la commande &quot;set 1 bios_grub on&quot;, le numéro étant le rang de la partition
*** Avec ''gdisk'' (GPT fdisk) donner le code &quot;EF02&quot; à la partition visé


*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
*** Avec ''Gparted'' il faut mettre le drapeau &quot;boot&quot;
*** Avec ''parted'' taper la commande &quot;set 1 boot on&quot;, le numéro étant le rang de la partition
*** Avec ''gdisk'' donner le code &quot;EF00&quot;
**Formater la partition en FAT16/32
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une liveCD pour faire une peu de place sur le disque. 
*Créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*Formater la partition en FAT
*Monter sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stable &amp; testing ne semblent pas fonctionner correctement. J'ai dû, dans mon cas, utiliser le paquet dans SID.''&lt;br /&gt;

Préparer Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Elle génère une image Grub
*Elle installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est-à-dire /boot/efi/efi/debian ....)
*Elle essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêtez ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''&lt;br /&gt;
Copier (pas de lien symbolique !, système FAT oblige) l'image GRUB dans le répertoire de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce répertoire que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (il faut penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois le système démarré via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire.

== Bugs et Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...). Il bloque après la selection du noyau dans Grub.&lt;br /&gt;
J'ai dû installer le paquet depuis les dépots ''unstable''. Un premier essai avec les dépots en ''testing'' n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]. Merci à ORNis pour sa relecture :)</text>
      <sha1>kzgthl7s4zrhhz76h5jeup57v7yzzog</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5791</id>
      <parentid>5790</parentid>
      <timestamp>2014-09-02T19:24:00Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="4594">Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien Bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

* Supprimer les partitions existantes et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**NE PAS la formater et ne pas la monter
**Initialiser le type sur &quot;Bios Boot Partition&quot;
*** Avec ''Gparted'' il faut mettre le drapeau &quot;bios_grub&quot;, s'il ne veut pas il faut formater la partition en FAT16 pour le mettre
*** Avec ''parted'' taper la commande &quot;set 1 bios_grub on&quot;, le numéro étant le rang de la partition
*** Avec ''gdisk'' (GPT fdisk) donner le code &quot;EF02&quot; à la partition visé


*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Formater la partition en FAT16/32
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
*** Avec ''Gparted'' il faut mettre le drapeau &quot;boot&quot;
*** Avec ''parted'' taper la commande &quot;set 1 boot on&quot;, le numéro étant le rang de la partition
*** Avec ''gdisk'' donner le code &quot;EF00&quot;
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une liveCD pour faire une peu de place sur le disque. 
*Créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*Formater la partition en FAT
*Monter sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stable &amp; testing ne semblent pas fonctionner correctement. J'ai dû, dans mon cas, utiliser le paquet dans SID.''&lt;br /&gt;

Préparer Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Elle génère une image Grub
*Elle installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est-à-dire /boot/efi/efi/debian ....)
*Elle essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêtez ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''&lt;br /&gt;
Copier (pas de lien symbolique !, système FAT oblige) l'image GRUB dans le répertoire de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce répertoire que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (il faut penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois le système démarré via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire.

== Bugs et Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...). Il bloque après la selection du noyau dans Grub.&lt;br /&gt;
J'ai dû installer le paquet depuis les dépots ''unstable''. Un premier essai avec les dépots en ''testing'' n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]. Merci à ORNis pour sa relecture :)</text>
      <sha1>5ai93jh0ydd33n03ga8c139tpa0dldp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5792</id>
      <parentid>5791</parentid>
      <timestamp>2014-09-02T20:20:20Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <minor/>
      <comment>/* Passer en UEFI */</comment>
      <text xml:space="preserve" bytes="4946">Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien Bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

* Supprimer les partitions existantes et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**NE PAS la formater et ne pas la monter
**Initialiser le type sur &quot;Bios Boot Partition&quot;
*** Avec ''Gparted'' il faut mettre le drapeau &quot;bios_grub&quot;, s'il ne veut pas il faut formater la partition en FAT16 pour le mettre
*** Avec ''parted'' taper la commande &quot;set 1 bios_grub on&quot;, le numéro étant le rang de la partition
*** Avec ''gdisk'' (GPT fdisk) donner le code &quot;EF02&quot; à la partition visé


*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Formater la partition en FAT16/32
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
*** Avec ''Gparted'' il faut mettre le drapeau &quot;boot&quot;
*** Avec ''parted'' taper la commande &quot;set 1 boot on&quot;, le numéro étant le rang de la partition
*** Avec ''gdisk'' donner le code &quot;EF00&quot;
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une liveCD pour faire une peu de place sur le disque. 
*Créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*Formater la partition en FAT
*Monter sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention le paquet dans les dépots stable &amp; testing ne semblent pas fonctionner correctement. J'ai dû, dans mon cas, utiliser le paquet dans SID.''&lt;br /&gt;

Si vous voulez installer grub sur un disque que vous préparez en chroot il faut monter quelques répertoire système avant :
 mount /dev/sdXX /mnt
 mount --bind /dev  /mnt/dev
 mount --bind /proc /mnt/proc
 mount --bind /sys  /mnt/sys
 mount --bind /usr/ /mnt/usr &lt;= pas utile si vous avez déjà coper le système sur le nouveau disque
 chroot /mnt

Préparer Grub via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait 3 choses : 
*Elle génère une image Grub
*Elle installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est-à-dire /boot/efi/efi/debian ....)
*Elle essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le Boot Manager UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention arrêtez ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''&lt;br /&gt;
Copier (pas de lien symbolique !, système FAT oblige) l'image GRUB dans le répertoire de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce répertoire que le système UEFI va regarder

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (il faut penser à changer la méthode de démarrage dans UEFI)
Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois le système démarré via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire.

== Bugs et Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...). Il bloque après la selection du noyau dans Grub.&lt;br /&gt;
J'ai dû installer le paquet depuis les dépots ''unstable''. Un premier essai avec les dépots en ''testing'' n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]. Merci à ORNis pour sa relecture :)</text>
      <sha1>a5lsmv6kmhsukip6q6tpa3877r5jbd6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5793</id>
      <parentid>5792</parentid>
      <timestamp>2014-09-05T20:23:22Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>/* Passer en UEFI */</comment>
      <text xml:space="preserve" bytes="5038">Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien Bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

* Supprimer les partitions existantes et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**NE PAS la formater et ne pas la monter
**Initialiser le type sur &quot;Bios Boot Partition&quot;
*** Avec ''Gparted'' il faut mettre le drapeau &quot;bios_grub&quot;, s'il ne veut pas il faut formater la partition en FAT16 pour le mettre
*** Avec ''parted'' taper la commande &quot;set 1 bios_grub on&quot;, le numéro étant le rang de la partition
*** Avec ''gdisk'' (GPT fdisk) donner le code &quot;EF02&quot; à la partition visé


*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Formater la partition en FAT16/32
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
*** Avec ''Gparted'' il faut mettre le drapeau &quot;boot&quot;
*** Avec ''parted'' taper la commande &quot;set 1 boot on&quot;, le numéro étant le rang de la partition
*** Avec ''gdisk'' donner le code &quot;EF00&quot;
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une liveCD pour faire une peu de place sur le disque. 
*Créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*Formater la partition en FAT
*Monter sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''Attention les versions du paquet dans les dépôts stable &amp; testing ne semblent pas fonctionner correctement. J'ai dû, dans mon cas, utiliser le version fournie en unstable (2 septembre 2014).''&lt;br /&gt;

Si vous voulez installer GRUB sur un disque que vous préparez en chroot il faut monter quelques répertoires systèmes avant :
 mount /dev/sdXX /mnt
 mount --bind /dev  /mnt/dev
 mount --bind /proc /mnt/proc
 mount --bind /sys  /mnt/sys
 mount --bind /usr  /mnt/usr &lt;= inutile si vous avez déjà copié le système sur le nouveau disque
 chroot /mnt

Préparer GRUB via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait trois choses : 
*Elle génère une image GRUB
*Elle installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C’est-à-dire /boot/efi/efi/debian…)
*Elle essaye de configurer le gestionnaire de démarrage UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le gestionnaire de démarrage UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention, arrêtez ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''&lt;br /&gt;
Copier (pas de lien symbolique !, système FAT oblige) l’image GRUB dans le répertoire de la partition EFI :
 cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi

C'est dans ce répertoire que le système UEFI va regarder.

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (il faut penser à changer la méthode de démarrage dans UEFI).

Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois le système démarré via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire.

== Bugs et Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...). Il bloque après la selection du noyau dans Grub.&lt;br /&gt;
J'ai dû installer le paquet depuis les dépots ''unstable''. Un premier essai avec les dépots en ''testing'' n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]. Merci à ORNis pour sa relecture :)</text>
      <sha1>68gdgw773sbxhh30tczo9x0gjmhqalb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5814</id>
      <parentid>5793</parentid>
      <timestamp>2014-09-06T22:30:04Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <minor/>
      <comment>Ajout d'un cas d'erreur et la commande solution</comment>
      <text xml:space="preserve" bytes="5819">Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien Bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

* Supprimer les partitions existantes et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**NE PAS la formater et ne pas la monter
**Initialiser le type sur &quot;Bios Boot Partition&quot;
*** Avec ''Gparted'' il faut mettre le drapeau &quot;bios_grub&quot;, s'il ne veut pas il faut formater la partition en FAT16 pour le mettre
*** Avec ''parted'' taper la commande &quot;set 1 bios_grub on&quot;, le numéro étant le rang de la partition
*** Avec ''gdisk'' (GPT fdisk) donner le code &quot;EF02&quot; à la partition visé


*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Formater la partition en FAT16/32
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
*** Avec ''Gparted'' il faut mettre le drapeau &quot;boot&quot;
*** Avec ''parted'' taper la commande &quot;set 1 boot on&quot;, le numéro étant le rang de la partition
*** Avec ''gdisk'' donner le code &quot;EF00&quot;
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une liveCD pour faire une peu de place sur le disque. 
*Créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*Formater la partition en FAT
*Monter sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) de façon permanente via le fstab

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention les versions du paquet dans les dépôts stable &amp; testing ne semblent pas fonctionner correctement. J'ai dû, dans mon cas, utiliser le version fournie en unstable (2 septembre 2014).''&lt;/span&gt;&lt;br /&gt;
Normalement il va vous demander de supprimer les paquets &quot;grub-pc&quot; et &quot;grub-pc-bin&quot;, s'il ne vous propose qu'un des deux seulement, désinstaller le deuxième manuellement

Si vous voulez installer GRUB sur un disque que vous préparez en chroot il faut monter quelques répertoires systèmes avant :
 mount /dev/sdXX /mnt
 mount --bind /dev  /mnt/dev
 mount --bind /proc /mnt/proc
 mount --bind /sys  /mnt/sys
 mount --bind /usr  /mnt/usr &lt;= inutile si vous avez déjà copié le système sur le nouveau disque
 chroot /mnt

Préparer GRUB via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait trois choses : 
*Elle génère une image GRUB
*Elle installe l'image dans la partition EFI sur EFI/debian/grubx64.efi (C’est-à-dire /boot/efi/EFI/debian…)
*Elle essaye de configurer le gestionnaire de démarrage UEFI pour le charger au démarrage de la machine
La dernière étape doit normalement finir par une erreur car le gestionnaire de démarrage UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;

Même si GRUB vous dit que tout s'est bien passé, vérifiez que le répertoire EFI est bien présent et rempli. Si ce n'est pas le cas vous avez du louper quelque chose. N'hésitez pas a prendre la version &quot;unstable&quot; comme conseillé avant.

Si grub vous sort quelque chose comme :
 # grub-install /dev/sdi                        
 grub-install : erreur : /usr/lib/grub/i386-pc/modinfo.sh n'existe pas. Veuillez utiliser --target ou --directory.

Alors il faut lui préciser pour quel genre de système vous voulez installer grub.
 grub-install --target=x86_64-efi /dev/sdX

''&lt;span style=&quot;color:red&quot;&gt;Attention, arrêtez ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''&lt;br /&gt;
Copier (pas de lien symbolique !, système FAT oblige) l’image GRUB dans le répertoire de la partition EFI :
 cp /boot/efi/EFI/debian/grubx64.efi /boot/efi/EFI/boot/bootx64.efi

C'est dans ce répertoire que le système UEFI va regarder.

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (il faut penser à changer la méthode de démarrage dans UEFI).

Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois le système démarré via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire.

== Bugs et Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...). Il bloque après la selection du noyau dans Grub.&lt;br /&gt;
J'ai dû installer le paquet depuis les dépots ''unstable''. Un premier essai avec les dépots en ''testing'' n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]. Merci à ORNis pour sa relecture :)</text>
      <sha1>lcflxc8t1gu9lgkl3zdnhfrfv1b4hth</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5815</id>
      <parentid>5814</parentid>
      <timestamp>2014-09-06T23:05:54Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <minor/>
      <comment>ajout ligne fstab</comment>
      <text xml:space="preserve" bytes="5960">Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien Bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

* Supprimer les partitions existantes et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**NE PAS la formater et ne pas la monter
**Initialiser le type sur &quot;Bios Boot Partition&quot;
*** Avec ''Gparted'' il faut mettre le drapeau &quot;bios_grub&quot;, s'il ne veut pas il faut formater la partition en FAT16 pour le mettre
*** Avec ''parted'' taper la commande &quot;set 1 bios_grub on&quot;, le numéro étant le rang de la partition
*** Avec ''gdisk'' (GPT fdisk) donner le code &quot;EF02&quot; à la partition visé


*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Formater la partition en FAT16/32
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
*** Avec ''Gparted'' il faut mettre le drapeau &quot;boot&quot;
*** Avec ''parted'' taper la commande &quot;set 1 boot on&quot;, le numéro étant le rang de la partition
*** Avec ''gdisk'' donner le code &quot;EF00&quot;
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une liveCD pour faire une peu de place sur le disque. 
*Créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*Formater la partition en FAT
*Monter sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) de façon permanente via le fstab avec la ligne suivante :
 /dev/sda2	/boot/efi	vfat	dafauts	0	2
ou (provenant de RH)
 /dev/sda2	/boot/efi	vfat	umask=0077,shortname=winnt	0	2

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention les versions du paquet dans les dépôts stable &amp; testing ne semblent pas fonctionner correctement. J'ai dû, dans mon cas, utiliser le version fournie en unstable (2 septembre 2014).''&lt;/span&gt;&lt;br /&gt;
Normalement il va vous demander de supprimer les paquets &quot;grub-pc&quot; et &quot;grub-pc-bin&quot;, s'il ne vous propose qu'un des deux seulement, désinstaller le deuxième manuellement

Si vous voulez installer GRUB sur un disque que vous préparez en chroot il faut monter quelques répertoires systèmes avant :
 mount /dev/sdXX /mnt
 mount --bind /dev  /mnt/dev
 mount --bind /proc /mnt/proc
 mount --bind /sys  /mnt/sys
 mount --bind /usr  /mnt/usr &lt;= inutile si vous avez déjà copié le système sur le nouveau disque
 chroot /mnt

Préparer GRUB via la commande habituelle : 
 grub-install /dev/sda

Cette commande fait trois choses : 
*Elle génère une image GRUB
*Elle installe l'image dans la partition EFI sur EFI/debian/grubx64.efi (C’est-à-dire /boot/efi/EFI/debian…)
*Elle essaye de configurer le gestionnaire de démarrage UEFI pour le charger au démarrage de la machine
La dernière étape doit normalement finir par une erreur car le gestionnaire de démarrage UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;

Même si GRUB vous dit que tout s'est bien passé, vérifiez que le répertoire EFI est bien présent et rempli. Si ce n'est pas le cas vous avez du louper quelque chose. N'hésitez pas a prendre la version &quot;unstable&quot; comme conseillé avant.

Si grub vous sort quelque chose comme :
 # grub-install /dev/sdi                        
 grub-install : erreur : /usr/lib/grub/i386-pc/modinfo.sh n'existe pas. Veuillez utiliser --target ou --directory.

Alors il faut lui préciser pour quel genre de système vous voulez installer grub.
 grub-install --target=x86_64-efi /dev/sdX

''&lt;span style=&quot;color:red&quot;&gt;Attention, arrêtez ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''&lt;br /&gt;
Copier (pas de lien symbolique !, système FAT oblige) l’image GRUB dans le répertoire de la partition EFI :
 cp /boot/efi/EFI/debian/grubx64.efi /boot/efi/EFI/boot/bootx64.efi

C'est dans ce répertoire que le système UEFI va regarder.

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (il faut penser à changer la méthode de démarrage dans UEFI).

Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois le système démarré via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire.

== Bugs et Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...). Il bloque après la selection du noyau dans Grub.&lt;br /&gt;
J'ai dû installer le paquet depuis les dépots ''unstable''. Un premier essai avec les dépots en ''testing'' n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]. Merci à ORNis pour sa relecture :)</text>
      <sha1>fxx0rd454774s8sqs0vs6vvdzive4pr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5822</id>
      <parentid>5815</parentid>
      <timestamp>2014-09-08T21:02:36Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <comment>/* Passer en UEFI */</comment>
      <text xml:space="preserve" bytes="6045">Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien Bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

* Supprimer les partitions existantes et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**NE PAS la formater et ne pas la monter
**Initialiser le type sur &quot;Bios Boot Partition&quot;
*** Avec ''Gparted'' il faut mettre le drapeau &quot;bios_grub&quot;, s'il ne veut pas il faut formater la partition en FAT16 pour le mettre
*** Avec ''parted'' taper la commande &quot;set 1 bios_grub on&quot;, le numéro étant le rang de la partition
*** Avec ''gdisk'' (GPT fdisk) donner le code &quot;EF02&quot; à la partition visé


*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Formater la partition en FAT16/32
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
*** Avec ''Gparted'' il faut mettre le drapeau &quot;boot&quot;
*** Avec ''parted'' taper la commande &quot;set 1 boot on&quot;, le numéro étant le rang de la partition
*** Avec ''gdisk'' donner le code &quot;EF00&quot;
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une liveCD pour faire une peu de place sur le disque. 
*Créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*Formater la partition en FAT
*Monter sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) de façon permanente via le fstab avec la ligne suivante :
 /dev/sda2	/boot/efi	vfat	dafauts	0	2
ou (provenant de RH)
 /dev/sda2	/boot/efi	vfat	umask=0077,shortname=winnt	0	2

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention les versions du paquet dans les dépôts stable &amp; testing ne semblent pas fonctionner correctement. J'ai dû, dans mon cas, utiliser le version fournie en unstable (2 septembre 2014).''&lt;/span&gt;&lt;br /&gt;
Normalement il va vous demander de supprimer les paquets &quot;grub-pc&quot; et &quot;grub-pc-bin&quot;, s'il ne vous propose qu'un des deux seulement, désinstaller le deuxième manuellement

Si vous voulez installer GRUB sur un disque que vous préparez en chroot il faut monter quelques répertoires systèmes avant :
 # mount /dev/sdXX /mnt
 # mount --bind /dev  /mnt/dev
 # mount --bind /proc /mnt/proc
 # mount --bind /sys  /mnt/sys
 # mount --bind /usr  /mnt/usr &lt;= inutile si vous avez déjà copié le système sur le nouveau disque
 # chroot /mnt

Préparer GRUB via la commande habituelle : 
 # update-grub

Puis faire son installation effective sur le disque :
 # grub-install /dev/sda

Cette commande fait trois choses : 
*Elle génère une image GRUB
*Elle installe l'image dans la partition EFI sur EFI/debian/grubx64.efi (C’est-à-dire /boot/efi/EFI/debian…)
*Elle essaye de configurer le gestionnaire de démarrage UEFI pour le charger au démarrage de la machine
La dernière étape doit normalement finir par une erreur car le gestionnaire de démarrage UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;

Même si GRUB vous dit que tout s'est bien passé, vérifiez que le répertoire EFI est bien présent et rempli. Si ce n'est pas le cas vous avez du louper quelque chose. N'hésitez pas a prendre la version &quot;unstable&quot; comme conseillé avant.

Si grub vous sort quelque chose comme :
 # grub-install /dev/sda                     
 grub-install : erreur : /usr/lib/grub/i386-pc/modinfo.sh n'existe pas. Veuillez utiliser --target ou --directory.

Alors il faut lui préciser pour quel genre de système vous voulez installer grub.
 # grub-install --target=x86_64-efi /dev/sdX

''&lt;span style=&quot;color:red&quot;&gt;Attention, arrêtez ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''&lt;br /&gt;
Copier (pas de lien symbolique !, système FAT oblige) l’image GRUB dans le répertoire de la partition EFI :
 # cp /boot/efi/EFI/debian/grubx64.efi /boot/efi/EFI/boot/bootx64.efi

C'est dans ce répertoire que le système UEFI va regarder.

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (il faut penser à changer la méthode de démarrage dans UEFI).

Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Nettoyage ==

Un fois le système démarré via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire.

== Bugs et Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...). Il bloque après la selection du noyau dans Grub.&lt;br /&gt;
J'ai dû installer le paquet depuis les dépots ''unstable''. Un premier essai avec les dépots en ''testing'' n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]. Merci à ORNis pour sa relecture :)</text>
      <sha1>jhnqdkmybuyf9j4xasuvt5zxw9e6jig</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5826</id>
      <parentid>5822</parentid>
      <timestamp>2014-09-12T20:50:22Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <text xml:space="preserve" bytes="7349">Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien Bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

* Supprimer les partitions existantes et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**NE PAS la formater et ne pas la monter
**Initialiser le type sur &quot;Bios Boot Partition&quot;
*** Avec ''Gparted'' il faut mettre le drapeau &quot;bios_grub&quot;, s'il ne veut pas il faut formater la partition en FAT16 pour le mettre
*** Avec ''parted'' taper la commande &quot;set 1 bios_grub on&quot;, le numéro étant le rang de la partition
*** Avec ''gdisk'' (GPT fdisk) donner le code &quot;EF02&quot; à la partition visé


*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Formater la partition en FAT16/32
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
*** Avec ''Gparted'' il faut mettre le drapeau &quot;boot&quot;
*** Avec ''parted'' taper la commande &quot;set 1 boot on&quot;, le numéro étant le rang de la partition
*** Avec ''gdisk'' donner le code &quot;EF00&quot;
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une liveCD pour faire une peu de place sur le disque. 
*Créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*Formater la partition en FAT
*Monter sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) de façon permanente via le fstab avec la ligne suivante :
 /dev/sda2	/boot/efi	vfat	dafauts	0	2
ou (provenant de RH)
 /dev/sda2	/boot/efi	vfat	umask=0077,shortname=winnt	0	2

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention les versions du paquet dans les dépôts stable &amp; testing ne semblent pas fonctionner correctement. J'ai dû, dans mon cas, utiliser le version fournie en unstable (2 septembre 2014).''&lt;/span&gt;&lt;br /&gt;
Normalement il va vous demander de supprimer les paquets &quot;grub-pc&quot; et &quot;grub-pc-bin&quot;, s'il ne vous propose qu'un des deux seulement, désinstaller le deuxième manuellement

Si vous voulez installer GRUB sur un disque que vous préparez en chroot il faut monter quelques répertoires systèmes avant :
 # mount /dev/sdXX /mnt
 # mount --bind /dev  /mnt/dev
 # mount --bind /proc /mnt/proc
 # mount --bind /sys  /mnt/sys
 # mount --bind /usr  /mnt/usr &lt;= inutile si vous avez déjà copié le système sur le nouveau disque
 # chroot /mnt

Préparer GRUB via la commande habituelle : 
 # update-grub

Puis faire son installation effective sur le disque :
 # grub-install /dev/sda

Cette commande fait trois choses : 
*Elle génère une image GRUB
*Elle installe l'image dans la partition EFI sur EFI/debian/grubx64.efi (C’est-à-dire /boot/efi/EFI/debian…)
*Elle essaye de configurer le gestionnaire de démarrage UEFI pour le charger au démarrage de la machine
La dernière étape doit normalement finir par une erreur car le gestionnaire de démarrage UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;

Même si GRUB vous dit que tout s'est bien passé, vérifiez que le répertoire EFI est bien présent et rempli. Si ce n'est pas le cas vous avez du louper quelque chose. N'hésitez pas a prendre la version &quot;unstable&quot; comme conseillé avant.

Si grub vous sort quelque chose comme :
 # grub-install /dev/sda                     
 grub-install : erreur : /usr/lib/grub/i386-pc/modinfo.sh n'existe pas. Veuillez utiliser --target ou --directory.

Alors il faut lui préciser pour quel genre de système vous voulez installer grub.
 # grub-install --target=x86_64-efi /dev/sdX

Vous pouvez préciser un peu plus de chose pour controler plus finement l'installation et que l'exécution soit pus bavarde :
 # grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian --recheck --debug /dev/sdax

si vous épluchez un peu le log vous verrez peut être des lignes comme ça :
 grub-install : information : impossible d'ouvrir « /usr/lib/grub/x86_64-efi/efiemu32.o » : Aucun fichier ou dossier de ce type.

Si vous êtes sur un système 64 bits c'est normal, juste en dessous vous devez trouver :
 grub-install : information : copying `/usr/lib/grub/x86_64-efi/efiemu64.o' -&gt; `/boot/grub/x86_64-efi/efiemu64.o'.

Ou :
grub-install : information : copying `/usr/share/locale/ru/LC_MESSAGES/grub.mo' -&gt; `/boot/grub/locale/ru.mo'.
grub-install : information : impossible d'ouvrir « /usr/share/locale/ru/LC_MESSAGES/grub.mo » : Aucun fichier ou dossier de ce type.

Ce qui est normal car ce sont différentes langues qui ne sont pas installés

''&lt;span style=&quot;color:red&quot;&gt;Attention, arrêtez ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''&lt;br /&gt;
Copier (pas de lien symbolique !, système FAT oblige) l’image GRUB dans le répertoire de la partition EFI :
 # cp /boot/efi/EFI/debian/grubx64.efi /boot/efi/EFI/boot/bootx64.efi

C'est dans ce répertoire que le système UEFI va regarder.

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (il faut penser à changer la méthode de démarrage dans UEFI).

Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Vérificaiton ==
Une fois de retour dans une console il vous suffit de faire 
 $ ls /sys/firmware |grep efi

Si ça vous retourne une ligne c'est tout bon, sinon il y a quelque chose qui cloche.


== Nettoyage ==

* Un fois le système démarré via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire.
* Si c'est une migration BIOS vers UEFI vous pouvez aussi supprimer le répertoire /boot/grub/i386-pc

== Bugs et Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...). Il bloque après la selection du noyau dans Grub.&lt;br /&gt;
J'ai dû installer le paquet depuis les dépots ''unstable''. Un premier essai avec les dépots en ''testing'' n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]. Merci à ORNis pour sa relecture :)</text>
      <sha1>881o95qxolbzy6ny77vv6q2y8k7kqd3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5827</id>
      <parentid>5826</parentid>
      <timestamp>2014-09-12T20:55:25Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="7351">Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien Bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

* Supprimer les partitions existantes et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**NE PAS la formater et ne pas la monter
**Initialiser le type sur &quot;Bios Boot Partition&quot;
*** Avec ''Gparted'' il faut mettre le drapeau &quot;bios_grub&quot;, s'il ne veut pas il faut formater la partition en FAT16 pour le mettre
*** Avec ''parted'' taper la commande &quot;set 1 bios_grub on&quot;, le numéro étant le rang de la partition
*** Avec ''gdisk'' (GPT fdisk) donner le code &quot;EF02&quot; à la partition visé


*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Formater la partition en FAT16/32
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
*** Avec ''Gparted'' il faut mettre le drapeau &quot;boot&quot;
*** Avec ''parted'' taper la commande &quot;set 1 boot on&quot;, le numéro étant le rang de la partition
*** Avec ''gdisk'' donner le code &quot;EF00&quot;
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une liveCD pour faire une peu de place sur le disque. 
*Créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*Formater la partition en FAT
*Monter sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) de façon permanente via le fstab avec la ligne suivante :
 /dev/sda2	/boot/efi	vfat	dafauts	0	2
ou (provenant de RH)
 /dev/sda2	/boot/efi	vfat	umask=0077,shortname=winnt	0	2

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention les versions du paquet dans les dépôts stable &amp; testing ne semblent pas fonctionner correctement. J'ai dû, dans mon cas, utiliser le version fournie en unstable (2 septembre 2014).''&lt;/span&gt;&lt;br /&gt;
Normalement il va vous demander de supprimer les paquets &quot;grub-pc&quot; et &quot;grub-pc-bin&quot;, s'il ne vous propose qu'un des deux seulement, désinstaller le deuxième manuellement

Si vous voulez installer GRUB sur un disque que vous préparez en chroot il faut monter quelques répertoires systèmes avant :
 # mount /dev/sdXX /mnt
 # mount --bind /dev  /mnt/dev
 # mount --bind /proc /mnt/proc
 # mount --bind /sys  /mnt/sys
 # mount --bind /usr  /mnt/usr &lt;= inutile si vous avez déjà copié le système sur le nouveau disque
 # chroot /mnt

Préparer GRUB via la commande habituelle : 
 # update-grub

Puis faire son installation effective sur le disque :
 # grub-install /dev/sda

Cette commande fait trois choses : 
*Elle génère une image GRUB
*Elle installe l'image dans la partition EFI sur EFI/debian/grubx64.efi (C’est-à-dire /boot/efi/EFI/debian…)
*Elle essaye de configurer le gestionnaire de démarrage UEFI pour le charger au démarrage de la machine
La dernière étape doit normalement finir par une erreur car le gestionnaire de démarrage UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;

Même si GRUB vous dit que tout s'est bien passé, vérifiez que le répertoire EFI est bien présent et rempli. Si ce n'est pas le cas vous avez du louper quelque chose. N'hésitez pas a prendre la version &quot;unstable&quot; comme conseillé avant.

Si grub vous sort quelque chose comme :
 # grub-install /dev/sda                     
 grub-install : erreur : /usr/lib/grub/i386-pc/modinfo.sh n'existe pas. Veuillez utiliser --target ou --directory.

Alors il faut lui préciser pour quel genre de système vous voulez installer grub.
 # grub-install --target=x86_64-efi /dev/sdX

Vous pouvez préciser un peu plus de chose pour controler plus finement l'installation et que l'exécution soit pus bavarde :
 # grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian --recheck --debug /dev/sdax

si vous épluchez un peu le log vous verrez peut être des lignes comme ça :
 grub-install : information : impossible d'ouvrir « /usr/lib/grub/x86_64-efi/efiemu32.o » : Aucun fichier ou dossier de ce type.

Si vous êtes sur un système 64 bits c'est normal, juste en dessous vous devez trouver :
 grub-install : information : copying `/usr/lib/grub/x86_64-efi/efiemu64.o' -&gt; `/boot/grub/x86_64-efi/efiemu64.o'.

Ou :
 grub-install : information : copying `/usr/share/locale/ru/LC_MESSAGES/grub.mo' -&gt; `/boot/grub/locale/ru.mo'.
 grub-install : information : impossible d'ouvrir « /usr/share/locale/ru/LC_MESSAGES/grub.mo » : Aucun fichier ou dossier de ce type.

Ce qui est normal car ce sont différentes langues qui ne sont pas installés

''&lt;span style=&quot;color:red&quot;&gt;Attention, arrêtez ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''&lt;br /&gt;
Copier (pas de lien symbolique !, système FAT oblige) l’image GRUB dans le répertoire de la partition EFI :
 # cp /boot/efi/EFI/debian/grubx64.efi /boot/efi/EFI/boot/bootx64.efi

C'est dans ce répertoire que le système UEFI va regarder.

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (il faut penser à changer la méthode de démarrage dans UEFI).

Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Vérificaiton ==
Une fois de retour dans une console il vous suffit de faire 
 $ ls /sys/firmware |grep efi

Si ça vous retourne une ligne c'est tout bon, sinon il y a quelque chose qui cloche.


== Nettoyage ==

* Un fois le système démarré via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire.
* Si c'est une migration BIOS vers UEFI vous pouvez aussi supprimer le répertoire /boot/grub/i386-pc

== Bugs et Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...). Il bloque après la selection du noyau dans Grub.&lt;br /&gt;
J'ai dû installer le paquet depuis les dépots ''unstable''. Un premier essai avec les dépots en ''testing'' n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]. Merci à ORNis pour sa relecture :)</text>
      <sha1>q9n9x0q39d7ynb6rhk5gtkq1h4ki33x</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5828</id>
      <parentid>5827</parentid>
      <timestamp>2014-09-12T20:55:53Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <comment>/* Nettoyage */</comment>
      <text xml:space="preserve" bytes="7352">Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien Bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

* Supprimer les partitions existantes et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**NE PAS la formater et ne pas la monter
**Initialiser le type sur &quot;Bios Boot Partition&quot;
*** Avec ''Gparted'' il faut mettre le drapeau &quot;bios_grub&quot;, s'il ne veut pas il faut formater la partition en FAT16 pour le mettre
*** Avec ''parted'' taper la commande &quot;set 1 bios_grub on&quot;, le numéro étant le rang de la partition
*** Avec ''gdisk'' (GPT fdisk) donner le code &quot;EF02&quot; à la partition visé


*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Formater la partition en FAT16/32
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
*** Avec ''Gparted'' il faut mettre le drapeau &quot;boot&quot;
*** Avec ''parted'' taper la commande &quot;set 1 boot on&quot;, le numéro étant le rang de la partition
*** Avec ''gdisk'' donner le code &quot;EF00&quot;
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une liveCD pour faire une peu de place sur le disque. 
*Créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*Formater la partition en FAT
*Monter sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) de façon permanente via le fstab avec la ligne suivante :
 /dev/sda2	/boot/efi	vfat	dafauts	0	2
ou (provenant de RH)
 /dev/sda2	/boot/efi	vfat	umask=0077,shortname=winnt	0	2

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention les versions du paquet dans les dépôts stable &amp; testing ne semblent pas fonctionner correctement. J'ai dû, dans mon cas, utiliser le version fournie en unstable (2 septembre 2014).''&lt;/span&gt;&lt;br /&gt;
Normalement il va vous demander de supprimer les paquets &quot;grub-pc&quot; et &quot;grub-pc-bin&quot;, s'il ne vous propose qu'un des deux seulement, désinstaller le deuxième manuellement

Si vous voulez installer GRUB sur un disque que vous préparez en chroot il faut monter quelques répertoires systèmes avant :
 # mount /dev/sdXX /mnt
 # mount --bind /dev  /mnt/dev
 # mount --bind /proc /mnt/proc
 # mount --bind /sys  /mnt/sys
 # mount --bind /usr  /mnt/usr &lt;= inutile si vous avez déjà copié le système sur le nouveau disque
 # chroot /mnt

Préparer GRUB via la commande habituelle : 
 # update-grub

Puis faire son installation effective sur le disque :
 # grub-install /dev/sda

Cette commande fait trois choses : 
*Elle génère une image GRUB
*Elle installe l'image dans la partition EFI sur EFI/debian/grubx64.efi (C’est-à-dire /boot/efi/EFI/debian…)
*Elle essaye de configurer le gestionnaire de démarrage UEFI pour le charger au démarrage de la machine
La dernière étape doit normalement finir par une erreur car le gestionnaire de démarrage UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;

Même si GRUB vous dit que tout s'est bien passé, vérifiez que le répertoire EFI est bien présent et rempli. Si ce n'est pas le cas vous avez du louper quelque chose. N'hésitez pas a prendre la version &quot;unstable&quot; comme conseillé avant.

Si grub vous sort quelque chose comme :
 # grub-install /dev/sda                     
 grub-install : erreur : /usr/lib/grub/i386-pc/modinfo.sh n'existe pas. Veuillez utiliser --target ou --directory.

Alors il faut lui préciser pour quel genre de système vous voulez installer grub.
 # grub-install --target=x86_64-efi /dev/sdX

Vous pouvez préciser un peu plus de chose pour controler plus finement l'installation et que l'exécution soit pus bavarde :
 # grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian --recheck --debug /dev/sdax

si vous épluchez un peu le log vous verrez peut être des lignes comme ça :
 grub-install : information : impossible d'ouvrir « /usr/lib/grub/x86_64-efi/efiemu32.o » : Aucun fichier ou dossier de ce type.

Si vous êtes sur un système 64 bits c'est normal, juste en dessous vous devez trouver :
 grub-install : information : copying `/usr/lib/grub/x86_64-efi/efiemu64.o' -&gt; `/boot/grub/x86_64-efi/efiemu64.o'.

Ou :
 grub-install : information : copying `/usr/share/locale/ru/LC_MESSAGES/grub.mo' -&gt; `/boot/grub/locale/ru.mo'.
 grub-install : information : impossible d'ouvrir « /usr/share/locale/ru/LC_MESSAGES/grub.mo » : Aucun fichier ou dossier de ce type.

Ce qui est normal car ce sont différentes langues qui ne sont pas installés

''&lt;span style=&quot;color:red&quot;&gt;Attention, arrêtez ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''&lt;br /&gt;
Copier (pas de lien symbolique !, système FAT oblige) l’image GRUB dans le répertoire de la partition EFI :
 # cp /boot/efi/EFI/debian/grubx64.efi /boot/efi/EFI/boot/bootx64.efi

C'est dans ce répertoire que le système UEFI va regarder.

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (il faut penser à changer la méthode de démarrage dans UEFI).

Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Vérificaiton ==
Une fois de retour dans une console il vous suffit de faire 
 $ ls /sys/firmware |grep efi

Si ça vous retourne une ligne c'est tout bon, sinon il y a quelque chose qui cloche.


== Nettoyage ==

* Une fois le système démarré via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire.
* Si c'est une migration BIOS vers UEFI vous pouvez aussi supprimer le répertoire /boot/grub/i386-pc

== Bugs et Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...). Il bloque après la selection du noyau dans Grub.&lt;br /&gt;
J'ai dû installer le paquet depuis les dépots ''unstable''. Un premier essai avec les dépots en ''testing'' n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]. Merci à ORNis pour sa relecture :)</text>
      <sha1>mzet4dxbmn08gsa3wrw85ofnb0mpegp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5829</id>
      <parentid>5828</parentid>
      <timestamp>2014-09-12T21:04:33Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <minor/>
      <comment>/* Vérificaiton */</comment>
      <text xml:space="preserve" bytes="7476">Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien Bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

* Supprimer les partitions existantes et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**NE PAS la formater et ne pas la monter
**Initialiser le type sur &quot;Bios Boot Partition&quot;
*** Avec ''Gparted'' il faut mettre le drapeau &quot;bios_grub&quot;, s'il ne veut pas il faut formater la partition en FAT16 pour le mettre
*** Avec ''parted'' taper la commande &quot;set 1 bios_grub on&quot;, le numéro étant le rang de la partition
*** Avec ''gdisk'' (GPT fdisk) donner le code &quot;EF02&quot; à la partition visé


*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Formater la partition en FAT16/32
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
*** Avec ''Gparted'' il faut mettre le drapeau &quot;boot&quot;
*** Avec ''parted'' taper la commande &quot;set 1 boot on&quot;, le numéro étant le rang de la partition
*** Avec ''gdisk'' donner le code &quot;EF00&quot;
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une liveCD pour faire une peu de place sur le disque. 
*Créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*Formater la partition en FAT
*Monter sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) de façon permanente via le fstab avec la ligne suivante :
 /dev/sda2	/boot/efi	vfat	dafauts	0	2
ou (provenant de RH)
 /dev/sda2	/boot/efi	vfat	umask=0077,shortname=winnt	0	2

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention les versions du paquet dans les dépôts stable &amp; testing ne semblent pas fonctionner correctement. J'ai dû, dans mon cas, utiliser le version fournie en unstable (2 septembre 2014).''&lt;/span&gt;&lt;br /&gt;
Normalement il va vous demander de supprimer les paquets &quot;grub-pc&quot; et &quot;grub-pc-bin&quot;, s'il ne vous propose qu'un des deux seulement, désinstaller le deuxième manuellement

Si vous voulez installer GRUB sur un disque que vous préparez en chroot il faut monter quelques répertoires systèmes avant :
 # mount /dev/sdXX /mnt
 # mount --bind /dev  /mnt/dev
 # mount --bind /proc /mnt/proc
 # mount --bind /sys  /mnt/sys
 # mount --bind /usr  /mnt/usr &lt;= inutile si vous avez déjà copié le système sur le nouveau disque
 # chroot /mnt

Préparer GRUB via la commande habituelle : 
 # update-grub

Puis faire son installation effective sur le disque :
 # grub-install /dev/sda

Cette commande fait trois choses : 
*Elle génère une image GRUB
*Elle installe l'image dans la partition EFI sur EFI/debian/grubx64.efi (C’est-à-dire /boot/efi/EFI/debian…)
*Elle essaye de configurer le gestionnaire de démarrage UEFI pour le charger au démarrage de la machine
La dernière étape doit normalement finir par une erreur car le gestionnaire de démarrage UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;

Même si GRUB vous dit que tout s'est bien passé, vérifiez que le répertoire EFI est bien présent et rempli. Si ce n'est pas le cas vous avez du louper quelque chose. N'hésitez pas a prendre la version &quot;unstable&quot; comme conseillé avant.

Si grub vous sort quelque chose comme :
 # grub-install /dev/sda                     
 grub-install : erreur : /usr/lib/grub/i386-pc/modinfo.sh n'existe pas. Veuillez utiliser --target ou --directory.

Alors il faut lui préciser pour quel genre de système vous voulez installer grub.
 # grub-install --target=x86_64-efi /dev/sdX

Vous pouvez préciser un peu plus de chose pour controler plus finement l'installation et que l'exécution soit pus bavarde :
 # grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian --recheck --debug /dev/sdax

si vous épluchez un peu le log vous verrez peut être des lignes comme ça :
 grub-install : information : impossible d'ouvrir « /usr/lib/grub/x86_64-efi/efiemu32.o » : Aucun fichier ou dossier de ce type.

Si vous êtes sur un système 64 bits c'est normal, juste en dessous vous devez trouver :
 grub-install : information : copying `/usr/lib/grub/x86_64-efi/efiemu64.o' -&gt; `/boot/grub/x86_64-efi/efiemu64.o'.

Ou :
 grub-install : information : copying `/usr/share/locale/ru/LC_MESSAGES/grub.mo' -&gt; `/boot/grub/locale/ru.mo'.
 grub-install : information : impossible d'ouvrir « /usr/share/locale/ru/LC_MESSAGES/grub.mo » : Aucun fichier ou dossier de ce type.

Ce qui est normal car ce sont différentes langues qui ne sont pas installés

''&lt;span style=&quot;color:red&quot;&gt;Attention, arrêtez ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''&lt;br /&gt;
Copier (pas de lien symbolique !, système FAT oblige) l’image GRUB dans le répertoire de la partition EFI :
 # cp /boot/efi/EFI/debian/grubx64.efi /boot/efi/EFI/boot/bootx64.efi

C'est dans ce répertoire que le système UEFI va regarder.

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (il faut penser à changer la méthode de démarrage dans UEFI).

Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Vérificaiton ==
Une fois de retour dans une console il vous suffit de faire 
 $ ls /sys/firmware |grep efi

Si ça vous retourne une ligne c'est tout bon, sinon il y a quelque chose qui cloche.

Vous pouvez aussi installer le paquet &quot;efivar&quot; et faire un simple :
 # efvar -l
Pour voir la liste des variables disponible

== Nettoyage ==

* Une fois le système démarré via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire.
* Si c'est une migration BIOS vers UEFI vous pouvez aussi supprimer le répertoire /boot/grub/i386-pc

== Bugs et Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...). Il bloque après la selection du noyau dans Grub.&lt;br /&gt;
J'ai dû installer le paquet depuis les dépots ''unstable''. Un premier essai avec les dépots en ''testing'' n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]. Merci à ORNis pour sa relecture :)</text>
      <sha1>2nhgf50j4lct77otjo59jd3gx56sm4z</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5830</id>
      <parentid>5829</parentid>
      <timestamp>2014-09-14T22:12:27Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <minor/>
      <comment>nouvelle section d'aide</comment>
      <text xml:space="preserve" bytes="7981">Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien Bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

* Supprimer les partitions existantes et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**NE PAS la formater et ne pas la monter
**Initialiser le type sur &quot;Bios Boot Partition&quot;
*** Avec ''Gparted'' il faut mettre le drapeau &quot;bios_grub&quot;, s'il ne veut pas il faut formater la partition en FAT16 pour le mettre
*** Avec ''parted'' taper la commande &quot;set 1 bios_grub on&quot;, le numéro étant le rang de la partition
*** Avec ''gdisk'' (GPT fdisk) donner le code &quot;EF02&quot; à la partition visé


*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Formater la partition en FAT16/32
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
*** Avec ''Gparted'' il faut mettre le drapeau &quot;boot&quot;
*** Avec ''parted'' taper la commande &quot;set 1 boot on&quot;, le numéro étant le rang de la partition
*** Avec ''gdisk'' donner le code &quot;EF00&quot;
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une liveCD pour faire une peu de place sur le disque. 
*Créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*Formater la partition en FAT
*Monter sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) de façon permanente via le fstab avec la ligne suivante :
 /dev/sda2	/boot/efi	vfat	dafauts	0	2
ou (provenant de RH)
 /dev/sda2	/boot/efi	vfat	umask=0077,shortname=winnt	0	2

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention les versions du paquet dans les dépôts stable &amp; testing ne semblent pas fonctionner correctement. J'ai dû, dans mon cas, utiliser le version fournie en unstable (2 septembre 2014).''&lt;/span&gt;&lt;br /&gt;
Normalement il va vous demander de supprimer les paquets &quot;grub-pc&quot; et &quot;grub-pc-bin&quot;, s'il ne vous propose qu'un des deux seulement, désinstaller le deuxième manuellement

Si vous voulez installer GRUB sur un disque que vous préparez en chroot il faut monter quelques répertoires systèmes avant :
 # mount /dev/sdXX /mnt
 # mount --bind /dev  /mnt/dev
 # mount --bind /proc /mnt/proc
 # mount --bind /sys  /mnt/sys
 # mount --bind /usr  /mnt/usr &lt;= inutile si vous avez déjà copié le système sur le nouveau disque
 # chroot /mnt

Préparer GRUB via la commande habituelle : 
 # update-grub

Puis faire son installation effective sur le disque :
 # grub-install /dev/sda

Cette commande fait trois choses : 
*Elle génère une image GRUB
*Elle installe l'image dans la partition EFI sur EFI/debian/grubx64.efi (C’est-à-dire /boot/efi/EFI/debian…)
*Elle essaye de configurer le gestionnaire de démarrage UEFI pour le charger au démarrage de la machine
La dernière étape doit normalement finir par une erreur car le gestionnaire de démarrage UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;

Même si GRUB vous dit que tout s'est bien passé, vérifiez que le répertoire EFI est bien présent et rempli. Si ce n'est pas le cas vous avez du louper quelque chose. N'hésitez pas a prendre la version &quot;unstable&quot; comme conseillé avant.

Si grub vous sort quelque chose comme :
 # grub-install /dev/sda                     
 grub-install : erreur : /usr/lib/grub/i386-pc/modinfo.sh n'existe pas. Veuillez utiliser --target ou --directory.

Alors il faut lui préciser pour quel genre de système vous voulez installer grub.
 # grub-install --target=x86_64-efi /dev/sdX

Vous pouvez préciser un peu plus de chose pour controler plus finement l'installation et que l'exécution soit pus bavarde :
 # grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian --recheck --debug /dev/sdax

si vous épluchez un peu le log vous verrez peut être des lignes comme ça :
 grub-install : information : impossible d'ouvrir « /usr/lib/grub/x86_64-efi/efiemu32.o » : Aucun fichier ou dossier de ce type.

Si vous êtes sur un système 64 bits c'est normal, juste en dessous vous devez trouver :
 grub-install : information : copying `/usr/lib/grub/x86_64-efi/efiemu64.o' -&gt; `/boot/grub/x86_64-efi/efiemu64.o'.

Ou :
 grub-install : information : copying `/usr/share/locale/ru/LC_MESSAGES/grub.mo' -&gt; `/boot/grub/locale/ru.mo'.
 grub-install : information : impossible d'ouvrir « /usr/share/locale/ru/LC_MESSAGES/grub.mo » : Aucun fichier ou dossier de ce type.

Ce qui est normal car ce sont différentes langues qui ne sont pas installés

''&lt;span style=&quot;color:red&quot;&gt;Attention, arrêtez ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''&lt;br /&gt;
Copier (pas de lien symbolique !, système FAT oblige) l’image GRUB dans le répertoire de la partition EFI :
 # cp /boot/efi/EFI/debian/grubx64.efi /boot/efi/EFI/boot/bootx64.efi

C'est dans ce répertoire que le système UEFI va regarder.

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (il faut penser à changer la méthode de démarrage dans UEFI).

Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Vérificaiton ==
Une fois de retour dans une console il vous suffit de faire 
 $ ls /sys/firmware |grep efi

Si ça vous retourne une ligne c'est tout bon, sinon il y a quelque chose qui cloche.

Vous pouvez aussi installer le paquet &quot;efivar&quot; et faire un simple :
 # efvar -l
Pour voir la liste des variables disponible

== Nettoyage ==

* Une fois le système démarré via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire.
* Si c'est une migration BIOS vers UEFI vous pouvez aussi supprimer le répertoire /boot/grub/i386-pc

== Au secours ça ne boot plus !!! ==
Pas de panique, il existe un outil qui vous permettra de booter en UEFI sur votre OS favori, il s'agit de [http://www.rodsbooks.com/refind/getting.html rEFInd]. Je vous conseil de prendre l'image sur clé USB qui fonctionne a merveille. Une fois téléchargé et dizippé il vous suffit de faire
 dd if=/chemin/vers/l/image.img of=/dev/sdX

Rebooter votre machine et vous devriez avoir un joli écran pour choisir quoi lancer, le tout avec de jolie icônes et tout.

== Bugs et Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...). Il bloque après la selection du noyau dans Grub.&lt;br /&gt;
J'ai dû installer le paquet depuis les dépots ''unstable''. Un premier essai avec les dépots en ''testing'' n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]. Merci à ORNis pour sa relecture :)</text>
      <sha1>avvz4d4liujrlgxlucxirttf8mfdgjn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5831</id>
      <parentid>5830</parentid>
      <timestamp>2014-09-15T17:34:28Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="8003">Cette page à pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien Bios.
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de 2 choses : 
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur

== Installation neuve de Debian ==

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous : 
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios

Nous allons ici traiter le second point.

* Supprimer les partitions existantes et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**NE PAS la formater et ne pas la monter
**Initialiser le type sur &quot;Bios Boot Partition&quot;
*** Avec ''Gparted'' il faut mettre le drapeau &quot;bios_grub&quot;, s'il ne veut pas il faut formater la partition en FAT16 pour le mettre
*** Avec ''parted'' taper la commande &quot;set 1 bios_grub on&quot;, le numéro étant le rang de la partition
*** Avec ''gdisk'' (GPT fdisk) donner le code &quot;EF02&quot; à la partition visé


*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Formater la partition en FAT16/32
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
*** Avec ''Gparted'' il faut mettre le drapeau &quot;boot&quot;
*** Avec ''parted'' taper la commande &quot;set 1 boot on&quot;, le numéro étant le rang de la partition
*** Avec ''gdisk'' donner le code &quot;EF00&quot;
**Monter cette partition sur /boot/efi

*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer

== Debian déjà installé ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)

*Utiliser une liveCD pour faire une peu de place sur le disque. 
*Créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*Formater la partition en FAT
*Monter sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) de façon permanente via le fstab avec la ligne suivante :
 /dev/sda2	/boot/efi	vfat	dafauts	0	2
ou (provenant de RH)
 /dev/sda2	/boot/efi	vfat	umask=0077,shortname=winnt	0	2

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention les versions du paquet dans les dépôts stable &amp; testing ne semblent pas fonctionner correctement. J'ai dû, dans mon cas, utiliser le version fournie en unstable (2 septembre 2014).''&lt;/span&gt;&lt;br /&gt;
Normalement il va vous demander de supprimer les paquets &quot;grub-pc&quot; et &quot;grub-pc-bin&quot;, s'il ne vous propose qu'un des deux seulement, désinstaller le deuxième manuellement

Si vous voulez installer GRUB sur un disque que vous préparez en chroot il faut monter quelques répertoires systèmes avant :
 # mount /dev/sdXX /mnt
 # mount --bind /dev  /mnt/dev
 # mount --bind /proc /mnt/proc
 # mount --bind /sys  /mnt/sys
 # mount --bind /usr  /mnt/usr &lt;= inutile si vous avez déjà copié le système sur le nouveau disque
 # chroot /mnt

Préparer GRUB via la commande habituelle : 
 # update-grub

Puis faire son installation effective sur le disque :
 # grub-install /dev/sda

Cette commande fait trois choses : 
*Elle génère une image GRUB
*Elle installe l'image dans la partition EFI sur EFI/debian/grubx64.efi (C’est-à-dire /boot/efi/EFI/debian…)
*Elle essaye de configurer le gestionnaire de démarrage UEFI pour le charger au démarrage de la machine
La dernière étape doit normalement finir par une erreur car le gestionnaire de démarrage UEFI n'est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;

Même si GRUB vous dit que tout s'est bien passé, vérifiez que le répertoire EFI est bien présent et rempli. Si ce n'est pas le cas vous avez du louper quelque chose. N'hésitez pas a prendre la version &quot;unstable&quot; comme conseillé avant.

Si grub vous sort quelque chose comme :
 # grub-install /dev/sda                     
 grub-install : erreur : /usr/lib/grub/i386-pc/modinfo.sh n'existe pas. Veuillez utiliser --target ou --directory.

Alors il faut lui préciser pour quel genre de système vous voulez installer grub.
 # grub-install --target=x86_64-efi /dev/sdX

Vous pouvez préciser un peu plus de chose pour controler plus finement l'installation et que l'exécution soit pus bavarde :
 # grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian --recheck --debug /dev/sdax

si vous épluchez un peu le log vous verrez peut être des lignes comme ça :
 grub-install : information : impossible d'ouvrir « /usr/lib/grub/x86_64-efi/efiemu32.o » : Aucun fichier ou dossier de ce type.

Si vous êtes sur un système 64 bits c'est normal, juste en dessous vous devez trouver :
 grub-install : information : copying `/usr/lib/grub/x86_64-efi/efiemu64.o' -&gt; `/boot/grub/x86_64-efi/efiemu64.o'.

Ou :
 grub-install : information : copying `/usr/share/locale/ru/LC_MESSAGES/grub.mo' -&gt; `/boot/grub/locale/ru.mo'.
 grub-install : information : impossible d'ouvrir « /usr/share/locale/ru/LC_MESSAGES/grub.mo » : Aucun fichier ou dossier de ce type.

Ce qui est normal car ce sont différentes langues qui ne sont pas installés

''&lt;span style=&quot;color:red&quot;&gt;Attention, arrêtez ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''&lt;br /&gt;
Copier (pas de lien symbolique !, système FAT oblige) l’image GRUB dans le répertoire de la partition EFI :
 # cp /boot/efi/EFI/debian/grubx64.efi /boot/efi/EFI/boot/bootx64.efi

C'est dans ce répertoire que le système UEFI va regarder.

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (il faut penser à changer la méthode de démarrage dans UEFI).

Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Vérification ==
Une fois de retour dans une console il vous suffit de faire 
 $ ls /sys/firmware |grep efi

Si ça vous retourne une ligne c'est tout bon, sinon il y a quelque chose qui cloche.

Vous pouvez aussi installer le paquet &quot;efivar&quot; et faire un simple :
 # efvar -l
Pour voir la liste des variables disponible

== Nettoyage ==

* Une fois le système démarré via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire.
* Si c'est une migration BIOS vers UEFI vous pouvez aussi supprimer le répertoire /boot/grub/i386-pc

== Au secours ça ne boot plus !!! ==
Pas de panique, il existe un outil qui vous permettra de démarrer en UEFI sur votre OS favori, il s’agit de [http://www.rodsbooks.com/refind/getting.html rEFInd]. Je vous conseille de prendre l’image sur clé USB qui fonctionne à merveille. Une fois téléchargé et décompressé il vous suffit de faire :
 dd if=/chemin/vers/l/image.img of=/dev/sdX

Redémarrez votre machine et vous devriez avoir un joli écran pour choisir quoi lancer, le tout avec de belles icônes et tout.

== Bugs et Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...). Il bloque après la selection du noyau dans Grub.&lt;br /&gt;
J'ai dû installer le paquet depuis les dépots ''unstable''. Un premier essai avec les dépots en ''testing'' n'a pas marché dans mon cas. 

Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]. Merci à ORNis pour sa relecture :)</text>
      <sha1>2wiu8mwd41tqjjkpoohv3x94b0gsot4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5832</id>
      <parentid>5831</parentid>
      <timestamp>2014-09-15T17:56:27Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="8201">Cette page a pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n’a pas pour but d’expliquer ce que sont (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le BIOS de nos carte-mères, il inclut quand même une compatibilité avec l’ancien BIOS.
L’UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de faire deux choses : 
* Installer le chargeur de démarrage sur la partition FAT ;
* Dire à UEFI de créer une entrée pour ce chargeur.

== Installation neuve de Debian ==

Il n’y a pas encore d’image toute prête pour installer Debian avec le support UEFI et deux choix s’offrent à vous : 
* Faire votre propre image d’installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation ;
* Installer en utilisant l’image classique avec le BIOS.

Nous allons ici traiter le second point.

* Supprimer les partitions existantes et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Créer une petite partition (1Mio devrait suffire)
**NE PAS la formater et ne pas la monter
**Initialiser le type sur &quot;BIOS Boot Partition&quot;
*** Avec ''Gparted'' il faut mettre le drapeau &quot;bios_grub&quot;, s’il ne veut pas il faut au préalable formater la partition en FAT16
*** Avec ''parted'' taper la commande &quot;set 1 bios_grub on&quot;, le numéro étant le rang de la partition
*** Avec ''gdisk'' (GPT fdisk) donner le code &quot;EF02&quot; à la partition visé


*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Formater la partition en FAT16/32
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
*** Avec ''Gparted'' il faut mettre le drapeau &quot;boot&quot;
*** Avec ''parted'' taper la commande &quot;set 1 boot on&quot;, le numéro étant le rang de la partition
*** Avec ''gdisk'' donner le code &quot;EF00&quot;
**Monter cette partition sur /boot/efi

*Continuer l’installation normale de Debian en utilisant le BIOS pour démarrer

== Debian déjà installée ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n’ai pas testé cette solution)

*Utiliser un liveCD pour faire une peu de place sur le disque. 
*Créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*Formater la partition en FAT
*Monter sur /boot/efi (/boot/efi n’existe pas, créez-le auparavant) de façon permanente via le fstab avec la ligne suivante :
 UUID=&quot;identifiant-unique-de-la-partition&quot;	/boot/efi	vfat	dafauts	0	2
ou (provenant de RH)
 UUID=&quot;identifiant-unique-de-la-partition&quot;	/boot/efi	vfat	umask=0077,shortname=winnt	0	2

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention les versions du paquet dans les dépôts de Wheezy et Jessie ne semblent pas fonctionner correctement. J’ai dû, dans mon cas, utiliser le version fournie en unstable (2 septembre 2014).''&lt;/span&gt;&lt;br /&gt;
Normalement il va vous demander de supprimer les paquets &quot;grub-pc&quot; et &quot;grub-pc-bin&quot;, s’il ne vous propose qu’un des deux, désinstallez le deuxième manuellement

Si vous voulez installer GRUB sur un disque que vous préparez en chroot il faut monter quelques répertoires systèmes avant :
 # mount /dev/sdXX /mnt
 # mount --bind /dev  /mnt/dev
 # mount --bind /proc /mnt/proc
 # mount --bind /sys  /mnt/sys
 # mount --bind /usr  /mnt/usr &lt;= inutile si vous avez déjà copié le système sur le nouveau disque
 # chroot /mnt

Préparer GRUB via la commande habituelle : 
 # update-grub

Puis l’installer effectivement sur le disque :
 # grub-install /dev/sda

Cette commande fait trois choses : 
*Elle génère une image GRUB
*Elle installe l’image dans la partition EFI sur EFI/debian/grubx64.efi (C’est-à-dire /boot/efi/EFI/debian…)
*Elle essaye de configurer le gestionnaire de démarrage UEFI pour le charger au démarrage de la machine
La dernière étape doit normalement finir par une erreur car le gestionnaire de démarrage UEFI n’est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;

Même si GRUB vous dit que tout s’est bien passé, vérifiez que le répertoire EFI est bien présent et rempli. Si ce n’est pas le cas vous avez du louper quelque chose. N’hésitez pas a prendre la version &quot;unstable&quot; comme conseillé avant.

Si GRUB vous sort quelque chose comme :
 # grub-install /dev/sda                     
 grub-install : erreur : /usr/lib/grub/i386-pc/modinfo.sh n'existe pas. Veuillez utiliser --target ou --directory.

Alors il faut lui préciser pour quel genre de système vous voulez installer GRUB.
 # grub-install --target=x86_64-efi /dev/sdX

Vous pouvez préciser un peu plus de chose pour contrôler plus finement l’installation et que l’exécution soit pus bavarde :
 # grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian --recheck --debug /dev/sdax

si vous épluchez un peu le log vous verrez peut être des lignes comme celle-ci :
 grub-install : information : impossible d'ouvrir « /usr/lib/grub/x86_64-efi/efiemu32.o » : Aucun fichier ou dossier de ce type.

Si vous êtes sur un système 64 bits c’est normal, juste en dessous vous devez trouver :
 grub-install : information : copying `/usr/lib/grub/x86_64-efi/efiemu64.o' -&gt; `/boot/grub/x86_64-efi/efiemu64.o'.

Ou :
 grub-install : information : copying `/usr/share/locale/ru/LC_MESSAGES/grub.mo' -&gt; `/boot/grub/locale/ru.mo'.
 grub-install : information : impossible d'ouvrir « /usr/share/locale/ru/LC_MESSAGES/grub.mo » : Aucun fichier ou dossier de ce type.

Ce qui est normal car ce sont différentes langues qui ne sont pas installées.

''&lt;span style=&quot;color:red&quot;&gt;Attention, arrêtez ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''&lt;br /&gt;
Copier (pas de lien symbolique !, système FAT oblige) l’image GRUB dans le répertoire de la partition EFI :
 # cp /boot/efi/EFI/debian/grubx64.efi /boot/efi/EFI/boot/bootx64.efi

C’est dans ce répertoire que le système UEFI va regarder.

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (il faut penser à changer la méthode de démarrage dans UEFI).

Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Vérification ==
Une fois de retour dans une console il vous suffit de faire 
 $ ls /sys/firmware |grep efi

Si ça vous retourne une ligne c’est tout bon, sinon il y a quelque chose qui cloche.

Vous pouvez aussi installer le paquet &quot;efivar&quot; et faire un simple :
 # efvar -l
Pour voir la liste des variables disponible.

== Nettoyage ==

* Une fois le système démarré via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n’est plus nécessaire.
* S’il s’agissait d’une migration de BIOS vers UEFI vous pouvez aussi supprimer le répertoire /boot/grub/i386-pc.

== Au secours, ça ne démarre plus !!! ==
Pas de panique, il existe un outil qui vous permettra de démarrer en UEFI sur votre OS favori, il s’agit de [http://www.rodsbooks.com/refind/getting.html rEFInd]. Je vous conseille de prendre l’image sur clé USB qui fonctionne à merveille. Une fois téléchargé et décompressé il vous suffit de faire :
 dd if=/chemin/vers/l/image.img of=/dev/sdX

Redémarrez votre machine et vous devriez avoir un bel écran pour choisir quoi lancer, le tout avec de jolies icônes et tout.

== Bugs et Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell…). Il bloque après la selection du noyau dans GRUB.&lt;br /&gt;
J’ai dû installer le paquet depuis les dépots ''unstable''. Un premier essai avec les dépots en ''testing'' (Jessie au moment de l’écriture) n’a pas fonctionné dans mon cas. 

Ce tuto est basé sur un sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]. Merci à ORNis pour sa relecture :)</text>
      <sha1>ij0ixip5dah29ktbwegv6cx3efnbrx3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5902</id>
      <parentid>5832</parentid>
      <timestamp>2014-11-13T22:16:58Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <minor/>
      <comment>/* Passer en UEFI */</comment>
      <text xml:space="preserve" bytes="8200">Cette page a pour but de vous aider à démarrer Debian sur un EFI.&lt;br /&gt; 
Elle n’a pas pour but d’expliquer ce que sont (U)EFI et les tables de partitions GPT.


== kézako ? ==

UEFI est prévu pour remplacer le BIOS de nos carte-mères, il inclut quand même une compatibilité avec l’ancien BIOS.
L’UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de faire deux choses : 
* Installer le chargeur de démarrage sur la partition FAT ;
* Dire à UEFI de créer une entrée pour ce chargeur.

== Installation neuve de Debian ==

Il n’y a pas encore d’image toute prête pour installer Debian avec le support UEFI et deux choix s’offrent à vous : 
* Faire votre propre image d’installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation ;
* Installer en utilisant l’image classique avec le BIOS.

Nous allons ici traiter le second point.

* Supprimer les partitions existantes et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Créer une petite partition (1Mio devrait suffire)
**NE PAS la formater et ne pas la monter
**Initialiser le type sur &quot;BIOS Boot Partition&quot;
*** Avec ''Gparted'' il faut mettre le drapeau &quot;bios_grub&quot;, s’il ne veut pas il faut au préalable formater la partition en FAT16
*** Avec ''parted'' taper la commande &quot;set 1 bios_grub on&quot;, le numéro étant le rang de la partition
*** Avec ''gdisk'' (GPT fdisk) donner le code &quot;EF02&quot; à la partition visé


*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
**Formater la partition en FAT16/32
**Initialiser le type sur &quot;EFI system partition&quot; et placer le drapeau de Boot sur celle-ci
*** Avec ''Gparted'' il faut mettre le drapeau &quot;boot&quot;
*** Avec ''parted'' taper la commande &quot;set 1 boot on&quot;, le numéro étant le rang de la partition
*** Avec ''gdisk'' donner le code &quot;EF00&quot;
**Monter cette partition sur /boot/efi

*Continuer l’installation normale de Debian en utilisant le BIOS pour démarrer

== Debian déjà installée ==

Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n’ai pas testé cette solution)

*Utiliser un liveCD pour faire une peu de place sur le disque. 
*Créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*Formater la partition en FAT
*Monter sur /boot/efi (/boot/efi n’existe pas, créez-le auparavant) de façon permanente via le fstab avec la ligne suivante :
 UUID=&quot;identifiant-unique-de-la-partition&quot;	/boot/efi	vfat	dafauts	0	2
ou (provenant de RH)
 UUID=&quot;identifiant-unique-de-la-partition&quot;	/boot/efi	vfat	umask=0077,shortname=winnt	0	2

== Passer en UEFI ==
Installer le paquet grub-efi-amd64&lt;br /&gt;
''&lt;span style=&quot;color:red&quot;&gt;Attention les versions du paquet dans les dépôts de Wheezy et Jessie ne semblent pas fonctionner correctement. J’ai dû, dans mon cas, utiliser le version fournie en unstable (2 septembre 2014).''&lt;/span&gt;&lt;br /&gt;
Normalement il va vous demander de supprimer les paquets &quot;grub-pc&quot; et &quot;grub-pc-bin&quot;, s’il ne vous propose qu’un des deux, désinstallez le deuxième manuellement

Si vous voulez installer GRUB sur un disque que vous préparez en chroot il faut monter quelques répertoires systèmes avant :
 # mount /dev/sdXX /mnt
 # mount --bind /dev  /mnt/dev
 # mount --bind /proc /mnt/proc
 # mount --bind /sys  /mnt/sys
 # mount --bind /usr  /mnt/usr &lt;= inutile si vous avez déjà copié le système sur le nouveau disque
 # chroot /mnt

Préparer GRUB via la commande habituelle : 
 # update-grub

Puis l’installer effectivement sur le disque :
 # grub-install /dev/sda

Cette commande fait trois choses : 
*Elle génère une image GRUB
*Elle installe l’image dans la partition EFI sur EFI/debian/grubx64.efi (C’est-à-dire /boot/efi/EFI/debian…)
*Elle essaye de configurer le gestionnaire de démarrage UEFI pour le charger au démarrage de la machine
La dernière étape doit normalement finir par une erreur car le gestionnaire de démarrage UEFI n’est configurable que depuis un système déjà démarré en UEFI.&lt;br /&gt;

Même si GRUB vous dit que tout s’est bien passé, vérifiez que le répertoire EFI est bien présent et rempli. Si ce n’est pas le cas vous avez du louper quelque chose. N’hésitez pas a prendre la version &quot;unstable&quot; comme conseillé avant.

Si GRUB vous sort quelque chose comme :
 # grub-install /dev/sda                     
 grub-install : erreur : /usr/lib/grub/i386-pc/modinfo.sh n'existe pas. Veuillez utiliser --target ou --directory.

Alors il faut lui préciser pour quel genre de système vous voulez installer GRUB.
 # grub-install --target=x86_64-efi /dev/sdX

Vous pouvez préciser un peu plus de chose pour contrôler plus finement l’installation et que l’exécution soit pus bavarde :
 # grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian --recheck --debug /dev/sdX

si vous épluchez un peu le log vous verrez peut être des lignes comme celle-ci :
 grub-install : information : impossible d'ouvrir « /usr/lib/grub/x86_64-efi/efiemu32.o » : Aucun fichier ou dossier de ce type.

Si vous êtes sur un système 64 bits c’est normal, juste en dessous vous devez trouver :
 grub-install : information : copying `/usr/lib/grub/x86_64-efi/efiemu64.o' -&gt; `/boot/grub/x86_64-efi/efiemu64.o'.

Ou :
 grub-install : information : copying `/usr/share/locale/ru/LC_MESSAGES/grub.mo' -&gt; `/boot/grub/locale/ru.mo'.
 grub-install : information : impossible d'ouvrir « /usr/share/locale/ru/LC_MESSAGES/grub.mo » : Aucun fichier ou dossier de ce type.

Ce qui est normal car ce sont différentes langues qui ne sont pas installées.

''&lt;span style=&quot;color:red&quot;&gt;Attention, arrêtez ici et votre système ne pourra plus démarrer !&lt;/span&gt;
''&lt;br /&gt;
Copier (pas de lien symbolique !, système FAT oblige) l’image GRUB dans le répertoire de la partition EFI :
 # cp /boot/efi/EFI/debian/grubx64.efi /boot/efi/EFI/boot/bootx64.efi

C’est dans ce répertoire que le système UEFI va regarder.

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (il faut penser à changer la méthode de démarrage dans UEFI).

Si tout a fonctionné, vous devez maintenant avoir une entrée &quot;debian&quot; dans la liste.

== Vérification ==
Une fois de retour dans une console il vous suffit de faire 
 $ ls /sys/firmware |grep efi

Si ça vous retourne une ligne c’est tout bon, sinon il y a quelque chose qui cloche.

Vous pouvez aussi installer le paquet &quot;efivar&quot; et faire un simple :
 # efvar -l
Pour voir la liste des variables disponible.

== Nettoyage ==

* Une fois le système démarré via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n’est plus nécessaire.
* S’il s’agissait d’une migration de BIOS vers UEFI vous pouvez aussi supprimer le répertoire /boot/grub/i386-pc.

== Au secours, ça ne démarre plus !!! ==
Pas de panique, il existe un outil qui vous permettra de démarrer en UEFI sur votre OS favori, il s’agit de [http://www.rodsbooks.com/refind/getting.html rEFInd]. Je vous conseille de prendre l’image sur clé USB qui fonctionne à merveille. Une fois téléchargé et décompressé il vous suffit de faire :
 dd if=/chemin/vers/l/image.img of=/dev/sdX

Redémarrez votre machine et vous devriez avoir un bel écran pour choisir quoi lancer, le tout avec de jolies icônes et tout.

== Bugs et Informations Importantes ==

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell…). Il bloque après la selection du noyau dans GRUB.&lt;br /&gt;
J’ai dû installer le paquet depuis les dépots ''unstable''. Un premier essai avec les dépots en ''testing'' (Jessie au moment de l’écriture) n’a pas fonctionné dans mon cas. 

Ce tuto est basé sur un sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]. Merci à ORNis pour sa relecture :)</text>
      <sha1>6b0a8vcmbm8jii8be547hjp2tlmb2s5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Debian Squeeze: LDAP - Mandriva Directory Server (MDS)</title>
    <ns>0</ns>
    <id>749</id>
    <revision>
      <id>3287</id>
      <timestamp>2011-08-17T09:53:45Z</timestamp>
      <contributor>
        <username>Arand263</username>
        <id>151</id>
      </contributor>
      <comment>Page créée avec « Voici comment installer la Mandriva Management Console (MMC) sur une Debian Squeeze :  '''Ajout d’un nouveau dépôt de paquets:'''  Modifier le fichier /etc/apt/sources.li... »</comment>
      <text xml:space="preserve" bytes="3478">Voici comment installer la Mandriva Management Console (MMC) sur une Debian Squeeze :

'''Ajout d’un nouveau dépôt de paquets:'''

Modifier le fichier /etc/apt/sources.list pour ajouter un nouveau dépôt de paquets :
 # vim /etc/apt/sources.list

 deb http://mds.mandriva.org/pub/mds/debian squeeze main

 # aptitude update

'''Installation et configuration de mmc-agent :'''

On installe ensuite les paquets nécessaires :

 # aptitude install mmc-agent mmc-web-base

On crée ensuite un mot de passe haché en base64 de celui de l’admin de l’annuaire :

 $ python -c 'print &quot;{base64}&quot;+&quot;[mot_de_passe_admin]&quot;.encode(&quot;base64&quot;)'
 {base64}aXRldGFkbWlu

Voici ce qu’il faut modifier dans le fichier /etc/mmc/plugins/base.ini pour l’accès à la base de l’annuaire LDAP :
 # vim /etc/mmc/plugins/base.ini

 # LDAP base DN
 baseDN = dc=&lt;mondomaine&gt;, dc=&lt;local&gt;
 # Users location in the LDAP
 baseUsersDN = ou=Users, %(basedn)s
 # Groups location in the LDAP
 baseGroupsDN = ou=Groups, %(basedn)s
 # LDAP manager
 rootName = cn=admin, %(basedn)s
 password = {base64}aXRldGFkbWlu
 passwordscheme = ssha

Il faut ensuite créer le répertoire de stockage des archives (par défaut, c’est le dossier /home/archives):

 # mkdir /home/archives

Lors de l’ajout d’un nouvel utilisateur, si on veut lui donner le droit de modifier son mot de passe, il faut ajouter la section suivante dans le fichier /etc/mmc/

plugins/base.ini :
 [userdeault]
 objectClass = +lmcUserObject
 lmcACL = :base#users#passwd/

Pour l’interface web, on modifier la ligne suivante dans le fichier /etc/mmc/mmc.ini :
 root = /

Il faut maintenant ajouter un nouveau schéma dans l’annuaire LDAP :

 # cp /usr/share/doc/python-mmc-base/contrib/ldap/mmc.schema /etc/ldap/schema/

 # vim /etc/ldap/slapd.conf
 include         /etc/ldap/schema/mmc.schema

Tester la configuration :

 # slaptest –f /etc/ldap/slapd.conf –F /etc/ldap/slapd.d

Redémarrer les services :

 # invoke-rc.d slapd restart

 # invoke-rc.d mmc-agent restart

'''Configuration d’apache :'''


D’abord il faut ajouter la ligne suivante dans le fichier /etc/apache2/ports.conf :

 Listen 443

Puis, donner un nom au serveur :

 # vim /etc/apache2/httpd.conf

 ServerName = 127.0.0.1

Ajouter un nouveau VirtualHost dans le fichier /etc/apache2/sites-available/mmc :

 # vim /etc/apache2/sites-available/mmc 

 &lt;VirtualHost *:80&gt; 
    ServerName 127.0.0.1
    ServerAlias mmc 
    ServerAdmin webmaster@example.org 
    ErrorLog /var/log/apache2/mmc_error.log 
    CustomLog /var/log/apache2/mmc_access.log combined 
 &lt;/VirtualHost&gt; 
 &lt;VirtualHost *:443&gt; 
    ServerName 127.0.0.1
    ServerAlias mmc
    ServerAdmin webmaster@example.org 
    DocumentRoot /usr/share/mmc/ 
    &lt;Directory /usr/share/mmc/&gt; 
        AllowOverride None 
        Order allow,deny 
        allow from all 
        php_flag short_open_tag on 
    &lt;/Directory&gt; 
    ErrorLog /var/log/apache2/mmc_error.log 
    CustomLog /var/log/apache2/mmc_access.log combined 
 &lt;/VirtualHost&gt;

Activer le nouveau VirtualHost :

 # a2ensite mmc

Editer le fichier /etc/default/mmc-agent :

 ENABLE = yes

Ajouter l’option « acl » pour le montage de la partition contenant le /home dans le fichier /etc/fstab.

Redémarrer le serveur apache :

 # invoke-rc.d apache restart

Sur le navigateur, taper l’adresse : http://IP_du_Serveur_LDAP:443

Pour la connexion, utiliser l’utilisateur root et le mot de passe de l’administrateur de l’annuaire.</text>
      <sha1>8ote4f7w4v4cnn1mnbaoolgaoso7ojt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3289</id>
      <parentid>3287</parentid>
      <timestamp>2011-08-17T09:55:11Z</timestamp>
      <contributor>
        <username>Arand263</username>
        <id>151</id>
      </contributor>
      <text xml:space="preserve" bytes="3479">Voici comment installer la Mandriva Management Console (MMC) sur une Debian Squeeze :

'''Ajout d’un nouveau dépôt de paquets:'''

Modifier le fichier /etc/apt/sources.list pour ajouter un nouveau dépôt de paquets :
 # vim /etc/apt/sources.list

 deb http://mds.mandriva.org/pub/mds/debian squeeze main

 # aptitude update

'''Installation et configuration de mmc-agent :'''

On installe ensuite les paquets nécessaires :

 # aptitude install mmc-agent mmc-web-base

On crée ensuite un mot de passe haché en base64 de celui de l’admin de l’annuaire :

 $ python -c 'print &quot;{base64}&quot;+&quot;[mot_de_passe_admin]&quot;.encode(&quot;base64&quot;)'
 {base64}aXRldGFkbWlu

Voici ce qu’il faut modifier dans le fichier /etc/mmc/plugins/base.ini pour l’accès à la base de l’annuaire LDAP :
 # vim /etc/mmc/plugins/base.ini

 # LDAP base DN
 baseDN = dc=&lt;mondomaine&gt;, dc=&lt;local&gt;
 # Users location in the LDAP
 baseUsersDN = ou=Users, %(basedn)s
 # Groups location in the LDAP
 baseGroupsDN = ou=Groups, %(basedn)s
 # LDAP manager
 rootName = cn=admin, %(basedn)s
 password = {base64}aXRldGFkbWlu
 passwordscheme = ssha

Il faut ensuite créer le répertoire de stockage des archives (par défaut, c’est le dossier /home/archives):

 # mkdir /home/archives

Lors de l’ajout d’un nouvel utilisateur, si on veut lui donner le droit de modifier son mot de passe, il faut ajouter la section suivante dans le fichier /etc/mmc/

plugins/base.ini :
 [userdeault]
 objectClass = +lmcUserObject
 lmcACL = :base#users#passwd/

Pour l’interface web, on modifier la ligne suivante dans le fichier /etc/mmc/mmc.ini :
 root = /

Il faut maintenant ajouter un nouveau schéma dans l’annuaire LDAP :

 # cp /usr/share/doc/python-mmc-base/contrib/ldap/mmc.schema /etc/ldap/schema/

 # vim /etc/ldap/slapd.conf
 include         /etc/ldap/schema/mmc.schema

Tester la configuration :

 # slaptest –f /etc/ldap/slapd.conf –F /etc/ldap/slapd.d

Redémarrer les services :

 # invoke-rc.d slapd restart

 # invoke-rc.d mmc-agent restart

'''Configuration d’apache :'''


D’abord il faut ajouter la ligne suivante dans le fichier /etc/apache2/ports.conf :

 Listen 443

Puis, donner un nom au serveur :

 # vim /etc/apache2/httpd.conf

 ServerName = 127.0.0.1

Ajouter un nouveau VirtualHost dans le fichier /etc/apache2/sites-available/mmc :

 # vim /etc/apache2/sites-available/mmc 

 &lt;VirtualHost *:80&gt; 
    ServerName 127.0.0.1
    ServerAlias mmc 
    ServerAdmin webmaster@example.org 
    ErrorLog /var/log/apache2/mmc_error.log 
    CustomLog /var/log/apache2/mmc_access.log combined 
 &lt;/VirtualHost&gt; 
 &lt;VirtualHost *:443&gt; 
    ServerName 127.0.0.1
    ServerAlias mmc
    ServerAdmin webmaster@example.org 
    DocumentRoot /usr/share/mmc/ 
    &lt;Directory /usr/share/mmc/&gt; 
        AllowOverride None 
        Order allow,deny 
        allow from all 
        php_flag short_open_tag on 
    &lt;/Directory&gt; 
    ErrorLog /var/log/apache2/mmc_error.log 
    CustomLog /var/log/apache2/mmc_access.log combined 
 &lt;/VirtualHost&gt;

Activer le nouveau VirtualHost :

 # a2ensite mmc

Editer le fichier /etc/default/mmc-agent :

 ENABLE = yes

Ajouter l’option « acl » pour le montage de la partition contenant le /home dans le fichier /etc/fstab.

Redémarrer le serveur apache :

 # invoke-rc.d apache2 restart

Sur le navigateur, taper l’adresse : http://IP_du_Serveur_LDAP:443

Pour la connexion, utiliser l’utilisateur root et le mot de passe de l’administrateur de l’annuaire.</text>
      <sha1>mkuuqodq6i9unyf3xinaxniaxze27yy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3292</id>
      <parentid>3289</parentid>
      <timestamp>2011-08-19T13:52:44Z</timestamp>
      <contributor>
        <username>Arand263</username>
        <id>151</id>
      </contributor>
      <text xml:space="preserve" bytes="4568">D’après :

 http://wiki.mandriva.com/fr/Mandriva_Directory_Server
 http://mds.mandriva.org/content/MMC/install/en/mmc-generic-installation.html#id2622161

Mandriva Directory Server (MDS) est une plateforme d'annuaire d'entreprise s'appuyant sur LDAP. MDS est conçu pour gérer les identités, les informations de contrôle d'accès, les politiques d'entreprise, les paramètres des applications et les profils des utilisateurs. Si vous utilisez Samba, Postfix, Squid ou CUPS, vous pouvez bénéficier de MDS dès aujourd'hui pour gérer votre infrastructure.

La console MMC (Mandriva Management Console) est composée de deux parties:

1.Un agent s'exécutant sur la machine à gérer. Nous l'appelons «agent MMC». L’agent exporte plusieurs plugins qui permettent de gérer la machine. Bien sûr, il peut y avoir plusieurs agents sur le réseau. L'agent et ses plugins sont écrits en Python.

2.Une interface web, qui parle à l'agent (s) en utilisant XML-RPC. L'interface est écrite en PHP4, et utilise  AJAX.

Dans ce document, nous allons d'abord expliquer comment installer et configurer l'agent de MMC et ses plugins, puis comment installer l'interface web.


'''Ajout d’un nouveau dépôt de paquets:'''

Modifier le fichier /etc/apt/sources.list pour ajouter un nouveau dépôt de paquets :
 # vim /etc/apt/sources.list

 deb http://mds.mandriva.org/pub/mds/debian squeeze main

 # aptitude update

'''Installation et configuration de mmc-agent :'''

On installe ensuite les paquets nécessaires :

 # aptitude install mmc-agent mmc-web-base

On crée ensuite un mot de passe haché en base64 de celui de l’admin de l’annuaire :

 $ python -c 'print &quot;{base64}&quot;+&quot;[mot_de_passe_admin]&quot;.encode(&quot;base64&quot;)'
 {base64}aXRldGFkbWlu

Voici ce qu’il faut modifier dans le fichier /etc/mmc/plugins/base.ini pour l’accès à la base de l’annuaire LDAP :
 # vim /etc/mmc/plugins/base.ini

 # LDAP base DN
 baseDN = dc=&lt;mondomaine&gt;, dc=&lt;local&gt;
 # Users location in the LDAP
 baseUsersDN = ou=Users, %(basedn)s
 # Groups location in the LDAP
 baseGroupsDN = ou=Groups, %(basedn)s
 # LDAP manager
 rootName = cn=admin, %(basedn)s
 password = {base64}aXRldGFkbWlu
 passwordscheme = ssha

Il faut ensuite créer le répertoire de stockage des archives (par défaut, c’est le dossier /home/archives):

 # mkdir /home/archives

Lors de l’ajout d’un nouvel utilisateur, si on veut lui donner le droit de modifier son mot de passe, il faut ajouter la section suivante dans le fichier /etc/mmc/

plugins/base.ini :
 [userdeault]
 objectClass = +lmcUserObject
 lmcACL = :base#users#passwd/

Pour l’interface web, on modifier la ligne suivante dans le fichier /etc/mmc/mmc.ini :
 root = /

Il faut maintenant ajouter un nouveau schéma dans l’annuaire LDAP :

 # cp /usr/share/doc/python-mmc-base/contrib/ldap/mmc.schema /etc/ldap/schema/

 # vim /etc/ldap/slapd.conf
 include         /etc/ldap/schema/mmc.schema

Tester la configuration :

 # slaptest –f /etc/ldap/slapd.conf –F /etc/ldap/slapd.d

Redémarrer les services :

 # invoke-rc.d slapd restart

 # invoke-rc.d mmc-agent restart

'''Configuration d’apache :'''


D’abord il faut ajouter la ligne suivante dans le fichier /etc/apache2/ports.conf :

 Listen 443

Puis, donner un nom au serveur :

 # vim /etc/apache2/httpd.conf

 ServerName = 127.0.0.1

Ajouter un nouveau VirtualHost dans le fichier /etc/apache2/sites-available/mmc :

 # vim /etc/apache2/sites-available/mmc 

 &lt;VirtualHost *:80&gt; 
    ServerName 127.0.0.1
    ServerAlias mmc 
    ServerAdmin webmaster@example.org 
    ErrorLog /var/log/apache2/mmc_error.log 
    CustomLog /var/log/apache2/mmc_access.log combined 
 &lt;/VirtualHost&gt; 
 &lt;VirtualHost *:443&gt; 
    ServerName 127.0.0.1
    ServerAlias mmc
    ServerAdmin webmaster@example.org 
    DocumentRoot /usr/share/mmc/ 
    &lt;Directory /usr/share/mmc/&gt; 
        AllowOverride None 
        Order allow,deny 
        allow from all 
        php_flag short_open_tag on 
    &lt;/Directory&gt; 
    ErrorLog /var/log/apache2/mmc_error.log 
    CustomLog /var/log/apache2/mmc_access.log combined 
 &lt;/VirtualHost&gt;

Activer le nouveau VirtualHost :

 # a2ensite mmc

Editer le fichier /etc/default/mmc-agent :

 ENABLE = yes

Ajouter l’option « acl » pour le montage de la partition contenant le /home dans le fichier /etc/fstab.

Redémarrer le serveur apache :

 # invoke-rc.d apache2 restart

Sur le navigateur, taper l’adresse : http://IP_du_Serveur_LDAP:443

Pour la connexion, utiliser l’utilisateur root et le mot de passe de l’administrateur de l’annuaire.</text>
      <sha1>k3fcqb322i82l3ho6souiaid1d4gj19</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3380</id>
      <parentid>3292</parentid>
      <timestamp>2011-08-23T05:35:14Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="4656">'''Mandriva Directory Server (MDS)''' est une plateforme d'annuaire d'entreprise s'appuyant sur LDAP.

MDS est conçu pour gérer les identités, les informations de contrôle d'accès, les politiques d'entreprise, les paramètres des applications et les profils des utilisateurs.

Si vous utilisez Samba, Postfix, Squid ou CUPS, vous pouvez bénéficier de MDS dès aujourd'hui pour gérer votre infrastructure.

La console MMC (Mandriva Management Console) est composée de deux parties:

*1.Un agent s'exécutant sur la machine à gérer. Nous l'appelons «agent MMC». L’agent exporte plusieurs plugins qui permettent de gérer la machine. Bien sûr, il peut y avoir plusieurs agents sur le réseau. L'agent et ses plugins sont écrits en Python.

*2.Une interface web, qui parle à l'agent (s) en utilisant XML-RPC. L'interface est écrite en PHP4, et utilise  AJAX.

Dans ce document, nous allons d'abord expliquer comment installer et configurer l'agent de MMC et ses plugins, puis comment installer l'interface web.


== Ajout du dépôt mds.mandriva:==

Modifier le fichier /etc/apt/sources.list pour ajouter un nouveau dépôt de paquets :
 # vim /etc/apt/sources.list

 deb http://mds.mandriva.org/pub/mds/debian squeeze main

 # aptitude update

== Installation et configuration de mmc-agent : ==

On installe ensuite les paquets nécessaires :

 # aptitude install mmc-agent mmc-web-base

On crée ensuite un mot de passe haché en base64 de celui de l’admin de l’annuaire :

 $ python -c 'print &quot;{base64}&quot;+&quot;[mot_de_passe_admin]&quot;.encode(&quot;base64&quot;)'
 {base64}aXRldGFkbWlu

Voici ce qu’il faut modifier dans le fichier /etc/mmc/plugins/base.ini pour l’accès à la base de l’annuaire LDAP :
 # vim /etc/mmc/plugins/base.ini

 # LDAP base DN
 baseDN = dc=&lt;mondomaine&gt;, dc=&lt;local&gt;
 # Users location in the LDAP
 baseUsersDN = ou=Users, %(basedn)s
 # Groups location in the LDAP
 baseGroupsDN = ou=Groups, %(basedn)s
 # LDAP manager
 rootName = cn=admin, %(basedn)s
 password = {base64}aXRldGFkbWlu
 passwordscheme = ssha

Il faut ensuite créer le répertoire de stockage des archives (par défaut, c’est le dossier /home/archives):

 # mkdir /home/archives

Lors de l’ajout d’un nouvel utilisateur, si on veut lui donner le droit de modifier son mot de passe, il faut ajouter la section suivante dans le fichier /etc/mmc/

plugins/base.ini :
 [userdeault]
 objectClass = +lmcUserObject
 lmcACL = :base#users#passwd/

Pour l’interface web, on modifier la ligne suivante dans le fichier /etc/mmc/mmc.ini :
 root = /

Il faut maintenant ajouter un nouveau schéma dans l’annuaire LDAP :

 # cp /usr/share/doc/python-mmc-base/contrib/ldap/mmc.schema /etc/ldap/schema/

 # vim /etc/ldap/slapd.conf
 include         /etc/ldap/schema/mmc.schema

Tester la configuration :

 # slaptest –f /etc/ldap/slapd.conf –F /etc/ldap/slapd.d

Redémarrer les services :

 # invoke-rc.d slapd restart

 # invoke-rc.d mmc-agent restart

== Configuration d’apache :==


D’abord il faut ajouter la ligne suivante dans le fichier /etc/apache2/ports.conf :

 Listen 443

Puis, donner un nom au serveur :

 # vim /etc/apache2/httpd.conf

 ServerName = 127.0.0.1

Ajouter un nouveau VirtualHost dans le fichier /etc/apache2/sites-available/mmc :

 # vim /etc/apache2/sites-available/mmc 

 &lt;VirtualHost *:80&gt; 
    ServerName 127.0.0.1
    ServerAlias mmc 
    ServerAdmin webmaster@example.org 
    ErrorLog /var/log/apache2/mmc_error.log 
    CustomLog /var/log/apache2/mmc_access.log combined 
 &lt;/VirtualHost&gt; 
 &lt;VirtualHost *:443&gt; 
    ServerName 127.0.0.1
    ServerAlias mmc
    ServerAdmin webmaster@example.org 
    DocumentRoot /usr/share/mmc/ 
    &lt;Directory /usr/share/mmc/&gt; 
        AllowOverride None 
        Order allow,deny 
        allow from all 
        php_flag short_open_tag on 
    &lt;/Directory&gt; 
    ErrorLog /var/log/apache2/mmc_error.log 
    CustomLog /var/log/apache2/mmc_access.log combined 
 &lt;/VirtualHost&gt;

Activer le nouveau VirtualHost :

 # a2ensite mmc

Editer le fichier /etc/default/mmc-agent :

 ENABLE = yes

Ajouter l’option « acl » pour le montage de la partition contenant le /home dans le fichier /etc/fstab.

Redémarrer le serveur apache :

 # invoke-rc.d apache2 restart

Sur le navigateur, taper l’adresse : http://IP_du_Serveur_LDAP:443

Pour la connexion, utiliser l’utilisateur root et le mot de passe de l’administrateur de l’annuaire.

== Sources ==

* {{fr}} [http://wiki.mandriva.com/fr/Mandriva_Directory_Server Mandriva Directory Server]
* {{en}} [http://mds.mandriva.org/content/MMC/install/en/mmc-generic-installation.html#id2622161 MMC installation]

[[Catégorie:Logiciels]]</text>
      <sha1>0iyjg8b8eb6ghi0g4lmw779ya46lba3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3381</id>
      <parentid>3380</parentid>
      <timestamp>2011-08-23T11:44:23Z</timestamp>
      <contributor>
        <username>Arand263</username>
        <id>151</id>
      </contributor>
      <comment>/* Installation et configuration de mmc-agent : */</comment>
      <text xml:space="preserve" bytes="4793">'''Mandriva Directory Server (MDS)''' est une plateforme d'annuaire d'entreprise s'appuyant sur LDAP.

MDS est conçu pour gérer les identités, les informations de contrôle d'accès, les politiques d'entreprise, les paramètres des applications et les profils des utilisateurs.

Si vous utilisez Samba, Postfix, Squid ou CUPS, vous pouvez bénéficier de MDS dès aujourd'hui pour gérer votre infrastructure.

La console MMC (Mandriva Management Console) est composée de deux parties:

*1.Un agent s'exécutant sur la machine à gérer. Nous l'appelons «agent MMC». L’agent exporte plusieurs plugins qui permettent de gérer la machine. Bien sûr, il peut y avoir plusieurs agents sur le réseau. L'agent et ses plugins sont écrits en Python.

*2.Une interface web, qui parle à l'agent (s) en utilisant XML-RPC. L'interface est écrite en PHP4, et utilise  AJAX.

Dans ce document, nous allons d'abord expliquer comment installer et configurer l'agent de MMC et ses plugins, puis comment installer l'interface web.


== Ajout du dépôt mds.mandriva:==

Modifier le fichier /etc/apt/sources.list pour ajouter un nouveau dépôt de paquets :
 # vim /etc/apt/sources.list

 deb http://mds.mandriva.org/pub/mds/debian squeeze main

 # aptitude update

== Installation et configuration de mmc-agent : ==

On installe ensuite les paquets nécessaires :

 # aptitude install mmc-agent mmc-web-base

On crée ensuite un mot de passe haché en base64 de celui de l’admin de l’annuaire :

 $ python -c 'print &quot;{base64}&quot;+&quot;[mot_de_passe_admin]&quot;.encode(&quot;base64&quot;)'
 {base64}aXRldGFkbWlu

Voici ce qu’il faut modifier dans le fichier /etc/mmc/plugins/base.ini pour l’accès à la base de l’annuaire LDAP :
 # vim /etc/mmc/plugins/base.ini

 # LDAP base DN
 baseDN = dc=&lt;mondomaine&gt;, dc=&lt;local&gt;
 # Users location in the LDAP
 baseUsersDN = ou=Users, %(basedn)s
 # Groups location in the LDAP
 baseGroupsDN = ou=Groups, %(basedn)s
 # LDAP manager
 rootName = cn=admin, %(basedn)s
 password = {base64}aXRldGFkbWlu
 passwordscheme = ssha

Il faut ensuite créer le répertoire de stockage des archives (par défaut, c’est le dossier /home/archives):

 # mkdir /home/archives

Lors de l’ajout d’un nouvel utilisateur, si on veut lui donner le droit de modifier son mot de passe, il faut ajouter la section suivante dans le fichier /etc/mmc/

plugins/base.ini :
 [userdeault]
 objectClass = +lmcUserObject
 lmcACL = :base#users#passwd/

Pour l’interface web, on modifier la ligne suivante dans le fichier /etc/mmc/mmc.ini :
 root = /

Il faut maintenant ajouter un nouveau schéma dans l’annuaire LDAP :

 # cp /usr/share/doc/python-mmc-base/contrib/ldap/mmc.schema /etc/ldap/schema/

 # vim /etc/ldap/slapd.conf
 include         /etc/ldap/schema/mmc.schema

Tester la configuration :

 # slaptest –f /etc/ldap/slapd.conf –F /etc/ldap/slapd.d

Attribuer les permissions adéquates:

 # chown openldap:openldap /etc/ldap/schema/ -R
 # chown openldap:openldap /etc/ldap/slapd.d/ -R

Redémarrer les services :

 # invoke-rc.d slapd restart

 # invoke-rc.d mmc-agent restart

== Configuration d’apache :==


D’abord il faut ajouter la ligne suivante dans le fichier /etc/apache2/ports.conf :

 Listen 443

Puis, donner un nom au serveur :

 # vim /etc/apache2/httpd.conf

 ServerName = 127.0.0.1

Ajouter un nouveau VirtualHost dans le fichier /etc/apache2/sites-available/mmc :

 # vim /etc/apache2/sites-available/mmc 

 &lt;VirtualHost *:80&gt; 
    ServerName 127.0.0.1
    ServerAlias mmc 
    ServerAdmin webmaster@example.org 
    ErrorLog /var/log/apache2/mmc_error.log 
    CustomLog /var/log/apache2/mmc_access.log combined 
 &lt;/VirtualHost&gt; 
 &lt;VirtualHost *:443&gt; 
    ServerName 127.0.0.1
    ServerAlias mmc
    ServerAdmin webmaster@example.org 
    DocumentRoot /usr/share/mmc/ 
    &lt;Directory /usr/share/mmc/&gt; 
        AllowOverride None 
        Order allow,deny 
        allow from all 
        php_flag short_open_tag on 
    &lt;/Directory&gt; 
    ErrorLog /var/log/apache2/mmc_error.log 
    CustomLog /var/log/apache2/mmc_access.log combined 
 &lt;/VirtualHost&gt;

Activer le nouveau VirtualHost :

 # a2ensite mmc

Editer le fichier /etc/default/mmc-agent :

 ENABLE = yes

Ajouter l’option « acl » pour le montage de la partition contenant le /home dans le fichier /etc/fstab.

Redémarrer le serveur apache :

 # invoke-rc.d apache2 restart

Sur le navigateur, taper l’adresse : http://IP_du_Serveur_LDAP:443

Pour la connexion, utiliser l’utilisateur root et le mot de passe de l’administrateur de l’annuaire.

== Sources ==

* {{fr}} [http://wiki.mandriva.com/fr/Mandriva_Directory_Server Mandriva Directory Server]
* {{en}} [http://mds.mandriva.org/content/MMC/install/en/mmc-generic-installation.html#id2622161 MMC installation]

[[Catégorie:Logiciels]]</text>
      <sha1>5x6d1ngovcafvby04j2xwyzw45xofm8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3392</id>
      <parentid>3381</parentid>
      <timestamp>2011-08-25T08:35:31Z</timestamp>
      <contributor>
        <username>Arand263</username>
        <id>151</id>
      </contributor>
      <comment>/* Installation et configuration de mmc-agent : */</comment>
      <text xml:space="preserve" bytes="4794">'''Mandriva Directory Server (MDS)''' est une plateforme d'annuaire d'entreprise s'appuyant sur LDAP.

MDS est conçu pour gérer les identités, les informations de contrôle d'accès, les politiques d'entreprise, les paramètres des applications et les profils des utilisateurs.

Si vous utilisez Samba, Postfix, Squid ou CUPS, vous pouvez bénéficier de MDS dès aujourd'hui pour gérer votre infrastructure.

La console MMC (Mandriva Management Console) est composée de deux parties:

*1.Un agent s'exécutant sur la machine à gérer. Nous l'appelons «agent MMC». L’agent exporte plusieurs plugins qui permettent de gérer la machine. Bien sûr, il peut y avoir plusieurs agents sur le réseau. L'agent et ses plugins sont écrits en Python.

*2.Une interface web, qui parle à l'agent (s) en utilisant XML-RPC. L'interface est écrite en PHP4, et utilise  AJAX.

Dans ce document, nous allons d'abord expliquer comment installer et configurer l'agent de MMC et ses plugins, puis comment installer l'interface web.


== Ajout du dépôt mds.mandriva:==

Modifier le fichier /etc/apt/sources.list pour ajouter un nouveau dépôt de paquets :
 # vim /etc/apt/sources.list

 deb http://mds.mandriva.org/pub/mds/debian squeeze main

 # aptitude update

== Installation et configuration de mmc-agent : ==

On installe ensuite les paquets nécessaires :

 # aptitude install mmc-agent mmc-web-base

On crée ensuite un mot de passe haché en base64 de celui de l’admin de l’annuaire :

 $ python -c 'print &quot;{base64}&quot;+&quot;[mot_de_passe_admin]&quot;.encode(&quot;base64&quot;)'
 {base64}aXRldGFkbWlu

Voici ce qu’il faut modifier dans le fichier /etc/mmc/plugins/base.ini pour l’accès à la base de l’annuaire LDAP :
 # vim /etc/mmc/plugins/base.ini

 # LDAP base DN
 baseDN = dc=&lt;mondomaine&gt;, dc=&lt;local&gt;
 # Users location in the LDAP
 baseUsersDN = ou=Users, %(basedn)s
 # Groups location in the LDAP
 baseGroupsDN = ou=Groups, %(basedn)s
 # LDAP manager
 rootName = cn=admin, %(basedn)s
 password = {base64}aXRldGFkbWlu
 passwordscheme = ssha

Il faut ensuite créer le répertoire de stockage des archives (par défaut, c’est le dossier /home/archives):

 # mkdir /home/archives

Lors de l’ajout d’un nouvel utilisateur, si on veut lui donner le droit de modifier son mot de passe, il faut ajouter la section suivante dans le fichier /etc/mmc/

plugins/base.ini :
 [userdefault]
 objectClass = +lmcUserObject
 lmcACL = :base#users#passwd/

Pour l’interface web, on modifier la ligne suivante dans le fichier /etc/mmc/mmc.ini :
 root = /

Il faut maintenant ajouter un nouveau schéma dans l’annuaire LDAP :

 # cp /usr/share/doc/python-mmc-base/contrib/ldap/mmc.schema /etc/ldap/schema/

 # vim /etc/ldap/slapd.conf
 include         /etc/ldap/schema/mmc.schema

Tester la configuration :

 # slaptest –f /etc/ldap/slapd.conf –F /etc/ldap/slapd.d

Attribuer les permissions adéquates:

 # chown openldap:openldap /etc/ldap/schema/ -R
 # chown openldap:openldap /etc/ldap/slapd.d/ -R

Redémarrer les services :

 # invoke-rc.d slapd restart

 # invoke-rc.d mmc-agent restart

== Configuration d’apache :==


D’abord il faut ajouter la ligne suivante dans le fichier /etc/apache2/ports.conf :

 Listen 443

Puis, donner un nom au serveur :

 # vim /etc/apache2/httpd.conf

 ServerName = 127.0.0.1

Ajouter un nouveau VirtualHost dans le fichier /etc/apache2/sites-available/mmc :

 # vim /etc/apache2/sites-available/mmc 

 &lt;VirtualHost *:80&gt; 
    ServerName 127.0.0.1
    ServerAlias mmc 
    ServerAdmin webmaster@example.org 
    ErrorLog /var/log/apache2/mmc_error.log 
    CustomLog /var/log/apache2/mmc_access.log combined 
 &lt;/VirtualHost&gt; 
 &lt;VirtualHost *:443&gt; 
    ServerName 127.0.0.1
    ServerAlias mmc
    ServerAdmin webmaster@example.org 
    DocumentRoot /usr/share/mmc/ 
    &lt;Directory /usr/share/mmc/&gt; 
        AllowOverride None 
        Order allow,deny 
        allow from all 
        php_flag short_open_tag on 
    &lt;/Directory&gt; 
    ErrorLog /var/log/apache2/mmc_error.log 
    CustomLog /var/log/apache2/mmc_access.log combined 
 &lt;/VirtualHost&gt;

Activer le nouveau VirtualHost :

 # a2ensite mmc

Editer le fichier /etc/default/mmc-agent :

 ENABLE = yes

Ajouter l’option « acl » pour le montage de la partition contenant le /home dans le fichier /etc/fstab.

Redémarrer le serveur apache :

 # invoke-rc.d apache2 restart

Sur le navigateur, taper l’adresse : http://IP_du_Serveur_LDAP:443

Pour la connexion, utiliser l’utilisateur root et le mot de passe de l’administrateur de l’annuaire.

== Sources ==

* {{fr}} [http://wiki.mandriva.com/fr/Mandriva_Directory_Server Mandriva Directory Server]
* {{en}} [http://mds.mandriva.org/content/MMC/install/en/mmc-generic-installation.html#id2622161 MMC installation]

[[Catégorie:Logiciels]]</text>
      <sha1>dcgzjuhz48psgfd2jhjiq6bndsvi1ho</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3393</id>
      <parentid>3392</parentid>
      <timestamp>2011-08-25T09:11:32Z</timestamp>
      <contributor>
        <username>Arand263</username>
        <id>151</id>
      </contributor>
      <comment>/* Configuration d’apache : */</comment>
      <text xml:space="preserve" bytes="4792">'''Mandriva Directory Server (MDS)''' est une plateforme d'annuaire d'entreprise s'appuyant sur LDAP.

MDS est conçu pour gérer les identités, les informations de contrôle d'accès, les politiques d'entreprise, les paramètres des applications et les profils des utilisateurs.

Si vous utilisez Samba, Postfix, Squid ou CUPS, vous pouvez bénéficier de MDS dès aujourd'hui pour gérer votre infrastructure.

La console MMC (Mandriva Management Console) est composée de deux parties:

*1.Un agent s'exécutant sur la machine à gérer. Nous l'appelons «agent MMC». L’agent exporte plusieurs plugins qui permettent de gérer la machine. Bien sûr, il peut y avoir plusieurs agents sur le réseau. L'agent et ses plugins sont écrits en Python.

*2.Une interface web, qui parle à l'agent (s) en utilisant XML-RPC. L'interface est écrite en PHP4, et utilise  AJAX.

Dans ce document, nous allons d'abord expliquer comment installer et configurer l'agent de MMC et ses plugins, puis comment installer l'interface web.


== Ajout du dépôt mds.mandriva:==

Modifier le fichier /etc/apt/sources.list pour ajouter un nouveau dépôt de paquets :
 # vim /etc/apt/sources.list

 deb http://mds.mandriva.org/pub/mds/debian squeeze main

 # aptitude update

== Installation et configuration de mmc-agent : ==

On installe ensuite les paquets nécessaires :

 # aptitude install mmc-agent mmc-web-base

On crée ensuite un mot de passe haché en base64 de celui de l’admin de l’annuaire :

 $ python -c 'print &quot;{base64}&quot;+&quot;[mot_de_passe_admin]&quot;.encode(&quot;base64&quot;)'
 {base64}aXRldGFkbWlu

Voici ce qu’il faut modifier dans le fichier /etc/mmc/plugins/base.ini pour l’accès à la base de l’annuaire LDAP :
 # vim /etc/mmc/plugins/base.ini

 # LDAP base DN
 baseDN = dc=&lt;mondomaine&gt;, dc=&lt;local&gt;
 # Users location in the LDAP
 baseUsersDN = ou=Users, %(basedn)s
 # Groups location in the LDAP
 baseGroupsDN = ou=Groups, %(basedn)s
 # LDAP manager
 rootName = cn=admin, %(basedn)s
 password = {base64}aXRldGFkbWlu
 passwordscheme = ssha

Il faut ensuite créer le répertoire de stockage des archives (par défaut, c’est le dossier /home/archives):

 # mkdir /home/archives

Lors de l’ajout d’un nouvel utilisateur, si on veut lui donner le droit de modifier son mot de passe, il faut ajouter la section suivante dans le fichier /etc/mmc/

plugins/base.ini :
 [userdefault]
 objectClass = +lmcUserObject
 lmcACL = :base#users#passwd/

Pour l’interface web, on modifier la ligne suivante dans le fichier /etc/mmc/mmc.ini :
 root = /

Il faut maintenant ajouter un nouveau schéma dans l’annuaire LDAP :

 # cp /usr/share/doc/python-mmc-base/contrib/ldap/mmc.schema /etc/ldap/schema/

 # vim /etc/ldap/slapd.conf
 include         /etc/ldap/schema/mmc.schema

Tester la configuration :

 # slaptest –f /etc/ldap/slapd.conf –F /etc/ldap/slapd.d

Attribuer les permissions adéquates:

 # chown openldap:openldap /etc/ldap/schema/ -R
 # chown openldap:openldap /etc/ldap/slapd.d/ -R

Redémarrer les services :

 # invoke-rc.d slapd restart

 # invoke-rc.d mmc-agent restart

== Configuration d’apache :==


D’abord il faut ajouter la ligne suivante dans le fichier /etc/apache2/ports.conf :

 Listen 443

Puis, donner un nom au serveur :

 # vim /etc/apache2/httpd.conf

 ServerName 127.0.0.1

Ajouter un nouveau VirtualHost dans le fichier /etc/apache2/sites-available/mmc :

 # vim /etc/apache2/sites-available/mmc 

 &lt;VirtualHost *:80&gt; 
    ServerName 127.0.0.1
    ServerAlias mmc 
    ServerAdmin webmaster@example.org 
    ErrorLog /var/log/apache2/mmc_error.log 
    CustomLog /var/log/apache2/mmc_access.log combined 
 &lt;/VirtualHost&gt; 
 &lt;VirtualHost *:443&gt; 
    ServerName 127.0.0.1
    ServerAlias mmc
    ServerAdmin webmaster@example.org 
    DocumentRoot /usr/share/mmc/ 
    &lt;Directory /usr/share/mmc/&gt; 
        AllowOverride None 
        Order allow,deny 
        allow from all 
        php_flag short_open_tag on 
    &lt;/Directory&gt; 
    ErrorLog /var/log/apache2/mmc_error.log 
    CustomLog /var/log/apache2/mmc_access.log combined 
 &lt;/VirtualHost&gt;

Activer le nouveau VirtualHost :

 # a2ensite mmc

Editer le fichier /etc/default/mmc-agent :

 ENABLE = yes

Ajouter l’option « acl » pour le montage de la partition contenant le /home dans le fichier /etc/fstab.

Redémarrer le serveur apache :

 # invoke-rc.d apache2 restart

Sur le navigateur, taper l’adresse : http://IP_du_Serveur_LDAP:443

Pour la connexion, utiliser l’utilisateur root et le mot de passe de l’administrateur de l’annuaire.

== Sources ==

* {{fr}} [http://wiki.mandriva.com/fr/Mandriva_Directory_Server Mandriva Directory Server]
* {{en}} [http://mds.mandriva.org/content/MMC/install/en/mmc-generic-installation.html#id2622161 MMC installation]

[[Catégorie:Logiciels]]</text>
      <sha1>m6ro3lm2cqohqe7f2lk1y5sru7resx8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3394</id>
      <parentid>3393</parentid>
      <timestamp>2011-08-26T04:56:33Z</timestamp>
      <contributor>
        <username>Arand263</username>
        <id>151</id>
      </contributor>
      <comment>/* Installation et configuration de mmc-agent : */</comment>
      <text xml:space="preserve" bytes="4791">'''Mandriva Directory Server (MDS)''' est une plateforme d'annuaire d'entreprise s'appuyant sur LDAP.

MDS est conçu pour gérer les identités, les informations de contrôle d'accès, les politiques d'entreprise, les paramètres des applications et les profils des utilisateurs.

Si vous utilisez Samba, Postfix, Squid ou CUPS, vous pouvez bénéficier de MDS dès aujourd'hui pour gérer votre infrastructure.

La console MMC (Mandriva Management Console) est composée de deux parties:

*1.Un agent s'exécutant sur la machine à gérer. Nous l'appelons «agent MMC». L’agent exporte plusieurs plugins qui permettent de gérer la machine. Bien sûr, il peut y avoir plusieurs agents sur le réseau. L'agent et ses plugins sont écrits en Python.

*2.Une interface web, qui parle à l'agent (s) en utilisant XML-RPC. L'interface est écrite en PHP4, et utilise  AJAX.

Dans ce document, nous allons d'abord expliquer comment installer et configurer l'agent de MMC et ses plugins, puis comment installer l'interface web.


== Ajout du dépôt mds.mandriva:==

Modifier le fichier /etc/apt/sources.list pour ajouter un nouveau dépôt de paquets :
 # vim /etc/apt/sources.list

 deb http://mds.mandriva.org/pub/mds/debian squeeze main

 # aptitude update

== Installation et configuration de mmc-agent : ==

On installe ensuite les paquets nécessaires :

 # aptitude install mmc-agent mmc-web-base

On crée ensuite un mot de passe haché en base64 de celui de l’admin de l’annuaire :

 $ python -c 'print &quot;{base64}&quot;+&quot;[mot_de_passe_admin]&quot;.encode(&quot;base64&quot;)'
 {base64}aXRldGFkbWlu

Voici ce qu’il faut modifier dans le fichier /etc/mmc/plugins/base.ini pour l’accès à la base de l’annuaire LDAP :
 # vim /etc/mmc/plugins/base.ini

 # LDAP base DN
 baseDN = dc=&lt;mondomaine&gt;, dc=&lt;local&gt;
 # Users location in the LDAP
 baseUsersDN = ou=Users, %(basedn)s
 # Groups location in the LDAP
 baseGroupsDN = ou=Groups, %(basedn)s
 # LDAP manager
 rootName = cn=admin, %(basedn)s
 password = {base64}aXRldGFkbWlu
 passwordscheme = ssha

Il faut ensuite créer le répertoire de stockage des archives (par défaut, c’est le dossier /home/archives):

 # mkdir /home/archives

Lors de l’ajout d’un nouvel utilisateur, si on veut lui donner le droit de modifier son mot de passe, il faut ajouter la section suivante dans le fichier /etc/mmc/

plugins/base.ini :
 [userdefault]
 objectClass = +lmcUserObject
 lmcACL = :base#user#passwd/

Pour l’interface web, on modifier la ligne suivante dans le fichier /etc/mmc/mmc.ini :
 root = /

Il faut maintenant ajouter un nouveau schéma dans l’annuaire LDAP :

 # cp /usr/share/doc/python-mmc-base/contrib/ldap/mmc.schema /etc/ldap/schema/

 # vim /etc/ldap/slapd.conf
 include         /etc/ldap/schema/mmc.schema

Tester la configuration :

 # slaptest –f /etc/ldap/slapd.conf –F /etc/ldap/slapd.d

Attribuer les permissions adéquates:

 # chown openldap:openldap /etc/ldap/schema/ -R
 # chown openldap:openldap /etc/ldap/slapd.d/ -R

Redémarrer les services :

 # invoke-rc.d slapd restart

 # invoke-rc.d mmc-agent restart

== Configuration d’apache :==


D’abord il faut ajouter la ligne suivante dans le fichier /etc/apache2/ports.conf :

 Listen 443

Puis, donner un nom au serveur :

 # vim /etc/apache2/httpd.conf

 ServerName 127.0.0.1

Ajouter un nouveau VirtualHost dans le fichier /etc/apache2/sites-available/mmc :

 # vim /etc/apache2/sites-available/mmc 

 &lt;VirtualHost *:80&gt; 
    ServerName 127.0.0.1
    ServerAlias mmc 
    ServerAdmin webmaster@example.org 
    ErrorLog /var/log/apache2/mmc_error.log 
    CustomLog /var/log/apache2/mmc_access.log combined 
 &lt;/VirtualHost&gt; 
 &lt;VirtualHost *:443&gt; 
    ServerName 127.0.0.1
    ServerAlias mmc
    ServerAdmin webmaster@example.org 
    DocumentRoot /usr/share/mmc/ 
    &lt;Directory /usr/share/mmc/&gt; 
        AllowOverride None 
        Order allow,deny 
        allow from all 
        php_flag short_open_tag on 
    &lt;/Directory&gt; 
    ErrorLog /var/log/apache2/mmc_error.log 
    CustomLog /var/log/apache2/mmc_access.log combined 
 &lt;/VirtualHost&gt;

Activer le nouveau VirtualHost :

 # a2ensite mmc

Editer le fichier /etc/default/mmc-agent :

 ENABLE = yes

Ajouter l’option « acl » pour le montage de la partition contenant le /home dans le fichier /etc/fstab.

Redémarrer le serveur apache :

 # invoke-rc.d apache2 restart

Sur le navigateur, taper l’adresse : http://IP_du_Serveur_LDAP:443

Pour la connexion, utiliser l’utilisateur root et le mot de passe de l’administrateur de l’annuaire.

== Sources ==

* {{fr}} [http://wiki.mandriva.com/fr/Mandriva_Directory_Server Mandriva Directory Server]
* {{en}} [http://mds.mandriva.org/content/MMC/install/en/mmc-generic-installation.html#id2622161 MMC installation]

[[Catégorie:Logiciels]]</text>
      <sha1>8jvnf2mnkepvu564qajcw5xprfwtsuj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3454</id>
      <parentid>3394</parentid>
      <timestamp>2011-09-06T12:52:57Z</timestamp>
      <contributor>
        <username>Arand263</username>
        <id>151</id>
      </contributor>
      <comment>/* Installation et configuration de mmc-agent : */</comment>
      <text xml:space="preserve" bytes="4871">'''Mandriva Directory Server (MDS)''' est une plateforme d'annuaire d'entreprise s'appuyant sur LDAP.

MDS est conçu pour gérer les identités, les informations de contrôle d'accès, les politiques d'entreprise, les paramètres des applications et les profils des utilisateurs.

Si vous utilisez Samba, Postfix, Squid ou CUPS, vous pouvez bénéficier de MDS dès aujourd'hui pour gérer votre infrastructure.

La console MMC (Mandriva Management Console) est composée de deux parties:

*1.Un agent s'exécutant sur la machine à gérer. Nous l'appelons «agent MMC». L’agent exporte plusieurs plugins qui permettent de gérer la machine. Bien sûr, il peut y avoir plusieurs agents sur le réseau. L'agent et ses plugins sont écrits en Python.

*2.Une interface web, qui parle à l'agent (s) en utilisant XML-RPC. L'interface est écrite en PHP4, et utilise  AJAX.

Dans ce document, nous allons d'abord expliquer comment installer et configurer l'agent de MMC et ses plugins, puis comment installer l'interface web.


== Ajout du dépôt mds.mandriva:==

Modifier le fichier /etc/apt/sources.list pour ajouter un nouveau dépôt de paquets :
 # vim /etc/apt/sources.list

 deb http://mds.mandriva.org/pub/mds/debian squeeze main

 # aptitude update

== Installation et configuration de mmc-agent : ==

On installe ensuite les paquets nécessaires :

 # aptitude install mmc-agent mmc-web-base

On crée ensuite un mot de passe haché en base64 de celui de l’admin de l’annuaire :

 $ python -c 'print &quot;{base64}&quot;+&quot;[mot_de_passe_admin]&quot;.encode(&quot;base64&quot;)'
 {base64}aXRldGFkbWlu

Voici ce qu’il faut modifier dans le fichier /etc/mmc/plugins/base.ini pour l’accès à la base de l’annuaire LDAP :
 # vim /etc/mmc/plugins/base.ini

 # LDAP base DN
 baseDN = dc=&lt;mondomaine&gt;, dc=&lt;local&gt;
 # Users location in the LDAP
 baseUsersDN = ou=Users, %(basedn)s
 # Groups location in the LDAP
 baseGroupsDN = ou=Groups, %(basedn)s
 # LDAP manager
 rootName = cn=admin, %(basedn)s
 password = {base64}aXRldGFkbWlu
 passwordscheme = ssha

Il faut ensuite créer le répertoire de stockage des archives (par défaut, c’est le dossier /home/archives):

 # mkdir /home/archives

Lors de l’ajout d’un nouvel utilisateur, si on veut lui donner le droit de modifier son mot de passe, il faut ajouter la section suivante dans le fichier /etc/mmc/

plugins/base.ini :
 [userdefault]
 objectClass = +lmcUserObject
 lmcACL = :base#user#passwd/

Pour l’interface web, on modifier la ligne suivante dans le fichier /etc/mmc/mmc.ini :
 root = /

Il faut maintenant ajouter un nouveau schéma dans l’annuaire LDAP :

 # cp /usr/share/doc/python-mmc-base/contrib/ldap/mmc.schema /etc/ldap/schema/

 # vim /etc/ldap/slapd.conf
 include         /etc/ldap/schema/mmc.schema

Tester la configuration :

 # slaptest –f /etc/ldap/slapd.conf –F /etc/ldap/slapd.d

Attribuer les permissions adéquates:

 # chown openldap:openldap /etc/ldap/schema/ -R
 # chown openldap:openldap /etc/ldap/slapd.d/ -R

Avant de redémarrer les services :

 # vim /etc/default/mmc-agent
 ENABLE=yes

Redémarrer les services :

 # invoke-rc.d slapd restart

 # invoke-rc.d mmc-agent restart

== Configuration d’apache :==


D’abord il faut ajouter la ligne suivante dans le fichier /etc/apache2/ports.conf :

 Listen 443

Puis, donner un nom au serveur :

 # vim /etc/apache2/httpd.conf

 ServerName 127.0.0.1

Ajouter un nouveau VirtualHost dans le fichier /etc/apache2/sites-available/mmc :

 # vim /etc/apache2/sites-available/mmc 

 &lt;VirtualHost *:80&gt; 
    ServerName 127.0.0.1
    ServerAlias mmc 
    ServerAdmin webmaster@example.org 
    ErrorLog /var/log/apache2/mmc_error.log 
    CustomLog /var/log/apache2/mmc_access.log combined 
 &lt;/VirtualHost&gt; 
 &lt;VirtualHost *:443&gt; 
    ServerName 127.0.0.1
    ServerAlias mmc
    ServerAdmin webmaster@example.org 
    DocumentRoot /usr/share/mmc/ 
    &lt;Directory /usr/share/mmc/&gt; 
        AllowOverride None 
        Order allow,deny 
        allow from all 
        php_flag short_open_tag on 
    &lt;/Directory&gt; 
    ErrorLog /var/log/apache2/mmc_error.log 
    CustomLog /var/log/apache2/mmc_access.log combined 
 &lt;/VirtualHost&gt;

Activer le nouveau VirtualHost :

 # a2ensite mmc

Editer le fichier /etc/default/mmc-agent :

 ENABLE = yes

Ajouter l’option « acl » pour le montage de la partition contenant le /home dans le fichier /etc/fstab.

Redémarrer le serveur apache :

 # invoke-rc.d apache2 restart

Sur le navigateur, taper l’adresse : http://IP_du_Serveur_LDAP:443

Pour la connexion, utiliser l’utilisateur root et le mot de passe de l’administrateur de l’annuaire.

== Sources ==

* {{fr}} [http://wiki.mandriva.com/fr/Mandriva_Directory_Server Mandriva Directory Server]
* {{en}} [http://mds.mandriva.org/content/MMC/install/en/mmc-generic-installation.html#id2622161 MMC installation]

[[Catégorie:Logiciels]]</text>
      <sha1>bv55t7do5k2els18apjjgvt8mxbshfq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3455</id>
      <parentid>3454</parentid>
      <timestamp>2011-09-06T12:58:29Z</timestamp>
      <contributor>
        <username>Arand263</username>
        <id>151</id>
      </contributor>
      <comment>/* Installation et configuration de mmc-agent : */</comment>
      <text xml:space="preserve" bytes="4871">'''Mandriva Directory Server (MDS)''' est une plateforme d'annuaire d'entreprise s'appuyant sur LDAP.

MDS est conçu pour gérer les identités, les informations de contrôle d'accès, les politiques d'entreprise, les paramètres des applications et les profils des utilisateurs.

Si vous utilisez Samba, Postfix, Squid ou CUPS, vous pouvez bénéficier de MDS dès aujourd'hui pour gérer votre infrastructure.

La console MMC (Mandriva Management Console) est composée de deux parties:

*1.Un agent s'exécutant sur la machine à gérer. Nous l'appelons «agent MMC». L’agent exporte plusieurs plugins qui permettent de gérer la machine. Bien sûr, il peut y avoir plusieurs agents sur le réseau. L'agent et ses plugins sont écrits en Python.

*2.Une interface web, qui parle à l'agent (s) en utilisant XML-RPC. L'interface est écrite en PHP4, et utilise  AJAX.

Dans ce document, nous allons d'abord expliquer comment installer et configurer l'agent de MMC et ses plugins, puis comment installer l'interface web.


== Ajout du dépôt mds.mandriva:==

Modifier le fichier /etc/apt/sources.list pour ajouter un nouveau dépôt de paquets :
 # vim /etc/apt/sources.list

 deb http://mds.mandriva.org/pub/mds/debian squeeze main

 # aptitude update

== Installation et configuration de mmc-agent : ==

On installe ensuite les paquets nécessaires :

 # aptitude install mmc-agent mmc-web-base

On crée ensuite un mot de passe haché en base64 de celui de l’admin de l’annuaire :

 $ python -c 'print &quot;{base64}&quot;+&quot;[mot_de_passe_admin]&quot;.encode(&quot;base64&quot;)'
 {base64}aXrldgFkbWlu

Voici ce qu’il faut modifier dans le fichier /etc/mmc/plugins/base.ini pour l’accès à la base de l’annuaire LDAP :
 # vim /etc/mmc/plugins/base.ini

 # LDAP base DN
 baseDN = dc=&lt;mondomaine&gt;, dc=&lt;local&gt;
 # Users location in the LDAP
 baseUsersDN = ou=Users, %(basedn)s
 # Groups location in the LDAP
 baseGroupsDN = ou=Groups, %(basedn)s
 # LDAP manager
 rootName = cn=admin, %(basedn)s
 password = {base64}aXrldgFkbWlu
 passwordscheme = ssha

Il faut ensuite créer le répertoire de stockage des archives (par défaut, c’est le dossier /home/archives):

 # mkdir /home/archives

Lors de l’ajout d’un nouvel utilisateur, si on veut lui donner le droit de modifier son mot de passe, il faut ajouter la section suivante dans le fichier /etc/mmc/

plugins/base.ini :
 [userdefault]
 objectClass = +lmcUserObject
 lmcACL = :base#user#passwd/

Pour l’interface web, on modifier la ligne suivante dans le fichier /etc/mmc/mmc.ini :
 root = /

Il faut maintenant ajouter un nouveau schéma dans l’annuaire LDAP :

 # cp /usr/share/doc/python-mmc-base/contrib/ldap/mmc.schema /etc/ldap/schema/

 # vim /etc/ldap/slapd.conf
 include         /etc/ldap/schema/mmc.schema

Tester la configuration :

 # slaptest –f /etc/ldap/slapd.conf –F /etc/ldap/slapd.d

Attribuer les permissions adéquates:

 # chown openldap:openldap /etc/ldap/schema/ -R
 # chown openldap:openldap /etc/ldap/slapd.d/ -R

Avant de redémarrer les services :

 # vim /etc/default/mmc-agent
 ENABLE=yes

Redémarrer les services :

 # invoke-rc.d slapd restart

 # invoke-rc.d mmc-agent restart

== Configuration d’apache :==


D’abord il faut ajouter la ligne suivante dans le fichier /etc/apache2/ports.conf :

 Listen 443

Puis, donner un nom au serveur :

 # vim /etc/apache2/httpd.conf

 ServerName 127.0.0.1

Ajouter un nouveau VirtualHost dans le fichier /etc/apache2/sites-available/mmc :

 # vim /etc/apache2/sites-available/mmc 

 &lt;VirtualHost *:80&gt; 
    ServerName 127.0.0.1
    ServerAlias mmc 
    ServerAdmin webmaster@example.org 
    ErrorLog /var/log/apache2/mmc_error.log 
    CustomLog /var/log/apache2/mmc_access.log combined 
 &lt;/VirtualHost&gt; 
 &lt;VirtualHost *:443&gt; 
    ServerName 127.0.0.1
    ServerAlias mmc
    ServerAdmin webmaster@example.org 
    DocumentRoot /usr/share/mmc/ 
    &lt;Directory /usr/share/mmc/&gt; 
        AllowOverride None 
        Order allow,deny 
        allow from all 
        php_flag short_open_tag on 
    &lt;/Directory&gt; 
    ErrorLog /var/log/apache2/mmc_error.log 
    CustomLog /var/log/apache2/mmc_access.log combined 
 &lt;/VirtualHost&gt;

Activer le nouveau VirtualHost :

 # a2ensite mmc

Editer le fichier /etc/default/mmc-agent :

 ENABLE = yes

Ajouter l’option « acl » pour le montage de la partition contenant le /home dans le fichier /etc/fstab.

Redémarrer le serveur apache :

 # invoke-rc.d apache2 restart

Sur le navigateur, taper l’adresse : http://IP_du_Serveur_LDAP:443

Pour la connexion, utiliser l’utilisateur root et le mot de passe de l’administrateur de l’annuaire.

== Sources ==

* {{fr}} [http://wiki.mandriva.com/fr/Mandriva_Directory_Server Mandriva Directory Server]
* {{en}} [http://mds.mandriva.org/content/MMC/install/en/mmc-generic-installation.html#id2622161 MMC installation]

[[Catégorie:Logiciels]]</text>
      <sha1>kgzewbjgxfsqbwt8hz38mar5ejq4u0v</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3456</id>
      <parentid>3455</parentid>
      <timestamp>2011-09-06T13:07:37Z</timestamp>
      <contributor>
        <username>Arand263</username>
        <id>151</id>
      </contributor>
      <comment>/* Configuration d’apache : */</comment>
      <text xml:space="preserve" bytes="4813">'''Mandriva Directory Server (MDS)''' est une plateforme d'annuaire d'entreprise s'appuyant sur LDAP.

MDS est conçu pour gérer les identités, les informations de contrôle d'accès, les politiques d'entreprise, les paramètres des applications et les profils des utilisateurs.

Si vous utilisez Samba, Postfix, Squid ou CUPS, vous pouvez bénéficier de MDS dès aujourd'hui pour gérer votre infrastructure.

La console MMC (Mandriva Management Console) est composée de deux parties:

*1.Un agent s'exécutant sur la machine à gérer. Nous l'appelons «agent MMC». L’agent exporte plusieurs plugins qui permettent de gérer la machine. Bien sûr, il peut y avoir plusieurs agents sur le réseau. L'agent et ses plugins sont écrits en Python.

*2.Une interface web, qui parle à l'agent (s) en utilisant XML-RPC. L'interface est écrite en PHP4, et utilise  AJAX.

Dans ce document, nous allons d'abord expliquer comment installer et configurer l'agent de MMC et ses plugins, puis comment installer l'interface web.


== Ajout du dépôt mds.mandriva:==

Modifier le fichier /etc/apt/sources.list pour ajouter un nouveau dépôt de paquets :
 # vim /etc/apt/sources.list

 deb http://mds.mandriva.org/pub/mds/debian squeeze main

 # aptitude update

== Installation et configuration de mmc-agent : ==

On installe ensuite les paquets nécessaires :

 # aptitude install mmc-agent mmc-web-base

On crée ensuite un mot de passe haché en base64 de celui de l’admin de l’annuaire :

 $ python -c 'print &quot;{base64}&quot;+&quot;[mot_de_passe_admin]&quot;.encode(&quot;base64&quot;)'
 {base64}aXrldgFkbWlu

Voici ce qu’il faut modifier dans le fichier /etc/mmc/plugins/base.ini pour l’accès à la base de l’annuaire LDAP :
 # vim /etc/mmc/plugins/base.ini

 # LDAP base DN
 baseDN = dc=&lt;mondomaine&gt;, dc=&lt;local&gt;
 # Users location in the LDAP
 baseUsersDN = ou=Users, %(basedn)s
 # Groups location in the LDAP
 baseGroupsDN = ou=Groups, %(basedn)s
 # LDAP manager
 rootName = cn=admin, %(basedn)s
 password = {base64}aXrldgFkbWlu
 passwordscheme = ssha

Il faut ensuite créer le répertoire de stockage des archives (par défaut, c’est le dossier /home/archives):

 # mkdir /home/archives

Lors de l’ajout d’un nouvel utilisateur, si on veut lui donner le droit de modifier son mot de passe, il faut ajouter la section suivante dans le fichier /etc/mmc/

plugins/base.ini :
 [userdefault]
 objectClass = +lmcUserObject
 lmcACL = :base#user#passwd/

Pour l’interface web, on modifier la ligne suivante dans le fichier /etc/mmc/mmc.ini :
 root = /

Il faut maintenant ajouter un nouveau schéma dans l’annuaire LDAP :

 # cp /usr/share/doc/python-mmc-base/contrib/ldap/mmc.schema /etc/ldap/schema/

 # vim /etc/ldap/slapd.conf
 include         /etc/ldap/schema/mmc.schema

Tester la configuration :

 # slaptest –f /etc/ldap/slapd.conf –F /etc/ldap/slapd.d

Attribuer les permissions adéquates:

 # chown openldap:openldap /etc/ldap/schema/ -R
 # chown openldap:openldap /etc/ldap/slapd.d/ -R

Avant de redémarrer les services :

 # vim /etc/default/mmc-agent
 ENABLE=yes

Redémarrer les services :

 # invoke-rc.d slapd restart

 # invoke-rc.d mmc-agent restart

== Configuration d’apache :==


D’abord il faut ajouter la ligne suivante dans le fichier /etc/apache2/ports.conf :

 Listen 443

Puis, donner un nom au serveur :

 # vim /etc/apache2/httpd.conf

 ServerName 127.0.0.1

Ajouter un nouveau VirtualHost dans le fichier /etc/apache2/sites-available/mmc :

 # vim /etc/apache2/sites-available/mmc 

 &lt;VirtualHost *:80&gt; 
    ServerName 127.0.0.1
    ServerAlias mmc 
    ServerAdmin webmaster@example.org 
    ErrorLog /var/log/apache2/mmc_error.log 
    CustomLog /var/log/apache2/mmc_access.log combined 
 &lt;/VirtualHost&gt; 
 &lt;VirtualHost *:443&gt; 
    ServerName 127.0.0.1
    ServerAlias mmc
    ServerAdmin webmaster@example.org 
    DocumentRoot /usr/share/mmc/ 
    &lt;Directory /usr/share/mmc/&gt; 
        AllowOverride None 
        Order allow,deny 
        allow from all 
        php_flag short_open_tag on 
    &lt;/Directory&gt; 
    ErrorLog /var/log/apache2/mmc_error.log 
    CustomLog /var/log/apache2/mmc_access.log combined 
 &lt;/VirtualHost&gt;

Activer le nouveau VirtualHost :

 # a2ensite mmc


Ajouter l’option « acl » pour le montage de la partition contenant le /home dans le fichier /etc/fstab.

Redémarrer le serveur apache :

 # invoke-rc.d apache2 restart

Sur le navigateur, taper l’adresse : http://IP_du_Serveur_LDAP:443

Pour la connexion, utiliser l’utilisateur root et le mot de passe de l’administrateur de l’annuaire.

== Sources ==

* {{fr}} [http://wiki.mandriva.com/fr/Mandriva_Directory_Server Mandriva Directory Server]
* {{en}} [http://mds.mandriva.org/content/MMC/install/en/mmc-generic-installation.html#id2622161 MMC installation]

[[Catégorie:Logiciels]]</text>
      <sha1>4vsdt25tcjn8rh29wx8phxaaweq8f3f</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3629</id>
      <parentid>3456</parentid>
      <timestamp>2011-12-05T09:50:36Z</timestamp>
      <contributor>
        <username>Arand263</username>
        <id>151</id>
      </contributor>
      <comment>/* Configuration d’apache : */</comment>
      <text xml:space="preserve" bytes="4830">'''Mandriva Directory Server (MDS)''' est une plateforme d'annuaire d'entreprise s'appuyant sur LDAP.

MDS est conçu pour gérer les identités, les informations de contrôle d'accès, les politiques d'entreprise, les paramètres des applications et les profils des utilisateurs.

Si vous utilisez Samba, Postfix, Squid ou CUPS, vous pouvez bénéficier de MDS dès aujourd'hui pour gérer votre infrastructure.

La console MMC (Mandriva Management Console) est composée de deux parties:

*1.Un agent s'exécutant sur la machine à gérer. Nous l'appelons «agent MMC». L’agent exporte plusieurs plugins qui permettent de gérer la machine. Bien sûr, il peut y avoir plusieurs agents sur le réseau. L'agent et ses plugins sont écrits en Python.

*2.Une interface web, qui parle à l'agent (s) en utilisant XML-RPC. L'interface est écrite en PHP4, et utilise  AJAX.

Dans ce document, nous allons d'abord expliquer comment installer et configurer l'agent de MMC et ses plugins, puis comment installer l'interface web.


== Ajout du dépôt mds.mandriva:==

Modifier le fichier /etc/apt/sources.list pour ajouter un nouveau dépôt de paquets :
 # vim /etc/apt/sources.list

 deb http://mds.mandriva.org/pub/mds/debian squeeze main

 # aptitude update

== Installation et configuration de mmc-agent : ==

On installe ensuite les paquets nécessaires :

 # aptitude install mmc-agent mmc-web-base

On crée ensuite un mot de passe haché en base64 de celui de l’admin de l’annuaire :

 $ python -c 'print &quot;{base64}&quot;+&quot;[mot_de_passe_admin]&quot;.encode(&quot;base64&quot;)'
 {base64}aXrldgFkbWlu

Voici ce qu’il faut modifier dans le fichier /etc/mmc/plugins/base.ini pour l’accès à la base de l’annuaire LDAP :
 # vim /etc/mmc/plugins/base.ini

 # LDAP base DN
 baseDN = dc=&lt;mondomaine&gt;, dc=&lt;local&gt;
 # Users location in the LDAP
 baseUsersDN = ou=Users, %(basedn)s
 # Groups location in the LDAP
 baseGroupsDN = ou=Groups, %(basedn)s
 # LDAP manager
 rootName = cn=admin, %(basedn)s
 password = {base64}aXrldgFkbWlu
 passwordscheme = ssha

Il faut ensuite créer le répertoire de stockage des archives (par défaut, c’est le dossier /home/archives):

 # mkdir /home/archives

Lors de l’ajout d’un nouvel utilisateur, si on veut lui donner le droit de modifier son mot de passe, il faut ajouter la section suivante dans le fichier /etc/mmc/

plugins/base.ini :
 [userdefault]
 objectClass = +lmcUserObject
 lmcACL = :base#user#passwd/

Pour l’interface web, on modifier la ligne suivante dans le fichier /etc/mmc/mmc.ini :
 root = /

Il faut maintenant ajouter un nouveau schéma dans l’annuaire LDAP :

 # cp /usr/share/doc/python-mmc-base/contrib/ldap/mmc.schema /etc/ldap/schema/

 # vim /etc/ldap/slapd.conf
 include         /etc/ldap/schema/mmc.schema

Tester la configuration :

 # slaptest –f /etc/ldap/slapd.conf –F /etc/ldap/slapd.d

Attribuer les permissions adéquates:

 # chown openldap:openldap /etc/ldap/schema/ -R
 # chown openldap:openldap /etc/ldap/slapd.d/ -R

Avant de redémarrer les services :

 # vim /etc/default/mmc-agent
 ENABLE=yes

Redémarrer les services :

 # invoke-rc.d slapd restart

 # invoke-rc.d mmc-agent restart

== Configuration d’apache :==


D’abord il faut ajouter la ligne suivante dans le fichier /etc/apache2/ports.conf :

 Listen 443

Puis, donner un nom au serveur :

 # vim /etc/apache2/httpd.conf

 ServerName mmc.mondomain.com

Ajouter un nouveau VirtualHost dans le fichier /etc/apache2/sites-available/mmc :

 # vim /etc/apache2/sites-available/mmc 

 &lt;VirtualHost *:80&gt; 
    ServerName mmc.mondomaine.com
    ServerAlias mmc 
    ServerAdmin webmaster@example.org 
    ErrorLog /var/log/apache2/mmc_error.log 
    CustomLog /var/log/apache2/mmc_access.log combined 
 &lt;/VirtualHost&gt; 
 &lt;VirtualHost *:443&gt; 
    ServerName 127.0.0.1
    ServerAlias mmc
    ServerAdmin webmaster@example.org 
    DocumentRoot /usr/share/mmc/ 
    &lt;Directory /usr/share/mmc/&gt; 
        AllowOverride None 
        Order allow,deny 
        allow from all 
        php_flag short_open_tag on 
    &lt;/Directory&gt; 
    ErrorLog /var/log/apache2/mmc_error.log 
    CustomLog /var/log/apache2/mmc_access.log combined 
 &lt;/VirtualHost&gt;

Activer le nouveau VirtualHost :

 # a2ensite mmc


Ajouter l’option « acl » pour le montage de la partition contenant le /home dans le fichier /etc/fstab.

Redémarrer le serveur apache :

 # invoke-rc.d apache2 restart

Sur le navigateur, taper l’adresse : http://IP_du_Serveur_LDAP:443

Pour la connexion, utiliser l’utilisateur root et le mot de passe de l’administrateur de l’annuaire.

== Sources ==

* {{fr}} [http://wiki.mandriva.com/fr/Mandriva_Directory_Server Mandriva Directory Server]
* {{en}} [http://mds.mandriva.org/content/MMC/install/en/mmc-generic-installation.html#id2622161 MMC installation]

[[Catégorie:Logiciels]]</text>
      <sha1>sx3p9xrbqljul7apmhnlepd7jsdbkg8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5765</id>
      <parentid>3629</parentid>
      <timestamp>2014-08-20T05:20:00Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Installation et configuration de mmc-agent : */ chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="4834">'''Mandriva Directory Server (MDS)''' est une plateforme d'annuaire d'entreprise s'appuyant sur LDAP.

MDS est conçu pour gérer les identités, les informations de contrôle d'accès, les politiques d'entreprise, les paramètres des applications et les profils des utilisateurs.

Si vous utilisez Samba, Postfix, Squid ou CUPS, vous pouvez bénéficier de MDS dès aujourd'hui pour gérer votre infrastructure.

La console MMC (Mandriva Management Console) est composée de deux parties:

*1.Un agent s'exécutant sur la machine à gérer. Nous l'appelons «agent MMC». L’agent exporte plusieurs plugins qui permettent de gérer la machine. Bien sûr, il peut y avoir plusieurs agents sur le réseau. L'agent et ses plugins sont écrits en Python.

*2.Une interface web, qui parle à l'agent (s) en utilisant XML-RPC. L'interface est écrite en PHP4, et utilise  AJAX.

Dans ce document, nous allons d'abord expliquer comment installer et configurer l'agent de MMC et ses plugins, puis comment installer l'interface web.


== Ajout du dépôt mds.mandriva:==

Modifier le fichier /etc/apt/sources.list pour ajouter un nouveau dépôt de paquets :
 # vim /etc/apt/sources.list

 deb http://mds.mandriva.org/pub/mds/debian squeeze main

 # aptitude update

== Installation et configuration de mmc-agent : ==

On installe ensuite les paquets nécessaires :

 # aptitude install mmc-agent mmc-web-base

On crée ensuite un mot de passe haché en base64 de celui de l’admin de l’annuaire :

 $ python -c 'print &quot;{base64}&quot;+&quot;[mot_de_passe_admin]&quot;.encode(&quot;base64&quot;)'
 {base64}aXrldgFkbWlu

Voici ce qu’il faut modifier dans le fichier /etc/mmc/plugins/base.ini pour l’accès à la base de l’annuaire LDAP :
 # vim /etc/mmc/plugins/base.ini

 # LDAP base DN
 baseDN = dc=&lt;mondomaine&gt;, dc=&lt;local&gt;
 # Users location in the LDAP
 baseUsersDN = ou=Users, %(basedn)s
 # Groups location in the LDAP
 baseGroupsDN = ou=Groups, %(basedn)s
 # LDAP manager
 rootName = cn=admin, %(basedn)s
 password = {base64}aXrldgFkbWlu
 passwordscheme = ssha

Il faut ensuite créer le répertoire de stockage des archives (par défaut, c’est le répertoire /home/archives):

 # mkdir /home/archives

Lors de l’ajout d’un nouvel utilisateur, si on veut lui donner le droit de modifier son mot de passe, il faut ajouter la section suivante dans le fichier /etc/mmc/

plugins/base.ini :
 [userdefault]
 objectClass = +lmcUserObject
 lmcACL = :base#user#passwd/

Pour l’interface web, on modifier la ligne suivante dans le fichier /etc/mmc/mmc.ini :
 root = /

Il faut maintenant ajouter un nouveau schéma dans l’annuaire LDAP :

 # cp /usr/share/doc/python-mmc-base/contrib/ldap/mmc.schema /etc/ldap/schema/

 # vim /etc/ldap/slapd.conf
 include         /etc/ldap/schema/mmc.schema

Tester la configuration :

 # slaptest –f /etc/ldap/slapd.conf –F /etc/ldap/slapd.d

Attribuer les permissions adéquates:

 # chown openldap:openldap /etc/ldap/schema/ -R
 # chown openldap:openldap /etc/ldap/slapd.d/ -R

Avant de redémarrer les services :

 # vim /etc/default/mmc-agent
 ENABLE=yes

Redémarrer les services :

 # invoke-rc.d slapd restart

 # invoke-rc.d mmc-agent restart

== Configuration d’apache :==


D’abord il faut ajouter la ligne suivante dans le fichier /etc/apache2/ports.conf :

 Listen 443

Puis, donner un nom au serveur :

 # vim /etc/apache2/httpd.conf

 ServerName mmc.mondomain.com

Ajouter un nouveau VirtualHost dans le fichier /etc/apache2/sites-available/mmc :

 # vim /etc/apache2/sites-available/mmc 

 &lt;VirtualHost *:80&gt; 
    ServerName mmc.mondomaine.com
    ServerAlias mmc 
    ServerAdmin webmaster@example.org 
    ErrorLog /var/log/apache2/mmc_error.log 
    CustomLog /var/log/apache2/mmc_access.log combined 
 &lt;/VirtualHost&gt; 
 &lt;VirtualHost *:443&gt; 
    ServerName 127.0.0.1
    ServerAlias mmc
    ServerAdmin webmaster@example.org 
    DocumentRoot /usr/share/mmc/ 
    &lt;Directory /usr/share/mmc/&gt; 
        AllowOverride None 
        Order allow,deny 
        allow from all 
        php_flag short_open_tag on 
    &lt;/Directory&gt; 
    ErrorLog /var/log/apache2/mmc_error.log 
    CustomLog /var/log/apache2/mmc_access.log combined 
 &lt;/VirtualHost&gt;

Activer le nouveau VirtualHost :

 # a2ensite mmc


Ajouter l’option « acl » pour le montage de la partition contenant le /home dans le fichier /etc/fstab.

Redémarrer le serveur apache :

 # invoke-rc.d apache2 restart

Sur le navigateur, taper l’adresse : http://IP_du_Serveur_LDAP:443

Pour la connexion, utiliser l’utilisateur root et le mot de passe de l’administrateur de l’annuaire.

== Sources ==

* {{fr}} [http://wiki.mandriva.com/fr/Mandriva_Directory_Server Mandriva Directory Server]
* {{en}} [http://mds.mandriva.org/content/MMC/install/en/mmc-generic-installation.html#id2622161 MMC installation]

[[Catégorie:Logiciels]]</text>
      <sha1>g7o2mdeo5n3p40kb4jp28vbq1moc02c</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Debian on dreamplug</title>
    <ns>0</ns>
    <id>932</id>
    <revision>
      <id>3866</id>
      <timestamp>2012-03-04T18:28:22Z</timestamp>
      <contributor>
        <username>Piratebab</username>
        <id>50</id>
      </contributor>
      <comment>installaion de linux sur un dreamplug</comment>
      <text xml:space="preserve" bytes="1854">Installer DEBIAN sur un dreamplug
1. Le dreamplug
le dreamplug fait partie de la famille des plugcomputer, petits ordinateurs à faible consomation et prix trés raosonable.
La société [http://www.newit.co.uk/shop/products.php?cat=21 NEWIT]basée en Angleterre vous permettra de l'acheter sans payer de taxes supplémentaires. N'oubliez pas d'acheter le JTAG si vous voulez mettre à jour le kernel (recommandé!), ainsi qu'une carte SD (NEWIT garanti la compatibilité des cartes avec les plugs).
Le dreamplug posséde une alimentation détachable qui permet de l'utiliser dans un véhicule avec un adaptateur 12V/5V classique.

2. Le tour du propri&amp;taire.
A la réception de votre dreamplug, connecter le Jtag. 
La connection avec cu ne fonctionne pas, utilisez screen

3. mise à jour du kernel

Il existe un script pour vous aider
    wget http://sheeva.with-linux.com/sheeva/README-DREAM-UPDATE.sh


Ensuite vous rendez le fichier exécutable
Seules les versions &gt;= 2.6.38 est dispo


    ./README-DREAM-UPDATE.sh 2.6.38.7


Vous aurez un kernel dans /boot, dream-2.6.38.7-uImage il fa falloir le copier dans sda1.
On commencer par monter cette partition:

    mount -t vfat -o defaults,user,exec,uid=1000,gid=100,umask=000 /dev/sda1 /mnt
    cd /mnt


Ensuite, on renomme le uImage existant, puis on copie le kernel dream-2.6.38.7-uImage de /boot dans/mnt, en le renoment uImage
On ferme tout correctement, et on reboote


    sync
    umount /dev/sda1
    reboot


On interromps le boot pour faire une modification dans les variables de uboot


    setenv mainlineLinux yes
    setenv arcNumber 2659
    saveenv
    reset



et là, miracle:


    # uname -ar
    Linux sheevaplug-debian 2.6.38.7 #1 PREEMPT Sun May 22 00:23:53 MDT 2011 armv5tel GNU/Linux

4 Liens
 http://code.google.com/p/dreamplug/downloads/list
 http://sheeva.with-linux.com</text>
      <sha1>jhoq2fqanjmfw7c1vlm17d9onrduud5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3867</id>
      <parentid>3866</parentid>
      <timestamp>2012-03-04T18:30:33Z</timestamp>
      <contributor>
        <username>Piratebab</username>
        <id>50</id>
      </contributor>
      <text xml:space="preserve" bytes="1906">[[Category:plugcomputer]]

Installer DEBIAN sur un dreamplug
'''1. Le dreamplug'''
le dreamplug fait partie de la famille des plugcomputer, petits ordinateurs à faible consomation et prix trés raosonable.
La société [http://www.newit.co.uk/shop/products.php?cat=21 NEWIT]basée en Angleterre vous permettra de l'acheter sans payer de taxes supplémentaires. N'oubliez pas d'acheter le JTAG si vous voulez mettre à jour le kernel (recommandé!), ainsi qu'une carte SD (NEWIT garanti la compatibilité des cartes avec les plugs).
Le dreamplug posséde une alimentation détachable qui permet de l'utiliser dans un véhicule avec un adaptateur 12V/5V classique.

'''2. Le tour du propriétaire.'''
A la réception de votre dreamplug, connecter le Jtag. 
La connection avec cu ne fonctionne pas, utilisez screen

'''3. mise à jour du kernel'''

Il existe un script pour vous aider
    wget http://sheeva.with-linux.com/sheeva/README-DREAM-UPDATE.sh


Ensuite vous rendez le fichier exécutable
Seules les versions &gt;= 2.6.38 est dispo


    ./README-DREAM-UPDATE.sh 2.6.38.7


Vous aurez un kernel dans /boot, dream-2.6.38.7-uImage il fa falloir le copier dans sda1.
On commencer par monter cette partition:

    mount -t vfat -o defaults,user,exec,uid=1000,gid=100,umask=000 /dev/sda1 /mnt
    cd /mnt


Ensuite, on renomme le uImage existant, puis on copie le kernel dream-2.6.38.7-uImage de /boot dans/mnt, en le renoment uImage
On ferme tout correctement, et on reboote


    sync
    umount /dev/sda1
    reboot


On interromps le boot pour faire une modification dans les variables de uboot


    setenv mainlineLinux yes
    setenv arcNumber 2659
    saveenv
    reset



et là, miracle:


    # uname -ar
    Linux sheevaplug-debian 2.6.38.7 #1 PREEMPT Sun May 22 00:23:53 MDT 2011 armv5tel GNU/Linux

'''4 Liens'''
 http://code.google.com/p/dreamplug/downloads/list
 http://sheeva.with-linux.com</text>
      <sha1>idofwob203badz1fsye65umrl6w73cy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3875</id>
      <parentid>3867</parentid>
      <timestamp>2012-03-05T08:55:22Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1901">[[Category:plugcomputer]]

Installer DEBIAN sur un dreamplug
'''1. Le dreamplug'''
fait partie de la famille des plugcomputer, petits ordinateurs à faible consommation et prix très raisonnable.
La société [http://www.newit.co.uk/shop/products.php?cat=21 NEWIT]basée en Angleterre vous permettra de l'acheter sans payer de taxes supplémentaires. N'oubliez pas d'acheter le JTAG si vous voulez mettre à jour le kernel (recommandé!), ainsi qu'une carte SD (NEWIT garantit la compatibilité des cartes avec les plugs).
Le dreamplug possède une alimentation détachable qui permet de l'utiliser dans un véhicule avec un adaptateur 12V/5V classique.

'''2. Le tour du propriétaire.'''
A la réception de votre dreamplug, connecter le Jtag. 
La connexion avec cu ne fonctionne pas, utilisez screen

'''3. mise à jour du kernel'''

Il existe un script pour vous aider
    wget http://sheeva.with-linux.com/sheeva/README-DREAM-UPDATE.sh


Ensuite vous rendez le fichier exécutable
Seules les versions &gt;= 2.6.38 sont disponibles


    ./README-DREAM-UPDATE.sh 2.6.38.7


Vous aurez un kernel dans /boot, dream-2.6.38.7-uImage il va falloir le copier dans sda1.
On commence par monter cette partition:

    mount -t vfat -o defaults,user,exec,uid=1000,gid=100,umask=000 /dev/sda1 /mnt
    cd /mnt


Ensuite, on renomme le uImage existant, puis on copie le kernel dream-2.6.38.7-uImage de /boot dans/mnt, en le renoment uImage
On ferme tout correctement, et on reboote


    sync
    umount /dev/sda1
    reboot


On interrompt le boot pour faire une modification dans les variables de uboot


    setenv mainlineLinux yes
    setenv arcNumber 2659
    saveenv
    reset



et là, miracle:


    # uname -ar
    Linux sheevaplug-debian 2.6.38.7 #1 PREEMPT Sun May 22 00:23:53 MDT 2011 armv5tel GNU/Linux

'''4 Liens'''
 http://code.google.com/p/dreamplug/downloads/list
 http://sheeva.with-linux.com</text>
      <sha1>3iajfszrjn28aa2ljrirfftrevicw7p</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3891</id>
      <parentid>3875</parentid>
      <timestamp>2012-03-06T07:47:06Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>[[Catégorie:Installation]]</comment>
      <text xml:space="preserve" bytes="1930">[[Category:plugcomputer]]

Installer DEBIAN sur un dreamplug
'''1. Le dreamplug'''
fait partie de la famille des plugcomputer, petits ordinateurs à faible consommation et prix très raisonnable.
La société [http://www.newit.co.uk/shop/products.php?cat=21 NEWIT]basée en Angleterre vous permettra de l'acheter sans payer de taxes supplémentaires. N'oubliez pas d'acheter le JTAG si vous voulez mettre à jour le kernel (recommandé!), ainsi qu'une carte SD (NEWIT garantit la compatibilité des cartes avec les plugs).
Le dreamplug possède une alimentation détachable qui permet de l'utiliser dans un véhicule avec un adaptateur 12V/5V classique.

'''2. Le tour du propriétaire.'''
A la réception de votre dreamplug, connecter le Jtag. 
La connexion avec cu ne fonctionne pas, utilisez screen

'''3. mise à jour du kernel'''

Il existe un script pour vous aider
    wget http://sheeva.with-linux.com/sheeva/README-DREAM-UPDATE.sh


Ensuite vous rendez le fichier exécutable
Seules les versions &gt;= 2.6.38 sont disponibles


    ./README-DREAM-UPDATE.sh 2.6.38.7


Vous aurez un kernel dans /boot, dream-2.6.38.7-uImage il va falloir le copier dans sda1.
On commence par monter cette partition:

    mount -t vfat -o defaults,user,exec,uid=1000,gid=100,umask=000 /dev/sda1 /mnt
    cd /mnt


Ensuite, on renomme le uImage existant, puis on copie le kernel dream-2.6.38.7-uImage de /boot dans/mnt, en le renoment uImage
On ferme tout correctement, et on reboote


    sync
    umount /dev/sda1
    reboot


On interrompt le boot pour faire une modification dans les variables de uboot


    setenv mainlineLinux yes
    setenv arcNumber 2659
    saveenv
    reset



et là, miracle:


    # uname -ar
    Linux sheevaplug-debian 2.6.38.7 #1 PREEMPT Sun May 22 00:23:53 MDT 2011 armv5tel GNU/Linux

'''4 Liens'''
 http://code.google.com/p/dreamplug/downloads/list
 http://sheeva.with-linux.com

[[Catégorie:Installation]]</text>
      <sha1>1hvxrplu3ygh8d3wa9nsni1kygmakuc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4003</id>
      <parentid>3891</parentid>
      <timestamp>2012-04-08T17:33:23Z</timestamp>
      <contributor>
        <username>Piratebab</username>
        <id>50</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1995">[[Category:plugcomputer]]

Installer DEBIAN sur un dreamplug
'''1. Le dreamplug'''
fait partie de la famille des plugcomputer, petits ordinateurs à faible consommation et prix très raisonnable.
La société [http://www.newit.co.uk/shop/products.php?cat=21 NEWIT]basée en Angleterre vous permettra de l'acheter sans payer de taxes supplémentaires. N'oubliez pas d'acheter le JTAG si vous voulez mettre à jour le kernel (recommandé!), ainsi qu'une carte SD (NEWIT garantit la compatibilité des cartes avec les plugs).
Le dreamplug possède une alimentation détachable qui permet de l'utiliser dans un véhicule avec un adaptateur 12V/5V classique.

'''2. Le tour du propriétaire.'''
A la réception de votre dreamplug, connecter le Jtag. 
La connexion avec cu ne fonctionne pas, utilisez screen
    screen /dev/ttyUSB0 115200
login: root
mot de passe nosoup4u

'''3. mise à jour du kernel'''

Il existe un script pour vous aider
    wget http://sheeva.with-linux.com/sheeva/README-DREAM-UPDATE.sh


Ensuite vous rendez le fichier exécutable
Seules les versions &gt;= 2.6.38 sont disponibles


    ./README-DREAM-UPDATE.sh 2.6.38.7


Vous aurez un kernel dans /boot, dream-2.6.38.7-uImage il va falloir le copier dans sda1.
On commence par monter cette partition:

    mount -t vfat -o defaults,user,exec,uid=1000,gid=100,umask=000 /dev/sda1 /mnt
    cd /mnt


Ensuite, on renomme le uImage existant, puis on copie le kernel dream-2.6.38.7-uImage de /boot dans/mnt, en le renoment uImage
On ferme tout correctement, et on reboote


    sync
    umount /dev/sda1
    reboot


On interrompt le boot pour faire une modification dans les variables de uboot


    setenv mainlineLinux yes
    setenv arcNumber 2659
    saveenv
    reset



et là, miracle:


    # uname -ar
    Linux sheevaplug-debian 2.6.38.7 #1 PREEMPT Sun May 22 00:23:53 MDT 2011 armv5tel GNU/Linux

'''4 Liens'''
 http://code.google.com/p/dreamplug/downloads/list
 http://sheeva.with-linux.com

[[Catégorie:Installation]]</text>
      <sha1>5n6ib0i5wwbe914gjyhgkqg6efa0brq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4004</id>
      <parentid>4003</parentid>
      <timestamp>2012-04-08T18:52:24Z</timestamp>
      <contributor>
        <username>Piratebab</username>
        <id>50</id>
      </contributor>
      <text xml:space="preserve" bytes="2773">[[Category:plugcomputer]]

Installer DEBIAN sur un dreamplug

'''1. Le dreamplug'''
fait partie de la famille des plugcomputer, petits ordinateurs à faible consommation et prix très raisonnable.
La société [http://www.newit.co.uk/shop/products.php?cat=21 NEWIT]basée en Angleterre vous permettra de l'acheter sans payer de taxes supplémentaires. N'oubliez pas d'acheter le JTAG si vous voulez mettre à jour le kernel (recommandé!), ainsi qu'une carte SD (NEWIT garantit la compatibilité des cartes avec les plugs).
Le dreamplug possède une alimentation détachable qui permet de l'utiliser dans un véhicule avec un adaptateur 12V/5V classique.

'''2. Le tour du propriétaire.'''
A la réception de votre dreamplug, connecter le Jtag. 
La connexion avec cu ne fonctionne pas, utilisez screen
    screen /dev/ttyUSB0 115200
login: root
mot de passe nosoup4u

''' 3 installer debian'''
les fichiers se trouve sur :http://code.google.com/p/dreamplug/downloads/list

il vous faut:
dreamplug_debian_v0.2.zip.001
dreamplug_debian_v0.2.zip.002
uImage-DreamPlug v9 

Je vous laisse lire lea notice d'install fournie par globalscale: DreamPlug - Change OS from Ubuntu to Debian-20110617.pdf 

Je ne parle ici que des écarts par rapport à cette notice.

Tout d'abord, la notice parle d'un fichier dreamplug-debian en tar.gz, mais nous avons ici des fichiers en .zip.001 et .zip.002.
Il faut commencer par en faire un zip unique avec lxsplit (dispo dans les dépots debian)

    lxsplit -j &quot;dreamplug_debian_v0.2.zip.001&quot;

ensuite il faut le dezipper pour trouver le fichier Tar.gz dont parle la notice
    unzip dreamplug_debian_v0.2.zip





'''4. mise à jour du kernel'''

Il existe un script pour vous aider
    wget http://sheeva.with-linux.com/sheeva/README-DREAM-UPDATE.sh


Ensuite vous rendez le fichier exécutable
Seules les versions &gt;= 2.6.38 sont disponibles


    ./README-DREAM-UPDATE.sh 2.6.38.7


Vous aurez un kernel dans /boot, dream-2.6.38.7-uImage il va falloir le copier dans sda1.
On commence par monter cette partition:

    mount -t vfat -o defaults,user,exec,uid=1000,gid=100,umask=000 /dev/sda1 /mnt
    cd /mnt


Ensuite, on renomme le uImage existant, puis on copie le kernel dream-2.6.38.7-uImage de /boot dans/mnt, en le renoment uImage
On ferme tout correctement, et on reboote


    sync
    umount /dev/sda1
    reboot


On interrompt le boot pour faire une modification dans les variables de uboot


    setenv mainlineLinux yes
    setenv arcNumber 2659
    saveenv
    reset



et là, miracle:


    # uname -ar
    Linux sheevaplug-debian 2.6.38.7 #1 PREEMPT Sun May 22 00:23:53 MDT 2011 armv5tel GNU/Linux

'''4 Liens'''
 http://code.google.com/p/dreamplug/downloads/list
 http://sheeva.with-linux.com

[[Catégorie:Installation]]</text>
      <sha1>8sob9yl4ev35rmbpzmmde1aa3ulm0ru</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4005</id>
      <parentid>4004</parentid>
      <timestamp>2012-04-08T18:53:13Z</timestamp>
      <contributor>
        <username>Piratebab</username>
        <id>50</id>
      </contributor>
      <text xml:space="preserve" bytes="2779">[[Category:plugcomputer]]

Installer DEBIAN sur un dreamplug

'''1. Le dreamplug'''
fait partie de la famille des plugcomputer, petits ordinateurs à faible consommation et prix très raisonnable.
La société [http://www.newit.co.uk/shop/products.php?cat=21 NEWIT]basée en Angleterre vous permettra de l'acheter sans payer de taxes supplémentaires. N'oubliez pas d'acheter le JTAG si vous voulez mettre à jour le kernel (recommandé!), ainsi qu'une carte SD (NEWIT garantit la compatibilité des cartes avec les plugs).
Le dreamplug possède une alimentation détachable qui permet de l'utiliser dans un véhicule avec un adaptateur 12V/5V classique.

'''2. Le tour du propriétaire.'''
A la réception de votre dreamplug, connecter le Jtag. 
La connexion avec cu ne fonctionne pas, utilisez screen
    screen /dev/ttyUSB0 115200
login: root
mot de passe nosoup4u

''' 3 installer debian'''

les fichiers se trouve sur :http://code.google.com/p/dreamplug/downloads/list

il vous faut:

dreamplug_debian_v0.2.zip.001


dreamplug_debian_v0.2.zip.002
uImage-DreamPlug v9 


Je vous laisse lire la notice d'install fournie par globalscale:

 DreamPlug - Change OS from Ubuntu to Debian-20110617.pdf 

Je ne parle ici que des écarts par rapport à cette notice.

Tout d'abord, la notice parle d'un fichier dreamplug-debian en tar.gz, mais nous avons ici des fichiers en .zip.001 et .zip.002.
Il faut commencer par en faire un zip unique avec lxsplit (dispo dans les dépots debian)

    lxsplit -j &quot;dreamplug_debian_v0.2.zip.001&quot;

ensuite il faut le dezipper pour trouver le fichier Tar.gz dont parle la notice
    unzip dreamplug_debian_v0.2.zip





'''4. mise à jour du kernel'''

Il existe un script pour vous aider
    wget http://sheeva.with-linux.com/sheeva/README-DREAM-UPDATE.sh


Ensuite vous rendez le fichier exécutable
Seules les versions &gt;= 2.6.38 sont disponibles


    ./README-DREAM-UPDATE.sh 2.6.38.7


Vous aurez un kernel dans /boot, dream-2.6.38.7-uImage il va falloir le copier dans sda1.
On commence par monter cette partition:

    mount -t vfat -o defaults,user,exec,uid=1000,gid=100,umask=000 /dev/sda1 /mnt
    cd /mnt


Ensuite, on renomme le uImage existant, puis on copie le kernel dream-2.6.38.7-uImage de /boot dans/mnt, en le renoment uImage
On ferme tout correctement, et on reboote


    sync
    umount /dev/sda1
    reboot


On interrompt le boot pour faire une modification dans les variables de uboot


    setenv mainlineLinux yes
    setenv arcNumber 2659
    saveenv
    reset



et là, miracle:


    # uname -ar
    Linux sheevaplug-debian 2.6.38.7 #1 PREEMPT Sun May 22 00:23:53 MDT 2011 armv5tel GNU/Linux

'''4 Liens'''
 http://code.google.com/p/dreamplug/downloads/list
 http://sheeva.with-linux.com

[[Catégorie:Installation]]</text>
      <sha1>f6m6ybutpseu5ngocmzolxfzospclkq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4006</id>
      <parentid>4005</parentid>
      <timestamp>2012-04-08T19:32:56Z</timestamp>
      <contributor>
        <username>Piratebab</username>
        <id>50</id>
      </contributor>
      <text xml:space="preserve" bytes="2806">[[Category:plugcomputer]]

Installer DEBIAN sur un dreamplug

'''1. Le dreamplug'''
fait partie de la famille des plugcomputer, petits ordinateurs à faible consommation et prix très raisonnable.
La société [http://www.newit.co.uk/shop/products.php?cat=21 NEWIT]basée en Angleterre vous permettra de l'acheter sans payer de taxes supplémentaires. N'oubliez pas d'acheter le JTAG si vous voulez mettre à jour le kernel (recommandé!), ainsi qu'une carte SD (NEWIT garantit la compatibilité des cartes avec les plugs).
Le dreamplug possède une alimentation détachable qui permet de l'utiliser dans un véhicule avec un adaptateur 12V/5V classique.

'''2. Le tour du propriétaire.'''
A la réception de votre dreamplug, connecter le Jtag. 
La connexion avec cu ne fonctionne pas, utilisez screen
    screen /dev/ttyUSB0 115200
login: root
mot de passe nosoup4u

''' 3 installer debian'''

les fichiers se trouve sur :http://code.google.com/p/dreamplug/downloads/list

il vous faut:

dreamplug_debian_v0.2.zip.001


dreamplug_debian_v0.2.zip.002

uImage_2.6.33.7  que vous renommerez en uImage


Je vous laisse lire la notice d'install fournie par globalscale:

 DreamPlug - Change OS from Ubuntu to Debian-20110617.pdf 

Je ne parle ici que des écarts par rapport à cette notice.

Tout d'abord, la notice parle d'un fichier dreamplug-debian en tar.gz, mais nous avons ici des fichiers en .zip.001 et .zip.002.
Il faut commencer par en faire un zip unique avec lxsplit (dispo dans les dépots debian)

    lxsplit -j &quot;dreamplug_debian_v0.2.zip.001&quot;

ensuite il faut le dezipper pour trouver le fichier Tar.gz dont parle la notice
    unzip dreamplug_debian_v0.2.zip





'''4. mise à jour du kernel'''

Il existe un script pour vous aider
    wget http://sheeva.with-linux.com/sheeva/README-DREAM-UPDATE.sh


Ensuite vous rendez le fichier exécutable
Seules les versions &gt;= 2.6.38 sont disponibles


    ./README-DREAM-UPDATE.sh 2.6.38.7


Vous aurez un kernel dans /boot, dream-2.6.38.7-uImage il va falloir le copier dans sda1.
On commence par monter cette partition:

    mount -t vfat -o defaults,user,exec,uid=1000,gid=100,umask=000 /dev/sda1 /mnt
    cd /mnt


Ensuite, on renomme le uImage existant, puis on copie le kernel dream-2.6.38.7-uImage de /boot dans/mnt, en le renoment uImage
On ferme tout correctement, et on reboote


    sync
    umount /dev/sda1
    reboot


On interrompt le boot pour faire une modification dans les variables de uboot


    setenv mainlineLinux yes
    setenv arcNumber 2659
    saveenv
    reset



et là, miracle:


    # uname -ar
    Linux sheevaplug-debian 2.6.38.7 #1 PREEMPT Sun May 22 00:23:53 MDT 2011 armv5tel GNU/Linux

'''4 Liens'''
 http://code.google.com/p/dreamplug/downloads/list
 http://sheeva.with-linux.com

[[Catégorie:Installation]]</text>
      <sha1>osawbz6ljiqvznlsl16qwnda80xsecs</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4007</id>
      <parentid>4006</parentid>
      <timestamp>2012-04-08T20:17:03Z</timestamp>
      <contributor>
        <username>Piratebab</username>
        <id>50</id>
      </contributor>
      <text xml:space="preserve" bytes="2766">[[Category:plugcomputer]]

Installer DEBIAN sur un dreamplug

'''1. Le dreamplug'''
fait partie de la famille des plugcomputer, petits ordinateurs à faible consommation et prix très raisonnable.
La société [http://www.newit.co.uk/shop/products.php?cat=21 NEWIT]basée en Angleterre vous permettra de l'acheter sans payer de taxes supplémentaires. N'oubliez pas d'acheter le JTAG si vous voulez mettre à jour le kernel (recommandé!), ainsi qu'une carte SD (NEWIT garantit la compatibilité des cartes avec les plugs).
Le dreamplug possède une alimentation détachable qui permet de l'utiliser dans un véhicule avec un adaptateur 12V/5V classique.

'''2. Le tour du propriétaire.'''
A la réception de votre dreamplug, connecter le Jtag. 
La connexion avec cu ne fonctionne pas, utilisez screen
    screen /dev/ttyUSB0 115200
login: root
mot de passe nosoup4u

''' 3 installer debian'''

les fichiers se trouve sur :http://code.google.com/p/dreamplug/downloads/list

il vous faut:

dreamplug_debian_v0.2.zip.001


dreamplug_debian_v0.2.zip.002

uImage


Je vous laisse lire la notice d'install fournie par globalscale:

 DreamPlug - Change OS from Ubuntu to Debian-20110617.pdf 

Je ne parle ici que des écarts par rapport à cette notice.

Tout d'abord, la notice parle d'un fichier dreamplug-debian en tar.gz, mais nous avons ici des fichiers en .zip.001 et .zip.002.
Il faut commencer par en faire un zip unique avec lxsplit (dispo dans les dépots debian)

    lxsplit -j &quot;dreamplug_debian_v0.2.zip.001&quot;

ensuite il faut le dezipper pour trouver le fichier Tar.gz dont parle la notice
    unzip dreamplug_debian_v0.2.zip





'''4. mise à jour du kernel'''

Il existe un script pour vous aider
    wget http://sheeva.with-linux.com/sheeva/README-DREAM-UPDATE.sh


Ensuite vous rendez le fichier exécutable
Seules les versions &gt;= 2.6.38 sont disponibles


    ./README-DREAM-UPDATE.sh 2.6.38.7


Vous aurez un kernel dans /boot, dream-2.6.38.7-uImage il va falloir le copier dans sda1.
On commence par monter cette partition:

    mount -t vfat -o defaults,user,exec,uid=1000,gid=100,umask=000 /dev/sda1 /mnt
    cd /mnt


Ensuite, on renomme le uImage existant, puis on copie le kernel dream-2.6.38.7-uImage de /boot dans/mnt, en le renoment uImage
On ferme tout correctement, et on reboote


    sync
    umount /dev/sda1
    reboot


On interrompt le boot pour faire une modification dans les variables de uboot


    setenv mainlineLinux yes
    setenv arcNumber 2659
    saveenv
    reset



et là, miracle:


    # uname -ar
    Linux sheevaplug-debian 2.6.38.7 #1 PREEMPT Sun May 22 00:23:53 MDT 2011 armv5tel GNU/Linux

'''4 Liens'''
 http://code.google.com/p/dreamplug/downloads/list
 http://sheeva.with-linux.com

[[Catégorie:Installation]]</text>
      <sha1>oox6h744ojl6g2vfid0vts8vgoai97i</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4013</id>
      <parentid>4007</parentid>
      <timestamp>2012-04-09T07:34:28Z</timestamp>
      <contributor>
        <username>Piratebab</username>
        <id>50</id>
      </contributor>
      <text xml:space="preserve" bytes="3845">[[Category:plugcomputer]]

Installer DEBIAN sur un dreamplug

'''1. Le dreamplug'''
fait partie de la famille des plugcomputer, petits ordinateurs à faible consommation et prix très raisonnable.
La société [http://www.newit.co.uk/shop/products.php?cat=21 NEWIT]basée en Angleterre vous permettra de l'acheter sans payer de taxes supplémentaires. N'oubliez pas d'acheter le JTAG si vous voulez mettre à jour le kernel (recommandé!), ainsi qu'une carte SD (NEWIT garantit la compatibilité des cartes avec les plugs).
Le dreamplug possède une alimentation détachable qui permet de l'utiliser dans un véhicule avec un adaptateur 12V/5V classique.

'''2. Le tour du propriétaire.'''
A la réception de votre dreamplug, connecter le Jtag. 
La connexion avec cu ne fonctionne pas, utilisez screen
    screen /dev/ttyUSB0 115200
login: root
mot de passe nosoup4u

''' 3 installer debian'''

les fichiers se trouve sur :http://code.google.com/p/dreamplug/downloads/list

il vous faut:

dreamplug_debian_v0.2.zip.001


dreamplug_debian_v0.2.zip.002

uImage


Je vous laisse lire la notice d'install fournie par globalscale:

 DreamPlug - Change OS from Ubuntu to Debian-20110617.pdf 

Je ne parle ici que des écarts par rapport à cette notice.

Tout d'abord, la notice parle d'un fichier dreamplug-debian en tar.gz, mais nous avons ici des fichiers en .zip.001 et .zip.002.
Il faut commencer par en faire un zip unique avec lxsplit (dispo dans les dépots debian)

    lxsplit -j &quot;dreamplug_debian_v0.2.zip.001&quot;

ensuite il faut le dezipper pour trouver le fichier Tar.gz dont parle la notice
    unzip dreamplug_debian_v0.2.zip


''''partitionner la carte SD interne''''
La notice n'est pas très explicite, en particulier pour la partition 1.
Lors de l'utilisation de fdisk, il faut lui dire que c'est une partition FAT16
    Command (m for help): t
    Partition number (1-4): 1
    Hex code (type L to list codes): 6
    Changed system type of partition 1 to 6 (FAT16)

    Command (m for help): p

    Disk /dev/sda: 4110 MB, 4110417920 bytes
    255 heads, 63 sectors/track, 499 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Disk identifier: 0x400217e4

       Device Boot      Start         End      Blocks   Id  System
    /dev/sda1               1          13      104391    6  FAT16
    /dev/sda2              14         499     3903795   83  Linux


Ensuite pour la formater, je prefère utiliser les commandes suivantes (il faut brancher un câble réseau et configurer le fichier interface pour accéder à internet, ou alors copier le paquet manquant sur la clef USB et l'installer via dpkg -i)

    # apt-get install dosfstools
    # mkfs.vfat -v -c -n 'dsd-uimage' /dev/sda1

'''4. mise à jour du kernel'''

Il existe un script pour vous aider
    wget http://sheeva.with-linux.com/sheeva/README-DREAM-UPDATE.sh


Ensuite vous rendez le fichier exécutable
Seules les versions &gt;= 2.6.38 sont disponibles


    ./README-DREAM-UPDATE.sh 2.6.38.7


Vous aurez un kernel dans /boot, dream-2.6.38.7-uImage il va falloir le copier dans sda1.
On commence par monter cette partition:

    mount -t vfat -o defaults,user,exec,uid=1000,gid=100,umask=000 /dev/sda1 /mnt
    cd /mnt


Ensuite, on renomme le uImage existant, puis on copie le kernel dream-2.6.38.7-uImage de /boot dans/mnt, en le renoment uImage
On ferme tout correctement, et on reboote


    sync
    umount /dev/sda1
    reboot


On interrompt le boot pour faire une modification dans les variables de uboot


    setenv mainlineLinux yes
    setenv arcNumber 2659
    saveenv
    reset



et là, miracle:


    # uname -ar
    Linux sheevaplug-debian 2.6.38.7 #1 PREEMPT Sun May 22 00:23:53 MDT 2011 armv5tel GNU/Linux

'''4 Liens'''
 http://code.google.com/p/dreamplug/downloads/list
 http://sheeva.with-linux.com

[[Catégorie:Installation]]</text>
      <sha1>gqflov8n75j39oahkz5l17va53u2d6k</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4014</id>
      <parentid>4013</parentid>
      <timestamp>2012-04-09T07:34:55Z</timestamp>
      <contributor>
        <username>Piratebab</username>
        <id>50</id>
      </contributor>
      <text xml:space="preserve" bytes="3844">[[Category:plugcomputer]]

Installer DEBIAN sur un dreamplug

'''1. Le dreamplug'''
fait partie de la famille des plugcomputer, petits ordinateurs à faible consommation et prix très raisonnable.
La société [http://www.newit.co.uk/shop/products.php?cat=21 NEWIT]basée en Angleterre vous permettra de l'acheter sans payer de taxes supplémentaires. N'oubliez pas d'acheter le JTAG si vous voulez mettre à jour le kernel (recommandé!), ainsi qu'une carte SD (NEWIT garantit la compatibilité des cartes avec les plugs).
Le dreamplug possède une alimentation détachable qui permet de l'utiliser dans un véhicule avec un adaptateur 12V/5V classique.

'''2. Le tour du propriétaire.'''
A la réception de votre dreamplug, connecter le Jtag. 
La connexion avec cu ne fonctionne pas, utilisez screen
    screen /dev/ttyUSB0 115200
login: root
mot de passe nosoup4u

''' 3 installer debian'''

les fichiers se trouve sur :http://code.google.com/p/dreamplug/downloads/list

il vous faut:

dreamplug_debian_v0.2.zip.001


dreamplug_debian_v0.2.zip.002

uImage


Je vous laisse lire la notice d'install fournie par globalscale:

 DreamPlug - Change OS from Ubuntu to Debian-20110617.pdf 

Je ne parle ici que des écarts par rapport à cette notice.

Tout d'abord, la notice parle d'un fichier dreamplug-debian en tar.gz, mais nous avons ici des fichiers en .zip.001 et .zip.002.
Il faut commencer par en faire un zip unique avec lxsplit (dispo dans les dépots debian)

    lxsplit -j &quot;dreamplug_debian_v0.2.zip.001&quot;

ensuite il faut le dezipper pour trouver le fichier Tar.gz dont parle la notice
    unzip dreamplug_debian_v0.2.zip


''''partitionner la carte SD interne''''
La notice n'est pas très explicite, en particulier pour la partition 1.
Lors de l'utilisation de fdisk, il faut lui dire que c'est une partition FAT16
    Command (m for help): t
    Partition number (1-4): 1
    Hex code (type L to list codes): 6
    Changed system type of partition 1 to 6 (FAT16)

    Command (m for help): p

    Disk /dev/sda: 4110 MB, 4110417920 bytes
    255 heads, 63 sectors/track, 499 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Disk identifier: 0x400217e4

       Device Boot      Start         End      Blocks   Id  System
    /dev/sda1               1          13      104391    6  FAT16
    /dev/sda2              14         499     3903795   83  Linux


Ensuite pour la formater, je prefère utiliser les commandes suivantes (il faut brancher un câble réseau et configurer le fichier interface pour accéder à internet, ou alors copier le paquet manquant sur la clef USB et l'installer via dpkg -i)

    # apt-get install dosfstools
    # mkfs.vfat -v -c -n 'dp_kernel' /dev/sda1

'''4. mise à jour du kernel'''

Il existe un script pour vous aider
    wget http://sheeva.with-linux.com/sheeva/README-DREAM-UPDATE.sh


Ensuite vous rendez le fichier exécutable
Seules les versions &gt;= 2.6.38 sont disponibles


    ./README-DREAM-UPDATE.sh 2.6.38.7


Vous aurez un kernel dans /boot, dream-2.6.38.7-uImage il va falloir le copier dans sda1.
On commence par monter cette partition:

    mount -t vfat -o defaults,user,exec,uid=1000,gid=100,umask=000 /dev/sda1 /mnt
    cd /mnt


Ensuite, on renomme le uImage existant, puis on copie le kernel dream-2.6.38.7-uImage de /boot dans/mnt, en le renoment uImage
On ferme tout correctement, et on reboote


    sync
    umount /dev/sda1
    reboot


On interrompt le boot pour faire une modification dans les variables de uboot


    setenv mainlineLinux yes
    setenv arcNumber 2659
    saveenv
    reset



et là, miracle:


    # uname -ar
    Linux sheevaplug-debian 2.6.38.7 #1 PREEMPT Sun May 22 00:23:53 MDT 2011 armv5tel GNU/Linux

'''4 Liens'''
 http://code.google.com/p/dreamplug/downloads/list
 http://sheeva.with-linux.com

[[Catégorie:Installation]]</text>
      <sha1>jg1j307om53zse4lf0lmwzftzo0ngg8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4015</id>
      <parentid>4014</parentid>
      <timestamp>2012-04-09T07:35:43Z</timestamp>
      <contributor>
        <username>Piratebab</username>
        <id>50</id>
      </contributor>
      <text xml:space="preserve" bytes="3843">[[Category:plugcomputer]]

Installer DEBIAN sur un dreamplug

'''1. Le dreamplug'''
fait partie de la famille des plugcomputer, petits ordinateurs à faible consommation et prix très raisonnable.
La société [http://www.newit.co.uk/shop/products.php?cat=21 NEWIT]basée en Angleterre vous permettra de l'acheter sans payer de taxes supplémentaires. N'oubliez pas d'acheter le JTAG si vous voulez mettre à jour le kernel (recommandé!), ainsi qu'une carte SD (NEWIT garantit la compatibilité des cartes avec les plugs).
Le dreamplug possède une alimentation détachable qui permet de l'utiliser dans un véhicule avec un adaptateur 12V/5V classique.

'''2. Le tour du propriétaire.'''
A la réception de votre dreamplug, connecter le Jtag. 
La connexion avec cu ne fonctionne pas, utilisez screen
    screen /dev/ttyUSB0 115200
login: root
mot de passe nosoup4u

''' 3 installer debian'''

les fichiers se trouve sur :http://code.google.com/p/dreamplug/downloads/list

il vous faut:

dreamplug_debian_v0.2.zip.001


dreamplug_debian_v0.2.zip.002

uImage


Je vous laisse lire la notice d'install fournie par globalscale:

 DreamPlug - Change OS from Ubuntu to Debian-20110617.pdf 

Je ne parle ici que des écarts par rapport à cette notice.

Tout d'abord, la notice parle d'un fichier dreamplug-debian en tar.gz, mais nous avons ici des fichiers en .zip.001 et .zip.002.
Il faut commencer par en faire un zip unique avec lxsplit (dispo dans les dépots debian)

    lxsplit -j &quot;dreamplug_debian_v0.2.zip.001&quot;

ensuite il faut le dezipper pour trouver le fichier Tar.gz dont parle la notice
    unzip dreamplug_debian_v0.2.zip


'''partitionner la carte SD interne'''

La notice n'est pas très explicite, en particulier pour la partition 1.
Lors de l'utilisation de fdisk, il faut lui dire que c'est une partition FAT16
    Command (m for help): t
    Partition number (1-4): 1
    Hex code (type L to list codes): 6
    Changed system type of partition 1 to 6 (FAT16)

    Command (m for help): p

    Disk /dev/sda: 4110 MB, 4110417920 bytes
    255 heads, 63 sectors/track, 499 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Disk identifier: 0x400217e4

       Device Boot      Start         End      Blocks   Id  System
    /dev/sda1               1          13      104391    6  FAT16
    /dev/sda2              14         499     3903795   83  Linux


Ensuite pour la formater, je prefère utiliser les commandes suivantes (il faut brancher un câble réseau et configurer le fichier interface pour accéder à internet, ou alors copier le paquet manquant sur la clef USB et l'installer via dpkg -i)

    # apt-get install dosfstools
    # mkfs.vfat -v -c -n 'dp_kernel' /dev/sda1

'''4. mise à jour du kernel'''

Il existe un script pour vous aider
    wget http://sheeva.with-linux.com/sheeva/README-DREAM-UPDATE.sh


Ensuite vous rendez le fichier exécutable
Seules les versions &gt;= 2.6.38 sont disponibles


    ./README-DREAM-UPDATE.sh 2.6.38.7


Vous aurez un kernel dans /boot, dream-2.6.38.7-uImage il va falloir le copier dans sda1.
On commence par monter cette partition:

    mount -t vfat -o defaults,user,exec,uid=1000,gid=100,umask=000 /dev/sda1 /mnt
    cd /mnt


Ensuite, on renomme le uImage existant, puis on copie le kernel dream-2.6.38.7-uImage de /boot dans/mnt, en le renoment uImage
On ferme tout correctement, et on reboote


    sync
    umount /dev/sda1
    reboot


On interrompt le boot pour faire une modification dans les variables de uboot


    setenv mainlineLinux yes
    setenv arcNumber 2659
    saveenv
    reset



et là, miracle:


    # uname -ar
    Linux sheevaplug-debian 2.6.38.7 #1 PREEMPT Sun May 22 00:23:53 MDT 2011 armv5tel GNU/Linux

'''4 Liens'''
 http://code.google.com/p/dreamplug/downloads/list
 http://sheeva.with-linux.com

[[Catégorie:Installation]]</text>
      <sha1>r7us0ztet52t3rip7eacl6zr5fzg7mj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4056</id>
      <parentid>4015</parentid>
      <timestamp>2012-04-24T12:05:54Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="3858">[[Category:plugcomputer]]

Installer DEBIAN sur un [[Matériel::dreamplug]]

'''1. Le dreamplug'''
fait partie de la famille des plugcomputer, petits ordinateurs à faible consommation et prix très raisonnable.
La société [http://www.newit.co.uk/shop/products.php?cat=21 NEWIT]basée en Angleterre vous permettra de l'acheter sans payer de taxes supplémentaires. N'oubliez pas d'acheter le JTAG si vous voulez mettre à jour le kernel (recommandé!), ainsi qu'une carte SD (NEWIT garantit la compatibilité des cartes avec les plugs).
Le dreamplug possède une alimentation détachable qui permet de l'utiliser dans un véhicule avec un adaptateur 12V/5V classique.

'''2. Le tour du propriétaire.'''
A la réception de votre dreamplug, connecter le Jtag. 
La connexion avec cu ne fonctionne pas, utilisez screen
    screen /dev/ttyUSB0 115200
login: root
mot de passe nosoup4u

''' 3 installer debian'''

les fichiers se trouve sur :http://code.google.com/p/dreamplug/downloads/list

il vous faut:

dreamplug_debian_v0.2.zip.001


dreamplug_debian_v0.2.zip.002

uImage


Je vous laisse lire la notice d'install fournie par globalscale:

 DreamPlug - Change OS from Ubuntu to Debian-20110617.pdf 

Je ne parle ici que des écarts par rapport à cette notice.

Tout d'abord, la notice parle d'un fichier dreamplug-debian en tar.gz, mais nous avons ici des fichiers en .zip.001 et .zip.002.
Il faut commencer par en faire un zip unique avec lxsplit (dispo dans les dépots debian)

    lxsplit -j &quot;dreamplug_debian_v0.2.zip.001&quot;

ensuite il faut le dezipper pour trouver le fichier Tar.gz dont parle la notice
    unzip dreamplug_debian_v0.2.zip


'''partitionner la carte SD interne'''

La notice n'est pas très explicite, en particulier pour la partition 1.
Lors de l'utilisation de fdisk, il faut lui dire que c'est une partition FAT16
    Command (m for help): t
    Partition number (1-4): 1
    Hex code (type L to list codes): 6
    Changed system type of partition 1 to 6 (FAT16)

    Command (m for help): p

    Disk /dev/sda: 4110 MB, 4110417920 bytes
    255 heads, 63 sectors/track, 499 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Disk identifier: 0x400217e4

       Device Boot      Start         End      Blocks   Id  System
    /dev/sda1               1          13      104391    6  FAT16
    /dev/sda2              14         499     3903795   83  Linux


Ensuite pour la formater, je prefère utiliser les commandes suivantes (il faut brancher un câble réseau et configurer le fichier interface pour accéder à internet, ou alors copier le paquet manquant sur la clef USB et l'installer via dpkg -i)

    # apt-get install dosfstools
    # mkfs.vfat -v -c -n 'dp_kernel' /dev/sda1

'''4. mise à jour du kernel'''

Il existe un script pour vous aider
    wget http://sheeva.with-linux.com/sheeva/README-DREAM-UPDATE.sh


Ensuite vous rendez le fichier exécutable
Seules les versions &gt;= 2.6.38 sont disponibles


    ./README-DREAM-UPDATE.sh 2.6.38.7


Vous aurez un kernel dans /boot, dream-2.6.38.7-uImage il va falloir le copier dans sda1.
On commence par monter cette partition:

    mount -t vfat -o defaults,user,exec,uid=1000,gid=100,umask=000 /dev/sda1 /mnt
    cd /mnt


Ensuite, on renomme le uImage existant, puis on copie le kernel dream-2.6.38.7-uImage de /boot dans/mnt, en le renoment uImage
On ferme tout correctement, et on reboote


    sync
    umount /dev/sda1
    reboot


On interrompt le boot pour faire une modification dans les variables de uboot


    setenv mainlineLinux yes
    setenv arcNumber 2659
    saveenv
    reset



et là, miracle:


    # uname -ar
    Linux sheevaplug-debian 2.6.38.7 #1 PREEMPT Sun May 22 00:23:53 MDT 2011 armv5tel GNU/Linux

'''4 Liens'''
 http://code.google.com/p/dreamplug/downloads/list
 http://sheeva.with-linux.com

[[Catégorie:Installation]]</text>
      <sha1>r5sdu3h4xu0f3cp17gbhiuinozwkm3x</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4131</id>
      <parentid>4056</parentid>
      <timestamp>2012-05-01T07:59:28Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="3854">[[Category:plugcomputer]]

Installer DEBIAN sur un [[Matériel::dreamplug]]

'''1. Le dreamplug'''
fait partie de la famille des plugcomputer, petits ordinateurs à faible consommation et prix très raisonnable.
La société [http://www.newit.co.uk/shop/products.php?cat=21 NEWIT]basée en Angleterre vous permettra de l'acheter sans payer de taxes supplémentaires. N'oubliez pas d'acheter le JTAG si vous voulez mettre à jour le kernel (recommandé!), ainsi qu'une carte SD (NEWIT garantit la compatibilité des cartes avec les plugs).
Le dreamplug possède une alimentation détachable qui permet de l'utiliser dans un véhicule avec un adaptateur 12V/5V classique.

'''2. Le tour du propriétaire.'''
A la réception de votre dreamplug, connecter le Jtag. 
La connexion avec cu ne fonctionne pas, utilisez screen
    screen /dev/ttyUSB0 115200
login: root
mot de passe nosoup4u

''' 3 installer debian'''

les fichiers se trouve sur :http://code.google.com/p/dreamplug/downloads/list

il vous faut:

dreamplug_debian_v0.2.zip.001


dreamplug_debian_v0.2.zip.002

uImage


Je vous laisse lire la notice d'install fournie par globalscale:

 DreamPlug - Change OS from Ubuntu to Debian-20110617.pdf 

Je ne parle ici que des écarts par rapport à cette notice.

Tout d'abord, la notice parle d'un fichier dreamplug-debian en tar.gz, mais nous avons ici des fichiers en .zip.001 et .zip.002.
Il faut commencer par en faire un zip unique avec lxsplit (dispo dans les dépots debian)

    lxsplit -j &quot;dreamplug_debian_v0.2.zip.001&quot;

ensuite il faut le dezipper pour trouver le fichier Tar.gz dont parle la notice
    unzip dreamplug_debian_v0.2.zip


'''partitionner la carte SD interne'''

La notice n'est pas très explicite, en particulier pour la partition 1.
Lors de l'utilisation de fdisk, il faut lui dire que c'est une partition FAT16
    Command (m for help): t
    Partition number (1-4): 1
    Hex code (type L to list codes): 6
    Changed system type of partition 1 to 6 (FAT16)

    Command (m for help): p

    Disk /dev/sda: 4110 MB, 4110417920 bytes
    255 heads, 63 sectors/track, 499 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Disk identifier: 0x400217e4

       Device Boot      Start         End      Blocks   Id  System
    /dev/sda1               1          13      104391    6  FAT16
    /dev/sda2              14         499     3903795   83  Linux


Ensuite pour la formater, je prefère utiliser les commandes suivantes (il faut brancher un câble réseau et configurer le fichier interface pour accéder à internet, ou alors copier le paquet manquant sur la clef USB et l'installer via dpkg -i)

    # apt-get install dosfstools
    # mkfs.vfat -v -c -n 'dp_kernel' /dev/sda1

'''4. mise à jour du kernel'''

Il existe un script pour vous aider
    wget http://sheeva.with-linux.com/sheeva/README-DREAM-UPDATE.sh


Ensuite vous rendez le fichier exécutable
Seules les versions &gt;= 2.6.38 sont disponibles


    ./README-DREAM-UPDATE.sh 2.6.38.7


Vous aurez un kernel dans /boot, dream-2.6.38.7-uImage il va falloir le copier dans sda1.
On commence par monter cette partition:

    mount -t vfat -o defaults,user,exec,uid=1000,gid=100,umask=000 /dev/sda1 /mnt
    cd /mnt


Ensuite, on renomme le uImage existant, puis on copie le kernel dream-2.6.38.7-uImage de /boot dans/mnt, en le renoment uImage
On ferme tout correctement, et on reboote


    sync
    umount /dev/sda1
    reboot


On interrompt le boot pour faire une modification dans les variables de uboot


    setenv mainlineLinux yes
    setenv arcNumber 2659
    saveenv
    reset



et là, miracle:


    # uname -ar
    Linux sheevaplug-debian 2.6.38.7 #1 PREEMPT Sun May 22 00:23:53 MDT 2011 armv5tel GNU/Linux

'''4 Liens'''
 http://code.google.com/p/dreamplug/downloads/list
 http://sheeva.with-linux.com

[[Catégorie:Tutoriel]]</text>
      <sha1>c9k1bcid8a8r91igq933z50od2bwicx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Debian quoi ?</title>
    <ns>0</ns>
    <id>1265</id>
    <revision>
      <id>5255</id>
      <timestamp>2013-06-09T15:47:11Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>Premier jet de la page</comment>
      <text xml:space="preserve" bytes="4268">Debian est un système d'exploitation basé sur le noyau Linux (en réalité Debian peut être utilisé avec d'autres noyaux) et les outils GNU. On parle de distribution GNU/Linux (souvent simplifié en « distribution linux »).

= Le noyau linux =

== Noyau ==

Un noyau est la partie central d'un système d'exploitation. Il a pour charge de permettre aux autres logiciels d'accéder au matériel et de bien vivre ensemble (il ne faut pas que l'un des logiciel prenne le pas sur tous les autres).

Pour accéder au matériel c'est lui qui contient les pilotes de périphériques. Ceux-ci sont regroupés dans différentes catégorie et rendu accessibles aux autres logiciel via une API standardisée si possible (voir POSIX).

Pour permettre à toutes les applications de vivre ensemble, le noyau doit permettre de choisir quelle application doit s'exécuter et pendant combien de temps. Par exemple si vous n'avez qu'un seul processeur mais 2 applications il faut que chacune des 2 accède de manière équitable au processeur (chacune l'utilise pendant 50% du temps). Il faut aussi avoir un certains nombre de sécurité pour empêcher un logiciel de tuer n'importe quel autre logiciel par exemple (imaginez si n'importe quel logiciel puisse tuer l'antivirus par exemple). Ici nous ne faisons qu'effleurer le sujet qui est très vaste et qui est en perpétuelle évolution.

== Linux ==

C'est un noyau qui a était crée au début des années 90 par Linus Torvald. Aujourd'hui Linus est toujours le développeur principal du noyau, mais il est aidé par des milliers de contributeurs qui permettent à celui-ci d'être aussi bien adapté au très gros serveur qu'aux téléphones portables ou à des appareils embarqués encore plus petit (comme des routeurs, des montres, etc). Le site officiel de linux est kernel.org.

= Debian =

Debian est un vieux système d'exploitation qui peu utiliser  le noyau Linux. Il utilise en outre les outils du projet GNU pour compléter le système de base (le bootloader, le système d'init, un shell, les binutils, un éditeur de texte, etc).

== Fonctionnement du système d'exploitation ==

Ici nous parlons de Debian GNU/Linux sur architecture x86 et x86-64bits, mais c'est applicable à l'énorme majorité des systèmes d'exploitation qu'ils soient basés sur Linux ou non. Certains logiciels cité peuvent changer entre les versions de Debian (et bien sûr sur d'autres systèmes d'exploitation). Comme très souvent pour expliquer comment tout cela fonctionne nous allons partir du démarrage de l'ordinateur.

Lorsque vous démarrez votre ordinateur c'est un logiciel qui se trouve dans votre carte mère qui est exécuter en premier. Celui-ci a pour tâche de trouver et d'exécuter le chargeur de démarrage (bootloader) qui se trouve sur un disque dur ou un périphérique de stockage de données (clef usb, dvd, etc).

Le bootloader (généralement grub pour les système d'exploitation libre (bien qu'il en existe d'autres comme lilo ou busybox)) a lui pour mission d'ouvrir une partition (on parle de montage (mount) de partition) et pour y trouver le noyau du système d'exploitation (linux dans notre exemple), le copier dans la mémoire vive et l'exécuter en lui passant différents paramètres.

Le noyau lui doit initialisés tous les périphériques (seul un nombre minimal d'entre eux l'on était jusque là). Notamment (sur architecture x86 et 86-64), il doit initialisé le processeur pour que ce dernier active toutes ces options (jusque là toutes les instruction du processeur n'étaient pas accessibles par exemple). Le noyau va ensuite lancer le premier programme : le système d'init (actuellement init system V, mais il s'agit upstart sur ubuntu et de systemd sur fedora).

C'est le système d'init qui doit s'occuper de tout le reste. Il va vérifier l'état des disques dur et monter ceux qui sont dans inscrit dans /etc/fstab, il va configurer le réseau, lancer différents programmes en tâche de fond pour qu'ils s'occupe par exemple de lancer d'autres tâches de manière périodique, de configurer le réseau en dhcp, lancer les différents serveurs (web, ssh, ftp, smtp, etc) et lancer s'il s'agit d'une machine de bureau le gestionnaire de connexion (gdm, kdm, litghdm, etc).</text>
      <sha1>jikr2wms2pj82183z9aphvfq93h22rj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5256</id>
      <parentid>5255</parentid>
      <timestamp>2013-06-09T15:50:51Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <minor/>
      <comment>Ajout dans une catégorie</comment>
      <text xml:space="preserve" bytes="4290">Debian est un système d'exploitation basé sur le noyau Linux (en réalité Debian peut être utilisé avec d'autres noyaux) et les outils GNU. On parle de distribution GNU/Linux (souvent simplifié en « distribution linux »).

= Le noyau linux =

== Noyau ==

Un noyau est la partie central d'un système d'exploitation. Il a pour charge de permettre aux autres logiciels d'accéder au matériel et de bien vivre ensemble (il ne faut pas que l'un des logiciel prenne le pas sur tous les autres).

Pour accéder au matériel c'est lui qui contient les pilotes de périphériques. Ceux-ci sont regroupés dans différentes catégorie et rendu accessibles aux autres logiciel via une API standardisée si possible (voir POSIX).

Pour permettre à toutes les applications de vivre ensemble, le noyau doit permettre de choisir quelle application doit s'exécuter et pendant combien de temps. Par exemple si vous n'avez qu'un seul processeur mais 2 applications il faut que chacune des 2 accède de manière équitable au processeur (chacune l'utilise pendant 50% du temps). Il faut aussi avoir un certains nombre de sécurité pour empêcher un logiciel de tuer n'importe quel autre logiciel par exemple (imaginez si n'importe quel logiciel puisse tuer l'antivirus par exemple). Ici nous ne faisons qu'effleurer le sujet qui est très vaste et qui est en perpétuelle évolution.

== Linux ==

C'est un noyau qui a était crée au début des années 90 par Linus Torvald. Aujourd'hui Linus est toujours le développeur principal du noyau, mais il est aidé par des milliers de contributeurs qui permettent à celui-ci d'être aussi bien adapté au très gros serveur qu'aux téléphones portables ou à des appareils embarqués encore plus petit (comme des routeurs, des montres, etc). Le site officiel de linux est kernel.org.

= Debian =

Debian est un vieux système d'exploitation qui peu utiliser  le noyau Linux. Il utilise en outre les outils du projet GNU pour compléter le système de base (le bootloader, le système d'init, un shell, les binutils, un éditeur de texte, etc).

== Fonctionnement du système d'exploitation ==

Ici nous parlons de Debian GNU/Linux sur architecture x86 et x86-64bits, mais c'est applicable à l'énorme majorité des systèmes d'exploitation qu'ils soient basés sur Linux ou non. Certains logiciels cité peuvent changer entre les versions de Debian (et bien sûr sur d'autres systèmes d'exploitation). Comme très souvent pour expliquer comment tout cela fonctionne nous allons partir du démarrage de l'ordinateur.

Lorsque vous démarrez votre ordinateur c'est un logiciel qui se trouve dans votre carte mère qui est exécuter en premier. Celui-ci a pour tâche de trouver et d'exécuter le chargeur de démarrage (bootloader) qui se trouve sur un disque dur ou un périphérique de stockage de données (clef usb, dvd, etc).

Le bootloader (généralement grub pour les système d'exploitation libre (bien qu'il en existe d'autres comme lilo ou busybox)) a lui pour mission d'ouvrir une partition (on parle de montage (mount) de partition) et pour y trouver le noyau du système d'exploitation (linux dans notre exemple), le copier dans la mémoire vive et l'exécuter en lui passant différents paramètres.

Le noyau lui doit initialisés tous les périphériques (seul un nombre minimal d'entre eux l'on était jusque là). Notamment (sur architecture x86 et 86-64), il doit initialisé le processeur pour que ce dernier active toutes ces options (jusque là toutes les instruction du processeur n'étaient pas accessibles par exemple). Le noyau va ensuite lancer le premier programme : le système d'init (actuellement init system V, mais il s'agit upstart sur ubuntu et de systemd sur fedora).

C'est le système d'init qui doit s'occuper de tout le reste. Il va vérifier l'état des disques dur et monter ceux qui sont dans inscrit dans /etc/fstab, il va configurer le réseau, lancer différents programmes en tâche de fond pour qu'ils s'occupe par exemple de lancer d'autres tâches de manière périodique, de configurer le réseau en dhcp, lancer les différents serveurs (web, ssh, ftp, smtp, etc) et lancer s'il s'agit d'une machine de bureau le gestionnaire de connexion (gdm, kdm, litghdm, etc).


[[Catégorie:Aide]]</text>
      <sha1>c338cuberg5f9lsbbdabvlp9l5ij40t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5262</id>
      <parentid>5256</parentid>
      <timestamp>2013-06-09T16:23:13Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Le noyau linux */</comment>
      <text xml:space="preserve" bytes="4295">Debian est un système d'exploitation basé sur le noyau Linux (en réalité Debian peut être utilisé avec d'autres noyaux) et les outils GNU. On parle de distribution GNU/Linux (souvent simplifié en « distribution linux »).

= Le noyau linux =

== Noyau ==

Le noyau est la partie central d'un système d'exploitation. Il a pour charge de permettre aux autres logiciels d'accéder au matériel et de bien vivre ensemble (il ne faut pas que l'un des logiciel prenne le pas sur tous les autres).

Pour accéder au matériel c'est lui qui contient les pilotes de périphériques. Ceux-ci sont regroupés dans différentes catégories et rendus accessibles aux autres logiciels via une API standardisée si possible (voir POSIX).

Pour permettre à toutes les applications de vivre ensemble, le noyau doit permettre de choisir quelle application doit s'exécuter et pendant combien de temps. Par exemple si vous n'avez qu'un seul processeur mais 2 applications il faut que chacune des 2 accède de manière équitable au processeur (chacune l'utilise pendant 50% du temps). Il faut aussi avoir un certains nombre de sécurité pour empêcher un logiciel de tuer n'importe quel autre logiciel par exemple (imaginez que n'importe quel logiciel puisse tuer l'antivirus par exemple). Ici nous ne faisons qu'effleurer le sujet qui est très vaste et qui est en perpétuelle évolution.

== Linux ==

C'est un noyau qui a été créé au début des années 90 par Linus Torvald. Aujourd'hui Linus est toujours le développeur principal du noyau, mais il est aidé par des milliers de contributeurs qui permettent à celui-ci d'être aussi bien adapté au très gros serveur qu'aux téléphones portables ou à des appareils embarqués encore plus petits (comme des routeurs, des montres, etc). Le site officiel de linux est kernel.org.

= Debian =

Debian est un vieux système d'exploitation qui peu utiliser  le noyau Linux. Il utilise en outre les outils du projet GNU pour compléter le système de base (le bootloader, le système d'init, un shell, les binutils, un éditeur de texte, etc).

== Fonctionnement du système d'exploitation ==

Ici nous parlons de Debian GNU/Linux sur architecture x86 et x86-64bits, mais c'est applicable à l'énorme majorité des systèmes d'exploitation qu'ils soient basés sur Linux ou non. Certains logiciels cité peuvent changer entre les versions de Debian (et bien sûr sur d'autres systèmes d'exploitation). Comme très souvent pour expliquer comment tout cela fonctionne nous allons partir du démarrage de l'ordinateur.

Lorsque vous démarrez votre ordinateur c'est un logiciel qui se trouve dans votre carte mère qui est exécuter en premier. Celui-ci a pour tâche de trouver et d'exécuter le chargeur de démarrage (bootloader) qui se trouve sur un disque dur ou un périphérique de stockage de données (clef usb, dvd, etc).

Le bootloader (généralement grub pour les système d'exploitation libre (bien qu'il en existe d'autres comme lilo ou busybox)) a lui pour mission d'ouvrir une partition (on parle de montage (mount) de partition) et pour y trouver le noyau du système d'exploitation (linux dans notre exemple), le copier dans la mémoire vive et l'exécuter en lui passant différents paramètres.

Le noyau lui doit initialisés tous les périphériques (seul un nombre minimal d'entre eux l'on était jusque là). Notamment (sur architecture x86 et 86-64), il doit initialisé le processeur pour que ce dernier active toutes ces options (jusque là toutes les instruction du processeur n'étaient pas accessibles par exemple). Le noyau va ensuite lancer le premier programme : le système d'init (actuellement init system V, mais il s'agit upstart sur ubuntu et de systemd sur fedora).

C'est le système d'init qui doit s'occuper de tout le reste. Il va vérifier l'état des disques dur et monter ceux qui sont dans inscrit dans /etc/fstab, il va configurer le réseau, lancer différents programmes en tâche de fond pour qu'ils s'occupe par exemple de lancer d'autres tâches de manière périodique, de configurer le réseau en dhcp, lancer les différents serveurs (web, ssh, ftp, smtp, etc) et lancer s'il s'agit d'une machine de bureau le gestionnaire de connexion (gdm, kdm, litghdm, etc).


[[Catégorie:Aide]]</text>
      <sha1>h588a6v83850j4tgqnbwo0jk975aqgk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5263</id>
      <parentid>5262</parentid>
      <timestamp>2013-06-09T16:28:27Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Debian */</comment>
      <text xml:space="preserve" bytes="4289">Debian est un système d'exploitation basé sur le noyau Linux (en réalité Debian peut être utilisé avec d'autres noyaux) et les outils GNU. On parle de distribution GNU/Linux (souvent simplifié en « distribution linux »).

= Le noyau linux =

== Noyau ==

Le noyau est la partie central d'un système d'exploitation. Il a pour charge de permettre aux autres logiciels d'accéder au matériel et de bien vivre ensemble (il ne faut pas que l'un des logiciel prenne le pas sur tous les autres).

Pour accéder au matériel c'est lui qui contient les pilotes de périphériques. Ceux-ci sont regroupés dans différentes catégories et rendus accessibles aux autres logiciels via une API standardisée si possible (voir POSIX).

Pour permettre à toutes les applications de vivre ensemble, le noyau doit permettre de choisir quelle application doit s'exécuter et pendant combien de temps. Par exemple si vous n'avez qu'un seul processeur mais 2 applications il faut que chacune des 2 accède de manière équitable au processeur (chacune l'utilise pendant 50% du temps). Il faut aussi avoir un certains nombre de sécurité pour empêcher un logiciel de tuer n'importe quel autre logiciel par exemple (imaginez que n'importe quel logiciel puisse tuer l'antivirus par exemple). Ici nous ne faisons qu'effleurer le sujet qui est très vaste et qui est en perpétuelle évolution.

== Linux ==

C'est un noyau qui a été créé au début des années 90 par Linus Torvald. Aujourd'hui Linus est toujours le développeur principal du noyau, mais il est aidé par des milliers de contributeurs qui permettent à celui-ci d'être aussi bien adapté au très gros serveur qu'aux téléphones portables ou à des appareils embarqués encore plus petits (comme des routeurs, des montres, etc). Le site officiel de linux est kernel.org.

= Debian =

Debian est un vieux système d'exploitation qui peut utiliser le noyau Linux. Il utilise en outre les outils du projet GNU pour compléter le système de base (le bootloader, le système d'init, un shell, les binutils, un éditeur de texte, etc).

== Fonctionnement du système d'exploitation ==

Ici nous parlons de Debian GNU/Linux sur architecture x86 et x86-64bits, mais c'est applicable à l'énorme majorité des systèmes d'exploitation qu'ils soient basés sur Linux ou non. Certains logiciels cités peuvent changer entre les versions de Debian (et bien sûr d'autres systèmes d'exploitation). Comme très souvent pour expliquer comment tout cela fonctionne nous allons partir du démarrage de l'ordinateur.

Lorsque vous démarrez votre ordinateur c'est un logiciel qui se trouve dans votre carte mère qui est exécuté en premier. Celui-ci a pour tâche de trouver et d'exécuter le chargeur de démarrage (bootloader) qui se trouve sur un disque dur ou un périphérique de stockage de données (clef usb, dvd, etc).

Le bootloader (généralement grub pour les système d'exploitation libre (bien qu'il en existe d'autres comme lilo ou busybox)) a lui pour mission d'ouvrir une partition (on parle de montage (mount) de partition) et pour y trouver le noyau du système d'exploitation (linux dans notre exemple), le copier dans la mémoire vive et l'exécuter en lui passant différents paramètres.

Le noyau lui doit initialiser tous les périphériques (seul un nombre minimal d'entre eux l'ont été jusque là). Notamment (sur architecture x86 et 86-64), il doit initialiser le processeur pour que ce dernier active toutes ses options (jusque là toutes les instruction du processeur n'étaient pas accessibles par exemple). Le noyau va ensuite lancer le premier programme : le système d'init (actuellement init system V, mais il s'agit upstart sur ubuntu et de systemd sur fedora).

C'est le système d'init qui doit s'occuper de tout le reste. Il va vérifier l'état des disques dur et monter ceux qui sont inscrits dans /etc/fstab, il va configurer le réseau, lancer différents programmes en tâche de fond pour qu'ils s'occupent par exemple de lancer d'autres tâches de manière périodique, de configurer le réseau en dhcp, lancer les différents serveurs (web, ssh, ftp, smtp, etc) et lancer s'il s'agit d'une machine de bureau du gestionnaire de connexion (gdm, kdm, litghdm, etc).


[[Catégorie:Aide]]</text>
      <sha1>h93v5tna01r5nid1kj6z8epcjy8f6fv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5267</id>
      <parentid>5263</parentid>
      <timestamp>2013-06-09T17:14:28Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <minor/>
      <comment>/* Noyau  */</comment>
      <text xml:space="preserve" bytes="4254">Debian est un système d'exploitation basé sur le noyau Linux (en réalité Debian peut être utilisé avec d'autres noyaux) et les outils GNU. On parle de distribution GNU/Linux (souvent simplifié en « distribution linux »).

= Le noyau linux =

== Noyau ==

Le noyau est la partie centrale d'un système d'exploitation. Il a pour charge de permettre aux autres logiciels d'accéder au matériel et de bien vivre ensemble (il ne faut pas que l'un des logiciels prenne le pas sur tous les autres).

Pour accéder au matériel c'est lui qui contient les pilotes de périphériques. Ceux-là sont regroupés dans différentes catégories et rendus accessibles aux autres logiciels via une API, standardisée si possible (voir POSIX).

Pour permettre à toutes les applications de vivre ensemble, le noyau doit permettre de choisir laquelle doit s'exécuter et pendant combien de temps. Par exemple si vous n'avez qu'un seul processeur mais 2 applications il faut que chacune des 2 accède de manière équitable au processeur (chacune l'utilise pendant 50% du temps). Il faut aussi avoir un certains nombre de sécurités pour empêcher un logiciel d'en tuer un autre (imaginez que n'importe quel logiciel puisse tuer l'antivirus, par exemple). Ici nous ne faisons qu'effleurer le sujet qui est très vaste et qui est en perpétuelle évolution.

== Linux ==

C'est un noyau qui a été créé au début des années 90 par Linus Torvald. Aujourd'hui Linus est toujours le développeur principal du noyau, mais il est aidé par des milliers de contributeurs qui permettent à celui-ci d'être aussi bien adapté au très gros serveur qu'aux téléphones portables ou à des appareils embarqués encore plus petits (comme des routeurs, des montres, etc). Le site officiel de linux est kernel.org.

= Debian =

Debian est un vieux système d'exploitation qui peut utiliser le noyau Linux. Il utilise en outre les outils du projet GNU pour compléter le système de base (le bootloader, le système d'init, un shell, les binutils, un éditeur de texte, etc).

== Fonctionnement du système d'exploitation ==

Ici nous parlons de Debian GNU/Linux sur architecture x86 et x86-64bits, mais c'est applicable à l'énorme majorité des systèmes d'exploitation qu'ils soient basés sur Linux ou non. Certains logiciels cités peuvent changer entre les versions de Debian (et bien sûr d'autres systèmes d'exploitation). Comme très souvent pour expliquer comment tout cela fonctionne nous allons partir du démarrage de l'ordinateur.

Lorsque vous démarrez votre ordinateur c'est un logiciel qui se trouve dans votre carte mère qui est exécuté en premier. Celui-ci a pour tâche de trouver et d'exécuter le chargeur de démarrage (bootloader) qui se trouve sur un disque dur ou un périphérique de stockage de données (clef usb, dvd, etc).

Le bootloader (généralement grub pour les système d'exploitation libre (bien qu'il en existe d'autres comme lilo ou busybox)) a lui pour mission d'ouvrir une partition (on parle de montage (mount) de partition) et pour y trouver le noyau du système d'exploitation (linux dans notre exemple), le copier dans la mémoire vive et l'exécuter en lui passant différents paramètres.

Le noyau lui doit initialiser tous les périphériques (seul un nombre minimal d'entre eux l'ont été jusque là). Notamment (sur architecture x86 et 86-64), il doit initialiser le processeur pour que ce dernier active toutes ses options (jusque là toutes les instruction du processeur n'étaient pas accessibles par exemple). Le noyau va ensuite lancer le premier programme : le système d'init (actuellement init system V, mais il s'agit upstart sur ubuntu et de systemd sur fedora).

C'est le système d'init qui doit s'occuper de tout le reste. Il va vérifier l'état des disques dur et monter ceux qui sont inscrits dans /etc/fstab, il va configurer le réseau, lancer différents programmes en tâche de fond pour qu'ils s'occupent par exemple de lancer d'autres tâches de manière périodique, de configurer le réseau en dhcp, lancer les différents serveurs (web, ssh, ftp, smtp, etc) et lancer s'il s'agit d'une machine de bureau du gestionnaire de connexion (gdm, kdm, litghdm, etc).


[[Catégorie:Aide]]</text>
      <sha1>fv1n9m38axentle3vkp75jstrcgshsw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5282</id>
      <parentid>5267</parentid>
      <timestamp>2013-06-11T07:33:56Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>Ajout de lien dans une section « Voir aussi »</comment>
      <text xml:space="preserve" bytes="4462">Debian est un système d'exploitation basé sur le noyau Linux (en réalité Debian peut être utilisé avec d'autres noyaux) et les outils GNU. On parle de distribution GNU/Linux (souvent simplifié en « distribution linux »).

= Le noyau linux =

== Noyau ==

Le noyau est la partie centrale d'un système d'exploitation. Il a pour charge de permettre aux autres logiciels d'accéder au matériel et de bien vivre ensemble (il ne faut pas que l'un des logiciels prenne le pas sur tous les autres).

Pour accéder au matériel c'est lui qui contient les pilotes de périphériques. Ceux-là sont regroupés dans différentes catégories et rendus accessibles aux autres logiciels via une API, standardisée si possible (voir POSIX).

Pour permettre à toutes les applications de vivre ensemble, le noyau doit permettre de choisir laquelle doit s'exécuter et pendant combien de temps. Par exemple si vous n'avez qu'un seul processeur mais 2 applications il faut que chacune des 2 accède de manière équitable au processeur (chacune l'utilise pendant 50% du temps). Il faut aussi avoir un certains nombre de sécurités pour empêcher un logiciel d'en tuer un autre (imaginez que n'importe quel logiciel puisse tuer l'antivirus, par exemple). Ici nous ne faisons qu'effleurer le sujet qui est très vaste et qui est en perpétuelle évolution.

== Linux ==

C'est un noyau qui a été créé au début des années 90 par Linus Torvald. Aujourd'hui Linus est toujours le développeur principal du noyau, mais il est aidé par des milliers de contributeurs qui permettent à celui-ci d'être aussi bien adapté au très gros serveur qu'aux téléphones portables ou à des appareils embarqués encore plus petits (comme des routeurs, des montres, etc). Le site officiel de linux est kernel.org.

= Debian =

Debian est un vieux système d'exploitation qui peut utiliser le noyau Linux. Il utilise en outre les outils du projet GNU pour compléter le système de base (le bootloader, le système d'init, un shell, les binutils, un éditeur de texte, etc).

== Fonctionnement du système d'exploitation ==

Ici nous parlons de Debian GNU/Linux sur architecture x86 et x86-64bits, mais c'est applicable à l'énorme majorité des systèmes d'exploitation qu'ils soient basés sur Linux ou non. Certains logiciels cités peuvent changer entre les versions de Debian (et bien sûr d'autres systèmes d'exploitation). Comme très souvent pour expliquer comment tout cela fonctionne nous allons partir du démarrage de l'ordinateur.

Lorsque vous démarrez votre ordinateur c'est un logiciel qui se trouve dans votre carte mère qui est exécuté en premier. Celui-ci a pour tâche de trouver et d'exécuter le chargeur de démarrage (bootloader) qui se trouve sur un disque dur ou un périphérique de stockage de données (clef usb, dvd, etc).

Le bootloader (généralement grub pour les système d'exploitation libre (bien qu'il en existe d'autres comme lilo ou busybox)) a lui pour mission d'ouvrir une partition (on parle de montage (mount) de partition) et pour y trouver le noyau du système d'exploitation (linux dans notre exemple), le copier dans la mémoire vive et l'exécuter en lui passant différents paramètres.

Le noyau lui doit initialiser tous les périphériques (seul un nombre minimal d'entre eux l'ont été jusque là). Notamment (sur architecture x86 et 86-64), il doit initialiser le processeur pour que ce dernier active toutes ses options (jusque là toutes les instruction du processeur n'étaient pas accessibles par exemple). Le noyau va ensuite lancer le premier programme : le système d'init (actuellement init system V, mais il s'agit upstart sur ubuntu et de systemd sur fedora).

C'est le système d'init qui doit s'occuper de tout le reste. Il va vérifier l'état des disques dur et monter ceux qui sont inscrits dans /etc/fstab, il va configurer le réseau, lancer différents programmes en tâche de fond pour qu'ils s'occupent par exemple de lancer d'autres tâches de manière périodique, de configurer le réseau en dhcp, lancer les différents serveurs (web, ssh, ftp, smtp, etc) et lancer s'il s'agit d'une machine de bureau du gestionnaire de connexion (gdm, kdm, litghdm, etc).

= Voir aussi =

* Qu'est ce que Debian ? http://www.debian.org/intro/about#what
* Debian sur Wikipedia : https://fr.wikipedia.org/wiki/Debian
* Linux sur wikipedia : https://fr.wikipedia.org/wiki/Linux

[[Catégorie:Aide]]</text>
      <sha1>opornmtufsnf933otrp2091cj02uhnm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5283</id>
      <parentid>5282</parentid>
      <timestamp>2013-06-11T07:36:49Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>/* Debian */</comment>
      <text xml:space="preserve" bytes="4509">Debian est un système d'exploitation basé sur le noyau Linux (en réalité Debian peut être utilisé avec d'autres noyaux) et les outils GNU. On parle de distribution GNU/Linux (souvent simplifié en « distribution linux »).

= Le noyau linux =

== Noyau ==

Le noyau est la partie centrale d'un système d'exploitation. Il a pour charge de permettre aux autres logiciels d'accéder au matériel et de bien vivre ensemble (il ne faut pas que l'un des logiciels prenne le pas sur tous les autres).

Pour accéder au matériel c'est lui qui contient les pilotes de périphériques. Ceux-là sont regroupés dans différentes catégories et rendus accessibles aux autres logiciels via une API, standardisée si possible (voir POSIX).

Pour permettre à toutes les applications de vivre ensemble, le noyau doit permettre de choisir laquelle doit s'exécuter et pendant combien de temps. Par exemple si vous n'avez qu'un seul processeur mais 2 applications il faut que chacune des 2 accède de manière équitable au processeur (chacune l'utilise pendant 50% du temps). Il faut aussi avoir un certains nombre de sécurités pour empêcher un logiciel d'en tuer un autre (imaginez que n'importe quel logiciel puisse tuer l'antivirus, par exemple). Ici nous ne faisons qu'effleurer le sujet qui est très vaste et qui est en perpétuelle évolution.

== Linux ==

C'est un noyau qui a été créé au début des années 90 par Linus Torvald. Aujourd'hui Linus est toujours le développeur principal du noyau, mais il est aidé par des milliers de contributeurs qui permettent à celui-ci d'être aussi bien adapté au très gros serveur qu'aux téléphones portables ou à des appareils embarqués encore plus petits (comme des routeurs, des montres, etc). Le site officiel de linux est kernel.org.

= Debian =

Debian est un vieux système d'exploitation qui peut utiliser le noyau Linux. Il utilise en outre les outils du [http://www.gnu.org/gnu/thegnuproject.fr.html projet GNU] pour compléter le système de base (le bootloader, le système d'init, un shell, les binutils, un éditeur de texte, etc).

== Fonctionnement du système d'exploitation ==

Ici nous parlons de Debian GNU/Linux sur architecture x86 et x86-64bits, mais c'est applicable à l'énorme majorité des systèmes d'exploitation qu'ils soient basés sur Linux ou non. Certains logiciels cités peuvent changer entre les versions de Debian (et bien sûr d'autres systèmes d'exploitation). Comme très souvent pour expliquer comment tout cela fonctionne nous allons partir du démarrage de l'ordinateur.

Lorsque vous démarrez votre ordinateur c'est un logiciel qui se trouve dans votre carte mère qui est exécuté en premier. Celui-ci a pour tâche de trouver et d'exécuter le chargeur de démarrage (bootloader) qui se trouve sur un disque dur ou un périphérique de stockage de données (clef usb, dvd, etc).

Le bootloader (généralement grub pour les système d'exploitation libre (bien qu'il en existe d'autres comme lilo ou busybox)) a lui pour mission d'ouvrir une partition (on parle de montage (mount) de partition) et pour y trouver le noyau du système d'exploitation (linux dans notre exemple), le copier dans la mémoire vive et l'exécuter en lui passant différents paramètres.

Le noyau lui doit initialiser tous les périphériques (seul un nombre minimal d'entre eux l'ont été jusque là). Notamment (sur architecture x86 et 86-64), il doit initialiser le processeur pour que ce dernier active toutes ses options (jusque là toutes les instruction du processeur n'étaient pas accessibles par exemple). Le noyau va ensuite lancer le premier programme : le système d'init (actuellement init system V, mais il s'agit upstart sur ubuntu et de systemd sur fedora).

C'est le système d'init qui doit s'occuper de tout le reste. Il va vérifier l'état des disques dur et monter ceux qui sont inscrits dans /etc/fstab, il va configurer le réseau, lancer différents programmes en tâche de fond pour qu'ils s'occupent par exemple de lancer d'autres tâches de manière périodique, de configurer le réseau en dhcp, lancer les différents serveurs (web, ssh, ftp, smtp, etc) et lancer s'il s'agit d'une machine de bureau du gestionnaire de connexion (gdm, kdm, litghdm, etc).

= Voir aussi =

* Qu'est ce que Debian ? http://www.debian.org/intro/about#what
* Debian sur Wikipedia : https://fr.wikipedia.org/wiki/Debian
* Linux sur wikipedia : https://fr.wikipedia.org/wiki/Linux

[[Catégorie:Aide]]</text>
      <sha1>8azu97zz2tn5fu3n9rmmwt49army6cc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5284</id>
      <parentid>5283</parentid>
      <timestamp>2013-06-11T07:38:16Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>/* Voir aussi */</comment>
      <text xml:space="preserve" bytes="4528">Debian est un système d'exploitation basé sur le noyau Linux (en réalité Debian peut être utilisé avec d'autres noyaux) et les outils GNU. On parle de distribution GNU/Linux (souvent simplifié en « distribution linux »).

= Le noyau linux =

== Noyau ==

Le noyau est la partie centrale d'un système d'exploitation. Il a pour charge de permettre aux autres logiciels d'accéder au matériel et de bien vivre ensemble (il ne faut pas que l'un des logiciels prenne le pas sur tous les autres).

Pour accéder au matériel c'est lui qui contient les pilotes de périphériques. Ceux-là sont regroupés dans différentes catégories et rendus accessibles aux autres logiciels via une API, standardisée si possible (voir POSIX).

Pour permettre à toutes les applications de vivre ensemble, le noyau doit permettre de choisir laquelle doit s'exécuter et pendant combien de temps. Par exemple si vous n'avez qu'un seul processeur mais 2 applications il faut que chacune des 2 accède de manière équitable au processeur (chacune l'utilise pendant 50% du temps). Il faut aussi avoir un certains nombre de sécurités pour empêcher un logiciel d'en tuer un autre (imaginez que n'importe quel logiciel puisse tuer l'antivirus, par exemple). Ici nous ne faisons qu'effleurer le sujet qui est très vaste et qui est en perpétuelle évolution.

== Linux ==

C'est un noyau qui a été créé au début des années 90 par Linus Torvald. Aujourd'hui Linus est toujours le développeur principal du noyau, mais il est aidé par des milliers de contributeurs qui permettent à celui-ci d'être aussi bien adapté au très gros serveur qu'aux téléphones portables ou à des appareils embarqués encore plus petits (comme des routeurs, des montres, etc). Le site officiel de linux est kernel.org.

= Debian =

Debian est un vieux système d'exploitation qui peut utiliser le noyau Linux. Il utilise en outre les outils du [http://www.gnu.org/gnu/thegnuproject.fr.html projet GNU] pour compléter le système de base (le bootloader, le système d'init, un shell, les binutils, un éditeur de texte, etc).

== Fonctionnement du système d'exploitation ==

Ici nous parlons de Debian GNU/Linux sur architecture x86 et x86-64bits, mais c'est applicable à l'énorme majorité des systèmes d'exploitation qu'ils soient basés sur Linux ou non. Certains logiciels cités peuvent changer entre les versions de Debian (et bien sûr d'autres systèmes d'exploitation). Comme très souvent pour expliquer comment tout cela fonctionne nous allons partir du démarrage de l'ordinateur.

Lorsque vous démarrez votre ordinateur c'est un logiciel qui se trouve dans votre carte mère qui est exécuté en premier. Celui-ci a pour tâche de trouver et d'exécuter le chargeur de démarrage (bootloader) qui se trouve sur un disque dur ou un périphérique de stockage de données (clef usb, dvd, etc).

Le bootloader (généralement grub pour les système d'exploitation libre (bien qu'il en existe d'autres comme lilo ou busybox)) a lui pour mission d'ouvrir une partition (on parle de montage (mount) de partition) et pour y trouver le noyau du système d'exploitation (linux dans notre exemple), le copier dans la mémoire vive et l'exécuter en lui passant différents paramètres.

Le noyau lui doit initialiser tous les périphériques (seul un nombre minimal d'entre eux l'ont été jusque là). Notamment (sur architecture x86 et 86-64), il doit initialiser le processeur pour que ce dernier active toutes ses options (jusque là toutes les instruction du processeur n'étaient pas accessibles par exemple). Le noyau va ensuite lancer le premier programme : le système d'init (actuellement init system V, mais il s'agit upstart sur ubuntu et de systemd sur fedora).

C'est le système d'init qui doit s'occuper de tout le reste. Il va vérifier l'état des disques dur et monter ceux qui sont inscrits dans /etc/fstab, il va configurer le réseau, lancer différents programmes en tâche de fond pour qu'ils s'occupent par exemple de lancer d'autres tâches de manière périodique, de configurer le réseau en dhcp, lancer les différents serveurs (web, ssh, ftp, smtp, etc) et lancer s'il s'agit d'une machine de bureau du gestionnaire de connexion (gdm, kdm, litghdm, etc).

= Voir aussi =

* {{fr}} [http://www.debian.org/intro/about#what Qu'est ce que Debian ?]
* {{fr}} [https://fr.wikipedia.org/wiki/Debian Debian sur Wikipedia]
* {{fr}} [https://fr.wikipedia.org/wiki/Linux Linux sur wikipedia]

[[Catégorie:Aide]]</text>
      <sha1>67hz54x5l9rle570d9tzmni3cd77xkc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Diagnostiquer un problème alsa</title>
    <ns>0</ns>
    <id>514</id>
    <revision>
      <id>2042</id>
      <timestamp>2010-09-06T04:12:46Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « '''Diagnostiquer un problème ALSA'''  Voici quelques commandes et informations qui devraient vous permettre de diagnostiquer (et de régler) vos problèmes de son :  S'assur... »</comment>
      <text xml:space="preserve" bytes="2440">'''Diagnostiquer un problème ALSA'''

Voici quelques commandes et informations qui devraient vous permettre de diagnostiquer (et de régler) vos problèmes de son :

S'assurer que les packages suivants sont bien installés :

 # aptitude install alsa-base alsa-utils alsa-tools libasound2 

S'assurer ensuite que l'utilisateur appartient bien au groupe audio, soit le gid=29 Pensez ensuite à vous déconnecter et à vous reconnecter

 # adduser votre_utiliateur audio 

Lancer alsaconf qui va tenter une reconnaissance automatique de votre carte son :

 # alsaconf

va tenter une reconnaissance automatique de la carte son

Sur Squeeze et Sid, utilisez  :

 # alsactl init 

Pensez à enregistrer la configuration trouvé automatiquement par alsaconf

 # alsactl store 

Connaitre le matériel que ALSA a trouvé sur la machine:

 $ cat /proc/asound/cards $ aplay -l $ arecord -l 

Ces commandes listent tous les matériels qu'ALSA peut gérer sur la machine. La carte son notament doit y figurer absolument.
Pour vérifier le volume attribuée à vos sorties audio, qui par defaut peut parfois être à zéro...

 $ amixer 
et
 $ alsamixer 

Deux procedures permettent de tester le bon fonctionnement de la couche alsa:

 $ speaker-test -c2 -Dplug:front -twav

 $ aplay -D hw:0,0 test.wav 

Avec la première commande, ALSA génère un son de test très synthetique, vous devez absolument pouvoir l'entendre.
Avec la seconde, (test.wav comme fichier son de votre choix), nous testons la lecture toute simple d'un fichier son sur le périphérique qu'alsa utilise par défaut.

Tout message d'erreur lors de toutes les commandes ci dessus peuvent etre indicatives du problème à regler. si tout se passe bien, c'est que le problème est du à une couche au-dessus qui exploite alsa.

Si vous n'arrivez à rien, une purge et réinstallation peut s'avérer salutaire :
 # apt-get install alsa-base alsa-utils --reinstall --purge 

Quelques sites qui peuvent permettrent de résoudre certains problèmes alsa courrant:

https://bugtrack.alsa-project.org/wiki/wikka.php?wakka=TroubleShooting

http://www.commentcamarche.net/faq/1547-linux-problemes-de-son

http://alsa.opensrc.org/MultipleCards

http://alsa.opensrc.org/index.php/MultipleUSBAudioDevices

et pour les plus courageux, le wiki alsa, en anglais:

http://alsa.opensrc.org/index.php/Main_Page

Source : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=8624&amp;start=0 Le T&amp;A original]</text>
      <sha1>eqixe7ekwlfpate74mo4n1ewmbri2l4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2092</id>
      <parentid>2042</parentid>
      <timestamp>2010-09-15T17:01:18Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2473">'''Diagnostiquer un problème ALSA'''

Voici quelques commandes et informations qui devraient vous permettre de diagnostiquer (et de régler) vos problèmes de son :

S'assurer que les packages suivants sont bien installés :

 # aptitude install alsa-base alsa-utils alsa-tools libasound2 

S'assurer ensuite que l'utilisateur appartient bien au groupe audio, soit le gid=29 Pensez ensuite à vous déconnecter et à vous reconnecter

 # adduser votre_utiliateur audio 

Lancer alsaconf qui va tenter une reconnaissance automatique de votre carte son :

 # alsaconf

va tenter une reconnaissance automatique de la carte son

Sur Squeeze et Sid, utilisez  :

 # alsactl init 

Pensez à enregistrer la configuration trouvé automatiquement par alsaconf

 # alsactl store 

Connaitre le matériel que ALSA a trouvé sur la machine:

 $ cat /proc/asound/cards $ aplay -l $ arecord -l 

Ces commandes listent tous les matériels qu'ALSA peut gérer sur la machine. La carte son notament doit y figurer absolument.
Pour vérifier le volume attribuée à vos sorties audio, qui par defaut peut parfois être à zéro...

 $ amixer 
et
 $ alsamixer 

Deux procedures permettent de tester le bon fonctionnement de la couche alsa:

 $ speaker-test -c2 -Dplug:front -twav

 $ aplay -D hw:0,0 test.wav 

Avec la première commande, ALSA génère un son de test très synthetique, vous devez absolument pouvoir l'entendre.
Avec la seconde, (test.wav comme fichier son de votre choix), nous testons la lecture toute simple d'un fichier son sur le périphérique qu'alsa utilise par défaut.

Tout message d'erreur lors de toutes les commandes ci dessus peuvent etre indicatives du problème à regler. si tout se passe bien, c'est que le problème est du à une couche au-dessus qui exploite alsa.

Si vous n'arrivez à rien, une purge et réinstallation peut s'avérer salutaire :
 # apt-get install alsa-base alsa-utils --reinstall --purge 

Quelques sites qui peuvent permettrent de résoudre certains problèmes alsa courrant:

https://bugtrack.alsa-project.org/wiki/wikka.php?wakka=TroubleShooting

http://www.commentcamarche.net/faq/1547-linux-problemes-de-son

http://alsa.opensrc.org/MultipleCards

http://alsa.opensrc.org/index.php/MultipleUSBAudioDevices

et pour les plus courageux, le wiki alsa, en anglais:

http://alsa.opensrc.org/index.php/Main_Page

Source : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=8624&amp;start=0 Le T&amp;A original]

[[Catégorie:Controleur_audio]]</text>
      <sha1>c77rfqj7fe3a3a5fkkc5bl32as9cjuf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2750</id>
      <parentid>2092</parentid>
      <timestamp>2011-03-21T16:46:47Z</timestamp>
      <contributor>
        <username>Tinnitus</username>
        <id>105</id>
      </contributor>
      <text xml:space="preserve" bytes="2565">'''Diagnostiquer un problème ALSA'''

Voici quelques commandes et informations qui devraient vous permettre de diagnostiquer (et de régler) vos problèmes de son :

S'assurer que les packages suivants sont bien installés :

 # aptitude install alsa-base alsa-utils alsa-tools libasound2 

S'assurer ensuite que l'utilisateur appartient bien au groupe audio, soit le gid=29. Pensez ensuite à vous déconnecter et à vous reconnecter.

 # adduser votre_utilisateur audio 

Lancer alsaconf qui va tenter une reconnaissance automatique de votre carte son :

 # alsaconf

va tenter une reconnaissance automatique de la carte son.

Sur Squeeze et Sid, utilisez  :

 # alsactl init 

Pensez à enregistrer la configuration trouvée automatiquement par alsaconf:

 # alsactl store 

Connaître le matériel que ALSA a trouvé sur la machine:

 $ cat /proc/asound/cards $ aplay -l $ arecord -l 

Ces commandes listent tous les matériels qu'ALSA peut gérer sur la machine. La carte son notamment doit y figurer absolument.
Pour vérifier le volume attribué à vos sorties audio, qui par défaut peut parfois être à zéro...

 $ amixer 
et
 $ alsamixer 

Deux procédures permettent de tester le bon fonctionnement de la couche alsa:

 $ speaker-test -c2 -Dplug:front -t wav

 $ aplay -D hw:0,0 test.wav 

Avec la première commande, ALSA génère un son de test très synthétique, vous devez absolument pouvoir l'entendre.
Avec la seconde, (test.wav comme fichier son de votre choix), nous testons la lecture toute simple d'un fichier son sur le périphérique que alsa utilise par défaut.
N.B.: dans Maverick test.wav existe à /usr/share/sounds/speech-dispatcher/test.wav

Tout message d'erreur lors de toutes les commandes ci-dessus peut être indicatif du problème à régler. Si tout se passe bien, c'est que le problème est dû à une couche au-dessus qui exploite alsa.

Si vous n'arrivez à rien, une purge et réinstallation peut s'avérer salutaire :
 # apt-get install alsa-base alsa-utils --reinstall --purge 

Quelques sites qui peuvent permettre de résoudre certains problèmes alsa courants:

https://bugtrack.alsa-project.org/wiki/wikka.php?wakka=TroubleShooting

http://www.commentcamarche.net/faq/1547-linux-problemes-de-son

http://alsa.opensrc.org/MultipleCards

http://alsa.opensrc.org/index.php/MultipleUSBAudioDevices

et pour les plus courageux, le wiki alsa, en anglais:

http://alsa.opensrc.org/index.php/Main_Page

Source : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=8624&amp;start=0 Le T&amp;A original]

[[Catégorie:Controleur_audio]]</text>
      <sha1>6cjpv146ha3h9buxhv0sw6s4ek3v0yp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3666</id>
      <parentid>2750</parentid>
      <timestamp>2012-01-01T06:42:44Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2569">'''Diagnostiquer un problème ALSA'''

Voici quelques commandes et informations qui devraient vous permettre de diagnostiquer (et de régler) vos problèmes de son :

S'assurer que les packages suivants sont bien installés :

 # aptitude install alsa-base alsa-utils alsa-tools libasound2 

S'assurer ensuite que l'utilisateur appartient bien au groupe audio, soit le gid=29. Pensez ensuite à vous déconnecter et à vous reconnecter.

 # adduser votre_utilisateur audio 

Lancer alsaconf qui va tenter une reconnaissance automatique de votre carte son :

 # alsaconf

va tenter une reconnaissance automatique de la carte son.

Sur Squeeze et Sid, utilisez  :

 # alsactl init 

Pensez à enregistrer la configuration trouvée automatiquement par alsaconf:

 # alsactl store 

Connaître le matériel que ALSA a trouvé sur la machine:

 $ cat /proc/asound/cards

 $ aplay -l

 $ arecord -l 

Ces commandes listent tous les matériels qu'ALSA peut gérer sur la machine. La carte son notamment doit y figurer absolument.
Pour vérifier le volume attribué à vos sorties audio, qui par défaut peut parfois être à zéro...

 $ amixer 
et
 $ alsamixer 

Deux procédures permettent de tester le bon fonctionnement de la couche alsa:

 $ speaker-test -c2 -Dplug:front -t wav

 $ aplay -D hw:0,0 test.wav 

Avec la première commande, ALSA génère un son de test très synthétique, vous devez absolument pouvoir l'entendre.
Avec la seconde, (test.wav comme fichier son de votre choix), nous testons la lecture toute simple d'un fichier son sur le périphérique que alsa utilise par défaut.
N.B.: dans Maverick test.wav existe à /usr/share/sounds/speech-dispatcher/test.wav

Tout message d'erreur lors de toutes les commandes ci-dessus peut être indicatif du problème à régler. Si tout se passe bien, c'est que le problème est dû à une couche au-dessus qui exploite alsa.

Si vous n'arrivez à rien, une purge et réinstallation peut s'avérer salutaire :
 # apt-get install alsa-base alsa-utils --reinstall --purge 

Quelques sites qui peuvent permettre de résoudre certains problèmes alsa courants:

https://bugtrack.alsa-project.org/wiki/wikka.php?wakka=TroubleShooting

http://www.commentcamarche.net/faq/1547-linux-problemes-de-son

http://alsa.opensrc.org/MultipleCards

http://alsa.opensrc.org/index.php/MultipleUSBAudioDevices

et pour les plus courageux, le wiki alsa, en anglais:

http://alsa.opensrc.org/index.php/Main_Page

Source : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=8624&amp;start=0 Le T&amp;A original]

[[Catégorie:Controleur_audio]]</text>
      <sha1>g0c1ipujppy2bhzrdz4bqvpbt55y7y0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion aide:Accueil</title>
    <ns>13</ns>
    <id>128</id>
    <revision>
      <id>603</id>
      <timestamp>2010-01-31T17:05:14Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <comment>Page créée avec « Encore une fois, ce n'est pas clair. Comment faire pour créer une catégorie qui n'existe pas encore ??? »</comment>
      <text xml:space="preserve" bytes="105">Encore une fois, ce n'est pas clair.
Comment faire pour créer une catégorie qui n'existe pas encore ???</text>
      <sha1>son4kp8ett5q06xn5n04yz2gm2vt8ij</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>607</id>
      <parentid>603</parentid>
      <timestamp>2010-01-31T17:54:32Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="508">Encore une fois, ce n'est pas clair.
Comment faire pour créer une catégorie qui n'existe pas encore ???
----
Quel râleur ! lol ! La catégorie est automatiquement crée par le simple fait de le nommer en fin de page !
Il sufit par exemple que je mette &lt;nowiki&gt;[[Category:aide sur l'aide]]&lt;/nowiki&gt; quelque part dans la page pour que celle ci soit crée...
[[Category:aide sur l'aide]]
Tu peut vérifier dans la page [[Spécial:Catégories]]
J'enlèverais demain quand tu aura vu...
[[Utilisateur:Lol|Lol]]</text>
      <sha1>i7o9orwydl2nv4b8q185qj9cshse0bs</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>608</id>
      <parentid>607</parentid>
      <timestamp>2010-01-31T17:54:59Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="508">Encore une fois, ce n'est pas clair.
Comment faire pour créer une catégorie qui n'existe pas encore ???
----
Quel râleur ! lol ! La catégorie est automatiquement crée par le simple fait de la nommer en fin de page !
Il sufit par exemple que je mette &lt;nowiki&gt;[[Category:aide sur l'aide]]&lt;/nowiki&gt; quelque part dans la page pour que celle ci soit crée...
[[Category:aide sur l'aide]]
Tu peut vérifier dans la page [[Spécial:Catégories]]
J'enlèverais demain quand tu aura vu...
[[Utilisateur:Lol|Lol]]</text>
      <sha1>3ymt6up6llvsypn8qbox9sd5drb01lp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion catégorie:Commandes</title>
    <ns>15</ns>
    <id>20</id>
    <revision>
      <id>30</id>
      <timestamp>2010-01-21T15:49:06Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « L'avertissement n'est pas un peu &quot;fort&quot; pour une page de catégorie ? ~~~~ »</comment>
      <text xml:space="preserve" bytes="124">L'avertissement n'est pas un peu &quot;fort&quot; pour une page de catégorie ? [[Utilisateur:Lol|Lol]] 21 janvier 2010 à 15:49 (UTC)</text>
      <sha1>1usru743f7stp38trwqivuqnms4gvq2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>504</id>
      <parentid>30</parentid>
      <timestamp>2010-01-29T13:21:38Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <text xml:space="preserve" bytes="383">L'avertissement n'est pas un peu &quot;fort&quot; pour une page de catégorie ? [[Utilisateur:Lol|Lol]] 21 janvier 2010 à 15:49 (UTC)

----
en effet, ce n'est pas dans cette page qu'il faut avertir mais dans les suivantes, tant que le contenu n'a pas été approuvé.
Celà dit, je trouve cette page &quot;primordiale&quot; et elle mérite d'être mise en exergue.
[[Utilisateur:Ricardo|Ricardo]] 
----</text>
      <sha1>hza13xv77yrx0vwoxahxt7uwbkmr0ug</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>506</id>
      <parentid>504</parentid>
      <timestamp>2010-01-29T13:25:23Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="495">L'avertissement n'est pas un peu &quot;fort&quot; pour une page de catégorie ? [[Utilisateur:Lol|Lol]] 21 janvier 2010 à 15:49 (UTC)

----
en effet, ce n'est pas dans cette page qu'il faut avertir mais dans les suivantes, tant que le contenu n'a pas été approuvé.
Celà dit, je trouve cette page &quot;primordiale&quot; et elle mérite d'être mise en exergue.
[[Utilisateur:Ricardo|Ricardo]] 
----
Je retire l'avertissement et vérifie qu'il soit bien dans les pages qui suivent.Merci. [[Utilisateur:Lol|Lol]]</text>
      <sha1>ir1wmxbfknxk5jg2lpgfk7vahbydp7a</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion catégorie:Nvidia</title>
    <ns>15</ns>
    <id>46</id>
    <revision>
      <id>121</id>
      <timestamp>2010-01-22T21:41:35Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <comment>Page créée avec « Stp debianhadic, pense à la syntaxe wiki. ~~~ »</comment>
      <text xml:space="preserve" bytes="70">Stp debianhadic, pense à la syntaxe wiki. [[Utilisateur:L0u!$|L0u!$]]</text>
      <sha1>07y9e865snym4vkmaf3ogeimvmx311f</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion fichier:Debiancube.png</title>
    <ns>7</ns>
    <id>494</id>
    <revision>
      <id>1948</id>
      <timestamp>2010-08-17T12:45:57Z</timestamp>
      <contributor>
        <username>Dunatotatos</username>
        <id>63</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « Attention, dans la catégorie &quot;Gestion des paquets&quot;, la ligne &quot;#editor /etc/apt/sources.list&quot; a un problème : la flèche est décalée vers la gauche. »</comment>
      <text xml:space="preserve" bytes="151">Attention, dans la catégorie &quot;Gestion des paquets&quot;, la ligne &quot;#editor /etc/apt/sources.list&quot; a un problème : la flèche est décalée vers la gauche.</text>
      <sha1>a57wcgcbi9qtgdvzv8znhdvjsdpf8kr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion fichier:IMG 5906.JPG</title>
    <ns>7</ns>
    <id>96</id>
    <revision>
      <id>413</id>
      <timestamp>2010-01-27T11:54:02Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <comment>Page créée avec « Là, au moins, tu es tranquille avec les voisins. &lt;br/&gt; Il n'a pas l'air d'y faire chaud ? ~~~ »</comment>
      <text xml:space="preserve" bytes="122">Là, au moins, tu es tranquille avec les voisins. &lt;br/&gt;
Il n'a pas l'air d'y faire chaud ? [[Utilisateur:Ricardo|Ricardo]]</text>
      <sha1>b0a0uftcegk1ty9zeit37c12xupyt1v</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>414</id>
      <parentid>413</parentid>
      <timestamp>2010-01-27T12:16:24Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="251">Là, au moins, tu es tranquille avec les voisins. &lt;br/&gt;
Il n'a pas l'air d'y faire chaud ? [[Utilisateur:Ricardo|Ricardo]]
----
Très tranquille... La photo est prise en fin de saison froide, il fait frais la nuit, doux la journée. Tout est brulé...</text>
      <sha1>kluws6qkuh84q56nlvtcmdormmncqtz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Agentsteel</title>
    <ns>3</ns>
    <id>1223</id>
    <revision>
      <id>5053</id>
      <timestamp>2013-03-13T12:27:24Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="334">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 13 mars 2013 à 13:27 (CET)</text>
      <sha1>b2w37mw4f3yo2f8imrebbr05dlpg9at</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Alan Picol</title>
    <ns>3</ns>
    <id>1051</id>
    <revision>
      <id>4426</id>
      <timestamp>2012-08-30T14:29:14Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="336">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 30 août 2012 à 16:29 (CEST)</text>
      <sha1>kbmgnsy9xgees7mkl01vikpvpkz422e</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:AnatomicJC</title>
    <ns>3</ns>
    <id>421</id>
    <revision>
      <id>1541</id>
      <timestamp>2010-05-27T17:30:19Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <comment>Page créée avec « Salut,  Il faut tout d'abord configurer le champ '''A''' qui fait le lien entre nom de domaine et l'adresse IP du serveur&amp;nbsp;:  @ IN A 12.34.56.78 smtp IN A 12.34.56.78  O… »</comment>
      <text xml:space="preserve" bytes="270">Salut,

Il faut tout d'abord configurer le champ '''A''' qui fait le lien entre nom de domaine et l'adresse IP du serveur&amp;nbsp;:

@ IN A 12.34.56.78
smtp IN A 12.34.56.78

Où est la commande ? Dans quel fichier ? 
[[Utilisateur:Ggoodluck47|Amicalement, Gerard]]goodluck</text>
      <sha1>3979icckmrqez5t45obnizre2jct8vg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Arpinux</title>
    <ns>3</ns>
    <id>1240</id>
    <revision>
      <id>5088</id>
      <timestamp>2013-04-07T05:02:21Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="335">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 7 avril 2013 à 07:02 (CEST)</text>
      <sha1>tvc3xobq9v3eahkpaq7egstkstpe0rx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Atux</title>
    <ns>3</ns>
    <id>1296</id>
    <revision>
      <id>5431</id>
      <timestamp>2013-11-03T17:47:04Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="343">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 3 novembre 2013 à 18:47 (CET)</text>
      <sha1>eld62eiyje7yvocul0h578ia2wrypw3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:BBT1</title>
    <ns>3</ns>
    <id>67</id>
    <revision>
      <id>282</id>
      <timestamp>2010-01-26T03:35:28Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « Salut, pour ton fichier svg, peux tu faire avec un autre format, j'ai l'impression que ça ne fonctionne pas, et je n'ai pas d'accès SSH au serveur.. ~~~~ ---- »</comment>
      <text xml:space="preserve" bytes="210">Salut, pour ton fichier svg, peux tu faire avec un autre format, j'ai l'impression que ça ne fonctionne pas, et je n'ai pas d'accès SSH au serveur.. [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 03:35 (UTC)
----</text>
      <sha1>ma0whzfdlmv9oc8ln6ik1jgirc8mv2b</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>302</id>
      <parentid>282</parentid>
      <timestamp>2010-01-26T11:33:59Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <text xml:space="preserve" bytes="291">Salut, pour ton fichier svg, peux tu faire avec un autre format, j'ai l'impression que ça ne fonctionne pas, et je n'ai pas d'accès SSH au serveur.. [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 03:35 (UTC)
----
ok je suis dessus

[[Utilisateur:BBT1|BBT1]] 26 janvier 2010 à 11:33 (UTC)
----</text>
      <sha1>1vq3eae7kh4c3jaxm0477qai7lhhp6s</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>303</id>
      <parentid>302</parentid>
      <timestamp>2010-01-26T11:41:58Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="343">Salut, pour ton fichier svg, peux tu faire avec un autre format, j'ai l'impression que ça ne fonctionne pas, et je n'ai pas d'accès SSH au serveur.. [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 03:35 (UTC)
----
ok je suis dessus

[[Utilisateur:BBT1|BBT1]] 26 janvier 2010 à 11:33 (UTC)
----
Merci et encore désolé... [[Utilisateur:Lol|Lol]]</text>
      <sha1>qh21hr2g07z1eh21qyq6htq7zleowvm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Banni</title>
    <ns>3</ns>
    <id>1182</id>
    <revision>
      <id>4848</id>
      <timestamp>2012-12-24T08:54:59Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="339">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 24 décembre 2012 à 09:54 (CET)</text>
      <sha1>890z5icff0bwr4l6vkzgqzyh8hk3u9c</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4851</id>
      <parentid>4848</parentid>
      <timestamp>2012-12-24T09:06:01Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <minor/>
      <comment>WikiSysop a déplacé la page [[Discussion utilisateur:Essai3]] vers [[Discussion utilisateur:Banni]] : Page déplacée automatiquement lors de la fusion de l’utilisateur « [[User:Essai3|Essai3]] » en « [[User:Banni|Banni]] »</comment>
      <text xml:space="preserve" bytes="339">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 24 décembre 2012 à 09:54 (CET)</text>
      <sha1>890z5icff0bwr4l6vkzgqzyh8hk3u9c</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Big 73</title>
    <ns>3</ns>
    <id>1218</id>
    <revision>
      <id>5039</id>
      <timestamp>2013-03-03T07:05:13Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="333">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 3 mars 2013 à 08:05 (CET)</text>
      <sha1>bxkhafr40j0ry4zen0kvg20dzhgk4f4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Bktech</title>
    <ns>3</ns>
    <id>1308</id>
    <revision>
      <id>5529</id>
      <timestamp>2014-01-16T18:04:40Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="343">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 16 janvier 2014 à 19:04 (CET)</text>
      <sha1>r3e7y9dj9oc25q5u3vnxvvjjv9loy2h</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Bobo38</title>
    <ns>3</ns>
    <id>1302</id>
    <revision>
      <id>5475</id>
      <timestamp>2013-12-02T22:28:07Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="344">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 2 décembre 2013 à 23:28 (CET)</text>
      <sha1>d2x9q7g8kv9acy2h4twk664n2vogrrw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Brizou</title>
    <ns>3</ns>
    <id>1245</id>
    <revision>
      <id>5104</id>
      <timestamp>2013-04-24T09:02:23Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="336">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 24 avril 2013 à 11:02 (CEST)</text>
      <sha1>8mnx81sdrxp2ogu204ens9r7h3ftuhc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Bruno72G</title>
    <ns>3</ns>
    <id>1294</id>
    <revision>
      <id>5415</id>
      <timestamp>2013-10-02T16:31:31Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="369">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Ggoodluck47|Amicalement, Gerard]] ([[Discussion utilisateur:Ggoodluck47|discussion]]) 2 octobre 2013 à 18:31 (CEST)</text>
      <sha1>085nx7mzkl6zhlrdlzs772u3406d2pf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Chahra774</title>
    <ns>3</ns>
    <id>1271</id>
    <revision>
      <id>5290</id>
      <timestamp>2013-06-25T15:14:21Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="367">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Ggoodluck47|Amicalement, Gerard]] ([[Discussion utilisateur:Ggoodluck47|discussion]]) 25 juin 2013 à 17:14 (CEST)</text>
      <sha1>4z5980cl5agurp6l5bhixt8dk2p57gf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Chr0my</title>
    <ns>3</ns>
    <id>972</id>
    <revision>
      <id>4002</id>
      <timestamp>2012-04-04T09:29:32Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="291">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] 4 avril 2012 à 11:29 (CEST)</text>
      <sha1>f23ddad2f0b7wvcnmf0j98plpcbnajd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Clisam</title>
    <ns>3</ns>
    <id>1190</id>
    <revision>
      <id>4862</id>
      <timestamp>2013-01-05T07:33:36Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="336">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 5 janvier 2013 à 08:33 (CET)</text>
      <sha1>g636u03xav94gaylbmp5zegyfcdtb0a</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Coq</title>
    <ns>3</ns>
    <id>1303</id>
    <revision>
      <id>5484</id>
      <timestamp>2013-12-04T20:38:02Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <comment>Page créée avec « Salut,  Si tu veux être homogène dans la manière d'écrire CLEF il faut l're également dans les titres de paragraphes :D »</comment>
      <text xml:space="preserve" bytes="124">Salut,

Si tu veux être homogène dans la manière d'écrire CLEF il faut l're également dans les titres de paragraphes :D</text>
      <sha1>39g9bclhrycqblcs88dossnh54s4cwt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Dapounet</title>
    <ns>3</ns>
    <id>1164</id>
    <revision>
      <id>4754</id>
      <timestamp>2012-11-16T09:01:59Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="338">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 16 novembre 2012 à 10:01 (CET)</text>
      <sha1>10rpvmbheyqpkm5a3ywi6xhy4cr7at9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Delmo225</title>
    <ns>3</ns>
    <id>1310</id>
    <revision>
      <id>5536</id>
      <timestamp>2014-01-22T17:11:34Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="343">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 22 janvier 2014 à 18:11 (CET)</text>
      <sha1>dnyjvhqtl1xd2synprdydmgfbe4azuc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Denis</title>
    <ns>3</ns>
    <id>1037</id>
    <revision>
      <id>4346</id>
      <timestamp>2012-07-11T13:58:10Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="338">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 11 juillet 2012 à 15:58 (CEST)</text>
      <sha1>8ea5skrf5unrh99tu97aapjns74f50h</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Dimak</title>
    <ns>3</ns>
    <id>1029</id>
    <revision>
      <id>4332</id>
      <timestamp>2012-06-12T12:18:15Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="335">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 12 juin 2012 à 14:18 (CEST)</text>
      <sha1>onqyjibyfp7bp95564jrrsxzfzpb0gv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Dougstar7</title>
    <ns>3</ns>
    <id>1018</id>
    <revision>
      <id>4290</id>
      <timestamp>2012-05-28T12:00:12Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="334">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 28 mai 2012 à 14:00 (CEST)</text>
      <sha1>esclnx74pxedj7iz7oc09616jompsrb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Fdesarmes</title>
    <ns>3</ns>
    <id>1041</id>
    <revision>
      <id>4352</id>
      <timestamp>2012-07-27T11:38:40Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="338">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 27 juillet 2012 à 13:38 (CEST)</text>
      <sha1>n5sqswckohap3u4wnw1zf3cpnn4plbw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Fred baconnier</title>
    <ns>3</ns>
    <id>1298</id>
    <revision>
      <id>5433</id>
      <timestamp>2013-11-03T17:47:22Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="343">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 3 novembre 2013 à 18:47 (CET)</text>
      <sha1>eld62eiyje7yvocul0h578ia2wrypw3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:GammaNu</title>
    <ns>3</ns>
    <id>1306</id>
    <revision>
      <id>5526</id>
      <timestamp>2014-01-07T23:09:51Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="342">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 8 janvier 2014 à 00:09 (CET)</text>
      <sha1>a1ib4wwxss7pd0jk5d5q87fyqrq10s3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Genpashiro</title>
    <ns>3</ns>
    <id>940</id>
    <revision>
      <id>3889</id>
      <timestamp>2012-03-06T07:39:41Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="289">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] 6 mars 2012 à 08:39 (CET)</text>
      <sha1>0dbaceybmqiml4mbh24rvd8igz6zuc6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Ggoodluck47</title>
    <ns>3</ns>
    <id>102</id>
    <revision>
      <id>431</id>
      <timestamp>2010-01-27T19:50:14Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <comment>Page créée avec « vas voir ici http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=25401. dernier post. ~~~ »</comment>
      <text xml:space="preserve" bytes="108">vas voir ici http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=25401. dernier post. [[Utilisateur:L0u!$|L0u!$]]</text>
      <sha1>s5gwqvrjmhumhy27lvidsjiluqmg250</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Greenmerlin</title>
    <ns>3</ns>
    <id>1020</id>
    <revision>
      <id>4296</id>
      <timestamp>2012-06-01T08:16:48Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="334">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 1 juin 2012 à 10:16 (CEST)</text>
      <sha1>0h3vr0a40dnuq8lpqedckn1p4ry3esx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Haludeis</title>
    <ns>3</ns>
    <id>997</id>
    <revision>
      <id>4153</id>
      <timestamp>2012-05-05T09:24:50Z</timestamp>
      <contributor>
        <username>Haludeis</username>
        <id>30</id>
      </contributor>
      <comment>Page créée avec « Ici vous pouvez me donner vos avis,idées,suggestions... sur les &lt;strike&gt;conneries&lt;/strike&gt; documentations que j'écrit. »</comment>
      <text xml:space="preserve" bytes="120">Ici vous pouvez me donner vos avis,idées,suggestions... sur les &lt;strike&gt;conneries&lt;/strike&gt; documentations que j'écrit.</text>
      <sha1>m7wdo9ajmqqsfx41b7gtzwsqzo3iqhf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4154</id>
      <parentid>4153</parentid>
      <timestamp>2012-05-05T10:54:12Z</timestamp>
      <contributor>
        <username>Haludeis</username>
        <id>30</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="120">Ici vous pouvez me donner vos avis,idées,suggestions... sur les &lt;strike&gt;conneries&lt;/strike&gt; documentations que j'écris.</text>
      <sha1>cqus3b6qjwr0exuba6zt8yilleusa2y</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Harlock59</title>
    <ns>3</ns>
    <id>1330</id>
    <revision>
      <id>5624</id>
      <timestamp>2014-06-07T16:11:35Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="366">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Ggoodluck47|Amicalement, Gerard]] ([[Discussion utilisateur:Ggoodluck47|discussion]]) 7 juin 2014 à 18:11 (CEST)</text>
      <sha1>8mhgm6touuog72k3gc0p4yx0k9gufkf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Jb02110</title>
    <ns>3</ns>
    <id>1016</id>
    <revision>
      <id>4288</id>
      <timestamp>2012-05-28T11:59:46Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="334">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 28 mai 2012 à 13:59 (CEST)</text>
      <sha1>e4agheq9khseidaqh1v5cga4rngbik2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Jeanfei</title>
    <ns>3</ns>
    <id>964</id>
    <revision>
      <id>3946</id>
      <timestamp>2012-03-15T06:57:28Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="290">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] 15 mars 2012 à 07:57 (CET)</text>
      <sha1>94rlkncjgaki6va17e1wc5516y1x6d5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Julienth37</title>
    <ns>3</ns>
    <id>1324</id>
    <revision>
      <id>5575</id>
      <timestamp>2014-03-12T00:41:53Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="340">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 12 mars 2014 à 01:41 (CET)</text>
      <sha1>eusnrz0g5rjl0dlvon3evwyrrhbnans</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Kna</title>
    <ns>3</ns>
    <id>232</id>
    <revision>
      <id>990</id>
      <timestamp>2010-02-07T10:18:32Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <comment>Page créée avec « Hello, j'ai vu que tu avais créé la page [[Connection au réseau]] mais avant ça, as-tu vu que les pages [[Le_fichier_interfaces]] et [[interfaces_et_wpasupplicant]] exist… »</comment>
      <text xml:space="preserve" bytes="363">Hello, j'ai vu que tu avais créé la page [[Connection au réseau]] mais avant ça, as-tu vu que les pages [[Le_fichier_interfaces]] et [[interfaces_et_wpasupplicant]] existaient?
Car tu expliques comment te connecter en wpa et certains autres trucs qui sont déjà expliqués dans leurs pages dédiée. [[Utilisateur:L0u!$|L0u!$]] 7 février 2010 à 10:18 (UTC)</text>
      <sha1>lhku9es0myl650q77c6zp8i7st0v116</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>991</id>
      <parentid>990</parentid>
      <timestamp>2010-02-07T10:20:34Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="363">Hello, j'ai vu que tu avais créé la page [[Connection du réseau]] mais avant ça, as-tu vu que les pages [[Le_fichier_interfaces]] et [[interfaces_et_wpasupplicant]] existaient?
Car tu expliques comment te connecter en wpa et certains autres trucs qui sont déjà expliqués dans leurs pages dédiée. [[Utilisateur:L0u!$|L0u!$]] 7 février 2010 à 10:18 (UTC)</text>
      <sha1>sups1fkdy8n7tbokwonc8d9d7xfdv9t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>992</id>
      <parentid>991</parentid>
      <timestamp>2010-02-07T10:21:52Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="366">Hello, j'ai vu que tu avais créé la page [[Configuration du réseau]] mais avant ça, as-tu vu que les pages [[Le_fichier_interfaces]] et [[interfaces_et_wpasupplicant]] existaient?
Car tu expliques comment te connecter en wpa et certains autres trucs qui sont déjà expliqués dans leurs pages dédiée. [[Utilisateur:L0u!$|L0u!$]] 7 février 2010 à 10:18 (UTC)</text>
      <sha1>84sb1viwya742uy2uivfbhds030o1d3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>993</id>
      <parentid>992</parentid>
      <timestamp>2010-02-07T11:45:22Z</timestamp>
      <contributor>
        <username>Kna</username>
        <id>35</id>
      </contributor>
      <text xml:space="preserve" bytes="636">Hello, j'ai vu que tu avais créé la page [[Configuration du réseau]] mais avant ça, as-tu vu que les pages [[Le_fichier_interfaces]] et [[interfaces_et_wpasupplicant]] existaient?
Car tu expliques comment te connecter en wpa et certains autres trucs qui sont déjà expliqués dans leurs pages dédiée. [[Utilisateur:L0u!$|L0u!$]] 7 février 2010 à 10:18 (UTC)

Oui ! Si tu regardes, j'ai aussi modifié ces pages, et j'ai fait un lien vers la page sur le fichier interfaces dans la page [[Configuration_du_réseau]], pour qu'elle puisse servir de point de départ. Voir la discussion sur le forum interne. [[Utilisateur:Kna|Kna]]</text>
      <sha1>7oyfi9ulq9dakjaut04jqth23q7c8pw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>994</id>
      <parentid>993</parentid>
      <timestamp>2010-02-07T11:50:01Z</timestamp>
      <contributor>
        <username>Kna</username>
        <id>35</id>
      </contributor>
      <comment>Oui, j'ai vu, regarde bien. on en parle dans le forum interne.</comment>
      <text xml:space="preserve" bytes="737">Hello, j'ai vu que tu avais créé la page [[Configuration du réseau]] mais avant ça, as-tu vu que les pages [[Le_fichier_interfaces]] et [[interfaces_et_wpasupplicant]] existaient?
Car tu expliques comment te connecter en wpa et certains autres trucs qui sont déjà expliqués dans leurs pages dédiée. [[Utilisateur:L0u!$|L0u!$]] 7 février 2010 à 10:18 (UTC)

Oui ! Si tu regardes, j'ai aussi modifié ces pages, et j'ai fait un lien vers la page sur le fichier interfaces dans la page [[Configuration_du_réseau]], pour qu'elle puisse servir de point de départ. Voir la discussion sur le forum interne. 
Faut dire que Lol s'est acharné, il a rempli la page des modifications récentes en une matinée ! [[Utilisateur:Kna|Kna]]</text>
      <sha1>ckdqisd6vift1gqgbwfsrdej4i679pu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>995</id>
      <parentid>994</parentid>
      <timestamp>2010-02-07T12:43:57Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="859">Hello, j'ai vu que tu avais créé la page [[Configuration du réseau]] mais avant ça, as-tu vu que les pages [[Le_fichier_interfaces]] et [[interfaces_et_wpasupplicant]] existaient?
Car tu expliques comment te connecter en wpa et certains autres trucs qui sont déjà expliqués dans leurs pages dédiée. [[Utilisateur:L0u!$|L0u!$]] 7 février 2010 à 10:18 (UTC)

Oui ! Si tu regardes, j'ai aussi modifié ces pages, et j'ai fait un lien vers la page sur le fichier interfaces dans la page [[Configuration_du_réseau]], pour qu'elle puisse servir de point de départ. Voir la discussion sur le forum interne. 
Faut dire que Lol s'est acharné, il a rempli la page des modifications récentes en une matinée ! [[Utilisateur:Kna|Kna]]
----
lol ! J'ai travaillé un peu sur le projet d'accueil... Je n'ai pas touché aux pages réseau/wifi ! Craché juré !</text>
      <sha1>3s5lutcvc18wjdzgd91djx22qmye8pf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>996</id>
      <parentid>995</parentid>
      <timestamp>2010-02-07T12:44:11Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="914">Hello, j'ai vu que tu avais créé la page [[Configuration du réseau]] mais avant ça, as-tu vu que les pages [[Le_fichier_interfaces]] et [[interfaces_et_wpasupplicant]] existaient?
Car tu expliques comment te connecter en wpa et certains autres trucs qui sont déjà expliqués dans leurs pages dédiée. [[Utilisateur:L0u!$|L0u!$]] 7 février 2010 à 10:18 (UTC)

Oui ! Si tu regardes, j'ai aussi modifié ces pages, et j'ai fait un lien vers la page sur le fichier interfaces dans la page [[Configuration_du_réseau]], pour qu'elle puisse servir de point de départ. Voir la discussion sur le forum interne. 
Faut dire que Lol s'est acharné, il a rempli la page des modifications récentes en une matinée ! [[Utilisateur:Kna|Kna]]
----
lol ! J'ai travaillé un peu sur le projet d'accueil... Je n'ai pas touché aux pages réseau/wifi ! Craché juré ! [[Utilisateur:Lol|Lol]] 7 février 2010 à 12:44 (UTC)</text>
      <sha1>4gflun2643m1omoqhttba4dx5mgkg54</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1004</id>
      <parentid>996</parentid>
      <timestamp>2010-02-07T15:34:34Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="984">Hello, j'ai vu que tu avais créé la page [[Configuration du réseau]] mais avant ça, as-tu vu que les pages [[Le_fichier_interfaces]] et [[interfaces_et_wpasupplicant]] existaient?
Car tu expliques comment te connecter en wpa et certains autres trucs qui sont déjà expliqués dans leurs pages dédiée. [[Utilisateur:L0u!$|L0u!$]] 7 février 2010 à 10:18 (UTC)

Oui ! Si tu regardes, j'ai aussi modifié ces pages, et j'ai fait un lien vers la page sur le fichier interfaces dans la page [[Configuration_du_réseau]], pour qu'elle puisse servir de point de départ. Voir la discussion sur le forum interne. 
Faut dire que Lol s'est acharné, il a rempli la page des modifications récentes en une matinée ! [[Utilisateur:Kna|Kna]]
----
lol ! J'ai travaillé un peu sur le projet d'accueil... Je n'ai pas touché aux pages réseau/wifi ! Craché juré ! [[Utilisateur:Lol|Lol]] 7 février 2010 à 12:44 (UTC)
----
Okay. [[Utilisateur:L0u!$|L0u!$]] 7 février 2010 à 15:34 (UTC)</text>
      <sha1>cusjzc9bfe1re3co6zueifdjv5lch6g</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Kri2sis</title>
    <ns>3</ns>
    <id>1212</id>
    <revision>
      <id>4978</id>
      <timestamp>2013-02-18T14:40:35Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="338">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 18 février 2013 à 15:40 (CET)</text>
      <sha1>phqo0at0ieh7kjplfajoee1jn9kpkwa</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Kylana</title>
    <ns>3</ns>
    <id>1227</id>
    <revision>
      <id>5061</id>
      <timestamp>2013-03-22T04:19:02Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="334">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 22 mars 2013 à 05:19 (CET)</text>
      <sha1>fh5l1s9hl7qmj89okbeccvjosnr69kf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:L0u!$</title>
    <ns>3</ns>
    <id>25</id>
    <revision>
      <id>35</id>
      <timestamp>2010-01-21T17:42:01Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <comment>Page créée avec « ...  Je sais qu'on aime me parler...   ---- »</comment>
      <text xml:space="preserve" bytes="43">...

Je sais qu'on aime me parler...

 ----</text>
      <sha1>3w12jfqhnfcgih5gsbdtekqob4vfajb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>36</id>
      <parentid>35</parentid>
      <timestamp>2010-01-21T17:59:06Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="262">...

Je sais qu'on aime me parler...
----
Bon, je commence alors... Tu veux bien changer ton message sur la page d'accueil ? Il est un peu &quot;obsolète&quot; maintenant ! Est-il &quot;validé&quot; au moins (lôôôôl) [[Utilisateur:Lol|Lol]] 21 janvier 2010 à 17:59 (UTC)
----</text>
      <sha1>say4vu3r5tl1bn4r4aqnq2o1sj7d1n4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>49</id>
      <parentid>36</parentid>
      <timestamp>2010-01-21T19:18:52Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="650">...

Je sais qu'on aime me parler...
----
Bon, je commence alors... Tu veux bien changer ton message sur la page d'accueil ? Il est un peu &quot;obsolète&quot; maintenant ! Est-il &quot;validé&quot; au moins (lôôôôl) [[Utilisateur:Lol|Lol]] 21 janvier 2010 à 17:59 (UTC)
----
Voila, je l'ai changé. En espérant qu'il représente ce que nous pensons tous :x . Encore merci pour l'hébergement, je vais pouvoir (re)jouer on-line, et ne plus être embêté par mes parents.

Si tu me confirmes que tu as bien copié tout ce qu'il te semblait necessaire sur &quot;ma&quot; version du wiki, j'éteindrais mon serveur. [[Utilisateur:L0u!$|L0u!$]] 21 janvier 2010 à 19:18 (UTC)</text>
      <sha1>6m5kn3xob5elf5vx7kvc6o43ftwloi3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>264</id>
      <parentid>49</parentid>
      <timestamp>2010-01-25T18:44:10Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <text xml:space="preserve" bytes="812">...

Je sais qu'on aime me parler...
----
Bon, je commence alors... Tu veux bien changer ton message sur la page d'accueil ? Il est un peu &quot;obsolète&quot; maintenant ! Est-il &quot;validé&quot; au moins (lôôôôl) [[Utilisateur:Lol|Lol]] 21 janvier 2010 à 17:59 (UTC)
----
Voila, je l'ai changé. En espérant qu'il représente ce que nous pensons tous :x . Encore merci pour l'hébergement, je vais pouvoir (re)jouer on-line, et ne plus être embêté par mes parents.

Si tu me confirmes que tu as bien copié tout ce qu'il te semblait necessaire sur &quot;ma&quot; version du wiki, j'éteindrais mon serveur. [[Utilisateur:L0u!$|L0u!$]] 21 janvier 2010 à 19:18 (UTC)

NTFS :
J'avais modifié après avoir testé et parce que cette façon de l'écrire dans le fstab provoque une message unknown type ntfs-3g !
Mais si tu y tiens.</text>
      <sha1>7un677sf3p3k7b1kp4m2zy99y5vdmav</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>265</id>
      <parentid>264</parentid>
      <timestamp>2010-01-25T19:22:58Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="1001">...

Je sais qu'on aime me parler...
----
Bon, je commence alors... Tu veux bien changer ton message sur la page d'accueil ? Il est un peu &quot;obsolète&quot; maintenant ! Est-il &quot;validé&quot; au moins (lôôôôl) [[Utilisateur:Lol|Lol]] 21 janvier 2010 à 17:59 (UTC)
----
Voila, je l'ai changé. En espérant qu'il représente ce que nous pensons tous :x . Encore merci pour l'hébergement, je vais pouvoir (re)jouer on-line, et ne plus être embêté par mes parents.

Si tu me confirmes que tu as bien copié tout ce qu'il te semblait necessaire sur &quot;ma&quot; version du wiki, j'éteindrais mon serveur. [[Utilisateur:L0u!$|L0u!$]] 21 janvier 2010 à 19:18 (UTC)
----
NTFS :
J'avais modifié après avoir testé et parce que cette façon de l'écrire dans le fstab provoque une message unknown type ntfs-3g !
Mais si tu y tiens.

----

Ok, ok... et pourtant, chez moi, je n'ai aucun problème. ntfs-3g fonctionne avec le fstab et la commande mount.
Si tu veux, je tu peux proposer la 2nde option juste en dessous.</text>
      <sha1>r0jsctvjfr6vrgq6wa09dz9wx2sfvy5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>927</id>
      <parentid>265</parentid>
      <timestamp>2010-02-06T11:19:51Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <text xml:space="preserve" bytes="1280">...

Je sais qu'on aime me parler...
----
Bon, je commence alors... Tu veux bien changer ton message sur la page d'accueil ? Il est un peu &quot;obsolète&quot; maintenant ! Est-il &quot;validé&quot; au moins (lôôôôl) [[Utilisateur:Lol|Lol]] 21 janvier 2010 à 17:59 (UTC)
----
Voila, je l'ai changé. En espérant qu'il représente ce que nous pensons tous :x . Encore merci pour l'hébergement, je vais pouvoir (re)jouer on-line, et ne plus être embêté par mes parents.

Si tu me confirmes que tu as bien copié tout ce qu'il te semblait necessaire sur &quot;ma&quot; version du wiki, j'éteindrais mon serveur. [[Utilisateur:L0u!$|L0u!$]] 21 janvier 2010 à 19:18 (UTC)
----
NTFS :
J'avais modifié après avoir testé et parce que cette façon de l'écrire dans le fstab provoque une message unknown type ntfs-3g !
Mais si tu y tiens.

----

Ok, ok... et pourtant, chez moi, je n'ai aucun problème. ntfs-3g fonctionne avec le fstab et la commande mount.
Si tu veux, je tu peux proposer la 2nde option juste en dessous.

== 
Louis, si tu veux que l'un d'entre nous quitte ce wiki tu n'as qu'a insisrer dans la voie actuelle. Avant d'annuler mes corrections t'es tu donné la peine de consulter un dictionnaire, moi oui ! == [[Utilisateur:Ggoodluck47|Amicalement, Gerard]]

== Texte de sous-titre ==</text>
      <sha1>fa78u7henrxykh2svgt4m1xzc1g618p</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>928</id>
      <parentid>927</parentid>
      <timestamp>2010-02-06T11:20:59Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <text xml:space="preserve" bytes="1280">...

Je sais qu'on aime me parler...
----
Bon, je commence alors... Tu veux bien changer ton message sur la page d'accueil ? Il est un peu &quot;obsolète&quot; maintenant ! Est-il &quot;validé&quot; au moins (lôôôôl) [[Utilisateur:Lol|Lol]] 21 janvier 2010 à 17:59 (UTC)
----
Voila, je l'ai changé. En espérant qu'il représente ce que nous pensons tous :x . Encore merci pour l'hébergement, je vais pouvoir (re)jouer on-line, et ne plus être embêté par mes parents.

Si tu me confirmes que tu as bien copié tout ce qu'il te semblait necessaire sur &quot;ma&quot; version du wiki, j'éteindrais mon serveur. [[Utilisateur:L0u!$|L0u!$]] 21 janvier 2010 à 19:18 (UTC)
----
NTFS :
J'avais modifié après avoir testé et parce que cette façon de l'écrire dans le fstab provoque une message unknown type ntfs-3g !
Mais si tu y tiens.

----

Ok, ok... et pourtant, chez moi, je n'ai aucun problème. ntfs-3g fonctionne avec le fstab et la commande mount.
Si tu veux, je tu peux proposer la 2nde option juste en dessous.

== 
Louis, si tu veux que l'un d'entre nous quitte ce wiki tu n'as qu'a insister dans la voie actuelle. Avant d'annuler mes corrections t'es tu donné la peine de consulter un dictionnaire, moi oui ! == [[Utilisateur:Ggoodluck47|Amicalement, Gerard]]

== Texte de sous-titre ==</text>
      <sha1>c5ptdma4h8l1iha0ylj2enopiwenykr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>929</id>
      <parentid>928</parentid>
      <timestamp>2010-02-06T12:05:38Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="1661">...

Je sais qu'on aime me parler...
----
Bon, je commence alors... Tu veux bien changer ton message sur la page d'accueil ? Il est un peu &quot;obsolète&quot; maintenant ! Est-il &quot;validé&quot; au moins (lôôôôl) [[Utilisateur:Lol|Lol]] 21 janvier 2010 à 17:59 (UTC)
----
Voila, je l'ai changé. En espérant qu'il représente ce que nous pensons tous :x . Encore merci pour l'hébergement, je vais pouvoir (re)jouer on-line, et ne plus être embêté par mes parents.

Si tu me confirmes que tu as bien copié tout ce qu'il te semblait necessaire sur &quot;ma&quot; version du wiki, j'éteindrais mon serveur. [[Utilisateur:L0u!$|L0u!$]] 21 janvier 2010 à 19:18 (UTC)
----
NTFS :
J'avais modifié après avoir testé et parce que cette façon de l'écrire dans le fstab provoque une message unknown type ntfs-3g !
Mais si tu y tiens.

----

Ok, ok... et pourtant, chez moi, je n'ai aucun problème. ntfs-3g fonctionne avec le fstab et la commande mount.
Si tu veux, je tu peux proposer la 2nde option juste en dessous.
----
==
Louis, si tu veux que l'un d'entre nous quitte ce wiki tu n'as qu'a insister dans la voie actuelle. Avant d'annuler mes corrections t'es tu donné la peine de consulter un dictionnaire, moi oui ! == [[Utilisateur:Ggoodluck47|Amicalement, Gerard]]
----
Peux-tu préciser de quelle modification parles-tu? car pour le ntfs, j'ai mis ta solution en méthode alternative ( et ça fait plus d'une semaine ) et sinon, je ne vois pas de quoi tu veux parler.
Je n'ai annulé aucune de tes corrections ( à ma connaissance ), et si j'ai fait comme tel, prie moi d'accepter mes escuses ( je suis en train de chercher quelle intervention t'a portté préjudice).</text>
      <sha1>re2qvi5oj4juojoc80f1791pf22ijyu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>930</id>
      <parentid>929</parentid>
      <timestamp>2010-02-06T12:07:50Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="1926">...

Je sais qu'on aime me parler...
----
Bon, je commence alors... Tu veux bien changer ton message sur la page d'accueil ? Il est un peu &quot;obsolète&quot; maintenant ! Est-il &quot;validé&quot; au moins (lôôôôl) [[Utilisateur:Lol|Lol]] 21 janvier 2010 à 17:59 (UTC)
----
Voila, je l'ai changé. En espérant qu'il représente ce que nous pensons tous :x . Encore merci pour l'hébergement, je vais pouvoir (re)jouer on-line, et ne plus être embêté par mes parents.

Si tu me confirmes que tu as bien copié tout ce qu'il te semblait necessaire sur &quot;ma&quot; version du wiki, j'éteindrais mon serveur. [[Utilisateur:L0u!$|L0u!$]] 21 janvier 2010 à 19:18 (UTC)
----
NTFS :
J'avais modifié après avoir testé et parce que cette façon de l'écrire dans le fstab provoque une message unknown type ntfs-3g !
Mais si tu y tiens.

----

Ok, ok... et pourtant, chez moi, je n'ai aucun problème. ntfs-3g fonctionne avec le fstab et la commande mount.
Si tu veux, je tu peux proposer la 2nde option juste en dessous.
----
==
Louis, si tu veux que l'un d'entre nous quitte ce wiki tu n'as qu'a insister dans la voie actuelle. Avant d'annuler mes corrections t'es tu donné la peine de consulter un dictionnaire, moi oui ! == [[Utilisateur:Ggoodluck47|Amicalement, Gerard]]
----
Peux-tu préciser de quelle modification parles-tu? car pour le ntfs, j'ai mis ta solution en méthode alternative ( et ça fait plus d'une semaine ) et sinon, je ne vois pas de quoi tu veux parler.
Je n'ai annulé aucune de tes corrections ( à ma connaissance ), et si j'ai fait comme tel, prie moi d'accepter mes escuses ( je suis en train de chercher quelle intervention t'a portté préjudice).
[[Utilisateur:L0u!$|L0u!$]] 6 février 2010 à 12:07 (UTC)
----
Ahhhhhhh!!!! excuse-moi, en fait, je n'ai pas fait exprès, nos versions se sont chevauchées, j'avais donc une ancienne ( sans tes corrections ) lorsque j'ai validé ma version.

Je modifie de suite.</text>
      <sha1>8naa8sz6dp2rmww28imiod4rzcz1u2r</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:LMJ</title>
    <ns>3</ns>
    <id>1027</id>
    <revision>
      <id>4330</id>
      <timestamp>2012-06-12T12:17:50Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="335">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 12 juin 2012 à 14:17 (CEST)</text>
      <sha1>4paewyr9lbllwss9mw1wwkczwn0p7op</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:LaurentBDP976</title>
    <ns>3</ns>
    <id>1196</id>
    <revision>
      <id>4885</id>
      <timestamp>2013-01-17T16:22:32Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="337">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 17 janvier 2013 à 17:22 (CET)</text>
      <sha1>0n67qgxkbhbinay08c4p6oqwxzzerby</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Le fada</title>
    <ns>3</ns>
    <id>110</id>
    <revision>
      <id>466</id>
      <timestamp>2010-01-29T01:07:19Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <comment>Page créée avec « Très bonne photo ! &lt;/br&gt; Tu as une véritable allure de Celte. ~~~ ---- »</comment>
      <text xml:space="preserve" bytes="100">Très bonne photo ! &lt;/br&gt;
Tu as une véritable allure de Celte.
[[Utilisateur:Ricardo|Ricardo]]
----</text>
      <sha1>f08x56oxrk03i2wz561crocmko4o76j</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>467</id>
      <parentid>466</parentid>
      <timestamp>2010-01-29T03:23:31Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <text xml:space="preserve" bytes="271">Très bonne photo&amp;nbsp;! &amp;lt;/br&amp;gt; Tu as une véritable allure de Celte. [[Utilisateur:Ricardo|Ricardo]] 

----

Breton depuis la nuit des temps... tout s'explique ! --[[Utilisateur:Le fada|le_fada... toujours à l&amp;#39;ouest !]] 29 janvier 2010 à 03:23 (UTC)&lt;br&gt;

----</text>
      <sha1>hlg361x9mghla52udaa9dkvuh0sndbv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Leatherface</title>
    <ns>3</ns>
    <id>1275</id>
    <revision>
      <id>5297</id>
      <timestamp>2013-06-27T17:03:21Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="341">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 27 juin 2013 à 19:03 (CEST)</text>
      <sha1>3pr3jc2p7tcnuhws9jd34ugwhraz0m7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Legaub</title>
    <ns>3</ns>
    <id>1044</id>
    <revision>
      <id>4362</id>
      <timestamp>2012-07-29T03:23:46Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="338">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 29 juillet 2012 à 05:23 (CEST)</text>
      <sha1>p4oymyoz17yw0h1b7c8u5r8goujdvg6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Lib-inform</title>
    <ns>3</ns>
    <id>1220</id>
    <revision>
      <id>5041</id>
      <timestamp>2013-03-03T07:05:59Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="333">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 3 mars 2013 à 08:05 (CET)</text>
      <sha1>bxkhafr40j0ry4zen0kvg20dzhgk4f4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Lol</title>
    <ns>3</ns>
    <id>16</id>
    <revision>
      <id>26</id>
      <timestamp>2010-01-21T15:04:54Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « Page de discussion avec lol...  [http://louis-c.myftp.org/wiki-debian/index.php/Test1 Ici] une petite proposition de page d'accueil afin de créer des rubriques pour classer … »</comment>
      <text xml:space="preserve" bytes="1944">Page de discussion avec lol...

[http://louis-c.myftp.org/wiki-debian/index.php/Test1 Ici] une petite proposition de page d'accueil afin de créer des rubriques pour classer les articles. C'est une bête copie de la page de madiawiki...

----
Hi, c'est L0u!$. Je te précise que pour les liens internes au wiki, il vaut mieux les mettre sous la forme \[\[Test1|page de test\]\] que de mettre un lien complet. ça permet de savoir si la page existe ou pas.

----
Merci... Je copie/colle les liens du navigateur, alors forcément... Désolé, je rectifie. ça va ça ne bouffe pas trop ta connexion cette plaisanterie ?

----
T'inquiete: grosso-modo, on est 5-6 à lire/écrire sur ce wiki pour l'instant.
Je vais bientot prendre un hébergement gratuit pour le mettre, car mes parents n'aiment pas que mon serveur soit allumé 24h/24 .

----
:Bonjour à vous, n'hésitez pas à vous inspirer de wikipédia pour obtenir des astuces de présentation. Pour signer un message sur une page de discussion il suffit de mettre quatre tildes de suite : [[Utilisateur:Woj|woj]] 20 janvier 2010 à 12:00 (UTC)

----
Re,
Merci Branch, cool ! Pour l'hébergement; j'ai un blog débile sur un domaine qui m'appartient, je vais voir si je peux y mettre un MediaWiki... Volume illimité ! Ils ne proposent que TikiWiki et PhpWiki. Je pose la question pour l'installation de MediaWiki (le + sympa à mon avis). Et puis comme on a commencé avec ça... [[Utilisateur:Lol|Lol]]

----
Ah, sympa, merci.
juste pour savoir: qui a écrit le texte juste au dessus? ( lol je présume ?) 
[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:14 (UTC)

----
Re,
Non au dessus, c'est &quot;branch&quot; dit woj ! (c'est signé...) [[Utilisateur:Lol|Lol]] 20 janvier 2010 à 14:24 (UTC)

----
Bah non, je parlais du post précédent le mien. donc ça devait être toi, lol . [[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:28 (UTC)
PS: 3 ~ &quot;tildes&quot; permettent de n'afficher que le nom.</text>
      <sha1>lg17r7609nfuixl9tan6kznnrmacyvn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>244</id>
      <parentid>26</parentid>
      <timestamp>2010-01-25T04:27:23Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* bloc note */ nouvelle section</comment>
      <text xml:space="preserve" bytes="2094">Page de discussion avec lol...

[http://louis-c.myftp.org/wiki-debian/index.php/Test1 Ici] une petite proposition de page d'accueil afin de créer des rubriques pour classer les articles. C'est une bête copie de la page de madiawiki...

----
Hi, c'est L0u!$. Je te précise que pour les liens internes au wiki, il vaut mieux les mettre sous la forme \[\[Test1|page de test\]\] que de mettre un lien complet. ça permet de savoir si la page existe ou pas.

----
Merci... Je copie/colle les liens du navigateur, alors forcément... Désolé, je rectifie. ça va ça ne bouffe pas trop ta connexion cette plaisanterie ?

----
T'inquiete: grosso-modo, on est 5-6 à lire/écrire sur ce wiki pour l'instant.
Je vais bientot prendre un hébergement gratuit pour le mettre, car mes parents n'aiment pas que mon serveur soit allumé 24h/24 .

----
:Bonjour à vous, n'hésitez pas à vous inspirer de wikipédia pour obtenir des astuces de présentation. Pour signer un message sur une page de discussion il suffit de mettre quatre tildes de suite : [[Utilisateur:Woj|woj]] 20 janvier 2010 à 12:00 (UTC)

----
Re,
Merci Branch, cool ! Pour l'hébergement; j'ai un blog débile sur un domaine qui m'appartient, je vais voir si je peux y mettre un MediaWiki... Volume illimité ! Ils ne proposent que TikiWiki et PhpWiki. Je pose la question pour l'installation de MediaWiki (le + sympa à mon avis). Et puis comme on a commencé avec ça... [[Utilisateur:Lol|Lol]]

----
Ah, sympa, merci.
juste pour savoir: qui a écrit le texte juste au dessus? ( lol je présume ?) 
[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:14 (UTC)

----
Re,
Non au dessus, c'est &quot;branch&quot; dit woj ! (c'est signé...) [[Utilisateur:Lol|Lol]] 20 janvier 2010 à 14:24 (UTC)

----
Bah non, je parlais du post précédent le mien. donc ça devait être toi, lol . [[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:28 (UTC)
PS: 3 ~ &quot;tildes&quot; permettent de n'afficher que le nom.

== bloc note ==

Une extension &quot;forum&quot; ?
http://www.mediawiki.org/wiki/Extension:AWC's_Forum
http://www.mediawiki.org/wiki/Extension:Forum_extension</text>
      <sha1>4oie7b95na9332yjuwgq2lzrygt00uc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>245</id>
      <parentid>244</parentid>
      <timestamp>2010-01-25T04:44:10Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* bloc note */</comment>
      <text xml:space="preserve" bytes="2173">Page de discussion avec lol...

[http://louis-c.myftp.org/wiki-debian/index.php/Test1 Ici] une petite proposition de page d'accueil afin de créer des rubriques pour classer les articles. C'est une bête copie de la page de madiawiki...

----
Hi, c'est L0u!$. Je te précise que pour les liens internes au wiki, il vaut mieux les mettre sous la forme \[\[Test1|page de test\]\] que de mettre un lien complet. ça permet de savoir si la page existe ou pas.

----
Merci... Je copie/colle les liens du navigateur, alors forcément... Désolé, je rectifie. ça va ça ne bouffe pas trop ta connexion cette plaisanterie ?

----
T'inquiete: grosso-modo, on est 5-6 à lire/écrire sur ce wiki pour l'instant.
Je vais bientot prendre un hébergement gratuit pour le mettre, car mes parents n'aiment pas que mon serveur soit allumé 24h/24 .

----
:Bonjour à vous, n'hésitez pas à vous inspirer de wikipédia pour obtenir des astuces de présentation. Pour signer un message sur une page de discussion il suffit de mettre quatre tildes de suite : [[Utilisateur:Woj|woj]] 20 janvier 2010 à 12:00 (UTC)

----
Re,
Merci Branch, cool ! Pour l'hébergement; j'ai un blog débile sur un domaine qui m'appartient, je vais voir si je peux y mettre un MediaWiki... Volume illimité ! Ils ne proposent que TikiWiki et PhpWiki. Je pose la question pour l'installation de MediaWiki (le + sympa à mon avis). Et puis comme on a commencé avec ça... [[Utilisateur:Lol|Lol]]

----
Ah, sympa, merci.
juste pour savoir: qui a écrit le texte juste au dessus? ( lol je présume ?) 
[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:14 (UTC)

----
Re,
Non au dessus, c'est &quot;branch&quot; dit woj ! (c'est signé...) [[Utilisateur:Lol|Lol]] 20 janvier 2010 à 14:24 (UTC)

----
Bah non, je parlais du post précédent le mien. donc ça devait être toi, lol . [[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:28 (UTC)
PS: 3 ~ &quot;tildes&quot; permettent de n'afficher que le nom.

== bloc note ==

Une extension &quot;forum&quot; ?

http://www.mediawiki.org/wiki/Extension:AWC's_Forum - http://wiki.anotherwebcom.com/Installing_And_UnInstalling_(AWC_Wiki_Forum)

http://www.mediawiki.org/wiki/Extension:Forum_extension</text>
      <sha1>2o5tkoxk7iu8unlq877lrgbfm8sbbxk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>255</id>
      <parentid>245</parentid>
      <timestamp>2010-01-25T16:09:21Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* bloc note */</comment>
      <text xml:space="preserve" bytes="2293">Page de discussion avec lol...

[http://louis-c.myftp.org/wiki-debian/index.php/Test1 Ici] une petite proposition de page d'accueil afin de créer des rubriques pour classer les articles. C'est une bête copie de la page de madiawiki...

----
Hi, c'est L0u!$. Je te précise que pour les liens internes au wiki, il vaut mieux les mettre sous la forme \[\[Test1|page de test\]\] que de mettre un lien complet. ça permet de savoir si la page existe ou pas.

----
Merci... Je copie/colle les liens du navigateur, alors forcément... Désolé, je rectifie. ça va ça ne bouffe pas trop ta connexion cette plaisanterie ?

----
T'inquiete: grosso-modo, on est 5-6 à lire/écrire sur ce wiki pour l'instant.
Je vais bientot prendre un hébergement gratuit pour le mettre, car mes parents n'aiment pas que mon serveur soit allumé 24h/24 .

----
:Bonjour à vous, n'hésitez pas à vous inspirer de wikipédia pour obtenir des astuces de présentation. Pour signer un message sur une page de discussion il suffit de mettre quatre tildes de suite : [[Utilisateur:Woj|woj]] 20 janvier 2010 à 12:00 (UTC)

----
Re,
Merci Branch, cool ! Pour l'hébergement; j'ai un blog débile sur un domaine qui m'appartient, je vais voir si je peux y mettre un MediaWiki... Volume illimité ! Ils ne proposent que TikiWiki et PhpWiki. Je pose la question pour l'installation de MediaWiki (le + sympa à mon avis). Et puis comme on a commencé avec ça... [[Utilisateur:Lol|Lol]]

----
Ah, sympa, merci.
juste pour savoir: qui a écrit le texte juste au dessus? ( lol je présume ?) 
[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:14 (UTC)

----
Re,
Non au dessus, c'est &quot;branch&quot; dit woj ! (c'est signé...) [[Utilisateur:Lol|Lol]] 20 janvier 2010 à 14:24 (UTC)

----
Bah non, je parlais du post précédent le mien. donc ça devait être toi, lol . [[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:28 (UTC)
PS: 3 ~ &quot;tildes&quot; permettent de n'afficher que le nom.

== bloc note ==

Une extension &quot;forum&quot; ?

http://www.mediawiki.org/wiki/Extension:AWC's_Forum - http://wiki.anotherwebcom.com/Installing_And_UnInstalling_(AWC_Wiki_Forum)

http://www.mediawiki.org/wiki/Extension:Forum_extension

http://www.mediawiki.org/wiki/Extension:DPLforum/old

http://www.mediawiki.org/wiki/Extension:MediaWiki_Bulletin_Board</text>
      <sha1>1sie41xi2nwotb0vmsh54mu47m58326</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>256</id>
      <parentid>255</parentid>
      <timestamp>2010-01-25T16:19:32Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* bloc note */</comment>
      <text xml:space="preserve" bytes="2348">Page de discussion avec lol...

[http://louis-c.myftp.org/wiki-debian/index.php/Test1 Ici] une petite proposition de page d'accueil afin de créer des rubriques pour classer les articles. C'est une bête copie de la page de madiawiki...

----
Hi, c'est L0u!$. Je te précise que pour les liens internes au wiki, il vaut mieux les mettre sous la forme \[\[Test1|page de test\]\] que de mettre un lien complet. ça permet de savoir si la page existe ou pas.

----
Merci... Je copie/colle les liens du navigateur, alors forcément... Désolé, je rectifie. ça va ça ne bouffe pas trop ta connexion cette plaisanterie ?

----
T'inquiete: grosso-modo, on est 5-6 à lire/écrire sur ce wiki pour l'instant.
Je vais bientot prendre un hébergement gratuit pour le mettre, car mes parents n'aiment pas que mon serveur soit allumé 24h/24 .

----
:Bonjour à vous, n'hésitez pas à vous inspirer de wikipédia pour obtenir des astuces de présentation. Pour signer un message sur une page de discussion il suffit de mettre quatre tildes de suite : [[Utilisateur:Woj|woj]] 20 janvier 2010 à 12:00 (UTC)

----
Re,
Merci Branch, cool ! Pour l'hébergement; j'ai un blog débile sur un domaine qui m'appartient, je vais voir si je peux y mettre un MediaWiki... Volume illimité ! Ils ne proposent que TikiWiki et PhpWiki. Je pose la question pour l'installation de MediaWiki (le + sympa à mon avis). Et puis comme on a commencé avec ça... [[Utilisateur:Lol|Lol]]

----
Ah, sympa, merci.
juste pour savoir: qui a écrit le texte juste au dessus? ( lol je présume ?) 
[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:14 (UTC)

----
Re,
Non au dessus, c'est &quot;branch&quot; dit woj ! (c'est signé...) [[Utilisateur:Lol|Lol]] 20 janvier 2010 à 14:24 (UTC)

----
Bah non, je parlais du post précédent le mien. donc ça devait être toi, lol . [[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:28 (UTC)
PS: 3 ~ &quot;tildes&quot; permettent de n'afficher que le nom.

== bloc note ==

Une extension &quot;forum&quot; ?

http://www.mediawiki.org/wiki/Extension:AWC's_Forum - http://wiki.anotherwebcom.com/Installing_And_UnInstalling_(AWC_Wiki_Forum)

http://www.mediawiki.org/wiki/Extension:Forum_extension

http://www.mediawiki.org/wiki/Extension:DPLforum/old

http://www.mediawiki.org/wiki/Extension:MediaWiki_Bulletin_Board

http://www.mediawiki.org/wiki/Extension:LiquidThreads</text>
      <sha1>oe9qcsztr6fqzcetehwm7jsrus8j1xb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>258</id>
      <parentid>256</parentid>
      <timestamp>2010-01-25T17:48:06Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="2422">Page de discussion avec lol...

[http://louis-c.myftp.org/wiki-debian/index.php/Test1 Ici] une petite proposition de page d'accueil afin de créer des rubriques pour classer les articles. C'est une bête copie de la page de madiawiki...

----
Hi, c'est L0u!$. Je te précise que pour les liens internes au wiki, il vaut mieux les mettre sous la forme \[\[Test1|page de test\]\] que de mettre un lien complet. ça permet de savoir si la page existe ou pas.

----
Merci... Je copie/colle les liens du navigateur, alors forcément... Désolé, je rectifie. ça va ça ne bouffe pas trop ta connexion cette plaisanterie ?

----
T'inquiete: grosso-modo, on est 5-6 à lire/écrire sur ce wiki pour l'instant.
Je vais bientot prendre un hébergement gratuit pour le mettre, car mes parents n'aiment pas que mon serveur soit allumé 24h/24 .

----
:Bonjour à vous, n'hésitez pas à vous inspirer de wikipédia pour obtenir des astuces de présentation. Pour signer un message sur une page de discussion il suffit de mettre quatre tildes de suite : [[Utilisateur:Woj|woj]] 20 janvier 2010 à 12:00 (UTC)

----
Re,
Merci Branch, cool ! Pour l'hébergement; j'ai un blog débile sur un domaine qui m'appartient, je vais voir si je peux y mettre un MediaWiki... Volume illimité ! Ils ne proposent que TikiWiki et PhpWiki. Je pose la question pour l'installation de MediaWiki (le + sympa à mon avis). Et puis comme on a commencé avec ça... [[Utilisateur:Lol|Lol]]

----
Ah, sympa, merci.
juste pour savoir: qui a écrit le texte juste au dessus? ( lol je présume ?) 
[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:14 (UTC)

----
Re,
Non au dessus, c'est &quot;branch&quot; dit woj ! (c'est signé...) [[Utilisateur:Lol|Lol]] 20 janvier 2010 à 14:24 (UTC)

----
Bah non, je parlais du post précédent le mien. donc ça devait être toi, lol . [[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:28 (UTC)
PS: 3 ~ &quot;tildes&quot; permettent de n'afficher que le nom.

== bloc note ==

Une extension &quot;forum&quot; ?

http://www.mediawiki.org/wiki/Extension:AWC's_Forum - http://wiki.anotherwebcom.com/Installing_And_UnInstalling_(AWC_Wiki_Forum)

http://www.mediawiki.org/wiki/Extension:Forum_extension

http://www.mediawiki.org/wiki/Extension:DPLforum/old

http://www.mediawiki.org/wiki/Extension:MediaWiki_Bulletin_Board

http://www.mediawiki.org/wiki/Extension:LiquidThreads

---- 
la première a l'air vraiment pas mal. [[Utilisateur:L0u!$|L0u!$]]</text>
      <sha1>lo3v2ny4v8ldgtocekzob30q86ps3h4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>259</id>
      <parentid>258</parentid>
      <timestamp>2010-01-25T17:57:41Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* bloc note */</comment>
      <text xml:space="preserve" bytes="2735">Page de discussion avec lol...

[http://louis-c.myftp.org/wiki-debian/index.php/Test1 Ici] une petite proposition de page d'accueil afin de créer des rubriques pour classer les articles. C'est une bête copie de la page de madiawiki...

----
Hi, c'est L0u!$. Je te précise que pour les liens internes au wiki, il vaut mieux les mettre sous la forme \[\[Test1|page de test\]\] que de mettre un lien complet. ça permet de savoir si la page existe ou pas.

----
Merci... Je copie/colle les liens du navigateur, alors forcément... Désolé, je rectifie. ça va ça ne bouffe pas trop ta connexion cette plaisanterie ?

----
T'inquiete: grosso-modo, on est 5-6 à lire/écrire sur ce wiki pour l'instant.
Je vais bientot prendre un hébergement gratuit pour le mettre, car mes parents n'aiment pas que mon serveur soit allumé 24h/24 .

----
:Bonjour à vous, n'hésitez pas à vous inspirer de wikipédia pour obtenir des astuces de présentation. Pour signer un message sur une page de discussion il suffit de mettre quatre tildes de suite : [[Utilisateur:Woj|woj]] 20 janvier 2010 à 12:00 (UTC)

----
Re,
Merci Branch, cool ! Pour l'hébergement; j'ai un blog débile sur un domaine qui m'appartient, je vais voir si je peux y mettre un MediaWiki... Volume illimité ! Ils ne proposent que TikiWiki et PhpWiki. Je pose la question pour l'installation de MediaWiki (le + sympa à mon avis). Et puis comme on a commencé avec ça... [[Utilisateur:Lol|Lol]]

----
Ah, sympa, merci.
juste pour savoir: qui a écrit le texte juste au dessus? ( lol je présume ?) 
[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:14 (UTC)

----
Re,
Non au dessus, c'est &quot;branch&quot; dit woj ! (c'est signé...) [[Utilisateur:Lol|Lol]] 20 janvier 2010 à 14:24 (UTC)

----
Bah non, je parlais du post précédent le mien. donc ça devait être toi, lol . [[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:28 (UTC)
PS: 3 ~ &quot;tildes&quot; permettent de n'afficher que le nom.

== bloc note ==

Une extension &quot;forum&quot; ?

http://www.mediawiki.org/wiki/Extension:AWC's_Forum - http://wiki.anotherwebcom.com/Installing_And_UnInstalling_(AWC_Wiki_Forum)

http://www.mediawiki.org/wiki/Extension:Forum_extension

http://www.mediawiki.org/wiki/Extension:DPLforum/old

http://www.mediawiki.org/wiki/Extension:MediaWiki_Bulletin_Board

http://www.mediawiki.org/wiki/Extension:LiquidThreads

---- 
la première a l'air vraiment pas mal. [[Utilisateur:L0u!$|L0u!$]]

----
Oui, c'est celle par laquelle j'ai commencé. Mais elle m'a fait des misères. La deuxième aussi, j'y ai passé ma journée, sans résultat. Grrr ! Je retente la première demain. Les boules ! Mais ce serait vraiment l'idéal, léger et facile d'y aller. Un forum externe c'est trop lourd... Je PERSISTE !</text>
      <sha1>o3cfvfth19vajyec4xybu15nh87a5tv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>283</id>
      <parentid>259</parentid>
      <timestamp>2010-01-26T03:51:14Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* bloc note */</comment>
      <text xml:space="preserve" bytes="2796">Page de discussion avec lol...

[http://louis-c.myftp.org/wiki-debian/index.php/Test1 Ici] une petite proposition de page d'accueil afin de créer des rubriques pour classer les articles. C'est une bête copie de la page de madiawiki...

----
Hi, c'est L0u!$. Je te précise que pour les liens internes au wiki, il vaut mieux les mettre sous la forme \[\[Test1|page de test\]\] que de mettre un lien complet. ça permet de savoir si la page existe ou pas.

----
Merci... Je copie/colle les liens du navigateur, alors forcément... Désolé, je rectifie. ça va ça ne bouffe pas trop ta connexion cette plaisanterie ?

----
T'inquiete: grosso-modo, on est 5-6 à lire/écrire sur ce wiki pour l'instant.
Je vais bientot prendre un hébergement gratuit pour le mettre, car mes parents n'aiment pas que mon serveur soit allumé 24h/24 .

----
:Bonjour à vous, n'hésitez pas à vous inspirer de wikipédia pour obtenir des astuces de présentation. Pour signer un message sur une page de discussion il suffit de mettre quatre tildes de suite : [[Utilisateur:Woj|woj]] 20 janvier 2010 à 12:00 (UTC)

----
Re,
Merci Branch, cool ! Pour l'hébergement; j'ai un blog débile sur un domaine qui m'appartient, je vais voir si je peux y mettre un MediaWiki... Volume illimité ! Ils ne proposent que TikiWiki et PhpWiki. Je pose la question pour l'installation de MediaWiki (le + sympa à mon avis). Et puis comme on a commencé avec ça... [[Utilisateur:Lol|Lol]]

----
Ah, sympa, merci.
juste pour savoir: qui a écrit le texte juste au dessus? ( lol je présume ?) 
[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:14 (UTC)

----
Re,
Non au dessus, c'est &quot;branch&quot; dit woj ! (c'est signé...) [[Utilisateur:Lol|Lol]] 20 janvier 2010 à 14:24 (UTC)

----
Bah non, je parlais du post précédent le mien. donc ça devait être toi, lol . [[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:28 (UTC)
PS: 3 ~ &quot;tildes&quot; permettent de n'afficher que le nom.

== bloc note ==

Une extension &quot;forum&quot; ?

http://www.mediawiki.org/wiki/Extension:AWC's_Forum - http://wiki.anotherwebcom.com/Installing_And_UnInstalling_(AWC_Wiki_Forum)

http://www.mediawiki.org/wiki/Extension:Forum_extension

http://www.mediawiki.org/wiki/Extension:DPLforum/old

http://www.mediawiki.org/wiki/Extension:MediaWiki_Bulletin_Board

http://www.mediawiki.org/wiki/Extension:LiquidThreads + http://www.mediawiki.org/wiki/Special:ExtensionDistributor

---- 
la première a l'air vraiment pas mal. [[Utilisateur:L0u!$|L0u!$]]

----
Oui, c'est celle par laquelle j'ai commencé. Mais elle m'a fait des misères. La deuxième aussi, j'y ai passé ma journée, sans résultat. Grrr ! Je retente la première demain. Les boules ! Mais ce serait vraiment l'idéal, léger et facile d'y aller. Un forum externe c'est trop lourd... Je PERSISTE !</text>
      <sha1>be1dsitjaroacf7jmkkrowvxaozztut</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>323</id>
      <parentid>283</parentid>
      <timestamp>2010-01-26T13:37:46Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <text xml:space="preserve" bytes="2892">Page de discussion avec lol...

[http://louis-c.myftp.org/wiki-debian/index.php/Test1 Ici] une petite proposition de page d'accueil afin de créer des rubriques pour classer les articles. C'est une bête copie de la page de madiawiki...

----
Hi, c'est L0u!$. Je te précise que pour les liens internes au wiki, il vaut mieux les mettre sous la forme \[\[Test1|page de test\]\] que de mettre un lien complet. ça permet de savoir si la page existe ou pas.

----
Merci... Je copie/colle les liens du navigateur, alors forcément... Désolé, je rectifie. ça va ça ne bouffe pas trop ta connexion cette plaisanterie ?

----
T'inquiete: grosso-modo, on est 5-6 à lire/écrire sur ce wiki pour l'instant.
Je vais bientot prendre un hébergement gratuit pour le mettre, car mes parents n'aiment pas que mon serveur soit allumé 24h/24 .

----
:Bonjour à vous, n'hésitez pas à vous inspirer de wikipédia pour obtenir des astuces de présentation. Pour signer un message sur une page de discussion il suffit de mettre quatre tildes de suite : [[Utilisateur:Woj|woj]] 20 janvier 2010 à 12:00 (UTC)

----
Re,
Merci Branch, cool ! Pour l'hébergement; j'ai un blog débile sur un domaine qui m'appartient, je vais voir si je peux y mettre un MediaWiki... Volume illimité ! Ils ne proposent que TikiWiki et PhpWiki. Je pose la question pour l'installation de MediaWiki (le + sympa à mon avis). Et puis comme on a commencé avec ça... [[Utilisateur:Lol|Lol]]

----
Ah, sympa, merci.
juste pour savoir: qui a écrit le texte juste au dessus? ( lol je présume ?) 
[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:14 (UTC)

----
Re,
Non au dessus, c'est &quot;branch&quot; dit woj ! (c'est signé...) [[Utilisateur:Lol|Lol]] 20 janvier 2010 à 14:24 (UTC)

----
Bah non, je parlais du post précédent le mien. donc ça devait être toi, lol . [[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:28 (UTC)
PS: 3 ~ &quot;tildes&quot; permettent de n'afficher que le nom.

== bloc note ==

Une extension &quot;forum&quot; ?

http://www.mediawiki.org/wiki/Extension:AWC's_Forum - http://wiki.anotherwebcom.com/Installing_And_UnInstalling_(AWC_Wiki_Forum)

http://www.mediawiki.org/wiki/Extension:Forum_extension

http://www.mediawiki.org/wiki/Extension:DPLforum/old

http://www.mediawiki.org/wiki/Extension:MediaWiki_Bulletin_Board

http://www.mediawiki.org/wiki/Extension:LiquidThreads + http://www.mediawiki.org/wiki/Special:ExtensionDistributor

---- 
la première a l'air vraiment pas mal. [[Utilisateur:L0u!$|L0u!$]]

----
Oui, c'est celle par laquelle j'ai commencé. Mais elle m'a fait des misères. La deuxième aussi, j'y ai passé ma journée, sans résultat. Grrr ! Je retente la première demain. Les boules ! Mais ce serait vraiment l'idéal, léger et facile d'y aller. Un forum externe c'est trop lourd... Je PERSISTE !
----
Je découvre ta page : super photo, elle est de toi ?
[[Utilisateur:Ricardo|Ricardo]]
----</text>
      <sha1>dppwewailpchf4aq51y75jr08uyvgo8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>324</id>
      <parentid>323</parentid>
      <timestamp>2010-01-26T13:54:22Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="3122">Page de discussion avec lol...

[http://louis-c.myftp.org/wiki-debian/index.php/Test1 Ici] une petite proposition de page d'accueil afin de créer des rubriques pour classer les articles. C'est une bête copie de la page de madiawiki...
----
Hi, c'est L0u!$. Je te précise que pour les liens internes au wiki, il vaut mieux les mettre sous la forme \[\[Test1|page de test\]\] que de mettre un lien complet. ça permet de savoir si la page existe ou pas.
----
Merci... Je copie/colle les liens du navigateur, alors forcément... Désolé, je rectifie. ça va ça ne bouffe pas trop ta connexion cette plaisanterie ?
----
T'inquiete: grosso-modo, on est 5-6 à lire/écrire sur ce wiki pour l'instant.
Je vais bientot prendre un hébergement gratuit pour le mettre, car mes parents n'aiment pas que mon serveur soit allumé 24h/24 .
----
:Bonjour à vous, n'hésitez pas à vous inspirer de wikipédia pour obtenir des astuces de présentation. Pour signer un message sur une page de discussion il suffit de mettre quatre tildes de suite : [[Utilisateur:Woj|woj]] 20 janvier 2010 à 12:00 (UTC)
----
Re,
Merci Branch, cool ! Pour l'hébergement; j'ai un blog débile sur un domaine qui m'appartient, je vais voir si je peux y mettre un MediaWiki... Volume illimité ! Ils ne proposent que TikiWiki et PhpWiki. Je pose la question pour l'installation de MediaWiki (le + sympa à mon avis). Et puis comme on a commencé avec ça... [[Utilisateur:Lol|Lol]]
----
Ah, sympa, merci.
juste pour savoir: qui a écrit le texte juste au dessus? ( lol je présume ?) 
[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:14 (UTC)
----
Re,
Non au dessus, c'est &quot;branch&quot; dit woj ! (c'est signé...) [[Utilisateur:Lol|Lol]] 20 janvier 2010 à 14:24 (UTC)
----
Bah non, je parlais du post précédent le mien. donc ça devait être toi, lol . [[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:28 (UTC)
PS: 3 ~ &quot;tildes&quot; permettent de n'afficher que le nom.

== bloc note ==

Une extension &quot;forum&quot; ?

http://www.mediawiki.org/wiki/Extension:AWC's_Forum - http://wiki.anotherwebcom.com/Installing_And_UnInstalling_(AWC_Wiki_Forum)

http://www.mediawiki.org/wiki/Extension:Forum_extension

http://www.mediawiki.org/wiki/Extension:DPLforum/old

http://www.mediawiki.org/wiki/Extension:MediaWiki_Bulletin_Board

http://www.mediawiki.org/wiki/Extension:LiquidThreads + http://www.mediawiki.org/wiki/Special:ExtensionDistributor
---- 
la première a l'air vraiment pas mal. [[Utilisateur:L0u!$|L0u!$]]
----
Oui, c'est celle par laquelle j'ai commencé. Mais elle m'a fait des misères. La deuxième aussi, j'y ai passé ma journée, sans résultat. Grrr ! Je retente la première demain. Les boules ! Mais ce serait vraiment l'idéal, léger et facile d'y aller. Un forum externe c'est trop lourd... Je PERSISTE !
----
Je découvre ta page : super photo, elle est de toi ?
[[Utilisateur:Ricardo|Ricardo]]
----
Merci. Malheureusement... non ! Mais j'ai le droit de la publier rassure toi ! :) Tu as trouvé la signature, pratique ! Et si tu ajoute une quatrième &quot;tilde&quot; tu as la date et l'heure [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 13:54 (UTC)</text>
      <sha1>c0bf3msbhv7war5re1ohkdysq143imz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>338</id>
      <parentid>324</parentid>
      <timestamp>2010-01-26T17:00:15Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="3298">Page de discussion avec lol...

[http://louis-c.myftp.org/wiki-debian/index.php/Test1 Ici] une petite proposition de page d'accueil afin de créer des rubriques pour classer les articles. C'est une bête copie de la page de madiawiki...
----
Hi, c'est L0u!$. Je te précise que pour les liens internes au wiki, il vaut mieux les mettre sous la forme \[\[Test1|page de test\]\] que de mettre un lien complet. ça permet de savoir si la page existe ou pas.
----
Merci... Je copie/colle les liens du navigateur, alors forcément... Désolé, je rectifie. ça va ça ne bouffe pas trop ta connexion cette plaisanterie ?
----
T'inquiete: grosso-modo, on est 5-6 à lire/écrire sur ce wiki pour l'instant.
Je vais bientot prendre un hébergement gratuit pour le mettre, car mes parents n'aiment pas que mon serveur soit allumé 24h/24 .
----
:Bonjour à vous, n'hésitez pas à vous inspirer de wikipédia pour obtenir des astuces de présentation. Pour signer un message sur une page de discussion il suffit de mettre quatre tildes de suite : [[Utilisateur:Woj|woj]] 20 janvier 2010 à 12:00 (UTC)
----
Re,
Merci Branch, cool ! Pour l'hébergement; j'ai un blog débile sur un domaine qui m'appartient, je vais voir si je peux y mettre un MediaWiki... Volume illimité ! Ils ne proposent que TikiWiki et PhpWiki. Je pose la question pour l'installation de MediaWiki (le + sympa à mon avis). Et puis comme on a commencé avec ça... [[Utilisateur:Lol|Lol]]
----
Ah, sympa, merci.
juste pour savoir: qui a écrit le texte juste au dessus? ( lol je présume ?) 
[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:14 (UTC)
----
Re,
Non au dessus, c'est &quot;branch&quot; dit woj ! (c'est signé...) [[Utilisateur:Lol|Lol]] 20 janvier 2010 à 14:24 (UTC)
----
Bah non, je parlais du post précédent le mien. donc ça devait être toi, lol . [[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:28 (UTC)
PS: 3 ~ &quot;tildes&quot; permettent de n'afficher que le nom.

== bloc note ==

Une extension &quot;forum&quot; ?

http://www.mediawiki.org/wiki/Extension:AWC's_Forum - http://wiki.anotherwebcom.com/Installing_And_UnInstalling_(AWC_Wiki_Forum)

http://www.mediawiki.org/wiki/Extension:Forum_extension

http://www.mediawiki.org/wiki/Extension:DPLforum/old

http://www.mediawiki.org/wiki/Extension:MediaWiki_Bulletin_Board

http://www.mediawiki.org/wiki/Extension:LiquidThreads + http://www.mediawiki.org/wiki/Special:ExtensionDistributor
---- 
la première a l'air vraiment pas mal. [[Utilisateur:L0u!$|L0u!$]]
----
Oui, c'est celle par laquelle j'ai commencé. Mais elle m'a fait des misères. La deuxième aussi, j'y ai passé ma journée, sans résultat. Grrr ! Je retente la première demain. Les boules ! Mais ce serait vraiment l'idéal, léger et facile d'y aller. Un forum externe c'est trop lourd... Je PERSISTE !
----
Je découvre ta page : super photo, elle est de toi ?
[[Utilisateur:Ricardo|Ricardo]]
----
Merci. Malheureusement... non ! Mais j'ai le droit de la publier rassure toi ! :) Tu as trouvé la signature, pratique ! Et si tu ajoute une quatrième &quot;tilde&quot; tu as la date et l'heure [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 13:54 (UTC)
----
Est-ce que tu peux m'envoyer le fichier de conf du forum par mail stp lol, via l'adresse que je t'avais donné dans un MP du forum(debian-fr)? [[Utilisateur:L0u!$|L0u!$]]</text>
      <sha1>r68wiotvbexo81oz5gak0l4st37ymj0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>339</id>
      <parentid>338</parentid>
      <timestamp>2010-01-26T17:35:32Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="3392">Page de discussion avec lol...

[http://louis-c.myftp.org/wiki-debian/index.php/Test1 Ici] une petite proposition de page d'accueil afin de créer des rubriques pour classer les articles. C'est une bête copie de la page de madiawiki...
----
Hi, c'est L0u!$. Je te précise que pour les liens internes au wiki, il vaut mieux les mettre sous la forme \[\[Test1|page de test\]\] que de mettre un lien complet. ça permet de savoir si la page existe ou pas.
----
Merci... Je copie/colle les liens du navigateur, alors forcément... Désolé, je rectifie. ça va ça ne bouffe pas trop ta connexion cette plaisanterie ?
----
T'inquiete: grosso-modo, on est 5-6 à lire/écrire sur ce wiki pour l'instant.
Je vais bientot prendre un hébergement gratuit pour le mettre, car mes parents n'aiment pas que mon serveur soit allumé 24h/24 .
----
:Bonjour à vous, n'hésitez pas à vous inspirer de wikipédia pour obtenir des astuces de présentation. Pour signer un message sur une page de discussion il suffit de mettre quatre tildes de suite : [[Utilisateur:Woj|woj]] 20 janvier 2010 à 12:00 (UTC)
----
Re,
Merci Branch, cool ! Pour l'hébergement; j'ai un blog débile sur un domaine qui m'appartient, je vais voir si je peux y mettre un MediaWiki... Volume illimité ! Ils ne proposent que TikiWiki et PhpWiki. Je pose la question pour l'installation de MediaWiki (le + sympa à mon avis). Et puis comme on a commencé avec ça... [[Utilisateur:Lol|Lol]]
----
Ah, sympa, merci.
juste pour savoir: qui a écrit le texte juste au dessus? ( lol je présume ?) 
[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:14 (UTC)
----
Re,
Non au dessus, c'est &quot;branch&quot; dit woj ! (c'est signé...) [[Utilisateur:Lol|Lol]] 20 janvier 2010 à 14:24 (UTC)
----
Bah non, je parlais du post précédent le mien. donc ça devait être toi, lol . [[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:28 (UTC)
PS: 3 ~ &quot;tildes&quot; permettent de n'afficher que le nom.

== bloc note ==

Une extension &quot;forum&quot; ?

http://www.mediawiki.org/wiki/Extension:AWC's_Forum - http://wiki.anotherwebcom.com/Installing_And_UnInstalling_(AWC_Wiki_Forum)

http://www.mediawiki.org/wiki/Extension:Forum_extension

http://www.mediawiki.org/wiki/Extension:DPLforum/old

http://www.mediawiki.org/wiki/Extension:MediaWiki_Bulletin_Board

http://www.mediawiki.org/wiki/Extension:LiquidThreads + http://www.mediawiki.org/wiki/Special:ExtensionDistributor
---- 
la première a l'air vraiment pas mal. [[Utilisateur:L0u!$|L0u!$]]
----
Oui, c'est celle par laquelle j'ai commencé. Mais elle m'a fait des misères. La deuxième aussi, j'y ai passé ma journée, sans résultat. Grrr ! Je retente la première demain. Les boules ! Mais ce serait vraiment l'idéal, léger et facile d'y aller. Un forum externe c'est trop lourd... Je PERSISTE !
----
Je découvre ta page : super photo, elle est de toi ?
[[Utilisateur:Ricardo|Ricardo]]
----
Merci. Malheureusement... non ! Mais j'ai le droit de la publier rassure toi ! :) Tu as trouvé la signature, pratique ! Et si tu ajoute une quatrième &quot;tilde&quot; tu as la date et l'heure [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 13:54 (UTC)
----
Est-ce que tu peux m'envoyer le fichier de conf du forum par mail stp lol, via l'adresse que je t'avais donné dans un MP du forum(debian-fr)? [[Utilisateur:L0u!$|L0u!$]]
----
Bien sur, quels fichiers veux-tu exactement ? Juste le LocalSetting.php ? Quoi d'autre ?</text>
      <sha1>4s2os61xzeywns2k5tjyu5lv8z2krm8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>340</id>
      <parentid>339</parentid>
      <timestamp>2010-01-26T17:36:16Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="3447">Page de discussion avec lol...

[http://louis-c.myftp.org/wiki-debian/index.php/Test1 Ici] une petite proposition de page d'accueil afin de créer des rubriques pour classer les articles. C'est une bête copie de la page de madiawiki...
----
Hi, c'est L0u!$. Je te précise que pour les liens internes au wiki, il vaut mieux les mettre sous la forme \[\[Test1|page de test\]\] que de mettre un lien complet. ça permet de savoir si la page existe ou pas.
----
Merci... Je copie/colle les liens du navigateur, alors forcément... Désolé, je rectifie. ça va ça ne bouffe pas trop ta connexion cette plaisanterie ?
----
T'inquiete: grosso-modo, on est 5-6 à lire/écrire sur ce wiki pour l'instant.
Je vais bientot prendre un hébergement gratuit pour le mettre, car mes parents n'aiment pas que mon serveur soit allumé 24h/24 .
----
:Bonjour à vous, n'hésitez pas à vous inspirer de wikipédia pour obtenir des astuces de présentation. Pour signer un message sur une page de discussion il suffit de mettre quatre tildes de suite : [[Utilisateur:Woj|woj]] 20 janvier 2010 à 12:00 (UTC)
----
Re,
Merci Branch, cool ! Pour l'hébergement; j'ai un blog débile sur un domaine qui m'appartient, je vais voir si je peux y mettre un MediaWiki... Volume illimité ! Ils ne proposent que TikiWiki et PhpWiki. Je pose la question pour l'installation de MediaWiki (le + sympa à mon avis). Et puis comme on a commencé avec ça... [[Utilisateur:Lol|Lol]]
----
Ah, sympa, merci.
juste pour savoir: qui a écrit le texte juste au dessus? ( lol je présume ?) 
[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:14 (UTC)
----
Re,
Non au dessus, c'est &quot;branch&quot; dit woj ! (c'est signé...) [[Utilisateur:Lol|Lol]] 20 janvier 2010 à 14:24 (UTC)
----
Bah non, je parlais du post précédent le mien. donc ça devait être toi, lol . [[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:28 (UTC)
PS: 3 ~ &quot;tildes&quot; permettent de n'afficher que le nom.

== bloc note ==

Une extension &quot;forum&quot; ?

http://www.mediawiki.org/wiki/Extension:AWC's_Forum - http://wiki.anotherwebcom.com/Installing_And_UnInstalling_(AWC_Wiki_Forum)

http://www.mediawiki.org/wiki/Extension:Forum_extension

http://www.mediawiki.org/wiki/Extension:DPLforum/old

http://www.mediawiki.org/wiki/Extension:MediaWiki_Bulletin_Board

http://www.mediawiki.org/wiki/Extension:LiquidThreads + http://www.mediawiki.org/wiki/Special:ExtensionDistributor
---- 
la première a l'air vraiment pas mal. [[Utilisateur:L0u!$|L0u!$]]
----
Oui, c'est celle par laquelle j'ai commencé. Mais elle m'a fait des misères. La deuxième aussi, j'y ai passé ma journée, sans résultat. Grrr ! Je retente la première demain. Les boules ! Mais ce serait vraiment l'idéal, léger et facile d'y aller. Un forum externe c'est trop lourd... Je PERSISTE !
----
Je découvre ta page : super photo, elle est de toi ?
[[Utilisateur:Ricardo|Ricardo]]
----
Merci. Malheureusement... non ! Mais j'ai le droit de la publier rassure toi ! :) Tu as trouvé la signature, pratique ! Et si tu ajoute une quatrième &quot;tilde&quot; tu as la date et l'heure [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 13:54 (UTC)
----
Est-ce que tu peux m'envoyer le fichier de conf du forum par mail stp lol, via l'adresse que je t'avais donné dans un MP du forum(debian-fr)? [[Utilisateur:L0u!$|L0u!$]]
----
Bien sur, quels fichiers veux-tu exactement ? Juste le LocalSetting.php ? Quoi d'autre ? [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 17:36 (UTC)</text>
      <sha1>b20nkmp2cxlw8w0yt7279kks1x8e8bj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>345</id>
      <parentid>340</parentid>
      <timestamp>2010-01-26T18:28:50Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* bloc note */</comment>
      <text xml:space="preserve" bytes="3530">Page de discussion avec lol...

[http://louis-c.myftp.org/wiki-debian/index.php/Test1 Ici] une petite proposition de page d'accueil afin de créer des rubriques pour classer les articles. C'est une bête copie de la page de madiawiki...
----
Hi, c'est L0u!$. Je te précise que pour les liens internes au wiki, il vaut mieux les mettre sous la forme \[\[Test1|page de test\]\] que de mettre un lien complet. ça permet de savoir si la page existe ou pas.
----
Merci... Je copie/colle les liens du navigateur, alors forcément... Désolé, je rectifie. ça va ça ne bouffe pas trop ta connexion cette plaisanterie ?
----
T'inquiete: grosso-modo, on est 5-6 à lire/écrire sur ce wiki pour l'instant.
Je vais bientot prendre un hébergement gratuit pour le mettre, car mes parents n'aiment pas que mon serveur soit allumé 24h/24 .
----
:Bonjour à vous, n'hésitez pas à vous inspirer de wikipédia pour obtenir des astuces de présentation. Pour signer un message sur une page de discussion il suffit de mettre quatre tildes de suite : [[Utilisateur:Woj|woj]] 20 janvier 2010 à 12:00 (UTC)
----
Re,
Merci Branch, cool ! Pour l'hébergement; j'ai un blog débile sur un domaine qui m'appartient, je vais voir si je peux y mettre un MediaWiki... Volume illimité ! Ils ne proposent que TikiWiki et PhpWiki. Je pose la question pour l'installation de MediaWiki (le + sympa à mon avis). Et puis comme on a commencé avec ça... [[Utilisateur:Lol|Lol]]
----
Ah, sympa, merci.
juste pour savoir: qui a écrit le texte juste au dessus? ( lol je présume ?) 
[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:14 (UTC)
----
Re,
Non au dessus, c'est &quot;branch&quot; dit woj ! (c'est signé...) [[Utilisateur:Lol|Lol]] 20 janvier 2010 à 14:24 (UTC)
----
Bah non, je parlais du post précédent le mien. donc ça devait être toi, lol . [[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:28 (UTC)
PS: 3 ~ &quot;tildes&quot; permettent de n'afficher que le nom.

== bloc note ==

Une extension &quot;forum&quot; ?

http://www.mediawiki.org/wiki/Extension:AWC's_Forum - http://wiki.anotherwebcom.com/Installing_And_UnInstalling_(AWC_Wiki_Forum)

http://www.mediawiki.org/wiki/Extension:Forum_extension

http://www.mediawiki.org/wiki/Extension:DPLforum/old

http://www.mediawiki.org/wiki/Extension:MediaWiki_Bulletin_Board

http://www.mediawiki.org/wiki/Extension:LiquidThreads + http://www.mediawiki.org/wiki/Special:ExtensionDistributor

Mediawiki brésilien : http://wiki.forumdebian.com.br/index.php/Página_principal
---- 
la première a l'air vraiment pas mal. [[Utilisateur:L0u!$|L0u!$]]
----
Oui, c'est celle par laquelle j'ai commencé. Mais elle m'a fait des misères. La deuxième aussi, j'y ai passé ma journée, sans résultat. Grrr ! Je retente la première demain. Les boules ! Mais ce serait vraiment l'idéal, léger et facile d'y aller. Un forum externe c'est trop lourd... Je PERSISTE !
----
Je découvre ta page : super photo, elle est de toi ?
[[Utilisateur:Ricardo|Ricardo]]
----
Merci. Malheureusement... non ! Mais j'ai le droit de la publier rassure toi ! :) Tu as trouvé la signature, pratique ! Et si tu ajoute une quatrième &quot;tilde&quot; tu as la date et l'heure [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 13:54 (UTC)
----
Est-ce que tu peux m'envoyer le fichier de conf du forum par mail stp lol, via l'adresse que je t'avais donné dans un MP du forum(debian-fr)? [[Utilisateur:L0u!$|L0u!$]]
----
Bien sur, quels fichiers veux-tu exactement ? Juste le LocalSetting.php ? Quoi d'autre ? [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 17:36 (UTC)</text>
      <sha1>k7cf7spdas8yqtd9oxf06uwq1huxyd6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>348</id>
      <parentid>345</parentid>
      <timestamp>2010-01-26T21:21:48Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="3666">Page de discussion avec lol...

[http://louis-c.myftp.org/wiki-debian/index.php/Test1 Ici] une petite proposition de page d'accueil afin de créer des rubriques pour classer les articles. C'est une bête copie de la page de madiawiki...
----
Hi, c'est L0u!$. Je te précise que pour les liens internes au wiki, il vaut mieux les mettre sous la forme \[\[Test1|page de test\]\] que de mettre un lien complet. ça permet de savoir si la page existe ou pas.
----
Merci... Je copie/colle les liens du navigateur, alors forcément... Désolé, je rectifie. ça va ça ne bouffe pas trop ta connexion cette plaisanterie ?
----
T'inquiete: grosso-modo, on est 5-6 à lire/écrire sur ce wiki pour l'instant.
Je vais bientot prendre un hébergement gratuit pour le mettre, car mes parents n'aiment pas que mon serveur soit allumé 24h/24 .
----
:Bonjour à vous, n'hésitez pas à vous inspirer de wikipédia pour obtenir des astuces de présentation. Pour signer un message sur une page de discussion il suffit de mettre quatre tildes de suite : [[Utilisateur:Woj|woj]] 20 janvier 2010 à 12:00 (UTC)
----
Re,
Merci Branch, cool ! Pour l'hébergement; j'ai un blog débile sur un domaine qui m'appartient, je vais voir si je peux y mettre un MediaWiki... Volume illimité ! Ils ne proposent que TikiWiki et PhpWiki. Je pose la question pour l'installation de MediaWiki (le + sympa à mon avis). Et puis comme on a commencé avec ça... [[Utilisateur:Lol|Lol]]
----
Ah, sympa, merci.
juste pour savoir: qui a écrit le texte juste au dessus? ( lol je présume ?) 
[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:14 (UTC)
----
Re,
Non au dessus, c'est &quot;branch&quot; dit woj ! (c'est signé...) [[Utilisateur:Lol|Lol]] 20 janvier 2010 à 14:24 (UTC)
----
Bah non, je parlais du post précédent le mien. donc ça devait être toi, lol . [[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:28 (UTC)
PS: 3 ~ &quot;tildes&quot; permettent de n'afficher que le nom.

== bloc note ==

Une extension &quot;forum&quot; ?

http://www.mediawiki.org/wiki/Extension:AWC's_Forum - http://wiki.anotherwebcom.com/Installing_And_UnInstalling_(AWC_Wiki_Forum)

http://www.mediawiki.org/wiki/Extension:Forum_extension

http://www.mediawiki.org/wiki/Extension:DPLforum/old

http://www.mediawiki.org/wiki/Extension:MediaWiki_Bulletin_Board

http://www.mediawiki.org/wiki/Extension:LiquidThreads + http://www.mediawiki.org/wiki/Special:ExtensionDistributor

Mediawiki brésilien : http://wiki.forumdebian.com.br/index.php/Página_principal
---- 
la première a l'air vraiment pas mal. [[Utilisateur:L0u!$|L0u!$]]
----
Oui, c'est celle par laquelle j'ai commencé. Mais elle m'a fait des misères. La deuxième aussi, j'y ai passé ma journée, sans résultat. Grrr ! Je retente la première demain. Les boules ! Mais ce serait vraiment l'idéal, léger et facile d'y aller. Un forum externe c'est trop lourd... Je PERSISTE !
----
Je découvre ta page : super photo, elle est de toi ?
[[Utilisateur:Ricardo|Ricardo]]
----
Merci. Malheureusement... non ! Mais j'ai le droit de la publier rassure toi ! :) Tu as trouvé la signature, pratique ! Et si tu ajoute une quatrième &quot;tilde&quot; tu as la date et l'heure [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 13:54 (UTC)
----
Est-ce que tu peux m'envoyer le fichier de conf du forum par mail stp lol, via l'adresse que je t'avais donné dans un MP du forum(debian-fr)? [[Utilisateur:L0u!$|L0u!$]]
----
Bien sur, quels fichiers veux-tu exactement ? Juste le LocalSetting.php ? Quoi d'autre ? [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 17:36 (UTC)
----
Celui que tu as donné sur [[Discussion_utilisateur:L0u!$]] si possible [[Utilisateur:L0u!$|L0u!$]] 26 janvier 2010 à 21:21 (UTC)</text>
      <sha1>e5oqy33dd6704q0snkoy1ceu2f3vc0o</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>388</id>
      <parentid>348</parentid>
      <timestamp>2010-01-27T08:39:58Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="3709">Page de discussion avec lol...

[http://louis-c.myftp.org/wiki-debian/index.php/Test1 Ici] une petite proposition de page d'accueil afin de créer des rubriques pour classer les articles. C'est une bête copie de la page de madiawiki...
----
Hi, c'est L0u!$. Je te précise que pour les liens internes au wiki, il vaut mieux les mettre sous la forme \[\[Test1|page de test\]\] que de mettre un lien complet. ça permet de savoir si la page existe ou pas.
----
Merci... Je copie/colle les liens du navigateur, alors forcément... Désolé, je rectifie. ça va ça ne bouffe pas trop ta connexion cette plaisanterie ?
----
T'inquiete: grosso-modo, on est 5-6 à lire/écrire sur ce wiki pour l'instant.
Je vais bientot prendre un hébergement gratuit pour le mettre, car mes parents n'aiment pas que mon serveur soit allumé 24h/24 .
----
:Bonjour à vous, n'hésitez pas à vous inspirer de wikipédia pour obtenir des astuces de présentation. Pour signer un message sur une page de discussion il suffit de mettre quatre tildes de suite : [[Utilisateur:Woj|woj]] 20 janvier 2010 à 12:00 (UTC)
----
Re,
Merci Branch, cool ! Pour l'hébergement; j'ai un blog débile sur un domaine qui m'appartient, je vais voir si je peux y mettre un MediaWiki... Volume illimité ! Ils ne proposent que TikiWiki et PhpWiki. Je pose la question pour l'installation de MediaWiki (le + sympa à mon avis). Et puis comme on a commencé avec ça... [[Utilisateur:Lol|Lol]]
----
Ah, sympa, merci.
juste pour savoir: qui a écrit le texte juste au dessus? ( lol je présume ?) 
[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:14 (UTC)
----
Re,
Non au dessus, c'est &quot;branch&quot; dit woj ! (c'est signé...) [[Utilisateur:Lol|Lol]] 20 janvier 2010 à 14:24 (UTC)
----
Bah non, je parlais du post précédent le mien. donc ça devait être toi, lol . [[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:28 (UTC)
PS: 3 ~ &quot;tildes&quot; permettent de n'afficher que le nom.

== bloc note ==

Une extension &quot;forum&quot; ?

http://www.mediawiki.org/wiki/Extension:AWC's_Forum - http://wiki.anotherwebcom.com/Installing_And_UnInstalling_(AWC_Wiki_Forum)

http://www.mediawiki.org/wiki/Extension:Forum_extension

http://www.mediawiki.org/wiki/Extension:DPLforum/old

http://www.mediawiki.org/wiki/Extension:MediaWiki_Bulletin_Board

http://www.mediawiki.org/wiki/Extension:LiquidThreads + http://www.mediawiki.org/wiki/Special:ExtensionDistributor

Mediawiki brésilien : http://wiki.forumdebian.com.br/index.php/Página_principal
---- 
la première a l'air vraiment pas mal. [[Utilisateur:L0u!$|L0u!$]]
----
Oui, c'est celle par laquelle j'ai commencé. Mais elle m'a fait des misères. La deuxième aussi, j'y ai passé ma journée, sans résultat. Grrr ! Je retente la première demain. Les boules ! Mais ce serait vraiment l'idéal, léger et facile d'y aller. Un forum externe c'est trop lourd... Je PERSISTE !
----
Je découvre ta page : super photo, elle est de toi ?
[[Utilisateur:Ricardo|Ricardo]]
----
Merci. Malheureusement... non ! Mais j'ai le droit de la publier rassure toi ! :) Tu as trouvé la signature, pratique ! Et si tu ajoute une quatrième &quot;tilde&quot; tu as la date et l'heure [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 13:54 (UTC)
----
Est-ce que tu peux m'envoyer le fichier de conf du forum par mail stp lol, via l'adresse que je t'avais donné dans un MP du forum(debian-fr)? [[Utilisateur:L0u!$|L0u!$]]
----
Bien sur, quels fichiers veux-tu exactement ? Juste le LocalSetting.php ? Quoi d'autre ? [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 17:36 (UTC)
----
Celui que tu as donné sur [[Discussion_utilisateur:L0u!$]] si possible. Bon bah plus besoin finalement. ( bravo!) [[Utilisateur:L0u!$|L0u!$]] 26 janvier 2010 à 21:21 (UTC)</text>
      <sha1>5dl149t56eg7cjgqz70n7hs5na5h4pa</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>421</id>
      <parentid>388</parentid>
      <timestamp>2010-01-27T14:43:41Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3753">Page de discussion avec lol...

[http://louis-c.myftp.org/wiki-debian/index.php/Test1 Ici] une petite proposition de page d'accueil afin de créer des rubriques pour classer les articles. C'est une bête copie de la page de madiawiki...
----
Hi, c'est L0u!$. Je te précise que pour les liens internes au wiki, il vaut mieux les mettre sous la forme \[\[Test1|page de test\]\] que de mettre un lien complet. ça permet de savoir si la page existe ou pas.
----
Merci... Je copie/colle les liens du navigateur, alors forcément... Désolé, je rectifie. ça va ça ne bouffe pas trop ta connexion cette plaisanterie ?
----
T'inquiete: grosso-modo, on est 5-6 à lire/écrire sur ce wiki pour l'instant.
Je vais bientot prendre un hébergement gratuit pour le mettre, car mes parents n'aiment pas que mon serveur soit allumé 24h/24 .
----
:Bonjour à vous, n'hésitez pas à vous inspirer de wikipédia pour obtenir des astuces de présentation. Pour signer un message sur une page de discussion il suffit de mettre quatre tildes de suite : [[Utilisateur:Woj|woj]] 20 janvier 2010 à 12:00 (UTC)
----
Re,
Merci Branch, cool ! Pour l'hébergement; j'ai un blog débile sur un domaine qui m'appartient, je vais voir si je peux y mettre un MediaWiki... Volume illimité ! Ils ne proposent que TikiWiki et PhpWiki. Je pose la question pour l'installation de MediaWiki (le + sympa à mon avis). Et puis comme on a commencé avec ça... [[Utilisateur:Lol|Lol]]
----
Ah, sympa, merci.
juste pour savoir: qui a écrit le texte juste au dessus? ( lol je présume ?) 
[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:14 (UTC)
----
Re,
Non au dessus, c'est &quot;branch&quot; dit woj ! (c'est signé...) [[Utilisateur:Lol|Lol]] 20 janvier 2010 à 14:24 (UTC)
----
Bah non, je parlais du post précédent le mien. donc ça devait être toi, lol . [[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:28 (UTC)
PS: 3 ~ &quot;tildes&quot; permettent de n'afficher que le nom.

== bloc note ==

Une extension &quot;forum&quot; ?

http://www.mediawiki.org/wiki/Extension:AWC's_Forum - http://wiki.anotherwebcom.com/Installing_And_UnInstalling_(AWC_Wiki_Forum)

http://www.mediawiki.org/wiki/Extension:Forum_extension

http://www.mediawiki.org/wiki/Extension:DPLforum/old

http://www.mediawiki.org/wiki/Extension:MediaWiki_Bulletin_Board

http://www.mediawiki.org/wiki/Extension:LiquidThreads + http://www.mediawiki.org/wiki/Special:ExtensionDistributor

Mediawiki brésilien : http://wiki.forumdebian.com.br/index.php/Página_principal
---- 
la première a l'air vraiment pas mal. [[Utilisateur:L0u!$|L0u!$]]
----
Oui, c'est celle par laquelle j'ai commencé. Mais elle m'a fait des misères. La deuxième aussi, j'y ai passé ma journée, sans résultat. Grrr ! Je retente la première demain. Les boules ! Mais ce serait vraiment l'idéal, léger et facile d'y aller. Un forum externe c'est trop lourd... Je PERSISTE !
----
Je découvre ta page : super photo, elle est de toi ?
[[Utilisateur:Ricardo|Ricardo]]
----
Merci. Malheureusement... non ! Mais j'ai le droit de la publier rassure toi ! :) Tu as trouvé la signature, pratique ! Et si tu ajoute une quatrième &quot;tilde&quot; tu as la date et l'heure [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 13:54 (UTC)
----
Est-ce que tu peux m'envoyer le fichier de conf du forum par mail stp lol, via l'adresse que je t'avais donné dans un MP du forum(debian-fr)? [[Utilisateur:L0u!$|L0u!$]]
----
Bien sur, quels fichiers veux-tu exactement ? Juste le LocalSetting.php ? Quoi d'autre ? [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 17:36 (UTC)
----
Celui que tu as donné sur [[Discussion_utilisateur:L0u!$]] si possible. Bon bah plus besoin finalement. ( bravo!) [[Utilisateur:L0u!$|L0u!$]] 26 janvier 2010 à 21:21 (UTC)
----
:) :) :) :) :) [[Utilisateur:Lol|Lol]]</text>
      <sha1>3179l9vna4ea20te50lno7w3h4j9l6m</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>428</id>
      <parentid>421</parentid>
      <timestamp>2010-01-27T18:55:28Z</timestamp>
      <contributor>
        <username>Fran.b</username>
        <id>13</id>
      </contributor>
      <text xml:space="preserve" bytes="3898">Page de discussion avec lol...

[http://louis-c.myftp.org/wiki-debian/index.php/Test1 Ici] une petite proposition de page d'accueil afin de créer des rubriques pour classer les articles. C'est une bête copie de la page de madiawiki...
----
Hi, c'est L0u!$. Je te précise que pour les liens internes au wiki, il vaut mieux les mettre sous la forme \[\[Test1|page de test\]\] que de mettre un lien complet. ça permet de savoir si la page existe ou pas.
----
Merci... Je copie/colle les liens du navigateur, alors forcément... Désolé, je rectifie. ça va ça ne bouffe pas trop ta connexion cette plaisanterie ?
----
T'inquiete: grosso-modo, on est 5-6 à lire/écrire sur ce wiki pour l'instant.
Je vais bientot prendre un hébergement gratuit pour le mettre, car mes parents n'aiment pas que mon serveur soit allumé 24h/24 .
----
:Bonjour à vous, n'hésitez pas à vous inspirer de wikipédia pour obtenir des astuces de présentation. Pour signer un message sur une page de discussion il suffit de mettre quatre tildes de suite : [[Utilisateur:Woj|woj]] 20 janvier 2010 à 12:00 (UTC)
----
Re,
Merci Branch, cool ! Pour l'hébergement; j'ai un blog débile sur un domaine qui m'appartient, je vais voir si je peux y mettre un MediaWiki... Volume illimité ! Ils ne proposent que TikiWiki et PhpWiki. Je pose la question pour l'installation de MediaWiki (le + sympa à mon avis). Et puis comme on a commencé avec ça... [[Utilisateur:Lol|Lol]]
----
Ah, sympa, merci.
juste pour savoir: qui a écrit le texte juste au dessus? ( lol je présume ?) 
[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:14 (UTC)
----
Re,
Non au dessus, c'est &quot;branch&quot; dit woj ! (c'est signé...) [[Utilisateur:Lol|Lol]] 20 janvier 2010 à 14:24 (UTC)
----
Bah non, je parlais du post précédent le mien. donc ça devait être toi, lol . [[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:28 (UTC)
PS: 3 ~ &quot;tildes&quot; permettent de n'afficher que le nom.

== bloc note ==

Une extension &quot;forum&quot; ?

http://www.mediawiki.org/wiki/Extension:AWC's_Forum - http://wiki.anotherwebcom.com/Installing_And_UnInstalling_(AWC_Wiki_Forum)

http://www.mediawiki.org/wiki/Extension:Forum_extension

http://www.mediawiki.org/wiki/Extension:DPLforum/old

http://www.mediawiki.org/wiki/Extension:MediaWiki_Bulletin_Board

http://www.mediawiki.org/wiki/Extension:LiquidThreads + http://www.mediawiki.org/wiki/Special:ExtensionDistributor

Mediawiki brésilien : http://wiki.forumdebian.com.br/index.php/Página_principal
---- 
la première a l'air vraiment pas mal. [[Utilisateur:L0u!$|L0u!$]]
----
Oui, c'est celle par laquelle j'ai commencé. Mais elle m'a fait des misères. La deuxième aussi, j'y ai passé ma journée, sans résultat. Grrr ! Je retente la première demain. Les boules ! Mais ce serait vraiment l'idéal, léger et facile d'y aller. Un forum externe c'est trop lourd... Je PERSISTE !
----
Je découvre ta page : super photo, elle est de toi ?
[[Utilisateur:Ricardo|Ricardo]]
----
Merci. Malheureusement... non ! Mais j'ai le droit de la publier rassure toi ! :) Tu as trouvé la signature, pratique ! Et si tu ajoute une quatrième &quot;tilde&quot; tu as la date et l'heure [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 13:54 (UTC)
----
Est-ce que tu peux m'envoyer le fichier de conf du forum par mail stp lol, via l'adresse que je t'avais donné dans un MP du forum(debian-fr)? [[Utilisateur:L0u!$|L0u!$]]
----
Bien sur, quels fichiers veux-tu exactement ? Juste le LocalSetting.php ? Quoi d'autre ? [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 17:36 (UTC)
----
Celui que tu as donné sur [[Discussion_utilisateur:L0u!$]] si possible. Bon bah plus besoin finalement. ( bravo!) [[Utilisateur:L0u!$|L0u!$]] 26 janvier 2010 à 21:21 (UTC)
----
:) :) :) :) :) [[Utilisateur:Lol|Lol]]

= approbation=
Comment on fait pour approuver un article?? Je n'ai rien trouvé...
[[Utilisateur:Fran.b|Fran.b]] 27 janvier 2010 à 18:55 (UTC)</text>
      <sha1>euqgku7k45elsqlry7y1umecu6mvz6o</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>429</id>
      <parentid>428</parentid>
      <timestamp>2010-01-27T19:02:15Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <comment>/* approbation */</comment>
      <text xml:space="preserve" bytes="4343">Page de discussion avec lol...

[http://louis-c.myftp.org/wiki-debian/index.php/Test1 Ici] une petite proposition de page d'accueil afin de créer des rubriques pour classer les articles. C'est une bête copie de la page de madiawiki...
----
Hi, c'est L0u!$. Je te précise que pour les liens internes au wiki, il vaut mieux les mettre sous la forme \[\[Test1|page de test\]\] que de mettre un lien complet. ça permet de savoir si la page existe ou pas.
----
Merci... Je copie/colle les liens du navigateur, alors forcément... Désolé, je rectifie. ça va ça ne bouffe pas trop ta connexion cette plaisanterie ?
----
T'inquiete: grosso-modo, on est 5-6 à lire/écrire sur ce wiki pour l'instant.
Je vais bientot prendre un hébergement gratuit pour le mettre, car mes parents n'aiment pas que mon serveur soit allumé 24h/24 .
----
:Bonjour à vous, n'hésitez pas à vous inspirer de wikipédia pour obtenir des astuces de présentation. Pour signer un message sur une page de discussion il suffit de mettre quatre tildes de suite : [[Utilisateur:Woj|woj]] 20 janvier 2010 à 12:00 (UTC)
----
Re,
Merci Branch, cool ! Pour l'hébergement; j'ai un blog débile sur un domaine qui m'appartient, je vais voir si je peux y mettre un MediaWiki... Volume illimité ! Ils ne proposent que TikiWiki et PhpWiki. Je pose la question pour l'installation de MediaWiki (le + sympa à mon avis). Et puis comme on a commencé avec ça... [[Utilisateur:Lol|Lol]]
----
Ah, sympa, merci.
juste pour savoir: qui a écrit le texte juste au dessus? ( lol je présume ?) 
[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:14 (UTC)
----
Re,
Non au dessus, c'est &quot;branch&quot; dit woj ! (c'est signé...) [[Utilisateur:Lol|Lol]] 20 janvier 2010 à 14:24 (UTC)
----
Bah non, je parlais du post précédent le mien. donc ça devait être toi, lol . [[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:28 (UTC)
PS: 3 ~ &quot;tildes&quot; permettent de n'afficher que le nom.

== bloc note ==

Une extension &quot;forum&quot; ?

http://www.mediawiki.org/wiki/Extension:AWC's_Forum - http://wiki.anotherwebcom.com/Installing_And_UnInstalling_(AWC_Wiki_Forum)

http://www.mediawiki.org/wiki/Extension:Forum_extension

http://www.mediawiki.org/wiki/Extension:DPLforum/old

http://www.mediawiki.org/wiki/Extension:MediaWiki_Bulletin_Board

http://www.mediawiki.org/wiki/Extension:LiquidThreads + http://www.mediawiki.org/wiki/Special:ExtensionDistributor

Mediawiki brésilien : http://wiki.forumdebian.com.br/index.php/Página_principal
---- 
la première a l'air vraiment pas mal. [[Utilisateur:L0u!$|L0u!$]]
----
Oui, c'est celle par laquelle j'ai commencé. Mais elle m'a fait des misères. La deuxième aussi, j'y ai passé ma journée, sans résultat. Grrr ! Je retente la première demain. Les boules ! Mais ce serait vraiment l'idéal, léger et facile d'y aller. Un forum externe c'est trop lourd... Je PERSISTE !
----
Je découvre ta page : super photo, elle est de toi ?
[[Utilisateur:Ricardo|Ricardo]]
----
Merci. Malheureusement... non ! Mais j'ai le droit de la publier rassure toi ! :) Tu as trouvé la signature, pratique ! Et si tu ajoute une quatrième &quot;tilde&quot; tu as la date et l'heure [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 13:54 (UTC)
----
Est-ce que tu peux m'envoyer le fichier de conf du forum par mail stp lol, via l'adresse que je t'avais donné dans un MP du forum(debian-fr)? [[Utilisateur:L0u!$|L0u!$]]
----
Bien sur, quels fichiers veux-tu exactement ? Juste le LocalSetting.php ? Quoi d'autre ? [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 17:36 (UTC)
----
Celui que tu as donné sur [[Discussion_utilisateur:L0u!$]] si possible. Bon bah plus besoin finalement. ( bravo!) [[Utilisateur:L0u!$|L0u!$]] 26 janvier 2010 à 21:21 (UTC)
----
:) :) :) :) :) [[Utilisateur:Lol|Lol]]

= approbation=
Comment on fait pour approuver un article?? Je n'ai rien trouvé...
[[Utilisateur:Fran.b|Fran.b]] 27 janvier 2010 à 18:55 (UTC)
----
Salut, tu dois avoir en bas des pages l'option &quot;Relire cette version&quot;. Elle permet de donner un avis sue la qualité de la page &quot;relue&quot;.
Tu dois ausi avoir un ongler en haut des pages (aq = assurance qualité) qui permet de &quot;stabiliser&quot; les pages. J'avoue que pour cette option je n'ai pas fait d'essai... Tu te lances ? [[Utilisateur:WikiSysop|WikiSysop]] (c'est lol qui écrit, je me suis connecté en admin pour vérifier ce que je dit)</text>
      <sha1>gnjaibit21avc16tmm8henz4qloes7l</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>430</id>
      <parentid>429</parentid>
      <timestamp>2010-01-27T19:03:08Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <comment>/* approbation */</comment>
      <text xml:space="preserve" bytes="4343">Page de discussion avec lol...

[http://louis-c.myftp.org/wiki-debian/index.php/Test1 Ici] une petite proposition de page d'accueil afin de créer des rubriques pour classer les articles. C'est une bête copie de la page de madiawiki...
----
Hi, c'est L0u!$. Je te précise que pour les liens internes au wiki, il vaut mieux les mettre sous la forme \[\[Test1|page de test\]\] que de mettre un lien complet. ça permet de savoir si la page existe ou pas.
----
Merci... Je copie/colle les liens du navigateur, alors forcément... Désolé, je rectifie. ça va ça ne bouffe pas trop ta connexion cette plaisanterie ?
----
T'inquiete: grosso-modo, on est 5-6 à lire/écrire sur ce wiki pour l'instant.
Je vais bientot prendre un hébergement gratuit pour le mettre, car mes parents n'aiment pas que mon serveur soit allumé 24h/24 .
----
:Bonjour à vous, n'hésitez pas à vous inspirer de wikipédia pour obtenir des astuces de présentation. Pour signer un message sur une page de discussion il suffit de mettre quatre tildes de suite : [[Utilisateur:Woj|woj]] 20 janvier 2010 à 12:00 (UTC)
----
Re,
Merci Branch, cool ! Pour l'hébergement; j'ai un blog débile sur un domaine qui m'appartient, je vais voir si je peux y mettre un MediaWiki... Volume illimité ! Ils ne proposent que TikiWiki et PhpWiki. Je pose la question pour l'installation de MediaWiki (le + sympa à mon avis). Et puis comme on a commencé avec ça... [[Utilisateur:Lol|Lol]]
----
Ah, sympa, merci.
juste pour savoir: qui a écrit le texte juste au dessus? ( lol je présume ?) 
[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:14 (UTC)
----
Re,
Non au dessus, c'est &quot;branch&quot; dit woj ! (c'est signé...) [[Utilisateur:Lol|Lol]] 20 janvier 2010 à 14:24 (UTC)
----
Bah non, je parlais du post précédent le mien. donc ça devait être toi, lol . [[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:28 (UTC)
PS: 3 ~ &quot;tildes&quot; permettent de n'afficher que le nom.

== bloc note ==

Une extension &quot;forum&quot; ?

http://www.mediawiki.org/wiki/Extension:AWC's_Forum - http://wiki.anotherwebcom.com/Installing_And_UnInstalling_(AWC_Wiki_Forum)

http://www.mediawiki.org/wiki/Extension:Forum_extension

http://www.mediawiki.org/wiki/Extension:DPLforum/old

http://www.mediawiki.org/wiki/Extension:MediaWiki_Bulletin_Board

http://www.mediawiki.org/wiki/Extension:LiquidThreads + http://www.mediawiki.org/wiki/Special:ExtensionDistributor

Mediawiki brésilien : http://wiki.forumdebian.com.br/index.php/Página_principal
---- 
la première a l'air vraiment pas mal. [[Utilisateur:L0u!$|L0u!$]]
----
Oui, c'est celle par laquelle j'ai commencé. Mais elle m'a fait des misères. La deuxième aussi, j'y ai passé ma journée, sans résultat. Grrr ! Je retente la première demain. Les boules ! Mais ce serait vraiment l'idéal, léger et facile d'y aller. Un forum externe c'est trop lourd... Je PERSISTE !
----
Je découvre ta page : super photo, elle est de toi ?
[[Utilisateur:Ricardo|Ricardo]]
----
Merci. Malheureusement... non ! Mais j'ai le droit de la publier rassure toi ! :) Tu as trouvé la signature, pratique ! Et si tu ajoute une quatrième &quot;tilde&quot; tu as la date et l'heure [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 13:54 (UTC)
----
Est-ce que tu peux m'envoyer le fichier de conf du forum par mail stp lol, via l'adresse que je t'avais donné dans un MP du forum(debian-fr)? [[Utilisateur:L0u!$|L0u!$]]
----
Bien sur, quels fichiers veux-tu exactement ? Juste le LocalSetting.php ? Quoi d'autre ? [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 17:36 (UTC)
----
Celui que tu as donné sur [[Discussion_utilisateur:L0u!$]] si possible. Bon bah plus besoin finalement. ( bravo!) [[Utilisateur:L0u!$|L0u!$]] 26 janvier 2010 à 21:21 (UTC)
----
:) :) :) :) :) [[Utilisateur:Lol|Lol]]

= approbation=
Comment on fait pour approuver un article?? Je n'ai rien trouvé...
[[Utilisateur:Fran.b|Fran.b]] 27 janvier 2010 à 18:55 (UTC)
----
Salut, tu dois avoir en bas des pages l'option &quot;Relire cette version&quot;. Elle permet de donner un avis sur la qualité de la page &quot;relue&quot;.
Tu dois ausi avoir un ongler en haut des pages (aq = assurance qualité) qui permet de &quot;stabiliser&quot; les pages. J'avoue que pour cette option je n'ai pas fait d'essai... Tu te lances ? [[Utilisateur:WikiSysop|WikiSysop]] (c'est lol qui écrit, je me suis connecté en admin pour vérifier ce que je dit)</text>
      <sha1>b30pdq7xddi4wibqmu0ierhflf9mtor</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>619</id>
      <parentid>430</parentid>
      <timestamp>2010-02-01T07:25:05Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="4343">Page de discussion avec lol...

[http://louis-c.myftp.org/wiki-debian/index.php/Test1 Ici] une petite proposition de page d'accueil afin de créer des rubriques pour classer les articles. C'est une bête copie de la page de mediawiki...
----
Hi, c'est L0u!$. Je te précise que pour les liens internes au wiki, il vaut mieux les mettre sous la forme \[\[Test1|page de test\]\] que de mettre un lien complet. ça permet de savoir si la page existe ou pas.
----
Merci... Je copie/colle les liens du navigateur, alors forcément... Désolé, je rectifie. ça va ça ne bouffe pas trop ta connexion cette plaisanterie ?
----
T'inquiete: grosso-modo, on est 5-6 à lire/écrire sur ce wiki pour l'instant.
Je vais bientot prendre un hébergement gratuit pour le mettre, car mes parents n'aiment pas que mon serveur soit allumé 24h/24 .
----
:Bonjour à vous, n'hésitez pas à vous inspirer de wikipédia pour obtenir des astuces de présentation. Pour signer un message sur une page de discussion il suffit de mettre quatre tildes de suite : [[Utilisateur:Woj|woj]] 20 janvier 2010 à 12:00 (UTC)
----
Re,
Merci Branch, cool ! Pour l'hébergement; j'ai un blog débile sur un domaine qui m'appartient, je vais voir si je peux y mettre un MediaWiki... Volume illimité ! Ils ne proposent que TikiWiki et PhpWiki. Je pose la question pour l'installation de MediaWiki (le + sympa à mon avis). Et puis comme on a commencé avec ça... [[Utilisateur:Lol|Lol]]
----
Ah, sympa, merci.
juste pour savoir: qui a écrit le texte juste au dessus? ( lol je présume ?) 
[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:14 (UTC)
----
Re,
Non au dessus, c'est &quot;branch&quot; dit woj ! (c'est signé...) [[Utilisateur:Lol|Lol]] 20 janvier 2010 à 14:24 (UTC)
----
Bah non, je parlais du post précédent le mien. donc ça devait être toi, lol . [[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:28 (UTC)
PS: 3 ~ &quot;tildes&quot; permettent de n'afficher que le nom.

== bloc note ==

Une extension &quot;forum&quot; ?

http://www.mediawiki.org/wiki/Extension:AWC's_Forum - http://wiki.anotherwebcom.com/Installing_And_UnInstalling_(AWC_Wiki_Forum)

http://www.mediawiki.org/wiki/Extension:Forum_extension

http://www.mediawiki.org/wiki/Extension:DPLforum/old

http://www.mediawiki.org/wiki/Extension:MediaWiki_Bulletin_Board

http://www.mediawiki.org/wiki/Extension:LiquidThreads + http://www.mediawiki.org/wiki/Special:ExtensionDistributor

Mediawiki brésilien : http://wiki.forumdebian.com.br/index.php/Página_principal
---- 
la première a l'air vraiment pas mal. [[Utilisateur:L0u!$|L0u!$]]
----
Oui, c'est celle par laquelle j'ai commencé. Mais elle m'a fait des misères. La deuxième aussi, j'y ai passé ma journée, sans résultat. Grrr ! Je retente la première demain. Les boules ! Mais ce serait vraiment l'idéal, léger et facile d'y aller. Un forum externe c'est trop lourd... Je PERSISTE !
----
Je découvre ta page : super photo, elle est de toi ?
[[Utilisateur:Ricardo|Ricardo]]
----
Merci. Malheureusement... non ! Mais j'ai le droit de la publier rassure toi ! :) Tu as trouvé la signature, pratique ! Et si tu ajoute une quatrième &quot;tilde&quot; tu as la date et l'heure [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 13:54 (UTC)
----
Est-ce que tu peux m'envoyer le fichier de conf du forum par mail stp lol, via l'adresse que je t'avais donné dans un MP du forum(debian-fr)? [[Utilisateur:L0u!$|L0u!$]]
----
Bien sur, quels fichiers veux-tu exactement ? Juste le LocalSetting.php ? Quoi d'autre ? [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 17:36 (UTC)
----
Celui que tu as donné sur [[Discussion_utilisateur:L0u!$]] si possible. Bon bah plus besoin finalement. ( bravo!) [[Utilisateur:L0u!$|L0u!$]] 26 janvier 2010 à 21:21 (UTC)
----
:) :) :) :) :) [[Utilisateur:Lol|Lol]]

= approbation=
Comment on fait pour approuver un article?? Je n'ai rien trouvé...
[[Utilisateur:Fran.b|Fran.b]] 27 janvier 2010 à 18:55 (UTC)
----
Salut, tu dois avoir en bas des pages l'option &quot;Relire cette version&quot;. Elle permet de donner un avis sur la qualité de la page &quot;relue&quot;.
Tu dois ausi avoir un ongler en haut des pages (aq = assurance qualité) qui permet de &quot;stabiliser&quot; les pages. J'avoue que pour cette option je n'ai pas fait d'essai... Tu te lances ? [[Utilisateur:WikiSysop|WikiSysop]] (c'est lol qui écrit, je me suis connecté en admin pour vérifier ce que je dit)</text>
      <sha1>ic2sf229o1w88mdw7w4abvf3thl3nj5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>626</id>
      <parentid>619</parentid>
      <timestamp>2010-02-01T07:38:51Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="4318">Page de discussion avec lol...

[[Projet_Accueil|Projet_Accueil]] une petite proposition de page d'accueil afin de créer des rubriques pour classer les articles. C'est une bête copie de la page de mediawiki...
----
Hi, c'est L0u!$. Je te précise que pour les liens internes au wiki, il vaut mieux les mettre sous la forme \[\[Test1|page de test\]\] que de mettre un lien complet. ça permet de savoir si la page existe ou pas.
----
Merci... Je copie/colle les liens du navigateur, alors forcément... Désolé, je rectifie. ça va ça ne bouffe pas trop ta connexion cette plaisanterie ?
----
T'inquiete: grosso-modo, on est 5-6 à lire/écrire sur ce wiki pour l'instant.
Je vais bientot prendre un hébergement gratuit pour le mettre, car mes parents n'aiment pas que mon serveur soit allumé 24h/24 .
----
:Bonjour à vous, n'hésitez pas à vous inspirer de wikipédia pour obtenir des astuces de présentation. Pour signer un message sur une page de discussion il suffit de mettre quatre tildes de suite : [[Utilisateur:Woj|woj]] 20 janvier 2010 à 12:00 (UTC)
----
Re,
Merci Branch, cool ! Pour l'hébergement; j'ai un blog débile sur un domaine qui m'appartient, je vais voir si je peux y mettre un MediaWiki... Volume illimité ! Ils ne proposent que TikiWiki et PhpWiki. Je pose la question pour l'installation de MediaWiki (le + sympa à mon avis). Et puis comme on a commencé avec ça... [[Utilisateur:Lol|Lol]]
----
Ah, sympa, merci.
juste pour savoir: qui a écrit le texte juste au dessus? ( lol je présume ?) 
[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:14 (UTC)
----
Re,
Non au dessus, c'est &quot;branch&quot; dit woj ! (c'est signé...) [[Utilisateur:Lol|Lol]] 20 janvier 2010 à 14:24 (UTC)
----
Bah non, je parlais du post précédent le mien. donc ça devait être toi, lol . [[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:28 (UTC)
PS: 3 ~ &quot;tildes&quot; permettent de n'afficher que le nom.

== bloc note ==

Une extension &quot;forum&quot; ?

http://www.mediawiki.org/wiki/Extension:AWC's_Forum - http://wiki.anotherwebcom.com/Installing_And_UnInstalling_(AWC_Wiki_Forum)

http://www.mediawiki.org/wiki/Extension:Forum_extension

http://www.mediawiki.org/wiki/Extension:DPLforum/old

http://www.mediawiki.org/wiki/Extension:MediaWiki_Bulletin_Board

http://www.mediawiki.org/wiki/Extension:LiquidThreads + http://www.mediawiki.org/wiki/Special:ExtensionDistributor

Mediawiki brésilien : http://wiki.forumdebian.com.br/index.php/Página_principal
---- 
la première a l'air vraiment pas mal. [[Utilisateur:L0u!$|L0u!$]]
----
Oui, c'est celle par laquelle j'ai commencé. Mais elle m'a fait des misères. La deuxième aussi, j'y ai passé ma journée, sans résultat. Grrr ! Je retente la première demain. Les boules ! Mais ce serait vraiment l'idéal, léger et facile d'y aller. Un forum externe c'est trop lourd... Je PERSISTE !
----
Je découvre ta page : super photo, elle est de toi ?
[[Utilisateur:Ricardo|Ricardo]]
----
Merci. Malheureusement... non ! Mais j'ai le droit de la publier rassure toi ! :) Tu as trouvé la signature, pratique ! Et si tu ajoute une quatrième &quot;tilde&quot; tu as la date et l'heure [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 13:54 (UTC)
----
Est-ce que tu peux m'envoyer le fichier de conf du forum par mail stp lol, via l'adresse que je t'avais donné dans un MP du forum(debian-fr)? [[Utilisateur:L0u!$|L0u!$]]
----
Bien sur, quels fichiers veux-tu exactement ? Juste le LocalSetting.php ? Quoi d'autre ? [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 17:36 (UTC)
----
Celui que tu as donné sur [[Discussion_utilisateur:L0u!$]] si possible. Bon bah plus besoin finalement. ( bravo!) [[Utilisateur:L0u!$|L0u!$]] 26 janvier 2010 à 21:21 (UTC)
----
:) :) :) :) :) [[Utilisateur:Lol|Lol]]

= approbation=
Comment on fait pour approuver un article?? Je n'ai rien trouvé...
[[Utilisateur:Fran.b|Fran.b]] 27 janvier 2010 à 18:55 (UTC)
----
Salut, tu dois avoir en bas des pages l'option &quot;Relire cette version&quot;. Elle permet de donner un avis sur la qualité de la page &quot;relue&quot;.
Tu dois ausi avoir un ongler en haut des pages (aq = assurance qualité) qui permet de &quot;stabiliser&quot; les pages. J'avoue que pour cette option je n'ai pas fait d'essai... Tu te lances ? [[Utilisateur:WikiSysop|WikiSysop]] (c'est lol qui écrit, je me suis connecté en admin pour vérifier ce que je dit)</text>
      <sha1>n8agpzhc5uw0ki5iip2xzaqxj33li55</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1203</id>
      <parentid>626</parentid>
      <timestamp>2010-03-29T09:06:56Z</timestamp>
      <contributor>
        <username>Gardouille</username>
        <id>46</id>
      </contributor>
      <comment>/* Cube debian */ nouvelle section</comment>
      <text xml:space="preserve" bytes="4876">Page de discussion avec lol...

[[Projet_Accueil|Projet_Accueil]] une petite proposition de page d'accueil afin de créer des rubriques pour classer les articles. C'est une bête copie de la page de mediawiki...
----
Hi, c'est L0u!$. Je te précise que pour les liens internes au wiki, il vaut mieux les mettre sous la forme \[\[Test1|page de test\]\] que de mettre un lien complet. ça permet de savoir si la page existe ou pas.
----
Merci... Je copie/colle les liens du navigateur, alors forcément... Désolé, je rectifie. ça va ça ne bouffe pas trop ta connexion cette plaisanterie ?
----
T'inquiete: grosso-modo, on est 5-6 à lire/écrire sur ce wiki pour l'instant.
Je vais bientot prendre un hébergement gratuit pour le mettre, car mes parents n'aiment pas que mon serveur soit allumé 24h/24 .
----
:Bonjour à vous, n'hésitez pas à vous inspirer de wikipédia pour obtenir des astuces de présentation. Pour signer un message sur une page de discussion il suffit de mettre quatre tildes de suite : [[Utilisateur:Woj|woj]] 20 janvier 2010 à 12:00 (UTC)
----
Re,
Merci Branch, cool ! Pour l'hébergement; j'ai un blog débile sur un domaine qui m'appartient, je vais voir si je peux y mettre un MediaWiki... Volume illimité ! Ils ne proposent que TikiWiki et PhpWiki. Je pose la question pour l'installation de MediaWiki (le + sympa à mon avis). Et puis comme on a commencé avec ça... [[Utilisateur:Lol|Lol]]
----
Ah, sympa, merci.
juste pour savoir: qui a écrit le texte juste au dessus? ( lol je présume ?) 
[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:14 (UTC)
----
Re,
Non au dessus, c'est &quot;branch&quot; dit woj ! (c'est signé...) [[Utilisateur:Lol|Lol]] 20 janvier 2010 à 14:24 (UTC)
----
Bah non, je parlais du post précédent le mien. donc ça devait être toi, lol . [[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:28 (UTC)
PS: 3 ~ &quot;tildes&quot; permettent de n'afficher que le nom.

== bloc note ==

Une extension &quot;forum&quot; ?

http://www.mediawiki.org/wiki/Extension:AWC's_Forum - http://wiki.anotherwebcom.com/Installing_And_UnInstalling_(AWC_Wiki_Forum)

http://www.mediawiki.org/wiki/Extension:Forum_extension

http://www.mediawiki.org/wiki/Extension:DPLforum/old

http://www.mediawiki.org/wiki/Extension:MediaWiki_Bulletin_Board

http://www.mediawiki.org/wiki/Extension:LiquidThreads + http://www.mediawiki.org/wiki/Special:ExtensionDistributor

Mediawiki brésilien : http://wiki.forumdebian.com.br/index.php/Página_principal
---- 
la première a l'air vraiment pas mal. [[Utilisateur:L0u!$|L0u!$]]
----
Oui, c'est celle par laquelle j'ai commencé. Mais elle m'a fait des misères. La deuxième aussi, j'y ai passé ma journée, sans résultat. Grrr ! Je retente la première demain. Les boules ! Mais ce serait vraiment l'idéal, léger et facile d'y aller. Un forum externe c'est trop lourd... Je PERSISTE !
----
Je découvre ta page : super photo, elle est de toi ?
[[Utilisateur:Ricardo|Ricardo]]
----
Merci. Malheureusement... non ! Mais j'ai le droit de la publier rassure toi ! :) Tu as trouvé la signature, pratique ! Et si tu ajoute une quatrième &quot;tilde&quot; tu as la date et l'heure [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 13:54 (UTC)
----
Est-ce que tu peux m'envoyer le fichier de conf du forum par mail stp lol, via l'adresse que je t'avais donné dans un MP du forum(debian-fr)? [[Utilisateur:L0u!$|L0u!$]]
----
Bien sur, quels fichiers veux-tu exactement ? Juste le LocalSetting.php ? Quoi d'autre ? [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 17:36 (UTC)
----
Celui que tu as donné sur [[Discussion_utilisateur:L0u!$]] si possible. Bon bah plus besoin finalement. ( bravo!) [[Utilisateur:L0u!$|L0u!$]] 26 janvier 2010 à 21:21 (UTC)
----
:) :) :) :) :) [[Utilisateur:Lol|Lol]]

= approbation=
Comment on fait pour approuver un article?? Je n'ai rien trouvé...
[[Utilisateur:Fran.b|Fran.b]] 27 janvier 2010 à 18:55 (UTC)
----
Salut, tu dois avoir en bas des pages l'option &quot;Relire cette version&quot;. Elle permet de donner un avis sur la qualité de la page &quot;relue&quot;.
Tu dois ausi avoir un ongler en haut des pages (aq = assurance qualité) qui permet de &quot;stabiliser&quot; les pages. J'avoue que pour cette option je n'ai pas fait d'essai... Tu te lances ? [[Utilisateur:WikiSysop|WikiSysop]] (c'est lol qui écrit, je me suis connecté en admin pour vérifier ce que je dit)

== Cube debian ==

Salut, je sais pas trop où mettre ça donc une nouvelle section^^

J'ai modifié la page du cube debian et apporté une nouvelle version fr http://beronono.com/wiki-debian/index.php?title=Fichier:Cheat_cube_debian_fr.svg
Et du coup je l'ai remplacé dans la page dédiée au cube. 

Seulement, j'ai vu trop tard (-__-) qu'on pouvait téléverser une nouvelle version d'un fichier. Donc le fichier http://beronono.com/wiki-debian/index.php?title=Fichier:Cheat_cube_debian.svg  n'est plus utilisé et je ne sais pas comment le supprimer^^</text>
      <sha1>ip62rk6l4bw9se6fkzx4hyjl5zufegc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1207</id>
      <parentid>1203</parentid>
      <timestamp>2010-03-29T09:13:49Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Cube debian */</comment>
      <text xml:space="preserve" bytes="5065">Page de discussion avec lol...

[[Projet_Accueil|Projet_Accueil]] une petite proposition de page d'accueil afin de créer des rubriques pour classer les articles. C'est une bête copie de la page de mediawiki...
----
Hi, c'est L0u!$. Je te précise que pour les liens internes au wiki, il vaut mieux les mettre sous la forme \[\[Test1|page de test\]\] que de mettre un lien complet. ça permet de savoir si la page existe ou pas.
----
Merci... Je copie/colle les liens du navigateur, alors forcément... Désolé, je rectifie. ça va ça ne bouffe pas trop ta connexion cette plaisanterie ?
----
T'inquiete: grosso-modo, on est 5-6 à lire/écrire sur ce wiki pour l'instant.
Je vais bientot prendre un hébergement gratuit pour le mettre, car mes parents n'aiment pas que mon serveur soit allumé 24h/24 .
----
:Bonjour à vous, n'hésitez pas à vous inspirer de wikipédia pour obtenir des astuces de présentation. Pour signer un message sur une page de discussion il suffit de mettre quatre tildes de suite : [[Utilisateur:Woj|woj]] 20 janvier 2010 à 12:00 (UTC)
----
Re,
Merci Branch, cool ! Pour l'hébergement; j'ai un blog débile sur un domaine qui m'appartient, je vais voir si je peux y mettre un MediaWiki... Volume illimité ! Ils ne proposent que TikiWiki et PhpWiki. Je pose la question pour l'installation de MediaWiki (le + sympa à mon avis). Et puis comme on a commencé avec ça... [[Utilisateur:Lol|Lol]]
----
Ah, sympa, merci.
juste pour savoir: qui a écrit le texte juste au dessus? ( lol je présume ?) 
[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:14 (UTC)
----
Re,
Non au dessus, c'est &quot;branch&quot; dit woj ! (c'est signé...) [[Utilisateur:Lol|Lol]] 20 janvier 2010 à 14:24 (UTC)
----
Bah non, je parlais du post précédent le mien. donc ça devait être toi, lol . [[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:28 (UTC)
PS: 3 ~ &quot;tildes&quot; permettent de n'afficher que le nom.

== bloc note ==

Une extension &quot;forum&quot; ?

http://www.mediawiki.org/wiki/Extension:AWC's_Forum - http://wiki.anotherwebcom.com/Installing_And_UnInstalling_(AWC_Wiki_Forum)

http://www.mediawiki.org/wiki/Extension:Forum_extension

http://www.mediawiki.org/wiki/Extension:DPLforum/old

http://www.mediawiki.org/wiki/Extension:MediaWiki_Bulletin_Board

http://www.mediawiki.org/wiki/Extension:LiquidThreads + http://www.mediawiki.org/wiki/Special:ExtensionDistributor

Mediawiki brésilien : http://wiki.forumdebian.com.br/index.php/Página_principal
---- 
la première a l'air vraiment pas mal. [[Utilisateur:L0u!$|L0u!$]]
----
Oui, c'est celle par laquelle j'ai commencé. Mais elle m'a fait des misères. La deuxième aussi, j'y ai passé ma journée, sans résultat. Grrr ! Je retente la première demain. Les boules ! Mais ce serait vraiment l'idéal, léger et facile d'y aller. Un forum externe c'est trop lourd... Je PERSISTE !
----
Je découvre ta page : super photo, elle est de toi ?
[[Utilisateur:Ricardo|Ricardo]]
----
Merci. Malheureusement... non ! Mais j'ai le droit de la publier rassure toi ! :) Tu as trouvé la signature, pratique ! Et si tu ajoute une quatrième &quot;tilde&quot; tu as la date et l'heure [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 13:54 (UTC)
----
Est-ce que tu peux m'envoyer le fichier de conf du forum par mail stp lol, via l'adresse que je t'avais donné dans un MP du forum(debian-fr)? [[Utilisateur:L0u!$|L0u!$]]
----
Bien sur, quels fichiers veux-tu exactement ? Juste le LocalSetting.php ? Quoi d'autre ? [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 17:36 (UTC)
----
Celui que tu as donné sur [[Discussion_utilisateur:L0u!$]] si possible. Bon bah plus besoin finalement. ( bravo!) [[Utilisateur:L0u!$|L0u!$]] 26 janvier 2010 à 21:21 (UTC)
----
:) :) :) :) :) [[Utilisateur:Lol|Lol]]

= approbation=
Comment on fait pour approuver un article?? Je n'ai rien trouvé...
[[Utilisateur:Fran.b|Fran.b]] 27 janvier 2010 à 18:55 (UTC)
----
Salut, tu dois avoir en bas des pages l'option &quot;Relire cette version&quot;. Elle permet de donner un avis sur la qualité de la page &quot;relue&quot;.
Tu dois ausi avoir un ongler en haut des pages (aq = assurance qualité) qui permet de &quot;stabiliser&quot; les pages. J'avoue que pour cette option je n'ai pas fait d'essai... Tu te lances ? [[Utilisateur:WikiSysop|WikiSysop]] (c'est lol qui écrit, je me suis connecté en admin pour vérifier ce que je dit)

== Cube debian ==

Salut, je sais pas trop où mettre ça donc une nouvelle section^^

J'ai modifié la page du cube debian et apporté une nouvelle version fr http://beronono.com/wiki-debian/index.php?title=Fichier:Cheat_cube_debian_fr.svg
Et du coup je l'ai remplacé dans la page dédiée au cube. 

Seulement, j'ai vu trop tard (-__-) qu'on pouvait téléverser une nouvelle version d'un fichier. Donc le fichier http://beronono.com/wiki-debian/index.php?title=Fichier:Cheat_cube_debian.svg  n'est plus utilisé et je ne sais pas comment le supprimer^^

----
Pas de soucis, je fait le ménage de temps en temps en regardant les fichiers ou pages orphelines. J'ai encore de la place !--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 09:13 (UTC)
----</text>
      <sha1>pifs553ghgwboly20l1biwdjn8c7n40</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1524</id>
      <parentid>1207</parentid>
      <timestamp>2010-05-18T12:07:17Z</timestamp>
      <contributor>
        <username>Spatule</username>
        <id>47</id>
      </contributor>
      <comment>/* Raid mdadm */ nouvelle section</comment>
      <text xml:space="preserve" bytes="5215">Page de discussion avec lol...

[[Projet_Accueil|Projet_Accueil]] une petite proposition de page d'accueil afin de créer des rubriques pour classer les articles. C'est une bête copie de la page de mediawiki...
----
Hi, c'est L0u!$. Je te précise que pour les liens internes au wiki, il vaut mieux les mettre sous la forme \[\[Test1|page de test\]\] que de mettre un lien complet. ça permet de savoir si la page existe ou pas.
----
Merci... Je copie/colle les liens du navigateur, alors forcément... Désolé, je rectifie. ça va ça ne bouffe pas trop ta connexion cette plaisanterie ?
----
T'inquiete: grosso-modo, on est 5-6 à lire/écrire sur ce wiki pour l'instant.
Je vais bientot prendre un hébergement gratuit pour le mettre, car mes parents n'aiment pas que mon serveur soit allumé 24h/24 .
----
:Bonjour à vous, n'hésitez pas à vous inspirer de wikipédia pour obtenir des astuces de présentation. Pour signer un message sur une page de discussion il suffit de mettre quatre tildes de suite : [[Utilisateur:Woj|woj]] 20 janvier 2010 à 12:00 (UTC)
----
Re,
Merci Branch, cool ! Pour l'hébergement; j'ai un blog débile sur un domaine qui m'appartient, je vais voir si je peux y mettre un MediaWiki... Volume illimité ! Ils ne proposent que TikiWiki et PhpWiki. Je pose la question pour l'installation de MediaWiki (le + sympa à mon avis). Et puis comme on a commencé avec ça... [[Utilisateur:Lol|Lol]]
----
Ah, sympa, merci.
juste pour savoir: qui a écrit le texte juste au dessus? ( lol je présume ?) 
[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:14 (UTC)
----
Re,
Non au dessus, c'est &quot;branch&quot; dit woj ! (c'est signé...) [[Utilisateur:Lol|Lol]] 20 janvier 2010 à 14:24 (UTC)
----
Bah non, je parlais du post précédent le mien. donc ça devait être toi, lol . [[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:28 (UTC)
PS: 3 ~ &quot;tildes&quot; permettent de n'afficher que le nom.

== bloc note ==

Une extension &quot;forum&quot; ?

http://www.mediawiki.org/wiki/Extension:AWC's_Forum - http://wiki.anotherwebcom.com/Installing_And_UnInstalling_(AWC_Wiki_Forum)

http://www.mediawiki.org/wiki/Extension:Forum_extension

http://www.mediawiki.org/wiki/Extension:DPLforum/old

http://www.mediawiki.org/wiki/Extension:MediaWiki_Bulletin_Board

http://www.mediawiki.org/wiki/Extension:LiquidThreads + http://www.mediawiki.org/wiki/Special:ExtensionDistributor

Mediawiki brésilien : http://wiki.forumdebian.com.br/index.php/Página_principal
---- 
la première a l'air vraiment pas mal. [[Utilisateur:L0u!$|L0u!$]]
----
Oui, c'est celle par laquelle j'ai commencé. Mais elle m'a fait des misères. La deuxième aussi, j'y ai passé ma journée, sans résultat. Grrr ! Je retente la première demain. Les boules ! Mais ce serait vraiment l'idéal, léger et facile d'y aller. Un forum externe c'est trop lourd... Je PERSISTE !
----
Je découvre ta page : super photo, elle est de toi ?
[[Utilisateur:Ricardo|Ricardo]]
----
Merci. Malheureusement... non ! Mais j'ai le droit de la publier rassure toi ! :) Tu as trouvé la signature, pratique ! Et si tu ajoute une quatrième &quot;tilde&quot; tu as la date et l'heure [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 13:54 (UTC)
----
Est-ce que tu peux m'envoyer le fichier de conf du forum par mail stp lol, via l'adresse que je t'avais donné dans un MP du forum(debian-fr)? [[Utilisateur:L0u!$|L0u!$]]
----
Bien sur, quels fichiers veux-tu exactement ? Juste le LocalSetting.php ? Quoi d'autre ? [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 17:36 (UTC)
----
Celui que tu as donné sur [[Discussion_utilisateur:L0u!$]] si possible. Bon bah plus besoin finalement. ( bravo!) [[Utilisateur:L0u!$|L0u!$]] 26 janvier 2010 à 21:21 (UTC)
----
:) :) :) :) :) [[Utilisateur:Lol|Lol]]

= approbation=
Comment on fait pour approuver un article?? Je n'ai rien trouvé...
[[Utilisateur:Fran.b|Fran.b]] 27 janvier 2010 à 18:55 (UTC)
----
Salut, tu dois avoir en bas des pages l'option &quot;Relire cette version&quot;. Elle permet de donner un avis sur la qualité de la page &quot;relue&quot;.
Tu dois ausi avoir un ongler en haut des pages (aq = assurance qualité) qui permet de &quot;stabiliser&quot; les pages. J'avoue que pour cette option je n'ai pas fait d'essai... Tu te lances ? [[Utilisateur:WikiSysop|WikiSysop]] (c'est lol qui écrit, je me suis connecté en admin pour vérifier ce que je dit)

== Cube debian ==

Salut, je sais pas trop où mettre ça donc une nouvelle section^^

J'ai modifié la page du cube debian et apporté une nouvelle version fr http://beronono.com/wiki-debian/index.php?title=Fichier:Cheat_cube_debian_fr.svg
Et du coup je l'ai remplacé dans la page dédiée au cube. 

Seulement, j'ai vu trop tard (-__-) qu'on pouvait téléverser une nouvelle version d'un fichier. Donc le fichier http://beronono.com/wiki-debian/index.php?title=Fichier:Cheat_cube_debian.svg  n'est plus utilisé et je ne sais pas comment le supprimer^^

----
Pas de soucis, je fait le ménage de temps en temps en regardant les fichiers ou pages orphelines. J'ai encore de la place !--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 09:13 (UTC)
----

== Raid mdadm ==

Salut, je me suis permis de renommer la page car il y avait une erreur de frappe dans &quot;mdadm&quot;. Je sais pas si j'ai bien fait... :x</text>
      <sha1>p4l9phxgbmx4mnmwes1isnuegler7yp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1526</id>
      <parentid>1524</parentid>
      <timestamp>2010-05-18T14:57:51Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Raid mdadm */</comment>
      <text xml:space="preserve" bytes="5329">Page de discussion avec lol...

[[Projet_Accueil|Projet_Accueil]] une petite proposition de page d'accueil afin de créer des rubriques pour classer les articles. C'est une bête copie de la page de mediawiki...
----
Hi, c'est L0u!$. Je te précise que pour les liens internes au wiki, il vaut mieux les mettre sous la forme \[\[Test1|page de test\]\] que de mettre un lien complet. ça permet de savoir si la page existe ou pas.
----
Merci... Je copie/colle les liens du navigateur, alors forcément... Désolé, je rectifie. ça va ça ne bouffe pas trop ta connexion cette plaisanterie ?
----
T'inquiete: grosso-modo, on est 5-6 à lire/écrire sur ce wiki pour l'instant.
Je vais bientot prendre un hébergement gratuit pour le mettre, car mes parents n'aiment pas que mon serveur soit allumé 24h/24 .
----
:Bonjour à vous, n'hésitez pas à vous inspirer de wikipédia pour obtenir des astuces de présentation. Pour signer un message sur une page de discussion il suffit de mettre quatre tildes de suite : [[Utilisateur:Woj|woj]] 20 janvier 2010 à 12:00 (UTC)
----
Re,
Merci Branch, cool ! Pour l'hébergement; j'ai un blog débile sur un domaine qui m'appartient, je vais voir si je peux y mettre un MediaWiki... Volume illimité ! Ils ne proposent que TikiWiki et PhpWiki. Je pose la question pour l'installation de MediaWiki (le + sympa à mon avis). Et puis comme on a commencé avec ça... [[Utilisateur:Lol|Lol]]
----
Ah, sympa, merci.
juste pour savoir: qui a écrit le texte juste au dessus? ( lol je présume ?) 
[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:14 (UTC)
----
Re,
Non au dessus, c'est &quot;branch&quot; dit woj ! (c'est signé...) [[Utilisateur:Lol|Lol]] 20 janvier 2010 à 14:24 (UTC)
----
Bah non, je parlais du post précédent le mien. donc ça devait être toi, lol . [[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:28 (UTC)
PS: 3 ~ &quot;tildes&quot; permettent de n'afficher que le nom.

== bloc note ==

Une extension &quot;forum&quot; ?

http://www.mediawiki.org/wiki/Extension:AWC's_Forum - http://wiki.anotherwebcom.com/Installing_And_UnInstalling_(AWC_Wiki_Forum)

http://www.mediawiki.org/wiki/Extension:Forum_extension

http://www.mediawiki.org/wiki/Extension:DPLforum/old

http://www.mediawiki.org/wiki/Extension:MediaWiki_Bulletin_Board

http://www.mediawiki.org/wiki/Extension:LiquidThreads + http://www.mediawiki.org/wiki/Special:ExtensionDistributor

Mediawiki brésilien : http://wiki.forumdebian.com.br/index.php/Página_principal
---- 
la première a l'air vraiment pas mal. [[Utilisateur:L0u!$|L0u!$]]
----
Oui, c'est celle par laquelle j'ai commencé. Mais elle m'a fait des misères. La deuxième aussi, j'y ai passé ma journée, sans résultat. Grrr ! Je retente la première demain. Les boules ! Mais ce serait vraiment l'idéal, léger et facile d'y aller. Un forum externe c'est trop lourd... Je PERSISTE !
----
Je découvre ta page : super photo, elle est de toi ?
[[Utilisateur:Ricardo|Ricardo]]
----
Merci. Malheureusement... non ! Mais j'ai le droit de la publier rassure toi ! :) Tu as trouvé la signature, pratique ! Et si tu ajoute une quatrième &quot;tilde&quot; tu as la date et l'heure [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 13:54 (UTC)
----
Est-ce que tu peux m'envoyer le fichier de conf du forum par mail stp lol, via l'adresse que je t'avais donné dans un MP du forum(debian-fr)? [[Utilisateur:L0u!$|L0u!$]]
----
Bien sur, quels fichiers veux-tu exactement ? Juste le LocalSetting.php ? Quoi d'autre ? [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 17:36 (UTC)
----
Celui que tu as donné sur [[Discussion_utilisateur:L0u!$]] si possible. Bon bah plus besoin finalement. ( bravo!) [[Utilisateur:L0u!$|L0u!$]] 26 janvier 2010 à 21:21 (UTC)
----
:) :) :) :) :) [[Utilisateur:Lol|Lol]]

= approbation=
Comment on fait pour approuver un article?? Je n'ai rien trouvé...
[[Utilisateur:Fran.b|Fran.b]] 27 janvier 2010 à 18:55 (UTC)
----
Salut, tu dois avoir en bas des pages l'option &quot;Relire cette version&quot;. Elle permet de donner un avis sur la qualité de la page &quot;relue&quot;.
Tu dois ausi avoir un ongler en haut des pages (aq = assurance qualité) qui permet de &quot;stabiliser&quot; les pages. J'avoue que pour cette option je n'ai pas fait d'essai... Tu te lances ? [[Utilisateur:WikiSysop|WikiSysop]] (c'est lol qui écrit, je me suis connecté en admin pour vérifier ce que je dit)

== Cube debian ==

Salut, je sais pas trop où mettre ça donc une nouvelle section^^

J'ai modifié la page du cube debian et apporté une nouvelle version fr http://beronono.com/wiki-debian/index.php?title=Fichier:Cheat_cube_debian_fr.svg
Et du coup je l'ai remplacé dans la page dédiée au cube. 

Seulement, j'ai vu trop tard (-__-) qu'on pouvait téléverser une nouvelle version d'un fichier. Donc le fichier http://beronono.com/wiki-debian/index.php?title=Fichier:Cheat_cube_debian.svg  n'est plus utilisé et je ne sais pas comment le supprimer^^

----
Pas de soucis, je fait le ménage de temps en temps en regardant les fichiers ou pages orphelines. J'ai encore de la place !--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 09:13 (UTC)
----

== Raid mdadm ==

Salut, je me suis permis de renommer la page car il y avait une erreur de frappe dans &quot;mdadm&quot;. Je sais pas si j'ai bien fait... :x

----

Aucun soucis, tu as bien fait. Merci pour ton travail !
[[Utilisateur:Lol|Lol]] 18 mai 2010 à 14:57 (UTC)</text>
      <sha1>ajnb6cqm87rwymzkwvlex9k24iec1x6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1527</id>
      <parentid>1526</parentid>
      <timestamp>2010-05-18T15:01:06Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Cube debian */</comment>
      <text xml:space="preserve" bytes="5329">Page de discussion avec lol...

[[Projet_Accueil|Projet_Accueil]] une petite proposition de page d'accueil afin de créer des rubriques pour classer les articles. C'est une bête copie de la page de mediawiki...
----
Hi, c'est L0u!$. Je te précise que pour les liens internes au wiki, il vaut mieux les mettre sous la forme \[\[Test1|page de test\]\] que de mettre un lien complet. ça permet de savoir si la page existe ou pas.
----
Merci... Je copie/colle les liens du navigateur, alors forcément... Désolé, je rectifie. ça va ça ne bouffe pas trop ta connexion cette plaisanterie ?
----
T'inquiete: grosso-modo, on est 5-6 à lire/écrire sur ce wiki pour l'instant.
Je vais bientot prendre un hébergement gratuit pour le mettre, car mes parents n'aiment pas que mon serveur soit allumé 24h/24 .
----
:Bonjour à vous, n'hésitez pas à vous inspirer de wikipédia pour obtenir des astuces de présentation. Pour signer un message sur une page de discussion il suffit de mettre quatre tildes de suite : [[Utilisateur:Woj|woj]] 20 janvier 2010 à 12:00 (UTC)
----
Re,
Merci Branch, cool ! Pour l'hébergement; j'ai un blog débile sur un domaine qui m'appartient, je vais voir si je peux y mettre un MediaWiki... Volume illimité ! Ils ne proposent que TikiWiki et PhpWiki. Je pose la question pour l'installation de MediaWiki (le + sympa à mon avis). Et puis comme on a commencé avec ça... [[Utilisateur:Lol|Lol]]
----
Ah, sympa, merci.
juste pour savoir: qui a écrit le texte juste au dessus? ( lol je présume ?) 
[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:14 (UTC)
----
Re,
Non au dessus, c'est &quot;branch&quot; dit woj ! (c'est signé...) [[Utilisateur:Lol|Lol]] 20 janvier 2010 à 14:24 (UTC)
----
Bah non, je parlais du post précédent le mien. donc ça devait être toi, lol . [[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:28 (UTC)
PS: 3 ~ &quot;tildes&quot; permettent de n'afficher que le nom.

== bloc note ==

Une extension &quot;forum&quot; ?

http://www.mediawiki.org/wiki/Extension:AWC's_Forum - http://wiki.anotherwebcom.com/Installing_And_UnInstalling_(AWC_Wiki_Forum)

http://www.mediawiki.org/wiki/Extension:Forum_extension

http://www.mediawiki.org/wiki/Extension:DPLforum/old

http://www.mediawiki.org/wiki/Extension:MediaWiki_Bulletin_Board

http://www.mediawiki.org/wiki/Extension:LiquidThreads + http://www.mediawiki.org/wiki/Special:ExtensionDistributor

Mediawiki brésilien : http://wiki.forumdebian.com.br/index.php/Página_principal
---- 
la première a l'air vraiment pas mal. [[Utilisateur:L0u!$|L0u!$]]
----
Oui, c'est celle par laquelle j'ai commencé. Mais elle m'a fait des misères. La deuxième aussi, j'y ai passé ma journée, sans résultat. Grrr ! Je retente la première demain. Les boules ! Mais ce serait vraiment l'idéal, léger et facile d'y aller. Un forum externe c'est trop lourd... Je PERSISTE !
----
Je découvre ta page : super photo, elle est de toi ?
[[Utilisateur:Ricardo|Ricardo]]
----
Merci. Malheureusement... non ! Mais j'ai le droit de la publier rassure toi ! :) Tu as trouvé la signature, pratique ! Et si tu ajoute une quatrième &quot;tilde&quot; tu as la date et l'heure [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 13:54 (UTC)
----
Est-ce que tu peux m'envoyer le fichier de conf du forum par mail stp lol, via l'adresse que je t'avais donné dans un MP du forum(debian-fr)? [[Utilisateur:L0u!$|L0u!$]]
----
Bien sur, quels fichiers veux-tu exactement ? Juste le LocalSetting.php ? Quoi d'autre ? [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 17:36 (UTC)
----
Celui que tu as donné sur [[Discussion_utilisateur:L0u!$]] si possible. Bon bah plus besoin finalement. ( bravo!) [[Utilisateur:L0u!$|L0u!$]] 26 janvier 2010 à 21:21 (UTC)
----
:) :) :) :) :) [[Utilisateur:Lol|Lol]]

= approbation=
Comment on fait pour approuver un article?? Je n'ai rien trouvé...
[[Utilisateur:Fran.b|Fran.b]] 27 janvier 2010 à 18:55 (UTC)
----
Salut, tu dois avoir en bas des pages l'option &quot;Relire cette version&quot;. Elle permet de donner un avis sur la qualité de la page &quot;relue&quot;.
Tu dois ausi avoir un ongler en haut des pages (aq = assurance qualité) qui permet de &quot;stabiliser&quot; les pages. J'avoue que pour cette option je n'ai pas fait d'essai... Tu te lances ? [[Utilisateur:WikiSysop|WikiSysop]] (c'est lol qui écrit, je me suis connecté en admin pour vérifier ce que je dit)

== Cube debian ==

Salut, je sais pas trop où mettre ça donc une nouvelle section^^

J'ai modifié la page du cube debian et apporté une nouvelle version fr http://beronono.com/wiki-debian/index.php?title=Fichier:Cheat_cube_debian_fr.svg
Et du coup je l'ai remplacé dans la page dédiée au cube. 

Seulement, j'ai vu trop tard (-__-) qu'on pouvait téléverser une nouvelle version d'un fichier. Donc le fichier http://beronono.com/wiki-debian/index.php?title=Fichier:Cheat_cube_debian.svg  n'est plus utilisé et je ne sais pas comment le supprimer^^

----
Pas de soucis, je fais le ménage de temps en temps en regardant les fichiers ou pages orphelines. J'ai encore de la place !--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 09:13 (UTC)
----

== Raid mdadm ==

Salut, je me suis permis de renommer la page car il y avait une erreur de frappe dans &quot;mdadm&quot;. Je sais pas si j'ai bien fait... :x

----

Aucun soucis, tu as bien fait. Merci pour ton travail !
[[Utilisateur:Lol|Lol]] 18 mai 2010 à 14:57 (UTC)</text>
      <sha1>mao0971xtjmognyfj4fic09nvw2pt77</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1528</id>
      <parentid>1527</parentid>
      <timestamp>2010-05-18T15:02:10Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* approbation */</comment>
      <text xml:space="preserve" bytes="5329">Page de discussion avec lol...

[[Projet_Accueil|Projet_Accueil]] une petite proposition de page d'accueil afin de créer des rubriques pour classer les articles. C'est une bête copie de la page de mediawiki...
----
Hi, c'est L0u!$. Je te précise que pour les liens internes au wiki, il vaut mieux les mettre sous la forme \[\[Test1|page de test\]\] que de mettre un lien complet. ça permet de savoir si la page existe ou pas.
----
Merci... Je copie/colle les liens du navigateur, alors forcément... Désolé, je rectifie. ça va ça ne bouffe pas trop ta connexion cette plaisanterie ?
----
T'inquiete: grosso-modo, on est 5-6 à lire/écrire sur ce wiki pour l'instant.
Je vais bientot prendre un hébergement gratuit pour le mettre, car mes parents n'aiment pas que mon serveur soit allumé 24h/24 .
----
:Bonjour à vous, n'hésitez pas à vous inspirer de wikipédia pour obtenir des astuces de présentation. Pour signer un message sur une page de discussion il suffit de mettre quatre tildes de suite : [[Utilisateur:Woj|woj]] 20 janvier 2010 à 12:00 (UTC)
----
Re,
Merci Branch, cool ! Pour l'hébergement; j'ai un blog débile sur un domaine qui m'appartient, je vais voir si je peux y mettre un MediaWiki... Volume illimité ! Ils ne proposent que TikiWiki et PhpWiki. Je pose la question pour l'installation de MediaWiki (le + sympa à mon avis). Et puis comme on a commencé avec ça... [[Utilisateur:Lol|Lol]]
----
Ah, sympa, merci.
juste pour savoir: qui a écrit le texte juste au dessus? ( lol je présume ?) 
[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:14 (UTC)
----
Re,
Non au dessus, c'est &quot;branch&quot; dit woj ! (c'est signé...) [[Utilisateur:Lol|Lol]] 20 janvier 2010 à 14:24 (UTC)
----
Bah non, je parlais du post précédent le mien. donc ça devait être toi, lol . [[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:28 (UTC)
PS: 3 ~ &quot;tildes&quot; permettent de n'afficher que le nom.

== bloc note ==

Une extension &quot;forum&quot; ?

http://www.mediawiki.org/wiki/Extension:AWC's_Forum - http://wiki.anotherwebcom.com/Installing_And_UnInstalling_(AWC_Wiki_Forum)

http://www.mediawiki.org/wiki/Extension:Forum_extension

http://www.mediawiki.org/wiki/Extension:DPLforum/old

http://www.mediawiki.org/wiki/Extension:MediaWiki_Bulletin_Board

http://www.mediawiki.org/wiki/Extension:LiquidThreads + http://www.mediawiki.org/wiki/Special:ExtensionDistributor

Mediawiki brésilien : http://wiki.forumdebian.com.br/index.php/Página_principal
---- 
la première a l'air vraiment pas mal. [[Utilisateur:L0u!$|L0u!$]]
----
Oui, c'est celle par laquelle j'ai commencé. Mais elle m'a fait des misères. La deuxième aussi, j'y ai passé ma journée, sans résultat. Grrr ! Je retente la première demain. Les boules ! Mais ce serait vraiment l'idéal, léger et facile d'y aller. Un forum externe c'est trop lourd... Je PERSISTE !
----
Je découvre ta page : super photo, elle est de toi ?
[[Utilisateur:Ricardo|Ricardo]]
----
Merci. Malheureusement... non ! Mais j'ai le droit de la publier rassure toi ! :) Tu as trouvé la signature, pratique ! Et si tu ajoute une quatrième &quot;tilde&quot; tu as la date et l'heure [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 13:54 (UTC)
----
Est-ce que tu peux m'envoyer le fichier de conf du forum par mail stp lol, via l'adresse que je t'avais donné dans un MP du forum(debian-fr)? [[Utilisateur:L0u!$|L0u!$]]
----
Bien sur, quels fichiers veux-tu exactement ? Juste le LocalSetting.php ? Quoi d'autre ? [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 17:36 (UTC)
----
Celui que tu as donné sur [[Discussion_utilisateur:L0u!$]] si possible. Bon bah plus besoin finalement. ( bravo!) [[Utilisateur:L0u!$|L0u!$]] 26 janvier 2010 à 21:21 (UTC)
----
:) :) :) :) :) [[Utilisateur:Lol|Lol]]

= approbation=
Comment on fait pour approuver un article?? Je n'ai rien trouvé...
[[Utilisateur:Fran.b|Fran.b]] 27 janvier 2010 à 18:55 (UTC)
----
Salut, tu dois avoir en bas des pages l'option &quot;Relire cette version&quot;. Elle permet de donner un avis sur la qualité de la page &quot;relue&quot;.
Tu dois ausi avoir un onglet en haut des pages (aq = assurance qualité) qui permet de &quot;stabiliser&quot; les pages. J'avoue que pour cette option je n'ai pas fait d'essai... Tu te lances ? [[Utilisateur:WikiSysop|WikiSysop]] (c'est lol qui écrit, je me suis connecté en admin pour vérifier ce que je dit)

== Cube debian ==

Salut, je sais pas trop où mettre ça donc une nouvelle section^^

J'ai modifié la page du cube debian et apporté une nouvelle version fr http://beronono.com/wiki-debian/index.php?title=Fichier:Cheat_cube_debian_fr.svg
Et du coup je l'ai remplacé dans la page dédiée au cube. 

Seulement, j'ai vu trop tard (-__-) qu'on pouvait téléverser une nouvelle version d'un fichier. Donc le fichier http://beronono.com/wiki-debian/index.php?title=Fichier:Cheat_cube_debian.svg  n'est plus utilisé et je ne sais pas comment le supprimer^^

----
Pas de soucis, je fais le ménage de temps en temps en regardant les fichiers ou pages orphelines. J'ai encore de la place !--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 09:13 (UTC)
----

== Raid mdadm ==

Salut, je me suis permis de renommer la page car il y avait une erreur de frappe dans &quot;mdadm&quot;. Je sais pas si j'ai bien fait... :x

----

Aucun soucis, tu as bien fait. Merci pour ton travail !
[[Utilisateur:Lol|Lol]] 18 mai 2010 à 14:57 (UTC)</text>
      <sha1>8zan0v06vqc41vzow9xkr1nswjoi7yf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1529</id>
      <parentid>1528</parentid>
      <timestamp>2010-05-18T15:58:53Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* approbation */</comment>
      <text xml:space="preserve" bytes="5330">Page de discussion avec lol...

[[Projet_Accueil|Projet_Accueil]] une petite proposition de page d'accueil afin de créer des rubriques pour classer les articles. C'est une bête copie de la page de mediawiki...
----
Hi, c'est L0u!$. Je te précise que pour les liens internes au wiki, il vaut mieux les mettre sous la forme \[\[Test1|page de test\]\] que de mettre un lien complet. ça permet de savoir si la page existe ou pas.
----
Merci... Je copie/colle les liens du navigateur, alors forcément... Désolé, je rectifie. ça va ça ne bouffe pas trop ta connexion cette plaisanterie ?
----
T'inquiete: grosso-modo, on est 5-6 à lire/écrire sur ce wiki pour l'instant.
Je vais bientot prendre un hébergement gratuit pour le mettre, car mes parents n'aiment pas que mon serveur soit allumé 24h/24 .
----
:Bonjour à vous, n'hésitez pas à vous inspirer de wikipédia pour obtenir des astuces de présentation. Pour signer un message sur une page de discussion il suffit de mettre quatre tildes de suite : [[Utilisateur:Woj|woj]] 20 janvier 2010 à 12:00 (UTC)
----
Re,
Merci Branch, cool ! Pour l'hébergement; j'ai un blog débile sur un domaine qui m'appartient, je vais voir si je peux y mettre un MediaWiki... Volume illimité ! Ils ne proposent que TikiWiki et PhpWiki. Je pose la question pour l'installation de MediaWiki (le + sympa à mon avis). Et puis comme on a commencé avec ça... [[Utilisateur:Lol|Lol]]
----
Ah, sympa, merci.
juste pour savoir: qui a écrit le texte juste au dessus? ( lol je présume ?) 
[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:14 (UTC)
----
Re,
Non au dessus, c'est &quot;branch&quot; dit woj ! (c'est signé...) [[Utilisateur:Lol|Lol]] 20 janvier 2010 à 14:24 (UTC)
----
Bah non, je parlais du post précédent le mien. donc ça devait être toi, lol . [[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:28 (UTC)
PS: 3 ~ &quot;tildes&quot; permettent de n'afficher que le nom.

== bloc note ==

Une extension &quot;forum&quot; ?

http://www.mediawiki.org/wiki/Extension:AWC's_Forum - http://wiki.anotherwebcom.com/Installing_And_UnInstalling_(AWC_Wiki_Forum)

http://www.mediawiki.org/wiki/Extension:Forum_extension

http://www.mediawiki.org/wiki/Extension:DPLforum/old

http://www.mediawiki.org/wiki/Extension:MediaWiki_Bulletin_Board

http://www.mediawiki.org/wiki/Extension:LiquidThreads + http://www.mediawiki.org/wiki/Special:ExtensionDistributor

Mediawiki brésilien : http://wiki.forumdebian.com.br/index.php/Página_principal
---- 
la première a l'air vraiment pas mal. [[Utilisateur:L0u!$|L0u!$]]
----
Oui, c'est celle par laquelle j'ai commencé. Mais elle m'a fait des misères. La deuxième aussi, j'y ai passé ma journée, sans résultat. Grrr ! Je retente la première demain. Les boules ! Mais ce serait vraiment l'idéal, léger et facile d'y aller. Un forum externe c'est trop lourd... Je PERSISTE !
----
Je découvre ta page : super photo, elle est de toi ?
[[Utilisateur:Ricardo|Ricardo]]
----
Merci. Malheureusement... non ! Mais j'ai le droit de la publier rassure toi ! :) Tu as trouvé la signature, pratique ! Et si tu ajoute une quatrième &quot;tilde&quot; tu as la date et l'heure [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 13:54 (UTC)
----
Est-ce que tu peux m'envoyer le fichier de conf du forum par mail stp lol, via l'adresse que je t'avais donné dans un MP du forum(debian-fr)? [[Utilisateur:L0u!$|L0u!$]]
----
Bien sur, quels fichiers veux-tu exactement ? Juste le LocalSetting.php ? Quoi d'autre ? [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 17:36 (UTC)
----
Celui que tu as donné sur [[Discussion_utilisateur:L0u!$]] si possible. Bon bah plus besoin finalement. ( bravo!) [[Utilisateur:L0u!$|L0u!$]] 26 janvier 2010 à 21:21 (UTC)
----
:) :) :) :) :) [[Utilisateur:Lol|Lol]]

= approbation=
Comment on fait pour approuver un article?? Je n'ai rien trouvé...
[[Utilisateur:Fran.b|Fran.b]] 27 janvier 2010 à 18:55 (UTC)
----
Salut, tu dois avoir en bas des pages l'option &quot;Relire cette version&quot;. Elle permet de donner un avis sur la qualité de la page &quot;relue&quot;.
Tu dois aussi avoir un onglet en haut des pages (aq = assurance qualité) qui permet de &quot;stabiliser&quot; les pages. J'avoue que pour cette option je n'ai pas fait d'essai... Tu te lances ? [[Utilisateur:WikiSysop|WikiSysop]] (c'est lol qui écrit, je me suis connecté en admin pour vérifier ce que je dis)

== Cube debian ==

Salut, je sais pas trop où mettre ça donc une nouvelle section^^

J'ai modifié la page du cube debian et apporté une nouvelle version fr http://beronono.com/wiki-debian/index.php?title=Fichier:Cheat_cube_debian_fr.svg
Et du coup je l'ai remplacé dans la page dédiée au cube. 

Seulement, j'ai vu trop tard (-__-) qu'on pouvait téléverser une nouvelle version d'un fichier. Donc le fichier http://beronono.com/wiki-debian/index.php?title=Fichier:Cheat_cube_debian.svg  n'est plus utilisé et je ne sais pas comment le supprimer^^

----
Pas de soucis, je fais le ménage de temps en temps en regardant les fichiers ou pages orphelines. J'ai encore de la place !--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 09:13 (UTC)
----

== Raid mdadm ==

Salut, je me suis permis de renommer la page car il y avait une erreur de frappe dans &quot;mdadm&quot;. Je sais pas si j'ai bien fait... :x

----

Aucun soucis, tu as bien fait. Merci pour ton travail !
[[Utilisateur:Lol|Lol]] 18 mai 2010 à 14:57 (UTC)</text>
      <sha1>oercodykllxlhx3jjyycgv03m5fw8pr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1530</id>
      <parentid>1529</parentid>
      <timestamp>2010-05-18T15:59:00Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Cube debian */</comment>
      <text xml:space="preserve" bytes="5328">Page de discussion avec lol...

[[Projet_Accueil|Projet_Accueil]] une petite proposition de page d'accueil afin de créer des rubriques pour classer les articles. C'est une bête copie de la page de mediawiki...
----
Hi, c'est L0u!$. Je te précise que pour les liens internes au wiki, il vaut mieux les mettre sous la forme \[\[Test1|page de test\]\] que de mettre un lien complet. ça permet de savoir si la page existe ou pas.
----
Merci... Je copie/colle les liens du navigateur, alors forcément... Désolé, je rectifie. ça va ça ne bouffe pas trop ta connexion cette plaisanterie ?
----
T'inquiete: grosso-modo, on est 5-6 à lire/écrire sur ce wiki pour l'instant.
Je vais bientot prendre un hébergement gratuit pour le mettre, car mes parents n'aiment pas que mon serveur soit allumé 24h/24 .
----
:Bonjour à vous, n'hésitez pas à vous inspirer de wikipédia pour obtenir des astuces de présentation. Pour signer un message sur une page de discussion il suffit de mettre quatre tildes de suite : [[Utilisateur:Woj|woj]] 20 janvier 2010 à 12:00 (UTC)
----
Re,
Merci Branch, cool ! Pour l'hébergement; j'ai un blog débile sur un domaine qui m'appartient, je vais voir si je peux y mettre un MediaWiki... Volume illimité ! Ils ne proposent que TikiWiki et PhpWiki. Je pose la question pour l'installation de MediaWiki (le + sympa à mon avis). Et puis comme on a commencé avec ça... [[Utilisateur:Lol|Lol]]
----
Ah, sympa, merci.
juste pour savoir: qui a écrit le texte juste au dessus? ( lol je présume ?) 
[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:14 (UTC)
----
Re,
Non au dessus, c'est &quot;branch&quot; dit woj ! (c'est signé...) [[Utilisateur:Lol|Lol]] 20 janvier 2010 à 14:24 (UTC)
----
Bah non, je parlais du post précédent le mien. donc ça devait être toi, lol . [[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:28 (UTC)
PS: 3 ~ &quot;tildes&quot; permettent de n'afficher que le nom.

== bloc note ==

Une extension &quot;forum&quot; ?

http://www.mediawiki.org/wiki/Extension:AWC's_Forum - http://wiki.anotherwebcom.com/Installing_And_UnInstalling_(AWC_Wiki_Forum)

http://www.mediawiki.org/wiki/Extension:Forum_extension

http://www.mediawiki.org/wiki/Extension:DPLforum/old

http://www.mediawiki.org/wiki/Extension:MediaWiki_Bulletin_Board

http://www.mediawiki.org/wiki/Extension:LiquidThreads + http://www.mediawiki.org/wiki/Special:ExtensionDistributor

Mediawiki brésilien : http://wiki.forumdebian.com.br/index.php/Página_principal
---- 
la première a l'air vraiment pas mal. [[Utilisateur:L0u!$|L0u!$]]
----
Oui, c'est celle par laquelle j'ai commencé. Mais elle m'a fait des misères. La deuxième aussi, j'y ai passé ma journée, sans résultat. Grrr ! Je retente la première demain. Les boules ! Mais ce serait vraiment l'idéal, léger et facile d'y aller. Un forum externe c'est trop lourd... Je PERSISTE !
----
Je découvre ta page : super photo, elle est de toi ?
[[Utilisateur:Ricardo|Ricardo]]
----
Merci. Malheureusement... non ! Mais j'ai le droit de la publier rassure toi ! :) Tu as trouvé la signature, pratique ! Et si tu ajoute une quatrième &quot;tilde&quot; tu as la date et l'heure [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 13:54 (UTC)
----
Est-ce que tu peux m'envoyer le fichier de conf du forum par mail stp lol, via l'adresse que je t'avais donné dans un MP du forum(debian-fr)? [[Utilisateur:L0u!$|L0u!$]]
----
Bien sur, quels fichiers veux-tu exactement ? Juste le LocalSetting.php ? Quoi d'autre ? [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 17:36 (UTC)
----
Celui que tu as donné sur [[Discussion_utilisateur:L0u!$]] si possible. Bon bah plus besoin finalement. ( bravo!) [[Utilisateur:L0u!$|L0u!$]] 26 janvier 2010 à 21:21 (UTC)
----
:) :) :) :) :) [[Utilisateur:Lol|Lol]]

= approbation=
Comment on fait pour approuver un article?? Je n'ai rien trouvé...
[[Utilisateur:Fran.b|Fran.b]] 27 janvier 2010 à 18:55 (UTC)
----
Salut, tu dois avoir en bas des pages l'option &quot;Relire cette version&quot;. Elle permet de donner un avis sur la qualité de la page &quot;relue&quot;.
Tu dois aussi avoir un onglet en haut des pages (aq = assurance qualité) qui permet de &quot;stabiliser&quot; les pages. J'avoue que pour cette option je n'ai pas fait d'essai... Tu te lances ? [[Utilisateur:WikiSysop|WikiSysop]] (c'est lol qui écrit, je me suis connecté en admin pour vérifier ce que je dis)

= Cube debian =

Salut, je sais pas trop où mettre ça donc une nouvelle section^^

J'ai modifié la page du cube debian et apporté une nouvelle version fr http://beronono.com/wiki-debian/index.php?title=Fichier:Cheat_cube_debian_fr.svg
Et du coup je l'ai remplacé dans la page dédiée au cube. 

Seulement, j'ai vu trop tard (-__-) qu'on pouvait téléverser une nouvelle version d'un fichier. Donc le fichier http://beronono.com/wiki-debian/index.php?title=Fichier:Cheat_cube_debian.svg  n'est plus utilisé et je ne sais pas comment le supprimer^^

----
Pas de soucis, je fais le ménage de temps en temps en regardant les fichiers ou pages orphelines. J'ai encore de la place !--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 09:13 (UTC)
----

== Raid mdadm ==

Salut, je me suis permis de renommer la page car il y avait une erreur de frappe dans &quot;mdadm&quot;. Je sais pas si j'ai bien fait... :x

----

Aucun soucis, tu as bien fait. Merci pour ton travail !
[[Utilisateur:Lol|Lol]] 18 mai 2010 à 14:57 (UTC)</text>
      <sha1>r7w50x2btz2is8ruxi50ya9h8xelsbg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1531</id>
      <parentid>1530</parentid>
      <timestamp>2010-05-18T15:59:20Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Raid mdadm */</comment>
      <text xml:space="preserve" bytes="5326">Page de discussion avec lol...

[[Projet_Accueil|Projet_Accueil]] une petite proposition de page d'accueil afin de créer des rubriques pour classer les articles. C'est une bête copie de la page de mediawiki...
----
Hi, c'est L0u!$. Je te précise que pour les liens internes au wiki, il vaut mieux les mettre sous la forme \[\[Test1|page de test\]\] que de mettre un lien complet. ça permet de savoir si la page existe ou pas.
----
Merci... Je copie/colle les liens du navigateur, alors forcément... Désolé, je rectifie. ça va ça ne bouffe pas trop ta connexion cette plaisanterie ?
----
T'inquiete: grosso-modo, on est 5-6 à lire/écrire sur ce wiki pour l'instant.
Je vais bientot prendre un hébergement gratuit pour le mettre, car mes parents n'aiment pas que mon serveur soit allumé 24h/24 .
----
:Bonjour à vous, n'hésitez pas à vous inspirer de wikipédia pour obtenir des astuces de présentation. Pour signer un message sur une page de discussion il suffit de mettre quatre tildes de suite : [[Utilisateur:Woj|woj]] 20 janvier 2010 à 12:00 (UTC)
----
Re,
Merci Branch, cool ! Pour l'hébergement; j'ai un blog débile sur un domaine qui m'appartient, je vais voir si je peux y mettre un MediaWiki... Volume illimité ! Ils ne proposent que TikiWiki et PhpWiki. Je pose la question pour l'installation de MediaWiki (le + sympa à mon avis). Et puis comme on a commencé avec ça... [[Utilisateur:Lol|Lol]]
----
Ah, sympa, merci.
juste pour savoir: qui a écrit le texte juste au dessus? ( lol je présume ?) 
[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:14 (UTC)
----
Re,
Non au dessus, c'est &quot;branch&quot; dit woj ! (c'est signé...) [[Utilisateur:Lol|Lol]] 20 janvier 2010 à 14:24 (UTC)
----
Bah non, je parlais du post précédent le mien. donc ça devait être toi, lol . [[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:28 (UTC)
PS: 3 ~ &quot;tildes&quot; permettent de n'afficher que le nom.

== bloc note ==

Une extension &quot;forum&quot; ?

http://www.mediawiki.org/wiki/Extension:AWC's_Forum - http://wiki.anotherwebcom.com/Installing_And_UnInstalling_(AWC_Wiki_Forum)

http://www.mediawiki.org/wiki/Extension:Forum_extension

http://www.mediawiki.org/wiki/Extension:DPLforum/old

http://www.mediawiki.org/wiki/Extension:MediaWiki_Bulletin_Board

http://www.mediawiki.org/wiki/Extension:LiquidThreads + http://www.mediawiki.org/wiki/Special:ExtensionDistributor

Mediawiki brésilien : http://wiki.forumdebian.com.br/index.php/Página_principal
---- 
la première a l'air vraiment pas mal. [[Utilisateur:L0u!$|L0u!$]]
----
Oui, c'est celle par laquelle j'ai commencé. Mais elle m'a fait des misères. La deuxième aussi, j'y ai passé ma journée, sans résultat. Grrr ! Je retente la première demain. Les boules ! Mais ce serait vraiment l'idéal, léger et facile d'y aller. Un forum externe c'est trop lourd... Je PERSISTE !
----
Je découvre ta page : super photo, elle est de toi ?
[[Utilisateur:Ricardo|Ricardo]]
----
Merci. Malheureusement... non ! Mais j'ai le droit de la publier rassure toi ! :) Tu as trouvé la signature, pratique ! Et si tu ajoute une quatrième &quot;tilde&quot; tu as la date et l'heure [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 13:54 (UTC)
----
Est-ce que tu peux m'envoyer le fichier de conf du forum par mail stp lol, via l'adresse que je t'avais donné dans un MP du forum(debian-fr)? [[Utilisateur:L0u!$|L0u!$]]
----
Bien sur, quels fichiers veux-tu exactement ? Juste le LocalSetting.php ? Quoi d'autre ? [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 17:36 (UTC)
----
Celui que tu as donné sur [[Discussion_utilisateur:L0u!$]] si possible. Bon bah plus besoin finalement. ( bravo!) [[Utilisateur:L0u!$|L0u!$]] 26 janvier 2010 à 21:21 (UTC)
----
:) :) :) :) :) [[Utilisateur:Lol|Lol]]

= approbation=
Comment on fait pour approuver un article?? Je n'ai rien trouvé...
[[Utilisateur:Fran.b|Fran.b]] 27 janvier 2010 à 18:55 (UTC)
----
Salut, tu dois avoir en bas des pages l'option &quot;Relire cette version&quot;. Elle permet de donner un avis sur la qualité de la page &quot;relue&quot;.
Tu dois aussi avoir un onglet en haut des pages (aq = assurance qualité) qui permet de &quot;stabiliser&quot; les pages. J'avoue que pour cette option je n'ai pas fait d'essai... Tu te lances ? [[Utilisateur:WikiSysop|WikiSysop]] (c'est lol qui écrit, je me suis connecté en admin pour vérifier ce que je dis)

= Cube debian =

Salut, je sais pas trop où mettre ça donc une nouvelle section^^

J'ai modifié la page du cube debian et apporté une nouvelle version fr http://beronono.com/wiki-debian/index.php?title=Fichier:Cheat_cube_debian_fr.svg
Et du coup je l'ai remplacé dans la page dédiée au cube. 

Seulement, j'ai vu trop tard (-__-) qu'on pouvait téléverser une nouvelle version d'un fichier. Donc le fichier http://beronono.com/wiki-debian/index.php?title=Fichier:Cheat_cube_debian.svg  n'est plus utilisé et je ne sais pas comment le supprimer^^

----
Pas de soucis, je fais le ménage de temps en temps en regardant les fichiers ou pages orphelines. J'ai encore de la place !--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 09:13 (UTC)
----

= Raid mdadm =

Salut, je me suis permis de renommer la page car il y avait une erreur de frappe dans &quot;mdadm&quot;. Je sais pas si j'ai bien fait... :x

----

Aucun soucis, tu as bien fait. Merci pour ton travail !
[[Utilisateur:Lol|Lol]] 18 mai 2010 à 14:57 (UTC)</text>
      <sha1>aqfw11ogq8gmsraa45mjdmbatwbaybf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1532</id>
      <parentid>1531</parentid>
      <timestamp>2010-05-18T16:00:07Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* approbation */</comment>
      <text xml:space="preserve" bytes="5326">Page de discussion avec lol...

[[Projet_Accueil|Projet_Accueil]] une petite proposition de page d'accueil afin de créer des rubriques pour classer les articles. C'est une bête copie de la page de mediawiki...
----
Hi, c'est L0u!$. Je te précise que pour les liens internes au wiki, il vaut mieux les mettre sous la forme \[\[Test1|page de test\]\] que de mettre un lien complet. ça permet de savoir si la page existe ou pas.
----
Merci... Je copie/colle les liens du navigateur, alors forcément... Désolé, je rectifie. ça va ça ne bouffe pas trop ta connexion cette plaisanterie ?
----
T'inquiete: grosso-modo, on est 5-6 à lire/écrire sur ce wiki pour l'instant.
Je vais bientot prendre un hébergement gratuit pour le mettre, car mes parents n'aiment pas que mon serveur soit allumé 24h/24 .
----
:Bonjour à vous, n'hésitez pas à vous inspirer de wikipédia pour obtenir des astuces de présentation. Pour signer un message sur une page de discussion il suffit de mettre quatre tildes de suite : [[Utilisateur:Woj|woj]] 20 janvier 2010 à 12:00 (UTC)
----
Re,
Merci Branch, cool ! Pour l'hébergement; j'ai un blog débile sur un domaine qui m'appartient, je vais voir si je peux y mettre un MediaWiki... Volume illimité ! Ils ne proposent que TikiWiki et PhpWiki. Je pose la question pour l'installation de MediaWiki (le + sympa à mon avis). Et puis comme on a commencé avec ça... [[Utilisateur:Lol|Lol]]
----
Ah, sympa, merci.
juste pour savoir: qui a écrit le texte juste au dessus? ( lol je présume ?) 
[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:14 (UTC)
----
Re,
Non au dessus, c'est &quot;branch&quot; dit woj ! (c'est signé...) [[Utilisateur:Lol|Lol]] 20 janvier 2010 à 14:24 (UTC)
----
Bah non, je parlais du post précédent le mien. donc ça devait être toi, lol . [[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:28 (UTC)
PS: 3 ~ &quot;tildes&quot; permettent de n'afficher que le nom.

== bloc note ==

Une extension &quot;forum&quot; ?

http://www.mediawiki.org/wiki/Extension:AWC's_Forum - http://wiki.anotherwebcom.com/Installing_And_UnInstalling_(AWC_Wiki_Forum)

http://www.mediawiki.org/wiki/Extension:Forum_extension

http://www.mediawiki.org/wiki/Extension:DPLforum/old

http://www.mediawiki.org/wiki/Extension:MediaWiki_Bulletin_Board

http://www.mediawiki.org/wiki/Extension:LiquidThreads + http://www.mediawiki.org/wiki/Special:ExtensionDistributor

Mediawiki brésilien : http://wiki.forumdebian.com.br/index.php/Página_principal
---- 
la première a l'air vraiment pas mal. [[Utilisateur:L0u!$|L0u!$]]
----
Oui, c'est celle par laquelle j'ai commencé. Mais elle m'a fait des misères. La deuxième aussi, j'y ai passé ma journée, sans résultat. Grrr ! Je retente la première demain. Les boules ! Mais ce serait vraiment l'idéal, léger et facile d'y aller. Un forum externe c'est trop lourd... Je PERSISTE !
----
Je découvre ta page : super photo, elle est de toi ?
[[Utilisateur:Ricardo|Ricardo]]
----
Merci. Malheureusement... non ! Mais j'ai le droit de la publier rassure toi ! :) Tu as trouvé la signature, pratique ! Et si tu ajoute une quatrième &quot;tilde&quot; tu as la date et l'heure [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 13:54 (UTC)
----
Est-ce que tu peux m'envoyer le fichier de conf du forum par mail stp lol, via l'adresse que je t'avais donné dans un MP du forum(debian-fr)? [[Utilisateur:L0u!$|L0u!$]]
----
Bien sur, quels fichiers veux-tu exactement ? Juste le LocalSetting.php ? Quoi d'autre ? [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 17:36 (UTC)
----
Celui que tu as donné sur [[Discussion_utilisateur:L0u!$]] si possible. Bon bah plus besoin finalement. ( bravo!) [[Utilisateur:L0u!$|L0u!$]] 26 janvier 2010 à 21:21 (UTC)
----
:) :) :) :) :) [[Utilisateur:Lol|Lol]]

= approbation=
Comment fait-on pour approuver un article?? Je n'ai rien trouvé...
[[Utilisateur:Fran.b|Fran.b]] 27 janvier 2010 à 18:55 (UTC)
----
Salut, tu dois avoir en bas des pages l'option &quot;Relire cette version&quot;. Elle permet de donner un avis sur la qualité de la page &quot;relue&quot;.
Tu dois aussi avoir un onglet en haut des pages (aq = assurance qualité) qui permet de &quot;stabiliser&quot; les pages. J'avoue que pour cette option je n'ai pas fait d'essai... Tu te lances ? [[Utilisateur:WikiSysop|WikiSysop]] (c'est lol qui écrit, je me suis connecté en admin pour vérifier ce que je dis)

= Cube debian =

Salut, je sais pas trop où mettre ça donc une nouvelle section^^

J'ai modifié la page du cube debian et apporté une nouvelle version fr http://beronono.com/wiki-debian/index.php?title=Fichier:Cheat_cube_debian_fr.svg
Et du coup je l'ai remplacé dans la page dédiée au cube. 

Seulement, j'ai vu trop tard (-__-) qu'on pouvait téléverser une nouvelle version d'un fichier. Donc le fichier http://beronono.com/wiki-debian/index.php?title=Fichier:Cheat_cube_debian.svg  n'est plus utilisé et je ne sais pas comment le supprimer^^

----
Pas de soucis, je fais le ménage de temps en temps en regardant les fichiers ou pages orphelines. J'ai encore de la place !--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 09:13 (UTC)
----

= Raid mdadm =

Salut, je me suis permis de renommer la page car il y avait une erreur de frappe dans &quot;mdadm&quot;. Je sais pas si j'ai bien fait... :x

----

Aucun soucis, tu as bien fait. Merci pour ton travail !
[[Utilisateur:Lol|Lol]] 18 mai 2010 à 14:57 (UTC)</text>
      <sha1>k5avdqv8eed6n1aukxy0wfv2vu6f5xg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2240</id>
      <parentid>1532</parentid>
      <timestamp>2010-10-21T07:25:56Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <comment>/* Je sais pas comment te contacter autrement que via ici */ nouvelle section</comment>
      <text xml:space="preserve" bytes="5651">Page de discussion avec lol...

[[Projet_Accueil|Projet_Accueil]] une petite proposition de page d'accueil afin de créer des rubriques pour classer les articles. C'est une bête copie de la page de mediawiki...
----
Hi, c'est L0u!$. Je te précise que pour les liens internes au wiki, il vaut mieux les mettre sous la forme \[\[Test1|page de test\]\] que de mettre un lien complet. ça permet de savoir si la page existe ou pas.
----
Merci... Je copie/colle les liens du navigateur, alors forcément... Désolé, je rectifie. ça va ça ne bouffe pas trop ta connexion cette plaisanterie ?
----
T'inquiete: grosso-modo, on est 5-6 à lire/écrire sur ce wiki pour l'instant.
Je vais bientot prendre un hébergement gratuit pour le mettre, car mes parents n'aiment pas que mon serveur soit allumé 24h/24 .
----
:Bonjour à vous, n'hésitez pas à vous inspirer de wikipédia pour obtenir des astuces de présentation. Pour signer un message sur une page de discussion il suffit de mettre quatre tildes de suite : [[Utilisateur:Woj|woj]] 20 janvier 2010 à 12:00 (UTC)
----
Re,
Merci Branch, cool ! Pour l'hébergement; j'ai un blog débile sur un domaine qui m'appartient, je vais voir si je peux y mettre un MediaWiki... Volume illimité ! Ils ne proposent que TikiWiki et PhpWiki. Je pose la question pour l'installation de MediaWiki (le + sympa à mon avis). Et puis comme on a commencé avec ça... [[Utilisateur:Lol|Lol]]
----
Ah, sympa, merci.
juste pour savoir: qui a écrit le texte juste au dessus? ( lol je présume ?) 
[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:14 (UTC)
----
Re,
Non au dessus, c'est &quot;branch&quot; dit woj ! (c'est signé...) [[Utilisateur:Lol|Lol]] 20 janvier 2010 à 14:24 (UTC)
----
Bah non, je parlais du post précédent le mien. donc ça devait être toi, lol . [[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:28 (UTC)
PS: 3 ~ &quot;tildes&quot; permettent de n'afficher que le nom.

== bloc note ==

Une extension &quot;forum&quot; ?

http://www.mediawiki.org/wiki/Extension:AWC's_Forum - http://wiki.anotherwebcom.com/Installing_And_UnInstalling_(AWC_Wiki_Forum)

http://www.mediawiki.org/wiki/Extension:Forum_extension

http://www.mediawiki.org/wiki/Extension:DPLforum/old

http://www.mediawiki.org/wiki/Extension:MediaWiki_Bulletin_Board

http://www.mediawiki.org/wiki/Extension:LiquidThreads + http://www.mediawiki.org/wiki/Special:ExtensionDistributor

Mediawiki brésilien : http://wiki.forumdebian.com.br/index.php/Página_principal
---- 
la première a l'air vraiment pas mal. [[Utilisateur:L0u!$|L0u!$]]
----
Oui, c'est celle par laquelle j'ai commencé. Mais elle m'a fait des misères. La deuxième aussi, j'y ai passé ma journée, sans résultat. Grrr ! Je retente la première demain. Les boules ! Mais ce serait vraiment l'idéal, léger et facile d'y aller. Un forum externe c'est trop lourd... Je PERSISTE !
----
Je découvre ta page : super photo, elle est de toi ?
[[Utilisateur:Ricardo|Ricardo]]
----
Merci. Malheureusement... non ! Mais j'ai le droit de la publier rassure toi ! :) Tu as trouvé la signature, pratique ! Et si tu ajoute une quatrième &quot;tilde&quot; tu as la date et l'heure [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 13:54 (UTC)
----
Est-ce que tu peux m'envoyer le fichier de conf du forum par mail stp lol, via l'adresse que je t'avais donné dans un MP du forum(debian-fr)? [[Utilisateur:L0u!$|L0u!$]]
----
Bien sur, quels fichiers veux-tu exactement ? Juste le LocalSetting.php ? Quoi d'autre ? [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 17:36 (UTC)
----
Celui que tu as donné sur [[Discussion_utilisateur:L0u!$]] si possible. Bon bah plus besoin finalement. ( bravo!) [[Utilisateur:L0u!$|L0u!$]] 26 janvier 2010 à 21:21 (UTC)
----
:) :) :) :) :) [[Utilisateur:Lol|Lol]]

= approbation=
Comment fait-on pour approuver un article?? Je n'ai rien trouvé...
[[Utilisateur:Fran.b|Fran.b]] 27 janvier 2010 à 18:55 (UTC)
----
Salut, tu dois avoir en bas des pages l'option &quot;Relire cette version&quot;. Elle permet de donner un avis sur la qualité de la page &quot;relue&quot;.
Tu dois aussi avoir un onglet en haut des pages (aq = assurance qualité) qui permet de &quot;stabiliser&quot; les pages. J'avoue que pour cette option je n'ai pas fait d'essai... Tu te lances ? [[Utilisateur:WikiSysop|WikiSysop]] (c'est lol qui écrit, je me suis connecté en admin pour vérifier ce que je dis)

= Cube debian =

Salut, je sais pas trop où mettre ça donc une nouvelle section^^

J'ai modifié la page du cube debian et apporté une nouvelle version fr http://beronono.com/wiki-debian/index.php?title=Fichier:Cheat_cube_debian_fr.svg
Et du coup je l'ai remplacé dans la page dédiée au cube. 

Seulement, j'ai vu trop tard (-__-) qu'on pouvait téléverser une nouvelle version d'un fichier. Donc le fichier http://beronono.com/wiki-debian/index.php?title=Fichier:Cheat_cube_debian.svg  n'est plus utilisé et je ne sais pas comment le supprimer^^

----
Pas de soucis, je fais le ménage de temps en temps en regardant les fichiers ou pages orphelines. J'ai encore de la place !--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 09:13 (UTC)
----

= Raid mdadm =

Salut, je me suis permis de renommer la page car il y avait une erreur de frappe dans &quot;mdadm&quot;. Je sais pas si j'ai bien fait... :x

----

Aucun soucis, tu as bien fait. Merci pour ton travail !
[[Utilisateur:Lol|Lol]] 18 mai 2010 à 14:57 (UTC)

== Je sais pas comment te contacter autrement que via ici ==

Salut, c'est l0u!$, je n'ai pas vu de messagerie privée sur le wiki
Je ne comprend pas pourquoi mon ip a été bannie définitivement du forum.
Si c'est juste, j'aimerai au moins savoir pourquoi ( je ne me souviens pas avoir été contre les règles du forum )</text>
      <sha1>ijqexarzlchdok4whpytu3vue7phv6w</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2241</id>
      <parentid>2240</parentid>
      <timestamp>2010-10-21T08:19:11Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <comment>/* Je sais pas comment te contacter autrement que via ici */</comment>
      <text xml:space="preserve" bytes="5793">Page de discussion avec lol...

[[Projet_Accueil|Projet_Accueil]] une petite proposition de page d'accueil afin de créer des rubriques pour classer les articles. C'est une bête copie de la page de mediawiki...
----
Hi, c'est L0u!$. Je te précise que pour les liens internes au wiki, il vaut mieux les mettre sous la forme \[\[Test1|page de test\]\] que de mettre un lien complet. ça permet de savoir si la page existe ou pas.
----
Merci... Je copie/colle les liens du navigateur, alors forcément... Désolé, je rectifie. ça va ça ne bouffe pas trop ta connexion cette plaisanterie ?
----
T'inquiete: grosso-modo, on est 5-6 à lire/écrire sur ce wiki pour l'instant.
Je vais bientot prendre un hébergement gratuit pour le mettre, car mes parents n'aiment pas que mon serveur soit allumé 24h/24 .
----
:Bonjour à vous, n'hésitez pas à vous inspirer de wikipédia pour obtenir des astuces de présentation. Pour signer un message sur une page de discussion il suffit de mettre quatre tildes de suite : [[Utilisateur:Woj|woj]] 20 janvier 2010 à 12:00 (UTC)
----
Re,
Merci Branch, cool ! Pour l'hébergement; j'ai un blog débile sur un domaine qui m'appartient, je vais voir si je peux y mettre un MediaWiki... Volume illimité ! Ils ne proposent que TikiWiki et PhpWiki. Je pose la question pour l'installation de MediaWiki (le + sympa à mon avis). Et puis comme on a commencé avec ça... [[Utilisateur:Lol|Lol]]
----
Ah, sympa, merci.
juste pour savoir: qui a écrit le texte juste au dessus? ( lol je présume ?) 
[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:14 (UTC)
----
Re,
Non au dessus, c'est &quot;branch&quot; dit woj ! (c'est signé...) [[Utilisateur:Lol|Lol]] 20 janvier 2010 à 14:24 (UTC)
----
Bah non, je parlais du post précédent le mien. donc ça devait être toi, lol . [[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:28 (UTC)
PS: 3 ~ &quot;tildes&quot; permettent de n'afficher que le nom.

== bloc note ==

Une extension &quot;forum&quot; ?

http://www.mediawiki.org/wiki/Extension:AWC's_Forum - http://wiki.anotherwebcom.com/Installing_And_UnInstalling_(AWC_Wiki_Forum)

http://www.mediawiki.org/wiki/Extension:Forum_extension

http://www.mediawiki.org/wiki/Extension:DPLforum/old

http://www.mediawiki.org/wiki/Extension:MediaWiki_Bulletin_Board

http://www.mediawiki.org/wiki/Extension:LiquidThreads + http://www.mediawiki.org/wiki/Special:ExtensionDistributor

Mediawiki brésilien : http://wiki.forumdebian.com.br/index.php/Página_principal
---- 
la première a l'air vraiment pas mal. [[Utilisateur:L0u!$|L0u!$]]
----
Oui, c'est celle par laquelle j'ai commencé. Mais elle m'a fait des misères. La deuxième aussi, j'y ai passé ma journée, sans résultat. Grrr ! Je retente la première demain. Les boules ! Mais ce serait vraiment l'idéal, léger et facile d'y aller. Un forum externe c'est trop lourd... Je PERSISTE !
----
Je découvre ta page : super photo, elle est de toi ?
[[Utilisateur:Ricardo|Ricardo]]
----
Merci. Malheureusement... non ! Mais j'ai le droit de la publier rassure toi ! :) Tu as trouvé la signature, pratique ! Et si tu ajoute une quatrième &quot;tilde&quot; tu as la date et l'heure [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 13:54 (UTC)
----
Est-ce que tu peux m'envoyer le fichier de conf du forum par mail stp lol, via l'adresse que je t'avais donné dans un MP du forum(debian-fr)? [[Utilisateur:L0u!$|L0u!$]]
----
Bien sur, quels fichiers veux-tu exactement ? Juste le LocalSetting.php ? Quoi d'autre ? [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 17:36 (UTC)
----
Celui que tu as donné sur [[Discussion_utilisateur:L0u!$]] si possible. Bon bah plus besoin finalement. ( bravo!) [[Utilisateur:L0u!$|L0u!$]] 26 janvier 2010 à 21:21 (UTC)
----
:) :) :) :) :) [[Utilisateur:Lol|Lol]]

= approbation=
Comment fait-on pour approuver un article?? Je n'ai rien trouvé...
[[Utilisateur:Fran.b|Fran.b]] 27 janvier 2010 à 18:55 (UTC)
----
Salut, tu dois avoir en bas des pages l'option &quot;Relire cette version&quot;. Elle permet de donner un avis sur la qualité de la page &quot;relue&quot;.
Tu dois aussi avoir un onglet en haut des pages (aq = assurance qualité) qui permet de &quot;stabiliser&quot; les pages. J'avoue que pour cette option je n'ai pas fait d'essai... Tu te lances ? [[Utilisateur:WikiSysop|WikiSysop]] (c'est lol qui écrit, je me suis connecté en admin pour vérifier ce que je dis)

= Cube debian =

Salut, je sais pas trop où mettre ça donc une nouvelle section^^

J'ai modifié la page du cube debian et apporté une nouvelle version fr http://beronono.com/wiki-debian/index.php?title=Fichier:Cheat_cube_debian_fr.svg
Et du coup je l'ai remplacé dans la page dédiée au cube. 

Seulement, j'ai vu trop tard (-__-) qu'on pouvait téléverser une nouvelle version d'un fichier. Donc le fichier http://beronono.com/wiki-debian/index.php?title=Fichier:Cheat_cube_debian.svg  n'est plus utilisé et je ne sais pas comment le supprimer^^

----
Pas de soucis, je fais le ménage de temps en temps en regardant les fichiers ou pages orphelines. J'ai encore de la place !--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 09:13 (UTC)
----

= Raid mdadm =

Salut, je me suis permis de renommer la page car il y avait une erreur de frappe dans &quot;mdadm&quot;. Je sais pas si j'ai bien fait... :x

----

Aucun soucis, tu as bien fait. Merci pour ton travail !
[[Utilisateur:Lol|Lol]] 18 mai 2010 à 14:57 (UTC)

== Je sais pas comment te contacter autrement que via ici ==

Salut, c'est l0u!$, je n'ai pas vu de messagerie privée sur le wiki
Je ne comprend pas pourquoi mon ip a été bannie définitivement du forum.
Si c'est juste, j'aimerai au moins savoir pourquoi ( je ne me souviens pas avoir été contre les règles du forum )

Je ne sais pas mieux que toi me servir de ce forum.

Pour discuter avec des têtes connues  inscris toi à :

http://aptosid-fr.org/forum :)</text>
      <sha1>64iftlg82wa61ktrnohlsza2pdbf2uh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2693</id>
      <parentid>2241</parentid>
      <timestamp>2011-02-08T12:30:31Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Je sais pas comment te contacter autrement que via ici */</comment>
      <text xml:space="preserve" bytes="5788">Page de discussion avec lol...

[[Projet_Accueil|Projet_Accueil]] une petite proposition de page d'accueil afin de créer des rubriques pour classer les articles. C'est une bête copie de la page de mediawiki...
----
Hi, c'est L0u!$. Je te précise que pour les liens internes au wiki, il vaut mieux les mettre sous la forme \[\[Test1|page de test\]\] que de mettre un lien complet. ça permet de savoir si la page existe ou pas.
----
Merci... Je copie/colle les liens du navigateur, alors forcément... Désolé, je rectifie. ça va ça ne bouffe pas trop ta connexion cette plaisanterie ?
----
T'inquiete: grosso-modo, on est 5-6 à lire/écrire sur ce wiki pour l'instant.
Je vais bientot prendre un hébergement gratuit pour le mettre, car mes parents n'aiment pas que mon serveur soit allumé 24h/24 .
----
:Bonjour à vous, n'hésitez pas à vous inspirer de wikipédia pour obtenir des astuces de présentation. Pour signer un message sur une page de discussion il suffit de mettre quatre tildes de suite : [[Utilisateur:Woj|woj]] 20 janvier 2010 à 12:00 (UTC)
----
Re,
Merci Branch, cool ! Pour l'hébergement; j'ai un blog débile sur un domaine qui m'appartient, je vais voir si je peux y mettre un MediaWiki... Volume illimité ! Ils ne proposent que TikiWiki et PhpWiki. Je pose la question pour l'installation de MediaWiki (le + sympa à mon avis). Et puis comme on a commencé avec ça... [[Utilisateur:Lol|Lol]]
----
Ah, sympa, merci.
juste pour savoir: qui a écrit le texte juste au dessus? ( lol je présume ?) 
[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:14 (UTC)
----
Re,
Non au dessus, c'est &quot;branch&quot; dit woj ! (c'est signé...) [[Utilisateur:Lol|Lol]] 20 janvier 2010 à 14:24 (UTC)
----
Bah non, je parlais du post précédent le mien. donc ça devait être toi, lol . [[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:28 (UTC)
PS: 3 ~ &quot;tildes&quot; permettent de n'afficher que le nom.

== bloc note ==

Une extension &quot;forum&quot; ?

http://www.mediawiki.org/wiki/Extension:AWC's_Forum - http://wiki.anotherwebcom.com/Installing_And_UnInstalling_(AWC_Wiki_Forum)

http://www.mediawiki.org/wiki/Extension:Forum_extension

http://www.mediawiki.org/wiki/Extension:DPLforum/old

http://www.mediawiki.org/wiki/Extension:MediaWiki_Bulletin_Board

http://www.mediawiki.org/wiki/Extension:LiquidThreads + http://www.mediawiki.org/wiki/Special:ExtensionDistributor

Mediawiki brésilien : http://wiki.forumdebian.com.br/index.php/Página_principal
---- 
la première a l'air vraiment pas mal. [[Utilisateur:L0u!$|L0u!$]]
----
Oui, c'est celle par laquelle j'ai commencé. Mais elle m'a fait des misères. La deuxième aussi, j'y ai passé ma journée, sans résultat. Grrr ! Je retente la première demain. Les boules ! Mais ce serait vraiment l'idéal, léger et facile d'y aller. Un forum externe c'est trop lourd... Je PERSISTE !
----
Je découvre ta page : super photo, elle est de toi ?
[[Utilisateur:Ricardo|Ricardo]]
----
Merci. Malheureusement... non ! Mais j'ai le droit de la publier rassure toi ! :) Tu as trouvé la signature, pratique ! Et si tu ajoute une quatrième &quot;tilde&quot; tu as la date et l'heure [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 13:54 (UTC)
----
Est-ce que tu peux m'envoyer le fichier de conf du forum par mail stp lol, via l'adresse que je t'avais donné dans un MP du forum(debian-fr)? [[Utilisateur:L0u!$|L0u!$]]
----
Bien sur, quels fichiers veux-tu exactement ? Juste le LocalSetting.php ? Quoi d'autre ? [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 17:36 (UTC)
----
Celui que tu as donné sur [[Discussion_utilisateur:L0u!$]] si possible. Bon bah plus besoin finalement. ( bravo!) [[Utilisateur:L0u!$|L0u!$]] 26 janvier 2010 à 21:21 (UTC)
----
:) :) :) :) :) [[Utilisateur:Lol|Lol]]

= approbation=
Comment fait-on pour approuver un article?? Je n'ai rien trouvé...
[[Utilisateur:Fran.b|Fran.b]] 27 janvier 2010 à 18:55 (UTC)
----
Salut, tu dois avoir en bas des pages l'option &quot;Relire cette version&quot;. Elle permet de donner un avis sur la qualité de la page &quot;relue&quot;.
Tu dois aussi avoir un onglet en haut des pages (aq = assurance qualité) qui permet de &quot;stabiliser&quot; les pages. J'avoue que pour cette option je n'ai pas fait d'essai... Tu te lances ? [[Utilisateur:WikiSysop|WikiSysop]] (c'est lol qui écrit, je me suis connecté en admin pour vérifier ce que je dis)

= Cube debian =

Salut, je sais pas trop où mettre ça donc une nouvelle section^^

J'ai modifié la page du cube debian et apporté une nouvelle version fr http://beronono.com/wiki-debian/index.php?title=Fichier:Cheat_cube_debian_fr.svg
Et du coup je l'ai remplacé dans la page dédiée au cube. 

Seulement, j'ai vu trop tard (-__-) qu'on pouvait téléverser une nouvelle version d'un fichier. Donc le fichier http://beronono.com/wiki-debian/index.php?title=Fichier:Cheat_cube_debian.svg  n'est plus utilisé et je ne sais pas comment le supprimer^^

----
Pas de soucis, je fais le ménage de temps en temps en regardant les fichiers ou pages orphelines. J'ai encore de la place !--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 09:13 (UTC)
----

= Raid mdadm =

Salut, je me suis permis de renommer la page car il y avait une erreur de frappe dans &quot;mdadm&quot;. Je sais pas si j'ai bien fait... :x

----

Aucun soucis, tu as bien fait. Merci pour ton travail !
[[Utilisateur:Lol|Lol]] 18 mai 2010 à 14:57 (UTC)

== Je sais pas comment te contacter autrement que via ici ==

Salut, c'est l0u!$, je n'ai pas vu de messagerie privée sur le wiki
Je ne comprend pas pourquoi mon ip a été bannie définitivement du forum.
Si c'est juste, j'aimerai au moins savoir pourquoi ( je ne me souviens pas avoir été contre les règles du forum )

Je ne sais pas mieux que toi me servir de ce forum.

Pour discuter avec des têtes connues  inscris toi à :

http://aptosid-fr.org/ :)</text>
      <sha1>0zqxstcwygcujz3vf943wypkufqmix7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2694</id>
      <parentid>2693</parentid>
      <timestamp>2011-02-08T13:09:23Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="5934">Page de discussion avec lol...

[[Projet_Accueil|Projet_Accueil]] une petite proposition de page d'accueil afin de créer des rubriques pour classer les articles. C'est une bête copie de la page de mediawiki...
----
Hi, c'est L0u!$. Je te précise que pour les liens internes au wiki, il vaut mieux les mettre sous la forme \[\[Test1|page de test\]\] que de mettre un lien complet. ça permet de savoir si la page existe ou pas.
----
Merci... Je copie/colle les liens du navigateur, alors forcément... Désolé, je rectifie. ça va ça ne bouffe pas trop ta connexion cette plaisanterie ?
----
T'inquiete: grosso-modo, on est 5-6 à lire/écrire sur ce wiki pour l'instant.
Je vais bientot prendre un hébergement gratuit pour le mettre, car mes parents n'aiment pas que mon serveur soit allumé 24h/24 .
----
:Bonjour à vous, n'hésitez pas à vous inspirer de wikipédia pour obtenir des astuces de présentation. Pour signer un message sur une page de discussion il suffit de mettre quatre tildes de suite : [[Utilisateur:Woj|woj]] 20 janvier 2010 à 12:00 (UTC)
----
Re,
Merci Branch, cool ! Pour l'hébergement; j'ai un blog débile sur un domaine qui m'appartient, je vais voir si je peux y mettre un MediaWiki... Volume illimité ! Ils ne proposent que TikiWiki et PhpWiki. Je pose la question pour l'installation de MediaWiki (le + sympa à mon avis). Et puis comme on a commencé avec ça... [[Utilisateur:Lol|Lol]]
----
Ah, sympa, merci.
juste pour savoir: qui a écrit le texte juste au dessus? ( lol je présume ?) 
[[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:14 (UTC)
----
Re,
Non au dessus, c'est &quot;branch&quot; dit woj ! (c'est signé...) [[Utilisateur:Lol|Lol]] 20 janvier 2010 à 14:24 (UTC)
----
Bah non, je parlais du post précédent le mien. donc ça devait être toi, lol . [[Utilisateur:L0u!$|L0u!$]] 20 janvier 2010 à 14:28 (UTC)
PS: 3 ~ &quot;tildes&quot; permettent de n'afficher que le nom.

== bloc note ==

Une extension &quot;forum&quot; ?

http://www.mediawiki.org/wiki/Extension:AWC's_Forum - http://wiki.anotherwebcom.com/Installing_And_UnInstalling_(AWC_Wiki_Forum)

http://www.mediawiki.org/wiki/Extension:Forum_extension

http://www.mediawiki.org/wiki/Extension:DPLforum/old

http://www.mediawiki.org/wiki/Extension:MediaWiki_Bulletin_Board

http://www.mediawiki.org/wiki/Extension:LiquidThreads + http://www.mediawiki.org/wiki/Special:ExtensionDistributor

Mediawiki brésilien : http://wiki.forumdebian.com.br/index.php/Página_principal
---- 
la première a l'air vraiment pas mal. [[Utilisateur:L0u!$|L0u!$]]
----
Oui, c'est celle par laquelle j'ai commencé. Mais elle m'a fait des misères. La deuxième aussi, j'y ai passé ma journée, sans résultat. Grrr ! Je retente la première demain. Les boules ! Mais ce serait vraiment l'idéal, léger et facile d'y aller. Un forum externe c'est trop lourd... Je PERSISTE !
----
Je découvre ta page : super photo, elle est de toi ?
[[Utilisateur:Ricardo|Ricardo]]
----
Merci. Malheureusement... non ! Mais j'ai le droit de la publier rassure toi ! :) Tu as trouvé la signature, pratique ! Et si tu ajoute une quatrième &quot;tilde&quot; tu as la date et l'heure [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 13:54 (UTC)
----
Est-ce que tu peux m'envoyer le fichier de conf du forum par mail stp lol, via l'adresse que je t'avais donné dans un MP du forum(debian-fr)? [[Utilisateur:L0u!$|L0u!$]]
----
Bien sur, quels fichiers veux-tu exactement ? Juste le LocalSetting.php ? Quoi d'autre ? [[Utilisateur:Lol|Lol]] 26 janvier 2010 à 17:36 (UTC)
----
Celui que tu as donné sur [[Discussion_utilisateur:L0u!$]] si possible. Bon bah plus besoin finalement. ( bravo!) [[Utilisateur:L0u!$|L0u!$]] 26 janvier 2010 à 21:21 (UTC)
----
:) :) :) :) :) [[Utilisateur:Lol|Lol]]

= approbation=
Comment fait-on pour approuver un article?? Je n'ai rien trouvé...
[[Utilisateur:Fran.b|Fran.b]] 27 janvier 2010 à 18:55 (UTC)
----
Salut, tu dois avoir en bas des pages l'option &quot;Relire cette version&quot;. Elle permet de donner un avis sur la qualité de la page &quot;relue&quot;.
Tu dois aussi avoir un onglet en haut des pages (aq = assurance qualité) qui permet de &quot;stabiliser&quot; les pages. J'avoue que pour cette option je n'ai pas fait d'essai... Tu te lances ? [[Utilisateur:WikiSysop|WikiSysop]] (c'est lol qui écrit, je me suis connecté en admin pour vérifier ce que je dis)

= Cube debian =

Salut, je sais pas trop où mettre ça donc une nouvelle section^^

J'ai modifié la page du cube debian et apporté une nouvelle version fr http://beronono.com/wiki-debian/index.php?title=Fichier:Cheat_cube_debian_fr.svg
Et du coup je l'ai remplacé dans la page dédiée au cube. 

Seulement, j'ai vu trop tard (-__-) qu'on pouvait téléverser une nouvelle version d'un fichier. Donc le fichier http://beronono.com/wiki-debian/index.php?title=Fichier:Cheat_cube_debian.svg  n'est plus utilisé et je ne sais pas comment le supprimer^^

----
Pas de soucis, je fais le ménage de temps en temps en regardant les fichiers ou pages orphelines. J'ai encore de la place !--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 09:13 (UTC)
----

= Raid mdadm =

Salut, je me suis permis de renommer la page car il y avait une erreur de frappe dans &quot;mdadm&quot;. Je sais pas si j'ai bien fait... :x

----

Aucun soucis, tu as bien fait. Merci pour ton travail !
[[Utilisateur:Lol|Lol]] 18 mai 2010 à 14:57 (UTC)

== Je sais pas comment te contacter autrement que via ici ==

Salut, c'est l0u!$, je n'ai pas vu de messagerie privée sur le wiki
Je ne comprend pas pourquoi mon ip a été bannie définitivement du forum.
Si c'est juste, j'aimerai au moins savoir pourquoi ( je ne me souviens pas avoir été contre les règles du forum )
----
Je ne sais pas mieux que toi me servir de ce forum.

Pour discuter avec des têtes connues  inscris toi à :

http://aptosid-fr.org/ :)
----
Je suis toujours inscrit! Je ne passe pas très souvent ces derniers temps...[[Utilisateur:Lol|Lol]] 8 février 2011 à 07:09 (CST)
----</text>
      <sha1>ltgtizzrj8o5z589jifseead7q5kx87</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Loreleil</title>
    <ns>3</ns>
    <id>910</id>
    <revision>
      <id>3787</id>
      <timestamp>2012-02-04T08:03:39Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <comment>Page créée avec « Bonjour,  Mon pseudo sur le forum : loreleil  Je vous en serre cinq ... »</comment>
      <text xml:space="preserve" bytes="71">Bonjour,

Mon pseudo sur le forum : loreleil

Je vous en serre cinq ...</text>
      <sha1>hjfs097ylb4y2dtufhp24hea2hgvvmk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3788</id>
      <parentid>3787</parentid>
      <timestamp>2012-02-04T09:05:35Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <text xml:space="preserve" bytes="726">Bonjour,

*'''Sauvegardé''' : Participe passé du verbe sauvegarder.
** Par extension : assurer, conserver, défendre, garantir, préserver, réserver, sauver.

* A mon sens, '''cette action doit être effectuer avant la catastrophe''', d'où l'utilisation du participe passé que j'emploie  ici, ce que je veux dire par là et vous en conviendrez très certainement.
** '''On se prémunit d'un crash disque, matériel, et autre ...  avec une sauvegarde effectué Avant !!! '''

* Ceci ne remet nullement en cause les actions suivantes :
** Je vais sauvegarder, demain je sauvegarderai, la semaine prochaine je sauvegarderai, ainsi de suite, à volonté et sans aucune modération ... et je sauvegarderai encore et encore ...</text>
      <sha1>iykf1mtkl3e9r64hx9wc8qe4gg2vgb4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Lou1</title>
    <ns>3</ns>
    <id>1210</id>
    <revision>
      <id>4971</id>
      <timestamp>2013-02-12T09:14:59Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="338">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 12 février 2013 à 10:14 (CET)</text>
      <sha1>69ley6yqci8fizhzt0vlbxfmegd0bgh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:MB</title>
    <ns>3</ns>
    <id>1281</id>
    <revision>
      <id>5339</id>
      <timestamp>2013-08-07T09:41:27Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="367">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Ggoodluck47|Amicalement, Gerard]] ([[Discussion utilisateur:Ggoodluck47|discussion]]) 7 août 2013 à 11:41 (CEST)</text>
      <sha1>azgn3ahbj88j7ci5ztkn80gwduj8ue5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Madm4as</title>
    <ns>3</ns>
    <id>1039</id>
    <revision>
      <id>4349</id>
      <timestamp>2012-07-23T04:31:53Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="338">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 23 juillet 2012 à 06:31 (CEST)</text>
      <sha1>fvcmnt5skubqti8pabnd3n08hk3rzkc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Meldrash</title>
    <ns>3</ns>
    <id>1031</id>
    <revision>
      <id>4334</id>
      <timestamp>2012-06-20T14:08:36Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="335">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 20 juin 2012 à 16:08 (CEST)</text>
      <sha1>60kzwfr72et4yscofaijm162eeme9xw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Melvyn</title>
    <ns>3</ns>
    <id>1269</id>
    <revision>
      <id>5288</id>
      <timestamp>2013-06-20T15:58:23Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="341">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 20 juin 2013 à 17:58 (CEST)</text>
      <sha1>cn1v1br15uvylwuz8v5zwdj655nzril</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:MicP</title>
    <ns>3</ns>
    <id>1254</id>
    <revision>
      <id>5150</id>
      <timestamp>2013-05-13T14:44:05Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="334">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 13 mai 2013 à 16:44 (CEST)</text>
      <sha1>bylusyj7biltvlivbq1xsdfvibydn0s</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Mostfa</title>
    <ns>3</ns>
    <id>1154</id>
    <revision>
      <id>4724</id>
      <timestamp>2012-11-05T10:01:03Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="355">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:WikiSysop|WikiSysop]] ([[Discussion utilisateur:WikiSysop|discussion]]) 5 novembre 2012 à 11:01 (CET)</text>
      <sha1>9rhjz8n40rz35dd9j0dsxcl676to2se</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:NaMoUr</title>
    <ns>3</ns>
    <id>1286</id>
    <revision>
      <id>5361</id>
      <timestamp>2013-08-25T06:34:00Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="368">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Ggoodluck47|Amicalement, Gerard]] ([[Discussion utilisateur:Ggoodluck47|discussion]]) 25 août 2013 à 08:34 (CEST)</text>
      <sha1>ecc287zcokrmiemvfuop8gxlpctm9l7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Nadsoft</title>
    <ns>3</ns>
    <id>1089</id>
    <revision>
      <id>4497</id>
      <timestamp>2012-09-24T04:39:09Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="340">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 24 septembre 2012 à 06:39 (CEST)</text>
      <sha1>a2f948uwjcdd1eynapp9g4027cvy7u0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Nalijaona</title>
    <ns>3</ns>
    <id>1347</id>
    <revision>
      <id>5820</id>
      <timestamp>2014-09-07T15:51:09Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="345">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 7 septembre 2014 à 17:51 (CEST)</text>
      <sha1>h4nhpgntrnafzkzjoqkfc03cd2icbyt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Neibaf</title>
    <ns>3</ns>
    <id>1312</id>
    <revision>
      <id>5539</id>
      <timestamp>2014-01-24T09:29:34Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="343">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 24 janvier 2014 à 10:29 (CET)</text>
      <sha1>ljdma6z2roxm32jsysrga9x5wmxof4q</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:NicNac</title>
    <ns>3</ns>
    <id>1257</id>
    <revision>
      <id>5193</id>
      <timestamp>2013-05-17T14:36:26Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="340">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 17 mai 2013 à 16:36 (CEST)</text>
      <sha1>nb5myp9r64jx8n1wdu1k1itysbtl0g2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Nicolas NALLET</title>
    <ns>3</ns>
    <id>980</id>
    <revision>
      <id>4031</id>
      <timestamp>2012-04-23T04:50:47Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="292">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] 23 avril 2012 à 06:50 (CEST)</text>
      <sha1>71luwylhfkm2h6a5jcuaavv36cwzfh5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4059</id>
      <parentid>4031</parentid>
      <timestamp>2012-04-25T05:56:17Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Extension &quot;wiki sémantique&quot; */ nouvelle section</comment>
      <text xml:space="preserve" bytes="588">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] 23 avril 2012 à 06:50 (CEST)

== Extension &quot;wiki sémantique&quot; ==

Salut,
J'ai vu que tu avais fait pas mal de modif déjà, merci.
Faut-il que je valide au fur et à mesure, ou je le ferais en une seule fois ?

Comment ça fonctionne exactement cette extension ?
Merci.

[[Utilisateur:Lol|Lol]] 25 avril 2012 à 07:56 (CEST)</text>
      <sha1>g0cwn1wfnlrbayiw3wd3px2twv4w5j2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4061</id>
      <parentid>4059</parentid>
      <timestamp>2012-04-25T10:31:20Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>/* Extension &quot;wiki sémantique&quot; */</comment>
      <text xml:space="preserve" bytes="2726">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] 23 avril 2012 à 06:50 (CEST)

== Extension &quot;wiki sémantique&quot; ==

Salut,
J'ai vu que tu avais fait pas mal de modif déjà, merci.
Faut-il que je valide au fur et à mesure, ou je le ferais en une seule fois ?

Comment ça fonctionne exactement cette extension ?
Merci.

[[Utilisateur:Lol|Lol]] 25 avril 2012 à 07:56 (CEST)

Salut,
Oui j'ai sémantisé quelques mots.
Je pense qu'il est inutile que tu valide un à un chacun des articles que je modifie car je ne change pas leur sens.
Cette extension permet d'affecter des propriété aux valeurs présentes dans tous les articles du wiki.
Pour ensuite faire des recherches en fonction des valeurs.
Pour être encore plus utile Semantic MediaWiki (SMW) nécessite [https://www.mediawiki.org/wiki/Extension:Semantic_Forms Semantic Forms], pour sémantiser grace a des formulaires et [https://www.mediawiki.org/wiki/Extension:Semantic_Drilldown Semantic DrillDown] pour faire des recherches multi-critères. Exemple de recherhce mutli-critères sur [http://domotiki.fr/index.php/Sp%C3%A9cial:BrowseData/Logiciel domotiki.fr]

Concernant wiki debian
J'ai créé 4 propriétés
*Commande 
*Matériel
*Niveau de difficulté 
*Paquet 

Ca permettra quand la sémantisation sera plus avancée de faire des recherches en fonction des valeurs des propriété (Je me répète). Par exemple un utilisateur pourra afficher tous les articles qui parlent des 'cartes vidéo' qui est une valeur de la propriété 'Matériel'

Maintenant as tu une idéé des autres propriétés à créer?

Voilà celles auxquelles je pense (avec des exemples de valeur entre parenthèses) :
*Protocole (Wifi, Bluetooth, TCP...)
*Marque(Nvidia, Xerox, Ati, Asus...)
*Composant debian(Noyau...)

Enfin,
Quelles seront les grandes catégories de ton wiki (représentant ce que recherchent les visiteurs et aussi ce qu'ils peuvent rajouter) ?
Voici celles que j'ai trouvées en parcourant ton wiki.
*une Commande
*un paquet
*une documentation
*un Tutoriel
*des trucs et astuces

Les autres catégories pourront être fusionnées ou supprimées en fonction de l'avancement de la sémantisation.
Par exemple les 3 catégories
*Truc et Astuces pour les portables‏‎ (2 membres)
*Trucs et Astuces‏‎ (3 membres)
*Trucs et Astuces divers‏‎ (6 membres)

Pourront être fusionnées en une seule &quot;Trucs et Astuces‏‎&quot; puis l'utilisateur pourra affiner sa recherche par matériel (ordinateur portable).

Dis moi ce que t'en penses.
a+
Nicolas</text>
      <sha1>jruedi1n4xecyefcrysy65czt6pdlb8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4062</id>
      <parentid>4061</parentid>
      <timestamp>2012-04-25T10:31:50Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>/* Extension &quot;wiki sémantique&quot; */</comment>
      <text xml:space="preserve" bytes="2731">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] 23 avril 2012 à 06:50 (CEST)

== Extension &quot;wiki sémantique&quot; ==

Salut,
J'ai vu que tu avais fait pas mal de modif déjà, merci.
Faut-il que je valide au fur et à mesure, ou je le ferais en une seule fois ?

Comment ça fonctionne exactement cette extension ?
Merci.

[[Utilisateur:Lol|Lol]] 25 avril 2012 à 07:56 (CEST)

&lt;hr&gt;
Salut,
Oui j'ai sémantisé quelques mots.
Je pense qu'il est inutile que tu valide un à un chacun des articles que je modifie car je ne change pas leur sens.
Cette extension permet d'affecter des propriété aux valeurs présentes dans tous les articles du wiki.
Pour ensuite faire des recherches en fonction des valeurs.
Pour être encore plus utile Semantic MediaWiki (SMW) nécessite [https://www.mediawiki.org/wiki/Extension:Semantic_Forms Semantic Forms], pour sémantiser grace a des formulaires et [https://www.mediawiki.org/wiki/Extension:Semantic_Drilldown Semantic DrillDown] pour faire des recherches multi-critères. Exemple de recherhce mutli-critères sur [http://domotiki.fr/index.php/Sp%C3%A9cial:BrowseData/Logiciel domotiki.fr]

Concernant wiki debian
J'ai créé 4 propriétés
*Commande 
*Matériel
*Niveau de difficulté 
*Paquet 

Ca permettra quand la sémantisation sera plus avancée de faire des recherches en fonction des valeurs des propriété (Je me répète). Par exemple un utilisateur pourra afficher tous les articles qui parlent des 'cartes vidéo' qui est une valeur de la propriété 'Matériel'

Maintenant as tu une idéé des autres propriétés à créer?

Voilà celles auxquelles je pense (avec des exemples de valeur entre parenthèses) :
*Protocole (Wifi, Bluetooth, TCP...)
*Marque(Nvidia, Xerox, Ati, Asus...)
*Composant debian(Noyau...)

Enfin,
Quelles seront les grandes catégories de ton wiki (représentant ce que recherchent les visiteurs et aussi ce qu'ils peuvent rajouter) ?
Voici celles que j'ai trouvées en parcourant ton wiki.
*une Commande
*un paquet
*une documentation
*un Tutoriel
*des trucs et astuces

Les autres catégories pourront être fusionnées ou supprimées en fonction de l'avancement de la sémantisation.
Par exemple les 3 catégories
*Truc et Astuces pour les portables‏‎ (2 membres)
*Trucs et Astuces‏‎ (3 membres)
*Trucs et Astuces divers‏‎ (6 membres)

Pourront être fusionnées en une seule &quot;Trucs et Astuces‏‎&quot; puis l'utilisateur pourra affiner sa recherche par matériel (ordinateur portable).

Dis moi ce que t'en penses.
a+
Nicolas</text>
      <sha1>51ir8uaens75w0ftkd1ilndj2m7joaj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4063</id>
      <parentid>4062</parentid>
      <timestamp>2012-04-25T10:37:52Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>/* Extension &quot;wiki sémantique&quot; */</comment>
      <text xml:space="preserve" bytes="2743">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] 23 avril 2012 à 06:50 (CEST)

== Extension &quot;wiki sémantique&quot; ==

Salut,
J'ai vu que tu avais fait pas mal de modif déjà, merci.
Faut-il que je valide au fur et à mesure, ou je le ferais en une seule fois ?

Comment ça fonctionne exactement cette extension ?
Merci.

[[Utilisateur:Lol|Lol]] 25 avril 2012 à 07:56 (CEST)

&lt;hr&gt;
Salut,
Oui j'ai sémantisé quelques mots.
Je pense qu'il est inutile que tu valide un à un chacun des articles que je modifie car je ne change pas leur sens.
Cette extension permet d'affecter des propriétés aux valeurs présentes dans tous les articles du wiki.
Pour ensuite faire des recherches en fonction de ces mêmes valeurs.
Pour être encore plus utile Semantic MediaWiki (SMW) nécessite [https://www.mediawiki.org/wiki/Extension:Semantic_Forms Semantic Forms], pour sémantiser grace a des formulaires et [https://www.mediawiki.org/wiki/Extension:Semantic_Drilldown Semantic DrillDown] pour faire des recherches multi-critères. Exemple de recherche mutli-critères sur [http://domotiki.fr/index.php/Sp%C3%A9cial:BrowseData/Logiciel domotiki.fr]

Concernant wiki debian
J'ai créé 4 propriétés
*Commande 
*Matériel
*Niveau de difficulté 
*Paquet 

Ca permettra quand la sémantisation sera plus avancée de faire des recherches en fonction des valeurs des propriété (Je me répète). Par exemple un utilisateur pourra afficher tous les articles qui parlent des 'cartes vidéo' qui est une valeur de la propriété 'Matériel'

Maintenant as tu une idéé des autres propriétés à créer?

Voilà celles auxquelles je pense (avec des exemples de valeurs entre parenthèses) :
*Protocole (Wifi, Bluetooth, TCP...)
*Marque(Nvidia, Xerox, Ati, Asus...)
*Composant debian(Noyau...)

Enfin,
Quelles seront les grandes catégories de ton wiki (représentant ce que recherchent les visiteurs et aussi ce qu'ils peuvent rajouter) ?
Voici celles que j'ai trouvées en parcourant ton wiki.
*une Commande
*un paquet
*une documentation
*un Tutoriel
*des trucs et astuces

Les autres catégories pourront être fusionnées ou supprimées en fonction de l'avancement de la sémantisation.
Par exemple les 3 catégories
*Truc et Astuces pour les portables‏‎ (2 membres)
*Trucs et Astuces‏‎ (3 membres)
*Trucs et Astuces divers‏‎ (6 membres)

Pourront être fusionnées en une seule &quot;Trucs et Astuces‏‎&quot; puis l'utilisateur pourra affiner sa recherche par matériel (ordinateur portable).

Dis moi ce que t'en penses.
a+
Nicolas</text>
      <sha1>lqgfm8oqssta4kf4dqg00xg7d97vwil</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4064</id>
      <parentid>4063</parentid>
      <timestamp>2012-04-25T13:49:30Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Extension &quot;wiki sémantique&quot; */</comment>
      <text xml:space="preserve" bytes="3121">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] 23 avril 2012 à 06:50 (CEST)

== Extension &quot;wiki sémantique&quot; ==

Salut,
J'ai vu que tu avais fait pas mal de modif déjà, merci.
Faut-il que je valide au fur et à mesure, ou je le ferais en une seule fois ?

Comment ça fonctionne exactement cette extension ?
Merci.

[[Utilisateur:Lol|Lol]] 25 avril 2012 à 07:56 (CEST)

&lt;hr&gt;
Salut,
Oui j'ai sémantisé quelques mots.
Je pense qu'il est inutile que tu valide un à un chacun des articles que je modifie car je ne change pas leur sens.
Cette extension permet d'affecter des propriétés aux valeurs présentes dans tous les articles du wiki.
Pour ensuite faire des recherches en fonction de ces mêmes valeurs.
Pour être encore plus utile Semantic MediaWiki (SMW) nécessite [https://www.mediawiki.org/wiki/Extension:Semantic_Forms Semantic Forms], pour sémantiser grace a des formulaires et [https://www.mediawiki.org/wiki/Extension:Semantic_Drilldown Semantic DrillDown] pour faire des recherches multi-critères. Exemple de recherche mutli-critères sur [http://domotiki.fr/index.php/Sp%C3%A9cial:BrowseData/Logiciel domotiki.fr]

Concernant wiki debian
J'ai créé 4 propriétés
*Commande 
*Matériel
*Niveau de difficulté 
*Paquet 

Ca permettra quand la sémantisation sera plus avancée de faire des recherches en fonction des valeurs des propriété (Je me répète). Par exemple un utilisateur pourra afficher tous les articles qui parlent des 'cartes vidéo' qui est une valeur de la propriété 'Matériel'

Maintenant as tu une idéé des autres propriétés à créer?

Voilà celles auxquelles je pense (avec des exemples de valeurs entre parenthèses) :
*Protocole (Wifi, Bluetooth, TCP...)
*Marque(Nvidia, Xerox, Ati, Asus...)
*Composant debian(Noyau...)

Enfin,
Quelles seront les grandes catégories de ton wiki (représentant ce que recherchent les visiteurs et aussi ce qu'ils peuvent rajouter) ?
Voici celles que j'ai trouvées en parcourant ton wiki.
*une Commande
*un paquet
*une documentation
*un Tutoriel
*des trucs et astuces

Les autres catégories pourront être fusionnées ou supprimées en fonction de l'avancement de la sémantisation.
Par exemple les 3 catégories
*Truc et Astuces pour les portables‏‎ (2 membres)
*Trucs et Astuces‏‎ (3 membres)
*Trucs et Astuces divers‏‎ (6 membres)

Pourront être fusionnées en une seule &quot;Trucs et Astuces‏‎&quot; puis l'utilisateur pourra affiner sa recherche par matériel (ordinateur portable).

Dis moi ce que t'en penses.
a+
Nicolas

----
Salut,
Écoute, c'est parfait pour moi. Je m'occupe des 2 option manquantes tout de suite.
Merci beaucoup pour le travail, ça ouvre des possibilités très intéressantes, et j'avoue que je ne m'étais pas beaucoup penché dessus (la modération sur forum.debian-fr.org occupe une grande partie de mon temps libre...
[[Utilisateur:Lol|Lol]] 25 avril 2012 à 15:49 (CEST)</text>
      <sha1>obtp6gaiu3z238brvgn830y2xcrq0s3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4124</id>
      <parentid>4064</parentid>
      <timestamp>2012-04-28T12:38:22Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Extension &quot;wiki sémantique&quot; */</comment>
      <text xml:space="preserve" bytes="3523">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] 23 avril 2012 à 06:50 (CEST)

== Extension &quot;wiki sémantique&quot; ==

Salut,
J'ai vu que tu avais fait pas mal de modif déjà, merci.
Faut-il que je valide au fur et à mesure, ou je le ferais en une seule fois ?

Comment ça fonctionne exactement cette extension ?
Merci.

[[Utilisateur:Lol|Lol]] 25 avril 2012 à 07:56 (CEST)

&lt;hr&gt;
Salut,
Oui j'ai sémantisé quelques mots.
Je pense qu'il est inutile que tu valide un à un chacun des articles que je modifie car je ne change pas leur sens.
Cette extension permet d'affecter des propriétés aux valeurs présentes dans tous les articles du wiki.
Pour ensuite faire des recherches en fonction de ces mêmes valeurs.
Pour être encore plus utile Semantic MediaWiki (SMW) nécessite [https://www.mediawiki.org/wiki/Extension:Semantic_Forms Semantic Forms], pour sémantiser grace a des formulaires et [https://www.mediawiki.org/wiki/Extension:Semantic_Drilldown Semantic DrillDown] pour faire des recherches multi-critères. Exemple de recherche mutli-critères sur [http://domotiki.fr/index.php/Sp%C3%A9cial:BrowseData/Logiciel domotiki.fr]

Concernant wiki debian
J'ai créé 4 propriétés
*Commande 
*Matériel
*Niveau de difficulté 
*Paquet 

Ca permettra quand la sémantisation sera plus avancée de faire des recherches en fonction des valeurs des propriété (Je me répète). Par exemple un utilisateur pourra afficher tous les articles qui parlent des 'cartes vidéo' qui est une valeur de la propriété 'Matériel'

Maintenant as tu une idéé des autres propriétés à créer?

Voilà celles auxquelles je pense (avec des exemples de valeurs entre parenthèses) :
*Protocole (Wifi, Bluetooth, TCP...)
*Marque(Nvidia, Xerox, Ati, Asus...)
*Composant debian(Noyau...)

Enfin,
Quelles seront les grandes catégories de ton wiki (représentant ce que recherchent les visiteurs et aussi ce qu'ils peuvent rajouter) ?
Voici celles que j'ai trouvées en parcourant ton wiki.
*une Commande
*un paquet
*une documentation
*un Tutoriel
*des trucs et astuces

Les autres catégories pourront être fusionnées ou supprimées en fonction de l'avancement de la sémantisation.
Par exemple les 3 catégories
*Truc et Astuces pour les portables‏‎ (2 membres)
*Trucs et Astuces‏‎ (3 membres)
*Trucs et Astuces divers‏‎ (6 membres)

Pourront être fusionnées en une seule &quot;Trucs et Astuces‏‎&quot; puis l'utilisateur pourra affiner sa recherche par matériel (ordinateur portable).

Dis moi ce que t'en penses.
a+
Nicolas

----
Salut,
Écoute, c'est parfait pour moi. Je m'occupe des 2 option manquantes tout de suite.
Merci beaucoup pour le travail, ça ouvre des possibilités très intéressantes, et j'avoue que je ne m'étais pas beaucoup penché dessus (la modération sur forum.debian-fr.org occupe une grande partie de mon temps libre...
[[Utilisateur:Lol|Lol]] 25 avril 2012 à 15:49 (CEST)
----
Salut,
Pour ce qui est de la validation, il faut que je le fasse. Notre Wiki possède l'extension [http://www.mediawiki.org/wiki/Extension:FlaggedRevs Flagged Revisions]. Les modification non confirmées ne sont pas prises en compte sur la page principale des sujets. Ça ne pose pas de problème.

Encore merci pour le travail, c'est super!

[[Utilisateur:Lol|Lol]] 28 avril 2012 à 14:38 (CEST)</text>
      <sha1>m6yd48vpgpqscscxy1z2c1vvsxdcf8f</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4136</id>
      <parentid>4124</parentid>
      <timestamp>2012-05-01T08:16:25Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>/* Propriétés créées ok */ nouvelle section</comment>
      <text xml:space="preserve" bytes="4127">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] 23 avril 2012 à 06:50 (CEST)

== Extension &quot;wiki sémantique&quot; ==

Salut,
J'ai vu que tu avais fait pas mal de modif déjà, merci.
Faut-il que je valide au fur et à mesure, ou je le ferais en une seule fois ?

Comment ça fonctionne exactement cette extension ?
Merci.

[[Utilisateur:Lol|Lol]] 25 avril 2012 à 07:56 (CEST)

&lt;hr&gt;
Salut,
Oui j'ai sémantisé quelques mots.
Je pense qu'il est inutile que tu valide un à un chacun des articles que je modifie car je ne change pas leur sens.
Cette extension permet d'affecter des propriétés aux valeurs présentes dans tous les articles du wiki.
Pour ensuite faire des recherches en fonction de ces mêmes valeurs.
Pour être encore plus utile Semantic MediaWiki (SMW) nécessite [https://www.mediawiki.org/wiki/Extension:Semantic_Forms Semantic Forms], pour sémantiser grace a des formulaires et [https://www.mediawiki.org/wiki/Extension:Semantic_Drilldown Semantic DrillDown] pour faire des recherches multi-critères. Exemple de recherche mutli-critères sur [http://domotiki.fr/index.php/Sp%C3%A9cial:BrowseData/Logiciel domotiki.fr]

Concernant wiki debian
J'ai créé 4 propriétés
*Commande 
*Matériel
*Niveau de difficulté 
*Paquet 

Ca permettra quand la sémantisation sera plus avancée de faire des recherches en fonction des valeurs des propriété (Je me répète). Par exemple un utilisateur pourra afficher tous les articles qui parlent des 'cartes vidéo' qui est une valeur de la propriété 'Matériel'

Maintenant as tu une idéé des autres propriétés à créer?

Voilà celles auxquelles je pense (avec des exemples de valeurs entre parenthèses) :
*Protocole (Wifi, Bluetooth, TCP...)
*Marque(Nvidia, Xerox, Ati, Asus...)
*Composant debian(Noyau...)

Enfin,
Quelles seront les grandes catégories de ton wiki (représentant ce que recherchent les visiteurs et aussi ce qu'ils peuvent rajouter) ?
Voici celles que j'ai trouvées en parcourant ton wiki.
*une Commande
*un paquet
*une documentation
*un Tutoriel
*des trucs et astuces

Les autres catégories pourront être fusionnées ou supprimées en fonction de l'avancement de la sémantisation.
Par exemple les 3 catégories
*Truc et Astuces pour les portables‏‎ (2 membres)
*Trucs et Astuces‏‎ (3 membres)
*Trucs et Astuces divers‏‎ (6 membres)

Pourront être fusionnées en une seule &quot;Trucs et Astuces‏‎&quot; puis l'utilisateur pourra affiner sa recherche par matériel (ordinateur portable).

Dis moi ce que t'en penses.
a+
Nicolas

----
Salut,
Écoute, c'est parfait pour moi. Je m'occupe des 2 option manquantes tout de suite.
Merci beaucoup pour le travail, ça ouvre des possibilités très intéressantes, et j'avoue que je ne m'étais pas beaucoup penché dessus (la modération sur forum.debian-fr.org occupe une grande partie de mon temps libre...
[[Utilisateur:Lol|Lol]] 25 avril 2012 à 15:49 (CEST)
----
Salut,
Pour ce qui est de la validation, il faut que je le fasse. Notre Wiki possède l'extension [http://www.mediawiki.org/wiki/Extension:FlaggedRevs Flagged Revisions]. Les modification non confirmées ne sont pas prises en compte sur la page principale des sujets. Ça ne pose pas de problème.

Encore merci pour le travail, c'est super!

[[Utilisateur:Lol|Lol]] 28 avril 2012 à 14:38 (CEST)

== Propriétés créées ok ==

Salut,
Je pense avoir créé assez de propriétés pour pouvoir ranger un nombre suffisant de mot clés.
Maintenant je vais pouvoir créer les modèles et formulaires sémantiques.

Il faudrait que tu me dises quelles sont les propriétés que devra (ou sera invité à) renseigner les contributeurs. Pour chacune des catégories ( Commande, paquet, documentation, Tutoriel, trucs et astuces)

Par exemple pour un tutoriel on pourrait mettre la distribution concernée (Propriété 'Version debian'), le niveau de difficulté (Propriété ' Niveau de difficulté').


a+</text>
      <sha1>8dqam5w5lo60roqvx80tcphc6yuaj6r</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4148</id>
      <parentid>4136</parentid>
      <timestamp>2012-05-04T14:39:50Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Propriétés créées ok */</comment>
      <text xml:space="preserve" bytes="4617">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] 23 avril 2012 à 06:50 (CEST)

== Extension &quot;wiki sémantique&quot; ==

Salut,
J'ai vu que tu avais fait pas mal de modif déjà, merci.
Faut-il que je valide au fur et à mesure, ou je le ferais en une seule fois ?

Comment ça fonctionne exactement cette extension ?
Merci.

[[Utilisateur:Lol|Lol]] 25 avril 2012 à 07:56 (CEST)

&lt;hr&gt;
Salut,
Oui j'ai sémantisé quelques mots.
Je pense qu'il est inutile que tu valide un à un chacun des articles que je modifie car je ne change pas leur sens.
Cette extension permet d'affecter des propriétés aux valeurs présentes dans tous les articles du wiki.
Pour ensuite faire des recherches en fonction de ces mêmes valeurs.
Pour être encore plus utile Semantic MediaWiki (SMW) nécessite [https://www.mediawiki.org/wiki/Extension:Semantic_Forms Semantic Forms], pour sémantiser grace a des formulaires et [https://www.mediawiki.org/wiki/Extension:Semantic_Drilldown Semantic DrillDown] pour faire des recherches multi-critères. Exemple de recherche mutli-critères sur [http://domotiki.fr/index.php/Sp%C3%A9cial:BrowseData/Logiciel domotiki.fr]

Concernant wiki debian
J'ai créé 4 propriétés
*Commande 
*Matériel
*Niveau de difficulté 
*Paquet 

Ca permettra quand la sémantisation sera plus avancée de faire des recherches en fonction des valeurs des propriété (Je me répète). Par exemple un utilisateur pourra afficher tous les articles qui parlent des 'cartes vidéo' qui est une valeur de la propriété 'Matériel'

Maintenant as tu une idéé des autres propriétés à créer?

Voilà celles auxquelles je pense (avec des exemples de valeurs entre parenthèses) :
*Protocole (Wifi, Bluetooth, TCP...)
*Marque(Nvidia, Xerox, Ati, Asus...)
*Composant debian(Noyau...)

Enfin,
Quelles seront les grandes catégories de ton wiki (représentant ce que recherchent les visiteurs et aussi ce qu'ils peuvent rajouter) ?
Voici celles que j'ai trouvées en parcourant ton wiki.
*une Commande
*un paquet
*une documentation
*un Tutoriel
*des trucs et astuces

Les autres catégories pourront être fusionnées ou supprimées en fonction de l'avancement de la sémantisation.
Par exemple les 3 catégories
*Truc et Astuces pour les portables‏‎ (2 membres)
*Trucs et Astuces‏‎ (3 membres)
*Trucs et Astuces divers‏‎ (6 membres)

Pourront être fusionnées en une seule &quot;Trucs et Astuces‏‎&quot; puis l'utilisateur pourra affiner sa recherche par matériel (ordinateur portable).

Dis moi ce que t'en penses.
a+
Nicolas

----
Salut,
Écoute, c'est parfait pour moi. Je m'occupe des 2 option manquantes tout de suite.
Merci beaucoup pour le travail, ça ouvre des possibilités très intéressantes, et j'avoue que je ne m'étais pas beaucoup penché dessus (la modération sur forum.debian-fr.org occupe une grande partie de mon temps libre...
[[Utilisateur:Lol|Lol]] 25 avril 2012 à 15:49 (CEST)
----
Salut,
Pour ce qui est de la validation, il faut que je le fasse. Notre Wiki possède l'extension [http://www.mediawiki.org/wiki/Extension:FlaggedRevs Flagged Revisions]. Les modification non confirmées ne sont pas prises en compte sur la page principale des sujets. Ça ne pose pas de problème.

Encore merci pour le travail, c'est super!

[[Utilisateur:Lol|Lol]] 28 avril 2012 à 14:38 (CEST)

== Propriétés créées ok ==

Salut,
Je pense avoir créé assez de propriétés pour pouvoir ranger un nombre suffisant de mot clés.
Maintenant je vais pouvoir créer les modèles et formulaires sémantiques.

Il faudrait que tu me dises quelles sont les propriétés que devra (ou sera invité à) renseigner les contributeurs. Pour chacune des catégories ( Commande, paquet, documentation, Tutoriel, trucs et astuces)

Par exemple pour un tutoriel on pourrait mettre la distribution concernée (Propriété 'Version debian'), le niveau de difficulté (Propriété ' Niveau de difficulté').


a+

----
Salut,
Pas évident de me mettre à leur place.
Je suppose qu'on cherche des Tutos, Trucs et de la doc.
Au sujet de programmes ou matériels
Pour un serveur, une machine de bureau, un portable
Le niveau de difficulté n'entre pas à mon avis dans le choix de recherche, c'est après avoir eu les résultats que ça devait s'afficher.

Mais ce n'est qu'un avis... Il faut que j'ouvre un fil sur le forum pour avoir plus d'avis. Merci
[[Utilisateur:Lol|Lol]] 4 mai 2012 à 16:39 (CEST)</text>
      <sha1>ocvhqhx33vj0fiscezc7are2kv9cq3y</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4182</id>
      <parentid>4148</parentid>
      <timestamp>2012-05-05T14:51:39Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>/* Premier modèle et formulaire créé */ nouvelle section</comment>
      <text xml:space="preserve" bytes="5349">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] 23 avril 2012 à 06:50 (CEST)

== Extension &quot;wiki sémantique&quot; ==

Salut,
J'ai vu que tu avais fait pas mal de modif déjà, merci.
Faut-il que je valide au fur et à mesure, ou je le ferais en une seule fois ?

Comment ça fonctionne exactement cette extension ?
Merci.

[[Utilisateur:Lol|Lol]] 25 avril 2012 à 07:56 (CEST)

&lt;hr&gt;
Salut,
Oui j'ai sémantisé quelques mots.
Je pense qu'il est inutile que tu valide un à un chacun des articles que je modifie car je ne change pas leur sens.
Cette extension permet d'affecter des propriétés aux valeurs présentes dans tous les articles du wiki.
Pour ensuite faire des recherches en fonction de ces mêmes valeurs.
Pour être encore plus utile Semantic MediaWiki (SMW) nécessite [https://www.mediawiki.org/wiki/Extension:Semantic_Forms Semantic Forms], pour sémantiser grace a des formulaires et [https://www.mediawiki.org/wiki/Extension:Semantic_Drilldown Semantic DrillDown] pour faire des recherches multi-critères. Exemple de recherche mutli-critères sur [http://domotiki.fr/index.php/Sp%C3%A9cial:BrowseData/Logiciel domotiki.fr]

Concernant wiki debian
J'ai créé 4 propriétés
*Commande 
*Matériel
*Niveau de difficulté 
*Paquet 

Ca permettra quand la sémantisation sera plus avancée de faire des recherches en fonction des valeurs des propriété (Je me répète). Par exemple un utilisateur pourra afficher tous les articles qui parlent des 'cartes vidéo' qui est une valeur de la propriété 'Matériel'

Maintenant as tu une idéé des autres propriétés à créer?

Voilà celles auxquelles je pense (avec des exemples de valeurs entre parenthèses) :
*Protocole (Wifi, Bluetooth, TCP...)
*Marque(Nvidia, Xerox, Ati, Asus...)
*Composant debian(Noyau...)

Enfin,
Quelles seront les grandes catégories de ton wiki (représentant ce que recherchent les visiteurs et aussi ce qu'ils peuvent rajouter) ?
Voici celles que j'ai trouvées en parcourant ton wiki.
*une Commande
*un paquet
*une documentation
*un Tutoriel
*des trucs et astuces

Les autres catégories pourront être fusionnées ou supprimées en fonction de l'avancement de la sémantisation.
Par exemple les 3 catégories
*Truc et Astuces pour les portables‏‎ (2 membres)
*Trucs et Astuces‏‎ (3 membres)
*Trucs et Astuces divers‏‎ (6 membres)

Pourront être fusionnées en une seule &quot;Trucs et Astuces‏‎&quot; puis l'utilisateur pourra affiner sa recherche par matériel (ordinateur portable).

Dis moi ce que t'en penses.
a+
Nicolas

----
Salut,
Écoute, c'est parfait pour moi. Je m'occupe des 2 option manquantes tout de suite.
Merci beaucoup pour le travail, ça ouvre des possibilités très intéressantes, et j'avoue que je ne m'étais pas beaucoup penché dessus (la modération sur forum.debian-fr.org occupe une grande partie de mon temps libre...
[[Utilisateur:Lol|Lol]] 25 avril 2012 à 15:49 (CEST)
----
Salut,
Pour ce qui est de la validation, il faut que je le fasse. Notre Wiki possède l'extension [http://www.mediawiki.org/wiki/Extension:FlaggedRevs Flagged Revisions]. Les modification non confirmées ne sont pas prises en compte sur la page principale des sujets. Ça ne pose pas de problème.

Encore merci pour le travail, c'est super!

[[Utilisateur:Lol|Lol]] 28 avril 2012 à 14:38 (CEST)

== Propriétés créées ok ==

Salut,
Je pense avoir créé assez de propriétés pour pouvoir ranger un nombre suffisant de mot clés.
Maintenant je vais pouvoir créer les modèles et formulaires sémantiques.

Il faudrait que tu me dises quelles sont les propriétés que devra (ou sera invité à) renseigner les contributeurs. Pour chacune des catégories ( Commande, paquet, documentation, Tutoriel, trucs et astuces)

Par exemple pour un tutoriel on pourrait mettre la distribution concernée (Propriété 'Version debian'), le niveau de difficulté (Propriété ' Niveau de difficulté').


a+

----
Salut,
Pas évident de me mettre à leur place.
Je suppose qu'on cherche des Tutos, Trucs et de la doc.
Au sujet de programmes ou matériels
Pour un serveur, une machine de bureau, un portable
Le niveau de difficulté n'entre pas à mon avis dans le choix de recherche, c'est après avoir eu les résultats que ça devait s'afficher.

Mais ce n'est qu'un avis... Il faut que j'ouvre un fil sur le forum pour avoir plus d'avis. Merci
[[Utilisateur:Lol|Lol]] 4 mai 2012 à 16:39 (CEST)

== Premier modèle et formulaire créé ==

Salut j'ai créé le Premier modèle et formulaire pour les trucs et astuce.
Pour y accéder il faut être dans une page appartenant à la [[:Catégorie:Trucs et Astuces]] et cliquez sur l'onglet 'Modeifier avec formulaire en haut'.
Pour créer une nouvelle page 'Trucs et Astuces' il faut aller sur la page [[Formulaire:Trucs_et_Astuces]] et entrer le nom de la nouvelle page 'trucs et astuces'.

Je te conseille de mettre une phrase du style :
'Pour rajouter une page 'Trucs et astuces' cliquer [[Formulaire:Trucs_et_Astuces|ici]]' sur la page d'accueil avec que les contributeurs prennent l'habitude de renseigner leur page.

Dis moi si je dois supprimer des champs du formulaire.
a+</text>
      <sha1>1uye062ab9vso4bbyh7l8qv9lx4iv5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4183</id>
      <parentid>4182</parentid>
      <timestamp>2012-05-05T14:52:04Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>/* Premier modèle et formulaire créé */</comment>
      <text xml:space="preserve" bytes="5349">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] 23 avril 2012 à 06:50 (CEST)

== Extension &quot;wiki sémantique&quot; ==

Salut,
J'ai vu que tu avais fait pas mal de modif déjà, merci.
Faut-il que je valide au fur et à mesure, ou je le ferais en une seule fois ?

Comment ça fonctionne exactement cette extension ?
Merci.

[[Utilisateur:Lol|Lol]] 25 avril 2012 à 07:56 (CEST)

&lt;hr&gt;
Salut,
Oui j'ai sémantisé quelques mots.
Je pense qu'il est inutile que tu valide un à un chacun des articles que je modifie car je ne change pas leur sens.
Cette extension permet d'affecter des propriétés aux valeurs présentes dans tous les articles du wiki.
Pour ensuite faire des recherches en fonction de ces mêmes valeurs.
Pour être encore plus utile Semantic MediaWiki (SMW) nécessite [https://www.mediawiki.org/wiki/Extension:Semantic_Forms Semantic Forms], pour sémantiser grace a des formulaires et [https://www.mediawiki.org/wiki/Extension:Semantic_Drilldown Semantic DrillDown] pour faire des recherches multi-critères. Exemple de recherche mutli-critères sur [http://domotiki.fr/index.php/Sp%C3%A9cial:BrowseData/Logiciel domotiki.fr]

Concernant wiki debian
J'ai créé 4 propriétés
*Commande 
*Matériel
*Niveau de difficulté 
*Paquet 

Ca permettra quand la sémantisation sera plus avancée de faire des recherches en fonction des valeurs des propriété (Je me répète). Par exemple un utilisateur pourra afficher tous les articles qui parlent des 'cartes vidéo' qui est une valeur de la propriété 'Matériel'

Maintenant as tu une idéé des autres propriétés à créer?

Voilà celles auxquelles je pense (avec des exemples de valeurs entre parenthèses) :
*Protocole (Wifi, Bluetooth, TCP...)
*Marque(Nvidia, Xerox, Ati, Asus...)
*Composant debian(Noyau...)

Enfin,
Quelles seront les grandes catégories de ton wiki (représentant ce que recherchent les visiteurs et aussi ce qu'ils peuvent rajouter) ?
Voici celles que j'ai trouvées en parcourant ton wiki.
*une Commande
*un paquet
*une documentation
*un Tutoriel
*des trucs et astuces

Les autres catégories pourront être fusionnées ou supprimées en fonction de l'avancement de la sémantisation.
Par exemple les 3 catégories
*Truc et Astuces pour les portables‏‎ (2 membres)
*Trucs et Astuces‏‎ (3 membres)
*Trucs et Astuces divers‏‎ (6 membres)

Pourront être fusionnées en une seule &quot;Trucs et Astuces‏‎&quot; puis l'utilisateur pourra affiner sa recherche par matériel (ordinateur portable).

Dis moi ce que t'en penses.
a+
Nicolas

----
Salut,
Écoute, c'est parfait pour moi. Je m'occupe des 2 option manquantes tout de suite.
Merci beaucoup pour le travail, ça ouvre des possibilités très intéressantes, et j'avoue que je ne m'étais pas beaucoup penché dessus (la modération sur forum.debian-fr.org occupe une grande partie de mon temps libre...
[[Utilisateur:Lol|Lol]] 25 avril 2012 à 15:49 (CEST)
----
Salut,
Pour ce qui est de la validation, il faut que je le fasse. Notre Wiki possède l'extension [http://www.mediawiki.org/wiki/Extension:FlaggedRevs Flagged Revisions]. Les modification non confirmées ne sont pas prises en compte sur la page principale des sujets. Ça ne pose pas de problème.

Encore merci pour le travail, c'est super!

[[Utilisateur:Lol|Lol]] 28 avril 2012 à 14:38 (CEST)

== Propriétés créées ok ==

Salut,
Je pense avoir créé assez de propriétés pour pouvoir ranger un nombre suffisant de mot clés.
Maintenant je vais pouvoir créer les modèles et formulaires sémantiques.

Il faudrait que tu me dises quelles sont les propriétés que devra (ou sera invité à) renseigner les contributeurs. Pour chacune des catégories ( Commande, paquet, documentation, Tutoriel, trucs et astuces)

Par exemple pour un tutoriel on pourrait mettre la distribution concernée (Propriété 'Version debian'), le niveau de difficulté (Propriété ' Niveau de difficulté').


a+

----
Salut,
Pas évident de me mettre à leur place.
Je suppose qu'on cherche des Tutos, Trucs et de la doc.
Au sujet de programmes ou matériels
Pour un serveur, une machine de bureau, un portable
Le niveau de difficulté n'entre pas à mon avis dans le choix de recherche, c'est après avoir eu les résultats que ça devait s'afficher.

Mais ce n'est qu'un avis... Il faut que j'ouvre un fil sur le forum pour avoir plus d'avis. Merci
[[Utilisateur:Lol|Lol]] 4 mai 2012 à 16:39 (CEST)

== Premier modèle et formulaire créé ==

Salut j'ai créé le Premier modèle et formulaire pour les trucs et astuce.
Pour y accéder il faut être dans une page appartenant à la [[:Catégorie:Trucs et Astuces]] et cliquez sur l'onglet 'Modifier avec formulaire en haut'.

Pour créer une nouvelle page 'Trucs et Astuces' il faut aller sur la page [[Formulaire:Trucs_et_Astuces]] et entrer le nom de la nouvelle page 'trucs et astuces'.

Je te conseille de mettre une phrase du style :
'Pour rajouter une page 'Trucs et astuces' cliquer [[Formulaire:Trucs_et_Astuces|ici]]' sur la page d'accueil avec que les contributeurs prennent l'habitude de renseigner leur page.

Dis moi si je dois supprimer des champs du formulaire.
a+</text>
      <sha1>n2517rwbwhx6lggndyn25jmrhvx9des</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4184</id>
      <parentid>4183</parentid>
      <timestamp>2012-05-05T14:52:29Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>/* Premier modèle et formulaire créé */</comment>
      <text xml:space="preserve" bytes="5349">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] 23 avril 2012 à 06:50 (CEST)

== Extension &quot;wiki sémantique&quot; ==

Salut,
J'ai vu que tu avais fait pas mal de modif déjà, merci.
Faut-il que je valide au fur et à mesure, ou je le ferais en une seule fois ?

Comment ça fonctionne exactement cette extension ?
Merci.

[[Utilisateur:Lol|Lol]] 25 avril 2012 à 07:56 (CEST)

&lt;hr&gt;
Salut,
Oui j'ai sémantisé quelques mots.
Je pense qu'il est inutile que tu valide un à un chacun des articles que je modifie car je ne change pas leur sens.
Cette extension permet d'affecter des propriétés aux valeurs présentes dans tous les articles du wiki.
Pour ensuite faire des recherches en fonction de ces mêmes valeurs.
Pour être encore plus utile Semantic MediaWiki (SMW) nécessite [https://www.mediawiki.org/wiki/Extension:Semantic_Forms Semantic Forms], pour sémantiser grace a des formulaires et [https://www.mediawiki.org/wiki/Extension:Semantic_Drilldown Semantic DrillDown] pour faire des recherches multi-critères. Exemple de recherche mutli-critères sur [http://domotiki.fr/index.php/Sp%C3%A9cial:BrowseData/Logiciel domotiki.fr]

Concernant wiki debian
J'ai créé 4 propriétés
*Commande 
*Matériel
*Niveau de difficulté 
*Paquet 

Ca permettra quand la sémantisation sera plus avancée de faire des recherches en fonction des valeurs des propriété (Je me répète). Par exemple un utilisateur pourra afficher tous les articles qui parlent des 'cartes vidéo' qui est une valeur de la propriété 'Matériel'

Maintenant as tu une idéé des autres propriétés à créer?

Voilà celles auxquelles je pense (avec des exemples de valeurs entre parenthèses) :
*Protocole (Wifi, Bluetooth, TCP...)
*Marque(Nvidia, Xerox, Ati, Asus...)
*Composant debian(Noyau...)

Enfin,
Quelles seront les grandes catégories de ton wiki (représentant ce que recherchent les visiteurs et aussi ce qu'ils peuvent rajouter) ?
Voici celles que j'ai trouvées en parcourant ton wiki.
*une Commande
*un paquet
*une documentation
*un Tutoriel
*des trucs et astuces

Les autres catégories pourront être fusionnées ou supprimées en fonction de l'avancement de la sémantisation.
Par exemple les 3 catégories
*Truc et Astuces pour les portables‏‎ (2 membres)
*Trucs et Astuces‏‎ (3 membres)
*Trucs et Astuces divers‏‎ (6 membres)

Pourront être fusionnées en une seule &quot;Trucs et Astuces‏‎&quot; puis l'utilisateur pourra affiner sa recherche par matériel (ordinateur portable).

Dis moi ce que t'en penses.
a+
Nicolas

----
Salut,
Écoute, c'est parfait pour moi. Je m'occupe des 2 option manquantes tout de suite.
Merci beaucoup pour le travail, ça ouvre des possibilités très intéressantes, et j'avoue que je ne m'étais pas beaucoup penché dessus (la modération sur forum.debian-fr.org occupe une grande partie de mon temps libre...
[[Utilisateur:Lol|Lol]] 25 avril 2012 à 15:49 (CEST)
----
Salut,
Pour ce qui est de la validation, il faut que je le fasse. Notre Wiki possède l'extension [http://www.mediawiki.org/wiki/Extension:FlaggedRevs Flagged Revisions]. Les modification non confirmées ne sont pas prises en compte sur la page principale des sujets. Ça ne pose pas de problème.

Encore merci pour le travail, c'est super!

[[Utilisateur:Lol|Lol]] 28 avril 2012 à 14:38 (CEST)

== Propriétés créées ok ==

Salut,
Je pense avoir créé assez de propriétés pour pouvoir ranger un nombre suffisant de mot clés.
Maintenant je vais pouvoir créer les modèles et formulaires sémantiques.

Il faudrait que tu me dises quelles sont les propriétés que devra (ou sera invité à) renseigner les contributeurs. Pour chacune des catégories ( Commande, paquet, documentation, Tutoriel, trucs et astuces)

Par exemple pour un tutoriel on pourrait mettre la distribution concernée (Propriété 'Version debian'), le niveau de difficulté (Propriété ' Niveau de difficulté').


a+

----
Salut,
Pas évident de me mettre à leur place.
Je suppose qu'on cherche des Tutos, Trucs et de la doc.
Au sujet de programmes ou matériels
Pour un serveur, une machine de bureau, un portable
Le niveau de difficulté n'entre pas à mon avis dans le choix de recherche, c'est après avoir eu les résultats que ça devait s'afficher.

Mais ce n'est qu'un avis... Il faut que j'ouvre un fil sur le forum pour avoir plus d'avis. Merci
[[Utilisateur:Lol|Lol]] 4 mai 2012 à 16:39 (CEST)

== Premier modèle et formulaire créé ==

Salut j'ai créé le Premier modèle et formulaire pour les trucs et astuce.
Pour y accéder il faut être dans une page appartenant à la [[:Catégorie:Trucs et Astuces]] et cliquez sur l'onglet 'Modifier avec formulaire en haut'.

Pour créer une nouvelle page 'Trucs et Astuces' il faut aller sur la page [[Formulaire:Trucs_et_Astuces]] et entrer le nom de la nouvelle page 'trucs et astuces'.

Je te conseille de mettre une phrase du style :
'Pour rajouter une page 'Trucs et astuces' cliquer [[Formulaire:Trucs_et_Astuces|ici]]' sur la page d'accueil afin que les contributeurs prennent l'habitude de renseigner leur page.

Dis moi si je dois supprimer des champs du formulaire.
a+</text>
      <sha1>bvovpkwfq1y0ksg08z20dnjtulmb2bl</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4194</id>
      <parentid>4184</parentid>
      <timestamp>2012-05-06T06:03:55Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Premier modèle et formulaire créé */</comment>
      <text xml:space="preserve" bytes="5833">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] 23 avril 2012 à 06:50 (CEST)

== Extension &quot;wiki sémantique&quot; ==

Salut,
J'ai vu que tu avais fait pas mal de modif déjà, merci.
Faut-il que je valide au fur et à mesure, ou je le ferais en une seule fois ?

Comment ça fonctionne exactement cette extension ?
Merci.

[[Utilisateur:Lol|Lol]] 25 avril 2012 à 07:56 (CEST)

&lt;hr&gt;
Salut,
Oui j'ai sémantisé quelques mots.
Je pense qu'il est inutile que tu valide un à un chacun des articles que je modifie car je ne change pas leur sens.
Cette extension permet d'affecter des propriétés aux valeurs présentes dans tous les articles du wiki.
Pour ensuite faire des recherches en fonction de ces mêmes valeurs.
Pour être encore plus utile Semantic MediaWiki (SMW) nécessite [https://www.mediawiki.org/wiki/Extension:Semantic_Forms Semantic Forms], pour sémantiser grace a des formulaires et [https://www.mediawiki.org/wiki/Extension:Semantic_Drilldown Semantic DrillDown] pour faire des recherches multi-critères. Exemple de recherche mutli-critères sur [http://domotiki.fr/index.php/Sp%C3%A9cial:BrowseData/Logiciel domotiki.fr]

Concernant wiki debian
J'ai créé 4 propriétés
*Commande 
*Matériel
*Niveau de difficulté 
*Paquet 

Ca permettra quand la sémantisation sera plus avancée de faire des recherches en fonction des valeurs des propriété (Je me répète). Par exemple un utilisateur pourra afficher tous les articles qui parlent des 'cartes vidéo' qui est une valeur de la propriété 'Matériel'

Maintenant as tu une idéé des autres propriétés à créer?

Voilà celles auxquelles je pense (avec des exemples de valeurs entre parenthèses) :
*Protocole (Wifi, Bluetooth, TCP...)
*Marque(Nvidia, Xerox, Ati, Asus...)
*Composant debian(Noyau...)

Enfin,
Quelles seront les grandes catégories de ton wiki (représentant ce que recherchent les visiteurs et aussi ce qu'ils peuvent rajouter) ?
Voici celles que j'ai trouvées en parcourant ton wiki.
*une Commande
*un paquet
*une documentation
*un Tutoriel
*des trucs et astuces

Les autres catégories pourront être fusionnées ou supprimées en fonction de l'avancement de la sémantisation.
Par exemple les 3 catégories
*Truc et Astuces pour les portables‏‎ (2 membres)
*Trucs et Astuces‏‎ (3 membres)
*Trucs et Astuces divers‏‎ (6 membres)

Pourront être fusionnées en une seule &quot;Trucs et Astuces‏‎&quot; puis l'utilisateur pourra affiner sa recherche par matériel (ordinateur portable).

Dis moi ce que t'en penses.
a+
Nicolas

----
Salut,
Écoute, c'est parfait pour moi. Je m'occupe des 2 option manquantes tout de suite.
Merci beaucoup pour le travail, ça ouvre des possibilités très intéressantes, et j'avoue que je ne m'étais pas beaucoup penché dessus (la modération sur forum.debian-fr.org occupe une grande partie de mon temps libre...
[[Utilisateur:Lol|Lol]] 25 avril 2012 à 15:49 (CEST)
----
Salut,
Pour ce qui est de la validation, il faut que je le fasse. Notre Wiki possède l'extension [http://www.mediawiki.org/wiki/Extension:FlaggedRevs Flagged Revisions]. Les modification non confirmées ne sont pas prises en compte sur la page principale des sujets. Ça ne pose pas de problème.

Encore merci pour le travail, c'est super!

[[Utilisateur:Lol|Lol]] 28 avril 2012 à 14:38 (CEST)

== Propriétés créées ok ==

Salut,
Je pense avoir créé assez de propriétés pour pouvoir ranger un nombre suffisant de mot clés.
Maintenant je vais pouvoir créer les modèles et formulaires sémantiques.

Il faudrait que tu me dises quelles sont les propriétés que devra (ou sera invité à) renseigner les contributeurs. Pour chacune des catégories ( Commande, paquet, documentation, Tutoriel, trucs et astuces)

Par exemple pour un tutoriel on pourrait mettre la distribution concernée (Propriété 'Version debian'), le niveau de difficulté (Propriété ' Niveau de difficulté').


a+

----
Salut,
Pas évident de me mettre à leur place.
Je suppose qu'on cherche des Tutos, Trucs et de la doc.
Au sujet de programmes ou matériels
Pour un serveur, une machine de bureau, un portable
Le niveau de difficulté n'entre pas à mon avis dans le choix de recherche, c'est après avoir eu les résultats que ça devait s'afficher.

Mais ce n'est qu'un avis... Il faut que j'ouvre un fil sur le forum pour avoir plus d'avis. Merci
[[Utilisateur:Lol|Lol]] 4 mai 2012 à 16:39 (CEST)

== Premier modèle et formulaire créé ==

Salut j'ai créé le Premier modèle et formulaire pour les trucs et astuce.
Pour y accéder il faut être dans une page appartenant à la [[:Catégorie:Trucs et Astuces]] et cliquez sur l'onglet 'Modifier avec formulaire en haut'.

Pour créer une nouvelle page 'Trucs et Astuces' il faut aller sur la page [[Formulaire:Trucs_et_Astuces]] et entrer le nom de la nouvelle page 'trucs et astuces'.

Je te conseille de mettre une phrase du style :
'Pour rajouter une page 'Trucs et astuces' cliquer [[Formulaire:Trucs_et_Astuces|ici]]' sur la page d'accueil afin que les contributeurs prennent l'habitude de renseigner leur page.

Dis moi si je dois supprimer des champs du formulaire.
a+

----
Salut, je regarde ça. Merci.

Voici ce a quoi j'ai pensé pour les propirétés:

Actuellement nous avons définis ces Propriétés:
#Commande
#Matériel
#Niveau de difficulté
#Paquet
#Protocole (Wifi, Bluetooth, TCP...)
#Marque(Nvidia, Xerox, Ati, Asus...)
#Composant debian(Noyau...)
#...

J'ai pensé à:
#Type (tuto, truc et astuce, documentation, etc.)
#Système (serveur, machine de bureau, laptop, tous, etc.)
#Branche (stable, testing, instable, experimental, toutes)</text>
      <sha1>k103j5yyoihdbr3za3cnfy0dnz4j23w</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4195</id>
      <parentid>4194</parentid>
      <timestamp>2012-05-06T06:12:27Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Premier modèle et formulaire créé */</comment>
      <text xml:space="preserve" bytes="6057">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] 23 avril 2012 à 06:50 (CEST)

== Extension &quot;wiki sémantique&quot; ==

Salut,
J'ai vu que tu avais fait pas mal de modif déjà, merci.
Faut-il que je valide au fur et à mesure, ou je le ferais en une seule fois ?

Comment ça fonctionne exactement cette extension ?
Merci.

[[Utilisateur:Lol|Lol]] 25 avril 2012 à 07:56 (CEST)

&lt;hr&gt;
Salut,
Oui j'ai sémantisé quelques mots.
Je pense qu'il est inutile que tu valide un à un chacun des articles que je modifie car je ne change pas leur sens.
Cette extension permet d'affecter des propriétés aux valeurs présentes dans tous les articles du wiki.
Pour ensuite faire des recherches en fonction de ces mêmes valeurs.
Pour être encore plus utile Semantic MediaWiki (SMW) nécessite [https://www.mediawiki.org/wiki/Extension:Semantic_Forms Semantic Forms], pour sémantiser grace a des formulaires et [https://www.mediawiki.org/wiki/Extension:Semantic_Drilldown Semantic DrillDown] pour faire des recherches multi-critères. Exemple de recherche mutli-critères sur [http://domotiki.fr/index.php/Sp%C3%A9cial:BrowseData/Logiciel domotiki.fr]

Concernant wiki debian
J'ai créé 4 propriétés
*Commande 
*Matériel
*Niveau de difficulté 
*Paquet 

Ca permettra quand la sémantisation sera plus avancée de faire des recherches en fonction des valeurs des propriété (Je me répète). Par exemple un utilisateur pourra afficher tous les articles qui parlent des 'cartes vidéo' qui est une valeur de la propriété 'Matériel'

Maintenant as tu une idéé des autres propriétés à créer?

Voilà celles auxquelles je pense (avec des exemples de valeurs entre parenthèses) :
*Protocole (Wifi, Bluetooth, TCP...)
*Marque(Nvidia, Xerox, Ati, Asus...)
*Composant debian(Noyau...)

Enfin,
Quelles seront les grandes catégories de ton wiki (représentant ce que recherchent les visiteurs et aussi ce qu'ils peuvent rajouter) ?
Voici celles que j'ai trouvées en parcourant ton wiki.
*une Commande
*un paquet
*une documentation
*un Tutoriel
*des trucs et astuces

Les autres catégories pourront être fusionnées ou supprimées en fonction de l'avancement de la sémantisation.
Par exemple les 3 catégories
*Truc et Astuces pour les portables‏‎ (2 membres)
*Trucs et Astuces‏‎ (3 membres)
*Trucs et Astuces divers‏‎ (6 membres)

Pourront être fusionnées en une seule &quot;Trucs et Astuces‏‎&quot; puis l'utilisateur pourra affiner sa recherche par matériel (ordinateur portable).

Dis moi ce que t'en penses.
a+
Nicolas

----
Salut,
Écoute, c'est parfait pour moi. Je m'occupe des 2 option manquantes tout de suite.
Merci beaucoup pour le travail, ça ouvre des possibilités très intéressantes, et j'avoue que je ne m'étais pas beaucoup penché dessus (la modération sur forum.debian-fr.org occupe une grande partie de mon temps libre...
[[Utilisateur:Lol|Lol]] 25 avril 2012 à 15:49 (CEST)
----
Salut,
Pour ce qui est de la validation, il faut que je le fasse. Notre Wiki possède l'extension [http://www.mediawiki.org/wiki/Extension:FlaggedRevs Flagged Revisions]. Les modification non confirmées ne sont pas prises en compte sur la page principale des sujets. Ça ne pose pas de problème.

Encore merci pour le travail, c'est super!

[[Utilisateur:Lol|Lol]] 28 avril 2012 à 14:38 (CEST)

== Propriétés créées ok ==

Salut,
Je pense avoir créé assez de propriétés pour pouvoir ranger un nombre suffisant de mot clés.
Maintenant je vais pouvoir créer les modèles et formulaires sémantiques.

Il faudrait que tu me dises quelles sont les propriétés que devra (ou sera invité à) renseigner les contributeurs. Pour chacune des catégories ( Commande, paquet, documentation, Tutoriel, trucs et astuces)

Par exemple pour un tutoriel on pourrait mettre la distribution concernée (Propriété 'Version debian'), le niveau de difficulté (Propriété ' Niveau de difficulté').


a+

----
Salut,
Pas évident de me mettre à leur place.
Je suppose qu'on cherche des Tutos, Trucs et de la doc.
Au sujet de programmes ou matériels
Pour un serveur, une machine de bureau, un portable
Le niveau de difficulté n'entre pas à mon avis dans le choix de recherche, c'est après avoir eu les résultats que ça devait s'afficher.

Mais ce n'est qu'un avis... Il faut que j'ouvre un fil sur le forum pour avoir plus d'avis. Merci
[[Utilisateur:Lol|Lol]] 4 mai 2012 à 16:39 (CEST)

== Premier modèle et formulaire créé ==

Salut j'ai créé le Premier modèle et formulaire pour les trucs et astuce.
Pour y accéder il faut être dans une page appartenant à la [[:Catégorie:Trucs et Astuces]] et cliquez sur l'onglet 'Modifier avec formulaire en haut'.

Pour créer une nouvelle page 'Trucs et Astuces' il faut aller sur la page [[Formulaire:Trucs_et_Astuces]] et entrer le nom de la nouvelle page 'trucs et astuces'.

Je te conseille de mettre une phrase du style :
'Pour rajouter une page 'Trucs et astuces' cliquer [[Formulaire:Trucs_et_Astuces|ici]]' sur la page d'accueil afin que les contributeurs prennent l'habitude de renseigner leur page.

Dis moi si je dois supprimer des champs du formulaire.
a+

----
Salut, je regarde ça. Merci.

Voici ce a quoi j'ai pensé pour les propirétés:

Actuellement nous avons définis ces Propriétés:
#Commande
#Matériel
#Niveau de difficulté
#Paquet
#Protocole (Wifi, Bluetooth, TCP...)
#Marque(Nvidia, Xerox, Ati, Asus...)
#Composant debian(Noyau...)
#...

J'ai pensé à:
#Type (tuto, truc et astuce, documentation, etc.)
#Système (serveur, machine de bureau, laptop, tous, etc.)
#Branche (stable, testing, instable, experimental, toutes)
----
Avant d'aller plus loin, laisse moi un peu de temps pour vérifier/corriger/compléter le propriétés. Je te met ça ici ?
[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 6 mai 2012 à 08:12 (CEST)</text>
      <sha1>6xhiwn4lvl3x8lw95u6p0dunc742epx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4216</id>
      <parentid>4195</parentid>
      <timestamp>2012-05-07T07:43:33Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="6433">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] 23 avril 2012 à 06:50 (CEST)

== Extension &quot;wiki sémantique&quot; ==

Salut,
J'ai vu que tu avais fait pas mal de modif déjà, merci.
Faut-il que je valide au fur et à mesure, ou je le ferais en une seule fois ?

Comment ça fonctionne exactement cette extension ?
Merci.

[[Utilisateur:Lol|Lol]] 25 avril 2012 à 07:56 (CEST)

&lt;hr&gt;
Salut,
Oui j'ai sémantisé quelques mots.
Je pense qu'il est inutile que tu valide un à un chacun des articles que je modifie car je ne change pas leur sens.
Cette extension permet d'affecter des propriétés aux valeurs présentes dans tous les articles du wiki.
Pour ensuite faire des recherches en fonction de ces mêmes valeurs.
Pour être encore plus utile Semantic MediaWiki (SMW) nécessite [https://www.mediawiki.org/wiki/Extension:Semantic_Forms Semantic Forms], pour sémantiser grace a des formulaires et [https://www.mediawiki.org/wiki/Extension:Semantic_Drilldown Semantic DrillDown] pour faire des recherches multi-critères. Exemple de recherche mutli-critères sur [http://domotiki.fr/index.php/Sp%C3%A9cial:BrowseData/Logiciel domotiki.fr]

Concernant wiki debian
J'ai créé 4 propriétés
*Commande 
*Matériel
*Niveau de difficulté 
*Paquet 

Ca permettra quand la sémantisation sera plus avancée de faire des recherches en fonction des valeurs des propriété (Je me répète). Par exemple un utilisateur pourra afficher tous les articles qui parlent des 'cartes vidéo' qui est une valeur de la propriété 'Matériel'

Maintenant as tu une idéé des autres propriétés à créer?

Voilà celles auxquelles je pense (avec des exemples de valeurs entre parenthèses) :
*Protocole (Wifi, Bluetooth, TCP...)
*Marque(Nvidia, Xerox, Ati, Asus...)
*Composant debian(Noyau...)

Enfin,
Quelles seront les grandes catégories de ton wiki (représentant ce que recherchent les visiteurs et aussi ce qu'ils peuvent rajouter) ?
Voici celles que j'ai trouvées en parcourant ton wiki.
*une Commande
*un paquet
*une documentation
*un Tutoriel
*des trucs et astuces

Les autres catégories pourront être fusionnées ou supprimées en fonction de l'avancement de la sémantisation.
Par exemple les 3 catégories
*Truc et Astuces pour les portables‏‎ (2 membres)
*Trucs et Astuces‏‎ (3 membres)
*Trucs et Astuces divers‏‎ (6 membres)

Pourront être fusionnées en une seule &quot;Trucs et Astuces‏‎&quot; puis l'utilisateur pourra affiner sa recherche par matériel (ordinateur portable).

Dis moi ce que t'en penses.
a+
Nicolas

----
Salut,
Écoute, c'est parfait pour moi. Je m'occupe des 2 option manquantes tout de suite.
Merci beaucoup pour le travail, ça ouvre des possibilités très intéressantes, et j'avoue que je ne m'étais pas beaucoup penché dessus (la modération sur forum.debian-fr.org occupe une grande partie de mon temps libre...
[[Utilisateur:Lol|Lol]] 25 avril 2012 à 15:49 (CEST)
----
Salut,
Pour ce qui est de la validation, il faut que je le fasse. Notre Wiki possède l'extension [http://www.mediawiki.org/wiki/Extension:FlaggedRevs Flagged Revisions]. Les modification non confirmées ne sont pas prises en compte sur la page principale des sujets. Ça ne pose pas de problème.

Encore merci pour le travail, c'est super!

[[Utilisateur:Lol|Lol]] 28 avril 2012 à 14:38 (CEST)

== Propriétés créées ok ==

Salut,
Je pense avoir créé assez de propriétés pour pouvoir ranger un nombre suffisant de mot clés.
Maintenant je vais pouvoir créer les modèles et formulaires sémantiques.

Il faudrait que tu me dises quelles sont les propriétés que devra (ou sera invité à) renseigner les contributeurs. Pour chacune des catégories ( Commande, paquet, documentation, Tutoriel, trucs et astuces)

Par exemple pour un tutoriel on pourrait mettre la distribution concernée (Propriété 'Version debian'), le niveau de difficulté (Propriété ' Niveau de difficulté').


a+

----
Salut,
Pas évident de me mettre à leur place.
Je suppose qu'on cherche des Tutos, Trucs et de la doc.
Au sujet de programmes ou matériels
Pour un serveur, une machine de bureau, un portable
Le niveau de difficulté n'entre pas à mon avis dans le choix de recherche, c'est après avoir eu les résultats que ça devait s'afficher.

Mais ce n'est qu'un avis... Il faut que j'ouvre un fil sur le forum pour avoir plus d'avis. Merci
[[Utilisateur:Lol|Lol]] 4 mai 2012 à 16:39 (CEST)

== Premier modèle et formulaire créé ==

Salut j'ai créé le Premier modèle et formulaire pour les trucs et astuce.
Pour y accéder il faut être dans une page appartenant à la [[:Catégorie:Trucs et Astuces]] et cliquez sur l'onglet 'Modifier avec formulaire en haut'.

Pour créer une nouvelle page 'Trucs et Astuces' il faut aller sur la page [[Formulaire:Trucs_et_Astuces]] et entrer le nom de la nouvelle page 'trucs et astuces'.

Je te conseille de mettre une phrase du style :
'Pour rajouter une page 'Trucs et astuces' cliquer [[Formulaire:Trucs_et_Astuces|ici]]' sur la page d'accueil afin que les contributeurs prennent l'habitude de renseigner leur page.

Dis moi si je dois supprimer des champs du formulaire.
a+

----
Salut, je regarde ça. Merci.

Voici ce a quoi j'ai pensé pour les propirétés:

Actuellement nous avons définis ces Propriétés:
#Commande
#Matériel
#Niveau de difficulté
#Paquet
#Protocole (Wifi, Bluetooth, TCP...)
#Marque(Nvidia, Xerox, Ati, Asus...)
#Composant debian(Noyau...)
#...

J'ai pensé à:
#Type (tuto, truc et astuce, documentation, etc.)
#Système (serveur, machine de bureau, laptop, tous, etc.)
#Branche (stable, testing, instable, experimental, toutes)
----
Avant d'aller plus loin, laisse moi un peu de temps pour vérifier/corriger/compléter le propriétés. Je te met ça ici ?
[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 6 mai 2012 à 08:12 (CEST)

-------------------------------------
Salut,
ok pour la propriété branche.
pour système c'est la meme que [[Property:Installé sur]] non ?
Pour type en fait ce sont les catégories.
Les catégories représentent ce que vont chercher les utilisateurs (tuto, truc et astuce, documentation, etc) les propriétés c'est ce dont ils vont se servir pour affiner leur recherche.</text>
      <sha1>4sp08k2bibuftt0q7i0u7ap33uvndee</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4236</id>
      <parentid>4216</parentid>
      <timestamp>2012-05-13T20:42:45Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>/* ok dis moi  quand t'as fini de  vérifier/corriger/compléter les propriétés */ nouvelle section</comment>
      <text xml:space="preserve" bytes="6523">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] 23 avril 2012 à 06:50 (CEST)

== Extension &quot;wiki sémantique&quot; ==

Salut,
J'ai vu que tu avais fait pas mal de modif déjà, merci.
Faut-il que je valide au fur et à mesure, ou je le ferais en une seule fois ?

Comment ça fonctionne exactement cette extension ?
Merci.

[[Utilisateur:Lol|Lol]] 25 avril 2012 à 07:56 (CEST)

&lt;hr&gt;
Salut,
Oui j'ai sémantisé quelques mots.
Je pense qu'il est inutile que tu valide un à un chacun des articles que je modifie car je ne change pas leur sens.
Cette extension permet d'affecter des propriétés aux valeurs présentes dans tous les articles du wiki.
Pour ensuite faire des recherches en fonction de ces mêmes valeurs.
Pour être encore plus utile Semantic MediaWiki (SMW) nécessite [https://www.mediawiki.org/wiki/Extension:Semantic_Forms Semantic Forms], pour sémantiser grace a des formulaires et [https://www.mediawiki.org/wiki/Extension:Semantic_Drilldown Semantic DrillDown] pour faire des recherches multi-critères. Exemple de recherche mutli-critères sur [http://domotiki.fr/index.php/Sp%C3%A9cial:BrowseData/Logiciel domotiki.fr]

Concernant wiki debian
J'ai créé 4 propriétés
*Commande 
*Matériel
*Niveau de difficulté 
*Paquet 

Ca permettra quand la sémantisation sera plus avancée de faire des recherches en fonction des valeurs des propriété (Je me répète). Par exemple un utilisateur pourra afficher tous les articles qui parlent des 'cartes vidéo' qui est une valeur de la propriété 'Matériel'

Maintenant as tu une idéé des autres propriétés à créer?

Voilà celles auxquelles je pense (avec des exemples de valeurs entre parenthèses) :
*Protocole (Wifi, Bluetooth, TCP...)
*Marque(Nvidia, Xerox, Ati, Asus...)
*Composant debian(Noyau...)

Enfin,
Quelles seront les grandes catégories de ton wiki (représentant ce que recherchent les visiteurs et aussi ce qu'ils peuvent rajouter) ?
Voici celles que j'ai trouvées en parcourant ton wiki.
*une Commande
*un paquet
*une documentation
*un Tutoriel
*des trucs et astuces

Les autres catégories pourront être fusionnées ou supprimées en fonction de l'avancement de la sémantisation.
Par exemple les 3 catégories
*Truc et Astuces pour les portables‏‎ (2 membres)
*Trucs et Astuces‏‎ (3 membres)
*Trucs et Astuces divers‏‎ (6 membres)

Pourront être fusionnées en une seule &quot;Trucs et Astuces‏‎&quot; puis l'utilisateur pourra affiner sa recherche par matériel (ordinateur portable).

Dis moi ce que t'en penses.
a+
Nicolas

----
Salut,
Écoute, c'est parfait pour moi. Je m'occupe des 2 option manquantes tout de suite.
Merci beaucoup pour le travail, ça ouvre des possibilités très intéressantes, et j'avoue que je ne m'étais pas beaucoup penché dessus (la modération sur forum.debian-fr.org occupe une grande partie de mon temps libre...
[[Utilisateur:Lol|Lol]] 25 avril 2012 à 15:49 (CEST)
----
Salut,
Pour ce qui est de la validation, il faut que je le fasse. Notre Wiki possède l'extension [http://www.mediawiki.org/wiki/Extension:FlaggedRevs Flagged Revisions]. Les modification non confirmées ne sont pas prises en compte sur la page principale des sujets. Ça ne pose pas de problème.

Encore merci pour le travail, c'est super!

[[Utilisateur:Lol|Lol]] 28 avril 2012 à 14:38 (CEST)

== Propriétés créées ok ==

Salut,
Je pense avoir créé assez de propriétés pour pouvoir ranger un nombre suffisant de mot clés.
Maintenant je vais pouvoir créer les modèles et formulaires sémantiques.

Il faudrait que tu me dises quelles sont les propriétés que devra (ou sera invité à) renseigner les contributeurs. Pour chacune des catégories ( Commande, paquet, documentation, Tutoriel, trucs et astuces)

Par exemple pour un tutoriel on pourrait mettre la distribution concernée (Propriété 'Version debian'), le niveau de difficulté (Propriété ' Niveau de difficulté').


a+

----
Salut,
Pas évident de me mettre à leur place.
Je suppose qu'on cherche des Tutos, Trucs et de la doc.
Au sujet de programmes ou matériels
Pour un serveur, une machine de bureau, un portable
Le niveau de difficulté n'entre pas à mon avis dans le choix de recherche, c'est après avoir eu les résultats que ça devait s'afficher.

Mais ce n'est qu'un avis... Il faut que j'ouvre un fil sur le forum pour avoir plus d'avis. Merci
[[Utilisateur:Lol|Lol]] 4 mai 2012 à 16:39 (CEST)

== Premier modèle et formulaire créé ==

Salut j'ai créé le Premier modèle et formulaire pour les trucs et astuce.
Pour y accéder il faut être dans une page appartenant à la [[:Catégorie:Trucs et Astuces]] et cliquez sur l'onglet 'Modifier avec formulaire en haut'.

Pour créer une nouvelle page 'Trucs et Astuces' il faut aller sur la page [[Formulaire:Trucs_et_Astuces]] et entrer le nom de la nouvelle page 'trucs et astuces'.

Je te conseille de mettre une phrase du style :
'Pour rajouter une page 'Trucs et astuces' cliquer [[Formulaire:Trucs_et_Astuces|ici]]' sur la page d'accueil afin que les contributeurs prennent l'habitude de renseigner leur page.

Dis moi si je dois supprimer des champs du formulaire.
a+

----
Salut, je regarde ça. Merci.

Voici ce a quoi j'ai pensé pour les propirétés:

Actuellement nous avons définis ces Propriétés:
#Commande
#Matériel
#Niveau de difficulté
#Paquet
#Protocole (Wifi, Bluetooth, TCP...)
#Marque(Nvidia, Xerox, Ati, Asus...)
#Composant debian(Noyau...)
#...

J'ai pensé à:
#Type (tuto, truc et astuce, documentation, etc.)
#Système (serveur, machine de bureau, laptop, tous, etc.)
#Branche (stable, testing, instable, experimental, toutes)
----
Avant d'aller plus loin, laisse moi un peu de temps pour vérifier/corriger/compléter le propriétés. Je te met ça ici ?
[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 6 mai 2012 à 08:12 (CEST)

-------------------------------------
Salut,
ok pour la propriété branche.
pour système c'est la meme que [[Property:Installé sur]] non ?
Pour type en fait ce sont les catégories.
Les catégories représentent ce que vont chercher les utilisateurs (tuto, truc et astuce, documentation, etc) les propriétés c'est ce dont ils vont se servir pour affiner leur recherche.

== ok dis moi  quand t'as fini de  vérifier/corriger/compléter les propriétés ==

a+</text>
      <sha1>st39xlh0e28iskgtkia775g1mvn3zdj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4238</id>
      <parentid>4236</parentid>
      <timestamp>2012-05-14T12:19:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* ok dis moi  quand t'as fini de  vérifier/corriger/compléter les propriétés */</comment>
      <text xml:space="preserve" bytes="7396">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] 23 avril 2012 à 06:50 (CEST)

== Extension &quot;wiki sémantique&quot; ==

Salut,
J'ai vu que tu avais fait pas mal de modif déjà, merci.
Faut-il que je valide au fur et à mesure, ou je le ferais en une seule fois ?

Comment ça fonctionne exactement cette extension ?
Merci.

[[Utilisateur:Lol|Lol]] 25 avril 2012 à 07:56 (CEST)

&lt;hr&gt;
Salut,
Oui j'ai sémantisé quelques mots.
Je pense qu'il est inutile que tu valide un à un chacun des articles que je modifie car je ne change pas leur sens.
Cette extension permet d'affecter des propriétés aux valeurs présentes dans tous les articles du wiki.
Pour ensuite faire des recherches en fonction de ces mêmes valeurs.
Pour être encore plus utile Semantic MediaWiki (SMW) nécessite [https://www.mediawiki.org/wiki/Extension:Semantic_Forms Semantic Forms], pour sémantiser grace a des formulaires et [https://www.mediawiki.org/wiki/Extension:Semantic_Drilldown Semantic DrillDown] pour faire des recherches multi-critères. Exemple de recherche mutli-critères sur [http://domotiki.fr/index.php/Sp%C3%A9cial:BrowseData/Logiciel domotiki.fr]

Concernant wiki debian
J'ai créé 4 propriétés
*Commande 
*Matériel
*Niveau de difficulté 
*Paquet 

Ca permettra quand la sémantisation sera plus avancée de faire des recherches en fonction des valeurs des propriété (Je me répète). Par exemple un utilisateur pourra afficher tous les articles qui parlent des 'cartes vidéo' qui est une valeur de la propriété 'Matériel'

Maintenant as tu une idéé des autres propriétés à créer?

Voilà celles auxquelles je pense (avec des exemples de valeurs entre parenthèses) :
*Protocole (Wifi, Bluetooth, TCP...)
*Marque(Nvidia, Xerox, Ati, Asus...)
*Composant debian(Noyau...)

Enfin,
Quelles seront les grandes catégories de ton wiki (représentant ce que recherchent les visiteurs et aussi ce qu'ils peuvent rajouter) ?
Voici celles que j'ai trouvées en parcourant ton wiki.
*une Commande
*un paquet
*une documentation
*un Tutoriel
*des trucs et astuces

Les autres catégories pourront être fusionnées ou supprimées en fonction de l'avancement de la sémantisation.
Par exemple les 3 catégories
*Truc et Astuces pour les portables‏‎ (2 membres)
*Trucs et Astuces‏‎ (3 membres)
*Trucs et Astuces divers‏‎ (6 membres)

Pourront être fusionnées en une seule &quot;Trucs et Astuces‏‎&quot; puis l'utilisateur pourra affiner sa recherche par matériel (ordinateur portable).

Dis moi ce que t'en penses.
a+
Nicolas

----
Salut,
Écoute, c'est parfait pour moi. Je m'occupe des 2 option manquantes tout de suite.
Merci beaucoup pour le travail, ça ouvre des possibilités très intéressantes, et j'avoue que je ne m'étais pas beaucoup penché dessus (la modération sur forum.debian-fr.org occupe une grande partie de mon temps libre...
[[Utilisateur:Lol|Lol]] 25 avril 2012 à 15:49 (CEST)
----
Salut,
Pour ce qui est de la validation, il faut que je le fasse. Notre Wiki possède l'extension [http://www.mediawiki.org/wiki/Extension:FlaggedRevs Flagged Revisions]. Les modification non confirmées ne sont pas prises en compte sur la page principale des sujets. Ça ne pose pas de problème.

Encore merci pour le travail, c'est super!

[[Utilisateur:Lol|Lol]] 28 avril 2012 à 14:38 (CEST)

== Propriétés créées ok ==

Salut,
Je pense avoir créé assez de propriétés pour pouvoir ranger un nombre suffisant de mot clés.
Maintenant je vais pouvoir créer les modèles et formulaires sémantiques.

Il faudrait que tu me dises quelles sont les propriétés que devra (ou sera invité à) renseigner les contributeurs. Pour chacune des catégories ( Commande, paquet, documentation, Tutoriel, trucs et astuces)

Par exemple pour un tutoriel on pourrait mettre la distribution concernée (Propriété 'Version debian'), le niveau de difficulté (Propriété ' Niveau de difficulté').


a+

----
Salut,
Pas évident de me mettre à leur place.
Je suppose qu'on cherche des Tutos, Trucs et de la doc.
Au sujet de programmes ou matériels
Pour un serveur, une machine de bureau, un portable
Le niveau de difficulté n'entre pas à mon avis dans le choix de recherche, c'est après avoir eu les résultats que ça devait s'afficher.

Mais ce n'est qu'un avis... Il faut que j'ouvre un fil sur le forum pour avoir plus d'avis. Merci
[[Utilisateur:Lol|Lol]] 4 mai 2012 à 16:39 (CEST)

== Premier modèle et formulaire créé ==

Salut j'ai créé le Premier modèle et formulaire pour les trucs et astuce.
Pour y accéder il faut être dans une page appartenant à la [[:Catégorie:Trucs et Astuces]] et cliquez sur l'onglet 'Modifier avec formulaire en haut'.

Pour créer une nouvelle page 'Trucs et Astuces' il faut aller sur la page [[Formulaire:Trucs_et_Astuces]] et entrer le nom de la nouvelle page 'trucs et astuces'.

Je te conseille de mettre une phrase du style :
'Pour rajouter une page 'Trucs et astuces' cliquer [[Formulaire:Trucs_et_Astuces|ici]]' sur la page d'accueil afin que les contributeurs prennent l'habitude de renseigner leur page.

Dis moi si je dois supprimer des champs du formulaire.
a+

----
Salut, je regarde ça. Merci.

Voici ce a quoi j'ai pensé pour les propirétés:

Actuellement nous avons définis ces Propriétés:
#Commande
#Matériel
#Niveau de difficulté
#Paquet
#Protocole (Wifi, Bluetooth, TCP...)
#Marque(Nvidia, Xerox, Ati, Asus...)
#Composant debian(Noyau...)
#...

J'ai pensé à:
#Type (tuto, truc et astuce, documentation, etc.)
#Système (serveur, machine de bureau, laptop, tous, etc.)
#Branche (stable, testing, instable, experimental, toutes)
----
Avant d'aller plus loin, laisse moi un peu de temps pour vérifier/corriger/compléter le propriétés. Je te met ça ici ?
[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 6 mai 2012 à 08:12 (CEST)

-------------------------------------
Salut,
ok pour la propriété branche.
pour système c'est la meme que [[Property:Installé sur]] non ?
Pour type en fait ce sont les catégories.
Les catégories représentent ce que vont chercher les utilisateurs (tuto, truc et astuce, documentation, etc) les propriétés c'est ce dont ils vont se servir pour affiner leur recherche.

== ok dis moi  quand t'as fini de  vérifier/corriger/compléter les propriétés ==

a+

----
Me v'la... Désolé, j'ai 50000 trucs sur le feu.

Domaine:
#Matériels et drivers;
#Logiciels;
#Internet;
#Programmation;
#Sécurité;
#Multimédia;
#Réseau.

Action:
#Installation;
#Configuration;
#Sauvegarde;
#Nettoyage;
#Création;
#Gestion;
#Suppression.

Versions:
#Unstable;
#Testing;
#Stable;
#wheezy;
#Squeeze;
#Lenny;
#Etch;
#Sarge;
#Woody;
#Potato;
#Slim;
#Hamm.

Les propriétés:
#Commande;
#Matériel;
#Niveau de difficulté;
#Paquet;
#Protocole (Wifi, Bluetooth, TCP...);
#Marque (Nvidia, Xerox, Ati, Asus...);
#Composant debian (Noyau, paquet...);
#Branche (stable, testing, instable, experimental, toutes).

J'avais ouvert un sujet sur le forum, mais ça n'a pas fait bouger les foules... :-(

J'espère ne pas t'avoir fait perdre trop de temps.
Merci

[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 14 mai 2012 à 14:19 (CEST)</text>
      <sha1>7hox1taaw0s852bwnaggq9sv119ttgw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4247</id>
      <parentid>4238</parentid>
      <timestamp>2012-05-15T10:53:09Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>/* ok dis moi  quand t'as fini de  vérifier/corriger/compléter les propriétés */</comment>
      <text xml:space="preserve" bytes="7819">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] 23 avril 2012 à 06:50 (CEST)

== Extension &quot;wiki sémantique&quot; ==

Salut,
J'ai vu que tu avais fait pas mal de modif déjà, merci.
Faut-il que je valide au fur et à mesure, ou je le ferais en une seule fois ?

Comment ça fonctionne exactement cette extension ?
Merci.

[[Utilisateur:Lol|Lol]] 25 avril 2012 à 07:56 (CEST)

&lt;hr&gt;
Salut,
Oui j'ai sémantisé quelques mots.
Je pense qu'il est inutile que tu valide un à un chacun des articles que je modifie car je ne change pas leur sens.
Cette extension permet d'affecter des propriétés aux valeurs présentes dans tous les articles du wiki.
Pour ensuite faire des recherches en fonction de ces mêmes valeurs.
Pour être encore plus utile Semantic MediaWiki (SMW) nécessite [https://www.mediawiki.org/wiki/Extension:Semantic_Forms Semantic Forms], pour sémantiser grace a des formulaires et [https://www.mediawiki.org/wiki/Extension:Semantic_Drilldown Semantic DrillDown] pour faire des recherches multi-critères. Exemple de recherche mutli-critères sur [http://domotiki.fr/index.php/Sp%C3%A9cial:BrowseData/Logiciel domotiki.fr]

Concernant wiki debian
J'ai créé 4 propriétés
*Commande 
*Matériel
*Niveau de difficulté 
*Paquet 

Ca permettra quand la sémantisation sera plus avancée de faire des recherches en fonction des valeurs des propriété (Je me répète). Par exemple un utilisateur pourra afficher tous les articles qui parlent des 'cartes vidéo' qui est une valeur de la propriété 'Matériel'

Maintenant as tu une idéé des autres propriétés à créer?

Voilà celles auxquelles je pense (avec des exemples de valeurs entre parenthèses) :
*Protocole (Wifi, Bluetooth, TCP...)
*Marque(Nvidia, Xerox, Ati, Asus...)
*Composant debian(Noyau...)

Enfin,
Quelles seront les grandes catégories de ton wiki (représentant ce que recherchent les visiteurs et aussi ce qu'ils peuvent rajouter) ?
Voici celles que j'ai trouvées en parcourant ton wiki.
*une Commande
*un paquet
*une documentation
*un Tutoriel
*des trucs et astuces

Les autres catégories pourront être fusionnées ou supprimées en fonction de l'avancement de la sémantisation.
Par exemple les 3 catégories
*Truc et Astuces pour les portables‏‎ (2 membres)
*Trucs et Astuces‏‎ (3 membres)
*Trucs et Astuces divers‏‎ (6 membres)

Pourront être fusionnées en une seule &quot;Trucs et Astuces‏‎&quot; puis l'utilisateur pourra affiner sa recherche par matériel (ordinateur portable).

Dis moi ce que t'en penses.
a+
Nicolas

----
Salut,
Écoute, c'est parfait pour moi. Je m'occupe des 2 option manquantes tout de suite.
Merci beaucoup pour le travail, ça ouvre des possibilités très intéressantes, et j'avoue que je ne m'étais pas beaucoup penché dessus (la modération sur forum.debian-fr.org occupe une grande partie de mon temps libre...
[[Utilisateur:Lol|Lol]] 25 avril 2012 à 15:49 (CEST)
----
Salut,
Pour ce qui est de la validation, il faut que je le fasse. Notre Wiki possède l'extension [http://www.mediawiki.org/wiki/Extension:FlaggedRevs Flagged Revisions]. Les modification non confirmées ne sont pas prises en compte sur la page principale des sujets. Ça ne pose pas de problème.

Encore merci pour le travail, c'est super!

[[Utilisateur:Lol|Lol]] 28 avril 2012 à 14:38 (CEST)

== Propriétés créées ok ==

Salut,
Je pense avoir créé assez de propriétés pour pouvoir ranger un nombre suffisant de mot clés.
Maintenant je vais pouvoir créer les modèles et formulaires sémantiques.

Il faudrait que tu me dises quelles sont les propriétés que devra (ou sera invité à) renseigner les contributeurs. Pour chacune des catégories ( Commande, paquet, documentation, Tutoriel, trucs et astuces)

Par exemple pour un tutoriel on pourrait mettre la distribution concernée (Propriété 'Version debian'), le niveau de difficulté (Propriété ' Niveau de difficulté').


a+

----
Salut,
Pas évident de me mettre à leur place.
Je suppose qu'on cherche des Tutos, Trucs et de la doc.
Au sujet de programmes ou matériels
Pour un serveur, une machine de bureau, un portable
Le niveau de difficulté n'entre pas à mon avis dans le choix de recherche, c'est après avoir eu les résultats que ça devait s'afficher.

Mais ce n'est qu'un avis... Il faut que j'ouvre un fil sur le forum pour avoir plus d'avis. Merci
[[Utilisateur:Lol|Lol]] 4 mai 2012 à 16:39 (CEST)

== Premier modèle et formulaire créé ==

Salut j'ai créé le Premier modèle et formulaire pour les trucs et astuce.
Pour y accéder il faut être dans une page appartenant à la [[:Catégorie:Trucs et Astuces]] et cliquez sur l'onglet 'Modifier avec formulaire en haut'.

Pour créer une nouvelle page 'Trucs et Astuces' il faut aller sur la page [[Formulaire:Trucs_et_Astuces]] et entrer le nom de la nouvelle page 'trucs et astuces'.

Je te conseille de mettre une phrase du style :
'Pour rajouter une page 'Trucs et astuces' cliquer [[Formulaire:Trucs_et_Astuces|ici]]' sur la page d'accueil afin que les contributeurs prennent l'habitude de renseigner leur page.

Dis moi si je dois supprimer des champs du formulaire.
a+

----
Salut, je regarde ça. Merci.

Voici ce a quoi j'ai pensé pour les propirétés:

Actuellement nous avons définis ces Propriétés:
#Commande
#Matériel
#Niveau de difficulté
#Paquet
#Protocole (Wifi, Bluetooth, TCP...)
#Marque(Nvidia, Xerox, Ati, Asus...)
#Composant debian(Noyau...)
#...

J'ai pensé à:
#Type (tuto, truc et astuce, documentation, etc.)
#Système (serveur, machine de bureau, laptop, tous, etc.)
#Branche (stable, testing, instable, experimental, toutes)
----
Avant d'aller plus loin, laisse moi un peu de temps pour vérifier/corriger/compléter le propriétés. Je te met ça ici ?
[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 6 mai 2012 à 08:12 (CEST)

-------------------------------------
Salut,
ok pour la propriété branche.
pour système c'est la meme que [[Property:Installé sur]] non ?
Pour type en fait ce sont les catégories.
Les catégories représentent ce que vont chercher les utilisateurs (tuto, truc et astuce, documentation, etc) les propriétés c'est ce dont ils vont se servir pour affiner leur recherche.

== ok dis moi  quand t'as fini de  vérifier/corriger/compléter les propriétés ==

a+

----
Me v'la... Désolé, j'ai 50000 trucs sur le feu.

Domaine:
#Matériels et drivers;
#Logiciels;
#Internet;
#Programmation;
#Sécurité;
#Multimédia;
#Réseau.
Nicolas : ok pour cette propriété

Action:
#Installation;
#Configuration;
#Sauvegarde;
#Nettoyage;
#Création;
#Gestion;
#Suppression.
Nicolas : ok pour cette propriété, j'ai mis aussi d'autre valeurs possible c ok ?

Versions:Nicolas : ok pour cette propriété
#Unstable;
#Testing;
#Stable;
#wheezy;
#Squeeze;
#Lenny;
#Etch;
#Sarge;
#Woody;
#Potato;
#Slim;
#Hamm.

Les propriétés:
#Commande;Nicolas : ok pour cette propriété
#Matériel;Nicolas : ok pour cette propriété
#Niveau de difficulté;Nicolas : ok pour cette propriété
#Paquet;Nicolas : ok pour cette propriété
#Protocole (Wifi, Bluetooth, TCP...);Nicolas : ok pour cette propriété
#Marque (Nvidia, Xerox, Ati, Asus...);Nicolas : ok pour cette propriété
#[[Composant debian::Noyau]] (Noyau, paquet...);Nicolas : ok pour cette propriété
#[[Branche::Stable]] (stable, testing, instable, experimental, toutes).

J'avais ouvert un sujet sur le forum, mais ça n'a pas fait bouger les foules... :-(

J'espère ne pas t'avoir fait perdre trop de temps.
Merci

[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 14 mai 2012 à 14:19 (CEST)</text>
      <sha1>styap2apd88cci2camnx9z6y4xdjaxh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4257</id>
      <parentid>4247</parentid>
      <timestamp>2012-05-18T09:19:20Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>/* ok dis moi  quand t'as fini de  vérifier/corriger/compléter les propriétés */</comment>
      <text xml:space="preserve" bytes="7809">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] 23 avril 2012 à 06:50 (CEST)

== Extension &quot;wiki sémantique&quot; ==

Salut,
J'ai vu que tu avais fait pas mal de modif déjà, merci.
Faut-il que je valide au fur et à mesure, ou je le ferais en une seule fois ?

Comment ça fonctionne exactement cette extension ?
Merci.

[[Utilisateur:Lol|Lol]] 25 avril 2012 à 07:56 (CEST)

&lt;hr&gt;
Salut,
Oui j'ai sémantisé quelques mots.
Je pense qu'il est inutile que tu valide un à un chacun des articles que je modifie car je ne change pas leur sens.
Cette extension permet d'affecter des propriétés aux valeurs présentes dans tous les articles du wiki.
Pour ensuite faire des recherches en fonction de ces mêmes valeurs.
Pour être encore plus utile Semantic MediaWiki (SMW) nécessite [https://www.mediawiki.org/wiki/Extension:Semantic_Forms Semantic Forms], pour sémantiser grace a des formulaires et [https://www.mediawiki.org/wiki/Extension:Semantic_Drilldown Semantic DrillDown] pour faire des recherches multi-critères. Exemple de recherche mutli-critères sur [http://domotiki.fr/index.php/Sp%C3%A9cial:BrowseData/Logiciel domotiki.fr]

Concernant wiki debian
J'ai créé 4 propriétés
*Commande 
*Matériel
*Niveau de difficulté 
*Paquet 

Ca permettra quand la sémantisation sera plus avancée de faire des recherches en fonction des valeurs des propriété (Je me répète). Par exemple un utilisateur pourra afficher tous les articles qui parlent des 'cartes vidéo' qui est une valeur de la propriété 'Matériel'

Maintenant as tu une idéé des autres propriétés à créer?

Voilà celles auxquelles je pense (avec des exemples de valeurs entre parenthèses) :
*Protocole (Wifi, Bluetooth, TCP...)
*Marque(Nvidia, Xerox, Ati, Asus...)
*Composant debian(Noyau...)

Enfin,
Quelles seront les grandes catégories de ton wiki (représentant ce que recherchent les visiteurs et aussi ce qu'ils peuvent rajouter) ?
Voici celles que j'ai trouvées en parcourant ton wiki.
*une Commande
*un paquet
*une documentation
*un Tutoriel
*des trucs et astuces

Les autres catégories pourront être fusionnées ou supprimées en fonction de l'avancement de la sémantisation.
Par exemple les 3 catégories
*Truc et Astuces pour les portables‏‎ (2 membres)
*Trucs et Astuces‏‎ (3 membres)
*Trucs et Astuces divers‏‎ (6 membres)

Pourront être fusionnées en une seule &quot;Trucs et Astuces‏‎&quot; puis l'utilisateur pourra affiner sa recherche par matériel (ordinateur portable).

Dis moi ce que t'en penses.
a+
Nicolas

----
Salut,
Écoute, c'est parfait pour moi. Je m'occupe des 2 option manquantes tout de suite.
Merci beaucoup pour le travail, ça ouvre des possibilités très intéressantes, et j'avoue que je ne m'étais pas beaucoup penché dessus (la modération sur forum.debian-fr.org occupe une grande partie de mon temps libre...
[[Utilisateur:Lol|Lol]] 25 avril 2012 à 15:49 (CEST)
----
Salut,
Pour ce qui est de la validation, il faut que je le fasse. Notre Wiki possède l'extension [http://www.mediawiki.org/wiki/Extension:FlaggedRevs Flagged Revisions]. Les modification non confirmées ne sont pas prises en compte sur la page principale des sujets. Ça ne pose pas de problème.

Encore merci pour le travail, c'est super!

[[Utilisateur:Lol|Lol]] 28 avril 2012 à 14:38 (CEST)

== Propriétés créées ok ==

Salut,
Je pense avoir créé assez de propriétés pour pouvoir ranger un nombre suffisant de mot clés.
Maintenant je vais pouvoir créer les modèles et formulaires sémantiques.

Il faudrait que tu me dises quelles sont les propriétés que devra (ou sera invité à) renseigner les contributeurs. Pour chacune des catégories ( Commande, paquet, documentation, Tutoriel, trucs et astuces)

Par exemple pour un tutoriel on pourrait mettre la distribution concernée (Propriété 'Version debian'), le niveau de difficulté (Propriété ' Niveau de difficulté').


a+

----
Salut,
Pas évident de me mettre à leur place.
Je suppose qu'on cherche des Tutos, Trucs et de la doc.
Au sujet de programmes ou matériels
Pour un serveur, une machine de bureau, un portable
Le niveau de difficulté n'entre pas à mon avis dans le choix de recherche, c'est après avoir eu les résultats que ça devait s'afficher.

Mais ce n'est qu'un avis... Il faut que j'ouvre un fil sur le forum pour avoir plus d'avis. Merci
[[Utilisateur:Lol|Lol]] 4 mai 2012 à 16:39 (CEST)

== Premier modèle et formulaire créé ==

Salut j'ai créé le Premier modèle et formulaire pour les trucs et astuce.
Pour y accéder il faut être dans une page appartenant à la [[:Catégorie:Trucs et Astuces]] et cliquez sur l'onglet 'Modifier avec formulaire en haut'.

Pour créer une nouvelle page 'Trucs et Astuces' il faut aller sur la page [[Formulaire:Trucs_et_Astuces]] et entrer le nom de la nouvelle page 'trucs et astuces'.

Je te conseille de mettre une phrase du style :
'Pour rajouter une page 'Trucs et astuces' cliquer [[Formulaire:Trucs_et_Astuces|ici]]' sur la page d'accueil afin que les contributeurs prennent l'habitude de renseigner leur page.

Dis moi si je dois supprimer des champs du formulaire.
a+

----
Salut, je regarde ça. Merci.

Voici ce a quoi j'ai pensé pour les propirétés:

Actuellement nous avons définis ces Propriétés:
#Commande
#Matériel
#Niveau de difficulté
#Paquet
#Protocole (Wifi, Bluetooth, TCP...)
#Marque(Nvidia, Xerox, Ati, Asus...)
#Composant debian(Noyau...)
#...

J'ai pensé à:
#Type (tuto, truc et astuce, documentation, etc.)
#Système (serveur, machine de bureau, laptop, tous, etc.)
#Branche (stable, testing, instable, experimental, toutes)
----
Avant d'aller plus loin, laisse moi un peu de temps pour vérifier/corriger/compléter le propriétés. Je te met ça ici ?
[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 6 mai 2012 à 08:12 (CEST)

-------------------------------------
Salut,
ok pour la propriété branche.
pour système c'est la meme que [[Property:Installé sur]] non ?
Pour type en fait ce sont les catégories.
Les catégories représentent ce que vont chercher les utilisateurs (tuto, truc et astuce, documentation, etc) les propriétés c'est ce dont ils vont se servir pour affiner leur recherche.

== ok dis moi  quand t'as fini de  vérifier/corriger/compléter les propriétés ==

a+

----
Me v'la... Désolé, j'ai 50000 trucs sur le feu.

Domaine:
#Matériels et drivers;
#Logiciels;
#Internet;
#Programmation;
#Sécurité;
#Multimédia;
#Réseau.
Nicolas : ok pour cette propriété

Action:
#Installation;
#Configuration;
#Sauvegarde;
#Nettoyage;
#Création;
#Gestion;
#Suppression.
Nicolas : ok pour cette propriété, j'ai mis aussi d'autre valeurs possible c ok ?

Versions:Nicolas : ok pour cette propriété
#Unstable;
#Testing;
#Stable;
#wheezy;
#Squeeze;
#Lenny;
#Etch;
#Sarge;
#Woody;
#Potato;
#Slim;
#Hamm.

Les propriétés:
#Commande;Nicolas : ok pour cette propriété
#Matériel;Nicolas : ok pour cette propriété
#Niveau de difficulté;Nicolas : ok pour cette propriété
#Paquet;Nicolas : ok pour cette propriété
#Protocole (Wifi, Bluetooth, TCP...);Nicolas : ok pour cette propriété
#Marque (Nvidia, Xerox, Ati, Asus...);Nicolas : ok pour cette propriété
#[[Composant debian::Noyau]] (Noyau, paquet...);Nicolas : ok pour cette propriété
#Branche : (stable, testing, instable, experimental, toutes).

J'avais ouvert un sujet sur le forum, mais ça n'a pas fait bouger les foules... :-(

J'espère ne pas t'avoir fait perdre trop de temps.
Merci

[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 14 mai 2012 à 14:19 (CEST)</text>
      <sha1>pw2djuhcdcec0f8d5e53r62vjcl2qa1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4261</id>
      <parentid>4257</parentid>
      <timestamp>2012-05-18T09:43:26Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>/* Nouvelles étapes dans la sémantisation */ nouvelle section</comment>
      <text xml:space="preserve" bytes="8006">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] 23 avril 2012 à 06:50 (CEST)

== Extension &quot;wiki sémantique&quot; ==

Salut,
J'ai vu que tu avais fait pas mal de modif déjà, merci.
Faut-il que je valide au fur et à mesure, ou je le ferais en une seule fois ?

Comment ça fonctionne exactement cette extension ?
Merci.

[[Utilisateur:Lol|Lol]] 25 avril 2012 à 07:56 (CEST)

&lt;hr&gt;
Salut,
Oui j'ai sémantisé quelques mots.
Je pense qu'il est inutile que tu valide un à un chacun des articles que je modifie car je ne change pas leur sens.
Cette extension permet d'affecter des propriétés aux valeurs présentes dans tous les articles du wiki.
Pour ensuite faire des recherches en fonction de ces mêmes valeurs.
Pour être encore plus utile Semantic MediaWiki (SMW) nécessite [https://www.mediawiki.org/wiki/Extension:Semantic_Forms Semantic Forms], pour sémantiser grace a des formulaires et [https://www.mediawiki.org/wiki/Extension:Semantic_Drilldown Semantic DrillDown] pour faire des recherches multi-critères. Exemple de recherche mutli-critères sur [http://domotiki.fr/index.php/Sp%C3%A9cial:BrowseData/Logiciel domotiki.fr]

Concernant wiki debian
J'ai créé 4 propriétés
*Commande 
*Matériel
*Niveau de difficulté 
*Paquet 

Ca permettra quand la sémantisation sera plus avancée de faire des recherches en fonction des valeurs des propriété (Je me répète). Par exemple un utilisateur pourra afficher tous les articles qui parlent des 'cartes vidéo' qui est une valeur de la propriété 'Matériel'

Maintenant as tu une idéé des autres propriétés à créer?

Voilà celles auxquelles je pense (avec des exemples de valeurs entre parenthèses) :
*Protocole (Wifi, Bluetooth, TCP...)
*Marque(Nvidia, Xerox, Ati, Asus...)
*Composant debian(Noyau...)

Enfin,
Quelles seront les grandes catégories de ton wiki (représentant ce que recherchent les visiteurs et aussi ce qu'ils peuvent rajouter) ?
Voici celles que j'ai trouvées en parcourant ton wiki.
*une Commande
*un paquet
*une documentation
*un Tutoriel
*des trucs et astuces

Les autres catégories pourront être fusionnées ou supprimées en fonction de l'avancement de la sémantisation.
Par exemple les 3 catégories
*Truc et Astuces pour les portables‏‎ (2 membres)
*Trucs et Astuces‏‎ (3 membres)
*Trucs et Astuces divers‏‎ (6 membres)

Pourront être fusionnées en une seule &quot;Trucs et Astuces‏‎&quot; puis l'utilisateur pourra affiner sa recherche par matériel (ordinateur portable).

Dis moi ce que t'en penses.
a+
Nicolas

----
Salut,
Écoute, c'est parfait pour moi. Je m'occupe des 2 option manquantes tout de suite.
Merci beaucoup pour le travail, ça ouvre des possibilités très intéressantes, et j'avoue que je ne m'étais pas beaucoup penché dessus (la modération sur forum.debian-fr.org occupe une grande partie de mon temps libre...
[[Utilisateur:Lol|Lol]] 25 avril 2012 à 15:49 (CEST)
----
Salut,
Pour ce qui est de la validation, il faut que je le fasse. Notre Wiki possède l'extension [http://www.mediawiki.org/wiki/Extension:FlaggedRevs Flagged Revisions]. Les modification non confirmées ne sont pas prises en compte sur la page principale des sujets. Ça ne pose pas de problème.

Encore merci pour le travail, c'est super!

[[Utilisateur:Lol|Lol]] 28 avril 2012 à 14:38 (CEST)

== Propriétés créées ok ==

Salut,
Je pense avoir créé assez de propriétés pour pouvoir ranger un nombre suffisant de mot clés.
Maintenant je vais pouvoir créer les modèles et formulaires sémantiques.

Il faudrait que tu me dises quelles sont les propriétés que devra (ou sera invité à) renseigner les contributeurs. Pour chacune des catégories ( Commande, paquet, documentation, Tutoriel, trucs et astuces)

Par exemple pour un tutoriel on pourrait mettre la distribution concernée (Propriété 'Version debian'), le niveau de difficulté (Propriété ' Niveau de difficulté').


a+

----
Salut,
Pas évident de me mettre à leur place.
Je suppose qu'on cherche des Tutos, Trucs et de la doc.
Au sujet de programmes ou matériels
Pour un serveur, une machine de bureau, un portable
Le niveau de difficulté n'entre pas à mon avis dans le choix de recherche, c'est après avoir eu les résultats que ça devait s'afficher.

Mais ce n'est qu'un avis... Il faut que j'ouvre un fil sur le forum pour avoir plus d'avis. Merci
[[Utilisateur:Lol|Lol]] 4 mai 2012 à 16:39 (CEST)

== Premier modèle et formulaire créé ==

Salut j'ai créé le Premier modèle et formulaire pour les trucs et astuce.
Pour y accéder il faut être dans une page appartenant à la [[:Catégorie:Trucs et Astuces]] et cliquez sur l'onglet 'Modifier avec formulaire en haut'.

Pour créer une nouvelle page 'Trucs et Astuces' il faut aller sur la page [[Formulaire:Trucs_et_Astuces]] et entrer le nom de la nouvelle page 'trucs et astuces'.

Je te conseille de mettre une phrase du style :
'Pour rajouter une page 'Trucs et astuces' cliquer [[Formulaire:Trucs_et_Astuces|ici]]' sur la page d'accueil afin que les contributeurs prennent l'habitude de renseigner leur page.

Dis moi si je dois supprimer des champs du formulaire.
a+

----
Salut, je regarde ça. Merci.

Voici ce a quoi j'ai pensé pour les propirétés:

Actuellement nous avons définis ces Propriétés:
#Commande
#Matériel
#Niveau de difficulté
#Paquet
#Protocole (Wifi, Bluetooth, TCP...)
#Marque(Nvidia, Xerox, Ati, Asus...)
#Composant debian(Noyau...)
#...

J'ai pensé à:
#Type (tuto, truc et astuce, documentation, etc.)
#Système (serveur, machine de bureau, laptop, tous, etc.)
#Branche (stable, testing, instable, experimental, toutes)
----
Avant d'aller plus loin, laisse moi un peu de temps pour vérifier/corriger/compléter le propriétés. Je te met ça ici ?
[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 6 mai 2012 à 08:12 (CEST)

-------------------------------------
Salut,
ok pour la propriété branche.
pour système c'est la meme que [[Property:Installé sur]] non ?
Pour type en fait ce sont les catégories.
Les catégories représentent ce que vont chercher les utilisateurs (tuto, truc et astuce, documentation, etc) les propriétés c'est ce dont ils vont se servir pour affiner leur recherche.

== ok dis moi  quand t'as fini de  vérifier/corriger/compléter les propriétés ==

a+

----
Me v'la... Désolé, j'ai 50000 trucs sur le feu.

Domaine:
#Matériels et drivers;
#Logiciels;
#Internet;
#Programmation;
#Sécurité;
#Multimédia;
#Réseau.
Nicolas : ok pour cette propriété

Action:
#Installation;
#Configuration;
#Sauvegarde;
#Nettoyage;
#Création;
#Gestion;
#Suppression.
Nicolas : ok pour cette propriété, j'ai mis aussi d'autre valeurs possible c ok ?

Versions:Nicolas : ok pour cette propriété
#Unstable;
#Testing;
#Stable;
#wheezy;
#Squeeze;
#Lenny;
#Etch;
#Sarge;
#Woody;
#Potato;
#Slim;
#Hamm.

Les propriétés:
#Commande;Nicolas : ok pour cette propriété
#Matériel;Nicolas : ok pour cette propriété
#Niveau de difficulté;Nicolas : ok pour cette propriété
#Paquet;Nicolas : ok pour cette propriété
#Protocole (Wifi, Bluetooth, TCP...);Nicolas : ok pour cette propriété
#Marque (Nvidia, Xerox, Ati, Asus...);Nicolas : ok pour cette propriété
#[[Composant debian::Noyau]] (Noyau, paquet...);Nicolas : ok pour cette propriété
#Branche : (stable, testing, instable, experimental, toutes).

J'avais ouvert un sujet sur le forum, mais ça n'a pas fait bouger les foules... :-(

J'espère ne pas t'avoir fait perdre trop de temps.
Merci

[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 14 mai 2012 à 14:19 (CEST)

== Nouvelles étapes dans la sémantisation ==

Salut
Voici les prochaines étapes de  la sémantisation du wiki :
#Peux tu me dire si le [[index.php?title=X2x&amp;action=formedit|formulaire]] est ok</text>
      <sha1>kvaeiyulnh8xx7hrkdz4lzus1mayqf3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4263</id>
      <parentid>4261</parentid>
      <timestamp>2012-05-18T09:59:19Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>/* Nouvelles étapes dans la sémantisation */</comment>
      <text xml:space="preserve" bytes="8588">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] 23 avril 2012 à 06:50 (CEST)

== Extension &quot;wiki sémantique&quot; ==

Salut,
J'ai vu que tu avais fait pas mal de modif déjà, merci.
Faut-il que je valide au fur et à mesure, ou je le ferais en une seule fois ?

Comment ça fonctionne exactement cette extension ?
Merci.

[[Utilisateur:Lol|Lol]] 25 avril 2012 à 07:56 (CEST)

&lt;hr&gt;
Salut,
Oui j'ai sémantisé quelques mots.
Je pense qu'il est inutile que tu valide un à un chacun des articles que je modifie car je ne change pas leur sens.
Cette extension permet d'affecter des propriétés aux valeurs présentes dans tous les articles du wiki.
Pour ensuite faire des recherches en fonction de ces mêmes valeurs.
Pour être encore plus utile Semantic MediaWiki (SMW) nécessite [https://www.mediawiki.org/wiki/Extension:Semantic_Forms Semantic Forms], pour sémantiser grace a des formulaires et [https://www.mediawiki.org/wiki/Extension:Semantic_Drilldown Semantic DrillDown] pour faire des recherches multi-critères. Exemple de recherche mutli-critères sur [http://domotiki.fr/index.php/Sp%C3%A9cial:BrowseData/Logiciel domotiki.fr]

Concernant wiki debian
J'ai créé 4 propriétés
*Commande 
*Matériel
*Niveau de difficulté 
*Paquet 

Ca permettra quand la sémantisation sera plus avancée de faire des recherches en fonction des valeurs des propriété (Je me répète). Par exemple un utilisateur pourra afficher tous les articles qui parlent des 'cartes vidéo' qui est une valeur de la propriété 'Matériel'

Maintenant as tu une idéé des autres propriétés à créer?

Voilà celles auxquelles je pense (avec des exemples de valeurs entre parenthèses) :
*Protocole (Wifi, Bluetooth, TCP...)
*Marque(Nvidia, Xerox, Ati, Asus...)
*Composant debian(Noyau...)

Enfin,
Quelles seront les grandes catégories de ton wiki (représentant ce que recherchent les visiteurs et aussi ce qu'ils peuvent rajouter) ?
Voici celles que j'ai trouvées en parcourant ton wiki.
*une Commande
*un paquet
*une documentation
*un Tutoriel
*des trucs et astuces

Les autres catégories pourront être fusionnées ou supprimées en fonction de l'avancement de la sémantisation.
Par exemple les 3 catégories
*Truc et Astuces pour les portables‏‎ (2 membres)
*Trucs et Astuces‏‎ (3 membres)
*Trucs et Astuces divers‏‎ (6 membres)

Pourront être fusionnées en une seule &quot;Trucs et Astuces‏‎&quot; puis l'utilisateur pourra affiner sa recherche par matériel (ordinateur portable).

Dis moi ce que t'en penses.
a+
Nicolas

----
Salut,
Écoute, c'est parfait pour moi. Je m'occupe des 2 option manquantes tout de suite.
Merci beaucoup pour le travail, ça ouvre des possibilités très intéressantes, et j'avoue que je ne m'étais pas beaucoup penché dessus (la modération sur forum.debian-fr.org occupe une grande partie de mon temps libre...
[[Utilisateur:Lol|Lol]] 25 avril 2012 à 15:49 (CEST)
----
Salut,
Pour ce qui est de la validation, il faut que je le fasse. Notre Wiki possède l'extension [http://www.mediawiki.org/wiki/Extension:FlaggedRevs Flagged Revisions]. Les modification non confirmées ne sont pas prises en compte sur la page principale des sujets. Ça ne pose pas de problème.

Encore merci pour le travail, c'est super!

[[Utilisateur:Lol|Lol]] 28 avril 2012 à 14:38 (CEST)

== Propriétés créées ok ==

Salut,
Je pense avoir créé assez de propriétés pour pouvoir ranger un nombre suffisant de mot clés.
Maintenant je vais pouvoir créer les modèles et formulaires sémantiques.

Il faudrait que tu me dises quelles sont les propriétés que devra (ou sera invité à) renseigner les contributeurs. Pour chacune des catégories ( Commande, paquet, documentation, Tutoriel, trucs et astuces)

Par exemple pour un tutoriel on pourrait mettre la distribution concernée (Propriété 'Version debian'), le niveau de difficulté (Propriété ' Niveau de difficulté').


a+

----
Salut,
Pas évident de me mettre à leur place.
Je suppose qu'on cherche des Tutos, Trucs et de la doc.
Au sujet de programmes ou matériels
Pour un serveur, une machine de bureau, un portable
Le niveau de difficulté n'entre pas à mon avis dans le choix de recherche, c'est après avoir eu les résultats que ça devait s'afficher.

Mais ce n'est qu'un avis... Il faut que j'ouvre un fil sur le forum pour avoir plus d'avis. Merci
[[Utilisateur:Lol|Lol]] 4 mai 2012 à 16:39 (CEST)

== Premier modèle et formulaire créé ==

Salut j'ai créé le Premier modèle et formulaire pour les trucs et astuce.
Pour y accéder il faut être dans une page appartenant à la [[:Catégorie:Trucs et Astuces]] et cliquez sur l'onglet 'Modifier avec formulaire en haut'.

Pour créer une nouvelle page 'Trucs et Astuces' il faut aller sur la page [[Formulaire:Trucs_et_Astuces]] et entrer le nom de la nouvelle page 'trucs et astuces'.

Je te conseille de mettre une phrase du style :
'Pour rajouter une page 'Trucs et astuces' cliquer [[Formulaire:Trucs_et_Astuces|ici]]' sur la page d'accueil afin que les contributeurs prennent l'habitude de renseigner leur page.

Dis moi si je dois supprimer des champs du formulaire.
a+

----
Salut, je regarde ça. Merci.

Voici ce a quoi j'ai pensé pour les propirétés:

Actuellement nous avons définis ces Propriétés:
#Commande
#Matériel
#Niveau de difficulté
#Paquet
#Protocole (Wifi, Bluetooth, TCP...)
#Marque(Nvidia, Xerox, Ati, Asus...)
#Composant debian(Noyau...)
#...

J'ai pensé à:
#Type (tuto, truc et astuce, documentation, etc.)
#Système (serveur, machine de bureau, laptop, tous, etc.)
#Branche (stable, testing, instable, experimental, toutes)
----
Avant d'aller plus loin, laisse moi un peu de temps pour vérifier/corriger/compléter le propriétés. Je te met ça ici ?
[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 6 mai 2012 à 08:12 (CEST)

-------------------------------------
Salut,
ok pour la propriété branche.
pour système c'est la meme que [[Property:Installé sur]] non ?
Pour type en fait ce sont les catégories.
Les catégories représentent ce que vont chercher les utilisateurs (tuto, truc et astuce, documentation, etc) les propriétés c'est ce dont ils vont se servir pour affiner leur recherche.

== ok dis moi  quand t'as fini de  vérifier/corriger/compléter les propriétés ==

a+

----
Me v'la... Désolé, j'ai 50000 trucs sur le feu.

Domaine:
#Matériels et drivers;
#Logiciels;
#Internet;
#Programmation;
#Sécurité;
#Multimédia;
#Réseau.
Nicolas : ok pour cette propriété

Action:
#Installation;
#Configuration;
#Sauvegarde;
#Nettoyage;
#Création;
#Gestion;
#Suppression.
Nicolas : ok pour cette propriété, j'ai mis aussi d'autre valeurs possible c ok ?

Versions:Nicolas : ok pour cette propriété
#Unstable;
#Testing;
#Stable;
#wheezy;
#Squeeze;
#Lenny;
#Etch;
#Sarge;
#Woody;
#Potato;
#Slim;
#Hamm.

Les propriétés:
#Commande;Nicolas : ok pour cette propriété
#Matériel;Nicolas : ok pour cette propriété
#Niveau de difficulté;Nicolas : ok pour cette propriété
#Paquet;Nicolas : ok pour cette propriété
#Protocole (Wifi, Bluetooth, TCP...);Nicolas : ok pour cette propriété
#Marque (Nvidia, Xerox, Ati, Asus...);Nicolas : ok pour cette propriété
#[[Composant debian::Noyau]] (Noyau, paquet...);Nicolas : ok pour cette propriété
#Branche : (stable, testing, instable, experimental, toutes).

J'avais ouvert un sujet sur le forum, mais ça n'a pas fait bouger les foules... :-(

J'espère ne pas t'avoir fait perdre trop de temps.
Merci

[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 14 mai 2012 à 14:19 (CEST)

== Nouvelles étapes dans la sémantisation ==

Salut
Voici les prochaines étapes de  la sémantisation du wiki :
#Peux tu me dire si le [[Form:Trucs et Astuces|formulaire]] des trucs et astuces est ok (tape &quot;Bac à Sable&quot; comme nouvelles page)
#Je compte utiliser ce même formulaire pour 2 autres catégories : Tutoriels et Documentation dis moi si c'est ok ou s'il necessitent d'autres champs
#IL y a actuellement 61 Catégories sur le wiki, il devrait en rester à la fin de notre travail plus que celles là :

*Aide‏‎ (4 membres)
*Aide sur l'aide‏‎ (1 membre)
*‏‎Arborescence de catégories‏‎ (2 membres)
*Modèle cadre‏‎ (1 membre)
*Modèles‏‎
*Trucs et Astuces‏‎ (11 membres)
*Tutoriel‏‎ 
*Documentation

A ta dispo pour en discuter.
a+</text>
      <sha1>ikumm2cuh8kdqyt5fhjm2hta2j79zlk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4264</id>
      <parentid>4263</parentid>
      <timestamp>2012-05-19T11:26:56Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Nouvelles étapes dans la sémantisation */</comment>
      <text xml:space="preserve" bytes="9484">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] 23 avril 2012 à 06:50 (CEST)

== Extension &quot;wiki sémantique&quot; ==

Salut,
J'ai vu que tu avais fait pas mal de modif déjà, merci.
Faut-il que je valide au fur et à mesure, ou je le ferais en une seule fois ?

Comment ça fonctionne exactement cette extension ?
Merci.

[[Utilisateur:Lol|Lol]] 25 avril 2012 à 07:56 (CEST)

&lt;hr&gt;
Salut,
Oui j'ai sémantisé quelques mots.
Je pense qu'il est inutile que tu valide un à un chacun des articles que je modifie car je ne change pas leur sens.
Cette extension permet d'affecter des propriétés aux valeurs présentes dans tous les articles du wiki.
Pour ensuite faire des recherches en fonction de ces mêmes valeurs.
Pour être encore plus utile Semantic MediaWiki (SMW) nécessite [https://www.mediawiki.org/wiki/Extension:Semantic_Forms Semantic Forms], pour sémantiser grace a des formulaires et [https://www.mediawiki.org/wiki/Extension:Semantic_Drilldown Semantic DrillDown] pour faire des recherches multi-critères. Exemple de recherche mutli-critères sur [http://domotiki.fr/index.php/Sp%C3%A9cial:BrowseData/Logiciel domotiki.fr]

Concernant wiki debian
J'ai créé 4 propriétés
*Commande 
*Matériel
*Niveau de difficulté 
*Paquet 

Ca permettra quand la sémantisation sera plus avancée de faire des recherches en fonction des valeurs des propriété (Je me répète). Par exemple un utilisateur pourra afficher tous les articles qui parlent des 'cartes vidéo' qui est une valeur de la propriété 'Matériel'

Maintenant as tu une idéé des autres propriétés à créer?

Voilà celles auxquelles je pense (avec des exemples de valeurs entre parenthèses) :
*Protocole (Wifi, Bluetooth, TCP...)
*Marque(Nvidia, Xerox, Ati, Asus...)
*Composant debian(Noyau...)

Enfin,
Quelles seront les grandes catégories de ton wiki (représentant ce que recherchent les visiteurs et aussi ce qu'ils peuvent rajouter) ?
Voici celles que j'ai trouvées en parcourant ton wiki.
*une Commande
*un paquet
*une documentation
*un Tutoriel
*des trucs et astuces

Les autres catégories pourront être fusionnées ou supprimées en fonction de l'avancement de la sémantisation.
Par exemple les 3 catégories
*Truc et Astuces pour les portables‏‎ (2 membres)
*Trucs et Astuces‏‎ (3 membres)
*Trucs et Astuces divers‏‎ (6 membres)

Pourront être fusionnées en une seule &quot;Trucs et Astuces‏‎&quot; puis l'utilisateur pourra affiner sa recherche par matériel (ordinateur portable).

Dis moi ce que t'en penses.
a+
Nicolas

----
Salut,
Écoute, c'est parfait pour moi. Je m'occupe des 2 option manquantes tout de suite.
Merci beaucoup pour le travail, ça ouvre des possibilités très intéressantes, et j'avoue que je ne m'étais pas beaucoup penché dessus (la modération sur forum.debian-fr.org occupe une grande partie de mon temps libre...
[[Utilisateur:Lol|Lol]] 25 avril 2012 à 15:49 (CEST)
----
Salut,
Pour ce qui est de la validation, il faut que je le fasse. Notre Wiki possède l'extension [http://www.mediawiki.org/wiki/Extension:FlaggedRevs Flagged Revisions]. Les modification non confirmées ne sont pas prises en compte sur la page principale des sujets. Ça ne pose pas de problème.

Encore merci pour le travail, c'est super!

[[Utilisateur:Lol|Lol]] 28 avril 2012 à 14:38 (CEST)

== Propriétés créées ok ==

Salut,
Je pense avoir créé assez de propriétés pour pouvoir ranger un nombre suffisant de mot clés.
Maintenant je vais pouvoir créer les modèles et formulaires sémantiques.

Il faudrait que tu me dises quelles sont les propriétés que devra (ou sera invité à) renseigner les contributeurs. Pour chacune des catégories ( Commande, paquet, documentation, Tutoriel, trucs et astuces)

Par exemple pour un tutoriel on pourrait mettre la distribution concernée (Propriété 'Version debian'), le niveau de difficulté (Propriété ' Niveau de difficulté').


a+

----
Salut,
Pas évident de me mettre à leur place.
Je suppose qu'on cherche des Tutos, Trucs et de la doc.
Au sujet de programmes ou matériels
Pour un serveur, une machine de bureau, un portable
Le niveau de difficulté n'entre pas à mon avis dans le choix de recherche, c'est après avoir eu les résultats que ça devait s'afficher.

Mais ce n'est qu'un avis... Il faut que j'ouvre un fil sur le forum pour avoir plus d'avis. Merci
[[Utilisateur:Lol|Lol]] 4 mai 2012 à 16:39 (CEST)

== Premier modèle et formulaire créé ==

Salut j'ai créé le Premier modèle et formulaire pour les trucs et astuce.
Pour y accéder il faut être dans une page appartenant à la [[:Catégorie:Trucs et Astuces]] et cliquez sur l'onglet 'Modifier avec formulaire en haut'.

Pour créer une nouvelle page 'Trucs et Astuces' il faut aller sur la page [[Formulaire:Trucs_et_Astuces]] et entrer le nom de la nouvelle page 'trucs et astuces'.

Je te conseille de mettre une phrase du style :
'Pour rajouter une page 'Trucs et astuces' cliquer [[Formulaire:Trucs_et_Astuces|ici]]' sur la page d'accueil afin que les contributeurs prennent l'habitude de renseigner leur page.

Dis moi si je dois supprimer des champs du formulaire.
a+

----
Salut, je regarde ça. Merci.

Voici ce a quoi j'ai pensé pour les propirétés:

Actuellement nous avons définis ces Propriétés:
#Commande
#Matériel
#Niveau de difficulté
#Paquet
#Protocole (Wifi, Bluetooth, TCP...)
#Marque(Nvidia, Xerox, Ati, Asus...)
#Composant debian(Noyau...)
#...

J'ai pensé à:
#Type (tuto, truc et astuce, documentation, etc.)
#Système (serveur, machine de bureau, laptop, tous, etc.)
#Branche (stable, testing, instable, experimental, toutes)
----
Avant d'aller plus loin, laisse moi un peu de temps pour vérifier/corriger/compléter le propriétés. Je te met ça ici ?
[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 6 mai 2012 à 08:12 (CEST)

-------------------------------------
Salut,
ok pour la propriété branche.
pour système c'est la meme que [[Property:Installé sur]] non ?
Pour type en fait ce sont les catégories.
Les catégories représentent ce que vont chercher les utilisateurs (tuto, truc et astuce, documentation, etc) les propriétés c'est ce dont ils vont se servir pour affiner leur recherche.

== ok dis moi  quand t'as fini de  vérifier/corriger/compléter les propriétés ==

a+

----
Me v'la... Désolé, j'ai 50000 trucs sur le feu.

Domaine:
#Matériels et drivers;
#Logiciels;
#Internet;
#Programmation;
#Sécurité;
#Multimédia;
#Réseau.
Nicolas : ok pour cette propriété

Action:
#Installation;
#Configuration;
#Sauvegarde;
#Nettoyage;
#Création;
#Gestion;
#Suppression.
Nicolas : ok pour cette propriété, j'ai mis aussi d'autre valeurs possible c ok ?

Versions:Nicolas : ok pour cette propriété
#Unstable;
#Testing;
#Stable;
#wheezy;
#Squeeze;
#Lenny;
#Etch;
#Sarge;
#Woody;
#Potato;
#Slim;
#Hamm.

Les propriétés:
#Commande;Nicolas : ok pour cette propriété
#Matériel;Nicolas : ok pour cette propriété
#Niveau de difficulté;Nicolas : ok pour cette propriété
#Paquet;Nicolas : ok pour cette propriété
#Protocole (Wifi, Bluetooth, TCP...);Nicolas : ok pour cette propriété
#Marque (Nvidia, Xerox, Ati, Asus...);Nicolas : ok pour cette propriété
#[[Composant debian::Noyau]] (Noyau, paquet...);Nicolas : ok pour cette propriété
#Branche : (stable, testing, instable, experimental, toutes).

J'avais ouvert un sujet sur le forum, mais ça n'a pas fait bouger les foules... :-(

J'espère ne pas t'avoir fait perdre trop de temps.
Merci

[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 14 mai 2012 à 14:19 (CEST)

== Nouvelles étapes dans la sémantisation ==

Salut
Voici les prochaines étapes de  la sémantisation du wiki :
#Peux tu me dire si le [[Form:Trucs et Astuces|formulaire]] des trucs et astuces est ok (tape &quot;Bac à Sable&quot; comme nouvelles page)
#Je compte utiliser ce même formulaire pour 2 autres catégories : Tutoriels et Documentation dis moi si c'est ok ou s'il necessitent d'autres champs
#IL y a actuellement 61 Catégories sur le wiki, il devrait en rester à la fin de notre travail plus que celles là :

*Aide‏‎ (4 membres)
*Aide sur l'aide‏‎ (1 membre)
*‏‎Arborescence de catégories‏‎ (2 membres)
*Modèle cadre‏‎ (1 membre)
*Modèles‏‎
*Trucs et Astuces‏‎ (11 membres)
*Tutoriel‏‎ 
*Documentation

A ta dispo pour en discuter.
a+

----
Salut, Voici mes remarques sur le formulaire:

1)

Domaine: 	Matériels et drivers Commande Logiciels Sécurité Multimédia Internet Programmation Réseau - J'ajouterais '''aide''' '''Documentation''' et '''Trucs et astuces'''

Action(s) effectuée(s): 	Assignation Back-up Configuration Création Gestion Installation Nettoyage Redémarrage Remplissage Sauvegarde Suppression - J'enlèverais '''back-up''' (double emploi avec sauvegarde. '''Assignation''' je ne vois pas ce que ça veut dire.

Version debian: 	Wheezy Squeeze Lenny Etch Sarge Woody Potato Slink Hamm - Il manque '''Sid'''

Pour le reste OK. Une fois que je maîtriserais l'extension sémantique, je ferais les ajustements moi-même.

2) C'est bon pour T&amp;A et Documentation; D'ailleurs ça devrait convenir à tous, non ?

3) Je pense que Aide sur l'aide, arborescence et Modèles n'ont pas besoin d'être &quot;sémantisés&quot;.</text>
      <sha1>2uui94ryldafb77wot8tebl4gqyi9f2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4275</id>
      <parentid>4264</parentid>
      <timestamp>2012-05-24T09:31:35Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>/* Nouvelles étapes dans la sémantisation */</comment>
      <text xml:space="preserve" bytes="9941">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] 23 avril 2012 à 06:50 (CEST)

== Extension &quot;wiki sémantique&quot; ==

Salut,
J'ai vu que tu avais fait pas mal de modif déjà, merci.
Faut-il que je valide au fur et à mesure, ou je le ferais en une seule fois ?

Comment ça fonctionne exactement cette extension ?
Merci.

[[Utilisateur:Lol|Lol]] 25 avril 2012 à 07:56 (CEST)

&lt;hr&gt;
Salut,
Oui j'ai sémantisé quelques mots.
Je pense qu'il est inutile que tu valide un à un chacun des articles que je modifie car je ne change pas leur sens.
Cette extension permet d'affecter des propriétés aux valeurs présentes dans tous les articles du wiki.
Pour ensuite faire des recherches en fonction de ces mêmes valeurs.
Pour être encore plus utile Semantic MediaWiki (SMW) nécessite [https://www.mediawiki.org/wiki/Extension:Semantic_Forms Semantic Forms], pour sémantiser grace a des formulaires et [https://www.mediawiki.org/wiki/Extension:Semantic_Drilldown Semantic DrillDown] pour faire des recherches multi-critères. Exemple de recherche mutli-critères sur [http://domotiki.fr/index.php/Sp%C3%A9cial:BrowseData/Logiciel domotiki.fr]

Concernant wiki debian
J'ai créé 4 propriétés
*Commande 
*Matériel
*Niveau de difficulté 
*Paquet 

Ca permettra quand la sémantisation sera plus avancée de faire des recherches en fonction des valeurs des propriété (Je me répète). Par exemple un utilisateur pourra afficher tous les articles qui parlent des 'cartes vidéo' qui est une valeur de la propriété 'Matériel'

Maintenant as tu une idéé des autres propriétés à créer?

Voilà celles auxquelles je pense (avec des exemples de valeurs entre parenthèses) :
*Protocole (Wifi, Bluetooth, TCP...)
*Marque(Nvidia, Xerox, Ati, Asus...)
*Composant debian(Noyau...)

Enfin,
Quelles seront les grandes catégories de ton wiki (représentant ce que recherchent les visiteurs et aussi ce qu'ils peuvent rajouter) ?
Voici celles que j'ai trouvées en parcourant ton wiki.
*une Commande
*un paquet
*une documentation
*un Tutoriel
*des trucs et astuces

Les autres catégories pourront être fusionnées ou supprimées en fonction de l'avancement de la sémantisation.
Par exemple les 3 catégories
*Truc et Astuces pour les portables‏‎ (2 membres)
*Trucs et Astuces‏‎ (3 membres)
*Trucs et Astuces divers‏‎ (6 membres)

Pourront être fusionnées en une seule &quot;Trucs et Astuces‏‎&quot; puis l'utilisateur pourra affiner sa recherche par matériel (ordinateur portable).

Dis moi ce que t'en penses.
a+
Nicolas

----
Salut,
Écoute, c'est parfait pour moi. Je m'occupe des 2 option manquantes tout de suite.
Merci beaucoup pour le travail, ça ouvre des possibilités très intéressantes, et j'avoue que je ne m'étais pas beaucoup penché dessus (la modération sur forum.debian-fr.org occupe une grande partie de mon temps libre...
[[Utilisateur:Lol|Lol]] 25 avril 2012 à 15:49 (CEST)
----
Salut,
Pour ce qui est de la validation, il faut que je le fasse. Notre Wiki possède l'extension [http://www.mediawiki.org/wiki/Extension:FlaggedRevs Flagged Revisions]. Les modification non confirmées ne sont pas prises en compte sur la page principale des sujets. Ça ne pose pas de problème.

Encore merci pour le travail, c'est super!

[[Utilisateur:Lol|Lol]] 28 avril 2012 à 14:38 (CEST)

== Propriétés créées ok ==

Salut,
Je pense avoir créé assez de propriétés pour pouvoir ranger un nombre suffisant de mot clés.
Maintenant je vais pouvoir créer les modèles et formulaires sémantiques.

Il faudrait que tu me dises quelles sont les propriétés que devra (ou sera invité à) renseigner les contributeurs. Pour chacune des catégories ( Commande, paquet, documentation, Tutoriel, trucs et astuces)

Par exemple pour un tutoriel on pourrait mettre la distribution concernée (Propriété 'Version debian'), le niveau de difficulté (Propriété ' Niveau de difficulté').


a+

----
Salut,
Pas évident de me mettre à leur place.
Je suppose qu'on cherche des Tutos, Trucs et de la doc.
Au sujet de programmes ou matériels
Pour un serveur, une machine de bureau, un portable
Le niveau de difficulté n'entre pas à mon avis dans le choix de recherche, c'est après avoir eu les résultats que ça devait s'afficher.

Mais ce n'est qu'un avis... Il faut que j'ouvre un fil sur le forum pour avoir plus d'avis. Merci
[[Utilisateur:Lol|Lol]] 4 mai 2012 à 16:39 (CEST)

== Premier modèle et formulaire créé ==

Salut j'ai créé le Premier modèle et formulaire pour les trucs et astuce.
Pour y accéder il faut être dans une page appartenant à la [[:Catégorie:Trucs et Astuces]] et cliquez sur l'onglet 'Modifier avec formulaire en haut'.

Pour créer une nouvelle page 'Trucs et Astuces' il faut aller sur la page [[Formulaire:Trucs_et_Astuces]] et entrer le nom de la nouvelle page 'trucs et astuces'.

Je te conseille de mettre une phrase du style :
'Pour rajouter une page 'Trucs et astuces' cliquer [[Formulaire:Trucs_et_Astuces|ici]]' sur la page d'accueil afin que les contributeurs prennent l'habitude de renseigner leur page.

Dis moi si je dois supprimer des champs du formulaire.
a+

----
Salut, je regarde ça. Merci.

Voici ce a quoi j'ai pensé pour les propirétés:

Actuellement nous avons définis ces Propriétés:
#Commande
#Matériel
#Niveau de difficulté
#Paquet
#Protocole (Wifi, Bluetooth, TCP...)
#Marque(Nvidia, Xerox, Ati, Asus...)
#Composant debian(Noyau...)
#...

J'ai pensé à:
#Type (tuto, truc et astuce, documentation, etc.)
#Système (serveur, machine de bureau, laptop, tous, etc.)
#Branche (stable, testing, instable, experimental, toutes)
----
Avant d'aller plus loin, laisse moi un peu de temps pour vérifier/corriger/compléter le propriétés. Je te met ça ici ?
[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 6 mai 2012 à 08:12 (CEST)

-------------------------------------
Salut,
ok pour la propriété branche.
pour système c'est la meme que [[Property:Installé sur]] non ?
Pour type en fait ce sont les catégories.
Les catégories représentent ce que vont chercher les utilisateurs (tuto, truc et astuce, documentation, etc) les propriétés c'est ce dont ils vont se servir pour affiner leur recherche.

== ok dis moi  quand t'as fini de  vérifier/corriger/compléter les propriétés ==

a+

----
Me v'la... Désolé, j'ai 50000 trucs sur le feu.

Domaine:
#Matériels et drivers;
#Logiciels;
#Internet;
#Programmation;
#Sécurité;
#Multimédia;
#Réseau.
Nicolas : ok pour cette propriété

Action:
#Installation;
#Configuration;
#Sauvegarde;
#Nettoyage;
#Création;
#Gestion;
#Suppression.
Nicolas : ok pour cette propriété, j'ai mis aussi d'autre valeurs possible c ok ?

Versions:Nicolas : ok pour cette propriété
#Unstable;
#Testing;
#Stable;
#wheezy;
#Squeeze;
#Lenny;
#Etch;
#Sarge;
#Woody;
#Potato;
#Slim;
#Hamm.

Les propriétés:
#Commande;Nicolas : ok pour cette propriété
#Matériel;Nicolas : ok pour cette propriété
#Niveau de difficulté;Nicolas : ok pour cette propriété
#Paquet;Nicolas : ok pour cette propriété
#Protocole (Wifi, Bluetooth, TCP...);Nicolas : ok pour cette propriété
#Marque (Nvidia, Xerox, Ati, Asus...);Nicolas : ok pour cette propriété
#[[Composant debian::Noyau]] (Noyau, paquet...);Nicolas : ok pour cette propriété
#Branche : (stable, testing, instable, experimental, toutes).

J'avais ouvert un sujet sur le forum, mais ça n'a pas fait bouger les foules... :-(

J'espère ne pas t'avoir fait perdre trop de temps.
Merci

[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 14 mai 2012 à 14:19 (CEST)

== Nouvelles étapes dans la sémantisation ==

Salut
Voici les prochaines étapes de  la sémantisation du wiki :
#Peux tu me dire si le [[Form:Trucs et Astuces|formulaire]] des trucs et astuces est ok (tape &quot;Bac à Sable&quot; comme nouvelles page)
#Je compte utiliser ce même formulaire pour 2 autres catégories : Tutoriels et Documentation dis moi si c'est ok ou s'il necessitent d'autres champs
#IL y a actuellement 61 Catégories sur le wiki, il devrait en rester à la fin de notre travail plus que celles là :

*Aide‏‎ (4 membres)
*Aide sur l'aide‏‎ (1 membre)
*‏‎Arborescence de catégories‏‎ (2 membres)
*Modèle cadre‏‎ (1 membre)
*Modèles‏‎
*Trucs et Astuces‏‎ (11 membres)
*Tutoriel‏‎ 
*Documentation

A ta dispo pour en discuter.
a+

----
Salut, Voici mes remarques sur le formulaire:

1)

Domaine: 	Matériels et drivers Commande Logiciels Sécurité Multimédia Internet Programmation Réseau - J'ajouterais '''aide''' '''Documentation''' et '''Trucs et astuces''' , Pour les 2 derniers ce sont des types de ressources que l'utilisateur va chercher ils seront donc sous la forme de catégorie.

L'utilisateur va rechercher d'abord par exemple de la documentation puis il choisira le domaine ''Réseau'' s'il veut une doc sur le réseau.
Pour aide tu parle de l'aide spécifique au wiki ou une aide pour Débian ?

Action(s) effectuée(s): 	Assignation Back-up Configuration Création Gestion Installation Nettoyage Redémarrage Remplissage Sauvegarde Suppression - J'enlèverais '''back-up''' (double emploi avec sauvegarde. '''Assignation''' je ne vois pas ce que ça veut dire. 
*Ok done

Version debian: 	Wheezy Squeeze Lenny Etch Sarge Woody Potato Slink Hamm - Il manque '''Sid'''  
*OK Done

Pour le reste OK. Une fois que je maîtriserais l'extension sémantique, je ferais les ajustements moi-même.

2) C'est bon pour T&amp;A et Documentation; D'ailleurs ça devrait convenir à tous, non ? 
*On met aussi tutoriel non ? Ce qui fait 3 catégories principales.

3) Je pense que Aide sur l'aide, arborescence et Modèles n'ont pas besoin d'être &quot;sémantisés&quot;.
* Je suis d'accord</text>
      <sha1>2i711y1u2ot7waqz5j2jpv5gm1thikt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4276</id>
      <parentid>4275</parentid>
      <timestamp>2012-05-24T09:32:29Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>/* Nouvelles étapes dans la sémantisation */</comment>
      <text xml:space="preserve" bytes="9943">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] 23 avril 2012 à 06:50 (CEST)

== Extension &quot;wiki sémantique&quot; ==

Salut,
J'ai vu que tu avais fait pas mal de modif déjà, merci.
Faut-il que je valide au fur et à mesure, ou je le ferais en une seule fois ?

Comment ça fonctionne exactement cette extension ?
Merci.

[[Utilisateur:Lol|Lol]] 25 avril 2012 à 07:56 (CEST)

&lt;hr&gt;
Salut,
Oui j'ai sémantisé quelques mots.
Je pense qu'il est inutile que tu valide un à un chacun des articles que je modifie car je ne change pas leur sens.
Cette extension permet d'affecter des propriétés aux valeurs présentes dans tous les articles du wiki.
Pour ensuite faire des recherches en fonction de ces mêmes valeurs.
Pour être encore plus utile Semantic MediaWiki (SMW) nécessite [https://www.mediawiki.org/wiki/Extension:Semantic_Forms Semantic Forms], pour sémantiser grace a des formulaires et [https://www.mediawiki.org/wiki/Extension:Semantic_Drilldown Semantic DrillDown] pour faire des recherches multi-critères. Exemple de recherche mutli-critères sur [http://domotiki.fr/index.php/Sp%C3%A9cial:BrowseData/Logiciel domotiki.fr]

Concernant wiki debian
J'ai créé 4 propriétés
*Commande 
*Matériel
*Niveau de difficulté 
*Paquet 

Ca permettra quand la sémantisation sera plus avancée de faire des recherches en fonction des valeurs des propriété (Je me répète). Par exemple un utilisateur pourra afficher tous les articles qui parlent des 'cartes vidéo' qui est une valeur de la propriété 'Matériel'

Maintenant as tu une idéé des autres propriétés à créer?

Voilà celles auxquelles je pense (avec des exemples de valeurs entre parenthèses) :
*Protocole (Wifi, Bluetooth, TCP...)
*Marque(Nvidia, Xerox, Ati, Asus...)
*Composant debian(Noyau...)

Enfin,
Quelles seront les grandes catégories de ton wiki (représentant ce que recherchent les visiteurs et aussi ce qu'ils peuvent rajouter) ?
Voici celles que j'ai trouvées en parcourant ton wiki.
*une Commande
*un paquet
*une documentation
*un Tutoriel
*des trucs et astuces

Les autres catégories pourront être fusionnées ou supprimées en fonction de l'avancement de la sémantisation.
Par exemple les 3 catégories
*Truc et Astuces pour les portables‏‎ (2 membres)
*Trucs et Astuces‏‎ (3 membres)
*Trucs et Astuces divers‏‎ (6 membres)

Pourront être fusionnées en une seule &quot;Trucs et Astuces‏‎&quot; puis l'utilisateur pourra affiner sa recherche par matériel (ordinateur portable).

Dis moi ce que t'en penses.
a+
Nicolas

----
Salut,
Écoute, c'est parfait pour moi. Je m'occupe des 2 option manquantes tout de suite.
Merci beaucoup pour le travail, ça ouvre des possibilités très intéressantes, et j'avoue que je ne m'étais pas beaucoup penché dessus (la modération sur forum.debian-fr.org occupe une grande partie de mon temps libre...
[[Utilisateur:Lol|Lol]] 25 avril 2012 à 15:49 (CEST)
----
Salut,
Pour ce qui est de la validation, il faut que je le fasse. Notre Wiki possède l'extension [http://www.mediawiki.org/wiki/Extension:FlaggedRevs Flagged Revisions]. Les modification non confirmées ne sont pas prises en compte sur la page principale des sujets. Ça ne pose pas de problème.

Encore merci pour le travail, c'est super!

[[Utilisateur:Lol|Lol]] 28 avril 2012 à 14:38 (CEST)

== Propriétés créées ok ==

Salut,
Je pense avoir créé assez de propriétés pour pouvoir ranger un nombre suffisant de mot clés.
Maintenant je vais pouvoir créer les modèles et formulaires sémantiques.

Il faudrait que tu me dises quelles sont les propriétés que devra (ou sera invité à) renseigner les contributeurs. Pour chacune des catégories ( Commande, paquet, documentation, Tutoriel, trucs et astuces)

Par exemple pour un tutoriel on pourrait mettre la distribution concernée (Propriété 'Version debian'), le niveau de difficulté (Propriété ' Niveau de difficulté').


a+

----
Salut,
Pas évident de me mettre à leur place.
Je suppose qu'on cherche des Tutos, Trucs et de la doc.
Au sujet de programmes ou matériels
Pour un serveur, une machine de bureau, un portable
Le niveau de difficulté n'entre pas à mon avis dans le choix de recherche, c'est après avoir eu les résultats que ça devait s'afficher.

Mais ce n'est qu'un avis... Il faut que j'ouvre un fil sur le forum pour avoir plus d'avis. Merci
[[Utilisateur:Lol|Lol]] 4 mai 2012 à 16:39 (CEST)

== Premier modèle et formulaire créé ==

Salut j'ai créé le Premier modèle et formulaire pour les trucs et astuce.
Pour y accéder il faut être dans une page appartenant à la [[:Catégorie:Trucs et Astuces]] et cliquez sur l'onglet 'Modifier avec formulaire en haut'.

Pour créer une nouvelle page 'Trucs et Astuces' il faut aller sur la page [[Formulaire:Trucs_et_Astuces]] et entrer le nom de la nouvelle page 'trucs et astuces'.

Je te conseille de mettre une phrase du style :
'Pour rajouter une page 'Trucs et astuces' cliquer [[Formulaire:Trucs_et_Astuces|ici]]' sur la page d'accueil afin que les contributeurs prennent l'habitude de renseigner leur page.

Dis moi si je dois supprimer des champs du formulaire.
a+

----
Salut, je regarde ça. Merci.

Voici ce a quoi j'ai pensé pour les propirétés:

Actuellement nous avons définis ces Propriétés:
#Commande
#Matériel
#Niveau de difficulté
#Paquet
#Protocole (Wifi, Bluetooth, TCP...)
#Marque(Nvidia, Xerox, Ati, Asus...)
#Composant debian(Noyau...)
#...

J'ai pensé à:
#Type (tuto, truc et astuce, documentation, etc.)
#Système (serveur, machine de bureau, laptop, tous, etc.)
#Branche (stable, testing, instable, experimental, toutes)
----
Avant d'aller plus loin, laisse moi un peu de temps pour vérifier/corriger/compléter le propriétés. Je te met ça ici ?
[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 6 mai 2012 à 08:12 (CEST)

-------------------------------------
Salut,
ok pour la propriété branche.
pour système c'est la meme que [[Property:Installé sur]] non ?
Pour type en fait ce sont les catégories.
Les catégories représentent ce que vont chercher les utilisateurs (tuto, truc et astuce, documentation, etc) les propriétés c'est ce dont ils vont se servir pour affiner leur recherche.

== ok dis moi  quand t'as fini de  vérifier/corriger/compléter les propriétés ==

a+

----
Me v'la... Désolé, j'ai 50000 trucs sur le feu.

Domaine:
#Matériels et drivers;
#Logiciels;
#Internet;
#Programmation;
#Sécurité;
#Multimédia;
#Réseau.
Nicolas : ok pour cette propriété

Action:
#Installation;
#Configuration;
#Sauvegarde;
#Nettoyage;
#Création;
#Gestion;
#Suppression.
Nicolas : ok pour cette propriété, j'ai mis aussi d'autre valeurs possible c ok ?

Versions:Nicolas : ok pour cette propriété
#Unstable;
#Testing;
#Stable;
#wheezy;
#Squeeze;
#Lenny;
#Etch;
#Sarge;
#Woody;
#Potato;
#Slim;
#Hamm.

Les propriétés:
#Commande;Nicolas : ok pour cette propriété
#Matériel;Nicolas : ok pour cette propriété
#Niveau de difficulté;Nicolas : ok pour cette propriété
#Paquet;Nicolas : ok pour cette propriété
#Protocole (Wifi, Bluetooth, TCP...);Nicolas : ok pour cette propriété
#Marque (Nvidia, Xerox, Ati, Asus...);Nicolas : ok pour cette propriété
#[[Composant debian::Noyau]] (Noyau, paquet...);Nicolas : ok pour cette propriété
#Branche : (stable, testing, instable, experimental, toutes).

J'avais ouvert un sujet sur le forum, mais ça n'a pas fait bouger les foules... :-(

J'espère ne pas t'avoir fait perdre trop de temps.
Merci

[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 14 mai 2012 à 14:19 (CEST)

== Nouvelles étapes dans la sémantisation ==

Salut
Voici les prochaines étapes de  la sémantisation du wiki :
#Peux tu me dire si le [[Form:Trucs et Astuces|formulaire]] des trucs et astuces est ok (tape &quot;Bac à Sable&quot; comme nouvelles page)
#Je compte utiliser ce même formulaire pour 2 autres catégories : Tutoriels et Documentation dis moi si c'est ok ou s'il necessitent d'autres champs
#IL y a actuellement 61 Catégories sur le wiki, il devrait en rester à la fin de notre travail plus que celles là :

*Aide‏‎ (4 membres)
*Aide sur l'aide‏‎ (1 membre)
*‏‎Arborescence de catégories‏‎ (2 membres)
*Modèle cadre‏‎ (1 membre)
*Modèles‏‎
*Trucs et Astuces‏‎ (11 membres)
*Tutoriel‏‎ 
*Documentation

A ta dispo pour en discuter.
a+

----
Salut, Voici mes remarques sur le formulaire:

1)

Domaine: 	Matériels et drivers Commande Logiciels Sécurité Multimédia Internet Programmation Réseau - J'ajouterais '''aide''' '''Documentation''' et '''Trucs et astuces''' , 
*Pour les 2 derniers ce sont des types de ressources que l'utilisateur va chercher ils seront donc sous la forme de catégorie.

L'utilisateur va rechercher d'abord par exemple de la documentation puis il choisira le domaine ''Réseau'' s'il veut une doc sur le réseau.
Pour aide tu parle de l'aide spécifique au wiki ou une aide pour Débian ?

Action(s) effectuée(s): 	Assignation Back-up Configuration Création Gestion Installation Nettoyage Redémarrage Remplissage Sauvegarde Suppression - J'enlèverais '''back-up''' (double emploi avec sauvegarde. '''Assignation''' je ne vois pas ce que ça veut dire. 
*Ok done

Version debian: 	Wheezy Squeeze Lenny Etch Sarge Woody Potato Slink Hamm - Il manque '''Sid'''  
*OK Done

Pour le reste OK. Une fois que je maîtriserais l'extension sémantique, je ferais les ajustements moi-même.

2) C'est bon pour T&amp;A et Documentation; D'ailleurs ça devrait convenir à tous, non ? 
*On met aussi tutoriel non ? Ce qui fait 3 catégories principales.

3) Je pense que Aide sur l'aide, arborescence et Modèles n'ont pas besoin d'être &quot;sémantisés&quot;.
* Je suis d'accord</text>
      <sha1>qinxcj2zf6tcm9cvhsfb4zlppf6fr7a</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4293</id>
      <parentid>4276</parentid>
      <timestamp>2012-05-31T13:50:10Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>/* Prochaine étape catégorisation des pages */ nouvelle section</comment>
      <text xml:space="preserve" bytes="10884">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] 23 avril 2012 à 06:50 (CEST)

== Extension &quot;wiki sémantique&quot; ==

Salut,
J'ai vu que tu avais fait pas mal de modif déjà, merci.
Faut-il que je valide au fur et à mesure, ou je le ferais en une seule fois ?

Comment ça fonctionne exactement cette extension ?
Merci.

[[Utilisateur:Lol|Lol]] 25 avril 2012 à 07:56 (CEST)

&lt;hr&gt;
Salut,
Oui j'ai sémantisé quelques mots.
Je pense qu'il est inutile que tu valide un à un chacun des articles que je modifie car je ne change pas leur sens.
Cette extension permet d'affecter des propriétés aux valeurs présentes dans tous les articles du wiki.
Pour ensuite faire des recherches en fonction de ces mêmes valeurs.
Pour être encore plus utile Semantic MediaWiki (SMW) nécessite [https://www.mediawiki.org/wiki/Extension:Semantic_Forms Semantic Forms], pour sémantiser grace a des formulaires et [https://www.mediawiki.org/wiki/Extension:Semantic_Drilldown Semantic DrillDown] pour faire des recherches multi-critères. Exemple de recherche mutli-critères sur [http://domotiki.fr/index.php/Sp%C3%A9cial:BrowseData/Logiciel domotiki.fr]

Concernant wiki debian
J'ai créé 4 propriétés
*Commande 
*Matériel
*Niveau de difficulté 
*Paquet 

Ca permettra quand la sémantisation sera plus avancée de faire des recherches en fonction des valeurs des propriété (Je me répète). Par exemple un utilisateur pourra afficher tous les articles qui parlent des 'cartes vidéo' qui est une valeur de la propriété 'Matériel'

Maintenant as tu une idéé des autres propriétés à créer?

Voilà celles auxquelles je pense (avec des exemples de valeurs entre parenthèses) :
*Protocole (Wifi, Bluetooth, TCP...)
*Marque(Nvidia, Xerox, Ati, Asus...)
*Composant debian(Noyau...)

Enfin,
Quelles seront les grandes catégories de ton wiki (représentant ce que recherchent les visiteurs et aussi ce qu'ils peuvent rajouter) ?
Voici celles que j'ai trouvées en parcourant ton wiki.
*une Commande
*un paquet
*une documentation
*un Tutoriel
*des trucs et astuces

Les autres catégories pourront être fusionnées ou supprimées en fonction de l'avancement de la sémantisation.
Par exemple les 3 catégories
*Truc et Astuces pour les portables‏‎ (2 membres)
*Trucs et Astuces‏‎ (3 membres)
*Trucs et Astuces divers‏‎ (6 membres)

Pourront être fusionnées en une seule &quot;Trucs et Astuces‏‎&quot; puis l'utilisateur pourra affiner sa recherche par matériel (ordinateur portable).

Dis moi ce que t'en penses.
a+
Nicolas

----
Salut,
Écoute, c'est parfait pour moi. Je m'occupe des 2 option manquantes tout de suite.
Merci beaucoup pour le travail, ça ouvre des possibilités très intéressantes, et j'avoue que je ne m'étais pas beaucoup penché dessus (la modération sur forum.debian-fr.org occupe une grande partie de mon temps libre...
[[Utilisateur:Lol|Lol]] 25 avril 2012 à 15:49 (CEST)
----
Salut,
Pour ce qui est de la validation, il faut que je le fasse. Notre Wiki possède l'extension [http://www.mediawiki.org/wiki/Extension:FlaggedRevs Flagged Revisions]. Les modification non confirmées ne sont pas prises en compte sur la page principale des sujets. Ça ne pose pas de problème.

Encore merci pour le travail, c'est super!

[[Utilisateur:Lol|Lol]] 28 avril 2012 à 14:38 (CEST)

== Propriétés créées ok ==

Salut,
Je pense avoir créé assez de propriétés pour pouvoir ranger un nombre suffisant de mot clés.
Maintenant je vais pouvoir créer les modèles et formulaires sémantiques.

Il faudrait que tu me dises quelles sont les propriétés que devra (ou sera invité à) renseigner les contributeurs. Pour chacune des catégories ( Commande, paquet, documentation, Tutoriel, trucs et astuces)

Par exemple pour un tutoriel on pourrait mettre la distribution concernée (Propriété 'Version debian'), le niveau de difficulté (Propriété ' Niveau de difficulté').


a+

----
Salut,
Pas évident de me mettre à leur place.
Je suppose qu'on cherche des Tutos, Trucs et de la doc.
Au sujet de programmes ou matériels
Pour un serveur, une machine de bureau, un portable
Le niveau de difficulté n'entre pas à mon avis dans le choix de recherche, c'est après avoir eu les résultats que ça devait s'afficher.

Mais ce n'est qu'un avis... Il faut que j'ouvre un fil sur le forum pour avoir plus d'avis. Merci
[[Utilisateur:Lol|Lol]] 4 mai 2012 à 16:39 (CEST)

== Premier modèle et formulaire créé ==

Salut j'ai créé le Premier modèle et formulaire pour les trucs et astuce.
Pour y accéder il faut être dans une page appartenant à la [[:Catégorie:Trucs et Astuces]] et cliquez sur l'onglet 'Modifier avec formulaire en haut'.

Pour créer une nouvelle page 'Trucs et Astuces' il faut aller sur la page [[Formulaire:Trucs_et_Astuces]] et entrer le nom de la nouvelle page 'trucs et astuces'.

Je te conseille de mettre une phrase du style :
'Pour rajouter une page 'Trucs et astuces' cliquer [[Formulaire:Trucs_et_Astuces|ici]]' sur la page d'accueil afin que les contributeurs prennent l'habitude de renseigner leur page.

Dis moi si je dois supprimer des champs du formulaire.
a+

----
Salut, je regarde ça. Merci.

Voici ce a quoi j'ai pensé pour les propirétés:

Actuellement nous avons définis ces Propriétés:
#Commande
#Matériel
#Niveau de difficulté
#Paquet
#Protocole (Wifi, Bluetooth, TCP...)
#Marque(Nvidia, Xerox, Ati, Asus...)
#Composant debian(Noyau...)
#...

J'ai pensé à:
#Type (tuto, truc et astuce, documentation, etc.)
#Système (serveur, machine de bureau, laptop, tous, etc.)
#Branche (stable, testing, instable, experimental, toutes)
----
Avant d'aller plus loin, laisse moi un peu de temps pour vérifier/corriger/compléter le propriétés. Je te met ça ici ?
[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 6 mai 2012 à 08:12 (CEST)

-------------------------------------
Salut,
ok pour la propriété branche.
pour système c'est la meme que [[Property:Installé sur]] non ?
Pour type en fait ce sont les catégories.
Les catégories représentent ce que vont chercher les utilisateurs (tuto, truc et astuce, documentation, etc) les propriétés c'est ce dont ils vont se servir pour affiner leur recherche.

== ok dis moi  quand t'as fini de  vérifier/corriger/compléter les propriétés ==

a+

----
Me v'la... Désolé, j'ai 50000 trucs sur le feu.

Domaine:
#Matériels et drivers;
#Logiciels;
#Internet;
#Programmation;
#Sécurité;
#Multimédia;
#Réseau.
Nicolas : ok pour cette propriété

Action:
#Installation;
#Configuration;
#Sauvegarde;
#Nettoyage;
#Création;
#Gestion;
#Suppression.
Nicolas : ok pour cette propriété, j'ai mis aussi d'autre valeurs possible c ok ?

Versions:Nicolas : ok pour cette propriété
#Unstable;
#Testing;
#Stable;
#wheezy;
#Squeeze;
#Lenny;
#Etch;
#Sarge;
#Woody;
#Potato;
#Slim;
#Hamm.

Les propriétés:
#Commande;Nicolas : ok pour cette propriété
#Matériel;Nicolas : ok pour cette propriété
#Niveau de difficulté;Nicolas : ok pour cette propriété
#Paquet;Nicolas : ok pour cette propriété
#Protocole (Wifi, Bluetooth, TCP...);Nicolas : ok pour cette propriété
#Marque (Nvidia, Xerox, Ati, Asus...);Nicolas : ok pour cette propriété
#[[Composant debian::Noyau]] (Noyau, paquet...);Nicolas : ok pour cette propriété
#Branche : (stable, testing, instable, experimental, toutes).

J'avais ouvert un sujet sur le forum, mais ça n'a pas fait bouger les foules... :-(

J'espère ne pas t'avoir fait perdre trop de temps.
Merci

[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 14 mai 2012 à 14:19 (CEST)

== Nouvelles étapes dans la sémantisation ==

Salut
Voici les prochaines étapes de  la sémantisation du wiki :
#Peux tu me dire si le [[Form:Trucs et Astuces|formulaire]] des trucs et astuces est ok (tape &quot;Bac à Sable&quot; comme nouvelles page)
#Je compte utiliser ce même formulaire pour 2 autres catégories : Tutoriels et Documentation dis moi si c'est ok ou s'il necessitent d'autres champs
#IL y a actuellement 61 Catégories sur le wiki, il devrait en rester à la fin de notre travail plus que celles là :

*Aide‏‎ (4 membres)
*Aide sur l'aide‏‎ (1 membre)
*‏‎Arborescence de catégories‏‎ (2 membres)
*Modèle cadre‏‎ (1 membre)
*Modèles‏‎
*Trucs et Astuces‏‎ (11 membres)
*Tutoriel‏‎ 
*Documentation

A ta dispo pour en discuter.
a+

----
Salut, Voici mes remarques sur le formulaire:

1)

Domaine: 	Matériels et drivers Commande Logiciels Sécurité Multimédia Internet Programmation Réseau - J'ajouterais '''aide''' '''Documentation''' et '''Trucs et astuces''' , 
*Pour les 2 derniers ce sont des types de ressources que l'utilisateur va chercher ils seront donc sous la forme de catégorie.

L'utilisateur va rechercher d'abord par exemple de la documentation puis il choisira le domaine ''Réseau'' s'il veut une doc sur le réseau.
Pour aide tu parle de l'aide spécifique au wiki ou une aide pour Débian ?

Action(s) effectuée(s): 	Assignation Back-up Configuration Création Gestion Installation Nettoyage Redémarrage Remplissage Sauvegarde Suppression - J'enlèverais '''back-up''' (double emploi avec sauvegarde. '''Assignation''' je ne vois pas ce que ça veut dire. 
*Ok done

Version debian: 	Wheezy Squeeze Lenny Etch Sarge Woody Potato Slink Hamm - Il manque '''Sid'''  
*OK Done

Pour le reste OK. Une fois que je maîtriserais l'extension sémantique, je ferais les ajustements moi-même.

2) C'est bon pour T&amp;A et Documentation; D'ailleurs ça devrait convenir à tous, non ? 
*On met aussi tutoriel non ? Ce qui fait 3 catégories principales.

3) Je pense que Aide sur l'aide, arborescence et Modèles n'ont pas besoin d'être &quot;sémantisés&quot;.
* Je suis d'accord

== Prochaine étape catégorisation des pages ==

Pour lier un formulaire à une page il faut qu'elle appartienne à une des 3 catégories: Trucs et astuces, Documentation ou Tutoriel.

Pour ce faire on peut dire que toute page qui n'appartient pas aux catégories suivantes est un tutoriel :
*Trucs et Astuces‏‎ 
*Modèles‏‎
*Aide
*Documentation externe‏‎
*General‏‎

Ensuite il faut rajouter &lt;nowiki&gt; [[Catégorie:Tutoriel]] &lt;/nowiki&gt; à toute ces pages.

Je vois deux moyens :
Rajouter grâce à un Import avec un fichier csv (Je Peux m'en charger si j'ai la liste des catégories a inclure ou a exclure)
Remplacement de chaque nom de catégorie par le nom de la catégorie +  &lt;nowiki&gt; [[Catégorie:Tutoriel]] &lt;/nowiki&gt;

Dis moi ce que t en pense.

A l'issue de cette étape, la première grande partie de la sémantisation sera terminée et on pourra commencer à voir les avantages ;)
a+    31 mai 2012 à 15:50 (CEST)</text>
      <sha1>kqmi3n44skjkjco5u42c8dfaao52c9r</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4294</id>
      <parentid>4293</parentid>
      <timestamp>2012-05-31T14:41:17Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Prochaine étape catégorisation des pages */</comment>
      <text xml:space="preserve" bytes="11144">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] 23 avril 2012 à 06:50 (CEST)

== Extension &quot;wiki sémantique&quot; ==

Salut,
J'ai vu que tu avais fait pas mal de modif déjà, merci.
Faut-il que je valide au fur et à mesure, ou je le ferais en une seule fois ?

Comment ça fonctionne exactement cette extension ?
Merci.

[[Utilisateur:Lol|Lol]] 25 avril 2012 à 07:56 (CEST)

&lt;hr&gt;
Salut,
Oui j'ai sémantisé quelques mots.
Je pense qu'il est inutile que tu valide un à un chacun des articles que je modifie car je ne change pas leur sens.
Cette extension permet d'affecter des propriétés aux valeurs présentes dans tous les articles du wiki.
Pour ensuite faire des recherches en fonction de ces mêmes valeurs.
Pour être encore plus utile Semantic MediaWiki (SMW) nécessite [https://www.mediawiki.org/wiki/Extension:Semantic_Forms Semantic Forms], pour sémantiser grace a des formulaires et [https://www.mediawiki.org/wiki/Extension:Semantic_Drilldown Semantic DrillDown] pour faire des recherches multi-critères. Exemple de recherche mutli-critères sur [http://domotiki.fr/index.php/Sp%C3%A9cial:BrowseData/Logiciel domotiki.fr]

Concernant wiki debian
J'ai créé 4 propriétés
*Commande 
*Matériel
*Niveau de difficulté 
*Paquet 

Ca permettra quand la sémantisation sera plus avancée de faire des recherches en fonction des valeurs des propriété (Je me répète). Par exemple un utilisateur pourra afficher tous les articles qui parlent des 'cartes vidéo' qui est une valeur de la propriété 'Matériel'

Maintenant as tu une idéé des autres propriétés à créer?

Voilà celles auxquelles je pense (avec des exemples de valeurs entre parenthèses) :
*Protocole (Wifi, Bluetooth, TCP...)
*Marque(Nvidia, Xerox, Ati, Asus...)
*Composant debian(Noyau...)

Enfin,
Quelles seront les grandes catégories de ton wiki (représentant ce que recherchent les visiteurs et aussi ce qu'ils peuvent rajouter) ?
Voici celles que j'ai trouvées en parcourant ton wiki.
*une Commande
*un paquet
*une documentation
*un Tutoriel
*des trucs et astuces

Les autres catégories pourront être fusionnées ou supprimées en fonction de l'avancement de la sémantisation.
Par exemple les 3 catégories
*Truc et Astuces pour les portables‏‎ (2 membres)
*Trucs et Astuces‏‎ (3 membres)
*Trucs et Astuces divers‏‎ (6 membres)

Pourront être fusionnées en une seule &quot;Trucs et Astuces‏‎&quot; puis l'utilisateur pourra affiner sa recherche par matériel (ordinateur portable).

Dis moi ce que t'en penses.
a+
Nicolas

----
Salut,
Écoute, c'est parfait pour moi. Je m'occupe des 2 option manquantes tout de suite.
Merci beaucoup pour le travail, ça ouvre des possibilités très intéressantes, et j'avoue que je ne m'étais pas beaucoup penché dessus (la modération sur forum.debian-fr.org occupe une grande partie de mon temps libre...
[[Utilisateur:Lol|Lol]] 25 avril 2012 à 15:49 (CEST)
----
Salut,
Pour ce qui est de la validation, il faut que je le fasse. Notre Wiki possède l'extension [http://www.mediawiki.org/wiki/Extension:FlaggedRevs Flagged Revisions]. Les modification non confirmées ne sont pas prises en compte sur la page principale des sujets. Ça ne pose pas de problème.

Encore merci pour le travail, c'est super!

[[Utilisateur:Lol|Lol]] 28 avril 2012 à 14:38 (CEST)

== Propriétés créées ok ==

Salut,
Je pense avoir créé assez de propriétés pour pouvoir ranger un nombre suffisant de mot clés.
Maintenant je vais pouvoir créer les modèles et formulaires sémantiques.

Il faudrait que tu me dises quelles sont les propriétés que devra (ou sera invité à) renseigner les contributeurs. Pour chacune des catégories ( Commande, paquet, documentation, Tutoriel, trucs et astuces)

Par exemple pour un tutoriel on pourrait mettre la distribution concernée (Propriété 'Version debian'), le niveau de difficulté (Propriété ' Niveau de difficulté').


a+

----
Salut,
Pas évident de me mettre à leur place.
Je suppose qu'on cherche des Tutos, Trucs et de la doc.
Au sujet de programmes ou matériels
Pour un serveur, une machine de bureau, un portable
Le niveau de difficulté n'entre pas à mon avis dans le choix de recherche, c'est après avoir eu les résultats que ça devait s'afficher.

Mais ce n'est qu'un avis... Il faut que j'ouvre un fil sur le forum pour avoir plus d'avis. Merci
[[Utilisateur:Lol|Lol]] 4 mai 2012 à 16:39 (CEST)

== Premier modèle et formulaire créé ==

Salut j'ai créé le Premier modèle et formulaire pour les trucs et astuce.
Pour y accéder il faut être dans une page appartenant à la [[:Catégorie:Trucs et Astuces]] et cliquez sur l'onglet 'Modifier avec formulaire en haut'.

Pour créer une nouvelle page 'Trucs et Astuces' il faut aller sur la page [[Formulaire:Trucs_et_Astuces]] et entrer le nom de la nouvelle page 'trucs et astuces'.

Je te conseille de mettre une phrase du style :
'Pour rajouter une page 'Trucs et astuces' cliquer [[Formulaire:Trucs_et_Astuces|ici]]' sur la page d'accueil afin que les contributeurs prennent l'habitude de renseigner leur page.

Dis moi si je dois supprimer des champs du formulaire.
a+

----
Salut, je regarde ça. Merci.

Voici ce a quoi j'ai pensé pour les propirétés:

Actuellement nous avons définis ces Propriétés:
#Commande
#Matériel
#Niveau de difficulté
#Paquet
#Protocole (Wifi, Bluetooth, TCP...)
#Marque(Nvidia, Xerox, Ati, Asus...)
#Composant debian(Noyau...)
#...

J'ai pensé à:
#Type (tuto, truc et astuce, documentation, etc.)
#Système (serveur, machine de bureau, laptop, tous, etc.)
#Branche (stable, testing, instable, experimental, toutes)
----
Avant d'aller plus loin, laisse moi un peu de temps pour vérifier/corriger/compléter le propriétés. Je te met ça ici ?
[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 6 mai 2012 à 08:12 (CEST)

-------------------------------------
Salut,
ok pour la propriété branche.
pour système c'est la meme que [[Property:Installé sur]] non ?
Pour type en fait ce sont les catégories.
Les catégories représentent ce que vont chercher les utilisateurs (tuto, truc et astuce, documentation, etc) les propriétés c'est ce dont ils vont se servir pour affiner leur recherche.

== ok dis moi  quand t'as fini de  vérifier/corriger/compléter les propriétés ==

a+

----
Me v'la... Désolé, j'ai 50000 trucs sur le feu.

Domaine:
#Matériels et drivers;
#Logiciels;
#Internet;
#Programmation;
#Sécurité;
#Multimédia;
#Réseau.
Nicolas : ok pour cette propriété

Action:
#Installation;
#Configuration;
#Sauvegarde;
#Nettoyage;
#Création;
#Gestion;
#Suppression.
Nicolas : ok pour cette propriété, j'ai mis aussi d'autre valeurs possible c ok ?

Versions:Nicolas : ok pour cette propriété
#Unstable;
#Testing;
#Stable;
#wheezy;
#Squeeze;
#Lenny;
#Etch;
#Sarge;
#Woody;
#Potato;
#Slim;
#Hamm.

Les propriétés:
#Commande;Nicolas : ok pour cette propriété
#Matériel;Nicolas : ok pour cette propriété
#Niveau de difficulté;Nicolas : ok pour cette propriété
#Paquet;Nicolas : ok pour cette propriété
#Protocole (Wifi, Bluetooth, TCP...);Nicolas : ok pour cette propriété
#Marque (Nvidia, Xerox, Ati, Asus...);Nicolas : ok pour cette propriété
#[[Composant debian::Noyau]] (Noyau, paquet...);Nicolas : ok pour cette propriété
#Branche : (stable, testing, instable, experimental, toutes).

J'avais ouvert un sujet sur le forum, mais ça n'a pas fait bouger les foules... :-(

J'espère ne pas t'avoir fait perdre trop de temps.
Merci

[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 14 mai 2012 à 14:19 (CEST)

== Nouvelles étapes dans la sémantisation ==

Salut
Voici les prochaines étapes de  la sémantisation du wiki :
#Peux tu me dire si le [[Form:Trucs et Astuces|formulaire]] des trucs et astuces est ok (tape &quot;Bac à Sable&quot; comme nouvelles page)
#Je compte utiliser ce même formulaire pour 2 autres catégories : Tutoriels et Documentation dis moi si c'est ok ou s'il necessitent d'autres champs
#IL y a actuellement 61 Catégories sur le wiki, il devrait en rester à la fin de notre travail plus que celles là :

*Aide‏‎ (4 membres)
*Aide sur l'aide‏‎ (1 membre)
*‏‎Arborescence de catégories‏‎ (2 membres)
*Modèle cadre‏‎ (1 membre)
*Modèles‏‎
*Trucs et Astuces‏‎ (11 membres)
*Tutoriel‏‎ 
*Documentation

A ta dispo pour en discuter.
a+

----
Salut, Voici mes remarques sur le formulaire:

1)

Domaine: 	Matériels et drivers Commande Logiciels Sécurité Multimédia Internet Programmation Réseau - J'ajouterais '''aide''' '''Documentation''' et '''Trucs et astuces''' , 
*Pour les 2 derniers ce sont des types de ressources que l'utilisateur va chercher ils seront donc sous la forme de catégorie.

L'utilisateur va rechercher d'abord par exemple de la documentation puis il choisira le domaine ''Réseau'' s'il veut une doc sur le réseau.
Pour aide tu parle de l'aide spécifique au wiki ou une aide pour Débian ?

Action(s) effectuée(s): 	Assignation Back-up Configuration Création Gestion Installation Nettoyage Redémarrage Remplissage Sauvegarde Suppression - J'enlèverais '''back-up''' (double emploi avec sauvegarde. '''Assignation''' je ne vois pas ce que ça veut dire. 
*Ok done

Version debian: 	Wheezy Squeeze Lenny Etch Sarge Woody Potato Slink Hamm - Il manque '''Sid'''  
*OK Done

Pour le reste OK. Une fois que je maîtriserais l'extension sémantique, je ferais les ajustements moi-même.

2) C'est bon pour T&amp;A et Documentation; D'ailleurs ça devrait convenir à tous, non ? 
*On met aussi tutoriel non ? Ce qui fait 3 catégories principales.

3) Je pense que Aide sur l'aide, arborescence et Modèles n'ont pas besoin d'être &quot;sémantisés&quot;.
* Je suis d'accord

== Prochaine étape catégorisation des pages ==

Pour lier un formulaire à une page il faut qu'elle appartienne à une des 3 catégories: Trucs et astuces, Documentation ou Tutoriel.

Pour ce faire on peut dire que toute page qui n'appartient pas aux catégories suivantes est un tutoriel :
*Trucs et Astuces‏‎ 
*Modèles‏‎
*Aide
*Documentation externe‏‎
*General‏‎

Ensuite il faut rajouter &lt;nowiki&gt; [[Catégorie:Tutoriel]] &lt;/nowiki&gt; à toute ces pages.

Je vois deux moyens :
Rajouter grâce à un Import avec un fichier csv (Je Peux m'en charger si j'ai la liste des catégories a inclure ou a exclure)
Remplacement de chaque nom de catégorie par le nom de la catégorie +  &lt;nowiki&gt; [[Catégorie:Tutoriel]] &lt;/nowiki&gt;

Dis moi ce que t en pense.

A l'issue de cette étape, la première grande partie de la sémantisation sera terminée et on pourra commencer à voir les avantages ;)
a+    31 mai 2012 à 15:50 (CEST)

----
Salut Nicolas,
Il faut remplacer les catégories, un ajout ne suffirait pas ?
Je peux te faire une liste des catégories à inclure demain si tu le souhaite

[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 31 mai 2012 à 16:41 (CEST)</text>
      <sha1>4ya42jsgf9456r460ssqybrv8so59ny</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4300</id>
      <parentid>4294</parentid>
      <timestamp>2012-06-01T13:21:16Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>/* Prochaine étape catégorisation des pages */</comment>
      <text xml:space="preserve" bytes="11596">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] 23 avril 2012 à 06:50 (CEST)

== Extension &quot;wiki sémantique&quot; ==

Salut,
J'ai vu que tu avais fait pas mal de modif déjà, merci.
Faut-il que je valide au fur et à mesure, ou je le ferais en une seule fois ?

Comment ça fonctionne exactement cette extension ?
Merci.

[[Utilisateur:Lol|Lol]] 25 avril 2012 à 07:56 (CEST)

&lt;hr&gt;
Salut,
Oui j'ai sémantisé quelques mots.
Je pense qu'il est inutile que tu valide un à un chacun des articles que je modifie car je ne change pas leur sens.
Cette extension permet d'affecter des propriétés aux valeurs présentes dans tous les articles du wiki.
Pour ensuite faire des recherches en fonction de ces mêmes valeurs.
Pour être encore plus utile Semantic MediaWiki (SMW) nécessite [https://www.mediawiki.org/wiki/Extension:Semantic_Forms Semantic Forms], pour sémantiser grace a des formulaires et [https://www.mediawiki.org/wiki/Extension:Semantic_Drilldown Semantic DrillDown] pour faire des recherches multi-critères. Exemple de recherche mutli-critères sur [http://domotiki.fr/index.php/Sp%C3%A9cial:BrowseData/Logiciel domotiki.fr]

Concernant wiki debian
J'ai créé 4 propriétés
*Commande 
*Matériel
*Niveau de difficulté 
*Paquet 

Ca permettra quand la sémantisation sera plus avancée de faire des recherches en fonction des valeurs des propriété (Je me répète). Par exemple un utilisateur pourra afficher tous les articles qui parlent des 'cartes vidéo' qui est une valeur de la propriété 'Matériel'

Maintenant as tu une idéé des autres propriétés à créer?

Voilà celles auxquelles je pense (avec des exemples de valeurs entre parenthèses) :
*Protocole (Wifi, Bluetooth, TCP...)
*Marque(Nvidia, Xerox, Ati, Asus...)
*Composant debian(Noyau...)

Enfin,
Quelles seront les grandes catégories de ton wiki (représentant ce que recherchent les visiteurs et aussi ce qu'ils peuvent rajouter) ?
Voici celles que j'ai trouvées en parcourant ton wiki.
*une Commande
*un paquet
*une documentation
*un Tutoriel
*des trucs et astuces

Les autres catégories pourront être fusionnées ou supprimées en fonction de l'avancement de la sémantisation.
Par exemple les 3 catégories
*Truc et Astuces pour les portables‏‎ (2 membres)
*Trucs et Astuces‏‎ (3 membres)
*Trucs et Astuces divers‏‎ (6 membres)

Pourront être fusionnées en une seule &quot;Trucs et Astuces‏‎&quot; puis l'utilisateur pourra affiner sa recherche par matériel (ordinateur portable).

Dis moi ce que t'en penses.
a+
Nicolas

----
Salut,
Écoute, c'est parfait pour moi. Je m'occupe des 2 option manquantes tout de suite.
Merci beaucoup pour le travail, ça ouvre des possibilités très intéressantes, et j'avoue que je ne m'étais pas beaucoup penché dessus (la modération sur forum.debian-fr.org occupe une grande partie de mon temps libre...
[[Utilisateur:Lol|Lol]] 25 avril 2012 à 15:49 (CEST)
----
Salut,
Pour ce qui est de la validation, il faut que je le fasse. Notre Wiki possède l'extension [http://www.mediawiki.org/wiki/Extension:FlaggedRevs Flagged Revisions]. Les modification non confirmées ne sont pas prises en compte sur la page principale des sujets. Ça ne pose pas de problème.

Encore merci pour le travail, c'est super!

[[Utilisateur:Lol|Lol]] 28 avril 2012 à 14:38 (CEST)

== Propriétés créées ok ==

Salut,
Je pense avoir créé assez de propriétés pour pouvoir ranger un nombre suffisant de mot clés.
Maintenant je vais pouvoir créer les modèles et formulaires sémantiques.

Il faudrait que tu me dises quelles sont les propriétés que devra (ou sera invité à) renseigner les contributeurs. Pour chacune des catégories ( Commande, paquet, documentation, Tutoriel, trucs et astuces)

Par exemple pour un tutoriel on pourrait mettre la distribution concernée (Propriété 'Version debian'), le niveau de difficulté (Propriété ' Niveau de difficulté').


a+

----
Salut,
Pas évident de me mettre à leur place.
Je suppose qu'on cherche des Tutos, Trucs et de la doc.
Au sujet de programmes ou matériels
Pour un serveur, une machine de bureau, un portable
Le niveau de difficulté n'entre pas à mon avis dans le choix de recherche, c'est après avoir eu les résultats que ça devait s'afficher.

Mais ce n'est qu'un avis... Il faut que j'ouvre un fil sur le forum pour avoir plus d'avis. Merci
[[Utilisateur:Lol|Lol]] 4 mai 2012 à 16:39 (CEST)

== Premier modèle et formulaire créé ==

Salut j'ai créé le Premier modèle et formulaire pour les trucs et astuce.
Pour y accéder il faut être dans une page appartenant à la [[:Catégorie:Trucs et Astuces]] et cliquez sur l'onglet 'Modifier avec formulaire en haut'.

Pour créer une nouvelle page 'Trucs et Astuces' il faut aller sur la page [[Formulaire:Trucs_et_Astuces]] et entrer le nom de la nouvelle page 'trucs et astuces'.

Je te conseille de mettre une phrase du style :
'Pour rajouter une page 'Trucs et astuces' cliquer [[Formulaire:Trucs_et_Astuces|ici]]' sur la page d'accueil afin que les contributeurs prennent l'habitude de renseigner leur page.

Dis moi si je dois supprimer des champs du formulaire.
a+

----
Salut, je regarde ça. Merci.

Voici ce a quoi j'ai pensé pour les propirétés:

Actuellement nous avons définis ces Propriétés:
#Commande
#Matériel
#Niveau de difficulté
#Paquet
#Protocole (Wifi, Bluetooth, TCP...)
#Marque(Nvidia, Xerox, Ati, Asus...)
#Composant debian(Noyau...)
#...

J'ai pensé à:
#Type (tuto, truc et astuce, documentation, etc.)
#Système (serveur, machine de bureau, laptop, tous, etc.)
#Branche (stable, testing, instable, experimental, toutes)
----
Avant d'aller plus loin, laisse moi un peu de temps pour vérifier/corriger/compléter le propriétés. Je te met ça ici ?
[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 6 mai 2012 à 08:12 (CEST)

-------------------------------------
Salut,
ok pour la propriété branche.
pour système c'est la meme que [[Property:Installé sur]] non ?
Pour type en fait ce sont les catégories.
Les catégories représentent ce que vont chercher les utilisateurs (tuto, truc et astuce, documentation, etc) les propriétés c'est ce dont ils vont se servir pour affiner leur recherche.

== ok dis moi  quand t'as fini de  vérifier/corriger/compléter les propriétés ==

a+

----
Me v'la... Désolé, j'ai 50000 trucs sur le feu.

Domaine:
#Matériels et drivers;
#Logiciels;
#Internet;
#Programmation;
#Sécurité;
#Multimédia;
#Réseau.
Nicolas : ok pour cette propriété

Action:
#Installation;
#Configuration;
#Sauvegarde;
#Nettoyage;
#Création;
#Gestion;
#Suppression.
Nicolas : ok pour cette propriété, j'ai mis aussi d'autre valeurs possible c ok ?

Versions:Nicolas : ok pour cette propriété
#Unstable;
#Testing;
#Stable;
#wheezy;
#Squeeze;
#Lenny;
#Etch;
#Sarge;
#Woody;
#Potato;
#Slim;
#Hamm.

Les propriétés:
#Commande;Nicolas : ok pour cette propriété
#Matériel;Nicolas : ok pour cette propriété
#Niveau de difficulté;Nicolas : ok pour cette propriété
#Paquet;Nicolas : ok pour cette propriété
#Protocole (Wifi, Bluetooth, TCP...);Nicolas : ok pour cette propriété
#Marque (Nvidia, Xerox, Ati, Asus...);Nicolas : ok pour cette propriété
#[[Composant debian::Noyau]] (Noyau, paquet...);Nicolas : ok pour cette propriété
#Branche : (stable, testing, instable, experimental, toutes).

J'avais ouvert un sujet sur le forum, mais ça n'a pas fait bouger les foules... :-(

J'espère ne pas t'avoir fait perdre trop de temps.
Merci

[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 14 mai 2012 à 14:19 (CEST)

== Nouvelles étapes dans la sémantisation ==

Salut
Voici les prochaines étapes de  la sémantisation du wiki :
#Peux tu me dire si le [[Form:Trucs et Astuces|formulaire]] des trucs et astuces est ok (tape &quot;Bac à Sable&quot; comme nouvelles page)
#Je compte utiliser ce même formulaire pour 2 autres catégories : Tutoriels et Documentation dis moi si c'est ok ou s'il necessitent d'autres champs
#IL y a actuellement 61 Catégories sur le wiki, il devrait en rester à la fin de notre travail plus que celles là :

*Aide‏‎ (4 membres)
*Aide sur l'aide‏‎ (1 membre)
*‏‎Arborescence de catégories‏‎ (2 membres)
*Modèle cadre‏‎ (1 membre)
*Modèles‏‎
*Trucs et Astuces‏‎ (11 membres)
*Tutoriel‏‎ 
*Documentation

A ta dispo pour en discuter.
a+

----
Salut, Voici mes remarques sur le formulaire:

1)

Domaine: 	Matériels et drivers Commande Logiciels Sécurité Multimédia Internet Programmation Réseau - J'ajouterais '''aide''' '''Documentation''' et '''Trucs et astuces''' , 
*Pour les 2 derniers ce sont des types de ressources que l'utilisateur va chercher ils seront donc sous la forme de catégorie.

L'utilisateur va rechercher d'abord par exemple de la documentation puis il choisira le domaine ''Réseau'' s'il veut une doc sur le réseau.
Pour aide tu parle de l'aide spécifique au wiki ou une aide pour Débian ?

Action(s) effectuée(s): 	Assignation Back-up Configuration Création Gestion Installation Nettoyage Redémarrage Remplissage Sauvegarde Suppression - J'enlèverais '''back-up''' (double emploi avec sauvegarde. '''Assignation''' je ne vois pas ce que ça veut dire. 
*Ok done

Version debian: 	Wheezy Squeeze Lenny Etch Sarge Woody Potato Slink Hamm - Il manque '''Sid'''  
*OK Done

Pour le reste OK. Une fois que je maîtriserais l'extension sémantique, je ferais les ajustements moi-même.

2) C'est bon pour T&amp;A et Documentation; D'ailleurs ça devrait convenir à tous, non ? 
*On met aussi tutoriel non ? Ce qui fait 3 catégories principales.

3) Je pense que Aide sur l'aide, arborescence et Modèles n'ont pas besoin d'être &quot;sémantisés&quot;.
* Je suis d'accord

== Prochaine étape catégorisation des pages ==

Pour lier un formulaire à une page il faut qu'elle appartienne à une des 3 catégories: Trucs et astuces, Documentation ou Tutoriel.

Pour ce faire on peut dire que toute page qui n'appartient pas aux catégories suivantes est un tutoriel :
*Trucs et Astuces‏‎ 
*Modèles‏‎
*Aide
*Documentation externe‏‎
*General‏‎

Ensuite il faut rajouter &lt;nowiki&gt; [[Catégorie:Tutoriel]] &lt;/nowiki&gt; à toute ces pages.

Je vois deux moyens :
Rajouter grâce à un Import avec un fichier csv (Je Peux m'en charger si j'ai la liste des catégories a inclure ou a exclure)
Remplacement de chaque nom de catégorie par le nom de la catégorie +  &lt;nowiki&gt; [[Catégorie:Tutoriel]] &lt;/nowiki&gt;

Dis moi ce que t en pense.

A l'issue de cette étape, la première grande partie de la sémantisation sera terminée et on pourra commencer à voir les avantages ;)
a+    31 mai 2012 à 15:50 (CEST)

----
Salut Nicolas,
Il faut remplacer les catégories, un ajout ne suffirait pas ?
Je peux te faire une liste des catégories à inclure demain si tu le souhaite

[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 31 mai 2012 à 16:41 (CEST)

----

Salut,

Oui un rajout suffit pour l'instant, par la suite on pourra nettoyer en remplaçant les catégories par des valeurs sémantiques.

Exemple 
&lt;nowiki&gt; Remplacer [[Catégorie:Serveurs]] par [[Installé sur::Serveur]] &lt;/nowiki&gt;

Sinon oui je veux bien la liste de toutes les catégories des pages tutoriels
a+

[[Utilisateur:Nicolas NALLET|Nicolas NALLET]] ([[Discussion utilisateur:Nicolas NALLET|discussion]])

1 juin 2012 à 15:21 (CEST)</text>
      <sha1>lsnw0zhiy2b8wt9vjzi2wrvj68t1vnt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4301</id>
      <parentid>4300</parentid>
      <timestamp>2012-06-02T05:32:07Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="12020">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] 23 avril 2012 à 06:50 (CEST)

== Extension &quot;wiki sémantique&quot; ==

Salut,
J'ai vu que tu avais fait pas mal de modif déjà, merci.
Faut-il que je valide au fur et à mesure, ou je le ferais en une seule fois ?

Comment ça fonctionne exactement cette extension ?
Merci.

[[Utilisateur:Lol|Lol]] 25 avril 2012 à 07:56 (CEST)

&lt;hr&gt;
Salut,
Oui j'ai sémantisé quelques mots.
Je pense qu'il est inutile que tu valide un à un chacun des articles que je modifie car je ne change pas leur sens.
Cette extension permet d'affecter des propriétés aux valeurs présentes dans tous les articles du wiki.
Pour ensuite faire des recherches en fonction de ces mêmes valeurs.
Pour être encore plus utile Semantic MediaWiki (SMW) nécessite [https://www.mediawiki.org/wiki/Extension:Semantic_Forms Semantic Forms], pour sémantiser grace a des formulaires et [https://www.mediawiki.org/wiki/Extension:Semantic_Drilldown Semantic DrillDown] pour faire des recherches multi-critères. Exemple de recherche mutli-critères sur [http://domotiki.fr/index.php/Sp%C3%A9cial:BrowseData/Logiciel domotiki.fr]

Concernant wiki debian
J'ai créé 4 propriétés
*Commande 
*Matériel
*Niveau de difficulté 
*Paquet 

Ca permettra quand la sémantisation sera plus avancée de faire des recherches en fonction des valeurs des propriété (Je me répète). Par exemple un utilisateur pourra afficher tous les articles qui parlent des 'cartes vidéo' qui est une valeur de la propriété 'Matériel'

Maintenant as tu une idéé des autres propriétés à créer?

Voilà celles auxquelles je pense (avec des exemples de valeurs entre parenthèses) :
*Protocole (Wifi, Bluetooth, TCP...)
*Marque(Nvidia, Xerox, Ati, Asus...)
*Composant debian(Noyau...)

Enfin,
Quelles seront les grandes catégories de ton wiki (représentant ce que recherchent les visiteurs et aussi ce qu'ils peuvent rajouter) ?
Voici celles que j'ai trouvées en parcourant ton wiki.
*une Commande
*un paquet
*une documentation
*un Tutoriel
*des trucs et astuces

Les autres catégories pourront être fusionnées ou supprimées en fonction de l'avancement de la sémantisation.
Par exemple les 3 catégories
*Truc et Astuces pour les portables‏‎ (2 membres)
*Trucs et Astuces‏‎ (3 membres)
*Trucs et Astuces divers‏‎ (6 membres)

Pourront être fusionnées en une seule &quot;Trucs et Astuces‏‎&quot; puis l'utilisateur pourra affiner sa recherche par matériel (ordinateur portable).

Dis moi ce que t'en penses.
a+
Nicolas

----
Salut,
Écoute, c'est parfait pour moi. Je m'occupe des 2 option manquantes tout de suite.
Merci beaucoup pour le travail, ça ouvre des possibilités très intéressantes, et j'avoue que je ne m'étais pas beaucoup penché dessus (la modération sur forum.debian-fr.org occupe une grande partie de mon temps libre...
[[Utilisateur:Lol|Lol]] 25 avril 2012 à 15:49 (CEST)
----
Salut,
Pour ce qui est de la validation, il faut que je le fasse. Notre Wiki possède l'extension [http://www.mediawiki.org/wiki/Extension:FlaggedRevs Flagged Revisions]. Les modification non confirmées ne sont pas prises en compte sur la page principale des sujets. Ça ne pose pas de problème.

Encore merci pour le travail, c'est super!

[[Utilisateur:Lol|Lol]] 28 avril 2012 à 14:38 (CEST)

== Propriétés créées ok ==

Salut,
Je pense avoir créé assez de propriétés pour pouvoir ranger un nombre suffisant de mot clés.
Maintenant je vais pouvoir créer les modèles et formulaires sémantiques.

Il faudrait que tu me dises quelles sont les propriétés que devra (ou sera invité à) renseigner les contributeurs. Pour chacune des catégories ( Commande, paquet, documentation, Tutoriel, trucs et astuces)

Par exemple pour un tutoriel on pourrait mettre la distribution concernée (Propriété 'Version debian'), le niveau de difficulté (Propriété ' Niveau de difficulté').


a+

----
Salut,
Pas évident de me mettre à leur place.
Je suppose qu'on cherche des Tutos, Trucs et de la doc.
Au sujet de programmes ou matériels
Pour un serveur, une machine de bureau, un portable
Le niveau de difficulté n'entre pas à mon avis dans le choix de recherche, c'est après avoir eu les résultats que ça devait s'afficher.

Mais ce n'est qu'un avis... Il faut que j'ouvre un fil sur le forum pour avoir plus d'avis. Merci
[[Utilisateur:Lol|Lol]] 4 mai 2012 à 16:39 (CEST)

== Premier modèle et formulaire créé ==

Salut j'ai créé le Premier modèle et formulaire pour les trucs et astuce.
Pour y accéder il faut être dans une page appartenant à la [[:Catégorie:Trucs et Astuces]] et cliquez sur l'onglet 'Modifier avec formulaire en haut'.

Pour créer une nouvelle page 'Trucs et Astuces' il faut aller sur la page [[Formulaire:Trucs_et_Astuces]] et entrer le nom de la nouvelle page 'trucs et astuces'.

Je te conseille de mettre une phrase du style :
'Pour rajouter une page 'Trucs et astuces' cliquer [[Formulaire:Trucs_et_Astuces|ici]]' sur la page d'accueil afin que les contributeurs prennent l'habitude de renseigner leur page.

Dis moi si je dois supprimer des champs du formulaire.
a+

----
Salut, je regarde ça. Merci.

Voici ce a quoi j'ai pensé pour les propirétés:

Actuellement nous avons définis ces Propriétés:
#Commande
#Matériel
#Niveau de difficulté
#Paquet
#Protocole (Wifi, Bluetooth, TCP...)
#Marque(Nvidia, Xerox, Ati, Asus...)
#Composant debian(Noyau...)
#...

J'ai pensé à:
#Type (tuto, truc et astuce, documentation, etc.)
#Système (serveur, machine de bureau, laptop, tous, etc.)
#Branche (stable, testing, instable, experimental, toutes)
----
Avant d'aller plus loin, laisse moi un peu de temps pour vérifier/corriger/compléter le propriétés. Je te met ça ici ?
[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 6 mai 2012 à 08:12 (CEST)

-------------------------------------
Salut,
ok pour la propriété branche.
pour système c'est la meme que [[Property:Installé sur]] non ?
Pour type en fait ce sont les catégories.
Les catégories représentent ce que vont chercher les utilisateurs (tuto, truc et astuce, documentation, etc) les propriétés c'est ce dont ils vont se servir pour affiner leur recherche.

== ok dis moi  quand t'as fini de  vérifier/corriger/compléter les propriétés ==

a+

----
Me v'la... Désolé, j'ai 50000 trucs sur le feu.

Domaine:
#Matériels et drivers;
#Logiciels;
#Internet;
#Programmation;
#Sécurité;
#Multimédia;
#Réseau.
Nicolas : ok pour cette propriété

Action:
#Installation;
#Configuration;
#Sauvegarde;
#Nettoyage;
#Création;
#Gestion;
#Suppression.
Nicolas : ok pour cette propriété, j'ai mis aussi d'autre valeurs possible c ok ?

Versions:Nicolas : ok pour cette propriété
#Unstable;
#Testing;
#Stable;
#wheezy;
#Squeeze;
#Lenny;
#Etch;
#Sarge;
#Woody;
#Potato;
#Slim;
#Hamm.

Les propriétés:
#Commande;Nicolas : ok pour cette propriété
#Matériel;Nicolas : ok pour cette propriété
#Niveau de difficulté;Nicolas : ok pour cette propriété
#Paquet;Nicolas : ok pour cette propriété
#Protocole (Wifi, Bluetooth, TCP...);Nicolas : ok pour cette propriété
#Marque (Nvidia, Xerox, Ati, Asus...);Nicolas : ok pour cette propriété
#[[Composant debian::Noyau]] (Noyau, paquet...);Nicolas : ok pour cette propriété
#Branche : (stable, testing, instable, experimental, toutes).

J'avais ouvert un sujet sur le forum, mais ça n'a pas fait bouger les foules... :-(

J'espère ne pas t'avoir fait perdre trop de temps.
Merci

[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 14 mai 2012 à 14:19 (CEST)

== Nouvelles étapes dans la sémantisation ==

Salut
Voici les prochaines étapes de  la sémantisation du wiki :
#Peux tu me dire si le [[Form:Trucs et Astuces|formulaire]] des trucs et astuces est ok (tape &quot;Bac à Sable&quot; comme nouvelles page)
#Je compte utiliser ce même formulaire pour 2 autres catégories : Tutoriels et Documentation dis moi si c'est ok ou s'il necessitent d'autres champs
#IL y a actuellement 61 Catégories sur le wiki, il devrait en rester à la fin de notre travail plus que celles là :

*Aide‏‎ (4 membres)
*Aide sur l'aide‏‎ (1 membre)
*‏‎Arborescence de catégories‏‎ (2 membres)
*Modèle cadre‏‎ (1 membre)
*Modèles‏‎
*Trucs et Astuces‏‎ (11 membres)
*Tutoriel‏‎ 
*Documentation

A ta dispo pour en discuter.
a+

----
Salut, Voici mes remarques sur le formulaire:

1)

Domaine: 	Matériels et drivers Commande Logiciels Sécurité Multimédia Internet Programmation Réseau - J'ajouterais '''aide''' '''Documentation''' et '''Trucs et astuces''' , 
*Pour les 2 derniers ce sont des types de ressources que l'utilisateur va chercher ils seront donc sous la forme de catégorie.

L'utilisateur va rechercher d'abord par exemple de la documentation puis il choisira le domaine ''Réseau'' s'il veut une doc sur le réseau.
Pour aide tu parle de l'aide spécifique au wiki ou une aide pour Débian ?

Action(s) effectuée(s): 	Assignation Back-up Configuration Création Gestion Installation Nettoyage Redémarrage Remplissage Sauvegarde Suppression - J'enlèverais '''back-up''' (double emploi avec sauvegarde. '''Assignation''' je ne vois pas ce que ça veut dire. 
*Ok done

Version debian: 	Wheezy Squeeze Lenny Etch Sarge Woody Potato Slink Hamm - Il manque '''Sid'''  
*OK Done

Pour le reste OK. Une fois que je maîtriserais l'extension sémantique, je ferais les ajustements moi-même.

2) C'est bon pour T&amp;A et Documentation; D'ailleurs ça devrait convenir à tous, non ? 
*On met aussi tutoriel non ? Ce qui fait 3 catégories principales.

3) Je pense que Aide sur l'aide, arborescence et Modèles n'ont pas besoin d'être &quot;sémantisés&quot;.
* Je suis d'accord

== Prochaine étape catégorisation des pages ==

Pour lier un formulaire à une page il faut qu'elle appartienne à une des 3 catégories: Trucs et astuces, Documentation ou Tutoriel.

Pour ce faire on peut dire que toute page qui n'appartient pas aux catégories suivantes est un tutoriel :
*Trucs et Astuces‏‎ 
*Modèles‏‎
*Aide
*Documentation externe‏‎
*General‏‎

Ensuite il faut rajouter &lt;nowiki&gt; [[Catégorie:Tutoriel]] &lt;/nowiki&gt; à toute ces pages.

Je vois deux moyens :
Rajouter grâce à un Import avec un fichier csv (Je Peux m'en charger si j'ai la liste des catégories a inclure ou a exclure)
Remplacement de chaque nom de catégorie par le nom de la catégorie +  &lt;nowiki&gt; [[Catégorie:Tutoriel]] &lt;/nowiki&gt;

Dis moi ce que t en pense.

A l'issue de cette étape, la première grande partie de la sémantisation sera terminée et on pourra commencer à voir les avantages ;)
a+    31 mai 2012 à 15:50 (CEST)

----
Salut Nicolas,
Il faut remplacer les catégories, un ajout ne suffirait pas ?
Je peux te faire une liste des catégories à inclure demain si tu le souhaite

[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 31 mai 2012 à 16:41 (CEST)

----

Salut,

Oui un rajout suffit pour l'instant, par la suite on pourra nettoyer en remplaçant les catégories par des valeurs sémantiques.

Exemple 
&lt;nowiki&gt; Remplacer [[Catégorie:Serveurs]] par [[Installé sur::Serveur]] &lt;/nowiki&gt;

Sinon oui je veux bien la liste de toutes les catégories des pages tutoriels
a+

[[Utilisateur:Nicolas NALLET|Nicolas NALLET]] ([[Discussion utilisateur:Nicolas NALLET|discussion]])

1 juin 2012 à 15:21 (CEST)

----

Salut,
J'ai voulu commencer, et je me heurte déjà à un souci... Certaines catégories contiennent un peu de tout:

[http://www.isalo.org/wiki.debian-fr/index.php?title=Cat%C3%A9gorie:Apt Catégorie apt]
Cette catégorie contient 4 pages: Deux trucs et actuces, un tutoriel et une page de documentation...

Ton avis ?

[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 2 juin 2012 à 07:32 (CEST)</text>
      <sha1>qw2u6mv0nq0iamfg4qpzt3z9mnevghn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4320</id>
      <parentid>4301</parentid>
      <timestamp>2012-06-03T09:50:03Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>/* Prochaine étape catégorisation des pages */</comment>
      <text xml:space="preserve" bytes="12521">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] 23 avril 2012 à 06:50 (CEST)

== Extension &quot;wiki sémantique&quot; ==

Salut,
J'ai vu que tu avais fait pas mal de modif déjà, merci.
Faut-il que je valide au fur et à mesure, ou je le ferais en une seule fois ?

Comment ça fonctionne exactement cette extension ?
Merci.

[[Utilisateur:Lol|Lol]] 25 avril 2012 à 07:56 (CEST)

&lt;hr&gt;
Salut,
Oui j'ai sémantisé quelques mots.
Je pense qu'il est inutile que tu valide un à un chacun des articles que je modifie car je ne change pas leur sens.
Cette extension permet d'affecter des propriétés aux valeurs présentes dans tous les articles du wiki.
Pour ensuite faire des recherches en fonction de ces mêmes valeurs.
Pour être encore plus utile Semantic MediaWiki (SMW) nécessite [https://www.mediawiki.org/wiki/Extension:Semantic_Forms Semantic Forms], pour sémantiser grace a des formulaires et [https://www.mediawiki.org/wiki/Extension:Semantic_Drilldown Semantic DrillDown] pour faire des recherches multi-critères. Exemple de recherche mutli-critères sur [http://domotiki.fr/index.php/Sp%C3%A9cial:BrowseData/Logiciel domotiki.fr]

Concernant wiki debian
J'ai créé 4 propriétés
*Commande 
*Matériel
*Niveau de difficulté 
*Paquet 

Ca permettra quand la sémantisation sera plus avancée de faire des recherches en fonction des valeurs des propriété (Je me répète). Par exemple un utilisateur pourra afficher tous les articles qui parlent des 'cartes vidéo' qui est une valeur de la propriété 'Matériel'

Maintenant as tu une idéé des autres propriétés à créer?

Voilà celles auxquelles je pense (avec des exemples de valeurs entre parenthèses) :
*Protocole (Wifi, Bluetooth, TCP...)
*Marque(Nvidia, Xerox, Ati, Asus...)
*Composant debian(Noyau...)

Enfin,
Quelles seront les grandes catégories de ton wiki (représentant ce que recherchent les visiteurs et aussi ce qu'ils peuvent rajouter) ?
Voici celles que j'ai trouvées en parcourant ton wiki.
*une Commande
*un paquet
*une documentation
*un Tutoriel
*des trucs et astuces

Les autres catégories pourront être fusionnées ou supprimées en fonction de l'avancement de la sémantisation.
Par exemple les 3 catégories
*Truc et Astuces pour les portables‏‎ (2 membres)
*Trucs et Astuces‏‎ (3 membres)
*Trucs et Astuces divers‏‎ (6 membres)

Pourront être fusionnées en une seule &quot;Trucs et Astuces‏‎&quot; puis l'utilisateur pourra affiner sa recherche par matériel (ordinateur portable).

Dis moi ce que t'en penses.
a+
Nicolas

----
Salut,
Écoute, c'est parfait pour moi. Je m'occupe des 2 option manquantes tout de suite.
Merci beaucoup pour le travail, ça ouvre des possibilités très intéressantes, et j'avoue que je ne m'étais pas beaucoup penché dessus (la modération sur forum.debian-fr.org occupe une grande partie de mon temps libre...
[[Utilisateur:Lol|Lol]] 25 avril 2012 à 15:49 (CEST)
----
Salut,
Pour ce qui est de la validation, il faut que je le fasse. Notre Wiki possède l'extension [http://www.mediawiki.org/wiki/Extension:FlaggedRevs Flagged Revisions]. Les modification non confirmées ne sont pas prises en compte sur la page principale des sujets. Ça ne pose pas de problème.

Encore merci pour le travail, c'est super!

[[Utilisateur:Lol|Lol]] 28 avril 2012 à 14:38 (CEST)

== Propriétés créées ok ==

Salut,
Je pense avoir créé assez de propriétés pour pouvoir ranger un nombre suffisant de mot clés.
Maintenant je vais pouvoir créer les modèles et formulaires sémantiques.

Il faudrait que tu me dises quelles sont les propriétés que devra (ou sera invité à) renseigner les contributeurs. Pour chacune des catégories ( Commande, paquet, documentation, Tutoriel, trucs et astuces)

Par exemple pour un tutoriel on pourrait mettre la distribution concernée (Propriété 'Version debian'), le niveau de difficulté (Propriété ' Niveau de difficulté').


a+

----
Salut,
Pas évident de me mettre à leur place.
Je suppose qu'on cherche des Tutos, Trucs et de la doc.
Au sujet de programmes ou matériels
Pour un serveur, une machine de bureau, un portable
Le niveau de difficulté n'entre pas à mon avis dans le choix de recherche, c'est après avoir eu les résultats que ça devait s'afficher.

Mais ce n'est qu'un avis... Il faut que j'ouvre un fil sur le forum pour avoir plus d'avis. Merci
[[Utilisateur:Lol|Lol]] 4 mai 2012 à 16:39 (CEST)

== Premier modèle et formulaire créé ==

Salut j'ai créé le Premier modèle et formulaire pour les trucs et astuce.
Pour y accéder il faut être dans une page appartenant à la [[:Catégorie:Trucs et Astuces]] et cliquez sur l'onglet 'Modifier avec formulaire en haut'.

Pour créer une nouvelle page 'Trucs et Astuces' il faut aller sur la page [[Formulaire:Trucs_et_Astuces]] et entrer le nom de la nouvelle page 'trucs et astuces'.

Je te conseille de mettre une phrase du style :
'Pour rajouter une page 'Trucs et astuces' cliquer [[Formulaire:Trucs_et_Astuces|ici]]' sur la page d'accueil afin que les contributeurs prennent l'habitude de renseigner leur page.

Dis moi si je dois supprimer des champs du formulaire.
a+

----
Salut, je regarde ça. Merci.

Voici ce a quoi j'ai pensé pour les propirétés:

Actuellement nous avons définis ces Propriétés:
#Commande
#Matériel
#Niveau de difficulté
#Paquet
#Protocole (Wifi, Bluetooth, TCP...)
#Marque(Nvidia, Xerox, Ati, Asus...)
#Composant debian(Noyau...)
#...

J'ai pensé à:
#Type (tuto, truc et astuce, documentation, etc.)
#Système (serveur, machine de bureau, laptop, tous, etc.)
#Branche (stable, testing, instable, experimental, toutes)
----
Avant d'aller plus loin, laisse moi un peu de temps pour vérifier/corriger/compléter le propriétés. Je te met ça ici ?
[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 6 mai 2012 à 08:12 (CEST)

-------------------------------------
Salut,
ok pour la propriété branche.
pour système c'est la meme que [[Property:Installé sur]] non ?
Pour type en fait ce sont les catégories.
Les catégories représentent ce que vont chercher les utilisateurs (tuto, truc et astuce, documentation, etc) les propriétés c'est ce dont ils vont se servir pour affiner leur recherche.

== ok dis moi  quand t'as fini de  vérifier/corriger/compléter les propriétés ==

a+

----
Me v'la... Désolé, j'ai 50000 trucs sur le feu.

Domaine:
#Matériels et drivers;
#Logiciels;
#Internet;
#Programmation;
#Sécurité;
#Multimédia;
#Réseau.
Nicolas : ok pour cette propriété

Action:
#Installation;
#Configuration;
#Sauvegarde;
#Nettoyage;
#Création;
#Gestion;
#Suppression.
Nicolas : ok pour cette propriété, j'ai mis aussi d'autre valeurs possible c ok ?

Versions:Nicolas : ok pour cette propriété
#Unstable;
#Testing;
#Stable;
#wheezy;
#Squeeze;
#Lenny;
#Etch;
#Sarge;
#Woody;
#Potato;
#Slim;
#Hamm.

Les propriétés:
#Commande;Nicolas : ok pour cette propriété
#Matériel;Nicolas : ok pour cette propriété
#Niveau de difficulté;Nicolas : ok pour cette propriété
#Paquet;Nicolas : ok pour cette propriété
#Protocole (Wifi, Bluetooth, TCP...);Nicolas : ok pour cette propriété
#Marque (Nvidia, Xerox, Ati, Asus...);Nicolas : ok pour cette propriété
#[[Composant debian::Noyau]] (Noyau, paquet...);Nicolas : ok pour cette propriété
#Branche : (stable, testing, instable, experimental, toutes).

J'avais ouvert un sujet sur le forum, mais ça n'a pas fait bouger les foules... :-(

J'espère ne pas t'avoir fait perdre trop de temps.
Merci

[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 14 mai 2012 à 14:19 (CEST)

== Nouvelles étapes dans la sémantisation ==

Salut
Voici les prochaines étapes de  la sémantisation du wiki :
#Peux tu me dire si le [[Form:Trucs et Astuces|formulaire]] des trucs et astuces est ok (tape &quot;Bac à Sable&quot; comme nouvelles page)
#Je compte utiliser ce même formulaire pour 2 autres catégories : Tutoriels et Documentation dis moi si c'est ok ou s'il necessitent d'autres champs
#IL y a actuellement 61 Catégories sur le wiki, il devrait en rester à la fin de notre travail plus que celles là :

*Aide‏‎ (4 membres)
*Aide sur l'aide‏‎ (1 membre)
*‏‎Arborescence de catégories‏‎ (2 membres)
*Modèle cadre‏‎ (1 membre)
*Modèles‏‎
*Trucs et Astuces‏‎ (11 membres)
*Tutoriel‏‎ 
*Documentation

A ta dispo pour en discuter.
a+

----
Salut, Voici mes remarques sur le formulaire:

1)

Domaine: 	Matériels et drivers Commande Logiciels Sécurité Multimédia Internet Programmation Réseau - J'ajouterais '''aide''' '''Documentation''' et '''Trucs et astuces''' , 
*Pour les 2 derniers ce sont des types de ressources que l'utilisateur va chercher ils seront donc sous la forme de catégorie.

L'utilisateur va rechercher d'abord par exemple de la documentation puis il choisira le domaine ''Réseau'' s'il veut une doc sur le réseau.
Pour aide tu parle de l'aide spécifique au wiki ou une aide pour Débian ?

Action(s) effectuée(s): 	Assignation Back-up Configuration Création Gestion Installation Nettoyage Redémarrage Remplissage Sauvegarde Suppression - J'enlèverais '''back-up''' (double emploi avec sauvegarde. '''Assignation''' je ne vois pas ce que ça veut dire. 
*Ok done

Version debian: 	Wheezy Squeeze Lenny Etch Sarge Woody Potato Slink Hamm - Il manque '''Sid'''  
*OK Done

Pour le reste OK. Une fois que je maîtriserais l'extension sémantique, je ferais les ajustements moi-même.

2) C'est bon pour T&amp;A et Documentation; D'ailleurs ça devrait convenir à tous, non ? 
*On met aussi tutoriel non ? Ce qui fait 3 catégories principales.

3) Je pense que Aide sur l'aide, arborescence et Modèles n'ont pas besoin d'être &quot;sémantisés&quot;.
* Je suis d'accord

== Prochaine étape catégorisation des pages ==

Pour lier un formulaire à une page il faut qu'elle appartienne à une des 3 catégories: Trucs et astuces, Documentation ou Tutoriel.

Pour ce faire on peut dire que toute page qui n'appartient pas aux catégories suivantes est un tutoriel :
*Trucs et Astuces‏‎ 
*Modèles‏‎
*Aide
*Documentation externe‏‎
*General‏‎

Ensuite il faut rajouter &lt;nowiki&gt; [[Catégorie:Tutoriel]] &lt;/nowiki&gt; à toute ces pages.

Je vois deux moyens :
Rajouter grâce à un Import avec un fichier csv (Je Peux m'en charger si j'ai la liste des catégories a inclure ou a exclure)
Remplacement de chaque nom de catégorie par le nom de la catégorie +  &lt;nowiki&gt; [[Catégorie:Tutoriel]] &lt;/nowiki&gt;

Dis moi ce que t en pense.

A l'issue de cette étape, la première grande partie de la sémantisation sera terminée et on pourra commencer à voir les avantages ;)
a+    31 mai 2012 à 15:50 (CEST)

----
Salut Nicolas,
Il faut remplacer les catégories, un ajout ne suffirait pas ?
Je peux te faire une liste des catégories à inclure demain si tu le souhaite

[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 31 mai 2012 à 16:41 (CEST)

----

Salut,

Oui un rajout suffit pour l'instant, par la suite on pourra nettoyer en remplaçant les catégories par des valeurs sémantiques.

Exemple 
&lt;nowiki&gt; Remplacer [[Catégorie:Serveurs]] par [[Installé sur::Serveur]] &lt;/nowiki&gt;

Sinon oui je veux bien la liste de toutes les catégories des pages tutoriels
a+

[[Utilisateur:Nicolas NALLET|Nicolas NALLET]] ([[Discussion utilisateur:Nicolas NALLET|discussion]])

1 juin 2012 à 15:21 (CEST)

----

Salut,
J'ai voulu commencer, et je me heurte déjà à un souci... Certaines catégories contiennent un peu de tout:

[http://www.isalo.org/wiki.debian-fr/index.php?title=Cat%C3%A9gorie:Apt Catégorie apt]
Cette catégorie contient 4 pages: Deux trucs et actuces, un tutoriel et une page de documentation...

Ton avis ?

[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 2 juin 2012 à 07:32 (CEST)

----
Salut,
Oui c'est pas grave mets pour chaque page l'une des 3 catégories ensuite je créerai une super catégorie qu'on pourra appeler &quot;Ressources&quot; et qui aura pour sous catégories les 3 catégories (doc, T&amp;S, tuto).

Quand l'utilisateur voudra chercher une ressources il aura d'abord le choix  entre les 3 sous catégories puis ensuite d'autres propriétés. 

a+
[[Utilisateur:Nicolas NALLET|Nicolas NALLET]] ([[Discussion utilisateur:Nicolas NALLET|discussion]])
3 juin 2012 à 11:50 (CEST)</text>
      <sha1>nmrxd3ksppby7gtukiw2xmpm2ozbird</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Num's</title>
    <ns>3</ns>
    <id>101</id>
    <revision>
      <id>425</id>
      <timestamp>2010-01-27T15:55:53Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « Le forum Interne n'aime pas les apostrophes dans les noms d'utilisateurs (erreur interne !)... Je poste donc ici le message :  Merci de donner ton avis :) http://beronono.com… »</comment>
      <text xml:space="preserve" bytes="334">Le forum Interne n'aime pas les apostrophes dans les noms d'utilisateurs (erreur interne !)... Je poste donc ici le message :

Merci de donner ton avis :)
http://beronono.com/wiki-debian/index.php?title=Sp%C3%A9cial:AWCforum&amp;action=st%2Fid5%2FAjouter_des_membre_%22relecteurs%22

[[Utilisateur:Lol|Lol]] 27 janvier 2010 à 15:55 (UTC)</text>
      <sha1>rvbsn3f3f8k47m89cnlk63q4m0ux35y</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Obrice</title>
    <ns>3</ns>
    <id>1248</id>
    <revision>
      <id>5116</id>
      <timestamp>2013-05-01T15:09:51Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="333">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 1 mai 2013 à 17:09 (CEST)</text>
      <sha1>5nu5b9wept9avsnfe1skn7gp8c0p8gg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:PascalHambourg</title>
    <ns>3</ns>
    <id>1283</id>
    <revision>
      <id>5352</id>
      <timestamp>2013-08-13T21:12:16Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="342">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 13 août 2013 à 23:12 (CEST)</text>
      <sha1>jes1ytyccq1ojq4c00jve2n9ge4us3r</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Pathe</title>
    <ns>3</ns>
    <id>1326</id>
    <revision>
      <id>5580</id>
      <timestamp>2014-03-24T08:08:14Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="366">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Ggoodluck47|Amicalement, Gerard]] ([[Discussion utilisateur:Ggoodluck47|discussion]]) 24 mars 2014 à 09:08 (CET)</text>
      <sha1>bipc9redbv30wfmrv745ar03agnuy6n</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:PengouinPdt</title>
    <ns>3</ns>
    <id>1186</id>
    <revision>
      <id>4855</id>
      <timestamp>2012-12-24T12:51:54Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="339">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 24 décembre 2012 à 13:51 (CET)</text>
      <sha1>difloq82sdijl4sfqugrh66tmspf3qs</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Petitchat</title>
    <ns>3</ns>
    <id>1318</id>
    <revision>
      <id>5554</id>
      <timestamp>2014-03-07T07:51:07Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="365">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Ggoodluck47|Amicalement, Gerard]] ([[Discussion utilisateur:Ggoodluck47|discussion]]) 7 mars 2014 à 08:51 (CET)</text>
      <sha1>hpibsc40bkt9yjke2x794sk6ssulwiw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:QTN.SYL</title>
    <ns>3</ns>
    <id>1201</id>
    <revision>
      <id>4943</id>
      <timestamp>2013-01-28T16:12:55Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="337">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 28 janvier 2013 à 17:12 (CET)</text>
      <sha1>cp11a4fm22cjdir4ouro9tfgz9vlghj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Ricardo</title>
    <ns>3</ns>
    <id>62</id>
    <revision>
      <id>233</id>
      <timestamp>2010-01-24T15:49:28Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <comment>Page créée avec « Comme je ne suis pas trop fort en matière de Linux proprement dite et que je me sens plus à l'aise dans la discussion, je crée cette page. J'ai vu qu'il y avait déjà un … »</comment>
      <text xml:space="preserve" bytes="683">Comme je ne suis pas trop fort en matière de Linux proprement dite et que je me sens plus à l'aise dans la discussion, je crée cette page.
J'ai vu qu'il y avait déjà un projet d'architecture du wiki mais je pense qu'il faudrait &quot;une mère&quot; à cette liste car elle risque de s'allonger.
Quand je parle d'architecture, je compare à une pyramide, dont la pointe serait en bas. Cette &quot;pointe&quot; devrait être composée de maximum 3 ou 4 &quot;familles&quot;.
Ces &quot;familles&quot;, devraient être, à leur tour, divisées en &quot;groupes&quot;, jusqu'à arriver aux 'posts' (je ne trouve pas le mot employé dans les wikis) finaux. 

Les noms 'familles', 'groupes', etc ne sont que des exemples.
Votre avis ?</text>
      <sha1>673jpt8i0isw5te9hhz2xlghwz0jmsn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>234</id>
      <parentid>233</parentid>
      <timestamp>2010-01-24T15:52:04Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <text xml:space="preserve" bytes="775">Comme je ne suis pas trop fort en matière de Linux proprement dite et que je me sens plus à l'aise dans la discussion, je crée cette page.
J'ai vu qu'il y avait déjà un projet d'architecture du wiki mais je pense qu'il faudrait &quot;une mère&quot; à cette liste car elle risque de s'allonger.
Quand je parle d'architecture, je compare à une pyramide, dont la pointe serait en bas. Cette &quot;pointe&quot; devrait être composée de maximum 3 ou 4 &quot;familles&quot;.
Ces &quot;familles&quot;, devraient être, à leur tour, divisées en &quot;groupes&quot;, jusqu'à arriver aux 'posts' (je ne trouve pas le mot employé dans les wikis) finaux. 

Les noms 'familles', 'groupes', etc ne sont que des exemples.
Votre avis ?

EDIT :
Pas le temps mais je n'aio pas vu comment faire les paragraphes, donc tout se suit.</text>
      <sha1>n9zzzqssguhk3bmn1h5dff7r9bf52b1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>235</id>
      <parentid>234</parentid>
      <timestamp>2010-01-24T15:53:19Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <text xml:space="preserve" bytes="830">Comme je ne suis pas trop fort en matière de Linux proprement dite et que je me sens plus à l'aise dans la discussion, je crée cette page.

J'ai vu qu'il y avait déjà un projet d'architecture du wiki mais je pense qu'il faudrait &quot;une mère&quot; à cette liste car elle risque de s'allonger.

Quand je parle d'architecture, je compare à une pyramide, dont la pointe serait en bas. Cette &quot;pointe&quot; devrait être composée de maximum 3 ou 4 &quot;familles&quot;.

Ces &quot;familles&quot;, devraient être, à leur tour, divisées en &quot;groupes&quot;, jusqu'à arriver aux 'posts' (je ne trouve pas le mot employé dans les wikis) finaux. 

Les noms 'familles', 'groupes', etc ne sont que des exemples.
Votre avis ?

EDIT :
Pas le temps mais je n'aio pas vu comment faire les paragraphes, donc tout se suit.
EDIT 2 : j'ai fait une ligne vide :-) entre chaque.</text>
      <sha1>h9kihhbtqbrbstgsomfq2mqpoacg3ag</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>236</id>
      <parentid>235</parentid>
      <timestamp>2010-01-24T15:53:37Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <text xml:space="preserve" bytes="831">Comme je ne suis pas trop fort en matière de Linux proprement dite et que je me sens plus à l'aise dans la discussion, je crée cette page.

J'ai vu qu'il y avait déjà un projet d'architecture du wiki mais je pense qu'il faudrait &quot;une mère&quot; à cette liste car elle risque de s'allonger.

Quand je parle d'architecture, je compare à une pyramide, dont la pointe serait en bas. Cette &quot;pointe&quot; devrait être composée de maximum 3 ou 4 &quot;familles&quot;.

Ces &quot;familles&quot;, devraient être, à leur tour, divisées en &quot;groupes&quot;, jusqu'à arriver aux 'posts' (je ne trouve pas le mot employé dans les wikis) finaux. 

Les noms 'familles', 'groupes', etc ne sont que des exemples.
Votre avis ?

EDIT :
Pas le temps mais je n'aio pas vu comment faire les paragraphes, donc tout se suit.

EDIT 2 : j'ai fait une ligne vide :-) entre chaque.</text>
      <sha1>6b4x30schugcqex5qvvz1c9jt2np9ha</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>343</id>
      <parentid>236</parentid>
      <timestamp>2010-01-26T18:17:08Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <text xml:space="preserve" bytes="1505">Comme je ne suis pas trop fort en matière de Linux proprement dite et que je me sens plus à l'aise dans la discussion, je crée cette page.

J'ai vu qu'il y avait déjà un projet d'architecture du wiki mais je pense qu'il faudrait &quot;une mère&quot; à cette liste car elle risque de s'allonger.

Quand je parle d'architecture, je compare à une pyramide, dont la pointe serait en bas. Cette &quot;pointe&quot; devrait être composée de maximum 3 ou 4 &quot;familles&quot;.

Ces &quot;familles&quot;, devraient être, à leur tour, divisées en &quot;groupes&quot;, jusqu'à arriver aux 'posts' (je ne trouve pas le mot employé dans les wikis) finaux. 

Les noms 'familles', 'groupes', etc ne sont que des exemples.
Votre avis ?

EDIT :
Pas le temps mais je n'aio pas vu comment faire les paragraphes, donc tout se suit.

EDIT 2 : j'ai fait une ligne vide :-) entre chaque.
----
Salut, je viens polluer ta discussion avec mes fautes :) Oui il faut que nous entamions une discussion sur l'organisation générale, j'espère toujours faire fonctionner ce satané forum interne au Wiki ce serait l'endroit idéal. J'y suis presque, mais il me résiste le salopiaud.

J'avoue que comme toi je suis un peu désarmé face au Wiki. J'imagine que le plus simple serait de faire des pages avec des liens vers des sous-pages. Les catégories servent surtout à la recherche, et à ne pas égarer des articles. Une structure à la façon d'un site Web me semble idéale pour &quot;ranger&quot;...

PS Sympa ton site. J'adore la citation de Courteline, quelle finesse !</text>
      <sha1>3t0m1yuvx6lq6yf14v73mn00tzraxvy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>363</id>
      <parentid>343</parentid>
      <timestamp>2010-01-27T04:07:32Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1771">Comme je ne suis pas trop fort en matière de Linux proprement dite et que je me sens plus à l'aise dans la discussion, je crée cette page.

J'ai vu qu'il y avait déjà un projet d'architecture du wiki mais je pense qu'il faudrait &quot;une mère&quot; à cette liste car elle risque de s'allonger.

Quand je parle d'architecture, je compare à une pyramide, dont la pointe serait en bas. Cette &quot;pointe&quot; devrait être composée de maximum 3 ou 4 &quot;familles&quot;.

Ces &quot;familles&quot;, devraient être, à leur tour, divisées en &quot;groupes&quot;, jusqu'à arriver aux 'posts' (je ne trouve pas le mot employé dans les wikis) finaux. 

Les noms 'familles', 'groupes', etc ne sont que des exemples.
Votre avis ?

EDIT :
Pas le temps mais je n'aio pas vu comment faire les paragraphes, donc tout se suit.

EDIT 2 : j'ai fait une ligne vide :-) entre chaque.
----
Salut, je viens polluer ta discussion avec mes fautes :) Oui il faut que nous entamions une discussion sur l'organisation générale, j'espère toujours faire fonctionner ce satané forum interne au Wiki ce serait l'endroit idéal. J'y suis presque, mais il me résiste le salopiaud.

J'avoue que comme toi je suis un peu désarmé face au Wiki. J'imagine que le plus simple serait de faire des pages avec des liens vers des sous-pages. Les catégories servent surtout à la recherche, et à ne pas égarer des articles. Une structure à la façon d'un site Web me semble idéale pour &quot;ranger&quot;...
[[Utilisateur:Lol|Lol]] 27 janvier 2010 à 04:07 (UTC)

PS Sympa ton site. J'adore la citation de Courteline, quelle finesse !
----
Je me suis permis d'afficher la photo téléversée hier soir sur ta page ! J'adore, c'est sympa de se connaitre, je vais en mettre une de moi aussi ! [[Utilisateur:Lol|Lol]] 27 janvier 2010 à 04:07 (UTC)</text>
      <sha1>mpt5pgp65dhvk4867s3ov6a1632ipe3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>371</id>
      <parentid>363</parentid>
      <timestamp>2010-01-27T05:14:10Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <text xml:space="preserve" bytes="1898">Comme je ne suis pas trop fort en matière de Linux proprement dite et que je me sens plus à l'aise dans la discussion, je crée cette page.

J'ai vu qu'il y avait déjà un projet d'architecture du wiki mais je pense qu'il faudrait &quot;une mère&quot; à cette liste car elle risque de s'allonger.

Quand je parle d'architecture, je compare à une pyramide, dont la pointe serait en bas. Cette &quot;pointe&quot; devrait être composée de maximum 3 ou 4 &quot;familles&quot;.

Ces &quot;familles&quot;, devraient être, à leur tour, divisées en &quot;groupes&quot;, jusqu'à arriver aux 'posts' (je ne trouve pas le mot employé dans les wikis) finaux. 

Les noms 'familles', 'groupes', etc ne sont que des exemples.
Votre avis ?

EDIT :
Pas le temps mais je n'aio pas vu comment faire les paragraphes, donc tout se suit.

EDIT 2 : j'ai fait une ligne vide :-) entre chaque.
----
Salut, je viens polluer ta discussion avec mes fautes :) Oui il faut que nous entamions une discussion sur l'organisation générale, j'espère toujours faire fonctionner ce satané forum interne au Wiki ce serait l'endroit idéal. J'y suis presque, mais il me résiste le salopiaud.

J'avoue que comme toi je suis un peu désarmé face au Wiki. J'imagine que le plus simple serait de faire des pages avec des liens vers des sous-pages. Les catégories servent surtout à la recherche, et à ne pas égarer des articles. Une structure à la façon d'un site Web me semble idéale pour &quot;ranger&quot;...
[[Utilisateur:Lol|Lol]] 27 janvier 2010 à 04:07 (UTC)

PS Sympa ton site. J'adore la citation de Courteline, quelle finesse !
----
Je me suis permis d'afficher la photo téléversée hier soir sur ta page ! J'adore, c'est sympa de se connaitre, je vais en mettre une de moi aussi ! [[Utilisateur:Lol|Lol]] 27 janvier 2010 à 04:07 (UTC)
----
Excellente idée en effet ! --[[Utilisateur:Le fada|le_fada... toujours à l&amp;#39;ouest !]] 27 janvier 2010 à 05:14 (UTC)</text>
      <sha1>jqpfgyhimjcipkaexfyko0za0bpkrwn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>385</id>
      <parentid>371</parentid>
      <timestamp>2010-01-27T08:34:38Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="1950">Comme je ne suis pas trop fort en matière de Linux proprement dite et que je me sens plus à l'aise dans la discussion, je crée cette page.

J'ai vu qu'il y avait déjà un projet d'architecture du wiki mais je pense qu'il faudrait &quot;une mère&quot; à cette liste car elle risque de s'allonger.

Quand je parle d'architecture, je compare à une pyramide, dont la pointe serait en bas. Cette &quot;pointe&quot; devrait être composée de maximum 3 ou 4 &quot;familles&quot;.

Ces &quot;familles&quot;, devraient être, à leur tour, divisées en &quot;groupes&quot;, jusqu'à arriver aux 'posts' (je ne trouve pas le mot employé dans les wikis) finaux. 

Les noms 'familles', 'groupes', etc ne sont que des exemples.
Votre avis ?

EDIT :
Pas le temps mais je n'aio pas vu comment faire les paragraphes, donc tout se suit.

EDIT 2 : j'ai fait une ligne vide :-) entre chaque.
----
Salut, je viens polluer ta discussion avec mes fautes :) Oui il faut que nous entamions une discussion sur l'organisation générale, j'espère toujours faire fonctionner ce satané forum interne au Wiki ce serait l'endroit idéal. J'y suis presque, mais il me résiste le salopiaud.

J'avoue que comme toi je suis un peu désarmé face au Wiki. J'imagine que le plus simple serait de faire des pages avec des liens vers des sous-pages. Les catégories servent surtout à la recherche, et à ne pas égarer des articles. Une structure à la façon d'un site Web me semble idéale pour &quot;ranger&quot;...
[[Utilisateur:Lol|Lol]] 27 janvier 2010 à 04:07 (UTC)

PS Sympa ton site. J'adore la citation de Courteline, quelle finesse !
----
Je me suis permis d'afficher la photo téléversée hier soir sur ta page ! J'adore, c'est sympa de se connaitre, je vais en mettre une de moi aussi ! [[Utilisateur:Lol|Lol]] 27 janvier 2010 à 04:07 (UTC)
----
Excellente idée en effet ! --[[Utilisateur:Le fada|le_fada... toujours à l&amp;#39;ouest !]] 27 janvier 2010 à 05:14 (UTC)
----
O.o ricardo, t'es si vieux que ça??? respect.</text>
      <sha1>medgdrz0j30i3la3290fphp47ctpyui</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>411</id>
      <parentid>385</parentid>
      <timestamp>2010-01-27T11:49:32Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <text xml:space="preserve" bytes="2102">Comme je ne suis pas trop fort en matière de Linux proprement dite et que je me sens plus à l'aise dans la discussion, je crée cette page.

J'ai vu qu'il y avait déjà un projet d'architecture du wiki mais je pense qu'il faudrait &quot;une mère&quot; à cette liste car elle risque de s'allonger.

Quand je parle d'architecture, je compare à une pyramide, dont la pointe serait en bas. Cette &quot;pointe&quot; devrait être composée de maximum 3 ou 4 &quot;familles&quot;.

Ces &quot;familles&quot;, devraient être, à leur tour, divisées en &quot;groupes&quot;, jusqu'à arriver aux 'posts' (je ne trouve pas le mot employé dans les wikis) finaux. 

Les noms 'familles', 'groupes', etc ne sont que des exemples.
Votre avis ?

EDIT :
Pas le temps mais je n'aio pas vu comment faire les paragraphes, donc tout se suit.

EDIT 2 : j'ai fait une ligne vide :-) entre chaque.
----
Salut, je viens polluer ta discussion avec mes fautes :) Oui il faut que nous entamions une discussion sur l'organisation générale, j'espère toujours faire fonctionner ce satané forum interne au Wiki ce serait l'endroit idéal. J'y suis presque, mais il me résiste le salopiaud.

J'avoue que comme toi je suis un peu désarmé face au Wiki. J'imagine que le plus simple serait de faire des pages avec des liens vers des sous-pages. Les catégories servent surtout à la recherche, et à ne pas égarer des articles. Une structure à la façon d'un site Web me semble idéale pour &quot;ranger&quot;...
[[Utilisateur:Lol|Lol]] 27 janvier 2010 à 04:07 (UTC)

PS Sympa ton site. J'adore la citation de Courteline, quelle finesse !
----
Je me suis permis d'afficher la photo téléversée hier soir sur ta page ! J'adore, c'est sympa de se connaitre, je vais en mettre une de moi aussi ! [[Utilisateur:Lol|Lol]] 27 janvier 2010 à 04:07 (UTC)
----
Excellente idée en effet ! --[[Utilisateur:Le fada|le_fada... toujours à l&amp;#39;ouest !]] 27 janvier 2010 à 05:14 (UTC)
----
O.o ricardo, t'es si vieux que ça??? respect.
----
Où t'as vu un vieux, toi ?
À peine 73 ans et dans la famille, on vit jusqu'à 99 ans, alors vous n'avez pas fini de devoir me supporter :-)
----</text>
      <sha1>pfjhdn7itr1x2pqpbbcorpas98inbxr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>412</id>
      <parentid>411</parentid>
      <timestamp>2010-01-27T11:50:05Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <text xml:space="preserve" bytes="2134">Comme je ne suis pas trop fort en matière de Linux proprement dite et que je me sens plus à l'aise dans la discussion, je crée cette page.

J'ai vu qu'il y avait déjà un projet d'architecture du wiki mais je pense qu'il faudrait &quot;une mère&quot; à cette liste car elle risque de s'allonger.

Quand je parle d'architecture, je compare à une pyramide, dont la pointe serait en bas. Cette &quot;pointe&quot; devrait être composée de maximum 3 ou 4 &quot;familles&quot;.

Ces &quot;familles&quot;, devraient être, à leur tour, divisées en &quot;groupes&quot;, jusqu'à arriver aux 'posts' (je ne trouve pas le mot employé dans les wikis) finaux. 

Les noms 'familles', 'groupes', etc ne sont que des exemples.
Votre avis ?

EDIT :
Pas le temps mais je n'aio pas vu comment faire les paragraphes, donc tout se suit.

EDIT 2 : j'ai fait une ligne vide :-) entre chaque.
----
Salut, je viens polluer ta discussion avec mes fautes :) Oui il faut que nous entamions une discussion sur l'organisation générale, j'espère toujours faire fonctionner ce satané forum interne au Wiki ce serait l'endroit idéal. J'y suis presque, mais il me résiste le salopiaud.

J'avoue que comme toi je suis un peu désarmé face au Wiki. J'imagine que le plus simple serait de faire des pages avec des liens vers des sous-pages. Les catégories servent surtout à la recherche, et à ne pas égarer des articles. Une structure à la façon d'un site Web me semble idéale pour &quot;ranger&quot;...
[[Utilisateur:Lol|Lol]] 27 janvier 2010 à 04:07 (UTC)

PS Sympa ton site. J'adore la citation de Courteline, quelle finesse !
----
Je me suis permis d'afficher la photo téléversée hier soir sur ta page ! J'adore, c'est sympa de se connaitre, je vais en mettre une de moi aussi ! [[Utilisateur:Lol|Lol]] 27 janvier 2010 à 04:07 (UTC)
----
Excellente idée en effet ! --[[Utilisateur:Le fada|le_fada... toujours à l&amp;#39;ouest !]] 27 janvier 2010 à 05:14 (UTC)
----
O.o ricardo, t'es si vieux que ça??? respect.
----
Où t'as vu un vieux, toi ?
À peine 73 ans et dans la famille, on vit jusqu'à 99 ans, alors vous n'avez pas fini de devoir me supporter :-)
[[Utilisateur:Ricardo|Ricardo]]
----</text>
      <sha1>crlcnkc0brhmiee556ttw9v3slfn6jr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Ripat</title>
    <ns>3</ns>
    <id>1014</id>
    <revision>
      <id>4286</id>
      <timestamp>2012-05-28T11:58:51Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="334">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 28 mai 2012 à 13:58 (CEST)</text>
      <sha1>stsw1nyu4vlsz0rb5ygsx73451fx93b</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Samyds</title>
    <ns>3</ns>
    <id>978</id>
    <revision>
      <id>4026</id>
      <timestamp>2012-04-19T08:33:41Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="292">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] 19 avril 2012 à 10:33 (CEST)</text>
      <sha1>84zccvms1qxtl8zafnf6je9s7fwxvf0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Seb-ksl</title>
    <ns>3</ns>
    <id>1203</id>
    <revision>
      <id>4945</id>
      <timestamp>2013-01-28T16:23:18Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="337">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 28 janvier 2013 à 17:23 (CET)</text>
      <sha1>gdvrofp51m9y3hrsa0ls852i4d9epx1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:SmallFitz</title>
    <ns>3</ns>
    <id>1100</id>
    <revision>
      <id>4548</id>
      <timestamp>2012-10-27T13:25:26Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="338">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 27 octobre 2012 à 15:25 (CEST)</text>
      <sha1>oc2fx0w3gidrch6622cekuw58asxway</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Sousou</title>
    <ns>3</ns>
    <id>1321</id>
    <revision>
      <id>5566</id>
      <timestamp>2014-03-10T21:51:47Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="340">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 10 mars 2014 à 22:51 (CET)</text>
      <sha1>4c0zklurxhocjyq88s7a1gool5lb6b4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Talogue</title>
    <ns>3</ns>
    <id>1235</id>
    <revision>
      <id>5079</id>
      <timestamp>2013-04-02T04:12:57Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="335">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 2 avril 2013 à 06:12 (CEST)</text>
      <sha1>sgi8ik9vo6w8nhfmd3dg0z86j5dfmti</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Terix</title>
    <ns>3</ns>
    <id>892</id>
    <redirect title="Discussion utilisateur:Tetrix" />
    <revision>
      <id>3652</id>
      <timestamp>2011-12-29T05:08:02Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>a déplacé [[Discussion utilisateur:Terix]] vers [[Discussion utilisateur:Tetrix]] : Page déplacée automatiquement lorsque l’utilisateur « [[User:Terix|Terix]] » est devenu « [[User:Tetrix|Tetrix]] »</comment>
      <text xml:space="preserve" bytes="46">#REDIRECTION [[Discussion utilisateur:Tetrix]]</text>
      <sha1>2grk1iz3n36742la0f84pszzka057qw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Tetrix</title>
    <ns>3</ns>
    <id>682</id>
    <revision>
      <id>2929</id>
      <timestamp>2011-05-01T09:35:43Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>routeur/routage</comment>
      <text xml:space="preserve" bytes="107">Okay,
je me lance,le sujet concerne les routeurs ,le routage,mais pour le moment j'en sais pas trop de plus</text>
      <sha1>3lu3vm4xxlxj9slrlvjj010sfbxiu1m</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2930</id>
      <parentid>2929</parentid>
      <timestamp>2011-05-01T10:03:48Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <text xml:space="preserve" bytes="403">Okay,
je me lance,le sujet concerne les routeurs ,le routage,mais pour le moment j'en sais pas trop de plus,

    * Bird Internet routing daemon,
    * OpenBGPD,
    * Quagga, successeur de GNU Zebra,
    * XORP.

http://fr.wikipedia.org/wiki/Routeur,

Mais si comme le suggère la page wikipédia un ordi sous Linux possédant 2 cartes,peux devenir routeur je vais concentré mes efforts de ce coté...</text>
      <sha1>dwoyffwycuetauyc5tb6rev74e0rq48</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2939</id>
      <parentid>2930</parentid>
      <timestamp>2011-05-01T14:27:10Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <text xml:space="preserve" bytes="434">Le routage à partir de son PC

    * Bird Internet routing daemon,
http://bird.network.cz/

    * OpenBGPD,
http://www.openbgpd.org/fr/index.html

    * Quagga, successeur de GNU Zebra,
http://www.quagga.net/

    * XORP.
http://www.xorp.org/

http://fr.wikipedia.org/wiki/Routeur,

Mais si comme le suggère la page wikipédia un ordi sous Linux possédant 2 cartes,peux devenir routeur je vais concentré mes efforts de ce coté...</text>
      <sha1>6l0q2armn8elv251itf0v6yt9bdrznv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2940</id>
      <parentid>2939</parentid>
      <timestamp>2011-05-01T16:45:56Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <text xml:space="preserve" bytes="633">Le routage à partir de son PC

    * Bird Internet routing daemon,
http://bird.network.cz/

    * OpenBGPD,
http://www.openbgpd.org/fr/index.html

    * Quagga, successeur de GNU Zebra,
http://www.quagga.net/

    * XORP.
http://www.xorp.org/

http://fr.wikipedia.org/wiki/Routeur,

Mais si comme le suggère la page wikipédia un ordi sous Linux possédant 2 cartes,peux devenir routeur je vais concentré mes efforts de ce coté...
Bon ,faut apprendre à se servir de l'outil,je sais même pas si je suis au bon endroit ,je crois que oui,c'est vrai que pour le moment ma discution ressemble à un monologue...pas grave j'avance ;)</text>
      <sha1>iu7kjn7csxg18fe1oaho9ikoo5vrlvp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2941</id>
      <parentid>2940</parentid>
      <timestamp>2011-05-02T13:26:02Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <text xml:space="preserve" bytes="2356">Le routage à partir de son PC

http://bird.network.cz/

The BIRD Internet Routing Daemon &quot;Le démon de routage Internet BIRD&quot;(citation),

Le projet BIRD vise à développer une dynamique fonctionnelle IP de routage principalement ciblée sur (mais non limité à) les systèmes UNIX et distribué sous la Licence Publique Générale GNU .

2.5.2011 - Nouvelle version 1.3.1. Diverses corrections de bugs mineurs. Des améliorations mineures liées à BGP et au port Linux.

Qu'est-ce que nous soutenons:

    * Les adresses IPv4 et IPv6 (utiliser-ipv6 lors de la configuration)
    * Plusieurs tables de routage
    * BGP BGP
    * RIP RIP
    * OSPF OSPF
    * Les routes statiques
    * Inter-table de protocole
    * Interface de ligne de commande (en utilisant le «birdc« client; pour obtenir de l'aide, appuyez simplement sur ​​&quot;?&quot;)
    * Très peu de commandes en ligne pour changer la configuration, il suffit d'éditer le fichier de configuration qui délivre un «configure» commande ou envoyer SIGHUP BIRD cela commencera à utiliser la nouvelle configuration,redémarrer les protocoles touchés par les changements de configuration
    * Puissant langage de la ligne de filtrage 

BIRD a été développé comme un projet scolaire à la Faculté de Mathématiques et de Physique , Charles de Prague.Actuellement, il est développé et soutenu par Labs CZ.NIC .Les membres de l'équipe actuelle sont les suivants:

    * Ondrej Filip (OSPF, port BSD, les communiqués, l'emballage)
    * Martin Mares (architecture globale, de base, les décharges, BGP)
    * Ondrej Zajicek (Nouvelles fonctionnalités BGP, OSPFv3) 

Ancien membres de l'équipe: Libor Forst et Pavel Machek .

Il existe aussi une mailing-list des développeurs et des utilisateurs BIRD: bird-users@network.cz .Pour vous abonner à la liste, envoyez simplement un &quot;abonnez-utilisateurs de commande d'oiseaux&quot;(en anglais :&quot;BIRD command-user&quot;) dans un mail à majordomo@network.cz .

Vous pouvez regarder les sources et les rejets .
 


'''....Ceci n'est qu'une ébauche de présentation,je compte créer un article par logiciel mentionné,avec des explication détaillées....'''



    * OpenBGPD,
http://www.openbgpd.org/fr/index.html

    * Quagga, successeur de GNU Zebra,
http://www.quagga.net/

    * XORP.
http://www.xorp.org/

http://fr.wikipedia.org/wiki/Routeur,</text>
      <sha1>d81mhtyyfjcib0q7k6f6hec9o8w9b39</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2942</id>
      <parentid>2941</parentid>
      <timestamp>2011-05-02T16:03:45Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <text xml:space="preserve" bytes="2357">Le routage à partir de son PC

http://bird.network.cz/

The BIRD Internet Routing Daemon &quot;Le démon de routage Internet BIRD&quot;(citation),

Le projet BIRD vise à développer une dynamique fonctionnelle IP de routage principalement ciblée sur (mais non limité à) les systèmes UNIX et distribué sous la Licence Publique Générale GNU .

2.5.2011 - Nouvelle version 1.3.1. Diverses corrections de bugs mineurs. Des améliorations mineures liées à BGP et au port Linux.

Qu'est-ce que nous soutenons:

    * Les adresses IPv4 et IPv6 (utiliser-ipv6 lors de la configuration)
    * Plusieurs tables de routage
    * BGP BGP
    * RIP RIP
    * OSPF OSPF
    * Les routes statiques
    * Inter-table de protocole
    * Interface de ligne de commande (en utilisant le «birdc« client; pour obtenir de l'aide, appuyez simplement sur ​​&quot;?&quot;)
    * Très peu de commandes en ligne pour changer la configuration, il suffit d'éditer le fichier de configuration qui délivre un «configure» commande ou envoyer SIGHUP BIRD cela commencera à utiliser la nouvelle configuration,redémarrer les protocoles touchés par les changements de configuration
    * Puissant langage de la ligne de filtrage 

BIRD a été développé comme un projet scolaire à la Faculté de Mathématiques et de Physique , Charles de Prague.Actuellement, il est développé et soutenu par Labs CZ.NIC .Les membres de l'équipe actuelle sont les suivants:

    * Ondrej Filip (OSPF, port BSD, les communiqués, l'emballage)
    * Martin Mares (architecture globale, de base, les décharges, BGP)
    * Ondrej Zajicek (Nouvelles fonctionnalités BGP, OSPFv3) 

Ancien membres de l'équipe: Libor Forst et Pavel Machek .

Il existe aussi une mailing-list des développeurs et des utilisateurs BIRD: bird-users@network.cz .Pour vous abonner à la liste, envoyez simplement un &quot;abonnez-utilisateurs de commande d'oiseaux&quot;(en anglais :&quot;BIRD command-user&quot;) dans un mail à majordomo@network.cz .

Vous pouvez regarder les sources et les rejets .
 


'''....Ceci n'est qu'une ébauche de présentation,je compte créer un article par logiciel mentionné,avec des explications détaillées....'''



    * OpenBGPD,
http://www.openbgpd.org/fr/index.html

    * Quagga, successeur de GNU Zebra,
http://www.quagga.net/

    * XORP.
http://www.xorp.org/

http://fr.wikipedia.org/wiki/Routeur,</text>
      <sha1>7hr2pd5wudpquzblactk60o9scdp1ls</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2943</id>
      <parentid>2942</parentid>
      <timestamp>2011-05-02T19:02:09Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <text xml:space="preserve" bytes="2361">Le routage à partir de son PC

'''....Ceci n'est qu'une ébauche de présentation,je compte créer un article par logiciel mentionné,avec des explications détaillées....'''

http://bird.network.cz/

The BIRD Internet Routing Daemon &quot;Le démon de routage Internet BIRD&quot;(citation),

Le projet BIRD vise à développer une dynamique fonctionnelle IP de routage principalement ciblée sur (mais non limité à) les systèmes UNIX et distribué sous la Licence Publique Générale GNU .

2.5.2011 - Nouvelle version 1.3.1. Diverses corrections de bugs mineurs. Des améliorations mineures liées à BGP et au port Linux.

Qu'est-ce que nous soutenons:

    * Les adresses IPv4 et IPv6 (utiliser-ipv6 lors de la configuration)
    * Plusieurs tables de routage
    * BGP BGP
    * RIP RIP
    * OSPF OSPF
    * Les routes statiques
    * Inter-table de protocole
    * Interface de ligne de commande (en utilisant le «birdc« client; pour obtenir de l'aide, appuyez simplement sur ​​&quot;?&quot;)
    * Très peu de commandes en ligne pour changer la configuration, il suffit d'éditer le fichier de configuration qui délivre un «configure» commande ou envoyer SIGHUP BIRD cela commencera à utiliser la nouvelle configuration,redémarrer les protocoles touchés par les changements de configuration
    * Puissant langage de la ligne de filtrage 

BIRD a été développé comme un projet scolaire à la Faculté de Mathématiques et de Physique , Charles de Prague.Actuellement, il est développé et soutenu par Labs CZ.NIC .Les membres de l'équipe actuelle sont les suivants:

    * Ondrej Filip (OSPF, port BSD, les communiqués, l'emballage)
    * Martin Mares (architecture globale, de base, les décharges, BGP)
    * Ondrej Zajicek (Nouvelles fonctionnalités BGP, OSPFv3) 

Ancien membres de l'équipe: Libor Forst et Pavel Machek .

Il existe aussi une mailing-list des développeurs et des utilisateurs BIRD: bird-users@network.cz .Pour vous abonner à la liste, envoyez simplement un &quot;abonnez-utilisateurs de commande d'oiseaux&quot;(en anglais :&quot;BIRD command-user&quot;) dans un mail à majordomo@network.cz .

Vous pouvez regarder les sources et les rejets .
 

----


    * OpenBGPD,
http://www.openbgpd.org/fr/index.html

    * Quagga, successeur de GNU Zebra,
http://www.quagga.net/

    * XORP.
http://www.xorp.org/

http://fr.wikipedia.org/wiki/Routeur,</text>
      <sha1>m996b08fmdmupqkq9y08bbrhsauqj3g</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2944</id>
      <parentid>2943</parentid>
      <timestamp>2011-05-02T19:17:25Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <text xml:space="preserve" bytes="4252">Le routage à partir de son PC

'''....Ceci n'est qu'une ébauche de présentation,je compte créer un article par logiciel mentionné,avec des explications détaillées....'''

http://bird.network.cz/

The BIRD Internet Routing Daemon &quot;Le démon de routage Internet BIRD&quot;(citation),

Le projet BIRD vise à développer une dynamique fonctionnelle IP de routage principalement ciblée sur (mais non limité à) 
les systèmes UNIX et distribué sous la Licence Publique Générale GNU .

2.5.2011 - Nouvelle version 1.3.1. Diverses corrections de bugs mineurs. Des améliorations mineures liées à BGP et au port Linux.

Qu'est-ce que nous soutenons:

    * Les adresses IPv4 et IPv6 (utiliser-ipv6 lors de la configuration)
    * Plusieurs tables de routage
    * BGP BGP
    * RIP RIP
    * OSPF OSPF
    * Les routes statiques
    * Inter-table de protocole
    * Interface de ligne de commande (en utilisant le «birdc« client; pour obtenir de l'aide, appuyez simplement sur ​​&quot;?&quot;)
    * Très peu de commandes en ligne pour changer la configuration, il suffit d'éditer le fichier de configuration ,
qui délivre un «configure» commande ou envoyer SIGHUP BIRD cela commencera à utiliser la nouvelle configuration,
redémarrer les protocoles touchés par les changements de configuration
    * Puissant langage de la ligne de filtrage 

BIRD a été développé comme un projet scolaire à la Faculté de Mathématiques et de Physique , Charles de Prague.Actuellement, 
il est développé et soutenu par Labs CZ.NIC .Les membres de l'équipe actuelle sont les suivants:

    * Ondrej Filip (OSPF, port BSD, les communiqués, l'emballage)
    * Martin Mares (architecture globale, de base, les décharges, BGP)
    * Ondrej Zajicek (Nouvelles fonctionnalités BGP, OSPFv3) 

Ancien membres de l'équipe: Libor Forst et Pavel Machek .

Il existe aussi une mailing-list des développeurs et des utilisateurs BIRD: bird-users@network.cz .Pour vous abonner à la liste, 
envoyez simplement un &quot;abonnez-utilisateurs de commande d'oiseaux&quot;(en anglais :&quot;BIRD command-user&quot;) dans un mail à majordomo@network.cz .

Vous pouvez regarder les sources et les rejets .
 
----

http://www.openbgpd.org/fr/index.html

OpenBGPD est une implémentation LIBRE du protocole Border Gateway Protocol, Version 4. Il permet aux machines ordinaires,
 d'être utilisées comme des routeurs échangeant des routes avec d'autres systèmes gérant le protocole BGP.

Initié suite à l'insatisfaction procurée par les autres implémentations, OpenBGPD est à présent une implémentation BGP complète, 
utilisée par de nombreux sites. Les utilisateurs nous félicitent souvent pour la facilité d'utilisation et les hautes performances, 
ainsi que la fiabilité de OpenBGPD.

Le compagnon de OpenBGPD, OpenOSPFD, apporte le support du protocole OSPF.

OpenBGPD est principalement développé par:

     * Henning Brauer et Claudio Jeker; OpenOSPFD est aussi développé by Esben Nørby. 

Les deux font partie du Projet OpenBSD. Le logiciel est librement utilisable et réutilisable par tous, sous une licence BSD. 

L'objectif du projet:

Etre le plus sécurisé possible. Coder méticuleusement, contrôler strictement la validité des données,
en particulier sur le chemin d'entrée réseau, et réaliser des opérations sur des mémoires tampons bornées. 
Se servir de la séparation des privilèges pour minimiser l'impact d'un éventuel bogue de sécurité.

La fiabilité est extrêmement importante. L'arrêt de bgpd entraîne habituellement la perte des routes et donc de l'accessibilité.

Fournir une implémentation légère, suffisante dans la majorité des cas. Ne pas essayer de supporter tous les cas d'utilisation,
plus obscurs les uns que les autres mais supporter les cas typiques.

Fournir une syntaxe de configuration alliant facilité de compréhension et efficacité.

Etre très rapide et avoir une très bonne gestion de la mémoire.
 
Comme bgpd gère des tables avec des centaines de milliers d'entrées, celles-ci doivent être conçues avec attention ,
aux vues de leur besoin en mémoire. 


----


    * Quagga, successeur de GNU Zebra,
http://www.quagga.net/

    * XORP.
http://www.xorp.org/

http://fr.wikipedia.org/wiki/Routeur,</text>
      <sha1>45pctn0djrpyvvxlxaejwu167i26lnt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2946</id>
      <parentid>2944</parentid>
      <timestamp>2011-05-02T19:59:13Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>Contenu remplacé par « bien ,
ici c'est pour papoter de mon projet,vous êtes les bienvenues ;) »</comment>
      <text xml:space="preserve" bytes="72">bien ,
ici c'est pour papoter de mon projet,vous êtes les bienvenues ;)</text>
      <sha1>fb3ebyfi9lrf58oaf8tee7duhl422rp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2947</id>
      <parentid>2946</parentid>
      <timestamp>2011-05-02T20:00:34Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <text xml:space="preserve" bytes="122">bien ,
ici c'est pour papoter de mon projet,vous êtes les bienvenues ;)encore faut-il que je m'habitue à ce nouvel outil</text>
      <sha1>d8ua5zd3ja6ww6cckj0uwt955u35sq7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2952</id>
      <parentid>2947</parentid>
      <timestamp>2011-05-02T20:27:09Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <text xml:space="preserve" bytes="130">bien ,
ici c'est pour papoter de mon projet,encore faut-il que je m'habitue à ce nouvel outil...mais vous êtes les bienvenues ;)</text>
      <sha1>2j4ranpn9tp3ylh4dwvc8rj6ijgry6y</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3651</id>
      <parentid>2952</parentid>
      <timestamp>2011-12-29T05:08:02Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>a déplacé [[Discussion utilisateur:Terix]] vers [[Discussion utilisateur:Tetrix]] : Page déplacée automatiquement lorsque l’utilisateur « [[User:Terix|Terix]] » est devenu « [[User:Tetrix|Tetrix]] »</comment>
      <text xml:space="preserve" bytes="130">bien ,
ici c'est pour papoter de mon projet,encore faut-il que je m'habitue à ce nouvel outil...mais vous êtes les bienvenues ;)</text>
      <sha1>2j4ranpn9tp3ylh4dwvc8rj6ijgry6y</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Thald'</title>
    <ns>3</ns>
    <id>1206</id>
    <revision>
      <id>4961</id>
      <timestamp>2013-02-10T15:38:25Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="338">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 10 février 2013 à 16:38 (CET)</text>
      <sha1>hv2hy5485soqzwn99f2o9lp0sxecv4x</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Thian27</title>
    <ns>3</ns>
    <id>1273</id>
    <revision>
      <id>5292</id>
      <timestamp>2013-06-26T12:04:53Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="335">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 26 juin 2013 à 14:04 (CEST)</text>
      <sha1>lo8li6xlf9nuxgwzutz9t8o3757zuth</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Tristan.T</title>
    <ns>3</ns>
    <id>1035</id>
    <revision>
      <id>4343</id>
      <timestamp>2012-06-25T09:57:17Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="335">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 25 juin 2012 à 11:57 (CEST)</text>
      <sha1>itp419pmbct8m45r5l7g214qyfi5pir</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Uniza</title>
    <ns>3</ns>
    <id>1314</id>
    <revision>
      <id>5550</id>
      <timestamp>2014-02-26T00:39:34Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="344">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 26 février 2014 à 01:39 (CET)</text>
      <sha1>h04cbttkhjgdiy6skoulr4wfe02apou</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Ustilago</title>
    <ns>3</ns>
    <id>1188</id>
    <revision>
      <id>4858</id>
      <timestamp>2012-12-31T14:02:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="339">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 31 décembre 2012 à 15:02 (CET)</text>
      <sha1>pdnhhftmi544p2gglcbkgrlaps01ghx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Vgagaboch</title>
    <ns>3</ns>
    <id>976</id>
    <revision>
      <id>4022</id>
      <timestamp>2012-04-14T04:07:25Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="292">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] 14 avril 2012 à 06:07 (CEST)</text>
      <sha1>p7kvxzvblvt1p5vqc17l0jwi2qykz8k</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Vohu</title>
    <ns>3</ns>
    <id>1350</id>
    <revision>
      <id>5867</id>
      <timestamp>2014-10-11T16:04:28Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="344">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 11 octobre 2014 à 18:04 (CEST)</text>
      <sha1>cpm9ty3n86741vwjk48gu5lzmw468e3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Vv222</title>
    <ns>3</ns>
    <id>1287</id>
    <revision>
      <id>5376</id>
      <timestamp>2013-08-29T12:26:13Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <comment>Page créée avec « Je demande ça car j'ai pas trop l'habitude d'utiliser le wiki :&lt;br /&gt; Je suppose que ce n'est pas la peine que j'utilise le lien &quot;défaire&quot; étant donné que tu as fait l... »</comment>
      <text xml:space="preserve" bytes="319">Je demande ça car j'ai pas trop l'habitude d'utiliser le wiki :&lt;br /&gt;
Je suppose que ce n'est pas la peine que j'utilise le lien &quot;défaire&quot; étant donné que tu as fait la manipulation qui va bien: &lt;br /&gt;
Enlever ma proposition trop spécifique à Xfce pour remettre l'ancienne plus efficace : &quot;.inputrc&quot;;&lt;br /&gt;
Merci.</text>
      <sha1>66xq0pn7l54n73344pzx26iy77plxng</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5379</id>
      <parentid>5376</parentid>
      <timestamp>2013-08-30T10:56:25Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="693">Je demande ça car j'ai pas trop l'habitude d'utiliser le wiki :&lt;br /&gt;
Je suppose que ce n'est pas la peine que j'utilise le lien &quot;défaire&quot; étant donné que tu as fait la manipulation qui va bien: &lt;br /&gt;
Enlever ma proposition trop spécifique à Xfce pour remettre l'ancienne plus efficace : &quot;.inputrc&quot;;&lt;br /&gt;
Merci.

-----

Tu as mal lu : ta proposition est toujours là, à côté de l'ancienne méthode ;)
Il faudrait juste dans l'idéal préciser à quel(s) environnement(s) elle est spécifique.
Je te propose de discuter de ce sujet sur la page de discussion dédiée de la page.

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 30 août 2013 à 12:56 (CEST)</text>
      <sha1>qfa79rv8h2kxxcwjn4pjdx7g1nyg6gp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5380</id>
      <parentid>5379</parentid>
      <timestamp>2013-08-30T10:56:56Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="695">Je demande ça car j'ai pas trop l'habitude d'utiliser le wiki :&lt;br /&gt;
Je suppose que ce n'est pas la peine que j'utilise le lien &quot;défaire&quot; étant donné que tu as fait la manipulation qui va bien: &lt;br /&gt;
Enlever ma proposition trop spécifique à Xfce pour remettre l'ancienne plus efficace : &quot;.inputrc&quot;;&lt;br /&gt;
Merci.

-----

Tu as mal lu : ta proposition est toujours là, à côté de l'ancienne méthode ;)

Il faudrait juste dans l'idéal préciser à quel(s) environnement(s) elle est spécifique.

Je te propose de discuter de ce sujet sur la page de discussion dédiée de la page.

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 30 août 2013 à 12:56 (CEST)</text>
      <sha1>4yv0h5xgheuij2ikajwgh3o912gzce3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Woj</title>
    <ns>3</ns>
    <id>43</id>
    <revision>
      <id>113</id>
      <timestamp>2010-01-22T19:05:30Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « Salut, si tu es d'accord, je vais créer une nouvelle page (catégorie:installation) et alléger ta page perso qui devrait t'être résevée (si tu souhaite y mettre quelques… »</comment>
      <text xml:space="preserve" bytes="275">Salut, si tu es d'accord, je vais créer une nouvelle page (catégorie:installation) et alléger ta page perso qui devrait t'être résevée (si tu souhaite y mettre quelques infos sur toi, des liens, ton humeur...) [[Utilisateur:Lol|Lol]] 22 janvier 2010 à 19:05 (UTC)
----</text>
      <sha1>bmxzpph7mqmezy2me8o1fjohjumyix1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>118</id>
      <parentid>113</parentid>
      <timestamp>2010-01-22T19:46:57Z</timestamp>
      <contributor>
        <username>Woj</username>
        <id>7</id>
      </contributor>
      <text xml:space="preserve" bytes="402">Salut, si tu es d'accord, je vais créer une nouvelle page (catégorie:installation) et alléger ta page perso qui devrait t'être résevée (si tu souhaite y mettre quelques infos sur toi, des liens, ton humeur...) [[Utilisateur:Lol|Lol]] 22 janvier 2010 à 19:05 (UTC)
----

Ok mais alors il faut que ça soit sur une page temporaire de travail. [[Utilisateur:Woj|Woj]] 22 janvier 2010 à 19:46 (UTC)</text>
      <sha1>484rd82gnoztx6s6l4zxlu64ger0re1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Xina</title>
    <ns>3</ns>
    <id>974</id>
    <revision>
      <id>4017</id>
      <timestamp>2012-04-10T08:20:56Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="292">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Lol|Lol]] 10 avril 2012 à 10:20 (CEST)</text>
      <sha1>dnroqtcxm1yrhmk5b0sfw12ukiqhfp2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Yanlolot</title>
    <ns>3</ns>
    <id>404</id>
    <revision>
      <id>1485</id>
      <timestamp>2010-05-16T10:07:32Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <comment>Page créée avec « La base de données n’a pas trouvé le texte d’une page qu’elle aurait dû trouver, intitulée « Utilisateur:Yanlolot » (diff : 0, 0).  Généralement, cela survient … »</comment>
      <text xml:space="preserve" bytes="621">La base de données n’a pas trouvé le texte d’une page qu’elle aurait dû trouver, intitulée « Utilisateur:Yanlolot » (diff : 0, 0).

Généralement, cela survient en suivant un lien vers un diff périmé ou vers l’historique d’une page supprimée.

Si ce n’est pas le cas, il peut s’agir d’un bogue dans le programme. Veuillez le signaler à un administrateur sans oublier de lui indiquer l’URL du lien. 

http://beronono.com/wiki-debian/index.php?title=Utilisateur:Yanlolot&amp;diff=0&amp;oldid=prev

[[Utilisateur:Ggoodluck47|Amicalement, Gerard]]goodluck47[[Utilisateur:Ggoodluck47|Amicalement, Gerard]]</text>
      <sha1>pobnhoee2xdgqu05j0s1isncujzfcdx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion utilisateur:Zinpins</title>
    <ns>3</ns>
    <id>1316</id>
    <revision>
      <id>5552</id>
      <timestamp>2014-02-26T00:40:47Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>Bienvenue !</comment>
      <text xml:space="preserve" bytes="344">'''Bienvenue sur ''wiki.debian-fr'' !''' Nous espérons que vous contribuerez en quantité et en qualité. Vous désirerez, peut-être, lire [[Help:Accueil|les pages d'aide]]. Bienvenue encore et bonne contribution !
&lt;nowiki&gt;~~~~&lt;/nowiki&gt; [[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 26 février 2014 à 01:40 (CET)</text>
      <sha1>4rax4xeowvdkrfx54qy4yrst9kgcpp4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion wiki.debian-fr:Accueil</title>
    <ns>5</ns>
    <id>227</id>
    <revision>
      <id>937</id>
      <timestamp>2010-02-07T00:12:49Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <comment>Page créée avec « Il me vient une idée au sujet du &quot;rang&quot; des membres. Les &quot;relecteurs&quot; peuvent valider une modification. C'est parfait, s'il sont choisis comme étant aptes à pouvoir le fai… »</comment>
      <text xml:space="preserve" bytes="1055">Il me vient une idée au sujet du &quot;rang&quot; des membres.
Les &quot;relecteurs&quot; peuvent valider une modification.
C'est parfait, s'il sont choisis comme étant aptes à pouvoir le faire, càd suffisamment compétents dans le domaine traité.
Ne serait-il pas possible d'avoir &quot;DEUX&quot; branches de relecteurs ?
En effet, untel peut être parfaitement compétent au niveau purement technique mais totalement impuissant quand il s'agira de juger la syntaxe et l'orthographe du texte.
J'ai été amené à faire cette remarque quand j'ai vu Westakiwin exclue de la liste des relecteurs.
C'est certainement une des membres qui manient le mieux notre langue.
Encore une fois, je ne sais pas si cela est possible mais il serait bien d'avoir deux &quot;validations&quot; :
une qui donnerait le feu vert pour le bien-fondé de la page
une seconde qui ferait de même pour le côté &quot;Français&quot;
Je verrais bien des couleurs du genre :
rouge = page non encore validée
orangé = page ayant obtenu la validation technique
bleu = page correctement écrite
Vert = page totalement éditable.</text>
      <sha1>muyq2zpasb81oza81wnx8v3694w05qj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Accueil</title>
    <ns>1</ns>
    <id>21</id>
    <revision>
      <id>31</id>
      <timestamp>2010-01-21T15:50:55Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « Comme le propose LOU$!s Je suggère que nous fassions trois grandes rubriques dans la page d'accueil : * Non validés * En cours de validation (Quelle est la procédure de va… »</comment>
      <text xml:space="preserve" bytes="365">Comme le propose LOU$!s
Je suggère que nous fassions trois grandes rubriques dans la page d'accueil :
* Non validés
* En cours de validation (Quelle est la procédure de validation ?)
* Validés
[[Utilisateur:Lol|Lol]]
----
Une suggestion : Bloquer les modifications pour les utilisateurs non-inscrits... (signé lol, modification faite sans être &quot;logué&quot;).
----</text>
      <sha1>1ps93yoj73qfhodaa4dxn90c4ij7q9j</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>58</id>
      <parentid>31</parentid>
      <timestamp>2010-01-21T20:02:19Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="648">Comme le propose LOU$!s
Je suggère que nous fassions trois grandes rubriques dans la page d'accueil :
* Non validés
* En cours de validation (Quelle est la procédure de validation ?)
* Validés
[[Utilisateur:Lol|Lol]]
----
Une suggestion : Bloquer les modifications pour les utilisateurs non-inscrits... (signé lol, modification faite sans être &quot;logué&quot;).
----
Bah je pense que tu peux commencer par bloquer les modifications des utilisateurs non inscrits, et d'empêcher ( comment ? ) l'utilisateur lambda de pouvoir rajouter &lt;nowiki&gt;{{Stable}}&lt;/nowiki&gt; à une page ( mais moi tu m'autorises, hein :p (nan je rigole, tu fais ce que tu veux)).</text>
      <sha1>as5a0di87a48qldhufg7s9506bn5ymn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>81</id>
      <parentid>58</parentid>
      <timestamp>2010-01-22T04:09:11Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>i</comment>
      <text xml:space="preserve" bytes="1366">Comme le propose LOU$!s
Je suggère que nous fassions trois grandes rubriques dans la page d'accueil :
* Non validés
* En cours de validation (Quelle est la procédure de validation ?)
* Validés
[[Utilisateur:Lol|Lol]]
----
Une suggestion : Bloquer les modifications pour les utilisateurs non-inscrits... (signé lol, modification faite sans être &quot;logué&quot;).
----
Bah je pense que tu peux commencer par bloquer les modifications des utilisateurs non inscrits, et d'empêcher ( comment ? ) l'utilisateur lambda de pouvoir rajouter &lt;nowiki&gt;{{Stable}}&lt;/nowiki&gt; à une page ( mais moi tu m'autorises, hein :p (nan je rigole, tu fais ce que tu veux)).
----
Sans rire (si je rigole tout le temps !), je fais ça aujourd'hui c'est important. Il faut régler certains points avant d'aller dans le mur... Qui a le droit de faire quoi...
Je pense que pour commencer, le minimum est de bloquer les création/éditions/suppressions pour les utilisateurs non confirmés (par mail). Au fait as-tu bien reçu ton mail de confirmation ?
Après il y a un add-on qui m'a l'air pas mal : http://www.mediawiki.org/wiki/Extension:FlaggedRevs
Donne la possibilité de &quot;marquer&quot; les pages, et approuver ou non... Seul les administrateurs sont habilités à le faire.
Le problème, c'est que j'ai planté le Wiki hier en tentant de l'installer... Tu pourrais essayer sur le tiens ? mdr...</text>
      <sha1>2qhimwjzd9c6tl6pkzu3sgj5mu6h7uk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>225</id>
      <parentid>81</parentid>
      <timestamp>2010-01-24T11:07:06Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="1435">Comme le propose LOU$!s
Je suggère que nous fassions trois grandes rubriques dans la page d'accueil :
* Non validés
* En cours de validation (Quelle est la procédure de validation ?)
* Validés
[[Utilisateur:Lol|Lol]]
----
Une suggestion : Bloquer les modifications pour les utilisateurs non-inscrits... (signé lol, modification faite sans être &quot;logué&quot;).
----
Bah je pense que tu peux commencer par bloquer les modifications des utilisateurs non inscrits, et d'empêcher ( comment ? ) l'utilisateur lambda de pouvoir rajouter &lt;nowiki&gt;{{Stable}}&lt;/nowiki&gt; à une page ( mais moi tu m'autorises, hein :p (nan je rigole, tu fais ce que tu veux)).
----
Sans rire (si je rigole tout le temps !), je fais ça aujourd'hui c'est important. Il faut régler certains points avant d'aller dans le mur... Qui a le droit de faire quoi...
Je pense que pour commencer, le minimum est de bloquer les création/éditions/suppressions pour les utilisateurs non confirmés (par mail). Au fait as-tu bien reçu ton mail de confirmation ?
Après il y a un add-on qui m'a l'air pas mal : http://www.mediawiki.org/wiki/Extension:FlaggedRevs
Donne la possibilité de &quot;marquer&quot; les pages, et approuver ou non... Seul les administrateurs sont habilités à le faire.
Le problème, c'est que j'ai planté le Wiki hier en tentant de l'installer... Tu pourrais essayer sur le tiens ? mdr...
----
j'ai déplacé &quot;démarrer avec mediawiki&quot; dans [[Aide:Accueil]]</text>
      <sha1>bgfao083ao90ld79dkgx3sby487sxyf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>226</id>
      <parentid>225</parentid>
      <timestamp>2010-01-24T11:22:24Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="1519">Comme le propose LOU$!s
Je suggère que nous fassions trois grandes rubriques dans la page d'accueil :
* Non validés
* En cours de validation (Quelle est la procédure de validation ?)
* Validés
[[Utilisateur:Lol|Lol]]
----
Une suggestion : Bloquer les modifications pour les utilisateurs non-inscrits... (signé lol, modification faite sans être &quot;logué&quot;).
----
Bah je pense que tu peux commencer par bloquer les modifications des utilisateurs non inscrits, et d'empêcher ( comment ? ) l'utilisateur lambda de pouvoir rajouter &lt;nowiki&gt;{{Stable}}&lt;/nowiki&gt; à une page ( mais moi tu m'autorises, hein :p (nan je rigole, tu fais ce que tu veux)).
----
Sans rire (si je rigole tout le temps !), je fais ça aujourd'hui c'est important. Il faut régler certains points avant d'aller dans le mur... Qui a le droit de faire quoi...
Je pense que pour commencer, le minimum est de bloquer les création/éditions/suppressions pour les utilisateurs non confirmés (par mail). Au fait as-tu bien reçu ton mail de confirmation ?
Après il y a un add-on qui m'a l'air pas mal : http://www.mediawiki.org/wiki/Extension:FlaggedRevs
Donne la possibilité de &quot;marquer&quot; les pages, et approuver ou non... Seul les administrateurs sont habilités à le faire.
Le problème, c'est que j'ai planté le Wiki hier en tentant de l'installer... Tu pourrais essayer sur le tiens ? mdr...
----
j'ai déplacé &quot;démarrer avec mediawiki&quot; dans [[Aide:Accueil]]

Petite question: La section &quot;problèmes materiels&quot; a-t-elle vraiment lieu d'être?</text>
      <sha1>6ji2u6i5rwxr6e1xwa62ltphrbwskan</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>227</id>
      <parentid>226</parentid>
      <timestamp>2010-01-24T11:37:23Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="1547">Comme le propose LOU$!s
Je suggère que nous fassions trois grandes rubriques dans la page d'accueil :
* Non validés
* En cours de validation (Quelle est la procédure de validation ?)
* Validés
[[Utilisateur:Lol|Lol]]
----
Une suggestion : Bloquer les modifications pour les utilisateurs non-inscrits... (signé lol, modification faite sans être &quot;logué&quot;).
----
Bah je pense que tu peux commencer par bloquer les modifications des utilisateurs non inscrits, et d'empêcher ( comment ? ) l'utilisateur lambda de pouvoir rajouter &lt;nowiki&gt;{{Stable}}&lt;/nowiki&gt; à une page ( mais moi tu m'autorises, hein :p (nan je rigole, tu fais ce que tu veux)).
----
Sans rire (si je rigole tout le temps !), je fais ça aujourd'hui c'est important. Il faut régler certains points avant d'aller dans le mur... Qui a le droit de faire quoi...
Je pense que pour commencer, le minimum est de bloquer les création/éditions/suppressions pour les utilisateurs non confirmés (par mail). Au fait as-tu bien reçu ton mail de confirmation ?
Après il y a un add-on qui m'a l'air pas mal : http://www.mediawiki.org/wiki/Extension:FlaggedRevs
Donne la possibilité de &quot;marquer&quot; les pages, et approuver ou non... Seul les administrateurs sont habilités à le faire.
Le problème, c'est que j'ai planté le Wiki hier en tentant de l'installer... Tu pourrais essayer sur le tiens ? mdr...
----
j'ai déplacé &quot;démarrer avec mediawiki&quot; dans [[Aide:Accueil]]

Petite question: La section &quot;problèmes materiels&quot; a-t-elle vraiment lieu d'être?
[[Utilisateur:L0u!$|L0u!$]]</text>
      <sha1>nwn8ltuc186p0i44ag288tlft8f1n8r</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>228</id>
      <parentid>227</parentid>
      <timestamp>2010-01-24T11:41:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="1819">Comme le propose LOU$!s
Je suggère que nous fassions trois grandes rubriques dans la page d'accueil :
* Non validés
* En cours de validation (Quelle est la procédure de validation ?)
* Validés
[[Utilisateur:Lol|Lol]]
----
Une suggestion : Bloquer les modifications pour les utilisateurs non-inscrits... (signé lol, modification faite sans être &quot;logué&quot;).
----
Bah je pense que tu peux commencer par bloquer les modifications des utilisateurs non inscrits, et d'empêcher ( comment ? ) l'utilisateur lambda de pouvoir rajouter &lt;nowiki&gt;{{Stable}}&lt;/nowiki&gt; à une page ( mais moi tu m'autorises, hein :p (nan je rigole, tu fais ce que tu veux)).
----
Sans rire (si je rigole tout le temps !), je fais ça aujourd'hui c'est important. Il faut régler certains points avant d'aller dans le mur... Qui a le droit de faire quoi...
Je pense que pour commencer, le minimum est de bloquer les création/éditions/suppressions pour les utilisateurs non confirmés (par mail). Au fait as-tu bien reçu ton mail de confirmation ?
Après il y a un add-on qui m'a l'air pas mal : http://www.mediawiki.org/wiki/Extension:FlaggedRevs
Donne la possibilité de &quot;marquer&quot; les pages, et approuver ou non... Seul les administrateurs sont habilités à le faire.
Le problème, c'est que j'ai planté le Wiki hier en tentant de l'installer... Tu pourrais essayer sur le tiens ? mdr...
----
j'ai déplacé &quot;démarrer avec mediawiki&quot; dans [[Aide:Accueil]]

Petite question: La section &quot;problèmes materiels&quot; a-t-elle vraiment lieu d'être?
[[Utilisateur:L0u!$|L0u!$]]
----
Pour l'instant la seule qui soit importante, c'est &quot;en cours&quot;. Il faut réfléchir à une organisation de la page d'accueil en fonction de l'organisation que nous mettrons au Wiki. Le principal étant : Clarté ![[Utilisateur:Lol|Lol]] 24 janvier 2010 à 11:41 (UTC)</text>
      <sha1>3fhpp7no260cgt810mufpmbjeodrs4u</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>379</id>
      <parentid>228</parentid>
      <timestamp>2010-01-27T07:08:33Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1880">Comme le propose LOU$!s
Je suggère que nous fassions trois grandes rubriques dans la page d'accueil :
* Non validés
* En cours de validation (Quelle est la procédure de validation ?)
* Validés
[[Utilisateur:Lol|Lol]]
----
Une suggestion : Bloquer les modifications pour les utilisateurs non-inscrits... (signé lol, modification faite sans être &quot;logué&quot;).
----
Bah je pense que tu peux commencer par bloquer les modifications des utilisateurs non inscrits, et d'empêcher ( comment ? ) l'utilisateur lambda de pouvoir rajouter &lt;nowiki&gt;{{Stable}}&lt;/nowiki&gt; à une page ( mais moi tu m'autorises, hein :p (nan je rigole, tu fais ce que tu veux)).
----
Sans rire (si je rigole tout le temps !), je fais ça aujourd'hui c'est important. Il faut régler certains points avant d'aller dans le mur... Qui a le droit de faire quoi...
Je pense que pour commencer, le minimum est de bloquer les création/éditions/suppressions pour les utilisateurs non confirmés (par mail). Au fait as-tu bien reçu ton mail de confirmation ?
Après il y a un add-on qui m'a l'air pas mal : http://www.mediawiki.org/wiki/Extension:FlaggedRevs
Donne la possibilité de &quot;marquer&quot; les pages, et approuver ou non... Seul les administrateurs sont habilités à le faire.
Le problème, c'est que j'ai planté le Wiki hier en tentant de l'installer... Tu pourrais essayer sur le tiens ? mdr...
----
j'ai déplacé &quot;démarrer avec mediawiki&quot; dans [[Aide:Accueil]]

Petite question: La section &quot;problèmes materiels&quot; a-t-elle vraiment lieu d'être?
Pour renvoyer vers le forum s'il ne s'agit pas d'un &quot;truc&quot; ?
[[Utilisateur:L0u!$|L0u!$]]
----
Pour l'instant la seule qui soit importante, c'est &quot;en cours&quot;. Il faut réfléchir à une organisation de la page d'accueil en fonction de l'organisation que nous mettrons au Wiki. Le principal étant : Clarté ![[Utilisateur:Lol|Lol]] 24 janvier 2010 à 11:41 (UTC)</text>
      <sha1>ix0mx2rxndzxkdh8ha9xhizwijjadof</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>391</id>
      <parentid>379</parentid>
      <timestamp>2010-01-27T08:44:49Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="1925">Comme le propose LOU$!s
Je suggère que nous fassions trois grandes rubriques dans la page d'accueil :
* Non validés
* En cours de validation (Quelle est la procédure de validation ?)
* Validés
[[Utilisateur:Lol|Lol]]
----
Une suggestion : Bloquer les modifications pour les utilisateurs non-inscrits... (signé lol, modification faite sans être &quot;logué&quot;).
----
Bah je pense que tu peux commencer par bloquer les modifications des utilisateurs non inscrits, et d'empêcher ( comment ? ) l'utilisateur lambda de pouvoir rajouter &lt;nowiki&gt;{{Stable}}&lt;/nowiki&gt; à une page ( mais moi tu m'autorises, hein :p (nan je rigole, tu fais ce que tu veux)).
----
Sans rire (si je rigole tout le temps !), je fais ça aujourd'hui c'est important. Il faut régler certains points avant d'aller dans le mur... Qui a le droit de faire quoi...
Je pense que pour commencer, le minimum est de bloquer les création/éditions/suppressions pour les utilisateurs non confirmés (par mail). Au fait as-tu bien reçu ton mail de confirmation ?
Après il y a un add-on qui m'a l'air pas mal : http://www.mediawiki.org/wiki/Extension:FlaggedRevs
Donne la possibilité de &quot;marquer&quot; les pages, et approuver ou non... Seul les administrateurs sont habilités à le faire.
Le problème, c'est que j'ai planté le Wiki hier en tentant de l'installer... Tu pourrais essayer sur le tiens ? mdr...
----
j'ai déplacé &quot;démarrer avec mediawiki&quot; dans [[Aide:Accueil]]

Petite question: La section &quot;problèmes materiels&quot; a-t-elle vraiment lieu d'être?
[[Utilisateur:L0u!$|L0u!$]]
----
Pour l'instant la seule qui soit importante, c'est &quot;en cours&quot;. Il faut réfléchir à une organisation de la page d'accueil en fonction de l'organisation que nous mettrons au Wiki. Le principal étant : Clarté ![[Utilisateur:Lol|Lol]] 24 janvier 2010 à 11:41 (UTC)
----
Pour renvoyer vers le forum s'il ne s'agit pas d'un &quot;truc&quot; ? [[Utilisateur:ggoodluck47|ggoodluck47]]</text>
      <sha1>4t6v9xnlrdrnb66gggxlkrjvqezlc05</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>394</id>
      <parentid>391</parentid>
      <timestamp>2010-01-27T09:12:48Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2009">Comme le propose LOU$!s
Je suggère que nous fassions trois grandes rubriques dans la page d'accueil :
* Non validés
* En cours de validation (Quelle est la procédure de validation ?)
* Validés
[[Utilisateur:Lol|Lol]]
----
Une suggestion : Bloquer les modifications pour les utilisateurs non-inscrits... (signé lol, modification faite sans être &quot;logué&quot;).
----
Bah je pense que tu peux commencer par bloquer les modifications des utilisateurs non inscrits, et d'empêcher ( comment ? ) l'utilisateur lambda de pouvoir rajouter &lt;nowiki&gt;{{Stable}}&lt;/nowiki&gt; à une page ( mais moi tu m'autorises, hein :p (nan je rigole, tu fais ce que tu veux)).
----
Sans rire (si je rigole tout le temps !), je fais ça aujourd'hui c'est important. Il faut régler certains points avant d'aller dans le mur... Qui a le droit de faire quoi...
Je pense que pour commencer, le minimum est de bloquer les création/éditions/suppressions pour les utilisateurs non confirmés (par mail). Au fait as-tu bien reçu ton mail de confirmation ?
Après il y a un add-on qui m'a l'air pas mal : http://www.mediawiki.org/wiki/Extension:FlaggedRevs
Donne la possibilité de &quot;marquer&quot; les pages, et approuver ou non... Seul les administrateurs sont habilités à le faire.
Le problème, c'est que j'ai planté le Wiki hier en tentant de l'installer... Tu pourrais essayer sur le tiens ? mdr...
----
j'ai déplacé &quot;démarrer avec mediawiki&quot; dans [[Aide:Accueil]]

Petite question: La section &quot;problèmes materiels&quot; a-t-elle vraiment lieu d'être?
[[Utilisateur:L0u!$|L0u!$]]
----
Pour l'instant la seule qui soit importante, c'est &quot;en cours&quot;. Il faut réfléchir à une organisation de la page d'accueil en fonction de l'organisation que nous mettrons au Wiki. Le principal étant : Clarté ![[Utilisateur:Lol|Lol]] 24 janvier 2010 à 11:41 (UTC)
----
Petite question: La section &quot;problèmes materiels&quot; a-t-elle vraiment lieu d'être?

Pour renvoyer vers le forum s'il ne s'agit pas d'un &quot;truc&quot; ? [[Utilisateur:ggoodluck47|ggoodluck47]]</text>
      <sha1>hv7f52sst90zgb53ywidzau2dy9x0fc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>432</id>
      <parentid>394</parentid>
      <timestamp>2010-01-27T19:55:36Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="2054">Comme le propose LOU$!s
Je suggère que nous fassions trois grandes rubriques dans la page d'accueil :
* Non validés
* En cours de validation (Quelle est la procédure de validation ?)
* Validés
[[Utilisateur:Lol|Lol]]
----
Une suggestion : Bloquer les modifications pour les utilisateurs non-inscrits... (signé lol, modification faite sans être &quot;logué&quot;).
----
Bah je pense que tu peux commencer par bloquer les modifications des utilisateurs non inscrits, et d'empêcher ( comment ? ) l'utilisateur lambda de pouvoir rajouter &lt;nowiki&gt;{{Stable}}&lt;/nowiki&gt; à une page ( mais moi tu m'autorises, hein :p (nan je rigole, tu fais ce que tu veux)).
----
Sans rire (si je rigole tout le temps !), je fais ça aujourd'hui c'est important. Il faut régler certains points avant d'aller dans le mur... Qui a le droit de faire quoi...
Je pense que pour commencer, le minimum est de bloquer les création/éditions/suppressions pour les utilisateurs non confirmés (par mail). Au fait as-tu bien reçu ton mail de confirmation ?
Après il y a un add-on qui m'a l'air pas mal : http://www.mediawiki.org/wiki/Extension:FlaggedRevs
Donne la possibilité de &quot;marquer&quot; les pages, et approuver ou non... Seul les administrateurs sont habilités à le faire.
Le problème, c'est que j'ai planté le Wiki hier en tentant de l'installer... Tu pourrais essayer sur le tiens ? mdr...
----
j'ai déplacé &quot;démarrer avec mediawiki&quot; dans [[Aide:Accueil]]

Petite question: La section &quot;problèmes materiels&quot; a-t-elle vraiment lieu d'être?
[[Utilisateur:L0u!$|L0u!$]]
----
Pour l'instant la seule qui soit importante, c'est &quot;en cours&quot;. Il faut réfléchir à une organisation de la page d'accueil en fonction de l'organisation que nous mettrons au Wiki. Le principal étant : Clarté ![[Utilisateur:Lol|Lol]] 24 janvier 2010 à 11:41 (UTC)
----
Petite question: La section &quot;problèmes materiels&quot; a-t-elle vraiment lieu d'être?

Pour renvoyer vers le forum s'il ne s'agit pas d'un &quot;truc&quot; ? [[Utilisateur:ggoodluck47|ggoodluck47]]
----
Ok gérard. [[Utilisateur:L0u!$|L0u!$]]</text>
      <sha1>gbwj3xoois6e367qjxy0mju9eqq40j7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>655</id>
      <parentid>432</parentid>
      <timestamp>2010-02-01T08:11:16Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="2225">Comme le propose LOU$!s
Je suggère que nous fassions trois grandes rubriques dans la page d'accueil :
* Non validés
* En cours de validation (Quelle est la procédure de validation ?)
* Validés
[[Utilisateur:Lol|Lol]]
----
Une suggestion : Bloquer les modifications pour les utilisateurs non-inscrits... (signé lol, modification faite sans être &quot;logué&quot;).
----
Bah je pense que tu peux commencer par bloquer les modifications des utilisateurs non inscrits, et d'empêcher ( comment ? ) l'utilisateur lambda de pouvoir rajouter &lt;nowiki&gt;{{Stable}}&lt;/nowiki&gt; à une page ( mais moi tu m'autorises, hein :p (nan je rigole, tu fais ce que tu veux)).
----
Sans rire (si je rigole tout le temps !), je fais ça aujourd'hui c'est important. Il faut régler certains points avant d'aller dans le mur... Qui a le droit de faire quoi...
Je pense que pour commencer, le minimum est de bloquer les création/éditions/suppressions pour les utilisateurs non confirmés (par mail). Au fait as-tu bien reçu ton mail de confirmation ?
Après il y a un add-on qui m'a l'air pas mal : http://www.mediawiki.org/wiki/Extension:FlaggedRevs
Donne la possibilité de &quot;marquer&quot; les pages, et approuver ou non... Seul les administrateurs sont habilités à le faire.
Le problème, c'est que j'ai planté le Wiki hier en tentant de l'installer... Tu pourrais essayer sur le tiens ? mdr...
----
j'ai déplacé &quot;démarrer avec mediawiki&quot; dans [[Aide:Accueil]]

Petite question: La section &quot;problèmes materiels&quot; a-t-elle vraiment lieu d'être?
[[Utilisateur:L0u!$|L0u!$]]
----
Pour l'instant la seule qui soit importante, c'est &quot;en cours&quot;. Il faut réfléchir à une organisation de la page d'accueil en fonction de l'organisation que nous mettrons au Wiki. Le principal étant : Clarté ![[Utilisateur:Lol|Lol]] 24 janvier 2010 à 11:41 (UTC)
----
Petite question: La section &quot;problèmes materiels&quot; a-t-elle vraiment lieu d'être?

Pour renvoyer vers le forum s'il ne s'agit pas d'un &quot;truc&quot; ? [[Utilisateur:ggoodluck47|ggoodluck47]]
----
Ok gérard. [[Utilisateur:L0u!$|L0u!$]]
----
Refonte de la page d'accueil,[[Projet_Accueil|c'est ici]] vous êtes invités à donner votre avis. Merci [[Utilisateur:Lol|Lol]] 1 février 2010 à 08:11 (UTC)
----</text>
      <sha1>i234z31bv1gd1filxvt7t8mrshjozki</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>831</id>
      <parentid>655</parentid>
      <timestamp>2010-02-04T09:16:44Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Discussion sur les catégories */ nouvelle section</comment>
      <text xml:space="preserve" bytes="3348">Comme le propose LOU$!s
Je suggère que nous fassions trois grandes rubriques dans la page d'accueil :
* Non validés
* En cours de validation (Quelle est la procédure de validation ?)
* Validés
[[Utilisateur:Lol|Lol]]
----
Une suggestion : Bloquer les modifications pour les utilisateurs non-inscrits... (signé lol, modification faite sans être &quot;logué&quot;).
----
Bah je pense que tu peux commencer par bloquer les modifications des utilisateurs non inscrits, et d'empêcher ( comment ? ) l'utilisateur lambda de pouvoir rajouter &lt;nowiki&gt;{{Stable}}&lt;/nowiki&gt; à une page ( mais moi tu m'autorises, hein :p (nan je rigole, tu fais ce que tu veux)).
----
Sans rire (si je rigole tout le temps !), je fais ça aujourd'hui c'est important. Il faut régler certains points avant d'aller dans le mur... Qui a le droit de faire quoi...
Je pense que pour commencer, le minimum est de bloquer les création/éditions/suppressions pour les utilisateurs non confirmés (par mail). Au fait as-tu bien reçu ton mail de confirmation ?
Après il y a un add-on qui m'a l'air pas mal : http://www.mediawiki.org/wiki/Extension:FlaggedRevs
Donne la possibilité de &quot;marquer&quot; les pages, et approuver ou non... Seul les administrateurs sont habilités à le faire.
Le problème, c'est que j'ai planté le Wiki hier en tentant de l'installer... Tu pourrais essayer sur le tiens ? mdr...
----
j'ai déplacé &quot;démarrer avec mediawiki&quot; dans [[Aide:Accueil]]

Petite question: La section &quot;problèmes materiels&quot; a-t-elle vraiment lieu d'être?
[[Utilisateur:L0u!$|L0u!$]]
----
Pour l'instant la seule qui soit importante, c'est &quot;en cours&quot;. Il faut réfléchir à une organisation de la page d'accueil en fonction de l'organisation que nous mettrons au Wiki. Le principal étant : Clarté ![[Utilisateur:Lol|Lol]] 24 janvier 2010 à 11:41 (UTC)
----
Petite question: La section &quot;problèmes materiels&quot; a-t-elle vraiment lieu d'être?

Pour renvoyer vers le forum s'il ne s'agit pas d'un &quot;truc&quot; ? [[Utilisateur:ggoodluck47|ggoodluck47]]
----
Ok gérard. [[Utilisateur:L0u!$|L0u!$]]
----
Refonte de la page d'accueil,[[Projet_Accueil|c'est ici]] vous êtes invités à donner votre avis. Merci [[Utilisateur:Lol|Lol]] 1 février 2010 à 08:11 (UTC)
----

== Discussion sur les catégories ==

Je place cette discussion ici, je pense qu'il y a plus de personnes qui passent... Il est temps, maintenant que le Wiki prends forme, de se pencher sur l'organisation. La Wiki met à notre disposition les catégories qui permettent de ranger facilement les articles à leur place (Une place pour chaque chose, chaque chose à sa place...)...

Je propose quelque chose qui ressemblerait à ça: 

* '''General'''
** Installation
*** Logiciels par défaut
*** Compléter l'installation
*** Astuces pour débuter
* '''Matériel et Drivers'''
** Carte vidéo
*** Nvidia
*** Ati
** Xorg
** Ntfs 
* '''Logiciels'''
** Paquets
** Gestionnaires de fenêtres
*** Flottants
*** Tilings
** Multimédia
** Bureautique
** Jeux
** Virtualisation
* '''Commandes'''
** Commandes de base
** Commandes complexes
* '''Réseau et Wifi'''
** Configuration du réseau
** Wifi
* '''Noyau (Kernel)'''
** Compiler
* '''Programmation'''
** Scripts mode d'emploi
* '''Sécurité'''
** Iptables (pare-feu)
** Logiciels de Sécurisation
* '''Inclassable'''

[[Utilisateur:Lol|Lol]] 4 février 2010 à 09:16 (UTC)</text>
      <sha1>n9603xuxswen1mrmqg5qzacced6byxz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>832</id>
      <parentid>831</parentid>
      <timestamp>2010-02-04T09:17:07Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Discussion sur les catégories */ nouvelle section</comment>
      <text xml:space="preserve" bytes="4471">Comme le propose LOU$!s
Je suggère que nous fassions trois grandes rubriques dans la page d'accueil :
* Non validés
* En cours de validation (Quelle est la procédure de validation ?)
* Validés
[[Utilisateur:Lol|Lol]]
----
Une suggestion : Bloquer les modifications pour les utilisateurs non-inscrits... (signé lol, modification faite sans être &quot;logué&quot;).
----
Bah je pense que tu peux commencer par bloquer les modifications des utilisateurs non inscrits, et d'empêcher ( comment ? ) l'utilisateur lambda de pouvoir rajouter &lt;nowiki&gt;{{Stable}}&lt;/nowiki&gt; à une page ( mais moi tu m'autorises, hein :p (nan je rigole, tu fais ce que tu veux)).
----
Sans rire (si je rigole tout le temps !), je fais ça aujourd'hui c'est important. Il faut régler certains points avant d'aller dans le mur... Qui a le droit de faire quoi...
Je pense que pour commencer, le minimum est de bloquer les création/éditions/suppressions pour les utilisateurs non confirmés (par mail). Au fait as-tu bien reçu ton mail de confirmation ?
Après il y a un add-on qui m'a l'air pas mal : http://www.mediawiki.org/wiki/Extension:FlaggedRevs
Donne la possibilité de &quot;marquer&quot; les pages, et approuver ou non... Seul les administrateurs sont habilités à le faire.
Le problème, c'est que j'ai planté le Wiki hier en tentant de l'installer... Tu pourrais essayer sur le tiens ? mdr...
----
j'ai déplacé &quot;démarrer avec mediawiki&quot; dans [[Aide:Accueil]]

Petite question: La section &quot;problèmes materiels&quot; a-t-elle vraiment lieu d'être?
[[Utilisateur:L0u!$|L0u!$]]
----
Pour l'instant la seule qui soit importante, c'est &quot;en cours&quot;. Il faut réfléchir à une organisation de la page d'accueil en fonction de l'organisation que nous mettrons au Wiki. Le principal étant : Clarté ![[Utilisateur:Lol|Lol]] 24 janvier 2010 à 11:41 (UTC)
----
Petite question: La section &quot;problèmes materiels&quot; a-t-elle vraiment lieu d'être?

Pour renvoyer vers le forum s'il ne s'agit pas d'un &quot;truc&quot; ? [[Utilisateur:ggoodluck47|ggoodluck47]]
----
Ok gérard. [[Utilisateur:L0u!$|L0u!$]]
----
Refonte de la page d'accueil,[[Projet_Accueil|c'est ici]] vous êtes invités à donner votre avis. Merci [[Utilisateur:Lol|Lol]] 1 février 2010 à 08:11 (UTC)
----

== Discussion sur les catégories ==

Je place cette discussion ici, je pense qu'il y a plus de personnes qui passent... Il est temps, maintenant que le Wiki prends forme, de se pencher sur l'organisation. La Wiki met à notre disposition les catégories qui permettent de ranger facilement les articles à leur place (Une place pour chaque chose, chaque chose à sa place...)...

Je propose quelque chose qui ressemblerait à ça: 

* '''General'''
** Installation
*** Logiciels par défaut
*** Compléter l'installation
*** Astuces pour débuter
* '''Matériel et Drivers'''
** Carte vidéo
*** Nvidia
*** Ati
** Xorg
** Ntfs 
* '''Logiciels'''
** Paquets
** Gestionnaires de fenêtres
*** Flottants
*** Tilings
** Multimédia
** Bureautique
** Jeux
** Virtualisation
* '''Commandes'''
** Commandes de base
** Commandes complexes
* '''Réseau et Wifi'''
** Configuration du réseau
** Wifi
* '''Noyau (Kernel)'''
** Compiler
* '''Programmation'''
** Scripts mode d'emploi
* '''Sécurité'''
** Iptables (pare-feu)
** Logiciels de Sécurisation
* '''Inclassable'''

[[Utilisateur:Lol|Lol]] 4 février 2010 à 09:16 (UTC)

== Discussion sur les catégories ==

Je place cette discussion ici, je pense qu'il y a plus de personnes qui passent... Il est temps, maintenant que le Wiki prends forme, de se pencher sur l'organisation. La Wiki met à notre disposition les catégories qui permettent de ranger facilement les articles à leur place (Une place pour chaque chose, chaque chose à sa place...)...

Je propose quelque chose qui ressemblerait à ça: 

* '''General'''
** Installation
*** Logiciels par défaut
*** Compléter l'installation
*** Astuces pour débuter
* '''Matériel et Drivers'''
** Carte vidéo
*** Nvidia
*** Ati
** Xorg
** Ntfs 
* '''Logiciels'''
** Paquets
** Gestionnaires de fenêtres
*** Flottants
*** Tilings
** Multimédia
** Bureautique
** Jeux
** Virtualisation
* '''Commandes'''
** Commandes de base
** Commandes complexes
* '''Réseau et Wifi'''
** Configuration du réseau
** Wifi
* '''Noyau (Kernel)'''
** Compiler
* '''Programmation'''
** Scripts mode d'emploi
* '''Sécurité'''
** Iptables (pare-feu)
** Logiciels de Sécurisation
* '''Inclassable'''

[[Utilisateur:Lol|Lol]] 4 février 2010 à 09:17 (UTC)</text>
      <sha1>q85gtewiw28qtfyaumiw191brnt6alz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>833</id>
      <parentid>832</parentid>
      <timestamp>2010-02-04T09:18:15Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3348">Comme le propose LOU$!s
Je suggère que nous fassions trois grandes rubriques dans la page d'accueil :
* Non validés
* En cours de validation (Quelle est la procédure de validation ?)
* Validés
[[Utilisateur:Lol|Lol]]
----
Une suggestion : Bloquer les modifications pour les utilisateurs non-inscrits... (signé lol, modification faite sans être &quot;logué&quot;).
----
Bah je pense que tu peux commencer par bloquer les modifications des utilisateurs non inscrits, et d'empêcher ( comment ? ) l'utilisateur lambda de pouvoir rajouter &lt;nowiki&gt;{{Stable}}&lt;/nowiki&gt; à une page ( mais moi tu m'autorises, hein :p (nan je rigole, tu fais ce que tu veux)).
----
Sans rire (si je rigole tout le temps !), je fais ça aujourd'hui c'est important. Il faut régler certains points avant d'aller dans le mur... Qui a le droit de faire quoi...
Je pense que pour commencer, le minimum est de bloquer les création/éditions/suppressions pour les utilisateurs non confirmés (par mail). Au fait as-tu bien reçu ton mail de confirmation ?
Après il y a un add-on qui m'a l'air pas mal : http://www.mediawiki.org/wiki/Extension:FlaggedRevs
Donne la possibilité de &quot;marquer&quot; les pages, et approuver ou non... Seul les administrateurs sont habilités à le faire.
Le problème, c'est que j'ai planté le Wiki hier en tentant de l'installer... Tu pourrais essayer sur le tiens ? mdr...
----
j'ai déplacé &quot;démarrer avec mediawiki&quot; dans [[Aide:Accueil]]

Petite question: La section &quot;problèmes materiels&quot; a-t-elle vraiment lieu d'être?
[[Utilisateur:L0u!$|L0u!$]]
----
Pour l'instant la seule qui soit importante, c'est &quot;en cours&quot;. Il faut réfléchir à une organisation de la page d'accueil en fonction de l'organisation que nous mettrons au Wiki. Le principal étant : Clarté ![[Utilisateur:Lol|Lol]] 24 janvier 2010 à 11:41 (UTC)
----
Petite question: La section &quot;problèmes materiels&quot; a-t-elle vraiment lieu d'être?

Pour renvoyer vers le forum s'il ne s'agit pas d'un &quot;truc&quot; ? [[Utilisateur:ggoodluck47|ggoodluck47]]
----
Ok gérard. [[Utilisateur:L0u!$|L0u!$]]
----
Refonte de la page d'accueil,[[Projet_Accueil|c'est ici]] vous êtes invités à donner votre avis. Merci [[Utilisateur:Lol|Lol]] 1 février 2010 à 08:11 (UTC)
----

== Discussion sur les catégories ==

Je place cette discussion ici, je pense qu'il y a plus de personnes qui passent... Il est temps, maintenant que le Wiki prends forme, de se pencher sur l'organisation. La Wiki met à notre disposition les catégories qui permettent de ranger facilement les articles à leur place (Une place pour chaque chose, chaque chose à sa place...)...

Je propose quelque chose qui ressemblerait à ça: 

* '''General'''
** Installation
*** Logiciels par défaut
*** Compléter l'installation
*** Astuces pour débuter
* '''Matériel et Drivers'''
** Carte vidéo
*** Nvidia
*** Ati
** Xorg
** Ntfs 
* '''Logiciels'''
** Paquets
** Gestionnaires de fenêtres
*** Flottants
*** Tilings
** Multimédia
** Bureautique
** Jeux
** Virtualisation
* '''Commandes'''
** Commandes de base
** Commandes complexes
* '''Réseau et Wifi'''
** Configuration du réseau
** Wifi
* '''Noyau (Kernel)'''
** Compiler
* '''Programmation'''
** Scripts mode d'emploi
* '''Sécurité'''
** Iptables (pare-feu)
** Logiciels de Sécurisation
* '''Inclassable'''

[[Utilisateur:Lol|Lol]] 4 février 2010 à 09:16 (UTC)</text>
      <sha1>n9603xuxswen1mrmqg5qzacced6byxz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>890</id>
      <parentid>833</parentid>
      <timestamp>2010-02-05T11:27:04Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Discussion sur les catégories */</comment>
      <text xml:space="preserve" bytes="3390">Comme le propose LOU$!s
Je suggère que nous fassions trois grandes rubriques dans la page d'accueil :
* Non validés
* En cours de validation (Quelle est la procédure de validation ?)
* Validés
[[Utilisateur:Lol|Lol]]
----
Une suggestion : Bloquer les modifications pour les utilisateurs non-inscrits... (signé lol, modification faite sans être &quot;logué&quot;).
----
Bah je pense que tu peux commencer par bloquer les modifications des utilisateurs non inscrits, et d'empêcher ( comment ? ) l'utilisateur lambda de pouvoir rajouter &lt;nowiki&gt;{{Stable}}&lt;/nowiki&gt; à une page ( mais moi tu m'autorises, hein :p (nan je rigole, tu fais ce que tu veux)).
----
Sans rire (si je rigole tout le temps !), je fais ça aujourd'hui c'est important. Il faut régler certains points avant d'aller dans le mur... Qui a le droit de faire quoi...
Je pense que pour commencer, le minimum est de bloquer les création/éditions/suppressions pour les utilisateurs non confirmés (par mail). Au fait as-tu bien reçu ton mail de confirmation ?
Après il y a un add-on qui m'a l'air pas mal : http://www.mediawiki.org/wiki/Extension:FlaggedRevs
Donne la possibilité de &quot;marquer&quot; les pages, et approuver ou non... Seul les administrateurs sont habilités à le faire.
Le problème, c'est que j'ai planté le Wiki hier en tentant de l'installer... Tu pourrais essayer sur le tiens ? mdr...
----
j'ai déplacé &quot;démarrer avec mediawiki&quot; dans [[Aide:Accueil]]

Petite question: La section &quot;problèmes materiels&quot; a-t-elle vraiment lieu d'être?
[[Utilisateur:L0u!$|L0u!$]]
----
Pour l'instant la seule qui soit importante, c'est &quot;en cours&quot;. Il faut réfléchir à une organisation de la page d'accueil en fonction de l'organisation que nous mettrons au Wiki. Le principal étant : Clarté ![[Utilisateur:Lol|Lol]] 24 janvier 2010 à 11:41 (UTC)
----
Petite question: La section &quot;problèmes materiels&quot; a-t-elle vraiment lieu d'être?

Pour renvoyer vers le forum s'il ne s'agit pas d'un &quot;truc&quot; ? [[Utilisateur:ggoodluck47|ggoodluck47]]
----
Ok gérard. [[Utilisateur:L0u!$|L0u!$]]
----
Refonte de la page d'accueil,[[Projet_Accueil|c'est ici]] vous êtes invités à donner votre avis. Merci [[Utilisateur:Lol|Lol]] 1 février 2010 à 08:11 (UTC)
----

== Discussion sur les catégories  ==

Je place cette discussion ici, je pense qu'il y a plus de personnes qui passent... Il est temps, maintenant que le Wiki prends forme, de se pencher sur l'organisation. La Wiki met à notre disposition les catégories qui permettent de ranger facilement les articles à leur place (Une place pour chaque chose, chaque chose à sa place...)... 

Je propose quelque chose qui ressemblerait à ça: 

*&lt;u&gt;'''General'''&lt;/u&gt; 
**'''Installation''' 
***Logiciels par défaut 
***Compléter l'installation 
***Astuces pour débuter 
**'''Matériel et Drivers''' 
***Carte vidéo 
****Nvidia 
****Ati 
***Xorg 
***Ntfs 
**'''Logiciels''' 
***Paquets 
***Gestionnaires de fenêtres 
****Flottants 
****Tilings 
***Multimédia 
***Bureautique 
***Jeux 
***Virtualisation 
**'''Commandes''' 
***Commandes de base 
***Commandes complexes 
**'''Réseau et Wifi''' 
***Configuration du réseau 
***Wifi 
**'''Noyau (Kernel)''' 
***Compiler 
**'''Programmation''' 
***Scripts mode d'emploi 
**'''Sécurité''' 
***Iptables (pare-feu) 
***Logiciels de Sécurisation 
**'''Inclassable'''

[[Utilisateur:Lol|Lol]] 4 février 2010 à 09:16 (UTC)</text>
      <sha1>c2trcpgbwb6jqw1n23yvcc8mbk6i4m8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>891</id>
      <parentid>890</parentid>
      <timestamp>2010-02-05T11:27:41Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3390">Comme le propose LOU$!s
Je suggère que nous fassions trois grandes rubriques dans la page d'accueil :
* Non validés
* En cours de validation (Quelle est la procédure de validation ?)
* Validés
[[Utilisateur:Lol|Lol]]
----
Une suggestion : Bloquer les modifications pour les utilisateurs non-inscrits... (signé lol, modification faite sans être &quot;logué&quot;).
----
Bah je pense que tu peux commencer par bloquer les modifications des utilisateurs non inscrits, et d'empêcher ( comment ? ) l'utilisateur lambda de pouvoir rajouter &lt;nowiki&gt;{{Stable}}&lt;/nowiki&gt; à une page ( mais moi tu m'autorises, hein :p (nan je rigole, tu fais ce que tu veux)).
----
Sans rire (si je rigole tout le temps !), je fais ça aujourd'hui c'est important. Il faut régler certains points avant d'aller dans le mur... Qui a le droit de faire quoi...
Je pense que pour commencer, le minimum est de bloquer les création/éditions/suppressions pour les utilisateurs non confirmés (par mail). Au fait as-tu bien reçu ton mail de confirmation ?
Après il y a un add-on qui m'a l'air pas mal : http://www.mediawiki.org/wiki/Extension:FlaggedRevs
Donne la possibilité de &quot;marquer&quot; les pages, et approuver ou non... Seul les administrateurs sont habilités à le faire.
Le problème, c'est que j'ai planté le Wiki hier en tentant de l'installer... Tu pourrais essayer sur le tiens ? mdr...
----
j'ai déplacé &quot;démarrer avec mediawiki&quot; dans [[Aide:Accueil]]

Petite question: La section &quot;problèmes materiels&quot; a-t-elle vraiment lieu d'être?
[[Utilisateur:L0u!$|L0u!$]]
----
Pour l'instant la seule qui soit importante, c'est &quot;en cours&quot;. Il faut réfléchir à une organisation de la page d'accueil en fonction de l'organisation que nous mettrons au Wiki. Le principal étant : Clarté ![[Utilisateur:Lol|Lol]] 24 janvier 2010 à 11:41 (UTC)
----
Petite question: La section &quot;problèmes materiels&quot; a-t-elle vraiment lieu d'être?

Pour renvoyer vers le forum s'il ne s'agit pas d'un &quot;truc&quot; ? [[Utilisateur:ggoodluck47|ggoodluck47]]
----
Ok gérard. [[Utilisateur:L0u!$|L0u!$]]
----
Refonte de la page d'accueil,[[Projet_Accueil|c'est ici]] vous êtes invités à donner votre avis. Merci [[Utilisateur:Lol|Lol]] 1 février 2010 à 08:11 (UTC)
----

== Discussion sur les catégories  ==

Je place cette discussion ici, je pense qu'il y a plus de personnes qui passent... Il est temps, maintenant que le Wiki prends forme, de se pencher sur l'organisation. La Wiki met à notre disposition les catégories qui permettent de ranger facilement les articles à leur place (Une place pour chaque chose, chaque chose à sa place...)... 

Je propose quelque chose qui ressemblerait à ça: 

*&lt;u&gt;'''General'''&lt;/u&gt; 
**'''Installation''' 
***Logiciels par défaut 
***Compléter l'installation 
***Astuces pour débuter 
**'''Matériel et Pilotes''' 
***Carte vidéo 
****Nvidia 
****Ati 
***Xorg 
***Ntfs 
**'''Logiciels''' 
***Paquets 
***Gestionnaires de fenêtres 
****Flottants 
****Tilings 
***Multimédia 
***Bureautique 
***Jeux 
***Virtualisation 
**'''Commandes''' 
***Commandes de base 
***Commandes complexes 
**'''Réseau et Wifi''' 
***Configuration du réseau 
***Wifi 
**'''Noyau (Kernel)''' 
***Compiler 
**'''Programmation''' 
***Scripts mode d'emploi 
**'''Sécurité''' 
***Iptables (pare-feu) 
***Logiciels de Sécurisation 
**'''Inclassable'''

[[Utilisateur:Lol|Lol]] 4 février 2010 à 09:16 (UTC)</text>
      <sha1>qjen8b8bx2irt956gq5mpdfi8hv5wz7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1137</id>
      <parentid>891</parentid>
      <timestamp>2010-03-13T23:23:40Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <text xml:space="preserve" bytes="3526">Comme le propose LOU$!s
Je suggère que nous fassions trois grandes rubriques dans la page d'accueil :
* Non validés
* En cours de validation (Quelle est la procédure de validation ?)
* Validés
[[Utilisateur:Lol|Lol]]
----
Une suggestion : Bloquer les modifications pour les utilisateurs non-inscrits... (signé lol, modification faite sans être &quot;logué&quot;).
----
Bah je pense que tu peux commencer par bloquer les modifications des utilisateurs non inscrits, et d'empêcher ( comment ? ) l'utilisateur lambda de pouvoir rajouter &lt;nowiki&gt;{{Stable}}&lt;/nowiki&gt; à une page ( mais moi tu m'autorises, hein :p (nan je rigole, tu fais ce que tu veux)).
----
Sans rire (si je rigole tout le temps !), je fais ça aujourd'hui c'est important. Il faut régler certains points avant d'aller dans le mur... Qui a le droit de faire quoi...
Je pense que pour commencer, le minimum est de bloquer les création/éditions/suppressions pour les utilisateurs non confirmés (par mail). Au fait as-tu bien reçu ton mail de confirmation ?
Après il y a un add-on qui m'a l'air pas mal : http://www.mediawiki.org/wiki/Extension:FlaggedRevs
Donne la possibilité de &quot;marquer&quot; les pages, et approuver ou non... Seul les administrateurs sont habilités à le faire.
Le problème, c'est que j'ai planté le Wiki hier en tentant de l'installer... Tu pourrais essayer sur le tiens ? mdr...
----
j'ai déplacé &quot;démarrer avec mediawiki&quot; dans [[Aide:Accueil]]

Petite question: La section &quot;problèmes materiels&quot; a-t-elle vraiment lieu d'être?
[[Utilisateur:L0u!$|L0u!$]]
----
Pour l'instant la seule qui soit importante, c'est &quot;en cours&quot;. Il faut réfléchir à une organisation de la page d'accueil en fonction de l'organisation que nous mettrons au Wiki. Le principal étant : Clarté ![[Utilisateur:Lol|Lol]] 24 janvier 2010 à 11:41 (UTC)
----
Petite question: La section &quot;problèmes materiels&quot; a-t-elle vraiment lieu d'être?

Pour renvoyer vers le forum s'il ne s'agit pas d'un &quot;truc&quot; ? [[Utilisateur:ggoodluck47|ggoodluck47]]
----
Ok gérard. [[Utilisateur:L0u!$|L0u!$]]
----
Refonte de la page d'accueil,[[Projet_Accueil|c'est ici]] vous êtes invités à donner votre avis. Merci [[Utilisateur:Lol|Lol]] 1 février 2010 à 08:11 (UTC)
----
Il serait pas mieux de pouvoir accéder aux catégories directement à la page d'accueil ? [[Utilisateur:MisterFreez|MisterFreez]]
----

== Discussion sur les catégories  ==

Je place cette discussion ici, je pense qu'il y a plus de personnes qui passent... Il est temps, maintenant que le Wiki prends forme, de se pencher sur l'organisation. La Wiki met à notre disposition les catégories qui permettent de ranger facilement les articles à leur place (Une place pour chaque chose, chaque chose à sa place...)... 

Je propose quelque chose qui ressemblerait à ça: 

*&lt;u&gt;'''General'''&lt;/u&gt; 
**'''Installation''' 
***Logiciels par défaut 
***Compléter l'installation 
***Astuces pour débuter 
**'''Matériel et Pilotes''' 
***Carte vidéo 
****Nvidia 
****Ati 
***Xorg 
***Ntfs 
**'''Logiciels''' 
***Paquets 
***Gestionnaires de fenêtres 
****Flottants 
****Tilings 
***Multimédia 
***Bureautique 
***Jeux 
***Virtualisation 
**'''Commandes''' 
***Commandes de base 
***Commandes complexes 
**'''Réseau et Wifi''' 
***Configuration du réseau 
***Wifi 
**'''Noyau (Kernel)''' 
***Compiler 
**'''Programmation''' 
***Scripts mode d'emploi 
**'''Sécurité''' 
***Iptables (pare-feu) 
***Logiciels de Sécurisation 
**'''Inclassable'''

[[Utilisateur:Lol|Lol]] 4 février 2010 à 09:16 (UTC)</text>
      <sha1>r312vmu7zs1t0slv1oecc3qcpxd0qsk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1139</id>
      <parentid>1137</parentid>
      <timestamp>2010-03-14T03:58:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3826">Comme le propose LOU$!s
Je suggère que nous fassions trois grandes rubriques dans la page d'accueil :
* Non validés
* En cours de validation (Quelle est la procédure de validation ?)
* Validés
[[Utilisateur:Lol|Lol]]
----
Une suggestion : Bloquer les modifications pour les utilisateurs non-inscrits... (signé lol, modification faite sans être &quot;logué&quot;).
----
Bah je pense que tu peux commencer par bloquer les modifications des utilisateurs non inscrits, et d'empêcher ( comment ? ) l'utilisateur lambda de pouvoir rajouter &lt;nowiki&gt;{{Stable}}&lt;/nowiki&gt; à une page ( mais moi tu m'autorises, hein :p (nan je rigole, tu fais ce que tu veux)).
----
Sans rire (si je rigole tout le temps !), je fais ça aujourd'hui c'est important. Il faut régler certains points avant d'aller dans le mur... Qui a le droit de faire quoi...
Je pense que pour commencer, le minimum est de bloquer les création/éditions/suppressions pour les utilisateurs non confirmés (par mail). Au fait as-tu bien reçu ton mail de confirmation ?
Après il y a un add-on qui m'a l'air pas mal : http://www.mediawiki.org/wiki/Extension:FlaggedRevs
Donne la possibilité de &quot;marquer&quot; les pages, et approuver ou non... Seul les administrateurs sont habilités à le faire.
Le problème, c'est que j'ai planté le Wiki hier en tentant de l'installer... Tu pourrais essayer sur le tiens ? mdr...
----
j'ai déplacé &quot;démarrer avec mediawiki&quot; dans [[Aide:Accueil]]

Petite question: La section &quot;problèmes materiels&quot; a-t-elle vraiment lieu d'être?
[[Utilisateur:L0u!$|L0u!$]]
----
Pour l'instant la seule qui soit importante, c'est &quot;en cours&quot;. Il faut réfléchir à une organisation de la page d'accueil en fonction de l'organisation que nous mettrons au Wiki. Le principal étant : Clarté ![[Utilisateur:Lol|Lol]] 24 janvier 2010 à 11:41 (UTC)
----
Petite question: La section &quot;problèmes materiels&quot; a-t-elle vraiment lieu d'être?

Pour renvoyer vers le forum s'il ne s'agit pas d'un &quot;truc&quot; ? [[Utilisateur:ggoodluck47|ggoodluck47]]
----
Ok gérard. [[Utilisateur:L0u!$|L0u!$]]
----
Refonte de la page d'accueil,[[Projet_Accueil|c'est ici]] vous êtes invités à donner votre avis. Merci [[Utilisateur:Lol|Lol]] 1 février 2010 à 08:11 (UTC)
----
Il serait pas mieux de pouvoir accéder aux catégories directement à la page d'accueil ? [[Utilisateur:MisterFreez|MisterFreez]]
----
C'est ce que j'ai fait sur le projet de nouvelle page d'accueil [[Projet_Accueil]]. L'arborescence des catégories est en bas de page. Ton avis sur ce nouveau sommaire ? Je n'ai pas eu beaucoup de commentaires, et je ne veut pas l'imposer...
[[Utilisateur:Lol|Lol]] 14 mars 2010 à 03:58 (UTC)
----


== Discussion sur les catégories  ==

Je place cette discussion ici, je pense qu'il y a plus de personnes qui passent... Il est temps, maintenant que le Wiki prends forme, de se pencher sur l'organisation. La Wiki met à notre disposition les catégories qui permettent de ranger facilement les articles à leur place (Une place pour chaque chose, chaque chose à sa place...)... 

Je propose quelque chose qui ressemblerait à ça: 

*&lt;u&gt;'''General'''&lt;/u&gt; 
**'''Installation''' 
***Logiciels par défaut 
***Compléter l'installation 
***Astuces pour débuter 
**'''Matériel et Pilotes''' 
***Carte vidéo 
****Nvidia 
****Ati 
***Xorg 
***Ntfs 
**'''Logiciels''' 
***Paquets 
***Gestionnaires de fenêtres 
****Flottants 
****Tilings 
***Multimédia 
***Bureautique 
***Jeux 
***Virtualisation 
**'''Commandes''' 
***Commandes de base 
***Commandes complexes 
**'''Réseau et Wifi''' 
***Configuration du réseau 
***Wifi 
**'''Noyau (Kernel)''' 
***Compiler 
**'''Programmation''' 
***Scripts mode d'emploi 
**'''Sécurité''' 
***Iptables (pare-feu) 
***Logiciels de Sécurisation 
**'''Inclassable'''

[[Utilisateur:Lol|Lol]] 4 février 2010 à 09:16 (UTC)</text>
      <sha1>2s1hacd06h2ide8wtfj1y7ny95zisbh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1161</id>
      <parentid>1139</parentid>
      <timestamp>2010-03-23T12:39:27Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Discussion Projet de page d'accueil */ nouvelle section</comment>
      <text xml:space="preserve" bytes="4614">Comme le propose LOU$!s
Je suggère que nous fassions trois grandes rubriques dans la page d'accueil :
* Non validés
* En cours de validation (Quelle est la procédure de validation ?)
* Validés
[[Utilisateur:Lol|Lol]]
----
Une suggestion : Bloquer les modifications pour les utilisateurs non-inscrits... (signé lol, modification faite sans être &quot;logué&quot;).
----
Bah je pense que tu peux commencer par bloquer les modifications des utilisateurs non inscrits, et d'empêcher ( comment ? ) l'utilisateur lambda de pouvoir rajouter &lt;nowiki&gt;{{Stable}}&lt;/nowiki&gt; à une page ( mais moi tu m'autorises, hein :p (nan je rigole, tu fais ce que tu veux)).
----
Sans rire (si je rigole tout le temps !), je fais ça aujourd'hui c'est important. Il faut régler certains points avant d'aller dans le mur... Qui a le droit de faire quoi...
Je pense que pour commencer, le minimum est de bloquer les création/éditions/suppressions pour les utilisateurs non confirmés (par mail). Au fait as-tu bien reçu ton mail de confirmation ?
Après il y a un add-on qui m'a l'air pas mal : http://www.mediawiki.org/wiki/Extension:FlaggedRevs
Donne la possibilité de &quot;marquer&quot; les pages, et approuver ou non... Seul les administrateurs sont habilités à le faire.
Le problème, c'est que j'ai planté le Wiki hier en tentant de l'installer... Tu pourrais essayer sur le tiens ? mdr...
----
j'ai déplacé &quot;démarrer avec mediawiki&quot; dans [[Aide:Accueil]]

Petite question: La section &quot;problèmes materiels&quot; a-t-elle vraiment lieu d'être?
[[Utilisateur:L0u!$|L0u!$]]
----
Pour l'instant la seule qui soit importante, c'est &quot;en cours&quot;. Il faut réfléchir à une organisation de la page d'accueil en fonction de l'organisation que nous mettrons au Wiki. Le principal étant : Clarté ![[Utilisateur:Lol|Lol]] 24 janvier 2010 à 11:41 (UTC)
----
Petite question: La section &quot;problèmes materiels&quot; a-t-elle vraiment lieu d'être?

Pour renvoyer vers le forum s'il ne s'agit pas d'un &quot;truc&quot; ? [[Utilisateur:ggoodluck47|ggoodluck47]]
----
Ok gérard. [[Utilisateur:L0u!$|L0u!$]]
----
Refonte de la page d'accueil,[[Projet_Accueil|c'est ici]] vous êtes invités à donner votre avis. Merci [[Utilisateur:Lol|Lol]] 1 février 2010 à 08:11 (UTC)
----
Il serait pas mieux de pouvoir accéder aux catégories directement à la page d'accueil ? [[Utilisateur:MisterFreez|MisterFreez]]
----
C'est ce que j'ai fait sur le projet de nouvelle page d'accueil [[Projet_Accueil]]. L'arborescence des catégories est en bas de page. Ton avis sur ce nouveau sommaire ? Je n'ai pas eu beaucoup de commentaires, et je ne veut pas l'imposer...
[[Utilisateur:Lol|Lol]] 14 mars 2010 à 03:58 (UTC)
----


== Discussion sur les catégories  ==

Je place cette discussion ici, je pense qu'il y a plus de personnes qui passent... Il est temps, maintenant que le Wiki prends forme, de se pencher sur l'organisation. La Wiki met à notre disposition les catégories qui permettent de ranger facilement les articles à leur place (Une place pour chaque chose, chaque chose à sa place...)... 

Je propose quelque chose qui ressemblerait à ça: 

*&lt;u&gt;'''General'''&lt;/u&gt; 
**'''Installation''' 
***Logiciels par défaut 
***Compléter l'installation 
***Astuces pour débuter 
**'''Matériel et Pilotes''' 
***Carte vidéo 
****Nvidia 
****Ati 
***Xorg 
***Ntfs 
**'''Logiciels''' 
***Paquets 
***Gestionnaires de fenêtres 
****Flottants 
****Tilings 
***Multimédia 
***Bureautique 
***Jeux 
***Virtualisation 
**'''Commandes''' 
***Commandes de base 
***Commandes complexes 
**'''Réseau et Wifi''' 
***Configuration du réseau 
***Wifi 
**'''Noyau (Kernel)''' 
***Compiler 
**'''Programmation''' 
***Scripts mode d'emploi 
**'''Sécurité''' 
***Iptables (pare-feu) 
***Logiciels de Sécurisation 
**'''Inclassable'''

[[Utilisateur:Lol|Lol]] 4 février 2010 à 09:16 (UTC)

== Discussion Projet de page d'accueil ==

Bonjour à tous,
Vous êtes invités à donner votre avis... merci [[Utilisateur:Lol|Lol]] 1 février 2010 à 08:09 (UTC)
----
La mention &quot;faire attention... être extremement prudent&quot; et tout ça... c'est pas un peu obsolète? [[Utilisateur:L0u!$|L0u!$]] 4 février 2010 à 20:33 (UTC)
----
Oui... J'ai toujours trouvé que c'était un peu fort. J'ai repris le même que sur la page d'accueil actuelle. On peut l'enlever... Surtout que j'ai fait une page &quot;avertissement&quot; tout en bas à droite, ça doit suffire non ?
Sinon, tu penses quoi du reste ? [[Utilisateur:Lol|Lol]] 4 février 2010 à 20:43 (UTC)
----
J'aime bien cette nouvelle page. Je pense juste que la partie commande doit passer à droit. [[Utilisateur:MisterFreez|MisterFreez]]</text>
      <sha1>krick5li0tllfsanw4dmqk9fm56kgfs</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3486</id>
      <parentid>1161</parentid>
      <timestamp>2011-10-05T18:31:06Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Discussion Projet de page d'accueil */</comment>
      <text xml:space="preserve" bytes="4615">Comme le propose LOU$!s
Je suggère que nous fassions trois grandes rubriques dans la page d'accueil :
* Non validés
* En cours de validation (Quelle est la procédure de validation ?)
* Validés
[[Utilisateur:Lol|Lol]]
----
Une suggestion : Bloquer les modifications pour les utilisateurs non-inscrits... (signé lol, modification faite sans être &quot;logué&quot;).
----
Bah je pense que tu peux commencer par bloquer les modifications des utilisateurs non inscrits, et d'empêcher ( comment ? ) l'utilisateur lambda de pouvoir rajouter &lt;nowiki&gt;{{Stable}}&lt;/nowiki&gt; à une page ( mais moi tu m'autorises, hein :p (nan je rigole, tu fais ce que tu veux)).
----
Sans rire (si je rigole tout le temps !), je fais ça aujourd'hui c'est important. Il faut régler certains points avant d'aller dans le mur... Qui a le droit de faire quoi...
Je pense que pour commencer, le minimum est de bloquer les création/éditions/suppressions pour les utilisateurs non confirmés (par mail). Au fait as-tu bien reçu ton mail de confirmation ?
Après il y a un add-on qui m'a l'air pas mal : http://www.mediawiki.org/wiki/Extension:FlaggedRevs
Donne la possibilité de &quot;marquer&quot; les pages, et approuver ou non... Seul les administrateurs sont habilités à le faire.
Le problème, c'est que j'ai planté le Wiki hier en tentant de l'installer... Tu pourrais essayer sur le tiens ? mdr...
----
j'ai déplacé &quot;démarrer avec mediawiki&quot; dans [[Aide:Accueil]]

Petite question: La section &quot;problèmes materiels&quot; a-t-elle vraiment lieu d'être?
[[Utilisateur:L0u!$|L0u!$]]
----
Pour l'instant la seule qui soit importante, c'est &quot;en cours&quot;. Il faut réfléchir à une organisation de la page d'accueil en fonction de l'organisation que nous mettrons au Wiki. Le principal étant : Clarté ![[Utilisateur:Lol|Lol]] 24 janvier 2010 à 11:41 (UTC)
----
Petite question: La section &quot;problèmes materiels&quot; a-t-elle vraiment lieu d'être?

Pour renvoyer vers le forum s'il ne s'agit pas d'un &quot;truc&quot; ? [[Utilisateur:ggoodluck47|ggoodluck47]]
----
Ok gérard. [[Utilisateur:L0u!$|L0u!$]]
----
Refonte de la page d'accueil,[[Projet_Accueil|c'est ici]] vous êtes invités à donner votre avis. Merci [[Utilisateur:Lol|Lol]] 1 février 2010 à 08:11 (UTC)
----
Il serait pas mieux de pouvoir accéder aux catégories directement à la page d'accueil ? [[Utilisateur:MisterFreez|MisterFreez]]
----
C'est ce que j'ai fait sur le projet de nouvelle page d'accueil [[Projet_Accueil]]. L'arborescence des catégories est en bas de page. Ton avis sur ce nouveau sommaire ? Je n'ai pas eu beaucoup de commentaires, et je ne veut pas l'imposer...
[[Utilisateur:Lol|Lol]] 14 mars 2010 à 03:58 (UTC)
----


== Discussion sur les catégories  ==

Je place cette discussion ici, je pense qu'il y a plus de personnes qui passent... Il est temps, maintenant que le Wiki prends forme, de se pencher sur l'organisation. La Wiki met à notre disposition les catégories qui permettent de ranger facilement les articles à leur place (Une place pour chaque chose, chaque chose à sa place...)... 

Je propose quelque chose qui ressemblerait à ça: 

*&lt;u&gt;'''General'''&lt;/u&gt; 
**'''Installation''' 
***Logiciels par défaut 
***Compléter l'installation 
***Astuces pour débuter 
**'''Matériel et Pilotes''' 
***Carte vidéo 
****Nvidia 
****Ati 
***Xorg 
***Ntfs 
**'''Logiciels''' 
***Paquets 
***Gestionnaires de fenêtres 
****Flottants 
****Tilings 
***Multimédia 
***Bureautique 
***Jeux 
***Virtualisation 
**'''Commandes''' 
***Commandes de base 
***Commandes complexes 
**'''Réseau et Wifi''' 
***Configuration du réseau 
***Wifi 
**'''Noyau (Kernel)''' 
***Compiler 
**'''Programmation''' 
***Scripts mode d'emploi 
**'''Sécurité''' 
***Iptables (pare-feu) 
***Logiciels de Sécurisation 
**'''Inclassable'''

[[Utilisateur:Lol|Lol]] 4 février 2010 à 09:16 (UTC)

== Discussion Projet de page d'accueil ==

Bonjour à tous,
Vous êtes invités à donner votre avis... merci [[Utilisateur:Lol|Lol]] 1 février 2010 à 08:09 (UTC)
----
La mention &quot;faire attention... être extremement prudent&quot; et tout ça... c'est pas un peu obsolète? [[Utilisateur:L0u!$|L0u!$]] 4 février 2010 à 20:33 (UTC)
----
Oui... J'ai toujours trouvé que c'était un peu fort. J'ai repris le même que sur la page d'accueil actuelle. On peut l'enlever... Surtout que j'ai fait une page &quot;avertissement&quot; tout en bas à droite, ça doit suffire non ?
Sinon, tu penses quoi du reste ? [[Utilisateur:Lol|Lol]] 4 février 2010 à 20:43 (UTC)
----
J'aime bien cette nouvelle page. Je pense juste que la partie commande doit passer à droite. [[Utilisateur:MisterFreez|MisterFreez]]</text>
      <sha1>oqb6tvka943ajlfux0u1gtufk1dfhjb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3487</id>
      <parentid>3486</parentid>
      <timestamp>2011-10-05T18:31:55Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Discussion Projet de page d'accueil */</comment>
      <text xml:space="preserve" bytes="4616">Comme le propose LOU$!s
Je suggère que nous fassions trois grandes rubriques dans la page d'accueil :
* Non validés
* En cours de validation (Quelle est la procédure de validation ?)
* Validés
[[Utilisateur:Lol|Lol]]
----
Une suggestion : Bloquer les modifications pour les utilisateurs non-inscrits... (signé lol, modification faite sans être &quot;logué&quot;).
----
Bah je pense que tu peux commencer par bloquer les modifications des utilisateurs non inscrits, et d'empêcher ( comment ? ) l'utilisateur lambda de pouvoir rajouter &lt;nowiki&gt;{{Stable}}&lt;/nowiki&gt; à une page ( mais moi tu m'autorises, hein :p (nan je rigole, tu fais ce que tu veux)).
----
Sans rire (si je rigole tout le temps !), je fais ça aujourd'hui c'est important. Il faut régler certains points avant d'aller dans le mur... Qui a le droit de faire quoi...
Je pense que pour commencer, le minimum est de bloquer les création/éditions/suppressions pour les utilisateurs non confirmés (par mail). Au fait as-tu bien reçu ton mail de confirmation ?
Après il y a un add-on qui m'a l'air pas mal : http://www.mediawiki.org/wiki/Extension:FlaggedRevs
Donne la possibilité de &quot;marquer&quot; les pages, et approuver ou non... Seul les administrateurs sont habilités à le faire.
Le problème, c'est que j'ai planté le Wiki hier en tentant de l'installer... Tu pourrais essayer sur le tiens ? mdr...
----
j'ai déplacé &quot;démarrer avec mediawiki&quot; dans [[Aide:Accueil]]

Petite question: La section &quot;problèmes materiels&quot; a-t-elle vraiment lieu d'être?
[[Utilisateur:L0u!$|L0u!$]]
----
Pour l'instant la seule qui soit importante, c'est &quot;en cours&quot;. Il faut réfléchir à une organisation de la page d'accueil en fonction de l'organisation que nous mettrons au Wiki. Le principal étant : Clarté ![[Utilisateur:Lol|Lol]] 24 janvier 2010 à 11:41 (UTC)
----
Petite question: La section &quot;problèmes materiels&quot; a-t-elle vraiment lieu d'être?

Pour renvoyer vers le forum s'il ne s'agit pas d'un &quot;truc&quot; ? [[Utilisateur:ggoodluck47|ggoodluck47]]
----
Ok gérard. [[Utilisateur:L0u!$|L0u!$]]
----
Refonte de la page d'accueil,[[Projet_Accueil|c'est ici]] vous êtes invités à donner votre avis. Merci [[Utilisateur:Lol|Lol]] 1 février 2010 à 08:11 (UTC)
----
Il serait pas mieux de pouvoir accéder aux catégories directement à la page d'accueil ? [[Utilisateur:MisterFreez|MisterFreez]]
----
C'est ce que j'ai fait sur le projet de nouvelle page d'accueil [[Projet_Accueil]]. L'arborescence des catégories est en bas de page. Ton avis sur ce nouveau sommaire ? Je n'ai pas eu beaucoup de commentaires, et je ne veut pas l'imposer...
[[Utilisateur:Lol|Lol]] 14 mars 2010 à 03:58 (UTC)
----


== Discussion sur les catégories  ==

Je place cette discussion ici, je pense qu'il y a plus de personnes qui passent... Il est temps, maintenant que le Wiki prends forme, de se pencher sur l'organisation. La Wiki met à notre disposition les catégories qui permettent de ranger facilement les articles à leur place (Une place pour chaque chose, chaque chose à sa place...)... 

Je propose quelque chose qui ressemblerait à ça: 

*&lt;u&gt;'''General'''&lt;/u&gt; 
**'''Installation''' 
***Logiciels par défaut 
***Compléter l'installation 
***Astuces pour débuter 
**'''Matériel et Pilotes''' 
***Carte vidéo 
****Nvidia 
****Ati 
***Xorg 
***Ntfs 
**'''Logiciels''' 
***Paquets 
***Gestionnaires de fenêtres 
****Flottants 
****Tilings 
***Multimédia 
***Bureautique 
***Jeux 
***Virtualisation 
**'''Commandes''' 
***Commandes de base 
***Commandes complexes 
**'''Réseau et Wifi''' 
***Configuration du réseau 
***Wifi 
**'''Noyau (Kernel)''' 
***Compiler 
**'''Programmation''' 
***Scripts mode d'emploi 
**'''Sécurité''' 
***Iptables (pare-feu) 
***Logiciels de Sécurisation 
**'''Inclassable'''

[[Utilisateur:Lol|Lol]] 4 février 2010 à 09:16 (UTC)

== Discussion Projet de page d'accueil ==

Bonjour à tous,
Vous êtes invités à donner votre avis... merci [[Utilisateur:Lol|Lol]] 1 février 2010 à 08:09 (UTC)
----
La mention &quot;faire attention... être extrêmement prudent&quot; et tout ça... c'est pas un peu obsolète? [[Utilisateur:L0u!$|L0u!$]] 4 février 2010 à 20:33 (UTC)
----
Oui... J'ai toujours trouvé que c'était un peu fort. J'ai repris le même que sur la page d'accueil actuelle. On peut l'enlever... Surtout que j'ai fait une page &quot;avertissement&quot; tout en bas à droite, ça doit suffire non ?
Sinon, tu penses quoi du reste ? [[Utilisateur:Lol|Lol]] 4 février 2010 à 20:43 (UTC)
----
J'aime bien cette nouvelle page. Je pense juste que la partie commande doit passer à droite. [[Utilisateur:MisterFreez|MisterFreez]]</text>
      <sha1>km1boga1rs9n8mdmxlui9x8fziwtgwv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Alias</title>
    <ns>1</ns>
    <id>127</id>
    <revision>
      <id>580</id>
      <timestamp>2010-01-30T17:36:36Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <comment>Page créée avec « Voilà, c'est mieux comme ça, merci ~~~ »</comment>
      <text xml:space="preserve" bytes="68">Voilà, c'est mieux comme ça, merci
[[Utilisateur:Ricardo|Ricardo]]</text>
      <sha1>idtdzavwuswi94zxiqdr5o6srvtweuv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Apt-p2p</title>
    <ns>1</ns>
    <id>1179</id>
    <revision>
      <id>4840</id>
      <timestamp>2012-12-17T19:23:23Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>Page créée avec « Au sujet du paragraphe « Ouverture des ports » :  Ne pas ouvrir le port permet l'utilisation d'apt-p2p pour le téléchargement, mais le partage est-il possible dans ce ... »</comment>
      <text xml:space="preserve" bytes="284">Au sujet du paragraphe « Ouverture des ports » :

Ne pas ouvrir le port permet l'utilisation d'apt-p2p pour le téléchargement, mais le partage est-il possible dans ce cas ?

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 17 décembre 2012 à 20:23 (CET)</text>
      <sha1>1waafw0rg9yvnla5dpwuisocwszis0p</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4841</id>
      <parentid>4840</parentid>
      <timestamp>2012-12-17T19:35:23Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <text xml:space="preserve" bytes="421">Au sujet du paragraphe « Ouverture des ports » :

Ne pas ouvrir le port permet l'utilisation d'apt-p2p pour le téléchargement, mais le partage est-il possible dans ce cas ?

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 17 décembre 2012 à 20:23 (CET)

Ne faut-il pas que le port soit ouvert au moins sur le réseau intranet, sinon l'intérêt de apt-p2p n'est pas évident !

Ggoodluck47</text>
      <sha1>rhqg34px57vtp41gvouddw8blnqreiz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Arret machine</title>
    <ns>1</ns>
    <id>41</id>
    <revision>
      <id>97</id>
      <timestamp>2010-01-22T09:30:00Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <comment>Page créée avec « je viens d'éxecuter la suite de touches Alt+sys+o : cela provoque un arret brutal de la machine. j'ai donc modifié les sous parties. »</comment>
      <text xml:space="preserve" bytes="134">je viens d'éxecuter la suite de touches Alt+sys+o : cela provoque un arret brutal de la machine. j'ai donc modifié les sous parties.</text>
      <sha1>nrzqlc9v6d9b39lprg8r4uioa2wz97u</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>98</id>
      <parentid>97</parentid>
      <timestamp>2010-01-22T10:56:45Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="282">je viens d'éxecuter la suite de touches Alt+sys+o : cela provoque un arret brutal de la machine. j'ai donc modifié les sous parties.
----
Bien joué, je n'avais pas pris la peine de tester ça... Il y a éteindre l'onduleur aussi... Encore plus brutal [[Utilisateur:Lol|Lol]]
----</text>
      <sha1>stmtvra8yc6pb5tbsr8rimg1gdb7vsg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>99</id>
      <parentid>98</parentid>
      <timestamp>2010-01-22T10:59:06Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="425">je viens d'éxecuter la suite de touches Alt+sys+o : cela provoque un arret brutal de la machine. j'ai donc modifié les sous parties.
----
Bien joué, je n'avais pas pris la peine de tester ça... Il y a éteindre l'onduleur aussi... Encore plus brutal
Mais je ne suis pas si sur que ça que &quot;halt&quot; soit si brutal, puisque d'après le man, ça appelle shutdown... (comme reboot d'ailleurs) non ? [[Utilisateur:Lol|Lol]]
----</text>
      <sha1>jz5md479qq19wa3b593exemzhe8t72z</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>100</id>
      <parentid>99</parentid>
      <timestamp>2010-01-22T11:00:23Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="427">je viens d'éxecuter la suite de touches Alt+sys+o : cela provoque un arret brutal de la machine. j'ai donc modifié les sous parties.
----
Bien joué, je n'avais pas pris la peine de tester ça... Il y a éteindre l'onduleur aussi... Encore plus brutal. 
Mais je ne suis pas si sur que ça que &quot;halt&quot; soit si brutal, puisque d'après le man, ça appelle shutdown... (comme reboot d'ailleurs) non ? [[Utilisateur:Lol|Lol]]
----</text>
      <sha1>qcc6d84oj78lh13mkhcacnp8n1bjt5l</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>102</id>
      <parentid>100</parentid>
      <timestamp>2010-01-22T11:15:10Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="735">je viens d'éxecuter la suite de touches Alt+sys+o : cela provoque un arret brutal de la machine. j'ai donc modifié les sous parties.
----
Bien joué, je n'avais pas pris la peine de tester ça... Il y a éteindre l'onduleur aussi... Encore plus brutal. 
Mais je ne suis pas si sur que ça que &quot;halt&quot; soit si brutal, puisque d'après le man, ça appelle shutdown... (comme reboot d'ailleurs) non ? [[Utilisateur:Lol|Lol]]
----
En fait, sous linux, halt ne pose aucun problème de mise en oeuvre. On prévient juste les utilisateurs que halt peut ne pas fonctionner comme tel.

Ce n'est pas la méthode conseillée par debian, donc on le met dans &quot;arret brutal&quot; pour éviter les problèmes.
Idem pour reboot.[[Utilisateur:L0u!$|L0u!$]]</text>
      <sha1>setnyrh3ma8oapxbnfziyfsdemvg4m8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Astuces diverses en ligne de commande</title>
    <ns>1</ns>
    <id>1288</id>
    <revision>
      <id>5381</id>
      <timestamp>2013-08-31T01:04:22Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <comment>demande confirmation tests &quot;konsole&quot; et tests avec &quot;xset b&quot;</comment>
      <text xml:space="preserve" bytes="1521">Au sujet de la ligne de commande suivante:&lt;br /&gt;
'''echo &gt;&gt;~/.inputrc &quot;set bell-style none&quot;''' &lt;br /&gt;

J'ai constaté que &quot;~/.inputrc&quot; était absent dans kde.&lt;br /&gt;
Que cette méthode, si elle était utilisé plusieurs fois, rajoutait dans &quot;~/.inputrc&quot; une ligne à chaque fois.&lt;br /&gt;
Je propose donc de modifier cette ligne de commande par :&lt;br /&gt;
'''echo &gt;&gt;~/.inputrc &quot;set bell-style none&quot;'''&lt;br /&gt;

========================&lt;br /&gt;
Il y a aussi la possibilité d'ajuster les paramètres du &quot;bip&quot; directement par le serveur X avec &quot;xset b&quot; ( volume, pitch and duration ).&lt;br /&gt;
xset permet d'aileurs de faire bien plus de choses bien plus que ça .&lt;br /&gt;
'''xset q | grep bell  # histoire de voir les valeurs (volume, pitch and duration)'''&lt;br /&gt;



'''fichtermrc=~/.config/Terminal/terminalrc; sed -i '/MiscBell/d' $fichtermrc;echo &quot;MiscBell=&quot; &gt;&gt; $fichtermrc # pour autoriser le son de Xterm de Xfce'''&lt;br /&gt;
'''xset b 100 800 100 # tester avec flèche bas gauche dans terminal'''&lt;br /&gt;
'''xset b 100 100 50'''&lt;br /&gt;
'''xset b 50 400 100  # repositionner les valeurs par défaut constatées sur ma config'''&lt;br /&gt;


Pour l'heure, je vais modifier quelque petites erreurs, et mettre au point un script plus propre que ce que j'ai fait (je débute en bash) avant de reposter quelque chose.&lt;br /&gt;

Si d'autres personnes pouvaient me confirmer les trois premières phrase que je viens d'écrire. &lt;br /&gt;

Merci&lt;br /&gt;
--[[Utilisateur:MicP|MicP]] ([[Discussion utilisateur:MicP|discussion]]) 31 août 2013 à 03:04 (CEST)

----</text>
      <sha1>75u2z4ujz2oeyb9v2eo5n8w2m9222wb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5382</id>
      <parentid>5381</parentid>
      <timestamp>2013-08-31T01:09:01Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <comment>demande confirmation tests &quot;konsole&quot; et tests &quot;xset b&quot; avec Kde</comment>
      <text xml:space="preserve" bytes="1484">Au sujet de la ligne de commande suivante:&lt;br /&gt;
'''echo &gt;&gt;~/.inputrc &quot;set bell-style none&quot;'''

J'ai constaté que &quot;~/.inputrc&quot; était absent dans kde.&lt;br /&gt;
Que cette méthode, si elle était utilisé plusieurs fois, rajoutait dans &quot;~/.inputrc&quot; une ligne à chaque fois.&lt;br /&gt;
Je propose donc de modifier cette ligne de commande par :&lt;br /&gt;
'''echo &gt;~/.inputrc &quot;set bell-style none&quot;'''

========================&lt;br /&gt;
Il y a aussi la possibilité d'ajuster les paramètres du &quot;bip&quot; directement par le serveur X avec &quot;xset b&quot; ( volume, pitch and duration ).&lt;br /&gt;
(xset permet d'aileurs de faire bien plus de choses bien plus que ça).&lt;br /&gt;
'''xset q | grep bell'''  # histoire de voir les valeurs (volume, pitch and duration)



'''fichtermrc=~/.config/Terminal/terminalrc; sed -i '/MiscBell/d' $fichtermrc;echo &quot;MiscBell=&quot; &gt;&gt; $fichtermrc''' # pour autoriser le son de Xterm de Xfce&lt;br /&gt;
'''xset b 100 800 100''' # tester avec flèche bas ou gauche dans terminal&lt;br /&gt;
'''xset b 100 100 50'''&lt;br /&gt;
'''xset b 50 400 100''' # repositionner les valeurs par défaut constatées sur ma config

Pour l'heure, je vais modifier quelque petites erreurs, et mettre au point un script plus propre que ce que j'ai fait (je débute en bash) avant de reposter quelque chose.

Si d'autres personnes pouvaient me confirmer les trois premières phrase que je viens d'écrire.

Merci&lt;br /&gt;
--[[Utilisateur:MicP|MicP]] ([[Discussion utilisateur:MicP|discussion]]) 31 août 2013 à 03:09 (CEST)

----</text>
      <sha1>r2l26v71poru71e2vu2q8phmrn5o0ii</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Bac à sable</title>
    <ns>1</ns>
    <id>89</id>
    <revision>
      <id>368</id>
      <timestamp>2010-01-27T04:29:50Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « Bonjour, N'hésitez pas à mettre vos trucs pour une utilisation plus agréable de la mise en page du Wiki ! Toutes les astuces et modèles sont les bienvenues.  ~~~~ ---- »</comment>
      <text xml:space="preserve" bytes="221">Bonjour,
N'hésitez pas à mettre vos trucs pour une utilisation plus agréable de la mise en page du Wiki ! Toutes les astuces et modèles sont les bienvenues.

[[Utilisateur:Lol|Lol]] 27 janvier 2010 à 04:29 (UTC)
----</text>
      <sha1>3qfmxtm4qhm6ihczlhihc55w6g2t09s</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>389</id>
      <parentid>368</parentid>
      <timestamp>2010-01-27T08:41:03Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="236">Bonjour,
N'hésitez pas à mettre vos trucs pour une utilisation plus agréable de la mise en page du Wiki ! Toutes les astuces et modèles sont les bienvenues.
{{ligne grise}}
[[Utilisateur:Lol|Lol]] 27 janvier 2010 à 04:29 (UTC)
----</text>
      <sha1>sdsw33uy480e2y7lna29v8snl50pr85</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>390</id>
      <parentid>389</parentid>
      <timestamp>2010-01-27T08:41:28Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="267">Bonjour,
N'hésitez pas à mettre vos trucs pour une utilisation plus agréable de la mise en page du Wiki ! Toutes les astuces et modèles sont les bienvenues.

[[Utilisateur:Lol|Lol]] 27 janvier 2010 à 04:29 (UTC)
----
{{ligne grise}}
Hum .... étrange ce modèle.</text>
      <sha1>bzoi9l2go9c1kgoc3y1yn5mvmiaf1hh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>809</id>
      <parentid>390</parentid>
      <timestamp>2010-02-03T17:18:32Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="451">Bonjour,
N'hésitez pas à mettre vos trucs pour une utilisation plus agréable de la mise en page du Wiki! Toutes les astuces et modèles sont les bienvenues.

[[Utilisateur:Lol|Lol]] 27 janvier 2010 à 04:29 (UTC)
----
{{ligne grise}}
Hum .... étrange ce modèle.
----
J'ai cherché pour savoir qui avait écrit ça... lol! C'est un modèle de wikipedia pas de mediawiki. Mais il fonctionne!!! [[Utilisateur:Lol|Lol]] 3 février 2010 à 17:18 (UTC)</text>
      <sha1>8fk6szjfc5sx7nddfqtz7m3c1x4bio9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5353</id>
      <parentid>809</parentid>
      <timestamp>2013-08-14T08:40:50Z</timestamp>
      <contributor>
        <username>PascalHambourg</username>
        <id>279</id>
      </contributor>
      <text xml:space="preserve" bytes="457">Bonjour,
N'hésitez pas à mettre vos trucs pour une utilisation plus agréable de la mise en page du Wiki! Toutes les astuces et modèles sont les bienvenues.

[[Utilisateur:Lol|Lol]] 27 janvier 2010 à 04:29 (UTC)
----
{{ligne grise}}
Hum .... étrange ce modèle.
----
J'ai cherché pour savoir qui avait écrit ça... lol! C'est un modèle de wikipedia pas de mediawiki. Mais il fonctionne!!! [[Utilisateur:Lol|Lol]] 3 février 2010 à 17:18 (UTC)

test</text>
      <sha1>ow2r37tyqvwlexql4eqaeaa981rmswi</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5354</id>
      <parentid>5353</parentid>
      <timestamp>2013-08-14T08:46:03Z</timestamp>
      <contributor>
        <username>PascalHambourg</username>
        <id>279</id>
      </contributor>
      <comment>Annulation des modifications 5353 de [[Special:Contributions/PascalHambourg|PascalHambourg]] ([[User talk:PascalHambourg|discussion]])</comment>
      <text xml:space="preserve" bytes="451">Bonjour,
N'hésitez pas à mettre vos trucs pour une utilisation plus agréable de la mise en page du Wiki! Toutes les astuces et modèles sont les bienvenues.

[[Utilisateur:Lol|Lol]] 27 janvier 2010 à 04:29 (UTC)
----
{{ligne grise}}
Hum .... étrange ce modèle.
----
J'ai cherché pour savoir qui avait écrit ça... lol! C'est un modèle de wikipedia pas de mediawiki. Mais il fonctionne!!! [[Utilisateur:Lol|Lol]] 3 février 2010 à 17:18 (UTC)</text>
      <sha1>8fk6szjfc5sx7nddfqtz7m3c1x4bio9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Changer le mot de passe mysql</title>
    <ns>1</ns>
    <id>1198</id>
    <revision>
      <id>4937</id>
      <timestamp>2013-01-23T11:50:01Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>Page créée avec « C'est bien compliqué comme méthode, il me semble qu'un simple dpkg-reconfigure mysql-server-version suffirai... ;op »</comment>
      <text xml:space="preserve" bytes="117">C'est bien compliqué comme méthode, il me semble qu'un simple dpkg-reconfigure mysql-server-version suffirai... ;op</text>
      <sha1>b8l2j4gv3gp4jgooouznpjj6jasq2uw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4939</id>
      <parentid>4937</parentid>
      <timestamp>2013-01-25T06:38:57Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <text xml:space="preserve" bytes="119">C'est bien alambiqué comme méthode, il me semble qu'un simple &quot;dpkg-reconfigure mysql-server-version&quot; suffirai... ;op</text>
      <sha1>f052evp6uz9h7od4cnr4hdhagl86e9n</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Clef usb d'installation</title>
    <ns>1</ns>
    <id>1048</id>
    <revision>
      <id>4388</id>
      <timestamp>2012-08-13T06:57:15Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <comment>Page créée avec « Salut,  En ne spécifiant pas le nom actuel des versions, la maintenance s'en trouverait allégée ;)   Il semblerait que le problème du lien n'est pas parfaitement régl... »</comment>
      <text xml:space="preserve" bytes="293">Salut,

En ne spécifiant pas le nom actuel des versions, la maintenance s'en trouverait allégée ;) 

Il semblerait que le problème du lien n'est pas parfaitement réglé : Vous avez suivi un lien vers une page qui n’existe pas encore ou qui a été effacée
Voir le haut de cette page :)</text>
      <sha1>hm0qtcn11k7e1x1elvl5roerejh9cgz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4389</id>
      <parentid>4388</parentid>
      <timestamp>2012-08-13T10:25:28Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <text xml:space="preserve" bytes="585">Salut,

En ne spécifiant pas le nom actuel des versions, la maintenance s'en trouverait allégée ;) 

Il semblerait que le problème du lien n'est pas parfaitement réglé : Vous avez suivi un lien vers une page qui n’existe pas encore ou qui a été effacée
Voir le haut de cette page :)

----------------------------------
Je ne vois pas où les noms de version sont portés, sauf à la fin mais il me semble que c'est normal puisque ce sont des tests.
Chez moi, tous les liens fonctionnent, duquel en particulier parles-tu ?
Ricardo
~
------------------------------------------</text>
      <sha1>7mhlp741514ml8da70mt6ly8bces9a2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4391</id>
      <parentid>4389</parentid>
      <timestamp>2012-08-13T14:27:06Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <text xml:space="preserve" bytes="794">Salut,

En ne spécifiant pas le nom actuel des versions, la maintenance s'en trouverait allégée ;) 

Il semblerait que le problème du lien n'est pas parfaitement réglé : Vous avez suivi un lien vers une page qui n’existe pas encore ou qui a été effacée
Voir le haut de cette page :)

----------------------------------
Je ne vois pas où les noms de version sont portés, sauf à la fin mais il me semble que c'est normal puisque ce sont des tests.
Chez moi, tous les liens fonctionnent, duquel en particulier parles-tu ?
Ricardo

------------------------------------------
OBJECTION VOTRE HONNEUR !
&quot;Testé avec une debian stable/squeeze. Avec une sid ou une testing,...&quot; 
Quand la whezzy passera en stable, l'affirmation suivante : &quot;Testé avec ... une testing&quot; ne sera plus vraie.</text>
      <sha1>1ylnjprp3dnbk3lt0bka37c6cwwqeho</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Client FTP</title>
    <ns>1</ns>
    <id>597</id>
    <revision>
      <id>2514</id>
      <timestamp>2010-12-17T08:15:56Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <comment>Page créée avec « Ce script a l'air énorme! c'est ce que je cherchais depuis longtemps! Une petite explication sur son utilisation ne serait pas de refus (j'ai peur de faire des bêtises) Mer... »</comment>
      <text xml:space="preserve" bytes="205">Ce script a l'air énorme! c'est ce que je cherchais depuis longtemps! Une petite explication sur son utilisation ne serait pas de refus (j'ai peur de faire des bêtises)
Merci pour le partage en tout cas!</text>
      <sha1>ofxk82uyu3yab9buva335hsjomhofzr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2520</id>
      <parentid>2514</parentid>
      <timestamp>2010-12-17T16:07:10Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="636">Ce script a l'air énorme! c'est ce que je cherchais depuis longtemps! Une petite explication sur son utilisation ne serait pas de refus (j'ai peur de faire des bêtises)
Merci pour le partage en tout cas!
----
Ce serait mieux que Michel le fasse, mais comme je l'ai déjà utilisé... Le script fait une synchronisation d'un dossier local VERS un dossier accessible par FTP.
Il vérifie si des fichiers sont plus récents sur la machine locale, si oui, il écrase les fichiers distants avec les fichiers &quot;locaux&quot;.
C'est cool quand tu as un site Web, tu fais les modifs en local, tu lance le script, et ça se retrouve sur ton site Web.</text>
      <sha1>939dr8yxvefakb9u38eutk1hpjwl6lw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Commande de base imprimante</title>
    <ns>1</ns>
    <id>938</id>
    <revision>
      <id>3886</id>
      <timestamp>2012-03-05T19:40:21Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <comment>Page créée avec « Salut,  gerard@glu:~$ lpstat -d  gerard@glu:~$   Et pourtant j'ai deux imprimantes connectées, sous-tension et actives ? »</comment>
      <text xml:space="preserve" bytes="121">Salut,

gerard@glu:~$ lpstat -d

gerard@glu:~$ 

Et pourtant j'ai deux imprimantes connectées, sous-tension et actives ?</text>
      <sha1>9md3wn2ubd7t93u1ln213l3927w4gcw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3898</id>
      <parentid>3886</parentid>
      <timestamp>2012-03-06T13:01:14Z</timestamp>
      <contributor>
        <username>Grhim</username>
        <id>116</id>
      </contributor>
      <text xml:space="preserve" bytes="243">Salut,

gerard@glu:~$ lpstat -d

gerard@glu:~$ 

Et pourtant j'ai deux imprimantes connectées, sous-tension et actives ?

-----------

salut 

étonnant , 

&lt;pre&gt; -d     Affiche la destination par défaut.&lt;/pre&gt;

tu as bien cups d'installer ?</text>
      <sha1>ocr199qjgfkkpflekfe42xhk7aw6rgw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3899</id>
      <parentid>3898</parentid>
      <timestamp>2012-03-06T13:01:43Z</timestamp>
      <contributor>
        <username>Grhim</username>
        <id>116</id>
      </contributor>
      <text xml:space="preserve" bytes="258">Salut,

gerard@glu:~$ lpstat -d

gerard@glu:~$ 

Et pourtant j'ai deux imprimantes connectées, sous-tension et actives ?

-----------

salut 

étonnant , 

man lpstat &gt;:

&lt;pre&gt; -d     Affiche la destination par défaut.&lt;/pre&gt;

tu as bien cups d'installer ?</text>
      <sha1>771amgnhhu1r98raacjv77cgtbfq5al</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3900</id>
      <parentid>3899</parentid>
      <timestamp>2012-03-06T14:23:48Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <text xml:space="preserve" bytes="334">Salut,

gerard@glu:~$ lpstat -d

gerard@glu:~$ 

Et pourtant j'ai deux imprimantes connectées, sous-tension et actives ?

-----------

salut 

étonnant , 

man lpstat &gt;:

&lt;pre&gt; -d     Affiche la destination par défaut.&lt;/pre&gt;

tu as bien cups d'installer ?

gerard@glu:~$ acpo cups
cups:
  Installé : 1.5.2-6
  Candidat : 1.5.2-6</text>
      <sha1>k44mcblxcsjy08i26czwudfmnyle0mx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3901</id>
      <parentid>3900</parentid>
      <timestamp>2012-03-06T16:05:52Z</timestamp>
      <contributor>
        <username>Grhim</username>
        <id>116</id>
      </contributor>
      <text xml:space="preserve" bytes="435">Salut,

gerard@glu:~$ lpstat -d

gerard@glu:~$ 

Et pourtant j'ai deux imprimantes connectées, sous-tension et actives ?

-----------

salut 

étonnant , 

man lpstat &gt;:

&lt;pre&gt; -d     Affiche la destination par défaut.&lt;/pre&gt;

tu as bien cups d'installer ?

gerard@glu:~$ acpo cups
cups:
  Installé : 1.5.2-6
  Candidat : 1.5.2-6

-------------------------

-re 

regarde si ton imprimante est en fonction

&lt;pre&gt;$ lpstat -r &lt;/pre&gt;</text>
      <sha1>czyh06gp3jkqmczm033vsmgyfywcy07</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3902</id>
      <parentid>3901</parentid>
      <timestamp>2012-03-06T16:18:05Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <text xml:space="preserve" bytes="580">Salut,

gerard@glu:~$ lpstat -d

gerard@glu:~$ 

Et pourtant j'ai deux imprimantes connectées, sous-tension et actives ?

-----------

salut 

étonnant , 

man lpstat &gt;:

&lt;pre&gt; -d     Affiche la destination par défaut.&lt;/pre&gt;

tu as bien cups d'installer ?

gerard@glu:~$ acpo cups
cups:
  Installé : 1.5.2-6
  Candidat : 1.5.2-6

-------------------------

-re 

regarde si ton imprimante est en fonction

&lt;pre&gt;$ lpstat -r &lt;/pre&gt;

Et pourtant j'ai deux imprimantes connectées, sous-tension et actives 
=======================================================================</text>
      <sha1>6p3r7dm9e3crxj4bvpevjmuoebk0mrt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3903</id>
      <parentid>3902</parentid>
      <timestamp>2012-03-06T16:19:46Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <comment>/* = */</comment>
      <text xml:space="preserve" bytes="532">Salut,

gerard@glu:~$ lpstat -d

gerard@glu:~$ 

Et pourtant j'ai deux imprimantes connectées, sous-tension et actives ?

-----------

salut 

étonnant , 

man lpstat &gt;:

&lt;pre&gt; -d     Affiche la destination par défaut.&lt;/pre&gt;

tu as bien cups d'installer ?

gerard@glu:~$ acpo cups
cups:
  Installé : 1.5.2-6
  Candidat : 1.5.2-6

-------------------------

-re 

regarde si ton imprimante est en fonction

&lt;pre&gt;$ lpstat -r &lt;/pre&gt;

Et pourtant j'ai deux imprimantes connectées, sous-tension et actives 
mais aucun résultat :D</text>
      <sha1>abd2m8a3u7avct5bs1spquxb9ma6er1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3904</id>
      <parentid>3903</parentid>
      <timestamp>2012-03-06T17:59:30Z</timestamp>
      <contributor>
        <username>Grhim</username>
        <id>116</id>
      </contributor>
      <text xml:space="preserve" bytes="658">Salut,

gerard@glu:~$ lpstat -d

gerard@glu:~$ 

Et pourtant j'ai deux imprimantes connectées, sous-tension et actives ?

-----------

salut 

étonnant , 

man lpstat &gt;:

&lt;pre&gt; -d     Affiche la destination par défaut.&lt;/pre&gt;

tu as bien cups d'installer ?

gerard@glu:~$ acpo cups
cups:
  Installé : 1.5.2-6
  Candidat : 1.5.2-6

-------------------------

-re 

regarde si ton imprimante est en fonction

&lt;pre&gt;$ lpstat -r &lt;/pre&gt;

Et pourtant j'ai deux imprimantes connectées, sous-tension et actives 
mais aucun résultat :D

-----------------------

imprimantes parallèle ou usb ?? 
tout les paquet (te connaissant:) ) sont a jours j'imagine !! ? !</text>
      <sha1>kjkzbr6nqvva9cq9qre3rznntoktt19</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3905</id>
      <parentid>3904</parentid>
      <timestamp>2012-03-07T09:46:53Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <text xml:space="preserve" bytes="759">Salut,

gerard@glu:~$ lpstat -d

gerard@glu:~$ 

Et pourtant j'ai deux imprimantes connectées, sous-tension et actives ?

-----------

salut 

étonnant , 

man lpstat &gt;:

&lt;pre&gt; -d     Affiche la destination par défaut.&lt;/pre&gt;

tu as bien cups d'installer ?

gerard@glu:~$ acpo cups
cups:
  Installé : 1.5.2-6
  Candidat : 1.5.2-6

-------------------------

-re 

regarde si ton imprimante est en fonction

&lt;pre&gt;$ lpstat -r &lt;/pre&gt;

Et pourtant j'ai deux imprimantes connectées, sous-tension et actives 
mais aucun résultat :D

-----------------------

imprimantes parallèle ou usb ?? 
tout les paquet (te connaissant:) ) sont a jours j'imagine !! ? !

usb et je confirme au dernier cri des mises à jour. Peut-être qu'en MP nous gagnerions du temps ?</text>
      <sha1>0nlw7zv0ax48ltmh86x6n0zggw1n3y6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3908</id>
      <parentid>3905</parentid>
      <timestamp>2012-03-07T12:00:55Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <text xml:space="preserve" bytes="967">Salut,

gerard@glu:~$ lpstat -d

gerard@glu:~$ 

Et pourtant j'ai deux imprimantes connectées, sous-tension et actives ?

-----------

salut 

étonnant , 

man lpstat &gt;:

&lt;pre&gt; -d     Affiche la destination par défaut.&lt;/pre&gt;

tu as bien cups d'installer ?

gerard@glu:~$ acpo cups
cups:
  Installé : 1.5.2-6
  Candidat : 1.5.2-6

-------------------------

-re 

regarde si ton imprimante est en fonction

&lt;pre&gt;$ lpstat -r &lt;/pre&gt;

Et pourtant j'ai deux imprimantes connectées, sous-tension et actives 
mais aucun résultat :D

-----------------------

imprimantes parallèle ou usb ?? 
tout les paquet (te connaissant:) ) sont a jours j'imagine !! ? !

usb et je confirme au dernier cri des mises à jour. Peut-être qu'en MP nous gagnerions du temps ?

Derniers tests sur une aptosid en live-cd ! Tout fonctionne comme tu le décris. C'est donc mon installation actuelle qui est en faute ! Oui mais de quoi, sachant que les impressions se font normalement !!!</text>
      <sha1>2r0uoo01wa87rc8co6s6erbi1l2wu0l</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Commandes de base</title>
    <ns>1</ns>
    <id>22</id>
    <revision>
      <id>32</id>
      <timestamp>2010-01-21T15:52:52Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « Ne serait-il pas plus logique, à la place d'utiliser la page &quot;commandes de base&quot;, on utilise la page [[:Catégorie:Commandes]] ?  :Bien sûr, de cette façon les liens seron… »</comment>
      <text xml:space="preserve" bytes="382">Ne serait-il pas plus logique, à la place d'utiliser la page &quot;commandes de base&quot;, on utilise la page [[:Catégorie:Commandes]] ?

:Bien sûr, de cette façon les liens seront créés automatiquement. [[Utilisateur:Woj|woj]] 20 janvier 2010 à 20:39 (UTC)
----
Oui, je regarde ça, et m'en occupe dés que j'ai le temps. Merci. [[Utilisateur:Lol|Lol]] 21 janvier 2010 à 04:17 (UTC)</text>
      <sha1>842fdr6lph67y0fnssksgng9z7lf96o</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Commandes informations</title>
    <ns>1</ns>
    <id>42</id>
    <revision>
      <id>104</id>
      <timestamp>2010-01-22T12:47:58Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <comment>Page créée avec « Sur cette page je fais des essais de &quot;FlaggsRevs&quot; extension au MediaWiki qui permet de gérer les validations ---- »</comment>
      <text xml:space="preserve" bytes="114">Sur cette page je fais des essais de &quot;FlaggsRevs&quot; extension au MediaWiki qui permet de gérer les validations
----</text>
      <sha1>1tlpn0zphjb1m54mhvwoikp85sj7z6w</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>105</id>
      <parentid>104</parentid>
      <timestamp>2010-01-22T12:48:40Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <text xml:space="preserve" bytes="156">Sur cette page je fais des essais de &quot;FlaggsRevs&quot; extension au MediaWiki qui permet de gérer les validations [[Utilisateur:WikiSysop|WikiSysop]] (lol)
----</text>
      <sha1>dgcg3z7my790lj0jq3r30704vdzydhx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>237</id>
      <parentid>105</parentid>
      <timestamp>2010-01-24T16:33:04Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <text xml:space="preserve" bytes="313">Sur cette page je fais des essais de &quot;FlaggsRevs&quot; extension au MediaWiki qui permet de gérer les validations [[Utilisateur:WikiSysop|WikiSysop]] (lol)
----

J'ai mis en bas de cette page un commentaire concernant les sigles et acronymes, qui ne sont pas forcément connus de tous et spécialement des débutants.</text>
      <sha1>fgt085g26on5ppdhkuxlhqvoip3mfid</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>238</id>
      <parentid>237</parentid>
      <timestamp>2010-01-24T16:51:14Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="390">Sur cette page je fais des essais de &quot;FlaggsRevs&quot; extension au MediaWiki qui permet de gérer les validations [[Utilisateur:WikiSysop|WikiSysop]] (lol)
----

J'ai mis en bas de cette page un commentaire concernant les sigles et acronymes, qui ne sont pas forcément connus de tous et spécialement des débutants.
----

Je ne vois pas où est ton commentaire ... [[Utilisateur:L0u!$|L0u!$]]</text>
      <sha1>2zb396lyrig34jkmcc7pcwt7mi6qgn6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>240</id>
      <parentid>238</parentid>
      <timestamp>2010-01-24T17:35:53Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <text xml:space="preserve" bytes="638">Sur cette page je fais des essais de &quot;FlaggsRevs&quot; extension au MediaWiki qui permet de gérer les validations [[Utilisateur:WikiSysop|WikiSysop]] (lol)
----

J'ai mis en bas de cette page un commentaire concernant les sigles et acronymes, qui ne sont pas forcément connus de tous et spécialement des débutants.
----

Je ne vois pas où est ton commentaire ... [[Utilisateur:L0u!$|L0u!$]]

en effet, il n'est plus là ?

Je l'avais mis dans la fenêtre &quot;commentaires&quot; et j'avais cliqué sur 'soumettre'

Je le reprends donc ici :

Il y a des sigles dans le haut, colonne de droite et il serait bon de mettre entre () leur signification.</text>
      <sha1>so6zzs0ouhwhh8th49d0pf8wg8yf9lg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>241</id>
      <parentid>240</parentid>
      <timestamp>2010-01-24T17:38:24Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <text xml:space="preserve" bytes="788">Sur cette page je fais des essais de &quot;FlaggsRevs&quot; extension au MediaWiki qui permet de gérer les validations [[Utilisateur:WikiSysop|WikiSysop]] (lol)
----

J'ai mis en bas de cette page un commentaire concernant les sigles et acronymes, qui ne sont pas forcément connus de tous et spécialement des débutants.
----

Je ne vois pas où est ton commentaire ... [[Utilisateur:L0u!$|L0u!$]]
----
en effet, il n'est plus là ?

Je l'avais mis dans la fenêtre &quot;commentaires&quot; et j'avais cliqué sur 'soumettre'

Je le reprends donc ici :

Il y a des sigles dans le haut, colonne de droite et il serait bon de mettre entre () leur signification.

	 Informations sur l'utilisation des '''IRQ'''s par les périphériques.
 	Informations sur l'utilisation des '''DMA''' par les périphériques.</text>
      <sha1>3pf89biqczgho4yvoj857iktewxxtin</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>281</id>
      <parentid>241</parentid>
      <timestamp>2010-01-25T23:15:11Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <text xml:space="preserve" bytes="1122">Sur cette page je fais des essais de &quot;FlaggsRevs&quot; extension au MediaWiki qui permet de gérer les validations [[Utilisateur:WikiSysop|WikiSysop]] (lol)
----

J'ai mis en bas de cette page un commentaire concernant les sigles et acronymes, qui ne sont pas forcément connus de tous et spécialement des débutants.
----

Je ne vois pas où est ton commentaire ... [[Utilisateur:L0u!$|L0u!$]]
----
en effet, il n'est plus là ?

Je l'avais mis dans la fenêtre &quot;commentaires&quot; et j'avais cliqué sur 'soumettre'

Je le reprends donc ici :

Il y a des sigles dans le haut, colonne de droite et il serait bon de mettre entre () leur signification.

	 Informations sur l'utilisation des '''IRQ'''s par les périphériques.
 	Informations sur l'utilisation des '''DMA''' par les périphériques.
----
Le ifconfig en root juste pour obtenir de l'information me gêne, il fonctionne très bien en temps qu'utilisateur normal et moins un utilisateur passe de temps en root, mieux il se porte. Au pire tu mets /sbin/ifconfig si tu as peur qu'il ne sache pas utiliser le PATH.

[[Utilisateur:BBT1|BBT1]] 25 janvier 2010 à 23:15 (UTC)</text>
      <sha1>bayse17zelqk29st4a8kuf703p5f888</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>305</id>
      <parentid>281</parentid>
      <timestamp>2010-01-26T11:44:52Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <text xml:space="preserve" bytes="1200">Sur cette page je fais des essais de &quot;FlaggsRevs&quot; extension au MediaWiki qui permet de gérer les validations [[Utilisateur:WikiSysop|WikiSysop]] (lol)
----

J'ai mis en bas de cette page un commentaire concernant les sigles et acronymes, qui ne sont pas forcément connus de tous et spécialement des débutants.
----

Je ne vois pas où est ton commentaire ... [[Utilisateur:L0u!$|L0u!$]]
----
en effet, il n'est plus là ?

Je l'avais mis dans la fenêtre &quot;commentaires&quot; et j'avais cliqué sur 'soumettre'

Je le reprends donc ici :

Il y a des sigles dans le haut, colonne de droite et il serait bon de mettre entre () leur signification.

	 Informations sur l'utilisation des '''IRQ'''s par les périphériques.
 	Informations sur l'utilisation des '''DMA''' par les périphériques.
----
Le ifconfig en root juste pour obtenir de l'information me gêne, il fonctionne très bien en temps qu'utilisateur normal et moins un utilisateur passe de temps en root, mieux il se porte. Au pire tu mets /sbin/ifconfig si tu as peur qu'il ne sache pas utiliser le PATH.

[[Utilisateur:BBT1|BBT1]] 25 janvier 2010 à 23:15 (UTC)
----
La remarque de BBT1 me semble justifiée.
Je modifie dans ce sens.

----</text>
      <sha1>s9kvqb40y3mnav8j8gans3bad8i3308</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>313</id>
      <parentid>305</parentid>
      <timestamp>2010-01-26T12:36:34Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1326">Sur cette page je fais des essais de &quot;FlaggsRevs&quot; extension au MediaWiki qui permet de gérer les validations [[Utilisateur:WikiSysop|WikiSysop]] (lol)
----

J'ai mis en bas de cette page un commentaire concernant les sigles et acronymes, qui ne sont pas forcément connus de tous et spécialement des débutants.
----

Je ne vois pas où est ton commentaire ... [[Utilisateur:L0u!$|L0u!$]]
----
en effet, il n'est plus là ?

Je l'avais mis dans la fenêtre &quot;commentaires&quot; et j'avais cliqué sur 'soumettre'

Je le reprends donc ici :

Il y a des sigles dans le haut, colonne de droite et il serait bon de mettre entre () leur signification.

	 Informations sur l'utilisation des '''IRQ'''s par les périphériques.
 	Informations sur l'utilisation des '''DMA''' par les périphériques.
----
Le ifconfig en root juste pour obtenir de l'information me gêne, il fonctionne très bien en temps qu'utilisateur normal et moins un utilisateur passe de temps en root, mieux il se porte. Au pire tu mets /sbin/ifconfig si tu as peur qu'il ne sache pas utiliser le PATH.

[[Utilisateur:BBT1|BBT1]] 25 janvier 2010 à 23:15 (UTC)
----
La remarque de BBT1 me semble justifiée.
Je modifie dans ce sens.
----
J'ai appris quelquechose. $ ifconfig ne fonctionne pas alors que # ifconfig fonctionne. Mais $ /sbin/ifconfig est ok... Merci.</text>
      <sha1>00d83bbf96m29i2zk02kuaiy2miv944</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>314</id>
      <parentid>313</parentid>
      <timestamp>2010-01-26T13:00:29Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <text xml:space="preserve" bytes="1350">Sur cette page je fais des essais de &quot;FlaggsRevs&quot; extension au MediaWiki qui permet de gérer les validations [[Utilisateur:WikiSysop|WikiSysop]] (lol)
----

J'ai mis en bas de cette page un commentaire concernant les sigles et acronymes, qui ne sont pas forcément connus de tous et spécialement des débutants.
----

Je ne vois pas où est ton commentaire ... [[Utilisateur:L0u!$|L0u!$]]
----
en effet, il n'est plus là ?

Je l'avais mis dans la fenêtre &quot;commentaires&quot; et j'avais cliqué sur 'soumettre'

Je le reprends donc ici :

Il y a des sigles dans le haut, colonne de droite et il serait bon de mettre entre () leur signification.

	 Informations sur l'utilisation des '''IRQ'''s par les périphériques.
 	Informations sur l'utilisation des '''DMA''' par les périphériques.
----
Le ifconfig en root juste pour obtenir de l'information me gêne, il fonctionne très bien en temps qu'utilisateur normal et moins un utilisateur passe de temps en root, mieux il se porte. Au pire tu mets /sbin/ifconfig si tu as peur qu'il ne sache pas utiliser le PATH.

[[Utilisateur:BBT1|BBT1]] 25 janvier 2010 à 23:15 (UTC)
----
La remarque de BBT1 me semble justifiée.
Je modifie dans ce sens.
Ricardo
----
J'ai appris quelquechose. $ ifconfig ne fonctionne pas alors que # ifconfig fonctionne. Mais $ /sbin/ifconfig est ok... Merci.
----
PDQ !
----</text>
      <sha1>i91iawncg8o0hz6izr1ghnmvrk0s603</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>315</id>
      <parentid>314</parentid>
      <timestamp>2010-01-26T13:03:19Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <text xml:space="preserve" bytes="1355">Sur cette page je fais des essais de &quot;FlaggsRevs&quot; extension au MediaWiki qui permet de gérer les validations [[Utilisateur:WikiSysop|WikiSysop]] (lol)
----

J'ai mis en bas de cette page un commentaire concernant les sigles et acronymes, qui ne sont pas forcément connus de tous et spécialement des débutants.
----

Je ne vois pas où est ton commentaire ... [[Utilisateur:L0u!$|L0u!$]]
----
en effet, il n'est plus là ?

Je l'avais mis dans la fenêtre &quot;commentaires&quot; et j'avais cliqué sur 'soumettre'

Je le reprends donc ici :

Il y a des sigles dans le haut, colonne de droite et il serait bon de mettre entre () leur signification.

	 Informations sur l'utilisation des '''IRQ'''s par les périphériques.
 	Informations sur l'utilisation des '''DMA''' par les périphériques.
----
Le ifconfig en root juste pour obtenir de l'information me gêne, il fonctionne très bien en temps qu'utilisateur normal et moins un utilisateur passe de temps en root, mieux il se porte. Au pire tu mets /sbin/ifconfig si tu as peur qu'il ne sache pas utiliser le PATH.

[[Utilisateur:BBT1|BBT1]] 25 janvier 2010 à 23:15 (UTC)
----
La remarque de BBT1 me semble justifiée.
Je modifie dans ce sens. &lt;/B&gt;
Ricardo
----
J'ai appris quelquechose. $ ifconfig ne fonctionne pas alors que # ifconfig fonctionne. Mais $ /sbin/ifconfig est ok... Merci.
----
PDQ !
----</text>
      <sha1>3ap56r7ojnjsa1pwe0wlazgvq9xbkrx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>316</id>
      <parentid>315</parentid>
      <timestamp>2010-01-26T13:06:14Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <text xml:space="preserve" bytes="1357">Sur cette page je fais des essais de &quot;FlaggsRevs&quot; extension au MediaWiki qui permet de gérer les validations [[Utilisateur:WikiSysop|WikiSysop]] (lol)
----

J'ai mis en bas de cette page un commentaire concernant les sigles et acronymes, qui ne sont pas forcément connus de tous et spécialement des débutants.
----

Je ne vois pas où est ton commentaire ... [[Utilisateur:L0u!$|L0u!$]]
----
en effet, il n'est plus là ?

Je l'avais mis dans la fenêtre &quot;commentaires&quot; et j'avais cliqué sur 'soumettre'

Je le reprends donc ici :

Il y a des sigles dans le haut, colonne de droite et il serait bon de mettre entre () leur signification.

	 Informations sur l'utilisation des '''IRQ'''s par les périphériques.
 	Informations sur l'utilisation des '''DMA''' par les périphériques.
----
Le ifconfig en root juste pour obtenir de l'information me gêne, il fonctionne très bien en temps qu'utilisateur normal et moins un utilisateur passe de temps en root, mieux il se porte. Au pire tu mets /sbin/ifconfig si tu as peur qu'il ne sache pas utiliser le PATH.

[[Utilisateur:BBT1|BBT1]] 25 janvier 2010 à 23:15 (UTC)
----
La remarque de BBT1 me semble justifiée.
Je modifie dans ce sens. &lt;br /&gt;
Ricardo
----
J'ai appris quelquechose. $ ifconfig ne fonctionne pas alors que # ifconfig fonctionne. Mais $ /sbin/ifconfig est ok... Merci.
----
PDQ !
----</text>
      <sha1>08ex99n6dfgw5bgalx7pjgjq11vbjq9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>318</id>
      <parentid>316</parentid>
      <timestamp>2010-01-26T13:20:30Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <text xml:space="preserve" bytes="1450">Sur cette page je fais des essais de &quot;FlaggsRevs&quot; extension au MediaWiki qui permet de gérer les validations [[Utilisateur:WikiSysop|WikiSysop]] (lol)
----

J'ai mis en bas de cette page un commentaire concernant les sigles et acronymes, qui ne sont pas forcément connus de tous et spécialement des débutants.
----

Je ne vois pas où est ton commentaire ... [[Utilisateur:L0u!$|L0u!$]]
----
en effet, il n'est plus là ?

Je l'avais mis dans la fenêtre &quot;commentaires&quot; et j'avais cliqué sur 'soumettre'

Je le reprends donc ici :

Il y a des sigles dans le haut, colonne de droite et il serait bon de mettre entre () leur signification.

	 Informations sur l'utilisation des '''IRQ'''s par les périphériques.
 	Informations sur l'utilisation des '''DMA''' par les périphériques.
----
Le ifconfig en root juste pour obtenir de l'information me gêne, il fonctionne très bien en temps qu'utilisateur normal et moins un utilisateur passe de temps en root, mieux il se porte. Au pire tu mets /sbin/ifconfig si tu as peur qu'il ne sache pas utiliser le PATH.

[[Utilisateur:BBT1|BBT1]] 25 janvier 2010 à 23:15 (UTC)
----
La remarque de BBT1 me semble justifiée.
Je modifie dans ce sens. &lt;br /&gt;
Ricardo
----
J'ai appris quelquechose. $ ifconfig ne fonctionne pas alors que # ifconfig fonctionne. Mais $ /sbin/ifconfig est ok... Merci.
----
PDQ !
----
modifié 1ère ligne : ... voir # uname -a ==&gt; voir '''''$''''' uname -a &lt;br /&gt;
Ricardo
----</text>
      <sha1>lrfku16rcnwiomstj2hh0rxut4hkjlo</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>319</id>
      <parentid>318</parentid>
      <timestamp>2010-01-26T13:23:18Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1730">Sur cette page je fais des essais de &quot;FlaggsRevs&quot; extension au MediaWiki qui permet de gérer les validations [[Utilisateur:WikiSysop|WikiSysop]] (lol)
----

J'ai mis en bas de cette page un commentaire concernant les sigles et acronymes, qui ne sont pas forcément connus de tous et spécialement des débutants.
----

Je ne vois pas où est ton commentaire ... [[Utilisateur:L0u!$|L0u!$]]
----
en effet, il n'est plus là ?

Je l'avais mis dans la fenêtre &quot;commentaires&quot; et j'avais cliqué sur 'soumettre'

Je le reprends donc ici :

Il y a des sigles dans le haut, colonne de droite et il serait bon de mettre entre () leur signification.

	 Informations sur l'utilisation des '''IRQ'''s par les périphériques.
 	Informations sur l'utilisation des '''DMA''' par les périphériques.
----
Le ifconfig en root juste pour obtenir de l'information me gêne, il fonctionne très bien en temps qu'utilisateur normal et moins un utilisateur passe de temps en root, mieux il se porte. Au pire tu mets /sbin/ifconfig si tu as peur qu'il ne sache pas utiliser le PATH.

[[Utilisateur:BBT1|BBT1]] 25 janvier 2010 à 23:15 (UTC)
----
La remarque de BBT1 me semble justifiée.
Je modifie dans ce sens. &lt;br /&gt;
Ricardo
----
J'ai appris quelquechose. $ ifconfig ne fonctionne pas alors que # ifconfig fonctionne. Mais $ /sbin/ifconfig est ok... Merci.
----
PDQ !
----
modifié 1ère ligne : ... voir # uname -a ==&gt; voir '''''$''''' uname -a &lt;br /&gt;
Ricardo
----
PS J'ai bien vu pour l'explication des abréviations, mais je n'ai pas le temps encore. Je suis dans le jus avec le Wiki... Des problèmes avec le Forum du Wiki. Il est opérationnel, mais... non accessible aux utilisateurs. Je suis dessus depuis... des plombes et des plombes...</text>
      <sha1>ahspwlpb988dfbbcsfohcugy9lhqy73</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>320</id>
      <parentid>319</parentid>
      <timestamp>2010-01-26T13:24:54Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1832">Sur cette page je fais des essais de &quot;FlaggsRevs&quot; extension au MediaWiki qui permet de gérer les validations [[Utilisateur:WikiSysop|WikiSysop]] (lol)
----

J'ai mis en bas de cette page un commentaire concernant les sigles et acronymes, qui ne sont pas forcément connus de tous et spécialement des débutants.
----

Je ne vois pas où est ton commentaire ... [[Utilisateur:L0u!$|L0u!$]]
----
en effet, il n'est plus là ?

Je l'avais mis dans la fenêtre &quot;commentaires&quot; et j'avais cliqué sur 'soumettre'

Je le reprends donc ici :

Il y a des sigles dans le haut, colonne de droite et il serait bon de mettre entre () leur signification.

	 Informations sur l'utilisation des '''IRQ'''s par les périphériques.
 	Informations sur l'utilisation des '''DMA''' par les périphériques.
----
Le ifconfig en root juste pour obtenir de l'information me gêne, il fonctionne très bien en temps qu'utilisateur normal et moins un utilisateur passe de temps en root, mieux il se porte. Au pire tu mets /sbin/ifconfig si tu as peur qu'il ne sache pas utiliser le PATH.

[[Utilisateur:BBT1|BBT1]] 25 janvier 2010 à 23:15 (UTC)
----
La remarque de BBT1 me semble justifiée.
Je modifie dans ce sens. &lt;br /&gt;
Ricardo
----
J'ai appris quelquechose. $ ifconfig ne fonctionne pas alors que # ifconfig fonctionne. Mais $ /sbin/ifconfig est ok... Merci.
----
PDQ !
----
modifié 1ère ligne : ... voir # uname -a ==&gt; voir '''''$''''' uname -a &lt;br /&gt;
Ricardo
----
PS J'ai bien vu pour l'explication des abréviations, mais je n'ai pas le temps encore. Je suis dans le jus avec le Wiki... Des problèmes avec le Forum du Wiki. Il est opérationnel, mais... non accessible aux utilisateurs. Je suis dessus depuis... des plombes et des plombes...
PS Ricardo pour signer fait plutôt 3 tildes (~) à la suite, ça &quot;autosigne&quot; [[Utilisateur:Lol|Lol]]</text>
      <sha1>sodndgfp2di6xjctriaki0sp6u4pguf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>322</id>
      <parentid>320</parentid>
      <timestamp>2010-01-26T13:34:05Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <text xml:space="preserve" bytes="1934">Sur cette page je fais des essais de &quot;FlaggsRevs&quot; extension au MediaWiki qui permet de gérer les validations [[Utilisateur:WikiSysop|WikiSysop]] (lol)
----

J'ai mis en bas de cette page un commentaire concernant les sigles et acronymes, qui ne sont pas forcément connus de tous et spécialement des débutants.
----

Je ne vois pas où est ton commentaire ... [[Utilisateur:L0u!$|L0u!$]]
----
en effet, il n'est plus là ?

Je l'avais mis dans la fenêtre &quot;commentaires&quot; et j'avais cliqué sur 'soumettre'

Je le reprends donc ici :

Il y a des sigles dans le haut, colonne de droite et il serait bon de mettre entre () leur signification.

	 Informations sur l'utilisation des '''IRQ'''s par les périphériques.
 	Informations sur l'utilisation des '''DMA''' par les périphériques.
----
Le ifconfig en root juste pour obtenir de l'information me gêne, il fonctionne très bien en temps qu'utilisateur normal et moins un utilisateur passe de temps en root, mieux il se porte. Au pire tu mets /sbin/ifconfig si tu as peur qu'il ne sache pas utiliser le PATH.

[[Utilisateur:BBT1|BBT1]] 25 janvier 2010 à 23:15 (UTC)
----
La remarque de BBT1 me semble justifiée.
Je modifie dans ce sens. &lt;br /&gt;
Ricardo
----
J'ai appris quelquechose. $ ifconfig ne fonctionne pas alors que # ifconfig fonctionne. Mais $ /sbin/ifconfig est ok... Merci.
----
PDQ !
----
modifié 1ère ligne : ... voir # uname -a ==&gt; voir '''''$''''' uname -a &lt;br /&gt;
Ricardo
----
PS J'ai bien vu pour l'explication des abréviations, mais je n'ai pas le temps encore. Je suis dans le jus avec le Wiki... Des problèmes avec le Forum du Wiki. Il est opérationnel, mais... non accessible aux utilisateurs. Je suis dessus depuis... des plombes et des plombes...
PS Ricardo pour signer fait plutôt 3 tildes (~) à la suite, ça &quot;autosigne&quot; [[Utilisateur:Lol|Lol]]
----
VU ! &lt;br /&gt;
J'ai ajouté deux commandes : $ stat ... &lt;br /&gt;
[[Utilisateur:Ricardo|Ricardo]]
----</text>
      <sha1>6uwxml7dnfu5pzz0pnbz8w2gn22bzdr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>551</id>
      <parentid>322</parentid>
      <timestamp>2010-01-30T11:19:39Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <text xml:space="preserve" bytes="1998">Sur cette page je fais des essais de &quot;FlaggsRevs&quot; extension au MediaWiki qui permet de gérer les validations [[Utilisateur:WikiSysop|WikiSysop]] (lol)
----

J'ai mis en bas de cette page un commentaire concernant les sigles et acronymes, qui ne sont pas forcément connus de tous et spécialement des débutants.
----

Je ne vois pas où est ton commentaire ... [[Utilisateur:L0u!$|L0u!$]]
----
en effet, il n'est plus là ?

Je l'avais mis dans la fenêtre &quot;commentaires&quot; et j'avais cliqué sur 'soumettre'

Je le reprends donc ici :

Il y a des sigles dans le haut, colonne de droite et il serait bon de mettre entre () leur signification.

	 Informations sur l'utilisation des '''IRQ'''s par les périphériques.
 	Informations sur l'utilisation des '''DMA''' par les périphériques.
----
Le ifconfig en root juste pour obtenir de l'information me gêne, il fonctionne très bien en temps qu'utilisateur normal et moins un utilisateur passe de temps en root, mieux il se porte. Au pire tu mets /sbin/ifconfig si tu as peur qu'il ne sache pas utiliser le PATH.

[[Utilisateur:BBT1|BBT1]] 25 janvier 2010 à 23:15 (UTC)
----
La remarque de BBT1 me semble justifiée.
Je modifie dans ce sens. &lt;br /&gt;
Ricardo
----
J'ai appris quelquechose. $ ifconfig ne fonctionne pas alors que # ifconfig fonctionne. Mais $ /sbin/ifconfig est ok... Merci.
----
PDQ !
----
modifié 1ère ligne : ... voir # uname -a ==&gt; voir '''''$''''' uname -a &lt;br /&gt;
Ricardo
----
PS J'ai bien vu pour l'explication des abréviations, mais je n'ai pas le temps encore. Je suis dans le jus avec le Wiki... Des problèmes avec le Forum du Wiki. Il est opérationnel, mais... non accessible aux utilisateurs. Je suis dessus depuis... des plombes et des plombes...
PS Ricardo pour signer fait plutôt 3 tildes (~) à la suite, ça &quot;autosigne&quot; [[Utilisateur:Lol|Lol]]
----
VU ! &lt;br /&gt;
J'ai ajouté deux commandes : $ stat ... &lt;br /&gt;
[[Utilisateur:Ricardo|Ricardo]]
----

Voilà qui est parfait avec le lien pour les sigles/acronymes.</text>
      <sha1>26s9u31j490yuzyvqdygye9acmc50io</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>552</id>
      <parentid>551</parentid>
      <timestamp>2010-01-30T11:20:50Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <text xml:space="preserve" bytes="2030">Sur cette page je fais des essais de &quot;FlaggsRevs&quot; extension au MediaWiki qui permet de gérer les validations [[Utilisateur:WikiSysop|WikiSysop]] (lol)
----

J'ai mis en bas de cette page un commentaire concernant les sigles et acronymes, qui ne sont pas forcément connus de tous et spécialement des débutants.
----

Je ne vois pas où est ton commentaire ... [[Utilisateur:L0u!$|L0u!$]]
----
en effet, il n'est plus là ?

Je l'avais mis dans la fenêtre &quot;commentaires&quot; et j'avais cliqué sur 'soumettre'

Je le reprends donc ici :

Il y a des sigles dans le haut, colonne de droite et il serait bon de mettre entre () leur signification.

	 Informations sur l'utilisation des '''IRQ'''s par les périphériques.
 	Informations sur l'utilisation des '''DMA''' par les périphériques.
----
Le ifconfig en root juste pour obtenir de l'information me gêne, il fonctionne très bien en temps qu'utilisateur normal et moins un utilisateur passe de temps en root, mieux il se porte. Au pire tu mets /sbin/ifconfig si tu as peur qu'il ne sache pas utiliser le PATH.

[[Utilisateur:BBT1|BBT1]] 25 janvier 2010 à 23:15 (UTC)
----
La remarque de BBT1 me semble justifiée.
Je modifie dans ce sens. &lt;br /&gt;
Ricardo
----
J'ai appris quelquechose. $ ifconfig ne fonctionne pas alors que # ifconfig fonctionne. Mais $ /sbin/ifconfig est ok... Merci.
----
PDQ !
----
modifié 1ère ligne : ... voir # uname -a ==&gt; voir '''''$''''' uname -a &lt;br /&gt;
Ricardo
----
PS J'ai bien vu pour l'explication des abréviations, mais je n'ai pas le temps encore. Je suis dans le jus avec le Wiki... Des problèmes avec le Forum du Wiki. Il est opérationnel, mais... non accessible aux utilisateurs. Je suis dessus depuis... des plombes et des plombes...
PS Ricardo pour signer fait plutôt 3 tildes (~) à la suite, ça &quot;autosigne&quot; [[Utilisateur:Lol|Lol]]
----
VU ! &lt;br /&gt;
J'ai ajouté deux commandes : $ stat ... &lt;br /&gt;
[[Utilisateur:Ricardo|Ricardo]]
----

Voilà qui est parfait avec le lien pour les sigles/acronymes.
[[Utilisateur:Ricardo|Ricardo]]</text>
      <sha1>5z8qto00ew52eic22i6mi3t7vnq5vw2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1101</id>
      <parentid>552</parentid>
      <timestamp>2010-02-16T07:48:36Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <text xml:space="preserve" bytes="2240">Sur cette page je fais des essais de &quot;FlaggsRevs&quot; extension au MediaWiki qui permet de gérer les validations [[Utilisateur:WikiSysop|WikiSysop]] (lol)
----

J'ai mis en bas de cette page un commentaire concernant les sigles et acronymes, qui ne sont pas forcément connus de tous et spécialement des débutants.
----

Je ne vois pas où est ton commentaire ... [[Utilisateur:L0u!$|L0u!$]]
----
en effet, il n'est plus là ?

Je l'avais mis dans la fenêtre &quot;commentaires&quot; et j'avais cliqué sur 'soumettre'

Je le reprends donc ici :

Il y a des sigles dans le haut, colonne de droite et il serait bon de mettre entre () leur signification.

	 Informations sur l'utilisation des '''IRQ'''s par les périphériques.
 	Informations sur l'utilisation des '''DMA''' par les périphériques.
----
Le ifconfig en root juste pour obtenir de l'information me gêne, il fonctionne très bien en temps qu'utilisateur normal et moins un utilisateur passe de temps en root, mieux il se porte. Au pire tu mets /sbin/ifconfig si tu as peur qu'il ne sache pas utiliser le PATH.

[[Utilisateur:BBT1|BBT1]] 25 janvier 2010 à 23:15 (UTC)
----
La remarque de BBT1 me semble justifiée.
Je modifie dans ce sens. &lt;br /&gt;
Ricardo
----
J'ai appris quelquechose. $ ifconfig ne fonctionne pas alors que # ifconfig fonctionne. Mais $ /sbin/ifconfig est ok... Merci.
----
PDQ !
----
modifié 1ère ligne : ... voir # uname -a ==&gt; voir '''''$''''' uname -a &lt;br /&gt;
Ricardo
----
PS J'ai bien vu pour l'explication des abréviations, mais je n'ai pas le temps encore. Je suis dans le jus avec le Wiki... Des problèmes avec le Forum du Wiki. Il est opérationnel, mais... non accessible aux utilisateurs. Je suis dessus depuis... des plombes et des plombes...
PS Ricardo pour signer fait plutôt 3 tildes (~) à la suite, ça &quot;autosigne&quot; [[Utilisateur:Lol|Lol]]
----
VU ! &lt;br /&gt;
J'ai ajouté deux commandes : $ stat ... &lt;br /&gt;
[[Utilisateur:Ricardo|Ricardo]]
----

Voilà qui est parfait avec le lien pour les sigles/acronymes.
[[Utilisateur:Ricardo|Ricardo]]

En changeant cat en pager (ce qui est certainement judicieux) nous détruisons la belle ordonnance alphabétique des commandes ! [[Utilisateur:Ggoodluck47|Amicalement, Gerard]] 16 février 2010 à 07:48 (UTC)</text>
      <sha1>d6od0bc870qs7qg1js3y7tepx7xrg8v</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1104</id>
      <parentid>1101</parentid>
      <timestamp>2010-02-18T12:23:03Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <text xml:space="preserve" bytes="2264">Sur cette page je fais des essais de &quot;FlaggsRevs&quot; extension au MediaWiki qui permet de gérer les validations [[Utilisateur:WikiSysop|WikiSysop]] (lol)
----

J'ai mis en bas de cette page un commentaire concernant les sigles et acronymes, qui ne sont pas forcément connus de tous et spécialement des débutants.
----

Je ne vois pas où est ton commentaire ... [[Utilisateur:L0u!$|L0u!$]]
----
en effet, il n'est plus là ?

Je l'avais mis dans la fenêtre &quot;commentaires&quot; et j'avais cliqué sur 'soumettre'

Je le reprends donc ici :

Il y a des sigles dans le haut, colonne de droite et il serait bon de mettre entre () leur signification.

	 Informations sur l'utilisation des '''IRQ'''s par les périphériques.
 	Informations sur l'utilisation des '''DMA''' par les périphériques.
----
Le ifconfig en root juste pour obtenir de l'information me gêne, il fonctionne très bien en temps qu'utilisateur normal et moins un utilisateur passe de temps en root, mieux il se porte. Au pire tu mets /sbin/ifconfig si tu as peur qu'il ne sache pas utiliser le PATH.

[[Utilisateur:BBT1|BBT1]] 25 janvier 2010 à 23:15 (UTC)
----
La remarque de BBT1 me semble justifiée.
Je modifie dans ce sens. &lt;br /&gt;
Ricardo
----
J'ai appris quelquechose. $ ifconfig ne fonctionne pas alors que # ifconfig fonctionne. Mais $ /sbin/ifconfig est ok... Merci.
----
PDQ !
----
modifié 1ère ligne : ... voir # uname -a ==&gt; voir '''''$''''' uname -a &lt;br /&gt;
Ricardo
----
PS J'ai bien vu pour l'explication des abréviations, mais je n'ai pas le temps encore. Je suis dans le jus avec le Wiki... Des problèmes avec le Forum du Wiki. Il est opérationnel, mais... non accessible aux utilisateurs. Je suis dessus depuis... des plombes et des plombes...
PS Ricardo pour signer fait plutôt 3 tildes (~) à la suite, ça &quot;autosigne&quot; [[Utilisateur:Lol|Lol]]
----
VU ! &lt;br /&gt;
J'ai ajouté deux commandes : $ stat ... &lt;br /&gt;
[[Utilisateur:Ricardo|Ricardo]]
----

Voilà qui est parfait avec le lien pour les sigles/acronymes.
[[Utilisateur:Ricardo|Ricardo]]

En changeant cat en pager (ce qui est certainement judicieux) nous détruisons la belle ordonnance alphabétique des commandes ! [[Utilisateur:Ggoodluck47|Amicalement, Gerard]] 16 février 2010 à 07:48 (UTC)

C'est corrigé @@SIG@@</text>
      <sha1>fp0b4qz6epps1on4tvcygrrtef2wv4a</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1933</id>
      <parentid>1104</parentid>
      <timestamp>2010-08-15T12:54:22Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <text xml:space="preserve" bytes="2486">Sur cette page je fais des essais de &quot;FlaggsRevs&quot; extension au MediaWiki qui permet de gérer les validations [[Utilisateur:WikiSysop|WikiSysop]] (lol)
----

J'ai mis en bas de cette page un commentaire concernant les sigles et acronymes, qui ne sont pas forcément connus de tous et spécialement des débutants.
----

Je ne vois pas où est ton commentaire ... [[Utilisateur:L0u!$|L0u!$]]
----
en effet, il n'est plus là ?

Je l'avais mis dans la fenêtre &quot;commentaires&quot; et j'avais cliqué sur 'soumettre'

Je le reprends donc ici :

Il y a des sigles dans le haut, colonne de droite et il serait bon de mettre entre () leur signification.

	 Informations sur l'utilisation des '''IRQ'''s par les périphériques.
 	Informations sur l'utilisation des '''DMA''' par les périphériques.
----
Le ifconfig en root juste pour obtenir de l'information me gêne, il fonctionne très bien en temps qu'utilisateur normal et moins un utilisateur passe de temps en root, mieux il se porte. Au pire tu mets /sbin/ifconfig si tu as peur qu'il ne sache pas utiliser le PATH.

[[Utilisateur:BBT1|BBT1]] 25 janvier 2010 à 23:15 (UTC)
----
La remarque de BBT1 me semble justifiée.
Je modifie dans ce sens. &lt;br /&gt;
Ricardo
----
J'ai appris quelquechose. $ ifconfig ne fonctionne pas alors que # ifconfig fonctionne. Mais $ /sbin/ifconfig est ok... Merci.
----
PDQ !
----
modifié 1ère ligne : ... voir # uname -a ==&gt; voir '''''$''''' uname -a &lt;br /&gt;
Ricardo
----
PS J'ai bien vu pour l'explication des abréviations, mais je n'ai pas le temps encore. Je suis dans le jus avec le Wiki... Des problèmes avec le Forum du Wiki. Il est opérationnel, mais... non accessible aux utilisateurs. Je suis dessus depuis... des plombes et des plombes...
PS Ricardo pour signer fait plutôt 3 tildes (~) à la suite, ça &quot;autosigne&quot; [[Utilisateur:Lol|Lol]]
----
VU ! &lt;br /&gt;
J'ai ajouté deux commandes : $ stat ... &lt;br /&gt;
[[Utilisateur:Ricardo|Ricardo]]
----

Voilà qui est parfait avec le lien pour les sigles/acronymes.
[[Utilisateur:Ricardo|Ricardo]]

En changeant cat en pager (ce qui est certainement judicieux) nous détruisons la belle ordonnance alphabétique des commandes ! [[Utilisateur:Ggoodluck47|Amicalement, Gerard]] 16 février 2010 à 07:48 (UTC)

C'est corrigé @@SIG@@

Sur la page :http://www.isalo.org/wiki.debian-fr/index.php/Commandes_informations l'alignement entre la commande et les commentaires ne sont pas en phase (décalage de plusieurs lignes) Désolé mais je sais pas faire ~~</text>
      <sha1>49g3jfc1kfb5s89mwogbr1m1n4kueiy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1934</id>
      <parentid>1933</parentid>
      <timestamp>2010-08-15T12:56:11Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <text xml:space="preserve" bytes="2531">Sur cette page je fais des essais de &quot;FlaggsRevs&quot; extension au MediaWiki qui permet de gérer les validations [[Utilisateur:WikiSysop|WikiSysop]] (lol)
----

J'ai mis en bas de cette page un commentaire concernant les sigles et acronymes, qui ne sont pas forcément connus de tous et spécialement des débutants.
----

Je ne vois pas où est ton commentaire ... [[Utilisateur:L0u!$|L0u!$]]
----
en effet, il n'est plus là ?

Je l'avais mis dans la fenêtre &quot;commentaires&quot; et j'avais cliqué sur 'soumettre'

Je le reprends donc ici :

Il y a des sigles dans le haut, colonne de droite et il serait bon de mettre entre () leur signification.

	 Informations sur l'utilisation des '''IRQ'''s par les périphériques.
 	Informations sur l'utilisation des '''DMA''' par les périphériques.
----
Le ifconfig en root juste pour obtenir de l'information me gêne, il fonctionne très bien en temps qu'utilisateur normal et moins un utilisateur passe de temps en root, mieux il se porte. Au pire tu mets /sbin/ifconfig si tu as peur qu'il ne sache pas utiliser le PATH.

[[Utilisateur:BBT1|BBT1]] 25 janvier 2010 à 23:15 (UTC)
----
La remarque de BBT1 me semble justifiée.
Je modifie dans ce sens. &lt;br /&gt;
Ricardo
----
J'ai appris quelquechose. $ ifconfig ne fonctionne pas alors que # ifconfig fonctionne. Mais $ /sbin/ifconfig est ok... Merci.
----
PDQ !
----
modifié 1ère ligne : ... voir # uname -a ==&gt; voir '''''$''''' uname -a &lt;br /&gt;
Ricardo
----
PS J'ai bien vu pour l'explication des abréviations, mais je n'ai pas le temps encore. Je suis dans le jus avec le Wiki... Des problèmes avec le Forum du Wiki. Il est opérationnel, mais... non accessible aux utilisateurs. Je suis dessus depuis... des plombes et des plombes...
PS Ricardo pour signer fait plutôt 3 tildes (~) à la suite, ça &quot;autosigne&quot; [[Utilisateur:Lol|Lol]]
----
VU ! &lt;br /&gt;
J'ai ajouté deux commandes : $ stat ... &lt;br /&gt;
[[Utilisateur:Ricardo|Ricardo]]
----

Voilà qui est parfait avec le lien pour les sigles/acronymes.
[[Utilisateur:Ricardo|Ricardo]]

En changeant cat en pager (ce qui est certainement judicieux) nous détruisons la belle ordonnance alphabétique des commandes ! [[Utilisateur:Ggoodluck47|Amicalement, Gerard]] 16 février 2010 à 07:48 (UTC)

C'est corrigé @@SIG@@

Sur la page :http://www.isalo.org/wiki.debian-fr/index.php/Commandes_informations l'alignement entre la commande et les commentaires ne sont pas en phase (décalage de plusieurs lignes) Désolé mais je sais pas faire [[Utilisateur:Ggoodluck47|Amicalement, Gerard]]</text>
      <sha1>567c6630bptpjktgfmvsnn3gb7964tr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Configuration d'un serveur mail avec Postfix</title>
    <ns>1</ns>
    <id>422</id>
    <revision>
      <id>1542</id>
      <timestamp>2010-05-27T17:32:09Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <comment>Page créée avec « monDomaine.com.    IN    MX    10    smtp  Et la commande ? ~~goodluck »</comment>
      <text xml:space="preserve" bytes="70">monDomaine.com.    IN    MX    10    smtp

Et la commande ? ~~goodluck</text>
      <sha1>5cau482z1qiangehyjp5jiidnkcna6i</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1543</id>
      <parentid>1542</parentid>
      <timestamp>2010-05-27T17:32:34Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <text xml:space="preserve" bytes="115">monDomaine.com.    IN    MX    10    smtp

Et la commande ? [[Utilisateur:Ggoodluck47|Amicalement, Gerard]]goodluck</text>
      <sha1>flmm7px0ecphq0mqxsbdtth2ig0e2xl</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1544</id>
      <parentid>1543</parentid>
      <timestamp>2010-05-27T17:38:31Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <text xml:space="preserve" bytes="456">monDomaine.com.    IN    MX    10    smtp

Et la commande ? [[Utilisateur:Ggoodluck47|Amicalement, Gerard]]goodluck

Freebox : http://www.dslvalley.com/dossiers/freebox/freebox-nat.php

NeufBox : http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php (fin de page)

LiveBox : http://www.dslvalley.com/dossiers/orange/livebox-emule.php (fin de page)

Ces adresses mériteraient d'être explicitées, elles arrivent là sans prévenir de leur objet ;)</text>
      <sha1>214tx0cxcn96qai3jxc6rl5fdez8ta8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2890</id>
      <parentid>1544</parentid>
      <timestamp>2011-04-13T07:51:55Z</timestamp>
      <contributor>
        <username>Debianhadic</username>
        <id>11</id>
      </contributor>
      <minor/>
      <comment>a renommé [[Discussion:Configuration dun serveur mail avec Postfix]] en [[Discussion:Configuration d'un serveur mail avec Postfix]] : et l'apostrophe nom de non !</comment>
      <text xml:space="preserve" bytes="456">monDomaine.com.    IN    MX    10    smtp

Et la commande ? [[Utilisateur:Ggoodluck47|Amicalement, Gerard]]goodluck

Freebox : http://www.dslvalley.com/dossiers/freebox/freebox-nat.php

NeufBox : http://www.dslvalley.com/dossiers/9box4/neufbox-nat-emule.php (fin de page)

LiveBox : http://www.dslvalley.com/dossiers/orange/livebox-emule.php (fin de page)

Ces adresses mériteraient d'être explicitées, elles arrivent là sans prévenir de leur objet ;)</text>
      <sha1>214tx0cxcn96qai3jxc6rl5fdez8ta8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Configuration dun serveur mail avec Postfix</title>
    <ns>1</ns>
    <id>681</id>
    <redirect title="Discussion:Configuration d&#039;un serveur mail avec Postfix" />
    <revision>
      <id>2891</id>
      <timestamp>2011-04-13T07:51:55Z</timestamp>
      <contributor>
        <username>Debianhadic</username>
        <id>11</id>
      </contributor>
      <comment>a renommé [[Discussion:Configuration dun serveur mail avec Postfix]] en [[Discussion:Configuration d'un serveur mail avec Postfix]] : et l'apostrophe nom de non !</comment>
      <text xml:space="preserve" bytes="72">#REDIRECTION [[Discussion:Configuration d'un serveur mail avec Postfix]]</text>
      <sha1>oyakmiudvksnoiirbiho06mijm8prvk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Debian &amp; UEFI</title>
    <ns>1</ns>
    <id>1215</id>
    <revision>
      <id>4989</id>
      <timestamp>2013-02-20T16:27:09Z</timestamp>
      <contributor>
        <username>Thald'</username>
        <id>255</id>
      </contributor>
      <comment>Page créée avec « Je ne suis pas un expert en rédaction ou en mise en page. Je m'excuse si jamais cette page ne correspond par à la charte ou réglement.  N'hésitez pas à me taper sur l... »</comment>
      <text xml:space="preserve" bytes="325">Je ne suis pas un expert en rédaction ou en mise en page.
Je m'excuse si jamais cette page ne correspond par à la charte ou réglement.

N'hésitez pas à me taper sur les doigts sur les informations erronées.

J'ai mis en bas de page un lien vers le howto qui m'a bien aidé ainsi que la discussion sur le forum. 

Thald'</text>
      <sha1>j49zbhd3lj1z9idqzuim0k6mzqftjcv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Dwm</title>
    <ns>1</ns>
    <id>589</id>
    <revision>
      <id>2438</id>
      <timestamp>2010-11-26T12:55:53Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <comment>Page créée avec « Cette page est recopiée d'ici : http://thuban.toile-libre.org/index.php/dwm-un-tiling-window-manager-pour-vos-besoins/, j'espère ne pas avoir laissé trop de fautes lors de... »</comment>
      <text xml:space="preserve" bytes="210">Cette page est recopiée d'ici : http://thuban.toile-libre.org/index.php/dwm-un-tiling-window-manager-pour-vos-besoins/, j'espère ne pas avoir laissé trop de fautes lors de la conversion vers le langage wiki.</text>
      <sha1>1t66b2x17sgvl0w9sfq112p4thfwike</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Edition Video</title>
    <ns>1</ns>
    <id>1177</id>
    <revision>
      <id>4826</id>
      <timestamp>2012-12-10T18:57:10Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>Page créée avec « Au sujet de l'installation Avidemux : je n'ai jamais entendu parler de l'utilisation des dépôts Multimedia ajoutant des paquets propriétaires au système. (système mai... »</comment>
      <text xml:space="preserve" bytes="496">Au sujet de l'installation Avidemux : je n'ai jamais entendu parler de l'utilisation des dépôts Multimedia ajoutant des paquets propriétaires au système. (système main/contrib/non-free identique à celui des dépôts officiels)

Si cette supposition ne peut pas être confirmée, il faudra supprimer cette référence à une installation massive de paquets propriétaires de la page.

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 10 décembre 2012 à 19:57 (CET)</text>
      <sha1>si6tibm30a7nqpsqlg3wsr5136kdwno</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4828</id>
      <parentid>4826</parentid>
      <timestamp>2012-12-11T18:03:26Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <text xml:space="preserve" bytes="2296">Au sujet de l'installation Avidemux : je n'ai jamais entendu parler de l'utilisation des dépôts Multimedia ajoutant des paquets propriétaires au système. (système main/contrib/non-free identique à celui des dépôts officiels)

Si cette supposition ne peut pas être confirmée, il faudra supprimer cette référence à une installation massive de paquets propriétaires de la page.

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 10 décembre 2012 à 19:57 (CET)

Yep, tu as raison, les paquets ne sont pas propriétaires. Par contre, il y a bien une raison pour laquelle ces paquets ne sont pas intégrés dans Debian, et c'est lié à des questions de propriété intellectuelle autour des codecs (encodage de mp3, etc), mais je ne saurais donner davantage de détails.

Il y a plusieurs raisons qui me refroidissent vis à vis de ce dépot:
1) A ma dernière utilisation, ça m'a foutu en l'air la plupart de mes logiciels audio et video, car mes paquets étaient à la base issus de Debian officiel. J'ai dû installer des librairies/codecs de Multimedia pour faire marcher _UN_ logiciel (kdenlive en l'occurence), pour constater ensuite que VLC ne marchait plus, etc, etc ... donc la cohabitation n'est pas possible: c'est tout ou rien. Donc d'un coup on se ramasse un bordel instable (car versions plus récentes, et changements dans le chargement dynamiques des librairies). C'est mon expérience, je m'y étais peut être mal pris mais c'est une douche froide.
2) La relation qu'entretient ce dépot, avec Debian, où j'ai l'impression que ça ne se passe pas sur un mode très coopératif. Pourquoi Deb-Multimedia reste à l'écart, et pourquoi des solutions plus ingénieuses de cohabitation ne sont pas trouvées ? Pourquoi ne pas améliorer l'existant (les logiciels multimedia qu'il y a déjà dans Debian) ? Non, à la place, chacun fait sa popote dans son coin.

Quand je regarde le site officiel de Deb-multimedia, rien n'est expliqué.
Debian a une team multimedia, et voilà la question du FAQ qui soulève la distinction entre les 2: http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F
... et on y trouve d'ailleurs la réponse à notre question.</text>
      <sha1>qdv0dk5zw3qzr23hp2avgyr56axzz0v</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4829</id>
      <parentid>4828</parentid>
      <timestamp>2012-12-11T20:38:44Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="2873">Au sujet de l'installation Avidemux : je n'ai jamais entendu parler de l'utilisation des dépôts Multimedia ajoutant des paquets propriétaires au système. (système main/contrib/non-free identique à celui des dépôts officiels)

Si cette supposition ne peut pas être confirmée, il faudra supprimer cette référence à une installation massive de paquets propriétaires de la page.

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 10 décembre 2012 à 19:57 (CET)

Yep, tu as raison, les paquets ne sont pas propriétaires. Par contre, il y a bien une raison pour laquelle ces paquets ne sont pas intégrés dans Debian, et c'est lié à des questions de propriété intellectuelle autour des codecs (encodage de mp3, etc), mais je ne saurais donner davantage de détails.

Il y a plusieurs raisons qui me refroidissent vis à vis de ce dépot:
1) A ma dernière utilisation, ça m'a foutu en l'air la plupart de mes logiciels audio et video, car mes paquets étaient à la base issus de Debian officiel. J'ai dû installer des librairies/codecs de Multimedia pour faire marcher _UN_ logiciel (kdenlive en l'occurence), pour constater ensuite que VLC ne marchait plus, etc, etc ... donc la cohabitation n'est pas possible: c'est tout ou rien. Donc d'un coup on se ramasse un bordel instable (car versions plus récentes, et changements dans le chargement dynamiques des librairies). C'est mon expérience, je m'y étais peut être mal pris mais c'est une douche froide.
2) La relation qu'entretient ce dépot, avec Debian, où j'ai l'impression que ça ne se passe pas sur un mode très coopératif. Pourquoi Deb-Multimedia reste à l'écart, et pourquoi des solutions plus ingénieuses de cohabitation ne sont pas trouvées ? Pourquoi ne pas améliorer l'existant (les logiciels multimedia qu'il y a déjà dans Debian) ? Non, à la place, chacun fait sa popote dans son coin.

Quand je regarde le site officiel de Deb-multimedia, rien n'est expliqué.
Debian a une team multimedia, et voilà la question du FAQ qui soulève la distinction entre les 2: http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F
... et on y trouve d'ailleurs la réponse à notre question.

-----

Si tu jettes un oeil sur le lien que j'ai mis dans l'article, il est clairement expliqué qu'un fichier preferences avec une priorité &lt;500 pour ces dépôts est impératif. De cette façon, pas de mise-à-jour massive des bibliothèques Debian vers leur équivalent Multimedia.

Je vais lire le lien que tu proposes, ça me paraît intéressant !

PS : Pense à signer tes interventions avec &quot;~ ~ ~ ~&quot; (sans les espaces), ce sera plus facile pour se relire…

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 11 décembre 2012 à 21:38 (CET)</text>
      <sha1>2kt2b5xixycnu1joqdjiyi0nlwtwtru</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4830</id>
      <parentid>4829</parentid>
      <timestamp>2012-12-11T20:40:40Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="3160">Au sujet de l'installation Avidemux : je n'ai jamais entendu parler de l'utilisation des dépôts Multimedia ajoutant des paquets propriétaires au système. (système main/contrib/non-free identique à celui des dépôts officiels)

Si cette supposition ne peut pas être confirmée, il faudra supprimer cette référence à une installation massive de paquets propriétaires de la page.

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 10 décembre 2012 à 19:57 (CET)

Yep, tu as raison, les paquets ne sont pas propriétaires. Par contre, il y a bien une raison pour laquelle ces paquets ne sont pas intégrés dans Debian, et c'est lié à des questions de propriété intellectuelle autour des codecs (encodage de mp3, etc), mais je ne saurais donner davantage de détails.

Il y a plusieurs raisons qui me refroidissent vis à vis de ce dépot:
1) A ma dernière utilisation, ça m'a foutu en l'air la plupart de mes logiciels audio et video, car mes paquets étaient à la base issus de Debian officiel. J'ai dû installer des librairies/codecs de Multimedia pour faire marcher _UN_ logiciel (kdenlive en l'occurence), pour constater ensuite que VLC ne marchait plus, etc, etc ... donc la cohabitation n'est pas possible: c'est tout ou rien. Donc d'un coup on se ramasse un bordel instable (car versions plus récentes, et changements dans le chargement dynamiques des librairies). C'est mon expérience, je m'y étais peut être mal pris mais c'est une douche froide.
2) La relation qu'entretient ce dépot, avec Debian, où j'ai l'impression que ça ne se passe pas sur un mode très coopératif. Pourquoi Deb-Multimedia reste à l'écart, et pourquoi des solutions plus ingénieuses de cohabitation ne sont pas trouvées ? Pourquoi ne pas améliorer l'existant (les logiciels multimedia qu'il y a déjà dans Debian) ? Non, à la place, chacun fait sa popote dans son coin.

Quand je regarde le site officiel de Deb-multimedia, rien n'est expliqué.
Debian a une team multimedia, et voilà la question du FAQ qui soulève la distinction entre les 2: http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F
... et on y trouve d'ailleurs la réponse à notre question.

-----

Si tu jettes un oeil sur le lien que j'ai mis dans l'article, il est clairement expliqué qu'un fichier preferences avec une priorité &lt;500 pour ces dépôts est impératif. De cette façon, pas de mise-à-jour massive des bibliothèques Debian vers leur équivalent Multimedia.

Je vais lire le lien que tu proposes, ça me paraît intéressant !

PS : Pense à signer tes interventions avec &quot;~ ~ ~ ~&quot; (sans les espaces), ce sera plus facile pour se relire…

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 11 décembre 2012 à 21:38 (CET)

En fait, je pense que remplacer ton avertissement un peu trop alarmiste par le lien que tu viens de donner vers la FAQ du Wiki officiel serait une bonne idée. Qu'en penses-tu ?

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 11 décembre 2012 à 21:40 (CET)</text>
      <sha1>dv1bgb8wdtaihetmg2czd3glbqvjjg1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4831</id>
      <parentid>4830</parentid>
      <timestamp>2012-12-12T11:51:12Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <text xml:space="preserve" bytes="3485">Au sujet de l'installation Avidemux : je n'ai jamais entendu parler de l'utilisation des dépôts Multimedia ajoutant des paquets propriétaires au système. (système main/contrib/non-free identique à celui des dépôts officiels)

Si cette supposition ne peut pas être confirmée, il faudra supprimer cette référence à une installation massive de paquets propriétaires de la page.

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 10 décembre 2012 à 19:57 (CET)

Yep, tu as raison, les paquets ne sont pas propriétaires. Par contre, il y a bien une raison pour laquelle ces paquets ne sont pas intégrés dans Debian, et c'est lié à des questions de propriété intellectuelle autour des codecs (encodage de mp3, etc), mais je ne saurais donner davantage de détails.

Il y a plusieurs raisons qui me refroidissent vis à vis de ce dépot:
1) A ma dernière utilisation, ça m'a foutu en l'air la plupart de mes logiciels audio et video, car mes paquets étaient à la base issus de Debian officiel. J'ai dû installer des librairies/codecs de Multimedia pour faire marcher _UN_ logiciel (kdenlive en l'occurence), pour constater ensuite que VLC ne marchait plus, etc, etc ... donc la cohabitation n'est pas possible: c'est tout ou rien. Donc d'un coup on se ramasse un bordel instable (car versions plus récentes, et changements dans le chargement dynamiques des librairies). C'est mon expérience, je m'y étais peut être mal pris mais c'est une douche froide.
2) La relation qu'entretient ce dépot, avec Debian, où j'ai l'impression que ça ne se passe pas sur un mode très coopératif. Pourquoi Deb-Multimedia reste à l'écart, et pourquoi des solutions plus ingénieuses de cohabitation ne sont pas trouvées ? Pourquoi ne pas améliorer l'existant (les logiciels multimedia qu'il y a déjà dans Debian) ? Non, à la place, chacun fait sa popote dans son coin.

Quand je regarde le site officiel de Deb-multimedia, rien n'est expliqué.
Debian a une team multimedia, et voilà la question du FAQ qui soulève la distinction entre les 2: http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F
... et on y trouve d'ailleurs la réponse à notre question.

-----

Si tu jettes un oeil sur le lien que j'ai mis dans l'article, il est clairement expliqué qu'un fichier preferences avec une priorité &lt;500 pour ces dépôts est impératif. De cette façon, pas de mise-à-jour massive des bibliothèques Debian vers leur équivalent Multimedia.

Je vais lire le lien que tu proposes, ça me paraît intéressant !

PS : Pense à signer tes interventions avec &quot;~ ~ ~ ~&quot; (sans les espaces), ce sera plus facile pour se relire…

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 11 décembre 2012 à 21:38 (CET)

En fait, je pense que remplacer ton avertissement un peu trop alarmiste par le lien que tu viens de donner vers la FAQ du Wiki officiel serait une bonne idée. Qu'en penses-tu ?

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 11 décembre 2012 à 21:40 (CET)

Je ne te cache pas que je reste assez hostile au dépot multimedia, je pense que c'est justifié, mais je vais pas décider à la place des lecteurs/lectrices. Je suis d'accord pour laisser juste ce lien vers la FAQ. ;)

--[[Utilisateur:Zbf|Zbf]] ([[Discussion utilisateur:Zbf|discussion]]) 12 décembre 2012 à 12:51 (CET)</text>
      <sha1>me3otaz9id4nskss3evazvbj0xc49ub</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Erreur lors d'un update: NO PUBKEY</title>
    <ns>1</ns>
    <id>1167</id>
    <revision>
      <id>4782</id>
      <timestamp>2012-12-04T17:40:27Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>Page créée avec « La section backports est obsolète : elle a été intégrée aux dépôts officiels depuis Squeeze et ne nécessite plus l'ajout d'une clé tierce.  Je supprimerai cette s... »</comment>
      <text xml:space="preserve" bytes="323">La section backports est obsolète : elle a été intégrée aux dépôts officiels depuis Squeeze et ne nécessite plus l'ajout d'une clé tierce.

Je supprimerai cette section si personne n'émet d'avis contraire !

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 4 décembre 2012 à 18:40 (CET)</text>
      <sha1>f42oj5k8a56htxgmzxwf7rf9d0bna25</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4787</id>
      <parentid>4782</parentid>
      <timestamp>2012-12-04T17:57:58Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="556">La section backports est obsolète : elle a été intégrée aux dépôts officiels depuis Squeeze et ne nécessite plus l'ajout d'une clé tierce.

Je supprimerai cette section si personne n'émet d'avis contraire !

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 4 décembre 2012 à 18:40 (CET)

-----

Je pense que cette page a dépassé son statut d'ébauche, la balise pourrait être supprimée.

J'attends vos avis !

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 4 décembre 2012 à 18:57 (CET)</text>
      <sha1>kafvo6i23ezjuj1gtrd36i6gtsmuqi3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4792</id>
      <parentid>4787</parentid>
      <timestamp>2012-12-06T08:56:18Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="752">La section backports est obsolète : elle a été intégrée aux dépôts officiels depuis Squeeze et ne nécessite plus l'ajout d'une clé tierce.

Je supprimerai cette section si personne n'émet d'avis contraire !

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 4 décembre 2012 à 18:40 (CET)

-----

Je pense que cette page a dépassé son statut d'ébauche, la balise pourrait être supprimée.

J'attends vos avis !

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 4 décembre 2012 à 18:57 (CET)

----
Salut, excellent boulot, merci.
Pour moi aucun problème pour passer la page en &quot;stable&quot;.
[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 6 décembre 2012 à 09:56 (CET)</text>
      <sha1>svn56y24lm57yvampeqwp9wt2f2e30x</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Fail2ban</title>
    <ns>1</ns>
    <id>893</id>
    <revision>
      <id>3665</id>
      <timestamp>2011-12-31T15:00:02Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <comment>Page créée avec « J'avoue ne pas avoir bien fouillé pour trouver la réponse à ce que je voudrais faire : une règle qui permettrait d'établir une liste blanche. Cette liste ou &quot;ces listes&quot;... »</comment>
      <text xml:space="preserve" bytes="668">J'avoue ne pas avoir bien fouillé pour trouver la réponse à ce que je voudrais faire :
une règle qui permettrait d'établir une liste blanche.
Cette liste ou &quot;ces listes&quot; si elle n'est applicable qu'à une seule autre règle, comporterait les IP des personnes qui ne seraient pas bannies en cas de dépassement d'essai fautif.
Ça permettrait de placer la barre très bas pour les &quot;emmerdeurs&quot; sans sanctionner pour ça un &quot;ami&quot; qui commettrait une erreur.
Je vois parfaitement mettre un maxretry à 0 et un temps de bannissement à 180 000 (&gt; 2 jours).
Débannir dans iptables est toujours possible mais encore faut-il que l'&quot;ami&quot; ait pu vous contacter.
~
Ricardo</text>
      <sha1>ts2r5momdv8550ac123kd646xmn2l5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3667</id>
      <parentid>3665</parentid>
      <timestamp>2012-01-01T14:06:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1025">J'avoue ne pas avoir bien fouillé pour trouver la réponse à ce que je voudrais faire :
une règle qui permettrait d'établir une liste blanche.
Cette liste ou &quot;ces listes&quot; si elle n'est applicable qu'à une seule autre règle, comporterait les IP des personnes qui ne seraient pas bannies en cas de dépassement d'essai fautif.
Ça permettrait de placer la barre très bas pour les &quot;emmerdeurs&quot; sans sanctionner pour ça un &quot;ami&quot; qui commettrait une erreur.
Je vois parfaitement mettre un maxretry à 0 et un temps de bannissement à 180 000 (&gt; 2 jours).
Débannir dans iptables est toujours possible mais encore faut-il que l'&quot;ami&quot; ait pu vous contacter.
~
Ricardo
----
Salut, j'ai fait un essai avec ceci: 

 [DEFAULT]
 
 # &quot;ignoreip&quot; can be an IP address, a CIDR mask or a DNS host
 ignoreip = /etc/fail2ban/ignoreip.list

Et je n'ai pas eu d'erreur. Mais je ne suis pas certain que ce soit pertinent.

Pour ce qui est de ta règle, tu vas vite te heurter à tes amis qui ont des ip variables...
[[Utilisateur:Lol|Lol]]</text>
      <sha1>o2zz19ujntcvei3yy7o826i297f13lg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3668</id>
      <parentid>3667</parentid>
      <timestamp>2012-01-01T14:14:14Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <text xml:space="preserve" bytes="1301">J'avoue ne pas avoir bien fouillé pour trouver la réponse à ce que je voudrais faire :
une règle qui permettrait d'établir une liste blanche.
Cette liste ou &quot;ces listes&quot; si elle n'est applicable qu'à une seule autre règle, comporterait les IP des personnes qui ne seraient pas bannies en cas de dépassement d'essai fautif.
Ça permettrait de placer la barre très bas pour les &quot;emmerdeurs&quot; sans sanctionner pour ça un &quot;ami&quot; qui commettrait une erreur.
Je vois parfaitement mettre un maxretry à 0 et un temps de bannissement à 180 000 (&gt; 2 jours).
Débannir dans iptables est toujours possible mais encore faut-il que l'&quot;ami&quot; ait pu vous contacter.
~
Ricardo
----
Salut, j'ai fait un essai avec ceci: 

 [DEFAULT]
 
 # &quot;ignoreip&quot; can be an IP address, a CIDR mask or a DNS host
 ignoreip = /etc/fail2ban/ignoreip.list

Et je n'ai pas eu d'erreur. Mais je ne suis pas certain que ce soit pertinent.

Pour ce qui est de ta règle, tu vas vite te heurter à tes amis qui ont des ip variables...
[[Utilisateur:Lol|Lol]]

Merci Lol, je vais faire les essais (pas aujourd'hui). Je te mettrai ptet à contribution pour les tests.
Pour les &quot;amis&quot; qui ont des IPs variables, je les préviendrai avant, soit de faire très attention en tapant le pass, soit de me prévenir par mail pour les débannir.</text>
      <sha1>l9kzr6bzy6dbz7q4m34mobme7pmiotg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Faireunpaquet</title>
    <ns>1</ns>
    <id>65</id>
    <revision>
      <id>251</id>
      <timestamp>2010-01-25T14:53:23Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <comment>Page créée avec « Dans la présentation, on pourrait ptet dire dans quels cas il peut être intéressant de &quot;faire un paquet&quot; ? »</comment>
      <text xml:space="preserve" bytes="109">Dans la présentation, on pourrait ptet dire dans quels cas il peut être intéressant de &quot;faire un paquet&quot; ?</text>
      <sha1>199ewp38j79ff0iyljmuwxca5k9bqu0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Flash</title>
    <ns>1</ns>
    <id>1157</id>
    <revision>
      <id>4739</id>
      <timestamp>2012-11-10T15:25:55Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>Page créée avec « Au sujet de la partie &quot;changer d'alternative&quot;, montrer la commande pour Flash plutôt que celle pour Java paraîtrait plus appropriée, non ? ;)  ~~~~ »</comment>
      <text xml:space="preserve" bytes="251">Au sujet de la partie &quot;changer d'alternative&quot;, montrer la commande pour Flash plutôt que celle pour Java paraîtrait plus appropriée, non ? ;)

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 10 novembre 2012 à 16:25 (CET)</text>
      <sha1>g2xhhtn7uhaln034thhojg6mwr89pg4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4746</id>
      <parentid>4739</parentid>
      <timestamp>2012-11-11T06:48:00Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="393">Au sujet de la partie &quot;changer d'alternative&quot;, montrer la commande pour Flash plutôt que celle pour Java paraîtrait plus appropriée, non ? ;)

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 10 novembre 2012 à 16:25 (CET)
----
Salut, hum... oui :-*)) 
C'est fait! [[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 11 novembre 2012 à 07:48 (CET)</text>
      <sha1>2uwr0vi3n8ai7jmnlnq5l8pfvf53kkl</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Fstab</title>
    <ns>1</ns>
    <id>162</id>
    <revision>
      <id>665</id>
      <timestamp>2010-02-01T10:31:02Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <comment>périphérique udev</comment>
      <text xml:space="preserve" bytes="472">Je pense qu'appeler les fichiers spéciaux de périphériques contenus dans /dev &quot;Périphériques udev&quot; est une erreur, udev s'est contenté de reproduire les pratiques de nommage pré-éxistantes pour ne pas mettre tout le monde dans les choux lorsqu'il a été introduit. Comme le fstab est indépendant de udev, je pense qu'il vaut mieux soit ne pas parler d'udev ici soit le ramener en lien en bas de page.
[[Utilisateur:BBT1|BBT1]] 1 février 2010 à 10:31 (UTC)
----</text>
      <sha1>ewti4i0anpt5lh8v952parqwx7tax80</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>666</id>
      <parentid>665</parentid>
      <timestamp>2010-02-01T10:42:16Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <text xml:space="preserve" bytes="473">Je pense qu'appeler les fichiers spéciaux de périphériques contenus dans /dev &quot;Périphériques udev&quot; est une erreur, udev s'est contenté de reproduire les pratiques de nommage pré-éxistantes pour ne pas mettre tout le monde dans les choux lorsqu'il a été introduit. Comme le fstab est indépendant de udev, je pense qu'il vaut mieux soit ne pas parler d'udev ici soit le ramener en lien en bas de page.

[[Utilisateur:BBT1|BBT1]] 1 février 2010 à 10:31 (UTC)
----</text>
      <sha1>484qazs16w8iv9odbp3qzvkzxepo9uu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>667</id>
      <parentid>666</parentid>
      <timestamp>2010-02-01T10:54:03Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="578">Je pense qu'appeler les fichiers spéciaux de périphériques contenus dans /dev &quot;Périphériques udev&quot; est une erreur, udev s'est contenté de reproduire les pratiques de nommage pré-éxistantes pour ne pas mettre tout le monde dans les choux lorsqu'il a été introduit. Comme le fstab est indépendant de udev, je pense qu'il vaut mieux soit ne pas parler d'udev ici soit le ramener en lien en bas de page.

[[Utilisateur:BBT1|BBT1]] 1 février 2010 à 10:31 (UTC)

Notre but n'est pas non plus de remplacer le wikipedia [[Utilisateur:Ggoodluck47|Amicalement, Gerard]]

----</text>
      <sha1>c38cyyu3ctmgcr0ezlxsunqn6vjy9zr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>668</id>
      <parentid>667</parentid>
      <timestamp>2010-02-01T11:05:24Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <text xml:space="preserve" bytes="1140">Je pense qu'appeler les fichiers spéciaux de périphériques contenus dans /dev &quot;Périphériques udev&quot; est une erreur, udev s'est contenté de reproduire les pratiques de nommage pré-éxistantes pour ne pas mettre tout le monde dans les choux lorsqu'il a été introduit. Comme le fstab est indépendant de udev, je pense qu'il vaut mieux soit ne pas parler d'udev ici soit le ramener en lien en bas de page.

[[Utilisateur:BBT1|BBT1]] 1 février 2010 à 10:31 (UTC)

Notre but n'est pas non plus de remplacer le wikipedia [[Utilisateur:Ggoodluck47|Amicalement, Gerard]]

----
Non, en effet, je ne pense pas que ce wiki aie vocation à devenir une encyclopédie universelle (ni même une encyclopédie des systèmes GNU/{Hurd,Linux}). Par contre, je pense que pour utiliser correctement son système, et à long terme devenir autonome avec, on gagne toujours à avoir une vision claire de ce qui se passe sous le capot plutôt qu'une vue complètement superficielle (cf. l'utilisateur windows lambda).C'est d'autant plus important que cette vue soit ''correcte''.
Amicalement, [[Utilisateur:BBT1|BBT1]] 1 février 2010 à 11:05 (UTC)
----</text>
      <sha1>jfaq7g5mfmnhl6qhjdxch6vhaxn7v1f</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>669</id>
      <parentid>668</parentid>
      <timestamp>2010-02-01T11:05:39Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <text xml:space="preserve" bytes="1141">Je pense qu'appeler les fichiers spéciaux de périphériques contenus dans /dev &quot;Périphériques udev&quot; est une erreur, udev s'est contenté de reproduire les pratiques de nommage pré-éxistantes pour ne pas mettre tout le monde dans les choux lorsqu'il a été introduit. Comme le fstab est indépendant de udev, je pense qu'il vaut mieux soit ne pas parler d'udev ici soit le ramener en lien en bas de page.

[[Utilisateur:BBT1|BBT1]] 1 février 2010 à 10:31 (UTC)

Notre but n'est pas non plus de remplacer le wikipedia [[Utilisateur:Ggoodluck47|Amicalement, Gerard]]

----
Non, en effet, je ne pense pas que ce wiki aie vocation à devenir une encyclopédie universelle (ni même une encyclopédie des systèmes GNU/{Hurd,Linux}). Par contre, je pense que pour utiliser correctement son système, et à long terme devenir autonome avec, on gagne toujours à avoir une vision claire de ce qui se passe sous le capot plutôt qu'une vue complètement superficielle (cf. l'utilisateur windows lambda).C'est d'autant plus important que cette vue soit ''correcte''.

Amicalement, [[Utilisateur:BBT1|BBT1]] 1 février 2010 à 11:05 (UTC)
----</text>
      <sha1>9rsumymemxrroo6i27zf06a2vh63rqe</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>703</id>
      <parentid>669</parentid>
      <timestamp>2010-02-01T17:54:53Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="1367">Je pense qu'appeler les fichiers spéciaux de périphériques contenus dans /dev &quot;Périphériques udev&quot; est une erreur, udev s'est contenté de reproduire les pratiques de nommage pré-éxistantes pour ne pas mettre tout le monde dans les choux lorsqu'il a été introduit. Comme le fstab est indépendant de udev, je pense qu'il vaut mieux soit ne pas parler d'udev ici soit le ramener en lien en bas de page.

[[Utilisateur:BBT1|BBT1]] 1 février 2010 à 10:31 (UTC)

Notre but n'est pas non plus de remplacer le wikipedia [[Utilisateur:Ggoodluck47|Amicalement, Gerard]]

----
Non, en effet, je ne pense pas que ce wiki aie vocation à devenir une encyclopédie universelle (ni même une encyclopédie des systèmes GNU/{Hurd,Linux}). Par contre, je pense que pour utiliser correctement son système, et à long terme devenir autonome avec, on gagne toujours à avoir une vision claire de ce qui se passe sous le capot plutôt qu'une vue complètement superficielle (cf. l'utilisateur windows lambda).C'est d'autant plus important que cette vue soit ''correcte''.

Amicalement, [[Utilisateur:BBT1|BBT1]] 1 février 2010 à 11:05 (UTC)
----

Sur ce coup là, je n'en sais pas grand chose, donc si tu es sûr de toi, vas-y, corrige-moi toi même ( tout un concept :p ). J'ai mis ce que je pensais être vrai. [[Utilisateur:L0u!$|L0u!$]] 1 février 2010 à 17:54 (UTC)</text>
      <sha1>mj0cl3ar2e9gjjeubaoetorlk2lihgp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>704</id>
      <parentid>703</parentid>
      <timestamp>2010-02-01T17:59:41Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <text xml:space="preserve" bytes="1517">Je pense qu'appeler les fichiers spéciaux de périphériques contenus dans /dev &quot;Périphériques udev&quot; est une erreur, udev s'est contenté de reproduire les pratiques de nommage pré-éxistantes pour ne pas mettre tout le monde dans les choux lorsqu'il a été introduit. Comme le fstab est indépendant de udev, je pense qu'il vaut mieux soit ne pas parler d'udev ici soit le ramener en lien en bas de page.

[[Utilisateur:BBT1|BBT1]] 1 février 2010 à 10:31 (UTC)

Notre but n'est pas non plus de remplacer le wikipedia [[Utilisateur:Ggoodluck47|Amicalement, Gerard]]

----
Non, en effet, je ne pense pas que ce wiki aie vocation à devenir une encyclopédie universelle (ni même une encyclopédie des systèmes GNU/{Hurd,Linux}). Par contre, je pense que pour utiliser correctement son système, et à long terme devenir autonome avec, on gagne toujours à avoir une vision claire de ce qui se passe sous le capot plutôt qu'une vue complètement superficielle (cf. l'utilisateur windows lambda).C'est d'autant plus important que cette vue soit ''correcte''.

Amicalement, [[Utilisateur:BBT1|BBT1]] 1 février 2010 à 11:05 (UTC)
----

Sur ce coup là, je n'en sais pas grand chose, donc si tu es sûr de toi, vas-y, corrige-moi toi même ( tout un concept :p ). J'ai mis ce que je pensais être vrai. [[Utilisateur:L0u!$|L0u!$]] 1 février 2010 à 17:54 (UTC)
----
OK, j'voulais juste pas marcher sur tes plates-bandes sans t'en parler d'abord ;)

[[Utilisateur:BBT1|BBT1]] 1 février 2010 à 17:59 (UTC)
----</text>
      <sha1>3x1mxprq99e2uf6o9cm0inw5bzgpr02</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Gestion des fichiers</title>
    <ns>1</ns>
    <id>109</id>
    <revision>
      <id>465</id>
      <timestamp>2010-01-29T01:03:26Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <comment>Page créée avec « pourquoi au début, il y a 'file' comme exemple ? Si ce n'est pas une commande, il est préférable de donner un exemple en Français, càd 'fichier' &lt;/br&gt; ~~~ ---- »</comment>
      <text xml:space="preserve" bytes="192">pourquoi au début, il y a 'file' comme exemple ?
Si ce n'est pas une commande, il est préférable de donner un exemple en Français, càd 'fichier' &lt;/br&gt;
[[Utilisateur:Ricardo|Ricardo]]
----</text>
      <sha1>svvpqk3g8br2m22navud3hatrcndua6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4525</id>
      <parentid>465</parentid>
      <timestamp>2012-10-19T21:09:00Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="418">pourquoi au début, il y a 'file' comme exemple ?
Si ce n'est pas une commande, il est préférable de donner un exemple en Français, càd 'fichier' &lt;/br&gt;
[[Utilisateur:Ricardo|Ricardo]]
----

&quot;file&quot; est aussi une commande, mais dans l'exemple que tu as noté ce n'est pas le cas. Je le remplace par &quot;fichier&quot;.

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 19 octobre 2012 à 23:09 (CEST)</text>
      <sha1>a81zumusapc60f0nv76cerkyvkctc35</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Gestion des paquets</title>
    <ns>1</ns>
    <id>1091</id>
    <revision>
      <id>4516</id>
      <timestamp>2012-10-19T19:42:20Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>redondance avec un autre article</comment>
      <text xml:space="preserve" bytes="261">La partie 1. de cet article, sur la configuration des dépôts, est redondante avec l'article sur les sources de paquets.
La supprimer et ajouter un lien vers ce dernier permettrait d'alléger cet article et de se concentrer sur la partie &quot;gestion des paquets&quot;.</text>
      <sha1>9ccguahqokbw6ovwou8ebngaw96wqxi</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4517</id>
      <parentid>4516</parentid>
      <timestamp>2012-10-19T19:42:58Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>signature omise</comment>
      <text xml:space="preserve" bytes="368">La partie 1. de cet article, sur la configuration des dépôts, est redondante avec l'article sur les sources de paquets.
La supprimer et ajouter un lien vers ce dernier permettrait d'alléger cet article et de se concentrer sur la partie &quot;gestion des paquets&quot;.

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 19 octobre 2012 à 21:42 (CEST)</text>
      <sha1>5hdz6gtfkaudk8zmwhvfpm8kzt1m61r</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Gestionnaire de fenetres</title>
    <ns>1</ns>
    <id>30</id>
    <revision>
      <id>50</id>
      <timestamp>2010-01-21T19:26:22Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <comment>Page créée avec « Bon, je vais faire un peu mon rabat-joie, mais l'interet d'une catégorie, c'est justement d'éviter d'avoir à créer soi-même ce genre de pages. »</comment>
      <text xml:space="preserve" bytes="147">Bon, je vais faire un peu mon rabat-joie, mais l'interet d'une catégorie, c'est justement d'éviter d'avoir à créer soi-même ce genre de pages.</text>
      <sha1>0wserao46sx05kaxpewwddwbjb21oxt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Glossaire</title>
    <ns>1</ns>
    <id>130</id>
    <revision>
      <id>614</id>
      <timestamp>2010-02-01T03:52:27Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « Définition Terminal. Je crois qu'il faut ajouter &quot;virtuel&quot; si l'on parle de console (et là encore ce serait avec des &quot;guillemets&quot;). Il faudrait pour être précis dire &quot;ter… »</comment>
      <text xml:space="preserve" bytes="388">Définition Terminal. Je crois qu'il faut ajouter &quot;virtuel&quot; si l'on parle de console (et là encore ce serait avec des &quot;guillemets&quot;). Il faudrait pour être précis dire &quot;terminal virtuel en mode texte&quot; (car VNC aussi est un terminal, mais en mode graphique).
Ce que nous appelons console est un émulateur de terminal (console virtuelle ou terminal virtuel). [[Utilisateur:Lol|Lol]]
----</text>
      <sha1>mrs3y0wvvoo116ttzezxjdjdn6o4bp2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>616</id>
      <parentid>614</parentid>
      <timestamp>2010-02-01T04:24:27Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="455">Définition Terminal. Je crois qu'il faut ajouter &quot;virtuel&quot; si l'on parle de console (et là encore ce serait avec des &quot;guillemets&quot;). Il faudrait pour être précis dire &quot;terminal virtuel en mode texte&quot; (car VNC aussi est un terminal, mais en mode graphique).
Ce que nous appelons console est un émulateur de terminal (console virtuelle ou terminal virtuel). Peut-être préciser aussi la signification de TTY (text teletype).[[Utilisateur:Lol|Lol]]
----</text>
      <sha1>f8ef2nhv8tb8gk45jbz77f9u37o26ev</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>932</id>
      <parentid>616</parentid>
      <timestamp>2010-02-06T17:02:13Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="758">Définition Terminal. Je crois qu'il faut ajouter &quot;virtuel&quot; si l'on parle de console (et là encore ce serait avec des &quot;guillemets&quot;). Il faudrait pour être précis dire &quot;terminal virtuel en mode texte&quot; (car VNC aussi est un terminal, mais en mode graphique).
Ce que nous appelons console est un émulateur de terminal (console virtuelle ou terminal virtuel). Peut-être préciser aussi la signification de TTY (text teletype).[[Utilisateur:Lol|Lol]]
----
A Gérard, tu as ajouté ça ''Sid, '''stable''', testing sont des &quot;rolling release&quot;'' à Rolling Realease, je pense que tu es allé un peu vite. D'accord pour Squeeze que j'avais omis, mais par contre stable (Lenny) n'est pas une Rolling Release. [[Utilisateur:Lol|Lol]] 6 février 2010 à 17:02 (UTC)</text>
      <sha1>gmdr0q4advzij12qwxq4qn5tow04r01</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>934</id>
      <parentid>932</parentid>
      <timestamp>2010-02-06T17:20:50Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <text xml:space="preserve" bytes="1009">Définition Terminal. Je crois qu'il faut ajouter &quot;virtuel&quot; si l'on parle de console (et là encore ce serait avec des &quot;guillemets&quot;). Il faudrait pour être précis dire &quot;terminal virtuel en mode texte&quot; (car VNC aussi est un terminal, mais en mode graphique).
Ce que nous appelons console est un émulateur de terminal (console virtuelle ou terminal virtuel). Peut-être préciser aussi la signification de TTY (text teletype).[[Utilisateur:Lol|Lol]]
----
A Gérard, tu as ajouté ça ''Sid, '''stable''', testing sont des &quot;rolling release&quot;'' à Rolling Realease, je pense que tu es allé un peu vite. D'accord pour Squeeze que j'avais omis, mais par contre stable (Lenny) n'est pas une Rolling Release. [[Utilisateur:Lol|Lol]] 6 février 2010 à 17:02 (UTC)

Si l'on parle de &quot;rolling release&quot; pour des distributions que l'on est pas obligé de réinstaller lors d'une sortie, alors il me semble que la stable fait partie du lôt [[Utilisateur:Ggoodluck47|Amicalement, Gerard]] 6 février 2010 à 17:20 (UTC)</text>
      <sha1>5f38gals0dzzidiwuaj8oag6o6g9y46</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>935</id>
      <parentid>934</parentid>
      <timestamp>2010-02-06T17:22:54Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <text xml:space="preserve" bytes="1125">Définition Terminal. Je crois qu'il faut ajouter &quot;virtuel&quot; si l'on parle de console (et là encore ce serait avec des &quot;guillemets&quot;). Il faudrait pour être précis dire &quot;terminal virtuel en mode texte&quot; (car VNC aussi est un terminal, mais en mode graphique).
Ce que nous appelons console est un émulateur de terminal (console virtuelle ou terminal virtuel). Peut-être préciser aussi la signification de TTY (text teletype).[[Utilisateur:Lol|Lol]]
----
A Gérard, tu as ajouté ça ''Sid, '''stable''', testing sont des &quot;rolling release&quot;'' à Rolling Realease, je pense que tu es allé un peu vite. D'accord pour Squeeze que j'avais omis, mais par contre stable (Lenny) n'est pas une Rolling Release. [[Utilisateur:Lol|Lol]] 6 février 2010 à 17:02 (UTC)

Si l'on parle de &quot;rolling release&quot; pour des distributions que l'on est pas obligé de réinstaller lors d'une sortie, alors il me semble que la stable fait partie du lôt [[Utilisateur:Ggoodluck47|Amicalement, Gerard]] 6 février 2010 à 17:20 (UTC)
Ne pas mettre lenny mais stable dans son sources.list et çà roule [[Utilisateur:Ggoodluck47|Amicalement, Gerard]]</text>
      <sha1>l7a1mu5dw23ybcglvk257qfn6rwr26s</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1007</id>
      <parentid>935</parentid>
      <timestamp>2010-02-07T15:43:46Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1666">Définition Terminal. Je crois qu'il faut ajouter &quot;virtuel&quot; si l'on parle de console (et là encore ce serait avec des &quot;guillemets&quot;). Il faudrait pour être précis dire &quot;terminal virtuel en mode texte&quot; (car VNC aussi est un terminal, mais en mode graphique).
Ce que nous appelons console est un émulateur de terminal (console virtuelle ou terminal virtuel). Peut-être préciser aussi la signification de TTY (text teletype).[[Utilisateur:Lol|Lol]]
----
A Gérard, tu as ajouté ça ''Sid, '''stable''', testing sont des &quot;rolling release&quot;'' à Rolling Realease, je pense que tu es allé un peu vite. D'accord pour Squeeze que j'avais omis, mais par contre stable (Lenny) n'est pas une Rolling Release. [[Utilisateur:Lol|Lol]] 6 février 2010 à 17:02 (UTC)

Si l'on parle de &quot;rolling release&quot; pour des distributions que l'on est pas obligé de réinstaller lors d'une sortie, alors il me semble que la stable fait partie du lôt [[Utilisateur:Ggoodluck47|Amicalement, Gerard]] 6 février 2010 à 17:20 (UTC)
Ne pas mettre lenny mais stable dans son sources.list et çà roule [[Utilisateur:Ggoodluck47|Amicalement, Gerard]]

----
Re, j'ai vérifié, car je ne suis pas convaincu. Une distribution qui sort tous les 6 mois n'est pas un rolling-release. Ma source : http://en.wikipedia.org/wiki/Rolling_release. D'après wikipédia : &quot;Non-examples: Windows, Mac OS, OpenBSD, and most Linux distributions (including Debian [Linux] &quot;stable&quot;) are not rolling releases, because they have significant changes between version numbers (a complete operating system reinstall, or at least a major upgrade, is required)&quot;. [[Utilisateur:Lol|Lol]] 7 février 2010 à 15:43 (UTC)</text>
      <sha1>8l9crbvsmgvg3552iqhuflk7mzwuqrf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1014</id>
      <parentid>1007</parentid>
      <timestamp>2010-02-07T16:20:00Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <text xml:space="preserve" bytes="1955">Définition Terminal. Je crois qu'il faut ajouter &quot;virtuel&quot; si l'on parle de console (et là encore ce serait avec des &quot;guillemets&quot;). Il faudrait pour être précis dire &quot;terminal virtuel en mode texte&quot; (car VNC aussi est un terminal, mais en mode graphique).
Ce que nous appelons console est un émulateur de terminal (console virtuelle ou terminal virtuel). Peut-être préciser aussi la signification de TTY (text teletype).[[Utilisateur:Lol|Lol]]
----
A Gérard, tu as ajouté ça ''Sid, '''stable''', testing sont des &quot;rolling release&quot;'' à Rolling Realease, je pense que tu es allé un peu vite. D'accord pour Squeeze que j'avais omis, mais par contre stable (Lenny) n'est pas une Rolling Release. [[Utilisateur:Lol|Lol]] 6 février 2010 à 17:02 (UTC)

Si l'on parle de &quot;rolling release&quot; pour des distributions que l'on est pas obligé de réinstaller lors d'une sortie, alors il me semble que la stable fait partie du lôt [[Utilisateur:Ggoodluck47|Amicalement, Gerard]] 6 février 2010 à 17:20 (UTC)
Ne pas mettre lenny mais stable dans son sources.list et çà roule [[Utilisateur:Ggoodluck47|Amicalement, Gerard]]

----
Re, j'ai vérifié, car je ne suis pas convaincu. Une distribution qui sort tous les 6 mois n'est pas un rolling-release. Ma source : http://en.wikipedia.org/wiki/Rolling_release. D'après wikipédia : &quot;Non-examples: Windows, Mac OS, OpenBSD, and most Linux distributions (including Debian [Linux] &quot;stable&quot;) are not rolling releases, because they have significant changes between version numbers (a complete operating system reinstall, or at least a major upgrade, is required)&quot;. [[Utilisateur:Lol|Lol]] 7 février 2010 à 15:43 (UTC)

Re, Alors comme je ne veux pas être en désaccord avec Wikipedia, tu rectifies ! mais ils ne m'ont pas convaincus, pourquoi parlent-ils de reinstall complète de l'OS  ou de mise à jour majeure. Combien de fois sous sid aurons nous changé de kernel sans considérer que c'est majeur ?</text>
      <sha1>c7lt2bi7ovm6icu4wczvjyk2p574vlo</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1015</id>
      <parentid>1014</parentid>
      <timestamp>2010-02-07T16:20:23Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <text xml:space="preserve" bytes="2034">Définition Terminal. Je crois qu'il faut ajouter &quot;virtuel&quot; si l'on parle de console (et là encore ce serait avec des &quot;guillemets&quot;). Il faudrait pour être précis dire &quot;terminal virtuel en mode texte&quot; (car VNC aussi est un terminal, mais en mode graphique).
Ce que nous appelons console est un émulateur de terminal (console virtuelle ou terminal virtuel). Peut-être préciser aussi la signification de TTY (text teletype).[[Utilisateur:Lol|Lol]]
----
A Gérard, tu as ajouté ça ''Sid, '''stable''', testing sont des &quot;rolling release&quot;'' à Rolling Realease, je pense que tu es allé un peu vite. D'accord pour Squeeze que j'avais omis, mais par contre stable (Lenny) n'est pas une Rolling Release. [[Utilisateur:Lol|Lol]] 6 février 2010 à 17:02 (UTC)

Si l'on parle de &quot;rolling release&quot; pour des distributions que l'on est pas obligé de réinstaller lors d'une sortie, alors il me semble que la stable fait partie du lôt [[Utilisateur:Ggoodluck47|Amicalement, Gerard]] 6 février 2010 à 17:20 (UTC)
Ne pas mettre lenny mais stable dans son sources.list et çà roule [[Utilisateur:Ggoodluck47|Amicalement, Gerard]]

----
Re, j'ai vérifié, car je ne suis pas convaincu. Une distribution qui sort tous les 6 mois n'est pas un rolling-release. Ma source : http://en.wikipedia.org/wiki/Rolling_release. D'après wikipédia : &quot;Non-examples: Windows, Mac OS, OpenBSD, and most Linux distributions (including Debian [Linux] &quot;stable&quot;) are not rolling releases, because they have significant changes between version numbers (a complete operating system reinstall, or at least a major upgrade, is required)&quot;. [[Utilisateur:Lol|Lol]] 7 février 2010 à 15:43 (UTC)

Re, Alors comme je ne veux pas être en désaccord avec Wikipedia, tu rectifies ! mais ils ne m'ont pas convaincus, pourquoi parlent-ils de reinstall complète de l'OS  ou de mise à jour majeure. Combien de fois sous sid aurons nous changé de kernel sans considérer que c'est majeur ? [[Utilisateur:Ggoodluck47|Amicalement, Gerard]] 7 février 2010 à 16:20 (UTC)</text>
      <sha1>of1xzezli35tbtt0txxwxdki7xukegi</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1016</id>
      <parentid>1015</parentid>
      <timestamp>2010-02-07T17:50:21Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2714">Définition Terminal. Je crois qu'il faut ajouter &quot;virtuel&quot; si l'on parle de console (et là encore ce serait avec des &quot;guillemets&quot;). Il faudrait pour être précis dire &quot;terminal virtuel en mode texte&quot; (car VNC aussi est un terminal, mais en mode graphique).
Ce que nous appelons console est un émulateur de terminal (console virtuelle ou terminal virtuel). Peut-être préciser aussi la signification de TTY (text teletype).[[Utilisateur:Lol|Lol]]
----
A Gérard, tu as ajouté ça ''Sid, '''stable''', testing sont des &quot;rolling release&quot;'' à Rolling Realease, je pense que tu es allé un peu vite. D'accord pour Squeeze que j'avais omis, mais par contre stable (Lenny) n'est pas une Rolling Release. [[Utilisateur:Lol|Lol]] 6 février 2010 à 17:02 (UTC)

Si l'on parle de &quot;rolling release&quot; pour des distributions que l'on est pas obligé de réinstaller lors d'une sortie, alors il me semble que la stable fait partie du lôt [[Utilisateur:Ggoodluck47|Amicalement, Gerard]] 6 février 2010 à 17:20 (UTC)
Ne pas mettre lenny mais stable dans son sources.list et çà roule [[Utilisateur:Ggoodluck47|Amicalement, Gerard]]

----
Re, j'ai vérifié, car je ne suis pas convaincu. Une distribution qui sort tous les 6 mois n'est pas un rolling-release. Ma source : http://en.wikipedia.org/wiki/Rolling_release. D'après wikipédia : &quot;Non-examples: Windows, Mac OS, OpenBSD, and most Linux distributions (including Debian [Linux] &quot;stable&quot;) are not rolling releases, because they have significant changes between version numbers (a complete operating system reinstall, or at least a major upgrade, is required)&quot;. [[Utilisateur:Lol|Lol]] 7 février 2010 à 15:43 (UTC)

Re, Alors comme je ne veux pas être en désaccord avec Wikipedia, tu rectifies ! mais ils ne m'ont pas convaincus, pourquoi parlent-ils de reinstall complète de l'OS  ou de mise à jour majeure. Combien de fois sous sid aurons nous changé de kernel sans considérer que c'est majeur ? [[Utilisateur:Ggoodluck47|Amicalement, Gerard]] 7 février 2010 à 16:20 (UTC)

Re,re... bien sur que si tu peux être en désaccord avec un Wiki (les wikis sont truffés d'erreurs... mrgreen !). Je pense juste que rolling-release, et je crois que c'est come ça qu'il faut l'entendre, concerne les distributions qui sont en perpétuelle évolution, chaque jour... Pour passer de Lenny à stable, quand squeeze sera &quot;stabilisée&quot; et Lenny passera à old-stable, ce sera un changement de distribution pas une simple mise à jour. Même si tu garde stable dans ton sources.list, ce sera un changement &quot;radical&quot; pas une simple mise à jour de sécurité ou même de noyau, et d'ailleurs, attention à la casse ! C'est comme ça que je le vois, je me trompe ? :)</text>
      <sha1>cytgbdsvlajghhgb01u3dacfh0wmqkt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1017</id>
      <parentid>1016</parentid>
      <timestamp>2010-02-07T18:00:50Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <text xml:space="preserve" bytes="2852">Définition Terminal. Je crois qu'il faut ajouter &quot;virtuel&quot; si l'on parle de console (et là encore ce serait avec des &quot;guillemets&quot;). Il faudrait pour être précis dire &quot;terminal virtuel en mode texte&quot; (car VNC aussi est un terminal, mais en mode graphique).
Ce que nous appelons console est un émulateur de terminal (console virtuelle ou terminal virtuel). Peut-être préciser aussi la signification de TTY (text teletype).[[Utilisateur:Lol|Lol]]
----
A Gérard, tu as ajouté ça ''Sid, '''stable''', testing sont des &quot;rolling release&quot;'' à Rolling Realease, je pense que tu es allé un peu vite. D'accord pour Squeeze que j'avais omis, mais par contre stable (Lenny) n'est pas une Rolling Release. [[Utilisateur:Lol|Lol]] 6 février 2010 à 17:02 (UTC)

Si l'on parle de &quot;rolling release&quot; pour des distributions que l'on est pas obligé de réinstaller lors d'une sortie, alors il me semble que la stable fait partie du lôt [[Utilisateur:Ggoodluck47|Amicalement, Gerard]] 6 février 2010 à 17:20 (UTC)
Ne pas mettre lenny mais stable dans son sources.list et çà roule [[Utilisateur:Ggoodluck47|Amicalement, Gerard]]

----
Re, j'ai vérifié, car je ne suis pas convaincu. Une distribution qui sort tous les 6 mois n'est pas un rolling-release. Ma source : http://en.wikipedia.org/wiki/Rolling_release. D'après wikipédia : &quot;Non-examples: Windows, Mac OS, OpenBSD, and most Linux distributions (including Debian [Linux] &quot;stable&quot;) are not rolling releases, because they have significant changes between version numbers (a complete operating system reinstall, or at least a major upgrade, is required)&quot;. [[Utilisateur:Lol|Lol]] 7 février 2010 à 15:43 (UTC)

Re, Alors comme je ne veux pas être en désaccord avec Wikipedia, tu rectifies ! mais ils ne m'ont pas convaincus, pourquoi parlent-ils de reinstall complète de l'OS  ou de mise à jour majeure. Combien de fois sous sid aurons nous changé de kernel sans considérer que c'est majeur ? [[Utilisateur:Ggoodluck47|Amicalement, Gerard]] 7 février 2010 à 16:20 (UTC)

Re,re... bien sur que si tu peux être en désaccord avec un Wiki (les wikis sont truffés d'erreurs... mrgreen !). Je pense juste que rolling-release, et je crois que c'est come ça qu'il faut l'entendre, concerne les distributions qui sont en perpétuelle évolution, chaque jour... Pour passer de Lenny à stable, quand squeeze sera &quot;stabilisée&quot; et Lenny passera à old-stable, ce sera un changement de distribution pas une simple mise à jour. Même si tu garde stable dans ton sources.list, ce sera un changement &quot;radical&quot; pas une simple mise à jour de sécurité ou même de noyau, et d'ailleurs, attention à la casse ! C'est comme ça que je le vois, je me trompe ?
 :)
Alors dans ce cas il ne doit pas y en avoir beaucoup. Enlèves la stable, je capitule ;) [[Utilisateur:Ggoodluck47|Amicalement, Gerard]]</text>
      <sha1>qgn2xnyq05b2pph1l6148jsk3qbfgdw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1018</id>
      <parentid>1017</parentid>
      <timestamp>2010-02-07T18:01:33Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <text xml:space="preserve" bytes="2851">Définition Terminal. Je crois qu'il faut ajouter &quot;virtuel&quot; si l'on parle de console (et là encore ce serait avec des &quot;guillemets&quot;). Il faudrait pour être précis dire &quot;terminal virtuel en mode texte&quot; (car VNC aussi est un terminal, mais en mode graphique).
Ce que nous appelons console est un émulateur de terminal (console virtuelle ou terminal virtuel). Peut-être préciser aussi la signification de TTY (text teletype).[[Utilisateur:Lol|Lol]]
----
A Gérard, tu as ajouté ça ''Sid, '''stable''', testing sont des &quot;rolling release&quot;'' à Rolling Realease, je pense que tu es allé un peu vite. D'accord pour Squeeze que j'avais omis, mais par contre stable (Lenny) n'est pas une Rolling Release. [[Utilisateur:Lol|Lol]] 6 février 2010 à 17:02 (UTC)

Si l'on parle de &quot;rolling release&quot; pour des distributions que l'on est pas obligé de réinstaller lors d'une sortie, alors il me semble que la stable fait partie du lôt [[Utilisateur:Ggoodluck47|Amicalement, Gerard]] 6 février 2010 à 17:20 (UTC)
Ne pas mettre lenny mais stable dans son sources.list et çà roule [[Utilisateur:Ggoodluck47|Amicalement, Gerard]]

----
Re, j'ai vérifié, car je ne suis pas convaincu. Une distribution qui sort tous les 6 mois n'est pas un rolling-release. Ma source : http://en.wikipedia.org/wiki/Rolling_release. D'après wikipédia : &quot;Non-examples: Windows, Mac OS, OpenBSD, and most Linux distributions (including Debian [Linux] &quot;stable&quot;) are not rolling releases, because they have significant changes between version numbers (a complete operating system reinstall, or at least a major upgrade, is required)&quot;. [[Utilisateur:Lol|Lol]] 7 février 2010 à 15:43 (UTC)

Re, Alors comme je ne veux pas être en désaccord avec Wikipedia, tu rectifies ! mais ils ne m'ont pas convaincus, pourquoi parlent-ils de reinstall complète de l'OS  ou de mise à jour majeure. Combien de fois sous sid aurons nous changé de kernel sans considérer que c'est majeur ? [[Utilisateur:Ggoodluck47|Amicalement, Gerard]] 7 février 2010 à 16:20 (UTC)

Re,re... bien sur que si tu peux être en désaccord avec un Wiki (les wikis sont truffés d'erreurs... mrgreen !). Je pense juste que rolling-release, et je crois que c'est come ça qu'il faut l'entendre, concerne les distributions qui sont en perpétuelle évolution, chaque jour... Pour passer de Lenny à stable, quand squeeze sera &quot;stabilisée&quot; et Lenny passera à old-stable, ce sera un changement de distribution pas une simple mise à jour. Même si tu garde stable dans ton sources.list, ce sera un changement &quot;radical&quot; pas une simple mise à jour de sécurité ou même de noyau, et d'ailleurs, attention à la casse ! C'est comme ça que je le vois, je me trompe ? :)
Alors dans ce cas il ne doit pas y en avoir beaucoup. Enlèves la stable, je capitule ;) [[Utilisateur:Ggoodluck47|Amicalement, Gerard]]</text>
      <sha1>cdgoi6z1dweqoq66u6ofcqg89egeo1n</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1019</id>
      <parentid>1018</parentid>
      <timestamp>2010-02-07T19:28:14Z</timestamp>
      <contributor>
        <username>Kna</username>
        <id>35</id>
      </contributor>
      <text xml:space="preserve" bytes="4659">Définition Terminal. Je crois qu'il faut ajouter &quot;virtuel&quot; si l'on parle de console (et là encore ce serait avec des &quot;guillemets&quot;). Il faudrait pour être précis dire &quot;terminal virtuel en mode texte&quot; (car VNC aussi est un terminal, mais en mode graphique).
Ce que nous appelons console est un émulateur de terminal (console virtuelle ou terminal virtuel). Peut-être préciser aussi la signification de TTY (text teletype).[[Utilisateur:Lol|Lol]]


Avant la micro-informatique, on se connectait à un ordinateur via un ''terminal'' que l'on branchait à une prise série : http://fr.wikipedia.org/wiki/VT100 Pour les tâches d'administration, on branchait une ''console'', mais on pouvais aussi la rediriger sur... un ''terminal'' !
Sur nos ordinateurs personnels, on utilise des ''émulateurs de terminal'', que ce soit tty ou graphique. Pour un tty, si on regarde le côté ''fonctionnel'', on dira plutôt ''console'' pour un (généralement utilisé pour du dépannage ou de l'administration) ; si on regarde le côté ''physique'', on dira alors ''terminal'' car c'est ce qui ressemble le plus à nos bons vieux terminaux.
[[Utilisateur:Kna|kna]]

----
A Gérard, tu as ajouté ça ''Sid, '''stable''', testing sont des &quot;rolling release&quot;'' à Rolling Realease, je pense que tu es allé un peu vite. D'accord pour Squeeze que j'avais omis, mais par contre stable (Lenny) n'est pas une Rolling Release. [[Utilisateur:Lol|Lol]] 6 février 2010 à 17:02 (UTC)

Si l'on parle de &quot;rolling release&quot; pour des distributions que l'on est pas obligé de réinstaller lors d'une sortie, alors il me semble que la stable fait partie du lôt [[Utilisateur:Ggoodluck47|Amicalement, Gerard]] 6 février 2010 à 17:20 (UTC)
Ne pas mettre lenny mais stable dans son sources.list et çà roule [[Utilisateur:Ggoodluck47|Amicalement, Gerard]]

----
Re, j'ai vérifié, car je ne suis pas convaincu. Une distribution qui sort tous les 6 mois n'est pas un rolling-release. Ma source : http://en.wikipedia.org/wiki/Rolling_release. D'après wikipédia : &quot;Non-examples: Windows, Mac OS, OpenBSD, and most Linux distributions (including Debian [Linux] &quot;stable&quot;) are not rolling releases, because they have significant changes between version numbers (a complete operating system reinstall, or at least a major upgrade, is required)&quot;. [[Utilisateur:Lol|Lol]] 7 février 2010 à 15:43 (UTC)

Re, Alors comme je ne veux pas être en désaccord avec Wikipedia, tu rectifies ! mais ils ne m'ont pas convaincus, pourquoi parlent-ils de reinstall complète de l'OS  ou de mise à jour majeure. Combien de fois sous sid aurons nous changé de kernel sans considérer que c'est majeur ? [[Utilisateur:Ggoodluck47|Amicalement, Gerard]] 7 février 2010 à 16:20 (UTC)

Re,re... bien sur que si tu peux être en désaccord avec un Wiki (les wikis sont truffés d'erreurs... mrgreen !). Je pense juste que rolling-release, et je crois que c'est come ça qu'il faut l'entendre, concerne les distributions qui sont en perpétuelle évolution, chaque jour... Pour passer de Lenny à stable, quand squeeze sera &quot;stabilisée&quot; et Lenny passera à old-stable, ce sera un changement de distribution pas une simple mise à jour. Même si tu garde stable dans ton sources.list, ce sera un changement &quot;radical&quot; pas une simple mise à jour de sécurité ou même de noyau, et d'ailleurs, attention à la casse ! C'est comme ça que je le vois, je me trompe ? :)
Alors dans ce cas il ne doit pas y en avoir beaucoup. Enlèves la stable, je capitule ;) [[Utilisateur:Ggoodluck47|Amicalement, Gerard]]


Je suis plutôt de l'avis de (Lol|Wikipedia). Pour moi, rolling-release, c'est qui n'a qu'une seule release qui évolue avec le temps, et pas de numéros de version. Soit Debian sid, Archlinux, Il n'y a pas de freeze des versions des paquets comme sur Debian stable ou Slackware (mise à part les changements nécessaires : mises à jour de sécu, des pilotes (etchnhalf) et autres trucs nécessaires).
Si tu laisses ton sources.list en stable, tu vas avoir un nombre de mises-à-jour importantes le jour où squeeze passera stable. Pour moi, c'est équivalent à réinstaller un système (sauvegarde de /home et de /etc mis à part). Tu profites juste qu'il existe une gestion des logiciels sous forme de paquets pour ne pas avoir à le faire.
Mais que la stable ne m'en veuille pas. C'est justement parce qu'elle n'est pas rolling-release (en tout cas, dans le sens ou je le voie) qu'elle est stable ! Le système de release tous les 6 mois/2 ans/qu'importe permet de garder une cohérence dans tout le système, et ne pas se retrouver mal en point après une mise-à-jour.
[[Utilisateur:Kna|kna]]</text>
      <sha1>cktk7ftge59iwum9oh0p94sahxxhkbk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Images pour firmwares non reconnus</title>
    <ns>1</ns>
    <id>985</id>
    <revision>
      <id>4051</id>
      <timestamp>2012-04-24T08:25:35Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <comment>Page créée avec « cd /tmp;wget -c http://cdimage.debian.org/cdimage/unofficial/non-free/firmware/squeeze/current/firmware.zip;unzip firmware.zip; for i in *deb;do dpkg --info $i|sed -n 's/^... »</comment>
      <text xml:space="preserve" bytes="414">cd /tmp;wget -c http://cdimage.debian.org/cdimage/unofficial/non-free/firmware/squeeze/current/firmware.zip;unzip firmware.zip; for i in *deb;do dpkg --info $i|sed -n 's/^[  ]\+\*/*/p'&gt;&gt;liste_firmware.tmp;done;sort liste_firmware.tmp &gt; liste_firmware; rm *.deb firmware.zip liste_firmware.tmp; echo &quot;Terminé...

Cette ligne de code ne fonctionne pas et je n'ai pas la qualification nécessaire pour la corriger :(</text>
      <sha1>sykjnfr2t9r5jvjacyuzhs74og21b4i</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4052</id>
      <parentid>4051</parentid>
      <timestamp>2012-04-24T10:57:50Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="2879">cd /tmp;wget -c http://cdimage.debian.org/cdimage/unofficial/non-free/firmware/squeeze/current/firmware.zip;unzip firmware.zip; for i in *deb;do dpkg --info $i|sed -n 's/^[  ]\+\*/*/p'&gt;&gt;liste_firmware.tmp;done;sort liste_firmware.tmp &gt; liste_firmware; rm *.deb firmware.zip liste_firmware.tmp; echo &quot;Terminé...

Cette ligne de code ne fonctionne pas et je n'ai pas la qualification nécessaire pour la corriger :(

----
Salut,
&lt;pre&gt;
cd /tmp;wget -c http://cdimage.debian.org/cdimage/unofficial/non-free/firmware/squeeze/current/firmware.zip;unzip firmware.zip; for i in *deb;do dpkg --info $i|sed -n 's/^[  ]\+\*/*/p'&gt;&gt;liste_firmware.tmp;done;sort liste_firmware.tmp &gt; liste_firmware; rm *.deb firmware.zip liste_firmware.tmp; echo &quot;Terminé...&quot;
--2012-04-24 13:55:28--  http://cdimage.debian.org/cdimage/unofficial/non-free/firmware/squeeze/current/firmware.zip
Résolution de cdimage.debian.org (cdimage.debian.org)... 130.239.18.138, 130.239.18.163, 2001:6b0:e:2018::138, ...
Connexion vers cdimage.debian.org (cdimage.debian.org)|130.239.18.138|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 11019191 (11M) [application/zip]
Sauvegarde en : «firmware.zip»

100%[==================================================================================================&gt;] 11 019 191  11,2M/s   ds 0,9s    

2012-04-24 13:55:29 (11,2 MB/s) - «firmware.zip» sauvegardé [11019191/11019191]

Archive:  firmware.zip
  inflating: prism2-usb-firmware-installer_0.2.9+dfsg-4_amd64.deb  
  inflating: prism2-usb-firmware-installer_0.2.9+dfsg-4_armel.deb  
  inflating: prism2-usb-firmware-installer_0.2.9+dfsg-4_i386.deb  
  inflating: prism2-usb-firmware-installer_0.2.9+dfsg-4_powerpc.deb  
  inflating: firmware-linux-free_2.6.32-41_all.deb  
  inflating: atmel-firmware_1.3-4_all.deb  
  inflating: bluez-firmware_1.2-2_all.deb  
  inflating: firmware-atheros_0.28+squeeze1_all.deb  
  inflating: firmware-bnx2_0.28+squeeze1_all.deb  
  inflating: firmware-bnx2x_0.28+squeeze1_all.deb  
  inflating: firmware-brcm80211_0.28+squeeze1_all.deb  
  inflating: firmware-intelwimax_0.28+squeeze1_all.deb  
  inflating: firmware-ipw2x00_0.28+squeeze1_all.deb  
  inflating: firmware-ivtv_0.28+squeeze1_all.deb  
  inflating: firmware-iwlwifi_0.28+squeeze1_all.deb  
  inflating: firmware-linux-nonfree_0.28+squeeze1_all.deb  
  inflating: firmware-netxen_0.28+squeeze1_all.deb  
  inflating: firmware-qlogic_0.28+squeeze1_all.deb  
  inflating: firmware-ralink_0.28+squeeze1_all.deb  
  inflating: firmware-realtek_0.28+squeeze1_all.deb  
  inflating: ixp4xx-microcode_2.4-3_armel.deb  
  inflating: libertas-firmware_9.70.7.p0.0-1_all.deb  
  inflating: zd1211-firmware_2.21.0.0-1_all.deb  
Terminé...
&lt;/pre&gt;
Ça fonctionne chez moi. J'ai zsh. Je vérifie sur Bash.
Edit: Pareil ça fonctionne.
[[Utilisateur:Lol|Lol]] 24 avril 2012 à 12:57 (CEST)</text>
      <sha1>4l97is43xrqm7w81tz0cdggo35m2rhw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4053</id>
      <parentid>4052</parentid>
      <timestamp>2012-04-24T10:58:16Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="2880">cd /tmp;wget -c http://cdimage.debian.org/cdimage/unofficial/non-free/firmware/squeeze/current/firmware.zip;unzip firmware.zip; for i in *deb;do dpkg --info $i|sed -n 's/^[  ]\+\*/*/p'&gt;&gt;liste_firmware.tmp;done;sort liste_firmware.tmp &gt; liste_firmware; rm *.deb firmware.zip liste_firmware.tmp; echo &quot;Terminé...

Cette ligne de code ne fonctionne pas et je n'ai pas la qualification nécessaire pour la corriger :(

----
Salut,
&lt;pre&gt;
cd /tmp;wget -c http://cdimage.debian.org/cdimage/unofficial/non-free/firmware/squeeze/current/firmware.zip;unzip firmware.zip; for i in *deb;do dpkg --info $i|sed -n 's/^[  ]\+\*/*/p'&gt;&gt;liste_firmware.tmp;done;sort liste_firmware.tmp &gt; liste_firmware; rm *.deb firmware.zip liste_firmware.tmp; echo &quot;Terminé...&quot;
--2012-04-24 13:55:28--  http://cdimage.debian.org/cdimage/unofficial/non-free/firmware/squeeze/current/firmware.zip
Résolution de cdimage.debian.org (cdimage.debian.org)... 130.239.18.138, 130.239.18.163, 2001:6b0:e:2018::138, ...
Connexion vers cdimage.debian.org (cdimage.debian.org)|130.239.18.138|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 11019191 (11M) [application/zip]
Sauvegarde en : «firmware.zip»

100%[==================================================================================================&gt;] 11 019 191  11,2M/s   ds 0,9s    

2012-04-24 13:55:29 (11,2 MB/s) - «firmware.zip» sauvegardé [11019191/11019191]

Archive:  firmware.zip
  inflating: prism2-usb-firmware-installer_0.2.9+dfsg-4_amd64.deb  
  inflating: prism2-usb-firmware-installer_0.2.9+dfsg-4_armel.deb  
  inflating: prism2-usb-firmware-installer_0.2.9+dfsg-4_i386.deb  
  inflating: prism2-usb-firmware-installer_0.2.9+dfsg-4_powerpc.deb  
  inflating: firmware-linux-free_2.6.32-41_all.deb  
  inflating: atmel-firmware_1.3-4_all.deb  
  inflating: bluez-firmware_1.2-2_all.deb  
  inflating: firmware-atheros_0.28+squeeze1_all.deb  
  inflating: firmware-bnx2_0.28+squeeze1_all.deb  
  inflating: firmware-bnx2x_0.28+squeeze1_all.deb  
  inflating: firmware-brcm80211_0.28+squeeze1_all.deb  
  inflating: firmware-intelwimax_0.28+squeeze1_all.deb  
  inflating: firmware-ipw2x00_0.28+squeeze1_all.deb  
  inflating: firmware-ivtv_0.28+squeeze1_all.deb  
  inflating: firmware-iwlwifi_0.28+squeeze1_all.deb  
  inflating: firmware-linux-nonfree_0.28+squeeze1_all.deb  
  inflating: firmware-netxen_0.28+squeeze1_all.deb  
  inflating: firmware-qlogic_0.28+squeeze1_all.deb  
  inflating: firmware-ralink_0.28+squeeze1_all.deb  
  inflating: firmware-realtek_0.28+squeeze1_all.deb  
  inflating: ixp4xx-microcode_2.4-3_armel.deb  
  inflating: libertas-firmware_9.70.7.p0.0-1_all.deb  
  inflating: zd1211-firmware_2.21.0.0-1_all.deb  
Terminé...
&lt;/pre&gt;
Ça fonctionne chez moi. J'ai zsh. Je vérifie sur Bash.
Edit: Pareil ça fonctionne.

[[Utilisateur:Lol|Lol]] 24 avril 2012 à 12:57 (CEST)</text>
      <sha1>k3o9bercfp2hirc8uoqkviruetlemt1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4054</id>
      <parentid>4053</parentid>
      <timestamp>2012-04-24T11:57:24Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <text xml:space="preserve" bytes="2947">cd /tmp;wget -c http://cdimage.debian.org/cdimage/unofficial/non-free/firmware/squeeze/current/firmware.zip;unzip firmware.zip; for i in *deb;do dpkg --info $i|sed -n 's/^[  ]\+\*/*/p'&gt;&gt;liste_firmware.tmp;done;sort liste_firmware.tmp &gt; liste_firmware; rm *.deb firmware.zip liste_firmware.tmp; echo &quot;Terminé...

Cette ligne de code ne fonctionne pas et je n'ai pas la qualification nécessaire pour la corriger :(

----
Salut,
&lt;pre&gt;
cd /tmp;wget -c http://cdimage.debian.org/cdimage/unofficial/non-free/firmware/squeeze/current/firmware.zip;unzip firmware.zip; for i in *deb;do dpkg --info $i|sed -n 's/^[  ]\+\*/*/p'&gt;&gt;liste_firmware.tmp;done;sort liste_firmware.tmp &gt; liste_firmware; rm *.deb firmware.zip liste_firmware.tmp; echo &quot;Terminé...&quot;
--2012-04-24 13:55:28--  http://cdimage.debian.org/cdimage/unofficial/non-free/firmware/squeeze/current/firmware.zip
Résolution de cdimage.debian.org (cdimage.debian.org)... 130.239.18.138, 130.239.18.163, 2001:6b0:e:2018::138, ...
Connexion vers cdimage.debian.org (cdimage.debian.org)|130.239.18.138|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 11019191 (11M) [application/zip]
Sauvegarde en : «firmware.zip»

100%[==================================================================================================&gt;] 11 019 191  11,2M/s   ds 0,9s    

2012-04-24 13:55:29 (11,2 MB/s) - «firmware.zip» sauvegardé [11019191/11019191]

Archive:  firmware.zip
  inflating: prism2-usb-firmware-installer_0.2.9+dfsg-4_amd64.deb  
  inflating: prism2-usb-firmware-installer_0.2.9+dfsg-4_armel.deb  
  inflating: prism2-usb-firmware-installer_0.2.9+dfsg-4_i386.deb  
  inflating: prism2-usb-firmware-installer_0.2.9+dfsg-4_powerpc.deb  
  inflating: firmware-linux-free_2.6.32-41_all.deb  
  inflating: atmel-firmware_1.3-4_all.deb  
  inflating: bluez-firmware_1.2-2_all.deb  
  inflating: firmware-atheros_0.28+squeeze1_all.deb  
  inflating: firmware-bnx2_0.28+squeeze1_all.deb  
  inflating: firmware-bnx2x_0.28+squeeze1_all.deb  
  inflating: firmware-brcm80211_0.28+squeeze1_all.deb  
  inflating: firmware-intelwimax_0.28+squeeze1_all.deb  
  inflating: firmware-ipw2x00_0.28+squeeze1_all.deb  
  inflating: firmware-ivtv_0.28+squeeze1_all.deb  
  inflating: firmware-iwlwifi_0.28+squeeze1_all.deb  
  inflating: firmware-linux-nonfree_0.28+squeeze1_all.deb  
  inflating: firmware-netxen_0.28+squeeze1_all.deb  
  inflating: firmware-qlogic_0.28+squeeze1_all.deb  
  inflating: firmware-ralink_0.28+squeeze1_all.deb  
  inflating: firmware-realtek_0.28+squeeze1_all.deb  
  inflating: ixp4xx-microcode_2.4-3_armel.deb  
  inflating: libertas-firmware_9.70.7.p0.0-1_all.deb  
  inflating: zd1211-firmware_2.21.0.0-1_all.deb  
Terminé...
&lt;/pre&gt;
Ça fonctionne chez moi. J'ai zsh. Je vérifie sur Bash.
Edit: Pareil ça fonctionne.

[[Utilisateur:Lol|Lol]] 24 avril 2012 à 12:57 (CEST)

Chez moi aussi ! Sans doute un mauvais copié/collé, mes excuses</text>
      <sha1>0t8wlnbv599owhkdny59pqpy9vmdwvd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Installation TrueCrypt Squeeze</title>
    <ns>1</ns>
    <id>1262</id>
    <revision>
      <id>5224</id>
      <timestamp>2013-05-29T06:59:19Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <comment>Page créée avec « Cette réflexion ajoutée par mes soins est un copié/collé, aussi il me semble bon de citer mes sources ;) »</comment>
      <text xml:space="preserve" bytes="108">Cette réflexion ajoutée par mes soins est un copié/collé, aussi il me semble bon de citer mes sources ;)</text>
      <sha1>r8v54hqupo3la1x9pgb3hhw5u9sqush</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5237</id>
      <parentid>5224</parentid>
      <timestamp>2013-05-31T00:45:18Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="365">Cette réflexion ajoutée par mes soins est un copié/collé, aussi il me semble bon de citer mes sources ;)

-----

La source n'a pas été effacée, juste déplacée à la fin de l'article.

Regrouper les sources permet de ne pas surcharger l'article en liens.

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 31 mai 2013 à 02:45 (CEST)</text>
      <sha1>n5eaoddlxe37wa6kolyfo2og4llk0qc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Installation lenny chroot debootstrap</title>
    <ns>1</ns>
    <id>1007</id>
    <revision>
      <id>4221</id>
      <timestamp>2012-05-10T11:45:55Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>Passage de Lenny en oldstable : migration des dépôts</comment>
      <text xml:space="preserve" bytes="455">J'avais commencé à mettre-à-jour les dépôts cités dans ce tutoriel pour prendre en compte la migration de Lenny en oldstable (dépôts archives).
Mais je ne sais pas (entre autres) où se trouvent les archives des dépôts backports utilisés au moment de l'écriture du sources.list, ainsi que lors de l'installation du noyau…

Peut-être serait-il plus simple de laisser cette page en état en attendant son remplacement par sa version Squeeze ?</text>
      <sha1>d2rdcctt97jbkuhzz6gboxjc8gyjfc3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4222</id>
      <parentid>4221</parentid>
      <timestamp>2012-05-10T11:46:20Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="468">J'avais commencé à mettre-à-jour les dépôts cités dans ce tutoriel pour prendre en compte la migration de Lenny en oldstable (dépôts archives).
Mais je ne sais pas (entre autres) où se trouvent les archives des dépôts backports utilisés au moment de l'écriture du sources.list, ainsi que lors de l'installation du noyau…

Peut-être serait-il plus simple de laisser cette page en état en attendant son remplacement par sa version Squeeze ?

----- vv222</text>
      <sha1>ltrqp22t8hqyg10ld336xrzkfsx78sg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4225</id>
      <parentid>4222</parentid>
      <timestamp>2012-05-10T14:22:26Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="611">J'avais commencé à mettre-à-jour les dépôts cités dans ce tutoriel pour prendre en compte la migration de Lenny en oldstable (dépôts archives).
Mais je ne sais pas (entre autres) où se trouvent les archives des dépôts backports utilisés au moment de l'écriture du sources.list, ainsi que lors de l'installation du noyau…

Peut-être serait-il plus simple de laisser cette page en état en attendant son remplacement par sa version Squeeze ?

----- vv222
----
C'est fait la version squeeze, non ? ;-)

[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 10 mai 2012 à 16:22 (CEST)</text>
      <sha1>r702nthsfl7v61g8uckfcmscz4lp2i4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4229</id>
      <parentid>4225</parentid>
      <timestamp>2012-05-11T09:53:44Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="840">J'avais commencé à mettre-à-jour les dépôts cités dans ce tutoriel pour prendre en compte la migration de Lenny en oldstable (dépôts archives).
Mais je ne sais pas (entre autres) où se trouvent les archives des dépôts backports utilisés au moment de l'écriture du sources.list, ainsi que lors de l'installation du noyau…

Peut-être serait-il plus simple de laisser cette page en état en attendant son remplacement par sa version Squeeze ?

----- vv222
----
C'est fait la version squeeze, non ? ;-)

[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 10 mai 2012 à 16:22 (CEST)

----
Elle est prête, mais en page d'accueil c'est toujours la version Lenny qui est proposée sous la section Installation.

[[Utilisateur:Vv222|vv222]] ([[Discussion utilisateur:vv222|discussion]]) 11 mai 2012 à 11:53 (CEST)</text>
      <sha1>it908t8cbnbbaif8k2k9b8244psqgc8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4232</id>
      <parentid>4229</parentid>
      <timestamp>2012-05-12T07:41:12Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>C'est fait</comment>
      <text xml:space="preserve" bytes="996">J'avais commencé à mettre-à-jour les dépôts cités dans ce tutoriel pour prendre en compte la migration de Lenny en oldstable (dépôts archives).
Mais je ne sais pas (entre autres) où se trouvent les archives des dépôts backports utilisés au moment de l'écriture du sources.list, ainsi que lors de l'installation du noyau…

Peut-être serait-il plus simple de laisser cette page en état en attendant son remplacement par sa version Squeeze ?

----- vv222
----
C'est fait la version squeeze, non ? ;-)

[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 10 mai 2012 à 16:22 (CEST)

----
Elle est prête, mais en page d'accueil c'est toujours la version Lenny qui est proposée sous la section Installation.

[[Utilisateur:Vv222|vv222]] ([[Discussion utilisateur:vv222|discussion]]) 11 mai 2012 à 11:53 (CEST)
----
C'est fait. Tuto de Lenny passé en obsolète. Merci!

[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 12 mai 2012 à 09:41 (CEST)</text>
      <sha1>62nq0vqcqg9bgvcf3m1bn0wsli8e9oq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4234</id>
      <parentid>4232</parentid>
      <timestamp>2012-05-12T14:36:36Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="1548">J'avais commencé à mettre-à-jour les dépôts cités dans ce tutoriel pour prendre en compte la migration de Lenny en oldstable (dépôts archives).
Mais je ne sais pas (entre autres) où se trouvent les archives des dépôts backports utilisés au moment de l'écriture du sources.list, ainsi que lors de l'installation du noyau…

Peut-être serait-il plus simple de laisser cette page en état en attendant son remplacement par sa version Squeeze ?

----- vv222
----
C'est fait la version squeeze, non ? ;-)

[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 10 mai 2012 à 16:22 (CEST)

----
Elle est prête, mais en page d'accueil c'est toujours la version Lenny qui est proposée sous la section Installation.

[[Utilisateur:Vv222|vv222]] ([[Discussion utilisateur:vv222|discussion]]) 11 mai 2012 à 11:53 (CEST)
----
C'est fait. Tuto de Lenny passé en obsolète. Merci!

[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 12 mai 2012 à 09:41 (CEST)
----
Au passage, il reste sur la page d'accueil cette page en version Lenny : https://www.isalo.org/wiki.debian-fr/index.php?title=Installer_Debian_pas-%C3%A0-pas
et en version Squeeze : https://www.isalo.org/wiki.debian-fr/index.php?title=Installation_de_squeeze_avec_une_businesscard

Je n'ai pas encore pris le temps de les lire en profondeur, mais je pense que la version Lenny pourrait migrer vers cette tout nouvelle section « obsolète » !

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 12 mai 2012 à 16:36 (CEST)</text>
      <sha1>2n0y2pu64pdqz56zqhe75ud1qoyha77</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Installation sur une Squeeze d'un serveur mail complet (Postfix Postfixadmin Dovecot Mysql Amavisd-new Spamassassin Clamav Postgrey Squirrelmail Roundcube) avec gestion des filtres Imap et des quotas</title>
    <ns>1</ns>
    <id>679</id>
    <revision>
      <id>2857</id>
      <timestamp>2011-04-09T16:41:51Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « A tester et rajouter + tard (permet de classer automatiquement les spam (s'ils sont D-PASS par amavis) dans la boite à Spam   root@facteur:~# mkdir /home/facteur/sieve  root... »</comment>
      <text xml:space="preserve" bytes="896">A tester et rajouter + tard (permet de classer automatiquement les spam (s'ils sont D-PASS par amavis) dans la boite à Spam

 root@facteur:~# mkdir /home/facteur/sieve
 root@facteur:~# chown facteur: /home/facteur/sieve
 root@facteur:~# chmod 750 /home/facteur/sieve
 root@facteur:~# nano /home/facteur/sieve/global.sieve
&lt;code&gt;
require [&quot;fileinto&quot;, &quot;envelope&quot;, &quot;subaddress&quot;];

if header :contains &quot;X-Spam-Flag&quot; &quot;YES&quot; {
  fileinto &quot;INBOX.Spam&quot;;
}
if envelope :detail &quot;to&quot; &quot;spam&quot;{
  fileinto &quot;INBOX.Spam&quot;;
}
&lt;/code&gt;
 root@facteur:~# chown facteur: /home/facteur/sieve/global.sieve
 root@facteur:~# chmod 600 /home/facteur/sieve/global.sieve

root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota autocreate
}
...
plugin {
...
  sieve_before = /home/virtual/sieve/
...
  autocreate = INBOX.Spam
  autosubscribe = INBOX.Spam
}
&lt;/code&gt;
----</text>
      <sha1>ii8k9mg6ah6zxr1v9w81ybmci81s1ma</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2860</id>
      <parentid>2857</parentid>
      <timestamp>2011-04-09T17:08:42Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="937">A tester et rajouter + tard (permet de classer automatiquement les spam (s'ils sont D-PASS par amavis) dans la boite à Spam

 root@facteur:~# mkdir /home/facteur/sieve
 root@facteur:~# chown facteur: /home/facteur/sieve
 root@facteur:~# chmod 750 /home/facteur/sieve
 root@facteur:~# nano /home/facteur/sieve/global.sieve
&lt;code&gt;
require [&quot;fileinto&quot;, &quot;envelope&quot;, &quot;subaddress&quot;];

if header :contains &quot;X-Spam-Flag&quot; &quot;YES&quot; {
  fileinto &quot;INBOX.Spam&quot;;
}
if envelope :detail &quot;to&quot; &quot;spam&quot;{
  fileinto &quot;INBOX.Spam&quot;;
}
&lt;/code&gt;
 root@facteur:~# chown facteur: /home/facteur/sieve/global.sieve
 root@facteur:~# chmod 600 /home/facteur/sieve/global.sieve

root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota autocreate
}
...
plugin {
...
  sieve_before = /home/virtual/sieve/
...
  autocreate = INBOX.Spam
  autosubscribe = INBOX.Spam
}
&lt;/code&gt;
----
A faire: Certificats pour le ssl...
----</text>
      <sha1>mef7p30p17zco068n8iq6i4dy0jttkb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2861</id>
      <parentid>2860</parentid>
      <timestamp>2011-04-09T17:18:31Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="979">A tester et rajouter + tard (permet de classer automatiquement les spam (s'ils sont D-PASS par amavis) dans la boite à Spam

 root@facteur:~# mkdir /home/facteur/sieve
 root@facteur:~# chown facteur: /home/facteur/sieve
 root@facteur:~# chmod 750 /home/facteur/sieve
 root@facteur:~# nano /home/facteur/sieve/global.sieve
&lt;code&gt;
require [&quot;fileinto&quot;, &quot;envelope&quot;, &quot;subaddress&quot;];

if header :contains &quot;X-Spam-Flag&quot; &quot;YES&quot; {
  fileinto &quot;INBOX.Spam&quot;;
}
if envelope :detail &quot;to&quot; &quot;spam&quot;{
  fileinto &quot;INBOX.Spam&quot;;
}
&lt;/code&gt;
 root@facteur:~# chown facteur: /home/facteur/sieve/global.sieve
 root@facteur:~# chmod 600 /home/facteur/sieve/global.sieve

root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota autocreate
}
...
plugin {
...
  sieve_before = /home/virtual/sieve/
...
  autocreate = INBOX.Spam
  autosubscribe = INBOX.Spam
}
&lt;/code&gt;
----
A faire: 
#Certificats pour le ssl;
#Installation de rkhunter au tout début;
----</text>
      <sha1>aufw7b5svm7dbfaah30qccwymqmy1ap</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2870</id>
      <parentid>2861</parentid>
      <timestamp>2011-04-10T08:50:44Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="986">A tester et rajouter + tard (permet de classer automatiquement les spam (s'ils sont D-PASS par amavis) dans la boite à Spam

 root@facteur:~# mkdir /home/facteur/sieve
 root@facteur:~# chown facteur: /home/facteur/sieve
 root@facteur:~# chmod 750 /home/facteur/sieve
 root@facteur:~# nano /home/facteur/sieve/global.sieve
&lt;code&gt;
require [&quot;fileinto&quot;, &quot;envelope&quot;, &quot;subaddress&quot;];

if header :contains &quot;X-Spam-Flag&quot; &quot;YES&quot; {
  fileinto &quot;INBOX.Spam&quot;;
}
if envelope :detail &quot;to&quot; &quot;spam&quot;{
  fileinto &quot;INBOX.Spam&quot;;
}
&lt;/code&gt;
 root@facteur:~# chown facteur: /home/facteur/sieve/global.sieve
 root@facteur:~# chmod 600 /home/facteur/sieve/global.sieve

root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota autocreate
}
...
plugin {
...
  sieve_before = /home/virtual/sieve/
...
  autocreate = INBOX.Spam
  autosubscribe = INBOX.Spam
}
&lt;/code&gt;
----
A faire: 
#Certificats pour le ssl;
#&lt;s&gt;Installation de rkhunter au tout début;&lt;/s&gt;
----</text>
      <sha1>24e37j89iaf0m29bv40x7oap3k8mate</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2913</id>
      <parentid>2870</parentid>
      <timestamp>2011-04-25T13:10:14Z</timestamp>
      <contributor>
        <username>Aikadil</username>
        <id>120</id>
      </contributor>
      <text xml:space="preserve" bytes="1339">A tester et rajouter + tard (permet de classer automatiquement les spam (s'ils sont D-PASS par amavis) dans la boite à Spam

 root@facteur:~# mkdir /home/facteur/sieve
 root@facteur:~# chown facteur: /home/facteur/sieve
 root@facteur:~# chmod 750 /home/facteur/sieve
 root@facteur:~# nano /home/facteur/sieve/global.sieve
&lt;code&gt;
require [&quot;fileinto&quot;, &quot;envelope&quot;, &quot;subaddress&quot;];

if header :contains &quot;X-Spam-Flag&quot; &quot;YES&quot; {
  fileinto &quot;INBOX.Spam&quot;;
}
if envelope :detail &quot;to&quot; &quot;spam&quot;{
  fileinto &quot;INBOX.Spam&quot;;
}
&lt;/code&gt;
 root@facteur:~# chown facteur: /home/facteur/sieve/global.sieve
 root@facteur:~# chmod 600 /home/facteur/sieve/global.sieve

root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota autocreate
}
...
plugin {
...
  sieve_before = /home/virtual/sieve/
...
  autocreate = INBOX.Spam
  autosubscribe = INBOX.Spam
}
&lt;/code&gt;
----
A faire: 
#Certificats pour le ssl;
#&lt;s&gt;Installation de rkhunter au tout début;&lt;/s&gt;
----

---
from: Aikadil: j'ai modifier la partie Test du SMTP AUTH

$ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'

sous cette forme perl interprète le @ c'est égale un table en perl, donc il faut remplacer @ par \@

soit $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'

si non perl va juste traduire essai.org
----</text>
      <sha1>dmerb4qndzxxr72w6p7fojjnmeixtym</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2915</id>
      <parentid>2913</parentid>
      <timestamp>2011-04-25T18:51:17Z</timestamp>
      <contributor>
        <username>Aikadil</username>
        <id>120</id>
      </contributor>
      <text xml:space="preserve" bytes="1913">A tester et rajouter + tard (permet de classer automatiquement les spam (s'ils sont D-PASS par amavis) dans la boite à Spam

 root@facteur:~# mkdir /home/facteur/sieve
 root@facteur:~# chown facteur: /home/facteur/sieve
 root@facteur:~# chmod 750 /home/facteur/sieve
 root@facteur:~# nano /home/facteur/sieve/global.sieve
&lt;code&gt;
require [&quot;fileinto&quot;, &quot;envelope&quot;, &quot;subaddress&quot;];

if header :contains &quot;X-Spam-Flag&quot; &quot;YES&quot; {
  fileinto &quot;INBOX.Spam&quot;;
}
if envelope :detail &quot;to&quot; &quot;spam&quot;{
  fileinto &quot;INBOX.Spam&quot;;
}
&lt;/code&gt;
 root@facteur:~# chown facteur: /home/facteur/sieve/global.sieve
 root@facteur:~# chmod 600 /home/facteur/sieve/global.sieve

root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota autocreate
}
...
plugin {
...
  sieve_before = /home/virtual/sieve/
...
  autocreate = INBOX.Spam
  autosubscribe = INBOX.Spam
}
&lt;/code&gt;
----
A faire: 
#Certificats pour le ssl;
#&lt;s&gt;Installation de rkhunter au tout début;&lt;/s&gt;
----

---
from: Aikadil: j'ai modifier la partie Test du SMTP AUTH

$ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'

sous cette forme perl interprète le @ c'est égale un table en perl, donc il faut remplacer @ par \@

soit $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'

si non perl va juste traduire essai.org
----

----
from Aikadil

dans la section Dovecot - Mise en place de quotas 
dans /etc/dovecot/dovecot-mysql.conf

si on modifie la ligne comme suit 
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$

alors il est impossible de se connecter à roundcube

à vérifier mais je pense qu'il faut plus tôt écrire
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mai    lbox WHERE username = '%u'
----</text>
      <sha1>5ilorkxcuhqfhv68bpzm4nsyw5g0wex</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2916</id>
      <parentid>2915</parentid>
      <timestamp>2011-04-25T18:53:12Z</timestamp>
      <contributor>
        <username>Aikadil</username>
        <id>120</id>
      </contributor>
      <text xml:space="preserve" bytes="1959">A tester et rajouter + tard (permet de classer automatiquement les spam (s'ils sont D-PASS par amavis) dans la boite à Spam

 root@facteur:~# mkdir /home/facteur/sieve
 root@facteur:~# chown facteur: /home/facteur/sieve
 root@facteur:~# chmod 750 /home/facteur/sieve
 root@facteur:~# nano /home/facteur/sieve/global.sieve
&lt;code&gt;
require [&quot;fileinto&quot;, &quot;envelope&quot;, &quot;subaddress&quot;];

if header :contains &quot;X-Spam-Flag&quot; &quot;YES&quot; {
  fileinto &quot;INBOX.Spam&quot;;
}
if envelope :detail &quot;to&quot; &quot;spam&quot;{
  fileinto &quot;INBOX.Spam&quot;;
}
&lt;/code&gt;
 root@facteur:~# chown facteur: /home/facteur/sieve/global.sieve
 root@facteur:~# chmod 600 /home/facteur/sieve/global.sieve

root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota autocreate
}
...
plugin {
...
  sieve_before = /home/virtual/sieve/
...
  autocreate = INBOX.Spam
  autosubscribe = INBOX.Spam
}
&lt;/code&gt;
----
A faire: 
#Certificats pour le ssl;
#&lt;s&gt;Installation de rkhunter au tout début;&lt;/s&gt;
----

---
from: Aikadil: j'ai modifier la partie Test du SMTP AUTH

&lt;code&gt;$ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'&lt;/code&gt;

sous cette forme perl interprète le @ c'est égale un table en perl, donc il faut remplacer @ par \@

soit &lt;code&gt;$ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'&lt;/code&gt;

si non perl va juste traduire essai.org
----
from Aikadil

dans la section Dovecot - Mise en place de quotas 
dans /etc/dovecot/dovecot-mysql.conf

si on modifie la ligne comme suit 
&lt;code&gt;user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
&lt;/code&gt;
alors il est impossible de se connecter à roundcube

à vérifier mais je pense qu'il faut plus tôt écrire
&lt;code&gt;user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mai    lbox WHERE username = '%u'&lt;/code&gt;
----</text>
      <sha1>fa8bxrd7qml6kpompqhx744mlbewa4s</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2917</id>
      <parentid>2916</parentid>
      <timestamp>2011-04-25T18:53:53Z</timestamp>
      <contributor>
        <username>Aikadil</username>
        <id>120</id>
      </contributor>
      <text xml:space="preserve" bytes="1955">A tester et rajouter + tard (permet de classer automatiquement les spam (s'ils sont D-PASS par amavis) dans la boite à Spam

 root@facteur:~# mkdir /home/facteur/sieve
 root@facteur:~# chown facteur: /home/facteur/sieve
 root@facteur:~# chmod 750 /home/facteur/sieve
 root@facteur:~# nano /home/facteur/sieve/global.sieve
&lt;code&gt;
require [&quot;fileinto&quot;, &quot;envelope&quot;, &quot;subaddress&quot;];

if header :contains &quot;X-Spam-Flag&quot; &quot;YES&quot; {
  fileinto &quot;INBOX.Spam&quot;;
}
if envelope :detail &quot;to&quot; &quot;spam&quot;{
  fileinto &quot;INBOX.Spam&quot;;
}
&lt;/code&gt;
 root@facteur:~# chown facteur: /home/facteur/sieve/global.sieve
 root@facteur:~# chmod 600 /home/facteur/sieve/global.sieve

root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota autocreate
}
...
plugin {
...
  sieve_before = /home/virtual/sieve/
...
  autocreate = INBOX.Spam
  autosubscribe = INBOX.Spam
}
&lt;/code&gt;
----
A faire: 
#Certificats pour le ssl;
#&lt;s&gt;Installation de rkhunter au tout début;&lt;/s&gt;
----

---
from: Aikadil: j'ai modifier la partie Test du SMTP AUTH

&lt;code&gt;$ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'&lt;/code&gt;

sous cette forme perl interprète le @ c'est égale un table en perl, donc il faut remplacer @ par \@

soit &lt;code&gt;$ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'&lt;/code&gt;

si non perl va juste traduire essai.org
----
from Aikadil

dans la section Dovecot - Mise en place de quotas 
dans /etc/dovecot/dovecot-mysql.conf

si on modifie la ligne comme suit 
&lt;code&gt;user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
&lt;/code&gt;
alors il est impossible de se connecter à roundcube

à vérifier mais je pense qu'il faut plus tôt écrire
&lt;code&gt;user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbox WHERE username = '%u'&lt;/code&gt;
----</text>
      <sha1>5ulz35tqry61dsj596jh7luvwv3he47</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2918</id>
      <parentid>2917</parentid>
      <timestamp>2011-04-25T21:40:38Z</timestamp>
      <contributor>
        <username>Aikadil</username>
        <id>120</id>
      </contributor>
      <text xml:space="preserve" bytes="2159">A tester et rajouter + tard (permet de classer automatiquement les spam (s'ils sont D-PASS par amavis) dans la boite à Spam

 root@facteur:~# mkdir /home/facteur/sieve
 root@facteur:~# chown facteur: /home/facteur/sieve
 root@facteur:~# chmod 750 /home/facteur/sieve
 root@facteur:~# nano /home/facteur/sieve/global.sieve
&lt;code&gt;
require [&quot;fileinto&quot;, &quot;envelope&quot;, &quot;subaddress&quot;];

if header :contains &quot;X-Spam-Flag&quot; &quot;YES&quot; {
  fileinto &quot;INBOX.Spam&quot;;
}
if envelope :detail &quot;to&quot; &quot;spam&quot;{
  fileinto &quot;INBOX.Spam&quot;;
}
&lt;/code&gt;
 root@facteur:~# chown facteur: /home/facteur/sieve/global.sieve
 root@facteur:~# chmod 600 /home/facteur/sieve/global.sieve

root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota autocreate
}
...
plugin {
...
  sieve_before = /home/virtual/sieve/
...
  autocreate = INBOX.Spam
  autosubscribe = INBOX.Spam
}
&lt;/code&gt;
----
A faire: 
#Certificats pour le ssl;
#&lt;s&gt;Installation de rkhunter au tout début;&lt;/s&gt;
----

---
from: Aikadil: j'ai modifier la partie Test du SMTP AUTH

&lt;code&gt;$ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'&lt;/code&gt;

sous cette forme perl interprète le @ c'est égale un table en perl, donc il faut remplacer @ par \@

soit &lt;code&gt;$ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'&lt;/code&gt;

si non perl va juste traduire essai.org
----
from Aikadil

dans la section Dovecot - Mise en place de quotas 
dans /etc/dovecot/dovecot-mysql.conf

si on modifie la ligne comme suit 
&lt;code&gt;user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
&lt;/code&gt;
alors il est impossible de se connecter à roundcube

à vérifier mais je pense qu'il faut plus tôt écrire
&lt;code&gt;user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbox WHERE username = '%u'&lt;/code&gt;
----
from Aikadil
pour la clef gpg de
&lt;code&gt; deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main&lt;/code&gt;

peut-être que
&lt;code&gt;apt-get install debian-dovecot-auto-keyring&lt;/code&gt; 
est le plus simple</text>
      <sha1>tozzfn7963b5y5lh9uajibeaxa037im</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2919</id>
      <parentid>2918</parentid>
      <timestamp>2011-04-27T14:49:59Z</timestamp>
      <contributor>
        <username>Aikadil</username>
        <id>120</id>
      </contributor>
      <text xml:space="preserve" bytes="1567">A tester et rajouter + tard (permet de classer automatiquement les spam (s'ils sont D-PASS par amavis) dans la boite à Spam

 root@facteur:~# mkdir /home/facteur/sieve
 root@facteur:~# chown facteur: /home/facteur/sieve
 root@facteur:~# chmod 750 /home/facteur/sieve
 root@facteur:~# nano /home/facteur/sieve/global.sieve
&lt;code&gt;
require [&quot;fileinto&quot;, &quot;envelope&quot;, &quot;subaddress&quot;];

if header :contains &quot;X-Spam-Flag&quot; &quot;YES&quot; {
  fileinto &quot;INBOX.Spam&quot;;
}
if envelope :detail &quot;to&quot; &quot;spam&quot;{
  fileinto &quot;INBOX.Spam&quot;;
}
&lt;/code&gt;
 root@facteur:~# chown facteur: /home/facteur/sieve/global.sieve
 root@facteur:~# chmod 600 /home/facteur/sieve/global.sieve

root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota autocreate
}
...
plugin {
...
  sieve_before = /home/virtual/sieve/
...
  autocreate = INBOX.Spam
  autosubscribe = INBOX.Spam
}
&lt;/code&gt;
----
A faire: 
#Certificats pour le ssl;
#&lt;s&gt;Installation de rkhunter au tout début;&lt;/s&gt;
---

---
from: Aikadil: j'ai modifier la partie Test du SMTP AUTH

&lt;code&gt;$ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'&lt;/code&gt;

sous cette forme perl interprète le @ c'est égale un table en perl, donc il faut remplacer @ par \@

soit &lt;code&gt;$ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'&lt;/code&gt;

si non perl va juste traduire essai.org
---
from Aikadil
pour la clef gpg de
&lt;code&gt; deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main&lt;/code&gt;

peut-être que
&lt;code&gt;apt-get install debian-dovecot-auto-keyring&lt;/code&gt; 
est le plus simple</text>
      <sha1>f87kxqcsxk1srufvb2l6r9cmlv39byr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2920</id>
      <parentid>2919</parentid>
      <timestamp>2011-04-27T14:50:34Z</timestamp>
      <contributor>
        <username>Aikadil</username>
        <id>120</id>
      </contributor>
      <text xml:space="preserve" bytes="1570">A tester et rajouter + tard (permet de classer automatiquement les spam (s'ils sont D-PASS par amavis) dans la boite à Spam

 root@facteur:~# mkdir /home/facteur/sieve
 root@facteur:~# chown facteur: /home/facteur/sieve
 root@facteur:~# chmod 750 /home/facteur/sieve
 root@facteur:~# nano /home/facteur/sieve/global.sieve
&lt;code&gt;
require [&quot;fileinto&quot;, &quot;envelope&quot;, &quot;subaddress&quot;];

if header :contains &quot;X-Spam-Flag&quot; &quot;YES&quot; {
  fileinto &quot;INBOX.Spam&quot;;
}
if envelope :detail &quot;to&quot; &quot;spam&quot;{
  fileinto &quot;INBOX.Spam&quot;;
}
&lt;/code&gt;
 root@facteur:~# chown facteur: /home/facteur/sieve/global.sieve
 root@facteur:~# chmod 600 /home/facteur/sieve/global.sieve

root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota autocreate
}
...
plugin {
...
  sieve_before = /home/virtual/sieve/
...
  autocreate = INBOX.Spam
  autosubscribe = INBOX.Spam
}
&lt;/code&gt;
----
A faire: 
#Certificats pour le ssl;
#&lt;s&gt;Installation de rkhunter au tout début;&lt;/s&gt;
----

----
from: Aikadil: j'ai modifier la partie Test du SMTP AUTH

&lt;code&gt;$ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'&lt;/code&gt;

sous cette forme perl interprète le @ c'est égale un table en perl, donc il faut remplacer @ par \@

soit &lt;code&gt;$ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'&lt;/code&gt;

si non perl va juste traduire essai.org
----
from Aikadil
pour la clef gpg de
&lt;code&gt; deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main&lt;/code&gt;

peut-être que
&lt;code&gt;apt-get install debian-dovecot-auto-keyring&lt;/code&gt; 
est le plus simple</text>
      <sha1>q6o5n3kv0jdu57su3nps54ooo738vtf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2921</id>
      <parentid>2920</parentid>
      <timestamp>2011-04-27T14:50:57Z</timestamp>
      <contributor>
        <username>Aikadil</username>
        <id>120</id>
      </contributor>
      <text xml:space="preserve" bytes="1564">A tester et rajouter + tard (permet de classer automatiquement les spam (s'ils sont D-PASS par amavis) dans la boite à Spam

 root@facteur:~# mkdir /home/facteur/sieve
 root@facteur:~# chown facteur: /home/facteur/sieve
 root@facteur:~# chmod 750 /home/facteur/sieve
 root@facteur:~# nano /home/facteur/sieve/global.sieve
&lt;code&gt;
require [&quot;fileinto&quot;, &quot;envelope&quot;, &quot;subaddress&quot;];

if header :contains &quot;X-Spam-Flag&quot; &quot;YES&quot; {
  fileinto &quot;INBOX.Spam&quot;;
}
if envelope :detail &quot;to&quot; &quot;spam&quot;{
  fileinto &quot;INBOX.Spam&quot;;
}
&lt;/code&gt;
 root@facteur:~# chown facteur: /home/facteur/sieve/global.sieve
 root@facteur:~# chmod 600 /home/facteur/sieve/global.sieve

root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota autocreate
}
...
plugin {
...
  sieve_before = /home/virtual/sieve/
...
  autocreate = INBOX.Spam
  autosubscribe = INBOX.Spam
}
&lt;/code&gt;
----
A faire: 
#Certificats pour le ssl;
#&lt;s&gt;Installation de rkhunter au tout début;&lt;/s&gt;
----
from: Aikadil: j'ai modifier la partie Test du SMTP AUTH

&lt;code&gt;$ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'&lt;/code&gt;

sous cette forme perl interprète le @ c'est égale un table en perl, donc il faut remplacer @ par \@

soit &lt;code&gt;$ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'&lt;/code&gt;

si non perl va juste traduire essai.org
----
from Aikadil
pour la clef gpg de
&lt;code&gt; deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main&lt;/code&gt;

peut-être que
&lt;code&gt;apt-get install debian-dovecot-auto-keyring&lt;/code&gt; 
est le plus simple</text>
      <sha1>1n71jxtukbxet99suoc3851na6481lh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2922</id>
      <parentid>2921</parentid>
      <timestamp>2011-04-27T22:28:00Z</timestamp>
      <contributor>
        <username>Aikadil</username>
        <id>120</id>
      </contributor>
      <text xml:space="preserve" bytes="3476">A tester et rajouter + tard (permet de classer automatiquement les spam (s'ils sont D-PASS par amavis) dans la boite à Spam

 root@facteur:~# mkdir /home/facteur/sieve
 root@facteur:~# chown facteur: /home/facteur/sieve
 root@facteur:~# chmod 750 /home/facteur/sieve
 root@facteur:~# nano /home/facteur/sieve/global.sieve
&lt;code&gt;
require [&quot;fileinto&quot;, &quot;envelope&quot;, &quot;subaddress&quot;];

if header :contains &quot;X-Spam-Flag&quot; &quot;YES&quot; {
  fileinto &quot;INBOX.Spam&quot;;
}
if envelope :detail &quot;to&quot; &quot;spam&quot;{
  fileinto &quot;INBOX.Spam&quot;;
}
&lt;/code&gt;
 root@facteur:~# chown facteur: /home/facteur/sieve/global.sieve
 root@facteur:~# chmod 600 /home/facteur/sieve/global.sieve

root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota autocreate
}
...
plugin {
...
  sieve_before = /home/virtual/sieve/
...
  autocreate = INBOX.Spam
  autosubscribe = INBOX.Spam
}
&lt;/code&gt;
----
A faire: 
#Certificats pour le ssl;
#&lt;s&gt;Installation de rkhunter au tout début;&lt;/s&gt;
----
from: Aikadil: j'ai modifier la partie Test du SMTP AUTH

&lt;code&gt;$ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'&lt;/code&gt;

sous cette forme perl interprète le @ c'est égale un table en perl, donc il faut remplacer @ par \@

soit &lt;code&gt;$ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'&lt;/code&gt;

si non perl va juste traduire essai.org
----
from Aikadil
pour la clef gpg de
&lt;code&gt; deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main&lt;/code&gt;

peut-être que
&lt;code&gt;apt-get install debian-dovecot-auto-keyring&lt;/code&gt; 
est le plus simple
----
From Aikadil
J'ai remarquer que la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnais pas dans cette configuration.

mes boites mails
1-un@domain.be
2-deux@domain.be
3-trois@FAI.be

j'ai installer fetchmail qui forward les mails de trois@FAI.be to deux@domain.be il va relever toutes les minutes en pop3 port 25 sur le compte mail de mon FAI.

quand un expéditeur extérieur m'envoi un mail multi destinataire bidule@FAI.fr ti un@domaine.be, deux@domaine.be, trois@FAI.be
je ne reçois le mais que dans la boite deux@domain.be, c'est le mail forwarder par fetchmail, les deux autres n'arrive pas avec un beau message d'erreur dans les log
&lt;code&gt;
#Apr 27 21:26:17 ks24676 postfix/pipe[23409]: 7DFF660A7D: to=&lt;un@domain.be&gt;, relay=dovecot, delay=1157, delays=1157/0.07/0/0.11, dsn=4.3.5, status=deferred (mail system configuration error)
#Apr 27 21:26:17 ks24676 postfix/pipe[23409]: warning: pipe flag `D' requires dovecot_destination_recipient_limit = 1
&lt;/code&gt;

Je me dit qu'il suffirait de rajouter dans /etc/postfix/main.cf dovecot_destination_recipient_limit = 10
par exemple ? non ?

par contre la doc de dovecot dit

This is not possible with SMTP when there are multiple recipients for a mail message. SMTP can only indicate successful delivery or failure for all or none of the recipients, creating the need for a separate queue to handle the failed recipients. LMTP, on the other hand, can indicate success or failure to the client for each recipient, allowing the client to handle the queueing instead. The client in this case would typically be an Internet-facing mail gateway. LMTP is not intended for use over wide area networks.

et http://wiki2.dovecot.org/HowTo/PostfixDovecotLMTP précise qu'il faut une version 2.0.X pour utiliser LMTP entre postfix et dovecot.

n'a tu pas intéret a utiliser la version2 de dovecot dans ce cas ?
----</text>
      <sha1>oir21d2syamqm3o9a67rhyuzck6boza</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2923</id>
      <parentid>2922</parentid>
      <timestamp>2011-04-27T22:34:21Z</timestamp>
      <contributor>
        <username>Aikadil</username>
        <id>120</id>
      </contributor>
      <text xml:space="preserve" bytes="3568">A tester et rajouter + tard (permet de classer automatiquement les spam (s'ils sont D-PASS par amavis) dans la boite à Spam

 root@facteur:~# mkdir /home/facteur/sieve
 root@facteur:~# chown facteur: /home/facteur/sieve
 root@facteur:~# chmod 750 /home/facteur/sieve
 root@facteur:~# nano /home/facteur/sieve/global.sieve
&lt;code&gt;
require [&quot;fileinto&quot;, &quot;envelope&quot;, &quot;subaddress&quot;];

if header :contains &quot;X-Spam-Flag&quot; &quot;YES&quot; {
  fileinto &quot;INBOX.Spam&quot;;
}
if envelope :detail &quot;to&quot; &quot;spam&quot;{
  fileinto &quot;INBOX.Spam&quot;;
}
&lt;/code&gt;
 root@facteur:~# chown facteur: /home/facteur/sieve/global.sieve
 root@facteur:~# chmod 600 /home/facteur/sieve/global.sieve

root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota autocreate
}
...
plugin {
...
  sieve_before = /home/virtual/sieve/
...
  autocreate = INBOX.Spam
  autosubscribe = INBOX.Spam
}
&lt;/code&gt;
----
A faire: 
#Certificats pour le ssl;
#&lt;s&gt;Installation de rkhunter au tout début;&lt;/s&gt;
----
from: Aikadil: j'ai modifier la partie Test du SMTP AUTH

&lt;code&gt;$ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'&lt;/code&gt;

sous cette forme perl interprète le @ c'est égale un table en perl, donc il faut remplacer @ par \@

soit &lt;code&gt;$ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'&lt;/code&gt;

si non perl va juste traduire essai.org
----
from Aikadil
pour la clef gpg de
&lt;code&gt; deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main&lt;/code&gt;

peut-être que
&lt;code&gt;apt-get install debian-dovecot-auto-keyring&lt;/code&gt; 
est le plus simple
----
From Aikadil
J'ai remarquer que la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnais pas dans cette configuration.

mes boites mails
1-un@domain.be
2-deux@domain.be
3-trois@FAI.be

j'ai installer fetchmail qui forward les mails de trois@FAI.be to deux@domain.be il va relever toutes les minutes en pop3 port 25 sur le compte mail de mon FAI.

quand un expéditeur extérieur m'envoi un mail multi destinataire bidule@FAI.fr ti un@domaine.be, deux@domaine.be, trois@FAI.be
je ne reçois le mais que dans la boite deux@domain.be, c'est le mail forwarder par fetchmail, les deux autres n'arrive pas avec un beau message d'erreur dans les log
&lt;code&gt;
#Apr 27 21:26:17 ks24676 postfix/pipe[23409]: 7DFF660A7D: to=&lt;un@domain.be&gt;, relay=dovecot, delay=1157, delays=1157/0.07/0/0.11, dsn=4.3.5, status=deferred (mail system configuration error)
#Apr 27 21:26:17 ks24676 postfix/pipe[23409]: warning: pipe flag `D' requires dovecot_destination_recipient_limit = 1
&lt;/code&gt;

Je me dit qu'il suffirait de rajouter dans /etc/postfix/main.cf dovecot_destination_recipient_limit = 10
par exemple ? non ?

par contre la doc de dovecot dit

This is not possible with SMTP when there are multiple recipients for a mail message. SMTP can only indicate successful delivery or failure for all or none of the recipients, creating the need for a separate queue to handle the failed recipients. LMTP, on the other hand, can indicate success or failure to the client for each recipient, allowing the client to handle the queueing instead. The client in this case would typically be an Internet-facing mail gateway. LMTP is not intended for use over wide area networks.

et http://wiki2.dovecot.org/HowTo/PostfixDovecotLMTP précise qu'il faut une version 2.0.X pour utiliser LMTP entre postfix et dovecot.

n'a tu pas intéret a utiliser la version2 de dovecot dans ce cas ?

après plusieurs lecture utiliser LMTP semble plus standard et bénéfique en performance.
----</text>
      <sha1>e9j4rz18jxqpvcqe3frvcadium5vwug</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2924</id>
      <parentid>2923</parentid>
      <timestamp>2011-04-27T22:47:51Z</timestamp>
      <contributor>
        <username>Aikadil</username>
        <id>120</id>
      </contributor>
      <text xml:space="preserve" bytes="3594">A tester et rajouter + tard (permet de classer automatiquement les spam (s'ils sont D-PASS par amavis) dans la boite à Spam

 root@facteur:~# mkdir /home/facteur/sieve
 root@facteur:~# chown facteur: /home/facteur/sieve
 root@facteur:~# chmod 750 /home/facteur/sieve
 root@facteur:~# nano /home/facteur/sieve/global.sieve
&lt;code&gt;
require [&quot;fileinto&quot;, &quot;envelope&quot;, &quot;subaddress&quot;];

if header :contains &quot;X-Spam-Flag&quot; &quot;YES&quot; {
  fileinto &quot;INBOX.Spam&quot;;
}
if envelope :detail &quot;to&quot; &quot;spam&quot;{
  fileinto &quot;INBOX.Spam&quot;;
}
&lt;/code&gt;
 root@facteur:~# chown facteur: /home/facteur/sieve/global.sieve
 root@facteur:~# chmod 600 /home/facteur/sieve/global.sieve

root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota autocreate
}
...
plugin {
...
  sieve_before = /home/virtual/sieve/
...
  autocreate = INBOX.Spam
  autosubscribe = INBOX.Spam
}
&lt;/code&gt;
----
A faire: 
#Certificats pour le ssl;
#&lt;s&gt;Installation de rkhunter au tout début;&lt;/s&gt;
----
from: Aikadil: j'ai modifier la partie Test du SMTP AUTH

&lt;code&gt;$ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'&lt;/code&gt;

sous cette forme perl interprète le @ c'est égale un table en perl, donc il faut remplacer @ par \@

soit &lt;code&gt;$ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'&lt;/code&gt;

si non perl va juste traduire essai.org
----
from Aikadil
pour la clef gpg de
&lt;code&gt; deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main&lt;/code&gt;

peut-être que
&lt;code&gt;apt-get install debian-dovecot-auto-keyring&lt;/code&gt; 
est le plus simple
----
From Aikadil
J'ai remarquer que la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnais pas dans cette configuration.

mes boites mails
1-un@domain.be
2-deux@domain.be
3-trois@FAI.be

j'ai installer fetchmail qui forward les mails de trois@FAI.be to deux@domain.be il va relever toutes les minutes en pop3 port 25 sur le compte mail de mon FAI.

quand un expéditeur extérieur m'envoi un mail multi destinataire bidule@FAI.fr ti un@domaine.be, deux@domaine.be, trois@FAI.be
je ne reçois le mais que dans la boite deux@domain.be, c'est le mail forwarder par fetchmail, les deux autres n'arrive pas avec un beau message d'erreur dans les log
&lt;code&gt;
#Apr 27 21:26:17 ks24676 postfix/pipe[23409]: 7DFF660A7D: to=&lt;un@domain.be&gt;, relay=dovecot, delay=1157, delays=1157/0.07/0/0.11, dsn=4.3.5, status=deferred (mail system configuration error)
#Apr 27 21:26:17 ks24676 postfix/pipe[23409]: warning: pipe flag `D' requires dovecot_destination_recipient_limit = 1
&lt;/code&gt;

Je me dit qu'il suffirait de rajouter dans /etc/postfix/main.cf dovecot_destination_recipient_limit = 1
et en effet avec cette option cela fonctionne.

par contre la doc de dovecot dit

This is not possible with SMTP when there are multiple recipients for a mail message. SMTP can only indicate successful delivery or failure for all or none of the recipients, creating the need for a separate queue to handle the failed recipients. LMTP, on the other hand, can indicate success or failure to the client for each recipient, allowing the client to handle the queueing instead. The client in this case would typically be an Internet-facing mail gateway. LMTP is not intended for use over wide area networks.

et http://wiki2.dovecot.org/HowTo/PostfixDovecotLMTP précise qu'il faut une version 2.0.X pour utiliser LMTP entre postfix et dovecot.

n'a tu pas intéret a utiliser la version2 de dovecot dans ce cas ?

après plusieurs lecture utiliser LMTP semble plus standard et bénéfique en performance.
----</text>
      <sha1>9of9d53s4uddrxmhg5f8cd467pvio0b</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2925</id>
      <parentid>2924</parentid>
      <timestamp>2011-04-28T12:10:50Z</timestamp>
      <contributor>
        <username>Aikadil</username>
        <id>120</id>
      </contributor>
      <text xml:space="preserve" bytes="5076">A tester et rajouter + tard (permet de classer automatiquement les spam (s'ils sont D-PASS par amavis) dans la boite à Spam

 root@facteur:~# mkdir /home/facteur/sieve
 root@facteur:~# chown facteur: /home/facteur/sieve
 root@facteur:~# chmod 750 /home/facteur/sieve
 root@facteur:~# nano /home/facteur/sieve/global.sieve
&lt;code&gt;
require [&quot;fileinto&quot;, &quot;envelope&quot;, &quot;subaddress&quot;];

if header :contains &quot;X-Spam-Flag&quot; &quot;YES&quot; {
  fileinto &quot;INBOX.Spam&quot;;
}
if envelope :detail &quot;to&quot; &quot;spam&quot;{
  fileinto &quot;INBOX.Spam&quot;;
}
&lt;/code&gt;
 root@facteur:~# chown facteur: /home/facteur/sieve/global.sieve
 root@facteur:~# chmod 600 /home/facteur/sieve/global.sieve

root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota autocreate
}
...
plugin {
...
  sieve_before = /home/virtual/sieve/
...
  autocreate = INBOX.Spam
  autosubscribe = INBOX.Spam
}
&lt;/code&gt;
----
A faire: 
#Certificats pour le ssl;
#&lt;s&gt;Installation de rkhunter au tout début;&lt;/s&gt;
----
from: Aikadil: j'ai modifier la partie Test du SMTP AUTH

&lt;code&gt;$ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'&lt;/code&gt;

sous cette forme perl interprète le @ c'est égale un table en perl, donc il faut remplacer @ par \@

soit &lt;code&gt;$ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'&lt;/code&gt;

si non perl va juste traduire essai.org
----
from Aikadil
pour la clef gpg de
&lt;code&gt; deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main&lt;/code&gt;

peut-être que
&lt;code&gt;apt-get install debian-dovecot-auto-keyring&lt;/code&gt; 
est le plus simple
----
From Aikadil
J'ai remarquer que la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnais pas dans cette configuration.

mes boites mails
1-un@domain.be
2-deux@domain.be
3-trois@FAI.be

j'ai installer fetchmail qui forward les mails de trois@FAI.be to deux@domain.be il va relever toutes les minutes en pop3 port 25 sur le compte mail de mon FAI.

quand un expéditeur extérieur m'envoi un mail multi destinataire bidule@FAI.fr ti un@domaine.be, deux@domaine.be, trois@FAI.be
je ne reçois le mais que dans la boite deux@domain.be, c'est le mail forwarder par fetchmail, les deux autres n'arrive pas avec un beau message d'erreur dans les log
&lt;code&gt;
#Apr 27 21:26:17 ks24676 postfix/pipe[23409]: 7DFF660A7D: to=&lt;un@domain.be&gt;, relay=dovecot, delay=1157, delays=1157/0.07/0/0.11, dsn=4.3.5, status=deferred (mail system configuration error)
#Apr 27 21:26:17 ks24676 postfix/pipe[23409]: warning: pipe flag `D' requires dovecot_destination_recipient_limit = 1
&lt;/code&gt;

Je me dit qu'il suffirait de rajouter dans /etc/postfix/main.cf dovecot_destination_recipient_limit = 1
et en effet avec cette option cela fonctionne.

par contre la doc de dovecot dit

This is not possible with SMTP when there are multiple recipients for a mail message. SMTP can only indicate successful delivery or failure for all or none of the recipients, creating the need for a separate queue to handle the failed recipients. LMTP, on the other hand, can indicate success or failure to the client for each recipient, allowing the client to handle the queueing instead. The client in this case would typically be an Internet-facing mail gateway. LMTP is not intended for use over wide area networks.

et http://wiki2.dovecot.org/HowTo/PostfixDovecotLMTP précise qu'il faut une version 2.0.X pour utiliser LMTP entre postfix et dovecot.

n'a tu pas intéret a utiliser la version2 de dovecot dans ce cas ?

après plusieurs lecture utiliser LMTP semble plus standard et bénéfique en performance.
----
From Aikadil

Quelques piste TO DO liste
A Faire:
-Fetchmail
permet de relever et de rapatrier les mails d'une boite extérieur vers un des compte mail du serveur
-LMTP entre Postfix et Dovecot semble plus efficace que le SMTP (voir message du dessus)
-Gestion multi compte
Plugins roundcube et Squirellmail pour faire du multicompte et ne pas devoir ce loguer/dé-loguer entre deux compte
-Certificat ssl/TLS pour faire du SMTPS et IMAPS
-Expliquer la méthode pour envoyer et reçevoir les mails du serveur depuis un MTU (thunderbird etc...) nom de serveur, port, mot de passe etc...
-Dspam en plus de Spamassassin, installer leurs base SQL
-MailZu
Gestion des quarantaines, Amavis 2.6 permet d'utiliser MailZu: permet alors d'allez lire les mails mis en quarantaine par l'antispam dans une interface etc...
-Policyd (service postfix)
Contrôler les user (mail/heures etc...) permet de limiter les I/O pour luter contre le mailBombing, DDOS...
-Vacation
gestion de l'auto réponse en cas d'absence.
-Expliquer les règles Iptables à rajouter pour que le serveur fonctionne en toutes sécurité

A vérifier:
-plus d'explication au début, en particulier comment changer le hostname de son serveur
-plus d'explication sur le serveur DNS Bind9, son fonctionnement, pourquoi l'utiliser, vérifier si il fonctionne
-Perso je n'arrive pas a installer la gestion des Quotas ...
-Les header des mails que j'envoie et reçoit ont bien le tag X-Virus-Scanned mais pas le tag x-Spam-
----</text>
      <sha1>g2f0p8ktf6fb3l7pzmguh9hckk904iz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2926</id>
      <parentid>2925</parentid>
      <timestamp>2011-04-28T12:11:32Z</timestamp>
      <contributor>
        <username>Aikadil</username>
        <id>120</id>
      </contributor>
      <text xml:space="preserve" bytes="5090">A tester et rajouter + tard (permet de classer automatiquement les spam (s'ils sont D-PASS par amavis) dans la boite à Spam

 root@facteur:~# mkdir /home/facteur/sieve
 root@facteur:~# chown facteur: /home/facteur/sieve
 root@facteur:~# chmod 750 /home/facteur/sieve
 root@facteur:~# nano /home/facteur/sieve/global.sieve
&lt;code&gt;
require [&quot;fileinto&quot;, &quot;envelope&quot;, &quot;subaddress&quot;];

if header :contains &quot;X-Spam-Flag&quot; &quot;YES&quot; {
  fileinto &quot;INBOX.Spam&quot;;
}
if envelope :detail &quot;to&quot; &quot;spam&quot;{
  fileinto &quot;INBOX.Spam&quot;;
}
&lt;/code&gt;
 root@facteur:~# chown facteur: /home/facteur/sieve/global.sieve
 root@facteur:~# chmod 600 /home/facteur/sieve/global.sieve

root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota autocreate
}
...
plugin {
...
  sieve_before = /home/virtual/sieve/
...
  autocreate = INBOX.Spam
  autosubscribe = INBOX.Spam
}
&lt;/code&gt;
----
A faire: 
#Certificats pour le ssl;
#&lt;s&gt;Installation de rkhunter au tout début;&lt;/s&gt;
----
from: Aikadil: j'ai modifier la partie Test du SMTP AUTH

&lt;code&gt;$ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'&lt;/code&gt;

sous cette forme perl interprète le @ c'est égale un table en perl, donc il faut remplacer @ par \@

soit &lt;code&gt;$ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'&lt;/code&gt;

si non perl va juste traduire essai.org
----
from Aikadil
pour la clef gpg de
&lt;code&gt; deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main&lt;/code&gt;

peut-être que
&lt;code&gt;apt-get install debian-dovecot-auto-keyring&lt;/code&gt; 
est le plus simple
----
From Aikadil
J'ai remarquer que la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnais pas dans cette configuration.

mes boites mails
1-un@domain.be
2-deux@domain.be
3-trois@FAI.be

j'ai installer fetchmail qui forward les mails de trois@FAI.be to deux@domain.be il va relever toutes les minutes en pop3 port 25 sur le compte mail de mon FAI.

quand un expéditeur extérieur m'envoi un mail multi destinataire bidule@FAI.fr ti un@domaine.be, deux@domaine.be, trois@FAI.be
je ne reçois le mais que dans la boite deux@domain.be, c'est le mail forwarder par fetchmail, les deux autres n'arrive pas avec un beau message d'erreur dans les log
&lt;code&gt;
#Apr 27 21:26:17 ks24676 postfix/pipe[23409]: 7DFF660A7D: to=&lt;un@domain.be&gt;, relay=dovecot, delay=1157, delays=1157/0.07/0/0.11, dsn=4.3.5, status=deferred (mail system configuration error)
#Apr 27 21:26:17 ks24676 postfix/pipe[23409]: warning: pipe flag `D' requires dovecot_destination_recipient_limit = 1
&lt;/code&gt;

Je me dit qu'il suffirait de rajouter dans /etc/postfix/main.cf dovecot_destination_recipient_limit = 1
et en effet avec cette option cela fonctionne.

par contre la doc de dovecot dit

This is not possible with SMTP when there are multiple recipients for a mail message. SMTP can only indicate successful delivery or failure for all or none of the recipients, creating the need for a separate queue to handle the failed recipients. LMTP, on the other hand, can indicate success or failure to the client for each recipient, allowing the client to handle the queueing instead. The client in this case would typically be an Internet-facing mail gateway. LMTP is not intended for use over wide area networks.

et http://wiki2.dovecot.org/HowTo/PostfixDovecotLMTP précise qu'il faut une version 2.0.X pour utiliser LMTP entre postfix et dovecot.

n'a tu pas intéret a utiliser la version2 de dovecot dans ce cas ?

après plusieurs lecture utiliser LMTP semble plus standard et bénéfique en performance.
----
From Aikadil

Quelques piste TO DO liste
&lt;code&gt;A Faire:
-Fetchmail
permet de relever et de rapatrier les mails d'une boite extérieur vers un des compte mail du serveur
-LMTP entre Postfix et Dovecot semble plus efficace que le SMTP (voir message du dessus)
-Gestion multi compte
Plugins roundcube et Squirellmail pour faire du multicompte et ne pas devoir ce loguer/dé-loguer entre deux compte
-Certificat ssl/TLS pour faire du SMTPS et IMAPS
-Expliquer la méthode pour envoyer et reçevoir les mails du serveur depuis un MTU (thunderbird etc...) nom de serveur, port, mot de passe etc...
-Dspam en plus de Spamassassin, installer leurs base SQL
-MailZu
Gestion des quarantaines, Amavis 2.6 permet d'utiliser MailZu: permet alors d'allez lire les mails mis en quarantaine par l'antispam dans une interface etc...
-Policyd (service postfix)
Contrôler les user (mail/heures etc...) permet de limiter les I/O pour luter contre le mailBombing, DDOS...
-Vacation
gestion de l'auto réponse en cas d'absence.
-Expliquer les règles Iptables à rajouter pour que le serveur fonctionne en toutes sécurité

A vérifier:
-plus d'explication au début, en particulier comment changer le hostname de son serveur
-plus d'explication sur le serveur DNS Bind9, son fonctionnement, pourquoi l'utiliser, vérifier si il fonctionne
-Perso je n'arrive pas a installer la gestion des Quotas ...
-Les header des mails que j'envoie et reçoit ont bien le tag X-Virus-Scanned mais pas le tag x-Spam-
&lt;/code&gt;
----</text>
      <sha1>0k3ztdwo5kyjho32mq0rnap0x68bk1n</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2953</id>
      <parentid>2926</parentid>
      <timestamp>2011-05-02T22:52:43Z</timestamp>
      <contributor>
        <username>Aikadil</username>
        <id>120</id>
      </contributor>
      <text xml:space="preserve" bytes="5239">A tester et rajouter + tard (permet de classer automatiquement les spam (s'ils sont D-PASS par amavis) dans la boite à Spam

 root@facteur:~# mkdir /home/facteur/sieve
 root@facteur:~# chown facteur: /home/facteur/sieve
 root@facteur:~# chmod 750 /home/facteur/sieve
 root@facteur:~# nano /home/facteur/sieve/global.sieve
&lt;code&gt;
require [&quot;fileinto&quot;, &quot;envelope&quot;, &quot;subaddress&quot;];

if header :contains &quot;X-Spam-Flag&quot; &quot;YES&quot; {
  fileinto &quot;INBOX.Spam&quot;;
}
if envelope :detail &quot;to&quot; &quot;spam&quot;{
  fileinto &quot;INBOX.Spam&quot;;
}
&lt;/code&gt;
 root@facteur:~# chown facteur: /home/facteur/sieve/global.sieve
 root@facteur:~# chmod 600 /home/facteur/sieve/global.sieve

root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota autocreate
}
...
plugin {
...
  sieve_before = /home/virtual/sieve/
...
  autocreate = INBOX.Spam
  autosubscribe = INBOX.Spam
}
&lt;/code&gt;
----
A faire: 
#Certificats pour le ssl;
#&lt;s&gt;Installation de rkhunter au tout début;&lt;/s&gt;
----
from: Aikadil: j'ai modifier la partie Test du SMTP AUTH

&lt;code&gt;$ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'&lt;/code&gt;

sous cette forme perl interprète le @ c'est égale un table en perl, donc il faut remplacer @ par \@

soit &lt;code&gt;$ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'&lt;/code&gt;

si non perl va juste traduire essai.org
----
from Aikadil
pour la clef gpg de
&lt;code&gt; deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main&lt;/code&gt;

peut-être que
&lt;code&gt;apt-get install debian-dovecot-auto-keyring&lt;/code&gt; 
est le plus simple
----
From Aikadil
J'ai remarquer que la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnais pas dans cette configuration.

mes boites mails
1-un@domain.be
2-deux@domain.be
3-trois@FAI.be

j'ai installer fetchmail qui forward les mails de trois@FAI.be to deux@domain.be il va relever toutes les minutes en pop3 port 25 sur le compte mail de mon FAI.

quand un expéditeur extérieur m'envoi un mail multi destinataire bidule@FAI.fr ti un@domaine.be, deux@domaine.be, trois@FAI.be
je ne reçois le mais que dans la boite deux@domain.be, c'est le mail forwarder par fetchmail, les deux autres n'arrive pas avec un beau message d'erreur dans les log
&lt;code&gt;
#Apr 27 21:26:17 ks24676 postfix/pipe[23409]: 7DFF660A7D: to=&lt;un@domain.be&gt;, relay=dovecot, delay=1157, delays=1157/0.07/0/0.11, dsn=4.3.5, status=deferred (mail system configuration error)
#Apr 27 21:26:17 ks24676 postfix/pipe[23409]: warning: pipe flag `D' requires dovecot_destination_recipient_limit = 1
&lt;/code&gt;

Je me dit qu'il suffirait de rajouter dans /etc/postfix/main.cf dovecot_destination_recipient_limit = 1
et en effet avec cette option cela fonctionne.

par contre la doc de dovecot dit

This is not possible with SMTP when there are multiple recipients for a mail message. SMTP can only indicate successful delivery or failure for all or none of the recipients, creating the need for a separate queue to handle the failed recipients. LMTP, on the other hand, can indicate success or failure to the client for each recipient, allowing the client to handle the queueing instead. The client in this case would typically be an Internet-facing mail gateway. LMTP is not intended for use over wide area networks.

et http://wiki2.dovecot.org/HowTo/PostfixDovecotLMTP précise qu'il faut une version 2.0.X pour utiliser LMTP entre postfix et dovecot.

n'a tu pas intéret a utiliser la version2 de dovecot dans ce cas ?

après plusieurs lecture utiliser LMTP semble plus standard et bénéfique en performance.
----
From Aikadil

Quelques piste TO DO liste
&lt;code&gt;A Faire:
-Fetchmail
permet de relever et de rapatrier les mails d'une boite extérieur vers un des compte mail du serveur
-LMTP entre Postfix et Dovecot semble plus efficace que le SMTP (voir message du dessus)
-Gestion multi compte
Plugins roundcube et Squirellmail pour faire du multicompte et ne pas devoir ce loguer/dé-loguer entre deux compte
-Certificat ssl/TLS pour faire du SMTPS et IMAPS
-Expliquer la méthode pour envoyer et reçevoir les mails du serveur depuis un MTU (thunderbird etc...) nom de serveur, port, mot de passe etc...
-Dspam en plus de Spamassassin, installer leurs base SQL
-MailZu
Gestion des quarantaines, Amavis 2.6 permet d'utiliser MailZu: permet alors d'allez lire les mails mis en quarantaine par l'antispam dans une interface etc...
-Policyd (service postfix)
Contrôler les user (mail/heures etc...) permet de limiter les I/O pour luter contre le mailBombing, DDOS...
-Vacation
gestion de l'auto réponse en cas d'absence.
-Expliquer les règles Iptables à rajouter pour que le serveur fonctionne en toutes sécurité
-Si le serveur SMTP n'arrive pas en délivrer le mail, plus tôt que de la placer en queue, le renvoyer avec un autres SMTP &quot;celui du FAI ou Google&quot;

A vérifier:
-plus d'explication au début, en particulier comment changer le hostname de son serveur
-plus d'explication sur le serveur DNS Bind9, son fonctionnement, pourquoi l'utiliser, vérifier si il fonctionne
-Perso je n'arrive pas a installer la gestion des Quotas ...
-Les header des mails que j'envoie et reçoit ont bien le tag X-Virus-Scanned mais pas le tag x-Spam-
&lt;/code&gt;
----</text>
      <sha1>6wvy8gpykxduzwmtsdj8y2hxge6uhqf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2954</id>
      <parentid>2953</parentid>
      <timestamp>2011-05-03T06:30:49Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="6172">A tester et rajouter + tard (permet de classer automatiquement les spam (s'ils sont D-PASS par amavis) dans la boite à Spam

 root@facteur:~# mkdir /home/facteur/sieve
 root@facteur:~# chown facteur: /home/facteur/sieve
 root@facteur:~# chmod 750 /home/facteur/sieve
 root@facteur:~# nano /home/facteur/sieve/global.sieve
&lt;code&gt;
require [&quot;fileinto&quot;, &quot;envelope&quot;, &quot;subaddress&quot;];

if header :contains &quot;X-Spam-Flag&quot; &quot;YES&quot; {
  fileinto &quot;INBOX.Spam&quot;;
}
if envelope :detail &quot;to&quot; &quot;spam&quot;{
  fileinto &quot;INBOX.Spam&quot;;
}
&lt;/code&gt;
 root@facteur:~# chown facteur: /home/facteur/sieve/global.sieve
 root@facteur:~# chmod 600 /home/facteur/sieve/global.sieve

root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota autocreate
}
...
plugin {
...
  sieve_before = /home/virtual/sieve/
...
  autocreate = INBOX.Spam
  autosubscribe = INBOX.Spam
}
&lt;/code&gt;
----
A faire: 
#Certificats pour le ssl;
#&lt;s&gt;Installation de rkhunter au tout début;&lt;/s&gt;
----
from: Aikadil: j'ai modifier la partie Test du SMTP AUTH

&lt;code&gt;$ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'&lt;/code&gt;

sous cette forme perl interprète le @ c'est égale un table en perl, donc il faut remplacer @ par \@

soit &lt;code&gt;$ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'&lt;/code&gt;

si non perl va juste traduire essai.org
----
from Aikadil
pour la clef gpg de
&lt;code&gt; deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main&lt;/code&gt;

peut-être que
&lt;code&gt;apt-get install debian-dovecot-auto-keyring&lt;/code&gt; 
est le plus simple
----
From Aikadil
J'ai remarquer que la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnais pas dans cette configuration.

mes boites mails
1-un@domain.be
2-deux@domain.be
3-trois@FAI.be

j'ai installer fetchmail qui forward les mails de trois@FAI.be to deux@domain.be il va relever toutes les minutes en pop3 port 25 sur le compte mail de mon FAI.

quand un expéditeur extérieur m'envoi un mail multi destinataire bidule@FAI.fr ti un@domaine.be, deux@domaine.be, trois@FAI.be
je ne reçois le mais que dans la boite deux@domain.be, c'est le mail forwarder par fetchmail, les deux autres n'arrive pas avec un beau message d'erreur dans les log
&lt;code&gt;
#Apr 27 21:26:17 ks24676 postfix/pipe[23409]: 7DFF660A7D: to=&lt;un@domain.be&gt;, relay=dovecot, delay=1157, delays=1157/0.07/0/0.11, dsn=4.3.5, status=deferred (mail system configuration error)
#Apr 27 21:26:17 ks24676 postfix/pipe[23409]: warning: pipe flag `D' requires dovecot_destination_recipient_limit = 1
&lt;/code&gt;

Je me dit qu'il suffirait de rajouter dans /etc/postfix/main.cf dovecot_destination_recipient_limit = 1
et en effet avec cette option cela fonctionne.

par contre la doc de dovecot dit

This is not possible with SMTP when there are multiple recipients for a mail message. SMTP can only indicate successful delivery or failure for all or none of the recipients, creating the need for a separate queue to handle the failed recipients. LMTP, on the other hand, can indicate success or failure to the client for each recipient, allowing the client to handle the queueing instead. The client in this case would typically be an Internet-facing mail gateway. LMTP is not intended for use over wide area networks.

et http://wiki2.dovecot.org/HowTo/PostfixDovecotLMTP précise qu'il faut une version 2.0.X pour utiliser LMTP entre postfix et dovecot.

n'a tu pas intéret a utiliser la version2 de dovecot dans ce cas ?

après plusieurs lecture utiliser LMTP semble plus standard et bénéfique en performance.
----
From Aikadil

Quelques piste TO DO liste
&lt;code&gt;A Faire:
-Fetchmail
permet de relever et de rapatrier les mails d'une boite extérieur vers un des compte mail du serveur
-LMTP entre Postfix et Dovecot semble plus efficace que le SMTP (voir message du dessus)
-Gestion multi compte
Plugins roundcube et Squirellmail pour faire du multicompte et ne pas devoir ce loguer/dé-loguer entre deux compte
-Certificat ssl/TLS pour faire du SMTPS et IMAPS
-Expliquer la méthode pour envoyer et reçevoir les mails du serveur depuis un MTU (thunderbird etc...) nom de serveur, port, mot de passe etc...
-Dspam en plus de Spamassassin, installer leurs base SQL
-MailZu
Gestion des quarantaines, Amavis 2.6 permet d'utiliser MailZu: permet alors d'allez lire les mails mis en quarantaine par l'antispam dans une interface etc...
-Policyd (service postfix)
Contrôler les user (mail/heures etc...) permet de limiter les I/O pour luter contre le mailBombing, DDOS...
-Vacation
gestion de l'auto réponse en cas d'absence.
-Expliquer les règles Iptables à rajouter pour que le serveur fonctionne en toutes sécurité
-Si le serveur SMTP n'arrive pas en délivrer le mail, plus tôt que de la placer en queue, le renvoyer avec un autres SMTP &quot;celui du FAI ou Google&quot;

A vérifier:
-plus d'explication au début, en particulier comment changer le hostname de son serveur
-plus d'explication sur le serveur DNS Bind9, son fonctionnement, pourquoi l'utiliser, vérifier si il fonctionne
-Perso je n'arrive pas a installer la gestion des Quotas ...
-Les header des mails que j'envoie et reçoit ont bien le tag X-Virus-Scanned mais pas le tag x-Spam-
&lt;/code&gt;
----
Salut,
Quelques remarques rapides:
- Dovecot2... Pour un serveur qui se doit d'être stable, j'ai choisi la prudence (et j'ai quand même déjà fait une entorse en proposant Dovecot 1.2.16. Mais c'est envisageable de proposer une solution pour les &quot;aventuriers&quot;...

- Je n'ai pas trouvé de plugin Multicompte pour Squirrelmail

- MailZu impose de stocker les mails dans une base sql, ça alourdi pas mal. Mais on peut aussi proposer une &quot;extension&quot;

- Vacation: Déjà pris en charge avec managesieves (fonctionne dans Squirrelmail et Roundcube).

- Iptables, pas de soucis, il faut faire une nouvelle page.

- Bind... Il y a une page complète sur le Wiki, à la rigueur mettre un lien qui renvoie dessus.

- Ton header sans X-spam est &quot;normal&quot; si le mail ne vient pas de l'extérieur.

Mon inquiétude, c'est d'avoir un Tuto trop lourd à force d'explications et précisions...

[[Utilisateur:Lol|Lol]] 3 mai 2011 à 01:30 (CDT)</text>
      <sha1>gc4m802rljcqxlzjg4r2z1nr3kcyj9i</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2956</id>
      <parentid>2954</parentid>
      <timestamp>2011-05-04T00:36:16Z</timestamp>
      <contributor>
        <username>Aikadil</username>
        <id>120</id>
      </contributor>
      <text xml:space="preserve" bytes="6908">A tester et rajouter + tard (permet de classer automatiquement les spam (s'ils sont D-PASS par amavis) dans la boite à Spam

 root@facteur:~# mkdir /home/facteur/sieve
 root@facteur:~# chown facteur: /home/facteur/sieve
 root@facteur:~# chmod 750 /home/facteur/sieve
 root@facteur:~# nano /home/facteur/sieve/global.sieve
&lt;code&gt;
require [&quot;fileinto&quot;, &quot;envelope&quot;, &quot;subaddress&quot;];

if header :contains &quot;X-Spam-Flag&quot; &quot;YES&quot; {
  fileinto &quot;INBOX.Spam&quot;;
}
if envelope :detail &quot;to&quot; &quot;spam&quot;{
  fileinto &quot;INBOX.Spam&quot;;
}
&lt;/code&gt;
 root@facteur:~# chown facteur: /home/facteur/sieve/global.sieve
 root@facteur:~# chmod 600 /home/facteur/sieve/global.sieve

root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota autocreate
}
...
plugin {
...
  sieve_before = /home/virtual/sieve/
...
  autocreate = INBOX.Spam
  autosubscribe = INBOX.Spam
}
&lt;/code&gt;
----
A faire: 
#Certificats pour le ssl;
#&lt;s&gt;Installation de rkhunter au tout début;&lt;/s&gt;
----
from: Aikadil: j'ai modifier la partie Test du SMTP AUTH

&lt;code&gt;$ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'&lt;/code&gt;

sous cette forme perl interprète le @ c'est égale un table en perl, donc il faut remplacer @ par \@

soit &lt;code&gt;$ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'&lt;/code&gt;

si non perl va juste traduire essai.org
----
from Aikadil
pour la clef gpg de
&lt;code&gt; deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main&lt;/code&gt;

peut-être que
&lt;code&gt;apt-get install debian-dovecot-auto-keyring&lt;/code&gt; 
est le plus simple
----
From Aikadil
J'ai remarquer que la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnais pas dans cette configuration.

mes boites mails
1-un@domain.be
2-deux@domain.be
3-trois@FAI.be

j'ai installer fetchmail qui forward les mails de trois@FAI.be to deux@domain.be il va relever toutes les minutes en pop3 port 25 sur le compte mail de mon FAI.

quand un expéditeur extérieur m'envoi un mail multi destinataire bidule@FAI.fr ti un@domaine.be, deux@domaine.be, trois@FAI.be
je ne reçois le mais que dans la boite deux@domain.be, c'est le mail forwarder par fetchmail, les deux autres n'arrive pas avec un beau message d'erreur dans les log
&lt;code&gt;
#Apr 27 21:26:17 ks24676 postfix/pipe[23409]: 7DFF660A7D: to=&lt;un@domain.be&gt;, relay=dovecot, delay=1157, delays=1157/0.07/0/0.11, dsn=4.3.5, status=deferred (mail system configuration error)
#Apr 27 21:26:17 ks24676 postfix/pipe[23409]: warning: pipe flag `D' requires dovecot_destination_recipient_limit = 1
&lt;/code&gt;

Je me dit qu'il suffirait de rajouter dans /etc/postfix/main.cf dovecot_destination_recipient_limit = 1
et en effet avec cette option cela fonctionne.

par contre la doc de dovecot dit

This is not possible with SMTP when there are multiple recipients for a mail message. SMTP can only indicate successful delivery or failure for all or none of the recipients, creating the need for a separate queue to handle the failed recipients. LMTP, on the other hand, can indicate success or failure to the client for each recipient, allowing the client to handle the queueing instead. The client in this case would typically be an Internet-facing mail gateway. LMTP is not intended for use over wide area networks.

et http://wiki2.dovecot.org/HowTo/PostfixDovecotLMTP précise qu'il faut une version 2.0.X pour utiliser LMTP entre postfix et dovecot.

n'a tu pas intéret a utiliser la version2 de dovecot dans ce cas ?

après plusieurs lecture utiliser LMTP semble plus standard et bénéfique en performance.
----
From Aikadil

Quelques piste TO DO liste
&lt;code&gt;A Faire:
-Fetchmail
permet de relever et de rapatrier les mails d'une boite extérieur vers un des compte mail du serveur
-LMTP entre Postfix et Dovecot semble plus efficace que le SMTP (voir message du dessus)
-Gestion multi compte
Plugins roundcube et Squirellmail pour faire du multicompte et ne pas devoir ce loguer/dé-loguer entre deux compte
-Certificat ssl/TLS pour faire du SMTPS et IMAPS
-Expliquer la méthode pour envoyer et reçevoir les mails du serveur depuis un MTU (thunderbird etc...) nom de serveur, port, mot de passe etc...
-Dspam en plus de Spamassassin, installer leurs base SQL
-MailZu
Gestion des quarantaines, Amavis 2.6 permet d'utiliser MailZu: permet alors d'allez lire les mails mis en quarantaine par l'antispam dans une interface etc...
-Policyd (service postfix)
Contrôler les user (mail/heures etc...) permet de limiter les I/O pour luter contre le mailBombing, DDOS...
-Vacation
gestion de l'auto réponse en cas d'absence.
-Expliquer les règles Iptables à rajouter pour que le serveur fonctionne en toutes sécurité
-Si le serveur SMTP n'arrive pas en délivrer le mail, plus tôt que de la placer en queue, le renvoyer avec un autres SMTP &quot;celui du FAI ou Google&quot;

A vérifier:
-plus d'explication au début, en particulier comment changer le hostname de son serveur
-plus d'explication sur le serveur DNS Bind9, son fonctionnement, pourquoi l'utiliser, vérifier si il fonctionne
-Perso je n'arrive pas a installer la gestion des Quotas ...
-Les header des mails que j'envoie et reçoit ont bien le tag X-Virus-Scanned mais pas le tag x-Spam-
&lt;/code&gt;
----
Salut,
Quelques remarques rapides:
- Dovecot2... Pour un serveur qui se doit d'être stable, j'ai choisi la prudence (et j'ai quand même déjà fait une entorse en proposant Dovecot 1.2.16. Mais c'est envisageable de proposer une solution pour les &quot;aventuriers&quot;...

- Je n'ai pas trouvé de plugin Multicompte pour Squirrelmail

- MailZu impose de stocker les mails dans une base sql, ça alourdi pas mal. Mais on peut aussi proposer une &quot;extension&quot;

- Vacation: Déjà pris en charge avec managesieves (fonctionne dans Squirrelmail et Roundcube).

- Iptables, pas de soucis, il faut faire une nouvelle page.

- Bind... Il y a une page complète sur le Wiki, à la rigueur mettre un lien qui renvoie dessus.

- Ton header sans X-spam est &quot;normal&quot; si le mail ne vient pas de l'extérieur.

Mon inquiétude, c'est d'avoir un Tuto trop lourd à force d'explications et précisions...

[[Utilisateur:Lol|Lol]] 3 mai 2011 à 01:30 (CDT)
----
From Aikadil
- Dovecot2 effectivement dovecote2 ne rentrera pas dans la debian avant au moins debian7, je n'aime pas non plus &quot;trop&quot; sortir de la stable, peut-on quand même utiliser LMTP avec la 1.2 ?
- multi-compte moi non plus uniquement pour roundcube, c'est déja celà.

Je pense qu'un tuto est justement la pour aider les utilisateurs de base à avancer, progresser et donc il vaut mieux en dire plus, que trop peut et les laisser faire leurs choix, plus tôt qu'un tuto totalement figer, avec le quel au final ils n'ont absolument rien compris.

Il serait peut-être bon avant d'ajouter de nouvelles fonctions dans le tuto, de le relire complètement et vérifier si tout fonctionne, par exemple une soirée sous sync.in ?</text>
      <sha1>b0gt3xhxk955fpytryk4x2c5js2yid1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2957</id>
      <parentid>2956</parentid>
      <timestamp>2011-05-04T01:49:42Z</timestamp>
      <contributor>
        <username>Aikadil</username>
        <id>120</id>
      </contributor>
      <text xml:space="preserve" bytes="7083">A tester et rajouter + tard (permet de classer automatiquement les spam (s'ils sont D-PASS par amavis) dans la boite à Spam

 root@facteur:~# mkdir /home/facteur/sieve
 root@facteur:~# chown facteur: /home/facteur/sieve
 root@facteur:~# chmod 750 /home/facteur/sieve
 root@facteur:~# nano /home/facteur/sieve/global.sieve
&lt;code&gt;
require [&quot;fileinto&quot;, &quot;envelope&quot;, &quot;subaddress&quot;];

if header :contains &quot;X-Spam-Flag&quot; &quot;YES&quot; {
  fileinto &quot;INBOX.Spam&quot;;
}
if envelope :detail &quot;to&quot; &quot;spam&quot;{
  fileinto &quot;INBOX.Spam&quot;;
}
&lt;/code&gt;
 root@facteur:~# chown facteur: /home/facteur/sieve/global.sieve
 root@facteur:~# chmod 600 /home/facteur/sieve/global.sieve

root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota autocreate
}
...
plugin {
...
  sieve_before = /home/virtual/sieve/
...
  autocreate = INBOX.Spam
  autosubscribe = INBOX.Spam
}
&lt;/code&gt;
----
A faire: 
#Certificats pour le ssl;
#&lt;s&gt;Installation de rkhunter au tout début;&lt;/s&gt;
----
from: Aikadil: j'ai modifier la partie Test du SMTP AUTH

&lt;code&gt;$ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'&lt;/code&gt;

sous cette forme perl interprète le @ c'est égale un table en perl, donc il faut remplacer @ par \@

soit &lt;code&gt;$ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'&lt;/code&gt;

si non perl va juste traduire essai.org
----
from Aikadil
pour la clef gpg de
&lt;code&gt; deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main&lt;/code&gt;

peut-être que
&lt;code&gt;apt-get install debian-dovecot-auto-keyring&lt;/code&gt; 
est le plus simple
----
From Aikadil
J'ai remarquer que la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnais pas dans cette configuration.

mes boites mails
1-un@domain.be
2-deux@domain.be
3-trois@FAI.be

j'ai installer fetchmail qui forward les mails de trois@FAI.be to deux@domain.be il va relever toutes les minutes en pop3 port 25 sur le compte mail de mon FAI.

quand un expéditeur extérieur m'envoi un mail multi destinataire bidule@FAI.fr ti un@domaine.be, deux@domaine.be, trois@FAI.be
je ne reçois le mais que dans la boite deux@domain.be, c'est le mail forwarder par fetchmail, les deux autres n'arrive pas avec un beau message d'erreur dans les log
&lt;code&gt;
#Apr 27 21:26:17 ks24676 postfix/pipe[23409]: 7DFF660A7D: to=&lt;un@domain.be&gt;, relay=dovecot, delay=1157, delays=1157/0.07/0/0.11, dsn=4.3.5, status=deferred (mail system configuration error)
#Apr 27 21:26:17 ks24676 postfix/pipe[23409]: warning: pipe flag `D' requires dovecot_destination_recipient_limit = 1
&lt;/code&gt;

Je me dit qu'il suffirait de rajouter dans /etc/postfix/main.cf dovecot_destination_recipient_limit = 1
et en effet avec cette option cela fonctionne.

par contre la doc de dovecot dit

This is not possible with SMTP when there are multiple recipients for a mail message. SMTP can only indicate successful delivery or failure for all or none of the recipients, creating the need for a separate queue to handle the failed recipients. LMTP, on the other hand, can indicate success or failure to the client for each recipient, allowing the client to handle the queueing instead. The client in this case would typically be an Internet-facing mail gateway. LMTP is not intended for use over wide area networks.

et http://wiki2.dovecot.org/HowTo/PostfixDovecotLMTP précise qu'il faut une version 2.0.X pour utiliser LMTP entre postfix et dovecot.

n'a tu pas intéret a utiliser la version2 de dovecot dans ce cas ?

après plusieurs lecture utiliser LMTP semble plus standard et bénéfique en performance.
----
From Aikadil

Quelques piste TO DO liste
&lt;code&gt;A Faire:
-Fetchmail
permet de relever et de rapatrier les mails d'une boite extérieur vers un des compte mail du serveur
-LMTP entre Postfix et Dovecot semble plus efficace que le SMTP (voir message du dessus)
-Gestion multi compte
Plugins roundcube et Squirellmail pour faire du multicompte et ne pas devoir ce loguer/dé-loguer entre deux compte
-Certificat ssl/TLS pour faire du SMTPS et IMAPS
-Expliquer la méthode pour envoyer et reçevoir les mails du serveur depuis un MTU (thunderbird etc...) nom de serveur, port, mot de passe etc...
-Dspam en plus de Spamassassin, installer leurs base SQL
-MailZu
Gestion des quarantaines, Amavis 2.6 permet d'utiliser MailZu: permet alors d'allez lire les mails mis en quarantaine par l'antispam dans une interface etc...
-Policyd (service postfix)
Contrôler les user (mail/heures etc...) permet de limiter les I/O pour luter contre le mailBombing, DDOS...
-Vacation
gestion de l'auto réponse en cas d'absence.
-Expliquer les règles Iptables à rajouter pour que le serveur fonctionne en toutes sécurité
-Si le serveur SMTP n'arrive pas en délivrer le mail, plus tôt que de la placer en queue, le renvoyer avec un autres SMTP &quot;celui du FAI ou Google&quot;
-rajouter en plus de spamassassin pyzor et razor http://kent1.sklunk.net/spip.php?article113

A vérifier:
-plus d'explication au début, en particulier comment changer le hostname de son serveur
-plus d'explication sur le serveur DNS Bind9, son fonctionnement, pourquoi l'utiliser, vérifier si il fonctionne
-Perso je n'arrive pas a installer la gestion des Quotas ...
-Les header des mails que j'envoie et reçoit ont bien le tag X-Virus-Scanned mais pas le tag x-Spam-
&lt;/code&gt;
----
Salut,
Quelques remarques rapides:
- Dovecot2... Pour un serveur qui se doit d'être stable, j'ai choisi la prudence (et j'ai quand même déjà fait une entorse en proposant Dovecot 1.2.16. Mais c'est envisageable de proposer une solution pour les &quot;aventuriers&quot;...

- Je n'ai pas trouvé de plugin Multicompte pour Squirrelmail

- MailZu impose de stocker les mails dans une base sql, ça alourdi pas mal. Mais on peut aussi proposer une &quot;extension&quot;

- Vacation: Déjà pris en charge avec managesieves (fonctionne dans Squirrelmail et Roundcube).

- Iptables, pas de soucis, il faut faire une nouvelle page.

- Bind... Il y a une page complète sur le Wiki, à la rigueur mettre un lien qui renvoie dessus.

- Ton header sans X-spam est &quot;normal&quot; si le mail ne vient pas de l'extérieur.

Mon inquiétude, c'est d'avoir un Tuto trop lourd à force d'explications et précisions...

[[Utilisateur:Lol|Lol]] 3 mai 2011 à 01:30 (CDT)
----
From Aikadil
- Dovecot2 effectivement dovecote2 ne rentrera pas dans la debian avant au moins debian7, je n'aime pas non plus &quot;trop&quot; sortir de la stable, peut-on quand même utiliser LMTP avec la 1.2 ?
- multi-compte moi non plus uniquement pour roundcube, c'est déja celà.

Je pense qu'un tuto est justement la pour aider les utilisateurs de base à avancer, progresser et donc il vaut mieux en dire plus, que trop peut et les laisser faire leurs choix, plus tôt qu'un tuto totalement figer, avec le quel au final ils n'ont absolument rien compris.

Il serait peut-être bon avant d'ajouter de nouvelles fonctions dans le tuto, de le relire complètement et vérifier si tout fonctionne, par exemple une soirée sous sync.in ?

-rajout de pyzor et razor à la TODO http://kent1.sklunk.net/spip.php?article113</text>
      <sha1>r0nip5lazsxicgut0cy15csxe1zdtlc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2970</id>
      <parentid>2957</parentid>
      <timestamp>2011-05-07T14:10:36Z</timestamp>
      <contributor>
        <username>Aikadil</username>
        <id>120</id>
      </contributor>
      <text xml:space="preserve" bytes="7085">A tester et rajouter + tard (permet de classer automatiquement les spam (s'ils sont D-PASS par amavis) dans la boite à Spam

 root@facteur:~# mkdir /home/facteur/sieve
 root@facteur:~# chown facteur: /home/facteur/sieve
 root@facteur:~# chmod 750 /home/facteur/sieve
 root@facteur:~# nano /home/facteur/sieve/global.sieve
&lt;code&gt;
require [&quot;fileinto&quot;, &quot;envelope&quot;, &quot;subaddress&quot;];

if header :contains &quot;X-Spam-Flag&quot; &quot;YES&quot; {
  fileinto &quot;INBOX.Spam&quot;;
}
if envelope :detail &quot;to&quot; &quot;spam&quot;{
  fileinto &quot;INBOX.Spam&quot;;
}
&lt;/code&gt;
 root@facteur:~# chown facteur: /home/facteur/sieve/global.sieve
 root@facteur:~# chmod 600 /home/facteur/sieve/global.sieve

root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota autocreate
}
...
plugin {
...
  sieve_before = /home/virtual/sieve/
...
  autocreate = INBOX.Spam
  autosubscribe = INBOX.Spam
}
&lt;/code&gt;
----
A faire: 
#Certificats pour le ssl;
#&lt;s&gt;Installation de rkhunter au tout début;&lt;/s&gt;
----
from: Aikadil: j'ai modifier la partie Test du SMTP AUTH

&lt;code&gt;$ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'&lt;/code&gt;

sous cette forme perl interprète le @ c'est égale un table en perl, donc il faut remplacer @ par \@

soit &lt;code&gt;$ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'&lt;/code&gt;

si non perl va juste traduire essai.org
----
from Aikadil
pour la clef gpg de
&lt;code&gt; deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main&lt;/code&gt;

peut-être que
&lt;code&gt;apt-get install debian-dovecot-auto-keyring&lt;/code&gt; 
est le plus simple
----
From Aikadil
J'ai remarquer que la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnais pas dans cette configuration.

mes boites mails
1-un@domain.be
2-deux@domain.be
3-trois@FAI.be

j'ai installer fetchmail qui forward les mails de trois@FAI.be to deux@domain.be il va relever toutes les minutes en pop3 port 25 sur le compte mail de mon FAI.

quand un expéditeur extérieur m'envoi un mail multi destinataire bidule@FAI.fr ti un@domaine.be, deux@domaine.be, trois@FAI.be
je ne reçois le mais que dans la boite deux@domain.be, c'est le mail forwarder par fetchmail, les deux autres n'arrive pas avec un beau message d'erreur dans les log
&lt;code&gt;
#Apr 27 21:26:17 ks24676 postfix/pipe[23409]: 7DFF660A7D: to=&lt;un@domain.be&gt;, relay=dovecot, delay=1157, delays=1157/0.07/0/0.11, dsn=4.3.5, status=deferred (mail system configuration error)
#Apr 27 21:26:17 ks24676 postfix/pipe[23409]: warning: pipe flag `D' requires dovecot_destination_recipient_limit = 1
&lt;/code&gt;

Je me dit qu'il suffirait de rajouter dans /etc/postfix/main.cf dovecot_destination_recipient_limit = 1
et en effet avec cette option cela fonctionne.

par contre la doc de dovecot dit

This is not possible with SMTP when there are multiple recipients for a mail message. SMTP can only indicate successful delivery or failure for all or none of the recipients, creating the need for a separate queue to handle the failed recipients. LMTP, on the other hand, can indicate success or failure to the client for each recipient, allowing the client to handle the queueing instead. The client in this case would typically be an Internet-facing mail gateway. LMTP is not intended for use over wide area networks.

et http://wiki2.dovecot.org/HowTo/PostfixDovecotLMTP précise qu'il faut une version 2.0.X pour utiliser LMTP entre postfix et dovecot.

n'a tu pas intéret a utiliser la version2 de dovecot dans ce cas ?

après plusieurs lecture utiliser LMTP semble plus standard et bénéfique en performance.
----
From Aikadil

Quelques piste TO DO liste

&lt;code&gt;
A Faire:
-Fetchmail
permet de relever et de rapatrier les mails d'une boite extérieur vers un des compte mail du serveur
-LMTP entre Postfix et Dovecot semble plus efficace que le SMTP (voir message du dessus)
-Gestion multi compte
Plugins roundcube et Squirellmail pour faire du multicompte et ne pas devoir ce loguer/dé-loguer entre deux compte
-Certificat ssl/TLS pour faire du SMTPS et IMAPS
-Expliquer la méthode pour envoyer et reçevoir les mails du serveur depuis un MTU (thunderbird etc...) nom de serveur, port, mot de passe etc...
-Dspam en plus de Spamassassin, installer leurs base SQL
-MailZu
Gestion des quarantaines, Amavis 2.6 permet d'utiliser MailZu: permet alors d'allez lire les mails mis en quarantaine par l'antispam dans une interface etc...
-Policyd (service postfix)
Contrôler les user (mail/heures etc...) permet de limiter les I/O pour luter contre le mailBombing, DDOS...
-Vacation
gestion de l'auto réponse en cas d'absence.
-Expliquer les règles Iptables à rajouter pour que le serveur fonctionne en toutes sécurité
-Si le serveur SMTP n'arrive pas en délivrer le mail, plus tôt que de la placer en queue, le renvoyer avec un autres SMTP &quot;celui du FAI ou Google&quot;
-rajouter en plus de spamassassin pyzor et razor http://kent1.sklunk.net/spip.php?article113

A vérifier:
-plus d'explication au début, en particulier comment changer le hostname de son serveur
-plus d'explication sur le serveur DNS Bind9, son fonctionnement, pourquoi l'utiliser, vérifier si il fonctionne
-Perso je n'arrive pas a installer la gestion des Quotas ...
-Les header des mails que j'envoie et reçoit ont bien le tag X-Virus-Scanned mais pas le tag x-Spam-
&lt;/code&gt;
----
Salut,
Quelques remarques rapides:
- Dovecot2... Pour un serveur qui se doit d'être stable, j'ai choisi la prudence (et j'ai quand même déjà fait une entorse en proposant Dovecot 1.2.16. Mais c'est envisageable de proposer une solution pour les &quot;aventuriers&quot;...

- Je n'ai pas trouvé de plugin Multicompte pour Squirrelmail

- MailZu impose de stocker les mails dans une base sql, ça alourdi pas mal. Mais on peut aussi proposer une &quot;extension&quot;

- Vacation: Déjà pris en charge avec managesieves (fonctionne dans Squirrelmail et Roundcube).

- Iptables, pas de soucis, il faut faire une nouvelle page.

- Bind... Il y a une page complète sur le Wiki, à la rigueur mettre un lien qui renvoie dessus.

- Ton header sans X-spam est &quot;normal&quot; si le mail ne vient pas de l'extérieur.

Mon inquiétude, c'est d'avoir un Tuto trop lourd à force d'explications et précisions...

[[Utilisateur:Lol|Lol]] 3 mai 2011 à 01:30 (CDT)
----
From Aikadil
- Dovecot2 effectivement dovecote2 ne rentrera pas dans la debian avant au moins debian7, je n'aime pas non plus &quot;trop&quot; sortir de la stable, peut-on quand même utiliser LMTP avec la 1.2 ?
- multi-compte moi non plus uniquement pour roundcube, c'est déja celà.

Je pense qu'un tuto est justement la pour aider les utilisateurs de base à avancer, progresser et donc il vaut mieux en dire plus, que trop peut et les laisser faire leurs choix, plus tôt qu'un tuto totalement figer, avec le quel au final ils n'ont absolument rien compris.

Il serait peut-être bon avant d'ajouter de nouvelles fonctions dans le tuto, de le relire complètement et vérifier si tout fonctionne, par exemple une soirée sous sync.in ?

-rajout de pyzor et razor à la TODO http://kent1.sklunk.net/spip.php?article113</text>
      <sha1>046ugz0jcefwqt2t0x1f3fv03ojhk4g</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3485</id>
      <parentid>2970</parentid>
      <timestamp>2011-10-02T15:09:19Z</timestamp>
      <contributor>
        <username>Aikadil</username>
        <id>120</id>
      </contributor>
      <text xml:space="preserve" bytes="7127">A tester et rajouter + tard (permet de classer automatiquement les spam (s'ils sont D-PASS par amavis) dans la boite à Spam

 root@facteur:~# mkdir /home/facteur/sieve
 root@facteur:~# chown facteur: /home/facteur/sieve
 root@facteur:~# chmod 750 /home/facteur/sieve
 root@facteur:~# nano /home/facteur/sieve/global.sieve
&lt;code&gt;
require [&quot;fileinto&quot;, &quot;envelope&quot;, &quot;subaddress&quot;];

if header :contains &quot;X-Spam-Flag&quot; &quot;YES&quot; {
  fileinto &quot;INBOX.Spam&quot;;
}
if envelope :detail &quot;to&quot; &quot;spam&quot;{
  fileinto &quot;INBOX.Spam&quot;;
}
&lt;/code&gt;
 root@facteur:~# chown facteur: /home/facteur/sieve/global.sieve
 root@facteur:~# chmod 600 /home/facteur/sieve/global.sieve

root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota autocreate
}
...
plugin {
...
  sieve_before = /home/virtual/sieve/
...
  autocreate = INBOX.Spam
  autosubscribe = INBOX.Spam
}
&lt;/code&gt;
----
A faire: 
#Certificats pour le ssl;
#&lt;s&gt;Installation de rkhunter au tout début;&lt;/s&gt;
----
from: Aikadil: j'ai modifier la partie Test du SMTP AUTH

&lt;code&gt;$ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'&lt;/code&gt;

sous cette forme perl interprète le @ c'est égale un table en perl, donc il faut remplacer @ par \@

soit &lt;code&gt;$ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'&lt;/code&gt;

si non perl va juste traduire essai.org
----
from Aikadil
pour la clef gpg de
&lt;code&gt; deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main&lt;/code&gt;

peut-être que
&lt;code&gt;apt-get install debian-dovecot-auto-keyring&lt;/code&gt; 
est le plus simple
----
From Aikadil
J'ai remarquer que la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnais pas dans cette configuration.

mes boites mails
1-un@domain.be
2-deux@domain.be
3-trois@FAI.be

j'ai installer fetchmail qui forward les mails de trois@FAI.be to deux@domain.be il va relever toutes les minutes en pop3 port 25 sur le compte mail de mon FAI.

quand un expéditeur extérieur m'envoi un mail multi destinataire bidule@FAI.fr ti un@domaine.be, deux@domaine.be, trois@FAI.be
je ne reçois le mais que dans la boite deux@domain.be, c'est le mail forwarder par fetchmail, les deux autres n'arrive pas avec un beau message d'erreur dans les log
&lt;code&gt;
#Apr 27 21:26:17 ks24676 postfix/pipe[23409]: 7DFF660A7D: to=&lt;un@domain.be&gt;, relay=dovecot, delay=1157, delays=1157/0.07/0/0.11, dsn=4.3.5, status=deferred (mail system configuration error)
#Apr 27 21:26:17 ks24676 postfix/pipe[23409]: warning: pipe flag `D' requires dovecot_destination_recipient_limit = 1
&lt;/code&gt;

Je me dit qu'il suffirait de rajouter dans /etc/postfix/main.cf dovecot_destination_recipient_limit = 1
et en effet avec cette option cela fonctionne.

par contre la doc de dovecot dit

This is not possible with SMTP when there are multiple recipients for a mail message. SMTP can only indicate successful delivery or failure for all or none of the recipients, creating the need for a separate queue to handle the failed recipients. LMTP, on the other hand, can indicate success or failure to the client for each recipient, allowing the client to handle the queueing instead. The client in this case would typically be an Internet-facing mail gateway. LMTP is not intended for use over wide area networks.

et http://wiki2.dovecot.org/HowTo/PostfixDovecotLMTP précise qu'il faut une version 2.0.X pour utiliser LMTP entre postfix et dovecot.

n'a tu pas intéret a utiliser la version2 de dovecot dans ce cas ?

après plusieurs lecture utiliser LMTP semble plus standard et bénéfique en performance.
----
From Aikadil

Quelques piste TO DO liste

&lt;code&gt;
A Faire:
-Fetchmail
permet de relever et de rapatrier les mails d'une boite extérieur vers un des compte mail du serveur
-LMTP entre Postfix et Dovecot semble plus efficace que le SMTP (voir message du dessus)
-Gestion multi compte
Plugins roundcube et Squirellmail pour faire du multicompte et ne pas devoir ce loguer/dé-loguer entre deux compte
-Certificat ssl/TLS pour faire du SMTPS et IMAPS
-Expliquer la méthode pour envoyer et reçevoir les mails du serveur depuis un MTU (thunderbird etc...) nom de serveur, port, mot de passe etc...
-Dspam en plus de Spamassassin, installer leurs base SQL
-MailZu
Gestion des quarantaines, Amavis 2.6 permet d'utiliser MailZu: permet alors d'allez lire les mails mis en quarantaine par l'antispam dans une interface etc...
-Policyd (service postfix)
Contrôler les user (mail/heures etc...) permet de limiter les I/O pour luter contre le mailBombing, DDOS...
-Vacation
gestion de l'auto réponse en cas d'absence.
-Expliquer les règles Iptables à rajouter pour que le serveur fonctionne en toutes sécurité
-Si le serveur SMTP n'arrive pas en délivrer le mail, plus tôt que de la placer en queue, le renvoyer avec un autres SMTP &quot;celui du FAI ou Google&quot;
-rajouter en plus de spamassassin pyzor et razor http://kent1.sklunk.net/spip.php?article113

A vérifier:
-plus d'explication au début, en particulier comment changer le hostname de son serveur
-plus d'explication sur le serveur DNS Bind9, son fonctionnement, pourquoi l'utiliser, vérifier si il fonctionne
-Perso je n'arrive pas a installer la gestion des Quotas ...
-Les header des mails que j'envoie et reçoit ont bien le tag X-Virus-Scanned mais pas le tag x-Spam-
&lt;/code&gt;
----
Salut,
Quelques remarques rapides:
- Dovecot2... Pour un serveur qui se doit d'être stable, j'ai choisi la prudence (et j'ai quand même déjà fait une entorse en proposant Dovecot 1.2.16. Mais c'est envisageable de proposer une solution pour les &quot;aventuriers&quot;...

- Je n'ai pas trouvé de plugin Multicompte pour Squirrelmail

- MailZu impose de stocker les mails dans une base sql, ça alourdi pas mal. Mais on peut aussi proposer une &quot;extension&quot;

- Vacation: Déjà pris en charge avec managesieves (fonctionne dans Squirrelmail et Roundcube).

- Iptables, pas de soucis, il faut faire une nouvelle page.

- Bind... Il y a une page complète sur le Wiki, à la rigueur mettre un lien qui renvoie dessus.

- Ton header sans X-spam est &quot;normal&quot; si le mail ne vient pas de l'extérieur.

Mon inquiétude, c'est d'avoir un Tuto trop lourd à force d'explications et précisions...

[[Utilisateur:Lol|Lol]] 3 mai 2011 à 01:30 (CDT)
----
From Aikadil
- Dovecot2 effectivement dovecote2 ne rentrera pas dans la debian avant au moins debian7, je n'aime pas non plus &quot;trop&quot; sortir de la stable, peut-on quand même utiliser LMTP avec la 1.2 ?
- multi-compte moi non plus uniquement pour roundcube, c'est déja celà.

Je pense qu'un tuto est justement la pour aider les utilisateurs de base à avancer, progresser et donc il vaut mieux en dire plus, que trop peut et les laisser faire leurs choix, plus tôt qu'un tuto totalement figer, avec le quel au final ils n'ont absolument rien compris.

Il serait peut-être bon avant d'ajouter de nouvelles fonctions dans le tuto, de le relire complètement et vérifier si tout fonctionne, par exemple une soirée sous sync.in ?

-rajout de pyzor et razor à la TODO http://kent1.sklunk.net/spip.php?article113
---
From Aikadil

sortie de Roundcube 0.6</text>
      <sha1>dikze0oaakdyy7tk16vznkdh61nfou3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Installer depuis une clé USB</title>
    <ns>1</ns>
    <id>1291</id>
    <revision>
      <id>5397</id>
      <timestamp>2013-09-11T11:04:25Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <comment>Page créée avec « Salut,  Il conviendrait de modifier &quot;businesscard&quot; par &quot;netinstall&quot; qui ne permet plus de choisir, d'ailleurs, entre stable, testing et unstable ;) »</comment>
      <text xml:space="preserve" bytes="147">Salut,

Il conviendrait de modifier &quot;businesscard&quot; par &quot;netinstall&quot; qui ne permet plus de choisir, d'ailleurs, entre stable, testing et unstable ;)</text>
      <sha1>4nvlt0xq28r39041doqrsjn3j8lz0lq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5399</id>
      <parentid>5397</parentid>
      <timestamp>2013-09-14T13:08:24Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="496">Salut,

Il conviendrait de modifier &quot;businesscard&quot; par &quot;netinstall&quot; qui ne permet plus de choisir, d'ailleurs, entre stable, testing et unstable ;)

-----

Sauf erreur de ma part, la netinstall permet toujours le choix entre les trois branches à condition de choisir l'installation « en mode expert ».

Je vais vérifier de mon côté avant d'affirmer quoi que ce soit dans l'article.

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 14 septembre 2013 à 15:08 (CEST)</text>
      <sha1>hit4zvohswlm89ufnh01636hrlrz9hr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5402</id>
      <parentid>5399</parentid>
      <timestamp>2013-09-14T16:18:49Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="792">Salut,

Il conviendrait de modifier &quot;businesscard&quot; par &quot;netinstall&quot; qui ne permet plus de choisir, d'ailleurs, entre stable, testing et unstable ;)

-----

Sauf erreur de ma part, la netinstall permet toujours le choix entre les trois branches à condition de choisir l'installation « en mode expert ».

Je vais vérifier de mon côté avant d'affirmer quoi que ce soit dans l'article.

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 14 septembre 2013 à 15:08 (CEST)

-----

C'est toi qui a raison, la netinstall Wheezy n'installe bien que la version stable, le choix n'est pas proposé même en mode expert.

J'ai mis l'article à jour en conséquence.

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 14 septembre 2013 à 18:18 (CEST)</text>
      <sha1>7lpsil8ltydst7mnehe91rpx8lm3stj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Installer les pilotes nVidia privateur</title>
    <ns>1</ns>
    <id>243</id>
    <revision>
      <id>1061</id>
      <timestamp>2010-02-09T11:01:59Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <comment>Page créée avec « Salut,  Je viens de chercher le mot privateur dans le Littré, il ne connait pas ? ~~~~ »</comment>
      <text xml:space="preserve" bytes="161">Salut,

Je viens de chercher le mot privateur dans le Littré, il ne connait pas ? [[Utilisateur:Ggoodluck47|Amicalement, Gerard]] 9 février 2010 à 11:01 (UTC)</text>
      <sha1>8c9k05cf6b0diq6wgyai6jnw9s5n5zg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1062</id>
      <parentid>1061</parentid>
      <timestamp>2010-02-09T16:17:14Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="540">Salut,

Je viens de chercher le mot privateur dans le Littré, il ne connait pas ? [[Utilisateur:Ggoodluck47|Amicalement, Gerard]] 9 février 2010 à 11:01 (UTC)

Salut, c'est une invention de Richard Stallman, c'est plutôt récent [http://linuxfr.org/~nh2/27826.html] L'expression n'est pas validée par les classiques, mais commence à être courante, même si elle est controversée. Je suppose que c'est une question d'habitude, je n'aime pas beaucoup car je ne connaissais pas... [[Utilisateur:Lol|Lol]] 9 février 2010 à 16:17 (UTC)</text>
      <sha1>nh4s5tp9izqbto2x4e63xtrvm402oa1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1063</id>
      <parentid>1062</parentid>
      <timestamp>2010-02-09T17:39:31Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <text xml:space="preserve" bytes="648">Salut,

Je viens de chercher le mot privateur dans le Littré, il ne connait pas ? [[Utilisateur:Ggoodluck47|Amicalement, Gerard]] 9 février 2010 à 11:01 (UTC)

Salut, c'est une invention de Richard Stallman, c'est plutôt récent [http://linuxfr.org/~nh2/27826.html] L'expression n'est pas validée par les classiques, mais commence à être courante, même si elle est controversée. Je suppose que c'est une question d'habitude, je n'aime pas beaucoup car je ne connaissais pas... [[Utilisateur:Lol|Lol]] 9 février 2010 à 16:17 (UTC)
Depuis quand Richard Stallman s'exprime-t-il en français ? [[Utilisateur:Ggoodluck47|Amicalement, Gerard]]</text>
      <sha1>61rmg7ucycot6pohab65ez1m7mxmdh8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1065</id>
      <parentid>1063</parentid>
      <timestamp>2010-02-10T16:04:27Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <text xml:space="preserve" bytes="2161">Salut,

Je viens de chercher le mot privateur dans le Littré, il ne connait pas ? [[Utilisateur:Ggoodluck47|Amicalement, Gerard]] 9 février 2010 à 11:01 (UTC)

Salut, c'est une invention de Richard Stallman, c'est plutôt récent [http://linuxfr.org/~nh2/27826.html] L'expression n'est pas validée par les classiques, mais commence à être courante, même si elle est controversée. Je suppose que c'est une question d'habitude, je n'aime pas beaucoup car je ne connaissais pas... [[Utilisateur:Lol|Lol]] 9 février 2010 à 16:17 (UTC)
Depuis quand Richard Stallman s'exprime-t-il en français ? [[Utilisateur:Ggoodluck47|Amicalement, Gerard]]

[http://atilf.atilf.fr/dendien/scripts/tlfiv4/showps.exe?p=combi.htm;java=no; L'ATILF] connait :

Privateur, -trice, adj., (dans l'article PRIVER, verbe trans.)
Fam. [En tournure nég.] Ne pas se priver de + inf. Ne pas manquer de, ne pas s'abstenir de. Les clients de l'étude ne se gênaient pas plus devant lui qu'on ne se prive de parler en présence d'une douzaine d'huîtres (ABOUT, Nez notaire, 1862, p.122). Elle me rappelait que je me voyais déjà pape, académicien, empereur! Et comme je n'étais rien de tout ça: il y avait de quoi rire. Elle ne s'en privait pas et finalement elle m'a foutu dehors (QUENEAU, Loin Rueil, 1944, p.148).
REM. Privateur, -trice, adj., rare. Qui prive. Doctrine du péché: étant capable de tout le mal n'en rien faire, et voilà le bien; volonté privatrice je n'aime point cela (GIDE, Réflex. litt. et mor., 1897, p.414).
Prononc. et Orth.: [], (il) prive []. Att. ds Ac. dep. 1694. Étymol. et Hist.1. Ca 1300 «ôter à quelqu'un, à quelque chose un bien, un avantage» (Gloss. rom., ms. Bibl. royale, 9543 ds T.-L.); 2. 1538 se priver de «renoncer à l'usage de quelque jouissance» (EST., s.v. praecludere); 1819 se priver «s'imposer des privations» (BOISTE). Empr. au lat. privare «écarter de, ôter de, dépouiller». Fréq. abs. littér.: 1357. Fréq. rel. littér.: XIXes.: a) 2142, b) 1595; XXes.: a) 1631, b) 2105.

Nous voila donc privés de liberté...--[[Utilisateur:Le fada|le_fada... toujours à l&amp;#39;ouest !]] 10 février 2010 à 16:04 (UTC)</text>
      <sha1>g0p64k28xd2l6ykq2psbwc4olp18gvs</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1066</id>
      <parentid>1065</parentid>
      <timestamp>2010-02-10T16:13:42Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <text xml:space="preserve" bytes="1674">Salut,

Je viens de chercher le mot privateur dans le Littré, il ne connait pas ? [[Utilisateur:Ggoodluck47|Amicalement, Gerard]] 9 février 2010 à 11:01 (UTC)

Salut, c'est une invention de Richard Stallman, c'est plutôt récent [http://linuxfr.org/~nh2/27826.html] L'expression n'est pas validée par les classiques, mais commence à être courante, même si elle est controversée. Je suppose que c'est une question d'habitude, je n'aime pas beaucoup car je ne connaissais pas... [[Utilisateur:Lol|Lol]] 9 février 2010 à 16:17 (UTC)
Depuis quand Richard Stallman s'exprime-t-il en français ? [[Utilisateur:Ggoodluck47|Amicalement, Gerard]]

[http://atilf.atilf.fr/dendien/scripts/tlfiv4/showps.exe?p=combi.htm;java=no; L'ATILF] connait :

Privateur, -trice, adj., (dans l'article PRIVER, verbe trans.)

REM. Privateur, -trice, adj., rare. Qui prive. Doctrine du péché: étant capable de tout le mal n'en rien faire, et voilà le bien; volonté privatrice je n'aime point cela (GIDE, Réflex. litt. et mor., 1897, p.414).
Prononc. et Orth.: [], (il) prive []. Att. ds Ac. dep. 1694. Étymol. et Hist.1. Ca 1300 «ôter à quelqu'un, à quelque chose un bien, un avantage» (Gloss. rom., ms. Bibl. royale, 9543 ds T.-L.); 2. 1538 se priver de «renoncer à l'usage de quelque jouissance» (EST., s.v. praecludere); 1819 se priver «s'imposer des privations» (BOISTE). Empr. au lat. privare «écarter de, ôter de, dépouiller». Fréq. abs. littér.: 1357. Fréq. rel. littér.: XIXes.: a) 2142, b) 1595; XXes.: a) 1631, b) 2105.

Nous voila donc privés de liberté...--[[Utilisateur:Le fada|le_fada... toujours à l&amp;#39;ouest !]] 10 février 2010 à 16:04 (UTC)</text>
      <sha1>8olk1pzvmd6az7t3jccrbummxy4e5po</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Le fichier interfaces</title>
    <ns>1</ns>
    <id>214</id>
    <revision>
      <id>818</id>
      <timestamp>2010-02-03T19:08:49Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « Catégorie Internet ? ~~~~ »</comment>
      <text xml:space="preserve" bytes="76">Catégorie Internet ? [[Utilisateur:Lol|Lol]] 3 février 2010 à 19:08 (UTC)</text>
      <sha1>iiyr1sygqw47ftzx0mwc5ar32g5j7k4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>819</id>
      <parentid>818</parentid>
      <timestamp>2010-02-03T19:09:25Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="98">Catégorie Internet ? en attendant mieux... [[Utilisateur:Lol|Lol]] 3 février 2010 à 19:08 (UTC)</text>
      <sha1>d93pcyuv6kqe41rks2f61dyhyjeittb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Le partitionnement</title>
    <ns>1</ns>
    <id>621</id>
    <revision>
      <id>2576</id>
      <timestamp>2010-12-27T09:57:29Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>Page créée avec « « La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage. »  Je rajouterais bien « et de la religion de l'administrateur » @@SIG@@ »</comment>
      <text xml:space="preserve" bytes="169">« La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage. »

Je rajouterais bien « et de la religion de l'administrateur »
@@SIG@@</text>
      <sha1>f1pa5gndw4vhhsu2k9satv9uk94bz26</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2597</id>
      <parentid>2576</parentid>
      <timestamp>2010-12-28T09:44:19Z</timestamp>
      <contributor>
        <username>Tophe</username>
        <id>26</id>
      </contributor>
      <text xml:space="preserve" bytes="964">« La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage. »

Je rajouterais bien « et de la religion de l'administrateur »
@@SIG@@


Dans le chapitre &quot;Généralités&quot;, 
bien que ce ne soit que des généralités et que des exemples suivront, il me semble que, parce que le débutant est débordé et va avoir une lecture sélective ou en diagonale, le paragraphe suivant devrait être modifié ainsi de manière à être plus exhaustif :

Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, une simple partition / (plus celle d'échange) est sans doute la solution la plus simple.
Toutefois le fait que les données personnelles ne soient pas séparées du système pourrait être un inconvénient. Il est donc donc généralement conseillé, en plus de la partition d'échange (swap) de créer une partition / ET une partition /home

--[[Utilisateur:Tophe|Tophe]] 28 décembre 2010 à 03:44 (CST)</text>
      <sha1>50ij3j4i70oa8ljhnt34c40p7v5z5ca</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5495</id>
      <parentid>2597</parentid>
      <timestamp>2013-12-14T07:50:13Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <text xml:space="preserve" bytes="1269">« La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage. »

Je rajouterais bien « et de la religion de l'administrateur »
@@SIG@@


Dans le chapitre &quot;Généralités&quot;, 
bien que ce ne soit que des généralités et que des exemples suivront, il me semble que, parce que le débutant est débordé et va avoir une lecture sélective ou en diagonale, le paragraphe suivant devrait être modifié ainsi de manière à être plus exhaustif :

Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, une simple partition / (plus celle d'échange) est sans doute la solution la plus simple.
Toutefois le fait que les données personnelles ne soient pas séparées du système pourrait être un inconvénient. Il est donc donc généralement conseillé, en plus de la partition d'échange (swap) de créer une partition / ET une partition /home

--[[Utilisateur:Tophe|Tophe]] 28 décembre 2010 à 03:44 (CST)

A savoir: Seules les partitions primaires peuvent contenir la partition d'amorçage du système d'exploitation Windows. Ce n'est pas le cas pour Debian dont le système d'amorçage peut très bien s'installer sur une partition étendue.

Ceci n'était pas tout a fait exact mais de là à le supprimer ?</text>
      <sha1>tc6uj6fpsz08aet19tydqbmnwgs9dhg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5496</id>
      <parentid>5495</parentid>
      <timestamp>2013-12-14T14:36:42Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1447">« La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage. »

Je rajouterais bien « et de la religion de l'administrateur »
@@SIG@@


Dans le chapitre &quot;Généralités&quot;, 
bien que ce ne soit que des généralités et que des exemples suivront, il me semble que, parce que le débutant est débordé et va avoir une lecture sélective ou en diagonale, le paragraphe suivant devrait être modifié ainsi de manière à être plus exhaustif :

Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, une simple partition / (plus celle d'échange) est sans doute la solution la plus simple.
Toutefois le fait que les données personnelles ne soient pas séparées du système pourrait être un inconvénient. Il est donc donc généralement conseillé, en plus de la partition d'échange (swap) de créer une partition / ET une partition /home

--[[Utilisateur:Tophe|Tophe]] 28 décembre 2010 à 03:44 (CST)

A savoir: Seules les partitions primaires peuvent contenir la partition d'amorçage du système d'exploitation Windows. Ce n'est pas le cas pour Debian dont le système d'amorçage peut très bien s'installer sur une partition étendue.

Ceci n'était pas tout a fait exact mais de là à le supprimer ?

--[[Utilisateur:MicP|MicP]] ([[Discussion utilisateur:MicP|discussion]]) 14 décembre 2013 à 15:36 (CET)
Je viens donc de remettre la phrase que j'avais supprimé un peu vite.</text>
      <sha1>t042w78bj29tghaxa689uo8fqxfy3ok</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Liens GNU/Linux Free Software OpenSource</title>
    <ns>1</ns>
    <id>623</id>
    <revision>
      <id>2599</id>
      <timestamp>2010-12-28T10:07:16Z</timestamp>
      <contributor>
        <username>Tophe</username>
        <id>26</id>
      </contributor>
      <comment>Page créée avec « Je suis étonné que dans le paragraphe GNU/Linux, distributions Debian (en français) nos amis de Debian-Facile ne soient pas cités. Ils possèdent un wiki très complémen... »</comment>
      <text xml:space="preserve" bytes="282">Je suis étonné que dans le paragraphe GNU/Linux, distributions Debian (en français) nos amis de Debian-Facile ne soient pas cités.
Ils possèdent un wiki très complémentaire à celui-ci : http://debian-facile.org/
--[[Utilisateur:Tophe|Tophe]] 28 décembre 2010 à 04:07 (CST)</text>
      <sha1>kiq044k1d8o7sloounmij0bm0jrsqlk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2602</id>
      <parentid>2599</parentid>
      <timestamp>2010-12-28T10:25:17Z</timestamp>
      <contributor>
        <username>Tophe</username>
        <id>26</id>
      </contributor>
      <text xml:space="preserve" bytes="414">Je suis étonné que dans le paragraphe GNU/Linux, distributions Debian (en français) nos amis de Debian-Facile ne soient pas cités.
Ils possèdent un wiki très complémentaire à celui-ci : http://debian-facile.org/
--[[Utilisateur:Tophe|Tophe]] 28 décembre 2010 à 04:07 (CST)

J'ai remplacé Sidux par Aptosid et rajouté le forum-fr de Gérard --[[Utilisateur:Tophe|Tophe]] 28 décembre 2010 à 04:25 (CST)</text>
      <sha1>sbmhb79yhfyu91dsq9qqgwcpwbo06p2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Manuel d'installation</title>
    <ns>1</ns>
    <id>63</id>
    <revision>
      <id>242</id>
      <timestamp>2010-01-24T17:53:02Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « Disque dur.      * Organiser ses partitions primaires, primaire étendue, logiques.   Il serait bon de placer un lien où ce point précis est expliqué en détail. ---- »</comment>
      <text xml:space="preserve" bytes="169">Disque dur.

    * Organiser ses partitions primaires, primaire étendue, logiques. 

Il serait bon de placer un lien où ce point précis est expliqué en détail.
----</text>
      <sha1>rlyxc8otj8x6wk0398bgv0mejir2df2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Nettoyer sa Debian</title>
    <ns>1</ns>
    <id>967</id>
    <revision>
      <id>3960</id>
      <timestamp>2012-03-16T18:45:50Z</timestamp>
      <contributor>
        <username>Ginkgo biloba</username>
        <id>22</id>
      </contributor>
      <comment>problème avec une commande du wiki (nettoyer sa debian)</comment>
      <text xml:space="preserve" bytes="1160">Bonjour,
Je viens d'avoir un petit problème avec une commande du tuto sur une testing/xheezy :

root@debian:/home/ginkgobiloba# dpkg -P $(dpkg -l | awk '$1~/^rc$/{print $2}')
dpkg : erreur : --purge a besoin d'au moins un nom de paquet comme paramètre

Utiliser « dpkg --help » pour une obtenir une aide sur l'installation et la désinstallation des paquets [*] ;
Utiliser « dselect » ou « aptitude » pour gérer les paquets de manière
plus conviviale ;
Utiliser « dpkg -Dhelp » pour obtenir une liste des valeurs drapeaux de débogage ;
Utiliser « dpkg --force-help » pour consulter la liste des options de forçage ;
Utiliser « dpkg-deb --help » pour obtenir une aide sur la manipulation des fichiers *.deb ;

Les options marquées d'un [*] affichent beaucoup d'informations - tubez-les à travers « less » ou « more ».

J'ai déjà utilisé cette commande et elle fonctionnait, mais c'est la première fois que je la teste avec wheezy.
Je me suis demandé si la syntaxe a changé avec wheezy....
J'ai installé original-awk et dpkg-awk (on ne sait jamais) : même message.
Je n'ai pas d'explication.

Ginkgo biloba</text>
      <sha1>guqixwdezzh0ejywhzidx0lxlxmsprx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3961</id>
      <parentid>3960</parentid>
      <timestamp>2012-03-16T18:47:13Z</timestamp>
      <contributor>
        <username>Ginkgo biloba</username>
        <id>22</id>
      </contributor>
      <text xml:space="preserve" bytes="1164">Bonjour,
Je viens d'avoir un petit problème avec une commande du tuto sur une testing/xheezy :


root@debian:/home/ginkgobiloba# dpkg -P $(dpkg -l | awk '$1~/^rc$/{print $2}')

dpkg : erreur : --purge a besoin d'au moins un nom de paquet comme paramètre


Utiliser « dpkg --help » pour une obtenir une aide sur l'installation et la désinstallation des paquets [*] ;
Utiliser « dselect » ou « aptitude » pour gérer les paquets de manière
plus conviviale ;
Utiliser « dpkg -Dhelp » pour obtenir une liste des valeurs drapeaux de débogage ;
Utiliser « dpkg --force-help » pour consulter la liste des options de forçage ;
Utiliser « dpkg-deb --help » pour obtenir une aide sur la manipulation des fichiers *.deb ;

Les options marquées d'un [*] affichent beaucoup d'informations - tubez-les à travers « less » ou « more ».


J'ai déjà utilisé cette commande et elle fonctionnait, mais c'est la première fois que je la teste avec wheezy.
Je me suis demandé si la syntaxe a changé avec wheezy....
J'ai installé original-awk et dpkg-awk (on ne sait jamais) : même message.
Je n'ai pas d'explication.

Ginkgo biloba</text>
      <sha1>38nl75estixhbf9ehrvp62cyr3m5bvl</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3962</id>
      <parentid>3961</parentid>
      <timestamp>2012-03-16T19:35:59Z</timestamp>
      <contributor>
        <username>Ginkgo biloba</username>
        <id>22</id>
      </contributor>
      <text xml:space="preserve" bytes="1251">Bonjour,
Je viens d'avoir un petit problème avec une commande du tuto sur une testing/xheezy :


root@debian:/home/ginkgobiloba# dpkg -P $(dpkg -l | awk '$1~/^rc$/{print $2}')

dpkg : erreur : --purge a besoin d'au moins un nom de paquet comme paramètre


Utiliser « dpkg --help » pour une obtenir une aide sur l'installation et la désinstallation des paquets [*] ;
Utiliser « dselect » ou « aptitude » pour gérer les paquets de manière
plus conviviale ;
Utiliser « dpkg -Dhelp » pour obtenir une liste des valeurs drapeaux de débogage ;
Utiliser « dpkg --force-help » pour consulter la liste des options de forçage ;
Utiliser « dpkg-deb --help » pour obtenir une aide sur la manipulation des fichiers *.deb ;

Les options marquées d'un [*] affichent beaucoup d'informations - tubez-les à travers « less » ou « more ».


J'ai déjà utilisé cette commande et elle fonctionnait, mais c'est la première fois que je la teste avec wheezy.
Je me suis demandé si la syntaxe a changé avec wheezy....
J'ai installé original-awk et dpkg-awk (on ne sait jamais) : même message.
Je n'ai pas d'explication.

Ginkgo biloba



Je viens de booter sur une stable/squeeze : la commande a parfaitement fonctionné.</text>
      <sha1>q0zfqt8tam9u4tle2ckjnfy0v7hfozn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3963</id>
      <parentid>3962</parentid>
      <timestamp>2012-03-16T19:54:54Z</timestamp>
      <contributor>
        <username>Ginkgo biloba</username>
        <id>22</id>
      </contributor>
      <text xml:space="preserve" bytes="1361">le 16/03/12
Bonjour,
Je viens d'avoir un petit problème avec une commande du tuto sur une testing/xheezy :


root@debian:/home/ginkgobiloba# dpkg -P $(dpkg -l | awk '$1~/^rc$/{print $2}')

dpkg : erreur : --purge a besoin d'au moins un nom de paquet comme paramètre


Utiliser « dpkg --help » pour une obtenir une aide sur l'installation et la désinstallation des paquets [*] ;
Utiliser « dselect » ou « aptitude » pour gérer les paquets de manière
plus conviviale ;
Utiliser « dpkg -Dhelp » pour obtenir une liste des valeurs drapeaux de débogage ;
Utiliser « dpkg --force-help » pour consulter la liste des options de forçage ;
Utiliser « dpkg-deb --help » pour obtenir une aide sur la manipulation des fichiers *.deb ;

Les options marquées d'un [*] affichent beaucoup d'informations - tubez-les à travers « less » ou « more ».


J'ai déjà utilisé cette commande et elle fonctionnait, mais c'est la première fois que je la teste avec wheezy.
Je me suis demandé si la syntaxe a changé avec wheezy....
J'ai installé original-awk et dpkg-awk (on ne sait jamais) : même message.
Je n'ai pas d'explication.

Ginkgo biloba



Edit n°1 : Je viens de booter sur une stable/squeeze : la commande a parfaitement fonctionné.
Edit n°2 : En bootant sur une sid (à jour) j'ai le même message qu'avec la testing</text>
      <sha1>66xqkh7325zn8xhcqv22si20dm4esxm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Ntfs</title>
    <ns>1</ns>
    <id>112</id>
    <revision>
      <id>486</id>
      <timestamp>2010-01-29T08:06:33Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <comment>Page créée avec « Salut,  La variant de fstab defaults,rw a-t-elle été testée ? A mon avis l'user &quot;lambda&quot; n'écriras pas sur sa partition NT&amp;fesses »</comment>
      <text xml:space="preserve" bytes="133">Salut,

La variant de fstab defaults,rw a-t-elle été testée ? A mon avis l'user &quot;lambda&quot; n'écriras pas sur sa partition NT&amp;fesses</text>
      <sha1>kt6ynacwsegjylh073f7usnn4muwz6p</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>496</id>
      <parentid>486</parentid>
      <timestamp>2010-01-29T11:41:29Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="466">Salut,

La variant de fstab defaults,rw a-t-elle été testée ? A mon avis l'user &quot;lambda&quot; n'écriras pas sur sa partition NT&amp;fesses

----

Pardon??? depuis quand un utilisateur n'écrit pas sur son disque dur externe, celui de ses amis...?  Ou même sur sas partition  windows?

Alors là, jamais entendu un truc pareil... et non, on ne conseille pas à ses amis de formater son disque dur en fat32...

Et puis, signe tes commentaires!! [[Utilisateur:L0u!$|L0u!$]]</text>
      <sha1>ptn8pi8obsyn3nxi46j62tw93b60ap0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>500</id>
      <parentid>496</parentid>
      <timestamp>2010-01-29T12:25:01Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="510">Salut,

La variante de fstab defaults,rw a-t-elle été testée ? A mon avis l'user &quot;lambda&quot; n'écriras pas sur sa partition NT&amp;fesses  [[Utilisateur:Ggoodluck47|Ggoodluck47]]



----

Pardon??? depuis quand un utilisateur n'écrit pas sur son disque dur externe, celui de ses amis...?  Ou même sur sas partition  windows?

Alors là, jamais entendu un truc pareil... et non, on ne conseille pas à ses amis de formater son disque dur en fat32...

Et puis, signe tes commentaires!! [[Utilisateur:L0u!$|L0u!$]]</text>
      <sha1>4law7zazhgqkb5yiuzv3ehn8i5jko1h</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>503</id>
      <parentid>500</parentid>
      <timestamp>2010-01-29T12:40:30Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <text xml:space="preserve" bytes="655">Salut,

La variante de fstab defaults,rw a-t-elle été testée ? A mon avis l'user &quot;lambda&quot; n'écriras pas sur sa partition NT&amp;fesses  [[Utilisateur:Ggoodluck47|Ggoodluck47]]



----

Pardon??? depuis quand un utilisateur n'écrit pas sur son disque dur externe, celui de ses amis...?  Ou même sur sas partition  windows?

Alors là, jamais entendu un truc pareil... et non, on ne conseille pas à ses amis de formater son disque dur en fat32...

Et puis, signe tes commentaires!! [[Utilisateur:L0u!$|L0u!$]]
 
Demander si l'assertion a été vérifiée n'est pas une insulte ;) Un simple oui ou non aurait suffi  [[Utilisateur:Ggoodluck47|Ggoodluck47]]</text>
      <sha1>d8s80359ro1ayke0cqgvymdky0do9a7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>550</id>
      <parentid>503</parentid>
      <timestamp>2010-01-30T10:32:50Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <text xml:space="preserve" bytes="813">Salut,

La variante de fstab defaults,rw a-t-elle été testée ? A mon avis l'user &quot;lambda&quot; n'écriras pas sur sa partition NT&amp;fesses  [[Utilisateur:Ggoodluck47|Ggoodluck47]]



----

Pardon??? depuis quand un utilisateur n'écrit pas sur son disque dur externe, celui de ses amis...?  Ou même sur sas partition  windows?

Alors là, jamais entendu un truc pareil... et non, on ne conseille pas à ses amis de formater son disque dur en fat32...

Et puis, signe tes commentaires!! [[Utilisateur:L0u!$|L0u!$]]
 
Demander si l'assertion a été vérifiée n'est pas une insulte ;) Un simple oui ou non aurait suffi  [[Utilisateur:Ggoodluck47|Ggoodluck47]]
----
Je pense que cette page serait un bon endroit pour introduire les UUID et autres LABEL ;)

[[Utilisateur:BBT1|BBT1]] 30 janvier 2010 à 10:32 (UTC)
----</text>
      <sha1>py31jgsf8qrrnhnv07s45l0cups5kn4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>563</id>
      <parentid>550</parentid>
      <timestamp>2010-01-30T14:56:55Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="804">Salut,

La variante de fstab defaults,rw a-t-elle été testée ? A mon avis l'user &quot;lambda&quot; n'écriras pas sur sa partition NT&amp;fesses  [[Utilisateur:Ggoodluck47|Ggoodluck47]]



----

Un utilisateur lambda voudra sûrement ajouter des fichiers sur son disque du externe formaté en ntfs... ( désolé, j'étais énervé :) ) [[Utilisateur:L0u!$|L0u!$]]
----
Demander si l'assertion a été vérifiée n'est pas une insulte ;) Un simple oui ou non aurait suffi  [[Utilisateur:Ggoodluck47|Ggoodluck47]]
----
Je pense que cette page serait un bon endroit pour introduire les UUID et autres LABEL ;)

[[Utilisateur:BBT1|BBT1]] 30 janvier 2010 à 10:32 (UTC)
----
Je pense que la page [[fstab]] serait une meilleure idée. Il faudrait juste qu'elle existe :p ( je pense que je vais m'en occuper un de ces 4 )</text>
      <sha1>8zghu30sc2st9oxgnu3fujwnkhf1b5p</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>596</id>
      <parentid>563</parentid>
      <timestamp>2010-01-31T08:30:21Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="1143">Salut, 

La variante de fstab defaults,rw a-t-elle été testée&amp;nbsp;? A mon avis l'user &quot;lambda&quot; n'écriras pas sur sa partition NT&amp;amp;fesses [[Utilisateur:Ggoodluck47|Ggoodluck47]] 

&lt;br&gt; 

----

Un utilisateur lambda voudra sûrement ajouter des fichiers sur son disque du externe formaté en ntfs... ( désolé, j'étais énervé&amp;nbsp;:) ) [[Utilisateur:L0u!$|L0u!$]] 

----

Demander si l'assertion a été vérifiée n'est pas une insulte&amp;nbsp;;) Un simple oui ou non aurait suffi [[Utilisateur:Ggoodluck47|Ggoodluck47]] 

----

Je pense que cette page serait un bon endroit pour introduire les UUID et autres LABEL&amp;nbsp;;) 

[[Utilisateur:BBT1|BBT1]] 30 janvier 2010 à 10:32 (UTC) 

----

Je pense que la page [[Fstab]] serait une meilleure idée. Il faudrait juste qu'elle existe&amp;nbsp;:p ( je pense que je vais m'en occuper un de ces 4 )

----

J'ajoute les lignes fstab de ggoodluck47 (posté dans forum.debian-fr). Marrant, c'est un système de fichier qui n'est même pas &quot;de chez nous&quot;, et c'est certainement un de ceux qui fera couler le plus d'encre...

Bonne idée l'article fstab (qui a écrit ça ?)
[[Utilisateur:Lol|Lol]]</text>
      <sha1>fvcohn46hrhelkcz0b35b5lqo5il2ix</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>598</id>
      <parentid>596</parentid>
      <timestamp>2010-01-31T09:40:15Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="1266">Salut, 

La variante de fstab defaults,rw a-t-elle été testée&amp;nbsp;? A mon avis l'user &quot;lambda&quot; n'écriras pas sur sa partition NT&amp;amp;fesses [[Utilisateur:Ggoodluck47|Ggoodluck47]] 

&lt;br&gt; 

----

Un utilisateur lambda voudra sûrement ajouter des fichiers sur son disque du externe formaté en ntfs... ( désolé, j'étais énervé&amp;nbsp;:) ) [[Utilisateur:L0u!$|L0u!$]] 

----

Demander si l'assertion a été vérifiée n'est pas une insulte&amp;nbsp;;) Un simple oui ou non aurait suffi [[Utilisateur:Ggoodluck47|Ggoodluck47]] 

----

Je pense que cette page serait un bon endroit pour introduire les UUID et autres LABEL&amp;nbsp;;) 

[[Utilisateur:BBT1|BBT1]] 30 janvier 2010 à 10:32 (UTC) 

----

Je pense que la page [[Fstab]] serait une meilleure idée. Il faudrait juste qu'elle existe&amp;nbsp;:p ( je pense que je vais m'en occuper un de ces 4 ) [[Utilisateur:L0u!$|L0u!$]]

----

J'ajoute les lignes fstab de ggoodluck47 (posté dans forum.debian-fr). Marrant, c'est un système de fichier qui n'est même pas &quot;de chez nous&quot;, et c'est certainement un de ceux qui fera couler le plus d'encre...

Bonne idée l'article fstab (qui a écrit ça ?)
[[Utilisateur:Lol|Lol]]
----
C'était moi... désolé, j'avais zappé de mettre mon nom :x [[Utilisateur:L0u!$|L0u!$]]</text>
      <sha1>ritykv0yccrfcegzfwrrgvsukhrum3a</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:OpenLDAP</title>
    <ns>1</ns>
    <id>1359</id>
    <revision>
      <id>5880</id>
      <timestamp>2014-10-14T08:56:29Z</timestamp>
      <contributor>
        <username>Reynum</username>
        <id>305</id>
      </contributor>
      <comment>OpenLDAP</comment>
      <text xml:space="preserve" bytes="1045">Je viens de faire ce tutoriel (merci à son auteur)

J'ai eu quelques problèmes :

Dans les fichiers 
* olc-mod1.ldif
* tree.ldif
* myuser.ldif

Il faut une ligne vide avant le deuxième dn:

exemple pour olc-mod1.ldif:

&lt;code&gt;
# 1.
dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: stats

# 2.1.
dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: uid eq
-
# 2.2.
add: olcDbIndex
olcDbIndex: cn eq
-
# 2.3.
add: olcDbIndex
olcDbIndex: ou eq
-
# 2.4.
add: olcDbIndex
olcDbIndex: dc eq
&lt;/code&gt;

Sinon on se retrouve avec un message du type :

&lt;code&gt;
ldapmodify -QY EXTERNAL -H ldapi:/// -f adduser.ldif
ldapmodify: wrong attributeType at line 5, entry &quot;cn=config&quot;
&lt;/code&gt;

Ensuite quand on veut visualiser les modifications apportées pour les Organizational Unit (Utilisateurs et Groupes)
La commande ldapsearch échoue:
&lt;code&gt;
ldapsearch -xLLL
No such object (32)
&lt;/code&gt;

Par contre slapcat permet de voir les modifications. &lt;br /&gt;
Idem pour la commande:
&lt;code&gt;
ldapsearch -xLLL uid=myuser
&lt;/code&gt;</text>
      <sha1>olv3p2oxzt1zlcc5l1wg9j0oup7oyoh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5881</id>
      <parentid>5880</parentid>
      <timestamp>2014-10-14T09:04:59Z</timestamp>
      <contributor>
        <username>Reynum</username>
        <id>305</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1303">Je viens de faire ce tutoriel (merci à son auteur)

J'ai eu quelques problèmes :

Dans les fichiers 
* olc-mod1.ldif
* tree.ldif
* myuser.ldif

Il faut une ligne vide avant le deuxième dn:

exemple pour olc-mod1.ldif:

&lt;code&gt;
# 1.
dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: stats

# 2.1.
dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: uid eq
-
# 2.2.
add: olcDbIndex
olcDbIndex: cn eq
-
# 2.3.
add: olcDbIndex
olcDbIndex: ou eq
-
# 2.4.
add: olcDbIndex
olcDbIndex: dc eq
&lt;/code&gt;

Sinon on se retrouve avec un message du type :

&lt;code&gt;
ldapmodify -QY EXTERNAL -H ldapi:/// -f olc-mod1.ldif
ldapmodify: wrong attributeType at line 5, entry &quot;cn=config&quot;
&lt;/code&gt;

Ensuite quand on veut visualiser les modifications apportées pour les Organizational Unit (Utilisateurs et Groupes)
La commande ldapsearch échoue:
&lt;code&gt;
ldapsearch -xLLL
No such object (32)
&lt;/code&gt;

Par contre slapcat permet de voir les modifications. &lt;br /&gt;
Idem pour la commande:
&lt;code&gt;
ldapsearch -xLLL uid=myuser
&lt;/code&gt;

Et je n'arrive pas à me connecter au serveur LDAP (qui est sur un serveur OVH) de mon client thunderbird (mais j'arrive à me connecter sur phpldapadmin), ce serait pas mal d'ajouter une section pour expliquer comment utiliser le LDAP fraîchement crée.</text>
      <sha1>01x0niswpu4lxv7hg10fq7vultlmyao</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5882</id>
      <parentid>5881</parentid>
      <timestamp>2014-10-14T09:07:52Z</timestamp>
      <contributor>
        <username>Reynum</username>
        <id>305</id>
      </contributor>
      <text xml:space="preserve" bytes="1419">Je viens de faire ce tutoriel (merci à son auteur)

J'ai eu quelques problèmes :

Dans les fichiers 
* olc-mod1.ldif
* tree.ldif
* myuser.ldif

Il faut une ligne vide avant le deuxième dn:

exemple pour olc-mod1.ldif:

&lt;code&gt;
# 1.
dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: stats

# 2.1.
dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: uid eq
-
# 2.2.
add: olcDbIndex
olcDbIndex: cn eq
-
# 2.3.
add: olcDbIndex
olcDbIndex: ou eq
-
# 2.4.
add: olcDbIndex
olcDbIndex: dc eq
&lt;/code&gt;

Sinon on se retrouve avec un message du type :

&lt;code&gt;
ldapmodify -QY EXTERNAL -H ldapi:/// -f olc-mod1.ldif
ldapmodify: wrong attributeType at line 5, entry &quot;cn=config&quot;
&lt;/code&gt;

Ensuite quand on veut visualiser les modifications apportées pour les Organizational Unit (Utilisateurs et Groupes)
La commande ldapsearch échoue:
&lt;code&gt;
ldapsearch -xLLL
No such object (32)
&lt;/code&gt;

Par contre slapcat permet de voir les modifications. &lt;br /&gt;
Il se trouve que je viens de réessayer (environ 10 minutes après) et la commande ldapsearch répond correctement, donc il faut peut être attendre un peu avant de s'inquiéter ;-)

Et je n'arrive pas à me connecter au serveur LDAP (qui est sur un serveur OVH) de mon client thunderbird (mais j'arrive à me connecter sur phpldapadmin), ce serait pas mal d'ajouter une section pour expliquer comment utiliser le LDAP fraîchement crée.</text>
      <sha1>78ggshzqad3h0oynnyt4yhl8ld747fq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5883</id>
      <parentid>5882</parentid>
      <timestamp>2014-10-14T09:08:54Z</timestamp>
      <contributor>
        <username>Reynum</username>
        <id>305</id>
      </contributor>
      <text xml:space="preserve" bytes="1437">Je viens de faire ce tutoriel (merci à son auteur)

J'ai eu quelques problèmes :

Dans les fichiers 
* olc-mod1.ldif
* tree.ldif
* myuser.ldif

Il faut une ligne vide avant le deuxième dn:

exemple pour olc-mod1.ldif:

&lt;code&gt;
# 1.
dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: stats

# 2.1.
dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: uid eq
-
# 2.2.
add: olcDbIndex
olcDbIndex: cn eq
-
# 2.3.
add: olcDbIndex
olcDbIndex: ou eq
-
# 2.4.
add: olcDbIndex
olcDbIndex: dc eq
&lt;/code&gt;

Sinon on se retrouve avec un message du type :

&lt;code&gt;
ldapmodify -QY EXTERNAL -H ldapi:/// -f olc-mod1.ldif
ldapmodify: wrong attributeType at line 5, entry &quot;cn=config&quot;
&lt;/code&gt;

Ensuite quand on veut visualiser les modifications apportées pour les Organizational Unit (Utilisateurs et Groupes)
La commande ldapsearch échoue:
&lt;code&gt;
ldapsearch -xLLL
No such object (32)
&lt;/code&gt;

Par contre slapcat permet de voir les modifications. &lt;br /&gt;
Il se trouve que je viens de réessayer (environ 10 minutes après) et la commande ldapsearch répond correctement, donc il faut peut être attendre un peu avant de s'inquiéter ;-)

________

Par contre je n'arrive pas à me connecter au serveur LDAP (qui est sur un serveur OVH) de mon client thunderbird (mais j'arrive à me connecter sur phpldapadmin), ce serait pas mal d'ajouter une section pour expliquer comment utiliser le LDAP fraîchement crée.</text>
      <sha1>6gdyom00k2adru767qyjnue5pgkub5h</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5884</id>
      <parentid>5883</parentid>
      <timestamp>2014-10-14T09:38:43Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Lol a déplacé la page [[Discussion:OpenLDAP/retour dexp]] vers [[Discussion:OpenLDAP]] : Page de discussion mal placée</comment>
      <text xml:space="preserve" bytes="1437">Je viens de faire ce tutoriel (merci à son auteur)

J'ai eu quelques problèmes :

Dans les fichiers 
* olc-mod1.ldif
* tree.ldif
* myuser.ldif

Il faut une ligne vide avant le deuxième dn:

exemple pour olc-mod1.ldif:

&lt;code&gt;
# 1.
dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: stats

# 2.1.
dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: uid eq
-
# 2.2.
add: olcDbIndex
olcDbIndex: cn eq
-
# 2.3.
add: olcDbIndex
olcDbIndex: ou eq
-
# 2.4.
add: olcDbIndex
olcDbIndex: dc eq
&lt;/code&gt;

Sinon on se retrouve avec un message du type :

&lt;code&gt;
ldapmodify -QY EXTERNAL -H ldapi:/// -f olc-mod1.ldif
ldapmodify: wrong attributeType at line 5, entry &quot;cn=config&quot;
&lt;/code&gt;

Ensuite quand on veut visualiser les modifications apportées pour les Organizational Unit (Utilisateurs et Groupes)
La commande ldapsearch échoue:
&lt;code&gt;
ldapsearch -xLLL
No such object (32)
&lt;/code&gt;

Par contre slapcat permet de voir les modifications. &lt;br /&gt;
Il se trouve que je viens de réessayer (environ 10 minutes après) et la commande ldapsearch répond correctement, donc il faut peut être attendre un peu avant de s'inquiéter ;-)

________

Par contre je n'arrive pas à me connecter au serveur LDAP (qui est sur un serveur OVH) de mon client thunderbird (mais j'arrive à me connecter sur phpldapadmin), ce serait pas mal d'ajouter une section pour expliquer comment utiliser le LDAP fraîchement crée.</text>
      <sha1>6gdyom00k2adru767qyjnue5pgkub5h</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:OpenLDAP/retour dexp</title>
    <ns>1</ns>
    <id>1360</id>
    <redirect title="Discussion:OpenLDAP" />
    <revision>
      <id>5885</id>
      <timestamp>2014-10-14T09:38:44Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Lol a déplacé la page [[Discussion:OpenLDAP/retour dexp]] vers [[Discussion:OpenLDAP]] : Page de discussion mal placée</comment>
      <text xml:space="preserve" bytes="36">#REDIRECTION [[Discussion:OpenLDAP]]</text>
      <sha1>cbneuuzj8vntanevzh77ci1gx2ks6wd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Openbox</title>
    <ns>1</ns>
    <id>1093</id>
    <revision>
      <id>4522</id>
      <timestamp>2012-10-19T20:34:58Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>Proposition de suppression</comment>
      <text xml:space="preserve" bytes="309">Cette page me semble totalement inutile et devrait être supprimée. Écrivons un article ou ne l'écrivons pas, mais ce genre de chose ne m'amène qu'une unique pensée : « Ce n'est pas sérieux ! ».

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 19 octobre 2012 à 22:34 (CEST)</text>
      <sha1>czpik2s8uwaf1elz4zstsx3n5v9kl71</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:PXE</title>
    <ns>1</ns>
    <id>1260</id>
    <revision>
      <id>5208</id>
      <timestamp>2013-05-23T16:54:14Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <comment>Page créée avec « ---- je me demandais s'il ne serait pas intéressant de créer un lien vers cette page, dans la catégorie installation (&quot;Installation par PXE&quot;). ~~~ »</comment>
      <text xml:space="preserve" bytes="216">---- je me demandais s'il ne serait pas intéressant de créer un lien vers cette page, dans la catégorie installation (&quot;Installation par PXE&quot;). [[Utilisateur:MicP|MicP]] ([[Discussion utilisateur:MicP|discussion]])</text>
      <sha1>komogjxmyzfnf94xs6fjwiy2h3w9fhr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5209</id>
      <parentid>5208</parentid>
      <timestamp>2013-05-23T17:00:34Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="513">---- je me demandais s'il ne serait pas intéressant de créer un lien vers cette page, dans la catégorie installation (&quot;Installation par PXE&quot;). [[Utilisateur:MicP|MicP]] ([[Discussion utilisateur:MicP|discussion]])

-----

Tu as parfaitement raison, je m'en occupe de suite !

La prochaine fois n'hésite pas à prendre l'initiative, tu ne te feras pas gronder pour avoir amélioré la lisibilité du Wiki ^^

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 23 mai 2013 à 19:00 (CEST)</text>
      <sha1>6qgshsi7dvk06rks1a9nmtjnbud6egr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5211</id>
      <parentid>5209</parentid>
      <timestamp>2013-05-25T07:54:00Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="681">---- je me demandais s'il ne serait pas intéressant de créer un lien vers cette page, dans la catégorie installation (&quot;Installation par PXE&quot;). [[Utilisateur:MicP|MicP]] ([[Discussion utilisateur:MicP|discussion]])

-----

Tu as parfaitement raison, je m'en occupe de suite !

La prochaine fois n'hésite pas à prendre l'initiative, tu ne te feras pas gronder pour avoir amélioré la lisibilité du Wiki ^^

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 23 mai 2013 à 19:00 (CEST)

---- Salut, merci, j'avais oublié... Il y en a d'autres d'ailleurs... [[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 25 mai 2013 à 09:54 (CEST)</text>
      <sha1>jji7n8ladtkbx0am66b6xovsiego2vn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Parefeu Simplifié</title>
    <ns>1</ns>
    <id>1284</id>
    <revision>
      <id>5355</id>
      <timestamp>2013-08-14T08:59:04Z</timestamp>
      <contributor>
        <username>PascalHambourg</username>
        <id>279</id>
      </contributor>
      <comment>Page créée avec « Je propose les modifications suivantes sur le script IPv4.  * éxécutable -&gt; exécutable   # - Cette configuration s'applique à toutes les interfaces réseau.  #   Si vo... »</comment>
      <text xml:space="preserve" bytes="2433">Je propose les modifications suivantes sur le script IPv4.

* éxécutable -&gt; exécutable

 # - Cette configuration s'applique à toutes les interfaces réseau.
 #   Si vous voulez restreindre cela à une interface donnée,
 #   utilisez '-i INTERFACE' dans la variables $IPTABLES.

* mauvaise façon de faire ; il vaudrait mieux définir une autre variable insérée dans les règles.
* ça ferait échouer le test [ -x $IPTABLES ]
* ça ferait échouer les commandes qui n'attendent pas d'option -i (-P, -A OUTPUT...)

 # changer la valeur de la variable ISROUTERNAT à 1.
plutôt à &quot;true&quot;, sinon le test &quot;if $ISROUTERNAT&quot; provoquera une erreur (&quot;1&quot; n'est pas une commande)

 # Refus du ping pour éviter de répondre aux scans des éventuels vilains
 	$IPTABLES -t filter -A INPUT -p icmp -j LOG
 	$IPTABLES -t filter -A INPUT -p icmp -j DROP

* ping != icmp
* ping = icmp type 8
* le ping, ça peut être utile. En plus, franchement, les scans...

 # Sortie autorisée, si aucun port autorisé en sortie n'est défini
        if [ -z &quot;$REMOTE_TCP_SERVICES&quot;] &amp;&amp; [ -z &quot;$REMOTE_UDP_SERVICES&quot; ]; then
            $IPTABLES -t filter -P OUTPUT ACCEPT
        fi

* AMA il serait plus propre de créer une règle plutôt que modifier la politique par défaut

* utiliser else pour l'exécution conditionnelle du bloc qui suit
	
 # Services à autoriser en sortie
 
 	for PORT in $REMOTE_TCP_SERVICES; do
 		$IPTABLES -A OUTPUT -p tcp --dport ${PORT} -j ACCEPT
 	done
 	for PORT in $REMOTE_UDP_SERVICES; do
 		$IPTABLES -A OUTPUT -p udp --dport ${PORT} -j ACCEPT
 	done

et ajouter une règle pour le suivi de connexion des paquets sortants comme dans INPUT, sinon les réponses aux paquets entrants sont bloquées.

 $IPTABLES -A INPUT -p icmp -j ACCEPT

pourquoi cette règle, quel rapport avec la fonction routeur NAT ?

 $IPTABLES -A FORWARD -o $ethy -j ACCEPT

ajouter &quot;-i $ethx&quot; sinon le routeur laisse passer les paquets venant de n'importe où et pas seulement du LAN

 fw_stop () {
cette fonction ne fait pas ce que son nom dit : elle enregistre le jeu de règles actif dans un fichier au lieu d'arrêter quoi que ce soit.

 	$IPTABLES -t nat -P PREROUTING ACCEPT
 	$IPTABLES -t nat -P POSTROUTING ACCEPT
 	$IPTABLES -t nat -P OUTPUT ACCEPT

ajouter la nouvelle chaîne INPUT si noyau &gt;= 2.6.36

[[Utilisateur:PascalHambourg|PascalHambourg]] ([[Discussion utilisateur:PascalHambourg|discussion]]) 14 août 2013 à 10:59 (CEST)</text>
      <sha1>nuifrukz5nvhbrf4mg17yat9e1glg83</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5356</id>
      <parentid>5355</parentid>
      <timestamp>2013-08-21T10:47:45Z</timestamp>
      <contributor>
        <username>PascalHambourg</username>
        <id>279</id>
      </contributor>
      <text xml:space="preserve" bytes="2504">Je propose les modifications suivantes sur le script IPv4.

* éxécutable -&gt; exécutable

 # - Cette configuration s'applique à toutes les interfaces réseau.
 #   Si vous voulez restreindre cela à une interface donnée,
 #   utilisez '-i INTERFACE' dans la variables $IPTABLES.

* mauvaise façon de faire ; il vaudrait mieux définir une autre variable insérée dans les règles.
* ça ferait échouer le test [ -x $IPTABLES ]
* ça provoquerait une erreur avec les commandes qui n'attendent pas d'option -i (-P, -A OUTPUT...) ou qui ont déjà une option -i (voir option routeur NAT)

 # changer la valeur de la variable ISROUTERNAT à 1.
plutôt à &quot;true&quot;, sinon le test &quot;if $ISROUTERNAT&quot; provoquera une erreur (&quot;1&quot; n'est pas une commande)

 # Refus du ping pour éviter de répondre aux scans des éventuels vilains
 	$IPTABLES -t filter -A INPUT -p icmp -j LOG
 	$IPTABLES -t filter -A INPUT -p icmp -j DROP

* ping != icmp
* ping = icmp type 8
* le ping, ça peut être utile. En plus, franchement, les scans...

 # Sortie autorisée, si aucun port autorisé en sortie n'est défini
        if [ -z &quot;$REMOTE_TCP_SERVICES&quot;] &amp;&amp; [ -z &quot;$REMOTE_UDP_SERVICES&quot; ]; then
            $IPTABLES -t filter -P OUTPUT ACCEPT
        fi

* AMA il serait plus propre de créer une règle plutôt que modifier la politique par défaut

* utiliser else pour l'exécution conditionnelle du bloc qui suit
	
 # Services à autoriser en sortie
 
 	for PORT in $REMOTE_TCP_SERVICES; do
 		$IPTABLES -A OUTPUT -p tcp --dport ${PORT} -j ACCEPT
 	done
 	for PORT in $REMOTE_UDP_SERVICES; do
 		$IPTABLES -A OUTPUT -p udp --dport ${PORT} -j ACCEPT
 	done

et ajouter une règle pour le suivi de connexion des paquets sortants comme dans INPUT, sinon les réponses aux paquets entrants sont bloquées.

 $IPTABLES -A INPUT -p icmp -j ACCEPT

pourquoi cette règle, quel rapport avec la fonction routeur NAT ?

 $IPTABLES -A FORWARD -o $ethy -j ACCEPT

ajouter &quot;-i $ethx&quot; sinon le routeur laisse passer les paquets venant de n'importe où et pas seulement du LAN

 fw_stop () {
cette fonction ne fait pas ce que son nom dit : elle enregistre le jeu de règles actif dans un fichier au lieu d'arrêter quoi que ce soit.

 	$IPTABLES -t nat -P PREROUTING ACCEPT
 	$IPTABLES -t nat -P POSTROUTING ACCEPT
 	$IPTABLES -t nat -P OUTPUT ACCEPT

ajouter la nouvelle chaîne INPUT si noyau &gt;= 2.6.36

[[Utilisateur:PascalHambourg|PascalHambourg]] ([[Discussion utilisateur:PascalHambourg|discussion]]) 14 août 2013 à 10:59 (CEST)</text>
      <sha1>6sp0iolv4y9aou4eja1lxtauul230wp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5357</id>
      <parentid>5356</parentid>
      <timestamp>2013-08-21T10:50:19Z</timestamp>
      <contributor>
        <username>PascalHambourg</username>
        <id>279</id>
      </contributor>
      <text xml:space="preserve" bytes="2502">Je propose les modifications suivantes sur le script IPv4.

* éxécutable -&gt; exécutable

 # - Cette configuration s'applique à toutes les interfaces réseau.
 #   Si vous voulez restreindre cela à une interface donnée,
 #   utilisez '-i INTERFACE' dans la variables $IPTABLES.

* mauvaise façon de faire ; il vaudrait mieux définir une autre variable insérée dans les règles.
* ça ferait échouer le test [ -x $IPTABLES ]
* ça provoquerait une erreur avec les commandes qui n'attendent pas d'option -i (-P, -A OUTPUT...) ou qui ont déjà une option -i (loopback, routeur NAT)

 # changer la valeur de la variable ISROUTERNAT à 1.
plutôt à &quot;true&quot;, sinon le test &quot;if $ISROUTERNAT&quot; provoquera une erreur (&quot;1&quot; n'est pas une commande)

 # Refus du ping pour éviter de répondre aux scans des éventuels vilains
 	$IPTABLES -t filter -A INPUT -p icmp -j LOG
 	$IPTABLES -t filter -A INPUT -p icmp -j DROP

* ping != icmp
* ping = icmp type 8
* le ping, ça peut être utile. En plus, franchement, les scans...

 # Sortie autorisée, si aucun port autorisé en sortie n'est défini
        if [ -z &quot;$REMOTE_TCP_SERVICES&quot;] &amp;&amp; [ -z &quot;$REMOTE_UDP_SERVICES&quot; ]; then
            $IPTABLES -t filter -P OUTPUT ACCEPT
        fi

* AMA il serait plus propre de créer une règle plutôt que modifier la politique par défaut

* utiliser else pour l'exécution conditionnelle du bloc qui suit
	
 # Services à autoriser en sortie
 
 	for PORT in $REMOTE_TCP_SERVICES; do
 		$IPTABLES -A OUTPUT -p tcp --dport ${PORT} -j ACCEPT
 	done
 	for PORT in $REMOTE_UDP_SERVICES; do
 		$IPTABLES -A OUTPUT -p udp --dport ${PORT} -j ACCEPT
 	done

et ajouter une règle pour le suivi de connexion des paquets sortants comme dans INPUT, sinon les réponses aux paquets entrants sont bloquées.

 $IPTABLES -A INPUT -p icmp -j ACCEPT

pourquoi cette règle, quel rapport avec la fonction routeur NAT ?

 $IPTABLES -A FORWARD -o $ethy -j ACCEPT

ajouter &quot;-i $ethx&quot; sinon le routeur laisse passer les paquets venant de n'importe où et pas seulement du LAN

 fw_stop () {
cette fonction ne fait pas ce que son nom dit : elle enregistre le jeu de règles actif dans un fichier au lieu d'arrêter quoi que ce soit.

 	$IPTABLES -t nat -P PREROUTING ACCEPT
 	$IPTABLES -t nat -P POSTROUTING ACCEPT
 	$IPTABLES -t nat -P OUTPUT ACCEPT

ajouter la nouvelle chaîne INPUT si noyau &gt;= 2.6.36

[[Utilisateur:PascalHambourg|PascalHambourg]] ([[Discussion utilisateur:PascalHambourg|discussion]]) 14 août 2013 à 10:59 (CEST)</text>
      <sha1>mjzk8wbmtqxin5qsqbqie01lsazb8wn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5395</id>
      <parentid>5357</parentid>
      <timestamp>2013-09-05T07:33:09Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Proposition de script modifié */ nouvelle section</comment>
      <text xml:space="preserve" bytes="8670">Je propose les modifications suivantes sur le script IPv4.

* éxécutable -&gt; exécutable

 # - Cette configuration s'applique à toutes les interfaces réseau.
 #   Si vous voulez restreindre cela à une interface donnée,
 #   utilisez '-i INTERFACE' dans la variables $IPTABLES.

* mauvaise façon de faire ; il vaudrait mieux définir une autre variable insérée dans les règles.
* ça ferait échouer le test [ -x $IPTABLES ]
* ça provoquerait une erreur avec les commandes qui n'attendent pas d'option -i (-P, -A OUTPUT...) ou qui ont déjà une option -i (loopback, routeur NAT)

 # changer la valeur de la variable ISROUTERNAT à 1.
plutôt à &quot;true&quot;, sinon le test &quot;if $ISROUTERNAT&quot; provoquera une erreur (&quot;1&quot; n'est pas une commande)

 # Refus du ping pour éviter de répondre aux scans des éventuels vilains
 	$IPTABLES -t filter -A INPUT -p icmp -j LOG
 	$IPTABLES -t filter -A INPUT -p icmp -j DROP

* ping != icmp
* ping = icmp type 8
* le ping, ça peut être utile. En plus, franchement, les scans...

 # Sortie autorisée, si aucun port autorisé en sortie n'est défini
        if [ -z &quot;$REMOTE_TCP_SERVICES&quot;] &amp;&amp; [ -z &quot;$REMOTE_UDP_SERVICES&quot; ]; then
            $IPTABLES -t filter -P OUTPUT ACCEPT
        fi

* AMA il serait plus propre de créer une règle plutôt que modifier la politique par défaut

* utiliser else pour l'exécution conditionnelle du bloc qui suit
	
 # Services à autoriser en sortie
 
 	for PORT in $REMOTE_TCP_SERVICES; do
 		$IPTABLES -A OUTPUT -p tcp --dport ${PORT} -j ACCEPT
 	done
 	for PORT in $REMOTE_UDP_SERVICES; do
 		$IPTABLES -A OUTPUT -p udp --dport ${PORT} -j ACCEPT
 	done

et ajouter une règle pour le suivi de connexion des paquets sortants comme dans INPUT, sinon les réponses aux paquets entrants sont bloquées.

 $IPTABLES -A INPUT -p icmp -j ACCEPT

pourquoi cette règle, quel rapport avec la fonction routeur NAT ?

 $IPTABLES -A FORWARD -o $ethy -j ACCEPT

ajouter &quot;-i $ethx&quot; sinon le routeur laisse passer les paquets venant de n'importe où et pas seulement du LAN

 fw_stop () {
cette fonction ne fait pas ce que son nom dit : elle enregistre le jeu de règles actif dans un fichier au lieu d'arrêter quoi que ce soit.

 	$IPTABLES -t nat -P PREROUTING ACCEPT
 	$IPTABLES -t nat -P POSTROUTING ACCEPT
 	$IPTABLES -t nat -P OUTPUT ACCEPT

ajouter la nouvelle chaîne INPUT si noyau &gt;= 2.6.36

[[Utilisateur:PascalHambourg|PascalHambourg]] ([[Discussion utilisateur:PascalHambourg|discussion]]) 14 août 2013 à 10:59 (CEST)

== Proposition de script modifié ==

Salut,
Voici le script après intégration des remarques de PascalHambourg:

&lt;code bash&gt;
#!/bin/sh

### BEGIN INIT INFO
# Provides:           parefeu
# Required-Start:     $local_fs
# Should-Start:
# Required-Stop:      $local_fs
# Should-Stop:
# X-Start-Before:     $network
# X-Stop-After:       $network
# Default-Start:      S
# Default-Stop:       0 6
# Short-description:  Configuration du pare-feu
# Description:        Met en place les règles iptables (IPv4 uniquement)
### END INIT INFO

### --- Explications
#
# Par défaut cette configuration s'applique à toutes les interfaces réseau.
# Si vous souhaitez restreindre cela à une interface donnée, dé-commentez la ligne #IFACE=&quot;eth0&quot;
# (dans la section variables)
#
# Par défaut, le script autorise tout en sortie. Pour changer ce comportement veuillez indiquer quels sont les ports
# autorisés en sortie dans les 2 variables suivantes (Tout sera bloqué sauf les ports inscrits)
#        $REMOTE_TCP_SERVICES
#  et/ou $REMOTE_UDP_SERVICES
#
# - Pour configurer une machine qui fasse office de routeur, changez la valeur de la
#   variable ISROUTERNAT à true, ET configurez les interfaces ethx et ethy selon votre configuration.
#   =&gt; ethx correspond à l'interface du LAN (reliée à votre Intranet)
#   =&gt; ethy correspond à l'interface WAN (reliée à Internet ou à la truc-box)
#

### --- VARIABLES
#
. /lib/lsb/init-functions
readonly IPTABLES=/sbin/iptables
#
# Services que le système offrira au réseau, à séparer avec des espaces
# Par défaut RIEN n'est autorisé à part le Ping.
TCP_SERVICES=&quot;&quot; 
UDP_SERVICES=&quot;&quot;
# Services que le système utilisera du réseau
# (défaut : autorise TOUT en sortie si aucun port n'est précisé)
REMOTE_TCP_SERVICES=&quot;&quot; 
REMOTE_UDP_SERVICES=&quot;&quot; 
# Pour une machine faisant office de routeur avec NAT, changez la valeur de la variable ISROUTERNAT à &quot;true&quot;.
ISROUTERNAT=false
# ethx correspond à l'interface du LAN
# ethy correspond à l'interface reliée à la truc-box (à compléter seulement si vous activez la fonction routeur)
ethx=&quot;eth1&quot;
ethy=&quot;eth0&quot;
# Ajustez le nom de l'interface pour restreindre le trafic entrant à cette interface particulière.
# Par exemple : IFACE=&quot;eth0&quot;
#IFACE=&quot;eth0&quot;
# Activation des logs (mettre à &quot;true&quot; pour activer)
LOGGING=false

### NE RIEN MODIFIER APRES CETTE LIGNE (à moins de savoir ce que vous faite)

   if [ -n &quot;${IFACE}&quot; ] ; then
   IFACE=&quot;-i ${IFACE}&quot;
   fi

# Récupération de la version du noyau et test si &gt;= à 2.6.36

version=$(printf '%d%.2d%.2d\n' $(uname -r | sed 's/\./ /g;s/-.*//'))
if [ &quot;${version}&quot; -lt '20636' ] ; then
    k2636=0
else
    k2636=1
fi

### --- FONCTIONS
   fw_start () {

# Vidage
   fw_clear
   # Parefeu - Suppression des règles

# Interdictions
   $IPTABLES -t filter -P INPUT DROP
   $IPTABLES -t filter -P FORWARD DROP
   $IPTABLES -t filter -P OUTPUT DROP
   echo &quot;Pare-feu - interdictions générales établies&quot;

# Loopback
   $IPTABLES -t filter -A INPUT -i lo -j ACCEPT

# Trafic d'entrée :
   $IPTABLES -t filter -A INPUT ${IFACE} -m state --state ESTABLISHED,RELATED -j ACCEPT

# Limitation de la taille et de la fréquence des pings acceptés
   $IPTABLES -A INPUT ${IFACE} -p icmp --icmp-type echo-request -m limit --limit 10/second -m length --length 8:2000 -j ACCEPT

# Sortie autorisée, si aucun port autorisé en sortie n'est défini
   if [ -z &quot;$REMOTE_TCP_SERVICES&quot;] &amp;&amp; [ -z &quot;$REMOTE_UDP_SERVICES&quot; ]; then
   $IPTABLES -t filter -A OUTPUT -j ACCEPT
   else
   $IPTABLES -t filter -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
   # Services à autoriser en sortie
   for PORT in $REMOTE_TCP_SERVICES; do
      $IPTABLES -A OUTPUT -p tcp --dport ${PORT} -j ACCEPT
   done
   for PORT in $REMOTE_UDP_SERVICES; do
      $IPTABLES -A OUTPUT -p udp --dport ${PORT} -j ACCEPT
   done
   fi

# Services à autoriser en entrée
   for PORT in $TCP_SERVICES; do
   $IPTABLES -A INPUT ${IFACE} -p tcp --dport ${PORT} -j ACCEPT
   done
   for PORT in $UDP_SERVICES; do
   $IPTABLES -A INPUT ${IFACE} -p udp --dport ${PORT} -j ACCEPT
   done
   echo &quot;Pare-feu - Mise en place des règles&quot;

# NAT
   if $ISROUTERNAT ; then
   $IPTABLES -A INPUT -i $ethx -j ACCEPT
   $IPTABLES -A FORWARD -i $ethy -o $ethx -m state --state RELATED,ESTABLISHED -j ACCEPT
   $IPTABLES -A FORWARD -i $ethx -o $ethy -j ACCEPT
   $IPTABLES -t nat -A POSTROUTING -o $ethy -j MASQUERADE
   echo &quot;Pare-feu - Routeur avec NAT : [OK]&quot;
   fi

# Toutes les autres connexions sont enregistrées dans syslog (si activé)
   if $LOGGING ; then
   $IPTABLES -t filter -A INPUT -j LOG --log-level=4
   echo &quot;Pare-feu - Activation des logs : [OK]&quot;
   fi

}

fw_save () {
   iptables-save &gt; /etc/firewall
   echo &quot;\nPare-feu - Sauvegardé dans /etc/firewall&quot;
}

fw_clear () {
   $IPTABLES -t filter -F
   $IPTABLES -t nat -F
   $IPTABLES -t mangle -F
   $IPTABLES -t raw -F
   $IPTABLES -t filter -P INPUT ACCEPT
   $IPTABLES -t filter -P OUTPUT ACCEPT
   $IPTABLES -t filter -P FORWARD ACCEPT
   $IPTABLES -t nat -P PREROUTING ACCEPT
   $IPTABLES -t nat -P POSTROUTING ACCEPT
   $IPTABLES -t nat -P OUTPUT ACCEPT
   if [ $k2636 -eq 1 ] ; then
      $IPTABLES -t nat -P INPUT ACCEPT
   fi
   $IPTABLES -t mangle -P PREROUTING ACCEPT
   $IPTABLES -t mangle -P OUTPUT ACCEPT
   $IPTABLES -t mangle -P POSTROUTING ACCEPT
   $IPTABLES -t mangle -P FORWARD ACCEPT
   $IPTABLES -t mangle -P INPUT ACCEPT
   $IPTABLES -t raw -P OUTPUT ACCEPT
   $IPTABLES -t raw -P PREROUTING ACCEPT
   echo &quot;\nPare-feu - Remise à zéro&quot;
}

fw_status () {
   $IPTABLES -L --line-numbers
}

# ----------------------------------------------------------------------------- #

case &quot;$1&quot; in
   start|restart)
      log_daemon_msg &quot;Starting firewall..&quot;
       fw_start
      log_end_msg $?
    ;;
   save)
      log_daemon_msg &quot;Saving firewall..&quot;
       fw_save
      log_end_msg $?
    ;;
   stop)
       log_daemon_msg &quot;Clearing firewall rules..&quot;
       fw_clear
      log_end_msg $?
    ;;
   status)
      log_daemon_msg &quot;Firewall status&quot;
      fw_status
   ;;
   *)
       log_action_msg &quot;Usage $0 {start|save|restart|stop|status}&quot;
       exit 1
    ;;
esac
exit 0
&lt;/code&gt;</text>
      <sha1>1a7kxwqqbr8q47y439mlvt0dvdir738</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5396</id>
      <parentid>5395</parentid>
      <timestamp>2013-09-05T07:33:32Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Proposition de script modifié */</comment>
      <text xml:space="preserve" bytes="8772">Je propose les modifications suivantes sur le script IPv4.

* éxécutable -&gt; exécutable

 # - Cette configuration s'applique à toutes les interfaces réseau.
 #   Si vous voulez restreindre cela à une interface donnée,
 #   utilisez '-i INTERFACE' dans la variables $IPTABLES.

* mauvaise façon de faire ; il vaudrait mieux définir une autre variable insérée dans les règles.
* ça ferait échouer le test [ -x $IPTABLES ]
* ça provoquerait une erreur avec les commandes qui n'attendent pas d'option -i (-P, -A OUTPUT...) ou qui ont déjà une option -i (loopback, routeur NAT)

 # changer la valeur de la variable ISROUTERNAT à 1.
plutôt à &quot;true&quot;, sinon le test &quot;if $ISROUTERNAT&quot; provoquera une erreur (&quot;1&quot; n'est pas une commande)

 # Refus du ping pour éviter de répondre aux scans des éventuels vilains
 	$IPTABLES -t filter -A INPUT -p icmp -j LOG
 	$IPTABLES -t filter -A INPUT -p icmp -j DROP

* ping != icmp
* ping = icmp type 8
* le ping, ça peut être utile. En plus, franchement, les scans...

 # Sortie autorisée, si aucun port autorisé en sortie n'est défini
        if [ -z &quot;$REMOTE_TCP_SERVICES&quot;] &amp;&amp; [ -z &quot;$REMOTE_UDP_SERVICES&quot; ]; then
            $IPTABLES -t filter -P OUTPUT ACCEPT
        fi

* AMA il serait plus propre de créer une règle plutôt que modifier la politique par défaut

* utiliser else pour l'exécution conditionnelle du bloc qui suit
	
 # Services à autoriser en sortie
 
 	for PORT in $REMOTE_TCP_SERVICES; do
 		$IPTABLES -A OUTPUT -p tcp --dport ${PORT} -j ACCEPT
 	done
 	for PORT in $REMOTE_UDP_SERVICES; do
 		$IPTABLES -A OUTPUT -p udp --dport ${PORT} -j ACCEPT
 	done

et ajouter une règle pour le suivi de connexion des paquets sortants comme dans INPUT, sinon les réponses aux paquets entrants sont bloquées.

 $IPTABLES -A INPUT -p icmp -j ACCEPT

pourquoi cette règle, quel rapport avec la fonction routeur NAT ?

 $IPTABLES -A FORWARD -o $ethy -j ACCEPT

ajouter &quot;-i $ethx&quot; sinon le routeur laisse passer les paquets venant de n'importe où et pas seulement du LAN

 fw_stop () {
cette fonction ne fait pas ce que son nom dit : elle enregistre le jeu de règles actif dans un fichier au lieu d'arrêter quoi que ce soit.

 	$IPTABLES -t nat -P PREROUTING ACCEPT
 	$IPTABLES -t nat -P POSTROUTING ACCEPT
 	$IPTABLES -t nat -P OUTPUT ACCEPT

ajouter la nouvelle chaîne INPUT si noyau &gt;= 2.6.36

[[Utilisateur:PascalHambourg|PascalHambourg]] ([[Discussion utilisateur:PascalHambourg|discussion]]) 14 août 2013 à 10:59 (CEST)

== Proposition de script modifié ==

Salut,
Voici le script après intégration des remarques de PascalHambourg:

&lt;code bash&gt;
#!/bin/sh

### BEGIN INIT INFO
# Provides:           parefeu
# Required-Start:     $local_fs
# Should-Start:
# Required-Stop:      $local_fs
# Should-Stop:
# X-Start-Before:     $network
# X-Stop-After:       $network
# Default-Start:      S
# Default-Stop:       0 6
# Short-description:  Configuration du pare-feu
# Description:        Met en place les règles iptables (IPv4 uniquement)
### END INIT INFO

### --- Explications
#
# Par défaut cette configuration s'applique à toutes les interfaces réseau.
# Si vous souhaitez restreindre cela à une interface donnée, dé-commentez la ligne #IFACE=&quot;eth0&quot;
# (dans la section variables)
#
# Par défaut, le script autorise tout en sortie. Pour changer ce comportement veuillez indiquer quels sont les ports
# autorisés en sortie dans les 2 variables suivantes (Tout sera bloqué sauf les ports inscrits)
#        $REMOTE_TCP_SERVICES
#  et/ou $REMOTE_UDP_SERVICES
#
# - Pour configurer une machine qui fasse office de routeur, changez la valeur de la
#   variable ISROUTERNAT à true, ET configurez les interfaces ethx et ethy selon votre configuration.
#   =&gt; ethx correspond à l'interface du LAN (reliée à votre Intranet)
#   =&gt; ethy correspond à l'interface WAN (reliée à Internet ou à la truc-box)
#

### --- VARIABLES
#
. /lib/lsb/init-functions
readonly IPTABLES=/sbin/iptables
#
# Services que le système offrira au réseau, à séparer avec des espaces
# Par défaut RIEN n'est autorisé à part le Ping.
TCP_SERVICES=&quot;&quot; 
UDP_SERVICES=&quot;&quot;
# Services que le système utilisera du réseau
# (défaut : autorise TOUT en sortie si aucun port n'est précisé)
REMOTE_TCP_SERVICES=&quot;&quot; 
REMOTE_UDP_SERVICES=&quot;&quot; 
# Pour une machine faisant office de routeur avec NAT, changez la valeur de la variable ISROUTERNAT à &quot;true&quot;.
ISROUTERNAT=false
# ethx correspond à l'interface du LAN
# ethy correspond à l'interface reliée à la truc-box (à compléter seulement si vous activez la fonction routeur)
ethx=&quot;eth1&quot;
ethy=&quot;eth0&quot;
# Ajustez le nom de l'interface pour restreindre le trafic entrant à cette interface particulière.
# Par exemple : IFACE=&quot;eth0&quot;
#IFACE=&quot;eth0&quot;
# Activation des logs (mettre à &quot;true&quot; pour activer)
LOGGING=false

### NE RIEN MODIFIER APRES CETTE LIGNE (à moins de savoir ce que vous faite)

   if [ -n &quot;${IFACE}&quot; ] ; then
   IFACE=&quot;-i ${IFACE}&quot;
   fi

# Récupération de la version du noyau et test si &gt;= à 2.6.36

version=$(printf '%d%.2d%.2d\n' $(uname -r | sed 's/\./ /g;s/-.*//'))
if [ &quot;${version}&quot; -lt '20636' ] ; then
    k2636=0
else
    k2636=1
fi

### --- FONCTIONS
   fw_start () {

# Vidage
   fw_clear
   # Parefeu - Suppression des règles

# Interdictions
   $IPTABLES -t filter -P INPUT DROP
   $IPTABLES -t filter -P FORWARD DROP
   $IPTABLES -t filter -P OUTPUT DROP
   echo &quot;Pare-feu - interdictions générales établies&quot;

# Loopback
   $IPTABLES -t filter -A INPUT -i lo -j ACCEPT

# Trafic d'entrée :
   $IPTABLES -t filter -A INPUT ${IFACE} -m state --state ESTABLISHED,RELATED -j ACCEPT

# Limitation de la taille et de la fréquence des pings acceptés
   $IPTABLES -A INPUT ${IFACE} -p icmp --icmp-type echo-request -m limit --limit 10/second -m length --length 8:2000 -j ACCEPT

# Sortie autorisée, si aucun port autorisé en sortie n'est défini
   if [ -z &quot;$REMOTE_TCP_SERVICES&quot;] &amp;&amp; [ -z &quot;$REMOTE_UDP_SERVICES&quot; ]; then
   $IPTABLES -t filter -A OUTPUT -j ACCEPT
   else
   $IPTABLES -t filter -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
   # Services à autoriser en sortie
   for PORT in $REMOTE_TCP_SERVICES; do
      $IPTABLES -A OUTPUT -p tcp --dport ${PORT} -j ACCEPT
   done
   for PORT in $REMOTE_UDP_SERVICES; do
      $IPTABLES -A OUTPUT -p udp --dport ${PORT} -j ACCEPT
   done
   fi

# Services à autoriser en entrée
   for PORT in $TCP_SERVICES; do
   $IPTABLES -A INPUT ${IFACE} -p tcp --dport ${PORT} -j ACCEPT
   done
   for PORT in $UDP_SERVICES; do
   $IPTABLES -A INPUT ${IFACE} -p udp --dport ${PORT} -j ACCEPT
   done
   echo &quot;Pare-feu - Mise en place des règles&quot;

# NAT
   if $ISROUTERNAT ; then
   $IPTABLES -A INPUT -i $ethx -j ACCEPT
   $IPTABLES -A FORWARD -i $ethy -o $ethx -m state --state RELATED,ESTABLISHED -j ACCEPT
   $IPTABLES -A FORWARD -i $ethx -o $ethy -j ACCEPT
   $IPTABLES -t nat -A POSTROUTING -o $ethy -j MASQUERADE
   echo &quot;Pare-feu - Routeur avec NAT : [OK]&quot;
   fi

# Toutes les autres connexions sont enregistrées dans syslog (si activé)
   if $LOGGING ; then
   $IPTABLES -t filter -A INPUT -j LOG --log-level=4
   echo &quot;Pare-feu - Activation des logs : [OK]&quot;
   fi

}

fw_save () {
   iptables-save &gt; /etc/firewall
   echo &quot;\nPare-feu - Sauvegardé dans /etc/firewall&quot;
}

fw_clear () {
   $IPTABLES -t filter -F
   $IPTABLES -t nat -F
   $IPTABLES -t mangle -F
   $IPTABLES -t raw -F
   $IPTABLES -t filter -P INPUT ACCEPT
   $IPTABLES -t filter -P OUTPUT ACCEPT
   $IPTABLES -t filter -P FORWARD ACCEPT
   $IPTABLES -t nat -P PREROUTING ACCEPT
   $IPTABLES -t nat -P POSTROUTING ACCEPT
   $IPTABLES -t nat -P OUTPUT ACCEPT
   if [ $k2636 -eq 1 ] ; then
      $IPTABLES -t nat -P INPUT ACCEPT
   fi
   $IPTABLES -t mangle -P PREROUTING ACCEPT
   $IPTABLES -t mangle -P OUTPUT ACCEPT
   $IPTABLES -t mangle -P POSTROUTING ACCEPT
   $IPTABLES -t mangle -P FORWARD ACCEPT
   $IPTABLES -t mangle -P INPUT ACCEPT
   $IPTABLES -t raw -P OUTPUT ACCEPT
   $IPTABLES -t raw -P PREROUTING ACCEPT
   echo &quot;\nPare-feu - Remise à zéro&quot;
}

fw_status () {
   $IPTABLES -L --line-numbers
}

# ----------------------------------------------------------------------------- #

case &quot;$1&quot; in
   start|restart)
      log_daemon_msg &quot;Starting firewall..&quot;
       fw_start
      log_end_msg $?
    ;;
   save)
      log_daemon_msg &quot;Saving firewall..&quot;
       fw_save
      log_end_msg $?
    ;;
   stop)
       log_daemon_msg &quot;Clearing firewall rules..&quot;
       fw_clear
      log_end_msg $?
    ;;
   status)
      log_daemon_msg &quot;Firewall status&quot;
      fw_status
   ;;
   *)
       log_action_msg &quot;Usage $0 {start|save|restart|stop|status}&quot;
       exit 1
    ;;
esac
exit 0
&lt;/code&gt;

[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 5 septembre 2013 à 09:33 (CEST)</text>
      <sha1>btmu33vb60bux2uu64dboemlhcy6a00</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Projet Accueil</title>
    <ns>1</ns>
    <id>158</id>
    <revision>
      <id>654</id>
      <timestamp>2010-02-01T08:09:23Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « Bonjour à tous, Vous êtes invités à donner votre avis... merci ~~~~ ---- »</comment>
      <text xml:space="preserve" bytes="126">Bonjour à tous,
Vous êtes invités à donner votre avis... merci [[Utilisateur:Lol|Lol]] 1 février 2010 à 08:09 (UTC)
----</text>
      <sha1>5ijeep44nmh7970rbmf9qyq1ki8myam</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>869</id>
      <parentid>654</parentid>
      <timestamp>2010-02-04T20:33:03Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="286">Bonjour à tous,
Vous êtes invités à donner votre avis... merci [[Utilisateur:Lol|Lol]] 1 février 2010 à 08:09 (UTC)
----
La mention &quot;faire attention... être extremement prudent&quot; et tout ça... c'est pas un peu obsolète? [[Utilisateur:L0u!$|L0u!$]] 4 février 2010 à 20:33 (UTC)</text>
      <sha1>frizw5vmb0pmf2z4vyf0ulbsep2hgit</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>870</id>
      <parentid>869</parentid>
      <timestamp>2010-02-04T20:43:25Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="605">Bonjour à tous,
Vous êtes invités à donner votre avis... merci [[Utilisateur:Lol|Lol]] 1 février 2010 à 08:09 (UTC)
----
La mention &quot;faire attention... être extremement prudent&quot; et tout ça... c'est pas un peu obsolète? [[Utilisateur:L0u!$|L0u!$]] 4 février 2010 à 20:33 (UTC)
----
Oui... J'ai toujours trouvé que c'était un peu fort. J'ai repris le même que sur la page d'accueil actuelle. On peut l'enlever... Surtout que j'ai fait une page &quot;avertissement&quot; tout en bas à droite, ça doit suffire non ?
Sinon, tu penses quoi du reste ? [[Utilisateur:Lol|Lol]] 4 février 2010 à 20:43 (UTC)</text>
      <sha1>5qfnuzr4cmk1gyj8zxknrdkx288rj0c</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1140</id>
      <parentid>870</parentid>
      <timestamp>2010-03-14T10:50:37Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <text xml:space="preserve" bytes="743">Bonjour à tous,
Vous êtes invités à donner votre avis... merci [[Utilisateur:Lol|Lol]] 1 février 2010 à 08:09 (UTC)
----
La mention &quot;faire attention... être extremement prudent&quot; et tout ça... c'est pas un peu obsolète? [[Utilisateur:L0u!$|L0u!$]] 4 février 2010 à 20:33 (UTC)
----
Oui... J'ai toujours trouvé que c'était un peu fort. J'ai repris le même que sur la page d'accueil actuelle. On peut l'enlever... Surtout que j'ai fait une page &quot;avertissement&quot; tout en bas à droite, ça doit suffire non ?
Sinon, tu penses quoi du reste ? [[Utilisateur:Lol|Lol]] 4 février 2010 à 20:43 (UTC)
----
J'aime bien cette nouvelle page. Je pense juste que la partie commande doit passer à droit. [[Utilisateur:MisterFreez|MisterFreez]]</text>
      <sha1>fpgkbveubxa4q8f3d9w3bqnm2fl15q3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Raid logiciel (mdadm)</title>
    <ns>1</ns>
    <id>1090</id>
    <revision>
      <id>4512</id>
      <timestamp>2012-10-19T13:04:10Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <comment>Page créée avec « Salut,  J'ai voulu suivre l'installation raid1/lvm : dommage que l'outil &quot;partman&quot; auquel il renvoie ne fasse pas partie de la panoplie Debian ;) Goodluck47 (je ne sais pl... »</comment>
      <text xml:space="preserve" bytes="181">Salut,

J'ai voulu suivre l'installation raid1/lvm : dommage que l'outil &quot;partman&quot; auquel il renvoie ne fasse pas partie de la panoplie Debian ;)
Goodluck47 (je ne sais plus signer)</text>
      <sha1>7ziu2x5gcr36toxi4fldbkjay6klpca</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Reinstallation rapide</title>
    <ns>1</ns>
    <id>425</id>
    <revision>
      <id>1567</id>
      <timestamp>2010-06-21T13:38:05Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « Salut, Je pense qu'il y a une erreur. La commande pour installer la liste &quot;importée&quot; dans la nouvelle machine est :   # apt-get -u dselect-upgrade et non  # apt-get upgrade … »</comment>
      <text xml:space="preserve" bytes="232">Salut,
Je pense qu'il y a une erreur.
La commande pour installer la liste &quot;importée&quot; dans la nouvelle machine est :

 # apt-get -u dselect-upgrade
et non
 # apt-get upgrade
--[[Utilisateur:Lol|Lol]] 21 juin 2010 à 13:38 (UTC)
----</text>
      <sha1>b6uirgzr6zns1znrp7y1e6u690qj7m6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Sauvegarde et clonage d'un système</title>
    <ns>1</ns>
    <id>256</id>
    <revision>
      <id>1120</id>
      <timestamp>2010-03-05T00:04:13Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <comment>Page créée avec « Relu, impec, merci ! ~~~ »</comment>
      <text xml:space="preserve" bytes="52">Relu, impec, merci !
[[Utilisateur:Ricardo|Ricardo]]</text>
      <sha1>1n8w0ut141nrvzb5otwt1j2ost8a3ps</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1134</id>
      <parentid>1120</parentid>
      <timestamp>2010-03-13T23:12:38Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>Restauration ?</comment>
      <text xml:space="preserve" bytes="178">Relu, impec, merci !
[[Utilisateur:Ricardo|Ricardo]]

Il manque pas une partie sur comment restaurer les sauvegardes en cas de problème ? [[Utilisateur:MisterFreez|MisterFreez]]</text>
      <sha1>cjo0lk7g9ophhk1gdwsvjdmiu2hfau2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Sauvegarder sa Debian en vue d'une Réinstallation ou Reconstruction - Racine et Home séparées</title>
    <ns>1</ns>
    <id>915</id>
    <redirect title="Discussion:Sauvegarder sa Debian en vue d&#039;une Réinstallation ou Reconstruction - Racine et Home séparés" />
    <revision>
      <id>3800</id>
      <timestamp>2012-02-05T16:27:36Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <comment>a déplacé [[Discussion:Sauvegarder sa Debian en vue d'une Réinstallation ou Reconstruction - Racine et Home séparées]] vers [[Discussion:Sauvegarder sa Debian en vue d'une Réinstallation ou Reconstruction - Racine et Home séparés]]</comment>
      <text xml:space="preserve" bytes="123">#REDIRECTION [[Discussion:Sauvegarder sa Debian en vue d'une Réinstallation ou Reconstruction - Racine et Home séparés]]</text>
      <sha1>skgvm9s3icgw6egh4rmot90682cdugp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Sauvegarder sa Debian en vue d'une Réinstallation ou Reconstruction - Racine et Home séparés</title>
    <ns>1</ns>
    <id>911</id>
    <revision>
      <id>3792</id>
      <timestamp>2012-02-04T16:49:33Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <comment>Page créée avec « Salut,  Merci de bien vouloir rectifier le titre  == Sauvegarder sa Debian, en vue d'une Réinstallation ou Reconstruction. &quot;Racine et Home séparés&quot;. == »</comment>
      <text xml:space="preserve" bytes="154">Salut,

Merci de bien vouloir rectifier le titre 
== Sauvegarder sa Debian, en vue d'une Réinstallation ou Reconstruction. &quot;Racine et Home séparés&quot;. ==</text>
      <sha1>ebls0knyf7hmm5zptcmmftu2gv7xepy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3795</id>
      <parentid>3792</parentid>
      <timestamp>2012-02-05T16:25:41Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <minor/>
      <comment>a déplacé [[Discussion:Sauvegardé sa Debian, en vue d'une Réinstallation ou Reconstruction. &quot;Racine et Home séparées&quot;.]] vers [[Discussion:Sauvegarder sa Debian en vue d'une Réinstallation ou Reconstruction - Racine et Home séparées]]</comment>
      <text xml:space="preserve" bytes="154">Salut,

Merci de bien vouloir rectifier le titre 
== Sauvegarder sa Debian, en vue d'une Réinstallation ou Reconstruction. &quot;Racine et Home séparés&quot;. ==</text>
      <sha1>ebls0knyf7hmm5zptcmmftu2gv7xepy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3799</id>
      <parentid>3795</parentid>
      <timestamp>2012-02-05T16:27:36Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <minor/>
      <comment>a déplacé [[Discussion:Sauvegarder sa Debian en vue d'une Réinstallation ou Reconstruction - Racine et Home séparées]] vers [[Discussion:Sauvegarder sa Debian en vue d'une Réinstallation ou Reconstruction - Racine et Home séparés]]</comment>
      <text xml:space="preserve" bytes="154">Salut,

Merci de bien vouloir rectifier le titre 
== Sauvegarder sa Debian, en vue d'une Réinstallation ou Reconstruction. &quot;Racine et Home séparés&quot;. ==</text>
      <sha1>ebls0knyf7hmm5zptcmmftu2gv7xepy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3801</id>
      <parentid>3799</parentid>
      <timestamp>2012-02-05T16:28:45Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <text xml:space="preserve" bytes="178">Salut,

Merci de bien vouloir rectifier le titre 
== Sauvegarder sa Debian, en vue d'une Réinstallation ou Reconstruction. &quot;Racine et Home séparés&quot;. ==
----
Fait par lol.
----</text>
      <sha1>t0mc5l5we2cml7sz45s7qes8vlejdpm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Sauvegardé sa Debian, en vue d'une Réinstallation ou Reconstruction. &quot;Racine et Home séparées&quot;.</title>
    <ns>1</ns>
    <id>913</id>
    <redirect title="Discussion:Sauvegarder sa Debian en vue d&#039;une Réinstallation ou Reconstruction - Racine et Home séparées" />
    <revision>
      <id>3796</id>
      <timestamp>2012-02-05T16:25:41Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <comment>a déplacé [[Discussion:Sauvegardé sa Debian, en vue d'une Réinstallation ou Reconstruction. &quot;Racine et Home séparées&quot;.]] vers [[Discussion:Sauvegarder sa Debian en vue d'une Réinstallation ou Reconstruction - Racine et Home séparées]]</comment>
      <text xml:space="preserve" bytes="124">#REDIRECTION [[Discussion:Sauvegarder sa Debian en vue d'une Réinstallation ou Reconstruction - Racine et Home séparées]]</text>
      <sha1>nzhcqxoym5tnr4vj8886wvd6hdgwujk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Serveur sftp +rssh+chroot</title>
    <ns>1</ns>
    <id>1199</id>
    <revision>
      <id>4938</id>
      <timestamp>2013-01-23T12:22:28Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <comment>Page créée avec « Des symboles bizarres sont introduits dans le script de copie de sftp, non? »</comment>
      <text xml:space="preserve" bytes="75">Des symboles bizarres sont introduits dans le script de copie de sftp, non?</text>
      <sha1>j4z0xb8uwkinzfaptio4yhocs7elpzk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Serveurs basse consommation</title>
    <ns>1</ns>
    <id>627</id>
    <revision>
      <id>2623</id>
      <timestamp>2010-12-29T15:28:01Z</timestamp>
      <contributor>
        <username>Blacksad</username>
        <id>79</id>
      </contributor>
      <comment>Page créée avec « Alix2d2: consommation de 7V à 20V  Je ne trouve pas ça très parlant. De plus il ne doit pas y'avoir une notion de temps dans le fait d’estimer une consommation ? C'est 7... »</comment>
      <text xml:space="preserve" bytes="197">Alix2d2: consommation de 7V à 20V

Je ne trouve pas ça très parlant.
De plus il ne doit pas y'avoir une notion de temps dans le fait d’estimer une consommation ?
C'est 7V par seconde, par an ?</text>
      <sha1>flring1m8zbw0kwm1oqa9t7a0oju3nt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2624</id>
      <parentid>2623</parentid>
      <timestamp>2010-12-29T16:04:04Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <text xml:space="preserve" bytes="398">Alix2d2: consommation de 7V à 20V

Je ne trouve pas ça très parlant.
De plus il ne doit pas y'avoir une notion de temps dans le fait d’estimer une consommation ?
C'est 7V par seconde, par an ?
Blacksad

__________________________

Qu'est ce qui fait que l'Alix2d2 ne rentre pas dans la partie « Serveurs classiques » ?
[[Utilisateur:MisterFreez|MisterFreez]] 29 décembre 2010 à 10:04 (CST)</text>
      <sha1>o50my8b5chrnva2hxvetlvmflbvupj8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2626</id>
      <parentid>2624</parentid>
      <timestamp>2010-12-29T17:51:38Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1045">Alix2d2: consommation de 7V à 20V

Je ne trouve pas ça très parlant.
De plus il ne doit pas y'avoir une notion de temps dans le fait d’estimer une consommation ?
C'est 7V par seconde, par an ?
Blacksad

__________________________

Qu'est ce qui fait que l'Alix2d2 ne rentre pas dans la partie « Serveurs classiques » ?
[[Utilisateur:MisterFreez|MisterFreez]] 29 décembre 2010 à 10:04 (CST)

----
:mrgreen: J'étais le premier à mettre une conso les gars...Et j'ai recopié les spécificités du constructeur. Pour les W/h il a fallut chercher...

Je l'ai mis à par car tu ne peux pas insaller une Debian comme sur n'importe quelle machine. C'est sur une CF en lecture seule, pas de CG, c'est vraiment à part. D'ailleurs c'est un peu &quot;exagéré&quot; de ma part d'avoir mis l'Alix, car faire un serveur avec c'est un peu chaud... Une passerelle/pare-feu tout au plus. Ou alors il faut lui adjoindre un disque USB...
@Blacksad, pour signer, c'est 4 tildes : &lt;nowiki&gt;~~~~&lt;/nowiki&gt; ;-)
[[Utilisateur:Lol|Lol]] 29 décembre 2010 à 11:51 (CST)</text>
      <sha1>8sv3jbeu5f3iw7xkge7wmjbyd4xi6jp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2627</id>
      <parentid>2626</parentid>
      <timestamp>2010-12-29T17:52:40Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1065">Alix2d2: consommation de 7V à 20V

Je ne trouve pas ça très parlant.
De plus il ne doit pas y'avoir une notion de temps dans le fait d’estimer une consommation ?
C'est 7V par seconde, par an ?
Blacksad

__________________________

Qu'est ce qui fait que l'Alix2d2 ne rentre pas dans la partie « Serveurs classiques » ?
[[Utilisateur:MisterFreez|MisterFreez]] 29 décembre 2010 à 10:04 (CST)

----
&lt;nowiki&gt;:mrgreen:&lt;/nowiki&gt; J'étais le premier à mettre une conso les gars... Et j'ai recopié les spécificités du constructeur. Pour les W/h il a fallut chercher...

Je l'ai mis à part car tu ne peux pas installer une Debian comme sur n'importe quelle machine. C'est sur une CF en lecture seule, pas de CG, c'est vraiment à part. D'ailleurs c'est un peu &quot;exagéré&quot; de ma part d'avoir mis l'Alix, car faire un serveur avec c'est un peu chaud... Une passerelle/pare-feu tout au plus. Ou alors il faut lui adjoindre un disque USB...
@Blacksad, pour signer, c'est 4 tildes : &lt;nowiki&gt;~~~~&lt;/nowiki&gt; ;-)
[[Utilisateur:Lol|Lol]] 29 décembre 2010 à 11:51 (CST)</text>
      <sha1>p1s83enalhsugrir17jqno8kaz1uoov</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2628</id>
      <parentid>2627</parentid>
      <timestamp>2010-12-29T18:35:19Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <text xml:space="preserve" bytes="1233">Alix2d2: consommation de 7V à 20V

Je ne trouve pas ça très parlant.
De plus il ne doit pas y'avoir une notion de temps dans le fait d’estimer une consommation ?
C'est 7V par seconde, par an ?
Blacksad

__________________________

Qu'est ce qui fait que l'Alix2d2 ne rentre pas dans la partie « Serveurs classiques » ?
[[Utilisateur:MisterFreez|MisterFreez]] 29 décembre 2010 à 10:04 (CST)

----
&lt;nowiki&gt;:mrgreen:&lt;/nowiki&gt; J'étais le premier à mettre une conso les gars... Et j'ai recopié les spécificités du constructeur. Pour les W/h il a fallut chercher...

Je l'ai mis à part car tu ne peux pas installer une Debian comme sur n'importe quelle machine. C'est sur une CF en lecture seule, pas de CG, c'est vraiment à part. D'ailleurs c'est un peu &quot;exagéré&quot; de ma part d'avoir mis l'Alix, car faire un serveur avec c'est un peu chaud... Une passerelle/pare-feu tout au plus. Ou alors il faut lui adjoindre un disque USB...
@Blacksad, pour signer, c'est 4 tildes : &lt;nowiki&gt;~~~~&lt;/nowiki&gt; ;-)
[[Utilisateur:Lol|Lol]] 29 décembre 2010 à 11:51 (CST)

Salut,

Rappel : La consommation s'exprime en Wh (watts par heure) et pas en volts :D [[Utilisateur:Ggoodluck47|Amicalement, Gerard]] 29 décembre 2010 à 12:35 (CST)</text>
      <sha1>q3oqybbcd0ki52agd8jigepgw8o8gzw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Sources.list</title>
    <ns>1</ns>
    <id>1092</id>
    <revision>
      <id>4519</id>
      <timestamp>2012-10-19T19:53:14Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>Article redondant</comment>
      <text xml:space="preserve" bytes="482">Le contenu de cet article a été repris dans l'article &quot;Sources de paquets : les bases&quot;. Conserver cet article comme source de ce nouvel article peut être intéressant, mais je pense qu'il faudrait que ce dernier le remplace dans le sommaire. Il pourrait aussi être intéressant de signaler en tête de cet article qu'il est obsolète, avec un lien vers le nouvel article.

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 19 octobre 2012 à 21:53 (CEST)</text>
      <sha1>ncxnyjgvtadmj4533carudp9z1qu7n1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4523</id>
      <parentid>4519</parentid>
      <timestamp>2012-10-19T21:03:14Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="763">Le contenu de cet article a été repris dans l'article &quot;Sources de paquets : les bases&quot;. Conserver cet article comme source de ce nouvel article peut être intéressant, mais je pense qu'il faudrait que ce dernier le remplace dans le sommaire. Il pourrait aussi être intéressant de signaler en tête de cet article qu'il est obsolète, avec un lien vers le nouvel article.

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 19 octobre 2012 à 21:53 (CEST)

J'ai enfin trouvé comment modifier le sommaire de la page d'accueil :-D Je vais remplacer cet article par le nouveau, celui-ci restera visible dans les sources du nouveau.

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 19 octobre 2012 à 23:03 (CEST)</text>
      <sha1>mioglcdgprsdetbu4gd3k1xp2b3zgrl</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Ssh</title>
    <ns>1</ns>
    <id>1101</id>
    <revision>
      <id>4549</id>
      <timestamp>2012-10-27T14:49:39Z</timestamp>
      <contributor>
        <username>SmallFitz</username>
        <id>241</id>
      </contributor>
      <comment>Serait peut être mieux placé dans la catégorie [[:Catégorie:Serveurs|Serveurs]] ?</comment>
      <text xml:space="preserve" bytes="250">Salut, je cherchais ce sujet dans la catégorie [[:Catégorie:Serveurs|Serveurs]]. Il serait peut être mieux placé là bas ? Cdlt, [[Utilisateur:SmallFitz|SmallFitz]] ([[Discussion utilisateur:SmallFitz|discussion]]) 27 octobre 2012 à 16:49 (CEST)</text>
      <sha1>c0gqbz71e4580no38adme698c3nl1jj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4551</id>
      <parentid>4549</parentid>
      <timestamp>2012-10-28T05:03:17Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="436">Salut, je cherchais ce sujet dans la catégorie [[:Catégorie:Serveurs|Serveurs]]. Il serait peut être mieux placé là bas ? Cdlt, [[Utilisateur:SmallFitz|SmallFitz]] ([[Discussion utilisateur:SmallFitz|discussion]]) 27 octobre 2012 à 16:49 (CEST)
----
Salut, j'ai ajouté [serveur]. Il y a le aussi le &quot;client&quot;, je laisse [logiciels]
[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 28 octobre 2012 à 06:03 (CET)</text>
      <sha1>54i629t1xbr6ly9tej5tucf809h1vqt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Stable</title>
    <ns>1</ns>
    <id>1094</id>
    <revision>
      <id>4529</id>
      <timestamp>2012-10-19T21:23:18Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>Page créée avec « Un autre article qui à mon avis gagnerait à ne pas exister tant qu'on n'a pas de véritable contenu à y mettre.  ~~~~ »</comment>
      <text xml:space="preserve" bytes="221">Un autre article qui à mon avis gagnerait à ne pas exister tant qu'on n'a pas de véritable contenu à y mettre.

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 19 octobre 2012 à 23:23 (CEST)</text>
      <sha1>95ukkxxjbwsqlivel6v3uix9c4u1j4i</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Sécuriser Apache2</title>
    <ns>1</ns>
    <id>1224</id>
    <revision>
      <id>5054</id>
      <timestamp>2013-03-16T11:49:22Z</timestamp>
      <contributor>
        <username>Agentsteel</username>
        <id>260</id>
      </contributor>
      <comment>htpasswords</comment>
      <text xml:space="preserve" bytes="361">En ce qui concerne la partie &quot;protéger par mot de passe un répertoire&quot;, ne vaudrait-il pas mieux préconiser de stocker le fichier htpasswd ailleurs quand dans l'arborescence /var/www ? (le stocker dans /etc/apache2/passwords/) par exemple.
--[[Utilisateur:Agentsteel|Agentsteel]] ([[Discussion utilisateur:Agentsteel|discussion]]) 16 mars 2013 à 12:49 (CET)</text>
      <sha1>57ms6vr4rgen1s0m6ka8c15oz8ry0ff</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5072</id>
      <parentid>5054</parentid>
      <timestamp>2013-03-25T17:54:07Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="584">En ce qui concerne la partie &quot;protéger par mot de passe un répertoire&quot;, ne vaudrait-il pas mieux préconiser de stocker le fichier htpasswd ailleurs quand dans l'arborescence /var/www ? (le stocker dans /etc/apache2/passwords/) par exemple.
--[[Utilisateur:Agentsteel|Agentsteel]] ([[Discussion utilisateur:Agentsteel|discussion]]) 16 mars 2013 à 12:49 (CET)
----
Salut,
Désolé pour le retard de réponse... Le mot de passe n'est pas en clair ? Je ne vois pas trop l'intérêt. Non ?
[[Utilisateur:Lol|Lol]] ([[Discussion utilisateur:Lol|discussion]]) 25 mars 2013 à 18:54 (CET)</text>
      <sha1>awaxmydnl9tzu8wpuj76dqj28zm0v0c</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Tasksel</title>
    <ns>1</ns>
    <id>456</id>
    <revision>
      <id>1756</id>
      <timestamp>2010-07-28T09:15:01Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <comment>Page créée avec « &quot;Tâches disponibles&quot; et &quot;liste des tâches&quot;, c'est sensiblement la même chose, non? ~~~~ »</comment>
      <text xml:space="preserve" bytes="144">&quot;Tâches disponibles&quot; et &quot;liste des tâches&quot;, c'est sensiblement la même chose, non? [[Utilisateur:L0u!$|L0u!$]] 28 juillet 2010 à 09:15 (UTC)</text>
      <sha1>c5e7uu2j3tz022m1jcbzwqawmdjye12</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1757</id>
      <parentid>1756</parentid>
      <timestamp>2010-07-28T14:00:09Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="242">&quot;Tâches disponibles&quot; et &quot;liste des tâches&quot;, c'est sensiblement la même chose, non? [[Utilisateur:L0u!$|L0u!$]] 28 juillet 2010 à 09:15 (UTC)
----
C'était pour remplir... Je rectifie. [[Utilisateur:Lol|Lol]] 28 juillet 2010 à 14:00 (UTC)</text>
      <sha1>5k9br76oblcnpu0xc66kjd4qy2cv3kr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:TestDisk et PhotoRec</title>
    <ns>1</ns>
    <id>740</id>
    <revision>
      <id>3263</id>
      <timestamp>2011-08-11T16:02:13Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « Salut, Dommage qu'il n'y ait pas d'exemples d'utilisation... ~~~~ ---- »</comment>
      <text xml:space="preserve" bytes="118">Salut,
Dommage qu'il n'y ait pas d'exemples d'utilisation...
[[Utilisateur:Lol|Lol]] 11 août 2011 à 11:02 (CDT)
----</text>
      <sha1>0vmtf1kka7s0h7f83q9jo94vqvq29fq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Trucs et astuces pour la console</title>
    <ns>1</ns>
    <id>275</id>
    <revision>
      <id>1189</id>
      <timestamp>2010-03-27T15:07:35Z</timestamp>
      <contributor>
        <username>Kna</username>
        <id>35</id>
      </contributor>
      <comment>dash, bash, zsh, ... ???</comment>
      <text xml:space="preserve" bytes="224">Il faudrait peut-être indiquer pour chaque astuce, avec quel(s) shell(s) elle fonctionne.
Je sais que help, history (et tout ce qui va avec) ne fonctionnent pas sous dash. Idem pour les accolades. Mais quid de zsh ?
[[kna]]</text>
      <sha1>pobybx6rh7w2a7f5f3qq3qfy9ej1yp6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Utilisation de clefs et raccourcis ssh</title>
    <ns>1</ns>
    <id>122</id>
    <revision>
      <id>555</id>
      <timestamp>2010-01-30T11:38:48Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « François, je me suis permis d'ajouter un raccourcis vers le glossaire pour SSH, ainsi qu'un menu catégorie (en haut à droite) ~~~ ---- »</comment>
      <text xml:space="preserve" bytes="157">François, je me suis permis d'ajouter un raccourcis vers le glossaire pour SSH, ainsi qu'un menu catégorie (en haut à droite) [[Utilisateur:Lol|Lol]]
----</text>
      <sha1>loap3kvellyym70r97iw3akrepm6m2u</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Discussion:Wacom bamboo pen&amp;touch</title>
    <ns>1</ns>
    <id>692</id>
    <revision>
      <id>3003</id>
      <timestamp>2011-05-22T09:50:17Z</timestamp>
      <contributor>
        <username>Valrik</username>
        <id>130</id>
      </contributor>
      <minor/>
      <comment>Proposition de quelques améliorations.</comment>
      <text xml:space="preserve" bytes="1189">Une aide dès plus utile, puisque depuis son application, ma tablette fonctionne !

Néanmoins, comme tout est perfectible et que les choses évoluent vite, j'aurais quelques petites remarques à formuler :
 - dire peut-être un mot sur les fichiers d'en-têtes du noyau qui sont absolument nécessaires ! (Je me suis fais piéger là dessus :-( ),
 - le &quot;#make clean&quot; est sans doute superflu puisque l'on a encore rien compiler,
 - la séquence &quot;#make clean, #./configure --enable-wacom --prefix=/usr, #make&quot; peut se faire sans être root puisque on travaille dans l'espace utilisateur et avec les droits qui vont avec. Moins on travaille en &quot;root&quot;, mieux c'est !
 - je n'ai jamais réussi à intégrer le patch... Pourtant, les fonctions de bases de la tablette sont opérationnelles. je me demande s'il est encore nécessaire...?
 - Au sujet du fichier .fdi, il y a certainement un problème d'encadrement du code,
 - toujours sur ce fichier, peut-être faudrait-il donner une explication très succincte sur son utilité. Ne sachant pas à quoi il sert, je ne l'ai pas encore intégré.

Voilà, j'espère avoir contribué à mon niveau à l'amélioration de ce wiki.

Bon courage  ;-)</text>
      <sha1>67xmqo5kug3i02jm3inlekf8imnq10c</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3004</id>
      <parentid>3003</parentid>
      <timestamp>2011-05-22T09:51:51Z</timestamp>
      <contributor>
        <username>Valrik</username>
        <id>130</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1189">Une aide dès plus utile, puisque depuis son application, ma tablette fonctionne !

Néanmoins, comme tout est perfectible et que les choses évoluent vite, j'aurais quelques petites remarques à formuler :
 - dire peut-être un mot sur les fichiers d'en-têtes du noyau qui sont absolument nécessaires ! (Je me suis fais piéger là dessus :-( ),
 o le &quot;#make clean&quot; est sans doute superflu puisque l'on a encore rien compiler,
 o la séquence &quot;#make clean, #./configure --enable-wacom --prefix=/usr, #make&quot; peut se faire sans être root puisque on travaille dans l'espace utilisateur et avec les droits qui vont avec. Moins on travaille en &quot;root&quot;, mieux c'est !
 o je n'ai jamais réussi à intégrer le patch... Pourtant, les fonctions de bases de la tablette sont opérationnelles. je me demande s'il est encore nécessaire...?
 o Au sujet du fichier .fdi, il y a certainement un problème d'encadrement du code,
 o toujours sur ce fichier, peut-être faudrait-il donner une explication très succincte sur son utilité. Ne sachant pas à quoi il sert, je ne l'ai pas encore intégré.

Voilà, j'espère avoir contribué à mon niveau à l'amélioration de ce wiki.

Bon courage  ;-)</text>
      <sha1>7989zz2qgyrmpw8v4qigv0myg7vj00k</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3005</id>
      <parentid>3004</parentid>
      <timestamp>2011-05-22T09:55:16Z</timestamp>
      <contributor>
        <username>Valrik</username>
        <id>130</id>
      </contributor>
      <minor/>
      <comment>Proposition de quelques améliorations.</comment>
      <text xml:space="preserve" bytes="1195">Une aide dès plus utile, puisque depuis son application, ma tablette fonctionne !

Néanmoins, comme tout est perfectible et que les choses évoluent vite, j'aurais quelques petites remarques à formuler :
 - dire peut-être un mot sur les fichiers d'en-têtes du noyau qui sont absolument nécessaires ! (Je me suis fais
 piéger là dessus :-( ),
 o le &quot;#make clean&quot; est sans doute superflu puisque l'on n'a encore rien compiler,
 o la séquence &quot;#make clean, #./configure --enable-wacom --prefix=/usr, #make&quot; peut se faire sans être root puisque
 on travaille dans l'espace utilisateur et avec les droits qui vont avec. Moins on travaille en &quot;root&quot;, mieux c'est !
 o je n'ai jamais réussi à intégrer le patch... Pourtant, les fonctions de bases de la tablette sont opérationnelles.
 je me demande s'il est encore nécessaire...?
 o Au sujet du fichier .fdi, il y a certainement un problème d'encadrement du code,
 o toujours sur ce fichier, peut-être faudrait-il donner une explication très succincte sur son utilité. Ne sachant
 pas à quoi il sert, je ne l'ai pas encore intégré.

Voilà, j'espère avoir contribué à mon niveau à l'amélioration de ce wiki.

Bon courage  ;-)</text>
      <sha1>1r9augmft0rwvgf78vkrq76ijpgcfi0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3006</id>
      <parentid>3005</parentid>
      <timestamp>2011-05-22T09:56:20Z</timestamp>
      <contributor>
        <username>Valrik</username>
        <id>130</id>
      </contributor>
      <minor/>
      <comment>Proposition de quelques améliorations.</comment>
      <text xml:space="preserve" bytes="1195">Une aide dès plus utile, puisque depuis son application, ma tablette fonctionne !

Néanmoins, comme tout est perfectible et que les choses évoluent vite, j'aurais quelques petites remarques à formuler :
 o dire peut-être un mot sur les fichiers d'en-têtes du noyau qui sont absolument nécessaires ! (Je me suis fais
 piéger là dessus :-( ),
 o le &quot;#make clean&quot; est sans doute superflu puisque l'on n'a encore rien compiler,
 o la séquence &quot;#make clean, #./configure --enable-wacom --prefix=/usr, #make&quot; peut se faire sans être root puisque
 on travaille dans l'espace utilisateur et avec les droits qui vont avec. Moins on travaille en &quot;root&quot;, mieux c'est !
 o je n'ai jamais réussi à intégrer le patch... Pourtant, les fonctions de bases de la tablette sont opérationnelles.
 je me demande s'il est encore nécessaire...?
 o Au sujet du fichier .fdi, il y a certainement un problème d'encadrement du code,
 o toujours sur ce fichier, peut-être faudrait-il donner une explication très succincte sur son utilité. Ne sachant
 pas à quoi il sert, je ne l'ai pas encore intégré.

Voilà, j'espère avoir contribué à mon niveau à l'amélioration de ce wiki.

Bon courage  ;-)</text>
      <sha1>huw4n7ltfv7fcukc02yetdvpotvjixt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Displaylink</title>
    <ns>0</ns>
    <id>1243</id>
    <revision>
      <id>5100</id>
      <timestamp>2013-04-20T20:53:55Z</timestamp>
      <contributor>
        <username>Piratebab</username>
        <id>50</id>
      </contributor>
      <comment>Page créée avec « Ce tuto est destiné a vous aider a faire fonctionner un écran touchscreen USB. CE tuto n'a été validé que sur un seul équipement (un dreamplug type DS2-113), il a be... »</comment>
      <text xml:space="preserve" bytes="3067">Ce tuto est destiné a vous aider a faire fonctionner un écran touchscreen USB.
CE tuto n'a été validé que sur un seul équipement (un dreamplug type DS2-113), il a besoin d'être validé sur plusieurs équipements afin d'être considéré comme généralisable.


----

1- comment ça marche
Le driver noyau s'appelle udflb. Il a évolué au fil des évolutions du noyau linux. Si votre écran est bien reconnu, il affiche un écran vert, sinon, il peut afficher des couleurs changeantes, ou des damiers (ça dépend des modèles d'écran).
avec dmesg, vous devez voir des lignes du type:

 Apr 20 22:13:56 debian kernel: udlfb: DL chip limited to 1500000 pixel modes
udlfb: allocated 4 65024 byte urbs
  udlfb: 800x480 valid mode
  udlfb: Reallocating framebuffer. Addresses will change!
  udlfb: 800x480 valid mode
  udlfb: set_par mode 800x480
  udlfb: DisplayLink USB device /dev/fb0 attached. 800x480 resolution. Using 1504K framebuffer memory
  udlfb: open /dev/fb0 user=1 fb_info=df1ee800 count=1
  udlfb: released /dev/fb0 user=1 count=0
  udlfb: open /dev/fb0 user=1 fb_info=df1ee800 count=1
  udlfb: open /dev/fb0 user=1 fb_info=df1ee800 count=2
  udlfb: mmap() framebuffer addr:3769905152 size:770048

Ensuite, au lancement de xorg, un module de celui ci doit dialoguer aves le driver udlfb, et c'est là que les ennuis commences, car ils doivent partager la même façon de parler. et ça change suivant les versions


   kernel 2.6.38
les versions de udlfb et du driver xorg sont compatible, il suffit d'activer une option de udflb
  echo options udlfb fb_defio=1 &gt;&gt; /etc/modprobe.d/local

   kernel 3.04
là, c'est un peu plus compliqué. Le driver xorg n'est plus compatible avec udlfb (au moment où cet article est rédigé). Il va falloir compiler un nouveau driver, et dire à xorg de l'utiliser.
Je suppose que vous avez installé tout ce qu'il faut pour compiler, ainsi que le gestionnaire de version git

 git clone http://git.plugable.com/webdav/xf-video-udlfb
 cd xf-video-udlfb
 ./configure
 make &amp;&amp; make install

on crée un lien symbolique avec le nouveau driver (l'emplacement peut être différent en 64b)
 ln -s /usr/local/lib/xorg/modules/drivers/displaylink_drv.so /usr/lib/xorg/modules/drivers/

 
On va maintenant dire à xorg d'utiliser ce nouveau driver, sans écrire de fichier xorg.conf, mais en utilisant un fichier partiel de config.
dans /usr/share/X11/xorg.conf.d créer le fichier 10-displaylink.conf (je sais ce n'est pas le répertoire recommander dans la doc pour un fichier de conf utilisateur, ce répertoire est réservé à la distribution)

 Section &quot;Screen&quot;
         Identifier &quot;Screen1&quot;
         Device     &quot;Card1&quot;
         Monitor    &quot;Monitor1&quot;

 EndSection

 Section &quot;Device&quot;
         Identifier  &quot;Card1&quot;
         Driver      &quot;displaylink&quot;
         Option &quot;fbdev&quot; &quot;/dev/fb0&quot;
 EndSection

 section &quot;Monitor&quot;
         Identifier &quot;Monitor1&quot;
 EndSection

Au prochain, boot, votre touchscreen devrait afficher le serverX.

source: http://nameq.wordpress.com/2011/09/21/displaylink-dl-165-running-on-linux-fedora/</text>
      <sha1>ihmurobxffe8t4n70qm262dppq598p0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5101</id>
      <parentid>5100</parentid>
      <timestamp>2013-04-21T08:06:15Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3094">Ce tuto est destiné à vous aider à faire fonctionner un écran touchscreen USB.
Ce tuto n'a été validé que sur un seul équipement (un dreamplug type DS2-113), il a besoin d'être validé sur plusieurs équipements afin d'être considéré comme généralisable.


----

1- comment ça marche
Le driver noyau se nomme udflb. Il a évolué au fil des évolutions du noyau linux. Si votre écran est bien reconnu, il affiche un écran vert, sinon, il peut afficher des couleurs changeantes, ou des damiers (ça dépend des modèles d'écran).
avec dmesg, vous devez voir des lignes du type:

 Apr 20 22:13:56 debian kernel: udlfb: DL chip limited to 1500000 pixel modes
udlfb: allocated 4 65024 byte urbs
  udlfb: 800x480 valid mode
  udlfb: Reallocating framebuffer. Addresses will change!
  udlfb: 800x480 valid mode
  udlfb: set_par mode 800x480
  udlfb: DisplayLink USB device /dev/fb0 attached. 800x480 resolution. Using 1504K framebuffer memory
  udlfb: open /dev/fb0 user=1 fb_info=df1ee800 count=1
  udlfb: released /dev/fb0 user=1 count=0
  udlfb: open /dev/fb0 user=1 fb_info=df1ee800 count=1
  udlfb: open /dev/fb0 user=1 fb_info=df1ee800 count=2
  udlfb: mmap() framebuffer addr:3769905152 size:770048

Ensuite, au lancement de xorg, un module de celui ci doit dialoguer avec le driver udlfb, et c'est là que les ennuis commencent, car ils doivent partager la même façon de parler. et ça change suivant les versions :  

kernel 2.6.38, les versions de udlfb et du driver xorg sont compatible, il suffit d'activer une option de udflb
  echo options udlfb fb_defio=1 &gt;&gt; /etc/modprobe.d/local

kernel 3.04, là, c'est un peu plus compliqué. Le driver xorg n'est plus compatible avec udlfb (au moment où cet article est rédigé). Il va falloir compiler un nouveau driver, et dire à xorg de l'utiliser.
Je suppose que vous avez installé tout ce qu'il faut pour compiler, ainsi que le gestionnaire de version git

 git clone http://git.plugable.com/webdav/xf-video-udlfb
 cd xf-video-udlfb
 ./configure
 make &amp;&amp; make install

on crée un lien symbolique avec le nouveau driver (l'emplacement peut être différent en 64b)
 ln -s /usr/local/lib/xorg/modules/drivers/displaylink_drv.so /usr/lib/xorg/modules/drivers/

 
On va maintenant dire à xorg d'utiliser ce nouveau driver, sans écrire de fichier xorg.conf, mais en utilisant un fichier partiel de configuration.
dans /usr/share/X11/xorg.conf.d créer le fichier 10-displaylink.conf (je sais ce n'est pas le répertoire recommandé dans la documentation pour un fichier de configuration utilisateur, ce répertoire est réservé à la distribution)

 Section &quot;Screen&quot;
         Identifier &quot;Screen1&quot;
         Device     &quot;Card1&quot;
         Monitor    &quot;Monitor1&quot;

 EndSection

 Section &quot;Device&quot;
         Identifier  &quot;Card1&quot;
         Driver      &quot;displaylink&quot;
         Option &quot;fbdev&quot; &quot;/dev/fb0&quot;
 EndSection

 section &quot;Monitor&quot;
         Identifier &quot;Monitor1&quot;
 EndSection

Au prochain, boot, votre touchscreen devrait afficher le serverX.

source: http://nameq.wordpress.com/2011/09/21/displaylink-dl-165-running-on-linux-fedora/</text>
      <sha1>r6mffp45towhvwqwtpo1yk6es0plswr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Disque-plein</title>
    <ns>0</ns>
    <id>1046</id>
    <redirect title="Partition-pleine" />
    <revision>
      <id>4370</id>
      <timestamp>2012-07-30T03:43:02Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <comment>WikiSysop a déplacé la page [[Disque-plein]] vers [[Partition-pleine]] : Risque de confusion disque/partition</comment>
      <text xml:space="preserve" bytes="33">#REDIRECTION [[Partition-pleine]]</text>
      <sha1>kchy29hz8u506wwl3m1qekroqesctzt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Divers</title>
    <ns>0</ns>
    <id>1144</id>
    <revision>
      <id>4693</id>
      <timestamp>2012-10-30T11:36:41Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « &lt;u&gt;'''Divers'''&lt;/u&gt;  {| width=&quot;100%&quot; | width=&quot;33%&quot; |•&amp;nbsp;[[Glossaire|Glossaire]] | width=&quot;33%&quot; |•&amp;nbsp;[[CheatcubeDebian| Le Cube &quot;astuces&quot; Debian]] | width=&quot;33%&quot; |... »</comment>
      <text xml:space="preserve" bytes="922">&lt;u&gt;'''Divers'''&lt;/u&gt;

{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Glossaire|Glossaire]]
| width=&quot;33%&quot; |•&amp;nbsp;[[CheatcubeDebian| Le Cube &quot;astuces&quot; Debian]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Cowsay_et_fortunes| Cowsay et fortunes]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[GNU/Linux_Distro_Timeline|GNU/Linux Distro Timeline]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Debian_Squeeze:_LDAP_-_Mandriva_Directory_Server_(MDS)|Installation de (MDS - Mandriva Directory Server) sur une Squeeze]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Manchot_vs_pingouin|Manchot vs pingouin]]
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Distributions Dérivées'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Installer_aptosid|Exemple d'installation de aptosid]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Installer_Debian_Voyage_sur_une_carte_Alix2d2|Installer Debian Voyage sur une carte Alix2d2]]
|
|}

----

{{Modèle:Accueil}}

[[Catégorie:DistributionsDérivées]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>iophlrnuise1jooun2c7cn34au0zm2l</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4718</id>
      <parentid>4693</parentid>
      <timestamp>2012-11-01T07:27:40Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1017">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Divers'''&lt;/u&gt;

{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Glossaire|Glossaire]]
| width=&quot;33%&quot; |•&amp;nbsp;[[CheatcubeDebian| Le Cube &quot;astuces&quot; Debian]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Cowsay_et_fortunes| Cowsay et fortunes]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[GNU/Linux_Distro_Timeline|GNU/Linux Distro Timeline]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Debian_Squeeze:_LDAP_-_Mandriva_Directory_Server_(MDS)|Installation de (MDS - Mandriva Directory Server) sur une Squeeze]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Manchot_vs_pingouin|Manchot vs pingouin]]
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Distributions Dérivées'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Installer_aptosid|Exemple d'installation de aptosid]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Installer_Debian_Voyage_sur_une_carte_Alix2d2|Installer Debian Voyage sur une carte Alix2d2]]
|
|}

----

{{Modèle:Accueil}}

[[Catégorie:DistributionsDérivées]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>ti71s7c5fux2s5i08wonoq317ogecm1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Documentation Latex</title>
    <ns>0</ns>
    <id>258</id>
    <revision>
      <id>1128</id>
      <timestamp>2010-03-13T22:47:46Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>J'écris cette page pour créer une catégorie sur les documentation que l'on peut trouver ailleurs (sur internet ou en livre)</comment>
      <text xml:space="preserve" bytes="1038">Cette page est là pour vous indiquer comment trouver de l'aider sur l'édition de document avec Latex.

=Livres=
==Latex pour l'impatient==
Prix : 14,90 €
Ce livre décris Latex d'une manière générale. Il est conçu pour les nouveaux (ou futurs) utilisateurs de Latex. Il décris l'installation sous Linux, Windows et MacOS. Ce livre est intéressant aussi pour les utilisateurs relativement confirmés car il décris des partis avancées de Latex (utilisation de Xetex, PGF,...). Seul bémol d'un point de vu technique, il est broché donc il est relativement fragile.

==Tout ce que vous n'avez jamais osé demandé sur Latex==
Prix : 15 € ([[http://www.framabook.org/latex possibilité de le télécharger gratuitement])
Livre très détaillé et très développé. Ce livre s'adresse à tout type d'utilisateurs du débutant (du moment qu'il est motivé) à l'expert.

=Sites internet=
==FAQ Grappa==
[[http://www.grappa.univ-lille3.fr/FAQ/Latex]]
Ce site est une vraie mine qui pourras répondre à beaucoup de vos questions.</text>
      <sha1>fgl3ye1s5xr07vzpbo6r1tvsdorn49b</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1135</id>
      <parentid>1128</parentid>
      <timestamp>2010-03-13T23:17:30Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <minor/>
      <comment>/* FAQ Grappa */</comment>
      <text xml:space="preserve" bytes="1083">Cette page est là pour vous indiquer comment trouver de l'aider sur l'édition de document avec Latex.

=Livres=
==Latex pour l'impatient==
Prix : 14,90 €
Ce livre décris Latex d'une manière générale. Il est conçu pour les nouveaux (ou futurs) utilisateurs de Latex. Il décris l'installation sous Linux, Windows et MacOS. Ce livre est intéressant aussi pour les utilisateurs relativement confirmés car il décris des partis avancées de Latex (utilisation de Xetex, PGF,...). Seul bémol d'un point de vu technique, il est broché donc il est relativement fragile.

==Tout ce que vous n'avez jamais osé demandé sur Latex==
Prix : 15 € ([[http://www.framabook.org/latex possibilité de le télécharger gratuitement])
Livre très détaillé et très développé. Ce livre s'adresse à tout type d'utilisateurs du débutant (du moment qu'il est motivé) à l'expert.

=Sites internet=
==FAQ Grappa==
[[http://www.grappa.univ-lille3.fr/FAQ/Latex Grappa]]
Ce site est une vraie mine qui pourras répondre à beaucoup de vos questions.

[[Catégorie:Documentation externe]]</text>
      <sha1>8mc3e5kdrwz420nlz7meajgyzp4263s</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1156</id>
      <parentid>1135</parentid>
      <timestamp>2010-03-16T18:38:16Z</timestamp>
      <contributor>
        <username>Kna</username>
        <id>35</id>
      </contributor>
      <minor/>
      <comment>Correction du lien FAQ Grappa</comment>
      <text xml:space="preserve" bytes="1096">Cette page est là pour vous indiquer comment trouver de l'aider sur l'édition de document avec Latex.

=Livres=
==Latex pour l'impatient==
Prix : 14,90 €
Ce livre décris Latex d'une manière générale. Il est conçu pour les nouveaux (ou futurs) utilisateurs de Latex. Il décris l'installation sous Linux, Windows et MacOS. Ce livre est intéressant aussi pour les utilisateurs relativement confirmés car il décris des partis avancées de Latex (utilisation de Xetex, PGF,...). Seul bémol d'un point de vu technique, il est broché donc il est relativement fragile.

==Tout ce que vous n'avez jamais osé demandé sur Latex==
Prix : 15 € ([[http://www.framabook.org/latex possibilité de le télécharger gratuitement])
Livre très détaillé et très développé. Ce livre s'adresse à tout type d'utilisateurs du débutant (du moment qu'il est motivé) à l'expert.

=Sites internet=
== FAQ Grappa ==
[[http://www.grappa.univ-lille3.fr/FAQ-LaTeX/index.html Grappa]]
Ce site est une vraie mine qui pourras répondre à beaucoup de vos questions.

[[Catégorie:Documentation externe]]</text>
      <sha1>j8v0b2jrt4ns6fb7t8yi36rvrd2557u</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1157</id>
      <parentid>1156</parentid>
      <timestamp>2010-03-16T18:50:37Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="1096">Cette page est là pour vous indiquer comment trouver de l'aider sur l'édition de document avec Latex.

=Livres=
==Latex pour l'impatient==
Prix : 14,90 €
Ce livre décris Latex d'une manière générale. Il est conçu pour les nouveaux (ou futurs) utilisateurs de Latex. Il décris l'installation sous Linux, Windows et MacOS. Ce livre est intéressant aussi pour les utilisateurs relativement confirmés car il décris des partis avancées de Latex (utilisation de Xetex, PGF,...). Seul bémol d'un point de vu technique, il est broché donc il est relativement fragile.

==Tout ce que vous n'avez jamais osé demander sur Latex==
Prix : 15 € ([[http://www.framabook.org/latex possibilité de le télécharger gratuitement])
Livre très détaillé et très développé. Ce livre s'adresse à tout type d'utilisateurs du débutant (du moment qu'il est motivé) à l'expert.

=Sites internet=
== FAQ Grappa ==
[[http://www.grappa.univ-lille3.fr/FAQ-LaTeX/index.html Grappa]]
Ce site est une vraie mine qui pourras répondre à beaucoup de vos questions.

[[Catégorie:Documentation externe]]</text>
      <sha1>3krgcbda7m4v5vfusgllkeux0n7ghkp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Documentation externe</title>
    <ns>0</ns>
    <id>1140</id>
    <revision>
      <id>4689</id>
      <timestamp>2012-10-30T11:19:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « &lt;u&gt;'''Documentation externe'''&lt;/u&gt;  {| width=&quot;100%&quot; | width=&quot;33%&quot; |•&amp;nbsp;[[Documentation_Latex|Documentation Latex]] | width=&quot;33%&quot; |•&amp;nbsp;[[Liens GNU/Linux Free Soft... »</comment>
      <text xml:space="preserve" bytes="281">&lt;u&gt;'''Documentation externe'''&lt;/u&gt;

{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Documentation_Latex|Documentation Latex]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Liens GNU/Linux Free Software OpenSource]]
|
|}


----

{{Modèle:Accueil}}

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>awkxw8nbxfqzpmarfc19jhao4trqsj2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4714</id>
      <parentid>4689</parentid>
      <timestamp>2012-11-01T07:26:36Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="376">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Documentation externe'''&lt;/u&gt;

{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Documentation_Latex|Documentation Latex]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Liens GNU/Linux Free Software OpenSource]]
|
|}


----

{{Modèle:Accueil}}

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>rd90eu6wy637sph4113c89kxue279y3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Dwm</title>
    <ns>0</ns>
    <id>26</id>
    <revision>
      <id>38</id>
      <timestamp>2010-01-21T18:31:09Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <comment>Page créée avec « [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24798 (page de Misterfreeze pour installer proprement dwm sur sa debian) ]   [http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=2… »</comment>
      <text xml:space="preserve" bytes="227">[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24798 (page de Misterfreeze pour installer proprement dwm sur sa debian) ]


[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=23322 (discussion autour de la configuration de dwm) ]</text>
      <sha1>sf87rjsn7xau1zdhewnow57zo26e0zk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>44</id>
      <parentid>38</parentid>
      <timestamp>2010-01-21T18:42:56Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="259">[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24798 (page de Misterfreeze pour installer proprement dwm sur sa debian) ]


[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=23322 (discussion autour de la configuration de dwm) ]


http://wiki.debian.org/fr/Dwm</text>
      <sha1>902hbd9acs1vx2126vg9a7koxze0gyw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>52</id>
      <parentid>44</parentid>
      <timestamp>2010-01-21T19:27:52Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="302">[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24798 (page de Misterfreeze pour installer proprement dwm sur sa debian) ]


[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=23322 (discussion autour de la configuration de dwm) ]


http://wiki.debian.org/fr/Dwm

[[Catégorie:Gestionnaires de fenêtres]]</text>
      <sha1>8w1qmpnd6evn6djs1b3wsrtcw2rk23h</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>582</id>
      <parentid>52</parentid>
      <timestamp>2010-01-31T01:29:02Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <text xml:space="preserve" bytes="1629">dwm est un gestionnaire de fenêtre tiling. Sa vrai particularité face à wmii et awesome c'est qu'il se configure à la compilation. C'est sympa au niveau légèreté il a pas a effectuer de lecture de fichier supplémentaire.

Il est écrit en C. Pour commencer à le configurer je vous conseil de lire ce tutoriel que je ne reprendrais pas ici :
http://www.xsnake.net/howto/dwm/dwm-fr.php
Il est obsolète sur un certains nombre de point je posterais plus tard ici mes découvertes.

Par contre à la place de la technique &quot;classique&quot; du make clean install, je vous propose ici une méthode debian bien plus jolie.

D'abord on va récupérer les sources :
 apt-get source dwm
Cela nous télécharge quelques fichiers et un dossier, il nous suffit d'entrer dans celui-ci. Il contient les sources plus un dossier debian. On effectue les paramétrages que l'on souhaite. Puis on crée le paquet avec la commande :
 dpkg-buildpackage -rfakeroot -uc -b
Ce qui va crée un fichier dwm_*.deb qu'on installe comme ça :
 dpkg -i dwm_*.deb

Voila c'est installé. Personnellement je n'en suit qu'au début. Je posterais ici mes configurations.

Remarque : chez moi le fichier dwm-5.7.2/debian/desktop/dwm était mal fait. En effet pour être pris en compte par gdm il faut le renommer avec l'extension &quot;.desktop&quot;.

== Liens externes ==
* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24798 Page de Misterfreeze pour installer proprement dwm sur sa debian]
* [http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=23322 Discussion autour de la configuration de dwm]
* http://wiki.debian.org/fr/Dwm

[[Catégorie:Gestionnaires de fenêtres]]</text>
      <sha1>efycpgbjpnt9t8esympc90jvqlybocy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>970</id>
      <parentid>582</parentid>
      <timestamp>2010-02-07T07:41:00Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1653">dwm est un gestionnaire de fenêtre tiling. Sa vrai particularité face à wmii et awesome c'est qu'il se configure à la compilation. C'est sympa au niveau légèreté il a pas a effectuer de lecture de fichier supplémentaire.

Il est écrit en C. Pour commencer à le configurer je vous conseil de lire ce tutoriel que je ne reprendrais pas ici :
http://www.xsnake.net/howto/dwm/dwm-fr.php
Il est obsolète sur un certains nombre de point je posterais plus tard ici mes découvertes.

Par contre à la place de la technique &quot;classique&quot; du make clean install, je vous propose ici une méthode debian bien plus jolie.

D'abord on va récupérer les sources :
 apt-get source dwm
Cela nous télécharge quelques fichiers et un dossier, il nous suffit d'entrer dans celui-ci. Il contient les sources plus un dossier debian. On effectue les paramétrages que l'on souhaite. Puis on crée le paquet avec la commande :
 dpkg-buildpackage -rfakeroot -uc -b
Ce qui va crée un fichier dwm_*.deb qu'on installe comme ça :
 dpkg -i dwm_*.deb

Voila c'est installé. Personnellement je n'en suit qu'au début. Je posterais ici mes configurations.

Remarque : chez moi le fichier dwm-5.7.2/debian/desktop/dwm était mal fait. En effet pour être pris en compte par gdm il faut le renommer avec l'extension &quot;.desktop&quot;.

== Liens externes ==
* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24798 Page de Misterfreeze pour installer proprement dwm sur sa debian]
* [http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=23322 Discussion autour de la configuration de dwm]
* http://wiki.debian.org/fr/Dwm

[[Catégorie:Gestionnaires de fenêtres]]
[[Catégorie:Tillings]]</text>
      <sha1>tv1an2kyddn2okvzqqfjyhr5pbpog58</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>975</id>
      <parentid>970</parentid>
      <timestamp>2010-02-07T07:53:28Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1653">dwm est un gestionnaire de fenêtre tiling. Sa vrai particularité face à wmii et awesome c'est qu'il se configure à la compilation. C'est sympa au niveau légèreté il a pas a effectuer de lecture de fichier supplémentaire.

Il est écrit en C. Pour commencer à le configurer je vous conseil de lire ce tutoriel que je ne reprendrais pas ici :
http://www.xsnake.net/howto/dwm/dwm-fr.php
Il est obsolète sur un certains nombre de point je posterais plus tard ici mes découvertes.

Par contre à la place de la technique &quot;classique&quot; du make clean install, je vous propose ici une méthode debian bien plus jolie.

D'abord on va récupérer les sources :
 apt-get source dwm
Cela nous télécharge quelques fichiers et un dossier, il nous suffit d'entrer dans celui-ci. Il contient les sources plus un dossier debian. On effectue les paramétrages que l'on souhaite. Puis on crée le paquet avec la commande :
 dpkg-buildpackage -rfakeroot -uc -b
Ce qui va crée un fichier dwm_*.deb qu'on installe comme ça :
 dpkg -i dwm_*.deb

Voila c'est installé. Personnellement je n'en suit qu'au début. Je posterais ici mes configurations.

Remarque : chez moi le fichier dwm-5.7.2/debian/desktop/dwm était mal fait. En effet pour être pris en compte par gdm il faut le renommer avec l'extension &quot;.desktop&quot;.

== Liens externes ==
* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24798 Page de Misterfreeze pour installer proprement dwm sur sa debian]
* [http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=23322 Discussion autour de la configuration de dwm]
* http://wiki.debian.org/fr/Dwm

[[Catégorie:Gestionnaires_de_fenêtres]]
[[Catégorie:Tillings]]</text>
      <sha1>mrkkuldlp18gs1tsy6c8025b2t3phd7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>981</id>
      <parentid>975</parentid>
      <timestamp>2010-02-07T08:01:33Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1652">dwm est un gestionnaire de fenêtre tiling. Sa vrai particularité face à wmii et awesome c'est qu'il se configure à la compilation. C'est sympa au niveau légèreté il a pas a effectuer de lecture de fichier supplémentaire.

Il est écrit en C. Pour commencer à le configurer je vous conseil de lire ce tutoriel que je ne reprendrais pas ici :
http://www.xsnake.net/howto/dwm/dwm-fr.php
Il est obsolète sur un certains nombre de point je posterais plus tard ici mes découvertes.

Par contre à la place de la technique &quot;classique&quot; du make clean install, je vous propose ici une méthode debian bien plus jolie.

D'abord on va récupérer les sources :
 apt-get source dwm
Cela nous télécharge quelques fichiers et un dossier, il nous suffit d'entrer dans celui-ci. Il contient les sources plus un dossier debian. On effectue les paramétrages que l'on souhaite. Puis on crée le paquet avec la commande :
 dpkg-buildpackage -rfakeroot -uc -b
Ce qui va crée un fichier dwm_*.deb qu'on installe comme ça :
 dpkg -i dwm_*.deb

Voila c'est installé. Personnellement je n'en suit qu'au début. Je posterais ici mes configurations.

Remarque : chez moi le fichier dwm-5.7.2/debian/desktop/dwm était mal fait. En effet pour être pris en compte par gdm il faut le renommer avec l'extension &quot;.desktop&quot;.

== Liens externes ==
* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24798 Page de Misterfreeze pour installer proprement dwm sur sa debian]
* [http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=23322 Discussion autour de la configuration de dwm]
* http://wiki.debian.org/fr/Dwm

[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Tillings]]</text>
      <sha1>9plajhskk6rdyg5jprxffw4izk4hswz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1559</id>
      <parentid>981</parentid>
      <timestamp>2010-06-07T09:53:19Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="1770">dwm est un gestionnaire de fenêtre tiling. Sa vrai particularité face à wmii et awesome c'est qu'il se configure à la compilation. C'est sympa au niveau légèreté il a pas a effectuer de lecture de fichier supplémentaire.

Voici à quoi il peut ressembler : 
[[dwm-exemple:dwm-exemple.png|200px|thumb|left|un exemple d'utilisation de dwm]]

Il est écrit en C. Pour commencer à le configurer je vous conseil de lire ce tutoriel que je ne reprendrais pas ici :
http://www.xsnake.net/howto/dwm/dwm-fr.php
Il est obsolète sur un certains nombre de point je posterais plus tard ici mes découvertes.

Par contre à la place de la technique &quot;classique&quot; du make clean install, je vous propose ici une méthode debian bien plus jolie.

D'abord on va récupérer les sources :
 apt-get source dwm
Cela nous télécharge quelques fichiers et un dossier, il nous suffit d'entrer dans celui-ci. Il contient les sources plus un dossier debian. On effectue les paramétrages que l'on souhaite. Puis on crée le paquet avec la commande :
 dpkg-buildpackage -rfakeroot -uc -b
Ce qui va crée un fichier dwm_*.deb qu'on installe comme ça :
 dpkg -i dwm_*.deb

Voila c'est installé. Personnellement je n'en suit qu'au début. Je posterais ici mes configurations.

Remarque : chez moi le fichier dwm-5.7.2/debian/desktop/dwm était mal fait. En effet pour être pris en compte par gdm il faut le renommer avec l'extension &quot;.desktop&quot;.

== Liens externes ==
* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24798 Page de Misterfreeze pour installer proprement dwm sur sa debian]
* [http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=23322 Discussion autour de la configuration de dwm]
* http://wiki.debian.org/fr/Dwm

[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Tillings]]</text>
      <sha1>m2k0rogcaef8vqxcieyvlxdqpjrcd6r</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1560</id>
      <parentid>1559</parentid>
      <timestamp>2010-06-07T09:53:59Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="1766">dwm est un gestionnaire de fenêtre tiling. Sa vrai particularité face à wmii et awesome c'est qu'il se configure à la compilation. C'est sympa au niveau légèreté il a pas a effectuer de lecture de fichier supplémentaire.

Voici à quoi il peut ressembler : 
[[Fichier:dwm-exemple.png|200px|thumb|left|un exemple d'utilisation de dwm]]

Il est écrit en C. Pour commencer à le configurer je vous conseil de lire ce tutoriel que je ne reprendrais pas ici :
http://www.xsnake.net/howto/dwm/dwm-fr.php
Il est obsolète sur un certains nombre de point je posterais plus tard ici mes découvertes.

Par contre à la place de la technique &quot;classique&quot; du make clean install, je vous propose ici une méthode debian bien plus jolie.

D'abord on va récupérer les sources :
 apt-get source dwm
Cela nous télécharge quelques fichiers et un dossier, il nous suffit d'entrer dans celui-ci. Il contient les sources plus un dossier debian. On effectue les paramétrages que l'on souhaite. Puis on crée le paquet avec la commande :
 dpkg-buildpackage -rfakeroot -uc -b
Ce qui va crée un fichier dwm_*.deb qu'on installe comme ça :
 dpkg -i dwm_*.deb

Voila c'est installé. Personnellement je n'en suit qu'au début. Je posterais ici mes configurations.

Remarque : chez moi le fichier dwm-5.7.2/debian/desktop/dwm était mal fait. En effet pour être pris en compte par gdm il faut le renommer avec l'extension &quot;.desktop&quot;.

== Liens externes ==
* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24798 Page de Misterfreeze pour installer proprement dwm sur sa debian]
* [http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=23322 Discussion autour de la configuration de dwm]
* http://wiki.debian.org/fr/Dwm

[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Tillings]]</text>
      <sha1>98mbtlzgt4wprsbg4ik0zdnwio550m8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1561</id>
      <parentid>1560</parentid>
      <timestamp>2010-06-07T10:01:48Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="2520">dwm est un gestionnaire de fenêtre tiling. Sa vrai particularité face à wmii et awesome c'est qu'il se configure à la compilation. C'est sympa au niveau légèreté il a pas a effectuer de lecture de fichier supplémentaire.

Voici à quoi il peut ressembler : 
[[Fichier:dwm-exemple.png|200px|thumb|left|un exemple d'utilisation de dwm]]

Il est écrit en C. Pour commencer à le configurer je vous conseil de lire ce tutoriel que je ne reprendrais pas ici :
http://www.xsnake.net/howto/dwm/dwm-fr.php
Il est obsolète sur un certains nombre de point je posterais plus tard ici mes découvertes.

Par contre à la place de la technique &quot;classique&quot; du make clean install, je vous propose ici une méthode debian bien plus jolie.

D'abord on va récupérer les sources :
 apt-get source dwm
Cela nous télécharge quelques fichiers et un dossier, il nous suffit d'entrer dans celui-ci. Il contient les sources plus un dossier debian. On effectue les paramétrages que l'on souhaite. Puis on crée le paquet avec la commande :
 dpkg-buildpackage -rfakeroot -uc -b
Ce qui va crée un fichier dwm_*.deb qu'on installe comme ça :
 dpkg -i dwm_*.deb

Voila c'est installé. Personnellement je n'en suit qu'au début. Je posterais ici mes configurations.

Remarque : chez moi le fichier dwm-5.7.2/debian/desktop/dwm était mal fait. En effet pour être pris en compte par gdm il faut le renommer avec l'extension &quot;.desktop&quot;.

== Configurer la barre de status ==

Comme vous pouvez le voir sur la copie d'écran, il est possible d'afficher toute sorte de choses dans la barre de dwm. Admettons que vous démarrez votre session via le fichier .xinitrc et startx , il faudra inclure ceci dans le .xinitrc
::while true; do
::   xsetroot -name &quot;$( date +&quot;%F %R&quot; )&quot;
::   sleep 1m    # Update time every minute
::done &amp;
::exec dwm
Ici, on affiche l'heure. En somme, vous n'êtes limité que pas votre imagination sur ce que vous souhaitez afficher.
Bien entendu, si vous utiliser un gestionnaire connection, il suffira de mettre à la place de Exec=dwm , Exec=/chemin/vers/script/de/lancement/de/dwm, script que vous aurez vous-même créé.



== Liens externes ==
* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24798 Page de Misterfreeze pour installer proprement dwm sur sa debian]
* [http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=23322 Discussion autour de la configuration de dwm]
* http://wiki.debian.org/fr/Dwm
* [http://dwm.suckless.org Site officiel]

[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Tillings]]</text>
      <sha1>7f0nlfvgmldt1o5jij3ere5rmt7dfed</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1562</id>
      <parentid>1561</parentid>
      <timestamp>2010-06-07T14:58:25Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2529">dwm est un gestionnaire de fenêtre tiling. Sa vraie particularité face à wmii et awesome c'est qu'il se configure à la compilation. C'est sympa au niveau légèreté il n'a pas à effectuer de lecture de fichier supplémentaire.

Voici à quoi il peut ressembler : 
[[Fichier:dwm-exemple.png|200px|thumb|left|un exemple d'utilisation de dwm]]

Il est écrit en C. Pour commencer à le configurer je vous conseille de lire ce tutoriel que je ne reprendrais pas ici :
http://www.xsnake.net/howto/dwm/dwm-fr.php
Il est obsolète sur un certain nombre de points, je posterais plus tard ici mes découvertes.

Par contre à la place de la technique &quot;classique&quot; du make clean install, je vous propose ici une méthode debian bien plus jolie.

D'abord on va récupérer les sources :
 apt-get source dwm
Cela nous télécharge quelques fichiers et un dossier, il nous suffit d'entrer dans celui-ci. Il contient les sources plus un dossier debian. On effectue les paramétrages que l'on souhaite. Puis on crée le paquet avec la commande :
 dpkg-buildpackage -rfakeroot -uc -b
Ce qui va créer un fichier dwm_*.deb qu'on installe comme ça :
 dpkg -i dwm_*.deb

Voila c'est installé. Personnellement je n'en suis qu'au début. Je posterais ici mes configurations.

Remarque : chez moi le fichier dwm-5.7.2/debian/desktop/dwm était mal fait. En effet pour être pris en compte par gdm il faut le renommer avec l'extension &quot;.desktop&quot;.

== Configurer la barre de status ==

Comme vous pouvez le voir sur la copie d'écran, il est possible d'afficher toutes sortes de choses dans la barre de dwm. Admettons que vous démarrez votre session via le fichier .xinitrc et startx , il faudra inclure ceci dans le .xinitrc
::while true; do
::   xsetroot -name &quot;$( date +&quot;%F %R&quot; )&quot;
::   sleep 1m    # Update time every minute
::done &amp;
::exec dwm
Ici, on affiche l'heure. En somme, vous n'êtes limité que pas votre imagination sur ce que vous souhaitez afficher.
Bien entendu, si vous utilisez un gestionnaire connexion, il suffira de mettre à la place de Exec=dwm , Exec=/chemin/vers/script/de/lancement/de/dwm, script que vous aurez vous-même créé.



== Liens externes ==
* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24798 Page de Misterfreeze pour installer proprement dwm sur sa debian]
* [http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=23322 Discussion autour de la configuration de dwm]
* http://wiki.debian.org/fr/Dwm
* [http://dwm.suckless.org Site officiel]

[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Tillings]]</text>
      <sha1>o3cp0p6gimylhz6c2f3oxvsh295pc9z</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1624</id>
      <parentid>1562</parentid>
      <timestamp>2010-07-05T08:07:00Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2553">#REDIRECT [[isalo:Dwm]]
dwm est un gestionnaire de fenêtre tiling. Sa vraie particularité face à wmii et awesome c'est qu'il se configure à la compilation. C'est sympa au niveau légèreté il n'a pas à effectuer de lecture de fichier supplémentaire.

Voici à quoi il peut ressembler : 
[[Fichier:dwm-exemple.png|200px|thumb|left|un exemple d'utilisation de dwm]]

Il est écrit en C. Pour commencer à le configurer je vous conseille de lire ce tutoriel que je ne reprendrais pas ici :
http://www.xsnake.net/howto/dwm/dwm-fr.php
Il est obsolète sur un certain nombre de points, je posterais plus tard ici mes découvertes.

Par contre à la place de la technique &quot;classique&quot; du make clean install, je vous propose ici une méthode debian bien plus jolie.

D'abord on va récupérer les sources :
 apt-get source dwm
Cela nous télécharge quelques fichiers et un dossier, il nous suffit d'entrer dans celui-ci. Il contient les sources plus un dossier debian. On effectue les paramétrages que l'on souhaite. Puis on crée le paquet avec la commande :
 dpkg-buildpackage -rfakeroot -uc -b
Ce qui va créer un fichier dwm_*.deb qu'on installe comme ça :
 dpkg -i dwm_*.deb

Voila c'est installé. Personnellement je n'en suis qu'au début. Je posterais ici mes configurations.

Remarque : chez moi le fichier dwm-5.7.2/debian/desktop/dwm était mal fait. En effet pour être pris en compte par gdm il faut le renommer avec l'extension &quot;.desktop&quot;.

== Configurer la barre de status ==

Comme vous pouvez le voir sur la copie d'écran, il est possible d'afficher toutes sortes de choses dans la barre de dwm. Admettons que vous démarrez votre session via le fichier .xinitrc et startx , il faudra inclure ceci dans le .xinitrc
::while true; do
::   xsetroot -name &quot;$( date +&quot;%F %R&quot; )&quot;
::   sleep 1m    # Update time every minute
::done &amp;
::exec dwm
Ici, on affiche l'heure. En somme, vous n'êtes limité que pas votre imagination sur ce que vous souhaitez afficher.
Bien entendu, si vous utilisez un gestionnaire connexion, il suffira de mettre à la place de Exec=dwm , Exec=/chemin/vers/script/de/lancement/de/dwm, script que vous aurez vous-même créé.



== Liens externes ==
* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24798 Page de Misterfreeze pour installer proprement dwm sur sa debian]
* [http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=23322 Discussion autour de la configuration de dwm]
* http://wiki.debian.org/fr/Dwm
* [http://dwm.suckless.org Site officiel]

[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Tillings]]</text>
      <sha1>1uxw7r0l5e0p3g7uuk0t29gctixtrmq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1669</id>
      <parentid>1624</parentid>
      <timestamp>2010-07-06T09:21:08Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Annulation des modifications 1624 de [[Special:Contributions/Lol|Lol]] ([[User talk:Lol|discussion]])</comment>
      <text xml:space="preserve" bytes="2529">dwm est un gestionnaire de fenêtre tiling. Sa vraie particularité face à wmii et awesome c'est qu'il se configure à la compilation. C'est sympa au niveau légèreté il n'a pas à effectuer de lecture de fichier supplémentaire.

Voici à quoi il peut ressembler : 
[[Fichier:dwm-exemple.png|200px|thumb|left|un exemple d'utilisation de dwm]]

Il est écrit en C. Pour commencer à le configurer je vous conseille de lire ce tutoriel que je ne reprendrais pas ici :
http://www.xsnake.net/howto/dwm/dwm-fr.php
Il est obsolète sur un certain nombre de points, je posterais plus tard ici mes découvertes.

Par contre à la place de la technique &quot;classique&quot; du make clean install, je vous propose ici une méthode debian bien plus jolie.

D'abord on va récupérer les sources :
 apt-get source dwm
Cela nous télécharge quelques fichiers et un dossier, il nous suffit d'entrer dans celui-ci. Il contient les sources plus un dossier debian. On effectue les paramétrages que l'on souhaite. Puis on crée le paquet avec la commande :
 dpkg-buildpackage -rfakeroot -uc -b
Ce qui va créer un fichier dwm_*.deb qu'on installe comme ça :
 dpkg -i dwm_*.deb

Voila c'est installé. Personnellement je n'en suis qu'au début. Je posterais ici mes configurations.

Remarque : chez moi le fichier dwm-5.7.2/debian/desktop/dwm était mal fait. En effet pour être pris en compte par gdm il faut le renommer avec l'extension &quot;.desktop&quot;.

== Configurer la barre de status ==

Comme vous pouvez le voir sur la copie d'écran, il est possible d'afficher toutes sortes de choses dans la barre de dwm. Admettons que vous démarrez votre session via le fichier .xinitrc et startx , il faudra inclure ceci dans le .xinitrc
::while true; do
::   xsetroot -name &quot;$( date +&quot;%F %R&quot; )&quot;
::   sleep 1m    # Update time every minute
::done &amp;
::exec dwm
Ici, on affiche l'heure. En somme, vous n'êtes limité que pas votre imagination sur ce que vous souhaitez afficher.
Bien entendu, si vous utilisez un gestionnaire connexion, il suffira de mettre à la place de Exec=dwm , Exec=/chemin/vers/script/de/lancement/de/dwm, script que vous aurez vous-même créé.



== Liens externes ==
* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24798 Page de Misterfreeze pour installer proprement dwm sur sa debian]
* [http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=23322 Discussion autour de la configuration de dwm]
* http://wiki.debian.org/fr/Dwm
* [http://dwm.suckless.org Site officiel]

[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Tillings]]</text>
      <sha1>o3cp0p6gimylhz6c2f3oxvsh295pc9z</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2129</id>
      <parentid>1669</parentid>
      <timestamp>2010-09-25T06:47:26Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="9493">dwm est un gestionnaire de fenêtre tiling. Sa vraie particularité face à wmii et awesome c'est qu'il se configure à la compilation. C'est sympa au niveau légèreté il n'a pas à effectuer de lecture de fichier supplémentaire.

Voici à quoi il peut ressembler : 
[[Fichier:dwm-exemple.png|200px|thumb|left|un exemple d'utilisation de dwm]]

Il est écrit en C. Pour commencer à le configurer je vous conseille de lire ce tutoriel que je ne reprendrais pas ici :
http://www.xsnake.net/howto/dwm/dwm-fr.php
Il est obsolète sur un certain nombre de points, je posterais plus tard ici mes découvertes.

Par contre à la place de la technique &quot;classique&quot; du make clean install, je vous propose ici une méthode debian bien plus jolie.

D'abord on va récupérer les sources :
 apt-get source dwm
Cela nous télécharge quelques fichiers et un dossier, il nous suffit d'entrer dans celui-ci. Il contient les sources plus un dossier debian. On effectue les paramétrages que l'on souhaite. Puis on crée le paquet avec la commande :
 dpkg-buildpackage -rfakeroot -uc -b
Ce qui va créer un fichier dwm_*.deb qu'on installe comme ça :
 dpkg -i dwm_*.deb

Voila c'est installé. Personnellement je n'en suis qu'au début. Je posterais ici mes configurations.

Remarque : chez moi le fichier dwm-5.7.2/debian/desktop/dwm était mal fait. En effet pour être pris en compte par gdm il faut le renommer avec l'extension &quot;.desktop&quot;.

== Configurer la barre de status ==

Comme vous pouvez le voir sur la copie d'écran, il est possible d'afficher toutes sortes de choses dans la barre de dwm. Admettons que vous démarrez votre session via le fichier .xinitrc et startx , il faudra inclure ceci dans le .xinitrc
::while true; do
::   xsetroot -name &quot;$( date +&quot;%F %R&quot; )&quot;
::   sleep 1m    # Update time every minute
::done &amp;
::exec dwm
Ici, on affiche l'heure. En somme, vous n'êtes limité que pas votre imagination sur ce que vous souhaitez afficher.
Bien entendu, si vous utilisez un gestionnaire connexion, il suffira de mettre à la place de Exec=dwm , Exec=/chemin/vers/script/de/lancement/de/dwm, script que vous aurez vous-même créé.

== Notes et astuces diverses pour la françisation ==

Voici quelques astuces pour que dwm fonctionne bien avec votre clavier français. 
Voici un config.h commenté afin de vous expliquer les petits détails, et pour que ça aille plus vite pour les fainéants : 

 /* See LICENSE file for copyright and license details. */
 /* appearance */
 static const char font[]            = &quot;-*-terminus-*-*-*-*-12-*-*-*-*-*-iso10646-*&quot;; // Changement de la police pour avoir les accents éèàù...
 static const char normbordercolor[] = &quot;#EDEDED&quot;;
 static const char normbgcolor[]     = &quot;#251C1A&quot;;
 static const char normfgcolor[]     = &quot;#D4D4D4&quot;;
 static const char selbordercolor[]  = &quot;#E2E2E2&quot;;
 static const char selbgcolor[]      = &quot;#D4D4D4&quot;;
 static const char selfgcolor[]      = &quot;#5B5453&quot;;
 static const unsigned int borderpx  = 1;        /* border pixel of windows */
 static const unsigned int snap      = 32;       /* snap pixel */
 static const Bool showbar           = True;     /* False means no bar */
 static const Bool topbar            = True;     /* False means bottom bar */

 /* tagging */
 static const char *tags[] = { &quot;1&quot;, &quot;2&quot;, &quot;3&quot;, &quot;4&quot;, &quot;5&quot;, &quot;6&quot;, &quot;7&quot;, &quot;8&quot;, &quot;9&quot; };};

 static const Rule rules[] = {
 /* class      instance    title       tags mask     isfloating   monitor */
 { &quot;Gimp&quot;,     NULL,       NULL,       0,            True,        -1 },
 { &quot;Gajim&quot;,     NULL,       NULL,       1 &lt;&lt; 6,            False,        -1 },
 { &quot;MPlayer&quot;,     NULL,       NULL,       0,            True,        -1 },
 { &quot;VLC&quot;,     NULL,       NULL,       0,            True,        -1 },
 };

 /* layout(s) */
 static const float mfact      = 0.60; /* factor of master area size [0.05..0.95] */
 static const Bool resizehints = True; /* True means respect size hints in tiled resizals */

 static const Layout layouts[] = {
 /* symbol     arrange function */
 { &quot;[]=&quot;,      tile },    /* first entry is default */
 { &quot;&gt;&lt;&gt;&quot;,      NULL },    /* no layout function means floating behavior */
 { &quot;[M]&quot;,      monocle },
 };

 /* key definitions */
 #define MODKEY Mod4Mask
 #define MODKEY2 Mod1Mask
 #define TAGKEYS(KEY,TAG) \
 	{ MODKEY,                       KEY,      view,           {.ui = 1 &lt;&lt; TAG} }, \
 	{ MODKEY|ControlMask,           KEY,      toggleview,     {.ui = 1 &lt;&lt; TAG} }, \
 	{ MODKEY|ShiftMask,             KEY,      tag,            {.ui = 1 &lt;&lt; TAG} }, \
 	{ MODKEY|ControlMask|ShiftMask, KEY,      toggletag,      {.ui = 1 &lt;&lt; TAG} },

 /* helper for spawning shell commands in the pre dwm-5.0 fashion */
 #define SHCMD(cmd) { .v = (const char*[]){ &quot;/bin/sh&quot;, &quot;-c&quot;, cmd, NULL } }

 /* commands */
 static const char *dmenucmd[] = { &quot;dmenu_run&quot;, &quot;-fn&quot;, font, &quot;-nb&quot;, normbgcolor, &quot;-nf&quot;, normfgcolor, &quot;-sb&quot;, selbgcolor, &quot;-sf&quot;, selfgcolor, NULL };
 static const char *termcmd[]  = { &quot;urxvt&quot;, NULL };
 static const char *monteson[]  = { &quot;amixer&quot;, &quot;set&quot;, &quot;Master&quot;, &quot;2dB+&quot;, &quot;unmute&quot;, NULL };
 static const char *baisseson[]  = { &quot;amixer&quot;, &quot;set&quot;, &quot;Master&quot;, &quot;2dB-&quot;, &quot;unmute&quot;, NULL };
 static const char *muteson[]  = { &quot;amixer&quot;, &quot;-q&quot;, &quot;set&quot;, &quot;Master&quot;, &quot;toggle&quot;, NULL };
 };
 
 static Key keys[] = {
 	/* modifier                     key        function        argument */
 	{ MODKEY,                       XK_p,      spawn,          {.v = dmenucmd } },
 	{ MODKEY|ShiftMask,             XK_Return, spawn,          {.v = termcmd } },
    { 0,               0x1008ff13, spawn,          {.v = monteson } }, 
    { 0,   0x1008ff11, spawn,          {.v = baisseson } },
    { 0,   0x1008ff12, spawn,         {.v = muteson } },
 	{ MODKEY,                       XK_b,      togglebar,      {0} },
 	{ MODKEY,                       XK_j,      focusstack,     {.i = +1 } },
 	{ MODKEY,                       XK_k,      focusstack,     {.i = -1 } },
 	{ MODKEY,                       XK_h,      setmfact,       {.f = -0.05} },
 	{ MODKEY,                       XK_l,      setmfact,       {.f = +0.05} },
 	{ MODKEY,                       XK_Return, zoom,           {0} },
 	{ MODKEY,                       XK_Tab,    view,           {0} },
 	{ MODKEY|ShiftMask,             XK_c,      killclient,     {0} },
 	{ MODKEY,                       XK_t,      setlayout,      {.v = &amp;layouts[0]} },
 	{ MODKEY,                       XK_f,      setlayout,      {.v = &amp;layouts[1]} },
 	{ MODKEY,                       XK_m,      setlayout,      {.v = &amp;layouts[2]} },
 	{ MODKEY,                       XK_space,  setlayout,      {0} },
 	{ MODKEY|ShiftMask,             XK_space,  togglefloating, {0} },
 	{ MODKEY,                       0xe0,      view,           {.ui = ~0 } }, //changement pour le 0
 	{ MODKEY|ShiftMask,             0xe0,      tag,            {.ui = ~0 } }, // changement pour le 0, 0xe0 est le code pour la touche 0
 	{ MODKEY,                       XK_comma,  focusmon,       {.i = -1 } },
 	{ MODKEY,                       XK_period, focusmon,       {.i = +1 } },
 	{ MODKEY|ShiftMask,             XK_comma,  tagmon,         {.i = -1 } },
 	{ MODKEY|ShiftMask,             XK_period, tagmon,         {.i = +1 } },
 	TAGKEYS(                        0x26,                      0) // La touche 1 a le code 0x26
    TAGKEYS(                        0xe9,                      1) //changement pour le 2...
    TAGKEYS(                        0x22,                      2)
    TAGKEYS(                        0x27,                      3)
    TAGKEYS(                        0x28,                      4)
    TAGKEYS(                        0x2d,                      5)
    TAGKEYS(                        0xe8,                      6)
    TAGKEYS(                        0x5f,                      7)
    TAGKEYS(                        0xe7,                      8) // changement jusqu'au 9
 	{ MODKEY|ShiftMask,             XK_q,      quit,           {0} },
 };

 /* button definitions */
 /* click can be ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or ClkRootWin */
 static Button buttons[] = {
 	/* click                event mask      button          function        argument */
 	{ ClkLtSymbol,          0,              Button1,        setlayout,      {0} },
 	{ ClkLtSymbol,          0,              Button3,        setlayout,      {.v = &amp;layouts[2]} },
 	{ ClkWinTitle,          0,              Button2,        killclient,           {0} },
 	{ ClkClientWin,         MODKEY,         Button1,        movemouse,      {0} },
 	{ ClkClientWin,         MODKEY,         Button2,        togglefloating, {0} },
 	{ ClkClientWin,         MODKEY,         Button3,        resizemouse,    {0} },
 	{ ClkTagBar,            0,              Button1,        view,           {0} },
 	{ ClkTagBar,            0,              Button3,        toggleview,     {0} },
 	{ ClkTagBar,            MODKEY,         Button1,        tag,            {0} },
 	{ ClkTagBar,            MODKEY,         Button3,        toggletag,      {0} },
 };



Notez que le code des touches peut-être récupéré avec xev lancé en console, puis ensuite appuyez sur la touche en question.
== Liens externes ==
* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24798 Page de Misterfreeze pour installer proprement dwm sur sa debian]
* [http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=23322 Discussion autour de la configuration de dwm]
* http://wiki.debian.org/fr/Dwm
* [http://dwm.suckless.org Site officiel]

[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Tillings]]</text>
      <sha1>l2q58n077hgd56jz8wdxtp2f79x1im1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2436</id>
      <parentid>2129</parentid>
      <timestamp>2010-11-26T12:52:37Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="19454">=='''Présentation :'''==

''' ''' [http://dwm.suckless.org Dwm] est le tiling windows manager (Gestionnaire de fenêtres en tuile) développé par l'équipe de [http://suckless.org suckless.org]. Fidèle à leur philosophie, il est écrit en C, permettant ainsi la contribution de chacun au projet, ce langage étant plus que répandu et éprouvé. De plus, cela oblige les codeurs à faire du code propre et léger. Il permet de gérer ses fenêtres entièrement au clavier si on le souhaite, mais aussi de passer bien moins de temps à arranger son bureau. Niveau productivité, vous serez donc servi, car il vous aidera à gagner énormément de temps. Par ailleurs, il dispose par défaut de 9 &quot;vues&quot;. En fait, une fenêtre est associée à 1 ou plusieurs vues, et sera affichée dans chacune d'elles. On devrait plutôt dire &quot;étiquette&quot; que &quot;vue&quot;. L'avantage pour le simple utilisateur, c'est que le C est très clair, et et que l'on a même pas besoin de tout comprendre pour le configurer. Eh oui, tout a été pensé, il suffit en fait d'éditer rien qu'un tout petit fichier : [http://thuban.toile-libre.org/index.php/dwm-un-tiling-window-manager-pour-vos-besoins/#4-1-le-fichier-config-h le config.h ], qui a été construit de manière à rendre la configuration accessible même aux non-initiés. De plus, cela évite les multiples fichiers de configuration tiers, on configure dwm une fois, et une fois qu'il est insallé, on n'a plus rien à toucher, tout est dans le binaire! Ainsi, dwm n'a pas à chercher et lire ces fichiers de configuration pour faire son boulot, donc le temps d'éxécution est amélioré! Debian propose un paquet de démonstration. On expliquera ici comment reconstruire un paquet proprement, une fois que l'on a configuré dwm à notre sauce. Le code de dwm a été construit dans le but de pouvoir ajouter des fonctionnalités simplement, sous forme de [http://thuban.toile-libre.org/index.php/dwm-un-tiling-window-manager-pour-vos-besoins/#4-3-ajouter-un-patch patches.] Vous pourrez alors composer votre gestionnaire de fenêtre, avec les fonctions que vous désirez. Avant de vous présenter ici les différentes configurations possible, astuces et autres, je ne peux continuer sans [http://dwm.suckless.org/screenshots/ une traditionnelle capture d'écran] : 


[[Fichier:dwm-exemple.png|200px|thumb|left|un exemple d'utilisation de dwm]]

=='''Tester sur debian :'''==

''' ''' Pour commencer, on va utiliser la version de test proposée dans les dépots Debian. Test? Eh oui, car la puissance de dwm se retrouve lorsque l'on édite le fichier config.h, et que l'on recompile. Mais rassurez-vous, cela tient du jeu d'enfant! Il est même prévu de reconstruire le paquet! Bien, installez donc le paquet dwm (aptitude install dwm), puis choisissez cette session dans gdm/kdm, ou bien ajoutez à votre .xinitrc :&lt;code&gt;exec dwm&lt;/code&gt; Comme vous le voyez, la configuration par défaut n'est pas la plus belle. Mais on va y remédier! ''' '''

=='''Utilisation :'''==

Dwm a été pensé pour être entièrement piloté au clavier si besoin. Voici les raccourcis définis par défaut. On utilisera dans un premier temps la touche &quot;alt&quot; comme touche &quot;Mod1&quot;. ([http://thuban.toile-libre.org/index.php/dwm-un-tiling-window-manager-pour-vos-besoins/#4-configurer-dwm voir la partie configuration pour plus d'informations])

* Mod1-Shift-Return Lance un terminal
* Mod1-b Affiche/cache la barre
* Mod1-t Passer en mode &quot;tiling&quot;
* Mod1-f Passer en mode flottant.
* Mod1-m Maximise la zone principale
* Mod1-space Passe du mode courant au mode précédent.
* Mod1-j Passe le focus à la fenêtre suivante
* Mod1-k passe le focus à la fenêtre précédente
* Mod1-h Réduis la taille de la zone principale
* Mod1-l Augmente la taille de la zone principale
* Mod1-Return Échange les fenêtres séléctionnées depuis/vers la zone principale
* Mod1-Shift-c Ferme la fenêtre sélectionnée
* Mod1-Shift-space Passe la fenêtre sélectionnée entre le mode tiling et flottant
* Mod1-Tab Sélectionne la vue précédente
* Mod1-Shift-[1..n] Envoie la fenêtre à la vue numéro 1...n
* Mod1-Shift-0 Affiche la fenêtre sur toutes les vues
* Mod1-Control-Shift-[1..n] Ajoute/Retire la fenêtre sélectionnée du bureau numéro 1...n , pratique si on veut qu'une fenêtre apparaisse sur plusieurs vues
* Mod1-[1..n] Aller à la vue 1...n
* Mod1-0 Affiche toutes les fenêtres de toutes les vues.
* Mod1-Control-[1..n] Retire toutes les fenêtres de la vue 1...n
* Mod1-, Change d'écran, si il y en a plusieurs
* Mod1-Shift-q Quitte dwm



Sur le bureau, on démarre par defaut en mode « divisé » : l'écran est divisé équitablement entre les fenêtres. Voici les modes disponibles par défaut :

* Le mode « flottant » (Mod+f) : Vous pourrez alors déplacer la fenêtre en maintenant la touche Mod appuyée tout en déplacant la fenêtre à la souris, la redimensionner en maintenant Mod et en faisant clic-droit avec la souris.

* Le mode « maximum » (Mod+m) : la fenêtre prend tout l'espace disponible, on ne voit pas les autres fenêtres

* Le mode « divisé » (Mod+t) : Mode écran divisé ou tiling. Une partie maître à gauche, avec une fenêtre plus grande, et une partie à droite avec les fenêtres plus petites.

===Obtenir dwm :===

Dwm est téléchargeable sur le [http://dl.suckless.org/dwm/ site officiel] (prendre l'archive la plus récente et la décompresser), ou vous pouvez télécharger les sources debian : &lt;code&gt;# apt-get source dwm&lt;/code&gt; . Pour les plus aventureux, vous pouver installer la toute dernière mouture de dwm ainsi (paquet mercurial nécéssaire) &lt;code&gt;hg clone http://hg.suckless.org/dwm&lt;/code&gt;. Les deux dernières commandes téléchargent les sources dans le dossier courant. On se déplace dans le dossier des sources de dwm : &lt;code&gt;cd dwm-numéro_de_version&lt;/code&gt;

===Installer dwm :===

Dans le dossier contenant les sources, il suffit de taper : &lt;code&gt;make&lt;/code&gt;. Dwm est alors compilé, et présent dans le dossier actuel. Vous pouvez l'installer sur tout le système si vous voulez, en tapant ensuite : &lt;code&gt;make install&lt;/code&gt; Les éxécutables seront dans ce cas le dossier /usr/local/bin par défaut. Pour changer ce répertoire, il faut éditer le fichier config.mk, et changer la ligne : &lt;code&gt;PREFIX = /chemin/du/dossier/destination&lt;/code&gt; vers le chemin de votre choix (votre dossier utilisateur ou autre). Notez toutefois que pour lancer votre session ensuite, il faudra préciser le bon chemin.
 &lt;code&gt; 
::&lt;nowiki&gt;#&lt;/nowiki&gt;Fichier ~/.xinitrc
::&lt;nowiki&gt;#&lt;/nowiki&gt;commande pour lancer dwm en tapant startx 
::&lt;nowiki&gt;#&lt;/nowiki&gt;Lorsque dwm est dans /usr/bin ou /usr/local/bin : 
exec dwm 
::&lt;nowiki&gt;#&lt;/nowiki&gt; lorsque dwm est dans un dossier quelconque, par exemple dans /home/user/ 
::&lt;nowiki&gt;#&lt;/nowiki&gt;exec /home/user/dwm &lt;/code&gt; 
Les dépendances nécéssaires sont libX11-dev et éventuellement libxinerama-dev. Intéressons nous comment recréer un paquet debian à partir des sources debian : On récupère les sources, qui seront décompressées dans le dossier courant : &lt;code&gt; apt-get source dwm&lt;/code&gt; On se déplace dans le dossier des sources. J'utilise le caractère &quot;*&quot; pour ne pas avoir à préciser la version de dwm : &lt;code&gt;cd dwm*&lt;/code&gt; Maintenant, on retrouve les fichiers sources de dwm, les mêmes que dans l'archive officielle plus quelques autres relatifs à debian. On configure dwm de la même façon que pour les autres méthode, en éditant le config.h ([http://thuban.toile-libre.org/index.php/dwm-un-tiling-window-manager-pour-vos-besoins/#4-configurer-dwm voir plus loin]) Une fois que vous êtes satisfaits, vous pouvez refabriquer le paquet avec cette commande (toujours dans le dossier des sources) : &lt;code&gt;dpkg-buildpackage -rfakeroot -uc -b&lt;/code&gt; Ce qui va créer un fichier dwm-version.deb dans le répertoire supérieur. Pour vous assurez d'avoir les dépendances nécéssaires, tapez ceci (Merci Knucky) : &lt;code&gt;apt-get build-dep dwm&lt;/code&gt; Allons donc chercher le paquet récemment créé : &lt;code&gt;cd ..&lt;/code&gt; Et installons ce paquet (il faut avoir les droits super-utilisateur) : &lt;code&gt; dpkg -i dwm_*.deb &lt;/code&gt; Le paquet est maintenant installé!

Il se peut fichier dwm-5.7.2/debian/desktop/dwm soit mal fait. En effet pour être pris en compte par gdm il faut le renommer avec l'extension &quot;.desktop&quot;. ''' '''

==''' [http://dwm.suckless.org/customisation/ 4. Configurer dwm :]'''==

''' ''' ''[http://dwm.suckless.org/customisation/ Documentation du site officiel à ce sujet]'' On va maintenant se pencher sur les configurations possibles.

===Le fichier config.h :===

Depuis le temps que je vous parle de ce fichier! Il se trouve dans le dossier des sources de dwm. Allons le chercher : &lt;code&gt;cd dwm-numero_de_version&lt;/code&gt; ''Mais, que dis-tu, il n'y a pas de fichier config.h! bouh!'' Ahem... En effet, dis comme ça... Non, je ne me moque pas de vous. En fait, par défaut, le fichier s'appelle config.def.h. C'est en fait un config.h qui sert de modèle. Cependant, si un fichier config.h est présent, ce sera lui qui sera utilisé pour la configuration, sinon ce sera le config.def.h. Je vous invite à copier le fichier config.def.h en config.h, toujours dans le dossier des sources : &lt;code&gt;cp config.def.h config.h&lt;/code&gt; Ainsi, vous gardez un modèle d'origine en cas de besoin. Voici à quoi ressemble le fichier par défaut, j'y rajoute ici des commentaires pour l'expliquer en français. 
http://www.isalo.org/pnopaste/?14

====Donner des règles pour les fenêtres====

Voir aussi : http://dwm.suckless.org/customisation/tagmask Il est possible de définir des règles spécifique à certaines fenêtres. Par exemple, si je veux que transmission n'apparaisse que su le tag 9, il faudra mettre ceci : &lt;code lang=&quot;c&quot;&gt; static const Rule rules[] = { /* class instance title tags mask isfloating monitor */ { &quot;Transmission&quot;, NULL, NULL, 1 &amp;lt;&amp;lt; 8, False, -1 }, }; &lt;/code&gt; Pour récupérer les informations sur une fenêtre, tapez xprop dans une console. Votre curseur va changer de forme. Cliquez alors sur la fenêtre voulue. Vous verrez apparaître dans la console les informations sur la classe, le titre de la fenêtre... Vous l'aurez compris, si vous voulez que la fenêtre flotte, il faudra mettre &quot;True&quot; dans la colonne &quot;isfloating&quot; Pour désigner le tag où l'on veut que la fenêtre apparaisse, c'est un peu plus complexe. Ainsi 1 &amp;lt;&amp;lt; 8 définit le tag 9, 1 &amp;lt;&amp;lt; 7 représente le tag 8, ~0 représente tous les tags, (1 &amp;lt;&amp;lt; 8 ) – 1 définit tous les tags sauf le 9eme.

====Définir vos raccourcis:====

Bien sûr, on peut éxécuter la commande de notre choix via un raccourci clavier, ou même un raccourci souris si on le souhaite. La première étape sera de définir ce raccourci. Il s'agit en fait de faire nos propres fonctions. Repérer ces lignes dans le config.h : &lt;code lang=&quot;c&quot;&gt; /* commands */ static const char *dmenucmd[] = { &quot;dmenu_run&quot;, &quot;-fn&quot;, font, &quot;-nb&quot;, normbgcolor, &quot;-nf&quot;, normfgcolor, &quot;-sb&quot;, selbgcolor, &quot;-sf&quot;, selfgcolor, NULL }; static const char *termcmd[] = { &quot;uxterm&quot;, NULL }; &lt;/code&gt; La première ligne sert à lancer dmenu avec les couleurs de dwm. C'est en fait ce qui se passe lorsque vous tapez le raccourci Mod+P . dmenu est inclus dans le paquet dwm-tools ou suckless-tools, ou[http://tools.suckless.org/dmenu/  téléchargeable sur le site officiel]. La deuxième ligne lance un terminal, c'est ce qui se passe lorsque vous faîtes Mod+Shift+Entrée. Vous pouvez modifier la commande uxterm, par votre terminal favori (xterm, urxvt, xfce4-terminal, lxterminal...). Si vous n'êtes pas sûr, suivez le conseile de MisterFreez, indiquez &quot;x-terminal-emulator&quot; On va ajouter en dessous ces lignes nos propres fonctions! Par exemple, je voudrais ajouter deux raccourcis : l'un pour lancer gajim, l'autre pour couper/activer le son. Il faudra définir deux fonctions sur le même modèle que les précédentes. Donnez leur le nom que vous voulez, du moment que vous vous y retrouvez. Exemple : &lt;code lang=&quot;c&quot;&gt; static const char *gajim[] = { &quot;gajim&quot;, NULL }; static const char *muteson[] = { &quot;amixer&quot;, &quot;-q&quot;, &quot;set&quot;, &quot;Master&quot;, &quot;toggle&quot;, NULL }; &lt;/code&gt; '''Note : '''Remarquez que lorsque une commande contient des espaces, chaque argument doit être entre guillemets suivi d'une virgule. Les commandes finissent toujours par NULL. Bien, maintenant que nos fonctions sont définies, on va les appeler. J'ai envie de lancer gajim lorsque j'appuie sur Mod4+Mod1+i, et couper le son lorsque j'appuie sur la touche multimédia de mon ordinateur associée. Voici ce que ça donnera, dans la section des raccourcis claviers : &lt;code lang=&quot;c&quot;&gt; static Key keys[] = { /*il y a d'autres choses avant....*/ { MODKEY|Mod1, XK_i, spawn, {.v = gajim } }, { 0, 0x1008ff12, spawn, {.v = muteson } }, &lt;/code&gt; ''' Ouhla, ça mérite des explications :''' - Pour définir plusieurs modifieurs, on les sépare par un &quot;|&quot;. - XK_i correspond à la touche &quot;i&quot; - spawn est une fonction dans dwm, qui dit d'éxécuter la fonction désignée - On donne la fonction à éxécuter entre {.v = nom_de_fonction }. Le nom de la fonction est celui définit précédemment. - S'il n'y a pas de modificateur, on met un 0. - 0x1008ff12, c'est le code de ma touche multimédia, que j'ai récupéré en tapant xev en console, puis en faisant fn+&quot;touche bleue&quot; qui coupe le son&quot; Notez qu'il est possible de le faire aussi pour la souris. Par exemple, je veux que lorsque je fais un clique droit sur le texte dans la barre de tâches, ça lance un script que j'ai fait maison. On procédera comme suit :

* 1/On définit la commande du script. Je lui donne le petit nom &quot;deloggue&quot;, car ça me sert à mettre fin à une session

&lt;code lang=&quot;c&quot;&gt; static const char *deloggue[] = { &quot;/home/xavier/Documents/Scripts/exit.sh&quot;, NULL }; &lt;/code&gt;

* 2/ J'appelle cette fonction ensuite avec le clic droit sur le texte.

Dans la partie &quot;souris&quot;, on aura donc : &lt;code lang=&quot;c&quot;&gt; static Button buttons[] = { /* click event mask button function argument */ { ClkStatusText, 0, Button3, spawn, {.v = deloggue } }, }; &lt;/code&gt; On peut aussi modifier les raccourcis déja existants. Je souhaitais que lorsque je fait un clic-milieu sur le titre d'une fenêtre, ça la ferme : &lt;code lang=&quot;c&quot;&gt; static Button buttons[] = { /* click event mask button function argument */ { ClkWinTitle, 0, Button2, killclient, {0} }, }; &lt;/code&gt; ''Voila, rien de bien compliqué en définitive. On définit d'abord la commande à éxécuter, en lui donnant un nom de fonction au choix. Ensuite, on peut lancer cette commande avec spawn, suivi du nom de la fonction.''

====Modifier la configuration pour les claviers français :====

=====Le problème des touches &quot;chiffre&quot;:=====

Malheureusement, dwm est configuré par défaut pour les claviers anglais. Les chiffres au dessus des lettres de votre clavier ne seront pas lus comme tels, mais comme étant un &quot;&amp;amp;&quot; pour le &quot;1&quot;, un &quot;é&quot; pour le 2, un &quot; pour le &quot;3&quot;... On va donc remédier à tout ça. Le code de nos touches se récupère très facilement avec xev. Il faut lancer xev en console, taper sur une touche, et lire ce qui est retourné. On va donc remplacer cette portion : &lt;code lang=&quot;c&quot;&gt; TAGKEYS( XK_1, 0) TAGKEYS( XK_2, 1) TAGKEYS( XK_3, 2) TAGKEYS( XK_4, 3) TAGKEYS( XK_5, 4) TAGKEYS( XK_6, 5) TAGKEYS( XK_7, 6) TAGKEYS( XK_8, 7) TAGKEYS( XK_9, 8) &lt;/code&gt; Par ceci : &lt;code lang=&quot;c&quot;&gt; TAGKEYS( 0x26, 0) TAGKEYS( 0xe9, 1) TAGKEYS( 0x22, 2) TAGKEYS( 0x27, 3) TAGKEYS( 0x28, 4) TAGKEYS( 0x2d, 5) TAGKEYS( 0xe8, 6) TAGKEYS( 0x5f, 7) TAGKEYS( 0xe7, 8) &lt;/code&gt; Ainsi que ceci : &lt;code lang=&quot;c&quot;&gt; { MODKEY, XK_0, view, {.ui = ~0 } }, { MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } }, &lt;/code&gt; par : &lt;code lang=&quot;c&quot;&gt; { MODKEY, 0xe0, view, {.ui = ~0 } }, { MODKEY|ShiftMask, 0xe0, tag, {.ui = ~0 } },&lt;/code&gt;

=====Pour changer d'écran:=====

Il faut françiser la touche &quot;.&quot; pour nos claviers. Donc, remplacer dans le config.h &quot;period&quot; par &quot;semicolon&quot;, car pour nous, c'est le point-virgule : &lt;code lang=&quot;c&quot;&gt; { MODKEY, XK_comma, focusmon, {.i = -1 } }, { MODKEY, XK_semicolon, focusmon, {.i = +1 } }, { MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } }, { MODKEY|ShiftMask, XK_semicolon, tagmon, {.i = +1 } }, &lt;/code&gt; Un config.h françisé est maintenant disponible ici : http://thuban.toile-libre.org/index.php/dwm-en-francais/

===Ajouter un patch:===

Vous pouvez ajouter toutes sortes de fonctionnalités à dwm, en ajoutant des patches. [http://dwm.suckless.org/patches Le site officiel regorge d'informations à ce sujet, et la configuration de chaque patch est expliqué.] De façon générale, pour appliquer un patch, il faudra faire ceci dans le dossier de dwm : &lt;code&gt;patch -p1 &amp;lt; chemin/vers/le/patch.diff &lt;/code&gt; Pour la version tarball (paquet debian inclus) &lt;code&gt;hg patch chemin/vers/le/patch.diff &lt;/code&gt; Pour la version mercurial (hg). Personnellement, j'affectionne le patch [http://dwm.suckless.org/patches/bottom_stack bottom stack] afin d'avoir un agencement des fenetres vertical, et le patch [http://dwm.suckless.org/patches/nametag nametag] pour renommer les tags. Mais je pourrais en mettre plus c'est vrai.

===Avoir un menu pour la souris:===

Il est bien entendu possible d'avoir un menu utilisable à la souris. Je vous invite à lire [http://thuban.toile-libre.org/index.php/un-menu-dans-dwm/ cette page], indiquant plusieurs façons possibles d'obtenir un menu.

===Personnaliser la barre d'état:===

Il est possible d'afficher ce que l'on veut dans la barre d'état. Cela se définit juste avant le lancement de dwm, donc selon les cas dans votre ~/.xinitrc ou autre. Dwm lira ce qui est passé en argument à xsetroot. Cela donnera quelque chose comme ça : &lt;code&gt; while true; do xsetroot -name &quot;$( date +&quot;%F %R&quot; )&quot; sleep 1m # Update time every minute done &amp;amp; exec dwm &lt;/code&gt; Qui affichera la date. Voici mon .xinitrc : &lt;code&gt; /home/xavier/Documents/Scripts/dmenu/dstatus.sh &amp;amp; exec /usr/local/bin/dwm &lt;/code&gt; Vous remarquerez que le lance un script dstatus.sh à part, pour plus de commodité. Ce script récupère plusieurs informations, et les renvoient dans le xsetroot. Ainsi, il y a l'heure, le débit internet, la chaque processeur, le volume sonore, des infos sur la batterie, ce que mpd joue...n peut notamment avoir une barre de progression pour mpd/mplayer/wget... Je met le script [http://pastebin.toile-libre.org/?show=457131 à disposition ici], n'hésitez pas à vous en inspirer!

=='''Conclusion:'''==

Il y a un programme essentiel à utiliser dans dwm : j'ai nommé dmenu. Vous pourrez au fur et à mesure lire des exemples d'utilisation que je posterai [http://thuban.toile-libre.org/index.php/category/suckless/dmenu/ ici]. Cette page est à améliorer et il y a beaucoup de choses à préciser. Je vous invite donc à me faire part de vos remarques afin de l'améliorer. Je poste [http://thuban.toile-libre.org/wp-content/uploads/2010/11/config.h ici mon config.h] si vous voulez voir ma configuration.

== Liens externes ==
* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24798 Page de Misterfreeze pour installer proprement dwm sur sa debian]
* [http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=23322 Discussion autour de la configuration de dwm]
* http://wiki.debian.org/fr/Dwm
* [http://dwm.suckless.org Site officiel]
* [http://thuban.toile-libre.org/index.php/dwm-un-tiling-window-manager-pour-vos-besoins/ Article inspirant cette page ]

[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Tillings]]</text>
      <sha1>dlguxna3kgsmffx6bgxo55rt0uus6lv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2437</id>
      <parentid>2436</parentid>
      <timestamp>2010-11-26T12:54:36Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="19331">=='''Présentation :'''==

''' ''' [http://dwm.suckless.org Dwm] est le tiling windows manager (Gestionnaire de fenêtres en tuile) développé par l'équipe de [http://suckless.org suckless.org]. Fidèle à leur philosophie, il est écrit en C, permettant ainsi la contribution de chacun au projet, ce langage étant plus que répandu et éprouvé. De plus, cela oblige les codeurs à faire du code propre et léger. Il permet de gérer ses fenêtres entièrement au clavier si on le souhaite, mais aussi de passer bien moins de temps à arranger son bureau. Niveau productivité, vous serez donc servi, car il vous aidera à gagner énormément de temps. Par ailleurs, il dispose par défaut de 9 &quot;vues&quot;. En fait, une fenêtre est associée à 1 ou plusieurs vues, et sera affichée dans chacune d'elles. On devrait plutôt dire &quot;étiquette&quot; que &quot;vue&quot;. L'avantage pour le simple utilisateur, c'est que le C est très clair, et et que l'on a même pas besoin de tout comprendre pour le configurer. Eh oui, tout a été pensé, il suffit en fait d'éditer rien qu'un tout petit fichier : [http://thuban.toile-libre.org/index.php/dwm-un-tiling-window-manager-pour-vos-besoins/#4-1-le-fichier-config-h le config.h ], qui a été construit de manière à rendre la configuration accessible même aux non-initiés. De plus, cela évite les multiples fichiers de configuration tiers, on configure dwm une fois, et une fois qu'il est insallé, on n'a plus rien à toucher, tout est dans le binaire! Ainsi, dwm n'a pas à chercher et lire ces fichiers de configuration pour faire son boulot, donc le temps d'éxécution est amélioré! Debian propose un paquet de démonstration. On expliquera ici comment reconstruire un paquet proprement, une fois que l'on a configuré dwm à notre sauce. Le code de dwm a été construit dans le but de pouvoir ajouter des fonctionnalités simplement, sous forme de [http://thuban.toile-libre.org/index.php/dwm-un-tiling-window-manager-pour-vos-besoins/#4-3-ajouter-un-patch patches.] Vous pourrez alors composer votre gestionnaire de fenêtre, avec les fonctions que vous désirez. Avant de vous présenter ici les différentes configurations possible, astuces et autres, je ne peux continuer sans [http://dwm.suckless.org/screenshots/ une traditionnelle capture d'écran] : 


[[Fichier:dwm-exemple.png|200px|thumb|left|un exemple d'utilisation de dwm]]

=='''Tester sur debian :'''==

''' ''' Pour commencer, on va utiliser la version de test proposée dans les dépots Debian. Test? Eh oui, car la puissance de dwm se retrouve lorsque l'on édite le fichier config.h, et que l'on recompile. Mais rassurez-vous, cela tient du jeu d'enfant! Il est même prévu de reconstruire le paquet! Bien, installez donc le paquet dwm (aptitude install dwm), puis choisissez cette session dans gdm/kdm, ou bien ajoutez à votre .xinitrc :&lt;code&gt;exec dwm&lt;/code&gt; Comme vous le voyez, la configuration par défaut n'est pas la plus belle. Mais on va y remédier! ''' '''

=='''Utilisation :'''==

Dwm a été pensé pour être entièrement piloté au clavier si besoin. Voici les raccourcis définis par défaut. On utilisera dans un premier temps la touche &quot;alt&quot; comme touche &quot;Mod1&quot;. ([http://thuban.toile-libre.org/index.php/dwm-un-tiling-window-manager-pour-vos-besoins/#4-configurer-dwm voir la partie configuration pour plus d'informations])

* Mod1-Shift-Return Lance un terminal
* Mod1-b Affiche/cache la barre
* Mod1-t Passer en mode &quot;tiling&quot;
* Mod1-f Passer en mode flottant.
* Mod1-m Maximise la zone principale
* Mod1-space Passe du mode courant au mode précédent.
* Mod1-j Passe le focus à la fenêtre suivante
* Mod1-k passe le focus à la fenêtre précédente
* Mod1-h Réduis la taille de la zone principale
* Mod1-l Augmente la taille de la zone principale
* Mod1-Return Échange les fenêtres séléctionnées depuis/vers la zone principale
* Mod1-Shift-c Ferme la fenêtre sélectionnée
* Mod1-Shift-space Passe la fenêtre sélectionnée entre le mode tiling et flottant
* Mod1-Tab Sélectionne la vue précédente
* Mod1-Shift-[1..n] Envoie la fenêtre à la vue numéro 1...n
* Mod1-Shift-0 Affiche la fenêtre sur toutes les vues
* Mod1-Control-Shift-[1..n] Ajoute/Retire la fenêtre sélectionnée du bureau numéro 1...n , pratique si on veut qu'une fenêtre apparaisse sur plusieurs vues
* Mod1-[1..n] Aller à la vue 1...n
* Mod1-0 Affiche toutes les fenêtres de toutes les vues.
* Mod1-Control-[1..n] Retire toutes les fenêtres de la vue 1...n
* Mod1-, Change d'écran, si il y en a plusieurs
* Mod1-Shift-q Quitte dwm



Sur le bureau, on démarre par defaut en mode « divisé » : l'écran est divisé équitablement entre les fenêtres. Voici les modes disponibles par défaut :

* Le mode « flottant » (Mod+f) : Vous pourrez alors déplacer la fenêtre en maintenant la touche Mod appuyée tout en déplacant la fenêtre à la souris, la redimensionner en maintenant Mod et en faisant clic-droit avec la souris.

* Le mode « maximum » (Mod+m) : la fenêtre prend tout l'espace disponible, on ne voit pas les autres fenêtres

* Le mode « divisé » (Mod+t) : Mode écran divisé ou tiling. Une partie maître à gauche, avec une fenêtre plus grande, et une partie à droite avec les fenêtres plus petites.

===Obtenir dwm :===

Dwm est téléchargeable sur le [http://dl.suckless.org/dwm/ site officiel] (prendre l'archive la plus récente et la décompresser), ou vous pouvez télécharger les sources debian : &lt;code&gt;# apt-get source dwm&lt;/code&gt; . Pour les plus aventureux, vous pouver installer la toute dernière mouture de dwm ainsi (paquet mercurial nécéssaire) &lt;code&gt;hg clone http://hg.suckless.org/dwm&lt;/code&gt;. Les deux dernières commandes téléchargent les sources dans le dossier courant. On se déplace dans le dossier des sources de dwm : &lt;code&gt;cd dwm-numéro_de_version&lt;/code&gt;

===Installer dwm :===

Dans le dossier contenant les sources, il suffit de taper : &lt;code&gt;make&lt;/code&gt;. Dwm est alors compilé, et présent dans le dossier actuel. Vous pouvez l'installer sur tout le système si vous voulez, en tapant ensuite : &lt;code&gt;make install&lt;/code&gt; Les éxécutables seront dans ce cas le dossier /usr/local/bin par défaut. Pour changer ce répertoire, il faut éditer le fichier config.mk, et changer la ligne : &lt;code&gt;PREFIX = /chemin/du/dossier/destination&lt;/code&gt; vers le chemin de votre choix (votre dossier utilisateur ou autre). Notez toutefois que pour lancer votre session ensuite, il faudra préciser le bon chemin.
 &lt;code&gt; 
#Fichier ~/.xinitrc
#commande pour lancer dwm en tapant startx 
#Lorsque dwm est dans /usr/bin ou /usr/local/bin : 
exec dwm 
#lorsque dwm est dans un dossier quelconque, par exemple dans /home/user/ 
#exec /home/user/dwm &lt;/code&gt; 
Les dépendances nécéssaires sont libX11-dev et éventuellement libxinerama-dev. Intéressons nous comment recréer un paquet debian à partir des sources debian : On récupère les sources, qui seront décompressées dans le dossier courant : &lt;code&gt; apt-get source dwm&lt;/code&gt; On se déplace dans le dossier des sources. J'utilise le caractère &quot;*&quot; pour ne pas avoir à préciser la version de dwm : &lt;code&gt;cd dwm*&lt;/code&gt; Maintenant, on retrouve les fichiers sources de dwm, les mêmes que dans l'archive officielle plus quelques autres relatifs à debian. On configure dwm de la même façon que pour les autres méthode, en éditant le config.h ([http://thuban.toile-libre.org/index.php/dwm-un-tiling-window-manager-pour-vos-besoins/#4-configurer-dwm voir plus loin]) Une fois que vous êtes satisfaits, vous pouvez refabriquer le paquet avec cette commande (toujours dans le dossier des sources) : &lt;code&gt;dpkg-buildpackage -rfakeroot -uc -b&lt;/code&gt; Ce qui va créer un fichier dwm-version.deb dans le répertoire supérieur. Pour vous assurez d'avoir les dépendances nécéssaires, tapez ceci (Merci Knucky) : &lt;code&gt;apt-get build-dep dwm&lt;/code&gt; Allons donc chercher le paquet récemment créé : &lt;code&gt;cd ..&lt;/code&gt; Et installons ce paquet (il faut avoir les droits super-utilisateur) : &lt;code&gt; dpkg -i dwm_*.deb &lt;/code&gt; Le paquet est maintenant installé!

Il se peut fichier dwm-5.7.2/debian/desktop/dwm soit mal fait. En effet pour être pris en compte par gdm il faut le renommer avec l'extension &quot;.desktop&quot;. ''' '''

==''' [http://dwm.suckless.org/customisation/ 4. Configurer dwm :]'''==

''' ''' ''[http://dwm.suckless.org/customisation/ Documentation du site officiel à ce sujet]'' On va maintenant se pencher sur les configurations possibles.

===Le fichier config.h :===

Depuis le temps que je vous parle de ce fichier! Il se trouve dans le dossier des sources de dwm. Allons le chercher : &lt;code&gt;cd dwm-numero_de_version&lt;/code&gt; ''Mais, que dis-tu, il n'y a pas de fichier config.h! bouh!'' Ahem... En effet, dis comme ça... Non, je ne me moque pas de vous. En fait, par défaut, le fichier s'appelle config.def.h. C'est en fait un config.h qui sert de modèle. Cependant, si un fichier config.h est présent, ce sera lui qui sera utilisé pour la configuration, sinon ce sera le config.def.h. Je vous invite à copier le fichier config.def.h en config.h, toujours dans le dossier des sources : &lt;code&gt;cp config.def.h config.h&lt;/code&gt; Ainsi, vous gardez un modèle d'origine en cas de besoin. Voici à quoi ressemble le fichier par défaut, j'y rajoute ici des commentaires pour l'expliquer en français. 
http://www.isalo.org/pnopaste/?14

====Donner des règles pour les fenêtres====

Voir aussi : http://dwm.suckless.org/customisation/tagmask Il est possible de définir des règles spécifique à certaines fenêtres. Par exemple, si je veux que transmission n'apparaisse que su le tag 9, il faudra mettre ceci : &lt;code lang=&quot;c&quot;&gt; static const Rule rules[] = { /* class instance title tags mask isfloating monitor */ { &quot;Transmission&quot;, NULL, NULL, 1 &lt;&lt; 8, False, -1 }, }; &lt;/code&gt; Pour récupérer les informations sur une fenêtre, tapez xprop dans une console. Votre curseur va changer de forme. Cliquez alors sur la fenêtre voulue. Vous verrez apparaître dans la console les informations sur la classe, le titre de la fenêtre... Vous l'aurez compris, si vous voulez que la fenêtre flotte, il faudra mettre &quot;True&quot; dans la colonne &quot;isfloating&quot; Pour désigner le tag où l'on veut que la fenêtre apparaisse, c'est un peu plus complexe. Ainsi 1 &lt;&lt; 8 définit le tag 9, 1 &lt;&lt; 7 représente le tag 8, ~0 représente tous les tags, (1 &lt;&lt; 8 ) – 1 définit tous les tags sauf le 9eme.

====Définir vos raccourcis:====

Bien sûr, on peut éxécuter la commande de notre choix via un raccourci clavier, ou même un raccourci souris si on le souhaite. La première étape sera de définir ce raccourci. Il s'agit en fait de faire nos propres fonctions. Repérer ces lignes dans le config.h : &lt;code lang=&quot;c&quot;&gt; /* commands */ static const char *dmenucmd[] = { &quot;dmenu_run&quot;, &quot;-fn&quot;, font, &quot;-nb&quot;, normbgcolor, &quot;-nf&quot;, normfgcolor, &quot;-sb&quot;, selbgcolor, &quot;-sf&quot;, selfgcolor, NULL }; static const char *termcmd[] = { &quot;uxterm&quot;, NULL }; &lt;/code&gt; La première ligne sert à lancer dmenu avec les couleurs de dwm. C'est en fait ce qui se passe lorsque vous tapez le raccourci Mod+P . dmenu est inclus dans le paquet dwm-tools ou suckless-tools, ou[http://tools.suckless.org/dmenu/  téléchargeable sur le site officiel]. La deuxième ligne lance un terminal, c'est ce qui se passe lorsque vous faîtes Mod+Shift+Entrée. Vous pouvez modifier la commande uxterm, par votre terminal favori (xterm, urxvt, xfce4-terminal, lxterminal...). Si vous n'êtes pas sûr, suivez le conseile de MisterFreez, indiquez &quot;x-terminal-emulator&quot; On va ajouter en dessous ces lignes nos propres fonctions! Par exemple, je voudrais ajouter deux raccourcis : l'un pour lancer gajim, l'autre pour couper/activer le son. Il faudra définir deux fonctions sur le même modèle que les précédentes. Donnez leur le nom que vous voulez, du moment que vous vous y retrouvez. Exemple : &lt;code lang=&quot;c&quot;&gt; static const char *gajim[] = { &quot;gajim&quot;, NULL }; static const char *muteson[] = { &quot;amixer&quot;, &quot;-q&quot;, &quot;set&quot;, &quot;Master&quot;, &quot;toggle&quot;, NULL }; &lt;/code&gt; '''Note : '''Remarquez que lorsque une commande contient des espaces, chaque argument doit être entre guillemets suivi d'une virgule. Les commandes finissent toujours par NULL. Bien, maintenant que nos fonctions sont définies, on va les appeler. J'ai envie de lancer gajim lorsque j'appuie sur Mod4+Mod1+i, et couper le son lorsque j'appuie sur la touche multimédia de mon ordinateur associée. Voici ce que ça donnera, dans la section des raccourcis claviers : &lt;code lang=&quot;c&quot;&gt; static Key keys[] = { /*il y a d'autres choses avant....*/ { MODKEY|Mod1, XK_i, spawn, {.v = gajim } }, { 0, 0x1008ff12, spawn, {.v = muteson } }, &lt;/code&gt; ''' Ouhla, ça mérite des explications :''' - Pour définir plusieurs modifieurs, on les sépare par un &quot;|&quot;. - XK_i correspond à la touche &quot;i&quot; - spawn est une fonction dans dwm, qui dit d'éxécuter la fonction désignée - On donne la fonction à éxécuter entre {.v = nom_de_fonction }. Le nom de la fonction est celui définit précédemment. - S'il n'y a pas de modificateur, on met un 0. - 0x1008ff12, c'est le code de ma touche multimédia, que j'ai récupéré en tapant xev en console, puis en faisant fn+&quot;touche bleue&quot; qui coupe le son&quot; Notez qu'il est possible de le faire aussi pour la souris. Par exemple, je veux que lorsque je fais un clique droit sur le texte dans la barre de tâches, ça lance un script que j'ai fait maison. On procédera comme suit :

* 1/On définit la commande du script. Je lui donne le petit nom &quot;deloggue&quot;, car ça me sert à mettre fin à une session

&lt;code lang=&quot;c&quot;&gt; static const char *deloggue[] = { &quot;/home/xavier/Documents/Scripts/exit.sh&quot;, NULL }; &lt;/code&gt;

* 2/ J'appelle cette fonction ensuite avec le clic droit sur le texte.

Dans la partie &quot;souris&quot;, on aura donc : &lt;code lang=&quot;c&quot;&gt; static Button buttons[] = { /* click event mask button function argument */ { ClkStatusText, 0, Button3, spawn, {.v = deloggue } }, }; &lt;/code&gt; On peut aussi modifier les raccourcis déja existants. Je souhaitais que lorsque je fait un clic-milieu sur le titre d'une fenêtre, ça la ferme : &lt;code lang=&quot;c&quot;&gt; static Button buttons[] = { /* click event mask button function argument */ { ClkWinTitle, 0, Button2, killclient, {0} }, }; &lt;/code&gt; ''Voila, rien de bien compliqué en définitive. On définit d'abord la commande à éxécuter, en lui donnant un nom de fonction au choix. Ensuite, on peut lancer cette commande avec spawn, suivi du nom de la fonction.''

====Modifier la configuration pour les claviers français :====

=====Le problème des touches &quot;chiffre&quot;:=====

Malheureusement, dwm est configuré par défaut pour les claviers anglais. Les chiffres au dessus des lettres de votre clavier ne seront pas lus comme tels, mais comme étant un &quot;&amp;amp;&quot; pour le &quot;1&quot;, un &quot;é&quot; pour le 2, un &quot; pour le &quot;3&quot;... On va donc remédier à tout ça. Le code de nos touches se récupère très facilement avec xev. Il faut lancer xev en console, taper sur une touche, et lire ce qui est retourné. On va donc remplacer cette portion : &lt;code lang=&quot;c&quot;&gt; TAGKEYS( XK_1, 0) TAGKEYS( XK_2, 1) TAGKEYS( XK_3, 2) TAGKEYS( XK_4, 3) TAGKEYS( XK_5, 4) TAGKEYS( XK_6, 5) TAGKEYS( XK_7, 6) TAGKEYS( XK_8, 7) TAGKEYS( XK_9, 8) &lt;/code&gt; Par ceci : &lt;code lang=&quot;c&quot;&gt; TAGKEYS( 0x26, 0) TAGKEYS( 0xe9, 1) TAGKEYS( 0x22, 2) TAGKEYS( 0x27, 3) TAGKEYS( 0x28, 4) TAGKEYS( 0x2d, 5) TAGKEYS( 0xe8, 6) TAGKEYS( 0x5f, 7) TAGKEYS( 0xe7, 8) &lt;/code&gt; Ainsi que ceci : &lt;code lang=&quot;c&quot;&gt; { MODKEY, XK_0, view, {.ui = ~0 } }, { MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } }, &lt;/code&gt; par : &lt;code lang=&quot;c&quot;&gt; { MODKEY, 0xe0, view, {.ui = ~0 } }, { MODKEY|ShiftMask, 0xe0, tag, {.ui = ~0 } },&lt;/code&gt;

=====Pour changer d'écran:=====

Il faut françiser la touche &quot;.&quot; pour nos claviers. Donc, remplacer dans le config.h &quot;period&quot; par &quot;semicolon&quot;, car pour nous, c'est le point-virgule : &lt;code lang=&quot;c&quot;&gt; { MODKEY, XK_comma, focusmon, {.i = -1 } }, { MODKEY, XK_semicolon, focusmon, {.i = +1 } }, { MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } }, { MODKEY|ShiftMask, XK_semicolon, tagmon, {.i = +1 } }, &lt;/code&gt; Un config.h françisé est maintenant disponible ici : http://thuban.toile-libre.org/index.php/dwm-en-francais/

===Ajouter un patch:===

Vous pouvez ajouter toutes sortes de fonctionnalités à dwm, en ajoutant des patches. [http://dwm.suckless.org/patches Le site officiel regorge d'informations à ce sujet, et la configuration de chaque patch est expliqué.] De façon générale, pour appliquer un patch, il faudra faire ceci dans le dossier de dwm : &lt;code&gt;patch -p1 &lt; chemin/vers/le/patch.diff &lt;/code&gt; Pour la version tarball (paquet debian inclus) &lt;code&gt;hg patch chemin/vers/le/patch.diff &lt;/code&gt; Pour la version mercurial (hg). Personnellement, j'affectionne le patch [http://dwm.suckless.org/patches/bottom_stack bottom stack] afin d'avoir un agencement des fenetres vertical, et le patch [http://dwm.suckless.org/patches/nametag nametag] pour renommer les tags. Mais je pourrais en mettre plus c'est vrai.

===Avoir un menu pour la souris:===

Il est bien entendu possible d'avoir un menu utilisable à la souris. Je vous invite à lire [http://thuban.toile-libre.org/index.php/un-menu-dans-dwm/ cette page], indiquant plusieurs façons possibles d'obtenir un menu.

===Personnaliser la barre d'état:===

Il est possible d'afficher ce que l'on veut dans la barre d'état. Cela se définit juste avant le lancement de dwm, donc selon les cas dans votre ~/.xinitrc ou autre. Dwm lira ce qui est passé en argument à xsetroot. Cela donnera quelque chose comme ça : &lt;code&gt; while true; do xsetroot -name &quot;$( date +&quot;%F %R&quot; )&quot; sleep 1m # Update time every minute done &amp;amp; exec dwm &lt;/code&gt; Qui affichera la date. Voici mon .xinitrc : &lt;code&gt; /home/xavier/Documents/Scripts/dmenu/dstatus.sh &amp;amp; exec /usr/local/bin/dwm &lt;/code&gt; Vous remarquerez que le lance un script dstatus.sh à part, pour plus de commodité. Ce script récupère plusieurs informations, et les renvoient dans le xsetroot. Ainsi, il y a l'heure, le débit internet, la chaque processeur, le volume sonore, des infos sur la batterie, ce que mpd joue...n peut notamment avoir une barre de progression pour mpd/mplayer/wget... Je met le script [http://pastebin.toile-libre.org/?show=457131 à disposition ici], n'hésitez pas à vous en inspirer!

=='''Conclusion:'''==

Il y a un programme essentiel à utiliser dans dwm : j'ai nommé dmenu. Vous pourrez au fur et à mesure lire des exemples d'utilisation que je posterai [http://thuban.toile-libre.org/index.php/category/suckless/dmenu/ ici]. Cette page est à améliorer et il y a beaucoup de choses à préciser. Je vous invite donc à me faire part de vos remarques afin de l'améliorer. Je poste [http://thuban.toile-libre.org/wp-content/uploads/2010/11/config.h ici mon config.h] si vous voulez voir ma configuration.

== Liens externes ==
* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24798 Page de Misterfreeze pour installer proprement dwm sur sa debian]
* [http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=23322 Discussion autour de la configuration de dwm]
* http://wiki.debian.org/fr/Dwm
* [http://dwm.suckless.org Site officiel]
* [http://thuban.toile-libre.org/index.php/dwm-un-tiling-window-manager-pour-vos-besoins/ Article inspirant cette page ]

[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Tillings]]</text>
      <sha1>14qppbbx7oqqrdsew6gzy88tedcw2we</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4509</id>
      <parentid>2437</parentid>
      <timestamp>2012-10-12T15:22:32Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <comment>/* Conclusion: */</comment>
      <text xml:space="preserve" bytes="19363">=='''Présentation :'''==

''' ''' [http://dwm.suckless.org Dwm] est le tiling windows manager (Gestionnaire de fenêtres en tuile) développé par l'équipe de [http://suckless.org suckless.org]. Fidèle à leur philosophie, il est écrit en C, permettant ainsi la contribution de chacun au projet, ce langage étant plus que répandu et éprouvé. De plus, cela oblige les codeurs à faire du code propre et léger. Il permet de gérer ses fenêtres entièrement au clavier si on le souhaite, mais aussi de passer bien moins de temps à arranger son bureau. Niveau productivité, vous serez donc servi, car il vous aidera à gagner énormément de temps. Par ailleurs, il dispose par défaut de 9 &quot;vues&quot;. En fait, une fenêtre est associée à 1 ou plusieurs vues, et sera affichée dans chacune d'elles. On devrait plutôt dire &quot;étiquette&quot; que &quot;vue&quot;. L'avantage pour le simple utilisateur, c'est que le C est très clair, et et que l'on a même pas besoin de tout comprendre pour le configurer. Eh oui, tout a été pensé, il suffit en fait d'éditer rien qu'un tout petit fichier : [http://thuban.toile-libre.org/index.php/dwm-un-tiling-window-manager-pour-vos-besoins/#4-1-le-fichier-config-h le config.h ], qui a été construit de manière à rendre la configuration accessible même aux non-initiés. De plus, cela évite les multiples fichiers de configuration tiers, on configure dwm une fois, et une fois qu'il est insallé, on n'a plus rien à toucher, tout est dans le binaire! Ainsi, dwm n'a pas à chercher et lire ces fichiers de configuration pour faire son boulot, donc le temps d'éxécution est amélioré! Debian propose un paquet de démonstration. On expliquera ici comment reconstruire un paquet proprement, une fois que l'on a configuré dwm à notre sauce. Le code de dwm a été construit dans le but de pouvoir ajouter des fonctionnalités simplement, sous forme de [http://thuban.toile-libre.org/index.php/dwm-un-tiling-window-manager-pour-vos-besoins/#4-3-ajouter-un-patch patches.] Vous pourrez alors composer votre gestionnaire de fenêtre, avec les fonctions que vous désirez. Avant de vous présenter ici les différentes configurations possible, astuces et autres, je ne peux continuer sans [http://dwm.suckless.org/screenshots/ une traditionnelle capture d'écran] : 


[[Fichier:dwm-exemple.png|200px|thumb|left|un exemple d'utilisation de dwm]]

=='''Tester sur debian :'''==

''' ''' Pour commencer, on va utiliser la version de test proposée dans les dépots Debian. Test? Eh oui, car la puissance de dwm se retrouve lorsque l'on édite le fichier config.h, et que l'on recompile. Mais rassurez-vous, cela tient du jeu d'enfant! Il est même prévu de reconstruire le paquet! Bien, installez donc le paquet dwm (aptitude install dwm), puis choisissez cette session dans gdm/kdm, ou bien ajoutez à votre .xinitrc :&lt;code&gt;exec dwm&lt;/code&gt; Comme vous le voyez, la configuration par défaut n'est pas la plus belle. Mais on va y remédier! ''' '''

=='''Utilisation :'''==

Dwm a été pensé pour être entièrement piloté au clavier si besoin. Voici les raccourcis définis par défaut. On utilisera dans un premier temps la touche &quot;alt&quot; comme touche &quot;Mod1&quot;. ([http://thuban.toile-libre.org/index.php/dwm-un-tiling-window-manager-pour-vos-besoins/#4-configurer-dwm voir la partie configuration pour plus d'informations])

* Mod1-Shift-Return Lance un terminal
* Mod1-b Affiche/cache la barre
* Mod1-t Passer en mode &quot;tiling&quot;
* Mod1-f Passer en mode flottant.
* Mod1-m Maximise la zone principale
* Mod1-space Passe du mode courant au mode précédent.
* Mod1-j Passe le focus à la fenêtre suivante
* Mod1-k passe le focus à la fenêtre précédente
* Mod1-h Réduis la taille de la zone principale
* Mod1-l Augmente la taille de la zone principale
* Mod1-Return Échange les fenêtres séléctionnées depuis/vers la zone principale
* Mod1-Shift-c Ferme la fenêtre sélectionnée
* Mod1-Shift-space Passe la fenêtre sélectionnée entre le mode tiling et flottant
* Mod1-Tab Sélectionne la vue précédente
* Mod1-Shift-[1..n] Envoie la fenêtre à la vue numéro 1...n
* Mod1-Shift-0 Affiche la fenêtre sur toutes les vues
* Mod1-Control-Shift-[1..n] Ajoute/Retire la fenêtre sélectionnée du bureau numéro 1...n , pratique si on veut qu'une fenêtre apparaisse sur plusieurs vues
* Mod1-[1..n] Aller à la vue 1...n
* Mod1-0 Affiche toutes les fenêtres de toutes les vues.
* Mod1-Control-[1..n] Retire toutes les fenêtres de la vue 1...n
* Mod1-, Change d'écran, si il y en a plusieurs
* Mod1-Shift-q Quitte dwm



Sur le bureau, on démarre par defaut en mode « divisé » : l'écran est divisé équitablement entre les fenêtres. Voici les modes disponibles par défaut :

* Le mode « flottant » (Mod+f) : Vous pourrez alors déplacer la fenêtre en maintenant la touche Mod appuyée tout en déplacant la fenêtre à la souris, la redimensionner en maintenant Mod et en faisant clic-droit avec la souris.

* Le mode « maximum » (Mod+m) : la fenêtre prend tout l'espace disponible, on ne voit pas les autres fenêtres

* Le mode « divisé » (Mod+t) : Mode écran divisé ou tiling. Une partie maître à gauche, avec une fenêtre plus grande, et une partie à droite avec les fenêtres plus petites.

===Obtenir dwm :===

Dwm est téléchargeable sur le [http://dl.suckless.org/dwm/ site officiel] (prendre l'archive la plus récente et la décompresser), ou vous pouvez télécharger les sources debian : &lt;code&gt;# apt-get source dwm&lt;/code&gt; . Pour les plus aventureux, vous pouver installer la toute dernière mouture de dwm ainsi (paquet mercurial nécéssaire) &lt;code&gt;hg clone http://hg.suckless.org/dwm&lt;/code&gt;. Les deux dernières commandes téléchargent les sources dans le dossier courant. On se déplace dans le dossier des sources de dwm : &lt;code&gt;cd dwm-numéro_de_version&lt;/code&gt;

===Installer dwm :===

Dans le dossier contenant les sources, il suffit de taper : &lt;code&gt;make&lt;/code&gt;. Dwm est alors compilé, et présent dans le dossier actuel. Vous pouvez l'installer sur tout le système si vous voulez, en tapant ensuite : &lt;code&gt;make install&lt;/code&gt; Les éxécutables seront dans ce cas le dossier /usr/local/bin par défaut. Pour changer ce répertoire, il faut éditer le fichier config.mk, et changer la ligne : &lt;code&gt;PREFIX = /chemin/du/dossier/destination&lt;/code&gt; vers le chemin de votre choix (votre dossier utilisateur ou autre). Notez toutefois que pour lancer votre session ensuite, il faudra préciser le bon chemin.
 &lt;code&gt; 
#Fichier ~/.xinitrc
#commande pour lancer dwm en tapant startx 
#Lorsque dwm est dans /usr/bin ou /usr/local/bin : 
exec dwm 
#lorsque dwm est dans un dossier quelconque, par exemple dans /home/user/ 
#exec /home/user/dwm &lt;/code&gt; 
Les dépendances nécéssaires sont libX11-dev et éventuellement libxinerama-dev. Intéressons nous comment recréer un paquet debian à partir des sources debian : On récupère les sources, qui seront décompressées dans le dossier courant : &lt;code&gt; apt-get source dwm&lt;/code&gt; On se déplace dans le dossier des sources. J'utilise le caractère &quot;*&quot; pour ne pas avoir à préciser la version de dwm : &lt;code&gt;cd dwm*&lt;/code&gt; Maintenant, on retrouve les fichiers sources de dwm, les mêmes que dans l'archive officielle plus quelques autres relatifs à debian. On configure dwm de la même façon que pour les autres méthode, en éditant le config.h ([http://thuban.toile-libre.org/index.php/dwm-un-tiling-window-manager-pour-vos-besoins/#4-configurer-dwm voir plus loin]) Une fois que vous êtes satisfaits, vous pouvez refabriquer le paquet avec cette commande (toujours dans le dossier des sources) : &lt;code&gt;dpkg-buildpackage -rfakeroot -uc -b&lt;/code&gt; Ce qui va créer un fichier dwm-version.deb dans le répertoire supérieur. Pour vous assurez d'avoir les dépendances nécéssaires, tapez ceci (Merci Knucky) : &lt;code&gt;apt-get build-dep dwm&lt;/code&gt; Allons donc chercher le paquet récemment créé : &lt;code&gt;cd ..&lt;/code&gt; Et installons ce paquet (il faut avoir les droits super-utilisateur) : &lt;code&gt; dpkg -i dwm_*.deb &lt;/code&gt; Le paquet est maintenant installé!

Il se peut fichier dwm-5.7.2/debian/desktop/dwm soit mal fait. En effet pour être pris en compte par gdm il faut le renommer avec l'extension &quot;.desktop&quot;. ''' '''

==''' [http://dwm.suckless.org/customisation/ 4. Configurer dwm :]'''==

''' ''' ''[http://dwm.suckless.org/customisation/ Documentation du site officiel à ce sujet]'' On va maintenant se pencher sur les configurations possibles.

===Le fichier config.h :===

Depuis le temps que je vous parle de ce fichier! Il se trouve dans le dossier des sources de dwm. Allons le chercher : &lt;code&gt;cd dwm-numero_de_version&lt;/code&gt; ''Mais, que dis-tu, il n'y a pas de fichier config.h! bouh!'' Ahem... En effet, dis comme ça... Non, je ne me moque pas de vous. En fait, par défaut, le fichier s'appelle config.def.h. C'est en fait un config.h qui sert de modèle. Cependant, si un fichier config.h est présent, ce sera lui qui sera utilisé pour la configuration, sinon ce sera le config.def.h. Je vous invite à copier le fichier config.def.h en config.h, toujours dans le dossier des sources : &lt;code&gt;cp config.def.h config.h&lt;/code&gt; Ainsi, vous gardez un modèle d'origine en cas de besoin. Voici à quoi ressemble le fichier par défaut, j'y rajoute ici des commentaires pour l'expliquer en français. 
http://www.isalo.org/pnopaste/?14

====Donner des règles pour les fenêtres====

Voir aussi : http://dwm.suckless.org/customisation/tagmask Il est possible de définir des règles spécifique à certaines fenêtres. Par exemple, si je veux que transmission n'apparaisse que su le tag 9, il faudra mettre ceci : &lt;code lang=&quot;c&quot;&gt; static const Rule rules[] = { /* class instance title tags mask isfloating monitor */ { &quot;Transmission&quot;, NULL, NULL, 1 &lt;&lt; 8, False, -1 }, }; &lt;/code&gt; Pour récupérer les informations sur une fenêtre, tapez xprop dans une console. Votre curseur va changer de forme. Cliquez alors sur la fenêtre voulue. Vous verrez apparaître dans la console les informations sur la classe, le titre de la fenêtre... Vous l'aurez compris, si vous voulez que la fenêtre flotte, il faudra mettre &quot;True&quot; dans la colonne &quot;isfloating&quot; Pour désigner le tag où l'on veut que la fenêtre apparaisse, c'est un peu plus complexe. Ainsi 1 &lt;&lt; 8 définit le tag 9, 1 &lt;&lt; 7 représente le tag 8, ~0 représente tous les tags, (1 &lt;&lt; 8 ) – 1 définit tous les tags sauf le 9eme.

====Définir vos raccourcis:====

Bien sûr, on peut éxécuter la commande de notre choix via un raccourci clavier, ou même un raccourci souris si on le souhaite. La première étape sera de définir ce raccourci. Il s'agit en fait de faire nos propres fonctions. Repérer ces lignes dans le config.h : &lt;code lang=&quot;c&quot;&gt; /* commands */ static const char *dmenucmd[] = { &quot;dmenu_run&quot;, &quot;-fn&quot;, font, &quot;-nb&quot;, normbgcolor, &quot;-nf&quot;, normfgcolor, &quot;-sb&quot;, selbgcolor, &quot;-sf&quot;, selfgcolor, NULL }; static const char *termcmd[] = { &quot;uxterm&quot;, NULL }; &lt;/code&gt; La première ligne sert à lancer dmenu avec les couleurs de dwm. C'est en fait ce qui se passe lorsque vous tapez le raccourci Mod+P . dmenu est inclus dans le paquet dwm-tools ou suckless-tools, ou[http://tools.suckless.org/dmenu/  téléchargeable sur le site officiel]. La deuxième ligne lance un terminal, c'est ce qui se passe lorsque vous faîtes Mod+Shift+Entrée. Vous pouvez modifier la commande uxterm, par votre terminal favori (xterm, urxvt, xfce4-terminal, lxterminal...). Si vous n'êtes pas sûr, suivez le conseile de MisterFreez, indiquez &quot;x-terminal-emulator&quot; On va ajouter en dessous ces lignes nos propres fonctions! Par exemple, je voudrais ajouter deux raccourcis : l'un pour lancer gajim, l'autre pour couper/activer le son. Il faudra définir deux fonctions sur le même modèle que les précédentes. Donnez leur le nom que vous voulez, du moment que vous vous y retrouvez. Exemple : &lt;code lang=&quot;c&quot;&gt; static const char *gajim[] = { &quot;gajim&quot;, NULL }; static const char *muteson[] = { &quot;amixer&quot;, &quot;-q&quot;, &quot;set&quot;, &quot;Master&quot;, &quot;toggle&quot;, NULL }; &lt;/code&gt; '''Note : '''Remarquez que lorsque une commande contient des espaces, chaque argument doit être entre guillemets suivi d'une virgule. Les commandes finissent toujours par NULL. Bien, maintenant que nos fonctions sont définies, on va les appeler. J'ai envie de lancer gajim lorsque j'appuie sur Mod4+Mod1+i, et couper le son lorsque j'appuie sur la touche multimédia de mon ordinateur associée. Voici ce que ça donnera, dans la section des raccourcis claviers : &lt;code lang=&quot;c&quot;&gt; static Key keys[] = { /*il y a d'autres choses avant....*/ { MODKEY|Mod1, XK_i, spawn, {.v = gajim } }, { 0, 0x1008ff12, spawn, {.v = muteson } }, &lt;/code&gt; ''' Ouhla, ça mérite des explications :''' - Pour définir plusieurs modifieurs, on les sépare par un &quot;|&quot;. - XK_i correspond à la touche &quot;i&quot; - spawn est une fonction dans dwm, qui dit d'éxécuter la fonction désignée - On donne la fonction à éxécuter entre {.v = nom_de_fonction }. Le nom de la fonction est celui définit précédemment. - S'il n'y a pas de modificateur, on met un 0. - 0x1008ff12, c'est le code de ma touche multimédia, que j'ai récupéré en tapant xev en console, puis en faisant fn+&quot;touche bleue&quot; qui coupe le son&quot; Notez qu'il est possible de le faire aussi pour la souris. Par exemple, je veux que lorsque je fais un clique droit sur le texte dans la barre de tâches, ça lance un script que j'ai fait maison. On procédera comme suit :

* 1/On définit la commande du script. Je lui donne le petit nom &quot;deloggue&quot;, car ça me sert à mettre fin à une session

&lt;code lang=&quot;c&quot;&gt; static const char *deloggue[] = { &quot;/home/xavier/Documents/Scripts/exit.sh&quot;, NULL }; &lt;/code&gt;

* 2/ J'appelle cette fonction ensuite avec le clic droit sur le texte.

Dans la partie &quot;souris&quot;, on aura donc : &lt;code lang=&quot;c&quot;&gt; static Button buttons[] = { /* click event mask button function argument */ { ClkStatusText, 0, Button3, spawn, {.v = deloggue } }, }; &lt;/code&gt; On peut aussi modifier les raccourcis déja existants. Je souhaitais que lorsque je fait un clic-milieu sur le titre d'une fenêtre, ça la ferme : &lt;code lang=&quot;c&quot;&gt; static Button buttons[] = { /* click event mask button function argument */ { ClkWinTitle, 0, Button2, killclient, {0} }, }; &lt;/code&gt; ''Voila, rien de bien compliqué en définitive. On définit d'abord la commande à éxécuter, en lui donnant un nom de fonction au choix. Ensuite, on peut lancer cette commande avec spawn, suivi du nom de la fonction.''

====Modifier la configuration pour les claviers français :====

=====Le problème des touches &quot;chiffre&quot;:=====

Malheureusement, dwm est configuré par défaut pour les claviers anglais. Les chiffres au dessus des lettres de votre clavier ne seront pas lus comme tels, mais comme étant un &quot;&amp;amp;&quot; pour le &quot;1&quot;, un &quot;é&quot; pour le 2, un &quot; pour le &quot;3&quot;... On va donc remédier à tout ça. Le code de nos touches se récupère très facilement avec xev. Il faut lancer xev en console, taper sur une touche, et lire ce qui est retourné. On va donc remplacer cette portion : &lt;code lang=&quot;c&quot;&gt; TAGKEYS( XK_1, 0) TAGKEYS( XK_2, 1) TAGKEYS( XK_3, 2) TAGKEYS( XK_4, 3) TAGKEYS( XK_5, 4) TAGKEYS( XK_6, 5) TAGKEYS( XK_7, 6) TAGKEYS( XK_8, 7) TAGKEYS( XK_9, 8) &lt;/code&gt; Par ceci : &lt;code lang=&quot;c&quot;&gt; TAGKEYS( 0x26, 0) TAGKEYS( 0xe9, 1) TAGKEYS( 0x22, 2) TAGKEYS( 0x27, 3) TAGKEYS( 0x28, 4) TAGKEYS( 0x2d, 5) TAGKEYS( 0xe8, 6) TAGKEYS( 0x5f, 7) TAGKEYS( 0xe7, 8) &lt;/code&gt; Ainsi que ceci : &lt;code lang=&quot;c&quot;&gt; { MODKEY, XK_0, view, {.ui = ~0 } }, { MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } }, &lt;/code&gt; par : &lt;code lang=&quot;c&quot;&gt; { MODKEY, 0xe0, view, {.ui = ~0 } }, { MODKEY|ShiftMask, 0xe0, tag, {.ui = ~0 } },&lt;/code&gt;

=====Pour changer d'écran:=====

Il faut françiser la touche &quot;.&quot; pour nos claviers. Donc, remplacer dans le config.h &quot;period&quot; par &quot;semicolon&quot;, car pour nous, c'est le point-virgule : &lt;code lang=&quot;c&quot;&gt; { MODKEY, XK_comma, focusmon, {.i = -1 } }, { MODKEY, XK_semicolon, focusmon, {.i = +1 } }, { MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } }, { MODKEY|ShiftMask, XK_semicolon, tagmon, {.i = +1 } }, &lt;/code&gt; Un config.h françisé est maintenant disponible ici : http://thuban.toile-libre.org/index.php/dwm-en-francais/

===Ajouter un patch:===

Vous pouvez ajouter toutes sortes de fonctionnalités à dwm, en ajoutant des patches. [http://dwm.suckless.org/patches Le site officiel regorge d'informations à ce sujet, et la configuration de chaque patch est expliqué.] De façon générale, pour appliquer un patch, il faudra faire ceci dans le dossier de dwm : &lt;code&gt;patch -p1 &lt; chemin/vers/le/patch.diff &lt;/code&gt; Pour la version tarball (paquet debian inclus) &lt;code&gt;hg patch chemin/vers/le/patch.diff &lt;/code&gt; Pour la version mercurial (hg). Personnellement, j'affectionne le patch [http://dwm.suckless.org/patches/bottom_stack bottom stack] afin d'avoir un agencement des fenetres vertical, et le patch [http://dwm.suckless.org/patches/nametag nametag] pour renommer les tags. Mais je pourrais en mettre plus c'est vrai.

===Avoir un menu pour la souris:===

Il est bien entendu possible d'avoir un menu utilisable à la souris. Je vous invite à lire [http://thuban.toile-libre.org/index.php/un-menu-dans-dwm/ cette page], indiquant plusieurs façons possibles d'obtenir un menu.

===Personnaliser la barre d'état:===

Il est possible d'afficher ce que l'on veut dans la barre d'état. Cela se définit juste avant le lancement de dwm, donc selon les cas dans votre ~/.xinitrc ou autre. Dwm lira ce qui est passé en argument à xsetroot. Cela donnera quelque chose comme ça : &lt;code&gt; while true; do xsetroot -name &quot;$( date +&quot;%F %R&quot; )&quot; sleep 1m # Update time every minute done &amp;amp; exec dwm &lt;/code&gt; Qui affichera la date. Voici mon .xinitrc : &lt;code&gt; /home/xavier/Documents/Scripts/dmenu/dstatus.sh &amp;amp; exec /usr/local/bin/dwm &lt;/code&gt; Vous remarquerez que le lance un script dstatus.sh à part, pour plus de commodité. Ce script récupère plusieurs informations, et les renvoient dans le xsetroot. Ainsi, il y a l'heure, le débit internet, la chaque processeur, le volume sonore, des infos sur la batterie, ce que mpd joue...n peut notamment avoir une barre de progression pour mpd/mplayer/wget... Je met le script [http://pastebin.toile-libre.org/?show=457131 à disposition ici], n'hésitez pas à vous en inspirer!

=='''Conclusion:'''==

Il y a un programme essentiel à utiliser dans dwm : j'ai nommé dmenu. Vous pourrez au fur et à mesure lire des exemples d'utilisation que je posterai [http://thuban.toile-libre.org/Logiciel-libre/Suckless/dwm/dwm_presentation_et_configuration.html ici]. Cette page est à améliorer et il y a beaucoup de choses à préciser. Je vous invite donc à me faire part de vos remarques afin de l'améliorer. Je poste [http://thuban.toile-libre.org/wp-content/uploads/2010/11/config.h ici mon config.h] si vous voulez voir ma configuration.

== Liens externes ==
* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24798 Page de Misterfreeze pour installer proprement dwm sur sa debian]
* [http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=23322 Discussion autour de la configuration de dwm]
* http://wiki.debian.org/fr/Dwm
* [http://dwm.suckless.org Site officiel]
* [http://thuban.toile-libre.org/index.php/dwm-un-tiling-window-manager-pour-vos-besoins/ Article inspirant cette page ]

[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Tillings]]</text>
      <sha1>a1dyw2w6179oh84dmm86lzntmtbxtty</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4510</id>
      <parentid>4509</parentid>
      <timestamp>2012-10-12T15:23:26Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <comment>/* Liens externes */</comment>
      <text xml:space="preserve" bytes="19373">=='''Présentation :'''==

''' ''' [http://dwm.suckless.org Dwm] est le tiling windows manager (Gestionnaire de fenêtres en tuile) développé par l'équipe de [http://suckless.org suckless.org]. Fidèle à leur philosophie, il est écrit en C, permettant ainsi la contribution de chacun au projet, ce langage étant plus que répandu et éprouvé. De plus, cela oblige les codeurs à faire du code propre et léger. Il permet de gérer ses fenêtres entièrement au clavier si on le souhaite, mais aussi de passer bien moins de temps à arranger son bureau. Niveau productivité, vous serez donc servi, car il vous aidera à gagner énormément de temps. Par ailleurs, il dispose par défaut de 9 &quot;vues&quot;. En fait, une fenêtre est associée à 1 ou plusieurs vues, et sera affichée dans chacune d'elles. On devrait plutôt dire &quot;étiquette&quot; que &quot;vue&quot;. L'avantage pour le simple utilisateur, c'est que le C est très clair, et et que l'on a même pas besoin de tout comprendre pour le configurer. Eh oui, tout a été pensé, il suffit en fait d'éditer rien qu'un tout petit fichier : [http://thuban.toile-libre.org/index.php/dwm-un-tiling-window-manager-pour-vos-besoins/#4-1-le-fichier-config-h le config.h ], qui a été construit de manière à rendre la configuration accessible même aux non-initiés. De plus, cela évite les multiples fichiers de configuration tiers, on configure dwm une fois, et une fois qu'il est insallé, on n'a plus rien à toucher, tout est dans le binaire! Ainsi, dwm n'a pas à chercher et lire ces fichiers de configuration pour faire son boulot, donc le temps d'éxécution est amélioré! Debian propose un paquet de démonstration. On expliquera ici comment reconstruire un paquet proprement, une fois que l'on a configuré dwm à notre sauce. Le code de dwm a été construit dans le but de pouvoir ajouter des fonctionnalités simplement, sous forme de [http://thuban.toile-libre.org/index.php/dwm-un-tiling-window-manager-pour-vos-besoins/#4-3-ajouter-un-patch patches.] Vous pourrez alors composer votre gestionnaire de fenêtre, avec les fonctions que vous désirez. Avant de vous présenter ici les différentes configurations possible, astuces et autres, je ne peux continuer sans [http://dwm.suckless.org/screenshots/ une traditionnelle capture d'écran] : 


[[Fichier:dwm-exemple.png|200px|thumb|left|un exemple d'utilisation de dwm]]

=='''Tester sur debian :'''==

''' ''' Pour commencer, on va utiliser la version de test proposée dans les dépots Debian. Test? Eh oui, car la puissance de dwm se retrouve lorsque l'on édite le fichier config.h, et que l'on recompile. Mais rassurez-vous, cela tient du jeu d'enfant! Il est même prévu de reconstruire le paquet! Bien, installez donc le paquet dwm (aptitude install dwm), puis choisissez cette session dans gdm/kdm, ou bien ajoutez à votre .xinitrc :&lt;code&gt;exec dwm&lt;/code&gt; Comme vous le voyez, la configuration par défaut n'est pas la plus belle. Mais on va y remédier! ''' '''

=='''Utilisation :'''==

Dwm a été pensé pour être entièrement piloté au clavier si besoin. Voici les raccourcis définis par défaut. On utilisera dans un premier temps la touche &quot;alt&quot; comme touche &quot;Mod1&quot;. ([http://thuban.toile-libre.org/index.php/dwm-un-tiling-window-manager-pour-vos-besoins/#4-configurer-dwm voir la partie configuration pour plus d'informations])

* Mod1-Shift-Return Lance un terminal
* Mod1-b Affiche/cache la barre
* Mod1-t Passer en mode &quot;tiling&quot;
* Mod1-f Passer en mode flottant.
* Mod1-m Maximise la zone principale
* Mod1-space Passe du mode courant au mode précédent.
* Mod1-j Passe le focus à la fenêtre suivante
* Mod1-k passe le focus à la fenêtre précédente
* Mod1-h Réduis la taille de la zone principale
* Mod1-l Augmente la taille de la zone principale
* Mod1-Return Échange les fenêtres séléctionnées depuis/vers la zone principale
* Mod1-Shift-c Ferme la fenêtre sélectionnée
* Mod1-Shift-space Passe la fenêtre sélectionnée entre le mode tiling et flottant
* Mod1-Tab Sélectionne la vue précédente
* Mod1-Shift-[1..n] Envoie la fenêtre à la vue numéro 1...n
* Mod1-Shift-0 Affiche la fenêtre sur toutes les vues
* Mod1-Control-Shift-[1..n] Ajoute/Retire la fenêtre sélectionnée du bureau numéro 1...n , pratique si on veut qu'une fenêtre apparaisse sur plusieurs vues
* Mod1-[1..n] Aller à la vue 1...n
* Mod1-0 Affiche toutes les fenêtres de toutes les vues.
* Mod1-Control-[1..n] Retire toutes les fenêtres de la vue 1...n
* Mod1-, Change d'écran, si il y en a plusieurs
* Mod1-Shift-q Quitte dwm



Sur le bureau, on démarre par defaut en mode « divisé » : l'écran est divisé équitablement entre les fenêtres. Voici les modes disponibles par défaut :

* Le mode « flottant » (Mod+f) : Vous pourrez alors déplacer la fenêtre en maintenant la touche Mod appuyée tout en déplacant la fenêtre à la souris, la redimensionner en maintenant Mod et en faisant clic-droit avec la souris.

* Le mode « maximum » (Mod+m) : la fenêtre prend tout l'espace disponible, on ne voit pas les autres fenêtres

* Le mode « divisé » (Mod+t) : Mode écran divisé ou tiling. Une partie maître à gauche, avec une fenêtre plus grande, et une partie à droite avec les fenêtres plus petites.

===Obtenir dwm :===

Dwm est téléchargeable sur le [http://dl.suckless.org/dwm/ site officiel] (prendre l'archive la plus récente et la décompresser), ou vous pouvez télécharger les sources debian : &lt;code&gt;# apt-get source dwm&lt;/code&gt; . Pour les plus aventureux, vous pouver installer la toute dernière mouture de dwm ainsi (paquet mercurial nécéssaire) &lt;code&gt;hg clone http://hg.suckless.org/dwm&lt;/code&gt;. Les deux dernières commandes téléchargent les sources dans le dossier courant. On se déplace dans le dossier des sources de dwm : &lt;code&gt;cd dwm-numéro_de_version&lt;/code&gt;

===Installer dwm :===

Dans le dossier contenant les sources, il suffit de taper : &lt;code&gt;make&lt;/code&gt;. Dwm est alors compilé, et présent dans le dossier actuel. Vous pouvez l'installer sur tout le système si vous voulez, en tapant ensuite : &lt;code&gt;make install&lt;/code&gt; Les éxécutables seront dans ce cas le dossier /usr/local/bin par défaut. Pour changer ce répertoire, il faut éditer le fichier config.mk, et changer la ligne : &lt;code&gt;PREFIX = /chemin/du/dossier/destination&lt;/code&gt; vers le chemin de votre choix (votre dossier utilisateur ou autre). Notez toutefois que pour lancer votre session ensuite, il faudra préciser le bon chemin.
 &lt;code&gt; 
#Fichier ~/.xinitrc
#commande pour lancer dwm en tapant startx 
#Lorsque dwm est dans /usr/bin ou /usr/local/bin : 
exec dwm 
#lorsque dwm est dans un dossier quelconque, par exemple dans /home/user/ 
#exec /home/user/dwm &lt;/code&gt; 
Les dépendances nécéssaires sont libX11-dev et éventuellement libxinerama-dev. Intéressons nous comment recréer un paquet debian à partir des sources debian : On récupère les sources, qui seront décompressées dans le dossier courant : &lt;code&gt; apt-get source dwm&lt;/code&gt; On se déplace dans le dossier des sources. J'utilise le caractère &quot;*&quot; pour ne pas avoir à préciser la version de dwm : &lt;code&gt;cd dwm*&lt;/code&gt; Maintenant, on retrouve les fichiers sources de dwm, les mêmes que dans l'archive officielle plus quelques autres relatifs à debian. On configure dwm de la même façon que pour les autres méthode, en éditant le config.h ([http://thuban.toile-libre.org/index.php/dwm-un-tiling-window-manager-pour-vos-besoins/#4-configurer-dwm voir plus loin]) Une fois que vous êtes satisfaits, vous pouvez refabriquer le paquet avec cette commande (toujours dans le dossier des sources) : &lt;code&gt;dpkg-buildpackage -rfakeroot -uc -b&lt;/code&gt; Ce qui va créer un fichier dwm-version.deb dans le répertoire supérieur. Pour vous assurez d'avoir les dépendances nécéssaires, tapez ceci (Merci Knucky) : &lt;code&gt;apt-get build-dep dwm&lt;/code&gt; Allons donc chercher le paquet récemment créé : &lt;code&gt;cd ..&lt;/code&gt; Et installons ce paquet (il faut avoir les droits super-utilisateur) : &lt;code&gt; dpkg -i dwm_*.deb &lt;/code&gt; Le paquet est maintenant installé!

Il se peut fichier dwm-5.7.2/debian/desktop/dwm soit mal fait. En effet pour être pris en compte par gdm il faut le renommer avec l'extension &quot;.desktop&quot;. ''' '''

==''' [http://dwm.suckless.org/customisation/ 4. Configurer dwm :]'''==

''' ''' ''[http://dwm.suckless.org/customisation/ Documentation du site officiel à ce sujet]'' On va maintenant se pencher sur les configurations possibles.

===Le fichier config.h :===

Depuis le temps que je vous parle de ce fichier! Il se trouve dans le dossier des sources de dwm. Allons le chercher : &lt;code&gt;cd dwm-numero_de_version&lt;/code&gt; ''Mais, que dis-tu, il n'y a pas de fichier config.h! bouh!'' Ahem... En effet, dis comme ça... Non, je ne me moque pas de vous. En fait, par défaut, le fichier s'appelle config.def.h. C'est en fait un config.h qui sert de modèle. Cependant, si un fichier config.h est présent, ce sera lui qui sera utilisé pour la configuration, sinon ce sera le config.def.h. Je vous invite à copier le fichier config.def.h en config.h, toujours dans le dossier des sources : &lt;code&gt;cp config.def.h config.h&lt;/code&gt; Ainsi, vous gardez un modèle d'origine en cas de besoin. Voici à quoi ressemble le fichier par défaut, j'y rajoute ici des commentaires pour l'expliquer en français. 
http://www.isalo.org/pnopaste/?14

====Donner des règles pour les fenêtres====

Voir aussi : http://dwm.suckless.org/customisation/tagmask Il est possible de définir des règles spécifique à certaines fenêtres. Par exemple, si je veux que transmission n'apparaisse que su le tag 9, il faudra mettre ceci : &lt;code lang=&quot;c&quot;&gt; static const Rule rules[] = { /* class instance title tags mask isfloating monitor */ { &quot;Transmission&quot;, NULL, NULL, 1 &lt;&lt; 8, False, -1 }, }; &lt;/code&gt; Pour récupérer les informations sur une fenêtre, tapez xprop dans une console. Votre curseur va changer de forme. Cliquez alors sur la fenêtre voulue. Vous verrez apparaître dans la console les informations sur la classe, le titre de la fenêtre... Vous l'aurez compris, si vous voulez que la fenêtre flotte, il faudra mettre &quot;True&quot; dans la colonne &quot;isfloating&quot; Pour désigner le tag où l'on veut que la fenêtre apparaisse, c'est un peu plus complexe. Ainsi 1 &lt;&lt; 8 définit le tag 9, 1 &lt;&lt; 7 représente le tag 8, ~0 représente tous les tags, (1 &lt;&lt; 8 ) – 1 définit tous les tags sauf le 9eme.

====Définir vos raccourcis:====

Bien sûr, on peut éxécuter la commande de notre choix via un raccourci clavier, ou même un raccourci souris si on le souhaite. La première étape sera de définir ce raccourci. Il s'agit en fait de faire nos propres fonctions. Repérer ces lignes dans le config.h : &lt;code lang=&quot;c&quot;&gt; /* commands */ static const char *dmenucmd[] = { &quot;dmenu_run&quot;, &quot;-fn&quot;, font, &quot;-nb&quot;, normbgcolor, &quot;-nf&quot;, normfgcolor, &quot;-sb&quot;, selbgcolor, &quot;-sf&quot;, selfgcolor, NULL }; static const char *termcmd[] = { &quot;uxterm&quot;, NULL }; &lt;/code&gt; La première ligne sert à lancer dmenu avec les couleurs de dwm. C'est en fait ce qui se passe lorsque vous tapez le raccourci Mod+P . dmenu est inclus dans le paquet dwm-tools ou suckless-tools, ou[http://tools.suckless.org/dmenu/  téléchargeable sur le site officiel]. La deuxième ligne lance un terminal, c'est ce qui se passe lorsque vous faîtes Mod+Shift+Entrée. Vous pouvez modifier la commande uxterm, par votre terminal favori (xterm, urxvt, xfce4-terminal, lxterminal...). Si vous n'êtes pas sûr, suivez le conseile de MisterFreez, indiquez &quot;x-terminal-emulator&quot; On va ajouter en dessous ces lignes nos propres fonctions! Par exemple, je voudrais ajouter deux raccourcis : l'un pour lancer gajim, l'autre pour couper/activer le son. Il faudra définir deux fonctions sur le même modèle que les précédentes. Donnez leur le nom que vous voulez, du moment que vous vous y retrouvez. Exemple : &lt;code lang=&quot;c&quot;&gt; static const char *gajim[] = { &quot;gajim&quot;, NULL }; static const char *muteson[] = { &quot;amixer&quot;, &quot;-q&quot;, &quot;set&quot;, &quot;Master&quot;, &quot;toggle&quot;, NULL }; &lt;/code&gt; '''Note : '''Remarquez que lorsque une commande contient des espaces, chaque argument doit être entre guillemets suivi d'une virgule. Les commandes finissent toujours par NULL. Bien, maintenant que nos fonctions sont définies, on va les appeler. J'ai envie de lancer gajim lorsque j'appuie sur Mod4+Mod1+i, et couper le son lorsque j'appuie sur la touche multimédia de mon ordinateur associée. Voici ce que ça donnera, dans la section des raccourcis claviers : &lt;code lang=&quot;c&quot;&gt; static Key keys[] = { /*il y a d'autres choses avant....*/ { MODKEY|Mod1, XK_i, spawn, {.v = gajim } }, { 0, 0x1008ff12, spawn, {.v = muteson } }, &lt;/code&gt; ''' Ouhla, ça mérite des explications :''' - Pour définir plusieurs modifieurs, on les sépare par un &quot;|&quot;. - XK_i correspond à la touche &quot;i&quot; - spawn est une fonction dans dwm, qui dit d'éxécuter la fonction désignée - On donne la fonction à éxécuter entre {.v = nom_de_fonction }. Le nom de la fonction est celui définit précédemment. - S'il n'y a pas de modificateur, on met un 0. - 0x1008ff12, c'est le code de ma touche multimédia, que j'ai récupéré en tapant xev en console, puis en faisant fn+&quot;touche bleue&quot; qui coupe le son&quot; Notez qu'il est possible de le faire aussi pour la souris. Par exemple, je veux que lorsque je fais un clique droit sur le texte dans la barre de tâches, ça lance un script que j'ai fait maison. On procédera comme suit :

* 1/On définit la commande du script. Je lui donne le petit nom &quot;deloggue&quot;, car ça me sert à mettre fin à une session

&lt;code lang=&quot;c&quot;&gt; static const char *deloggue[] = { &quot;/home/xavier/Documents/Scripts/exit.sh&quot;, NULL }; &lt;/code&gt;

* 2/ J'appelle cette fonction ensuite avec le clic droit sur le texte.

Dans la partie &quot;souris&quot;, on aura donc : &lt;code lang=&quot;c&quot;&gt; static Button buttons[] = { /* click event mask button function argument */ { ClkStatusText, 0, Button3, spawn, {.v = deloggue } }, }; &lt;/code&gt; On peut aussi modifier les raccourcis déja existants. Je souhaitais que lorsque je fait un clic-milieu sur le titre d'une fenêtre, ça la ferme : &lt;code lang=&quot;c&quot;&gt; static Button buttons[] = { /* click event mask button function argument */ { ClkWinTitle, 0, Button2, killclient, {0} }, }; &lt;/code&gt; ''Voila, rien de bien compliqué en définitive. On définit d'abord la commande à éxécuter, en lui donnant un nom de fonction au choix. Ensuite, on peut lancer cette commande avec spawn, suivi du nom de la fonction.''

====Modifier la configuration pour les claviers français :====

=====Le problème des touches &quot;chiffre&quot;:=====

Malheureusement, dwm est configuré par défaut pour les claviers anglais. Les chiffres au dessus des lettres de votre clavier ne seront pas lus comme tels, mais comme étant un &quot;&amp;amp;&quot; pour le &quot;1&quot;, un &quot;é&quot; pour le 2, un &quot; pour le &quot;3&quot;... On va donc remédier à tout ça. Le code de nos touches se récupère très facilement avec xev. Il faut lancer xev en console, taper sur une touche, et lire ce qui est retourné. On va donc remplacer cette portion : &lt;code lang=&quot;c&quot;&gt; TAGKEYS( XK_1, 0) TAGKEYS( XK_2, 1) TAGKEYS( XK_3, 2) TAGKEYS( XK_4, 3) TAGKEYS( XK_5, 4) TAGKEYS( XK_6, 5) TAGKEYS( XK_7, 6) TAGKEYS( XK_8, 7) TAGKEYS( XK_9, 8) &lt;/code&gt; Par ceci : &lt;code lang=&quot;c&quot;&gt; TAGKEYS( 0x26, 0) TAGKEYS( 0xe9, 1) TAGKEYS( 0x22, 2) TAGKEYS( 0x27, 3) TAGKEYS( 0x28, 4) TAGKEYS( 0x2d, 5) TAGKEYS( 0xe8, 6) TAGKEYS( 0x5f, 7) TAGKEYS( 0xe7, 8) &lt;/code&gt; Ainsi que ceci : &lt;code lang=&quot;c&quot;&gt; { MODKEY, XK_0, view, {.ui = ~0 } }, { MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } }, &lt;/code&gt; par : &lt;code lang=&quot;c&quot;&gt; { MODKEY, 0xe0, view, {.ui = ~0 } }, { MODKEY|ShiftMask, 0xe0, tag, {.ui = ~0 } },&lt;/code&gt;

=====Pour changer d'écran:=====

Il faut françiser la touche &quot;.&quot; pour nos claviers. Donc, remplacer dans le config.h &quot;period&quot; par &quot;semicolon&quot;, car pour nous, c'est le point-virgule : &lt;code lang=&quot;c&quot;&gt; { MODKEY, XK_comma, focusmon, {.i = -1 } }, { MODKEY, XK_semicolon, focusmon, {.i = +1 } }, { MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } }, { MODKEY|ShiftMask, XK_semicolon, tagmon, {.i = +1 } }, &lt;/code&gt; Un config.h françisé est maintenant disponible ici : http://thuban.toile-libre.org/index.php/dwm-en-francais/

===Ajouter un patch:===

Vous pouvez ajouter toutes sortes de fonctionnalités à dwm, en ajoutant des patches. [http://dwm.suckless.org/patches Le site officiel regorge d'informations à ce sujet, et la configuration de chaque patch est expliqué.] De façon générale, pour appliquer un patch, il faudra faire ceci dans le dossier de dwm : &lt;code&gt;patch -p1 &lt; chemin/vers/le/patch.diff &lt;/code&gt; Pour la version tarball (paquet debian inclus) &lt;code&gt;hg patch chemin/vers/le/patch.diff &lt;/code&gt; Pour la version mercurial (hg). Personnellement, j'affectionne le patch [http://dwm.suckless.org/patches/bottom_stack bottom stack] afin d'avoir un agencement des fenetres vertical, et le patch [http://dwm.suckless.org/patches/nametag nametag] pour renommer les tags. Mais je pourrais en mettre plus c'est vrai.

===Avoir un menu pour la souris:===

Il est bien entendu possible d'avoir un menu utilisable à la souris. Je vous invite à lire [http://thuban.toile-libre.org/index.php/un-menu-dans-dwm/ cette page], indiquant plusieurs façons possibles d'obtenir un menu.

===Personnaliser la barre d'état:===

Il est possible d'afficher ce que l'on veut dans la barre d'état. Cela se définit juste avant le lancement de dwm, donc selon les cas dans votre ~/.xinitrc ou autre. Dwm lira ce qui est passé en argument à xsetroot. Cela donnera quelque chose comme ça : &lt;code&gt; while true; do xsetroot -name &quot;$( date +&quot;%F %R&quot; )&quot; sleep 1m # Update time every minute done &amp;amp; exec dwm &lt;/code&gt; Qui affichera la date. Voici mon .xinitrc : &lt;code&gt; /home/xavier/Documents/Scripts/dmenu/dstatus.sh &amp;amp; exec /usr/local/bin/dwm &lt;/code&gt; Vous remarquerez que le lance un script dstatus.sh à part, pour plus de commodité. Ce script récupère plusieurs informations, et les renvoient dans le xsetroot. Ainsi, il y a l'heure, le débit internet, la chaque processeur, le volume sonore, des infos sur la batterie, ce que mpd joue...n peut notamment avoir une barre de progression pour mpd/mplayer/wget... Je met le script [http://pastebin.toile-libre.org/?show=457131 à disposition ici], n'hésitez pas à vous en inspirer!

=='''Conclusion:'''==

Il y a un programme essentiel à utiliser dans dwm : j'ai nommé dmenu. Vous pourrez au fur et à mesure lire des exemples d'utilisation que je posterai [http://thuban.toile-libre.org/Logiciel-libre/Suckless/dwm/dwm_presentation_et_configuration.html ici]. Cette page est à améliorer et il y a beaucoup de choses à préciser. Je vous invite donc à me faire part de vos remarques afin de l'améliorer. Je poste [http://thuban.toile-libre.org/wp-content/uploads/2010/11/config.h ici mon config.h] si vous voulez voir ma configuration.

== Liens externes ==
* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24798 Page de Misterfreeze pour installer proprement dwm sur sa debian]
* [http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=23322 Discussion autour de la configuration de dwm]
* http://wiki.debian.org/fr/Dwm
* [http://dwm.suckless.org Site officiel]
* [http://thuban.toile-libre.org/Logiciel-libre/Suckless/dwm/dwm_presentation_et_configuration.html Article inspirant cette page ]

[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Tillings]]</text>
      <sha1>17nrkn70tinnt2uprkdvfkbr5orhng5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4976</id>
      <parentid>4510</parentid>
      <timestamp>2013-02-18T06:13:42Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="19351">=='''Présentation :'''==

''' ''' [http://dwm.suckless.org Dwm] est le tiling windows manager (Gestionnaire de fenêtres en tuile) développé par l'équipe de [http://suckless.org suckless.org]. Fidèle à leur philosophie, il est écrit en C, permettant ainsi la contribution de chacun au projet, ce langage étant plus que répandu et éprouvé. De plus, cela oblige les codeurs à faire du code propre et léger. Il permet de gérer ses fenêtres entièrement au clavier si on le souhaite, mais aussi de passer bien moins de temps à arranger son bureau. Niveau productivité, vous serez donc servi, car il vous aidera à gagner énormément de temps. Par ailleurs, il dispose par défaut de 9 &quot;vues&quot;. En fait, une fenêtre est associée à 1 ou plusieurs vues, et sera affichée dans chacune d'elles. On devrait plutôt dire &quot;étiquette&quot; que &quot;vue&quot;. L'avantage pour le simple utilisateur, c'est que le C est très clair, et et que l'on a même pas besoin de tout comprendre pour le configurer. Eh oui, tout a été pensé, il suffit en fait d'éditer rien qu'un tout petit fichier : [http://thuban.toile-libre.org/index.php/dwm-un-tiling-window-manager-pour-vos-besoins/#4-1-le-fichier-config-h le config.h ], qui a été construit de manière à rendre la configuration accessible même aux non-initiés. De plus, cela évite les multiples fichiers de configuration tiers, on configure dwm une fois, et une fois qu'il est insallé, on n'a plus rien à toucher, tout est dans le binaire! Ainsi, dwm n'a pas à chercher et lire ces fichiers de configuration pour faire son boulot, donc le temps d'éxécution est amélioré! Debian propose un paquet de démonstration. On expliquera ici comment reconstruire un paquet proprement, une fois que l'on a configuré dwm à notre sauce. Le code de dwm a été construit dans le but de pouvoir ajouter des fonctionnalités simplement, sous forme de [http://thuban.toile-libre.org/index.php/dwm-un-tiling-window-manager-pour-vos-besoins/#4-3-ajouter-un-patch patches.] Vous pourrez alors composer votre gestionnaire de fenêtre, avec les fonctions que vous désirez. Avant de vous présenter ici les différentes configurations possible, astuces et autres, je ne peux continuer sans [http://dwm.suckless.org/screenshots/ une traditionnelle capture d'écran] : 


[[Fichier:dwm-exemple.png|200px|thumb|left|un exemple d'utilisation de dwm]]

=='''Tester sur debian :'''==

''' ''' Pour commencer, on va utiliser la version de test proposée dans les dépots Debian. Test? Eh oui, car la puissance de dwm se retrouve lorsque l'on édite le fichier config.h, et que l'on recompile. Mais rassurez-vous, cela tient du jeu d'enfant! Il est même prévu de reconstruire le paquet! Bien, installez donc le paquet dwm (aptitude install dwm), puis choisissez cette session dans gdm/kdm, ou bien ajoutez à votre .xinitrc :&lt;code&gt;exec dwm&lt;/code&gt; Comme vous le voyez, la configuration par défaut n'est pas la plus belle. Mais on va y remédier! ''' '''

=='''Utilisation :'''==

Dwm a été pensé pour être entièrement piloté au clavier si besoin. Voici les raccourcis définis par défaut. On utilisera dans un premier temps la touche &quot;alt&quot; comme touche &quot;Mod1&quot;. ([http://thuban.toile-libre.org/index.php/dwm-un-tiling-window-manager-pour-vos-besoins/#4-configurer-dwm voir la partie configuration pour plus d'informations])

* Mod1-Shift-Return Lance un terminal
* Mod1-b Affiche/cache la barre
* Mod1-t Passer en mode &quot;tiling&quot;
* Mod1-f Passer en mode flottant.
* Mod1-m Maximise la zone principale
* Mod1-space Passe du mode courant au mode précédent.
* Mod1-j Passe le focus à la fenêtre suivante
* Mod1-k passe le focus à la fenêtre précédente
* Mod1-h Réduis la taille de la zone principale
* Mod1-l Augmente la taille de la zone principale
* Mod1-Return Échange les fenêtres séléctionnées depuis/vers la zone principale
* Mod1-Shift-c Ferme la fenêtre sélectionnée
* Mod1-Shift-space Passe la fenêtre sélectionnée entre le mode tiling et flottant
* Mod1-Tab Sélectionne la vue précédente
* Mod1-Shift-[1..n] Envoie la fenêtre à la vue numéro 1...n
* Mod1-Shift-0 Affiche la fenêtre sur toutes les vues
* Mod1-Control-Shift-[1..n] Ajoute/Retire la fenêtre sélectionnée du bureau numéro 1...n , pratique si on veut qu'une fenêtre apparaisse sur plusieurs vues
* Mod1-[1..n] Aller à la vue 1...n
* Mod1-0 Affiche toutes les fenêtres de toutes les vues.
* Mod1-Control-[1..n] Retire toutes les fenêtres de la vue 1...n
* Mod1-, Change d'écran, si il y en a plusieurs
* Mod1-Shift-q Quitte dwm



Sur le bureau, on démarre par defaut en mode « divisé » : l'écran est divisé équitablement entre les fenêtres. Voici les modes disponibles par défaut :

* Le mode « flottant » (Mod+f) : Vous pourrez alors déplacer la fenêtre en maintenant la touche Mod appuyée tout en déplacant la fenêtre à la souris, la redimensionner en maintenant Mod et en faisant clic-droit avec la souris.

* Le mode « maximum » (Mod+m) : la fenêtre prend tout l'espace disponible, on ne voit pas les autres fenêtres

* Le mode « divisé » (Mod+t) : Mode écran divisé ou tiling. Une partie maître à gauche, avec une fenêtre plus grande, et une partie à droite avec les fenêtres plus petites.

===Obtenir dwm :===

Dwm est téléchargeable sur le [http://dl.suckless.org/dwm/ site officiel] (prendre l'archive la plus récente et la décompresser), ou vous pouvez télécharger les sources debian : &lt;code&gt;# apt-get source dwm&lt;/code&gt; . Pour les plus aventureux, vous pouver installer la toute dernière mouture de dwm ainsi (paquet mercurial nécéssaire) &lt;code&gt;hg clone http://hg.suckless.org/dwm&lt;/code&gt;. Les deux dernières commandes téléchargent les sources dans le dossier courant. On se déplace dans le dossier des sources de dwm : &lt;code&gt;cd dwm-numéro_de_version&lt;/code&gt;

===Installer dwm :===

Dans le dossier contenant les sources, il suffit de taper : &lt;code&gt;make&lt;/code&gt;. Dwm est alors compilé, et présent dans le dossier actuel. Vous pouvez l'installer sur tout le système si vous voulez, en tapant ensuite : &lt;code&gt;make install&lt;/code&gt; Les éxécutables seront dans ce cas le dossier /usr/local/bin par défaut. Pour changer ce répertoire, il faut éditer le fichier config.mk, et changer la ligne : &lt;code&gt;PREFIX = /chemin/du/dossier/destination&lt;/code&gt; vers le chemin de votre choix (votre dossier utilisateur ou autre). Notez toutefois que pour lancer votre session ensuite, il faudra préciser le bon chemin.
 &lt;code&gt; 
#Fichier ~/.xinitrc
#commande pour lancer dwm en tapant startx 
#Lorsque dwm est dans /usr/bin ou /usr/local/bin : 
exec dwm 
#lorsque dwm est dans un dossier quelconque, par exemple dans /home/user/ 
#exec /home/user/dwm &lt;/code&gt; 
Les dépendances nécéssaires sont libX11-dev et éventuellement libxinerama-dev. Intéressons nous comment recréer un paquet debian à partir des sources debian : On récupère les sources, qui seront décompressées dans le dossier courant : &lt;code&gt; apt-get source dwm&lt;/code&gt; On se déplace dans le dossier des sources. J'utilise le caractère &quot;*&quot; pour ne pas avoir à préciser la version de dwm : &lt;code&gt;cd dwm*&lt;/code&gt; Maintenant, on retrouve les fichiers sources de dwm, les mêmes que dans l'archive officielle plus quelques autres relatifs à debian. On configure dwm de la même façon que pour les autres méthode, en éditant le config.def.h. Attention, ici c'est le fichier config.def.h qui sera pris en compte, et qu'il faut donc modifier. Une fois que vous êtes satisfaits, vous pouvez refabriquer le paquet avec cette commande (toujours dans le dossier des sources) : &lt;code&gt;dpkg-buildpackage -rfakeroot -uc -b&lt;/code&gt; Ce qui va créer un fichier dwm-version.deb dans le répertoire supérieur. Pour vous assurez d'avoir les dépendances nécéssaires, tapez ceci (Merci Knucky) : &lt;code&gt;apt-get build-dep dwm&lt;/code&gt; Allons donc chercher le paquet récemment créé : &lt;code&gt;cd ..&lt;/code&gt; Et installons ce paquet (il faut avoir les droits super-utilisateur) : &lt;code&gt; dpkg -i dwm_*.deb &lt;/code&gt; Le paquet est maintenant installé!

Il se peut fichier dwm-5.7.2/debian/desktop/dwm soit mal fait. En effet pour être pris en compte par gdm il faut le renommer avec l'extension &quot;.desktop&quot;. ''' '''

==''' [http://dwm.suckless.org/customisation/ 4. Configurer dwm :]'''==

''' ''' ''[http://dwm.suckless.org/customisation/ Documentation du site officiel à ce sujet]'' On va maintenant se pencher sur les configurations possibles.

===Le fichier config.h :===

Depuis le temps que je vous parle de ce fichier! Il se trouve dans le dossier des sources de dwm. Allons le chercher : &lt;code&gt;cd dwm-numero_de_version&lt;/code&gt; ''Mais, que dis-tu, il n'y a pas de fichier config.h! bouh!'' Ahem... En effet, dis comme ça... Non, je ne me moque pas de vous. En fait, par défaut, le fichier s'appelle config.def.h. C'est en fait un config.h qui sert de modèle. Cependant, si un fichier config.h est présent, ce sera lui qui sera utilisé pour la configuration, sinon ce sera le config.def.h. Je vous invite à copier le fichier config.def.h en config.h, toujours dans le dossier des sources : &lt;code&gt;cp config.def.h config.h&lt;/code&gt; Ainsi, vous gardez un modèle d'origine en cas de besoin. Voici à quoi ressemble le fichier par défaut, j'y rajoute ici des commentaires pour l'expliquer en français. 
http://www.isalo.org/pnopaste/?14

====Donner des règles pour les fenêtres====

Voir aussi : http://dwm.suckless.org/customisation/tagmask Il est possible de définir des règles spécifique à certaines fenêtres. Par exemple, si je veux que transmission n'apparaisse que su le tag 9, il faudra mettre ceci : &lt;code lang=&quot;c&quot;&gt; static const Rule rules[] = { /* class instance title tags mask isfloating monitor */ { &quot;Transmission&quot;, NULL, NULL, 1 &lt;&lt; 8, False, -1 }, }; &lt;/code&gt; Pour récupérer les informations sur une fenêtre, tapez xprop dans une console. Votre curseur va changer de forme. Cliquez alors sur la fenêtre voulue. Vous verrez apparaître dans la console les informations sur la classe, le titre de la fenêtre... Vous l'aurez compris, si vous voulez que la fenêtre flotte, il faudra mettre &quot;True&quot; dans la colonne &quot;isfloating&quot; Pour désigner le tag où l'on veut que la fenêtre apparaisse, c'est un peu plus complexe. Ainsi 1 &lt;&lt; 8 définit le tag 9, 1 &lt;&lt; 7 représente le tag 8, ~0 représente tous les tags, (1 &lt;&lt; 8 ) – 1 définit tous les tags sauf le 9eme.

====Définir vos raccourcis:====

Bien sûr, on peut éxécuter la commande de notre choix via un raccourci clavier, ou même un raccourci souris si on le souhaite. La première étape sera de définir ce raccourci. Il s'agit en fait de faire nos propres fonctions. Repérer ces lignes dans le config.h : &lt;code lang=&quot;c&quot;&gt; /* commands */ static const char *dmenucmd[] = { &quot;dmenu_run&quot;, &quot;-fn&quot;, font, &quot;-nb&quot;, normbgcolor, &quot;-nf&quot;, normfgcolor, &quot;-sb&quot;, selbgcolor, &quot;-sf&quot;, selfgcolor, NULL }; static const char *termcmd[] = { &quot;uxterm&quot;, NULL }; &lt;/code&gt; La première ligne sert à lancer dmenu avec les couleurs de dwm. C'est en fait ce qui se passe lorsque vous tapez le raccourci Mod+P . dmenu est inclus dans le paquet dwm-tools ou suckless-tools, ou[http://tools.suckless.org/dmenu/  téléchargeable sur le site officiel]. La deuxième ligne lance un terminal, c'est ce qui se passe lorsque vous faîtes Mod+Shift+Entrée. Vous pouvez modifier la commande uxterm, par votre terminal favori (xterm, urxvt, xfce4-terminal, lxterminal...). Si vous n'êtes pas sûr, suivez le conseile de MisterFreez, indiquez &quot;x-terminal-emulator&quot; On va ajouter en dessous ces lignes nos propres fonctions! Par exemple, je voudrais ajouter deux raccourcis : l'un pour lancer gajim, l'autre pour couper/activer le son. Il faudra définir deux fonctions sur le même modèle que les précédentes. Donnez leur le nom que vous voulez, du moment que vous vous y retrouvez. Exemple : &lt;code lang=&quot;c&quot;&gt; static const char *gajim[] = { &quot;gajim&quot;, NULL }; static const char *muteson[] = { &quot;amixer&quot;, &quot;-q&quot;, &quot;set&quot;, &quot;Master&quot;, &quot;toggle&quot;, NULL }; &lt;/code&gt; '''Note : '''Remarquez que lorsque une commande contient des espaces, chaque argument doit être entre guillemets suivi d'une virgule. Les commandes finissent toujours par NULL. Bien, maintenant que nos fonctions sont définies, on va les appeler. J'ai envie de lancer gajim lorsque j'appuie sur Mod4+Mod1+i, et couper le son lorsque j'appuie sur la touche multimédia de mon ordinateur associée. Voici ce que ça donnera, dans la section des raccourcis claviers : &lt;code lang=&quot;c&quot;&gt; static Key keys[] = { /*il y a d'autres choses avant....*/ { MODKEY|Mod1, XK_i, spawn, {.v = gajim } }, { 0, 0x1008ff12, spawn, {.v = muteson } }, &lt;/code&gt; ''' Ouhla, ça mérite des explications :''' - Pour définir plusieurs modifieurs, on les sépare par un &quot;|&quot;. - XK_i correspond à la touche &quot;i&quot; - spawn est une fonction dans dwm, qui dit d'éxécuter la fonction désignée - On donne la fonction à éxécuter entre {.v = nom_de_fonction }. Le nom de la fonction est celui définit précédemment. - S'il n'y a pas de modificateur, on met un 0. - 0x1008ff12, c'est le code de ma touche multimédia, que j'ai récupéré en tapant xev en console, puis en faisant fn+&quot;touche bleue&quot; qui coupe le son&quot; Notez qu'il est possible de le faire aussi pour la souris. Par exemple, je veux que lorsque je fais un clique droit sur le texte dans la barre de tâches, ça lance un script que j'ai fait maison. On procédera comme suit :

* 1/On définit la commande du script. Je lui donne le petit nom &quot;deloggue&quot;, car ça me sert à mettre fin à une session

&lt;code lang=&quot;c&quot;&gt; static const char *deloggue[] = { &quot;/home/xavier/Documents/Scripts/exit.sh&quot;, NULL }; &lt;/code&gt;

* 2/ J'appelle cette fonction ensuite avec le clic droit sur le texte.

Dans la partie &quot;souris&quot;, on aura donc : &lt;code lang=&quot;c&quot;&gt; static Button buttons[] = { /* click event mask button function argument */ { ClkStatusText, 0, Button3, spawn, {.v = deloggue } }, }; &lt;/code&gt; On peut aussi modifier les raccourcis déja existants. Je souhaitais que lorsque je fait un clic-milieu sur le titre d'une fenêtre, ça la ferme : &lt;code lang=&quot;c&quot;&gt; static Button buttons[] = { /* click event mask button function argument */ { ClkWinTitle, 0, Button2, killclient, {0} }, }; &lt;/code&gt; ''Voila, rien de bien compliqué en définitive. On définit d'abord la commande à éxécuter, en lui donnant un nom de fonction au choix. Ensuite, on peut lancer cette commande avec spawn, suivi du nom de la fonction.''

====Modifier la configuration pour les claviers français :====

=====Le problème des touches &quot;chiffre&quot;:=====

Malheureusement, dwm est configuré par défaut pour les claviers anglais. Les chiffres au dessus des lettres de votre clavier ne seront pas lus comme tels, mais comme étant un &quot;&amp;amp;&quot; pour le &quot;1&quot;, un &quot;é&quot; pour le 2, un &quot; pour le &quot;3&quot;... On va donc remédier à tout ça. Le code de nos touches se récupère très facilement avec xev. Il faut lancer xev en console, taper sur une touche, et lire ce qui est retourné. On va donc remplacer cette portion : &lt;code lang=&quot;c&quot;&gt; TAGKEYS( XK_1, 0) TAGKEYS( XK_2, 1) TAGKEYS( XK_3, 2) TAGKEYS( XK_4, 3) TAGKEYS( XK_5, 4) TAGKEYS( XK_6, 5) TAGKEYS( XK_7, 6) TAGKEYS( XK_8, 7) TAGKEYS( XK_9, 8) &lt;/code&gt; Par ceci : &lt;code lang=&quot;c&quot;&gt; TAGKEYS( 0x26, 0) TAGKEYS( 0xe9, 1) TAGKEYS( 0x22, 2) TAGKEYS( 0x27, 3) TAGKEYS( 0x28, 4) TAGKEYS( 0x2d, 5) TAGKEYS( 0xe8, 6) TAGKEYS( 0x5f, 7) TAGKEYS( 0xe7, 8) &lt;/code&gt; Ainsi que ceci : &lt;code lang=&quot;c&quot;&gt; { MODKEY, XK_0, view, {.ui = ~0 } }, { MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } }, &lt;/code&gt; par : &lt;code lang=&quot;c&quot;&gt; { MODKEY, 0xe0, view, {.ui = ~0 } }, { MODKEY|ShiftMask, 0xe0, tag, {.ui = ~0 } },&lt;/code&gt;

=====Pour changer d'écran:=====

Il faut françiser la touche &quot;.&quot; pour nos claviers. Donc, remplacer dans le config.h &quot;period&quot; par &quot;semicolon&quot;, car pour nous, c'est le point-virgule : &lt;code lang=&quot;c&quot;&gt; { MODKEY, XK_comma, focusmon, {.i = -1 } }, { MODKEY, XK_semicolon, focusmon, {.i = +1 } }, { MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } }, { MODKEY|ShiftMask, XK_semicolon, tagmon, {.i = +1 } }, &lt;/code&gt; Un config.h françisé est maintenant disponible ici : http://thuban.toile-libre.org/index.php/dwm-en-francais/

===Ajouter un patch:===

Vous pouvez ajouter toutes sortes de fonctionnalités à dwm, en ajoutant des patches. [http://dwm.suckless.org/patches Le site officiel regorge d'informations à ce sujet, et la configuration de chaque patch est expliqué.] De façon générale, pour appliquer un patch, il faudra faire ceci dans le dossier de dwm : &lt;code&gt;patch -p1 &lt; chemin/vers/le/patch.diff &lt;/code&gt; Pour la version tarball (paquet debian inclus) &lt;code&gt;hg patch chemin/vers/le/patch.diff &lt;/code&gt; Pour la version mercurial (hg). Personnellement, j'affectionne le patch [http://dwm.suckless.org/patches/bottom_stack bottom stack] afin d'avoir un agencement des fenetres vertical, et le patch [http://dwm.suckless.org/patches/nametag nametag] pour renommer les tags. Mais je pourrais en mettre plus c'est vrai.

===Avoir un menu pour la souris:===

Il est bien entendu possible d'avoir un menu utilisable à la souris. Je vous invite à lire [http://thuban.toile-libre.org/index.php/un-menu-dans-dwm/ cette page], indiquant plusieurs façons possibles d'obtenir un menu.

===Personnaliser la barre d'état:===

Il est possible d'afficher ce que l'on veut dans la barre d'état. Cela se définit juste avant le lancement de dwm, donc selon les cas dans votre ~/.xinitrc ou autre. Dwm lira ce qui est passé en argument à xsetroot. Cela donnera quelque chose comme ça : &lt;code&gt; while true; do xsetroot -name &quot;$( date +&quot;%F %R&quot; )&quot; sleep 1m # Update time every minute done &amp;amp; exec dwm &lt;/code&gt; Qui affichera la date. Voici mon .xinitrc : &lt;code&gt; /home/xavier/Documents/Scripts/dmenu/dstatus.sh &amp;amp; exec /usr/local/bin/dwm &lt;/code&gt; Vous remarquerez que le lance un script dstatus.sh à part, pour plus de commodité. Ce script récupère plusieurs informations, et les renvoient dans le xsetroot. Ainsi, il y a l'heure, le débit internet, la chaque processeur, le volume sonore, des infos sur la batterie, ce que mpd joue...n peut notamment avoir une barre de progression pour mpd/mplayer/wget... Je met le script [http://pastebin.toile-libre.org/?show=457131 à disposition ici], n'hésitez pas à vous en inspirer!

=='''Conclusion:'''==

Il y a un programme essentiel à utiliser dans dwm : j'ai nommé dmenu. Vous pourrez au fur et à mesure lire des exemples d'utilisation que je posterai [http://thuban.toile-libre.org/Logiciel-libre/Suckless/dwm/dwm_presentation_et_configuration.html ici]. Cette page est à améliorer et il y a beaucoup de choses à préciser. Je vous invite donc à me faire part de vos remarques afin de l'améliorer. Je poste [http://thuban.toile-libre.org/wp-content/uploads/2010/11/config.h ici mon config.h] si vous voulez voir ma configuration.

== Liens externes ==
* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24798 Page de Misterfreeze pour installer proprement dwm sur sa debian]
* [http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=23322 Discussion autour de la configuration de dwm]
* http://wiki.debian.org/fr/Dwm
* [http://dwm.suckless.org Site officiel]
* [http://dunespice.no-ip.org/Logiciel-libre/Suckless/dwm/dwm_presentation_et_configuration.html Article inspirant cette page ]

[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Tillings]]</text>
      <sha1>9nfxg33m7qg36zgn9v53oqegd59dng8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5105</id>
      <parentid>4976</parentid>
      <timestamp>2013-04-25T16:50:05Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="18887">=='''Présentation :'''==

''' ''' [http://dwm.suckless.org Dwm] est le tiling windows manager (Gestionnaire de fenêtres en tuile) développé par l'équipe de [http://suckless.org suckless.org]. Fidèle à leur philosophie, il est écrit en C, permettant ainsi la contribution de chacun au projet, ce langage étant plus que répandu et éprouvé. De plus, cela oblige les codeurs à faire du code propre et léger. 

Le but de ce window manager est avant tout de profiter d'une gestion dynamique des fenêtres, que vous pourrez gérer via des étiquettes (tags) par des raccourcis claviers principalement.

L'avantage pour le simple utilisateur, c'est que le C est très clair, et et que l'on a même pas besoin de tout comprendre pour le configurer. Eh oui, tout a été pensé, il suffit en fait d'éditer rien qu'un tout petit fichier : [http://yeuxdelibad.net/Logiciel-libre/Suckless/dwm/#configh le config.h ], qui a été construit de manière à rendre la configuration accessible même aux non-initiés. De plus, cela évite les multiples fichiers de configuration tiers, on configure dwm une fois, et une fois qu'il est insallé, on n'a plus rien à toucher, tout est dans le binaire! Ainsi, dwm n'a pas à chercher et lire ces fichiers de configuration pour faire son boulot, donc le temps d'éxécution est amélioré! Debian propose un paquet de démonstration. On expliquera ici comment reconstruire un paquet proprement, une fois que l'on a configuré dwm à notre sauce. Le code de dwm a été construit dans le but de pouvoir ajouter des fonctionnalités simplement, sous forme de [http://yeuxdelibad.net/Logiciel-libre/Suckless/dwm/#patch patches.] Vous pourrez alors composer votre gestionnaire de fenêtre, avec les fonctions que vous désirez. Avant de vous présenter ici les différentes configurations possible, astuces et autres, je ne peux continuer sans [http://dwm.suckless.org/screenshots/ une traditionnelle capture d'écran] : 


[[Fichier:dwm-exemple.png|200px|thumb|left|un exemple d'utilisation de dwm]]

=='''Tester sur debian :'''==

''' ''' Pour commencer, on va utiliser la version de test proposée dans les dépots Debian. Test? Eh oui, car la puissance de dwm se retrouve lorsque l'on édite le fichier config.h, et que l'on recompile. Mais rassurez-vous, cela tient du jeu d'enfant! Il est même prévu de reconstruire le paquet! Bien, installez donc le paquet dwm (aptitude install dwm), puis choisissez cette session dans gdm/kdm, ou bien ajoutez à votre .xinitrc :&lt;code&gt;exec dwm&lt;/code&gt; Comme vous le voyez, la configuration par défaut n'est pas la plus belle. Mais on va y remédier! ''' '''

=='''Utilisation :'''==

Dwm a été pensé pour être entièrement piloté au clavier si besoin. Voici les raccourcis définis par défaut. On utilisera dans un premier temps la touche &quot;alt&quot; comme touche &quot;Mod1&quot;. ([http://thuban.toile-libre.org/index.php/dwm-un-tiling-window-manager-pour-vos-besoins/#4-configurer-dwm voir la partie configuration pour plus d'informations])

* Mod1-Shift-Return Lance un terminal
* Mod1-b Affiche/cache la barre
* Mod1-t Paser en mode &quot;tiling&quot;
* Mod1-f Passer en mode flottant.
* Mod1-m Maximise la zone principale
* Mod1-space Passe du mode courant au mode précédent.
* Mod1-j Passe le focus à la fenêtre suivante
* Mod1-k passe le focus à la fenêtre précédente
* Mod1-h Réduis la taille de la zone principale
* Mod1-l Augmente la taille de la zone principale
* Mod1-Return Échange les fenêtres séléctionnées depuis/vers la zone principale
* Mod1-Shift-c Ferme la fenêtre sélectionnée
* Mod1-Shift-space Passe la fenêtre sélectionnée entre le mode tiling et flottant
* Mod1-Tab Sélectionne la vue précédente
* Mod1-Shift-[1..n] Donne à la fenêtre l'étiquette 1...n
* Mod1-Shift-0 Colle toutes les étiquettes à la fenêtre, de 1 à 9.
* Mod1-Control-Shift-[1..n] Ajoute les fenêtres à l'étiquette 1...n 
* Mod1-[1..n] Afficher les fenêtres dont l'étiquette est 1...n
* Mod1-0 Montre/cache toutes les étiquettes.
* Mod1-Control-[1..n] Ajoute les étiquettes 1...n à la vue
* Mod1-Shift-q Quitte dwm



Sur le bureau, on démarre par defaut en mode « divisé » : l'écran est divisé équitablement entre les fenêtres. Voici les modes disponibles par défaut :

* Le mode « flottant » (Mod+f) : Vous pourrez alors déplacer la fenêtre en maintenant la touche Mod appuyée tout en déplacant la fenêtre à la souris, la redimensionner en maintenant Mod et en faisant clic-droit avec la souris.

* Le mode « maximum » (Mod+m) : la fenêtre prend tout l'espace disponible, on ne voit pas les autres fenêtres

* Le mode « divisé » (Mod+t) : Mode écran divisé ou tiling. Une partie maître à gauche, avec une fenêtre plus grande, et une partie à droite avec les fenêtres plus petites.

===Obtenir dwm :===

Dwm est téléchargeable sur le [http://dl.suckless.org/dwm/ site officiel] (prendre l'archive la plus récente et la décompresser), ou vous pouvez télécharger les sources debian : &lt;code&gt;# apt-get source dwm&lt;/code&gt; . Pour les plus aventureux, vous pouver installer la toute dernière mouture de dwm ainsi (paquet mercurial nécéssaire) &lt;code&gt;hg clone http://hg.suckless.org/dwm&lt;/code&gt;. Les deux dernières commandes téléchargent les sources dans le dossier courant. On se déplace dans le dossier des sources de dwm : &lt;code&gt;cd dwm-numéro_de_version&lt;/code&gt;

===Installer dwm :===

Dans le dossier contenant les sources, il suffit de taper : &lt;code&gt;make&lt;/code&gt;. Dwm est alors compilé, et présent dans le dossier actuel. Vous pouvez l'installer sur tout le système si vous voulez, en tapant ensuite : &lt;code&gt;make install&lt;/code&gt; Les éxécutables seront dans ce cas le dossier /usr/local/bin par défaut. Pour changer ce répertoire, il faut éditer le fichier config.mk, et changer la ligne : &lt;code&gt;PREFIX = /chemin/du/dossier/destination&lt;/code&gt; vers le chemin de votre choix (votre dossier utilisateur ou autre). Notez toutefois que pour lancer votre session ensuite, il faudra préciser le bon chemin.
 &lt;code&gt; 
#Fichier ~/.xinitrc
#commande pour lancer dwm en tapant startx 
#Lorsque dwm est dans /usr/bin ou /usr/local/bin : 
exec dwm 
#lorsque dwm est dans un dossier quelconque, par exemple dans /home/user/ 
#exec /home/user/dwm &lt;/code&gt; 
Les dépendances nécéssaires sont libX11-dev et éventuellement libxinerama-dev. Intéressons nous comment recréer un paquet debian à partir des sources debian : On récupère les sources, qui seront décompressées dans le dossier courant : &lt;code&gt; apt-get source dwm&lt;/code&gt; On se déplace dans le dossier des sources. J'utilise le caractère &quot;*&quot; pour ne pas avoir à préciser la version de dwm : &lt;code&gt;cd dwm*&lt;/code&gt; Maintenant, on retrouve les fichiers sources de dwm, les mêmes que dans l'archive officielle plus quelques autres relatifs à debian. On configure dwm de la même façon que pour les autres méthode, en éditant le config.def.h. Attention, ici c'est le fichier config.def.h qui sera pris en compte, et qu'il faut donc modifier. Une fois que vous êtes satisfaits, vous pouvez refabriquer le paquet avec cette commande (toujours dans le dossier des sources) : &lt;code&gt;dpkg-buildpackage -rfakeroot -uc -b&lt;/code&gt; Ce qui va créer un fichier dwm-version.deb dans le répertoire supérieur. Pour vous assurez d'avoir les dépendances nécéssaires, tapez ceci (Merci Knucky) : &lt;code&gt;apt-get build-dep dwm&lt;/code&gt; Allons donc chercher le paquet récemment créé : &lt;code&gt;cd ..&lt;/code&gt; Et installons ce paquet (il faut avoir les droits super-utilisateur) : &lt;code&gt; dpkg -i dwm_*.deb &lt;/code&gt; Le paquet est maintenant installé!

Il se peut fichier dwm-5.7.2/debian/desktop/dwm soit mal fait. En effet pour être pris en compte par gdm il faut le renommer avec l'extension &quot;.desktop&quot;. ''' '''

==''' [http://dwm.suckless.org/customisation/ 4. Configurer dwm :]'''==

''' ''' ''[http://dwm.suckless.org/customisation/ Documentation du site officiel à ce sujet]'' On va maintenant se pencher sur les configurations possibles.

===Le fichier config.h :===

Depuis le temps que je vous parle de ce fichier! Il se trouve dans le dossier des sources de dwm. Allons le chercher : &lt;code&gt;cd dwm-numero_de_version&lt;/code&gt; ''Mais, que dis-tu, il n'y a pas de fichier config.h! bouh!'' Ahem... En effet, dis comme ça... Non, je ne me moque pas de vous. En fait, par défaut, le fichier s'appelle config.def.h. C'est en fait un config.h qui sert de modèle. Cependant, si un fichier config.h est présent, ce sera lui qui sera utilisé pour la configuration, sinon ce sera le config.def.h. Je vous invite à copier le fichier config.def.h en config.h, toujours dans le dossier des sources : &lt;code&gt;cp config.def.h config.h&lt;/code&gt; Ainsi, vous gardez un modèle d'origine en cas de besoin. Voici à quoi ressemble le fichier par défaut, j'y rajoute ici des commentaires pour l'expliquer en français. 
http://www.isalo.org/pnopaste/?14

====Donner des règles pour les fenêtres====

Voir aussi : http://dwm.suckless.org/customisation/tagmask Il est possible de définir des règles spécifique à certaines fenêtres. Par exemple, si je veux que transmission n'apparaisse que su le tag 9, il faudra mettre ceci : &lt;code lang=&quot;c&quot;&gt; static const Rule rules[] = { /* class instance title tags mask isfloating monitor */ { &quot;Transmission&quot;, NULL, NULL, 1 &lt;&lt; 8, False, -1 }, }; &lt;/code&gt; Pour récupérer les informations sur une fenêtre, tapez xprop dans une console. Votre curseur va changer de forme. Cliquez alors sur la fenêtre voulue. Vous verrez apparaître dans la console les informations sur la classe, le titre de la fenêtre... Vous l'aurez compris, si vous voulez que la fenêtre flotte, il faudra mettre &quot;True&quot; dans la colonne &quot;isfloating&quot; Pour désigner le tag où l'on veut que la fenêtre apparaisse, c'est un peu plus complexe. Ainsi 1 &lt;&lt; 8 définit le tag 9, 1 &lt;&lt; 7 représente le tag 8, ~0 représente tous les tags, (1 &lt;&lt; 8 ) – 1 définit tous les tags sauf le 9eme.

====Définir vos raccourcis:====

Bien sûr, on peut éxécuter la commande de notre choix via un raccourci clavier, ou même un raccourci souris si on le souhaite. La première étape sera de définir ce raccourci. Il s'agit en fait de faire nos propres fonctions. Repérer ces lignes dans le config.h : &lt;code lang=&quot;c&quot;&gt; /* commands */ static const char *dmenucmd[] = { &quot;dmenu_run&quot;, &quot;-fn&quot;, font, &quot;-nb&quot;, normbgcolor, &quot;-nf&quot;, normfgcolor, &quot;-sb&quot;, selbgcolor, &quot;-sf&quot;, selfgcolor, NULL }; static const char *termcmd[] = { &quot;uxterm&quot;, NULL }; &lt;/code&gt; La première ligne sert à lancer dmenu avec les couleurs de dwm. C'est en fait ce qui se passe lorsque vous tapez le raccourci Mod+P . dmenu est inclus dans le paquet dwm-tools ou suckless-tools, ou[http://tools.suckless.org/dmenu/  téléchargeable sur le site officiel]. La deuxième ligne lance un terminal, c'est ce qui se passe lorsque vous faîtes Mod+Shift+Entrée. Vous pouvez modifier la commande uxterm, par votre terminal favori (xterm, urxvt, xfce4-terminal, lxterminal...). Si vous n'êtes pas sûr, suivez le conseile de MisterFreez, indiquez &quot;x-terminal-emulator&quot; On va ajouter en dessous ces lignes nos propres fonctions! Par exemple, je voudrais ajouter deux raccourcis : l'un pour lancer gajim, l'autre pour couper/activer le son. Il faudra définir deux fonctions sur le même modèle que les précédentes. Donnez leur le nom que vous voulez, du moment que vous vous y retrouvez. Exemple : &lt;code lang=&quot;c&quot;&gt; static const char *gajim[] = { &quot;gajim&quot;, NULL }; static const char *muteson[] = { &quot;amixer&quot;, &quot;-q&quot;, &quot;set&quot;, &quot;Master&quot;, &quot;toggle&quot;, NULL }; &lt;/code&gt; '''Note : '''Remarquez que lorsque une commande contient des espaces, chaque argument doit être entre guillemets suivi d'une virgule. Les commandes finissent toujours par NULL. Bien, maintenant que nos fonctions sont définies, on va les appeler. J'ai envie de lancer gajim lorsque j'appuie sur Mod4+Mod1+i, et couper le son lorsque j'appuie sur la touche multimédia de mon ordinateur associée. Voici ce que ça donnera, dans la section des raccourcis claviers : &lt;code lang=&quot;c&quot;&gt; static Key keys[] = { /*il y a d'autres choses avant....*/ { MODKEY|Mod1, XK_i, spawn, {.v = gajim } }, { 0, 0x1008ff12, spawn, {.v = muteson } }, &lt;/code&gt; ''' Ouhla, ça mérite des explications :''' - Pour définir plusieurs modifieurs, on les sépare par un &quot;|&quot;. - XK_i correspond à la touche &quot;i&quot; - spawn est une fonction dans dwm, qui dit d'éxécuter la fonction désignée - On donne la fonction à éxécuter entre {.v = nom_de_fonction }. Le nom de la fonction est celui définit précédemment. - S'il n'y a pas de modificateur, on met un 0. - 0x1008ff12, c'est le code de ma touche multimédia, que j'ai récupéré en tapant xev en console, puis en faisant fn+&quot;touche bleue&quot; qui coupe le son&quot; Notez qu'il est possible de le faire aussi pour la souris. Par exemple, je veux que lorsque je fais un clique droit sur le texte dans la barre de tâches, ça lance un script que j'ai fait maison. On procédera comme suit :

* 1/On définit la commande du script. Je lui donne le petit nom &quot;deloggue&quot;, car ça me sert à mettre fin à une session

&lt;code lang=&quot;c&quot;&gt; static const char *deloggue[] = { &quot;/home/xavier/Documents/Scripts/exit.sh&quot;, NULL }; &lt;/code&gt;

* 2/ J'appelle cette fonction ensuite avec le clic droit sur le texte.

Dans la partie &quot;souris&quot;, on aura donc : &lt;code lang=&quot;c&quot;&gt; static Button buttons[] = { /* click event mask button function argument */ { ClkStatusText, 0, Button3, spawn, {.v = deloggue } }, }; &lt;/code&gt; On peut aussi modifier les raccourcis déja existants. Je souhaitais que lorsque je fait un clic-milieu sur le titre d'une fenêtre, ça la ferme : &lt;code lang=&quot;c&quot;&gt; static Button buttons[] = { /* click event mask button function argument */ { ClkWinTitle, 0, Button2, killclient, {0} }, }; &lt;/code&gt; ''Voila, rien de bien compliqué en définitive. On définit d'abord la commande à éxécuter, en lui donnant un nom de fonction au choix. Ensuite, on peut lancer cette commande avec spawn, suivi du nom de la fonction.''

====Modifier la configuration pour les claviers français :====

=====Le problème des touches &quot;chiffre&quot;:=====

Malheureusement, dwm est configuré par défaut pour les claviers anglais. Les chiffres au dessus des lettres de votre clavier ne seront pas lus comme tels, mais comme étant un &quot;&amp;amp;&quot; pour le &quot;1&quot;, un &quot;é&quot; pour le 2, un &quot; pour le &quot;3&quot;... On va donc remédier à tout ça. Le code de nos touches se récupère très facilement avec xev. Il faut lancer xev en console, taper sur une touche, et lire ce qui est retourné. On va donc remplacer cette portion : &lt;code lang=&quot;c&quot;&gt; TAGKEYS( XK_1, 0) TAGKEYS( XK_2, 1) TAGKEYS( XK_3, 2) TAGKEYS( XK_4, 3) TAGKEYS( XK_5, 4) TAGKEYS( XK_6, 5) TAGKEYS( XK_7, 6) TAGKEYS( XK_8, 7) TAGKEYS( XK_9, 8) &lt;/code&gt; Par ceci : &lt;code lang=&quot;c&quot;&gt; TAGKEYS( 0x26, 0) TAGKEYS( 0xe9, 1) TAGKEYS( 0x22, 2) TAGKEYS( 0x27, 3) TAGKEYS( 0x28, 4) TAGKEYS( 0x2d, 5) TAGKEYS( 0xe8, 6) TAGKEYS( 0x5f, 7) TAGKEYS( 0xe7, 8) &lt;/code&gt; Ainsi que ceci : &lt;code lang=&quot;c&quot;&gt; { MODKEY, XK_0, view, {.ui = ~0 } }, { MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } }, &lt;/code&gt; par : &lt;code lang=&quot;c&quot;&gt; { MODKEY, 0xe0, view, {.ui = ~0 } }, { MODKEY|ShiftMask, 0xe0, tag, {.ui = ~0 } },&lt;/code&gt;

=====Pour changer d'écran:=====

Il faut françiser la touche &quot;.&quot; pour nos claviers. Donc, remplacer dans le config.h &quot;period&quot; par &quot;semicolon&quot;, car pour nous, c'est le point-virgule : &lt;code lang=&quot;c&quot;&gt; { MODKEY, XK_comma, focusmon, {.i = -1 } }, { MODKEY, XK_semicolon, focusmon, {.i = +1 } }, { MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } }, { MODKEY|ShiftMask, XK_semicolon, tagmon, {.i = +1 } }, &lt;/code&gt; Un config.h françisé est maintenant disponible ici : http://thuban.toile-libre.org/index.php/dwm-en-francais/

===Ajouter un patch:===

Vous pouvez ajouter toutes sortes de fonctionnalités à dwm, en ajoutant des patches. [http://dwm.suckless.org/patches Le site officiel regorge d'informations à ce sujet, et la configuration de chaque patch est expliqué.] De façon générale, pour appliquer un patch, il faudra faire ceci dans le dossier de dwm : &lt;code&gt;patch -p1 &lt; chemin/vers/le/patch.diff &lt;/code&gt; Pour la version tarball (paquet debian inclus) &lt;code&gt;hg patch chemin/vers/le/patch.diff &lt;/code&gt; Pour la version mercurial (hg). Personnellement, j'affectionne le patch [http://dwm.suckless.org/patches/bottom_stack bottom stack] afin d'avoir un agencement des fenetres vertical, et le patch [http://dwm.suckless.org/patches/nametag nametag] pour renommer les tags. Mais je pourrais en mettre plus c'est vrai.

===Avoir un menu pour la souris:===

Il est bien entendu possible d'avoir un menu utilisable à la souris. Je vous invite à lire [http://thuban.toile-libre.org/index.php/un-menu-dans-dwm/ cette page], indiquant plusieurs façons possibles d'obtenir un menu.

===Personnaliser la barre d'état:===

Il est possible d'afficher ce que l'on veut dans la barre d'état. Cela se définit juste avant le lancement de dwm, donc selon les cas dans votre ~/.xinitrc ou autre. Dwm lira ce qui est passé en argument à xsetroot. Cela donnera quelque chose comme ça : &lt;code&gt; while true; do xsetroot -name &quot;$( date +&quot;%F %R&quot; )&quot; sleep 1m # Update time every minute done &amp;amp; exec dwm &lt;/code&gt; Qui affichera la date. Voici mon .xinitrc : &lt;code&gt; /home/xavier/Documents/Scripts/dmenu/dstatus.sh &amp;amp; exec /usr/local/bin/dwm &lt;/code&gt; Vous remarquerez que le lance un script dstatus.sh à part, pour plus de commodité. Ce script récupère plusieurs informations, et les renvoient dans le xsetroot. Ainsi, il y a l'heure, le débit internet, la chaque processeur, le volume sonore, des infos sur la batterie, ce que mpd joue...n peut notamment avoir une barre de progression pour mpd/mplayer/wget... Je met le script [http://pastebin.toile-libre.org/?show=457131 à disposition ici], n'hésitez pas à vous en inspirer!

=='''Conclusion:'''==

Il y a un programme essentiel à utiliser dans dwm : j'ai nommé dmenu. Vous pourrez au fur et à mesure lire des exemples d'utilisation que je posterai [http://thuban.toile-libre.org/Logiciel-libre/Suckless/dwm/dwm_presentation_et_configuration.html ici]. Cette page est à améliorer et il y a beaucoup de choses à préciser. Je vous invite donc à me faire part de vos remarques afin de l'améliorer. Je poste [http://thuban.toile-libre.org/wp-content/uploads/2010/11/config.h ici mon config.h] si vous voulez voir ma configuration.

== Liens externes ==
* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24798 Page de Misterfreeze pour installer proprement dwm sur sa debian]
* [http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=23322 Discussion autour de la configuration de dwm]
* http://wiki.debian.org/fr/Dwm
* [http://dwm.suckless.org Site officiel]
* [http://yeuxdelibad.net/Logiciel-libre/Suckless/dwm/dwm_presentation_et_configuration.html Article inspirant cette page ]

[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Tillings]]</text>
      <sha1>78nkcpmjexmqfm982nlshrs8sg32ilr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5106</id>
      <parentid>5105</parentid>
      <timestamp>2013-04-25T17:01:48Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="18993">=='''Présentation :'''==

''' ''' [http://dwm.suckless.org Dwm] est le tiling windows manager (Gestionnaire de fenêtres en tuile) développé par l'équipe de [http://suckless.org suckless.org]. Fidèle à leur philosophie, il est écrit en C, permettant ainsi la contribution de chacun au projet, ce langage étant plus que répandu et éprouvé. De plus, cela oblige les codeurs à faire du code propre et léger. 

Le but de ce window manager est avant tout de profiter d'une gestion dynamique des fenêtres, que vous pourrez gérer via des étiquettes (tags) par des raccourcis claviers principalement.

L'avantage pour le simple utilisateur, c'est que le C est très clair, et et que l'on a même pas besoin de tout comprendre pour le configurer. Eh oui, tout a été pensé, il suffit en fait d'éditer rien qu'un tout petit fichier : [http://yeuxdelibad.net/Logiciel-libre/Suckless/dwm/#configh le config.h ], qui a été construit de manière à rendre la configuration accessible même aux non-initiés. De plus, cela évite les multiples fichiers de configuration tiers, on configure dwm une fois, et une fois qu'il est insallé, on n'a plus rien à toucher, tout est dans le binaire! Ainsi, dwm n'a pas à chercher et lire ces fichiers de configuration pour faire son boulot, donc le temps d'éxécution est amélioré! Debian propose un paquet de démonstration. On expliquera ici comment reconstruire un paquet proprement, une fois que l'on a configuré dwm à notre sauce. Le code de dwm a été construit dans le but de pouvoir ajouter des fonctionnalités simplement, sous forme de [http://yeuxdelibad.net/Logiciel-libre/Suckless/dwm/#patch patches.] Vous pourrez alors composer votre gestionnaire de fenêtre, avec les fonctions que vous désirez. Avant de vous présenter ici les différentes configurations possible, astuces et autres, je ne peux continuer sans [http://dwm.suckless.org/screenshots/ une traditionnelle capture d'écran] : 


[[Fichier:dwm-exemple.png|200px|thumb|left|un exemple d'utilisation de dwm]]

=='''Tester sur debian :'''==

''' ''' Pour commencer, on va utiliser la version de test proposée dans les dépots Debian. Test? Eh oui, car la puissance de dwm se retrouve lorsque l'on édite le fichier config.h, et que l'on recompile. Mais rassurez-vous, cela tient du jeu d'enfant! Il est même prévu de reconstruire le paquet! Bien, installez donc le paquet dwm (aptitude install dwm), puis choisissez cette session dans gdm/kdm, ou bien ajoutez à votre .xinitrc :&lt;code&gt;exec dwm&lt;/code&gt; Comme vous le voyez, la configuration par défaut n'est pas la plus belle. Mais on va y remédier! ''' '''

=='''Utilisation :'''==

Dwm a été pensé pour être entièrement piloté au clavier si besoin. Voici les raccourcis définis par défaut. On utilisera dans un premier temps la touche &quot;alt&quot; comme touche &quot;Mod1&quot;. ([http://thuban.toile-libre.org/index.php/dwm-un-tiling-window-manager-pour-vos-besoins/#4-configurer-dwm voir la partie configuration pour plus d'informations])

* Mod1-Shift-Return Lance un terminal
* Mod1-b Affiche/cache la barre
* Mod1-t Paser en mode &quot;tiling&quot;
* Mod1-f Passer en mode flottant.
* Mod1-m Maximise la zone principale
* Mod1-space Passe du mode courant au mode précédent.
* Mod1-j Passe le focus à la fenêtre suivante
* Mod1-k passe le focus à la fenêtre précédente
* Mod1-h Réduis la taille de la zone principale
* Mod1-l Augmente la taille de la zone principale
* Mod1-Return Échange les fenêtres séléctionnées depuis/vers la zone principale
* Mod1-Shift-c Ferme la fenêtre sélectionnée
* Mod1-Shift-space Passe la fenêtre sélectionnée entre le mode tiling et flottant
* Mod1-Tab Sélectionne la vue précédente
* Mod1-Shift-[1..n] Donne à la fenêtre l'étiquette 1...n
* Mod1-Shift-0 Colle toutes les étiquettes à la fenêtre, de 1 à 9.
* Mod1-Control-Shift-[1..n] Ajoute les fenêtres à l'étiquette 1...n 
* Mod1-[1..n] Afficher les fenêtres dont l'étiquette est 1...n
* Mod1-0 Montre/cache toutes les étiquettes.
* Mod1-Control-[1..n] Ajoute les étiquettes 1...n à la vue
* Mod1-Shift-q Quitte dwm



Sur le bureau, on démarre par defaut en mode « divisé » : l'écran est divisé équitablement entre les fenêtres. Voici les modes disponibles par défaut :

* Le mode « flottant » (Mod+f) : Vous pourrez alors déplacer la fenêtre en maintenant la touche Mod appuyée tout en déplacant la fenêtre à la souris, la redimensionner en maintenant Mod et en faisant clic-droit avec la souris.

* Le mode « maximum » (Mod+m) : la fenêtre prend tout l'espace disponible, on ne voit pas les autres fenêtres

* Le mode « divisé » (Mod+t) : Mode écran divisé ou tiling. Une partie maître à gauche, avec une fenêtre plus grande, et une partie à droite avec les fenêtres plus petites.

===Obtenir dwm :===

Dwm est téléchargeable sur le [http://dl.suckless.org/dwm/ site officiel] (prendre l'archive la plus récente et la décompresser), ou vous pouvez télécharger les sources debian : &lt;code&gt;# apt-get source dwm&lt;/code&gt; . Pour les plus aventureux, vous pouver installer la toute dernière mouture de dwm ainsi (paquet mercurial nécéssaire) &lt;code&gt;hg clone http://hg.suckless.org/dwm&lt;/code&gt;. Les deux dernières commandes téléchargent les sources dans le dossier courant. On se déplace dans le dossier des sources de dwm : &lt;code&gt;cd dwm-numéro_de_version&lt;/code&gt;

===Installer dwm :===

Dans le dossier contenant les sources, il suffit de taper : &lt;code&gt;make&lt;/code&gt;. Dwm est alors compilé, et présent dans le dossier actuel. Vous pouvez l'installer sur tout le système si vous voulez, en tapant ensuite : &lt;code&gt;make install&lt;/code&gt; Les éxécutables seront dans ce cas le dossier /usr/local/bin par défaut. Pour changer ce répertoire, il faut éditer le fichier config.mk, et changer la ligne : &lt;code&gt;PREFIX = /chemin/du/dossier/destination&lt;/code&gt; vers le chemin de votre choix (votre dossier utilisateur ou autre). Notez toutefois que pour lancer votre session ensuite, il faudra préciser le bon chemin.
 &lt;code&gt; 
#Fichier ~/.xinitrc
#commande pour lancer dwm en tapant startx 
#Lorsque dwm est dans /usr/bin ou /usr/local/bin : 
exec dwm 
#lorsque dwm est dans un dossier quelconque, par exemple dans /home/user/ 
#exec /home/user/dwm &lt;/code&gt; 
Les dépendances nécéssaires sont libX11-dev et éventuellement libxinerama-dev. Intéressons nous comment recréer un paquet debian à partir des sources debian : On récupère les sources, qui seront décompressées dans le dossier courant : &lt;code&gt; apt-get source dwm&lt;/code&gt; On se déplace dans le dossier des sources. J'utilise le caractère &quot;*&quot; pour ne pas avoir à préciser la version de dwm : &lt;code&gt;cd dwm*&lt;/code&gt; Maintenant, on retrouve les fichiers sources de dwm, les mêmes que dans l'archive officielle plus quelques autres relatifs à debian. On configure dwm de la même façon que pour les autres méthode, en éditant le config.def.h. Attention, ici c'est le fichier config.def.h qui sera pris en compte, et qu'il faut donc modifier. Une fois que vous êtes satisfaits, vous pouvez refabriquer le paquet avec cette commande (toujours dans le dossier des sources) : &lt;code&gt;dpkg-buildpackage -rfakeroot -uc -b&lt;/code&gt; Ce qui va créer un fichier dwm-version.deb dans le répertoire supérieur. Pour vous assurez d'avoir les dépendances nécéssaires, tapez ceci (Merci Knucky) : &lt;code&gt;apt-get build-dep dwm&lt;/code&gt; Allons donc chercher le paquet récemment créé : &lt;code&gt;cd ..&lt;/code&gt; Et installons ce paquet (il faut avoir les droits super-utilisateur) : &lt;code&gt; dpkg -i dwm_*.deb &lt;/code&gt; Le paquet est maintenant installé!

Il se peut fichier dwm-5.7.2/debian/desktop/dwm soit mal fait. En effet pour être pris en compte par gdm il faut le renommer avec l'extension &quot;.desktop&quot;. ''' '''

==''' [http://dwm.suckless.org/customisation/ 4. Configurer dwm :]'''==

''' ''' ''[http://dwm.suckless.org/customisation/ Documentation du site officiel à ce sujet]'' On va maintenant se pencher sur les configurations possibles.

===Le fichier config.h :===

Depuis le temps que je vous parle de ce fichier! Il se trouve dans le dossier des sources de dwm. Allons le chercher : &lt;code&gt;cd dwm-numero_de_version&lt;/code&gt; ''Mais, que dis-tu, il n'y a pas de fichier config.h! bouh!'' Ahem... En effet, dis comme ça... Non, je ne me moque pas de vous. En fait, par défaut, le fichier s'appelle config.def.h. C'est en fait un config.h qui sert de modèle. Cependant, si un fichier config.h est présent, ce sera lui qui sera utilisé pour la configuration, sinon ce sera le config.def.h. Je vous invite à copier le fichier config.def.h en config.h, toujours dans le dossier des sources : &lt;code&gt;cp config.def.h config.h&lt;/code&gt; Ainsi, vous gardez un modèle d'origine en cas de besoin. Voici à quoi ressemble le fichier par défaut, j'y rajoute ici des commentaires pour l'expliquer en français. 
http://www.isalo.org/pnopaste/?14

====Donner des règles pour les fenêtres====

Voir aussi : http://dwm.suckless.org/customisation/tagmask Il est possible de définir des règles spécifique à certaines fenêtres. Par exemple, si je veux que transmission n'apparaisse que su le tag 9, il faudra mettre ceci : &lt;code lang=&quot;c&quot;&gt; static const Rule rules[] = { /* class instance title tags mask isfloating monitor */ { &quot;Transmission&quot;, NULL, NULL, 1 &lt;&lt; 8, False, -1 }, }; &lt;/code&gt; Pour récupérer les informations sur une fenêtre, tapez xprop dans une console. Votre curseur va changer de forme. Cliquez alors sur la fenêtre voulue. Vous verrez apparaître dans la console les informations sur la classe, le titre de la fenêtre... Vous l'aurez compris, si vous voulez que la fenêtre flotte, il faudra mettre &quot;True&quot; dans la colonne &quot;isfloating&quot; Pour désigner le tag où l'on veut que la fenêtre apparaisse, c'est un peu plus complexe. Ainsi 1 &lt;&lt; 8 définit le tag 9, 1 &lt;&lt; 7 représente le tag 8, ~0 représente tous les tags, (1 &lt;&lt; 8 ) – 1 définit tous les tags sauf le 9eme.

====Définir vos raccourcis:====

Bien sûr, on peut éxécuter la commande de notre choix via un raccourci clavier, ou même un raccourci souris si on le souhaite. La première étape sera de définir ce raccourci. Il s'agit en fait de faire nos propres fonctions. Repérer ces lignes dans le config.h : &lt;code lang=&quot;c&quot;&gt; /* commands */ static const char *dmenucmd[] = { &quot;dmenu_run&quot;, &quot;-fn&quot;, font, &quot;-nb&quot;, normbgcolor, &quot;-nf&quot;, normfgcolor, &quot;-sb&quot;, selbgcolor, &quot;-sf&quot;, selfgcolor, NULL }; static const char *termcmd[] = { &quot;uxterm&quot;, NULL }; &lt;/code&gt; La première ligne sert à lancer dmenu avec les couleurs de dwm. C'est en fait ce qui se passe lorsque vous tapez le raccourci Mod+P . dmenu est inclus dans le paquet dwm-tools ou suckless-tools, ou[http://tools.suckless.org/dmenu/  téléchargeable sur le site officiel]. La deuxième ligne lance un terminal, c'est ce qui se passe lorsque vous faîtes Mod+Shift+Entrée. Vous pouvez modifier la commande uxterm, par votre terminal favori (xterm, urxvt, xfce4-terminal, lxterminal...). Si vous n'êtes pas sûr, suivez le conseile de MisterFreez, indiquez &quot;x-terminal-emulator&quot; On va ajouter en dessous ces lignes nos propres fonctions! Par exemple, je voudrais ajouter deux raccourcis : l'un pour lancer gajim, l'autre pour couper/activer le son. Il faudra définir deux fonctions sur le même modèle que les précédentes. Donnez leur le nom que vous voulez, du moment que vous vous y retrouvez. Exemple : &lt;code lang=&quot;c&quot;&gt; static const char *gajim[] = { &quot;gajim&quot;, NULL }; static const char *muteson[] = { &quot;amixer&quot;, &quot;-q&quot;, &quot;set&quot;, &quot;Master&quot;, &quot;toggle&quot;, NULL }; &lt;/code&gt; '''Note : '''Remarquez que lorsque une commande contient des espaces, chaque argument doit être entre guillemets suivi d'une virgule. Les commandes finissent toujours par NULL. Bien, maintenant que nos fonctions sont définies, on va les appeler. J'ai envie de lancer gajim lorsque j'appuie sur Mod4+Mod1+i, et couper le son lorsque j'appuie sur la touche multimédia de mon ordinateur associée. Voici ce que ça donnera, dans la section des raccourcis claviers : &lt;code lang=&quot;c&quot;&gt; static Key keys[] = { /*il y a d'autres choses avant....*/ { MODKEY|Mod1, XK_i, spawn, {.v = gajim } }, { 0, 0x1008ff12, spawn, {.v = muteson } }, &lt;/code&gt; ''' Ouhla, ça mérite des explications :''' - Pour définir plusieurs modifieurs, on les sépare par un &quot;|&quot;. - XK_i correspond à la touche &quot;i&quot; - spawn est une fonction dans dwm, qui dit d'éxécuter la fonction désignée - On donne la fonction à éxécuter entre {.v = nom_de_fonction }. Le nom de la fonction est celui définit précédemment. - S'il n'y a pas de modificateur, on met un 0. - 0x1008ff12, c'est le code de ma touche multimédia, que j'ai récupéré en tapant xev en console, puis en faisant fn+&quot;touche bleue&quot; qui coupe le son&quot; Notez qu'il est possible de le faire aussi pour la souris. Par exemple, je veux que lorsque je fais un clique droit sur le texte dans la barre de tâches, ça lance un script que j'ai fait maison. On procédera comme suit :

* 1/On définit la commande du script. Je lui donne le petit nom &quot;deloggue&quot;, car ça me sert à mettre fin à une session

&lt;code lang=&quot;c&quot;&gt; static const char *deloggue[] = { &quot;/home/xavier/Documents/Scripts/exit.sh&quot;, NULL }; &lt;/code&gt;

* 2/ J'appelle cette fonction ensuite avec le clic droit sur le texte.

Dans la partie &quot;souris&quot;, on aura donc : &lt;code lang=&quot;c&quot;&gt; static Button buttons[] = { /* click event mask button function argument */ { ClkStatusText, 0, Button3, spawn, {.v = deloggue } }, }; &lt;/code&gt; On peut aussi modifier les raccourcis déja existants. Je souhaitais que lorsque je fait un clic-milieu sur le titre d'une fenêtre, ça la ferme : &lt;code lang=&quot;c&quot;&gt; static Button buttons[] = { /* click event mask button function argument */ { ClkWinTitle, 0, Button2, killclient, {0} }, }; &lt;/code&gt; ''Voila, rien de bien compliqué en définitive. On définit d'abord la commande à éxécuter, en lui donnant un nom de fonction au choix. Ensuite, on peut lancer cette commande avec spawn, suivi du nom de la fonction.''

====Modifier la configuration pour les claviers français :====

=====Le problème des touches &quot;chiffre&quot;:=====

Malheureusement, dwm est configuré par défaut pour les claviers anglais. Les chiffres au dessus des lettres de votre clavier ne seront pas lus comme tels, mais comme étant un &quot;&amp;amp;&quot; pour le &quot;1&quot;, un &quot;é&quot; pour le 2, un &quot; pour le &quot;3&quot;... On va donc remédier à tout ça. Le code de nos touches se récupère très facilement avec xev. Il faut lancer xev en console, taper sur une touche, et lire ce qui est retourné. On va donc remplacer cette portion : &lt;code lang=&quot;c&quot;&gt; TAGKEYS( XK_1, 0) TAGKEYS( XK_2, 1) TAGKEYS( XK_3, 2) TAGKEYS( XK_4, 3) TAGKEYS( XK_5, 4) TAGKEYS( XK_6, 5) TAGKEYS( XK_7, 6) TAGKEYS( XK_8, 7) TAGKEYS( XK_9, 8) &lt;/code&gt; Par ceci : &lt;code lang=&quot;c&quot;&gt; TAGKEYS( 0x26, 0) TAGKEYS( 0xe9, 1) TAGKEYS( 0x22, 2) TAGKEYS( 0x27, 3) TAGKEYS( 0x28, 4) TAGKEYS( 0x2d, 5) TAGKEYS( 0xe8, 6) TAGKEYS( 0x5f, 7) TAGKEYS( 0xe7, 8) &lt;/code&gt; Ainsi que ceci : &lt;code lang=&quot;c&quot;&gt; { MODKEY, XK_0, view, {.ui = ~0 } }, { MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } }, &lt;/code&gt; par : &lt;code lang=&quot;c&quot;&gt; { MODKEY, 0xe0, view, {.ui = ~0 } }, { MODKEY|ShiftMask, 0xe0, tag, {.ui = ~0 } },&lt;/code&gt;

Un patch automatisant le tout est disponible ici : [http://dwm.suckless.org/patches/azertykey azertykey]

=====Pour changer d'écran:=====

Il faut françiser la touche &quot;.&quot; pour nos claviers. Donc, remplacer dans le config.h &quot;period&quot; par &quot;semicolon&quot;, car pour nous, c'est le point-virgule : &lt;code lang=&quot;c&quot;&gt; { MODKEY, XK_comma, focusmon, {.i = -1 } }, { MODKEY, XK_semicolon, focusmon, {.i = +1 } }, { MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } }, { MODKEY|ShiftMask, XK_semicolon, tagmon, {.i = +1 } }, &lt;/code&gt; Un config.h françisé est maintenant disponible ici : http://thuban.toile-libre.org/index.php/dwm-en-francais/

===Ajouter un patch:===

Vous pouvez ajouter toutes sortes de fonctionnalités à dwm, en ajoutant des patches. [http://dwm.suckless.org/patches Le site officiel regorge d'informations à ce sujet, et la configuration de chaque patch est expliqué.] De façon générale, pour appliquer un patch, il faudra faire ceci dans le dossier de dwm : &lt;code&gt;patch -p1 &lt; chemin/vers/le/patch.diff &lt;/code&gt; Pour la version tarball (paquet debian inclus) &lt;code&gt;hg patch chemin/vers/le/patch.diff &lt;/code&gt; Pour la version mercurial (hg). Personnellement, j'affectionne le patch [http://dwm.suckless.org/patches/bottom_stack bottom stack] afin d'avoir un agencement des fenetres vertical, et le patch [http://dwm.suckless.org/patches/nametag nametag] pour renommer les tags. Mais je pourrais en mettre plus c'est vrai.

===Avoir un menu pour la souris:===

Il est bien entendu possible d'avoir un menu utilisable à la souris. Je vous invite à lire [http://thuban.toile-libre.org/index.php/un-menu-dans-dwm/ cette page], indiquant plusieurs façons possibles d'obtenir un menu.

===Personnaliser la barre d'état:===

Il est possible d'afficher ce que l'on veut dans la barre d'état. Cela se définit juste avant le lancement de dwm, donc selon les cas dans votre ~/.xinitrc ou autre. Dwm lira ce qui est passé en argument à xsetroot. Cela donnera quelque chose comme ça : &lt;code&gt; while true; do xsetroot -name &quot;$( date +&quot;%F %R&quot; )&quot; sleep 1m # Update time every minute done &amp;amp; exec dwm &lt;/code&gt; Qui affichera la date. Voici mon .xinitrc : &lt;code&gt; /home/xavier/Documents/Scripts/dmenu/dstatus.sh &amp;amp; exec /usr/local/bin/dwm &lt;/code&gt; Vous remarquerez que le lance un script dstatus.sh à part, pour plus de commodité. Ce script récupère plusieurs informations, et les renvoient dans le xsetroot. Ainsi, il y a l'heure, le débit internet, la chaque processeur, le volume sonore, des infos sur la batterie, ce que mpd joue...n peut notamment avoir une barre de progression pour mpd/mplayer/wget... Je met le script [http://pastebin.toile-libre.org/?show=457131 à disposition ici], n'hésitez pas à vous en inspirer!

=='''Conclusion:'''==

Il y a un programme essentiel à utiliser dans dwm : j'ai nommé dmenu. Vous pourrez au fur et à mesure lire des exemples d'utilisation que je posterai [http://thuban.toile-libre.org/Logiciel-libre/Suckless/dwm/dwm_presentation_et_configuration.html ici]. Cette page est à améliorer et il y a beaucoup de choses à préciser. Je vous invite donc à me faire part de vos remarques afin de l'améliorer. Je poste [http://thuban.toile-libre.org/wp-content/uploads/2010/11/config.h ici mon config.h] si vous voulez voir ma configuration.

== Liens externes ==
* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24798 Page de Misterfreeze pour installer proprement dwm sur sa debian]
* [http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=23322 Discussion autour de la configuration de dwm]
* http://wiki.debian.org/fr/Dwm
* [http://dwm.suckless.org Site officiel]
* [http://yeuxdelibad.net/Logiciel-libre/Suckless/dwm/dwm_presentation_et_configuration.html Article inspirant cette page ]

[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Tillings]]</text>
      <sha1>oad6j2e9wsxp1ukho46vrke4vdy92e3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5285</id>
      <parentid>5106</parentid>
      <timestamp>2013-06-13T19:55:28Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="19014">=='''Présentation :'''==

''' ''' [http://dwm.suckless.org Dwm] est le tiling windows manager (Gestionnaire de fenêtres en tuile) développé par l'équipe de [http://suckless.org suckless.org]. Fidèle à leur philosophie, il est écrit en C, permettant ainsi la contribution de chacun au projet, ce langage étant plus que répandu et éprouvé. De plus, cela oblige les codeurs à faire du code propre et léger. 

Le but de ce window manager est avant tout de profiter d'une gestion dynamique des fenêtres, que vous pourrez gérer via des étiquettes (tags) par des raccourcis claviers principalement.

L'avantage pour le simple utilisateur, c'est que le C est très clair, et et que l'on a même pas besoin de tout comprendre pour le configurer. Eh oui, tout a été pensé, il suffit en fait d'éditer rien qu'un tout petit fichier : [http://yeuxdelibad.net/Logiciel-libre/Suckless/dwm/#configh le config.h ], qui a été construit de manière à rendre la configuration accessible même aux non-initiés. De plus, cela évite les multiples fichiers de configuration tiers, on configure dwm une fois, et une fois qu'il est insallé, on n'a plus rien à toucher, tout est dans le binaire! Ainsi, dwm n'a pas à chercher et lire ces fichiers de configuration pour faire son boulot, donc le temps d'éxécution est amélioré! Debian propose un paquet de démonstration. On expliquera ici comment reconstruire un paquet proprement, une fois que l'on a configuré dwm à notre sauce. Le code de dwm a été construit dans le but de pouvoir ajouter des fonctionnalités simplement, sous forme de [http://yeuxdelibad.net/Logiciel-libre/Suckless/dwm/#patch patches.] Vous pourrez alors composer votre gestionnaire de fenêtre, avec les fonctions que vous désirez. Avant de vous présenter ici les différentes configurations possible, astuces et autres, je ne peux continuer sans [http://dwm.suckless.org/screenshots/ une traditionnelle capture d'écran] : 


[[Fichier:dwm-exemple.png|200px|thumb|left|un exemple d'utilisation de dwm]]

=='''Tester sur debian :'''==

''' ''' Pour commencer, on va utiliser la version de test proposée dans les dépots Debian. Test? Eh oui, car la puissance de dwm se retrouve lorsque l'on édite le fichier config.h, et que l'on recompile. Mais rassurez-vous, cela tient du jeu d'enfant! Il est même prévu de reconstruire le paquet! Bien, installez donc le paquet dwm (aptitude install dwm), puis choisissez cette session dans gdm/kdm, ou bien ajoutez à votre .xinitrc :&lt;code&gt;exec dwm&lt;/code&gt; Comme vous le voyez, la configuration par défaut n'est pas la plus belle. Mais on va y remédier! ''' '''

=='''Utilisation :'''==

Dwm a été pensé pour être entièrement piloté au clavier si besoin. Voici les raccourcis définis par défaut. On utilisera dans un premier temps la touche &quot;alt&quot; comme touche &quot;Mod1&quot;. ([http://thuban.toile-libre.org/index.php/dwm-un-tiling-window-manager-pour-vos-besoins/#4-configurer-dwm voir la partie configuration pour plus d'informations])

* Mod1-Shift-Return Lance un terminal
* Mod1-b Affiche/cache la barre
* Mod1-t Paser en mode &quot;tiling&quot;
* Mod1-f Passer en mode flottant.
* Mod1-m Maximise la zone principale
* Mod1-space Passe du mode courant au mode précédent.
* Mod1-j Passe le focus à la fenêtre suivante
* Mod1-k passe le focus à la fenêtre précédente
* Mod1-h Réduis la taille de la zone principale
* Mod1-l Augmente la taille de la zone principale
* Mod1-Return Échange les fenêtres séléctionnées depuis/vers la zone principale
* Mod1-Shift-c Ferme la fenêtre sélectionnée
* Mod1-Shift-space Passe la fenêtre sélectionnée entre le mode tiling et flottant
* Mod1-Tab Sélectionne la vue précédente
* Mod1-Shift-[1..n] Donne à la fenêtre l'étiquette 1...n
* Mod1-Shift-0 Colle toutes les étiquettes à la fenêtre, de 1 à 9.
* Mod1-Control-Shift-[1..n] Ajoute les fenêtres à l'étiquette 1...n 
* Mod1-[1..n] Afficher les fenêtres dont l'étiquette est 1...n
* Mod1-0 Montre/cache toutes les étiquettes.
* Mod1-Control-[1..n] Ajoute les étiquettes 1...n à la vue
* Mod1-Shift-q Quitte dwm



Sur le bureau, on démarre par defaut en mode « divisé » : l'écran est divisé équitablement entre les fenêtres. Voici les modes disponibles par défaut :

* Le mode « flottant » (Mod+f) : Vous pourrez alors déplacer la fenêtre en maintenant la touche Mod appuyée tout en déplacant la fenêtre à la souris, la redimensionner en maintenant Mod et en faisant clic-droit avec la souris.

* Le mode « maximum » (Mod+m) : la fenêtre prend tout l'espace disponible, on ne voit pas les autres fenêtres

* Le mode « divisé » (Mod+t) : Mode écran divisé ou tiling. Une partie maître à gauche, avec une fenêtre plus grande, et une partie à droite avec les fenêtres plus petites.

===Obtenir dwm :===

Dwm est téléchargeable sur le [http://dl.suckless.org/dwm/ site officiel] (prendre l'archive la plus récente et la décompresser), ou vous pouvez télécharger les sources debian : &lt;code&gt;# apt-get source dwm&lt;/code&gt; . Pour les plus aventureux, vous pouver installer la toute dernière mouture de dwm ainsi (paquet mercurial nécéssaire) &lt;code&gt;hg clone http://hg.suckless.org/dwm&lt;/code&gt;. Les deux dernières commandes téléchargent les sources dans le dossier courant. On se déplace dans le dossier des sources de dwm : &lt;code&gt;cd dwm-numéro_de_version&lt;/code&gt;

===Installer dwm :===

Dans le dossier contenant les sources, il suffit de taper : &lt;code&gt;make&lt;/code&gt;. Dwm est alors compilé, et présent dans le dossier actuel. Vous pouvez l'installer sur tout le système si vous voulez, en tapant ensuite : &lt;code&gt;make install&lt;/code&gt; Les éxécutables seront dans ce cas le dossier /usr/local/bin par défaut. Pour changer ce répertoire, il faut éditer le fichier config.mk, et changer la ligne : &lt;code&gt;PREFIX = /chemin/du/dossier/destination&lt;/code&gt; vers le chemin de votre choix (votre dossier utilisateur ou autre). Notez toutefois que pour lancer votre session ensuite, il faudra préciser le bon chemin.
 &lt;code&gt; 
#Fichier ~/.xinitrc
#commande pour lancer dwm en tapant startx 
#Lorsque dwm est dans /usr/bin ou /usr/local/bin : 
exec dwm 
#lorsque dwm est dans un dossier quelconque, par exemple dans /home/user/ 
#exec /home/user/dwm &lt;/code&gt; 
Les dépendances nécéssaires sont libX11-dev et éventuellement libxinerama-dev. Intéressons nous comment recréer un paquet debian à partir des sources debian : On récupère les sources, qui seront décompressées dans le dossier courant : &lt;code&gt; apt-get source dwm&lt;/code&gt; On se déplace dans le dossier des sources. J'utilise le caractère &quot;*&quot; pour ne pas avoir à préciser la version de dwm : &lt;code&gt;cd dwm*&lt;/code&gt; Maintenant, on retrouve les fichiers sources de dwm, les mêmes que dans l'archive officielle plus quelques autres relatifs à debian. On configure dwm de la même façon que pour les autres méthode, en éditant le config.def.h. Attention, ici c'est le fichier config.def.h qui sera pris en compte, et qu'il faut donc modifier. Une fois que vous êtes satisfaits, vous pouvez refabriquer le paquet avec cette commande (toujours dans le dossier des sources) : &lt;code&gt;dpkg-buildpackage -rfakeroot -uc -b&lt;/code&gt; Ce qui va créer un fichier dwm-version.deb dans le répertoire supérieur. Pour vous assurez d'avoir les dépendances nécéssaires, tapez ceci (Merci Knucky) : &lt;code&gt;apt-get build-dep dwm&lt;/code&gt; Allons donc chercher le paquet récemment créé : &lt;code&gt;cd ..&lt;/code&gt; Et installons ce paquet (il faut avoir les droits super-utilisateur) : &lt;code&gt; dpkg -i dwm_*.deb &lt;/code&gt; Le paquet est maintenant installé!

Il se peut fichier dwm-5.7.2/debian/desktop/dwm soit mal fait. En effet pour être pris en compte par gdm il faut le renommer avec l'extension &quot;.desktop&quot;. ''' '''

==''' [http://dwm.suckless.org/customisation/ 4. Configurer dwm :]'''==

''' ''' ''[http://dwm.suckless.org/customisation/ Documentation du site officiel à ce sujet]'' On va maintenant se pencher sur les configurations possibles.

===Le fichier config.h :===

Depuis le temps que je vous parle de ce fichier! Il se trouve dans le dossier des sources de dwm. Allons le chercher : &lt;code&gt;cd dwm-numero_de_version&lt;/code&gt; ''Mais, que dis-tu, il n'y a pas de fichier config.h! bouh!'' Ahem... En effet, dis comme ça... Non, je ne me moque pas de vous. En fait, par défaut, le fichier s'appelle config.def.h. C'est en fait un config.h qui sert de modèle. Cependant, si un fichier config.h est présent, ce sera lui qui sera utilisé pour la configuration, sinon ce sera le config.def.h. Je vous invite à copier le fichier config.def.h en config.h, toujours dans le dossier des sources : &lt;code&gt;cp config.def.h config.h&lt;/code&gt; Ainsi, vous gardez un modèle d'origine en cas de besoin. Voici à quoi ressemble le fichier par défaut, j'y rajoute ici des commentaires pour l'expliquer en français. 
http://www.isalo.org/pnopaste/?14

====Donner des règles pour les fenêtres====

Voir aussi : http://dwm.suckless.org/customisation/tagmask Il est possible de définir des règles spécifique à certaines fenêtres. Par exemple, si je veux que transmission n'apparaisse que su le tag 9, il faudra mettre ceci : &lt;code lang=&quot;c&quot;&gt; static const Rule rules[] = { /* class instance title tags mask isfloating monitor */ { &quot;Transmission&quot;, NULL, NULL, 1 &lt;&lt; 8, False, -1 }, }; &lt;/code&gt; Pour récupérer les informations sur une fenêtre, tapez xprop dans une console. Votre curseur va changer de forme. Cliquez alors sur la fenêtre voulue. Vous verrez apparaître dans la console les informations sur la classe, le titre de la fenêtre... Vous l'aurez compris, si vous voulez que la fenêtre flotte, il faudra mettre &quot;True&quot; dans la colonne &quot;isfloating&quot; Pour désigner le tag où l'on veut que la fenêtre apparaisse, c'est un peu plus complexe. Ainsi 1 &lt;&lt; 8 définit le tag 9, 1 &lt;&lt; 7 représente le tag 8, ~0 représente tous les tags, (1 &lt;&lt; 8 ) – 1 définit tous les tags sauf le 9eme.

====Définir vos raccourcis:====

Bien sûr, on peut éxécuter la commande de notre choix via un raccourci clavier, ou même un raccourci souris si on le souhaite. La première étape sera de définir ce raccourci. Il s'agit en fait de faire nos propres fonctions. Repérer ces lignes dans le config.h : &lt;code lang=&quot;c&quot;&gt; /* commands */ static const char *dmenucmd[] = { &quot;dmenu_run&quot;, &quot;-fn&quot;, font, &quot;-nb&quot;, normbgcolor, &quot;-nf&quot;, normfgcolor, &quot;-sb&quot;, selbgcolor, &quot;-sf&quot;, selfgcolor, NULL }; static const char *termcmd[] = { &quot;uxterm&quot;, NULL }; &lt;/code&gt; La première ligne sert à lancer dmenu avec les couleurs de dwm. C'est en fait ce qui se passe lorsque vous tapez le raccourci Mod+P . dmenu est inclus dans le paquet dwm-tools ou suckless-tools, ou[http://tools.suckless.org/dmenu/  téléchargeable sur le site officiel]. La deuxième ligne lance un terminal, c'est ce qui se passe lorsque vous faîtes Mod+Shift+Entrée. Vous pouvez modifier la commande uxterm, par votre terminal favori (xterm, urxvt, xfce4-terminal, lxterminal...). Si vous n'êtes pas sûr, suivez le conseile de MisterFreez, indiquez &quot;x-terminal-emulator&quot; On va ajouter en dessous ces lignes nos propres fonctions! Par exemple, je voudrais ajouter deux raccourcis : l'un pour lancer gajim, l'autre pour couper/activer le son. Il faudra définir deux fonctions sur le même modèle que les précédentes. Donnez leur le nom que vous voulez, du moment que vous vous y retrouvez. Exemple : &lt;code lang=&quot;c&quot;&gt; static const char *gajim[] = { &quot;gajim&quot;, NULL }; static const char *muteson[] = { &quot;amixer&quot;, &quot;-q&quot;, &quot;set&quot;, &quot;Master&quot;, &quot;toggle&quot;, NULL }; &lt;/code&gt; '''Note : '''Remarquez que lorsque une commande contient des espaces, chaque argument doit être entre guillemets suivi d'une virgule. Les commandes finissent toujours par NULL. Bien, maintenant que nos fonctions sont définies, on va les appeler. J'ai envie de lancer gajim lorsque j'appuie sur Mod4+Mod1+i, et couper le son lorsque j'appuie sur la touche multimédia de mon ordinateur associée. Voici ce que ça donnera, dans la section des raccourcis claviers : &lt;code lang=&quot;c&quot;&gt; static Key keys[] = { /*il y a d'autres choses avant....*/ { MODKEY|Mod1, XK_i, spawn, {.v = gajim } }, { 0, 0x1008ff12, spawn, {.v = muteson } }, &lt;/code&gt; ''' Ouhla, ça mérite des explications :''' - Pour définir plusieurs modifieurs, on les sépare par un &quot;|&quot;. - XK_i correspond à la touche &quot;i&quot; - spawn est une fonction dans dwm, qui dit d'éxécuter la fonction désignée - On donne la fonction à éxécuter entre {.v = nom_de_fonction }. Le nom de la fonction est celui définit précédemment. - S'il n'y a pas de modificateur, on met un 0. - 0x1008ff12, c'est le code de ma touche multimédia, que j'ai récupéré en tapant xev en console, puis en faisant fn+&quot;touche bleue&quot; qui coupe le son&quot; Notez qu'il est possible de le faire aussi pour la souris. Par exemple, je veux que lorsque je fais un clique droit sur le texte dans la barre de tâches, ça lance un script que j'ai fait maison. On procédera comme suit :

* 1/On définit la commande du script. Je lui donne le petit nom &quot;deloggue&quot;, car ça me sert à mettre fin à une session

&lt;code lang=&quot;c&quot;&gt; static const char *deloggue[] = { &quot;/home/xavier/Documents/Scripts/exit.sh&quot;, NULL }; &lt;/code&gt;

* 2/ J'appelle cette fonction ensuite avec le clic droit sur le texte.

Dans la partie &quot;souris&quot;, on aura donc : &lt;code lang=&quot;c&quot;&gt; static Button buttons[] = { /* click event mask button function argument */ { ClkStatusText, 0, Button3, spawn, {.v = deloggue } }, }; &lt;/code&gt; On peut aussi modifier les raccourcis déja existants. Je souhaitais que lorsque je fait un clic-milieu sur le titre d'une fenêtre, ça la ferme : &lt;code lang=&quot;c&quot;&gt; static Button buttons[] = { /* click event mask button function argument */ { ClkWinTitle, 0, Button2, killclient, {0} }, }; &lt;/code&gt; ''Voila, rien de bien compliqué en définitive. On définit d'abord la commande à éxécuter, en lui donnant un nom de fonction au choix. Ensuite, on peut lancer cette commande avec spawn, suivi du nom de la fonction.''

====Modifier la configuration pour les claviers français :====

=====Le problème des touches &quot;chiffre&quot;:=====

Malheureusement, dwm est configuré par défaut pour les claviers anglais. Les chiffres au dessus des lettres de votre clavier ne seront pas lus comme tels, mais comme étant un &quot;&amp;amp;&quot; pour le &quot;1&quot;, un &quot;é&quot; pour le 2, un &quot; pour le &quot;3&quot;... On va donc remédier à tout ça. Le code de nos touches se récupère très facilement avec xev. Il faut lancer xev en console, taper sur une touche, et lire ce qui est retourné. On va donc remplacer cette portion : &lt;code lang=&quot;c&quot;&gt; TAGKEYS( XK_1, 0) TAGKEYS( XK_2, 1) TAGKEYS( XK_3, 2) TAGKEYS( XK_4, 3) TAGKEYS( XK_5, 4) TAGKEYS( XK_6, 5) TAGKEYS( XK_7, 6) TAGKEYS( XK_8, 7) TAGKEYS( XK_9, 8) &lt;/code&gt; Par ceci : &lt;code lang=&quot;c&quot;&gt; TAGKEYS( 0x26, 0) TAGKEYS( 0xe9, 1) TAGKEYS( 0x22, 2) TAGKEYS( 0x27, 3) TAGKEYS( 0x28, 4) TAGKEYS( 0x2d, 5) TAGKEYS( 0xe8, 6) TAGKEYS( 0x5f, 7) TAGKEYS( 0xe7, 8) &lt;/code&gt; Ainsi que ceci : &lt;code lang=&quot;c&quot;&gt; { MODKEY, XK_0, view, {.ui = ~0 } }, { MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } }, &lt;/code&gt; par : &lt;code lang=&quot;c&quot;&gt; { MODKEY, 0xe0, view, {.ui = ~0 } }, { MODKEY|ShiftMask, 0xe0, tag, {.ui = ~0 } },&lt;/code&gt;

Un patch automatisant le tout est disponible ici : [http://dwm.suckless.org/patches/azertykey azertykey]

=====Pour changer d'écran:=====

Il faut françiser la touche &quot;.&quot; pour nos claviers. Donc, remplacer dans le config.h &quot;period&quot; par &quot;semicolon&quot;, car pour nous, c'est le point-virgule : &lt;code lang=&quot;c&quot;&gt; { MODKEY, XK_comma, focusmon, {.i = -1 } }, { MODKEY, XK_semicolon, focusmon, {.i = +1 } }, { MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } }, { MODKEY|ShiftMask, XK_semicolon, tagmon, {.i = +1 } }, &lt;/code&gt; Un config.h françisé est maintenant disponible ici : http://thuban.toile-libre.org/index.php/dwm-en-francais/

===Ajouter un patch:===

Vous pouvez ajouter toutes sortes de fonctionnalités à dwm, en ajoutant des patches. [http://dwm.suckless.org/patches Le site officiel regorge d'informations à ce sujet, et la configuration de chaque patch est expliqué.] De façon générale, pour appliquer un patch, il faudra faire ceci dans le dossier de dwm : &lt;code&gt;patch -p1 &lt; chemin/vers/le/patch.diff &lt;/code&gt; Pour la version tarball (paquet debian inclus) &lt;code&gt;hg patch chemin/vers/le/patch.diff &lt;/code&gt; Pour la version mercurial (hg). Personnellement, j'affectionne le patch [http://dwm.suckless.org/patches/bottom_stack bottom stack] afin d'avoir un agencement des fenetres vertical, et le patch [http://dwm.suckless.org/patches/nametag nametag] pour renommer les tags. Mais je pourrais en mettre plus c'est vrai.

===Avoir un menu pour la souris:===

Il est bien entendu possible d'avoir un menu utilisable à la souris. Je vous invite à lire [http://thuban.toile-libre.org/index.php/un-menu-dans-dwm/ cette page], indiquant plusieurs façons possibles d'obtenir un menu.

===Personnaliser la barre d'état:===

Il est possible d'afficher ce que l'on veut dans la barre d'état. Cela se définit juste avant le lancement de dwm, donc selon les cas dans votre ~/.xinitrc ou autre. Dwm lira ce qui est passé en argument à xsetroot. Cela donnera quelque chose comme ça : &lt;code&gt; while true; do xsetroot -name &quot;$( date +&quot;%F %R&quot; )&quot; sleep 1m # Update time every minute done &amp;amp; exec dwm &lt;/code&gt; Qui affichera la date. Voici mon .xinitrc : &lt;code&gt; /home/xavier/Documents/Scripts/dmenu/dstatus.sh &amp;amp; exec /usr/local/bin/dwm &lt;/code&gt; Vous remarquerez que le lance un script dstatus.sh à part, pour plus de commodité. Ce script récupère plusieurs informations, et les renvoient dans le xsetroot. Ainsi, il y a l'heure, le débit internet, la chaque processeur, le volume sonore, des infos sur la batterie, ce que mpd joue...n peut notamment avoir une barre de progression pour mpd/mplayer/wget... Je met le script [http://pastebin.toile-libre.org/?show=457131 à disposition ici], n'hésitez pas à vous en inspirer!

=='''Conclusion:'''==

Il y a un programme essentiel à utiliser dans dwm : j'ai nommé dmenu. Vous pourrez au fur et à mesure lire des exemples d'utilisation que je posterai [http://thuban.toile-libre.org/Logiciel-libre/Suckless/dwm/dwm_presentation_et_configuration.html ici]. Cette page est à améliorer et il y a beaucoup de choses à préciser. Je vous invite donc à me faire part de vos remarques afin de l'améliorer. Je poste [http://thuban.toile-libre.org/wp-content/uploads/2010/11/config.h ici mon config.h] si vous voulez voir ma configuration.

== Liens externes ==
* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24798 Page de Misterfreeze pour installer proprement dwm sur sa debian]
* [http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=23322 Discussion autour de la configuration de dwm]
* http://wiki.debian.org/fr/Dwm
* [http://dwm.suckless.org Site officiel]
* [http://yeuxdelibad.net/Logiciel-libre/Suckless/dwm/dwm_presentation_et_configuration.html Article inspirant cette page, un peu plus à jour ]

[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Tillings]]</text>
      <sha1>6qutfmln9qkmg379b4mtqd8abu45ogf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5743</id>
      <parentid>5285</parentid>
      <timestamp>2014-08-20T04:51:13Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Obtenir dwm : */ chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="19022">=='''Présentation :'''==

''' ''' [http://dwm.suckless.org Dwm] est le tiling windows manager (Gestionnaire de fenêtres en tuile) développé par l'équipe de [http://suckless.org suckless.org]. Fidèle à leur philosophie, il est écrit en C, permettant ainsi la contribution de chacun au projet, ce langage étant plus que répandu et éprouvé. De plus, cela oblige les codeurs à faire du code propre et léger. 

Le but de ce window manager est avant tout de profiter d'une gestion dynamique des fenêtres, que vous pourrez gérer via des étiquettes (tags) par des raccourcis claviers principalement.

L'avantage pour le simple utilisateur, c'est que le C est très clair, et et que l'on a même pas besoin de tout comprendre pour le configurer. Eh oui, tout a été pensé, il suffit en fait d'éditer rien qu'un tout petit fichier : [http://yeuxdelibad.net/Logiciel-libre/Suckless/dwm/#configh le config.h ], qui a été construit de manière à rendre la configuration accessible même aux non-initiés. De plus, cela évite les multiples fichiers de configuration tiers, on configure dwm une fois, et une fois qu'il est insallé, on n'a plus rien à toucher, tout est dans le binaire! Ainsi, dwm n'a pas à chercher et lire ces fichiers de configuration pour faire son boulot, donc le temps d'éxécution est amélioré! Debian propose un paquet de démonstration. On expliquera ici comment reconstruire un paquet proprement, une fois que l'on a configuré dwm à notre sauce. Le code de dwm a été construit dans le but de pouvoir ajouter des fonctionnalités simplement, sous forme de [http://yeuxdelibad.net/Logiciel-libre/Suckless/dwm/#patch patches.] Vous pourrez alors composer votre gestionnaire de fenêtre, avec les fonctions que vous désirez. Avant de vous présenter ici les différentes configurations possible, astuces et autres, je ne peux continuer sans [http://dwm.suckless.org/screenshots/ une traditionnelle capture d'écran] : 


[[Fichier:dwm-exemple.png|200px|thumb|left|un exemple d'utilisation de dwm]]

=='''Tester sur debian :'''==

''' ''' Pour commencer, on va utiliser la version de test proposée dans les dépots Debian. Test? Eh oui, car la puissance de dwm se retrouve lorsque l'on édite le fichier config.h, et que l'on recompile. Mais rassurez-vous, cela tient du jeu d'enfant! Il est même prévu de reconstruire le paquet! Bien, installez donc le paquet dwm (aptitude install dwm), puis choisissez cette session dans gdm/kdm, ou bien ajoutez à votre .xinitrc :&lt;code&gt;exec dwm&lt;/code&gt; Comme vous le voyez, la configuration par défaut n'est pas la plus belle. Mais on va y remédier! ''' '''

=='''Utilisation :'''==

Dwm a été pensé pour être entièrement piloté au clavier si besoin. Voici les raccourcis définis par défaut. On utilisera dans un premier temps la touche &quot;alt&quot; comme touche &quot;Mod1&quot;. ([http://thuban.toile-libre.org/index.php/dwm-un-tiling-window-manager-pour-vos-besoins/#4-configurer-dwm voir la partie configuration pour plus d'informations])

* Mod1-Shift-Return Lance un terminal
* Mod1-b Affiche/cache la barre
* Mod1-t Paser en mode &quot;tiling&quot;
* Mod1-f Passer en mode flottant.
* Mod1-m Maximise la zone principale
* Mod1-space Passe du mode courant au mode précédent.
* Mod1-j Passe le focus à la fenêtre suivante
* Mod1-k passe le focus à la fenêtre précédente
* Mod1-h Réduis la taille de la zone principale
* Mod1-l Augmente la taille de la zone principale
* Mod1-Return Échange les fenêtres séléctionnées depuis/vers la zone principale
* Mod1-Shift-c Ferme la fenêtre sélectionnée
* Mod1-Shift-space Passe la fenêtre sélectionnée entre le mode tiling et flottant
* Mod1-Tab Sélectionne la vue précédente
* Mod1-Shift-[1..n] Donne à la fenêtre l'étiquette 1...n
* Mod1-Shift-0 Colle toutes les étiquettes à la fenêtre, de 1 à 9.
* Mod1-Control-Shift-[1..n] Ajoute les fenêtres à l'étiquette 1...n 
* Mod1-[1..n] Afficher les fenêtres dont l'étiquette est 1...n
* Mod1-0 Montre/cache toutes les étiquettes.
* Mod1-Control-[1..n] Ajoute les étiquettes 1...n à la vue
* Mod1-Shift-q Quitte dwm



Sur le bureau, on démarre par defaut en mode « divisé » : l'écran est divisé équitablement entre les fenêtres. Voici les modes disponibles par défaut :

* Le mode « flottant » (Mod+f) : Vous pourrez alors déplacer la fenêtre en maintenant la touche Mod appuyée tout en déplacant la fenêtre à la souris, la redimensionner en maintenant Mod et en faisant clic-droit avec la souris.

* Le mode « maximum » (Mod+m) : la fenêtre prend tout l'espace disponible, on ne voit pas les autres fenêtres

* Le mode « divisé » (Mod+t) : Mode écran divisé ou tiling. Une partie maître à gauche, avec une fenêtre plus grande, et une partie à droite avec les fenêtres plus petites.

===Obtenir dwm :===

Dwm est téléchargeable sur le [http://dl.suckless.org/dwm/ site officiel] (prendre l'archive la plus récente et la décompresser), ou vous pouvez télécharger les sources debian : &lt;code&gt;# apt-get source dwm&lt;/code&gt; . Pour les plus aventureux, vous pouver installer la toute dernière mouture de dwm ainsi (paquet mercurial nécéssaire) &lt;code&gt;hg clone http://hg.suckless.org/dwm&lt;/code&gt;. Les deux dernières commandes téléchargent les sources dans le répertoire courant. On se déplace dans le répertoire des sources de dwm : &lt;code&gt;cd dwm-numéro_de_version&lt;/code&gt;

===Installer dwm :===

Dans le dossier contenant les sources, il suffit de taper : &lt;code&gt;make&lt;/code&gt;. Dwm est alors compilé, et présent dans le dossier actuel. Vous pouvez l'installer sur tout le système si vous voulez, en tapant ensuite : &lt;code&gt;make install&lt;/code&gt; Les éxécutables seront dans ce cas le dossier /usr/local/bin par défaut. Pour changer ce répertoire, il faut éditer le fichier config.mk, et changer la ligne : &lt;code&gt;PREFIX = /chemin/du/dossier/destination&lt;/code&gt; vers le chemin de votre choix (votre dossier utilisateur ou autre). Notez toutefois que pour lancer votre session ensuite, il faudra préciser le bon chemin.
 &lt;code&gt; 
#Fichier ~/.xinitrc
#commande pour lancer dwm en tapant startx 
#Lorsque dwm est dans /usr/bin ou /usr/local/bin : 
exec dwm 
#lorsque dwm est dans un dossier quelconque, par exemple dans /home/user/ 
#exec /home/user/dwm &lt;/code&gt; 
Les dépendances nécéssaires sont libX11-dev et éventuellement libxinerama-dev. Intéressons nous comment recréer un paquet debian à partir des sources debian : On récupère les sources, qui seront décompressées dans le dossier courant : &lt;code&gt; apt-get source dwm&lt;/code&gt; On se déplace dans le dossier des sources. J'utilise le caractère &quot;*&quot; pour ne pas avoir à préciser la version de dwm : &lt;code&gt;cd dwm*&lt;/code&gt; Maintenant, on retrouve les fichiers sources de dwm, les mêmes que dans l'archive officielle plus quelques autres relatifs à debian. On configure dwm de la même façon que pour les autres méthode, en éditant le config.def.h. Attention, ici c'est le fichier config.def.h qui sera pris en compte, et qu'il faut donc modifier. Une fois que vous êtes satisfaits, vous pouvez refabriquer le paquet avec cette commande (toujours dans le dossier des sources) : &lt;code&gt;dpkg-buildpackage -rfakeroot -uc -b&lt;/code&gt; Ce qui va créer un fichier dwm-version.deb dans le répertoire supérieur. Pour vous assurez d'avoir les dépendances nécéssaires, tapez ceci (Merci Knucky) : &lt;code&gt;apt-get build-dep dwm&lt;/code&gt; Allons donc chercher le paquet récemment créé : &lt;code&gt;cd ..&lt;/code&gt; Et installons ce paquet (il faut avoir les droits super-utilisateur) : &lt;code&gt; dpkg -i dwm_*.deb &lt;/code&gt; Le paquet est maintenant installé!

Il se peut fichier dwm-5.7.2/debian/desktop/dwm soit mal fait. En effet pour être pris en compte par gdm il faut le renommer avec l'extension &quot;.desktop&quot;. ''' '''

==''' [http://dwm.suckless.org/customisation/ 4. Configurer dwm :]'''==

''' ''' ''[http://dwm.suckless.org/customisation/ Documentation du site officiel à ce sujet]'' On va maintenant se pencher sur les configurations possibles.

===Le fichier config.h :===

Depuis le temps que je vous parle de ce fichier! Il se trouve dans le dossier des sources de dwm. Allons le chercher : &lt;code&gt;cd dwm-numero_de_version&lt;/code&gt; ''Mais, que dis-tu, il n'y a pas de fichier config.h! bouh!'' Ahem... En effet, dis comme ça... Non, je ne me moque pas de vous. En fait, par défaut, le fichier s'appelle config.def.h. C'est en fait un config.h qui sert de modèle. Cependant, si un fichier config.h est présent, ce sera lui qui sera utilisé pour la configuration, sinon ce sera le config.def.h. Je vous invite à copier le fichier config.def.h en config.h, toujours dans le dossier des sources : &lt;code&gt;cp config.def.h config.h&lt;/code&gt; Ainsi, vous gardez un modèle d'origine en cas de besoin. Voici à quoi ressemble le fichier par défaut, j'y rajoute ici des commentaires pour l'expliquer en français. 
http://www.isalo.org/pnopaste/?14

====Donner des règles pour les fenêtres====

Voir aussi : http://dwm.suckless.org/customisation/tagmask Il est possible de définir des règles spécifique à certaines fenêtres. Par exemple, si je veux que transmission n'apparaisse que su le tag 9, il faudra mettre ceci : &lt;code lang=&quot;c&quot;&gt; static const Rule rules[] = { /* class instance title tags mask isfloating monitor */ { &quot;Transmission&quot;, NULL, NULL, 1 &lt;&lt; 8, False, -1 }, }; &lt;/code&gt; Pour récupérer les informations sur une fenêtre, tapez xprop dans une console. Votre curseur va changer de forme. Cliquez alors sur la fenêtre voulue. Vous verrez apparaître dans la console les informations sur la classe, le titre de la fenêtre... Vous l'aurez compris, si vous voulez que la fenêtre flotte, il faudra mettre &quot;True&quot; dans la colonne &quot;isfloating&quot; Pour désigner le tag où l'on veut que la fenêtre apparaisse, c'est un peu plus complexe. Ainsi 1 &lt;&lt; 8 définit le tag 9, 1 &lt;&lt; 7 représente le tag 8, ~0 représente tous les tags, (1 &lt;&lt; 8 ) – 1 définit tous les tags sauf le 9eme.

====Définir vos raccourcis:====

Bien sûr, on peut éxécuter la commande de notre choix via un raccourci clavier, ou même un raccourci souris si on le souhaite. La première étape sera de définir ce raccourci. Il s'agit en fait de faire nos propres fonctions. Repérer ces lignes dans le config.h : &lt;code lang=&quot;c&quot;&gt; /* commands */ static const char *dmenucmd[] = { &quot;dmenu_run&quot;, &quot;-fn&quot;, font, &quot;-nb&quot;, normbgcolor, &quot;-nf&quot;, normfgcolor, &quot;-sb&quot;, selbgcolor, &quot;-sf&quot;, selfgcolor, NULL }; static const char *termcmd[] = { &quot;uxterm&quot;, NULL }; &lt;/code&gt; La première ligne sert à lancer dmenu avec les couleurs de dwm. C'est en fait ce qui se passe lorsque vous tapez le raccourci Mod+P . dmenu est inclus dans le paquet dwm-tools ou suckless-tools, ou[http://tools.suckless.org/dmenu/  téléchargeable sur le site officiel]. La deuxième ligne lance un terminal, c'est ce qui se passe lorsque vous faîtes Mod+Shift+Entrée. Vous pouvez modifier la commande uxterm, par votre terminal favori (xterm, urxvt, xfce4-terminal, lxterminal...). Si vous n'êtes pas sûr, suivez le conseile de MisterFreez, indiquez &quot;x-terminal-emulator&quot; On va ajouter en dessous ces lignes nos propres fonctions! Par exemple, je voudrais ajouter deux raccourcis : l'un pour lancer gajim, l'autre pour couper/activer le son. Il faudra définir deux fonctions sur le même modèle que les précédentes. Donnez leur le nom que vous voulez, du moment que vous vous y retrouvez. Exemple : &lt;code lang=&quot;c&quot;&gt; static const char *gajim[] = { &quot;gajim&quot;, NULL }; static const char *muteson[] = { &quot;amixer&quot;, &quot;-q&quot;, &quot;set&quot;, &quot;Master&quot;, &quot;toggle&quot;, NULL }; &lt;/code&gt; '''Note : '''Remarquez que lorsque une commande contient des espaces, chaque argument doit être entre guillemets suivi d'une virgule. Les commandes finissent toujours par NULL. Bien, maintenant que nos fonctions sont définies, on va les appeler. J'ai envie de lancer gajim lorsque j'appuie sur Mod4+Mod1+i, et couper le son lorsque j'appuie sur la touche multimédia de mon ordinateur associée. Voici ce que ça donnera, dans la section des raccourcis claviers : &lt;code lang=&quot;c&quot;&gt; static Key keys[] = { /*il y a d'autres choses avant....*/ { MODKEY|Mod1, XK_i, spawn, {.v = gajim } }, { 0, 0x1008ff12, spawn, {.v = muteson } }, &lt;/code&gt; ''' Ouhla, ça mérite des explications :''' - Pour définir plusieurs modifieurs, on les sépare par un &quot;|&quot;. - XK_i correspond à la touche &quot;i&quot; - spawn est une fonction dans dwm, qui dit d'éxécuter la fonction désignée - On donne la fonction à éxécuter entre {.v = nom_de_fonction }. Le nom de la fonction est celui définit précédemment. - S'il n'y a pas de modificateur, on met un 0. - 0x1008ff12, c'est le code de ma touche multimédia, que j'ai récupéré en tapant xev en console, puis en faisant fn+&quot;touche bleue&quot; qui coupe le son&quot; Notez qu'il est possible de le faire aussi pour la souris. Par exemple, je veux que lorsque je fais un clique droit sur le texte dans la barre de tâches, ça lance un script que j'ai fait maison. On procédera comme suit :

* 1/On définit la commande du script. Je lui donne le petit nom &quot;deloggue&quot;, car ça me sert à mettre fin à une session

&lt;code lang=&quot;c&quot;&gt; static const char *deloggue[] = { &quot;/home/xavier/Documents/Scripts/exit.sh&quot;, NULL }; &lt;/code&gt;

* 2/ J'appelle cette fonction ensuite avec le clic droit sur le texte.

Dans la partie &quot;souris&quot;, on aura donc : &lt;code lang=&quot;c&quot;&gt; static Button buttons[] = { /* click event mask button function argument */ { ClkStatusText, 0, Button3, spawn, {.v = deloggue } }, }; &lt;/code&gt; On peut aussi modifier les raccourcis déja existants. Je souhaitais que lorsque je fait un clic-milieu sur le titre d'une fenêtre, ça la ferme : &lt;code lang=&quot;c&quot;&gt; static Button buttons[] = { /* click event mask button function argument */ { ClkWinTitle, 0, Button2, killclient, {0} }, }; &lt;/code&gt; ''Voila, rien de bien compliqué en définitive. On définit d'abord la commande à éxécuter, en lui donnant un nom de fonction au choix. Ensuite, on peut lancer cette commande avec spawn, suivi du nom de la fonction.''

====Modifier la configuration pour les claviers français :====

=====Le problème des touches &quot;chiffre&quot;:=====

Malheureusement, dwm est configuré par défaut pour les claviers anglais. Les chiffres au dessus des lettres de votre clavier ne seront pas lus comme tels, mais comme étant un &quot;&amp;amp;&quot; pour le &quot;1&quot;, un &quot;é&quot; pour le 2, un &quot; pour le &quot;3&quot;... On va donc remédier à tout ça. Le code de nos touches se récupère très facilement avec xev. Il faut lancer xev en console, taper sur une touche, et lire ce qui est retourné. On va donc remplacer cette portion : &lt;code lang=&quot;c&quot;&gt; TAGKEYS( XK_1, 0) TAGKEYS( XK_2, 1) TAGKEYS( XK_3, 2) TAGKEYS( XK_4, 3) TAGKEYS( XK_5, 4) TAGKEYS( XK_6, 5) TAGKEYS( XK_7, 6) TAGKEYS( XK_8, 7) TAGKEYS( XK_9, 8) &lt;/code&gt; Par ceci : &lt;code lang=&quot;c&quot;&gt; TAGKEYS( 0x26, 0) TAGKEYS( 0xe9, 1) TAGKEYS( 0x22, 2) TAGKEYS( 0x27, 3) TAGKEYS( 0x28, 4) TAGKEYS( 0x2d, 5) TAGKEYS( 0xe8, 6) TAGKEYS( 0x5f, 7) TAGKEYS( 0xe7, 8) &lt;/code&gt; Ainsi que ceci : &lt;code lang=&quot;c&quot;&gt; { MODKEY, XK_0, view, {.ui = ~0 } }, { MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } }, &lt;/code&gt; par : &lt;code lang=&quot;c&quot;&gt; { MODKEY, 0xe0, view, {.ui = ~0 } }, { MODKEY|ShiftMask, 0xe0, tag, {.ui = ~0 } },&lt;/code&gt;

Un patch automatisant le tout est disponible ici : [http://dwm.suckless.org/patches/azertykey azertykey]

=====Pour changer d'écran:=====

Il faut françiser la touche &quot;.&quot; pour nos claviers. Donc, remplacer dans le config.h &quot;period&quot; par &quot;semicolon&quot;, car pour nous, c'est le point-virgule : &lt;code lang=&quot;c&quot;&gt; { MODKEY, XK_comma, focusmon, {.i = -1 } }, { MODKEY, XK_semicolon, focusmon, {.i = +1 } }, { MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } }, { MODKEY|ShiftMask, XK_semicolon, tagmon, {.i = +1 } }, &lt;/code&gt; Un config.h françisé est maintenant disponible ici : http://thuban.toile-libre.org/index.php/dwm-en-francais/

===Ajouter un patch:===

Vous pouvez ajouter toutes sortes de fonctionnalités à dwm, en ajoutant des patches. [http://dwm.suckless.org/patches Le site officiel regorge d'informations à ce sujet, et la configuration de chaque patch est expliqué.] De façon générale, pour appliquer un patch, il faudra faire ceci dans le dossier de dwm : &lt;code&gt;patch -p1 &lt; chemin/vers/le/patch.diff &lt;/code&gt; Pour la version tarball (paquet debian inclus) &lt;code&gt;hg patch chemin/vers/le/patch.diff &lt;/code&gt; Pour la version mercurial (hg). Personnellement, j'affectionne le patch [http://dwm.suckless.org/patches/bottom_stack bottom stack] afin d'avoir un agencement des fenetres vertical, et le patch [http://dwm.suckless.org/patches/nametag nametag] pour renommer les tags. Mais je pourrais en mettre plus c'est vrai.

===Avoir un menu pour la souris:===

Il est bien entendu possible d'avoir un menu utilisable à la souris. Je vous invite à lire [http://thuban.toile-libre.org/index.php/un-menu-dans-dwm/ cette page], indiquant plusieurs façons possibles d'obtenir un menu.

===Personnaliser la barre d'état:===

Il est possible d'afficher ce que l'on veut dans la barre d'état. Cela se définit juste avant le lancement de dwm, donc selon les cas dans votre ~/.xinitrc ou autre. Dwm lira ce qui est passé en argument à xsetroot. Cela donnera quelque chose comme ça : &lt;code&gt; while true; do xsetroot -name &quot;$( date +&quot;%F %R&quot; )&quot; sleep 1m # Update time every minute done &amp;amp; exec dwm &lt;/code&gt; Qui affichera la date. Voici mon .xinitrc : &lt;code&gt; /home/xavier/Documents/Scripts/dmenu/dstatus.sh &amp;amp; exec /usr/local/bin/dwm &lt;/code&gt; Vous remarquerez que le lance un script dstatus.sh à part, pour plus de commodité. Ce script récupère plusieurs informations, et les renvoient dans le xsetroot. Ainsi, il y a l'heure, le débit internet, la chaque processeur, le volume sonore, des infos sur la batterie, ce que mpd joue...n peut notamment avoir une barre de progression pour mpd/mplayer/wget... Je met le script [http://pastebin.toile-libre.org/?show=457131 à disposition ici], n'hésitez pas à vous en inspirer!

=='''Conclusion:'''==

Il y a un programme essentiel à utiliser dans dwm : j'ai nommé dmenu. Vous pourrez au fur et à mesure lire des exemples d'utilisation que je posterai [http://thuban.toile-libre.org/Logiciel-libre/Suckless/dwm/dwm_presentation_et_configuration.html ici]. Cette page est à améliorer et il y a beaucoup de choses à préciser. Je vous invite donc à me faire part de vos remarques afin de l'améliorer. Je poste [http://thuban.toile-libre.org/wp-content/uploads/2010/11/config.h ici mon config.h] si vous voulez voir ma configuration.

== Liens externes ==
* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24798 Page de Misterfreeze pour installer proprement dwm sur sa debian]
* [http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=23322 Discussion autour de la configuration de dwm]
* http://wiki.debian.org/fr/Dwm
* [http://dwm.suckless.org Site officiel]
* [http://yeuxdelibad.net/Logiciel-libre/Suckless/dwm/dwm_presentation_et_configuration.html Article inspirant cette page, un peu plus à jour ]

[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Tillings]]</text>
      <sha1>m4gitb1l4omhn5f5uhjobycwprgzyux</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5744</id>
      <parentid>5743</parentid>
      <timestamp>2014-08-20T04:52:34Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Installer dwm : */ chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="19058">=='''Présentation :'''==

''' ''' [http://dwm.suckless.org Dwm] est le tiling windows manager (Gestionnaire de fenêtres en tuile) développé par l'équipe de [http://suckless.org suckless.org]. Fidèle à leur philosophie, il est écrit en C, permettant ainsi la contribution de chacun au projet, ce langage étant plus que répandu et éprouvé. De plus, cela oblige les codeurs à faire du code propre et léger. 

Le but de ce window manager est avant tout de profiter d'une gestion dynamique des fenêtres, que vous pourrez gérer via des étiquettes (tags) par des raccourcis claviers principalement.

L'avantage pour le simple utilisateur, c'est que le C est très clair, et et que l'on a même pas besoin de tout comprendre pour le configurer. Eh oui, tout a été pensé, il suffit en fait d'éditer rien qu'un tout petit fichier : [http://yeuxdelibad.net/Logiciel-libre/Suckless/dwm/#configh le config.h ], qui a été construit de manière à rendre la configuration accessible même aux non-initiés. De plus, cela évite les multiples fichiers de configuration tiers, on configure dwm une fois, et une fois qu'il est insallé, on n'a plus rien à toucher, tout est dans le binaire! Ainsi, dwm n'a pas à chercher et lire ces fichiers de configuration pour faire son boulot, donc le temps d'éxécution est amélioré! Debian propose un paquet de démonstration. On expliquera ici comment reconstruire un paquet proprement, une fois que l'on a configuré dwm à notre sauce. Le code de dwm a été construit dans le but de pouvoir ajouter des fonctionnalités simplement, sous forme de [http://yeuxdelibad.net/Logiciel-libre/Suckless/dwm/#patch patches.] Vous pourrez alors composer votre gestionnaire de fenêtre, avec les fonctions que vous désirez. Avant de vous présenter ici les différentes configurations possible, astuces et autres, je ne peux continuer sans [http://dwm.suckless.org/screenshots/ une traditionnelle capture d'écran] : 


[[Fichier:dwm-exemple.png|200px|thumb|left|un exemple d'utilisation de dwm]]

=='''Tester sur debian :'''==

''' ''' Pour commencer, on va utiliser la version de test proposée dans les dépots Debian. Test? Eh oui, car la puissance de dwm se retrouve lorsque l'on édite le fichier config.h, et que l'on recompile. Mais rassurez-vous, cela tient du jeu d'enfant! Il est même prévu de reconstruire le paquet! Bien, installez donc le paquet dwm (aptitude install dwm), puis choisissez cette session dans gdm/kdm, ou bien ajoutez à votre .xinitrc :&lt;code&gt;exec dwm&lt;/code&gt; Comme vous le voyez, la configuration par défaut n'est pas la plus belle. Mais on va y remédier! ''' '''

=='''Utilisation :'''==

Dwm a été pensé pour être entièrement piloté au clavier si besoin. Voici les raccourcis définis par défaut. On utilisera dans un premier temps la touche &quot;alt&quot; comme touche &quot;Mod1&quot;. ([http://thuban.toile-libre.org/index.php/dwm-un-tiling-window-manager-pour-vos-besoins/#4-configurer-dwm voir la partie configuration pour plus d'informations])

* Mod1-Shift-Return Lance un terminal
* Mod1-b Affiche/cache la barre
* Mod1-t Paser en mode &quot;tiling&quot;
* Mod1-f Passer en mode flottant.
* Mod1-m Maximise la zone principale
* Mod1-space Passe du mode courant au mode précédent.
* Mod1-j Passe le focus à la fenêtre suivante
* Mod1-k passe le focus à la fenêtre précédente
* Mod1-h Réduis la taille de la zone principale
* Mod1-l Augmente la taille de la zone principale
* Mod1-Return Échange les fenêtres séléctionnées depuis/vers la zone principale
* Mod1-Shift-c Ferme la fenêtre sélectionnée
* Mod1-Shift-space Passe la fenêtre sélectionnée entre le mode tiling et flottant
* Mod1-Tab Sélectionne la vue précédente
* Mod1-Shift-[1..n] Donne à la fenêtre l'étiquette 1...n
* Mod1-Shift-0 Colle toutes les étiquettes à la fenêtre, de 1 à 9.
* Mod1-Control-Shift-[1..n] Ajoute les fenêtres à l'étiquette 1...n 
* Mod1-[1..n] Afficher les fenêtres dont l'étiquette est 1...n
* Mod1-0 Montre/cache toutes les étiquettes.
* Mod1-Control-[1..n] Ajoute les étiquettes 1...n à la vue
* Mod1-Shift-q Quitte dwm



Sur le bureau, on démarre par defaut en mode « divisé » : l'écran est divisé équitablement entre les fenêtres. Voici les modes disponibles par défaut :

* Le mode « flottant » (Mod+f) : Vous pourrez alors déplacer la fenêtre en maintenant la touche Mod appuyée tout en déplacant la fenêtre à la souris, la redimensionner en maintenant Mod et en faisant clic-droit avec la souris.

* Le mode « maximum » (Mod+m) : la fenêtre prend tout l'espace disponible, on ne voit pas les autres fenêtres

* Le mode « divisé » (Mod+t) : Mode écran divisé ou tiling. Une partie maître à gauche, avec une fenêtre plus grande, et une partie à droite avec les fenêtres plus petites.

===Obtenir dwm :===

Dwm est téléchargeable sur le [http://dl.suckless.org/dwm/ site officiel] (prendre l'archive la plus récente et la décompresser), ou vous pouvez télécharger les sources debian : &lt;code&gt;# apt-get source dwm&lt;/code&gt; . Pour les plus aventureux, vous pouver installer la toute dernière mouture de dwm ainsi (paquet mercurial nécéssaire) &lt;code&gt;hg clone http://hg.suckless.org/dwm&lt;/code&gt;. Les deux dernières commandes téléchargent les sources dans le répertoire courant. On se déplace dans le répertoire des sources de dwm : &lt;code&gt;cd dwm-numéro_de_version&lt;/code&gt;

===Installer dwm :===

Dans le répertoire contenant les sources, il suffit de taper : &lt;code&gt;make&lt;/code&gt;. Dwm est alors compilé, et présent dans le répertoire actuel. Vous pouvez l'installer sur tout le système si vous voulez, en tapant ensuite : &lt;code&gt;make install&lt;/code&gt; Les éxécutables seront dans ce cas le répertoire /usr/local/bin par défaut. Pour changer ce répertoire, il faut éditer le fichier config.mk, et changer la ligne : &lt;code&gt;PREFIX = /chemin/du/répertoire/destination&lt;/code&gt; vers le chemin de votre choix (votre répertoire utilisateur ou autre). Notez toutefois que pour lancer votre session ensuite, il faudra préciser le bon chemin.
 &lt;code&gt; 
#Fichier ~/.xinitrc
#commande pour lancer dwm en tapant startx 
#Lorsque dwm est dans /usr/bin ou /usr/local/bin : 
exec dwm 
#lorsque dwm est dans un répertoire quelconque, par exemple dans /home/user/ 
#exec /home/user/dwm &lt;/code&gt; 
Les dépendances nécéssaires sont libX11-dev et éventuellement libxinerama-dev. Intéressons nous comment recréer un paquet debian à partir des sources debian : On récupère les sources, qui seront décompressées dans le répertoire courant : &lt;code&gt; apt-get source dwm&lt;/code&gt; On se déplace dans le répertoire des sources. J'utilise le caractère &quot;*&quot; pour ne pas avoir à préciser la version de dwm : &lt;code&gt;cd dwm*&lt;/code&gt; Maintenant, on retrouve les fichiers sources de dwm, les mêmes que dans l'archive officielle plus quelques autres relatifs à debian. On configure dwm de la même façon que pour les autres méthode, en éditant le config.def.h. Attention, ici c'est le fichier config.def.h qui sera pris en compte, et qu'il faut donc modifier. Une fois que vous êtes satisfaits, vous pouvez refabriquer le paquet avec cette commande (toujours dans le répertoire des sources) : &lt;code&gt;dpkg-buildpackage -rfakeroot -uc -b&lt;/code&gt; Ce qui va créer un fichier dwm-version.deb dans le répertoire supérieur. Pour vous assurez d'avoir les dépendances nécéssaires, tapez ceci (Merci Knucky) : &lt;code&gt;apt-get build-dep dwm&lt;/code&gt; Allons donc chercher le paquet récemment créé : &lt;code&gt;cd ..&lt;/code&gt; Et installons ce paquet (il faut avoir les droits super-utilisateur) : &lt;code&gt; dpkg -i dwm_*.deb &lt;/code&gt; Le paquet est maintenant installé!

Il se peut fichier dwm-5.7.2/debian/desktop/dwm soit mal fait. En effet pour être pris en compte par gdm il faut le renommer avec l'extension &quot;.desktop&quot;. ''' '''

==''' [http://dwm.suckless.org/customisation/ 4. Configurer dwm :]'''==

''' ''' ''[http://dwm.suckless.org/customisation/ Documentation du site officiel à ce sujet]'' On va maintenant se pencher sur les configurations possibles.

===Le fichier config.h :===

Depuis le temps que je vous parle de ce fichier! Il se trouve dans le dossier des sources de dwm. Allons le chercher : &lt;code&gt;cd dwm-numero_de_version&lt;/code&gt; ''Mais, que dis-tu, il n'y a pas de fichier config.h! bouh!'' Ahem... En effet, dis comme ça... Non, je ne me moque pas de vous. En fait, par défaut, le fichier s'appelle config.def.h. C'est en fait un config.h qui sert de modèle. Cependant, si un fichier config.h est présent, ce sera lui qui sera utilisé pour la configuration, sinon ce sera le config.def.h. Je vous invite à copier le fichier config.def.h en config.h, toujours dans le dossier des sources : &lt;code&gt;cp config.def.h config.h&lt;/code&gt; Ainsi, vous gardez un modèle d'origine en cas de besoin. Voici à quoi ressemble le fichier par défaut, j'y rajoute ici des commentaires pour l'expliquer en français. 
http://www.isalo.org/pnopaste/?14

====Donner des règles pour les fenêtres====

Voir aussi : http://dwm.suckless.org/customisation/tagmask Il est possible de définir des règles spécifique à certaines fenêtres. Par exemple, si je veux que transmission n'apparaisse que su le tag 9, il faudra mettre ceci : &lt;code lang=&quot;c&quot;&gt; static const Rule rules[] = { /* class instance title tags mask isfloating monitor */ { &quot;Transmission&quot;, NULL, NULL, 1 &lt;&lt; 8, False, -1 }, }; &lt;/code&gt; Pour récupérer les informations sur une fenêtre, tapez xprop dans une console. Votre curseur va changer de forme. Cliquez alors sur la fenêtre voulue. Vous verrez apparaître dans la console les informations sur la classe, le titre de la fenêtre... Vous l'aurez compris, si vous voulez que la fenêtre flotte, il faudra mettre &quot;True&quot; dans la colonne &quot;isfloating&quot; Pour désigner le tag où l'on veut que la fenêtre apparaisse, c'est un peu plus complexe. Ainsi 1 &lt;&lt; 8 définit le tag 9, 1 &lt;&lt; 7 représente le tag 8, ~0 représente tous les tags, (1 &lt;&lt; 8 ) – 1 définit tous les tags sauf le 9eme.

====Définir vos raccourcis:====

Bien sûr, on peut éxécuter la commande de notre choix via un raccourci clavier, ou même un raccourci souris si on le souhaite. La première étape sera de définir ce raccourci. Il s'agit en fait de faire nos propres fonctions. Repérer ces lignes dans le config.h : &lt;code lang=&quot;c&quot;&gt; /* commands */ static const char *dmenucmd[] = { &quot;dmenu_run&quot;, &quot;-fn&quot;, font, &quot;-nb&quot;, normbgcolor, &quot;-nf&quot;, normfgcolor, &quot;-sb&quot;, selbgcolor, &quot;-sf&quot;, selfgcolor, NULL }; static const char *termcmd[] = { &quot;uxterm&quot;, NULL }; &lt;/code&gt; La première ligne sert à lancer dmenu avec les couleurs de dwm. C'est en fait ce qui se passe lorsque vous tapez le raccourci Mod+P . dmenu est inclus dans le paquet dwm-tools ou suckless-tools, ou[http://tools.suckless.org/dmenu/  téléchargeable sur le site officiel]. La deuxième ligne lance un terminal, c'est ce qui se passe lorsque vous faîtes Mod+Shift+Entrée. Vous pouvez modifier la commande uxterm, par votre terminal favori (xterm, urxvt, xfce4-terminal, lxterminal...). Si vous n'êtes pas sûr, suivez le conseile de MisterFreez, indiquez &quot;x-terminal-emulator&quot; On va ajouter en dessous ces lignes nos propres fonctions! Par exemple, je voudrais ajouter deux raccourcis : l'un pour lancer gajim, l'autre pour couper/activer le son. Il faudra définir deux fonctions sur le même modèle que les précédentes. Donnez leur le nom que vous voulez, du moment que vous vous y retrouvez. Exemple : &lt;code lang=&quot;c&quot;&gt; static const char *gajim[] = { &quot;gajim&quot;, NULL }; static const char *muteson[] = { &quot;amixer&quot;, &quot;-q&quot;, &quot;set&quot;, &quot;Master&quot;, &quot;toggle&quot;, NULL }; &lt;/code&gt; '''Note : '''Remarquez que lorsque une commande contient des espaces, chaque argument doit être entre guillemets suivi d'une virgule. Les commandes finissent toujours par NULL. Bien, maintenant que nos fonctions sont définies, on va les appeler. J'ai envie de lancer gajim lorsque j'appuie sur Mod4+Mod1+i, et couper le son lorsque j'appuie sur la touche multimédia de mon ordinateur associée. Voici ce que ça donnera, dans la section des raccourcis claviers : &lt;code lang=&quot;c&quot;&gt; static Key keys[] = { /*il y a d'autres choses avant....*/ { MODKEY|Mod1, XK_i, spawn, {.v = gajim } }, { 0, 0x1008ff12, spawn, {.v = muteson } }, &lt;/code&gt; ''' Ouhla, ça mérite des explications :''' - Pour définir plusieurs modifieurs, on les sépare par un &quot;|&quot;. - XK_i correspond à la touche &quot;i&quot; - spawn est une fonction dans dwm, qui dit d'éxécuter la fonction désignée - On donne la fonction à éxécuter entre {.v = nom_de_fonction }. Le nom de la fonction est celui définit précédemment. - S'il n'y a pas de modificateur, on met un 0. - 0x1008ff12, c'est le code de ma touche multimédia, que j'ai récupéré en tapant xev en console, puis en faisant fn+&quot;touche bleue&quot; qui coupe le son&quot; Notez qu'il est possible de le faire aussi pour la souris. Par exemple, je veux que lorsque je fais un clique droit sur le texte dans la barre de tâches, ça lance un script que j'ai fait maison. On procédera comme suit :

* 1/On définit la commande du script. Je lui donne le petit nom &quot;deloggue&quot;, car ça me sert à mettre fin à une session

&lt;code lang=&quot;c&quot;&gt; static const char *deloggue[] = { &quot;/home/xavier/Documents/Scripts/exit.sh&quot;, NULL }; &lt;/code&gt;

* 2/ J'appelle cette fonction ensuite avec le clic droit sur le texte.

Dans la partie &quot;souris&quot;, on aura donc : &lt;code lang=&quot;c&quot;&gt; static Button buttons[] = { /* click event mask button function argument */ { ClkStatusText, 0, Button3, spawn, {.v = deloggue } }, }; &lt;/code&gt; On peut aussi modifier les raccourcis déja existants. Je souhaitais que lorsque je fait un clic-milieu sur le titre d'une fenêtre, ça la ferme : &lt;code lang=&quot;c&quot;&gt; static Button buttons[] = { /* click event mask button function argument */ { ClkWinTitle, 0, Button2, killclient, {0} }, }; &lt;/code&gt; ''Voila, rien de bien compliqué en définitive. On définit d'abord la commande à éxécuter, en lui donnant un nom de fonction au choix. Ensuite, on peut lancer cette commande avec spawn, suivi du nom de la fonction.''

====Modifier la configuration pour les claviers français :====

=====Le problème des touches &quot;chiffre&quot;:=====

Malheureusement, dwm est configuré par défaut pour les claviers anglais. Les chiffres au dessus des lettres de votre clavier ne seront pas lus comme tels, mais comme étant un &quot;&amp;amp;&quot; pour le &quot;1&quot;, un &quot;é&quot; pour le 2, un &quot; pour le &quot;3&quot;... On va donc remédier à tout ça. Le code de nos touches se récupère très facilement avec xev. Il faut lancer xev en console, taper sur une touche, et lire ce qui est retourné. On va donc remplacer cette portion : &lt;code lang=&quot;c&quot;&gt; TAGKEYS( XK_1, 0) TAGKEYS( XK_2, 1) TAGKEYS( XK_3, 2) TAGKEYS( XK_4, 3) TAGKEYS( XK_5, 4) TAGKEYS( XK_6, 5) TAGKEYS( XK_7, 6) TAGKEYS( XK_8, 7) TAGKEYS( XK_9, 8) &lt;/code&gt; Par ceci : &lt;code lang=&quot;c&quot;&gt; TAGKEYS( 0x26, 0) TAGKEYS( 0xe9, 1) TAGKEYS( 0x22, 2) TAGKEYS( 0x27, 3) TAGKEYS( 0x28, 4) TAGKEYS( 0x2d, 5) TAGKEYS( 0xe8, 6) TAGKEYS( 0x5f, 7) TAGKEYS( 0xe7, 8) &lt;/code&gt; Ainsi que ceci : &lt;code lang=&quot;c&quot;&gt; { MODKEY, XK_0, view, {.ui = ~0 } }, { MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } }, &lt;/code&gt; par : &lt;code lang=&quot;c&quot;&gt; { MODKEY, 0xe0, view, {.ui = ~0 } }, { MODKEY|ShiftMask, 0xe0, tag, {.ui = ~0 } },&lt;/code&gt;

Un patch automatisant le tout est disponible ici : [http://dwm.suckless.org/patches/azertykey azertykey]

=====Pour changer d'écran:=====

Il faut françiser la touche &quot;.&quot; pour nos claviers. Donc, remplacer dans le config.h &quot;period&quot; par &quot;semicolon&quot;, car pour nous, c'est le point-virgule : &lt;code lang=&quot;c&quot;&gt; { MODKEY, XK_comma, focusmon, {.i = -1 } }, { MODKEY, XK_semicolon, focusmon, {.i = +1 } }, { MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } }, { MODKEY|ShiftMask, XK_semicolon, tagmon, {.i = +1 } }, &lt;/code&gt; Un config.h françisé est maintenant disponible ici : http://thuban.toile-libre.org/index.php/dwm-en-francais/

===Ajouter un patch:===

Vous pouvez ajouter toutes sortes de fonctionnalités à dwm, en ajoutant des patches. [http://dwm.suckless.org/patches Le site officiel regorge d'informations à ce sujet, et la configuration de chaque patch est expliqué.] De façon générale, pour appliquer un patch, il faudra faire ceci dans le dossier de dwm : &lt;code&gt;patch -p1 &lt; chemin/vers/le/patch.diff &lt;/code&gt; Pour la version tarball (paquet debian inclus) &lt;code&gt;hg patch chemin/vers/le/patch.diff &lt;/code&gt; Pour la version mercurial (hg). Personnellement, j'affectionne le patch [http://dwm.suckless.org/patches/bottom_stack bottom stack] afin d'avoir un agencement des fenetres vertical, et le patch [http://dwm.suckless.org/patches/nametag nametag] pour renommer les tags. Mais je pourrais en mettre plus c'est vrai.

===Avoir un menu pour la souris:===

Il est bien entendu possible d'avoir un menu utilisable à la souris. Je vous invite à lire [http://thuban.toile-libre.org/index.php/un-menu-dans-dwm/ cette page], indiquant plusieurs façons possibles d'obtenir un menu.

===Personnaliser la barre d'état:===

Il est possible d'afficher ce que l'on veut dans la barre d'état. Cela se définit juste avant le lancement de dwm, donc selon les cas dans votre ~/.xinitrc ou autre. Dwm lira ce qui est passé en argument à xsetroot. Cela donnera quelque chose comme ça : &lt;code&gt; while true; do xsetroot -name &quot;$( date +&quot;%F %R&quot; )&quot; sleep 1m # Update time every minute done &amp;amp; exec dwm &lt;/code&gt; Qui affichera la date. Voici mon .xinitrc : &lt;code&gt; /home/xavier/Documents/Scripts/dmenu/dstatus.sh &amp;amp; exec /usr/local/bin/dwm &lt;/code&gt; Vous remarquerez que le lance un script dstatus.sh à part, pour plus de commodité. Ce script récupère plusieurs informations, et les renvoient dans le xsetroot. Ainsi, il y a l'heure, le débit internet, la chaque processeur, le volume sonore, des infos sur la batterie, ce que mpd joue...n peut notamment avoir une barre de progression pour mpd/mplayer/wget... Je met le script [http://pastebin.toile-libre.org/?show=457131 à disposition ici], n'hésitez pas à vous en inspirer!

=='''Conclusion:'''==

Il y a un programme essentiel à utiliser dans dwm : j'ai nommé dmenu. Vous pourrez au fur et à mesure lire des exemples d'utilisation que je posterai [http://thuban.toile-libre.org/Logiciel-libre/Suckless/dwm/dwm_presentation_et_configuration.html ici]. Cette page est à améliorer et il y a beaucoup de choses à préciser. Je vous invite donc à me faire part de vos remarques afin de l'améliorer. Je poste [http://thuban.toile-libre.org/wp-content/uploads/2010/11/config.h ici mon config.h] si vous voulez voir ma configuration.

== Liens externes ==
* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24798 Page de Misterfreeze pour installer proprement dwm sur sa debian]
* [http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=23322 Discussion autour de la configuration de dwm]
* http://wiki.debian.org/fr/Dwm
* [http://dwm.suckless.org Site officiel]
* [http://yeuxdelibad.net/Logiciel-libre/Suckless/dwm/dwm_presentation_et_configuration.html Article inspirant cette page, un peu plus à jour ]

[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Tillings]]</text>
      <sha1>lwiitt9ryrdbedboaj2ie65lvn5prrl</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5745</id>
      <parentid>5744</parentid>
      <timestamp>2014-08-20T04:53:14Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Le fichier config.h : */ chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="19066">=='''Présentation :'''==

''' ''' [http://dwm.suckless.org Dwm] est le tiling windows manager (Gestionnaire de fenêtres en tuile) développé par l'équipe de [http://suckless.org suckless.org]. Fidèle à leur philosophie, il est écrit en C, permettant ainsi la contribution de chacun au projet, ce langage étant plus que répandu et éprouvé. De plus, cela oblige les codeurs à faire du code propre et léger. 

Le but de ce window manager est avant tout de profiter d'une gestion dynamique des fenêtres, que vous pourrez gérer via des étiquettes (tags) par des raccourcis claviers principalement.

L'avantage pour le simple utilisateur, c'est que le C est très clair, et et que l'on a même pas besoin de tout comprendre pour le configurer. Eh oui, tout a été pensé, il suffit en fait d'éditer rien qu'un tout petit fichier : [http://yeuxdelibad.net/Logiciel-libre/Suckless/dwm/#configh le config.h ], qui a été construit de manière à rendre la configuration accessible même aux non-initiés. De plus, cela évite les multiples fichiers de configuration tiers, on configure dwm une fois, et une fois qu'il est insallé, on n'a plus rien à toucher, tout est dans le binaire! Ainsi, dwm n'a pas à chercher et lire ces fichiers de configuration pour faire son boulot, donc le temps d'éxécution est amélioré! Debian propose un paquet de démonstration. On expliquera ici comment reconstruire un paquet proprement, une fois que l'on a configuré dwm à notre sauce. Le code de dwm a été construit dans le but de pouvoir ajouter des fonctionnalités simplement, sous forme de [http://yeuxdelibad.net/Logiciel-libre/Suckless/dwm/#patch patches.] Vous pourrez alors composer votre gestionnaire de fenêtre, avec les fonctions que vous désirez. Avant de vous présenter ici les différentes configurations possible, astuces et autres, je ne peux continuer sans [http://dwm.suckless.org/screenshots/ une traditionnelle capture d'écran] : 


[[Fichier:dwm-exemple.png|200px|thumb|left|un exemple d'utilisation de dwm]]

=='''Tester sur debian :'''==

''' ''' Pour commencer, on va utiliser la version de test proposée dans les dépots Debian. Test? Eh oui, car la puissance de dwm se retrouve lorsque l'on édite le fichier config.h, et que l'on recompile. Mais rassurez-vous, cela tient du jeu d'enfant! Il est même prévu de reconstruire le paquet! Bien, installez donc le paquet dwm (aptitude install dwm), puis choisissez cette session dans gdm/kdm, ou bien ajoutez à votre .xinitrc :&lt;code&gt;exec dwm&lt;/code&gt; Comme vous le voyez, la configuration par défaut n'est pas la plus belle. Mais on va y remédier! ''' '''

=='''Utilisation :'''==

Dwm a été pensé pour être entièrement piloté au clavier si besoin. Voici les raccourcis définis par défaut. On utilisera dans un premier temps la touche &quot;alt&quot; comme touche &quot;Mod1&quot;. ([http://thuban.toile-libre.org/index.php/dwm-un-tiling-window-manager-pour-vos-besoins/#4-configurer-dwm voir la partie configuration pour plus d'informations])

* Mod1-Shift-Return Lance un terminal
* Mod1-b Affiche/cache la barre
* Mod1-t Paser en mode &quot;tiling&quot;
* Mod1-f Passer en mode flottant.
* Mod1-m Maximise la zone principale
* Mod1-space Passe du mode courant au mode précédent.
* Mod1-j Passe le focus à la fenêtre suivante
* Mod1-k passe le focus à la fenêtre précédente
* Mod1-h Réduis la taille de la zone principale
* Mod1-l Augmente la taille de la zone principale
* Mod1-Return Échange les fenêtres séléctionnées depuis/vers la zone principale
* Mod1-Shift-c Ferme la fenêtre sélectionnée
* Mod1-Shift-space Passe la fenêtre sélectionnée entre le mode tiling et flottant
* Mod1-Tab Sélectionne la vue précédente
* Mod1-Shift-[1..n] Donne à la fenêtre l'étiquette 1...n
* Mod1-Shift-0 Colle toutes les étiquettes à la fenêtre, de 1 à 9.
* Mod1-Control-Shift-[1..n] Ajoute les fenêtres à l'étiquette 1...n 
* Mod1-[1..n] Afficher les fenêtres dont l'étiquette est 1...n
* Mod1-0 Montre/cache toutes les étiquettes.
* Mod1-Control-[1..n] Ajoute les étiquettes 1...n à la vue
* Mod1-Shift-q Quitte dwm



Sur le bureau, on démarre par defaut en mode « divisé » : l'écran est divisé équitablement entre les fenêtres. Voici les modes disponibles par défaut :

* Le mode « flottant » (Mod+f) : Vous pourrez alors déplacer la fenêtre en maintenant la touche Mod appuyée tout en déplacant la fenêtre à la souris, la redimensionner en maintenant Mod et en faisant clic-droit avec la souris.

* Le mode « maximum » (Mod+m) : la fenêtre prend tout l'espace disponible, on ne voit pas les autres fenêtres

* Le mode « divisé » (Mod+t) : Mode écran divisé ou tiling. Une partie maître à gauche, avec une fenêtre plus grande, et une partie à droite avec les fenêtres plus petites.

===Obtenir dwm :===

Dwm est téléchargeable sur le [http://dl.suckless.org/dwm/ site officiel] (prendre l'archive la plus récente et la décompresser), ou vous pouvez télécharger les sources debian : &lt;code&gt;# apt-get source dwm&lt;/code&gt; . Pour les plus aventureux, vous pouver installer la toute dernière mouture de dwm ainsi (paquet mercurial nécéssaire) &lt;code&gt;hg clone http://hg.suckless.org/dwm&lt;/code&gt;. Les deux dernières commandes téléchargent les sources dans le répertoire courant. On se déplace dans le répertoire des sources de dwm : &lt;code&gt;cd dwm-numéro_de_version&lt;/code&gt;

===Installer dwm :===

Dans le répertoire contenant les sources, il suffit de taper : &lt;code&gt;make&lt;/code&gt;. Dwm est alors compilé, et présent dans le répertoire actuel. Vous pouvez l'installer sur tout le système si vous voulez, en tapant ensuite : &lt;code&gt;make install&lt;/code&gt; Les éxécutables seront dans ce cas le répertoire /usr/local/bin par défaut. Pour changer ce répertoire, il faut éditer le fichier config.mk, et changer la ligne : &lt;code&gt;PREFIX = /chemin/du/répertoire/destination&lt;/code&gt; vers le chemin de votre choix (votre répertoire utilisateur ou autre). Notez toutefois que pour lancer votre session ensuite, il faudra préciser le bon chemin.
 &lt;code&gt; 
#Fichier ~/.xinitrc
#commande pour lancer dwm en tapant startx 
#Lorsque dwm est dans /usr/bin ou /usr/local/bin : 
exec dwm 
#lorsque dwm est dans un répertoire quelconque, par exemple dans /home/user/ 
#exec /home/user/dwm &lt;/code&gt; 
Les dépendances nécéssaires sont libX11-dev et éventuellement libxinerama-dev. Intéressons nous comment recréer un paquet debian à partir des sources debian : On récupère les sources, qui seront décompressées dans le répertoire courant : &lt;code&gt; apt-get source dwm&lt;/code&gt; On se déplace dans le répertoire des sources. J'utilise le caractère &quot;*&quot; pour ne pas avoir à préciser la version de dwm : &lt;code&gt;cd dwm*&lt;/code&gt; Maintenant, on retrouve les fichiers sources de dwm, les mêmes que dans l'archive officielle plus quelques autres relatifs à debian. On configure dwm de la même façon que pour les autres méthode, en éditant le config.def.h. Attention, ici c'est le fichier config.def.h qui sera pris en compte, et qu'il faut donc modifier. Une fois que vous êtes satisfaits, vous pouvez refabriquer le paquet avec cette commande (toujours dans le répertoire des sources) : &lt;code&gt;dpkg-buildpackage -rfakeroot -uc -b&lt;/code&gt; Ce qui va créer un fichier dwm-version.deb dans le répertoire supérieur. Pour vous assurez d'avoir les dépendances nécéssaires, tapez ceci (Merci Knucky) : &lt;code&gt;apt-get build-dep dwm&lt;/code&gt; Allons donc chercher le paquet récemment créé : &lt;code&gt;cd ..&lt;/code&gt; Et installons ce paquet (il faut avoir les droits super-utilisateur) : &lt;code&gt; dpkg -i dwm_*.deb &lt;/code&gt; Le paquet est maintenant installé!

Il se peut fichier dwm-5.7.2/debian/desktop/dwm soit mal fait. En effet pour être pris en compte par gdm il faut le renommer avec l'extension &quot;.desktop&quot;. ''' '''

==''' [http://dwm.suckless.org/customisation/ 4. Configurer dwm :]'''==

''' ''' ''[http://dwm.suckless.org/customisation/ Documentation du site officiel à ce sujet]'' On va maintenant se pencher sur les configurations possibles.

===Le fichier config.h :===

Depuis le temps que je vous parle de ce fichier! Il se trouve dans le répertoire des sources de dwm. Allons le chercher : &lt;code&gt;cd dwm-numero_de_version&lt;/code&gt; ''Mais, que dis-tu, il n'y a pas de fichier config.h! bouh!'' Ahem... En effet, dis comme ça... Non, je ne me moque pas de vous. En fait, par défaut, le fichier s'appelle config.def.h. C'est en fait un config.h qui sert de modèle. Cependant, si un fichier config.h est présent, ce sera lui qui sera utilisé pour la configuration, sinon ce sera le config.def.h. Je vous invite à copier le fichier config.def.h en config.h, toujours dans le répertoire des sources : &lt;code&gt;cp config.def.h config.h&lt;/code&gt; Ainsi, vous gardez un modèle d'origine en cas de besoin. Voici à quoi ressemble le fichier par défaut, j'y rajoute ici des commentaires pour l'expliquer en français. 
http://www.isalo.org/pnopaste/?14

====Donner des règles pour les fenêtres====

Voir aussi : http://dwm.suckless.org/customisation/tagmask Il est possible de définir des règles spécifique à certaines fenêtres. Par exemple, si je veux que transmission n'apparaisse que su le tag 9, il faudra mettre ceci : &lt;code lang=&quot;c&quot;&gt; static const Rule rules[] = { /* class instance title tags mask isfloating monitor */ { &quot;Transmission&quot;, NULL, NULL, 1 &lt;&lt; 8, False, -1 }, }; &lt;/code&gt; Pour récupérer les informations sur une fenêtre, tapez xprop dans une console. Votre curseur va changer de forme. Cliquez alors sur la fenêtre voulue. Vous verrez apparaître dans la console les informations sur la classe, le titre de la fenêtre... Vous l'aurez compris, si vous voulez que la fenêtre flotte, il faudra mettre &quot;True&quot; dans la colonne &quot;isfloating&quot; Pour désigner le tag où l'on veut que la fenêtre apparaisse, c'est un peu plus complexe. Ainsi 1 &lt;&lt; 8 définit le tag 9, 1 &lt;&lt; 7 représente le tag 8, ~0 représente tous les tags, (1 &lt;&lt; 8 ) – 1 définit tous les tags sauf le 9eme.

====Définir vos raccourcis:====

Bien sûr, on peut éxécuter la commande de notre choix via un raccourci clavier, ou même un raccourci souris si on le souhaite. La première étape sera de définir ce raccourci. Il s'agit en fait de faire nos propres fonctions. Repérer ces lignes dans le config.h : &lt;code lang=&quot;c&quot;&gt; /* commands */ static const char *dmenucmd[] = { &quot;dmenu_run&quot;, &quot;-fn&quot;, font, &quot;-nb&quot;, normbgcolor, &quot;-nf&quot;, normfgcolor, &quot;-sb&quot;, selbgcolor, &quot;-sf&quot;, selfgcolor, NULL }; static const char *termcmd[] = { &quot;uxterm&quot;, NULL }; &lt;/code&gt; La première ligne sert à lancer dmenu avec les couleurs de dwm. C'est en fait ce qui se passe lorsque vous tapez le raccourci Mod+P . dmenu est inclus dans le paquet dwm-tools ou suckless-tools, ou[http://tools.suckless.org/dmenu/  téléchargeable sur le site officiel]. La deuxième ligne lance un terminal, c'est ce qui se passe lorsque vous faîtes Mod+Shift+Entrée. Vous pouvez modifier la commande uxterm, par votre terminal favori (xterm, urxvt, xfce4-terminal, lxterminal...). Si vous n'êtes pas sûr, suivez le conseile de MisterFreez, indiquez &quot;x-terminal-emulator&quot; On va ajouter en dessous ces lignes nos propres fonctions! Par exemple, je voudrais ajouter deux raccourcis : l'un pour lancer gajim, l'autre pour couper/activer le son. Il faudra définir deux fonctions sur le même modèle que les précédentes. Donnez leur le nom que vous voulez, du moment que vous vous y retrouvez. Exemple : &lt;code lang=&quot;c&quot;&gt; static const char *gajim[] = { &quot;gajim&quot;, NULL }; static const char *muteson[] = { &quot;amixer&quot;, &quot;-q&quot;, &quot;set&quot;, &quot;Master&quot;, &quot;toggle&quot;, NULL }; &lt;/code&gt; '''Note : '''Remarquez que lorsque une commande contient des espaces, chaque argument doit être entre guillemets suivi d'une virgule. Les commandes finissent toujours par NULL. Bien, maintenant que nos fonctions sont définies, on va les appeler. J'ai envie de lancer gajim lorsque j'appuie sur Mod4+Mod1+i, et couper le son lorsque j'appuie sur la touche multimédia de mon ordinateur associée. Voici ce que ça donnera, dans la section des raccourcis claviers : &lt;code lang=&quot;c&quot;&gt; static Key keys[] = { /*il y a d'autres choses avant....*/ { MODKEY|Mod1, XK_i, spawn, {.v = gajim } }, { 0, 0x1008ff12, spawn, {.v = muteson } }, &lt;/code&gt; ''' Ouhla, ça mérite des explications :''' - Pour définir plusieurs modifieurs, on les sépare par un &quot;|&quot;. - XK_i correspond à la touche &quot;i&quot; - spawn est une fonction dans dwm, qui dit d'éxécuter la fonction désignée - On donne la fonction à éxécuter entre {.v = nom_de_fonction }. Le nom de la fonction est celui définit précédemment. - S'il n'y a pas de modificateur, on met un 0. - 0x1008ff12, c'est le code de ma touche multimédia, que j'ai récupéré en tapant xev en console, puis en faisant fn+&quot;touche bleue&quot; qui coupe le son&quot; Notez qu'il est possible de le faire aussi pour la souris. Par exemple, je veux que lorsque je fais un clique droit sur le texte dans la barre de tâches, ça lance un script que j'ai fait maison. On procédera comme suit :

* 1/On définit la commande du script. Je lui donne le petit nom &quot;deloggue&quot;, car ça me sert à mettre fin à une session

&lt;code lang=&quot;c&quot;&gt; static const char *deloggue[] = { &quot;/home/xavier/Documents/Scripts/exit.sh&quot;, NULL }; &lt;/code&gt;

* 2/ J'appelle cette fonction ensuite avec le clic droit sur le texte.

Dans la partie &quot;souris&quot;, on aura donc : &lt;code lang=&quot;c&quot;&gt; static Button buttons[] = { /* click event mask button function argument */ { ClkStatusText, 0, Button3, spawn, {.v = deloggue } }, }; &lt;/code&gt; On peut aussi modifier les raccourcis déja existants. Je souhaitais que lorsque je fait un clic-milieu sur le titre d'une fenêtre, ça la ferme : &lt;code lang=&quot;c&quot;&gt; static Button buttons[] = { /* click event mask button function argument */ { ClkWinTitle, 0, Button2, killclient, {0} }, }; &lt;/code&gt; ''Voila, rien de bien compliqué en définitive. On définit d'abord la commande à éxécuter, en lui donnant un nom de fonction au choix. Ensuite, on peut lancer cette commande avec spawn, suivi du nom de la fonction.''

====Modifier la configuration pour les claviers français :====

=====Le problème des touches &quot;chiffre&quot;:=====

Malheureusement, dwm est configuré par défaut pour les claviers anglais. Les chiffres au dessus des lettres de votre clavier ne seront pas lus comme tels, mais comme étant un &quot;&amp;amp;&quot; pour le &quot;1&quot;, un &quot;é&quot; pour le 2, un &quot; pour le &quot;3&quot;... On va donc remédier à tout ça. Le code de nos touches se récupère très facilement avec xev. Il faut lancer xev en console, taper sur une touche, et lire ce qui est retourné. On va donc remplacer cette portion : &lt;code lang=&quot;c&quot;&gt; TAGKEYS( XK_1, 0) TAGKEYS( XK_2, 1) TAGKEYS( XK_3, 2) TAGKEYS( XK_4, 3) TAGKEYS( XK_5, 4) TAGKEYS( XK_6, 5) TAGKEYS( XK_7, 6) TAGKEYS( XK_8, 7) TAGKEYS( XK_9, 8) &lt;/code&gt; Par ceci : &lt;code lang=&quot;c&quot;&gt; TAGKEYS( 0x26, 0) TAGKEYS( 0xe9, 1) TAGKEYS( 0x22, 2) TAGKEYS( 0x27, 3) TAGKEYS( 0x28, 4) TAGKEYS( 0x2d, 5) TAGKEYS( 0xe8, 6) TAGKEYS( 0x5f, 7) TAGKEYS( 0xe7, 8) &lt;/code&gt; Ainsi que ceci : &lt;code lang=&quot;c&quot;&gt; { MODKEY, XK_0, view, {.ui = ~0 } }, { MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } }, &lt;/code&gt; par : &lt;code lang=&quot;c&quot;&gt; { MODKEY, 0xe0, view, {.ui = ~0 } }, { MODKEY|ShiftMask, 0xe0, tag, {.ui = ~0 } },&lt;/code&gt;

Un patch automatisant le tout est disponible ici : [http://dwm.suckless.org/patches/azertykey azertykey]

=====Pour changer d'écran:=====

Il faut françiser la touche &quot;.&quot; pour nos claviers. Donc, remplacer dans le config.h &quot;period&quot; par &quot;semicolon&quot;, car pour nous, c'est le point-virgule : &lt;code lang=&quot;c&quot;&gt; { MODKEY, XK_comma, focusmon, {.i = -1 } }, { MODKEY, XK_semicolon, focusmon, {.i = +1 } }, { MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } }, { MODKEY|ShiftMask, XK_semicolon, tagmon, {.i = +1 } }, &lt;/code&gt; Un config.h françisé est maintenant disponible ici : http://thuban.toile-libre.org/index.php/dwm-en-francais/

===Ajouter un patch:===

Vous pouvez ajouter toutes sortes de fonctionnalités à dwm, en ajoutant des patches. [http://dwm.suckless.org/patches Le site officiel regorge d'informations à ce sujet, et la configuration de chaque patch est expliqué.] De façon générale, pour appliquer un patch, il faudra faire ceci dans le dossier de dwm : &lt;code&gt;patch -p1 &lt; chemin/vers/le/patch.diff &lt;/code&gt; Pour la version tarball (paquet debian inclus) &lt;code&gt;hg patch chemin/vers/le/patch.diff &lt;/code&gt; Pour la version mercurial (hg). Personnellement, j'affectionne le patch [http://dwm.suckless.org/patches/bottom_stack bottom stack] afin d'avoir un agencement des fenetres vertical, et le patch [http://dwm.suckless.org/patches/nametag nametag] pour renommer les tags. Mais je pourrais en mettre plus c'est vrai.

===Avoir un menu pour la souris:===

Il est bien entendu possible d'avoir un menu utilisable à la souris. Je vous invite à lire [http://thuban.toile-libre.org/index.php/un-menu-dans-dwm/ cette page], indiquant plusieurs façons possibles d'obtenir un menu.

===Personnaliser la barre d'état:===

Il est possible d'afficher ce que l'on veut dans la barre d'état. Cela se définit juste avant le lancement de dwm, donc selon les cas dans votre ~/.xinitrc ou autre. Dwm lira ce qui est passé en argument à xsetroot. Cela donnera quelque chose comme ça : &lt;code&gt; while true; do xsetroot -name &quot;$( date +&quot;%F %R&quot; )&quot; sleep 1m # Update time every minute done &amp;amp; exec dwm &lt;/code&gt; Qui affichera la date. Voici mon .xinitrc : &lt;code&gt; /home/xavier/Documents/Scripts/dmenu/dstatus.sh &amp;amp; exec /usr/local/bin/dwm &lt;/code&gt; Vous remarquerez que le lance un script dstatus.sh à part, pour plus de commodité. Ce script récupère plusieurs informations, et les renvoient dans le xsetroot. Ainsi, il y a l'heure, le débit internet, la chaque processeur, le volume sonore, des infos sur la batterie, ce que mpd joue...n peut notamment avoir une barre de progression pour mpd/mplayer/wget... Je met le script [http://pastebin.toile-libre.org/?show=457131 à disposition ici], n'hésitez pas à vous en inspirer!

=='''Conclusion:'''==

Il y a un programme essentiel à utiliser dans dwm : j'ai nommé dmenu. Vous pourrez au fur et à mesure lire des exemples d'utilisation que je posterai [http://thuban.toile-libre.org/Logiciel-libre/Suckless/dwm/dwm_presentation_et_configuration.html ici]. Cette page est à améliorer et il y a beaucoup de choses à préciser. Je vous invite donc à me faire part de vos remarques afin de l'améliorer. Je poste [http://thuban.toile-libre.org/wp-content/uploads/2010/11/config.h ici mon config.h] si vous voulez voir ma configuration.

== Liens externes ==
* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24798 Page de Misterfreeze pour installer proprement dwm sur sa debian]
* [http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=23322 Discussion autour de la configuration de dwm]
* http://wiki.debian.org/fr/Dwm
* [http://dwm.suckless.org Site officiel]
* [http://yeuxdelibad.net/Logiciel-libre/Suckless/dwm/dwm_presentation_et_configuration.html Article inspirant cette page, un peu plus à jour ]

[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Tillings]]</text>
      <sha1>eutgu3yeeapoqr4o7izv50fvl3xa57u</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5746</id>
      <parentid>5745</parentid>
      <timestamp>2014-08-20T04:53:48Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Ajouter un patch: */ chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="19070">=='''Présentation :'''==

''' ''' [http://dwm.suckless.org Dwm] est le tiling windows manager (Gestionnaire de fenêtres en tuile) développé par l'équipe de [http://suckless.org suckless.org]. Fidèle à leur philosophie, il est écrit en C, permettant ainsi la contribution de chacun au projet, ce langage étant plus que répandu et éprouvé. De plus, cela oblige les codeurs à faire du code propre et léger. 

Le but de ce window manager est avant tout de profiter d'une gestion dynamique des fenêtres, que vous pourrez gérer via des étiquettes (tags) par des raccourcis claviers principalement.

L'avantage pour le simple utilisateur, c'est que le C est très clair, et et que l'on a même pas besoin de tout comprendre pour le configurer. Eh oui, tout a été pensé, il suffit en fait d'éditer rien qu'un tout petit fichier : [http://yeuxdelibad.net/Logiciel-libre/Suckless/dwm/#configh le config.h ], qui a été construit de manière à rendre la configuration accessible même aux non-initiés. De plus, cela évite les multiples fichiers de configuration tiers, on configure dwm une fois, et une fois qu'il est insallé, on n'a plus rien à toucher, tout est dans le binaire! Ainsi, dwm n'a pas à chercher et lire ces fichiers de configuration pour faire son boulot, donc le temps d'éxécution est amélioré! Debian propose un paquet de démonstration. On expliquera ici comment reconstruire un paquet proprement, une fois que l'on a configuré dwm à notre sauce. Le code de dwm a été construit dans le but de pouvoir ajouter des fonctionnalités simplement, sous forme de [http://yeuxdelibad.net/Logiciel-libre/Suckless/dwm/#patch patches.] Vous pourrez alors composer votre gestionnaire de fenêtre, avec les fonctions que vous désirez. Avant de vous présenter ici les différentes configurations possible, astuces et autres, je ne peux continuer sans [http://dwm.suckless.org/screenshots/ une traditionnelle capture d'écran] : 


[[Fichier:dwm-exemple.png|200px|thumb|left|un exemple d'utilisation de dwm]]

=='''Tester sur debian :'''==

''' ''' Pour commencer, on va utiliser la version de test proposée dans les dépots Debian. Test? Eh oui, car la puissance de dwm se retrouve lorsque l'on édite le fichier config.h, et que l'on recompile. Mais rassurez-vous, cela tient du jeu d'enfant! Il est même prévu de reconstruire le paquet! Bien, installez donc le paquet dwm (aptitude install dwm), puis choisissez cette session dans gdm/kdm, ou bien ajoutez à votre .xinitrc :&lt;code&gt;exec dwm&lt;/code&gt; Comme vous le voyez, la configuration par défaut n'est pas la plus belle. Mais on va y remédier! ''' '''

=='''Utilisation :'''==

Dwm a été pensé pour être entièrement piloté au clavier si besoin. Voici les raccourcis définis par défaut. On utilisera dans un premier temps la touche &quot;alt&quot; comme touche &quot;Mod1&quot;. ([http://thuban.toile-libre.org/index.php/dwm-un-tiling-window-manager-pour-vos-besoins/#4-configurer-dwm voir la partie configuration pour plus d'informations])

* Mod1-Shift-Return Lance un terminal
* Mod1-b Affiche/cache la barre
* Mod1-t Paser en mode &quot;tiling&quot;
* Mod1-f Passer en mode flottant.
* Mod1-m Maximise la zone principale
* Mod1-space Passe du mode courant au mode précédent.
* Mod1-j Passe le focus à la fenêtre suivante
* Mod1-k passe le focus à la fenêtre précédente
* Mod1-h Réduis la taille de la zone principale
* Mod1-l Augmente la taille de la zone principale
* Mod1-Return Échange les fenêtres séléctionnées depuis/vers la zone principale
* Mod1-Shift-c Ferme la fenêtre sélectionnée
* Mod1-Shift-space Passe la fenêtre sélectionnée entre le mode tiling et flottant
* Mod1-Tab Sélectionne la vue précédente
* Mod1-Shift-[1..n] Donne à la fenêtre l'étiquette 1...n
* Mod1-Shift-0 Colle toutes les étiquettes à la fenêtre, de 1 à 9.
* Mod1-Control-Shift-[1..n] Ajoute les fenêtres à l'étiquette 1...n 
* Mod1-[1..n] Afficher les fenêtres dont l'étiquette est 1...n
* Mod1-0 Montre/cache toutes les étiquettes.
* Mod1-Control-[1..n] Ajoute les étiquettes 1...n à la vue
* Mod1-Shift-q Quitte dwm



Sur le bureau, on démarre par defaut en mode « divisé » : l'écran est divisé équitablement entre les fenêtres. Voici les modes disponibles par défaut :

* Le mode « flottant » (Mod+f) : Vous pourrez alors déplacer la fenêtre en maintenant la touche Mod appuyée tout en déplacant la fenêtre à la souris, la redimensionner en maintenant Mod et en faisant clic-droit avec la souris.

* Le mode « maximum » (Mod+m) : la fenêtre prend tout l'espace disponible, on ne voit pas les autres fenêtres

* Le mode « divisé » (Mod+t) : Mode écran divisé ou tiling. Une partie maître à gauche, avec une fenêtre plus grande, et une partie à droite avec les fenêtres plus petites.

===Obtenir dwm :===

Dwm est téléchargeable sur le [http://dl.suckless.org/dwm/ site officiel] (prendre l'archive la plus récente et la décompresser), ou vous pouvez télécharger les sources debian : &lt;code&gt;# apt-get source dwm&lt;/code&gt; . Pour les plus aventureux, vous pouver installer la toute dernière mouture de dwm ainsi (paquet mercurial nécéssaire) &lt;code&gt;hg clone http://hg.suckless.org/dwm&lt;/code&gt;. Les deux dernières commandes téléchargent les sources dans le répertoire courant. On se déplace dans le répertoire des sources de dwm : &lt;code&gt;cd dwm-numéro_de_version&lt;/code&gt;

===Installer dwm :===

Dans le répertoire contenant les sources, il suffit de taper : &lt;code&gt;make&lt;/code&gt;. Dwm est alors compilé, et présent dans le répertoire actuel. Vous pouvez l'installer sur tout le système si vous voulez, en tapant ensuite : &lt;code&gt;make install&lt;/code&gt; Les éxécutables seront dans ce cas le répertoire /usr/local/bin par défaut. Pour changer ce répertoire, il faut éditer le fichier config.mk, et changer la ligne : &lt;code&gt;PREFIX = /chemin/du/répertoire/destination&lt;/code&gt; vers le chemin de votre choix (votre répertoire utilisateur ou autre). Notez toutefois que pour lancer votre session ensuite, il faudra préciser le bon chemin.
 &lt;code&gt; 
#Fichier ~/.xinitrc
#commande pour lancer dwm en tapant startx 
#Lorsque dwm est dans /usr/bin ou /usr/local/bin : 
exec dwm 
#lorsque dwm est dans un répertoire quelconque, par exemple dans /home/user/ 
#exec /home/user/dwm &lt;/code&gt; 
Les dépendances nécéssaires sont libX11-dev et éventuellement libxinerama-dev. Intéressons nous comment recréer un paquet debian à partir des sources debian : On récupère les sources, qui seront décompressées dans le répertoire courant : &lt;code&gt; apt-get source dwm&lt;/code&gt; On se déplace dans le répertoire des sources. J'utilise le caractère &quot;*&quot; pour ne pas avoir à préciser la version de dwm : &lt;code&gt;cd dwm*&lt;/code&gt; Maintenant, on retrouve les fichiers sources de dwm, les mêmes que dans l'archive officielle plus quelques autres relatifs à debian. On configure dwm de la même façon que pour les autres méthode, en éditant le config.def.h. Attention, ici c'est le fichier config.def.h qui sera pris en compte, et qu'il faut donc modifier. Une fois que vous êtes satisfaits, vous pouvez refabriquer le paquet avec cette commande (toujours dans le répertoire des sources) : &lt;code&gt;dpkg-buildpackage -rfakeroot -uc -b&lt;/code&gt; Ce qui va créer un fichier dwm-version.deb dans le répertoire supérieur. Pour vous assurez d'avoir les dépendances nécéssaires, tapez ceci (Merci Knucky) : &lt;code&gt;apt-get build-dep dwm&lt;/code&gt; Allons donc chercher le paquet récemment créé : &lt;code&gt;cd ..&lt;/code&gt; Et installons ce paquet (il faut avoir les droits super-utilisateur) : &lt;code&gt; dpkg -i dwm_*.deb &lt;/code&gt; Le paquet est maintenant installé!

Il se peut fichier dwm-5.7.2/debian/desktop/dwm soit mal fait. En effet pour être pris en compte par gdm il faut le renommer avec l'extension &quot;.desktop&quot;. ''' '''

==''' [http://dwm.suckless.org/customisation/ 4. Configurer dwm :]'''==

''' ''' ''[http://dwm.suckless.org/customisation/ Documentation du site officiel à ce sujet]'' On va maintenant se pencher sur les configurations possibles.

===Le fichier config.h :===

Depuis le temps que je vous parle de ce fichier! Il se trouve dans le répertoire des sources de dwm. Allons le chercher : &lt;code&gt;cd dwm-numero_de_version&lt;/code&gt; ''Mais, que dis-tu, il n'y a pas de fichier config.h! bouh!'' Ahem... En effet, dis comme ça... Non, je ne me moque pas de vous. En fait, par défaut, le fichier s'appelle config.def.h. C'est en fait un config.h qui sert de modèle. Cependant, si un fichier config.h est présent, ce sera lui qui sera utilisé pour la configuration, sinon ce sera le config.def.h. Je vous invite à copier le fichier config.def.h en config.h, toujours dans le répertoire des sources : &lt;code&gt;cp config.def.h config.h&lt;/code&gt; Ainsi, vous gardez un modèle d'origine en cas de besoin. Voici à quoi ressemble le fichier par défaut, j'y rajoute ici des commentaires pour l'expliquer en français. 
http://www.isalo.org/pnopaste/?14

====Donner des règles pour les fenêtres====

Voir aussi : http://dwm.suckless.org/customisation/tagmask Il est possible de définir des règles spécifique à certaines fenêtres. Par exemple, si je veux que transmission n'apparaisse que su le tag 9, il faudra mettre ceci : &lt;code lang=&quot;c&quot;&gt; static const Rule rules[] = { /* class instance title tags mask isfloating monitor */ { &quot;Transmission&quot;, NULL, NULL, 1 &lt;&lt; 8, False, -1 }, }; &lt;/code&gt; Pour récupérer les informations sur une fenêtre, tapez xprop dans une console. Votre curseur va changer de forme. Cliquez alors sur la fenêtre voulue. Vous verrez apparaître dans la console les informations sur la classe, le titre de la fenêtre... Vous l'aurez compris, si vous voulez que la fenêtre flotte, il faudra mettre &quot;True&quot; dans la colonne &quot;isfloating&quot; Pour désigner le tag où l'on veut que la fenêtre apparaisse, c'est un peu plus complexe. Ainsi 1 &lt;&lt; 8 définit le tag 9, 1 &lt;&lt; 7 représente le tag 8, ~0 représente tous les tags, (1 &lt;&lt; 8 ) – 1 définit tous les tags sauf le 9eme.

====Définir vos raccourcis:====

Bien sûr, on peut éxécuter la commande de notre choix via un raccourci clavier, ou même un raccourci souris si on le souhaite. La première étape sera de définir ce raccourci. Il s'agit en fait de faire nos propres fonctions. Repérer ces lignes dans le config.h : &lt;code lang=&quot;c&quot;&gt; /* commands */ static const char *dmenucmd[] = { &quot;dmenu_run&quot;, &quot;-fn&quot;, font, &quot;-nb&quot;, normbgcolor, &quot;-nf&quot;, normfgcolor, &quot;-sb&quot;, selbgcolor, &quot;-sf&quot;, selfgcolor, NULL }; static const char *termcmd[] = { &quot;uxterm&quot;, NULL }; &lt;/code&gt; La première ligne sert à lancer dmenu avec les couleurs de dwm. C'est en fait ce qui se passe lorsque vous tapez le raccourci Mod+P . dmenu est inclus dans le paquet dwm-tools ou suckless-tools, ou[http://tools.suckless.org/dmenu/  téléchargeable sur le site officiel]. La deuxième ligne lance un terminal, c'est ce qui se passe lorsque vous faîtes Mod+Shift+Entrée. Vous pouvez modifier la commande uxterm, par votre terminal favori (xterm, urxvt, xfce4-terminal, lxterminal...). Si vous n'êtes pas sûr, suivez le conseile de MisterFreez, indiquez &quot;x-terminal-emulator&quot; On va ajouter en dessous ces lignes nos propres fonctions! Par exemple, je voudrais ajouter deux raccourcis : l'un pour lancer gajim, l'autre pour couper/activer le son. Il faudra définir deux fonctions sur le même modèle que les précédentes. Donnez leur le nom que vous voulez, du moment que vous vous y retrouvez. Exemple : &lt;code lang=&quot;c&quot;&gt; static const char *gajim[] = { &quot;gajim&quot;, NULL }; static const char *muteson[] = { &quot;amixer&quot;, &quot;-q&quot;, &quot;set&quot;, &quot;Master&quot;, &quot;toggle&quot;, NULL }; &lt;/code&gt; '''Note : '''Remarquez que lorsque une commande contient des espaces, chaque argument doit être entre guillemets suivi d'une virgule. Les commandes finissent toujours par NULL. Bien, maintenant que nos fonctions sont définies, on va les appeler. J'ai envie de lancer gajim lorsque j'appuie sur Mod4+Mod1+i, et couper le son lorsque j'appuie sur la touche multimédia de mon ordinateur associée. Voici ce que ça donnera, dans la section des raccourcis claviers : &lt;code lang=&quot;c&quot;&gt; static Key keys[] = { /*il y a d'autres choses avant....*/ { MODKEY|Mod1, XK_i, spawn, {.v = gajim } }, { 0, 0x1008ff12, spawn, {.v = muteson } }, &lt;/code&gt; ''' Ouhla, ça mérite des explications :''' - Pour définir plusieurs modifieurs, on les sépare par un &quot;|&quot;. - XK_i correspond à la touche &quot;i&quot; - spawn est une fonction dans dwm, qui dit d'éxécuter la fonction désignée - On donne la fonction à éxécuter entre {.v = nom_de_fonction }. Le nom de la fonction est celui définit précédemment. - S'il n'y a pas de modificateur, on met un 0. - 0x1008ff12, c'est le code de ma touche multimédia, que j'ai récupéré en tapant xev en console, puis en faisant fn+&quot;touche bleue&quot; qui coupe le son&quot; Notez qu'il est possible de le faire aussi pour la souris. Par exemple, je veux que lorsque je fais un clique droit sur le texte dans la barre de tâches, ça lance un script que j'ai fait maison. On procédera comme suit :

* 1/On définit la commande du script. Je lui donne le petit nom &quot;deloggue&quot;, car ça me sert à mettre fin à une session

&lt;code lang=&quot;c&quot;&gt; static const char *deloggue[] = { &quot;/home/xavier/Documents/Scripts/exit.sh&quot;, NULL }; &lt;/code&gt;

* 2/ J'appelle cette fonction ensuite avec le clic droit sur le texte.

Dans la partie &quot;souris&quot;, on aura donc : &lt;code lang=&quot;c&quot;&gt; static Button buttons[] = { /* click event mask button function argument */ { ClkStatusText, 0, Button3, spawn, {.v = deloggue } }, }; &lt;/code&gt; On peut aussi modifier les raccourcis déja existants. Je souhaitais que lorsque je fait un clic-milieu sur le titre d'une fenêtre, ça la ferme : &lt;code lang=&quot;c&quot;&gt; static Button buttons[] = { /* click event mask button function argument */ { ClkWinTitle, 0, Button2, killclient, {0} }, }; &lt;/code&gt; ''Voila, rien de bien compliqué en définitive. On définit d'abord la commande à éxécuter, en lui donnant un nom de fonction au choix. Ensuite, on peut lancer cette commande avec spawn, suivi du nom de la fonction.''

====Modifier la configuration pour les claviers français :====

=====Le problème des touches &quot;chiffre&quot;:=====

Malheureusement, dwm est configuré par défaut pour les claviers anglais. Les chiffres au dessus des lettres de votre clavier ne seront pas lus comme tels, mais comme étant un &quot;&amp;amp;&quot; pour le &quot;1&quot;, un &quot;é&quot; pour le 2, un &quot; pour le &quot;3&quot;... On va donc remédier à tout ça. Le code de nos touches se récupère très facilement avec xev. Il faut lancer xev en console, taper sur une touche, et lire ce qui est retourné. On va donc remplacer cette portion : &lt;code lang=&quot;c&quot;&gt; TAGKEYS( XK_1, 0) TAGKEYS( XK_2, 1) TAGKEYS( XK_3, 2) TAGKEYS( XK_4, 3) TAGKEYS( XK_5, 4) TAGKEYS( XK_6, 5) TAGKEYS( XK_7, 6) TAGKEYS( XK_8, 7) TAGKEYS( XK_9, 8) &lt;/code&gt; Par ceci : &lt;code lang=&quot;c&quot;&gt; TAGKEYS( 0x26, 0) TAGKEYS( 0xe9, 1) TAGKEYS( 0x22, 2) TAGKEYS( 0x27, 3) TAGKEYS( 0x28, 4) TAGKEYS( 0x2d, 5) TAGKEYS( 0xe8, 6) TAGKEYS( 0x5f, 7) TAGKEYS( 0xe7, 8) &lt;/code&gt; Ainsi que ceci : &lt;code lang=&quot;c&quot;&gt; { MODKEY, XK_0, view, {.ui = ~0 } }, { MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } }, &lt;/code&gt; par : &lt;code lang=&quot;c&quot;&gt; { MODKEY, 0xe0, view, {.ui = ~0 } }, { MODKEY|ShiftMask, 0xe0, tag, {.ui = ~0 } },&lt;/code&gt;

Un patch automatisant le tout est disponible ici : [http://dwm.suckless.org/patches/azertykey azertykey]

=====Pour changer d'écran:=====

Il faut françiser la touche &quot;.&quot; pour nos claviers. Donc, remplacer dans le config.h &quot;period&quot; par &quot;semicolon&quot;, car pour nous, c'est le point-virgule : &lt;code lang=&quot;c&quot;&gt; { MODKEY, XK_comma, focusmon, {.i = -1 } }, { MODKEY, XK_semicolon, focusmon, {.i = +1 } }, { MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } }, { MODKEY|ShiftMask, XK_semicolon, tagmon, {.i = +1 } }, &lt;/code&gt; Un config.h françisé est maintenant disponible ici : http://thuban.toile-libre.org/index.php/dwm-en-francais/

===Ajouter un patch:===

Vous pouvez ajouter toutes sortes de fonctionnalités à dwm, en ajoutant des patches. [http://dwm.suckless.org/patches Le site officiel regorge d'informations à ce sujet, et la configuration de chaque patch est expliqué.] De façon générale, pour appliquer un patch, il faudra faire ceci dans le répertoire de dwm : &lt;code&gt;patch -p1 &lt; chemin/vers/le/patch.diff &lt;/code&gt; Pour la version tarball (paquet debian inclus) &lt;code&gt;hg patch chemin/vers/le/patch.diff &lt;/code&gt; Pour la version mercurial (hg). Personnellement, j'affectionne le patch [http://dwm.suckless.org/patches/bottom_stack bottom stack] afin d'avoir un agencement des fenetres vertical, et le patch [http://dwm.suckless.org/patches/nametag nametag] pour renommer les tags. Mais je pourrais en mettre plus c'est vrai.

===Avoir un menu pour la souris:===

Il est bien entendu possible d'avoir un menu utilisable à la souris. Je vous invite à lire [http://thuban.toile-libre.org/index.php/un-menu-dans-dwm/ cette page], indiquant plusieurs façons possibles d'obtenir un menu.

===Personnaliser la barre d'état:===

Il est possible d'afficher ce que l'on veut dans la barre d'état. Cela se définit juste avant le lancement de dwm, donc selon les cas dans votre ~/.xinitrc ou autre. Dwm lira ce qui est passé en argument à xsetroot. Cela donnera quelque chose comme ça : &lt;code&gt; while true; do xsetroot -name &quot;$( date +&quot;%F %R&quot; )&quot; sleep 1m # Update time every minute done &amp;amp; exec dwm &lt;/code&gt; Qui affichera la date. Voici mon .xinitrc : &lt;code&gt; /home/xavier/Documents/Scripts/dmenu/dstatus.sh &amp;amp; exec /usr/local/bin/dwm &lt;/code&gt; Vous remarquerez que le lance un script dstatus.sh à part, pour plus de commodité. Ce script récupère plusieurs informations, et les renvoient dans le xsetroot. Ainsi, il y a l'heure, le débit internet, la chaque processeur, le volume sonore, des infos sur la batterie, ce que mpd joue...n peut notamment avoir une barre de progression pour mpd/mplayer/wget... Je met le script [http://pastebin.toile-libre.org/?show=457131 à disposition ici], n'hésitez pas à vous en inspirer!

=='''Conclusion:'''==

Il y a un programme essentiel à utiliser dans dwm : j'ai nommé dmenu. Vous pourrez au fur et à mesure lire des exemples d'utilisation que je posterai [http://thuban.toile-libre.org/Logiciel-libre/Suckless/dwm/dwm_presentation_et_configuration.html ici]. Cette page est à améliorer et il y a beaucoup de choses à préciser. Je vous invite donc à me faire part de vos remarques afin de l'améliorer. Je poste [http://thuban.toile-libre.org/wp-content/uploads/2010/11/config.h ici mon config.h] si vous voulez voir ma configuration.

== Liens externes ==
* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24798 Page de Misterfreeze pour installer proprement dwm sur sa debian]
* [http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=23322 Discussion autour de la configuration de dwm]
* http://wiki.debian.org/fr/Dwm
* [http://dwm.suckless.org Site officiel]
* [http://yeuxdelibad.net/Logiciel-libre/Suckless/dwm/dwm_presentation_et_configuration.html Article inspirant cette page, un peu plus à jour ]

[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Tillings]]</text>
      <sha1>hevn90v3k957dz13r7tiq7si3342xh2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Désactiver l'IPv6</title>
    <ns>0</ns>
    <id>536</id>
    <revision>
      <id>2187</id>
      <timestamp>2010-10-08T04:30:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « Désactiver l'IPv6  Selon [http://www.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.29 le changelog des sources de kernel.org] le paramètre disable du module ipv6 a été i... »</comment>
      <text xml:space="preserve" bytes="2316">Désactiver l'IPv6

Selon [http://www.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.29 le changelog des sources de kernel.org] le paramètre disable du module ipv6 a été introduit à partir du noyau 2.6.29.

 IPv6: add &quot;disable&quot; module parameter support to ipv6.ko
 
     Add &quot;disable&quot; module parameter support to ipv6.ko by specifying
     &quot;disable=1&quot; on module load.  We just do the minimum of initializing
     inetsw6[] so calls from other modules to inet6_register_protosw()
     won't OOPs, then bail out.  No IPv6 addresses or sockets can be
     created as a result, and a reboot is required to enable IPv6.

D'après [http://packages.debian.org/changelogs/pool/main/l/linux-2.6/linux-2.6_2.6.32-24/changelog#versionversion2.6.30-1 le changelog du noyau Debian], le module ipv6 est compilé en dur pour les architectures amd64, i386, powerpc et sparc à partir de la version 2.6.30-1.

 * [amd64, i386, powerpc, sparc] Make IPv6 support built-in.

Ce qui signifie que ceux qui compilent leur noyau peuvent le mettre en dur depuis le 2.6.29 (2.6.30-1 pour les autres.)

== Pour les noyaux inférieurs à 2.6.32 ==

Dé-commenter et Remplacer

 alias net-pf-10 ipv6

Par :

 alias net-pf-10 off

Dans :

/etc/modprobe.d/aliases
(ou /etc/modprobe.d/aliases.conf à partir de squeeze)

== Pour les noyaux supérieurs ou égaux à 2.6.32 ==

Dans le noyau 2.6.32 Debian l'IPv6 n'est plus compilé en module mais en dur. Donc l'astuce à base de blacklist pour empêcher de charger le module n'a plus d'effet. Heureusement le paramètre &quot;disable&quot; du module ipv6 est disponible à partir du noyau 2.6.29. Il est donc possible d'initialiser les paramètres des modules compilés en dur dans les options de la ligne de commande du noyau au démarrage.

=== grub-pc ===

 # nano /etc/default/grub

Changer la ligne GRUB_CMDLINE_LINUX=&quot;&quot; en GRUB_CMDLINE_LINUX=&quot;ipv6.disable=1&quot;

Enregistrer et fermer le fichier.

 # update-grub2

=== grub-legacy ===

Pareil qu'avec grub2 : ajouter ipv6.disable=1 aux paramètres déjà présents. Les paramètres passés au noyau sont indépendants du chargeur.

== Sources ==

http://www.debian-fr.org/debian-2-6-32-5-686-disable-ipv6-t30054.html

http://www.debian-fr.org/digression-debian-2-6-32-5-686-disable-ipv6-t30055.html

http://www.debian-fr.org/blacklist-ipv6-t20222.html</text>
      <sha1>q3kh18u635645ygpehlvh60of3961p3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2190</id>
      <parentid>2187</parentid>
      <timestamp>2010-10-08T04:35:43Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2340">Désactiver l'IPv6

Selon [http://www.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.29 le changelog des sources de kernel.org] le paramètre disable du module ipv6 a été introduit à partir du noyau 2.6.29.

 IPv6: add &quot;disable&quot; module parameter support to ipv6.ko
 
     Add &quot;disable&quot; module parameter support to ipv6.ko by specifying
     &quot;disable=1&quot; on module load.  We just do the minimum of initializing
     inetsw6[] so calls from other modules to inet6_register_protosw()
     won't OOPs, then bail out.  No IPv6 addresses or sockets can be
     created as a result, and a reboot is required to enable IPv6.

D'après [http://packages.debian.org/changelogs/pool/main/l/linux-2.6/linux-2.6_2.6.32-24/changelog#versionversion2.6.30-1 le changelog du noyau Debian], le module ipv6 est compilé en dur pour les architectures amd64, i386, powerpc et sparc à partir de la version 2.6.30-1.

 * [amd64, i386, powerpc, sparc] Make IPv6 support built-in.

Ce qui signifie que ceux qui compilent leur noyau peuvent le mettre en dur depuis le 2.6.29 (2.6.30-1 pour les autres.)

== Pour les noyaux inférieurs à 2.6.32 ==

Dé-commenter et Remplacer

 alias net-pf-10 ipv6

Par :

 alias net-pf-10 off

Dans :

/etc/modprobe.d/aliases
(ou /etc/modprobe.d/aliases.conf à partir de squeeze)

== Pour les noyaux supérieurs ou égaux à 2.6.32 ==

Dans le noyau 2.6.32 Debian l'IPv6 n'est plus compilé en module mais en dur. Donc l'astuce à base de blacklist pour empêcher de charger le module n'a plus d'effet. Heureusement le paramètre &quot;disable&quot; du module ipv6 est disponible à partir du noyau 2.6.29. Il est donc possible d'initialiser les paramètres des modules compilés en dur dans les options de la ligne de commande du noyau au démarrage.

=== grub-pc ===

 # nano /etc/default/grub

Changer la ligne GRUB_CMDLINE_LINUX=&quot;&quot; en GRUB_CMDLINE_LINUX=&quot;ipv6.disable=1&quot;

Enregistrer et fermer le fichier.

 # update-grub2

=== grub-legacy ===

Pareil qu'avec grub2 : ajouter ipv6.disable=1 aux paramètres déjà présents. Les paramètres passés au noyau sont indépendants du chargeur.

== Sources ==

http://www.debian-fr.org/debian-2-6-32-5-686-disable-ipv6-t30054.html

http://www.debian-fr.org/digression-debian-2-6-32-5-686-disable-ipv6-t30055.html

http://www.debian-fr.org/blacklist-ipv6-t20222.html

[[Catégorie:Réseau]]</text>
      <sha1>rylxtuxm4m2tbzwqyvlemd0i6hxo8k5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2191</id>
      <parentid>2190</parentid>
      <timestamp>2010-10-08T04:49:48Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2364">Désactiver l'IPv6

Selon [http://www.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.29 le changelog des sources de kernel.org] le paramètre disable du module ipv6 a été introduit à partir du noyau 2.6.29.

 IPv6: add &quot;disable&quot; module parameter support to ipv6.ko
 
     Add &quot;disable&quot; module parameter support to ipv6.ko by specifying
     &quot;disable=1&quot; on module load.  We just do the minimum of initializing
     inetsw6[] so calls from other modules to inet6_register_protosw()
     won't OOPs, then bail out.  No IPv6 addresses or sockets can be
     created as a result, and a reboot is required to enable IPv6.

D'après [http://packages.debian.org/changelogs/pool/main/l/linux-2.6/linux-2.6_2.6.32-24/changelog#versionversion2.6.30-1 le changelog du noyau Debian], le module ipv6 est compilé en dur pour les architectures amd64, i386, powerpc et sparc à partir de la version 2.6.30-1.

 * [amd64, i386, powerpc, sparc] Make IPv6 support built-in.

Ce qui signifie que ceux qui compilent leur noyau peuvent le mettre en dur depuis le 2.6.29 (2.6.30-1 pour les autres.)

== Pour les noyaux inférieurs à 2.6.32 ==

Dé-commenter et Remplacer

 alias net-pf-10 ipv6

Par :

 alias net-pf-10 off

Dans :

/etc/modprobe.d/aliases
(ou /etc/modprobe.d/aliases.conf à partir de squeeze)

== Pour les noyaux supérieurs ou égaux à 2.6.32 ==

Dans le noyau 2.6.32 Debian l'IPv6 n'est plus compilé en module mais en dur. Donc l'astuce à base de blacklist pour empêcher de charger le module n'a plus d'effet. Heureusement le paramètre &quot;disable&quot; du module ipv6 est disponible à partir du noyau 2.6.29. Il est donc possible d'initialiser les paramètres des modules compilés en dur dans les options de la ligne de commande du noyau au démarrage.

=== grub-pc ===

 # nano /etc/default/grub

Changer la ligne GRUB_CMDLINE_LINUX=&quot;&quot; en GRUB_CMDLINE_LINUX=&quot;ipv6.disable=1&quot;

Enregistrer et fermer le fichier.

 # update-grub2

=== grub-legacy ===

Pareil qu'avec grub2 : ajouter ipv6.disable=1 aux paramètres déjà présents. Les paramètres passés au noyau sont indépendants du chargeur.

Puis :

 # update-grub

== Sources ==

http://www.debian-fr.org/debian-2-6-32-5-686-disable-ipv6-t30054.html

http://www.debian-fr.org/digression-debian-2-6-32-5-686-disable-ipv6-t30055.html

http://www.debian-fr.org/blacklist-ipv6-t20222.html

[[Catégorie:Réseau]]</text>
      <sha1>ih4m6hwm6qwmgqtu513jppu7w0lyrli</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2192</id>
      <parentid>2191</parentid>
      <timestamp>2010-10-08T04:51:10Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2368">Désactiver l'IPv6

Selon [http://www.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.29 le changelog des sources de kernel.org] le paramètre disable du module ipv6 a été introduit à partir du noyau 2.6.29.

 IPv6: add &quot;disable&quot; module parameter support to ipv6.ko
 
     Add &quot;disable&quot; module parameter support to ipv6.ko by specifying
     &quot;disable=1&quot; on module load.  We just do the minimum of initializing
     inetsw6[] so calls from other modules to inet6_register_protosw()
     won't OOPs, then bail out.  No IPv6 addresses or sockets can be
     created as a result, and a reboot is required to enable IPv6.

D'après [http://packages.debian.org/changelogs/pool/main/l/linux-2.6/linux-2.6_2.6.32-24/changelog#versionversion2.6.30-1 le changelog du noyau Debian], le module ipv6 est compilé en dur pour les architectures amd64, i386, powerpc et sparc à partir de la version 2.6.30-1.

 * [amd64, i386, powerpc, sparc] Make IPv6 support built-in.

Ce qui signifie que ceux qui compilent leur noyau peuvent le mettre en dur depuis le 2.6.29 (2.6.30-1 pour les autres.)

== Pour les noyaux inférieurs à 2.6.30-1 ==

Dé-commenter et Remplacer

 alias net-pf-10 ipv6

Par :

 alias net-pf-10 off

Dans :

/etc/modprobe.d/aliases
(ou /etc/modprobe.d/aliases.conf à partir de squeeze)

== Pour les noyaux supérieurs ou égaux à 2.6.30-1 ==

Dans le noyau 2.6.32 Debian l'IPv6 n'est plus compilé en module mais en dur. Donc l'astuce à base de blacklist pour empêcher de charger le module n'a plus d'effet. Heureusement le paramètre &quot;disable&quot; du module ipv6 est disponible à partir du noyau 2.6.29. Il est donc possible d'initialiser les paramètres des modules compilés en dur dans les options de la ligne de commande du noyau au démarrage.

=== grub-pc ===

 # nano /etc/default/grub

Changer la ligne GRUB_CMDLINE_LINUX=&quot;&quot; en GRUB_CMDLINE_LINUX=&quot;ipv6.disable=1&quot;

Enregistrer et fermer le fichier.

 # update-grub2

=== grub-legacy ===

Pareil qu'avec grub2 : ajouter ipv6.disable=1 aux paramètres déjà présents. Les paramètres passés au noyau sont indépendants du chargeur.

Puis :

 # update-grub

== Sources ==

http://www.debian-fr.org/debian-2-6-32-5-686-disable-ipv6-t30054.html

http://www.debian-fr.org/digression-debian-2-6-32-5-686-disable-ipv6-t30055.html

http://www.debian-fr.org/blacklist-ipv6-t20222.html

[[Catégorie:Réseau]]</text>
      <sha1>89peouisyosx054b8vdrkehgdfytync</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2313</id>
      <parentid>2192</parentid>
      <timestamp>2010-11-18T12:23:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Pour les noyaux supérieurs ou égaux à 2.6.30-1 */</comment>
      <text xml:space="preserve" bytes="2578">Désactiver l'IPv6

Selon [http://www.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.29 le changelog des sources de kernel.org] le paramètre disable du module ipv6 a été introduit à partir du noyau 2.6.29.

 IPv6: add &quot;disable&quot; module parameter support to ipv6.ko
 
     Add &quot;disable&quot; module parameter support to ipv6.ko by specifying
     &quot;disable=1&quot; on module load.  We just do the minimum of initializing
     inetsw6[] so calls from other modules to inet6_register_protosw()
     won't OOPs, then bail out.  No IPv6 addresses or sockets can be
     created as a result, and a reboot is required to enable IPv6.

D'après [http://packages.debian.org/changelogs/pool/main/l/linux-2.6/linux-2.6_2.6.32-24/changelog#versionversion2.6.30-1 le changelog du noyau Debian], le module ipv6 est compilé en dur pour les architectures amd64, i386, powerpc et sparc à partir de la version 2.6.30-1.

 * [amd64, i386, powerpc, sparc] Make IPv6 support built-in.

Ce qui signifie que ceux qui compilent leur noyau peuvent le mettre en dur depuis le 2.6.29 (2.6.30-1 pour les autres.)

== Pour les noyaux inférieurs à 2.6.30-1 ==

Dé-commenter et Remplacer

 alias net-pf-10 ipv6

Par :

 alias net-pf-10 off

Dans :

/etc/modprobe.d/aliases
(ou /etc/modprobe.d/aliases.conf à partir de squeeze)

== Pour les noyaux supérieurs ou égaux à 2.6.30-1 ==

Dans le noyau 2.6.32 Debian l'IPv6 n'est plus compilé en module mais en dur. Donc l'astuce à base de blacklist pour empêcher de charger le module n'a plus d'effet. Heureusement le paramètre &quot;disable&quot; du module ipv6 est disponible à partir du noyau 2.6.29. Il est donc possible d'initialiser les paramètres des modules compilés en dur dans les options de la ligne de commande du noyau au démarrage.

=== lilo ===

dans /etc/lilo.conf, ajouter ou modifier l'option append globale avant la déclaration des différents noyaux

 append=&quot;[paramètres préexistants] ipv6.disable=1&quot;

et exécuter lilo

=== grub-pc ===

 # nano /etc/default/grub

Changer la ligne GRUB_CMDLINE_LINUX=&quot;&quot; en GRUB_CMDLINE_LINUX=&quot;ipv6.disable=1&quot;

Enregistrer et fermer le fichier.

 # update-grub2

=== grub-legacy ===

Ajouter ipv6.disable=1 aux paramètres déjà présents à la ligne commençant par #kopt=. Les paramètres passés au noyau sont indépendants du chargeur.

Puis :

 # update-grub

== Sources ==

http://www.debian-fr.org/debian-2-6-32-5-686-disable-ipv6-t30054.html

http://www.debian-fr.org/digression-debian-2-6-32-5-686-disable-ipv6-t30055.html

http://www.debian-fr.org/blacklist-ipv6-t20222.html

[[Catégorie:Réseau]]</text>
      <sha1>r5xhujufp4tm1pksxhmn7fw50hlbsfa</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5031</id>
      <parentid>2313</parentid>
      <timestamp>2013-02-23T09:21:33Z</timestamp>
      <contributor>
        <username>PengouinPdt</username>
        <id>249</id>
      </contributor>
      <comment>Ajout de la section sysctl</comment>
      <text xml:space="preserve" bytes="3337">Désactiver l'IPv6

Selon [http://www.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.29 le changelog des sources de kernel.org] le paramètre disable du module ipv6 a été introduit à partir du noyau 2.6.29.

 IPv6: add &quot;disable&quot; module parameter support to ipv6.ko
 
     Add &quot;disable&quot; module parameter support to ipv6.ko by specifying
     &quot;disable=1&quot; on module load.  We just do the minimum of initializing
     inetsw6[] so calls from other modules to inet6_register_protosw()
     won't OOPs, then bail out.  No IPv6 addresses or sockets can be
     created as a result, and a reboot is required to enable IPv6.

D'après [http://packages.debian.org/changelogs/pool/main/l/linux-2.6/linux-2.6_2.6.32-24/changelog#versionversion2.6.30-1 le changelog du noyau Debian], le module ipv6 est compilé en dur pour les architectures amd64, i386, powerpc et sparc à partir de la version 2.6.30-1.

 * [amd64, i386, powerpc, sparc] Make IPv6 support built-in.

Ce qui signifie que ceux qui compilent leur noyau peuvent le mettre en dur depuis le 2.6.29 (2.6.30-1 pour les autres.)

== Pour les noyaux inférieurs à 2.6.30-1 ==

Dé-commenter et Remplacer

 alias net-pf-10 ipv6

Par :

 alias net-pf-10 off

Dans :

/etc/modprobe.d/aliases
(ou /etc/modprobe.d/aliases.conf à partir de squeeze)

== Pour les noyaux supérieurs ou égaux à 2.6.30-1 ==

Dans le noyau 2.6.32 Debian l'IPv6 n'est plus compilé en module mais en dur. Donc l'astuce à base de blacklist pour empêcher de charger le module n'a plus d'effet. Heureusement le paramètre &quot;disable&quot; du module ipv6 est disponible à partir du noyau 2.6.29. Il est donc possible d'initialiser les paramètres des modules compilés en dur dans les options de la ligne de commande du noyau au démarrage.

=== lilo ===

dans /etc/lilo.conf, ajouter ou modifier l'option append globale avant la déclaration des différents noyaux

 append=&quot;[paramètres préexistants] ipv6.disable=1&quot;

et exécuter lilo

=== grub-pc ===

 # nano /etc/default/grub

Changer la ligne GRUB_CMDLINE_LINUX=&quot;&quot; en GRUB_CMDLINE_LINUX=&quot;ipv6.disable=1&quot;

Enregistrer et fermer le fichier.

 # update-grub2

=== grub-legacy ===

Ajouter ipv6.disable=1 aux paramètres déjà présents à la ligne commençant par #kopt=. Les paramètres passés au noyau sont indépendants du chargeur.

Puis :

 # update-grub

=== sysctl ===

Il est possible de désactiver le support ipv6 par la gestion sysctl du système linux.
Différentes manières existes, l'une étant de modifier le fichier /etc/sysctl.conf pour ajouter :

  net.ipv6.conf.all.disable_ipv6=1
  net.ipv6.conf.default.disable_ipv6=1
  net.ipv6.conf.lo.disable_ipv6=1

Puis de faire lire le fichier par le système, par la commande 'sysctl -p', exécutée avec des droits root.

C'est l'équivalent des commandes suivantes à exécuter en tant qu'administrateur :

  echo '1' &gt; /proc/sys/net/ipv6/conf/lo/disable_ipv6   
  echo '1' &gt; /proc/sys/net/ipv6/conf/all/disable_ipv6   
  echo '1' &gt; /proc/sys/net/ipv6/conf/default/disable_ipv6

Il peut être intéressant de redémarrer le service de la couche réseau !

== Sources ==

http://www.debian-fr.org/debian-2-6-32-5-686-disable-ipv6-t30054.html

http://www.debian-fr.org/digression-debian-2-6-32-5-686-disable-ipv6-t30055.html

http://www.debian-fr.org/blacklist-ipv6-t20222.html

[[Catégorie:Réseau]]</text>
      <sha1>4ni9copwefr0j1qar0ehexxoixlt65w</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5032</id>
      <parentid>5031</parentid>
      <timestamp>2013-02-23T13:41:24Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3328">Désactiver l'IPv6

Selon [http://www.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.29 le changelog des sources de kernel.org] le paramètre disable du module ipv6 a été introduit à partir du noyau 2.6.29.

 IPv6: add &quot;disable&quot; module parameter support to ipv6.ko
 
     Add &quot;disable&quot; module parameter support to ipv6.ko by specifying
     &quot;disable=1&quot; on module load.  We just do the minimum of initializing
     inetsw6[] so calls from other modules to inet6_register_protosw()
     won't OOPs, then bail out.  No IPv6 addresses or sockets can be
     created as a result, and a reboot is required to enable IPv6.

D'après [http://packages.debian.org/changelogs/pool/main/l/linux-2.6/linux-2.6_2.6.32-24/changelog#versionversion2.6.30-1 le changelog du noyau Debian], le module ipv6 est compilé en dur pour les architectures amd64, i386, powerpc et sparc à partir de la version 2.6.30-1.

 * [amd64, i386, powerpc, sparc] Make IPv6 support built-in.

Ce qui signifie que ceux qui compilent leur noyau peuvent le mettre en dur depuis le 2.6.29 (2.6.30-1 pour les autres.)

== Pour les noyaux inférieurs à 2.6.30-1 ==

Dé-commenter et Remplacer

 alias net-pf-10 ipv6

Par :

 alias net-pf-10 off

Dans :

/etc/modprobe.d/aliases
(ou /etc/modprobe.d/aliases.conf à partir de squeeze)

== Pour les noyaux supérieurs ou égaux à 2.6.30-1 ==

Dans le noyau 2.6.32 Debian l'IPv6 n'est plus compilé en module mais en dur. Donc l'astuce à base de blacklist pour empêcher de charger le module n'a plus d'effet. Heureusement le paramètre &quot;disable&quot; du module ipv6 est disponible à partir du noyau 2.6.29. Il est donc possible d'initialiser les paramètres des modules compilés en dur dans les options de la ligne de commande du noyau au démarrage.

=== lilo ===

dans /etc/lilo.conf, ajouter ou modifier l'option append globale avant la déclaration des différents noyaux

 append=&quot;[paramètres préexistants] ipv6.disable=1&quot;

et exécuter lilo

=== grub-pc ===

 # nano /etc/default/grub

Changer la ligne GRUB_CMDLINE_LINUX=&quot;&quot; en GRUB_CMDLINE_LINUX=&quot;ipv6.disable=1&quot;

Enregistrer et fermer le fichier.

 # update-grub2

=== grub-legacy ===

Ajouter ipv6.disable=1 aux paramètres déjà présents à la ligne commençant par #kopt=. Les paramètres passés au noyau sont indépendants du chargeur.

Puis :

 # update-grub

=== sysctl ===

Il est possible de désactiver le support ipv6 par la gestion sysctl du système linux.
Différentes méthodes existent, l'une étant de modifier le fichier /etc/sysctl.conf pour ajouter :

  net.ipv6.conf.all.disable_ipv6=1
  net.ipv6.conf.default.disable_ipv6=1
  net.ipv6.conf.lo.disable_ipv6=1

Puis de faire lire le fichier par le système, par la commande 'sysctl -p' exécutée avec les droits root.

C'est l'équivalent des commandes suivantes à exécuter en tant que root :

  echo '1' &gt; /proc/sys/net/ipv6/conf/lo/disable_ipv6   
  echo '1' &gt; /proc/sys/net/ipv6/conf/all/disable_ipv6   
  echo '1' &gt; /proc/sys/net/ipv6/conf/default/disable_ipv6

Il peut être intéressant de redémarrer le service de la couche réseau !

== Sources ==

http://www.debian-fr.org/debian-2-6-32-5-686-disable-ipv6-t30054.html

http://www.debian-fr.org/digression-debian-2-6-32-5-686-disable-ipv6-t30055.html

http://www.debian-fr.org/blacklist-ipv6-t20222.html

[[Catégorie:Réseau]]</text>
      <sha1>l3k6mfbhldrjsw0tdh05kglh735q3is</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5147</id>
      <parentid>5032</parentid>
      <timestamp>2013-05-12T21:43:03Z</timestamp>
      <contributor>
        <username>PengouinPdt</username>
        <id>249</id>
      </contributor>
      <minor/>
      <comment>/* sysctl : erreur option sysctl 'w' pour write et non 'p' (printing : afficher !) */</comment>
      <text xml:space="preserve" bytes="3328">Désactiver l'IPv6

Selon [http://www.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.29 le changelog des sources de kernel.org] le paramètre disable du module ipv6 a été introduit à partir du noyau 2.6.29.

 IPv6: add &quot;disable&quot; module parameter support to ipv6.ko
 
     Add &quot;disable&quot; module parameter support to ipv6.ko by specifying
     &quot;disable=1&quot; on module load.  We just do the minimum of initializing
     inetsw6[] so calls from other modules to inet6_register_protosw()
     won't OOPs, then bail out.  No IPv6 addresses or sockets can be
     created as a result, and a reboot is required to enable IPv6.

D'après [http://packages.debian.org/changelogs/pool/main/l/linux-2.6/linux-2.6_2.6.32-24/changelog#versionversion2.6.30-1 le changelog du noyau Debian], le module ipv6 est compilé en dur pour les architectures amd64, i386, powerpc et sparc à partir de la version 2.6.30-1.

 * [amd64, i386, powerpc, sparc] Make IPv6 support built-in.

Ce qui signifie que ceux qui compilent leur noyau peuvent le mettre en dur depuis le 2.6.29 (2.6.30-1 pour les autres.)

== Pour les noyaux inférieurs à 2.6.30-1 ==

Dé-commenter et Remplacer

 alias net-pf-10 ipv6

Par :

 alias net-pf-10 off

Dans :

/etc/modprobe.d/aliases
(ou /etc/modprobe.d/aliases.conf à partir de squeeze)

== Pour les noyaux supérieurs ou égaux à 2.6.30-1 ==

Dans le noyau 2.6.32 Debian l'IPv6 n'est plus compilé en module mais en dur. Donc l'astuce à base de blacklist pour empêcher de charger le module n'a plus d'effet. Heureusement le paramètre &quot;disable&quot; du module ipv6 est disponible à partir du noyau 2.6.29. Il est donc possible d'initialiser les paramètres des modules compilés en dur dans les options de la ligne de commande du noyau au démarrage.

=== lilo ===

dans /etc/lilo.conf, ajouter ou modifier l'option append globale avant la déclaration des différents noyaux

 append=&quot;[paramètres préexistants] ipv6.disable=1&quot;

et exécuter lilo

=== grub-pc ===

 # nano /etc/default/grub

Changer la ligne GRUB_CMDLINE_LINUX=&quot;&quot; en GRUB_CMDLINE_LINUX=&quot;ipv6.disable=1&quot;

Enregistrer et fermer le fichier.

 # update-grub2

=== grub-legacy ===

Ajouter ipv6.disable=1 aux paramètres déjà présents à la ligne commençant par #kopt=. Les paramètres passés au noyau sont indépendants du chargeur.

Puis :

 # update-grub

=== sysctl ===

Il est possible de désactiver le support ipv6 par la gestion sysctl du système linux.
Différentes méthodes existent, l'une étant de modifier le fichier /etc/sysctl.conf pour ajouter :

  net.ipv6.conf.all.disable_ipv6=1
  net.ipv6.conf.default.disable_ipv6=1
  net.ipv6.conf.lo.disable_ipv6=1

Puis de faire lire le fichier par le système, par la commande 'sysctl -w' exécutée avec les droits root.

C'est l'équivalent des commandes suivantes à exécuter en tant que root :

  echo '1' &gt; /proc/sys/net/ipv6/conf/lo/disable_ipv6   
  echo '1' &gt; /proc/sys/net/ipv6/conf/all/disable_ipv6   
  echo '1' &gt; /proc/sys/net/ipv6/conf/default/disable_ipv6

Il peut être intéressant de redémarrer le service de la couche réseau !

== Sources ==

http://www.debian-fr.org/debian-2-6-32-5-686-disable-ipv6-t30054.html

http://www.debian-fr.org/digression-debian-2-6-32-5-686-disable-ipv6-t30055.html

http://www.debian-fr.org/blacklist-ipv6-t20222.html

[[Catégorie:Réseau]]</text>
      <sha1>gh40vt1inzrd7ak7tj28yhi2wwthfo1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Edition Video</title>
    <ns>0</ns>
    <id>1170</id>
    <revision>
      <id>4800</id>
      <timestamp>2012-12-07T11:32:32Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>Page créée avec « = Logiciels d'édition/encodage de videos =   Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limita... »</comment>
      <text xml:space="preserve" bytes="509">= Logiciels d'édition/encodage de videos = 

Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles)

Voir éventuellement par ici: http://lprod.org/wiki/doku.php/video

Commandes/Logiciels utiles:

== Encoder en ligne de commande ==
* mencoder
* ffmpeg / avconv
* ffmpeg2theora

== Encoder en graphique ==
* avidemux ? (pas dispo dans les dépots)

== Editer ==
* kdenlive, etc...</text>
      <sha1>842zlwywcc7762ap74a31oc80vqzmj9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4805</id>
      <parentid>4800</parentid>
      <timestamp>2012-12-08T15:47:38Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>refonte</comment>
      <text xml:space="preserve" bytes="2598">= Logiciels d'édition/encodage de videos = 

* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video


== Encoder en ligne de commande ==
'''mencoder''' et '''ffmpeg''' sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

=== mencoder ===
* http://doc.ubuntu-fr.org/mencoder
==== Comment recenser les codecs audio/video disponibles ? ====
&lt;code&gt;?&lt;/code&gt;
==== Un exemple d'utilisation ====
&lt;code&gt;?&lt;/code&gt;

=== ffmpeg / avconv ===
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg
==== Comment recenser les codecs audio/video disponibles ? ====
&lt;code&gt;ffmpeg -codecs&lt;/code&gt;
==== Un exemple d'utilisation ====
&lt;code&gt;?&lt;/code&gt;
=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.




== Encoder en graphique ==

=== avidemux === 
Hélas, n'est pas dispo dans les dépots.
* ITP ?
* Compiler dans Debian ? http://avidemux.org/smuf/index.php/topic,8262.msg45948.html



== Editer en ligne de commande ==
Il paraît que c'est possible ...


== Editer en graphique ==
=== kdenlive ===
* Site officiel:
* Paquet debian: 
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== kino ===
* Site officiel:
* Paquet debian: 
Pour KDE. Simple à utiliser, peut-être trop basique ?

=== cinelerra ===
* Site officiel:
* Paquet debian: 
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Open Movie Editor ===
* Site officiel:
* Paquet debian: 
Pas testé.</text>
      <sha1>0787l67ir6974xmnhm9p880s26hgpxu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4806</id>
      <parentid>4805</parentid>
      <timestamp>2012-12-08T15:54:41Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* ffmpeg / avconv */</comment>
      <text xml:space="preserve" bytes="3093">= Logiciels d'édition/encodage de videos = 

* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video


== Encoder en ligne de commande ==
'''mencoder''' et '''ffmpeg''' sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

=== mencoder ===
* http://doc.ubuntu-fr.org/mencoder
==== Comment recenser les codecs audio/video disponibles ? ====
&lt;code&gt;?&lt;/code&gt;
==== Un exemple d'utilisation ====
&lt;code&gt;?&lt;/code&gt;

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Debian intègre avconv dans ses dépots, au détriment de ffmpeg. Les 2 outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Comment recenser les codecs audio/video disponibles ? ====
&lt;code&gt;ffmpeg -codecs&lt;/code&gt;
==== Comment spécifier un codec audio/video à utilier ? ====
&lt;code&gt;avconv ?&lt;/code&gt;
==== Un exemple d'utilisation ====
&lt;code&gt;ffmpeg ?&lt;/code&gt;

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.




== Encoder en graphique ==

=== avidemux === 
Hélas, n'est pas dispo dans les dépots.
* ITP ?
* Compiler dans Debian ? http://avidemux.org/smuf/index.php/topic,8262.msg45948.html



== Editer en ligne de commande ==
Il paraît que c'est possible ...


== Editer en graphique ==
=== kdenlive ===
* Site officiel:
* Paquet debian: 
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== kino ===
* Site officiel:
* Paquet debian: 
Pour KDE. Simple à utiliser, peut-être trop basique ?

=== cinelerra ===
* Site officiel:
* Paquet debian: 
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Open Movie Editor ===
* Site officiel:
* Paquet debian: 
Pas testé.</text>
      <sha1>8nrifi74smajvif4tnlcnchaptvbn0j</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4807</id>
      <parentid>4806</parentid>
      <timestamp>2012-12-08T16:01:31Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Editer en ligne de commande */</comment>
      <text xml:space="preserve" bytes="3394">= Logiciels d'édition/encodage de videos = 

* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video


== Encoder en ligne de commande ==
'''mencoder''' et '''ffmpeg''' sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

=== mencoder ===
* http://doc.ubuntu-fr.org/mencoder
==== Comment recenser les codecs audio/video disponibles ? ====
&lt;code&gt;?&lt;/code&gt;
==== Un exemple d'utilisation ====
&lt;code&gt;?&lt;/code&gt;

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Debian intègre avconv dans ses dépots, au détriment de ffmpeg. Les 2 outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Comment recenser les codecs audio/video disponibles ? ====
&lt;code&gt;ffmpeg -codecs&lt;/code&gt;
==== Comment spécifier un codec audio/video à utilier ? ====
&lt;code&gt;avconv ?&lt;/code&gt;
==== Un exemple d'utilisation ====
&lt;code&gt;ffmpeg ?&lt;/code&gt;

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.




== Encoder en graphique ==

=== avidemux === 
Hélas, n'est pas dispo dans les dépots.
* ITP ?
* Compiler dans Debian ? http://avidemux.org/smuf/index.php/topic,8262.msg45948.html



== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).

Remarque: suspicion que cet outil n'est plus développé !

== Editer en graphique ==
=== kdenlive ===
* Site officiel:
* Paquet debian: 
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== kino ===
* Site officiel:
* Paquet debian: 
Pour KDE. Simple à utiliser, peut-être trop basique ?

=== cinelerra ===
* Site officiel:
* Paquet debian: 
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Open Movie Editor ===
* Site officiel:
* Paquet debian: 
Pas testé.</text>
      <sha1>l2am8s3hvz88tm5lcnpin2cghc3ytt8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4808</id>
      <parentid>4807</parentid>
      <timestamp>2012-12-08T16:03:32Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Logiciels d'édition/encodage de videos */</comment>
      <text xml:space="preserve" bytes="3460">= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video


== Encoder en ligne de commande ==
'''mencoder''' et '''ffmpeg''' sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

=== mencoder ===
* http://doc.ubuntu-fr.org/mencoder
==== Comment recenser les codecs audio/video disponibles ? ====
&lt;code&gt;?&lt;/code&gt;
==== Un exemple d'utilisation ====
&lt;code&gt;?&lt;/code&gt;

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Debian intègre avconv dans ses dépots, au détriment de ffmpeg. Les 2 outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Comment recenser les codecs audio/video disponibles ? ====
&lt;code&gt;ffmpeg -codecs&lt;/code&gt;
==== Comment spécifier un codec audio/video à utilier ? ====
&lt;code&gt;avconv ?&lt;/code&gt;
==== Un exemple d'utilisation ====
&lt;code&gt;ffmpeg ?&lt;/code&gt;

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.




== Encoder en graphique ==

=== avidemux === 
Hélas, n'est pas dispo dans les dépots.
* ITP ?
* Compiler dans Debian ? http://avidemux.org/smuf/index.php/topic,8262.msg45948.html



== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).

Remarque: suspicion que cet outil n'est plus développé !

== Editer en graphique ==
=== kdenlive ===
* Site officiel:
* Paquet debian: 
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== kino ===
* Site officiel:
* Paquet debian: 
Pour KDE. Simple à utiliser, peut-être trop basique ?

=== cinelerra ===
* Site officiel:
* Paquet debian: 
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Open Movie Editor ===
* Site officiel:
* Paquet debian: 
Pas testé.</text>
      <sha1>i8kh1no34gnpv2qe4j3x63sha39m1q6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4809</id>
      <parentid>4808</parentid>
      <timestamp>2012-12-08T16:13:28Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* ffmpeg2theora */</comment>
      <text xml:space="preserve" bytes="3965">= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video


== Encoder en ligne de commande ==
'''mencoder''' et '''ffmpeg''' sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

=== mencoder ===
* http://doc.ubuntu-fr.org/mencoder
==== Comment recenser les codecs audio/video disponibles ? ====
&lt;code&gt;?&lt;/code&gt;
==== Un exemple d'utilisation ====
&lt;code&gt;?&lt;/code&gt;

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Debian intègre avconv dans ses dépots, au détriment de ffmpeg. Les 2 outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Comment recenser les codecs audio/video disponibles ? ====
&lt;code&gt;ffmpeg -codecs&lt;/code&gt;
==== Comment spécifier un codec audio/video à utilier ? ====
&lt;code&gt;avconv ?&lt;/code&gt;
==== Un exemple d'utilisation ====
&lt;code&gt;ffmpeg ?&lt;/code&gt;

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

=== autres outils spécifiques aux formats ===
Plusieurs formats ouverts pour l'audio/video proposent leurs propres outils, on peut citer:

* vorbis-tools: http://packages.debian.org/search?keywords=vorbis-tools (juste pour l'audio OGG Vorbis et FLAC)
* mkvtoolnix: http://packages.debian.org/search?keywords=mkvtoolnix (pour le format Matroska Video [MKV], il existe aussi une interface graphique pour l'outil)

== Encoder en graphique ==

=== avidemux === 
Hélas, n'est pas dispo dans les dépots.
* ITP ?
* Compiler dans Debian ? http://avidemux.org/smuf/index.php/topic,8262.msg45948.html



== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).

Remarque: suspicion que cet outil n'est plus développé !

== Editer en graphique ==
=== kdenlive ===
* Site officiel:
* Paquet debian: 
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== kino ===
* Site officiel:
* Paquet debian: 
Pour KDE. Simple à utiliser, peut-être trop basique ?

=== cinelerra ===
* Site officiel:
* Paquet debian: 
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Open Movie Editor ===
* Site officiel:
* Paquet debian: 
Pas testé.</text>
      <sha1>4ksjuh85xageydceu4tzjdua7asao8y</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4811</id>
      <parentid>4809</parentid>
      <timestamp>2012-12-08T16:51:17Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>/* Encoder en ligne de commande */</comment>
      <text xml:space="preserve" bytes="4607">= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video


== Encoder en ligne de commande ==
'''mencoder''' et '''ffmpeg''' sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui remplacera ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
 mencoder -oac help (liste les codecs audio)
 mencoder -ovc help (liste les codecs vidéos)

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
 mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;


[http://doc.ubuntu-fr.org/mencoder source]

[http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html source]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Debian intégrera avconv dans ses dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Comment recenser les codecs audio/video disponibles ? ====
&lt;code&gt;ffmpeg -formats&lt;/code&gt;
==== Comment spécifier un codec audio/video à utilier ? ====
&lt;code&gt;avconv ?&lt;/code&gt;
==== Un exemple d'utilisation ====
&lt;code&gt;ffmpeg ?&lt;/code&gt;

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

=== autres outils spécifiques aux formats ===
Plusieurs formats ouverts pour l'audio/video proposent leurs propres outils, on peut citer:

* vorbis-tools: http://packages.debian.org/search?keywords=vorbis-tools (juste pour l'audio OGG Vorbis et FLAC)
* mkvtoolnix: http://packages.debian.org/search?keywords=mkvtoolnix (pour le format Matroska Video [MKV], il existe aussi une interface graphique pour l'outil)

== Encoder en graphique ==

=== avidemux === 
Hélas, n'est pas dispo dans les dépots.
* ITP ?
* Compiler dans Debian ? http://avidemux.org/smuf/index.php/topic,8262.msg45948.html



== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).

Remarque: suspicion que cet outil n'est plus développé !

== Editer en graphique ==
=== kdenlive ===
* Site officiel:
* Paquet debian: 
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== kino ===
* Site officiel:
* Paquet debian: 
Pour KDE. Simple à utiliser, peut-être trop basique ?

=== cinelerra ===
* Site officiel:
* Paquet debian: 
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Open Movie Editor ===
* Site officiel:
* Paquet debian: 
Pas testé.</text>
      <sha1>horhgzcblwv25n5vuxm3lkjf78210lm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4812</id>
      <parentid>4811</parentid>
      <timestamp>2012-12-08T16:59:59Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>/* avidemux */</comment>
      <text xml:space="preserve" bytes="4783">= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video


== Encoder en ligne de commande ==
'''mencoder''' et '''ffmpeg''' sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui remplacera ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
 mencoder -oac help (liste les codecs audio)
 mencoder -ovc help (liste les codecs vidéos)

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
 mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;


[http://doc.ubuntu-fr.org/mencoder source]

[http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html source]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Debian intégrera avconv dans ses dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Comment recenser les codecs audio/video disponibles ? ====
&lt;code&gt;ffmpeg -formats&lt;/code&gt;
==== Comment spécifier un codec audio/video à utilier ? ====
&lt;code&gt;avconv ?&lt;/code&gt;
==== Un exemple d'utilisation ====
&lt;code&gt;ffmpeg ?&lt;/code&gt;

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

=== autres outils spécifiques aux formats ===
Plusieurs formats ouverts pour l'audio/video proposent leurs propres outils, on peut citer:

* vorbis-tools: http://packages.debian.org/search?keywords=vorbis-tools (juste pour l'audio OGG Vorbis et FLAC)
* mkvtoolnix: http://packages.debian.org/search?keywords=mkvtoolnix (pour le format Matroska Video [MKV], il existe aussi une interface graphique pour l'outil)

== Encoder en graphique ==

=== avidemux === 
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ Multimedia].

Voir par ici pour savoir comment les ajouter à votre système pour pouvoir y installer Avidemux :
[[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | ajouter un dépôt tiers]]

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).

Remarque: suspicion que cet outil n'est plus développé !

== Editer en graphique ==
=== kdenlive ===
* Site officiel:
* Paquet debian: 
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== kino ===
* Site officiel:
* Paquet debian: 
Pour KDE. Simple à utiliser, peut-être trop basique ?

=== cinelerra ===
* Site officiel:
* Paquet debian: 
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Open Movie Editor ===
* Site officiel:
* Paquet debian: 
Pas testé.</text>
      <sha1>l3b8gp3ubx0sdequ9huvoljaow7s53z</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4813</id>
      <parentid>4812</parentid>
      <timestamp>2012-12-08T17:05:21Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="4833">{{Ébauche|L'édition et l'encodage de vidéos}}

= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video


== Encoder en ligne de commande ==
'''mencoder''' et '''ffmpeg''' sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui remplacera ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
 mencoder -oac help (liste les codecs audio)
 mencoder -ovc help (liste les codecs vidéos)

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
 mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;


[http://doc.ubuntu-fr.org/mencoder source]

[http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html source]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Debian intégrera avconv dans ses dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Comment recenser les codecs audio/video disponibles ? ====
&lt;code&gt;ffmpeg -formats&lt;/code&gt;
==== Comment spécifier un codec audio/video à utilier ? ====
&lt;code&gt;avconv ?&lt;/code&gt;
==== Un exemple d'utilisation ====
&lt;code&gt;ffmpeg ?&lt;/code&gt;

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

=== autres outils spécifiques aux formats ===
Plusieurs formats ouverts pour l'audio/video proposent leurs propres outils, on peut citer:

* vorbis-tools: http://packages.debian.org/search?keywords=vorbis-tools (juste pour l'audio OGG Vorbis et FLAC)
* mkvtoolnix: http://packages.debian.org/search?keywords=mkvtoolnix (pour le format Matroska Video [MKV], il existe aussi une interface graphique pour l'outil)

== Encoder en graphique ==

=== avidemux === 
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ Multimedia].

Voir par ici pour savoir comment les ajouter à votre système pour pouvoir y installer Avidemux :
[[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | ajouter un dépôt tiers]]

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).

Remarque: suspicion que cet outil n'est plus développé !

== Editer en graphique ==
=== kdenlive ===
* Site officiel:
* Paquet debian: 
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== kino ===
* Site officiel:
* Paquet debian: 
Pour KDE. Simple à utiliser, peut-être trop basique ?

=== cinelerra ===
* Site officiel:
* Paquet debian: 
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Open Movie Editor ===
* Site officiel:
* Paquet debian: 
Pas testé.</text>
      <sha1>selorcobcsfnjuoj5a2iwwly1bn5b91</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4814</id>
      <parentid>4813</parentid>
      <timestamp>2012-12-08T19:15:17Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <text xml:space="preserve" bytes="6341">{{Ébauche|L'édition et l'encodage de vidéos}}

= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video


== Encoder en ligne de commande ==
'''mencoder''' et '''ffmpeg''' sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui remplacera ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
&lt;code bash&gt;
#liste les codecs audio
mencoder -oac help
#liste les codecs vidéos
mencoder -ovc help
&lt;/code&gt;

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
&lt;code bash&gt;
mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;
&lt;/code&gt;

==== Voir aussi ====
* [http://doc.ubuntu-fr.org/mencoder Documentation mencoder sur Ubuntu-fr]
* [http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html Documentation mencoder sur mplayerhq]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Debian intégrera avconv dans ses dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Comment recenser les codecs audio/video disponibles ? ====
&lt;code&gt;ffmpeg -formats&lt;/code&gt;
==== Comment spécifier un codec audio/video à utilier ? ====
&lt;code&gt;avconv ?&lt;/code&gt;
==== Un exemple d'utilisation ====
&lt;code&gt;ffmpeg ?&lt;/code&gt;

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

=== autres outils spécifiques aux formats ===
Plusieurs formats ouverts pour l'audio/video proposent leurs propres outils, on peut citer:

* vorbis-tools: http://packages.debian.org/search?keywords=vorbis-tools (juste pour l'audio OGG Vorbis et FLAC)
* mkvtoolnix: http://packages.debian.org/search?keywords=mkvtoolnix (pour le format Matroska Video [MKV], il existe aussi une interface graphique pour l'outil)

== Encoder en graphique ==

=== avidemux === 
Avidemux n'est pas disponible dans les dépots officiels de Debian, et cela est bien dommage, mais voici plusieurs approches pour tenter de répondre à ce problème:
==== Solution 1: dépots Multimedia ====
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ Multimedia].
Si vous souhaitez ajouter ce dépot, voyez [[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | comment ajouter un dépôt tiers]] à votre système.
A prendre avec des pincettes, mais notez que: installer ce dépot amènera l'installation aura pour effet de remplacer une bonne partie de vos paquets existants par des versions non-libres, qui ne font pas l'objet du même soin que ceux intégrés au projet Debian.

==== Solution 2: compiler depuis les sources ====
Lisez la documentation du wiki: http://www.avidemux.org/admWiki/doku.php?id=build:install_2.6

==== Solution 3: aider à intégrer avidemux dans Debian ====
* Existe-t-il une ITP ?
* Ca fait des années que l'outil existe, pourquoi n'est-il pas déjà dans Debian ? Raison 1: il aurait été amputé d'une bonne partie de ses codecs. Raison 2: Pourquoi quoi, kwak pouet. 

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).

Remarque: suspicion que cet outil n'est plus développé !

== Editer en graphique ==
=== kdenlive ===
* Site officiel: http://kdenlive.org/
* Paquet debian: http://packages.debian.org/search?keywords=kdenlive
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== kino ===
* Site officiel: http://www.kinodv.org/
* Paquet debian: http://packages.debian.org/search?keywords=kino
Pour KDE. Simple à utiliser, peut-être trop basique ?

=== cinelerra et cinelerra CV ===
cinelerra existe en 2 versions. CV voulant dire &quot;Community Version&quot;.

* Site officiel de cinelerra: http://heroinewarrior.com/cinelerra.php
* Site officiel de cinelerra CV: http://cinelerra.org
* Paquet debian: absent des dépots officiels, présent dans le dépot Multimedia 
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Open Movie Editor ===
* Site officiel: http://www.openmovieeditor.org/
* Paquet debian: aucun ou trop vieux ( http://packages.debian.org/search?searchon=names&amp;keywords=open+movie )
Pas testé.</text>
      <sha1>rc2eoexdeoru9bg80i8da0m5lov15on</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4827</id>
      <parentid>4814</parentid>
      <timestamp>2012-12-11T15:07:45Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>/* Solution 1: dépots Multimedia */</comment>
      <text xml:space="preserve" bytes="6420">{{Ébauche|L'édition et l'encodage de vidéos}}

= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video


== Encoder en ligne de commande ==
'''mencoder''' et '''ffmpeg''' sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui remplacera ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
&lt;code bash&gt;
#liste les codecs audio
mencoder -oac help
#liste les codecs vidéos
mencoder -ovc help
&lt;/code&gt;

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
&lt;code bash&gt;
mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;
&lt;/code&gt;

==== Voir aussi ====
* [http://doc.ubuntu-fr.org/mencoder Documentation mencoder sur Ubuntu-fr]
* [http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html Documentation mencoder sur mplayerhq]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Debian intégrera avconv dans ses dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Comment recenser les codecs audio/video disponibles ? ====
&lt;code&gt;ffmpeg -formats&lt;/code&gt;
==== Comment spécifier un codec audio/video à utilier ? ====
&lt;code&gt;avconv ?&lt;/code&gt;
==== Un exemple d'utilisation ====
&lt;code&gt;ffmpeg ?&lt;/code&gt;

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

=== autres outils spécifiques aux formats ===
Plusieurs formats ouverts pour l'audio/video proposent leurs propres outils, on peut citer:

* vorbis-tools: http://packages.debian.org/search?keywords=vorbis-tools (juste pour l'audio OGG Vorbis et FLAC)
* mkvtoolnix: http://packages.debian.org/search?keywords=mkvtoolnix (pour le format Matroska Video [MKV], il existe aussi une interface graphique pour l'outil)

== Encoder en graphique ==

=== avidemux === 
Avidemux n'est pas disponible dans les dépots officiels de Debian, et cela est bien dommage, mais voici plusieurs approches pour tenter de répondre à ce problème:
==== Solution 1: dépots Multimedia ====
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ Multimedia].
Si vous souhaitez ajouter ce dépot, voyez [[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | comment ajouter un dépôt tiers]] à votre système.

A prendre avec des pincettes, mais notez que: installer ce dépôt amènera l'installation aura pour effet de remplacer une bonne partie de vos paquets existants par des versions non-libres, qui ne font pas l'objet du même soin que ceux intégrés au projet Debian. (cette affirmation demande vérification, rendez-vous en page de discussion)

==== Solution 2: compiler depuis les sources ====
Lisez la documentation du wiki: http://www.avidemux.org/admWiki/doku.php?id=build:install_2.6

==== Solution 3: aider à intégrer avidemux dans Debian ====
* Existe-t-il une ITP ?
* Ca fait des années que l'outil existe, pourquoi n'est-il pas déjà dans Debian ? Raison 1: il aurait été amputé d'une bonne partie de ses codecs. Raison 2: Pourquoi quoi, kwak pouet. 

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).

Remarque: suspicion que cet outil n'est plus développé !

== Editer en graphique ==
=== kdenlive ===
* Site officiel: http://kdenlive.org/
* Paquet debian: http://packages.debian.org/search?keywords=kdenlive
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== kino ===
* Site officiel: http://www.kinodv.org/
* Paquet debian: http://packages.debian.org/search?keywords=kino
Pour KDE. Simple à utiliser, peut-être trop basique ?

=== cinelerra et cinelerra CV ===
cinelerra existe en 2 versions. CV voulant dire &quot;Community Version&quot;.

* Site officiel de cinelerra: http://heroinewarrior.com/cinelerra.php
* Site officiel de cinelerra CV: http://cinelerra.org
* Paquet debian: absent des dépots officiels, présent dans le dépot Multimedia 
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Open Movie Editor ===
* Site officiel: http://www.openmovieeditor.org/
* Paquet debian: aucun ou trop vieux ( http://packages.debian.org/search?searchon=names&amp;keywords=open+movie )
Pas testé.</text>
      <sha1>empqj82kqnpu9aj95w93uogv9uvp4nn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4832</id>
      <parentid>4827</parentid>
      <timestamp>2012-12-12T12:02:41Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Solution 1: dépots Multimedia */</comment>
      <text xml:space="preserve" bytes="6319">{{Ébauche|L'édition et l'encodage de vidéos}}

= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video


== Encoder en ligne de commande ==
'''mencoder''' et '''ffmpeg''' sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui remplacera ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
&lt;code bash&gt;
#liste les codecs audio
mencoder -oac help
#liste les codecs vidéos
mencoder -ovc help
&lt;/code&gt;

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
&lt;code bash&gt;
mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;
&lt;/code&gt;

==== Voir aussi ====
* [http://doc.ubuntu-fr.org/mencoder Documentation mencoder sur Ubuntu-fr]
* [http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html Documentation mencoder sur mplayerhq]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Debian intégrera avconv dans ses dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Comment recenser les codecs audio/video disponibles ? ====
&lt;code&gt;ffmpeg -formats&lt;/code&gt;
==== Comment spécifier un codec audio/video à utilier ? ====
&lt;code&gt;avconv ?&lt;/code&gt;
==== Un exemple d'utilisation ====
&lt;code&gt;ffmpeg ?&lt;/code&gt;

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

=== autres outils spécifiques aux formats ===
Plusieurs formats ouverts pour l'audio/video proposent leurs propres outils, on peut citer:

* vorbis-tools: http://packages.debian.org/search?keywords=vorbis-tools (juste pour l'audio OGG Vorbis et FLAC)
* mkvtoolnix: http://packages.debian.org/search?keywords=mkvtoolnix (pour le format Matroska Video [MKV], il existe aussi une interface graphique pour l'outil)

== Encoder en graphique ==

=== avidemux === 
Avidemux n'est pas disponible dans les dépots officiels de Debian, et cela est bien dommage, mais voici plusieurs approches pour tenter de répondre à ce problème:
==== Solution 1: dépots deb-multimedia ====
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ deb-multimedia]. Nous vous conseillons de prendre connaissance de [http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F|cette entrée du FAQ Debian] si vous comptez l'utiliser.

Pour l'ajouter, voyez [[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | comment ajouter un dépôt tiers]] à votre système.

==== Solution 2: compiler depuis les sources ====
Lisez la documentation du wiki: http://www.avidemux.org/admWiki/doku.php?id=build:install_2.6

==== Solution 3: aider à intégrer avidemux dans Debian ====
* Existe-t-il une ITP ?
* Ca fait des années que l'outil existe, pourquoi n'est-il pas déjà dans Debian ? Raison 1: il aurait été amputé d'une bonne partie de ses codecs. Raison 2: Pourquoi quoi, kwak pouet. 

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).

Remarque: suspicion que cet outil n'est plus développé !

== Editer en graphique ==
=== kdenlive ===
* Site officiel: http://kdenlive.org/
* Paquet debian: http://packages.debian.org/search?keywords=kdenlive
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== kino ===
* Site officiel: http://www.kinodv.org/
* Paquet debian: http://packages.debian.org/search?keywords=kino
Pour KDE. Simple à utiliser, peut-être trop basique ?

=== cinelerra et cinelerra CV ===
cinelerra existe en 2 versions. CV voulant dire &quot;Community Version&quot;.

* Site officiel de cinelerra: http://heroinewarrior.com/cinelerra.php
* Site officiel de cinelerra CV: http://cinelerra.org
* Paquet debian: absent des dépots officiels, présent dans le dépot Multimedia 
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Open Movie Editor ===
* Site officiel: http://www.openmovieeditor.org/
* Paquet debian: aucun ou trop vieux ( http://packages.debian.org/search?searchon=names&amp;keywords=open+movie )
Pas testé.</text>
      <sha1>d3rtq0jhyv4pp6rh2zkwfql2bc4mbsy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4833</id>
      <parentid>4832</parentid>
      <timestamp>2012-12-12T12:20:33Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Logiciels d'édition/encodage de videos */ considérations générales encodage video</comment>
      <text xml:space="preserve" bytes="6833">{{Ébauche|L'édition et l'encodage de vidéos}}

= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

== Notes sur la rédaction de cette page ==
* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video

== Considérations générales sur l'encodage de videos ==

* https://en.wikipedia.org/wiki/HTML5_video#Browser_support, prise en charge par les différents navigateurs des codecs video avec la balise HTML5 &lt;video&gt;
* Indication: en format OGV, avec les réglages par défaut de ffmpeg2theora, comptez ~100Mo pour une video de 10 minutes.
* Indication: pour youtube ou les lecteurs flash, le format video recommandé est le suivant: conteneur mp4, video x264, audio AAC.

== Encoder en ligne de commande ==
'''mencoder''' et '''ffmpeg''' sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui remplacera ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
&lt;code bash&gt;
#liste les codecs audio
mencoder -oac help
#liste les codecs vidéos
mencoder -ovc help
&lt;/code&gt;

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
&lt;code bash&gt;
mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;
&lt;/code&gt;

==== Voir aussi ====
* [http://doc.ubuntu-fr.org/mencoder Documentation mencoder sur Ubuntu-fr]
* [http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html Documentation mencoder sur mplayerhq]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Debian intégrera avconv dans ses dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Comment recenser les codecs audio/video disponibles ? ====
&lt;code&gt;ffmpeg -formats&lt;/code&gt;
==== Comment spécifier un codec audio/video à utilier ? ====
&lt;code&gt;avconv ?&lt;/code&gt;
==== Un exemple d'utilisation ====
&lt;code&gt;ffmpeg ?&lt;/code&gt;

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

=== autres outils spécifiques aux formats ===
Plusieurs formats ouverts pour l'audio/video proposent leurs propres outils, on peut citer:

* vorbis-tools: http://packages.debian.org/search?keywords=vorbis-tools (juste pour l'audio OGG Vorbis et FLAC)
* mkvtoolnix: http://packages.debian.org/search?keywords=mkvtoolnix (pour le format Matroska Video [MKV], il existe aussi une interface graphique pour l'outil)

== Encoder en graphique ==

=== avidemux === 
Avidemux n'est pas disponible dans les dépots officiels de Debian, et cela est bien dommage, mais voici plusieurs approches pour tenter de répondre à ce problème:
==== Solution 1: dépots deb-multimedia ====
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ deb-multimedia]. Nous vous conseillons de prendre connaissance de [http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F|cette entrée du FAQ Debian] si vous comptez l'utiliser.

Pour l'ajouter, voyez [[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | comment ajouter un dépôt tiers]] à votre système.

==== Solution 2: compiler depuis les sources ====
Lisez la documentation du wiki: http://www.avidemux.org/admWiki/doku.php?id=build:install_2.6

==== Solution 3: aider à intégrer avidemux dans Debian ====
* Existe-t-il une ITP ?
* Ca fait des années que l'outil existe, pourquoi n'est-il pas déjà dans Debian ? Raison 1: il aurait été amputé d'une bonne partie de ses codecs. Raison 2: Pourquoi quoi, kwak pouet. 

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).

Remarque: suspicion que cet outil n'est plus développé !

== Editer en graphique ==
=== kdenlive ===
* Site officiel: http://kdenlive.org/
* Paquet debian: http://packages.debian.org/search?keywords=kdenlive
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== kino ===
* Site officiel: http://www.kinodv.org/
* Paquet debian: http://packages.debian.org/search?keywords=kino
Pour KDE. Simple à utiliser, peut-être trop basique ?

=== cinelerra et cinelerra CV ===
cinelerra existe en 2 versions. CV voulant dire &quot;Community Version&quot;.

* Site officiel de cinelerra: http://heroinewarrior.com/cinelerra.php
* Site officiel de cinelerra CV: http://cinelerra.org
* Paquet debian: absent des dépots officiels, présent dans le dépot Multimedia 
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Open Movie Editor ===
* Site officiel: http://www.openmovieeditor.org/
* Paquet debian: aucun ou trop vieux ( http://packages.debian.org/search?searchon=names&amp;keywords=open+movie )
Pas testé.</text>
      <sha1>bho4k81zycvh4lygzorovl2h73k5ga3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4834</id>
      <parentid>4833</parentid>
      <timestamp>2012-12-12T12:39:13Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>/* Solution 1: dépots deb-multimedia */</comment>
      <text xml:space="preserve" bytes="6833">{{Ébauche|L'édition et l'encodage de vidéos}}

= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

== Notes sur la rédaction de cette page ==
* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video

== Considérations générales sur l'encodage de videos ==

* https://en.wikipedia.org/wiki/HTML5_video#Browser_support, prise en charge par les différents navigateurs des codecs video avec la balise HTML5 &lt;video&gt;
* Indication: en format OGV, avec les réglages par défaut de ffmpeg2theora, comptez ~100Mo pour une video de 10 minutes.
* Indication: pour youtube ou les lecteurs flash, le format video recommandé est le suivant: conteneur mp4, video x264, audio AAC.

== Encoder en ligne de commande ==
'''mencoder''' et '''ffmpeg''' sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui remplacera ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
&lt;code bash&gt;
#liste les codecs audio
mencoder -oac help
#liste les codecs vidéos
mencoder -ovc help
&lt;/code&gt;

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
&lt;code bash&gt;
mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;
&lt;/code&gt;

==== Voir aussi ====
* [http://doc.ubuntu-fr.org/mencoder Documentation mencoder sur Ubuntu-fr]
* [http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html Documentation mencoder sur mplayerhq]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Debian intégrera avconv dans ses dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Comment recenser les codecs audio/video disponibles ? ====
&lt;code&gt;ffmpeg -formats&lt;/code&gt;
==== Comment spécifier un codec audio/video à utilier ? ====
&lt;code&gt;avconv ?&lt;/code&gt;
==== Un exemple d'utilisation ====
&lt;code&gt;ffmpeg ?&lt;/code&gt;

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

=== autres outils spécifiques aux formats ===
Plusieurs formats ouverts pour l'audio/video proposent leurs propres outils, on peut citer:

* vorbis-tools: http://packages.debian.org/search?keywords=vorbis-tools (juste pour l'audio OGG Vorbis et FLAC)
* mkvtoolnix: http://packages.debian.org/search?keywords=mkvtoolnix (pour le format Matroska Video [MKV], il existe aussi une interface graphique pour l'outil)

== Encoder en graphique ==

=== avidemux === 
Avidemux n'est pas disponible dans les dépots officiels de Debian, et cela est bien dommage, mais voici plusieurs approches pour tenter de répondre à ce problème:
==== Solution 1: dépots deb-multimedia ====
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ deb-multimedia]. Nous vous conseillons de prendre connaissance de [http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F cette entrée du FAQ Debian] si vous comptez l'utiliser.

Pour l'ajouter, voyez [[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | comment ajouter un dépôt tiers]] à votre système.

==== Solution 2: compiler depuis les sources ====
Lisez la documentation du wiki: http://www.avidemux.org/admWiki/doku.php?id=build:install_2.6

==== Solution 3: aider à intégrer avidemux dans Debian ====
* Existe-t-il une ITP ?
* Ca fait des années que l'outil existe, pourquoi n'est-il pas déjà dans Debian ? Raison 1: il aurait été amputé d'une bonne partie de ses codecs. Raison 2: Pourquoi quoi, kwak pouet. 

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).

Remarque: suspicion que cet outil n'est plus développé !

== Editer en graphique ==
=== kdenlive ===
* Site officiel: http://kdenlive.org/
* Paquet debian: http://packages.debian.org/search?keywords=kdenlive
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== kino ===
* Site officiel: http://www.kinodv.org/
* Paquet debian: http://packages.debian.org/search?keywords=kino
Pour KDE. Simple à utiliser, peut-être trop basique ?

=== cinelerra et cinelerra CV ===
cinelerra existe en 2 versions. CV voulant dire &quot;Community Version&quot;.

* Site officiel de cinelerra: http://heroinewarrior.com/cinelerra.php
* Site officiel de cinelerra CV: http://cinelerra.org
* Paquet debian: absent des dépots officiels, présent dans le dépot Multimedia 
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Open Movie Editor ===
* Site officiel: http://www.openmovieeditor.org/
* Paquet debian: aucun ou trop vieux ( http://packages.debian.org/search?searchon=names&amp;keywords=open+movie )
Pas testé.</text>
      <sha1>7yarshe1atc7hzaqlz11efryaey9vze</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4838</id>
      <parentid>4834</parentid>
      <timestamp>2012-12-16T16:19:03Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>+vlc +authoring</comment>
      <text xml:space="preserve" bytes="7391">{{Ébauche|L'édition et l'encodage de vidéos}}

= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

== Notes sur la rédaction de cette page ==
* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video
* La question de l'authoring (rip de DVD, et chapitrage) n'est pas abordée dans cette page.

== Considérations générales sur l'encodage de videos ==

* https://en.wikipedia.org/wiki/HTML5_video#Browser_support, prise en charge par les différents navigateurs des codecs video avec la balise HTML5 &lt;video&gt;
* Indication: en format OGV, avec les réglages par défaut de ffmpeg2theora, comptez ~100Mo pour une video de 10 minutes.
* Indication: pour youtube ou les lecteurs flash, le format video recommandé est le suivant: conteneur mp4, video x264, audio AAC.

== Encoder en ligne de commande ==
'''mencoder''' et '''ffmpeg''' sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui remplacera ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
&lt;code bash&gt;
#liste les codecs audio
mencoder -oac help
#liste les codecs vidéos
mencoder -ovc help
&lt;/code&gt;

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
&lt;code bash&gt;
mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;
&lt;/code&gt;

==== Voir aussi ====
* [http://doc.ubuntu-fr.org/mencoder Documentation mencoder sur Ubuntu-fr]
* [http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html Documentation mencoder sur mplayerhq]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Debian intégrera avconv dans ses dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Comment recenser les codecs audio/video disponibles ? ====
&lt;code&gt;ffmpeg -formats&lt;/code&gt;
==== Comment spécifier un codec audio/video à utilier ? ====
&lt;code&gt;avconv ?&lt;/code&gt;
==== Un exemple d'utilisation ====
&lt;code&gt;ffmpeg ?&lt;/code&gt;

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

=== autres outils spécifiques aux formats ===
Plusieurs formats ouverts pour l'audio/video proposent leurs propres outils, on peut citer:

* vorbis-tools: http://packages.debian.org/search?keywords=vorbis-tools (juste pour l'audio OGG Vorbis et FLAC)
* mkvtoolnix: http://packages.debian.org/search?keywords=mkvtoolnix (pour le format Matroska Video [MKV], il existe aussi une interface graphique pour l'outil)

== Encoder en graphique ==

=== avidemux === 
Avidemux n'est pas disponible dans les dépots officiels de Debian, et cela est bien dommage, mais voici plusieurs approches pour tenter de répondre à ce problème:
==== Solution 1: dépots deb-multimedia ====
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ deb-multimedia]. Nous vous conseillons de prendre connaissance de [http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F cette entrée du FAQ Debian] si vous comptez l'utiliser.

Pour l'ajouter, voyez [[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | comment ajouter un dépôt tiers]] à votre système.

==== Solution 2: compiler depuis les sources ====
Lisez la documentation du wiki: http://www.avidemux.org/admWiki/doku.php?id=build:install_2.6

==== Solution 3: aider à intégrer avidemux dans Debian ====
* Existe-t-il une ITP ?
* Ca fait des années que l'outil existe, pourquoi n'est-il pas déjà dans Debian ? Raison 1: il aurait été amputé d'une bonne partie de ses codecs. Raison 2: Pourquoi quoi, kwak pouet. 

=== VLC ===
VLC peut convertir/transcoder vos videos, qu'il s'agisse de flux en cours de lecture, ou de médias déjà existants.
Le jeu de codecs fournis avec Debian est bien sûr limité, donc tous les choix proposés dans l'interface ne fonctionneront pas.
L'essentiel de la manip' se fait depuis le menu Fichier puis &quot;Convertir/Enregistrer&quot;. Consultez la documentation officielle pour d'autres infos: http://wiki.videolan.org/Documentation:Streaming_HowTo_New

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).

Remarque: suspicion que cet outil n'est plus développé !

== Editer en graphique ==
=== kdenlive ===
* Site officiel: http://kdenlive.org/
* Paquet debian: http://packages.debian.org/search?keywords=kdenlive
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== kino ===
* Site officiel: http://www.kinodv.org/
* Paquet debian: http://packages.debian.org/search?keywords=kino
Pour KDE. Simple à utiliser, peut-être trop basique ?

=== cinelerra et cinelerra CV ===
cinelerra existe en 2 versions. CV voulant dire &quot;Community Version&quot;.

* Site officiel de cinelerra: http://heroinewarrior.com/cinelerra.php
* Site officiel de cinelerra CV: http://cinelerra.org
* Paquet debian: absent des dépots officiels, présent dans le dépot Multimedia 
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Open Movie Editor ===
* Site officiel: http://www.openmovieeditor.org/
* Paquet debian: aucun ou trop vieux ( http://packages.debian.org/search?searchon=names&amp;keywords=open+movie )
Pas testé.</text>
      <sha1>knbx425kjt7t5fyp9wff2spb6u3ebu7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5036</id>
      <parentid>4838</parentid>
      <timestamp>2013-03-01T23:14:20Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Notes sur la rédaction de cette page */</comment>
      <text xml:space="preserve" bytes="7691">{{Ébauche|L'édition et l'encodage de vidéos}}

= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

== Notes sur la rédaction de cette page ==
* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video
* La question de l'authoring (création de DVD, et chapitrage) n'est pas abordée dans cette page.
* On pourrait aborder le rip de DVD, avec k3b (option actuellement non fonctionnelle dans Debian) ou un autre outil. Dvdbackup parvient à restituer les VOB, reste à les réassembler/convertir sous un bon format ([http://bitflip.net/files/ubuntu_and_dvd_conversion.html .ISO possible], MKV ?)

== Considérations générales sur l'encodage de videos ==

* https://en.wikipedia.org/wiki/HTML5_video#Browser_support, prise en charge par les différents navigateurs des codecs video avec la balise HTML5 &lt;video&gt;
* Indication: en format OGV, avec les réglages par défaut de ffmpeg2theora, comptez ~100Mo pour une video de 10 minutes.
* Indication: pour youtube ou les lecteurs flash, le format video recommandé est le suivant: conteneur mp4, video x264, audio AAC.

== Encoder en ligne de commande ==
'''mencoder''' et '''ffmpeg''' sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui remplacera ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
&lt;code bash&gt;
#liste les codecs audio
mencoder -oac help
#liste les codecs vidéos
mencoder -ovc help
&lt;/code&gt;

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
&lt;code bash&gt;
mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;
&lt;/code&gt;

==== Voir aussi ====
* [http://doc.ubuntu-fr.org/mencoder Documentation mencoder sur Ubuntu-fr]
* [http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html Documentation mencoder sur mplayerhq]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Debian intégrera avconv dans ses dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Comment recenser les codecs audio/video disponibles ? ====
&lt;code&gt;ffmpeg -formats&lt;/code&gt;
==== Comment spécifier un codec audio/video à utilier ? ====
&lt;code&gt;avconv ?&lt;/code&gt;
==== Un exemple d'utilisation ====
&lt;code&gt;ffmpeg ?&lt;/code&gt;

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

=== autres outils spécifiques aux formats ===
Plusieurs formats ouverts pour l'audio/video proposent leurs propres outils, on peut citer:

* vorbis-tools: http://packages.debian.org/search?keywords=vorbis-tools (juste pour l'audio OGG Vorbis et FLAC)
* mkvtoolnix: http://packages.debian.org/search?keywords=mkvtoolnix (pour le format Matroska Video [MKV], il existe aussi une interface graphique pour l'outil)

== Encoder en graphique ==

=== avidemux === 
Avidemux n'est pas disponible dans les dépots officiels de Debian, et cela est bien dommage, mais voici plusieurs approches pour tenter de répondre à ce problème:
==== Solution 1: dépots deb-multimedia ====
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ deb-multimedia]. Nous vous conseillons de prendre connaissance de [http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F cette entrée du FAQ Debian] si vous comptez l'utiliser.

Pour l'ajouter, voyez [[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | comment ajouter un dépôt tiers]] à votre système.

==== Solution 2: compiler depuis les sources ====
Lisez la documentation du wiki: http://www.avidemux.org/admWiki/doku.php?id=build:install_2.6

==== Solution 3: aider à intégrer avidemux dans Debian ====
* Existe-t-il une ITP ?
* Ca fait des années que l'outil existe, pourquoi n'est-il pas déjà dans Debian ? Raison 1: il aurait été amputé d'une bonne partie de ses codecs. Raison 2: Pourquoi quoi, kwak pouet. 

=== VLC ===
VLC peut convertir/transcoder vos videos, qu'il s'agisse de flux en cours de lecture, ou de médias déjà existants.
Le jeu de codecs fournis avec Debian est bien sûr limité, donc tous les choix proposés dans l'interface ne fonctionneront pas.
L'essentiel de la manip' se fait depuis le menu Fichier puis &quot;Convertir/Enregistrer&quot;. Consultez la documentation officielle pour d'autres infos: http://wiki.videolan.org/Documentation:Streaming_HowTo_New

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).

Remarque: suspicion que cet outil n'est plus développé !

== Editer en graphique ==
=== kdenlive ===
* Site officiel: http://kdenlive.org/
* Paquet debian: http://packages.debian.org/search?keywords=kdenlive
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== kino ===
* Site officiel: http://www.kinodv.org/
* Paquet debian: http://packages.debian.org/search?keywords=kino
Pour KDE. Simple à utiliser, peut-être trop basique ?

=== cinelerra et cinelerra CV ===
cinelerra existe en 2 versions. CV voulant dire &quot;Community Version&quot;.

* Site officiel de cinelerra: http://heroinewarrior.com/cinelerra.php
* Site officiel de cinelerra CV: http://cinelerra.org
* Paquet debian: absent des dépots officiels, présent dans le dépot Multimedia 
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Open Movie Editor ===
* Site officiel: http://www.openmovieeditor.org/
* Paquet debian: aucun ou trop vieux ( http://packages.debian.org/search?searchon=names&amp;keywords=open+movie )
Pas testé.</text>
      <sha1>8wtsqmsh4ud31dxpizwkoewhouqnfjh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5037</id>
      <parentid>5036</parentid>
      <timestamp>2013-03-01T23:17:31Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Notes sur la rédaction de cette page */</comment>
      <text xml:space="preserve" bytes="7815">{{Ébauche|L'édition et l'encodage de vidéos}}

= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

== Notes sur la rédaction de cette page ==
* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video
* La question de l'authoring (création de DVD, et chapitrage) n'est pas abordée dans cette page.
* On pourrait aborder le rip de DVD, avec k3b (option actuellement non fonctionnelle dans Debian) ou un autre outil. Dvdbackup parvient à restituer les VOB, reste à les réassembler/convertir sous un bon format ([http://bitflip.net/files/ubuntu_and_dvd_conversion.html .ISO possible], MKV ?). Note: ou plutôt dans une autre page dans laquelle on pourrait mettre: authoring, rip de DVD, rip audio (k3b recommandé).

== Considérations générales sur l'encodage de videos ==

* https://en.wikipedia.org/wiki/HTML5_video#Browser_support, prise en charge par les différents navigateurs des codecs video avec la balise HTML5 &lt;video&gt;
* Indication: en format OGV, avec les réglages par défaut de ffmpeg2theora, comptez ~100Mo pour une video de 10 minutes.
* Indication: pour youtube ou les lecteurs flash, le format video recommandé est le suivant: conteneur mp4, video x264, audio AAC.

== Encoder en ligne de commande ==
'''mencoder''' et '''ffmpeg''' sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui remplacera ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
&lt;code bash&gt;
#liste les codecs audio
mencoder -oac help
#liste les codecs vidéos
mencoder -ovc help
&lt;/code&gt;

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
&lt;code bash&gt;
mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;
&lt;/code&gt;

==== Voir aussi ====
* [http://doc.ubuntu-fr.org/mencoder Documentation mencoder sur Ubuntu-fr]
* [http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html Documentation mencoder sur mplayerhq]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Debian intégrera avconv dans ses dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Comment recenser les codecs audio/video disponibles ? ====
&lt;code&gt;ffmpeg -formats&lt;/code&gt;
==== Comment spécifier un codec audio/video à utilier ? ====
&lt;code&gt;avconv ?&lt;/code&gt;
==== Un exemple d'utilisation ====
&lt;code&gt;ffmpeg ?&lt;/code&gt;

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

=== autres outils spécifiques aux formats ===
Plusieurs formats ouverts pour l'audio/video proposent leurs propres outils, on peut citer:

* vorbis-tools: http://packages.debian.org/search?keywords=vorbis-tools (juste pour l'audio OGG Vorbis et FLAC)
* mkvtoolnix: http://packages.debian.org/search?keywords=mkvtoolnix (pour le format Matroska Video [MKV], il existe aussi une interface graphique pour l'outil)

== Encoder en graphique ==

=== avidemux === 
Avidemux n'est pas disponible dans les dépots officiels de Debian, et cela est bien dommage, mais voici plusieurs approches pour tenter de répondre à ce problème:
==== Solution 1: dépots deb-multimedia ====
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ deb-multimedia]. Nous vous conseillons de prendre connaissance de [http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F cette entrée du FAQ Debian] si vous comptez l'utiliser.

Pour l'ajouter, voyez [[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | comment ajouter un dépôt tiers]] à votre système.

==== Solution 2: compiler depuis les sources ====
Lisez la documentation du wiki: http://www.avidemux.org/admWiki/doku.php?id=build:install_2.6

==== Solution 3: aider à intégrer avidemux dans Debian ====
* Existe-t-il une ITP ?
* Ca fait des années que l'outil existe, pourquoi n'est-il pas déjà dans Debian ? Raison 1: il aurait été amputé d'une bonne partie de ses codecs. Raison 2: Pourquoi quoi, kwak pouet. 

=== VLC ===
VLC peut convertir/transcoder vos videos, qu'il s'agisse de flux en cours de lecture, ou de médias déjà existants.
Le jeu de codecs fournis avec Debian est bien sûr limité, donc tous les choix proposés dans l'interface ne fonctionneront pas.
L'essentiel de la manip' se fait depuis le menu Fichier puis &quot;Convertir/Enregistrer&quot;. Consultez la documentation officielle pour d'autres infos: http://wiki.videolan.org/Documentation:Streaming_HowTo_New

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).

Remarque: suspicion que cet outil n'est plus développé !

== Editer en graphique ==
=== kdenlive ===
* Site officiel: http://kdenlive.org/
* Paquet debian: http://packages.debian.org/search?keywords=kdenlive
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== kino ===
* Site officiel: http://www.kinodv.org/
* Paquet debian: http://packages.debian.org/search?keywords=kino
Pour KDE. Simple à utiliser, peut-être trop basique ?

=== cinelerra et cinelerra CV ===
cinelerra existe en 2 versions. CV voulant dire &quot;Community Version&quot;.

* Site officiel de cinelerra: http://heroinewarrior.com/cinelerra.php
* Site officiel de cinelerra CV: http://cinelerra.org
* Paquet debian: absent des dépots officiels, présent dans le dépot Multimedia 
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Open Movie Editor ===
* Site officiel: http://www.openmovieeditor.org/
* Paquet debian: aucun ou trop vieux ( http://packages.debian.org/search?searchon=names&amp;keywords=open+movie )
Pas testé.</text>
      <sha1>9jfmjg5axj79vwu26vd9etr20p2ta9e</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5174</id>
      <parentid>5037</parentid>
      <timestamp>2013-05-14T13:18:17Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Notes sur la rédaction de cette page */</comment>
      <text xml:space="preserve" bytes="7457">{{Ébauche|L'édition et l'encodage de vidéos}}

= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

== Notes sur la rédaction de cette page ==
* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video
* La question de l'authoring (création de DVD, et chapitrage), ainsi que du rip (extraction) ne sont pas abordées dans cette page, mais ici: [[DVD_edition]]

== Considérations générales sur l'encodage de videos ==

* https://en.wikipedia.org/wiki/HTML5_video#Browser_support, prise en charge par les différents navigateurs des codecs video avec la balise HTML5 &lt;video&gt;
* Indication: en format OGV, avec les réglages par défaut de ffmpeg2theora, comptez ~100Mo pour une video de 10 minutes.
* Indication: pour youtube ou les lecteurs flash, le format video recommandé est le suivant: conteneur mp4, video x264, audio AAC.

== Encoder en ligne de commande ==
'''mencoder''' et '''ffmpeg''' sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui remplacera ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
&lt;code bash&gt;
#liste les codecs audio
mencoder -oac help
#liste les codecs vidéos
mencoder -ovc help
&lt;/code&gt;

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
&lt;code bash&gt;
mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;
&lt;/code&gt;

==== Voir aussi ====
* [http://doc.ubuntu-fr.org/mencoder Documentation mencoder sur Ubuntu-fr]
* [http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html Documentation mencoder sur mplayerhq]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Debian intégrera avconv dans ses dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Comment recenser les codecs audio/video disponibles ? ====
&lt;code&gt;ffmpeg -formats&lt;/code&gt;
==== Comment spécifier un codec audio/video à utilier ? ====
&lt;code&gt;avconv ?&lt;/code&gt;
==== Un exemple d'utilisation ====
&lt;code&gt;ffmpeg ?&lt;/code&gt;

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

=== autres outils spécifiques aux formats ===
Plusieurs formats ouverts pour l'audio/video proposent leurs propres outils, on peut citer:

* vorbis-tools: http://packages.debian.org/search?keywords=vorbis-tools (juste pour l'audio OGG Vorbis et FLAC)
* mkvtoolnix: http://packages.debian.org/search?keywords=mkvtoolnix (pour le format Matroska Video [MKV], il existe aussi une interface graphique pour l'outil)

== Encoder en graphique ==

=== avidemux === 
Avidemux n'est pas disponible dans les dépots officiels de Debian, et cela est bien dommage, mais voici plusieurs approches pour tenter de répondre à ce problème:
==== Solution 1: dépots deb-multimedia ====
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ deb-multimedia]. Nous vous conseillons de prendre connaissance de [http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F cette entrée du FAQ Debian] si vous comptez l'utiliser.

Pour l'ajouter, voyez [[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | comment ajouter un dépôt tiers]] à votre système.

==== Solution 2: compiler depuis les sources ====
Lisez la documentation du wiki: http://www.avidemux.org/admWiki/doku.php?id=build:install_2.6

==== Solution 3: aider à intégrer avidemux dans Debian ====
* Existe-t-il une ITP ?
* Ca fait des années que l'outil existe, pourquoi n'est-il pas déjà dans Debian ? Raison 1: il aurait été amputé d'une bonne partie de ses codecs. Raison 2: Pourquoi quoi, kwak pouet. 

=== VLC ===
VLC peut convertir/transcoder vos videos, qu'il s'agisse de flux en cours de lecture, ou de médias déjà existants.
Le jeu de codecs fournis avec Debian est bien sûr limité, donc tous les choix proposés dans l'interface ne fonctionneront pas.
L'essentiel de la manip' se fait depuis le menu Fichier puis &quot;Convertir/Enregistrer&quot;. Consultez la documentation officielle pour d'autres infos: http://wiki.videolan.org/Documentation:Streaming_HowTo_New

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).

Remarque: suspicion que cet outil n'est plus développé !

== Editer en graphique ==
=== kdenlive ===
* Site officiel: http://kdenlive.org/
* Paquet debian: http://packages.debian.org/search?keywords=kdenlive
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== kino ===
* Site officiel: http://www.kinodv.org/
* Paquet debian: http://packages.debian.org/search?keywords=kino
Pour KDE. Simple à utiliser, peut-être trop basique ?

=== cinelerra et cinelerra CV ===
cinelerra existe en 2 versions. CV voulant dire &quot;Community Version&quot;.

* Site officiel de cinelerra: http://heroinewarrior.com/cinelerra.php
* Site officiel de cinelerra CV: http://cinelerra.org
* Paquet debian: absent des dépots officiels, présent dans le dépot Multimedia 
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Open Movie Editor ===
* Site officiel: http://www.openmovieeditor.org/
* Paquet debian: aucun ou trop vieux ( http://packages.debian.org/search?searchon=names&amp;keywords=open+movie )
Pas testé.</text>
      <sha1>fp7shuav0i43cv292syonou3l7tn3x0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5426</id>
      <parentid>5174</parentid>
      <timestamp>2013-11-03T11:26:11Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* VLC */ + profils d'encodage</comment>
      <text xml:space="preserve" bytes="7712">{{Ébauche|L'édition et l'encodage de vidéos}}

= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

== Notes sur la rédaction de cette page ==
* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video
* La question de l'authoring (création de DVD, et chapitrage), ainsi que du rip (extraction) ne sont pas abordées dans cette page, mais ici: [[DVD_edition]]

== Considérations générales sur l'encodage de videos ==

* https://en.wikipedia.org/wiki/HTML5_video#Browser_support, prise en charge par les différents navigateurs des codecs video avec la balise HTML5 &lt;video&gt;
* Indication: en format OGV, avec les réglages par défaut de ffmpeg2theora, comptez ~100Mo pour une video de 10 minutes.
* Indication: pour youtube ou les lecteurs flash, le format video recommandé est le suivant: conteneur mp4, video x264, audio AAC.

== Encoder en ligne de commande ==
'''mencoder''' et '''ffmpeg''' sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui remplacera ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
&lt;code bash&gt;
#liste les codecs audio
mencoder -oac help
#liste les codecs vidéos
mencoder -ovc help
&lt;/code&gt;

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
&lt;code bash&gt;
mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;
&lt;/code&gt;

==== Voir aussi ====
* [http://doc.ubuntu-fr.org/mencoder Documentation mencoder sur Ubuntu-fr]
* [http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html Documentation mencoder sur mplayerhq]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Debian intégrera avconv dans ses dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Comment recenser les codecs audio/video disponibles ? ====
&lt;code&gt;ffmpeg -formats&lt;/code&gt;
==== Comment spécifier un codec audio/video à utilier ? ====
&lt;code&gt;avconv ?&lt;/code&gt;
==== Un exemple d'utilisation ====
&lt;code&gt;ffmpeg ?&lt;/code&gt;

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

=== autres outils spécifiques aux formats ===
Plusieurs formats ouverts pour l'audio/video proposent leurs propres outils, on peut citer:

* vorbis-tools: http://packages.debian.org/search?keywords=vorbis-tools (juste pour l'audio OGG Vorbis et FLAC)
* mkvtoolnix: http://packages.debian.org/search?keywords=mkvtoolnix (pour le format Matroska Video [MKV], il existe aussi une interface graphique pour l'outil)

== Encoder en graphique ==

=== avidemux === 
Avidemux n'est pas disponible dans les dépots officiels de Debian, et cela est bien dommage, mais voici plusieurs approches pour tenter de répondre à ce problème:
==== Solution 1: dépots deb-multimedia ====
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ deb-multimedia]. Nous vous conseillons de prendre connaissance de [http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F cette entrée du FAQ Debian] si vous comptez l'utiliser.

Pour l'ajouter, voyez [[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | comment ajouter un dépôt tiers]] à votre système.

==== Solution 2: compiler depuis les sources ====
Lisez la documentation du wiki: http://www.avidemux.org/admWiki/doku.php?id=build:install_2.6

==== Solution 3: aider à intégrer avidemux dans Debian ====
* Existe-t-il une ITP ?
* Ca fait des années que l'outil existe, pourquoi n'est-il pas déjà dans Debian ? Raison 1: il aurait été amputé d'une bonne partie de ses codecs. Raison 2: Pourquoi quoi, kwak pouet. 

=== VLC ===
VLC peut convertir/transcoder vos videos, qu'il s'agisse de flux en cours de lecture, ou de médias déjà existants.
Le jeu de codecs fournis avec Debian est bien sûr limité, donc tous les «profils» et choix proposés dans l'interface ne fonctionneront pas.
L'essentiel de la manip' se fait depuis le menu Fichier puis &quot;Convertir/Enregistrer&quot;.

Consultez la documentation officielle pour d'autres infos: http://wiki.videolan.org/Documentation:Streaming_HowTo_New

Note: il est possible de créer ses propres profils.

Combinaisons testées avec succès:
* VP80 + Vorbis (Webm), sous Jessie
* Theora + Vorbis (OGG), sous Wheezy
Combinaisons problématiques:
* Celles à base de MP3, et bien d'autres...

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).

Remarque: suspicion que cet outil n'est plus développé !

== Editer en graphique ==
=== kdenlive ===
* Site officiel: http://kdenlive.org/
* Paquet debian: http://packages.debian.org/search?keywords=kdenlive
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== kino ===
* Site officiel: http://www.kinodv.org/
* Paquet debian: http://packages.debian.org/search?keywords=kino
Pour KDE. Simple à utiliser, peut-être trop basique ?

=== cinelerra et cinelerra CV ===
cinelerra existe en 2 versions. CV voulant dire &quot;Community Version&quot;.

* Site officiel de cinelerra: http://heroinewarrior.com/cinelerra.php
* Site officiel de cinelerra CV: http://cinelerra.org
* Paquet debian: absent des dépots officiels, présent dans le dépot Multimedia 
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Open Movie Editor ===
* Site officiel: http://www.openmovieeditor.org/
* Paquet debian: aucun ou trop vieux ( http://packages.debian.org/search?searchon=names&amp;keywords=open+movie )
Pas testé.</text>
      <sha1>l7of35u21wlisurzhhkualr7g797c0e</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5427</id>
      <parentid>5426</parentid>
      <timestamp>2013-11-03T12:04:19Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* VLC */ autres essais combinaisons codecs</comment>
      <text xml:space="preserve" bytes="7858">{{Ébauche|L'édition et l'encodage de vidéos}}

= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

== Notes sur la rédaction de cette page ==
* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video
* La question de l'authoring (création de DVD, et chapitrage), ainsi que du rip (extraction) ne sont pas abordées dans cette page, mais ici: [[DVD_edition]]

== Considérations générales sur l'encodage de videos ==

* https://en.wikipedia.org/wiki/HTML5_video#Browser_support, prise en charge par les différents navigateurs des codecs video avec la balise HTML5 &lt;video&gt;
* Indication: en format OGV, avec les réglages par défaut de ffmpeg2theora, comptez ~100Mo pour une video de 10 minutes.
* Indication: pour youtube ou les lecteurs flash, le format video recommandé est le suivant: conteneur mp4, video x264, audio AAC.

== Encoder en ligne de commande ==
'''mencoder''' et '''ffmpeg''' sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui remplacera ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
&lt;code bash&gt;
#liste les codecs audio
mencoder -oac help
#liste les codecs vidéos
mencoder -ovc help
&lt;/code&gt;

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
&lt;code bash&gt;
mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;
&lt;/code&gt;

==== Voir aussi ====
* [http://doc.ubuntu-fr.org/mencoder Documentation mencoder sur Ubuntu-fr]
* [http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html Documentation mencoder sur mplayerhq]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Debian intégrera avconv dans ses dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Comment recenser les codecs audio/video disponibles ? ====
&lt;code&gt;ffmpeg -formats&lt;/code&gt;
==== Comment spécifier un codec audio/video à utilier ? ====
&lt;code&gt;avconv ?&lt;/code&gt;
==== Un exemple d'utilisation ====
&lt;code&gt;ffmpeg ?&lt;/code&gt;

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

=== autres outils spécifiques aux formats ===
Plusieurs formats ouverts pour l'audio/video proposent leurs propres outils, on peut citer:

* vorbis-tools: http://packages.debian.org/search?keywords=vorbis-tools (juste pour l'audio OGG Vorbis et FLAC)
* mkvtoolnix: http://packages.debian.org/search?keywords=mkvtoolnix (pour le format Matroska Video [MKV], il existe aussi une interface graphique pour l'outil)

== Encoder en graphique ==

=== avidemux === 
Avidemux n'est pas disponible dans les dépots officiels de Debian, et cela est bien dommage, mais voici plusieurs approches pour tenter de répondre à ce problème:
==== Solution 1: dépots deb-multimedia ====
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ deb-multimedia]. Nous vous conseillons de prendre connaissance de [http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F cette entrée du FAQ Debian] si vous comptez l'utiliser.

Pour l'ajouter, voyez [[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | comment ajouter un dépôt tiers]] à votre système.

==== Solution 2: compiler depuis les sources ====
Lisez la documentation du wiki: http://www.avidemux.org/admWiki/doku.php?id=build:install_2.6

==== Solution 3: aider à intégrer avidemux dans Debian ====
* Existe-t-il une ITP ?
* Ca fait des années que l'outil existe, pourquoi n'est-il pas déjà dans Debian ? Raison 1: il aurait été amputé d'une bonne partie de ses codecs. Raison 2: Pourquoi quoi, kwak pouet. 

=== VLC ===
VLC peut convertir/transcoder vos videos, qu'il s'agisse de flux en cours de lecture, ou de médias déjà existants.
Le jeu de codecs fournis avec Debian est bien sûr limité, donc tous les «profils» et choix proposés dans l'interface ne fonctionneront pas.
L'essentiel de la manip' se fait depuis le menu Fichier puis &quot;Convertir/Enregistrer&quot;.

Consultez la documentation officielle pour d'autres infos: http://wiki.videolan.org/Documentation:Streaming_HowTo_New

Combinaisons testées avec succès:
* VP80 + Vorbis (Webm), sous Jessie
* Theora + Vorbis (OGG), sous Wheezy
Combinaisons problématiques:
* Celles à base de MP3, de WMA, et bien d'autres...

Note: il est possible de créer ses propres profils.
Note: Divers problèmes constatés avec l'encodage en Dirac: latence à la lecture (avec conteneur TS), ou saccades (avec conteneur OGG).

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).

Remarque: suspicion que cet outil n'est plus développé !

== Editer en graphique ==
=== kdenlive ===
* Site officiel: http://kdenlive.org/
* Paquet debian: http://packages.debian.org/search?keywords=kdenlive
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== kino ===
* Site officiel: http://www.kinodv.org/
* Paquet debian: http://packages.debian.org/search?keywords=kino
Pour KDE. Simple à utiliser, peut-être trop basique ?

=== cinelerra et cinelerra CV ===
cinelerra existe en 2 versions. CV voulant dire &quot;Community Version&quot;.

* Site officiel de cinelerra: http://heroinewarrior.com/cinelerra.php
* Site officiel de cinelerra CV: http://cinelerra.org
* Paquet debian: absent des dépots officiels, présent dans le dépot Multimedia 
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Open Movie Editor ===
* Site officiel: http://www.openmovieeditor.org/
* Paquet debian: aucun ou trop vieux ( http://packages.debian.org/search?searchon=names&amp;keywords=open+movie )
Pas testé.</text>
      <sha1>gr8tih2yqf6a1v0pfc6y4oryefx9kru</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5428</id>
      <parentid>5427</parentid>
      <timestamp>2013-11-03T12:06:50Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <minor/>
      <comment>/* VLC */</comment>
      <text xml:space="preserve" bytes="7859">{{Ébauche|L'édition et l'encodage de vidéos}}

= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

== Notes sur la rédaction de cette page ==
* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video
* La question de l'authoring (création de DVD, et chapitrage), ainsi que du rip (extraction) ne sont pas abordées dans cette page, mais ici: [[DVD_edition]]

== Considérations générales sur l'encodage de videos ==

* https://en.wikipedia.org/wiki/HTML5_video#Browser_support, prise en charge par les différents navigateurs des codecs video avec la balise HTML5 &lt;video&gt;
* Indication: en format OGV, avec les réglages par défaut de ffmpeg2theora, comptez ~100Mo pour une video de 10 minutes.
* Indication: pour youtube ou les lecteurs flash, le format video recommandé est le suivant: conteneur mp4, video x264, audio AAC.

== Encoder en ligne de commande ==
'''mencoder''' et '''ffmpeg''' sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui remplacera ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
&lt;code bash&gt;
#liste les codecs audio
mencoder -oac help
#liste les codecs vidéos
mencoder -ovc help
&lt;/code&gt;

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
&lt;code bash&gt;
mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;
&lt;/code&gt;

==== Voir aussi ====
* [http://doc.ubuntu-fr.org/mencoder Documentation mencoder sur Ubuntu-fr]
* [http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html Documentation mencoder sur mplayerhq]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Debian intégrera avconv dans ses dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Comment recenser les codecs audio/video disponibles ? ====
&lt;code&gt;ffmpeg -formats&lt;/code&gt;
==== Comment spécifier un codec audio/video à utilier ? ====
&lt;code&gt;avconv ?&lt;/code&gt;
==== Un exemple d'utilisation ====
&lt;code&gt;ffmpeg ?&lt;/code&gt;

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

=== autres outils spécifiques aux formats ===
Plusieurs formats ouverts pour l'audio/video proposent leurs propres outils, on peut citer:

* vorbis-tools: http://packages.debian.org/search?keywords=vorbis-tools (juste pour l'audio OGG Vorbis et FLAC)
* mkvtoolnix: http://packages.debian.org/search?keywords=mkvtoolnix (pour le format Matroska Video [MKV], il existe aussi une interface graphique pour l'outil)

== Encoder en graphique ==

=== avidemux === 
Avidemux n'est pas disponible dans les dépots officiels de Debian, et cela est bien dommage, mais voici plusieurs approches pour tenter de répondre à ce problème:
==== Solution 1: dépots deb-multimedia ====
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ deb-multimedia]. Nous vous conseillons de prendre connaissance de [http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F cette entrée du FAQ Debian] si vous comptez l'utiliser.

Pour l'ajouter, voyez [[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | comment ajouter un dépôt tiers]] à votre système.

==== Solution 2: compiler depuis les sources ====
Lisez la documentation du wiki: http://www.avidemux.org/admWiki/doku.php?id=build:install_2.6

==== Solution 3: aider à intégrer avidemux dans Debian ====
* Existe-t-il une ITP ?
* Ca fait des années que l'outil existe, pourquoi n'est-il pas déjà dans Debian ? Raison 1: il aurait été amputé d'une bonne partie de ses codecs. Raison 2: Pourquoi quoi, kwak pouet. 

=== VLC ===
VLC peut convertir/transcoder vos videos, qu'il s'agisse de flux en cours de lecture, ou de médias déjà existants.
Le jeu de codecs fournis avec Debian est bien sûr limité, donc tous les «profils» et choix proposés dans l'interface ne fonctionneront pas.
L'essentiel de la manip' se fait depuis le menu Fichier puis &quot;Convertir/Enregistrer&quot;.

Consultez la documentation officielle pour d'autres infos: http://wiki.videolan.org/Documentation:Streaming_HowTo_New

Combinaisons testées avec succès:
* VP80 + Vorbis (Webm), sous Jessie
* Theora + Vorbis (OGG), sous Wheezy
Combinaisons problématiques:
* Celles à base de MP3, de WMA, et bien d'autres...

Note: il est possible de créer ses propres profils.

Note: Divers problèmes constatés avec l'encodage en Dirac: latence à la lecture (avec conteneur TS), ou saccades (avec conteneur OGG).

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).

Remarque: suspicion que cet outil n'est plus développé !

== Editer en graphique ==
=== kdenlive ===
* Site officiel: http://kdenlive.org/
* Paquet debian: http://packages.debian.org/search?keywords=kdenlive
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== kino ===
* Site officiel: http://www.kinodv.org/
* Paquet debian: http://packages.debian.org/search?keywords=kino
Pour KDE. Simple à utiliser, peut-être trop basique ?

=== cinelerra et cinelerra CV ===
cinelerra existe en 2 versions. CV voulant dire &quot;Community Version&quot;.

* Site officiel de cinelerra: http://heroinewarrior.com/cinelerra.php
* Site officiel de cinelerra CV: http://cinelerra.org
* Paquet debian: absent des dépots officiels, présent dans le dépot Multimedia 
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Open Movie Editor ===
* Site officiel: http://www.openmovieeditor.org/
* Paquet debian: aucun ou trop vieux ( http://packages.debian.org/search?searchon=names&amp;keywords=open+movie )
Pas testé.</text>
      <sha1>63k8u01jaaihndrk8swlenuftk9gcuc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5429</id>
      <parentid>5428</parentid>
      <timestamp>2013-11-03T12:49:55Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Editer en graphique */ Ajoutons quelques éditeurs...</comment>
      <text xml:space="preserve" bytes="8389">{{Ébauche|L'édition et l'encodage de vidéos}}

= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

== Notes sur la rédaction de cette page ==
* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video
* La question de l'authoring (création de DVD, et chapitrage), ainsi que du rip (extraction) ne sont pas abordées dans cette page, mais ici: [[DVD_edition]]

== Considérations générales sur l'encodage de videos ==

* https://en.wikipedia.org/wiki/HTML5_video#Browser_support, prise en charge par les différents navigateurs des codecs video avec la balise HTML5 &lt;video&gt;
* Indication: en format OGV, avec les réglages par défaut de ffmpeg2theora, comptez ~100Mo pour une video de 10 minutes.
* Indication: pour youtube ou les lecteurs flash, le format video recommandé est le suivant: conteneur mp4, video x264, audio AAC.

== Encoder en ligne de commande ==
'''mencoder''' et '''ffmpeg''' sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui remplacera ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
&lt;code bash&gt;
#liste les codecs audio
mencoder -oac help
#liste les codecs vidéos
mencoder -ovc help
&lt;/code&gt;

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
&lt;code bash&gt;
mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;
&lt;/code&gt;

==== Voir aussi ====
* [http://doc.ubuntu-fr.org/mencoder Documentation mencoder sur Ubuntu-fr]
* [http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html Documentation mencoder sur mplayerhq]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Debian intégrera avconv dans ses dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Comment recenser les codecs audio/video disponibles ? ====
&lt;code&gt;ffmpeg -formats&lt;/code&gt;
==== Comment spécifier un codec audio/video à utilier ? ====
&lt;code&gt;avconv ?&lt;/code&gt;
==== Un exemple d'utilisation ====
&lt;code&gt;ffmpeg ?&lt;/code&gt;

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

=== autres outils spécifiques aux formats ===
Plusieurs formats ouverts pour l'audio/video proposent leurs propres outils, on peut citer:

* vorbis-tools: http://packages.debian.org/search?keywords=vorbis-tools (juste pour l'audio OGG Vorbis et FLAC)
* mkvtoolnix: http://packages.debian.org/search?keywords=mkvtoolnix (pour le format Matroska Video [MKV], il existe aussi une interface graphique pour l'outil)

== Encoder en graphique ==

=== avidemux === 
Avidemux n'est pas disponible dans les dépots officiels de Debian, et cela est bien dommage, mais voici plusieurs approches pour tenter de répondre à ce problème:
==== Solution 1: dépots deb-multimedia ====
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ deb-multimedia]. Nous vous conseillons de prendre connaissance de [http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F cette entrée du FAQ Debian] si vous comptez l'utiliser.

Pour l'ajouter, voyez [[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | comment ajouter un dépôt tiers]] à votre système.

==== Solution 2: compiler depuis les sources ====
Lisez la documentation du wiki: http://www.avidemux.org/admWiki/doku.php?id=build:install_2.6

==== Solution 3: aider à intégrer avidemux dans Debian ====
* Existe-t-il une ITP ?
* Ca fait des années que l'outil existe, pourquoi n'est-il pas déjà dans Debian ? Raison 1: il aurait été amputé d'une bonne partie de ses codecs. Raison 2: Pourquoi quoi, kwak pouet. 

=== VLC ===
VLC peut convertir/transcoder vos videos, qu'il s'agisse de flux en cours de lecture, ou de médias déjà existants.
Le jeu de codecs fournis avec Debian est bien sûr limité, donc tous les «profils» et choix proposés dans l'interface ne fonctionneront pas.
L'essentiel de la manip' se fait depuis le menu Fichier puis &quot;Convertir/Enregistrer&quot;.

Consultez la documentation officielle pour d'autres infos: http://wiki.videolan.org/Documentation:Streaming_HowTo_New

Combinaisons testées avec succès:
* VP80 + Vorbis (Webm), sous Jessie
* Theora + Vorbis (OGG), sous Wheezy
Combinaisons problématiques:
* Celles à base de MP3, de WMA, et bien d'autres...

Note: il est possible de créer ses propres profils.

Note: Divers problèmes constatés avec l'encodage en Dirac: latence à la lecture (avec conteneur TS), ou saccades (avec conteneur OGG).

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).

Remarque: suspicion que cet outil n'est plus développé !

== Editer en graphique ==

Kdenlive et OpenShot Video Editor sont les deux logiciels plebiscités.

=== Kdenlive ===
* Site officiel: http://kdenlive.org/
* Paquet debian: http://packages.debian.org/search?keywords=kdenlive
* [[wikipedia:Kdenlive]]
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== OpenShot Video Editor ===
* Site officiel: http://www.openshotvideo.com/
* Paquet debian: http://packages.debian.org/search?keywords=openshot
* [[wikipedia:OpenShot_Video_Editor]]
Il paraît que c'est bien.

=== Cinelerra et cinelerra CV ===
cinelerra existe en 2 versions. CV voulant dire &quot;Community Version&quot;.

* Site officiel de cinelerra: http://heroinewarrior.com/cinelerra.php
* Site officiel de cinelerra CV: http://cinelerra.org
* Paquet debian: absent des dépots officiels, présent dans le dépot Multimedia
* [[wikipedia:Cinelerra]]
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Kino (à l'arrêt) ===
* Site officiel: http://www.kinodv.org/
* Paquet debian: http://packages.debian.org/search?keywords=kino
«Kino has not been actively maintained since 2009. We encourage you to try other Linux video editors such as Shotcut, Kdenlive, Flowblade, OpenShot, PiTiVi, LiVES, and LightWorks.»

=== Open Movie Editor (inactif) ===
* Site officiel: http://www.openmovieeditor.org/
* Paquet debian: aucun ou trop vieux ( http://packages.debian.org/search?searchon=names&amp;keywords=open+movie )
Projet sans sortie officielle depuis 2009. Non testé.</text>
      <sha1>5xnke0f1zxsl3iza4l2skm73gaevvew</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5434</id>
      <parentid>5429</parentid>
      <timestamp>2013-11-04T16:19:27Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Editer en graphique */ Ajout de qq softs</comment>
      <text xml:space="preserve" bytes="9058">{{Ébauche|L'édition et l'encodage de vidéos}}

= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

== Notes sur la rédaction de cette page ==
* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video
* La question de l'authoring (création de DVD, et chapitrage), ainsi que du rip (extraction) ne sont pas abordées dans cette page, mais ici: [[DVD_edition]]

== Considérations générales sur l'encodage de videos ==

* https://en.wikipedia.org/wiki/HTML5_video#Browser_support, prise en charge par les différents navigateurs des codecs video avec la balise HTML5 &lt;video&gt;
* Indication: en format OGV, avec les réglages par défaut de ffmpeg2theora, comptez ~100Mo pour une video de 10 minutes.
* Indication: pour youtube ou les lecteurs flash, le format video recommandé est le suivant: conteneur mp4, video x264, audio AAC.

== Encoder en ligne de commande ==
'''mencoder''' et '''ffmpeg''' sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui remplacera ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
&lt;code bash&gt;
#liste les codecs audio
mencoder -oac help
#liste les codecs vidéos
mencoder -ovc help
&lt;/code&gt;

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
&lt;code bash&gt;
mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;
&lt;/code&gt;

==== Voir aussi ====
* [http://doc.ubuntu-fr.org/mencoder Documentation mencoder sur Ubuntu-fr]
* [http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html Documentation mencoder sur mplayerhq]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Debian intégrera avconv dans ses dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Comment recenser les codecs audio/video disponibles ? ====
&lt;code&gt;ffmpeg -formats&lt;/code&gt;
==== Comment spécifier un codec audio/video à utilier ? ====
&lt;code&gt;avconv ?&lt;/code&gt;
==== Un exemple d'utilisation ====
&lt;code&gt;ffmpeg ?&lt;/code&gt;

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

=== autres outils spécifiques aux formats ===
Plusieurs formats ouverts pour l'audio/video proposent leurs propres outils, on peut citer:

* vorbis-tools: http://packages.debian.org/search?keywords=vorbis-tools (juste pour l'audio OGG Vorbis et FLAC)
* mkvtoolnix: http://packages.debian.org/search?keywords=mkvtoolnix (pour le format Matroska Video [MKV], il existe aussi une interface graphique pour l'outil)

== Encoder en graphique ==

=== avidemux === 
Avidemux n'est pas disponible dans les dépots officiels de Debian, et cela est bien dommage, mais voici plusieurs approches pour tenter de répondre à ce problème:
==== Solution 1: dépots deb-multimedia ====
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ deb-multimedia]. Nous vous conseillons de prendre connaissance de [http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F cette entrée du FAQ Debian] si vous comptez l'utiliser.

Pour l'ajouter, voyez [[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | comment ajouter un dépôt tiers]] à votre système.

==== Solution 2: compiler depuis les sources ====
Lisez la documentation du wiki: http://www.avidemux.org/admWiki/doku.php?id=build:install_2.6

==== Solution 3: aider à intégrer avidemux dans Debian ====
* Existe-t-il une ITP ?
* Ca fait des années que l'outil existe, pourquoi n'est-il pas déjà dans Debian ? Raison 1: il aurait été amputé d'une bonne partie de ses codecs. Raison 2: Pourquoi quoi, kwak pouet. 

=== VLC ===
VLC peut convertir/transcoder vos videos, qu'il s'agisse de flux en cours de lecture, ou de médias déjà existants.
Le jeu de codecs fournis avec Debian est bien sûr limité, donc tous les «profils» et choix proposés dans l'interface ne fonctionneront pas.
L'essentiel de la manip' se fait depuis le menu Fichier puis &quot;Convertir/Enregistrer&quot;.

Consultez la documentation officielle pour d'autres infos: http://wiki.videolan.org/Documentation:Streaming_HowTo_New

Combinaisons testées avec succès:
* VP80 + Vorbis (Webm), sous Jessie
* Theora + Vorbis (OGG), sous Wheezy
Combinaisons problématiques:
* Celles à base de MP3, de WMA, et bien d'autres...

Note: il est possible de créer ses propres profils.

Note: Divers problèmes constatés avec l'encodage en Dirac: latence à la lecture (avec conteneur TS), ou saccades (avec conteneur OGG).

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).

Remarque: suspicion que cet outil n'est plus développé !

== Editer en graphique ==

Kdenlive et OpenShot Video Editor sont les deux logiciels plebiscités.

=== Kdenlive ===
* Site officiel: http://kdenlive.org/
* Paquet debian: http://packages.debian.org/search?keywords=kdenlive
* [[wikipedia:Kdenlive]]
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== OpenShot Video Editor ===
* Site officiel: http://www.openshotvideo.com/
* Paquet debian: http://packages.debian.org/search?keywords=openshot
* [[wikipedia:OpenShot_Video_Editor]]
Il paraît que c'est bien.

=== Pitivi ===
* Site officiel: http://www.pitivi.org
* Paquet debian: http://packages.debian.org/search?keywords=pitivi
Editeur video qui utilise GStreamer. Paraît que c'est bien aussi.

=== LiVES ===
* Site officiel: http://lives.sourceforge.net
* Paquet debian: http://packages.debian.org/search?keywords=lives
Davantage adapté au DJing.

=== Flowblade ===
* Site officiel: https://code.google.com/p/flowblade/
* Paquet debian: http://packages.debian.org/search?keywords=flowblade

=== Shotcut ===
* Site officiel: http://www.shotcut.org
* Absent des dépots Debian

=== Cinelerra et cinelerra CV ===
cinelerra existe en 2 versions. CV voulant dire &quot;Community Version&quot;.

* Site officiel de cinelerra: http://heroinewarrior.com/cinelerra.php
* Site officiel de cinelerra CV: http://cinelerra.org
* Paquet debian: absent des dépots officiels, présent dans le dépot Multimedia
* [[wikipedia:Cinelerra]]
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Lightworks ===
* Site officiel: http://www.lwks.com/
* Absent des dépots Debian. Proprio ?

=== Kino (à l'arrêt) ===
* Site officiel: http://www.kinodv.org/
* Paquet debian: http://packages.debian.org/search?keywords=kino
«Kino has not been actively maintained since 2009. We encourage you to try other Linux video editors such as Shotcut, Kdenlive, Flowblade, OpenShot, PiTiVi, LiVES, and LightWorks.»

=== Open Movie Editor (inactif) ===
* Site officiel: http://www.openmovieeditor.org/
* Paquet debian: aucun ou trop vieux ( http://packages.debian.org/search?searchon=names&amp;keywords=open+movie )
Projet sans sortie officielle depuis 2009. Non testé.</text>
      <sha1>4nkti3wtcup7j6ku3aibja1z1uomw45</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5435</id>
      <parentid>5434</parentid>
      <timestamp>2013-11-12T16:50:29Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Melt */ +rq +doc melt</comment>
      <text xml:space="preserve" bytes="9161">{{Ébauche|L'édition et l'encodage de vidéos}}

= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

== Notes sur la rédaction de cette page ==
* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video
* La question de l'authoring (création de DVD, et chapitrage), ainsi que du rip (extraction) ne sont pas abordées dans cette page, mais ici: [[DVD_edition]]

== Considérations générales sur l'encodage de videos ==

* https://en.wikipedia.org/wiki/HTML5_video#Browser_support, prise en charge par les différents navigateurs des codecs video avec la balise HTML5 &lt;video&gt;
* Indication: en format OGV, avec les réglages par défaut de ffmpeg2theora, comptez ~100Mo pour une video de 10 minutes.
* Indication: pour youtube ou les lecteurs flash, le format video recommandé est le suivant: conteneur mp4, video x264, audio AAC.

== Encoder en ligne de commande ==
'''mencoder''' et '''ffmpeg''' sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui remplacera ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
&lt;code bash&gt;
#liste les codecs audio
mencoder -oac help
#liste les codecs vidéos
mencoder -ovc help
&lt;/code&gt;

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
&lt;code bash&gt;
mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;
&lt;/code&gt;

==== Voir aussi ====
* [http://doc.ubuntu-fr.org/mencoder Documentation mencoder sur Ubuntu-fr]
* [http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html Documentation mencoder sur mplayerhq]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Debian intégrera avconv dans ses dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Comment recenser les codecs audio/video disponibles ? ====
&lt;code&gt;ffmpeg -formats&lt;/code&gt;
==== Comment spécifier un codec audio/video à utilier ? ====
&lt;code&gt;avconv ?&lt;/code&gt;
==== Un exemple d'utilisation ====
&lt;code&gt;ffmpeg ?&lt;/code&gt;

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

=== autres outils spécifiques aux formats ===
Plusieurs formats ouverts pour l'audio/video proposent leurs propres outils, on peut citer:

* vorbis-tools: http://packages.debian.org/search?keywords=vorbis-tools (juste pour l'audio OGG Vorbis et FLAC)
* mkvtoolnix: http://packages.debian.org/search?keywords=mkvtoolnix (pour le format Matroska Video [MKV], il existe aussi une interface graphique pour l'outil)

== Encoder en graphique ==

=== avidemux === 
Avidemux n'est pas disponible dans les dépots officiels de Debian, et cela est bien dommage, mais voici plusieurs approches pour tenter de répondre à ce problème:
==== Solution 1: dépots deb-multimedia ====
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ deb-multimedia]. Nous vous conseillons de prendre connaissance de [http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F cette entrée du FAQ Debian] si vous comptez l'utiliser.

Pour l'ajouter, voyez [[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | comment ajouter un dépôt tiers]] à votre système.

==== Solution 2: compiler depuis les sources ====
Lisez la documentation du wiki: http://www.avidemux.org/admWiki/doku.php?id=build:install_2.6

==== Solution 3: aider à intégrer avidemux dans Debian ====
* Existe-t-il une ITP ?
* Ca fait des années que l'outil existe, pourquoi n'est-il pas déjà dans Debian ? Raison 1: il aurait été amputé d'une bonne partie de ses codecs. Raison 2: Pourquoi quoi, kwak pouet. 

=== VLC ===
VLC peut convertir/transcoder vos videos, qu'il s'agisse de flux en cours de lecture, ou de médias déjà existants.
Le jeu de codecs fournis avec Debian est bien sûr limité, donc tous les «profils» et choix proposés dans l'interface ne fonctionneront pas.
L'essentiel de la manip' se fait depuis le menu Fichier puis &quot;Convertir/Enregistrer&quot;.

Consultez la documentation officielle pour d'autres infos: http://wiki.videolan.org/Documentation:Streaming_HowTo_New

Combinaisons testées avec succès:
* VP80 + Vorbis (Webm), sous Jessie
* Theora + Vorbis (OGG), sous Wheezy
Combinaisons problématiques:
* Celles à base de MP3, de WMA, et bien d'autres...

Note: il est possible de créer ses propres profils.

Note: Divers problèmes constatés avec l'encodage en Dirac: latence à la lecture (avec conteneur TS), ou saccades (avec conteneur OGG).

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== MLT Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
* Documentation officielle: http://www.mltframework.org/bin/view/MLT/MltMelt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).
Remarque: la fraîcheur de l'outil et son utilisabilité n'ont pas été testés.

== Editer en graphique ==

Kdenlive et OpenShot Video Editor sont les deux logiciels plebiscités.

=== Kdenlive ===
* Site officiel: http://kdenlive.org/
* Paquet debian: http://packages.debian.org/search?keywords=kdenlive
* [[wikipedia:Kdenlive]]
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== OpenShot Video Editor ===
* Site officiel: http://www.openshotvideo.com/
* Paquet debian: http://packages.debian.org/search?keywords=openshot
* [[wikipedia:OpenShot_Video_Editor]]
Il paraît que c'est bien.

=== Pitivi ===
* Site officiel: http://www.pitivi.org
* Paquet debian: http://packages.debian.org/search?keywords=pitivi
Editeur video qui utilise GStreamer. Paraît que c'est bien aussi.

=== LiVES ===
* Site officiel: http://lives.sourceforge.net
* Paquet debian: http://packages.debian.org/search?keywords=lives
Davantage adapté au DJing.

=== Flowblade ===
* Site officiel: https://code.google.com/p/flowblade/
* Paquet debian: http://packages.debian.org/search?keywords=flowblade

=== Shotcut ===
* Site officiel: http://www.shotcut.org
* Absent des dépots Debian

=== Cinelerra et cinelerra CV ===
cinelerra existe en 2 versions. CV voulant dire &quot;Community Version&quot;.

* Site officiel de cinelerra: http://heroinewarrior.com/cinelerra.php
* Site officiel de cinelerra CV: http://cinelerra.org
* Paquet debian: absent des dépots officiels, présent dans le dépot Multimedia
* [[wikipedia:Cinelerra]]
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Lightworks ===
* Site officiel: http://www.lwks.com/
* Absent des dépots Debian. Proprio ?

=== Kino (à l'arrêt) ===
* Site officiel: http://www.kinodv.org/
* Paquet debian: http://packages.debian.org/search?keywords=kino
«Kino has not been actively maintained since 2009. We encourage you to try other Linux video editors such as Shotcut, Kdenlive, Flowblade, OpenShot, PiTiVi, LiVES, and LightWorks.»

=== Open Movie Editor (inactif) ===
* Site officiel: http://www.openmovieeditor.org/
* Paquet debian: aucun ou trop vieux ( http://packages.debian.org/search?searchon=names&amp;keywords=open+movie )
Projet sans sortie officielle depuis 2009. Non testé.</text>
      <sha1>k3occie0lyuotf5eouetm15es3aeadm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5439</id>
      <parentid>5435</parentid>
      <timestamp>2013-11-14T18:55:22Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Editer en graphique */ + liens vers debian-facile.org</comment>
      <text xml:space="preserve" bytes="9328">{{Ébauche|L'édition et l'encodage de vidéos}}

= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

== Notes sur la rédaction de cette page ==
* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video
* La question de l'authoring (création de DVD, et chapitrage), ainsi que du rip (extraction) ne sont pas abordées dans cette page, mais ici: [[DVD_edition]]

== Considérations générales sur l'encodage de videos ==

* https://en.wikipedia.org/wiki/HTML5_video#Browser_support, prise en charge par les différents navigateurs des codecs video avec la balise HTML5 &lt;video&gt;
* Indication: en format OGV, avec les réglages par défaut de ffmpeg2theora, comptez ~100Mo pour une video de 10 minutes.
* Indication: pour youtube ou les lecteurs flash, le format video recommandé est le suivant: conteneur mp4, video x264, audio AAC.

== Encoder en ligne de commande ==
'''mencoder''' et '''ffmpeg''' sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui remplacera ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
&lt;code bash&gt;
#liste les codecs audio
mencoder -oac help
#liste les codecs vidéos
mencoder -ovc help
&lt;/code&gt;

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
&lt;code bash&gt;
mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;
&lt;/code&gt;

==== Voir aussi ====
* [http://doc.ubuntu-fr.org/mencoder Documentation mencoder sur Ubuntu-fr]
* [http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html Documentation mencoder sur mplayerhq]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Debian intégrera avconv dans ses dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Comment recenser les codecs audio/video disponibles ? ====
&lt;code&gt;ffmpeg -formats&lt;/code&gt;
==== Comment spécifier un codec audio/video à utilier ? ====
&lt;code&gt;avconv ?&lt;/code&gt;
==== Un exemple d'utilisation ====
&lt;code&gt;ffmpeg ?&lt;/code&gt;

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

=== autres outils spécifiques aux formats ===
Plusieurs formats ouverts pour l'audio/video proposent leurs propres outils, on peut citer:

* vorbis-tools: http://packages.debian.org/search?keywords=vorbis-tools (juste pour l'audio OGG Vorbis et FLAC)
* mkvtoolnix: http://packages.debian.org/search?keywords=mkvtoolnix (pour le format Matroska Video [MKV], il existe aussi une interface graphique pour l'outil)

== Encoder en graphique ==

=== avidemux === 
Avidemux n'est pas disponible dans les dépots officiels de Debian, et cela est bien dommage, mais voici plusieurs approches pour tenter de répondre à ce problème:
==== Solution 1: dépots deb-multimedia ====
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ deb-multimedia]. Nous vous conseillons de prendre connaissance de [http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F cette entrée du FAQ Debian] si vous comptez l'utiliser.

Pour l'ajouter, voyez [[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | comment ajouter un dépôt tiers]] à votre système.

==== Solution 2: compiler depuis les sources ====
Lisez la documentation du wiki: http://www.avidemux.org/admWiki/doku.php?id=build:install_2.6

==== Solution 3: aider à intégrer avidemux dans Debian ====
* Existe-t-il une ITP ?
* Ca fait des années que l'outil existe, pourquoi n'est-il pas déjà dans Debian ? Raison 1: il aurait été amputé d'une bonne partie de ses codecs. Raison 2: Pourquoi quoi, kwak pouet. 

=== VLC ===
VLC peut convertir/transcoder vos videos, qu'il s'agisse de flux en cours de lecture, ou de médias déjà existants.
Le jeu de codecs fournis avec Debian est bien sûr limité, donc tous les «profils» et choix proposés dans l'interface ne fonctionneront pas.
L'essentiel de la manip' se fait depuis le menu Fichier puis &quot;Convertir/Enregistrer&quot;.

Consultez la documentation officielle pour d'autres infos: http://wiki.videolan.org/Documentation:Streaming_HowTo_New

Combinaisons testées avec succès:
* VP80 + Vorbis (Webm), sous Jessie
* Theora + Vorbis (OGG), sous Wheezy
Combinaisons problématiques:
* Celles à base de MP3, de WMA, et bien d'autres...

Note: il est possible de créer ses propres profils.

Note: Divers problèmes constatés avec l'encodage en Dirac: latence à la lecture (avec conteneur TS), ou saccades (avec conteneur OGG).

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== MLT Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
* Documentation officielle: http://www.mltframework.org/bin/view/MLT/MltMelt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).
Remarque: la fraîcheur de l'outil et son utilisabilité n'ont pas été testés.

== Editer en graphique ==

Kdenlive et OpenShot Video Editor sont les deux logiciels plebiscités.

=== Kdenlive ===
* Site officiel: http://kdenlive.org/
* Paquet debian: http://packages.debian.org/search?keywords=kdenlive
* [[wikipedia:Kdenlive]]
* http://wiki.debian-facile.org/doc:media:kdenlive
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== OpenShot Video Editor ===
* Site officiel: http://www.openshotvideo.com/
* Paquet debian: http://packages.debian.org/search?keywords=openshot
* [[wikipedia:OpenShot_Video_Editor]]
* http://wiki.debian-facile.org/doc:media:openshot
Il paraît que c'est bien.

=== Pitivi ===
* Site officiel: http://www.pitivi.org
* Paquet debian: http://packages.debian.org/search?keywords=pitivi
* http://wiki.debian-facile.org/doc:environnements:gnome:pitivi

Editeur video qui utilise GStreamer. Paraît que c'est bien aussi.

=== LiVES ===
* Site officiel: http://lives.sourceforge.net
* Paquet debian: http://packages.debian.org/search?keywords=lives
Davantage adapté au DJing.

=== Flowblade ===
* Site officiel: https://code.google.com/p/flowblade/
* Paquet debian: http://packages.debian.org/search?keywords=flowblade

=== Shotcut ===
* Site officiel: http://www.shotcut.org
* Absent des dépots Debian

=== Cinelerra et cinelerra CV ===
cinelerra existe en 2 versions. CV voulant dire &quot;Community Version&quot;.

* Site officiel de cinelerra: http://heroinewarrior.com/cinelerra.php
* Site officiel de cinelerra CV: http://cinelerra.org
* Paquet debian: absent des dépots officiels, présent dans le dépot Multimedia
* [[wikipedia:Cinelerra]]
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Lightworks ===
* Site officiel: http://www.lwks.com/
* Absent des dépots Debian. Proprio ?

=== Kino (à l'arrêt) ===
* Site officiel: http://www.kinodv.org/
* Paquet debian: http://packages.debian.org/search?keywords=kino
«Kino has not been actively maintained since 2009. We encourage you to try other Linux video editors such as Shotcut, Kdenlive, Flowblade, OpenShot, PiTiVi, LiVES, and LightWorks.»

=== Open Movie Editor (inactif) ===
* Site officiel: http://www.openmovieeditor.org/
* Paquet debian: aucun ou trop vieux ( http://packages.debian.org/search?searchon=names&amp;keywords=open+movie )
Projet sans sortie officielle depuis 2009. Non testé.</text>
      <sha1>kjjwtfrrywkrp18n9au41l1ugs5wj5b</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5440</id>
      <parentid>5439</parentid>
      <timestamp>2013-11-14T18:58:07Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Notes sur la rédaction de cette page */ + liens multimedia</comment>
      <text xml:space="preserve" bytes="9514">{{Ébauche|L'édition et l'encodage de vidéos}}

= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

== Notes sur la rédaction de cette page ==
* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video
* La question de l'authoring (création de DVD, et chapitrage), ainsi que du rip (extraction) ne sont pas abordées dans cette page, mais ici: [[DVD_edition]]
* D'autres infos relatives à ces logiciels sont dispos sur: http://wiki.debian-facile.org/doc:media:media, http://doc.ubuntu-fr.org/montage_video, https://wiki.debian.org/fr/Multimedia

== Considérations générales sur l'encodage de videos ==

* https://en.wikipedia.org/wiki/HTML5_video#Browser_support, prise en charge par les différents navigateurs des codecs video avec la balise HTML5 &lt;video&gt;
* Indication: en format OGV, avec les réglages par défaut de ffmpeg2theora, comptez ~100Mo pour une video de 10 minutes.
* Indication: pour youtube ou les lecteurs flash, le format video recommandé est le suivant: conteneur mp4, video x264, audio AAC.

== Encoder en ligne de commande ==
'''mencoder''' et '''ffmpeg''' sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui remplacera ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
&lt;code bash&gt;
#liste les codecs audio
mencoder -oac help
#liste les codecs vidéos
mencoder -ovc help
&lt;/code&gt;

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
&lt;code bash&gt;
mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;
&lt;/code&gt;

==== Voir aussi ====
* [http://doc.ubuntu-fr.org/mencoder Documentation mencoder sur Ubuntu-fr]
* [http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html Documentation mencoder sur mplayerhq]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Debian intégrera avconv dans ses dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Comment recenser les codecs audio/video disponibles ? ====
&lt;code&gt;ffmpeg -formats&lt;/code&gt;
==== Comment spécifier un codec audio/video à utilier ? ====
&lt;code&gt;avconv ?&lt;/code&gt;
==== Un exemple d'utilisation ====
&lt;code&gt;ffmpeg ?&lt;/code&gt;

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

=== autres outils spécifiques aux formats ===
Plusieurs formats ouverts pour l'audio/video proposent leurs propres outils, on peut citer:

* vorbis-tools: http://packages.debian.org/search?keywords=vorbis-tools (juste pour l'audio OGG Vorbis et FLAC)
* mkvtoolnix: http://packages.debian.org/search?keywords=mkvtoolnix (pour le format Matroska Video [MKV], il existe aussi une interface graphique pour l'outil)

== Encoder en graphique ==

=== avidemux === 
Avidemux n'est pas disponible dans les dépots officiels de Debian, et cela est bien dommage, mais voici plusieurs approches pour tenter de répondre à ce problème:
==== Solution 1: dépots deb-multimedia ====
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ deb-multimedia]. Nous vous conseillons de prendre connaissance de [http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F cette entrée du FAQ Debian] si vous comptez l'utiliser.

Pour l'ajouter, voyez [[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | comment ajouter un dépôt tiers]] à votre système.

==== Solution 2: compiler depuis les sources ====
Lisez la documentation du wiki: http://www.avidemux.org/admWiki/doku.php?id=build:install_2.6

==== Solution 3: aider à intégrer avidemux dans Debian ====
* Existe-t-il une ITP ?
* Ca fait des années que l'outil existe, pourquoi n'est-il pas déjà dans Debian ? Raison 1: il aurait été amputé d'une bonne partie de ses codecs. Raison 2: Pourquoi quoi, kwak pouet. 

=== VLC ===
VLC peut convertir/transcoder vos videos, qu'il s'agisse de flux en cours de lecture, ou de médias déjà existants.
Le jeu de codecs fournis avec Debian est bien sûr limité, donc tous les «profils» et choix proposés dans l'interface ne fonctionneront pas.
L'essentiel de la manip' se fait depuis le menu Fichier puis &quot;Convertir/Enregistrer&quot;.

Consultez la documentation officielle pour d'autres infos: http://wiki.videolan.org/Documentation:Streaming_HowTo_New

Combinaisons testées avec succès:
* VP80 + Vorbis (Webm), sous Jessie
* Theora + Vorbis (OGG), sous Wheezy
Combinaisons problématiques:
* Celles à base de MP3, de WMA, et bien d'autres...

Note: il est possible de créer ses propres profils.

Note: Divers problèmes constatés avec l'encodage en Dirac: latence à la lecture (avec conteneur TS), ou saccades (avec conteneur OGG).

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== MLT Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
* Documentation officielle: http://www.mltframework.org/bin/view/MLT/MltMelt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).
Remarque: la fraîcheur de l'outil et son utilisabilité n'ont pas été testés.

== Editer en graphique ==

Kdenlive et OpenShot Video Editor sont les deux logiciels plebiscités.

=== Kdenlive ===
* Site officiel: http://kdenlive.org/
* Paquet debian: http://packages.debian.org/search?keywords=kdenlive
* [[wikipedia:Kdenlive]]
* http://wiki.debian-facile.org/doc:media:kdenlive
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== OpenShot Video Editor ===
* Site officiel: http://www.openshotvideo.com/
* Paquet debian: http://packages.debian.org/search?keywords=openshot
* [[wikipedia:OpenShot_Video_Editor]]
* http://wiki.debian-facile.org/doc:media:openshot
Il paraît que c'est bien.

=== Pitivi ===
* Site officiel: http://www.pitivi.org
* Paquet debian: http://packages.debian.org/search?keywords=pitivi
* http://wiki.debian-facile.org/doc:environnements:gnome:pitivi

Editeur video qui utilise GStreamer. Paraît que c'est bien aussi.

=== LiVES ===
* Site officiel: http://lives.sourceforge.net
* Paquet debian: http://packages.debian.org/search?keywords=lives
Davantage adapté au DJing.

=== Flowblade ===
* Site officiel: https://code.google.com/p/flowblade/
* Paquet debian: http://packages.debian.org/search?keywords=flowblade

=== Shotcut ===
* Site officiel: http://www.shotcut.org
* Absent des dépots Debian

=== Cinelerra et cinelerra CV ===
cinelerra existe en 2 versions. CV voulant dire &quot;Community Version&quot;.

* Site officiel de cinelerra: http://heroinewarrior.com/cinelerra.php
* Site officiel de cinelerra CV: http://cinelerra.org
* Paquet debian: absent des dépots officiels, présent dans le dépot Multimedia
* [[wikipedia:Cinelerra]]
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Lightworks ===
* Site officiel: http://www.lwks.com/
* Absent des dépots Debian. Proprio ?

=== Kino (à l'arrêt) ===
* Site officiel: http://www.kinodv.org/
* Paquet debian: http://packages.debian.org/search?keywords=kino
«Kino has not been actively maintained since 2009. We encourage you to try other Linux video editors such as Shotcut, Kdenlive, Flowblade, OpenShot, PiTiVi, LiVES, and LightWorks.»

=== Open Movie Editor (inactif) ===
* Site officiel: http://www.openmovieeditor.org/
* Paquet debian: aucun ou trop vieux ( http://packages.debian.org/search?searchon=names&amp;keywords=open+movie )
Projet sans sortie officielle depuis 2009. Non testé.</text>
      <sha1>9zy72erm0oymqr71md56ay3a97wrzfu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5449</id>
      <parentid>5440</parentid>
      <timestamp>2013-11-24T00:32:38Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* VLC */ +remarque profils</comment>
      <text xml:space="preserve" bytes="9862">{{Ébauche|L'édition et l'encodage de vidéos}}

= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

== Notes sur la rédaction de cette page ==
* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video
* La question de l'authoring (création de DVD, et chapitrage), ainsi que du rip (extraction) ne sont pas abordées dans cette page, mais ici: [[DVD_edition]]
* D'autres infos relatives à ces logiciels sont dispos sur: http://wiki.debian-facile.org/doc:media:media, http://doc.ubuntu-fr.org/montage_video, https://wiki.debian.org/fr/Multimedia

== Considérations générales sur l'encodage de videos ==

* https://en.wikipedia.org/wiki/HTML5_video#Browser_support, prise en charge par les différents navigateurs des codecs video avec la balise HTML5 &lt;video&gt;
* Indication: en format OGV, avec les réglages par défaut de ffmpeg2theora, comptez ~100Mo pour une video de 10 minutes.
* Indication: pour youtube ou les lecteurs flash, le format video recommandé est le suivant: conteneur mp4, video x264, audio AAC.

== Encoder en ligne de commande ==
'''mencoder''' et '''ffmpeg''' sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui remplacera ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
&lt;code bash&gt;
#liste les codecs audio
mencoder -oac help
#liste les codecs vidéos
mencoder -ovc help
&lt;/code&gt;

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
&lt;code bash&gt;
mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;
&lt;/code&gt;

==== Voir aussi ====
* [http://doc.ubuntu-fr.org/mencoder Documentation mencoder sur Ubuntu-fr]
* [http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html Documentation mencoder sur mplayerhq]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Debian intégrera avconv dans ses dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Comment recenser les codecs audio/video disponibles ? ====
&lt;code&gt;ffmpeg -formats&lt;/code&gt;
==== Comment spécifier un codec audio/video à utilier ? ====
&lt;code&gt;avconv ?&lt;/code&gt;
==== Un exemple d'utilisation ====
&lt;code&gt;ffmpeg ?&lt;/code&gt;

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

=== autres outils spécifiques aux formats ===
Plusieurs formats ouverts pour l'audio/video proposent leurs propres outils, on peut citer:

* vorbis-tools: http://packages.debian.org/search?keywords=vorbis-tools (juste pour l'audio OGG Vorbis et FLAC)
* mkvtoolnix: http://packages.debian.org/search?keywords=mkvtoolnix (pour le format Matroska Video [MKV], il existe aussi une interface graphique pour l'outil)

== Encoder en graphique ==

=== avidemux === 
Avidemux n'est pas disponible dans les dépots officiels de Debian, et cela est bien dommage, mais voici plusieurs approches pour tenter de répondre à ce problème:
==== Solution 1: dépots deb-multimedia ====
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ deb-multimedia]. Nous vous conseillons de prendre connaissance de [http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F cette entrée du FAQ Debian] si vous comptez l'utiliser.

Pour l'ajouter, voyez [[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | comment ajouter un dépôt tiers]] à votre système.

==== Solution 2: compiler depuis les sources ====
Lisez la documentation du wiki: http://www.avidemux.org/admWiki/doku.php?id=build:install_2.6

==== Solution 3: aider à intégrer avidemux dans Debian ====
* Existe-t-il une ITP ?
* Ca fait des années que l'outil existe, pourquoi n'est-il pas déjà dans Debian ? Raison 1: il aurait été amputé d'une bonne partie de ses codecs. Raison 2: Pourquoi quoi, kwak pouet. 

=== VLC ===
VLC peut convertir/transcoder vos videos, qu'il s'agisse de flux en cours de lecture, ou de médias déjà existants.
Le jeu de codecs fournis avec Debian est bien sûr limité, donc tous les «profils» et choix proposés dans l'interface ne fonctionneront pas.
L'essentiel de la manip' se fait depuis le menu Fichier puis &quot;Convertir/Enregistrer&quot;.

Consultez la documentation officielle pour d'autres infos: http://wiki.videolan.org/Documentation:Streaming_HowTo_New

Les combinaisons entre les différentes méthodes d'encapsulation, codec video, codec audio, ne fonctionnent pas toutes, y compris celles indiquées dans les profils pré-enregistrés. Depuis la version 2.1.0, VLC est un peu plus clair sur les méthodes d'encapsulation qu'il sait gérer.

Combinaisons testées avec succès:
* H264 + Vorbis (MP4), avec VLC 2.1.0 (Jessie)
* VP80 + Vorbis (Webm), avec VLC 2.0.8 (Jessie)
* Theora + Vorbis (OGG), sous Wheezy
Combinaisons problématiques:
* Celles à base de MP3, de WMA, et bien d'autres...

Note: il est possible de créer ses propres profils.
Note: Divers problèmes constatés avec l'encodage en Dirac: latence à la lecture (avec conteneur TS), ou saccades (avec conteneur OGG).

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== MLT Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
* Documentation officielle: http://www.mltframework.org/bin/view/MLT/MltMelt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).
Remarque: la fraîcheur de l'outil et son utilisabilité n'ont pas été testés.

== Editer en graphique ==

Kdenlive et OpenShot Video Editor sont les deux logiciels plebiscités.

=== Kdenlive ===
* Site officiel: http://kdenlive.org/
* Paquet debian: http://packages.debian.org/search?keywords=kdenlive
* [[wikipedia:Kdenlive]]
* http://wiki.debian-facile.org/doc:media:kdenlive
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== OpenShot Video Editor ===
* Site officiel: http://www.openshotvideo.com/
* Paquet debian: http://packages.debian.org/search?keywords=openshot
* [[wikipedia:OpenShot_Video_Editor]]
* http://wiki.debian-facile.org/doc:media:openshot
Il paraît que c'est bien.

=== Pitivi ===
* Site officiel: http://www.pitivi.org
* Paquet debian: http://packages.debian.org/search?keywords=pitivi
* http://wiki.debian-facile.org/doc:environnements:gnome:pitivi

Editeur video qui utilise GStreamer. Paraît que c'est bien aussi.

=== LiVES ===
* Site officiel: http://lives.sourceforge.net
* Paquet debian: http://packages.debian.org/search?keywords=lives
Davantage adapté au DJing.

=== Flowblade ===
* Site officiel: https://code.google.com/p/flowblade/
* Paquet debian: http://packages.debian.org/search?keywords=flowblade

=== Shotcut ===
* Site officiel: http://www.shotcut.org
* Absent des dépots Debian

=== Cinelerra et cinelerra CV ===
cinelerra existe en 2 versions. CV voulant dire &quot;Community Version&quot;.

* Site officiel de cinelerra: http://heroinewarrior.com/cinelerra.php
* Site officiel de cinelerra CV: http://cinelerra.org
* Paquet debian: absent des dépots officiels, présent dans le dépot Multimedia
* [[wikipedia:Cinelerra]]
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Lightworks ===
* Site officiel: http://www.lwks.com/
* Absent des dépots Debian. Proprio ?

=== Kino (à l'arrêt) ===
* Site officiel: http://www.kinodv.org/
* Paquet debian: http://packages.debian.org/search?keywords=kino
«Kino has not been actively maintained since 2009. We encourage you to try other Linux video editors such as Shotcut, Kdenlive, Flowblade, OpenShot, PiTiVi, LiVES, and LightWorks.»

=== Open Movie Editor (inactif) ===
* Site officiel: http://www.openmovieeditor.org/
* Paquet debian: aucun ou trop vieux ( http://packages.debian.org/search?searchon=names&amp;keywords=open+movie )
Projet sans sortie officielle depuis 2009. Non testé.</text>
      <sha1>4pkrgwu82fz94s0b33vlh91xpe7f5jz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5451</id>
      <parentid>5449</parentid>
      <timestamp>2013-11-26T10:30:53Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <minor/>
      <comment>/* LiVES */</comment>
      <text xml:space="preserve" bytes="9862">{{Ébauche|L'édition et l'encodage de vidéos}}

= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

== Notes sur la rédaction de cette page ==
* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video
* La question de l'authoring (création de DVD, et chapitrage), ainsi que du rip (extraction) ne sont pas abordées dans cette page, mais ici: [[DVD_edition]]
* D'autres infos relatives à ces logiciels sont dispos sur: http://wiki.debian-facile.org/doc:media:media, http://doc.ubuntu-fr.org/montage_video, https://wiki.debian.org/fr/Multimedia

== Considérations générales sur l'encodage de videos ==

* https://en.wikipedia.org/wiki/HTML5_video#Browser_support, prise en charge par les différents navigateurs des codecs video avec la balise HTML5 &lt;video&gt;
* Indication: en format OGV, avec les réglages par défaut de ffmpeg2theora, comptez ~100Mo pour une video de 10 minutes.
* Indication: pour youtube ou les lecteurs flash, le format video recommandé est le suivant: conteneur mp4, video x264, audio AAC.

== Encoder en ligne de commande ==
'''mencoder''' et '''ffmpeg''' sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui remplacera ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
&lt;code bash&gt;
#liste les codecs audio
mencoder -oac help
#liste les codecs vidéos
mencoder -ovc help
&lt;/code&gt;

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
&lt;code bash&gt;
mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;
&lt;/code&gt;

==== Voir aussi ====
* [http://doc.ubuntu-fr.org/mencoder Documentation mencoder sur Ubuntu-fr]
* [http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html Documentation mencoder sur mplayerhq]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Debian intégrera avconv dans ses dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Comment recenser les codecs audio/video disponibles ? ====
&lt;code&gt;ffmpeg -formats&lt;/code&gt;
==== Comment spécifier un codec audio/video à utilier ? ====
&lt;code&gt;avconv ?&lt;/code&gt;
==== Un exemple d'utilisation ====
&lt;code&gt;ffmpeg ?&lt;/code&gt;

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

=== autres outils spécifiques aux formats ===
Plusieurs formats ouverts pour l'audio/video proposent leurs propres outils, on peut citer:

* vorbis-tools: http://packages.debian.org/search?keywords=vorbis-tools (juste pour l'audio OGG Vorbis et FLAC)
* mkvtoolnix: http://packages.debian.org/search?keywords=mkvtoolnix (pour le format Matroska Video [MKV], il existe aussi une interface graphique pour l'outil)

== Encoder en graphique ==

=== avidemux === 
Avidemux n'est pas disponible dans les dépots officiels de Debian, et cela est bien dommage, mais voici plusieurs approches pour tenter de répondre à ce problème:
==== Solution 1: dépots deb-multimedia ====
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ deb-multimedia]. Nous vous conseillons de prendre connaissance de [http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F cette entrée du FAQ Debian] si vous comptez l'utiliser.

Pour l'ajouter, voyez [[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | comment ajouter un dépôt tiers]] à votre système.

==== Solution 2: compiler depuis les sources ====
Lisez la documentation du wiki: http://www.avidemux.org/admWiki/doku.php?id=build:install_2.6

==== Solution 3: aider à intégrer avidemux dans Debian ====
* Existe-t-il une ITP ?
* Ca fait des années que l'outil existe, pourquoi n'est-il pas déjà dans Debian ? Raison 1: il aurait été amputé d'une bonne partie de ses codecs. Raison 2: Pourquoi quoi, kwak pouet. 

=== VLC ===
VLC peut convertir/transcoder vos videos, qu'il s'agisse de flux en cours de lecture, ou de médias déjà existants.
Le jeu de codecs fournis avec Debian est bien sûr limité, donc tous les «profils» et choix proposés dans l'interface ne fonctionneront pas.
L'essentiel de la manip' se fait depuis le menu Fichier puis &quot;Convertir/Enregistrer&quot;.

Consultez la documentation officielle pour d'autres infos: http://wiki.videolan.org/Documentation:Streaming_HowTo_New

Les combinaisons entre les différentes méthodes d'encapsulation, codec video, codec audio, ne fonctionnent pas toutes, y compris celles indiquées dans les profils pré-enregistrés. Depuis la version 2.1.0, VLC est un peu plus clair sur les méthodes d'encapsulation qu'il sait gérer.

Combinaisons testées avec succès:
* H264 + Vorbis (MP4), avec VLC 2.1.0 (Jessie)
* VP80 + Vorbis (Webm), avec VLC 2.0.8 (Jessie)
* Theora + Vorbis (OGG), sous Wheezy
Combinaisons problématiques:
* Celles à base de MP3, de WMA, et bien d'autres...

Note: il est possible de créer ses propres profils.
Note: Divers problèmes constatés avec l'encodage en Dirac: latence à la lecture (avec conteneur TS), ou saccades (avec conteneur OGG).

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== MLT Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
* Documentation officielle: http://www.mltframework.org/bin/view/MLT/MltMelt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).
Remarque: la fraîcheur de l'outil et son utilisabilité n'ont pas été testés.

== Editer en graphique ==

Kdenlive et OpenShot Video Editor sont les deux logiciels plebiscités.

=== Kdenlive ===
* Site officiel: http://kdenlive.org/
* Paquet debian: http://packages.debian.org/search?keywords=kdenlive
* [[wikipedia:Kdenlive]]
* http://wiki.debian-facile.org/doc:media:kdenlive
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== OpenShot Video Editor ===
* Site officiel: http://www.openshotvideo.com/
* Paquet debian: http://packages.debian.org/search?keywords=openshot
* [[wikipedia:OpenShot_Video_Editor]]
* http://wiki.debian-facile.org/doc:media:openshot
Il paraît que c'est bien.

=== Pitivi ===
* Site officiel: http://www.pitivi.org
* Paquet debian: http://packages.debian.org/search?keywords=pitivi
* http://wiki.debian-facile.org/doc:environnements:gnome:pitivi

Editeur video qui utilise GStreamer. Paraît que c'est bien aussi.

=== LiVES ===
* Site officiel: http://lives.sourceforge.net
* Paquet debian: http://packages.debian.org/search?keywords=lives
Davantage adapté au VJing.

=== Flowblade ===
* Site officiel: https://code.google.com/p/flowblade/
* Paquet debian: http://packages.debian.org/search?keywords=flowblade

=== Shotcut ===
* Site officiel: http://www.shotcut.org
* Absent des dépots Debian

=== Cinelerra et cinelerra CV ===
cinelerra existe en 2 versions. CV voulant dire &quot;Community Version&quot;.

* Site officiel de cinelerra: http://heroinewarrior.com/cinelerra.php
* Site officiel de cinelerra CV: http://cinelerra.org
* Paquet debian: absent des dépots officiels, présent dans le dépot Multimedia
* [[wikipedia:Cinelerra]]
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Lightworks ===
* Site officiel: http://www.lwks.com/
* Absent des dépots Debian. Proprio ?

=== Kino (à l'arrêt) ===
* Site officiel: http://www.kinodv.org/
* Paquet debian: http://packages.debian.org/search?keywords=kino
«Kino has not been actively maintained since 2009. We encourage you to try other Linux video editors such as Shotcut, Kdenlive, Flowblade, OpenShot, PiTiVi, LiVES, and LightWorks.»

=== Open Movie Editor (inactif) ===
* Site officiel: http://www.openmovieeditor.org/
* Paquet debian: aucun ou trop vieux ( http://packages.debian.org/search?searchon=names&amp;keywords=open+movie )
Projet sans sortie officielle depuis 2009. Non testé.</text>
      <sha1>f9z0drkbavwg80sdaczmeuspiv4j49i</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5452</id>
      <parentid>5451</parentid>
      <timestamp>2013-11-26T15:41:41Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Encoder en ligne de commande */ +front-ends avconv/mencoder</comment>
      <text xml:space="preserve" bytes="10018">{{Ébauche|L'édition et l'encodage de vidéos}}

= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

== Notes sur la rédaction de cette page ==
* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video
* La question de l'authoring (création de DVD, et chapitrage), ainsi que du rip (extraction) ne sont pas abordées dans cette page, mais ici: [[DVD_edition]]
* D'autres infos relatives à ces logiciels sont dispos sur: http://wiki.debian-facile.org/doc:media:media, http://doc.ubuntu-fr.org/montage_video, https://wiki.debian.org/fr/Multimedia

== Considérations générales sur l'encodage de videos ==

* https://en.wikipedia.org/wiki/HTML5_video#Browser_support, prise en charge par les différents navigateurs des codecs video avec la balise HTML5 &lt;video&gt;
* Indication: en format OGV, avec les réglages par défaut de ffmpeg2theora, comptez ~100Mo pour une video de 10 minutes.
* Indication: pour youtube ou les lecteurs flash, le format video recommandé est le suivant: conteneur mp4, video x264, audio AAC.

== Encoder en ligne de commande ==
'''mencoder''' et '''ffmpeg''' sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui remplacera ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

Note: il existe des interfaces graphiques (front-ends) pour mencoder et avconv, elles seront indiquées plus bas ([[Edition_Video#Encoder_en_graphique]]).

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
&lt;code bash&gt;
#liste les codecs audio
mencoder -oac help
#liste les codecs vidéos
mencoder -ovc help
&lt;/code&gt;

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
&lt;code bash&gt;
mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;
&lt;/code&gt;

==== Voir aussi ====
* [http://doc.ubuntu-fr.org/mencoder Documentation mencoder sur Ubuntu-fr]
* [http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html Documentation mencoder sur mplayerhq]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Debian intégrera avconv dans ses dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Comment recenser les codecs audio/video disponibles ? ====
&lt;code&gt;ffmpeg -formats&lt;/code&gt;
==== Comment spécifier un codec audio/video à utilier ? ====
&lt;code&gt;avconv ?&lt;/code&gt;
==== Un exemple d'utilisation ====
&lt;code&gt;ffmpeg ?&lt;/code&gt;

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

=== autres outils spécifiques aux formats ===
Plusieurs formats ouverts pour l'audio/video proposent leurs propres outils, on peut citer:

* vorbis-tools: http://packages.debian.org/search?keywords=vorbis-tools (juste pour l'audio OGG Vorbis et FLAC)
* mkvtoolnix: http://packages.debian.org/search?keywords=mkvtoolnix (pour le format Matroska Video [MKV], il existe aussi une interface graphique pour l'outil)

== Encoder en graphique ==

=== avidemux === 
Avidemux n'est pas disponible dans les dépots officiels de Debian, et cela est bien dommage, mais voici plusieurs approches pour tenter de répondre à ce problème:
==== Solution 1: dépots deb-multimedia ====
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ deb-multimedia]. Nous vous conseillons de prendre connaissance de [http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F cette entrée du FAQ Debian] si vous comptez l'utiliser.

Pour l'ajouter, voyez [[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | comment ajouter un dépôt tiers]] à votre système.

==== Solution 2: compiler depuis les sources ====
Lisez la documentation du wiki: http://www.avidemux.org/admWiki/doku.php?id=build:install_2.6

==== Solution 3: aider à intégrer avidemux dans Debian ====
* Existe-t-il une ITP ?
* Ca fait des années que l'outil existe, pourquoi n'est-il pas déjà dans Debian ? Raison 1: il aurait été amputé d'une bonne partie de ses codecs. Raison 2: Pourquoi quoi, kwak pouet. 

=== VLC ===
VLC peut convertir/transcoder vos videos, qu'il s'agisse de flux en cours de lecture, ou de médias déjà existants.
Le jeu de codecs fournis avec Debian est bien sûr limité, donc tous les «profils» et choix proposés dans l'interface ne fonctionneront pas.
L'essentiel de la manip' se fait depuis le menu Fichier puis &quot;Convertir/Enregistrer&quot;.

Consultez la documentation officielle pour d'autres infos: http://wiki.videolan.org/Documentation:Streaming_HowTo_New

Les combinaisons entre les différentes méthodes d'encapsulation, codec video, codec audio, ne fonctionnent pas toutes, y compris celles indiquées dans les profils pré-enregistrés. Depuis la version 2.1.0, VLC est un peu plus clair sur les méthodes d'encapsulation qu'il sait gérer.

Combinaisons testées avec succès:
* H264 + Vorbis (MP4), avec VLC 2.1.0 (Jessie)
* VP80 + Vorbis (Webm), avec VLC 2.0.8 (Jessie)
* Theora + Vorbis (OGG), sous Wheezy
Combinaisons problématiques:
* Celles à base de MP3, de WMA, et bien d'autres...

Note: il est possible de créer ses propres profils.
Note: Divers problèmes constatés avec l'encodage en Dirac: latence à la lecture (avec conteneur TS), ou saccades (avec conteneur OGG).

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== MLT Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
* Documentation officielle: http://www.mltframework.org/bin/view/MLT/MltMelt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).
Remarque: la fraîcheur de l'outil et son utilisabilité n'ont pas été testés.

== Editer en graphique ==

Kdenlive et OpenShot Video Editor sont les deux logiciels plebiscités.

=== Kdenlive ===
* Site officiel: http://kdenlive.org/
* Paquet debian: http://packages.debian.org/search?keywords=kdenlive
* [[wikipedia:Kdenlive]]
* http://wiki.debian-facile.org/doc:media:kdenlive
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== OpenShot Video Editor ===
* Site officiel: http://www.openshotvideo.com/
* Paquet debian: http://packages.debian.org/search?keywords=openshot
* [[wikipedia:OpenShot_Video_Editor]]
* http://wiki.debian-facile.org/doc:media:openshot
Il paraît que c'est bien.

=== Pitivi ===
* Site officiel: http://www.pitivi.org
* Paquet debian: http://packages.debian.org/search?keywords=pitivi
* http://wiki.debian-facile.org/doc:environnements:gnome:pitivi

Editeur video qui utilise GStreamer. Paraît que c'est bien aussi.

=== LiVES ===
* Site officiel: http://lives.sourceforge.net
* Paquet debian: http://packages.debian.org/search?keywords=lives
Davantage adapté au VJing.

=== Flowblade ===
* Site officiel: https://code.google.com/p/flowblade/
* Paquet debian: http://packages.debian.org/search?keywords=flowblade

=== Shotcut ===
* Site officiel: http://www.shotcut.org
* Absent des dépots Debian

=== Cinelerra et cinelerra CV ===
cinelerra existe en 2 versions. CV voulant dire &quot;Community Version&quot;.

* Site officiel de cinelerra: http://heroinewarrior.com/cinelerra.php
* Site officiel de cinelerra CV: http://cinelerra.org
* Paquet debian: absent des dépots officiels, présent dans le dépot Multimedia
* [[wikipedia:Cinelerra]]
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Lightworks ===
* Site officiel: http://www.lwks.com/
* Absent des dépots Debian. Proprio ?

=== Kino (à l'arrêt) ===
* Site officiel: http://www.kinodv.org/
* Paquet debian: http://packages.debian.org/search?keywords=kino
«Kino has not been actively maintained since 2009. We encourage you to try other Linux video editors such as Shotcut, Kdenlive, Flowblade, OpenShot, PiTiVi, LiVES, and LightWorks.»

=== Open Movie Editor (inactif) ===
* Site officiel: http://www.openmovieeditor.org/
* Paquet debian: aucun ou trop vieux ( http://packages.debian.org/search?searchon=names&amp;keywords=open+movie )
Projet sans sortie officielle depuis 2009. Non testé.</text>
      <sha1>fkab7gr89eiabnkv6fwasqprtghpm6p</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5453</id>
      <parentid>5452</parentid>
      <timestamp>2013-11-26T15:47:37Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Notes sur la rédaction de cette page */ + liste logiciels pas encore intégrés dans l'article</comment>
      <text xml:space="preserve" bytes="10103">{{Ébauche|L'édition et l'encodage de vidéos}}

= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

== Notes sur la rédaction de cette page ==
* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video
* La question de l'authoring (création de DVD, et chapitrage), ainsi que du rip (extraction) ne sont pas abordées dans cette page, mais ici: [[DVD_edition]]
* D'autres infos relatives à ces logiciels sont dispos sur: http://wiki.debian-facile.org/doc:media:media, http://doc.ubuntu-fr.org/montage_video, https://wiki.debian.org/fr/Multimedia
* Logiciels à ajouter: transcode, handbrake, hypervideo... sûrement bien d'autres.

== Considérations générales sur l'encodage de videos ==

* https://en.wikipedia.org/wiki/HTML5_video#Browser_support, prise en charge par les différents navigateurs des codecs video avec la balise HTML5 &lt;video&gt;
* Indication: en format OGV, avec les réglages par défaut de ffmpeg2theora, comptez ~100Mo pour une video de 10 minutes.
* Indication: pour youtube ou les lecteurs flash, le format video recommandé est le suivant: conteneur mp4, video x264, audio AAC.

== Encoder en ligne de commande ==
'''mencoder''' et '''ffmpeg''' sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui remplacera ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

Note: il existe des interfaces graphiques (front-ends) pour mencoder et avconv, elles seront indiquées plus bas ([[Edition_Video#Encoder_en_graphique]]).

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
&lt;code bash&gt;
#liste les codecs audio
mencoder -oac help
#liste les codecs vidéos
mencoder -ovc help
&lt;/code&gt;

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
&lt;code bash&gt;
mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;
&lt;/code&gt;

==== Voir aussi ====
* [http://doc.ubuntu-fr.org/mencoder Documentation mencoder sur Ubuntu-fr]
* [http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html Documentation mencoder sur mplayerhq]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Debian intégrera avconv dans ses dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Comment recenser les codecs audio/video disponibles ? ====
&lt;code&gt;ffmpeg -formats&lt;/code&gt;
==== Comment spécifier un codec audio/video à utilier ? ====
&lt;code&gt;avconv ?&lt;/code&gt;
==== Un exemple d'utilisation ====
&lt;code&gt;ffmpeg ?&lt;/code&gt;

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

=== autres outils spécifiques aux formats ===
Plusieurs formats ouverts pour l'audio/video proposent leurs propres outils, on peut citer:

* vorbis-tools: http://packages.debian.org/search?keywords=vorbis-tools (juste pour l'audio OGG Vorbis et FLAC)
* mkvtoolnix: http://packages.debian.org/search?keywords=mkvtoolnix (pour le format Matroska Video [MKV], il existe aussi une interface graphique pour l'outil)

== Encoder en graphique ==

=== avidemux === 
Avidemux n'est pas disponible dans les dépots officiels de Debian, et cela est bien dommage, mais voici plusieurs approches pour tenter de répondre à ce problème:
==== Solution 1: dépots deb-multimedia ====
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ deb-multimedia]. Nous vous conseillons de prendre connaissance de [http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F cette entrée du FAQ Debian] si vous comptez l'utiliser.

Pour l'ajouter, voyez [[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | comment ajouter un dépôt tiers]] à votre système.

==== Solution 2: compiler depuis les sources ====
Lisez la documentation du wiki: http://www.avidemux.org/admWiki/doku.php?id=build:install_2.6

==== Solution 3: aider à intégrer avidemux dans Debian ====
* Existe-t-il une ITP ?
* Ca fait des années que l'outil existe, pourquoi n'est-il pas déjà dans Debian ? Raison 1: il aurait été amputé d'une bonne partie de ses codecs. Raison 2: Pourquoi quoi, kwak pouet. 

=== VLC ===
VLC peut convertir/transcoder vos videos, qu'il s'agisse de flux en cours de lecture, ou de médias déjà existants.
Le jeu de codecs fournis avec Debian est bien sûr limité, donc tous les «profils» et choix proposés dans l'interface ne fonctionneront pas.
L'essentiel de la manip' se fait depuis le menu Fichier puis &quot;Convertir/Enregistrer&quot;.

Consultez la documentation officielle pour d'autres infos: http://wiki.videolan.org/Documentation:Streaming_HowTo_New

Les combinaisons entre les différentes méthodes d'encapsulation, codec video, codec audio, ne fonctionnent pas toutes, y compris celles indiquées dans les profils pré-enregistrés. Depuis la version 2.1.0, VLC est un peu plus clair sur les méthodes d'encapsulation qu'il sait gérer.

Combinaisons testées avec succès:
* H264 + Vorbis (MP4), avec VLC 2.1.0 (Jessie)
* VP80 + Vorbis (Webm), avec VLC 2.0.8 (Jessie)
* Theora + Vorbis (OGG), sous Wheezy
Combinaisons problématiques:
* Celles à base de MP3, de WMA, et bien d'autres...

Note: il est possible de créer ses propres profils.
Note: Divers problèmes constatés avec l'encodage en Dirac: latence à la lecture (avec conteneur TS), ou saccades (avec conteneur OGG).

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== MLT Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
* Documentation officielle: http://www.mltframework.org/bin/view/MLT/MltMelt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).
Remarque: la fraîcheur de l'outil et son utilisabilité n'ont pas été testés.

== Editer en graphique ==

Kdenlive et OpenShot Video Editor sont les deux logiciels plebiscités.

=== Kdenlive ===
* Site officiel: http://kdenlive.org/
* Paquet debian: http://packages.debian.org/search?keywords=kdenlive
* [[wikipedia:Kdenlive]]
* http://wiki.debian-facile.org/doc:media:kdenlive
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== OpenShot Video Editor ===
* Site officiel: http://www.openshotvideo.com/
* Paquet debian: http://packages.debian.org/search?keywords=openshot
* [[wikipedia:OpenShot_Video_Editor]]
* http://wiki.debian-facile.org/doc:media:openshot
Il paraît que c'est bien.

=== Pitivi ===
* Site officiel: http://www.pitivi.org
* Paquet debian: http://packages.debian.org/search?keywords=pitivi
* http://wiki.debian-facile.org/doc:environnements:gnome:pitivi

Editeur video qui utilise GStreamer. Paraît que c'est bien aussi.

=== LiVES ===
* Site officiel: http://lives.sourceforge.net
* Paquet debian: http://packages.debian.org/search?keywords=lives
Davantage adapté au VJing.

=== Flowblade ===
* Site officiel: https://code.google.com/p/flowblade/
* Paquet debian: http://packages.debian.org/search?keywords=flowblade

=== Shotcut ===
* Site officiel: http://www.shotcut.org
* Absent des dépots Debian

=== Cinelerra et cinelerra CV ===
cinelerra existe en 2 versions. CV voulant dire &quot;Community Version&quot;.

* Site officiel de cinelerra: http://heroinewarrior.com/cinelerra.php
* Site officiel de cinelerra CV: http://cinelerra.org
* Paquet debian: absent des dépots officiels, présent dans le dépot Multimedia
* [[wikipedia:Cinelerra]]
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Lightworks ===
* Site officiel: http://www.lwks.com/
* Absent des dépots Debian. Proprio ?

=== Kino (à l'arrêt) ===
* Site officiel: http://www.kinodv.org/
* Paquet debian: http://packages.debian.org/search?keywords=kino
«Kino has not been actively maintained since 2009. We encourage you to try other Linux video editors such as Shotcut, Kdenlive, Flowblade, OpenShot, PiTiVi, LiVES, and LightWorks.»

=== Open Movie Editor (inactif) ===
* Site officiel: http://www.openmovieeditor.org/
* Paquet debian: aucun ou trop vieux ( http://packages.debian.org/search?searchon=names&amp;keywords=open+movie )
Projet sans sortie officielle depuis 2009. Non testé.</text>
      <sha1>2fu4b0wso09ovkufcan56n1vwi5y2dx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5488</id>
      <parentid>5453</parentid>
      <timestamp>2013-12-07T16:07:08Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Notes sur la rédaction de cette page */</comment>
      <text xml:space="preserve" bytes="10114">{{Ébauche|L'édition et l'encodage de vidéos}}

= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

== Notes sur la rédaction de cette page ==
* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video
* La question de l'authoring (création de DVD, et chapitrage), ainsi que du rip (extraction) ne sont pas abordées dans cette page, mais ici: [[DVD_edition]]
* D'autres infos relatives à ces logiciels sont dispos sur: http://wiki.debian-facile.org/doc:media:media, http://doc.ubuntu-fr.org/montage_video, https://wiki.debian.org/fr/Multimedia
* Logiciels à ajouter: transcode, handbrake, hypervideo, dvd6clone... sûrement bien d'autres.

== Considérations générales sur l'encodage de videos ==

* https://en.wikipedia.org/wiki/HTML5_video#Browser_support, prise en charge par les différents navigateurs des codecs video avec la balise HTML5 &lt;video&gt;
* Indication: en format OGV, avec les réglages par défaut de ffmpeg2theora, comptez ~100Mo pour une video de 10 minutes.
* Indication: pour youtube ou les lecteurs flash, le format video recommandé est le suivant: conteneur mp4, video x264, audio AAC.

== Encoder en ligne de commande ==
'''mencoder''' et '''ffmpeg''' sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui remplacera ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

Note: il existe des interfaces graphiques (front-ends) pour mencoder et avconv, elles seront indiquées plus bas ([[Edition_Video#Encoder_en_graphique]]).

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
&lt;code bash&gt;
#liste les codecs audio
mencoder -oac help
#liste les codecs vidéos
mencoder -ovc help
&lt;/code&gt;

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
&lt;code bash&gt;
mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;
&lt;/code&gt;

==== Voir aussi ====
* [http://doc.ubuntu-fr.org/mencoder Documentation mencoder sur Ubuntu-fr]
* [http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html Documentation mencoder sur mplayerhq]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Debian intégrera avconv dans ses dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Comment recenser les codecs audio/video disponibles ? ====
&lt;code&gt;ffmpeg -formats&lt;/code&gt;
==== Comment spécifier un codec audio/video à utilier ? ====
&lt;code&gt;avconv ?&lt;/code&gt;
==== Un exemple d'utilisation ====
&lt;code&gt;ffmpeg ?&lt;/code&gt;

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

=== autres outils spécifiques aux formats ===
Plusieurs formats ouverts pour l'audio/video proposent leurs propres outils, on peut citer:

* vorbis-tools: http://packages.debian.org/search?keywords=vorbis-tools (juste pour l'audio OGG Vorbis et FLAC)
* mkvtoolnix: http://packages.debian.org/search?keywords=mkvtoolnix (pour le format Matroska Video [MKV], il existe aussi une interface graphique pour l'outil)

== Encoder en graphique ==

=== avidemux === 
Avidemux n'est pas disponible dans les dépots officiels de Debian, et cela est bien dommage, mais voici plusieurs approches pour tenter de répondre à ce problème:
==== Solution 1: dépots deb-multimedia ====
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ deb-multimedia]. Nous vous conseillons de prendre connaissance de [http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F cette entrée du FAQ Debian] si vous comptez l'utiliser.

Pour l'ajouter, voyez [[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | comment ajouter un dépôt tiers]] à votre système.

==== Solution 2: compiler depuis les sources ====
Lisez la documentation du wiki: http://www.avidemux.org/admWiki/doku.php?id=build:install_2.6

==== Solution 3: aider à intégrer avidemux dans Debian ====
* Existe-t-il une ITP ?
* Ca fait des années que l'outil existe, pourquoi n'est-il pas déjà dans Debian ? Raison 1: il aurait été amputé d'une bonne partie de ses codecs. Raison 2: Pourquoi quoi, kwak pouet. 

=== VLC ===
VLC peut convertir/transcoder vos videos, qu'il s'agisse de flux en cours de lecture, ou de médias déjà existants.
Le jeu de codecs fournis avec Debian est bien sûr limité, donc tous les «profils» et choix proposés dans l'interface ne fonctionneront pas.
L'essentiel de la manip' se fait depuis le menu Fichier puis &quot;Convertir/Enregistrer&quot;.

Consultez la documentation officielle pour d'autres infos: http://wiki.videolan.org/Documentation:Streaming_HowTo_New

Les combinaisons entre les différentes méthodes d'encapsulation, codec video, codec audio, ne fonctionnent pas toutes, y compris celles indiquées dans les profils pré-enregistrés. Depuis la version 2.1.0, VLC est un peu plus clair sur les méthodes d'encapsulation qu'il sait gérer.

Combinaisons testées avec succès:
* H264 + Vorbis (MP4), avec VLC 2.1.0 (Jessie)
* VP80 + Vorbis (Webm), avec VLC 2.0.8 (Jessie)
* Theora + Vorbis (OGG), sous Wheezy
Combinaisons problématiques:
* Celles à base de MP3, de WMA, et bien d'autres...

Note: il est possible de créer ses propres profils.
Note: Divers problèmes constatés avec l'encodage en Dirac: latence à la lecture (avec conteneur TS), ou saccades (avec conteneur OGG).

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== MLT Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
* Documentation officielle: http://www.mltframework.org/bin/view/MLT/MltMelt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).
Remarque: la fraîcheur de l'outil et son utilisabilité n'ont pas été testés.

== Editer en graphique ==

Kdenlive et OpenShot Video Editor sont les deux logiciels plebiscités.

=== Kdenlive ===
* Site officiel: http://kdenlive.org/
* Paquet debian: http://packages.debian.org/search?keywords=kdenlive
* [[wikipedia:Kdenlive]]
* http://wiki.debian-facile.org/doc:media:kdenlive
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== OpenShot Video Editor ===
* Site officiel: http://www.openshotvideo.com/
* Paquet debian: http://packages.debian.org/search?keywords=openshot
* [[wikipedia:OpenShot_Video_Editor]]
* http://wiki.debian-facile.org/doc:media:openshot
Il paraît que c'est bien.

=== Pitivi ===
* Site officiel: http://www.pitivi.org
* Paquet debian: http://packages.debian.org/search?keywords=pitivi
* http://wiki.debian-facile.org/doc:environnements:gnome:pitivi

Editeur video qui utilise GStreamer. Paraît que c'est bien aussi.

=== LiVES ===
* Site officiel: http://lives.sourceforge.net
* Paquet debian: http://packages.debian.org/search?keywords=lives
Davantage adapté au VJing.

=== Flowblade ===
* Site officiel: https://code.google.com/p/flowblade/
* Paquet debian: http://packages.debian.org/search?keywords=flowblade

=== Shotcut ===
* Site officiel: http://www.shotcut.org
* Absent des dépots Debian

=== Cinelerra et cinelerra CV ===
cinelerra existe en 2 versions. CV voulant dire &quot;Community Version&quot;.

* Site officiel de cinelerra: http://heroinewarrior.com/cinelerra.php
* Site officiel de cinelerra CV: http://cinelerra.org
* Paquet debian: absent des dépots officiels, présent dans le dépot Multimedia
* [[wikipedia:Cinelerra]]
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Lightworks ===
* Site officiel: http://www.lwks.com/
* Absent des dépots Debian. Proprio ?

=== Kino (à l'arrêt) ===
* Site officiel: http://www.kinodv.org/
* Paquet debian: http://packages.debian.org/search?keywords=kino
«Kino has not been actively maintained since 2009. We encourage you to try other Linux video editors such as Shotcut, Kdenlive, Flowblade, OpenShot, PiTiVi, LiVES, and LightWorks.»

=== Open Movie Editor (inactif) ===
* Site officiel: http://www.openmovieeditor.org/
* Paquet debian: aucun ou trop vieux ( http://packages.debian.org/search?searchon=names&amp;keywords=open+movie )
Projet sans sortie officielle depuis 2009. Non testé.</text>
      <sha1>by53rfdaa03xvznazkk14tgspcycvoh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5492</id>
      <parentid>5488</parentid>
      <timestamp>2013-12-10T18:00:16Z</timestamp>
      <contributor>
        <username>Agentsteel</username>
        <id>260</id>
      </contributor>
      <comment>/* ffmpeg / avconv */  ajouts et modifications</comment>
      <text xml:space="preserve" bytes="10938">{{Ébauche|L'édition et l'encodage de vidéos}}

= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

== Notes sur la rédaction de cette page ==
* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video
* La question de l'authoring (création de DVD, et chapitrage), ainsi que du rip (extraction) ne sont pas abordées dans cette page, mais ici: [[DVD_edition]]
* D'autres infos relatives à ces logiciels sont dispos sur: http://wiki.debian-facile.org/doc:media:media, http://doc.ubuntu-fr.org/montage_video, https://wiki.debian.org/fr/Multimedia
* Logiciels à ajouter: transcode, handbrake, hypervideo, dvd6clone... sûrement bien d'autres.

== Considérations générales sur l'encodage de videos ==

* https://en.wikipedia.org/wiki/HTML5_video#Browser_support, prise en charge par les différents navigateurs des codecs video avec la balise HTML5 &lt;video&gt;
* Indication: en format OGV, avec les réglages par défaut de ffmpeg2theora, comptez ~100Mo pour une video de 10 minutes.
* Indication: pour youtube ou les lecteurs flash, le format video recommandé est le suivant: conteneur mp4, video x264, audio AAC.

== Encoder en ligne de commande ==
'''mencoder''' et '''ffmpeg''' sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui remplacera ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

Note: il existe des interfaces graphiques (front-ends) pour mencoder et avconv, elles seront indiquées plus bas ([[Edition_Video#Encoder_en_graphique]]).

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
&lt;code bash&gt;
#liste les codecs audio
mencoder -oac help
#liste les codecs vidéos
mencoder -ovc help
&lt;/code&gt;

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
&lt;code bash&gt;
mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;
&lt;/code&gt;

==== Voir aussi ====
* [http://doc.ubuntu-fr.org/mencoder Documentation mencoder sur Ubuntu-fr]
* [http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html Documentation mencoder sur mplayerhq]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Avconv a été intégré dans les dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Liste des formats de fichiers supportés par votre version de avconv ====
&lt;code&gt;avconv -formats&lt;/code&gt;
==== Liste des codecs audio et vidéo supportés par votre version de avconv ====
&lt;code&gt;avconv -codecs&lt;/code&gt;
==== Exemples d'utilisation ====
La page de manuel contient quelques exemples.
&lt;code&gt;man avconv&lt;/code&gt;
Un exemple très simple pour convertir un fichier vidéo au format MP4 au format MKV
&lt;code&gt;avconv -i source.mp4 destination.mkv&lt;/code&gt;
Pour obtenir seulement une piste audio MP3 depuis un fichier video
&lt;code&gt;avconv -i source.mp4 destination.mp3&lt;/code&gt;
==== Pour capturer une vidéo (avec audio) depuis la webcam ====
&lt;code&gt;avconv -f alsa -i hw:1 -f video4linux2 -i /dev/video0 -ar 44100 -r 25 -s vga -pre:0 libx264-lossless_ultrafast -c:v libx264 -strict experimental monfichier.mkv&lt;/code&gt;
Dans cet exemple, un preset vidéo est utilisé : un mode sans perte de qualité avec compression très rapide. Le format du fichier en sortie est le .mkv (Matroska).
Ligne de commande à adapter en fonction de vos périphériques audio et vidéo.

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

=== autres outils spécifiques aux formats ===
Plusieurs formats ouverts pour l'audio/video proposent leurs propres outils, on peut citer:

* vorbis-tools: http://packages.debian.org/search?keywords=vorbis-tools (juste pour l'audio OGG Vorbis et FLAC)
* mkvtoolnix: http://packages.debian.org/search?keywords=mkvtoolnix (pour le format Matroska Video [MKV], il existe aussi une interface graphique pour l'outil)

== Encoder en graphique ==

=== avidemux === 
Avidemux n'est pas disponible dans les dépots officiels de Debian, et cela est bien dommage, mais voici plusieurs approches pour tenter de répondre à ce problème:
==== Solution 1: dépots deb-multimedia ====
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ deb-multimedia]. Nous vous conseillons de prendre connaissance de [http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F cette entrée du FAQ Debian] si vous comptez l'utiliser.

Pour l'ajouter, voyez [[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | comment ajouter un dépôt tiers]] à votre système.

==== Solution 2: compiler depuis les sources ====
Lisez la documentation du wiki: http://www.avidemux.org/admWiki/doku.php?id=build:install_2.6

==== Solution 3: aider à intégrer avidemux dans Debian ====
* Existe-t-il une ITP ?
* Ca fait des années que l'outil existe, pourquoi n'est-il pas déjà dans Debian ? Raison 1: il aurait été amputé d'une bonne partie de ses codecs. Raison 2: Pourquoi quoi, kwak pouet. 

=== VLC ===
VLC peut convertir/transcoder vos videos, qu'il s'agisse de flux en cours de lecture, ou de médias déjà existants.
Le jeu de codecs fournis avec Debian est bien sûr limité, donc tous les «profils» et choix proposés dans l'interface ne fonctionneront pas.
L'essentiel de la manip' se fait depuis le menu Fichier puis &quot;Convertir/Enregistrer&quot;.

Consultez la documentation officielle pour d'autres infos: http://wiki.videolan.org/Documentation:Streaming_HowTo_New

Les combinaisons entre les différentes méthodes d'encapsulation, codec video, codec audio, ne fonctionnent pas toutes, y compris celles indiquées dans les profils pré-enregistrés. Depuis la version 2.1.0, VLC est un peu plus clair sur les méthodes d'encapsulation qu'il sait gérer.

Combinaisons testées avec succès:
* H264 + Vorbis (MP4), avec VLC 2.1.0 (Jessie)
* VP80 + Vorbis (Webm), avec VLC 2.0.8 (Jessie)
* Theora + Vorbis (OGG), sous Wheezy
Combinaisons problématiques:
* Celles à base de MP3, de WMA, et bien d'autres...

Note: il est possible de créer ses propres profils.
Note: Divers problèmes constatés avec l'encodage en Dirac: latence à la lecture (avec conteneur TS), ou saccades (avec conteneur OGG).

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== MLT Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
* Documentation officielle: http://www.mltframework.org/bin/view/MLT/MltMelt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).
Remarque: la fraîcheur de l'outil et son utilisabilité n'ont pas été testés.

== Editer en graphique ==

Kdenlive et OpenShot Video Editor sont les deux logiciels plebiscités.

=== Kdenlive ===
* Site officiel: http://kdenlive.org/
* Paquet debian: http://packages.debian.org/search?keywords=kdenlive
* [[wikipedia:Kdenlive]]
* http://wiki.debian-facile.org/doc:media:kdenlive
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== OpenShot Video Editor ===
* Site officiel: http://www.openshotvideo.com/
* Paquet debian: http://packages.debian.org/search?keywords=openshot
* [[wikipedia:OpenShot_Video_Editor]]
* http://wiki.debian-facile.org/doc:media:openshot
Il paraît que c'est bien.

=== Pitivi ===
* Site officiel: http://www.pitivi.org
* Paquet debian: http://packages.debian.org/search?keywords=pitivi
* http://wiki.debian-facile.org/doc:environnements:gnome:pitivi

Editeur video qui utilise GStreamer. Paraît que c'est bien aussi.

=== LiVES ===
* Site officiel: http://lives.sourceforge.net
* Paquet debian: http://packages.debian.org/search?keywords=lives
Davantage adapté au VJing.

=== Flowblade ===
* Site officiel: https://code.google.com/p/flowblade/
* Paquet debian: http://packages.debian.org/search?keywords=flowblade

=== Shotcut ===
* Site officiel: http://www.shotcut.org
* Absent des dépots Debian

=== Cinelerra et cinelerra CV ===
cinelerra existe en 2 versions. CV voulant dire &quot;Community Version&quot;.

* Site officiel de cinelerra: http://heroinewarrior.com/cinelerra.php
* Site officiel de cinelerra CV: http://cinelerra.org
* Paquet debian: absent des dépots officiels, présent dans le dépot Multimedia
* [[wikipedia:Cinelerra]]
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Lightworks ===
* Site officiel: http://www.lwks.com/
* Absent des dépots Debian. Proprio ?

=== Kino (à l'arrêt) ===
* Site officiel: http://www.kinodv.org/
* Paquet debian: http://packages.debian.org/search?keywords=kino
«Kino has not been actively maintained since 2009. We encourage you to try other Linux video editors such as Shotcut, Kdenlive, Flowblade, OpenShot, PiTiVi, LiVES, and LightWorks.»

=== Open Movie Editor (inactif) ===
* Site officiel: http://www.openmovieeditor.org/
* Paquet debian: aucun ou trop vieux ( http://packages.debian.org/search?searchon=names&amp;keywords=open+movie )
Projet sans sortie officielle depuis 2009. Non testé.</text>
      <sha1>cncmv1tpp62drxhnyireo649dm8oxr5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5506</id>
      <parentid>5492</parentid>
      <timestamp>2013-12-19T20:19:37Z</timestamp>
      <contributor>
        <username>Agentsteel</username>
        <id>260</id>
      </contributor>
      <comment>/* Encoder en graphique */ ajout Arista</comment>
      <text xml:space="preserve" bytes="11129">{{Ébauche|L'édition et l'encodage de vidéos}}

= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

== Notes sur la rédaction de cette page ==
* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video
* La question de l'authoring (création de DVD, et chapitrage), ainsi que du rip (extraction) ne sont pas abordées dans cette page, mais ici: [[DVD_edition]]
* D'autres infos relatives à ces logiciels sont dispos sur: http://wiki.debian-facile.org/doc:media:media, http://doc.ubuntu-fr.org/montage_video, https://wiki.debian.org/fr/Multimedia
* Logiciels à ajouter: transcode, handbrake, hypervideo, dvd6clone... sûrement bien d'autres.

== Considérations générales sur l'encodage de videos ==

* https://en.wikipedia.org/wiki/HTML5_video#Browser_support, prise en charge par les différents navigateurs des codecs video avec la balise HTML5 &lt;video&gt;
* Indication: en format OGV, avec les réglages par défaut de ffmpeg2theora, comptez ~100Mo pour une video de 10 minutes.
* Indication: pour youtube ou les lecteurs flash, le format video recommandé est le suivant: conteneur mp4, video x264, audio AAC.

== Encoder en ligne de commande ==
'''mencoder''' et '''ffmpeg''' sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui remplacera ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

Note: il existe des interfaces graphiques (front-ends) pour mencoder et avconv, elles seront indiquées plus bas ([[Edition_Video#Encoder_en_graphique]]).

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
&lt;code bash&gt;
#liste les codecs audio
mencoder -oac help
#liste les codecs vidéos
mencoder -ovc help
&lt;/code&gt;

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
&lt;code bash&gt;
mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;
&lt;/code&gt;

==== Voir aussi ====
* [http://doc.ubuntu-fr.org/mencoder Documentation mencoder sur Ubuntu-fr]
* [http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html Documentation mencoder sur mplayerhq]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Avconv a été intégré dans les dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Liste des formats de fichiers supportés par votre version de avconv ====
&lt;code&gt;avconv -formats&lt;/code&gt;
==== Liste des codecs audio et vidéo supportés par votre version de avconv ====
&lt;code&gt;avconv -codecs&lt;/code&gt;
==== Exemples d'utilisation ====
La page de manuel contient quelques exemples.
&lt;code&gt;man avconv&lt;/code&gt;
Un exemple très simple pour convertir un fichier vidéo au format MP4 au format MKV
&lt;code&gt;avconv -i source.mp4 destination.mkv&lt;/code&gt;
Pour obtenir seulement une piste audio MP3 depuis un fichier video
&lt;code&gt;avconv -i source.mp4 destination.mp3&lt;/code&gt;
==== Pour capturer une vidéo (avec audio) depuis la webcam ====
&lt;code&gt;avconv -f alsa -i hw:1 -f video4linux2 -i /dev/video0 -ar 44100 -r 25 -s vga -pre:0 libx264-lossless_ultrafast -c:v libx264 -strict experimental monfichier.mkv&lt;/code&gt;
Dans cet exemple, un preset vidéo est utilisé : un mode sans perte de qualité avec compression très rapide. Le format du fichier en sortie est le .mkv (Matroska).
Ligne de commande à adapter en fonction de vos périphériques audio et vidéo.

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

=== autres outils spécifiques aux formats ===
Plusieurs formats ouverts pour l'audio/video proposent leurs propres outils, on peut citer:

* vorbis-tools: http://packages.debian.org/search?keywords=vorbis-tools (juste pour l'audio OGG Vorbis et FLAC)
* mkvtoolnix: http://packages.debian.org/search?keywords=mkvtoolnix (pour le format Matroska Video [MKV], il existe aussi une interface graphique pour l'outil)

== Encoder en graphique ==

=== Arista ===

Interface graphique (GTK) pour le transcodage (conversion) de vidéos. Une multitude de modèles de conversion (&quot;presets&quot;) fournis.

http://packages.debian.org/wheezy/arista

=== avidemux === 
Avidemux n'est pas disponible dans les dépots officiels de Debian, et cela est bien dommage, mais voici plusieurs approches pour tenter de répondre à ce problème:
==== Solution 1: dépots deb-multimedia ====
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ deb-multimedia]. Nous vous conseillons de prendre connaissance de [http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F cette entrée du FAQ Debian] si vous comptez l'utiliser.

Pour l'ajouter, voyez [[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | comment ajouter un dépôt tiers]] à votre système.

==== Solution 2: compiler depuis les sources ====
Lisez la documentation du wiki: http://www.avidemux.org/admWiki/doku.php?id=build:install_2.6

==== Solution 3: aider à intégrer avidemux dans Debian ====
* Existe-t-il une ITP ?
* Ca fait des années que l'outil existe, pourquoi n'est-il pas déjà dans Debian ? Raison 1: il aurait été amputé d'une bonne partie de ses codecs. Raison 2: Pourquoi quoi, kwak pouet. 

=== VLC ===
VLC peut convertir/transcoder vos videos, qu'il s'agisse de flux en cours de lecture, ou de médias déjà existants.
Le jeu de codecs fournis avec Debian est bien sûr limité, donc tous les «profils» et choix proposés dans l'interface ne fonctionneront pas.
L'essentiel de la manip' se fait depuis le menu Fichier puis &quot;Convertir/Enregistrer&quot;.

Consultez la documentation officielle pour d'autres infos: http://wiki.videolan.org/Documentation:Streaming_HowTo_New

Les combinaisons entre les différentes méthodes d'encapsulation, codec video, codec audio, ne fonctionnent pas toutes, y compris celles indiquées dans les profils pré-enregistrés. Depuis la version 2.1.0, VLC est un peu plus clair sur les méthodes d'encapsulation qu'il sait gérer.

Combinaisons testées avec succès:
* H264 + Vorbis (MP4), avec VLC 2.1.0 (Jessie)
* VP80 + Vorbis (Webm), avec VLC 2.0.8 (Jessie)
* Theora + Vorbis (OGG), sous Wheezy
Combinaisons problématiques:
* Celles à base de MP3, de WMA, et bien d'autres...

Note: il est possible de créer ses propres profils.
Note: Divers problèmes constatés avec l'encodage en Dirac: latence à la lecture (avec conteneur TS), ou saccades (avec conteneur OGG).

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== MLT Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
* Documentation officielle: http://www.mltframework.org/bin/view/MLT/MltMelt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).
Remarque: la fraîcheur de l'outil et son utilisabilité n'ont pas été testés.

== Editer en graphique ==

Kdenlive et OpenShot Video Editor sont les deux logiciels plebiscités.

=== Kdenlive ===
* Site officiel: http://kdenlive.org/
* Paquet debian: http://packages.debian.org/search?keywords=kdenlive
* [[wikipedia:Kdenlive]]
* http://wiki.debian-facile.org/doc:media:kdenlive
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== OpenShot Video Editor ===
* Site officiel: http://www.openshotvideo.com/
* Paquet debian: http://packages.debian.org/search?keywords=openshot
* [[wikipedia:OpenShot_Video_Editor]]
* http://wiki.debian-facile.org/doc:media:openshot
Il paraît que c'est bien.

=== Pitivi ===
* Site officiel: http://www.pitivi.org
* Paquet debian: http://packages.debian.org/search?keywords=pitivi
* http://wiki.debian-facile.org/doc:environnements:gnome:pitivi

Editeur video qui utilise GStreamer. Paraît que c'est bien aussi.

=== LiVES ===
* Site officiel: http://lives.sourceforge.net
* Paquet debian: http://packages.debian.org/search?keywords=lives
Davantage adapté au VJing.

=== Flowblade ===
* Site officiel: https://code.google.com/p/flowblade/
* Paquet debian: http://packages.debian.org/search?keywords=flowblade

=== Shotcut ===
* Site officiel: http://www.shotcut.org
* Absent des dépots Debian

=== Cinelerra et cinelerra CV ===
cinelerra existe en 2 versions. CV voulant dire &quot;Community Version&quot;.

* Site officiel de cinelerra: http://heroinewarrior.com/cinelerra.php
* Site officiel de cinelerra CV: http://cinelerra.org
* Paquet debian: absent des dépots officiels, présent dans le dépot Multimedia
* [[wikipedia:Cinelerra]]
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Lightworks ===
* Site officiel: http://www.lwks.com/
* Absent des dépots Debian. Proprio ?

=== Kino (à l'arrêt) ===
* Site officiel: http://www.kinodv.org/
* Paquet debian: http://packages.debian.org/search?keywords=kino
«Kino has not been actively maintained since 2009. We encourage you to try other Linux video editors such as Shotcut, Kdenlive, Flowblade, OpenShot, PiTiVi, LiVES, and LightWorks.»

=== Open Movie Editor (inactif) ===
* Site officiel: http://www.openmovieeditor.org/
* Paquet debian: aucun ou trop vieux ( http://packages.debian.org/search?searchon=names&amp;keywords=open+movie )
Projet sans sortie officielle depuis 2009. Non testé.</text>
      <sha1>0bjk75vxlwuj67ws9iu3jtop8pkp4dd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5507</id>
      <parentid>5506</parentid>
      <timestamp>2013-12-20T17:53:33Z</timestamp>
      <contributor>
        <username>Agentsteel</username>
        <id>260</id>
      </contributor>
      <comment>/* Encoder en graphique */ ajout transmageddon</comment>
      <text xml:space="preserve" bytes="11229">{{Ébauche|L'édition et l'encodage de vidéos}}

= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

== Notes sur la rédaction de cette page ==
* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video
* La question de l'authoring (création de DVD, et chapitrage), ainsi que du rip (extraction) ne sont pas abordées dans cette page, mais ici: [[DVD_edition]]
* D'autres infos relatives à ces logiciels sont dispos sur: http://wiki.debian-facile.org/doc:media:media, http://doc.ubuntu-fr.org/montage_video, https://wiki.debian.org/fr/Multimedia
* Logiciels à ajouter: transcode, handbrake, hypervideo, dvd6clone... sûrement bien d'autres.

== Considérations générales sur l'encodage de videos ==

* https://en.wikipedia.org/wiki/HTML5_video#Browser_support, prise en charge par les différents navigateurs des codecs video avec la balise HTML5 &lt;video&gt;
* Indication: en format OGV, avec les réglages par défaut de ffmpeg2theora, comptez ~100Mo pour une video de 10 minutes.
* Indication: pour youtube ou les lecteurs flash, le format video recommandé est le suivant: conteneur mp4, video x264, audio AAC.

== Encoder en ligne de commande ==
'''mencoder''' et '''ffmpeg''' sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui remplacera ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

Note: il existe des interfaces graphiques (front-ends) pour mencoder et avconv, elles seront indiquées plus bas ([[Edition_Video#Encoder_en_graphique]]).

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
&lt;code bash&gt;
#liste les codecs audio
mencoder -oac help
#liste les codecs vidéos
mencoder -ovc help
&lt;/code&gt;

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
&lt;code bash&gt;
mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;
&lt;/code&gt;

==== Voir aussi ====
* [http://doc.ubuntu-fr.org/mencoder Documentation mencoder sur Ubuntu-fr]
* [http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html Documentation mencoder sur mplayerhq]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Avconv a été intégré dans les dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Liste des formats de fichiers supportés par votre version de avconv ====
&lt;code&gt;avconv -formats&lt;/code&gt;
==== Liste des codecs audio et vidéo supportés par votre version de avconv ====
&lt;code&gt;avconv -codecs&lt;/code&gt;
==== Exemples d'utilisation ====
La page de manuel contient quelques exemples.
&lt;code&gt;man avconv&lt;/code&gt;
Un exemple très simple pour convertir un fichier vidéo au format MP4 au format MKV
&lt;code&gt;avconv -i source.mp4 destination.mkv&lt;/code&gt;
Pour obtenir seulement une piste audio MP3 depuis un fichier video
&lt;code&gt;avconv -i source.mp4 destination.mp3&lt;/code&gt;
==== Pour capturer une vidéo (avec audio) depuis la webcam ====
&lt;code&gt;avconv -f alsa -i hw:1 -f video4linux2 -i /dev/video0 -ar 44100 -r 25 -s vga -pre:0 libx264-lossless_ultrafast -c:v libx264 -strict experimental monfichier.mkv&lt;/code&gt;
Dans cet exemple, un preset vidéo est utilisé : un mode sans perte de qualité avec compression très rapide. Le format du fichier en sortie est le .mkv (Matroska).
Ligne de commande à adapter en fonction de vos périphériques audio et vidéo.

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

=== autres outils spécifiques aux formats ===
Plusieurs formats ouverts pour l'audio/video proposent leurs propres outils, on peut citer:

* vorbis-tools: http://packages.debian.org/search?keywords=vorbis-tools (juste pour l'audio OGG Vorbis et FLAC)
* mkvtoolnix: http://packages.debian.org/search?keywords=mkvtoolnix (pour le format Matroska Video [MKV], il existe aussi une interface graphique pour l'outil)

== Encoder en graphique ==

=== Arista ===

Interface graphique (GTK) pour le transcodage (conversion) de vidéos. Une multitude de modèles de conversion (&quot;presets&quot;) fournis.

http://packages.debian.org/wheezy/arista

=== Transmageddon ===

Très simple d'utilisation

http://packages.debian.org/wheezy/transmageddon

=== avidemux === 
Avidemux n'est pas disponible dans les dépots officiels de Debian, et cela est bien dommage, mais voici plusieurs approches pour tenter de répondre à ce problème:
==== Solution 1: dépots deb-multimedia ====
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ deb-multimedia]. Nous vous conseillons de prendre connaissance de [http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F cette entrée du FAQ Debian] si vous comptez l'utiliser.

Pour l'ajouter, voyez [[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | comment ajouter un dépôt tiers]] à votre système.

==== Solution 2: compiler depuis les sources ====
Lisez la documentation du wiki: http://www.avidemux.org/admWiki/doku.php?id=build:install_2.6

==== Solution 3: aider à intégrer avidemux dans Debian ====
* Existe-t-il une ITP ?
* Ca fait des années que l'outil existe, pourquoi n'est-il pas déjà dans Debian ? Raison 1: il aurait été amputé d'une bonne partie de ses codecs. Raison 2: Pourquoi quoi, kwak pouet. 

=== VLC ===
VLC peut convertir/transcoder vos videos, qu'il s'agisse de flux en cours de lecture, ou de médias déjà existants.
Le jeu de codecs fournis avec Debian est bien sûr limité, donc tous les «profils» et choix proposés dans l'interface ne fonctionneront pas.
L'essentiel de la manip' se fait depuis le menu Fichier puis &quot;Convertir/Enregistrer&quot;.

Consultez la documentation officielle pour d'autres infos: http://wiki.videolan.org/Documentation:Streaming_HowTo_New

Les combinaisons entre les différentes méthodes d'encapsulation, codec video, codec audio, ne fonctionnent pas toutes, y compris celles indiquées dans les profils pré-enregistrés. Depuis la version 2.1.0, VLC est un peu plus clair sur les méthodes d'encapsulation qu'il sait gérer.

Combinaisons testées avec succès:
* H264 + Vorbis (MP4), avec VLC 2.1.0 (Jessie)
* VP80 + Vorbis (Webm), avec VLC 2.0.8 (Jessie)
* Theora + Vorbis (OGG), sous Wheezy
Combinaisons problématiques:
* Celles à base de MP3, de WMA, et bien d'autres...

Note: il est possible de créer ses propres profils.
Note: Divers problèmes constatés avec l'encodage en Dirac: latence à la lecture (avec conteneur TS), ou saccades (avec conteneur OGG).

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== MLT Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
* Documentation officielle: http://www.mltframework.org/bin/view/MLT/MltMelt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).
Remarque: la fraîcheur de l'outil et son utilisabilité n'ont pas été testés.

== Editer en graphique ==

Kdenlive et OpenShot Video Editor sont les deux logiciels plebiscités.

=== Kdenlive ===
* Site officiel: http://kdenlive.org/
* Paquet debian: http://packages.debian.org/search?keywords=kdenlive
* [[wikipedia:Kdenlive]]
* http://wiki.debian-facile.org/doc:media:kdenlive
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== OpenShot Video Editor ===
* Site officiel: http://www.openshotvideo.com/
* Paquet debian: http://packages.debian.org/search?keywords=openshot
* [[wikipedia:OpenShot_Video_Editor]]
* http://wiki.debian-facile.org/doc:media:openshot
Il paraît que c'est bien.

=== Pitivi ===
* Site officiel: http://www.pitivi.org
* Paquet debian: http://packages.debian.org/search?keywords=pitivi
* http://wiki.debian-facile.org/doc:environnements:gnome:pitivi

Editeur video qui utilise GStreamer. Paraît que c'est bien aussi.

=== LiVES ===
* Site officiel: http://lives.sourceforge.net
* Paquet debian: http://packages.debian.org/search?keywords=lives
Davantage adapté au VJing.

=== Flowblade ===
* Site officiel: https://code.google.com/p/flowblade/
* Paquet debian: http://packages.debian.org/search?keywords=flowblade

=== Shotcut ===
* Site officiel: http://www.shotcut.org
* Absent des dépots Debian

=== Cinelerra et cinelerra CV ===
cinelerra existe en 2 versions. CV voulant dire &quot;Community Version&quot;.

* Site officiel de cinelerra: http://heroinewarrior.com/cinelerra.php
* Site officiel de cinelerra CV: http://cinelerra.org
* Paquet debian: absent des dépots officiels, présent dans le dépot Multimedia
* [[wikipedia:Cinelerra]]
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Lightworks ===
* Site officiel: http://www.lwks.com/
* Absent des dépots Debian. Proprio ?

=== Kino (à l'arrêt) ===
* Site officiel: http://www.kinodv.org/
* Paquet debian: http://packages.debian.org/search?keywords=kino
«Kino has not been actively maintained since 2009. We encourage you to try other Linux video editors such as Shotcut, Kdenlive, Flowblade, OpenShot, PiTiVi, LiVES, and LightWorks.»

=== Open Movie Editor (inactif) ===
* Site officiel: http://www.openmovieeditor.org/
* Paquet debian: aucun ou trop vieux ( http://packages.debian.org/search?searchon=names&amp;keywords=open+movie )
Projet sans sortie officielle depuis 2009. Non testé.</text>
      <sha1>arc3tu8lobdgz4k3cub15m2hs4rovq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5509</id>
      <parentid>5507</parentid>
      <timestamp>2013-12-21T11:59:12Z</timestamp>
      <contributor>
        <username>Agentsteel</username>
        <id>260</id>
      </contributor>
      <comment>/* Encoder en graphique */ ajout Firefogg</comment>
      <text xml:space="preserve" bytes="11578">{{Ébauche|L'édition et l'encodage de vidéos}}

= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

== Notes sur la rédaction de cette page ==
* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video
* La question de l'authoring (création de DVD, et chapitrage), ainsi que du rip (extraction) ne sont pas abordées dans cette page, mais ici: [[DVD_edition]]
* D'autres infos relatives à ces logiciels sont dispos sur: http://wiki.debian-facile.org/doc:media:media, http://doc.ubuntu-fr.org/montage_video, https://wiki.debian.org/fr/Multimedia
* Logiciels à ajouter: transcode, handbrake, hypervideo, dvd6clone... sûrement bien d'autres.

== Considérations générales sur l'encodage de videos ==

* https://en.wikipedia.org/wiki/HTML5_video#Browser_support, prise en charge par les différents navigateurs des codecs video avec la balise HTML5 &lt;video&gt;
* Indication: en format OGV, avec les réglages par défaut de ffmpeg2theora, comptez ~100Mo pour une video de 10 minutes.
* Indication: pour youtube ou les lecteurs flash, le format video recommandé est le suivant: conteneur mp4, video x264, audio AAC.

== Encoder en ligne de commande ==
'''mencoder''' et '''ffmpeg''' sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui remplacera ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

Note: il existe des interfaces graphiques (front-ends) pour mencoder et avconv, elles seront indiquées plus bas ([[Edition_Video#Encoder_en_graphique]]).

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
&lt;code bash&gt;
#liste les codecs audio
mencoder -oac help
#liste les codecs vidéos
mencoder -ovc help
&lt;/code&gt;

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
&lt;code bash&gt;
mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;
&lt;/code&gt;

==== Voir aussi ====
* [http://doc.ubuntu-fr.org/mencoder Documentation mencoder sur Ubuntu-fr]
* [http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html Documentation mencoder sur mplayerhq]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Avconv a été intégré dans les dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Liste des formats de fichiers supportés par votre version de avconv ====
&lt;code&gt;avconv -formats&lt;/code&gt;
==== Liste des codecs audio et vidéo supportés par votre version de avconv ====
&lt;code&gt;avconv -codecs&lt;/code&gt;
==== Exemples d'utilisation ====
La page de manuel contient quelques exemples.
&lt;code&gt;man avconv&lt;/code&gt;
Un exemple très simple pour convertir un fichier vidéo au format MP4 au format MKV
&lt;code&gt;avconv -i source.mp4 destination.mkv&lt;/code&gt;
Pour obtenir seulement une piste audio MP3 depuis un fichier video
&lt;code&gt;avconv -i source.mp4 destination.mp3&lt;/code&gt;
==== Pour capturer une vidéo (avec audio) depuis la webcam ====
&lt;code&gt;avconv -f alsa -i hw:1 -f video4linux2 -i /dev/video0 -ar 44100 -r 25 -s vga -pre:0 libx264-lossless_ultrafast -c:v libx264 -strict experimental monfichier.mkv&lt;/code&gt;
Dans cet exemple, un preset vidéo est utilisé : un mode sans perte de qualité avec compression très rapide. Le format du fichier en sortie est le .mkv (Matroska).
Ligne de commande à adapter en fonction de vos périphériques audio et vidéo.

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

=== autres outils spécifiques aux formats ===
Plusieurs formats ouverts pour l'audio/video proposent leurs propres outils, on peut citer:

* vorbis-tools: http://packages.debian.org/search?keywords=vorbis-tools (juste pour l'audio OGG Vorbis et FLAC)
* mkvtoolnix: http://packages.debian.org/search?keywords=mkvtoolnix (pour le format Matroska Video [MKV], il existe aussi une interface graphique pour l'outil)

== Encoder en graphique ==

=== Arista ===

Interface graphique (GTK) pour le transcodage (conversion) de vidéos. Une multitude de modèles de conversion (&quot;presets&quot;) fournis.

http://packages.debian.org/wheezy/arista

=== Transmageddon ===

Très simple d'utilisation

http://packages.debian.org/wheezy/transmageddon

=== Firefogg ===

Firefogg n'est pas un programme standard, mais une extension pour Iceweasel/Firefox, qui contient ffmpeg et ffmpeg2theora. Permet de convertir facilement, via une interface simple dans votre navigateur, des vidéos vers les formats ouverts pour le web : Ogg et WebM. Tout se fait en local sur votre machine.

http://firefogg.org/

=== avidemux === 
Avidemux n'est pas disponible dans les dépots officiels de Debian, et cela est bien dommage, mais voici plusieurs approches pour tenter de répondre à ce problème:
==== Solution 1: dépots deb-multimedia ====
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ deb-multimedia]. Nous vous conseillons de prendre connaissance de [http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F cette entrée du FAQ Debian] si vous comptez l'utiliser.

Pour l'ajouter, voyez [[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | comment ajouter un dépôt tiers]] à votre système.

==== Solution 2: compiler depuis les sources ====
Lisez la documentation du wiki: http://www.avidemux.org/admWiki/doku.php?id=build:install_2.6

==== Solution 3: aider à intégrer avidemux dans Debian ====
* Existe-t-il une ITP ?
* Ca fait des années que l'outil existe, pourquoi n'est-il pas déjà dans Debian ? Raison 1: il aurait été amputé d'une bonne partie de ses codecs. Raison 2: Pourquoi quoi, kwak pouet. 

=== VLC ===
VLC peut convertir/transcoder vos videos, qu'il s'agisse de flux en cours de lecture, ou de médias déjà existants.
Le jeu de codecs fournis avec Debian est bien sûr limité, donc tous les «profils» et choix proposés dans l'interface ne fonctionneront pas.
L'essentiel de la manip' se fait depuis le menu Fichier puis &quot;Convertir/Enregistrer&quot;.

Consultez la documentation officielle pour d'autres infos: http://wiki.videolan.org/Documentation:Streaming_HowTo_New

Les combinaisons entre les différentes méthodes d'encapsulation, codec video, codec audio, ne fonctionnent pas toutes, y compris celles indiquées dans les profils pré-enregistrés. Depuis la version 2.1.0, VLC est un peu plus clair sur les méthodes d'encapsulation qu'il sait gérer.

Combinaisons testées avec succès:
* H264 + Vorbis (MP4), avec VLC 2.1.0 (Jessie)
* VP80 + Vorbis (Webm), avec VLC 2.0.8 (Jessie)
* Theora + Vorbis (OGG), sous Wheezy
Combinaisons problématiques:
* Celles à base de MP3, de WMA, et bien d'autres...

Note: il est possible de créer ses propres profils.
Note: Divers problèmes constatés avec l'encodage en Dirac: latence à la lecture (avec conteneur TS), ou saccades (avec conteneur OGG).

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== MLT Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
* Documentation officielle: http://www.mltframework.org/bin/view/MLT/MltMelt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).
Remarque: la fraîcheur de l'outil et son utilisabilité n'ont pas été testés.

== Editer en graphique ==

Kdenlive et OpenShot Video Editor sont les deux logiciels plebiscités.

=== Kdenlive ===
* Site officiel: http://kdenlive.org/
* Paquet debian: http://packages.debian.org/search?keywords=kdenlive
* [[wikipedia:Kdenlive]]
* http://wiki.debian-facile.org/doc:media:kdenlive
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== OpenShot Video Editor ===
* Site officiel: http://www.openshotvideo.com/
* Paquet debian: http://packages.debian.org/search?keywords=openshot
* [[wikipedia:OpenShot_Video_Editor]]
* http://wiki.debian-facile.org/doc:media:openshot
Il paraît que c'est bien.

=== Pitivi ===
* Site officiel: http://www.pitivi.org
* Paquet debian: http://packages.debian.org/search?keywords=pitivi
* http://wiki.debian-facile.org/doc:environnements:gnome:pitivi

Editeur video qui utilise GStreamer. Paraît que c'est bien aussi.

=== LiVES ===
* Site officiel: http://lives.sourceforge.net
* Paquet debian: http://packages.debian.org/search?keywords=lives
Davantage adapté au VJing.

=== Flowblade ===
* Site officiel: https://code.google.com/p/flowblade/
* Paquet debian: http://packages.debian.org/search?keywords=flowblade

=== Shotcut ===
* Site officiel: http://www.shotcut.org
* Absent des dépots Debian

=== Cinelerra et cinelerra CV ===
cinelerra existe en 2 versions. CV voulant dire &quot;Community Version&quot;.

* Site officiel de cinelerra: http://heroinewarrior.com/cinelerra.php
* Site officiel de cinelerra CV: http://cinelerra.org
* Paquet debian: absent des dépots officiels, présent dans le dépot Multimedia
* [[wikipedia:Cinelerra]]
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Lightworks ===
* Site officiel: http://www.lwks.com/
* Absent des dépots Debian. Proprio ?

=== Kino (à l'arrêt) ===
* Site officiel: http://www.kinodv.org/
* Paquet debian: http://packages.debian.org/search?keywords=kino
«Kino has not been actively maintained since 2009. We encourage you to try other Linux video editors such as Shotcut, Kdenlive, Flowblade, OpenShot, PiTiVi, LiVES, and LightWorks.»

=== Open Movie Editor (inactif) ===
* Site officiel: http://www.openmovieeditor.org/
* Paquet debian: aucun ou trop vieux ( http://packages.debian.org/search?searchon=names&amp;keywords=open+movie )
Projet sans sortie officielle depuis 2009. Non testé.</text>
      <sha1>0pdwhlf9a77awgxrds090fois3jxims</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5510</id>
      <parentid>5509</parentid>
      <timestamp>2013-12-21T14:56:24Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Encoder en graphique */ esthétique</comment>
      <text xml:space="preserve" bytes="11623">{{Ébauche|L'édition et l'encodage de vidéos}}

= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

== Notes sur la rédaction de cette page ==
* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video
* La question de l'authoring (création de DVD, et chapitrage), ainsi que du rip (extraction) ne sont pas abordées dans cette page, mais ici: [[DVD_edition]]
* D'autres infos relatives à ces logiciels sont dispos sur: http://wiki.debian-facile.org/doc:media:media, http://doc.ubuntu-fr.org/montage_video, https://wiki.debian.org/fr/Multimedia
* Logiciels à ajouter: transcode, handbrake, hypervideo, dvd6clone... sûrement bien d'autres.

== Considérations générales sur l'encodage de videos ==

* https://en.wikipedia.org/wiki/HTML5_video#Browser_support, prise en charge par les différents navigateurs des codecs video avec la balise HTML5 &lt;video&gt;
* Indication: en format OGV, avec les réglages par défaut de ffmpeg2theora, comptez ~100Mo pour une video de 10 minutes.
* Indication: pour youtube ou les lecteurs flash, le format video recommandé est le suivant: conteneur mp4, video x264, audio AAC.

== Encoder en ligne de commande ==
'''mencoder''' et '''ffmpeg''' sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui remplacera ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

Note: il existe des interfaces graphiques (front-ends) pour mencoder et avconv, elles seront indiquées plus bas ([[Edition_Video#Encoder_en_graphique]]).

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
&lt;code bash&gt;
#liste les codecs audio
mencoder -oac help
#liste les codecs vidéos
mencoder -ovc help
&lt;/code&gt;

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
&lt;code bash&gt;
mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;
&lt;/code&gt;

==== Voir aussi ====
* [http://doc.ubuntu-fr.org/mencoder Documentation mencoder sur Ubuntu-fr]
* [http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html Documentation mencoder sur mplayerhq]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Avconv a été intégré dans les dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Liste des formats de fichiers supportés par votre version de avconv ====
&lt;code&gt;avconv -formats&lt;/code&gt;
==== Liste des codecs audio et vidéo supportés par votre version de avconv ====
&lt;code&gt;avconv -codecs&lt;/code&gt;
==== Exemples d'utilisation ====
La page de manuel contient quelques exemples.
&lt;code&gt;man avconv&lt;/code&gt;
Un exemple très simple pour convertir un fichier vidéo au format MP4 au format MKV
&lt;code&gt;avconv -i source.mp4 destination.mkv&lt;/code&gt;
Pour obtenir seulement une piste audio MP3 depuis un fichier video
&lt;code&gt;avconv -i source.mp4 destination.mp3&lt;/code&gt;
==== Pour capturer une vidéo (avec audio) depuis la webcam ====
&lt;code&gt;avconv -f alsa -i hw:1 -f video4linux2 -i /dev/video0 -ar 44100 -r 25 -s vga -pre:0 libx264-lossless_ultrafast -c:v libx264 -strict experimental monfichier.mkv&lt;/code&gt;
Dans cet exemple, un preset vidéo est utilisé : un mode sans perte de qualité avec compression très rapide. Le format du fichier en sortie est le .mkv (Matroska).
Ligne de commande à adapter en fonction de vos périphériques audio et vidéo.

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

=== autres outils spécifiques aux formats ===
Plusieurs formats ouverts pour l'audio/video proposent leurs propres outils, on peut citer:

* vorbis-tools: http://packages.debian.org/search?keywords=vorbis-tools (juste pour l'audio OGG Vorbis et FLAC)
* mkvtoolnix: http://packages.debian.org/search?keywords=mkvtoolnix (pour le format Matroska Video [MKV], il existe aussi une interface graphique pour l'outil)

== Encoder en graphique ==

=== Arista ===

Interface graphique (GTK) pour le transcodage (conversion) de vidéos. Une multitude de modèles de conversion (&quot;presets&quot;) fournis.

Paquet Debian: http://packages.debian.org/wheezy/arista

=== Transmageddon ===

Très simple d'utilisation

Paquet Debian: http://packages.debian.org/wheezy/transmageddon

=== Firefogg ===

Firefogg n'est pas un programme standard, mais une extension pour Iceweasel/Firefox, qui contient ffmpeg et ffmpeg2theora. Permet de convertir facilement, via une interface simple dans votre navigateur, des vidéos vers les formats ouverts pour le web : Ogg et WebM. Tout se fait en local sur votre machine.

Site officiel: http://firefogg.org/

=== Avidemux === 
Avidemux n'est pas disponible dans les dépots officiels de Debian, et cela est bien dommage, mais voici plusieurs approches pour tenter de répondre à ce problème:
==== Solution 1: dépots deb-multimedia ====
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ deb-multimedia]. Nous vous conseillons de prendre connaissance de [http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F cette entrée du FAQ Debian] si vous comptez l'utiliser.

Pour l'ajouter, voyez [[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | comment ajouter un dépôt tiers]] à votre système.

==== Solution 2: compiler depuis les sources ====
Lisez la documentation du wiki: http://www.avidemux.org/admWiki/doku.php?id=build:install_2.6

==== Solution 3: aider à intégrer avidemux dans Debian ====
* Existe-t-il une ITP ?
* Ca fait des années que l'outil existe, pourquoi n'est-il pas déjà dans Debian ? Raison 1: il aurait été amputé d'une bonne partie de ses codecs. Raison 2: Pourquoi quoi, kwak pouet. 

=== VLC ===
VLC peut convertir/transcoder vos videos, qu'il s'agisse de flux en cours de lecture, ou de médias déjà existants.
Le jeu de codecs fournis avec Debian est bien sûr limité, donc tous les «profils» et choix proposés dans l'interface ne fonctionneront pas.
L'essentiel de la manip' se fait depuis le menu Fichier puis &quot;Convertir/Enregistrer&quot;.

Consultez la documentation officielle pour d'autres infos: http://wiki.videolan.org/Documentation:Streaming_HowTo_New

Les combinaisons entre les différentes méthodes d'encapsulation, codec video, codec audio, ne fonctionnent pas toutes, y compris celles indiquées dans les profils pré-enregistrés. Depuis la version 2.1.0, VLC est un peu plus clair sur les méthodes d'encapsulation qu'il sait gérer.

Combinaisons testées avec succès:
* H264 + Vorbis (MP4), avec VLC 2.1.0 (Jessie)
* VP80 + Vorbis (Webm), avec VLC 2.0.8 (Jessie)
* Theora + Vorbis (OGG), sous Wheezy
Combinaisons problématiques:
* Celles à base de MP3, de WMA, et bien d'autres...

Note: il est possible de créer ses propres profils.
Note: Divers problèmes constatés avec l'encodage en Dirac: latence à la lecture (avec conteneur TS), ou saccades (avec conteneur OGG).

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== MLT Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
* Documentation officielle: http://www.mltframework.org/bin/view/MLT/MltMelt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).
Remarque: la fraîcheur de l'outil et son utilisabilité n'ont pas été testés.

== Editer en graphique ==

Kdenlive et OpenShot Video Editor sont les deux logiciels plebiscités.

=== Kdenlive ===
* Site officiel: http://kdenlive.org/
* Paquet debian: http://packages.debian.org/search?keywords=kdenlive
* [[wikipedia:Kdenlive]]
* http://wiki.debian-facile.org/doc:media:kdenlive
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== OpenShot Video Editor ===
* Site officiel: http://www.openshotvideo.com/
* Paquet debian: http://packages.debian.org/search?keywords=openshot
* [[wikipedia:OpenShot_Video_Editor]]
* http://wiki.debian-facile.org/doc:media:openshot
Il paraît que c'est bien.

=== Pitivi ===
* Site officiel: http://www.pitivi.org
* Paquet debian: http://packages.debian.org/search?keywords=pitivi
* http://wiki.debian-facile.org/doc:environnements:gnome:pitivi

Editeur video qui utilise GStreamer. Paraît que c'est bien aussi.

=== LiVES ===
* Site officiel: http://lives.sourceforge.net
* Paquet debian: http://packages.debian.org/search?keywords=lives
Davantage adapté au VJing.

=== Flowblade ===
* Site officiel: https://code.google.com/p/flowblade/
* Paquet debian: http://packages.debian.org/search?keywords=flowblade

=== Shotcut ===
* Site officiel: http://www.shotcut.org
* Absent des dépots Debian

=== Cinelerra et cinelerra CV ===
cinelerra existe en 2 versions. CV voulant dire &quot;Community Version&quot;.

* Site officiel de cinelerra: http://heroinewarrior.com/cinelerra.php
* Site officiel de cinelerra CV: http://cinelerra.org
* Paquet debian: absent des dépots officiels, présent dans le dépot Multimedia
* [[wikipedia:Cinelerra]]
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Lightworks ===
* Site officiel: http://www.lwks.com/
* Absent des dépots Debian. Proprio ?

=== Kino (à l'arrêt) ===
* Site officiel: http://www.kinodv.org/
* Paquet debian: http://packages.debian.org/search?keywords=kino
«Kino has not been actively maintained since 2009. We encourage you to try other Linux video editors such as Shotcut, Kdenlive, Flowblade, OpenShot, PiTiVi, LiVES, and LightWorks.»

=== Open Movie Editor (inactif) ===
* Site officiel: http://www.openmovieeditor.org/
* Paquet debian: aucun ou trop vieux ( http://packages.debian.org/search?searchon=names&amp;keywords=open+movie )
Projet sans sortie officielle depuis 2009. Non testé.</text>
      <sha1>14cuv1ebscv93ylns1p2hbrwur7yrke</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5511</id>
      <parentid>5510</parentid>
      <timestamp>2013-12-21T14:58:49Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Encoder en ligne de commande */  remplacement ffmpeg par avconv</comment>
      <text xml:space="preserve" bytes="11631">{{Ébauche|L'édition et l'encodage de vidéos}}

= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

== Notes sur la rédaction de cette page ==
* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video
* La question de l'authoring (création de DVD, et chapitrage), ainsi que du rip (extraction) ne sont pas abordées dans cette page, mais ici: [[DVD_edition]]
* D'autres infos relatives à ces logiciels sont dispos sur: http://wiki.debian-facile.org/doc:media:media, http://doc.ubuntu-fr.org/montage_video, https://wiki.debian.org/fr/Multimedia
* Logiciels à ajouter: transcode, handbrake, hypervideo, dvd6clone... sûrement bien d'autres.

== Considérations générales sur l'encodage de videos ==

* https://en.wikipedia.org/wiki/HTML5_video#Browser_support, prise en charge par les différents navigateurs des codecs video avec la balise HTML5 &lt;video&gt;
* Indication: en format OGV, avec les réglages par défaut de ffmpeg2theora, comptez ~100Mo pour une video de 10 minutes.
* Indication: pour youtube ou les lecteurs flash, le format video recommandé est le suivant: conteneur mp4, video x264, audio AAC.

== Encoder en ligne de commande ==
'''mencoder''' et '''ffmpeg/avconv''' sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui a remplacé ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

Note: il existe des interfaces graphiques (front-ends) pour mencoder et avconv, elles seront indiquées plus bas ([[Edition_Video#Encoder_en_graphique]]).

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
&lt;code bash&gt;
#liste les codecs audio
mencoder -oac help
#liste les codecs vidéos
mencoder -ovc help
&lt;/code&gt;

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
&lt;code bash&gt;
mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;
&lt;/code&gt;

==== Voir aussi ====
* [http://doc.ubuntu-fr.org/mencoder Documentation mencoder sur Ubuntu-fr]
* [http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html Documentation mencoder sur mplayerhq]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Avconv a été intégré dans les dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Liste des formats de fichiers supportés par votre version de avconv ====
&lt;code&gt;avconv -formats&lt;/code&gt;
==== Liste des codecs audio et vidéo supportés par votre version de avconv ====
&lt;code&gt;avconv -codecs&lt;/code&gt;
==== Exemples d'utilisation ====
La page de manuel contient quelques exemples.
&lt;code&gt;man avconv&lt;/code&gt;
Un exemple très simple pour convertir un fichier vidéo au format MP4 au format MKV
&lt;code&gt;avconv -i source.mp4 destination.mkv&lt;/code&gt;
Pour obtenir seulement une piste audio MP3 depuis un fichier video
&lt;code&gt;avconv -i source.mp4 destination.mp3&lt;/code&gt;
==== Pour capturer une vidéo (avec audio) depuis la webcam ====
&lt;code&gt;avconv -f alsa -i hw:1 -f video4linux2 -i /dev/video0 -ar 44100 -r 25 -s vga -pre:0 libx264-lossless_ultrafast -c:v libx264 -strict experimental monfichier.mkv&lt;/code&gt;
Dans cet exemple, un preset vidéo est utilisé : un mode sans perte de qualité avec compression très rapide. Le format du fichier en sortie est le .mkv (Matroska).
Ligne de commande à adapter en fonction de vos périphériques audio et vidéo.

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

=== autres outils spécifiques aux formats ===
Plusieurs formats ouverts pour l'audio/video proposent leurs propres outils, on peut citer:

* vorbis-tools: http://packages.debian.org/search?keywords=vorbis-tools (juste pour l'audio OGG Vorbis et FLAC)
* mkvtoolnix: http://packages.debian.org/search?keywords=mkvtoolnix (pour le format Matroska Video [MKV], il existe aussi une interface graphique pour l'outil)

== Encoder en graphique ==

=== Arista ===

Interface graphique (GTK) pour le transcodage (conversion) de vidéos. Une multitude de modèles de conversion (&quot;presets&quot;) fournis.

Paquet Debian: http://packages.debian.org/wheezy/arista

=== Transmageddon ===

Très simple d'utilisation

Paquet Debian: http://packages.debian.org/wheezy/transmageddon

=== Firefogg ===

Firefogg n'est pas un programme standard, mais une extension pour Iceweasel/Firefox, qui contient ffmpeg et ffmpeg2theora. Permet de convertir facilement, via une interface simple dans votre navigateur, des vidéos vers les formats ouverts pour le web : Ogg et WebM. Tout se fait en local sur votre machine.

Site officiel: http://firefogg.org/

=== Avidemux === 
Avidemux n'est pas disponible dans les dépots officiels de Debian, et cela est bien dommage, mais voici plusieurs approches pour tenter de répondre à ce problème:
==== Solution 1: dépots deb-multimedia ====
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ deb-multimedia]. Nous vous conseillons de prendre connaissance de [http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F cette entrée du FAQ Debian] si vous comptez l'utiliser.

Pour l'ajouter, voyez [[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | comment ajouter un dépôt tiers]] à votre système.

==== Solution 2: compiler depuis les sources ====
Lisez la documentation du wiki: http://www.avidemux.org/admWiki/doku.php?id=build:install_2.6

==== Solution 3: aider à intégrer avidemux dans Debian ====
* Existe-t-il une ITP ?
* Ca fait des années que l'outil existe, pourquoi n'est-il pas déjà dans Debian ? Raison 1: il aurait été amputé d'une bonne partie de ses codecs. Raison 2: Pourquoi quoi, kwak pouet. 

=== VLC ===
VLC peut convertir/transcoder vos videos, qu'il s'agisse de flux en cours de lecture, ou de médias déjà existants.
Le jeu de codecs fournis avec Debian est bien sûr limité, donc tous les «profils» et choix proposés dans l'interface ne fonctionneront pas.
L'essentiel de la manip' se fait depuis le menu Fichier puis &quot;Convertir/Enregistrer&quot;.

Consultez la documentation officielle pour d'autres infos: http://wiki.videolan.org/Documentation:Streaming_HowTo_New

Les combinaisons entre les différentes méthodes d'encapsulation, codec video, codec audio, ne fonctionnent pas toutes, y compris celles indiquées dans les profils pré-enregistrés. Depuis la version 2.1.0, VLC est un peu plus clair sur les méthodes d'encapsulation qu'il sait gérer.

Combinaisons testées avec succès:
* H264 + Vorbis (MP4), avec VLC 2.1.0 (Jessie)
* VP80 + Vorbis (Webm), avec VLC 2.0.8 (Jessie)
* Theora + Vorbis (OGG), sous Wheezy
Combinaisons problématiques:
* Celles à base de MP3, de WMA, et bien d'autres...

Note: il est possible de créer ses propres profils.
Note: Divers problèmes constatés avec l'encodage en Dirac: latence à la lecture (avec conteneur TS), ou saccades (avec conteneur OGG).

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== MLT Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
* Documentation officielle: http://www.mltframework.org/bin/view/MLT/MltMelt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).
Remarque: la fraîcheur de l'outil et son utilisabilité n'ont pas été testés.

== Editer en graphique ==

Kdenlive et OpenShot Video Editor sont les deux logiciels plebiscités.

=== Kdenlive ===
* Site officiel: http://kdenlive.org/
* Paquet debian: http://packages.debian.org/search?keywords=kdenlive
* [[wikipedia:Kdenlive]]
* http://wiki.debian-facile.org/doc:media:kdenlive
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== OpenShot Video Editor ===
* Site officiel: http://www.openshotvideo.com/
* Paquet debian: http://packages.debian.org/search?keywords=openshot
* [[wikipedia:OpenShot_Video_Editor]]
* http://wiki.debian-facile.org/doc:media:openshot
Il paraît que c'est bien.

=== Pitivi ===
* Site officiel: http://www.pitivi.org
* Paquet debian: http://packages.debian.org/search?keywords=pitivi
* http://wiki.debian-facile.org/doc:environnements:gnome:pitivi

Editeur video qui utilise GStreamer. Paraît que c'est bien aussi.

=== LiVES ===
* Site officiel: http://lives.sourceforge.net
* Paquet debian: http://packages.debian.org/search?keywords=lives
Davantage adapté au VJing.

=== Flowblade ===
* Site officiel: https://code.google.com/p/flowblade/
* Paquet debian: http://packages.debian.org/search?keywords=flowblade

=== Shotcut ===
* Site officiel: http://www.shotcut.org
* Absent des dépots Debian

=== Cinelerra et cinelerra CV ===
cinelerra existe en 2 versions. CV voulant dire &quot;Community Version&quot;.

* Site officiel de cinelerra: http://heroinewarrior.com/cinelerra.php
* Site officiel de cinelerra CV: http://cinelerra.org
* Paquet debian: absent des dépots officiels, présent dans le dépot Multimedia
* [[wikipedia:Cinelerra]]
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Lightworks ===
* Site officiel: http://www.lwks.com/
* Absent des dépots Debian. Proprio ?

=== Kino (à l'arrêt) ===
* Site officiel: http://www.kinodv.org/
* Paquet debian: http://packages.debian.org/search?keywords=kino
«Kino has not been actively maintained since 2009. We encourage you to try other Linux video editors such as Shotcut, Kdenlive, Flowblade, OpenShot, PiTiVi, LiVES, and LightWorks.»

=== Open Movie Editor (inactif) ===
* Site officiel: http://www.openmovieeditor.org/
* Paquet debian: aucun ou trop vieux ( http://packages.debian.org/search?searchon=names&amp;keywords=open+movie )
Projet sans sortie officielle depuis 2009. Non testé.</text>
      <sha1>bdp8ddct65t2nz1ew98i0yuq6151q1o</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5512</id>
      <parentid>5511</parentid>
      <timestamp>2013-12-21T15:00:46Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <minor/>
      <comment>/* Encoder en ligne de commande */ clarif</comment>
      <text xml:space="preserve" bytes="11636">{{Ébauche|L'édition et l'encodage de vidéos}}

= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

== Notes sur la rédaction de cette page ==
* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video
* La question de l'authoring (création de DVD, et chapitrage), ainsi que du rip (extraction) ne sont pas abordées dans cette page, mais ici: [[DVD_edition]]
* D'autres infos relatives à ces logiciels sont dispos sur: http://wiki.debian-facile.org/doc:media:media, http://doc.ubuntu-fr.org/montage_video, https://wiki.debian.org/fr/Multimedia
* Logiciels à ajouter: transcode, handbrake, hypervideo, dvd6clone... sûrement bien d'autres.

== Considérations générales sur l'encodage de videos ==

* https://en.wikipedia.org/wiki/HTML5_video#Browser_support, prise en charge par les différents navigateurs des codecs video avec la balise HTML5 &lt;video&gt;
* Indication: en format OGV, avec les réglages par défaut de ffmpeg2theora, comptez ~100Mo pour une video de 10 minutes.
* Indication: pour youtube ou les lecteurs flash, le format video recommandé est le suivant: conteneur mp4, video x264, audio AAC.

== Encoder en ligne de commande ==
'''mencoder''' et '''avconv''' (ou ffmpeg) sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui a remplacé ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

Note: il existe des interfaces graphiques (front-ends) pour mencoder et avconv, elles seront indiquées plus bas ([[Edition_Video#Encoder_en_graphique]]).

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
&lt;code bash&gt;
#liste les codecs audio
mencoder -oac help
#liste les codecs vidéos
mencoder -ovc help
&lt;/code&gt;

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
&lt;code bash&gt;
mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;
&lt;/code&gt;

==== Voir aussi ====
* [http://doc.ubuntu-fr.org/mencoder Documentation mencoder sur Ubuntu-fr]
* [http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html Documentation mencoder sur mplayerhq]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Avconv a été intégré dans les dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Liste des formats de fichiers supportés par votre version de avconv ====
&lt;code&gt;avconv -formats&lt;/code&gt;
==== Liste des codecs audio et vidéo supportés par votre version de avconv ====
&lt;code&gt;avconv -codecs&lt;/code&gt;
==== Exemples d'utilisation ====
La page de manuel contient quelques exemples.
&lt;code&gt;man avconv&lt;/code&gt;
Un exemple très simple pour convertir un fichier vidéo au format MP4 au format MKV
&lt;code&gt;avconv -i source.mp4 destination.mkv&lt;/code&gt;
Pour obtenir seulement une piste audio MP3 depuis un fichier video
&lt;code&gt;avconv -i source.mp4 destination.mp3&lt;/code&gt;
==== Pour capturer une vidéo (avec audio) depuis la webcam ====
&lt;code&gt;avconv -f alsa -i hw:1 -f video4linux2 -i /dev/video0 -ar 44100 -r 25 -s vga -pre:0 libx264-lossless_ultrafast -c:v libx264 -strict experimental monfichier.mkv&lt;/code&gt;
Dans cet exemple, un preset vidéo est utilisé : un mode sans perte de qualité avec compression très rapide. Le format du fichier en sortie est le .mkv (Matroska).
Ligne de commande à adapter en fonction de vos périphériques audio et vidéo.

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

=== autres outils spécifiques aux formats ===
Plusieurs formats ouverts pour l'audio/video proposent leurs propres outils, on peut citer:

* vorbis-tools: http://packages.debian.org/search?keywords=vorbis-tools (juste pour l'audio OGG Vorbis et FLAC)
* mkvtoolnix: http://packages.debian.org/search?keywords=mkvtoolnix (pour le format Matroska Video [MKV], il existe aussi une interface graphique pour l'outil)

== Encoder en graphique ==

=== Arista ===

Interface graphique (GTK) pour le transcodage (conversion) de vidéos. Une multitude de modèles de conversion (&quot;presets&quot;) fournis.

Paquet Debian: http://packages.debian.org/wheezy/arista

=== Transmageddon ===

Très simple d'utilisation

Paquet Debian: http://packages.debian.org/wheezy/transmageddon

=== Firefogg ===

Firefogg n'est pas un programme standard, mais une extension pour Iceweasel/Firefox, qui contient ffmpeg et ffmpeg2theora. Permet de convertir facilement, via une interface simple dans votre navigateur, des vidéos vers les formats ouverts pour le web : Ogg et WebM. Tout se fait en local sur votre machine.

Site officiel: http://firefogg.org/

=== Avidemux === 
Avidemux n'est pas disponible dans les dépots officiels de Debian, et cela est bien dommage, mais voici plusieurs approches pour tenter de répondre à ce problème:
==== Solution 1: dépots deb-multimedia ====
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ deb-multimedia]. Nous vous conseillons de prendre connaissance de [http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F cette entrée du FAQ Debian] si vous comptez l'utiliser.

Pour l'ajouter, voyez [[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | comment ajouter un dépôt tiers]] à votre système.

==== Solution 2: compiler depuis les sources ====
Lisez la documentation du wiki: http://www.avidemux.org/admWiki/doku.php?id=build:install_2.6

==== Solution 3: aider à intégrer avidemux dans Debian ====
* Existe-t-il une ITP ?
* Ca fait des années que l'outil existe, pourquoi n'est-il pas déjà dans Debian ? Raison 1: il aurait été amputé d'une bonne partie de ses codecs. Raison 2: Pourquoi quoi, kwak pouet. 

=== VLC ===
VLC peut convertir/transcoder vos videos, qu'il s'agisse de flux en cours de lecture, ou de médias déjà existants.
Le jeu de codecs fournis avec Debian est bien sûr limité, donc tous les «profils» et choix proposés dans l'interface ne fonctionneront pas.
L'essentiel de la manip' se fait depuis le menu Fichier puis &quot;Convertir/Enregistrer&quot;.

Consultez la documentation officielle pour d'autres infos: http://wiki.videolan.org/Documentation:Streaming_HowTo_New

Les combinaisons entre les différentes méthodes d'encapsulation, codec video, codec audio, ne fonctionnent pas toutes, y compris celles indiquées dans les profils pré-enregistrés. Depuis la version 2.1.0, VLC est un peu plus clair sur les méthodes d'encapsulation qu'il sait gérer.

Combinaisons testées avec succès:
* H264 + Vorbis (MP4), avec VLC 2.1.0 (Jessie)
* VP80 + Vorbis (Webm), avec VLC 2.0.8 (Jessie)
* Theora + Vorbis (OGG), sous Wheezy
Combinaisons problématiques:
* Celles à base de MP3, de WMA, et bien d'autres...

Note: il est possible de créer ses propres profils.
Note: Divers problèmes constatés avec l'encodage en Dirac: latence à la lecture (avec conteneur TS), ou saccades (avec conteneur OGG).

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== MLT Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
* Documentation officielle: http://www.mltframework.org/bin/view/MLT/MltMelt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).
Remarque: la fraîcheur de l'outil et son utilisabilité n'ont pas été testés.

== Editer en graphique ==

Kdenlive et OpenShot Video Editor sont les deux logiciels plebiscités.

=== Kdenlive ===
* Site officiel: http://kdenlive.org/
* Paquet debian: http://packages.debian.org/search?keywords=kdenlive
* [[wikipedia:Kdenlive]]
* http://wiki.debian-facile.org/doc:media:kdenlive
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== OpenShot Video Editor ===
* Site officiel: http://www.openshotvideo.com/
* Paquet debian: http://packages.debian.org/search?keywords=openshot
* [[wikipedia:OpenShot_Video_Editor]]
* http://wiki.debian-facile.org/doc:media:openshot
Il paraît que c'est bien.

=== Pitivi ===
* Site officiel: http://www.pitivi.org
* Paquet debian: http://packages.debian.org/search?keywords=pitivi
* http://wiki.debian-facile.org/doc:environnements:gnome:pitivi

Editeur video qui utilise GStreamer. Paraît que c'est bien aussi.

=== LiVES ===
* Site officiel: http://lives.sourceforge.net
* Paquet debian: http://packages.debian.org/search?keywords=lives
Davantage adapté au VJing.

=== Flowblade ===
* Site officiel: https://code.google.com/p/flowblade/
* Paquet debian: http://packages.debian.org/search?keywords=flowblade

=== Shotcut ===
* Site officiel: http://www.shotcut.org
* Absent des dépots Debian

=== Cinelerra et cinelerra CV ===
cinelerra existe en 2 versions. CV voulant dire &quot;Community Version&quot;.

* Site officiel de cinelerra: http://heroinewarrior.com/cinelerra.php
* Site officiel de cinelerra CV: http://cinelerra.org
* Paquet debian: absent des dépots officiels, présent dans le dépot Multimedia
* [[wikipedia:Cinelerra]]
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Lightworks ===
* Site officiel: http://www.lwks.com/
* Absent des dépots Debian. Proprio ?

=== Kino (à l'arrêt) ===
* Site officiel: http://www.kinodv.org/
* Paquet debian: http://packages.debian.org/search?keywords=kino
«Kino has not been actively maintained since 2009. We encourage you to try other Linux video editors such as Shotcut, Kdenlive, Flowblade, OpenShot, PiTiVi, LiVES, and LightWorks.»

=== Open Movie Editor (inactif) ===
* Site officiel: http://www.openmovieeditor.org/
* Paquet debian: aucun ou trop vieux ( http://packages.debian.org/search?searchon=names&amp;keywords=open+movie )
Projet sans sortie officielle depuis 2009. Non testé.</text>
      <sha1>feb9foi1baj1bvaepm8vn7jf89u1fni</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5513</id>
      <parentid>5512</parentid>
      <timestamp>2013-12-21T15:03:39Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <minor/>
      <comment>changement rang chapitrage</comment>
      <text xml:space="preserve" bytes="11638">{{Ébauche|L'édition et l'encodage de vidéos}}

= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

== Notes sur la rédaction de cette page ==
* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video
* La question de l'authoring (création de DVD, et chapitrage), ainsi que du rip (extraction) ne sont pas abordées dans cette page, mais ici: [[DVD_edition]]
* D'autres infos relatives à ces logiciels sont dispos sur: http://wiki.debian-facile.org/doc:media:media, http://doc.ubuntu-fr.org/montage_video, https://wiki.debian.org/fr/Multimedia
* Logiciels à ajouter: transcode, handbrake, hypervideo, dvd6clone... sûrement bien d'autres.

== Considérations générales sur l'encodage de videos ==

* https://en.wikipedia.org/wiki/HTML5_video#Browser_support, prise en charge par les différents navigateurs des codecs video avec la balise HTML5 &lt;video&gt;
* Indication: en format OGV, avec les réglages par défaut de ffmpeg2theora, comptez ~100Mo pour une video de 10 minutes.
* Indication: pour youtube ou les lecteurs flash, le format video recommandé est le suivant: conteneur mp4, video x264, audio AAC.

== Encoder en ligne de commande ==
'''mencoder''' et '''avconv''' (ou ffmpeg) sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui a remplacé ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

Note: il existe des interfaces graphiques (front-ends) pour mencoder et avconv, elles seront indiquées plus bas ([[Edition_Video#Encoder_en_graphique]]).

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
&lt;code bash&gt;
#liste les codecs audio
mencoder -oac help
#liste les codecs vidéos
mencoder -ovc help
&lt;/code&gt;

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
&lt;code bash&gt;
mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;
&lt;/code&gt;

==== Voir aussi ====
* [http://doc.ubuntu-fr.org/mencoder Documentation mencoder sur Ubuntu-fr]
* [http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html Documentation mencoder sur mplayerhq]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Avconv a été intégré dans les dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Liste des formats de fichiers supportés par votre version de avconv ====
&lt;code&gt;avconv -formats&lt;/code&gt;
==== Liste des codecs audio et vidéo supportés par votre version de avconv ====
&lt;code&gt;avconv -codecs&lt;/code&gt;
==== Exemples d'utilisation ====
La page de manuel contient quelques exemples.
&lt;code&gt;man avconv&lt;/code&gt;
Un exemple très simple pour convertir un fichier vidéo au format MP4 au format MKV
&lt;code&gt;avconv -i source.mp4 destination.mkv&lt;/code&gt;
Pour obtenir seulement une piste audio MP3 depuis un fichier video
&lt;code&gt;avconv -i source.mp4 destination.mp3&lt;/code&gt;
===== Pour capturer une vidéo (avec audio) depuis la webcam =====
&lt;code&gt;avconv -f alsa -i hw:1 -f video4linux2 -i /dev/video0 -ar 44100 -r 25 -s vga -pre:0 libx264-lossless_ultrafast -c:v libx264 -strict experimental monfichier.mkv&lt;/code&gt;
Dans cet exemple, un preset vidéo est utilisé : un mode sans perte de qualité avec compression très rapide. Le format du fichier en sortie est le .mkv (Matroska).
Ligne de commande à adapter en fonction de vos périphériques audio et vidéo.

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

=== autres outils spécifiques aux formats ===
Plusieurs formats ouverts pour l'audio/video proposent leurs propres outils, on peut citer:

* vorbis-tools: http://packages.debian.org/search?keywords=vorbis-tools (juste pour l'audio OGG Vorbis et FLAC)
* mkvtoolnix: http://packages.debian.org/search?keywords=mkvtoolnix (pour le format Matroska Video [MKV], il existe aussi une interface graphique pour l'outil)

== Encoder en graphique ==

=== Arista ===

Interface graphique (GTK) pour le transcodage (conversion) de vidéos. Une multitude de modèles de conversion (&quot;presets&quot;) fournis.

Paquet Debian: http://packages.debian.org/wheezy/arista

=== Transmageddon ===

Très simple d'utilisation

Paquet Debian: http://packages.debian.org/wheezy/transmageddon

=== Firefogg ===

Firefogg n'est pas un programme standard, mais une extension pour Iceweasel/Firefox, qui contient ffmpeg et ffmpeg2theora. Permet de convertir facilement, via une interface simple dans votre navigateur, des vidéos vers les formats ouverts pour le web : Ogg et WebM. Tout se fait en local sur votre machine.

Site officiel: http://firefogg.org/

=== Avidemux === 
Avidemux n'est pas disponible dans les dépots officiels de Debian, et cela est bien dommage, mais voici plusieurs approches pour tenter de répondre à ce problème:
==== Solution 1: dépots deb-multimedia ====
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ deb-multimedia]. Nous vous conseillons de prendre connaissance de [http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F cette entrée du FAQ Debian] si vous comptez l'utiliser.

Pour l'ajouter, voyez [[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | comment ajouter un dépôt tiers]] à votre système.

==== Solution 2: compiler depuis les sources ====
Lisez la documentation du wiki: http://www.avidemux.org/admWiki/doku.php?id=build:install_2.6

==== Solution 3: aider à intégrer avidemux dans Debian ====
* Existe-t-il une ITP ?
* Ca fait des années que l'outil existe, pourquoi n'est-il pas déjà dans Debian ? Raison 1: il aurait été amputé d'une bonne partie de ses codecs. Raison 2: Pourquoi quoi, kwak pouet. 

=== VLC ===
VLC peut convertir/transcoder vos videos, qu'il s'agisse de flux en cours de lecture, ou de médias déjà existants.
Le jeu de codecs fournis avec Debian est bien sûr limité, donc tous les «profils» et choix proposés dans l'interface ne fonctionneront pas.
L'essentiel de la manip' se fait depuis le menu Fichier puis &quot;Convertir/Enregistrer&quot;.

Consultez la documentation officielle pour d'autres infos: http://wiki.videolan.org/Documentation:Streaming_HowTo_New

Les combinaisons entre les différentes méthodes d'encapsulation, codec video, codec audio, ne fonctionnent pas toutes, y compris celles indiquées dans les profils pré-enregistrés. Depuis la version 2.1.0, VLC est un peu plus clair sur les méthodes d'encapsulation qu'il sait gérer.

Combinaisons testées avec succès:
* H264 + Vorbis (MP4), avec VLC 2.1.0 (Jessie)
* VP80 + Vorbis (Webm), avec VLC 2.0.8 (Jessie)
* Theora + Vorbis (OGG), sous Wheezy
Combinaisons problématiques:
* Celles à base de MP3, de WMA, et bien d'autres...

Note: il est possible de créer ses propres profils.
Note: Divers problèmes constatés avec l'encodage en Dirac: latence à la lecture (avec conteneur TS), ou saccades (avec conteneur OGG).

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== MLT Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
* Documentation officielle: http://www.mltframework.org/bin/view/MLT/MltMelt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).
Remarque: la fraîcheur de l'outil et son utilisabilité n'ont pas été testés.

== Editer en graphique ==

Kdenlive et OpenShot Video Editor sont les deux logiciels plebiscités.

=== Kdenlive ===
* Site officiel: http://kdenlive.org/
* Paquet debian: http://packages.debian.org/search?keywords=kdenlive
* [[wikipedia:Kdenlive]]
* http://wiki.debian-facile.org/doc:media:kdenlive
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== OpenShot Video Editor ===
* Site officiel: http://www.openshotvideo.com/
* Paquet debian: http://packages.debian.org/search?keywords=openshot
* [[wikipedia:OpenShot_Video_Editor]]
* http://wiki.debian-facile.org/doc:media:openshot
Il paraît que c'est bien.

=== Pitivi ===
* Site officiel: http://www.pitivi.org
* Paquet debian: http://packages.debian.org/search?keywords=pitivi
* http://wiki.debian-facile.org/doc:environnements:gnome:pitivi

Editeur video qui utilise GStreamer. Paraît que c'est bien aussi.

=== LiVES ===
* Site officiel: http://lives.sourceforge.net
* Paquet debian: http://packages.debian.org/search?keywords=lives
Davantage adapté au VJing.

=== Flowblade ===
* Site officiel: https://code.google.com/p/flowblade/
* Paquet debian: http://packages.debian.org/search?keywords=flowblade

=== Shotcut ===
* Site officiel: http://www.shotcut.org
* Absent des dépots Debian

=== Cinelerra et cinelerra CV ===
cinelerra existe en 2 versions. CV voulant dire &quot;Community Version&quot;.

* Site officiel de cinelerra: http://heroinewarrior.com/cinelerra.php
* Site officiel de cinelerra CV: http://cinelerra.org
* Paquet debian: absent des dépots officiels, présent dans le dépot Multimedia
* [[wikipedia:Cinelerra]]
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Lightworks ===
* Site officiel: http://www.lwks.com/
* Absent des dépots Debian. Proprio ?

=== Kino (à l'arrêt) ===
* Site officiel: http://www.kinodv.org/
* Paquet debian: http://packages.debian.org/search?keywords=kino
«Kino has not been actively maintained since 2009. We encourage you to try other Linux video editors such as Shotcut, Kdenlive, Flowblade, OpenShot, PiTiVi, LiVES, and LightWorks.»

=== Open Movie Editor (inactif) ===
* Site officiel: http://www.openmovieeditor.org/
* Paquet debian: aucun ou trop vieux ( http://packages.debian.org/search?searchon=names&amp;keywords=open+movie )
Projet sans sortie officielle depuis 2009. Non testé.</text>
      <sha1>gqhhcgx7njbehowafol1cif6w0oqwuw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5514</id>
      <parentid>5513</parentid>
      <timestamp>2013-12-21T16:03:41Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Notes sur la rédaction de cette page */ +mention multiplexage, chapitrage, sous-titres</comment>
      <text xml:space="preserve" bytes="11773">{{Ébauche|L'édition et l'encodage de vidéos}}

= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

== Notes sur la rédaction de cette page ==
* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video
* La question de l'authoring (création de DVD), ainsi que du rip (extraction) ne sont pas abordées dans cette page, mais ici: [[DVD_edition]]
* La question du multiplexage (édition de MKV), ainsi que l'édition de chapitres et de sous-titres, devrait également être abordée séparément.
* D'autres infos relatives à ces logiciels sont dispos sur: http://wiki.debian-facile.org/doc:media:media, http://doc.ubuntu-fr.org/montage_video, https://wiki.debian.org/fr/Multimedia
* Logiciels à ajouter: transcode, handbrake, hypervideo, dvd6clone... sûrement bien d'autres.

== Considérations générales sur l'encodage de videos ==

* https://en.wikipedia.org/wiki/HTML5_video#Browser_support, prise en charge par les différents navigateurs des codecs video avec la balise HTML5 &lt;video&gt;
* Indication: en format OGV, avec les réglages par défaut de ffmpeg2theora, comptez ~100Mo pour une video de 10 minutes.
* Indication: pour youtube ou les lecteurs flash, le format video recommandé est le suivant: conteneur mp4, video x264, audio AAC.

== Encoder en ligne de commande ==
'''mencoder''' et '''avconv''' (ou ffmpeg) sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui a remplacé ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

Note: il existe des interfaces graphiques (front-ends) pour mencoder et avconv, elles seront indiquées plus bas ([[Edition_Video#Encoder_en_graphique]]).

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
&lt;code bash&gt;
#liste les codecs audio
mencoder -oac help
#liste les codecs vidéos
mencoder -ovc help
&lt;/code&gt;

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
&lt;code bash&gt;
mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;
&lt;/code&gt;

==== Voir aussi ====
* [http://doc.ubuntu-fr.org/mencoder Documentation mencoder sur Ubuntu-fr]
* [http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html Documentation mencoder sur mplayerhq]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Avconv a été intégré dans les dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Liste des formats de fichiers supportés par votre version de avconv ====
&lt;code&gt;avconv -formats&lt;/code&gt;
==== Liste des codecs audio et vidéo supportés par votre version de avconv ====
&lt;code&gt;avconv -codecs&lt;/code&gt;
==== Exemples d'utilisation ====
La page de manuel contient quelques exemples.
&lt;code&gt;man avconv&lt;/code&gt;
Un exemple très simple pour convertir un fichier vidéo au format MP4 au format MKV
&lt;code&gt;avconv -i source.mp4 destination.mkv&lt;/code&gt;
Pour obtenir seulement une piste audio MP3 depuis un fichier video
&lt;code&gt;avconv -i source.mp4 destination.mp3&lt;/code&gt;
===== Pour capturer une vidéo (avec audio) depuis la webcam =====
&lt;code&gt;avconv -f alsa -i hw:1 -f video4linux2 -i /dev/video0 -ar 44100 -r 25 -s vga -pre:0 libx264-lossless_ultrafast -c:v libx264 -strict experimental monfichier.mkv&lt;/code&gt;
Dans cet exemple, un preset vidéo est utilisé : un mode sans perte de qualité avec compression très rapide. Le format du fichier en sortie est le .mkv (Matroska).
Ligne de commande à adapter en fonction de vos périphériques audio et vidéo.

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

=== autres outils spécifiques aux formats ===
Plusieurs formats ouverts pour l'audio/video proposent leurs propres outils, on peut citer:

* vorbis-tools: http://packages.debian.org/search?keywords=vorbis-tools (juste pour l'audio OGG Vorbis et FLAC)
* mkvtoolnix: http://packages.debian.org/search?keywords=mkvtoolnix (pour le format Matroska Video [MKV], il existe aussi une interface graphique pour l'outil)

== Encoder en graphique ==

=== Arista ===

Interface graphique (GTK) pour le transcodage (conversion) de vidéos. Une multitude de modèles de conversion (&quot;presets&quot;) fournis.

Paquet Debian: http://packages.debian.org/wheezy/arista

=== Transmageddon ===

Très simple d'utilisation

Paquet Debian: http://packages.debian.org/wheezy/transmageddon

=== Firefogg ===

Firefogg n'est pas un programme standard, mais une extension pour Iceweasel/Firefox, qui contient ffmpeg et ffmpeg2theora. Permet de convertir facilement, via une interface simple dans votre navigateur, des vidéos vers les formats ouverts pour le web : Ogg et WebM. Tout se fait en local sur votre machine.

Site officiel: http://firefogg.org/

=== Avidemux === 
Avidemux n'est pas disponible dans les dépots officiels de Debian, et cela est bien dommage, mais voici plusieurs approches pour tenter de répondre à ce problème:
==== Solution 1: dépots deb-multimedia ====
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ deb-multimedia]. Nous vous conseillons de prendre connaissance de [http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F cette entrée du FAQ Debian] si vous comptez l'utiliser.

Pour l'ajouter, voyez [[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | comment ajouter un dépôt tiers]] à votre système.

==== Solution 2: compiler depuis les sources ====
Lisez la documentation du wiki: http://www.avidemux.org/admWiki/doku.php?id=build:install_2.6

==== Solution 3: aider à intégrer avidemux dans Debian ====
* Existe-t-il une ITP ?
* Ca fait des années que l'outil existe, pourquoi n'est-il pas déjà dans Debian ? Raison 1: il aurait été amputé d'une bonne partie de ses codecs. Raison 2: Pourquoi quoi, kwak pouet. 

=== VLC ===
VLC peut convertir/transcoder vos videos, qu'il s'agisse de flux en cours de lecture, ou de médias déjà existants.
Le jeu de codecs fournis avec Debian est bien sûr limité, donc tous les «profils» et choix proposés dans l'interface ne fonctionneront pas.
L'essentiel de la manip' se fait depuis le menu Fichier puis &quot;Convertir/Enregistrer&quot;.

Consultez la documentation officielle pour d'autres infos: http://wiki.videolan.org/Documentation:Streaming_HowTo_New

Les combinaisons entre les différentes méthodes d'encapsulation, codec video, codec audio, ne fonctionnent pas toutes, y compris celles indiquées dans les profils pré-enregistrés. Depuis la version 2.1.0, VLC est un peu plus clair sur les méthodes d'encapsulation qu'il sait gérer.

Combinaisons testées avec succès:
* H264 + Vorbis (MP4), avec VLC 2.1.0 (Jessie)
* VP80 + Vorbis (Webm), avec VLC 2.0.8 (Jessie)
* Theora + Vorbis (OGG), sous Wheezy
Combinaisons problématiques:
* Celles à base de MP3, de WMA, et bien d'autres...

Note: il est possible de créer ses propres profils.
Note: Divers problèmes constatés avec l'encodage en Dirac: latence à la lecture (avec conteneur TS), ou saccades (avec conteneur OGG).

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== MLT Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
* Documentation officielle: http://www.mltframework.org/bin/view/MLT/MltMelt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).
Remarque: la fraîcheur de l'outil et son utilisabilité n'ont pas été testés.

== Editer en graphique ==

Kdenlive et OpenShot Video Editor sont les deux logiciels plebiscités.

=== Kdenlive ===
* Site officiel: http://kdenlive.org/
* Paquet debian: http://packages.debian.org/search?keywords=kdenlive
* [[wikipedia:Kdenlive]]
* http://wiki.debian-facile.org/doc:media:kdenlive
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== OpenShot Video Editor ===
* Site officiel: http://www.openshotvideo.com/
* Paquet debian: http://packages.debian.org/search?keywords=openshot
* [[wikipedia:OpenShot_Video_Editor]]
* http://wiki.debian-facile.org/doc:media:openshot
Il paraît que c'est bien.

=== Pitivi ===
* Site officiel: http://www.pitivi.org
* Paquet debian: http://packages.debian.org/search?keywords=pitivi
* http://wiki.debian-facile.org/doc:environnements:gnome:pitivi

Editeur video qui utilise GStreamer. Paraît que c'est bien aussi.

=== LiVES ===
* Site officiel: http://lives.sourceforge.net
* Paquet debian: http://packages.debian.org/search?keywords=lives
Davantage adapté au VJing.

=== Flowblade ===
* Site officiel: https://code.google.com/p/flowblade/
* Paquet debian: http://packages.debian.org/search?keywords=flowblade

=== Shotcut ===
* Site officiel: http://www.shotcut.org
* Absent des dépots Debian

=== Cinelerra et cinelerra CV ===
cinelerra existe en 2 versions. CV voulant dire &quot;Community Version&quot;.

* Site officiel de cinelerra: http://heroinewarrior.com/cinelerra.php
* Site officiel de cinelerra CV: http://cinelerra.org
* Paquet debian: absent des dépots officiels, présent dans le dépot Multimedia
* [[wikipedia:Cinelerra]]
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Lightworks ===
* Site officiel: http://www.lwks.com/
* Absent des dépots Debian. Proprio ?

=== Kino (à l'arrêt) ===
* Site officiel: http://www.kinodv.org/
* Paquet debian: http://packages.debian.org/search?keywords=kino
«Kino has not been actively maintained since 2009. We encourage you to try other Linux video editors such as Shotcut, Kdenlive, Flowblade, OpenShot, PiTiVi, LiVES, and LightWorks.»

=== Open Movie Editor (inactif) ===
* Site officiel: http://www.openmovieeditor.org/
* Paquet debian: aucun ou trop vieux ( http://packages.debian.org/search?searchon=names&amp;keywords=open+movie )
Projet sans sortie officielle depuis 2009. Non testé.</text>
      <sha1>fi1l65x5fv8cb4afzp1badqxu7dcdgh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5517</id>
      <parentid>5514</parentid>
      <timestamp>2013-12-25T17:25:38Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Solution 3: aider à intégrer avidemux dans Debian */ Lien RFP</comment>
      <text xml:space="preserve" bytes="11874">{{Ébauche|L'édition et l'encodage de vidéos}}

= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

== Notes sur la rédaction de cette page ==
* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video
* La question de l'authoring (création de DVD), ainsi que du rip (extraction) ne sont pas abordées dans cette page, mais ici: [[DVD_edition]]
* La question du multiplexage (édition de MKV), ainsi que l'édition de chapitres et de sous-titres, devrait également être abordée séparément.
* D'autres infos relatives à ces logiciels sont dispos sur: http://wiki.debian-facile.org/doc:media:media, http://doc.ubuntu-fr.org/montage_video, https://wiki.debian.org/fr/Multimedia
* Logiciels à ajouter: transcode, handbrake, hypervideo, dvd6clone... sûrement bien d'autres.

== Considérations générales sur l'encodage de videos ==

* https://en.wikipedia.org/wiki/HTML5_video#Browser_support, prise en charge par les différents navigateurs des codecs video avec la balise HTML5 &lt;video&gt;
* Indication: en format OGV, avec les réglages par défaut de ffmpeg2theora, comptez ~100Mo pour une video de 10 minutes.
* Indication: pour youtube ou les lecteurs flash, le format video recommandé est le suivant: conteneur mp4, video x264, audio AAC.

== Encoder en ligne de commande ==
'''mencoder''' et '''avconv''' (ou ffmpeg) sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui a remplacé ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

Note: il existe des interfaces graphiques (front-ends) pour mencoder et avconv, elles seront indiquées plus bas ([[Edition_Video#Encoder_en_graphique]]).

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
&lt;code bash&gt;
#liste les codecs audio
mencoder -oac help
#liste les codecs vidéos
mencoder -ovc help
&lt;/code&gt;

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
&lt;code bash&gt;
mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;
&lt;/code&gt;

==== Voir aussi ====
* [http://doc.ubuntu-fr.org/mencoder Documentation mencoder sur Ubuntu-fr]
* [http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html Documentation mencoder sur mplayerhq]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Avconv a été intégré dans les dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Liste des formats de fichiers supportés par votre version de avconv ====
&lt;code&gt;avconv -formats&lt;/code&gt;
==== Liste des codecs audio et vidéo supportés par votre version de avconv ====
&lt;code&gt;avconv -codecs&lt;/code&gt;
==== Exemples d'utilisation ====
La page de manuel contient quelques exemples.
&lt;code&gt;man avconv&lt;/code&gt;
Un exemple très simple pour convertir un fichier vidéo au format MP4 au format MKV
&lt;code&gt;avconv -i source.mp4 destination.mkv&lt;/code&gt;
Pour obtenir seulement une piste audio MP3 depuis un fichier video
&lt;code&gt;avconv -i source.mp4 destination.mp3&lt;/code&gt;
===== Pour capturer une vidéo (avec audio) depuis la webcam =====
&lt;code&gt;avconv -f alsa -i hw:1 -f video4linux2 -i /dev/video0 -ar 44100 -r 25 -s vga -pre:0 libx264-lossless_ultrafast -c:v libx264 -strict experimental monfichier.mkv&lt;/code&gt;
Dans cet exemple, un preset vidéo est utilisé : un mode sans perte de qualité avec compression très rapide. Le format du fichier en sortie est le .mkv (Matroska).
Ligne de commande à adapter en fonction de vos périphériques audio et vidéo.

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

=== autres outils spécifiques aux formats ===
Plusieurs formats ouverts pour l'audio/video proposent leurs propres outils, on peut citer:

* vorbis-tools: http://packages.debian.org/search?keywords=vorbis-tools (juste pour l'audio OGG Vorbis et FLAC)
* mkvtoolnix: http://packages.debian.org/search?keywords=mkvtoolnix (pour le format Matroska Video [MKV], il existe aussi une interface graphique pour l'outil)

== Encoder en graphique ==

=== Arista ===

Interface graphique (GTK) pour le transcodage (conversion) de vidéos. Une multitude de modèles de conversion (&quot;presets&quot;) fournis.

Paquet Debian: http://packages.debian.org/wheezy/arista

=== Transmageddon ===

Très simple d'utilisation

Paquet Debian: http://packages.debian.org/wheezy/transmageddon

=== Firefogg ===

Firefogg n'est pas un programme standard, mais une extension pour Iceweasel/Firefox, qui contient ffmpeg et ffmpeg2theora. Permet de convertir facilement, via une interface simple dans votre navigateur, des vidéos vers les formats ouverts pour le web : Ogg et WebM. Tout se fait en local sur votre machine.

Site officiel: http://firefogg.org/

=== Avidemux === 
Avidemux n'est pas disponible dans les dépots officiels de Debian, et cela est bien dommage, mais voici plusieurs approches pour tenter de répondre à ce problème:
==== Solution 1: dépots deb-multimedia ====
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ deb-multimedia]. Nous vous conseillons de prendre connaissance de [http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F cette entrée du FAQ Debian] si vous comptez l'utiliser.

Pour l'ajouter, voyez [[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | comment ajouter un dépôt tiers]] à votre système.

==== Solution 2: compiler depuis les sources ====
Lisez la documentation du wiki: http://www.avidemux.org/admWiki/doku.php?id=build:install_2.6

==== Solution 3: aider à intégrer avidemux dans Debian ====
Ca fait des années que l'outil existe, pourquoi n'est-il pas déjà dans Debian ?
* Existe-t-il une ITP ? Non, mais [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=203211#178 une RFP #203211] ([https://wiki.debian.org/RFP définition RFP]), en résumé, Avidemux utilise des patches en interne sur les librairies

=== VLC ===
VLC peut convertir/transcoder vos videos, qu'il s'agisse de flux en cours de lecture, ou de médias déjà existants.
Le jeu de codecs fournis avec Debian est bien sûr limité, donc tous les «profils» et choix proposés dans l'interface ne fonctionneront pas.
L'essentiel de la manip' se fait depuis le menu Fichier puis &quot;Convertir/Enregistrer&quot;.

Consultez la documentation officielle pour d'autres infos: http://wiki.videolan.org/Documentation:Streaming_HowTo_New

Les combinaisons entre les différentes méthodes d'encapsulation, codec video, codec audio, ne fonctionnent pas toutes, y compris celles indiquées dans les profils pré-enregistrés. Depuis la version 2.1.0, VLC est un peu plus clair sur les méthodes d'encapsulation qu'il sait gérer.

Combinaisons testées avec succès:
* H264 + Vorbis (MP4), avec VLC 2.1.0 (Jessie)
* VP80 + Vorbis (Webm), avec VLC 2.0.8 (Jessie)
* Theora + Vorbis (OGG), sous Wheezy
Combinaisons problématiques:
* Celles à base de MP3, de WMA, et bien d'autres...

Note: il est possible de créer ses propres profils.
Note: Divers problèmes constatés avec l'encodage en Dirac: latence à la lecture (avec conteneur TS), ou saccades (avec conteneur OGG).

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== MLT Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
* Documentation officielle: http://www.mltframework.org/bin/view/MLT/MltMelt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).
Remarque: la fraîcheur de l'outil et son utilisabilité n'ont pas été testés.

== Editer en graphique ==

Kdenlive et OpenShot Video Editor sont les deux logiciels plebiscités.

=== Kdenlive ===
* Site officiel: http://kdenlive.org/
* Paquet debian: http://packages.debian.org/search?keywords=kdenlive
* [[wikipedia:Kdenlive]]
* http://wiki.debian-facile.org/doc:media:kdenlive
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== OpenShot Video Editor ===
* Site officiel: http://www.openshotvideo.com/
* Paquet debian: http://packages.debian.org/search?keywords=openshot
* [[wikipedia:OpenShot_Video_Editor]]
* http://wiki.debian-facile.org/doc:media:openshot
Il paraît que c'est bien.

=== Pitivi ===
* Site officiel: http://www.pitivi.org
* Paquet debian: http://packages.debian.org/search?keywords=pitivi
* http://wiki.debian-facile.org/doc:environnements:gnome:pitivi

Editeur video qui utilise GStreamer. Paraît que c'est bien aussi.

=== LiVES ===
* Site officiel: http://lives.sourceforge.net
* Paquet debian: http://packages.debian.org/search?keywords=lives
Davantage adapté au VJing.

=== Flowblade ===
* Site officiel: https://code.google.com/p/flowblade/
* Paquet debian: http://packages.debian.org/search?keywords=flowblade

=== Shotcut ===
* Site officiel: http://www.shotcut.org
* Absent des dépots Debian

=== Cinelerra et cinelerra CV ===
cinelerra existe en 2 versions. CV voulant dire &quot;Community Version&quot;.

* Site officiel de cinelerra: http://heroinewarrior.com/cinelerra.php
* Site officiel de cinelerra CV: http://cinelerra.org
* Paquet debian: absent des dépots officiels, présent dans le dépot Multimedia
* [[wikipedia:Cinelerra]]
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Lightworks ===
* Site officiel: http://www.lwks.com/
* Absent des dépots Debian. Proprio ?

=== Kino (à l'arrêt) ===
* Site officiel: http://www.kinodv.org/
* Paquet debian: http://packages.debian.org/search?keywords=kino
«Kino has not been actively maintained since 2009. We encourage you to try other Linux video editors such as Shotcut, Kdenlive, Flowblade, OpenShot, PiTiVi, LiVES, and LightWorks.»

=== Open Movie Editor (inactif) ===
* Site officiel: http://www.openmovieeditor.org/
* Paquet debian: aucun ou trop vieux ( http://packages.debian.org/search?searchon=names&amp;keywords=open+movie )
Projet sans sortie officielle depuis 2009. Non testé.</text>
      <sha1>1ksa82otht9wqjef79bvh3vwtwc3i7o</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5530</id>
      <parentid>5517</parentid>
      <timestamp>2014-01-19T18:33:42Z</timestamp>
      <contributor>
        <username>Agentsteel</username>
        <id>260</id>
      </contributor>
      <comment>/* Exemples d'utilisation */</comment>
      <text xml:space="preserve" bytes="12390">{{Ébauche|L'édition et l'encodage de vidéos}}

= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

== Notes sur la rédaction de cette page ==
* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video
* La question de l'authoring (création de DVD), ainsi que du rip (extraction) ne sont pas abordées dans cette page, mais ici: [[DVD_edition]]
* La question du multiplexage (édition de MKV), ainsi que l'édition de chapitres et de sous-titres, devrait également être abordée séparément.
* D'autres infos relatives à ces logiciels sont dispos sur: http://wiki.debian-facile.org/doc:media:media, http://doc.ubuntu-fr.org/montage_video, https://wiki.debian.org/fr/Multimedia
* Logiciels à ajouter: transcode, handbrake, hypervideo, dvd6clone... sûrement bien d'autres.

== Considérations générales sur l'encodage de videos ==

* https://en.wikipedia.org/wiki/HTML5_video#Browser_support, prise en charge par les différents navigateurs des codecs video avec la balise HTML5 &lt;video&gt;
* Indication: en format OGV, avec les réglages par défaut de ffmpeg2theora, comptez ~100Mo pour une video de 10 minutes.
* Indication: pour youtube ou les lecteurs flash, le format video recommandé est le suivant: conteneur mp4, video x264, audio AAC.

== Encoder en ligne de commande ==
'''mencoder''' et '''avconv''' (ou ffmpeg) sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui a remplacé ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

Note: il existe des interfaces graphiques (front-ends) pour mencoder et avconv, elles seront indiquées plus bas ([[Edition_Video#Encoder_en_graphique]]).

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
&lt;code bash&gt;
#liste les codecs audio
mencoder -oac help
#liste les codecs vidéos
mencoder -ovc help
&lt;/code&gt;

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
&lt;code bash&gt;
mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;
&lt;/code&gt;

==== Voir aussi ====
* [http://doc.ubuntu-fr.org/mencoder Documentation mencoder sur Ubuntu-fr]
* [http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html Documentation mencoder sur mplayerhq]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Avconv a été intégré dans les dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Liste des formats de fichiers supportés par votre version de avconv ====
&lt;code&gt;avconv -formats&lt;/code&gt;
==== Liste des codecs audio et vidéo supportés par votre version de avconv ====
&lt;code&gt;avconv -codecs&lt;/code&gt;
==== Exemples d'utilisation ====
La page de manuel contient quelques exemples.
&lt;code&gt;man avconv&lt;/code&gt;
Un exemple très simple pour convertir un fichier vidéo au format MP4 au format MKV
&lt;code&gt;avconv -i source.mp4 destination.mkv&lt;/code&gt;
Pour obtenir seulement une piste audio MP3 depuis un fichier video (la piste audio sera ré-encodée)
&lt;code&gt;avconv -i source.mp4 destination.mp3&lt;/code&gt;
Le même principe, mais extraire directement la piste audio *sans* la ré-encoder
&lt;code&gt;avconv -i source.mp4 -map 0:1 -c:a copy destination.aac&lt;/code&gt;
Extraire la piste vidéo seule (sans ré-encodage) depuis un fichier vidéo contenant aussi une piste audio
&lt;code&gt;avconv -i source.mp4 -an -c:v copy dest_nosound.mp4&lt;/code&gt;
Réunir une piste vidéo + une piste audio (sans ré-encoder, multiplexage seulement)
&lt;code&gt;avconv -i video.mp4 -i audio.aac -c copy video_finale.mp4&lt;/code&gt;
===== Pour capturer une vidéo (avec audio) depuis la webcam =====
&lt;code&gt;avconv -f alsa -i hw:1 -f video4linux2 -i /dev/video0 -ar 44100 -r 25 -s vga -pre:0 libx264-lossless_ultrafast -c:v libx264 -strict experimental monfichier.mkv&lt;/code&gt;
Dans cet exemple, un preset vidéo est utilisé : un mode sans perte de qualité avec compression très rapide. Le format du fichier en sortie est le .mkv (Matroska).
Ligne de commande à adapter en fonction de vos périphériques audio et vidéo.

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

=== autres outils spécifiques aux formats ===
Plusieurs formats ouverts pour l'audio/video proposent leurs propres outils, on peut citer:

* vorbis-tools: http://packages.debian.org/search?keywords=vorbis-tools (juste pour l'audio OGG Vorbis et FLAC)
* mkvtoolnix: http://packages.debian.org/search?keywords=mkvtoolnix (pour le format Matroska Video [MKV], il existe aussi une interface graphique pour l'outil)

== Encoder en graphique ==

=== Arista ===

Interface graphique (GTK) pour le transcodage (conversion) de vidéos. Une multitude de modèles de conversion (&quot;presets&quot;) fournis.

Paquet Debian: http://packages.debian.org/wheezy/arista

=== Transmageddon ===

Très simple d'utilisation

Paquet Debian: http://packages.debian.org/wheezy/transmageddon

=== Firefogg ===

Firefogg n'est pas un programme standard, mais une extension pour Iceweasel/Firefox, qui contient ffmpeg et ffmpeg2theora. Permet de convertir facilement, via une interface simple dans votre navigateur, des vidéos vers les formats ouverts pour le web : Ogg et WebM. Tout se fait en local sur votre machine.

Site officiel: http://firefogg.org/

=== Avidemux === 
Avidemux n'est pas disponible dans les dépots officiels de Debian, et cela est bien dommage, mais voici plusieurs approches pour tenter de répondre à ce problème:
==== Solution 1: dépots deb-multimedia ====
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ deb-multimedia]. Nous vous conseillons de prendre connaissance de [http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F cette entrée du FAQ Debian] si vous comptez l'utiliser.

Pour l'ajouter, voyez [[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | comment ajouter un dépôt tiers]] à votre système.

==== Solution 2: compiler depuis les sources ====
Lisez la documentation du wiki: http://www.avidemux.org/admWiki/doku.php?id=build:install_2.6

==== Solution 3: aider à intégrer avidemux dans Debian ====
Ca fait des années que l'outil existe, pourquoi n'est-il pas déjà dans Debian ?
* Existe-t-il une ITP ? Non, mais [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=203211#178 une RFP #203211] ([https://wiki.debian.org/RFP définition RFP]), en résumé, Avidemux utilise des patches en interne sur les librairies

=== VLC ===
VLC peut convertir/transcoder vos videos, qu'il s'agisse de flux en cours de lecture, ou de médias déjà existants.
Le jeu de codecs fournis avec Debian est bien sûr limité, donc tous les «profils» et choix proposés dans l'interface ne fonctionneront pas.
L'essentiel de la manip' se fait depuis le menu Fichier puis &quot;Convertir/Enregistrer&quot;.

Consultez la documentation officielle pour d'autres infos: http://wiki.videolan.org/Documentation:Streaming_HowTo_New

Les combinaisons entre les différentes méthodes d'encapsulation, codec video, codec audio, ne fonctionnent pas toutes, y compris celles indiquées dans les profils pré-enregistrés. Depuis la version 2.1.0, VLC est un peu plus clair sur les méthodes d'encapsulation qu'il sait gérer.

Combinaisons testées avec succès:
* H264 + Vorbis (MP4), avec VLC 2.1.0 (Jessie)
* VP80 + Vorbis (Webm), avec VLC 2.0.8 (Jessie)
* Theora + Vorbis (OGG), sous Wheezy
Combinaisons problématiques:
* Celles à base de MP3, de WMA, et bien d'autres...

Note: il est possible de créer ses propres profils.
Note: Divers problèmes constatés avec l'encodage en Dirac: latence à la lecture (avec conteneur TS), ou saccades (avec conteneur OGG).

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== MLT Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
* Documentation officielle: http://www.mltframework.org/bin/view/MLT/MltMelt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).
Remarque: la fraîcheur de l'outil et son utilisabilité n'ont pas été testés.

== Editer en graphique ==

Kdenlive et OpenShot Video Editor sont les deux logiciels plebiscités.

=== Kdenlive ===
* Site officiel: http://kdenlive.org/
* Paquet debian: http://packages.debian.org/search?keywords=kdenlive
* [[wikipedia:Kdenlive]]
* http://wiki.debian-facile.org/doc:media:kdenlive
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== OpenShot Video Editor ===
* Site officiel: http://www.openshotvideo.com/
* Paquet debian: http://packages.debian.org/search?keywords=openshot
* [[wikipedia:OpenShot_Video_Editor]]
* http://wiki.debian-facile.org/doc:media:openshot
Il paraît que c'est bien.

=== Pitivi ===
* Site officiel: http://www.pitivi.org
* Paquet debian: http://packages.debian.org/search?keywords=pitivi
* http://wiki.debian-facile.org/doc:environnements:gnome:pitivi

Editeur video qui utilise GStreamer. Paraît que c'est bien aussi.

=== LiVES ===
* Site officiel: http://lives.sourceforge.net
* Paquet debian: http://packages.debian.org/search?keywords=lives
Davantage adapté au VJing.

=== Flowblade ===
* Site officiel: https://code.google.com/p/flowblade/
* Paquet debian: http://packages.debian.org/search?keywords=flowblade

=== Shotcut ===
* Site officiel: http://www.shotcut.org
* Absent des dépots Debian

=== Cinelerra et cinelerra CV ===
cinelerra existe en 2 versions. CV voulant dire &quot;Community Version&quot;.

* Site officiel de cinelerra: http://heroinewarrior.com/cinelerra.php
* Site officiel de cinelerra CV: http://cinelerra.org
* Paquet debian: absent des dépots officiels, présent dans le dépot Multimedia
* [[wikipedia:Cinelerra]]
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Lightworks ===
* Site officiel: http://www.lwks.com/
* Absent des dépots Debian. Proprio ?

=== Kino (à l'arrêt) ===
* Site officiel: http://www.kinodv.org/
* Paquet debian: http://packages.debian.org/search?keywords=kino
«Kino has not been actively maintained since 2009. We encourage you to try other Linux video editors such as Shotcut, Kdenlive, Flowblade, OpenShot, PiTiVi, LiVES, and LightWorks.»

=== Open Movie Editor (inactif) ===
* Site officiel: http://www.openmovieeditor.org/
* Paquet debian: aucun ou trop vieux ( http://packages.debian.org/search?searchon=names&amp;keywords=open+movie )
Projet sans sortie officielle depuis 2009. Non testé.</text>
      <sha1>jek3gwvjwk1s978esngb95hpas8dytt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5578</id>
      <parentid>5530</parentid>
      <timestamp>2014-03-23T10:58:57Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Voir aussi */ +lien page paquet</comment>
      <text xml:space="preserve" bytes="12489">{{Ébauche|L'édition et l'encodage de vidéos}}

= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

== Notes sur la rédaction de cette page ==
* Le but de cette page serait d'indiquer quels outils sont maintenus, fonctionnent et ont la côte, en tenant compte des limitations propres à Debian (certains codecs non disponibles), et éventuellement de suivre l'intégration des paquets dans Debian.
* plutôt que de recenser toutes les options/paramètres et faire doublon avec les pages man, se focaliser sur &quot;les directions&quot;. (essayer de faire court)
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video
* La question de l'authoring (création de DVD), ainsi que du rip (extraction) ne sont pas abordées dans cette page, mais ici: [[DVD_edition]]
* La question du multiplexage (édition de MKV), ainsi que l'édition de chapitres et de sous-titres, devrait également être abordée séparément.
* D'autres infos relatives à ces logiciels sont dispos sur: http://wiki.debian-facile.org/doc:media:media, http://doc.ubuntu-fr.org/montage_video, https://wiki.debian.org/fr/Multimedia
* Logiciels à ajouter: transcode, handbrake, hypervideo, dvd6clone... sûrement bien d'autres.

== Considérations générales sur l'encodage de videos ==

* https://en.wikipedia.org/wiki/HTML5_video#Browser_support, prise en charge par les différents navigateurs des codecs video avec la balise HTML5 &lt;video&gt;
* Indication: en format OGV, avec les réglages par défaut de ffmpeg2theora, comptez ~100Mo pour une video de 10 minutes.
* Indication: pour youtube ou les lecteurs flash, le format video recommandé est le suivant: conteneur mp4, video x264, audio AAC.

== Encoder en ligne de commande ==
'''mencoder''' et '''avconv''' (ou ffmpeg) sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui a remplacé ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

Note: il existe des interfaces graphiques (front-ends) pour mencoder et avconv, elles seront indiquées plus bas ([[Edition_Video#Encoder_en_graphique]]).

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
&lt;code bash&gt;
#liste les codecs audio
mencoder -oac help
#liste les codecs vidéos
mencoder -ovc help
&lt;/code&gt;

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
&lt;code bash&gt;
mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;
&lt;/code&gt;

==== Voir aussi ====
* Le paquet mencoder dans les dépots Debian: https://packages.debian.org/search?keywords=mencoder
* [http://doc.ubuntu-fr.org/mencoder Documentation mencoder sur Ubuntu-fr]
* [http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html Documentation mencoder sur mplayerhq]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Avconv a été intégré dans les dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Liste des formats de fichiers supportés par votre version de avconv ====
&lt;code&gt;avconv -formats&lt;/code&gt;
==== Liste des codecs audio et vidéo supportés par votre version de avconv ====
&lt;code&gt;avconv -codecs&lt;/code&gt;
==== Exemples d'utilisation ====
La page de manuel contient quelques exemples.
&lt;code&gt;man avconv&lt;/code&gt;
Un exemple très simple pour convertir un fichier vidéo au format MP4 au format MKV
&lt;code&gt;avconv -i source.mp4 destination.mkv&lt;/code&gt;
Pour obtenir seulement une piste audio MP3 depuis un fichier video (la piste audio sera ré-encodée)
&lt;code&gt;avconv -i source.mp4 destination.mp3&lt;/code&gt;
Le même principe, mais extraire directement la piste audio *sans* la ré-encoder
&lt;code&gt;avconv -i source.mp4 -map 0:1 -c:a copy destination.aac&lt;/code&gt;
Extraire la piste vidéo seule (sans ré-encodage) depuis un fichier vidéo contenant aussi une piste audio
&lt;code&gt;avconv -i source.mp4 -an -c:v copy dest_nosound.mp4&lt;/code&gt;
Réunir une piste vidéo + une piste audio (sans ré-encoder, multiplexage seulement)
&lt;code&gt;avconv -i video.mp4 -i audio.aac -c copy video_finale.mp4&lt;/code&gt;
===== Pour capturer une vidéo (avec audio) depuis la webcam =====
&lt;code&gt;avconv -f alsa -i hw:1 -f video4linux2 -i /dev/video0 -ar 44100 -r 25 -s vga -pre:0 libx264-lossless_ultrafast -c:v libx264 -strict experimental monfichier.mkv&lt;/code&gt;
Dans cet exemple, un preset vidéo est utilisé : un mode sans perte de qualité avec compression très rapide. Le format du fichier en sortie est le .mkv (Matroska).
Ligne de commande à adapter en fonction de vos périphériques audio et vidéo.

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

=== autres outils spécifiques aux formats ===
Plusieurs formats ouverts pour l'audio/video proposent leurs propres outils, on peut citer:

* vorbis-tools: http://packages.debian.org/search?keywords=vorbis-tools (juste pour l'audio OGG Vorbis et FLAC)
* mkvtoolnix: http://packages.debian.org/search?keywords=mkvtoolnix (pour le format Matroska Video [MKV], il existe aussi une interface graphique pour l'outil)

== Encoder en graphique ==

=== Arista ===

Interface graphique (GTK) pour le transcodage (conversion) de vidéos. Une multitude de modèles de conversion (&quot;presets&quot;) fournis.

Paquet Debian: http://packages.debian.org/wheezy/arista

=== Transmageddon ===

Très simple d'utilisation

Paquet Debian: http://packages.debian.org/wheezy/transmageddon

=== Firefogg ===

Firefogg n'est pas un programme standard, mais une extension pour Iceweasel/Firefox, qui contient ffmpeg et ffmpeg2theora. Permet de convertir facilement, via une interface simple dans votre navigateur, des vidéos vers les formats ouverts pour le web : Ogg et WebM. Tout se fait en local sur votre machine.

Site officiel: http://firefogg.org/

=== Avidemux === 
Avidemux n'est pas disponible dans les dépots officiels de Debian, et cela est bien dommage, mais voici plusieurs approches pour tenter de répondre à ce problème:
==== Solution 1: dépots deb-multimedia ====
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ deb-multimedia]. Nous vous conseillons de prendre connaissance de [http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F cette entrée du FAQ Debian] si vous comptez l'utiliser.

Pour l'ajouter, voyez [[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | comment ajouter un dépôt tiers]] à votre système.

==== Solution 2: compiler depuis les sources ====
Lisez la documentation du wiki: http://www.avidemux.org/admWiki/doku.php?id=build:install_2.6

==== Solution 3: aider à intégrer avidemux dans Debian ====
Ca fait des années que l'outil existe, pourquoi n'est-il pas déjà dans Debian ?
* Existe-t-il une ITP ? Non, mais [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=203211#178 une RFP #203211] ([https://wiki.debian.org/RFP définition RFP]), en résumé, Avidemux utilise des patches en interne sur les librairies

=== VLC ===
VLC peut convertir/transcoder vos videos, qu'il s'agisse de flux en cours de lecture, ou de médias déjà existants.
Le jeu de codecs fournis avec Debian est bien sûr limité, donc tous les «profils» et choix proposés dans l'interface ne fonctionneront pas.
L'essentiel de la manip' se fait depuis le menu Fichier puis &quot;Convertir/Enregistrer&quot;.

Consultez la documentation officielle pour d'autres infos: http://wiki.videolan.org/Documentation:Streaming_HowTo_New

Les combinaisons entre les différentes méthodes d'encapsulation, codec video, codec audio, ne fonctionnent pas toutes, y compris celles indiquées dans les profils pré-enregistrés. Depuis la version 2.1.0, VLC est un peu plus clair sur les méthodes d'encapsulation qu'il sait gérer.

Combinaisons testées avec succès:
* H264 + Vorbis (MP4), avec VLC 2.1.0 (Jessie)
* VP80 + Vorbis (Webm), avec VLC 2.0.8 (Jessie)
* Theora + Vorbis (OGG), sous Wheezy
Combinaisons problématiques:
* Celles à base de MP3, de WMA, et bien d'autres...

Note: il est possible de créer ses propres profils.
Note: Divers problèmes constatés avec l'encodage en Dirac: latence à la lecture (avec conteneur TS), ou saccades (avec conteneur OGG).

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== MLT Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
* Documentation officielle: http://www.mltframework.org/bin/view/MLT/MltMelt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).
Remarque: la fraîcheur de l'outil et son utilisabilité n'ont pas été testés.

== Editer en graphique ==

Kdenlive et OpenShot Video Editor sont les deux logiciels plebiscités.

=== Kdenlive ===
* Site officiel: http://kdenlive.org/
* Paquet debian: http://packages.debian.org/search?keywords=kdenlive
* [[wikipedia:Kdenlive]]
* http://wiki.debian-facile.org/doc:media:kdenlive
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== OpenShot Video Editor ===
* Site officiel: http://www.openshotvideo.com/
* Paquet debian: http://packages.debian.org/search?keywords=openshot
* [[wikipedia:OpenShot_Video_Editor]]
* http://wiki.debian-facile.org/doc:media:openshot
Il paraît que c'est bien.

=== Pitivi ===
* Site officiel: http://www.pitivi.org
* Paquet debian: http://packages.debian.org/search?keywords=pitivi
* http://wiki.debian-facile.org/doc:environnements:gnome:pitivi

Editeur video qui utilise GStreamer. Paraît que c'est bien aussi.

=== LiVES ===
* Site officiel: http://lives.sourceforge.net
* Paquet debian: http://packages.debian.org/search?keywords=lives
Davantage adapté au VJing.

=== Flowblade ===
* Site officiel: https://code.google.com/p/flowblade/
* Paquet debian: http://packages.debian.org/search?keywords=flowblade

=== Shotcut ===
* Site officiel: http://www.shotcut.org
* Absent des dépots Debian

=== Cinelerra et cinelerra CV ===
cinelerra existe en 2 versions. CV voulant dire &quot;Community Version&quot;.

* Site officiel de cinelerra: http://heroinewarrior.com/cinelerra.php
* Site officiel de cinelerra CV: http://cinelerra.org
* Paquet debian: absent des dépots officiels, présent dans le dépot Multimedia
* [[wikipedia:Cinelerra]]
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Lightworks ===
* Site officiel: http://www.lwks.com/
* Absent des dépots Debian. Proprio ?

=== Kino (à l'arrêt) ===
* Site officiel: http://www.kinodv.org/
* Paquet debian: http://packages.debian.org/search?keywords=kino
«Kino has not been actively maintained since 2009. We encourage you to try other Linux video editors such as Shotcut, Kdenlive, Flowblade, OpenShot, PiTiVi, LiVES, and LightWorks.»

=== Open Movie Editor (inactif) ===
* Site officiel: http://www.openmovieeditor.org/
* Paquet debian: aucun ou trop vieux ( http://packages.debian.org/search?searchon=names&amp;keywords=open+movie )
Projet sans sortie officielle depuis 2009. Non testé.</text>
      <sha1>ri0ynay1nt7fchnhhqipql6h4tjvlrl</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5583</id>
      <parentid>5578</parentid>
      <timestamp>2014-03-27T23:08:49Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>On retire les encodeurs audio (y'en a plein, et pas à aborder ici). On ajoute une section &quot;éditeurs graphiques spécifiques&quot; (MKV, flux TS ? DVB, ...). Retrait remarque sur le fait de traiter le cas &quot;MKV&quot; séparément.</comment>
      <text xml:space="preserve" bytes="12328">{{Ébauche|L'édition et l'encodage de vidéos}}

= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

== Notes sur la rédaction de cette page ==
* Le but de cette page est de '''recenser''' les outils, en présentant éventuellement succintement quelques usages. Les usages plus poussés pourraient être détaillés dans une sous-page/à part.
* On tiendra compte des spécificités de Debian: priorité aux logiciels déjà dans les dépots (ou s'intéresser à leur possible intégration), usage de codecs libres...
* La question de l'authoring (création de DVD), ainsi que du rip (extraction) ne sont pas abordées dans cette page, mais ici: [[DVD_edition]]
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video
* D'autres infos relatives à ces logiciels sont dispos sur: http://wiki.debian-facile.org/doc:media:media, http://doc.ubuntu-fr.org/montage_video, https://wiki.debian.org/fr/Multimedia
* Logiciels à ajouter: transcode, handbrake, hypervideo, dvd6clone... sûrement bien d'autres.

== Quelques indications sur l'encodage de videos ==

* https://en.wikipedia.org/wiki/HTML5_video#Browser_support, prise en charge par les différents navigateurs des codecs video avec la balise HTML5 &lt;video&gt;
* en format OGV, avec les réglages par défaut de ffmpeg2theora, comptez ~100Mo pour une video de 10 minutes.
* pour youtube ou les lecteurs flash, le format video recommandé est le suivant: conteneur mp4, video x264, audio AAC.

== Encoder en ligne de commande ==
'''mencoder''' et '''avconv''' (ou ffmpeg) sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui a remplacé ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

Note: il existe des interfaces graphiques (front-ends) pour mencoder et avconv, elles seront indiquées plus bas ([[Edition_Video#Encoder_en_graphique]]).

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
&lt;code bash&gt;
#liste les codecs audio
mencoder -oac help
#liste les codecs vidéos
mencoder -ovc help
&lt;/code&gt;

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
&lt;code bash&gt;
mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;
&lt;/code&gt;

==== Voir aussi ====
* Le paquet mencoder dans les dépots Debian: https://packages.debian.org/search?keywords=mencoder
* [http://doc.ubuntu-fr.org/mencoder Documentation mencoder sur Ubuntu-fr]
* [http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html Documentation mencoder sur mplayerhq]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Avconv a été intégré dans les dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Liste des formats de fichiers supportés par votre version de avconv ====
&lt;code&gt;avconv -formats&lt;/code&gt;
==== Liste des codecs audio et vidéo supportés par votre version de avconv ====
&lt;code&gt;avconv -codecs&lt;/code&gt;
==== Exemples d'utilisation ====
La page de manuel contient quelques exemples.
&lt;code&gt;man avconv&lt;/code&gt;
Un exemple très simple pour convertir un fichier vidéo au format MP4 au format MKV
&lt;code&gt;avconv -i source.mp4 destination.mkv&lt;/code&gt;
Pour obtenir seulement une piste audio MP3 depuis un fichier video (la piste audio sera ré-encodée)
&lt;code&gt;avconv -i source.mp4 destination.mp3&lt;/code&gt;
Le même principe, mais extraire directement la piste audio *sans* la ré-encoder
&lt;code&gt;avconv -i source.mp4 -map 0:1 -c:a copy destination.aac&lt;/code&gt;
Extraire la piste vidéo seule (sans ré-encodage) depuis un fichier vidéo contenant aussi une piste audio
&lt;code&gt;avconv -i source.mp4 -an -c:v copy dest_nosound.mp4&lt;/code&gt;
Réunir une piste vidéo + une piste audio (sans ré-encoder, multiplexage seulement)
&lt;code&gt;avconv -i video.mp4 -i audio.aac -c copy video_finale.mp4&lt;/code&gt;
===== Pour capturer une vidéo (avec audio) depuis la webcam =====
&lt;code&gt;avconv -f alsa -i hw:1 -f video4linux2 -i /dev/video0 -ar 44100 -r 25 -s vga -pre:0 libx264-lossless_ultrafast -c:v libx264 -strict experimental monfichier.mkv&lt;/code&gt;
Dans cet exemple, un preset vidéo est utilisé : un mode sans perte de qualité avec compression très rapide. Le format du fichier en sortie est le .mkv (Matroska).
Ligne de commande à adapter en fonction de vos périphériques audio et vidéo.

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

== Encoder en graphique ==

=== Arista ===

Interface graphique (GTK) pour le transcodage (conversion) de vidéos. Une multitude de modèles de conversion (&quot;presets&quot;) fournis.

Paquet Debian: http://packages.debian.org/wheezy/arista

=== Transmageddon ===

Très simple d'utilisation

Paquet Debian: http://packages.debian.org/wheezy/transmageddon

=== VLC ===
VLC peut convertir/transcoder vos videos, qu'il s'agisse de flux en cours de lecture, ou de médias déjà existants.
Les manipulations de conversion se font depuis le menu Fichier puis &quot;Convertir/Enregistrer&quot;.

Consultez la documentation officielle pour d'autres infos: http://wiki.videolan.org/Documentation:Streaming_HowTo_New

Le jeu de codecs fournis avec Debian est bien sûr limité, donc tous les «profils» et choix proposés dans l'interface ne fonctionneront pas.
Les combinaisons entre les différentes méthodes d'encapsulation, codec video, codec audio, ne fonctionnent pas toutes, y compris celles indiquées dans les profils pré-enregistrés. Depuis la version 2.1.0, VLC est un peu plus clair sur les méthodes d'encapsulation qu'il sait gérer.

Combinaisons testées avec succès:
* H264 + Vorbis (MP4), avec VLC 2.1.0 (Jessie)
* VP80 + Vorbis (Webm), avec VLC 2.0.8 (Jessie)
* Theora + Vorbis (OGG), sous Wheezy
Combinaisons problématiques:
* Encodages en Dirac imparfaits (latence avec conteneur TS, saccades avec conteneur OGG...)
* Celles à base de MP3, de WMA, et bien d'autres...

=== Firefogg ===

Firefogg n'est pas un programme standard, mais une extension pour Iceweasel/Firefox, qui contient ffmpeg et ffmpeg2theora. Permet de convertir facilement, via une interface simple dans votre navigateur, des vidéos vers les formats ouverts pour le web : Ogg et WebM. Tout se fait en local sur votre machine.

Site officiel: http://firefogg.org/

=== Avidemux === 
Avidemux n'est pas disponible dans les dépots officiels de Debian, et cela est bien dommage, mais voici plusieurs approches pour tenter de répondre à ce problème:
==== Solution 1: dépots deb-multimedia ====
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ deb-multimedia]. Nous vous conseillons de prendre connaissance de [http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F cette entrée du FAQ Debian] si vous comptez l'utiliser.

Pour l'ajouter, voyez [[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | comment ajouter un dépôt tiers]] à votre système.

==== Solution 2: compiler depuis les sources ====
Lisez la documentation du wiki: http://www.avidemux.org/admWiki/doku.php?id=build:install_2.6

==== Solution 3: aider à intégrer avidemux dans Debian ====
Ca fait des années que l'outil existe, pourquoi n'est-il pas déjà dans Debian ?
* Existe-t-il une ITP ? Non, mais [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=203211#178 une RFP #203211] ([https://wiki.debian.org/RFP définition RFP]), en résumé, Avidemux utilise des patches en interne sur les librairies

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== MLT Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
* Documentation officielle: http://www.mltframework.org/bin/view/MLT/MltMelt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).
Remarque: la fraîcheur de l'outil et son utilisabilité n'ont pas été testés.

== Editer en graphique (généralistes) ==

Kdenlive et OpenShot Video Editor sont les deux logiciels plebiscités.

=== Kdenlive ===
* Site officiel: http://kdenlive.org/
* Paquet debian: http://packages.debian.org/search?keywords=kdenlive
* [[wikipedia:Kdenlive]]
* http://wiki.debian-facile.org/doc:media:kdenlive
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== OpenShot Video Editor ===
* Site officiel: http://www.openshotvideo.com/
* Paquet debian: http://packages.debian.org/search?keywords=openshot
* [[wikipedia:OpenShot_Video_Editor]]
* http://wiki.debian-facile.org/doc:media:openshot
Il paraît que c'est bien.

=== Pitivi ===
* Site officiel: http://www.pitivi.org
* Paquet debian: http://packages.debian.org/search?keywords=pitivi
* http://wiki.debian-facile.org/doc:environnements:gnome:pitivi

Editeur video qui utilise GStreamer. Paraît que c'est bien aussi.

=== LiVES ===
* Site officiel: http://lives.sourceforge.net
* Paquet debian: http://packages.debian.org/search?keywords=lives
Davantage adapté au VJing.

=== Flowblade ===
* Site officiel: https://code.google.com/p/flowblade/
* Paquet debian: http://packages.debian.org/search?keywords=flowblade

=== Shotcut ===
* Site officiel: http://www.shotcut.org
* Absent des dépots Debian

=== Cinelerra et cinelerra CV ===
cinelerra existe en 2 versions. CV voulant dire &quot;Community Version&quot;.

* Site officiel de cinelerra: http://heroinewarrior.com/cinelerra.php
* Site officiel de cinelerra CV: http://cinelerra.org
* Paquet debian: absent des dépots officiels, présent dans le dépot Multimedia
* [[wikipedia:Cinelerra]]
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Lightworks ===
* Site officiel: http://www.lwks.com/
* Absent des dépots Debian. Proprio ?

=== Kino (à l'arrêt) ===
* Site officiel: http://www.kinodv.org/
* Paquet debian: http://packages.debian.org/search?keywords=kino
«Kino has not been actively maintained since 2009. We encourage you to try other Linux video editors such as Shotcut, Kdenlive, Flowblade, OpenShot, PiTiVi, LiVES, and LightWorks.»

=== Open Movie Editor (inactif) ===
* Site officiel: http://www.openmovieeditor.org/
* Paquet debian: aucun ou trop vieux ( http://packages.debian.org/search?searchon=names&amp;keywords=open+movie )
Projet sans sortie officielle depuis 2009. Non testé.

== Editer en graphique (spécifiques) ==

=== Dvbcut ===
* Site officiel: http://dvbcut.sourceforge.net/
* Paquet debian: https://packages.debian.org/search?keywords=dvbcut
Permet d'extraire une partie d'un flux de transport MPEG tel que ceux reçus par Digital Video Broadcasting (DVB). Développement [http://www.mail-archive.com/dvbcut-devel%40lists.sourceforge.net/ calme] depuis 2007.

=== Mkvtoolnix ===
* Site officiel: http://www.bunkus.org/videotools/mkvtoolnix/
* Paquet Debian: http://packages.debian.org/search?keywords=mkvtoolnix</text>
      <sha1>t1mscqjsllcoq1yhas98yzlapytcji9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5584</id>
      <parentid>5583</parentid>
      <timestamp>2014-03-27T23:25:44Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Editer en graphique (généralistes) */</comment>
      <text xml:space="preserve" bytes="12337">{{Ébauche|L'édition et l'encodage de vidéos}}

= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

== Notes sur la rédaction de cette page ==
* Le but de cette page est de '''recenser''' les outils, en présentant éventuellement succintement quelques usages. Les usages plus poussés pourraient être détaillés dans une sous-page/à part.
* On tiendra compte des spécificités de Debian: priorité aux logiciels déjà dans les dépots (ou s'intéresser à leur possible intégration), usage de codecs libres...
* La question de l'authoring (création de DVD), ainsi que du rip (extraction) ne sont pas abordées dans cette page, mais ici: [[DVD_edition]]
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video
* D'autres infos relatives à ces logiciels sont dispos sur: http://wiki.debian-facile.org/doc:media:media, http://doc.ubuntu-fr.org/montage_video, https://wiki.debian.org/fr/Multimedia
* Logiciels à ajouter: transcode, handbrake, hypervideo, dvd6clone... sûrement bien d'autres.

== Quelques indications sur l'encodage de videos ==

* https://en.wikipedia.org/wiki/HTML5_video#Browser_support, prise en charge par les différents navigateurs des codecs video avec la balise HTML5 &lt;video&gt;
* en format OGV, avec les réglages par défaut de ffmpeg2theora, comptez ~100Mo pour une video de 10 minutes.
* pour youtube ou les lecteurs flash, le format video recommandé est le suivant: conteneur mp4, video x264, audio AAC.

== Encoder en ligne de commande ==
'''mencoder''' et '''avconv''' (ou ffmpeg) sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui a remplacé ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

Note: il existe des interfaces graphiques (front-ends) pour mencoder et avconv, elles seront indiquées plus bas ([[Edition_Video#Encoder_en_graphique]]).

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
&lt;code bash&gt;
#liste les codecs audio
mencoder -oac help
#liste les codecs vidéos
mencoder -ovc help
&lt;/code&gt;

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
&lt;code bash&gt;
mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;
&lt;/code&gt;

==== Voir aussi ====
* Le paquet mencoder dans les dépots Debian: https://packages.debian.org/search?keywords=mencoder
* [http://doc.ubuntu-fr.org/mencoder Documentation mencoder sur Ubuntu-fr]
* [http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html Documentation mencoder sur mplayerhq]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Avconv a été intégré dans les dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Liste des formats de fichiers supportés par votre version de avconv ====
&lt;code&gt;avconv -formats&lt;/code&gt;
==== Liste des codecs audio et vidéo supportés par votre version de avconv ====
&lt;code&gt;avconv -codecs&lt;/code&gt;
==== Exemples d'utilisation ====
La page de manuel contient quelques exemples.
&lt;code&gt;man avconv&lt;/code&gt;
Un exemple très simple pour convertir un fichier vidéo au format MP4 au format MKV
&lt;code&gt;avconv -i source.mp4 destination.mkv&lt;/code&gt;
Pour obtenir seulement une piste audio MP3 depuis un fichier video (la piste audio sera ré-encodée)
&lt;code&gt;avconv -i source.mp4 destination.mp3&lt;/code&gt;
Le même principe, mais extraire directement la piste audio *sans* la ré-encoder
&lt;code&gt;avconv -i source.mp4 -map 0:1 -c:a copy destination.aac&lt;/code&gt;
Extraire la piste vidéo seule (sans ré-encodage) depuis un fichier vidéo contenant aussi une piste audio
&lt;code&gt;avconv -i source.mp4 -an -c:v copy dest_nosound.mp4&lt;/code&gt;
Réunir une piste vidéo + une piste audio (sans ré-encoder, multiplexage seulement)
&lt;code&gt;avconv -i video.mp4 -i audio.aac -c copy video_finale.mp4&lt;/code&gt;
===== Pour capturer une vidéo (avec audio) depuis la webcam =====
&lt;code&gt;avconv -f alsa -i hw:1 -f video4linux2 -i /dev/video0 -ar 44100 -r 25 -s vga -pre:0 libx264-lossless_ultrafast -c:v libx264 -strict experimental monfichier.mkv&lt;/code&gt;
Dans cet exemple, un preset vidéo est utilisé : un mode sans perte de qualité avec compression très rapide. Le format du fichier en sortie est le .mkv (Matroska).
Ligne de commande à adapter en fonction de vos périphériques audio et vidéo.

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

== Encoder en graphique ==

=== Arista ===

Interface graphique (GTK) pour le transcodage (conversion) de vidéos. Une multitude de modèles de conversion (&quot;presets&quot;) fournis.

Paquet Debian: http://packages.debian.org/wheezy/arista

=== Transmageddon ===

Très simple d'utilisation

Paquet Debian: http://packages.debian.org/wheezy/transmageddon

=== VLC ===
VLC peut convertir/transcoder vos videos, qu'il s'agisse de flux en cours de lecture, ou de médias déjà existants.
Les manipulations de conversion se font depuis le menu Fichier puis &quot;Convertir/Enregistrer&quot;.

Consultez la documentation officielle pour d'autres infos: http://wiki.videolan.org/Documentation:Streaming_HowTo_New

Le jeu de codecs fournis avec Debian est bien sûr limité, donc tous les «profils» et choix proposés dans l'interface ne fonctionneront pas.
Les combinaisons entre les différentes méthodes d'encapsulation, codec video, codec audio, ne fonctionnent pas toutes, y compris celles indiquées dans les profils pré-enregistrés. Depuis la version 2.1.0, VLC est un peu plus clair sur les méthodes d'encapsulation qu'il sait gérer.

Combinaisons testées avec succès:
* H264 + Vorbis (MP4), avec VLC 2.1.0 (Jessie)
* VP80 + Vorbis (Webm), avec VLC 2.0.8 (Jessie)
* Theora + Vorbis (OGG), sous Wheezy
Combinaisons problématiques:
* Encodages en Dirac imparfaits (latence avec conteneur TS, saccades avec conteneur OGG...)
* Celles à base de MP3, de WMA, et bien d'autres...

=== Firefogg ===

Firefogg n'est pas un programme standard, mais une extension pour Iceweasel/Firefox, qui contient ffmpeg et ffmpeg2theora. Permet de convertir facilement, via une interface simple dans votre navigateur, des vidéos vers les formats ouverts pour le web : Ogg et WebM. Tout se fait en local sur votre machine.

Site officiel: http://firefogg.org/

=== Avidemux === 
Avidemux n'est pas disponible dans les dépots officiels de Debian, et cela est bien dommage, mais voici plusieurs approches pour tenter de répondre à ce problème:
==== Solution 1: dépots deb-multimedia ====
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ deb-multimedia]. Nous vous conseillons de prendre connaissance de [http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F cette entrée du FAQ Debian] si vous comptez l'utiliser.

Pour l'ajouter, voyez [[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | comment ajouter un dépôt tiers]] à votre système.

==== Solution 2: compiler depuis les sources ====
Lisez la documentation du wiki: http://www.avidemux.org/admWiki/doku.php?id=build:install_2.6

==== Solution 3: aider à intégrer avidemux dans Debian ====
Ca fait des années que l'outil existe, pourquoi n'est-il pas déjà dans Debian ?
* Existe-t-il une ITP ? Non, mais [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=203211#178 une RFP #203211] ([https://wiki.debian.org/RFP définition RFP]), en résumé, Avidemux utilise des patches en interne sur les librairies

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== MLT Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
* Documentation officielle: http://www.mltframework.org/bin/view/MLT/MltMelt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).
Remarque: la fraîcheur de l'outil et son utilisabilité n'ont pas été testés.

== Editer en graphique (généralistes) ==

Kdenlive, OpenShot Video Editor et Pitivi sont parmi les logiciels plebiscités.

=== Kdenlive ===
* Site officiel: http://kdenlive.org/
* Paquet debian: http://packages.debian.org/search?keywords=kdenlive
* [[wikipedia:Kdenlive]]
* http://wiki.debian-facile.org/doc:media:kdenlive
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== OpenShot Video Editor ===
* Site officiel: http://www.openshotvideo.com/
* Paquet debian: http://packages.debian.org/search?keywords=openshot
* [[wikipedia:OpenShot_Video_Editor]]
* http://wiki.debian-facile.org/doc:media:openshot
Il paraît que c'est bien.

=== Pitivi ===
* Site officiel: http://www.pitivi.org
* Paquet debian: http://packages.debian.org/search?keywords=pitivi
* http://wiki.debian-facile.org/doc:environnements:gnome:pitivi

Editeur video qui utilise GStreamer. Paraît que c'est bien aussi.

=== LiVES ===
* Site officiel: http://lives.sourceforge.net
* Paquet debian: http://packages.debian.org/search?keywords=lives
Davantage adapté au VJing.

=== Flowblade ===
* Site officiel: https://code.google.com/p/flowblade/
* Paquet debian: http://packages.debian.org/search?keywords=flowblade

=== Shotcut ===
* Site officiel: http://www.shotcut.org
* Absent des dépots Debian

=== Cinelerra et cinelerra CV ===
cinelerra existe en 2 versions. CV voulant dire &quot;Community Version&quot;.

* Site officiel de cinelerra: http://heroinewarrior.com/cinelerra.php
* Site officiel de cinelerra CV: http://cinelerra.org
* Paquet debian: absent des dépots officiels, présent dans le dépot Multimedia
* [[wikipedia:Cinelerra]]
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Lightworks ===
* Site officiel: http://www.lwks.com/
* Absent des dépots Debian. Proprio ?

=== Kino (à l'arrêt) ===
* Site officiel: http://www.kinodv.org/
* Paquet debian: http://packages.debian.org/search?keywords=kino
«Kino has not been actively maintained since 2009. We encourage you to try other Linux video editors such as Shotcut, Kdenlive, Flowblade, OpenShot, PiTiVi, LiVES, and LightWorks.»

=== Open Movie Editor (inactif) ===
* Site officiel: http://www.openmovieeditor.org/
* Paquet debian: aucun ou trop vieux ( http://packages.debian.org/search?searchon=names&amp;keywords=open+movie )
Projet sans sortie officielle depuis 2009. Non testé.

== Editer en graphique (spécifiques) ==

=== Dvbcut ===
* Site officiel: http://dvbcut.sourceforge.net/
* Paquet debian: https://packages.debian.org/search?keywords=dvbcut
Permet d'extraire une partie d'un flux de transport MPEG tel que ceux reçus par Digital Video Broadcasting (DVB). Développement [http://www.mail-archive.com/dvbcut-devel%40lists.sourceforge.net/ calme] depuis 2007.

=== Mkvtoolnix ===
* Site officiel: http://www.bunkus.org/videotools/mkvtoolnix/
* Paquet Debian: http://packages.debian.org/search?keywords=mkvtoolnix</text>
      <sha1>lzp69l2mzv5u2xiz1u2m0g9eezziwav</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5585</id>
      <parentid>5584</parentid>
      <timestamp>2014-03-27T23:30:31Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Notes sur la rédaction de cette page */ + manip video temps réel</comment>
      <text xml:space="preserve" bytes="12465">{{Ébauche|L'édition et l'encodage de vidéos}}

= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

== Notes sur la rédaction de cette page ==
* Le but de cette page est de '''recenser''' les outils, en présentant éventuellement succintement quelques usages. Les usages plus poussés pourraient être détaillés dans une sous-page/à part.
* On tiendra compte des spécificités de Debian: priorité aux logiciels déjà dans les dépots (ou s'intéresser à leur possible intégration), usage de codecs libres...
* La question de l'authoring (création de DVD), ainsi que du rip (extraction) ne sont pas abordées dans cette page, mais ici: [[DVD_edition]]
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video
* D'autres infos relatives à ces logiciels sont dispos sur: http://wiki.debian-facile.org/doc:media:media, http://doc.ubuntu-fr.org/montage_video, https://wiki.debian.org/fr/Multimedia
* Logiciels à ajouter: transcode, handbrake, hypervideo, dvd6clone... sûrement bien d'autres.
* Peut-être faire petite mention des logiciels de manipulation/traitement video en temps réel (fluxus, vvvv, puredata+gem...)

== Quelques indications sur l'encodage de videos ==

* https://en.wikipedia.org/wiki/HTML5_video#Browser_support, prise en charge par les différents navigateurs des codecs video avec la balise HTML5 &lt;video&gt;
* en format OGV, avec les réglages par défaut de ffmpeg2theora, comptez ~100Mo pour une video de 10 minutes.
* pour youtube ou les lecteurs flash, le format video recommandé est le suivant: conteneur mp4, video x264, audio AAC.

== Encoder en ligne de commande ==
'''mencoder''' et '''avconv''' (ou ffmpeg) sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui a remplacé ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

Note: il existe des interfaces graphiques (front-ends) pour mencoder et avconv, elles seront indiquées plus bas ([[Edition_Video#Encoder_en_graphique]]).

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
&lt;code bash&gt;
#liste les codecs audio
mencoder -oac help
#liste les codecs vidéos
mencoder -ovc help
&lt;/code&gt;

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
&lt;code bash&gt;
mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;
&lt;/code&gt;

==== Voir aussi ====
* Le paquet mencoder dans les dépots Debian: https://packages.debian.org/search?keywords=mencoder
* [http://doc.ubuntu-fr.org/mencoder Documentation mencoder sur Ubuntu-fr]
* [http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html Documentation mencoder sur mplayerhq]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Avconv a été intégré dans les dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Liste des formats de fichiers supportés par votre version de avconv ====
&lt;code&gt;avconv -formats&lt;/code&gt;
==== Liste des codecs audio et vidéo supportés par votre version de avconv ====
&lt;code&gt;avconv -codecs&lt;/code&gt;
==== Exemples d'utilisation ====
La page de manuel contient quelques exemples.
&lt;code&gt;man avconv&lt;/code&gt;
Un exemple très simple pour convertir un fichier vidéo au format MP4 au format MKV
&lt;code&gt;avconv -i source.mp4 destination.mkv&lt;/code&gt;
Pour obtenir seulement une piste audio MP3 depuis un fichier video (la piste audio sera ré-encodée)
&lt;code&gt;avconv -i source.mp4 destination.mp3&lt;/code&gt;
Le même principe, mais extraire directement la piste audio *sans* la ré-encoder
&lt;code&gt;avconv -i source.mp4 -map 0:1 -c:a copy destination.aac&lt;/code&gt;
Extraire la piste vidéo seule (sans ré-encodage) depuis un fichier vidéo contenant aussi une piste audio
&lt;code&gt;avconv -i source.mp4 -an -c:v copy dest_nosound.mp4&lt;/code&gt;
Réunir une piste vidéo + une piste audio (sans ré-encoder, multiplexage seulement)
&lt;code&gt;avconv -i video.mp4 -i audio.aac -c copy video_finale.mp4&lt;/code&gt;
===== Pour capturer une vidéo (avec audio) depuis la webcam =====
&lt;code&gt;avconv -f alsa -i hw:1 -f video4linux2 -i /dev/video0 -ar 44100 -r 25 -s vga -pre:0 libx264-lossless_ultrafast -c:v libx264 -strict experimental monfichier.mkv&lt;/code&gt;
Dans cet exemple, un preset vidéo est utilisé : un mode sans perte de qualité avec compression très rapide. Le format du fichier en sortie est le .mkv (Matroska).
Ligne de commande à adapter en fonction de vos périphériques audio et vidéo.

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

== Encoder en graphique ==

=== Arista ===

Interface graphique (GTK) pour le transcodage (conversion) de vidéos. Une multitude de modèles de conversion (&quot;presets&quot;) fournis.

Paquet Debian: http://packages.debian.org/wheezy/arista

=== Transmageddon ===

Très simple d'utilisation

Paquet Debian: http://packages.debian.org/wheezy/transmageddon

=== VLC ===
VLC peut convertir/transcoder vos videos, qu'il s'agisse de flux en cours de lecture, ou de médias déjà existants.
Les manipulations de conversion se font depuis le menu Fichier puis &quot;Convertir/Enregistrer&quot;.

Consultez la documentation officielle pour d'autres infos: http://wiki.videolan.org/Documentation:Streaming_HowTo_New

Le jeu de codecs fournis avec Debian est bien sûr limité, donc tous les «profils» et choix proposés dans l'interface ne fonctionneront pas.
Les combinaisons entre les différentes méthodes d'encapsulation, codec video, codec audio, ne fonctionnent pas toutes, y compris celles indiquées dans les profils pré-enregistrés. Depuis la version 2.1.0, VLC est un peu plus clair sur les méthodes d'encapsulation qu'il sait gérer.

Combinaisons testées avec succès:
* H264 + Vorbis (MP4), avec VLC 2.1.0 (Jessie)
* VP80 + Vorbis (Webm), avec VLC 2.0.8 (Jessie)
* Theora + Vorbis (OGG), sous Wheezy
Combinaisons problématiques:
* Encodages en Dirac imparfaits (latence avec conteneur TS, saccades avec conteneur OGG...)
* Celles à base de MP3, de WMA, et bien d'autres...

=== Firefogg ===

Firefogg n'est pas un programme standard, mais une extension pour Iceweasel/Firefox, qui contient ffmpeg et ffmpeg2theora. Permet de convertir facilement, via une interface simple dans votre navigateur, des vidéos vers les formats ouverts pour le web : Ogg et WebM. Tout se fait en local sur votre machine.

Site officiel: http://firefogg.org/

=== Avidemux === 
Avidemux n'est pas disponible dans les dépots officiels de Debian, et cela est bien dommage, mais voici plusieurs approches pour tenter de répondre à ce problème:
==== Solution 1: dépots deb-multimedia ====
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ deb-multimedia]. Nous vous conseillons de prendre connaissance de [http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F cette entrée du FAQ Debian] si vous comptez l'utiliser.

Pour l'ajouter, voyez [[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | comment ajouter un dépôt tiers]] à votre système.

==== Solution 2: compiler depuis les sources ====
Lisez la documentation du wiki: http://www.avidemux.org/admWiki/doku.php?id=build:install_2.6

==== Solution 3: aider à intégrer avidemux dans Debian ====
Ca fait des années que l'outil existe, pourquoi n'est-il pas déjà dans Debian ?
* Existe-t-il une ITP ? Non, mais [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=203211#178 une RFP #203211] ([https://wiki.debian.org/RFP définition RFP]), en résumé, Avidemux utilise des patches en interne sur les librairies

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== MLT Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
* Documentation officielle: http://www.mltframework.org/bin/view/MLT/MltMelt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).
Remarque: la fraîcheur de l'outil et son utilisabilité n'ont pas été testés.

== Editer en graphique (généralistes) ==

Kdenlive, OpenShot Video Editor et Pitivi sont parmi les logiciels plebiscités.

=== Kdenlive ===
* Site officiel: http://kdenlive.org/
* Paquet debian: http://packages.debian.org/search?keywords=kdenlive
* [[wikipedia:Kdenlive]]
* http://wiki.debian-facile.org/doc:media:kdenlive
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== OpenShot Video Editor ===
* Site officiel: http://www.openshotvideo.com/
* Paquet debian: http://packages.debian.org/search?keywords=openshot
* [[wikipedia:OpenShot_Video_Editor]]
* http://wiki.debian-facile.org/doc:media:openshot
Il paraît que c'est bien.

=== Pitivi ===
* Site officiel: http://www.pitivi.org
* Paquet debian: http://packages.debian.org/search?keywords=pitivi
* http://wiki.debian-facile.org/doc:environnements:gnome:pitivi

Editeur video qui utilise GStreamer. Paraît que c'est bien aussi.

=== LiVES ===
* Site officiel: http://lives.sourceforge.net
* Paquet debian: http://packages.debian.org/search?keywords=lives
Davantage adapté au VJing.

=== Flowblade ===
* Site officiel: https://code.google.com/p/flowblade/
* Paquet debian: http://packages.debian.org/search?keywords=flowblade

=== Shotcut ===
* Site officiel: http://www.shotcut.org
* Absent des dépots Debian

=== Cinelerra et cinelerra CV ===
cinelerra existe en 2 versions. CV voulant dire &quot;Community Version&quot;.

* Site officiel de cinelerra: http://heroinewarrior.com/cinelerra.php
* Site officiel de cinelerra CV: http://cinelerra.org
* Paquet debian: absent des dépots officiels, présent dans le dépot Multimedia
* [[wikipedia:Cinelerra]]
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Lightworks ===
* Site officiel: http://www.lwks.com/
* Absent des dépots Debian. Proprio ?

=== Kino (à l'arrêt) ===
* Site officiel: http://www.kinodv.org/
* Paquet debian: http://packages.debian.org/search?keywords=kino
«Kino has not been actively maintained since 2009. We encourage you to try other Linux video editors such as Shotcut, Kdenlive, Flowblade, OpenShot, PiTiVi, LiVES, and LightWorks.»

=== Open Movie Editor (inactif) ===
* Site officiel: http://www.openmovieeditor.org/
* Paquet debian: aucun ou trop vieux ( http://packages.debian.org/search?searchon=names&amp;keywords=open+movie )
Projet sans sortie officielle depuis 2009. Non testé.

== Editer en graphique (spécifiques) ==

=== Dvbcut ===
* Site officiel: http://dvbcut.sourceforge.net/
* Paquet debian: https://packages.debian.org/search?keywords=dvbcut
Permet d'extraire une partie d'un flux de transport MPEG tel que ceux reçus par Digital Video Broadcasting (DVB). Développement [http://www.mail-archive.com/dvbcut-devel%40lists.sourceforge.net/ calme] depuis 2007.

=== Mkvtoolnix ===
* Site officiel: http://www.bunkus.org/videotools/mkvtoolnix/
* Paquet Debian: http://packages.debian.org/search?keywords=mkvtoolnix</text>
      <sha1>37okwchuqe33poyhuwxtwtreudbrafs</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5614</id>
      <parentid>5585</parentid>
      <timestamp>2014-05-11T11:34:03Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Encoder en graphique */ + tragtor</comment>
      <text xml:space="preserve" bytes="12619">{{Ébauche|L'édition et l'encodage de vidéos}}

= Logiciels d'édition/encodage de videos = 

Récapitulatif des solutions d'encodage et d'édition de videos.

== Notes sur la rédaction de cette page ==
* Le but de cette page est de '''recenser''' les outils, en présentant éventuellement succintement quelques usages. Les usages plus poussés pourraient être détaillés dans une sous-page/à part.
* On tiendra compte des spécificités de Debian: priorité aux logiciels déjà dans les dépots (ou s'intéresser à leur possible intégration), usage de codecs libres...
* La question de l'authoring (création de DVD), ainsi que du rip (extraction) ne sont pas abordées dans cette page, mais ici: [[DVD_edition]]
* Pour référence, une asso qui a produit un petit paquet de docs sur l'édition Video avec logiciels libres: http://lprod.org/wiki/doku.php/video
* D'autres infos relatives à ces logiciels sont dispos sur: http://wiki.debian-facile.org/doc:media:media, http://doc.ubuntu-fr.org/montage_video, https://wiki.debian.org/fr/Multimedia
* Logiciels à ajouter: transcode, handbrake, hypervideo, dvd6clone... sûrement bien d'autres.
* Peut-être faire petite mention des logiciels de manipulation/traitement video en temps réel (fluxus, vvvv, puredata+gem...)

== Quelques indications sur l'encodage de videos ==

* https://en.wikipedia.org/wiki/HTML5_video#Browser_support, prise en charge par les différents navigateurs des codecs video avec la balise HTML5 &lt;video&gt;
* en format OGV, avec les réglages par défaut de ffmpeg2theora, comptez ~100Mo pour une video de 10 minutes.
* pour youtube ou les lecteurs flash, le format video recommandé est le suivant: conteneur mp4, video x264, audio AAC.

== Encoder en ligne de commande ==
'''mencoder''' et '''avconv''' (ou ffmpeg) sont les grands classiques de l'encodage video sous Linux. 

'''avconv''' est un fork du projet ffmpeg, qui a remplacé ce dernier dans Debian à partir de Wheezy.

'''ffmpeg2theora''' a pour objectif de fournir une solution simple pour convertir en [https://fr.wikipedia.org/wiki/Theora Ogg Theora].

Note: il existe des interfaces graphiques (front-ends) pour mencoder et avconv, elles seront indiquées plus bas ([[Edition_Video#Encoder_en_graphique]]).

=== mencoder ===
Les codecs audios et vidéos sont sélectionnés respectivement avec l'option -oac et l'option -ovc.
Utilisez les commandes suivantes pour en obtenir la liste :
&lt;code bash&gt;
#liste les codecs audio
mencoder -oac help
#liste les codecs vidéos
mencoder -ovc help
&lt;/code&gt;

==== Un exemple d'utilisation ====
La commande suivante va convertir le fichier &quot;vidéo originale.mkv&quot; en un fichier &quot;vidéo finale.avi&quot;.

L'audio sera encodé en OGG/vorbis et la vidéo en xvid, avec un bitrate de 900.
&lt;code bash&gt;
mencoder -oac lavc -lavcopts acodec=vorbis -ovc lavc -lavcopts vcodec=libxvid:vbitrate=900 &quot;vidéo originale.mkv&quot; -o &quot;vidéo finale.avi&quot;
&lt;/code&gt;

==== Voir aussi ====
* Le paquet mencoder dans les dépots Debian: https://packages.debian.org/search?keywords=mencoder
* [http://doc.ubuntu-fr.org/mencoder Documentation mencoder sur Ubuntu-fr]
* [http://www.mplayerhq.hu/DOCS/HTML/fr/mencoder.html Documentation mencoder sur mplayerhq]

=== ffmpeg / avconv ===
Le projet avconv est un fork de ffmpeg. Avconv a été intégré dans les dépots à partir de Wheezy, en remplacement de ffmpeg.

Les deux outils sont vraisemblablement très similaires, donc la syntaxe décrite ci-dessous peut convenir à l'un comme à l'autre.

* Site officiel de avconv: https://libav.org
* Paquet Debian: http://packages.debian.org/search?keywords=libav-tools

* Site officiel de ffmpeg: http://ffmpeg.org/
* Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg
* http://doc.ubuntu-fr.org/ffmpeg

==== Liste des formats de fichiers supportés par votre version de avconv ====
&lt;code&gt;avconv -formats&lt;/code&gt;
==== Liste des codecs audio et vidéo supportés par votre version de avconv ====
&lt;code&gt;avconv -codecs&lt;/code&gt;
==== Exemples d'utilisation ====
La page de manuel contient quelques exemples.
&lt;code&gt;man avconv&lt;/code&gt;
Un exemple très simple pour convertir un fichier vidéo au format MP4 au format MKV
&lt;code&gt;avconv -i source.mp4 destination.mkv&lt;/code&gt;
Pour obtenir seulement une piste audio MP3 depuis un fichier video (la piste audio sera ré-encodée)
&lt;code&gt;avconv -i source.mp4 destination.mp3&lt;/code&gt;
Le même principe, mais extraire directement la piste audio *sans* la ré-encoder
&lt;code&gt;avconv -i source.mp4 -map 0:1 -c:a copy destination.aac&lt;/code&gt;
Extraire la piste vidéo seule (sans ré-encodage) depuis un fichier vidéo contenant aussi une piste audio
&lt;code&gt;avconv -i source.mp4 -an -c:v copy dest_nosound.mp4&lt;/code&gt;
Réunir une piste vidéo + une piste audio (sans ré-encoder, multiplexage seulement)
&lt;code&gt;avconv -i video.mp4 -i audio.aac -c copy video_finale.mp4&lt;/code&gt;
===== Pour capturer une vidéo (avec audio) depuis la webcam =====
&lt;code&gt;avconv -f alsa -i hw:1 -f video4linux2 -i /dev/video0 -ar 44100 -r 25 -s vga -pre:0 libx264-lossless_ultrafast -c:v libx264 -strict experimental monfichier.mkv&lt;/code&gt;
Dans cet exemple, un preset vidéo est utilisé : un mode sans perte de qualité avec compression très rapide. Le format du fichier en sortie est le .mkv (Matroska).
Ligne de commande à adapter en fonction de vos périphériques audio et vidéo.

=== ffmpeg2theora ===
Paquet Debian: http://packages.debian.org/search?keywords=ffmpeg2theora

ffmpeg2theora est un outil en ligne de commande permettant de décoder et encoder divers formats vidéo (tout ce que peut lire ffmpeg) en format Theora, un format d'encodage libre. Très pratique pour convertir une video prête à fonctionner avec la balise &lt;video&gt; de HTML5.

Très simple à utiliser, pour un usage classique, il suffit de l'invoquer comme suit:

&lt;code&gt;ffmpeg2theora nom_de_la_video_source.avi&lt;/code&gt;

Consultez le man pour les options spécifiques.

== Encoder en graphique ==

=== Arista ===

Interface graphique (GTK) pour le transcodage (conversion) de vidéos. Une multitude de modèles de conversion (&quot;presets&quot;) fournis.

Paquet Debian: http://packages.debian.org/wheezy/arista

=== Transmageddon ===

Très simple d'utilisation

Paquet Debian: http://packages.debian.org/wheezy/transmageddon

=== VLC ===
VLC peut convertir/transcoder vos videos, qu'il s'agisse de flux en cours de lecture, ou de médias déjà existants.
Les manipulations de conversion se font depuis le menu Fichier puis &quot;Convertir/Enregistrer&quot;.

Consultez la documentation officielle pour d'autres infos: http://wiki.videolan.org/Documentation:Streaming_HowTo_New

Le jeu de codecs fournis avec Debian est bien sûr limité, donc tous les «profils» et choix proposés dans l'interface ne fonctionneront pas.
Les combinaisons entre les différentes méthodes d'encapsulation, codec video, codec audio, ne fonctionnent pas toutes, y compris celles indiquées dans les profils pré-enregistrés. Depuis la version 2.1.0, VLC est un peu plus clair sur les méthodes d'encapsulation qu'il sait gérer.

Combinaisons testées avec succès:
* H264 + Vorbis (MP4), avec VLC 2.1.0 (Jessie)
* VP80 + Vorbis (Webm), avec VLC 2.0.8 (Jessie)
* Theora + Vorbis (OGG), sous Wheezy
Combinaisons problématiques:
* Encodages en Dirac imparfaits (latence avec conteneur TS, saccades avec conteneur OGG...)
* Celles à base de MP3, de WMA, et bien d'autres...

=== Firefogg ===

Firefogg n'est pas un programme standard, mais une extension pour Iceweasel/Firefox, qui contient ffmpeg et ffmpeg2theora. Permet de convertir facilement, via une interface simple dans votre navigateur, des vidéos vers les formats ouverts pour le web : Ogg et WebM. Tout se fait en local sur votre machine.

Site officiel: http://firefogg.org/

=== Avidemux === 
Avidemux n'est pas disponible dans les dépots officiels de Debian, et cela est bien dommage, mais voici plusieurs approches pour tenter de répondre à ce problème:
==== Solution 1: dépots deb-multimedia ====
Avidemux est disponible dans les dépôts non-officiels [http://deb-multimedia.org/ deb-multimedia]. Nous vous conseillons de prendre connaissance de [http://wiki.debian.org/DebianMultimedia/FAQ#There_is_.27Debian_Multimedia_Maintainers.27_and_.27deb-multimedia.org.27._So_what.27s_the_difference.3F cette entrée du FAQ Debian] si vous comptez l'utiliser.

Pour l'ajouter, voyez [[Sources_de_paquets_:_les_bases#les_d.C3.A9p.C3.B4ts_tiers.2C_le_fichier_preferences | comment ajouter un dépôt tiers]] à votre système.

==== Solution 2: compiler depuis les sources ====
Lisez la documentation du wiki: http://www.avidemux.org/admWiki/doku.php?id=build:install_2.6

==== Solution 3: aider à intégrer avidemux dans Debian ====
Ca fait des années que l'outil existe, pourquoi n'est-il pas déjà dans Debian ?
* Existe-t-il une ITP ? Non, mais [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=203211#178 une RFP #203211] ([https://wiki.debian.org/RFP définition RFP]), en résumé, Avidemux utilise des patches en interne sur les librairies

=== Mais aussi ... ===

[http://la-vache-libre.org/tragtor-un-gui-pour-ffmpeg-qui-depote/ Tragtor], un front-end pour ffmpeg (absent des dépots Debian)

== Editer en ligne de commande ==
Il paraît que c'est possible ...

=== MLT Melt ===
* Paquet Debian: http://packages.debian.org/search?keywords=melt
* Documentation officielle: http://www.mltframework.org/bin/view/MLT/MltMelt
Melt est une implémentation en ligne de commande du framework d'édition video [http://www.mltframework.org MLT] (également utilisé par kdenlive et d'autres).
Remarque: la fraîcheur de l'outil et son utilisabilité n'ont pas été testés.

== Editer en graphique (généralistes) ==

Kdenlive, OpenShot Video Editor et Pitivi sont parmi les logiciels plebiscités.

=== Kdenlive ===
* Site officiel: http://kdenlive.org/
* Paquet debian: http://packages.debian.org/search?keywords=kdenlive
* [[wikipedia:Kdenlive]]
* http://wiki.debian-facile.org/doc:media:kdenlive
Une des solutions les plus complètes et les moins affreuses. Dépendante des librairies KDE.

=== OpenShot Video Editor ===
* Site officiel: http://www.openshotvideo.com/
* Paquet debian: http://packages.debian.org/search?keywords=openshot
* [[wikipedia:OpenShot_Video_Editor]]
* http://wiki.debian-facile.org/doc:media:openshot
Il paraît que c'est bien.

=== Pitivi ===
* Site officiel: http://www.pitivi.org
* Paquet debian: http://packages.debian.org/search?keywords=pitivi
* http://wiki.debian-facile.org/doc:environnements:gnome:pitivi

Editeur video qui utilise GStreamer. Paraît que c'est bien aussi.

=== LiVES ===
* Site officiel: http://lives.sourceforge.net
* Paquet debian: http://packages.debian.org/search?keywords=lives
Davantage adapté au VJing.

=== Flowblade ===
* Site officiel: https://code.google.com/p/flowblade/
* Paquet debian: http://packages.debian.org/search?keywords=flowblade

=== Shotcut ===
* Site officiel: http://www.shotcut.org
* Absent des dépots Debian

=== Cinelerra et cinelerra CV ===
cinelerra existe en 2 versions. CV voulant dire &quot;Community Version&quot;.

* Site officiel de cinelerra: http://heroinewarrior.com/cinelerra.php
* Site officiel de cinelerra CV: http://cinelerra.org
* Paquet debian: absent des dépots officiels, présent dans le dépot Multimedia
* [[wikipedia:Cinelerra]]
Des airs d'usine à gaz, se positionne sur un terrain professionnel mais hélas peu commode à utiliser.

=== Lightworks ===
* Site officiel: http://www.lwks.com/
* Absent des dépots Debian. Proprio ?

=== Kino (à l'arrêt) ===
* Site officiel: http://www.kinodv.org/
* Paquet debian: http://packages.debian.org/search?keywords=kino
«Kino has not been actively maintained since 2009. We encourage you to try other Linux video editors such as Shotcut, Kdenlive, Flowblade, OpenShot, PiTiVi, LiVES, and LightWorks.»

=== Open Movie Editor (inactif) ===
* Site officiel: http://www.openmovieeditor.org/
* Paquet debian: aucun ou trop vieux ( http://packages.debian.org/search?searchon=names&amp;keywords=open+movie )
Projet sans sortie officielle depuis 2009. Non testé.

== Editer en graphique (spécifiques) ==

=== Dvbcut ===
* Site officiel: http://dvbcut.sourceforge.net/
* Paquet debian: https://packages.debian.org/search?keywords=dvbcut
Permet d'extraire une partie d'un flux de transport MPEG tel que ceux reçus par Digital Video Broadcasting (DVB). Développement [http://www.mail-archive.com/dvbcut-devel%40lists.sourceforge.net/ calme] depuis 2007.

=== Mkvtoolnix ===
* Site officiel: http://www.bunkus.org/videotools/mkvtoolnix/
* Paquet Debian: http://packages.debian.org/search?keywords=mkvtoolnix</text>
      <sha1>5j3jnqi3gu93ywd47cmo8tdle42ph7l</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Ejabberd</title>
    <ns>0</ns>
    <id>506</id>
    <revision>
      <id>1991</id>
      <timestamp>2010-08-20T09:17:54Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « Ceci est un brouillon en cours, merci de ne pas faire de modifications pour l'instant.  &lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px... »</comment>
      <text xml:space="preserve" bytes="9214">Ceci est un brouillon en cours, merci de ne pas faire de modifications pour l'instant.

&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|ejabberd}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


Installation et configuration de ejabberd sur Lenny

Tutoriel destiné à l'installation d'un serveur jabberd (ejabberd) à destination d'un réseau local uniquement. Les question de sécurité et d'ouverture de votre serveur jabberd sur l'extérieur ne seront pas traitées.
L'installation de ejabberd et son administration (grâce à son interface web) sont simples. Ejabberd permet de créer facilement un serveur permettant les échanges au travers du protocole XMPP, il est stable, supporte des charges importantes Ejabberd est un serveur Jabber écrit en Erlang.

== Installation ==

 # apt-get install ejabberd
 ...
 Les paquets supplémentaires suivants seront installés :
 erlang-base erlang-nox libsctp1 lksctp-tools odbcinst1debian1 unixodbc
 ... 

Vérification de l'installation :
 $ erl
 Erlang (BEAM) emulator version 5.6.3 [source] [64-bit] [smp:2] [async-threads:0] [kernel-poll:false]  Eshell V5.6.3  (abort with ^G)
 
 1&gt;  

Pour sortir de la console erlang CTRL+C + a + entrée.

== Configuration ==

EJabberd se configure via le fichier /etc/ejabberd/ejabberd.cfg

Nous verrons plus loin comment utiliser l'interface web accessible par &quot;http://votreserveur:5280/admin&quot; pour réaliser les tâches d'administration.

Avant tout, il faut créer un certificat valide pour le domaine que vous allez utiliser :

 # mv /etc/ejabberd/ejabberd.pem /etc/ejabberd/edjabberd.pem.orig
 $ openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out server.pem
 $ openssl rsa -in privkey.pem -out privkey.pem
 $ cat privkey.pem &gt;&gt; server.pem
 $ rm privkey.pem
 # mv server.pem /etc/ejabberd/ejabberd.pem 

Répondez à la question &quot;Common Name&quot; avec votre nom de domaine, c'est primordial :

 Organizational Unit Name (eg, section) []:
 Common Name (eg, YOUR name) []:votredomaine.ltd

Notez (ou retenez) le mot de passe demandé au début, même si vous ne devriez plus en avoir besoin par la suite.

Pensez à ouvrir dans votre firewall les ports TCP 5222 et 5269 pour le protocole XMPP, ainsi que le port TCP 5280 pour l'interface web d'administration.

Sauvegarder le fichier de configuration avant d'y faire la moindre modification (prudence...)

# cp /etc/ejabberd/ejabberd.cfg /etc/ejabberd/ejabberd.cfg.orig 

Complétez maintenant le fichier ejabberd.cfg comme suit :

# cat /etc/ejabberd/ejabberd.cfg

&lt;code erlang&gt;
{acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}.
{acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}.
{hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}.
{loglevel, 3}.
{registration_watchers, [&quot;admin@isalo.org&quot;]}.

{listen,
 [
  {5222, ejabberd_c2s, [
                       {access, c2s},
                       {shaper, c2s_shaper},
                       {max_stanza_size, 65536},
                       starttls, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                       ]},
  {5269, ejabberd_s2s_in, [
                          {shaper, s2s_shaper},
                          {max_stanza_size, 131072}
                          ]},
  {5280, ejabberd_http, [
                        http_poll,
                        web_admin
                        ]}
]}.

{s2s_use_starttls, true}.
{s2s_certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}.
{auth_method, internal}.
{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}.
{acl, local, {user_regexp, &quot;&quot;}}.

{access, max_user_sessions, [{10, all}]}.
{access, local, [{allow, local}]}.
{access, c2s, [{deny, blocked},
              {allow, all}]}.
{access, c2s_shaper, [{none, admin},
                     {normal, all}]}.
{access, s2s_shaper, [{fast, all}]}.
{access, announce, [{allow, admin}]}.
{access, configure, [{allow, admin}]}.
{access, muc_admin, [{allow, admin}]}.
{access, muc, [{allow, all}]}.
{access, register, [{allow, all}]}.
{access, pubsub_createnode, [{allow, all}]}.

{host_config, &quot;isalo.org&quot;,
 [
  {access, c2s, [{allow, admin}, {allow, all}]},
  {access, register, [{allow, all}]}  ] }.
                                   
{language, &quot;fr&quot;}.

{modules,
 [
  {mod_adhoc,    []},
  {mod_announce, [{access, announce}]},
 % requires mod_adhoc
  {mod_caps,     []},
  {mod_configure,[]},
 % requires mod_adhoc
  {mod_ctlextra, []},
  {mod_disco,    []},
  %%{mod_echo,
  [{host, &quot;echo.localhost&quot;}]},
  {mod_irc,      []},
  {mod_last,     []},
  {mod_muc,      [
                  %%{host, &quot;conference.@HOST@&quot;},
                  {access, muc},
                  {access_create, muc},
                  {access_persistent, muc},
                  {access_admin, muc_admin},
                  {max_users, 500}
                  ]},
  %%{mod_muc_log,[]},
  {mod_offline,  []},
  {mod_privacy,  []},
  {mod_private,  []},
  {mod_proxy65,  [
                  {access, local},
                  {shaper, c2s_shaper}
                  ]},
   {mod_pubsub,   [ % requires mod_caps
                   {access_createnode, pubsub_createnode},
                   {plugins, [&quot;default&quot;, &quot;pep&quot;]}
                  ]},
   {mod_register, [
                   {welcome_message, {&quot;Bienvenue!&quot;,
                                      &quot;Bienvenue sur le Serveur Jabber de isalo.org. &quot;
                                      &quot;Pour plus d'information à propos de Jabber :&quot;
                                      &quot;http://www.jabber.org&quot;}},
                    {access, register}
                  ]},
   {mod_roster,   []},
   {mod_stats,    []},
   {mod_time,     []},
   {mod_vcard,    []},
   {mod_version,  []}
]}.
&lt;/code&gt;


Petite explication...
Le fichier de configuration ci-dessus est en erlang.
Le caractère % est utilisé, et non # ou ; pour commenter une ligne.
Toutes les blocs terminent par un &quot;.&quot;, il est indispensable!

* le nom du compte administrateur du serveur
 {acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}. {acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}. 

* Les nom d'hôte utilisé :
 {hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}. 

* L'adresse de courriel qui va recevoir les notifications de nouveaux comptes :
 {registration_watchers, [&quot;admin@isalo.org&quot;]}. 

* Le niveau de log (de 0 à 5) - 3 est raisonnable :
 {loglevel, 3}. 

* Les ports utilisés :

Il est recommandé de laisser ceux par défaut :
 {listen,  [   {5222, ejabberd_c2s, [                         {access, c2s},                         {shaper, c2s_shaper},                         {max_stanza_size, 65536},                         starttls, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}                         ]},   {5269, ejabberd_s2s_in, [                            {shaper, s2s_shaper},                            {max_stanza_size, 131072}                           ]},   {5280, ejabberd_http, [                          http_poll,                          web_admin                         ]}  ]}. 

Je vous laisse découvrir vous-même la suite (A faire!), il s'agit des règles d'accès au serveur (les ACL). Tel quel la configuration ci-dessus permet à n'importe qui de s'enregistrer? Comme ce serveur n'est destiné qu'a votre réseau local, pas de problèmes!

Nous allons maintenant ajouter à notre DNS (ici Bind9) les enregistrement nécessaires :

 _xmpp-client._tcp.isalo.org.	86400	IN	SRV	20 0 5222 isalo.org.
 _xmpp-server._tcp.isalo.org.	86400	IN	SRV	20 0 5269 isalo.org.

Nous enregistrons l'utilisateur qui fera l'administration;
Création de l'utilisateur &quot;laurent&quot; du domaine &quot;localhost&quot; avec le mot de passe &quot;motdepasse&quot; :
 # ejabberdctl register laurent localhost motdepasse

Si vous souhaitez par la suite supprimer un utilisateur :
 # ejabberdctl unregister laurent localhost 

Nous redémarrons le service
 # /etc/init.d/ejabberd restart  

Nous nous rendons maintenant à l'adresse suivante pour la console d'administration :

http://127.0.0.1:5280/admin
Connexion avec laurent@localhost motdepasse


[[Fichier:Capture d'écran - 20082010 - 10-51-08.png]]

Vérifions nos domaines :


[[Fichier:Capture d'écran - 20082010 - 11-00-13.png]]

Nous avons bien deux domaines : localhost et isalo.org

== Utilisation ==

Nous allons maintenant tester notre serveur ejabberd...

J'utilise Pidgin, il en existe beaucoup d'autres...

Il suffit de se s'enregistrer via le nom de domaine renseigné dans la configuration, en choisissant de créer (nous l'avons autorisé dans la configuration).
Si ce n'est pas le cas, il vous faudra le faire au travers de l'interface Web d'administration


[[Fichier:Capture d'écran - 20082010 - 11-22-39.png]]


[[Fichier:Capture d'écran - 20082010 - 11-24-27.png]]


[[Fichier:Capture d'écran - 20082010 - 11-25-24.png]]


[[Fichier:Capture d'écran - 20082010 - 11-26-14.png]]


[[Fichier:Capture d'écran - 20082010 - 11-32-17.png]]


[[Fichier:Capture d'écran - 20082010 - 11-33-21.png]]


Il nous reste à vérifier que les utilisateurs sont bien inscrits :

[[Fichier:Capture d'écran - 20082010 - 11-35-52.png]]


== TODO ==

Support Mysql, Protocoles, Conclusion.

[[Utilisateur:Lol|Lol]] 20 août 2010 à 12:17 (EAT)</text>
      <sha1>ec0t5lqv09un9lkn68uk5xyd2gbcp6d</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1992</id>
      <parentid>1991</parentid>
      <timestamp>2010-08-20T11:07:15Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="9516">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|ejabberd}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;

'''Installation et configuration de ejabberd sur Lenny'''

Ce tutoriel destiné à l'installation d'un serveur jabberd (ejabberd) à destination d'un réseau local uniquement.
Les question de sécurité et d'ouverture de votre serveur jabberd sur l'extérieur ne seront pas traitées.

L'installation de ejabberd et son administration (grâce à son interface web) sont simples.
Ejabberd permet de créer facilement un serveur permettant les échanges au travers du protocole XMPP, il est stable, supporte des charges importantes.
Ejabberd est un serveur Jabber écrit en Erlang.

== Installation ==

 # apt-get install ejabberd
 ...
 Les paquets supplémentaires suivants seront installés :
 erlang-base erlang-nox libsctp1 lksctp-tools odbcinst1debian1 unixodbc
 ... 

Vérification de l'installation :
 $ erl
 Erlang (BEAM) emulator version 5.6.3 [source] [64-bit] [smp:2] [async-threads:0] [kernel-poll:false]  Eshell V5.6.3  (abort with ^G)
 
 1&gt;  

Pour sortir de la console erlang CTRL+C + a + entrée.

== Configuration ==

EJabberd se configure dans le fichier /etc/ejabberd/ejabberd.cfg

Nous verrons plus loin comment utiliser l'interface web accessible par 'http://votreserveur:5280/admin' pour réaliser les tâches d'administration.

Avant tout, il faut créer un certificat valide pour le domaine que vous allez utiliser :

 # mv /etc/ejabberd/ejabberd.pem /etc/ejabberd/edjabberd.pem.orig
 $ openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out server.pem
 $ openssl rsa -in privkey.pem -out privkey.pem
 $ cat privkey.pem &gt;&gt; server.pem
 $ rm privkey.pem
 # mv server.pem /etc/ejabberd/ejabberd.pem 

Répondez à la question &quot;Common Name&quot; avec votre nom de domaine, c'est primordial car lors de la connexion de vos clients, il leur sera demandé de valider le certificat:

 Organizational Unit Name (eg, section) []:
 Common Name (eg, YOUR name) []:votredomaine.ltd

Notez (ou retenez) le mot de passe demandé au début, même si vous ne devriez plus en avoir besoin par la suite.

Pensez à ouvrir dans votre firewall les ports TCP 5222 et 5269 pour le protocole XMPP, ainsi que le port TCP 5280 pour l'interface web d'administration.

Sauvegarder le fichier de configuration avant d'y faire la moindre modification (prudence...)

# cp /etc/ejabberd/ejabberd.cfg /etc/ejabberd/ejabberd.cfg.orig 

=== le fichier ejabberd.cfg ===

Complétez maintenant le fichier ejabberd.cfg comme suit :

# cat /etc/ejabberd/ejabberd.cfg

&lt;code erlang&gt;
{acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}.
{acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}.
{hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}.
{loglevel, 3}.
{registration_watchers, [&quot;admin@isalo.org&quot;]}.

{listen,
 [
  {5222, ejabberd_c2s, [
                       {access, c2s},
                       {shaper, c2s_shaper},
                       {max_stanza_size, 65536},
                       starttls, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                       ]},
  {5269, ejabberd_s2s_in, [
                          {shaper, s2s_shaper},
                          {max_stanza_size, 131072}
                          ]},
  {5280, ejabberd_http, [
                        http_poll,
                        web_admin
                        ]}
]}.

{s2s_use_starttls, true}.
{s2s_certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}.
{auth_method, internal}.
{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}.
{acl, local, {user_regexp, &quot;&quot;}}.

{access, max_user_sessions, [{10, all}]}.
{access, local, [{allow, local}]}.
{access, c2s, [{deny, blocked}, {allow, all}]}.
{access, c2s_shaper, [{none, admin}, {normal, all}]}.
{access, s2s_shaper, [{fast, all}]}.
{access, announce, [{allow, admin}]}.
{access, configure, [{allow, admin}]}.
{access, muc_admin, [{allow, admin}]}.
{access, muc, [{allow, all}]}.
{access, register, [{allow, all}]}.
{access, pubsub_createnode, [{allow, all}]}.

{host_config, &quot;isalo.org&quot;,
 [
  {access, c2s, [{allow, admin}, {allow, all}]},
  {access, register, [{allow, all}]}  ] }.
                                   
{language, &quot;fr&quot;}.

{modules,
 [
  {mod_adhoc,    []},
  {mod_announce, [{access, announce}]}, %requires mod_adhoc
  {mod_caps,     []},
  {mod_configure,[]}, %requires mod_adhoc
  {mod_ctlextra, []},
  {mod_disco,    []},
  %%{mod_echo,   [{host, &quot;echo.localhost&quot;}]},
  {mod_irc,      []},
  {mod_last,     []},
  {mod_muc,      [
                  %%{host, &quot;conference.@HOST@&quot;},
                  {access, muc},
                  {access_create, muc},
                  {access_persistent, muc},
                  {access_admin, muc_admin},
                  {max_users, 500}
                  ]},
  %%{mod_muc_log,[]},
  {mod_offline,  []},
  {mod_privacy,  []},
  {mod_private,  []},
  {mod_proxy65,  [
                  {access, local},
                  {shaper, c2s_shaper}
                  ]},
   {mod_pubsub,   [ % requires mod_caps
                   {access_createnode, pubsub_createnode},
                   {plugins, [&quot;default&quot;, &quot;pep&quot;]}
                  ]},
   {mod_register, [
                   {welcome_message, {&quot;Bienvenue!&quot;,
                                      &quot;Bienvenue sur le Serveur Jabber de isalo.org. &quot;
                                      &quot;Pour plus d'information à propos de Jabber :&quot;
                                      &quot;http://www.jabber.org&quot;}},
                   {access, register}
                  ]},
   {mod_roster,   []},
   {mod_stats,    []},
   {mod_time,     []},
   {mod_vcard,    []},
   {mod_version,  []}
]}.
&lt;/code&gt;

=== Petite explication rapide... ===

Le fichier de configuration ci-dessus est en erlang.
Le caractère % est utilisé, et non # ou ; pour commenter une ligne.
Toutes les blocs terminent par un &quot;.&quot;, il est indispensable!

* le nom du compte administrateur du serveur
 {acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}. {acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}. 

* Les nom d'hôte utilisé :
 {hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}. 

* L'adresse de courriel qui va recevoir les notifications de nouveaux comptes :
 {registration_watchers, [&quot;admin@isalo.org&quot;]}. 

* Le niveau de log (de 0 à 5) - 3 est raisonnable :
 {loglevel, 3}. 

* Les ports utilisés :

Il est recommandé de laisser ceux par défaut :

 {listen,
  [
   {5222, ejabberd_c2s, [
                         {access, c2s},
                         {shaper, c2s_shaper},
                         {max_stanza_size, 65536},
                         starttls, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                         ]},
   {5269, ejabberd_s2s_in, [
                         {shaper, s2s_shaper},
                         {max_stanza_size, 131072}
                         ]},
   {5280, ejabberd_http, [
                         http_poll,
                         web_admin 
                         ]}
  ]}. 

Je vous laisse découvrir vous-même la suite (A faire!), il s'agit des règles d'accès au serveur (les ACL).
Tel quelle la configuration ci-dessus permet à n'importe qui de s'enregistrer.
Comme ce serveur n'est destiné qu'a votre réseau local, pas de problèmes pour l'instant!

=== DNS ===

Nous allons maintenant ajouter à notre DNS (ici Bind9) les enregistrement nécessaires :
Attention, mon serveur DNS local n'ést pas sur la machine ou tourne ejabberd. J'ai donc précisé sur quelle machine trouver les services (nas.isalo.org)

 _xmpp-client._tcp.isalo.org.	86400	IN	SRV	20 0 5222 nas.isalo.org.
 _xmpp-server._tcp.isalo.org.	86400	IN	SRV	20 0 5269 nas.isalo.org.

=== Ajout d'un administrateur ===

Nous enregistrons l'utilisateur qui fera l'administration;
Création de l'utilisateur &quot;laurent&quot; du domaine &quot;localhost&quot; avec le mot de passe &quot;motdepasse&quot; :

 # ejabberdctl register laurent localhost motdepasse

Si vous souhaitez par la suite supprimer un utilisateur :

 # ejabberdctl unregister laurent localhost 

Nous redémarrons le service
 # /etc/init.d/ejabberd restart  

=== Premier contact avec l'interface Web ===

Nous nous rendons maintenant à l'adresse suivante pour la console d'administration :

http://127.0.0.1:5280/admin
Connexion avec laurent@localhost motdepasse


[[Fichier:Capture d'écran - 20082010 - 10-51-08.png]]

Vérifions nos domaines :


[[Fichier:Capture d'écran - 20082010 - 11-00-13.png]]

Nous avons bien deux domaines : localhost et isalo.org

== Utilisation ==

Nous allons maintenant tester notre serveur ejabberd...

J'utilise Pidgin, il en existe beaucoup d'autres...

Il suffit de se s'enregistrer via le nom de domaine renseigné dans la configuration, en choisissant de créer (nous l'avons autorisé dans la configuration).
Si ce n'est pas le cas, il vous faudra le faire au travers de l'interface Web d'administration


[[Fichier:Capture d'écran - 20082010 - 11-22-39.png]]


[[Fichier:Capture d'écran - 20082010 - 11-24-27.png]]


[[Fichier:Capture d'écran - 20082010 - 11-25-24.png]]


[[Fichier:Capture d'écran - 20082010 - 11-26-14.png]]


[[Fichier:Capture d'écran - 20082010 - 11-32-17.png]]


[[Fichier:Capture d'écran - 20082010 - 11-33-21.png]]


Il nous reste à vérifier que les utilisateurs sont bien inscrits :

[[Fichier:Capture d'écran - 20082010 - 11-35-52.png]]


== TODO ==

Support Mysql, Protocoles, Conclusion.

[[Utilisateur:Lol|Lol]] 20 août 2010 à 12:17 (EAT)</text>
      <sha1>sihkxq3h8c7izlqd56j1oz82pmgai76</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2003</id>
      <parentid>1992</parentid>
      <timestamp>2010-08-20T15:34:58Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="10481">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|ejabberd}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;

'''Installation et configuration de ejabberd sur Lenny'''

Ce tutoriel destiné à l'installation d'un serveur jabberd (ejabberd) à destination d'un réseau local uniquement.
Les question de sécurité et d'ouverture de votre serveur jabberd sur l'extérieur ne seront pas traitées.

L'installation de ejabberd et son administration (grâce à son interface web) sont simples.
Ejabberd permet de créer facilement un serveur permettant les échanges au travers du protocole XMPP, il est stable, supporte des charges importantes.
Ejabberd est un serveur Jabber écrit en Erlang.

== Installation ==

 # apt-get install ejabberd
 ...
 Les paquets supplémentaires suivants seront installés :
 erlang-base erlang-nox libsctp1 lksctp-tools odbcinst1debian1 unixodbc
 ... 

Vérification de l'installation :
 $ erl
 Erlang (BEAM) emulator version 5.6.3 [source] [64-bit] [smp:2] [async-threads:0] [kernel-poll:false]  Eshell V5.6.3  (abort with ^G)
 
 1&gt;  

Pour sortir de la console erlang CTRL+C + a + entrée.

== Configuration ==

EJabberd se configure dans le fichier /etc/ejabberd/ejabberd.cfg

Nous verrons plus loin comment utiliser l'interface web accessible par 'http://votreserveur:5280/admin' pour réaliser les tâches d'administration.

Avant tout, il faut créer un certificat valide pour le domaine que vous allez utiliser :

 # mv /etc/ejabberd/ejabberd.pem /etc/ejabberd/edjabberd.pem.orig
 $ openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out server.pem
 $ openssl rsa -in privkey.pem -out privkey.pem
 $ cat privkey.pem &gt;&gt; server.pem
 $ rm privkey.pem
 # mv server.pem /etc/ejabberd/ejabberd.pem 

Répondez à la question &quot;Common Name&quot; avec votre nom de domaine, c'est primordial car lors de la connexion de vos clients, il leur sera demandé de valider le certificat:

 Organizational Unit Name (eg, section) []:
 Common Name (eg, YOUR name) []:votredomaine.ltd

Notez (ou retenez) le mot de passe demandé au début, même si vous ne devriez plus en avoir besoin par la suite.

Pensez à ouvrir dans votre firewall les ports TCP 5222 et 5269 pour le protocole XMPP, ainsi que le port TCP 5280 pour l'interface web d'administration.

Sauvegarder le fichier de configuration avant d'y faire la moindre modification (prudence...)

 # cp /etc/ejabberd/ejabberd.cfg /etc/ejabberd/ejabberd.cfg.orig 

=== le fichier ejabberd.cfg ===

Complétez maintenant le fichier ejabberd.cfg comme suit :

 # cat /etc/ejabberd/ejabberd.cfg

&lt;code erlang&gt;
{acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}.
{acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}.
{hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}.
{loglevel, 3}.
{registration_watchers, [&quot;admin@isalo.org&quot;]}.

{listen,
 [
  {5222, ejabberd_c2s, [
                       {access, c2s},
                       {shaper, c2s_shaper},
                       {max_stanza_size, 65536},
                       starttls, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                       ]},
  {5269, ejabberd_s2s_in, [
                          {shaper, s2s_shaper},
                          {max_stanza_size, 131072}
                          ]},
  {5280, ejabberd_http, [
                        http_poll,
                        web_admin
                        ]}
]}.

{s2s_use_starttls, true}.
{s2s_certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}.
{auth_method, internal}.
{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}.
{acl, local, {user_regexp, &quot;&quot;}}.

{access, max_user_sessions, [{10, all}]}.
{access, local, [{allow, local}]}.
{access, c2s, [{deny, blocked}, {allow, all}]}.
{access, c2s_shaper, [{none, admin}, {normal, all}]}.
{access, s2s_shaper, [{fast, all}]}.
{access, announce, [{allow, admin}]}.
{access, configure, [{allow, admin}]}.
{access, muc_admin, [{allow, admin}]}.
{access, muc, [{allow, all}]}.
{access, register, [{allow, all}]}.
{access, pubsub_createnode, [{allow, all}]}.

{host_config, &quot;isalo.org&quot;,
 [
  {access, c2s, [{allow, admin}, {allow, all}]},
  {access, register, [{allow, all}]}  ] }.
                                   
{language, &quot;fr&quot;}.

{modules,
 [
  {mod_adhoc,    []},
  {mod_announce, [{access, announce}]}, %requires mod_adhoc
  {mod_caps,     []},
  {mod_configure,[]}, %requires mod_adhoc
  {mod_ctlextra, []},
  {mod_disco,    []},
  %%{mod_echo,   [{host, &quot;echo.localhost&quot;}]},
  {mod_irc,      []},
  {mod_last,     []},
  {mod_muc,      [
                  %%{host, &quot;conference.@HOST@&quot;},
                  {access, muc},
                  {access_create, muc},
                  {access_persistent, muc},
                  {access_admin, muc_admin},
                  {max_users, 500}
                  ]},
  %%{mod_muc_log,[]},
  {mod_offline,  []},
  {mod_privacy,  []},
  {mod_private,  []},
  {mod_proxy65,  [
                  {access, local},
                  {shaper, c2s_shaper}
                  ]},
   {mod_pubsub,   [ % requires mod_caps
                   {access_createnode, pubsub_createnode},
                   {plugins, [&quot;default&quot;, &quot;pep&quot;]}
                  ]},
   {mod_register, [
                   {welcome_message, {&quot;Bienvenue!&quot;,
                                      &quot;Bienvenue sur le Serveur Jabber de isalo.org. &quot;
                                      &quot;Pour plus d'information à propos de Jabber :&quot;
                                      &quot;http://www.jabber.org&quot;}},
                   {access, register}
                  ]},
   {mod_roster,   []},
   {mod_stats,    []},
   {mod_time,     []},
   {mod_vcard,    []},
   {mod_version,  []}
]}.
&lt;/code&gt;

=== Petite explication rapide... ===

Le fichier de configuration ci-dessus est en erlang.
Le caractère % est utilisé, et non # ou ; pour commenter une ligne.
Toutes les blocs terminent par un &quot;.&quot;, il est indispensable!

* le nom du compte administrateur du serveur
 {acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}. {acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}. 

* Les nom d'hôte utilisé :
 {hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}. 

* L'adresse de courriel qui va recevoir les notifications de nouveaux comptes :
 {registration_watchers, [&quot;admin@isalo.org&quot;]}. 

* Le niveau de log (de 0 à 5) - 3 est raisonnable :
 {loglevel, 3}. 

* Les ports utilisés :

Il est recommandé de laisser ceux par défaut :

 {listen,
  [
   {5222, ejabberd_c2s, [
                         {access, c2s},
                         {shaper, c2s_shaper},
                         {max_stanza_size, 65536},
                         starttls, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                         ]},
   {5269, ejabberd_s2s_in, [
                         {shaper, s2s_shaper},
                         {max_stanza_size, 131072}
                         ]},
   {5280, ejabberd_http, [
                         http_poll,
                         web_admin 
                         ]}
  ]}. 

Je vous laisse découvrir vous-même la suite (A faire!), il s'agit des règles d'accès au serveur (les ACL).
Tel quelle la configuration ci-dessus permet à n'importe qui de s'enregistrer.
Comme ce serveur n'est destiné qu'a votre réseau local, pas de problèmes pour l'instant!

=== DNS ===

Nous allons maintenant ajouter à notre DNS (ici Bind9) les enregistrement nécessaires :
Attention, mon serveur DNS local n'ést pas sur la machine ou tourne ejabberd. J'ai donc précisé sur quelle machine trouver les services (nas.isalo.org)

 _xmpp-client._tcp.isalo.org.	86400	IN	SRV	20 0 5222 nas.isalo.org.
 _xmpp-server._tcp.isalo.org.	86400	IN	SRV	20 0 5269 nas.isalo.org.
 _jabber._tcp                     900   IN      SRV      5 0 5269 nas.isalo.org.

Pour vérifier que votre DNS répond bien :

 $ dig -t srv _xmpp-client._tcp.isalo.org
 ; &lt;&lt;&gt;&gt; DiG 9.7.1-P2 &lt;&lt;&gt;&gt; -t srv _xmpp-client._tcp.isalo.org
 ;; global options: +cmd
 ;; Got answer:
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 53575
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
 ;; QUESTION SECTION:
 ;_xmpp-client._tcp.isalo.org.	IN	SRV
 ;; ANSWER SECTION:
 '''_xmpp-client._tcp.isalo.org. 86400 IN	SRV	20 0 5222 nas.isalo.org.'''
 ;; AUTHORITY SECTION:
 isalo.org.		38400	IN	NS	lol.isalo.org.
 ;; ADDITIONAL SECTION:
 '''nas.isalo.org.		38400	IN	A	192.168.0.6'''
 lol.isalo.org.		38400	IN	A	192.168.0.1
 ;; Query time: 0 msec ;;
 SERVER: 192.168.0.1#53(192.168.0.1)
 ;; WHEN: Fri Aug 20 18:27:24 2010 ;; MSG SIZE  rcvd: 128 

Vous devez obtenir les deux lignes 'grasses' : le nom de la machine qui héberge le serveur jabber et son IP.

=== Ajout d'un administrateur ===

Nous enregistrons l'utilisateur qui fera l'administration;
Création de l'utilisateur &quot;laurent&quot; du domaine &quot;localhost&quot; avec le mot de passe &quot;motdepasse&quot; :

 # ejabberdctl register laurent localhost motdepasse

Si vous souhaitez par la suite supprimer un utilisateur :

 # ejabberdctl unregister laurent localhost 

Nous redémarrons le service
 # /etc/init.d/ejabberd restart  

=== Premier contact avec l'interface Web ===

Nous nous rendons maintenant à l'adresse suivante pour la console d'administration :

http://127.0.0.1:5280/admin
Connexion avec laurent@localhost motdepasse


[[Fichier:Capture d'écran - 20082010 - 10-51-08.png]]

Vérifions nos domaines :


[[Fichier:Capture d'écran - 20082010 - 11-00-13.png]]

Nous avons bien deux domaines : localhost et isalo.org

== Utilisation ==

Nous allons maintenant tester notre serveur ejabberd...

J'utilise Pidgin, il en existe beaucoup d'autres...

Il suffit de se s'enregistrer via le nom de domaine renseigné dans la configuration, en choisissant de créer (nous l'avons autorisé dans la configuration).
Si ce n'est pas le cas, il vous faudra le faire au travers de l'interface Web d'administration


[[Fichier:Capture d'écran - 20082010 - 11-22-39.png]]


[[Fichier:Capture d'écran - 20082010 - 11-24-27.png]]


[[Fichier:Capture d'écran - 20082010 - 11-25-24.png]]


[[Fichier:Capture d'écran - 20082010 - 11-26-14.png]]


[[Fichier:Capture d'écran - 20082010 - 11-32-17.png]]


[[Fichier:Capture d'écran - 20082010 - 11-33-21.png]]


Il nous reste à vérifier que les utilisateurs sont bien inscrits :

[[Fichier:Capture d'écran - 20082010 - 11-35-52.png]]


== TODO ==

Support Mysql, Protocoles, Conclusion.

[[Utilisateur:Lol|Lol]] 20 août 2010 à 12:17 (EAT)</text>
      <sha1>3ajr1dgbmx4c53qs065oijbo2zp0a5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2004</id>
      <parentid>2003</parentid>
      <timestamp>2010-08-20T15:35:28Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* DNS */</comment>
      <text xml:space="preserve" bytes="10482">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|ejabberd}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;

'''Installation et configuration de ejabberd sur Lenny'''

Ce tutoriel destiné à l'installation d'un serveur jabberd (ejabberd) à destination d'un réseau local uniquement.
Les question de sécurité et d'ouverture de votre serveur jabberd sur l'extérieur ne seront pas traitées.

L'installation de ejabberd et son administration (grâce à son interface web) sont simples.
Ejabberd permet de créer facilement un serveur permettant les échanges au travers du protocole XMPP, il est stable, supporte des charges importantes.
Ejabberd est un serveur Jabber écrit en Erlang.

== Installation ==

 # apt-get install ejabberd
 ...
 Les paquets supplémentaires suivants seront installés :
 erlang-base erlang-nox libsctp1 lksctp-tools odbcinst1debian1 unixodbc
 ... 

Vérification de l'installation :
 $ erl
 Erlang (BEAM) emulator version 5.6.3 [source] [64-bit] [smp:2] [async-threads:0] [kernel-poll:false]  Eshell V5.6.3  (abort with ^G)
 
 1&gt;  

Pour sortir de la console erlang CTRL+C + a + entrée.

== Configuration ==

EJabberd se configure dans le fichier /etc/ejabberd/ejabberd.cfg

Nous verrons plus loin comment utiliser l'interface web accessible par 'http://votreserveur:5280/admin' pour réaliser les tâches d'administration.

Avant tout, il faut créer un certificat valide pour le domaine que vous allez utiliser :

 # mv /etc/ejabberd/ejabberd.pem /etc/ejabberd/edjabberd.pem.orig
 $ openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out server.pem
 $ openssl rsa -in privkey.pem -out privkey.pem
 $ cat privkey.pem &gt;&gt; server.pem
 $ rm privkey.pem
 # mv server.pem /etc/ejabberd/ejabberd.pem 

Répondez à la question &quot;Common Name&quot; avec votre nom de domaine, c'est primordial car lors de la connexion de vos clients, il leur sera demandé de valider le certificat:

 Organizational Unit Name (eg, section) []:
 Common Name (eg, YOUR name) []:votredomaine.ltd

Notez (ou retenez) le mot de passe demandé au début, même si vous ne devriez plus en avoir besoin par la suite.

Pensez à ouvrir dans votre firewall les ports TCP 5222 et 5269 pour le protocole XMPP, ainsi que le port TCP 5280 pour l'interface web d'administration.

Sauvegarder le fichier de configuration avant d'y faire la moindre modification (prudence...)

 # cp /etc/ejabberd/ejabberd.cfg /etc/ejabberd/ejabberd.cfg.orig 

=== le fichier ejabberd.cfg ===

Complétez maintenant le fichier ejabberd.cfg comme suit :

 # cat /etc/ejabberd/ejabberd.cfg

&lt;code erlang&gt;
{acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}.
{acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}.
{hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}.
{loglevel, 3}.
{registration_watchers, [&quot;admin@isalo.org&quot;]}.

{listen,
 [
  {5222, ejabberd_c2s, [
                       {access, c2s},
                       {shaper, c2s_shaper},
                       {max_stanza_size, 65536},
                       starttls, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                       ]},
  {5269, ejabberd_s2s_in, [
                          {shaper, s2s_shaper},
                          {max_stanza_size, 131072}
                          ]},
  {5280, ejabberd_http, [
                        http_poll,
                        web_admin
                        ]}
]}.

{s2s_use_starttls, true}.
{s2s_certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}.
{auth_method, internal}.
{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}.
{acl, local, {user_regexp, &quot;&quot;}}.

{access, max_user_sessions, [{10, all}]}.
{access, local, [{allow, local}]}.
{access, c2s, [{deny, blocked}, {allow, all}]}.
{access, c2s_shaper, [{none, admin}, {normal, all}]}.
{access, s2s_shaper, [{fast, all}]}.
{access, announce, [{allow, admin}]}.
{access, configure, [{allow, admin}]}.
{access, muc_admin, [{allow, admin}]}.
{access, muc, [{allow, all}]}.
{access, register, [{allow, all}]}.
{access, pubsub_createnode, [{allow, all}]}.

{host_config, &quot;isalo.org&quot;,
 [
  {access, c2s, [{allow, admin}, {allow, all}]},
  {access, register, [{allow, all}]}  ] }.
                                   
{language, &quot;fr&quot;}.

{modules,
 [
  {mod_adhoc,    []},
  {mod_announce, [{access, announce}]}, %requires mod_adhoc
  {mod_caps,     []},
  {mod_configure,[]}, %requires mod_adhoc
  {mod_ctlextra, []},
  {mod_disco,    []},
  %%{mod_echo,   [{host, &quot;echo.localhost&quot;}]},
  {mod_irc,      []},
  {mod_last,     []},
  {mod_muc,      [
                  %%{host, &quot;conference.@HOST@&quot;},
                  {access, muc},
                  {access_create, muc},
                  {access_persistent, muc},
                  {access_admin, muc_admin},
                  {max_users, 500}
                  ]},
  %%{mod_muc_log,[]},
  {mod_offline,  []},
  {mod_privacy,  []},
  {mod_private,  []},
  {mod_proxy65,  [
                  {access, local},
                  {shaper, c2s_shaper}
                  ]},
   {mod_pubsub,   [ % requires mod_caps
                   {access_createnode, pubsub_createnode},
                   {plugins, [&quot;default&quot;, &quot;pep&quot;]}
                  ]},
   {mod_register, [
                   {welcome_message, {&quot;Bienvenue!&quot;,
                                      &quot;Bienvenue sur le Serveur Jabber de isalo.org. &quot;
                                      &quot;Pour plus d'information à propos de Jabber :&quot;
                                      &quot;http://www.jabber.org&quot;}},
                   {access, register}
                  ]},
   {mod_roster,   []},
   {mod_stats,    []},
   {mod_time,     []},
   {mod_vcard,    []},
   {mod_version,  []}
]}.
&lt;/code&gt;

=== Petite explication rapide... ===

Le fichier de configuration ci-dessus est en erlang.
Le caractère % est utilisé, et non # ou ; pour commenter une ligne.
Toutes les blocs terminent par un &quot;.&quot;, il est indispensable!

* le nom du compte administrateur du serveur
 {acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}. {acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}. 

* Les nom d'hôte utilisé :
 {hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}. 

* L'adresse de courriel qui va recevoir les notifications de nouveaux comptes :
 {registration_watchers, [&quot;admin@isalo.org&quot;]}. 

* Le niveau de log (de 0 à 5) - 3 est raisonnable :
 {loglevel, 3}. 

* Les ports utilisés :

Il est recommandé de laisser ceux par défaut :

 {listen,
  [
   {5222, ejabberd_c2s, [
                         {access, c2s},
                         {shaper, c2s_shaper},
                         {max_stanza_size, 65536},
                         starttls, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                         ]},
   {5269, ejabberd_s2s_in, [
                         {shaper, s2s_shaper},
                         {max_stanza_size, 131072}
                         ]},
   {5280, ejabberd_http, [
                         http_poll,
                         web_admin 
                         ]}
  ]}. 

Je vous laisse découvrir vous-même la suite (A faire!), il s'agit des règles d'accès au serveur (les ACL).
Tel quelle la configuration ci-dessus permet à n'importe qui de s'enregistrer.
Comme ce serveur n'est destiné qu'a votre réseau local, pas de problèmes pour l'instant!

=== DNS ===

Nous allons maintenant ajouter à notre DNS (ici Bind9) les enregistrements nécessaires :
Attention, mon serveur DNS local n'ést pas sur la machine ou tourne ejabberd. J'ai donc précisé sur quelle machine trouver les services (nas.isalo.org)

 _xmpp-client._tcp.isalo.org.	86400	IN	SRV	20 0 5222 nas.isalo.org.
 _xmpp-server._tcp.isalo.org.	86400	IN	SRV	20 0 5269 nas.isalo.org.
 _jabber._tcp                     900   IN      SRV      5 0 5269 nas.isalo.org.

Pour vérifier que votre DNS répond bien :

 $ dig -t srv _xmpp-client._tcp.isalo.org
 ; &lt;&lt;&gt;&gt; DiG 9.7.1-P2 &lt;&lt;&gt;&gt; -t srv _xmpp-client._tcp.isalo.org
 ;; global options: +cmd
 ;; Got answer:
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 53575
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
 ;; QUESTION SECTION:
 ;_xmpp-client._tcp.isalo.org.	IN	SRV
 ;; ANSWER SECTION:
 '''_xmpp-client._tcp.isalo.org. 86400 IN	SRV	20 0 5222 nas.isalo.org.'''
 ;; AUTHORITY SECTION:
 isalo.org.		38400	IN	NS	lol.isalo.org.
 ;; ADDITIONAL SECTION:
 '''nas.isalo.org.		38400	IN	A	192.168.0.6'''
 lol.isalo.org.		38400	IN	A	192.168.0.1
 ;; Query time: 0 msec ;;
 SERVER: 192.168.0.1#53(192.168.0.1)
 ;; WHEN: Fri Aug 20 18:27:24 2010 ;; MSG SIZE  rcvd: 128 

Vous devez obtenir les deux lignes 'grasses' : le nom de la machine qui héberge le serveur jabber et son IP.

=== Ajout d'un administrateur ===

Nous enregistrons l'utilisateur qui fera l'administration;
Création de l'utilisateur &quot;laurent&quot; du domaine &quot;localhost&quot; avec le mot de passe &quot;motdepasse&quot; :

 # ejabberdctl register laurent localhost motdepasse

Si vous souhaitez par la suite supprimer un utilisateur :

 # ejabberdctl unregister laurent localhost 

Nous redémarrons le service
 # /etc/init.d/ejabberd restart  

=== Premier contact avec l'interface Web ===

Nous nous rendons maintenant à l'adresse suivante pour la console d'administration :

http://127.0.0.1:5280/admin
Connexion avec laurent@localhost motdepasse


[[Fichier:Capture d'écran - 20082010 - 10-51-08.png]]

Vérifions nos domaines :


[[Fichier:Capture d'écran - 20082010 - 11-00-13.png]]

Nous avons bien deux domaines : localhost et isalo.org

== Utilisation ==

Nous allons maintenant tester notre serveur ejabberd...

J'utilise Pidgin, il en existe beaucoup d'autres...

Il suffit de se s'enregistrer via le nom de domaine renseigné dans la configuration, en choisissant de créer (nous l'avons autorisé dans la configuration).
Si ce n'est pas le cas, il vous faudra le faire au travers de l'interface Web d'administration


[[Fichier:Capture d'écran - 20082010 - 11-22-39.png]]


[[Fichier:Capture d'écran - 20082010 - 11-24-27.png]]


[[Fichier:Capture d'écran - 20082010 - 11-25-24.png]]


[[Fichier:Capture d'écran - 20082010 - 11-26-14.png]]


[[Fichier:Capture d'écran - 20082010 - 11-32-17.png]]


[[Fichier:Capture d'écran - 20082010 - 11-33-21.png]]


Il nous reste à vérifier que les utilisateurs sont bien inscrits :

[[Fichier:Capture d'écran - 20082010 - 11-35-52.png]]


== TODO ==

Support Mysql, Protocoles, Conclusion.

[[Utilisateur:Lol|Lol]] 20 août 2010 à 12:17 (EAT)</text>
      <sha1>f5ycqgjycjl085a88za45ers476uhn4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2005</id>
      <parentid>2004</parentid>
      <timestamp>2010-08-21T04:18:30Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="10993">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|ejabberd}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;

'''Installation et configuration de ejabberd sur Lenny'''

Ce tutoriel destiné à l'installation d'un serveur jabberd (ejabberd) à destination d'un réseau local uniquement.
Les question de sécurité et d'ouverture de votre serveur jabberd sur l'extérieur ne seront pas traitées.

L'installation de ejabberd et son administration (grâce à son interface web) sont simples.
Ejabberd permet de créer facilement un serveur permettant les échanges au travers du protocole XMPP, il est stable, supporte des charges importantes.
Ejabberd est un serveur Jabber écrit en Erlang.

== Installation ==

 # apt-get install ejabberd
 ...
 Les paquets supplémentaires suivants seront installés :
 erlang-base erlang-nox libsctp1 lksctp-tools odbcinst1debian1 unixodbc
 ... 

Vérification de l'installation :
 $ erl
 Erlang (BEAM) emulator version 5.6.3 [source] [64-bit] [smp:2] [async-threads:0] [kernel-poll:false]  Eshell V5.6.3  (abort with ^G)
 
 1&gt;  

Pour sortir de la console erlang CTRL+C + a + entrée.

== Configuration ==

EJabberd se configure dans le fichier /etc/ejabberd/ejabberd.cfg

Nous verrons plus loin comment utiliser l'interface web accessible par 'http://votreserveur:5280/admin' pour réaliser les tâches d'administration.

Avant tout, il faut créer un certificat valide pour le domaine que vous allez utiliser :

 # mv /etc/ejabberd/ejabberd.pem /etc/ejabberd/edjabberd.pem.orig
 $ openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out server.pem
 $ openssl rsa -in privkey.pem -out privkey.pem
 $ cat privkey.pem &gt;&gt; server.pem
 $ rm privkey.pem
 # mv server.pem /etc/ejabberd/ejabberd.pem 

Répondez à la question &quot;Common Name&quot; avec votre nom de domaine, c'est primordial car lors de la connexion de vos clients, il leur sera demandé de valider le certificat:

 Organizational Unit Name (eg, section) []:
 Common Name (eg, YOUR name) []:votredomaine.ltd

Notez (ou retenez) le mot de passe demandé au début, même si vous ne devriez plus en avoir besoin par la suite.

Pensez à ouvrir dans votre firewall les ports TCP 5222 et 5269 pour le protocole XMPP, ainsi que le port TCP 5280 pour l'interface web d'administration.

Sauvegarder le fichier de configuration avant d'y faire la moindre modification (prudence...)

 # cp /etc/ejabberd/ejabberd.cfg /etc/ejabberd/ejabberd.cfg.orig 

=== le fichier ejabberd.cfg ===

Complétez maintenant le fichier ejabberd.cfg comme suit :

 # cat /etc/ejabberd/ejabberd.cfg

&lt;code erlang&gt;
{acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}.
{acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}.
{hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}.
{loglevel, 3}.
{registration_watchers, [&quot;admin@isalo.org&quot;]}.

{listen,
 [
  {5222, ejabberd_c2s, [
                       {access, c2s},
                       {shaper, c2s_shaper},
                       {max_stanza_size, 65536},
                       starttls, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                       ]},
  {5269, ejabberd_s2s_in, [
                          {shaper, s2s_shaper},
                          {max_stanza_size, 131072}
                          ]},
  {5280, ejabberd_http, [
                        http_poll,
                        web_admin
                        ]}
]}.

{s2s_use_starttls, true}.
{s2s_certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}.
{auth_method, internal}.
{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}.
{acl, local, {user_regexp, &quot;&quot;}}.

{access, max_user_sessions, [{10, all}]}.
{access, local, [{allow, local}]}.
{access, c2s, [{deny, blocked}, {allow, all}]}.
{access, c2s_shaper, [{none, admin}, {normal, all}]}.
{access, s2s_shaper, [{fast, all}]}.
{access, announce, [{allow, admin}]}.
{access, configure, [{allow, admin}]}.
{access, muc_admin, [{allow, admin}]}.
{access, muc, [{allow, all}]}.
{access, register, [{allow, all}]}.
{access, pubsub_createnode, [{allow, all}]}.

{host_config, &quot;isalo.org&quot;,
 [
  {access, c2s, [{allow, admin}, {allow, all}]},
  {access, register, [{allow, all}]}  ] }.
                                   
{language, &quot;fr&quot;}.

{modules,
 [
  {mod_adhoc,    []},
  {mod_announce, [{access, announce}]}, %requires mod_adhoc
  {mod_caps,     []},
  {mod_configure,[]}, %requires mod_adhoc
  {mod_ctlextra, []},
  {mod_disco,    []},
  %%{mod_echo,   [{host, &quot;echo.localhost&quot;}]},
  {mod_irc,      []},
  {mod_last,     []},
  {mod_muc,      [
                  %%{host, &quot;conference.@HOST@&quot;},
                  {access, muc},
                  {access_create, muc},
                  {access_persistent, muc},
                  {access_admin, muc_admin},
                  {max_users, 500}
                  ]},
  %%{mod_muc_log,[]},
  {mod_offline,  []},
  {mod_privacy,  []},
  {mod_private,  []},
  {mod_proxy65,  [
                  {access, local},
                  {shaper, c2s_shaper}
                  ]},
   {mod_pubsub,   [ % requires mod_caps
                   {access_createnode, pubsub_createnode},
                   {plugins, [&quot;default&quot;, &quot;pep&quot;]}
                  ]},
   {mod_register, [
                   {welcome_message, {&quot;Bienvenue!&quot;,
                                      &quot;Bienvenue sur le Serveur Jabber de isalo.org. &quot;
                                      &quot;Pour plus d'information à propos de Jabber :&quot;
                                      &quot;http://www.jabber.org&quot;}},
                   {access, register}
                  ]},
   {mod_roster,   []},
   {mod_stats,    []},
   {mod_time,     []},
   {mod_vcard,    []},
   {mod_version,  []}
]}.
&lt;/code&gt;

=== Petite explication rapide... ===

Le fichier de configuration ci-dessus est en erlang.
Le caractère % est utilisé, et non # ou ; pour commenter une ligne.
Toutes les blocs terminent par un &quot;.&quot;, il est indispensable!

* le nom du compte administrateur du serveur
 {acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}. {acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}. 

* Les nom d'hôte utilisé :
 {hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}. 

* L'adresse de courriel qui va recevoir les notifications de nouveaux comptes :
 {registration_watchers, [&quot;admin@isalo.org&quot;]}. 

* Le niveau de log (de 0 à 5) - 3 est raisonnable :
 {loglevel, 3}. 

* Les ports utilisés :

Il est recommandé de laisser ceux par défaut :

 {listen,
  [
   {5222, ejabberd_c2s, [
                         {access, c2s},
                         {shaper, c2s_shaper},
                         {max_stanza_size, 65536},
                         starttls, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                         ]},
   {5269, ejabberd_s2s_in, [
                         {shaper, s2s_shaper},
                         {max_stanza_size, 131072}
                         ]},
   {5280, ejabberd_http, [
                         http_poll,
                         web_admin 
                         ]}
  ]}. 

Je vous laisse découvrir vous-même la suite (A faire!), il s'agit des règles d'accès au serveur (les ACL).
Tel quelle la configuration ci-dessus permet à n'importe qui de s'enregistrer.
Comme ce serveur n'est destiné qu'a votre réseau local, pas de problèmes pour l'instant!

=== DNS ===

Nous allons maintenant ajouter à notre DNS (ici Bind9) les enregistrements nécessaires :
Attention, mon serveur DNS local n'ést pas sur la machine ou tourne ejabberd. J'ai donc précisé sur quelle machine trouver les services (nas.isalo.org)

 _xmpp-client._tcp.isalo.org.	86400	IN	SRV	20 0 5222 nas.isalo.org.
 _xmpp-server._tcp.isalo.org.	86400	IN	SRV	20 0 5269 nas.isalo.org.
 _jabber._tcp                     900   IN      SRV      5 0 5269 nas.isalo.org.

Pour vérifier que votre DNS répond bien :

 $ dig -t srv _xmpp-client._tcp.isalo.org
 ; &lt;&lt;&gt;&gt; DiG 9.7.1-P2 &lt;&lt;&gt;&gt; -t srv _xmpp-client._tcp.isalo.org
 ;; global options: +cmd
 ;; Got answer:
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 53575
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
 ;; QUESTION SECTION:
 ;_xmpp-client._tcp.isalo.org.	IN	SRV
 ;; ANSWER SECTION:
 '''_xmpp-client._tcp.isalo.org. 86400 IN	SRV	20 0 5222 nas.isalo.org.'''
 ;; AUTHORITY SECTION:
 isalo.org.		38400	IN	NS	lol.isalo.org.
 ;; ADDITIONAL SECTION:
 '''nas.isalo.org.		38400	IN	A	192.168.0.6'''
 lol.isalo.org.		38400	IN	A	192.168.0.1
 ;; Query time: 0 msec ;;
 SERVER: 192.168.0.1#53(192.168.0.1)
 ;; WHEN: Fri Aug 20 18:27:24 2010 ;; MSG SIZE  rcvd: 128 

Vous devez obtenir les deux lignes 'grasses' : le nom de la machine qui héberge le serveur jabber et son IP.

=== Ajout d'un administrateur ===

Nous enregistrons l'utilisateur qui fera l'administration;
Création de l'utilisateur &quot;laurent&quot; du domaine &quot;localhost&quot; avec le mot de passe &quot;motdepasse&quot; :

 # ejabberdctl register laurent localhost motdepasse

Si vous souhaitez par la suite supprimer un utilisateur :

 # ejabberdctl unregister laurent localhost 

Nous redémarrons le service
 # /etc/init.d/ejabberd restart  

=== Premier contact avec l'interface Web ===

Nous nous rendons maintenant à l'adresse suivante pour la console d'administration :

http://127.0.0.1:5280/admin
Connexion avec laurent@localhost motdepasse


[[Fichier:Capture d'écran - 20082010 - 10-51-08.png]]

Vérifions nos domaines :


[[Fichier:Capture d'écran - 20082010 - 11-00-13.png]]

Nous avons bien deux domaines : localhost et isalo.org

== Utilisation ==

Nous allons maintenant tester notre serveur ejabberd...

J'utilise Pidgin, il en existe beaucoup d'autres...

Il suffit de se s'enregistrer via le nom de domaine renseigné dans la configuration, en choisissant de créer (nous l'avons autorisé dans la configuration).
Si ce n'est pas le cas, il vous faudra le faire au travers de l'interface Web d'administration


[[Fichier:Capture d'écran - 20082010 - 11-22-39.png]]


[[Fichier:Capture d'écran - 20082010 - 11-24-27.png]]


[[Fichier:Capture d'écran - 20082010 - 11-25-24.png]]


[[Fichier:Capture d'écran - 20082010 - 11-26-14.png]]


[[Fichier:Capture d'écran - 20082010 - 11-32-17.png]]


[[Fichier:Capture d'écran - 20082010 - 11-33-21.png]]


Il nous reste à vérifier que les utilisateurs sont bien inscrits :

[[Fichier:Capture d'écran - 20082010 - 11-35-52.png]]

== Aller plus loin ==

ejabberd est soutenu par Process-one.

Voici [http://www.process-one.net/en/ejabberd/ le site officiel de ejabberd]

Voici [http://www.process-one.net/en/ejabberd/guide_en la documentation officielle] (Attention l'installation proposée dans cette documentation passe par un installeur qui n'est pas apt). Vous y trouverez de nombreuses astuces et réglages de votre configuration.

Beaucoup de modules sont disponibles pour augmenter les possibilités de votre serveur ejabberd (support mysql, support de nombreux autres protocoles, etc.)

[[Utilisateur:Lol|Lol]] 20 août 2010 à 12:17 (EAT)</text>
      <sha1>nx76bbutm7gwmuq7xgc5lu5j7qg30w1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2007</id>
      <parentid>2005</parentid>
      <timestamp>2010-08-21T05:06:24Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Aller plus loin */</comment>
      <text xml:space="preserve" bytes="11118">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|ejabberd}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;

'''Installation et configuration de ejabberd sur Lenny'''

Ce tutoriel destiné à l'installation d'un serveur jabberd (ejabberd) à destination d'un réseau local uniquement.
Les question de sécurité et d'ouverture de votre serveur jabberd sur l'extérieur ne seront pas traitées.

L'installation de ejabberd et son administration (grâce à son interface web) sont simples.
Ejabberd permet de créer facilement un serveur permettant les échanges au travers du protocole XMPP, il est stable, supporte des charges importantes.
Ejabberd est un serveur Jabber écrit en Erlang.

== Installation ==

 # apt-get install ejabberd
 ...
 Les paquets supplémentaires suivants seront installés :
 erlang-base erlang-nox libsctp1 lksctp-tools odbcinst1debian1 unixodbc
 ... 

Vérification de l'installation :
 $ erl
 Erlang (BEAM) emulator version 5.6.3 [source] [64-bit] [smp:2] [async-threads:0] [kernel-poll:false]  Eshell V5.6.3  (abort with ^G)
 
 1&gt;  

Pour sortir de la console erlang CTRL+C + a + entrée.

== Configuration ==

EJabberd se configure dans le fichier /etc/ejabberd/ejabberd.cfg

Nous verrons plus loin comment utiliser l'interface web accessible par 'http://votreserveur:5280/admin' pour réaliser les tâches d'administration.

Avant tout, il faut créer un certificat valide pour le domaine que vous allez utiliser :

 # mv /etc/ejabberd/ejabberd.pem /etc/ejabberd/edjabberd.pem.orig
 $ openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out server.pem
 $ openssl rsa -in privkey.pem -out privkey.pem
 $ cat privkey.pem &gt;&gt; server.pem
 $ rm privkey.pem
 # mv server.pem /etc/ejabberd/ejabberd.pem 

Répondez à la question &quot;Common Name&quot; avec votre nom de domaine, c'est primordial car lors de la connexion de vos clients, il leur sera demandé de valider le certificat:

 Organizational Unit Name (eg, section) []:
 Common Name (eg, YOUR name) []:votredomaine.ltd

Notez (ou retenez) le mot de passe demandé au début, même si vous ne devriez plus en avoir besoin par la suite.

Pensez à ouvrir dans votre firewall les ports TCP 5222 et 5269 pour le protocole XMPP, ainsi que le port TCP 5280 pour l'interface web d'administration.

Sauvegarder le fichier de configuration avant d'y faire la moindre modification (prudence...)

 # cp /etc/ejabberd/ejabberd.cfg /etc/ejabberd/ejabberd.cfg.orig 

=== le fichier ejabberd.cfg ===

Complétez maintenant le fichier ejabberd.cfg comme suit :

 # cat /etc/ejabberd/ejabberd.cfg

&lt;code erlang&gt;
{acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}.
{acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}.
{hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}.
{loglevel, 3}.
{registration_watchers, [&quot;admin@isalo.org&quot;]}.

{listen,
 [
  {5222, ejabberd_c2s, [
                       {access, c2s},
                       {shaper, c2s_shaper},
                       {max_stanza_size, 65536},
                       starttls, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                       ]},
  {5269, ejabberd_s2s_in, [
                          {shaper, s2s_shaper},
                          {max_stanza_size, 131072}
                          ]},
  {5280, ejabberd_http, [
                        http_poll,
                        web_admin
                        ]}
]}.

{s2s_use_starttls, true}.
{s2s_certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}.
{auth_method, internal}.
{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}.
{acl, local, {user_regexp, &quot;&quot;}}.

{access, max_user_sessions, [{10, all}]}.
{access, local, [{allow, local}]}.
{access, c2s, [{deny, blocked}, {allow, all}]}.
{access, c2s_shaper, [{none, admin}, {normal, all}]}.
{access, s2s_shaper, [{fast, all}]}.
{access, announce, [{allow, admin}]}.
{access, configure, [{allow, admin}]}.
{access, muc_admin, [{allow, admin}]}.
{access, muc, [{allow, all}]}.
{access, register, [{allow, all}]}.
{access, pubsub_createnode, [{allow, all}]}.

{host_config, &quot;isalo.org&quot;,
 [
  {access, c2s, [{allow, admin}, {allow, all}]},
  {access, register, [{allow, all}]}  ] }.
                                   
{language, &quot;fr&quot;}.

{modules,
 [
  {mod_adhoc,    []},
  {mod_announce, [{access, announce}]}, %requires mod_adhoc
  {mod_caps,     []},
  {mod_configure,[]}, %requires mod_adhoc
  {mod_ctlextra, []},
  {mod_disco,    []},
  %%{mod_echo,   [{host, &quot;echo.localhost&quot;}]},
  {mod_irc,      []},
  {mod_last,     []},
  {mod_muc,      [
                  %%{host, &quot;conference.@HOST@&quot;},
                  {access, muc},
                  {access_create, muc},
                  {access_persistent, muc},
                  {access_admin, muc_admin},
                  {max_users, 500}
                  ]},
  %%{mod_muc_log,[]},
  {mod_offline,  []},
  {mod_privacy,  []},
  {mod_private,  []},
  {mod_proxy65,  [
                  {access, local},
                  {shaper, c2s_shaper}
                  ]},
   {mod_pubsub,   [ % requires mod_caps
                   {access_createnode, pubsub_createnode},
                   {plugins, [&quot;default&quot;, &quot;pep&quot;]}
                  ]},
   {mod_register, [
                   {welcome_message, {&quot;Bienvenue!&quot;,
                                      &quot;Bienvenue sur le Serveur Jabber de isalo.org. &quot;
                                      &quot;Pour plus d'information à propos de Jabber :&quot;
                                      &quot;http://www.jabber.org&quot;}},
                   {access, register}
                  ]},
   {mod_roster,   []},
   {mod_stats,    []},
   {mod_time,     []},
   {mod_vcard,    []},
   {mod_version,  []}
]}.
&lt;/code&gt;

=== Petite explication rapide... ===

Le fichier de configuration ci-dessus est en erlang.
Le caractère % est utilisé, et non # ou ; pour commenter une ligne.
Toutes les blocs terminent par un &quot;.&quot;, il est indispensable!

* le nom du compte administrateur du serveur
 {acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}. {acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}. 

* Les nom d'hôte utilisé :
 {hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}. 

* L'adresse de courriel qui va recevoir les notifications de nouveaux comptes :
 {registration_watchers, [&quot;admin@isalo.org&quot;]}. 

* Le niveau de log (de 0 à 5) - 3 est raisonnable :
 {loglevel, 3}. 

* Les ports utilisés :

Il est recommandé de laisser ceux par défaut :

 {listen,
  [
   {5222, ejabberd_c2s, [
                         {access, c2s},
                         {shaper, c2s_shaper},
                         {max_stanza_size, 65536},
                         starttls, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                         ]},
   {5269, ejabberd_s2s_in, [
                         {shaper, s2s_shaper},
                         {max_stanza_size, 131072}
                         ]},
   {5280, ejabberd_http, [
                         http_poll,
                         web_admin 
                         ]}
  ]}. 

Je vous laisse découvrir vous-même la suite (A faire!), il s'agit des règles d'accès au serveur (les ACL).
Tel quelle la configuration ci-dessus permet à n'importe qui de s'enregistrer.
Comme ce serveur n'est destiné qu'a votre réseau local, pas de problèmes pour l'instant!

=== DNS ===

Nous allons maintenant ajouter à notre DNS (ici Bind9) les enregistrements nécessaires :
Attention, mon serveur DNS local n'ést pas sur la machine ou tourne ejabberd. J'ai donc précisé sur quelle machine trouver les services (nas.isalo.org)

 _xmpp-client._tcp.isalo.org.	86400	IN	SRV	20 0 5222 nas.isalo.org.
 _xmpp-server._tcp.isalo.org.	86400	IN	SRV	20 0 5269 nas.isalo.org.
 _jabber._tcp                     900   IN      SRV      5 0 5269 nas.isalo.org.

Pour vérifier que votre DNS répond bien :

 $ dig -t srv _xmpp-client._tcp.isalo.org
 ; &lt;&lt;&gt;&gt; DiG 9.7.1-P2 &lt;&lt;&gt;&gt; -t srv _xmpp-client._tcp.isalo.org
 ;; global options: +cmd
 ;; Got answer:
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 53575
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
 ;; QUESTION SECTION:
 ;_xmpp-client._tcp.isalo.org.	IN	SRV
 ;; ANSWER SECTION:
 '''_xmpp-client._tcp.isalo.org. 86400 IN	SRV	20 0 5222 nas.isalo.org.'''
 ;; AUTHORITY SECTION:
 isalo.org.		38400	IN	NS	lol.isalo.org.
 ;; ADDITIONAL SECTION:
 '''nas.isalo.org.		38400	IN	A	192.168.0.6'''
 lol.isalo.org.		38400	IN	A	192.168.0.1
 ;; Query time: 0 msec ;;
 SERVER: 192.168.0.1#53(192.168.0.1)
 ;; WHEN: Fri Aug 20 18:27:24 2010 ;; MSG SIZE  rcvd: 128 

Vous devez obtenir les deux lignes 'grasses' : le nom de la machine qui héberge le serveur jabber et son IP.

=== Ajout d'un administrateur ===

Nous enregistrons l'utilisateur qui fera l'administration;
Création de l'utilisateur &quot;laurent&quot; du domaine &quot;localhost&quot; avec le mot de passe &quot;motdepasse&quot; :

 # ejabberdctl register laurent localhost motdepasse

Si vous souhaitez par la suite supprimer un utilisateur :

 # ejabberdctl unregister laurent localhost 

Nous redémarrons le service
 # /etc/init.d/ejabberd restart  

=== Premier contact avec l'interface Web ===

Nous nous rendons maintenant à l'adresse suivante pour la console d'administration :

http://127.0.0.1:5280/admin
Connexion avec laurent@localhost motdepasse


[[Fichier:Capture d'écran - 20082010 - 10-51-08.png]]

Vérifions nos domaines :


[[Fichier:Capture d'écran - 20082010 - 11-00-13.png]]

Nous avons bien deux domaines : localhost et isalo.org

== Utilisation ==

Nous allons maintenant tester notre serveur ejabberd...

J'utilise Pidgin, il en existe beaucoup d'autres...

Il suffit de se s'enregistrer via le nom de domaine renseigné dans la configuration, en choisissant de créer (nous l'avons autorisé dans la configuration).
Si ce n'est pas le cas, il vous faudra le faire au travers de l'interface Web d'administration


[[Fichier:Capture d'écran - 20082010 - 11-22-39.png]]


[[Fichier:Capture d'écran - 20082010 - 11-24-27.png]]


[[Fichier:Capture d'écran - 20082010 - 11-25-24.png]]


[[Fichier:Capture d'écran - 20082010 - 11-26-14.png]]


[[Fichier:Capture d'écran - 20082010 - 11-32-17.png]]


[[Fichier:Capture d'écran - 20082010 - 11-33-21.png]]


Il nous reste à vérifier que les utilisateurs sont bien inscrits :

[[Fichier:Capture d'écran - 20082010 - 11-35-52.png]]

== Aller plus loin ==


[http://www.ejabberd.im/ le site officiel de ejabberd]

[http://www.ejabberd.im/tutorials De nombreux tutoriaux]

ejabberd est soutenu par Process-one - ''Site commercial''. [http://www.process-one.net/en/ejabberd/ www.process-one.net]

Voici [http://www.process-one.net/en/ejabberd/guide_en une documentation détaillée] (Attention l'installation proposée dans cette documentation passe par un installeur qui n'est pas apt). Vous y trouverez de nombreuses astuces et réglages pour votre configuration.

Beaucoup de modules sont disponibles pour augmenter les possibilités de votre serveur ejabberd (support mysql, support de nombreux autres protocoles, etc.)

[[Utilisateur:Lol|Lol]] 20 août 2010 à 12:17 (EAT)</text>
      <sha1>482b40xz46uaqdn0jcakmlgzfe6nl2u</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2008</id>
      <parentid>2007</parentid>
      <timestamp>2010-08-21T05:10:17Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Utilisation */</comment>
      <text xml:space="preserve" bytes="11336">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|ejabberd}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;

'''Installation et configuration de ejabberd sur Lenny'''

Ce tutoriel destiné à l'installation d'un serveur jabberd (ejabberd) à destination d'un réseau local uniquement.
Les question de sécurité et d'ouverture de votre serveur jabberd sur l'extérieur ne seront pas traitées.

L'installation de ejabberd et son administration (grâce à son interface web) sont simples.
Ejabberd permet de créer facilement un serveur permettant les échanges au travers du protocole XMPP, il est stable, supporte des charges importantes.
Ejabberd est un serveur Jabber écrit en Erlang.

== Installation ==

 # apt-get install ejabberd
 ...
 Les paquets supplémentaires suivants seront installés :
 erlang-base erlang-nox libsctp1 lksctp-tools odbcinst1debian1 unixodbc
 ... 

Vérification de l'installation :
 $ erl
 Erlang (BEAM) emulator version 5.6.3 [source] [64-bit] [smp:2] [async-threads:0] [kernel-poll:false]  Eshell V5.6.3  (abort with ^G)
 
 1&gt;  

Pour sortir de la console erlang CTRL+C + a + entrée.

== Configuration ==

EJabberd se configure dans le fichier /etc/ejabberd/ejabberd.cfg

Nous verrons plus loin comment utiliser l'interface web accessible par 'http://votreserveur:5280/admin' pour réaliser les tâches d'administration.

Avant tout, il faut créer un certificat valide pour le domaine que vous allez utiliser :

 # mv /etc/ejabberd/ejabberd.pem /etc/ejabberd/edjabberd.pem.orig
 $ openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out server.pem
 $ openssl rsa -in privkey.pem -out privkey.pem
 $ cat privkey.pem &gt;&gt; server.pem
 $ rm privkey.pem
 # mv server.pem /etc/ejabberd/ejabberd.pem 

Répondez à la question &quot;Common Name&quot; avec votre nom de domaine, c'est primordial car lors de la connexion de vos clients, il leur sera demandé de valider le certificat:

 Organizational Unit Name (eg, section) []:
 Common Name (eg, YOUR name) []:votredomaine.ltd

Notez (ou retenez) le mot de passe demandé au début, même si vous ne devriez plus en avoir besoin par la suite.

Pensez à ouvrir dans votre firewall les ports TCP 5222 et 5269 pour le protocole XMPP, ainsi que le port TCP 5280 pour l'interface web d'administration.

Sauvegarder le fichier de configuration avant d'y faire la moindre modification (prudence...)

 # cp /etc/ejabberd/ejabberd.cfg /etc/ejabberd/ejabberd.cfg.orig 

=== le fichier ejabberd.cfg ===

Complétez maintenant le fichier ejabberd.cfg comme suit :

 # cat /etc/ejabberd/ejabberd.cfg

&lt;code erlang&gt;
{acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}.
{acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}.
{hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}.
{loglevel, 3}.
{registration_watchers, [&quot;admin@isalo.org&quot;]}.

{listen,
 [
  {5222, ejabberd_c2s, [
                       {access, c2s},
                       {shaper, c2s_shaper},
                       {max_stanza_size, 65536},
                       starttls, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                       ]},
  {5269, ejabberd_s2s_in, [
                          {shaper, s2s_shaper},
                          {max_stanza_size, 131072}
                          ]},
  {5280, ejabberd_http, [
                        http_poll,
                        web_admin
                        ]}
]}.

{s2s_use_starttls, true}.
{s2s_certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}.
{auth_method, internal}.
{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}.
{acl, local, {user_regexp, &quot;&quot;}}.

{access, max_user_sessions, [{10, all}]}.
{access, local, [{allow, local}]}.
{access, c2s, [{deny, blocked}, {allow, all}]}.
{access, c2s_shaper, [{none, admin}, {normal, all}]}.
{access, s2s_shaper, [{fast, all}]}.
{access, announce, [{allow, admin}]}.
{access, configure, [{allow, admin}]}.
{access, muc_admin, [{allow, admin}]}.
{access, muc, [{allow, all}]}.
{access, register, [{allow, all}]}.
{access, pubsub_createnode, [{allow, all}]}.

{host_config, &quot;isalo.org&quot;,
 [
  {access, c2s, [{allow, admin}, {allow, all}]},
  {access, register, [{allow, all}]}  ] }.
                                   
{language, &quot;fr&quot;}.

{modules,
 [
  {mod_adhoc,    []},
  {mod_announce, [{access, announce}]}, %requires mod_adhoc
  {mod_caps,     []},
  {mod_configure,[]}, %requires mod_adhoc
  {mod_ctlextra, []},
  {mod_disco,    []},
  %%{mod_echo,   [{host, &quot;echo.localhost&quot;}]},
  {mod_irc,      []},
  {mod_last,     []},
  {mod_muc,      [
                  %%{host, &quot;conference.@HOST@&quot;},
                  {access, muc},
                  {access_create, muc},
                  {access_persistent, muc},
                  {access_admin, muc_admin},
                  {max_users, 500}
                  ]},
  %%{mod_muc_log,[]},
  {mod_offline,  []},
  {mod_privacy,  []},
  {mod_private,  []},
  {mod_proxy65,  [
                  {access, local},
                  {shaper, c2s_shaper}
                  ]},
   {mod_pubsub,   [ % requires mod_caps
                   {access_createnode, pubsub_createnode},
                   {plugins, [&quot;default&quot;, &quot;pep&quot;]}
                  ]},
   {mod_register, [
                   {welcome_message, {&quot;Bienvenue!&quot;,
                                      &quot;Bienvenue sur le Serveur Jabber de isalo.org. &quot;
                                      &quot;Pour plus d'information à propos de Jabber :&quot;
                                      &quot;http://www.jabber.org&quot;}},
                   {access, register}
                  ]},
   {mod_roster,   []},
   {mod_stats,    []},
   {mod_time,     []},
   {mod_vcard,    []},
   {mod_version,  []}
]}.
&lt;/code&gt;

=== Petite explication rapide... ===

Le fichier de configuration ci-dessus est en erlang.
Le caractère % est utilisé, et non # ou ; pour commenter une ligne.
Toutes les blocs terminent par un &quot;.&quot;, il est indispensable!

* le nom du compte administrateur du serveur
 {acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}. {acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}. 

* Les nom d'hôte utilisé :
 {hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}. 

* L'adresse de courriel qui va recevoir les notifications de nouveaux comptes :
 {registration_watchers, [&quot;admin@isalo.org&quot;]}. 

* Le niveau de log (de 0 à 5) - 3 est raisonnable :
 {loglevel, 3}. 

* Les ports utilisés :

Il est recommandé de laisser ceux par défaut :

 {listen,
  [
   {5222, ejabberd_c2s, [
                         {access, c2s},
                         {shaper, c2s_shaper},
                         {max_stanza_size, 65536},
                         starttls, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                         ]},
   {5269, ejabberd_s2s_in, [
                         {shaper, s2s_shaper},
                         {max_stanza_size, 131072}
                         ]},
   {5280, ejabberd_http, [
                         http_poll,
                         web_admin 
                         ]}
  ]}. 

Je vous laisse découvrir vous-même la suite (A faire!), il s'agit des règles d'accès au serveur (les ACL).
Tel quelle la configuration ci-dessus permet à n'importe qui de s'enregistrer.
Comme ce serveur n'est destiné qu'a votre réseau local, pas de problèmes pour l'instant!

=== DNS ===

Nous allons maintenant ajouter à notre DNS (ici Bind9) les enregistrements nécessaires :
Attention, mon serveur DNS local n'ést pas sur la machine ou tourne ejabberd. J'ai donc précisé sur quelle machine trouver les services (nas.isalo.org)

 _xmpp-client._tcp.isalo.org.	86400	IN	SRV	20 0 5222 nas.isalo.org.
 _xmpp-server._tcp.isalo.org.	86400	IN	SRV	20 0 5269 nas.isalo.org.
 _jabber._tcp                     900   IN      SRV      5 0 5269 nas.isalo.org.

Pour vérifier que votre DNS répond bien :

 $ dig -t srv _xmpp-client._tcp.isalo.org
 ; &lt;&lt;&gt;&gt; DiG 9.7.1-P2 &lt;&lt;&gt;&gt; -t srv _xmpp-client._tcp.isalo.org
 ;; global options: +cmd
 ;; Got answer:
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 53575
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
 ;; QUESTION SECTION:
 ;_xmpp-client._tcp.isalo.org.	IN	SRV
 ;; ANSWER SECTION:
 '''_xmpp-client._tcp.isalo.org. 86400 IN	SRV	20 0 5222 nas.isalo.org.'''
 ;; AUTHORITY SECTION:
 isalo.org.		38400	IN	NS	lol.isalo.org.
 ;; ADDITIONAL SECTION:
 '''nas.isalo.org.		38400	IN	A	192.168.0.6'''
 lol.isalo.org.		38400	IN	A	192.168.0.1
 ;; Query time: 0 msec ;;
 SERVER: 192.168.0.1#53(192.168.0.1)
 ;; WHEN: Fri Aug 20 18:27:24 2010 ;; MSG SIZE  rcvd: 128 

Vous devez obtenir les deux lignes 'grasses' : le nom de la machine qui héberge le serveur jabber et son IP.

=== Ajout d'un administrateur ===

Nous enregistrons l'utilisateur qui fera l'administration;
Création de l'utilisateur &quot;laurent&quot; du domaine &quot;localhost&quot; avec le mot de passe &quot;motdepasse&quot; :

 # ejabberdctl register laurent localhost motdepasse

Si vous souhaitez par la suite supprimer un utilisateur :

 # ejabberdctl unregister laurent localhost 

Nous redémarrons le service
 # /etc/init.d/ejabberd restart  

=== Premier contact avec l'interface Web ===

Nous nous rendons maintenant à l'adresse suivante pour la console d'administration :

http://127.0.0.1:5280/admin
Connexion avec laurent@localhost motdepasse


[[Fichier:Capture d'écran - 20082010 - 10-51-08.png]]

Vérifions nos domaines :


[[Fichier:Capture d'écran - 20082010 - 11-00-13.png]]

Nous avons bien deux domaines : localhost et isalo.org

== Utilisation ==

Nous allons maintenant tester notre serveur ejabberd...

J'utilise Pidgin, il en existe beaucoup d'autres...

Il suffit de se s'enregistrer via le nom de domaine renseigné dans la configuration, en choisissant de créer (nous l'avons autorisé dans la configuration).
Si ce n'est pas le cas, il vous faudra le faire au travers de l'interface Web d'administration


[[Fichier:Capture d'écran - 20082010 - 11-22-39.png]]


Ici, '''il faut préciser le serveur de connexion''' (soit par son nom - J'ai mis nas - si vous avec un DNS, soit par son IP).

Laissez vide &quot;proxy pour les serveurs de connexion&quot; sinon vous aurez un message d'erreur

[[Fichier:Capture d'écran - 20082010 - 11-24-27.png]]


[[Fichier:Capture d'écran - 20082010 - 11-25-24.png]]


[[Fichier:Capture d'écran - 20082010 - 11-26-14.png]]


[[Fichier:Capture d'écran - 20082010 - 11-32-17.png]]


[[Fichier:Capture d'écran - 20082010 - 11-33-21.png]]


Il nous reste à vérifier que les utilisateurs sont bien inscrits :

[[Fichier:Capture d'écran - 20082010 - 11-35-52.png]]

== Aller plus loin ==


[http://www.ejabberd.im/ le site officiel de ejabberd]

[http://www.ejabberd.im/tutorials De nombreux tutoriaux]

ejabberd est soutenu par Process-one - ''Site commercial''. [http://www.process-one.net/en/ejabberd/ www.process-one.net]

Voici [http://www.process-one.net/en/ejabberd/guide_en une documentation détaillée] (Attention l'installation proposée dans cette documentation passe par un installeur qui n'est pas apt). Vous y trouverez de nombreuses astuces et réglages pour votre configuration.

Beaucoup de modules sont disponibles pour augmenter les possibilités de votre serveur ejabberd (support mysql, support de nombreux autres protocoles, etc.)

[[Utilisateur:Lol|Lol]] 20 août 2010 à 12:17 (EAT)</text>
      <sha1>05z5af7femkcutn71a9ex8l4zjz24j1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2009</id>
      <parentid>2008</parentid>
      <timestamp>2010-08-21T05:41:58Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* le fichier ejabberd.cfg */</comment>
      <text xml:space="preserve" bytes="11386">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|ejabberd}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;

'''Installation et configuration de ejabberd sur Lenny'''

Ce tutoriel destiné à l'installation d'un serveur jabberd (ejabberd) à destination d'un réseau local uniquement.
Les question de sécurité et d'ouverture de votre serveur jabberd sur l'extérieur ne seront pas traitées.

L'installation de ejabberd et son administration (grâce à son interface web) sont simples.
Ejabberd permet de créer facilement un serveur permettant les échanges au travers du protocole XMPP, il est stable, supporte des charges importantes.
Ejabberd est un serveur Jabber écrit en Erlang.

== Installation ==

 # apt-get install ejabberd
 ...
 Les paquets supplémentaires suivants seront installés :
 erlang-base erlang-nox libsctp1 lksctp-tools odbcinst1debian1 unixodbc
 ... 

Vérification de l'installation :
 $ erl
 Erlang (BEAM) emulator version 5.6.3 [source] [64-bit] [smp:2] [async-threads:0] [kernel-poll:false]  Eshell V5.6.3  (abort with ^G)
 
 1&gt;  

Pour sortir de la console erlang CTRL+C + a + entrée.

== Configuration ==

EJabberd se configure dans le fichier /etc/ejabberd/ejabberd.cfg

Nous verrons plus loin comment utiliser l'interface web accessible par 'http://votreserveur:5280/admin' pour réaliser les tâches d'administration.

Avant tout, il faut créer un certificat valide pour le domaine que vous allez utiliser :

 # mv /etc/ejabberd/ejabberd.pem /etc/ejabberd/edjabberd.pem.orig
 $ openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out server.pem
 $ openssl rsa -in privkey.pem -out privkey.pem
 $ cat privkey.pem &gt;&gt; server.pem
 $ rm privkey.pem
 # mv server.pem /etc/ejabberd/ejabberd.pem 

Répondez à la question &quot;Common Name&quot; avec votre nom de domaine, c'est primordial car lors de la connexion de vos clients, il leur sera demandé de valider le certificat:

 Organizational Unit Name (eg, section) []:
 Common Name (eg, YOUR name) []:votredomaine.ltd

Notez (ou retenez) le mot de passe demandé au début, même si vous ne devriez plus en avoir besoin par la suite.

Pensez à ouvrir dans votre firewall les ports TCP 5222 et 5269 pour le protocole XMPP, ainsi que le port TCP 5280 pour l'interface web d'administration.

Sauvegarder le fichier de configuration avant d'y faire la moindre modification (prudence...)

 # cp /etc/ejabberd/ejabberd.cfg /etc/ejabberd/ejabberd.cfg.orig 

=== le fichier ejabberd.cfg ===

Complétez maintenant le fichier ejabberd.cfg comme suit :

 # cat /etc/ejabberd/ejabberd.cfg

&lt;code erlang&gt;
{acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}.
{acl, admin, {user, &quot;laurent&quot;, &quot;isalo.org&quot;}}.
{acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}.
{hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}.

{loglevel, 3}.

{listen,
 [
  {5222, ejabberd_c2s, [
                       {access, c2s},
                       {shaper, c2s_shaper},
                       {max_stanza_size, 65536},
                       starttls_required, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                       ]},
 {5269, ejabberd_s2s_in, [
                         {shaper, s2s_shaper},
                         {max_stanza_size, 131072}
                         ]},
 {5280, ejabberd_http, [
                       http_poll,
                       web_admin
                       ]}
 ]}.

{s2s_use_starttls, true}.

{s2s_certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}.

{auth_method, internal}.

{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}. 

{acl, local, {user_regexp, &quot;&quot;}}.

{access, max_user_sessions, [{10, all}]}.
{access, local, [{allow, local}]}.
{access, c2s, [{deny, blocked},
               {allow, all}]}.
{access, c2s_shaper, [{none, admin},
                      {normal, all}]}.
{access, s2s_shaper, [{fast, all}]}.
{access, announce, [{allow, admin}]}.
{access, configure, [{allow, admin}]}.
{access, muc_admin, [{allow, admin}]}.
{access, muc, [{allow, all}]}.
{access, register, [{allow, all}]}.
{access, pubsub_createnode, [{allow, all}]}.

{host_config, &quot;isalo.org&quot;,
 [  
  {access, c2s, [{allow, admin}, {allow, all}]},
  {access, register, [{allow, all}]}
 ]
}.                                 

{language, &quot;fr&quot;}.

{modules,
 [
  {mod_adhoc,    []},
  {mod_announce, [{access, announce}]}, % requires mod_adhoc
  {mod_caps,     []},
  {mod_configure,[]}, % requires mod_adhoc
  {mod_ctlextra, []},               
  {mod_disco,    []},
  %%{mod_echo,   [{host, &quot;echo.localhost&quot;}]},
  {mod_irc,      []},   
  {mod_last,     []},
  {mod_muc,      [
                  %%{host, &quot;conference.@HOST@&quot;},
                  {access, muc},
                  {access_create, muc},
                  {access_persistent, muc},
                  {access_admin, muc_admin},
                  {max_users, 500}
                 ]},
  %%{mod_muc_log,[]},
  {mod_offline,  []},
  {mod_privacy,  []},
  {mod_private,  []},
  {mod_proxy65,  [
                  {access, local},
                  {shaper, c2s_shaper}
                 ]},
  {mod_pubsub,   [ % requires mod_caps
                  {access_createnode, pubsub_createnode},
                  {plugins, [&quot;default&quot;, &quot;pep&quot;]}
                 ]},
  {mod_register, [
                  {welcome_message, {&quot;Bienvenue!&quot;,
                                     &quot;Bienvenue sur le Serveur Jabber de isalo.org. &quot;
                                     &quot;Pour plus d'information à propos de Jabber :&quot;
                                     &quot;http://www.jabber.org&quot;}},

                  {access, register}
                 ]},
  {mod_roster,   []},
  {mod_stats,    []},
  {mod_time,     []},
  {mod_vcard,    []},
  {mod_version,  []}
 ]}.

&lt;/code&gt;

=== Petite explication rapide... ===

Le fichier de configuration ci-dessus est en erlang.
Le caractère % est utilisé, et non # ou ; pour commenter une ligne.
Toutes les blocs terminent par un &quot;.&quot;, il est indispensable!

* le nom du compte administrateur du serveur
 {acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}. {acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}. 

* Les nom d'hôte utilisé :
 {hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}. 

* L'adresse de courriel qui va recevoir les notifications de nouveaux comptes :
 {registration_watchers, [&quot;admin@isalo.org&quot;]}. 

* Le niveau de log (de 0 à 5) - 3 est raisonnable :
 {loglevel, 3}. 

* Les ports utilisés :

Il est recommandé de laisser ceux par défaut :

 {listen,
  [
   {5222, ejabberd_c2s, [
                         {access, c2s},
                         {shaper, c2s_shaper},
                         {max_stanza_size, 65536},
                         starttls, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                         ]},
   {5269, ejabberd_s2s_in, [
                         {shaper, s2s_shaper},
                         {max_stanza_size, 131072}
                         ]},
   {5280, ejabberd_http, [
                         http_poll,
                         web_admin 
                         ]}
  ]}. 

Je vous laisse découvrir vous-même la suite (A faire!), il s'agit des règles d'accès au serveur (les ACL).
Tel quelle la configuration ci-dessus permet à n'importe qui de s'enregistrer.
Comme ce serveur n'est destiné qu'a votre réseau local, pas de problèmes pour l'instant!

=== DNS ===

Nous allons maintenant ajouter à notre DNS (ici Bind9) les enregistrements nécessaires :
Attention, mon serveur DNS local n'ést pas sur la machine ou tourne ejabberd. J'ai donc précisé sur quelle machine trouver les services (nas.isalo.org)

 _xmpp-client._tcp.isalo.org.	86400	IN	SRV	20 0 5222 nas.isalo.org.
 _xmpp-server._tcp.isalo.org.	86400	IN	SRV	20 0 5269 nas.isalo.org.
 _jabber._tcp                     900   IN      SRV      5 0 5269 nas.isalo.org.

Pour vérifier que votre DNS répond bien :

 $ dig -t srv _xmpp-client._tcp.isalo.org
 ; &lt;&lt;&gt;&gt; DiG 9.7.1-P2 &lt;&lt;&gt;&gt; -t srv _xmpp-client._tcp.isalo.org
 ;; global options: +cmd
 ;; Got answer:
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 53575
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
 ;; QUESTION SECTION:
 ;_xmpp-client._tcp.isalo.org.	IN	SRV
 ;; ANSWER SECTION:
 '''_xmpp-client._tcp.isalo.org. 86400 IN	SRV	20 0 5222 nas.isalo.org.'''
 ;; AUTHORITY SECTION:
 isalo.org.		38400	IN	NS	lol.isalo.org.
 ;; ADDITIONAL SECTION:
 '''nas.isalo.org.		38400	IN	A	192.168.0.6'''
 lol.isalo.org.		38400	IN	A	192.168.0.1
 ;; Query time: 0 msec ;;
 SERVER: 192.168.0.1#53(192.168.0.1)
 ;; WHEN: Fri Aug 20 18:27:24 2010 ;; MSG SIZE  rcvd: 128 

Vous devez obtenir les deux lignes 'grasses' : le nom de la machine qui héberge le serveur jabber et son IP.

=== Ajout d'un administrateur ===

Nous enregistrons l'utilisateur qui fera l'administration;
Création de l'utilisateur &quot;laurent&quot; du domaine &quot;localhost&quot; avec le mot de passe &quot;motdepasse&quot; :

 # ejabberdctl register laurent localhost motdepasse

Si vous souhaitez par la suite supprimer un utilisateur :

 # ejabberdctl unregister laurent localhost 

Nous redémarrons le service
 # /etc/init.d/ejabberd restart  

=== Premier contact avec l'interface Web ===

Nous nous rendons maintenant à l'adresse suivante pour la console d'administration :

http://127.0.0.1:5280/admin
Connexion avec laurent@localhost motdepasse


[[Fichier:Capture d'écran - 20082010 - 10-51-08.png]]

Vérifions nos domaines :


[[Fichier:Capture d'écran - 20082010 - 11-00-13.png]]

Nous avons bien deux domaines : localhost et isalo.org

== Utilisation ==

Nous allons maintenant tester notre serveur ejabberd...

J'utilise Pidgin, il en existe beaucoup d'autres...

Il suffit de se s'enregistrer via le nom de domaine renseigné dans la configuration, en choisissant de créer (nous l'avons autorisé dans la configuration).
Si ce n'est pas le cas, il vous faudra le faire au travers de l'interface Web d'administration


[[Fichier:Capture d'écran - 20082010 - 11-22-39.png]]


Ici, '''il faut préciser le serveur de connexion''' (soit par son nom - J'ai mis nas - si vous avec un DNS, soit par son IP).

Laissez vide &quot;proxy pour les serveurs de connexion&quot; sinon vous aurez un message d'erreur

[[Fichier:Capture d'écran - 20082010 - 11-24-27.png]]


[[Fichier:Capture d'écran - 20082010 - 11-25-24.png]]


[[Fichier:Capture d'écran - 20082010 - 11-26-14.png]]


[[Fichier:Capture d'écran - 20082010 - 11-32-17.png]]


[[Fichier:Capture d'écran - 20082010 - 11-33-21.png]]


Il nous reste à vérifier que les utilisateurs sont bien inscrits :

[[Fichier:Capture d'écran - 20082010 - 11-35-52.png]]

== Aller plus loin ==


[http://www.ejabberd.im/ le site officiel de ejabberd]

[http://www.ejabberd.im/tutorials De nombreux tutoriaux]

ejabberd est soutenu par Process-one - ''Site commercial''. [http://www.process-one.net/en/ejabberd/ www.process-one.net]

Voici [http://www.process-one.net/en/ejabberd/guide_en une documentation détaillée] (Attention l'installation proposée dans cette documentation passe par un installeur qui n'est pas apt). Vous y trouverez de nombreuses astuces et réglages pour votre configuration.

Beaucoup de modules sont disponibles pour augmenter les possibilités de votre serveur ejabberd (support mysql, support de nombreux autres protocoles, etc.)

[[Utilisateur:Lol|Lol]] 20 août 2010 à 12:17 (EAT)</text>
      <sha1>nqzqt32t9uo4zmzsp1nwvzymgifg008</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2010</id>
      <parentid>2009</parentid>
      <timestamp>2010-08-21T05:43:03Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Petite explication rapide... */</comment>
      <text xml:space="preserve" bytes="11483">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|ejabberd}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;

'''Installation et configuration de ejabberd sur Lenny'''

Ce tutoriel destiné à l'installation d'un serveur jabberd (ejabberd) à destination d'un réseau local uniquement.
Les question de sécurité et d'ouverture de votre serveur jabberd sur l'extérieur ne seront pas traitées.

L'installation de ejabberd et son administration (grâce à son interface web) sont simples.
Ejabberd permet de créer facilement un serveur permettant les échanges au travers du protocole XMPP, il est stable, supporte des charges importantes.
Ejabberd est un serveur Jabber écrit en Erlang.

== Installation ==

 # apt-get install ejabberd
 ...
 Les paquets supplémentaires suivants seront installés :
 erlang-base erlang-nox libsctp1 lksctp-tools odbcinst1debian1 unixodbc
 ... 

Vérification de l'installation :
 $ erl
 Erlang (BEAM) emulator version 5.6.3 [source] [64-bit] [smp:2] [async-threads:0] [kernel-poll:false]  Eshell V5.6.3  (abort with ^G)
 
 1&gt;  

Pour sortir de la console erlang CTRL+C + a + entrée.

== Configuration ==

EJabberd se configure dans le fichier /etc/ejabberd/ejabberd.cfg

Nous verrons plus loin comment utiliser l'interface web accessible par 'http://votreserveur:5280/admin' pour réaliser les tâches d'administration.

Avant tout, il faut créer un certificat valide pour le domaine que vous allez utiliser :

 # mv /etc/ejabberd/ejabberd.pem /etc/ejabberd/edjabberd.pem.orig
 $ openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out server.pem
 $ openssl rsa -in privkey.pem -out privkey.pem
 $ cat privkey.pem &gt;&gt; server.pem
 $ rm privkey.pem
 # mv server.pem /etc/ejabberd/ejabberd.pem 

Répondez à la question &quot;Common Name&quot; avec votre nom de domaine, c'est primordial car lors de la connexion de vos clients, il leur sera demandé de valider le certificat:

 Organizational Unit Name (eg, section) []:
 Common Name (eg, YOUR name) []:votredomaine.ltd

Notez (ou retenez) le mot de passe demandé au début, même si vous ne devriez plus en avoir besoin par la suite.

Pensez à ouvrir dans votre firewall les ports TCP 5222 et 5269 pour le protocole XMPP, ainsi que le port TCP 5280 pour l'interface web d'administration.

Sauvegarder le fichier de configuration avant d'y faire la moindre modification (prudence...)

 # cp /etc/ejabberd/ejabberd.cfg /etc/ejabberd/ejabberd.cfg.orig 

=== le fichier ejabberd.cfg ===

Complétez maintenant le fichier ejabberd.cfg comme suit :

 # cat /etc/ejabberd/ejabberd.cfg

&lt;code erlang&gt;
{acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}.
{acl, admin, {user, &quot;laurent&quot;, &quot;isalo.org&quot;}}.
{acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}.
{hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}.

{loglevel, 3}.

{listen,
 [
  {5222, ejabberd_c2s, [
                       {access, c2s},
                       {shaper, c2s_shaper},
                       {max_stanza_size, 65536},
                       starttls_required, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                       ]},
 {5269, ejabberd_s2s_in, [
                         {shaper, s2s_shaper},
                         {max_stanza_size, 131072}
                         ]},
 {5280, ejabberd_http, [
                       http_poll,
                       web_admin
                       ]}
 ]}.

{s2s_use_starttls, true}.

{s2s_certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}.

{auth_method, internal}.

{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}. 

{acl, local, {user_regexp, &quot;&quot;}}.

{access, max_user_sessions, [{10, all}]}.
{access, local, [{allow, local}]}.
{access, c2s, [{deny, blocked},
               {allow, all}]}.
{access, c2s_shaper, [{none, admin},
                      {normal, all}]}.
{access, s2s_shaper, [{fast, all}]}.
{access, announce, [{allow, admin}]}.
{access, configure, [{allow, admin}]}.
{access, muc_admin, [{allow, admin}]}.
{access, muc, [{allow, all}]}.
{access, register, [{allow, all}]}.
{access, pubsub_createnode, [{allow, all}]}.

{host_config, &quot;isalo.org&quot;,
 [  
  {access, c2s, [{allow, admin}, {allow, all}]},
  {access, register, [{allow, all}]}
 ]
}.                                 

{language, &quot;fr&quot;}.

{modules,
 [
  {mod_adhoc,    []},
  {mod_announce, [{access, announce}]}, % requires mod_adhoc
  {mod_caps,     []},
  {mod_configure,[]}, % requires mod_adhoc
  {mod_ctlextra, []},               
  {mod_disco,    []},
  %%{mod_echo,   [{host, &quot;echo.localhost&quot;}]},
  {mod_irc,      []},   
  {mod_last,     []},
  {mod_muc,      [
                  %%{host, &quot;conference.@HOST@&quot;},
                  {access, muc},
                  {access_create, muc},
                  {access_persistent, muc},
                  {access_admin, muc_admin},
                  {max_users, 500}
                 ]},
  %%{mod_muc_log,[]},
  {mod_offline,  []},
  {mod_privacy,  []},
  {mod_private,  []},
  {mod_proxy65,  [
                  {access, local},
                  {shaper, c2s_shaper}
                 ]},
  {mod_pubsub,   [ % requires mod_caps
                  {access_createnode, pubsub_createnode},
                  {plugins, [&quot;default&quot;, &quot;pep&quot;]}
                 ]},
  {mod_register, [
                  {welcome_message, {&quot;Bienvenue!&quot;,
                                     &quot;Bienvenue sur le Serveur Jabber de isalo.org. &quot;
                                     &quot;Pour plus d'information à propos de Jabber :&quot;
                                     &quot;http://www.jabber.org&quot;}},

                  {access, register}
                 ]},
  {mod_roster,   []},
  {mod_stats,    []},
  {mod_time,     []},
  {mod_vcard,    []},
  {mod_version,  []}
 ]}.

&lt;/code&gt;

=== Petite explication rapide... ===

Le fichier de configuration ci-dessus est en erlang.
Le caractère % est utilisé, et non # ou ; pour commenter une ligne.
Toutes les blocs terminent par un &quot;.&quot;, il est indispensable!

* le nom du compte administrateur du serveur
 {acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}. {acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}. 

* Les nom d'hôte utilisé :
 {hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}. 

* L'adresse de courriel qui va recevoir les notifications de nouveaux comptes :
 {registration_watchers, [&quot;admin@isalo.org&quot;]}. 

* Le niveau de log (de 0 à 5) - 3 est raisonnable :
 {loglevel, 3}. 

* Les ports utilisés :

Il est recommandé de laisser ceux par défaut :
Nous avosn un beau certificat, nous forçons la connexion avec ttls : starttls_required

 {listen,
  [
   {5222, ejabberd_c2s, [
                         {access, c2s},
                         {shaper, c2s_shaper},
                         {max_stanza_size, 65536},
                         starttls_required, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                         ]},
   {5269, ejabberd_s2s_in, [
                         {shaper, s2s_shaper},
                         {max_stanza_size, 131072}
                         ]},
   {5280, ejabberd_http, [
                         http_poll,
                         web_admin 
                         ]}
  ]}. 

Je vous laisse découvrir vous-même la suite (A faire!), il s'agit des règles d'accès au serveur (les ACL).
Tel quelle la configuration ci-dessus permet à n'importe qui de s'enregistrer.
Comme ce serveur n'est destiné qu'a votre réseau local, pas de problèmes pour l'instant!

=== DNS ===

Nous allons maintenant ajouter à notre DNS (ici Bind9) les enregistrements nécessaires :
Attention, mon serveur DNS local n'ést pas sur la machine ou tourne ejabberd. J'ai donc précisé sur quelle machine trouver les services (nas.isalo.org)

 _xmpp-client._tcp.isalo.org.	86400	IN	SRV	20 0 5222 nas.isalo.org.
 _xmpp-server._tcp.isalo.org.	86400	IN	SRV	20 0 5269 nas.isalo.org.
 _jabber._tcp                     900   IN      SRV      5 0 5269 nas.isalo.org.

Pour vérifier que votre DNS répond bien :

 $ dig -t srv _xmpp-client._tcp.isalo.org
 ; &lt;&lt;&gt;&gt; DiG 9.7.1-P2 &lt;&lt;&gt;&gt; -t srv _xmpp-client._tcp.isalo.org
 ;; global options: +cmd
 ;; Got answer:
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 53575
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
 ;; QUESTION SECTION:
 ;_xmpp-client._tcp.isalo.org.	IN	SRV
 ;; ANSWER SECTION:
 '''_xmpp-client._tcp.isalo.org. 86400 IN	SRV	20 0 5222 nas.isalo.org.'''
 ;; AUTHORITY SECTION:
 isalo.org.		38400	IN	NS	lol.isalo.org.
 ;; ADDITIONAL SECTION:
 '''nas.isalo.org.		38400	IN	A	192.168.0.6'''
 lol.isalo.org.		38400	IN	A	192.168.0.1
 ;; Query time: 0 msec ;;
 SERVER: 192.168.0.1#53(192.168.0.1)
 ;; WHEN: Fri Aug 20 18:27:24 2010 ;; MSG SIZE  rcvd: 128 

Vous devez obtenir les deux lignes 'grasses' : le nom de la machine qui héberge le serveur jabber et son IP.

=== Ajout d'un administrateur ===

Nous enregistrons l'utilisateur qui fera l'administration;
Création de l'utilisateur &quot;laurent&quot; du domaine &quot;localhost&quot; avec le mot de passe &quot;motdepasse&quot; :

 # ejabberdctl register laurent localhost motdepasse

Si vous souhaitez par la suite supprimer un utilisateur :

 # ejabberdctl unregister laurent localhost 

Nous redémarrons le service
 # /etc/init.d/ejabberd restart  

=== Premier contact avec l'interface Web ===

Nous nous rendons maintenant à l'adresse suivante pour la console d'administration :

http://127.0.0.1:5280/admin
Connexion avec laurent@localhost motdepasse


[[Fichier:Capture d'écran - 20082010 - 10-51-08.png]]

Vérifions nos domaines :


[[Fichier:Capture d'écran - 20082010 - 11-00-13.png]]

Nous avons bien deux domaines : localhost et isalo.org

== Utilisation ==

Nous allons maintenant tester notre serveur ejabberd...

J'utilise Pidgin, il en existe beaucoup d'autres...

Il suffit de se s'enregistrer via le nom de domaine renseigné dans la configuration, en choisissant de créer (nous l'avons autorisé dans la configuration).
Si ce n'est pas le cas, il vous faudra le faire au travers de l'interface Web d'administration


[[Fichier:Capture d'écran - 20082010 - 11-22-39.png]]


Ici, '''il faut préciser le serveur de connexion''' (soit par son nom - J'ai mis nas - si vous avec un DNS, soit par son IP).

Laissez vide &quot;proxy pour les serveurs de connexion&quot; sinon vous aurez un message d'erreur

[[Fichier:Capture d'écran - 20082010 - 11-24-27.png]]


[[Fichier:Capture d'écran - 20082010 - 11-25-24.png]]


[[Fichier:Capture d'écran - 20082010 - 11-26-14.png]]


[[Fichier:Capture d'écran - 20082010 - 11-32-17.png]]


[[Fichier:Capture d'écran - 20082010 - 11-33-21.png]]


Il nous reste à vérifier que les utilisateurs sont bien inscrits :

[[Fichier:Capture d'écran - 20082010 - 11-35-52.png]]

== Aller plus loin ==


[http://www.ejabberd.im/ le site officiel de ejabberd]

[http://www.ejabberd.im/tutorials De nombreux tutoriaux]

ejabberd est soutenu par Process-one - ''Site commercial''. [http://www.process-one.net/en/ejabberd/ www.process-one.net]

Voici [http://www.process-one.net/en/ejabberd/guide_en une documentation détaillée] (Attention l'installation proposée dans cette documentation passe par un installeur qui n'est pas apt). Vous y trouverez de nombreuses astuces et réglages pour votre configuration.

Beaucoup de modules sont disponibles pour augmenter les possibilités de votre serveur ejabberd (support mysql, support de nombreux autres protocoles, etc.)

[[Utilisateur:Lol|Lol]] 20 août 2010 à 12:17 (EAT)</text>
      <sha1>0q1jph9lmz5d3swaqhuvlcxht1zzimx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2011</id>
      <parentid>2010</parentid>
      <timestamp>2010-08-21T05:43:25Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Petite explication rapide... */</comment>
      <text xml:space="preserve" bytes="11488">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|ejabberd}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;

'''Installation et configuration de ejabberd sur Lenny'''

Ce tutoriel destiné à l'installation d'un serveur jabberd (ejabberd) à destination d'un réseau local uniquement.
Les question de sécurité et d'ouverture de votre serveur jabberd sur l'extérieur ne seront pas traitées.

L'installation de ejabberd et son administration (grâce à son interface web) sont simples.
Ejabberd permet de créer facilement un serveur permettant les échanges au travers du protocole XMPP, il est stable, supporte des charges importantes.
Ejabberd est un serveur Jabber écrit en Erlang.

== Installation ==

 # apt-get install ejabberd
 ...
 Les paquets supplémentaires suivants seront installés :
 erlang-base erlang-nox libsctp1 lksctp-tools odbcinst1debian1 unixodbc
 ... 

Vérification de l'installation :
 $ erl
 Erlang (BEAM) emulator version 5.6.3 [source] [64-bit] [smp:2] [async-threads:0] [kernel-poll:false]  Eshell V5.6.3  (abort with ^G)
 
 1&gt;  

Pour sortir de la console erlang CTRL+C + a + entrée.

== Configuration ==

EJabberd se configure dans le fichier /etc/ejabberd/ejabberd.cfg

Nous verrons plus loin comment utiliser l'interface web accessible par 'http://votreserveur:5280/admin' pour réaliser les tâches d'administration.

Avant tout, il faut créer un certificat valide pour le domaine que vous allez utiliser :

 # mv /etc/ejabberd/ejabberd.pem /etc/ejabberd/edjabberd.pem.orig
 $ openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out server.pem
 $ openssl rsa -in privkey.pem -out privkey.pem
 $ cat privkey.pem &gt;&gt; server.pem
 $ rm privkey.pem
 # mv server.pem /etc/ejabberd/ejabberd.pem 

Répondez à la question &quot;Common Name&quot; avec votre nom de domaine, c'est primordial car lors de la connexion de vos clients, il leur sera demandé de valider le certificat:

 Organizational Unit Name (eg, section) []:
 Common Name (eg, YOUR name) []:votredomaine.ltd

Notez (ou retenez) le mot de passe demandé au début, même si vous ne devriez plus en avoir besoin par la suite.

Pensez à ouvrir dans votre firewall les ports TCP 5222 et 5269 pour le protocole XMPP, ainsi que le port TCP 5280 pour l'interface web d'administration.

Sauvegarder le fichier de configuration avant d'y faire la moindre modification (prudence...)

 # cp /etc/ejabberd/ejabberd.cfg /etc/ejabberd/ejabberd.cfg.orig 

=== le fichier ejabberd.cfg ===

Complétez maintenant le fichier ejabberd.cfg comme suit :

 # cat /etc/ejabberd/ejabberd.cfg

&lt;code erlang&gt;
{acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}.
{acl, admin, {user, &quot;laurent&quot;, &quot;isalo.org&quot;}}.
{acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}.
{hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}.

{loglevel, 3}.

{listen,
 [
  {5222, ejabberd_c2s, [
                       {access, c2s},
                       {shaper, c2s_shaper},
                       {max_stanza_size, 65536},
                       starttls_required, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                       ]},
 {5269, ejabberd_s2s_in, [
                         {shaper, s2s_shaper},
                         {max_stanza_size, 131072}
                         ]},
 {5280, ejabberd_http, [
                       http_poll,
                       web_admin
                       ]}
 ]}.

{s2s_use_starttls, true}.

{s2s_certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}.

{auth_method, internal}.

{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}. 

{acl, local, {user_regexp, &quot;&quot;}}.

{access, max_user_sessions, [{10, all}]}.
{access, local, [{allow, local}]}.
{access, c2s, [{deny, blocked},
               {allow, all}]}.
{access, c2s_shaper, [{none, admin},
                      {normal, all}]}.
{access, s2s_shaper, [{fast, all}]}.
{access, announce, [{allow, admin}]}.
{access, configure, [{allow, admin}]}.
{access, muc_admin, [{allow, admin}]}.
{access, muc, [{allow, all}]}.
{access, register, [{allow, all}]}.
{access, pubsub_createnode, [{allow, all}]}.

{host_config, &quot;isalo.org&quot;,
 [  
  {access, c2s, [{allow, admin}, {allow, all}]},
  {access, register, [{allow, all}]}
 ]
}.                                 

{language, &quot;fr&quot;}.

{modules,
 [
  {mod_adhoc,    []},
  {mod_announce, [{access, announce}]}, % requires mod_adhoc
  {mod_caps,     []},
  {mod_configure,[]}, % requires mod_adhoc
  {mod_ctlextra, []},               
  {mod_disco,    []},
  %%{mod_echo,   [{host, &quot;echo.localhost&quot;}]},
  {mod_irc,      []},   
  {mod_last,     []},
  {mod_muc,      [
                  %%{host, &quot;conference.@HOST@&quot;},
                  {access, muc},
                  {access_create, muc},
                  {access_persistent, muc},
                  {access_admin, muc_admin},
                  {max_users, 500}
                 ]},
  %%{mod_muc_log,[]},
  {mod_offline,  []},
  {mod_privacy,  []},
  {mod_private,  []},
  {mod_proxy65,  [
                  {access, local},
                  {shaper, c2s_shaper}
                 ]},
  {mod_pubsub,   [ % requires mod_caps
                  {access_createnode, pubsub_createnode},
                  {plugins, [&quot;default&quot;, &quot;pep&quot;]}
                 ]},
  {mod_register, [
                  {welcome_message, {&quot;Bienvenue!&quot;,
                                     &quot;Bienvenue sur le Serveur Jabber de isalo.org. &quot;
                                     &quot;Pour plus d'information à propos de Jabber :&quot;
                                     &quot;http://www.jabber.org&quot;}},

                  {access, register}
                 ]},
  {mod_roster,   []},
  {mod_stats,    []},
  {mod_time,     []},
  {mod_vcard,    []},
  {mod_version,  []}
 ]}.

&lt;/code&gt;

=== Petite explication rapide... ===

Le fichier de configuration ci-dessus est en erlang.
Le caractère % est utilisé, et non # ou ; pour commenter une ligne.
Toutes les blocs terminent par un &quot;.&quot;, il est indispensable!

* le nom du compte administrateur du serveur
 {acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}. {acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}. 

* Les nom d'hôte utilisé :
 {hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}. 

* L'adresse de courriel qui va recevoir les notifications de nouveaux comptes :
 {registration_watchers, [&quot;admin@isalo.org&quot;]}. 

* Le niveau de log (de 0 à 5) - 3 est raisonnable :
 {loglevel, 3}. 

* Les ports utilisés :

Il est recommandé de laisser ceux par défaut :
Nous avons un beau certificat, nous forçons donc la connexion avec ttls : starttls_required

 {listen,
  [
   {5222, ejabberd_c2s, [
                         {access, c2s},
                         {shaper, c2s_shaper},
                         {max_stanza_size, 65536},
                         starttls_required, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                         ]},
   {5269, ejabberd_s2s_in, [
                         {shaper, s2s_shaper},
                         {max_stanza_size, 131072}
                         ]},
   {5280, ejabberd_http, [
                         http_poll,
                         web_admin 
                         ]}
  ]}. 

Je vous laisse découvrir vous-même la suite (A faire!), il s'agit des règles d'accès au serveur (les ACL).
Tel quelle la configuration ci-dessus permet à n'importe qui de s'enregistrer.
Comme ce serveur n'est destiné qu'a votre réseau local, pas de problèmes pour l'instant!

=== DNS ===

Nous allons maintenant ajouter à notre DNS (ici Bind9) les enregistrements nécessaires :
Attention, mon serveur DNS local n'ést pas sur la machine ou tourne ejabberd. J'ai donc précisé sur quelle machine trouver les services (nas.isalo.org)

 _xmpp-client._tcp.isalo.org.	86400	IN	SRV	20 0 5222 nas.isalo.org.
 _xmpp-server._tcp.isalo.org.	86400	IN	SRV	20 0 5269 nas.isalo.org.
 _jabber._tcp                     900   IN      SRV      5 0 5269 nas.isalo.org.

Pour vérifier que votre DNS répond bien :

 $ dig -t srv _xmpp-client._tcp.isalo.org
 ; &lt;&lt;&gt;&gt; DiG 9.7.1-P2 &lt;&lt;&gt;&gt; -t srv _xmpp-client._tcp.isalo.org
 ;; global options: +cmd
 ;; Got answer:
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 53575
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
 ;; QUESTION SECTION:
 ;_xmpp-client._tcp.isalo.org.	IN	SRV
 ;; ANSWER SECTION:
 '''_xmpp-client._tcp.isalo.org. 86400 IN	SRV	20 0 5222 nas.isalo.org.'''
 ;; AUTHORITY SECTION:
 isalo.org.		38400	IN	NS	lol.isalo.org.
 ;; ADDITIONAL SECTION:
 '''nas.isalo.org.		38400	IN	A	192.168.0.6'''
 lol.isalo.org.		38400	IN	A	192.168.0.1
 ;; Query time: 0 msec ;;
 SERVER: 192.168.0.1#53(192.168.0.1)
 ;; WHEN: Fri Aug 20 18:27:24 2010 ;; MSG SIZE  rcvd: 128 

Vous devez obtenir les deux lignes 'grasses' : le nom de la machine qui héberge le serveur jabber et son IP.

=== Ajout d'un administrateur ===

Nous enregistrons l'utilisateur qui fera l'administration;
Création de l'utilisateur &quot;laurent&quot; du domaine &quot;localhost&quot; avec le mot de passe &quot;motdepasse&quot; :

 # ejabberdctl register laurent localhost motdepasse

Si vous souhaitez par la suite supprimer un utilisateur :

 # ejabberdctl unregister laurent localhost 

Nous redémarrons le service
 # /etc/init.d/ejabberd restart  

=== Premier contact avec l'interface Web ===

Nous nous rendons maintenant à l'adresse suivante pour la console d'administration :

http://127.0.0.1:5280/admin
Connexion avec laurent@localhost motdepasse


[[Fichier:Capture d'écran - 20082010 - 10-51-08.png]]

Vérifions nos domaines :


[[Fichier:Capture d'écran - 20082010 - 11-00-13.png]]

Nous avons bien deux domaines : localhost et isalo.org

== Utilisation ==

Nous allons maintenant tester notre serveur ejabberd...

J'utilise Pidgin, il en existe beaucoup d'autres...

Il suffit de se s'enregistrer via le nom de domaine renseigné dans la configuration, en choisissant de créer (nous l'avons autorisé dans la configuration).
Si ce n'est pas le cas, il vous faudra le faire au travers de l'interface Web d'administration


[[Fichier:Capture d'écran - 20082010 - 11-22-39.png]]


Ici, '''il faut préciser le serveur de connexion''' (soit par son nom - J'ai mis nas - si vous avec un DNS, soit par son IP).

Laissez vide &quot;proxy pour les serveurs de connexion&quot; sinon vous aurez un message d'erreur

[[Fichier:Capture d'écran - 20082010 - 11-24-27.png]]


[[Fichier:Capture d'écran - 20082010 - 11-25-24.png]]


[[Fichier:Capture d'écran - 20082010 - 11-26-14.png]]


[[Fichier:Capture d'écran - 20082010 - 11-32-17.png]]


[[Fichier:Capture d'écran - 20082010 - 11-33-21.png]]


Il nous reste à vérifier que les utilisateurs sont bien inscrits :

[[Fichier:Capture d'écran - 20082010 - 11-35-52.png]]

== Aller plus loin ==


[http://www.ejabberd.im/ le site officiel de ejabberd]

[http://www.ejabberd.im/tutorials De nombreux tutoriaux]

ejabberd est soutenu par Process-one - ''Site commercial''. [http://www.process-one.net/en/ejabberd/ www.process-one.net]

Voici [http://www.process-one.net/en/ejabberd/guide_en une documentation détaillée] (Attention l'installation proposée dans cette documentation passe par un installeur qui n'est pas apt). Vous y trouverez de nombreuses astuces et réglages pour votre configuration.

Beaucoup de modules sont disponibles pour augmenter les possibilités de votre serveur ejabberd (support mysql, support de nombreux autres protocoles, etc.)

[[Utilisateur:Lol|Lol]] 20 août 2010 à 12:17 (EAT)</text>
      <sha1>gis948z8ymhcg65qgve4e4hk91sttw2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2012</id>
      <parentid>2011</parentid>
      <timestamp>2010-08-21T05:49:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* DNS */</comment>
      <text xml:space="preserve" bytes="11538">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|ejabberd}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;

'''Installation et configuration de ejabberd sur Lenny'''

Ce tutoriel destiné à l'installation d'un serveur jabberd (ejabberd) à destination d'un réseau local uniquement.
Les question de sécurité et d'ouverture de votre serveur jabberd sur l'extérieur ne seront pas traitées.

L'installation de ejabberd et son administration (grâce à son interface web) sont simples.
Ejabberd permet de créer facilement un serveur permettant les échanges au travers du protocole XMPP, il est stable, supporte des charges importantes.
Ejabberd est un serveur Jabber écrit en Erlang.

== Installation ==

 # apt-get install ejabberd
 ...
 Les paquets supplémentaires suivants seront installés :
 erlang-base erlang-nox libsctp1 lksctp-tools odbcinst1debian1 unixodbc
 ... 

Vérification de l'installation :
 $ erl
 Erlang (BEAM) emulator version 5.6.3 [source] [64-bit] [smp:2] [async-threads:0] [kernel-poll:false]  Eshell V5.6.3  (abort with ^G)
 
 1&gt;  

Pour sortir de la console erlang CTRL+C + a + entrée.

== Configuration ==

EJabberd se configure dans le fichier /etc/ejabberd/ejabberd.cfg

Nous verrons plus loin comment utiliser l'interface web accessible par 'http://votreserveur:5280/admin' pour réaliser les tâches d'administration.

Avant tout, il faut créer un certificat valide pour le domaine que vous allez utiliser :

 # mv /etc/ejabberd/ejabberd.pem /etc/ejabberd/edjabberd.pem.orig
 $ openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out server.pem
 $ openssl rsa -in privkey.pem -out privkey.pem
 $ cat privkey.pem &gt;&gt; server.pem
 $ rm privkey.pem
 # mv server.pem /etc/ejabberd/ejabberd.pem 

Répondez à la question &quot;Common Name&quot; avec votre nom de domaine, c'est primordial car lors de la connexion de vos clients, il leur sera demandé de valider le certificat:

 Organizational Unit Name (eg, section) []:
 Common Name (eg, YOUR name) []:votredomaine.ltd

Notez (ou retenez) le mot de passe demandé au début, même si vous ne devriez plus en avoir besoin par la suite.

Pensez à ouvrir dans votre firewall les ports TCP 5222 et 5269 pour le protocole XMPP, ainsi que le port TCP 5280 pour l'interface web d'administration.

Sauvegarder le fichier de configuration avant d'y faire la moindre modification (prudence...)

 # cp /etc/ejabberd/ejabberd.cfg /etc/ejabberd/ejabberd.cfg.orig 

=== le fichier ejabberd.cfg ===

Complétez maintenant le fichier ejabberd.cfg comme suit :

 # cat /etc/ejabberd/ejabberd.cfg

&lt;code erlang&gt;
{acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}.
{acl, admin, {user, &quot;laurent&quot;, &quot;isalo.org&quot;}}.
{acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}.
{hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}.

{loglevel, 3}.

{listen,
 [
  {5222, ejabberd_c2s, [
                       {access, c2s},
                       {shaper, c2s_shaper},
                       {max_stanza_size, 65536},
                       starttls_required, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                       ]},
 {5269, ejabberd_s2s_in, [
                         {shaper, s2s_shaper},
                         {max_stanza_size, 131072}
                         ]},
 {5280, ejabberd_http, [
                       http_poll,
                       web_admin
                       ]}
 ]}.

{s2s_use_starttls, true}.

{s2s_certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}.

{auth_method, internal}.

{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}. 

{acl, local, {user_regexp, &quot;&quot;}}.

{access, max_user_sessions, [{10, all}]}.
{access, local, [{allow, local}]}.
{access, c2s, [{deny, blocked},
               {allow, all}]}.
{access, c2s_shaper, [{none, admin},
                      {normal, all}]}.
{access, s2s_shaper, [{fast, all}]}.
{access, announce, [{allow, admin}]}.
{access, configure, [{allow, admin}]}.
{access, muc_admin, [{allow, admin}]}.
{access, muc, [{allow, all}]}.
{access, register, [{allow, all}]}.
{access, pubsub_createnode, [{allow, all}]}.

{host_config, &quot;isalo.org&quot;,
 [  
  {access, c2s, [{allow, admin}, {allow, all}]},
  {access, register, [{allow, all}]}
 ]
}.                                 

{language, &quot;fr&quot;}.

{modules,
 [
  {mod_adhoc,    []},
  {mod_announce, [{access, announce}]}, % requires mod_adhoc
  {mod_caps,     []},
  {mod_configure,[]}, % requires mod_adhoc
  {mod_ctlextra, []},               
  {mod_disco,    []},
  %%{mod_echo,   [{host, &quot;echo.localhost&quot;}]},
  {mod_irc,      []},   
  {mod_last,     []},
  {mod_muc,      [
                  %%{host, &quot;conference.@HOST@&quot;},
                  {access, muc},
                  {access_create, muc},
                  {access_persistent, muc},
                  {access_admin, muc_admin},
                  {max_users, 500}
                 ]},
  %%{mod_muc_log,[]},
  {mod_offline,  []},
  {mod_privacy,  []},
  {mod_private,  []},
  {mod_proxy65,  [
                  {access, local},
                  {shaper, c2s_shaper}
                 ]},
  {mod_pubsub,   [ % requires mod_caps
                  {access_createnode, pubsub_createnode},
                  {plugins, [&quot;default&quot;, &quot;pep&quot;]}
                 ]},
  {mod_register, [
                  {welcome_message, {&quot;Bienvenue!&quot;,
                                     &quot;Bienvenue sur le Serveur Jabber de isalo.org. &quot;
                                     &quot;Pour plus d'information à propos de Jabber :&quot;
                                     &quot;http://www.jabber.org&quot;}},

                  {access, register}
                 ]},
  {mod_roster,   []},
  {mod_stats,    []},
  {mod_time,     []},
  {mod_vcard,    []},
  {mod_version,  []}
 ]}.

&lt;/code&gt;

=== Petite explication rapide... ===

Le fichier de configuration ci-dessus est en erlang.
Le caractère % est utilisé, et non # ou ; pour commenter une ligne.
Toutes les blocs terminent par un &quot;.&quot;, il est indispensable!

* le nom du compte administrateur du serveur
 {acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}. {acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}. 

* Les nom d'hôte utilisé :
 {hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}. 

* L'adresse de courriel qui va recevoir les notifications de nouveaux comptes :
 {registration_watchers, [&quot;admin@isalo.org&quot;]}. 

* Le niveau de log (de 0 à 5) - 3 est raisonnable :
 {loglevel, 3}. 

* Les ports utilisés :

Il est recommandé de laisser ceux par défaut :
Nous avons un beau certificat, nous forçons donc la connexion avec ttls : starttls_required

 {listen,
  [
   {5222, ejabberd_c2s, [
                         {access, c2s},
                         {shaper, c2s_shaper},
                         {max_stanza_size, 65536},
                         starttls_required, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                         ]},
   {5269, ejabberd_s2s_in, [
                         {shaper, s2s_shaper},
                         {max_stanza_size, 131072}
                         ]},
   {5280, ejabberd_http, [
                         http_poll,
                         web_admin 
                         ]}
  ]}. 

Je vous laisse découvrir vous-même la suite (A faire!), il s'agit des règles d'accès au serveur (les ACL).
Tel quelle la configuration ci-dessus permet à n'importe qui de s'enregistrer.
Comme ce serveur n'est destiné qu'a votre réseau local, pas de problèmes pour l'instant!

=== DNS ===

Nous allons maintenant ajouter à notre DNS (ici Bind9) les enregistrements nécessaires :
Attention, mon serveur DNS local n'ést pas sur la machine ou tourne ejabberd. J'ai donc précisé sur quelle machine trouver les services (nas.isalo.org)

 _xmpp-server._tcp.isalo.org.	        86400	IN	SRV	5 0 5269 nas.isalo.org.
 _xmpp-client._tcp.jabber.isalo.org.	86400	IN	SRV	5 0 5222 nas.isalo.org.
 _jabber._tcp.jabber.isalo.org.	        86400	IN	SRV	5 0 5222 nas.isalo.org.

Pour vérifier que votre DNS répond bien :

 $ dig -t srv _xmpp-client._tcp.jabber.isalo.org
 
 ; &lt;&lt;&gt;&gt; DiG 9.6-ESV-R1 &lt;&lt;&gt;&gt; -t srv _xmpp-client._tcp.jabber.isalo.org
 ;; global options: +cmd
 ;; Got answer:
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 62356
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
 
 ;; QUESTION SECTION:
 ;_xmpp-client._tcp.jabber.isalo.org. IN	SRV
 
 ;; ANSWER SECTION:
 '''_xmpp-client._tcp.jabber.isalo.org. 86400 IN SRV 5 0 5222 nas.isalo.org.'''
 
 ;; AUTHORITY SECTION:
 isalo.org.		38400	IN	NS	lol.isalo.org.
 
 ;; ADDITIONAL SECTION:
 '''nas.isalo.org.		38400	IN	A	192.168.0.6'''
 lol.isalo.org.		38400	IN	A	192.168.0.1
 
 ;; Query time: 0 msec
 ;; SERVER: 192.168.0.1#53(192.168.0.1)
 ;; WHEN: Sat Aug 21 08:49:23 2010
 ;; MSG SIZE  rcvd: 135

Vous devez obtenir les deux lignes 'grasses' : le nom de la machine qui héberge le serveur jabber et son IP.

=== Ajout d'un administrateur ===

Nous enregistrons l'utilisateur qui fera l'administration;
Création de l'utilisateur &quot;laurent&quot; du domaine &quot;localhost&quot; avec le mot de passe &quot;motdepasse&quot; :

 # ejabberdctl register laurent localhost motdepasse

Si vous souhaitez par la suite supprimer un utilisateur :

 # ejabberdctl unregister laurent localhost 

Nous redémarrons le service
 # /etc/init.d/ejabberd restart  

=== Premier contact avec l'interface Web ===

Nous nous rendons maintenant à l'adresse suivante pour la console d'administration :

http://127.0.0.1:5280/admin
Connexion avec laurent@localhost motdepasse


[[Fichier:Capture d'écran - 20082010 - 10-51-08.png]]

Vérifions nos domaines :


[[Fichier:Capture d'écran - 20082010 - 11-00-13.png]]

Nous avons bien deux domaines : localhost et isalo.org

== Utilisation ==

Nous allons maintenant tester notre serveur ejabberd...

J'utilise Pidgin, il en existe beaucoup d'autres...

Il suffit de se s'enregistrer via le nom de domaine renseigné dans la configuration, en choisissant de créer (nous l'avons autorisé dans la configuration).
Si ce n'est pas le cas, il vous faudra le faire au travers de l'interface Web d'administration


[[Fichier:Capture d'écran - 20082010 - 11-22-39.png]]


Ici, '''il faut préciser le serveur de connexion''' (soit par son nom - J'ai mis nas - si vous avec un DNS, soit par son IP).

Laissez vide &quot;proxy pour les serveurs de connexion&quot; sinon vous aurez un message d'erreur

[[Fichier:Capture d'écran - 20082010 - 11-24-27.png]]


[[Fichier:Capture d'écran - 20082010 - 11-25-24.png]]


[[Fichier:Capture d'écran - 20082010 - 11-26-14.png]]


[[Fichier:Capture d'écran - 20082010 - 11-32-17.png]]


[[Fichier:Capture d'écran - 20082010 - 11-33-21.png]]


Il nous reste à vérifier que les utilisateurs sont bien inscrits :

[[Fichier:Capture d'écran - 20082010 - 11-35-52.png]]

== Aller plus loin ==


[http://www.ejabberd.im/ le site officiel de ejabberd]

[http://www.ejabberd.im/tutorials De nombreux tutoriaux]

ejabberd est soutenu par Process-one - ''Site commercial''. [http://www.process-one.net/en/ejabberd/ www.process-one.net]

Voici [http://www.process-one.net/en/ejabberd/guide_en une documentation détaillée] (Attention l'installation proposée dans cette documentation passe par un installeur qui n'est pas apt). Vous y trouverez de nombreuses astuces et réglages pour votre configuration.

Beaucoup de modules sont disponibles pour augmenter les possibilités de votre serveur ejabberd (support mysql, support de nombreux autres protocoles, etc.)

[[Utilisateur:Lol|Lol]] 20 août 2010 à 12:17 (EAT)</text>
      <sha1>npmn9uxteqi56dsitcy57c9lwv8en7l</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2023</id>
      <parentid>2012</parentid>
      <timestamp>2010-08-24T05:12:20Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="11750">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;
{{{2|}}
}C
et article est une '''ébauche''' concernant  '
'
{{{1|ejabberd}
}}
'
'. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;

'''Installation et configuration de ejabberd sur Lenny'''

Ce tutoriel destiné à l'installation d'un serveur jabberd (ejabberd) à destination d'un réseau local uniquement.
Les question de sécurité et d'ouverture de votre serveur jabberd sur l'extérieur ne seront pas traitées.

L'installation de ejabberd et son administration (grâce à son interface web) sont simples.
Ejabberd permet de créer facilement un serveur permettant les échanges au travers du protocole XMPP, il est stable, supporte des charges importantes.
Ejabberd est un serveur Jabber écrit en Erlang.

== Installation ==

 # apt-get install ejabberd
 ...
 Les paquets supplémentaires suivants seront installés :
 erlang-base erlang-nox libsctp1 lksctp-tools odbcinst1debian1 unixodbc
 ... 

Vérification de l'installation :
 $ erl
 Erlang (BEAM) emulator version 5.6.3 [source] [64-bit] [smp:2] [async-threads:0] [kernel-poll:false]  Eshell V5.6.3  (abort with ^G)
 
 1&gt;  

Pour sortir de la console erlang Ctrl+C puis a puis entré.

(Ctrl+C donne accès à un menu &quot;BREAK&quot;, a pour abort)...

 BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded
        (v)ersion (k)ill (D)b-tables (d)istribution

== Configuration ==

EJabberd se configure dans le fichier /etc/ejabberd/ejabberd.cfg

Nous verrons plus loin comment utiliser l'interface web accessible par 'http://votreserveur:5280/admin' pour réaliser les tâches d'administration.

Avant tout, il faut créer un certificat valide pour le domaine que vous allez utiliser :

 # mv /etc/ejabberd/ejabberd.pem /etc/ejabberd/edjabberd.pem.orig
 $ openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out server.pem
 $ openssl rsa -in privkey.pem -out privkey.pem
 $ cat privkey.pem &gt; server.pem
 $ rm privkey.pem
 # mv server.pem /etc/ejabberd/ejabberd.pem 

Répondez à la question &quot;Common Name&quot; avec votre nom de domaine, c'est primordial car lors de la connexion de vos clients, il leur sera demandé de valider le certificat:

 Organizational Unit Name (eg, section) []:
 Common Name (eg, YOUR name) []:votredomaine.ltd

Notez (ou retenez) le mot de passe demandé au début, même si vous ne devriez plus en avoir besoin par la suite.

Pensez à ouvrir dans votre firewall les ports TCP 5222 et 5269 pour le protocole XMPP, ainsi que le port TCP 5280 pour l'interface web d'administration.

Sauvegarder le fichier de configuration avant d'y faire la moindre modification (prudence...)

 # cp /etc/ejabberd/ejabberd.cfg /etc/ejabberd/ejabberd.cfg.orig 

=== le fichier ejabberd.cfg ===

Complétez maintenant le fichier ejabberd.cfg comme suit :

 # cat /etc/ejabberd/ejabberd.cfg

&lt;code erlang&gt;
{acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}.
{acl, admin, {user, &quot;laurent&quot;, &quot;isalo.org&quot;}}.
{acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}.
{hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}.

{loglevel, 3}.

{listen,
 [
  {5222, ejabberd_c2s, [
                       {access, c2s},
                       {shaper, c2s_shaper},
                       {max_stanza_size, 65536},
                       starttls_required, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                       ]},
 {5269, ejabberd_s2s_in, [
                         {shaper, s2s_shaper},
                         {max_stanza_size, 131072}
                         ]},
 {5280, ejabberd_http, [
                       http_poll,
                       web_admin
                       ]}
 ]}.

{s2s_use_starttls, true}.

{s2s_certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}.

{auth_method, internal}.

{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}. 

{acl, local, {user_regexp, &quot;&quot;}}.

{access, max_user_sessions, [{10, all}]}.
{access, local, [{allow, local}]}.
{access, c2s, [{deny, blocked},
               {allow, all}]}.
{access, c2s_shaper, [{none, admin},
                      {normal, all}]}.
{access, s2s_shaper, [{fast, all}]}.
{access, announce, [{allow, admin}]}.
{access, configure, [{allow, admin}]}.
{access, muc_admin, [{allow, admin}]}.
{access, muc, [{allow, all}]}.
{access, register, [{allow, all}]}.
{access, pubsub_createnode, [{allow, all}]}.

{host_config, &quot;isalo.org&quot;,
 [  
  {access, c2s, [{allow, admin}, {allow, all}]},
  {access, register, [{allow, all}]}
 ]
}.                                 

{language, &quot;fr&quot;}.

{modules,
 [
  {mod_adhoc,    []},
  {mod_announce, [{access, announce}]}, % requires mod_adhoc
  {mod_caps,     []},
  {mod_configure,[]}, % requires mod_adhoc
  {mod_ctlextra, []},               
  {mod_disco,    []},
  %%{mod_echo,   [{host, &quot;echo.localhost&quot;}]},
  {mod_irc,      []},   
  {mod_last,     []},
  {mod_muc,      [
                  %%{host, &quot;conference.@HOST@&quot;},
                  {access, muc},
                  {access_create, muc},
                  {access_persistent, muc},
                  {access_admin, muc_admin},
                  {max_users, 500}
                 ]},
  %%{mod_muc_log,[]},
  {mod_offline,  []},
  {mod_privacy,  []},
  {mod_private,  []},
  {mod_proxy65,  [
                  {access, local},
                  {shaper, c2s_shaper}
                 ]},
  {mod_pubsub,   [ % requires mod_caps
                  {access_createnode, pubsub_createnode},
                  {plugins, [&quot;default&quot;, &quot;pep&quot;]}
                 ]},
  {mod_register, [
                  {welcome_message, {&quot;Bienvenue!&quot;,
                                     &quot;Bienvenue sur le Serveur Jabber de isalo.org. &quot;
                                     &quot;Pour plus d'information à propos de Jabber :&quot;
                                     &quot;http://www.jabber.org&quot;}},

                  {access, register}
                 ]},
  {mod_roster,   []},
  {mod_stats,    []},
  {mod_time,     []},
  {mod_vcard,    []},
  {mod_version,  []}
 ]}.

&lt;/code&gt;

=== Petite explication rapide... ===

Le fichier de configuration ci-dessus est en erlang.
Le caractère % est utilisé, et non # ou ; pour commenter une ligne.
Tous les blocs terminent par un &quot;.&quot;, il est indispensable!

* le nom du compte administrateur du serveur
 {acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}. {acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}. 

* Les nom d'hôte utilisé :
 {hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}. 

* L'adresse de courriel qui va recevoir les notifications de nouveaux comptes :
 {registration_watchers, [&quot;admin@isalo.org&quot;]}. 

* Le niveau de log (de 0 à 5) - 3 est raisonnable :
 {loglevel, 3}. 

* Les ports utilisés :

Il est recommandé de laisser ceux par défaut :
Nous avons un beau certificat, nous forçons donc la connexion avec ttls : starttls_required

 {listen,
  [
   {5222, ejabberd_c2s, [
                         {access, c2s},
                         {shaper, c2s_shaper},
                         {max_stanza_size, 65536},
                         starttls_required, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                         ]},
   {5269, ejabberd_s2s_in, [
                         {shaper, s2s_shaper},
                         {max_stanza_size, 131072}
                         ]},
   {5280, ejabberd_http, [
                         http_poll,
                         web_admin 
                         ]}
  ]}. 

Je vous laisse découvrir vous-même la suite (A faire!), il s'agit des règles d'accès au serveur (les ACL).
Tel quelle la configuration ci-dessus permet à n'importe qui de s'enregistrer.
Comme ce serveur n'est destiné qu'a votre réseau local, pas de problèmes pour l'instant!

=== DNS ===

Nous allons maintenant ajouter à notre DNS (ici Bind9) les enregistrements nécessaires :
Attention, mon serveur DNS local n'ést pas sur la machine ou tourne ejabberd. J'ai donc précisé sur quelle machine trouver les services (nas.isalo.org)

 _xmpp-server._tcp.isalo.org.	        86400	IN	SRV	5 0 5269 nas.isalo.org.
 _xmpp-client._tcp.jabber.isalo.org.	86400	IN	SRV	5 0 5222 nas.isalo.org.
 _jabber._tcp.jabber.isalo.org.	        86400	IN	SRV	5 0 5222 nas.isalo.org.

Pour vérifier que votre DNS répond bien :

 $ dig -t srv _xmpp-client._tcp.jabber.isalo.org
 
 ; &lt;&lt;&gt;&gt; DiG 9.6-ESV-R1 &lt;&lt;&gt;&gt; -t srv _xmpp-client._tcp.jabber.isalo.org
 ;; global options: +cmd
 ;; Got answer:
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 62356
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
 
 ;; QUESTION SECTION:
 ;_xmpp-client._tcp.jabber.isalo.org. IN	SRV
 
 ;; ANSWER SECTION:
 '''_xmpp-client._tcp.jabber.isalo.org. 86400 IN SRV 5 0 5222 nas.isalo.org.'''
 
 ;; AUTHORITY SECTION:
 isalo.org.		38400	IN	NS	lol.isalo.org.
 
 ;; ADDITIONAL SECTION:
 '''nas.isalo.org.		38400	IN	A	192.168.0.6'''
 lol.isalo.org.		38400	IN	A	192.168.0.1
 
 ;; Query time: 0 msec
 ;; SERVER: 192.168.0.1#53(192.168.0.1)
 ;; WHEN: Sat Aug 21 08:49:23 2010
 ;; MSG SIZE  rcvd: 135

Vous devez obtenir les deux lignes 'grasses' : le nom de la machine qui héberge le serveur jabber et son IP.

=== Ajout d'un administrateur ===

Nous enregistrons l'utilisateur qui fera l'administration;
Création de l'utilisateur &quot;laurent&quot; du domaine &quot;localhost&quot; avec le mot de passe &quot;motdepasse&quot; :

 # ejabberdctl register laurent localhost motdepasse

Si vous souhaitez par la suite supprimer un utilisateur :

 # ejabberdctl unregister laurent localhost 

Nous redémarrons le service
 # /etc/init.d/ejabberd restart  
ou
 # invoke-rc.d ejabberd restart

=== Premier contact avec l'interface Web ===

Nous nous rendons maintenant à l'adresse suivante pour la console d'administration :

http://127.0.0.1:5280/admin
Connexion avec laurent@localhost motdepasse


[[Fichier:Capture d'écran - 20082010 - 10-51-08.png]]

Vérifions nos domaines :


[[Fichier:Capture d'écran - 20082010 - 11-00-13.png]]

Nous avons bien deux domaines : localhost et isalo.org

== Utilisation ==

Nous allons maintenant tester notre serveur ejabberd...

J'utilise Pidgin, il en existe beaucoup d'autres...

Il suffit de se s'enregistrer via le nom de domaine renseigné dans la configuration, en choisissant de créer (nous l'avons autorisé dans la configuration).
Si ce n'est pas le cas, il vous faudra le faire au travers de l'interface Web d'administration


[[Fichier:Capture d'écran - 20082010 - 11-22-39.png]]


Ici, '''il faut préciser le serveur de connexion''' (soit par son nom - J'ai mis nas - si vous avec un DNS, soit par son IP).

Laissez vide &quot;proxy pour les serveurs de connexion&quot; sinon vous aurez un message d'erreur

[[Fichier:Capture d'écran - 20082010 - 11-24-27.png]]


[[Fichier:Capture d'écran - 20082010 - 11-25-24.png]]


[[Fichier:Capture d'écran - 20082010 - 11-26-14.png]]


[[Fichier:Capture d'écran - 20082010 - 11-32-17.png]]


[[Fichier:Capture d'écran - 20082010 - 11-33-21.png]]


Il nous reste à vérifier que les utilisateurs sont bien inscrits :

[[Fichier:Capture d'écran - 20082010 - 11-35-52.png]]

== Aller plus loin ==


[http://www.ejabberd.im/ le site officiel de ejabberd]

[http://www.ejabberd.im/tutorials De nombreux tutoriaux]

ejabberd est soutenu par Process-one - ''Site commercial''. [http://www.process-one.net/en/ejabberd/ www.process-one.net]

Voici [http://www.process-one.net/en/ejabberd/guide_en une documentation détaillée] (Attention l'installation proposée dans cette documentation passe par un installeur qui n'est pas apt). Vous y trouverez de nombreuses astuces et réglages pour votre configuration.

Beaucoup de modules sont disponibles pour augmenter les possibilités de votre serveur ejabberd (support mysql, support de nombreux autres protocoles, etc.)

[[Utilisateur:Lol|Lol]] 20 août 2010 à 12:17 (EAT)</text>
      <sha1>fst91kdja7ly78opn5gxglbatess04b</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2024</id>
      <parentid>2023</parentid>
      <timestamp>2010-08-24T05:16:50Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="11742">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|ejabberd}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;

'''Installation et configuration de ejabberd sur Lenny'''

Ce tutoriel destiné à l'installation d'un serveur jabberd (ejabberd) à destination d'un réseau local uniquement.
Les question de sécurité et d'ouverture de votre serveur jabberd sur l'extérieur ne seront pas traitées.

L'installation de ejabberd et son administration (grâce à son interface web) sont simples.
Ejabberd permet de créer facilement un serveur permettant les échanges au travers du protocole XMPP, il est stable, supporte des charges importantes.
Ejabberd est un serveur Jabber écrit en Erlang.

== Installation ==

 # apt-get install ejabberd
 ...
 Les paquets supplémentaires suivants seront installés :
 erlang-base erlang-nox libsctp1 lksctp-tools odbcinst1debian1 unixodbc
 ... 

Vérification de l'installation :
 $ erl
 Erlang (BEAM) emulator version 5.6.3 [source] [64-bit] [smp:2] [async-threads:0] [kernel-poll:false]  Eshell V5.6.3  (abort with ^G)
 
 1&gt;  

Pour sortir de la console erlang Ctrl+C puis a puis entré.

(Ctrl+C donne accès à un menu &quot;BREAK&quot;, a pour abort)...

 BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded
        (v)ersion (k)ill (D)b-tables (d)istribution

== Configuration ==

EJabberd se configure dans le fichier /etc/ejabberd/ejabberd.cfg

Nous verrons plus loin comment utiliser l'interface web accessible par 'http://votreserveur:5280/admin' pour réaliser les tâches d'administration.

Avant tout, il faut créer un certificat valide pour le domaine que vous allez utiliser :

 # mv /etc/ejabberd/ejabberd.pem /etc/ejabberd/edjabberd.pem.orig
 $ openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out server.pem
 $ openssl rsa -in privkey.pem -out privkey.pem
 $ cat privkey.pem &gt; server.pem
 $ rm privkey.pem
 # mv server.pem /etc/ejabberd/ejabberd.pem 

Répondez à la question &quot;Common Name&quot; avec votre nom de domaine, c'est primordial car lors de la connexion de vos clients, il leur sera demandé de valider le certificat:

 Organizational Unit Name (eg, section) []:
 Common Name (eg, YOUR name) []:votredomaine.ltd

Notez (ou retenez) le mot de passe demandé au début, même si vous ne devriez plus en avoir besoin par la suite.

Pensez à ouvrir dans votre firewall les ports TCP 5222 et 5269 pour le protocole XMPP, ainsi que le port TCP 5280 pour l'interface web d'administration.

Sauvegarder le fichier de configuration avant d'y faire la moindre modification (prudence...)

 # cp /etc/ejabberd/ejabberd.cfg /etc/ejabberd/ejabberd.cfg.orig 

=== le fichier ejabberd.cfg ===

Complétez maintenant le fichier ejabberd.cfg comme suit :

 # cat /etc/ejabberd/ejabberd.cfg

&lt;code erlang&gt;
{acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}.
{acl, admin, {user, &quot;laurent&quot;, &quot;isalo.org&quot;}}.
{acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}.
{hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}.

{loglevel, 3}.

{listen,
 [
  {5222, ejabberd_c2s, [
                       {access, c2s},
                       {shaper, c2s_shaper},
                       {max_stanza_size, 65536},
                       starttls_required, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                       ]},
 {5269, ejabberd_s2s_in, [
                         {shaper, s2s_shaper},
                         {max_stanza_size, 131072}
                         ]},
 {5280, ejabberd_http, [
                       http_poll,
                       web_admin
                       ]}
 ]}.

{s2s_use_starttls, true}.

{s2s_certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}.

{auth_method, internal}.

{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}. 

{acl, local, {user_regexp, &quot;&quot;}}.

{access, max_user_sessions, [{10, all}]}.
{access, local, [{allow, local}]}.
{access, c2s, [{deny, blocked},
               {allow, all}]}.
{access, c2s_shaper, [{none, admin},
                      {normal, all}]}.
{access, s2s_shaper, [{fast, all}]}.
{access, announce, [{allow, admin}]}.
{access, configure, [{allow, admin}]}.
{access, muc_admin, [{allow, admin}]}.
{access, muc, [{allow, all}]}.
{access, register, [{allow, all}]}.
{access, pubsub_createnode, [{allow, all}]}.

{host_config, &quot;isalo.org&quot;,
 [  
  {access, c2s, [{allow, admin}, {allow, all}]},
  {access, register, [{allow, all}]}
 ]
}.                                 

{language, &quot;fr&quot;}.

{modules,
 [
  {mod_adhoc,    []},
  {mod_announce, [{access, announce}]}, % requires mod_adhoc
  {mod_caps,     []},
  {mod_configure,[]}, % requires mod_adhoc
  {mod_ctlextra, []},               
  {mod_disco,    []},
  %%{mod_echo,   [{host, &quot;echo.localhost&quot;}]},
  {mod_irc,      []},   
  {mod_last,     []},
  {mod_muc,      [
                  %%{host, &quot;conference.@HOST@&quot;},
                  {access, muc},
                  {access_create, muc},
                  {access_persistent, muc},
                  {access_admin, muc_admin},
                  {max_users, 500}
                 ]},
  %%{mod_muc_log,[]},
  {mod_offline,  []},
  {mod_privacy,  []},
  {mod_private,  []},
  {mod_proxy65,  [
                  {access, local},
                  {shaper, c2s_shaper}
                 ]},
  {mod_pubsub,   [ % requires mod_caps
                  {access_createnode, pubsub_createnode},
                  {plugins, [&quot;default&quot;, &quot;pep&quot;]}
                 ]},
  {mod_register, [
                  {welcome_message, {&quot;Bienvenue!&quot;,
                                     &quot;Bienvenue sur le Serveur Jabber de isalo.org. &quot;
                                     &quot;Pour plus d'information à propos de Jabber :&quot;
                                     &quot;http://www.jabber.org&quot;}},

                  {access, register}
                 ]},
  {mod_roster,   []},
  {mod_stats,    []},
  {mod_time,     []},
  {mod_vcard,    []},
  {mod_version,  []}
 ]}.

&lt;/code&gt;

=== Petite explication rapide... ===

Le fichier de configuration ci-dessus est en erlang.
Le caractère % est utilisé, et non # ou ; pour commenter une ligne.
Tous les blocs terminent par un &quot;.&quot;, il est indispensable!

* le nom du compte administrateur du serveur
 {acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}. {acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}. 

* Les nom d'hôte utilisé :
 {hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}. 

* L'adresse de courriel qui va recevoir les notifications de nouveaux comptes :
 {registration_watchers, [&quot;admin@isalo.org&quot;]}. 

* Le niveau de log (de 0 à 5) - 3 est raisonnable :
 {loglevel, 3}. 

* Les ports utilisés :

Il est recommandé de laisser ceux par défaut :
Nous avons un beau certificat, nous forçons donc la connexion avec ttls : starttls_required

 {listen,
  [
   {5222, ejabberd_c2s, [
                         {access, c2s},
                         {shaper, c2s_shaper},
                         {max_stanza_size, 65536},
                         starttls_required, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                         ]},
   {5269, ejabberd_s2s_in, [
                         {shaper, s2s_shaper},
                         {max_stanza_size, 131072}
                         ]},
   {5280, ejabberd_http, [
                         http_poll,
                         web_admin 
                         ]}
  ]}. 

Je vous laisse découvrir vous-même la suite (A faire!), il s'agit des règles d'accès au serveur (les ACL).
Tel quelle la configuration ci-dessus permet à n'importe qui de s'enregistrer.
Comme ce serveur n'est destiné qu'a votre réseau local, pas de problèmes pour l'instant!

=== DNS ===

Nous allons maintenant ajouter à notre DNS (ici Bind9) les enregistrements nécessaires :
Attention, mon serveur DNS local n'ést pas sur la machine ou tourne ejabberd. J'ai donc précisé sur quelle machine trouver les services (nas.isalo.org)

 _xmpp-server._tcp.isalo.org.	        86400	IN	SRV	5 0 5269 nas.isalo.org.
 _xmpp-client._tcp.jabber.isalo.org.	86400	IN	SRV	5 0 5222 nas.isalo.org.
 _jabber._tcp.jabber.isalo.org.	        86400	IN	SRV	5 0 5222 nas.isalo.org.

Pour vérifier que votre DNS répond bien :

 $ dig -t srv _xmpp-client._tcp.jabber.isalo.org
 
 ; &lt;&lt;&gt;&gt; DiG 9.6-ESV-R1 &lt;&lt;&gt;&gt; -t srv _xmpp-client._tcp.jabber.isalo.org
 ;; global options: +cmd
 ;; Got answer:
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 62356
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
 
 ;; QUESTION SECTION:
 ;_xmpp-client._tcp.jabber.isalo.org. IN	SRV
 
 ;; ANSWER SECTION:
 '''_xmpp-client._tcp.jabber.isalo.org. 86400 IN SRV 5 0 5222 nas.isalo.org.'''
 
 ;; AUTHORITY SECTION:
 isalo.org.		38400	IN	NS	lol.isalo.org.
 
 ;; ADDITIONAL SECTION:
 '''nas.isalo.org.		38400	IN	A	192.168.0.6'''
 lol.isalo.org.		38400	IN	A	192.168.0.1
 
 ;; Query time: 0 msec
 ;; SERVER: 192.168.0.1#53(192.168.0.1)
 ;; WHEN: Sat Aug 21 08:49:23 2010
 ;; MSG SIZE  rcvd: 135

Vous devez obtenir les deux lignes 'grasses' : le nom de la machine qui héberge le serveur jabber et son IP.

=== Ajout d'un administrateur ===

Nous enregistrons l'utilisateur qui fera l'administration;
Création de l'utilisateur &quot;laurent&quot; du domaine &quot;localhost&quot; avec le mot de passe &quot;motdepasse&quot; :

 # ejabberdctl register laurent localhost motdepasse

Si vous souhaitez par la suite supprimer un utilisateur :

 # ejabberdctl unregister laurent localhost 

Nous redémarrons le service
 # /etc/init.d/ejabberd restart  
ou
 # invoke-rc.d ejabberd restart

=== Premier contact avec l'interface Web ===

Nous nous rendons maintenant à l'adresse suivante pour la console d'administration :

http://127.0.0.1:5280/admin
Connexion avec laurent@localhost motdepasse


[[Fichier:Capture d'écran - 20082010 - 10-51-08.png]]

Vérifions nos domaines :


[[Fichier:Capture d'écran - 20082010 - 11-00-13.png]]

Nous avons bien deux domaines : localhost et isalo.org

== Utilisation ==

Nous allons maintenant tester notre serveur ejabberd...

J'utilise Pidgin, il en existe beaucoup d'autres...

Il suffit de se s'enregistrer via le nom de domaine renseigné dans la configuration, en choisissant de créer (nous l'avons autorisé dans la configuration).
Si ce n'est pas le cas, il vous faudra le faire au travers de l'interface Web d'administration


[[Fichier:Capture d'écran - 20082010 - 11-22-39.png]]


Ici, '''il faut préciser le serveur de connexion''' (soit par son nom - J'ai mis nas - si vous avec un DNS, soit par son IP).

Laissez vide &quot;proxy pour les serveurs de connexion&quot; sinon vous aurez un message d'erreur

[[Fichier:Capture d'écran - 20082010 - 11-24-27.png]]


[[Fichier:Capture d'écran - 20082010 - 11-25-24.png]]


[[Fichier:Capture d'écran - 20082010 - 11-26-14.png]]


[[Fichier:Capture d'écran - 20082010 - 11-32-17.png]]


[[Fichier:Capture d'écran - 20082010 - 11-33-21.png]]


Il nous reste à vérifier que les utilisateurs sont bien inscrits :

[[Fichier:Capture d'écran - 20082010 - 11-35-52.png]]

== Aller plus loin ==


[http://www.ejabberd.im/ le site officiel de ejabberd]

[http://www.ejabberd.im/tutorials De nombreux tutoriaux]

ejabberd est soutenu par Process-one - ''Site commercial''. [http://www.process-one.net/en/ejabberd/ www.process-one.net]

Voici [http://www.process-one.net/en/ejabberd/guide_en une documentation détaillée] (Attention l'installation proposée dans cette documentation passe par un installeur qui n'est pas apt). Vous y trouverez de nombreuses astuces et réglages pour votre configuration.

Beaucoup de modules sont disponibles pour augmenter les possibilités de votre serveur ejabberd (support mysql, support de nombreux autres protocoles, etc.)

[[Utilisateur:Lol|Lol]] 20 août 2010 à 12:17 (EAT)</text>
      <sha1>n9fs94t33urqhxhqtbwgdgj5qjrfsk6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2025</id>
      <parentid>2024</parentid>
      <timestamp>2010-08-24T05:20:44Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="11753">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;
{{{2|}}
}C
et article est une '''ébauche''' concernant  '
'
{{{1|ejabberd}
}}
'
'. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;

'''Installation et configuration de ejabberd sur Lenny'''

Ce tutoriel destiné à l'installation d'un serveur jabberd (ejabberd) à destination d'un réseau local uniquement.
Les question de sécurité et d'ouverture de votre serveur jabberd sur l'extérieur ne seront pas traitées.

L'installation de ejabberd et son administration (grâce à son interface web) sont simples.
Ejabberd permet de créer facilement un serveur permettant les échanges au travers du protocole XMPP, il est stable, supporte des charges importantes.
Ejabberd est un serveur Jabber écrit en Erlang.

== Installation ==

 # apt-get install ejabberd
 ...
 Les paquets supplémentaires suivants seront installés :
 erlang-base erlang-nox libsctp1 lksctp-tools odbcinst1debian1 unixodbc
 ... 

Vérification de l'installation :
 $ erl
 Erlang (BEAM) emulator version 5.6.3 [source] [64-bit] [smp:2] [async-threads:0] [kernel-poll:false]  Eshell V5.6.3  (abort with ^G)
 
 1&gt;  

Pour sortir de la console erlang Ctrl+C puis a puis entré.

(Ctrl+C donne accès à un menu &quot;BREAK&quot;, a pour abort)...

 BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded
        (v)ersion (k)ill (D)b-tables (d)istribution

== Configuration ==

EJabberd se configure dans le fichier /etc/ejabberd/ejabberd.cfg

Nous verrons plus loin comment utiliser l'interface web accessible par 'http://votreserveur:5280/admin' pour réaliser les tâches d'administration.

Avant tout, il faut créer un certificat valide pour le domaine que vous allez utiliser :

 # mv /etc/ejabberd/ejabberd.pem /etc/ejabberd/edjabberd.pem.orig
 $ openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out server.pem
 $ openssl rsa -in privkey.pem -out privkey.pem
 $ cat privkey.pem &gt; server.pem
 $ rm privkey.pem
 # mv server.pem /etc/ejabberd/ejabberd.pem 

Répondez à la question &quot;Common Name&quot; avec votre nom de domaine, c'est primordial car lors de la connexion de vos clients, il leur sera demandé de valider le certificat:

 Organizational Unit Name (eg, section) []:
 Common Name (eg, YOUR name) []:votredomaine.ltd

Notez (ou retenez) le mot de passe demandé au début, même si vous ne devriez plus en avoir besoin par la suite.

Pensez à ouvrir dans votre firewall les ports TCP 5222 et 5269 pour le protocole XMPP, ainsi que le port TCP 5280 pour l'interface web d'administration.

Sauvegarder le fichier de configuration avant d'y faire la moindre modification (prudence...)

 # cp /etc/ejabberd/ejabberd.cfg /etc/ejabberd/ejabberd.cfg.orig 

=== le fichier ejabberd.cfg ===

Complétez maintenant le fichier ejabberd.cfg comme suit :

 # cat /etc/ejabberd/ejabberd.cfg

&lt;code erlang&gt;
{acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}.
{acl, admin, {user, &quot;laurent&quot;, &quot;isalo.org&quot;}}.
{acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}.
{hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}.

{loglevel, 3}.

{listen,
 [
  {5222, ejabberd_c2s, [
                       {access, c2s},
                       {shaper, c2s_shaper},
                       {max_stanza_size, 65536},
                       starttls_required, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                       ]},
 {5269, ejabberd_s2s_in, [
                         {shaper, s2s_shaper},
                         {max_stanza_size, 131072}
                         ]},
 {5280, ejabberd_http, [
                       http_poll,
                       web_admin
                       ]}
 ]}.

{s2s_use_starttls, true}.

{s2s_certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}.

{auth_method, internal}.

{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}. 

{acl, local, {user_regexp, &quot;&quot;}}.

{access, max_user_sessions, [{10, all}]}.
{access, local, [{allow, local}]}.
{access, c2s, [{deny, blocked},
               {allow, all}]}.
{access, c2s_shaper, [{none, admin},
                      {normal, all}]}.
{access, s2s_shaper, [{fast, all}]}.
{access, announce, [{allow, admin}]}.
{access, configure, [{allow, admin}]}.
{access, muc_admin, [{allow, admin}]}.
{access, muc, [{allow, all}]}.
{access, register, [{allow, all}]}.
{access, pubsub_createnode, [{allow, all}]}.

{host_config, &quot;isalo.org&quot;,
 [  
  {access, c2s, [{allow, admin}, {allow, all}]},
  {access, register, [{allow, all}]}
 ]
}.                                 

{language, &quot;fr&quot;}.

{modules,
 [
  {mod_adhoc,    []},
  {mod_announce, [{access, announce}]}, % requires mod_adhoc
  {mod_caps,     []},
  {mod_configure,[]}, % requires mod_adhoc
  {mod_ctlextra, []},               
  {mod_disco,    []},
  %%{mod_echo,   [{host, &quot;echo.localhost&quot;}]},
  {mod_irc,      []},   
  {mod_last,     []},
  {mod_muc,      [
                  %%{host, &quot;conference.@HOST@&quot;},
                  {access, muc},
                  {access_create, muc},
                  {access_persistent, muc},
                  {access_admin, muc_admin},
                  {max_users, 500}
                 ]},
  %%{mod_muc_log,[]},
  {mod_offline,  []},
  {mod_privacy,  []},
  {mod_private,  []},
  {mod_proxy65,  [
                  {access, local},
                  {shaper, c2s_shaper}
                 ]},
  {mod_pubsub,   [ % requires mod_caps
                  {access_createnode, pubsub_createnode},
                  {plugins, [&quot;default&quot;, &quot;pep&quot;]}
                 ]},
  {mod_register, [
                  {welcome_message, {&quot;Bienvenue!&quot;,
                                     &quot;Bienvenue sur le Serveur Jabber de isalo.org. &quot;
                                     &quot;Pour plus d'information à propos de Jabber :&quot;
                                     &quot;http://www.jabber.org&quot;}},

                  {access, register}
                 ]},
  {mod_roster,   []},
  {mod_stats,    []},
  {mod_time,     []},
  {mod_vcard,    []},
  {mod_version,  []}
 ]}.

&lt;/code&gt;

=== Petite explication rapide... ===

Le fichier de configuration ci-dessus est en erlang.
Le caractère % est utilisé, et non # ou ; pour commenter une ligne.
Tous les blocs se terminent par un &quot;.&quot;, il est indispensable!

* le nom du compte administrateur du serveur
 {acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}. {acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}. 

* Les nom d'hôte utilisé :
 {hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}. 

* L'adresse de courriel qui va recevoir les notifications de nouveaux comptes :
 {registration_watchers, [&quot;admin@isalo.org&quot;]}. 

* Le niveau de log (de 0 à 5) - 3 est raisonnable :
 {loglevel, 3}. 

* Les ports utilisés :

Il est recommandé de laisser ceux par défaut :
Nous avons un beau certificat, nous forçons donc la connexion avec ttls : starttls_required

 {listen,
  [
   {5222, ejabberd_c2s, [
                         {access, c2s},
                         {shaper, c2s_shaper},
                         {max_stanza_size, 65536},
                         starttls_required, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                         ]},
   {5269, ejabberd_s2s_in, [
                         {shaper, s2s_shaper},
                         {max_stanza_size, 131072}
                         ]},
   {5280, ejabberd_http, [
                         http_poll,
                         web_admin 
                         ]}
  ]}. 

Je vous laisse découvrir vous-même la suite (A faire!), il s'agit des règles d'accès au serveur (les ACL).
Tel quelle la configuration ci-dessus permet à n'importe qui de s'enregistrer.
Comme ce serveur n'est destiné qu'a votre réseau local, pas de problèmes pour l'instant!

=== DNS ===

Nous allons maintenant ajouter à notre DNS (ici Bind9) les enregistrements nécessaires :
Attention, mon serveur DNS local n'ést pas sur la machine ou tourne ejabberd. J'ai donc précisé sur quelle machine trouver les services (nas.isalo.org)

 _xmpp-server._tcp.isalo.org.	        86400	IN	SRV	5 0 5269 nas.isalo.org.
 _xmpp-client._tcp.jabber.isalo.org.	86400	IN	SRV	5 0 5222 nas.isalo.org.
 _jabber._tcp.jabber.isalo.org.	        86400	IN	SRV	5 0 5222 nas.isalo.org.

Pour vérifier que votre DNS répond bien :

 $ dig -t srv _xmpp-client._tcp.jabber.isalo.org
 
 ; &lt;&lt;&gt;&gt; DiG 9.6-ESV-R1 &lt;&lt;&gt;&gt; -t srv _xmpp-client._tcp.jabber.isalo.org
 ;; global options: +cmd
 ;; Got answer:
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 62356
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
 
 ;; QUESTION SECTION:
 ;_xmpp-client._tcp.jabber.isalo.org. IN	SRV
 
 ;; ANSWER SECTION:
 '''_xmpp-client._tcp.jabber.isalo.org. 86400 IN SRV 5 0 5222 nas.isalo.org.'''
 
 ;; AUTHORITY SECTION:
 isalo.org.		38400	IN	NS	lol.isalo.org.
 
 ;; ADDITIONAL SECTION:
 '''nas.isalo.org.		38400	IN	A	192.168.0.6'''
 lol.isalo.org.		38400	IN	A	192.168.0.1
 
 ;; Query time: 0 msec
 ;; SERVER: 192.168.0.1#53(192.168.0.1)
 ;; WHEN: Sat Aug 21 08:49:23 2010
 ;; MSG SIZE  rcvd: 135

Vous devez obtenir les deux lignes 'grasses' : le nom de la machine qui héberge le serveur jabber et son IP.

=== Ajout d'un administrateur ===

Nous enregistrons l'utilisateur qui fera l'administration;
Création de l'utilisateur &quot;laurent&quot; du domaine &quot;localhost&quot; avec le mot de passe &quot;motdepasse&quot; :

 # ejabberdctl register laurent localhost motdepasse

Si vous souhaitez par la suite supprimer un utilisateur :

 # ejabberdctl unregister laurent localhost 

Nous redémarrons le service
 # /etc/init.d/ejabberd restart  
ou
 # invoke-rc.d ejabberd restart

=== Premier contact avec l'interface Web ===

Nous nous rendons maintenant à l'adresse suivante pour la console d'administration :

http://127.0.0.1:5280/admin
Connexion avec laurent@localhost motdepasse


[[Fichier:Capture d'écran - 20082010 - 10-51-08.png]]

Vérifions nos domaines :


[[Fichier:Capture d'écran - 20082010 - 11-00-13.png]]

Nous avons bien deux domaines : localhost et isalo.org

== Utilisation ==

Nous allons maintenant tester notre serveur ejabberd...

J'utilise Pidgin, il en existe beaucoup d'autres...

Il suffit de se s'enregistrer via le nom de domaine renseigné dans la configuration, en choisissant de créer (nous l'avons autorisé dans la configuration).
Si ce n'est pas le cas, il vous faudra le faire au travers de l'interface Web d'administration


[[Fichier:Capture d'écran - 20082010 - 11-22-39.png]]


Ici, '''il faut préciser le serveur de connexion''' (soit par son nom - J'ai mis nas - si vous avec un DNS, soit par son IP).

Laissez vide &quot;proxy pour les serveurs de connexion&quot; sinon vous aurez un message d'erreur

[[Fichier:Capture d'écran - 20082010 - 11-24-27.png]]


[[Fichier:Capture d'écran - 20082010 - 11-25-24.png]]


[[Fichier:Capture d'écran - 20082010 - 11-26-14.png]]


[[Fichier:Capture d'écran - 20082010 - 11-32-17.png]]


[[Fichier:Capture d'écran - 20082010 - 11-33-21.png]]


Il nous reste à vérifier que les utilisateurs sont bien inscrits :

[[Fichier:Capture d'écran - 20082010 - 11-35-52.png]]

== Aller plus loin ==


[http://www.ejabberd.im/ le site officiel de ejabberd]

[http://www.ejabberd.im/tutorials De nombreux tutoriaux]

ejabberd est soutenu par Process-one - ''Site commercial''. [http://www.process-one.net/en/ejabberd/ www.process-one.net]

Voici [http://www.process-one.net/en/ejabberd/guide_en une documentation détaillée] (Attention l'installation proposée dans cette documentation passe par un installeur qui n'est pas apt). Vous y trouverez de nombreuses astuces et réglages pour votre configuration.

Beaucoup de modules sont disponibles pour augmenter les possibilités de votre serveur ejabberd (support mysql, support de nombreux autres protocoles, etc.)

[[Utilisateur:Lol|Lol]] 20 août 2010 à 12:17 (EAT)</text>
      <sha1>j20yhlw3ywr7mtb3uzcgvcu5q80gt0i</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2026</id>
      <parentid>2025</parentid>
      <timestamp>2010-08-24T05:22:03Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="11745">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|ejabberd}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;

'''Installation et configuration de ejabberd sur Lenny'''

Ce tutoriel destiné à l'installation d'un serveur jabberd (ejabberd) à destination d'un réseau local uniquement.
Les question de sécurité et d'ouverture de votre serveur jabberd sur l'extérieur ne seront pas traitées.

L'installation de ejabberd et son administration (grâce à son interface web) sont simples.
Ejabberd permet de créer facilement un serveur permettant les échanges au travers du protocole XMPP, il est stable, supporte des charges importantes.
Ejabberd est un serveur Jabber écrit en Erlang.

== Installation ==

 # apt-get install ejabberd
 ...
 Les paquets supplémentaires suivants seront installés :
 erlang-base erlang-nox libsctp1 lksctp-tools odbcinst1debian1 unixodbc
 ... 

Vérification de l'installation :
 $ erl
 Erlang (BEAM) emulator version 5.6.3 [source] [64-bit] [smp:2] [async-threads:0] [kernel-poll:false]  Eshell V5.6.3  (abort with ^G)
 
 1&gt;  

Pour sortir de la console erlang Ctrl+C puis a puis entré.

(Ctrl+C donne accès à un menu &quot;BREAK&quot;, a pour abort)...

 BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded
        (v)ersion (k)ill (D)b-tables (d)istribution

== Configuration ==

EJabberd se configure dans le fichier /etc/ejabberd/ejabberd.cfg

Nous verrons plus loin comment utiliser l'interface web accessible par 'http://votreserveur:5280/admin' pour réaliser les tâches d'administration.

Avant tout, il faut créer un certificat valide pour le domaine que vous allez utiliser :

 # mv /etc/ejabberd/ejabberd.pem /etc/ejabberd/edjabberd.pem.orig
 $ openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out server.pem
 $ openssl rsa -in privkey.pem -out privkey.pem
 $ cat privkey.pem &gt; server.pem
 $ rm privkey.pem
 # mv server.pem /etc/ejabberd/ejabberd.pem 

Répondez à la question &quot;Common Name&quot; avec votre nom de domaine, c'est primordial car lors de la connexion de vos clients, il leur sera demandé de valider le certificat:

 Organizational Unit Name (eg, section) []:
 Common Name (eg, YOUR name) []:votredomaine.ltd

Notez (ou retenez) le mot de passe demandé au début, même si vous ne devriez plus en avoir besoin par la suite.

Pensez à ouvrir dans votre firewall les ports TCP 5222 et 5269 pour le protocole XMPP, ainsi que le port TCP 5280 pour l'interface web d'administration.

Sauvegarder le fichier de configuration avant d'y faire la moindre modification (prudence...)

 # cp /etc/ejabberd/ejabberd.cfg /etc/ejabberd/ejabberd.cfg.orig 

=== le fichier ejabberd.cfg ===

Complétez maintenant le fichier ejabberd.cfg comme suit :

 # cat /etc/ejabberd/ejabberd.cfg

&lt;code erlang&gt;
{acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}.
{acl, admin, {user, &quot;laurent&quot;, &quot;isalo.org&quot;}}.
{acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}.
{hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}.

{loglevel, 3}.

{listen,
 [
  {5222, ejabberd_c2s, [
                       {access, c2s},
                       {shaper, c2s_shaper},
                       {max_stanza_size, 65536},
                       starttls_required, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                       ]},
 {5269, ejabberd_s2s_in, [
                         {shaper, s2s_shaper},
                         {max_stanza_size, 131072}
                         ]},
 {5280, ejabberd_http, [
                       http_poll,
                       web_admin
                       ]}
 ]}.

{s2s_use_starttls, true}.

{s2s_certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}.

{auth_method, internal}.

{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}. 

{acl, local, {user_regexp, &quot;&quot;}}.

{access, max_user_sessions, [{10, all}]}.
{access, local, [{allow, local}]}.
{access, c2s, [{deny, blocked},
               {allow, all}]}.
{access, c2s_shaper, [{none, admin},
                      {normal, all}]}.
{access, s2s_shaper, [{fast, all}]}.
{access, announce, [{allow, admin}]}.
{access, configure, [{allow, admin}]}.
{access, muc_admin, [{allow, admin}]}.
{access, muc, [{allow, all}]}.
{access, register, [{allow, all}]}.
{access, pubsub_createnode, [{allow, all}]}.

{host_config, &quot;isalo.org&quot;,
 [  
  {access, c2s, [{allow, admin}, {allow, all}]},
  {access, register, [{allow, all}]}
 ]
}.                                 

{language, &quot;fr&quot;}.

{modules,
 [
  {mod_adhoc,    []},
  {mod_announce, [{access, announce}]}, % requires mod_adhoc
  {mod_caps,     []},
  {mod_configure,[]}, % requires mod_adhoc
  {mod_ctlextra, []},               
  {mod_disco,    []},
  %%{mod_echo,   [{host, &quot;echo.localhost&quot;}]},
  {mod_irc,      []},   
  {mod_last,     []},
  {mod_muc,      [
                  %%{host, &quot;conference.@HOST@&quot;},
                  {access, muc},
                  {access_create, muc},
                  {access_persistent, muc},
                  {access_admin, muc_admin},
                  {max_users, 500}
                 ]},
  %%{mod_muc_log,[]},
  {mod_offline,  []},
  {mod_privacy,  []},
  {mod_private,  []},
  {mod_proxy65,  [
                  {access, local},
                  {shaper, c2s_shaper}
                 ]},
  {mod_pubsub,   [ % requires mod_caps
                  {access_createnode, pubsub_createnode},
                  {plugins, [&quot;default&quot;, &quot;pep&quot;]}
                 ]},
  {mod_register, [
                  {welcome_message, {&quot;Bienvenue!&quot;,
                                     &quot;Bienvenue sur le Serveur Jabber de isalo.org. &quot;
                                     &quot;Pour plus d'information à propos de Jabber :&quot;
                                     &quot;http://www.jabber.org&quot;}},

                  {access, register}
                 ]},
  {mod_roster,   []},
  {mod_stats,    []},
  {mod_time,     []},
  {mod_vcard,    []},
  {mod_version,  []}
 ]}.

&lt;/code&gt;

=== Petite explication rapide... ===

Le fichier de configuration ci-dessus est en erlang.
Le caractère % est utilisé, et non # ou ; pour commenter une ligne.
Tous les blocs se terminent par un &quot;.&quot;, il est indispensable!

* le nom du compte administrateur du serveur
 {acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}. {acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}. 

* Les nom d'hôte utilisé :
 {hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}. 

* L'adresse de courriel qui va recevoir les notifications de nouveaux comptes :
 {registration_watchers, [&quot;admin@isalo.org&quot;]}. 

* Le niveau de log (de 0 à 5) - 3 est raisonnable :
 {loglevel, 3}. 

* Les ports utilisés :

Il est recommandé de laisser ceux par défaut :
Nous avons un beau certificat, nous forçons donc la connexion avec ttls : starttls_required

 {listen,
  [
   {5222, ejabberd_c2s, [
                         {access, c2s},
                         {shaper, c2s_shaper},
                         {max_stanza_size, 65536},
                         starttls_required, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                         ]},
   {5269, ejabberd_s2s_in, [
                         {shaper, s2s_shaper},
                         {max_stanza_size, 131072}
                         ]},
   {5280, ejabberd_http, [
                         http_poll,
                         web_admin 
                         ]}
  ]}. 

Je vous laisse découvrir vous-même la suite (A faire!), il s'agit des règles d'accès au serveur (les ACL).
Tel quelle la configuration ci-dessus permet à n'importe qui de s'enregistrer.
Comme ce serveur n'est destiné qu'a votre réseau local, pas de problèmes pour l'instant!

=== DNS ===

Nous allons maintenant ajouter à notre DNS (ici Bind9) les enregistrements nécessaires :
Attention, mon serveur DNS local n'ést pas sur la machine ou tourne ejabberd. J'ai donc précisé sur quelle machine trouver les services (nas.isalo.org)

 _xmpp-server._tcp.isalo.org.	        86400	IN	SRV	5 0 5269 nas.isalo.org.
 _xmpp-client._tcp.jabber.isalo.org.	86400	IN	SRV	5 0 5222 nas.isalo.org.
 _jabber._tcp.jabber.isalo.org.	        86400	IN	SRV	5 0 5222 nas.isalo.org.

Pour vérifier que votre DNS répond bien :

 $ dig -t srv _xmpp-client._tcp.jabber.isalo.org
 
 ; &lt;&lt;&gt;&gt; DiG 9.6-ESV-R1 &lt;&lt;&gt;&gt; -t srv _xmpp-client._tcp.jabber.isalo.org
 ;; global options: +cmd
 ;; Got answer:
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 62356
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
 
 ;; QUESTION SECTION:
 ;_xmpp-client._tcp.jabber.isalo.org. IN	SRV
 
 ;; ANSWER SECTION:
 '''_xmpp-client._tcp.jabber.isalo.org. 86400 IN SRV 5 0 5222 nas.isalo.org.'''
 
 ;; AUTHORITY SECTION:
 isalo.org.		38400	IN	NS	lol.isalo.org.
 
 ;; ADDITIONAL SECTION:
 '''nas.isalo.org.		38400	IN	A	192.168.0.6'''
 lol.isalo.org.		38400	IN	A	192.168.0.1
 
 ;; Query time: 0 msec
 ;; SERVER: 192.168.0.1#53(192.168.0.1)
 ;; WHEN: Sat Aug 21 08:49:23 2010
 ;; MSG SIZE  rcvd: 135

Vous devez obtenir les deux lignes 'grasses' : le nom de la machine qui héberge le serveur jabber et son IP.

=== Ajout d'un administrateur ===

Nous enregistrons l'utilisateur qui fera l'administration;
Création de l'utilisateur &quot;laurent&quot; du domaine &quot;localhost&quot; avec le mot de passe &quot;motdepasse&quot; :

 # ejabberdctl register laurent localhost motdepasse

Si vous souhaitez par la suite supprimer un utilisateur :

 # ejabberdctl unregister laurent localhost 

Nous redémarrons le service
 # /etc/init.d/ejabberd restart  
ou
 # invoke-rc.d ejabberd restart

=== Premier contact avec l'interface Web ===

Nous nous rendons maintenant à l'adresse suivante pour la console d'administration :

http://127.0.0.1:5280/admin
Connexion avec laurent@localhost motdepasse


[[Fichier:Capture d'écran - 20082010 - 10-51-08.png]]

Vérifions nos domaines :


[[Fichier:Capture d'écran - 20082010 - 11-00-13.png]]

Nous avons bien deux domaines : localhost et isalo.org

== Utilisation ==

Nous allons maintenant tester notre serveur ejabberd...

J'utilise Pidgin, il en existe beaucoup d'autres...

Il suffit de se s'enregistrer via le nom de domaine renseigné dans la configuration, en choisissant de créer (nous l'avons autorisé dans la configuration).
Si ce n'est pas le cas, il vous faudra le faire au travers de l'interface Web d'administration


[[Fichier:Capture d'écran - 20082010 - 11-22-39.png]]


Ici, '''il faut préciser le serveur de connexion''' (soit par son nom - J'ai mis nas - si vous avec un DNS, soit par son IP).

Laissez vide &quot;proxy pour les serveurs de connexion&quot; sinon vous aurez un message d'erreur

[[Fichier:Capture d'écran - 20082010 - 11-24-27.png]]


[[Fichier:Capture d'écran - 20082010 - 11-25-24.png]]


[[Fichier:Capture d'écran - 20082010 - 11-26-14.png]]


[[Fichier:Capture d'écran - 20082010 - 11-32-17.png]]


[[Fichier:Capture d'écran - 20082010 - 11-33-21.png]]


Il nous reste à vérifier que les utilisateurs sont bien inscrits :

[[Fichier:Capture d'écran - 20082010 - 11-35-52.png]]

== Aller plus loin ==


[http://www.ejabberd.im/ le site officiel de ejabberd]

[http://www.ejabberd.im/tutorials De nombreux tutoriaux]

ejabberd est soutenu par Process-one - ''Site commercial''. [http://www.process-one.net/en/ejabberd/ www.process-one.net]

Voici [http://www.process-one.net/en/ejabberd/guide_en une documentation détaillée] (Attention l'installation proposée dans cette documentation passe par un installeur qui n'est pas apt). Vous y trouverez de nombreuses astuces et réglages pour votre configuration.

Beaucoup de modules sont disponibles pour augmenter les possibilités de votre serveur ejabberd (support mysql, support de nombreux autres protocoles, etc.)

[[Utilisateur:Lol|Lol]] 20 août 2010 à 12:17 (EAT)</text>
      <sha1>bjt7wm7nf2na209abb2fvb9e348t5nq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2037</id>
      <parentid>2026</parentid>
      <timestamp>2010-09-01T06:09:30Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Configuration */</comment>
      <text xml:space="preserve" bytes="11744">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|ejabberd}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;

'''Installation et configuration de ejabberd sur Lenny'''

Ce tutoriel destiné à l'installation d'un serveur jabberd (ejabberd) à destination d'un réseau local uniquement.
Les question de sécurité et d'ouverture de votre serveur jabberd sur l'extérieur ne seront pas traitées.

L'installation de ejabberd et son administration (grâce à son interface web) sont simples.
Ejabberd permet de créer facilement un serveur permettant les échanges au travers du protocole XMPP, il est stable, supporte des charges importantes.
Ejabberd est un serveur Jabber écrit en Erlang.

== Installation ==

 # apt-get install ejabberd
 ...
 Les paquets supplémentaires suivants seront installés :
 erlang-base erlang-nox libsctp1 lksctp-tools odbcinst1debian1 unixodbc
 ... 

Vérification de l'installation :
 $ erl
 Erlang (BEAM) emulator version 5.6.3 [source] [64-bit] [smp:2] [async-threads:0] [kernel-poll:false]  Eshell V5.6.3  (abort with ^G)
 
 1&gt;  

Pour sortir de la console erlang Ctrl+C puis a puis entré.

(Ctrl+C donne accès à un menu &quot;BREAK&quot;, a pour abort)...

 BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded
        (v)ersion (k)ill (D)b-tables (d)istribution

== Configuration ==

EJabberd se configure dans le fichier /etc/ejabberd/ejabberd.cfg

Nous verrons plus loin comment utiliser l'interface web accessible par 'http://votreserveur:5280/admin' pour réaliser les tâches d'administration.

Avant tout, il faut créer un certificat valide pour le domaine que vous allez utiliser :

 # mv /etc/ejabberd/ejabberd.pem /etc/ejabberd/ejabberd.pem.orig
 $ openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out server.pem
 $ openssl rsa -in privkey.pem -out privkey.pem
 $ cat privkey.pem &gt; server.pem
 $ rm privkey.pem
 # mv server.pem /etc/ejabberd/ejabberd.pem 

Répondez à la question &quot;Common Name&quot; avec votre nom de domaine, c'est primordial car lors de la connexion de vos clients, il leur sera demandé de valider le certificat:

 Organizational Unit Name (eg, section) []:
 Common Name (eg, YOUR name) []:votredomaine.ltd

Notez (ou retenez) le mot de passe demandé au début, même si vous ne devriez plus en avoir besoin par la suite.

Pensez à ouvrir dans votre firewall les ports TCP 5222 et 5269 pour le protocole XMPP, ainsi que le port TCP 5280 pour l'interface web d'administration.

Sauvegarder le fichier de configuration avant d'y faire la moindre modification (prudence...)

 # cp /etc/ejabberd/ejabberd.cfg /etc/ejabberd/ejabberd.cfg.orig 

=== le fichier ejabberd.cfg ===

Complétez maintenant le fichier ejabberd.cfg comme suit :

 # cat /etc/ejabberd/ejabberd.cfg

&lt;code erlang&gt;
{acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}.
{acl, admin, {user, &quot;laurent&quot;, &quot;isalo.org&quot;}}.
{acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}.
{hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}.

{loglevel, 3}.

{listen,
 [
  {5222, ejabberd_c2s, [
                       {access, c2s},
                       {shaper, c2s_shaper},
                       {max_stanza_size, 65536},
                       starttls_required, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                       ]},
 {5269, ejabberd_s2s_in, [
                         {shaper, s2s_shaper},
                         {max_stanza_size, 131072}
                         ]},
 {5280, ejabberd_http, [
                       http_poll,
                       web_admin
                       ]}
 ]}.

{s2s_use_starttls, true}.

{s2s_certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}.

{auth_method, internal}.

{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}. 

{acl, local, {user_regexp, &quot;&quot;}}.

{access, max_user_sessions, [{10, all}]}.
{access, local, [{allow, local}]}.
{access, c2s, [{deny, blocked},
               {allow, all}]}.
{access, c2s_shaper, [{none, admin},
                      {normal, all}]}.
{access, s2s_shaper, [{fast, all}]}.
{access, announce, [{allow, admin}]}.
{access, configure, [{allow, admin}]}.
{access, muc_admin, [{allow, admin}]}.
{access, muc, [{allow, all}]}.
{access, register, [{allow, all}]}.
{access, pubsub_createnode, [{allow, all}]}.

{host_config, &quot;isalo.org&quot;,
 [  
  {access, c2s, [{allow, admin}, {allow, all}]},
  {access, register, [{allow, all}]}
 ]
}.                                 

{language, &quot;fr&quot;}.

{modules,
 [
  {mod_adhoc,    []},
  {mod_announce, [{access, announce}]}, % requires mod_adhoc
  {mod_caps,     []},
  {mod_configure,[]}, % requires mod_adhoc
  {mod_ctlextra, []},               
  {mod_disco,    []},
  %%{mod_echo,   [{host, &quot;echo.localhost&quot;}]},
  {mod_irc,      []},   
  {mod_last,     []},
  {mod_muc,      [
                  %%{host, &quot;conference.@HOST@&quot;},
                  {access, muc},
                  {access_create, muc},
                  {access_persistent, muc},
                  {access_admin, muc_admin},
                  {max_users, 500}
                 ]},
  %%{mod_muc_log,[]},
  {mod_offline,  []},
  {mod_privacy,  []},
  {mod_private,  []},
  {mod_proxy65,  [
                  {access, local},
                  {shaper, c2s_shaper}
                 ]},
  {mod_pubsub,   [ % requires mod_caps
                  {access_createnode, pubsub_createnode},
                  {plugins, [&quot;default&quot;, &quot;pep&quot;]}
                 ]},
  {mod_register, [
                  {welcome_message, {&quot;Bienvenue!&quot;,
                                     &quot;Bienvenue sur le Serveur Jabber de isalo.org. &quot;
                                     &quot;Pour plus d'information à propos de Jabber :&quot;
                                     &quot;http://www.jabber.org&quot;}},

                  {access, register}
                 ]},
  {mod_roster,   []},
  {mod_stats,    []},
  {mod_time,     []},
  {mod_vcard,    []},
  {mod_version,  []}
 ]}.

&lt;/code&gt;

=== Petite explication rapide... ===

Le fichier de configuration ci-dessus est en erlang.
Le caractère % est utilisé, et non # ou ; pour commenter une ligne.
Tous les blocs se terminent par un &quot;.&quot;, il est indispensable!

* le nom du compte administrateur du serveur
 {acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}. {acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}. 

* Les nom d'hôte utilisé :
 {hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}. 

* L'adresse de courriel qui va recevoir les notifications de nouveaux comptes :
 {registration_watchers, [&quot;admin@isalo.org&quot;]}. 

* Le niveau de log (de 0 à 5) - 3 est raisonnable :
 {loglevel, 3}. 

* Les ports utilisés :

Il est recommandé de laisser ceux par défaut :
Nous avons un beau certificat, nous forçons donc la connexion avec ttls : starttls_required

 {listen,
  [
   {5222, ejabberd_c2s, [
                         {access, c2s},
                         {shaper, c2s_shaper},
                         {max_stanza_size, 65536},
                         starttls_required, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                         ]},
   {5269, ejabberd_s2s_in, [
                         {shaper, s2s_shaper},
                         {max_stanza_size, 131072}
                         ]},
   {5280, ejabberd_http, [
                         http_poll,
                         web_admin 
                         ]}
  ]}. 

Je vous laisse découvrir vous-même la suite (A faire!), il s'agit des règles d'accès au serveur (les ACL).
Tel quelle la configuration ci-dessus permet à n'importe qui de s'enregistrer.
Comme ce serveur n'est destiné qu'a votre réseau local, pas de problèmes pour l'instant!

=== DNS ===

Nous allons maintenant ajouter à notre DNS (ici Bind9) les enregistrements nécessaires :
Attention, mon serveur DNS local n'ést pas sur la machine ou tourne ejabberd. J'ai donc précisé sur quelle machine trouver les services (nas.isalo.org)

 _xmpp-server._tcp.isalo.org.	        86400	IN	SRV	5 0 5269 nas.isalo.org.
 _xmpp-client._tcp.jabber.isalo.org.	86400	IN	SRV	5 0 5222 nas.isalo.org.
 _jabber._tcp.jabber.isalo.org.	        86400	IN	SRV	5 0 5222 nas.isalo.org.

Pour vérifier que votre DNS répond bien :

 $ dig -t srv _xmpp-client._tcp.jabber.isalo.org
 
 ; &lt;&lt;&gt;&gt; DiG 9.6-ESV-R1 &lt;&lt;&gt;&gt; -t srv _xmpp-client._tcp.jabber.isalo.org
 ;; global options: +cmd
 ;; Got answer:
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 62356
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
 
 ;; QUESTION SECTION:
 ;_xmpp-client._tcp.jabber.isalo.org. IN	SRV
 
 ;; ANSWER SECTION:
 '''_xmpp-client._tcp.jabber.isalo.org. 86400 IN SRV 5 0 5222 nas.isalo.org.'''
 
 ;; AUTHORITY SECTION:
 isalo.org.		38400	IN	NS	lol.isalo.org.
 
 ;; ADDITIONAL SECTION:
 '''nas.isalo.org.		38400	IN	A	192.168.0.6'''
 lol.isalo.org.		38400	IN	A	192.168.0.1
 
 ;; Query time: 0 msec
 ;; SERVER: 192.168.0.1#53(192.168.0.1)
 ;; WHEN: Sat Aug 21 08:49:23 2010
 ;; MSG SIZE  rcvd: 135

Vous devez obtenir les deux lignes 'grasses' : le nom de la machine qui héberge le serveur jabber et son IP.

=== Ajout d'un administrateur ===

Nous enregistrons l'utilisateur qui fera l'administration;
Création de l'utilisateur &quot;laurent&quot; du domaine &quot;localhost&quot; avec le mot de passe &quot;motdepasse&quot; :

 # ejabberdctl register laurent localhost motdepasse

Si vous souhaitez par la suite supprimer un utilisateur :

 # ejabberdctl unregister laurent localhost 

Nous redémarrons le service
 # /etc/init.d/ejabberd restart  
ou
 # invoke-rc.d ejabberd restart

=== Premier contact avec l'interface Web ===

Nous nous rendons maintenant à l'adresse suivante pour la console d'administration :

http://127.0.0.1:5280/admin
Connexion avec laurent@localhost motdepasse


[[Fichier:Capture d'écran - 20082010 - 10-51-08.png]]

Vérifions nos domaines :


[[Fichier:Capture d'écran - 20082010 - 11-00-13.png]]

Nous avons bien deux domaines : localhost et isalo.org

== Utilisation ==

Nous allons maintenant tester notre serveur ejabberd...

J'utilise Pidgin, il en existe beaucoup d'autres...

Il suffit de se s'enregistrer via le nom de domaine renseigné dans la configuration, en choisissant de créer (nous l'avons autorisé dans la configuration).
Si ce n'est pas le cas, il vous faudra le faire au travers de l'interface Web d'administration


[[Fichier:Capture d'écran - 20082010 - 11-22-39.png]]


Ici, '''il faut préciser le serveur de connexion''' (soit par son nom - J'ai mis nas - si vous avec un DNS, soit par son IP).

Laissez vide &quot;proxy pour les serveurs de connexion&quot; sinon vous aurez un message d'erreur

[[Fichier:Capture d'écran - 20082010 - 11-24-27.png]]


[[Fichier:Capture d'écran - 20082010 - 11-25-24.png]]


[[Fichier:Capture d'écran - 20082010 - 11-26-14.png]]


[[Fichier:Capture d'écran - 20082010 - 11-32-17.png]]


[[Fichier:Capture d'écran - 20082010 - 11-33-21.png]]


Il nous reste à vérifier que les utilisateurs sont bien inscrits :

[[Fichier:Capture d'écran - 20082010 - 11-35-52.png]]

== Aller plus loin ==


[http://www.ejabberd.im/ le site officiel de ejabberd]

[http://www.ejabberd.im/tutorials De nombreux tutoriaux]

ejabberd est soutenu par Process-one - ''Site commercial''. [http://www.process-one.net/en/ejabberd/ www.process-one.net]

Voici [http://www.process-one.net/en/ejabberd/guide_en une documentation détaillée] (Attention l'installation proposée dans cette documentation passe par un installeur qui n'est pas apt). Vous y trouverez de nombreuses astuces et réglages pour votre configuration.

Beaucoup de modules sont disponibles pour augmenter les possibilités de votre serveur ejabberd (support mysql, support de nombreux autres protocoles, etc.)

[[Utilisateur:Lol|Lol]] 20 août 2010 à 12:17 (EAT)</text>
      <sha1>1geguzyq5vazgoz28ek6rbbk7ef3mgs</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2038</id>
      <parentid>2037</parentid>
      <timestamp>2010-09-01T06:31:44Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Configuration */</comment>
      <text xml:space="preserve" bytes="12107">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|ejabberd}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;

'''Installation et configuration de ejabberd sur Lenny'''

Ce tutoriel destiné à l'installation d'un serveur jabberd (ejabberd) à destination d'un réseau local uniquement.
Les question de sécurité et d'ouverture de votre serveur jabberd sur l'extérieur ne seront pas traitées.

L'installation de ejabberd et son administration (grâce à son interface web) sont simples.
Ejabberd permet de créer facilement un serveur permettant les échanges au travers du protocole XMPP, il est stable, supporte des charges importantes.
Ejabberd est un serveur Jabber écrit en Erlang.

== Installation ==

 # apt-get install ejabberd
 ...
 Les paquets supplémentaires suivants seront installés :
 erlang-base erlang-nox libsctp1 lksctp-tools odbcinst1debian1 unixodbc
 ... 

Vérification de l'installation :
 $ erl
 Erlang (BEAM) emulator version 5.6.3 [source] [64-bit] [smp:2] [async-threads:0] [kernel-poll:false]  Eshell V5.6.3  (abort with ^G)
 
 1&gt;  

Pour sortir de la console erlang Ctrl+C puis a puis entré.

(Ctrl+C donne accès à un menu &quot;BREAK&quot;, a pour abort)...

 BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded
        (v)ersion (k)ill (D)b-tables (d)istribution

== Configuration ==

EJabberd se configure dans le fichier /etc/ejabberd/ejabberd.cfg

Nous verrons plus loin comment utiliser l'interface web accessible par 'http://votreserveur:5280/admin' pour réaliser les tâches d'administration.

Avant tout, il faut créer un certificat valide pour le domaine que vous allez utiliser :

 # mv /etc/ejabberd/ejabberd.pem /etc/ejabberd/ejabberd.pem.orig
 $ openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out server.pem
 $ openssl rsa -in privkey.pem -out privkey.pem
 $ cat privkey.pem &gt; server.pem
 $ rm privkey.pem
 # mv server.pem /etc/ejabberd/ejabberd.pem 

Répondez à la question &quot;Common Name&quot; avec votre nom de domaine, c'est primordial car lors de la connexion de vos clients, il leur sera demandé de valider le certificat:

 Organizational Unit Name (eg, section) []:
 Common Name (eg, YOUR name) []:votredomaine.ltd

Notez (ou retenez) le mot de passe demandé au début, même si vous ne devriez plus en avoir besoin par la suite.

Remarque au sujet du certificat:
Si avec cette commande ($ cat privkey.pem &gt; server.pem) vous obtenez une erreur de ce genre :

 ** Reason for termination =
 ** { {badmatch,{error,&quot;SSL_CTX_use_certificate_file failed: error:0906D06C:PEM routines:PEM_read_bio:no start line&quot;}},

Recommencez votre certificat avec cette commande : $ cat privkey.pem &gt;&gt; server.pem


Pensez à ouvrir dans votre firewall les ports TCP 5222 et 5269 pour le protocole XMPP, ainsi que le port TCP 5280 pour l'interface web d'administration.

Sauvegarder le fichier de configuration avant d'y faire la moindre modification (prudence...)

 # cp /etc/ejabberd/ejabberd.cfg /etc/ejabberd/ejabberd.cfg.orig 

=== le fichier ejabberd.cfg ===

Complétez maintenant le fichier ejabberd.cfg comme suit :

 # cat /etc/ejabberd/ejabberd.cfg

&lt;code erlang&gt;
{acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}.
{acl, admin, {user, &quot;laurent&quot;, &quot;isalo.org&quot;}}.
{acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}.
{hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}.

{loglevel, 3}.

{listen,
 [
  {5222, ejabberd_c2s, [
                       {access, c2s},
                       {shaper, c2s_shaper},
                       {max_stanza_size, 65536},
                       starttls_required, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                       ]},
 {5269, ejabberd_s2s_in, [
                         {shaper, s2s_shaper},
                         {max_stanza_size, 131072}
                         ]},
 {5280, ejabberd_http, [
                       http_poll,
                       web_admin
                       ]}
 ]}.

{s2s_use_starttls, true}.

{s2s_certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}.

{auth_method, internal}.

{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}. 

{acl, local, {user_regexp, &quot;&quot;}}.

{access, max_user_sessions, [{10, all}]}.
{access, local, [{allow, local}]}.
{access, c2s, [{deny, blocked},
               {allow, all}]}.
{access, c2s_shaper, [{none, admin},
                      {normal, all}]}.
{access, s2s_shaper, [{fast, all}]}.
{access, announce, [{allow, admin}]}.
{access, configure, [{allow, admin}]}.
{access, muc_admin, [{allow, admin}]}.
{access, muc, [{allow, all}]}.
{access, register, [{allow, all}]}.
{access, pubsub_createnode, [{allow, all}]}.

{host_config, &quot;isalo.org&quot;,
 [  
  {access, c2s, [{allow, admin}, {allow, all}]},
  {access, register, [{allow, all}]}
 ]
}.                                 

{language, &quot;fr&quot;}.

{modules,
 [
  {mod_adhoc,    []},
  {mod_announce, [{access, announce}]}, % requires mod_adhoc
  {mod_caps,     []},
  {mod_configure,[]}, % requires mod_adhoc
  {mod_ctlextra, []},               
  {mod_disco,    []},
  %%{mod_echo,   [{host, &quot;echo.localhost&quot;}]},
  {mod_irc,      []},   
  {mod_last,     []},
  {mod_muc,      [
                  %%{host, &quot;conference.@HOST@&quot;},
                  {access, muc},
                  {access_create, muc},
                  {access_persistent, muc},
                  {access_admin, muc_admin},
                  {max_users, 500}
                 ]},
  %%{mod_muc_log,[]},
  {mod_offline,  []},
  {mod_privacy,  []},
  {mod_private,  []},
  {mod_proxy65,  [
                  {access, local},
                  {shaper, c2s_shaper}
                 ]},
  {mod_pubsub,   [ % requires mod_caps
                  {access_createnode, pubsub_createnode},
                  {plugins, [&quot;default&quot;, &quot;pep&quot;]}
                 ]},
  {mod_register, [
                  {welcome_message, {&quot;Bienvenue!&quot;,
                                     &quot;Bienvenue sur le Serveur Jabber de isalo.org. &quot;
                                     &quot;Pour plus d'information à propos de Jabber :&quot;
                                     &quot;http://www.jabber.org&quot;}},

                  {access, register}
                 ]},
  {mod_roster,   []},
  {mod_stats,    []},
  {mod_time,     []},
  {mod_vcard,    []},
  {mod_version,  []}
 ]}.

&lt;/code&gt;

=== Petite explication rapide... ===

Le fichier de configuration ci-dessus est en erlang.
Le caractère % est utilisé, et non # ou ; pour commenter une ligne.
Tous les blocs se terminent par un &quot;.&quot;, il est indispensable!

* le nom du compte administrateur du serveur
 {acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}. {acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}. 

* Les nom d'hôte utilisé :
 {hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}. 

* L'adresse de courriel qui va recevoir les notifications de nouveaux comptes :
 {registration_watchers, [&quot;admin@isalo.org&quot;]}. 

* Le niveau de log (de 0 à 5) - 3 est raisonnable :
 {loglevel, 3}. 

* Les ports utilisés :

Il est recommandé de laisser ceux par défaut :
Nous avons un beau certificat, nous forçons donc la connexion avec ttls : starttls_required

 {listen,
  [
   {5222, ejabberd_c2s, [
                         {access, c2s},
                         {shaper, c2s_shaper},
                         {max_stanza_size, 65536},
                         starttls_required, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                         ]},
   {5269, ejabberd_s2s_in, [
                         {shaper, s2s_shaper},
                         {max_stanza_size, 131072}
                         ]},
   {5280, ejabberd_http, [
                         http_poll,
                         web_admin 
                         ]}
  ]}. 

Je vous laisse découvrir vous-même la suite (A faire!), il s'agit des règles d'accès au serveur (les ACL).
Tel quelle la configuration ci-dessus permet à n'importe qui de s'enregistrer.
Comme ce serveur n'est destiné qu'a votre réseau local, pas de problèmes pour l'instant!

=== DNS ===

Nous allons maintenant ajouter à notre DNS (ici Bind9) les enregistrements nécessaires :
Attention, mon serveur DNS local n'ést pas sur la machine ou tourne ejabberd. J'ai donc précisé sur quelle machine trouver les services (nas.isalo.org)

 _xmpp-server._tcp.isalo.org.	        86400	IN	SRV	5 0 5269 nas.isalo.org.
 _xmpp-client._tcp.jabber.isalo.org.	86400	IN	SRV	5 0 5222 nas.isalo.org.
 _jabber._tcp.jabber.isalo.org.	        86400	IN	SRV	5 0 5222 nas.isalo.org.

Pour vérifier que votre DNS répond bien :

 $ dig -t srv _xmpp-client._tcp.jabber.isalo.org
 
 ; &lt;&lt;&gt;&gt; DiG 9.6-ESV-R1 &lt;&lt;&gt;&gt; -t srv _xmpp-client._tcp.jabber.isalo.org
 ;; global options: +cmd
 ;; Got answer:
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 62356
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
 
 ;; QUESTION SECTION:
 ;_xmpp-client._tcp.jabber.isalo.org. IN	SRV
 
 ;; ANSWER SECTION:
 '''_xmpp-client._tcp.jabber.isalo.org. 86400 IN SRV 5 0 5222 nas.isalo.org.'''
 
 ;; AUTHORITY SECTION:
 isalo.org.		38400	IN	NS	lol.isalo.org.
 
 ;; ADDITIONAL SECTION:
 '''nas.isalo.org.		38400	IN	A	192.168.0.6'''
 lol.isalo.org.		38400	IN	A	192.168.0.1
 
 ;; Query time: 0 msec
 ;; SERVER: 192.168.0.1#53(192.168.0.1)
 ;; WHEN: Sat Aug 21 08:49:23 2010
 ;; MSG SIZE  rcvd: 135

Vous devez obtenir les deux lignes 'grasses' : le nom de la machine qui héberge le serveur jabber et son IP.

=== Ajout d'un administrateur ===

Nous enregistrons l'utilisateur qui fera l'administration;
Création de l'utilisateur &quot;laurent&quot; du domaine &quot;localhost&quot; avec le mot de passe &quot;motdepasse&quot; :

 # ejabberdctl register laurent localhost motdepasse

Si vous souhaitez par la suite supprimer un utilisateur :

 # ejabberdctl unregister laurent localhost 

Nous redémarrons le service
 # /etc/init.d/ejabberd restart  
ou
 # invoke-rc.d ejabberd restart

=== Premier contact avec l'interface Web ===

Nous nous rendons maintenant à l'adresse suivante pour la console d'administration :

http://127.0.0.1:5280/admin
Connexion avec laurent@localhost motdepasse


[[Fichier:Capture d'écran - 20082010 - 10-51-08.png]]

Vérifions nos domaines :


[[Fichier:Capture d'écran - 20082010 - 11-00-13.png]]

Nous avons bien deux domaines : localhost et isalo.org

== Utilisation ==

Nous allons maintenant tester notre serveur ejabberd...

J'utilise Pidgin, il en existe beaucoup d'autres...

Il suffit de se s'enregistrer via le nom de domaine renseigné dans la configuration, en choisissant de créer (nous l'avons autorisé dans la configuration).
Si ce n'est pas le cas, il vous faudra le faire au travers de l'interface Web d'administration


[[Fichier:Capture d'écran - 20082010 - 11-22-39.png]]


Ici, '''il faut préciser le serveur de connexion''' (soit par son nom - J'ai mis nas - si vous avec un DNS, soit par son IP).

Laissez vide &quot;proxy pour les serveurs de connexion&quot; sinon vous aurez un message d'erreur

[[Fichier:Capture d'écran - 20082010 - 11-24-27.png]]


[[Fichier:Capture d'écran - 20082010 - 11-25-24.png]]


[[Fichier:Capture d'écran - 20082010 - 11-26-14.png]]


[[Fichier:Capture d'écran - 20082010 - 11-32-17.png]]


[[Fichier:Capture d'écran - 20082010 - 11-33-21.png]]


Il nous reste à vérifier que les utilisateurs sont bien inscrits :

[[Fichier:Capture d'écran - 20082010 - 11-35-52.png]]

== Aller plus loin ==


[http://www.ejabberd.im/ le site officiel de ejabberd]

[http://www.ejabberd.im/tutorials De nombreux tutoriaux]

ejabberd est soutenu par Process-one - ''Site commercial''. [http://www.process-one.net/en/ejabberd/ www.process-one.net]

Voici [http://www.process-one.net/en/ejabberd/guide_en une documentation détaillée] (Attention l'installation proposée dans cette documentation passe par un installeur qui n'est pas apt). Vous y trouverez de nombreuses astuces et réglages pour votre configuration.

Beaucoup de modules sont disponibles pour augmenter les possibilités de votre serveur ejabberd (support mysql, support de nombreux autres protocoles, etc.)

[[Utilisateur:Lol|Lol]] 20 août 2010 à 12:17 (EAT)</text>
      <sha1>6d5d14mxdgejv1cwg6kf2eplu5jtorp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3966</id>
      <parentid>2038</parentid>
      <timestamp>2012-03-17T08:59:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Installation */</comment>
      <text xml:space="preserve" bytes="12299">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|ejabberd}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;

'''Installation et configuration de ejabberd sur Lenny'''

Ce tutoriel destiné à l'installation d'un serveur jabberd (ejabberd) à destination d'un réseau local uniquement.
Les question de sécurité et d'ouverture de votre serveur jabberd sur l'extérieur ne seront pas traitées.

L'installation de ejabberd et son administration (grâce à son interface web) sont simples.
Ejabberd permet de créer facilement un serveur permettant les échanges au travers du protocole XMPP, il est stable, supporte des charges importantes.
Ejabberd est un serveur Jabber écrit en Erlang.

== Installation ==

 # aptitude install ejabberd
 ...
 Les NOUVEAUX paquets suivants vont être installés : 
   ejabberd erlang-asn1{a} erlang-base{a} erlang-crypto{a} erlang-inets{a} erlang-mnesia{a} erlang-odbc{a} erlang-public-key{a} 
   erlang-runtime-tools{a} erlang-ssl{a} erlang-syntax-tools{a} libsctp1{a} lksctp-tools{a} odbcinst{a} odbcinst1debian2{a} unixodbc{a}
 ... 

Vérification de l'installation :
 $ erl
 Erlang (BEAM) emulator version 5.6.3 [source] [64-bit] [smp:2] [async-threads:0] [kernel-poll:false]  Eshell V5.6.3  (abort with ^G)
 
 1&gt;  

Pour sortir de la console erlang Ctrl+C puis a puis entré.

(Ctrl+C donne accès à un menu &quot;BREAK&quot;, a pour abort)...

 BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded
        (v)ersion (k)ill (D)b-tables (d)istribution

== Configuration ==

EJabberd se configure dans le fichier /etc/ejabberd/ejabberd.cfg

Nous verrons plus loin comment utiliser l'interface web accessible par 'http://votreserveur:5280/admin' pour réaliser les tâches d'administration.

Avant tout, il faut créer un certificat valide pour le domaine que vous allez utiliser :

 # mv /etc/ejabberd/ejabberd.pem /etc/ejabberd/ejabberd.pem.orig
 $ openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out server.pem
 $ openssl rsa -in privkey.pem -out privkey.pem
 $ cat privkey.pem &gt; server.pem
 $ rm privkey.pem
 # mv server.pem /etc/ejabberd/ejabberd.pem 

Répondez à la question &quot;Common Name&quot; avec votre nom de domaine, c'est primordial car lors de la connexion de vos clients, il leur sera demandé de valider le certificat:

 Organizational Unit Name (eg, section) []:
 Common Name (eg, YOUR name) []:votredomaine.ltd

Notez (ou retenez) le mot de passe demandé au début, même si vous ne devriez plus en avoir besoin par la suite.

Remarque au sujet du certificat:
Si avec cette commande ($ cat privkey.pem &gt; server.pem) vous obtenez une erreur de ce genre :

 ** Reason for termination =
 ** { {badmatch,{error,&quot;SSL_CTX_use_certificate_file failed: error:0906D06C:PEM routines:PEM_read_bio:no start line&quot;}},

Recommencez votre certificat avec cette commande : $ cat privkey.pem &gt;&gt; server.pem


Pensez à ouvrir dans votre firewall les ports TCP 5222 et 5269 pour le protocole XMPP, ainsi que le port TCP 5280 pour l'interface web d'administration.

Sauvegarder le fichier de configuration avant d'y faire la moindre modification (prudence...)

 # cp /etc/ejabberd/ejabberd.cfg /etc/ejabberd/ejabberd.cfg.orig 

=== le fichier ejabberd.cfg ===

Complétez maintenant le fichier ejabberd.cfg comme suit :

 # cat /etc/ejabberd/ejabberd.cfg

&lt;code erlang&gt;
{acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}.
{acl, admin, {user, &quot;laurent&quot;, &quot;isalo.org&quot;}}.
{acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}.
{hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}.

{loglevel, 3}.

{listen,
 [
  {5222, ejabberd_c2s, [
                       {access, c2s},
                       {shaper, c2s_shaper},
                       {max_stanza_size, 65536},
                       starttls_required, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                       ]},
 {5269, ejabberd_s2s_in, [
                         {shaper, s2s_shaper},
                         {max_stanza_size, 131072}
                         ]},
 {5280, ejabberd_http, [
                       http_poll,
                       web_admin
                       ]}
 ]}.

{s2s_use_starttls, true}.

{s2s_certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}.

{auth_method, internal}.

{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}. 

{acl, local, {user_regexp, &quot;&quot;}}.

{access, max_user_sessions, [{10, all}]}.
{access, local, [{allow, local}]}.
{access, c2s, [{deny, blocked},
               {allow, all}]}.
{access, c2s_shaper, [{none, admin},
                      {normal, all}]}.
{access, s2s_shaper, [{fast, all}]}.
{access, announce, [{allow, admin}]}.
{access, configure, [{allow, admin}]}.
{access, muc_admin, [{allow, admin}]}.
{access, muc, [{allow, all}]}.
{access, register, [{allow, all}]}.
{access, pubsub_createnode, [{allow, all}]}.

{host_config, &quot;isalo.org&quot;,
 [  
  {access, c2s, [{allow, admin}, {allow, all}]},
  {access, register, [{allow, all}]}
 ]
}.                                 

{language, &quot;fr&quot;}.

{modules,
 [
  {mod_adhoc,    []},
  {mod_announce, [{access, announce}]}, % requires mod_adhoc
  {mod_caps,     []},
  {mod_configure,[]}, % requires mod_adhoc
  {mod_ctlextra, []},               
  {mod_disco,    []},
  %%{mod_echo,   [{host, &quot;echo.localhost&quot;}]},
  {mod_irc,      []},   
  {mod_last,     []},
  {mod_muc,      [
                  %%{host, &quot;conference.@HOST@&quot;},
                  {access, muc},
                  {access_create, muc},
                  {access_persistent, muc},
                  {access_admin, muc_admin},
                  {max_users, 500}
                 ]},
  %%{mod_muc_log,[]},
  {mod_offline,  []},
  {mod_privacy,  []},
  {mod_private,  []},
  {mod_proxy65,  [
                  {access, local},
                  {shaper, c2s_shaper}
                 ]},
  {mod_pubsub,   [ % requires mod_caps
                  {access_createnode, pubsub_createnode},
                  {plugins, [&quot;default&quot;, &quot;pep&quot;]}
                 ]},
  {mod_register, [
                  {welcome_message, {&quot;Bienvenue!&quot;,
                                     &quot;Bienvenue sur le Serveur Jabber de isalo.org. &quot;
                                     &quot;Pour plus d'information à propos de Jabber :&quot;
                                     &quot;http://www.jabber.org&quot;}},

                  {access, register}
                 ]},
  {mod_roster,   []},
  {mod_stats,    []},
  {mod_time,     []},
  {mod_vcard,    []},
  {mod_version,  []}
 ]}.

&lt;/code&gt;

=== Petite explication rapide... ===

Le fichier de configuration ci-dessus est en erlang.
Le caractère % est utilisé, et non # ou ; pour commenter une ligne.
Tous les blocs se terminent par un &quot;.&quot;, il est indispensable!

* le nom du compte administrateur du serveur
 {acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}. {acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}. 

* Les nom d'hôte utilisé :
 {hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}. 

* L'adresse de courriel qui va recevoir les notifications de nouveaux comptes :
 {registration_watchers, [&quot;admin@isalo.org&quot;]}. 

* Le niveau de log (de 0 à 5) - 3 est raisonnable :
 {loglevel, 3}. 

* Les ports utilisés :

Il est recommandé de laisser ceux par défaut :
Nous avons un beau certificat, nous forçons donc la connexion avec ttls : starttls_required

 {listen,
  [
   {5222, ejabberd_c2s, [
                         {access, c2s},
                         {shaper, c2s_shaper},
                         {max_stanza_size, 65536},
                         starttls_required, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                         ]},
   {5269, ejabberd_s2s_in, [
                         {shaper, s2s_shaper},
                         {max_stanza_size, 131072}
                         ]},
   {5280, ejabberd_http, [
                         http_poll,
                         web_admin 
                         ]}
  ]}. 

Je vous laisse découvrir vous-même la suite (A faire!), il s'agit des règles d'accès au serveur (les ACL).
Tel quelle la configuration ci-dessus permet à n'importe qui de s'enregistrer.
Comme ce serveur n'est destiné qu'a votre réseau local, pas de problèmes pour l'instant!

=== DNS ===

Nous allons maintenant ajouter à notre DNS (ici Bind9) les enregistrements nécessaires :
Attention, mon serveur DNS local n'ést pas sur la machine ou tourne ejabberd. J'ai donc précisé sur quelle machine trouver les services (nas.isalo.org)

 _xmpp-server._tcp.isalo.org.	        86400	IN	SRV	5 0 5269 nas.isalo.org.
 _xmpp-client._tcp.jabber.isalo.org.	86400	IN	SRV	5 0 5222 nas.isalo.org.
 _jabber._tcp.jabber.isalo.org.	        86400	IN	SRV	5 0 5222 nas.isalo.org.

Pour vérifier que votre DNS répond bien :

 $ dig -t srv _xmpp-client._tcp.jabber.isalo.org
 
 ; &lt;&lt;&gt;&gt; DiG 9.6-ESV-R1 &lt;&lt;&gt;&gt; -t srv _xmpp-client._tcp.jabber.isalo.org
 ;; global options: +cmd
 ;; Got answer:
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 62356
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
 
 ;; QUESTION SECTION:
 ;_xmpp-client._tcp.jabber.isalo.org. IN	SRV
 
 ;; ANSWER SECTION:
 '''_xmpp-client._tcp.jabber.isalo.org. 86400 IN SRV 5 0 5222 nas.isalo.org.'''
 
 ;; AUTHORITY SECTION:
 isalo.org.		38400	IN	NS	lol.isalo.org.
 
 ;; ADDITIONAL SECTION:
 '''nas.isalo.org.		38400	IN	A	192.168.0.6'''
 lol.isalo.org.		38400	IN	A	192.168.0.1
 
 ;; Query time: 0 msec
 ;; SERVER: 192.168.0.1#53(192.168.0.1)
 ;; WHEN: Sat Aug 21 08:49:23 2010
 ;; MSG SIZE  rcvd: 135

Vous devez obtenir les deux lignes 'grasses' : le nom de la machine qui héberge le serveur jabber et son IP.

=== Ajout d'un administrateur ===

Nous enregistrons l'utilisateur qui fera l'administration;
Création de l'utilisateur &quot;laurent&quot; du domaine &quot;localhost&quot; avec le mot de passe &quot;motdepasse&quot; :

 # ejabberdctl register laurent localhost motdepasse

Si vous souhaitez par la suite supprimer un utilisateur :

 # ejabberdctl unregister laurent localhost 

Nous redémarrons le service
 # /etc/init.d/ejabberd restart  
ou
 # invoke-rc.d ejabberd restart

=== Premier contact avec l'interface Web ===

Nous nous rendons maintenant à l'adresse suivante pour la console d'administration :

http://127.0.0.1:5280/admin
Connexion avec laurent@localhost motdepasse


[[Fichier:Capture d'écran - 20082010 - 10-51-08.png]]

Vérifions nos domaines :


[[Fichier:Capture d'écran - 20082010 - 11-00-13.png]]

Nous avons bien deux domaines : localhost et isalo.org

== Utilisation ==

Nous allons maintenant tester notre serveur ejabberd...

J'utilise Pidgin, il en existe beaucoup d'autres...

Il suffit de se s'enregistrer via le nom de domaine renseigné dans la configuration, en choisissant de créer (nous l'avons autorisé dans la configuration).
Si ce n'est pas le cas, il vous faudra le faire au travers de l'interface Web d'administration


[[Fichier:Capture d'écran - 20082010 - 11-22-39.png]]


Ici, '''il faut préciser le serveur de connexion''' (soit par son nom - J'ai mis nas - si vous avec un DNS, soit par son IP).

Laissez vide &quot;proxy pour les serveurs de connexion&quot; sinon vous aurez un message d'erreur

[[Fichier:Capture d'écran - 20082010 - 11-24-27.png]]


[[Fichier:Capture d'écran - 20082010 - 11-25-24.png]]


[[Fichier:Capture d'écran - 20082010 - 11-26-14.png]]


[[Fichier:Capture d'écran - 20082010 - 11-32-17.png]]


[[Fichier:Capture d'écran - 20082010 - 11-33-21.png]]


Il nous reste à vérifier que les utilisateurs sont bien inscrits :

[[Fichier:Capture d'écran - 20082010 - 11-35-52.png]]

== Aller plus loin ==


[http://www.ejabberd.im/ le site officiel de ejabberd]

[http://www.ejabberd.im/tutorials De nombreux tutoriaux]

ejabberd est soutenu par Process-one - ''Site commercial''. [http://www.process-one.net/en/ejabberd/ www.process-one.net]

Voici [http://www.process-one.net/en/ejabberd/guide_en une documentation détaillée] (Attention l'installation proposée dans cette documentation passe par un installeur qui n'est pas apt). Vous y trouverez de nombreuses astuces et réglages pour votre configuration.

Beaucoup de modules sont disponibles pour augmenter les possibilités de votre serveur ejabberd (support mysql, support de nombreux autres protocoles, etc.)

[[Utilisateur:Lol|Lol]] 20 août 2010 à 12:17 (EAT)</text>
      <sha1>hugirgm8ggva23ic7sr4x0nc0yed6nf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3967</id>
      <parentid>3966</parentid>
      <timestamp>2012-03-17T11:33:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Configuration */</comment>
      <text xml:space="preserve" bytes="12388">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|ejabberd}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;

'''Installation et configuration de ejabberd sur Lenny'''

Ce tutoriel destiné à l'installation d'un serveur jabberd (ejabberd) à destination d'un réseau local uniquement.
Les question de sécurité et d'ouverture de votre serveur jabberd sur l'extérieur ne seront pas traitées.

L'installation de ejabberd et son administration (grâce à son interface web) sont simples.
Ejabberd permet de créer facilement un serveur permettant les échanges au travers du protocole XMPP, il est stable, supporte des charges importantes.
Ejabberd est un serveur Jabber écrit en Erlang.

== Installation ==

 # aptitude install ejabberd
 ...
 Les NOUVEAUX paquets suivants vont être installés : 
   ejabberd erlang-asn1{a} erlang-base{a} erlang-crypto{a} erlang-inets{a} erlang-mnesia{a} erlang-odbc{a} erlang-public-key{a} 
   erlang-runtime-tools{a} erlang-ssl{a} erlang-syntax-tools{a} libsctp1{a} lksctp-tools{a} odbcinst{a} odbcinst1debian2{a} unixodbc{a}
 ... 

Vérification de l'installation :
 $ erl
 Erlang (BEAM) emulator version 5.6.3 [source] [64-bit] [smp:2] [async-threads:0] [kernel-poll:false]  Eshell V5.6.3  (abort with ^G)
 
 1&gt;  

Pour sortir de la console erlang Ctrl+C puis a puis entré.

(Ctrl+C donne accès à un menu &quot;BREAK&quot;, a pour abort)...

 BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded
        (v)ersion (k)ill (D)b-tables (d)istribution

== Configuration ==

EJabberd se configure dans le fichier /etc/ejabberd/ejabberd.cfg

Nous verrons plus loin comment utiliser l'interface web accessible par 'http://votreserveur:5280/admin' pour réaliser les tâches d'administration.

Avant tout, il faut créer un certificat valide pour le domaine que vous allez utiliser :

 # mv /etc/ejabberd/ejabberd.pem /etc/ejabberd/ejabberd.pem.orig
 $ openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out server.pem
 $ openssl rsa -in privkey.pem -out privkey.pem
 $ cat privkey.pem &gt; server.pem
 $ rm privkey.pem
 # mv server.pem /etc/ejabberd/ejabberd.pem
 # chown root:ejabberd /etc/ejabberd/ejabberd.pem
 # chmod 640 /etc/ejabberd/ejabberd.pem

Répondez à la question &quot;Common Name&quot; avec votre nom de domaine, c'est primordial car lors de la connexion de vos clients, il leur sera demandé de valider le certificat:

 Organizational Unit Name (eg, section) []:
 Common Name (eg, YOUR name) []:votredomaine.ltd

Notez (ou retenez) le mot de passe demandé au début, même si vous ne devriez plus en avoir besoin par la suite.

Remarque au sujet du certificat:
Si avec cette commande ($ cat privkey.pem &gt; server.pem) vous obtenez une erreur de ce genre :

 ** Reason for termination =
 ** { {badmatch,{error,&quot;SSL_CTX_use_certificate_file failed: error:0906D06C:PEM routines:PEM_read_bio:no start line&quot;}},

Recommencez votre certificat avec cette commande : $ cat privkey.pem &gt;&gt; server.pem


Pensez à ouvrir dans votre firewall les ports TCP 5222 et 5269 pour le protocole XMPP, ainsi que le port TCP 5280 pour l'interface web d'administration.

Sauvegarder le fichier de configuration avant d'y faire la moindre modification (prudence...)

 # cp /etc/ejabberd/ejabberd.cfg /etc/ejabberd/ejabberd.cfg.orig 

=== le fichier ejabberd.cfg ===

Complétez maintenant le fichier ejabberd.cfg comme suit :

 # cat /etc/ejabberd/ejabberd.cfg

&lt;code erlang&gt;
{acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}.
{acl, admin, {user, &quot;laurent&quot;, &quot;isalo.org&quot;}}.
{acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}.
{hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}.

{loglevel, 3}.

{listen,
 [
  {5222, ejabberd_c2s, [
                       {access, c2s},
                       {shaper, c2s_shaper},
                       {max_stanza_size, 65536},
                       starttls_required, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                       ]},
 {5269, ejabberd_s2s_in, [
                         {shaper, s2s_shaper},
                         {max_stanza_size, 131072}
                         ]},
 {5280, ejabberd_http, [
                       http_poll,
                       web_admin
                       ]}
 ]}.

{s2s_use_starttls, true}.

{s2s_certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}.

{auth_method, internal}.

{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}. 

{acl, local, {user_regexp, &quot;&quot;}}.

{access, max_user_sessions, [{10, all}]}.
{access, local, [{allow, local}]}.
{access, c2s, [{deny, blocked},
               {allow, all}]}.
{access, c2s_shaper, [{none, admin},
                      {normal, all}]}.
{access, s2s_shaper, [{fast, all}]}.
{access, announce, [{allow, admin}]}.
{access, configure, [{allow, admin}]}.
{access, muc_admin, [{allow, admin}]}.
{access, muc, [{allow, all}]}.
{access, register, [{allow, all}]}.
{access, pubsub_createnode, [{allow, all}]}.

{host_config, &quot;isalo.org&quot;,
 [  
  {access, c2s, [{allow, admin}, {allow, all}]},
  {access, register, [{allow, all}]}
 ]
}.                                 

{language, &quot;fr&quot;}.

{modules,
 [
  {mod_adhoc,    []},
  {mod_announce, [{access, announce}]}, % requires mod_adhoc
  {mod_caps,     []},
  {mod_configure,[]}, % requires mod_adhoc
  {mod_ctlextra, []},               
  {mod_disco,    []},
  %%{mod_echo,   [{host, &quot;echo.localhost&quot;}]},
  {mod_irc,      []},   
  {mod_last,     []},
  {mod_muc,      [
                  %%{host, &quot;conference.@HOST@&quot;},
                  {access, muc},
                  {access_create, muc},
                  {access_persistent, muc},
                  {access_admin, muc_admin},
                  {max_users, 500}
                 ]},
  %%{mod_muc_log,[]},
  {mod_offline,  []},
  {mod_privacy,  []},
  {mod_private,  []},
  {mod_proxy65,  [
                  {access, local},
                  {shaper, c2s_shaper}
                 ]},
  {mod_pubsub,   [ % requires mod_caps
                  {access_createnode, pubsub_createnode},
                  {plugins, [&quot;default&quot;, &quot;pep&quot;]}
                 ]},
  {mod_register, [
                  {welcome_message, {&quot;Bienvenue!&quot;,
                                     &quot;Bienvenue sur le Serveur Jabber de isalo.org. &quot;
                                     &quot;Pour plus d'information à propos de Jabber :&quot;
                                     &quot;http://www.jabber.org&quot;}},

                  {access, register}
                 ]},
  {mod_roster,   []},
  {mod_stats,    []},
  {mod_time,     []},
  {mod_vcard,    []},
  {mod_version,  []}
 ]}.

&lt;/code&gt;

=== Petite explication rapide... ===

Le fichier de configuration ci-dessus est en erlang.
Le caractère % est utilisé, et non # ou ; pour commenter une ligne.
Tous les blocs se terminent par un &quot;.&quot;, il est indispensable!

* le nom du compte administrateur du serveur
 {acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}. {acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}. 

* Les nom d'hôte utilisé :
 {hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}. 

* L'adresse de courriel qui va recevoir les notifications de nouveaux comptes :
 {registration_watchers, [&quot;admin@isalo.org&quot;]}. 

* Le niveau de log (de 0 à 5) - 3 est raisonnable :
 {loglevel, 3}. 

* Les ports utilisés :

Il est recommandé de laisser ceux par défaut :
Nous avons un beau certificat, nous forçons donc la connexion avec ttls : starttls_required

 {listen,
  [
   {5222, ejabberd_c2s, [
                         {access, c2s},
                         {shaper, c2s_shaper},
                         {max_stanza_size, 65536},
                         starttls_required, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                         ]},
   {5269, ejabberd_s2s_in, [
                         {shaper, s2s_shaper},
                         {max_stanza_size, 131072}
                         ]},
   {5280, ejabberd_http, [
                         http_poll,
                         web_admin 
                         ]}
  ]}. 

Je vous laisse découvrir vous-même la suite (A faire!), il s'agit des règles d'accès au serveur (les ACL).
Tel quelle la configuration ci-dessus permet à n'importe qui de s'enregistrer.
Comme ce serveur n'est destiné qu'a votre réseau local, pas de problèmes pour l'instant!

=== DNS ===

Nous allons maintenant ajouter à notre DNS (ici Bind9) les enregistrements nécessaires :
Attention, mon serveur DNS local n'ést pas sur la machine ou tourne ejabberd. J'ai donc précisé sur quelle machine trouver les services (nas.isalo.org)

 _xmpp-server._tcp.isalo.org.	        86400	IN	SRV	5 0 5269 nas.isalo.org.
 _xmpp-client._tcp.jabber.isalo.org.	86400	IN	SRV	5 0 5222 nas.isalo.org.
 _jabber._tcp.jabber.isalo.org.	        86400	IN	SRV	5 0 5222 nas.isalo.org.

Pour vérifier que votre DNS répond bien :

 $ dig -t srv _xmpp-client._tcp.jabber.isalo.org
 
 ; &lt;&lt;&gt;&gt; DiG 9.6-ESV-R1 &lt;&lt;&gt;&gt; -t srv _xmpp-client._tcp.jabber.isalo.org
 ;; global options: +cmd
 ;; Got answer:
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 62356
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
 
 ;; QUESTION SECTION:
 ;_xmpp-client._tcp.jabber.isalo.org. IN	SRV
 
 ;; ANSWER SECTION:
 '''_xmpp-client._tcp.jabber.isalo.org. 86400 IN SRV 5 0 5222 nas.isalo.org.'''
 
 ;; AUTHORITY SECTION:
 isalo.org.		38400	IN	NS	lol.isalo.org.
 
 ;; ADDITIONAL SECTION:
 '''nas.isalo.org.		38400	IN	A	192.168.0.6'''
 lol.isalo.org.		38400	IN	A	192.168.0.1
 
 ;; Query time: 0 msec
 ;; SERVER: 192.168.0.1#53(192.168.0.1)
 ;; WHEN: Sat Aug 21 08:49:23 2010
 ;; MSG SIZE  rcvd: 135

Vous devez obtenir les deux lignes 'grasses' : le nom de la machine qui héberge le serveur jabber et son IP.

=== Ajout d'un administrateur ===

Nous enregistrons l'utilisateur qui fera l'administration;
Création de l'utilisateur &quot;laurent&quot; du domaine &quot;localhost&quot; avec le mot de passe &quot;motdepasse&quot; :

 # ejabberdctl register laurent localhost motdepasse

Si vous souhaitez par la suite supprimer un utilisateur :

 # ejabberdctl unregister laurent localhost 

Nous redémarrons le service
 # /etc/init.d/ejabberd restart  
ou
 # invoke-rc.d ejabberd restart

=== Premier contact avec l'interface Web ===

Nous nous rendons maintenant à l'adresse suivante pour la console d'administration :

http://127.0.0.1:5280/admin
Connexion avec laurent@localhost motdepasse


[[Fichier:Capture d'écran - 20082010 - 10-51-08.png]]

Vérifions nos domaines :


[[Fichier:Capture d'écran - 20082010 - 11-00-13.png]]

Nous avons bien deux domaines : localhost et isalo.org

== Utilisation ==

Nous allons maintenant tester notre serveur ejabberd...

J'utilise Pidgin, il en existe beaucoup d'autres...

Il suffit de se s'enregistrer via le nom de domaine renseigné dans la configuration, en choisissant de créer (nous l'avons autorisé dans la configuration).
Si ce n'est pas le cas, il vous faudra le faire au travers de l'interface Web d'administration


[[Fichier:Capture d'écran - 20082010 - 11-22-39.png]]


Ici, '''il faut préciser le serveur de connexion''' (soit par son nom - J'ai mis nas - si vous avec un DNS, soit par son IP).

Laissez vide &quot;proxy pour les serveurs de connexion&quot; sinon vous aurez un message d'erreur

[[Fichier:Capture d'écran - 20082010 - 11-24-27.png]]


[[Fichier:Capture d'écran - 20082010 - 11-25-24.png]]


[[Fichier:Capture d'écran - 20082010 - 11-26-14.png]]


[[Fichier:Capture d'écran - 20082010 - 11-32-17.png]]


[[Fichier:Capture d'écran - 20082010 - 11-33-21.png]]


Il nous reste à vérifier que les utilisateurs sont bien inscrits :

[[Fichier:Capture d'écran - 20082010 - 11-35-52.png]]

== Aller plus loin ==


[http://www.ejabberd.im/ le site officiel de ejabberd]

[http://www.ejabberd.im/tutorials De nombreux tutoriaux]

ejabberd est soutenu par Process-one - ''Site commercial''. [http://www.process-one.net/en/ejabberd/ www.process-one.net]

Voici [http://www.process-one.net/en/ejabberd/guide_en une documentation détaillée] (Attention l'installation proposée dans cette documentation passe par un installeur qui n'est pas apt). Vous y trouverez de nombreuses astuces et réglages pour votre configuration.

Beaucoup de modules sont disponibles pour augmenter les possibilités de votre serveur ejabberd (support mysql, support de nombreux autres protocoles, etc.)

[[Utilisateur:Lol|Lol]] 20 août 2010 à 12:17 (EAT)</text>
      <sha1>7e8b9649f8sc9vtfmtz2na82izoej66</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3968</id>
      <parentid>3967</parentid>
      <timestamp>2012-03-17T13:31:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Configuration */ Modification d'une erreur sur la création du certificat</comment>
      <text xml:space="preserve" bytes="12389">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|ejabberd}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;

'''Installation et configuration de ejabberd sur Lenny'''

Ce tutoriel destiné à l'installation d'un serveur jabberd (ejabberd) à destination d'un réseau local uniquement.
Les question de sécurité et d'ouverture de votre serveur jabberd sur l'extérieur ne seront pas traitées.

L'installation de ejabberd et son administration (grâce à son interface web) sont simples.
Ejabberd permet de créer facilement un serveur permettant les échanges au travers du protocole XMPP, il est stable, supporte des charges importantes.
Ejabberd est un serveur Jabber écrit en Erlang.

== Installation ==

 # aptitude install ejabberd
 ...
 Les NOUVEAUX paquets suivants vont être installés : 
   ejabberd erlang-asn1{a} erlang-base{a} erlang-crypto{a} erlang-inets{a} erlang-mnesia{a} erlang-odbc{a} erlang-public-key{a} 
   erlang-runtime-tools{a} erlang-ssl{a} erlang-syntax-tools{a} libsctp1{a} lksctp-tools{a} odbcinst{a} odbcinst1debian2{a} unixodbc{a}
 ... 

Vérification de l'installation :
 $ erl
 Erlang (BEAM) emulator version 5.6.3 [source] [64-bit] [smp:2] [async-threads:0] [kernel-poll:false]  Eshell V5.6.3  (abort with ^G)
 
 1&gt;  

Pour sortir de la console erlang Ctrl+C puis a puis entré.

(Ctrl+C donne accès à un menu &quot;BREAK&quot;, a pour abort)...

 BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded
        (v)ersion (k)ill (D)b-tables (d)istribution

== Configuration ==

EJabberd se configure dans le fichier /etc/ejabberd/ejabberd.cfg

Nous verrons plus loin comment utiliser l'interface web accessible par 'http://votreserveur:5280/admin' pour réaliser les tâches d'administration.

Avant tout, il faut créer un certificat valide pour le domaine que vous allez utiliser :

 # mv /etc/ejabberd/ejabberd.pem /etc/ejabberd/ejabberd.pem.orig
 $ openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out server.pem
 $ openssl rsa -in privkey.pem -out privkey.pem
 $ cat privkey.pem &gt;&gt; server.pem
 $ rm privkey.pem
 # mv server.pem /etc/ejabberd/ejabberd.pem
 # chown root:ejabberd /etc/ejabberd/ejabberd.pem
 # chmod 640 /etc/ejabberd/ejabberd.pem

Répondez à la question &quot;Common Name&quot; avec votre nom de domaine, c'est primordial car lors de la connexion de vos clients, il leur sera demandé de valider le certificat:

 Organizational Unit Name (eg, section) []:
 Common Name (eg, YOUR name) []:votredomaine.ltd

Notez (ou retenez) le mot de passe demandé au début, même si vous ne devriez plus en avoir besoin par la suite.

Remarque au sujet du certificat:
Si avec cette commande ($ cat privkey.pem &gt; server.pem) vous obtenez une erreur de ce genre :

 ** Reason for termination =
 ** { {badmatch,{error,&quot;SSL_CTX_use_certificate_file failed: error:0906D06C:PEM routines:PEM_read_bio:no start line&quot;}},

Recommencez votre certificat avec cette commande : $ cat privkey.pem &gt;&gt; server.pem


Pensez à ouvrir dans votre firewall les ports TCP 5222 et 5269 pour le protocole XMPP, ainsi que le port TCP 5280 pour l'interface web d'administration.

Sauvegarder le fichier de configuration avant d'y faire la moindre modification (prudence...)

 # cp /etc/ejabberd/ejabberd.cfg /etc/ejabberd/ejabberd.cfg.orig 

=== le fichier ejabberd.cfg ===

Complétez maintenant le fichier ejabberd.cfg comme suit :

 # cat /etc/ejabberd/ejabberd.cfg

&lt;code erlang&gt;
{acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}.
{acl, admin, {user, &quot;laurent&quot;, &quot;isalo.org&quot;}}.
{acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}.
{hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}.

{loglevel, 3}.

{listen,
 [
  {5222, ejabberd_c2s, [
                       {access, c2s},
                       {shaper, c2s_shaper},
                       {max_stanza_size, 65536},
                       starttls_required, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                       ]},
 {5269, ejabberd_s2s_in, [
                         {shaper, s2s_shaper},
                         {max_stanza_size, 131072}
                         ]},
 {5280, ejabberd_http, [
                       http_poll,
                       web_admin
                       ]}
 ]}.

{s2s_use_starttls, true}.

{s2s_certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}.

{auth_method, internal}.

{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}. 

{acl, local, {user_regexp, &quot;&quot;}}.

{access, max_user_sessions, [{10, all}]}.
{access, local, [{allow, local}]}.
{access, c2s, [{deny, blocked},
               {allow, all}]}.
{access, c2s_shaper, [{none, admin},
                      {normal, all}]}.
{access, s2s_shaper, [{fast, all}]}.
{access, announce, [{allow, admin}]}.
{access, configure, [{allow, admin}]}.
{access, muc_admin, [{allow, admin}]}.
{access, muc, [{allow, all}]}.
{access, register, [{allow, all}]}.
{access, pubsub_createnode, [{allow, all}]}.

{host_config, &quot;isalo.org&quot;,
 [  
  {access, c2s, [{allow, admin}, {allow, all}]},
  {access, register, [{allow, all}]}
 ]
}.                                 

{language, &quot;fr&quot;}.

{modules,
 [
  {mod_adhoc,    []},
  {mod_announce, [{access, announce}]}, % requires mod_adhoc
  {mod_caps,     []},
  {mod_configure,[]}, % requires mod_adhoc
  {mod_ctlextra, []},               
  {mod_disco,    []},
  %%{mod_echo,   [{host, &quot;echo.localhost&quot;}]},
  {mod_irc,      []},   
  {mod_last,     []},
  {mod_muc,      [
                  %%{host, &quot;conference.@HOST@&quot;},
                  {access, muc},
                  {access_create, muc},
                  {access_persistent, muc},
                  {access_admin, muc_admin},
                  {max_users, 500}
                 ]},
  %%{mod_muc_log,[]},
  {mod_offline,  []},
  {mod_privacy,  []},
  {mod_private,  []},
  {mod_proxy65,  [
                  {access, local},
                  {shaper, c2s_shaper}
                 ]},
  {mod_pubsub,   [ % requires mod_caps
                  {access_createnode, pubsub_createnode},
                  {plugins, [&quot;default&quot;, &quot;pep&quot;]}
                 ]},
  {mod_register, [
                  {welcome_message, {&quot;Bienvenue!&quot;,
                                     &quot;Bienvenue sur le Serveur Jabber de isalo.org. &quot;
                                     &quot;Pour plus d'information à propos de Jabber :&quot;
                                     &quot;http://www.jabber.org&quot;}},

                  {access, register}
                 ]},
  {mod_roster,   []},
  {mod_stats,    []},
  {mod_time,     []},
  {mod_vcard,    []},
  {mod_version,  []}
 ]}.

&lt;/code&gt;

=== Petite explication rapide... ===

Le fichier de configuration ci-dessus est en erlang.
Le caractère % est utilisé, et non # ou ; pour commenter une ligne.
Tous les blocs se terminent par un &quot;.&quot;, il est indispensable!

* le nom du compte administrateur du serveur
 {acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}. {acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}. 

* Les nom d'hôte utilisé :
 {hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}. 

* L'adresse de courriel qui va recevoir les notifications de nouveaux comptes :
 {registration_watchers, [&quot;admin@isalo.org&quot;]}. 

* Le niveau de log (de 0 à 5) - 3 est raisonnable :
 {loglevel, 3}. 

* Les ports utilisés :

Il est recommandé de laisser ceux par défaut :
Nous avons un beau certificat, nous forçons donc la connexion avec ttls : starttls_required

 {listen,
  [
   {5222, ejabberd_c2s, [
                         {access, c2s},
                         {shaper, c2s_shaper},
                         {max_stanza_size, 65536},
                         starttls_required, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                         ]},
   {5269, ejabberd_s2s_in, [
                         {shaper, s2s_shaper},
                         {max_stanza_size, 131072}
                         ]},
   {5280, ejabberd_http, [
                         http_poll,
                         web_admin 
                         ]}
  ]}. 

Je vous laisse découvrir vous-même la suite (A faire!), il s'agit des règles d'accès au serveur (les ACL).
Tel quelle la configuration ci-dessus permet à n'importe qui de s'enregistrer.
Comme ce serveur n'est destiné qu'a votre réseau local, pas de problèmes pour l'instant!

=== DNS ===

Nous allons maintenant ajouter à notre DNS (ici Bind9) les enregistrements nécessaires :
Attention, mon serveur DNS local n'ést pas sur la machine ou tourne ejabberd. J'ai donc précisé sur quelle machine trouver les services (nas.isalo.org)

 _xmpp-server._tcp.isalo.org.	        86400	IN	SRV	5 0 5269 nas.isalo.org.
 _xmpp-client._tcp.jabber.isalo.org.	86400	IN	SRV	5 0 5222 nas.isalo.org.
 _jabber._tcp.jabber.isalo.org.	        86400	IN	SRV	5 0 5222 nas.isalo.org.

Pour vérifier que votre DNS répond bien :

 $ dig -t srv _xmpp-client._tcp.jabber.isalo.org
 
 ; &lt;&lt;&gt;&gt; DiG 9.6-ESV-R1 &lt;&lt;&gt;&gt; -t srv _xmpp-client._tcp.jabber.isalo.org
 ;; global options: +cmd
 ;; Got answer:
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 62356
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
 
 ;; QUESTION SECTION:
 ;_xmpp-client._tcp.jabber.isalo.org. IN	SRV
 
 ;; ANSWER SECTION:
 '''_xmpp-client._tcp.jabber.isalo.org. 86400 IN SRV 5 0 5222 nas.isalo.org.'''
 
 ;; AUTHORITY SECTION:
 isalo.org.		38400	IN	NS	lol.isalo.org.
 
 ;; ADDITIONAL SECTION:
 '''nas.isalo.org.		38400	IN	A	192.168.0.6'''
 lol.isalo.org.		38400	IN	A	192.168.0.1
 
 ;; Query time: 0 msec
 ;; SERVER: 192.168.0.1#53(192.168.0.1)
 ;; WHEN: Sat Aug 21 08:49:23 2010
 ;; MSG SIZE  rcvd: 135

Vous devez obtenir les deux lignes 'grasses' : le nom de la machine qui héberge le serveur jabber et son IP.

=== Ajout d'un administrateur ===

Nous enregistrons l'utilisateur qui fera l'administration;
Création de l'utilisateur &quot;laurent&quot; du domaine &quot;localhost&quot; avec le mot de passe &quot;motdepasse&quot; :

 # ejabberdctl register laurent localhost motdepasse

Si vous souhaitez par la suite supprimer un utilisateur :

 # ejabberdctl unregister laurent localhost 

Nous redémarrons le service
 # /etc/init.d/ejabberd restart  
ou
 # invoke-rc.d ejabberd restart

=== Premier contact avec l'interface Web ===

Nous nous rendons maintenant à l'adresse suivante pour la console d'administration :

http://127.0.0.1:5280/admin
Connexion avec laurent@localhost motdepasse


[[Fichier:Capture d'écran - 20082010 - 10-51-08.png]]

Vérifions nos domaines :


[[Fichier:Capture d'écran - 20082010 - 11-00-13.png]]

Nous avons bien deux domaines : localhost et isalo.org

== Utilisation ==

Nous allons maintenant tester notre serveur ejabberd...

J'utilise Pidgin, il en existe beaucoup d'autres...

Il suffit de se s'enregistrer via le nom de domaine renseigné dans la configuration, en choisissant de créer (nous l'avons autorisé dans la configuration).
Si ce n'est pas le cas, il vous faudra le faire au travers de l'interface Web d'administration


[[Fichier:Capture d'écran - 20082010 - 11-22-39.png]]


Ici, '''il faut préciser le serveur de connexion''' (soit par son nom - J'ai mis nas - si vous avec un DNS, soit par son IP).

Laissez vide &quot;proxy pour les serveurs de connexion&quot; sinon vous aurez un message d'erreur

[[Fichier:Capture d'écran - 20082010 - 11-24-27.png]]


[[Fichier:Capture d'écran - 20082010 - 11-25-24.png]]


[[Fichier:Capture d'écran - 20082010 - 11-26-14.png]]


[[Fichier:Capture d'écran - 20082010 - 11-32-17.png]]


[[Fichier:Capture d'écran - 20082010 - 11-33-21.png]]


Il nous reste à vérifier que les utilisateurs sont bien inscrits :

[[Fichier:Capture d'écran - 20082010 - 11-35-52.png]]

== Aller plus loin ==


[http://www.ejabberd.im/ le site officiel de ejabberd]

[http://www.ejabberd.im/tutorials De nombreux tutoriaux]

ejabberd est soutenu par Process-one - ''Site commercial''. [http://www.process-one.net/en/ejabberd/ www.process-one.net]

Voici [http://www.process-one.net/en/ejabberd/guide_en une documentation détaillée] (Attention l'installation proposée dans cette documentation passe par un installeur qui n'est pas apt). Vous y trouverez de nombreuses astuces et réglages pour votre configuration.

Beaucoup de modules sont disponibles pour augmenter les possibilités de votre serveur ejabberd (support mysql, support de nombreux autres protocoles, etc.)

[[Utilisateur:Lol|Lol]] 20 août 2010 à 12:17 (EAT)</text>
      <sha1>obo8ymu3d6ma32wz2ym1mpipwhzfeni</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3969</id>
      <parentid>3968</parentid>
      <timestamp>2012-03-17T13:35:59Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="12476">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|ejabberd}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;

'''Installation et configuration de ejabberd sur Debian Lenny et Squeeze'''

Ce tutoriel à été re-testé sur une Squeeze, il est fonctionnel.

Ce tutoriel destiné à l'installation d'un serveur jabberd (ejabberd) à destination d'un réseau local uniquement.
Les question de sécurité et d'ouverture de votre serveur jabberd sur l'extérieur ne seront pas traitées.

L'installation de ejabberd et son administration (grâce à son interface web) sont simples.
Ejabberd permet de créer facilement un serveur permettant les échanges au travers du protocole XMPP, il est stable, supporte des charges importantes.
Ejabberd est un serveur Jabber écrit en Erlang.

== Installation ==

 # aptitude install ejabberd
 ...
 Les NOUVEAUX paquets suivants vont être installés : 
   ejabberd erlang-asn1{a} erlang-base{a} erlang-crypto{a} erlang-inets{a} erlang-mnesia{a} erlang-odbc{a} erlang-public-key{a} 
   erlang-runtime-tools{a} erlang-ssl{a} erlang-syntax-tools{a} libsctp1{a} lksctp-tools{a} odbcinst{a} odbcinst1debian2{a} unixodbc{a}
 ... 

Vérification de l'installation :
 $ erl
 Erlang (BEAM) emulator version 5.6.3 [source] [64-bit] [smp:2] [async-threads:0] [kernel-poll:false]  Eshell V5.6.3  (abort with ^G)
 
 1&gt;  

Pour sortir de la console erlang Ctrl+C puis a puis entré.

(Ctrl+C donne accès à un menu &quot;BREAK&quot;, a pour abort)...

 BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded
        (v)ersion (k)ill (D)b-tables (d)istribution

== Configuration ==

EJabberd se configure dans le fichier /etc/ejabberd/ejabberd.cfg

Nous verrons plus loin comment utiliser l'interface web accessible par 'http://votreserveur:5280/admin' pour réaliser les tâches d'administration.

Avant tout, il faut créer un certificat valide pour le domaine que vous allez utiliser :

 # mv /etc/ejabberd/ejabberd.pem /etc/ejabberd/ejabberd.pem.orig
 $ openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out server.pem
 $ openssl rsa -in privkey.pem -out privkey.pem
 $ cat privkey.pem &gt;&gt; server.pem
 $ rm privkey.pem
 # mv server.pem /etc/ejabberd/ejabberd.pem
 # chown root:ejabberd /etc/ejabberd/ejabberd.pem
 # chmod 640 /etc/ejabberd/ejabberd.pem

Répondez à la question &quot;Common Name&quot; avec votre nom de domaine, c'est primordial car lors de la connexion de vos clients, il leur sera demandé de valider le certificat:

 Organizational Unit Name (eg, section) []:
 Common Name (eg, YOUR name) []:votredomaine.ltd

Notez (ou retenez) le mot de passe demandé au début, même si vous ne devriez plus en avoir besoin par la suite.

Remarque au sujet du certificat:
Si avec cette commande ($ cat privkey.pem &gt; server.pem) vous obtenez une erreur de ce genre :

 ** Reason for termination =
 ** { {badmatch,{error,&quot;SSL_CTX_use_certificate_file failed: error:0906D06C:PEM routines:PEM_read_bio:no start line&quot;}},

Recommencez votre certificat avec cette commande : $ cat privkey.pem &gt;&gt; server.pem


Pensez à ouvrir dans votre firewall les ports TCP 5222 et 5269 pour le protocole XMPP, ainsi que le port TCP 5280 pour l'interface web d'administration.

Sauvegarder le fichier de configuration avant d'y faire la moindre modification (prudence...)

 # cp /etc/ejabberd/ejabberd.cfg /etc/ejabberd/ejabberd.cfg.orig 

=== le fichier ejabberd.cfg ===

Complétez maintenant le fichier ejabberd.cfg comme suit :

 # cat /etc/ejabberd/ejabberd.cfg

&lt;code erlang&gt;
{acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}.
{acl, admin, {user, &quot;laurent&quot;, &quot;isalo.org&quot;}}.
{acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}.
{hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}.

{loglevel, 3}.

{listen,
 [
  {5222, ejabberd_c2s, [
                       {access, c2s},
                       {shaper, c2s_shaper},
                       {max_stanza_size, 65536},
                       starttls_required, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                       ]},
 {5269, ejabberd_s2s_in, [
                         {shaper, s2s_shaper},
                         {max_stanza_size, 131072}
                         ]},
 {5280, ejabberd_http, [
                       http_poll,
                       web_admin
                       ]}
 ]}.

{s2s_use_starttls, true}.

{s2s_certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}.

{auth_method, internal}.

{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}. 

{acl, local, {user_regexp, &quot;&quot;}}.

{access, max_user_sessions, [{10, all}]}.
{access, local, [{allow, local}]}.
{access, c2s, [{deny, blocked},
               {allow, all}]}.
{access, c2s_shaper, [{none, admin},
                      {normal, all}]}.
{access, s2s_shaper, [{fast, all}]}.
{access, announce, [{allow, admin}]}.
{access, configure, [{allow, admin}]}.
{access, muc_admin, [{allow, admin}]}.
{access, muc, [{allow, all}]}.
{access, register, [{allow, all}]}.
{access, pubsub_createnode, [{allow, all}]}.

{host_config, &quot;isalo.org&quot;,
 [  
  {access, c2s, [{allow, admin}, {allow, all}]},
  {access, register, [{allow, all}]}
 ]
}.                                 

{language, &quot;fr&quot;}.

{modules,
 [
  {mod_adhoc,    []},
  {mod_announce, [{access, announce}]}, % requires mod_adhoc
  {mod_caps,     []},
  {mod_configure,[]}, % requires mod_adhoc
  {mod_ctlextra, []},               
  {mod_disco,    []},
  %%{mod_echo,   [{host, &quot;echo.localhost&quot;}]},
  {mod_irc,      []},   
  {mod_last,     []},
  {mod_muc,      [
                  %%{host, &quot;conference.@HOST@&quot;},
                  {access, muc},
                  {access_create, muc},
                  {access_persistent, muc},
                  {access_admin, muc_admin},
                  {max_users, 500}
                 ]},
  %%{mod_muc_log,[]},
  {mod_offline,  []},
  {mod_privacy,  []},
  {mod_private,  []},
  {mod_proxy65,  [
                  {access, local},
                  {shaper, c2s_shaper}
                 ]},
  {mod_pubsub,   [ % requires mod_caps
                  {access_createnode, pubsub_createnode},
                  {plugins, [&quot;default&quot;, &quot;pep&quot;]}
                 ]},
  {mod_register, [
                  {welcome_message, {&quot;Bienvenue!&quot;,
                                     &quot;Bienvenue sur le Serveur Jabber de isalo.org. &quot;
                                     &quot;Pour plus d'information à propos de Jabber :&quot;
                                     &quot;http://www.jabber.org&quot;}},

                  {access, register}
                 ]},
  {mod_roster,   []},
  {mod_stats,    []},
  {mod_time,     []},
  {mod_vcard,    []},
  {mod_version,  []}
 ]}.

&lt;/code&gt;

=== Petite explication rapide... ===

Le fichier de configuration ci-dessus est en erlang.
Le caractère % est utilisé, et non # ou ; pour commenter une ligne.
Tous les blocs se terminent par un &quot;.&quot;, il est indispensable!

* le nom du compte administrateur du serveur
 {acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}. {acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}. 

* Les nom d'hôte utilisé :
 {hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}. 

* L'adresse de courriel qui va recevoir les notifications de nouveaux comptes :
 {registration_watchers, [&quot;admin@isalo.org&quot;]}. 

* Le niveau de log (de 0 à 5) - 3 est raisonnable :
 {loglevel, 3}. 

* Les ports utilisés :

Il est recommandé de laisser ceux par défaut :
Nous avons un beau certificat, nous forçons donc la connexion avec ttls : starttls_required

 {listen,
  [
   {5222, ejabberd_c2s, [
                         {access, c2s},
                         {shaper, c2s_shaper},
                         {max_stanza_size, 65536},
                         starttls_required, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                         ]},
   {5269, ejabberd_s2s_in, [
                         {shaper, s2s_shaper},
                         {max_stanza_size, 131072}
                         ]},
   {5280, ejabberd_http, [
                         http_poll,
                         web_admin 
                         ]}
  ]}. 

Je vous laisse découvrir vous-même la suite (A faire!), il s'agit des règles d'accès au serveur (les ACL).
Tel quelle la configuration ci-dessus permet à n'importe qui de s'enregistrer.
Comme ce serveur n'est destiné qu'a votre réseau local, pas de problèmes pour l'instant!

=== DNS ===

Nous allons maintenant ajouter à notre DNS (ici Bind9) les enregistrements nécessaires :
Attention, mon serveur DNS local n'ést pas sur la machine ou tourne ejabberd. J'ai donc précisé sur quelle machine trouver les services (nas.isalo.org)

 _xmpp-server._tcp.isalo.org.	        86400	IN	SRV	5 0 5269 nas.isalo.org.
 _xmpp-client._tcp.jabber.isalo.org.	86400	IN	SRV	5 0 5222 nas.isalo.org.
 _jabber._tcp.jabber.isalo.org.	        86400	IN	SRV	5 0 5222 nas.isalo.org.

Pour vérifier que votre DNS répond bien :

 $ dig -t srv _xmpp-client._tcp.jabber.isalo.org
 
 ; &lt;&lt;&gt;&gt; DiG 9.6-ESV-R1 &lt;&lt;&gt;&gt; -t srv _xmpp-client._tcp.jabber.isalo.org
 ;; global options: +cmd
 ;; Got answer:
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 62356
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
 
 ;; QUESTION SECTION:
 ;_xmpp-client._tcp.jabber.isalo.org. IN	SRV
 
 ;; ANSWER SECTION:
 '''_xmpp-client._tcp.jabber.isalo.org. 86400 IN SRV 5 0 5222 nas.isalo.org.'''
 
 ;; AUTHORITY SECTION:
 isalo.org.		38400	IN	NS	lol.isalo.org.
 
 ;; ADDITIONAL SECTION:
 '''nas.isalo.org.		38400	IN	A	192.168.0.6'''
 lol.isalo.org.		38400	IN	A	192.168.0.1
 
 ;; Query time: 0 msec
 ;; SERVER: 192.168.0.1#53(192.168.0.1)
 ;; WHEN: Sat Aug 21 08:49:23 2010
 ;; MSG SIZE  rcvd: 135

Vous devez obtenir les deux lignes 'grasses' : le nom de la machine qui héberge le serveur jabber et son IP.

=== Ajout d'un administrateur ===

Nous enregistrons l'utilisateur qui fera l'administration;
Création de l'utilisateur &quot;laurent&quot; du domaine &quot;localhost&quot; avec le mot de passe &quot;motdepasse&quot; :

 # ejabberdctl register laurent localhost motdepasse

Si vous souhaitez par la suite supprimer un utilisateur :

 # ejabberdctl unregister laurent localhost 

Nous redémarrons le service
 # /etc/init.d/ejabberd restart  
ou
 # invoke-rc.d ejabberd restart

=== Premier contact avec l'interface Web ===

Nous nous rendons maintenant à l'adresse suivante pour la console d'administration :

http://127.0.0.1:5280/admin
Connexion avec laurent@localhost motdepasse


[[Fichier:Capture d'écran - 20082010 - 10-51-08.png]]

Vérifions nos domaines :


[[Fichier:Capture d'écran - 20082010 - 11-00-13.png]]

Nous avons bien deux domaines : localhost et isalo.org

== Utilisation ==

Nous allons maintenant tester notre serveur ejabberd...

J'utilise Pidgin, il en existe beaucoup d'autres...

Il suffit de se s'enregistrer via le nom de domaine renseigné dans la configuration, en choisissant de créer (nous l'avons autorisé dans la configuration).
Si ce n'est pas le cas, il vous faudra le faire au travers de l'interface Web d'administration


[[Fichier:Capture d'écran - 20082010 - 11-22-39.png]]


Ici, '''il faut préciser le serveur de connexion''' (soit par son nom - J'ai mis nas - si vous avec un DNS, soit par son IP).

Laissez vide &quot;proxy pour les serveurs de connexion&quot; sinon vous aurez un message d'erreur

[[Fichier:Capture d'écran - 20082010 - 11-24-27.png]]


[[Fichier:Capture d'écran - 20082010 - 11-25-24.png]]


[[Fichier:Capture d'écran - 20082010 - 11-26-14.png]]


[[Fichier:Capture d'écran - 20082010 - 11-32-17.png]]


[[Fichier:Capture d'écran - 20082010 - 11-33-21.png]]


Il nous reste à vérifier que les utilisateurs sont bien inscrits :

[[Fichier:Capture d'écran - 20082010 - 11-35-52.png]]

== Aller plus loin ==


[http://www.ejabberd.im/ le site officiel de ejabberd]

[http://www.ejabberd.im/tutorials De nombreux tutoriaux]

ejabberd est soutenu par Process-one - ''Site commercial''. [http://www.process-one.net/en/ejabberd/ www.process-one.net]

Voici [http://www.process-one.net/en/ejabberd/guide_en une documentation détaillée] (Attention l'installation proposée dans cette documentation passe par un installeur qui n'est pas apt). Vous y trouverez de nombreuses astuces et réglages pour votre configuration.

Beaucoup de modules sont disponibles pour augmenter les possibilités de votre serveur ejabberd (support mysql, support de nombreux autres protocoles, etc.)

[[Utilisateur:Lol|Lol]] 20 août 2010 à 12:17 (EAT)</text>
      <sha1>hgzzt5qv91yh79wxjd48nquaro06hwm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3970</id>
      <parentid>3969</parentid>
      <timestamp>2012-03-18T07:50:57Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Installation */</comment>
      <text xml:space="preserve" bytes="12707">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|ejabberd}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;

'''Installation et configuration de ejabberd sur Debian Lenny et Squeeze'''

Ce tutoriel à été re-testé sur une Squeeze, il est fonctionnel.

Ce tutoriel destiné à l'installation d'un serveur jabberd (ejabberd) à destination d'un réseau local uniquement.
Les question de sécurité et d'ouverture de votre serveur jabberd sur l'extérieur ne seront pas traitées.

L'installation de ejabberd et son administration (grâce à son interface web) sont simples.
Ejabberd permet de créer facilement un serveur permettant les échanges au travers du protocole XMPP, il est stable, supporte des charges importantes.
Ejabberd est un serveur Jabber écrit en Erlang.

== Installation ==

 # aptitude install ejabberd
 ...
 Les NOUVEAUX paquets suivants vont être installés : 
   ejabberd erlang-asn1{a} erlang-base{a} erlang-crypto{a} erlang-inets{a} erlang-mnesia{a} erlang-odbc{a} erlang-public-key{a} 
   erlang-runtime-tools{a} erlang-ssl{a} erlang-syntax-tools{a} libsctp1{a} lksctp-tools{a} odbcinst{a} odbcinst1debian2{a} unixodbc{a}
 ... 

Vérification de l'installation :
 $ erl
 Erlang (BEAM) emulator version 5.6.3 [source] [64-bit] [smp:2] [async-threads:0] [kernel-poll:false]  Eshell V5.6.3  (abort with ^G)
 
 1&gt;  

Pour sortir de la console erlang Ctrl+C puis a puis entré.

(Ctrl+C donne accès à un menu &quot;BREAK&quot;, a pour abort)...

 BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded
        (v)ersion (k)ill (D)b-tables (d)istribution

Vous pouvez vérifier à tout moment que votre serveur ejabberd fonctionne avec la commande suivante:
 # '''ejabberdctl status'''
 The node ejabberd@hostname is started with status: started
 ejabberd 2.1.5 is running in that node

== Configuration ==

EJabberd se configure dans le fichier /etc/ejabberd/ejabberd.cfg

Nous verrons plus loin comment utiliser l'interface web accessible par 'http://votreserveur:5280/admin' pour réaliser les tâches d'administration.

Avant tout, il faut créer un certificat valide pour le domaine que vous allez utiliser :

 # mv /etc/ejabberd/ejabberd.pem /etc/ejabberd/ejabberd.pem.orig
 $ openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out server.pem
 $ openssl rsa -in privkey.pem -out privkey.pem
 $ cat privkey.pem &gt;&gt; server.pem
 $ rm privkey.pem
 # mv server.pem /etc/ejabberd/ejabberd.pem
 # chown root:ejabberd /etc/ejabberd/ejabberd.pem
 # chmod 640 /etc/ejabberd/ejabberd.pem

Répondez à la question &quot;Common Name&quot; avec votre nom de domaine, c'est primordial car lors de la connexion de vos clients, il leur sera demandé de valider le certificat:

 Organizational Unit Name (eg, section) []:
 Common Name (eg, YOUR name) []:votredomaine.ltd

Notez (ou retenez) le mot de passe demandé au début, même si vous ne devriez plus en avoir besoin par la suite.

Remarque au sujet du certificat:
Si avec cette commande ($ cat privkey.pem &gt; server.pem) vous obtenez une erreur de ce genre :

 ** Reason for termination =
 ** { {badmatch,{error,&quot;SSL_CTX_use_certificate_file failed: error:0906D06C:PEM routines:PEM_read_bio:no start line&quot;}},

Recommencez votre certificat avec cette commande : $ cat privkey.pem &gt;&gt; server.pem


Pensez à ouvrir dans votre firewall les ports TCP 5222 et 5269 pour le protocole XMPP, ainsi que le port TCP 5280 pour l'interface web d'administration.

Sauvegarder le fichier de configuration avant d'y faire la moindre modification (prudence...)

 # cp /etc/ejabberd/ejabberd.cfg /etc/ejabberd/ejabberd.cfg.orig 

=== le fichier ejabberd.cfg ===

Complétez maintenant le fichier ejabberd.cfg comme suit :

 # cat /etc/ejabberd/ejabberd.cfg

&lt;code erlang&gt;
{acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}.
{acl, admin, {user, &quot;laurent&quot;, &quot;isalo.org&quot;}}.
{acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}.
{hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}.

{loglevel, 3}.

{listen,
 [
  {5222, ejabberd_c2s, [
                       {access, c2s},
                       {shaper, c2s_shaper},
                       {max_stanza_size, 65536},
                       starttls_required, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                       ]},
 {5269, ejabberd_s2s_in, [
                         {shaper, s2s_shaper},
                         {max_stanza_size, 131072}
                         ]},
 {5280, ejabberd_http, [
                       http_poll,
                       web_admin
                       ]}
 ]}.

{s2s_use_starttls, true}.

{s2s_certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}.

{auth_method, internal}.

{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}. 

{acl, local, {user_regexp, &quot;&quot;}}.

{access, max_user_sessions, [{10, all}]}.
{access, local, [{allow, local}]}.
{access, c2s, [{deny, blocked},
               {allow, all}]}.
{access, c2s_shaper, [{none, admin},
                      {normal, all}]}.
{access, s2s_shaper, [{fast, all}]}.
{access, announce, [{allow, admin}]}.
{access, configure, [{allow, admin}]}.
{access, muc_admin, [{allow, admin}]}.
{access, muc, [{allow, all}]}.
{access, register, [{allow, all}]}.
{access, pubsub_createnode, [{allow, all}]}.

{host_config, &quot;isalo.org&quot;,
 [  
  {access, c2s, [{allow, admin}, {allow, all}]},
  {access, register, [{allow, all}]}
 ]
}.                                 

{language, &quot;fr&quot;}.

{modules,
 [
  {mod_adhoc,    []},
  {mod_announce, [{access, announce}]}, % requires mod_adhoc
  {mod_caps,     []},
  {mod_configure,[]}, % requires mod_adhoc
  {mod_ctlextra, []},               
  {mod_disco,    []},
  %%{mod_echo,   [{host, &quot;echo.localhost&quot;}]},
  {mod_irc,      []},   
  {mod_last,     []},
  {mod_muc,      [
                  %%{host, &quot;conference.@HOST@&quot;},
                  {access, muc},
                  {access_create, muc},
                  {access_persistent, muc},
                  {access_admin, muc_admin},
                  {max_users, 500}
                 ]},
  %%{mod_muc_log,[]},
  {mod_offline,  []},
  {mod_privacy,  []},
  {mod_private,  []},
  {mod_proxy65,  [
                  {access, local},
                  {shaper, c2s_shaper}
                 ]},
  {mod_pubsub,   [ % requires mod_caps
                  {access_createnode, pubsub_createnode},
                  {plugins, [&quot;default&quot;, &quot;pep&quot;]}
                 ]},
  {mod_register, [
                  {welcome_message, {&quot;Bienvenue!&quot;,
                                     &quot;Bienvenue sur le Serveur Jabber de isalo.org. &quot;
                                     &quot;Pour plus d'information à propos de Jabber :&quot;
                                     &quot;http://www.jabber.org&quot;}},

                  {access, register}
                 ]},
  {mod_roster,   []},
  {mod_stats,    []},
  {mod_time,     []},
  {mod_vcard,    []},
  {mod_version,  []}
 ]}.

&lt;/code&gt;

=== Petite explication rapide... ===

Le fichier de configuration ci-dessus est en erlang.
Le caractère % est utilisé, et non # ou ; pour commenter une ligne.
Tous les blocs se terminent par un &quot;.&quot;, il est indispensable!

* le nom du compte administrateur du serveur
 {acl, admin, {user, &quot;laurent&quot;, &quot;localhost&quot;}}. {acl, admin, {user, &quot;admin&quot;, &quot;isalo.org&quot;}}. 

* Les nom d'hôte utilisé :
 {hosts, [&quot;localhost&quot;, &quot;isalo.org&quot;]}. 

* L'adresse de courriel qui va recevoir les notifications de nouveaux comptes :
 {registration_watchers, [&quot;admin@isalo.org&quot;]}. 

* Le niveau de log (de 0 à 5) - 3 est raisonnable :
 {loglevel, 3}. 

* Les ports utilisés :

Il est recommandé de laisser ceux par défaut :
Nous avons un beau certificat, nous forçons donc la connexion avec ttls : starttls_required

 {listen,
  [
   {5222, ejabberd_c2s, [
                         {access, c2s},
                         {shaper, c2s_shaper},
                         {max_stanza_size, 65536},
                         starttls_required, {certfile, &quot;/etc/ejabberd/ejabberd.pem&quot;}
                         ]},
   {5269, ejabberd_s2s_in, [
                         {shaper, s2s_shaper},
                         {max_stanza_size, 131072}
                         ]},
   {5280, ejabberd_http, [
                         http_poll,
                         web_admin 
                         ]}
  ]}. 

Je vous laisse découvrir vous-même la suite (A faire!), il s'agit des règles d'accès au serveur (les ACL).
Tel quelle la configuration ci-dessus permet à n'importe qui de s'enregistrer.
Comme ce serveur n'est destiné qu'a votre réseau local, pas de problèmes pour l'instant!

=== DNS ===

Nous allons maintenant ajouter à notre DNS (ici Bind9) les enregistrements nécessaires :
Attention, mon serveur DNS local n'ést pas sur la machine ou tourne ejabberd. J'ai donc précisé sur quelle machine trouver les services (nas.isalo.org)

 _xmpp-server._tcp.isalo.org.	        86400	IN	SRV	5 0 5269 nas.isalo.org.
 _xmpp-client._tcp.jabber.isalo.org.	86400	IN	SRV	5 0 5222 nas.isalo.org.
 _jabber._tcp.jabber.isalo.org.	        86400	IN	SRV	5 0 5222 nas.isalo.org.

Pour vérifier que votre DNS répond bien :

 $ dig -t srv _xmpp-client._tcp.jabber.isalo.org
 
 ; &lt;&lt;&gt;&gt; DiG 9.6-ESV-R1 &lt;&lt;&gt;&gt; -t srv _xmpp-client._tcp.jabber.isalo.org
 ;; global options: +cmd
 ;; Got answer:
 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 62356
 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
 
 ;; QUESTION SECTION:
 ;_xmpp-client._tcp.jabber.isalo.org. IN	SRV
 
 ;; ANSWER SECTION:
 '''_xmpp-client._tcp.jabber.isalo.org. 86400 IN SRV 5 0 5222 nas.isalo.org.'''
 
 ;; AUTHORITY SECTION:
 isalo.org.		38400	IN	NS	lol.isalo.org.
 
 ;; ADDITIONAL SECTION:
 '''nas.isalo.org.		38400	IN	A	192.168.0.6'''
 lol.isalo.org.		38400	IN	A	192.168.0.1
 
 ;; Query time: 0 msec
 ;; SERVER: 192.168.0.1#53(192.168.0.1)
 ;; WHEN: Sat Aug 21 08:49:23 2010
 ;; MSG SIZE  rcvd: 135

Vous devez obtenir les deux lignes 'grasses' : le nom de la machine qui héberge le serveur jabber et son IP.

=== Ajout d'un administrateur ===

Nous enregistrons l'utilisateur qui fera l'administration;
Création de l'utilisateur &quot;laurent&quot; du domaine &quot;localhost&quot; avec le mot de passe &quot;motdepasse&quot; :

 # ejabberdctl register laurent localhost motdepasse

Si vous souhaitez par la suite supprimer un utilisateur :

 # ejabberdctl unregister laurent localhost 

Nous redémarrons le service
 # /etc/init.d/ejabberd restart  
ou
 # invoke-rc.d ejabberd restart

=== Premier contact avec l'interface Web ===

Nous nous rendons maintenant à l'adresse suivante pour la console d'administration :

http://127.0.0.1:5280/admin
Connexion avec laurent@localhost motdepasse


[[Fichier:Capture d'écran - 20082010 - 10-51-08.png]]

Vérifions nos domaines :


[[Fichier:Capture d'écran - 20082010 - 11-00-13.png]]

Nous avons bien deux domaines : localhost et isalo.org

== Utilisation ==

Nous allons maintenant tester notre serveur ejabberd...

J'utilise Pidgin, il en existe beaucoup d'autres...

Il suffit de se s'enregistrer via le nom de domaine renseigné dans la configuration, en choisissant de créer (nous l'avons autorisé dans la configuration).
Si ce n'est pas le cas, il vous faudra le faire au travers de l'interface Web d'administration


[[Fichier:Capture d'écran - 20082010 - 11-22-39.png]]


Ici, '''il faut préciser le serveur de connexion''' (soit par son nom - J'ai mis nas - si vous avec un DNS, soit par son IP).

Laissez vide &quot;proxy pour les serveurs de connexion&quot; sinon vous aurez un message d'erreur

[[Fichier:Capture d'écran - 20082010 - 11-24-27.png]]


[[Fichier:Capture d'écran - 20082010 - 11-25-24.png]]


[[Fichier:Capture d'écran - 20082010 - 11-26-14.png]]


[[Fichier:Capture d'écran - 20082010 - 11-32-17.png]]


[[Fichier:Capture d'écran - 20082010 - 11-33-21.png]]


Il nous reste à vérifier que les utilisateurs sont bien inscrits :

[[Fichier:Capture d'écran - 20082010 - 11-35-52.png]]

== Aller plus loin ==


[http://www.ejabberd.im/ le site officiel de ejabberd]

[http://www.ejabberd.im/tutorials De nombreux tutoriaux]

ejabberd est soutenu par Process-one - ''Site commercial''. [http://www.process-one.net/en/ejabberd/ www.process-one.net]

Voici [http://www.process-one.net/en/ejabberd/guide_en une documentation détaillée] (Attention l'installation proposée dans cette documentation passe par un installeur qui n'est pas apt). Vous y trouverez de nombreuses astuces et réglages pour votre configuration.

Beaucoup de modules sont disponibles pour augmenter les possibilités de votre serveur ejabberd (support mysql, support de nombreux autres protocoles, etc.)

[[Utilisateur:Lol|Lol]] 20 août 2010 à 12:17 (EAT)</text>
      <sha1>jpxntaozx5zpqzn8zgt5bs2rfo29lx3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Erreur lors d'un update: NO PUBKEY</title>
    <ns>0</ns>
    <id>282</id>
    <revision>
      <id>1235</id>
      <timestamp>2010-03-31T05:19:03Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « {{Ébauche|NO PUBKEY}}  Problèmes de Clés GPG lors des updates  == Ajout de la clé ==  Lors d'un update d'apt, vous êtes parfois tombé sur un message du type   W: GPG er… »</comment>
      <text xml:space="preserve" bytes="1890">{{Ébauche|NO PUBKEY}}

Problèmes de Clés GPG lors des updates

== Ajout de la clé ==

Lors d'un update d'apt, vous êtes parfois tombé sur un message du type

 W: GPG error: &lt;url d'un dépot&gt; Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY XXXXXXXX01234567

Reprenez les 8 Derniers éléments de la clé (01234567 dans l'exemple) .

Ajoutez la clé à votre porteclé personnel depuis un serveur sûr:

 sudo gpg --keyserver pgpkeys.mit.edu --recv-key 01234567

exportez cette clé dans le systême apt:

 sudo gpg -a --export 01234567 | sudo apt-key add -

== Pour Debian-multimedia ==

 W: GPG error: http://www.debian-multimedia.org etch Release: Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907

 # aptitude install debian-multimedia-keyring
 # aptitude update

Source : [http://debian-multimedia.org/ debian-multimedia.org]

 The first package to install is debian-multimedia-keyring.
 First download the debian-multimedia-keyring package.
 Then under root or with sudo do the following :
 &quot;dpkg -i debian-multimedia-keyring_2008.10.16_all.deb&quot; or &quot;sudo dpkg -i debian-multimedia-keyring_2008.10.16_all.deb&quot;

== Un script pour se simplifier la vie ==

Merci à [[Utilisateur:Ggoodluck47]] pour sa contribution.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef  | sudo apt-key add -

----

[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2936&amp;start=0 Source sur forum.debian-fr.org]

Documentation extérieure : [http://www.debian.org/doc/manuals/securing-debian-howto/ch7.en.html#s-deb-pack-sign Debian.org]


--[[Utilisateur:Lol|Lol]] 31 mars 2010 à 05:19 (UTC)</text>
      <sha1>arudzrq8tv0s61ebedwqu53hje2pnia</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1242</id>
      <parentid>1235</parentid>
      <timestamp>2010-04-01T12:33:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2974">{{Ébauche|NO PUBKEY}}

Problèmes de Clés GPG lors des updates

== Ajout de la clé ==

Lors d'un update d'apt, vous êtes parfois tombé sur un message du type

 W: GPG error: &lt;url d'un dépot&gt; Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY XXXXXXXX01234567

Reprenez les 8 Derniers éléments de la clé (01234567 dans l'exemple) .

Ajoutez la clé à votre porteclé personnel depuis un serveur sûr:

 sudo gpg --keyserver pgpkeys.mit.edu --recv-key 01234567

exportez cette clé dans le systême apt:

 sudo gpg -a --export 01234567 | sudo apt-key add -

== Pour Debian-multimedia ==

 W: GPG error: http://www.debian-multimedia.org etch Release: Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907

 # aptitude install debian-multimedia-keyring
 # aptitude update

Source : [http://debian-multimedia.org/ debian-multimedia.org]

 The first package to install is debian-multimedia-keyring.
 First download the debian-multimedia-keyring package.
 Then under root or with sudo do the following :
 &quot;dpkg -i debian-multimedia-keyring_2008.10.16_all.deb&quot; or &quot;sudo dpkg -i debian-multimedia-keyring_2008.10.16_all.deb&quot;

== Un script pour se simplifier la vie ==

Merci à [[Utilisateur:Ggoodluck47|Ggoodluck47]] pour sa contribution.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef  | sudo apt-key add -

== En cas de problème avec une clé bien installée ==

Il peut arriver qu'une clé pourtant bien installée vous pose un problème, et vous donne une erreur comme celle-ci :

 W: GPG error: http://www.debian-multimedia.org lenny Release: Les signatures suivantes ne sont pas valables : BADSIG 07DC563D1F41B907 Christian Marillat &lt;marillat@debian.org&gt;

Dans ce cas il faudra enlever la clé du porte clé et la réinstaller

On enlève la clé &quot;fautive&quot;
 # apt-key del 1F41B907
 OK

On la réinstalle :
 # gpg --keyserver pgpkeys.mit.edu --recv-key 1F41B907
 gpg: requête de la clé 1F41B907 du serveur hkp pgpkeys.mit.edu
 gpg: clé 1F41B907: « Christian Marillat &lt;marillat@debian.org&gt; » 4 nouvelles signatures
 gpg: aucune clé de confiance ultime n'a été trouvée                                   
 gpg:        Quantité totale traitée: 1                                                
 gpg:           nouvelles signatures: 4
 # gpg -a --export 1F41B907 | apt-key add -
 OK

[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=26898&amp;start=0 Le fil sur le forum]

----


[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2936&amp;start=0 Source sur forum.debian-fr.org]

Documentation extérieure : [http://www.debian.org/doc/manuals/securing-debian-howto/ch7.en.html#s-deb-pack-sign Debian.org]


--[[Utilisateur:Lol|Lol]] 31 mars 2010 à 05:19 (UTC)</text>
      <sha1>dicyviqvhsrkoikb8r25sgqujb7qf87</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1257</id>
      <parentid>1242</parentid>
      <timestamp>2010-04-02T08:58:25Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2999">{{Ébauche|NO PUBKEY}}

Problèmes de Clés GPG lors des updates

== Ajout de la clé ==

Lors d'un update d'apt, vous êtes parfois tombé sur un message du type

 W: GPG error: &lt;url d'un dépot&gt; Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY XXXXXXXX01234567

Reprenez les 8 Derniers éléments de la clé (01234567 dans l'exemple) .

Ajoutez la clé à votre porteclé personnel depuis un serveur sûr:

 sudo gpg --keyserver pgpkeys.mit.edu --recv-key 01234567

exportez cette clé dans le systême apt:

 sudo gpg -a --export 01234567 | sudo apt-key add -

== Pour Debian-multimedia ==

 W: GPG error: http://www.debian-multimedia.org etch Release: Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907

 # aptitude install debian-multimedia-keyring
 # aptitude update

Source : [http://debian-multimedia.org/ debian-multimedia.org]

 The first package to install is debian-multimedia-keyring.
 First download the debian-multimedia-keyring package.
 Then under root or with sudo do the following :
 &quot;dpkg -i debian-multimedia-keyring_2008.10.16_all.deb&quot; or &quot;sudo dpkg -i debian-multimedia-keyring_2008.10.16_all.deb&quot;

== Un script pour se simplifier la vie ==

Merci à [[Utilisateur:Ggoodluck47|Ggoodluck47]] pour sa contribution.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef  | sudo apt-key add -

== En cas de problème avec une clé bien installée ==

Il peut arriver qu'une clé pourtant bien installée vous pose un problème, et vous donne une erreur comme celle-ci :

 W: GPG error: http://www.debian-multimedia.org lenny Release: Les signatures suivantes ne sont pas valables : BADSIG 07DC563D1F41B907 Christian Marillat &lt;marillat@debian.org&gt;

Dans ce cas il faudra enlever la clé du porte clé et la réinstaller

On enlève la clé &quot;fautive&quot;
 # apt-key del 1F41B907
 OK

On la réinstalle :
 # gpg --keyserver pgpkeys.mit.edu --recv-key 1F41B907
 gpg: requête de la clé 1F41B907 du serveur hkp pgpkeys.mit.edu
 gpg: clé 1F41B907: « Christian Marillat &lt;marillat@debian.org&gt; » 4 nouvelles signatures
 gpg: aucune clé de confiance ultime n'a été trouvée                                   
 gpg:        Quantité totale traitée: 1                                                
 gpg:           nouvelles signatures: 4
 # gpg -a --export 1F41B907 | apt-key add -
 OK

[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=26898&amp;start=0 Le fil sur le forum]

----


[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2936&amp;start=0 Source sur forum.debian-fr.org]

Documentation extérieure : [http://www.debian.org/doc/manuals/securing-debian-howto/ch7.en.html#s-deb-pack-sign Debian.org]


----

--[[Utilisateur:Lol|Lol]] 31 mars 2010 à 05:19 (UTC)
[[Catégorie:apt]]</text>
      <sha1>2dkowfx4zewrsj01yl2t86b97e656wd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1363</id>
      <parentid>1257</parentid>
      <timestamp>2010-04-08T12:48:50Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* En cas de problème avec une clé bien installée */</comment>
      <text xml:space="preserve" bytes="3008">{{Ébauche|NO PUBKEY}}

Problèmes de Clés GPG lors des updates

== Ajout de la clé ==

Lors d'un update d'apt, vous êtes parfois tombé sur un message du type

 W: GPG error: &lt;url d'un dépot&gt; Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY XXXXXXXX01234567

Reprenez les 8 Derniers éléments de la clé (01234567 dans l'exemple) .

Ajoutez la clé à votre porteclé personnel depuis un serveur sûr:

 sudo gpg --keyserver pgpkeys.mit.edu --recv-key 01234567

exportez cette clé dans le systême apt:

 sudo gpg -a --export 01234567 | sudo apt-key add -

== Pour Debian-multimedia ==

 W: GPG error: http://www.debian-multimedia.org etch Release: Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907

 # aptitude install debian-multimedia-keyring
 # aptitude update

Source : [http://debian-multimedia.org/ debian-multimedia.org]

 The first package to install is debian-multimedia-keyring.
 First download the debian-multimedia-keyring package.
 Then under root or with sudo do the following :
 &quot;dpkg -i debian-multimedia-keyring_2008.10.16_all.deb&quot; or &quot;sudo dpkg -i debian-multimedia-keyring_2008.10.16_all.deb&quot;

== Un script pour se simplifier la vie ==

Merci à [[Utilisateur:Ggoodluck47|Ggoodluck47]] pour sa contribution.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef  | sudo apt-key add -

== En cas de problème avec une clé pourtant bien installée ==

Il peut arriver qu'une clé pourtant bien installée vous pose un problème, et vous donne une erreur comme celle-ci :

 W: GPG error: http://www.debian-multimedia.org lenny Release: Les signatures suivantes ne sont pas valables : BADSIG 07DC563D1F41B907 Christian Marillat &lt;marillat@debian.org&gt;

Dans ce cas il faudra enlever la clé du porte clé et la réinstaller

On enlève la clé &quot;fautive&quot;
 # apt-key del 1F41B907
 OK

On la réinstalle :
 # gpg --keyserver pgpkeys.mit.edu --recv-key 1F41B907
 gpg: requête de la clé 1F41B907 du serveur hkp pgpkeys.mit.edu
 gpg: clé 1F41B907: « Christian Marillat &lt;marillat@debian.org&gt; » 4 nouvelles signatures
 gpg: aucune clé de confiance ultime n'a été trouvée                                   
 gpg:        Quantité totale traitée: 1                                                
 gpg:           nouvelles signatures: 4
 # gpg -a --export 1F41B907 | apt-key add -
 OK

[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=26898&amp;start=0 Le fil sur le forum]

----


[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2936&amp;start=0 Source sur forum.debian-fr.org]

Documentation extérieure : [http://www.debian.org/doc/manuals/securing-debian-howto/ch7.en.html#s-deb-pack-sign Debian.org]


----

--[[Utilisateur:Lol|Lol]] 31 mars 2010 à 05:19 (UTC)
[[Catégorie:apt]]</text>
      <sha1>j5n8g8esb0tjgplwagqh5z7kd3vb8p6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1395</id>
      <parentid>1363</parentid>
      <timestamp>2010-04-14T08:29:35Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3551">{{Ébauche|NO PUBKEY}}

Problèmes de Clés GPG lors des updates

== Ajout de la clé ==

Lors d'un update d'apt, vous êtes parfois tombé sur un message du type

 W: GPG error: &lt;url d'un dépot&gt; Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY XXXXXXXX01234567

Reprenez les 8 Derniers éléments de la clé (01234567 dans l'exemple) .

Ajoutez la clé à votre porteclé personnel depuis un serveur sûr:

 sudo gpg --keyserver pgpkeys.mit.edu --recv-key 01234567

exportez cette clé dans le systême apt:

 sudo gpg -a --export 01234567 | sudo apt-key add -

== Debian-multimedia ==

 W: GPG error: http://www.debian-multimedia.org etch Release: Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907

 # aptitude install debian-multimedia-keyring
 # aptitude update

Source : [http://debian-multimedia.org/ debian-multimedia.org]

 The first package to install is debian-multimedia-keyring.
 First download the debian-multimedia-keyring package.
 Then under root or with sudo do the following :
 &quot;dpkg -i debian-multimedia-keyring_2008.10.16_all.deb&quot; or &quot;sudo dpkg -i debian-multimedia-keyring_2008.10.16_all.deb&quot;

== Debian-backports ==

 W: GPG error: http://www.backports.org lenny-backports Release: The following signatures
 couldn't be verified because the public key is not available: NO_PUBKEYEA8E8B2116BA136C

 # aptitude install debian-backports-keyring
 # aptitude update

Ou

 # wget -O - http://backports.org/debian/archive.key | apt-key add -

Ou encore :

 # gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C
 # gpg --export 16BA136C | apt-key add -

Sourec : [http://www.backports.org/dokuwiki/doku.php?id=instructions%22 backports.org]

== Un script pour se simplifier la vie ==

Merci à [[Utilisateur:Ggoodluck47|Ggoodluck47]] pour sa contribution.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef  | sudo apt-key add -

== En cas de problème avec une clé pourtant bien installée ==

Il peut arriver qu'une clé pourtant bien installée vous pose un problème, et vous donne une erreur comme celle-ci :

 W: GPG error: http://www.debian-multimedia.org lenny Release: Les signatures suivantes ne sont pas valables : BADSIG 07DC563D1F41B907 Christian Marillat &lt;marillat@debian.org&gt;

Dans ce cas il faudra enlever la clé du porte clé et la réinstaller

On enlève la clé &quot;fautive&quot;
 # apt-key del 1F41B907
 OK

On la réinstalle :
 # gpg --keyserver pgpkeys.mit.edu --recv-key 1F41B907
 gpg: requête de la clé 1F41B907 du serveur hkp pgpkeys.mit.edu
 gpg: clé 1F41B907: « Christian Marillat &lt;marillat@debian.org&gt; » 4 nouvelles signatures
 gpg: aucune clé de confiance ultime n'a été trouvée                                   
 gpg:        Quantité totale traitée: 1                                                
 gpg:           nouvelles signatures: 4
 # gpg -a --export 1F41B907 | apt-key add -
 OK

[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=26898&amp;start=0 Le fil sur le forum]

----


[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2936&amp;start=0 Source sur forum.debian-fr.org]

Documentation extérieure : [http://www.debian.org/doc/manuals/securing-debian-howto/ch7.en.html#s-deb-pack-sign Debian.org]


----

--[[Utilisateur:Lol|Lol]] 31 mars 2010 à 05:19 (UTC)
[[Catégorie:apt]]</text>
      <sha1>5itnamw5x26zknhmd0px3jw6piurg2n</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4776</id>
      <parentid>1395</parentid>
      <timestamp>2012-12-04T16:57:48Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>/* Debian-multimedia */ mise-à-jour de l'adresse des dépôts Multimedia</comment>
      <text xml:space="preserve" bytes="3503">{{Ébauche|NO PUBKEY}}

Problèmes de Clés GPG lors des updates

== Ajout de la clé ==

Lors d'un update d'apt, vous êtes parfois tombé sur un message du type

 W: GPG error: &lt;url d'un dépot&gt; Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY XXXXXXXX01234567

Reprenez les 8 Derniers éléments de la clé (01234567 dans l'exemple) .

Ajoutez la clé à votre porteclé personnel depuis un serveur sûr:

 sudo gpg --keyserver pgpkeys.mit.edu --recv-key 01234567

exportez cette clé dans le systême apt:

 sudo gpg -a --export 01234567 | sudo apt-key add -

== Debian-multimedia ==

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907

 # aptitude install deb-multimedia-keyring
 # aptitude update

Source : [http://deb-multimedia.org/ deb-multimedia.org]

 The first package to install is deb-multimedia-keyring.
 Since Squeeze you can install this package with apt-get but you need to presse Y when the package ask what to do and do not press return.
 An new “apt-get update” is also necessary.

== Debian-backports ==

 W: GPG error: http://www.backports.org lenny-backports Release: The following signatures
 couldn't be verified because the public key is not available: NO_PUBKEYEA8E8B2116BA136C

 # aptitude install debian-backports-keyring
 # aptitude update

Ou

 # wget -O - http://backports.org/debian/archive.key | apt-key add -

Ou encore :

 # gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C
 # gpg --export 16BA136C | apt-key add -

Sourec : [http://www.backports.org/dokuwiki/doku.php?id=instructions%22 backports.org]

== Un script pour se simplifier la vie ==

Merci à [[Utilisateur:Ggoodluck47|Ggoodluck47]] pour sa contribution.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef  | sudo apt-key add -

== En cas de problème avec une clé pourtant bien installée ==

Il peut arriver qu'une clé pourtant bien installée vous pose un problème, et vous donne une erreur comme celle-ci :

 W: GPG error: http://www.debian-multimedia.org lenny Release: Les signatures suivantes ne sont pas valables : BADSIG 07DC563D1F41B907 Christian Marillat &lt;marillat@debian.org&gt;

Dans ce cas il faudra enlever la clé du porte clé et la réinstaller

On enlève la clé &quot;fautive&quot;
 # apt-key del 1F41B907
 OK

On la réinstalle :
 # gpg --keyserver pgpkeys.mit.edu --recv-key 1F41B907
 gpg: requête de la clé 1F41B907 du serveur hkp pgpkeys.mit.edu
 gpg: clé 1F41B907: « Christian Marillat &lt;marillat@debian.org&gt; » 4 nouvelles signatures
 gpg: aucune clé de confiance ultime n'a été trouvée                                   
 gpg:        Quantité totale traitée: 1                                                
 gpg:           nouvelles signatures: 4
 # gpg -a --export 1F41B907 | apt-key add -
 OK

[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=26898&amp;start=0 Le fil sur le forum]

----


[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2936&amp;start=0 Source sur forum.debian-fr.org]

Documentation extérieure : [http://www.debian.org/doc/manuals/securing-debian-howto/ch7.en.html#s-deb-pack-sign Debian.org]


----

--[[Utilisateur:Lol|Lol]] 31 mars 2010 à 05:19 (UTC)
[[Catégorie:apt]]</text>
      <sha1>5b2kmb549q3vl34hro6ix5qot7jf59h</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4777</id>
      <parentid>4776</parentid>
      <timestamp>2012-12-04T17:09:55Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>/* Debian-multimedia */ césure à l'hémistiche ;)</comment>
      <text xml:space="preserve" bytes="3504">{{Ébauche|NO PUBKEY}}

Problèmes de Clés GPG lors des updates

== Ajout de la clé ==

Lors d'un update d'apt, vous êtes parfois tombé sur un message du type

 W: GPG error: &lt;url d'un dépot&gt; Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY XXXXXXXX01234567

Reprenez les 8 Derniers éléments de la clé (01234567 dans l'exemple) .

Ajoutez la clé à votre porteclé personnel depuis un serveur sûr:

 sudo gpg --keyserver pgpkeys.mit.edu --recv-key 01234567

exportez cette clé dans le systême apt:

 sudo gpg -a --export 01234567 | sudo apt-key add -

== Debian-multimedia ==

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907

 # aptitude install deb-multimedia-keyring
 # aptitude update

Source : [http://deb-multimedia.org/ deb-multimedia.org]

 The first package to install is deb-multimedia-keyring.
 Since Squeeze you can install this package with apt-get but you need
 to presse Y when the package ask what to do and do not press return.
 An new “apt-get update” is also necessary.

== Debian-backports ==

 W: GPG error: http://www.backports.org lenny-backports Release: The following signatures
 couldn't be verified because the public key is not available: NO_PUBKEYEA8E8B2116BA136C

 # aptitude install debian-backports-keyring
 # aptitude update

Ou

 # wget -O - http://backports.org/debian/archive.key | apt-key add -

Ou encore :

 # gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C
 # gpg --export 16BA136C | apt-key add -

Sourec : [http://www.backports.org/dokuwiki/doku.php?id=instructions%22 backports.org]

== Un script pour se simplifier la vie ==

Merci à [[Utilisateur:Ggoodluck47|Ggoodluck47]] pour sa contribution.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef  | sudo apt-key add -

== En cas de problème avec une clé pourtant bien installée ==

Il peut arriver qu'une clé pourtant bien installée vous pose un problème, et vous donne une erreur comme celle-ci :

 W: GPG error: http://www.debian-multimedia.org lenny Release: Les signatures suivantes ne sont pas valables : BADSIG 07DC563D1F41B907 Christian Marillat &lt;marillat@debian.org&gt;

Dans ce cas il faudra enlever la clé du porte clé et la réinstaller

On enlève la clé &quot;fautive&quot;
 # apt-key del 1F41B907
 OK

On la réinstalle :
 # gpg --keyserver pgpkeys.mit.edu --recv-key 1F41B907
 gpg: requête de la clé 1F41B907 du serveur hkp pgpkeys.mit.edu
 gpg: clé 1F41B907: « Christian Marillat &lt;marillat@debian.org&gt; » 4 nouvelles signatures
 gpg: aucune clé de confiance ultime n'a été trouvée                                   
 gpg:        Quantité totale traitée: 1                                                
 gpg:           nouvelles signatures: 4
 # gpg -a --export 1F41B907 | apt-key add -
 OK

[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=26898&amp;start=0 Le fil sur le forum]

----


[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2936&amp;start=0 Source sur forum.debian-fr.org]

Documentation extérieure : [http://www.debian.org/doc/manuals/securing-debian-howto/ch7.en.html#s-deb-pack-sign Debian.org]


----

--[[Utilisateur:Lol|Lol]] 31 mars 2010 à 05:19 (UTC)
[[Catégorie:apt]]</text>
      <sha1>ceibg7z2ap4vz48ah1u9kg62uutv9vk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4779</id>
      <parentid>4777</parentid>
      <timestamp>2012-12-04T17:25:39Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>/* Ajout de la clé */ découpage pour les petites résolutions d'écran + orthographe + francisation</comment>
      <text xml:space="preserve" bytes="3520">{{Ébauche|NO PUBKEY}}

Problèmes de Clés GPG lors des updates

== Ajout de la clé ==

Lors d'une mise-à-jour des listes d'APT, vous êtes parfois tombés sur un message du type

 W: GPG error: &lt;url d'un dépôt&gt; Release: The following signatures couldn't be
 verified because the public key is not available: NO_PUBKEY XXXXXXXX01234567

Reprenez les huit derniers éléments de la clé (01234567 dans l'exemple).

Ajoutez la clé à votre porte-clés personnel depuis un serveur sûr :

 # gpg --keyserver pgpkeys.mit.edu --recv-key 01234567

Exportez cette clé dans le système APT :

 # gpg -a --export 01234567 | apt-key add -

== Debian-multimedia ==

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907

 # aptitude install deb-multimedia-keyring
 # aptitude update

Source : [http://deb-multimedia.org/ deb-multimedia.org]

 The first package to install is deb-multimedia-keyring.
 Since Squeeze you can install this package with apt-get but you need
 to presse Y when the package ask what to do and do not press return.
 An new “apt-get update” is also necessary.

== Debian-backports ==

 W: GPG error: http://www.backports.org lenny-backports Release: The following signatures
 couldn't be verified because the public key is not available: NO_PUBKEYEA8E8B2116BA136C

 # aptitude install debian-backports-keyring
 # aptitude update

Ou

 # wget -O - http://backports.org/debian/archive.key | apt-key add -

Ou encore :

 # gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C
 # gpg --export 16BA136C | apt-key add -

Sourec : [http://www.backports.org/dokuwiki/doku.php?id=instructions%22 backports.org]

== Un script pour se simplifier la vie ==

Merci à [[Utilisateur:Ggoodluck47|Ggoodluck47]] pour sa contribution.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef  | sudo apt-key add -

== En cas de problème avec une clé pourtant bien installée ==

Il peut arriver qu'une clé pourtant bien installée vous pose un problème, et vous donne une erreur comme celle-ci :

 W: GPG error: http://www.debian-multimedia.org lenny Release: Les signatures suivantes ne sont pas valables : BADSIG 07DC563D1F41B907 Christian Marillat &lt;marillat@debian.org&gt;

Dans ce cas il faudra enlever la clé du porte clé et la réinstaller

On enlève la clé &quot;fautive&quot;
 # apt-key del 1F41B907
 OK

On la réinstalle :
 # gpg --keyserver pgpkeys.mit.edu --recv-key 1F41B907
 gpg: requête de la clé 1F41B907 du serveur hkp pgpkeys.mit.edu
 gpg: clé 1F41B907: « Christian Marillat &lt;marillat@debian.org&gt; » 4 nouvelles signatures
 gpg: aucune clé de confiance ultime n'a été trouvée                                   
 gpg:        Quantité totale traitée: 1                                                
 gpg:           nouvelles signatures: 4
 # gpg -a --export 1F41B907 | apt-key add -
 OK

[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=26898&amp;start=0 Le fil sur le forum]

----


[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2936&amp;start=0 Source sur forum.debian-fr.org]

Documentation extérieure : [http://www.debian.org/doc/manuals/securing-debian-howto/ch7.en.html#s-deb-pack-sign Debian.org]


----

--[[Utilisateur:Lol|Lol]] 31 mars 2010 à 05:19 (UTC)
[[Catégorie:apt]]</text>
      <sha1>rgq0f3rwq96mgiptp8mb8ec11i2tcga</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4780</id>
      <parentid>4779</parentid>
      <timestamp>2012-12-04T17:36:04Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>/* Un script pour se simplifier la vie */ ajout d'une version du script sans sudo</comment>
      <text xml:space="preserve" bytes="4047">{{Ébauche|NO PUBKEY}}

Problèmes de Clés GPG lors des updates

== Ajout de la clé ==

Lors d'une mise-à-jour des listes d'APT, vous êtes parfois tombés sur un message du type

 W: GPG error: &lt;url d'un dépôt&gt; Release: The following signatures couldn't be
 verified because the public key is not available: NO_PUBKEY XXXXXXXX01234567

Reprenez les huit derniers éléments de la clé (01234567 dans l'exemple).

Ajoutez la clé à votre porte-clés personnel depuis un serveur sûr :

 # gpg --keyserver pgpkeys.mit.edu --recv-key 01234567

Exportez cette clé dans le système APT :

 # gpg -a --export 01234567 | apt-key add -

== Debian-multimedia ==

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907

 # aptitude install deb-multimedia-keyring
 # aptitude update

Source : [http://deb-multimedia.org/ deb-multimedia.org]

 The first package to install is deb-multimedia-keyring.
 Since Squeeze you can install this package with apt-get but you need
 to presse Y when the package ask what to do and do not press return.
 An new “apt-get update” is also necessary.

== Debian-backports ==

 W: GPG error: http://www.backports.org lenny-backports Release: The following signatures
 couldn't be verified because the public key is not available: NO_PUBKEYEA8E8B2116BA136C

 # aptitude install debian-backports-keyring
 # aptitude update

Ou

 # wget -O - http://backports.org/debian/archive.key | apt-key add -

Ou encore :

 # gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C
 # gpg --export 16BA136C | apt-key add -

Sourec : [http://www.backports.org/dokuwiki/doku.php?id=instructions%22 backports.org]

== Un script pour se simplifier la vie ==

Merci à [[Utilisateur:Ggoodluck47|Ggoodluck47]] pour sa contribution.

=== version utilisateur ===

Cette version du script nécessite d'avoir le paquet sudo installé sur votre système, ainsi que l'utilisateur déclaré dans le fichier sudoers.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | sudo apt-key add -

=== version root ===

Cette version du script est à lancer en root, et ne nécessite pas le paquet sudo.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | apt-key add

== En cas de problème avec une clé pourtant bien installée ==

Il peut arriver qu'une clé pourtant bien installée vous pose un problème, et vous donne une erreur comme celle-ci :

 W: GPG error: http://www.debian-multimedia.org lenny Release: Les signatures suivantes ne sont pas valables : BADSIG 07DC563D1F41B907 Christian Marillat &lt;marillat@debian.org&gt;

Dans ce cas il faudra enlever la clé du porte clé et la réinstaller

On enlève la clé &quot;fautive&quot;
 # apt-key del 1F41B907
 OK

On la réinstalle :
 # gpg --keyserver pgpkeys.mit.edu --recv-key 1F41B907
 gpg: requête de la clé 1F41B907 du serveur hkp pgpkeys.mit.edu
 gpg: clé 1F41B907: « Christian Marillat &lt;marillat@debian.org&gt; » 4 nouvelles signatures
 gpg: aucune clé de confiance ultime n'a été trouvée                                   
 gpg:        Quantité totale traitée: 1                                                
 gpg:           nouvelles signatures: 4
 # gpg -a --export 1F41B907 | apt-key add -
 OK

[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=26898&amp;start=0 Le fil sur le forum]

----


[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2936&amp;start=0 Source sur forum.debian-fr.org]

Documentation extérieure : [http://www.debian.org/doc/manuals/securing-debian-howto/ch7.en.html#s-deb-pack-sign Debian.org]


----

--[[Utilisateur:Lol|Lol]] 31 mars 2010 à 05:19 (UTC)
[[Catégorie:apt]]</text>
      <sha1>m7qncz1fkhv9ks6qfhp1fne9kzj6etz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4781</id>
      <parentid>4780</parentid>
      <timestamp>2012-12-04T17:36:57Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>/* version root */ caractère manquant dans le script</comment>
      <text xml:space="preserve" bytes="4049">{{Ébauche|NO PUBKEY}}

Problèmes de Clés GPG lors des updates

== Ajout de la clé ==

Lors d'une mise-à-jour des listes d'APT, vous êtes parfois tombés sur un message du type

 W: GPG error: &lt;url d'un dépôt&gt; Release: The following signatures couldn't be
 verified because the public key is not available: NO_PUBKEY XXXXXXXX01234567

Reprenez les huit derniers éléments de la clé (01234567 dans l'exemple).

Ajoutez la clé à votre porte-clés personnel depuis un serveur sûr :

 # gpg --keyserver pgpkeys.mit.edu --recv-key 01234567

Exportez cette clé dans le système APT :

 # gpg -a --export 01234567 | apt-key add -

== Debian-multimedia ==

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907

 # aptitude install deb-multimedia-keyring
 # aptitude update

Source : [http://deb-multimedia.org/ deb-multimedia.org]

 The first package to install is deb-multimedia-keyring.
 Since Squeeze you can install this package with apt-get but you need
 to presse Y when the package ask what to do and do not press return.
 An new “apt-get update” is also necessary.

== Debian-backports ==

 W: GPG error: http://www.backports.org lenny-backports Release: The following signatures
 couldn't be verified because the public key is not available: NO_PUBKEYEA8E8B2116BA136C

 # aptitude install debian-backports-keyring
 # aptitude update

Ou

 # wget -O - http://backports.org/debian/archive.key | apt-key add -

Ou encore :

 # gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C
 # gpg --export 16BA136C | apt-key add -

Sourec : [http://www.backports.org/dokuwiki/doku.php?id=instructions%22 backports.org]

== Un script pour se simplifier la vie ==

Merci à [[Utilisateur:Ggoodluck47|Ggoodluck47]] pour sa contribution.

=== version utilisateur ===

Cette version du script nécessite d'avoir le paquet sudo installé sur votre système, ainsi que l'utilisateur déclaré dans le fichier sudoers.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | sudo apt-key add -

=== version root ===

Cette version du script est à lancer en root, et ne nécessite pas le paquet sudo.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | apt-key add -

== En cas de problème avec une clé pourtant bien installée ==

Il peut arriver qu'une clé pourtant bien installée vous pose un problème, et vous donne une erreur comme celle-ci :

 W: GPG error: http://www.debian-multimedia.org lenny Release: Les signatures suivantes ne sont pas valables : BADSIG 07DC563D1F41B907 Christian Marillat &lt;marillat@debian.org&gt;

Dans ce cas il faudra enlever la clé du porte clé et la réinstaller

On enlève la clé &quot;fautive&quot;
 # apt-key del 1F41B907
 OK

On la réinstalle :
 # gpg --keyserver pgpkeys.mit.edu --recv-key 1F41B907
 gpg: requête de la clé 1F41B907 du serveur hkp pgpkeys.mit.edu
 gpg: clé 1F41B907: « Christian Marillat &lt;marillat@debian.org&gt; » 4 nouvelles signatures
 gpg: aucune clé de confiance ultime n'a été trouvée                                   
 gpg:        Quantité totale traitée: 1                                                
 gpg:           nouvelles signatures: 4
 # gpg -a --export 1F41B907 | apt-key add -
 OK

[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=26898&amp;start=0 Le fil sur le forum]

----


[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2936&amp;start=0 Source sur forum.debian-fr.org]

Documentation extérieure : [http://www.debian.org/doc/manuals/securing-debian-howto/ch7.en.html#s-deb-pack-sign Debian.org]


----

--[[Utilisateur:Lol|Lol]] 31 mars 2010 à 05:19 (UTC)
[[Catégorie:apt]]</text>
      <sha1>myui7mwkzu3ykb3ovxotwf2d7htgso5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4783</id>
      <parentid>4781</parentid>
      <timestamp>2012-12-04T17:43:08Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>/* Debian-multimedia */ redécoupage pour une meilleure lecture sur de petites résolutions</comment>
      <text xml:space="preserve" bytes="4050">{{Ébauche|NO PUBKEY}}

Problèmes de Clés GPG lors des updates

== Ajout de la clé ==

Lors d'une mise-à-jour des listes d'APT, vous êtes parfois tombés sur un message du type

 W: GPG error: &lt;url d'un dépôt&gt; Release: The following signatures couldn't be
 verified because the public key is not available: NO_PUBKEY XXXXXXXX01234567

Reprenez les huit derniers éléments de la clé (01234567 dans l'exemple).

Ajoutez la clé à votre porte-clés personnel depuis un serveur sûr :

 # gpg --keyserver pgpkeys.mit.edu --recv-key 01234567

Exportez cette clé dans le système APT :

 # gpg -a --export 01234567 | apt-key add -

== Debian-multimedia ==

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes n'ont
 pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907

 # aptitude install deb-multimedia-keyring
 # aptitude update

Source : [http://deb-multimedia.org/ deb-multimedia.org]

 The first package to install is deb-multimedia-keyring.
 Since Squeeze you can install this package with apt-get but you need
 to presse Y when the package ask what to do and do not press return.
 An new “apt-get update” is also necessary.

== Debian-backports ==

 W: GPG error: http://www.backports.org lenny-backports Release: The following signatures
 couldn't be verified because the public key is not available: NO_PUBKEYEA8E8B2116BA136C

 # aptitude install debian-backports-keyring
 # aptitude update

Ou

 # wget -O - http://backports.org/debian/archive.key | apt-key add -

Ou encore :

 # gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C
 # gpg --export 16BA136C | apt-key add -

Sourec : [http://www.backports.org/dokuwiki/doku.php?id=instructions%22 backports.org]

== Un script pour se simplifier la vie ==

Merci à [[Utilisateur:Ggoodluck47|Ggoodluck47]] pour sa contribution.

=== version utilisateur ===

Cette version du script nécessite d'avoir le paquet sudo installé sur votre système, ainsi que l'utilisateur déclaré dans le fichier sudoers.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | sudo apt-key add -

=== version root ===

Cette version du script est à lancer en root, et ne nécessite pas le paquet sudo.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | apt-key add -

== En cas de problème avec une clé pourtant bien installée ==

Il peut arriver qu'une clé pourtant bien installée vous pose un problème, et vous donne une erreur comme celle-ci :

 W: GPG error: http://www.debian-multimedia.org lenny Release: Les signatures suivantes ne sont pas valables : BADSIG 07DC563D1F41B907 Christian Marillat &lt;marillat@debian.org&gt;

Dans ce cas il faudra enlever la clé du porte clé et la réinstaller

On enlève la clé &quot;fautive&quot;
 # apt-key del 1F41B907
 OK

On la réinstalle :
 # gpg --keyserver pgpkeys.mit.edu --recv-key 1F41B907
 gpg: requête de la clé 1F41B907 du serveur hkp pgpkeys.mit.edu
 gpg: clé 1F41B907: « Christian Marillat &lt;marillat@debian.org&gt; » 4 nouvelles signatures
 gpg: aucune clé de confiance ultime n'a été trouvée                                   
 gpg:        Quantité totale traitée: 1                                                
 gpg:           nouvelles signatures: 4
 # gpg -a --export 1F41B907 | apt-key add -
 OK

[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=26898&amp;start=0 Le fil sur le forum]

----


[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2936&amp;start=0 Source sur forum.debian-fr.org]

Documentation extérieure : [http://www.debian.org/doc/manuals/securing-debian-howto/ch7.en.html#s-deb-pack-sign Debian.org]


----

--[[Utilisateur:Lol|Lol]] 31 mars 2010 à 05:19 (UTC)
[[Catégorie:apt]]</text>
      <sha1>rzr088q7vvx9kbkp4azk4napoxdzu1d</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4784</id>
      <parentid>4783</parentid>
      <timestamp>2012-12-04T17:44:40Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>/* Debian-multimedia */ aptitude -&gt; apt-get (plus rapide)</comment>
      <text xml:space="preserve" bytes="4048">{{Ébauche|NO PUBKEY}}

Problèmes de Clés GPG lors des updates

== Ajout de la clé ==

Lors d'une mise-à-jour des listes d'APT, vous êtes parfois tombés sur un message du type

 W: GPG error: &lt;url d'un dépôt&gt; Release: The following signatures couldn't be
 verified because the public key is not available: NO_PUBKEY XXXXXXXX01234567

Reprenez les huit derniers éléments de la clé (01234567 dans l'exemple).

Ajoutez la clé à votre porte-clés personnel depuis un serveur sûr :

 # gpg --keyserver pgpkeys.mit.edu --recv-key 01234567

Exportez cette clé dans le système APT :

 # gpg -a --export 01234567 | apt-key add -

== Debian-multimedia ==

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes n'ont
 pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907

 # apt-get install deb-multimedia-keyring
 # apt-get update

Source : [http://deb-multimedia.org/ deb-multimedia.org]

 The first package to install is deb-multimedia-keyring.
 Since Squeeze you can install this package with apt-get but you need
 to presse Y when the package ask what to do and do not press return.
 An new “apt-get update” is also necessary.

== Debian-backports ==

 W: GPG error: http://www.backports.org lenny-backports Release: The following signatures
 couldn't be verified because the public key is not available: NO_PUBKEYEA8E8B2116BA136C

 # aptitude install debian-backports-keyring
 # aptitude update

Ou

 # wget -O - http://backports.org/debian/archive.key | apt-key add -

Ou encore :

 # gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C
 # gpg --export 16BA136C | apt-key add -

Sourec : [http://www.backports.org/dokuwiki/doku.php?id=instructions%22 backports.org]

== Un script pour se simplifier la vie ==

Merci à [[Utilisateur:Ggoodluck47|Ggoodluck47]] pour sa contribution.

=== version utilisateur ===

Cette version du script nécessite d'avoir le paquet sudo installé sur votre système, ainsi que l'utilisateur déclaré dans le fichier sudoers.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | sudo apt-key add -

=== version root ===

Cette version du script est à lancer en root, et ne nécessite pas le paquet sudo.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | apt-key add -

== En cas de problème avec une clé pourtant bien installée ==

Il peut arriver qu'une clé pourtant bien installée vous pose un problème, et vous donne une erreur comme celle-ci :

 W: GPG error: http://www.debian-multimedia.org lenny Release: Les signatures suivantes ne sont pas valables : BADSIG 07DC563D1F41B907 Christian Marillat &lt;marillat@debian.org&gt;

Dans ce cas il faudra enlever la clé du porte clé et la réinstaller

On enlève la clé &quot;fautive&quot;
 # apt-key del 1F41B907
 OK

On la réinstalle :
 # gpg --keyserver pgpkeys.mit.edu --recv-key 1F41B907
 gpg: requête de la clé 1F41B907 du serveur hkp pgpkeys.mit.edu
 gpg: clé 1F41B907: « Christian Marillat &lt;marillat@debian.org&gt; » 4 nouvelles signatures
 gpg: aucune clé de confiance ultime n'a été trouvée                                   
 gpg:        Quantité totale traitée: 1                                                
 gpg:           nouvelles signatures: 4
 # gpg -a --export 1F41B907 | apt-key add -
 OK

[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=26898&amp;start=0 Le fil sur le forum]

----


[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2936&amp;start=0 Source sur forum.debian-fr.org]

Documentation extérieure : [http://www.debian.org/doc/manuals/securing-debian-howto/ch7.en.html#s-deb-pack-sign Debian.org]


----

--[[Utilisateur:Lol|Lol]] 31 mars 2010 à 05:19 (UTC)
[[Catégorie:apt]]</text>
      <sha1>q5fc4veohfblqges8suv8j6jn8aebrb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4785</id>
      <parentid>4784</parentid>
      <timestamp>2012-12-04T17:49:41Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>/* En cas de problème avec une clé pourtant bien installée */ découpage + lenny -&gt; squeeze + debian-multimedia -&gt; deb-multimedia + HTTPS + mise-à-jour des liens vers le forum + francisation du lien debian.org</comment>
      <text xml:space="preserve" bytes="4084">{{Ébauche|NO PUBKEY}}

Problèmes de Clés GPG lors des updates

== Ajout de la clé ==

Lors d'une mise-à-jour des listes d'APT, vous êtes parfois tombés sur un message du type

 W: GPG error: &lt;url d'un dépôt&gt; Release: The following signatures couldn't be
 verified because the public key is not available: NO_PUBKEY XXXXXXXX01234567

Reprenez les huit derniers éléments de la clé (01234567 dans l'exemple).

Ajoutez la clé à votre porte-clés personnel depuis un serveur sûr :

 # gpg --keyserver pgpkeys.mit.edu --recv-key 01234567

Exportez cette clé dans le système APT :

 # gpg -a --export 01234567 | apt-key add -

== Debian-multimedia ==

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes n'ont
 pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907

 # apt-get install deb-multimedia-keyring
 # apt-get update

Source : [http://deb-multimedia.org/ deb-multimedia.org]

 The first package to install is deb-multimedia-keyring.
 Since Squeeze you can install this package with apt-get but you need
 to presse Y when the package ask what to do and do not press return.
 An new “apt-get update” is also necessary.

== Debian-backports ==

 W: GPG error: http://www.backports.org lenny-backports Release: The following signatures
 couldn't be verified because the public key is not available: NO_PUBKEYEA8E8B2116BA136C

 # aptitude install debian-backports-keyring
 # aptitude update

Ou

 # wget -O - http://backports.org/debian/archive.key | apt-key add -

Ou encore :

 # gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C
 # gpg --export 16BA136C | apt-key add -

Sourec : [http://www.backports.org/dokuwiki/doku.php?id=instructions%22 backports.org]

== Un script pour se simplifier la vie ==

Merci à [[Utilisateur:Ggoodluck47|Ggoodluck47]] pour sa contribution.

=== version utilisateur ===

Cette version du script nécessite d'avoir le paquet sudo installé sur votre système, ainsi que l'utilisateur déclaré dans le fichier sudoers.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | sudo apt-key add -

=== version root ===

Cette version du script est à lancer en root, et ne nécessite pas le paquet sudo.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | apt-key add -

== En cas de problème avec une clé pourtant bien installée ==

Il peut arriver qu'une clé pourtant bien installée vous pose un problème, et vous donne une erreur comme celle-ci :

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes
 ne sont pas valables : BADSIG 07DC563D1F41B907 Christian Marillat &lt;marillat@debian.org&gt;

Dans ce cas il faudra enlever la clé du porte-clés et la réinstaller.

On enlève la clé &quot;fautive&quot; :
 # apt-key del 1F41B907
 OK

On la réinstalle :
 # gpg --keyserver pgpkeys.mit.edu --recv-key 1F41B907
 gpg: requête de la clé 1F41B907 du serveur hkp pgpkeys.mit.edu
 gpg: clé 1F41B907: « Christian Marillat &lt;marillat@debian.org&gt; » 4 nouvelles signatures
 gpg: aucune clé de confiance ultime n'a été trouvée                                   
 gpg:        Quantité totale traitée: 1                                                
 gpg:           nouvelles signatures: 4
 # gpg -a --export 1F41B907 | apt-key add -
 OK

[https://www.debian-fr.org/gpg-et-debian-multimedia-experimental-sidux-t26898.html Le fil sur le forum]

----


[https://www.debian-fr.org/erreur-lors-d-un-update-no-pubkey-t2936.html Source sur forum.debian-fr.org]

Documentation extérieure : [http://www.debian.org/doc/manuals/securing-debian-howto/ch7.fr.html#s-deb-pack-sign Debian.org]


----

--[[Utilisateur:Lol|Lol]] 31 mars 2010 à 05:19 (UTC)
[[Catégorie:apt]]</text>
      <sha1>674p2aa5o8om6veepidm9wufwmiwe3n</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4793</id>
      <parentid>4785</parentid>
      <timestamp>2012-12-06T14:17:46Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="3512">Problèmes de Clés GPG lors des updates

== Ajout de la clé ==

Lors d'une mise-à-jour des listes d'APT, vous êtes parfois tombés sur un message du type

 W: GPG error: &lt;url d'un dépôt&gt; Release: The following signatures couldn't be
 verified because the public key is not available: NO_PUBKEY XXXXXXXX01234567

Reprenez les huit derniers éléments de la clé (01234567 dans l'exemple).

Ajoutez la clé à votre porte-clés personnel depuis un serveur sûr :

 # gpg --keyserver pgpkeys.mit.edu --recv-key 01234567

Exportez cette clé dans le système APT :

 # gpg -a --export 01234567 | apt-key add -

== Debian-multimedia ==

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes n'ont
 pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907

 # apt-get install deb-multimedia-keyring
 # apt-get update

Source : [http://deb-multimedia.org/ deb-multimedia.org]

 The first package to install is deb-multimedia-keyring.
 Since Squeeze you can install this package with apt-get but you need
 to presse Y when the package ask what to do and do not press return.
 An new “apt-get update” is also necessary.

== Un script pour se simplifier la vie ==

Merci à [[Utilisateur:Ggoodluck47|Ggoodluck47]] pour sa contribution.

=== version utilisateur ===

Cette version du script nécessite d'avoir le paquet sudo installé sur votre système, ainsi que l'utilisateur déclaré dans le fichier sudoers.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | sudo apt-key add -

=== version root ===

Cette version du script est à lancer en root, et ne nécessite pas le paquet sudo.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | apt-key add -

== En cas de problème avec une clé pourtant bien installée ==

Il peut arriver qu'une clé pourtant bien installée vous pose un problème, et vous donne une erreur comme celle-ci :

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes
 ne sont pas valables : BADSIG 07DC563D1F41B907 Christian Marillat &lt;marillat@debian.org&gt;

Dans ce cas il faudra enlever la clé du porte-clés et la réinstaller.

On enlève la clé &quot;fautive&quot; :
 # apt-key del 1F41B907
 OK

On la réinstalle :
 # gpg --keyserver pgpkeys.mit.edu --recv-key 1F41B907
 gpg: requête de la clé 1F41B907 du serveur hkp pgpkeys.mit.edu
 gpg: clé 1F41B907: « Christian Marillat &lt;marillat@debian.org&gt; » 4 nouvelles signatures
 gpg: aucune clé de confiance ultime n'a été trouvée                                   
 gpg:        Quantité totale traitée: 1                                                
 gpg:           nouvelles signatures: 4
 # gpg -a --export 1F41B907 | apt-key add -
 OK

[https://www.debian-fr.org/gpg-et-debian-multimedia-experimental-sidux-t26898.html Le fil sur le forum]

----


[https://www.debian-fr.org/erreur-lors-d-un-update-no-pubkey-t2936.html Source sur forum.debian-fr.org]

Documentation extérieure : [http://www.debian.org/doc/manuals/securing-debian-howto/ch7.fr.html#s-deb-pack-sign Debian.org]


----

--[[Utilisateur:Lol|Lol]] 31 mars 2010 à 05:19 (UTC)
[[Catégorie:apt]]</text>
      <sha1>s8l7p20v952yimrkmxzevhuxql7qpuy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4940</id>
      <parentid>4793</parentid>
      <timestamp>2013-01-25T11:57:44Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Debian-multimedia */ Unstable et squeeze-backports</comment>
      <text xml:space="preserve" bytes="3875">Problèmes de Clés GPG lors des updates

== Ajout de la clé ==

Lors d'une mise-à-jour des listes d'APT, vous êtes parfois tombés sur un message du type

 W: GPG error: &lt;url d'un dépôt&gt; Release: The following signatures couldn't be
 verified because the public key is not available: NO_PUBKEY XXXXXXXX01234567

Reprenez les huit derniers éléments de la clé (01234567 dans l'exemple).

Ajoutez la clé à votre porte-clés personnel depuis un serveur sûr :

 # gpg --keyserver pgpkeys.mit.edu --recv-key 01234567

Exportez cette clé dans le système APT :

 # gpg -a --export 01234567 | apt-key add -

== Debian-multimedia ==

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes n'ont
 pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907

 # apt-get install deb-multimedia-keyring
 # apt-get update

Source : [http://deb-multimedia.org/ deb-multimedia.org]

 The first package to install is deb-multimedia-keyring.
 Since Squeeze you can install this package with apt-get but you need
 to presse Y when the package ask what to do and do not press return.
 An new “apt-get update” is also necessary.

Dans Debian unstable et les backports, installer le paquet suivant: pkg-mozilla-archive-keyring
Il faut utliser (à ce jour 25/01/2013) la version 1.1, avec la version 1 (ou sans le paquet) vous aurez droit à ce genre de message:

 W: GPG error: http://mozilla.debian.net squeeze-backports Release: The
 following signatures were invalid: KEYEXPIRED 1352888501

== Un script pour se simplifier la vie ==

Merci à [[Utilisateur:Ggoodluck47|Ggoodluck47]] pour sa contribution.

=== version utilisateur ===

Cette version du script nécessite d'avoir le paquet sudo installé sur votre système, ainsi que l'utilisateur déclaré dans le fichier sudoers.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | sudo apt-key add -

=== version root ===

Cette version du script est à lancer en root, et ne nécessite pas le paquet sudo.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | apt-key add -

== En cas de problème avec une clé pourtant bien installée ==

Il peut arriver qu'une clé pourtant bien installée vous pose un problème, et vous donne une erreur comme celle-ci :

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes
 ne sont pas valables : BADSIG 07DC563D1F41B907 Christian Marillat &lt;marillat@debian.org&gt;

Dans ce cas il faudra enlever la clé du porte-clés et la réinstaller.

On enlève la clé &quot;fautive&quot; :
 # apt-key del 1F41B907
 OK

On la réinstalle :
 # gpg --keyserver pgpkeys.mit.edu --recv-key 1F41B907
 gpg: requête de la clé 1F41B907 du serveur hkp pgpkeys.mit.edu
 gpg: clé 1F41B907: « Christian Marillat &lt;marillat@debian.org&gt; » 4 nouvelles signatures
 gpg: aucune clé de confiance ultime n'a été trouvée                                   
 gpg:        Quantité totale traitée: 1                                                
 gpg:           nouvelles signatures: 4
 # gpg -a --export 1F41B907 | apt-key add -
 OK

[https://www.debian-fr.org/gpg-et-debian-multimedia-experimental-sidux-t26898.html Le fil sur le forum]

----


[https://www.debian-fr.org/erreur-lors-d-un-update-no-pubkey-t2936.html Source sur forum.debian-fr.org]

Documentation extérieure : [http://www.debian.org/doc/manuals/securing-debian-howto/ch7.fr.html#s-deb-pack-sign Debian.org]


----

--[[Utilisateur:Lol|Lol]] 31 mars 2010 à 05:19 (UTC)
[[Catégorie:apt]]</text>
      <sha1>ato6svzz309y0gx1tgxih5nyw5tl0bt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5464</id>
      <parentid>4940</parentid>
      <timestamp>2013-12-02T16:37:51Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>/* Ajout de la clé */</comment>
      <text xml:space="preserve" bytes="4755">Problèmes de Clés GPG lors des updates

== Comprendre de quoi il s'agit ==

Les paquets Debian sont signés c'est à dire que les mainteneurs des paquets debian ajoutent un petit fichier (une signature) pour garantir aux utilisateurs que nous sommes que les paquets qu'ils sont entrain d'installer sont bien créé par les mainteneurs et non par des pirates.

Le système fonctionne avec un ensemble de signatures que l'on considère comme fiables (digne de confiance). Debian installe par défaut les signatures officielles Debian.

L'erreur NO PUBKEY indique qu'un dépôt de paquet utilise une clef (des signature) que vous ne considérez pas comme digne de confiance.

Si vous savez que la clef en question est digne de confiance (par exemple si vous venez d'ajouter un nouveau dépôt), alors vous pouvez appliquer l'une des procédures suivante à fin d'indiquer que vous faites confiance à cette nouvelle clef.

== Ajout de la clé ==

Lors d'une mise-à-jour des listes d'APT, vous êtes parfois tombés sur un message du type

 W: GPG error: &lt;url d'un dépôt&gt; Release: The following signatures couldn't be
 verified because the public key is not available: NO_PUBKEY XXXXXXXX01234567

Reprenez les huit derniers éléments de la clé (01234567 dans l'exemple).

Ajoutez la clé à votre porte-clés personnel depuis un serveur sûr :

 # gpg --keyserver pgpkeys.mit.edu --recv-key 01234567

Exportez cette clé dans le système APT :

 # gpg -a --export 01234567 | apt-key add -

== Debian-multimedia ==

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes n'ont
 pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907

 # apt-get install deb-multimedia-keyring
 # apt-get update

Source : [http://deb-multimedia.org/ deb-multimedia.org]

 The first package to install is deb-multimedia-keyring.
 Since Squeeze you can install this package with apt-get but you need
 to presse Y when the package ask what to do and do not press return.
 An new “apt-get update” is also necessary.

Dans Debian unstable et les backports, installer le paquet suivant: pkg-mozilla-archive-keyring
Il faut utliser (à ce jour 25/01/2013) la version 1.1, avec la version 1 (ou sans le paquet) vous aurez droit à ce genre de message:

 W: GPG error: http://mozilla.debian.net squeeze-backports Release: The
 following signatures were invalid: KEYEXPIRED 1352888501

== Un script pour se simplifier la vie ==

Merci à [[Utilisateur:Ggoodluck47|Ggoodluck47]] pour sa contribution.

=== version utilisateur ===

Cette version du script nécessite d'avoir le paquet sudo installé sur votre système, ainsi que l'utilisateur déclaré dans le fichier sudoers.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | sudo apt-key add -

=== version root ===

Cette version du script est à lancer en root, et ne nécessite pas le paquet sudo.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | apt-key add -

== En cas de problème avec une clé pourtant bien installée ==

Il peut arriver qu'une clé pourtant bien installée vous pose un problème, et vous donne une erreur comme celle-ci :

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes
 ne sont pas valables : BADSIG 07DC563D1F41B907 Christian Marillat &lt;marillat@debian.org&gt;

Dans ce cas il faudra enlever la clé du porte-clés et la réinstaller.

On enlève la clé &quot;fautive&quot; :
 # apt-key del 1F41B907
 OK

On la réinstalle :
 # gpg --keyserver pgpkeys.mit.edu --recv-key 1F41B907
 gpg: requête de la clé 1F41B907 du serveur hkp pgpkeys.mit.edu
 gpg: clé 1F41B907: « Christian Marillat &lt;marillat@debian.org&gt; » 4 nouvelles signatures
 gpg: aucune clé de confiance ultime n'a été trouvée                                   
 gpg:        Quantité totale traitée: 1                                                
 gpg:           nouvelles signatures: 4
 # gpg -a --export 1F41B907 | apt-key add -
 OK

[https://www.debian-fr.org/gpg-et-debian-multimedia-experimental-sidux-t26898.html Le fil sur le forum]

----


[https://www.debian-fr.org/erreur-lors-d-un-update-no-pubkey-t2936.html Source sur forum.debian-fr.org]

Documentation extérieure : [http://www.debian.org/doc/manuals/securing-debian-howto/ch7.fr.html#s-deb-pack-sign Debian.org]


----

--[[Utilisateur:Lol|Lol]] 31 mars 2010 à 05:19 (UTC)
[[Catégorie:apt]]</text>
      <sha1>spm9eqhfflp58p759hbd3ao25xzhlpo</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5465</id>
      <parentid>5464</parentid>
      <timestamp>2013-12-02T16:40:41Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <text xml:space="preserve" bytes="4901">Problèmes de Clés GPG lors des updates

== Comprendre de quoi il s'agit ==

Les paquets Debian sont signés c'est à dire que les mainteneurs des paquets debian ajoutent un petit fichier (une signature) pour garantir aux utilisateurs que nous sommes que les paquets qu'ils sont entrain d'installer sont bien créé par les mainteneurs et non par des pirates.

Le système fonctionne avec un ensemble de signatures que l'on considère comme fiables (digne de confiance). Debian installe par défaut les signatures officielles Debian.

L'erreur NO PUBKEY indique qu'un dépôt de paquet utilise une clef (des signature) que vous ne considérez pas comme digne de confiance.

Si vous savez que la clef en question est digne de confiance (par exemple si vous venez d'ajouter un nouveau dépôt), alors vous pouvez appliquer l'une des procédures suivante à fin d'indiquer que vous faites confiance à cette nouvelle clef.

== Deb-multimedia ==

Si l'erreur apparaît lorsque vous venez d'ajouter le dépôt deb-multimedia.org, vous devriez installer le paquet deb-multimedia-keyring.

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes n'ont
 pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907

 # apt-get install deb-multimedia-keyring
 # apt-get update

Source : [http://deb-multimedia.org/ deb-multimedia.org]

 The first package to install is deb-multimedia-keyring.
 Since Squeeze you can install this package with apt-get but you need
 to presse Y when the package ask what to do and do not press return.
 An new “apt-get update” is also necessary.

Dans Debian unstable et les backports, installer le paquet suivant: pkg-mozilla-archive-keyring
Il faut utliser (à ce jour 25/01/2013) la version 1.1, avec la version 1 (ou sans le paquet) vous aurez droit à ce genre de message:

 W: GPG error: http://mozilla.debian.net squeeze-backports Release: The
 following signatures were invalid: KEYEXPIRED 1352888501

== Ajout manuelle de la clé ==

Lors d'une mise-à-jour des listes d'APT, vous êtes parfois tombés sur un message du type

 W: GPG error: &lt;url d'un dépôt&gt; Release: The following signatures couldn't be
 verified because the public key is not available: NO_PUBKEY XXXXXXXX01234567

Reprenez les huit derniers éléments de la clé (01234567 dans l'exemple).

Ajoutez la clé à votre porte-clés personnel depuis un serveur sûr :

 # gpg --keyserver pgpkeys.mit.edu --recv-key 01234567

Exportez cette clé dans le système APT :

 # gpg -a --export 01234567 | apt-key add -

== Un script pour se simplifier la vie ==

Merci à [[Utilisateur:Ggoodluck47|Ggoodluck47]] pour sa contribution.

=== version utilisateur ===

Cette version du script nécessite d'avoir le paquet sudo installé sur votre système, ainsi que l'utilisateur déclaré dans le fichier sudoers.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | sudo apt-key add -

=== version root ===

Cette version du script est à lancer en root, et ne nécessite pas le paquet sudo.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | apt-key add -

== En cas de problème avec une clé pourtant bien installée ==

Il peut arriver qu'une clé pourtant bien installée vous pose un problème, et vous donne une erreur comme celle-ci :

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes
 ne sont pas valables : BADSIG 07DC563D1F41B907 Christian Marillat &lt;marillat@debian.org&gt;

Dans ce cas il faudra enlever la clé du porte-clés et la réinstaller.

On enlève la clé &quot;fautive&quot; :
 # apt-key del 1F41B907
 OK

On la réinstalle :
 # gpg --keyserver pgpkeys.mit.edu --recv-key 1F41B907
 gpg: requête de la clé 1F41B907 du serveur hkp pgpkeys.mit.edu
 gpg: clé 1F41B907: « Christian Marillat &lt;marillat@debian.org&gt; » 4 nouvelles signatures
 gpg: aucune clé de confiance ultime n'a été trouvée                                   
 gpg:        Quantité totale traitée: 1                                                
 gpg:           nouvelles signatures: 4
 # gpg -a --export 1F41B907 | apt-key add -
 OK

[https://www.debian-fr.org/gpg-et-debian-multimedia-experimental-sidux-t26898.html Le fil sur le forum]

----


[https://www.debian-fr.org/erreur-lors-d-un-update-no-pubkey-t2936.html Source sur forum.debian-fr.org]

Documentation extérieure : [http://www.debian.org/doc/manuals/securing-debian-howto/ch7.fr.html#s-deb-pack-sign Debian.org]


----

--[[Utilisateur:Lol|Lol]] 31 mars 2010 à 05:19 (UTC)
[[Catégorie:apt]]</text>
      <sha1>nttvy4x8xll1hwjldrjinp9jq3o8ggj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5466</id>
      <parentid>5465</parentid>
      <timestamp>2013-12-02T16:44:37Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>/* Deb-multimedia */</comment>
      <text xml:space="preserve" bytes="5403">Problèmes de Clés GPG lors des updates

== Comprendre de quoi il s'agit ==

Les paquets Debian sont signés c'est à dire que les mainteneurs des paquets debian ajoutent un petit fichier (une signature) pour garantir aux utilisateurs que nous sommes que les paquets qu'ils sont entrain d'installer sont bien créé par les mainteneurs et non par des pirates.

Le système fonctionne avec un ensemble de signatures que l'on considère comme fiables (digne de confiance). Debian installe par défaut les signatures officielles Debian.

L'erreur NO PUBKEY indique qu'un dépôt de paquet utilise une clef (des signature) que vous ne considérez pas comme digne de confiance.

Si vous savez que la clef en question est digne de confiance (par exemple si vous venez d'ajouter un nouveau dépôt), alors vous pouvez appliquer l'une des procédures suivante à fin d'indiquer que vous faites confiance à cette nouvelle clef.

== Ajout automatique de clef ==

Pour ajouter une clef d'un dépôt que l'on vient d'installer, le moyen recommandé consiste à installer le paquet de ce dépôt dont le nom finis pas -keyring.
Cette solution est à la fois simple, mais elle permet aussi aux mainteneurs du dépôt de mettre à jour leur clef plus facilement (ils peuvent prévoir une periode de transition durant la quelle, ils enverront une mise à jour de ce paquet qui installera la nouvelle clef et retirera la précédente).

=== Deb-multimedia ===

Si l'erreur apparaît lorsque vous venez d'ajouter le dépôt deb-multimedia.org, vous devriez installer le paquet deb-multimedia-keyring.

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes n'ont
 pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907

 # apt-get install deb-multimedia-keyring
 # apt-get update

Source : [http://deb-multimedia.org/ deb-multimedia.org]

 The first package to install is deb-multimedia-keyring.
 Since Squeeze you can install this package with apt-get but you need
 to presse Y when the package ask what to do and do not press return.
 An new “apt-get update” is also necessary.

Dans Debian unstable et les backports, installer le paquet suivant: pkg-mozilla-archive-keyring
Il faut utliser (à ce jour 25/01/2013) la version 1.1, avec la version 1 (ou sans le paquet) vous aurez droit à ce genre de message:

 W: GPG error: http://mozilla.debian.net squeeze-backports Release: The
 following signatures were invalid: KEYEXPIRED 1352888501

== Ajout manuelle de la clé ==

Lors d'une mise-à-jour des listes d'APT, vous êtes parfois tombés sur un message du type

 W: GPG error: &lt;url d'un dépôt&gt; Release: The following signatures couldn't be
 verified because the public key is not available: NO_PUBKEY XXXXXXXX01234567

Reprenez les huit derniers éléments de la clé (01234567 dans l'exemple).

Ajoutez la clé à votre porte-clés personnel depuis un serveur sûr :

 # gpg --keyserver pgpkeys.mit.edu --recv-key 01234567

Exportez cette clé dans le système APT :

 # gpg -a --export 01234567 | apt-key add -

== Un script pour se simplifier la vie ==

Merci à [[Utilisateur:Ggoodluck47|Ggoodluck47]] pour sa contribution.

=== version utilisateur ===

Cette version du script nécessite d'avoir le paquet sudo installé sur votre système, ainsi que l'utilisateur déclaré dans le fichier sudoers.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | sudo apt-key add -

=== version root ===

Cette version du script est à lancer en root, et ne nécessite pas le paquet sudo.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | apt-key add -

== En cas de problème avec une clé pourtant bien installée ==

Il peut arriver qu'une clé pourtant bien installée vous pose un problème, et vous donne une erreur comme celle-ci :

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes
 ne sont pas valables : BADSIG 07DC563D1F41B907 Christian Marillat &lt;marillat@debian.org&gt;

Dans ce cas il faudra enlever la clé du porte-clés et la réinstaller.

On enlève la clé &quot;fautive&quot; :
 # apt-key del 1F41B907
 OK

On la réinstalle :
 # gpg --keyserver pgpkeys.mit.edu --recv-key 1F41B907
 gpg: requête de la clé 1F41B907 du serveur hkp pgpkeys.mit.edu
 gpg: clé 1F41B907: « Christian Marillat &lt;marillat@debian.org&gt; » 4 nouvelles signatures
 gpg: aucune clé de confiance ultime n'a été trouvée                                   
 gpg:        Quantité totale traitée: 1                                                
 gpg:           nouvelles signatures: 4
 # gpg -a --export 1F41B907 | apt-key add -
 OK

[https://www.debian-fr.org/gpg-et-debian-multimedia-experimental-sidux-t26898.html Le fil sur le forum]

----


[https://www.debian-fr.org/erreur-lors-d-un-update-no-pubkey-t2936.html Source sur forum.debian-fr.org]

Documentation extérieure : [http://www.debian.org/doc/manuals/securing-debian-howto/ch7.fr.html#s-deb-pack-sign Debian.org]


----

--[[Utilisateur:Lol|Lol]] 31 mars 2010 à 05:19 (UTC)
[[Catégorie:apt]]</text>
      <sha1>qklagbeqv2ebumq5hllahamnhuu48q5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5467</id>
      <parentid>5466</parentid>
      <timestamp>2013-12-02T16:45:41Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>/* Deb-multimedia */</comment>
      <text xml:space="preserve" bytes="5427">Problèmes de Clés GPG lors des updates

== Comprendre de quoi il s'agit ==

Les paquets Debian sont signés c'est à dire que les mainteneurs des paquets debian ajoutent un petit fichier (une signature) pour garantir aux utilisateurs que nous sommes que les paquets qu'ils sont entrain d'installer sont bien créé par les mainteneurs et non par des pirates.

Le système fonctionne avec un ensemble de signatures que l'on considère comme fiables (digne de confiance). Debian installe par défaut les signatures officielles Debian.

L'erreur NO PUBKEY indique qu'un dépôt de paquet utilise une clef (des signature) que vous ne considérez pas comme digne de confiance.

Si vous savez que la clef en question est digne de confiance (par exemple si vous venez d'ajouter un nouveau dépôt), alors vous pouvez appliquer l'une des procédures suivante à fin d'indiquer que vous faites confiance à cette nouvelle clef.

== Ajout automatique de clef ==

Pour ajouter une clef d'un dépôt que l'on vient d'installer, le moyen recommandé consiste à installer le paquet de ce dépôt dont le nom finis pas -keyring.
Cette solution est à la fois simple, mais elle permet aussi aux mainteneurs du dépôt de mettre à jour leur clef plus facilement (ils peuvent prévoir une periode de transition durant la quelle, ils enverront une mise à jour de ce paquet qui installera la nouvelle clef et retirera la précédente).

=== Deb-multimedia ===

Si l'erreur apparaît lorsque vous venez d'ajouter le dépôt deb-multimedia.org, vous devriez installer le paquet deb-multimedia-keyring.

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes n'ont
 pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907

 # apt-get install deb-multimedia-keyring
 # apt-get update

Source : [http://deb-multimedia.org/ deb-multimedia.org]

 The first package to install is deb-multimedia-keyring.
 Since Squeeze you can install this package with apt-get but you need
 to presse Y when the package ask what to do and do not press return.
 An new “apt-get update” is also necessary.

=== Mozilla Debian ===

Dans Debian unstable et les backports, installer le paquet suivant: pkg-mozilla-archive-keyring
Il faut utliser (à ce jour 25/01/2013) la version 1.1, avec la version 1 (ou sans le paquet) vous aurez droit à ce genre de message:

 W: GPG error: http://mozilla.debian.net squeeze-backports Release: The
 following signatures were invalid: KEYEXPIRED 1352888501

== Ajout manuelle de la clé ==

Lors d'une mise-à-jour des listes d'APT, vous êtes parfois tombés sur un message du type

 W: GPG error: &lt;url d'un dépôt&gt; Release: The following signatures couldn't be
 verified because the public key is not available: NO_PUBKEY XXXXXXXX01234567

Reprenez les huit derniers éléments de la clé (01234567 dans l'exemple).

Ajoutez la clé à votre porte-clés personnel depuis un serveur sûr :

 # gpg --keyserver pgpkeys.mit.edu --recv-key 01234567

Exportez cette clé dans le système APT :

 # gpg -a --export 01234567 | apt-key add -

== Un script pour se simplifier la vie ==

Merci à [[Utilisateur:Ggoodluck47|Ggoodluck47]] pour sa contribution.

=== version utilisateur ===

Cette version du script nécessite d'avoir le paquet sudo installé sur votre système, ainsi que l'utilisateur déclaré dans le fichier sudoers.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | sudo apt-key add -

=== version root ===

Cette version du script est à lancer en root, et ne nécessite pas le paquet sudo.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | apt-key add -

== En cas de problème avec une clé pourtant bien installée ==

Il peut arriver qu'une clé pourtant bien installée vous pose un problème, et vous donne une erreur comme celle-ci :

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes
 ne sont pas valables : BADSIG 07DC563D1F41B907 Christian Marillat &lt;marillat@debian.org&gt;

Dans ce cas il faudra enlever la clé du porte-clés et la réinstaller.

On enlève la clé &quot;fautive&quot; :
 # apt-key del 1F41B907
 OK

On la réinstalle :
 # gpg --keyserver pgpkeys.mit.edu --recv-key 1F41B907
 gpg: requête de la clé 1F41B907 du serveur hkp pgpkeys.mit.edu
 gpg: clé 1F41B907: « Christian Marillat &lt;marillat@debian.org&gt; » 4 nouvelles signatures
 gpg: aucune clé de confiance ultime n'a été trouvée                                   
 gpg:        Quantité totale traitée: 1                                                
 gpg:           nouvelles signatures: 4
 # gpg -a --export 1F41B907 | apt-key add -
 OK

[https://www.debian-fr.org/gpg-et-debian-multimedia-experimental-sidux-t26898.html Le fil sur le forum]

----


[https://www.debian-fr.org/erreur-lors-d-un-update-no-pubkey-t2936.html Source sur forum.debian-fr.org]

Documentation extérieure : [http://www.debian.org/doc/manuals/securing-debian-howto/ch7.fr.html#s-deb-pack-sign Debian.org]


----

--[[Utilisateur:Lol|Lol]] 31 mars 2010 à 05:19 (UTC)
[[Catégorie:apt]]</text>
      <sha1>1tm5jjnq8stszkdij6zewq0udktzqqt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5468</id>
      <parentid>5467</parentid>
      <timestamp>2013-12-02T16:54:28Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>/* Ajout manuelle de la clé */</comment>
      <text xml:space="preserve" bytes="6189">Problèmes de Clés GPG lors des updates

== Comprendre de quoi il s'agit ==

Les paquets Debian sont signés c'est à dire que les mainteneurs des paquets debian ajoutent un petit fichier (une signature) pour garantir aux utilisateurs que nous sommes que les paquets qu'ils sont entrain d'installer sont bien créé par les mainteneurs et non par des pirates.

Le système fonctionne avec un ensemble de signatures que l'on considère comme fiables (digne de confiance). Debian installe par défaut les signatures officielles Debian.

L'erreur NO PUBKEY indique qu'un dépôt de paquet utilise une clef (des signature) que vous ne considérez pas comme digne de confiance.

Si vous savez que la clef en question est digne de confiance (par exemple si vous venez d'ajouter un nouveau dépôt), alors vous pouvez appliquer l'une des procédures suivante à fin d'indiquer que vous faites confiance à cette nouvelle clef.

== Ajout automatique de clef ==

Pour ajouter une clef d'un dépôt que l'on vient d'installer, le moyen recommandé consiste à installer le paquet de ce dépôt dont le nom finis pas -keyring.
Cette solution est à la fois simple, mais elle permet aussi aux mainteneurs du dépôt de mettre à jour leur clef plus facilement (ils peuvent prévoir une periode de transition durant la quelle, ils enverront une mise à jour de ce paquet qui installera la nouvelle clef et retirera la précédente).

=== Deb-multimedia ===

Si l'erreur apparaît lorsque vous venez d'ajouter le dépôt deb-multimedia.org, vous devriez installer le paquet deb-multimedia-keyring.

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes n'ont
 pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907

 # apt-get install deb-multimedia-keyring
 # apt-get update

Source : [http://deb-multimedia.org/ deb-multimedia.org]

 The first package to install is deb-multimedia-keyring.
 Since Squeeze you can install this package with apt-get but you need
 to presse Y when the package ask what to do and do not press return.
 An new “apt-get update” is also necessary.

=== Mozilla Debian ===

Dans Debian unstable et les backports, installer le paquet suivant: pkg-mozilla-archive-keyring
Il faut utliser (à ce jour 25/01/2013) la version 1.1, avec la version 1 (ou sans le paquet) vous aurez droit à ce genre de message:

 W: GPG error: http://mozilla.debian.net squeeze-backports Release: The
 following signatures were invalid: KEYEXPIRED 1352888501

== Ajout manuelle de la clé ==

Il s'agit ici d'indiquer que vous faites confiance à un dépôt pour installer des logiciels sur votre ordinateur, c'est une question à ne pas prendre à la légère (il pourrait très bien installer des versions vérolés des logiciels sur votre ordinateur).

Il est conseillé de vérifier la clef que vous allez ajouter à votre système. Il faut vous assurer qu'elle est digne de confiance.

Pour cela il faut aller sur le site du dépôt que vous venez d'ajouter par exemple http://deb-multimedia.org/
Dans la faq vous trouvez une question qui parle des clef PGP et la réponse donne l'identifiant de la clef (une suite de 8 caractères entre 0 et 9 et entre A et F).

C'est cette clef qu'il faut ajouter à votre trousseau.

Ajoutez la clé à votre porte-clés personnel depuis un serveur sûr :

 # gpg --keyserver pgpkeys.mit.edu --recv-key 01234567

Exportez cette clé dans le système APT :

 # gpg -a --export 01234567 | apt-key add -

=== Vérification supplémentaire ===

Lorsque l'erreur ci dessous survient :

 W: GPG error: &lt;url d'un dépôt&gt; Release: The following signatures couldn't be
 verified because the public key is not available: NO_PUBKEY XXXXXXXX01234567

Les huit derniers éléments de la clé doivent correspondre à l'identifiant que vous trouvé sur le site du dépôt.

== Un script pour se simplifier la vie ==

Merci à [[Utilisateur:Ggoodluck47|Ggoodluck47]] pour sa contribution.

=== version utilisateur ===

Cette version du script nécessite d'avoir le paquet sudo installé sur votre système, ainsi que l'utilisateur déclaré dans le fichier sudoers.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | sudo apt-key add -

=== version root ===

Cette version du script est à lancer en root, et ne nécessite pas le paquet sudo.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | apt-key add -

== En cas de problème avec une clé pourtant bien installée ==

Il peut arriver qu'une clé pourtant bien installée vous pose un problème, et vous donne une erreur comme celle-ci :

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes
 ne sont pas valables : BADSIG 07DC563D1F41B907 Christian Marillat &lt;marillat@debian.org&gt;

Dans ce cas il faudra enlever la clé du porte-clés et la réinstaller.

On enlève la clé &quot;fautive&quot; :
 # apt-key del 1F41B907
 OK

On la réinstalle :
 # gpg --keyserver pgpkeys.mit.edu --recv-key 1F41B907
 gpg: requête de la clé 1F41B907 du serveur hkp pgpkeys.mit.edu
 gpg: clé 1F41B907: « Christian Marillat &lt;marillat@debian.org&gt; » 4 nouvelles signatures
 gpg: aucune clé de confiance ultime n'a été trouvée                                   
 gpg:        Quantité totale traitée: 1                                                
 gpg:           nouvelles signatures: 4
 # gpg -a --export 1F41B907 | apt-key add -
 OK

[https://www.debian-fr.org/gpg-et-debian-multimedia-experimental-sidux-t26898.html Le fil sur le forum]

----


[https://www.debian-fr.org/erreur-lors-d-un-update-no-pubkey-t2936.html Source sur forum.debian-fr.org]

Documentation extérieure : [http://www.debian.org/doc/manuals/securing-debian-howto/ch7.fr.html#s-deb-pack-sign Debian.org]


----

--[[Utilisateur:Lol|Lol]] 31 mars 2010 à 05:19 (UTC)
[[Catégorie:apt]]</text>
      <sha1>oxc2n7bf8gyyxz41nxzdt2acyxqsg4r</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5469</id>
      <parentid>5468</parentid>
      <timestamp>2013-12-02T17:09:42Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Comprendre de quoi il s'agit */</comment>
      <text xml:space="preserve" bytes="6187">Problèmes de Clés GPG lors des updates

== Comprendre de quoi il s'agit ==

Les paquets Debian sont signés c'est à dire que les mainteneurs des paquets debian ajoutent un petit fichier (une signature) pour garantir aux utilisateurs que nous sommes que les paquets qu'ils sont entrain d'installer sont bien créé par les mainteneurs et non par des pirates.

Le système fonctionne avec un ensemble de signatures que l'on considère comme fiables (digne de confiance). Debian installe par défaut les signatures officielles Debian.

L'erreur NO PUBKEY indique qu'un dépôt de paquet utilise une clef (des signature) que vous ne considérez pas comme digne de confiance.

Si vous savez que la clef en question est digne de confiance (par exemple si vous venez d'ajouter un nouveau dépôt), alors vous pouvez appliquer l'une des procédures suivante afin d'indiquer que vous faites confiance à cette nouvelle clef.

== Ajout automatique de clef ==

Pour ajouter une clef d'un dépôt que l'on vient d'installer, le moyen recommandé consiste à installer le paquet de ce dépôt dont le nom finis pas -keyring.
Cette solution est à la fois simple, mais elle permet aussi aux mainteneurs du dépôt de mettre à jour leur clef plus facilement (ils peuvent prévoir une periode de transition durant la quelle, ils enverront une mise à jour de ce paquet qui installera la nouvelle clef et retirera la précédente).

=== Deb-multimedia ===

Si l'erreur apparaît lorsque vous venez d'ajouter le dépôt deb-multimedia.org, vous devriez installer le paquet deb-multimedia-keyring.

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes n'ont
 pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907

 # apt-get install deb-multimedia-keyring
 # apt-get update

Source : [http://deb-multimedia.org/ deb-multimedia.org]

 The first package to install is deb-multimedia-keyring.
 Since Squeeze you can install this package with apt-get but you need
 to presse Y when the package ask what to do and do not press return.
 An new “apt-get update” is also necessary.

=== Mozilla Debian ===

Dans Debian unstable et les backports, installer le paquet suivant: pkg-mozilla-archive-keyring
Il faut utliser (à ce jour 25/01/2013) la version 1.1, avec la version 1 (ou sans le paquet) vous aurez droit à ce genre de message:

 W: GPG error: http://mozilla.debian.net squeeze-backports Release: The
 following signatures were invalid: KEYEXPIRED 1352888501

== Ajout manuelle de la clé ==

Il s'agit ici d'indiquer que vous faites confiance à un dépôt pour installer des logiciels sur votre ordinateur, c'est une question à ne pas prendre à la légère (il pourrait très bien installer des versions vérolés des logiciels sur votre ordinateur).

Il est conseillé de vérifier la clef que vous allez ajouter à votre système. Il faut vous assurer qu'elle est digne de confiance.

Pour cela il faut aller sur le site du dépôt que vous venez d'ajouter par exemple http://deb-multimedia.org/
Dans la faq vous trouvez une question qui parle des clef PGP et la réponse donne l'identifiant de la clef (une suite de 8 caractères entre 0 et 9 et entre A et F).

C'est cette clef qu'il faut ajouter à votre trousseau.

Ajoutez la clé à votre porte-clés personnel depuis un serveur sûr :

 # gpg --keyserver pgpkeys.mit.edu --recv-key 01234567

Exportez cette clé dans le système APT :

 # gpg -a --export 01234567 | apt-key add -

=== Vérification supplémentaire ===

Lorsque l'erreur ci dessous survient :

 W: GPG error: &lt;url d'un dépôt&gt; Release: The following signatures couldn't be
 verified because the public key is not available: NO_PUBKEY XXXXXXXX01234567

Les huit derniers éléments de la clé doivent correspondre à l'identifiant que vous trouvé sur le site du dépôt.

== Un script pour se simplifier la vie ==

Merci à [[Utilisateur:Ggoodluck47|Ggoodluck47]] pour sa contribution.

=== version utilisateur ===

Cette version du script nécessite d'avoir le paquet sudo installé sur votre système, ainsi que l'utilisateur déclaré dans le fichier sudoers.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | sudo apt-key add -

=== version root ===

Cette version du script est à lancer en root, et ne nécessite pas le paquet sudo.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | apt-key add -

== En cas de problème avec une clé pourtant bien installée ==

Il peut arriver qu'une clé pourtant bien installée vous pose un problème, et vous donne une erreur comme celle-ci :

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes
 ne sont pas valables : BADSIG 07DC563D1F41B907 Christian Marillat &lt;marillat@debian.org&gt;

Dans ce cas il faudra enlever la clé du porte-clés et la réinstaller.

On enlève la clé &quot;fautive&quot; :
 # apt-key del 1F41B907
 OK

On la réinstalle :
 # gpg --keyserver pgpkeys.mit.edu --recv-key 1F41B907
 gpg: requête de la clé 1F41B907 du serveur hkp pgpkeys.mit.edu
 gpg: clé 1F41B907: « Christian Marillat &lt;marillat@debian.org&gt; » 4 nouvelles signatures
 gpg: aucune clé de confiance ultime n'a été trouvée                                   
 gpg:        Quantité totale traitée: 1                                                
 gpg:           nouvelles signatures: 4
 # gpg -a --export 1F41B907 | apt-key add -
 OK

[https://www.debian-fr.org/gpg-et-debian-multimedia-experimental-sidux-t26898.html Le fil sur le forum]

----


[https://www.debian-fr.org/erreur-lors-d-un-update-no-pubkey-t2936.html Source sur forum.debian-fr.org]

Documentation extérieure : [http://www.debian.org/doc/manuals/securing-debian-howto/ch7.fr.html#s-deb-pack-sign Debian.org]


----

--[[Utilisateur:Lol|Lol]] 31 mars 2010 à 05:19 (UTC)
[[Catégorie:apt]]</text>
      <sha1>ku49gsz63devm2zmkstsyjk8ylglbyr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5470</id>
      <parentid>5469</parentid>
      <timestamp>2013-12-02T17:11:24Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Ajout automatique de clef */</comment>
      <text xml:space="preserve" bytes="6187">Problèmes de Clés GPG lors des updates

== Comprendre de quoi il s'agit ==

Les paquets Debian sont signés c'est à dire que les mainteneurs des paquets debian ajoutent un petit fichier (une signature) pour garantir aux utilisateurs que nous sommes que les paquets qu'ils sont entrain d'installer sont bien créé par les mainteneurs et non par des pirates.

Le système fonctionne avec un ensemble de signatures que l'on considère comme fiables (digne de confiance). Debian installe par défaut les signatures officielles Debian.

L'erreur NO PUBKEY indique qu'un dépôt de paquet utilise une clef (des signature) que vous ne considérez pas comme digne de confiance.

Si vous savez que la clef en question est digne de confiance (par exemple si vous venez d'ajouter un nouveau dépôt), alors vous pouvez appliquer l'une des procédures suivante afin d'indiquer que vous faites confiance à cette nouvelle clef.

== Ajout automatique de clef ==

Pour ajouter une clef d'un dépôt que l'on vient d'installer, le moyen recommandé consiste à installer le paquet de ce dépôt dont le nom finit par -keyring.
Cette solution est à la fois simple, mais elle permet aussi aux mainteneurs du dépôt de mettre à jour leur clef plus facilement (ils peuvent prévoir une période de transition durant laquelle, ils enverront une mise à jour de ce paquet qui installera la nouvelle clef et retirera la précédente).

=== Deb-multimedia ===

Si l'erreur apparaît lorsque vous venez d'ajouter le dépôt deb-multimedia.org, vous devriez installer le paquet deb-multimedia-keyring.

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes n'ont
 pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907

 # apt-get install deb-multimedia-keyring
 # apt-get update

Source : [http://deb-multimedia.org/ deb-multimedia.org]

 The first package to install is deb-multimedia-keyring.
 Since Squeeze you can install this package with apt-get but you need
 to presse Y when the package ask what to do and do not press return.
 An new “apt-get update” is also necessary.

=== Mozilla Debian ===

Dans Debian unstable et les backports, installer le paquet suivant: pkg-mozilla-archive-keyring
Il faut utliser (à ce jour 25/01/2013) la version 1.1, avec la version 1 (ou sans le paquet) vous aurez droit à ce genre de message:

 W: GPG error: http://mozilla.debian.net squeeze-backports Release: The
 following signatures were invalid: KEYEXPIRED 1352888501

== Ajout manuelle de la clé ==

Il s'agit ici d'indiquer que vous faites confiance à un dépôt pour installer des logiciels sur votre ordinateur, c'est une question à ne pas prendre à la légère (il pourrait très bien installer des versions vérolés des logiciels sur votre ordinateur).

Il est conseillé de vérifier la clef que vous allez ajouter à votre système. Il faut vous assurer qu'elle est digne de confiance.

Pour cela il faut aller sur le site du dépôt que vous venez d'ajouter par exemple http://deb-multimedia.org/
Dans la faq vous trouvez une question qui parle des clef PGP et la réponse donne l'identifiant de la clef (une suite de 8 caractères entre 0 et 9 et entre A et F).

C'est cette clef qu'il faut ajouter à votre trousseau.

Ajoutez la clé à votre porte-clés personnel depuis un serveur sûr :

 # gpg --keyserver pgpkeys.mit.edu --recv-key 01234567

Exportez cette clé dans le système APT :

 # gpg -a --export 01234567 | apt-key add -

=== Vérification supplémentaire ===

Lorsque l'erreur ci dessous survient :

 W: GPG error: &lt;url d'un dépôt&gt; Release: The following signatures couldn't be
 verified because the public key is not available: NO_PUBKEY XXXXXXXX01234567

Les huit derniers éléments de la clé doivent correspondre à l'identifiant que vous trouvé sur le site du dépôt.

== Un script pour se simplifier la vie ==

Merci à [[Utilisateur:Ggoodluck47|Ggoodluck47]] pour sa contribution.

=== version utilisateur ===

Cette version du script nécessite d'avoir le paquet sudo installé sur votre système, ainsi que l'utilisateur déclaré dans le fichier sudoers.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | sudo apt-key add -

=== version root ===

Cette version du script est à lancer en root, et ne nécessite pas le paquet sudo.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | apt-key add -

== En cas de problème avec une clé pourtant bien installée ==

Il peut arriver qu'une clé pourtant bien installée vous pose un problème, et vous donne une erreur comme celle-ci :

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes
 ne sont pas valables : BADSIG 07DC563D1F41B907 Christian Marillat &lt;marillat@debian.org&gt;

Dans ce cas il faudra enlever la clé du porte-clés et la réinstaller.

On enlève la clé &quot;fautive&quot; :
 # apt-key del 1F41B907
 OK

On la réinstalle :
 # gpg --keyserver pgpkeys.mit.edu --recv-key 1F41B907
 gpg: requête de la clé 1F41B907 du serveur hkp pgpkeys.mit.edu
 gpg: clé 1F41B907: « Christian Marillat &lt;marillat@debian.org&gt; » 4 nouvelles signatures
 gpg: aucune clé de confiance ultime n'a été trouvée                                   
 gpg:        Quantité totale traitée: 1                                                
 gpg:           nouvelles signatures: 4
 # gpg -a --export 1F41B907 | apt-key add -
 OK

[https://www.debian-fr.org/gpg-et-debian-multimedia-experimental-sidux-t26898.html Le fil sur le forum]

----


[https://www.debian-fr.org/erreur-lors-d-un-update-no-pubkey-t2936.html Source sur forum.debian-fr.org]

Documentation extérieure : [http://www.debian.org/doc/manuals/securing-debian-howto/ch7.fr.html#s-deb-pack-sign Debian.org]


----

--[[Utilisateur:Lol|Lol]] 31 mars 2010 à 05:19 (UTC)
[[Catégorie:apt]]</text>
      <sha1>k4z425bxhpvbqzpepi69cyci1sn69w3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5471</id>
      <parentid>5470</parentid>
      <timestamp>2013-12-02T17:13:25Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Ajout manuelle de la clé */</comment>
      <text xml:space="preserve" bytes="6188">Problèmes de Clés GPG lors des updates

== Comprendre de quoi il s'agit ==

Les paquets Debian sont signés c'est à dire que les mainteneurs des paquets debian ajoutent un petit fichier (une signature) pour garantir aux utilisateurs que nous sommes que les paquets qu'ils sont entrain d'installer sont bien créé par les mainteneurs et non par des pirates.

Le système fonctionne avec un ensemble de signatures que l'on considère comme fiables (digne de confiance). Debian installe par défaut les signatures officielles Debian.

L'erreur NO PUBKEY indique qu'un dépôt de paquet utilise une clef (des signature) que vous ne considérez pas comme digne de confiance.

Si vous savez que la clef en question est digne de confiance (par exemple si vous venez d'ajouter un nouveau dépôt), alors vous pouvez appliquer l'une des procédures suivante afin d'indiquer que vous faites confiance à cette nouvelle clef.

== Ajout automatique de clef ==

Pour ajouter une clef d'un dépôt que l'on vient d'installer, le moyen recommandé consiste à installer le paquet de ce dépôt dont le nom finit par -keyring.
Cette solution est à la fois simple, mais elle permet aussi aux mainteneurs du dépôt de mettre à jour leur clef plus facilement (ils peuvent prévoir une période de transition durant laquelle, ils enverront une mise à jour de ce paquet qui installera la nouvelle clef et retirera la précédente).

=== Deb-multimedia ===

Si l'erreur apparaît lorsque vous venez d'ajouter le dépôt deb-multimedia.org, vous devriez installer le paquet deb-multimedia-keyring.

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes n'ont
 pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907

 # apt-get install deb-multimedia-keyring
 # apt-get update

Source : [http://deb-multimedia.org/ deb-multimedia.org]

 The first package to install is deb-multimedia-keyring.
 Since Squeeze you can install this package with apt-get but you need
 to presse Y when the package ask what to do and do not press return.
 An new “apt-get update” is also necessary.

=== Mozilla Debian ===

Dans Debian unstable et les backports, installer le paquet suivant: pkg-mozilla-archive-keyring
Il faut utliser (à ce jour 25/01/2013) la version 1.1, avec la version 1 (ou sans le paquet) vous aurez droit à ce genre de message:

 W: GPG error: http://mozilla.debian.net squeeze-backports Release: The
 following signatures were invalid: KEYEXPIRED 1352888501

== Ajout manuelle de la clé ==

Il s'agit ici d'indiquer que vous faites confiance à un dépôt pour installer des logiciels sur votre ordinateur, c'est une question à ne pas prendre à la légère (il pourrait très bien installer des versions vérolées des logiciels sur votre ordinateur).

Il est conseillé de vérifier la clef que vous allez ajouter à votre système. Il faut vous assurer qu'elle est digne de confiance.

Pour cela il faut aller sur le site du dépôt que vous venez d'ajouter par exemple http://deb-multimedia.org/
Dans la faq vous trouvez une question qui parle des clef PGP et la réponse donne l'identifiant de la clef (une suite de 8 caractères entre 0 et 9 et entre A et F).

C'est cette clef qu'il faut ajouter à votre trousseau.

Ajoutez la clé à votre porte-clés personnel depuis un serveur sûr :

 # gpg --keyserver pgpkeys.mit.edu --recv-key 01234567

Exportez cette clé dans le système APT :

 # gpg -a --export 01234567 | apt-key add -

=== Vérification supplémentaire ===

Lorsque l'erreur ci dessous survient :

 W: GPG error: &lt;url d'un dépôt&gt; Release: The following signatures couldn't be
 verified because the public key is not available: NO_PUBKEY XXXXXXXX01234567

Les huit derniers éléments de la clé doivent correspondre à l'identifiant que vous trouvé sur le site du dépôt.

== Un script pour se simplifier la vie ==

Merci à [[Utilisateur:Ggoodluck47|Ggoodluck47]] pour sa contribution.

=== version utilisateur ===

Cette version du script nécessite d'avoir le paquet sudo installé sur votre système, ainsi que l'utilisateur déclaré dans le fichier sudoers.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | sudo apt-key add -

=== version root ===

Cette version du script est à lancer en root, et ne nécessite pas le paquet sudo.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | apt-key add -

== En cas de problème avec une clé pourtant bien installée ==

Il peut arriver qu'une clé pourtant bien installée vous pose un problème, et vous donne une erreur comme celle-ci :

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes
 ne sont pas valables : BADSIG 07DC563D1F41B907 Christian Marillat &lt;marillat@debian.org&gt;

Dans ce cas il faudra enlever la clé du porte-clés et la réinstaller.

On enlève la clé &quot;fautive&quot; :
 # apt-key del 1F41B907
 OK

On la réinstalle :
 # gpg --keyserver pgpkeys.mit.edu --recv-key 1F41B907
 gpg: requête de la clé 1F41B907 du serveur hkp pgpkeys.mit.edu
 gpg: clé 1F41B907: « Christian Marillat &lt;marillat@debian.org&gt; » 4 nouvelles signatures
 gpg: aucune clé de confiance ultime n'a été trouvée                                   
 gpg:        Quantité totale traitée: 1                                                
 gpg:           nouvelles signatures: 4
 # gpg -a --export 1F41B907 | apt-key add -
 OK

[https://www.debian-fr.org/gpg-et-debian-multimedia-experimental-sidux-t26898.html Le fil sur le forum]

----


[https://www.debian-fr.org/erreur-lors-d-un-update-no-pubkey-t2936.html Source sur forum.debian-fr.org]

Documentation extérieure : [http://www.debian.org/doc/manuals/securing-debian-howto/ch7.fr.html#s-deb-pack-sign Debian.org]


----

--[[Utilisateur:Lol|Lol]] 31 mars 2010 à 05:19 (UTC)
[[Catégorie:apt]]</text>
      <sha1>szypj9ihy4zz21z0n75tlgiqoxw2dy3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5472</id>
      <parentid>5471</parentid>
      <timestamp>2013-12-02T17:34:16Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <minor/>
      <comment>/* Ajout manuelle de la clé */ orth</comment>
      <text xml:space="preserve" bytes="6186">Problèmes de Clés GPG lors des updates

== Comprendre de quoi il s'agit ==

Les paquets Debian sont signés c'est à dire que les mainteneurs des paquets debian ajoutent un petit fichier (une signature) pour garantir aux utilisateurs que nous sommes que les paquets qu'ils sont entrain d'installer sont bien créé par les mainteneurs et non par des pirates.

Le système fonctionne avec un ensemble de signatures que l'on considère comme fiables (digne de confiance). Debian installe par défaut les signatures officielles Debian.

L'erreur NO PUBKEY indique qu'un dépôt de paquet utilise une clef (des signature) que vous ne considérez pas comme digne de confiance.

Si vous savez que la clef en question est digne de confiance (par exemple si vous venez d'ajouter un nouveau dépôt), alors vous pouvez appliquer l'une des procédures suivante afin d'indiquer que vous faites confiance à cette nouvelle clef.

== Ajout automatique de clef ==

Pour ajouter une clef d'un dépôt que l'on vient d'installer, le moyen recommandé consiste à installer le paquet de ce dépôt dont le nom finit par -keyring.
Cette solution est à la fois simple, mais elle permet aussi aux mainteneurs du dépôt de mettre à jour leur clef plus facilement (ils peuvent prévoir une période de transition durant laquelle, ils enverront une mise à jour de ce paquet qui installera la nouvelle clef et retirera la précédente).

=== Deb-multimedia ===

Si l'erreur apparaît lorsque vous venez d'ajouter le dépôt deb-multimedia.org, vous devriez installer le paquet deb-multimedia-keyring.

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes n'ont
 pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907

 # apt-get install deb-multimedia-keyring
 # apt-get update

Source : [http://deb-multimedia.org/ deb-multimedia.org]

 The first package to install is deb-multimedia-keyring.
 Since Squeeze you can install this package with apt-get but you need
 to presse Y when the package ask what to do and do not press return.
 An new “apt-get update” is also necessary.

=== Mozilla Debian ===

Dans Debian unstable et les backports, installer le paquet suivant: pkg-mozilla-archive-keyring
Il faut utliser (à ce jour 25/01/2013) la version 1.1, avec la version 1 (ou sans le paquet) vous aurez droit à ce genre de message:

 W: GPG error: http://mozilla.debian.net squeeze-backports Release: The
 following signatures were invalid: KEYEXPIRED 1352888501

== Ajout manuel de la clé ==

Il s'agit ici d'indiquer que vous faites confiance à un dépôt pour installer des logiciels sur votre ordinateur, c'est une question à ne pas prendre à la légère (il pourrait très bien installer des versions vérolées des logiciels sur votre ordinateur).

Il est conseillé de vérifier la clef que vous allez ajouter à votre système. Il faut vous assurer qu'elle est digne de confiance.

Pour cela il faut aller sur le site du dépôt que vous venez d'ajouter par exemple http://deb-multimedia.org/
Dans la faq vous trouvez une question qui parle des clef PGP et la réponse donne l'identifiant de la clef (une suite de 8 caractères entre 0 et 9 et entre A et F).

C'est cette clef qu'il faut ajouter à votre trousseau.

Ajoutez la clé à votre porte-clés personnel depuis un serveur sûr :

 # gpg --keyserver pgpkeys.mit.edu --recv-key 01234567

Exportez cette clé dans le système APT :

 # gpg -a --export 01234567 | apt-key add -

=== Vérification supplémentaire ===

Lorsque l'erreur ci dessous survient :

 W: GPG error: &lt;url d'un dépôt&gt; Release: The following signatures couldn't be
 verified because the public key is not available: NO_PUBKEY XXXXXXXX01234567

Les huit derniers éléments de la clé doivent correspondre à l'identifiant que vous trouvé sur le site du dépôt.

== Un script pour se simplifier la vie ==

Merci à [[Utilisateur:Ggoodluck47|Ggoodluck47]] pour sa contribution.

=== version utilisateur ===

Cette version du script nécessite d'avoir le paquet sudo installé sur votre système, ainsi que l'utilisateur déclaré dans le fichier sudoers.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | sudo apt-key add -

=== version root ===

Cette version du script est à lancer en root, et ne nécessite pas le paquet sudo.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | apt-key add -

== En cas de problème avec une clé pourtant bien installée ==

Il peut arriver qu'une clé pourtant bien installée vous pose un problème, et vous donne une erreur comme celle-ci :

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes
 ne sont pas valables : BADSIG 07DC563D1F41B907 Christian Marillat &lt;marillat@debian.org&gt;

Dans ce cas il faudra enlever la clé du porte-clés et la réinstaller.

On enlève la clé &quot;fautive&quot; :
 # apt-key del 1F41B907
 OK

On la réinstalle :
 # gpg --keyserver pgpkeys.mit.edu --recv-key 1F41B907
 gpg: requête de la clé 1F41B907 du serveur hkp pgpkeys.mit.edu
 gpg: clé 1F41B907: « Christian Marillat &lt;marillat@debian.org&gt; » 4 nouvelles signatures
 gpg: aucune clé de confiance ultime n'a été trouvée                                   
 gpg:        Quantité totale traitée: 1                                                
 gpg:           nouvelles signatures: 4
 # gpg -a --export 1F41B907 | apt-key add -
 OK

[https://www.debian-fr.org/gpg-et-debian-multimedia-experimental-sidux-t26898.html Le fil sur le forum]

----


[https://www.debian-fr.org/erreur-lors-d-un-update-no-pubkey-t2936.html Source sur forum.debian-fr.org]

Documentation extérieure : [http://www.debian.org/doc/manuals/securing-debian-howto/ch7.fr.html#s-deb-pack-sign Debian.org]


----

--[[Utilisateur:Lol|Lol]] 31 mars 2010 à 05:19 (UTC)
[[Catégorie:apt]]</text>
      <sha1>l6r4ltd8rw8awtsjd3ympt4jkatth2t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5476</id>
      <parentid>5472</parentid>
      <timestamp>2013-12-04T10:00:05Z</timestamp>
      <contributor>
        <username>Coq</username>
        <id>80</id>
      </contributor>
      <minor/>
      <comment>/* Comprendre de quoi il s'agit */</comment>
      <text xml:space="preserve" bytes="6190">Problèmes de Clés GPG lors des updates

== Comprendre de quoi il s'agit ==

Les paquets Debian sont signés, c'est-à-dire que les mainteneurs des paquets Debian ajoutent un petit fichier (une signature) pour garantir aux utilisateurs que nous sommes que les paquets qu'ils sont en train d'installer sont bien créés par les mainteneurs et non par des pirates.

Le système fonctionne avec un ensemble de signatures que l'on considère comme fiables (dignes de confiance). Debian installe par défaut les signatures officielles Debian.

L'erreur NO PUBKEY indique qu'un dépôt de paquet utilise une clef (des signature) que vous ne considérez pas comme digne de confiance.

Si vous savez que la clef en question est digne de confiance, par exemple si vous venez d'ajouter un nouveau dépôt, alors vous pouvez appliquer l'une des procédures suivantes afin d'indiquer que vous faites confiance à cette nouvelle clef.

== Ajout automatique de clef ==

Pour ajouter une clef d'un dépôt que l'on vient d'installer, le moyen recommandé consiste à installer le paquet de ce dépôt dont le nom finit par -keyring.
Cette solution est à la fois simple, mais elle permet aussi aux mainteneurs du dépôt de mettre à jour leur clef plus facilement (ils peuvent prévoir une période de transition durant laquelle, ils enverront une mise à jour de ce paquet qui installera la nouvelle clef et retirera la précédente).

=== Deb-multimedia ===

Si l'erreur apparaît lorsque vous venez d'ajouter le dépôt deb-multimedia.org, vous devriez installer le paquet deb-multimedia-keyring.

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes n'ont
 pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907

 # apt-get install deb-multimedia-keyring
 # apt-get update

Source : [http://deb-multimedia.org/ deb-multimedia.org]

 The first package to install is deb-multimedia-keyring.
 Since Squeeze you can install this package with apt-get but you need
 to presse Y when the package ask what to do and do not press return.
 An new “apt-get update” is also necessary.

=== Mozilla Debian ===

Dans Debian unstable et les backports, installer le paquet suivant: pkg-mozilla-archive-keyring
Il faut utliser (à ce jour 25/01/2013) la version 1.1, avec la version 1 (ou sans le paquet) vous aurez droit à ce genre de message:

 W: GPG error: http://mozilla.debian.net squeeze-backports Release: The
 following signatures were invalid: KEYEXPIRED 1352888501

== Ajout manuel de la clé ==

Il s'agit ici d'indiquer que vous faites confiance à un dépôt pour installer des logiciels sur votre ordinateur, c'est une question à ne pas prendre à la légère (il pourrait très bien installer des versions vérolées des logiciels sur votre ordinateur).

Il est conseillé de vérifier la clef que vous allez ajouter à votre système. Il faut vous assurer qu'elle est digne de confiance.

Pour cela il faut aller sur le site du dépôt que vous venez d'ajouter par exemple http://deb-multimedia.org/
Dans la faq vous trouvez une question qui parle des clef PGP et la réponse donne l'identifiant de la clef (une suite de 8 caractères entre 0 et 9 et entre A et F).

C'est cette clef qu'il faut ajouter à votre trousseau.

Ajoutez la clé à votre porte-clés personnel depuis un serveur sûr :

 # gpg --keyserver pgpkeys.mit.edu --recv-key 01234567

Exportez cette clé dans le système APT :

 # gpg -a --export 01234567 | apt-key add -

=== Vérification supplémentaire ===

Lorsque l'erreur ci dessous survient :

 W: GPG error: &lt;url d'un dépôt&gt; Release: The following signatures couldn't be
 verified because the public key is not available: NO_PUBKEY XXXXXXXX01234567

Les huit derniers éléments de la clé doivent correspondre à l'identifiant que vous trouvé sur le site du dépôt.

== Un script pour se simplifier la vie ==

Merci à [[Utilisateur:Ggoodluck47|Ggoodluck47]] pour sa contribution.

=== version utilisateur ===

Cette version du script nécessite d'avoir le paquet sudo installé sur votre système, ainsi que l'utilisateur déclaré dans le fichier sudoers.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | sudo apt-key add -

=== version root ===

Cette version du script est à lancer en root, et ne nécessite pas le paquet sudo.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | apt-key add -

== En cas de problème avec une clé pourtant bien installée ==

Il peut arriver qu'une clé pourtant bien installée vous pose un problème, et vous donne une erreur comme celle-ci :

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes
 ne sont pas valables : BADSIG 07DC563D1F41B907 Christian Marillat &lt;marillat@debian.org&gt;

Dans ce cas il faudra enlever la clé du porte-clés et la réinstaller.

On enlève la clé &quot;fautive&quot; :
 # apt-key del 1F41B907
 OK

On la réinstalle :
 # gpg --keyserver pgpkeys.mit.edu --recv-key 1F41B907
 gpg: requête de la clé 1F41B907 du serveur hkp pgpkeys.mit.edu
 gpg: clé 1F41B907: « Christian Marillat &lt;marillat@debian.org&gt; » 4 nouvelles signatures
 gpg: aucune clé de confiance ultime n'a été trouvée                                   
 gpg:        Quantité totale traitée: 1                                                
 gpg:           nouvelles signatures: 4
 # gpg -a --export 1F41B907 | apt-key add -
 OK

[https://www.debian-fr.org/gpg-et-debian-multimedia-experimental-sidux-t26898.html Le fil sur le forum]

----


[https://www.debian-fr.org/erreur-lors-d-un-update-no-pubkey-t2936.html Source sur forum.debian-fr.org]

Documentation extérieure : [http://www.debian.org/doc/manuals/securing-debian-howto/ch7.fr.html#s-deb-pack-sign Debian.org]


----

--[[Utilisateur:Lol|Lol]] 31 mars 2010 à 05:19 (UTC)
[[Catégorie:apt]]</text>
      <sha1>gymbk6indc2smix0kxwq6j02xd4nlxo</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5477</id>
      <parentid>5476</parentid>
      <timestamp>2013-12-04T10:13:47Z</timestamp>
      <contributor>
        <username>Coq</username>
        <id>80</id>
      </contributor>
      <minor/>
      <comment>/* Ajout automatique de clef */</comment>
      <text xml:space="preserve" bytes="6216">Problèmes de Clés GPG lors des updates

== Comprendre de quoi il s'agit ==

Les paquets Debian sont signés, c'est-à-dire que les mainteneurs des paquets Debian ajoutent un petit fichier (une signature) pour garantir aux utilisateurs que nous sommes que les paquets qu'ils sont en train d'installer sont bien créés par les mainteneurs et non par des pirates.

Le système fonctionne avec un ensemble de signatures que l'on considère comme fiables (dignes de confiance). Debian installe par défaut les signatures officielles Debian.

L'erreur NO PUBKEY indique qu'un dépôt de paquet utilise une clef (des signature) que vous ne considérez pas comme digne de confiance.

Si vous savez que la clef en question est digne de confiance, par exemple si vous venez d'ajouter un nouveau dépôt, alors vous pouvez appliquer l'une des procédures suivantes afin d'indiquer que vous faites confiance à cette nouvelle clef.

== Ajout automatique de clef ==

Pour ajouter une clef d'un dépôt que l'on vient d'installer, le moyen recommandé consiste à installer le paquet de ce dépôt dont le nom finit par -keyring.
Cette solution présente le double intérêt d'être simple et de permettre aussi aux mainteneurs du dépôt de mettre à jour leur clef plus facilement : ils peuvent prévoir une période de transition durant laquelle ils enverront une mise à jour de ce paquet qui installera la nouvelle clef et retirera la précédente.

=== Deb-multimedia ===

Si l'erreur apparaît lorsque vous venez d'ajouter le dépôt deb-multimedia.org, vous devriez installer le paquet deb-multimedia-keyring.

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes n'ont
 pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907

 # apt-get install deb-multimedia-keyring
 # apt-get update

Source : [http://deb-multimedia.org/ deb-multimedia.org]

 The first package to install is deb-multimedia-keyring.
 Since Squeeze you can install this package with apt-get but you need
 to presse Y when the package ask what to do and do not press return.
 An new “apt-get update” is also necessary.

=== Mozilla Debian ===

Dans Debian unstable et les backports, installez le paquet suivant : pkg-mozilla-archive-keyring
Il faut utiliser (à ce jour 25/01/2013) la version 1.1, avec la version 1 (ou sans le paquet) vous aurez droit à ce genre de message :

 W: GPG error: http://mozilla.debian.net squeeze-backports Release: The
 following signatures were invalid: KEYEXPIRED 1352888501

== Ajout manuel de la clé ==

Il s'agit ici d'indiquer que vous faites confiance à un dépôt pour installer des logiciels sur votre ordinateur, c'est une question à ne pas prendre à la légère (il pourrait très bien installer des versions vérolées des logiciels sur votre ordinateur).

Il est conseillé de vérifier la clef que vous allez ajouter à votre système. Il faut vous assurer qu'elle est digne de confiance.

Pour cela il faut aller sur le site du dépôt que vous venez d'ajouter par exemple http://deb-multimedia.org/
Dans la faq vous trouvez une question qui parle des clef PGP et la réponse donne l'identifiant de la clef (une suite de 8 caractères entre 0 et 9 et entre A et F).

C'est cette clef qu'il faut ajouter à votre trousseau.

Ajoutez la clé à votre porte-clés personnel depuis un serveur sûr :

 # gpg --keyserver pgpkeys.mit.edu --recv-key 01234567

Exportez cette clé dans le système APT :

 # gpg -a --export 01234567 | apt-key add -

=== Vérification supplémentaire ===

Lorsque l'erreur ci dessous survient :

 W: GPG error: &lt;url d'un dépôt&gt; Release: The following signatures couldn't be
 verified because the public key is not available: NO_PUBKEY XXXXXXXX01234567

Les huit derniers éléments de la clé doivent correspondre à l'identifiant que vous trouvé sur le site du dépôt.

== Un script pour se simplifier la vie ==

Merci à [[Utilisateur:Ggoodluck47|Ggoodluck47]] pour sa contribution.

=== version utilisateur ===

Cette version du script nécessite d'avoir le paquet sudo installé sur votre système, ainsi que l'utilisateur déclaré dans le fichier sudoers.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | sudo apt-key add -

=== version root ===

Cette version du script est à lancer en root, et ne nécessite pas le paquet sudo.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | apt-key add -

== En cas de problème avec une clé pourtant bien installée ==

Il peut arriver qu'une clé pourtant bien installée vous pose un problème, et vous donne une erreur comme celle-ci :

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes
 ne sont pas valables : BADSIG 07DC563D1F41B907 Christian Marillat &lt;marillat@debian.org&gt;

Dans ce cas il faudra enlever la clé du porte-clés et la réinstaller.

On enlève la clé &quot;fautive&quot; :
 # apt-key del 1F41B907
 OK

On la réinstalle :
 # gpg --keyserver pgpkeys.mit.edu --recv-key 1F41B907
 gpg: requête de la clé 1F41B907 du serveur hkp pgpkeys.mit.edu
 gpg: clé 1F41B907: « Christian Marillat &lt;marillat@debian.org&gt; » 4 nouvelles signatures
 gpg: aucune clé de confiance ultime n'a été trouvée                                   
 gpg:        Quantité totale traitée: 1                                                
 gpg:           nouvelles signatures: 4
 # gpg -a --export 1F41B907 | apt-key add -
 OK

[https://www.debian-fr.org/gpg-et-debian-multimedia-experimental-sidux-t26898.html Le fil sur le forum]

----


[https://www.debian-fr.org/erreur-lors-d-un-update-no-pubkey-t2936.html Source sur forum.debian-fr.org]

Documentation extérieure : [http://www.debian.org/doc/manuals/securing-debian-howto/ch7.fr.html#s-deb-pack-sign Debian.org]


----

--[[Utilisateur:Lol|Lol]] 31 mars 2010 à 05:19 (UTC)
[[Catégorie:apt]]</text>
      <sha1>gndmazheqqppt2v1f0rm5jsolcs2fs4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5478</id>
      <parentid>5477</parentid>
      <timestamp>2013-12-04T10:19:54Z</timestamp>
      <contributor>
        <username>Coq</username>
        <id>80</id>
      </contributor>
      <comment>/* Ajout manuel de la clé */</comment>
      <text xml:space="preserve" bytes="6236">Problèmes de Clés GPG lors des updates

== Comprendre de quoi il s'agit ==

Les paquets Debian sont signés, c'est-à-dire que les mainteneurs des paquets Debian ajoutent un petit fichier (une signature) pour garantir aux utilisateurs que nous sommes que les paquets qu'ils sont en train d'installer sont bien créés par les mainteneurs et non par des pirates.

Le système fonctionne avec un ensemble de signatures que l'on considère comme fiables (dignes de confiance). Debian installe par défaut les signatures officielles Debian.

L'erreur NO PUBKEY indique qu'un dépôt de paquet utilise une clef (des signature) que vous ne considérez pas comme digne de confiance.

Si vous savez que la clef en question est digne de confiance, par exemple si vous venez d'ajouter un nouveau dépôt, alors vous pouvez appliquer l'une des procédures suivantes afin d'indiquer que vous faites confiance à cette nouvelle clef.

== Ajout automatique de clef ==

Pour ajouter une clef d'un dépôt que l'on vient d'installer, le moyen recommandé consiste à installer le paquet de ce dépôt dont le nom finit par -keyring.
Cette solution présente le double intérêt d'être simple et de permettre aussi aux mainteneurs du dépôt de mettre à jour leur clef plus facilement : ils peuvent prévoir une période de transition durant laquelle ils enverront une mise à jour de ce paquet qui installera la nouvelle clef et retirera la précédente.

=== Deb-multimedia ===

Si l'erreur apparaît lorsque vous venez d'ajouter le dépôt deb-multimedia.org, vous devriez installer le paquet deb-multimedia-keyring.

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes n'ont
 pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907

 # apt-get install deb-multimedia-keyring
 # apt-get update

Source : [http://deb-multimedia.org/ deb-multimedia.org]

 The first package to install is deb-multimedia-keyring.
 Since Squeeze you can install this package with apt-get but you need
 to presse Y when the package ask what to do and do not press return.
 An new “apt-get update” is also necessary.

=== Mozilla Debian ===

Dans Debian unstable et les backports, installez le paquet suivant : pkg-mozilla-archive-keyring
Il faut utiliser (à ce jour 25/01/2013) la version 1.1, avec la version 1 (ou sans le paquet) vous aurez droit à ce genre de message :

 W: GPG error: http://mozilla.debian.net squeeze-backports Release: The
 following signatures were invalid: KEYEXPIRED 1352888501

== Ajout manuel de la clé ==

Il s'agit ici d'indiquer que vous faites confiance à un dépôt pour installer des logiciels sur votre ordinateur. '''Attention''', c'est une question à ne pas prendre à la légère car il pourrait très bien installer des versions vérolées des logiciels sur votre ordinateur.

Il est conseillé de vérifier la clef que vous allez ajouter à votre système. Il faut vous assurer qu'elle est digne de confiance.

Pour cela il faut aller sur le site du dépôt que vous venez d'ajouter, par exemple http://deb-multimedia.org/
Dans la faq vous trouvez une question qui parle des clef PGP et la réponse donne l'identifiant de la clef (une suite de 8 caractères entre 0 et 9 et entre A et F).

C'est cette clef qu'il faut ajouter à votre trousseau.

Ajoutez la clé à votre porte-clés personnel depuis un serveur sûr :

 # gpg --keyserver pgpkeys.mit.edu --recv-key 01234567

Exportez cette clé dans le système APT :

 # gpg -a --export 01234567 | apt-key add -

=== Vérification supplémentaire ===

Lorsque l'erreur ci-dessous survient :

 W: GPG error: &lt;url d'un dépôt&gt; Release: The following signatures couldn't be
 verified because the public key is not available: NO_PUBKEY XXXXXXXX01234567

Les huit derniers éléments de la clé doivent correspondre à l'identifiant que vous trouvé sur le site du dépôt.

== Un script pour se simplifier la vie ==

Merci à [[Utilisateur:Ggoodluck47|Ggoodluck47]] pour sa contribution.

=== version utilisateur ===

Cette version du script nécessite d'avoir le paquet sudo installé sur votre système, ainsi que l'utilisateur déclaré dans le fichier sudoers.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | sudo apt-key add -

=== version root ===

Cette version du script est à lancer en root, et ne nécessite pas le paquet sudo.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | apt-key add -

== En cas de problème avec une clé pourtant bien installée ==

Il peut arriver qu'une clé pourtant bien installée vous pose un problème, et vous donne une erreur comme celle-ci :

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes
 ne sont pas valables : BADSIG 07DC563D1F41B907 Christian Marillat &lt;marillat@debian.org&gt;

Dans ce cas il faudra enlever la clé du porte-clés et la réinstaller.

On enlève la clé &quot;fautive&quot; :
 # apt-key del 1F41B907
 OK

On la réinstalle :
 # gpg --keyserver pgpkeys.mit.edu --recv-key 1F41B907
 gpg: requête de la clé 1F41B907 du serveur hkp pgpkeys.mit.edu
 gpg: clé 1F41B907: « Christian Marillat &lt;marillat@debian.org&gt; » 4 nouvelles signatures
 gpg: aucune clé de confiance ultime n'a été trouvée                                   
 gpg:        Quantité totale traitée: 1                                                
 gpg:           nouvelles signatures: 4
 # gpg -a --export 1F41B907 | apt-key add -
 OK

[https://www.debian-fr.org/gpg-et-debian-multimedia-experimental-sidux-t26898.html Le fil sur le forum]

----


[https://www.debian-fr.org/erreur-lors-d-un-update-no-pubkey-t2936.html Source sur forum.debian-fr.org]

Documentation extérieure : [http://www.debian.org/doc/manuals/securing-debian-howto/ch7.fr.html#s-deb-pack-sign Debian.org]


----

--[[Utilisateur:Lol|Lol]] 31 mars 2010 à 05:19 (UTC)
[[Catégorie:apt]]</text>
      <sha1>0xm336qc5guvecq5zq6ov868g8klvqe</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5479</id>
      <parentid>5478</parentid>
      <timestamp>2013-12-04T10:20:38Z</timestamp>
      <contributor>
        <username>Coq</username>
        <id>80</id>
      </contributor>
      <minor/>
      <comment>/* Un script pour se simplifier la vie */</comment>
      <text xml:space="preserve" bytes="6234">Problèmes de Clés GPG lors des updates

== Comprendre de quoi il s'agit ==

Les paquets Debian sont signés, c'est-à-dire que les mainteneurs des paquets Debian ajoutent un petit fichier (une signature) pour garantir aux utilisateurs que nous sommes que les paquets qu'ils sont en train d'installer sont bien créés par les mainteneurs et non par des pirates.

Le système fonctionne avec un ensemble de signatures que l'on considère comme fiables (dignes de confiance). Debian installe par défaut les signatures officielles Debian.

L'erreur NO PUBKEY indique qu'un dépôt de paquet utilise une clef (des signature) que vous ne considérez pas comme digne de confiance.

Si vous savez que la clef en question est digne de confiance, par exemple si vous venez d'ajouter un nouveau dépôt, alors vous pouvez appliquer l'une des procédures suivantes afin d'indiquer que vous faites confiance à cette nouvelle clef.

== Ajout automatique de clef ==

Pour ajouter une clef d'un dépôt que l'on vient d'installer, le moyen recommandé consiste à installer le paquet de ce dépôt dont le nom finit par -keyring.
Cette solution présente le double intérêt d'être simple et de permettre aussi aux mainteneurs du dépôt de mettre à jour leur clef plus facilement : ils peuvent prévoir une période de transition durant laquelle ils enverront une mise à jour de ce paquet qui installera la nouvelle clef et retirera la précédente.

=== Deb-multimedia ===

Si l'erreur apparaît lorsque vous venez d'ajouter le dépôt deb-multimedia.org, vous devriez installer le paquet deb-multimedia-keyring.

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes n'ont
 pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907

 # apt-get install deb-multimedia-keyring
 # apt-get update

Source : [http://deb-multimedia.org/ deb-multimedia.org]

 The first package to install is deb-multimedia-keyring.
 Since Squeeze you can install this package with apt-get but you need
 to presse Y when the package ask what to do and do not press return.
 An new “apt-get update” is also necessary.

=== Mozilla Debian ===

Dans Debian unstable et les backports, installez le paquet suivant : pkg-mozilla-archive-keyring
Il faut utiliser (à ce jour 25/01/2013) la version 1.1, avec la version 1 (ou sans le paquet) vous aurez droit à ce genre de message :

 W: GPG error: http://mozilla.debian.net squeeze-backports Release: The
 following signatures were invalid: KEYEXPIRED 1352888501

== Ajout manuel de la clé ==

Il s'agit ici d'indiquer que vous faites confiance à un dépôt pour installer des logiciels sur votre ordinateur. '''Attention''', c'est une question à ne pas prendre à la légère car il pourrait très bien installer des versions vérolées des logiciels sur votre ordinateur.

Il est conseillé de vérifier la clef que vous allez ajouter à votre système. Il faut vous assurer qu'elle est digne de confiance.

Pour cela il faut aller sur le site du dépôt que vous venez d'ajouter, par exemple http://deb-multimedia.org/
Dans la faq vous trouvez une question qui parle des clef PGP et la réponse donne l'identifiant de la clef (une suite de 8 caractères entre 0 et 9 et entre A et F).

C'est cette clef qu'il faut ajouter à votre trousseau.

Ajoutez la clé à votre porte-clés personnel depuis un serveur sûr :

 # gpg --keyserver pgpkeys.mit.edu --recv-key 01234567

Exportez cette clé dans le système APT :

 # gpg -a --export 01234567 | apt-key add -

=== Vérification supplémentaire ===

Lorsque l'erreur ci-dessous survient :

 W: GPG error: &lt;url d'un dépôt&gt; Release: The following signatures couldn't be
 verified because the public key is not available: NO_PUBKEY XXXXXXXX01234567

Les huit derniers éléments de la clé doivent correspondre à l'identifiant que vous trouvé sur le site du dépôt.

== Un script pour se simplifier la vie ==

Merci à [[Utilisateur:Ggoodluck47|Ggoodluck47]] pour sa contribution.

=== Version utilisateur ===

Cette version du script nécessite d'avoir le paquet sudo installé sur votre système ainsi que l'utilisateur déclaré dans le fichier sudoers.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | sudo apt-key add -

=== Version root ===

Cette version du script est à lancer en root et ne nécessite pas le paquet sudo.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | apt-key add -

== En cas de problème avec une clé pourtant bien installée ==

Il peut arriver qu'une clé pourtant bien installée vous pose un problème, et vous donne une erreur comme celle-ci :

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes
 ne sont pas valables : BADSIG 07DC563D1F41B907 Christian Marillat &lt;marillat@debian.org&gt;

Dans ce cas il faudra enlever la clé du porte-clés et la réinstaller.

On enlève la clé &quot;fautive&quot; :
 # apt-key del 1F41B907
 OK

On la réinstalle :
 # gpg --keyserver pgpkeys.mit.edu --recv-key 1F41B907
 gpg: requête de la clé 1F41B907 du serveur hkp pgpkeys.mit.edu
 gpg: clé 1F41B907: « Christian Marillat &lt;marillat@debian.org&gt; » 4 nouvelles signatures
 gpg: aucune clé de confiance ultime n'a été trouvée                                   
 gpg:        Quantité totale traitée: 1                                                
 gpg:           nouvelles signatures: 4
 # gpg -a --export 1F41B907 | apt-key add -
 OK

[https://www.debian-fr.org/gpg-et-debian-multimedia-experimental-sidux-t26898.html Le fil sur le forum]

----


[https://www.debian-fr.org/erreur-lors-d-un-update-no-pubkey-t2936.html Source sur forum.debian-fr.org]

Documentation extérieure : [http://www.debian.org/doc/manuals/securing-debian-howto/ch7.fr.html#s-deb-pack-sign Debian.org]


----

--[[Utilisateur:Lol|Lol]] 31 mars 2010 à 05:19 (UTC)
[[Catégorie:apt]]</text>
      <sha1>oztokdv7ki0iga6p287w6xnviy2oc97</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5480</id>
      <parentid>5479</parentid>
      <timestamp>2013-12-04T10:24:28Z</timestamp>
      <contributor>
        <username>Coq</username>
        <id>80</id>
      </contributor>
      <minor/>
      <comment>/* Comprendre de quoi il s'agit */</comment>
      <text xml:space="preserve" bytes="6294">Problèmes de Clés GPG lors des updates

== Comprendre de quoi il s'agit ==

Les paquets Debian sont signés, c'est-à-dire que les mainteneurs des paquets Debian ajoutent un petit fichier (une signature) pour garantir aux utilisateurs que nous sommes que les paquets qu'ils sont en train d'installer sont bien créés par les mainteneurs et non par des pirates.

Le système fonctionne avec un ensemble de signatures que l'on considère comme fiables (dignes de confiance) qui sont stockées dans le ''trousseau'' ou ''porte-clés''. Debian installe par défaut les signatures officielles Debian.

L'erreur NO PUBKEY indique qu'un dépôt de paquet utilise une clef (des signature) que vous ne considérez pas comme digne de confiance.

Si vous savez que la clef en question est digne de confiance, par exemple si vous venez d'ajouter un nouveau dépôt, alors vous pouvez appliquer l'une des procédures suivantes afin d'indiquer que vous faites confiance à cette nouvelle clef.

== Ajout automatique de clef ==

Pour ajouter une clef d'un dépôt que l'on vient d'installer, le moyen recommandé consiste à installer le paquet de ce dépôt dont le nom finit par -keyring.
Cette solution présente le double intérêt d'être simple et de permettre aussi aux mainteneurs du dépôt de mettre à jour leur clef plus facilement : ils peuvent prévoir une période de transition durant laquelle ils enverront une mise à jour de ce paquet qui installera la nouvelle clef et retirera la précédente.

=== Deb-multimedia ===

Si l'erreur apparaît lorsque vous venez d'ajouter le dépôt deb-multimedia.org, vous devriez installer le paquet deb-multimedia-keyring.

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes n'ont
 pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907

 # apt-get install deb-multimedia-keyring
 # apt-get update

Source : [http://deb-multimedia.org/ deb-multimedia.org]

 The first package to install is deb-multimedia-keyring.
 Since Squeeze you can install this package with apt-get but you need
 to presse Y when the package ask what to do and do not press return.
 An new “apt-get update” is also necessary.

=== Mozilla Debian ===

Dans Debian unstable et les backports, installez le paquet suivant : pkg-mozilla-archive-keyring
Il faut utiliser (à ce jour 25/01/2013) la version 1.1, avec la version 1 (ou sans le paquet) vous aurez droit à ce genre de message :

 W: GPG error: http://mozilla.debian.net squeeze-backports Release: The
 following signatures were invalid: KEYEXPIRED 1352888501

== Ajout manuel de la clé ==

Il s'agit ici d'indiquer que vous faites confiance à un dépôt pour installer des logiciels sur votre ordinateur. '''Attention''', c'est une question à ne pas prendre à la légère car il pourrait très bien installer des versions vérolées des logiciels sur votre ordinateur.

Il est conseillé de vérifier la clef que vous allez ajouter à votre système. Il faut vous assurer qu'elle est digne de confiance.

Pour cela il faut aller sur le site du dépôt que vous venez d'ajouter, par exemple http://deb-multimedia.org/
Dans la faq vous trouvez une question qui parle des clef PGP et la réponse donne l'identifiant de la clef (une suite de 8 caractères entre 0 et 9 et entre A et F).

C'est cette clef qu'il faut ajouter à votre trousseau.

Ajoutez la clé à votre porte-clés personnel depuis un serveur sûr :

 # gpg --keyserver pgpkeys.mit.edu --recv-key 01234567

Exportez cette clé dans le système APT :

 # gpg -a --export 01234567 | apt-key add -

=== Vérification supplémentaire ===

Lorsque l'erreur ci-dessous survient :

 W: GPG error: &lt;url d'un dépôt&gt; Release: The following signatures couldn't be
 verified because the public key is not available: NO_PUBKEY XXXXXXXX01234567

Les huit derniers éléments de la clé doivent correspondre à l'identifiant que vous trouvé sur le site du dépôt.

== Un script pour se simplifier la vie ==

Merci à [[Utilisateur:Ggoodluck47|Ggoodluck47]] pour sa contribution.

=== Version utilisateur ===

Cette version du script nécessite d'avoir le paquet sudo installé sur votre système ainsi que l'utilisateur déclaré dans le fichier sudoers.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | sudo apt-key add -

=== Version root ===

Cette version du script est à lancer en root et ne nécessite pas le paquet sudo.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | apt-key add -

== En cas de problème avec une clé pourtant bien installée ==

Il peut arriver qu'une clé pourtant bien installée vous pose un problème, et vous donne une erreur comme celle-ci :

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes
 ne sont pas valables : BADSIG 07DC563D1F41B907 Christian Marillat &lt;marillat@debian.org&gt;

Dans ce cas il faudra enlever la clé du porte-clés et la réinstaller.

On enlève la clé &quot;fautive&quot; :
 # apt-key del 1F41B907
 OK

On la réinstalle :
 # gpg --keyserver pgpkeys.mit.edu --recv-key 1F41B907
 gpg: requête de la clé 1F41B907 du serveur hkp pgpkeys.mit.edu
 gpg: clé 1F41B907: « Christian Marillat &lt;marillat@debian.org&gt; » 4 nouvelles signatures
 gpg: aucune clé de confiance ultime n'a été trouvée                                   
 gpg:        Quantité totale traitée: 1                                                
 gpg:           nouvelles signatures: 4
 # gpg -a --export 1F41B907 | apt-key add -
 OK

[https://www.debian-fr.org/gpg-et-debian-multimedia-experimental-sidux-t26898.html Le fil sur le forum]

----


[https://www.debian-fr.org/erreur-lors-d-un-update-no-pubkey-t2936.html Source sur forum.debian-fr.org]

Documentation extérieure : [http://www.debian.org/doc/manuals/securing-debian-howto/ch7.fr.html#s-deb-pack-sign Debian.org]


----

--[[Utilisateur:Lol|Lol]] 31 mars 2010 à 05:19 (UTC)
[[Catégorie:apt]]</text>
      <sha1>0z29bzrdx3gmv2am0qfscfkh0fzw31h</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5481</id>
      <parentid>5480</parentid>
      <timestamp>2013-12-04T18:26:15Z</timestamp>
      <contributor>
        <username>Coq</username>
        <id>80</id>
      </contributor>
      <minor/>
      <comment>/* Comprendre de quoi il s'agit */</comment>
      <text xml:space="preserve" bytes="6294">Problèmes de Clés GPG lors des updates

== Comprendre de quoi il s'agit ==

Les paquets Debian sont signés, c'est-à-dire que les mainteneurs des paquets Debian ajoutent un petit fichier (une signature) pour garantir aux utilisateurs que nous sommes que les paquets qu'ils sont en train d'installer sont bien créés par les mainteneurs et non par des pirates.

Le système fonctionne avec un ensemble de signatures que l'on considère comme fiables (dignes de confiance) qui sont stockées dans le ''trousseau'' ou ''porte-clés''. Debian installe par défaut les signatures officielles Debian.

L'erreur NO PUBKEY indique qu'un dépôt de paquet utilise une clé (des signature) que vous ne considérez pas comme digne de confiance.

Si vous savez que la clé en question est digne de confiance, par exemple si vous venez d'ajouter un nouveau dépôt, alors vous pouvez appliquer l'une des procédures suivantes afin d'indiquer que vous faites confiance à cette nouvelle clé.

== Ajout automatique de clef ==

Pour ajouter une clef d'un dépôt que l'on vient d'installer, le moyen recommandé consiste à installer le paquet de ce dépôt dont le nom finit par -keyring.
Cette solution présente le double intérêt d'être simple et de permettre aussi aux mainteneurs du dépôt de mettre à jour leur clef plus facilement : ils peuvent prévoir une période de transition durant laquelle ils enverront une mise à jour de ce paquet qui installera la nouvelle clef et retirera la précédente.

=== Deb-multimedia ===

Si l'erreur apparaît lorsque vous venez d'ajouter le dépôt deb-multimedia.org, vous devriez installer le paquet deb-multimedia-keyring.

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes n'ont
 pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907

 # apt-get install deb-multimedia-keyring
 # apt-get update

Source : [http://deb-multimedia.org/ deb-multimedia.org]

 The first package to install is deb-multimedia-keyring.
 Since Squeeze you can install this package with apt-get but you need
 to presse Y when the package ask what to do and do not press return.
 An new “apt-get update” is also necessary.

=== Mozilla Debian ===

Dans Debian unstable et les backports, installez le paquet suivant : pkg-mozilla-archive-keyring
Il faut utiliser (à ce jour 25/01/2013) la version 1.1, avec la version 1 (ou sans le paquet) vous aurez droit à ce genre de message :

 W: GPG error: http://mozilla.debian.net squeeze-backports Release: The
 following signatures were invalid: KEYEXPIRED 1352888501

== Ajout manuel de la clé ==

Il s'agit ici d'indiquer que vous faites confiance à un dépôt pour installer des logiciels sur votre ordinateur. '''Attention''', c'est une question à ne pas prendre à la légère car il pourrait très bien installer des versions vérolées des logiciels sur votre ordinateur.

Il est conseillé de vérifier la clef que vous allez ajouter à votre système. Il faut vous assurer qu'elle est digne de confiance.

Pour cela il faut aller sur le site du dépôt que vous venez d'ajouter, par exemple http://deb-multimedia.org/
Dans la faq vous trouvez une question qui parle des clef PGP et la réponse donne l'identifiant de la clef (une suite de 8 caractères entre 0 et 9 et entre A et F).

C'est cette clef qu'il faut ajouter à votre trousseau.

Ajoutez la clé à votre porte-clés personnel depuis un serveur sûr :

 # gpg --keyserver pgpkeys.mit.edu --recv-key 01234567

Exportez cette clé dans le système APT :

 # gpg -a --export 01234567 | apt-key add -

=== Vérification supplémentaire ===

Lorsque l'erreur ci-dessous survient :

 W: GPG error: &lt;url d'un dépôt&gt; Release: The following signatures couldn't be
 verified because the public key is not available: NO_PUBKEY XXXXXXXX01234567

Les huit derniers éléments de la clé doivent correspondre à l'identifiant que vous trouvé sur le site du dépôt.

== Un script pour se simplifier la vie ==

Merci à [[Utilisateur:Ggoodluck47|Ggoodluck47]] pour sa contribution.

=== Version utilisateur ===

Cette version du script nécessite d'avoir le paquet sudo installé sur votre système ainsi que l'utilisateur déclaré dans le fichier sudoers.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | sudo apt-key add -

=== Version root ===

Cette version du script est à lancer en root et ne nécessite pas le paquet sudo.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | apt-key add -

== En cas de problème avec une clé pourtant bien installée ==

Il peut arriver qu'une clé pourtant bien installée vous pose un problème, et vous donne une erreur comme celle-ci :

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes
 ne sont pas valables : BADSIG 07DC563D1F41B907 Christian Marillat &lt;marillat@debian.org&gt;

Dans ce cas il faudra enlever la clé du porte-clés et la réinstaller.

On enlève la clé &quot;fautive&quot; :
 # apt-key del 1F41B907
 OK

On la réinstalle :
 # gpg --keyserver pgpkeys.mit.edu --recv-key 1F41B907
 gpg: requête de la clé 1F41B907 du serveur hkp pgpkeys.mit.edu
 gpg: clé 1F41B907: « Christian Marillat &lt;marillat@debian.org&gt; » 4 nouvelles signatures
 gpg: aucune clé de confiance ultime n'a été trouvée                                   
 gpg:        Quantité totale traitée: 1                                                
 gpg:           nouvelles signatures: 4
 # gpg -a --export 1F41B907 | apt-key add -
 OK

[https://www.debian-fr.org/gpg-et-debian-multimedia-experimental-sidux-t26898.html Le fil sur le forum]

----


[https://www.debian-fr.org/erreur-lors-d-un-update-no-pubkey-t2936.html Source sur forum.debian-fr.org]

Documentation extérieure : [http://www.debian.org/doc/manuals/securing-debian-howto/ch7.fr.html#s-deb-pack-sign Debian.org]


----

--[[Utilisateur:Lol|Lol]] 31 mars 2010 à 05:19 (UTC)
[[Catégorie:apt]]</text>
      <sha1>ts3endp9y91fuv49tlz1k0l1y02vrqz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5482</id>
      <parentid>5481</parentid>
      <timestamp>2013-12-04T18:28:19Z</timestamp>
      <contributor>
        <username>Coq</username>
        <id>80</id>
      </contributor>
      <minor/>
      <comment>/* Ajout automatique de clé */</comment>
      <text xml:space="preserve" bytes="6294">Problèmes de Clés GPG lors des updates

== Comprendre de quoi il s'agit ==

Les paquets Debian sont signés, c'est-à-dire que les mainteneurs des paquets Debian ajoutent un petit fichier (une signature) pour garantir aux utilisateurs que nous sommes que les paquets qu'ils sont en train d'installer sont bien créés par les mainteneurs et non par des pirates.

Le système fonctionne avec un ensemble de signatures que l'on considère comme fiables (dignes de confiance) qui sont stockées dans le ''trousseau'' ou ''porte-clés''. Debian installe par défaut les signatures officielles Debian.

L'erreur NO PUBKEY indique qu'un dépôt de paquet utilise une clé (des signature) que vous ne considérez pas comme digne de confiance.

Si vous savez que la clé en question est digne de confiance, par exemple si vous venez d'ajouter un nouveau dépôt, alors vous pouvez appliquer l'une des procédures suivantes afin d'indiquer que vous faites confiance à cette nouvelle clé.

== Ajout automatique de clé ==

Pour ajouter une clé d'un dépôt que l'on vient d'installer, le moyen recommandé consiste à installer le paquet de ce dépôt dont le nom finit par -keyring.
Cette solution présente le double intérêt d'être simple et de permettre aussi aux mainteneurs du dépôt de mettre à jour leur clé plus facilement : ils peuvent prévoir une période de transition durant laquelle ils enverront une mise à jour de ce paquet qui installera la nouvelle clé et retirera la précédente.

=== Deb-multimedia ===

Si l'erreur apparaît lorsque vous venez d'ajouter le dépôt deb-multimedia.org, vous devriez installer le paquet deb-multimedia-keyring.

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes n'ont
 pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907

 # apt-get install deb-multimedia-keyring
 # apt-get update

Source : [http://deb-multimedia.org/ deb-multimedia.org]

 The first package to install is deb-multimedia-keyring.
 Since Squeeze you can install this package with apt-get but you need
 to presse Y when the package ask what to do and do not press return.
 An new “apt-get update” is also necessary.

=== Mozilla Debian ===

Dans Debian unstable et les backports, installez le paquet suivant : pkg-mozilla-archive-keyring
Il faut utiliser (à ce jour 25/01/2013) la version 1.1, avec la version 1 (ou sans le paquet) vous aurez droit à ce genre de message :

 W: GPG error: http://mozilla.debian.net squeeze-backports Release: The
 following signatures were invalid: KEYEXPIRED 1352888501

== Ajout manuel de la clé ==

Il s'agit ici d'indiquer que vous faites confiance à un dépôt pour installer des logiciels sur votre ordinateur. '''Attention''', c'est une question à ne pas prendre à la légère car il pourrait très bien installer des versions vérolées des logiciels sur votre ordinateur.

Il est conseillé de vérifier la clef que vous allez ajouter à votre système. Il faut vous assurer qu'elle est digne de confiance.

Pour cela il faut aller sur le site du dépôt que vous venez d'ajouter, par exemple http://deb-multimedia.org/
Dans la faq vous trouvez une question qui parle des clef PGP et la réponse donne l'identifiant de la clef (une suite de 8 caractères entre 0 et 9 et entre A et F).

C'est cette clef qu'il faut ajouter à votre trousseau.

Ajoutez la clé à votre porte-clés personnel depuis un serveur sûr :

 # gpg --keyserver pgpkeys.mit.edu --recv-key 01234567

Exportez cette clé dans le système APT :

 # gpg -a --export 01234567 | apt-key add -

=== Vérification supplémentaire ===

Lorsque l'erreur ci-dessous survient :

 W: GPG error: &lt;url d'un dépôt&gt; Release: The following signatures couldn't be
 verified because the public key is not available: NO_PUBKEY XXXXXXXX01234567

Les huit derniers éléments de la clé doivent correspondre à l'identifiant que vous trouvé sur le site du dépôt.

== Un script pour se simplifier la vie ==

Merci à [[Utilisateur:Ggoodluck47|Ggoodluck47]] pour sa contribution.

=== Version utilisateur ===

Cette version du script nécessite d'avoir le paquet sudo installé sur votre système ainsi que l'utilisateur déclaré dans le fichier sudoers.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | sudo apt-key add -

=== Version root ===

Cette version du script est à lancer en root et ne nécessite pas le paquet sudo.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | apt-key add -

== En cas de problème avec une clé pourtant bien installée ==

Il peut arriver qu'une clé pourtant bien installée vous pose un problème, et vous donne une erreur comme celle-ci :

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes
 ne sont pas valables : BADSIG 07DC563D1F41B907 Christian Marillat &lt;marillat@debian.org&gt;

Dans ce cas il faudra enlever la clé du porte-clés et la réinstaller.

On enlève la clé &quot;fautive&quot; :
 # apt-key del 1F41B907
 OK

On la réinstalle :
 # gpg --keyserver pgpkeys.mit.edu --recv-key 1F41B907
 gpg: requête de la clé 1F41B907 du serveur hkp pgpkeys.mit.edu
 gpg: clé 1F41B907: « Christian Marillat &lt;marillat@debian.org&gt; » 4 nouvelles signatures
 gpg: aucune clé de confiance ultime n'a été trouvée                                   
 gpg:        Quantité totale traitée: 1                                                
 gpg:           nouvelles signatures: 4
 # gpg -a --export 1F41B907 | apt-key add -
 OK

[https://www.debian-fr.org/gpg-et-debian-multimedia-experimental-sidux-t26898.html Le fil sur le forum]

----


[https://www.debian-fr.org/erreur-lors-d-un-update-no-pubkey-t2936.html Source sur forum.debian-fr.org]

Documentation extérieure : [http://www.debian.org/doc/manuals/securing-debian-howto/ch7.fr.html#s-deb-pack-sign Debian.org]


----

--[[Utilisateur:Lol|Lol]] 31 mars 2010 à 05:19 (UTC)
[[Catégorie:apt]]</text>
      <sha1>heah4277jj3prmbejxyd2ofluj7bayx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5483</id>
      <parentid>5482</parentid>
      <timestamp>2013-12-04T18:28:50Z</timestamp>
      <contributor>
        <username>Coq</username>
        <id>80</id>
      </contributor>
      <minor/>
      <comment>/* Ajout manuel de la clé */</comment>
      <text xml:space="preserve" bytes="6294">Problèmes de Clés GPG lors des updates

== Comprendre de quoi il s'agit ==

Les paquets Debian sont signés, c'est-à-dire que les mainteneurs des paquets Debian ajoutent un petit fichier (une signature) pour garantir aux utilisateurs que nous sommes que les paquets qu'ils sont en train d'installer sont bien créés par les mainteneurs et non par des pirates.

Le système fonctionne avec un ensemble de signatures que l'on considère comme fiables (dignes de confiance) qui sont stockées dans le ''trousseau'' ou ''porte-clés''. Debian installe par défaut les signatures officielles Debian.

L'erreur NO PUBKEY indique qu'un dépôt de paquet utilise une clé (des signature) que vous ne considérez pas comme digne de confiance.

Si vous savez que la clé en question est digne de confiance, par exemple si vous venez d'ajouter un nouveau dépôt, alors vous pouvez appliquer l'une des procédures suivantes afin d'indiquer que vous faites confiance à cette nouvelle clé.

== Ajout automatique de clé ==

Pour ajouter une clé d'un dépôt que l'on vient d'installer, le moyen recommandé consiste à installer le paquet de ce dépôt dont le nom finit par -keyring.
Cette solution présente le double intérêt d'être simple et de permettre aussi aux mainteneurs du dépôt de mettre à jour leur clé plus facilement : ils peuvent prévoir une période de transition durant laquelle ils enverront une mise à jour de ce paquet qui installera la nouvelle clé et retirera la précédente.

=== Deb-multimedia ===

Si l'erreur apparaît lorsque vous venez d'ajouter le dépôt deb-multimedia.org, vous devriez installer le paquet deb-multimedia-keyring.

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes n'ont
 pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907

 # apt-get install deb-multimedia-keyring
 # apt-get update

Source : [http://deb-multimedia.org/ deb-multimedia.org]

 The first package to install is deb-multimedia-keyring.
 Since Squeeze you can install this package with apt-get but you need
 to presse Y when the package ask what to do and do not press return.
 An new “apt-get update” is also necessary.

=== Mozilla Debian ===

Dans Debian unstable et les backports, installez le paquet suivant : pkg-mozilla-archive-keyring
Il faut utiliser (à ce jour 25/01/2013) la version 1.1, avec la version 1 (ou sans le paquet) vous aurez droit à ce genre de message :

 W: GPG error: http://mozilla.debian.net squeeze-backports Release: The
 following signatures were invalid: KEYEXPIRED 1352888501

== Ajout manuel de la clé ==

Il s'agit ici d'indiquer que vous faites confiance à un dépôt pour installer des logiciels sur votre ordinateur. '''Attention''', c'est une question à ne pas prendre à la légère car il pourrait très bien installer des versions vérolées des logiciels sur votre ordinateur.

Il est conseillé de vérifier la clé que vous allez ajouter à votre système. Il faut vous assurer qu'elle est digne de confiance.

Pour cela il faut aller sur le site du dépôt que vous venez d'ajouter, par exemple http://deb-multimedia.org/
Dans la faq vous trouvez une question qui parle des clé PGP et la réponse donne l'identifiant de la clé (une suite de 8 caractères entre 0 et 9 et entre A et F).

C'est cette clé qu'il faut ajouter à votre trousseau.

Ajoutez la clé à votre porte-clés personnel depuis un serveur sûr :

 # gpg --keyserver pgpkeys.mit.edu --recv-key 01234567

Exportez cette clé dans le système APT :

 # gpg -a --export 01234567 | apt-key add -

=== Vérification supplémentaire ===

Lorsque l'erreur ci-dessous survient :

 W: GPG error: &lt;url d'un dépôt&gt; Release: The following signatures couldn't be
 verified because the public key is not available: NO_PUBKEY XXXXXXXX01234567

Les huit derniers éléments de la clé doivent correspondre à l'identifiant que vous trouvé sur le site du dépôt.

== Un script pour se simplifier la vie ==

Merci à [[Utilisateur:Ggoodluck47|Ggoodluck47]] pour sa contribution.

=== Version utilisateur ===

Cette version du script nécessite d'avoir le paquet sudo installé sur votre système ainsi que l'utilisateur déclaré dans le fichier sudoers.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | sudo apt-key add -

=== Version root ===

Cette version du script est à lancer en root et ne nécessite pas le paquet sudo.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | apt-key add -

== En cas de problème avec une clé pourtant bien installée ==

Il peut arriver qu'une clé pourtant bien installée vous pose un problème, et vous donne une erreur comme celle-ci :

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes
 ne sont pas valables : BADSIG 07DC563D1F41B907 Christian Marillat &lt;marillat@debian.org&gt;

Dans ce cas il faudra enlever la clé du porte-clés et la réinstaller.

On enlève la clé &quot;fautive&quot; :
 # apt-key del 1F41B907
 OK

On la réinstalle :
 # gpg --keyserver pgpkeys.mit.edu --recv-key 1F41B907
 gpg: requête de la clé 1F41B907 du serveur hkp pgpkeys.mit.edu
 gpg: clé 1F41B907: « Christian Marillat &lt;marillat@debian.org&gt; » 4 nouvelles signatures
 gpg: aucune clé de confiance ultime n'a été trouvée                                   
 gpg:        Quantité totale traitée: 1                                                
 gpg:           nouvelles signatures: 4
 # gpg -a --export 1F41B907 | apt-key add -
 OK

[https://www.debian-fr.org/gpg-et-debian-multimedia-experimental-sidux-t26898.html Le fil sur le forum]

----


[https://www.debian-fr.org/erreur-lors-d-un-update-no-pubkey-t2936.html Source sur forum.debian-fr.org]

Documentation extérieure : [http://www.debian.org/doc/manuals/securing-debian-howto/ch7.fr.html#s-deb-pack-sign Debian.org]


----

--[[Utilisateur:Lol|Lol]] 31 mars 2010 à 05:19 (UTC)
[[Catégorie:apt]]</text>
      <sha1>42ak5n79gny6chs2vwg5m8rx35vvyq2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5485</id>
      <parentid>5483</parentid>
      <timestamp>2013-12-04T23:03:59Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>/* Version utilisateur */</comment>
      <text xml:space="preserve" bytes="6291">Problèmes de Clés GPG lors des updates

== Comprendre de quoi il s'agit ==

Les paquets Debian sont signés, c'est-à-dire que les mainteneurs des paquets Debian ajoutent un petit fichier (une signature) pour garantir aux utilisateurs que nous sommes que les paquets qu'ils sont en train d'installer sont bien créés par les mainteneurs et non par des pirates.

Le système fonctionne avec un ensemble de signatures que l'on considère comme fiables (dignes de confiance) qui sont stockées dans le ''trousseau'' ou ''porte-clés''. Debian installe par défaut les signatures officielles Debian.

L'erreur NO PUBKEY indique qu'un dépôt de paquet utilise une clé (des signature) que vous ne considérez pas comme digne de confiance.

Si vous savez que la clé en question est digne de confiance, par exemple si vous venez d'ajouter un nouveau dépôt, alors vous pouvez appliquer l'une des procédures suivantes afin d'indiquer que vous faites confiance à cette nouvelle clé.

== Ajout automatique de clé ==

Pour ajouter une clé d'un dépôt que l'on vient d'installer, le moyen recommandé consiste à installer le paquet de ce dépôt dont le nom finit par -keyring.
Cette solution présente le double intérêt d'être simple et de permettre aussi aux mainteneurs du dépôt de mettre à jour leur clé plus facilement : ils peuvent prévoir une période de transition durant laquelle ils enverront une mise à jour de ce paquet qui installera la nouvelle clé et retirera la précédente.

=== Deb-multimedia ===

Si l'erreur apparaît lorsque vous venez d'ajouter le dépôt deb-multimedia.org, vous devriez installer le paquet deb-multimedia-keyring.

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes n'ont
 pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907

 # apt-get install deb-multimedia-keyring
 # apt-get update

Source : [http://deb-multimedia.org/ deb-multimedia.org]

 The first package to install is deb-multimedia-keyring.
 Since Squeeze you can install this package with apt-get but you need
 to presse Y when the package ask what to do and do not press return.
 An new “apt-get update” is also necessary.

=== Mozilla Debian ===

Dans Debian unstable et les backports, installez le paquet suivant : pkg-mozilla-archive-keyring
Il faut utiliser (à ce jour 25/01/2013) la version 1.1, avec la version 1 (ou sans le paquet) vous aurez droit à ce genre de message :

 W: GPG error: http://mozilla.debian.net squeeze-backports Release: The
 following signatures were invalid: KEYEXPIRED 1352888501

== Ajout manuel de la clé ==

Il s'agit ici d'indiquer que vous faites confiance à un dépôt pour installer des logiciels sur votre ordinateur. '''Attention''', c'est une question à ne pas prendre à la légère car il pourrait très bien installer des versions vérolées des logiciels sur votre ordinateur.

Il est conseillé de vérifier la clé que vous allez ajouter à votre système. Il faut vous assurer qu'elle est digne de confiance.

Pour cela il faut aller sur le site du dépôt que vous venez d'ajouter, par exemple http://deb-multimedia.org/
Dans la faq vous trouvez une question qui parle des clé PGP et la réponse donne l'identifiant de la clé (une suite de 8 caractères entre 0 et 9 et entre A et F).

C'est cette clé qu'il faut ajouter à votre trousseau.

Ajoutez la clé à votre porte-clés personnel depuis un serveur sûr :

 # gpg --keyserver pgpkeys.mit.edu --recv-key 01234567

Exportez cette clé dans le système APT :

 # gpg -a --export 01234567 | apt-key add -

=== Vérification supplémentaire ===

Lorsque l'erreur ci-dessous survient :

 W: GPG error: &lt;url d'un dépôt&gt; Release: The following signatures couldn't be
 verified because the public key is not available: NO_PUBKEY XXXXXXXX01234567

Les huit derniers éléments de la clé doivent correspondre à l'identifiant que vous trouvé sur le site du dépôt.

== Un script pour se simplifier la vie ==

Merci à [[Utilisateur:Ggoodluck47|Ggoodluck47]] pour sa contribution.

=== Version utilisateur ===

Cette version du script nécessite d'avoir le paquet sudo installé sur votre système ainsi que l'utilisateur déclaré dans le fichier sudoers.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-cles
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read cle
 gpg --keyserver pgpkeys.mit.edu --recv-key $cle
 gpg -a --export $cle | sudo apt-key add -

=== Version root ===

Cette version du script est à lancer en root et ne nécessite pas le paquet sudo.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-clef
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read clef
 gpg --keyserver pgpkeys.mit.edu --recv-key $clef
 gpg -a --export $clef | apt-key add -

== En cas de problème avec une clé pourtant bien installée ==

Il peut arriver qu'une clé pourtant bien installée vous pose un problème, et vous donne une erreur comme celle-ci :

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes
 ne sont pas valables : BADSIG 07DC563D1F41B907 Christian Marillat &lt;marillat@debian.org&gt;

Dans ce cas il faudra enlever la clé du porte-clés et la réinstaller.

On enlève la clé &quot;fautive&quot; :
 # apt-key del 1F41B907
 OK

On la réinstalle :
 # gpg --keyserver pgpkeys.mit.edu --recv-key 1F41B907
 gpg: requête de la clé 1F41B907 du serveur hkp pgpkeys.mit.edu
 gpg: clé 1F41B907: « Christian Marillat &lt;marillat@debian.org&gt; » 4 nouvelles signatures
 gpg: aucune clé de confiance ultime n'a été trouvée                                   
 gpg:        Quantité totale traitée: 1                                                
 gpg:           nouvelles signatures: 4
 # gpg -a --export 1F41B907 | apt-key add -
 OK

[https://www.debian-fr.org/gpg-et-debian-multimedia-experimental-sidux-t26898.html Le fil sur le forum]

----


[https://www.debian-fr.org/erreur-lors-d-un-update-no-pubkey-t2936.html Source sur forum.debian-fr.org]

Documentation extérieure : [http://www.debian.org/doc/manuals/securing-debian-howto/ch7.fr.html#s-deb-pack-sign Debian.org]


----

--[[Utilisateur:Lol|Lol]] 31 mars 2010 à 05:19 (UTC)
[[Catégorie:apt]]</text>
      <sha1>4aexbj3xb73471xn0c4tzpvsv38v341</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5486</id>
      <parentid>5485</parentid>
      <timestamp>2013-12-04T23:04:19Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>/* Version root */</comment>
      <text xml:space="preserve" bytes="6288">Problèmes de Clés GPG lors des updates

== Comprendre de quoi il s'agit ==

Les paquets Debian sont signés, c'est-à-dire que les mainteneurs des paquets Debian ajoutent un petit fichier (une signature) pour garantir aux utilisateurs que nous sommes que les paquets qu'ils sont en train d'installer sont bien créés par les mainteneurs et non par des pirates.

Le système fonctionne avec un ensemble de signatures que l'on considère comme fiables (dignes de confiance) qui sont stockées dans le ''trousseau'' ou ''porte-clés''. Debian installe par défaut les signatures officielles Debian.

L'erreur NO PUBKEY indique qu'un dépôt de paquet utilise une clé (des signature) que vous ne considérez pas comme digne de confiance.

Si vous savez que la clé en question est digne de confiance, par exemple si vous venez d'ajouter un nouveau dépôt, alors vous pouvez appliquer l'une des procédures suivantes afin d'indiquer que vous faites confiance à cette nouvelle clé.

== Ajout automatique de clé ==

Pour ajouter une clé d'un dépôt que l'on vient d'installer, le moyen recommandé consiste à installer le paquet de ce dépôt dont le nom finit par -keyring.
Cette solution présente le double intérêt d'être simple et de permettre aussi aux mainteneurs du dépôt de mettre à jour leur clé plus facilement : ils peuvent prévoir une période de transition durant laquelle ils enverront une mise à jour de ce paquet qui installera la nouvelle clé et retirera la précédente.

=== Deb-multimedia ===

Si l'erreur apparaît lorsque vous venez d'ajouter le dépôt deb-multimedia.org, vous devriez installer le paquet deb-multimedia-keyring.

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes n'ont
 pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907

 # apt-get install deb-multimedia-keyring
 # apt-get update

Source : [http://deb-multimedia.org/ deb-multimedia.org]

 The first package to install is deb-multimedia-keyring.
 Since Squeeze you can install this package with apt-get but you need
 to presse Y when the package ask what to do and do not press return.
 An new “apt-get update” is also necessary.

=== Mozilla Debian ===

Dans Debian unstable et les backports, installez le paquet suivant : pkg-mozilla-archive-keyring
Il faut utiliser (à ce jour 25/01/2013) la version 1.1, avec la version 1 (ou sans le paquet) vous aurez droit à ce genre de message :

 W: GPG error: http://mozilla.debian.net squeeze-backports Release: The
 following signatures were invalid: KEYEXPIRED 1352888501

== Ajout manuel de la clé ==

Il s'agit ici d'indiquer que vous faites confiance à un dépôt pour installer des logiciels sur votre ordinateur. '''Attention''', c'est une question à ne pas prendre à la légère car il pourrait très bien installer des versions vérolées des logiciels sur votre ordinateur.

Il est conseillé de vérifier la clé que vous allez ajouter à votre système. Il faut vous assurer qu'elle est digne de confiance.

Pour cela il faut aller sur le site du dépôt que vous venez d'ajouter, par exemple http://deb-multimedia.org/
Dans la faq vous trouvez une question qui parle des clé PGP et la réponse donne l'identifiant de la clé (une suite de 8 caractères entre 0 et 9 et entre A et F).

C'est cette clé qu'il faut ajouter à votre trousseau.

Ajoutez la clé à votre porte-clés personnel depuis un serveur sûr :

 # gpg --keyserver pgpkeys.mit.edu --recv-key 01234567

Exportez cette clé dans le système APT :

 # gpg -a --export 01234567 | apt-key add -

=== Vérification supplémentaire ===

Lorsque l'erreur ci-dessous survient :

 W: GPG error: &lt;url d'un dépôt&gt; Release: The following signatures couldn't be
 verified because the public key is not available: NO_PUBKEY XXXXXXXX01234567

Les huit derniers éléments de la clé doivent correspondre à l'identifiant que vous trouvé sur le site du dépôt.

== Un script pour se simplifier la vie ==

Merci à [[Utilisateur:Ggoodluck47|Ggoodluck47]] pour sa contribution.

=== Version utilisateur ===

Cette version du script nécessite d'avoir le paquet sudo installé sur votre système ainsi que l'utilisateur déclaré dans le fichier sudoers.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-cles
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read cle
 gpg --keyserver pgpkeys.mit.edu --recv-key $cle
 gpg -a --export $cle | sudo apt-key add -

=== Version root ===

Cette version du script est à lancer en root et ne nécessite pas le paquet sudo.

 #!/usr/bin/env bash
 # Ajouter une clé GPG au porte-cles
 # Utiliser gpgkeys pour gérer la suppression
 echo &quot;coller la clef (8 caractères)&quot;
 read cle
 gpg --keyserver pgpkeys.mit.edu --recv-key $cle
 gpg -a --export $cle | apt-key add -

== En cas de problème avec une clé pourtant bien installée ==

Il peut arriver qu'une clé pourtant bien installée vous pose un problème, et vous donne une erreur comme celle-ci :

 W: GPG error: http://www.deb-multimedia.org squeeze Release: Les signatures suivantes
 ne sont pas valables : BADSIG 07DC563D1F41B907 Christian Marillat &lt;marillat@debian.org&gt;

Dans ce cas il faudra enlever la clé du porte-clés et la réinstaller.

On enlève la clé &quot;fautive&quot; :
 # apt-key del 1F41B907
 OK

On la réinstalle :
 # gpg --keyserver pgpkeys.mit.edu --recv-key 1F41B907
 gpg: requête de la clé 1F41B907 du serveur hkp pgpkeys.mit.edu
 gpg: clé 1F41B907: « Christian Marillat &lt;marillat@debian.org&gt; » 4 nouvelles signatures
 gpg: aucune clé de confiance ultime n'a été trouvée                                   
 gpg:        Quantité totale traitée: 1                                                
 gpg:           nouvelles signatures: 4
 # gpg -a --export 1F41B907 | apt-key add -
 OK

[https://www.debian-fr.org/gpg-et-debian-multimedia-experimental-sidux-t26898.html Le fil sur le forum]

----


[https://www.debian-fr.org/erreur-lors-d-un-update-no-pubkey-t2936.html Source sur forum.debian-fr.org]

Documentation extérieure : [http://www.debian.org/doc/manuals/securing-debian-howto/ch7.fr.html#s-deb-pack-sign Debian.org]


----

--[[Utilisateur:Lol|Lol]] 31 mars 2010 à 05:19 (UTC)
[[Catégorie:apt]]</text>
      <sha1>spvlfswx673djzr0c7zhdts0puwiv4b</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Error inserting vfat</title>
    <ns>0</ns>
    <id>1259</id>
    <revision>
      <id>5196</id>
      <timestamp>2013-05-18T22:51:14Z</timestamp>
      <contributor>
        <username>PengouinPdt</username>
        <id>249</id>
      </contributor>
      <comment>Création de la page &quot;Error inserting vfat&quot;</comment>
      <text xml:space="preserve" bytes="1105">= Error inserting vfat =

Ce problème arrive normalement quand le module vfat est monté avant le module fat.

&lt;code&gt;
:~$ insmod vfat
insmod: error inserting 'vfat.ko'. -1 Unknown symbol module
&lt;/code&gt;

ou :

&lt;code&gt;
:~$ modprobe vfat
FATAL: Error inserting vfat (/lib/modules/2.6.xyz/kernel/fs/fat/vfat.ko): Unknown symbol in module, or unknown parameter (see dmesg)
&lt;/code&gt;

Cela est confirmé par les informations renvoyées par dmesg, du style :

&lt;blockquote&gt;
vfat: Unknown symbole fat_***
&lt;/blockquote&gt;

Dans ce cas, avec des droits d'administrateurs, démontez le module vfat, puis montez dans l'ordre fat, puis vfat :

&lt;code&gt;
modprobe -r vfat

modprobe fat
modprobe vfat
&lt;/code&gt;

== Bogue kernel ==

Il existe un bogue du noyau [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=670172 #670172]. 
Un des conseils pertinents est de basculer sur une version précédente, le temps qu'une mise-à-jour kernel soit disponible.

= Documentations =

C'est un des cas d'[http://books.google.fr/books?id=rYSeQuJsjNoC&amp;pg=PA311&amp;lpg=PA311&amp;dq=vfat:+Unknown+symbol apprentissage lors de la formation LPI101/102].</text>
      <sha1>j5kmcxkie83if72bn4p0c63sava1omy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Essai rss</title>
    <ns>0</ns>
    <id>394</id>
    <redirect title="Signalisation des bogues - SID" />
    <revision>
      <id>1385</id>
      <timestamp>2010-04-12T15:12:17Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>a renommé [[Essai rss]] en [[Signalisation des bogues - SID]]</comment>
      <text xml:space="preserve" bytes="47">#REDIRECTION [[Signalisation des bogues - SID]]</text>
      <sha1>rjzd52zdnc5zfurhop8syru8vaohxyp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Eteindre une machine</title>
    <ns>0</ns>
    <id>942</id>
    <revision>
      <id>3913</id>
      <timestamp>2012-03-09T18:03:24Z</timestamp>
      <contributor>
        <username>Grhim</username>
        <id>116</id>
      </contributor>
      <comment>Page créée avec « pour eteindre une machine sous linux en ligne de commande nous avons plusieurs choix :   &lt;pre&gt; shutdown [option] &lt;/pre&gt; ----------------------- [option]  &lt;pre&gt;  -c [annule... »</comment>
      <text xml:space="preserve" bytes="445">pour eteindre une machine sous linux en ligne de commande nous avons plusieurs choix : 

&lt;pre&gt;
shutdown [option]
&lt;/pre&gt;
-----------------------
[option]

&lt;pre&gt; 
-c [annule une commande shutdown en cours]

-f [ne pas utiliser fsck en cas de demarrage]

-F [force l'utilisation de fsck]

-h [arrete la machine apres l'arret du systeme]

-r [reboot]

-t N [attend en seconde avant d'envoyer le signal d'arret]

shutdown now [arret immediat]

&lt;/pre&gt;</text>
      <sha1>7o5no664t67c15sfm68h3rahzke82jk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3914</id>
      <parentid>3913</parentid>
      <timestamp>2012-03-09T18:12:42Z</timestamp>
      <contributor>
        <username>Grhim</username>
        <id>116</id>
      </contributor>
      <text xml:space="preserve" bytes="869">pour eteindre une machine sous linux en ligne de commande nous avons plusieurs choix : 

&lt;pre&gt;
shutdown [option]
&lt;/pre&gt;
-----------------------
[option]

&lt;pre&gt; 
-c [annule une commande shutdown en cours]

-f [ne pas utiliser fsck en cas de demarrage]

-F [force l'utilisation de fsck]

-h [arrete la machine apres l'arret du systeme]

-r [reboot]

-t N [attend en seconde avant d'envoyer le signal d'arret]

shutdown now [arret immediat]

&lt;/pre&gt;

nous avons aussi la commande halt [option]

&lt;pre&gt;
-d [n'ecrit pas dans le journal /var/log/wtmp

-f [force l'arret sans appeler shutdown]

-h [positionne les disques durs en mode standby avant arret]

-i [arrete toutes les interfaces reseaux avant l'arret]

-n [ne synchronise pas les systeme avant arret]

-p [force l'extinction electrique]

-w [n'arrete pas le systeme mais ecrit un enregistrement dans le /wtmp]

&lt;/pre&gt;</text>
      <sha1>7gwrkf70x9dwavksq7rpqs8zl6jghg3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3915</id>
      <parentid>3914</parentid>
      <timestamp>2012-03-09T18:19:44Z</timestamp>
      <contributor>
        <username>Grhim</username>
        <id>116</id>
      </contributor>
      <text xml:space="preserve" bytes="881">pour eteindre une machine sous linux en ligne de commande nous avons plusieurs choix : 

&lt;pre&gt;
shutdown [option]
&lt;/pre&gt;
-----------------------
[option]

&lt;pre&gt; 
-c [annule une commande shutdown en cours]

-f [ne pas utiliser fsck en cas de demarrage]

-F [force l'utilisation de fsck]

-h [arrete la machine apres l'arret du systeme]

-r [reboot]

-t N [attend en seconde avant d'envoyer le signal d'arret]

shutdown [option] now [=[arret immediat]]

&lt;/pre&gt;

nous avons aussi la commande halt [option]

&lt;pre&gt;
-d [n'ecrit pas dans le journal /var/log/wtmp

-f [force l'arret sans appeler shutdown]

-h [positionne les disques durs en mode standby avant arret]

-i [arrete toutes les interfaces reseaux avant l'arret]

-n [ne synchronise pas les systeme avant arret]

-p [force l'extinction electrique]

-w [n'arrete pas le systeme mais ecrit un enregistrement dans le /wtmp]

&lt;/pre&gt;</text>
      <sha1>fe1i8jy6ihu9xwx29p9o456hkd2ig2q</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3916</id>
      <parentid>3915</parentid>
      <timestamp>2012-03-09T18:20:47Z</timestamp>
      <contributor>
        <username>Grhim</username>
        <id>116</id>
      </contributor>
      <text xml:space="preserve" bytes="911">pour eteindre une machine sous linux en ligne de commande nous avons plusieurs choix : 

&lt;pre&gt;
shutdown [option]
&lt;/pre&gt;
-----------------------
[option]

&lt;pre&gt; 
-c [annule une commande shutdown en cours]

-f [ne pas utiliser fsck en cas de demarrage]

-F [force l'utilisation de fsck]

-h [arrete la machine apres l'arret du systeme]

-r [reboot]

-t N [attend en seconde avant d'envoyer le signal d'arret]

shutdown [option] now [=[arret immediat]]

&lt;/pre&gt;

nous avons aussi la commande halt [option] -- exemple :&gt; shutdown -h now

&lt;pre&gt;
-d [n'ecrit pas dans le journal /var/log/wtmp

-f [force l'arret sans appeler shutdown]

-h [positionne les disques durs en mode standby avant arret]

-i [arrete toutes les interfaces reseaux avant l'arret]

-n [ne synchronise pas les systeme avant arret]

-p [force l'extinction electrique]

-w [n'arrete pas le systeme mais ecrit un enregistrement dans le /wtmp]

&lt;/pre&gt;</text>
      <sha1>lmbqvr2chier1o7dsahsiw03e4nvt33</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3917</id>
      <parentid>3916</parentid>
      <timestamp>2012-03-09T18:21:23Z</timestamp>
      <contributor>
        <username>Grhim</username>
        <id>116</id>
      </contributor>
      <text xml:space="preserve" bytes="911">pour eteindre une machine sous linux en ligne de commande nous avons plusieurs choix : 

&lt;pre&gt;
shutdown [option]
&lt;/pre&gt;
-----------------------
[option]

&lt;pre&gt; 
-c [annule une commande shutdown en cours]

-f [ne pas utiliser fsck en cas de demarrage]

-F [force l'utilisation de fsck]

-h [arrete la machine apres l'arret du systeme]

-r [reboot]

-t N [attend en seconde avant d'envoyer le signal d'arret]

shutdown [option] now [=[arret immediat]]-- exemple :&gt; shutdown -h now


&lt;/pre&gt;

nous avons aussi la commande halt [option] 
&lt;pre&gt;
-d [n'ecrit pas dans le journal /var/log/wtmp

-f [force l'arret sans appeler shutdown]

-h [positionne les disques durs en mode standby avant arret]

-i [arrete toutes les interfaces reseaux avant l'arret]

-n [ne synchronise pas les systeme avant arret]

-p [force l'extinction electrique]

-w [n'arrete pas le systeme mais ecrit un enregistrement dans le /wtmp]

&lt;/pre&gt;</text>
      <sha1>1r04vcifxcrqufomghhqnpqd9gk4bpb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Executer commandes en cas d'échec de la precedente</title>
    <ns>0</ns>
    <id>930</id>
    <revision>
      <id>3863</id>
      <timestamp>2012-03-01T13:01:57Z</timestamp>
      <contributor>
        <username>Grhim</username>
        <id>116</id>
      </contributor>
      <comment>Page créée avec « pour cela nous utilisons le symbole  &lt;pre&gt;||&lt;/pre&gt;  '''exemple :''' &lt;pre&gt;aptitude -s install kopete || aptitude install kopete &lt;/pre&gt; »</comment>
      <text xml:space="preserve" bytes="133">pour cela nous utilisons le symbole 
&lt;pre&gt;||&lt;/pre&gt;

'''exemple :'''
&lt;pre&gt;aptitude -s install kopete || aptitude install kopete &lt;/pre&gt;</text>
      <sha1>sl18agn2kzaqni2vlzgwvqg9hleabqs</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3876</id>
      <parentid>3863</parentid>
      <timestamp>2012-03-05T10:04:40Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="132">pour cela nous utilisons le symbole 
&lt;pre&gt;||&lt;/pre&gt;

'''exemple :'''
&lt;pre&gt;aptitude reinstall kopete || aptitude install kopete &lt;/pre&gt;</text>
      <sha1>e1narw1s0f7e87ukpjxfgl573yl3wii</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3896</id>
      <parentid>3876</parentid>
      <timestamp>2012-03-06T07:55:20Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>[[Catégorie:Commandes_de_base]]</comment>
      <text xml:space="preserve" bytes="166">pour cela nous utilisons le symbole 
&lt;pre&gt;||&lt;/pre&gt;

'''exemple :'''
&lt;pre&gt;aptitude reinstall kopete || aptitude install kopete &lt;/pre&gt;

[[Catégorie:Commandes_de_base]]</text>
      <sha1>5md3z8ngjmfno878av4twtml8gdi12r</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4105</id>
      <parentid>3896</parentid>
      <timestamp>2012-04-28T08:45:55Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="195">pour cela nous utilisons le symbole 
&lt;pre&gt;||&lt;/pre&gt;

'''exemple :'''
&lt;pre&gt;aptitude reinstall kopete || aptitude install kopete &lt;/pre&gt;

[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>9n56x0dfnf2wuhea4nqaaxzuvlum4y2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Executer commandes en cas de succés de la precedente</title>
    <ns>0</ns>
    <id>929</id>
    <revision>
      <id>3862</id>
      <timestamp>2012-03-01T12:57:48Z</timestamp>
      <contributor>
        <username>Grhim</username>
        <id>116</id>
      </contributor>
      <comment>Page créée avec « pour cela nous utilisons le symbole  &lt;pre&gt;&amp;&amp;&lt;/pre&gt;  '''exemple'''  &lt;pre&gt;aptitude clean &amp;&amp; aptitude update&lt;/pre&gt; »</comment>
      <text xml:space="preserve" bytes="111">pour cela nous utilisons le symbole 
&lt;pre&gt;&amp;&amp;&lt;/pre&gt;

'''exemple''' 
&lt;pre&gt;aptitude clean &amp;&amp; aptitude update&lt;/pre&gt;</text>
      <sha1>e6sidqmnicntnek8moj5uahmq2a8gfk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fail2ban</title>
    <ns>0</ns>
    <id>729</id>
    <revision>
      <id>3230</id>
      <timestamp>2011-08-08T14:00:57Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « == Qu'est-ce que Fail2ban? == Fail2ban lit des fichiers de log comme /var/log/pwdfail ou /var/log/apache/error_log et bannit les adresses IP qui ont obtenu un trop grand nomb... »</comment>
      <text xml:space="preserve" bytes="7247">== Qu'est-ce que Fail2ban? ==
Fail2ban lit des fichiers de log comme /var/log/pwdfail ou /var/log/apache/error_log et bannit les adresses IP qui ont obtenu un trop grand nombre d'échecs lors de l'authentification. Il met à jour les règles du pare-feu pour rejeter cette adresse IP. Ces règles peuvent êtres défines par l'utilisateur. Fail2ban peut lire plusieurs fichiers de log comme ceux de sshd ou du serveur Apache.

== Installation ==

 apt-get install fail2ban

Par défaut, le port 22 (ssh) est surveillé, vous pouvez vérifier que les règles ipatbles ont bien pris en compte fail2ban:

 iptables -S | grep fail2ban
&lt;code&gt;
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh 
-A fail2ban-ssh -j RETURN
&lt;/code&gt;

== Configuration ==

Deux fichiers:

=== fail2ban.conf ===

Rien à faire dans ce fichier, vous pouvez laisser les options par défaut

 /etc/fail2ban/fail2ban.conf

 loglevel = 3
 logtarget = /var/log/fail2ban.log
 socket = /var/run/fail2ban/fail2ban.sock

=== jail.conf ===

Ce fichier est beaucoup plus intéressant, il contient toutes les services à monitorer, et vous allez le découvrir, fail2ban ne se limite pas à SSH...

 /etc/fail2ban/jail.conf

Vérifiez l'adresse d'envoi des mails d'avertissement:

 [DEFAULT]
 destemail = root@localhost

Pour activer la surveillance d'un service, il suffit de placer la variable &quot;enabled&quot; à &quot;true&quot;

Par défaut la protection du servie SSH est activée, pas les autres:
Si votre ssh n'est p)as sur le port 22, pensez à le changer... (port = N° de port)

 [ssh]
 enabled = true
 port    = ssh
 filter  = sshd
 logpath  = /var/log/auth.log
 maxretry = 6

 [xinetd-fail]
 enabled   = true 
 filter    = xinetd-fail
 port      = all
 banaction = iptables-multiport-log
 logpath   = /var/log/daemon.log
 maxretry  = 2

 [pam-generic]
 enabled = true
 filter  = pam-generic
 port = all
 banaction = iptables-allports
 port     = anyport
 logpath  = /var/log/auth.log
 maxretry = 6

 [ssh-ddos]
 enabled = true
 port    = ssh
 filter  = sshd-ddos
 logpath  = /var/log/auth.log
 maxretry = 6

 [apache]
 enabled = true
 port    = http,https
 filter  = apache-auth
 logpath = /var/log/apache*/*error.log
 maxretry = 6

 [apache-multiport]
 enabled   = true
 port      = http,https
 filter    = apache-auth
 logpath   = /var/log/apache*/*error.log
 maxretry  = 6

 [apache-noscript]
 enabled = true 
 port    = http,https
 filter  = apache-noscript
 logpath = /var/log/apache*/*error.log
 maxretry = 6

 [apache-overflows]
 enabled = true 
 port    = http,https
 filter  = apache-overflows
 logpath = /var/log/apache*/*error.log
 maxretry = 2

 [postfix]
 enabled  = true 
 port     = smtp,ssmtp
 filter   = postfix
 logpath  = /var/log/mail.log
 
 [sasl]
 enabled  = true 
 port     = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s
 filter   = sasl
 logpath  = /var/log/mail.log

n'oubliez pas de redémarrer fail2ban :

 # service fail2ban restart

== Test ==

Vous pouvez facilement tester votre configuration:
Créez par exemple un répertoire dans votre serveur apache, rendez obligatoire l'identification, puis entrez plusieurs fois de suite un mot de passe erroné.
Vous devriez avoir dans vols logs ceci:

 tail -f /var/log/fail2ban.log

 2011-08-08 12:27:18,730 fail2ban.actions: WARNING [apache] Ban 10.9.11.150

Effectivement, iptables à bloquer votre ip:

 iptables -L

 Chain fail2ban-apache (1 references)
 target     prot opt source               destination         
 DROP       all  --  10.9.11.150          anywhere            
 RETURN     all  --  anywhere             anywhere

Au bout de 10 minutes (en fonction de ce que vous aurez précisé dans le configuration), l'IP sera de nouveau &quot;libérée&quot;:

 2011-08-08 12:37:19,585 fail2ban.actions: WARNING [apache] Unban 10.9.11.150

== Erreur au démarrage de fail2ban ==

Lorsque vous démarrerez fail2ban, surveillez ses logs, vous devriez avoir ceci:

 2011-08-08 16:44:40,564 fail2ban.jail   : INFO   Jail 'apache-noscript' started
 2011-08-08 16:44:40,810 fail2ban.jail   : INFO   Jail 'pam-generic' started
 2011-08-08 16:44:41,051 fail2ban.jail   : INFO   Jail 'xinetd-fail' started
 2011-08-08 16:44:41,269 fail2ban.jail   : INFO   Jail 'ssh-ddos' started
 2011-08-08 16:44:41,506 fail2ban.jail   : INFO   Jail 'apache-multiport' started
 2011-08-08 16:44:41,739 fail2ban.jail   : INFO   Jail 'apache-overflows' started
 2011-08-08 16:44:41,976 fail2ban.jail   : INFO   Jail 'ssh' started
 2011-08-08 16:44:42,206 fail2ban.jail   : INFO   Jail 'postfix' started
 2011-08-08 16:44:42,448 fail2ban.jail   : INFO   Jail 'sasl' started
 2011-08-08 16:44:42,667 fail2ban.jail   : INFO   Jail 'apache' started

Si vous avez ce genre de message d'erreur:

 2011-08-08 12:22:52,286 fail2ban.actions.action: ERROR  iptables -N fail2ban-pam-generic
 iptables -A fail2ban-pam-generic -j RETURN
 iptables -I INPUT -p tcp -j fail2ban-pam-generic returned 400
 2011-08-08 15:06:04,467 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports 10122 -j fail2ban-ssh-ddos
 iptables -F fail2ban-ssh-ddos
 iptables -X fail2ban-ssh-ddos returned 100
 2011-08-08 15:06:10,027 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-overflows
 iptables -A fail2ban-apache-overflows -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows returned 200
 2011-08-08 15:06:10,224 fail2ban.actions.action: ERROR  iptables -N fail2ban-postfix
 iptables -A fail2ban-postfix -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp -j fail2ban-postfix returned 400
 2011-08-08 15:06:10,283 fail2ban.actions.action: ERROR  iptables -N fail2ban-sasl
 iptables -A fail2ban-sasl -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl returned 200
 2011-08-08 15:14:26,002 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows
 iptables -F fail2ban-apache-overflows
 iptables -X fail2ban-apache-overflows returned 100
 2011-08-08 15:14:28,374 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl
 iptables -F fail2ban-sasl
 iptables -X fail2ban-sasl returned 100
 2011-08-08 15:14:45,382 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-noscript
 iptables -A fail2ban-apache-noscript -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-noscript returned 400

Il existe une solution:

'''Faite une sauvegarde de /usr/bin/fail2ban-client auparavant...'''

Editez le fichier /usr/bin/fail2ban-client et ajoutez une temporisation (time.sleep(0.1)) à cet endroit:

        def __processCmd(self, cmd, showRet = True):
                beautifier = Beautifier()
                for c in cmd:
                        time.sleep(0.1)
                        beautifier.setInputCmd(c)

Si la temporisation à 0.1 ne suffit pas, mettez 0.2. et redémarrez fail2ban.

== Liens externes ==

Je vous encourage à lire:

* La page de man de fail2ban
* [http://www.fail2ban.org/wiki/index.php/Main_Page Le Wiki de fail2ban - Très complet]

[[Utilisateur:Lol|Lol]] 8 août 2011 à 09:00 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>4l9yyjv40hkluh5hz89stn1l5axueck</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3232</id>
      <parentid>3230</parentid>
      <timestamp>2011-08-08T16:02:36Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* jail.conf */</comment>
      <text xml:space="preserve" bytes="7245">== Qu'est-ce que Fail2ban? ==
Fail2ban lit des fichiers de log comme /var/log/pwdfail ou /var/log/apache/error_log et bannit les adresses IP qui ont obtenu un trop grand nombre d'échecs lors de l'authentification. Il met à jour les règles du pare-feu pour rejeter cette adresse IP. Ces règles peuvent êtres défines par l'utilisateur. Fail2ban peut lire plusieurs fichiers de log comme ceux de sshd ou du serveur Apache.

== Installation ==

 apt-get install fail2ban

Par défaut, le port 22 (ssh) est surveillé, vous pouvez vérifier que les règles ipatbles ont bien pris en compte fail2ban:

 iptables -S | grep fail2ban
&lt;code&gt;
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh 
-A fail2ban-ssh -j RETURN
&lt;/code&gt;

== Configuration ==

Deux fichiers:

=== fail2ban.conf ===

Rien à faire dans ce fichier, vous pouvez laisser les options par défaut

 /etc/fail2ban/fail2ban.conf

 loglevel = 3
 logtarget = /var/log/fail2ban.log
 socket = /var/run/fail2ban/fail2ban.sock

=== jail.conf ===

Ce fichier est beaucoup plus intéressant, il contient tous les services à monitorer, et vous allez le découvrir, fail2ban ne se limite pas à SSH...

 /etc/fail2ban/jail.conf

Vérifiez l'adresse d'envoi des mails d'avertissement:

 [DEFAULT]
 destemail = root@localhost

Pour activer la surveillance d'un service, il suffit de placer la variable &quot;enabled&quot; à &quot;true&quot;

Par défaut la protection du servie SSH est activée, pas les autres:
Si votre ssh n'est p)as sur le port 22, pensez à le changer... (port = N° de port)

 [ssh]
 enabled = true
 port    = ssh
 filter  = sshd
 logpath  = /var/log/auth.log
 maxretry = 6

 [xinetd-fail]
 enabled   = true 
 filter    = xinetd-fail
 port      = all
 banaction = iptables-multiport-log
 logpath   = /var/log/daemon.log
 maxretry  = 2

 [pam-generic]
 enabled = true
 filter  = pam-generic
 port = all
 banaction = iptables-allports
 port     = anyport
 logpath  = /var/log/auth.log
 maxretry = 6

 [ssh-ddos]
 enabled = true
 port    = ssh
 filter  = sshd-ddos
 logpath  = /var/log/auth.log
 maxretry = 6

 [apache]
 enabled = true
 port    = http,https
 filter  = apache-auth
 logpath = /var/log/apache*/*error.log
 maxretry = 6

 [apache-multiport]
 enabled   = true
 port      = http,https
 filter    = apache-auth
 logpath   = /var/log/apache*/*error.log
 maxretry  = 6

 [apache-noscript]
 enabled = true 
 port    = http,https
 filter  = apache-noscript
 logpath = /var/log/apache*/*error.log
 maxretry = 6

 [apache-overflows]
 enabled = true 
 port    = http,https
 filter  = apache-overflows
 logpath = /var/log/apache*/*error.log
 maxretry = 2

 [postfix]
 enabled  = true 
 port     = smtp,ssmtp
 filter   = postfix
 logpath  = /var/log/mail.log
 
 [sasl]
 enabled  = true 
 port     = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s
 filter   = sasl
 logpath  = /var/log/mail.log

n'oubliez pas de redémarrer fail2ban :

 # service fail2ban restart

== Test ==

Vous pouvez facilement tester votre configuration:
Créez par exemple un répertoire dans votre serveur apache, rendez obligatoire l'identification, puis entrez plusieurs fois de suite un mot de passe erroné.
Vous devriez avoir dans vols logs ceci:

 tail -f /var/log/fail2ban.log

 2011-08-08 12:27:18,730 fail2ban.actions: WARNING [apache] Ban 10.9.11.150

Effectivement, iptables à bloquer votre ip:

 iptables -L

 Chain fail2ban-apache (1 references)
 target     prot opt source               destination         
 DROP       all  --  10.9.11.150          anywhere            
 RETURN     all  --  anywhere             anywhere

Au bout de 10 minutes (en fonction de ce que vous aurez précisé dans le configuration), l'IP sera de nouveau &quot;libérée&quot;:

 2011-08-08 12:37:19,585 fail2ban.actions: WARNING [apache] Unban 10.9.11.150

== Erreur au démarrage de fail2ban ==

Lorsque vous démarrerez fail2ban, surveillez ses logs, vous devriez avoir ceci:

 2011-08-08 16:44:40,564 fail2ban.jail   : INFO   Jail 'apache-noscript' started
 2011-08-08 16:44:40,810 fail2ban.jail   : INFO   Jail 'pam-generic' started
 2011-08-08 16:44:41,051 fail2ban.jail   : INFO   Jail 'xinetd-fail' started
 2011-08-08 16:44:41,269 fail2ban.jail   : INFO   Jail 'ssh-ddos' started
 2011-08-08 16:44:41,506 fail2ban.jail   : INFO   Jail 'apache-multiport' started
 2011-08-08 16:44:41,739 fail2ban.jail   : INFO   Jail 'apache-overflows' started
 2011-08-08 16:44:41,976 fail2ban.jail   : INFO   Jail 'ssh' started
 2011-08-08 16:44:42,206 fail2ban.jail   : INFO   Jail 'postfix' started
 2011-08-08 16:44:42,448 fail2ban.jail   : INFO   Jail 'sasl' started
 2011-08-08 16:44:42,667 fail2ban.jail   : INFO   Jail 'apache' started

Si vous avez ce genre de message d'erreur:

 2011-08-08 12:22:52,286 fail2ban.actions.action: ERROR  iptables -N fail2ban-pam-generic
 iptables -A fail2ban-pam-generic -j RETURN
 iptables -I INPUT -p tcp -j fail2ban-pam-generic returned 400
 2011-08-08 15:06:04,467 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports 10122 -j fail2ban-ssh-ddos
 iptables -F fail2ban-ssh-ddos
 iptables -X fail2ban-ssh-ddos returned 100
 2011-08-08 15:06:10,027 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-overflows
 iptables -A fail2ban-apache-overflows -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows returned 200
 2011-08-08 15:06:10,224 fail2ban.actions.action: ERROR  iptables -N fail2ban-postfix
 iptables -A fail2ban-postfix -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp -j fail2ban-postfix returned 400
 2011-08-08 15:06:10,283 fail2ban.actions.action: ERROR  iptables -N fail2ban-sasl
 iptables -A fail2ban-sasl -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl returned 200
 2011-08-08 15:14:26,002 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows
 iptables -F fail2ban-apache-overflows
 iptables -X fail2ban-apache-overflows returned 100
 2011-08-08 15:14:28,374 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl
 iptables -F fail2ban-sasl
 iptables -X fail2ban-sasl returned 100
 2011-08-08 15:14:45,382 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-noscript
 iptables -A fail2ban-apache-noscript -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-noscript returned 400

Il existe une solution:

'''Faite une sauvegarde de /usr/bin/fail2ban-client auparavant...'''

Editez le fichier /usr/bin/fail2ban-client et ajoutez une temporisation (time.sleep(0.1)) à cet endroit:

        def __processCmd(self, cmd, showRet = True):
                beautifier = Beautifier()
                for c in cmd:
                        time.sleep(0.1)
                        beautifier.setInputCmd(c)

Si la temporisation à 0.1 ne suffit pas, mettez 0.2. et redémarrez fail2ban.

== Liens externes ==

Je vous encourage à lire:

* La page de man de fail2ban
* [http://www.fail2ban.org/wiki/index.php/Main_Page Le Wiki de fail2ban - Très complet]

[[Utilisateur:Lol|Lol]] 8 août 2011 à 09:00 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>oa1bnt5n94laiqtwdrrnfvuzonj97mp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3233</id>
      <parentid>3232</parentid>
      <timestamp>2011-08-09T03:55:15Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="7532">== Qu'est-ce que Fail2ban? ==
Fail2ban lit des fichiers de log comme /var/log/pwdfail ou /var/log/apache/error_log et bannit les adresses IP qui ont obtenu un trop grand nombre d'échecs lors de l'authentification. Il met à jour les règles du pare-feu pour rejeter cette adresse IP. Ces règles peuvent êtres défines par l'utilisateur. Fail2ban peut lire plusieurs fichiers de log comme ceux de sshd ou du serveur Apache.

== Installation ==

 apt-get install fail2ban

Par défaut, le port 22 (ssh) est surveillé, vous pouvez vérifier que les règles ipatbles ont bien prises en compte fail2ban:

 iptables -S | grep fail2ban
&lt;code&gt;
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh 
-A fail2ban-ssh -j RETURN
&lt;/code&gt;

== Configuration ==

Deux fichiers:

=== fail2ban.conf ===

Rien à faire dans ce fichier, vous pouvez laisser les options par défaut:

 /etc/fail2ban/fail2ban.conf

 loglevel = 3
 logtarget = /var/log/fail2ban.log
 socket = /var/run/fail2ban/fail2ban.sock

=== jail.conf ===

Ce fichier est beaucoup plus intéressant, il contient tous les services à monitorer, et vous allez le découvrir, fail2ban ne se limite pas à SSH...

 /etc/fail2ban/jail.conf

Vérifiez l'adresse d'envoi des mails d'avertissement:

 [DEFAULT]
 destemail = root@localhost

Pour activer la surveillance d'un service, il suffit de placer la variable &quot;enabled&quot; à &quot;true&quot;

Par défaut la protection du servie SSH est activée, pas les autres:
Si votre ssh n'écoute pas sur le port 22, pensez à le changer... (port = N° de port)

 [ssh]
 enabled = true
 port    = ssh
 filter  = sshd
 logpath  = /var/log/auth.log
 maxretry = 6

D'autres services, à activer en fonction de vos besoins:

 [xinetd-fail]
 enabled   = true 
 filter    = xinetd-fail
 port      = all
 banaction = iptables-multiport-log
 logpath   = /var/log/daemon.log
 maxretry  = 2

 [pam-generic]
 enabled = true
 filter  = pam-generic
 port = all
 banaction = iptables-allports
 port     = anyport
 logpath  = /var/log/auth.log
 maxretry = 6

 [ssh-ddos]
 enabled = true
 port    = ssh
 filter  = sshd-ddos
 logpath  = /var/log/auth.log
 maxretry = 6

 [apache]
 enabled = true
 port    = http,https
 filter  = apache-auth
 logpath = /var/log/apache*/*error.log
 maxretry = 6

 [apache-multiport]
 enabled   = true
 port      = http,https
 filter    = apache-auth
 logpath   = /var/log/apache*/*error.log
 maxretry  = 6

 [apache-noscript]
 enabled = true 
 port    = http,https
 filter  = apache-noscript
 logpath = /var/log/apache*/*error.log
 maxretry = 6

 [apache-overflows]
 enabled = true 
 port    = http,https
 filter  = apache-overflows
 logpath = /var/log/apache*/*error.log
 maxretry = 2

 [postfix]
 enabled  = true 
 port     = smtp,ssmtp
 filter   = postfix
 logpath  = /var/log/mail.log

 [sasl]
 enabled  = true 
 port     = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s
 filter   = sasl
 logpath  = /var/log/mail.log

n'oubliez pas de redémarrer fail2ban :

 # service fail2ban restart

== Test ==

Vous pouvez facilement tester votre configuration:
Créez par exemple un répertoire dans votre serveur apache, rendez obligatoire l'identification, puis entrez plusieurs fois de suite un mot de passe erroné.
Vous devriez avoir dans vols logs ceci:

 tail -f /var/log/fail2ban.log

 2011-08-08 12:27:18,730 fail2ban.actions: WARNING [apache] Ban 10.9.11.150

Effectivement, iptables à bloqué votre ip:

 iptables -L

 Chain fail2ban-apache (1 references)
 target     prot opt source               destination         
 DROP       all  --  10.9.11.150          anywhere            
 RETURN     all  --  anywhere             anywhere

Au bout de 10 minutes (en fonction de ce que vous aurez précisé dans le configuration), l'IP sera de nouveau &quot;libérée&quot;:

 2011-08-08 12:37:19,585 fail2ban.actions: WARNING [apache] Unban 10.9.11.150

== Erreur au démarrage de fail2ban ==

Si vous surveillez plusieurs services, il existe un bug gênant sur fail2ban ([http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=554162 fail2ban: fails to load iptable rules with multiple jails]) - Il existe une solution :

Lorsque vous démarrerez fail2ban, surveillez ses logs, vous devriez avoir ceci:

 2011-08-08 16:44:40,564 fail2ban.jail   : INFO   Jail 'apache-noscript' started
 2011-08-08 16:44:40,810 fail2ban.jail   : INFO   Jail 'pam-generic' started
 2011-08-08 16:44:41,051 fail2ban.jail   : INFO   Jail 'xinetd-fail' started
 2011-08-08 16:44:41,269 fail2ban.jail   : INFO   Jail 'ssh-ddos' started
 2011-08-08 16:44:41,506 fail2ban.jail   : INFO   Jail 'apache-multiport' started
 2011-08-08 16:44:41,739 fail2ban.jail   : INFO   Jail 'apache-overflows' started
 2011-08-08 16:44:41,976 fail2ban.jail   : INFO   Jail 'ssh' started
 2011-08-08 16:44:42,206 fail2ban.jail   : INFO   Jail 'postfix' started
 2011-08-08 16:44:42,448 fail2ban.jail   : INFO   Jail 'sasl' started
 2011-08-08 16:44:42,667 fail2ban.jail   : INFO   Jail 'apache' started

Si vous avez ce genre de message d'erreur:

 2011-08-08 12:22:52,286 fail2ban.actions.action: ERROR  iptables -N fail2ban-pam-generic
 iptables -A fail2ban-pam-generic -j RETURN
 iptables -I INPUT -p tcp -j fail2ban-pam-generic returned 400
 2011-08-08 15:06:04,467 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports 10122 -j fail2ban-ssh-ddos
 iptables -F fail2ban-ssh-ddos
 iptables -X fail2ban-ssh-ddos returned 100
 2011-08-08 15:06:10,027 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-overflows
 iptables -A fail2ban-apache-overflows -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows returned 200
 2011-08-08 15:06:10,224 fail2ban.actions.action: ERROR  iptables -N fail2ban-postfix
 iptables -A fail2ban-postfix -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp -j fail2ban-postfix returned 400
 2011-08-08 15:06:10,283 fail2ban.actions.action: ERROR  iptables -N fail2ban-sasl
 iptables -A fail2ban-sasl -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl returned 200
 2011-08-08 15:14:26,002 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows
 iptables -F fail2ban-apache-overflows
 iptables -X fail2ban-apache-overflows returned 100
 2011-08-08 15:14:28,374 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl
 iptables -F fail2ban-sasl
 iptables -X fail2ban-sasl returned 100
 2011-08-08 15:14:45,382 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-noscript
 iptables -A fail2ban-apache-noscript -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-noscript returned 400

Il existe une solution:

'''Faite une sauvegarde de /usr/bin/fail2ban-client auparavant...'''

Editez le fichier /usr/bin/fail2ban-client et ajoutez une temporisation (time.sleep(0.1)) à cet endroit:

        def __processCmd(self, cmd, showRet = True):
                beautifier = Beautifier()
                for c in cmd:
                        time.sleep(0.1)
                        beautifier.setInputCmd(c)

Si la temporisation à 0.1 ne suffit pas, mettez 0.2. et redémarrez fail2ban.

== Liens externes ==

Je vous encourage à lire:

* La page de man de fail2ban
* [http://www.fail2ban.org/wiki/index.php/Main_Page Le Wiki de fail2ban - Très complet]

[[Utilisateur:Lol|Lol]] 8 août 2011 à 09:00 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>rypdihfll1ifpn03slwv97bordglpec</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3505</id>
      <parentid>3233</parentid>
      <timestamp>2011-10-28T13:45:56Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Erreur au démarrage de fail2ban */</comment>
      <text xml:space="preserve" bytes="7628">== Qu'est-ce que Fail2ban? ==
Fail2ban lit des fichiers de log comme /var/log/pwdfail ou /var/log/apache/error_log et bannit les adresses IP qui ont obtenu un trop grand nombre d'échecs lors de l'authentification. Il met à jour les règles du pare-feu pour rejeter cette adresse IP. Ces règles peuvent êtres défines par l'utilisateur. Fail2ban peut lire plusieurs fichiers de log comme ceux de sshd ou du serveur Apache.

== Installation ==

 apt-get install fail2ban

Par défaut, le port 22 (ssh) est surveillé, vous pouvez vérifier que les règles ipatbles ont bien prises en compte fail2ban:

 iptables -S | grep fail2ban
&lt;code&gt;
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh 
-A fail2ban-ssh -j RETURN
&lt;/code&gt;

== Configuration ==

Deux fichiers:

=== fail2ban.conf ===

Rien à faire dans ce fichier, vous pouvez laisser les options par défaut:

 /etc/fail2ban/fail2ban.conf

 loglevel = 3
 logtarget = /var/log/fail2ban.log
 socket = /var/run/fail2ban/fail2ban.sock

=== jail.conf ===

Ce fichier est beaucoup plus intéressant, il contient tous les services à monitorer, et vous allez le découvrir, fail2ban ne se limite pas à SSH...

 /etc/fail2ban/jail.conf

Vérifiez l'adresse d'envoi des mails d'avertissement:

 [DEFAULT]
 destemail = root@localhost

Pour activer la surveillance d'un service, il suffit de placer la variable &quot;enabled&quot; à &quot;true&quot;

Par défaut la protection du servie SSH est activée, pas les autres:
Si votre ssh n'écoute pas sur le port 22, pensez à le changer... (port = N° de port)

 [ssh]
 enabled = true
 port    = ssh
 filter  = sshd
 logpath  = /var/log/auth.log
 maxretry = 6

D'autres services, à activer en fonction de vos besoins:

 [xinetd-fail]
 enabled   = true 
 filter    = xinetd-fail
 port      = all
 banaction = iptables-multiport-log
 logpath   = /var/log/daemon.log
 maxretry  = 2

 [pam-generic]
 enabled = true
 filter  = pam-generic
 port = all
 banaction = iptables-allports
 port     = anyport
 logpath  = /var/log/auth.log
 maxretry = 6

 [ssh-ddos]
 enabled = true
 port    = ssh
 filter  = sshd-ddos
 logpath  = /var/log/auth.log
 maxretry = 6

 [apache]
 enabled = true
 port    = http,https
 filter  = apache-auth
 logpath = /var/log/apache*/*error.log
 maxretry = 6

 [apache-multiport]
 enabled   = true
 port      = http,https
 filter    = apache-auth
 logpath   = /var/log/apache*/*error.log
 maxretry  = 6

 [apache-noscript]
 enabled = true 
 port    = http,https
 filter  = apache-noscript
 logpath = /var/log/apache*/*error.log
 maxretry = 6

 [apache-overflows]
 enabled = true 
 port    = http,https
 filter  = apache-overflows
 logpath = /var/log/apache*/*error.log
 maxretry = 2

 [postfix]
 enabled  = true 
 port     = smtp,ssmtp
 filter   = postfix
 logpath  = /var/log/mail.log

 [sasl]
 enabled  = true 
 port     = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s
 filter   = sasl
 logpath  = /var/log/mail.log

n'oubliez pas de redémarrer fail2ban :

 # service fail2ban restart

== Test ==

Vous pouvez facilement tester votre configuration:
Créez par exemple un répertoire dans votre serveur apache, rendez obligatoire l'identification, puis entrez plusieurs fois de suite un mot de passe erroné.
Vous devriez avoir dans vols logs ceci:

 tail -f /var/log/fail2ban.log

 2011-08-08 12:27:18,730 fail2ban.actions: WARNING [apache] Ban 10.9.11.150

Effectivement, iptables à bloqué votre ip:

 iptables -L

 Chain fail2ban-apache (1 references)
 target     prot opt source               destination         
 DROP       all  --  10.9.11.150          anywhere            
 RETURN     all  --  anywhere             anywhere

Au bout de 10 minutes (en fonction de ce que vous aurez précisé dans le configuration), l'IP sera de nouveau &quot;libérée&quot;:

 2011-08-08 12:37:19,585 fail2ban.actions: WARNING [apache] Unban 10.9.11.150

== Erreur au démarrage de fail2ban ==

Si vous surveillez plusieurs services, il existe un bug gênant sur fail2ban ([http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=554162 fail2ban: fails to load iptable rules with multiple jails]) - Il existe une solution :

Lorsque vous démarrerez fail2ban, surveillez ses logs, vous devriez avoir ceci:

 2011-08-08 16:44:40,564 fail2ban.jail   : INFO   Jail 'apache-noscript' started
 2011-08-08 16:44:40,810 fail2ban.jail   : INFO   Jail 'pam-generic' started
 2011-08-08 16:44:41,051 fail2ban.jail   : INFO   Jail 'xinetd-fail' started
 2011-08-08 16:44:41,269 fail2ban.jail   : INFO   Jail 'ssh-ddos' started
 2011-08-08 16:44:41,506 fail2ban.jail   : INFO   Jail 'apache-multiport' started
 2011-08-08 16:44:41,739 fail2ban.jail   : INFO   Jail 'apache-overflows' started
 2011-08-08 16:44:41,976 fail2ban.jail   : INFO   Jail 'ssh' started
 2011-08-08 16:44:42,206 fail2ban.jail   : INFO   Jail 'postfix' started
 2011-08-08 16:44:42,448 fail2ban.jail   : INFO   Jail 'sasl' started
 2011-08-08 16:44:42,667 fail2ban.jail   : INFO   Jail 'apache' started

Si vous avez ce genre de message d'erreur:

 2011-08-08 12:22:52,286 fail2ban.actions.action: ERROR  iptables -N fail2ban-pam-generic
 iptables -A fail2ban-pam-generic -j RETURN
 iptables -I INPUT -p tcp -j fail2ban-pam-generic returned 400
 2011-08-08 15:06:04,467 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports 10122 -j fail2ban-ssh-ddos
 iptables -F fail2ban-ssh-ddos
 iptables -X fail2ban-ssh-ddos returned 100
 2011-08-08 15:06:10,027 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-overflows
 iptables -A fail2ban-apache-overflows -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows returned 200
 2011-08-08 15:06:10,224 fail2ban.actions.action: ERROR  iptables -N fail2ban-postfix
 iptables -A fail2ban-postfix -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp -j fail2ban-postfix returned 400
 2011-08-08 15:06:10,283 fail2ban.actions.action: ERROR  iptables -N fail2ban-sasl
 iptables -A fail2ban-sasl -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl returned 200
 2011-08-08 15:14:26,002 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows
 iptables -F fail2ban-apache-overflows
 iptables -X fail2ban-apache-overflows returned 100
 2011-08-08 15:14:28,374 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl
 iptables -F fail2ban-sasl
 iptables -X fail2ban-sasl returned 100
 2011-08-08 15:14:45,382 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-noscript
 iptables -A fail2ban-apache-noscript -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-noscript returned 400

Il existe deux solutions:

1) Modifier le fichier /usr/bin/fail2ban-client

'''Faite une sauvegarde de  auparavant...'''

Editez le fichier /usr/bin/fail2ban-client et ajoutez une temporisation (time.sleep(0.1)) à cet endroit:

        def __processCmd(self, cmd, showRet = True):
                beautifier = Beautifier()
                for c in cmd:
                        time.sleep(0.1)
                        beautifier.setInputCmd(c)

Si la temporisation à 0.1 ne suffit pas, mettez 0.2. et redémarrez fail2ban.

2) Installer la version testing (Fixed in version fail2ban/0.8.5-2)

== Liens externes ==

Je vous encourage à lire:

* La page de man de fail2ban
* [http://www.fail2ban.org/wiki/index.php/Main_Page Le Wiki de fail2ban - Très complet]

[[Utilisateur:Lol|Lol]] 8 août 2011 à 09:00 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>3cl8ss9b5fhurp3vg51kydhx6ee9seh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3654</id>
      <parentid>3505</parentid>
      <timestamp>2011-12-29T07:42:21Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Test */</comment>
      <text xml:space="preserve" bytes="9691">== Qu'est-ce que Fail2ban? ==
Fail2ban lit des fichiers de log comme /var/log/pwdfail ou /var/log/apache/error_log et bannit les adresses IP qui ont obtenu un trop grand nombre d'échecs lors de l'authentification. Il met à jour les règles du pare-feu pour rejeter cette adresse IP. Ces règles peuvent êtres défines par l'utilisateur. Fail2ban peut lire plusieurs fichiers de log comme ceux de sshd ou du serveur Apache.

== Installation ==

 apt-get install fail2ban

Par défaut, le port 22 (ssh) est surveillé, vous pouvez vérifier que les règles ipatbles ont bien prises en compte fail2ban:

 iptables -S | grep fail2ban
&lt;code&gt;
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh 
-A fail2ban-ssh -j RETURN
&lt;/code&gt;

== Configuration ==

Deux fichiers:

=== fail2ban.conf ===

Rien à faire dans ce fichier, vous pouvez laisser les options par défaut:

 /etc/fail2ban/fail2ban.conf

 loglevel = 3
 logtarget = /var/log/fail2ban.log
 socket = /var/run/fail2ban/fail2ban.sock

=== jail.conf ===

Ce fichier est beaucoup plus intéressant, il contient tous les services à monitorer, et vous allez le découvrir, fail2ban ne se limite pas à SSH...

 /etc/fail2ban/jail.conf

Vérifiez l'adresse d'envoi des mails d'avertissement:

 [DEFAULT]
 destemail = root@localhost

Pour activer la surveillance d'un service, il suffit de placer la variable &quot;enabled&quot; à &quot;true&quot;

Par défaut la protection du servie SSH est activée, pas les autres:
Si votre ssh n'écoute pas sur le port 22, pensez à le changer... (port = N° de port)

 [ssh]
 enabled = true
 port    = ssh
 filter  = sshd
 logpath  = /var/log/auth.log
 maxretry = 6

D'autres services, à activer en fonction de vos besoins:

 [xinetd-fail]
 enabled   = true 
 filter    = xinetd-fail
 port      = all
 banaction = iptables-multiport-log
 logpath   = /var/log/daemon.log
 maxretry  = 2

 [pam-generic]
 enabled = true
 filter  = pam-generic
 port = all
 banaction = iptables-allports
 port     = anyport
 logpath  = /var/log/auth.log
 maxretry = 6

 [ssh-ddos]
 enabled = true
 port    = ssh
 filter  = sshd-ddos
 logpath  = /var/log/auth.log
 maxretry = 6

 [apache]
 enabled = true
 port    = http,https
 filter  = apache-auth
 logpath = /var/log/apache*/*error.log
 maxretry = 6

 [apache-multiport]
 enabled   = true
 port      = http,https
 filter    = apache-auth
 logpath   = /var/log/apache*/*error.log
 maxretry  = 6

 [apache-noscript]
 enabled = true 
 port    = http,https
 filter  = apache-noscript
 logpath = /var/log/apache*/*error.log
 maxretry = 6

 [apache-overflows]
 enabled = true 
 port    = http,https
 filter  = apache-overflows
 logpath = /var/log/apache*/*error.log
 maxretry = 2

 [postfix]
 enabled  = true 
 port     = smtp,ssmtp
 filter   = postfix
 logpath  = /var/log/mail.log

 [sasl]
 enabled  = true 
 port     = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s
 filter   = sasl
 logpath  = /var/log/mail.log

n'oubliez pas de redémarrer fail2ban :

 # service fail2ban restart

== Test ==

=== Testez les règles ===

L'erreur commune est de se tromper de fichier log... Vérifiez et revérifiez que le fichier donné en &quot;logpath&quot; est le bon.
Ensuite testez vos règles avec la commande /usr/bin/fail2ban-regex

 # /usr/bin/fail2ban-regex /var/www/path/logs/userlogins /etc/fail2ban/filter.d/roundcube.conf

Exemple de sortie:
&lt;code&gt;
Running tests
=============

Use regex file : /etc/fail2ban/filter.d/roundcube.conf
Use log file   : /var/www/path/logs/userlogins


Results
=======

Failregex
|- Regular expressions:
|  [1] FAILED login for .*. from &lt;HOST&gt;
|
`- Number of matches:
   [1] 1 match(es)

Ignoreregex
|- Regular expressions:
|
`- Number of matches:

Summary
=======

Addresses found:
[1]
    41.xxx.xxx.xxx (Wed Dec 28 15:51:14 2011)

Date template hits:
0 hit(s): MONTH Day Hour:Minute:Second
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second Year
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second
0 hit(s): Year/Month/Day Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/MONTH/Year:Hour:Minute:Second
0 hit(s): Month/Day/Year:Hour:Minute:Second
0 hit(s): Year-Month-Day Hour:Minute:Second
2 hit(s): Day-MONTH-Year Hour:Minute:Second[.Millisecond]
0 hit(s): Day-Month-Year Hour:Minute:Second
0 hit(s): TAI64N
0 hit(s): Epoch
0 hit(s): ISO 8601
0 hit(s): Hour:Minute:Second
0 hit(s): &lt;Month/Day/Year@Hour:Minute:Second&gt;

Success, the total number of match is 1

However, look at the above section 'Running tests' which could contain important
information.
&lt;/code&gt;

=== Testez l'état des jails ===

Avec la commande /usr/bin/fail2ban-client vous pouvez vérifier l'état de vos &quot;jails&quot;:

 # /usr/bin/fail2ban-client status apache-404

Exemple de sortie:
&lt;code&gt;
Status for the jail: apache-404
|- filter
|  |- File list:        /var/log/path/error.log /var/log/path2/error.log /var/log/path2/error.log Etc...
|  |- Currently failed: 5
|  `- Total failed:     32
`- action
   |- Currently banned: 2
   |  `- IP list:       41.xxx.xxx.xxx 84.xxx.xxx.xxx 
   `- Total banned:     2
&lt;/code&gt;

=== Testez en violant une règle ===

Créez par exemple un répertoire dans votre serveur apache, rendez obligatoire l'identification, puis entrez plusieurs fois de suite un mot de passe erroné.
Vous devriez avoir dans vols logs ceci:

 tail -f /var/log/fail2ban.log

 2011-08-08 12:27:18,730 fail2ban.actions: WARNING [apache] Ban 10.9.11.150

Effectivement, iptables à bloqué votre ip:

 iptables -L

 Chain fail2ban-apache (1 references)
 target     prot opt source               destination         
 DROP       all  --  10.9.11.150          anywhere            
 RETURN     all  --  anywhere             anywhere

Au bout de 10 minutes (en fonction de ce que vous aurez précisé dans le configuration), l'IP sera de nouveau &quot;libérée&quot;:

 2011-08-08 12:37:19,585 fail2ban.actions: WARNING [apache] Unban 10.9.11.150

== Erreur au démarrage de fail2ban ==

Si vous surveillez plusieurs services, il existe un bug gênant sur fail2ban ([http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=554162 fail2ban: fails to load iptable rules with multiple jails]) - Il existe une solution :

Lorsque vous démarrerez fail2ban, surveillez ses logs, vous devriez avoir ceci:

 2011-08-08 16:44:40,564 fail2ban.jail   : INFO   Jail 'apache-noscript' started
 2011-08-08 16:44:40,810 fail2ban.jail   : INFO   Jail 'pam-generic' started
 2011-08-08 16:44:41,051 fail2ban.jail   : INFO   Jail 'xinetd-fail' started
 2011-08-08 16:44:41,269 fail2ban.jail   : INFO   Jail 'ssh-ddos' started
 2011-08-08 16:44:41,506 fail2ban.jail   : INFO   Jail 'apache-multiport' started
 2011-08-08 16:44:41,739 fail2ban.jail   : INFO   Jail 'apache-overflows' started
 2011-08-08 16:44:41,976 fail2ban.jail   : INFO   Jail 'ssh' started
 2011-08-08 16:44:42,206 fail2ban.jail   : INFO   Jail 'postfix' started
 2011-08-08 16:44:42,448 fail2ban.jail   : INFO   Jail 'sasl' started
 2011-08-08 16:44:42,667 fail2ban.jail   : INFO   Jail 'apache' started

Si vous avez ce genre de message d'erreur:

 2011-08-08 12:22:52,286 fail2ban.actions.action: ERROR  iptables -N fail2ban-pam-generic
 iptables -A fail2ban-pam-generic -j RETURN
 iptables -I INPUT -p tcp -j fail2ban-pam-generic returned 400
 2011-08-08 15:06:04,467 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports 10122 -j fail2ban-ssh-ddos
 iptables -F fail2ban-ssh-ddos
 iptables -X fail2ban-ssh-ddos returned 100
 2011-08-08 15:06:10,027 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-overflows
 iptables -A fail2ban-apache-overflows -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows returned 200
 2011-08-08 15:06:10,224 fail2ban.actions.action: ERROR  iptables -N fail2ban-postfix
 iptables -A fail2ban-postfix -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp -j fail2ban-postfix returned 400
 2011-08-08 15:06:10,283 fail2ban.actions.action: ERROR  iptables -N fail2ban-sasl
 iptables -A fail2ban-sasl -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl returned 200
 2011-08-08 15:14:26,002 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows
 iptables -F fail2ban-apache-overflows
 iptables -X fail2ban-apache-overflows returned 100
 2011-08-08 15:14:28,374 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl
 iptables -F fail2ban-sasl
 iptables -X fail2ban-sasl returned 100
 2011-08-08 15:14:45,382 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-noscript
 iptables -A fail2ban-apache-noscript -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-noscript returned 400

Il existe deux solutions:

1) Modifier le fichier /usr/bin/fail2ban-client

'''Faite une sauvegarde de  auparavant...'''

Editez le fichier /usr/bin/fail2ban-client et ajoutez une temporisation (time.sleep(0.1)) à cet endroit:

        def __processCmd(self, cmd, showRet = True):
                beautifier = Beautifier()
                for c in cmd:
                        time.sleep(0.1)
                        beautifier.setInputCmd(c)

Si la temporisation à 0.1 ne suffit pas, mettez 0.2. et redémarrez fail2ban.

2) Installer la version testing (Fixed in version fail2ban/0.8.5-2)

== Liens externes ==

Je vous encourage à lire:

* La page de man de fail2ban
* [http://www.fail2ban.org/wiki/index.php/Main_Page Le Wiki de fail2ban - Très complet]

[[Utilisateur:Lol|Lol]] 8 août 2011 à 09:00 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>0ehxyv23tncvv4zv0rp8rxlrjovc088</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3655</id>
      <parentid>3654</parentid>
      <timestamp>2011-12-29T07:45:55Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* jail.conf */</comment>
      <text xml:space="preserve" bytes="9893">== Qu'est-ce que Fail2ban? ==
Fail2ban lit des fichiers de log comme /var/log/pwdfail ou /var/log/apache/error_log et bannit les adresses IP qui ont obtenu un trop grand nombre d'échecs lors de l'authentification. Il met à jour les règles du pare-feu pour rejeter cette adresse IP. Ces règles peuvent êtres défines par l'utilisateur. Fail2ban peut lire plusieurs fichiers de log comme ceux de sshd ou du serveur Apache.

== Installation ==

 apt-get install fail2ban

Par défaut, le port 22 (ssh) est surveillé, vous pouvez vérifier que les règles ipatbles ont bien prises en compte fail2ban:

 iptables -S | grep fail2ban
&lt;code&gt;
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh 
-A fail2ban-ssh -j RETURN
&lt;/code&gt;

== Configuration ==

Deux fichiers:

=== fail2ban.conf ===

Rien à faire dans ce fichier, vous pouvez laisser les options par défaut:

 /etc/fail2ban/fail2ban.conf

 loglevel = 3
 logtarget = /var/log/fail2ban.log
 socket = /var/run/fail2ban/fail2ban.sock

=== jail.conf ===

Ce fichier est beaucoup plus intéressant, il contient tous les services à monitorer, et vous allez le découvrir, fail2ban ne se limite pas à SSH...

 /etc/fail2ban/jail.conf

Vérifiez l'adresse d'envoi des mails d'avertissement:

 [DEFAULT]
 destemail = root@localhost

'''Erreur commune pour l'envoi des mail d'alertes'''

N'oubliez pas de modifier la variable action = %(action_)s
Et de la placer soit sur:

 action = %(action_mw)s

Soit sur

 action = %(action_mwl)s


Pour activer la surveillance d'un service, il suffit de placer la variable &quot;enabled&quot; à &quot;true&quot;

Par défaut la protection du servie SSH est activée, pas les autres:
Si votre ssh n'écoute pas sur le port 22, pensez à le changer... (port = N° de port)

 [ssh]
 enabled = true
 port    = ssh
 filter  = sshd
 logpath  = /var/log/auth.log
 maxretry = 6

D'autres services, à activer en fonction de vos besoins:

 [xinetd-fail]
 enabled   = true 
 filter    = xinetd-fail
 port      = all
 banaction = iptables-multiport-log
 logpath   = /var/log/daemon.log
 maxretry  = 2

 [pam-generic]
 enabled = true
 filter  = pam-generic
 port = all
 banaction = iptables-allports
 port     = anyport
 logpath  = /var/log/auth.log
 maxretry = 6

 [ssh-ddos]
 enabled = true
 port    = ssh
 filter  = sshd-ddos
 logpath  = /var/log/auth.log
 maxretry = 6

 [apache]
 enabled = true
 port    = http,https
 filter  = apache-auth
 logpath = /var/log/apache*/*error.log
 maxretry = 6

 [apache-multiport]
 enabled   = true
 port      = http,https
 filter    = apache-auth
 logpath   = /var/log/apache*/*error.log
 maxretry  = 6

 [apache-noscript]
 enabled = true 
 port    = http,https
 filter  = apache-noscript
 logpath = /var/log/apache*/*error.log
 maxretry = 6

 [apache-overflows]
 enabled = true 
 port    = http,https
 filter  = apache-overflows
 logpath = /var/log/apache*/*error.log
 maxretry = 2

 [postfix]
 enabled  = true 
 port     = smtp,ssmtp
 filter   = postfix
 logpath  = /var/log/mail.log

 [sasl]
 enabled  = true 
 port     = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s
 filter   = sasl
 logpath  = /var/log/mail.log

n'oubliez pas de redémarrer fail2ban :

 # service fail2ban restart

== Test ==

=== Testez les règles ===

L'erreur commune est de se tromper de fichier log... Vérifiez et revérifiez que le fichier donné en &quot;logpath&quot; est le bon.
Ensuite testez vos règles avec la commande /usr/bin/fail2ban-regex

 # /usr/bin/fail2ban-regex /var/www/path/logs/userlogins /etc/fail2ban/filter.d/roundcube.conf

Exemple de sortie:
&lt;code&gt;
Running tests
=============

Use regex file : /etc/fail2ban/filter.d/roundcube.conf
Use log file   : /var/www/path/logs/userlogins


Results
=======

Failregex
|- Regular expressions:
|  [1] FAILED login for .*. from &lt;HOST&gt;
|
`- Number of matches:
   [1] 1 match(es)

Ignoreregex
|- Regular expressions:
|
`- Number of matches:

Summary
=======

Addresses found:
[1]
    41.xxx.xxx.xxx (Wed Dec 28 15:51:14 2011)

Date template hits:
0 hit(s): MONTH Day Hour:Minute:Second
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second Year
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second
0 hit(s): Year/Month/Day Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/MONTH/Year:Hour:Minute:Second
0 hit(s): Month/Day/Year:Hour:Minute:Second
0 hit(s): Year-Month-Day Hour:Minute:Second
2 hit(s): Day-MONTH-Year Hour:Minute:Second[.Millisecond]
0 hit(s): Day-Month-Year Hour:Minute:Second
0 hit(s): TAI64N
0 hit(s): Epoch
0 hit(s): ISO 8601
0 hit(s): Hour:Minute:Second
0 hit(s): &lt;Month/Day/Year@Hour:Minute:Second&gt;

Success, the total number of match is 1

However, look at the above section 'Running tests' which could contain important
information.
&lt;/code&gt;

=== Testez l'état des jails ===

Avec la commande /usr/bin/fail2ban-client vous pouvez vérifier l'état de vos &quot;jails&quot;:

 # /usr/bin/fail2ban-client status apache-404

Exemple de sortie:
&lt;code&gt;
Status for the jail: apache-404
|- filter
|  |- File list:        /var/log/path/error.log /var/log/path2/error.log /var/log/path2/error.log Etc...
|  |- Currently failed: 5
|  `- Total failed:     32
`- action
   |- Currently banned: 2
   |  `- IP list:       41.xxx.xxx.xxx 84.xxx.xxx.xxx 
   `- Total banned:     2
&lt;/code&gt;

=== Testez en violant une règle ===

Créez par exemple un répertoire dans votre serveur apache, rendez obligatoire l'identification, puis entrez plusieurs fois de suite un mot de passe erroné.
Vous devriez avoir dans vols logs ceci:

 tail -f /var/log/fail2ban.log

 2011-08-08 12:27:18,730 fail2ban.actions: WARNING [apache] Ban 10.9.11.150

Effectivement, iptables à bloqué votre ip:

 iptables -L

 Chain fail2ban-apache (1 references)
 target     prot opt source               destination         
 DROP       all  --  10.9.11.150          anywhere            
 RETURN     all  --  anywhere             anywhere

Au bout de 10 minutes (en fonction de ce que vous aurez précisé dans le configuration), l'IP sera de nouveau &quot;libérée&quot;:

 2011-08-08 12:37:19,585 fail2ban.actions: WARNING [apache] Unban 10.9.11.150

== Erreur au démarrage de fail2ban ==

Si vous surveillez plusieurs services, il existe un bug gênant sur fail2ban ([http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=554162 fail2ban: fails to load iptable rules with multiple jails]) - Il existe une solution :

Lorsque vous démarrerez fail2ban, surveillez ses logs, vous devriez avoir ceci:

 2011-08-08 16:44:40,564 fail2ban.jail   : INFO   Jail 'apache-noscript' started
 2011-08-08 16:44:40,810 fail2ban.jail   : INFO   Jail 'pam-generic' started
 2011-08-08 16:44:41,051 fail2ban.jail   : INFO   Jail 'xinetd-fail' started
 2011-08-08 16:44:41,269 fail2ban.jail   : INFO   Jail 'ssh-ddos' started
 2011-08-08 16:44:41,506 fail2ban.jail   : INFO   Jail 'apache-multiport' started
 2011-08-08 16:44:41,739 fail2ban.jail   : INFO   Jail 'apache-overflows' started
 2011-08-08 16:44:41,976 fail2ban.jail   : INFO   Jail 'ssh' started
 2011-08-08 16:44:42,206 fail2ban.jail   : INFO   Jail 'postfix' started
 2011-08-08 16:44:42,448 fail2ban.jail   : INFO   Jail 'sasl' started
 2011-08-08 16:44:42,667 fail2ban.jail   : INFO   Jail 'apache' started

Si vous avez ce genre de message d'erreur:

 2011-08-08 12:22:52,286 fail2ban.actions.action: ERROR  iptables -N fail2ban-pam-generic
 iptables -A fail2ban-pam-generic -j RETURN
 iptables -I INPUT -p tcp -j fail2ban-pam-generic returned 400
 2011-08-08 15:06:04,467 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports 10122 -j fail2ban-ssh-ddos
 iptables -F fail2ban-ssh-ddos
 iptables -X fail2ban-ssh-ddos returned 100
 2011-08-08 15:06:10,027 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-overflows
 iptables -A fail2ban-apache-overflows -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows returned 200
 2011-08-08 15:06:10,224 fail2ban.actions.action: ERROR  iptables -N fail2ban-postfix
 iptables -A fail2ban-postfix -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp -j fail2ban-postfix returned 400
 2011-08-08 15:06:10,283 fail2ban.actions.action: ERROR  iptables -N fail2ban-sasl
 iptables -A fail2ban-sasl -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl returned 200
 2011-08-08 15:14:26,002 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows
 iptables -F fail2ban-apache-overflows
 iptables -X fail2ban-apache-overflows returned 100
 2011-08-08 15:14:28,374 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl
 iptables -F fail2ban-sasl
 iptables -X fail2ban-sasl returned 100
 2011-08-08 15:14:45,382 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-noscript
 iptables -A fail2ban-apache-noscript -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-noscript returned 400

Il existe deux solutions:

1) Modifier le fichier /usr/bin/fail2ban-client

'''Faite une sauvegarde de  auparavant...'''

Editez le fichier /usr/bin/fail2ban-client et ajoutez une temporisation (time.sleep(0.1)) à cet endroit:

        def __processCmd(self, cmd, showRet = True):
                beautifier = Beautifier()
                for c in cmd:
                        time.sleep(0.1)
                        beautifier.setInputCmd(c)

Si la temporisation à 0.1 ne suffit pas, mettez 0.2. et redémarrez fail2ban.

2) Installer la version testing (Fixed in version fail2ban/0.8.5-2)

== Liens externes ==

Je vous encourage à lire:

* La page de man de fail2ban
* [http://www.fail2ban.org/wiki/index.php/Main_Page Le Wiki de fail2ban - Très complet]

[[Utilisateur:Lol|Lol]] 8 août 2011 à 09:00 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>ocfd1v0f36cj10gckwqqmn566syqw0x</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3656</id>
      <parentid>3655</parentid>
      <timestamp>2011-12-29T08:09:02Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* jail.conf */</comment>
      <text xml:space="preserve" bytes="15007">== Qu'est-ce que Fail2ban? ==
Fail2ban lit des fichiers de log comme /var/log/pwdfail ou /var/log/apache/error_log et bannit les adresses IP qui ont obtenu un trop grand nombre d'échecs lors de l'authentification. Il met à jour les règles du pare-feu pour rejeter cette adresse IP. Ces règles peuvent êtres défines par l'utilisateur. Fail2ban peut lire plusieurs fichiers de log comme ceux de sshd ou du serveur Apache.

== Installation ==

 apt-get install fail2ban

Par défaut, le port 22 (ssh) est surveillé, vous pouvez vérifier que les règles ipatbles ont bien prises en compte fail2ban:

 iptables -S | grep fail2ban
&lt;code&gt;
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh 
-A fail2ban-ssh -j RETURN
&lt;/code&gt;

== Configuration ==

Deux fichiers:

=== fail2ban.conf ===

Rien à faire dans ce fichier, vous pouvez laisser les options par défaut:

 /etc/fail2ban/fail2ban.conf

 loglevel = 3
 logtarget = /var/log/fail2ban.log
 socket = /var/run/fail2ban/fail2ban.sock

=== jail.conf ===

Ce fichier est beaucoup plus intéressant, il contient tous les services à monitorer, et vous allez le découvrir, fail2ban ne se limite pas à SSH...

 /etc/fail2ban/jail.conf

Vérifiez l'adresse d'envoi des mails d'avertissement:

 [DEFAULT]
 destemail = root@localhost

'''Erreur commune pour l'envoi des mail d'alertes'''

N'oubliez pas de modifier la variable action = %(action_)s
Et de la placer soit sur:

 action = %(action_mw)s

Soit sur

 action = %(action_mwl)s


Pour activer la surveillance d'un service, il suffit de placer la variable &quot;enabled&quot; à &quot;true&quot;

Par défaut la protection du servie SSH est activée, pas les autres:
Si votre ssh n'écoute pas sur le port 22, pensez à le changer... (port = N° de port)

 [ssh]
 enabled = true
 port    = ssh
 filter  = sshd
 logpath  = /var/log/auth.log
 maxretry = 6

D'autres services, à activer en fonction de vos besoins:

 [xinetd-fail]
 enabled   = true 
 filter    = xinetd-fail
 port      = all
 banaction = iptables-multiport-log
 logpath   = /var/log/daemon.log
 maxretry  = 2

 [pam-generic]
 enabled = true
 filter  = pam-generic
 port = all
 banaction = iptables-allports
 port     = anyport
 logpath  = /var/log/auth.log
 maxretry = 6

 [ssh-ddos]
 enabled = true
 port    = ssh
 filter  = sshd-ddos
 logpath  = /var/log/auth.log
 maxretry = 6

 [apache]
 enabled = true
 port    = http,https
 filter  = apache-auth
 logpath = /var/log/apache*/*error.log
 maxretry = 6

 [apache-multiport]
 enabled   = true
 port      = http,https
 filter    = apache-auth
 logpath   = /var/log/apache*/*error.log
 maxretry  = 6

 [apache-noscript]
 enabled = true 
 port    = http,https
 filter  = apache-noscript
 logpath = /var/log/apache*/*error.log
 maxretry = 6

 [apache-overflows]
 enabled = true 
 port    = http,https
 filter  = apache-overflows
 logpath = /var/log/apache*/*error.log
 maxretry = 2

 [postfix]
 enabled  = true 
 port     = smtp,ssmtp
 filter   = postfix
 logpath  = /var/log/mail.log

 [sasl]
 enabled  = true 
 port     = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s
 filter   = sasl
 logpath  = /var/log/mail.log

n'oubliez pas de redémarrer fail2ban :

 # service fail2ban restart

=== jail.local ===

Le fichier jail.local vous permet de mettre vos règles personnelles. Voici quelques exemples:

&lt;code&gt;
[pure-ftpd]
enabled = true
port = ftp,ftp-data,ftps,ftps-data
filter = pure-ftpd
logpath = /var/log/messages
maxretry = 3

[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap, port=&quot;pop3,pop3s,imap,imaps&quot;, protocol=tcp]
logpath = /var/log/mail.log
maxretry = 5

[webmin-auth]
enabled  = true
port     = https,10000
filter   = webmin-auth
logpath  = /var/log/auth.log
maxretry = 3

# Plugin ''roundcube-fail2ban-plugin'' à installer
# 
[roundcube]
enabled  = true
port     = http,https
filter   = roundcube
action   = iptables-multiport[name=roundcube, port=&quot;http,https&quot;]
           sendmail-whois[name=roundcube, dest=root@localhost, sender=fail2ban@localhost]
logpath  = /var/www/path/logs/userlogins

# Plugin ''squirrel_logger'' à ajouter à squirrelmail
[squirrelmail]
enabled = true
port = http,https
filter = squirrelmail
logpath = /var/www/path/squirrelmail_access_log
bantime = 6000
maxretry = 4

# Règle anti-Kevin...
[apache-admin]
enabled = true
port = http
filter = apache-admin
logpath = /var/log/apache*/error*.log
maxretry = 6

# Règle anti-boulets...
[apache-404]
enabled = true
port = http
filter = apache-404
logpath = /var/log/ispconfig/httpd/*/error*
maxretry = 10
&lt;/code&gt;

Les fichiers de conf qui vont bien:

'''pure-ftpd.conf''' déjà inclu dans la configuration de base

'''dovecot-pop3imap.conf''' déjà inclu dans la configuration de base

'''webmin-auth.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
# Rule by : Delvit Guillaume
#
# $Revision: 728 $
#

[Definition]

# patern :      webmin[15673]: Non-existent login as toto from 86.0.6.217
#               webmin[29544]: Invalid login as root from 86.0.6.217
#
# Option:  failregex
# Notes.:  regex to match the password failure messages in the logfile. The
#          host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P&lt;host&gt;[\w\-.^_]+)
# Values:  TEXT
#
failregex = webmin.* Non-existent login as .+ from &lt;HOST&gt;$
            webmin.* Invalid login as .+ from &lt;HOST&gt;$

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =
&lt;/code&gt;

'''roundcube.conf'''
&lt;code&gt;
[Definition]
failregex = FAILED login for .*. from &lt;HOST&gt;
ignoreregex =
&lt;/code&gt;

'''squirrelmail.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Bill Landry ((email_protected))
#
# $Revision: 510 $

[Definition]

# Option: failregex
# Notes.: regex to match the password failures messages in the logfile. The
#         host must be matched by a group named &quot;host&quot;. The tag &quot;&quot; can
#         be used for standard IP/hostname matching and is only an alias for
#         (?:::f{4,6}:)?(?P\S+)
# Values: TEXT

failregex = \[LOGIN_ERROR\].*from &lt;HOST&gt;: Utilisateur inconnu ou mot de passe incorrect

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT

ignoreregex =
&lt;/code&gt;

'''apache-admin.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 471 $
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
# host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
# be used for standard IP/hostname matching.
# Values: TEXT
# [client x.x.x.x] File does not exist: /home/www/admin/admin,
failregex = [[]client &lt;HOST&gt;[]] File does not exist: .*admin|PMA|mysql

#
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
&lt;/code&gt;

'''apache-404.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 471 $
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
# host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
# be used for standard IP/hostname matching.
# Values: TEXT
# [client x.x.x.x] File does not exist: /home/www/admin/admin,
failregex = [[]client &lt;HOST&gt;[]] File does not exist: .*
#
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
&lt;/code&gt;

'''Option très intéressante pour les logs multiples'''

Vous avez la possibilité (si vos logs sont &quot;dispersés&quot;) de mettre des chemins &quot;relatifs&quot; - Vous pouvez utiliser les * (étoiles)

Par exemple, vos logs pour chaque site sont dispersés dans des répertoires différents...
Vous utiliserez alors le chemin suivant (tous les sous-répertoires dans /var/log/ispconfig/httpd/ seront alors pris en compte)

 logpath /var/log/ispconfig/httpd/*/error*

==== Plugins squirrelmail et rouncube ====

[http://mattrude.com/projects/roundcube-fail2ban-plugin/ Plugin roundcube-fail2ban-plugin]

[http://www.howtoforge.com/configuring-fail2ban-with-squirrelmail-on-debian-lenny-ispconfig-3 Plugin squirrel_logger]

== Test ==

=== Testez les règles ===

L'erreur commune est de se tromper de fichier log... Vérifiez et revérifiez que le fichier donné en &quot;logpath&quot; est le bon.
Ensuite testez vos règles avec la commande /usr/bin/fail2ban-regex

 # /usr/bin/fail2ban-regex /var/www/path/logs/userlogins /etc/fail2ban/filter.d/roundcube.conf

Exemple de sortie:
&lt;code&gt;
Running tests
=============

Use regex file : /etc/fail2ban/filter.d/roundcube.conf
Use log file   : /var/www/path/logs/userlogins


Results
=======

Failregex
|- Regular expressions:
|  [1] FAILED login for .*. from &lt;HOST&gt;
|
`- Number of matches:
   [1] 1 match(es)

Ignoreregex
|- Regular expressions:
|
`- Number of matches:

Summary
=======

Addresses found:
[1]
    41.xxx.xxx.xxx (Wed Dec 28 15:51:14 2011)

Date template hits:
0 hit(s): MONTH Day Hour:Minute:Second
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second Year
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second
0 hit(s): Year/Month/Day Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/MONTH/Year:Hour:Minute:Second
0 hit(s): Month/Day/Year:Hour:Minute:Second
0 hit(s): Year-Month-Day Hour:Minute:Second
2 hit(s): Day-MONTH-Year Hour:Minute:Second[.Millisecond]
0 hit(s): Day-Month-Year Hour:Minute:Second
0 hit(s): TAI64N
0 hit(s): Epoch
0 hit(s): ISO 8601
0 hit(s): Hour:Minute:Second
0 hit(s): &lt;Month/Day/Year@Hour:Minute:Second&gt;

Success, the total number of match is 1

However, look at the above section 'Running tests' which could contain important
information.
&lt;/code&gt;

=== Testez l'état des jails ===

Avec la commande /usr/bin/fail2ban-client vous pouvez vérifier l'état de vos &quot;jails&quot;:

 # /usr/bin/fail2ban-client status apache-404

Exemple de sortie:
&lt;code&gt;
Status for the jail: apache-404
|- filter
|  |- File list:        /var/log/path/error.log /var/log/path2/error.log /var/log/path2/error.log Etc...
|  |- Currently failed: 5
|  `- Total failed:     32
`- action
   |- Currently banned: 2
   |  `- IP list:       41.xxx.xxx.xxx 84.xxx.xxx.xxx 
   `- Total banned:     2
&lt;/code&gt;

=== Testez en violant une règle ===

Créez par exemple un répertoire dans votre serveur apache, rendez obligatoire l'identification, puis entrez plusieurs fois de suite un mot de passe erroné.
Vous devriez avoir dans vols logs ceci:

 tail -f /var/log/fail2ban.log

 2011-08-08 12:27:18,730 fail2ban.actions: WARNING [apache] Ban 10.9.11.150

Effectivement, iptables à bloqué votre ip:

 iptables -L

 Chain fail2ban-apache (1 references)
 target     prot opt source               destination         
 DROP       all  --  10.9.11.150          anywhere            
 RETURN     all  --  anywhere             anywhere

Au bout de 10 minutes (en fonction de ce que vous aurez précisé dans le configuration), l'IP sera de nouveau &quot;libérée&quot;:

 2011-08-08 12:37:19,585 fail2ban.actions: WARNING [apache] Unban 10.9.11.150

== Erreur au démarrage de fail2ban ==

Si vous surveillez plusieurs services, il existe un bug gênant sur fail2ban ([http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=554162 fail2ban: fails to load iptable rules with multiple jails]) - Il existe une solution :

Lorsque vous démarrerez fail2ban, surveillez ses logs, vous devriez avoir ceci:

 2011-08-08 16:44:40,564 fail2ban.jail   : INFO   Jail 'apache-noscript' started
 2011-08-08 16:44:40,810 fail2ban.jail   : INFO   Jail 'pam-generic' started
 2011-08-08 16:44:41,051 fail2ban.jail   : INFO   Jail 'xinetd-fail' started
 2011-08-08 16:44:41,269 fail2ban.jail   : INFO   Jail 'ssh-ddos' started
 2011-08-08 16:44:41,506 fail2ban.jail   : INFO   Jail 'apache-multiport' started
 2011-08-08 16:44:41,739 fail2ban.jail   : INFO   Jail 'apache-overflows' started
 2011-08-08 16:44:41,976 fail2ban.jail   : INFO   Jail 'ssh' started
 2011-08-08 16:44:42,206 fail2ban.jail   : INFO   Jail 'postfix' started
 2011-08-08 16:44:42,448 fail2ban.jail   : INFO   Jail 'sasl' started
 2011-08-08 16:44:42,667 fail2ban.jail   : INFO   Jail 'apache' started

Si vous avez ce genre de message d'erreur:

 2011-08-08 12:22:52,286 fail2ban.actions.action: ERROR  iptables -N fail2ban-pam-generic
 iptables -A fail2ban-pam-generic -j RETURN
 iptables -I INPUT -p tcp -j fail2ban-pam-generic returned 400
 2011-08-08 15:06:04,467 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports 10122 -j fail2ban-ssh-ddos
 iptables -F fail2ban-ssh-ddos
 iptables -X fail2ban-ssh-ddos returned 100
 2011-08-08 15:06:10,027 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-overflows
 iptables -A fail2ban-apache-overflows -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows returned 200
 2011-08-08 15:06:10,224 fail2ban.actions.action: ERROR  iptables -N fail2ban-postfix
 iptables -A fail2ban-postfix -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp -j fail2ban-postfix returned 400
 2011-08-08 15:06:10,283 fail2ban.actions.action: ERROR  iptables -N fail2ban-sasl
 iptables -A fail2ban-sasl -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl returned 200
 2011-08-08 15:14:26,002 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows
 iptables -F fail2ban-apache-overflows
 iptables -X fail2ban-apache-overflows returned 100
 2011-08-08 15:14:28,374 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl
 iptables -F fail2ban-sasl
 iptables -X fail2ban-sasl returned 100
 2011-08-08 15:14:45,382 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-noscript
 iptables -A fail2ban-apache-noscript -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-noscript returned 400

Il existe deux solutions:

1) Modifier le fichier /usr/bin/fail2ban-client

'''Faite une sauvegarde de  auparavant...'''

Editez le fichier /usr/bin/fail2ban-client et ajoutez une temporisation (time.sleep(0.1)) à cet endroit:

        def __processCmd(self, cmd, showRet = True):
                beautifier = Beautifier()
                for c in cmd:
                        time.sleep(0.1)
                        beautifier.setInputCmd(c)

Si la temporisation à 0.1 ne suffit pas, mettez 0.2. et redémarrez fail2ban.

2) Installer la version testing (Fixed in version fail2ban/0.8.5-2)

== Liens externes ==

Je vous encourage à lire:

* La page de man de fail2ban
* [http://www.fail2ban.org/wiki/index.php/Main_Page Le Wiki de fail2ban - Très complet]

[[Utilisateur:Lol|Lol]] 8 août 2011 à 09:00 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>520zihbsfuvktouoc4dyc11yppgomvq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3911</id>
      <parentid>3656</parentid>
      <timestamp>2012-03-08T14:48:10Z</timestamp>
      <contributor>
        <username>Grhim</username>
        <id>116</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="15008">== Qu'est-ce que Fail2ban? ==
Fail2ban lit des fichiers de log comme /var/log/pwdfail ou /var/log/apache/error_log et bannit les adresses IP qui ont obtenu un trop grand nombre d'échecs lors de l'authentification. Il met à jour les règles du pare-feu pour rejeter cette adresse IP. Ces règles peuvent êtres défines par l'utilisateur. Fail2ban peut lire plusieurs fichiers de log comme ceux de sshd ou du serveur Apache.

== Installation ==

 apt-get install fail2ban

Par défaut, le port 22 (ssh) est surveillé, vous pouvez vérifier que les règles ipatbles ont bien prises en compte fail2ban:

 iptables -S | grep fail2ban
&lt;code&gt;
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh 
-A fail2ban-ssh -j RETURN
&lt;/code&gt;

== Configuration ==

Deux fichiers:

=== fail2ban.conf ===

Rien à faire dans ce fichier, vous pouvez laisser les options par défaut:

 /etc/fail2ban/fail2ban.conf

 loglevel = 3
 logtarget = /var/log/fail2ban.log
 socket = /var/run/fail2ban/fail2ban.sock

=== jail.conf ===

Ce fichier est beaucoup plus intéressant, il contient tous les services à monitorer, et vous allez le découvrir, fail2ban ne se limite pas à SSH...

 /etc/fail2ban/jail.conf

Vérifiez l'adresse d'envoi des mails d'avertissement:

 [DEFAULT]
 destemail = root@localhost

'''Erreur commune pour l'envoi des mail d'alertes'''

N'oubliez pas de modifier la variable action = %(action_)s
Et de la placer soit sur:

 action = %(action_mw)s

Soit sur

 action = %(action_mwl)s


Pour activer la surveillance d'un service, il suffit de placer la variable &quot;enabled&quot; à &quot;true&quot;

Par défaut la protection du service SSH est activée, pas les autres:
Si votre ssh n'écoute pas sur le port 22, pensez à le changer... (port = N° de port)

 [ssh]
 enabled = true
 port    = ssh
 filter  = sshd
 logpath  = /var/log/auth.log
 maxretry = 6

D'autres services, à activer en fonction de vos besoins:

 [xinetd-fail]
 enabled   = true 
 filter    = xinetd-fail
 port      = all
 banaction = iptables-multiport-log
 logpath   = /var/log/daemon.log
 maxretry  = 2

 [pam-generic]
 enabled = true
 filter  = pam-generic
 port = all
 banaction = iptables-allports
 port     = anyport
 logpath  = /var/log/auth.log
 maxretry = 6

 [ssh-ddos]
 enabled = true
 port    = ssh
 filter  = sshd-ddos
 logpath  = /var/log/auth.log
 maxretry = 6

 [apache]
 enabled = true
 port    = http,https
 filter  = apache-auth
 logpath = /var/log/apache*/*error.log
 maxretry = 6

 [apache-multiport]
 enabled   = true
 port      = http,https
 filter    = apache-auth
 logpath   = /var/log/apache*/*error.log
 maxretry  = 6

 [apache-noscript]
 enabled = true 
 port    = http,https
 filter  = apache-noscript
 logpath = /var/log/apache*/*error.log
 maxretry = 6

 [apache-overflows]
 enabled = true 
 port    = http,https
 filter  = apache-overflows
 logpath = /var/log/apache*/*error.log
 maxretry = 2

 [postfix]
 enabled  = true 
 port     = smtp,ssmtp
 filter   = postfix
 logpath  = /var/log/mail.log

 [sasl]
 enabled  = true 
 port     = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s
 filter   = sasl
 logpath  = /var/log/mail.log

n'oubliez pas de redémarrer fail2ban :

 # service fail2ban restart

=== jail.local ===

Le fichier jail.local vous permet de mettre vos règles personnelles. Voici quelques exemples:

&lt;code&gt;
[pure-ftpd]
enabled = true
port = ftp,ftp-data,ftps,ftps-data
filter = pure-ftpd
logpath = /var/log/messages
maxretry = 3

[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap, port=&quot;pop3,pop3s,imap,imaps&quot;, protocol=tcp]
logpath = /var/log/mail.log
maxretry = 5

[webmin-auth]
enabled  = true
port     = https,10000
filter   = webmin-auth
logpath  = /var/log/auth.log
maxretry = 3

# Plugin ''roundcube-fail2ban-plugin'' à installer
# 
[roundcube]
enabled  = true
port     = http,https
filter   = roundcube
action   = iptables-multiport[name=roundcube, port=&quot;http,https&quot;]
           sendmail-whois[name=roundcube, dest=root@localhost, sender=fail2ban@localhost]
logpath  = /var/www/path/logs/userlogins

# Plugin ''squirrel_logger'' à ajouter à squirrelmail
[squirrelmail]
enabled = true
port = http,https
filter = squirrelmail
logpath = /var/www/path/squirrelmail_access_log
bantime = 6000
maxretry = 4

# Règle anti-Kevin...
[apache-admin]
enabled = true
port = http
filter = apache-admin
logpath = /var/log/apache*/error*.log
maxretry = 6

# Règle anti-boulets...
[apache-404]
enabled = true
port = http
filter = apache-404
logpath = /var/log/ispconfig/httpd/*/error*
maxretry = 10
&lt;/code&gt;

Les fichiers de conf qui vont bien:

'''pure-ftpd.conf''' déjà inclu dans la configuration de base

'''dovecot-pop3imap.conf''' déjà inclu dans la configuration de base

'''webmin-auth.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
# Rule by : Delvit Guillaume
#
# $Revision: 728 $
#

[Definition]

# patern :      webmin[15673]: Non-existent login as toto from 86.0.6.217
#               webmin[29544]: Invalid login as root from 86.0.6.217
#
# Option:  failregex
# Notes.:  regex to match the password failure messages in the logfile. The
#          host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P&lt;host&gt;[\w\-.^_]+)
# Values:  TEXT
#
failregex = webmin.* Non-existent login as .+ from &lt;HOST&gt;$
            webmin.* Invalid login as .+ from &lt;HOST&gt;$

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =
&lt;/code&gt;

'''roundcube.conf'''
&lt;code&gt;
[Definition]
failregex = FAILED login for .*. from &lt;HOST&gt;
ignoreregex =
&lt;/code&gt;

'''squirrelmail.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Bill Landry ((email_protected))
#
# $Revision: 510 $

[Definition]

# Option: failregex
# Notes.: regex to match the password failures messages in the logfile. The
#         host must be matched by a group named &quot;host&quot;. The tag &quot;&quot; can
#         be used for standard IP/hostname matching and is only an alias for
#         (?:::f{4,6}:)?(?P\S+)
# Values: TEXT

failregex = \[LOGIN_ERROR\].*from &lt;HOST&gt;: Utilisateur inconnu ou mot de passe incorrect

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT

ignoreregex =
&lt;/code&gt;

'''apache-admin.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 471 $
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
# host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
# be used for standard IP/hostname matching.
# Values: TEXT
# [client x.x.x.x] File does not exist: /home/www/admin/admin,
failregex = [[]client &lt;HOST&gt;[]] File does not exist: .*admin|PMA|mysql

#
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
&lt;/code&gt;

'''apache-404.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 471 $
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
# host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
# be used for standard IP/hostname matching.
# Values: TEXT
# [client x.x.x.x] File does not exist: /home/www/admin/admin,
failregex = [[]client &lt;HOST&gt;[]] File does not exist: .*
#
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
&lt;/code&gt;

'''Option très intéressante pour les logs multiples'''

Vous avez la possibilité (si vos logs sont &quot;dispersés&quot;) de mettre des chemins &quot;relatifs&quot; - Vous pouvez utiliser les * (étoiles)

Par exemple, vos logs pour chaque site sont dispersés dans des répertoires différents...
Vous utiliserez alors le chemin suivant (tous les sous-répertoires dans /var/log/ispconfig/httpd/ seront alors pris en compte)

 logpath /var/log/ispconfig/httpd/*/error*

==== Plugins squirrelmail et rouncube ====

[http://mattrude.com/projects/roundcube-fail2ban-plugin/ Plugin roundcube-fail2ban-plugin]

[http://www.howtoforge.com/configuring-fail2ban-with-squirrelmail-on-debian-lenny-ispconfig-3 Plugin squirrel_logger]

== Test ==

=== Testez les règles ===

L'erreur commune est de se tromper de fichier log... Vérifiez et revérifiez que le fichier donné en &quot;logpath&quot; est le bon.
Ensuite testez vos règles avec la commande /usr/bin/fail2ban-regex

 # /usr/bin/fail2ban-regex /var/www/path/logs/userlogins /etc/fail2ban/filter.d/roundcube.conf

Exemple de sortie:
&lt;code&gt;
Running tests
=============

Use regex file : /etc/fail2ban/filter.d/roundcube.conf
Use log file   : /var/www/path/logs/userlogins


Results
=======

Failregex
|- Regular expressions:
|  [1] FAILED login for .*. from &lt;HOST&gt;
|
`- Number of matches:
   [1] 1 match(es)

Ignoreregex
|- Regular expressions:
|
`- Number of matches:

Summary
=======

Addresses found:
[1]
    41.xxx.xxx.xxx (Wed Dec 28 15:51:14 2011)

Date template hits:
0 hit(s): MONTH Day Hour:Minute:Second
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second Year
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second
0 hit(s): Year/Month/Day Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/MONTH/Year:Hour:Minute:Second
0 hit(s): Month/Day/Year:Hour:Minute:Second
0 hit(s): Year-Month-Day Hour:Minute:Second
2 hit(s): Day-MONTH-Year Hour:Minute:Second[.Millisecond]
0 hit(s): Day-Month-Year Hour:Minute:Second
0 hit(s): TAI64N
0 hit(s): Epoch
0 hit(s): ISO 8601
0 hit(s): Hour:Minute:Second
0 hit(s): &lt;Month/Day/Year@Hour:Minute:Second&gt;

Success, the total number of match is 1

However, look at the above section 'Running tests' which could contain important
information.
&lt;/code&gt;

=== Testez l'état des jails ===

Avec la commande /usr/bin/fail2ban-client vous pouvez vérifier l'état de vos &quot;jails&quot;:

 # /usr/bin/fail2ban-client status apache-404

Exemple de sortie:
&lt;code&gt;
Status for the jail: apache-404
|- filter
|  |- File list:        /var/log/path/error.log /var/log/path2/error.log /var/log/path2/error.log Etc...
|  |- Currently failed: 5
|  `- Total failed:     32
`- action
   |- Currently banned: 2
   |  `- IP list:       41.xxx.xxx.xxx 84.xxx.xxx.xxx 
   `- Total banned:     2
&lt;/code&gt;

=== Testez en violant une règle ===

Créez par exemple un répertoire dans votre serveur apache, rendez obligatoire l'identification, puis entrez plusieurs fois de suite un mot de passe erroné.
Vous devriez avoir dans vols logs ceci:

 tail -f /var/log/fail2ban.log

 2011-08-08 12:27:18,730 fail2ban.actions: WARNING [apache] Ban 10.9.11.150

Effectivement, iptables à bloqué votre ip:

 iptables -L

 Chain fail2ban-apache (1 references)
 target     prot opt source               destination         
 DROP       all  --  10.9.11.150          anywhere            
 RETURN     all  --  anywhere             anywhere

Au bout de 10 minutes (en fonction de ce que vous aurez précisé dans le configuration), l'IP sera de nouveau &quot;libérée&quot;:

 2011-08-08 12:37:19,585 fail2ban.actions: WARNING [apache] Unban 10.9.11.150

== Erreur au démarrage de fail2ban ==

Si vous surveillez plusieurs services, il existe un bug gênant sur fail2ban ([http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=554162 fail2ban: fails to load iptable rules with multiple jails]) - Il existe une solution :

Lorsque vous démarrerez fail2ban, surveillez ses logs, vous devriez avoir ceci:

 2011-08-08 16:44:40,564 fail2ban.jail   : INFO   Jail 'apache-noscript' started
 2011-08-08 16:44:40,810 fail2ban.jail   : INFO   Jail 'pam-generic' started
 2011-08-08 16:44:41,051 fail2ban.jail   : INFO   Jail 'xinetd-fail' started
 2011-08-08 16:44:41,269 fail2ban.jail   : INFO   Jail 'ssh-ddos' started
 2011-08-08 16:44:41,506 fail2ban.jail   : INFO   Jail 'apache-multiport' started
 2011-08-08 16:44:41,739 fail2ban.jail   : INFO   Jail 'apache-overflows' started
 2011-08-08 16:44:41,976 fail2ban.jail   : INFO   Jail 'ssh' started
 2011-08-08 16:44:42,206 fail2ban.jail   : INFO   Jail 'postfix' started
 2011-08-08 16:44:42,448 fail2ban.jail   : INFO   Jail 'sasl' started
 2011-08-08 16:44:42,667 fail2ban.jail   : INFO   Jail 'apache' started

Si vous avez ce genre de message d'erreur:

 2011-08-08 12:22:52,286 fail2ban.actions.action: ERROR  iptables -N fail2ban-pam-generic
 iptables -A fail2ban-pam-generic -j RETURN
 iptables -I INPUT -p tcp -j fail2ban-pam-generic returned 400
 2011-08-08 15:06:04,467 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports 10122 -j fail2ban-ssh-ddos
 iptables -F fail2ban-ssh-ddos
 iptables -X fail2ban-ssh-ddos returned 100
 2011-08-08 15:06:10,027 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-overflows
 iptables -A fail2ban-apache-overflows -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows returned 200
 2011-08-08 15:06:10,224 fail2ban.actions.action: ERROR  iptables -N fail2ban-postfix
 iptables -A fail2ban-postfix -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp -j fail2ban-postfix returned 400
 2011-08-08 15:06:10,283 fail2ban.actions.action: ERROR  iptables -N fail2ban-sasl
 iptables -A fail2ban-sasl -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl returned 200
 2011-08-08 15:14:26,002 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows
 iptables -F fail2ban-apache-overflows
 iptables -X fail2ban-apache-overflows returned 100
 2011-08-08 15:14:28,374 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl
 iptables -F fail2ban-sasl
 iptables -X fail2ban-sasl returned 100
 2011-08-08 15:14:45,382 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-noscript
 iptables -A fail2ban-apache-noscript -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-noscript returned 400

Il existe deux solutions:

1) Modifier le fichier /usr/bin/fail2ban-client

'''Faite une sauvegarde de  auparavant...'''

Editez le fichier /usr/bin/fail2ban-client et ajoutez une temporisation (time.sleep(0.1)) à cet endroit:

        def __processCmd(self, cmd, showRet = True):
                beautifier = Beautifier()
                for c in cmd:
                        time.sleep(0.1)
                        beautifier.setInputCmd(c)

Si la temporisation à 0.1 ne suffit pas, mettez 0.2. et redémarrez fail2ban.

2) Installer la version testing (Fixed in version fail2ban/0.8.5-2)

== Liens externes ==

Je vous encourage à lire:

* La page de man de fail2ban
* [http://www.fail2ban.org/wiki/index.php/Main_Page Le Wiki de fail2ban - Très complet]

[[Utilisateur:Lol|Lol]] 8 août 2011 à 09:00 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>9m4xjsdnwkbp0xou2l1f6mj5m4brcgw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4023</id>
      <parentid>3911</parentid>
      <timestamp>2012-04-14T08:10:52Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Erreur au démarrage de fail2ban */ ipv6</comment>
      <text xml:space="preserve" bytes="18449">== Qu'est-ce que Fail2ban? ==
Fail2ban lit des fichiers de log comme /var/log/pwdfail ou /var/log/apache/error_log et bannit les adresses IP qui ont obtenu un trop grand nombre d'échecs lors de l'authentification. Il met à jour les règles du pare-feu pour rejeter cette adresse IP. Ces règles peuvent êtres défines par l'utilisateur. Fail2ban peut lire plusieurs fichiers de log comme ceux de sshd ou du serveur Apache.

== Installation ==

 apt-get install fail2ban

Par défaut, le port 22 (ssh) est surveillé, vous pouvez vérifier que les règles ipatbles ont bien prises en compte fail2ban:

 iptables -S | grep fail2ban
&lt;code&gt;
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh 
-A fail2ban-ssh -j RETURN
&lt;/code&gt;

== Configuration ==

Deux fichiers:

=== fail2ban.conf ===

Rien à faire dans ce fichier, vous pouvez laisser les options par défaut:

 /etc/fail2ban/fail2ban.conf

 loglevel = 3
 logtarget = /var/log/fail2ban.log
 socket = /var/run/fail2ban/fail2ban.sock

=== jail.conf ===

Ce fichier est beaucoup plus intéressant, il contient tous les services à monitorer, et vous allez le découvrir, fail2ban ne se limite pas à SSH...

 /etc/fail2ban/jail.conf

Vérifiez l'adresse d'envoi des mails d'avertissement:

 [DEFAULT]
 destemail = root@localhost

'''Erreur commune pour l'envoi des mail d'alertes'''

N'oubliez pas de modifier la variable action = %(action_)s
Et de la placer soit sur:

 action = %(action_mw)s

Soit sur

 action = %(action_mwl)s


Pour activer la surveillance d'un service, il suffit de placer la variable &quot;enabled&quot; à &quot;true&quot;

Par défaut la protection du service SSH est activée, pas les autres:
Si votre ssh n'écoute pas sur le port 22, pensez à le changer... (port = N° de port)

 [ssh]
 enabled = true
 port    = ssh
 filter  = sshd
 logpath  = /var/log/auth.log
 maxretry = 6

D'autres services, à activer en fonction de vos besoins:

 [xinetd-fail]
 enabled   = true 
 filter    = xinetd-fail
 port      = all
 banaction = iptables-multiport-log
 logpath   = /var/log/daemon.log
 maxretry  = 2

 [pam-generic]
 enabled = true
 filter  = pam-generic
 port = all
 banaction = iptables-allports
 port     = anyport
 logpath  = /var/log/auth.log
 maxretry = 6

 [ssh-ddos]
 enabled = true
 port    = ssh
 filter  = sshd-ddos
 logpath  = /var/log/auth.log
 maxretry = 6

 [apache]
 enabled = true
 port    = http,https
 filter  = apache-auth
 logpath = /var/log/apache*/*error.log
 maxretry = 6

 [apache-multiport]
 enabled   = true
 port      = http,https
 filter    = apache-auth
 logpath   = /var/log/apache*/*error.log
 maxretry  = 6

 [apache-noscript]
 enabled = true 
 port    = http,https
 filter  = apache-noscript
 logpath = /var/log/apache*/*error.log
 maxretry = 6

 [apache-overflows]
 enabled = true 
 port    = http,https
 filter  = apache-overflows
 logpath = /var/log/apache*/*error.log
 maxretry = 2

 [postfix]
 enabled  = true 
 port     = smtp,ssmtp
 filter   = postfix
 logpath  = /var/log/mail.log

 [sasl]
 enabled  = true 
 port     = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s
 filter   = sasl
 logpath  = /var/log/mail.log

n'oubliez pas de redémarrer fail2ban :

 # service fail2ban restart

=== jail.local ===

Le fichier jail.local vous permet de mettre vos règles personnelles. Voici quelques exemples:

&lt;code&gt;
[pure-ftpd]
enabled = true
port = ftp,ftp-data,ftps,ftps-data
filter = pure-ftpd
logpath = /var/log/messages
maxretry = 3

[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap, port=&quot;pop3,pop3s,imap,imaps&quot;, protocol=tcp]
logpath = /var/log/mail.log
maxretry = 5

[webmin-auth]
enabled  = true
port     = https,10000
filter   = webmin-auth
logpath  = /var/log/auth.log
maxretry = 3

# Plugin ''roundcube-fail2ban-plugin'' à installer
# 
[roundcube]
enabled  = true
port     = http,https
filter   = roundcube
action   = iptables-multiport[name=roundcube, port=&quot;http,https&quot;]
           sendmail-whois[name=roundcube, dest=root@localhost, sender=fail2ban@localhost]
logpath  = /var/www/path/logs/userlogins

# Plugin ''squirrel_logger'' à ajouter à squirrelmail
[squirrelmail]
enabled = true
port = http,https
filter = squirrelmail
logpath = /var/www/path/squirrelmail_access_log
bantime = 6000
maxretry = 4

# Règle anti-Kevin...
[apache-admin]
enabled = true
port = http
filter = apache-admin
logpath = /var/log/apache*/error*.log
maxretry = 6

# Règle anti-boulets...
[apache-404]
enabled = true
port = http
filter = apache-404
logpath = /var/log/ispconfig/httpd/*/error*
maxretry = 10
&lt;/code&gt;

Les fichiers de conf qui vont bien:

'''pure-ftpd.conf''' déjà inclu dans la configuration de base

'''dovecot-pop3imap.conf''' déjà inclu dans la configuration de base

'''webmin-auth.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
# Rule by : Delvit Guillaume
#
# $Revision: 728 $
#

[Definition]

# patern :      webmin[15673]: Non-existent login as toto from 86.0.6.217
#               webmin[29544]: Invalid login as root from 86.0.6.217
#
# Option:  failregex
# Notes.:  regex to match the password failure messages in the logfile. The
#          host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P&lt;host&gt;[\w\-.^_]+)
# Values:  TEXT
#
failregex = webmin.* Non-existent login as .+ from &lt;HOST&gt;$
            webmin.* Invalid login as .+ from &lt;HOST&gt;$

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =
&lt;/code&gt;

'''roundcube.conf'''
&lt;code&gt;
[Definition]
failregex = FAILED login for .*. from &lt;HOST&gt;
ignoreregex =
&lt;/code&gt;

'''squirrelmail.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Bill Landry ((email_protected))
#
# $Revision: 510 $

[Definition]

# Option: failregex
# Notes.: regex to match the password failures messages in the logfile. The
#         host must be matched by a group named &quot;host&quot;. The tag &quot;&quot; can
#         be used for standard IP/hostname matching and is only an alias for
#         (?:::f{4,6}:)?(?P\S+)
# Values: TEXT

failregex = \[LOGIN_ERROR\].*from &lt;HOST&gt;: Utilisateur inconnu ou mot de passe incorrect

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT

ignoreregex =
&lt;/code&gt;

'''apache-admin.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 471 $
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
# host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
# be used for standard IP/hostname matching.
# Values: TEXT
# [client x.x.x.x] File does not exist: /home/www/admin/admin,
failregex = [[]client &lt;HOST&gt;[]] File does not exist: .*admin|PMA|mysql

#
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
&lt;/code&gt;

'''apache-404.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 471 $
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
# host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
# be used for standard IP/hostname matching.
# Values: TEXT
# [client x.x.x.x] File does not exist: /home/www/admin/admin,
failregex = [[]client &lt;HOST&gt;[]] File does not exist: .*
#
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
&lt;/code&gt;

'''Option très intéressante pour les logs multiples'''

Vous avez la possibilité (si vos logs sont &quot;dispersés&quot;) de mettre des chemins &quot;relatifs&quot; - Vous pouvez utiliser les * (étoiles)

Par exemple, vos logs pour chaque site sont dispersés dans des répertoires différents...
Vous utiliserez alors le chemin suivant (tous les sous-répertoires dans /var/log/ispconfig/httpd/ seront alors pris en compte)

 logpath /var/log/ispconfig/httpd/*/error*

==== Plugins squirrelmail et rouncube ====

[http://mattrude.com/projects/roundcube-fail2ban-plugin/ Plugin roundcube-fail2ban-plugin]

[http://www.howtoforge.com/configuring-fail2ban-with-squirrelmail-on-debian-lenny-ispconfig-3 Plugin squirrel_logger]

== Test ==

=== Testez les règles ===

L'erreur commune est de se tromper de fichier log... Vérifiez et revérifiez que le fichier donné en &quot;logpath&quot; est le bon.
Ensuite testez vos règles avec la commande /usr/bin/fail2ban-regex

 # /usr/bin/fail2ban-regex /var/www/path/logs/userlogins /etc/fail2ban/filter.d/roundcube.conf

Exemple de sortie:
&lt;code&gt;
Running tests
=============

Use regex file : /etc/fail2ban/filter.d/roundcube.conf
Use log file   : /var/www/path/logs/userlogins


Results
=======

Failregex
|- Regular expressions:
|  [1] FAILED login for .*. from &lt;HOST&gt;
|
`- Number of matches:
   [1] 1 match(es)

Ignoreregex
|- Regular expressions:
|
`- Number of matches:

Summary
=======

Addresses found:
[1]
    41.xxx.xxx.xxx (Wed Dec 28 15:51:14 2011)

Date template hits:
0 hit(s): MONTH Day Hour:Minute:Second
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second Year
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second
0 hit(s): Year/Month/Day Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/MONTH/Year:Hour:Minute:Second
0 hit(s): Month/Day/Year:Hour:Minute:Second
0 hit(s): Year-Month-Day Hour:Minute:Second
2 hit(s): Day-MONTH-Year Hour:Minute:Second[.Millisecond]
0 hit(s): Day-Month-Year Hour:Minute:Second
0 hit(s): TAI64N
0 hit(s): Epoch
0 hit(s): ISO 8601
0 hit(s): Hour:Minute:Second
0 hit(s): &lt;Month/Day/Year@Hour:Minute:Second&gt;

Success, the total number of match is 1

However, look at the above section 'Running tests' which could contain important
information.
&lt;/code&gt;

=== Testez l'état des jails ===

Avec la commande /usr/bin/fail2ban-client vous pouvez vérifier l'état de vos &quot;jails&quot;:

 # /usr/bin/fail2ban-client status apache-404

Exemple de sortie:
&lt;code&gt;
Status for the jail: apache-404
|- filter
|  |- File list:        /var/log/path/error.log /var/log/path2/error.log /var/log/path2/error.log Etc...
|  |- Currently failed: 5
|  `- Total failed:     32
`- action
   |- Currently banned: 2
   |  `- IP list:       41.xxx.xxx.xxx 84.xxx.xxx.xxx 
   `- Total banned:     2
&lt;/code&gt;

=== Testez en violant une règle ===

Créez par exemple un répertoire dans votre serveur apache, rendez obligatoire l'identification, puis entrez plusieurs fois de suite un mot de passe erroné.
Vous devriez avoir dans vols logs ceci:

 tail -f /var/log/fail2ban.log

 2011-08-08 12:27:18,730 fail2ban.actions: WARNING [apache] Ban 10.9.11.150

Effectivement, iptables à bloqué votre ip:

 iptables -L

 Chain fail2ban-apache (1 references)
 target     prot opt source               destination         
 DROP       all  --  10.9.11.150          anywhere            
 RETURN     all  --  anywhere             anywhere

Au bout de 10 minutes (en fonction de ce que vous aurez précisé dans le configuration), l'IP sera de nouveau &quot;libérée&quot;:

 2011-08-08 12:37:19,585 fail2ban.actions: WARNING [apache] Unban 10.9.11.150

== Erreur au démarrage de fail2ban ==

Si vous surveillez plusieurs services, il existe un bug gênant sur fail2ban ([http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=554162 fail2ban: fails to load iptable rules with multiple jails]) - Il existe une solution :

Lorsque vous démarrerez fail2ban, surveillez ses logs, vous devriez avoir ceci:

 2011-08-08 16:44:40,564 fail2ban.jail   : INFO   Jail 'apache-noscript' started
 2011-08-08 16:44:40,810 fail2ban.jail   : INFO   Jail 'pam-generic' started
 2011-08-08 16:44:41,051 fail2ban.jail   : INFO   Jail 'xinetd-fail' started
 2011-08-08 16:44:41,269 fail2ban.jail   : INFO   Jail 'ssh-ddos' started
 2011-08-08 16:44:41,506 fail2ban.jail   : INFO   Jail 'apache-multiport' started
 2011-08-08 16:44:41,739 fail2ban.jail   : INFO   Jail 'apache-overflows' started
 2011-08-08 16:44:41,976 fail2ban.jail   : INFO   Jail 'ssh' started
 2011-08-08 16:44:42,206 fail2ban.jail   : INFO   Jail 'postfix' started
 2011-08-08 16:44:42,448 fail2ban.jail   : INFO   Jail 'sasl' started
 2011-08-08 16:44:42,667 fail2ban.jail   : INFO   Jail 'apache' started

Si vous avez ce genre de message d'erreur:

 2011-08-08 12:22:52,286 fail2ban.actions.action: ERROR  iptables -N fail2ban-pam-generic
 iptables -A fail2ban-pam-generic -j RETURN
 iptables -I INPUT -p tcp -j fail2ban-pam-generic returned 400
 2011-08-08 15:06:04,467 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports 10122 -j fail2ban-ssh-ddos
 iptables -F fail2ban-ssh-ddos
 iptables -X fail2ban-ssh-ddos returned 100
 2011-08-08 15:06:10,027 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-overflows
 iptables -A fail2ban-apache-overflows -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows returned 200
 2011-08-08 15:06:10,224 fail2ban.actions.action: ERROR  iptables -N fail2ban-postfix
 iptables -A fail2ban-postfix -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp -j fail2ban-postfix returned 400
 2011-08-08 15:06:10,283 fail2ban.actions.action: ERROR  iptables -N fail2ban-sasl
 iptables -A fail2ban-sasl -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl returned 200
 2011-08-08 15:14:26,002 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows
 iptables -F fail2ban-apache-overflows
 iptables -X fail2ban-apache-overflows returned 100
 2011-08-08 15:14:28,374 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl
 iptables -F fail2ban-sasl
 iptables -X fail2ban-sasl returned 100
 2011-08-08 15:14:45,382 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-noscript
 iptables -A fail2ban-apache-noscript -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-noscript returned 400

Il existe deux solutions:

1) Modifier le fichier /usr/bin/fail2ban-client

'''Faite une sauvegarde de  auparavant...'''

Editez le fichier /usr/bin/fail2ban-client et ajoutez une temporisation (time.sleep(0.1)) à cet endroit:

        def __processCmd(self, cmd, showRet = True):
                beautifier = Beautifier()
                for c in cmd:
                        time.sleep(0.1)
                        beautifier.setInputCmd(c)

Si la temporisation à 0.1 ne suffit pas, mettez 0.2. et redémarrez fail2ban.

2) Installer la version testing (Fixed in version fail2ban/0.8.5-2)


== Fail2ban et ipv6 (EXPERIMENTAL) ==

Vous le savez, l'ipv6 se généralise, lancement officiel le 6 juin 2012
Quid de fail2ban ? Malheureusement, fail2ban ne supporte pas encore l'ipv6.
Heureusement, il existe un patch qui permet d'avoir fail2ban activé sur votre ipv6...

Mode d'emploi:

Téléchargez le patch:
&lt;pre&gt;
wget http://thanatos.trollprod.org/sousites/fail2banv6/fail2ban-ipv6.tar.bz2
--2012-04-14 09:30:31--  http://thanatos.trollprod.org/sousites/fail2banv6/fail2ban-ipv6.tar.bz2
Résolution de thanatos.trollprod.org (thanatos.trollprod.org)... 94.23.14.97, 2001:41d0:2:f61::fed1:fe54
Connexion vers thanatos.trollprod.org (thanatos.trollprod.org)|94.23.14.97|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 2293 (2,2K) [application/x-bzip]
Sauvegarde en : «fail2ban-ipv6.tar.bz2»

100%[=============================================================================================&gt;] 2 293       --.-K/s   ds 0,001s  

2012-04-14 09:30:31 (2,98 MB/s) - «fail2ban-ipv6.tar.bz2» sauvegardé [2293/2293]
&lt;/pre&gt;

 mkdir fail2ban-ipv6
 tar xvjf fail2ban-ipv6.tar.bz2 -C fail2ban-ipv6

 cp /usr/share/fail2ban/server/filter.py /usr/share/fail2ban/server/filter.py.sos
 cp /usr/share/fail2ban/server/failregex.py /usr/share/fail2ban/server/failregex.py.sos

Testez les patch:

 cd /usr/share/fail2ban/server/

 root@nas:/usr/share/fail2ban/server# patch -p0 --dry-run &lt; /root/fail2ban-ipv6/patchfilter.patch
 patching file filter.py
 Hunk #1 succeeded at 525 (offset 14 lines).
 Hunk #2 succeeded at 549 (offset 14 lines).
 Hunk #3 succeeded at 580 (offset 14 lines).
   
 root@nas:/usr/share/fail2ban/server# patch -p0 --dry-run &lt; /root/fail2ban-ipv6/regex.patch 
 patching file failregex.py
 Hunk #1 succeeded at 47 (offset 3 lines).

Si le résultat est positif (pas d'erreur) lancez les patchs

 root@nas:/usr/share/fail2ban/server# patch -p0 &lt; /root/fail2ban-ipv6/patchfilter.patch
 patching file filter.py
 Hunk #1 succeeded at 525 (offset 14 lines).
 Hunk #2 succeeded at 549 (offset 14 lines).
 Hunk #3 succeeded at 580 (offset 14 lines).
 root@nas:/usr/share/fail2ban/server# patch -p0 &lt; /root/fail2ban-ipv6/regex.patch 
 patching file failregex.py
 Hunk #1 succeeded at 47 (offset 3 lines).

Copiez les fichiers nécessaires:

 root@nas:/usr/share/fail2ban/server# cp /root/fail2ban-ipv6/ip64tables.sh /usr/bin/
 root@nas:/usr/share/fail2ban/server# chmod 755 /usr/bin/ip64tables.sh
 root@nas:/usr/share/fail2ban/server# cp /root/fail2ban-ipv6/iptables46-multiport.conf /etc/fail2ban/action.d/
 root@nas:/usr/share/fail2ban/server# chmod 644 /etc/fail2ban/action.d/iptables46-multiport.conf

Créez le bloc de configuration:

 nano /etc/fail2ban/jail.conf

 ...
 [ssh-ip6tables]
 enabled = true
 filter  = sshd
 logpath  = /var/log/auth.log
 maxretry = 6
 action   = iptables46-multiport[name=SSH, port=22, protocol=tcp]
            sendmail-whois[name=SSH, dest=root, sender=fail2ban@mail.com]
 ...

Redémarrez fail2ban et vérifiez qu'il est actif:

 service fail2ban restart
 Restarting authentication failure monitor: fail2ban.
 ip6tables -S
 ...
 -N fail2ban-SSH
 -A INPUT -p tcp -m multiport --dports 22 -j fail2ban-SSH
 -A fail2ban-SSH -j RETURN

Avertissement:
# N'a pas encore été testé
# Ne pas activer la résolution de nom dans les logs

{{en}} [http://www.fail2ban.org/wiki/index.php/Fail2ban:Community_Portal#IPv6_Experimental_support Source - Wiki fail2ban]

== Liens externes ==

Je vous encourage à lire:

* La page de man de fail2ban
* [http://www.fail2ban.org/wiki/index.php/Main_Page Le Wiki de fail2ban - Très complet]

[[Utilisateur:Lol|Lol]] 8 août 2011 à 09:00 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>grdsszd5qc1g2vxg9wxvlxt326a3cm0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4271</id>
      <parentid>4023</parentid>
      <timestamp>2012-05-21T07:27:08Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Erreur au démarrage de fail2ban */ modif version</comment>
      <text xml:space="preserve" bytes="18532">== Qu'est-ce que Fail2ban? ==
Fail2ban lit des fichiers de log comme /var/log/pwdfail ou /var/log/apache/error_log et bannit les adresses IP qui ont obtenu un trop grand nombre d'échecs lors de l'authentification. Il met à jour les règles du pare-feu pour rejeter cette adresse IP. Ces règles peuvent êtres défines par l'utilisateur. Fail2ban peut lire plusieurs fichiers de log comme ceux de sshd ou du serveur Apache.

== Installation ==

 apt-get install fail2ban

Par défaut, le port 22 (ssh) est surveillé, vous pouvez vérifier que les règles ipatbles ont bien prises en compte fail2ban:

 iptables -S | grep fail2ban
&lt;code&gt;
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh 
-A fail2ban-ssh -j RETURN
&lt;/code&gt;

== Configuration ==

Deux fichiers:

=== fail2ban.conf ===

Rien à faire dans ce fichier, vous pouvez laisser les options par défaut:

 /etc/fail2ban/fail2ban.conf

 loglevel = 3
 logtarget = /var/log/fail2ban.log
 socket = /var/run/fail2ban/fail2ban.sock

=== jail.conf ===

Ce fichier est beaucoup plus intéressant, il contient tous les services à monitorer, et vous allez le découvrir, fail2ban ne se limite pas à SSH...

 /etc/fail2ban/jail.conf

Vérifiez l'adresse d'envoi des mails d'avertissement:

 [DEFAULT]
 destemail = root@localhost

'''Erreur commune pour l'envoi des mail d'alertes'''

N'oubliez pas de modifier la variable action = %(action_)s
Et de la placer soit sur:

 action = %(action_mw)s

Soit sur

 action = %(action_mwl)s


Pour activer la surveillance d'un service, il suffit de placer la variable &quot;enabled&quot; à &quot;true&quot;

Par défaut la protection du service SSH est activée, pas les autres:
Si votre ssh n'écoute pas sur le port 22, pensez à le changer... (port = N° de port)

 [ssh]
 enabled = true
 port    = ssh
 filter  = sshd
 logpath  = /var/log/auth.log
 maxretry = 6

D'autres services, à activer en fonction de vos besoins:

 [xinetd-fail]
 enabled   = true 
 filter    = xinetd-fail
 port      = all
 banaction = iptables-multiport-log
 logpath   = /var/log/daemon.log
 maxretry  = 2

 [pam-generic]
 enabled = true
 filter  = pam-generic
 port = all
 banaction = iptables-allports
 port     = anyport
 logpath  = /var/log/auth.log
 maxretry = 6

 [ssh-ddos]
 enabled = true
 port    = ssh
 filter  = sshd-ddos
 logpath  = /var/log/auth.log
 maxretry = 6

 [apache]
 enabled = true
 port    = http,https
 filter  = apache-auth
 logpath = /var/log/apache*/*error.log
 maxretry = 6

 [apache-multiport]
 enabled   = true
 port      = http,https
 filter    = apache-auth
 logpath   = /var/log/apache*/*error.log
 maxretry  = 6

 [apache-noscript]
 enabled = true 
 port    = http,https
 filter  = apache-noscript
 logpath = /var/log/apache*/*error.log
 maxretry = 6

 [apache-overflows]
 enabled = true 
 port    = http,https
 filter  = apache-overflows
 logpath = /var/log/apache*/*error.log
 maxretry = 2

 [postfix]
 enabled  = true 
 port     = smtp,ssmtp
 filter   = postfix
 logpath  = /var/log/mail.log

 [sasl]
 enabled  = true 
 port     = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s
 filter   = sasl
 logpath  = /var/log/mail.log

n'oubliez pas de redémarrer fail2ban :

 # service fail2ban restart

=== jail.local ===

Le fichier jail.local vous permet de mettre vos règles personnelles. Voici quelques exemples:

&lt;code&gt;
[pure-ftpd]
enabled = true
port = ftp,ftp-data,ftps,ftps-data
filter = pure-ftpd
logpath = /var/log/messages
maxretry = 3

[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap, port=&quot;pop3,pop3s,imap,imaps&quot;, protocol=tcp]
logpath = /var/log/mail.log
maxretry = 5

[webmin-auth]
enabled  = true
port     = https,10000
filter   = webmin-auth
logpath  = /var/log/auth.log
maxretry = 3

# Plugin ''roundcube-fail2ban-plugin'' à installer
# 
[roundcube]
enabled  = true
port     = http,https
filter   = roundcube
action   = iptables-multiport[name=roundcube, port=&quot;http,https&quot;]
           sendmail-whois[name=roundcube, dest=root@localhost, sender=fail2ban@localhost]
logpath  = /var/www/path/logs/userlogins

# Plugin ''squirrel_logger'' à ajouter à squirrelmail
[squirrelmail]
enabled = true
port = http,https
filter = squirrelmail
logpath = /var/www/path/squirrelmail_access_log
bantime = 6000
maxretry = 4

# Règle anti-Kevin...
[apache-admin]
enabled = true
port = http
filter = apache-admin
logpath = /var/log/apache*/error*.log
maxretry = 6

# Règle anti-boulets...
[apache-404]
enabled = true
port = http
filter = apache-404
logpath = /var/log/ispconfig/httpd/*/error*
maxretry = 10
&lt;/code&gt;

Les fichiers de conf qui vont bien:

'''pure-ftpd.conf''' déjà inclu dans la configuration de base

'''dovecot-pop3imap.conf''' déjà inclu dans la configuration de base

'''webmin-auth.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
# Rule by : Delvit Guillaume
#
# $Revision: 728 $
#

[Definition]

# patern :      webmin[15673]: Non-existent login as toto from 86.0.6.217
#               webmin[29544]: Invalid login as root from 86.0.6.217
#
# Option:  failregex
# Notes.:  regex to match the password failure messages in the logfile. The
#          host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P&lt;host&gt;[\w\-.^_]+)
# Values:  TEXT
#
failregex = webmin.* Non-existent login as .+ from &lt;HOST&gt;$
            webmin.* Invalid login as .+ from &lt;HOST&gt;$

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =
&lt;/code&gt;

'''roundcube.conf'''
&lt;code&gt;
[Definition]
failregex = FAILED login for .*. from &lt;HOST&gt;
ignoreregex =
&lt;/code&gt;

'''squirrelmail.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Bill Landry ((email_protected))
#
# $Revision: 510 $

[Definition]

# Option: failregex
# Notes.: regex to match the password failures messages in the logfile. The
#         host must be matched by a group named &quot;host&quot;. The tag &quot;&quot; can
#         be used for standard IP/hostname matching and is only an alias for
#         (?:::f{4,6}:)?(?P\S+)
# Values: TEXT

failregex = \[LOGIN_ERROR\].*from &lt;HOST&gt;: Utilisateur inconnu ou mot de passe incorrect

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT

ignoreregex =
&lt;/code&gt;

'''apache-admin.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 471 $
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
# host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
# be used for standard IP/hostname matching.
# Values: TEXT
# [client x.x.x.x] File does not exist: /home/www/admin/admin,
failregex = [[]client &lt;HOST&gt;[]] File does not exist: .*admin|PMA|mysql

#
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
&lt;/code&gt;

'''apache-404.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 471 $
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
# host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
# be used for standard IP/hostname matching.
# Values: TEXT
# [client x.x.x.x] File does not exist: /home/www/admin/admin,
failregex = [[]client &lt;HOST&gt;[]] File does not exist: .*
#
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
&lt;/code&gt;

'''Option très intéressante pour les logs multiples'''

Vous avez la possibilité (si vos logs sont &quot;dispersés&quot;) de mettre des chemins &quot;relatifs&quot; - Vous pouvez utiliser les * (étoiles)

Par exemple, vos logs pour chaque site sont dispersés dans des répertoires différents...
Vous utiliserez alors le chemin suivant (tous les sous-répertoires dans /var/log/ispconfig/httpd/ seront alors pris en compte)

 logpath /var/log/ispconfig/httpd/*/error*

==== Plugins squirrelmail et rouncube ====

[http://mattrude.com/projects/roundcube-fail2ban-plugin/ Plugin roundcube-fail2ban-plugin]

[http://www.howtoforge.com/configuring-fail2ban-with-squirrelmail-on-debian-lenny-ispconfig-3 Plugin squirrel_logger]

== Test ==

=== Testez les règles ===

L'erreur commune est de se tromper de fichier log... Vérifiez et revérifiez que le fichier donné en &quot;logpath&quot; est le bon.
Ensuite testez vos règles avec la commande /usr/bin/fail2ban-regex

 # /usr/bin/fail2ban-regex /var/www/path/logs/userlogins /etc/fail2ban/filter.d/roundcube.conf

Exemple de sortie:
&lt;code&gt;
Running tests
=============

Use regex file : /etc/fail2ban/filter.d/roundcube.conf
Use log file   : /var/www/path/logs/userlogins


Results
=======

Failregex
|- Regular expressions:
|  [1] FAILED login for .*. from &lt;HOST&gt;
|
`- Number of matches:
   [1] 1 match(es)

Ignoreregex
|- Regular expressions:
|
`- Number of matches:

Summary
=======

Addresses found:
[1]
    41.xxx.xxx.xxx (Wed Dec 28 15:51:14 2011)

Date template hits:
0 hit(s): MONTH Day Hour:Minute:Second
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second Year
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second
0 hit(s): Year/Month/Day Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/MONTH/Year:Hour:Minute:Second
0 hit(s): Month/Day/Year:Hour:Minute:Second
0 hit(s): Year-Month-Day Hour:Minute:Second
2 hit(s): Day-MONTH-Year Hour:Minute:Second[.Millisecond]
0 hit(s): Day-Month-Year Hour:Minute:Second
0 hit(s): TAI64N
0 hit(s): Epoch
0 hit(s): ISO 8601
0 hit(s): Hour:Minute:Second
0 hit(s): &lt;Month/Day/Year@Hour:Minute:Second&gt;

Success, the total number of match is 1

However, look at the above section 'Running tests' which could contain important
information.
&lt;/code&gt;

=== Testez l'état des jails ===

Avec la commande /usr/bin/fail2ban-client vous pouvez vérifier l'état de vos &quot;jails&quot;:

 # /usr/bin/fail2ban-client status apache-404

Exemple de sortie:
&lt;code&gt;
Status for the jail: apache-404
|- filter
|  |- File list:        /var/log/path/error.log /var/log/path2/error.log /var/log/path2/error.log Etc...
|  |- Currently failed: 5
|  `- Total failed:     32
`- action
   |- Currently banned: 2
   |  `- IP list:       41.xxx.xxx.xxx 84.xxx.xxx.xxx 
   `- Total banned:     2
&lt;/code&gt;

=== Testez en violant une règle ===

Créez par exemple un répertoire dans votre serveur apache, rendez obligatoire l'identification, puis entrez plusieurs fois de suite un mot de passe erroné.
Vous devriez avoir dans vols logs ceci:

 tail -f /var/log/fail2ban.log

 2011-08-08 12:27:18,730 fail2ban.actions: WARNING [apache] Ban 10.9.11.150

Effectivement, iptables à bloqué votre ip:

 iptables -L

 Chain fail2ban-apache (1 references)
 target     prot opt source               destination         
 DROP       all  --  10.9.11.150          anywhere            
 RETURN     all  --  anywhere             anywhere

Au bout de 10 minutes (en fonction de ce que vous aurez précisé dans le configuration), l'IP sera de nouveau &quot;libérée&quot;:

 2011-08-08 12:37:19,585 fail2ban.actions: WARNING [apache] Unban 10.9.11.150

== Erreur au démarrage de fail2ban ==

Si vous surveillez plusieurs services, il existe un bug gênant sur fail2ban ([http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=554162 fail2ban: fails to load iptable rules with multiple jails]) - Il existe une solution :

Lorsque vous démarrerez fail2ban, surveillez ses logs, vous devriez avoir ceci:

 2011-08-08 16:44:40,564 fail2ban.jail   : INFO   Jail 'apache-noscript' started
 2011-08-08 16:44:40,810 fail2ban.jail   : INFO   Jail 'pam-generic' started
 2011-08-08 16:44:41,051 fail2ban.jail   : INFO   Jail 'xinetd-fail' started
 2011-08-08 16:44:41,269 fail2ban.jail   : INFO   Jail 'ssh-ddos' started
 2011-08-08 16:44:41,506 fail2ban.jail   : INFO   Jail 'apache-multiport' started
 2011-08-08 16:44:41,739 fail2ban.jail   : INFO   Jail 'apache-overflows' started
 2011-08-08 16:44:41,976 fail2ban.jail   : INFO   Jail 'ssh' started
 2011-08-08 16:44:42,206 fail2ban.jail   : INFO   Jail 'postfix' started
 2011-08-08 16:44:42,448 fail2ban.jail   : INFO   Jail 'sasl' started
 2011-08-08 16:44:42,667 fail2ban.jail   : INFO   Jail 'apache' started

Si vous avez ce genre de message d'erreur:

 2011-08-08 12:22:52,286 fail2ban.actions.action: ERROR  iptables -N fail2ban-pam-generic
 iptables -A fail2ban-pam-generic -j RETURN
 iptables -I INPUT -p tcp -j fail2ban-pam-generic returned 400
 2011-08-08 15:06:04,467 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports 10122 -j fail2ban-ssh-ddos
 iptables -F fail2ban-ssh-ddos
 iptables -X fail2ban-ssh-ddos returned 100
 2011-08-08 15:06:10,027 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-overflows
 iptables -A fail2ban-apache-overflows -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows returned 200
 2011-08-08 15:06:10,224 fail2ban.actions.action: ERROR  iptables -N fail2ban-postfix
 iptables -A fail2ban-postfix -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp -j fail2ban-postfix returned 400
 2011-08-08 15:06:10,283 fail2ban.actions.action: ERROR  iptables -N fail2ban-sasl
 iptables -A fail2ban-sasl -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl returned 200
 2011-08-08 15:14:26,002 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows
 iptables -F fail2ban-apache-overflows
 iptables -X fail2ban-apache-overflows returned 100
 2011-08-08 15:14:28,374 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl
 iptables -F fail2ban-sasl
 iptables -X fail2ban-sasl returned 100
 2011-08-08 15:14:45,382 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-noscript
 iptables -A fail2ban-apache-noscript -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-noscript returned 400

Il existe deux solutions:

1) Modifier le fichier /usr/bin/fail2ban-client

'''Faite une sauvegarde de  auparavant...'''

Editez le fichier /usr/bin/fail2ban-client et ajoutez une temporisation (time.sleep(0.1)) à cet endroit:

        def __processCmd(self, cmd, showRet = True):
                beautifier = Beautifier()
                for c in cmd:
                        time.sleep(0.1)
                        beautifier.setInputCmd(c)

Si la temporisation à 0.1 ne suffit pas, mettez 0.2. et redémarrez fail2ban.

2) Installer une version supérieure (Fixed in version fail2ban/0.8.5-2)

Installer la version testing (8.6-3 0) ou celle des backports (8.6-3~bpo60+1)

== Fail2ban et ipv6 (EXPERIMENTAL) ==

Vous le savez, l'ipv6 se généralise, lancement officiel le 6 juin 2012
Quid de fail2ban ? Malheureusement, fail2ban ne supporte pas encore l'ipv6.
Heureusement, il existe un patch qui permet d'avoir fail2ban activé sur votre ipv6...

Mode d'emploi:

Téléchargez le patch:
&lt;pre&gt;
wget http://thanatos.trollprod.org/sousites/fail2banv6/fail2ban-ipv6.tar.bz2
--2012-04-14 09:30:31--  http://thanatos.trollprod.org/sousites/fail2banv6/fail2ban-ipv6.tar.bz2
Résolution de thanatos.trollprod.org (thanatos.trollprod.org)... 94.23.14.97, 2001:41d0:2:f61::fed1:fe54
Connexion vers thanatos.trollprod.org (thanatos.trollprod.org)|94.23.14.97|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 2293 (2,2K) [application/x-bzip]
Sauvegarde en : «fail2ban-ipv6.tar.bz2»

100%[=============================================================================================&gt;] 2 293       --.-K/s   ds 0,001s  

2012-04-14 09:30:31 (2,98 MB/s) - «fail2ban-ipv6.tar.bz2» sauvegardé [2293/2293]
&lt;/pre&gt;

 mkdir fail2ban-ipv6
 tar xvjf fail2ban-ipv6.tar.bz2 -C fail2ban-ipv6

 cp /usr/share/fail2ban/server/filter.py /usr/share/fail2ban/server/filter.py.sos
 cp /usr/share/fail2ban/server/failregex.py /usr/share/fail2ban/server/failregex.py.sos

Testez les patch:

 cd /usr/share/fail2ban/server/

 root@nas:/usr/share/fail2ban/server# patch -p0 --dry-run &lt; /root/fail2ban-ipv6/patchfilter.patch
 patching file filter.py
 Hunk #1 succeeded at 525 (offset 14 lines).
 Hunk #2 succeeded at 549 (offset 14 lines).
 Hunk #3 succeeded at 580 (offset 14 lines).
   
 root@nas:/usr/share/fail2ban/server# patch -p0 --dry-run &lt; /root/fail2ban-ipv6/regex.patch 
 patching file failregex.py
 Hunk #1 succeeded at 47 (offset 3 lines).

Si le résultat est positif (pas d'erreur) lancez les patchs

 root@nas:/usr/share/fail2ban/server# patch -p0 &lt; /root/fail2ban-ipv6/patchfilter.patch
 patching file filter.py
 Hunk #1 succeeded at 525 (offset 14 lines).
 Hunk #2 succeeded at 549 (offset 14 lines).
 Hunk #3 succeeded at 580 (offset 14 lines).
 root@nas:/usr/share/fail2ban/server# patch -p0 &lt; /root/fail2ban-ipv6/regex.patch 
 patching file failregex.py
 Hunk #1 succeeded at 47 (offset 3 lines).

Copiez les fichiers nécessaires:

 root@nas:/usr/share/fail2ban/server# cp /root/fail2ban-ipv6/ip64tables.sh /usr/bin/
 root@nas:/usr/share/fail2ban/server# chmod 755 /usr/bin/ip64tables.sh
 root@nas:/usr/share/fail2ban/server# cp /root/fail2ban-ipv6/iptables46-multiport.conf /etc/fail2ban/action.d/
 root@nas:/usr/share/fail2ban/server# chmod 644 /etc/fail2ban/action.d/iptables46-multiport.conf

Créez le bloc de configuration:

 nano /etc/fail2ban/jail.conf

 ...
 [ssh-ip6tables]
 enabled = true
 filter  = sshd
 logpath  = /var/log/auth.log
 maxretry = 6
 action   = iptables46-multiport[name=SSH, port=22, protocol=tcp]
            sendmail-whois[name=SSH, dest=root, sender=fail2ban@mail.com]
 ...

Redémarrez fail2ban et vérifiez qu'il est actif:

 service fail2ban restart
 Restarting authentication failure monitor: fail2ban.
 ip6tables -S
 ...
 -N fail2ban-SSH
 -A INPUT -p tcp -m multiport --dports 22 -j fail2ban-SSH
 -A fail2ban-SSH -j RETURN

Avertissement:
# N'a pas encore été testé
# Ne pas activer la résolution de nom dans les logs

{{en}} [http://www.fail2ban.org/wiki/index.php/Fail2ban:Community_Portal#IPv6_Experimental_support Source - Wiki fail2ban]

== Liens externes ==

Je vous encourage à lire:

* La page de man de fail2ban
* [http://www.fail2ban.org/wiki/index.php/Main_Page Le Wiki de fail2ban - Très complet]

[[Utilisateur:Lol|Lol]] 8 août 2011 à 09:00 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>5vmymvy40iv13m47aqfpjrxfxui8uhn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4279</id>
      <parentid>4271</parentid>
      <timestamp>2012-05-28T05:51:28Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Plugins squirrelmail et rouncube */ apache-dosevasive</comment>
      <text xml:space="preserve" bytes="19631">== Qu'est-ce que Fail2ban? ==
Fail2ban lit des fichiers de log comme /var/log/pwdfail ou /var/log/apache/error_log et bannit les adresses IP qui ont obtenu un trop grand nombre d'échecs lors de l'authentification. Il met à jour les règles du pare-feu pour rejeter cette adresse IP. Ces règles peuvent êtres défines par l'utilisateur. Fail2ban peut lire plusieurs fichiers de log comme ceux de sshd ou du serveur Apache.

== Installation ==

 apt-get install fail2ban

Par défaut, le port 22 (ssh) est surveillé, vous pouvez vérifier que les règles ipatbles ont bien prises en compte fail2ban:

 iptables -S | grep fail2ban
&lt;code&gt;
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh 
-A fail2ban-ssh -j RETURN
&lt;/code&gt;

== Configuration ==

Deux fichiers:

=== fail2ban.conf ===

Rien à faire dans ce fichier, vous pouvez laisser les options par défaut:

 /etc/fail2ban/fail2ban.conf

 loglevel = 3
 logtarget = /var/log/fail2ban.log
 socket = /var/run/fail2ban/fail2ban.sock

=== jail.conf ===

Ce fichier est beaucoup plus intéressant, il contient tous les services à monitorer, et vous allez le découvrir, fail2ban ne se limite pas à SSH...

 /etc/fail2ban/jail.conf

Vérifiez l'adresse d'envoi des mails d'avertissement:

 [DEFAULT]
 destemail = root@localhost

'''Erreur commune pour l'envoi des mail d'alertes'''

N'oubliez pas de modifier la variable action = %(action_)s
Et de la placer soit sur:

 action = %(action_mw)s

Soit sur

 action = %(action_mwl)s


Pour activer la surveillance d'un service, il suffit de placer la variable &quot;enabled&quot; à &quot;true&quot;

Par défaut la protection du service SSH est activée, pas les autres:
Si votre ssh n'écoute pas sur le port 22, pensez à le changer... (port = N° de port)

 [ssh]
 enabled = true
 port    = ssh
 filter  = sshd
 logpath  = /var/log/auth.log
 maxretry = 6

D'autres services, à activer en fonction de vos besoins:

 [xinetd-fail]
 enabled   = true 
 filter    = xinetd-fail
 port      = all
 banaction = iptables-multiport-log
 logpath   = /var/log/daemon.log
 maxretry  = 2

 [pam-generic]
 enabled = true
 filter  = pam-generic
 port = all
 banaction = iptables-allports
 port     = anyport
 logpath  = /var/log/auth.log
 maxretry = 6

 [ssh-ddos]
 enabled = true
 port    = ssh
 filter  = sshd-ddos
 logpath  = /var/log/auth.log
 maxretry = 6

 [apache]
 enabled = true
 port    = http,https
 filter  = apache-auth
 logpath = /var/log/apache*/*error.log
 maxretry = 6

 [apache-multiport]
 enabled   = true
 port      = http,https
 filter    = apache-auth
 logpath   = /var/log/apache*/*error.log
 maxretry  = 6

 [apache-noscript]
 enabled = true 
 port    = http,https
 filter  = apache-noscript
 logpath = /var/log/apache*/*error.log
 maxretry = 6

 [apache-overflows]
 enabled = true 
 port    = http,https
 filter  = apache-overflows
 logpath = /var/log/apache*/*error.log
 maxretry = 2

 [postfix]
 enabled  = true 
 port     = smtp,ssmtp
 filter   = postfix
 logpath  = /var/log/mail.log

 [sasl]
 enabled  = true 
 port     = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s
 filter   = sasl
 logpath  = /var/log/mail.log

n'oubliez pas de redémarrer fail2ban :

 # service fail2ban restart

=== jail.local ===

Le fichier jail.local vous permet de mettre vos règles personnelles. Voici quelques exemples:

&lt;code&gt;
[pure-ftpd]
enabled = true
port = ftp,ftp-data,ftps,ftps-data
filter = pure-ftpd
logpath = /var/log/messages
maxretry = 3

[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap, port=&quot;pop3,pop3s,imap,imaps&quot;, protocol=tcp]
logpath = /var/log/mail.log
maxretry = 5

[webmin-auth]
enabled  = true
port     = https,10000
filter   = webmin-auth
logpath  = /var/log/auth.log
maxretry = 3

# Plugin ''roundcube-fail2ban-plugin'' à installer
# 
[roundcube]
enabled  = true
port     = http,https
filter   = roundcube
action   = iptables-multiport[name=roundcube, port=&quot;http,https&quot;]
           sendmail-whois[name=roundcube, dest=root@localhost, sender=fail2ban@localhost]
logpath  = /var/www/path/logs/userlogins

# Plugin ''squirrel_logger'' à ajouter à squirrelmail
[squirrelmail]
enabled = true
port = http,https
filter = squirrelmail
logpath = /var/www/path/squirrelmail_access_log
bantime = 6000
maxretry = 4

# Règle anti-Kevin...
[apache-admin]
enabled = true
port = http
filter = apache-admin
logpath = /var/log/apache*/error*.log
maxretry = 6

# Règle anti-boulets...
[apache-404]
enabled = true
port = http
filter = apache-404
logpath = /var/log/ispconfig/httpd/*/error*
maxretry = 10
&lt;/code&gt;

Les fichiers de conf qui vont bien:

'''pure-ftpd.conf''' déjà inclu dans la configuration de base

'''dovecot-pop3imap.conf''' déjà inclu dans la configuration de base

'''webmin-auth.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
# Rule by : Delvit Guillaume
#
# $Revision: 728 $
#

[Definition]

# patern :      webmin[15673]: Non-existent login as toto from 86.0.6.217
#               webmin[29544]: Invalid login as root from 86.0.6.217
#
# Option:  failregex
# Notes.:  regex to match the password failure messages in the logfile. The
#          host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P&lt;host&gt;[\w\-.^_]+)
# Values:  TEXT
#
failregex = webmin.* Non-existent login as .+ from &lt;HOST&gt;$
            webmin.* Invalid login as .+ from &lt;HOST&gt;$

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =
&lt;/code&gt;

'''roundcube.conf'''
&lt;code&gt;
[Definition]
failregex = FAILED login for .*. from &lt;HOST&gt;
ignoreregex =
&lt;/code&gt;

'''squirrelmail.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Bill Landry ((email_protected))
#
# $Revision: 510 $

[Definition]

# Option: failregex
# Notes.: regex to match the password failures messages in the logfile. The
#         host must be matched by a group named &quot;host&quot;. The tag &quot;&quot; can
#         be used for standard IP/hostname matching and is only an alias for
#         (?:::f{4,6}:)?(?P\S+)
# Values: TEXT

failregex = \[LOGIN_ERROR\].*from &lt;HOST&gt;: Utilisateur inconnu ou mot de passe incorrect

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT

ignoreregex =
&lt;/code&gt;

'''apache-admin.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 471 $
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
# host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
# be used for standard IP/hostname matching.
# Values: TEXT
# [client x.x.x.x] File does not exist: /home/www/admin/admin,
failregex = [[]client &lt;HOST&gt;[]] File does not exist: .*admin|PMA|mysql

#
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
&lt;/code&gt;

'''apache-404.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 471 $
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
# host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
# be used for standard IP/hostname matching.
# Values: TEXT
# [client x.x.x.x] File does not exist: /home/www/admin/admin,
failregex = [[]client &lt;HOST&gt;[]] File does not exist: .*
#
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
&lt;/code&gt;

'''Option très intéressante pour les logs multiples'''

Vous avez la possibilité (si vos logs sont &quot;dispersés&quot;) de mettre des chemins &quot;relatifs&quot; - Vous pouvez utiliser les * (étoiles)

Par exemple, vos logs pour chaque site sont dispersés dans des répertoires différents...
Vous utiliserez alors le chemin suivant (tous les sous-répertoires dans /var/log/ispconfig/httpd/ seront alors pris en compte)

 logpath /var/log/ispconfig/httpd/*/error*

==== Plugins squirrelmail et rouncube ====

[http://mattrude.com/projects/roundcube-fail2ban-plugin/ Plugin roundcube-fail2ban-plugin]

[http://www.howtoforge.com/configuring-fail2ban-with-squirrelmail-on-debian-lenny-ispconfig-3 Plugin squirrel_logger]

==== Fail2ban avec mod-evasive ====

Si vous utilisez mod-evasive, le module de protection contre les attaques Ddos de apache2, vous aurez peut-etre envie d'ajouter un filtre à fail2ban:

 # $EDITOR /etc/fail2ban/filter.d/apache-dosevasive.conf 
&lt;pre&gt;
# Fail2Ban configuration file
#
# Author: Xela
#
# $Revision: 728 $
#

[Definition]

# Option:  failregex
# Notes.:  regex to match the Forbidden log entrys in apache error.log
#          maybe (but not only) provided by mod_evasive
#
# Values:  TEXT
#
failregex = ^\[[^\]]*\]\s+\[error\]\s+\[client \] client denied by server configuration:\s

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =
&lt;/pre&gt;

Ajoutez ensuite ce bloc à /etc/fail2ban/jail.local (adaptez l'emplacement du fichier log à surveiller en fonction de votre configuration)
&lt;pre&gt;
[apache-dosevasive]

enabled = true
filter  = apache-dosevasive
action = iptables-allports[name=dos]
logpath = /var/log/ispconfig/httpd/*/error*
#logpath = /var/log/apache*/*error.log
bantime = 600
maxretry = 10
&lt;/pre&gt;

== Test ==

=== Testez les règles ===

L'erreur commune est de se tromper de fichier log... Vérifiez et revérifiez que le fichier donné en &quot;logpath&quot; est le bon.
Ensuite testez vos règles avec la commande /usr/bin/fail2ban-regex

 # /usr/bin/fail2ban-regex /var/www/path/logs/userlogins /etc/fail2ban/filter.d/roundcube.conf

Exemple de sortie:
&lt;code&gt;
Running tests
=============

Use regex file : /etc/fail2ban/filter.d/roundcube.conf
Use log file   : /var/www/path/logs/userlogins


Results
=======

Failregex
|- Regular expressions:
|  [1] FAILED login for .*. from &lt;HOST&gt;
|
`- Number of matches:
   [1] 1 match(es)

Ignoreregex
|- Regular expressions:
|
`- Number of matches:

Summary
=======

Addresses found:
[1]
    41.xxx.xxx.xxx (Wed Dec 28 15:51:14 2011)

Date template hits:
0 hit(s): MONTH Day Hour:Minute:Second
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second Year
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second
0 hit(s): Year/Month/Day Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/MONTH/Year:Hour:Minute:Second
0 hit(s): Month/Day/Year:Hour:Minute:Second
0 hit(s): Year-Month-Day Hour:Minute:Second
2 hit(s): Day-MONTH-Year Hour:Minute:Second[.Millisecond]
0 hit(s): Day-Month-Year Hour:Minute:Second
0 hit(s): TAI64N
0 hit(s): Epoch
0 hit(s): ISO 8601
0 hit(s): Hour:Minute:Second
0 hit(s): &lt;Month/Day/Year@Hour:Minute:Second&gt;

Success, the total number of match is 1

However, look at the above section 'Running tests' which could contain important
information.
&lt;/code&gt;

=== Testez l'état des jails ===

Avec la commande /usr/bin/fail2ban-client vous pouvez vérifier l'état de vos &quot;jails&quot;:

 # /usr/bin/fail2ban-client status apache-404

Exemple de sortie:
&lt;code&gt;
Status for the jail: apache-404
|- filter
|  |- File list:        /var/log/path/error.log /var/log/path2/error.log /var/log/path2/error.log Etc...
|  |- Currently failed: 5
|  `- Total failed:     32
`- action
   |- Currently banned: 2
   |  `- IP list:       41.xxx.xxx.xxx 84.xxx.xxx.xxx 
   `- Total banned:     2
&lt;/code&gt;

=== Testez en violant une règle ===

Créez par exemple un répertoire dans votre serveur apache, rendez obligatoire l'identification, puis entrez plusieurs fois de suite un mot de passe erroné.
Vous devriez avoir dans vols logs ceci:

 tail -f /var/log/fail2ban.log

 2011-08-08 12:27:18,730 fail2ban.actions: WARNING [apache] Ban 10.9.11.150

Effectivement, iptables à bloqué votre ip:

 iptables -L

 Chain fail2ban-apache (1 references)
 target     prot opt source               destination         
 DROP       all  --  10.9.11.150          anywhere            
 RETURN     all  --  anywhere             anywhere

Au bout de 10 minutes (en fonction de ce que vous aurez précisé dans le configuration), l'IP sera de nouveau &quot;libérée&quot;:

 2011-08-08 12:37:19,585 fail2ban.actions: WARNING [apache] Unban 10.9.11.150

== Erreur au démarrage de fail2ban ==

Si vous surveillez plusieurs services, il existe un bug gênant sur fail2ban ([http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=554162 fail2ban: fails to load iptable rules with multiple jails]) - Il existe une solution :

Lorsque vous démarrerez fail2ban, surveillez ses logs, vous devriez avoir ceci:

 2011-08-08 16:44:40,564 fail2ban.jail   : INFO   Jail 'apache-noscript' started
 2011-08-08 16:44:40,810 fail2ban.jail   : INFO   Jail 'pam-generic' started
 2011-08-08 16:44:41,051 fail2ban.jail   : INFO   Jail 'xinetd-fail' started
 2011-08-08 16:44:41,269 fail2ban.jail   : INFO   Jail 'ssh-ddos' started
 2011-08-08 16:44:41,506 fail2ban.jail   : INFO   Jail 'apache-multiport' started
 2011-08-08 16:44:41,739 fail2ban.jail   : INFO   Jail 'apache-overflows' started
 2011-08-08 16:44:41,976 fail2ban.jail   : INFO   Jail 'ssh' started
 2011-08-08 16:44:42,206 fail2ban.jail   : INFO   Jail 'postfix' started
 2011-08-08 16:44:42,448 fail2ban.jail   : INFO   Jail 'sasl' started
 2011-08-08 16:44:42,667 fail2ban.jail   : INFO   Jail 'apache' started

Si vous avez ce genre de message d'erreur:

 2011-08-08 12:22:52,286 fail2ban.actions.action: ERROR  iptables -N fail2ban-pam-generic
 iptables -A fail2ban-pam-generic -j RETURN
 iptables -I INPUT -p tcp -j fail2ban-pam-generic returned 400
 2011-08-08 15:06:04,467 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports 10122 -j fail2ban-ssh-ddos
 iptables -F fail2ban-ssh-ddos
 iptables -X fail2ban-ssh-ddos returned 100
 2011-08-08 15:06:10,027 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-overflows
 iptables -A fail2ban-apache-overflows -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows returned 200
 2011-08-08 15:06:10,224 fail2ban.actions.action: ERROR  iptables -N fail2ban-postfix
 iptables -A fail2ban-postfix -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp -j fail2ban-postfix returned 400
 2011-08-08 15:06:10,283 fail2ban.actions.action: ERROR  iptables -N fail2ban-sasl
 iptables -A fail2ban-sasl -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl returned 200
 2011-08-08 15:14:26,002 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows
 iptables -F fail2ban-apache-overflows
 iptables -X fail2ban-apache-overflows returned 100
 2011-08-08 15:14:28,374 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl
 iptables -F fail2ban-sasl
 iptables -X fail2ban-sasl returned 100
 2011-08-08 15:14:45,382 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-noscript
 iptables -A fail2ban-apache-noscript -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-noscript returned 400

Il existe deux solutions:

1) Modifier le fichier /usr/bin/fail2ban-client

'''Faite une sauvegarde de  auparavant...'''

Editez le fichier /usr/bin/fail2ban-client et ajoutez une temporisation (time.sleep(0.1)) à cet endroit:

        def __processCmd(self, cmd, showRet = True):
                beautifier = Beautifier()
                for c in cmd:
                        time.sleep(0.1)
                        beautifier.setInputCmd(c)

Si la temporisation à 0.1 ne suffit pas, mettez 0.2. et redémarrez fail2ban.

2) Installer une version supérieure (Fixed in version fail2ban/0.8.5-2)

Installer la version testing (8.6-3 0) ou celle des backports (8.6-3~bpo60+1)

== Fail2ban et ipv6 (EXPERIMENTAL) ==

Vous le savez, l'ipv6 se généralise, lancement officiel le 6 juin 2012
Quid de fail2ban ? Malheureusement, fail2ban ne supporte pas encore l'ipv6.
Heureusement, il existe un patch qui permet d'avoir fail2ban activé sur votre ipv6...

Mode d'emploi:

Téléchargez le patch:
&lt;pre&gt;
wget http://thanatos.trollprod.org/sousites/fail2banv6/fail2ban-ipv6.tar.bz2
--2012-04-14 09:30:31--  http://thanatos.trollprod.org/sousites/fail2banv6/fail2ban-ipv6.tar.bz2
Résolution de thanatos.trollprod.org (thanatos.trollprod.org)... 94.23.14.97, 2001:41d0:2:f61::fed1:fe54
Connexion vers thanatos.trollprod.org (thanatos.trollprod.org)|94.23.14.97|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 2293 (2,2K) [application/x-bzip]
Sauvegarde en : «fail2ban-ipv6.tar.bz2»

100%[=============================================================================================&gt;] 2 293       --.-K/s   ds 0,001s  

2012-04-14 09:30:31 (2,98 MB/s) - «fail2ban-ipv6.tar.bz2» sauvegardé [2293/2293]
&lt;/pre&gt;

 mkdir fail2ban-ipv6
 tar xvjf fail2ban-ipv6.tar.bz2 -C fail2ban-ipv6

 cp /usr/share/fail2ban/server/filter.py /usr/share/fail2ban/server/filter.py.sos
 cp /usr/share/fail2ban/server/failregex.py /usr/share/fail2ban/server/failregex.py.sos

Testez les patch:

 cd /usr/share/fail2ban/server/

 root@nas:/usr/share/fail2ban/server# patch -p0 --dry-run &lt; /root/fail2ban-ipv6/patchfilter.patch
 patching file filter.py
 Hunk #1 succeeded at 525 (offset 14 lines).
 Hunk #2 succeeded at 549 (offset 14 lines).
 Hunk #3 succeeded at 580 (offset 14 lines).
   
 root@nas:/usr/share/fail2ban/server# patch -p0 --dry-run &lt; /root/fail2ban-ipv6/regex.patch 
 patching file failregex.py
 Hunk #1 succeeded at 47 (offset 3 lines).

Si le résultat est positif (pas d'erreur) lancez les patchs

 root@nas:/usr/share/fail2ban/server# patch -p0 &lt; /root/fail2ban-ipv6/patchfilter.patch
 patching file filter.py
 Hunk #1 succeeded at 525 (offset 14 lines).
 Hunk #2 succeeded at 549 (offset 14 lines).
 Hunk #3 succeeded at 580 (offset 14 lines).
 root@nas:/usr/share/fail2ban/server# patch -p0 &lt; /root/fail2ban-ipv6/regex.patch 
 patching file failregex.py
 Hunk #1 succeeded at 47 (offset 3 lines).

Copiez les fichiers nécessaires:

 root@nas:/usr/share/fail2ban/server# cp /root/fail2ban-ipv6/ip64tables.sh /usr/bin/
 root@nas:/usr/share/fail2ban/server# chmod 755 /usr/bin/ip64tables.sh
 root@nas:/usr/share/fail2ban/server# cp /root/fail2ban-ipv6/iptables46-multiport.conf /etc/fail2ban/action.d/
 root@nas:/usr/share/fail2ban/server# chmod 644 /etc/fail2ban/action.d/iptables46-multiport.conf

Créez le bloc de configuration:

 nano /etc/fail2ban/jail.conf

 ...
 [ssh-ip6tables]
 enabled = true
 filter  = sshd
 logpath  = /var/log/auth.log
 maxretry = 6
 action   = iptables46-multiport[name=SSH, port=22, protocol=tcp]
            sendmail-whois[name=SSH, dest=root, sender=fail2ban@mail.com]
 ...

Redémarrez fail2ban et vérifiez qu'il est actif:

 service fail2ban restart
 Restarting authentication failure monitor: fail2ban.
 ip6tables -S
 ...
 -N fail2ban-SSH
 -A INPUT -p tcp -m multiport --dports 22 -j fail2ban-SSH
 -A fail2ban-SSH -j RETURN

Avertissement:
# N'a pas encore été testé
# Ne pas activer la résolution de nom dans les logs

{{en}} [http://www.fail2ban.org/wiki/index.php/Fail2ban:Community_Portal#IPv6_Experimental_support Source - Wiki fail2ban]

== Liens externes ==

Je vous encourage à lire:

* La page de man de fail2ban
* [http://www.fail2ban.org/wiki/index.php/Main_Page Le Wiki de fail2ban - Très complet]

[[Utilisateur:Lol|Lol]] 8 août 2011 à 09:00 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>7kovv7vj9rg85tsu09oorc9bvulzia7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4283</id>
      <parentid>4279</parentid>
      <timestamp>2012-05-28T08:44:41Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Testez l'état des jails */</comment>
      <text xml:space="preserve" bytes="19963">== Qu'est-ce que Fail2ban? ==
Fail2ban lit des fichiers de log comme /var/log/pwdfail ou /var/log/apache/error_log et bannit les adresses IP qui ont obtenu un trop grand nombre d'échecs lors de l'authentification. Il met à jour les règles du pare-feu pour rejeter cette adresse IP. Ces règles peuvent êtres défines par l'utilisateur. Fail2ban peut lire plusieurs fichiers de log comme ceux de sshd ou du serveur Apache.

== Installation ==

 apt-get install fail2ban

Par défaut, le port 22 (ssh) est surveillé, vous pouvez vérifier que les règles ipatbles ont bien prises en compte fail2ban:

 iptables -S | grep fail2ban
&lt;code&gt;
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh 
-A fail2ban-ssh -j RETURN
&lt;/code&gt;

== Configuration ==

Deux fichiers:

=== fail2ban.conf ===

Rien à faire dans ce fichier, vous pouvez laisser les options par défaut:

 /etc/fail2ban/fail2ban.conf

 loglevel = 3
 logtarget = /var/log/fail2ban.log
 socket = /var/run/fail2ban/fail2ban.sock

=== jail.conf ===

Ce fichier est beaucoup plus intéressant, il contient tous les services à monitorer, et vous allez le découvrir, fail2ban ne se limite pas à SSH...

 /etc/fail2ban/jail.conf

Vérifiez l'adresse d'envoi des mails d'avertissement:

 [DEFAULT]
 destemail = root@localhost

'''Erreur commune pour l'envoi des mail d'alertes'''

N'oubliez pas de modifier la variable action = %(action_)s
Et de la placer soit sur:

 action = %(action_mw)s

Soit sur

 action = %(action_mwl)s


Pour activer la surveillance d'un service, il suffit de placer la variable &quot;enabled&quot; à &quot;true&quot;

Par défaut la protection du service SSH est activée, pas les autres:
Si votre ssh n'écoute pas sur le port 22, pensez à le changer... (port = N° de port)

 [ssh]
 enabled = true
 port    = ssh
 filter  = sshd
 logpath  = /var/log/auth.log
 maxretry = 6

D'autres services, à activer en fonction de vos besoins:

 [xinetd-fail]
 enabled   = true 
 filter    = xinetd-fail
 port      = all
 banaction = iptables-multiport-log
 logpath   = /var/log/daemon.log
 maxretry  = 2

 [pam-generic]
 enabled = true
 filter  = pam-generic
 port = all
 banaction = iptables-allports
 port     = anyport
 logpath  = /var/log/auth.log
 maxretry = 6

 [ssh-ddos]
 enabled = true
 port    = ssh
 filter  = sshd-ddos
 logpath  = /var/log/auth.log
 maxretry = 6

 [apache]
 enabled = true
 port    = http,https
 filter  = apache-auth
 logpath = /var/log/apache*/*error.log
 maxretry = 6

 [apache-multiport]
 enabled   = true
 port      = http,https
 filter    = apache-auth
 logpath   = /var/log/apache*/*error.log
 maxretry  = 6

 [apache-noscript]
 enabled = true 
 port    = http,https
 filter  = apache-noscript
 logpath = /var/log/apache*/*error.log
 maxretry = 6

 [apache-overflows]
 enabled = true 
 port    = http,https
 filter  = apache-overflows
 logpath = /var/log/apache*/*error.log
 maxretry = 2

 [postfix]
 enabled  = true 
 port     = smtp,ssmtp
 filter   = postfix
 logpath  = /var/log/mail.log

 [sasl]
 enabled  = true 
 port     = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s
 filter   = sasl
 logpath  = /var/log/mail.log

n'oubliez pas de redémarrer fail2ban :

 # service fail2ban restart

=== jail.local ===

Le fichier jail.local vous permet de mettre vos règles personnelles. Voici quelques exemples:

&lt;code&gt;
[pure-ftpd]
enabled = true
port = ftp,ftp-data,ftps,ftps-data
filter = pure-ftpd
logpath = /var/log/messages
maxretry = 3

[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap, port=&quot;pop3,pop3s,imap,imaps&quot;, protocol=tcp]
logpath = /var/log/mail.log
maxretry = 5

[webmin-auth]
enabled  = true
port     = https,10000
filter   = webmin-auth
logpath  = /var/log/auth.log
maxretry = 3

# Plugin ''roundcube-fail2ban-plugin'' à installer
# 
[roundcube]
enabled  = true
port     = http,https
filter   = roundcube
action   = iptables-multiport[name=roundcube, port=&quot;http,https&quot;]
           sendmail-whois[name=roundcube, dest=root@localhost, sender=fail2ban@localhost]
logpath  = /var/www/path/logs/userlogins

# Plugin ''squirrel_logger'' à ajouter à squirrelmail
[squirrelmail]
enabled = true
port = http,https
filter = squirrelmail
logpath = /var/www/path/squirrelmail_access_log
bantime = 6000
maxretry = 4

# Règle anti-Kevin...
[apache-admin]
enabled = true
port = http
filter = apache-admin
logpath = /var/log/apache*/error*.log
maxretry = 6

# Règle anti-boulets...
[apache-404]
enabled = true
port = http
filter = apache-404
logpath = /var/log/ispconfig/httpd/*/error*
maxretry = 10
&lt;/code&gt;

Les fichiers de conf qui vont bien:

'''pure-ftpd.conf''' déjà inclu dans la configuration de base

'''dovecot-pop3imap.conf''' déjà inclu dans la configuration de base

'''webmin-auth.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
# Rule by : Delvit Guillaume
#
# $Revision: 728 $
#

[Definition]

# patern :      webmin[15673]: Non-existent login as toto from 86.0.6.217
#               webmin[29544]: Invalid login as root from 86.0.6.217
#
# Option:  failregex
# Notes.:  regex to match the password failure messages in the logfile. The
#          host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P&lt;host&gt;[\w\-.^_]+)
# Values:  TEXT
#
failregex = webmin.* Non-existent login as .+ from &lt;HOST&gt;$
            webmin.* Invalid login as .+ from &lt;HOST&gt;$

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =
&lt;/code&gt;

'''roundcube.conf'''
&lt;code&gt;
[Definition]
failregex = FAILED login for .*. from &lt;HOST&gt;
ignoreregex =
&lt;/code&gt;

'''squirrelmail.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Bill Landry ((email_protected))
#
# $Revision: 510 $

[Definition]

# Option: failregex
# Notes.: regex to match the password failures messages in the logfile. The
#         host must be matched by a group named &quot;host&quot;. The tag &quot;&quot; can
#         be used for standard IP/hostname matching and is only an alias for
#         (?:::f{4,6}:)?(?P\S+)
# Values: TEXT

failregex = \[LOGIN_ERROR\].*from &lt;HOST&gt;: Utilisateur inconnu ou mot de passe incorrect

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT

ignoreregex =
&lt;/code&gt;

'''apache-admin.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 471 $
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
# host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
# be used for standard IP/hostname matching.
# Values: TEXT
# [client x.x.x.x] File does not exist: /home/www/admin/admin,
failregex = [[]client &lt;HOST&gt;[]] File does not exist: .*admin|PMA|mysql

#
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
&lt;/code&gt;

'''apache-404.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 471 $
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
# host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
# be used for standard IP/hostname matching.
# Values: TEXT
# [client x.x.x.x] File does not exist: /home/www/admin/admin,
failregex = [[]client &lt;HOST&gt;[]] File does not exist: .*
#
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
&lt;/code&gt;

'''Option très intéressante pour les logs multiples'''

Vous avez la possibilité (si vos logs sont &quot;dispersés&quot;) de mettre des chemins &quot;relatifs&quot; - Vous pouvez utiliser les * (étoiles)

Par exemple, vos logs pour chaque site sont dispersés dans des répertoires différents...
Vous utiliserez alors le chemin suivant (tous les sous-répertoires dans /var/log/ispconfig/httpd/ seront alors pris en compte)

 logpath /var/log/ispconfig/httpd/*/error*

==== Plugins squirrelmail et rouncube ====

[http://mattrude.com/projects/roundcube-fail2ban-plugin/ Plugin roundcube-fail2ban-plugin]

[http://www.howtoforge.com/configuring-fail2ban-with-squirrelmail-on-debian-lenny-ispconfig-3 Plugin squirrel_logger]

==== Fail2ban avec mod-evasive ====

Si vous utilisez mod-evasive, le module de protection contre les attaques Ddos de apache2, vous aurez peut-etre envie d'ajouter un filtre à fail2ban:

 # $EDITOR /etc/fail2ban/filter.d/apache-dosevasive.conf 
&lt;pre&gt;
# Fail2Ban configuration file
#
# Author: Xela
#
# $Revision: 728 $
#

[Definition]

# Option:  failregex
# Notes.:  regex to match the Forbidden log entrys in apache error.log
#          maybe (but not only) provided by mod_evasive
#
# Values:  TEXT
#
failregex = ^\[[^\]]*\]\s+\[error\]\s+\[client \] client denied by server configuration:\s

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =
&lt;/pre&gt;

Ajoutez ensuite ce bloc à /etc/fail2ban/jail.local (adaptez l'emplacement du fichier log à surveiller en fonction de votre configuration)
&lt;pre&gt;
[apache-dosevasive]

enabled = true
filter  = apache-dosevasive
action = iptables-allports[name=dos]
logpath = /var/log/ispconfig/httpd/*/error*
#logpath = /var/log/apache*/*error.log
bantime = 600
maxretry = 10
&lt;/pre&gt;

== Test ==

=== Testez les règles ===

L'erreur commune est de se tromper de fichier log... Vérifiez et revérifiez que le fichier donné en &quot;logpath&quot; est le bon.
Ensuite testez vos règles avec la commande /usr/bin/fail2ban-regex

 # /usr/bin/fail2ban-regex /var/www/path/logs/userlogins /etc/fail2ban/filter.d/roundcube.conf

Exemple de sortie:
&lt;code&gt;
Running tests
=============

Use regex file : /etc/fail2ban/filter.d/roundcube.conf
Use log file   : /var/www/path/logs/userlogins


Results
=======

Failregex
|- Regular expressions:
|  [1] FAILED login for .*. from &lt;HOST&gt;
|
`- Number of matches:
   [1] 1 match(es)

Ignoreregex
|- Regular expressions:
|
`- Number of matches:

Summary
=======

Addresses found:
[1]
    41.xxx.xxx.xxx (Wed Dec 28 15:51:14 2011)

Date template hits:
0 hit(s): MONTH Day Hour:Minute:Second
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second Year
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second
0 hit(s): Year/Month/Day Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/MONTH/Year:Hour:Minute:Second
0 hit(s): Month/Day/Year:Hour:Minute:Second
0 hit(s): Year-Month-Day Hour:Minute:Second
2 hit(s): Day-MONTH-Year Hour:Minute:Second[.Millisecond]
0 hit(s): Day-Month-Year Hour:Minute:Second
0 hit(s): TAI64N
0 hit(s): Epoch
0 hit(s): ISO 8601
0 hit(s): Hour:Minute:Second
0 hit(s): &lt;Month/Day/Year@Hour:Minute:Second&gt;

Success, the total number of match is 1

However, look at the above section 'Running tests' which could contain important
information.
&lt;/code&gt;

=== Testez l'état des jails ===

Avec la commande /usr/bin/fail2ban-client vous pouvez vérifier l'état de vos &quot;jails&quot;:

Exemples de sortie:

 # /usr/bin/fail2ban-client status
&lt;pre&gt;
Status
|- Number of jail:      18
`- Jail list:           dovecot-pop3imap, pure-ftpd, roundcube, apache, ssh, dovecot, apache-overflows, apache-noscript, squirrelmail, apache-dosevasive, apache-admin, pam-generic, postfix, ssh-ddos, webmin-auth, apache-404, sasl, named-refused-tcp
&lt;/pre&gt;


 # /usr/bin/fail2ban-client status apache-404
&lt;pre&gt;
Status for the jail: apache-404
|- filter
|  |- File list:        /var/log/path/error.log /var/log/path2/error.log /var/log/path2/error.log Etc...
|  |- Currently failed: 5
|  `- Total failed:     32
`- action
   |- Currently banned: 2
   |  `- IP list:       41.xxx.xxx.xxx 84.xxx.xxx.xxx 
   `- Total banned:     2
&lt;/pre&gt;

=== Testez en violant une règle ===

Créez par exemple un répertoire dans votre serveur apache, rendez obligatoire l'identification, puis entrez plusieurs fois de suite un mot de passe erroné.
Vous devriez avoir dans vols logs ceci:

 tail -f /var/log/fail2ban.log

 2011-08-08 12:27:18,730 fail2ban.actions: WARNING [apache] Ban 10.9.11.150

Effectivement, iptables à bloqué votre ip:

 iptables -L

 Chain fail2ban-apache (1 references)
 target     prot opt source               destination         
 DROP       all  --  10.9.11.150          anywhere            
 RETURN     all  --  anywhere             anywhere

Au bout de 10 minutes (en fonction de ce que vous aurez précisé dans le configuration), l'IP sera de nouveau &quot;libérée&quot;:

 2011-08-08 12:37:19,585 fail2ban.actions: WARNING [apache] Unban 10.9.11.150

== Erreur au démarrage de fail2ban ==

Si vous surveillez plusieurs services, il existe un bug gênant sur fail2ban ([http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=554162 fail2ban: fails to load iptable rules with multiple jails]) - Il existe une solution :

Lorsque vous démarrerez fail2ban, surveillez ses logs, vous devriez avoir ceci:

 2011-08-08 16:44:40,564 fail2ban.jail   : INFO   Jail 'apache-noscript' started
 2011-08-08 16:44:40,810 fail2ban.jail   : INFO   Jail 'pam-generic' started
 2011-08-08 16:44:41,051 fail2ban.jail   : INFO   Jail 'xinetd-fail' started
 2011-08-08 16:44:41,269 fail2ban.jail   : INFO   Jail 'ssh-ddos' started
 2011-08-08 16:44:41,506 fail2ban.jail   : INFO   Jail 'apache-multiport' started
 2011-08-08 16:44:41,739 fail2ban.jail   : INFO   Jail 'apache-overflows' started
 2011-08-08 16:44:41,976 fail2ban.jail   : INFO   Jail 'ssh' started
 2011-08-08 16:44:42,206 fail2ban.jail   : INFO   Jail 'postfix' started
 2011-08-08 16:44:42,448 fail2ban.jail   : INFO   Jail 'sasl' started
 2011-08-08 16:44:42,667 fail2ban.jail   : INFO   Jail 'apache' started

Si vous avez ce genre de message d'erreur:

 2011-08-08 12:22:52,286 fail2ban.actions.action: ERROR  iptables -N fail2ban-pam-generic
 iptables -A fail2ban-pam-generic -j RETURN
 iptables -I INPUT -p tcp -j fail2ban-pam-generic returned 400
 2011-08-08 15:06:04,467 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports 10122 -j fail2ban-ssh-ddos
 iptables -F fail2ban-ssh-ddos
 iptables -X fail2ban-ssh-ddos returned 100
 2011-08-08 15:06:10,027 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-overflows
 iptables -A fail2ban-apache-overflows -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows returned 200
 2011-08-08 15:06:10,224 fail2ban.actions.action: ERROR  iptables -N fail2ban-postfix
 iptables -A fail2ban-postfix -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp -j fail2ban-postfix returned 400
 2011-08-08 15:06:10,283 fail2ban.actions.action: ERROR  iptables -N fail2ban-sasl
 iptables -A fail2ban-sasl -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl returned 200
 2011-08-08 15:14:26,002 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows
 iptables -F fail2ban-apache-overflows
 iptables -X fail2ban-apache-overflows returned 100
 2011-08-08 15:14:28,374 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl
 iptables -F fail2ban-sasl
 iptables -X fail2ban-sasl returned 100
 2011-08-08 15:14:45,382 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-noscript
 iptables -A fail2ban-apache-noscript -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-noscript returned 400

Il existe deux solutions:

1) Modifier le fichier /usr/bin/fail2ban-client

'''Faite une sauvegarde de  auparavant...'''

Editez le fichier /usr/bin/fail2ban-client et ajoutez une temporisation (time.sleep(0.1)) à cet endroit:

        def __processCmd(self, cmd, showRet = True):
                beautifier = Beautifier()
                for c in cmd:
                        time.sleep(0.1)
                        beautifier.setInputCmd(c)

Si la temporisation à 0.1 ne suffit pas, mettez 0.2. et redémarrez fail2ban.

2) Installer une version supérieure (Fixed in version fail2ban/0.8.5-2)

Installer la version testing (8.6-3 0) ou celle des backports (8.6-3~bpo60+1)

== Fail2ban et ipv6 (EXPERIMENTAL) ==

Vous le savez, l'ipv6 se généralise, lancement officiel le 6 juin 2012
Quid de fail2ban ? Malheureusement, fail2ban ne supporte pas encore l'ipv6.
Heureusement, il existe un patch qui permet d'avoir fail2ban activé sur votre ipv6...

Mode d'emploi:

Téléchargez le patch:
&lt;pre&gt;
wget http://thanatos.trollprod.org/sousites/fail2banv6/fail2ban-ipv6.tar.bz2
--2012-04-14 09:30:31--  http://thanatos.trollprod.org/sousites/fail2banv6/fail2ban-ipv6.tar.bz2
Résolution de thanatos.trollprod.org (thanatos.trollprod.org)... 94.23.14.97, 2001:41d0:2:f61::fed1:fe54
Connexion vers thanatos.trollprod.org (thanatos.trollprod.org)|94.23.14.97|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 2293 (2,2K) [application/x-bzip]
Sauvegarde en : «fail2ban-ipv6.tar.bz2»

100%[=============================================================================================&gt;] 2 293       --.-K/s   ds 0,001s  

2012-04-14 09:30:31 (2,98 MB/s) - «fail2ban-ipv6.tar.bz2» sauvegardé [2293/2293]
&lt;/pre&gt;

 mkdir fail2ban-ipv6
 tar xvjf fail2ban-ipv6.tar.bz2 -C fail2ban-ipv6

 cp /usr/share/fail2ban/server/filter.py /usr/share/fail2ban/server/filter.py.sos
 cp /usr/share/fail2ban/server/failregex.py /usr/share/fail2ban/server/failregex.py.sos

Testez les patch:

 cd /usr/share/fail2ban/server/

 root@nas:/usr/share/fail2ban/server# patch -p0 --dry-run &lt; /root/fail2ban-ipv6/patchfilter.patch
 patching file filter.py
 Hunk #1 succeeded at 525 (offset 14 lines).
 Hunk #2 succeeded at 549 (offset 14 lines).
 Hunk #3 succeeded at 580 (offset 14 lines).
   
 root@nas:/usr/share/fail2ban/server# patch -p0 --dry-run &lt; /root/fail2ban-ipv6/regex.patch 
 patching file failregex.py
 Hunk #1 succeeded at 47 (offset 3 lines).

Si le résultat est positif (pas d'erreur) lancez les patchs

 root@nas:/usr/share/fail2ban/server# patch -p0 &lt; /root/fail2ban-ipv6/patchfilter.patch
 patching file filter.py
 Hunk #1 succeeded at 525 (offset 14 lines).
 Hunk #2 succeeded at 549 (offset 14 lines).
 Hunk #3 succeeded at 580 (offset 14 lines).
 root@nas:/usr/share/fail2ban/server# patch -p0 &lt; /root/fail2ban-ipv6/regex.patch 
 patching file failregex.py
 Hunk #1 succeeded at 47 (offset 3 lines).

Copiez les fichiers nécessaires:

 root@nas:/usr/share/fail2ban/server# cp /root/fail2ban-ipv6/ip64tables.sh /usr/bin/
 root@nas:/usr/share/fail2ban/server# chmod 755 /usr/bin/ip64tables.sh
 root@nas:/usr/share/fail2ban/server# cp /root/fail2ban-ipv6/iptables46-multiport.conf /etc/fail2ban/action.d/
 root@nas:/usr/share/fail2ban/server# chmod 644 /etc/fail2ban/action.d/iptables46-multiport.conf

Créez le bloc de configuration:

 nano /etc/fail2ban/jail.conf

 ...
 [ssh-ip6tables]
 enabled = true
 filter  = sshd
 logpath  = /var/log/auth.log
 maxretry = 6
 action   = iptables46-multiport[name=SSH, port=22, protocol=tcp]
            sendmail-whois[name=SSH, dest=root, sender=fail2ban@mail.com]
 ...

Redémarrez fail2ban et vérifiez qu'il est actif:

 service fail2ban restart
 Restarting authentication failure monitor: fail2ban.
 ip6tables -S
 ...
 -N fail2ban-SSH
 -A INPUT -p tcp -m multiport --dports 22 -j fail2ban-SSH
 -A fail2ban-SSH -j RETURN

Avertissement:
# N'a pas encore été testé
# Ne pas activer la résolution de nom dans les logs

{{en}} [http://www.fail2ban.org/wiki/index.php/Fail2ban:Community_Portal#IPv6_Experimental_support Source - Wiki fail2ban]

== Liens externes ==

Je vous encourage à lire:

* La page de man de fail2ban
* [http://www.fail2ban.org/wiki/index.php/Main_Page Le Wiki de fail2ban - Très complet]

[[Utilisateur:Lol|Lol]] 8 août 2011 à 09:00 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>isjpjyc8epcazyx339v6rm9yaoeotvx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4284</id>
      <parentid>4283</parentid>
      <timestamp>2012-05-28T09:18:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Fail2ban avec mod-evasive */</comment>
      <text xml:space="preserve" bytes="20075">== Qu'est-ce que Fail2ban? ==
Fail2ban lit des fichiers de log comme /var/log/pwdfail ou /var/log/apache/error_log et bannit les adresses IP qui ont obtenu un trop grand nombre d'échecs lors de l'authentification. Il met à jour les règles du pare-feu pour rejeter cette adresse IP. Ces règles peuvent êtres défines par l'utilisateur. Fail2ban peut lire plusieurs fichiers de log comme ceux de sshd ou du serveur Apache.

== Installation ==

 apt-get install fail2ban

Par défaut, le port 22 (ssh) est surveillé, vous pouvez vérifier que les règles ipatbles ont bien prises en compte fail2ban:

 iptables -S | grep fail2ban
&lt;code&gt;
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh 
-A fail2ban-ssh -j RETURN
&lt;/code&gt;

== Configuration ==

Deux fichiers:

=== fail2ban.conf ===

Rien à faire dans ce fichier, vous pouvez laisser les options par défaut:

 /etc/fail2ban/fail2ban.conf

 loglevel = 3
 logtarget = /var/log/fail2ban.log
 socket = /var/run/fail2ban/fail2ban.sock

=== jail.conf ===

Ce fichier est beaucoup plus intéressant, il contient tous les services à monitorer, et vous allez le découvrir, fail2ban ne se limite pas à SSH...

 /etc/fail2ban/jail.conf

Vérifiez l'adresse d'envoi des mails d'avertissement:

 [DEFAULT]
 destemail = root@localhost

'''Erreur commune pour l'envoi des mail d'alertes'''

N'oubliez pas de modifier la variable action = %(action_)s
Et de la placer soit sur:

 action = %(action_mw)s

Soit sur

 action = %(action_mwl)s


Pour activer la surveillance d'un service, il suffit de placer la variable &quot;enabled&quot; à &quot;true&quot;

Par défaut la protection du service SSH est activée, pas les autres:
Si votre ssh n'écoute pas sur le port 22, pensez à le changer... (port = N° de port)

 [ssh]
 enabled = true
 port    = ssh
 filter  = sshd
 logpath  = /var/log/auth.log
 maxretry = 6

D'autres services, à activer en fonction de vos besoins:

 [xinetd-fail]
 enabled   = true 
 filter    = xinetd-fail
 port      = all
 banaction = iptables-multiport-log
 logpath   = /var/log/daemon.log
 maxretry  = 2

 [pam-generic]
 enabled = true
 filter  = pam-generic
 port = all
 banaction = iptables-allports
 port     = anyport
 logpath  = /var/log/auth.log
 maxretry = 6

 [ssh-ddos]
 enabled = true
 port    = ssh
 filter  = sshd-ddos
 logpath  = /var/log/auth.log
 maxretry = 6

 [apache]
 enabled = true
 port    = http,https
 filter  = apache-auth
 logpath = /var/log/apache*/*error.log
 maxretry = 6

 [apache-multiport]
 enabled   = true
 port      = http,https
 filter    = apache-auth
 logpath   = /var/log/apache*/*error.log
 maxretry  = 6

 [apache-noscript]
 enabled = true 
 port    = http,https
 filter  = apache-noscript
 logpath = /var/log/apache*/*error.log
 maxretry = 6

 [apache-overflows]
 enabled = true 
 port    = http,https
 filter  = apache-overflows
 logpath = /var/log/apache*/*error.log
 maxretry = 2

 [postfix]
 enabled  = true 
 port     = smtp,ssmtp
 filter   = postfix
 logpath  = /var/log/mail.log

 [sasl]
 enabled  = true 
 port     = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s
 filter   = sasl
 logpath  = /var/log/mail.log

n'oubliez pas de redémarrer fail2ban :

 # service fail2ban restart

=== jail.local ===

Le fichier jail.local vous permet de mettre vos règles personnelles. Voici quelques exemples:

&lt;code&gt;
[pure-ftpd]
enabled = true
port = ftp,ftp-data,ftps,ftps-data
filter = pure-ftpd
logpath = /var/log/messages
maxretry = 3

[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap, port=&quot;pop3,pop3s,imap,imaps&quot;, protocol=tcp]
logpath = /var/log/mail.log
maxretry = 5

[webmin-auth]
enabled  = true
port     = https,10000
filter   = webmin-auth
logpath  = /var/log/auth.log
maxretry = 3

# Plugin ''roundcube-fail2ban-plugin'' à installer
# 
[roundcube]
enabled  = true
port     = http,https
filter   = roundcube
action   = iptables-multiport[name=roundcube, port=&quot;http,https&quot;]
           sendmail-whois[name=roundcube, dest=root@localhost, sender=fail2ban@localhost]
logpath  = /var/www/path/logs/userlogins

# Plugin ''squirrel_logger'' à ajouter à squirrelmail
[squirrelmail]
enabled = true
port = http,https
filter = squirrelmail
logpath = /var/www/path/squirrelmail_access_log
bantime = 6000
maxretry = 4

# Règle anti-Kevin...
[apache-admin]
enabled = true
port = http
filter = apache-admin
logpath = /var/log/apache*/error*.log
maxretry = 6

# Règle anti-boulets...
[apache-404]
enabled = true
port = http
filter = apache-404
logpath = /var/log/ispconfig/httpd/*/error*
maxretry = 10
&lt;/code&gt;

Les fichiers de conf qui vont bien:

'''pure-ftpd.conf''' déjà inclu dans la configuration de base

'''dovecot-pop3imap.conf''' déjà inclu dans la configuration de base

'''webmin-auth.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
# Rule by : Delvit Guillaume
#
# $Revision: 728 $
#

[Definition]

# patern :      webmin[15673]: Non-existent login as toto from 86.0.6.217
#               webmin[29544]: Invalid login as root from 86.0.6.217
#
# Option:  failregex
# Notes.:  regex to match the password failure messages in the logfile. The
#          host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P&lt;host&gt;[\w\-.^_]+)
# Values:  TEXT
#
failregex = webmin.* Non-existent login as .+ from &lt;HOST&gt;$
            webmin.* Invalid login as .+ from &lt;HOST&gt;$

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =
&lt;/code&gt;

'''roundcube.conf'''
&lt;code&gt;
[Definition]
failregex = FAILED login for .*. from &lt;HOST&gt;
ignoreregex =
&lt;/code&gt;

'''squirrelmail.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Bill Landry ((email_protected))
#
# $Revision: 510 $

[Definition]

# Option: failregex
# Notes.: regex to match the password failures messages in the logfile. The
#         host must be matched by a group named &quot;host&quot;. The tag &quot;&quot; can
#         be used for standard IP/hostname matching and is only an alias for
#         (?:::f{4,6}:)?(?P\S+)
# Values: TEXT

failregex = \[LOGIN_ERROR\].*from &lt;HOST&gt;: Utilisateur inconnu ou mot de passe incorrect

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT

ignoreregex =
&lt;/code&gt;

'''apache-admin.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 471 $
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
# host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
# be used for standard IP/hostname matching.
# Values: TEXT
# [client x.x.x.x] File does not exist: /home/www/admin/admin,
failregex = [[]client &lt;HOST&gt;[]] File does not exist: .*admin|PMA|mysql

#
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
&lt;/code&gt;

'''apache-404.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 471 $
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
# host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
# be used for standard IP/hostname matching.
# Values: TEXT
# [client x.x.x.x] File does not exist: /home/www/admin/admin,
failregex = [[]client &lt;HOST&gt;[]] File does not exist: .*
#
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
&lt;/code&gt;

'''Option très intéressante pour les logs multiples'''

Vous avez la possibilité (si vos logs sont &quot;dispersés&quot;) de mettre des chemins &quot;relatifs&quot; - Vous pouvez utiliser les * (étoiles)

Par exemple, vos logs pour chaque site sont dispersés dans des répertoires différents...
Vous utiliserez alors le chemin suivant (tous les sous-répertoires dans /var/log/ispconfig/httpd/ seront alors pris en compte)

 logpath /var/log/ispconfig/httpd/*/error*

==== Plugins squirrelmail et rouncube ====

[http://mattrude.com/projects/roundcube-fail2ban-plugin/ Plugin roundcube-fail2ban-plugin]

[http://www.howtoforge.com/configuring-fail2ban-with-squirrelmail-on-debian-lenny-ispconfig-3 Plugin squirrel_logger]

==== Fail2ban avec mod-evasive ====

Si vous utilisez mod-evasive, le module de protection contre les attaques Ddos de apache2, vous aurez peut-etre envie d'ajouter un filtre à fail2ban:

 # $EDITOR /etc/fail2ban/filter.d/apache-dosevasive.conf 
&lt;pre&gt;
# Fail2Ban configuration file
#
# Author: Xela
#
# $Revision: 728 $
#

[Definition]

# Option:  failregex
# Notes.:  regex to match the Forbidden log entrys in apache error.log
#          maybe (but not only) provided by mod_evasive
#
# Values:  TEXT
#
#failregex = ^\[[^\]]*\]\s+\[error\]\s+\[client \] client denied by server configuration:\s
failregex = ^\[[^\]]*\]\s+\[error\]\s+\[client &lt;HOST&gt;\] client denied by server configuration:\s

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =
&lt;/pre&gt;

Ajoutez ensuite ce bloc à /etc/fail2ban/jail.local (adaptez l'emplacement du fichier log à surveiller en fonction de votre configuration)
&lt;pre&gt;
[apache-dosevasive]

enabled = true
filter  = apache-dosevasive
action = iptables-allports[name=apache-dosevasive]
logpath = /var/log/ispconfig/httpd/*/error*
#logpath = /var/log/apache*/*error.log
bantime = 600
maxretry = 10
&lt;/pre&gt;

== Test ==

=== Testez les règles ===

L'erreur commune est de se tromper de fichier log... Vérifiez et revérifiez que le fichier donné en &quot;logpath&quot; est le bon.
Ensuite testez vos règles avec la commande /usr/bin/fail2ban-regex

 # /usr/bin/fail2ban-regex /var/www/path/logs/userlogins /etc/fail2ban/filter.d/roundcube.conf

Exemple de sortie:
&lt;code&gt;
Running tests
=============

Use regex file : /etc/fail2ban/filter.d/roundcube.conf
Use log file   : /var/www/path/logs/userlogins


Results
=======

Failregex
|- Regular expressions:
|  [1] FAILED login for .*. from &lt;HOST&gt;
|
`- Number of matches:
   [1] 1 match(es)

Ignoreregex
|- Regular expressions:
|
`- Number of matches:

Summary
=======

Addresses found:
[1]
    41.xxx.xxx.xxx (Wed Dec 28 15:51:14 2011)

Date template hits:
0 hit(s): MONTH Day Hour:Minute:Second
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second Year
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second
0 hit(s): Year/Month/Day Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/MONTH/Year:Hour:Minute:Second
0 hit(s): Month/Day/Year:Hour:Minute:Second
0 hit(s): Year-Month-Day Hour:Minute:Second
2 hit(s): Day-MONTH-Year Hour:Minute:Second[.Millisecond]
0 hit(s): Day-Month-Year Hour:Minute:Second
0 hit(s): TAI64N
0 hit(s): Epoch
0 hit(s): ISO 8601
0 hit(s): Hour:Minute:Second
0 hit(s): &lt;Month/Day/Year@Hour:Minute:Second&gt;

Success, the total number of match is 1

However, look at the above section 'Running tests' which could contain important
information.
&lt;/code&gt;

=== Testez l'état des jails ===

Avec la commande /usr/bin/fail2ban-client vous pouvez vérifier l'état de vos &quot;jails&quot;:

Exemples de sortie:

 # /usr/bin/fail2ban-client status
&lt;pre&gt;
Status
|- Number of jail:      18
`- Jail list:           dovecot-pop3imap, pure-ftpd, roundcube, apache, ssh, dovecot, apache-overflows, apache-noscript, squirrelmail, apache-dosevasive, apache-admin, pam-generic, postfix, ssh-ddos, webmin-auth, apache-404, sasl, named-refused-tcp
&lt;/pre&gt;


 # /usr/bin/fail2ban-client status apache-404
&lt;pre&gt;
Status for the jail: apache-404
|- filter
|  |- File list:        /var/log/path/error.log /var/log/path2/error.log /var/log/path2/error.log Etc...
|  |- Currently failed: 5
|  `- Total failed:     32
`- action
   |- Currently banned: 2
   |  `- IP list:       41.xxx.xxx.xxx 84.xxx.xxx.xxx 
   `- Total banned:     2
&lt;/pre&gt;

=== Testez en violant une règle ===

Créez par exemple un répertoire dans votre serveur apache, rendez obligatoire l'identification, puis entrez plusieurs fois de suite un mot de passe erroné.
Vous devriez avoir dans vols logs ceci:

 tail -f /var/log/fail2ban.log

 2011-08-08 12:27:18,730 fail2ban.actions: WARNING [apache] Ban 10.9.11.150

Effectivement, iptables à bloqué votre ip:

 iptables -L

 Chain fail2ban-apache (1 references)
 target     prot opt source               destination         
 DROP       all  --  10.9.11.150          anywhere            
 RETURN     all  --  anywhere             anywhere

Au bout de 10 minutes (en fonction de ce que vous aurez précisé dans le configuration), l'IP sera de nouveau &quot;libérée&quot;:

 2011-08-08 12:37:19,585 fail2ban.actions: WARNING [apache] Unban 10.9.11.150

== Erreur au démarrage de fail2ban ==

Si vous surveillez plusieurs services, il existe un bug gênant sur fail2ban ([http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=554162 fail2ban: fails to load iptable rules with multiple jails]) - Il existe une solution :

Lorsque vous démarrerez fail2ban, surveillez ses logs, vous devriez avoir ceci:

 2011-08-08 16:44:40,564 fail2ban.jail   : INFO   Jail 'apache-noscript' started
 2011-08-08 16:44:40,810 fail2ban.jail   : INFO   Jail 'pam-generic' started
 2011-08-08 16:44:41,051 fail2ban.jail   : INFO   Jail 'xinetd-fail' started
 2011-08-08 16:44:41,269 fail2ban.jail   : INFO   Jail 'ssh-ddos' started
 2011-08-08 16:44:41,506 fail2ban.jail   : INFO   Jail 'apache-multiport' started
 2011-08-08 16:44:41,739 fail2ban.jail   : INFO   Jail 'apache-overflows' started
 2011-08-08 16:44:41,976 fail2ban.jail   : INFO   Jail 'ssh' started
 2011-08-08 16:44:42,206 fail2ban.jail   : INFO   Jail 'postfix' started
 2011-08-08 16:44:42,448 fail2ban.jail   : INFO   Jail 'sasl' started
 2011-08-08 16:44:42,667 fail2ban.jail   : INFO   Jail 'apache' started

Si vous avez ce genre de message d'erreur:

 2011-08-08 12:22:52,286 fail2ban.actions.action: ERROR  iptables -N fail2ban-pam-generic
 iptables -A fail2ban-pam-generic -j RETURN
 iptables -I INPUT -p tcp -j fail2ban-pam-generic returned 400
 2011-08-08 15:06:04,467 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports 10122 -j fail2ban-ssh-ddos
 iptables -F fail2ban-ssh-ddos
 iptables -X fail2ban-ssh-ddos returned 100
 2011-08-08 15:06:10,027 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-overflows
 iptables -A fail2ban-apache-overflows -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows returned 200
 2011-08-08 15:06:10,224 fail2ban.actions.action: ERROR  iptables -N fail2ban-postfix
 iptables -A fail2ban-postfix -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp -j fail2ban-postfix returned 400
 2011-08-08 15:06:10,283 fail2ban.actions.action: ERROR  iptables -N fail2ban-sasl
 iptables -A fail2ban-sasl -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl returned 200
 2011-08-08 15:14:26,002 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows
 iptables -F fail2ban-apache-overflows
 iptables -X fail2ban-apache-overflows returned 100
 2011-08-08 15:14:28,374 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl
 iptables -F fail2ban-sasl
 iptables -X fail2ban-sasl returned 100
 2011-08-08 15:14:45,382 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-noscript
 iptables -A fail2ban-apache-noscript -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-noscript returned 400

Il existe deux solutions:

1) Modifier le fichier /usr/bin/fail2ban-client

'''Faite une sauvegarde de  auparavant...'''

Editez le fichier /usr/bin/fail2ban-client et ajoutez une temporisation (time.sleep(0.1)) à cet endroit:

        def __processCmd(self, cmd, showRet = True):
                beautifier = Beautifier()
                for c in cmd:
                        time.sleep(0.1)
                        beautifier.setInputCmd(c)

Si la temporisation à 0.1 ne suffit pas, mettez 0.2. et redémarrez fail2ban.

2) Installer une version supérieure (Fixed in version fail2ban/0.8.5-2)

Installer la version testing (8.6-3 0) ou celle des backports (8.6-3~bpo60+1)

== Fail2ban et ipv6 (EXPERIMENTAL) ==

Vous le savez, l'ipv6 se généralise, lancement officiel le 6 juin 2012
Quid de fail2ban ? Malheureusement, fail2ban ne supporte pas encore l'ipv6.
Heureusement, il existe un patch qui permet d'avoir fail2ban activé sur votre ipv6...

Mode d'emploi:

Téléchargez le patch:
&lt;pre&gt;
wget http://thanatos.trollprod.org/sousites/fail2banv6/fail2ban-ipv6.tar.bz2
--2012-04-14 09:30:31--  http://thanatos.trollprod.org/sousites/fail2banv6/fail2ban-ipv6.tar.bz2
Résolution de thanatos.trollprod.org (thanatos.trollprod.org)... 94.23.14.97, 2001:41d0:2:f61::fed1:fe54
Connexion vers thanatos.trollprod.org (thanatos.trollprod.org)|94.23.14.97|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 2293 (2,2K) [application/x-bzip]
Sauvegarde en : «fail2ban-ipv6.tar.bz2»

100%[=============================================================================================&gt;] 2 293       --.-K/s   ds 0,001s  

2012-04-14 09:30:31 (2,98 MB/s) - «fail2ban-ipv6.tar.bz2» sauvegardé [2293/2293]
&lt;/pre&gt;

 mkdir fail2ban-ipv6
 tar xvjf fail2ban-ipv6.tar.bz2 -C fail2ban-ipv6

 cp /usr/share/fail2ban/server/filter.py /usr/share/fail2ban/server/filter.py.sos
 cp /usr/share/fail2ban/server/failregex.py /usr/share/fail2ban/server/failregex.py.sos

Testez les patch:

 cd /usr/share/fail2ban/server/

 root@nas:/usr/share/fail2ban/server# patch -p0 --dry-run &lt; /root/fail2ban-ipv6/patchfilter.patch
 patching file filter.py
 Hunk #1 succeeded at 525 (offset 14 lines).
 Hunk #2 succeeded at 549 (offset 14 lines).
 Hunk #3 succeeded at 580 (offset 14 lines).
   
 root@nas:/usr/share/fail2ban/server# patch -p0 --dry-run &lt; /root/fail2ban-ipv6/regex.patch 
 patching file failregex.py
 Hunk #1 succeeded at 47 (offset 3 lines).

Si le résultat est positif (pas d'erreur) lancez les patchs

 root@nas:/usr/share/fail2ban/server# patch -p0 &lt; /root/fail2ban-ipv6/patchfilter.patch
 patching file filter.py
 Hunk #1 succeeded at 525 (offset 14 lines).
 Hunk #2 succeeded at 549 (offset 14 lines).
 Hunk #3 succeeded at 580 (offset 14 lines).
 root@nas:/usr/share/fail2ban/server# patch -p0 &lt; /root/fail2ban-ipv6/regex.patch 
 patching file failregex.py
 Hunk #1 succeeded at 47 (offset 3 lines).

Copiez les fichiers nécessaires:

 root@nas:/usr/share/fail2ban/server# cp /root/fail2ban-ipv6/ip64tables.sh /usr/bin/
 root@nas:/usr/share/fail2ban/server# chmod 755 /usr/bin/ip64tables.sh
 root@nas:/usr/share/fail2ban/server# cp /root/fail2ban-ipv6/iptables46-multiport.conf /etc/fail2ban/action.d/
 root@nas:/usr/share/fail2ban/server# chmod 644 /etc/fail2ban/action.d/iptables46-multiport.conf

Créez le bloc de configuration:

 nano /etc/fail2ban/jail.conf

 ...
 [ssh-ip6tables]
 enabled = true
 filter  = sshd
 logpath  = /var/log/auth.log
 maxretry = 6
 action   = iptables46-multiport[name=SSH, port=22, protocol=tcp]
            sendmail-whois[name=SSH, dest=root, sender=fail2ban@mail.com]
 ...

Redémarrez fail2ban et vérifiez qu'il est actif:

 service fail2ban restart
 Restarting authentication failure monitor: fail2ban.
 ip6tables -S
 ...
 -N fail2ban-SSH
 -A INPUT -p tcp -m multiport --dports 22 -j fail2ban-SSH
 -A fail2ban-SSH -j RETURN

Avertissement:
# N'a pas encore été testé
# Ne pas activer la résolution de nom dans les logs

{{en}} [http://www.fail2ban.org/wiki/index.php/Fail2ban:Community_Portal#IPv6_Experimental_support Source - Wiki fail2ban]

== Liens externes ==

Je vous encourage à lire:

* La page de man de fail2ban
* [http://www.fail2ban.org/wiki/index.php/Main_Page Le Wiki de fail2ban - Très complet]

[[Utilisateur:Lol|Lol]] 8 août 2011 à 09:00 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>2da59hkt4z1b80wc4wn8xx8o9thrc1q</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4400</id>
      <parentid>4284</parentid>
      <timestamp>2012-08-15T12:12:41Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Surveillance de mysql</comment>
      <text xml:space="preserve" bytes="22321">== Qu'est-ce que Fail2ban? ==
Fail2ban lit des fichiers de log comme /var/log/pwdfail ou /var/log/apache/error_log et bannit les adresses IP qui ont obtenu un trop grand nombre d'échecs lors de l'authentification. Il met à jour les règles du pare-feu pour rejeter cette adresse IP. Ces règles peuvent êtres défines par l'utilisateur. Fail2ban peut lire plusieurs fichiers de log comme ceux de sshd ou du serveur Apache.

== Installation ==

 apt-get install fail2ban

Par défaut, le port 22 (ssh) est surveillé, vous pouvez vérifier que les règles ipatbles ont bien prises en compte fail2ban:

 iptables -S | grep fail2ban
&lt;code&gt;
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh 
-A fail2ban-ssh -j RETURN
&lt;/code&gt;

== Configuration ==

Deux fichiers:

=== fail2ban.conf ===

Rien à faire dans ce fichier, vous pouvez laisser les options par défaut:

 /etc/fail2ban/fail2ban.conf

 loglevel = 3
 logtarget = /var/log/fail2ban.log
 socket = /var/run/fail2ban/fail2ban.sock

=== jail.conf ===

Ce fichier est beaucoup plus intéressant, il contient tous les services à monitorer, et vous allez le découvrir, fail2ban ne se limite pas à SSH...

 /etc/fail2ban/jail.conf

Vérifiez l'adresse d'envoi des mails d'avertissement:

 [DEFAULT]
 destemail = root@localhost

'''Erreur commune pour l'envoi des mail d'alertes'''

N'oubliez pas de modifier la variable action = %(action_)s
Et de la placer soit sur:

 action = %(action_mw)s

Soit sur

 action = %(action_mwl)s


Pour activer la surveillance d'un service, il suffit de placer la variable &quot;enabled&quot; à &quot;true&quot;

Par défaut la protection du service SSH est activée, pas les autres:
Si votre ssh n'écoute pas sur le port 22, pensez à le changer... (port = N° de port)

 [ssh]
 enabled = true
 port    = ssh
 filter  = sshd
 logpath  = /var/log/auth.log
 maxretry = 6

D'autres services, à activer en fonction de vos besoins:

 [xinetd-fail]
 enabled   = true 
 filter    = xinetd-fail
 port      = all
 banaction = iptables-multiport-log
 logpath   = /var/log/daemon.log
 maxretry  = 2

 [pam-generic]
 enabled = true
 filter  = pam-generic
 port = all
 banaction = iptables-allports
 port     = anyport
 logpath  = /var/log/auth.log
 maxretry = 6

 [ssh-ddos]
 enabled = true
 port    = ssh
 filter  = sshd-ddos
 logpath  = /var/log/auth.log
 maxretry = 6

 [apache]
 enabled = true
 port    = http,https
 filter  = apache-auth
 logpath = /var/log/apache*/*error.log
 maxretry = 6

 [apache-multiport]
 enabled   = true
 port      = http,https
 filter    = apache-auth
 logpath   = /var/log/apache*/*error.log
 maxretry  = 6

 [apache-noscript]
 enabled = true 
 port    = http,https
 filter  = apache-noscript
 logpath = /var/log/apache*/*error.log
 maxretry = 6

 [apache-overflows]
 enabled = true 
 port    = http,https
 filter  = apache-overflows
 logpath = /var/log/apache*/*error.log
 maxretry = 2

 [postfix]
 enabled  = true 
 port     = smtp,ssmtp
 filter   = postfix
 logpath  = /var/log/mail.log

 [sasl]
 enabled  = true 
 port     = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s
 filter   = sasl
 logpath  = /var/log/mail.log

n'oubliez pas de redémarrer fail2ban :

 # service fail2ban restart

=== jail.local ===

Le fichier jail.local vous permet de mettre vos règles personnelles. Voici quelques exemples:

&lt;code&gt;
[pure-ftpd]
enabled = true
port = ftp,ftp-data,ftps,ftps-data
filter = pure-ftpd
logpath = /var/log/messages
maxretry = 3

[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap, port=&quot;pop3,pop3s,imap,imaps&quot;, protocol=tcp]
logpath = /var/log/mail.log
maxretry = 5

[webmin-auth]
enabled  = true
port     = https,10000
filter   = webmin-auth
logpath  = /var/log/auth.log
maxretry = 3

# Plugin ''roundcube-fail2ban-plugin'' à installer
# 
[roundcube]
enabled  = true
port     = http,https
filter   = roundcube
action   = iptables-multiport[name=roundcube, port=&quot;http,https&quot;]
           sendmail-whois[name=roundcube, dest=root@localhost, sender=fail2ban@localhost]
logpath  = /var/www/path/logs/userlogins

# Plugin ''squirrel_logger'' à ajouter à squirrelmail
[squirrelmail]
enabled = true
port = http,https
filter = squirrelmail
logpath = /var/www/path/squirrelmail_access_log
bantime = 6000
maxretry = 4

# Règle anti-Kevin...
[apache-admin]
enabled = true
port = http
filter = apache-admin
logpath = /var/log/apache*/error*.log
maxretry = 6

# Règle anti-boulets...
[apache-404]
enabled = true
port = http
filter = apache-404
logpath = /var/log/ispconfig/httpd/*/error*
maxretry = 10
&lt;/code&gt;

Les fichiers de conf qui vont bien:

'''pure-ftpd.conf''' déjà inclu dans la configuration de base

'''dovecot-pop3imap.conf''' déjà inclu dans la configuration de base

'''webmin-auth.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
# Rule by : Delvit Guillaume
#
# $Revision: 728 $
#

[Definition]

# patern :      webmin[15673]: Non-existent login as toto from 86.0.6.217
#               webmin[29544]: Invalid login as root from 86.0.6.217
#
# Option:  failregex
# Notes.:  regex to match the password failure messages in the logfile. The
#          host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P&lt;host&gt;[\w\-.^_]+)
# Values:  TEXT
#
failregex = webmin.* Non-existent login as .+ from &lt;HOST&gt;$
            webmin.* Invalid login as .+ from &lt;HOST&gt;$

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =
&lt;/code&gt;

'''roundcube.conf'''
&lt;code&gt;
[Definition]
failregex = FAILED login for .*. from &lt;HOST&gt;
ignoreregex =
&lt;/code&gt;

'''squirrelmail.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Bill Landry ((email_protected))
#
# $Revision: 510 $

[Definition]

# Option: failregex
# Notes.: regex to match the password failures messages in the logfile. The
#         host must be matched by a group named &quot;host&quot;. The tag &quot;&quot; can
#         be used for standard IP/hostname matching and is only an alias for
#         (?:::f{4,6}:)?(?P\S+)
# Values: TEXT

failregex = \[LOGIN_ERROR\].*from &lt;HOST&gt;: Utilisateur inconnu ou mot de passe incorrect

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT

ignoreregex =
&lt;/code&gt;

'''apache-admin.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 471 $
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
# host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
# be used for standard IP/hostname matching.
# Values: TEXT
# [client x.x.x.x] File does not exist: /home/www/admin/admin,
failregex = [[]client &lt;HOST&gt;[]] File does not exist: .*admin|PMA|mysql

#
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
&lt;/code&gt;

'''apache-404.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 471 $
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
# host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
# be used for standard IP/hostname matching.
# Values: TEXT
# [client x.x.x.x] File does not exist: /home/www/admin/admin,
failregex = [[]client &lt;HOST&gt;[]] File does not exist: .*
#
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
&lt;/code&gt;

'''Option très intéressante pour les logs multiples'''

Vous avez la possibilité (si vos logs sont &quot;dispersés&quot;) de mettre des chemins &quot;relatifs&quot; - Vous pouvez utiliser les * (étoiles)

Par exemple, vos logs pour chaque site sont dispersés dans des répertoires différents...
Vous utiliserez alors le chemin suivant (tous les sous-répertoires dans /var/log/ispconfig/httpd/ seront alors pris en compte)

 logpath /var/log/ispconfig/httpd/*/error*

==== Plugins squirrelmail et rouncube ====

[http://mattrude.com/projects/roundcube-fail2ban-plugin/ Plugin roundcube-fail2ban-plugin]

[http://www.howtoforge.com/configuring-fail2ban-with-squirrelmail-on-debian-lenny-ispconfig-3 Plugin squirrel_logger]

==== Fail2ban avec mod-evasive ====

Si vous utilisez mod-evasive, le module de protection contre les attaques Ddos de apache2, vous aurez peut-etre envie d'ajouter un filtre à fail2ban:

 # $EDITOR /etc/fail2ban/filter.d/apache-dosevasive.conf 
&lt;pre&gt;
# Fail2Ban configuration file
#
# Author: Xela
#
# $Revision: 728 $
#

[Definition]

# Option:  failregex
# Notes.:  regex to match the Forbidden log entrys in apache error.log
#          maybe (but not only) provided by mod_evasive
#
# Values:  TEXT
#
#failregex = ^\[[^\]]*\]\s+\[error\]\s+\[client \] client denied by server configuration:\s
failregex = ^\[[^\]]*\]\s+\[error\]\s+\[client &lt;HOST&gt;\] client denied by server configuration:\s

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =
&lt;/pre&gt;

Ajoutez ensuite ce bloc à /etc/fail2ban/jail.local (adaptez l'emplacement du fichier log à surveiller en fonction de votre configuration)
&lt;pre&gt;
[apache-dosevasive]

enabled = true
filter  = apache-dosevasive
action = iptables-allports[name=apache-dosevasive]
logpath = /var/log/ispconfig/httpd/*/error*
#logpath = /var/log/apache*/*error.log
bantime = 600
maxretry = 10
&lt;/pre&gt;

=== Cas particulier de mysql ===

Si vous souhaitez protéger un serveur mysql dont la base est ouverte sur Internet (ce qui n'est pas conseillé et pas très prudent...), voici comment faire:

==== Activez les logs de mysql ====

Dans le fichier /etc/mysql/my.cnf

 general_log_file = /var/log/mysql/mysql.log
 general_log = 1

==== Patchez le fichier de support de date de fail2ban ====

Une sauvegarde:
cp /usr/share/fail2ban/server/datedetector.py /usr/share/fail2ban/server/datedetector.py.sos

Dans le fichier /usr/share/fail2ban/server/datedetector.py ajoutez ceci (ligne 144)

''Attention, les espaces sont des tabulations''
&lt;pre&gt;
                        # AAMMJJ HH:MM:SS
                        template = DateStrptime()
                        template.setName(&quot;YearMonthDay Hour:Minute:Second&quot;)
                        template.setRegex(&quot;\d{2}\d{2}\d{2} \d{2}:\d{2}:\d{2}&quot;)
                        template.setPattern(&quot;%y%m%d %H:%M:%S&quot;)
                        self.__templates.append(template)
&lt;/pre&gt;

Vous devriez obtenir ceci:

&lt;pre&gt;
                        # &lt;09/16/08@05:03:30&gt;
                        template = DateStrptime()
                        template.setName(&quot;&lt;Month/Day/Year@Hour:Minute:Second&gt;&quot;)
                        template.setRegex(&quot;^&lt;\d{2}/\d{2}/\d{2}@\d{2}:\d{2}:\d{2}&gt;&quot;)
                        template.setPattern(&quot;&lt;%m/%d/%y@%H:%M:%S&gt;&quot;)
                        self.__templates.append(template)
                        # AAMMJJ HH:MM:SS
                        template = DateStrptime()
                        template.setName(&quot;YearMonthDay Hour:Minute:Second&quot;)
                        template.setRegex(&quot;\d{2}\d{2}\d{2} \d{2}:\d{2}:\d{2}&quot;)
                        template.setPattern(&quot;%y%m%d %H:%M:%S&quot;)
                        self.__templates.append(template)
                finally:
                        self.__lock.release()
&lt;/pre&gt;

==== Configurez fail2ban ====

 $editor /etc/fail2ban/jail.conf
&lt;pre&gt;
[mysql]
enabled = true
port = 3306
filter = mysqld
logpath = /var/log/mysql/mysql.log
maxretry = 3
&lt;/pre&gt;

 $editor /etc/fail2ban/filter.d/mysqld.conf
&lt;pre&gt;
# Fail2Ban configuration file
#
# Author: JOUBERT Pierre-Benoît
#

[Definition]
failregex = Access denied for user '.*'@'&lt;HOST&gt;'
&lt;/pre&gt;

== Test ==

=== Testez les règles ===

L'erreur commune est de se tromper de fichier log... Vérifiez et revérifiez que le fichier donné en &quot;logpath&quot; est le bon.
Ensuite testez vos règles avec la commande /usr/bin/fail2ban-regex

 # /usr/bin/fail2ban-regex /var/www/path/logs/userlogins /etc/fail2ban/filter.d/roundcube.conf

Exemple de sortie:
&lt;code&gt;
Running tests
=============

Use regex file : /etc/fail2ban/filter.d/roundcube.conf
Use log file   : /var/www/path/logs/userlogins


Results
=======

Failregex
|- Regular expressions:
|  [1] FAILED login for .*. from &lt;HOST&gt;
|
`- Number of matches:
   [1] 1 match(es)

Ignoreregex
|- Regular expressions:
|
`- Number of matches:

Summary
=======

Addresses found:
[1]
    41.xxx.xxx.xxx (Wed Dec 28 15:51:14 2011)

Date template hits:
0 hit(s): MONTH Day Hour:Minute:Second
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second Year
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second
0 hit(s): Year/Month/Day Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/MONTH/Year:Hour:Minute:Second
0 hit(s): Month/Day/Year:Hour:Minute:Second
0 hit(s): Year-Month-Day Hour:Minute:Second
2 hit(s): Day-MONTH-Year Hour:Minute:Second[.Millisecond]
0 hit(s): Day-Month-Year Hour:Minute:Second
0 hit(s): TAI64N
0 hit(s): Epoch
0 hit(s): ISO 8601
0 hit(s): Hour:Minute:Second
0 hit(s): &lt;Month/Day/Year@Hour:Minute:Second&gt;

Success, the total number of match is 1

However, look at the above section 'Running tests' which could contain important
information.
&lt;/code&gt;

=== Testez l'état des jails ===

Avec la commande /usr/bin/fail2ban-client vous pouvez vérifier l'état de vos &quot;jails&quot;:

Exemples de sortie:

 # /usr/bin/fail2ban-client status
&lt;pre&gt;
Status
|- Number of jail:      18
`- Jail list:           dovecot-pop3imap, pure-ftpd, roundcube, apache, ssh, dovecot, apache-overflows, apache-noscript, squirrelmail, apache-dosevasive, apache-admin, pam-generic, postfix, ssh-ddos, webmin-auth, apache-404, sasl, named-refused-tcp
&lt;/pre&gt;


 # /usr/bin/fail2ban-client status apache-404
&lt;pre&gt;
Status for the jail: apache-404
|- filter
|  |- File list:        /var/log/path/error.log /var/log/path2/error.log /var/log/path2/error.log Etc...
|  |- Currently failed: 5
|  `- Total failed:     32
`- action
   |- Currently banned: 2
   |  `- IP list:       41.xxx.xxx.xxx 84.xxx.xxx.xxx 
   `- Total banned:     2
&lt;/pre&gt;

=== Testez en violant une règle ===

Créez par exemple un répertoire dans votre serveur apache, rendez obligatoire l'identification, puis entrez plusieurs fois de suite un mot de passe erroné.
Vous devriez avoir dans vols logs ceci:

 tail -f /var/log/fail2ban.log

 2011-08-08 12:27:18,730 fail2ban.actions: WARNING [apache] Ban 10.9.11.150

Effectivement, iptables à bloqué votre ip:

 iptables -L

 Chain fail2ban-apache (1 references)
 target     prot opt source               destination         
 DROP       all  --  10.9.11.150          anywhere            
 RETURN     all  --  anywhere             anywhere

Au bout de 10 minutes (en fonction de ce que vous aurez précisé dans le configuration), l'IP sera de nouveau &quot;libérée&quot;:

 2011-08-08 12:37:19,585 fail2ban.actions: WARNING [apache] Unban 10.9.11.150

== Erreur au démarrage de fail2ban ==

Si vous surveillez plusieurs services, il existe un bug gênant sur fail2ban ([http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=554162 fail2ban: fails to load iptable rules with multiple jails]) - Il existe une solution :

Lorsque vous démarrerez fail2ban, surveillez ses logs, vous devriez avoir ceci:

 2011-08-08 16:44:40,564 fail2ban.jail   : INFO   Jail 'apache-noscript' started
 2011-08-08 16:44:40,810 fail2ban.jail   : INFO   Jail 'pam-generic' started
 2011-08-08 16:44:41,051 fail2ban.jail   : INFO   Jail 'xinetd-fail' started
 2011-08-08 16:44:41,269 fail2ban.jail   : INFO   Jail 'ssh-ddos' started
 2011-08-08 16:44:41,506 fail2ban.jail   : INFO   Jail 'apache-multiport' started
 2011-08-08 16:44:41,739 fail2ban.jail   : INFO   Jail 'apache-overflows' started
 2011-08-08 16:44:41,976 fail2ban.jail   : INFO   Jail 'ssh' started
 2011-08-08 16:44:42,206 fail2ban.jail   : INFO   Jail 'postfix' started
 2011-08-08 16:44:42,448 fail2ban.jail   : INFO   Jail 'sasl' started
 2011-08-08 16:44:42,667 fail2ban.jail   : INFO   Jail 'apache' started

Si vous avez ce genre de message d'erreur:

 2011-08-08 12:22:52,286 fail2ban.actions.action: ERROR  iptables -N fail2ban-pam-generic
 iptables -A fail2ban-pam-generic -j RETURN
 iptables -I INPUT -p tcp -j fail2ban-pam-generic returned 400
 2011-08-08 15:06:04,467 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports 10122 -j fail2ban-ssh-ddos
 iptables -F fail2ban-ssh-ddos
 iptables -X fail2ban-ssh-ddos returned 100
 2011-08-08 15:06:10,027 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-overflows
 iptables -A fail2ban-apache-overflows -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows returned 200
 2011-08-08 15:06:10,224 fail2ban.actions.action: ERROR  iptables -N fail2ban-postfix
 iptables -A fail2ban-postfix -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp -j fail2ban-postfix returned 400
 2011-08-08 15:06:10,283 fail2ban.actions.action: ERROR  iptables -N fail2ban-sasl
 iptables -A fail2ban-sasl -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl returned 200
 2011-08-08 15:14:26,002 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows
 iptables -F fail2ban-apache-overflows
 iptables -X fail2ban-apache-overflows returned 100
 2011-08-08 15:14:28,374 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl
 iptables -F fail2ban-sasl
 iptables -X fail2ban-sasl returned 100
 2011-08-08 15:14:45,382 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-noscript
 iptables -A fail2ban-apache-noscript -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-noscript returned 400

Il existe deux solutions:

1) Modifier le fichier /usr/bin/fail2ban-client

'''Faite une sauvegarde de  auparavant...'''

Editez le fichier /usr/bin/fail2ban-client et ajoutez une temporisation (time.sleep(0.1)) à cet endroit:

        def __processCmd(self, cmd, showRet = True):
                beautifier = Beautifier()
                for c in cmd:
                        time.sleep(0.1)
                        beautifier.setInputCmd(c)

Si la temporisation à 0.1 ne suffit pas, mettez 0.2. et redémarrez fail2ban.

2) Installer une version supérieure (Fixed in version fail2ban/0.8.5-2)

Installer la version testing (8.6-3 0) ou celle des backports (8.6-3~bpo60+1)

== Fail2ban et ipv6 (EXPERIMENTAL) ==

Vous le savez, l'ipv6 se généralise, lancement officiel le 6 juin 2012
Quid de fail2ban ? Malheureusement, fail2ban ne supporte pas encore l'ipv6.
Heureusement, il existe un patch qui permet d'avoir fail2ban activé sur votre ipv6...

Mode d'emploi:

Téléchargez le patch:
&lt;pre&gt;
wget http://thanatos.trollprod.org/sousites/fail2banv6/fail2ban-ipv6.tar.bz2
--2012-04-14 09:30:31--  http://thanatos.trollprod.org/sousites/fail2banv6/fail2ban-ipv6.tar.bz2
Résolution de thanatos.trollprod.org (thanatos.trollprod.org)... 94.23.14.97, 2001:41d0:2:f61::fed1:fe54
Connexion vers thanatos.trollprod.org (thanatos.trollprod.org)|94.23.14.97|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 2293 (2,2K) [application/x-bzip]
Sauvegarde en : «fail2ban-ipv6.tar.bz2»

100%[=============================================================================================&gt;] 2 293       --.-K/s   ds 0,001s  

2012-04-14 09:30:31 (2,98 MB/s) - «fail2ban-ipv6.tar.bz2» sauvegardé [2293/2293]
&lt;/pre&gt;

 mkdir fail2ban-ipv6
 tar xvjf fail2ban-ipv6.tar.bz2 -C fail2ban-ipv6

 cp /usr/share/fail2ban/server/filter.py /usr/share/fail2ban/server/filter.py.sos
 cp /usr/share/fail2ban/server/failregex.py /usr/share/fail2ban/server/failregex.py.sos

Testez les patch:

 cd /usr/share/fail2ban/server/

 root@nas:/usr/share/fail2ban/server# patch -p0 --dry-run &lt; /root/fail2ban-ipv6/patchfilter.patch
 patching file filter.py
 Hunk #1 succeeded at 525 (offset 14 lines).
 Hunk #2 succeeded at 549 (offset 14 lines).
 Hunk #3 succeeded at 580 (offset 14 lines).
   
 root@nas:/usr/share/fail2ban/server# patch -p0 --dry-run &lt; /root/fail2ban-ipv6/regex.patch 
 patching file failregex.py
 Hunk #1 succeeded at 47 (offset 3 lines).

Si le résultat est positif (pas d'erreur) lancez les patchs

 root@nas:/usr/share/fail2ban/server# patch -p0 &lt; /root/fail2ban-ipv6/patchfilter.patch
 patching file filter.py
 Hunk #1 succeeded at 525 (offset 14 lines).
 Hunk #2 succeeded at 549 (offset 14 lines).
 Hunk #3 succeeded at 580 (offset 14 lines).
 root@nas:/usr/share/fail2ban/server# patch -p0 &lt; /root/fail2ban-ipv6/regex.patch 
 patching file failregex.py
 Hunk #1 succeeded at 47 (offset 3 lines).

Copiez les fichiers nécessaires:

 root@nas:/usr/share/fail2ban/server# cp /root/fail2ban-ipv6/ip64tables.sh /usr/bin/
 root@nas:/usr/share/fail2ban/server# chmod 755 /usr/bin/ip64tables.sh
 root@nas:/usr/share/fail2ban/server# cp /root/fail2ban-ipv6/iptables46-multiport.conf /etc/fail2ban/action.d/
 root@nas:/usr/share/fail2ban/server# chmod 644 /etc/fail2ban/action.d/iptables46-multiport.conf

Créez le bloc de configuration:

 nano /etc/fail2ban/jail.conf

 ...
 [ssh-ip6tables]
 enabled = true
 filter  = sshd
 logpath  = /var/log/auth.log
 maxretry = 6
 action   = iptables46-multiport[name=SSH, port=22, protocol=tcp]
            sendmail-whois[name=SSH, dest=root, sender=fail2ban@mail.com]
 ...

Redémarrez fail2ban et vérifiez qu'il est actif:

 service fail2ban restart
 Restarting authentication failure monitor: fail2ban.
 ip6tables -S
 ...
 -N fail2ban-SSH
 -A INPUT -p tcp -m multiport --dports 22 -j fail2ban-SSH
 -A fail2ban-SSH -j RETURN

Avertissement:
# N'a pas encore été testé
# Ne pas activer la résolution de nom dans les logs

{{en}} [http://www.fail2ban.org/wiki/index.php/Fail2ban:Community_Portal#IPv6_Experimental_support Source - Wiki fail2ban]

== Liens externes ==

Je vous encourage à lire:

* La page de man de fail2ban
* [http://www.fail2ban.org/wiki/index.php/Main_Page Le Wiki de fail2ban - Très complet]

[[Utilisateur:Lol|Lol]] 8 août 2011 à 09:00 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>7e8iq5re2gx9z38b3jx2cwz79jfz8bq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4401</id>
      <parentid>4400</parentid>
      <timestamp>2012-08-16T04:08:23Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Patchez le fichier de support de date de fail2ban */</comment>
      <text xml:space="preserve" bytes="22377">== Qu'est-ce que Fail2ban? ==
Fail2ban lit des fichiers de log comme /var/log/pwdfail ou /var/log/apache/error_log et bannit les adresses IP qui ont obtenu un trop grand nombre d'échecs lors de l'authentification. Il met à jour les règles du pare-feu pour rejeter cette adresse IP. Ces règles peuvent êtres défines par l'utilisateur. Fail2ban peut lire plusieurs fichiers de log comme ceux de sshd ou du serveur Apache.

== Installation ==

 apt-get install fail2ban

Par défaut, le port 22 (ssh) est surveillé, vous pouvez vérifier que les règles ipatbles ont bien prises en compte fail2ban:

 iptables -S | grep fail2ban
&lt;code&gt;
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh 
-A fail2ban-ssh -j RETURN
&lt;/code&gt;

== Configuration ==

Deux fichiers:

=== fail2ban.conf ===

Rien à faire dans ce fichier, vous pouvez laisser les options par défaut:

 /etc/fail2ban/fail2ban.conf

 loglevel = 3
 logtarget = /var/log/fail2ban.log
 socket = /var/run/fail2ban/fail2ban.sock

=== jail.conf ===

Ce fichier est beaucoup plus intéressant, il contient tous les services à monitorer, et vous allez le découvrir, fail2ban ne se limite pas à SSH...

 /etc/fail2ban/jail.conf

Vérifiez l'adresse d'envoi des mails d'avertissement:

 [DEFAULT]
 destemail = root@localhost

'''Erreur commune pour l'envoi des mail d'alertes'''

N'oubliez pas de modifier la variable action = %(action_)s
Et de la placer soit sur:

 action = %(action_mw)s

Soit sur

 action = %(action_mwl)s


Pour activer la surveillance d'un service, il suffit de placer la variable &quot;enabled&quot; à &quot;true&quot;

Par défaut la protection du service SSH est activée, pas les autres:
Si votre ssh n'écoute pas sur le port 22, pensez à le changer... (port = N° de port)

 [ssh]
 enabled = true
 port    = ssh
 filter  = sshd
 logpath  = /var/log/auth.log
 maxretry = 6

D'autres services, à activer en fonction de vos besoins:

 [xinetd-fail]
 enabled   = true 
 filter    = xinetd-fail
 port      = all
 banaction = iptables-multiport-log
 logpath   = /var/log/daemon.log
 maxretry  = 2

 [pam-generic]
 enabled = true
 filter  = pam-generic
 port = all
 banaction = iptables-allports
 port     = anyport
 logpath  = /var/log/auth.log
 maxretry = 6

 [ssh-ddos]
 enabled = true
 port    = ssh
 filter  = sshd-ddos
 logpath  = /var/log/auth.log
 maxretry = 6

 [apache]
 enabled = true
 port    = http,https
 filter  = apache-auth
 logpath = /var/log/apache*/*error.log
 maxretry = 6

 [apache-multiport]
 enabled   = true
 port      = http,https
 filter    = apache-auth
 logpath   = /var/log/apache*/*error.log
 maxretry  = 6

 [apache-noscript]
 enabled = true 
 port    = http,https
 filter  = apache-noscript
 logpath = /var/log/apache*/*error.log
 maxretry = 6

 [apache-overflows]
 enabled = true 
 port    = http,https
 filter  = apache-overflows
 logpath = /var/log/apache*/*error.log
 maxretry = 2

 [postfix]
 enabled  = true 
 port     = smtp,ssmtp
 filter   = postfix
 logpath  = /var/log/mail.log

 [sasl]
 enabled  = true 
 port     = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s
 filter   = sasl
 logpath  = /var/log/mail.log

n'oubliez pas de redémarrer fail2ban :

 # service fail2ban restart

=== jail.local ===

Le fichier jail.local vous permet de mettre vos règles personnelles. Voici quelques exemples:

&lt;code&gt;
[pure-ftpd]
enabled = true
port = ftp,ftp-data,ftps,ftps-data
filter = pure-ftpd
logpath = /var/log/messages
maxretry = 3

[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap, port=&quot;pop3,pop3s,imap,imaps&quot;, protocol=tcp]
logpath = /var/log/mail.log
maxretry = 5

[webmin-auth]
enabled  = true
port     = https,10000
filter   = webmin-auth
logpath  = /var/log/auth.log
maxretry = 3

# Plugin ''roundcube-fail2ban-plugin'' à installer
# 
[roundcube]
enabled  = true
port     = http,https
filter   = roundcube
action   = iptables-multiport[name=roundcube, port=&quot;http,https&quot;]
           sendmail-whois[name=roundcube, dest=root@localhost, sender=fail2ban@localhost]
logpath  = /var/www/path/logs/userlogins

# Plugin ''squirrel_logger'' à ajouter à squirrelmail
[squirrelmail]
enabled = true
port = http,https
filter = squirrelmail
logpath = /var/www/path/squirrelmail_access_log
bantime = 6000
maxretry = 4

# Règle anti-Kevin...
[apache-admin]
enabled = true
port = http
filter = apache-admin
logpath = /var/log/apache*/error*.log
maxretry = 6

# Règle anti-boulets...
[apache-404]
enabled = true
port = http
filter = apache-404
logpath = /var/log/ispconfig/httpd/*/error*
maxretry = 10
&lt;/code&gt;

Les fichiers de conf qui vont bien:

'''pure-ftpd.conf''' déjà inclu dans la configuration de base

'''dovecot-pop3imap.conf''' déjà inclu dans la configuration de base

'''webmin-auth.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
# Rule by : Delvit Guillaume
#
# $Revision: 728 $
#

[Definition]

# patern :      webmin[15673]: Non-existent login as toto from 86.0.6.217
#               webmin[29544]: Invalid login as root from 86.0.6.217
#
# Option:  failregex
# Notes.:  regex to match the password failure messages in the logfile. The
#          host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P&lt;host&gt;[\w\-.^_]+)
# Values:  TEXT
#
failregex = webmin.* Non-existent login as .+ from &lt;HOST&gt;$
            webmin.* Invalid login as .+ from &lt;HOST&gt;$

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =
&lt;/code&gt;

'''roundcube.conf'''
&lt;code&gt;
[Definition]
failregex = FAILED login for .*. from &lt;HOST&gt;
ignoreregex =
&lt;/code&gt;

'''squirrelmail.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Bill Landry ((email_protected))
#
# $Revision: 510 $

[Definition]

# Option: failregex
# Notes.: regex to match the password failures messages in the logfile. The
#         host must be matched by a group named &quot;host&quot;. The tag &quot;&quot; can
#         be used for standard IP/hostname matching and is only an alias for
#         (?:::f{4,6}:)?(?P\S+)
# Values: TEXT

failregex = \[LOGIN_ERROR\].*from &lt;HOST&gt;: Utilisateur inconnu ou mot de passe incorrect

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT

ignoreregex =
&lt;/code&gt;

'''apache-admin.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 471 $
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
# host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
# be used for standard IP/hostname matching.
# Values: TEXT
# [client x.x.x.x] File does not exist: /home/www/admin/admin,
failregex = [[]client &lt;HOST&gt;[]] File does not exist: .*admin|PMA|mysql

#
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
&lt;/code&gt;

'''apache-404.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 471 $
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
# host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
# be used for standard IP/hostname matching.
# Values: TEXT
# [client x.x.x.x] File does not exist: /home/www/admin/admin,
failregex = [[]client &lt;HOST&gt;[]] File does not exist: .*
#
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
&lt;/code&gt;

'''Option très intéressante pour les logs multiples'''

Vous avez la possibilité (si vos logs sont &quot;dispersés&quot;) de mettre des chemins &quot;relatifs&quot; - Vous pouvez utiliser les * (étoiles)

Par exemple, vos logs pour chaque site sont dispersés dans des répertoires différents...
Vous utiliserez alors le chemin suivant (tous les sous-répertoires dans /var/log/ispconfig/httpd/ seront alors pris en compte)

 logpath /var/log/ispconfig/httpd/*/error*

==== Plugins squirrelmail et rouncube ====

[http://mattrude.com/projects/roundcube-fail2ban-plugin/ Plugin roundcube-fail2ban-plugin]

[http://www.howtoforge.com/configuring-fail2ban-with-squirrelmail-on-debian-lenny-ispconfig-3 Plugin squirrel_logger]

==== Fail2ban avec mod-evasive ====

Si vous utilisez mod-evasive, le module de protection contre les attaques Ddos de apache2, vous aurez peut-etre envie d'ajouter un filtre à fail2ban:

 # $EDITOR /etc/fail2ban/filter.d/apache-dosevasive.conf 
&lt;pre&gt;
# Fail2Ban configuration file
#
# Author: Xela
#
# $Revision: 728 $
#

[Definition]

# Option:  failregex
# Notes.:  regex to match the Forbidden log entrys in apache error.log
#          maybe (but not only) provided by mod_evasive
#
# Values:  TEXT
#
#failregex = ^\[[^\]]*\]\s+\[error\]\s+\[client \] client denied by server configuration:\s
failregex = ^\[[^\]]*\]\s+\[error\]\s+\[client &lt;HOST&gt;\] client denied by server configuration:\s

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =
&lt;/pre&gt;

Ajoutez ensuite ce bloc à /etc/fail2ban/jail.local (adaptez l'emplacement du fichier log à surveiller en fonction de votre configuration)
&lt;pre&gt;
[apache-dosevasive]

enabled = true
filter  = apache-dosevasive
action = iptables-allports[name=apache-dosevasive]
logpath = /var/log/ispconfig/httpd/*/error*
#logpath = /var/log/apache*/*error.log
bantime = 600
maxretry = 10
&lt;/pre&gt;

=== Cas particulier de mysql ===

Si vous souhaitez protéger un serveur mysql dont la base est ouverte sur Internet (ce qui n'est pas conseillé et pas très prudent...), voici comment faire:

==== Activez les logs de mysql ====

Dans le fichier /etc/mysql/my.cnf

 general_log_file = /var/log/mysql/mysql.log
 general_log = 1

==== Patchez le fichier de support de date de fail2ban ====

Une sauvegarde:
cp /usr/share/fail2ban/server/datedetector.py /usr/share/fail2ban/server/datedetector.py.sos

Dans le fichier /usr/share/fail2ban/server/datedetector.py ajoutez ceci (ligne 144)

''Attention, les espaces sont des tabulations''
&lt;pre&gt;
                        # AAMMJJ HH:MM:SS
                        template = DateStrptime()
                        template.setName(&quot;YearMonthDay Hour:Minute:Second&quot;)
                        template.setRegex(&quot;\d{2}\d{2}\d{2} \d{2}:\d{2}:\d{2}&quot;)
                        template.setPattern(&quot;%y%m%d %H:%M:%S&quot;)
                        self.__templates.append(template)
&lt;/pre&gt;

Vous devriez obtenir ceci:

&lt;pre&gt;
                        ...
                        # &lt;09/16/08@05:03:30&gt;
                        template = DateStrptime()
                        template.setName(&quot;&lt;Month/Day/Year@Hour:Minute:Second&gt;&quot;)
                        template.setRegex(&quot;^&lt;\d{2}/\d{2}/\d{2}@\d{2}:\d{2}:\d{2}&gt;&quot;)
                        template.setPattern(&quot;&lt;%m/%d/%y@%H:%M:%S&gt;&quot;)
                        self.__templates.append(template)
                        # AAMMJJ HH:MM:SS
                        template = DateStrptime()
                        template.setName(&quot;YearMonthDay Hour:Minute:Second&quot;)
                        template.setRegex(&quot;\d{2}\d{2}\d{2} \d{2}:\d{2}:\d{2}&quot;)
                        template.setPattern(&quot;%y%m%d %H:%M:%S&quot;)
                        self.__templates.append(template)
                finally:
                        self.__lock.release()
                        ...
&lt;/pre&gt;

==== Configurez fail2ban ====

 $editor /etc/fail2ban/jail.conf
&lt;pre&gt;
[mysql]
enabled = true
port = 3306
filter = mysqld
logpath = /var/log/mysql/mysql.log
maxretry = 3
&lt;/pre&gt;

 $editor /etc/fail2ban/filter.d/mysqld.conf
&lt;pre&gt;
# Fail2Ban configuration file
#
# Author: JOUBERT Pierre-Benoît
#

[Definition]
failregex = Access denied for user '.*'@'&lt;HOST&gt;'
&lt;/pre&gt;

== Test ==

=== Testez les règles ===

L'erreur commune est de se tromper de fichier log... Vérifiez et revérifiez que le fichier donné en &quot;logpath&quot; est le bon.
Ensuite testez vos règles avec la commande /usr/bin/fail2ban-regex

 # /usr/bin/fail2ban-regex /var/www/path/logs/userlogins /etc/fail2ban/filter.d/roundcube.conf

Exemple de sortie:
&lt;code&gt;
Running tests
=============

Use regex file : /etc/fail2ban/filter.d/roundcube.conf
Use log file   : /var/www/path/logs/userlogins


Results
=======

Failregex
|- Regular expressions:
|  [1] FAILED login for .*. from &lt;HOST&gt;
|
`- Number of matches:
   [1] 1 match(es)

Ignoreregex
|- Regular expressions:
|
`- Number of matches:

Summary
=======

Addresses found:
[1]
    41.xxx.xxx.xxx (Wed Dec 28 15:51:14 2011)

Date template hits:
0 hit(s): MONTH Day Hour:Minute:Second
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second Year
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second
0 hit(s): Year/Month/Day Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/MONTH/Year:Hour:Minute:Second
0 hit(s): Month/Day/Year:Hour:Minute:Second
0 hit(s): Year-Month-Day Hour:Minute:Second
2 hit(s): Day-MONTH-Year Hour:Minute:Second[.Millisecond]
0 hit(s): Day-Month-Year Hour:Minute:Second
0 hit(s): TAI64N
0 hit(s): Epoch
0 hit(s): ISO 8601
0 hit(s): Hour:Minute:Second
0 hit(s): &lt;Month/Day/Year@Hour:Minute:Second&gt;

Success, the total number of match is 1

However, look at the above section 'Running tests' which could contain important
information.
&lt;/code&gt;

=== Testez l'état des jails ===

Avec la commande /usr/bin/fail2ban-client vous pouvez vérifier l'état de vos &quot;jails&quot;:

Exemples de sortie:

 # /usr/bin/fail2ban-client status
&lt;pre&gt;
Status
|- Number of jail:      18
`- Jail list:           dovecot-pop3imap, pure-ftpd, roundcube, apache, ssh, dovecot, apache-overflows, apache-noscript, squirrelmail, apache-dosevasive, apache-admin, pam-generic, postfix, ssh-ddos, webmin-auth, apache-404, sasl, named-refused-tcp
&lt;/pre&gt;


 # /usr/bin/fail2ban-client status apache-404
&lt;pre&gt;
Status for the jail: apache-404
|- filter
|  |- File list:        /var/log/path/error.log /var/log/path2/error.log /var/log/path2/error.log Etc...
|  |- Currently failed: 5
|  `- Total failed:     32
`- action
   |- Currently banned: 2
   |  `- IP list:       41.xxx.xxx.xxx 84.xxx.xxx.xxx 
   `- Total banned:     2
&lt;/pre&gt;

=== Testez en violant une règle ===

Créez par exemple un répertoire dans votre serveur apache, rendez obligatoire l'identification, puis entrez plusieurs fois de suite un mot de passe erroné.
Vous devriez avoir dans vols logs ceci:

 tail -f /var/log/fail2ban.log

 2011-08-08 12:27:18,730 fail2ban.actions: WARNING [apache] Ban 10.9.11.150

Effectivement, iptables à bloqué votre ip:

 iptables -L

 Chain fail2ban-apache (1 references)
 target     prot opt source               destination         
 DROP       all  --  10.9.11.150          anywhere            
 RETURN     all  --  anywhere             anywhere

Au bout de 10 minutes (en fonction de ce que vous aurez précisé dans le configuration), l'IP sera de nouveau &quot;libérée&quot;:

 2011-08-08 12:37:19,585 fail2ban.actions: WARNING [apache] Unban 10.9.11.150

== Erreur au démarrage de fail2ban ==

Si vous surveillez plusieurs services, il existe un bug gênant sur fail2ban ([http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=554162 fail2ban: fails to load iptable rules with multiple jails]) - Il existe une solution :

Lorsque vous démarrerez fail2ban, surveillez ses logs, vous devriez avoir ceci:

 2011-08-08 16:44:40,564 fail2ban.jail   : INFO   Jail 'apache-noscript' started
 2011-08-08 16:44:40,810 fail2ban.jail   : INFO   Jail 'pam-generic' started
 2011-08-08 16:44:41,051 fail2ban.jail   : INFO   Jail 'xinetd-fail' started
 2011-08-08 16:44:41,269 fail2ban.jail   : INFO   Jail 'ssh-ddos' started
 2011-08-08 16:44:41,506 fail2ban.jail   : INFO   Jail 'apache-multiport' started
 2011-08-08 16:44:41,739 fail2ban.jail   : INFO   Jail 'apache-overflows' started
 2011-08-08 16:44:41,976 fail2ban.jail   : INFO   Jail 'ssh' started
 2011-08-08 16:44:42,206 fail2ban.jail   : INFO   Jail 'postfix' started
 2011-08-08 16:44:42,448 fail2ban.jail   : INFO   Jail 'sasl' started
 2011-08-08 16:44:42,667 fail2ban.jail   : INFO   Jail 'apache' started

Si vous avez ce genre de message d'erreur:

 2011-08-08 12:22:52,286 fail2ban.actions.action: ERROR  iptables -N fail2ban-pam-generic
 iptables -A fail2ban-pam-generic -j RETURN
 iptables -I INPUT -p tcp -j fail2ban-pam-generic returned 400
 2011-08-08 15:06:04,467 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports 10122 -j fail2ban-ssh-ddos
 iptables -F fail2ban-ssh-ddos
 iptables -X fail2ban-ssh-ddos returned 100
 2011-08-08 15:06:10,027 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-overflows
 iptables -A fail2ban-apache-overflows -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows returned 200
 2011-08-08 15:06:10,224 fail2ban.actions.action: ERROR  iptables -N fail2ban-postfix
 iptables -A fail2ban-postfix -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp -j fail2ban-postfix returned 400
 2011-08-08 15:06:10,283 fail2ban.actions.action: ERROR  iptables -N fail2ban-sasl
 iptables -A fail2ban-sasl -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl returned 200
 2011-08-08 15:14:26,002 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows
 iptables -F fail2ban-apache-overflows
 iptables -X fail2ban-apache-overflows returned 100
 2011-08-08 15:14:28,374 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl
 iptables -F fail2ban-sasl
 iptables -X fail2ban-sasl returned 100
 2011-08-08 15:14:45,382 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-noscript
 iptables -A fail2ban-apache-noscript -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-noscript returned 400

Il existe deux solutions:

1) Modifier le fichier /usr/bin/fail2ban-client

'''Faite une sauvegarde de  auparavant...'''

Editez le fichier /usr/bin/fail2ban-client et ajoutez une temporisation (time.sleep(0.1)) à cet endroit:

        def __processCmd(self, cmd, showRet = True):
                beautifier = Beautifier()
                for c in cmd:
                        time.sleep(0.1)
                        beautifier.setInputCmd(c)

Si la temporisation à 0.1 ne suffit pas, mettez 0.2. et redémarrez fail2ban.

2) Installer une version supérieure (Fixed in version fail2ban/0.8.5-2)

Installer la version testing (8.6-3 0) ou celle des backports (8.6-3~bpo60+1)

== Fail2ban et ipv6 (EXPERIMENTAL) ==

Vous le savez, l'ipv6 se généralise, lancement officiel le 6 juin 2012
Quid de fail2ban ? Malheureusement, fail2ban ne supporte pas encore l'ipv6.
Heureusement, il existe un patch qui permet d'avoir fail2ban activé sur votre ipv6...

Mode d'emploi:

Téléchargez le patch:
&lt;pre&gt;
wget http://thanatos.trollprod.org/sousites/fail2banv6/fail2ban-ipv6.tar.bz2
--2012-04-14 09:30:31--  http://thanatos.trollprod.org/sousites/fail2banv6/fail2ban-ipv6.tar.bz2
Résolution de thanatos.trollprod.org (thanatos.trollprod.org)... 94.23.14.97, 2001:41d0:2:f61::fed1:fe54
Connexion vers thanatos.trollprod.org (thanatos.trollprod.org)|94.23.14.97|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 2293 (2,2K) [application/x-bzip]
Sauvegarde en : «fail2ban-ipv6.tar.bz2»

100%[=============================================================================================&gt;] 2 293       --.-K/s   ds 0,001s  

2012-04-14 09:30:31 (2,98 MB/s) - «fail2ban-ipv6.tar.bz2» sauvegardé [2293/2293]
&lt;/pre&gt;

 mkdir fail2ban-ipv6
 tar xvjf fail2ban-ipv6.tar.bz2 -C fail2ban-ipv6

 cp /usr/share/fail2ban/server/filter.py /usr/share/fail2ban/server/filter.py.sos
 cp /usr/share/fail2ban/server/failregex.py /usr/share/fail2ban/server/failregex.py.sos

Testez les patch:

 cd /usr/share/fail2ban/server/

 root@nas:/usr/share/fail2ban/server# patch -p0 --dry-run &lt; /root/fail2ban-ipv6/patchfilter.patch
 patching file filter.py
 Hunk #1 succeeded at 525 (offset 14 lines).
 Hunk #2 succeeded at 549 (offset 14 lines).
 Hunk #3 succeeded at 580 (offset 14 lines).
   
 root@nas:/usr/share/fail2ban/server# patch -p0 --dry-run &lt; /root/fail2ban-ipv6/regex.patch 
 patching file failregex.py
 Hunk #1 succeeded at 47 (offset 3 lines).

Si le résultat est positif (pas d'erreur) lancez les patchs

 root@nas:/usr/share/fail2ban/server# patch -p0 &lt; /root/fail2ban-ipv6/patchfilter.patch
 patching file filter.py
 Hunk #1 succeeded at 525 (offset 14 lines).
 Hunk #2 succeeded at 549 (offset 14 lines).
 Hunk #3 succeeded at 580 (offset 14 lines).
 root@nas:/usr/share/fail2ban/server# patch -p0 &lt; /root/fail2ban-ipv6/regex.patch 
 patching file failregex.py
 Hunk #1 succeeded at 47 (offset 3 lines).

Copiez les fichiers nécessaires:

 root@nas:/usr/share/fail2ban/server# cp /root/fail2ban-ipv6/ip64tables.sh /usr/bin/
 root@nas:/usr/share/fail2ban/server# chmod 755 /usr/bin/ip64tables.sh
 root@nas:/usr/share/fail2ban/server# cp /root/fail2ban-ipv6/iptables46-multiport.conf /etc/fail2ban/action.d/
 root@nas:/usr/share/fail2ban/server# chmod 644 /etc/fail2ban/action.d/iptables46-multiport.conf

Créez le bloc de configuration:

 nano /etc/fail2ban/jail.conf

 ...
 [ssh-ip6tables]
 enabled = true
 filter  = sshd
 logpath  = /var/log/auth.log
 maxretry = 6
 action   = iptables46-multiport[name=SSH, port=22, protocol=tcp]
            sendmail-whois[name=SSH, dest=root, sender=fail2ban@mail.com]
 ...

Redémarrez fail2ban et vérifiez qu'il est actif:

 service fail2ban restart
 Restarting authentication failure monitor: fail2ban.
 ip6tables -S
 ...
 -N fail2ban-SSH
 -A INPUT -p tcp -m multiport --dports 22 -j fail2ban-SSH
 -A fail2ban-SSH -j RETURN

Avertissement:
# N'a pas encore été testé
# Ne pas activer la résolution de nom dans les logs

{{en}} [http://www.fail2ban.org/wiki/index.php/Fail2ban:Community_Portal#IPv6_Experimental_support Source - Wiki fail2ban]

== Liens externes ==

Je vous encourage à lire:

* La page de man de fail2ban
* [http://www.fail2ban.org/wiki/index.php/Main_Page Le Wiki de fail2ban - Très complet]

[[Utilisateur:Lol|Lol]] 8 août 2011 à 09:00 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>ccmbq95wkvqyzet8vp9qsk3ap62xo3k</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4402</id>
      <parentid>4401</parentid>
      <timestamp>2012-08-16T04:10:01Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Cas particulier de mysql */</comment>
      <text xml:space="preserve" bytes="22470">== Qu'est-ce que Fail2ban? ==
Fail2ban lit des fichiers de log comme /var/log/pwdfail ou /var/log/apache/error_log et bannit les adresses IP qui ont obtenu un trop grand nombre d'échecs lors de l'authentification. Il met à jour les règles du pare-feu pour rejeter cette adresse IP. Ces règles peuvent êtres défines par l'utilisateur. Fail2ban peut lire plusieurs fichiers de log comme ceux de sshd ou du serveur Apache.

== Installation ==

 apt-get install fail2ban

Par défaut, le port 22 (ssh) est surveillé, vous pouvez vérifier que les règles ipatbles ont bien prises en compte fail2ban:

 iptables -S | grep fail2ban
&lt;code&gt;
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh 
-A fail2ban-ssh -j RETURN
&lt;/code&gt;

== Configuration ==

Deux fichiers:

=== fail2ban.conf ===

Rien à faire dans ce fichier, vous pouvez laisser les options par défaut:

 /etc/fail2ban/fail2ban.conf

 loglevel = 3
 logtarget = /var/log/fail2ban.log
 socket = /var/run/fail2ban/fail2ban.sock

=== jail.conf ===

Ce fichier est beaucoup plus intéressant, il contient tous les services à monitorer, et vous allez le découvrir, fail2ban ne se limite pas à SSH...

 /etc/fail2ban/jail.conf

Vérifiez l'adresse d'envoi des mails d'avertissement:

 [DEFAULT]
 destemail = root@localhost

'''Erreur commune pour l'envoi des mail d'alertes'''

N'oubliez pas de modifier la variable action = %(action_)s
Et de la placer soit sur:

 action = %(action_mw)s

Soit sur

 action = %(action_mwl)s


Pour activer la surveillance d'un service, il suffit de placer la variable &quot;enabled&quot; à &quot;true&quot;

Par défaut la protection du service SSH est activée, pas les autres:
Si votre ssh n'écoute pas sur le port 22, pensez à le changer... (port = N° de port)

 [ssh]
 enabled = true
 port    = ssh
 filter  = sshd
 logpath  = /var/log/auth.log
 maxretry = 6

D'autres services, à activer en fonction de vos besoins:

 [xinetd-fail]
 enabled   = true 
 filter    = xinetd-fail
 port      = all
 banaction = iptables-multiport-log
 logpath   = /var/log/daemon.log
 maxretry  = 2

 [pam-generic]
 enabled = true
 filter  = pam-generic
 port = all
 banaction = iptables-allports
 port     = anyport
 logpath  = /var/log/auth.log
 maxretry = 6

 [ssh-ddos]
 enabled = true
 port    = ssh
 filter  = sshd-ddos
 logpath  = /var/log/auth.log
 maxretry = 6

 [apache]
 enabled = true
 port    = http,https
 filter  = apache-auth
 logpath = /var/log/apache*/*error.log
 maxretry = 6

 [apache-multiport]
 enabled   = true
 port      = http,https
 filter    = apache-auth
 logpath   = /var/log/apache*/*error.log
 maxretry  = 6

 [apache-noscript]
 enabled = true 
 port    = http,https
 filter  = apache-noscript
 logpath = /var/log/apache*/*error.log
 maxretry = 6

 [apache-overflows]
 enabled = true 
 port    = http,https
 filter  = apache-overflows
 logpath = /var/log/apache*/*error.log
 maxretry = 2

 [postfix]
 enabled  = true 
 port     = smtp,ssmtp
 filter   = postfix
 logpath  = /var/log/mail.log

 [sasl]
 enabled  = true 
 port     = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s
 filter   = sasl
 logpath  = /var/log/mail.log

n'oubliez pas de redémarrer fail2ban :

 # service fail2ban restart

=== jail.local ===

Le fichier jail.local vous permet de mettre vos règles personnelles. Voici quelques exemples:

&lt;code&gt;
[pure-ftpd]
enabled = true
port = ftp,ftp-data,ftps,ftps-data
filter = pure-ftpd
logpath = /var/log/messages
maxretry = 3

[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap, port=&quot;pop3,pop3s,imap,imaps&quot;, protocol=tcp]
logpath = /var/log/mail.log
maxretry = 5

[webmin-auth]
enabled  = true
port     = https,10000
filter   = webmin-auth
logpath  = /var/log/auth.log
maxretry = 3

# Plugin ''roundcube-fail2ban-plugin'' à installer
# 
[roundcube]
enabled  = true
port     = http,https
filter   = roundcube
action   = iptables-multiport[name=roundcube, port=&quot;http,https&quot;]
           sendmail-whois[name=roundcube, dest=root@localhost, sender=fail2ban@localhost]
logpath  = /var/www/path/logs/userlogins

# Plugin ''squirrel_logger'' à ajouter à squirrelmail
[squirrelmail]
enabled = true
port = http,https
filter = squirrelmail
logpath = /var/www/path/squirrelmail_access_log
bantime = 6000
maxretry = 4

# Règle anti-Kevin...
[apache-admin]
enabled = true
port = http
filter = apache-admin
logpath = /var/log/apache*/error*.log
maxretry = 6

# Règle anti-boulets...
[apache-404]
enabled = true
port = http
filter = apache-404
logpath = /var/log/ispconfig/httpd/*/error*
maxretry = 10
&lt;/code&gt;

Les fichiers de conf qui vont bien:

'''pure-ftpd.conf''' déjà inclu dans la configuration de base

'''dovecot-pop3imap.conf''' déjà inclu dans la configuration de base

'''webmin-auth.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
# Rule by : Delvit Guillaume
#
# $Revision: 728 $
#

[Definition]

# patern :      webmin[15673]: Non-existent login as toto from 86.0.6.217
#               webmin[29544]: Invalid login as root from 86.0.6.217
#
# Option:  failregex
# Notes.:  regex to match the password failure messages in the logfile. The
#          host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P&lt;host&gt;[\w\-.^_]+)
# Values:  TEXT
#
failregex = webmin.* Non-existent login as .+ from &lt;HOST&gt;$
            webmin.* Invalid login as .+ from &lt;HOST&gt;$

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =
&lt;/code&gt;

'''roundcube.conf'''
&lt;code&gt;
[Definition]
failregex = FAILED login for .*. from &lt;HOST&gt;
ignoreregex =
&lt;/code&gt;

'''squirrelmail.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Bill Landry ((email_protected))
#
# $Revision: 510 $

[Definition]

# Option: failregex
# Notes.: regex to match the password failures messages in the logfile. The
#         host must be matched by a group named &quot;host&quot;. The tag &quot;&quot; can
#         be used for standard IP/hostname matching and is only an alias for
#         (?:::f{4,6}:)?(?P\S+)
# Values: TEXT

failregex = \[LOGIN_ERROR\].*from &lt;HOST&gt;: Utilisateur inconnu ou mot de passe incorrect

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT

ignoreregex =
&lt;/code&gt;

'''apache-admin.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 471 $
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
# host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
# be used for standard IP/hostname matching.
# Values: TEXT
# [client x.x.x.x] File does not exist: /home/www/admin/admin,
failregex = [[]client &lt;HOST&gt;[]] File does not exist: .*admin|PMA|mysql

#
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
&lt;/code&gt;

'''apache-404.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 471 $
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
# host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
# be used for standard IP/hostname matching.
# Values: TEXT
# [client x.x.x.x] File does not exist: /home/www/admin/admin,
failregex = [[]client &lt;HOST&gt;[]] File does not exist: .*
#
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
&lt;/code&gt;

'''Option très intéressante pour les logs multiples'''

Vous avez la possibilité (si vos logs sont &quot;dispersés&quot;) de mettre des chemins &quot;relatifs&quot; - Vous pouvez utiliser les * (étoiles)

Par exemple, vos logs pour chaque site sont dispersés dans des répertoires différents...
Vous utiliserez alors le chemin suivant (tous les sous-répertoires dans /var/log/ispconfig/httpd/ seront alors pris en compte)

 logpath /var/log/ispconfig/httpd/*/error*

==== Plugins squirrelmail et rouncube ====

[http://mattrude.com/projects/roundcube-fail2ban-plugin/ Plugin roundcube-fail2ban-plugin]

[http://www.howtoforge.com/configuring-fail2ban-with-squirrelmail-on-debian-lenny-ispconfig-3 Plugin squirrel_logger]

==== Fail2ban avec mod-evasive ====

Si vous utilisez mod-evasive, le module de protection contre les attaques Ddos de apache2, vous aurez peut-etre envie d'ajouter un filtre à fail2ban:

 # $EDITOR /etc/fail2ban/filter.d/apache-dosevasive.conf 
&lt;pre&gt;
# Fail2Ban configuration file
#
# Author: Xela
#
# $Revision: 728 $
#

[Definition]

# Option:  failregex
# Notes.:  regex to match the Forbidden log entrys in apache error.log
#          maybe (but not only) provided by mod_evasive
#
# Values:  TEXT
#
#failregex = ^\[[^\]]*\]\s+\[error\]\s+\[client \] client denied by server configuration:\s
failregex = ^\[[^\]]*\]\s+\[error\]\s+\[client &lt;HOST&gt;\] client denied by server configuration:\s

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =
&lt;/pre&gt;

Ajoutez ensuite ce bloc à /etc/fail2ban/jail.local (adaptez l'emplacement du fichier log à surveiller en fonction de votre configuration)
&lt;pre&gt;
[apache-dosevasive]

enabled = true
filter  = apache-dosevasive
action = iptables-allports[name=apache-dosevasive]
logpath = /var/log/ispconfig/httpd/*/error*
#logpath = /var/log/apache*/*error.log
bantime = 600
maxretry = 10
&lt;/pre&gt;

=== Cas particulier de mysql ===

Si vous souhaitez protéger un serveur mysql dont la base est ouverte sur Internet (ce qui n'est pas conseillé et pas très prudent...), voici comment faire:

[[https://www.debian-fr.org/securite-anti-brute-force-t39497.html Discussion sur le Forum]]

==== Activez les logs de mysql ====

Dans le fichier /etc/mysql/my.cnf

 general_log_file = /var/log/mysql/mysql.log
 general_log = 1

==== Patchez le fichier de support de date de fail2ban ====

Une sauvegarde:
cp /usr/share/fail2ban/server/datedetector.py /usr/share/fail2ban/server/datedetector.py.sos

Dans le fichier /usr/share/fail2ban/server/datedetector.py ajoutez ceci (ligne 144)

''Attention, les espaces sont des tabulations''
&lt;pre&gt;
                        # AAMMJJ HH:MM:SS
                        template = DateStrptime()
                        template.setName(&quot;YearMonthDay Hour:Minute:Second&quot;)
                        template.setRegex(&quot;\d{2}\d{2}\d{2} \d{2}:\d{2}:\d{2}&quot;)
                        template.setPattern(&quot;%y%m%d %H:%M:%S&quot;)
                        self.__templates.append(template)
&lt;/pre&gt;

Vous devriez obtenir ceci:

&lt;pre&gt;
                        ...
                        # &lt;09/16/08@05:03:30&gt;
                        template = DateStrptime()
                        template.setName(&quot;&lt;Month/Day/Year@Hour:Minute:Second&gt;&quot;)
                        template.setRegex(&quot;^&lt;\d{2}/\d{2}/\d{2}@\d{2}:\d{2}:\d{2}&gt;&quot;)
                        template.setPattern(&quot;&lt;%m/%d/%y@%H:%M:%S&gt;&quot;)
                        self.__templates.append(template)
                        # AAMMJJ HH:MM:SS
                        template = DateStrptime()
                        template.setName(&quot;YearMonthDay Hour:Minute:Second&quot;)
                        template.setRegex(&quot;\d{2}\d{2}\d{2} \d{2}:\d{2}:\d{2}&quot;)
                        template.setPattern(&quot;%y%m%d %H:%M:%S&quot;)
                        self.__templates.append(template)
                finally:
                        self.__lock.release()
                        ...
&lt;/pre&gt;

==== Configurez fail2ban ====

 $editor /etc/fail2ban/jail.conf
&lt;pre&gt;
[mysql]
enabled = true
port = 3306
filter = mysqld
logpath = /var/log/mysql/mysql.log
maxretry = 3
&lt;/pre&gt;

 $editor /etc/fail2ban/filter.d/mysqld.conf
&lt;pre&gt;
# Fail2Ban configuration file
#
# Author: JOUBERT Pierre-Benoît
#

[Definition]
failregex = Access denied for user '.*'@'&lt;HOST&gt;'
&lt;/pre&gt;

== Test ==

=== Testez les règles ===

L'erreur commune est de se tromper de fichier log... Vérifiez et revérifiez que le fichier donné en &quot;logpath&quot; est le bon.
Ensuite testez vos règles avec la commande /usr/bin/fail2ban-regex

 # /usr/bin/fail2ban-regex /var/www/path/logs/userlogins /etc/fail2ban/filter.d/roundcube.conf

Exemple de sortie:
&lt;code&gt;
Running tests
=============

Use regex file : /etc/fail2ban/filter.d/roundcube.conf
Use log file   : /var/www/path/logs/userlogins


Results
=======

Failregex
|- Regular expressions:
|  [1] FAILED login for .*. from &lt;HOST&gt;
|
`- Number of matches:
   [1] 1 match(es)

Ignoreregex
|- Regular expressions:
|
`- Number of matches:

Summary
=======

Addresses found:
[1]
    41.xxx.xxx.xxx (Wed Dec 28 15:51:14 2011)

Date template hits:
0 hit(s): MONTH Day Hour:Minute:Second
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second Year
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second
0 hit(s): Year/Month/Day Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/MONTH/Year:Hour:Minute:Second
0 hit(s): Month/Day/Year:Hour:Minute:Second
0 hit(s): Year-Month-Day Hour:Minute:Second
2 hit(s): Day-MONTH-Year Hour:Minute:Second[.Millisecond]
0 hit(s): Day-Month-Year Hour:Minute:Second
0 hit(s): TAI64N
0 hit(s): Epoch
0 hit(s): ISO 8601
0 hit(s): Hour:Minute:Second
0 hit(s): &lt;Month/Day/Year@Hour:Minute:Second&gt;

Success, the total number of match is 1

However, look at the above section 'Running tests' which could contain important
information.
&lt;/code&gt;

=== Testez l'état des jails ===

Avec la commande /usr/bin/fail2ban-client vous pouvez vérifier l'état de vos &quot;jails&quot;:

Exemples de sortie:

 # /usr/bin/fail2ban-client status
&lt;pre&gt;
Status
|- Number of jail:      18
`- Jail list:           dovecot-pop3imap, pure-ftpd, roundcube, apache, ssh, dovecot, apache-overflows, apache-noscript, squirrelmail, apache-dosevasive, apache-admin, pam-generic, postfix, ssh-ddos, webmin-auth, apache-404, sasl, named-refused-tcp
&lt;/pre&gt;


 # /usr/bin/fail2ban-client status apache-404
&lt;pre&gt;
Status for the jail: apache-404
|- filter
|  |- File list:        /var/log/path/error.log /var/log/path2/error.log /var/log/path2/error.log Etc...
|  |- Currently failed: 5
|  `- Total failed:     32
`- action
   |- Currently banned: 2
   |  `- IP list:       41.xxx.xxx.xxx 84.xxx.xxx.xxx 
   `- Total banned:     2
&lt;/pre&gt;

=== Testez en violant une règle ===

Créez par exemple un répertoire dans votre serveur apache, rendez obligatoire l'identification, puis entrez plusieurs fois de suite un mot de passe erroné.
Vous devriez avoir dans vols logs ceci:

 tail -f /var/log/fail2ban.log

 2011-08-08 12:27:18,730 fail2ban.actions: WARNING [apache] Ban 10.9.11.150

Effectivement, iptables à bloqué votre ip:

 iptables -L

 Chain fail2ban-apache (1 references)
 target     prot opt source               destination         
 DROP       all  --  10.9.11.150          anywhere            
 RETURN     all  --  anywhere             anywhere

Au bout de 10 minutes (en fonction de ce que vous aurez précisé dans le configuration), l'IP sera de nouveau &quot;libérée&quot;:

 2011-08-08 12:37:19,585 fail2ban.actions: WARNING [apache] Unban 10.9.11.150

== Erreur au démarrage de fail2ban ==

Si vous surveillez plusieurs services, il existe un bug gênant sur fail2ban ([http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=554162 fail2ban: fails to load iptable rules with multiple jails]) - Il existe une solution :

Lorsque vous démarrerez fail2ban, surveillez ses logs, vous devriez avoir ceci:

 2011-08-08 16:44:40,564 fail2ban.jail   : INFO   Jail 'apache-noscript' started
 2011-08-08 16:44:40,810 fail2ban.jail   : INFO   Jail 'pam-generic' started
 2011-08-08 16:44:41,051 fail2ban.jail   : INFO   Jail 'xinetd-fail' started
 2011-08-08 16:44:41,269 fail2ban.jail   : INFO   Jail 'ssh-ddos' started
 2011-08-08 16:44:41,506 fail2ban.jail   : INFO   Jail 'apache-multiport' started
 2011-08-08 16:44:41,739 fail2ban.jail   : INFO   Jail 'apache-overflows' started
 2011-08-08 16:44:41,976 fail2ban.jail   : INFO   Jail 'ssh' started
 2011-08-08 16:44:42,206 fail2ban.jail   : INFO   Jail 'postfix' started
 2011-08-08 16:44:42,448 fail2ban.jail   : INFO   Jail 'sasl' started
 2011-08-08 16:44:42,667 fail2ban.jail   : INFO   Jail 'apache' started

Si vous avez ce genre de message d'erreur:

 2011-08-08 12:22:52,286 fail2ban.actions.action: ERROR  iptables -N fail2ban-pam-generic
 iptables -A fail2ban-pam-generic -j RETURN
 iptables -I INPUT -p tcp -j fail2ban-pam-generic returned 400
 2011-08-08 15:06:04,467 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports 10122 -j fail2ban-ssh-ddos
 iptables -F fail2ban-ssh-ddos
 iptables -X fail2ban-ssh-ddos returned 100
 2011-08-08 15:06:10,027 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-overflows
 iptables -A fail2ban-apache-overflows -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows returned 200
 2011-08-08 15:06:10,224 fail2ban.actions.action: ERROR  iptables -N fail2ban-postfix
 iptables -A fail2ban-postfix -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp -j fail2ban-postfix returned 400
 2011-08-08 15:06:10,283 fail2ban.actions.action: ERROR  iptables -N fail2ban-sasl
 iptables -A fail2ban-sasl -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl returned 200
 2011-08-08 15:14:26,002 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows
 iptables -F fail2ban-apache-overflows
 iptables -X fail2ban-apache-overflows returned 100
 2011-08-08 15:14:28,374 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl
 iptables -F fail2ban-sasl
 iptables -X fail2ban-sasl returned 100
 2011-08-08 15:14:45,382 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-noscript
 iptables -A fail2ban-apache-noscript -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-noscript returned 400

Il existe deux solutions:

1) Modifier le fichier /usr/bin/fail2ban-client

'''Faite une sauvegarde de  auparavant...'''

Editez le fichier /usr/bin/fail2ban-client et ajoutez une temporisation (time.sleep(0.1)) à cet endroit:

        def __processCmd(self, cmd, showRet = True):
                beautifier = Beautifier()
                for c in cmd:
                        time.sleep(0.1)
                        beautifier.setInputCmd(c)

Si la temporisation à 0.1 ne suffit pas, mettez 0.2. et redémarrez fail2ban.

2) Installer une version supérieure (Fixed in version fail2ban/0.8.5-2)

Installer la version testing (8.6-3 0) ou celle des backports (8.6-3~bpo60+1)

== Fail2ban et ipv6 (EXPERIMENTAL) ==

Vous le savez, l'ipv6 se généralise, lancement officiel le 6 juin 2012
Quid de fail2ban ? Malheureusement, fail2ban ne supporte pas encore l'ipv6.
Heureusement, il existe un patch qui permet d'avoir fail2ban activé sur votre ipv6...

Mode d'emploi:

Téléchargez le patch:
&lt;pre&gt;
wget http://thanatos.trollprod.org/sousites/fail2banv6/fail2ban-ipv6.tar.bz2
--2012-04-14 09:30:31--  http://thanatos.trollprod.org/sousites/fail2banv6/fail2ban-ipv6.tar.bz2
Résolution de thanatos.trollprod.org (thanatos.trollprod.org)... 94.23.14.97, 2001:41d0:2:f61::fed1:fe54
Connexion vers thanatos.trollprod.org (thanatos.trollprod.org)|94.23.14.97|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 2293 (2,2K) [application/x-bzip]
Sauvegarde en : «fail2ban-ipv6.tar.bz2»

100%[=============================================================================================&gt;] 2 293       --.-K/s   ds 0,001s  

2012-04-14 09:30:31 (2,98 MB/s) - «fail2ban-ipv6.tar.bz2» sauvegardé [2293/2293]
&lt;/pre&gt;

 mkdir fail2ban-ipv6
 tar xvjf fail2ban-ipv6.tar.bz2 -C fail2ban-ipv6

 cp /usr/share/fail2ban/server/filter.py /usr/share/fail2ban/server/filter.py.sos
 cp /usr/share/fail2ban/server/failregex.py /usr/share/fail2ban/server/failregex.py.sos

Testez les patch:

 cd /usr/share/fail2ban/server/

 root@nas:/usr/share/fail2ban/server# patch -p0 --dry-run &lt; /root/fail2ban-ipv6/patchfilter.patch
 patching file filter.py
 Hunk #1 succeeded at 525 (offset 14 lines).
 Hunk #2 succeeded at 549 (offset 14 lines).
 Hunk #3 succeeded at 580 (offset 14 lines).
   
 root@nas:/usr/share/fail2ban/server# patch -p0 --dry-run &lt; /root/fail2ban-ipv6/regex.patch 
 patching file failregex.py
 Hunk #1 succeeded at 47 (offset 3 lines).

Si le résultat est positif (pas d'erreur) lancez les patchs

 root@nas:/usr/share/fail2ban/server# patch -p0 &lt; /root/fail2ban-ipv6/patchfilter.patch
 patching file filter.py
 Hunk #1 succeeded at 525 (offset 14 lines).
 Hunk #2 succeeded at 549 (offset 14 lines).
 Hunk #3 succeeded at 580 (offset 14 lines).
 root@nas:/usr/share/fail2ban/server# patch -p0 &lt; /root/fail2ban-ipv6/regex.patch 
 patching file failregex.py
 Hunk #1 succeeded at 47 (offset 3 lines).

Copiez les fichiers nécessaires:

 root@nas:/usr/share/fail2ban/server# cp /root/fail2ban-ipv6/ip64tables.sh /usr/bin/
 root@nas:/usr/share/fail2ban/server# chmod 755 /usr/bin/ip64tables.sh
 root@nas:/usr/share/fail2ban/server# cp /root/fail2ban-ipv6/iptables46-multiport.conf /etc/fail2ban/action.d/
 root@nas:/usr/share/fail2ban/server# chmod 644 /etc/fail2ban/action.d/iptables46-multiport.conf

Créez le bloc de configuration:

 nano /etc/fail2ban/jail.conf

 ...
 [ssh-ip6tables]
 enabled = true
 filter  = sshd
 logpath  = /var/log/auth.log
 maxretry = 6
 action   = iptables46-multiport[name=SSH, port=22, protocol=tcp]
            sendmail-whois[name=SSH, dest=root, sender=fail2ban@mail.com]
 ...

Redémarrez fail2ban et vérifiez qu'il est actif:

 service fail2ban restart
 Restarting authentication failure monitor: fail2ban.
 ip6tables -S
 ...
 -N fail2ban-SSH
 -A INPUT -p tcp -m multiport --dports 22 -j fail2ban-SSH
 -A fail2ban-SSH -j RETURN

Avertissement:
# N'a pas encore été testé
# Ne pas activer la résolution de nom dans les logs

{{en}} [http://www.fail2ban.org/wiki/index.php/Fail2ban:Community_Portal#IPv6_Experimental_support Source - Wiki fail2ban]

== Liens externes ==

Je vous encourage à lire:

* La page de man de fail2ban
* [http://www.fail2ban.org/wiki/index.php/Main_Page Le Wiki de fail2ban - Très complet]

[[Utilisateur:Lol|Lol]] 8 août 2011 à 09:00 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>l54dfwd9wk3g4n90f4ykmtvwufwaw3f</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5363</id>
      <parentid>4402</parentid>
      <timestamp>2013-08-26T12:00:39Z</timestamp>
      <contributor>
        <username>NaMoUr</username>
        <id>280</id>
      </contributor>
      <minor/>
      <comment>/* Plugins squirrelmail et rouncube */</comment>
      <text xml:space="preserve" bytes="22658">== Qu'est-ce que Fail2ban? ==
Fail2ban lit des fichiers de log comme /var/log/pwdfail ou /var/log/apache/error_log et bannit les adresses IP qui ont obtenu un trop grand nombre d'échecs lors de l'authentification. Il met à jour les règles du pare-feu pour rejeter cette adresse IP. Ces règles peuvent êtres défines par l'utilisateur. Fail2ban peut lire plusieurs fichiers de log comme ceux de sshd ou du serveur Apache.

== Installation ==

 apt-get install fail2ban

Par défaut, le port 22 (ssh) est surveillé, vous pouvez vérifier que les règles ipatbles ont bien prises en compte fail2ban:

 iptables -S | grep fail2ban
&lt;code&gt;
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh 
-A fail2ban-ssh -j RETURN
&lt;/code&gt;

== Configuration ==

Deux fichiers:

=== fail2ban.conf ===

Rien à faire dans ce fichier, vous pouvez laisser les options par défaut:

 /etc/fail2ban/fail2ban.conf

 loglevel = 3
 logtarget = /var/log/fail2ban.log
 socket = /var/run/fail2ban/fail2ban.sock

=== jail.conf ===

Ce fichier est beaucoup plus intéressant, il contient tous les services à monitorer, et vous allez le découvrir, fail2ban ne se limite pas à SSH...

 /etc/fail2ban/jail.conf

Vérifiez l'adresse d'envoi des mails d'avertissement:

 [DEFAULT]
 destemail = root@localhost

'''Erreur commune pour l'envoi des mail d'alertes'''

N'oubliez pas de modifier la variable action = %(action_)s
Et de la placer soit sur:

 action = %(action_mw)s

Soit sur

 action = %(action_mwl)s


Pour activer la surveillance d'un service, il suffit de placer la variable &quot;enabled&quot; à &quot;true&quot;

Par défaut la protection du service SSH est activée, pas les autres:
Si votre ssh n'écoute pas sur le port 22, pensez à le changer... (port = N° de port)

 [ssh]
 enabled = true
 port    = ssh
 filter  = sshd
 logpath  = /var/log/auth.log
 maxretry = 6

D'autres services, à activer en fonction de vos besoins:

 [xinetd-fail]
 enabled   = true 
 filter    = xinetd-fail
 port      = all
 banaction = iptables-multiport-log
 logpath   = /var/log/daemon.log
 maxretry  = 2

 [pam-generic]
 enabled = true
 filter  = pam-generic
 port = all
 banaction = iptables-allports
 port     = anyport
 logpath  = /var/log/auth.log
 maxretry = 6

 [ssh-ddos]
 enabled = true
 port    = ssh
 filter  = sshd-ddos
 logpath  = /var/log/auth.log
 maxretry = 6

 [apache]
 enabled = true
 port    = http,https
 filter  = apache-auth
 logpath = /var/log/apache*/*error.log
 maxretry = 6

 [apache-multiport]
 enabled   = true
 port      = http,https
 filter    = apache-auth
 logpath   = /var/log/apache*/*error.log
 maxretry  = 6

 [apache-noscript]
 enabled = true 
 port    = http,https
 filter  = apache-noscript
 logpath = /var/log/apache*/*error.log
 maxretry = 6

 [apache-overflows]
 enabled = true 
 port    = http,https
 filter  = apache-overflows
 logpath = /var/log/apache*/*error.log
 maxretry = 2

 [postfix]
 enabled  = true 
 port     = smtp,ssmtp
 filter   = postfix
 logpath  = /var/log/mail.log

 [sasl]
 enabled  = true 
 port     = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s
 filter   = sasl
 logpath  = /var/log/mail.log

n'oubliez pas de redémarrer fail2ban :

 # service fail2ban restart

=== jail.local ===

Le fichier jail.local vous permet de mettre vos règles personnelles. Voici quelques exemples:

&lt;code&gt;
[pure-ftpd]
enabled = true
port = ftp,ftp-data,ftps,ftps-data
filter = pure-ftpd
logpath = /var/log/messages
maxretry = 3

[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap, port=&quot;pop3,pop3s,imap,imaps&quot;, protocol=tcp]
logpath = /var/log/mail.log
maxretry = 5

[webmin-auth]
enabled  = true
port     = https,10000
filter   = webmin-auth
logpath  = /var/log/auth.log
maxretry = 3

# Plugin ''roundcube-fail2ban-plugin'' à installer
# 
[roundcube]
enabled  = true
port     = http,https
filter   = roundcube
action   = iptables-multiport[name=roundcube, port=&quot;http,https&quot;]
           sendmail-whois[name=roundcube, dest=root@localhost, sender=fail2ban@localhost]
logpath  = /var/www/path/logs/userlogins

# Plugin ''squirrel_logger'' à ajouter à squirrelmail
[squirrelmail]
enabled = true
port = http,https
filter = squirrelmail
logpath = /var/www/path/squirrelmail_access_log
bantime = 6000
maxretry = 4

# Règle anti-Kevin...
[apache-admin]
enabled = true
port = http
filter = apache-admin
logpath = /var/log/apache*/error*.log
maxretry = 6

# Règle anti-boulets...
[apache-404]
enabled = true
port = http
filter = apache-404
logpath = /var/log/ispconfig/httpd/*/error*
maxretry = 10
&lt;/code&gt;

Les fichiers de conf qui vont bien:

'''pure-ftpd.conf''' déjà inclu dans la configuration de base

'''dovecot-pop3imap.conf''' déjà inclu dans la configuration de base

'''webmin-auth.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
# Rule by : Delvit Guillaume
#
# $Revision: 728 $
#

[Definition]

# patern :      webmin[15673]: Non-existent login as toto from 86.0.6.217
#               webmin[29544]: Invalid login as root from 86.0.6.217
#
# Option:  failregex
# Notes.:  regex to match the password failure messages in the logfile. The
#          host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P&lt;host&gt;[\w\-.^_]+)
# Values:  TEXT
#
failregex = webmin.* Non-existent login as .+ from &lt;HOST&gt;$
            webmin.* Invalid login as .+ from &lt;HOST&gt;$

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =
&lt;/code&gt;

'''roundcube.conf'''
&lt;code&gt;
[Definition]
failregex = FAILED login for .*. from &lt;HOST&gt;
ignoreregex =
&lt;/code&gt;

'''squirrelmail.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Bill Landry ((email_protected))
#
# $Revision: 510 $

[Definition]

# Option: failregex
# Notes.: regex to match the password failures messages in the logfile. The
#         host must be matched by a group named &quot;host&quot;. The tag &quot;&quot; can
#         be used for standard IP/hostname matching and is only an alias for
#         (?:::f{4,6}:)?(?P\S+)
# Values: TEXT

failregex = \[LOGIN_ERROR\].*from &lt;HOST&gt;: Utilisateur inconnu ou mot de passe incorrect

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT

ignoreregex =
&lt;/code&gt;

'''apache-admin.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 471 $
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
# host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
# be used for standard IP/hostname matching.
# Values: TEXT
# [client x.x.x.x] File does not exist: /home/www/admin/admin,
failregex = [[]client &lt;HOST&gt;[]] File does not exist: .*admin|PMA|mysql

#
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
&lt;/code&gt;

'''apache-404.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 471 $
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
# host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
# be used for standard IP/hostname matching.
# Values: TEXT
# [client x.x.x.x] File does not exist: /home/www/admin/admin,
failregex = [[]client &lt;HOST&gt;[]] File does not exist: .*
#
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
&lt;/code&gt;

'''Option très intéressante pour les logs multiples'''

Vous avez la possibilité (si vos logs sont &quot;dispersés&quot;) de mettre des chemins &quot;relatifs&quot; - Vous pouvez utiliser les * (étoiles)

Par exemple, vos logs pour chaque site sont dispersés dans des répertoires différents...
Vous utiliserez alors le chemin suivant (tous les sous-répertoires dans /var/log/ispconfig/httpd/ seront alors pris en compte)

 logpath /var/log/ispconfig/httpd/*/error*

==== Plugins squirrelmail et rouncube ====

[http://mattrude.com/projects/roundcube-fail2ban-plugin/ Plugin roundcube-fail2ban-plugin]

[http://www.howtoforge.com/configuring-fail2ban-with-squirrelmail-on-debian-lenny-ispconfig-3 Plugin squirrel_logger]

Ces plugins utilisent PHP pour écrire les logs, il faudra s'assurer qu'il utilise le bon fuseau horaire : dans le fichier /etc/php5/apache2/php.ini vérifier la variable &quot;date.timezone&quot;

==== Fail2ban avec mod-evasive ====

Si vous utilisez mod-evasive, le module de protection contre les attaques Ddos de apache2, vous aurez peut-etre envie d'ajouter un filtre à fail2ban:

 # $EDITOR /etc/fail2ban/filter.d/apache-dosevasive.conf 
&lt;pre&gt;
# Fail2Ban configuration file
#
# Author: Xela
#
# $Revision: 728 $
#

[Definition]

# Option:  failregex
# Notes.:  regex to match the Forbidden log entrys in apache error.log
#          maybe (but not only) provided by mod_evasive
#
# Values:  TEXT
#
#failregex = ^\[[^\]]*\]\s+\[error\]\s+\[client \] client denied by server configuration:\s
failregex = ^\[[^\]]*\]\s+\[error\]\s+\[client &lt;HOST&gt;\] client denied by server configuration:\s

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =
&lt;/pre&gt;

Ajoutez ensuite ce bloc à /etc/fail2ban/jail.local (adaptez l'emplacement du fichier log à surveiller en fonction de votre configuration)
&lt;pre&gt;
[apache-dosevasive]

enabled = true
filter  = apache-dosevasive
action = iptables-allports[name=apache-dosevasive]
logpath = /var/log/ispconfig/httpd/*/error*
#logpath = /var/log/apache*/*error.log
bantime = 600
maxretry = 10
&lt;/pre&gt;

=== Cas particulier de mysql ===

Si vous souhaitez protéger un serveur mysql dont la base est ouverte sur Internet (ce qui n'est pas conseillé et pas très prudent...), voici comment faire:

[[https://www.debian-fr.org/securite-anti-brute-force-t39497.html Discussion sur le Forum]]

==== Activez les logs de mysql ====

Dans le fichier /etc/mysql/my.cnf

 general_log_file = /var/log/mysql/mysql.log
 general_log = 1

==== Patchez le fichier de support de date de fail2ban ====

Une sauvegarde:
cp /usr/share/fail2ban/server/datedetector.py /usr/share/fail2ban/server/datedetector.py.sos

Dans le fichier /usr/share/fail2ban/server/datedetector.py ajoutez ceci (ligne 144)

''Attention, les espaces sont des tabulations''
&lt;pre&gt;
                        # AAMMJJ HH:MM:SS
                        template = DateStrptime()
                        template.setName(&quot;YearMonthDay Hour:Minute:Second&quot;)
                        template.setRegex(&quot;\d{2}\d{2}\d{2} \d{2}:\d{2}:\d{2}&quot;)
                        template.setPattern(&quot;%y%m%d %H:%M:%S&quot;)
                        self.__templates.append(template)
&lt;/pre&gt;

Vous devriez obtenir ceci:

&lt;pre&gt;
                        ...
                        # &lt;09/16/08@05:03:30&gt;
                        template = DateStrptime()
                        template.setName(&quot;&lt;Month/Day/Year@Hour:Minute:Second&gt;&quot;)
                        template.setRegex(&quot;^&lt;\d{2}/\d{2}/\d{2}@\d{2}:\d{2}:\d{2}&gt;&quot;)
                        template.setPattern(&quot;&lt;%m/%d/%y@%H:%M:%S&gt;&quot;)
                        self.__templates.append(template)
                        # AAMMJJ HH:MM:SS
                        template = DateStrptime()
                        template.setName(&quot;YearMonthDay Hour:Minute:Second&quot;)
                        template.setRegex(&quot;\d{2}\d{2}\d{2} \d{2}:\d{2}:\d{2}&quot;)
                        template.setPattern(&quot;%y%m%d %H:%M:%S&quot;)
                        self.__templates.append(template)
                finally:
                        self.__lock.release()
                        ...
&lt;/pre&gt;

==== Configurez fail2ban ====

 $editor /etc/fail2ban/jail.conf
&lt;pre&gt;
[mysql]
enabled = true
port = 3306
filter = mysqld
logpath = /var/log/mysql/mysql.log
maxretry = 3
&lt;/pre&gt;

 $editor /etc/fail2ban/filter.d/mysqld.conf
&lt;pre&gt;
# Fail2Ban configuration file
#
# Author: JOUBERT Pierre-Benoît
#

[Definition]
failregex = Access denied for user '.*'@'&lt;HOST&gt;'
&lt;/pre&gt;

== Test ==

=== Testez les règles ===

L'erreur commune est de se tromper de fichier log... Vérifiez et revérifiez que le fichier donné en &quot;logpath&quot; est le bon.
Ensuite testez vos règles avec la commande /usr/bin/fail2ban-regex

 # /usr/bin/fail2ban-regex /var/www/path/logs/userlogins /etc/fail2ban/filter.d/roundcube.conf

Exemple de sortie:
&lt;code&gt;
Running tests
=============

Use regex file : /etc/fail2ban/filter.d/roundcube.conf
Use log file   : /var/www/path/logs/userlogins


Results
=======

Failregex
|- Regular expressions:
|  [1] FAILED login for .*. from &lt;HOST&gt;
|
`- Number of matches:
   [1] 1 match(es)

Ignoreregex
|- Regular expressions:
|
`- Number of matches:

Summary
=======

Addresses found:
[1]
    41.xxx.xxx.xxx (Wed Dec 28 15:51:14 2011)

Date template hits:
0 hit(s): MONTH Day Hour:Minute:Second
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second Year
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second
0 hit(s): Year/Month/Day Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/MONTH/Year:Hour:Minute:Second
0 hit(s): Month/Day/Year:Hour:Minute:Second
0 hit(s): Year-Month-Day Hour:Minute:Second
2 hit(s): Day-MONTH-Year Hour:Minute:Second[.Millisecond]
0 hit(s): Day-Month-Year Hour:Minute:Second
0 hit(s): TAI64N
0 hit(s): Epoch
0 hit(s): ISO 8601
0 hit(s): Hour:Minute:Second
0 hit(s): &lt;Month/Day/Year@Hour:Minute:Second&gt;

Success, the total number of match is 1

However, look at the above section 'Running tests' which could contain important
information.
&lt;/code&gt;

=== Testez l'état des jails ===

Avec la commande /usr/bin/fail2ban-client vous pouvez vérifier l'état de vos &quot;jails&quot;:

Exemples de sortie:

 # /usr/bin/fail2ban-client status
&lt;pre&gt;
Status
|- Number of jail:      18
`- Jail list:           dovecot-pop3imap, pure-ftpd, roundcube, apache, ssh, dovecot, apache-overflows, apache-noscript, squirrelmail, apache-dosevasive, apache-admin, pam-generic, postfix, ssh-ddos, webmin-auth, apache-404, sasl, named-refused-tcp
&lt;/pre&gt;


 # /usr/bin/fail2ban-client status apache-404
&lt;pre&gt;
Status for the jail: apache-404
|- filter
|  |- File list:        /var/log/path/error.log /var/log/path2/error.log /var/log/path2/error.log Etc...
|  |- Currently failed: 5
|  `- Total failed:     32
`- action
   |- Currently banned: 2
   |  `- IP list:       41.xxx.xxx.xxx 84.xxx.xxx.xxx 
   `- Total banned:     2
&lt;/pre&gt;

=== Testez en violant une règle ===

Créez par exemple un répertoire dans votre serveur apache, rendez obligatoire l'identification, puis entrez plusieurs fois de suite un mot de passe erroné.
Vous devriez avoir dans vols logs ceci:

 tail -f /var/log/fail2ban.log

 2011-08-08 12:27:18,730 fail2ban.actions: WARNING [apache] Ban 10.9.11.150

Effectivement, iptables à bloqué votre ip:

 iptables -L

 Chain fail2ban-apache (1 references)
 target     prot opt source               destination         
 DROP       all  --  10.9.11.150          anywhere            
 RETURN     all  --  anywhere             anywhere

Au bout de 10 minutes (en fonction de ce que vous aurez précisé dans le configuration), l'IP sera de nouveau &quot;libérée&quot;:

 2011-08-08 12:37:19,585 fail2ban.actions: WARNING [apache] Unban 10.9.11.150

== Erreur au démarrage de fail2ban ==

Si vous surveillez plusieurs services, il existe un bug gênant sur fail2ban ([http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=554162 fail2ban: fails to load iptable rules with multiple jails]) - Il existe une solution :

Lorsque vous démarrerez fail2ban, surveillez ses logs, vous devriez avoir ceci:

 2011-08-08 16:44:40,564 fail2ban.jail   : INFO   Jail 'apache-noscript' started
 2011-08-08 16:44:40,810 fail2ban.jail   : INFO   Jail 'pam-generic' started
 2011-08-08 16:44:41,051 fail2ban.jail   : INFO   Jail 'xinetd-fail' started
 2011-08-08 16:44:41,269 fail2ban.jail   : INFO   Jail 'ssh-ddos' started
 2011-08-08 16:44:41,506 fail2ban.jail   : INFO   Jail 'apache-multiport' started
 2011-08-08 16:44:41,739 fail2ban.jail   : INFO   Jail 'apache-overflows' started
 2011-08-08 16:44:41,976 fail2ban.jail   : INFO   Jail 'ssh' started
 2011-08-08 16:44:42,206 fail2ban.jail   : INFO   Jail 'postfix' started
 2011-08-08 16:44:42,448 fail2ban.jail   : INFO   Jail 'sasl' started
 2011-08-08 16:44:42,667 fail2ban.jail   : INFO   Jail 'apache' started

Si vous avez ce genre de message d'erreur:

 2011-08-08 12:22:52,286 fail2ban.actions.action: ERROR  iptables -N fail2ban-pam-generic
 iptables -A fail2ban-pam-generic -j RETURN
 iptables -I INPUT -p tcp -j fail2ban-pam-generic returned 400
 2011-08-08 15:06:04,467 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports 10122 -j fail2ban-ssh-ddos
 iptables -F fail2ban-ssh-ddos
 iptables -X fail2ban-ssh-ddos returned 100
 2011-08-08 15:06:10,027 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-overflows
 iptables -A fail2ban-apache-overflows -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows returned 200
 2011-08-08 15:06:10,224 fail2ban.actions.action: ERROR  iptables -N fail2ban-postfix
 iptables -A fail2ban-postfix -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp -j fail2ban-postfix returned 400
 2011-08-08 15:06:10,283 fail2ban.actions.action: ERROR  iptables -N fail2ban-sasl
 iptables -A fail2ban-sasl -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl returned 200
 2011-08-08 15:14:26,002 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows
 iptables -F fail2ban-apache-overflows
 iptables -X fail2ban-apache-overflows returned 100
 2011-08-08 15:14:28,374 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl
 iptables -F fail2ban-sasl
 iptables -X fail2ban-sasl returned 100
 2011-08-08 15:14:45,382 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-noscript
 iptables -A fail2ban-apache-noscript -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-noscript returned 400

Il existe deux solutions:

1) Modifier le fichier /usr/bin/fail2ban-client

'''Faite une sauvegarde de  auparavant...'''

Editez le fichier /usr/bin/fail2ban-client et ajoutez une temporisation (time.sleep(0.1)) à cet endroit:

        def __processCmd(self, cmd, showRet = True):
                beautifier = Beautifier()
                for c in cmd:
                        time.sleep(0.1)
                        beautifier.setInputCmd(c)

Si la temporisation à 0.1 ne suffit pas, mettez 0.2. et redémarrez fail2ban.

2) Installer une version supérieure (Fixed in version fail2ban/0.8.5-2)

Installer la version testing (8.6-3 0) ou celle des backports (8.6-3~bpo60+1)

== Fail2ban et ipv6 (EXPERIMENTAL) ==

Vous le savez, l'ipv6 se généralise, lancement officiel le 6 juin 2012
Quid de fail2ban ? Malheureusement, fail2ban ne supporte pas encore l'ipv6.
Heureusement, il existe un patch qui permet d'avoir fail2ban activé sur votre ipv6...

Mode d'emploi:

Téléchargez le patch:
&lt;pre&gt;
wget http://thanatos.trollprod.org/sousites/fail2banv6/fail2ban-ipv6.tar.bz2
--2012-04-14 09:30:31--  http://thanatos.trollprod.org/sousites/fail2banv6/fail2ban-ipv6.tar.bz2
Résolution de thanatos.trollprod.org (thanatos.trollprod.org)... 94.23.14.97, 2001:41d0:2:f61::fed1:fe54
Connexion vers thanatos.trollprod.org (thanatos.trollprod.org)|94.23.14.97|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 2293 (2,2K) [application/x-bzip]
Sauvegarde en : «fail2ban-ipv6.tar.bz2»

100%[=============================================================================================&gt;] 2 293       --.-K/s   ds 0,001s  

2012-04-14 09:30:31 (2,98 MB/s) - «fail2ban-ipv6.tar.bz2» sauvegardé [2293/2293]
&lt;/pre&gt;

 mkdir fail2ban-ipv6
 tar xvjf fail2ban-ipv6.tar.bz2 -C fail2ban-ipv6

 cp /usr/share/fail2ban/server/filter.py /usr/share/fail2ban/server/filter.py.sos
 cp /usr/share/fail2ban/server/failregex.py /usr/share/fail2ban/server/failregex.py.sos

Testez les patch:

 cd /usr/share/fail2ban/server/

 root@nas:/usr/share/fail2ban/server# patch -p0 --dry-run &lt; /root/fail2ban-ipv6/patchfilter.patch
 patching file filter.py
 Hunk #1 succeeded at 525 (offset 14 lines).
 Hunk #2 succeeded at 549 (offset 14 lines).
 Hunk #3 succeeded at 580 (offset 14 lines).
   
 root@nas:/usr/share/fail2ban/server# patch -p0 --dry-run &lt; /root/fail2ban-ipv6/regex.patch 
 patching file failregex.py
 Hunk #1 succeeded at 47 (offset 3 lines).

Si le résultat est positif (pas d'erreur) lancez les patchs

 root@nas:/usr/share/fail2ban/server# patch -p0 &lt; /root/fail2ban-ipv6/patchfilter.patch
 patching file filter.py
 Hunk #1 succeeded at 525 (offset 14 lines).
 Hunk #2 succeeded at 549 (offset 14 lines).
 Hunk #3 succeeded at 580 (offset 14 lines).
 root@nas:/usr/share/fail2ban/server# patch -p0 &lt; /root/fail2ban-ipv6/regex.patch 
 patching file failregex.py
 Hunk #1 succeeded at 47 (offset 3 lines).

Copiez les fichiers nécessaires:

 root@nas:/usr/share/fail2ban/server# cp /root/fail2ban-ipv6/ip64tables.sh /usr/bin/
 root@nas:/usr/share/fail2ban/server# chmod 755 /usr/bin/ip64tables.sh
 root@nas:/usr/share/fail2ban/server# cp /root/fail2ban-ipv6/iptables46-multiport.conf /etc/fail2ban/action.d/
 root@nas:/usr/share/fail2ban/server# chmod 644 /etc/fail2ban/action.d/iptables46-multiport.conf

Créez le bloc de configuration:

 nano /etc/fail2ban/jail.conf

 ...
 [ssh-ip6tables]
 enabled = true
 filter  = sshd
 logpath  = /var/log/auth.log
 maxretry = 6
 action   = iptables46-multiport[name=SSH, port=22, protocol=tcp]
            sendmail-whois[name=SSH, dest=root, sender=fail2ban@mail.com]
 ...

Redémarrez fail2ban et vérifiez qu'il est actif:

 service fail2ban restart
 Restarting authentication failure monitor: fail2ban.
 ip6tables -S
 ...
 -N fail2ban-SSH
 -A INPUT -p tcp -m multiport --dports 22 -j fail2ban-SSH
 -A fail2ban-SSH -j RETURN

Avertissement:
# N'a pas encore été testé
# Ne pas activer la résolution de nom dans les logs

{{en}} [http://www.fail2ban.org/wiki/index.php/Fail2ban:Community_Portal#IPv6_Experimental_support Source - Wiki fail2ban]

== Liens externes ==

Je vous encourage à lire:

* La page de man de fail2ban
* [http://www.fail2ban.org/wiki/index.php/Main_Page Le Wiki de fail2ban - Très complet]

[[Utilisateur:Lol|Lol]] 8 août 2011 à 09:00 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>4oy797d8z8ta4zz7r1wnc5po5m80nf3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5364</id>
      <parentid>5363</parentid>
      <timestamp>2013-08-26T12:03:46Z</timestamp>
      <contributor>
        <username>NaMoUr</username>
        <id>280</id>
      </contributor>
      <minor/>
      <comment>/* jail.local */</comment>
      <text xml:space="preserve" bytes="22779">== Qu'est-ce que Fail2ban? ==
Fail2ban lit des fichiers de log comme /var/log/pwdfail ou /var/log/apache/error_log et bannit les adresses IP qui ont obtenu un trop grand nombre d'échecs lors de l'authentification. Il met à jour les règles du pare-feu pour rejeter cette adresse IP. Ces règles peuvent êtres défines par l'utilisateur. Fail2ban peut lire plusieurs fichiers de log comme ceux de sshd ou du serveur Apache.

== Installation ==

 apt-get install fail2ban

Par défaut, le port 22 (ssh) est surveillé, vous pouvez vérifier que les règles ipatbles ont bien prises en compte fail2ban:

 iptables -S | grep fail2ban
&lt;code&gt;
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh 
-A fail2ban-ssh -j RETURN
&lt;/code&gt;

== Configuration ==

Deux fichiers:

=== fail2ban.conf ===

Rien à faire dans ce fichier, vous pouvez laisser les options par défaut:

 /etc/fail2ban/fail2ban.conf

 loglevel = 3
 logtarget = /var/log/fail2ban.log
 socket = /var/run/fail2ban/fail2ban.sock

=== jail.conf ===

Ce fichier est beaucoup plus intéressant, il contient tous les services à monitorer, et vous allez le découvrir, fail2ban ne se limite pas à SSH...

 /etc/fail2ban/jail.conf

Vérifiez l'adresse d'envoi des mails d'avertissement:

 [DEFAULT]
 destemail = root@localhost

'''Erreur commune pour l'envoi des mail d'alertes'''

N'oubliez pas de modifier la variable action = %(action_)s
Et de la placer soit sur:

 action = %(action_mw)s

Soit sur

 action = %(action_mwl)s


Pour activer la surveillance d'un service, il suffit de placer la variable &quot;enabled&quot; à &quot;true&quot;

Par défaut la protection du service SSH est activée, pas les autres:
Si votre ssh n'écoute pas sur le port 22, pensez à le changer... (port = N° de port)

 [ssh]
 enabled = true
 port    = ssh
 filter  = sshd
 logpath  = /var/log/auth.log
 maxretry = 6

D'autres services, à activer en fonction de vos besoins:

 [xinetd-fail]
 enabled   = true 
 filter    = xinetd-fail
 port      = all
 banaction = iptables-multiport-log
 logpath   = /var/log/daemon.log
 maxretry  = 2

 [pam-generic]
 enabled = true
 filter  = pam-generic
 port = all
 banaction = iptables-allports
 port     = anyport
 logpath  = /var/log/auth.log
 maxretry = 6

 [ssh-ddos]
 enabled = true
 port    = ssh
 filter  = sshd-ddos
 logpath  = /var/log/auth.log
 maxretry = 6

 [apache]
 enabled = true
 port    = http,https
 filter  = apache-auth
 logpath = /var/log/apache*/*error.log
 maxretry = 6

 [apache-multiport]
 enabled   = true
 port      = http,https
 filter    = apache-auth
 logpath   = /var/log/apache*/*error.log
 maxretry  = 6

 [apache-noscript]
 enabled = true 
 port    = http,https
 filter  = apache-noscript
 logpath = /var/log/apache*/*error.log
 maxretry = 6

 [apache-overflows]
 enabled = true 
 port    = http,https
 filter  = apache-overflows
 logpath = /var/log/apache*/*error.log
 maxretry = 2

 [postfix]
 enabled  = true 
 port     = smtp,ssmtp
 filter   = postfix
 logpath  = /var/log/mail.log

 [sasl]
 enabled  = true 
 port     = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s
 filter   = sasl
 logpath  = /var/log/mail.log

n'oubliez pas de redémarrer fail2ban :

 # service fail2ban restart

=== jail.local ===

Le fichier jail.local vous permet de mettre vos règles personnelles. Voici quelques exemples:

&lt;code&gt;
[pure-ftpd]
enabled = true
port = ftp,ftp-data,ftps,ftps-data
filter = pure-ftpd
logpath = /var/log/messages
maxretry = 3

[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap, port=&quot;pop3,pop3s,imap,imaps&quot;, protocol=tcp]
logpath = /var/log/mail.log
maxretry = 5

[webmin-auth]
enabled  = true
port     = https,10000
filter   = webmin-auth
logpath  = /var/log/auth.log
maxretry = 3

# Plugin ''roundcube-fail2ban-plugin'' à installer
# 
[roundcube]
enabled  = true
port     = http,https
filter   = roundcube
action   = iptables-multiport[name=roundcube, port=&quot;http,https&quot;]
           sendmail-whois[name=roundcube, dest=root@localhost, sender=fail2ban@localhost]
logpath  = /var/www/path/logs/userlogins

# Plugin ''squirrel_logger'' à ajouter à squirrelmail
[squirrelmail]
enabled = true
port = http,https
filter = squirrelmail
logpath = /var/www/path/squirrelmail_access_log
bantime = 6000
maxretry = 4

# Règle anti-Kevin...
[apache-admin]
enabled = true
port = http
filter = apache-admin
logpath = /var/log/apache*/error*.log
maxretry = 6

# Règle anti-boulets...
[apache-404]
enabled = true
port = http
filter = apache-404
logpath = /var/log/ispconfig/httpd/*/error*
maxretry = 10
&lt;/code&gt;

Les fichiers de conf qui vont bien:

'''pure-ftpd.conf''' déjà inclu dans la configuration de base

'''dovecot-pop3imap.conf''' déjà inclu dans la configuration de base

'''webmin-auth.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
# Rule by : Delvit Guillaume
#
# $Revision: 728 $
#

[Definition]

# patern :      webmin[15673]: Non-existent login as toto from 86.0.6.217
#               webmin[29544]: Invalid login as root from 86.0.6.217
#
# Option:  failregex
# Notes.:  regex to match the password failure messages in the logfile. The
#          host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P&lt;host&gt;[\w\-.^_]+)
# Values:  TEXT
#
failregex = webmin.* Non-existent login as .+ from &lt;HOST&gt;$
            webmin.* Invalid login as .+ from &lt;HOST&gt;$

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =
&lt;/code&gt;

'''roundcube.conf'''
&lt;code&gt;
[Definition]
failregex = FAILED login for .*. from &lt;HOST&gt;
ignoreregex =
&lt;/code&gt;

'''squirrelmail.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Bill Landry ((email_protected))
#
# $Revision: 510 $

[Definition]

# Option: failregex
# Notes.: regex to match the password failures messages in the logfile. The
#         host must be matched by a group named &quot;host&quot;. The tag &quot;&quot; can
#         be used for standard IP/hostname matching and is only an alias for
#         (?:::f{4,6}:)?(?P\S+)
# Values: TEXT

# Message d'erreur &quot;Utilisateur inconnu ou mot de passe incorrect&quot; à adapter suivant la langue utilisée par le serveur
failregex = \[LOGIN_ERROR\].*from &lt;HOST&gt;: Utilisateur inconnu ou mot de passe incorrect

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT

ignoreregex =
&lt;/code&gt;

'''apache-admin.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 471 $
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
# host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
# be used for standard IP/hostname matching.
# Values: TEXT
# [client x.x.x.x] File does not exist: /home/www/admin/admin,
failregex = [[]client &lt;HOST&gt;[]] File does not exist: .*admin|PMA|mysql

#
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
&lt;/code&gt;

'''apache-404.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 471 $
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
# host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
# be used for standard IP/hostname matching.
# Values: TEXT
# [client x.x.x.x] File does not exist: /home/www/admin/admin,
failregex = [[]client &lt;HOST&gt;[]] File does not exist: .*
#
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
&lt;/code&gt;

'''Option très intéressante pour les logs multiples'''

Vous avez la possibilité (si vos logs sont &quot;dispersés&quot;) de mettre des chemins &quot;relatifs&quot; - Vous pouvez utiliser les * (étoiles)

Par exemple, vos logs pour chaque site sont dispersés dans des répertoires différents...
Vous utiliserez alors le chemin suivant (tous les sous-répertoires dans /var/log/ispconfig/httpd/ seront alors pris en compte)

 logpath /var/log/ispconfig/httpd/*/error*

==== Plugins squirrelmail et rouncube ====

[http://mattrude.com/projects/roundcube-fail2ban-plugin/ Plugin roundcube-fail2ban-plugin]

[http://www.howtoforge.com/configuring-fail2ban-with-squirrelmail-on-debian-lenny-ispconfig-3 Plugin squirrel_logger]

Ces plugins utilisent PHP pour écrire les logs, il faudra s'assurer qu'il utilise le bon fuseau horaire : dans le fichier /etc/php5/apache2/php.ini vérifier la variable &quot;date.timezone&quot;

==== Fail2ban avec mod-evasive ====

Si vous utilisez mod-evasive, le module de protection contre les attaques Ddos de apache2, vous aurez peut-etre envie d'ajouter un filtre à fail2ban:

 # $EDITOR /etc/fail2ban/filter.d/apache-dosevasive.conf 
&lt;pre&gt;
# Fail2Ban configuration file
#
# Author: Xela
#
# $Revision: 728 $
#

[Definition]

# Option:  failregex
# Notes.:  regex to match the Forbidden log entrys in apache error.log
#          maybe (but not only) provided by mod_evasive
#
# Values:  TEXT
#
#failregex = ^\[[^\]]*\]\s+\[error\]\s+\[client \] client denied by server configuration:\s
failregex = ^\[[^\]]*\]\s+\[error\]\s+\[client &lt;HOST&gt;\] client denied by server configuration:\s

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =
&lt;/pre&gt;

Ajoutez ensuite ce bloc à /etc/fail2ban/jail.local (adaptez l'emplacement du fichier log à surveiller en fonction de votre configuration)
&lt;pre&gt;
[apache-dosevasive]

enabled = true
filter  = apache-dosevasive
action = iptables-allports[name=apache-dosevasive]
logpath = /var/log/ispconfig/httpd/*/error*
#logpath = /var/log/apache*/*error.log
bantime = 600
maxretry = 10
&lt;/pre&gt;

=== Cas particulier de mysql ===

Si vous souhaitez protéger un serveur mysql dont la base est ouverte sur Internet (ce qui n'est pas conseillé et pas très prudent...), voici comment faire:

[[https://www.debian-fr.org/securite-anti-brute-force-t39497.html Discussion sur le Forum]]

==== Activez les logs de mysql ====

Dans le fichier /etc/mysql/my.cnf

 general_log_file = /var/log/mysql/mysql.log
 general_log = 1

==== Patchez le fichier de support de date de fail2ban ====

Une sauvegarde:
cp /usr/share/fail2ban/server/datedetector.py /usr/share/fail2ban/server/datedetector.py.sos

Dans le fichier /usr/share/fail2ban/server/datedetector.py ajoutez ceci (ligne 144)

''Attention, les espaces sont des tabulations''
&lt;pre&gt;
                        # AAMMJJ HH:MM:SS
                        template = DateStrptime()
                        template.setName(&quot;YearMonthDay Hour:Minute:Second&quot;)
                        template.setRegex(&quot;\d{2}\d{2}\d{2} \d{2}:\d{2}:\d{2}&quot;)
                        template.setPattern(&quot;%y%m%d %H:%M:%S&quot;)
                        self.__templates.append(template)
&lt;/pre&gt;

Vous devriez obtenir ceci:

&lt;pre&gt;
                        ...
                        # &lt;09/16/08@05:03:30&gt;
                        template = DateStrptime()
                        template.setName(&quot;&lt;Month/Day/Year@Hour:Minute:Second&gt;&quot;)
                        template.setRegex(&quot;^&lt;\d{2}/\d{2}/\d{2}@\d{2}:\d{2}:\d{2}&gt;&quot;)
                        template.setPattern(&quot;&lt;%m/%d/%y@%H:%M:%S&gt;&quot;)
                        self.__templates.append(template)
                        # AAMMJJ HH:MM:SS
                        template = DateStrptime()
                        template.setName(&quot;YearMonthDay Hour:Minute:Second&quot;)
                        template.setRegex(&quot;\d{2}\d{2}\d{2} \d{2}:\d{2}:\d{2}&quot;)
                        template.setPattern(&quot;%y%m%d %H:%M:%S&quot;)
                        self.__templates.append(template)
                finally:
                        self.__lock.release()
                        ...
&lt;/pre&gt;

==== Configurez fail2ban ====

 $editor /etc/fail2ban/jail.conf
&lt;pre&gt;
[mysql]
enabled = true
port = 3306
filter = mysqld
logpath = /var/log/mysql/mysql.log
maxretry = 3
&lt;/pre&gt;

 $editor /etc/fail2ban/filter.d/mysqld.conf
&lt;pre&gt;
# Fail2Ban configuration file
#
# Author: JOUBERT Pierre-Benoît
#

[Definition]
failregex = Access denied for user '.*'@'&lt;HOST&gt;'
&lt;/pre&gt;

== Test ==

=== Testez les règles ===

L'erreur commune est de se tromper de fichier log... Vérifiez et revérifiez que le fichier donné en &quot;logpath&quot; est le bon.
Ensuite testez vos règles avec la commande /usr/bin/fail2ban-regex

 # /usr/bin/fail2ban-regex /var/www/path/logs/userlogins /etc/fail2ban/filter.d/roundcube.conf

Exemple de sortie:
&lt;code&gt;
Running tests
=============

Use regex file : /etc/fail2ban/filter.d/roundcube.conf
Use log file   : /var/www/path/logs/userlogins


Results
=======

Failregex
|- Regular expressions:
|  [1] FAILED login for .*. from &lt;HOST&gt;
|
`- Number of matches:
   [1] 1 match(es)

Ignoreregex
|- Regular expressions:
|
`- Number of matches:

Summary
=======

Addresses found:
[1]
    41.xxx.xxx.xxx (Wed Dec 28 15:51:14 2011)

Date template hits:
0 hit(s): MONTH Day Hour:Minute:Second
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second Year
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second
0 hit(s): Year/Month/Day Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/MONTH/Year:Hour:Minute:Second
0 hit(s): Month/Day/Year:Hour:Minute:Second
0 hit(s): Year-Month-Day Hour:Minute:Second
2 hit(s): Day-MONTH-Year Hour:Minute:Second[.Millisecond]
0 hit(s): Day-Month-Year Hour:Minute:Second
0 hit(s): TAI64N
0 hit(s): Epoch
0 hit(s): ISO 8601
0 hit(s): Hour:Minute:Second
0 hit(s): &lt;Month/Day/Year@Hour:Minute:Second&gt;

Success, the total number of match is 1

However, look at the above section 'Running tests' which could contain important
information.
&lt;/code&gt;

=== Testez l'état des jails ===

Avec la commande /usr/bin/fail2ban-client vous pouvez vérifier l'état de vos &quot;jails&quot;:

Exemples de sortie:

 # /usr/bin/fail2ban-client status
&lt;pre&gt;
Status
|- Number of jail:      18
`- Jail list:           dovecot-pop3imap, pure-ftpd, roundcube, apache, ssh, dovecot, apache-overflows, apache-noscript, squirrelmail, apache-dosevasive, apache-admin, pam-generic, postfix, ssh-ddos, webmin-auth, apache-404, sasl, named-refused-tcp
&lt;/pre&gt;


 # /usr/bin/fail2ban-client status apache-404
&lt;pre&gt;
Status for the jail: apache-404
|- filter
|  |- File list:        /var/log/path/error.log /var/log/path2/error.log /var/log/path2/error.log Etc...
|  |- Currently failed: 5
|  `- Total failed:     32
`- action
   |- Currently banned: 2
   |  `- IP list:       41.xxx.xxx.xxx 84.xxx.xxx.xxx 
   `- Total banned:     2
&lt;/pre&gt;

=== Testez en violant une règle ===

Créez par exemple un répertoire dans votre serveur apache, rendez obligatoire l'identification, puis entrez plusieurs fois de suite un mot de passe erroné.
Vous devriez avoir dans vols logs ceci:

 tail -f /var/log/fail2ban.log

 2011-08-08 12:27:18,730 fail2ban.actions: WARNING [apache] Ban 10.9.11.150

Effectivement, iptables à bloqué votre ip:

 iptables -L

 Chain fail2ban-apache (1 references)
 target     prot opt source               destination         
 DROP       all  --  10.9.11.150          anywhere            
 RETURN     all  --  anywhere             anywhere

Au bout de 10 minutes (en fonction de ce que vous aurez précisé dans le configuration), l'IP sera de nouveau &quot;libérée&quot;:

 2011-08-08 12:37:19,585 fail2ban.actions: WARNING [apache] Unban 10.9.11.150

== Erreur au démarrage de fail2ban ==

Si vous surveillez plusieurs services, il existe un bug gênant sur fail2ban ([http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=554162 fail2ban: fails to load iptable rules with multiple jails]) - Il existe une solution :

Lorsque vous démarrerez fail2ban, surveillez ses logs, vous devriez avoir ceci:

 2011-08-08 16:44:40,564 fail2ban.jail   : INFO   Jail 'apache-noscript' started
 2011-08-08 16:44:40,810 fail2ban.jail   : INFO   Jail 'pam-generic' started
 2011-08-08 16:44:41,051 fail2ban.jail   : INFO   Jail 'xinetd-fail' started
 2011-08-08 16:44:41,269 fail2ban.jail   : INFO   Jail 'ssh-ddos' started
 2011-08-08 16:44:41,506 fail2ban.jail   : INFO   Jail 'apache-multiport' started
 2011-08-08 16:44:41,739 fail2ban.jail   : INFO   Jail 'apache-overflows' started
 2011-08-08 16:44:41,976 fail2ban.jail   : INFO   Jail 'ssh' started
 2011-08-08 16:44:42,206 fail2ban.jail   : INFO   Jail 'postfix' started
 2011-08-08 16:44:42,448 fail2ban.jail   : INFO   Jail 'sasl' started
 2011-08-08 16:44:42,667 fail2ban.jail   : INFO   Jail 'apache' started

Si vous avez ce genre de message d'erreur:

 2011-08-08 12:22:52,286 fail2ban.actions.action: ERROR  iptables -N fail2ban-pam-generic
 iptables -A fail2ban-pam-generic -j RETURN
 iptables -I INPUT -p tcp -j fail2ban-pam-generic returned 400
 2011-08-08 15:06:04,467 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports 10122 -j fail2ban-ssh-ddos
 iptables -F fail2ban-ssh-ddos
 iptables -X fail2ban-ssh-ddos returned 100
 2011-08-08 15:06:10,027 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-overflows
 iptables -A fail2ban-apache-overflows -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows returned 200
 2011-08-08 15:06:10,224 fail2ban.actions.action: ERROR  iptables -N fail2ban-postfix
 iptables -A fail2ban-postfix -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp -j fail2ban-postfix returned 400
 2011-08-08 15:06:10,283 fail2ban.actions.action: ERROR  iptables -N fail2ban-sasl
 iptables -A fail2ban-sasl -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl returned 200
 2011-08-08 15:14:26,002 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows
 iptables -F fail2ban-apache-overflows
 iptables -X fail2ban-apache-overflows returned 100
 2011-08-08 15:14:28,374 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl
 iptables -F fail2ban-sasl
 iptables -X fail2ban-sasl returned 100
 2011-08-08 15:14:45,382 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-noscript
 iptables -A fail2ban-apache-noscript -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-noscript returned 400

Il existe deux solutions:

1) Modifier le fichier /usr/bin/fail2ban-client

'''Faite une sauvegarde de  auparavant...'''

Editez le fichier /usr/bin/fail2ban-client et ajoutez une temporisation (time.sleep(0.1)) à cet endroit:

        def __processCmd(self, cmd, showRet = True):
                beautifier = Beautifier()
                for c in cmd:
                        time.sleep(0.1)
                        beautifier.setInputCmd(c)

Si la temporisation à 0.1 ne suffit pas, mettez 0.2. et redémarrez fail2ban.

2) Installer une version supérieure (Fixed in version fail2ban/0.8.5-2)

Installer la version testing (8.6-3 0) ou celle des backports (8.6-3~bpo60+1)

== Fail2ban et ipv6 (EXPERIMENTAL) ==

Vous le savez, l'ipv6 se généralise, lancement officiel le 6 juin 2012
Quid de fail2ban ? Malheureusement, fail2ban ne supporte pas encore l'ipv6.
Heureusement, il existe un patch qui permet d'avoir fail2ban activé sur votre ipv6...

Mode d'emploi:

Téléchargez le patch:
&lt;pre&gt;
wget http://thanatos.trollprod.org/sousites/fail2banv6/fail2ban-ipv6.tar.bz2
--2012-04-14 09:30:31--  http://thanatos.trollprod.org/sousites/fail2banv6/fail2ban-ipv6.tar.bz2
Résolution de thanatos.trollprod.org (thanatos.trollprod.org)... 94.23.14.97, 2001:41d0:2:f61::fed1:fe54
Connexion vers thanatos.trollprod.org (thanatos.trollprod.org)|94.23.14.97|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 2293 (2,2K) [application/x-bzip]
Sauvegarde en : «fail2ban-ipv6.tar.bz2»

100%[=============================================================================================&gt;] 2 293       --.-K/s   ds 0,001s  

2012-04-14 09:30:31 (2,98 MB/s) - «fail2ban-ipv6.tar.bz2» sauvegardé [2293/2293]
&lt;/pre&gt;

 mkdir fail2ban-ipv6
 tar xvjf fail2ban-ipv6.tar.bz2 -C fail2ban-ipv6

 cp /usr/share/fail2ban/server/filter.py /usr/share/fail2ban/server/filter.py.sos
 cp /usr/share/fail2ban/server/failregex.py /usr/share/fail2ban/server/failregex.py.sos

Testez les patch:

 cd /usr/share/fail2ban/server/

 root@nas:/usr/share/fail2ban/server# patch -p0 --dry-run &lt; /root/fail2ban-ipv6/patchfilter.patch
 patching file filter.py
 Hunk #1 succeeded at 525 (offset 14 lines).
 Hunk #2 succeeded at 549 (offset 14 lines).
 Hunk #3 succeeded at 580 (offset 14 lines).
   
 root@nas:/usr/share/fail2ban/server# patch -p0 --dry-run &lt; /root/fail2ban-ipv6/regex.patch 
 patching file failregex.py
 Hunk #1 succeeded at 47 (offset 3 lines).

Si le résultat est positif (pas d'erreur) lancez les patchs

 root@nas:/usr/share/fail2ban/server# patch -p0 &lt; /root/fail2ban-ipv6/patchfilter.patch
 patching file filter.py
 Hunk #1 succeeded at 525 (offset 14 lines).
 Hunk #2 succeeded at 549 (offset 14 lines).
 Hunk #3 succeeded at 580 (offset 14 lines).
 root@nas:/usr/share/fail2ban/server# patch -p0 &lt; /root/fail2ban-ipv6/regex.patch 
 patching file failregex.py
 Hunk #1 succeeded at 47 (offset 3 lines).

Copiez les fichiers nécessaires:

 root@nas:/usr/share/fail2ban/server# cp /root/fail2ban-ipv6/ip64tables.sh /usr/bin/
 root@nas:/usr/share/fail2ban/server# chmod 755 /usr/bin/ip64tables.sh
 root@nas:/usr/share/fail2ban/server# cp /root/fail2ban-ipv6/iptables46-multiport.conf /etc/fail2ban/action.d/
 root@nas:/usr/share/fail2ban/server# chmod 644 /etc/fail2ban/action.d/iptables46-multiport.conf

Créez le bloc de configuration:

 nano /etc/fail2ban/jail.conf

 ...
 [ssh-ip6tables]
 enabled = true
 filter  = sshd
 logpath  = /var/log/auth.log
 maxretry = 6
 action   = iptables46-multiport[name=SSH, port=22, protocol=tcp]
            sendmail-whois[name=SSH, dest=root, sender=fail2ban@mail.com]
 ...

Redémarrez fail2ban et vérifiez qu'il est actif:

 service fail2ban restart
 Restarting authentication failure monitor: fail2ban.
 ip6tables -S
 ...
 -N fail2ban-SSH
 -A INPUT -p tcp -m multiport --dports 22 -j fail2ban-SSH
 -A fail2ban-SSH -j RETURN

Avertissement:
# N'a pas encore été testé
# Ne pas activer la résolution de nom dans les logs

{{en}} [http://www.fail2ban.org/wiki/index.php/Fail2ban:Community_Portal#IPv6_Experimental_support Source - Wiki fail2ban]

== Liens externes ==

Je vous encourage à lire:

* La page de man de fail2ban
* [http://www.fail2ban.org/wiki/index.php/Main_Page Le Wiki de fail2ban - Très complet]

[[Utilisateur:Lol|Lol]] 8 août 2011 à 09:00 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>sbkceyckvwycn2d50t1g7t1fkg21zon</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5616</id>
      <parentid>5364</parentid>
      <timestamp>2014-05-22T17:16:12Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="22762">== Qu'est-ce que Fail2ban? ==
Fail2ban lit des fichiers de log comme /var/log/pwdfail ou /var/log/apache/error_log et bannit les adresses IP qui ont obtenu un trop grand nombre d'échecs lors de l'authentification. Il met à jour les règles du pare-feu pour rejeter cette adresse IP. Ces règles peuvent êtres défines par l'utilisateur. Fail2ban peut lire plusieurs fichiers de log comme ceux de sshd ou du serveur Apache.

== Installation ==

 apt-get install fail2ban

Par défaut, le port 22 (ssh) est surveillé, vous pouvez vérifier que les règles ipatbles ont bien prises en compte fail2ban:

 iptables -S | grep fail2ban
&lt;code&gt;
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh 
-A fail2ban-ssh -j RETURN
&lt;/code&gt;

== Configuration ==

Deux fichiers:

=== fail2ban.conf ===

Rien à faire dans ce fichier, vous pouvez laisser les options par défaut:

 /etc/fail2ban/fail2ban.conf

 loglevel = 3
 logtarget = /var/log/fail2ban.log
 socket = /var/run/fail2ban/fail2ban.sock

=== jail.conf ===

Ce fichier est beaucoup plus intéressant, il contient tous les services à monitorer, et vous allez le découvrir, fail2ban ne se limite pas à SSH...

 /etc/fail2ban/jail.conf

Vérifiez l'adresse d'envoi des mails d'avertissement:

 [DEFAULT]
 destemail = root@localhost

'''Erreur commune pour l'envoi des mail d'alertes'''

N'oubliez pas de modifier la variable action = %(action_)s
Et de la placer soit sur:

 action = %(action_mw)s

Soit sur

 action = %(action_mwl)s


Pour activer la surveillance d'un service, il suffit de placer la variable &quot;enabled&quot; à &quot;true&quot;

Par défaut la protection du service SSH est activée, pas les autres:
Si votre ssh n'écoute pas sur le port 22, pensez à le changer... (port = N° de port)

 [ssh]
 enabled = true
 port    = ssh
 filter  = sshd
 logpath  = /var/log/auth.log
 maxretry = 6

D'autres services, à activer en fonction de vos besoins:

 [xinetd-fail]
 enabled   = true 
 filter    = xinetd-fail
 port      = all
 banaction = iptables-multiport-log
 logpath   = /var/log/daemon.log
 maxretry  = 2

 [pam-generic]
 enabled = true
 filter  = pam-generic
 port = all
 banaction = iptables-allports
 port     = anyport
 logpath  = /var/log/auth.log
 maxretry = 6

 [ssh-ddos]
 enabled = true
 port    = ssh
 filter  = sshd-ddos
 logpath  = /var/log/auth.log
 maxretry = 6

 [apache]
 enabled = true
 port    = http,https
 filter  = apache-auth
 logpath = /var/log/apache*/*error.log
 maxretry = 6

 [apache-multiport]
 enabled   = true
 port      = http,https
 filter    = apache-auth
 logpath   = /var/log/apache*/*error.log
 maxretry  = 6

 [apache-noscript]
 enabled = true 
 port    = http,https
 filter  = apache-noscript
 logpath = /var/log/apache*/*error.log
 maxretry = 6

 [apache-overflows]
 enabled = true 
 port    = http,https
 filter  = apache-overflows
 logpath = /var/log/apache*/*error.log
 maxretry = 2

 [postfix]
 enabled  = true 
 port     = smtp,ssmtp
 filter   = postfix
 logpath  = /var/log/mail.log

 [sasl]
 enabled  = true 
 port     = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s
 filter   = sasl
 logpath  = /var/log/mail.log

n'oubliez pas de redémarrer fail2ban :

 # service fail2ban restart

=== jail.local ===

Le fichier jail.local vous permet de mettre vos règles personnelles. Voici quelques exemples:

&lt;code&gt;
[pure-ftpd]
enabled = true
port = ftp,ftp-data,ftps,ftps-data
filter = pure-ftpd
logpath = /var/log/messages
maxretry = 3

[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap, port=&quot;pop3,pop3s,imap,imaps&quot;, protocol=tcp]
logpath = /var/log/mail.log
maxretry = 5

[webmin-auth]
enabled  = true
port     = https,10000
filter   = webmin-auth
logpath  = /var/log/auth.log
maxretry = 3

# Plugin ''roundcube-fail2ban-plugin'' à installer
# 
[roundcube]
enabled  = true
port     = http,https
filter   = roundcube
action   = iptables-multiport[name=roundcube, port=&quot;http,https&quot;]
           sendmail-whois[name=roundcube, dest=root@localhost, sender=fail2ban@localhost]
logpath  = /var/www/path/logs/userlogins

# Plugin ''squirrel_logger'' à ajouter à squirrelmail
[squirrelmail]
enabled = true
port = http,https
filter = squirrelmail
logpath = /var/www/path/squirrelmail_access_log
bantime = 6000
maxretry = 4

# Règle anti-Kevin...
[apache-admin]
enabled = true
port = http
filter = apache-admin
logpath = /var/log/apache*/error*.log
maxretry = 6

# Règle anti-boulets...
[apache-404]
enabled = true
port = http
filter = apache-404
logpath = /var/log/ispconfig/httpd/*/error*
maxretry = 10
&lt;/code&gt;

Les fichiers de conf qui vont bien:

'''pure-ftpd.conf''' déjà inclu dans la configuration de base

'''dovecot-pop3imap.conf''' déjà inclu dans la configuration de base

'''webmin-auth.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
# Rule by : Delvit Guillaume
#
# $Revision: 728 $
#

[Definition]

# patern :      webmin[15673]: Non-existent login as toto from 86.0.6.217
#               webmin[29544]: Invalid login as root from 86.0.6.217
#
# Option:  failregex
# Notes.:  regex to match the password failure messages in the logfile. The
#          host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P&lt;host&gt;[\w\-.^_]+)
# Values:  TEXT
#
failregex = webmin.* Non-existent login as .+ from &lt;HOST&gt;$
            webmin.* Invalid login as .+ from &lt;HOST&gt;$

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =
&lt;/code&gt;

'''roundcube.conf'''
&lt;code&gt;
[Definition]
failregex = FAILED login for .*. from &lt;HOST&gt;
ignoreregex =
&lt;/code&gt;

'''squirrelmail.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Bill Landry ((email_protected))
#
# $Revision: 510 $

[Definition]

# Option: failregex
# Notes.: regex to match the password failures messages in the logfile. The
#         host must be matched by a group named &quot;host&quot;. The tag &quot;&quot; can
#         be used for standard IP/hostname matching and is only an alias for
#         (?:::f{4,6}:)?(?P\S+)
# Values: TEXT

# Message d'erreur &quot;Utilisateur inconnu ou mot de passe incorrect&quot; à adapter suivant la langue utilisée par le serveur
failregex = \[LOGIN_ERROR\].*from &lt;HOST&gt;: Utilisateur inconnu ou mot de passe incorrect

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT

ignoreregex =
&lt;/code&gt;

'''apache-admin.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 471 $
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
# host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
# be used for standard IP/hostname matching.
# Values: TEXT
# [client x.x.x.x] File does not exist: /home/www/admin/admin,
failregex = [[]client &lt;HOST&gt;[]] File does not exist: .*admin|PMA|mysql

#
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
&lt;/code&gt;

'''apache-404.conf'''
&lt;code&gt;
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 471 $
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
# host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
# be used for standard IP/hostname matching.
# Values: TEXT
# [client x.x.x.x] File does not exist: /home/www/admin/admin,
failregex = [[]client &lt;HOST&gt;[]] File does not exist: .*
#
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
&lt;/code&gt;

'''Option très intéressante pour les logs multiples'''

Vous avez la possibilité (si vos logs sont &quot;dispersés&quot;) de mettre des chemins &quot;relatifs&quot; - Vous pouvez utiliser les * (étoiles)

Par exemple, vos logs pour chaque site sont dispersés dans des répertoires différents...
Vous utiliserez alors le chemin suivant (tous les sous-répertoires dans /var/log/ispconfig/httpd/ seront alors pris en compte)

 logpath /var/log/ispconfig/httpd/*/error*

==== Plugins squirrelmail et rouncube ====

[http://mattrude.com/projects/roundcube-fail2ban-plugin/ Plugin roundcube-fail2ban-plugin]

[http://www.howtoforge.com/configuring-fail2ban-with-squirrelmail-on-debian-lenny-ispconfig-3 Plugin squirrel_logger]

Ces plugins utilisent PHP pour écrire les logs, il faudra s'assurer qu'il utilise le bon fuseau horaire : dans le fichier /etc/php5/apache2/php.ini vérifier la variable &quot;date.timezone&quot;

==== Fail2ban avec mod-evasive ====

Si vous utilisez mod-evasive, le module de protection contre les attaques Ddos de apache2, vous aurez peut-etre envie d'ajouter un filtre à fail2ban:

 # $EDITOR /etc/fail2ban/filter.d/apache-dosevasive.conf 
&lt;pre&gt;
# Fail2Ban configuration file
#
# Author: Xela
#
# $Revision: 728 $
#

[Definition]

# Option:  failregex
# Notes.:  regex to match the Forbidden log entrys in apache error.log
#          maybe (but not only) provided by mod_evasive
#
# Values:  TEXT
#
#failregex = ^\[[^\]]*\]\s+\[error\]\s+\[client \] client denied by server configuration:\s
failregex = ^\[[^\]]*\]\s+\[error\]\s+\[client &lt;HOST&gt;\] client denied by server configuration:\s

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =
&lt;/pre&gt;

Ajoutez ensuite ce bloc à /etc/fail2ban/jail.local (adaptez l'emplacement du fichier log à surveiller en fonction de votre configuration)
&lt;pre&gt;
[apache-dosevasive]

enabled = true
filter  = apache-dosevasive
action = iptables-allports[name=apache-dosevasive]
logpath = /var/log/ispconfig/httpd/*/error*
#logpath = /var/log/apache*/*error.log
bantime = 600
maxretry = 10
&lt;/pre&gt;

=== Cas particulier de mysql ===

Si vous souhaitez protéger un serveur mysql dont la base est ouverte sur Internet (ce qui n'est pas conseillé et pas très prudent...), voici comment faire:

[[https://www.debian-fr.org/securite-anti-brute-force-t39497.html Discussion sur le Forum]]

==== Activez les logs de mysql ====

Dans le fichier /etc/mysql/my.cnf

 general_log_file = /var/log/mysql/mysql.log
 general_log = 1

==== Patchez le fichier de support de date de fail2ban ====

Une sauvegarde:
cp /usr/share/fail2ban/server/datedetector.py /usr/share/fail2ban/server/datedetector.py.sos

Dans le fichier /usr/share/fail2ban/server/datedetector.py ajoutez ceci (ligne 144)

''Attention, les espaces sont des tabulations''
&lt;pre&gt;
                        # AAMMJJ HH:MM:SS
                        template = DateStrptime()
                        template.setName(&quot;YearMonthDay Hour:Minute:Second&quot;)
                        template.setRegex(&quot;\d{2}\d{2}\d{2} \d{2}:\d{2}:\d{2}&quot;)
                        template.setPattern(&quot;%y%m%d %H:%M:%S&quot;)
                        self.__templates.append(template)
&lt;/pre&gt;

Vous devriez obtenir ceci:

&lt;pre&gt;
                        ...
                        # &lt;09/16/08@05:03:30&gt;
                        template = DateStrptime()
                        template.setName(&quot;&lt;Month/Day/Year@Hour:Minute:Second&gt;&quot;)
                        template.setRegex(&quot;^&lt;\d{2}/\d{2}/\d{2}@\d{2}:\d{2}:\d{2}&gt;&quot;)
                        template.setPattern(&quot;&lt;%m/%d/%y@%H:%M:%S&gt;&quot;)
                        self.__templates.append(template)
                        # AAMMJJ HH:MM:SS
                        template = DateStrptime()
                        template.setName(&quot;YearMonthDay Hour:Minute:Second&quot;)
                        template.setRegex(&quot;\d{2}\d{2}\d{2} \d{2}:\d{2}:\d{2}&quot;)
                        template.setPattern(&quot;%y%m%d %H:%M:%S&quot;)
                        self.__templates.append(template)
                finally:
                        self.__lock.release()
                        ...
&lt;/pre&gt;

==== Configurez fail2ban ====

 $editor /etc/fail2ban/jail.conf
&lt;pre&gt;
[mysql]
enabled = true
port = 3306
filter = mysqld
logpath = /var/log/mysql/mysql.log
maxretry = 3
&lt;/pre&gt;

 $editor /etc/fail2ban/filter.d/mysqld.conf
&lt;pre&gt;
# Fail2Ban configuration file
#
# Author: Darel
#

[Definition]
failregex = Access denied for user '.*'@'&lt;HOST&gt;'
&lt;/pre&gt;

== Test ==

=== Testez les règles ===

L'erreur commune est de se tromper de fichier log... Vérifiez et revérifiez que le fichier donné en &quot;logpath&quot; est le bon.
Ensuite testez vos règles avec la commande /usr/bin/fail2ban-regex

 # /usr/bin/fail2ban-regex /var/www/path/logs/userlogins /etc/fail2ban/filter.d/roundcube.conf

Exemple de sortie:
&lt;code&gt;
Running tests
=============

Use regex file : /etc/fail2ban/filter.d/roundcube.conf
Use log file   : /var/www/path/logs/userlogins


Results
=======

Failregex
|- Regular expressions:
|  [1] FAILED login for .*. from &lt;HOST&gt;
|
`- Number of matches:
   [1] 1 match(es)

Ignoreregex
|- Regular expressions:
|
`- Number of matches:

Summary
=======

Addresses found:
[1]
    41.xxx.xxx.xxx (Wed Dec 28 15:51:14 2011)

Date template hits:
0 hit(s): MONTH Day Hour:Minute:Second
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second Year
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second
0 hit(s): Year/Month/Day Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/MONTH/Year:Hour:Minute:Second
0 hit(s): Month/Day/Year:Hour:Minute:Second
0 hit(s): Year-Month-Day Hour:Minute:Second
2 hit(s): Day-MONTH-Year Hour:Minute:Second[.Millisecond]
0 hit(s): Day-Month-Year Hour:Minute:Second
0 hit(s): TAI64N
0 hit(s): Epoch
0 hit(s): ISO 8601
0 hit(s): Hour:Minute:Second
0 hit(s): &lt;Month/Day/Year@Hour:Minute:Second&gt;

Success, the total number of match is 1

However, look at the above section 'Running tests' which could contain important
information.
&lt;/code&gt;

=== Testez l'état des jails ===

Avec la commande /usr/bin/fail2ban-client vous pouvez vérifier l'état de vos &quot;jails&quot;:

Exemples de sortie:

 # /usr/bin/fail2ban-client status
&lt;pre&gt;
Status
|- Number of jail:      18
`- Jail list:           dovecot-pop3imap, pure-ftpd, roundcube, apache, ssh, dovecot, apache-overflows, apache-noscript, squirrelmail, apache-dosevasive, apache-admin, pam-generic, postfix, ssh-ddos, webmin-auth, apache-404, sasl, named-refused-tcp
&lt;/pre&gt;


 # /usr/bin/fail2ban-client status apache-404
&lt;pre&gt;
Status for the jail: apache-404
|- filter
|  |- File list:        /var/log/path/error.log /var/log/path2/error.log /var/log/path2/error.log Etc...
|  |- Currently failed: 5
|  `- Total failed:     32
`- action
   |- Currently banned: 2
   |  `- IP list:       41.xxx.xxx.xxx 84.xxx.xxx.xxx 
   `- Total banned:     2
&lt;/pre&gt;

=== Testez en violant une règle ===

Créez par exemple un répertoire dans votre serveur apache, rendez obligatoire l'identification, puis entrez plusieurs fois de suite un mot de passe erroné.
Vous devriez avoir dans vols logs ceci:

 tail -f /var/log/fail2ban.log

 2011-08-08 12:27:18,730 fail2ban.actions: WARNING [apache] Ban 10.9.11.150

Effectivement, iptables à bloqué votre ip:

 iptables -L

 Chain fail2ban-apache (1 references)
 target     prot opt source               destination         
 DROP       all  --  10.9.11.150          anywhere            
 RETURN     all  --  anywhere             anywhere

Au bout de 10 minutes (en fonction de ce que vous aurez précisé dans le configuration), l'IP sera de nouveau &quot;libérée&quot;:

 2011-08-08 12:37:19,585 fail2ban.actions: WARNING [apache] Unban 10.9.11.150

== Erreur au démarrage de fail2ban ==

Si vous surveillez plusieurs services, il existe un bug gênant sur fail2ban ([http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=554162 fail2ban: fails to load iptable rules with multiple jails]) - Il existe une solution :

Lorsque vous démarrerez fail2ban, surveillez ses logs, vous devriez avoir ceci:

 2011-08-08 16:44:40,564 fail2ban.jail   : INFO   Jail 'apache-noscript' started
 2011-08-08 16:44:40,810 fail2ban.jail   : INFO   Jail 'pam-generic' started
 2011-08-08 16:44:41,051 fail2ban.jail   : INFO   Jail 'xinetd-fail' started
 2011-08-08 16:44:41,269 fail2ban.jail   : INFO   Jail 'ssh-ddos' started
 2011-08-08 16:44:41,506 fail2ban.jail   : INFO   Jail 'apache-multiport' started
 2011-08-08 16:44:41,739 fail2ban.jail   : INFO   Jail 'apache-overflows' started
 2011-08-08 16:44:41,976 fail2ban.jail   : INFO   Jail 'ssh' started
 2011-08-08 16:44:42,206 fail2ban.jail   : INFO   Jail 'postfix' started
 2011-08-08 16:44:42,448 fail2ban.jail   : INFO   Jail 'sasl' started
 2011-08-08 16:44:42,667 fail2ban.jail   : INFO   Jail 'apache' started

Si vous avez ce genre de message d'erreur:

 2011-08-08 12:22:52,286 fail2ban.actions.action: ERROR  iptables -N fail2ban-pam-generic
 iptables -A fail2ban-pam-generic -j RETURN
 iptables -I INPUT -p tcp -j fail2ban-pam-generic returned 400
 2011-08-08 15:06:04,467 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports 10122 -j fail2ban-ssh-ddos
 iptables -F fail2ban-ssh-ddos
 iptables -X fail2ban-ssh-ddos returned 100
 2011-08-08 15:06:10,027 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-overflows
 iptables -A fail2ban-apache-overflows -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows returned 200
 2011-08-08 15:06:10,224 fail2ban.actions.action: ERROR  iptables -N fail2ban-postfix
 iptables -A fail2ban-postfix -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp -j fail2ban-postfix returned 400
 2011-08-08 15:06:10,283 fail2ban.actions.action: ERROR  iptables -N fail2ban-sasl
 iptables -A fail2ban-sasl -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl returned 200
 2011-08-08 15:14:26,002 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows
 iptables -F fail2ban-apache-overflows
 iptables -X fail2ban-apache-overflows returned 100
 2011-08-08 15:14:28,374 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl
 iptables -F fail2ban-sasl
 iptables -X fail2ban-sasl returned 100
 2011-08-08 15:14:45,382 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-noscript
 iptables -A fail2ban-apache-noscript -j RETURN
 iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-noscript returned 400

Il existe deux solutions:

1) Modifier le fichier /usr/bin/fail2ban-client

'''Faite une sauvegarde de  auparavant...'''

Editez le fichier /usr/bin/fail2ban-client et ajoutez une temporisation (time.sleep(0.1)) à cet endroit:

        def __processCmd(self, cmd, showRet = True):
                beautifier = Beautifier()
                for c in cmd:
                        time.sleep(0.1)
                        beautifier.setInputCmd(c)

Si la temporisation à 0.1 ne suffit pas, mettez 0.2. et redémarrez fail2ban.

2) Installer une version supérieure (Fixed in version fail2ban/0.8.5-2)

Installer la version testing (8.6-3 0) ou celle des backports (8.6-3~bpo60+1)

== Fail2ban et ipv6 (EXPERIMENTAL) ==

Vous le savez, l'ipv6 se généralise, lancement officiel le 6 juin 2012
Quid de fail2ban ? Malheureusement, fail2ban ne supporte pas encore l'ipv6.
Heureusement, il existe un patch qui permet d'avoir fail2ban activé sur votre ipv6...

Mode d'emploi:

Téléchargez le patch:
&lt;pre&gt;
wget http://thanatos.trollprod.org/sousites/fail2banv6/fail2ban-ipv6.tar.bz2
--2012-04-14 09:30:31--  http://thanatos.trollprod.org/sousites/fail2banv6/fail2ban-ipv6.tar.bz2
Résolution de thanatos.trollprod.org (thanatos.trollprod.org)... 94.23.14.97, 2001:41d0:2:f61::fed1:fe54
Connexion vers thanatos.trollprod.org (thanatos.trollprod.org)|94.23.14.97|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 2293 (2,2K) [application/x-bzip]
Sauvegarde en : «fail2ban-ipv6.tar.bz2»

100%[=============================================================================================&gt;] 2 293       --.-K/s   ds 0,001s  

2012-04-14 09:30:31 (2,98 MB/s) - «fail2ban-ipv6.tar.bz2» sauvegardé [2293/2293]
&lt;/pre&gt;

 mkdir fail2ban-ipv6
 tar xvjf fail2ban-ipv6.tar.bz2 -C fail2ban-ipv6

 cp /usr/share/fail2ban/server/filter.py /usr/share/fail2ban/server/filter.py.sos
 cp /usr/share/fail2ban/server/failregex.py /usr/share/fail2ban/server/failregex.py.sos

Testez les patch:

 cd /usr/share/fail2ban/server/

 root@nas:/usr/share/fail2ban/server# patch -p0 --dry-run &lt; /root/fail2ban-ipv6/patchfilter.patch
 patching file filter.py
 Hunk #1 succeeded at 525 (offset 14 lines).
 Hunk #2 succeeded at 549 (offset 14 lines).
 Hunk #3 succeeded at 580 (offset 14 lines).
   
 root@nas:/usr/share/fail2ban/server# patch -p0 --dry-run &lt; /root/fail2ban-ipv6/regex.patch 
 patching file failregex.py
 Hunk #1 succeeded at 47 (offset 3 lines).

Si le résultat est positif (pas d'erreur) lancez les patchs

 root@nas:/usr/share/fail2ban/server# patch -p0 &lt; /root/fail2ban-ipv6/patchfilter.patch
 patching file filter.py
 Hunk #1 succeeded at 525 (offset 14 lines).
 Hunk #2 succeeded at 549 (offset 14 lines).
 Hunk #3 succeeded at 580 (offset 14 lines).
 root@nas:/usr/share/fail2ban/server# patch -p0 &lt; /root/fail2ban-ipv6/regex.patch 
 patching file failregex.py
 Hunk #1 succeeded at 47 (offset 3 lines).

Copiez les fichiers nécessaires:

 root@nas:/usr/share/fail2ban/server# cp /root/fail2ban-ipv6/ip64tables.sh /usr/bin/
 root@nas:/usr/share/fail2ban/server# chmod 755 /usr/bin/ip64tables.sh
 root@nas:/usr/share/fail2ban/server# cp /root/fail2ban-ipv6/iptables46-multiport.conf /etc/fail2ban/action.d/
 root@nas:/usr/share/fail2ban/server# chmod 644 /etc/fail2ban/action.d/iptables46-multiport.conf

Créez le bloc de configuration:

 nano /etc/fail2ban/jail.conf

 ...
 [ssh-ip6tables]
 enabled = true
 filter  = sshd
 logpath  = /var/log/auth.log
 maxretry = 6
 action   = iptables46-multiport[name=SSH, port=22, protocol=tcp]
            sendmail-whois[name=SSH, dest=root, sender=fail2ban@mail.com]
 ...

Redémarrez fail2ban et vérifiez qu'il est actif:

 service fail2ban restart
 Restarting authentication failure monitor: fail2ban.
 ip6tables -S
 ...
 -N fail2ban-SSH
 -A INPUT -p tcp -m multiport --dports 22 -j fail2ban-SSH
 -A fail2ban-SSH -j RETURN

Avertissement:
# N'a pas encore été testé
# Ne pas activer la résolution de nom dans les logs

{{en}} [http://www.fail2ban.org/wiki/index.php/Fail2ban:Community_Portal#IPv6_Experimental_support Source - Wiki fail2ban]

== Liens externes ==

Je vous encourage à lire:

* La page de man de fail2ban
* [http://www.fail2ban.org/wiki/index.php/Main_Page Le Wiki de fail2ban - Très complet]

[[Utilisateur:Lol|Lol]] 8 août 2011 à 09:00 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>069e99igawmvefixhudx7ptbcxbxilz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Faire un dépot signé ou non</title>
    <ns>0</ns>
    <id>1131</id>
    <revision>
      <id>4666</id>
      <timestamp>2012-10-29T19:38:16Z</timestamp>
      <contributor>
        <username>Fran.b</username>
        <id>13</id>
      </contributor>
      <comment>Mis en place d'un dépot de paquets signé</comment>
      <text xml:space="preserve" bytes="8986">== Présentation ==
Ce petit document indique comment faire un dépot signé ou non

# Prérequis
# Configuration
# Fabrication des fichiers Packages
# Fabrication du fichier Release
# Signature du dépot

''Ce document est fondé sur la gestion de mes dépots non signés et signés suivant''&lt;br /&gt;
'''deb http://boisson.homeip.net/debian/ wheezy divers'''&lt;br /&gt;
'''deb http://boisson.homeip.net/depot/ wheezy divers'''&lt;br /&gt;

== Prérequis ==
Il existe des logiciels permettant de fabriquer et de gérer des dépots, par exemple reprepro. Ce qui suit ne fait qu'utiliser les logiciels d'apt-utils. Il suffit d'avoir donc apt-utils d'installé ainsi que gpg si vous comptez signer le dépot.

Un dépot est vu dans le sources.list par une ligne du type

'''deb http://boisson.homeip.net/depot wheezy divers'''

On y distingue l'adresse (http://boisson.homeip.net/depot), la version (wheezy ici, parmi toutes les versions du dépot) et la composante (divers ici, parmi toutes les composantes du dépot, souvent c'est main mais vous avez le droit d'être précis).

apt-cache policy montre

 500 http://boisson.homeip.net/depot/ wheezy/divers amd64 Packages
     release o=Depot F. Boisson,a=wheezy,l=boisson.homeip.net,c=divers
     origin boisson.homeip.net

On y retrouve l'adresse, les couples composantes/version et l'architecture concernée.

Le dépot aura une arborescence de ce type (. est /var/www/depot par exemple):

 . -&gt; dists -&gt; divers --&gt; binary-amd64
   |         |        |-&gt; binary-i386
   |         |-&gt; nvidia --&gt; binary-amd64
   |         |          |-&gt; binary-i386
   |         |-&gt; pouet (etc)
   |-&gt; pool --&gt; divers --&gt; amd64 (paquets de divers/amd64)
           |          |-&gt; i386 (paquets de divers/i386)
           |-&gt; nvidia --&gt; amd64 (paquets de nvidia/amd64)
           |          |-&gt; i386 (paquets de nvidia/i386)
           |-&gt; pouet --&gt; amd64 (etc)

(ici il y a 3 composantes au moins:  divers, nvidia, pouet)

Les paquets sont sous pool dans les répertoires ''composante/architecture''. La description de chaque composante est dans un fichier Packages sous ''composante/binary-&lt;architecture&gt;''

== Configuration ==
Celle ci consiste à mettre pour chaque version un fichier version.conf (par exemple wheezy.conf) dans le répertoire racine du dépot. Par exemple:

 APT::FTPArchive::Release {
   Origin                &quot;Depot F. Boisson&quot;;
   Label                 &quot;boisson.homeip.net&quot;;
   Suite                 &quot;wheezy&quot;;
   Architectures         &quot;i386 amd64&quot;;
   Components            &quot;divers&quot;;
 }

On y voit l'origine (description du dépot) qui apparait dans le champ «o=» lors du ''apt-cache policy'', le label («l=»), lsuite ou version («a=») les architectures et les composantes concernées.

== Fabrication des fichiers Packages ==

Pour chaque version, et pour chaque composante, il y a un fichier Packages et ses versions compressées correspondantes. Ce fichier s'obtient pas dpkg-buildpackage ou, de façon plus pratique, par ''apt-ftparchive packages''

'''apt-ftparchive packages pool/divers/wheezy/i386/  &gt; dists/wheezy/divers/binary-i386/Packages'''&lt;br /&gt;
'''apt-ftparchive packages pool/divers/wheezy/amd64/  &gt; dists/wheezy/divers/binary-amd64/Packages'''&lt;br /&gt;

puis leur versions compressées

'''cat dists/wheezy/divers/binary-i386/Packages | gzip &gt; dists/wheezy/divers/binary-i386/Packages.gz'''&lt;br /&gt;
'''cat dists/wheezy/divers/binary-i386/Packages | bzip2 &gt; dists/wheezy/divers/binary-i386/Packages.bz2'''&lt;br /&gt;
'''cat dists/wheezy/divers/binary-amd64/Packages | gzip &gt; dists/wheezy/divers/binary-amd64/Packages.gz'''&lt;br /&gt;
'''cat dists/wheezy/divers/binary-amd64/Packages | bzip2 &gt; dists/wheezy/divers/binary-amd64/Packages.bz2'''&lt;br /&gt;

Ce fichier ''Packages'' contient la liste des paquets avec leur description et les md5sum et autres sha. Par exemple

 Package: jpegtoavi
 Priority: optional
 Section: unknown
 Installed-Size: 64
 Maintainer: Fran�ois Boisson &lt;xxx@yyy.zz.tt&gt;
 Architecture: amd64
 Version: 1.5-1
 Depends: libc6 (&gt;= 2.2.5)
 Filename: pool/wheezy/amd64/jpegtoavi_1.5-1_amd64.deb
 Size: 9072
 MD5sum: efb15d19f16ab29513f89d2650dc6258
 SHA1: 6d798d93f780fae827152725bc3c53baccea5743
 SHA256: d2598b36e0b633968ff260372ea0870c2d7c31177ffa6a5c0679c32291e3e3ef
 Description: Conversion jpeg -&gt; avi
  Farbication de fichiers AVI � partir de JPEG


== Fabrication du fichier Release ==
Cela doit être fait une fois tous les fichiers ''Packages'' crées. Le fichier Release contient, outre la description du dépot (un fichier ''Release''pour chaque version). Il contient un md5sum (et sha) de chaque fichiers sous dists/version donc des fichiers Packages. La sureté de ce fichier permet de certifier les fichiers Packages donc les paquets.

Ce fichier se crée par

'''apt-ftparchive -c wheezy.conf release dists/wheezy/ &gt; /tmp/Release'''&lt;br /&gt;
'''mv /tmp/Release dists/wheezy/Release'''&lt;br /&gt;

(procédez en deux étapes pour que ce fichier n'apparaisse pas dans son contenu, je pense que apt-get s'en moque mais je n'ai pas vérifié).

Typiquement son contenu est

 Architectures: i386 amd64
 Components: divers nvidia owncloud
 Date: sam., 27 oct. 2012 13:04:59 UTC
 Label: boisson.homeip.net
 Origin: Depot F. Boisson
 Suite: wheezy
 MD5Sum:
  453b37a21882aae6eb4e5c2f87fb9336             2100 Release
  c067f73427faf97f5dfea9c7599e9ef3            25244 divers/binary-amd64/Packages
  626a8959586c23d90dad380058e20d7b             8269 divers/binary-amd64/Packages.bz2
  2466296dd049595904d266b663c9c616             8380 divers/binary-amd64/Packages.gz
  db0d79b76433fa614892146d60f5a8e2            22963 divers/binary-i386/Packages
  4041ce2e5f46ec25c61785bb5bbdea3c             6874 divers/binary-i386/Packages.bz2
  8e9c3fa27d07499febd42aff23588e13             6861 divers/binary-i386/Packages.gz
  f28c024f1491e206205098582f8e9a2b            34519 nvidia/binary-amd64/Packages
  360c602b0a4a865dd37e2b2cc1738260             7466 nvidia/binary-amd64/Packages.bz2
  d03982d9d41e82311c09a306e8d37883             7717 nvidia/binary-amd64/Packages.gz
  73f1b1fd3ec0d7b20a185bca293af92d            30768 nvidia/binary-i386/Packages
  70877482f19b88b882039374ff2c6e2b             7080 nvidia/binary-i386/Packages.bz2
 ....

== Signature du dépot ==

Il suffit désormais de signer le dépot donc de signer le fichier Release ce qui garantira les fichiers Packages et donc les paquets eux mêmes.
Cela se fait tout simplement par

'''gpg --sign -ba -o Release.gpg Release'''&lt;br /&gt;

À noter qu'il faut mettre la signature sur un serveur de clefs, typiquement si vous signez avec la clef

''pub   1024D/'''CEA8D8FF''' 2012-10-27''&lt;br /&gt;

il vous suffit de faire

'''gpg --keyserver pgpkeys.mit.edu --send-key CEA8D8FF'''&lt;br /&gt;

en notant qu'il faudra peut être ouvrir un port sur l'extérieur (usuellement la réponse est très rapide)

L'utilisateur, si il n'a pas votre clef, verra

Il pourra récupérer la clef par les classiques

'''gpg --keyserver pgpkeys.mit.edu --recv-key D78A5C23CEA8D8FF'''&lt;br /&gt;

qui récupère la clef sur le serveur et

'''gpg -a --export D78A5C23CEA8D8FF &gt; /tmp/clef.txt'''&lt;br /&gt;
et sous root&lt;br /&gt;
'''apt-key add /tmp/clef.txt'''&lt;br /&gt;

== Un script ==
Ce script ''updatedepot'' permet de faire la suite des opérations automatiquement dès que les fichiers versions.conf ont été crées:

 #!/bin/sh&lt;br /&gt;                                                                                                           
 VERSION=$1&lt;br /&gt;
 DISTRIBUTION=depot&lt;br /&gt;
 if [ ! -z $2 ] ; then&lt;br /&gt;
     DISTRIBUTION=$2&lt;br /&gt;
 fi&lt;br /&gt;
 LISTE=$(grep Component $VERSION.conf | sed 's/^.*&quot;\(.*\)&quot;.*$/\1/')&lt;br /&gt;
 echo $LISTE&lt;br /&gt;
 cd /var/www/$DISTRIBUTION&lt;br /&gt;
 # consultation de divers&lt;br /&gt;                                                                                            
 for nom in $LISTE ; do&lt;br /&gt;
     echo Fabrication de $nom&lt;br /&gt;
     mkdir -p dists/$VERSION/$nom/binary-i386/&lt;br /&gt;
     mkdir -p dists/$VERSION/$nom/binary-amd64/&lt;br /&gt;
     apt-ftparchive packages pool/$VERSION/$nom/i386/ | gzip &gt; dists/$VERSION/$nom/binary-i386/Packages.gz&lt;br /&gt;
     zcat dists/$VERSION/$nom/binary-i386/Packages.gz | bzip2 &gt; dists/$VERSION/$nom/binary-i386/Packages.bz2&lt;br /&gt;
     zcat dists/$VERSION/$nom/binary-i386/Packages.gz &gt;dists/$VERSION/$nom/binary-i386/Packages&lt;br /&gt;
     apt-ftparchive packages pool/$VERSION/$nom/amd64/ | gzip &gt; dists/$VERSION/$nom/binary-amd64/Packages.gz&lt;br /&gt;
     zcat dists/$VERSION/$nom/binary-amd64/Packages.gz | bzip2 &gt;dists/$VERSION/$nom/binary-amd64/Packages.bz2&lt;br /&gt;
     zcat dists/$VERSION/$nom/binary-amd64/Packages.gz &gt;dists/$VERSION/$nom/binary-amd64/Packages&lt;br /&gt;
 done&lt;br /&gt;
 apt-ftparchive -c $VERSION.conf release dists/$VERSION/ &gt; /tmp/Release.tmp&lt;br /&gt;
 mv /tmp/Release.tmp dists/$VERSION/Release&lt;br /&gt;
 cd dists/$VERSION/&lt;br /&gt;
 rm Release.gpg&lt;br /&gt;
 gpg --sign -ba -o Release.gpg Release&lt;br /&gt;

Il s'utilise par 

 $ updatedepot wheezy depot

si wheezy est la version choisie et /var/www/depot l'emplacement du dépot.</text>
      <sha1>ev2ydjy6aout89ixf9h8mxq0s0jx1v2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4667</id>
      <parentid>4666</parentid>
      <timestamp>2012-10-29T19:40:04Z</timestamp>
      <contributor>
        <username>Fran.b</username>
        <id>13</id>
      </contributor>
      <comment>/* Présentation */</comment>
      <text xml:space="preserve" bytes="9075">== Présentation ==
Ce petit document indique comment faire un dépot signé ou non

# Prérequis
# Configuration
# Fabrication des fichiers Packages
# Fabrication du fichier Release
# Signature du dépot

''Ce document est fondé sur la gestion de mes dépots non signés et signés suivant''&lt;br /&gt;
'''deb http://boisson.homeip.net/debian/ wheezy divers'''&lt;br /&gt;
'''deb http://boisson.homeip.net/depot/ wheezy divers'''&lt;br /&gt;

Il est possible de voir concrètement les fichiers en allant sur le site correspondant.

== Prérequis ==
Il existe des logiciels permettant de fabriquer et de gérer des dépots, par exemple reprepro. Ce qui suit ne fait qu'utiliser les logiciels d'apt-utils. Il suffit d'avoir donc apt-utils d'installé ainsi que gpg si vous comptez signer le dépot.

Un dépot est vu dans le sources.list par une ligne du type

'''deb http://boisson.homeip.net/depot wheezy divers'''

On y distingue l'adresse (http://boisson.homeip.net/depot), la version (wheezy ici, parmi toutes les versions du dépot) et la composante (divers ici, parmi toutes les composantes du dépot, souvent c'est main mais vous avez le droit d'être précis).

apt-cache policy montre

 500 http://boisson.homeip.net/depot/ wheezy/divers amd64 Packages
     release o=Depot F. Boisson,a=wheezy,l=boisson.homeip.net,c=divers
     origin boisson.homeip.net

On y retrouve l'adresse, les couples composantes/version et l'architecture concernée.

Le dépot aura une arborescence de ce type (. est /var/www/depot par exemple):

 . -&gt; dists -&gt; divers --&gt; binary-amd64
   |         |        |-&gt; binary-i386
   |         |-&gt; nvidia --&gt; binary-amd64
   |         |          |-&gt; binary-i386
   |         |-&gt; pouet (etc)
   |-&gt; pool --&gt; divers --&gt; amd64 (paquets de divers/amd64)
           |          |-&gt; i386 (paquets de divers/i386)
           |-&gt; nvidia --&gt; amd64 (paquets de nvidia/amd64)
           |          |-&gt; i386 (paquets de nvidia/i386)
           |-&gt; pouet --&gt; amd64 (etc)

(ici il y a 3 composantes au moins:  divers, nvidia, pouet)

Les paquets sont sous pool dans les répertoires ''composante/architecture''. La description de chaque composante est dans un fichier Packages sous ''composante/binary-&lt;architecture&gt;''

== Configuration ==
Celle ci consiste à mettre pour chaque version un fichier version.conf (par exemple wheezy.conf) dans le répertoire racine du dépot. Par exemple:

 APT::FTPArchive::Release {
   Origin                &quot;Depot F. Boisson&quot;;
   Label                 &quot;boisson.homeip.net&quot;;
   Suite                 &quot;wheezy&quot;;
   Architectures         &quot;i386 amd64&quot;;
   Components            &quot;divers&quot;;
 }

On y voit l'origine (description du dépot) qui apparait dans le champ «o=» lors du ''apt-cache policy'', le label («l=»), lsuite ou version («a=») les architectures et les composantes concernées.

== Fabrication des fichiers Packages ==

Pour chaque version, et pour chaque composante, il y a un fichier Packages et ses versions compressées correspondantes. Ce fichier s'obtient pas dpkg-buildpackage ou, de façon plus pratique, par ''apt-ftparchive packages''

'''apt-ftparchive packages pool/divers/wheezy/i386/  &gt; dists/wheezy/divers/binary-i386/Packages'''&lt;br /&gt;
'''apt-ftparchive packages pool/divers/wheezy/amd64/  &gt; dists/wheezy/divers/binary-amd64/Packages'''&lt;br /&gt;

puis leur versions compressées

'''cat dists/wheezy/divers/binary-i386/Packages | gzip &gt; dists/wheezy/divers/binary-i386/Packages.gz'''&lt;br /&gt;
'''cat dists/wheezy/divers/binary-i386/Packages | bzip2 &gt; dists/wheezy/divers/binary-i386/Packages.bz2'''&lt;br /&gt;
'''cat dists/wheezy/divers/binary-amd64/Packages | gzip &gt; dists/wheezy/divers/binary-amd64/Packages.gz'''&lt;br /&gt;
'''cat dists/wheezy/divers/binary-amd64/Packages | bzip2 &gt; dists/wheezy/divers/binary-amd64/Packages.bz2'''&lt;br /&gt;

Ce fichier ''Packages'' contient la liste des paquets avec leur description et les md5sum et autres sha. Par exemple

 Package: jpegtoavi
 Priority: optional
 Section: unknown
 Installed-Size: 64
 Maintainer: Fran�ois Boisson &lt;xxx@yyy.zz.tt&gt;
 Architecture: amd64
 Version: 1.5-1
 Depends: libc6 (&gt;= 2.2.5)
 Filename: pool/wheezy/amd64/jpegtoavi_1.5-1_amd64.deb
 Size: 9072
 MD5sum: efb15d19f16ab29513f89d2650dc6258
 SHA1: 6d798d93f780fae827152725bc3c53baccea5743
 SHA256: d2598b36e0b633968ff260372ea0870c2d7c31177ffa6a5c0679c32291e3e3ef
 Description: Conversion jpeg -&gt; avi
  Farbication de fichiers AVI � partir de JPEG


== Fabrication du fichier Release ==
Cela doit être fait une fois tous les fichiers ''Packages'' crées. Le fichier Release contient, outre la description du dépot (un fichier ''Release''pour chaque version). Il contient un md5sum (et sha) de chaque fichiers sous dists/version donc des fichiers Packages. La sureté de ce fichier permet de certifier les fichiers Packages donc les paquets.

Ce fichier se crée par

'''apt-ftparchive -c wheezy.conf release dists/wheezy/ &gt; /tmp/Release'''&lt;br /&gt;
'''mv /tmp/Release dists/wheezy/Release'''&lt;br /&gt;

(procédez en deux étapes pour que ce fichier n'apparaisse pas dans son contenu, je pense que apt-get s'en moque mais je n'ai pas vérifié).

Typiquement son contenu est

 Architectures: i386 amd64
 Components: divers nvidia owncloud
 Date: sam., 27 oct. 2012 13:04:59 UTC
 Label: boisson.homeip.net
 Origin: Depot F. Boisson
 Suite: wheezy
 MD5Sum:
  453b37a21882aae6eb4e5c2f87fb9336             2100 Release
  c067f73427faf97f5dfea9c7599e9ef3            25244 divers/binary-amd64/Packages
  626a8959586c23d90dad380058e20d7b             8269 divers/binary-amd64/Packages.bz2
  2466296dd049595904d266b663c9c616             8380 divers/binary-amd64/Packages.gz
  db0d79b76433fa614892146d60f5a8e2            22963 divers/binary-i386/Packages
  4041ce2e5f46ec25c61785bb5bbdea3c             6874 divers/binary-i386/Packages.bz2
  8e9c3fa27d07499febd42aff23588e13             6861 divers/binary-i386/Packages.gz
  f28c024f1491e206205098582f8e9a2b            34519 nvidia/binary-amd64/Packages
  360c602b0a4a865dd37e2b2cc1738260             7466 nvidia/binary-amd64/Packages.bz2
  d03982d9d41e82311c09a306e8d37883             7717 nvidia/binary-amd64/Packages.gz
  73f1b1fd3ec0d7b20a185bca293af92d            30768 nvidia/binary-i386/Packages
  70877482f19b88b882039374ff2c6e2b             7080 nvidia/binary-i386/Packages.bz2
 ....

== Signature du dépot ==

Il suffit désormais de signer le dépot donc de signer le fichier Release ce qui garantira les fichiers Packages et donc les paquets eux mêmes.
Cela se fait tout simplement par

'''gpg --sign -ba -o Release.gpg Release'''&lt;br /&gt;

À noter qu'il faut mettre la signature sur un serveur de clefs, typiquement si vous signez avec la clef

''pub   1024D/'''CEA8D8FF''' 2012-10-27''&lt;br /&gt;

il vous suffit de faire

'''gpg --keyserver pgpkeys.mit.edu --send-key CEA8D8FF'''&lt;br /&gt;

en notant qu'il faudra peut être ouvrir un port sur l'extérieur (usuellement la réponse est très rapide)

L'utilisateur, si il n'a pas votre clef, verra

Il pourra récupérer la clef par les classiques

'''gpg --keyserver pgpkeys.mit.edu --recv-key D78A5C23CEA8D8FF'''&lt;br /&gt;

qui récupère la clef sur le serveur et

'''gpg -a --export D78A5C23CEA8D8FF &gt; /tmp/clef.txt'''&lt;br /&gt;
et sous root&lt;br /&gt;
'''apt-key add /tmp/clef.txt'''&lt;br /&gt;

== Un script ==
Ce script ''updatedepot'' permet de faire la suite des opérations automatiquement dès que les fichiers versions.conf ont été crées:

 #!/bin/sh&lt;br /&gt;                                                                                                           
 VERSION=$1&lt;br /&gt;
 DISTRIBUTION=depot&lt;br /&gt;
 if [ ! -z $2 ] ; then&lt;br /&gt;
     DISTRIBUTION=$2&lt;br /&gt;
 fi&lt;br /&gt;
 LISTE=$(grep Component $VERSION.conf | sed 's/^.*&quot;\(.*\)&quot;.*$/\1/')&lt;br /&gt;
 echo $LISTE&lt;br /&gt;
 cd /var/www/$DISTRIBUTION&lt;br /&gt;
 # consultation de divers&lt;br /&gt;                                                                                            
 for nom in $LISTE ; do&lt;br /&gt;
     echo Fabrication de $nom&lt;br /&gt;
     mkdir -p dists/$VERSION/$nom/binary-i386/&lt;br /&gt;
     mkdir -p dists/$VERSION/$nom/binary-amd64/&lt;br /&gt;
     apt-ftparchive packages pool/$VERSION/$nom/i386/ | gzip &gt; dists/$VERSION/$nom/binary-i386/Packages.gz&lt;br /&gt;
     zcat dists/$VERSION/$nom/binary-i386/Packages.gz | bzip2 &gt; dists/$VERSION/$nom/binary-i386/Packages.bz2&lt;br /&gt;
     zcat dists/$VERSION/$nom/binary-i386/Packages.gz &gt;dists/$VERSION/$nom/binary-i386/Packages&lt;br /&gt;
     apt-ftparchive packages pool/$VERSION/$nom/amd64/ | gzip &gt; dists/$VERSION/$nom/binary-amd64/Packages.gz&lt;br /&gt;
     zcat dists/$VERSION/$nom/binary-amd64/Packages.gz | bzip2 &gt;dists/$VERSION/$nom/binary-amd64/Packages.bz2&lt;br /&gt;
     zcat dists/$VERSION/$nom/binary-amd64/Packages.gz &gt;dists/$VERSION/$nom/binary-amd64/Packages&lt;br /&gt;
 done&lt;br /&gt;
 apt-ftparchive -c $VERSION.conf release dists/$VERSION/ &gt; /tmp/Release.tmp&lt;br /&gt;
 mv /tmp/Release.tmp dists/$VERSION/Release&lt;br /&gt;
 cd dists/$VERSION/&lt;br /&gt;
 rm Release.gpg&lt;br /&gt;
 gpg --sign -ba -o Release.gpg Release&lt;br /&gt;

Il s'utilise par 

 $ updatedepot wheezy depot

si wheezy est la version choisie et /var/www/depot l'emplacement du dépot.</text>
      <sha1>oc4qyun6lxkfgyndallfx0i3vv2zwva</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4668</id>
      <parentid>4667</parentid>
      <timestamp>2012-10-29T21:53:29Z</timestamp>
      <contributor>
        <username>Fran.b</username>
        <id>13</id>
      </contributor>
      <comment>/* Fabrication du fichier Release */</comment>
      <text xml:space="preserve" bytes="9287">== Présentation ==
Ce petit document indique comment faire un dépot signé ou non

# Prérequis
# Configuration
# Fabrication des fichiers Packages
# Fabrication du fichier Release
# Signature du dépot

''Ce document est fondé sur la gestion de mes dépots non signés et signés suivant''&lt;br /&gt;
'''deb http://boisson.homeip.net/debian/ wheezy divers'''&lt;br /&gt;
'''deb http://boisson.homeip.net/depot/ wheezy divers'''&lt;br /&gt;

Il est possible de voir concrètement les fichiers en allant sur le site correspondant.

== Prérequis ==
Il existe des logiciels permettant de fabriquer et de gérer des dépots, par exemple reprepro. Ce qui suit ne fait qu'utiliser les logiciels d'apt-utils. Il suffit d'avoir donc apt-utils d'installé ainsi que gpg si vous comptez signer le dépot.

Un dépot est vu dans le sources.list par une ligne du type

'''deb http://boisson.homeip.net/depot wheezy divers'''

On y distingue l'adresse (http://boisson.homeip.net/depot), la version (wheezy ici, parmi toutes les versions du dépot) et la composante (divers ici, parmi toutes les composantes du dépot, souvent c'est main mais vous avez le droit d'être précis).

apt-cache policy montre

 500 http://boisson.homeip.net/depot/ wheezy/divers amd64 Packages
     release o=Depot F. Boisson,a=wheezy,l=boisson.homeip.net,c=divers
     origin boisson.homeip.net

On y retrouve l'adresse, les couples composantes/version et l'architecture concernée.

Le dépot aura une arborescence de ce type (. est /var/www/depot par exemple):

 . -&gt; dists -&gt; divers --&gt; binary-amd64
   |         |        |-&gt; binary-i386
   |         |-&gt; nvidia --&gt; binary-amd64
   |         |          |-&gt; binary-i386
   |         |-&gt; pouet (etc)
   |-&gt; pool --&gt; divers --&gt; amd64 (paquets de divers/amd64)
           |          |-&gt; i386 (paquets de divers/i386)
           |-&gt; nvidia --&gt; amd64 (paquets de nvidia/amd64)
           |          |-&gt; i386 (paquets de nvidia/i386)
           |-&gt; pouet --&gt; amd64 (etc)

(ici il y a 3 composantes au moins:  divers, nvidia, pouet)

Les paquets sont sous pool dans les répertoires ''composante/architecture''. La description de chaque composante est dans un fichier Packages sous ''composante/binary-&lt;architecture&gt;''

== Configuration ==
Celle ci consiste à mettre pour chaque version un fichier version.conf (par exemple wheezy.conf) dans le répertoire racine du dépot. Par exemple:

 APT::FTPArchive::Release {
   Origin                &quot;Depot F. Boisson&quot;;
   Label                 &quot;boisson.homeip.net&quot;;
   Suite                 &quot;wheezy&quot;;
   Architectures         &quot;i386 amd64&quot;;
   Components            &quot;divers&quot;;
 }

On y voit l'origine (description du dépot) qui apparait dans le champ «o=» lors du ''apt-cache policy'', le label («l=»), lsuite ou version («a=») les architectures et les composantes concernées.

== Fabrication des fichiers Packages ==

Pour chaque version, et pour chaque composante, il y a un fichier Packages et ses versions compressées correspondantes. Ce fichier s'obtient pas dpkg-buildpackage ou, de façon plus pratique, par ''apt-ftparchive packages''

'''apt-ftparchive packages pool/divers/wheezy/i386/  &gt; dists/wheezy/divers/binary-i386/Packages'''&lt;br /&gt;
'''apt-ftparchive packages pool/divers/wheezy/amd64/  &gt; dists/wheezy/divers/binary-amd64/Packages'''&lt;br /&gt;

puis leur versions compressées

'''cat dists/wheezy/divers/binary-i386/Packages | gzip &gt; dists/wheezy/divers/binary-i386/Packages.gz'''&lt;br /&gt;
'''cat dists/wheezy/divers/binary-i386/Packages | bzip2 &gt; dists/wheezy/divers/binary-i386/Packages.bz2'''&lt;br /&gt;
'''cat dists/wheezy/divers/binary-amd64/Packages | gzip &gt; dists/wheezy/divers/binary-amd64/Packages.gz'''&lt;br /&gt;
'''cat dists/wheezy/divers/binary-amd64/Packages | bzip2 &gt; dists/wheezy/divers/binary-amd64/Packages.bz2'''&lt;br /&gt;

Ce fichier ''Packages'' contient la liste des paquets avec leur description et les md5sum et autres sha. Par exemple

 Package: jpegtoavi
 Priority: optional
 Section: unknown
 Installed-Size: 64
 Maintainer: Fran�ois Boisson &lt;xxx@yyy.zz.tt&gt;
 Architecture: amd64
 Version: 1.5-1
 Depends: libc6 (&gt;= 2.2.5)
 Filename: pool/wheezy/amd64/jpegtoavi_1.5-1_amd64.deb
 Size: 9072
 MD5sum: efb15d19f16ab29513f89d2650dc6258
 SHA1: 6d798d93f780fae827152725bc3c53baccea5743
 SHA256: d2598b36e0b633968ff260372ea0870c2d7c31177ffa6a5c0679c32291e3e3ef
 Description: Conversion jpeg -&gt; avi
  Farbication de fichiers AVI � partir de JPEG


== Fabrication du fichier Release ==
Cela doit être fait une fois tous les fichiers ''Packages'' crées. Le fichier Release contient, outre la description du dépot (un fichier ''Release'' pour chaque version). Il contient un md5sum (et sha) de chaque fichier sous dists/version donc entre autres des fichiers Packages. La sureté de ce fichier permet de certifier les fichiers Packages donc les paquets.

Ce fichier se crée par

'''apt-ftparchive -c wheezy.conf release dists/wheezy/ &gt; /tmp/Release'''&lt;br /&gt;
'''mv /tmp/Release dists/wheezy/Release'''&lt;br /&gt;

(procédez en deux étapes pour que ce fichier n'apparaisse pas dans son contenu, je pense que apt-get s'en moque mais je n'ai pas vérifié). La première commande fabrique le fichier dans /tmp/Release, le fichier de configuration dans cet exemple est wheezy.conf. Il est important de bien renseigner les différentes composantes du dépot.

Typiquement son contenu est

 Architectures: i386 amd64
 Components: divers nvidia owncloud
 Date: sam., 27 oct. 2012 13:04:59 UTC
 Label: boisson.homeip.net
 Origin: Depot F. Boisson
 Suite: wheezy
 MD5Sum:
  453b37a21882aae6eb4e5c2f87fb9336             2100 Release
  c067f73427faf97f5dfea9c7599e9ef3            25244 divers/binary-amd64/Packages
  626a8959586c23d90dad380058e20d7b             8269 divers/binary-amd64/Packages.bz2
  2466296dd049595904d266b663c9c616             8380 divers/binary-amd64/Packages.gz
  db0d79b76433fa614892146d60f5a8e2            22963 divers/binary-i386/Packages
  4041ce2e5f46ec25c61785bb5bbdea3c             6874 divers/binary-i386/Packages.bz2
  8e9c3fa27d07499febd42aff23588e13             6861 divers/binary-i386/Packages.gz
  f28c024f1491e206205098582f8e9a2b            34519 nvidia/binary-amd64/Packages
  360c602b0a4a865dd37e2b2cc1738260             7466 nvidia/binary-amd64/Packages.bz2
  d03982d9d41e82311c09a306e8d37883             7717 nvidia/binary-amd64/Packages.gz
  73f1b1fd3ec0d7b20a185bca293af92d            30768 nvidia/binary-i386/Packages
  70877482f19b88b882039374ff2c6e2b             7080 nvidia/binary-i386/Packages.bz2
 ....

== Signature du dépot ==

Il suffit désormais de signer le dépot donc de signer le fichier Release ce qui garantira les fichiers Packages et donc les paquets eux mêmes.
Cela se fait tout simplement par

'''gpg --sign -ba -o Release.gpg Release'''&lt;br /&gt;

À noter qu'il faut mettre la signature sur un serveur de clefs, typiquement si vous signez avec la clef

''pub   1024D/'''CEA8D8FF''' 2012-10-27''&lt;br /&gt;

il vous suffit de faire

'''gpg --keyserver pgpkeys.mit.edu --send-key CEA8D8FF'''&lt;br /&gt;

en notant qu'il faudra peut être ouvrir un port sur l'extérieur (usuellement la réponse est très rapide)

L'utilisateur, si il n'a pas votre clef, verra

Il pourra récupérer la clef par les classiques

'''gpg --keyserver pgpkeys.mit.edu --recv-key D78A5C23CEA8D8FF'''&lt;br /&gt;

qui récupère la clef sur le serveur et

'''gpg -a --export D78A5C23CEA8D8FF &gt; /tmp/clef.txt'''&lt;br /&gt;
et sous root&lt;br /&gt;
'''apt-key add /tmp/clef.txt'''&lt;br /&gt;

== Un script ==
Ce script ''updatedepot'' permet de faire la suite des opérations automatiquement dès que les fichiers versions.conf ont été crées:

 #!/bin/sh&lt;br /&gt;                                                                                                           
 VERSION=$1&lt;br /&gt;
 DISTRIBUTION=depot&lt;br /&gt;
 if [ ! -z $2 ] ; then&lt;br /&gt;
     DISTRIBUTION=$2&lt;br /&gt;
 fi&lt;br /&gt;
 LISTE=$(grep Component $VERSION.conf | sed 's/^.*&quot;\(.*\)&quot;.*$/\1/')&lt;br /&gt;
 echo $LISTE&lt;br /&gt;
 cd /var/www/$DISTRIBUTION&lt;br /&gt;
 # consultation de divers&lt;br /&gt;                                                                                            
 for nom in $LISTE ; do&lt;br /&gt;
     echo Fabrication de $nom&lt;br /&gt;
     mkdir -p dists/$VERSION/$nom/binary-i386/&lt;br /&gt;
     mkdir -p dists/$VERSION/$nom/binary-amd64/&lt;br /&gt;
     apt-ftparchive packages pool/$VERSION/$nom/i386/ | gzip &gt; dists/$VERSION/$nom/binary-i386/Packages.gz&lt;br /&gt;
     zcat dists/$VERSION/$nom/binary-i386/Packages.gz | bzip2 &gt; dists/$VERSION/$nom/binary-i386/Packages.bz2&lt;br /&gt;
     zcat dists/$VERSION/$nom/binary-i386/Packages.gz &gt;dists/$VERSION/$nom/binary-i386/Packages&lt;br /&gt;
     apt-ftparchive packages pool/$VERSION/$nom/amd64/ | gzip &gt; dists/$VERSION/$nom/binary-amd64/Packages.gz&lt;br /&gt;
     zcat dists/$VERSION/$nom/binary-amd64/Packages.gz | bzip2 &gt;dists/$VERSION/$nom/binary-amd64/Packages.bz2&lt;br /&gt;
     zcat dists/$VERSION/$nom/binary-amd64/Packages.gz &gt;dists/$VERSION/$nom/binary-amd64/Packages&lt;br /&gt;
 done&lt;br /&gt;
 apt-ftparchive -c $VERSION.conf release dists/$VERSION/ &gt; /tmp/Release.tmp&lt;br /&gt;
 mv /tmp/Release.tmp dists/$VERSION/Release&lt;br /&gt;
 cd dists/$VERSION/&lt;br /&gt;
 rm Release.gpg&lt;br /&gt;
 gpg --sign -ba -o Release.gpg Release&lt;br /&gt;

Il s'utilise par 

 $ updatedepot wheezy depot

si wheezy est la version choisie et /var/www/depot l'emplacement du dépot.</text>
      <sha1>t9jbnoj6g3xf8kroypz0aosq2b7aq14</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4669</id>
      <parentid>4668</parentid>
      <timestamp>2012-10-29T21:55:01Z</timestamp>
      <contributor>
        <username>Fran.b</username>
        <id>13</id>
      </contributor>
      <comment>/* Un script */</comment>
      <text xml:space="preserve" bytes="9478">== Présentation ==
Ce petit document indique comment faire un dépot signé ou non

# Prérequis
# Configuration
# Fabrication des fichiers Packages
# Fabrication du fichier Release
# Signature du dépot

''Ce document est fondé sur la gestion de mes dépots non signés et signés suivant''&lt;br /&gt;
'''deb http://boisson.homeip.net/debian/ wheezy divers'''&lt;br /&gt;
'''deb http://boisson.homeip.net/depot/ wheezy divers'''&lt;br /&gt;

Il est possible de voir concrètement les fichiers en allant sur le site correspondant.

== Prérequis ==
Il existe des logiciels permettant de fabriquer et de gérer des dépots, par exemple reprepro. Ce qui suit ne fait qu'utiliser les logiciels d'apt-utils. Il suffit d'avoir donc apt-utils d'installé ainsi que gpg si vous comptez signer le dépot.

Un dépot est vu dans le sources.list par une ligne du type

'''deb http://boisson.homeip.net/depot wheezy divers'''

On y distingue l'adresse (http://boisson.homeip.net/depot), la version (wheezy ici, parmi toutes les versions du dépot) et la composante (divers ici, parmi toutes les composantes du dépot, souvent c'est main mais vous avez le droit d'être précis).

apt-cache policy montre

 500 http://boisson.homeip.net/depot/ wheezy/divers amd64 Packages
     release o=Depot F. Boisson,a=wheezy,l=boisson.homeip.net,c=divers
     origin boisson.homeip.net

On y retrouve l'adresse, les couples composantes/version et l'architecture concernée.

Le dépot aura une arborescence de ce type (. est /var/www/depot par exemple):

 . -&gt; dists -&gt; divers --&gt; binary-amd64
   |         |        |-&gt; binary-i386
   |         |-&gt; nvidia --&gt; binary-amd64
   |         |          |-&gt; binary-i386
   |         |-&gt; pouet (etc)
   |-&gt; pool --&gt; divers --&gt; amd64 (paquets de divers/amd64)
           |          |-&gt; i386 (paquets de divers/i386)
           |-&gt; nvidia --&gt; amd64 (paquets de nvidia/amd64)
           |          |-&gt; i386 (paquets de nvidia/i386)
           |-&gt; pouet --&gt; amd64 (etc)

(ici il y a 3 composantes au moins:  divers, nvidia, pouet)

Les paquets sont sous pool dans les répertoires ''composante/architecture''. La description de chaque composante est dans un fichier Packages sous ''composante/binary-&lt;architecture&gt;''

== Configuration ==
Celle ci consiste à mettre pour chaque version un fichier version.conf (par exemple wheezy.conf) dans le répertoire racine du dépot. Par exemple:

 APT::FTPArchive::Release {
   Origin                &quot;Depot F. Boisson&quot;;
   Label                 &quot;boisson.homeip.net&quot;;
   Suite                 &quot;wheezy&quot;;
   Architectures         &quot;i386 amd64&quot;;
   Components            &quot;divers&quot;;
 }

On y voit l'origine (description du dépot) qui apparait dans le champ «o=» lors du ''apt-cache policy'', le label («l=»), lsuite ou version («a=») les architectures et les composantes concernées.

== Fabrication des fichiers Packages ==

Pour chaque version, et pour chaque composante, il y a un fichier Packages et ses versions compressées correspondantes. Ce fichier s'obtient pas dpkg-buildpackage ou, de façon plus pratique, par ''apt-ftparchive packages''

'''apt-ftparchive packages pool/divers/wheezy/i386/  &gt; dists/wheezy/divers/binary-i386/Packages'''&lt;br /&gt;
'''apt-ftparchive packages pool/divers/wheezy/amd64/  &gt; dists/wheezy/divers/binary-amd64/Packages'''&lt;br /&gt;

puis leur versions compressées

'''cat dists/wheezy/divers/binary-i386/Packages | gzip &gt; dists/wheezy/divers/binary-i386/Packages.gz'''&lt;br /&gt;
'''cat dists/wheezy/divers/binary-i386/Packages | bzip2 &gt; dists/wheezy/divers/binary-i386/Packages.bz2'''&lt;br /&gt;
'''cat dists/wheezy/divers/binary-amd64/Packages | gzip &gt; dists/wheezy/divers/binary-amd64/Packages.gz'''&lt;br /&gt;
'''cat dists/wheezy/divers/binary-amd64/Packages | bzip2 &gt; dists/wheezy/divers/binary-amd64/Packages.bz2'''&lt;br /&gt;

Ce fichier ''Packages'' contient la liste des paquets avec leur description et les md5sum et autres sha. Par exemple

 Package: jpegtoavi
 Priority: optional
 Section: unknown
 Installed-Size: 64
 Maintainer: Fran�ois Boisson &lt;xxx@yyy.zz.tt&gt;
 Architecture: amd64
 Version: 1.5-1
 Depends: libc6 (&gt;= 2.2.5)
 Filename: pool/wheezy/amd64/jpegtoavi_1.5-1_amd64.deb
 Size: 9072
 MD5sum: efb15d19f16ab29513f89d2650dc6258
 SHA1: 6d798d93f780fae827152725bc3c53baccea5743
 SHA256: d2598b36e0b633968ff260372ea0870c2d7c31177ffa6a5c0679c32291e3e3ef
 Description: Conversion jpeg -&gt; avi
  Farbication de fichiers AVI � partir de JPEG


== Fabrication du fichier Release ==
Cela doit être fait une fois tous les fichiers ''Packages'' crées. Le fichier Release contient, outre la description du dépot (un fichier ''Release'' pour chaque version). Il contient un md5sum (et sha) de chaque fichier sous dists/version donc entre autres des fichiers Packages. La sureté de ce fichier permet de certifier les fichiers Packages donc les paquets.

Ce fichier se crée par

'''apt-ftparchive -c wheezy.conf release dists/wheezy/ &gt; /tmp/Release'''&lt;br /&gt;
'''mv /tmp/Release dists/wheezy/Release'''&lt;br /&gt;

(procédez en deux étapes pour que ce fichier n'apparaisse pas dans son contenu, je pense que apt-get s'en moque mais je n'ai pas vérifié). La première commande fabrique le fichier dans /tmp/Release, le fichier de configuration dans cet exemple est wheezy.conf. Il est important de bien renseigner les différentes composantes du dépot.

Typiquement son contenu est

 Architectures: i386 amd64
 Components: divers nvidia owncloud
 Date: sam., 27 oct. 2012 13:04:59 UTC
 Label: boisson.homeip.net
 Origin: Depot F. Boisson
 Suite: wheezy
 MD5Sum:
  453b37a21882aae6eb4e5c2f87fb9336             2100 Release
  c067f73427faf97f5dfea9c7599e9ef3            25244 divers/binary-amd64/Packages
  626a8959586c23d90dad380058e20d7b             8269 divers/binary-amd64/Packages.bz2
  2466296dd049595904d266b663c9c616             8380 divers/binary-amd64/Packages.gz
  db0d79b76433fa614892146d60f5a8e2            22963 divers/binary-i386/Packages
  4041ce2e5f46ec25c61785bb5bbdea3c             6874 divers/binary-i386/Packages.bz2
  8e9c3fa27d07499febd42aff23588e13             6861 divers/binary-i386/Packages.gz
  f28c024f1491e206205098582f8e9a2b            34519 nvidia/binary-amd64/Packages
  360c602b0a4a865dd37e2b2cc1738260             7466 nvidia/binary-amd64/Packages.bz2
  d03982d9d41e82311c09a306e8d37883             7717 nvidia/binary-amd64/Packages.gz
  73f1b1fd3ec0d7b20a185bca293af92d            30768 nvidia/binary-i386/Packages
  70877482f19b88b882039374ff2c6e2b             7080 nvidia/binary-i386/Packages.bz2
 ....

== Signature du dépot ==

Il suffit désormais de signer le dépot donc de signer le fichier Release ce qui garantira les fichiers Packages et donc les paquets eux mêmes.
Cela se fait tout simplement par

'''gpg --sign -ba -o Release.gpg Release'''&lt;br /&gt;

À noter qu'il faut mettre la signature sur un serveur de clefs, typiquement si vous signez avec la clef

''pub   1024D/'''CEA8D8FF''' 2012-10-27''&lt;br /&gt;

il vous suffit de faire

'''gpg --keyserver pgpkeys.mit.edu --send-key CEA8D8FF'''&lt;br /&gt;

en notant qu'il faudra peut être ouvrir un port sur l'extérieur (usuellement la réponse est très rapide)

L'utilisateur, si il n'a pas votre clef, verra

Il pourra récupérer la clef par les classiques

'''gpg --keyserver pgpkeys.mit.edu --recv-key D78A5C23CEA8D8FF'''&lt;br /&gt;

qui récupère la clef sur le serveur et

'''gpg -a --export D78A5C23CEA8D8FF &gt; /tmp/clef.txt'''&lt;br /&gt;
et sous root&lt;br /&gt;
'''apt-key add /tmp/clef.txt'''&lt;br /&gt;

== Un script ==
Ce script ''updatedepot'' permet de faire la suite des opérations automatiquement dès que les fichiers versions.conf ont été crées:

 #!/bin/sh&lt;br /&gt;                                                                                                           
 VERSION=$1&lt;br /&gt;
 DISTRIBUTION=depot&lt;br /&gt;
 if [ ! -z $2 ] ; then&lt;br /&gt;
     DISTRIBUTION=$2&lt;br /&gt;
 fi&lt;br /&gt;
 LISTE=$(grep Component $VERSION.conf | sed 's/^.*&quot;\(.*\)&quot;.*$/\1/')&lt;br /&gt;
 echo $LISTE&lt;br /&gt;
 cd /var/www/$DISTRIBUTION&lt;br /&gt;
 # consultation de divers&lt;br /&gt;                                                                                            
 for nom in $LISTE ; do&lt;br /&gt;
     echo Fabrication de $nom&lt;br /&gt;
     mkdir -p dists/$VERSION/$nom/binary-i386/&lt;br /&gt;
     mkdir -p dists/$VERSION/$nom/binary-amd64/&lt;br /&gt;
     apt-ftparchive packages pool/$VERSION/$nom/i386/ | gzip &gt; dists/$VERSION/$nom/binary-i386/Packages.gz&lt;br /&gt;
     zcat dists/$VERSION/$nom/binary-i386/Packages.gz | bzip2 &gt; dists/$VERSION/$nom/binary-i386/Packages.bz2&lt;br /&gt;
     zcat dists/$VERSION/$nom/binary-i386/Packages.gz &gt;dists/$VERSION/$nom/binary-i386/Packages&lt;br /&gt;
     apt-ftparchive packages pool/$VERSION/$nom/amd64/ | gzip &gt; dists/$VERSION/$nom/binary-amd64/Packages.gz&lt;br /&gt;
     zcat dists/$VERSION/$nom/binary-amd64/Packages.gz | bzip2 &gt;dists/$VERSION/$nom/binary-amd64/Packages.bz2&lt;br /&gt;
     zcat dists/$VERSION/$nom/binary-amd64/Packages.gz &gt;dists/$VERSION/$nom/binary-amd64/Packages&lt;br /&gt;
 done&lt;br /&gt;
 apt-ftparchive -c $VERSION.conf release dists/$VERSION/ &gt; /tmp/Release.tmp&lt;br /&gt;
 mv /tmp/Release.tmp dists/$VERSION/Release&lt;br /&gt;
 cd dists/$VERSION/&lt;br /&gt;
 rm Release.gpg&lt;br /&gt;
 gpg --sign -ba -o Release.gpg Release&lt;br /&gt;

Il s'utilise par 

 $ updatedepot wheezy depot

si wheezy est la version choisie et /var/www/depot l'emplacement du dépot.&lt;br /&gt;
Ce fichier lit le fichier version.conf, en dégage les composantes voulues et fait toute la suite des opérations.  Ça s'avère pratique en cas de modifications fréquentes du dépot.</text>
      <sha1>33hcnezpruhm4i1sdxq9qdqhb07dgdk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4670</id>
      <parentid>4669</parentid>
      <timestamp>2012-10-29T21:56:51Z</timestamp>
      <contributor>
        <username>Fran.b</username>
        <id>13</id>
      </contributor>
      <comment>/* Fabrication des fichiers Packages */</comment>
      <text xml:space="preserve" bytes="9619">== Présentation ==
Ce petit document indique comment faire un dépot signé ou non

# Prérequis
# Configuration
# Fabrication des fichiers Packages
# Fabrication du fichier Release
# Signature du dépot

''Ce document est fondé sur la gestion de mes dépots non signés et signés suivant''&lt;br /&gt;
'''deb http://boisson.homeip.net/debian/ wheezy divers'''&lt;br /&gt;
'''deb http://boisson.homeip.net/depot/ wheezy divers'''&lt;br /&gt;

Il est possible de voir concrètement les fichiers en allant sur le site correspondant.

== Prérequis ==
Il existe des logiciels permettant de fabriquer et de gérer des dépots, par exemple reprepro. Ce qui suit ne fait qu'utiliser les logiciels d'apt-utils. Il suffit d'avoir donc apt-utils d'installé ainsi que gpg si vous comptez signer le dépot.

Un dépot est vu dans le sources.list par une ligne du type

'''deb http://boisson.homeip.net/depot wheezy divers'''

On y distingue l'adresse (http://boisson.homeip.net/depot), la version (wheezy ici, parmi toutes les versions du dépot) et la composante (divers ici, parmi toutes les composantes du dépot, souvent c'est main mais vous avez le droit d'être précis).

apt-cache policy montre

 500 http://boisson.homeip.net/depot/ wheezy/divers amd64 Packages
     release o=Depot F. Boisson,a=wheezy,l=boisson.homeip.net,c=divers
     origin boisson.homeip.net

On y retrouve l'adresse, les couples composantes/version et l'architecture concernée.

Le dépot aura une arborescence de ce type (. est /var/www/depot par exemple):

 . -&gt; dists -&gt; divers --&gt; binary-amd64
   |         |        |-&gt; binary-i386
   |         |-&gt; nvidia --&gt; binary-amd64
   |         |          |-&gt; binary-i386
   |         |-&gt; pouet (etc)
   |-&gt; pool --&gt; divers --&gt; amd64 (paquets de divers/amd64)
           |          |-&gt; i386 (paquets de divers/i386)
           |-&gt; nvidia --&gt; amd64 (paquets de nvidia/amd64)
           |          |-&gt; i386 (paquets de nvidia/i386)
           |-&gt; pouet --&gt; amd64 (etc)

(ici il y a 3 composantes au moins:  divers, nvidia, pouet)

Les paquets sont sous pool dans les répertoires ''composante/architecture''. La description de chaque composante est dans un fichier Packages sous ''composante/binary-&lt;architecture&gt;''

== Configuration ==
Celle ci consiste à mettre pour chaque version un fichier version.conf (par exemple wheezy.conf) dans le répertoire racine du dépot. Par exemple:

 APT::FTPArchive::Release {
   Origin                &quot;Depot F. Boisson&quot;;
   Label                 &quot;boisson.homeip.net&quot;;
   Suite                 &quot;wheezy&quot;;
   Architectures         &quot;i386 amd64&quot;;
   Components            &quot;divers&quot;;
 }

On y voit l'origine (description du dépot) qui apparait dans le champ «o=» lors du ''apt-cache policy'', le label («l=»), lsuite ou version («a=») les architectures et les composantes concernées.

== Fabrication des fichiers Packages ==

Pour chaque version, et pour chaque composante, il y a un fichier Packages et ses versions compressées correspondantes. Ce fichier s'obtient par dpkg-buildpackage ou, de façon plus pratique, par ''apt-ftparchive packages''

'''apt-ftparchive packages pool/divers/wheezy/i386/  &gt; dists/wheezy/divers/binary-i386/Packages'''&lt;br /&gt;
'''apt-ftparchive packages pool/divers/wheezy/amd64/  &gt; dists/wheezy/divers/binary-amd64/Packages'''&lt;br /&gt;

puis leur versions compressées

'''cat dists/wheezy/divers/binary-i386/Packages | gzip &gt; dists/wheezy/divers/binary-i386/Packages.gz'''&lt;br /&gt;
'''cat dists/wheezy/divers/binary-i386/Packages | bzip2 &gt; dists/wheezy/divers/binary-i386/Packages.bz2'''&lt;br /&gt;
'''cat dists/wheezy/divers/binary-amd64/Packages | gzip &gt; dists/wheezy/divers/binary-amd64/Packages.gz'''&lt;br /&gt;
'''cat dists/wheezy/divers/binary-amd64/Packages | bzip2 &gt; dists/wheezy/divers/binary-amd64/Packages.bz2'''&lt;br /&gt;

Ce fichier ''Packages'' contient la liste des paquets avec leur description et les md5sum et autres sha. Par exemple

 Package: jpegtoavi
 Priority: optional
 Section: unknown
 Installed-Size: 64
 Maintainer: Fran�ois Boisson &lt;xxx@yyy.zz.tt&gt;
 Architecture: amd64
 Version: 1.5-1
 Depends: libc6 (&gt;= 2.2.5)
 Filename: pool/wheezy/amd64/jpegtoavi_1.5-1_amd64.deb
 Size: 9072
 MD5sum: efb15d19f16ab29513f89d2650dc6258
 SHA1: 6d798d93f780fae827152725bc3c53baccea5743
 SHA256: d2598b36e0b633968ff260372ea0870c2d7c31177ffa6a5c0679c32291e3e3ef
 Description: Conversion jpeg -&gt; avi
  Farbication de fichiers AVI � partir de JPEG

La fabrication de ce fichier prend du temps si le dépot contient beaucoup de fichiers .deb. Cela peut prendre facilement plusieurs minutes.

== Fabrication du fichier Release ==
Cela doit être fait une fois tous les fichiers ''Packages'' crées. Le fichier Release contient, outre la description du dépot (un fichier ''Release'' pour chaque version). Il contient un md5sum (et sha) de chaque fichier sous dists/version donc entre autres des fichiers Packages. La sureté de ce fichier permet de certifier les fichiers Packages donc les paquets.

Ce fichier se crée par

'''apt-ftparchive -c wheezy.conf release dists/wheezy/ &gt; /tmp/Release'''&lt;br /&gt;
'''mv /tmp/Release dists/wheezy/Release'''&lt;br /&gt;

(procédez en deux étapes pour que ce fichier n'apparaisse pas dans son contenu, je pense que apt-get s'en moque mais je n'ai pas vérifié). La première commande fabrique le fichier dans /tmp/Release, le fichier de configuration dans cet exemple est wheezy.conf. Il est important de bien renseigner les différentes composantes du dépot.

Typiquement son contenu est

 Architectures: i386 amd64
 Components: divers nvidia owncloud
 Date: sam., 27 oct. 2012 13:04:59 UTC
 Label: boisson.homeip.net
 Origin: Depot F. Boisson
 Suite: wheezy
 MD5Sum:
  453b37a21882aae6eb4e5c2f87fb9336             2100 Release
  c067f73427faf97f5dfea9c7599e9ef3            25244 divers/binary-amd64/Packages
  626a8959586c23d90dad380058e20d7b             8269 divers/binary-amd64/Packages.bz2
  2466296dd049595904d266b663c9c616             8380 divers/binary-amd64/Packages.gz
  db0d79b76433fa614892146d60f5a8e2            22963 divers/binary-i386/Packages
  4041ce2e5f46ec25c61785bb5bbdea3c             6874 divers/binary-i386/Packages.bz2
  8e9c3fa27d07499febd42aff23588e13             6861 divers/binary-i386/Packages.gz
  f28c024f1491e206205098582f8e9a2b            34519 nvidia/binary-amd64/Packages
  360c602b0a4a865dd37e2b2cc1738260             7466 nvidia/binary-amd64/Packages.bz2
  d03982d9d41e82311c09a306e8d37883             7717 nvidia/binary-amd64/Packages.gz
  73f1b1fd3ec0d7b20a185bca293af92d            30768 nvidia/binary-i386/Packages
  70877482f19b88b882039374ff2c6e2b             7080 nvidia/binary-i386/Packages.bz2
 ....

== Signature du dépot ==

Il suffit désormais de signer le dépot donc de signer le fichier Release ce qui garantira les fichiers Packages et donc les paquets eux mêmes.
Cela se fait tout simplement par

'''gpg --sign -ba -o Release.gpg Release'''&lt;br /&gt;

À noter qu'il faut mettre la signature sur un serveur de clefs, typiquement si vous signez avec la clef

''pub   1024D/'''CEA8D8FF''' 2012-10-27''&lt;br /&gt;

il vous suffit de faire

'''gpg --keyserver pgpkeys.mit.edu --send-key CEA8D8FF'''&lt;br /&gt;

en notant qu'il faudra peut être ouvrir un port sur l'extérieur (usuellement la réponse est très rapide)

L'utilisateur, si il n'a pas votre clef, verra

Il pourra récupérer la clef par les classiques

'''gpg --keyserver pgpkeys.mit.edu --recv-key D78A5C23CEA8D8FF'''&lt;br /&gt;

qui récupère la clef sur le serveur et

'''gpg -a --export D78A5C23CEA8D8FF &gt; /tmp/clef.txt'''&lt;br /&gt;
et sous root&lt;br /&gt;
'''apt-key add /tmp/clef.txt'''&lt;br /&gt;

== Un script ==
Ce script ''updatedepot'' permet de faire la suite des opérations automatiquement dès que les fichiers versions.conf ont été crées:

 #!/bin/sh&lt;br /&gt;                                                                                                           
 VERSION=$1&lt;br /&gt;
 DISTRIBUTION=depot&lt;br /&gt;
 if [ ! -z $2 ] ; then&lt;br /&gt;
     DISTRIBUTION=$2&lt;br /&gt;
 fi&lt;br /&gt;
 LISTE=$(grep Component $VERSION.conf | sed 's/^.*&quot;\(.*\)&quot;.*$/\1/')&lt;br /&gt;
 echo $LISTE&lt;br /&gt;
 cd /var/www/$DISTRIBUTION&lt;br /&gt;
 # consultation de divers&lt;br /&gt;                                                                                            
 for nom in $LISTE ; do&lt;br /&gt;
     echo Fabrication de $nom&lt;br /&gt;
     mkdir -p dists/$VERSION/$nom/binary-i386/&lt;br /&gt;
     mkdir -p dists/$VERSION/$nom/binary-amd64/&lt;br /&gt;
     apt-ftparchive packages pool/$VERSION/$nom/i386/ | gzip &gt; dists/$VERSION/$nom/binary-i386/Packages.gz&lt;br /&gt;
     zcat dists/$VERSION/$nom/binary-i386/Packages.gz | bzip2 &gt; dists/$VERSION/$nom/binary-i386/Packages.bz2&lt;br /&gt;
     zcat dists/$VERSION/$nom/binary-i386/Packages.gz &gt;dists/$VERSION/$nom/binary-i386/Packages&lt;br /&gt;
     apt-ftparchive packages pool/$VERSION/$nom/amd64/ | gzip &gt; dists/$VERSION/$nom/binary-amd64/Packages.gz&lt;br /&gt;
     zcat dists/$VERSION/$nom/binary-amd64/Packages.gz | bzip2 &gt;dists/$VERSION/$nom/binary-amd64/Packages.bz2&lt;br /&gt;
     zcat dists/$VERSION/$nom/binary-amd64/Packages.gz &gt;dists/$VERSION/$nom/binary-amd64/Packages&lt;br /&gt;
 done&lt;br /&gt;
 apt-ftparchive -c $VERSION.conf release dists/$VERSION/ &gt; /tmp/Release.tmp&lt;br /&gt;
 mv /tmp/Release.tmp dists/$VERSION/Release&lt;br /&gt;
 cd dists/$VERSION/&lt;br /&gt;
 rm Release.gpg&lt;br /&gt;
 gpg --sign -ba -o Release.gpg Release&lt;br /&gt;

Il s'utilise par 

 $ updatedepot wheezy depot

si wheezy est la version choisie et /var/www/depot l'emplacement du dépot.&lt;br /&gt;
Ce fichier lit le fichier version.conf, en dégage les composantes voulues et fait toute la suite des opérations.  Ça s'avère pratique en cas de modifications fréquentes du dépot.</text>
      <sha1>d2sevy65zihzs3ql9vn5l8k8i2ml78d</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4671</id>
      <parentid>4670</parentid>
      <timestamp>2012-10-29T21:59:20Z</timestamp>
      <contributor>
        <username>Fran.b</username>
        <id>13</id>
      </contributor>
      <comment>/* Fabrication des fichiers Packages */</comment>
      <text xml:space="preserve" bytes="9619">== Présentation ==
Ce petit document indique comment faire un dépot signé ou non

# Prérequis
# Configuration
# Fabrication des fichiers Packages
# Fabrication du fichier Release
# Signature du dépot

''Ce document est fondé sur la gestion de mes dépots non signés et signés suivant''&lt;br /&gt;
'''deb http://boisson.homeip.net/debian/ wheezy divers'''&lt;br /&gt;
'''deb http://boisson.homeip.net/depot/ wheezy divers'''&lt;br /&gt;

Il est possible de voir concrètement les fichiers en allant sur le site correspondant.

== Prérequis ==
Il existe des logiciels permettant de fabriquer et de gérer des dépots, par exemple reprepro. Ce qui suit ne fait qu'utiliser les logiciels d'apt-utils. Il suffit d'avoir donc apt-utils d'installé ainsi que gpg si vous comptez signer le dépot.

Un dépot est vu dans le sources.list par une ligne du type

'''deb http://boisson.homeip.net/depot wheezy divers'''

On y distingue l'adresse (http://boisson.homeip.net/depot), la version (wheezy ici, parmi toutes les versions du dépot) et la composante (divers ici, parmi toutes les composantes du dépot, souvent c'est main mais vous avez le droit d'être précis).

apt-cache policy montre

 500 http://boisson.homeip.net/depot/ wheezy/divers amd64 Packages
     release o=Depot F. Boisson,a=wheezy,l=boisson.homeip.net,c=divers
     origin boisson.homeip.net

On y retrouve l'adresse, les couples composantes/version et l'architecture concernée.

Le dépot aura une arborescence de ce type (. est /var/www/depot par exemple):

 . -&gt; dists -&gt; divers --&gt; binary-amd64
   |         |        |-&gt; binary-i386
   |         |-&gt; nvidia --&gt; binary-amd64
   |         |          |-&gt; binary-i386
   |         |-&gt; pouet (etc)
   |-&gt; pool --&gt; divers --&gt; amd64 (paquets de divers/amd64)
           |          |-&gt; i386 (paquets de divers/i386)
           |-&gt; nvidia --&gt; amd64 (paquets de nvidia/amd64)
           |          |-&gt; i386 (paquets de nvidia/i386)
           |-&gt; pouet --&gt; amd64 (etc)

(ici il y a 3 composantes au moins:  divers, nvidia, pouet)

Les paquets sont sous pool dans les répertoires ''composante/architecture''. La description de chaque composante est dans un fichier Packages sous ''composante/binary-&lt;architecture&gt;''

== Configuration ==
Celle ci consiste à mettre pour chaque version un fichier version.conf (par exemple wheezy.conf) dans le répertoire racine du dépot. Par exemple:

 APT::FTPArchive::Release {
   Origin                &quot;Depot F. Boisson&quot;;
   Label                 &quot;boisson.homeip.net&quot;;
   Suite                 &quot;wheezy&quot;;
   Architectures         &quot;i386 amd64&quot;;
   Components            &quot;divers&quot;;
 }

On y voit l'origine (description du dépot) qui apparait dans le champ «o=» lors du ''apt-cache policy'', le label («l=»), lsuite ou version («a=») les architectures et les composantes concernées.

== Fabrication des fichiers Packages ==

Pour chaque version, et pour chaque composante, il y a un fichier Packages et ses versions compressées correspondantes. Ce fichier s'obtient par dpkg-scanpackages ou, de façon plus pratique, par ''apt-ftparchive packages''

'''apt-ftparchive packages pool/divers/wheezy/i386/  &gt; dists/wheezy/divers/binary-i386/Packages'''&lt;br /&gt;
'''apt-ftparchive packages pool/divers/wheezy/amd64/  &gt; dists/wheezy/divers/binary-amd64/Packages'''&lt;br /&gt;

puis leur versions compressées

'''cat dists/wheezy/divers/binary-i386/Packages | gzip &gt; dists/wheezy/divers/binary-i386/Packages.gz'''&lt;br /&gt;
'''cat dists/wheezy/divers/binary-i386/Packages | bzip2 &gt; dists/wheezy/divers/binary-i386/Packages.bz2'''&lt;br /&gt;
'''cat dists/wheezy/divers/binary-amd64/Packages | gzip &gt; dists/wheezy/divers/binary-amd64/Packages.gz'''&lt;br /&gt;
'''cat dists/wheezy/divers/binary-amd64/Packages | bzip2 &gt; dists/wheezy/divers/binary-amd64/Packages.bz2'''&lt;br /&gt;

Ce fichier ''Packages'' contient la liste des paquets avec leur description et les md5sum et autres sha. Par exemple

 Package: jpegtoavi
 Priority: optional
 Section: unknown
 Installed-Size: 64
 Maintainer: Fran�ois Boisson &lt;xxx@yyy.zz.tt&gt;
 Architecture: amd64
 Version: 1.5-1
 Depends: libc6 (&gt;= 2.2.5)
 Filename: pool/wheezy/amd64/jpegtoavi_1.5-1_amd64.deb
 Size: 9072
 MD5sum: efb15d19f16ab29513f89d2650dc6258
 SHA1: 6d798d93f780fae827152725bc3c53baccea5743
 SHA256: d2598b36e0b633968ff260372ea0870c2d7c31177ffa6a5c0679c32291e3e3ef
 Description: Conversion jpeg -&gt; avi
  Farbication de fichiers AVI � partir de JPEG

La fabrication de ce fichier prend du temps si le dépot contient beaucoup de fichiers .deb. Cela peut prendre facilement plusieurs minutes.

== Fabrication du fichier Release ==
Cela doit être fait une fois tous les fichiers ''Packages'' crées. Le fichier Release contient, outre la description du dépot (un fichier ''Release'' pour chaque version). Il contient un md5sum (et sha) de chaque fichier sous dists/version donc entre autres des fichiers Packages. La sureté de ce fichier permet de certifier les fichiers Packages donc les paquets.

Ce fichier se crée par

'''apt-ftparchive -c wheezy.conf release dists/wheezy/ &gt; /tmp/Release'''&lt;br /&gt;
'''mv /tmp/Release dists/wheezy/Release'''&lt;br /&gt;

(procédez en deux étapes pour que ce fichier n'apparaisse pas dans son contenu, je pense que apt-get s'en moque mais je n'ai pas vérifié). La première commande fabrique le fichier dans /tmp/Release, le fichier de configuration dans cet exemple est wheezy.conf. Il est important de bien renseigner les différentes composantes du dépot.

Typiquement son contenu est

 Architectures: i386 amd64
 Components: divers nvidia owncloud
 Date: sam., 27 oct. 2012 13:04:59 UTC
 Label: boisson.homeip.net
 Origin: Depot F. Boisson
 Suite: wheezy
 MD5Sum:
  453b37a21882aae6eb4e5c2f87fb9336             2100 Release
  c067f73427faf97f5dfea9c7599e9ef3            25244 divers/binary-amd64/Packages
  626a8959586c23d90dad380058e20d7b             8269 divers/binary-amd64/Packages.bz2
  2466296dd049595904d266b663c9c616             8380 divers/binary-amd64/Packages.gz
  db0d79b76433fa614892146d60f5a8e2            22963 divers/binary-i386/Packages
  4041ce2e5f46ec25c61785bb5bbdea3c             6874 divers/binary-i386/Packages.bz2
  8e9c3fa27d07499febd42aff23588e13             6861 divers/binary-i386/Packages.gz
  f28c024f1491e206205098582f8e9a2b            34519 nvidia/binary-amd64/Packages
  360c602b0a4a865dd37e2b2cc1738260             7466 nvidia/binary-amd64/Packages.bz2
  d03982d9d41e82311c09a306e8d37883             7717 nvidia/binary-amd64/Packages.gz
  73f1b1fd3ec0d7b20a185bca293af92d            30768 nvidia/binary-i386/Packages
  70877482f19b88b882039374ff2c6e2b             7080 nvidia/binary-i386/Packages.bz2
 ....

== Signature du dépot ==

Il suffit désormais de signer le dépot donc de signer le fichier Release ce qui garantira les fichiers Packages et donc les paquets eux mêmes.
Cela se fait tout simplement par

'''gpg --sign -ba -o Release.gpg Release'''&lt;br /&gt;

À noter qu'il faut mettre la signature sur un serveur de clefs, typiquement si vous signez avec la clef

''pub   1024D/'''CEA8D8FF''' 2012-10-27''&lt;br /&gt;

il vous suffit de faire

'''gpg --keyserver pgpkeys.mit.edu --send-key CEA8D8FF'''&lt;br /&gt;

en notant qu'il faudra peut être ouvrir un port sur l'extérieur (usuellement la réponse est très rapide)

L'utilisateur, si il n'a pas votre clef, verra

Il pourra récupérer la clef par les classiques

'''gpg --keyserver pgpkeys.mit.edu --recv-key D78A5C23CEA8D8FF'''&lt;br /&gt;

qui récupère la clef sur le serveur et

'''gpg -a --export D78A5C23CEA8D8FF &gt; /tmp/clef.txt'''&lt;br /&gt;
et sous root&lt;br /&gt;
'''apt-key add /tmp/clef.txt'''&lt;br /&gt;

== Un script ==
Ce script ''updatedepot'' permet de faire la suite des opérations automatiquement dès que les fichiers versions.conf ont été crées:

 #!/bin/sh&lt;br /&gt;                                                                                                           
 VERSION=$1&lt;br /&gt;
 DISTRIBUTION=depot&lt;br /&gt;
 if [ ! -z $2 ] ; then&lt;br /&gt;
     DISTRIBUTION=$2&lt;br /&gt;
 fi&lt;br /&gt;
 LISTE=$(grep Component $VERSION.conf | sed 's/^.*&quot;\(.*\)&quot;.*$/\1/')&lt;br /&gt;
 echo $LISTE&lt;br /&gt;
 cd /var/www/$DISTRIBUTION&lt;br /&gt;
 # consultation de divers&lt;br /&gt;                                                                                            
 for nom in $LISTE ; do&lt;br /&gt;
     echo Fabrication de $nom&lt;br /&gt;
     mkdir -p dists/$VERSION/$nom/binary-i386/&lt;br /&gt;
     mkdir -p dists/$VERSION/$nom/binary-amd64/&lt;br /&gt;
     apt-ftparchive packages pool/$VERSION/$nom/i386/ | gzip &gt; dists/$VERSION/$nom/binary-i386/Packages.gz&lt;br /&gt;
     zcat dists/$VERSION/$nom/binary-i386/Packages.gz | bzip2 &gt; dists/$VERSION/$nom/binary-i386/Packages.bz2&lt;br /&gt;
     zcat dists/$VERSION/$nom/binary-i386/Packages.gz &gt;dists/$VERSION/$nom/binary-i386/Packages&lt;br /&gt;
     apt-ftparchive packages pool/$VERSION/$nom/amd64/ | gzip &gt; dists/$VERSION/$nom/binary-amd64/Packages.gz&lt;br /&gt;
     zcat dists/$VERSION/$nom/binary-amd64/Packages.gz | bzip2 &gt;dists/$VERSION/$nom/binary-amd64/Packages.bz2&lt;br /&gt;
     zcat dists/$VERSION/$nom/binary-amd64/Packages.gz &gt;dists/$VERSION/$nom/binary-amd64/Packages&lt;br /&gt;
 done&lt;br /&gt;
 apt-ftparchive -c $VERSION.conf release dists/$VERSION/ &gt; /tmp/Release.tmp&lt;br /&gt;
 mv /tmp/Release.tmp dists/$VERSION/Release&lt;br /&gt;
 cd dists/$VERSION/&lt;br /&gt;
 rm Release.gpg&lt;br /&gt;
 gpg --sign -ba -o Release.gpg Release&lt;br /&gt;

Il s'utilise par 

 $ updatedepot wheezy depot

si wheezy est la version choisie et /var/www/depot l'emplacement du dépot.&lt;br /&gt;
Ce fichier lit le fichier version.conf, en dégage les composantes voulues et fait toute la suite des opérations.  Ça s'avère pratique en cas de modifications fréquentes du dépot.</text>
      <sha1>biaary1r6yol62d1khgwgwre8v9xkov</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4752</id>
      <parentid>4671</parentid>
      <timestamp>2012-11-16T06:57:52Z</timestamp>
      <contributor>
        <username>Fran.b</username>
        <id>13</id>
      </contributor>
      <comment>/* Configuration */</comment>
      <text xml:space="preserve" bytes="9740">== Présentation ==
Ce petit document indique comment faire un dépot signé ou non

# Prérequis
# Configuration
# Fabrication des fichiers Packages
# Fabrication du fichier Release
# Signature du dépot

''Ce document est fondé sur la gestion de mes dépots non signés et signés suivant''&lt;br /&gt;
'''deb http://boisson.homeip.net/debian/ wheezy divers'''&lt;br /&gt;
'''deb http://boisson.homeip.net/depot/ wheezy divers'''&lt;br /&gt;

Il est possible de voir concrètement les fichiers en allant sur le site correspondant.

== Prérequis ==
Il existe des logiciels permettant de fabriquer et de gérer des dépots, par exemple reprepro. Ce qui suit ne fait qu'utiliser les logiciels d'apt-utils. Il suffit d'avoir donc apt-utils d'installé ainsi que gpg si vous comptez signer le dépot.

Un dépot est vu dans le sources.list par une ligne du type

'''deb http://boisson.homeip.net/depot wheezy divers'''

On y distingue l'adresse (http://boisson.homeip.net/depot), la version (wheezy ici, parmi toutes les versions du dépot) et la composante (divers ici, parmi toutes les composantes du dépot, souvent c'est main mais vous avez le droit d'être précis).

apt-cache policy montre

 500 http://boisson.homeip.net/depot/ wheezy/divers amd64 Packages
     release o=Depot F. Boisson,a=wheezy,l=boisson.homeip.net,c=divers
     origin boisson.homeip.net

On y retrouve l'adresse, les couples composantes/version et l'architecture concernée.

Le dépot aura une arborescence de ce type (. est /var/www/depot par exemple):

 . -&gt; dists -&gt; divers --&gt; binary-amd64
   |         |        |-&gt; binary-i386
   |         |-&gt; nvidia --&gt; binary-amd64
   |         |          |-&gt; binary-i386
   |         |-&gt; pouet (etc)
   |-&gt; pool --&gt; divers --&gt; amd64 (paquets de divers/amd64)
           |          |-&gt; i386 (paquets de divers/i386)
           |-&gt; nvidia --&gt; amd64 (paquets de nvidia/amd64)
           |          |-&gt; i386 (paquets de nvidia/i386)
           |-&gt; pouet --&gt; amd64 (etc)

(ici il y a 3 composantes au moins:  divers, nvidia, pouet)

Les paquets sont sous pool dans les répertoires ''composante/architecture''. La description de chaque composante est dans un fichier Packages sous ''composante/binary-&lt;architecture&gt;''

== Configuration ==
Celle ci consiste à mettre pour chaque version un fichier version.conf (par exemple wheezy.conf) dans le répertoire racine du dépot. Par exemple:

 APT::FTPArchive::Release {
   Origin                &quot;Depot F. Boisson&quot;;
   Label                 &quot;boisson.homeip.net&quot;;
   Suite                 &quot;wheezy&quot;;
   Architectures         &quot;i386 amd64&quot;;
   Components            &quot;divers&quot;;
 }

On y voit l'origine (description du dépot) qui apparait dans le champ «o=» lors du ''apt-cache policy'', le label («l=»), lsuite ou version («a=») les architectures et les composantes concernées.

Il est tout à fait possible de faire cohabiter des dépots ubuntu et debian tant que les noms des versions diffèrent.

== Fabrication des fichiers Packages ==

Pour chaque version, et pour chaque composante, il y a un fichier Packages et ses versions compressées correspondantes. Ce fichier s'obtient par dpkg-scanpackages ou, de façon plus pratique, par ''apt-ftparchive packages''

'''apt-ftparchive packages pool/divers/wheezy/i386/  &gt; dists/wheezy/divers/binary-i386/Packages'''&lt;br /&gt;
'''apt-ftparchive packages pool/divers/wheezy/amd64/  &gt; dists/wheezy/divers/binary-amd64/Packages'''&lt;br /&gt;

puis leur versions compressées

'''cat dists/wheezy/divers/binary-i386/Packages | gzip &gt; dists/wheezy/divers/binary-i386/Packages.gz'''&lt;br /&gt;
'''cat dists/wheezy/divers/binary-i386/Packages | bzip2 &gt; dists/wheezy/divers/binary-i386/Packages.bz2'''&lt;br /&gt;
'''cat dists/wheezy/divers/binary-amd64/Packages | gzip &gt; dists/wheezy/divers/binary-amd64/Packages.gz'''&lt;br /&gt;
'''cat dists/wheezy/divers/binary-amd64/Packages | bzip2 &gt; dists/wheezy/divers/binary-amd64/Packages.bz2'''&lt;br /&gt;

Ce fichier ''Packages'' contient la liste des paquets avec leur description et les md5sum et autres sha. Par exemple

 Package: jpegtoavi
 Priority: optional
 Section: unknown
 Installed-Size: 64
 Maintainer: Fran�ois Boisson &lt;xxx@yyy.zz.tt&gt;
 Architecture: amd64
 Version: 1.5-1
 Depends: libc6 (&gt;= 2.2.5)
 Filename: pool/wheezy/amd64/jpegtoavi_1.5-1_amd64.deb
 Size: 9072
 MD5sum: efb15d19f16ab29513f89d2650dc6258
 SHA1: 6d798d93f780fae827152725bc3c53baccea5743
 SHA256: d2598b36e0b633968ff260372ea0870c2d7c31177ffa6a5c0679c32291e3e3ef
 Description: Conversion jpeg -&gt; avi
  Farbication de fichiers AVI � partir de JPEG

La fabrication de ce fichier prend du temps si le dépot contient beaucoup de fichiers .deb. Cela peut prendre facilement plusieurs minutes.

== Fabrication du fichier Release ==
Cela doit être fait une fois tous les fichiers ''Packages'' crées. Le fichier Release contient, outre la description du dépot (un fichier ''Release'' pour chaque version). Il contient un md5sum (et sha) de chaque fichier sous dists/version donc entre autres des fichiers Packages. La sureté de ce fichier permet de certifier les fichiers Packages donc les paquets.

Ce fichier se crée par

'''apt-ftparchive -c wheezy.conf release dists/wheezy/ &gt; /tmp/Release'''&lt;br /&gt;
'''mv /tmp/Release dists/wheezy/Release'''&lt;br /&gt;

(procédez en deux étapes pour que ce fichier n'apparaisse pas dans son contenu, je pense que apt-get s'en moque mais je n'ai pas vérifié). La première commande fabrique le fichier dans /tmp/Release, le fichier de configuration dans cet exemple est wheezy.conf. Il est important de bien renseigner les différentes composantes du dépot.

Typiquement son contenu est

 Architectures: i386 amd64
 Components: divers nvidia owncloud
 Date: sam., 27 oct. 2012 13:04:59 UTC
 Label: boisson.homeip.net
 Origin: Depot F. Boisson
 Suite: wheezy
 MD5Sum:
  453b37a21882aae6eb4e5c2f87fb9336             2100 Release
  c067f73427faf97f5dfea9c7599e9ef3            25244 divers/binary-amd64/Packages
  626a8959586c23d90dad380058e20d7b             8269 divers/binary-amd64/Packages.bz2
  2466296dd049595904d266b663c9c616             8380 divers/binary-amd64/Packages.gz
  db0d79b76433fa614892146d60f5a8e2            22963 divers/binary-i386/Packages
  4041ce2e5f46ec25c61785bb5bbdea3c             6874 divers/binary-i386/Packages.bz2
  8e9c3fa27d07499febd42aff23588e13             6861 divers/binary-i386/Packages.gz
  f28c024f1491e206205098582f8e9a2b            34519 nvidia/binary-amd64/Packages
  360c602b0a4a865dd37e2b2cc1738260             7466 nvidia/binary-amd64/Packages.bz2
  d03982d9d41e82311c09a306e8d37883             7717 nvidia/binary-amd64/Packages.gz
  73f1b1fd3ec0d7b20a185bca293af92d            30768 nvidia/binary-i386/Packages
  70877482f19b88b882039374ff2c6e2b             7080 nvidia/binary-i386/Packages.bz2
 ....

== Signature du dépot ==

Il suffit désormais de signer le dépot donc de signer le fichier Release ce qui garantira les fichiers Packages et donc les paquets eux mêmes.
Cela se fait tout simplement par

'''gpg --sign -ba -o Release.gpg Release'''&lt;br /&gt;

À noter qu'il faut mettre la signature sur un serveur de clefs, typiquement si vous signez avec la clef

''pub   1024D/'''CEA8D8FF''' 2012-10-27''&lt;br /&gt;

il vous suffit de faire

'''gpg --keyserver pgpkeys.mit.edu --send-key CEA8D8FF'''&lt;br /&gt;

en notant qu'il faudra peut être ouvrir un port sur l'extérieur (usuellement la réponse est très rapide)

L'utilisateur, si il n'a pas votre clef, verra

Il pourra récupérer la clef par les classiques

'''gpg --keyserver pgpkeys.mit.edu --recv-key D78A5C23CEA8D8FF'''&lt;br /&gt;

qui récupère la clef sur le serveur et

'''gpg -a --export D78A5C23CEA8D8FF &gt; /tmp/clef.txt'''&lt;br /&gt;
et sous root&lt;br /&gt;
'''apt-key add /tmp/clef.txt'''&lt;br /&gt;

== Un script ==
Ce script ''updatedepot'' permet de faire la suite des opérations automatiquement dès que les fichiers versions.conf ont été crées:

 #!/bin/sh&lt;br /&gt;                                                                                                           
 VERSION=$1&lt;br /&gt;
 DISTRIBUTION=depot&lt;br /&gt;
 if [ ! -z $2 ] ; then&lt;br /&gt;
     DISTRIBUTION=$2&lt;br /&gt;
 fi&lt;br /&gt;
 LISTE=$(grep Component $VERSION.conf | sed 's/^.*&quot;\(.*\)&quot;.*$/\1/')&lt;br /&gt;
 echo $LISTE&lt;br /&gt;
 cd /var/www/$DISTRIBUTION&lt;br /&gt;
 # consultation de divers&lt;br /&gt;                                                                                            
 for nom in $LISTE ; do&lt;br /&gt;
     echo Fabrication de $nom&lt;br /&gt;
     mkdir -p dists/$VERSION/$nom/binary-i386/&lt;br /&gt;
     mkdir -p dists/$VERSION/$nom/binary-amd64/&lt;br /&gt;
     apt-ftparchive packages pool/$VERSION/$nom/i386/ | gzip &gt; dists/$VERSION/$nom/binary-i386/Packages.gz&lt;br /&gt;
     zcat dists/$VERSION/$nom/binary-i386/Packages.gz | bzip2 &gt; dists/$VERSION/$nom/binary-i386/Packages.bz2&lt;br /&gt;
     zcat dists/$VERSION/$nom/binary-i386/Packages.gz &gt;dists/$VERSION/$nom/binary-i386/Packages&lt;br /&gt;
     apt-ftparchive packages pool/$VERSION/$nom/amd64/ | gzip &gt; dists/$VERSION/$nom/binary-amd64/Packages.gz&lt;br /&gt;
     zcat dists/$VERSION/$nom/binary-amd64/Packages.gz | bzip2 &gt;dists/$VERSION/$nom/binary-amd64/Packages.bz2&lt;br /&gt;
     zcat dists/$VERSION/$nom/binary-amd64/Packages.gz &gt;dists/$VERSION/$nom/binary-amd64/Packages&lt;br /&gt;
 done&lt;br /&gt;
 apt-ftparchive -c $VERSION.conf release dists/$VERSION/ &gt; /tmp/Release.tmp&lt;br /&gt;
 mv /tmp/Release.tmp dists/$VERSION/Release&lt;br /&gt;
 cd dists/$VERSION/&lt;br /&gt;
 rm Release.gpg&lt;br /&gt;
 gpg --sign -ba -o Release.gpg Release&lt;br /&gt;

Il s'utilise par 

 $ updatedepot wheezy depot

si wheezy est la version choisie et /var/www/depot l'emplacement du dépot.&lt;br /&gt;
Ce fichier lit le fichier version.conf, en dégage les composantes voulues et fait toute la suite des opérations.  Ça s'avère pratique en cas de modifications fréquentes du dépot.</text>
      <sha1>ntoww3zlf56vb1capnfoes3w1g0rv1j</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Faireunpaquet</title>
    <ns>0</ns>
    <id>48</id>
    <revision>
      <id>131</id>
      <timestamp>2010-01-23T08:46:29Z</timestamp>
      <contributor>
        <username>Fran.b</username>
        <id>13</id>
      </contributor>
      <comment>Fabrication de paquets (vient du forum debian)</comment>
      <text xml:space="preserve" bytes="27927">Ce petit memento comporte 5 parties: &lt;br /&gt;&lt;br /&gt;1) Fabrication d'un paquet élémentaire (vikings) &lt;br /&gt;2) Fabrication d'un paquet plus compliqué avec compilation (cacheproc) &lt;br /&gt;3) Exemple d'un paquet de scripts de mise à jour &lt;br /&gt;4) Le rétroportage vite fait, bien ou mal fait &lt;br /&gt;5) ./configure;make;make install et paquet debian... &lt;br /&gt;6)Recompilation&lt;br /&gt;7) Fabrication directe.&lt;br /&gt;&lt;br /&gt;'''Les sources et les résultats de ces paquets se trouve sur &lt;br /&gt;deb http://boisson.homeip.net/sarge/ ./ &lt;br /&gt;deb http://boisson.homeip.net/source ./ &lt;br /&gt;'''&lt;br /&gt;&lt;br /&gt;&lt;u&gt;'''1) Un exemple très simple: vikings'''&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;'''On ne travaille PAS sous root'''&lt;br /&gt;&lt;br /&gt;Ce paquet contient une arborescence /usr/games/lost et un script /usr/games/vik. Les fichiers sont tout prêts et n'ont pas besoin de préparation. &lt;br /&gt;&lt;br /&gt;- faire un répertoire /tmp/vikings-1.0 &lt;br /&gt;- Y mettre vik et le répertoire lost &lt;br /&gt;- Faire

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;$ cd /tmp &lt;br /&gt;$ cd vikings-1.0/ &lt;br /&gt;$ dh_make
|}

&lt;/center&gt;

&lt;br /&gt;dh_make pose la question de savoir si c'est un paquet simple (oui), multiple, librairie ou module noyau. Il crée un répertoire debian et un répertoire /tmp/vikings-1.0.orig permettant de faire le fichier .diff.gz (les paquets sources contiennet en général les sources initiaux, un fichier .diff rajoutant l'arborescence et les patchs debian et un fichier .dsc décrivant le paquet). ''A ce stade, il est important de noter que seules des modifications de textes sont permises. Si un binaire est modifié dans le paquet source, il est nécessaire de supprimer le répertoire /tmp/vikings-1.0.orig, les sources seront alors composés d'un fichier .tar.gz et d'un fichier .dsc (pas de diff.gz),''&lt;br /&gt;Puis viennent les éditions

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;$ emacs debian/control
|}

&lt;/center&gt;

&lt;br /&gt;Mettre à jour les champs Description, et éventuellement Depends. Ici, le paquet dépend de dosbox donc remplacer

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;Depends: ${shlibs:Depends}, ${misc:Depends}
|}

&lt;/center&gt;

&lt;br /&gt;par

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;Depends: dosbox
|}

&lt;/center&gt;

&lt;br /&gt;(la syntaxe est paquet, paquet, ...) &lt;br /&gt;Faire

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;$ emacs debian/rules
|}

&lt;/center&gt;

&lt;br /&gt;Ce fichier est essentiel car contenant les instructions permettant de faire le paquet.Ici, il n'y a pas de Makefile donc virer ou commenter les lignes contenant $(MAKE), puis remplacer la ligne

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;&lt;br /&gt;        $(MAKE) install DESTDIR=$(CURDIR)/debian/vikings
|}

&lt;/center&gt;

&lt;br /&gt;par

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;        cp -dpRf vik lost $(CURDIR)/debian/vikings/usr/games
|}

&lt;/center&gt;

&lt;br /&gt;''Le répertoire de travail est /tmp/vikings-1.0=CURDIR, $(CURDIR)/debian/vikings contient l'arborescence du paquet à venir''. Il est parfois bon de faire au préalable

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;        mkdir -p $(CURDIR)/debian/vikings/usr/games &lt;br /&gt;        cp -dpRf vik lost $(CURDIR)/debian/vikings/usr/games
|}

&lt;/center&gt;

&lt;br /&gt;Pour créer le répertoire. Une autre méthode plus simple consiste à déclarer le répertoire dans debian/dirs

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;$ emacs debian/dirs
|}

&lt;/center&gt;

&lt;br /&gt;(Y mettre usr/games et virer le reste). Faire

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
$ emacs debian/copyright
|}

&lt;/center&gt;

&lt;br /&gt;pour y mettre la licence. Ici j'ai complété par &lt;br /&gt;«It was downloaded from abandonnia». Faire de même pour README.debian &lt;br /&gt;Ces fichiers debian/README.debian et debian/copyright se retrouvent toujours et sont copiés sur /usr/share/doc/&amp;lt;paquet&amp;gt;/. Usuellement, on rajoute un fichier README de doc. &lt;br /&gt;&lt;br /&gt;Faire enfin

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;$ fakeroot dpkg-buildpackage -us -uc
|}

&lt;/center&gt;

&lt;br /&gt;qui fabrique les paquets sources et le .deb. &lt;br /&gt;Supposons que damned, faute de frappe et le paquet plante, dans ce cas, repartir de sources propres:

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;$ cd .. &lt;br /&gt;$ rm -Rf vikings-1.0/ &lt;br /&gt;$ dpkg-source -x vikings_1.0-1.dsc &lt;br /&gt;$ cd vikings-1.0/ &lt;br /&gt;$ emacs [le fichier fautif (Makefile ou debian/rules souvent)] &lt;br /&gt;$ fakeroot dpkg-buildpackage -us -uc
|}

&lt;/center&gt;

&lt;br /&gt;Le paquet vikings_1.0-1_i386.deb est cré dans la racine. &lt;br /&gt;&lt;br /&gt;&lt;u&gt;'''2) Un deuxième exemple: cacheproc'''&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;cacheproc est un petit programme recherchant des processus cachés, il est écrit en camllight. Il se compose de

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;-rw-r--r--  1 francois src 2474 2004-01-19 22:08 chercheprocess.ml &lt;br /&gt;-rw-r--r--  1 francois src  707 2004-01-19 22:22 Makefile &lt;br /&gt;-rw-r--r--  1 francois src 1450 2004-01-19 22:32 README &lt;br /&gt;-rw-r--r--  1 francois src 1936 2004-01-19 22:08 regarde.ml
|}

&lt;/center&gt;

&lt;br /&gt;On procède comme ci dessus (dh_make, etc), l'idéal étant de modifier le moins possible debian/rules en utilisant le Makefile. &lt;br /&gt;README est un fichier sommaire de docs. Je le copie sur debian/README.debian (ce qui est une mauvaise idée mais bon, c'était un de mes premiers paquets) &lt;br /&gt;a) le fichier debian/control &lt;br /&gt;Outre les rubriques usuelles, rajouter camllight dans le Build-Depends:

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;Build-Depends: debhelper (&amp;gt;&amp;gt; 3.0.0), camllight
|}

&lt;/center&gt;

''(J'oublie tout le temps, dsl)''&lt;br /&gt;b) mettre usr/bin dans debian/dirs (c'est là où seront les binaires) &lt;br /&gt;c) Dans debian/rules mettre

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;       $(MAKE) all
|}

&lt;/center&gt;

au lieu de $(MAKE) dans le build-stamp et commenter le dh_strip (les objets caml supporte mal le strip (=compression de l'exe)). &lt;br /&gt;Reste donc à faire le Makefile. J'utilise un Makefile «générique» que je modifie à la demande. Il contient

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;#!/usr/bin/make &lt;br /&gt;prefix          = /usr &lt;br /&gt;exec_prefix     = ${prefix} &lt;br /&gt;srcdir          = . &lt;br /&gt;&lt;br /&gt;bindir          = ${exec_prefix}/bin &lt;br /&gt;DESTDIR= &lt;br /&gt;&lt;br /&gt;INSTALL_LIST_BIN=regarde chercheprocess &lt;br /&gt;&lt;br /&gt;distclean: clean &lt;br /&gt;&lt;br /&gt;clean: &lt;br /&gt;        -rm *.zi *.zo *~ &lt;br /&gt;        for i in $(INSTALL_LIST_BIN); do if test -f $$i; then rm $$i; fi; done &lt;br /&gt;&lt;br /&gt;install: &lt;br /&gt;        for i in $(DESTDIR)$(bindir); do mkdir -p $$i &amp;amp;&amp;amp; test -d $$i &amp;amp;&amp;amp; test -w $$i; done &lt;br /&gt;        for i in $(INSTALL_LIST_BIN); do if test -f $$i; then cp $$i $(DESTDIR)$(bindir); else cp $(srcdir)/$$i $(DESTDIR)$(bindir); fi; done &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;all: chercheprocess regarde &lt;br /&gt;&lt;br /&gt;chercheprocess: chercheprocess.ml &lt;br /&gt;        camlc -custom -o chercheprocess -lunix chercheprocess.ml &lt;br /&gt;&lt;br /&gt;regarde: regarde.ml &lt;br /&gt;        camlc -custom -o regarde -lunix regarde.ml
|}

&lt;/center&gt;

&lt;br /&gt;Les lignes importantes sont INSTALL_LIST_BIN=.. donnant la liste des binaires à obtenir. Les cibles sont clean, all et install. &lt;br /&gt;'''clean''' nettoie les fichiers objets (noter le -rm et non rm qui évite l'erreur si il n'y a pas de fichier objet, ''on peut se demander pourquoi je n'ai pas fait pareil pour les binaires mais bon...'') &lt;br /&gt;'''install'''installe les binaires dans le répertoire $(DESTDIR)$(bindir), donc ici on crée le répertoire, on vérifie qu'il y a les bons droits, puis on y copie les binaires de la liste INSTALL_LIST_BIN (à noter que dans mon script, j'ai prévu le cas où il y a un répertoire source séparé). &lt;br /&gt;'''all''' renvoie sur 2 cibles, une par binaire. Chaque cible fabrique le binaire correspondant. &lt;br /&gt;Le reste est comme dans 1) &lt;br /&gt;&lt;br /&gt;&lt;u&gt;'''3) Un paquet de mis à jour pour gérer un parc de machines.'''&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Ce genre de paquet est très utile pour répercuter des patchs sur un lot de machines (salle) toutes indentiques. &lt;br /&gt;&lt;br /&gt;Pour cela on utilise un script /etc/init.d/maj contenant dans la rubrique start

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;        echo -n &quot;Starting $DESC: $NAME&quot; &lt;br /&gt;        cp /etc/apt/sources.list.lycee /etc/apt/sources.list &lt;br /&gt;        apt-get update &lt;br /&gt;        apt-get install -y lycee &lt;br /&gt;        cp /etc/apt/sources.list.vrai /etc/apt/sources.list &lt;br /&gt;        echo &quot;.&quot; &lt;br /&gt;   # rajout éventuel de compléments
|}

&lt;/center&gt;

&lt;br /&gt;&lt;br /&gt;puis on fait

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;$ chmod +x /etc/init.d/maj &lt;br /&gt;$ update-rc.d maj defaults 99
|}

&lt;/center&gt;

&lt;br /&gt;/etc/apt/sources.list.lycee &lt;br /&gt;contient une ligne &lt;br /&gt;deb file:/home/ftp/ / &lt;br /&gt;qui est ici un dépot partagé via nfs. &lt;br /&gt;&lt;br /&gt;Le paquet pris en exemple est celui qui me permet de gérer les salles du lycée où je travaille. A l'heure actuelle il contient

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;tux.xpm autoexec.bat  init.reg  lomount  maj  Makefile  repareW98  sources.list.lycee
|}

&lt;/center&gt;

&lt;br /&gt;Il faut savoir que les logiciels de chimie utilisés par les élèves tournent sur un Windows98 dans un qemu (les machines sont des amd64). Comme prévus les patchs concernent surtout windows98. On y trouve un nouvel autoexex.bat, un fichier init.reg à mettre dans la racine du disque virtuel windows. Pour cela un utilitaire lomount (dont j'ai fini par faire un paquet) permet de monter des partitions d'une image d'un disque hda par exemple. repareW98 est un script qui remplace l'image du disque virtuel par une image neuve et y applique les patches. Quand l'élève plante le Windows (en gros toutes les deux heures), il clique sur une icone «repareWindows», et relance un windows tout neuf. Il a perdu tout son boulot ce qui a l'avantage de l'éduquer sur Windows. Voilà pour l'explication du contexte. &lt;br /&gt;&lt;br /&gt;Le paquet à faire doit donc à chaque installation installer la nouvelle version de maj, appliquer d'éventuels patchs et installer les fichiers ci dessus dans les bonnes places. &lt;br /&gt;Comme précédemment, l'installation des fichiers se fait par le Makefile:

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;#!/usr/bin/make &lt;br /&gt;prefix          = /usr &lt;br /&gt;exec_prefix     = ${prefix} &lt;br /&gt;srcdir          = . &lt;br /&gt;&lt;br /&gt;bindir          = ${exec_prefix}/bin &lt;br /&gt;DESTDIR= &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;distclean: clean &lt;br /&gt;&lt;br /&gt;clean: &lt;br /&gt;&lt;br /&gt;install: &lt;br /&gt;        mkdir -p $(DESTDIR)/etc/init.d &lt;br /&gt;        mkdir -p $(DESTDIR)/etc/apt/ &lt;br /&gt;        mkdir -p $(DESTDIR)/usr/local/bin &lt;br /&gt;        mkdir -p $(DESTDIR)/usr/local/windows &lt;br /&gt;        cp -dpf maj $(DESTDIR)/etc/apt &lt;br /&gt;        cp sources.list.lycee $(DESTDIR)/etc/apt/ &lt;br /&gt;        cp lomount $(DESTDIR)/usr/local/bin &lt;br /&gt;        cp repareW98 $(DESTDIR)/usr/local/bin &lt;br /&gt;   cp tux.xpm   $(DESTDIR)/var/lycee &lt;br /&gt;        chmod +x $(DESTDIR)/usr/local/bin/* &lt;br /&gt;        cp init.reg autoexec.bat $(DESTDIR)/usr/local/windows
|}

&lt;/center&gt;

&lt;br /&gt;&lt;br /&gt;Pour le fichier debian/rules, il n'y a pas de fabrication de binaires (donc commenter le $(MAKE) de build-stamp). Le reste est le script par défaut. &lt;br /&gt;&lt;br /&gt;Le fichier debian/control contient les paquets rajoutés sur les machines au fur et à mesure de leur évolution:

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;Source: lycee &lt;br /&gt;[.....] &lt;br /&gt;Package: lycee &lt;br /&gt;Architecture: any &lt;br /&gt;Depends: ${shlibs:Depends}, ${misc:Depends}, camllight (&amp;gt;= 0.75-2), ntpdate, fingerd, sun-j2re1.4, tuareg-mode &lt;br /&gt;Description: paquet de MAJ Lycee &lt;br /&gt; Mise à jour incrémentale des systèmes Linux
|}

&lt;/center&gt;

&lt;br /&gt;&lt;br /&gt;Ici j'ai rajouté camllight, le mode tuareg pour caml, un java, ntpdate pour synchroniser les machines et fingerd pour savoir qui travaille et quand sur les machines (c'est mon coté bigbrother qu'il faut bien assumer). &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Enfin, le fichier debian/postinst exécute les différents patchs éventuels:

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;... &lt;br /&gt;case &quot;$1&quot; in &lt;br /&gt;    configure) &lt;br /&gt;# remplacement de maj &lt;br /&gt;    cp /etc/apt/maj /etc/init.d &lt;br /&gt;    chmod +x /etc/init.d/maj &lt;br /&gt;        update-rc.d maj defaults 99 &lt;br /&gt;# exécution patch1 &lt;br /&gt;    if [ ! -f /etc/lycee/patch1 ] ; then &lt;br /&gt;        mkdir -p /etc/lycee/ &lt;br /&gt;        touch /etc/lycee/patch1 &lt;br /&gt;# là mettre les commandes du patch1, ici remplacement logo &lt;br /&gt;        cd /etc/X11/xdm/pixmaps &lt;br /&gt;        rm tux.xpm &lt;br /&gt;        ln -s /var/lycee/tux.xpm &lt;br /&gt;        echo &quot;Patch1 appliqué&quot; &lt;br /&gt;&lt;br /&gt;    fi &lt;br /&gt;        ;; &lt;br /&gt;    abort-upgrade|abort-remove|abort-deconfigure) &lt;br /&gt;&lt;br /&gt;    ;; &lt;br /&gt;&lt;br /&gt;    *) &lt;br /&gt;        echo &quot;postinst called with unknown argument \`$1'&quot; &amp;gt;&amp;amp;2 &lt;br /&gt;        exit 1 &lt;br /&gt;    ;; &lt;br /&gt;esac &lt;br /&gt;...
|}

&lt;/center&gt;

&lt;br /&gt;&lt;br /&gt;Pour faire une mise à jour sur les machines, il suffit donc de mettre à jour le dépot local et tout se fera automatiquement. Cela a remplacé avantageusement le rapatriement automatique de scripts. Ça montre bien la puissance du paquetage .deb qui permet vraiment de tout faire très simplement &lt;br /&gt;&lt;br /&gt;&lt;u&gt;'''4) Fabrication rapide de backports.'''&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Le problème s'est posé pour moi pour clamav avant la mise en place de debian/volatile (que je n'utilise pas du coup). clamav fait des maj régulièrement et mon serveur était sous potato puis est maintenant sous woody (je n'ai pas le temps ni le vrai désir de passer sous sarge). Il s'agit donc de faire des backports de clamav. Il se trouve que Stephen Gran a fait un paquet très propre (en tout cas la version 0.80), lors des mise à jour je procède comme suit: &lt;br /&gt;&lt;br /&gt;Mettons que je parte de la version 0.80 &lt;br /&gt;0) Récupération de l'arborescence debian de ce paquet &lt;br /&gt;1) rapatriement de l'archive source clamav nouvelle &lt;br /&gt;2) dépilage de cette archive et renommage du répertoire en clamav-0.80 &lt;br /&gt;3) Exécution de

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;$ dch -v backport-0.88-4
|}

&lt;/center&gt;

&lt;br /&gt;Le paquet sera dans la version backport-0.88 &lt;br /&gt;4) Compilation

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;$ cd ../clamav-0.88-4 &lt;br /&gt;$ fakeroot dpkg-buildpackage -us -uc
|}

&lt;/center&gt;

&lt;br /&gt;&lt;br /&gt;C'est fini, les nouveaux paquets sont faits. &lt;br /&gt;&lt;br /&gt;Voici les commandes tapés pour le passage de 0.88-2 à 0.88-4:

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;cd &lt;br /&gt;wget http://ovh.dl.sourceforge.net/sourceforge/clamav/clamav-0.88.4.tar.gz &lt;br /&gt;ls clamav* &lt;br /&gt;mv clamav-0.88/ clamav-backport-0.88-2 &lt;br /&gt;tar xzf clamav-0.88.4.tar.gz &lt;br /&gt;tar tzf clamav-0.88.4.tar.gz &lt;br /&gt;mv clamav-0.88.4 clamav-0.88 &lt;br /&gt;cd  clamav-0.88 &lt;br /&gt;cp -dpRf ../clamav-backport-0.88-2/debian/ . &lt;br /&gt;cd .. &lt;br /&gt;cd clamav-0.88 &lt;br /&gt;dch -v backport-0.88-4 &lt;br /&gt;fakeroot dpkg-buildpackage -us -uc &lt;br /&gt;cd .. &lt;br /&gt;ls &lt;br /&gt;ls -ltr &lt;br /&gt;ls *0.88-4*deb &lt;br /&gt;scp *0.88-4*deb cerbere:/home/ftp/sarge/sarge
|}

&lt;/center&gt;

&lt;br /&gt;&lt;br /&gt;C'est tout. Les sources obtenus me permettent de faire les paquets pour woody, sarge amd64, etc. &lt;br /&gt;&lt;br /&gt;Il peut y avoir quelques soucis nécessitant des retouches de debian/rules &lt;br /&gt;&lt;br /&gt;&lt;u&gt;'''5) Fabrication d'un paquet via checkinstall.'''&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;attention, il y a un bug dans la version de checkinstall de lenny, le checkinstall n'existe pas chez etch, on pourra le trouver ici &lt;br /&gt;'''deb http://boisson.homeip.net/debian etch divers'''&lt;br /&gt;Pour contourner le bug, lancer checkinstall avec l'option --fstrans=no &lt;br /&gt;Sinon, checkinstall ne peut construire correctement le paquet si l'installation se fait avec un programme binaire statique.&lt;br /&gt;&lt;br /&gt;Parfois, la méthode dh_make conduit à modifier le Makefile, on ne comprend plus rien et on a juste envie de faire un paquet et pas les paquets sources. Un petit génie a inventer checkinstall (par encore parfait mais bon)... &lt;br /&gt;&lt;br /&gt;Exemple scilab version 4 dont j'avais besoin en urgence (ci dessous de mémoire, c'est reconstitué). &lt;br /&gt;Chargement rapide des sources, configuration classique:

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;$ cd scilab-4.0 &lt;br /&gt;$ ./configure --prefix=/usr &lt;br /&gt;$ make all
|}

&lt;/center&gt;

&lt;br /&gt;bref, du classique. &lt;br /&gt;Là commence checkinstall:

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;$ su &lt;br /&gt;# checkinstall make install &lt;br /&gt;&lt;br /&gt;checkinstall 1.5.3, Copyright 2001 Felipe Eduardo Sanchez Diaz Duran &lt;br /&gt;           This software is released under the GNU GPL. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The package documentation directory ./doc-pak does not exist. &lt;br /&gt;Should I create a default set of package docs?  [y]: &lt;br /&gt;&lt;br /&gt;Preparing package documentation...OK &lt;br /&gt;&lt;br /&gt;Installing with &quot;make install&quot;... &lt;br /&gt;&lt;br /&gt;========================= Installation results =========================== &lt;br /&gt;&lt;br /&gt;Copying documentation directory... &lt;br /&gt;[....] &lt;br /&gt;======================== Installation succesful ========================== &lt;br /&gt;&lt;br /&gt;Copying files to the temporary directory...OK &lt;br /&gt;&lt;br /&gt;Striping ELF binaries and libraries...OK &lt;br /&gt;&lt;br /&gt;Compressing man pages...OK &lt;br /&gt;&lt;br /&gt;Building file list...OK &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Please write a description for the package. &lt;br /&gt;End your description with an empty line or EOF. &lt;br /&gt;&amp;gt;&amp;gt;
|}

&lt;/center&gt;

&lt;br /&gt;là on tape la description du paquet suivi d'une ligne vide

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;&amp;gt;&amp;gt; Scilab version 4 du 9 juillet 2006 &lt;br /&gt;&amp;gt;&amp;gt;
|}

&lt;/center&gt;

&lt;br /&gt;S'en suit les parties identifiant le paquet. On les remplit en tapant le numéro de la catégorie à modifier puis le texte correspondant.

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;This package will be built according to these values: &lt;br /&gt; le numéro et en remplissant &lt;br /&gt;0 -  Maintainer: [ [mailto:francois@boisson.homeip.net francois@chez.moi] ] &lt;br /&gt;1 -  Summary: [ Scilab version 4 du 9 juillet 2006 ] &lt;br /&gt;2 -  Name:    [ scilab ] &lt;br /&gt;3 -  Version: [ 1.0 ] &lt;br /&gt;4 -  Release: [ 1 ] &lt;br /&gt;5 -  License: [ GPL ] &lt;br /&gt;6 -  Group:   [ agreg ] &lt;br /&gt;7 -  Architecture: [ i386 ] &lt;br /&gt;8 -  Source location: [ scilab ] &lt;br /&gt;9 -  Alternate source location: [  ] &lt;br /&gt;&lt;br /&gt;Enter a number to change any of them or press ENTER to continue: &lt;br /&gt;&lt;br /&gt;***************************************** &lt;br /&gt;**** Debian package creation selected *** &lt;br /&gt;***************************************** &lt;br /&gt;&lt;br /&gt;Building Debian package...OK &lt;br /&gt;&lt;br /&gt;Installing Debian package... &lt;br /&gt;&lt;br /&gt;Erasing temporary files...OK &lt;br /&gt;&lt;br /&gt;Writing backup package...OK &lt;br /&gt;&lt;br /&gt;Deleting temp dir...OK &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;********************************************************************** &lt;br /&gt;&lt;br /&gt; Done. The new package has been installed and saved to &lt;br /&gt; /tmp/scilab/scilab_4.0_i386.deb &lt;br /&gt;&lt;br /&gt; You can remove it from your system anytime using: &lt;br /&gt;&lt;br /&gt;      dpkg -r scilab &lt;br /&gt;&lt;br /&gt;********************************************************************** &lt;br /&gt;&lt;br /&gt;#
|}

&lt;/center&gt;

&lt;br /&gt;&lt;br /&gt;Là on se dit c'est fini, eh ben non. checkinstall ne crée pas les dépendances. On peut les faire on modifiant les dépendances à la main. Pour cela, on utilisera le script suivant:

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;/usr/local/bin/lsdepend: &lt;br /&gt;&lt;br /&gt;#!/bin/sh &lt;br /&gt;find . -type f | xargs ldd 2&amp;gt; /dev/null | &lt;br /&gt; sed -e '1,$s/=.*//' | &lt;br /&gt; sed -e '1,$s/^ */dpkg -S /' | grep -v &quot;:&quot; | &lt;br /&gt; grep &quot;\.so&quot; | &lt;br /&gt; sort -u | sh | &lt;br /&gt; sed -e '1,$s/:.*//' | &lt;br /&gt; sort -u | &lt;br /&gt; sed -e '1,$s/^/dpkg -l | grep &quot;^[a-zA-Z]\\{2\\} * /' | sed -e '1,$s/$/ &quot;/' |sh
|}

&lt;/center&gt;

&lt;br /&gt;&lt;br /&gt;On fait donc tout d'abord l'extraction des fichiers du paquet dans un répertoire (ici gre).

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;$ mkdir gre &lt;br /&gt;$ cd gre &lt;br /&gt;$ dpkg-deb -e ../scilab_4.0_i386.deb &lt;br /&gt;$ dpkg-deb -x ../scilab_4.0_i386.deb .
|}

&lt;/center&gt;

&lt;br /&gt;La troisième commande fabrique un répertoire DEBIAN contenant un seul fichier control contenant

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;Package: scilab &lt;br /&gt;Priority: extra &lt;br /&gt;Section: agreg &lt;br /&gt;Installed-Size: 104436 &lt;br /&gt;Maintainer: [mailto:francois@boisson.homeip.net francois@chez.moi]&lt;br /&gt;Architecture: i386 &lt;br /&gt;Version: 4.0-1 &lt;br /&gt;Description: Scilab version 4 du 9 juillet 2006
|}

&lt;/center&gt;

&lt;br /&gt;(La quatrième commande déplie l'archive des fichiers du paquet) &lt;br /&gt;Pas de champ Depends dans ce fichier Control, donc de la pagaille et des déconvenues à prévoir. Pour cela on peut avoir une idée des paquets nécessaires avec le script lsdepend. Celui ci cherche les librairies appelées et donne la liste des paquets nécessaires. Ainsi ici, sachant que les bianires sont dans usr/lib/scilab-4.0/bin/

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;$ cd /usr/lib/scilab-4.0/bin/ &lt;br /&gt;francois@totoche:/usr/lib/scilab-4.0/bin$ lsdepend &lt;br /&gt;ii  libc6          2.3.2.ds1-22   GNU C Library: Shared libraries and Timezone &lt;br /&gt;ii  libg2c0        3.3.5-13       Runtime library for GNU Fortran 77 applicati &lt;br /&gt;ii  libgcc1        3.4.3-12       GCC support library &lt;br /&gt;ii  libice6        4.3.0.dfsg.1-1 Inter-Client Exchange library &lt;br /&gt;ii  libncurses5    5.4-4          Shared libraries for terminal handling &lt;br /&gt;ii  libsm6         4.3.0.dfsg.1-1 X Window System Session Management library &lt;br /&gt;ii  libx11-6       4.3.0.dfsg.1-1 X Window System protocol client library &lt;br /&gt;ii  libxext6       4.3.0.dfsg.1-1 X Window System miscellaneous extension libr &lt;br /&gt;ii  libxmu6        4.3.0.dfsg.1-1 X Window System miscellaneous utility librar &lt;br /&gt;ii  libxpm4        4.3.0.dfsg.1-1 X pixmap library &lt;br /&gt;ii  libxt6         4.3.0.dfsg.1-1 X Toolkit Intrinsics &lt;br /&gt;ii  maple4         1.0-1          Paquet Maple4 &lt;br /&gt;ii  tcl8.4         8.4.9-1        Tcl (the Tool Command Language) v8.4 - run-t &lt;br /&gt;ii  tk8.4          8.4.9-1        Tk toolkit for Tcl and X11, v8.4 - run-time &lt;br /&gt;ii  xaw3dg         1.5+E-8        Xaw3d widget set &lt;br /&gt;francois@totoche:/usr/lib/scilab-4.0/bin$
|}

&lt;/center&gt;

&lt;br /&gt;Le paquet maple4 est une hérésie non libre inutile (doublon) qu'on oublie, cela nous donne le champ Depends suivant:

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;Depends: libc6, tk8.4, tcl8.4, xaw3dg, libxmu6, libxt6, libxext6, libsm6, libice6, libx11-6, libncurses5, libg2c0, libgcc1, libxpm4
|}

&lt;/center&gt;

&lt;br /&gt;et le fichier DEBIAN/control suivant

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;Package: scilab &lt;br /&gt;Priority: extra &lt;br /&gt;Section: agreg &lt;br /&gt;Installed-Size: 104436 &lt;br /&gt;Maintainer: [mailto:francois@boisson.homeip.net francois@chez.moi]&lt;br /&gt;Architecture: i386 &lt;br /&gt;Depends: libc6, tk8.4, tcl8.4, xaw3dg, libxmu6, libxt6, libxext6, libsm6, libice6, libx11-6, libncurses5, libg2c0, libgcc1, libxpm4 &lt;br /&gt;Version: 4.0-1 &lt;br /&gt;Description: Scilab version 4 du 9 juillet 2006
|}

&lt;/center&gt;

&lt;br /&gt;&lt;br /&gt;On peut éventuellement créer un fichier DEBIAN/postinst et DEBIAN/prerm si on veut éxécuter un script juste après l'installation ou un script avant la désinstallation. Il ne reste plus qu'à refaire le paquet:

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;$ cd .. &lt;br /&gt;$  dpkg-deb -b gre scilab_4.0_i386.deb &lt;br /&gt;dpkg-deb : construction du paquet « scilab » dans « scilab_4.0_i386.deb ». &lt;br /&gt;francois@totoche:/tmp$
|}

&lt;/center&gt;

&lt;br /&gt;&lt;br /&gt;et voilà le beau paquet scilab avec ses dépendances (du moins on l'espère). Bien évidemment, c'est rustique comme méthode mais cela permet de dupliquer une installation facilement et cela constitue une alternative pratique et rapide à la méthode classique sans sombrer dans les méandres d'un debian/rules ne fonctionnant pas...

&lt;br /&gt;&lt;br /&gt;6) Recompilation

Pour le coup c'est très simple. Il suffit de charger les sources, modifier eventuellement les options et recompiler le paquet. Soit donc pour le paquet paquet-1.23-6_i386.deb &lt;br /&gt;&lt;br /&gt;Code:&lt;br /&gt;$ apt-get source paquet&lt;br /&gt;$ cd paquet-1.23&lt;br /&gt;$ emacs debian/rules &lt;br /&gt;&lt;br /&gt;(là chercher les options, regarder pres de la cible configure_stamp: ou build_stamp: et les modifier) &lt;br /&gt;&lt;br /&gt;Code:&lt;br /&gt;$ fakeroot dpkg-buildpackage -b -uc&lt;br /&gt;$ cd ..&lt;br /&gt;$ ls *.deb&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Le paquet est prêt.

&lt;br /&gt;'''&lt;u&gt;&lt;/u&gt;'''

'''&lt;u&gt;7) Fabrication directe.&lt;/u&gt;'''

'''&lt;u&gt;&lt;/u&gt;'''&lt;u&gt;&lt;/u&gt;

Un paquet peut être fait simplement. Pour cela

* Préparer l'arborescence des fichiers composant le paquet dans un répertoire /tmp/paquet.
* Faire un répertoire /tmp/paquet/DEBIAN
* Y mettre dedans un fichier control de la forme&lt;br /&gt;Package: nomdupaquet&lt;br /&gt;Priority: optional&lt;br /&gt;Section: x11&lt;br /&gt;Installed-Size: 4023 (si le paquet fait 4023K environ)&lt;br /&gt;Maintainer: Georges Sand &amp;lt;aurore.dupin@chopin.muses.fr&amp;gt;&lt;br /&gt;Architecture: all&lt;br /&gt;Version: 1.0&lt;br /&gt;Depends: xbase-clients&lt;br /&gt;Description: Modifications de startx&lt;br /&gt; Lancement de X différent&lt;br /&gt; .
* Y mettre éventuellement un fichier '''postinst''' (éxécutable) pour les éventuels instructions à faire après l'installation. Dans le cas où un fichier d'un paquet est modifié (mettons startx ici) il est important de faire une «diversion», ce qui se fait par un fichier '''preinst '''&lt;span&gt;comme suit&lt;/span&gt;:&lt;br /&gt;set -e&lt;br /&gt;case &quot;$1&quot; in&lt;br /&gt; install)&lt;br /&gt; dpkg-divert --package nomdupaquet --divert /usr/bin/startx.org --rename /usr/bin/startx&lt;br /&gt; dpkg-divert --package nomdupaquet --divert /usr/X11R6/bin/startx.org --rename /usr/X11R6/bin/startx&lt;br /&gt; ;;&lt;br /&gt; abort-upgrade)&lt;br /&gt; ;;&lt;br /&gt; upgrade)&lt;br /&gt; ;;&lt;br /&gt; *)&lt;br /&gt; echo &quot;preinst called with unknown argument \`$1'&quot; &amp;gt;&amp;amp;2&lt;br /&gt; exit 1&lt;br /&gt; ;;&lt;br /&gt;esac&lt;br /&gt;exit 0&lt;br /&gt;&lt;br /&gt;et bien sûr un fichier '''postrm'''&lt;span&gt; supprimant la diversion en cas de retrait du paquet:&lt;br /&gt;&lt;br /&gt;set -e&lt;br /&gt;case &quot;$1&quot; in&lt;br /&gt; remove|purge)&lt;br /&gt; dpkg-divert --package xbase-agreg --rename --remove /usr/X11R6/bin/startx&lt;br /&gt; dpkg-divert --package xbase-agreg --rename --remove /usr/bin/startx&lt;br /&gt;&lt;br /&gt; ;;&lt;br /&gt; upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)&lt;br /&gt; ;;&lt;br /&gt; *)&lt;br /&gt; echo &quot;postrm called with unknown argument \`$1'&quot; &amp;gt;&amp;amp;2&lt;br /&gt; exit 0&lt;br /&gt;esac&lt;/span&gt;
* &lt;span&gt;faire ensuite &lt;br /&gt;$ cd /tmp/paquet&lt;br /&gt;$ find . -type f | grep -v &quot;^./DEBIAN&quot; | md5sum &amp;gt; DEBIAN/md5sums&lt;br /&gt;$ su&lt;br /&gt;# chown -R root.root *&lt;br /&gt;# dpkg-deb -b . ../nomdupaquet-1.0_all.deb&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;
* &lt;span&gt;Le paquet est prêt.&lt;/span&gt;</text>
      <sha1>lcthkna5kbjijqug8gmjzke0ummxiz3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>133</id>
      <parentid>131</parentid>
      <timestamp>2010-01-23T08:53:00Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="27949">Ce petit memento comporte 5 parties: &lt;br /&gt;&lt;br /&gt;1) Fabrication d'un paquet élémentaire (vikings) &lt;br /&gt;2) Fabrication d'un paquet plus compliqué avec compilation (cacheproc) &lt;br /&gt;3) Exemple d'un paquet de scripts de mise à jour &lt;br /&gt;4) Le rétroportage vite fait, bien ou mal fait &lt;br /&gt;5) ./configure;make;make install et paquet debian... &lt;br /&gt;6)Recompilation&lt;br /&gt;7) Fabrication directe.&lt;br /&gt;&lt;br /&gt;'''Les sources et les résultats de ces paquets se trouve sur &lt;br /&gt;deb http://boisson.homeip.net/sarge/ ./ &lt;br /&gt;deb http://boisson.homeip.net/source ./ &lt;br /&gt;'''&lt;br /&gt;&lt;br /&gt;&lt;u&gt;'''1) Un exemple très simple: vikings'''&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;'''On ne travaille PAS sous root'''&lt;br /&gt;&lt;br /&gt;Ce paquet contient une arborescence /usr/games/lost et un script /usr/games/vik. Les fichiers sont tout prêts et n'ont pas besoin de préparation. &lt;br /&gt;&lt;br /&gt;- faire un répertoire /tmp/vikings-1.0 &lt;br /&gt;- Y mettre vik et le répertoire lost &lt;br /&gt;- Faire

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;$ cd /tmp &lt;br /&gt;$ cd vikings-1.0/ &lt;br /&gt;$ dh_make
|}

&lt;/center&gt;

&lt;br /&gt;dh_make pose la question de savoir si c'est un paquet simple (oui), multiple, librairie ou module noyau. Il crée un répertoire debian et un répertoire /tmp/vikings-1.0.orig permettant de faire le fichier .diff.gz (les paquets sources contiennet en général les sources initiaux, un fichier .diff rajoutant l'arborescence et les patchs debian et un fichier .dsc décrivant le paquet). ''A ce stade, il est important de noter que seules des modifications de textes sont permises. Si un binaire est modifié dans le paquet source, il est nécessaire de supprimer le répertoire /tmp/vikings-1.0.orig, les sources seront alors composés d'un fichier .tar.gz et d'un fichier .dsc (pas de diff.gz),''&lt;br /&gt;Puis viennent les éditions

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;$ emacs debian/control
|}

&lt;/center&gt;

&lt;br /&gt;Mettre à jour les champs Description, et éventuellement Depends. Ici, le paquet dépend de dosbox donc remplacer

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;Depends: ${shlibs:Depends}, ${misc:Depends}
|}

&lt;/center&gt;

&lt;br /&gt;par

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;Depends: dosbox
|}

&lt;/center&gt;

&lt;br /&gt;(la syntaxe est paquet, paquet, ...) &lt;br /&gt;Faire

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;$ emacs debian/rules
|}

&lt;/center&gt;

&lt;br /&gt;Ce fichier est essentiel car contenant les instructions permettant de faire le paquet.Ici, il n'y a pas de Makefile donc virer ou commenter les lignes contenant $(MAKE), puis remplacer la ligne

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;&lt;br /&gt;        $(MAKE) install DESTDIR=$(CURDIR)/debian/vikings
|}

&lt;/center&gt;

&lt;br /&gt;par

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;        cp -dpRf vik lost $(CURDIR)/debian/vikings/usr/games
|}

&lt;/center&gt;

&lt;br /&gt;''Le répertoire de travail est /tmp/vikings-1.0=CURDIR, $(CURDIR)/debian/vikings contient l'arborescence du paquet à venir''. Il est parfois bon de faire au préalable

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;        mkdir -p $(CURDIR)/debian/vikings/usr/games &lt;br /&gt;        cp -dpRf vik lost $(CURDIR)/debian/vikings/usr/games
|}

&lt;/center&gt;

&lt;br /&gt;Pour créer le répertoire. Une autre méthode plus simple consiste à déclarer le répertoire dans debian/dirs

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;$ emacs debian/dirs
|}

&lt;/center&gt;

&lt;br /&gt;(Y mettre usr/games et virer le reste). Faire

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
$ emacs debian/copyright
|}

&lt;/center&gt;

&lt;br /&gt;pour y mettre la licence. Ici j'ai complété par &lt;br /&gt;«It was downloaded from abandonnia». Faire de même pour README.debian &lt;br /&gt;Ces fichiers debian/README.debian et debian/copyright se retrouvent toujours et sont copiés sur /usr/share/doc/&amp;lt;paquet&amp;gt;/. Usuellement, on rajoute un fichier README de doc. &lt;br /&gt;&lt;br /&gt;Faire enfin

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;$ fakeroot dpkg-buildpackage -us -uc
|}

&lt;/center&gt;

&lt;br /&gt;qui fabrique les paquets sources et le .deb. &lt;br /&gt;Supposons que damned, faute de frappe et le paquet plante, dans ce cas, repartir de sources propres:

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;$ cd .. &lt;br /&gt;$ rm -Rf vikings-1.0/ &lt;br /&gt;$ dpkg-source -x vikings_1.0-1.dsc &lt;br /&gt;$ cd vikings-1.0/ &lt;br /&gt;$ emacs [le fichier fautif (Makefile ou debian/rules souvent)] &lt;br /&gt;$ fakeroot dpkg-buildpackage -us -uc
|}

&lt;/center&gt;

&lt;br /&gt;Le paquet vikings_1.0-1_i386.deb est cré dans la racine. &lt;br /&gt;&lt;br /&gt;&lt;u&gt;'''2) Un deuxième exemple: cacheproc'''&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;cacheproc est un petit programme recherchant des processus cachés, il est écrit en camllight. Il se compose de

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;-rw-r--r--  1 francois src 2474 2004-01-19 22:08 chercheprocess.ml &lt;br /&gt;-rw-r--r--  1 francois src  707 2004-01-19 22:22 Makefile &lt;br /&gt;-rw-r--r--  1 francois src 1450 2004-01-19 22:32 README &lt;br /&gt;-rw-r--r--  1 francois src 1936 2004-01-19 22:08 regarde.ml
|}

&lt;/center&gt;

&lt;br /&gt;On procède comme ci dessus (dh_make, etc), l'idéal étant de modifier le moins possible debian/rules en utilisant le Makefile. &lt;br /&gt;README est un fichier sommaire de docs. Je le copie sur debian/README.debian (ce qui est une mauvaise idée mais bon, c'était un de mes premiers paquets) &lt;br /&gt;a) le fichier debian/control &lt;br /&gt;Outre les rubriques usuelles, rajouter camllight dans le Build-Depends:

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;Build-Depends: debhelper (&amp;gt;&amp;gt; 3.0.0), camllight
|}

&lt;/center&gt;

''(J'oublie tout le temps, dsl)''&lt;br /&gt;b) mettre usr/bin dans debian/dirs (c'est là où seront les binaires) &lt;br /&gt;c) Dans debian/rules mettre

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;       $(MAKE) all
|}

&lt;/center&gt;

au lieu de $(MAKE) dans le build-stamp et commenter le dh_strip (les objets caml supporte mal le strip (=compression de l'exe)). &lt;br /&gt;Reste donc à faire le Makefile. J'utilise un Makefile «générique» que je modifie à la demande. Il contient

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;#!/usr/bin/make &lt;br /&gt;prefix          = /usr &lt;br /&gt;exec_prefix     = ${prefix} &lt;br /&gt;srcdir          = . &lt;br /&gt;&lt;br /&gt;bindir          = ${exec_prefix}/bin &lt;br /&gt;DESTDIR= &lt;br /&gt;&lt;br /&gt;INSTALL_LIST_BIN=regarde chercheprocess &lt;br /&gt;&lt;br /&gt;distclean: clean &lt;br /&gt;&lt;br /&gt;clean: &lt;br /&gt;        -rm *.zi *.zo *~ &lt;br /&gt;        for i in $(INSTALL_LIST_BIN); do if test -f $$i; then rm $$i; fi; done &lt;br /&gt;&lt;br /&gt;install: &lt;br /&gt;        for i in $(DESTDIR)$(bindir); do mkdir -p $$i &amp;amp;&amp;amp; test -d $$i &amp;amp;&amp;amp; test -w $$i; done &lt;br /&gt;        for i in $(INSTALL_LIST_BIN); do if test -f $$i; then cp $$i $(DESTDIR)$(bindir); else cp $(srcdir)/$$i $(DESTDIR)$(bindir); fi; done &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;all: chercheprocess regarde &lt;br /&gt;&lt;br /&gt;chercheprocess: chercheprocess.ml &lt;br /&gt;        camlc -custom -o chercheprocess -lunix chercheprocess.ml &lt;br /&gt;&lt;br /&gt;regarde: regarde.ml &lt;br /&gt;        camlc -custom -o regarde -lunix regarde.ml
|}

&lt;/center&gt;

&lt;br /&gt;Les lignes importantes sont INSTALL_LIST_BIN=.. donnant la liste des binaires à obtenir. Les cibles sont clean, all et install. &lt;br /&gt;'''clean''' nettoie les fichiers objets (noter le -rm et non rm qui évite l'erreur si il n'y a pas de fichier objet, ''on peut se demander pourquoi je n'ai pas fait pareil pour les binaires mais bon...'') &lt;br /&gt;'''install'''installe les binaires dans le répertoire $(DESTDIR)$(bindir), donc ici on crée le répertoire, on vérifie qu'il y a les bons droits, puis on y copie les binaires de la liste INSTALL_LIST_BIN (à noter que dans mon script, j'ai prévu le cas où il y a un répertoire source séparé). &lt;br /&gt;'''all''' renvoie sur 2 cibles, une par binaire. Chaque cible fabrique le binaire correspondant. &lt;br /&gt;Le reste est comme dans 1) &lt;br /&gt;&lt;br /&gt;&lt;u&gt;'''3) Un paquet de mis à jour pour gérer un parc de machines.'''&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Ce genre de paquet est très utile pour répercuter des patchs sur un lot de machines (salle) toutes indentiques. &lt;br /&gt;&lt;br /&gt;Pour cela on utilise un script /etc/init.d/maj contenant dans la rubrique start

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;        echo -n &quot;Starting $DESC: $NAME&quot; &lt;br /&gt;        cp /etc/apt/sources.list.lycee /etc/apt/sources.list &lt;br /&gt;        apt-get update &lt;br /&gt;        apt-get install -y lycee &lt;br /&gt;        cp /etc/apt/sources.list.vrai /etc/apt/sources.list &lt;br /&gt;        echo &quot;.&quot; &lt;br /&gt;   # rajout éventuel de compléments
|}

&lt;/center&gt;

&lt;br /&gt;&lt;br /&gt;puis on fait

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;$ chmod +x /etc/init.d/maj &lt;br /&gt;$ update-rc.d maj defaults 99
|}

&lt;/center&gt;

&lt;br /&gt;/etc/apt/sources.list.lycee &lt;br /&gt;contient une ligne &lt;br /&gt;deb file:/home/ftp/ / &lt;br /&gt;qui est ici un dépot partagé via nfs. &lt;br /&gt;&lt;br /&gt;Le paquet pris en exemple est celui qui me permet de gérer les salles du lycée où je travaille. A l'heure actuelle il contient

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;tux.xpm autoexec.bat  init.reg  lomount  maj  Makefile  repareW98  sources.list.lycee
|}

&lt;/center&gt;

&lt;br /&gt;Il faut savoir que les logiciels de chimie utilisés par les élèves tournent sur un Windows98 dans un qemu (les machines sont des amd64). Comme prévus les patchs concernent surtout windows98. On y trouve un nouvel autoexex.bat, un fichier init.reg à mettre dans la racine du disque virtuel windows. Pour cela un utilitaire lomount (dont j'ai fini par faire un paquet) permet de monter des partitions d'une image d'un disque hda par exemple. repareW98 est un script qui remplace l'image du disque virtuel par une image neuve et y applique les patches. Quand l'élève plante le Windows (en gros toutes les deux heures), il clique sur une icone «repareWindows», et relance un windows tout neuf. Il a perdu tout son boulot ce qui a l'avantage de l'éduquer sur Windows. Voilà pour l'explication du contexte. &lt;br /&gt;&lt;br /&gt;Le paquet à faire doit donc à chaque installation installer la nouvelle version de maj, appliquer d'éventuels patchs et installer les fichiers ci dessus dans les bonnes places. &lt;br /&gt;Comme précédemment, l'installation des fichiers se fait par le Makefile:

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;#!/usr/bin/make &lt;br /&gt;prefix          = /usr &lt;br /&gt;exec_prefix     = ${prefix} &lt;br /&gt;srcdir          = . &lt;br /&gt;&lt;br /&gt;bindir          = ${exec_prefix}/bin &lt;br /&gt;DESTDIR= &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;distclean: clean &lt;br /&gt;&lt;br /&gt;clean: &lt;br /&gt;&lt;br /&gt;install: &lt;br /&gt;        mkdir -p $(DESTDIR)/etc/init.d &lt;br /&gt;        mkdir -p $(DESTDIR)/etc/apt/ &lt;br /&gt;        mkdir -p $(DESTDIR)/usr/local/bin &lt;br /&gt;        mkdir -p $(DESTDIR)/usr/local/windows &lt;br /&gt;        cp -dpf maj $(DESTDIR)/etc/apt &lt;br /&gt;        cp sources.list.lycee $(DESTDIR)/etc/apt/ &lt;br /&gt;        cp lomount $(DESTDIR)/usr/local/bin &lt;br /&gt;        cp repareW98 $(DESTDIR)/usr/local/bin &lt;br /&gt;   cp tux.xpm   $(DESTDIR)/var/lycee &lt;br /&gt;        chmod +x $(DESTDIR)/usr/local/bin/* &lt;br /&gt;        cp init.reg autoexec.bat $(DESTDIR)/usr/local/windows
|}

&lt;/center&gt;

&lt;br /&gt;&lt;br /&gt;Pour le fichier debian/rules, il n'y a pas de fabrication de binaires (donc commenter le $(MAKE) de build-stamp). Le reste est le script par défaut. &lt;br /&gt;&lt;br /&gt;Le fichier debian/control contient les paquets rajoutés sur les machines au fur et à mesure de leur évolution:

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;Source: lycee &lt;br /&gt;[.....] &lt;br /&gt;Package: lycee &lt;br /&gt;Architecture: any &lt;br /&gt;Depends: ${shlibs:Depends}, ${misc:Depends}, camllight (&amp;gt;= 0.75-2), ntpdate, fingerd, sun-j2re1.4, tuareg-mode &lt;br /&gt;Description: paquet de MAJ Lycee &lt;br /&gt; Mise à jour incrémentale des systèmes Linux
|}

&lt;/center&gt;

&lt;br /&gt;&lt;br /&gt;Ici j'ai rajouté camllight, le mode tuareg pour caml, un java, ntpdate pour synchroniser les machines et fingerd pour savoir qui travaille et quand sur les machines (c'est mon coté bigbrother qu'il faut bien assumer). &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Enfin, le fichier debian/postinst exécute les différents patchs éventuels:

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;... &lt;br /&gt;case &quot;$1&quot; in &lt;br /&gt;    configure) &lt;br /&gt;# remplacement de maj &lt;br /&gt;    cp /etc/apt/maj /etc/init.d &lt;br /&gt;    chmod +x /etc/init.d/maj &lt;br /&gt;        update-rc.d maj defaults 99 &lt;br /&gt;# exécution patch1 &lt;br /&gt;    if [ ! -f /etc/lycee/patch1 ] ; then &lt;br /&gt;        mkdir -p /etc/lycee/ &lt;br /&gt;        touch /etc/lycee/patch1 &lt;br /&gt;# là mettre les commandes du patch1, ici remplacement logo &lt;br /&gt;        cd /etc/X11/xdm/pixmaps &lt;br /&gt;        rm tux.xpm &lt;br /&gt;        ln -s /var/lycee/tux.xpm &lt;br /&gt;        echo &quot;Patch1 appliqué&quot; &lt;br /&gt;&lt;br /&gt;    fi &lt;br /&gt;        ;; &lt;br /&gt;    abort-upgrade|abort-remove|abort-deconfigure) &lt;br /&gt;&lt;br /&gt;    ;; &lt;br /&gt;&lt;br /&gt;    *) &lt;br /&gt;        echo &quot;postinst called with unknown argument \`$1'&quot; &amp;gt;&amp;amp;2 &lt;br /&gt;        exit 1 &lt;br /&gt;    ;; &lt;br /&gt;esac &lt;br /&gt;...
|}

&lt;/center&gt;

&lt;br /&gt;&lt;br /&gt;Pour faire une mise à jour sur les machines, il suffit donc de mettre à jour le dépot local et tout se fera automatiquement. Cela a remplacé avantageusement le rapatriement automatique de scripts. Ça montre bien la puissance du paquetage .deb qui permet vraiment de tout faire très simplement &lt;br /&gt;&lt;br /&gt;&lt;u&gt;'''4) Fabrication rapide de backports.'''&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Le problème s'est posé pour moi pour clamav avant la mise en place de debian/volatile (que je n'utilise pas du coup). clamav fait des maj régulièrement et mon serveur était sous potato puis est maintenant sous woody (je n'ai pas le temps ni le vrai désir de passer sous sarge). Il s'agit donc de faire des backports de clamav. Il se trouve que Stephen Gran a fait un paquet très propre (en tout cas la version 0.80), lors des mise à jour je procède comme suit: &lt;br /&gt;&lt;br /&gt;Mettons que je parte de la version 0.80 &lt;br /&gt;0) Récupération de l'arborescence debian de ce paquet &lt;br /&gt;1) rapatriement de l'archive source clamav nouvelle &lt;br /&gt;2) dépilage de cette archive et renommage du répertoire en clamav-0.80 &lt;br /&gt;3) Exécution de

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;$ dch -v backport-0.88-4
|}

&lt;/center&gt;

&lt;br /&gt;Le paquet sera dans la version backport-0.88 &lt;br /&gt;4) Compilation

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;$ cd ../clamav-0.88-4 &lt;br /&gt;$ fakeroot dpkg-buildpackage -us -uc
|}

&lt;/center&gt;

&lt;br /&gt;&lt;br /&gt;C'est fini, les nouveaux paquets sont faits. &lt;br /&gt;&lt;br /&gt;Voici les commandes tapés pour le passage de 0.88-2 à 0.88-4:

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;cd &lt;br /&gt;wget http://ovh.dl.sourceforge.net/sourceforge/clamav/clamav-0.88.4.tar.gz &lt;br /&gt;ls clamav* &lt;br /&gt;mv clamav-0.88/ clamav-backport-0.88-2 &lt;br /&gt;tar xzf clamav-0.88.4.tar.gz &lt;br /&gt;tar tzf clamav-0.88.4.tar.gz &lt;br /&gt;mv clamav-0.88.4 clamav-0.88 &lt;br /&gt;cd  clamav-0.88 &lt;br /&gt;cp -dpRf ../clamav-backport-0.88-2/debian/ . &lt;br /&gt;cd .. &lt;br /&gt;cd clamav-0.88 &lt;br /&gt;dch -v backport-0.88-4 &lt;br /&gt;fakeroot dpkg-buildpackage -us -uc &lt;br /&gt;cd .. &lt;br /&gt;ls &lt;br /&gt;ls -ltr &lt;br /&gt;ls *0.88-4*deb &lt;br /&gt;scp *0.88-4*deb cerbere:/home/ftp/sarge/sarge
|}

&lt;/center&gt;

&lt;br /&gt;&lt;br /&gt;C'est tout. Les sources obtenus me permettent de faire les paquets pour woody, sarge amd64, etc. &lt;br /&gt;&lt;br /&gt;Il peut y avoir quelques soucis nécessitant des retouches de debian/rules &lt;br /&gt;&lt;br /&gt;&lt;u&gt;'''5) Fabrication d'un paquet via checkinstall.'''&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;attention, il y a un bug dans la version de checkinstall de lenny, le checkinstall n'existe pas chez etch, on pourra le trouver ici &lt;br /&gt;'''deb http://boisson.homeip.net/debian etch divers'''&lt;br /&gt;Pour contourner le bug, lancer checkinstall avec l'option --fstrans=no &lt;br /&gt;Sinon, checkinstall ne peut construire correctement le paquet si l'installation se fait avec un programme binaire statique.&lt;br /&gt;&lt;br /&gt;Parfois, la méthode dh_make conduit à modifier le Makefile, on ne comprend plus rien et on a juste envie de faire un paquet et pas les paquets sources. Un petit génie a inventer checkinstall (par encore parfait mais bon)... &lt;br /&gt;&lt;br /&gt;Exemple scilab version 4 dont j'avais besoin en urgence (ci dessous de mémoire, c'est reconstitué). &lt;br /&gt;Chargement rapide des sources, configuration classique:

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;$ cd scilab-4.0 &lt;br /&gt;$ ./configure --prefix=/usr &lt;br /&gt;$ make all
|}

&lt;/center&gt;

&lt;br /&gt;bref, du classique. &lt;br /&gt;Là commence checkinstall:

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;$ su &lt;br /&gt;# checkinstall make install &lt;br /&gt;&lt;br /&gt;checkinstall 1.5.3, Copyright 2001 Felipe Eduardo Sanchez Diaz Duran &lt;br /&gt;           This software is released under the GNU GPL. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The package documentation directory ./doc-pak does not exist. &lt;br /&gt;Should I create a default set of package docs?  [y]: &lt;br /&gt;&lt;br /&gt;Preparing package documentation...OK &lt;br /&gt;&lt;br /&gt;Installing with &quot;make install&quot;... &lt;br /&gt;&lt;br /&gt;========================= Installation results =========================== &lt;br /&gt;&lt;br /&gt;Copying documentation directory... &lt;br /&gt;[....] &lt;br /&gt;======================== Installation succesful ========================== &lt;br /&gt;&lt;br /&gt;Copying files to the temporary directory...OK &lt;br /&gt;&lt;br /&gt;Striping ELF binaries and libraries...OK &lt;br /&gt;&lt;br /&gt;Compressing man pages...OK &lt;br /&gt;&lt;br /&gt;Building file list...OK &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Please write a description for the package. &lt;br /&gt;End your description with an empty line or EOF. &lt;br /&gt;&amp;gt;&amp;gt;
|}

&lt;/center&gt;

&lt;br /&gt;là on tape la description du paquet suivi d'une ligne vide

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;&amp;gt;&amp;gt; Scilab version 4 du 9 juillet 2006 &lt;br /&gt;&amp;gt;&amp;gt;
|}

&lt;/center&gt;

&lt;br /&gt;S'en suit les parties identifiant le paquet. On les remplit en tapant le numéro de la catégorie à modifier puis le texte correspondant.

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;This package will be built according to these values: &lt;br /&gt; le numéro et en remplissant &lt;br /&gt;0 -  Maintainer: [ [mailto:francois@boisson.homeip.net francois@chez.moi] ] &lt;br /&gt;1 -  Summary: [ Scilab version 4 du 9 juillet 2006 ] &lt;br /&gt;2 -  Name:    [ scilab ] &lt;br /&gt;3 -  Version: [ 1.0 ] &lt;br /&gt;4 -  Release: [ 1 ] &lt;br /&gt;5 -  License: [ GPL ] &lt;br /&gt;6 -  Group:   [ agreg ] &lt;br /&gt;7 -  Architecture: [ i386 ] &lt;br /&gt;8 -  Source location: [ scilab ] &lt;br /&gt;9 -  Alternate source location: [  ] &lt;br /&gt;&lt;br /&gt;Enter a number to change any of them or press ENTER to continue: &lt;br /&gt;&lt;br /&gt;***************************************** &lt;br /&gt;**** Debian package creation selected *** &lt;br /&gt;***************************************** &lt;br /&gt;&lt;br /&gt;Building Debian package...OK &lt;br /&gt;&lt;br /&gt;Installing Debian package... &lt;br /&gt;&lt;br /&gt;Erasing temporary files...OK &lt;br /&gt;&lt;br /&gt;Writing backup package...OK &lt;br /&gt;&lt;br /&gt;Deleting temp dir...OK &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;********************************************************************** &lt;br /&gt;&lt;br /&gt; Done. The new package has been installed and saved to &lt;br /&gt; /tmp/scilab/scilab_4.0_i386.deb &lt;br /&gt;&lt;br /&gt; You can remove it from your system anytime using: &lt;br /&gt;&lt;br /&gt;      dpkg -r scilab &lt;br /&gt;&lt;br /&gt;********************************************************************** &lt;br /&gt;&lt;br /&gt;#
|}

&lt;/center&gt;

&lt;br /&gt;&lt;br /&gt;Là on se dit c'est fini, eh ben non. checkinstall ne crée pas les dépendances. On peut les faire on modifiant les dépendances à la main. Pour cela, on utilisera le script suivant:

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;/usr/local/bin/lsdepend: &lt;br /&gt;&lt;br /&gt;#!/bin/sh &lt;br /&gt;find . -type f | xargs ldd 2&amp;gt; /dev/null | &lt;br /&gt; sed -e '1,$s/=.*//' | &lt;br /&gt; sed -e '1,$s/^ */dpkg -S /' | grep -v &quot;:&quot; | &lt;br /&gt; grep &quot;\.so&quot; | &lt;br /&gt; sort -u | sh | &lt;br /&gt; sed -e '1,$s/:.*//' | &lt;br /&gt; sort -u | &lt;br /&gt; sed -e '1,$s/^/dpkg -l | grep &quot;^[a-zA-Z]\\{2\\} * /' | sed -e '1,$s/$/ &quot;/' |sh
|}

&lt;/center&gt;

&lt;br /&gt;&lt;br /&gt;On fait donc tout d'abord l'extraction des fichiers du paquet dans un répertoire (ici gre).

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;$ mkdir gre &lt;br /&gt;$ cd gre &lt;br /&gt;$ dpkg-deb -e ../scilab_4.0_i386.deb &lt;br /&gt;$ dpkg-deb -x ../scilab_4.0_i386.deb .
|}

&lt;/center&gt;

&lt;br /&gt;La troisième commande fabrique un répertoire DEBIAN contenant un seul fichier control contenant

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;Package: scilab &lt;br /&gt;Priority: extra &lt;br /&gt;Section: agreg &lt;br /&gt;Installed-Size: 104436 &lt;br /&gt;Maintainer: [mailto:francois@boisson.homeip.net francois@chez.moi]&lt;br /&gt;Architecture: i386 &lt;br /&gt;Version: 4.0-1 &lt;br /&gt;Description: Scilab version 4 du 9 juillet 2006
|}

&lt;/center&gt;

&lt;br /&gt;(La quatrième commande déplie l'archive des fichiers du paquet) &lt;br /&gt;Pas de champ Depends dans ce fichier Control, donc de la pagaille et des déconvenues à prévoir. Pour cela on peut avoir une idée des paquets nécessaires avec le script lsdepend. Celui ci cherche les librairies appelées et donne la liste des paquets nécessaires. Ainsi ici, sachant que les bianires sont dans usr/lib/scilab-4.0/bin/

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;$ cd /usr/lib/scilab-4.0/bin/ &lt;br /&gt;francois@totoche:/usr/lib/scilab-4.0/bin$ lsdepend &lt;br /&gt;ii  libc6          2.3.2.ds1-22   GNU C Library: Shared libraries and Timezone &lt;br /&gt;ii  libg2c0        3.3.5-13       Runtime library for GNU Fortran 77 applicati &lt;br /&gt;ii  libgcc1        3.4.3-12       GCC support library &lt;br /&gt;ii  libice6        4.3.0.dfsg.1-1 Inter-Client Exchange library &lt;br /&gt;ii  libncurses5    5.4-4          Shared libraries for terminal handling &lt;br /&gt;ii  libsm6         4.3.0.dfsg.1-1 X Window System Session Management library &lt;br /&gt;ii  libx11-6       4.3.0.dfsg.1-1 X Window System protocol client library &lt;br /&gt;ii  libxext6       4.3.0.dfsg.1-1 X Window System miscellaneous extension libr &lt;br /&gt;ii  libxmu6        4.3.0.dfsg.1-1 X Window System miscellaneous utility librar &lt;br /&gt;ii  libxpm4        4.3.0.dfsg.1-1 X pixmap library &lt;br /&gt;ii  libxt6         4.3.0.dfsg.1-1 X Toolkit Intrinsics &lt;br /&gt;ii  maple4         1.0-1          Paquet Maple4 &lt;br /&gt;ii  tcl8.4         8.4.9-1        Tcl (the Tool Command Language) v8.4 - run-t &lt;br /&gt;ii  tk8.4          8.4.9-1        Tk toolkit for Tcl and X11, v8.4 - run-time &lt;br /&gt;ii  xaw3dg         1.5+E-8        Xaw3d widget set &lt;br /&gt;francois@totoche:/usr/lib/scilab-4.0/bin$
|}

&lt;/center&gt;

&lt;br /&gt;Le paquet maple4 est une hérésie non libre inutile (doublon) qu'on oublie, cela nous donne le champ Depends suivant:

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;Depends: libc6, tk8.4, tcl8.4, xaw3dg, libxmu6, libxt6, libxext6, libsm6, libice6, libx11-6, libncurses5, libg2c0, libgcc1, libxpm4
|}

&lt;/center&gt;

&lt;br /&gt;et le fichier DEBIAN/control suivant

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;Package: scilab &lt;br /&gt;Priority: extra &lt;br /&gt;Section: agreg &lt;br /&gt;Installed-Size: 104436 &lt;br /&gt;Maintainer: [mailto:francois@boisson.homeip.net francois@chez.moi]&lt;br /&gt;Architecture: i386 &lt;br /&gt;Depends: libc6, tk8.4, tcl8.4, xaw3dg, libxmu6, libxt6, libxext6, libsm6, libice6, libx11-6, libncurses5, libg2c0, libgcc1, libxpm4 &lt;br /&gt;Version: 4.0-1 &lt;br /&gt;Description: Scilab version 4 du 9 juillet 2006
|}

&lt;/center&gt;

&lt;br /&gt;&lt;br /&gt;On peut éventuellement créer un fichier DEBIAN/postinst et DEBIAN/prerm si on veut éxécuter un script juste après l'installation ou un script avant la désinstallation. Il ne reste plus qu'à refaire le paquet:

&lt;center&gt;

{| width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;
|
'''Code:'''
|-
|
&lt;br /&gt;$ cd .. &lt;br /&gt;$  dpkg-deb -b gre scilab_4.0_i386.deb &lt;br /&gt;dpkg-deb : construction du paquet « scilab » dans « scilab_4.0_i386.deb ». &lt;br /&gt;francois@totoche:/tmp$
|}

&lt;/center&gt;

&lt;br /&gt;&lt;br /&gt;et voilà le beau paquet scilab avec ses dépendances (du moins on l'espère). Bien évidemment, c'est rustique comme méthode mais cela permet de dupliquer une installation facilement et cela constitue une alternative pratique et rapide à la méthode classique sans sombrer dans les méandres d'un debian/rules ne fonctionnant pas...

&lt;br /&gt;&lt;br /&gt;6) Recompilation

Pour le coup c'est très simple. Il suffit de charger les sources, modifier eventuellement les options et recompiler le paquet. Soit donc pour le paquet paquet-1.23-6_i386.deb &lt;br /&gt;&lt;br /&gt;Code:&lt;br /&gt;$ apt-get source paquet&lt;br /&gt;$ cd paquet-1.23&lt;br /&gt;$ emacs debian/rules &lt;br /&gt;&lt;br /&gt;(là chercher les options, regarder pres de la cible configure_stamp: ou build_stamp: et les modifier) &lt;br /&gt;&lt;br /&gt;Code:&lt;br /&gt;$ fakeroot dpkg-buildpackage -b -uc&lt;br /&gt;$ cd ..&lt;br /&gt;$ ls *.deb&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Le paquet est prêt.

&lt;br /&gt;'''&lt;u&gt;&lt;/u&gt;'''

'''&lt;u&gt;7) Fabrication directe.&lt;/u&gt;'''

'''&lt;u&gt;&lt;/u&gt;'''&lt;u&gt;&lt;/u&gt;

Un paquet peut être fait simplement. Pour cela

* Préparer l'arborescence des fichiers composant le paquet dans un répertoire /tmp/paquet.
* Faire un répertoire /tmp/paquet/DEBIAN
* Y mettre dedans un fichier control de la forme&lt;br /&gt;Package: nomdupaquet&lt;br /&gt;Priority: optional&lt;br /&gt;Section: x11&lt;br /&gt;Installed-Size: 4023 (si le paquet fait 4023K environ)&lt;br /&gt;Maintainer: Georges Sand &amp;lt;aurore.dupin@chopin.muses.fr&amp;gt;&lt;br /&gt;Architecture: all&lt;br /&gt;Version: 1.0&lt;br /&gt;Depends: xbase-clients&lt;br /&gt;Description: Modifications de startx&lt;br /&gt; Lancement de X différent&lt;br /&gt; .
* Y mettre éventuellement un fichier '''postinst''' (éxécutable) pour les éventuels instructions à faire après l'installation. Dans le cas où un fichier d'un paquet est modifié (mettons startx ici) il est important de faire une «diversion», ce qui se fait par un fichier '''preinst '''&lt;span&gt;comme suit&lt;/span&gt;:&lt;br /&gt;set -e&lt;br /&gt;case &quot;$1&quot; in&lt;br /&gt; install)&lt;br /&gt; dpkg-divert --package nomdupaquet --divert /usr/bin/startx.org --rename /usr/bin/startx&lt;br /&gt; dpkg-divert --package nomdupaquet --divert /usr/X11R6/bin/startx.org --rename /usr/X11R6/bin/startx&lt;br /&gt; ;;&lt;br /&gt; abort-upgrade)&lt;br /&gt; ;;&lt;br /&gt; upgrade)&lt;br /&gt; ;;&lt;br /&gt; *)&lt;br /&gt; echo &quot;preinst called with unknown argument \`$1'&quot; &amp;gt;&amp;amp;2&lt;br /&gt; exit 1&lt;br /&gt; ;;&lt;br /&gt;esac&lt;br /&gt;exit 0&lt;br /&gt;&lt;br /&gt;et bien sûr un fichier '''postrm'''&lt;span&gt; supprimant la diversion en cas de retrait du paquet:&lt;br /&gt;&lt;br /&gt;set -e&lt;br /&gt;case &quot;$1&quot; in&lt;br /&gt; remove|purge)&lt;br /&gt; dpkg-divert --package xbase-agreg --rename --remove /usr/X11R6/bin/startx&lt;br /&gt; dpkg-divert --package xbase-agreg --rename --remove /usr/bin/startx&lt;br /&gt;&lt;br /&gt; ;;&lt;br /&gt; upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)&lt;br /&gt; ;;&lt;br /&gt; *)&lt;br /&gt; echo &quot;postrm called with unknown argument \`$1'&quot; &amp;gt;&amp;amp;2&lt;br /&gt; exit 0&lt;br /&gt;esac&lt;/span&gt;
* &lt;span&gt;faire ensuite &lt;br /&gt;$ cd /tmp/paquet&lt;br /&gt;$ find . -type f | grep -v &quot;^./DEBIAN&quot; | md5sum &amp;gt; DEBIAN/md5sums&lt;br /&gt;$ su&lt;br /&gt;# chown -R root.root *&lt;br /&gt;# dpkg-deb -b . ../nomdupaquet-1.0_all.deb&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;
* &lt;span&gt;Le paquet est prêt.&lt;/span&gt;

[[Category:Paquets]]</text>
      <sha1>3lmkxbupmuzvi4u95kewq102lm2xmds</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>137</id>
      <parentid>133</parentid>
      <timestamp>2010-01-23T10:54:41Z</timestamp>
      <contributor>
        <username>Fran.b</username>
        <id>13</id>
      </contributor>
      <text xml:space="preserve" bytes="22302">== Présentation ==
Ce petit memento comporte 5 parties: 

# Fabrication d'un paquet élémentaire (vikings)
# Fabrication d'un paquet plus compliqué avec compilation (cacheproc)
# Exemple d'un paquet de scripts de mise à jour
# Le rétroportage vite fait, bien ou mal fait
# ./configure;make;make install et paquet debian...
# Recompilation
# Fabrication directe.


'''Les sources et les résultats de ces paquets se trouve sur'''&lt;br /&gt;
'''deb http://boisson.homeip.net/sarge/ ./'''&lt;br /&gt;
'''deb http://boisson.homeip.net/source ./'''&lt;br /&gt;


== Un exemple très simple: vikings ==

'''On ne travaille PAS sous root'''

Ce paquet contient une arborescence /usr/games/lost et un script /usr/games/vik. Les fichiers sont tout prêts et n'ont pas besoin de préparation.

* faire un répertoire /tmp/vikings-1.0
* Y mettre vik et le répertoire lost
* Faire


&lt;pre&gt;
$ cd /tmp
$ cd vikings-1.0/
$ dh_make
&lt;/pre&gt;


dh_make pose la question de savoir si c'est un paquet simple (oui), multiple, librairie ou module noyau. Il crée un répertoire debian et un répertoire /tmp/vikings-1.0.orig permettant de faire le fichier .diff.gz (les paquets sources contiennet en général les sources initiaux, un fichier .diff rajoutant l'arborescence et les patchs debian et un fichier .dsc décrivant le paquet). ''A ce stade, il est important de noter que seules des modifications de textes sont permises. Si un binaire est modifié dans le paquet source, il est nécessaire de supprimer le répertoire /tmp/vikings-1.0.orig, les sources seront alors composés d'un fichier .tar.gz et d'un fichier .dsc (pas de diff.gz),''&lt;br /&gt;
Puis viennent les éditions


&lt;pre&gt;
$ emacs debian/control
&lt;/pre&gt;


Mettre à jour les champs Description, et éventuellement Depends. Ici, le paquet dépend de dosbox donc remplacer


&lt;pre&gt;
Depends: ${shlibs:Depends}, ${misc:Depends}
&lt;/pre&gt;


par


&lt;pre&gt;
Depends: dosbox
&lt;/pre&gt;


(la syntaxe est paquet, paquet, ...)&lt;br /&gt;
Faire


&lt;pre&gt;
$ emacs debian/rules
&lt;/pre&gt;


Ce fichier est essentiel car contenant les instructions permettant de faire le paquet. Ici, il n'y a pas de Makefile donc virer ou commenter les lignes contenant $(MAKE), puis remplacer la ligne


&lt;pre&gt;
        $(MAKE) install DESTDIR=$(CURDIR)/debian/vikings
&lt;/pre&gt;


par


&lt;pre&gt;
        cp -dpRf vik lost $(CURDIR)/debian/vikings/usr/games
&lt;/pre&gt;


''Le répertoire de travail est /tmp/vikings-1.0=CURDIR, $(CURDIR)/debian/vikings contient l'arborescence du paquet à venir''. Il est parfois bon de faire au préalable


&lt;pre&gt;
        mkdir -p $(CURDIR)/debian/vikings/usr/games
        cp -dpRf vik lost $(CURDIR)/debian/vikings/usr/games
&lt;/pre&gt;


Pour créer le répertoire. Une autre méthode plus simple consiste à déclarer le répertoire dans debian/dirs


&lt;pre&gt;
$ emacs debian/dirs
&lt;/pre&gt;


(Y mettre usr/games et virer le reste). Faire


&lt;pre&gt;
$ emacs debian/copyright
&lt;/pre&gt;


pour y mettre la licence. Ici j'ai complété par &lt;br /&gt;
«It was downloaded from abandonnia». Faire de même pour README.debian &lt;br /&gt;
Ces fichiers debian/README.debian et debian/copyright se retrouvent toujours et sont copiés sur /usr/share/doc/&amp;lt;paquet&amp;gt;/. Usuellement, on rajoute un fichier README de doc.


Faire enfin

&lt;pre&gt;
$ fakeroot dpkg-buildpackage -us -uc
&lt;/pre&gt;


qui fabrique les paquets sources et le .deb. &lt;br /&gt;
Supposons que damned, faute de frappe et le paquet plante, dans ce cas, repartir de sources propres:


&lt;pre&gt;
$ cd ..
$ rm -Rf vikings-1.0/
$ dpkg-source -x vikings_1.0-1.dsc
$ cd vikings-1.0/
$ emacs [le fichier fautif (Makefile ou debian/rules souvent)]
$ fakeroot dpkg-buildpackage -us -uc
&lt;/pre&gt;


Le paquet vikings_1.0-1_i386.deb est cré dans la racine. 

== Un deuxième exemple: cacheproc ==

cacheproc est un petit programme recherchant des processus cachés, il est écrit en camllight. Il se compose de

&lt;pre&gt;
-rw-r--r--  1 francois src 2474 2004-01-19 22:08 chercheprocess.ml
-rw-r--r--  1 francois src  707 2004-01-19 22:22 Makefile
-rw-r--r--  1 francois src 1450 2004-01-19 22:32 README
-rw-r--r--  1 francois src 1936 2004-01-19 22:08 regarde.ml
&lt;/pre&gt;

On procède comme ci dessus (dh_make, etc), l'idéal étant de modifier le moins possible debian/rules en utilisant le Makefile.&lt;br /&gt;
README est un fichier sommaire de docs. Je le copie sur debian/README.debian (ce qui est une mauvaise idée mais bon, c'était un de mes premiers paquets)&lt;br /&gt;
a) le fichier debian/control&lt;br /&gt;
Outre les rubriques usuelles, rajouter camllight dans le Build-Depends:

&lt;pre&gt;
Build-Depends: debhelper (&amp;gt;&amp;gt; 3.0.0), camllight
&lt;/pre&gt;

''(J'oublie tout le temps, dsl)''&lt;br /&gt;
b) mettre usr/bin dans debian/dirs (c'est là où seront les binaires) &lt;br /&gt;
c) Dans debian/rules mettre

&lt;pre&gt;
       $(MAKE) all
&lt;/pre&gt;

au lieu de $(MAKE) dans le build-stamp et commenter le dh_strip (les objets caml supporte mal le strip (=compression de l'exe)).&lt;br /&gt;
Reste donc à faire le Makefile. J'utilise un Makefile «générique» que je modifie à la demande. Il contient

&lt;pre&gt;
#!/usr/bin/make
prefix          = /usr
exec_prefix     = ${prefix}
srcdir          = .

bindir          = ${exec_prefix}/bin
DESTDIR=

INSTALL_LIST_BIN=regarde chercheprocess

distclean: clean

clean:
        -rm *.zi *.zo *~
        for i in $(INSTALL_LIST_BIN); do if test -f $$i; then rm $$i; fi; done

install:
        for i in $(DESTDIR)$(bindir); do mkdir -p $$i &amp;amp;&amp;amp; test -d $$i &amp;amp;&amp;amp; test -w $$i; done
        for i in $(INSTALL_LIST_BIN); do if test -f $$i; then cp $$i $(DESTDIR)$(bindir); else cp $(srcdir)/$$i $(DESTDIR)$(bindir); fi; done


all: chercheprocess regarde

chercheprocess: chercheprocess.ml
        camlc -custom -o chercheprocess -lunix chercheprocess.ml

regarde: regarde.ml
        camlc -custom -o regarde -lunix regarde.ml
&lt;/pre&gt;

Les lignes importantes sont INSTALL_LIST_BIN=.. donnant la liste des binaires à obtenir. Les cibles sont clean, all et install.&lt;br /&gt;
'''clean''' nettoie les fichiers objets (noter le -rm et non rm qui évite l'erreur si il n'y a pas de fichier objet, ''on peut se demander pourquoi je n'ai pas fait pareil pour les binaires mais bon...'')&lt;br /&gt;
'''install''' installe les binaires dans le répertoire $(DESTDIR)$(bindir), donc ici on crée le répertoire, on vérifie qu'il y a les bons droits, puis on y copie les binaires de la liste INSTALL_LIST_BIN (à noter que dans mon script, j'ai prévu le cas où il y a un répertoire source séparé).&lt;br /&gt;
'''all''' renvoie sur 2 cibles, une par binaire. Chaque cible fabrique le binaire correspondant.&lt;br /&gt;
Le reste est comme dans 1) 

== Un paquet de mis à jour pour gérer un parc de machines. ==

Ce genre de paquet est très utile pour répercuter des patchs sur un lot de machines (salle) toutes indentiques.

Pour cela on utilise un script /etc/init.d/maj contenant dans la rubrique start

&lt;pre&gt;
        echo -n &quot;Starting $DESC: $NAME&quot;
        cp /etc/apt/sources.list.lycee /etc/apt/sources.list
        apt-get update
        apt-get install -y lycee
        cp /etc/apt/sources.list.vrai /etc/apt/sources.list
        echo &quot;.&quot;
   # rajout éventuel de compléments
&lt;/pre&gt;


puis on fait

&lt;pre&gt;
$ chmod +x /etc/init.d/maj
$ update-rc.d maj defaults 99
&lt;/pre&gt;

/etc/apt/sources.list.lycee &lt;br /&gt;
contient une ligne &lt;br /&gt;
deb file:/home/ftp/ / &lt;br /&gt;
qui est ici un dépot partagé via nfs. 


Le paquet pris en exemple est celui qui me permet de gérer les salles du lycée où je travaille. A l'heure actuelle il contient

&lt;pre&gt;
tux.xpm autoexec.bat  init.reg  lomount  maj  Makefile  repareW98  sources.list.lycee
&lt;/pre&gt;


Il faut savoir que les logiciels de chimie utilisés par les élèves tournent sur un Windows98 dans un qemu (les machines sont des amd64). Comme prévus les patchs concernent surtout windows98. On y trouve un nouvel autoexex.bat, un fichier init.reg à mettre dans la racine du disque virtuel windows. Pour cela un utilitaire lomount (dont j'ai fini par faire un paquet) permet de monter des partitions d'une image d'un disque hda par exemple. repareW98 est un script qui remplace l'image du disque virtuel par une image neuve et y applique les patches. Quand l'élève plante le Windows (en gros toutes les deux heures), il clique sur une icone «repareWindows», et relance un windows tout neuf. Il a perdu tout son boulot ce qui a l'avantage de l'éduquer sur Windows. Voilà pour l'explication du contexte.


Le paquet à faire doit donc à chaque installation installer la nouvelle version de maj, appliquer d'éventuels patchs et installer les fichiers ci dessus dans les bonnes places.&lt;br /&gt;
Comme précédemment, l'installation des fichiers se fait par le Makefile:

&lt;pre&gt;
#!/usr/bin/make
prefix          = /usr
exec_prefix     = ${prefix}
srcdir          = .

bindir          = ${exec_prefix}/bin
DESTDIR=


distclean: clean

clean:

install:
        mkdir -p $(DESTDIR)/etc/init.d
        mkdir -p $(DESTDIR)/etc/apt/
        mkdir -p $(DESTDIR)/usr/local/bin
        mkdir -p $(DESTDIR)/usr/local/windows
        cp -dpf maj $(DESTDIR)/etc/apt
        cp sources.list.lycee $(DESTDIR)/etc/apt/
        cp lomount $(DESTDIR)/usr/local/bin
        cp repareW98 $(DESTDIR)/usr/local/bin
   cp tux.xpm   $(DESTDIR)/var/lycee
        chmod +x $(DESTDIR)/usr/local/bin/*
        cp init.reg autoexec.bat $(DESTDIR)/usr/local/windows
&lt;/pre&gt;



Pour le fichier debian/rules, il n'y a pas de fabrication de binaires (donc commenter le $(MAKE) de build-stamp). Le reste est le script par défaut.


Le fichier debian/control contient les paquets rajoutés sur les machines au fur et à mesure de leur évolution:

&lt;pre&gt;
Source: lycee
[.....]
Package: lycee
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, camllight (&amp;gt;= 0.75-2), ntpdate, fingerd, sun-j2re1.4, tuareg-mode
Description: paquet de MAJ Lycee
Mise à jour incrémentale des systèmes Linux
&lt;/pre&gt;


Ici j'ai rajouté camllight, le mode tuareg pour caml, un java, ntpdate pour synchroniser les machines et fingerd pour savoir qui travaille et quand sur les machines (c'est mon coté bigbrother qu'il faut bien assumer).


Enfin, le fichier debian/postinst exécute les différents patchs éventuels:

&lt;pre&gt;
...
case &quot;$1&quot; in
    configure)
# remplacement de maj
    cp /etc/apt/maj /etc/init.d
    chmod +x /etc/init.d/maj
        update-rc.d maj defaults 99
# exécution patch1
    if [ ! -f /etc/lycee/patch1 ] ; then
        mkdir -p /etc/lycee/
        touch /etc/lycee/patch1
# là mettre les commandes du patch1, ici remplacement logo
        cd /etc/X11/xdm/pixmaps
        rm tux.xpm
        ln -s /var/lycee/tux.xpm
        echo &quot;Patch1 appliqué&quot;

    fi
        ;;
    abort-upgrade|abort-remove|abort-deconfigure)

    ;;

    *)
        echo &quot;postinst called with unknown argument \`$1'&quot; &amp;gt;&amp;amp;2
        exit 1
    ;;
esac
...
&lt;/pre&gt;



Pour faire une mise à jour sur les machines, il suffit donc de mettre à jour le dépot local et tout se fera automatiquement. Cela a remplacé avantageusement le rapatriement automatique de scripts. Ça montre bien la puissance du paquetage .deb qui permet vraiment de tout faire très simplement

== Fabrication rapide de backports. ==

Le problème s'est posé pour moi pour clamav avant la mise en place de debian/volatile (que je n'utilise pas du coup). clamav fait des maj régulièrement et mon serveur était sous potato puis est maintenant sous woody (je n'ai pas le temps ni le vrai désir de passer sous sarge). Il s'agit donc de faire des backports de clamav. Il se trouve que Stephen Gran a fait un paquet très propre (en tout cas la version 0.80), lors des mise à jour je procède comme suit:


Mettons que je parte de la version 0.80 &lt;br /&gt;
0) Récupération de l'arborescence debian de ce paquet &lt;br /&gt;
1) rapatriement de l'archive source clamav nouvelle &lt;br /&gt;
2) dépilage de cette archive et renommage du répertoire en clamav-0.80 &lt;br /&gt;
3) Exécution de

&lt;pre&gt;
$ dch -v backport-0.88-4
&lt;/pre&gt;


Le paquet sera dans la version backport-0.88 &lt;br /&gt;4) Compilation

&lt;pre&gt;
$ cd ../clamav-0.88-4
$ fakeroot dpkg-buildpackage -us -uc
&lt;/pre&gt;


C'est fini, les nouveaux paquets sont faits.


Voici les commandes tapés pour le passage de 0.88-2 à 0.88-4:

&lt;pre&gt;
cd
wget http://ovh.dl.sourceforge.net/sourceforge/clamav/clamav-0.88.4.tar.gz
ls clamav*
mv clamav-0.88/ clamav-backport-0.88-2
tar xzf clamav-0.88.4.tar.gz
tar tzf clamav-0.88.4.tar.gz
mv clamav-0.88.4 clamav-0.88
cd  clamav-0.88
cp -dpRf ../clamav-backport-0.88-2/debian/ .
cd ..
cd clamav-0.88
dch -v backport-0.88-4
fakeroot dpkg-buildpackage -us -uc
cd ..
ls
ls -ltr
ls *0.88-4*deb
scp *0.88-4*deb cerbere:/home/ftp/sarge/sarge
&lt;/pre&gt;


C'est tout. Les sources obtenus me permettent de faire les paquets pour woody, sarge amd64, etc.


Il peut y avoir quelques soucis nécessitant des retouches de debian/rules 


== Fabrication d'un paquet via checkinstall. ==

attention, il y a un bug dans la version de checkinstall de lenny, le checkinstall n'existe pas chez etch, on pourra le trouver ici &lt;br /&gt;
'''deb http://boisson.homeip.net/debian etch divers'''&lt;br /&gt;
Pour contourner le bug, lancer checkinstall avec l'option --fstrans=no &lt;br /&gt;
Sinon, checkinstall ne peut construire correctement le paquet si l'installation se fait avec un programme binaire statique.


Parfois, la méthode dh_make conduit à modifier le Makefile, on ne comprend plus rien et on a juste envie de faire un paquet et pas les paquets sources. Un petit génie a inventer checkinstall (par encore parfait mais bon)...


Exemple scilab version 4 dont j'avais besoin en urgence (ci dessous de mémoire, c'est reconstitué).&lt;br /&gt;
Chargement rapide des sources, configuration classique:

&lt;pre&gt;
$ cd scilab-4.0
$ ./configure --prefix=/usr
$ make all
&lt;/pre&gt;


bref, du classique.&lt;br /&gt;
Là commence checkinstall:

&lt;pre&gt;
$ su
# checkinstall make install

checkinstall 1.5.3, Copyright 2001 Felipe Eduardo Sanchez Diaz Duran
           This software is released under the GNU GPL.


The package documentation directory ./doc-pak does not exist.
Should I create a default set of package docs?  [y]:

Preparing package documentation...OK

Installing with &quot;make install&quot;...

========================= Installation results ===========================

Copying documentation directory...
[....]
======================== Installation succesful ==========================

Copying files to the temporary directory...OK

Striping ELF binaries and libraries...OK

Compressing man pages...OK

Building file list...OK


Please write a description for the package.
End your description with an empty line or EOF.
&amp;gt;&amp;gt;
&lt;/pre&gt;


là on tape la description du paquet suivi d'une ligne vide

&lt;pre&gt;
&amp;gt;&amp;gt; Scilab version 4 du 9 juillet 2006
&amp;gt;&amp;gt;
&lt;/pre&gt;


S'en suit les parties identifiant le paquet. On les remplit en tapant le numéro de la catégorie à modifier puis le texte correspondant.

&lt;pre&gt;
This package will be built according to these values:
 le numéro et en remplissant
0 -  Maintainer: [ [mailto:francois@boisson.homeip.net francois@chez.moi] ]
1 -  Summary: [ Scilab version 4 du 9 juillet 2006 ]
2 -  Name:    [ scilab ]
3 -  Version: [ 1.0 ]
4 -  Release: [ 1 ]
5 -  License: [ GPL ]
6 -  Group:   [ agreg ]
7 -  Architecture: [ i386 ]
8 -  Source location: [ scilab ]
9 -  Alternate source location: [  ]

Enter a number to change any of them or press ENTER to continue:

*****************************************
**** Debian package creation selected ***
*****************************************

Building Debian package...OK

Installing Debian package...

Erasing temporary files...OK

Writing backup package...OK

Deleting temp dir...OK


**********************************************************************

Done. The new package has been installed and saved to
/tmp/scilab/scilab_4.0_i386.deb

You can remove it from your system anytime using:

      dpkg -r scilab

**********************************************************************

#
&lt;/pre&gt;



Là on se dit c'est fini, eh ben non. checkinstall ne crée pas les dépendances. On peut les faire on modifiant les dépendances à la main. Pour cela, on utilisera le script suivant:

&lt;pre&gt;
/usr/local/bin/lsdepend:

#!/bin/sh
find . -type f | xargs ldd 2&amp;gt; /dev/null |
sed -e '1,$s/=.*//' |
sed -e '1,$s/^ */dpkg -S /' | grep -v &quot;:&quot; |
grep &quot;\.so&quot; |
sort -u | sh |
sed -e '1,$s/:.*//' |
sort -u |
sed -e '1,$s/^/dpkg -l | grep &quot;^[a-zA-Z]\\{2\\} * /' | sed -e '1,$s/$/ &quot;/' |sh
&lt;/pre&gt;


On fait donc tout d'abord l'extraction des fichiers du paquet dans un répertoire (ici gre).

&lt;pre&gt;
$ mkdir gre
$ cd gre
$ dpkg-deb -e ../scilab_4.0_i386.deb
$ dpkg-deb -x ../scilab_4.0_i386.deb .
&lt;/pre&gt;


La troisième commande fabrique un répertoire DEBIAN contenant un seul fichier control contenant

&lt;pre&gt;
Package: scilab
Priority: extra
Section: agreg
Installed-Size: 104436
Maintainer: [mailto:francois@boisson.homeip.net francois@chez.moi]
Architecture: i386
Version: 4.0-1
Description: Scilab version 4 du 9 juillet 2006
&lt;/pre&gt;


(La quatrième commande déplie l'archive des fichiers du paquet)&lt;br /&gt;
Pas de champ Depends dans ce fichier Control, donc de la pagaille et des déconvenues à prévoir. Pour cela on peut avoir une idée des paquets nécessaires avec le script lsdepend. Celui ci cherche les librairies appelées et donne la liste des paquets nécessaires. Ainsi ici, sachant que les bianires sont dans usr/lib/scilab-4.0/bin/

&lt;pre&gt;
$ cd /usr/lib/scilab-4.0/bin/
francois@totoche:/usr/lib/scilab-4.0/bin$ lsdepend
ii  libc6          2.3.2.ds1-22   GNU C Library: Shared libraries and Timezone
ii  libg2c0        3.3.5-13       Runtime library for GNU Fortran 77 applicati
ii  libgcc1        3.4.3-12       GCC support library
ii  libice6        4.3.0.dfsg.1-1 Inter-Client Exchange library
ii  libncurses5    5.4-4          Shared libraries for terminal handling
ii  libsm6         4.3.0.dfsg.1-1 X Window System Session Management library
ii  libx11-6       4.3.0.dfsg.1-1 X Window System protocol client library
ii  libxext6       4.3.0.dfsg.1-1 X Window System miscellaneous extension libr
ii  libxmu6        4.3.0.dfsg.1-1 X Window System miscellaneous utility librar
ii  libxpm4        4.3.0.dfsg.1-1 X pixmap library
ii  libxt6         4.3.0.dfsg.1-1 X Toolkit Intrinsics
ii  maple4         1.0-1          Paquet Maple4
ii  tcl8.4         8.4.9-1        Tcl (the Tool Command Language) v8.4 - run-t
ii  tk8.4          8.4.9-1        Tk toolkit for Tcl and X11, v8.4 - run-time
ii  xaw3dg         1.5+E-8        Xaw3d widget set
francois@totoche:/usr/lib/scilab-4.0/bin$
&lt;/pre&gt;


Le paquet maple4 est une hérésie non libre inutile (doublon) qu'on oublie, cela nous donne le champ Depends suivant:

&lt;pre&gt;
Depends: libc6, tk8.4, tcl8.4, xaw3dg, libxmu6, libxt6, libxext6, libsm6, libice6, libx11-6, libncurses5, libg2c0, libgcc1, libxpm4
&lt;/pre&gt;


et le fichier DEBIAN/control suivant

&lt;pre&gt;
Package: scilab
Priority: extra
Section: agreg
Installed-Size: 104436
Maintainer: [mailto:francois@boisson.homeip.net francois@chez.moi]
Architecture: i386
Depends: libc6, tk8.4, tcl8.4, xaw3dg, libxmu6, libxt6, libxext6, libsm6, libice6, libx11-6, libncurses5, libg2c0, libgcc1, libxpm4
Version: 4.0-1
Description: Scilab version 4 du 9 juillet 2006
&lt;/pre&gt;


On peut éventuellement créer un fichier DEBIAN/postinst et DEBIAN/prerm si on veut éxécuter un script juste après l'installation ou un script avant la désinstallation. Il ne reste plus qu'à refaire le paquet:

&lt;pre&gt;
$ cd ..
$  dpkg-deb -b gre scilab_4.0_i386.deb
dpkg-deb : construction du paquet « scilab » dans « scilab_4.0_i386.deb ».
francois@totoche:/tmp$
&lt;/pre&gt;


et voilà le beau paquet scilab avec ses dépendances (du moins on l'espère). Bien évidemment, c'est rustique comme méthode mais cela permet de dupliquer une installation facilement et cela constitue une alternative pratique et rapide à la méthode classique sans sombrer dans les méandres d'un debian/rules ne fonctionnant pas...


== Recompilation ==

Pour le coup c'est très simple. Il suffit de charger les sources, modifier eventuellement les options et recompiler le paquet. Soit donc pour le paquet paquet-1.23-6_i386.deb

&lt;pre&gt;
$ apt-get source paquet
$ cd paquet-1.23
$ emacs debian/rules
&lt;/pre&gt;

(là chercher les options, regarder pres de la cible configure_stamp: ou build_stamp: et les modifier)

&lt;pre&gt;
$ fakeroot dpkg-buildpackage -b -uc
$ cd ..
$ ls *.deb
&lt;/pre&gt;

Le paquet est prêt.


== Fabrication directe. ==


Un paquet peut être fait simplement. Pour cela

* Préparer l'arborescence des fichiers composant le paquet dans un répertoire /tmp/paquet.
* Faire un répertoire /tmp/paquet/DEBIAN
* Y mettre dedans un fichier control de la forme

&lt;pre&gt;
Package: nomdupaquet
Priority: optional
Section: x11
Installed-Size: 4023 (si le paquet fait 4023K environ)
Maintainer: Georges Sand &amp;lt;aurore.dupin@chopin.muses.fr&amp;gt;
Architecture: all
Version: 1.0
Depends: xbase-clients
Description: Modifications de startx
Lancement de X différent
.
&lt;/pre&gt;

* Y mettre éventuellement un fichier '''postinst''' (éxécutable) pour les éventuels instructions à faire après l'installation. Dans le cas où un fichier d'un paquet est modifié (mettons startx ici) il est important de faire une «diversion», ce qui se fait par un fichier '''preinst ''' comme suit:

&lt;pre&gt;
set -e
case &quot;$1&quot; in
 install)
 dpkg-divert --package nomdupaquet --divert /usr/bin/startx.org --rename /usr/bin/startx
 dpkg-divert --package nomdupaquet --divert /usr/X11R6/bin/startx.org --rename /usr/X11R6/bin/startx
 ;;
 abort-upgrade)
 ;;
 upgrade)
 ;;
 *)
 echo &quot;preinst called with unknown argument \`$1'&quot; &amp;gt;&amp;amp;2
 exit 1
 ;;
esac
exit 0
&lt;/pre&gt;


et bien sûr un fichier '''postrm''' supprimant la diversion en cas de retrait du paquet:

&lt;pre&gt;
set -e
case &quot;$1&quot; in
 remove|purge)
 dpkg-divert --package xbase-agreg --rename --remove /usr/X11R6/bin/startx
 dpkg-divert --package xbase-agreg --rename --remove /usr/bin/startx

 ;;
 upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
 ;;
 *)
 echo &quot;postrm called with unknown argument \`$1'&quot; &amp;gt;&amp;amp;2
 exit 0
esac
&lt;/pre&gt;

* faire ensuite

&lt;pre&gt;
$ cd /tmp/paquet
$ find . -type f | grep -v &quot;^./DEBIAN&quot; | md5sum &amp;gt; DEBIAN/md5sums
$ su
# chown -R root.root *
# dpkg-deb -b . ../nomdupaquet-1.0_all.deb
&lt;/pre&gt;


* Le paquet est prêt.

[[Utilisateur:fran.b|François Boisson]]

[[Category:Paquets]]</text>
      <sha1>18d5he1opsjy8x7884emleo627r8yfz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>215</id>
      <parentid>137</parentid>
      <timestamp>2010-01-23T21:14:13Z</timestamp>
      <contributor>
        <username>Wetaskiwin</username>
        <id>10</id>
      </contributor>
      <minor/>
      <comment>/* Un exemple très simple: vikings */</comment>
      <text xml:space="preserve" bytes="22315">== Présentation ==
Ce petit memento comporte 5 parties: 

# Fabrication d'un paquet élémentaire (vikings)
# Fabrication d'un paquet plus compliqué avec compilation (cacheproc)
# Exemple d'un paquet de scripts de mise à jour
# Le rétroportage vite fait, bien ou mal fait
# ./configure;make;make install et paquet debian...
# Recompilation
# Fabrication directe.


'''Les sources et les résultats de ces paquets se trouve sur'''&lt;br /&gt;
'''deb http://boisson.homeip.net/sarge/ ./'''&lt;br /&gt;
'''deb http://boisson.homeip.net/source ./'''&lt;br /&gt;


== Un exemple très simple : vikings ==

'''On ne travaille PAS sous root'''

Ce paquet contient une arborescence /usr/games/lost et un script /usr/games/vik. Les fichiers sont tout prêts et n'ont pas besoin de préparation.

* Faire un répertoire /tmp/vikings-1.0
* Y mettre vik et le répertoire lost
* Faire


&lt;pre&gt;
$ cd /tmp
$ cd vikings-1.0/
$ dh_make
&lt;/pre&gt;


dh_make pose la question de savoir si c'est un paquet simple (oui), multiple, librairie ou module noyau.
 
Il crée un répertoire debian et un répertoire /tmp/vikings-1.0.orig permettant de faire le fichier .diff.gz (les paquets sources contiennent en général les sources initiaux, un fichier .diff rajoutant l'arborescence et les patchs debian et un fichier .dsc décrivant le paquet). 

''A ce stade, il est important de noter que seules des modifications de textes sont permises. Si un binaire est modifié dans le paquet source, il est nécessaire de supprimer le répertoire /tmp/vikings-1.0.orig, les sources seront alors composées d'un fichier .tar.gz et d'un fichier .dsc (pas de diff.gz),''&lt;br /&gt;

Puis viennent les éditions


&lt;pre&gt;
$ emacs debian/control
&lt;/pre&gt;


Mettre à jour les champs Description, et éventuellement Depends. Ici, le paquet dépend de dosbox donc remplacer


&lt;pre&gt;
Depends: ${shlibs:Depends}, ${misc:Depends}
&lt;/pre&gt;


par


&lt;pre&gt;
Depends: dosbox
&lt;/pre&gt;


(la syntaxe est paquet, paquet, ...)&lt;br /&gt;

Faire


&lt;pre&gt;
$ emacs debian/rules
&lt;/pre&gt;


Ce fichier est essentiel car il contient les instructions permettant de faire le paquet. Ici, il n'y a pas de Makefile donc virer ou commenter les lignes contenant $(MAKE), puis remplacer la ligne


&lt;pre&gt;
        $(MAKE) install DESTDIR=$(CURDIR)/debian/vikings
&lt;/pre&gt;


par


&lt;pre&gt;
        cp -dpRf vik lost $(CURDIR)/debian/vikings/usr/games
&lt;/pre&gt;


''Le répertoire de travail est /tmp/vikings-1.0=CURDIR, $(CURDIR)/debian/vikings contient l'arborescence du paquet à venir''. Il est parfois bon de faire au préalable


&lt;pre&gt;
        mkdir -p $(CURDIR)/debian/vikings/usr/games
        cp -dpRf vik lost $(CURDIR)/debian/vikings/usr/games
&lt;/pre&gt;


Pour créer le répertoire, une autre méthode plus simple consiste à déclarer le répertoire dans debian/dirs


&lt;pre&gt;
$ emacs debian/dirs
&lt;/pre&gt;


(Y mettre usr/games et virer le reste). Faire


&lt;pre&gt;
$ emacs debian/copyright
&lt;/pre&gt;


pour y mettre la licence. Ici j'ai complété par &lt;br /&gt;
«It was downloaded from abandonnia». Faire de même pour README.debian. &lt;br /&gt;
Ces fichiers debian/README.debian et debian/copyright se retrouvent toujours et sont copiés sur /usr/share/doc/&amp;lt;paquet&amp;gt;/. Usuellement, on rajoute un fichier README de doc.


Faire enfin

&lt;pre&gt;
$ fakeroot dpkg-buildpackage -us -uc
&lt;/pre&gt;


qui fabrique les paquets sources et le .deb. &lt;br /&gt;
Supposons que damned, faute de frappe et le paquet plante. Dans ce cas, repartir de sources propres:


&lt;pre&gt;
$ cd ..
$ rm -Rf vikings-1.0/
$ dpkg-source -x vikings_1.0-1.dsc
$ cd vikings-1.0/
$ emacs [le fichier fautif (Makefile ou debian/rules souvent)]
$ fakeroot dpkg-buildpackage -us -uc
&lt;/pre&gt;


Le paquet vikings_1.0-1_i386.deb est créé dans la racine.

== Un deuxième exemple: cacheproc ==

cacheproc est un petit programme recherchant des processus cachés, il est écrit en camllight. Il se compose de

&lt;pre&gt;
-rw-r--r--  1 francois src 2474 2004-01-19 22:08 chercheprocess.ml
-rw-r--r--  1 francois src  707 2004-01-19 22:22 Makefile
-rw-r--r--  1 francois src 1450 2004-01-19 22:32 README
-rw-r--r--  1 francois src 1936 2004-01-19 22:08 regarde.ml
&lt;/pre&gt;

On procède comme ci dessus (dh_make, etc), l'idéal étant de modifier le moins possible debian/rules en utilisant le Makefile.&lt;br /&gt;
README est un fichier sommaire de docs. Je le copie sur debian/README.debian (ce qui est une mauvaise idée mais bon, c'était un de mes premiers paquets)&lt;br /&gt;
a) le fichier debian/control&lt;br /&gt;
Outre les rubriques usuelles, rajouter camllight dans le Build-Depends:

&lt;pre&gt;
Build-Depends: debhelper (&amp;gt;&amp;gt; 3.0.0), camllight
&lt;/pre&gt;

''(J'oublie tout le temps, dsl)''&lt;br /&gt;
b) mettre usr/bin dans debian/dirs (c'est là où seront les binaires) &lt;br /&gt;
c) Dans debian/rules mettre

&lt;pre&gt;
       $(MAKE) all
&lt;/pre&gt;

au lieu de $(MAKE) dans le build-stamp et commenter le dh_strip (les objets caml supporte mal le strip (=compression de l'exe)).&lt;br /&gt;
Reste donc à faire le Makefile. J'utilise un Makefile «générique» que je modifie à la demande. Il contient

&lt;pre&gt;
#!/usr/bin/make
prefix          = /usr
exec_prefix     = ${prefix}
srcdir          = .

bindir          = ${exec_prefix}/bin
DESTDIR=

INSTALL_LIST_BIN=regarde chercheprocess

distclean: clean

clean:
        -rm *.zi *.zo *~
        for i in $(INSTALL_LIST_BIN); do if test -f $$i; then rm $$i; fi; done

install:
        for i in $(DESTDIR)$(bindir); do mkdir -p $$i &amp;amp;&amp;amp; test -d $$i &amp;amp;&amp;amp; test -w $$i; done
        for i in $(INSTALL_LIST_BIN); do if test -f $$i; then cp $$i $(DESTDIR)$(bindir); else cp $(srcdir)/$$i $(DESTDIR)$(bindir); fi; done


all: chercheprocess regarde

chercheprocess: chercheprocess.ml
        camlc -custom -o chercheprocess -lunix chercheprocess.ml

regarde: regarde.ml
        camlc -custom -o regarde -lunix regarde.ml
&lt;/pre&gt;

Les lignes importantes sont INSTALL_LIST_BIN=.. donnant la liste des binaires à obtenir. Les cibles sont clean, all et install.&lt;br /&gt;
'''clean''' nettoie les fichiers objets (noter le -rm et non rm qui évite l'erreur si il n'y a pas de fichier objet, ''on peut se demander pourquoi je n'ai pas fait pareil pour les binaires mais bon...'')&lt;br /&gt;
'''install''' installe les binaires dans le répertoire $(DESTDIR)$(bindir), donc ici on crée le répertoire, on vérifie qu'il y a les bons droits, puis on y copie les binaires de la liste INSTALL_LIST_BIN (à noter que dans mon script, j'ai prévu le cas où il y a un répertoire source séparé).&lt;br /&gt;
'''all''' renvoie sur 2 cibles, une par binaire. Chaque cible fabrique le binaire correspondant.&lt;br /&gt;
Le reste est comme dans 1) 

== Un paquet de mis à jour pour gérer un parc de machines. ==

Ce genre de paquet est très utile pour répercuter des patchs sur un lot de machines (salle) toutes indentiques.

Pour cela on utilise un script /etc/init.d/maj contenant dans la rubrique start

&lt;pre&gt;
        echo -n &quot;Starting $DESC: $NAME&quot;
        cp /etc/apt/sources.list.lycee /etc/apt/sources.list
        apt-get update
        apt-get install -y lycee
        cp /etc/apt/sources.list.vrai /etc/apt/sources.list
        echo &quot;.&quot;
   # rajout éventuel de compléments
&lt;/pre&gt;


puis on fait

&lt;pre&gt;
$ chmod +x /etc/init.d/maj
$ update-rc.d maj defaults 99
&lt;/pre&gt;

/etc/apt/sources.list.lycee &lt;br /&gt;
contient une ligne &lt;br /&gt;
deb file:/home/ftp/ / &lt;br /&gt;
qui est ici un dépot partagé via nfs. 


Le paquet pris en exemple est celui qui me permet de gérer les salles du lycée où je travaille. A l'heure actuelle il contient

&lt;pre&gt;
tux.xpm autoexec.bat  init.reg  lomount  maj  Makefile  repareW98  sources.list.lycee
&lt;/pre&gt;


Il faut savoir que les logiciels de chimie utilisés par les élèves tournent sur un Windows98 dans un qemu (les machines sont des amd64). Comme prévus les patchs concernent surtout windows98. On y trouve un nouvel autoexex.bat, un fichier init.reg à mettre dans la racine du disque virtuel windows. Pour cela un utilitaire lomount (dont j'ai fini par faire un paquet) permet de monter des partitions d'une image d'un disque hda par exemple. repareW98 est un script qui remplace l'image du disque virtuel par une image neuve et y applique les patches. Quand l'élève plante le Windows (en gros toutes les deux heures), il clique sur une icone «repareWindows», et relance un windows tout neuf. Il a perdu tout son boulot ce qui a l'avantage de l'éduquer sur Windows. Voilà pour l'explication du contexte.


Le paquet à faire doit donc à chaque installation installer la nouvelle version de maj, appliquer d'éventuels patchs et installer les fichiers ci dessus dans les bonnes places.&lt;br /&gt;
Comme précédemment, l'installation des fichiers se fait par le Makefile:

&lt;pre&gt;
#!/usr/bin/make
prefix          = /usr
exec_prefix     = ${prefix}
srcdir          = .

bindir          = ${exec_prefix}/bin
DESTDIR=


distclean: clean

clean:

install:
        mkdir -p $(DESTDIR)/etc/init.d
        mkdir -p $(DESTDIR)/etc/apt/
        mkdir -p $(DESTDIR)/usr/local/bin
        mkdir -p $(DESTDIR)/usr/local/windows
        cp -dpf maj $(DESTDIR)/etc/apt
        cp sources.list.lycee $(DESTDIR)/etc/apt/
        cp lomount $(DESTDIR)/usr/local/bin
        cp repareW98 $(DESTDIR)/usr/local/bin
   cp tux.xpm   $(DESTDIR)/var/lycee
        chmod +x $(DESTDIR)/usr/local/bin/*
        cp init.reg autoexec.bat $(DESTDIR)/usr/local/windows
&lt;/pre&gt;



Pour le fichier debian/rules, il n'y a pas de fabrication de binaires (donc commenter le $(MAKE) de build-stamp). Le reste est le script par défaut.


Le fichier debian/control contient les paquets rajoutés sur les machines au fur et à mesure de leur évolution:

&lt;pre&gt;
Source: lycee
[.....]
Package: lycee
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, camllight (&amp;gt;= 0.75-2), ntpdate, fingerd, sun-j2re1.4, tuareg-mode
Description: paquet de MAJ Lycee
Mise à jour incrémentale des systèmes Linux
&lt;/pre&gt;


Ici j'ai rajouté camllight, le mode tuareg pour caml, un java, ntpdate pour synchroniser les machines et fingerd pour savoir qui travaille et quand sur les machines (c'est mon coté bigbrother qu'il faut bien assumer).


Enfin, le fichier debian/postinst exécute les différents patchs éventuels:

&lt;pre&gt;
...
case &quot;$1&quot; in
    configure)
# remplacement de maj
    cp /etc/apt/maj /etc/init.d
    chmod +x /etc/init.d/maj
        update-rc.d maj defaults 99
# exécution patch1
    if [ ! -f /etc/lycee/patch1 ] ; then
        mkdir -p /etc/lycee/
        touch /etc/lycee/patch1
# là mettre les commandes du patch1, ici remplacement logo
        cd /etc/X11/xdm/pixmaps
        rm tux.xpm
        ln -s /var/lycee/tux.xpm
        echo &quot;Patch1 appliqué&quot;

    fi
        ;;
    abort-upgrade|abort-remove|abort-deconfigure)

    ;;

    *)
        echo &quot;postinst called with unknown argument \`$1'&quot; &amp;gt;&amp;amp;2
        exit 1
    ;;
esac
...
&lt;/pre&gt;



Pour faire une mise à jour sur les machines, il suffit donc de mettre à jour le dépot local et tout se fera automatiquement. Cela a remplacé avantageusement le rapatriement automatique de scripts. Ça montre bien la puissance du paquetage .deb qui permet vraiment de tout faire très simplement

== Fabrication rapide de backports. ==

Le problème s'est posé pour moi pour clamav avant la mise en place de debian/volatile (que je n'utilise pas du coup). clamav fait des maj régulièrement et mon serveur était sous potato puis est maintenant sous woody (je n'ai pas le temps ni le vrai désir de passer sous sarge). Il s'agit donc de faire des backports de clamav. Il se trouve que Stephen Gran a fait un paquet très propre (en tout cas la version 0.80), lors des mise à jour je procède comme suit:


Mettons que je parte de la version 0.80 &lt;br /&gt;
0) Récupération de l'arborescence debian de ce paquet &lt;br /&gt;
1) rapatriement de l'archive source clamav nouvelle &lt;br /&gt;
2) dépilage de cette archive et renommage du répertoire en clamav-0.80 &lt;br /&gt;
3) Exécution de

&lt;pre&gt;
$ dch -v backport-0.88-4
&lt;/pre&gt;


Le paquet sera dans la version backport-0.88 &lt;br /&gt;4) Compilation

&lt;pre&gt;
$ cd ../clamav-0.88-4
$ fakeroot dpkg-buildpackage -us -uc
&lt;/pre&gt;


C'est fini, les nouveaux paquets sont faits.


Voici les commandes tapés pour le passage de 0.88-2 à 0.88-4:

&lt;pre&gt;
cd
wget http://ovh.dl.sourceforge.net/sourceforge/clamav/clamav-0.88.4.tar.gz
ls clamav*
mv clamav-0.88/ clamav-backport-0.88-2
tar xzf clamav-0.88.4.tar.gz
tar tzf clamav-0.88.4.tar.gz
mv clamav-0.88.4 clamav-0.88
cd  clamav-0.88
cp -dpRf ../clamav-backport-0.88-2/debian/ .
cd ..
cd clamav-0.88
dch -v backport-0.88-4
fakeroot dpkg-buildpackage -us -uc
cd ..
ls
ls -ltr
ls *0.88-4*deb
scp *0.88-4*deb cerbere:/home/ftp/sarge/sarge
&lt;/pre&gt;


C'est tout. Les sources obtenus me permettent de faire les paquets pour woody, sarge amd64, etc.


Il peut y avoir quelques soucis nécessitant des retouches de debian/rules 


== Fabrication d'un paquet via checkinstall. ==

attention, il y a un bug dans la version de checkinstall de lenny, le checkinstall n'existe pas chez etch, on pourra le trouver ici &lt;br /&gt;
'''deb http://boisson.homeip.net/debian etch divers'''&lt;br /&gt;
Pour contourner le bug, lancer checkinstall avec l'option --fstrans=no &lt;br /&gt;
Sinon, checkinstall ne peut construire correctement le paquet si l'installation se fait avec un programme binaire statique.


Parfois, la méthode dh_make conduit à modifier le Makefile, on ne comprend plus rien et on a juste envie de faire un paquet et pas les paquets sources. Un petit génie a inventer checkinstall (par encore parfait mais bon)...


Exemple scilab version 4 dont j'avais besoin en urgence (ci dessous de mémoire, c'est reconstitué).&lt;br /&gt;
Chargement rapide des sources, configuration classique:

&lt;pre&gt;
$ cd scilab-4.0
$ ./configure --prefix=/usr
$ make all
&lt;/pre&gt;


bref, du classique.&lt;br /&gt;
Là commence checkinstall:

&lt;pre&gt;
$ su
# checkinstall make install

checkinstall 1.5.3, Copyright 2001 Felipe Eduardo Sanchez Diaz Duran
           This software is released under the GNU GPL.


The package documentation directory ./doc-pak does not exist.
Should I create a default set of package docs?  [y]:

Preparing package documentation...OK

Installing with &quot;make install&quot;...

========================= Installation results ===========================

Copying documentation directory...
[....]
======================== Installation succesful ==========================

Copying files to the temporary directory...OK

Striping ELF binaries and libraries...OK

Compressing man pages...OK

Building file list...OK


Please write a description for the package.
End your description with an empty line or EOF.
&amp;gt;&amp;gt;
&lt;/pre&gt;


là on tape la description du paquet suivi d'une ligne vide

&lt;pre&gt;
&amp;gt;&amp;gt; Scilab version 4 du 9 juillet 2006
&amp;gt;&amp;gt;
&lt;/pre&gt;


S'en suit les parties identifiant le paquet. On les remplit en tapant le numéro de la catégorie à modifier puis le texte correspondant.

&lt;pre&gt;
This package will be built according to these values:
 le numéro et en remplissant
0 -  Maintainer: [ [mailto:francois@boisson.homeip.net francois@chez.moi] ]
1 -  Summary: [ Scilab version 4 du 9 juillet 2006 ]
2 -  Name:    [ scilab ]
3 -  Version: [ 1.0 ]
4 -  Release: [ 1 ]
5 -  License: [ GPL ]
6 -  Group:   [ agreg ]
7 -  Architecture: [ i386 ]
8 -  Source location: [ scilab ]
9 -  Alternate source location: [  ]

Enter a number to change any of them or press ENTER to continue:

*****************************************
**** Debian package creation selected ***
*****************************************

Building Debian package...OK

Installing Debian package...

Erasing temporary files...OK

Writing backup package...OK

Deleting temp dir...OK


**********************************************************************

Done. The new package has been installed and saved to
/tmp/scilab/scilab_4.0_i386.deb

You can remove it from your system anytime using:

      dpkg -r scilab

**********************************************************************

#
&lt;/pre&gt;



Là on se dit c'est fini, eh ben non. checkinstall ne crée pas les dépendances. On peut les faire on modifiant les dépendances à la main. Pour cela, on utilisera le script suivant:

&lt;pre&gt;
/usr/local/bin/lsdepend:

#!/bin/sh
find . -type f | xargs ldd 2&amp;gt; /dev/null |
sed -e '1,$s/=.*//' |
sed -e '1,$s/^ */dpkg -S /' | grep -v &quot;:&quot; |
grep &quot;\.so&quot; |
sort -u | sh |
sed -e '1,$s/:.*//' |
sort -u |
sed -e '1,$s/^/dpkg -l | grep &quot;^[a-zA-Z]\\{2\\} * /' | sed -e '1,$s/$/ &quot;/' |sh
&lt;/pre&gt;


On fait donc tout d'abord l'extraction des fichiers du paquet dans un répertoire (ici gre).

&lt;pre&gt;
$ mkdir gre
$ cd gre
$ dpkg-deb -e ../scilab_4.0_i386.deb
$ dpkg-deb -x ../scilab_4.0_i386.deb .
&lt;/pre&gt;


La troisième commande fabrique un répertoire DEBIAN contenant un seul fichier control contenant

&lt;pre&gt;
Package: scilab
Priority: extra
Section: agreg
Installed-Size: 104436
Maintainer: [mailto:francois@boisson.homeip.net francois@chez.moi]
Architecture: i386
Version: 4.0-1
Description: Scilab version 4 du 9 juillet 2006
&lt;/pre&gt;


(La quatrième commande déplie l'archive des fichiers du paquet)&lt;br /&gt;
Pas de champ Depends dans ce fichier Control, donc de la pagaille et des déconvenues à prévoir. Pour cela on peut avoir une idée des paquets nécessaires avec le script lsdepend. Celui ci cherche les librairies appelées et donne la liste des paquets nécessaires. Ainsi ici, sachant que les bianires sont dans usr/lib/scilab-4.0/bin/

&lt;pre&gt;
$ cd /usr/lib/scilab-4.0/bin/
francois@totoche:/usr/lib/scilab-4.0/bin$ lsdepend
ii  libc6          2.3.2.ds1-22   GNU C Library: Shared libraries and Timezone
ii  libg2c0        3.3.5-13       Runtime library for GNU Fortran 77 applicati
ii  libgcc1        3.4.3-12       GCC support library
ii  libice6        4.3.0.dfsg.1-1 Inter-Client Exchange library
ii  libncurses5    5.4-4          Shared libraries for terminal handling
ii  libsm6         4.3.0.dfsg.1-1 X Window System Session Management library
ii  libx11-6       4.3.0.dfsg.1-1 X Window System protocol client library
ii  libxext6       4.3.0.dfsg.1-1 X Window System miscellaneous extension libr
ii  libxmu6        4.3.0.dfsg.1-1 X Window System miscellaneous utility librar
ii  libxpm4        4.3.0.dfsg.1-1 X pixmap library
ii  libxt6         4.3.0.dfsg.1-1 X Toolkit Intrinsics
ii  maple4         1.0-1          Paquet Maple4
ii  tcl8.4         8.4.9-1        Tcl (the Tool Command Language) v8.4 - run-t
ii  tk8.4          8.4.9-1        Tk toolkit for Tcl and X11, v8.4 - run-time
ii  xaw3dg         1.5+E-8        Xaw3d widget set
francois@totoche:/usr/lib/scilab-4.0/bin$
&lt;/pre&gt;


Le paquet maple4 est une hérésie non libre inutile (doublon) qu'on oublie, cela nous donne le champ Depends suivant:

&lt;pre&gt;
Depends: libc6, tk8.4, tcl8.4, xaw3dg, libxmu6, libxt6, libxext6, libsm6, libice6, libx11-6, libncurses5, libg2c0, libgcc1, libxpm4
&lt;/pre&gt;


et le fichier DEBIAN/control suivant

&lt;pre&gt;
Package: scilab
Priority: extra
Section: agreg
Installed-Size: 104436
Maintainer: [mailto:francois@boisson.homeip.net francois@chez.moi]
Architecture: i386
Depends: libc6, tk8.4, tcl8.4, xaw3dg, libxmu6, libxt6, libxext6, libsm6, libice6, libx11-6, libncurses5, libg2c0, libgcc1, libxpm4
Version: 4.0-1
Description: Scilab version 4 du 9 juillet 2006
&lt;/pre&gt;


On peut éventuellement créer un fichier DEBIAN/postinst et DEBIAN/prerm si on veut éxécuter un script juste après l'installation ou un script avant la désinstallation. Il ne reste plus qu'à refaire le paquet:

&lt;pre&gt;
$ cd ..
$  dpkg-deb -b gre scilab_4.0_i386.deb
dpkg-deb : construction du paquet « scilab » dans « scilab_4.0_i386.deb ».
francois@totoche:/tmp$
&lt;/pre&gt;


et voilà le beau paquet scilab avec ses dépendances (du moins on l'espère). Bien évidemment, c'est rustique comme méthode mais cela permet de dupliquer une installation facilement et cela constitue une alternative pratique et rapide à la méthode classique sans sombrer dans les méandres d'un debian/rules ne fonctionnant pas...


== Recompilation ==

Pour le coup c'est très simple. Il suffit de charger les sources, modifier eventuellement les options et recompiler le paquet. Soit donc pour le paquet paquet-1.23-6_i386.deb

&lt;pre&gt;
$ apt-get source paquet
$ cd paquet-1.23
$ emacs debian/rules
&lt;/pre&gt;

(là chercher les options, regarder pres de la cible configure_stamp: ou build_stamp: et les modifier)

&lt;pre&gt;
$ fakeroot dpkg-buildpackage -b -uc
$ cd ..
$ ls *.deb
&lt;/pre&gt;

Le paquet est prêt.


== Fabrication directe. ==


Un paquet peut être fait simplement. Pour cela

* Préparer l'arborescence des fichiers composant le paquet dans un répertoire /tmp/paquet.
* Faire un répertoire /tmp/paquet/DEBIAN
* Y mettre dedans un fichier control de la forme

&lt;pre&gt;
Package: nomdupaquet
Priority: optional
Section: x11
Installed-Size: 4023 (si le paquet fait 4023K environ)
Maintainer: Georges Sand &amp;lt;aurore.dupin@chopin.muses.fr&amp;gt;
Architecture: all
Version: 1.0
Depends: xbase-clients
Description: Modifications de startx
Lancement de X différent
.
&lt;/pre&gt;

* Y mettre éventuellement un fichier '''postinst''' (éxécutable) pour les éventuels instructions à faire après l'installation. Dans le cas où un fichier d'un paquet est modifié (mettons startx ici) il est important de faire une «diversion», ce qui se fait par un fichier '''preinst ''' comme suit:

&lt;pre&gt;
set -e
case &quot;$1&quot; in
 install)
 dpkg-divert --package nomdupaquet --divert /usr/bin/startx.org --rename /usr/bin/startx
 dpkg-divert --package nomdupaquet --divert /usr/X11R6/bin/startx.org --rename /usr/X11R6/bin/startx
 ;;
 abort-upgrade)
 ;;
 upgrade)
 ;;
 *)
 echo &quot;preinst called with unknown argument \`$1'&quot; &amp;gt;&amp;amp;2
 exit 1
 ;;
esac
exit 0
&lt;/pre&gt;


et bien sûr un fichier '''postrm''' supprimant la diversion en cas de retrait du paquet:

&lt;pre&gt;
set -e
case &quot;$1&quot; in
 remove|purge)
 dpkg-divert --package xbase-agreg --rename --remove /usr/X11R6/bin/startx
 dpkg-divert --package xbase-agreg --rename --remove /usr/bin/startx

 ;;
 upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
 ;;
 *)
 echo &quot;postrm called with unknown argument \`$1'&quot; &amp;gt;&amp;amp;2
 exit 0
esac
&lt;/pre&gt;

* faire ensuite

&lt;pre&gt;
$ cd /tmp/paquet
$ find . -type f | grep -v &quot;^./DEBIAN&quot; | md5sum &amp;gt; DEBIAN/md5sums
$ su
# chown -R root.root *
# dpkg-deb -b . ../nomdupaquet-1.0_all.deb
&lt;/pre&gt;


* Le paquet est prêt.

[[Utilisateur:fran.b|François Boisson]]

[[Category:Paquets]]</text>
      <sha1>5v3kgs6la6tdnlsa26w4o4fjxzz3quj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>248</id>
      <parentid>215</parentid>
      <timestamp>2010-01-25T09:58:48Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Présentation */</comment>
      <text xml:space="preserve" bytes="22316">== Présentation ==
Ce petit memento comporte 5 parties: 

# Fabrication d'un paquet élémentaire (vikings)
# Fabrication d'un paquet plus compliqué avec compilation (cacheproc)
# Exemple d'un paquet de scripts de mise à jour
# Le rétroportage vite fait, bien ou mal fait
# ./configure;make;make install et paquet debian...
# Recompilation
# Fabrication directe.


'''Les sources et les résultats de ces paquets se trouvent sur'''&lt;br /&gt;
'''deb http://boisson.homeip.net/sarge/ ./'''&lt;br /&gt;
'''deb http://boisson.homeip.net/source ./'''&lt;br /&gt;

== Un exemple très simple : vikings ==

'''On ne travaille PAS sous root'''

Ce paquet contient une arborescence /usr/games/lost et un script /usr/games/vik. Les fichiers sont tout prêts et n'ont pas besoin de préparation.

* Faire un répertoire /tmp/vikings-1.0
* Y mettre vik et le répertoire lost
* Faire


&lt;pre&gt;
$ cd /tmp
$ cd vikings-1.0/
$ dh_make
&lt;/pre&gt;


dh_make pose la question de savoir si c'est un paquet simple (oui), multiple, librairie ou module noyau.
 
Il crée un répertoire debian et un répertoire /tmp/vikings-1.0.orig permettant de faire le fichier .diff.gz (les paquets sources contiennent en général les sources initiaux, un fichier .diff rajoutant l'arborescence et les patchs debian et un fichier .dsc décrivant le paquet). 

''A ce stade, il est important de noter que seules des modifications de textes sont permises. Si un binaire est modifié dans le paquet source, il est nécessaire de supprimer le répertoire /tmp/vikings-1.0.orig, les sources seront alors composées d'un fichier .tar.gz et d'un fichier .dsc (pas de diff.gz),''&lt;br /&gt;

Puis viennent les éditions


&lt;pre&gt;
$ emacs debian/control
&lt;/pre&gt;


Mettre à jour les champs Description, et éventuellement Depends. Ici, le paquet dépend de dosbox donc remplacer


&lt;pre&gt;
Depends: ${shlibs:Depends}, ${misc:Depends}
&lt;/pre&gt;


par


&lt;pre&gt;
Depends: dosbox
&lt;/pre&gt;


(la syntaxe est paquet, paquet, ...)&lt;br /&gt;

Faire


&lt;pre&gt;
$ emacs debian/rules
&lt;/pre&gt;


Ce fichier est essentiel car il contient les instructions permettant de faire le paquet. Ici, il n'y a pas de Makefile donc virer ou commenter les lignes contenant $(MAKE), puis remplacer la ligne


&lt;pre&gt;
        $(MAKE) install DESTDIR=$(CURDIR)/debian/vikings
&lt;/pre&gt;


par


&lt;pre&gt;
        cp -dpRf vik lost $(CURDIR)/debian/vikings/usr/games
&lt;/pre&gt;


''Le répertoire de travail est /tmp/vikings-1.0=CURDIR, $(CURDIR)/debian/vikings contient l'arborescence du paquet à venir''. Il est parfois bon de faire au préalable


&lt;pre&gt;
        mkdir -p $(CURDIR)/debian/vikings/usr/games
        cp -dpRf vik lost $(CURDIR)/debian/vikings/usr/games
&lt;/pre&gt;


Pour créer le répertoire, une autre méthode plus simple consiste à déclarer le répertoire dans debian/dirs


&lt;pre&gt;
$ emacs debian/dirs
&lt;/pre&gt;


(Y mettre usr/games et virer le reste). Faire


&lt;pre&gt;
$ emacs debian/copyright
&lt;/pre&gt;


pour y mettre la licence. Ici j'ai complété par &lt;br /&gt;
«It was downloaded from abandonnia». Faire de même pour README.debian. &lt;br /&gt;
Ces fichiers debian/README.debian et debian/copyright se retrouvent toujours et sont copiés sur /usr/share/doc/&amp;lt;paquet&amp;gt;/. Usuellement, on rajoute un fichier README de doc.


Faire enfin

&lt;pre&gt;
$ fakeroot dpkg-buildpackage -us -uc
&lt;/pre&gt;


qui fabrique les paquets sources et le .deb. &lt;br /&gt;
Supposons que damned, faute de frappe et le paquet plante. Dans ce cas, repartir de sources propres:


&lt;pre&gt;
$ cd ..
$ rm -Rf vikings-1.0/
$ dpkg-source -x vikings_1.0-1.dsc
$ cd vikings-1.0/
$ emacs [le fichier fautif (Makefile ou debian/rules souvent)]
$ fakeroot dpkg-buildpackage -us -uc
&lt;/pre&gt;


Le paquet vikings_1.0-1_i386.deb est créé dans la racine.

== Un deuxième exemple: cacheproc ==

cacheproc est un petit programme recherchant des processus cachés, il est écrit en camllight. Il se compose de

&lt;pre&gt;
-rw-r--r--  1 francois src 2474 2004-01-19 22:08 chercheprocess.ml
-rw-r--r--  1 francois src  707 2004-01-19 22:22 Makefile
-rw-r--r--  1 francois src 1450 2004-01-19 22:32 README
-rw-r--r--  1 francois src 1936 2004-01-19 22:08 regarde.ml
&lt;/pre&gt;

On procède comme ci dessus (dh_make, etc), l'idéal étant de modifier le moins possible debian/rules en utilisant le Makefile.&lt;br /&gt;
README est un fichier sommaire de docs. Je le copie sur debian/README.debian (ce qui est une mauvaise idée mais bon, c'était un de mes premiers paquets)&lt;br /&gt;
a) le fichier debian/control&lt;br /&gt;
Outre les rubriques usuelles, rajouter camllight dans le Build-Depends:

&lt;pre&gt;
Build-Depends: debhelper (&amp;gt;&amp;gt; 3.0.0), camllight
&lt;/pre&gt;

''(J'oublie tout le temps, dsl)''&lt;br /&gt;
b) mettre usr/bin dans debian/dirs (c'est là où seront les binaires) &lt;br /&gt;
c) Dans debian/rules mettre

&lt;pre&gt;
       $(MAKE) all
&lt;/pre&gt;

au lieu de $(MAKE) dans le build-stamp et commenter le dh_strip (les objets caml supporte mal le strip (=compression de l'exe)).&lt;br /&gt;
Reste donc à faire le Makefile. J'utilise un Makefile «générique» que je modifie à la demande. Il contient

&lt;pre&gt;
#!/usr/bin/make
prefix          = /usr
exec_prefix     = ${prefix}
srcdir          = .

bindir          = ${exec_prefix}/bin
DESTDIR=

INSTALL_LIST_BIN=regarde chercheprocess

distclean: clean

clean:
        -rm *.zi *.zo *~
        for i in $(INSTALL_LIST_BIN); do if test -f $$i; then rm $$i; fi; done

install:
        for i in $(DESTDIR)$(bindir); do mkdir -p $$i &amp;amp;&amp;amp; test -d $$i &amp;amp;&amp;amp; test -w $$i; done
        for i in $(INSTALL_LIST_BIN); do if test -f $$i; then cp $$i $(DESTDIR)$(bindir); else cp $(srcdir)/$$i $(DESTDIR)$(bindir); fi; done


all: chercheprocess regarde

chercheprocess: chercheprocess.ml
        camlc -custom -o chercheprocess -lunix chercheprocess.ml

regarde: regarde.ml
        camlc -custom -o regarde -lunix regarde.ml
&lt;/pre&gt;

Les lignes importantes sont INSTALL_LIST_BIN=.. donnant la liste des binaires à obtenir. Les cibles sont clean, all et install.&lt;br /&gt;
'''clean''' nettoie les fichiers objets (noter le -rm et non rm qui évite l'erreur si il n'y a pas de fichier objet, ''on peut se demander pourquoi je n'ai pas fait pareil pour les binaires mais bon...'')&lt;br /&gt;
'''install''' installe les binaires dans le répertoire $(DESTDIR)$(bindir), donc ici on crée le répertoire, on vérifie qu'il y a les bons droits, puis on y copie les binaires de la liste INSTALL_LIST_BIN (à noter que dans mon script, j'ai prévu le cas où il y a un répertoire source séparé).&lt;br /&gt;
'''all''' renvoie sur 2 cibles, une par binaire. Chaque cible fabrique le binaire correspondant.&lt;br /&gt;
Le reste est comme dans 1) 

== Un paquet de mis à jour pour gérer un parc de machines. ==

Ce genre de paquet est très utile pour répercuter des patchs sur un lot de machines (salle) toutes indentiques.

Pour cela on utilise un script /etc/init.d/maj contenant dans la rubrique start

&lt;pre&gt;
        echo -n &quot;Starting $DESC: $NAME&quot;
        cp /etc/apt/sources.list.lycee /etc/apt/sources.list
        apt-get update
        apt-get install -y lycee
        cp /etc/apt/sources.list.vrai /etc/apt/sources.list
        echo &quot;.&quot;
   # rajout éventuel de compléments
&lt;/pre&gt;


puis on fait

&lt;pre&gt;
$ chmod +x /etc/init.d/maj
$ update-rc.d maj defaults 99
&lt;/pre&gt;

/etc/apt/sources.list.lycee &lt;br /&gt;
contient une ligne &lt;br /&gt;
deb file:/home/ftp/ / &lt;br /&gt;
qui est ici un dépot partagé via nfs. 


Le paquet pris en exemple est celui qui me permet de gérer les salles du lycée où je travaille. A l'heure actuelle il contient

&lt;pre&gt;
tux.xpm autoexec.bat  init.reg  lomount  maj  Makefile  repareW98  sources.list.lycee
&lt;/pre&gt;


Il faut savoir que les logiciels de chimie utilisés par les élèves tournent sur un Windows98 dans un qemu (les machines sont des amd64). Comme prévus les patchs concernent surtout windows98. On y trouve un nouvel autoexex.bat, un fichier init.reg à mettre dans la racine du disque virtuel windows. Pour cela un utilitaire lomount (dont j'ai fini par faire un paquet) permet de monter des partitions d'une image d'un disque hda par exemple. repareW98 est un script qui remplace l'image du disque virtuel par une image neuve et y applique les patches. Quand l'élève plante le Windows (en gros toutes les deux heures), il clique sur une icone «repareWindows», et relance un windows tout neuf. Il a perdu tout son boulot ce qui a l'avantage de l'éduquer sur Windows. Voilà pour l'explication du contexte.


Le paquet à faire doit donc à chaque installation installer la nouvelle version de maj, appliquer d'éventuels patchs et installer les fichiers ci dessus dans les bonnes places.&lt;br /&gt;
Comme précédemment, l'installation des fichiers se fait par le Makefile:

&lt;pre&gt;
#!/usr/bin/make
prefix          = /usr
exec_prefix     = ${prefix}
srcdir          = .

bindir          = ${exec_prefix}/bin
DESTDIR=


distclean: clean

clean:

install:
        mkdir -p $(DESTDIR)/etc/init.d
        mkdir -p $(DESTDIR)/etc/apt/
        mkdir -p $(DESTDIR)/usr/local/bin
        mkdir -p $(DESTDIR)/usr/local/windows
        cp -dpf maj $(DESTDIR)/etc/apt
        cp sources.list.lycee $(DESTDIR)/etc/apt/
        cp lomount $(DESTDIR)/usr/local/bin
        cp repareW98 $(DESTDIR)/usr/local/bin
   cp tux.xpm   $(DESTDIR)/var/lycee
        chmod +x $(DESTDIR)/usr/local/bin/*
        cp init.reg autoexec.bat $(DESTDIR)/usr/local/windows
&lt;/pre&gt;



Pour le fichier debian/rules, il n'y a pas de fabrication de binaires (donc commenter le $(MAKE) de build-stamp). Le reste est le script par défaut.


Le fichier debian/control contient les paquets rajoutés sur les machines au fur et à mesure de leur évolution:

&lt;pre&gt;
Source: lycee
[.....]
Package: lycee
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, camllight (&amp;gt;= 0.75-2), ntpdate, fingerd, sun-j2re1.4, tuareg-mode
Description: paquet de MAJ Lycee
Mise à jour incrémentale des systèmes Linux
&lt;/pre&gt;


Ici j'ai rajouté camllight, le mode tuareg pour caml, un java, ntpdate pour synchroniser les machines et fingerd pour savoir qui travaille et quand sur les machines (c'est mon coté bigbrother qu'il faut bien assumer).


Enfin, le fichier debian/postinst exécute les différents patchs éventuels:

&lt;pre&gt;
...
case &quot;$1&quot; in
    configure)
# remplacement de maj
    cp /etc/apt/maj /etc/init.d
    chmod +x /etc/init.d/maj
        update-rc.d maj defaults 99
# exécution patch1
    if [ ! -f /etc/lycee/patch1 ] ; then
        mkdir -p /etc/lycee/
        touch /etc/lycee/patch1
# là mettre les commandes du patch1, ici remplacement logo
        cd /etc/X11/xdm/pixmaps
        rm tux.xpm
        ln -s /var/lycee/tux.xpm
        echo &quot;Patch1 appliqué&quot;

    fi
        ;;
    abort-upgrade|abort-remove|abort-deconfigure)

    ;;

    *)
        echo &quot;postinst called with unknown argument \`$1'&quot; &amp;gt;&amp;amp;2
        exit 1
    ;;
esac
...
&lt;/pre&gt;



Pour faire une mise à jour sur les machines, il suffit donc de mettre à jour le dépot local et tout se fera automatiquement. Cela a remplacé avantageusement le rapatriement automatique de scripts. Ça montre bien la puissance du paquetage .deb qui permet vraiment de tout faire très simplement

== Fabrication rapide de backports. ==

Le problème s'est posé pour moi pour clamav avant la mise en place de debian/volatile (que je n'utilise pas du coup). clamav fait des maj régulièrement et mon serveur était sous potato puis est maintenant sous woody (je n'ai pas le temps ni le vrai désir de passer sous sarge). Il s'agit donc de faire des backports de clamav. Il se trouve que Stephen Gran a fait un paquet très propre (en tout cas la version 0.80), lors des mise à jour je procède comme suit:


Mettons que je parte de la version 0.80 &lt;br /&gt;
0) Récupération de l'arborescence debian de ce paquet &lt;br /&gt;
1) rapatriement de l'archive source clamav nouvelle &lt;br /&gt;
2) dépilage de cette archive et renommage du répertoire en clamav-0.80 &lt;br /&gt;
3) Exécution de

&lt;pre&gt;
$ dch -v backport-0.88-4
&lt;/pre&gt;


Le paquet sera dans la version backport-0.88 &lt;br /&gt;4) Compilation

&lt;pre&gt;
$ cd ../clamav-0.88-4
$ fakeroot dpkg-buildpackage -us -uc
&lt;/pre&gt;


C'est fini, les nouveaux paquets sont faits.


Voici les commandes tapés pour le passage de 0.88-2 à 0.88-4:

&lt;pre&gt;
cd
wget http://ovh.dl.sourceforge.net/sourceforge/clamav/clamav-0.88.4.tar.gz
ls clamav*
mv clamav-0.88/ clamav-backport-0.88-2
tar xzf clamav-0.88.4.tar.gz
tar tzf clamav-0.88.4.tar.gz
mv clamav-0.88.4 clamav-0.88
cd  clamav-0.88
cp -dpRf ../clamav-backport-0.88-2/debian/ .
cd ..
cd clamav-0.88
dch -v backport-0.88-4
fakeroot dpkg-buildpackage -us -uc
cd ..
ls
ls -ltr
ls *0.88-4*deb
scp *0.88-4*deb cerbere:/home/ftp/sarge/sarge
&lt;/pre&gt;


C'est tout. Les sources obtenus me permettent de faire les paquets pour woody, sarge amd64, etc.


Il peut y avoir quelques soucis nécessitant des retouches de debian/rules 


== Fabrication d'un paquet via checkinstall. ==

attention, il y a un bug dans la version de checkinstall de lenny, le checkinstall n'existe pas chez etch, on pourra le trouver ici &lt;br /&gt;
'''deb http://boisson.homeip.net/debian etch divers'''&lt;br /&gt;
Pour contourner le bug, lancer checkinstall avec l'option --fstrans=no &lt;br /&gt;
Sinon, checkinstall ne peut construire correctement le paquet si l'installation se fait avec un programme binaire statique.


Parfois, la méthode dh_make conduit à modifier le Makefile, on ne comprend plus rien et on a juste envie de faire un paquet et pas les paquets sources. Un petit génie a inventer checkinstall (par encore parfait mais bon)...


Exemple scilab version 4 dont j'avais besoin en urgence (ci dessous de mémoire, c'est reconstitué).&lt;br /&gt;
Chargement rapide des sources, configuration classique:

&lt;pre&gt;
$ cd scilab-4.0
$ ./configure --prefix=/usr
$ make all
&lt;/pre&gt;


bref, du classique.&lt;br /&gt;
Là commence checkinstall:

&lt;pre&gt;
$ su
# checkinstall make install

checkinstall 1.5.3, Copyright 2001 Felipe Eduardo Sanchez Diaz Duran
           This software is released under the GNU GPL.


The package documentation directory ./doc-pak does not exist.
Should I create a default set of package docs?  [y]:

Preparing package documentation...OK

Installing with &quot;make install&quot;...

========================= Installation results ===========================

Copying documentation directory...
[....]
======================== Installation succesful ==========================

Copying files to the temporary directory...OK

Striping ELF binaries and libraries...OK

Compressing man pages...OK

Building file list...OK


Please write a description for the package.
End your description with an empty line or EOF.
&amp;gt;&amp;gt;
&lt;/pre&gt;


là on tape la description du paquet suivi d'une ligne vide

&lt;pre&gt;
&amp;gt;&amp;gt; Scilab version 4 du 9 juillet 2006
&amp;gt;&amp;gt;
&lt;/pre&gt;


S'en suit les parties identifiant le paquet. On les remplit en tapant le numéro de la catégorie à modifier puis le texte correspondant.

&lt;pre&gt;
This package will be built according to these values:
 le numéro et en remplissant
0 -  Maintainer: [ [mailto:francois@boisson.homeip.net francois@chez.moi] ]
1 -  Summary: [ Scilab version 4 du 9 juillet 2006 ]
2 -  Name:    [ scilab ]
3 -  Version: [ 1.0 ]
4 -  Release: [ 1 ]
5 -  License: [ GPL ]
6 -  Group:   [ agreg ]
7 -  Architecture: [ i386 ]
8 -  Source location: [ scilab ]
9 -  Alternate source location: [  ]

Enter a number to change any of them or press ENTER to continue:

*****************************************
**** Debian package creation selected ***
*****************************************

Building Debian package...OK

Installing Debian package...

Erasing temporary files...OK

Writing backup package...OK

Deleting temp dir...OK


**********************************************************************

Done. The new package has been installed and saved to
/tmp/scilab/scilab_4.0_i386.deb

You can remove it from your system anytime using:

      dpkg -r scilab

**********************************************************************

#
&lt;/pre&gt;



Là on se dit c'est fini, eh ben non. checkinstall ne crée pas les dépendances. On peut les faire on modifiant les dépendances à la main. Pour cela, on utilisera le script suivant:

&lt;pre&gt;
/usr/local/bin/lsdepend:

#!/bin/sh
find . -type f | xargs ldd 2&amp;gt; /dev/null |
sed -e '1,$s/=.*//' |
sed -e '1,$s/^ */dpkg -S /' | grep -v &quot;:&quot; |
grep &quot;\.so&quot; |
sort -u | sh |
sed -e '1,$s/:.*//' |
sort -u |
sed -e '1,$s/^/dpkg -l | grep &quot;^[a-zA-Z]\\{2\\} * /' | sed -e '1,$s/$/ &quot;/' |sh
&lt;/pre&gt;


On fait donc tout d'abord l'extraction des fichiers du paquet dans un répertoire (ici gre).

&lt;pre&gt;
$ mkdir gre
$ cd gre
$ dpkg-deb -e ../scilab_4.0_i386.deb
$ dpkg-deb -x ../scilab_4.0_i386.deb .
&lt;/pre&gt;


La troisième commande fabrique un répertoire DEBIAN contenant un seul fichier control contenant

&lt;pre&gt;
Package: scilab
Priority: extra
Section: agreg
Installed-Size: 104436
Maintainer: [mailto:francois@boisson.homeip.net francois@chez.moi]
Architecture: i386
Version: 4.0-1
Description: Scilab version 4 du 9 juillet 2006
&lt;/pre&gt;


(La quatrième commande déplie l'archive des fichiers du paquet)&lt;br /&gt;
Pas de champ Depends dans ce fichier Control, donc de la pagaille et des déconvenues à prévoir. Pour cela on peut avoir une idée des paquets nécessaires avec le script lsdepend. Celui ci cherche les librairies appelées et donne la liste des paquets nécessaires. Ainsi ici, sachant que les bianires sont dans usr/lib/scilab-4.0/bin/

&lt;pre&gt;
$ cd /usr/lib/scilab-4.0/bin/
francois@totoche:/usr/lib/scilab-4.0/bin$ lsdepend
ii  libc6          2.3.2.ds1-22   GNU C Library: Shared libraries and Timezone
ii  libg2c0        3.3.5-13       Runtime library for GNU Fortran 77 applicati
ii  libgcc1        3.4.3-12       GCC support library
ii  libice6        4.3.0.dfsg.1-1 Inter-Client Exchange library
ii  libncurses5    5.4-4          Shared libraries for terminal handling
ii  libsm6         4.3.0.dfsg.1-1 X Window System Session Management library
ii  libx11-6       4.3.0.dfsg.1-1 X Window System protocol client library
ii  libxext6       4.3.0.dfsg.1-1 X Window System miscellaneous extension libr
ii  libxmu6        4.3.0.dfsg.1-1 X Window System miscellaneous utility librar
ii  libxpm4        4.3.0.dfsg.1-1 X pixmap library
ii  libxt6         4.3.0.dfsg.1-1 X Toolkit Intrinsics
ii  maple4         1.0-1          Paquet Maple4
ii  tcl8.4         8.4.9-1        Tcl (the Tool Command Language) v8.4 - run-t
ii  tk8.4          8.4.9-1        Tk toolkit for Tcl and X11, v8.4 - run-time
ii  xaw3dg         1.5+E-8        Xaw3d widget set
francois@totoche:/usr/lib/scilab-4.0/bin$
&lt;/pre&gt;


Le paquet maple4 est une hérésie non libre inutile (doublon) qu'on oublie, cela nous donne le champ Depends suivant:

&lt;pre&gt;
Depends: libc6, tk8.4, tcl8.4, xaw3dg, libxmu6, libxt6, libxext6, libsm6, libice6, libx11-6, libncurses5, libg2c0, libgcc1, libxpm4
&lt;/pre&gt;


et le fichier DEBIAN/control suivant

&lt;pre&gt;
Package: scilab
Priority: extra
Section: agreg
Installed-Size: 104436
Maintainer: [mailto:francois@boisson.homeip.net francois@chez.moi]
Architecture: i386
Depends: libc6, tk8.4, tcl8.4, xaw3dg, libxmu6, libxt6, libxext6, libsm6, libice6, libx11-6, libncurses5, libg2c0, libgcc1, libxpm4
Version: 4.0-1
Description: Scilab version 4 du 9 juillet 2006
&lt;/pre&gt;


On peut éventuellement créer un fichier DEBIAN/postinst et DEBIAN/prerm si on veut éxécuter un script juste après l'installation ou un script avant la désinstallation. Il ne reste plus qu'à refaire le paquet:

&lt;pre&gt;
$ cd ..
$  dpkg-deb -b gre scilab_4.0_i386.deb
dpkg-deb : construction du paquet « scilab » dans « scilab_4.0_i386.deb ».
francois@totoche:/tmp$
&lt;/pre&gt;


et voilà le beau paquet scilab avec ses dépendances (du moins on l'espère). Bien évidemment, c'est rustique comme méthode mais cela permet de dupliquer une installation facilement et cela constitue une alternative pratique et rapide à la méthode classique sans sombrer dans les méandres d'un debian/rules ne fonctionnant pas...


== Recompilation ==

Pour le coup c'est très simple. Il suffit de charger les sources, modifier eventuellement les options et recompiler le paquet. Soit donc pour le paquet paquet-1.23-6_i386.deb

&lt;pre&gt;
$ apt-get source paquet
$ cd paquet-1.23
$ emacs debian/rules
&lt;/pre&gt;

(là chercher les options, regarder pres de la cible configure_stamp: ou build_stamp: et les modifier)

&lt;pre&gt;
$ fakeroot dpkg-buildpackage -b -uc
$ cd ..
$ ls *.deb
&lt;/pre&gt;

Le paquet est prêt.


== Fabrication directe. ==


Un paquet peut être fait simplement. Pour cela

* Préparer l'arborescence des fichiers composant le paquet dans un répertoire /tmp/paquet.
* Faire un répertoire /tmp/paquet/DEBIAN
* Y mettre dedans un fichier control de la forme

&lt;pre&gt;
Package: nomdupaquet
Priority: optional
Section: x11
Installed-Size: 4023 (si le paquet fait 4023K environ)
Maintainer: Georges Sand &amp;lt;aurore.dupin@chopin.muses.fr&amp;gt;
Architecture: all
Version: 1.0
Depends: xbase-clients
Description: Modifications de startx
Lancement de X différent
.
&lt;/pre&gt;

* Y mettre éventuellement un fichier '''postinst''' (éxécutable) pour les éventuels instructions à faire après l'installation. Dans le cas où un fichier d'un paquet est modifié (mettons startx ici) il est important de faire une «diversion», ce qui se fait par un fichier '''preinst ''' comme suit:

&lt;pre&gt;
set -e
case &quot;$1&quot; in
 install)
 dpkg-divert --package nomdupaquet --divert /usr/bin/startx.org --rename /usr/bin/startx
 dpkg-divert --package nomdupaquet --divert /usr/X11R6/bin/startx.org --rename /usr/X11R6/bin/startx
 ;;
 abort-upgrade)
 ;;
 upgrade)
 ;;
 *)
 echo &quot;preinst called with unknown argument \`$1'&quot; &amp;gt;&amp;amp;2
 exit 1
 ;;
esac
exit 0
&lt;/pre&gt;


et bien sûr un fichier '''postrm''' supprimant la diversion en cas de retrait du paquet:

&lt;pre&gt;
set -e
case &quot;$1&quot; in
 remove|purge)
 dpkg-divert --package xbase-agreg --rename --remove /usr/X11R6/bin/startx
 dpkg-divert --package xbase-agreg --rename --remove /usr/bin/startx

 ;;
 upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
 ;;
 *)
 echo &quot;postrm called with unknown argument \`$1'&quot; &amp;gt;&amp;amp;2
 exit 0
esac
&lt;/pre&gt;

* faire ensuite

&lt;pre&gt;
$ cd /tmp/paquet
$ find . -type f | grep -v &quot;^./DEBIAN&quot; | md5sum &amp;gt; DEBIAN/md5sums
$ su
# chown -R root.root *
# dpkg-deb -b . ../nomdupaquet-1.0_all.deb
&lt;/pre&gt;


* Le paquet est prêt.

[[Utilisateur:fran.b|François Boisson]]

[[Category:Paquets]]</text>
      <sha1>taaoo9u8aqb7mzo1dijt1zf5qsxmro8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1607</id>
      <parentid>248</parentid>
      <timestamp>2010-07-05T07:53:27Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="22350">#REDIRECT [[isalo:Faireunpaquet]]
== Présentation ==
Ce petit memento comporte 5 parties: 

# Fabrication d'un paquet élémentaire (vikings)
# Fabrication d'un paquet plus compliqué avec compilation (cacheproc)
# Exemple d'un paquet de scripts de mise à jour
# Le rétroportage vite fait, bien ou mal fait
# ./configure;make;make install et paquet debian...
# Recompilation
# Fabrication directe.


'''Les sources et les résultats de ces paquets se trouvent sur'''&lt;br /&gt;
'''deb http://boisson.homeip.net/sarge/ ./'''&lt;br /&gt;
'''deb http://boisson.homeip.net/source ./'''&lt;br /&gt;

== Un exemple très simple : vikings ==

'''On ne travaille PAS sous root'''

Ce paquet contient une arborescence /usr/games/lost et un script /usr/games/vik. Les fichiers sont tout prêts et n'ont pas besoin de préparation.

* Faire un répertoire /tmp/vikings-1.0
* Y mettre vik et le répertoire lost
* Faire


&lt;pre&gt;
$ cd /tmp
$ cd vikings-1.0/
$ dh_make
&lt;/pre&gt;


dh_make pose la question de savoir si c'est un paquet simple (oui), multiple, librairie ou module noyau.
 
Il crée un répertoire debian et un répertoire /tmp/vikings-1.0.orig permettant de faire le fichier .diff.gz (les paquets sources contiennent en général les sources initiaux, un fichier .diff rajoutant l'arborescence et les patchs debian et un fichier .dsc décrivant le paquet). 

''A ce stade, il est important de noter que seules des modifications de textes sont permises. Si un binaire est modifié dans le paquet source, il est nécessaire de supprimer le répertoire /tmp/vikings-1.0.orig, les sources seront alors composées d'un fichier .tar.gz et d'un fichier .dsc (pas de diff.gz),''&lt;br /&gt;

Puis viennent les éditions


&lt;pre&gt;
$ emacs debian/control
&lt;/pre&gt;


Mettre à jour les champs Description, et éventuellement Depends. Ici, le paquet dépend de dosbox donc remplacer


&lt;pre&gt;
Depends: ${shlibs:Depends}, ${misc:Depends}
&lt;/pre&gt;


par


&lt;pre&gt;
Depends: dosbox
&lt;/pre&gt;


(la syntaxe est paquet, paquet, ...)&lt;br /&gt;

Faire


&lt;pre&gt;
$ emacs debian/rules
&lt;/pre&gt;


Ce fichier est essentiel car il contient les instructions permettant de faire le paquet. Ici, il n'y a pas de Makefile donc virer ou commenter les lignes contenant $(MAKE), puis remplacer la ligne


&lt;pre&gt;
        $(MAKE) install DESTDIR=$(CURDIR)/debian/vikings
&lt;/pre&gt;


par


&lt;pre&gt;
        cp -dpRf vik lost $(CURDIR)/debian/vikings/usr/games
&lt;/pre&gt;


''Le répertoire de travail est /tmp/vikings-1.0=CURDIR, $(CURDIR)/debian/vikings contient l'arborescence du paquet à venir''. Il est parfois bon de faire au préalable


&lt;pre&gt;
        mkdir -p $(CURDIR)/debian/vikings/usr/games
        cp -dpRf vik lost $(CURDIR)/debian/vikings/usr/games
&lt;/pre&gt;


Pour créer le répertoire, une autre méthode plus simple consiste à déclarer le répertoire dans debian/dirs


&lt;pre&gt;
$ emacs debian/dirs
&lt;/pre&gt;


(Y mettre usr/games et virer le reste). Faire


&lt;pre&gt;
$ emacs debian/copyright
&lt;/pre&gt;


pour y mettre la licence. Ici j'ai complété par &lt;br /&gt;
«It was downloaded from abandonnia». Faire de même pour README.debian. &lt;br /&gt;
Ces fichiers debian/README.debian et debian/copyright se retrouvent toujours et sont copiés sur /usr/share/doc/&amp;lt;paquet&amp;gt;/. Usuellement, on rajoute un fichier README de doc.


Faire enfin

&lt;pre&gt;
$ fakeroot dpkg-buildpackage -us -uc
&lt;/pre&gt;


qui fabrique les paquets sources et le .deb. &lt;br /&gt;
Supposons que damned, faute de frappe et le paquet plante. Dans ce cas, repartir de sources propres:


&lt;pre&gt;
$ cd ..
$ rm -Rf vikings-1.0/
$ dpkg-source -x vikings_1.0-1.dsc
$ cd vikings-1.0/
$ emacs [le fichier fautif (Makefile ou debian/rules souvent)]
$ fakeroot dpkg-buildpackage -us -uc
&lt;/pre&gt;


Le paquet vikings_1.0-1_i386.deb est créé dans la racine.

== Un deuxième exemple: cacheproc ==

cacheproc est un petit programme recherchant des processus cachés, il est écrit en camllight. Il se compose de

&lt;pre&gt;
-rw-r--r--  1 francois src 2474 2004-01-19 22:08 chercheprocess.ml
-rw-r--r--  1 francois src  707 2004-01-19 22:22 Makefile
-rw-r--r--  1 francois src 1450 2004-01-19 22:32 README
-rw-r--r--  1 francois src 1936 2004-01-19 22:08 regarde.ml
&lt;/pre&gt;

On procède comme ci dessus (dh_make, etc), l'idéal étant de modifier le moins possible debian/rules en utilisant le Makefile.&lt;br /&gt;
README est un fichier sommaire de docs. Je le copie sur debian/README.debian (ce qui est une mauvaise idée mais bon, c'était un de mes premiers paquets)&lt;br /&gt;
a) le fichier debian/control&lt;br /&gt;
Outre les rubriques usuelles, rajouter camllight dans le Build-Depends:

&lt;pre&gt;
Build-Depends: debhelper (&amp;gt;&amp;gt; 3.0.0), camllight
&lt;/pre&gt;

''(J'oublie tout le temps, dsl)''&lt;br /&gt;
b) mettre usr/bin dans debian/dirs (c'est là où seront les binaires) &lt;br /&gt;
c) Dans debian/rules mettre

&lt;pre&gt;
       $(MAKE) all
&lt;/pre&gt;

au lieu de $(MAKE) dans le build-stamp et commenter le dh_strip (les objets caml supporte mal le strip (=compression de l'exe)).&lt;br /&gt;
Reste donc à faire le Makefile. J'utilise un Makefile «générique» que je modifie à la demande. Il contient

&lt;pre&gt;
#!/usr/bin/make
prefix          = /usr
exec_prefix     = ${prefix}
srcdir          = .

bindir          = ${exec_prefix}/bin
DESTDIR=

INSTALL_LIST_BIN=regarde chercheprocess

distclean: clean

clean:
        -rm *.zi *.zo *~
        for i in $(INSTALL_LIST_BIN); do if test -f $$i; then rm $$i; fi; done

install:
        for i in $(DESTDIR)$(bindir); do mkdir -p $$i &amp;amp;&amp;amp; test -d $$i &amp;amp;&amp;amp; test -w $$i; done
        for i in $(INSTALL_LIST_BIN); do if test -f $$i; then cp $$i $(DESTDIR)$(bindir); else cp $(srcdir)/$$i $(DESTDIR)$(bindir); fi; done


all: chercheprocess regarde

chercheprocess: chercheprocess.ml
        camlc -custom -o chercheprocess -lunix chercheprocess.ml

regarde: regarde.ml
        camlc -custom -o regarde -lunix regarde.ml
&lt;/pre&gt;

Les lignes importantes sont INSTALL_LIST_BIN=.. donnant la liste des binaires à obtenir. Les cibles sont clean, all et install.&lt;br /&gt;
'''clean''' nettoie les fichiers objets (noter le -rm et non rm qui évite l'erreur si il n'y a pas de fichier objet, ''on peut se demander pourquoi je n'ai pas fait pareil pour les binaires mais bon...'')&lt;br /&gt;
'''install''' installe les binaires dans le répertoire $(DESTDIR)$(bindir), donc ici on crée le répertoire, on vérifie qu'il y a les bons droits, puis on y copie les binaires de la liste INSTALL_LIST_BIN (à noter que dans mon script, j'ai prévu le cas où il y a un répertoire source séparé).&lt;br /&gt;
'''all''' renvoie sur 2 cibles, une par binaire. Chaque cible fabrique le binaire correspondant.&lt;br /&gt;
Le reste est comme dans 1) 

== Un paquet de mis à jour pour gérer un parc de machines. ==

Ce genre de paquet est très utile pour répercuter des patchs sur un lot de machines (salle) toutes indentiques.

Pour cela on utilise un script /etc/init.d/maj contenant dans la rubrique start

&lt;pre&gt;
        echo -n &quot;Starting $DESC: $NAME&quot;
        cp /etc/apt/sources.list.lycee /etc/apt/sources.list
        apt-get update
        apt-get install -y lycee
        cp /etc/apt/sources.list.vrai /etc/apt/sources.list
        echo &quot;.&quot;
   # rajout éventuel de compléments
&lt;/pre&gt;


puis on fait

&lt;pre&gt;
$ chmod +x /etc/init.d/maj
$ update-rc.d maj defaults 99
&lt;/pre&gt;

/etc/apt/sources.list.lycee &lt;br /&gt;
contient une ligne &lt;br /&gt;
deb file:/home/ftp/ / &lt;br /&gt;
qui est ici un dépot partagé via nfs. 


Le paquet pris en exemple est celui qui me permet de gérer les salles du lycée où je travaille. A l'heure actuelle il contient

&lt;pre&gt;
tux.xpm autoexec.bat  init.reg  lomount  maj  Makefile  repareW98  sources.list.lycee
&lt;/pre&gt;


Il faut savoir que les logiciels de chimie utilisés par les élèves tournent sur un Windows98 dans un qemu (les machines sont des amd64). Comme prévus les patchs concernent surtout windows98. On y trouve un nouvel autoexex.bat, un fichier init.reg à mettre dans la racine du disque virtuel windows. Pour cela un utilitaire lomount (dont j'ai fini par faire un paquet) permet de monter des partitions d'une image d'un disque hda par exemple. repareW98 est un script qui remplace l'image du disque virtuel par une image neuve et y applique les patches. Quand l'élève plante le Windows (en gros toutes les deux heures), il clique sur une icone «repareWindows», et relance un windows tout neuf. Il a perdu tout son boulot ce qui a l'avantage de l'éduquer sur Windows. Voilà pour l'explication du contexte.


Le paquet à faire doit donc à chaque installation installer la nouvelle version de maj, appliquer d'éventuels patchs et installer les fichiers ci dessus dans les bonnes places.&lt;br /&gt;
Comme précédemment, l'installation des fichiers se fait par le Makefile:

&lt;pre&gt;
#!/usr/bin/make
prefix          = /usr
exec_prefix     = ${prefix}
srcdir          = .

bindir          = ${exec_prefix}/bin
DESTDIR=


distclean: clean

clean:

install:
        mkdir -p $(DESTDIR)/etc/init.d
        mkdir -p $(DESTDIR)/etc/apt/
        mkdir -p $(DESTDIR)/usr/local/bin
        mkdir -p $(DESTDIR)/usr/local/windows
        cp -dpf maj $(DESTDIR)/etc/apt
        cp sources.list.lycee $(DESTDIR)/etc/apt/
        cp lomount $(DESTDIR)/usr/local/bin
        cp repareW98 $(DESTDIR)/usr/local/bin
   cp tux.xpm   $(DESTDIR)/var/lycee
        chmod +x $(DESTDIR)/usr/local/bin/*
        cp init.reg autoexec.bat $(DESTDIR)/usr/local/windows
&lt;/pre&gt;



Pour le fichier debian/rules, il n'y a pas de fabrication de binaires (donc commenter le $(MAKE) de build-stamp). Le reste est le script par défaut.


Le fichier debian/control contient les paquets rajoutés sur les machines au fur et à mesure de leur évolution:

&lt;pre&gt;
Source: lycee
[.....]
Package: lycee
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, camllight (&amp;gt;= 0.75-2), ntpdate, fingerd, sun-j2re1.4, tuareg-mode
Description: paquet de MAJ Lycee
Mise à jour incrémentale des systèmes Linux
&lt;/pre&gt;


Ici j'ai rajouté camllight, le mode tuareg pour caml, un java, ntpdate pour synchroniser les machines et fingerd pour savoir qui travaille et quand sur les machines (c'est mon coté bigbrother qu'il faut bien assumer).


Enfin, le fichier debian/postinst exécute les différents patchs éventuels:

&lt;pre&gt;
...
case &quot;$1&quot; in
    configure)
# remplacement de maj
    cp /etc/apt/maj /etc/init.d
    chmod +x /etc/init.d/maj
        update-rc.d maj defaults 99
# exécution patch1
    if [ ! -f /etc/lycee/patch1 ] ; then
        mkdir -p /etc/lycee/
        touch /etc/lycee/patch1
# là mettre les commandes du patch1, ici remplacement logo
        cd /etc/X11/xdm/pixmaps
        rm tux.xpm
        ln -s /var/lycee/tux.xpm
        echo &quot;Patch1 appliqué&quot;

    fi
        ;;
    abort-upgrade|abort-remove|abort-deconfigure)

    ;;

    *)
        echo &quot;postinst called with unknown argument \`$1'&quot; &amp;gt;&amp;amp;2
        exit 1
    ;;
esac
...
&lt;/pre&gt;



Pour faire une mise à jour sur les machines, il suffit donc de mettre à jour le dépot local et tout se fera automatiquement. Cela a remplacé avantageusement le rapatriement automatique de scripts. Ça montre bien la puissance du paquetage .deb qui permet vraiment de tout faire très simplement

== Fabrication rapide de backports. ==

Le problème s'est posé pour moi pour clamav avant la mise en place de debian/volatile (que je n'utilise pas du coup). clamav fait des maj régulièrement et mon serveur était sous potato puis est maintenant sous woody (je n'ai pas le temps ni le vrai désir de passer sous sarge). Il s'agit donc de faire des backports de clamav. Il se trouve que Stephen Gran a fait un paquet très propre (en tout cas la version 0.80), lors des mise à jour je procède comme suit:


Mettons que je parte de la version 0.80 &lt;br /&gt;
0) Récupération de l'arborescence debian de ce paquet &lt;br /&gt;
1) rapatriement de l'archive source clamav nouvelle &lt;br /&gt;
2) dépilage de cette archive et renommage du répertoire en clamav-0.80 &lt;br /&gt;
3) Exécution de

&lt;pre&gt;
$ dch -v backport-0.88-4
&lt;/pre&gt;


Le paquet sera dans la version backport-0.88 &lt;br /&gt;4) Compilation

&lt;pre&gt;
$ cd ../clamav-0.88-4
$ fakeroot dpkg-buildpackage -us -uc
&lt;/pre&gt;


C'est fini, les nouveaux paquets sont faits.


Voici les commandes tapés pour le passage de 0.88-2 à 0.88-4:

&lt;pre&gt;
cd
wget http://ovh.dl.sourceforge.net/sourceforge/clamav/clamav-0.88.4.tar.gz
ls clamav*
mv clamav-0.88/ clamav-backport-0.88-2
tar xzf clamav-0.88.4.tar.gz
tar tzf clamav-0.88.4.tar.gz
mv clamav-0.88.4 clamav-0.88
cd  clamav-0.88
cp -dpRf ../clamav-backport-0.88-2/debian/ .
cd ..
cd clamav-0.88
dch -v backport-0.88-4
fakeroot dpkg-buildpackage -us -uc
cd ..
ls
ls -ltr
ls *0.88-4*deb
scp *0.88-4*deb cerbere:/home/ftp/sarge/sarge
&lt;/pre&gt;


C'est tout. Les sources obtenus me permettent de faire les paquets pour woody, sarge amd64, etc.


Il peut y avoir quelques soucis nécessitant des retouches de debian/rules 


== Fabrication d'un paquet via checkinstall. ==

attention, il y a un bug dans la version de checkinstall de lenny, le checkinstall n'existe pas chez etch, on pourra le trouver ici &lt;br /&gt;
'''deb http://boisson.homeip.net/debian etch divers'''&lt;br /&gt;
Pour contourner le bug, lancer checkinstall avec l'option --fstrans=no &lt;br /&gt;
Sinon, checkinstall ne peut construire correctement le paquet si l'installation se fait avec un programme binaire statique.


Parfois, la méthode dh_make conduit à modifier le Makefile, on ne comprend plus rien et on a juste envie de faire un paquet et pas les paquets sources. Un petit génie a inventer checkinstall (par encore parfait mais bon)...


Exemple scilab version 4 dont j'avais besoin en urgence (ci dessous de mémoire, c'est reconstitué).&lt;br /&gt;
Chargement rapide des sources, configuration classique:

&lt;pre&gt;
$ cd scilab-4.0
$ ./configure --prefix=/usr
$ make all
&lt;/pre&gt;


bref, du classique.&lt;br /&gt;
Là commence checkinstall:

&lt;pre&gt;
$ su
# checkinstall make install

checkinstall 1.5.3, Copyright 2001 Felipe Eduardo Sanchez Diaz Duran
           This software is released under the GNU GPL.


The package documentation directory ./doc-pak does not exist.
Should I create a default set of package docs?  [y]:

Preparing package documentation...OK

Installing with &quot;make install&quot;...

========================= Installation results ===========================

Copying documentation directory...
[....]
======================== Installation succesful ==========================

Copying files to the temporary directory...OK

Striping ELF binaries and libraries...OK

Compressing man pages...OK

Building file list...OK


Please write a description for the package.
End your description with an empty line or EOF.
&amp;gt;&amp;gt;
&lt;/pre&gt;


là on tape la description du paquet suivi d'une ligne vide

&lt;pre&gt;
&amp;gt;&amp;gt; Scilab version 4 du 9 juillet 2006
&amp;gt;&amp;gt;
&lt;/pre&gt;


S'en suit les parties identifiant le paquet. On les remplit en tapant le numéro de la catégorie à modifier puis le texte correspondant.

&lt;pre&gt;
This package will be built according to these values:
 le numéro et en remplissant
0 -  Maintainer: [ [mailto:francois@boisson.homeip.net francois@chez.moi] ]
1 -  Summary: [ Scilab version 4 du 9 juillet 2006 ]
2 -  Name:    [ scilab ]
3 -  Version: [ 1.0 ]
4 -  Release: [ 1 ]
5 -  License: [ GPL ]
6 -  Group:   [ agreg ]
7 -  Architecture: [ i386 ]
8 -  Source location: [ scilab ]
9 -  Alternate source location: [  ]

Enter a number to change any of them or press ENTER to continue:

*****************************************
**** Debian package creation selected ***
*****************************************

Building Debian package...OK

Installing Debian package...

Erasing temporary files...OK

Writing backup package...OK

Deleting temp dir...OK


**********************************************************************

Done. The new package has been installed and saved to
/tmp/scilab/scilab_4.0_i386.deb

You can remove it from your system anytime using:

      dpkg -r scilab

**********************************************************************

#
&lt;/pre&gt;



Là on se dit c'est fini, eh ben non. checkinstall ne crée pas les dépendances. On peut les faire on modifiant les dépendances à la main. Pour cela, on utilisera le script suivant:

&lt;pre&gt;
/usr/local/bin/lsdepend:

#!/bin/sh
find . -type f | xargs ldd 2&amp;gt; /dev/null |
sed -e '1,$s/=.*//' |
sed -e '1,$s/^ */dpkg -S /' | grep -v &quot;:&quot; |
grep &quot;\.so&quot; |
sort -u | sh |
sed -e '1,$s/:.*//' |
sort -u |
sed -e '1,$s/^/dpkg -l | grep &quot;^[a-zA-Z]\\{2\\} * /' | sed -e '1,$s/$/ &quot;/' |sh
&lt;/pre&gt;


On fait donc tout d'abord l'extraction des fichiers du paquet dans un répertoire (ici gre).

&lt;pre&gt;
$ mkdir gre
$ cd gre
$ dpkg-deb -e ../scilab_4.0_i386.deb
$ dpkg-deb -x ../scilab_4.0_i386.deb .
&lt;/pre&gt;


La troisième commande fabrique un répertoire DEBIAN contenant un seul fichier control contenant

&lt;pre&gt;
Package: scilab
Priority: extra
Section: agreg
Installed-Size: 104436
Maintainer: [mailto:francois@boisson.homeip.net francois@chez.moi]
Architecture: i386
Version: 4.0-1
Description: Scilab version 4 du 9 juillet 2006
&lt;/pre&gt;


(La quatrième commande déplie l'archive des fichiers du paquet)&lt;br /&gt;
Pas de champ Depends dans ce fichier Control, donc de la pagaille et des déconvenues à prévoir. Pour cela on peut avoir une idée des paquets nécessaires avec le script lsdepend. Celui ci cherche les librairies appelées et donne la liste des paquets nécessaires. Ainsi ici, sachant que les bianires sont dans usr/lib/scilab-4.0/bin/

&lt;pre&gt;
$ cd /usr/lib/scilab-4.0/bin/
francois@totoche:/usr/lib/scilab-4.0/bin$ lsdepend
ii  libc6          2.3.2.ds1-22   GNU C Library: Shared libraries and Timezone
ii  libg2c0        3.3.5-13       Runtime library for GNU Fortran 77 applicati
ii  libgcc1        3.4.3-12       GCC support library
ii  libice6        4.3.0.dfsg.1-1 Inter-Client Exchange library
ii  libncurses5    5.4-4          Shared libraries for terminal handling
ii  libsm6         4.3.0.dfsg.1-1 X Window System Session Management library
ii  libx11-6       4.3.0.dfsg.1-1 X Window System protocol client library
ii  libxext6       4.3.0.dfsg.1-1 X Window System miscellaneous extension libr
ii  libxmu6        4.3.0.dfsg.1-1 X Window System miscellaneous utility librar
ii  libxpm4        4.3.0.dfsg.1-1 X pixmap library
ii  libxt6         4.3.0.dfsg.1-1 X Toolkit Intrinsics
ii  maple4         1.0-1          Paquet Maple4
ii  tcl8.4         8.4.9-1        Tcl (the Tool Command Language) v8.4 - run-t
ii  tk8.4          8.4.9-1        Tk toolkit for Tcl and X11, v8.4 - run-time
ii  xaw3dg         1.5+E-8        Xaw3d widget set
francois@totoche:/usr/lib/scilab-4.0/bin$
&lt;/pre&gt;


Le paquet maple4 est une hérésie non libre inutile (doublon) qu'on oublie, cela nous donne le champ Depends suivant:

&lt;pre&gt;
Depends: libc6, tk8.4, tcl8.4, xaw3dg, libxmu6, libxt6, libxext6, libsm6, libice6, libx11-6, libncurses5, libg2c0, libgcc1, libxpm4
&lt;/pre&gt;


et le fichier DEBIAN/control suivant

&lt;pre&gt;
Package: scilab
Priority: extra
Section: agreg
Installed-Size: 104436
Maintainer: [mailto:francois@boisson.homeip.net francois@chez.moi]
Architecture: i386
Depends: libc6, tk8.4, tcl8.4, xaw3dg, libxmu6, libxt6, libxext6, libsm6, libice6, libx11-6, libncurses5, libg2c0, libgcc1, libxpm4
Version: 4.0-1
Description: Scilab version 4 du 9 juillet 2006
&lt;/pre&gt;


On peut éventuellement créer un fichier DEBIAN/postinst et DEBIAN/prerm si on veut éxécuter un script juste après l'installation ou un script avant la désinstallation. Il ne reste plus qu'à refaire le paquet:

&lt;pre&gt;
$ cd ..
$  dpkg-deb -b gre scilab_4.0_i386.deb
dpkg-deb : construction du paquet « scilab » dans « scilab_4.0_i386.deb ».
francois@totoche:/tmp$
&lt;/pre&gt;


et voilà le beau paquet scilab avec ses dépendances (du moins on l'espère). Bien évidemment, c'est rustique comme méthode mais cela permet de dupliquer une installation facilement et cela constitue une alternative pratique et rapide à la méthode classique sans sombrer dans les méandres d'un debian/rules ne fonctionnant pas...


== Recompilation ==

Pour le coup c'est très simple. Il suffit de charger les sources, modifier eventuellement les options et recompiler le paquet. Soit donc pour le paquet paquet-1.23-6_i386.deb

&lt;pre&gt;
$ apt-get source paquet
$ cd paquet-1.23
$ emacs debian/rules
&lt;/pre&gt;

(là chercher les options, regarder pres de la cible configure_stamp: ou build_stamp: et les modifier)

&lt;pre&gt;
$ fakeroot dpkg-buildpackage -b -uc
$ cd ..
$ ls *.deb
&lt;/pre&gt;

Le paquet est prêt.


== Fabrication directe. ==


Un paquet peut être fait simplement. Pour cela

* Préparer l'arborescence des fichiers composant le paquet dans un répertoire /tmp/paquet.
* Faire un répertoire /tmp/paquet/DEBIAN
* Y mettre dedans un fichier control de la forme

&lt;pre&gt;
Package: nomdupaquet
Priority: optional
Section: x11
Installed-Size: 4023 (si le paquet fait 4023K environ)
Maintainer: Georges Sand &amp;lt;aurore.dupin@chopin.muses.fr&amp;gt;
Architecture: all
Version: 1.0
Depends: xbase-clients
Description: Modifications de startx
Lancement de X différent
.
&lt;/pre&gt;

* Y mettre éventuellement un fichier '''postinst''' (éxécutable) pour les éventuels instructions à faire après l'installation. Dans le cas où un fichier d'un paquet est modifié (mettons startx ici) il est important de faire une «diversion», ce qui se fait par un fichier '''preinst ''' comme suit:

&lt;pre&gt;
set -e
case &quot;$1&quot; in
 install)
 dpkg-divert --package nomdupaquet --divert /usr/bin/startx.org --rename /usr/bin/startx
 dpkg-divert --package nomdupaquet --divert /usr/X11R6/bin/startx.org --rename /usr/X11R6/bin/startx
 ;;
 abort-upgrade)
 ;;
 upgrade)
 ;;
 *)
 echo &quot;preinst called with unknown argument \`$1'&quot; &amp;gt;&amp;amp;2
 exit 1
 ;;
esac
exit 0
&lt;/pre&gt;


et bien sûr un fichier '''postrm''' supprimant la diversion en cas de retrait du paquet:

&lt;pre&gt;
set -e
case &quot;$1&quot; in
 remove|purge)
 dpkg-divert --package xbase-agreg --rename --remove /usr/X11R6/bin/startx
 dpkg-divert --package xbase-agreg --rename --remove /usr/bin/startx

 ;;
 upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
 ;;
 *)
 echo &quot;postrm called with unknown argument \`$1'&quot; &amp;gt;&amp;amp;2
 exit 0
esac
&lt;/pre&gt;

* faire ensuite

&lt;pre&gt;
$ cd /tmp/paquet
$ find . -type f | grep -v &quot;^./DEBIAN&quot; | md5sum &amp;gt; DEBIAN/md5sums
$ su
# chown -R root.root *
# dpkg-deb -b . ../nomdupaquet-1.0_all.deb
&lt;/pre&gt;


* Le paquet est prêt.

[[Utilisateur:fran.b|François Boisson]]

[[Category:Paquets]]</text>
      <sha1>2cjmdts0y46rbr7snoi3grr1lk1pnuh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1656</id>
      <parentid>1607</parentid>
      <timestamp>2010-07-06T09:18:47Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Annulation des modifications 1607 de [[Special:Contributions/Lol|Lol]] ([[User talk:Lol|discussion]])</comment>
      <text xml:space="preserve" bytes="22316">== Présentation ==
Ce petit memento comporte 5 parties: 

# Fabrication d'un paquet élémentaire (vikings)
# Fabrication d'un paquet plus compliqué avec compilation (cacheproc)
# Exemple d'un paquet de scripts de mise à jour
# Le rétroportage vite fait, bien ou mal fait
# ./configure;make;make install et paquet debian...
# Recompilation
# Fabrication directe.


'''Les sources et les résultats de ces paquets se trouvent sur'''&lt;br /&gt;
'''deb http://boisson.homeip.net/sarge/ ./'''&lt;br /&gt;
'''deb http://boisson.homeip.net/source ./'''&lt;br /&gt;

== Un exemple très simple : vikings ==

'''On ne travaille PAS sous root'''

Ce paquet contient une arborescence /usr/games/lost et un script /usr/games/vik. Les fichiers sont tout prêts et n'ont pas besoin de préparation.

* Faire un répertoire /tmp/vikings-1.0
* Y mettre vik et le répertoire lost
* Faire


&lt;pre&gt;
$ cd /tmp
$ cd vikings-1.0/
$ dh_make
&lt;/pre&gt;


dh_make pose la question de savoir si c'est un paquet simple (oui), multiple, librairie ou module noyau.
 
Il crée un répertoire debian et un répertoire /tmp/vikings-1.0.orig permettant de faire le fichier .diff.gz (les paquets sources contiennent en général les sources initiaux, un fichier .diff rajoutant l'arborescence et les patchs debian et un fichier .dsc décrivant le paquet). 

''A ce stade, il est important de noter que seules des modifications de textes sont permises. Si un binaire est modifié dans le paquet source, il est nécessaire de supprimer le répertoire /tmp/vikings-1.0.orig, les sources seront alors composées d'un fichier .tar.gz et d'un fichier .dsc (pas de diff.gz),''&lt;br /&gt;

Puis viennent les éditions


&lt;pre&gt;
$ emacs debian/control
&lt;/pre&gt;


Mettre à jour les champs Description, et éventuellement Depends. Ici, le paquet dépend de dosbox donc remplacer


&lt;pre&gt;
Depends: ${shlibs:Depends}, ${misc:Depends}
&lt;/pre&gt;


par


&lt;pre&gt;
Depends: dosbox
&lt;/pre&gt;


(la syntaxe est paquet, paquet, ...)&lt;br /&gt;

Faire


&lt;pre&gt;
$ emacs debian/rules
&lt;/pre&gt;


Ce fichier est essentiel car il contient les instructions permettant de faire le paquet. Ici, il n'y a pas de Makefile donc virer ou commenter les lignes contenant $(MAKE), puis remplacer la ligne


&lt;pre&gt;
        $(MAKE) install DESTDIR=$(CURDIR)/debian/vikings
&lt;/pre&gt;


par


&lt;pre&gt;
        cp -dpRf vik lost $(CURDIR)/debian/vikings/usr/games
&lt;/pre&gt;


''Le répertoire de travail est /tmp/vikings-1.0=CURDIR, $(CURDIR)/debian/vikings contient l'arborescence du paquet à venir''. Il est parfois bon de faire au préalable


&lt;pre&gt;
        mkdir -p $(CURDIR)/debian/vikings/usr/games
        cp -dpRf vik lost $(CURDIR)/debian/vikings/usr/games
&lt;/pre&gt;


Pour créer le répertoire, une autre méthode plus simple consiste à déclarer le répertoire dans debian/dirs


&lt;pre&gt;
$ emacs debian/dirs
&lt;/pre&gt;


(Y mettre usr/games et virer le reste). Faire


&lt;pre&gt;
$ emacs debian/copyright
&lt;/pre&gt;


pour y mettre la licence. Ici j'ai complété par &lt;br /&gt;
«It was downloaded from abandonnia». Faire de même pour README.debian. &lt;br /&gt;
Ces fichiers debian/README.debian et debian/copyright se retrouvent toujours et sont copiés sur /usr/share/doc/&amp;lt;paquet&amp;gt;/. Usuellement, on rajoute un fichier README de doc.


Faire enfin

&lt;pre&gt;
$ fakeroot dpkg-buildpackage -us -uc
&lt;/pre&gt;


qui fabrique les paquets sources et le .deb. &lt;br /&gt;
Supposons que damned, faute de frappe et le paquet plante. Dans ce cas, repartir de sources propres:


&lt;pre&gt;
$ cd ..
$ rm -Rf vikings-1.0/
$ dpkg-source -x vikings_1.0-1.dsc
$ cd vikings-1.0/
$ emacs [le fichier fautif (Makefile ou debian/rules souvent)]
$ fakeroot dpkg-buildpackage -us -uc
&lt;/pre&gt;


Le paquet vikings_1.0-1_i386.deb est créé dans la racine.

== Un deuxième exemple: cacheproc ==

cacheproc est un petit programme recherchant des processus cachés, il est écrit en camllight. Il se compose de

&lt;pre&gt;
-rw-r--r--  1 francois src 2474 2004-01-19 22:08 chercheprocess.ml
-rw-r--r--  1 francois src  707 2004-01-19 22:22 Makefile
-rw-r--r--  1 francois src 1450 2004-01-19 22:32 README
-rw-r--r--  1 francois src 1936 2004-01-19 22:08 regarde.ml
&lt;/pre&gt;

On procède comme ci dessus (dh_make, etc), l'idéal étant de modifier le moins possible debian/rules en utilisant le Makefile.&lt;br /&gt;
README est un fichier sommaire de docs. Je le copie sur debian/README.debian (ce qui est une mauvaise idée mais bon, c'était un de mes premiers paquets)&lt;br /&gt;
a) le fichier debian/control&lt;br /&gt;
Outre les rubriques usuelles, rajouter camllight dans le Build-Depends:

&lt;pre&gt;
Build-Depends: debhelper (&amp;gt;&amp;gt; 3.0.0), camllight
&lt;/pre&gt;

''(J'oublie tout le temps, dsl)''&lt;br /&gt;
b) mettre usr/bin dans debian/dirs (c'est là où seront les binaires) &lt;br /&gt;
c) Dans debian/rules mettre

&lt;pre&gt;
       $(MAKE) all
&lt;/pre&gt;

au lieu de $(MAKE) dans le build-stamp et commenter le dh_strip (les objets caml supporte mal le strip (=compression de l'exe)).&lt;br /&gt;
Reste donc à faire le Makefile. J'utilise un Makefile «générique» que je modifie à la demande. Il contient

&lt;pre&gt;
#!/usr/bin/make
prefix          = /usr
exec_prefix     = ${prefix}
srcdir          = .

bindir          = ${exec_prefix}/bin
DESTDIR=

INSTALL_LIST_BIN=regarde chercheprocess

distclean: clean

clean:
        -rm *.zi *.zo *~
        for i in $(INSTALL_LIST_BIN); do if test -f $$i; then rm $$i; fi; done

install:
        for i in $(DESTDIR)$(bindir); do mkdir -p $$i &amp;amp;&amp;amp; test -d $$i &amp;amp;&amp;amp; test -w $$i; done
        for i in $(INSTALL_LIST_BIN); do if test -f $$i; then cp $$i $(DESTDIR)$(bindir); else cp $(srcdir)/$$i $(DESTDIR)$(bindir); fi; done


all: chercheprocess regarde

chercheprocess: chercheprocess.ml
        camlc -custom -o chercheprocess -lunix chercheprocess.ml

regarde: regarde.ml
        camlc -custom -o regarde -lunix regarde.ml
&lt;/pre&gt;

Les lignes importantes sont INSTALL_LIST_BIN=.. donnant la liste des binaires à obtenir. Les cibles sont clean, all et install.&lt;br /&gt;
'''clean''' nettoie les fichiers objets (noter le -rm et non rm qui évite l'erreur si il n'y a pas de fichier objet, ''on peut se demander pourquoi je n'ai pas fait pareil pour les binaires mais bon...'')&lt;br /&gt;
'''install''' installe les binaires dans le répertoire $(DESTDIR)$(bindir), donc ici on crée le répertoire, on vérifie qu'il y a les bons droits, puis on y copie les binaires de la liste INSTALL_LIST_BIN (à noter que dans mon script, j'ai prévu le cas où il y a un répertoire source séparé).&lt;br /&gt;
'''all''' renvoie sur 2 cibles, une par binaire. Chaque cible fabrique le binaire correspondant.&lt;br /&gt;
Le reste est comme dans 1) 

== Un paquet de mis à jour pour gérer un parc de machines. ==

Ce genre de paquet est très utile pour répercuter des patchs sur un lot de machines (salle) toutes indentiques.

Pour cela on utilise un script /etc/init.d/maj contenant dans la rubrique start

&lt;pre&gt;
        echo -n &quot;Starting $DESC: $NAME&quot;
        cp /etc/apt/sources.list.lycee /etc/apt/sources.list
        apt-get update
        apt-get install -y lycee
        cp /etc/apt/sources.list.vrai /etc/apt/sources.list
        echo &quot;.&quot;
   # rajout éventuel de compléments
&lt;/pre&gt;


puis on fait

&lt;pre&gt;
$ chmod +x /etc/init.d/maj
$ update-rc.d maj defaults 99
&lt;/pre&gt;

/etc/apt/sources.list.lycee &lt;br /&gt;
contient une ligne &lt;br /&gt;
deb file:/home/ftp/ / &lt;br /&gt;
qui est ici un dépot partagé via nfs. 


Le paquet pris en exemple est celui qui me permet de gérer les salles du lycée où je travaille. A l'heure actuelle il contient

&lt;pre&gt;
tux.xpm autoexec.bat  init.reg  lomount  maj  Makefile  repareW98  sources.list.lycee
&lt;/pre&gt;


Il faut savoir que les logiciels de chimie utilisés par les élèves tournent sur un Windows98 dans un qemu (les machines sont des amd64). Comme prévus les patchs concernent surtout windows98. On y trouve un nouvel autoexex.bat, un fichier init.reg à mettre dans la racine du disque virtuel windows. Pour cela un utilitaire lomount (dont j'ai fini par faire un paquet) permet de monter des partitions d'une image d'un disque hda par exemple. repareW98 est un script qui remplace l'image du disque virtuel par une image neuve et y applique les patches. Quand l'élève plante le Windows (en gros toutes les deux heures), il clique sur une icone «repareWindows», et relance un windows tout neuf. Il a perdu tout son boulot ce qui a l'avantage de l'éduquer sur Windows. Voilà pour l'explication du contexte.


Le paquet à faire doit donc à chaque installation installer la nouvelle version de maj, appliquer d'éventuels patchs et installer les fichiers ci dessus dans les bonnes places.&lt;br /&gt;
Comme précédemment, l'installation des fichiers se fait par le Makefile:

&lt;pre&gt;
#!/usr/bin/make
prefix          = /usr
exec_prefix     = ${prefix}
srcdir          = .

bindir          = ${exec_prefix}/bin
DESTDIR=


distclean: clean

clean:

install:
        mkdir -p $(DESTDIR)/etc/init.d
        mkdir -p $(DESTDIR)/etc/apt/
        mkdir -p $(DESTDIR)/usr/local/bin
        mkdir -p $(DESTDIR)/usr/local/windows
        cp -dpf maj $(DESTDIR)/etc/apt
        cp sources.list.lycee $(DESTDIR)/etc/apt/
        cp lomount $(DESTDIR)/usr/local/bin
        cp repareW98 $(DESTDIR)/usr/local/bin
   cp tux.xpm   $(DESTDIR)/var/lycee
        chmod +x $(DESTDIR)/usr/local/bin/*
        cp init.reg autoexec.bat $(DESTDIR)/usr/local/windows
&lt;/pre&gt;



Pour le fichier debian/rules, il n'y a pas de fabrication de binaires (donc commenter le $(MAKE) de build-stamp). Le reste est le script par défaut.


Le fichier debian/control contient les paquets rajoutés sur les machines au fur et à mesure de leur évolution:

&lt;pre&gt;
Source: lycee
[.....]
Package: lycee
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, camllight (&amp;gt;= 0.75-2), ntpdate, fingerd, sun-j2re1.4, tuareg-mode
Description: paquet de MAJ Lycee
Mise à jour incrémentale des systèmes Linux
&lt;/pre&gt;


Ici j'ai rajouté camllight, le mode tuareg pour caml, un java, ntpdate pour synchroniser les machines et fingerd pour savoir qui travaille et quand sur les machines (c'est mon coté bigbrother qu'il faut bien assumer).


Enfin, le fichier debian/postinst exécute les différents patchs éventuels:

&lt;pre&gt;
...
case &quot;$1&quot; in
    configure)
# remplacement de maj
    cp /etc/apt/maj /etc/init.d
    chmod +x /etc/init.d/maj
        update-rc.d maj defaults 99
# exécution patch1
    if [ ! -f /etc/lycee/patch1 ] ; then
        mkdir -p /etc/lycee/
        touch /etc/lycee/patch1
# là mettre les commandes du patch1, ici remplacement logo
        cd /etc/X11/xdm/pixmaps
        rm tux.xpm
        ln -s /var/lycee/tux.xpm
        echo &quot;Patch1 appliqué&quot;

    fi
        ;;
    abort-upgrade|abort-remove|abort-deconfigure)

    ;;

    *)
        echo &quot;postinst called with unknown argument \`$1'&quot; &amp;gt;&amp;amp;2
        exit 1
    ;;
esac
...
&lt;/pre&gt;



Pour faire une mise à jour sur les machines, il suffit donc de mettre à jour le dépot local et tout se fera automatiquement. Cela a remplacé avantageusement le rapatriement automatique de scripts. Ça montre bien la puissance du paquetage .deb qui permet vraiment de tout faire très simplement

== Fabrication rapide de backports. ==

Le problème s'est posé pour moi pour clamav avant la mise en place de debian/volatile (que je n'utilise pas du coup). clamav fait des maj régulièrement et mon serveur était sous potato puis est maintenant sous woody (je n'ai pas le temps ni le vrai désir de passer sous sarge). Il s'agit donc de faire des backports de clamav. Il se trouve que Stephen Gran a fait un paquet très propre (en tout cas la version 0.80), lors des mise à jour je procède comme suit:


Mettons que je parte de la version 0.80 &lt;br /&gt;
0) Récupération de l'arborescence debian de ce paquet &lt;br /&gt;
1) rapatriement de l'archive source clamav nouvelle &lt;br /&gt;
2) dépilage de cette archive et renommage du répertoire en clamav-0.80 &lt;br /&gt;
3) Exécution de

&lt;pre&gt;
$ dch -v backport-0.88-4
&lt;/pre&gt;


Le paquet sera dans la version backport-0.88 &lt;br /&gt;4) Compilation

&lt;pre&gt;
$ cd ../clamav-0.88-4
$ fakeroot dpkg-buildpackage -us -uc
&lt;/pre&gt;


C'est fini, les nouveaux paquets sont faits.


Voici les commandes tapés pour le passage de 0.88-2 à 0.88-4:

&lt;pre&gt;
cd
wget http://ovh.dl.sourceforge.net/sourceforge/clamav/clamav-0.88.4.tar.gz
ls clamav*
mv clamav-0.88/ clamav-backport-0.88-2
tar xzf clamav-0.88.4.tar.gz
tar tzf clamav-0.88.4.tar.gz
mv clamav-0.88.4 clamav-0.88
cd  clamav-0.88
cp -dpRf ../clamav-backport-0.88-2/debian/ .
cd ..
cd clamav-0.88
dch -v backport-0.88-4
fakeroot dpkg-buildpackage -us -uc
cd ..
ls
ls -ltr
ls *0.88-4*deb
scp *0.88-4*deb cerbere:/home/ftp/sarge/sarge
&lt;/pre&gt;


C'est tout. Les sources obtenus me permettent de faire les paquets pour woody, sarge amd64, etc.


Il peut y avoir quelques soucis nécessitant des retouches de debian/rules 


== Fabrication d'un paquet via checkinstall. ==

attention, il y a un bug dans la version de checkinstall de lenny, le checkinstall n'existe pas chez etch, on pourra le trouver ici &lt;br /&gt;
'''deb http://boisson.homeip.net/debian etch divers'''&lt;br /&gt;
Pour contourner le bug, lancer checkinstall avec l'option --fstrans=no &lt;br /&gt;
Sinon, checkinstall ne peut construire correctement le paquet si l'installation se fait avec un programme binaire statique.


Parfois, la méthode dh_make conduit à modifier le Makefile, on ne comprend plus rien et on a juste envie de faire un paquet et pas les paquets sources. Un petit génie a inventer checkinstall (par encore parfait mais bon)...


Exemple scilab version 4 dont j'avais besoin en urgence (ci dessous de mémoire, c'est reconstitué).&lt;br /&gt;
Chargement rapide des sources, configuration classique:

&lt;pre&gt;
$ cd scilab-4.0
$ ./configure --prefix=/usr
$ make all
&lt;/pre&gt;


bref, du classique.&lt;br /&gt;
Là commence checkinstall:

&lt;pre&gt;
$ su
# checkinstall make install

checkinstall 1.5.3, Copyright 2001 Felipe Eduardo Sanchez Diaz Duran
           This software is released under the GNU GPL.


The package documentation directory ./doc-pak does not exist.
Should I create a default set of package docs?  [y]:

Preparing package documentation...OK

Installing with &quot;make install&quot;...

========================= Installation results ===========================

Copying documentation directory...
[....]
======================== Installation succesful ==========================

Copying files to the temporary directory...OK

Striping ELF binaries and libraries...OK

Compressing man pages...OK

Building file list...OK


Please write a description for the package.
End your description with an empty line or EOF.
&amp;gt;&amp;gt;
&lt;/pre&gt;


là on tape la description du paquet suivi d'une ligne vide

&lt;pre&gt;
&amp;gt;&amp;gt; Scilab version 4 du 9 juillet 2006
&amp;gt;&amp;gt;
&lt;/pre&gt;


S'en suit les parties identifiant le paquet. On les remplit en tapant le numéro de la catégorie à modifier puis le texte correspondant.

&lt;pre&gt;
This package will be built according to these values:
 le numéro et en remplissant
0 -  Maintainer: [ [mailto:francois@boisson.homeip.net francois@chez.moi] ]
1 -  Summary: [ Scilab version 4 du 9 juillet 2006 ]
2 -  Name:    [ scilab ]
3 -  Version: [ 1.0 ]
4 -  Release: [ 1 ]
5 -  License: [ GPL ]
6 -  Group:   [ agreg ]
7 -  Architecture: [ i386 ]
8 -  Source location: [ scilab ]
9 -  Alternate source location: [  ]

Enter a number to change any of them or press ENTER to continue:

*****************************************
**** Debian package creation selected ***
*****************************************

Building Debian package...OK

Installing Debian package...

Erasing temporary files...OK

Writing backup package...OK

Deleting temp dir...OK


**********************************************************************

Done. The new package has been installed and saved to
/tmp/scilab/scilab_4.0_i386.deb

You can remove it from your system anytime using:

      dpkg -r scilab

**********************************************************************

#
&lt;/pre&gt;



Là on se dit c'est fini, eh ben non. checkinstall ne crée pas les dépendances. On peut les faire on modifiant les dépendances à la main. Pour cela, on utilisera le script suivant:

&lt;pre&gt;
/usr/local/bin/lsdepend:

#!/bin/sh
find . -type f | xargs ldd 2&amp;gt; /dev/null |
sed -e '1,$s/=.*//' |
sed -e '1,$s/^ */dpkg -S /' | grep -v &quot;:&quot; |
grep &quot;\.so&quot; |
sort -u | sh |
sed -e '1,$s/:.*//' |
sort -u |
sed -e '1,$s/^/dpkg -l | grep &quot;^[a-zA-Z]\\{2\\} * /' | sed -e '1,$s/$/ &quot;/' |sh
&lt;/pre&gt;


On fait donc tout d'abord l'extraction des fichiers du paquet dans un répertoire (ici gre).

&lt;pre&gt;
$ mkdir gre
$ cd gre
$ dpkg-deb -e ../scilab_4.0_i386.deb
$ dpkg-deb -x ../scilab_4.0_i386.deb .
&lt;/pre&gt;


La troisième commande fabrique un répertoire DEBIAN contenant un seul fichier control contenant

&lt;pre&gt;
Package: scilab
Priority: extra
Section: agreg
Installed-Size: 104436
Maintainer: [mailto:francois@boisson.homeip.net francois@chez.moi]
Architecture: i386
Version: 4.0-1
Description: Scilab version 4 du 9 juillet 2006
&lt;/pre&gt;


(La quatrième commande déplie l'archive des fichiers du paquet)&lt;br /&gt;
Pas de champ Depends dans ce fichier Control, donc de la pagaille et des déconvenues à prévoir. Pour cela on peut avoir une idée des paquets nécessaires avec le script lsdepend. Celui ci cherche les librairies appelées et donne la liste des paquets nécessaires. Ainsi ici, sachant que les bianires sont dans usr/lib/scilab-4.0/bin/

&lt;pre&gt;
$ cd /usr/lib/scilab-4.0/bin/
francois@totoche:/usr/lib/scilab-4.0/bin$ lsdepend
ii  libc6          2.3.2.ds1-22   GNU C Library: Shared libraries and Timezone
ii  libg2c0        3.3.5-13       Runtime library for GNU Fortran 77 applicati
ii  libgcc1        3.4.3-12       GCC support library
ii  libice6        4.3.0.dfsg.1-1 Inter-Client Exchange library
ii  libncurses5    5.4-4          Shared libraries for terminal handling
ii  libsm6         4.3.0.dfsg.1-1 X Window System Session Management library
ii  libx11-6       4.3.0.dfsg.1-1 X Window System protocol client library
ii  libxext6       4.3.0.dfsg.1-1 X Window System miscellaneous extension libr
ii  libxmu6        4.3.0.dfsg.1-1 X Window System miscellaneous utility librar
ii  libxpm4        4.3.0.dfsg.1-1 X pixmap library
ii  libxt6         4.3.0.dfsg.1-1 X Toolkit Intrinsics
ii  maple4         1.0-1          Paquet Maple4
ii  tcl8.4         8.4.9-1        Tcl (the Tool Command Language) v8.4 - run-t
ii  tk8.4          8.4.9-1        Tk toolkit for Tcl and X11, v8.4 - run-time
ii  xaw3dg         1.5+E-8        Xaw3d widget set
francois@totoche:/usr/lib/scilab-4.0/bin$
&lt;/pre&gt;


Le paquet maple4 est une hérésie non libre inutile (doublon) qu'on oublie, cela nous donne le champ Depends suivant:

&lt;pre&gt;
Depends: libc6, tk8.4, tcl8.4, xaw3dg, libxmu6, libxt6, libxext6, libsm6, libice6, libx11-6, libncurses5, libg2c0, libgcc1, libxpm4
&lt;/pre&gt;


et le fichier DEBIAN/control suivant

&lt;pre&gt;
Package: scilab
Priority: extra
Section: agreg
Installed-Size: 104436
Maintainer: [mailto:francois@boisson.homeip.net francois@chez.moi]
Architecture: i386
Depends: libc6, tk8.4, tcl8.4, xaw3dg, libxmu6, libxt6, libxext6, libsm6, libice6, libx11-6, libncurses5, libg2c0, libgcc1, libxpm4
Version: 4.0-1
Description: Scilab version 4 du 9 juillet 2006
&lt;/pre&gt;


On peut éventuellement créer un fichier DEBIAN/postinst et DEBIAN/prerm si on veut éxécuter un script juste après l'installation ou un script avant la désinstallation. Il ne reste plus qu'à refaire le paquet:

&lt;pre&gt;
$ cd ..
$  dpkg-deb -b gre scilab_4.0_i386.deb
dpkg-deb : construction du paquet « scilab » dans « scilab_4.0_i386.deb ».
francois@totoche:/tmp$
&lt;/pre&gt;


et voilà le beau paquet scilab avec ses dépendances (du moins on l'espère). Bien évidemment, c'est rustique comme méthode mais cela permet de dupliquer une installation facilement et cela constitue une alternative pratique et rapide à la méthode classique sans sombrer dans les méandres d'un debian/rules ne fonctionnant pas...


== Recompilation ==

Pour le coup c'est très simple. Il suffit de charger les sources, modifier eventuellement les options et recompiler le paquet. Soit donc pour le paquet paquet-1.23-6_i386.deb

&lt;pre&gt;
$ apt-get source paquet
$ cd paquet-1.23
$ emacs debian/rules
&lt;/pre&gt;

(là chercher les options, regarder pres de la cible configure_stamp: ou build_stamp: et les modifier)

&lt;pre&gt;
$ fakeroot dpkg-buildpackage -b -uc
$ cd ..
$ ls *.deb
&lt;/pre&gt;

Le paquet est prêt.


== Fabrication directe. ==


Un paquet peut être fait simplement. Pour cela

* Préparer l'arborescence des fichiers composant le paquet dans un répertoire /tmp/paquet.
* Faire un répertoire /tmp/paquet/DEBIAN
* Y mettre dedans un fichier control de la forme

&lt;pre&gt;
Package: nomdupaquet
Priority: optional
Section: x11
Installed-Size: 4023 (si le paquet fait 4023K environ)
Maintainer: Georges Sand &amp;lt;aurore.dupin@chopin.muses.fr&amp;gt;
Architecture: all
Version: 1.0
Depends: xbase-clients
Description: Modifications de startx
Lancement de X différent
.
&lt;/pre&gt;

* Y mettre éventuellement un fichier '''postinst''' (éxécutable) pour les éventuels instructions à faire après l'installation. Dans le cas où un fichier d'un paquet est modifié (mettons startx ici) il est important de faire une «diversion», ce qui se fait par un fichier '''preinst ''' comme suit:

&lt;pre&gt;
set -e
case &quot;$1&quot; in
 install)
 dpkg-divert --package nomdupaquet --divert /usr/bin/startx.org --rename /usr/bin/startx
 dpkg-divert --package nomdupaquet --divert /usr/X11R6/bin/startx.org --rename /usr/X11R6/bin/startx
 ;;
 abort-upgrade)
 ;;
 upgrade)
 ;;
 *)
 echo &quot;preinst called with unknown argument \`$1'&quot; &amp;gt;&amp;amp;2
 exit 1
 ;;
esac
exit 0
&lt;/pre&gt;


et bien sûr un fichier '''postrm''' supprimant la diversion en cas de retrait du paquet:

&lt;pre&gt;
set -e
case &quot;$1&quot; in
 remove|purge)
 dpkg-divert --package xbase-agreg --rename --remove /usr/X11R6/bin/startx
 dpkg-divert --package xbase-agreg --rename --remove /usr/bin/startx

 ;;
 upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
 ;;
 *)
 echo &quot;postrm called with unknown argument \`$1'&quot; &amp;gt;&amp;amp;2
 exit 0
esac
&lt;/pre&gt;

* faire ensuite

&lt;pre&gt;
$ cd /tmp/paquet
$ find . -type f | grep -v &quot;^./DEBIAN&quot; | md5sum &amp;gt; DEBIAN/md5sums
$ su
# chown -R root.root *
# dpkg-deb -b . ../nomdupaquet-1.0_all.deb
&lt;/pre&gt;


* Le paquet est prêt.

[[Utilisateur:fran.b|François Boisson]]

[[Category:Paquets]]</text>
      <sha1>taaoo9u8aqb7mzo1dijt1zf5qsxmro8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5404</id>
      <parentid>1656</parentid>
      <timestamp>2013-09-16T10:29:28Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>/* Fabrication directe. */ utilisation de fakeroot plutôt que manipulations en root</comment>
      <text xml:space="preserve" bytes="22398">== Présentation ==
Ce petit memento comporte 5 parties: 

# Fabrication d'un paquet élémentaire (vikings)
# Fabrication d'un paquet plus compliqué avec compilation (cacheproc)
# Exemple d'un paquet de scripts de mise à jour
# Le rétroportage vite fait, bien ou mal fait
# ./configure;make;make install et paquet debian...
# Recompilation
# Fabrication directe.


'''Les sources et les résultats de ces paquets se trouvent sur'''&lt;br /&gt;
'''deb http://boisson.homeip.net/sarge/ ./'''&lt;br /&gt;
'''deb http://boisson.homeip.net/source ./'''&lt;br /&gt;

== Un exemple très simple : vikings ==

'''On ne travaille PAS sous root'''

Ce paquet contient une arborescence /usr/games/lost et un script /usr/games/vik. Les fichiers sont tout prêts et n'ont pas besoin de préparation.

* Faire un répertoire /tmp/vikings-1.0
* Y mettre vik et le répertoire lost
* Faire


&lt;pre&gt;
$ cd /tmp
$ cd vikings-1.0/
$ dh_make
&lt;/pre&gt;


dh_make pose la question de savoir si c'est un paquet simple (oui), multiple, librairie ou module noyau.
 
Il crée un répertoire debian et un répertoire /tmp/vikings-1.0.orig permettant de faire le fichier .diff.gz (les paquets sources contiennent en général les sources initiaux, un fichier .diff rajoutant l'arborescence et les patchs debian et un fichier .dsc décrivant le paquet). 

''A ce stade, il est important de noter que seules des modifications de textes sont permises. Si un binaire est modifié dans le paquet source, il est nécessaire de supprimer le répertoire /tmp/vikings-1.0.orig, les sources seront alors composées d'un fichier .tar.gz et d'un fichier .dsc (pas de diff.gz),''&lt;br /&gt;

Puis viennent les éditions


&lt;pre&gt;
$ emacs debian/control
&lt;/pre&gt;


Mettre à jour les champs Description, et éventuellement Depends. Ici, le paquet dépend de dosbox donc remplacer


&lt;pre&gt;
Depends: ${shlibs:Depends}, ${misc:Depends}
&lt;/pre&gt;


par


&lt;pre&gt;
Depends: dosbox
&lt;/pre&gt;


(la syntaxe est paquet, paquet, ...)&lt;br /&gt;

Faire


&lt;pre&gt;
$ emacs debian/rules
&lt;/pre&gt;


Ce fichier est essentiel car il contient les instructions permettant de faire le paquet. Ici, il n'y a pas de Makefile donc virer ou commenter les lignes contenant $(MAKE), puis remplacer la ligne


&lt;pre&gt;
        $(MAKE) install DESTDIR=$(CURDIR)/debian/vikings
&lt;/pre&gt;


par


&lt;pre&gt;
        cp -dpRf vik lost $(CURDIR)/debian/vikings/usr/games
&lt;/pre&gt;


''Le répertoire de travail est /tmp/vikings-1.0=CURDIR, $(CURDIR)/debian/vikings contient l'arborescence du paquet à venir''. Il est parfois bon de faire au préalable


&lt;pre&gt;
        mkdir -p $(CURDIR)/debian/vikings/usr/games
        cp -dpRf vik lost $(CURDIR)/debian/vikings/usr/games
&lt;/pre&gt;


Pour créer le répertoire, une autre méthode plus simple consiste à déclarer le répertoire dans debian/dirs


&lt;pre&gt;
$ emacs debian/dirs
&lt;/pre&gt;


(Y mettre usr/games et virer le reste). Faire


&lt;pre&gt;
$ emacs debian/copyright
&lt;/pre&gt;


pour y mettre la licence. Ici j'ai complété par &lt;br /&gt;
«It was downloaded from abandonnia». Faire de même pour README.debian. &lt;br /&gt;
Ces fichiers debian/README.debian et debian/copyright se retrouvent toujours et sont copiés sur /usr/share/doc/&amp;lt;paquet&amp;gt;/. Usuellement, on rajoute un fichier README de doc.


Faire enfin

&lt;pre&gt;
$ fakeroot dpkg-buildpackage -us -uc
&lt;/pre&gt;


qui fabrique les paquets sources et le .deb. &lt;br /&gt;
Supposons que damned, faute de frappe et le paquet plante. Dans ce cas, repartir de sources propres:


&lt;pre&gt;
$ cd ..
$ rm -Rf vikings-1.0/
$ dpkg-source -x vikings_1.0-1.dsc
$ cd vikings-1.0/
$ emacs [le fichier fautif (Makefile ou debian/rules souvent)]
$ fakeroot dpkg-buildpackage -us -uc
&lt;/pre&gt;


Le paquet vikings_1.0-1_i386.deb est créé dans la racine.

== Un deuxième exemple: cacheproc ==

cacheproc est un petit programme recherchant des processus cachés, il est écrit en camllight. Il se compose de

&lt;pre&gt;
-rw-r--r--  1 francois src 2474 2004-01-19 22:08 chercheprocess.ml
-rw-r--r--  1 francois src  707 2004-01-19 22:22 Makefile
-rw-r--r--  1 francois src 1450 2004-01-19 22:32 README
-rw-r--r--  1 francois src 1936 2004-01-19 22:08 regarde.ml
&lt;/pre&gt;

On procède comme ci dessus (dh_make, etc), l'idéal étant de modifier le moins possible debian/rules en utilisant le Makefile.&lt;br /&gt;
README est un fichier sommaire de docs. Je le copie sur debian/README.debian (ce qui est une mauvaise idée mais bon, c'était un de mes premiers paquets)&lt;br /&gt;
a) le fichier debian/control&lt;br /&gt;
Outre les rubriques usuelles, rajouter camllight dans le Build-Depends:

&lt;pre&gt;
Build-Depends: debhelper (&amp;gt;&amp;gt; 3.0.0), camllight
&lt;/pre&gt;

''(J'oublie tout le temps, dsl)''&lt;br /&gt;
b) mettre usr/bin dans debian/dirs (c'est là où seront les binaires) &lt;br /&gt;
c) Dans debian/rules mettre

&lt;pre&gt;
       $(MAKE) all
&lt;/pre&gt;

au lieu de $(MAKE) dans le build-stamp et commenter le dh_strip (les objets caml supporte mal le strip (=compression de l'exe)).&lt;br /&gt;
Reste donc à faire le Makefile. J'utilise un Makefile «générique» que je modifie à la demande. Il contient

&lt;pre&gt;
#!/usr/bin/make
prefix          = /usr
exec_prefix     = ${prefix}
srcdir          = .

bindir          = ${exec_prefix}/bin
DESTDIR=

INSTALL_LIST_BIN=regarde chercheprocess

distclean: clean

clean:
        -rm *.zi *.zo *~
        for i in $(INSTALL_LIST_BIN); do if test -f $$i; then rm $$i; fi; done

install:
        for i in $(DESTDIR)$(bindir); do mkdir -p $$i &amp;amp;&amp;amp; test -d $$i &amp;amp;&amp;amp; test -w $$i; done
        for i in $(INSTALL_LIST_BIN); do if test -f $$i; then cp $$i $(DESTDIR)$(bindir); else cp $(srcdir)/$$i $(DESTDIR)$(bindir); fi; done


all: chercheprocess regarde

chercheprocess: chercheprocess.ml
        camlc -custom -o chercheprocess -lunix chercheprocess.ml

regarde: regarde.ml
        camlc -custom -o regarde -lunix regarde.ml
&lt;/pre&gt;

Les lignes importantes sont INSTALL_LIST_BIN=.. donnant la liste des binaires à obtenir. Les cibles sont clean, all et install.&lt;br /&gt;
'''clean''' nettoie les fichiers objets (noter le -rm et non rm qui évite l'erreur si il n'y a pas de fichier objet, ''on peut se demander pourquoi je n'ai pas fait pareil pour les binaires mais bon...'')&lt;br /&gt;
'''install''' installe les binaires dans le répertoire $(DESTDIR)$(bindir), donc ici on crée le répertoire, on vérifie qu'il y a les bons droits, puis on y copie les binaires de la liste INSTALL_LIST_BIN (à noter que dans mon script, j'ai prévu le cas où il y a un répertoire source séparé).&lt;br /&gt;
'''all''' renvoie sur 2 cibles, une par binaire. Chaque cible fabrique le binaire correspondant.&lt;br /&gt;
Le reste est comme dans 1) 

== Un paquet de mis à jour pour gérer un parc de machines. ==

Ce genre de paquet est très utile pour répercuter des patchs sur un lot de machines (salle) toutes indentiques.

Pour cela on utilise un script /etc/init.d/maj contenant dans la rubrique start

&lt;pre&gt;
        echo -n &quot;Starting $DESC: $NAME&quot;
        cp /etc/apt/sources.list.lycee /etc/apt/sources.list
        apt-get update
        apt-get install -y lycee
        cp /etc/apt/sources.list.vrai /etc/apt/sources.list
        echo &quot;.&quot;
   # rajout éventuel de compléments
&lt;/pre&gt;


puis on fait

&lt;pre&gt;
$ chmod +x /etc/init.d/maj
$ update-rc.d maj defaults 99
&lt;/pre&gt;

/etc/apt/sources.list.lycee &lt;br /&gt;
contient une ligne &lt;br /&gt;
deb file:/home/ftp/ / &lt;br /&gt;
qui est ici un dépot partagé via nfs. 


Le paquet pris en exemple est celui qui me permet de gérer les salles du lycée où je travaille. A l'heure actuelle il contient

&lt;pre&gt;
tux.xpm autoexec.bat  init.reg  lomount  maj  Makefile  repareW98  sources.list.lycee
&lt;/pre&gt;


Il faut savoir que les logiciels de chimie utilisés par les élèves tournent sur un Windows98 dans un qemu (les machines sont des amd64). Comme prévus les patchs concernent surtout windows98. On y trouve un nouvel autoexex.bat, un fichier init.reg à mettre dans la racine du disque virtuel windows. Pour cela un utilitaire lomount (dont j'ai fini par faire un paquet) permet de monter des partitions d'une image d'un disque hda par exemple. repareW98 est un script qui remplace l'image du disque virtuel par une image neuve et y applique les patches. Quand l'élève plante le Windows (en gros toutes les deux heures), il clique sur une icone «repareWindows», et relance un windows tout neuf. Il a perdu tout son boulot ce qui a l'avantage de l'éduquer sur Windows. Voilà pour l'explication du contexte.


Le paquet à faire doit donc à chaque installation installer la nouvelle version de maj, appliquer d'éventuels patchs et installer les fichiers ci dessus dans les bonnes places.&lt;br /&gt;
Comme précédemment, l'installation des fichiers se fait par le Makefile:

&lt;pre&gt;
#!/usr/bin/make
prefix          = /usr
exec_prefix     = ${prefix}
srcdir          = .

bindir          = ${exec_prefix}/bin
DESTDIR=


distclean: clean

clean:

install:
        mkdir -p $(DESTDIR)/etc/init.d
        mkdir -p $(DESTDIR)/etc/apt/
        mkdir -p $(DESTDIR)/usr/local/bin
        mkdir -p $(DESTDIR)/usr/local/windows
        cp -dpf maj $(DESTDIR)/etc/apt
        cp sources.list.lycee $(DESTDIR)/etc/apt/
        cp lomount $(DESTDIR)/usr/local/bin
        cp repareW98 $(DESTDIR)/usr/local/bin
   cp tux.xpm   $(DESTDIR)/var/lycee
        chmod +x $(DESTDIR)/usr/local/bin/*
        cp init.reg autoexec.bat $(DESTDIR)/usr/local/windows
&lt;/pre&gt;



Pour le fichier debian/rules, il n'y a pas de fabrication de binaires (donc commenter le $(MAKE) de build-stamp). Le reste est le script par défaut.


Le fichier debian/control contient les paquets rajoutés sur les machines au fur et à mesure de leur évolution:

&lt;pre&gt;
Source: lycee
[.....]
Package: lycee
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, camllight (&amp;gt;= 0.75-2), ntpdate, fingerd, sun-j2re1.4, tuareg-mode
Description: paquet de MAJ Lycee
Mise à jour incrémentale des systèmes Linux
&lt;/pre&gt;


Ici j'ai rajouté camllight, le mode tuareg pour caml, un java, ntpdate pour synchroniser les machines et fingerd pour savoir qui travaille et quand sur les machines (c'est mon coté bigbrother qu'il faut bien assumer).


Enfin, le fichier debian/postinst exécute les différents patchs éventuels:

&lt;pre&gt;
...
case &quot;$1&quot; in
    configure)
# remplacement de maj
    cp /etc/apt/maj /etc/init.d
    chmod +x /etc/init.d/maj
        update-rc.d maj defaults 99
# exécution patch1
    if [ ! -f /etc/lycee/patch1 ] ; then
        mkdir -p /etc/lycee/
        touch /etc/lycee/patch1
# là mettre les commandes du patch1, ici remplacement logo
        cd /etc/X11/xdm/pixmaps
        rm tux.xpm
        ln -s /var/lycee/tux.xpm
        echo &quot;Patch1 appliqué&quot;

    fi
        ;;
    abort-upgrade|abort-remove|abort-deconfigure)

    ;;

    *)
        echo &quot;postinst called with unknown argument \`$1'&quot; &amp;gt;&amp;amp;2
        exit 1
    ;;
esac
...
&lt;/pre&gt;



Pour faire une mise à jour sur les machines, il suffit donc de mettre à jour le dépot local et tout se fera automatiquement. Cela a remplacé avantageusement le rapatriement automatique de scripts. Ça montre bien la puissance du paquetage .deb qui permet vraiment de tout faire très simplement

== Fabrication rapide de backports. ==

Le problème s'est posé pour moi pour clamav avant la mise en place de debian/volatile (que je n'utilise pas du coup). clamav fait des maj régulièrement et mon serveur était sous potato puis est maintenant sous woody (je n'ai pas le temps ni le vrai désir de passer sous sarge). Il s'agit donc de faire des backports de clamav. Il se trouve que Stephen Gran a fait un paquet très propre (en tout cas la version 0.80), lors des mise à jour je procède comme suit:


Mettons que je parte de la version 0.80 &lt;br /&gt;
0) Récupération de l'arborescence debian de ce paquet &lt;br /&gt;
1) rapatriement de l'archive source clamav nouvelle &lt;br /&gt;
2) dépilage de cette archive et renommage du répertoire en clamav-0.80 &lt;br /&gt;
3) Exécution de

&lt;pre&gt;
$ dch -v backport-0.88-4
&lt;/pre&gt;


Le paquet sera dans la version backport-0.88 &lt;br /&gt;4) Compilation

&lt;pre&gt;
$ cd ../clamav-0.88-4
$ fakeroot dpkg-buildpackage -us -uc
&lt;/pre&gt;


C'est fini, les nouveaux paquets sont faits.


Voici les commandes tapés pour le passage de 0.88-2 à 0.88-4:

&lt;pre&gt;
cd
wget http://ovh.dl.sourceforge.net/sourceforge/clamav/clamav-0.88.4.tar.gz
ls clamav*
mv clamav-0.88/ clamav-backport-0.88-2
tar xzf clamav-0.88.4.tar.gz
tar tzf clamav-0.88.4.tar.gz
mv clamav-0.88.4 clamav-0.88
cd  clamav-0.88
cp -dpRf ../clamav-backport-0.88-2/debian/ .
cd ..
cd clamav-0.88
dch -v backport-0.88-4
fakeroot dpkg-buildpackage -us -uc
cd ..
ls
ls -ltr
ls *0.88-4*deb
scp *0.88-4*deb cerbere:/home/ftp/sarge/sarge
&lt;/pre&gt;


C'est tout. Les sources obtenus me permettent de faire les paquets pour woody, sarge amd64, etc.


Il peut y avoir quelques soucis nécessitant des retouches de debian/rules 


== Fabrication d'un paquet via checkinstall. ==

attention, il y a un bug dans la version de checkinstall de lenny, le checkinstall n'existe pas chez etch, on pourra le trouver ici &lt;br /&gt;
'''deb http://boisson.homeip.net/debian etch divers'''&lt;br /&gt;
Pour contourner le bug, lancer checkinstall avec l'option --fstrans=no &lt;br /&gt;
Sinon, checkinstall ne peut construire correctement le paquet si l'installation se fait avec un programme binaire statique.


Parfois, la méthode dh_make conduit à modifier le Makefile, on ne comprend plus rien et on a juste envie de faire un paquet et pas les paquets sources. Un petit génie a inventer checkinstall (par encore parfait mais bon)...


Exemple scilab version 4 dont j'avais besoin en urgence (ci dessous de mémoire, c'est reconstitué).&lt;br /&gt;
Chargement rapide des sources, configuration classique:

&lt;pre&gt;
$ cd scilab-4.0
$ ./configure --prefix=/usr
$ make all
&lt;/pre&gt;


bref, du classique.&lt;br /&gt;
Là commence checkinstall:

&lt;pre&gt;
$ su
# checkinstall make install

checkinstall 1.5.3, Copyright 2001 Felipe Eduardo Sanchez Diaz Duran
           This software is released under the GNU GPL.


The package documentation directory ./doc-pak does not exist.
Should I create a default set of package docs?  [y]:

Preparing package documentation...OK

Installing with &quot;make install&quot;...

========================= Installation results ===========================

Copying documentation directory...
[....]
======================== Installation succesful ==========================

Copying files to the temporary directory...OK

Striping ELF binaries and libraries...OK

Compressing man pages...OK

Building file list...OK


Please write a description for the package.
End your description with an empty line or EOF.
&amp;gt;&amp;gt;
&lt;/pre&gt;


là on tape la description du paquet suivi d'une ligne vide

&lt;pre&gt;
&amp;gt;&amp;gt; Scilab version 4 du 9 juillet 2006
&amp;gt;&amp;gt;
&lt;/pre&gt;


S'en suit les parties identifiant le paquet. On les remplit en tapant le numéro de la catégorie à modifier puis le texte correspondant.

&lt;pre&gt;
This package will be built according to these values:
 le numéro et en remplissant
0 -  Maintainer: [ [mailto:francois@boisson.homeip.net francois@chez.moi] ]
1 -  Summary: [ Scilab version 4 du 9 juillet 2006 ]
2 -  Name:    [ scilab ]
3 -  Version: [ 1.0 ]
4 -  Release: [ 1 ]
5 -  License: [ GPL ]
6 -  Group:   [ agreg ]
7 -  Architecture: [ i386 ]
8 -  Source location: [ scilab ]
9 -  Alternate source location: [  ]

Enter a number to change any of them or press ENTER to continue:

*****************************************
**** Debian package creation selected ***
*****************************************

Building Debian package...OK

Installing Debian package...

Erasing temporary files...OK

Writing backup package...OK

Deleting temp dir...OK


**********************************************************************

Done. The new package has been installed and saved to
/tmp/scilab/scilab_4.0_i386.deb

You can remove it from your system anytime using:

      dpkg -r scilab

**********************************************************************

#
&lt;/pre&gt;



Là on se dit c'est fini, eh ben non. checkinstall ne crée pas les dépendances. On peut les faire on modifiant les dépendances à la main. Pour cela, on utilisera le script suivant:

&lt;pre&gt;
/usr/local/bin/lsdepend:

#!/bin/sh
find . -type f | xargs ldd 2&amp;gt; /dev/null |
sed -e '1,$s/=.*//' |
sed -e '1,$s/^ */dpkg -S /' | grep -v &quot;:&quot; |
grep &quot;\.so&quot; |
sort -u | sh |
sed -e '1,$s/:.*//' |
sort -u |
sed -e '1,$s/^/dpkg -l | grep &quot;^[a-zA-Z]\\{2\\} * /' | sed -e '1,$s/$/ &quot;/' |sh
&lt;/pre&gt;


On fait donc tout d'abord l'extraction des fichiers du paquet dans un répertoire (ici gre).

&lt;pre&gt;
$ mkdir gre
$ cd gre
$ dpkg-deb -e ../scilab_4.0_i386.deb
$ dpkg-deb -x ../scilab_4.0_i386.deb .
&lt;/pre&gt;


La troisième commande fabrique un répertoire DEBIAN contenant un seul fichier control contenant

&lt;pre&gt;
Package: scilab
Priority: extra
Section: agreg
Installed-Size: 104436
Maintainer: [mailto:francois@boisson.homeip.net francois@chez.moi]
Architecture: i386
Version: 4.0-1
Description: Scilab version 4 du 9 juillet 2006
&lt;/pre&gt;


(La quatrième commande déplie l'archive des fichiers du paquet)&lt;br /&gt;
Pas de champ Depends dans ce fichier Control, donc de la pagaille et des déconvenues à prévoir. Pour cela on peut avoir une idée des paquets nécessaires avec le script lsdepend. Celui ci cherche les librairies appelées et donne la liste des paquets nécessaires. Ainsi ici, sachant que les bianires sont dans usr/lib/scilab-4.0/bin/

&lt;pre&gt;
$ cd /usr/lib/scilab-4.0/bin/
francois@totoche:/usr/lib/scilab-4.0/bin$ lsdepend
ii  libc6          2.3.2.ds1-22   GNU C Library: Shared libraries and Timezone
ii  libg2c0        3.3.5-13       Runtime library for GNU Fortran 77 applicati
ii  libgcc1        3.4.3-12       GCC support library
ii  libice6        4.3.0.dfsg.1-1 Inter-Client Exchange library
ii  libncurses5    5.4-4          Shared libraries for terminal handling
ii  libsm6         4.3.0.dfsg.1-1 X Window System Session Management library
ii  libx11-6       4.3.0.dfsg.1-1 X Window System protocol client library
ii  libxext6       4.3.0.dfsg.1-1 X Window System miscellaneous extension libr
ii  libxmu6        4.3.0.dfsg.1-1 X Window System miscellaneous utility librar
ii  libxpm4        4.3.0.dfsg.1-1 X pixmap library
ii  libxt6         4.3.0.dfsg.1-1 X Toolkit Intrinsics
ii  maple4         1.0-1          Paquet Maple4
ii  tcl8.4         8.4.9-1        Tcl (the Tool Command Language) v8.4 - run-t
ii  tk8.4          8.4.9-1        Tk toolkit for Tcl and X11, v8.4 - run-time
ii  xaw3dg         1.5+E-8        Xaw3d widget set
francois@totoche:/usr/lib/scilab-4.0/bin$
&lt;/pre&gt;


Le paquet maple4 est une hérésie non libre inutile (doublon) qu'on oublie, cela nous donne le champ Depends suivant:

&lt;pre&gt;
Depends: libc6, tk8.4, tcl8.4, xaw3dg, libxmu6, libxt6, libxext6, libsm6, libice6, libx11-6, libncurses5, libg2c0, libgcc1, libxpm4
&lt;/pre&gt;


et le fichier DEBIAN/control suivant

&lt;pre&gt;
Package: scilab
Priority: extra
Section: agreg
Installed-Size: 104436
Maintainer: [mailto:francois@boisson.homeip.net francois@chez.moi]
Architecture: i386
Depends: libc6, tk8.4, tcl8.4, xaw3dg, libxmu6, libxt6, libxext6, libsm6, libice6, libx11-6, libncurses5, libg2c0, libgcc1, libxpm4
Version: 4.0-1
Description: Scilab version 4 du 9 juillet 2006
&lt;/pre&gt;


On peut éventuellement créer un fichier DEBIAN/postinst et DEBIAN/prerm si on veut éxécuter un script juste après l'installation ou un script avant la désinstallation. Il ne reste plus qu'à refaire le paquet:

&lt;pre&gt;
$ cd ..
$  dpkg-deb -b gre scilab_4.0_i386.deb
dpkg-deb : construction du paquet « scilab » dans « scilab_4.0_i386.deb ».
francois@totoche:/tmp$
&lt;/pre&gt;


et voilà le beau paquet scilab avec ses dépendances (du moins on l'espère). Bien évidemment, c'est rustique comme méthode mais cela permet de dupliquer une installation facilement et cela constitue une alternative pratique et rapide à la méthode classique sans sombrer dans les méandres d'un debian/rules ne fonctionnant pas...


== Recompilation ==

Pour le coup c'est très simple. Il suffit de charger les sources, modifier eventuellement les options et recompiler le paquet. Soit donc pour le paquet paquet-1.23-6_i386.deb

&lt;pre&gt;
$ apt-get source paquet
$ cd paquet-1.23
$ emacs debian/rules
&lt;/pre&gt;

(là chercher les options, regarder pres de la cible configure_stamp: ou build_stamp: et les modifier)

&lt;pre&gt;
$ fakeroot dpkg-buildpackage -b -uc
$ cd ..
$ ls *.deb
&lt;/pre&gt;

Le paquet est prêt.


== Fabrication directe. ==


Un paquet peut être fait simplement. Pour cela

* Préparer l'arborescence des fichiers composant le paquet dans un répertoire /tmp/paquet.
* Faire un répertoire /tmp/paquet/DEBIAN
* Y mettre dedans un fichier control de la forme

&lt;pre&gt;
Package: nomdupaquet
Priority: optional
Section: x11
Installed-Size: 4023 (si le paquet fait 4023K environ)
Maintainer: Georges Sand &amp;lt;aurore.dupin@chopin.muses.fr&amp;gt;
Architecture: all
Version: 1.0
Depends: xbase-clients
Description: Modifications de startx
Lancement de X différent
.
&lt;/pre&gt;

* Y mettre éventuellement un fichier '''postinst''' (éxécutable) pour les éventuels instructions à faire après l'installation. Dans le cas où un fichier d'un paquet est modifié (mettons startx ici) il est important de faire une «diversion», ce qui se fait par un fichier '''preinst ''' comme suit:

&lt;pre&gt;
set -e
case &quot;$1&quot; in
 install)
 dpkg-divert --package nomdupaquet --divert /usr/bin/startx.org --rename /usr/bin/startx
 dpkg-divert --package nomdupaquet --divert /usr/X11R6/bin/startx.org --rename /usr/X11R6/bin/startx
 ;;
 abort-upgrade)
 ;;
 upgrade)
 ;;
 *)
 echo &quot;preinst called with unknown argument \`$1'&quot; &amp;gt;&amp;amp;2
 exit 1
 ;;
esac
exit 0
&lt;/pre&gt;


et bien sûr un fichier '''postrm''' supprimant la diversion en cas de retrait du paquet:

&lt;pre&gt;
set -e
case &quot;$1&quot; in
 remove|purge)
 dpkg-divert --package xbase-agreg --rename --remove /usr/X11R6/bin/startx
 dpkg-divert --package xbase-agreg --rename --remove /usr/bin/startx

 ;;
 upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
 ;;
 *)
 echo &quot;postrm called with unknown argument \`$1'&quot; &amp;gt;&amp;amp;2
 exit 0
esac
&lt;/pre&gt;

* lancer ensuite la série de commandes suivante (nécessite d'avoir installé au préalable le paquet &quot;fakeroot&quot;) :

&lt;pre&gt;
$ cd /tmp/paquet
$ find . -type f | grep -v &quot;^./DEBIAN&quot; | md5sum &amp;gt; DEBIAN/md5sums
$ fakeroot dpkg-deb -b . ../nomdupaquet-1.0_all.deb
&lt;/pre&gt;


* Le paquet est prêt.

[[Utilisateur:fran.b|François Boisson]]

[[Category:Paquets]]</text>
      <sha1>jj0btk5qb8pkpc2v4ppzo8m15hn0u2o</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fdm</title>
    <ns>0</ns>
    <id>1180</id>
    <revision>
      <id>4842</id>
      <timestamp>2012-12-18T14:48:18Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <comment>Page créée avec « &lt;h2 id=&quot;fdm&quot;&gt; Récupération du courrier avec fdm &lt;/h2&gt; Bien qu'il existe la possibilité d'utilier les bulldozer fetchmail et procmail, je vous propose ici une solution p... »</comment>
      <text xml:space="preserve" bytes="9310">&lt;h2 id=&quot;fdm&quot;&gt;
Récupération du courrier avec fdm
&lt;/h2&gt;
Bien qu'il existe la possibilité d'utilier les bulldozer fetchmail et procmail, je vous propose ici une solution plus légère : [http://fdm.sourceforge.net/ fdm]. À lui tout seul, il peut récupérer vos e-mails, les trier selon le destinataire, l'lémetteur, la date, archiver vos mails...

Par la suite, vous serez en mesure de lire vos mails localement, puisqu'ils seront téléchargés dans vos dossiers. Pour cela, on utilise des dossiers appelés [http://fr.wikipedia.org/wiki/Maildir Maildir], eux mêmes composés de sous-dossier &lt;tt&gt;cur&lt;/tt&gt;, &lt;tt&gt;new&lt;/tt&gt; et &lt;tt&gt;temp&lt;/tt&gt;. Pensez donc à créer ces dossiers avant décupérer vos mails.

L'installation est des plus simple : &lt;tt&gt;apt-get install fdm&lt;/tt&gt;.

Maintenant, on peut le configurer. Pour cela, créez un fichier &lt;tt&gt;~/.fdm.conf&lt;/tt&gt; (le '~' représentant votre répertoire utilisateur).

=== Ajout des comptes ===

On peut désormais préciser dans le fichier de configuration les comptes e-mail. Cela se fait avec la syntaxe suivante :

&lt;pre&gt;account &amp;quot;compte1&amp;quot; imap server &amp;quot;imap.serveur.net&amp;quot; port 143
    user &amp;quot;utilisateur&amp;quot; pass &amp;quot;******&amp;quot;&lt;/pre&gt;
Ce qui est précisé entre guillemets ainsi que le numéro du port est à remplacer selon vos besoins. Sachez que &amp;quot;compte1&amp;quot; est le nom donné à ce compte, pour pouvoir se repérer ensuite dans la configuration.&lt;br /&gt;
Il est tout à fait possible de définir plusieurs comptes de cette façon. Attention toutefois, pour les comptes imap ssl, remplacez &lt;tt&gt;imap&lt;/tt&gt; par &lt;tt&gt;imaps&lt;/tt&gt;

=== Définir des actions ===

[http://fdm.sourceforge.net/ fdm] utilise un système d'&amp;quot;actions&amp;quot; pour traiter vos e-mails. Par exemple, on peut définir une action nommée &amp;quot;inlaposte&amp;quot;, pour déplacer les messages dans le dossier [http://fr.wikipedia.org/wiki/Maildir maildir] &amp;quot;/home/xavier/Maildir/laposte&amp;quot;.&lt;br /&gt;
''Afin de se simplifier la vie, vous pouvez écrire &lt;tt&gt;%h&lt;/tt&gt; à la place de &lt;tt&gt;/home/utilisateur&lt;/tt&gt;, fdm le comprendra.''

Voici donc un exemple pour déplacer du courrier dans un dossier précis : &lt;tt&gt;action &amp;quot;inlaposte&amp;quot; maildir &amp;quot;%h/Maildir/laposte&amp;quot;&lt;/tt&gt;

=== Récupérer les mails ===

On va maintenant dire à fdm de placer les courriels destinés à ce compte dans le dossier correspondant. On écrit alors plus bas :

&lt;pre&gt;match account &amp;quot;laposte&amp;quot; action &amp;quot;inlaposte&amp;quot;&lt;/pre&gt;
=== Gestion des spams ===

Pour gérer les spams, je vous conseille [http://bogofilter.sourceforge.net/faq_fr.shtml bogofilter].&lt;br /&gt;
Je vous propose le comportement suivant : un mail arrive, bogofilter vérifie s'il s'agit d'un spam, et si oui, il ajoute un en-tête à ce spam. Ensuite, fdm se charge de placer les éventuels spam dans un dossier prévu à cet effet : &lt;tt&gt;~/Maildir/spam&lt;/tt&gt;

On définit alors les 2 actions suivantes, qui se chargent de filtrer les spams, et de déplacer dans le dossier spam :

&lt;pre&gt;action &amp;quot;antispam&amp;quot; rewrite &amp;quot;bogofilter -u -e -p&amp;quot;
action &amp;quot;inspam&amp;quot; maildir &amp;quot;%h/Maildir/spam&amp;quot;&lt;/pre&gt;
Afin que bogofilter traite les éventuels spams, on va placer 3 autres lignes avant la ligne &lt;tt&gt;match account &amp;quot;laposte&amp;quot; action &amp;quot;inlaposte&amp;quot;&lt;/tt&gt; :

&lt;pre&gt;# Tout passe par l'antispam
match all action &amp;quot;antispam&amp;quot; continue
match &amp;quot;^X-Spam-Status: Yes&amp;quot; in headers action &amp;quot;inspam&amp;quot; 
match &amp;quot;^X-Bogosity: Yes&amp;quot; in headers action &amp;quot;inspam&amp;quot;&lt;/pre&gt;
Ces trois lignes font passer tous (''all'') les mails à l'action antispam, puis continue. Ensuite, on vérifie sir dans les en-têtes des mails (''headers'') sont présentes les lignes &lt;tt&gt;X-Spam-Status: Yes&lt;/tt&gt; et &lt;tt&gt;X-Bogosity: Yes&lt;/tt&gt; témoignant de la nature spam du mail. Si oui, alors ce mail est passé à l'action &amp;quot;inspam&amp;quot;, et placé dans le dossier des spams.

=== Listes de diffusion ===

De la même façon, on peut placer les mails destinés à une liste de diffusion dans un dossier à part. Cela se passe avec des expressions régulières ([https://fr.wikipedia.org/wiki/Expression_rationnelle regexp]) qui peuvent être trouvées dans le header ou le corps (''body'') du message :

&lt;pre&gt;match &amp;quot;^(From|Cc|To|List-Id).*@suckless\\.org&amp;quot; in headers action &amp;quot;suckless&amp;quot;&lt;/pre&gt;
=== Archivage ===

[http://fdm.sourceforge.net/ fdm] peut apparement archiver les mails plus vieux de n jours. Voici ce que l'on ajoute dans le fichier de configuration pour ce faire :

&lt;pre&gt;%max_age    = 30
action &amp;quot;keep&amp;quot; keep
action &amp;quot;archive&amp;quot; mbox &amp;quot;%h/Maildir/archive/%[maildir]-%yq%Q&amp;quot; compress
account &amp;quot;archive&amp;quot; disabled maildirs {
    &amp;quot;%h/Maildir/laposte/&amp;quot;
        }
match account &amp;quot;archive&amp;quot; and age &amp;gt; %{max_age} days action &amp;quot;archive&amp;quot;
match account &amp;quot;archive&amp;quot; action &amp;quot;keep&amp;quot;&lt;/pre&gt;
Ensuite, vous archivez en lançant la commande suivante : &lt;tt&gt;fdm -vaarchive fetch&lt;/tt&gt;. Cette commande peut tout à fait avoir sa place dans le crontab :

&lt;pre&gt;43 12 * * 1 fdm -va archive fetch&lt;/pre&gt;
== Récupérer le courrier ==

Pour récupérer le courrier, lancez la commande &lt;tt&gt;fdm fetch&lt;/tt&gt;. Pour faire vos essai, rajoutez l'option &lt;tt&gt;-k&lt;/tt&gt; afin de laisser les messages sur le serveur.

Si vous souhaitez que fdm récupère vos messages toutes les 5 minutes, tapez &lt;tt&gt;crontab -e&lt;/tt&gt;, puis ajoutez cette ligne :

&lt;pre&gt;*/5 * * * * fdm fetch &amp;gt;&amp;gt; $HOME/Maildir/fdm.log&lt;/pre&gt;
== Un exemple? ==

Cela fait beaucoup d'un coup. Vous trouverez plusieurs exemples dans /usr/share/doc/fdm/examples. Voici mon propre fdm.conf :

&lt;pre&gt;# Quelques options :
#set verify-certificates
set unmatched-mail keep
set parallel-accounts 2

# Les courriels plus vieux que %max_age sont archivés
%max_age    = 30

# simple actions
action &amp;quot;drop&amp;quot; drop
action &amp;quot;keep&amp;quot; keep
# actions à réaliser sur les mails
action &amp;quot;inlaposte&amp;quot; maildir &amp;quot;%h/Maildir/laposte&amp;quot;
action &amp;quot;infac&amp;quot; maildir &amp;quot;%h/Maildir/fac&amp;quot;
action &amp;quot;inlavabit&amp;quot; maildir &amp;quot;%h/Maildir/lavabit&amp;quot;
action &amp;quot;intoilelibre&amp;quot; maildir &amp;quot;%h/Maildir/toilelibre&amp;quot;
action &amp;quot;inboiteaspam&amp;quot; maildir &amp;quot;%h/Maildir/bas&amp;quot;

# Bogofilter super antispam
action &amp;quot;antispam&amp;quot; rewrite &amp;quot;bogofilter -u -e -p&amp;quot;
action &amp;quot;inspam&amp;quot; maildir &amp;quot;%h/Maildir/spam&amp;quot;

# Listes de diffusion
action &amp;quot;suckless&amp;quot; maildir &amp;quot;%h/Maildir/devlists/suckless&amp;quot;
action &amp;quot;gnewsense&amp;quot; maildir &amp;quot;%h/Maildir/devlists/gnewsense&amp;quot;
action &amp;quot;xfce&amp;quot; maildir &amp;quot;%h/Maildir/devlists/xfce&amp;quot;
action &amp;quot;debian&amp;quot; maildir &amp;quot;%h/Maildir/devlists/debian&amp;quot;
action &amp;quot;hurd&amp;quot; maildir &amp;quot;%h/Maildir/devlists/hurd&amp;quot;

### archiving action
action &amp;quot;archive&amp;quot; mbox &amp;quot;%h/Maildir/archive/%[maildir]-%yq%Q&amp;quot; compress

###
# Comptes courriel :
account &amp;quot;laposte&amp;quot; imap server &amp;quot;imap.laposte.net&amp;quot; 
    user &amp;quot;xavier.cartron&amp;quot; pass &amp;quot;thuban1712x&amp;quot;
account &amp;quot;fac&amp;quot; imaps server &amp;quot;imaps.etu.univ-nantes.fr&amp;quot; port 993 
    user &amp;quot;e072767U&amp;quot; pass &amp;quot;alsipsclar&amp;quot;
account &amp;quot;lavabit&amp;quot; imaps server &amp;quot;imap.lavabit.com&amp;quot; port 993 
    user &amp;quot;bcnofne&amp;quot; pass &amp;quot;alsipsclar1712&amp;quot;
account &amp;quot;toilelibre&amp;quot; imaps server &amp;quot;imap.singularity.fr&amp;quot; port 993 
    user &amp;quot;thuban@singularity.fr&amp;quot; pass &amp;quot;thuban17_12&amp;quot;
account &amp;quot;boiteaspam&amp;quot; imap server &amp;quot;imap.laposte.net&amp;quot;  
    user &amp;quot;lilliput23&amp;quot; pass &amp;quot;thuban1712&amp;quot;

###

# Archivage
account &amp;quot;archive&amp;quot; disabled maildirs {
    &amp;quot;%h/Maildir/laposte/&amp;quot;
    &amp;quot;%h/Maildir/lavabit/&amp;quot;
    &amp;quot;%h/Maildir/fac/&amp;quot;
    &amp;quot;%h/Maildir/toilelibre/&amp;quot;
    &amp;quot;%h/Maildir/bas/&amp;quot;
    &amp;quot;%h/Maildir/devlists/&amp;quot;
        }
match account &amp;quot;archive&amp;quot; and age &amp;gt; %{max_age} days action &amp;quot;archive&amp;quot;
match account &amp;quot;archive&amp;quot; action &amp;quot;keep&amp;quot;


# Tout passe par l'antispam
match all action &amp;quot;antispam&amp;quot; continue
match &amp;quot;^X-Spam-Status: Yes&amp;quot; in headers action &amp;quot;inspam&amp;quot; 
match &amp;quot;^X-Bogosity: Yes&amp;quot; in headers action &amp;quot;inspam&amp;quot;

# Filtres pour les liste de diffusion : 
match &amp;quot;^(From|Cc|To|List-Id).*@suckless\\.org&amp;quot; in headers action &amp;quot;suckless&amp;quot;
match &amp;quot;^(From|Cc|To|List-Id).*@gnu\\.org&amp;quot; in headers action &amp;quot;hurd&amp;quot;
match &amp;quot;^(From|Cc|To|List-Id).*@nongnu\\.org&amp;quot; in headers action &amp;quot;gnewsense&amp;quot;
match &amp;quot;^(From|Cc|To|List-Id).*@xfce\\.org&amp;quot; in headers action &amp;quot;xfce&amp;quot;
match &amp;quot;^(From|Cc|To|List-Id).*debian.*@lists\\.debian\\.org&amp;quot; in headers action &amp;quot;debian&amp;quot;


# On envoie les mails dans leurs boîtes
match account &amp;quot;laposte&amp;quot; action &amp;quot;inlaposte&amp;quot;
match account &amp;quot;fac&amp;quot; action &amp;quot;infac&amp;quot;
match account &amp;quot;lavabit&amp;quot; action &amp;quot;inlavabit&amp;quot;
match account &amp;quot;toilelibre&amp;quot; action &amp;quot;intoilelibre&amp;quot;
match account &amp;quot;boiteaspam&amp;quot; action &amp;quot;inboiteaspam&amp;quot;

# On attrape tout ce qui n'a pas été filtré
match all action &amp;quot;inlaposte&amp;quot;&lt;/pre&gt;</text>
      <sha1>fxidv5hbgi9p1dv0quypjhk2xa5ll4m</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4843</id>
      <parentid>4842</parentid>
      <timestamp>2012-12-18T16:59:24Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="9314">&lt;h2 id=&quot;fdm&quot;&gt;
Récupération du courrier avec fdm
&lt;/h2&gt;
Bien qu'il existe la possibilité d'utiliser les bulldozers fetchmail et procmail, je vous propose ici une solution plus légère : [http://fdm.sourceforge.net/ fdm]. À lui tout seul, il peut récupérer vos e-mails, les trier selon le destinataire, l'émetteur, la date, archiver vos mails...

Par la suite, vous serez en mesure de lire vos mails localement, puisqu'ils seront téléchargés dans vos dossiers. Pour cela, on utilise des dossiers appelés [http://fr.wikipedia.org/wiki/Maildir Maildir], eux mêmes composés de sous-dossier &lt;tt&gt;cur&lt;/tt&gt;, &lt;tt&gt;new&lt;/tt&gt; et &lt;tt&gt;temp&lt;/tt&gt;. Pensez donc à créer ces dossiers avant de récupérer vos mails.

L'installation est des plus simple : &lt;tt&gt;apt-get install fdm&lt;/tt&gt;.

Maintenant, on peut le configurer. Pour cela, créez un fichier &lt;tt&gt;~/.fdm.conf&lt;/tt&gt; (le '~' représentant votre répertoire utilisateur).

=== Ajout des comptes ===

On peut désormais préciser dans le fichier de configuration les comptes e-mail. Cela se fait avec la syntaxe suivante :

&lt;pre&gt;account &amp;quot;compte1&amp;quot; imap server &amp;quot;imap.serveur.net&amp;quot; port 143
    user &amp;quot;utilisateur&amp;quot; pass &amp;quot;******&amp;quot;&lt;/pre&gt;
Ce qui est précisé entre guillemets ainsi que le numéro du port est à remplacer selon vos besoins. Sachez que &amp;quot;compte1&amp;quot; est le nom donné à ce compte, pour pouvoir se repérer ensuite dans la configuration.&lt;br /&gt;
Il est tout à fait possible de définir plusieurs comptes de cette façon. Attention toutefois, pour les comptes imap ssl, remplacez &lt;tt&gt;imap&lt;/tt&gt; par &lt;tt&gt;imaps&lt;/tt&gt;

=== Définir des actions ===

[http://fdm.sourceforge.net/ fdm] utilise un système d'&amp;quot;actions&amp;quot; pour traiter vos e-mails. Par exemple, on peut définir une action nommée &amp;quot;inlaposte&amp;quot;, pour déplacer les messages dans le dossier [http://fr.wikipedia.org/wiki/Maildir maildir] &amp;quot;/home/xavier/Maildir/laposte&amp;quot;.&lt;br /&gt;
''Afin de se simplifier la vie, vous pouvez écrire &lt;tt&gt;%h&lt;/tt&gt; à la place de &lt;tt&gt;/home/utilisateur&lt;/tt&gt;, fdm le comprendra.''

Voici donc un exemple pour déplacer du courrier dans un dossier précis : &lt;tt&gt;action &amp;quot;inlaposte&amp;quot; maildir &amp;quot;%h/Maildir/laposte&amp;quot;&lt;/tt&gt;

=== Récupérer les mails ===

On va maintenant dire à fdm de placer les courriels destinés à ce compte dans le dossier correspondant. On écrit alors plus bas :

&lt;pre&gt;match account &amp;quot;laposte&amp;quot; action &amp;quot;inlaposte&amp;quot;&lt;/pre&gt;
=== Gestion des spams ===

Pour gérer les spams, je vous conseille [http://bogofilter.sourceforge.net/faq_fr.shtml bogofilter].&lt;br /&gt;
Je vous propose le comportement suivant : un mail arrive, bogofilter vérifie s'il s'agit d'un spam, et si oui, il ajoute un en-tête à ce spam. Ensuite, fdm se charge de placer les éventuels spam dans un dossier prévu à cet effet : &lt;tt&gt;~/Maildir/spam&lt;/tt&gt;

On définit alors les 2 actions suivantes, qui se chargent de filtrer les spams, et de déplacer dans le dossier spam :

&lt;pre&gt;action &amp;quot;antispam&amp;quot; rewrite &amp;quot;bogofilter -u -e -p&amp;quot;
action &amp;quot;inspam&amp;quot; maildir &amp;quot;%h/Maildir/spam&amp;quot;&lt;/pre&gt;
Afin que bogofilter traite les éventuels spams, on va placer 3 autres lignes avant la ligne &lt;tt&gt;match account &amp;quot;laposte&amp;quot; action &amp;quot;inlaposte&amp;quot;&lt;/tt&gt; :

&lt;pre&gt;# Tout passe par l'antispam
match all action &amp;quot;antispam&amp;quot; continue
match &amp;quot;^X-Spam-Status: Yes&amp;quot; in headers action &amp;quot;inspam&amp;quot; 
match &amp;quot;^X-Bogosity: Yes&amp;quot; in headers action &amp;quot;inspam&amp;quot;&lt;/pre&gt;
Ces trois lignes font passer tous (''all'') les mails à l'action antispam, puis continue. Ensuite, on vérifie si dans les en-têtes des mails (''headers'') sont présentes les lignes &lt;tt&gt;X-Spam-Status: Yes&lt;/tt&gt; et &lt;tt&gt;X-Bogosity: Yes&lt;/tt&gt; témoignant de la nature spam du mail. Si oui, alors ce mail est passé à l'action &amp;quot;inspam&amp;quot;, et placé dans le dossier des spams.

=== Listes de diffusion ===

De la même façon, on peut placer les mails destinés à une liste de diffusion dans un dossier à part. Cela se passe avec des expressions régulières ([https://fr.wikipedia.org/wiki/Expression_rationnelle regexp]) qui peuvent être trouvées dans le header ou le corps (''body'') du message :

&lt;pre&gt;match &amp;quot;^(From|Cc|To|List-Id).*@suckless\\.org&amp;quot; in headers action &amp;quot;suckless&amp;quot;&lt;/pre&gt;
=== Archivage ===

[http://fdm.sourceforge.net/ fdm] peut apparement archiver les mails plus vieux de n jours. Voici ce que l'on ajoute dans le fichier de configuration pour ce faire :

&lt;pre&gt;%max_age    = 30
action &amp;quot;keep&amp;quot; keep
action &amp;quot;archive&amp;quot; mbox &amp;quot;%h/Maildir/archive/%[maildir]-%yq%Q&amp;quot; compress
account &amp;quot;archive&amp;quot; disabled maildirs {
    &amp;quot;%h/Maildir/laposte/&amp;quot;
        }
match account &amp;quot;archive&amp;quot; and age &amp;gt; %{max_age} days action &amp;quot;archive&amp;quot;
match account &amp;quot;archive&amp;quot; action &amp;quot;keep&amp;quot;&lt;/pre&gt;
Ensuite, vous archivez en lançant la commande suivante : &lt;tt&gt;fdm -vaarchive fetch&lt;/tt&gt;. Cette commande peut tout à fait avoir sa place dans le crontab :

&lt;pre&gt;43 12 * * 1 fdm -va archive fetch&lt;/pre&gt;
== Récupérer le courrier ==

Pour récupérer le courrier, lancez la commande &lt;tt&gt;fdm fetch&lt;/tt&gt;. Pour faire vos essais, rajoutez l'option &lt;tt&gt;-k&lt;/tt&gt; afin de laisser les messages sur le serveur.

Si vous souhaitez que fdm récupère vos messages toutes les 5 minutes, tapez &lt;tt&gt;crontab -e&lt;/tt&gt;, puis ajoutez cette ligne :

&lt;pre&gt;*/5 * * * * fdm fetch &amp;gt;&amp;gt; $HOME/Maildir/fdm.log&lt;/pre&gt;
== Un exemple? ==

Cela fait beaucoup d'un coup. Vous trouverez plusieurs exemples dans /usr/share/doc/fdm/examples. Voici mon propre fdm.conf :

&lt;pre&gt;# Quelques options :
#set verify-certificates
set unmatched-mail keep
set parallel-accounts 2

# Les courriels plus vieux que %max_age sont archivés
%max_age    = 30

# simple actions
action &amp;quot;drop&amp;quot; drop
action &amp;quot;keep&amp;quot; keep
# actions à réaliser sur les mails
action &amp;quot;inlaposte&amp;quot; maildir &amp;quot;%h/Maildir/laposte&amp;quot;
action &amp;quot;infac&amp;quot; maildir &amp;quot;%h/Maildir/fac&amp;quot;
action &amp;quot;inlavabit&amp;quot; maildir &amp;quot;%h/Maildir/lavabit&amp;quot;
action &amp;quot;intoilelibre&amp;quot; maildir &amp;quot;%h/Maildir/toilelibre&amp;quot;
action &amp;quot;inboiteaspam&amp;quot; maildir &amp;quot;%h/Maildir/bas&amp;quot;

# Bogofilter super antispam
action &amp;quot;antispam&amp;quot; rewrite &amp;quot;bogofilter -u -e -p&amp;quot;
action &amp;quot;inspam&amp;quot; maildir &amp;quot;%h/Maildir/spam&amp;quot;

# Listes de diffusion
action &amp;quot;suckless&amp;quot; maildir &amp;quot;%h/Maildir/devlists/suckless&amp;quot;
action &amp;quot;gnewsense&amp;quot; maildir &amp;quot;%h/Maildir/devlists/gnewsense&amp;quot;
action &amp;quot;xfce&amp;quot; maildir &amp;quot;%h/Maildir/devlists/xfce&amp;quot;
action &amp;quot;debian&amp;quot; maildir &amp;quot;%h/Maildir/devlists/debian&amp;quot;
action &amp;quot;hurd&amp;quot; maildir &amp;quot;%h/Maildir/devlists/hurd&amp;quot;

### archiving action
action &amp;quot;archive&amp;quot; mbox &amp;quot;%h/Maildir/archive/%[maildir]-%yq%Q&amp;quot; compress

###
# Comptes courriel :
account &amp;quot;laposte&amp;quot; imap server &amp;quot;imap.laposte.net&amp;quot; 
    user &amp;quot;xavier.cartron&amp;quot; pass &amp;quot;thuban1712x&amp;quot;
account &amp;quot;fac&amp;quot; imaps server &amp;quot;imaps.etu.univ-nantes.fr&amp;quot; port 993 
    user &amp;quot;e072767U&amp;quot; pass &amp;quot;alsipsclar&amp;quot;
account &amp;quot;lavabit&amp;quot; imaps server &amp;quot;imap.lavabit.com&amp;quot; port 993 
    user &amp;quot;bcnofne&amp;quot; pass &amp;quot;alsipsclar1712&amp;quot;
account &amp;quot;toilelibre&amp;quot; imaps server &amp;quot;imap.singularity.fr&amp;quot; port 993 
    user &amp;quot;thuban@singularity.fr&amp;quot; pass &amp;quot;thuban17_12&amp;quot;
account &amp;quot;boiteaspam&amp;quot; imap server &amp;quot;imap.laposte.net&amp;quot;  
    user &amp;quot;lilliput23&amp;quot; pass &amp;quot;thuban1712&amp;quot;

###

# Archivage
account &amp;quot;archive&amp;quot; disabled maildirs {
    &amp;quot;%h/Maildir/laposte/&amp;quot;
    &amp;quot;%h/Maildir/lavabit/&amp;quot;
    &amp;quot;%h/Maildir/fac/&amp;quot;
    &amp;quot;%h/Maildir/toilelibre/&amp;quot;
    &amp;quot;%h/Maildir/bas/&amp;quot;
    &amp;quot;%h/Maildir/devlists/&amp;quot;
        }
match account &amp;quot;archive&amp;quot; and age &amp;gt; %{max_age} days action &amp;quot;archive&amp;quot;
match account &amp;quot;archive&amp;quot; action &amp;quot;keep&amp;quot;


# Tout passe par l'antispam
match all action &amp;quot;antispam&amp;quot; continue
match &amp;quot;^X-Spam-Status: Yes&amp;quot; in headers action &amp;quot;inspam&amp;quot; 
match &amp;quot;^X-Bogosity: Yes&amp;quot; in headers action &amp;quot;inspam&amp;quot;

# Filtres pour les liste de diffusion : 
match &amp;quot;^(From|Cc|To|List-Id).*@suckless\\.org&amp;quot; in headers action &amp;quot;suckless&amp;quot;
match &amp;quot;^(From|Cc|To|List-Id).*@gnu\\.org&amp;quot; in headers action &amp;quot;hurd&amp;quot;
match &amp;quot;^(From|Cc|To|List-Id).*@nongnu\\.org&amp;quot; in headers action &amp;quot;gnewsense&amp;quot;
match &amp;quot;^(From|Cc|To|List-Id).*@xfce\\.org&amp;quot; in headers action &amp;quot;xfce&amp;quot;
match &amp;quot;^(From|Cc|To|List-Id).*debian.*@lists\\.debian\\.org&amp;quot; in headers action &amp;quot;debian&amp;quot;


# On envoie les mails dans leurs boîtes
match account &amp;quot;laposte&amp;quot; action &amp;quot;inlaposte&amp;quot;
match account &amp;quot;fac&amp;quot; action &amp;quot;infac&amp;quot;
match account &amp;quot;lavabit&amp;quot; action &amp;quot;inlavabit&amp;quot;
match account &amp;quot;toilelibre&amp;quot; action &amp;quot;intoilelibre&amp;quot;
match account &amp;quot;boiteaspam&amp;quot; action &amp;quot;inboiteaspam&amp;quot;

# On attrape tout ce qui n'a pas été filtré
match all action &amp;quot;inlaposte&amp;quot;&lt;/pre&gt;</text>
      <sha1>a9a7550rec43x43rpfvaha78l2s6cf6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4845</id>
      <parentid>4843</parentid>
      <timestamp>2012-12-18T20:48:44Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="9628">&lt;h2 id=&quot;fdm&quot;&gt;
Récupération du courrier avec fdm
&lt;/h2&gt;
Bien qu'il existe la possibilité d'utiliser les bulldozers fetchmail et procmail, je vous propose ici une solution plus légère : [http://fdm.sourceforge.net/ fdm]. À lui tout seul, il peut récupérer vos e-mails, les trier selon le destinataire, l'émetteur, la date, archiver vos mails...

Par la suite, vous serez en mesure de lire vos mails localement, puisqu'ils seront téléchargés dans vos dossiers. Pour cela, on utilise des dossiers appelés [http://fr.wikipedia.org/wiki/Maildir Maildir], eux mêmes composés de sous-dossier &lt;tt&gt;cur&lt;/tt&gt;, &lt;tt&gt;new&lt;/tt&gt; et &lt;tt&gt;temp&lt;/tt&gt;. Pensez donc à créer ces dossiers avant de récupérer vos mails.

L'installation est des plus simple : &lt;tt&gt;apt-get install fdm&lt;/tt&gt;.

Maintenant, on peut le configurer. Pour cela, créez un fichier &lt;tt&gt;~/.fdm.conf&lt;/tt&gt; (le '~' représentant votre répertoire utilisateur).

=== Ajout des comptes ===

On peut désormais préciser dans le fichier de configuration les comptes e-mail. Cela se fait avec la syntaxe suivante :

&lt;pre&gt;account &amp;quot;compte1&amp;quot; imap server &amp;quot;imap.serveur.net&amp;quot; port 143
    user &amp;quot;utilisateur&amp;quot; pass &amp;quot;******&amp;quot;&lt;/pre&gt;
Ce qui est précisé entre guillemets ainsi que le numéro du port est à remplacer selon vos besoins. Sachez que &amp;quot;compte1&amp;quot; est le nom donné à ce compte, pour pouvoir se repérer ensuite dans la configuration.&lt;br /&gt;
Il est tout à fait possible de définir plusieurs comptes de cette façon. Attention toutefois, pour les comptes imap ssl, remplacez &lt;tt&gt;imap&lt;/tt&gt; par &lt;tt&gt;imaps&lt;/tt&gt;

===fdm le facteur du système===
&lt;p&gt;Pour recevoir les mails du système, ajoutez ces lignes au fichier de
configuration ~/.fdm.conf : &lt;/p&gt;
&lt;pre&gt;&lt;code&gt;account &quot;stdin&quot; disabled stdin
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Puis ceci dans le fichier ~/.forward, avec les &quot; : &lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&quot;|/usr/bin/fdm -m -a stdin fetch&quot;
&lt;/code&gt;&lt;/pre&gt;

=== Définir des actions ===

[http://fdm.sourceforge.net/ fdm] utilise un système d'&amp;quot;actions&amp;quot; pour traiter vos e-mails. Par exemple, on peut définir une action nommée &amp;quot;inlaposte&amp;quot;, pour déplacer les messages dans le dossier [http://fr.wikipedia.org/wiki/Maildir maildir] &amp;quot;/home/xavier/Maildir/laposte&amp;quot;.&lt;br /&gt;
''Afin de se simplifier la vie, vous pouvez écrire &lt;tt&gt;%h&lt;/tt&gt; à la place de &lt;tt&gt;/home/utilisateur&lt;/tt&gt;, fdm le comprendra.''

Voici donc un exemple pour déplacer du courrier dans un dossier précis : &lt;tt&gt;action &amp;quot;inlaposte&amp;quot; maildir &amp;quot;%h/Maildir/laposte&amp;quot;&lt;/tt&gt;

=== Récupérer les mails ===

On va maintenant dire à fdm de placer les courriels destinés à ce compte dans le dossier correspondant. On écrit alors plus bas :

&lt;pre&gt;match account &amp;quot;laposte&amp;quot; action &amp;quot;inlaposte&amp;quot;&lt;/pre&gt;
=== Gestion des spams ===

Pour gérer les spams, je vous conseille [http://bogofilter.sourceforge.net/faq_fr.shtml bogofilter].&lt;br /&gt;
Je vous propose le comportement suivant : un mail arrive, bogofilter vérifie s'il s'agit d'un spam, et si oui, il ajoute un en-tête à ce spam. Ensuite, fdm se charge de placer les éventuels spam dans un dossier prévu à cet effet : &lt;tt&gt;~/Maildir/spam&lt;/tt&gt;

On définit alors les 2 actions suivantes, qui se chargent de filtrer les spams, et de déplacer dans le dossier spam :

&lt;pre&gt;action &amp;quot;antispam&amp;quot; rewrite &amp;quot;bogofilter -u -e -p&amp;quot;
action &amp;quot;inspam&amp;quot; maildir &amp;quot;%h/Maildir/spam&amp;quot;&lt;/pre&gt;
Afin que bogofilter traite les éventuels spams, on va placer 3 autres lignes avant la ligne &lt;tt&gt;match account &amp;quot;laposte&amp;quot; action &amp;quot;inlaposte&amp;quot;&lt;/tt&gt; :

&lt;pre&gt;# Tout passe par l'antispam
match all action &amp;quot;antispam&amp;quot; continue
match &amp;quot;^X-Spam-Status: Yes&amp;quot; in headers action &amp;quot;inspam&amp;quot; 
match &amp;quot;^X-Bogosity: Yes&amp;quot; in headers action &amp;quot;inspam&amp;quot;&lt;/pre&gt;
Ces trois lignes font passer tous (''all'') les mails à l'action antispam, puis continue. Ensuite, on vérifie si dans les en-têtes des mails (''headers'') sont présentes les lignes &lt;tt&gt;X-Spam-Status: Yes&lt;/tt&gt; et &lt;tt&gt;X-Bogosity: Yes&lt;/tt&gt; témoignant de la nature spam du mail. Si oui, alors ce mail est passé à l'action &amp;quot;inspam&amp;quot;, et placé dans le dossier des spams.

=== Listes de diffusion ===

De la même façon, on peut placer les mails destinés à une liste de diffusion dans un dossier à part. Cela se passe avec des expressions régulières ([https://fr.wikipedia.org/wiki/Expression_rationnelle regexp]) qui peuvent être trouvées dans le header ou le corps (''body'') du message :

&lt;pre&gt;match &amp;quot;^(From|Cc|To|List-Id).*@suckless\\.org&amp;quot; in headers action &amp;quot;suckless&amp;quot;&lt;/pre&gt;
=== Archivage ===

[http://fdm.sourceforge.net/ fdm] peut apparement archiver les mails plus vieux de n jours. Voici ce que l'on ajoute dans le fichier de configuration pour ce faire :

&lt;pre&gt;%max_age    = 30
action &amp;quot;keep&amp;quot; keep
action &amp;quot;archive&amp;quot; mbox &amp;quot;%h/Maildir/archive/%[maildir]-%yq%Q&amp;quot; compress
account &amp;quot;archive&amp;quot; disabled maildirs {
    &amp;quot;%h/Maildir/laposte/&amp;quot;
        }
match account &amp;quot;archive&amp;quot; and age &amp;gt; %{max_age} days action &amp;quot;archive&amp;quot;
match account &amp;quot;archive&amp;quot; action &amp;quot;keep&amp;quot;&lt;/pre&gt;
Ensuite, vous archivez en lançant la commande suivante : &lt;tt&gt;fdm -vaarchive fetch&lt;/tt&gt;. Cette commande peut tout à fait avoir sa place dans le crontab :

&lt;pre&gt;43 12 * * 1 fdm -va archive fetch&lt;/pre&gt;
== Récupérer le courrier ==

Pour récupérer le courrier, lancez la commande &lt;tt&gt;fdm fetch&lt;/tt&gt;. Pour faire vos essais, rajoutez l'option &lt;tt&gt;-k&lt;/tt&gt; afin de laisser les messages sur le serveur.

Si vous souhaitez que fdm récupère vos messages toutes les 5 minutes, tapez &lt;tt&gt;crontab -e&lt;/tt&gt;, puis ajoutez cette ligne :

&lt;pre&gt;*/5 * * * * fdm fetch &amp;gt;&amp;gt; $HOME/Maildir/fdm.log&lt;/pre&gt;
== Un exemple? ==

Cela fait beaucoup d'un coup. Vous trouverez plusieurs exemples dans /usr/share/doc/fdm/examples. Voici mon propre fdm.conf :

&lt;pre&gt;# Quelques options :
#set verify-certificates
set unmatched-mail keep
set parallel-accounts 2

# Les courriels plus vieux que %max_age sont archivés
%max_age    = 30

# simple actions
action &amp;quot;drop&amp;quot; drop
action &amp;quot;keep&amp;quot; keep
# actions à réaliser sur les mails
action &amp;quot;inlaposte&amp;quot; maildir &amp;quot;%h/Maildir/laposte&amp;quot;
action &amp;quot;infac&amp;quot; maildir &amp;quot;%h/Maildir/fac&amp;quot;
action &amp;quot;inlavabit&amp;quot; maildir &amp;quot;%h/Maildir/lavabit&amp;quot;
action &amp;quot;intoilelibre&amp;quot; maildir &amp;quot;%h/Maildir/toilelibre&amp;quot;
action &amp;quot;inboiteaspam&amp;quot; maildir &amp;quot;%h/Maildir/bas&amp;quot;

# Bogofilter super antispam
action &amp;quot;antispam&amp;quot; rewrite &amp;quot;bogofilter -u -e -p&amp;quot;
action &amp;quot;inspam&amp;quot; maildir &amp;quot;%h/Maildir/spam&amp;quot;

# Listes de diffusion
action &amp;quot;suckless&amp;quot; maildir &amp;quot;%h/Maildir/devlists/suckless&amp;quot;
action &amp;quot;gnewsense&amp;quot; maildir &amp;quot;%h/Maildir/devlists/gnewsense&amp;quot;
action &amp;quot;xfce&amp;quot; maildir &amp;quot;%h/Maildir/devlists/xfce&amp;quot;
action &amp;quot;debian&amp;quot; maildir &amp;quot;%h/Maildir/devlists/debian&amp;quot;
action &amp;quot;hurd&amp;quot; maildir &amp;quot;%h/Maildir/devlists/hurd&amp;quot;

### archiving action
action &amp;quot;archive&amp;quot; mbox &amp;quot;%h/Maildir/archive/%[maildir]-%yq%Q&amp;quot; compress

###
# Comptes courriel :
account &amp;quot;laposte&amp;quot; imap server &amp;quot;imap.laposte.net&amp;quot; 
    user &amp;quot;xavier.cartron&amp;quot; pass &amp;quot;thuban1712x&amp;quot;
account &amp;quot;fac&amp;quot; imaps server &amp;quot;imaps.etu.univ-nantes.fr&amp;quot; port 993 
    user &amp;quot;e072767U&amp;quot; pass &amp;quot;alsipsclar&amp;quot;
account &amp;quot;lavabit&amp;quot; imaps server &amp;quot;imap.lavabit.com&amp;quot; port 993 
    user &amp;quot;bcnofne&amp;quot; pass &amp;quot;alsipsclar1712&amp;quot;
account &amp;quot;toilelibre&amp;quot; imaps server &amp;quot;imap.singularity.fr&amp;quot; port 993 
    user &amp;quot;thuban@singularity.fr&amp;quot; pass &amp;quot;thuban17_12&amp;quot;
account &amp;quot;boiteaspam&amp;quot; imap server &amp;quot;imap.laposte.net&amp;quot;  
    user &amp;quot;lilliput23&amp;quot; pass &amp;quot;thuban1712&amp;quot;

###

# Archivage
account &amp;quot;archive&amp;quot; disabled maildirs {
    &amp;quot;%h/Maildir/laposte/&amp;quot;
    &amp;quot;%h/Maildir/lavabit/&amp;quot;
    &amp;quot;%h/Maildir/fac/&amp;quot;
    &amp;quot;%h/Maildir/toilelibre/&amp;quot;
    &amp;quot;%h/Maildir/bas/&amp;quot;
    &amp;quot;%h/Maildir/devlists/&amp;quot;
        }
match account &amp;quot;archive&amp;quot; and age &amp;gt; %{max_age} days action &amp;quot;archive&amp;quot;
match account &amp;quot;archive&amp;quot; action &amp;quot;keep&amp;quot;


# Tout passe par l'antispam
match all action &amp;quot;antispam&amp;quot; continue
match &amp;quot;^X-Spam-Status: Yes&amp;quot; in headers action &amp;quot;inspam&amp;quot; 
match &amp;quot;^X-Bogosity: Yes&amp;quot; in headers action &amp;quot;inspam&amp;quot;

# Filtres pour les liste de diffusion : 
match &amp;quot;^(From|Cc|To|List-Id).*@suckless\\.org&amp;quot; in headers action &amp;quot;suckless&amp;quot;
match &amp;quot;^(From|Cc|To|List-Id).*@gnu\\.org&amp;quot; in headers action &amp;quot;hurd&amp;quot;
match &amp;quot;^(From|Cc|To|List-Id).*@nongnu\\.org&amp;quot; in headers action &amp;quot;gnewsense&amp;quot;
match &amp;quot;^(From|Cc|To|List-Id).*@xfce\\.org&amp;quot; in headers action &amp;quot;xfce&amp;quot;
match &amp;quot;^(From|Cc|To|List-Id).*debian.*@lists\\.debian\\.org&amp;quot; in headers action &amp;quot;debian&amp;quot;


# On envoie les mails dans leurs boîtes
match account &amp;quot;laposte&amp;quot; action &amp;quot;inlaposte&amp;quot;
match account &amp;quot;fac&amp;quot; action &amp;quot;infac&amp;quot;
match account &amp;quot;lavabit&amp;quot; action &amp;quot;inlavabit&amp;quot;
match account &amp;quot;toilelibre&amp;quot; action &amp;quot;intoilelibre&amp;quot;
match account &amp;quot;boiteaspam&amp;quot; action &amp;quot;inboiteaspam&amp;quot;

# On attrape tout ce qui n'a pas été filtré
match all action &amp;quot;inlaposte&amp;quot;&lt;/pre&gt;</text>
      <sha1>9nnhct6lrhp8u25eoyg9fdtgxajilyc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4846</id>
      <parentid>4845</parentid>
      <timestamp>2012-12-19T06:46:08Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="9662">&lt;h2 id=&quot;fdm&quot;&gt;
Récupération du courrier avec fdm
&lt;/h2&gt;
Bien qu'il existe la possibilité d'utiliser les bulldozers fetchmail et procmail, je vous propose ici une solution plus légère : [http://fdm.sourceforge.net/ fdm]. À lui tout seul, il peut récupérer vos e-mails, les trier selon le destinataire, l'émetteur, la date, archiver vos mails...

Par la suite, vous serez en mesure de lire vos mails localement, puisqu'ils seront téléchargés dans vos dossiers. Pour cela, on utilise des dossiers appelés [http://fr.wikipedia.org/wiki/Maildir Maildir], eux mêmes composés de sous-dossier &lt;tt&gt;cur&lt;/tt&gt;, &lt;tt&gt;new&lt;/tt&gt; et &lt;tt&gt;temp&lt;/tt&gt;. Pensez donc à créer ces dossiers avant de récupérer vos mails.

L'installation est des plus simple : &lt;tt&gt;apt-get install fdm&lt;/tt&gt;.

Maintenant, on peut le configurer. Pour cela, créez un fichier &lt;tt&gt;~/.fdm.conf&lt;/tt&gt; (le '~' représentant votre répertoire utilisateur).

=== Ajout des comptes ===

On peut désormais préciser dans le fichier de configuration les comptes e-mail. Cela se fait avec la syntaxe suivante :

&lt;pre&gt;account &amp;quot;compte1&amp;quot; imap server &amp;quot;imap.serveur.net&amp;quot; port 143
    user &amp;quot;utilisateur&amp;quot; pass &amp;quot;******&amp;quot;&lt;/pre&gt;
Ce qui est précisé entre guillemets ainsi que le numéro du port est à remplacer selon vos besoins. Sachez que &amp;quot;compte1&amp;quot; est le nom donné à ce compte, pour pouvoir se repérer ensuite dans la configuration.&lt;br /&gt;
Il est tout à fait possible de définir plusieurs comptes de cette façon. Attention toutefois, pour les comptes imap ssl, remplacez &lt;tt&gt;imap&lt;/tt&gt; par &lt;tt&gt;imaps&lt;/tt&gt;

===fdm le facteur du système===
&lt;p&gt;Pour recevoir les mails du système, ajoutez ces lignes au fichier de
configuration ~/.fdm.conf : &lt;/p&gt;
&lt;pre&gt;&lt;code&gt;account &quot;stdin&quot; disabled stdin
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Puis ceci dans le fichier ~/.forward, avec les &quot; : &lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&quot;|/usr/bin/fdm -m -a stdin fetch&quot;
&lt;/code&gt;&lt;/pre&gt;

=== Définir des actions ===

[http://fdm.sourceforge.net/ fdm] utilise un système d'&amp;quot;actions&amp;quot; pour traiter vos e-mails. Par exemple, on peut définir une action nommée &amp;quot;inlaposte&amp;quot;, pour déplacer les messages dans le dossier [http://fr.wikipedia.org/wiki/Maildir maildir] &amp;quot;/home/xavier/Maildir/laposte&amp;quot;.&lt;br /&gt;
''Afin de se simplifier la vie, vous pouvez écrire &lt;tt&gt;%h&lt;/tt&gt; à la place de &lt;tt&gt;/home/utilisateur&lt;/tt&gt;, fdm le comprendra.''

Voici donc un exemple pour déplacer du courrier dans un dossier précis : &lt;tt&gt;action &amp;quot;inlaposte&amp;quot; maildir &amp;quot;%h/Maildir/laposte&amp;quot;&lt;/tt&gt;

=== Récupérer les mails ===

On va maintenant dire à fdm de placer les courriels destinés à ce compte dans le dossier correspondant. On écrit alors plus bas :

&lt;pre&gt;match account &amp;quot;laposte&amp;quot; action &amp;quot;inlaposte&amp;quot;&lt;/pre&gt;
=== Gestion des spams ===

Pour gérer les spams, je vous conseille [http://bogofilter.sourceforge.net/faq_fr.shtml bogofilter].&lt;br /&gt;
Je vous propose le comportement suivant : un mail arrive, bogofilter vérifie s'il s'agit d'un spam, et si oui, il ajoute un en-tête à ce spam. Ensuite, fdm se charge de placer les éventuels spam dans un dossier prévu à cet effet : &lt;tt&gt;~/Maildir/spam&lt;/tt&gt;

On définit alors les 2 actions suivantes, qui se chargent de filtrer les spams, et de déplacer dans le dossier spam :

&lt;pre&gt;action &amp;quot;antispam&amp;quot; rewrite &amp;quot;bogofilter -u -e -p&amp;quot;
action &amp;quot;inspam&amp;quot; maildir &amp;quot;%h/Maildir/spam&amp;quot;&lt;/pre&gt;
Afin que bogofilter traite les éventuels spams, on va placer 3 autres lignes avant la ligne &lt;tt&gt;match account &amp;quot;laposte&amp;quot; action &amp;quot;inlaposte&amp;quot;&lt;/tt&gt; :

&lt;pre&gt;# Tout passe par l'antispam
match all action &amp;quot;antispam&amp;quot; continue
match &amp;quot;^X-Spam-Status: Yes&amp;quot; in headers action &amp;quot;inspam&amp;quot; 
match &amp;quot;^X-Bogosity: Yes&amp;quot; in headers action &amp;quot;inspam&amp;quot;&lt;/pre&gt;
Ces trois lignes font passer tous (''all'') les mails à l'action antispam, puis continue. Ensuite, on vérifie si dans les en-têtes des mails (''headers'') sont présentes les lignes &lt;tt&gt;X-Spam-Status: Yes&lt;/tt&gt; et &lt;tt&gt;X-Bogosity: Yes&lt;/tt&gt; témoignant de la nature spam du mail. Si oui, alors ce mail est passé à l'action &amp;quot;inspam&amp;quot;, et placé dans le dossier des spams.

=== Listes de diffusion ===

De la même façon, on peut placer les mails destinés à une liste de diffusion dans un dossier à part. Cela se passe avec des expressions régulières ([https://fr.wikipedia.org/wiki/Expression_rationnelle regexp]) qui peuvent être trouvées dans le header ou le corps (''body'') du message :

&lt;pre&gt;match &amp;quot;^(From|Cc|To|List-Id).*@suckless\\.org&amp;quot; in headers action &amp;quot;suckless&amp;quot;&lt;/pre&gt;
=== Archivage ===

[http://fdm.sourceforge.net/ fdm] peut apparement archiver les mails plus vieux de n jours. Voici ce que l'on ajoute dans le fichier de configuration pour ce faire :

&lt;pre&gt;%max_age    = 30
action &amp;quot;keep&amp;quot; keep
action &amp;quot;archive&amp;quot; mbox &amp;quot;%h/Maildir/archive/%[maildir]-%yq%Q&amp;quot; compress
account &amp;quot;archive&amp;quot; disabled maildirs {
    &amp;quot;%h/Maildir/laposte/&amp;quot;
        }
match account &amp;quot;archive&amp;quot; and age &amp;gt; %{max_age} days action &amp;quot;archive&amp;quot;
match account &amp;quot;archive&amp;quot; action &amp;quot;keep&amp;quot;&lt;/pre&gt;
Ensuite, vous archivez en lançant la commande suivante : &lt;tt&gt;fdm -vaarchive fetch&lt;/tt&gt;. Cette commande peut tout à fait avoir sa place dans le crontab :

&lt;pre&gt;43 12 * * 1 fdm -va archive fetch&lt;/pre&gt;
== Récupérer le courrier ==

Pour récupérer le courrier, lancez la commande &lt;tt&gt;fdm fetch&lt;/tt&gt;. Pour faire vos essais, rajoutez l'option &lt;tt&gt;-k&lt;/tt&gt; afin de laisser les messages sur le serveur.

Si vous souhaitez que fdm récupère vos messages toutes les 5 minutes, tapez &lt;tt&gt;crontab -e&lt;/tt&gt;, puis ajoutez cette ligne :

&lt;pre&gt;*/5 * * * * fdm fetch &amp;gt;&amp;gt; $HOME/Maildir/fdm.log&lt;/pre&gt;
== Un exemple? ==

Cela fait beaucoup d'un coup. Vous trouverez plusieurs exemples dans /usr/share/doc/fdm/examples. Voici mon propre fdm.conf :

&lt;pre&gt;# Quelques options :
#set verify-certificates
set unmatched-mail keep
set parallel-accounts 2

# Les courriels plus vieux que %max_age sont archivés
%max_age    = 30

# simple actions
action &amp;quot;drop&amp;quot; drop
action &amp;quot;keep&amp;quot; keep
# actions à réaliser sur les mails
action &amp;quot;inlaposte&amp;quot; maildir &amp;quot;%h/Maildir/laposte&amp;quot;
action &amp;quot;infac&amp;quot; maildir &amp;quot;%h/Maildir/fac&amp;quot;
action &amp;quot;inlavabit&amp;quot; maildir &amp;quot;%h/Maildir/lavabit&amp;quot;
action &amp;quot;intoilelibre&amp;quot; maildir &amp;quot;%h/Maildir/toilelibre&amp;quot;
action &amp;quot;inboiteaspam&amp;quot; maildir &amp;quot;%h/Maildir/bas&amp;quot;

# Bogofilter super antispam
action &amp;quot;antispam&amp;quot; rewrite &amp;quot;bogofilter -u -e -p&amp;quot;
action &amp;quot;inspam&amp;quot; maildir &amp;quot;%h/Maildir/spam&amp;quot;

# Listes de diffusion
action &amp;quot;suckless&amp;quot; maildir &amp;quot;%h/Maildir/devlists/suckless&amp;quot;
action &amp;quot;gnewsense&amp;quot; maildir &amp;quot;%h/Maildir/devlists/gnewsense&amp;quot;
action &amp;quot;xfce&amp;quot; maildir &amp;quot;%h/Maildir/devlists/xfce&amp;quot;
action &amp;quot;debian&amp;quot; maildir &amp;quot;%h/Maildir/devlists/debian&amp;quot;
action &amp;quot;hurd&amp;quot; maildir &amp;quot;%h/Maildir/devlists/hurd&amp;quot;

### archiving action
action &amp;quot;archive&amp;quot; mbox &amp;quot;%h/Maildir/archive/%[maildir]-%yq%Q&amp;quot; compress

###
# Comptes courriel :
account &amp;quot;laposte&amp;quot; imap server &amp;quot;imap.laposte.net&amp;quot; 
    user &amp;quot;xavier.cartron&amp;quot; pass &amp;quot;thuban1712x&amp;quot;
account &amp;quot;fac&amp;quot; imaps server &amp;quot;imaps.etu.univ-nantes.fr&amp;quot; port 993 
    user &amp;quot;e072767U&amp;quot; pass &amp;quot;alsipsclar&amp;quot;
account &amp;quot;lavabit&amp;quot; imaps server &amp;quot;imap.lavabit.com&amp;quot; port 993 
    user &amp;quot;bcnofne&amp;quot; pass &amp;quot;alsipsclar1712&amp;quot;
account &amp;quot;toilelibre&amp;quot; imaps server &amp;quot;imap.singularity.fr&amp;quot; port 993 
    user &amp;quot;thuban@singularity.fr&amp;quot; pass &amp;quot;thuban17_12&amp;quot;
account &amp;quot;boiteaspam&amp;quot; imap server &amp;quot;imap.laposte.net&amp;quot;  
    user &amp;quot;lilliput23&amp;quot; pass &amp;quot;thuban1712&amp;quot;
    account &quot;stdin&quot; disabled stdin
###

# Archivage
account &amp;quot;archive&amp;quot; disabled maildirs {
    &amp;quot;%h/Maildir/laposte/&amp;quot;
    &amp;quot;%h/Maildir/lavabit/&amp;quot;
    &amp;quot;%h/Maildir/fac/&amp;quot;
    &amp;quot;%h/Maildir/toilelibre/&amp;quot;
    &amp;quot;%h/Maildir/bas/&amp;quot;
    &amp;quot;%h/Maildir/devlists/&amp;quot;
        }
match account &amp;quot;archive&amp;quot; and age &amp;gt; %{max_age} days action &amp;quot;archive&amp;quot;
match account &amp;quot;archive&amp;quot; action &amp;quot;keep&amp;quot;


# Tout passe par l'antispam
match all action &amp;quot;antispam&amp;quot; continue
match &amp;quot;^X-Spam-Status: Yes&amp;quot; in headers action &amp;quot;inspam&amp;quot; 
match &amp;quot;^X-Bogosity: Yes&amp;quot; in headers action &amp;quot;inspam&amp;quot;

# Filtres pour les liste de diffusion : 
match &amp;quot;^(From|Cc|To|List-Id).*@suckless\\.org&amp;quot; in headers action &amp;quot;suckless&amp;quot;
match &amp;quot;^(From|Cc|To|List-Id).*@gnu\\.org&amp;quot; in headers action &amp;quot;hurd&amp;quot;
match &amp;quot;^(From|Cc|To|List-Id).*@nongnu\\.org&amp;quot; in headers action &amp;quot;gnewsense&amp;quot;
match &amp;quot;^(From|Cc|To|List-Id).*@xfce\\.org&amp;quot; in headers action &amp;quot;xfce&amp;quot;
match &amp;quot;^(From|Cc|To|List-Id).*debian.*@lists\\.debian\\.org&amp;quot; in headers action &amp;quot;debian&amp;quot;


# On envoie les mails dans leurs boîtes
match account &amp;quot;laposte&amp;quot; action &amp;quot;inlaposte&amp;quot;
match account &amp;quot;fac&amp;quot; action &amp;quot;infac&amp;quot;
match account &amp;quot;lavabit&amp;quot; action &amp;quot;inlavabit&amp;quot;
match account &amp;quot;toilelibre&amp;quot; action &amp;quot;intoilelibre&amp;quot;
match account &amp;quot;boiteaspam&amp;quot; action &amp;quot;inboiteaspam&amp;quot;

# On attrape tout ce qui n'a pas été filtré
match all action &amp;quot;inlaposte&amp;quot;&lt;/pre&gt;</text>
      <sha1>5n0q448lznx5f09o2f7shi6bfi15ivz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5191</id>
      <parentid>4846</parentid>
      <timestamp>2013-05-17T10:13:02Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <comment>/* Un exemple? */</comment>
      <text xml:space="preserve" bytes="5949">&lt;h2 id=&quot;fdm&quot;&gt;
Récupération du courrier avec fdm
&lt;/h2&gt;
Bien qu'il existe la possibilité d'utiliser les bulldozers fetchmail et procmail, je vous propose ici une solution plus légère : [http://fdm.sourceforge.net/ fdm]. À lui tout seul, il peut récupérer vos e-mails, les trier selon le destinataire, l'émetteur, la date, archiver vos mails...

Par la suite, vous serez en mesure de lire vos mails localement, puisqu'ils seront téléchargés dans vos dossiers. Pour cela, on utilise des dossiers appelés [http://fr.wikipedia.org/wiki/Maildir Maildir], eux mêmes composés de sous-dossier &lt;tt&gt;cur&lt;/tt&gt;, &lt;tt&gt;new&lt;/tt&gt; et &lt;tt&gt;temp&lt;/tt&gt;. Pensez donc à créer ces dossiers avant de récupérer vos mails.

L'installation est des plus simple : &lt;tt&gt;apt-get install fdm&lt;/tt&gt;.

Maintenant, on peut le configurer. Pour cela, créez un fichier &lt;tt&gt;~/.fdm.conf&lt;/tt&gt; (le '~' représentant votre répertoire utilisateur).

=== Ajout des comptes ===

On peut désormais préciser dans le fichier de configuration les comptes e-mail. Cela se fait avec la syntaxe suivante :

&lt;pre&gt;account &amp;quot;compte1&amp;quot; imap server &amp;quot;imap.serveur.net&amp;quot; port 143
    user &amp;quot;utilisateur&amp;quot; pass &amp;quot;******&amp;quot;&lt;/pre&gt;
Ce qui est précisé entre guillemets ainsi que le numéro du port est à remplacer selon vos besoins. Sachez que &amp;quot;compte1&amp;quot; est le nom donné à ce compte, pour pouvoir se repérer ensuite dans la configuration.&lt;br /&gt;
Il est tout à fait possible de définir plusieurs comptes de cette façon. Attention toutefois, pour les comptes imap ssl, remplacez &lt;tt&gt;imap&lt;/tt&gt; par &lt;tt&gt;imaps&lt;/tt&gt;

===fdm le facteur du système===
&lt;p&gt;Pour recevoir les mails du système, ajoutez ces lignes au fichier de
configuration ~/.fdm.conf : &lt;/p&gt;
&lt;pre&gt;&lt;code&gt;account &quot;stdin&quot; disabled stdin
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Puis ceci dans le fichier ~/.forward, avec les &quot; : &lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&quot;|/usr/bin/fdm -m -a stdin fetch&quot;
&lt;/code&gt;&lt;/pre&gt;

=== Définir des actions ===

[http://fdm.sourceforge.net/ fdm] utilise un système d'&amp;quot;actions&amp;quot; pour traiter vos e-mails. Par exemple, on peut définir une action nommée &amp;quot;inlaposte&amp;quot;, pour déplacer les messages dans le dossier [http://fr.wikipedia.org/wiki/Maildir maildir] &amp;quot;/home/xavier/Maildir/laposte&amp;quot;.&lt;br /&gt;
''Afin de se simplifier la vie, vous pouvez écrire &lt;tt&gt;%h&lt;/tt&gt; à la place de &lt;tt&gt;/home/utilisateur&lt;/tt&gt;, fdm le comprendra.''

Voici donc un exemple pour déplacer du courrier dans un dossier précis : &lt;tt&gt;action &amp;quot;inlaposte&amp;quot; maildir &amp;quot;%h/Maildir/laposte&amp;quot;&lt;/tt&gt;

=== Récupérer les mails ===

On va maintenant dire à fdm de placer les courriels destinés à ce compte dans le dossier correspondant. On écrit alors plus bas :

&lt;pre&gt;match account &amp;quot;laposte&amp;quot; action &amp;quot;inlaposte&amp;quot;&lt;/pre&gt;
=== Gestion des spams ===

Pour gérer les spams, je vous conseille [http://bogofilter.sourceforge.net/faq_fr.shtml bogofilter].&lt;br /&gt;
Je vous propose le comportement suivant : un mail arrive, bogofilter vérifie s'il s'agit d'un spam, et si oui, il ajoute un en-tête à ce spam. Ensuite, fdm se charge de placer les éventuels spam dans un dossier prévu à cet effet : &lt;tt&gt;~/Maildir/spam&lt;/tt&gt;

On définit alors les 2 actions suivantes, qui se chargent de filtrer les spams, et de déplacer dans le dossier spam :

&lt;pre&gt;action &amp;quot;antispam&amp;quot; rewrite &amp;quot;bogofilter -u -e -p&amp;quot;
action &amp;quot;inspam&amp;quot; maildir &amp;quot;%h/Maildir/spam&amp;quot;&lt;/pre&gt;
Afin que bogofilter traite les éventuels spams, on va placer 3 autres lignes avant la ligne &lt;tt&gt;match account &amp;quot;laposte&amp;quot; action &amp;quot;inlaposte&amp;quot;&lt;/tt&gt; :

&lt;pre&gt;# Tout passe par l'antispam
match all action &amp;quot;antispam&amp;quot; continue
match &amp;quot;^X-Spam-Status: Yes&amp;quot; in headers action &amp;quot;inspam&amp;quot; 
match &amp;quot;^X-Bogosity: Yes&amp;quot; in headers action &amp;quot;inspam&amp;quot;&lt;/pre&gt;
Ces trois lignes font passer tous (''all'') les mails à l'action antispam, puis continue. Ensuite, on vérifie si dans les en-têtes des mails (''headers'') sont présentes les lignes &lt;tt&gt;X-Spam-Status: Yes&lt;/tt&gt; et &lt;tt&gt;X-Bogosity: Yes&lt;/tt&gt; témoignant de la nature spam du mail. Si oui, alors ce mail est passé à l'action &amp;quot;inspam&amp;quot;, et placé dans le dossier des spams.

=== Listes de diffusion ===

De la même façon, on peut placer les mails destinés à une liste de diffusion dans un dossier à part. Cela se passe avec des expressions régulières ([https://fr.wikipedia.org/wiki/Expression_rationnelle regexp]) qui peuvent être trouvées dans le header ou le corps (''body'') du message :

&lt;pre&gt;match &amp;quot;^(From|Cc|To|List-Id).*@suckless\\.org&amp;quot; in headers action &amp;quot;suckless&amp;quot;&lt;/pre&gt;
=== Archivage ===

[http://fdm.sourceforge.net/ fdm] peut apparement archiver les mails plus vieux de n jours. Voici ce que l'on ajoute dans le fichier de configuration pour ce faire :

&lt;pre&gt;%max_age    = 30
action &amp;quot;keep&amp;quot; keep
action &amp;quot;archive&amp;quot; mbox &amp;quot;%h/Maildir/archive/%[maildir]-%yq%Q&amp;quot; compress
account &amp;quot;archive&amp;quot; disabled maildirs {
    &amp;quot;%h/Maildir/laposte/&amp;quot;
        }
match account &amp;quot;archive&amp;quot; and age &amp;gt; %{max_age} days action &amp;quot;archive&amp;quot;
match account &amp;quot;archive&amp;quot; action &amp;quot;keep&amp;quot;&lt;/pre&gt;
Ensuite, vous archivez en lançant la commande suivante : &lt;tt&gt;fdm -vaarchive fetch&lt;/tt&gt;. Cette commande peut tout à fait avoir sa place dans le crontab :

&lt;pre&gt;43 12 * * 1 fdm -va archive fetch&lt;/pre&gt;
== Récupérer le courrier ==

Pour récupérer le courrier, lancez la commande &lt;tt&gt;fdm fetch&lt;/tt&gt;. Pour faire vos essais, rajoutez l'option &lt;tt&gt;-k&lt;/tt&gt; afin de laisser les messages sur le serveur.

Si vous souhaitez que fdm récupère vos messages toutes les 5 minutes, tapez &lt;tt&gt;crontab -e&lt;/tt&gt;, puis ajoutez cette ligne :

&lt;pre&gt;*/5 * * * * fdm fetch &amp;gt;&amp;gt; $HOME/Maildir/fdm.log&lt;/pre&gt;
== Un exemple? ==

Cela fait beaucoup d'un coup. Vous trouverez plusieurs exemples dans /usr/share/doc/fdm/examples.</text>
      <sha1>srpjj781vcxhrjna9x0z0602b5b9efp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fetchmail sur postfixadmin</title>
    <ns>0</ns>
    <id>702</id>
    <revision>
      <id>3096</id>
      <timestamp>2011-07-30T04:54:56Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « == Fetchmail sur postfixadmin ==  === Préparation de l'environnement ===   pourquoi ne pas utiliser fetchmail disponible avec postfixadmin pour recuperer ses mails.  Pour co... »</comment>
      <text xml:space="preserve" bytes="4101">== Fetchmail sur postfixadmin ==

=== Préparation de l'environnement ===


pourquoi ne pas utiliser fetchmail disponible avec postfixadmin pour recuperer ses mails.

Pour commencer, installer les paquets perl manquants à fetchmail pour le bon fonctionnement

&lt;code&gt;
perl -MCPAN -e shell

install&gt;File::Temp  
install&gt;DBI
install&gt;MIME::Base64
install&gt;Sys::Syslog
&lt;/code&gt;

ou 

&lt;code&gt;
apt-get install libdbi-perl libmime-base64-urlsafe-perl libtest-tempdir-perl liblogger-syslog-perl liblockfile-simple-perl 
&lt;/code&gt;

Créer le répertoire et fichier de verrouillage pour fetchmail.

&lt;code&gt;
mkdir /var/run/fetchmail
touch /var/run/fetchmail/fetchmail-all.lock 
&lt;/code&gt;


pasons maintenant à la modification de fetchmail.pl et de postfixadmin

=== modification de fetchmail.pl ===

ouvrez le fichier /var/www/postfixadmin/ADDITIONS/fetchmail.pl et renseigner les lignes suivantes

&lt;code&gt;
# database backend - uncomment one of these
#our $db_type = 'Pg';
my $db_type = 'mysql';

# host name
our $db_host=&quot;127.0.0.1&quot;;
# database name
our $db_name=&quot;postfix&quot;;
# database username
our $db_username=&quot;postfix&quot;;
# database password
our $db_password=&quot;mon_password&quot;;
&lt;/code&gt;

créer le fichier etc/mail/postfixadmin/fetchmail.conf et reinscrivez les variables de connection dedans MAIS sans &quot;our&quot; 

&lt;code&gt;
$db_host=&quot;127.0.0.1&quot;;
$db_name=&quot;postfix&quot;;
$db_username=&quot;postfix&quot;;
$db_password=&quot;mon_password&quot;;
&lt;/code&gt;

rendez le script executable

&lt;code&gt;
chmod 755 /var/www/postfixadmin/ADDITIONS/fetchmail.pl 
&lt;/code&gt;

Ouvrez postfixadmin en tant administrateur, cliquer sur &quot;Récuperer les mails&quot; et renseignez le tableau

=== modification de postfixadmin ===

&lt;code&gt;
Mailbox           Votre boite aux lettres local
Server            serveur distant : exemple pop.laposte.net) 
Auth Type         type d'accés en général &quot;password&quot;
User              l'user de votre boite distante
Password          le password de votre boite distante
Folder             
Poll              Vérifier toutes les ... minutes // rien mettre on va utiliser le cron 
Fetch All         cocher pour récuperer tous les messages
Keep              cocher pour conserver une copie sur le serveur
Protocol          le protocol utilisé (IMAP, POP)
SSL               
&lt;/code&gt;

Vérifier que la variable est à &quot;YES&quot; dans /var/www/postfixadmin/config.inc.php

&lt;code&gt;
// Fetchmail
// If you don't want fetchmail tab set this to 'NO';
$CONF['fetchmail'] = 'YES';
&lt;/code&gt;

tester en le lancant à la mano à partir de Perl... Il va geuler 
car il n'aime pas être lancer en tant que root. C'est pas grave. 
Pour rectifier cela, faite executer fetchmail.pl par le user &quot;facteur&quot;

&lt;code&gt;
chown facteur.facteur /var/www/postfixadmin/ADDITIONS/fetchmail.pl

modifier dans la foulée l'appartenance 
de /var/run/fetchmail/fetchmail-all.lock

chown -R facteur.facteur /var/run/fetchmail/
&lt;/code&gt;

Pour automatiser tout ça, nous allons créer un crontab

ouvrez le fichier : vi /etc/crontab et poser à la fin cette ligne
qui lancera la récuperation des mails toutes les 5mn

&lt;code&gt;
*/5 * * * * facteur perl /var/www/postfixadmin/ADDITIONS/fetchmail.pl &gt; /dev/null 2&amp;&gt;1
&lt;/code&gt;



les logs

&lt;code&gt;
Jul 20 13:45:01 bougnat /USR/SBIN/CRON[9641]: (facteur) CMD (perl /var/www/postfixadmin/ADDITIONS/fetchmail.pl &gt; /dev/null 2&amp;&gt;1 )
Jul 20 13:45:02 bougnat fetchmail-all[9642]: fetch gilles for gilles@xxxx.re
Jul 20 13:45:04 bougnat fetchmail[9643]: Aucun message pour gilles dans pop.laposte.net
Jul 20 13:45:04 bougnat fetchmail-all[9642]: fetch contact@xxxx for gilles@xxxx.re
Jul 20 13:45:07 bougnat fetchmail[9644]: Aucun message pour contact@xxxx.re dans pop.1and1.fr
...
Jul 20 13:50:01 bougnat /USR/SBIN/CRON[9707]: (facteur) CMD (perl /var/www/postfixadmin/ADDITIONS/fetchmail.pl &gt; /dev/null 2&amp;&gt;1 )
Jul 20 13:45:02 bougnat fetchmail-all[9642]: fetch gilles for gilles@xxxx.re
Jul 20 13:45:04 bougnat fetchmail[9643]: Aucun message pour gilles dans pop.laposte.net
Jul 20 13:45:04 bougnat fetchmail-all[9642]: fetch contact@xxxx for gilles@xxxx.re
Jul 20 13:45:07 bougnat fetchmail[9644]: Aucun message pour contact@xxxx.re dans pop.1and1.fr

&lt;/code&gt;</text>
      <sha1>lz0ncnsc222jciq5hzbv1aqqjij0ubx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3123</id>
      <parentid>3096</parentid>
      <timestamp>2011-07-30T08:25:24Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Préparation de l'environnement */</comment>
      <text xml:space="preserve" bytes="4104">== Fetchmail sur postfixadmin ==

=== Préparation de l'environnement ===


Pourquoi ne pas utiliser fetchmail disponible avec postfixadmin pour récupérer ses mails.

Pour commencer, installez les paquets perl manquants à fetchmail pour le bon fonctionnement

&lt;code&gt;
perl -MCPAN -e shell

install&gt;File::Temp  
install&gt;DBI
install&gt;MIME::Base64
install&gt;Sys::Syslog
&lt;/code&gt;

ou 

&lt;code&gt;
apt-get install libdbi-perl libmime-base64-urlsafe-perl libtest-tempdir-perl liblogger-syslog-perl liblockfile-simple-perl 
&lt;/code&gt;

Créez le répertoire et fichier de verrouillage pour fetchmail.

&lt;code&gt;
mkdir /var/run/fetchmail
touch /var/run/fetchmail/fetchmail-all.lock 
&lt;/code&gt;


passons maintenant à la modification de fetchmail.pl et de postfixadmin

=== modification de fetchmail.pl ===

ouvrez le fichier /var/www/postfixadmin/ADDITIONS/fetchmail.pl et renseigner les lignes suivantes

&lt;code&gt;
# database backend - uncomment one of these
#our $db_type = 'Pg';
my $db_type = 'mysql';

# host name
our $db_host=&quot;127.0.0.1&quot;;
# database name
our $db_name=&quot;postfix&quot;;
# database username
our $db_username=&quot;postfix&quot;;
# database password
our $db_password=&quot;mon_password&quot;;
&lt;/code&gt;

créer le fichier etc/mail/postfixadmin/fetchmail.conf et reinscrivez les variables de connection dedans MAIS sans &quot;our&quot; 

&lt;code&gt;
$db_host=&quot;127.0.0.1&quot;;
$db_name=&quot;postfix&quot;;
$db_username=&quot;postfix&quot;;
$db_password=&quot;mon_password&quot;;
&lt;/code&gt;

rendez le script executable

&lt;code&gt;
chmod 755 /var/www/postfixadmin/ADDITIONS/fetchmail.pl 
&lt;/code&gt;

Ouvrez postfixadmin en tant administrateur, cliquer sur &quot;Récuperer les mails&quot; et renseignez le tableau

=== modification de postfixadmin ===

&lt;code&gt;
Mailbox           Votre boite aux lettres local
Server            serveur distant : exemple pop.laposte.net) 
Auth Type         type d'accés en général &quot;password&quot;
User              l'user de votre boite distante
Password          le password de votre boite distante
Folder             
Poll              Vérifier toutes les ... minutes // rien mettre on va utiliser le cron 
Fetch All         cocher pour récuperer tous les messages
Keep              cocher pour conserver une copie sur le serveur
Protocol          le protocol utilisé (IMAP, POP)
SSL               
&lt;/code&gt;

Vérifier que la variable est à &quot;YES&quot; dans /var/www/postfixadmin/config.inc.php

&lt;code&gt;
// Fetchmail
// If you don't want fetchmail tab set this to 'NO';
$CONF['fetchmail'] = 'YES';
&lt;/code&gt;

tester en le lancant à la mano à partir de Perl... Il va geuler 
car il n'aime pas être lancer en tant que root. C'est pas grave. 
Pour rectifier cela, faite executer fetchmail.pl par le user &quot;facteur&quot;

&lt;code&gt;
chown facteur.facteur /var/www/postfixadmin/ADDITIONS/fetchmail.pl

modifier dans la foulée l'appartenance 
de /var/run/fetchmail/fetchmail-all.lock

chown -R facteur.facteur /var/run/fetchmail/
&lt;/code&gt;

Pour automatiser tout ça, nous allons créer un crontab

ouvrez le fichier : vi /etc/crontab et poser à la fin cette ligne
qui lancera la récuperation des mails toutes les 5mn

&lt;code&gt;
*/5 * * * * facteur perl /var/www/postfixadmin/ADDITIONS/fetchmail.pl &gt; /dev/null 2&amp;&gt;1
&lt;/code&gt;



les logs

&lt;code&gt;
Jul 20 13:45:01 bougnat /USR/SBIN/CRON[9641]: (facteur) CMD (perl /var/www/postfixadmin/ADDITIONS/fetchmail.pl &gt; /dev/null 2&amp;&gt;1 )
Jul 20 13:45:02 bougnat fetchmail-all[9642]: fetch gilles for gilles@xxxx.re
Jul 20 13:45:04 bougnat fetchmail[9643]: Aucun message pour gilles dans pop.laposte.net
Jul 20 13:45:04 bougnat fetchmail-all[9642]: fetch contact@xxxx for gilles@xxxx.re
Jul 20 13:45:07 bougnat fetchmail[9644]: Aucun message pour contact@xxxx.re dans pop.1and1.fr
...
Jul 20 13:50:01 bougnat /USR/SBIN/CRON[9707]: (facteur) CMD (perl /var/www/postfixadmin/ADDITIONS/fetchmail.pl &gt; /dev/null 2&amp;&gt;1 )
Jul 20 13:45:02 bougnat fetchmail-all[9642]: fetch gilles for gilles@xxxx.re
Jul 20 13:45:04 bougnat fetchmail[9643]: Aucun message pour gilles dans pop.laposte.net
Jul 20 13:45:04 bougnat fetchmail-all[9642]: fetch contact@xxxx for gilles@xxxx.re
Jul 20 13:45:07 bougnat fetchmail[9644]: Aucun message pour contact@xxxx.re dans pop.1and1.fr

&lt;/code&gt;</text>
      <sha1>htct3hnj77qq7pz1guq23lc6mz76uao</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3125</id>
      <parentid>3123</parentid>
      <timestamp>2011-07-30T08:27:15Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* modification de fetchmail.pl */</comment>
      <text xml:space="preserve" bytes="4105">== Fetchmail sur postfixadmin ==

=== Préparation de l'environnement ===


Pourquoi ne pas utiliser fetchmail disponible avec postfixadmin pour récupérer ses mails.

Pour commencer, installez les paquets perl manquants à fetchmail pour le bon fonctionnement

&lt;code&gt;
perl -MCPAN -e shell

install&gt;File::Temp  
install&gt;DBI
install&gt;MIME::Base64
install&gt;Sys::Syslog
&lt;/code&gt;

ou 

&lt;code&gt;
apt-get install libdbi-perl libmime-base64-urlsafe-perl libtest-tempdir-perl liblogger-syslog-perl liblockfile-simple-perl 
&lt;/code&gt;

Créez le répertoire et fichier de verrouillage pour fetchmail.

&lt;code&gt;
mkdir /var/run/fetchmail
touch /var/run/fetchmail/fetchmail-all.lock 
&lt;/code&gt;


passons maintenant à la modification de fetchmail.pl et de postfixadmin

=== modification de fetchmail.pl ===

ouvrez le fichier /var/www/postfixadmin/ADDITIONS/fetchmail.pl et renseignez les lignes suivantes

&lt;code&gt;
# database backend - uncomment one of these
#our $db_type = 'Pg';
my $db_type = 'mysql';

# host name
our $db_host=&quot;127.0.0.1&quot;;
# database name
our $db_name=&quot;postfix&quot;;
# database username
our $db_username=&quot;postfix&quot;;
# database password
our $db_password=&quot;mon_password&quot;;
&lt;/code&gt;

créez le fichier etc/mail/postfixadmin/fetchmail.conf et réinscrivez les variables de connexion dedans MAIS sans &quot;our&quot; 

&lt;code&gt;
$db_host=&quot;127.0.0.1&quot;;
$db_name=&quot;postfix&quot;;
$db_username=&quot;postfix&quot;;
$db_password=&quot;mon_password&quot;;
&lt;/code&gt;

rendez le script exécutable

&lt;code&gt;
chmod 755 /var/www/postfixadmin/ADDITIONS/fetchmail.pl 
&lt;/code&gt;

Ouvrez postfixadmin en tant administrateur, cliquez sur &quot;Récuperer les mails&quot; et renseignez le tableau

=== modification de postfixadmin ===

&lt;code&gt;
Mailbox           Votre boite aux lettres local
Server            serveur distant : exemple pop.laposte.net) 
Auth Type         type d'accés en général &quot;password&quot;
User              l'user de votre boite distante
Password          le password de votre boite distante
Folder             
Poll              Vérifier toutes les ... minutes // rien mettre on va utiliser le cron 
Fetch All         cocher pour récuperer tous les messages
Keep              cocher pour conserver une copie sur le serveur
Protocol          le protocol utilisé (IMAP, POP)
SSL               
&lt;/code&gt;

Vérifier que la variable est à &quot;YES&quot; dans /var/www/postfixadmin/config.inc.php

&lt;code&gt;
// Fetchmail
// If you don't want fetchmail tab set this to 'NO';
$CONF['fetchmail'] = 'YES';
&lt;/code&gt;

tester en le lancant à la mano à partir de Perl... Il va geuler 
car il n'aime pas être lancer en tant que root. C'est pas grave. 
Pour rectifier cela, faite executer fetchmail.pl par le user &quot;facteur&quot;

&lt;code&gt;
chown facteur.facteur /var/www/postfixadmin/ADDITIONS/fetchmail.pl

modifier dans la foulée l'appartenance 
de /var/run/fetchmail/fetchmail-all.lock

chown -R facteur.facteur /var/run/fetchmail/
&lt;/code&gt;

Pour automatiser tout ça, nous allons créer un crontab

ouvrez le fichier : vi /etc/crontab et poser à la fin cette ligne
qui lancera la récuperation des mails toutes les 5mn

&lt;code&gt;
*/5 * * * * facteur perl /var/www/postfixadmin/ADDITIONS/fetchmail.pl &gt; /dev/null 2&amp;&gt;1
&lt;/code&gt;



les logs

&lt;code&gt;
Jul 20 13:45:01 bougnat /USR/SBIN/CRON[9641]: (facteur) CMD (perl /var/www/postfixadmin/ADDITIONS/fetchmail.pl &gt; /dev/null 2&amp;&gt;1 )
Jul 20 13:45:02 bougnat fetchmail-all[9642]: fetch gilles for gilles@xxxx.re
Jul 20 13:45:04 bougnat fetchmail[9643]: Aucun message pour gilles dans pop.laposte.net
Jul 20 13:45:04 bougnat fetchmail-all[9642]: fetch contact@xxxx for gilles@xxxx.re
Jul 20 13:45:07 bougnat fetchmail[9644]: Aucun message pour contact@xxxx.re dans pop.1and1.fr
...
Jul 20 13:50:01 bougnat /USR/SBIN/CRON[9707]: (facteur) CMD (perl /var/www/postfixadmin/ADDITIONS/fetchmail.pl &gt; /dev/null 2&amp;&gt;1 )
Jul 20 13:45:02 bougnat fetchmail-all[9642]: fetch gilles for gilles@xxxx.re
Jul 20 13:45:04 bougnat fetchmail[9643]: Aucun message pour gilles dans pop.laposte.net
Jul 20 13:45:04 bougnat fetchmail-all[9642]: fetch contact@xxxx for gilles@xxxx.re
Jul 20 13:45:07 bougnat fetchmail[9644]: Aucun message pour contact@xxxx.re dans pop.1and1.fr

&lt;/code&gt;</text>
      <sha1>oz1ad7n1skdbyecuj2a294ja3wpedy1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3126</id>
      <parentid>3125</parentid>
      <timestamp>2011-07-30T08:29:36Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* modification de postfixadmin */</comment>
      <text xml:space="preserve" bytes="4109">== Fetchmail sur postfixadmin ==

=== Préparation de l'environnement ===


Pourquoi ne pas utiliser fetchmail disponible avec postfixadmin pour récupérer ses mails.

Pour commencer, installez les paquets perl manquants à fetchmail pour le bon fonctionnement

&lt;code&gt;
perl -MCPAN -e shell

install&gt;File::Temp  
install&gt;DBI
install&gt;MIME::Base64
install&gt;Sys::Syslog
&lt;/code&gt;

ou 

&lt;code&gt;
apt-get install libdbi-perl libmime-base64-urlsafe-perl libtest-tempdir-perl liblogger-syslog-perl liblockfile-simple-perl 
&lt;/code&gt;

Créez le répertoire et fichier de verrouillage pour fetchmail.

&lt;code&gt;
mkdir /var/run/fetchmail
touch /var/run/fetchmail/fetchmail-all.lock 
&lt;/code&gt;


passons maintenant à la modification de fetchmail.pl et de postfixadmin

=== modification de fetchmail.pl ===

ouvrez le fichier /var/www/postfixadmin/ADDITIONS/fetchmail.pl et renseignez les lignes suivantes

&lt;code&gt;
# database backend - uncomment one of these
#our $db_type = 'Pg';
my $db_type = 'mysql';

# host name
our $db_host=&quot;127.0.0.1&quot;;
# database name
our $db_name=&quot;postfix&quot;;
# database username
our $db_username=&quot;postfix&quot;;
# database password
our $db_password=&quot;mon_password&quot;;
&lt;/code&gt;

créez le fichier etc/mail/postfixadmin/fetchmail.conf et réinscrivez les variables de connexion dedans MAIS sans &quot;our&quot; 

&lt;code&gt;
$db_host=&quot;127.0.0.1&quot;;
$db_name=&quot;postfix&quot;;
$db_username=&quot;postfix&quot;;
$db_password=&quot;mon_password&quot;;
&lt;/code&gt;

rendez le script exécutable

&lt;code&gt;
chmod 755 /var/www/postfixadmin/ADDITIONS/fetchmail.pl 
&lt;/code&gt;

Ouvrez postfixadmin en tant administrateur, cliquez sur &quot;Récuperer les mails&quot; et renseignez le tableau

=== modification de postfixadmin ===

&lt;code&gt;
Mailbox           Votre boite aux lettres local
Server            serveur distant : exemple pop.laposte.net) 
Auth Type         type d'accés en général &quot;password&quot;
User              l'user de votre boite distante
Password          le password de votre boite distante
Folder             
Poll              Vérifier toutes les ... minutes // rien mettre on va utiliser le cron 
Fetch All         cocher pour récuperer tous les messages
Keep              cocher pour conserver une copie sur le serveur
Protocol          le protocol utilisé (IMAP, POP)
SSL               
&lt;/code&gt;

Vérifiez que la variable est à &quot;YES&quot; dans /var/www/postfixadmin/config.inc.php

&lt;code&gt;
// Fetchmail
// If you don't want fetchmail tab set this to 'NO';
$CONF['fetchmail'] = 'YES';
&lt;/code&gt;

testez en le lancant à la mano à partir de Perl... Il va gueuler 
car il n'aime pas être lancé en tant que root. C'est pas grave. 
Pour rectifier cela, faites exécuter fetchmail.pl par le user &quot;facteur&quot;

&lt;code&gt;
chown facteur.facteur /var/www/postfixadmin/ADDITIONS/fetchmail.pl

modifiez dans la foulée l'appartenance 
de /var/run/fetchmail/fetchmail-all.lock

chown -R facteur:facteur /var/run/fetchmail/
&lt;/code&gt;

Pour automatiser tout ça, nous allons créer un crontab

ouvrez le fichier : vi /etc/crontab et posez à la fin cette ligne
qui lancera la récupération des mails toutes les 5mn

&lt;code&gt;
*/5 * * * * facteur perl /var/www/postfixadmin/ADDITIONS/fetchmail.pl &gt; /dev/null 2&amp;&gt;1
&lt;/code&gt;



les logs

&lt;code&gt;
Jul 20 13:45:01 bougnat /USR/SBIN/CRON[9641]: (facteur) CMD (perl /var/www/postfixadmin/ADDITIONS/fetchmail.pl &gt; /dev/null 2&amp;&gt;1 )
Jul 20 13:45:02 bougnat fetchmail-all[9642]: fetch gilles for gilles@xxxx.re
Jul 20 13:45:04 bougnat fetchmail[9643]: Aucun message pour gilles dans pop.laposte.net
Jul 20 13:45:04 bougnat fetchmail-all[9642]: fetch contact@xxxx for gilles@xxxx.re
Jul 20 13:45:07 bougnat fetchmail[9644]: Aucun message pour contact@xxxx.re dans pop.1and1.fr
...
Jul 20 13:50:01 bougnat /USR/SBIN/CRON[9707]: (facteur) CMD (perl /var/www/postfixadmin/ADDITIONS/fetchmail.pl &gt; /dev/null 2&amp;&gt;1 )
Jul 20 13:45:02 bougnat fetchmail-all[9642]: fetch gilles for gilles@xxxx.re
Jul 20 13:45:04 bougnat fetchmail[9643]: Aucun message pour gilles dans pop.laposte.net
Jul 20 13:45:04 bougnat fetchmail-all[9642]: fetch contact@xxxx for gilles@xxxx.re
Jul 20 13:45:07 bougnat fetchmail[9644]: Aucun message pour contact@xxxx.re dans pop.1and1.fr

&lt;/code&gt;</text>
      <sha1>h10ktngst111thw5c5426evs90dmmvh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3637</id>
      <parentid>3126</parentid>
      <timestamp>2011-12-12T10:16:14Z</timestamp>
      <contributor>
        <username>Nicopham</username>
        <id>183</id>
      </contributor>
      <minor/>
      <comment>Ajout de fetchmail</comment>
      <text xml:space="preserve" bytes="4118">== Fetchmail sur postfixadmin ==

=== Préparation de l'environnement ===


Pourquoi ne pas utiliser fetchmail disponible avec postfixadmin pour récupérer ses mails.

Pour commencer, installez les paquets perl manquants à fetchmail pour le bon fonctionnement

&lt;code&gt;
perl -MCPAN -e shell

install&gt;File::Temp  
install&gt;DBI
install&gt;MIME::Base64
install&gt;Sys::Syslog
&lt;/code&gt;

ou 

&lt;code&gt;
apt-get install libdbi-perl libmime-base64-urlsafe-perl libtest-tempdir-perl liblogger-syslog-perl liblockfile-simple-perl fetchmail
&lt;/code&gt;

Créez le répertoire et fichier de verrouillage pour fetchmail.

&lt;code&gt;
mkdir /var/run/fetchmail
touch /var/run/fetchmail/fetchmail-all.lock 
&lt;/code&gt;


passons maintenant à la modification de fetchmail.pl et de postfixadmin

=== modification de fetchmail.pl ===

ouvrez le fichier /var/www/postfixadmin/ADDITIONS/fetchmail.pl et renseignez les lignes suivantes

&lt;code&gt;
# database backend - uncomment one of these
#our $db_type = 'Pg';
my $db_type = 'mysql';

# host name
our $db_host=&quot;127.0.0.1&quot;;
# database name
our $db_name=&quot;postfix&quot;;
# database username
our $db_username=&quot;postfix&quot;;
# database password
our $db_password=&quot;mon_password&quot;;
&lt;/code&gt;

créez le fichier etc/mail/postfixadmin/fetchmail.conf et réinscrivez les variables de connexion dedans MAIS sans &quot;our&quot; 

&lt;code&gt;
$db_host=&quot;127.0.0.1&quot;;
$db_name=&quot;postfix&quot;;
$db_username=&quot;postfix&quot;;
$db_password=&quot;mon_password&quot;;
&lt;/code&gt;

rendez le script exécutable

&lt;code&gt;
chmod 755 /var/www/postfixadmin/ADDITIONS/fetchmail.pl 
&lt;/code&gt;

Ouvrez postfixadmin en tant administrateur, cliquez sur &quot;Récuperer les mails&quot; et renseignez le tableau

=== modification de postfixadmin ===

&lt;code&gt;
Mailbox           Votre boite aux lettres local
Server            serveur distant : exemple pop.laposte.net) 
Auth Type         type d'accés en général &quot;password&quot;
User              l'user de votre boite distante
Password          le password de votre boite distante
Folder             
Poll              Vérifier toutes les ... minutes // rien mettre on va utiliser le cron 
Fetch All         cocher pour récuperer tous les messages
Keep              cocher pour conserver une copie sur le serveur
Protocol          le protocol utilisé (IMAP, POP)
SSL               
&lt;/code&gt;

Vérifiez que la variable est à &quot;YES&quot; dans /var/www/postfixadmin/config.inc.php

&lt;code&gt;
// Fetchmail
// If you don't want fetchmail tab set this to 'NO';
$CONF['fetchmail'] = 'YES';
&lt;/code&gt;

testez en le lancant à la mano à partir de Perl... Il va gueuler 
car il n'aime pas être lancé en tant que root. C'est pas grave. 
Pour rectifier cela, faites exécuter fetchmail.pl par le user &quot;facteur&quot;

&lt;code&gt;
chown facteur.facteur /var/www/postfixadmin/ADDITIONS/fetchmail.pl

modifiez dans la foulée l'appartenance 
de /var/run/fetchmail/fetchmail-all.lock

chown -R facteur:facteur /var/run/fetchmail/
&lt;/code&gt;

Pour automatiser tout ça, nous allons créer un crontab

ouvrez le fichier : vi /etc/crontab et posez à la fin cette ligne
qui lancera la récupération des mails toutes les 5mn

&lt;code&gt;
*/5 * * * * facteur perl /var/www/postfixadmin/ADDITIONS/fetchmail.pl &gt; /dev/null 2&amp;&gt;1
&lt;/code&gt;



les logs

&lt;code&gt;
Jul 20 13:45:01 bougnat /USR/SBIN/CRON[9641]: (facteur) CMD (perl /var/www/postfixadmin/ADDITIONS/fetchmail.pl &gt; /dev/null 2&amp;&gt;1 )
Jul 20 13:45:02 bougnat fetchmail-all[9642]: fetch gilles for gilles@xxxx.re
Jul 20 13:45:04 bougnat fetchmail[9643]: Aucun message pour gilles dans pop.laposte.net
Jul 20 13:45:04 bougnat fetchmail-all[9642]: fetch contact@xxxx for gilles@xxxx.re
Jul 20 13:45:07 bougnat fetchmail[9644]: Aucun message pour contact@xxxx.re dans pop.1and1.fr
...
Jul 20 13:50:01 bougnat /USR/SBIN/CRON[9707]: (facteur) CMD (perl /var/www/postfixadmin/ADDITIONS/fetchmail.pl &gt; /dev/null 2&amp;&gt;1 )
Jul 20 13:45:02 bougnat fetchmail-all[9642]: fetch gilles for gilles@xxxx.re
Jul 20 13:45:04 bougnat fetchmail[9643]: Aucun message pour gilles dans pop.laposte.net
Jul 20 13:45:04 bougnat fetchmail-all[9642]: fetch contact@xxxx for gilles@xxxx.re
Jul 20 13:45:07 bougnat fetchmail[9644]: Aucun message pour contact@xxxx.re dans pop.1and1.fr

&lt;/code&gt;</text>
      <sha1>43cjxapjakzwwvh2d4p33rbkuxpo52a</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5109</id>
      <parentid>3637</parentid>
      <timestamp>2013-04-25T17:21:03Z</timestamp>
      <contributor>
        <username>Brizou</username>
        <id>270</id>
      </contributor>
      <comment>/* modification de fetchmail.pl */</comment>
      <text xml:space="preserve" bytes="4438">== Fetchmail sur postfixadmin ==

=== Préparation de l'environnement ===


Pourquoi ne pas utiliser fetchmail disponible avec postfixadmin pour récupérer ses mails.

Pour commencer, installez les paquets perl manquants à fetchmail pour le bon fonctionnement

&lt;code&gt;
perl -MCPAN -e shell

install&gt;File::Temp  
install&gt;DBI
install&gt;MIME::Base64
install&gt;Sys::Syslog
&lt;/code&gt;

ou 

&lt;code&gt;
apt-get install libdbi-perl libmime-base64-urlsafe-perl libtest-tempdir-perl liblogger-syslog-perl liblockfile-simple-perl fetchmail
&lt;/code&gt;

Créez le répertoire et fichier de verrouillage pour fetchmail.

&lt;code&gt;
mkdir /var/run/fetchmail
touch /var/run/fetchmail/fetchmail-all.lock 
&lt;/code&gt;


passons maintenant à la modification de fetchmail.pl et de postfixadmin

=== modification de fetchmail.pl ===

ouvrez le fichier /var/www/postfixadmin/ADDITIONS/fetchmail.pl et renseignez les lignes suivantes

&lt;code&gt;
# database backend - uncomment one of these
#our $db_type = 'Pg';
my $db_type = 'mysql';

# host name
our $db_host=&quot;127.0.0.1&quot;;
# database name
our $db_name=&quot;postfix&quot;;
# database username
our $db_username=&quot;postfix&quot;;
# database password
our $db_password=&quot;mon_password&quot;;
&lt;/code&gt;

Si vous aves une base en mysql ce sera 
&lt;code&gt;
# database backend - uncomment one of these
#our $db_type = 'Pg';
my $db_type = 'mysql';

# host name
my $db_host=&quot;127.0.0.1&quot;;
# database name
my $db_name=&quot;postfix&quot;;
# database username
my $db_username=&quot;postfix&quot;;
# database password
my $db_password=&quot;mon_password&quot;;
&lt;/code&gt;
créez le fichier etc/mail/postfixadmin/fetchmail.conf et réinscrivez les variables de connexion dedans MAIS sans &quot;our&quot; 

&lt;code&gt;
$db_host=&quot;127.0.0.1&quot;;
$db_name=&quot;postfix&quot;;
$db_username=&quot;postfix&quot;;
$db_password=&quot;mon_password&quot;;
&lt;/code&gt;

rendez le script exécutable

&lt;code&gt;
chmod 755 /var/www/postfixadmin/ADDITIONS/fetchmail.pl 
&lt;/code&gt;

Ouvrez postfixadmin en tant administrateur, cliquez sur &quot;Récuperer les mails&quot; et renseignez le tableau

=== modification de postfixadmin ===

&lt;code&gt;
Mailbox           Votre boite aux lettres local
Server            serveur distant : exemple pop.laposte.net) 
Auth Type         type d'accés en général &quot;password&quot;
User              l'user de votre boite distante
Password          le password de votre boite distante
Folder             
Poll              Vérifier toutes les ... minutes // rien mettre on va utiliser le cron 
Fetch All         cocher pour récuperer tous les messages
Keep              cocher pour conserver une copie sur le serveur
Protocol          le protocol utilisé (IMAP, POP)
SSL               
&lt;/code&gt;

Vérifiez que la variable est à &quot;YES&quot; dans /var/www/postfixadmin/config.inc.php

&lt;code&gt;
// Fetchmail
// If you don't want fetchmail tab set this to 'NO';
$CONF['fetchmail'] = 'YES';
&lt;/code&gt;

testez en le lancant à la mano à partir de Perl... Il va gueuler 
car il n'aime pas être lancé en tant que root. C'est pas grave. 
Pour rectifier cela, faites exécuter fetchmail.pl par le user &quot;facteur&quot;

&lt;code&gt;
chown facteur.facteur /var/www/postfixadmin/ADDITIONS/fetchmail.pl

modifiez dans la foulée l'appartenance 
de /var/run/fetchmail/fetchmail-all.lock

chown -R facteur:facteur /var/run/fetchmail/
&lt;/code&gt;

Pour automatiser tout ça, nous allons créer un crontab

ouvrez le fichier : vi /etc/crontab et posez à la fin cette ligne
qui lancera la récupération des mails toutes les 5mn

&lt;code&gt;
*/5 * * * * facteur perl /var/www/postfixadmin/ADDITIONS/fetchmail.pl &gt; /dev/null 2&amp;&gt;1
&lt;/code&gt;



les logs

&lt;code&gt;
Jul 20 13:45:01 bougnat /USR/SBIN/CRON[9641]: (facteur) CMD (perl /var/www/postfixadmin/ADDITIONS/fetchmail.pl &gt; /dev/null 2&amp;&gt;1 )
Jul 20 13:45:02 bougnat fetchmail-all[9642]: fetch gilles for gilles@xxxx.re
Jul 20 13:45:04 bougnat fetchmail[9643]: Aucun message pour gilles dans pop.laposte.net
Jul 20 13:45:04 bougnat fetchmail-all[9642]: fetch contact@xxxx for gilles@xxxx.re
Jul 20 13:45:07 bougnat fetchmail[9644]: Aucun message pour contact@xxxx.re dans pop.1and1.fr
...
Jul 20 13:50:01 bougnat /USR/SBIN/CRON[9707]: (facteur) CMD (perl /var/www/postfixadmin/ADDITIONS/fetchmail.pl &gt; /dev/null 2&amp;&gt;1 )
Jul 20 13:45:02 bougnat fetchmail-all[9642]: fetch gilles for gilles@xxxx.re
Jul 20 13:45:04 bougnat fetchmail[9643]: Aucun message pour gilles dans pop.laposte.net
Jul 20 13:45:04 bougnat fetchmail-all[9642]: fetch contact@xxxx for gilles@xxxx.re
Jul 20 13:45:07 bougnat fetchmail[9644]: Aucun message pour contact@xxxx.re dans pop.1and1.fr

&lt;/code&gt;</text>
      <sha1>pjrao7fcw5zed4ix5ou3522bpjaubv8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5110</id>
      <parentid>5109</parentid>
      <timestamp>2013-04-25T17:21:23Z</timestamp>
      <contributor>
        <username>Brizou</username>
        <id>270</id>
      </contributor>
      <comment>/* modification de fetchmail.pl */</comment>
      <text xml:space="preserve" bytes="4438">== Fetchmail sur postfixadmin ==

=== Préparation de l'environnement ===


Pourquoi ne pas utiliser fetchmail disponible avec postfixadmin pour récupérer ses mails.

Pour commencer, installez les paquets perl manquants à fetchmail pour le bon fonctionnement

&lt;code&gt;
perl -MCPAN -e shell

install&gt;File::Temp  
install&gt;DBI
install&gt;MIME::Base64
install&gt;Sys::Syslog
&lt;/code&gt;

ou 

&lt;code&gt;
apt-get install libdbi-perl libmime-base64-urlsafe-perl libtest-tempdir-perl liblogger-syslog-perl liblockfile-simple-perl fetchmail
&lt;/code&gt;

Créez le répertoire et fichier de verrouillage pour fetchmail.

&lt;code&gt;
mkdir /var/run/fetchmail
touch /var/run/fetchmail/fetchmail-all.lock 
&lt;/code&gt;


passons maintenant à la modification de fetchmail.pl et de postfixadmin

=== modification de fetchmail.pl ===

ouvrez le fichier /var/www/postfixadmin/ADDITIONS/fetchmail.pl et renseignez les lignes suivantes

&lt;code&gt;
# database backend - uncomment one of these
#our $db_type = 'Pg';
my $db_type = 'mysql';

# host name
our $db_host=&quot;127.0.0.1&quot;;
# database name
our $db_name=&quot;postfix&quot;;
# database username
our $db_username=&quot;postfix&quot;;
# database password
our $db_password=&quot;mon_password&quot;;
&lt;/code&gt;

Si vous avez une base en mysql ce sera 
&lt;code&gt;
# database backend - uncomment one of these
#our $db_type = 'Pg';
my $db_type = 'mysql';

# host name
my $db_host=&quot;127.0.0.1&quot;;
# database name
my $db_name=&quot;postfix&quot;;
# database username
my $db_username=&quot;postfix&quot;;
# database password
my $db_password=&quot;mon_password&quot;;
&lt;/code&gt;
créez le fichier etc/mail/postfixadmin/fetchmail.conf et réinscrivez les variables de connexion dedans MAIS sans &quot;our&quot; 

&lt;code&gt;
$db_host=&quot;127.0.0.1&quot;;
$db_name=&quot;postfix&quot;;
$db_username=&quot;postfix&quot;;
$db_password=&quot;mon_password&quot;;
&lt;/code&gt;

rendez le script exécutable

&lt;code&gt;
chmod 755 /var/www/postfixadmin/ADDITIONS/fetchmail.pl 
&lt;/code&gt;

Ouvrez postfixadmin en tant administrateur, cliquez sur &quot;Récuperer les mails&quot; et renseignez le tableau

=== modification de postfixadmin ===

&lt;code&gt;
Mailbox           Votre boite aux lettres local
Server            serveur distant : exemple pop.laposte.net) 
Auth Type         type d'accés en général &quot;password&quot;
User              l'user de votre boite distante
Password          le password de votre boite distante
Folder             
Poll              Vérifier toutes les ... minutes // rien mettre on va utiliser le cron 
Fetch All         cocher pour récuperer tous les messages
Keep              cocher pour conserver une copie sur le serveur
Protocol          le protocol utilisé (IMAP, POP)
SSL               
&lt;/code&gt;

Vérifiez que la variable est à &quot;YES&quot; dans /var/www/postfixadmin/config.inc.php

&lt;code&gt;
// Fetchmail
// If you don't want fetchmail tab set this to 'NO';
$CONF['fetchmail'] = 'YES';
&lt;/code&gt;

testez en le lancant à la mano à partir de Perl... Il va gueuler 
car il n'aime pas être lancé en tant que root. C'est pas grave. 
Pour rectifier cela, faites exécuter fetchmail.pl par le user &quot;facteur&quot;

&lt;code&gt;
chown facteur.facteur /var/www/postfixadmin/ADDITIONS/fetchmail.pl

modifiez dans la foulée l'appartenance 
de /var/run/fetchmail/fetchmail-all.lock

chown -R facteur:facteur /var/run/fetchmail/
&lt;/code&gt;

Pour automatiser tout ça, nous allons créer un crontab

ouvrez le fichier : vi /etc/crontab et posez à la fin cette ligne
qui lancera la récupération des mails toutes les 5mn

&lt;code&gt;
*/5 * * * * facteur perl /var/www/postfixadmin/ADDITIONS/fetchmail.pl &gt; /dev/null 2&amp;&gt;1
&lt;/code&gt;



les logs

&lt;code&gt;
Jul 20 13:45:01 bougnat /USR/SBIN/CRON[9641]: (facteur) CMD (perl /var/www/postfixadmin/ADDITIONS/fetchmail.pl &gt; /dev/null 2&amp;&gt;1 )
Jul 20 13:45:02 bougnat fetchmail-all[9642]: fetch gilles for gilles@xxxx.re
Jul 20 13:45:04 bougnat fetchmail[9643]: Aucun message pour gilles dans pop.laposte.net
Jul 20 13:45:04 bougnat fetchmail-all[9642]: fetch contact@xxxx for gilles@xxxx.re
Jul 20 13:45:07 bougnat fetchmail[9644]: Aucun message pour contact@xxxx.re dans pop.1and1.fr
...
Jul 20 13:50:01 bougnat /USR/SBIN/CRON[9707]: (facteur) CMD (perl /var/www/postfixadmin/ADDITIONS/fetchmail.pl &gt; /dev/null 2&amp;&gt;1 )
Jul 20 13:45:02 bougnat fetchmail-all[9642]: fetch gilles for gilles@xxxx.re
Jul 20 13:45:04 bougnat fetchmail[9643]: Aucun message pour gilles dans pop.laposte.net
Jul 20 13:45:04 bougnat fetchmail-all[9642]: fetch contact@xxxx for gilles@xxxx.re
Jul 20 13:45:07 bougnat fetchmail[9644]: Aucun message pour contact@xxxx.re dans pop.1and1.fr

&lt;/code&gt;</text>
      <sha1>5g12br3j8n3ycbjl61saowx4f67772p</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:01 help.jpeg</title>
    <ns>6</ns>
    <id>383</id>
    <revision>
      <id>1358</id>
      <timestamp>2010-04-03T03:48:18Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:01.jpeg</title>
    <ns>6</ns>
    <id>289</id>
    <revision>
      <id>1262</id>
      <timestamp>2010-04-02T12:58:05Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:02.jpeg</title>
    <ns>6</ns>
    <id>290</id>
    <revision>
      <id>1263</id>
      <timestamp>2010-04-02T12:58:40Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:03.jpeg</title>
    <ns>6</ns>
    <id>291</id>
    <revision>
      <id>1264</id>
      <timestamp>2010-04-02T12:59:09Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:04.jpeg</title>
    <ns>6</ns>
    <id>292</id>
    <revision>
      <id>1265</id>
      <timestamp>2010-04-02T12:59:49Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:05.jpeg</title>
    <ns>6</ns>
    <id>293</id>
    <revision>
      <id>1266</id>
      <timestamp>2010-04-02T13:00:57Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:06.jpeg</title>
    <ns>6</ns>
    <id>294</id>
    <revision>
      <id>1267</id>
      <timestamp>2010-04-02T13:01:30Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:07.jpeg</title>
    <ns>6</ns>
    <id>295</id>
    <revision>
      <id>1268</id>
      <timestamp>2010-04-02T13:02:04Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:08.jpeg</title>
    <ns>6</ns>
    <id>296</id>
    <revision>
      <id>1269</id>
      <timestamp>2010-04-02T13:02:28Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:09.jpeg</title>
    <ns>6</ns>
    <id>297</id>
    <revision>
      <id>1270</id>
      <timestamp>2010-04-02T13:03:02Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:1.PNG</title>
    <ns>6</ns>
    <id>750</id>
    <revision>
      <id>3293</id>
      <timestamp>2011-08-20T16:32:22Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:1.png</title>
    <ns>6</ns>
    <id>471</id>
    <revision>
      <id>1857</id>
      <timestamp>2010-08-05T17:57:12Z</timestamp>
      <contributor>
        <username>Helid</username>
        <id>62</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:10.PNG</title>
    <ns>6</ns>
    <id>759</id>
    <revision>
      <id>3302</id>
      <timestamp>2011-08-20T16:32:24Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:10.jpeg</title>
    <ns>6</ns>
    <id>298</id>
    <revision>
      <id>1271</id>
      <timestamp>2010-04-02T13:03:34Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:10.png</title>
    <ns>6</ns>
    <id>480</id>
    <revision>
      <id>1866</id>
      <timestamp>2010-08-05T18:09:22Z</timestamp>
      <contributor>
        <username>Helid</username>
        <id>62</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:11.PNG</title>
    <ns>6</ns>
    <id>760</id>
    <revision>
      <id>3303</id>
      <timestamp>2011-08-20T16:34:53Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>Cd bussinesscard</comment>
      <text xml:space="preserve" bytes="16">Cd bussinesscard</text>
      <sha1>98gmrolwe53bzw4jtj79p1lbo0cl3li</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:11.jpeg</title>
    <ns>6</ns>
    <id>299</id>
    <revision>
      <id>1272</id>
      <timestamp>2010-04-02T13:04:13Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:11.png</title>
    <ns>6</ns>
    <id>481</id>
    <revision>
      <id>1867</id>
      <timestamp>2010-08-05T18:10:05Z</timestamp>
      <contributor>
        <username>Helid</username>
        <id>62</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:12.PNG</title>
    <ns>6</ns>
    <id>761</id>
    <revision>
      <id>3304</id>
      <timestamp>2011-08-20T16:34:53Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>Cd bussinesscard</comment>
      <text xml:space="preserve" bytes="16">Cd bussinesscard</text>
      <sha1>98gmrolwe53bzw4jtj79p1lbo0cl3li</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:12.jpeg</title>
    <ns>6</ns>
    <id>300</id>
    <revision>
      <id>1273</id>
      <timestamp>2010-04-02T13:04:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:12.png</title>
    <ns>6</ns>
    <id>482</id>
    <revision>
      <id>1868</id>
      <timestamp>2010-08-05T18:10:50Z</timestamp>
      <contributor>
        <username>Helid</username>
        <id>62</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:13.PNG</title>
    <ns>6</ns>
    <id>762</id>
    <revision>
      <id>3305</id>
      <timestamp>2011-08-20T16:34:53Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>Cd bussinesscard</comment>
      <text xml:space="preserve" bytes="16">Cd bussinesscard</text>
      <sha1>98gmrolwe53bzw4jtj79p1lbo0cl3li</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:13.jpeg</title>
    <ns>6</ns>
    <id>301</id>
    <revision>
      <id>1274</id>
      <timestamp>2010-04-02T13:05:19Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:13.png</title>
    <ns>6</ns>
    <id>483</id>
    <revision>
      <id>1869</id>
      <timestamp>2010-08-05T18:11:42Z</timestamp>
      <contributor>
        <username>Helid</username>
        <id>62</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:14.PNG</title>
    <ns>6</ns>
    <id>763</id>
    <revision>
      <id>3306</id>
      <timestamp>2011-08-20T16:34:53Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>Cd bussinesscard</comment>
      <text xml:space="preserve" bytes="16">Cd bussinesscard</text>
      <sha1>98gmrolwe53bzw4jtj79p1lbo0cl3li</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:14.jpeg</title>
    <ns>6</ns>
    <id>302</id>
    <revision>
      <id>1275</id>
      <timestamp>2010-04-02T13:05:51Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:14.png</title>
    <ns>6</ns>
    <id>484</id>
    <revision>
      <id>1870</id>
      <timestamp>2010-08-05T18:12:23Z</timestamp>
      <contributor>
        <username>Helid</username>
        <id>62</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:15.PNG</title>
    <ns>6</ns>
    <id>764</id>
    <revision>
      <id>3307</id>
      <timestamp>2011-08-20T16:34:53Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>Cd bussinesscard</comment>
      <text xml:space="preserve" bytes="16">Cd bussinesscard</text>
      <sha1>98gmrolwe53bzw4jtj79p1lbo0cl3li</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:15.jpeg</title>
    <ns>6</ns>
    <id>303</id>
    <revision>
      <id>1276</id>
      <timestamp>2010-04-02T13:07:01Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:15.png</title>
    <ns>6</ns>
    <id>486</id>
    <revision>
      <id>1872</id>
      <timestamp>2010-08-05T18:13:50Z</timestamp>
      <contributor>
        <username>Helid</username>
        <id>62</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:150px-CDDAlogo.svg.png</title>
    <ns>6</ns>
    <id>83</id>
    <revision>
      <id>328</id>
      <timestamp>2010-01-26T15:26:53Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <comment>Logo officiel du CD audio (version 150px)</comment>
      <text xml:space="preserve" bytes="41">Logo officiel du CD audio (version 150px)</text>
      <sha1>r8n9zplmr36906ajwojtng2pkxxb0xl</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:16.PNG</title>
    <ns>6</ns>
    <id>765</id>
    <revision>
      <id>3308</id>
      <timestamp>2011-08-20T16:34:53Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>Cd bussinesscard</comment>
      <text xml:space="preserve" bytes="16">Cd bussinesscard</text>
      <sha1>98gmrolwe53bzw4jtj79p1lbo0cl3li</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:16.jpeg</title>
    <ns>6</ns>
    <id>304</id>
    <revision>
      <id>1277</id>
      <timestamp>2010-04-02T13:07:56Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:16.png</title>
    <ns>6</ns>
    <id>485</id>
    <revision>
      <id>1871</id>
      <timestamp>2010-08-05T18:13:07Z</timestamp>
      <contributor>
        <username>Helid</username>
        <id>62</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:17.PNG</title>
    <ns>6</ns>
    <id>766</id>
    <revision>
      <id>3309</id>
      <timestamp>2011-08-20T16:34:53Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>Cd bussinesscard</comment>
      <text xml:space="preserve" bytes="16">Cd bussinesscard</text>
      <sha1>98gmrolwe53bzw4jtj79p1lbo0cl3li</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:17.jpeg</title>
    <ns>6</ns>
    <id>305</id>
    <revision>
      <id>1278</id>
      <timestamp>2010-04-02T13:08:40Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:18.PNG</title>
    <ns>6</ns>
    <id>767</id>
    <revision>
      <id>3310</id>
      <timestamp>2011-08-20T16:34:53Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>Cd bussinesscard</comment>
      <text xml:space="preserve" bytes="16">Cd bussinesscard</text>
      <sha1>98gmrolwe53bzw4jtj79p1lbo0cl3li</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:18.jpeg</title>
    <ns>6</ns>
    <id>306</id>
    <revision>
      <id>1279</id>
      <timestamp>2010-04-02T13:09:52Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:19.PNG</title>
    <ns>6</ns>
    <id>768</id>
    <revision>
      <id>3311</id>
      <timestamp>2011-08-20T16:34:53Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>Cd bussinesscard</comment>
      <text xml:space="preserve" bytes="16">Cd bussinesscard</text>
      <sha1>98gmrolwe53bzw4jtj79p1lbo0cl3li</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:19.jpeg</title>
    <ns>6</ns>
    <id>307</id>
    <revision>
      <id>1280</id>
      <timestamp>2010-04-02T13:11:07Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:2.PNG</title>
    <ns>6</ns>
    <id>751</id>
    <revision>
      <id>3294</id>
      <timestamp>2011-08-20T16:32:23Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:2.png</title>
    <ns>6</ns>
    <id>472</id>
    <revision>
      <id>1858</id>
      <timestamp>2010-08-05T17:59:56Z</timestamp>
      <contributor>
        <username>Helid</username>
        <id>62</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:20.PNG</title>
    <ns>6</ns>
    <id>769</id>
    <revision>
      <id>3312</id>
      <timestamp>2011-08-20T16:34:53Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>Cd bussinesscard</comment>
      <text xml:space="preserve" bytes="16">Cd bussinesscard</text>
      <sha1>98gmrolwe53bzw4jtj79p1lbo0cl3li</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:20.jpeg</title>
    <ns>6</ns>
    <id>308</id>
    <revision>
      <id>1281</id>
      <timestamp>2010-04-02T13:13:25Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:21.PNG</title>
    <ns>6</ns>
    <id>770</id>
    <revision>
      <id>3313</id>
      <timestamp>2011-08-20T16:37:04Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:21.jpeg</title>
    <ns>6</ns>
    <id>309</id>
    <revision>
      <id>1282</id>
      <timestamp>2010-04-02T13:14:34Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:22.PNG</title>
    <ns>6</ns>
    <id>771</id>
    <revision>
      <id>3314</id>
      <timestamp>2011-08-20T16:37:04Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:22.jpeg</title>
    <ns>6</ns>
    <id>310</id>
    <revision>
      <id>1283</id>
      <timestamp>2010-04-02T13:16:07Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:23.PNG</title>
    <ns>6</ns>
    <id>772</id>
    <revision>
      <id>3315</id>
      <timestamp>2011-08-20T16:37:04Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:23.jpeg</title>
    <ns>6</ns>
    <id>311</id>
    <revision>
      <id>1284</id>
      <timestamp>2010-04-02T13:18:13Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:24.PNG</title>
    <ns>6</ns>
    <id>773</id>
    <revision>
      <id>3316</id>
      <timestamp>2011-08-20T16:37:05Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:24.jpeg</title>
    <ns>6</ns>
    <id>312</id>
    <revision>
      <id>1285</id>
      <timestamp>2010-04-02T13:20:09Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:245acf9ed15fe126ba9b31ebab022950.png</title>
    <ns>6</ns>
    <id>1032</id>
    <revision>
      <id>4336</id>
      <timestamp>2012-06-21T08:58:21Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4397</id>
      <parentid>4336</parentid>
      <timestamp>2012-08-15T08:12:12Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Lol a importé une nouvelle version de « [[Fichier:245acf9ed15fe126ba9b31ebab022950.png]] » : http://upload.wikimedia.org/wikipedia/en/timeline/a61d5a400b3346742e8c5e539972bbec.png</comment>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:25.PNG</title>
    <ns>6</ns>
    <id>774</id>
    <revision>
      <id>3317</id>
      <timestamp>2011-08-20T16:37:05Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:25.jpeg</title>
    <ns>6</ns>
    <id>313</id>
    <revision>
      <id>1286</id>
      <timestamp>2010-04-02T13:21:13Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:26.PNG</title>
    <ns>6</ns>
    <id>775</id>
    <revision>
      <id>3318</id>
      <timestamp>2011-08-20T16:37:05Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:26.jpeg</title>
    <ns>6</ns>
    <id>314</id>
    <revision>
      <id>1287</id>
      <timestamp>2010-04-02T13:22:08Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:27.PNG</title>
    <ns>6</ns>
    <id>776</id>
    <revision>
      <id>3319</id>
      <timestamp>2011-08-20T16:37:05Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:27.jpeg</title>
    <ns>6</ns>
    <id>315</id>
    <revision>
      <id>1288</id>
      <timestamp>2010-04-02T13:22:41Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:28.PNG</title>
    <ns>6</ns>
    <id>777</id>
    <revision>
      <id>3320</id>
      <timestamp>2011-08-20T16:37:05Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:28.jpeg</title>
    <ns>6</ns>
    <id>316</id>
    <revision>
      <id>1289</id>
      <timestamp>2010-04-02T13:24:09Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:29.PNG</title>
    <ns>6</ns>
    <id>778</id>
    <revision>
      <id>3321</id>
      <timestamp>2011-08-20T16:37:05Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:29.jpeg</title>
    <ns>6</ns>
    <id>317</id>
    <revision>
      <id>1290</id>
      <timestamp>2010-04-02T13:25:06Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:3.PNG</title>
    <ns>6</ns>
    <id>752</id>
    <revision>
      <id>3295</id>
      <timestamp>2011-08-20T16:32:23Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:3.png</title>
    <ns>6</ns>
    <id>473</id>
    <revision>
      <id>1859</id>
      <timestamp>2010-08-05T18:04:16Z</timestamp>
      <contributor>
        <username>Helid</username>
        <id>62</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:30.PNG</title>
    <ns>6</ns>
    <id>779</id>
    <revision>
      <id>3322</id>
      <timestamp>2011-08-20T16:37:05Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:30.jpeg</title>
    <ns>6</ns>
    <id>318</id>
    <revision>
      <id>1291</id>
      <timestamp>2010-04-02T13:26:25Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:301px-Orange Icon Wiki.svg.png</title>
    <ns>6</ns>
    <id>591</id>
    <revision>
      <id>2472</id>
      <timestamp>2010-12-11T14:24:40Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:3054-256x256x8.png</title>
    <ns>6</ns>
    <id>1116</id>
    <revision>
      <id>4600</id>
      <timestamp>2012-10-29T03:59:25Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:31.PNG</title>
    <ns>6</ns>
    <id>780</id>
    <revision>
      <id>3323</id>
      <timestamp>2011-08-20T16:38:41Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:31.jpeg</title>
    <ns>6</ns>
    <id>319</id>
    <revision>
      <id>1292</id>
      <timestamp>2010-04-02T13:28:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:32.PNG</title>
    <ns>6</ns>
    <id>781</id>
    <revision>
      <id>3324</id>
      <timestamp>2011-08-20T16:38:41Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:32.jpeg</title>
    <ns>6</ns>
    <id>320</id>
    <revision>
      <id>1293</id>
      <timestamp>2010-04-02T13:29:38Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:326a91ff55197e1a92230b75c3f01185.jpeg</title>
    <ns>6</ns>
    <id>718</id>
    <revision>
      <id>3182</id>
      <timestamp>2011-08-04T19:30:46Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>http://upload.wikimedia.org/wikipedia/en/timeline/326a91ff55197e1a92230b75c3f01185.png</comment>
      <text xml:space="preserve" bytes="86">http://upload.wikimedia.org/wikipedia/en/timeline/326a91ff55197e1a92230b75c3f01185.png</text>
      <sha1>e7lz4i98voul8vlyjetj0f0vr827ryn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:33.PNG</title>
    <ns>6</ns>
    <id>782</id>
    <revision>
      <id>3325</id>
      <timestamp>2011-08-20T16:38:41Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:33.jpeg</title>
    <ns>6</ns>
    <id>321</id>
    <revision>
      <id>1294</id>
      <timestamp>2010-04-02T13:30:41Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:33366-256-coffee-icon.png</title>
    <ns>6</ns>
    <id>1122</id>
    <revision>
      <id>4606</id>
      <timestamp>2012-10-29T04:02:36Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:34.PNG</title>
    <ns>6</ns>
    <id>783</id>
    <revision>
      <id>3326</id>
      <timestamp>2011-08-20T16:38:41Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:34.jpeg</title>
    <ns>6</ns>
    <id>322</id>
    <revision>
      <id>1295</id>
      <timestamp>2010-04-02T13:33:13Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:35.PNG</title>
    <ns>6</ns>
    <id>784</id>
    <revision>
      <id>3327</id>
      <timestamp>2011-08-20T16:38:42Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:35.jpeg</title>
    <ns>6</ns>
    <id>323</id>
    <revision>
      <id>1296</id>
      <timestamp>2010-04-02T13:33:52Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:36.PNG</title>
    <ns>6</ns>
    <id>785</id>
    <revision>
      <id>3328</id>
      <timestamp>2011-08-20T16:38:42Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:36.jpeg</title>
    <ns>6</ns>
    <id>324</id>
    <revision>
      <id>1297</id>
      <timestamp>2010-04-02T13:34:42Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:37.PNG</title>
    <ns>6</ns>
    <id>786</id>
    <revision>
      <id>3329</id>
      <timestamp>2011-08-20T16:38:42Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:37.jpeg</title>
    <ns>6</ns>
    <id>325</id>
    <revision>
      <id>1298</id>
      <timestamp>2010-04-02T13:35:32Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:38.PNG</title>
    <ns>6</ns>
    <id>787</id>
    <revision>
      <id>3330</id>
      <timestamp>2011-08-20T16:38:42Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:38.jpeg</title>
    <ns>6</ns>
    <id>326</id>
    <revision>
      <id>1299</id>
      <timestamp>2010-04-02T13:36:34Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:39.PNG</title>
    <ns>6</ns>
    <id>788</id>
    <revision>
      <id>3331</id>
      <timestamp>2011-08-20T16:38:42Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:39.jpeg</title>
    <ns>6</ns>
    <id>327</id>
    <revision>
      <id>1300</id>
      <timestamp>2010-04-02T13:37:09Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:4.PNG</title>
    <ns>6</ns>
    <id>753</id>
    <revision>
      <id>3296</id>
      <timestamp>2011-08-20T16:32:23Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:4.png</title>
    <ns>6</ns>
    <id>474</id>
    <revision>
      <id>1860</id>
      <timestamp>2010-08-05T18:05:03Z</timestamp>
      <contributor>
        <username>Helid</username>
        <id>62</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:40.PNG</title>
    <ns>6</ns>
    <id>789</id>
    <revision>
      <id>3332</id>
      <timestamp>2011-08-20T16:38:42Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:40.jpeg</title>
    <ns>6</ns>
    <id>328</id>
    <revision>
      <id>1301</id>
      <timestamp>2010-04-02T13:38:01Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:404.jpeg</title>
    <ns>6</ns>
    <id>837</id>
    <revision>
      <id>3395</id>
      <timestamp>2011-08-27T05:52:42Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:41.PNG</title>
    <ns>6</ns>
    <id>790</id>
    <revision>
      <id>3333</id>
      <timestamp>2011-08-20T16:40:53Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:41.jpeg</title>
    <ns>6</ns>
    <id>329</id>
    <revision>
      <id>1302</id>
      <timestamp>2010-04-02T13:39:11Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:42.PNG</title>
    <ns>6</ns>
    <id>791</id>
    <revision>
      <id>3334</id>
      <timestamp>2011-08-20T16:40:54Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:42.jpeg</title>
    <ns>6</ns>
    <id>330</id>
    <revision>
      <id>1303</id>
      <timestamp>2010-04-02T13:40:22Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:43.PNG</title>
    <ns>6</ns>
    <id>792</id>
    <revision>
      <id>3335</id>
      <timestamp>2011-08-20T16:40:54Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:43.jpeg</title>
    <ns>6</ns>
    <id>331</id>
    <revision>
      <id>1304</id>
      <timestamp>2010-04-02T13:41:05Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:44.PNG</title>
    <ns>6</ns>
    <id>793</id>
    <revision>
      <id>3336</id>
      <timestamp>2011-08-20T16:40:54Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:44.jpeg</title>
    <ns>6</ns>
    <id>332</id>
    <revision>
      <id>1305</id>
      <timestamp>2010-04-02T13:41:47Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:45.PNG</title>
    <ns>6</ns>
    <id>794</id>
    <revision>
      <id>3337</id>
      <timestamp>2011-08-20T16:40:54Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:45.jpeg</title>
    <ns>6</ns>
    <id>333</id>
    <revision>
      <id>1306</id>
      <timestamp>2010-04-02T13:42:23Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:46.PNG</title>
    <ns>6</ns>
    <id>795</id>
    <revision>
      <id>3338</id>
      <timestamp>2011-08-20T16:40:54Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:46.jpeg</title>
    <ns>6</ns>
    <id>334</id>
    <revision>
      <id>1307</id>
      <timestamp>2010-04-02T13:43:02Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:47.PNG</title>
    <ns>6</ns>
    <id>796</id>
    <revision>
      <id>3339</id>
      <timestamp>2011-08-20T16:40:54Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:47.jpeg</title>
    <ns>6</ns>
    <id>335</id>
    <revision>
      <id>1308</id>
      <timestamp>2010-04-02T13:43:30Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:48.PNG</title>
    <ns>6</ns>
    <id>797</id>
    <revision>
      <id>3340</id>
      <timestamp>2011-08-20T16:40:54Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:48.jpeg</title>
    <ns>6</ns>
    <id>336</id>
    <revision>
      <id>1309</id>
      <timestamp>2010-04-02T13:44:15Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:49.PNG</title>
    <ns>6</ns>
    <id>798</id>
    <revision>
      <id>3341</id>
      <timestamp>2011-08-20T16:40:54Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:49.jpeg</title>
    <ns>6</ns>
    <id>337</id>
    <revision>
      <id>1310</id>
      <timestamp>2010-04-02T13:45:07Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:494946.png</title>
    <ns>6</ns>
    <id>117</id>
    <revision>
      <id>529</id>
      <timestamp>2010-01-30T04:52:32Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:5.PNG</title>
    <ns>6</ns>
    <id>754</id>
    <revision>
      <id>3297</id>
      <timestamp>2011-08-20T16:32:24Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:5.png</title>
    <ns>6</ns>
    <id>475</id>
    <revision>
      <id>1861</id>
      <timestamp>2010-08-05T18:05:42Z</timestamp>
      <contributor>
        <username>Helid</username>
        <id>62</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:50.PNG</title>
    <ns>6</ns>
    <id>799</id>
    <revision>
      <id>3342</id>
      <timestamp>2011-08-20T16:40:54Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:50.jpeg</title>
    <ns>6</ns>
    <id>338</id>
    <revision>
      <id>1311</id>
      <timestamp>2010-04-02T13:46:30Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:51.PNG</title>
    <ns>6</ns>
    <id>800</id>
    <revision>
      <id>3343</id>
      <timestamp>2011-08-20T16:43:01Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:51.jpeg</title>
    <ns>6</ns>
    <id>339</id>
    <revision>
      <id>1312</id>
      <timestamp>2010-04-02T13:47:01Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:52.PNG</title>
    <ns>6</ns>
    <id>801</id>
    <revision>
      <id>3344</id>
      <timestamp>2011-08-20T16:43:01Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:52.jpeg</title>
    <ns>6</ns>
    <id>340</id>
    <revision>
      <id>1313</id>
      <timestamp>2010-04-02T13:47:40Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:53.PNG</title>
    <ns>6</ns>
    <id>802</id>
    <revision>
      <id>3345</id>
      <timestamp>2011-08-20T16:43:01Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:53.jpeg</title>
    <ns>6</ns>
    <id>341</id>
    <revision>
      <id>1314</id>
      <timestamp>2010-04-02T13:48:22Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:54.PNG</title>
    <ns>6</ns>
    <id>804</id>
    <revision>
      <id>3347</id>
      <timestamp>2011-08-20T16:43:01Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:54.jpeg</title>
    <ns>6</ns>
    <id>342</id>
    <revision>
      <id>1315</id>
      <timestamp>2010-04-02T13:49:08Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:55.PNG</title>
    <ns>6</ns>
    <id>805</id>
    <revision>
      <id>3348</id>
      <timestamp>2011-08-20T16:43:02Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:55.jpeg</title>
    <ns>6</ns>
    <id>343</id>
    <revision>
      <id>1316</id>
      <timestamp>2010-04-02T13:49:58Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:56.PNG</title>
    <ns>6</ns>
    <id>806</id>
    <revision>
      <id>3349</id>
      <timestamp>2011-08-20T16:43:02Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:56.jpeg</title>
    <ns>6</ns>
    <id>344</id>
    <revision>
      <id>1317</id>
      <timestamp>2010-04-02T13:55:48Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:57.PNG</title>
    <ns>6</ns>
    <id>807</id>
    <revision>
      <id>3350</id>
      <timestamp>2011-08-20T16:43:02Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:57.jpeg</title>
    <ns>6</ns>
    <id>345</id>
    <revision>
      <id>1318</id>
      <timestamp>2010-04-02T13:56:27Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:58.PNG</title>
    <ns>6</ns>
    <id>808</id>
    <revision>
      <id>3351</id>
      <timestamp>2011-08-20T16:43:02Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:58.jpeg</title>
    <ns>6</ns>
    <id>346</id>
    <revision>
      <id>1319</id>
      <timestamp>2010-04-02T13:56:55Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:59.PNG</title>
    <ns>6</ns>
    <id>803</id>
    <revision>
      <id>3346</id>
      <timestamp>2011-08-20T16:43:01Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:59.jpeg</title>
    <ns>6</ns>
    <id>347</id>
    <revision>
      <id>1320</id>
      <timestamp>2010-04-02T13:57:42Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:6.PNG</title>
    <ns>6</ns>
    <id>755</id>
    <revision>
      <id>3298</id>
      <timestamp>2011-08-20T16:32:24Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:6.png</title>
    <ns>6</ns>
    <id>476</id>
    <revision>
      <id>1862</id>
      <timestamp>2010-08-05T18:06:17Z</timestamp>
      <contributor>
        <username>Helid</username>
        <id>62</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:60.PNG</title>
    <ns>6</ns>
    <id>809</id>
    <revision>
      <id>3352</id>
      <timestamp>2011-08-20T16:43:02Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:60.jpeg</title>
    <ns>6</ns>
    <id>348</id>
    <revision>
      <id>1321</id>
      <timestamp>2010-04-02T13:58:21Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:61.PNG</title>
    <ns>6</ns>
    <id>810</id>
    <revision>
      <id>3353</id>
      <timestamp>2011-08-20T16:44:29Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:61.jpeg</title>
    <ns>6</ns>
    <id>349</id>
    <revision>
      <id>1322</id>
      <timestamp>2010-04-02T13:59:11Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:62.PNG</title>
    <ns>6</ns>
    <id>811</id>
    <revision>
      <id>3354</id>
      <timestamp>2011-08-20T16:44:29Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:62.jpeg</title>
    <ns>6</ns>
    <id>350</id>
    <revision>
      <id>1323</id>
      <timestamp>2010-04-02T14:01:51Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:63.PNG</title>
    <ns>6</ns>
    <id>812</id>
    <revision>
      <id>3355</id>
      <timestamp>2011-08-20T16:44:29Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:63.jpeg</title>
    <ns>6</ns>
    <id>351</id>
    <revision>
      <id>1324</id>
      <timestamp>2010-04-02T14:02:20Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:64.PNG</title>
    <ns>6</ns>
    <id>813</id>
    <revision>
      <id>3356</id>
      <timestamp>2011-08-20T16:44:29Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:64.jpeg</title>
    <ns>6</ns>
    <id>352</id>
    <revision>
      <id>1325</id>
      <timestamp>2010-04-02T14:02:47Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:65.PNG</title>
    <ns>6</ns>
    <id>814</id>
    <revision>
      <id>3357</id>
      <timestamp>2011-08-20T16:44:29Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:65.jpeg</title>
    <ns>6</ns>
    <id>353</id>
    <revision>
      <id>1326</id>
      <timestamp>2010-04-02T14:03:15Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:66.PNG</title>
    <ns>6</ns>
    <id>815</id>
    <revision>
      <id>3358</id>
      <timestamp>2011-08-20T16:44:30Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:66.jpeg</title>
    <ns>6</ns>
    <id>354</id>
    <revision>
      <id>1327</id>
      <timestamp>2010-04-02T14:03:48Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:67.PNG</title>
    <ns>6</ns>
    <id>816</id>
    <revision>
      <id>3359</id>
      <timestamp>2011-08-20T16:44:30Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:67.jpeg</title>
    <ns>6</ns>
    <id>355</id>
    <revision>
      <id>1328</id>
      <timestamp>2010-04-02T14:04:27Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:68.PNG</title>
    <ns>6</ns>
    <id>817</id>
    <revision>
      <id>3360</id>
      <timestamp>2011-08-20T16:44:30Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:68.jpeg</title>
    <ns>6</ns>
    <id>356</id>
    <revision>
      <id>1329</id>
      <timestamp>2010-04-02T14:05:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:69.PNG</title>
    <ns>6</ns>
    <id>818</id>
    <revision>
      <id>3361</id>
      <timestamp>2011-08-20T16:44:30Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:69.jpeg</title>
    <ns>6</ns>
    <id>357</id>
    <revision>
      <id>1330</id>
      <timestamp>2010-04-02T14:06:05Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:7.PNG</title>
    <ns>6</ns>
    <id>756</id>
    <revision>
      <id>3299</id>
      <timestamp>2011-08-20T16:32:24Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:7.png</title>
    <ns>6</ns>
    <id>477</id>
    <revision>
      <id>1863</id>
      <timestamp>2010-08-05T18:06:57Z</timestamp>
      <contributor>
        <username>Helid</username>
        <id>62</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:70.PNG</title>
    <ns>6</ns>
    <id>819</id>
    <revision>
      <id>3362</id>
      <timestamp>2011-08-20T16:44:30Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:70.jpeg</title>
    <ns>6</ns>
    <id>358</id>
    <revision>
      <id>1331</id>
      <timestamp>2010-04-02T14:07:02Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:71.PNG</title>
    <ns>6</ns>
    <id>820</id>
    <revision>
      <id>3363</id>
      <timestamp>2011-08-20T16:46:08Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:71.jpeg</title>
    <ns>6</ns>
    <id>359</id>
    <revision>
      <id>1332</id>
      <timestamp>2010-04-02T14:07:38Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:72.PNG</title>
    <ns>6</ns>
    <id>821</id>
    <revision>
      <id>3364</id>
      <timestamp>2011-08-20T16:46:08Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:72.jpeg</title>
    <ns>6</ns>
    <id>360</id>
    <revision>
      <id>1333</id>
      <timestamp>2010-04-02T14:08:32Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:73.PNG</title>
    <ns>6</ns>
    <id>822</id>
    <revision>
      <id>3365</id>
      <timestamp>2011-08-20T16:46:09Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:73.jpeg</title>
    <ns>6</ns>
    <id>361</id>
    <revision>
      <id>1334</id>
      <timestamp>2010-04-02T14:09:05Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:74.PNG</title>
    <ns>6</ns>
    <id>823</id>
    <revision>
      <id>3366</id>
      <timestamp>2011-08-20T16:46:09Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:74.jpeg</title>
    <ns>6</ns>
    <id>362</id>
    <revision>
      <id>1335</id>
      <timestamp>2010-04-02T14:09:32Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:75.PNG</title>
    <ns>6</ns>
    <id>824</id>
    <revision>
      <id>3367</id>
      <timestamp>2011-08-20T16:46:09Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:75.jpeg</title>
    <ns>6</ns>
    <id>363</id>
    <revision>
      <id>1336</id>
      <timestamp>2010-04-02T14:10:17Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:76.PNG</title>
    <ns>6</ns>
    <id>825</id>
    <revision>
      <id>3368</id>
      <timestamp>2011-08-20T16:46:09Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:76.jpeg</title>
    <ns>6</ns>
    <id>364</id>
    <revision>
      <id>1337</id>
      <timestamp>2010-04-02T14:10:53Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:77.PNG</title>
    <ns>6</ns>
    <id>826</id>
    <revision>
      <id>3369</id>
      <timestamp>2011-08-20T16:46:09Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:77.jpeg</title>
    <ns>6</ns>
    <id>365</id>
    <revision>
      <id>1338</id>
      <timestamp>2010-04-02T14:11:36Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:78.PNG</title>
    <ns>6</ns>
    <id>827</id>
    <revision>
      <id>3370</id>
      <timestamp>2011-08-20T16:46:09Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:78.jpeg</title>
    <ns>6</ns>
    <id>366</id>
    <revision>
      <id>1339</id>
      <timestamp>2010-04-02T14:12:48Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:79.PNG</title>
    <ns>6</ns>
    <id>828</id>
    <revision>
      <id>3371</id>
      <timestamp>2011-08-20T16:46:09Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:79.jpeg</title>
    <ns>6</ns>
    <id>367</id>
    <revision>
      <id>1340</id>
      <timestamp>2010-04-02T14:13:34Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:8.PNG</title>
    <ns>6</ns>
    <id>757</id>
    <revision>
      <id>3300</id>
      <timestamp>2011-08-20T16:32:24Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:8.png</title>
    <ns>6</ns>
    <id>478</id>
    <revision>
      <id>1864</id>
      <timestamp>2010-08-05T18:07:46Z</timestamp>
      <contributor>
        <username>Helid</username>
        <id>62</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:80.PNG</title>
    <ns>6</ns>
    <id>829</id>
    <revision>
      <id>3372</id>
      <timestamp>2011-08-20T16:46:09Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:80.jpeg</title>
    <ns>6</ns>
    <id>368</id>
    <revision>
      <id>1341</id>
      <timestamp>2010-04-02T14:15:22Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:81.PNG</title>
    <ns>6</ns>
    <id>830</id>
    <revision>
      <id>3373</id>
      <timestamp>2011-08-20T16:46:52Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:81.jpeg</title>
    <ns>6</ns>
    <id>369</id>
    <revision>
      <id>1342</id>
      <timestamp>2010-04-02T14:18:33Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:82.PNG</title>
    <ns>6</ns>
    <id>831</id>
    <revision>
      <id>3374</id>
      <timestamp>2011-08-20T16:46:52Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:82.jpeg</title>
    <ns>6</ns>
    <id>370</id>
    <revision>
      <id>1343</id>
      <timestamp>2010-04-02T14:19:23Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:823735c47482df74b900da05da02e058.jpeg</title>
    <ns>6</ns>
    <id>685</id>
    <revision>
      <id>2962</id>
      <timestamp>2011-05-05T05:28:00Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>http://fr.wikipedia.org/wiki/Debian
http://upload.wikimedia.org/wikipedia/fr/timeline/823735c47482df74b900da05da02e058.png</comment>
      <text xml:space="preserve" bytes="122">http://fr.wikipedia.org/wiki/Debian
http://upload.wikimedia.org/wikipedia/fr/timeline/823735c47482df74b900da05da02e058.png</text>
      <sha1>064husz3ygy0ktisjxde6pinx2va48w</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:83.PNG</title>
    <ns>6</ns>
    <id>832</id>
    <revision>
      <id>3375</id>
      <timestamp>2011-08-20T16:46:52Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>businesscard</comment>
      <text xml:space="preserve" bytes="12">businesscard</text>
      <sha1>2rgmx102midoessitmruvvopfbucn5t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:83.jpeg</title>
    <ns>6</ns>
    <id>371</id>
    <revision>
      <id>1344</id>
      <timestamp>2010-04-02T14:19:51Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:84.jpeg</title>
    <ns>6</ns>
    <id>372</id>
    <revision>
      <id>1345</id>
      <timestamp>2010-04-02T14:21:41Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:85.jpeg</title>
    <ns>6</ns>
    <id>373</id>
    <revision>
      <id>1346</id>
      <timestamp>2010-04-02T14:22:09Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:86.jpeg</title>
    <ns>6</ns>
    <id>374</id>
    <revision>
      <id>1347</id>
      <timestamp>2010-04-02T14:23:20Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:87.jpeg</title>
    <ns>6</ns>
    <id>375</id>
    <revision>
      <id>1348</id>
      <timestamp>2010-04-02T14:24:15Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:9 pin serial null modem.jpg</title>
    <ns>6</ns>
    <id>544</id>
    <revision>
      <id>2228</id>
      <timestamp>2010-10-17T14:09:41Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:9.PNG</title>
    <ns>6</ns>
    <id>758</id>
    <revision>
      <id>3301</id>
      <timestamp>2011-08-20T16:32:24Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:9.png</title>
    <ns>6</ns>
    <id>479</id>
    <revision>
      <id>1865</id>
      <timestamp>2010-08-05T18:08:39Z</timestamp>
      <contributor>
        <username>Helid</username>
        <id>62</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:90.jpeg</title>
    <ns>6</ns>
    <id>376</id>
    <revision>
      <id>1349</id>
      <timestamp>2010-04-02T14:25:13Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:91.jpeg</title>
    <ns>6</ns>
    <id>377</id>
    <revision>
      <id>1350</id>
      <timestamp>2010-04-02T14:25:52Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:92.jpeg</title>
    <ns>6</ns>
    <id>378</id>
    <revision>
      <id>1351</id>
      <timestamp>2010-04-02T14:26:22Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:93.jpeg</title>
    <ns>6</ns>
    <id>379</id>
    <revision>
      <id>1352</id>
      <timestamp>2010-04-02T14:26:58Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:94.jpeg</title>
    <ns>6</ns>
    <id>380</id>
    <revision>
      <id>1353</id>
      <timestamp>2010-04-02T14:27:16Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:95.jpeg</title>
    <ns>6</ns>
    <id>381</id>
    <revision>
      <id>1354</id>
      <timestamp>2010-04-02T14:27:38Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:ADP-Icons-104-256x256-01.png</title>
    <ns>6</ns>
    <id>1120</id>
    <revision>
      <id>4604</id>
      <timestamp>2012-10-29T04:01:23Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Alix Voyage 3.jpeg</title>
    <ns>6</ns>
    <id>539</id>
    <revision>
      <id>2209</id>
      <timestamp>2010-10-17T08:04:14Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Alix Voyage 4.jpeg</title>
    <ns>6</ns>
    <id>540</id>
    <revision>
      <id>2210</id>
      <timestamp>2010-10-17T08:04:44Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Alix2d2.jpg</title>
    <ns>6</ns>
    <id>541</id>
    <revision>
      <id>2214</id>
      <timestamp>2010-10-17T08:31:10Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Ata 20070127 003.jpeg</title>
    <ns>6</ns>
    <id>615</id>
    <revision>
      <id>2563</id>
      <timestamp>2010-12-27T06:53:51Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Avatar Le fada.gif</title>
    <ns>6</ns>
    <id>95</id>
    <revision>
      <id>384</id>
      <timestamp>2010-01-27T08:31:23Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>386</id>
      <parentid>384</parentid>
      <timestamp>2010-01-27T08:34:44Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <comment>a téléversé une nouvelle version de « [[Fichier:Avatar Le fada.gif]] »</comment>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Awstats.jpeg</title>
    <ns>6</ns>
    <id>612</id>
    <revision>
      <id>2555</id>
      <timestamp>2010-12-26T13:33:55Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Bat.png</title>
    <ns>6</ns>
    <id>1004</id>
    <revision>
      <id>4210</id>
      <timestamp>2012-05-06T12:36:39Z</timestamp>
      <contributor>
        <username>Haludeis</username>
        <id>30</id>
      </contributor>
      <comment>interface graphique Qt pour Bacula</comment>
      <text xml:space="preserve" bytes="34">interface graphique Qt pour Bacula</text>
      <sha1>r2wosds6i9bih7y9uq4whn3vrmpl34q</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4213</id>
      <parentid>4210</parentid>
      <timestamp>2012-05-06T13:17:07Z</timestamp>
      <contributor>
        <username>Haludeis</username>
        <id>30</id>
      </contributor>
      <comment>Haludeis a importé une nouvelle version de « [[Fichier:Bat.png]] »</comment>
      <text xml:space="preserve" bytes="34">interface graphique Qt pour Bacula</text>
      <sha1>r2wosds6i9bih7y9uq4whn3vrmpl34q</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4214</id>
      <parentid>4213</parentid>
      <timestamp>2012-05-06T13:17:58Z</timestamp>
      <contributor>
        <username>Haludeis</username>
        <id>30</id>
      </contributor>
      <comment>Haludeis a importé une nouvelle version de « [[Fichier:Bat.png]] »</comment>
      <text xml:space="preserve" bytes="34">interface graphique Qt pour Bacula</text>
      <sha1>r2wosds6i9bih7y9uq4whn3vrmpl34q</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4215</id>
      <parentid>4214</parentid>
      <timestamp>2012-05-06T13:18:14Z</timestamp>
      <contributor>
        <username>Haludeis</username>
        <id>30</id>
      </contributor>
      <comment>Haludeis a importé une nouvelle version de « [[Fichier:Bat.png]] » : Version du 6 mai 2012 à 13:17 rétablie</comment>
      <text xml:space="preserve" bytes="34">interface graphique Qt pour Bacula</text>
      <sha1>r2wosds6i9bih7y9uq4whn3vrmpl34q</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Bienvenue dans installation 01 bis.png</title>
    <ns>6</ns>
    <id>1054</id>
    <revision>
      <id>4438</id>
      <timestamp>2012-09-11T18:54:45Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Bienvenue dans phpBB 23 bis.png</title>
    <ns>6</ns>
    <id>1076</id>
    <revision>
      <id>4460</id>
      <timestamp>2012-09-11T20:15:13Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Bienvenue dans phpBB 24 bis.png</title>
    <ns>6</ns>
    <id>1077</id>
    <revision>
      <id>4461</id>
      <timestamp>2012-09-11T20:20:23Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Bienvenue dans phpBB 25 bis.png</title>
    <ns>6</ns>
    <id>1078</id>
    <revision>
      <id>4462</id>
      <timestamp>2012-09-11T20:25:36Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Bienvenue sur le « phpBB Unified Convertor Framework » 19 bis.png</title>
    <ns>6</ns>
    <id>1072</id>
    <revision>
      <id>4456</id>
      <timestamp>2012-09-11T20:00:46Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Blacklists FAQ.pdf</title>
    <ns>6</ns>
    <id>585</id>
    <revision>
      <id>2413</id>
      <timestamp>2010-11-25T13:54:01Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2420</id>
      <parentid>2413</parentid>
      <timestamp>2010-11-25T14:56:44Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>a téléversé une nouvelle version de « [[Fichier:Blacklists FAQ.pdf]] »</comment>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Businesscard1.PNG</title>
    <ns>6</ns>
    <id>876</id>
    <revision>
      <id>3611</id>
      <timestamp>2011-11-29T10:27:50Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Businesscard10.PNG</title>
    <ns>6</ns>
    <id>885</id>
    <revision>
      <id>3621</id>
      <timestamp>2011-11-29T16:37:06Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>Dépots Businesscard / Squeeze</comment>
      <text xml:space="preserve" bytes="30">Dépots Businesscard / Squeeze</text>
      <sha1>hg58vy1i8uo0jg79dfbpyvfyhn0da4p</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Businesscard2.PNG</title>
    <ns>6</ns>
    <id>877</id>
    <revision>
      <id>3613</id>
      <timestamp>2011-11-29T16:37:05Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>Dépots Businesscard / Squeeze</comment>
      <text xml:space="preserve" bytes="30">Dépots Businesscard / Squeeze</text>
      <sha1>hg58vy1i8uo0jg79dfbpyvfyhn0da4p</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Businesscard3.PNG</title>
    <ns>6</ns>
    <id>878</id>
    <revision>
      <id>3614</id>
      <timestamp>2011-11-29T16:37:06Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>Dépots Businesscard / Squeeze</comment>
      <text xml:space="preserve" bytes="30">Dépots Businesscard / Squeeze</text>
      <sha1>hg58vy1i8uo0jg79dfbpyvfyhn0da4p</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Businesscard5.PNG</title>
    <ns>6</ns>
    <id>880</id>
    <revision>
      <id>3616</id>
      <timestamp>2011-11-29T16:37:06Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>Dépots Businesscard / Squeeze</comment>
      <text xml:space="preserve" bytes="30">Dépots Businesscard / Squeeze</text>
      <sha1>hg58vy1i8uo0jg79dfbpyvfyhn0da4p</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Businesscard6.PNG</title>
    <ns>6</ns>
    <id>881</id>
    <revision>
      <id>3617</id>
      <timestamp>2011-11-29T16:37:06Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>Dépots Businesscard / Squeeze</comment>
      <text xml:space="preserve" bytes="30">Dépots Businesscard / Squeeze</text>
      <sha1>hg58vy1i8uo0jg79dfbpyvfyhn0da4p</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Businesscard7.PNG</title>
    <ns>6</ns>
    <id>882</id>
    <revision>
      <id>3618</id>
      <timestamp>2011-11-29T16:37:06Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>Dépots Businesscard / Squeeze</comment>
      <text xml:space="preserve" bytes="30">Dépots Businesscard / Squeeze</text>
      <sha1>hg58vy1i8uo0jg79dfbpyvfyhn0da4p</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Businesscard8.PNG</title>
    <ns>6</ns>
    <id>883</id>
    <revision>
      <id>3619</id>
      <timestamp>2011-11-29T16:37:06Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>Dépots Businesscard / Squeeze</comment>
      <text xml:space="preserve" bytes="30">Dépots Businesscard / Squeeze</text>
      <sha1>hg58vy1i8uo0jg79dfbpyvfyhn0da4p</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Businesscard9.PNG</title>
    <ns>6</ns>
    <id>884</id>
    <revision>
      <id>3620</id>
      <timestamp>2011-11-29T16:37:06Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>Dépots Businesscard / Squeeze</comment>
      <text xml:space="preserve" bytes="30">Dépots Businesscard / Squeeze</text>
      <sha1>hg58vy1i8uo0jg79dfbpyvfyhn0da4p</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Bussinescard4.PNG</title>
    <ns>6</ns>
    <id>879</id>
    <revision>
      <id>3615</id>
      <timestamp>2011-11-29T16:37:06Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>Dépots Businesscard / Squeeze</comment>
      <text xml:space="preserve" bytes="30">Dépots Businesscard / Squeeze</text>
      <sha1>hg58vy1i8uo0jg79dfbpyvfyhn0da4p</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:CDDAlogo.svg</title>
    <ns>6</ns>
    <id>66</id>
    <revision>
      <id>279</id>
      <timestamp>2010-01-25T22:38:53Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <comment>logo officiel du Compact Disk Digital Audio</comment>
      <text xml:space="preserve" bytes="43">logo officiel du Compact Disk Digital Audio</text>
      <sha1>k20uoohaqa4n6nsp7pcojslmetpxf08</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Capture d'écran - 03082010 - 07-29-44.png</title>
    <ns>6</ns>
    <id>462</id>
    <revision>
      <id>1819</id>
      <timestamp>2010-08-03T04:31:01Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Capture d'écran - 03082010 - 08-33-09.png</title>
    <ns>6</ns>
    <id>463</id>
    <revision>
      <id>1821</id>
      <timestamp>2010-08-03T05:36:03Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Capture d'écran - 03082010 - 08-35-29.png</title>
    <ns>6</ns>
    <id>464</id>
    <revision>
      <id>1822</id>
      <timestamp>2010-08-03T05:36:47Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Capture d'écran - 03082010 - 09-00-40.png</title>
    <ns>6</ns>
    <id>465</id>
    <revision>
      <id>1827</id>
      <timestamp>2010-08-03T06:01:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Capture d'écran - 03082010 - 09-16-04.png</title>
    <ns>6</ns>
    <id>466</id>
    <revision>
      <id>1829</id>
      <timestamp>2010-08-03T06:16:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Capture d'écran - 03082010 - 09-17-38.png</title>
    <ns>6</ns>
    <id>467</id>
    <revision>
      <id>1830</id>
      <timestamp>2010-08-03T06:18:13Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Capture d'écran - 03082010 - 15-35-34.png</title>
    <ns>6</ns>
    <id>468</id>
    <revision>
      <id>1837</id>
      <timestamp>2010-08-03T12:36:31Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Capture d'écran - 03082010 - 15-48-39.png</title>
    <ns>6</ns>
    <id>469</id>
    <revision>
      <id>1839</id>
      <timestamp>2010-08-03T12:49:22Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Capture d'écran - 20082010 - 10-51-08.png</title>
    <ns>6</ns>
    <id>497</id>
    <revision>
      <id>1982</id>
      <timestamp>2010-08-20T09:06:35Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Capture d'écran - 20082010 - 11-00-13.png</title>
    <ns>6</ns>
    <id>498</id>
    <revision>
      <id>1983</id>
      <timestamp>2010-08-20T09:07:22Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Capture d'écran - 20082010 - 11-22-39.png</title>
    <ns>6</ns>
    <id>499</id>
    <revision>
      <id>1984</id>
      <timestamp>2010-08-20T09:07:55Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Capture d'écran - 20082010 - 11-24-27.png</title>
    <ns>6</ns>
    <id>500</id>
    <revision>
      <id>1985</id>
      <timestamp>2010-08-20T09:08:35Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Capture d'écran - 20082010 - 11-25-24.png</title>
    <ns>6</ns>
    <id>501</id>
    <revision>
      <id>1986</id>
      <timestamp>2010-08-20T09:09:03Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Capture d'écran - 20082010 - 11-26-14.png</title>
    <ns>6</ns>
    <id>502</id>
    <revision>
      <id>1987</id>
      <timestamp>2010-08-20T09:09:28Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Capture d'écran - 20082010 - 11-32-17.png</title>
    <ns>6</ns>
    <id>503</id>
    <revision>
      <id>1988</id>
      <timestamp>2010-08-20T09:10:02Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Capture d'écran - 20082010 - 11-33-21.png</title>
    <ns>6</ns>
    <id>504</id>
    <revision>
      <id>1989</id>
      <timestamp>2010-08-20T09:10:36Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Capture d'écran - 20082010 - 11-35-52.png</title>
    <ns>6</ns>
    <id>505</id>
    <revision>
      <id>1990</id>
      <timestamp>2010-08-20T09:11:03Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Capture d'écran121.jpeg</title>
    <ns>6</ns>
    <id>104</id>
    <revision>
      <id>440</id>
      <timestamp>2010-01-28T09:16:06Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Capture d'écran122.jpeg</title>
    <ns>6</ns>
    <id>105</id>
    <revision>
      <id>442</id>
      <timestamp>2010-01-28T09:24:50Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Capture d'écran123.jpeg</title>
    <ns>6</ns>
    <id>113</id>
    <revision>
      <id>489</id>
      <timestamp>2010-01-29T09:16:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Capture d'écran124.jpeg</title>
    <ns>6</ns>
    <id>114</id>
    <revision>
      <id>490</id>
      <timestamp>2010-01-29T09:20:47Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Capture d'écran126.jpeg</title>
    <ns>6</ns>
    <id>119</id>
    <revision>
      <id>544</id>
      <timestamp>2010-01-30T09:15:58Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Capture d'écran127.jpeg</title>
    <ns>6</ns>
    <id>120</id>
    <revision>
      <id>545</id>
      <timestamp>2010-01-30T09:18:33Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Capture d'écran128.jpeg</title>
    <ns>6</ns>
    <id>121</id>
    <revision>
      <id>546</id>
      <timestamp>2010-01-30T09:18:52Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Capture150.jpeg</title>
    <ns>6</ns>
    <id>385</id>
    <revision>
      <id>1367</id>
      <timestamp>2010-04-09T13:55:53Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Capture151.jpeg</title>
    <ns>6</ns>
    <id>386</id>
    <revision>
      <id>1368</id>
      <timestamp>2010-04-09T13:56:40Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Capture153.jpeg</title>
    <ns>6</ns>
    <id>387</id>
    <revision>
      <id>1369</id>
      <timestamp>2010-04-09T14:08:00Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Capture154.jpeg</title>
    <ns>6</ns>
    <id>388</id>
    <revision>
      <id>1370</id>
      <timestamp>2010-04-09T14:09:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Capture156.jpeg</title>
    <ns>6</ns>
    <id>389</id>
    <revision>
      <id>1371</id>
      <timestamp>2010-04-09T14:10:20Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Capture158.jpeg</title>
    <ns>6</ns>
    <id>390</id>
    <revision>
      <id>1372</id>
      <timestamp>2010-04-09T14:11:38Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Capture159.jpeg</title>
    <ns>6</ns>
    <id>391</id>
    <revision>
      <id>1373</id>
      <timestamp>2010-04-09T14:13:00Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Capture160.jpeg</title>
    <ns>6</ns>
    <id>392</id>
    <revision>
      <id>1374</id>
      <timestamp>2010-04-09T14:14:19Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Capture161.jpeg</title>
    <ns>6</ns>
    <id>393</id>
    <revision>
      <id>1375</id>
      <timestamp>2010-04-09T14:16:13Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Cfdisk.jpeg</title>
    <ns>6</ns>
    <id>619</id>
    <revision>
      <id>2567</id>
      <timestamp>2010-12-27T07:00:07Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Cheat cube debian en.svg</title>
    <ns>6</ns>
    <id>269</id>
    <revision>
      <id>1169</id>
      <timestamp>2010-03-24T05:48:58Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Cheat_cube_debian_en.svg</comment>
      <text xml:space="preserve" bytes="24">Cheat_cube_debian_en.svg</text>
      <sha1>ponqsswmn6tamtjka0ixcdj7s5cp5nc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1201</id>
      <parentid>1169</parentid>
      <timestamp>2010-03-29T08:57:12Z</timestamp>
      <contributor>
        <username>Gardouille</username>
        <id>46</id>
      </contributor>
      <comment>a téléversé une nouvelle version de « [[Fichier:Cheat cube debian en.svg]] »&amp;nbsp;:&amp;#32;Version 0.02 en du cheat (astuces) debian</comment>
      <text xml:space="preserve" bytes="24">Cheat_cube_debian_en.svg</text>
      <sha1>ponqsswmn6tamtjka0ixcdj7s5cp5nc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Cheat cube debian fr.pdf</title>
    <ns>6</ns>
    <id>279</id>
    <revision>
      <id>1208</id>
      <timestamp>2010-03-29T09:14:46Z</timestamp>
      <contributor>
        <username>Gardouille</username>
        <id>46</id>
      </contributor>
      <comment>version 0.02 cheat_cube_debian_fr.pdf</comment>
      <text xml:space="preserve" bytes="37">version 0.02 cheat_cube_debian_fr.pdf</text>
      <sha1>bj1pjtoege0md0eu87lqznbvaoakk0i</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Cheat cube debian fr.svg</title>
    <ns>6</ns>
    <id>278</id>
    <revision>
      <id>1200</id>
      <timestamp>2010-03-29T08:53:58Z</timestamp>
      <contributor>
        <username>Gardouille</username>
        <id>46</id>
      </contributor>
      <comment>Version 0.02 fr du cheat (astuces) cube debian</comment>
      <text xml:space="preserve" bytes="46">Version 0.02 fr du cheat (astuces) cube debian</text>
      <sha1>mj761wlygm9vuojok8o6wvzf872dqj4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Cheat cube debian.svg</title>
    <ns>6</ns>
    <id>265</id>
    <revision>
      <id>1163</id>
      <timestamp>2010-03-23T18:24:23Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Cube &quot;astuces&quot; Debian (Cheat-cube-Debian)</comment>
      <text xml:space="preserve" bytes="41">Cube &quot;astuces&quot; Debian (Cheat-cube-Debian)</text>
      <sha1>9x6ey5y53t7im2ogvg4um02rxgy71b2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Cheat cube vierge.svg</title>
    <ns>6</ns>
    <id>266</id>
    <revision>
      <id>1164</id>
      <timestamp>2010-03-23T18:29:32Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Cube &quot;astuces&quot; Debian Vierge (Virgin Cheat-cube-Debian)</comment>
      <text xml:space="preserve" bytes="55">Cube &quot;astuces&quot; Debian Vierge (Virgin Cheat-cube-Debian)</text>
      <sha1>f5irk4iw07w8jz5l1r0i86yu2vcsv3l</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1168</id>
      <parentid>1164</parentid>
      <timestamp>2010-03-24T05:45:38Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>a téléversé une nouvelle version de « [[Fichier:Cheat cube vierge.svg]] »&amp;nbsp;:&amp;#32;Cheat_cube_vierge.svg</comment>
      <text xml:space="preserve" bytes="55">Cube &quot;astuces&quot; Debian Vierge (Virgin Cheat-cube-Debian)</text>
      <sha1>f5irk4iw07w8jz5l1r0i86yu2vcsv3l</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Cheatcubedebianen.pdf</title>
    <ns>6</ns>
    <id>270</id>
    <revision>
      <id>1170</id>
      <timestamp>2010-03-24T05:50:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Cheatcubedebianen.pdf</comment>
      <text xml:space="preserve" bytes="21">Cheatcubedebianen.pdf</text>
      <sha1>4jbna07wx2vhk1bt71q8mwxikpijwn3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1204</id>
      <parentid>1170</parentid>
      <timestamp>2010-03-29T09:08:02Z</timestamp>
      <contributor>
        <username>Gardouille</username>
        <id>46</id>
      </contributor>
      <comment>a téléversé une nouvelle version de « [[Fichier:Cheatcubedebianen.pdf]] »&amp;nbsp;:&amp;#32;cheat cube debian en.pdf</comment>
      <text xml:space="preserve" bytes="21">Cheatcubedebianen.pdf</text>
      <sha1>4jbna07wx2vhk1bt71q8mwxikpijwn3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Chess game 01.svg</title>
    <ns>6</ns>
    <id>252</id>
    <revision>
      <id>1096</id>
      <timestamp>2010-02-12T11:45:06Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Chkrootkit01.jpeg</title>
    <ns>6</ns>
    <id>731</id>
    <revision>
      <id>3239</id>
      <timestamp>2011-08-09T14:48:49Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Chkrootkit02.jpeg</title>
    <ns>6</ns>
    <id>732</id>
    <revision>
      <id>3240</id>
      <timestamp>2011-08-09T14:48:49Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Chkrootkit03.jpeg</title>
    <ns>6</ns>
    <id>733</id>
    <revision>
      <id>3241</id>
      <timestamp>2011-08-09T14:48:49Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Chronologie des versions stables de Debian.png</title>
    <ns>6</ns>
    <id>1252</id>
    <revision>
      <id>5134</id>
      <timestamp>2013-05-07T14:51:13Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5606</id>
      <parentid>5134</parentid>
      <timestamp>2014-04-27T13:11:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Lol a importé une nouvelle version de « [[Fichier:Chronologie des versions stables de Debian.png]] »</comment>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Clipperz.jpeg</title>
    <ns>6</ns>
    <id>863</id>
    <revision>
      <id>3567</id>
      <timestamp>2011-11-21T09:17:43Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Clipperz10.jpeg</title>
    <ns>6</ns>
    <id>870</id>
    <revision>
      <id>3574</id>
      <timestamp>2011-11-21T09:19:46Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Clipperz11.jpeg</title>
    <ns>6</ns>
    <id>872</id>
    <revision>
      <id>3576</id>
      <timestamp>2011-11-21T09:20:08Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Clipperz2.jpeg</title>
    <ns>6</ns>
    <id>864</id>
    <revision>
      <id>3568</id>
      <timestamp>2011-11-21T09:18:03Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Clipperz3.jpeg</title>
    <ns>6</ns>
    <id>865</id>
    <revision>
      <id>3569</id>
      <timestamp>2011-11-21T09:18:18Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Clipperz4.jpeg</title>
    <ns>6</ns>
    <id>866</id>
    <revision>
      <id>3570</id>
      <timestamp>2011-11-21T09:18:36Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Clipperz5.jpeg</title>
    <ns>6</ns>
    <id>867</id>
    <revision>
      <id>3571</id>
      <timestamp>2011-11-21T09:18:57Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Clipperz6.jpeg</title>
    <ns>6</ns>
    <id>868</id>
    <revision>
      <id>3572</id>
      <timestamp>2011-11-21T09:19:05Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Clipperz7.jpeg</title>
    <ns>6</ns>
    <id>869</id>
    <revision>
      <id>3573</id>
      <timestamp>2011-11-21T09:19:27Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Clipperz8.jpeg</title>
    <ns>6</ns>
    <id>871</id>
    <revision>
      <id>3575</id>
      <timestamp>2011-11-21T09:19:53Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Commandes.png</title>
    <ns>6</ns>
    <id>146</id>
    <revision>
      <id>637</id>
      <timestamp>2010-02-01T07:47:54Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Compatibilité de installation 02 bis.png</title>
    <ns>6</ns>
    <id>1055</id>
    <revision>
      <id>4439</id>
      <timestamp>2012-09-11T18:57:48Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Compatibilité de installation 03 bis.png</title>
    <ns>6</ns>
    <id>1056</id>
    <revision>
      <id>4440</id>
      <timestamp>2012-09-11T18:59:37Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Compatibilité de installation 04 bis.png</title>
    <ns>6</ns>
    <id>1057</id>
    <revision>
      <id>4441</id>
      <timestamp>2012-09-11T19:01:19Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Compatibilité de installation 05 bis.png</title>
    <ns>6</ns>
    <id>1058</id>
    <revision>
      <id>4442</id>
      <timestamp>2012-09-11T19:02:47Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Config.jpeg</title>
    <ns>6</ns>
    <id>557</id>
    <revision>
      <id>2317</id>
      <timestamp>2010-11-20T08:01:33Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Configuration de l'administration 10 bis.png</title>
    <ns>6</ns>
    <id>1081</id>
    <revision>
      <id>4472</id>
      <timestamp>2012-09-12T15:49:36Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Configuration de l'administration 27 bis.png</title>
    <ns>6</ns>
    <id>1083</id>
    <revision>
      <id>4474</id>
      <timestamp>2012-09-12T15:56:27Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4475</id>
      <parentid>4474</parentid>
      <timestamp>2012-09-12T15:59:17Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <comment>Loreleil a importé une nouvelle version de « [[Fichier:Configuration de l'administration 27 bis.png]] »</comment>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Configuration de la base de données 06 bis.png</title>
    <ns>6</ns>
    <id>1059</id>
    <revision>
      <id>4443</id>
      <timestamp>2012-09-11T19:04:40Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Configuration de la base de données 07 bis.png</title>
    <ns>6</ns>
    <id>1060</id>
    <revision>
      <id>4444</id>
      <timestamp>2012-09-11T19:07:29Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Configuration de ladministration 09 bis.png</title>
    <ns>6</ns>
    <id>1062</id>
    <revision>
      <id>4446</id>
      <timestamp>2012-09-11T19:10:16Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Configuration de ladministration 10 bis.png</title>
    <ns>6</ns>
    <id>1063</id>
    <revision>
      <id>4447</id>
      <timestamp>2012-09-11T19:12:41Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Connexion à la base de données 08 bis.png</title>
    <ns>6</ns>
    <id>1061</id>
    <revision>
      <id>4445</id>
      <timestamp>2012-09-11T19:08:40Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Cowsay fortune.png</title>
    <ns>6</ns>
    <id>396</id>
    <revision>
      <id>1423</id>
      <timestamp>2010-04-19T17:25:54Z</timestamp>
      <contributor>
        <username>Spatule</username>
        <id>47</id>
      </contributor>
      <comment>Screenshot terminal cowsay + fortune</comment>
      <text xml:space="preserve" bytes="36">Screenshot terminal cowsay + fortune</text>
      <sha1>c6s1ckeypvmxo8fi88l65bw1r9qvlw1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Créationn bdd 26 bis.png</title>
    <ns>6</ns>
    <id>1079</id>
    <revision>
      <id>4463</id>
      <timestamp>2012-09-12T09:58:11Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Dancing-Calvin.gif</title>
    <ns>6</ns>
    <id>92</id>
    <revision>
      <id>378</id>
      <timestamp>2010-01-27T06:10:33Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Deb.png</title>
    <ns>6</ns>
    <id>1114</id>
    <revision>
      <id>4596</id>
      <timestamp>2012-10-29T03:52:34Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Debian GNU Linux Release Timeline.png</title>
    <ns>6</ns>
    <id>458</id>
    <revision>
      <id>1783</id>
      <timestamp>2010-07-30T12:24:55Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Debian.png</title>
    <ns>6</ns>
    <id>1113</id>
    <revision>
      <id>4595</id>
      <timestamp>2012-10-29T03:50:06Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Debiancube.png</title>
    <ns>6</ns>
    <id>267</id>
    <revision>
      <id>1165</id>
      <timestamp>2010-03-23T19:05:43Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Debian cheat cube (Cube &quot;astuces&quot; Debian format png)</comment>
      <text xml:space="preserve" bytes="52">Debian cheat cube (Cube &quot;astuces&quot; Debian format png)</text>
      <sha1>dgjp6r9nw9glwtp3xm0pnk7u108lt6l</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1206</id>
      <parentid>1165</parentid>
      <timestamp>2010-03-29T09:12:40Z</timestamp>
      <contributor>
        <username>Gardouille</username>
        <id>46</id>
      </contributor>
      <comment>a téléversé une nouvelle version de « [[Fichier:Debiancube.png]] »&amp;nbsp;:&amp;#32;version 0.02 cheat_cube_debian_fr.png</comment>
      <text xml:space="preserve" bytes="52">Debian cheat cube (Cube &quot;astuces&quot; Debian format png)</text>
      <sha1>dgjp6r9nw9glwtp3xm0pnk7u108lt6l</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Divers.jpg</title>
    <ns>6</ns>
    <id>430</id>
    <revision>
      <id>1576</id>
      <timestamp>2010-06-24T15:04:23Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Divers.png</title>
    <ns>6</ns>
    <id>272</id>
    <revision>
      <id>1178</id>
      <timestamp>2010-03-24T06:15:46Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Icone divers</comment>
      <text xml:space="preserve" bytes="12">Icone divers</text>
      <sha1>c3m8h0abrs3umu0lc8npwn6wkjmcpgj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Dkim ovh 1.jpeg</title>
    <ns>6</ns>
    <id>1159</id>
    <revision>
      <id>4748</id>
      <timestamp>2012-11-15T14:48:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Dkim ovh 2.jpeg</title>
    <ns>6</ns>
    <id>1160</id>
    <revision>
      <id>4749</id>
      <timestamp>2012-11-15T14:48:40Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Dkim ovh 3.jpeg</title>
    <ns>6</ns>
    <id>1161</id>
    <revision>
      <id>4750</id>
      <timestamp>2012-11-15T14:48:56Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Dkim-reputation.jpeg</title>
    <ns>6</ns>
    <id>1162</id>
    <revision>
      <id>4751</id>
      <timestamp>2012-11-15T14:49:11Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Doc.png</title>
    <ns>6</ns>
    <id>263</id>
    <revision>
      <id>1153</id>
      <timestamp>2010-03-15T13:46:11Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Icone documentation externe</comment>
      <text xml:space="preserve" bytes="27">Icone documentation externe</text>
      <sha1>gg7bcdrf7y8q3ca05wv7vtznsvayo6z</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Download linuxwacom.png</title>
    <ns>6</ns>
    <id>495</id>
    <revision>
      <id>1955</id>
      <timestamp>2010-08-18T13:09:01Z</timestamp>
      <contributor>
        <username>Dunatotatos</username>
        <id>63</id>
      </contributor>
      <comment>Petite image pour l'explication du download de linuxwacom</comment>
      <text xml:space="preserve" bytes="57">Petite image pour l'explication du download de linuxwacom</text>
      <sha1>dgxo844fq6a3xmnoyb8x3c5h0r3ivzv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Dwm-exemple.png</title>
    <ns>6</ns>
    <id>424</id>
    <revision>
      <id>1558</id>
      <timestamp>2010-06-07T09:50:26Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:ERROR 403 Forbidden wiki lol 30.png</title>
    <ns>6</ns>
    <id>1086</id>
    <revision>
      <id>4487</id>
      <timestamp>2012-09-13T06:55:29Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:English Flag.svg</title>
    <ns>6</ns>
    <id>1105</id>
    <revision>
      <id>4556</id>
      <timestamp>2012-10-28T07:29:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Envoyer le rapport de statistiques 20 bis.png</title>
    <ns>6</ns>
    <id>1073</id>
    <revision>
      <id>4457</id>
      <timestamp>2012-09-11T20:03:37Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Envoyer le rapport de statistiques 21 bis.png</title>
    <ns>6</ns>
    <id>1074</id>
    <revision>
      <id>4458</id>
      <timestamp>2012-09-11T20:05:31Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Envoyer le rapport de statistiques 22 bis.png</title>
    <ns>6</ns>
    <id>1075</id>
    <revision>
      <id>4459</id>
      <timestamp>2012-09-11T20:07:31Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:FileGuardLarge256.png</title>
    <ns>6</ns>
    <id>1121</id>
    <revision>
      <id>4605</id>
      <timestamp>2012-10-29T04:01:46Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Forum-groupe-utilisateurs-icone-4597-128.png</title>
    <ns>6</ns>
    <id>592</id>
    <revision>
      <id>2473</id>
      <timestamp>2010-12-11T14:36:15Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:French Flag.svg</title>
    <ns>6</ns>
    <id>1106</id>
    <revision>
      <id>4557</id>
      <timestamp>2012-10-28T07:29:48Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Félicitations 18 bis.png</title>
    <ns>6</ns>
    <id>1071</id>
    <revision>
      <id>4455</id>
      <timestamp>2012-09-11T19:59:08Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:GRsync1.jpeg</title>
    <ns>6</ns>
    <id>745</id>
    <revision>
      <id>3277</id>
      <timestamp>2011-08-12T07:41:35Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Gadmin-Rsync.jpeg</title>
    <ns>6</ns>
    <id>744</id>
    <revision>
      <id>3276</id>
      <timestamp>2011-08-12T07:41:08Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Gandi.jpeg</title>
    <ns>6</ns>
    <id>470</id>
    <revision>
      <id>1849</id>
      <timestamp>2010-08-05T09:05:33Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Gconfig.jpeg</title>
    <ns>6</ns>
    <id>559</id>
    <revision>
      <id>2319</id>
      <timestamp>2010-11-20T08:01:33Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Gestionnairedefenetres.png</title>
    <ns>6</ns>
    <id>139</id>
    <revision>
      <id>630</id>
      <timestamp>2010-02-01T07:42:27Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Gksu-root-terminal-2.png</title>
    <ns>6</ns>
    <id>1119</id>
    <revision>
      <id>4603</id>
      <timestamp>2012-10-29T04:01:01Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Gldt.jpeg</title>
    <ns>6</ns>
    <id>551</id>
    <revision>
      <id>2290</id>
      <timestamp>2010-11-16T05:17:42Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Gldt1003.png</title>
    <ns>6</ns>
    <id>257</id>
    <revision>
      <id>1125</id>
      <timestamp>2010-03-10T04:27:28Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>&quot;Distro timeline&quot; téléchargé depuis http://futurist.se/gldt/</comment>
      <text xml:space="preserve" bytes="63">&quot;Distro timeline&quot; téléchargé depuis http://futurist.se/gldt/</text>
      <sha1>4fi2wqkxaet4yq63x70716dbsybtx7e</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Gldt1007.png</title>
    <ns>6</ns>
    <id>459</id>
    <revision>
      <id>1786</id>
      <timestamp>2010-07-30T20:27:36Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>GNU/Linux Distro Timeline V10.7</comment>
      <text xml:space="preserve" bytes="31">GNU/Linux Distro Timeline V10.7</text>
      <sha1>qp5rq7s3ntkbxcdecb2xu7p4ps8i899</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Gldt1008.png</title>
    <ns>6</ns>
    <id>496</id>
    <revision>
      <id>1980</id>
      <timestamp>2010-08-19T16:59:06Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>GNU/Linux distro timeline 10.8</comment>
      <text xml:space="preserve" bytes="30">GNU/Linux distro timeline 10.8</text>
      <sha1>is5ca7h13s27gc1jcbrm7l7i4rtt18e</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Gldt1011.jpeg</title>
    <ns>6</ns>
    <id>552</id>
    <revision>
      <id>2291</id>
      <timestamp>2010-11-16T05:20:55Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Gldt1011.png</title>
    <ns>6</ns>
    <id>550</id>
    <revision>
      <id>2289</id>
      <timestamp>2010-11-16T05:12:21Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>gldt.png téléchargé depuis http://futurist.se/gldt/</comment>
      <text xml:space="preserve" bytes="54">gldt.png téléchargé depuis http://futurist.se/gldt/</text>
      <sha1>9z8odl0p4z4x3rj4w5kpx9bycigla38</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Gldt1104.jpeg</title>
    <ns>6</ns>
    <id>684</id>
    <revision>
      <id>2960</id>
      <timestamp>2011-05-05T05:18:59Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>http://futurist.se/gldt/</comment>
      <text xml:space="preserve" bytes="24">http://futurist.se/gldt/</text>
      <sha1>20c9rbigdknll4im8nd3vtvbw39tpsm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Gldt1106.jpeg</title>
    <ns>6</ns>
    <id>708</id>
    <revision>
      <id>3129</id>
      <timestamp>2011-07-30T11:41:42Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>http://futurist.se/gldt/</comment>
      <text xml:space="preserve" bytes="24">http://futurist.se/gldt/</text>
      <sha1>20c9rbigdknll4im8nd3vtvbw39tpsm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Gldt1106.png</title>
    <ns>6</ns>
    <id>707</id>
    <revision>
      <id>3127</id>
      <timestamp>2011-07-30T09:22:45Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>http://futurist.se/gldt/wp-content/uploads/11.06/gldt1106.png</comment>
      <text xml:space="preserve" bytes="61">http://futurist.se/gldt/wp-content/uploads/11.06/gldt1106.png</text>
      <sha1>bjsp4ceosptso5cod24xrywua4mykbk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Gldt1110.jpeg</title>
    <ns>6</ns>
    <id>888</id>
    <revision>
      <id>3634</id>
      <timestamp>2011-12-05T13:59:47Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>http://futurist.se/gldt/wp-content/uploads/11.10/gldt1110.png
All content is licensed under the GNU Free Documentation License.</comment>
      <text xml:space="preserve" bytes="127">http://futurist.se/gldt/wp-content/uploads/11.10/gldt1110.png
All content is licensed under the GNU Free Documentation License.</text>
      <sha1>7g3eyclhfxf8mnpuhnloa1ubh8pup1x</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Gldt1201.jpg</title>
    <ns>6</ns>
    <id>917</id>
    <revision>
      <id>3813</id>
      <timestamp>2012-02-06T06:25:14Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4398</id>
      <parentid>3813</parentid>
      <timestamp>2012-08-15T08:18:36Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Lol a importé une nouvelle version de « [[Fichier:Gldt1201.jpg]] » : http://futurist.se/gldt/wp-content/uploads/x-png.png</comment>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Gldt1210.jpg</title>
    <ns>6</ns>
    <id>1230</id>
    <revision>
      <id>5071</id>
      <timestamp>2013-03-25T14:58:12Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Gparted.jpeg</title>
    <ns>6</ns>
    <id>618</id>
    <revision>
      <id>2566</id>
      <timestamp>2010-12-27T06:56:30Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Grey book.png</title>
    <ns>6</ns>
    <id>1123</id>
    <revision>
      <id>4607</id>
      <timestamp>2012-10-29T04:02:55Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Grub 2637.jpeg</title>
    <ns>6</ns>
    <id>562</id>
    <revision>
      <id>2363</id>
      <timestamp>2010-11-22T04:33:30Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Hard drive-fr.jpeg</title>
    <ns>6</ns>
    <id>625</id>
    <revision>
      <id>2611</id>
      <timestamp>2010-12-29T08:39:11Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Hard drive-fr.svg</title>
    <ns>6</ns>
    <id>614</id>
    <revision>
      <id>2562</id>
      <timestamp>2010-12-27T06:53:51Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Hardware.png</title>
    <ns>6</ns>
    <id>1118</id>
    <revision>
      <id>4602</id>
      <timestamp>2012-10-29T04:00:41Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Hardware2.png</title>
    <ns>6</ns>
    <id>135</id>
    <revision>
      <id>625</id>
      <timestamp>2010-02-01T07:38:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Hexcurse-01.png</title>
    <ns>6</ns>
    <id>1331</id>
    <revision>
      <id>5632</id>
      <timestamp>2014-07-06T14:24:16Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <comment>Ouverture du fichier image ISO avec &quot;hexcurse&quot;

$ hexcurse debian-live-7.5.0-amd64-xfce-desktop.iso</comment>
      <text xml:space="preserve" bytes="99">Ouverture du fichier image ISO avec &quot;hexcurse&quot;

$ hexcurse debian-live-7.5.0-amd64-xfce-desktop.iso</text>
      <sha1>arihovnqa1l1vkjevu4mymw0785sukd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Hexcurse-02.png</title>
    <ns>6</ns>
    <id>1332</id>
    <revision>
      <id>5633</id>
      <timestamp>2014-07-06T14:36:49Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <comment>hexcurse &quot;F1&quot; =&gt; Fenêtre d'aide</comment>
      <text xml:space="preserve" bytes="32">hexcurse &quot;F1&quot; =&gt; Fenêtre d'aide</text>
      <sha1>k6sypbk6k2crj5er62so36ghrq269bx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Hexcurse-03.png</title>
    <ns>6</ns>
    <id>1333</id>
    <revision>
      <id>5634</id>
      <timestamp>2014-07-06T23:50:06Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <comment>live-amd64 a été trouvé!</comment>
      <text xml:space="preserve" bytes="27">live-amd64 a été trouvé!</text>
      <sha1>1k2h33dqtjhetunuckpvfub2m5sk20k</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Hexcurse-04.png</title>
    <ns>6</ns>
    <id>1335</id>
    <revision>
      <id>5645</id>
      <timestamp>2014-07-07T15:26:38Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <comment>En bas à gauche : Invite pour entrer la chaîne à rechercher.</comment>
      <text xml:space="preserve" bytes="63">En bas à gauche : Invite pour entrer la chaîne à rechercher.</text>
      <sha1>8tcw4x1f3xr6l6k4ercxlxo165kejbo</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Hexcurse-05.png</title>
    <ns>6</ns>
    <id>1336</id>
    <revision>
      <id>5660</id>
      <timestamp>2014-07-07T17:38:30Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <comment>hexcurse - &quot;live-amd64&quot; a été trouvé !</comment>
      <text xml:space="preserve" bytes="41">hexcurse - &quot;live-amd64&quot; a été trouvé !</text>
      <sha1>mbo49oxyqrnnmnks9ro5d3mc64uv2im</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Hexcurse-06.png</title>
    <ns>6</ns>
    <id>1337</id>
    <revision>
      <id>5665</id>
      <timestamp>2014-07-07T18:01:33Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <comment>En bas, à gauche -&gt; Enter ascii value (): live-amd64</comment>
      <text xml:space="preserve" bytes="53">En bas, à gauche -&gt; Enter ascii value (): live-amd64</text>
      <sha1>jzq8r8p4fj27cqoi4gkn5is33cbnyop</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:IMG 5906.JPG</title>
    <ns>6</ns>
    <id>91</id>
    <revision>
      <id>375</id>
      <timestamp>2010-01-27T05:44:53Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>LOL !</comment>
      <text xml:space="preserve" bytes="5">LOL !</text>
      <sha1>gle4pdoxcd42aih1f1qfsaho9cj4exj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:IMG 6461.JPG</title>
    <ns>6</ns>
    <id>224</id>
    <revision>
      <id>903</id>
      <timestamp>2010-02-05T14:50:56Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:IPv6 ready.png</title>
    <ns>6</ns>
    <id>998</id>
    <revision>
      <id>4157</id>
      <timestamp>2012-05-05T11:22:48Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Informations sur l'administrateur 11 bis.png</title>
    <ns>6</ns>
    <id>1082</id>
    <revision>
      <id>4473</id>
      <timestamp>2012-09-12T15:51:32Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Informations sur l'administrateur 28 bis.png</title>
    <ns>6</ns>
    <id>1084</id>
    <revision>
      <id>4476</id>
      <timestamp>2012-09-12T16:03:11Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Informations sur ladministrateur 11 bis.png</title>
    <ns>6</ns>
    <id>1064</id>
    <revision>
      <id>4448</id>
      <timestamp>2012-09-11T19:14:21Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Installation.png</title>
    <ns>6</ns>
    <id>137</id>
    <revision>
      <id>628</id>
      <timestamp>2010-02-01T07:41:00Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Internet.png</title>
    <ns>6</ns>
    <id>160</id>
    <revision>
      <id>660</id>
      <timestamp>2010-02-01T09:06:17Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Introduction 00.png</title>
    <ns>6</ns>
    <id>1053</id>
    <revision>
      <id>4437</id>
      <timestamp>2012-09-11T18:49:57Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Jeux.png</title>
    <ns>6</ns>
    <id>143</id>
    <revision>
      <id>634</id>
      <timestamp>2010-02-01T07:44:20Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Le fada.png</title>
    <ns>6</ns>
    <id>90</id>
    <revision>
      <id>372</id>
      <timestamp>2010-01-27T05:15:07Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>373</id>
      <parentid>372</parentid>
      <timestamp>2010-01-27T05:18:35Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <comment>a téléversé une nouvelle version de « [[Fichier:Le fada.png]] »</comment>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Light bulb.png</title>
    <ns>6</ns>
    <id>1117</id>
    <revision>
      <id>4601</id>
      <timestamp>2012-10-29T04:00:17Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Linux.jpg</title>
    <ns>6</ns>
    <id>140</id>
    <revision>
      <id>631</id>
      <timestamp>2010-02-01T07:42:47Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Logiciel.png</title>
    <ns>6</ns>
    <id>138</id>
    <revision>
      <id>629</id>
      <timestamp>2010-02-01T07:41:33Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Logo ayo.png</title>
    <ns>6</ns>
    <id>54</id>
    <revision>
      <id>171</id>
      <timestamp>2010-01-23T13:24:19Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Logwatch01.jpeg</title>
    <ns>6</ns>
    <id>728</id>
    <revision>
      <id>3213</id>
      <timestamp>2011-08-07T13:23:17Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:LuckyBackup.jpeg</title>
    <ns>6</ns>
    <id>742</id>
    <revision>
      <id>3273</id>
      <timestamp>2011-08-12T07:39:44Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:LuckyBackup1.jpeg</title>
    <ns>6</ns>
    <id>743</id>
    <revision>
      <id>3274</id>
      <timestamp>2011-08-12T07:40:32Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Make nconfig.png</title>
    <ns>6</ns>
    <id>923</id>
    <revision>
      <id>3846</id>
      <timestamp>2012-02-22T12:18:46Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Makemenuconfig.jpeg</title>
    <ns>6</ns>
    <id>558</id>
    <revision>
      <id>2318</id>
      <timestamp>2010-11-20T08:01:33Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Mobbix.png</title>
    <ns>6</ns>
    <id>960</id>
    <revision>
      <id>3938</id>
      <timestamp>2012-03-14T07:45:18Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Modsecurity.gif</title>
    <ns>6</ns>
    <id>839</id>
    <revision>
      <id>3397</id>
      <timestamp>2011-08-27T05:53:44Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Monit1.jpeg</title>
    <ns>6</ns>
    <id>833</id>
    <revision>
      <id>3382</id>
      <timestamp>2011-08-23T13:04:22Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Monit2.jpeg</title>
    <ns>6</ns>
    <id>834</id>
    <revision>
      <id>3383</id>
      <timestamp>2011-08-23T13:04:30Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Monit4.jpeg</title>
    <ns>6</ns>
    <id>835</id>
    <revision>
      <id>3384</id>
      <timestamp>2011-08-23T13:04:41Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Mot de passe apache.jpeg</title>
    <ns>6</ns>
    <id>838</id>
    <revision>
      <id>3396</id>
      <timestamp>2011-08-27T05:53:17Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Multimedia.png</title>
    <ns>6</ns>
    <id>145</id>
    <revision>
      <id>636</id>
      <timestamp>2010-02-01T07:44:56Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:NULL MODEM CABLE.jpg</title>
    <ns>6</ns>
    <id>545</id>
    <revision>
      <id>2230</id>
      <timestamp>2010-10-17T14:12:28Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2231</id>
      <parentid>2230</parentid>
      <timestamp>2010-10-17T14:13:45Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>a téléversé une nouvelle version de « [[Fichier:NULL MODEM CABLE.jpg]] »</comment>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2233</id>
      <parentid>2231</parentid>
      <timestamp>2010-10-17T14:15:28Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>a téléversé une nouvelle version de « [[Fichier:NULL MODEM CABLE.jpg]] »</comment>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Nappescsi21.jpeg</title>
    <ns>6</ns>
    <id>617</id>
    <revision>
      <id>2565</id>
      <timestamp>2010-12-27T06:53:52Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Ndisgtk.png</title>
    <ns>6</ns>
    <id>211</id>
    <revision>
      <id>789</id>
      <timestamp>2010-02-03T09:04:12Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <comment>Pour configurer ndiswrapper en graphique.</comment>
      <text xml:space="preserve" bytes="41">Pour configurer ndiswrapper en graphique.</text>
      <sha1>3xwfqf1n8uwhoualk69kpem9i2nhqdt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Network-Connections.png</title>
    <ns>6</ns>
    <id>1115</id>
    <revision>
      <id>4599</id>
      <timestamp>2012-10-29T03:58:31Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Nut-cgi 01.png</title>
    <ns>6</ns>
    <id>1171</id>
    <revision>
      <id>4817</id>
      <timestamp>2012-12-09T09:06:52Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Nut-cgi 02.png</title>
    <ns>6</ns>
    <id>1172</id>
    <revision>
      <id>4819</id>
      <timestamp>2012-12-09T09:13:24Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Nut-cgi 03.png</title>
    <ns>6</ns>
    <id>1173</id>
    <revision>
      <id>4820</id>
      <timestamp>2012-12-09T09:13:34Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Nut-cgi 04.png</title>
    <ns>6</ns>
    <id>1174</id>
    <revision>
      <id>4821</id>
      <timestamp>2012-12-09T09:13:55Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Nut-cgi 05.png</title>
    <ns>6</ns>
    <id>1175</id>
    <revision>
      <id>4822</id>
      <timestamp>2012-12-09T09:14:16Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Nut-cgi 06.png</title>
    <ns>6</ns>
    <id>1176</id>
    <revision>
      <id>4823</id>
      <timestamp>2012-12-09T09:14:26Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Nuvola apps important.svg</title>
    <ns>6</ns>
    <id>1098</id>
    <revision>
      <id>4541</id>
      <timestamp>2012-10-26T06:27:13Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4542</id>
      <parentid>4541</parentid>
      <timestamp>2012-10-26T06:37:11Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Lol a importé une nouvelle version de « [[Fichier:Nuvola apps important.svg]] »</comment>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Openvpn-status.jpeg</title>
    <ns>6</ns>
    <id>691</id>
    <revision>
      <id>3000</id>
      <timestamp>2011-05-20T06:23:46Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Package.jpg</title>
    <ns>6</ns>
    <id>141</id>
    <revision>
      <id>632</id>
      <timestamp>2010-02-01T07:43:03Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Paramètres des e-mails 14 bis.png</title>
    <ns>6</ns>
    <id>1067</id>
    <revision>
      <id>4451</id>
      <timestamp>2012-09-11T19:19:05Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Paramètres des e-mails 15 bis.png</title>
    <ns>6</ns>
    <id>1068</id>
    <revision>
      <id>4452</id>
      <timestamp>2012-09-11T19:20:26Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Paramètres des e-mails 16 bis.png</title>
    <ns>6</ns>
    <id>1069</id>
    <revision>
      <id>4453</id>
      <timestamp>2012-09-11T19:54:37Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Paramètres des e-mails 17 bis.png</title>
    <ns>6</ns>
    <id>1070</id>
    <revision>
      <id>4454</id>
      <timestamp>2012-09-11T19:55:53Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Pek-conky.png</title>
    <ns>6</ns>
    <id>215</id>
    <revision>
      <id>821</id>
      <timestamp>2010-02-03T20:15:47Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Pekwm.png</title>
    <ns>6</ns>
    <id>33</id>
    <revision>
      <id>73</id>
      <timestamp>2010-01-21T21:13:45Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Pekwmfortune.png</title>
    <ns>6</ns>
    <id>34</id>
    <revision>
      <id>74</id>
      <timestamp>2010-01-21T21:15:00Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Pekwmimage.png</title>
    <ns>6</ns>
    <id>35</id>
    <revision>
      <id>75</id>
      <timestamp>2010-01-21T21:16:17Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Pekwmmpd.png</title>
    <ns>6</ns>
    <id>36</id>
    <revision>
      <id>76</id>
      <timestamp>2010-01-21T21:16:35Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Pentouch.jpg</title>
    <ns>6</ns>
    <id>493</id>
    <revision>
      <id>1943</id>
      <timestamp>2010-08-17T10:11:33Z</timestamp>
      <contributor>
        <username>Dunatotatos</username>
        <id>63</id>
      </contributor>
      <comment>Photo de la tablette Wacom Bamboo Pen&amp;Touch</comment>
      <text xml:space="preserve" bytes="43">Photo de la tablette Wacom Bamboo Pen&amp;Touch</text>
      <sha1>5jtruqrpsyqb0gf9htln80i7w8zkj4k</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Photo 001.jpg</title>
    <ns>6</ns>
    <id>542</id>
    <revision>
      <id>2223</id>
      <timestamp>2010-10-17T11:15:24Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2225</id>
      <parentid>2223</parentid>
      <timestamp>2010-10-17T11:18:57Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>a téléversé une nouvelle version de « [[Fichier:Photo 001.jpg]] »</comment>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Photo 002.jpg</title>
    <ns>6</ns>
    <id>543</id>
    <revision>
      <id>2224</id>
      <timestamp>2010-10-17T11:15:49Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2226</id>
      <parentid>2224</parentid>
      <timestamp>2010-10-17T11:20:08Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>a téléversé une nouvelle version de « [[Fichier:Photo 002.jpg]] »</comment>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Piwik01.jpeg</title>
    <ns>6</ns>
    <id>600</id>
    <revision>
      <id>2537</id>
      <timestamp>2010-12-26T05:56:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Piwik02.jpeg</title>
    <ns>6</ns>
    <id>601</id>
    <revision>
      <id>2538</id>
      <timestamp>2010-12-26T05:56:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Piwik03.jpeg</title>
    <ns>6</ns>
    <id>602</id>
    <revision>
      <id>2539</id>
      <timestamp>2010-12-26T05:56:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Piwik04.jpeg</title>
    <ns>6</ns>
    <id>603</id>
    <revision>
      <id>2540</id>
      <timestamp>2010-12-26T05:56:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Piwik05.jpeg</title>
    <ns>6</ns>
    <id>604</id>
    <revision>
      <id>2541</id>
      <timestamp>2010-12-26T05:56:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Piwik06.jpeg</title>
    <ns>6</ns>
    <id>605</id>
    <revision>
      <id>2542</id>
      <timestamp>2010-12-26T05:56:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Piwik07.jpeg</title>
    <ns>6</ns>
    <id>606</id>
    <revision>
      <id>2543</id>
      <timestamp>2010-12-26T05:56:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Piwik08.jpeg</title>
    <ns>6</ns>
    <id>607</id>
    <revision>
      <id>2544</id>
      <timestamp>2010-12-26T05:56:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Piwik09.jpeg</title>
    <ns>6</ns>
    <id>608</id>
    <revision>
      <id>2545</id>
      <timestamp>2010-12-26T05:56:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Piwik10.jpeg</title>
    <ns>6</ns>
    <id>609</id>
    <revision>
      <id>2546</id>
      <timestamp>2010-12-26T06:05:40Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Portsentry.jpeg</title>
    <ns>6</ns>
    <id>857</id>
    <revision>
      <id>3502</id>
      <timestamp>2011-10-28T05:05:16Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Programmation.png</title>
    <ns>6</ns>
    <id>142</id>
    <revision>
      <id>633</id>
      <timestamp>2010-02-01T07:43:26Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Prosody-gajim.png</title>
    <ns>6</ns>
    <id>1266</id>
    <revision>
      <id>5271</id>
      <timestamp>2013-06-11T06:05:12Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Ranger.png</title>
    <ns>6</ns>
    <id>965</id>
    <revision>
      <id>3957</id>
      <timestamp>2012-03-16T16:43:20Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <comment>screenshot de ranger</comment>
      <text xml:space="preserve" bytes="20">screenshot de ranger</text>
      <sha1>hron7nldzm88zpj88mxt7hyovzanb3t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Redmine1.png</title>
    <ns>6</ns>
    <id>934</id>
    <revision>
      <id>3871</id>
      <timestamp>2012-03-05T07:51:06Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Redmine3.png</title>
    <ns>6</ns>
    <id>935</id>
    <revision>
      <id>3872</id>
      <timestamp>2012-03-05T07:51:33Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Redmine4.png</title>
    <ns>6</ns>
    <id>936</id>
    <revision>
      <id>3873</id>
      <timestamp>2012-03-05T07:51:57Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Reprepro1.jpeg</title>
    <ns>6</ns>
    <id>535</id>
    <revision>
      <id>2163</id>
      <timestamp>2010-10-01T07:36:31Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Restore1.png</title>
    <ns>6</ns>
    <id>1002</id>
    <revision>
      <id>4207</id>
      <timestamp>2012-05-06T11:43:35Z</timestamp>
      <contributor>
        <username>Haludeis</username>
        <id>30</id>
      </contributor>
      <comment>commande restore partie 1</comment>
      <text xml:space="preserve" bytes="25">commande restore partie 1</text>
      <sha1>lc1v1c9rksvp04eut5h2wyb326og7nh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Restore2.png</title>
    <ns>6</ns>
    <id>1003</id>
    <revision>
      <id>4208</id>
      <timestamp>2012-05-06T11:44:03Z</timestamp>
      <contributor>
        <username>Haludeis</username>
        <id>30</id>
      </contributor>
      <comment>commande restore partie 2</comment>
      <text xml:space="preserve" bytes="25">commande restore partie 2</text>
      <sha1>kqmpxllcao6dpanqqkukhciu7hkf112</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Result.png</title>
    <ns>6</ns>
    <id>697</id>
    <revision>
      <id>3053</id>
      <timestamp>2011-06-10T17:29:05Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <comment>Exemple de l'utilisation du script d'upload sur pix.isalo.org</comment>
      <text xml:space="preserve" bytes="61">Exemple de l'utilisation du script d'upload sur pix.isalo.org</text>
      <sha1>iypw6a9z62r7w897v56u7b4wglzwook</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Ricardo-01-10.jpeg</title>
    <ns>6</ns>
    <id>86</id>
    <revision>
      <id>349</id>
      <timestamp>2010-01-26T23:18:18Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:SATA Data Cable.jpg</title>
    <ns>6</ns>
    <id>616</id>
    <revision>
      <id>2564</id>
      <timestamp>2010-12-27T06:53:51Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Securite.png</title>
    <ns>6</ns>
    <id>144</id>
    <revision>
      <id>635</id>
      <timestamp>2010-02-01T07:44:36Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Seeks-config.png</title>
    <ns>6</ns>
    <id>874</id>
    <revision>
      <id>3599</id>
      <timestamp>2011-11-27T08:24:06Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Serveur.png</title>
    <ns>6</ns>
    <id>1136</id>
    <revision>
      <id>4683</id>
      <timestamp>2012-10-30T06:20:11Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Sks web.jpeg</title>
    <ns>6</ns>
    <id>533</id>
    <revision>
      <id>2161</id>
      <timestamp>2010-10-01T07:35:00Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Sks www.tar</title>
    <ns>6</ns>
    <id>532</id>
    <revision>
      <id>2159</id>
      <timestamp>2010-10-01T07:33:40Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot11.jpeg</title>
    <ns>6</ns>
    <id>573</id>
    <revision>
      <id>2396</id>
      <timestamp>2010-11-25T12:44:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot124.jpeg</title>
    <ns>6</ns>
    <id>641</id>
    <revision>
      <id>2779</id>
      <timestamp>2011-04-06T08:58:04Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot125.jpeg</title>
    <ns>6</ns>
    <id>642</id>
    <revision>
      <id>2780</id>
      <timestamp>2011-04-06T08:58:04Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot13.jpeg</title>
    <ns>6</ns>
    <id>574</id>
    <revision>
      <id>2397</id>
      <timestamp>2010-11-25T12:44:38Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot14.jpeg</title>
    <ns>6</ns>
    <id>575</id>
    <revision>
      <id>2398</id>
      <timestamp>2010-11-25T12:44:38Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot142.jpeg</title>
    <ns>6</ns>
    <id>660</id>
    <revision>
      <id>2805</id>
      <timestamp>2011-04-06T16:46:42Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot15.jpeg</title>
    <ns>6</ns>
    <id>576</id>
    <revision>
      <id>2399</id>
      <timestamp>2010-11-25T12:44:38Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot155.jpeg</title>
    <ns>6</ns>
    <id>639</id>
    <revision>
      <id>2777</id>
      <timestamp>2011-04-06T08:55:28Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot158.jpeg</title>
    <ns>6</ns>
    <id>644</id>
    <revision>
      <id>2782</id>
      <timestamp>2011-04-06T08:58:04Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot159.jpeg</title>
    <ns>6</ns>
    <id>645</id>
    <revision>
      <id>2783</id>
      <timestamp>2011-04-06T08:58:04Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot16.jpeg</title>
    <ns>6</ns>
    <id>577</id>
    <revision>
      <id>2400</id>
      <timestamp>2010-11-25T12:46:09Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot162.jpeg</title>
    <ns>6</ns>
    <id>647</id>
    <revision>
      <id>2785</id>
      <timestamp>2011-04-06T08:58:04Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot163.jpeg</title>
    <ns>6</ns>
    <id>648</id>
    <revision>
      <id>2786</id>
      <timestamp>2011-04-06T08:58:04Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot169.jpeg</title>
    <ns>6</ns>
    <id>652</id>
    <revision>
      <id>2790</id>
      <timestamp>2011-04-06T09:00:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot17.jpeg</title>
    <ns>6</ns>
    <id>578</id>
    <revision>
      <id>2401</id>
      <timestamp>2010-11-25T12:46:09Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot171.jpeg</title>
    <ns>6</ns>
    <id>653</id>
    <revision>
      <id>2791</id>
      <timestamp>2011-04-06T09:00:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot172.jpeg</title>
    <ns>6</ns>
    <id>654</id>
    <revision>
      <id>2792</id>
      <timestamp>2011-04-06T09:00:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot175.jpeg</title>
    <ns>6</ns>
    <id>657</id>
    <revision>
      <id>2795</id>
      <timestamp>2011-04-06T09:00:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot176.jpeg</title>
    <ns>6</ns>
    <id>658</id>
    <revision>
      <id>2796</id>
      <timestamp>2011-04-06T09:00:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot177.jpeg</title>
    <ns>6</ns>
    <id>659</id>
    <revision>
      <id>2797</id>
      <timestamp>2011-04-06T09:00:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot178.jpeg</title>
    <ns>6</ns>
    <id>661</id>
    <revision>
      <id>2806</id>
      <timestamp>2011-04-06T16:46:43Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot179.jpeg</title>
    <ns>6</ns>
    <id>662</id>
    <revision>
      <id>2807</id>
      <timestamp>2011-04-06T16:46:43Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot18.jpeg</title>
    <ns>6</ns>
    <id>579</id>
    <revision>
      <id>2402</id>
      <timestamp>2010-11-25T12:46:10Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot180.jpeg</title>
    <ns>6</ns>
    <id>663</id>
    <revision>
      <id>2808</id>
      <timestamp>2011-04-06T16:46:43Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot184.jpeg</title>
    <ns>6</ns>
    <id>640</id>
    <revision>
      <id>2778</id>
      <timestamp>2011-04-06T08:58:03Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot185.jpeg</title>
    <ns>6</ns>
    <id>643</id>
    <revision>
      <id>2781</id>
      <timestamp>2011-04-06T08:58:04Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot186.jpeg</title>
    <ns>6</ns>
    <id>646</id>
    <revision>
      <id>2784</id>
      <timestamp>2011-04-06T08:58:04Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot187.jpeg</title>
    <ns>6</ns>
    <id>649</id>
    <revision>
      <id>2787</id>
      <timestamp>2011-04-06T08:58:04Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot188.jpeg</title>
    <ns>6</ns>
    <id>650</id>
    <revision>
      <id>2788</id>
      <timestamp>2011-04-06T09:00:38Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot189.jpeg</title>
    <ns>6</ns>
    <id>651</id>
    <revision>
      <id>2789</id>
      <timestamp>2011-04-06T09:00:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot19.jpeg</title>
    <ns>6</ns>
    <id>580</id>
    <revision>
      <id>2403</id>
      <timestamp>2010-11-25T12:46:10Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot190.jpeg</title>
    <ns>6</ns>
    <id>655</id>
    <revision>
      <id>2793</id>
      <timestamp>2011-04-06T09:00:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot191.jpeg</title>
    <ns>6</ns>
    <id>656</id>
    <revision>
      <id>2794</id>
      <timestamp>2011-04-06T09:00:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot192.jpeg</title>
    <ns>6</ns>
    <id>664</id>
    <revision>
      <id>2809</id>
      <timestamp>2011-04-06T16:46:43Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot194.jpeg</title>
    <ns>6</ns>
    <id>665</id>
    <revision>
      <id>2811</id>
      <timestamp>2011-04-06T17:20:28Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot197.jpeg</title>
    <ns>6</ns>
    <id>667</id>
    <revision>
      <id>2814</id>
      <timestamp>2011-04-07T05:32:03Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot199.jpeg</title>
    <ns>6</ns>
    <id>669</id>
    <revision>
      <id>2816</id>
      <timestamp>2011-04-07T05:32:03Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot20.jpeg</title>
    <ns>6</ns>
    <id>581</id>
    <revision>
      <id>2404</id>
      <timestamp>2010-11-25T12:46:10Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot200.jpeg</title>
    <ns>6</ns>
    <id>666</id>
    <revision>
      <id>2813</id>
      <timestamp>2011-04-07T05:32:03Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot201.jpeg</title>
    <ns>6</ns>
    <id>670</id>
    <revision>
      <id>2817</id>
      <timestamp>2011-04-07T05:32:03Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot202.jpeg</title>
    <ns>6</ns>
    <id>671</id>
    <revision>
      <id>2818</id>
      <timestamp>2011-04-07T05:32:03Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot206.jpeg</title>
    <ns>6</ns>
    <id>668</id>
    <revision>
      <id>2815</id>
      <timestamp>2011-04-07T05:32:03Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot207.jpeg</title>
    <ns>6</ns>
    <id>672</id>
    <revision>
      <id>2819</id>
      <timestamp>2011-04-07T05:32:03Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot209.jpeg</title>
    <ns>6</ns>
    <id>673</id>
    <revision>
      <id>2824</id>
      <timestamp>2011-04-07T16:51:41Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot21.jpeg</title>
    <ns>6</ns>
    <id>582</id>
    <revision>
      <id>2405</id>
      <timestamp>2010-11-25T12:46:10Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot210.jpeg</title>
    <ns>6</ns>
    <id>674</id>
    <revision>
      <id>2825</id>
      <timestamp>2011-04-07T16:52:11Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot211.jpeg</title>
    <ns>6</ns>
    <id>675</id>
    <revision>
      <id>2828</id>
      <timestamp>2011-04-07T20:00:21Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot212.jpeg</title>
    <ns>6</ns>
    <id>676</id>
    <revision>
      <id>2830</id>
      <timestamp>2011-04-08T16:07:18Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot213.jpeg</title>
    <ns>6</ns>
    <id>677</id>
    <revision>
      <id>2831</id>
      <timestamp>2011-04-08T16:07:47Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot25.jpeg</title>
    <ns>6</ns>
    <id>583</id>
    <revision>
      <id>2406</id>
      <timestamp>2010-11-25T12:46:10Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot3.jpeg</title>
    <ns>6</ns>
    <id>567</id>
    <revision>
      <id>2390</id>
      <timestamp>2010-11-25T12:44:36Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot4.jpeg</title>
    <ns>6</ns>
    <id>568</id>
    <revision>
      <id>2391</id>
      <timestamp>2010-11-25T12:44:36Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot5.jpeg</title>
    <ns>6</ns>
    <id>569</id>
    <revision>
      <id>2392</id>
      <timestamp>2010-11-25T12:44:36Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot6.jpeg</title>
    <ns>6</ns>
    <id>570</id>
    <revision>
      <id>2393</id>
      <timestamp>2010-11-25T12:44:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot7.jpeg</title>
    <ns>6</ns>
    <id>571</id>
    <revision>
      <id>2394</id>
      <timestamp>2010-11-25T12:44:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Snapshot9.jpeg</title>
    <ns>6</ns>
    <id>572</id>
    <revision>
      <id>2395</id>
      <timestamp>2010-11-25T12:44:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Squeeze-tasksel.png</title>
    <ns>6</ns>
    <id>1338</id>
    <revision>
      <id>5794</id>
      <timestamp>2014-09-06T01:17:05Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>écran de sélection des logiciels (tasksel) présenté lors de l’installation de Debian 6 « Squeeze »</comment>
      <text xml:space="preserve" bytes="108">écran de sélection des logiciels (tasksel) présenté lors de l’installation de Debian 6 « Squeeze »</text>
      <sha1>oni4d976w3xib5f5w9791vajs831tj8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5795</id>
      <parentid>5794</parentid>
      <timestamp>2014-09-06T01:18:47Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>Vv222 a importé une nouvelle version de « [[Fichier:Squeeze-tasksel.png]] »</comment>
      <text xml:space="preserve" bytes="108">écran de sélection des logiciels (tasksel) présenté lors de l’installation de Debian 6 « Squeeze »</text>
      <sha1>oni4d976w3xib5f5w9791vajs831tj8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Squeeze2wheezy-1.png</title>
    <ns>6</ns>
    <id>1339</id>
    <revision>
      <id>5796</id>
      <timestamp>2014-09-06T02:20:40Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>mise-à-jour de Squeeze vers Wheezy, exemple d’écran debconf</comment>
      <text xml:space="preserve" bytes="63">mise-à-jour de Squeeze vers Wheezy, exemple d’écran debconf</text>
      <sha1>gnsttxrkhz4nl74470m7rllmbn51age</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Squeeze2wheezy-2.png</title>
    <ns>6</ns>
    <id>1340</id>
    <revision>
      <id>5797</id>
      <timestamp>2014-09-06T02:23:02Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>mise-à-jour de Squeeze vers Wheezy, exemple d’écran debconf</comment>
      <text xml:space="preserve" bytes="63">mise-à-jour de Squeeze vers Wheezy, exemple d’écran debconf</text>
      <sha1>gnsttxrkhz4nl74470m7rllmbn51age</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Squeeze2wheezy-3.png</title>
    <ns>6</ns>
    <id>1341</id>
    <revision>
      <id>5798</id>
      <timestamp>2014-09-06T02:25:35Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>mise-à-jour de Squeeze vers Wheezy, exemple d’écran debconf</comment>
      <text xml:space="preserve" bytes="63">mise-à-jour de Squeeze vers Wheezy, exemple d’écran debconf</text>
      <sha1>gnsttxrkhz4nl74470m7rllmbn51age</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Status.png</title>
    <ns>6</ns>
    <id>1001</id>
    <revision>
      <id>4206</id>
      <timestamp>2012-05-06T11:16:10Z</timestamp>
      <contributor>
        <username>Haludeis</username>
        <id>30</id>
      </contributor>
      <comment>capture d'écran commande status</comment>
      <text xml:space="preserve" bytes="32">capture d'écran commande status</text>
      <sha1>a4hckqmeg7ygnim3ed78vq4biiuf9mu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Suppression utilisateur de la base 29 bis.png</title>
    <ns>6</ns>
    <id>1085</id>
    <revision>
      <id>4486</id>
      <timestamp>2012-09-12T18:24:56Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:T&amp;A.jpg</title>
    <ns>6</ns>
    <id>429</id>
    <revision>
      <id>1575</id>
      <timestamp>2010-06-24T14:53:44Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Tasksel.png</title>
    <ns>6</ns>
    <id>452</id>
    <revision>
      <id>1710</id>
      <timestamp>2010-07-26T17:14:06Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Template-info.png</title>
    <ns>6</ns>
    <id>1148</id>
    <revision>
      <id>4699</id>
      <timestamp>2012-10-31T12:25:30Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Tftpd-hpa et IPv4.png</title>
    <ns>6</ns>
    <id>1242</id>
    <revision>
      <id>5095</id>
      <timestamp>2013-04-16T07:21:49Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Timezones2010.png</title>
    <ns>6</ns>
    <id>554</id>
    <revision>
      <id>2305</id>
      <timestamp>2010-11-17T15:09:50Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Fichier:Timezones2010.png
Source Wikipedia : http://fr.wikipedia.org/wiki/Fichier:Timezones2010.png
Released into the public domain (by the author).</comment>
      <text xml:space="preserve" bytes="148">Fichier:Timezones2010.png
Source Wikipedia : http://fr.wikipedia.org/wiki/Fichier:Timezones2010.png
Released into the public domain (by the author).</text>
      <sha1>agfzoapjlxom2qmznb4bjb61aowlkox</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Télécharger la configuration 12 bis.png</title>
    <ns>6</ns>
    <id>1065</id>
    <revision>
      <id>4449</id>
      <timestamp>2012-09-11T19:15:37Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Télécharger la configuration 13 bis.png</title>
    <ns>6</ns>
    <id>1066</id>
    <revision>
      <id>4450</id>
      <timestamp>2012-09-11T19:16:58Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:VPN nomade-a-site.jpg</title>
    <ns>6</ns>
    <id>689</id>
    <revision>
      <id>2983</id>
      <timestamp>2011-05-18T13:26:30Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:VPN site-a-site.jpg</title>
    <ns>6</ns>
    <id>688</id>
    <revision>
      <id>2982</id>
      <timestamp>2011-05-18T13:25:46Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:VirtualBox Launcher Zenity.png</title>
    <ns>6</ns>
    <id>1207</id>
    <revision>
      <id>4963</id>
      <timestamp>2013-02-11T17:20:41Z</timestamp>
      <contributor>
        <username>PengouinPdt</username>
        <id>249</id>
      </contributor>
      <comment>Image montrant la Box Zenity pour le lanceur VirtualBox</comment>
      <text xml:space="preserve" bytes="55">Image montrant la Box Zenity pour le lanceur VirtualBox</text>
      <sha1>5sy2kmlez37wdx2o3cdzn95piqb6xof</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Wheezy-gdm3.png</title>
    <ns>6</ns>
    <id>1342</id>
    <revision>
      <id>5799</id>
      <timestamp>2014-09-06T02:41:13Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>Wheezy, écran de connexion GDM 3</comment>
      <text xml:space="preserve" bytes="33">Wheezy, écran de connexion GDM 3</text>
      <sha1>adcjqelzlm185xox26051z93gwqylt9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Wiki.png</title>
    <ns>6</ns>
    <id>3</id>
    <revision>
      <id>6</id>
      <timestamp>2010-01-21T07:05:28Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <comment>test upload</comment>
      <text xml:space="preserve" bytes="11">test upload</text>
      <sha1>c6ts649zqs0rchkaexzo1hmarydseat</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4553</id>
      <parentid>6</parentid>
      <timestamp>2012-10-28T07:00:18Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Lol a importé une nouvelle version de « [[Fichier:Wiki.png]] »</comment>
      <text xml:space="preserve" bytes="11">test upload</text>
      <sha1>c6ts649zqs0rchkaexzo1hmarydseat</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Wmii mail.png</title>
    <ns>6</ns>
    <id>111</id>
    <revision>
      <id>472</id>
      <timestamp>2010-01-29T05:31:54Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <comment>Status bar</comment>
      <text xml:space="preserve" bytes="10">Status bar</text>
      <sha1>5t2wjidvokva9jq0diek6hpd7lswdip</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Wmii1.png</title>
    <ns>6</ns>
    <id>69</id>
    <revision>
      <id>286</id>
      <timestamp>2010-01-26T05:44:27Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>287</id>
      <parentid>286</parentid>
      <timestamp>2010-01-26T06:22:38Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <comment>a téléversé une nouvelle version de « [[Fichier:Wmii1.png]] »&amp;nbsp;:&amp;#32;Avec plusieurs applications ouvertes</comment>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>402</id>
      <parentid>287</parentid>
      <timestamp>2010-01-27T11:14:11Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <comment>a téléversé une nouvelle version de « [[Fichier:Wmii1.png]] »</comment>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>403</id>
      <parentid>402</parentid>
      <timestamp>2010-01-27T11:14:41Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <comment>a téléversé une nouvelle version de « [[Fichier:Wmii1.png]] »&amp;nbsp;:&amp;#32;Version du 26 janvier 2010 à 06:22 rétablie</comment>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>404</id>
      <parentid>403</parentid>
      <timestamp>2010-01-27T11:15:36Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <comment>a téléversé une nouvelle version de « [[Fichier:Wmii1.png]] »&amp;nbsp;:&amp;#32;Version du 27 janvier 2010 à 11:14 rétablie</comment>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>406</id>
      <parentid>404</parentid>
      <timestamp>2010-01-27T11:16:52Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <comment>a téléversé une nouvelle version de « [[Fichier:Wmii1.png]] »&amp;nbsp;:&amp;#32;Version du 27 janvier 2010 à 11:14 rétablie</comment>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>407</id>
      <parentid>406</parentid>
      <timestamp>2010-01-27T11:17:50Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <comment>a téléversé une nouvelle version de « [[Fichier:Wmii1.png]] »</comment>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>408</id>
      <parentid>407</parentid>
      <timestamp>2010-01-27T11:19:57Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <comment>a téléversé une nouvelle version de « [[Fichier:Wmii1.png]] »&amp;nbsp;:&amp;#32;Version du 27 janvier 2010 à 11:16 rétablie</comment>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Wmii2.png</title>
    <ns>6</ns>
    <id>70</id>
    <revision>
      <id>288</id>
      <timestamp>2010-01-26T06:30:04Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <comment>Le bureau nu, avec conky...</comment>
      <text xml:space="preserve" bytes="27">Le bureau nu, avec conky...</text>
      <sha1>n75jw2a9s1jwiw7dl86w76r256860z1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Wmii3.png</title>
    <ns>6</ns>
    <id>71</id>
    <revision>
      <id>289</id>
      <timestamp>2010-01-26T06:30:55Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <comment>Avec Gimp en mode flottant</comment>
      <text xml:space="preserve" bytes="26">Avec Gimp en mode flottant</text>
      <sha1>qks6ssk1qri40dz7znt9geijaj5vfgp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Wmii4.png</title>
    <ns>6</ns>
    <id>94</id>
    <revision>
      <id>382</id>
      <timestamp>2010-01-27T08:02:41Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <comment>Avec Gimp en mode normal</comment>
      <text xml:space="preserve" bytes="24">Avec Gimp en mode normal</text>
      <sha1>8wonyu8jy6eowknkgh09912ti59iitu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Xconfig.jpeg</title>
    <ns>6</ns>
    <id>560</id>
    <revision>
      <id>2320</id>
      <timestamp>2010-11-20T08:01:34Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Xen1.png</title>
    <ns>6</ns>
    <id>1277</id>
    <revision>
      <id>5323</id>
      <timestamp>2013-08-03T16:32:43Z</timestamp>
      <contributor>
        <username>Agentsteel</username>
        <id>260</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Xen2.png</title>
    <ns>6</ns>
    <id>1278</id>
    <revision>
      <id>5324</id>
      <timestamp>2013-08-03T16:35:22Z</timestamp>
      <contributor>
        <username>Agentsteel</username>
        <id>260</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Xen3.png</title>
    <ns>6</ns>
    <id>1279</id>
    <revision>
      <id>5325</id>
      <timestamp>2013-08-03T16:40:11Z</timestamp>
      <contributor>
        <username>Agentsteel</username>
        <id>260</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Xserver-xephyr 1.12.4-6 i386.deb.tar</title>
    <ns>6</ns>
    <id>1232</id>
    <revision>
      <id>5074</id>
      <timestamp>2013-03-31T00:40:32Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <comment>version 2:1.12.4-6 pour 32 bits</comment>
      <text xml:space="preserve" bytes="31">version 2:1.12.4-6 pour 32 bits</text>
      <sha1>6q1ry6m5ee7nqxuf1wylvteu5yj3tl5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Xserver-xephyr 1.12.4-6.1 amd64.deb.tar</title>
    <ns>6</ns>
    <id>1246</id>
    <revision>
      <id>5113</id>
      <timestamp>2013-04-25T21:30:15Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Yaptitude.tar</title>
    <ns>6</ns>
    <id>491</id>
    <revision>
      <id>1931</id>
      <timestamp>2010-08-14T12:51:44Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Yapyt rechargement.png</title>
    <ns>6</ns>
    <id>847</id>
    <revision>
      <id>3464</id>
      <timestamp>2011-09-10T14:56:26Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <comment>Il faut recharger la liste des paquets</comment>
      <text xml:space="preserve" bytes="38">Il faut recharger la liste des paquets</text>
      <sha1>hi8s01ibtlzhc59dy46kminqnlxqm93</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Yapyt-aide.png</title>
    <ns>6</ns>
    <id>850</id>
    <revision>
      <id>3467</id>
      <timestamp>2011-09-10T15:10:50Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Yapyt-choix.png</title>
    <ns>6</ns>
    <id>848</id>
    <revision>
      <id>3465</id>
      <timestamp>2011-09-10T15:03:42Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <comment>exemple de choix avec yapyt</comment>
      <text xml:space="preserve" bytes="27">exemple de choix avec yapyt</text>
      <sha1>krymrd1d3toc1l9fwf05d2y5bx65mrb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Yapyt-versions.png</title>
    <ns>6</ns>
    <id>849</id>
    <revision>
      <id>3466</id>
      <timestamp>2011-09-10T15:09:51Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Zabbix 01.png</title>
    <ns>6</ns>
    <id>961</id>
    <revision>
      <id>3939</id>
      <timestamp>2012-03-14T07:47:28Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Zabbix 1-1.png</title>
    <ns>6</ns>
    <id>944</id>
    <revision>
      <id>3922</id>
      <timestamp>2012-03-14T07:43:51Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Zabbix 10.png</title>
    <ns>6</ns>
    <id>953</id>
    <revision>
      <id>3931</id>
      <timestamp>2012-03-14T07:43:52Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Zabbix 11.png</title>
    <ns>6</ns>
    <id>954</id>
    <revision>
      <id>3932</id>
      <timestamp>2012-03-14T07:45:18Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Zabbix 12.png</title>
    <ns>6</ns>
    <id>955</id>
    <revision>
      <id>3933</id>
      <timestamp>2012-03-14T07:45:18Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Zabbix 13.png</title>
    <ns>6</ns>
    <id>956</id>
    <revision>
      <id>3934</id>
      <timestamp>2012-03-14T07:45:18Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Zabbix 14.png</title>
    <ns>6</ns>
    <id>957</id>
    <revision>
      <id>3935</id>
      <timestamp>2012-03-14T07:45:18Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Zabbix 15.png</title>
    <ns>6</ns>
    <id>958</id>
    <revision>
      <id>3936</id>
      <timestamp>2012-03-14T07:45:18Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Zabbix 16.png</title>
    <ns>6</ns>
    <id>959</id>
    <revision>
      <id>3937</id>
      <timestamp>2012-03-14T07:45:18Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Zabbix 2.png</title>
    <ns>6</ns>
    <id>945</id>
    <revision>
      <id>3923</id>
      <timestamp>2012-03-14T07:43:51Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Zabbix 3.png</title>
    <ns>6</ns>
    <id>946</id>
    <revision>
      <id>3924</id>
      <timestamp>2012-03-14T07:43:51Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Zabbix 4.png</title>
    <ns>6</ns>
    <id>947</id>
    <revision>
      <id>3925</id>
      <timestamp>2012-03-14T07:43:51Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Zabbix 5.png</title>
    <ns>6</ns>
    <id>948</id>
    <revision>
      <id>3926</id>
      <timestamp>2012-03-14T07:43:51Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Zabbix 6.png</title>
    <ns>6</ns>
    <id>949</id>
    <revision>
      <id>3927</id>
      <timestamp>2012-03-14T07:43:51Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Zabbix 7.png</title>
    <ns>6</ns>
    <id>950</id>
    <revision>
      <id>3928</id>
      <timestamp>2012-03-14T07:43:51Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Zabbix 8.png</title>
    <ns>6</ns>
    <id>951</id>
    <revision>
      <id>3929</id>
      <timestamp>2012-03-14T07:43:51Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fichier:Zabbix 9.png</title>
    <ns>6</ns>
    <id>952</id>
    <revision>
      <id>3930</id>
      <timestamp>2012-03-14T07:43:51Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Filter:Action</title>
    <ns>170</ns>
    <id>1024</id>
    <revision>
      <id>4316</id>
      <timestamp>2012-06-03T09:45:18Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>Page créée avec « Ce filtre couvre la propriété [[Covers property::Action]]. Étiqueté [[Has label::Action(s) principale(s) :]]. »</comment>
      <text xml:space="preserve" bytes="113">Ce filtre couvre la propriété [[Covers property::Action]]. Étiqueté [[Has label::Action(s) principale(s) :]].</text>
      <sha1>87bp8iqrdt6d9wx12ydelbjm4mp4gxe</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4318</id>
      <parentid>4316</parentid>
      <timestamp>2012-06-03T09:46:56Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="112">Ce filtre couvre la propriété [[Covers property::Action]]. Étiqueté [[Has label::Action(s) principale(s) ]].</text>
      <sha1>ewuwlzo9ynin7tukf00tfisqssaie4l</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Filter:Protocole</title>
    <ns>170</ns>
    <id>1023</id>
    <revision>
      <id>4315</id>
      <timestamp>2012-06-03T09:44:30Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>Page créée avec « Ce filtre couvre la propriété [[Covers property::Protocole]]. Étiqueté [[Has label::Protocole(s) utilisé(s) :]]. »</comment>
      <text xml:space="preserve" bytes="117">Ce filtre couvre la propriété [[Covers property::Protocole]]. Étiqueté [[Has label::Protocole(s) utilisé(s) :]].</text>
      <sha1>c0vl91f8c3ahf7epcuswo4ki5av7to6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4319</id>
      <parentid>4315</parentid>
      <timestamp>2012-06-03T09:47:20Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="116">Ce filtre couvre la propriété [[Covers property::Protocole]]. Étiqueté [[Has label::Protocole(s) utilisé(s) ]].</text>
      <sha1>1bi01tgfnon83vtcbuztro5uft6ib3a</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Filter:Version debian</title>
    <ns>170</ns>
    <id>1025</id>
    <revision>
      <id>4317</id>
      <timestamp>2012-06-03T09:45:44Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>Page créée avec « Ce filtre couvre la propriété [[Covers property::Version debian]]. »</comment>
      <text xml:space="preserve" bytes="68">Ce filtre couvre la propriété [[Covers property::Version debian]].</text>
      <sha1>9h2oi5mjnl35t8dpz39gn0nkyg4i8os</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Flash</title>
    <ns>0</ns>
    <id>845</id>
    <revision>
      <id>3443</id>
      <timestamp>2011-09-01T14:04:17Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <comment>Page créée avec « Cette page a pour but de vous aider à faire fonctionner le plugin flash afin de pouvoir lire videos ou autres animations sur la toile.  == Alternative libre ==  Contrairemen... »</comment>
      <text xml:space="preserve" bytes="1782">Cette page a pour but de vous aider à faire fonctionner le plugin flash afin de pouvoir lire videos ou autres animations sur la toile.

== Alternative libre ==

Contrairement à ce que vous pouvez penser, il existe des solutions entièrement libres (donc fiables) afin d'utiliser flash.

=== Gnash ===

Gnash supporte à ce jour très bien les vidéos sur Youtube, et la plupart des animations incluses dans certains sites.

==== Installation ====
Tout simplement, installez le paquet browser-plugin-gnash

==== Astuces ====
Vous pouvez faire en sorte que gnash &quot;démarre en mode pause&quot;. Cela vous évite de devoir charger chaque applet flash sur les pages que vous visitez (entre autre les pubs). Il suffira alors de cliquer pour la lire sur l'animation flash. Cette astuce fonctionne avec tous les navigateurs : goodbye flashblock sur firefox :) .

Procédez ainsi : clic droit sur une animation flash -&gt; Éditer -&gt; Préférences.
Dans l'onglet &quot;Lecteur&quot; tout en bas, cochez &quot;Démarrer Gnash en mode pause .

== Alternative propriétaire ==

=== flashplugin-nonfree ===
Comme son nom l'indique, ce plugin n'est pas libre, c'est donc à vos risques et périls que vous l'utilisez, vous ne pouvez pas savoir les informations qu'il peut envoyer à des tiers sur l'utilisation que vous en faîtes.

==== Installation ====
Installez le paquet flashplugin-nonfree.

== Plus d'infos ==
* http://wiki.debian.org/Flash
* http://wiki.debian.org/FlashPlayer

=== Outils pour télécharger les vidéos ===

Ces outils vous permettront uniquement de télécharger les vidéos, afin de les voir ensuite avec votre lecteur vidéo favori

* clive
* cclive
* get-flash-videos

Chacun d'entre eux s'utilise ainsi : 
 nom_du_programme www.adresseDeLaVideo.com




[[Catégorie:Navigation Internet]]</text>
      <sha1>f8xv2slzj9e9u7j1b1c6waoadxix3k1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3444</id>
      <parentid>3443</parentid>
      <timestamp>2011-09-01T14:04:53Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="1784">Cette page a pour but de vous aider à faire fonctionner le plugin flash afin de pouvoir lire videos ou autres animations sur la toile.

== Alternative libre ==

Contrairement à ce que vous pouvez penser, il existe des solutions entièrement libres (donc fiables) afin d'utiliser flash.

=== Gnash ===

Gnash supporte à ce jour très bien les vidéos sur Youtube, et la plupart des animations incluses dans certains sites.

==== Installation ====
Tout simplement, installez le paquet browser-plugin-gnash

==== Astuces ====
Vous pouvez faire en sorte que gnash &quot;démarre en mode pause&quot;. Cela vous évite de devoir charger chaque applet flash sur les pages que vous visitez (entre autre les pubs). Il suffira alors de cliquer pour la lire sur l'animation flash. Cette astuce fonctionne avec tous les navigateurs : goodbye flashblock sur firefox :) .

Procédez ainsi : clic droit sur une animation flash -&gt; Éditer -&gt; Préférences.
Dans l'onglet &quot;Lecteur&quot; tout en bas, cochez &quot;Démarrer Gnash en mode pause .

=== Outils pour télécharger les vidéos ===

Ces outils vous permettront uniquement de télécharger les vidéos, afin de les voir ensuite avec votre lecteur vidéo favori

* clive
* cclive
* get-flash-videos

Chacun d'entre eux s'utilise ainsi : 
 nom_du_programme www.adresseDeLaVideo.com

== Alternative propriétaire ==

=== flashplugin-nonfree ===
Comme son nom l'indique, ce plugin n'est pas libre, c'est donc à vos risques et périls que vous l'utilisez, vous ne pouvez pas savoir les informations qu'il peut envoyer à des tiers sur l'utilisation que vous en faîtes.

==== Installation ====
Installez le paquet flashplugin-nonfree.

== Plus d'infos ==
* http://wiki.debian.org/Flash
* http://wiki.debian.org/FlashPlayer






[[Catégorie:Navigation Internet]]</text>
      <sha1>eym5na3cc1y2hqioc7lbd528dqq4ol0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4725</id>
      <parentid>3444</parentid>
      <timestamp>2012-11-05T10:04:48Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Changer d'alternative</comment>
      <text xml:space="preserve" bytes="2563">Cette page a pour but de vous aider à faire fonctionner le plugin flash afin de pouvoir lire videos ou autres animations sur la toile.

== Alternative libre ==

Contrairement à ce que vous pouvez penser, il existe des solutions entièrement libres (donc fiables) afin d'utiliser flash.

=== Gnash ===

Gnash supporte à ce jour très bien les vidéos sur Youtube, et la plupart des animations incluses dans certains sites.

==== Installation ====
Tout simplement, installez le paquet browser-plugin-gnash

==== Astuces ====
Vous pouvez faire en sorte que gnash &quot;démarre en mode pause&quot;. Cela vous évite de devoir charger chaque applet flash sur les pages que vous visitez (entre autre les pubs). Il suffira alors de cliquer pour la lire sur l'animation flash. Cette astuce fonctionne avec tous les navigateurs : goodbye flashblock sur firefox :) .

Procédez ainsi : clic droit sur une animation flash -&gt; Éditer -&gt; Préférences.
Dans l'onglet &quot;Lecteur&quot; tout en bas, cochez &quot;Démarrer Gnash en mode pause .

=== Outils pour télécharger les vidéos ===

Ces outils vous permettront uniquement de télécharger les vidéos, afin de les voir ensuite avec votre lecteur vidéo favori

* clive
* cclive
* get-flash-videos

Chacun d'entre eux s'utilise ainsi : 
 nom_du_programme www.adresseDeLaVideo.com

== Alternative propriétaire ==

===flashplugin-nonfree===
Comme son nom l'indique, ce plugin n'est pas libre, c'est donc à vos risques et périls que vous l'utilisez, vous ne pouvez pas savoir les informations qu'il peut envoyer à des tiers sur l'utilisation que vous en faîtes.

====Installation====
Installez le paquet flashplugin-nonfree.

==Changer d'alternative==

Pour changer d'alternative, il suffit de taper la commande suivante:

&lt;pre&gt;
# update-alternatives --config java
Il existe 3 choix pour l'alternative java (qui fournit /usr/bin/java).

  Sélection   Chemin                                    Priorité  État
------------------------------------------------------------
  0            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      mode automatique
  1            /usr/bin/gij-4.4                           1044      mode manuel
  2            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      mode manuel
* 3            /usr/lib/jvm/java-6-sun/jre/bin/java       63        mode manuel

Appuyez sur &lt;Entrée&gt; pour conserver la valeur par défaut[*] ou choisissez le numéro sélectionné :
&lt;/pre&gt;

== Plus d'infos ==
* http://wiki.debian.org/Flash
* http://wiki.debian.org/FlashPlayer






[[Catégorie:Navigation Internet]]</text>
      <sha1>agzdyuchw5ecfk3t96gt0p5mggc2cnc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4745</id>
      <parentid>4725</parentid>
      <timestamp>2012-11-11T06:46:27Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Changer d'alternative */ Erreur de commande</comment>
      <text xml:space="preserve" bytes="2966">Cette page a pour but de vous aider à faire fonctionner le plugin flash afin de pouvoir lire videos ou autres animations sur la toile.

== Alternative libre ==

Contrairement à ce que vous pouvez penser, il existe des solutions entièrement libres (donc fiables) afin d'utiliser flash.

=== Gnash ===

Gnash supporte à ce jour très bien les vidéos sur Youtube, et la plupart des animations incluses dans certains sites.

==== Installation ====
Tout simplement, installez le paquet browser-plugin-gnash

==== Astuces ====
Vous pouvez faire en sorte que gnash &quot;démarre en mode pause&quot;. Cela vous évite de devoir charger chaque applet flash sur les pages que vous visitez (entre autre les pubs). Il suffira alors de cliquer pour la lire sur l'animation flash. Cette astuce fonctionne avec tous les navigateurs : goodbye flashblock sur firefox :) .

Procédez ainsi : clic droit sur une animation flash -&gt; Éditer -&gt; Préférences.
Dans l'onglet &quot;Lecteur&quot; tout en bas, cochez &quot;Démarrer Gnash en mode pause .

=== Outils pour télécharger les vidéos ===

Ces outils vous permettront uniquement de télécharger les vidéos, afin de les voir ensuite avec votre lecteur vidéo favori

* clive
* cclive
* get-flash-videos

Chacun d'entre eux s'utilise ainsi : 
 nom_du_programme www.adresseDeLaVideo.com

== Alternative propriétaire ==

===flashplugin-nonfree===
Comme son nom l'indique, ce plugin n'est pas libre, c'est donc à vos risques et périls que vous l'utilisez, vous ne pouvez pas savoir les informations qu'il peut envoyer à des tiers sur l'utilisation que vous en faîtes.

====Installation====
Installez le paquet flashplugin-nonfree.

==Changer d'alternative==

Pour afficher la version utilisée:

&lt;pre&gt;
# update-alternatives --display flash-mozilla.so
flash-mozilla.so - mode manuel
 le lien pointe actuellement sur /usr/lib/gnash/libgnashplugin.so
/usr/lib/flashplayer-mozilla/libflashplayer.so - priorité 10
/usr/lib/gnash/libgnashplugin.so - priorité 10
La « meilleure » version actuelle est « /usr/lib/flashplayer-mozilla/libflashplayer.so ».
&lt;/pre&gt;


Pour changer d'alternative, il suffit de taper la commande suivante:

&lt;pre&gt;
# update-alternatives --config flash-mozilla.so
Il existe 2 choix pour l'alternative flash-mozilla.so (qui fournit /usr/lib/mozilla/plugins/flash-mozilla.so).

  Sélection   Chemin                                          Priorité  État
------------------------------------------------------------
  0            /usr/lib/flashplayer-mozilla/libflashplayer.so   10        mode automatique
  1            /usr/lib/flashplayer-mozilla/libflashplayer.so   10        mode manuel
* 2            /usr/lib/gnash/libgnashplugin.so                 10        mode manuel

Appuyez sur &lt;Entrée&gt; pour conserver la valeur par défaut[*] ou choisissez le numéro sélectionné :
&lt;/pre&gt;

== Plus d'infos ==
* http://wiki.debian.org/Flash
* http://wiki.debian.org/FlashPlayer






[[Catégorie:Navigation Internet]]</text>
      <sha1>56wmq2mm8r89el3brhde2u9gfiytmsc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5788</id>
      <parentid>4745</parentid>
      <timestamp>2014-08-25T00:12:09Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="3556">Cette page a pour but de vous aider à faire fonctionner le greffon Flash afin de pouvoir lire vidéos et autres animations sur la toile.

== Alternative libre ==

Contrairement à ce que vous pourriez penser, il existe des solutions entièrement libres (donc fiables) afin d'utiliser Flash.

=== Gnash ===

Gnash supporte à ce jour très bien les vidéos sur Youtube, et la plupart des animations incluses dans certains sites.

Il supporte totalement la version 7 de Flash, et partiellement les versions 8 et 9. Les versions 10 et 11 ne sont pas supportées.

==== Installation ====
Tout simplement, installez le paquet [https://packages.debian.org/stable/browser-plugin-gnash browser-plugin-gnash].

==== Astuces ====
Vous pouvez faire en sorte que gnash démarre &quot;en mode pause&quot;. Cela vous évite de devoir charger chaque applet Flash sur les pages que vous visitez (entre autre les publicités). Il suffira alors pour la lire de cliquer sur l'animation Flash.

Cette astuce fonctionne avec tous les navigateurs : goodbye flashblock sur firefox :) .

Procédez ainsi : clic droit sur une animation flash -&gt; Éditer -&gt; Préférences.
Dans l'onglet &quot;Lecteur&quot; tout en bas, cochez &quot;Démarrer Gnash en mode pause&quot;.

=== Outils pour télécharger les vidéos ===

Ces outils vous permettront uniquement de télécharger les vidéos, afin de les voir ensuite avec votre lecteur vidéo favori

* [https://packages.debian.org/stable/clive clive]
* [https://packages.debian.org/stable/cclive cclive]
* [https://packages.debian.org/stable/get-flash-videos get-flash-videos]

Chacun d'entre eux s'utilise de la même façon : 
 nom_du_programme &quot;http://www.adresse-de-la-vidéo.com/&quot;

== Alternative propriétaire ==

===flashplugin-nonfree===
Comme son nom l'indique, ce greffon n'est pas libre, c'est donc à vos risques et périls que vous l'utilisez. Vous ne pouvez pas connaître les informations qu'il peut envoyer à des tiers sur l'utilisation que vous en faites.

====Installation====
Installez le paquet [https://packages.debian.org/stable/flashplugin-nonfree flashplugin-nonfree].

Vous aurez besoin pour ça d’avoir au préalable ajouté les dépôts &quot;contrib&quot; au fichier [[Sources_de_paquets_:_les_bases|/etc/apt/sources.list]].

==Changer d'alternative==

Pour afficher la version utilisée :

&lt;pre&gt;
# update-alternatives --display flash-mozilla.so
flash-mozilla.so - mode manuel
 le lien pointe actuellement sur /usr/lib/gnash/libgnashplugin.so
/usr/lib/flashplayer-mozilla/libflashplayer.so - priorité 10
/usr/lib/gnash/libgnashplugin.so - priorité 10
La « meilleure » version actuelle est « /usr/lib/flashplayer-mozilla/libflashplayer.so ».
&lt;/pre&gt;


Pour changer d'alternative, il suffit de taper la commande suivante :

&lt;pre&gt;
# update-alternatives --config flash-mozilla.so
Il existe 2 choix pour l'alternative flash-mozilla.so (qui fournit /usr/lib/mozilla/plugins/flash-mozilla.so).

  Sélection   Chemin                                          Priorité  État
------------------------------------------------------------
  0            /usr/lib/flashplayer-mozilla/libflashplayer.so   10        mode automatique
  1            /usr/lib/flashplayer-mozilla/libflashplayer.so   10        mode manuel
* 2            /usr/lib/gnash/libgnashplugin.so                 10        mode manuel

Appuyez sur &lt;Entrée&gt; pour conserver la valeur par défaut[*] ou choisissez le numéro sélectionné :
&lt;/pre&gt;

== Plus d'infos ==
* http://wiki.debian.org/Flash
* http://wiki.debian.org/FlashPlayer






[[Catégorie:Navigation Internet]]</text>
      <sha1>49im86uvktkp5zyj0qvgfqfnvpipsbg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Flux de forum.debian-fr.org</title>
    <ns>0</ns>
    <id>873</id>
    <revision>
      <id>3582</id>
      <timestamp>2011-11-22T11:19:14Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « '''Les derniers messages sur forum.debian-fr.org'''  &lt;rss&gt;http://www.debian-fr.org/rss/digest/rss.xml&lt;/rss&gt; »</comment>
      <text xml:space="preserve" bytes="107">'''Les derniers messages sur forum.debian-fr.org'''

&lt;rss&gt;http://www.debian-fr.org/rss/digest/rss.xml&lt;/rss&gt;</text>
      <sha1>sj08jpq793cdorzqxbd87b4b6yt4ks2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fluxbox</title>
    <ns>0</ns>
    <id>32</id>
    <revision>
      <id>56</id>
      <timestamp>2010-01-21T19:58:05Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <comment>tadaaa</comment>
      <text xml:space="preserve" bytes="5235">{{sid}}

Fluxbox est un gestionnaire de fenêtres (window manager), au même titre de Kwin(KDE), Compiz, xcompmgr, openbox (et tant d'autres).

Sa particularité est de n'avoir presque aucune suite logicielle (il ne dépend que des librairies standart, ou presque) ce qui fait qu'il est très léger.
Il est entièrement configurable et modelable, en passant par des fichiers de configuration . Il est si léger qu'il se lance en à peine quelques secondes (et c'est un euphémisme) après l'écran de connection

Pour l'installer:

 # apt-get install fluxbox 

Tous les fichiers de configuration sont situés dans le dossier ~/.fluxbox/

On y trouve les fichiers :

* .fluxbox/init : Sont regroupées diverses informations sur les dimensions , les couleurs, les chemins d'accès ...
* .fluxbox/keys : Racourcis clavier .
* .fluxbox/lastwallpaper : le nom est assez clair, dans ce fichier se trouve le chemin d'accès au dernier wallpaper utilisé . On y touche pas, on utilisera une commande spécifique
* .fluxbox/log : ... pas besoin d'expliquer
* .fluxbox/menu : Fichier de conf du menu, très simple à comprendre et à utiliser.
* .fluxbox/slitlist : aucune idée
* .fluxbox/startup : Fichier où tous les programmes devant être lancés au démarrage de fluxbox seront mis . L'ordre des commandes est très important : elles seront effectuées dans l'ordre où elles sont dans le fichier . Notez que fluxbox est lancé en dernier : Toute commande écrite après ne sera pas effectuée .

Et les dossiers:

* .fluxbox/backgrounds/ : Tous les fonds d'écrans utilisés par les thèmes sont là .
* .fluxbox/buttons/ : Tous les boutons utilisés par les thèmes sont là.
* .fluxbox/pixmaps/ : Toutes les images utilisés par les thèmes sont là .
* .fluxbox/styles/ : Tous les fichiers de configuration des thèmes sont là .

Il y a des thèmes d'origine avec Fluxbox , mais leurs fichiers de configuration et les images qu'ils utilisent ne sont pas placées dans le répertoire utilisateur, vu qu'ils doivent être visible par tous les utilisateurs. Ils sont placés dans le dossier /usr/share/fluxbox/styles/

Je vais vous détailler la syntaxe de chaque fichier:
=== Keys ===
La syntaxe est la suivante:

 &lt;touche&gt; &lt;touche&gt; [&lt;touche&gt;] : &lt;effet&gt;

==== Noms des touches ====

* Super : touche &quot;Windows&quot;
* Mod1 : Alt Gauche
* Mod2 : Alt Droite
* Shift : Shift
* Tab : Tabulation
* Control : Ctrl
* OnDesktop : Lorsque la souris pointe sur le fond d'écran
* Mouse1 : Clic gauche
* Mouse2 : Clic Gauche + Clic droit simultané ou clic sur la molette
* Mouse3 : Clic droit
* Mouse4 : Bouton de tranche (précédent et suivant)
* Mouse5 : Bouton de tranche
* F1,F2[...],F12 : Touches fonctions

Par exemple, pour [Touche Windows + Alt Gauche] :

 Super Mod1 : MyEffect

Le nom de chaque touche peut être retrouvé avec l'utilitaire '''xev''' installé par défaut avec le serveur X11.

lancez xev dans un terminal, mettez la fenêtre qui s'ouvre au premier plan, tapez la touche dont vous ne connaissez pas l'apellation, et regardez son nom qui apparait dans le terminal.

Vous pouvez, ensuite, reporter ce nom dans le fichier keys. Par exemple:

 None XF86PowerOff: exec gksu shutdown -h now

==== Noms des effets ====

* HideMenus : Cache les menus
* WorkspaceMenu : Menu des espaces de travail
* RootMenu : menu des applications ( voir explications sur le fichier ~/.fluxbox/menu )
* NextWorkspace : Espace de travail suivant ( si on est au 2ème, on passe au 3ème :p )
* PrevWorkspace : Espace de travail précédent
* NextWindow : fenêtre d'après, le n° des fenetre est défini dans l'ordre d'ouverture des fenêtres
* PrevWindow : fenêtre d'avant
* Workspace 1,2,3...12 : Se déplacer vers l'Espace de travail X

Par exemple, si on veut changer d'espace de travail en faisant [alt + FX]

 Mod1 F1: Workspace 1 # Amène à l'espace de travail 1

=== Menu ===
Il faut d'abord, pour pouvoir l'utiliser, modifier ~/.fluxbox/init à la ligne session.menuFile si le chemin n'est pas ~/.fluxbox/menu remplacer le chemin existant par ça .
Ce fichier de configuration est extrèmement simple à comprendre et à utiliser :

 [begin] (Titre que vous voulez donner à votre menu) # commentaire
      [submenu] (Nom du sous-menu) {} # encore un commentaire
             [exec] (conquereur de l espace) {konqueror} &lt;/usr/share/pixmaps/mon-icone.xpm&gt;
             [exec] (blah blah) {pidgin} &lt;/usr/share/pixmaps/mon-icone.png&gt;
             [submenu] (Nom de mon sous-sous-menu) {}
                    [exec] (Nom de mon appli) {mon_appli} &lt;/chemin/de/mon/image&gt;
             [end]
      [end]
      [config] (Configuration)
      [submenu] (Styles) {}
             [stylesdir] (/usr/share/fluxbox/styles)
             [stylesdir] (~/.fluxbox/styles)
      [end]
      [workspaces] (Workspaces)
      [reconfig] (Reconfigure)
      [restart] (Restart)
      [exit] (Exit)
 [end]

Ce qui est écrit ci-dessus suffit largement pour comprendre, on ne s'étendra pas sur ce point.
Si vous gardez le menu d'origine, il sera actualisé à chaque installation de logiciel.

''A finir ...''

===== Sources =====

*http://louis-c.myftp.org/blog/index.php?post/FluxBox . Ce document a été recopié avec l'autorisation expresse de son auteur.</text>
      <sha1>lup1oeyx85ptn9wzzkg04ixdb0pxjsn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>57</id>
      <parentid>56</parentid>
      <timestamp>2010-01-21T19:59:02Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <minor/>
      <comment>ajout de catégorie</comment>
      <text xml:space="preserve" bytes="5278">{{sid}}

Fluxbox est un gestionnaire de fenêtres (window manager), au même titre de Kwin(KDE), Compiz, xcompmgr, openbox (et tant d'autres).

Sa particularité est de n'avoir presque aucune suite logicielle (il ne dépend que des librairies standart, ou presque) ce qui fait qu'il est très léger.
Il est entièrement configurable et modelable, en passant par des fichiers de configuration . Il est si léger qu'il se lance en à peine quelques secondes (et c'est un euphémisme) après l'écran de connection

Pour l'installer:

 # apt-get install fluxbox 

Tous les fichiers de configuration sont situés dans le dossier ~/.fluxbox/

On y trouve les fichiers :

* .fluxbox/init : Sont regroupées diverses informations sur les dimensions , les couleurs, les chemins d'accès ...
* .fluxbox/keys : Racourcis clavier .
* .fluxbox/lastwallpaper : le nom est assez clair, dans ce fichier se trouve le chemin d'accès au dernier wallpaper utilisé . On y touche pas, on utilisera une commande spécifique
* .fluxbox/log : ... pas besoin d'expliquer
* .fluxbox/menu : Fichier de conf du menu, très simple à comprendre et à utiliser.
* .fluxbox/slitlist : aucune idée
* .fluxbox/startup : Fichier où tous les programmes devant être lancés au démarrage de fluxbox seront mis . L'ordre des commandes est très important : elles seront effectuées dans l'ordre où elles sont dans le fichier . Notez que fluxbox est lancé en dernier : Toute commande écrite après ne sera pas effectuée .

Et les dossiers:

* .fluxbox/backgrounds/ : Tous les fonds d'écrans utilisés par les thèmes sont là .
* .fluxbox/buttons/ : Tous les boutons utilisés par les thèmes sont là.
* .fluxbox/pixmaps/ : Toutes les images utilisés par les thèmes sont là .
* .fluxbox/styles/ : Tous les fichiers de configuration des thèmes sont là .

Il y a des thèmes d'origine avec Fluxbox , mais leurs fichiers de configuration et les images qu'ils utilisent ne sont pas placées dans le répertoire utilisateur, vu qu'ils doivent être visible par tous les utilisateurs. Ils sont placés dans le dossier /usr/share/fluxbox/styles/

Je vais vous détailler la syntaxe de chaque fichier:
=== Keys ===
La syntaxe est la suivante:

 &lt;touche&gt; &lt;touche&gt; [&lt;touche&gt;] : &lt;effet&gt;

==== Noms des touches ====

* Super : touche &quot;Windows&quot;
* Mod1 : Alt Gauche
* Mod2 : Alt Droite
* Shift : Shift
* Tab : Tabulation
* Control : Ctrl
* OnDesktop : Lorsque la souris pointe sur le fond d'écran
* Mouse1 : Clic gauche
* Mouse2 : Clic Gauche + Clic droit simultané ou clic sur la molette
* Mouse3 : Clic droit
* Mouse4 : Bouton de tranche (précédent et suivant)
* Mouse5 : Bouton de tranche
* F1,F2[...],F12 : Touches fonctions

Par exemple, pour [Touche Windows + Alt Gauche] :

 Super Mod1 : MyEffect

Le nom de chaque touche peut être retrouvé avec l'utilitaire '''xev''' installé par défaut avec le serveur X11.

lancez xev dans un terminal, mettez la fenêtre qui s'ouvre au premier plan, tapez la touche dont vous ne connaissez pas l'apellation, et regardez son nom qui apparait dans le terminal.

Vous pouvez, ensuite, reporter ce nom dans le fichier keys. Par exemple:

 None XF86PowerOff: exec gksu shutdown -h now

==== Noms des effets ====

* HideMenus : Cache les menus
* WorkspaceMenu : Menu des espaces de travail
* RootMenu : menu des applications ( voir explications sur le fichier ~/.fluxbox/menu )
* NextWorkspace : Espace de travail suivant ( si on est au 2ème, on passe au 3ème :p )
* PrevWorkspace : Espace de travail précédent
* NextWindow : fenêtre d'après, le n° des fenetre est défini dans l'ordre d'ouverture des fenêtres
* PrevWindow : fenêtre d'avant
* Workspace 1,2,3...12 : Se déplacer vers l'Espace de travail X

Par exemple, si on veut changer d'espace de travail en faisant [alt + FX]

 Mod1 F1: Workspace 1 # Amène à l'espace de travail 1

=== Menu ===
Il faut d'abord, pour pouvoir l'utiliser, modifier ~/.fluxbox/init à la ligne session.menuFile si le chemin n'est pas ~/.fluxbox/menu remplacer le chemin existant par ça .
Ce fichier de configuration est extrèmement simple à comprendre et à utiliser :

 [begin] (Titre que vous voulez donner à votre menu) # commentaire
      [submenu] (Nom du sous-menu) {} # encore un commentaire
             [exec] (conquereur de l espace) {konqueror} &lt;/usr/share/pixmaps/mon-icone.xpm&gt;
             [exec] (blah blah) {pidgin} &lt;/usr/share/pixmaps/mon-icone.png&gt;
             [submenu] (Nom de mon sous-sous-menu) {}
                    [exec] (Nom de mon appli) {mon_appli} &lt;/chemin/de/mon/image&gt;
             [end]
      [end]
      [config] (Configuration)
      [submenu] (Styles) {}
             [stylesdir] (/usr/share/fluxbox/styles)
             [stylesdir] (~/.fluxbox/styles)
      [end]
      [workspaces] (Workspaces)
      [reconfig] (Reconfigure)
      [restart] (Restart)
      [exit] (Exit)
 [end]

Ce qui est écrit ci-dessus suffit largement pour comprendre, on ne s'étendra pas sur ce point.
Si vous gardez le menu d'origine, il sera actualisé à chaque installation de logiciel.

''A finir ...''

===== Sources =====

*http://louis-c.myftp.org/blog/index.php?post/FluxBox . Ce document a été recopié avec l'autorisation expresse de son auteur.

[[Catégorie:Gestionnaires de fenêtres]]</text>
      <sha1>l8wvj4g209kq5ch6n98f3tdd145aiuf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>452</id>
      <parentid>57</parentid>
      <timestamp>2010-01-28T20:12:52Z</timestamp>
      <contributor>
        <username>Wetaskiwin</username>
        <id>10</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="5284">{{sid}}

Fluxbox est un gestionnaire de fenêtres (window manager), au même titre de Kwin(KDE), Compiz, xcompmgr, openbox (et tant d'autres).

Sa particularité est de n'avoir presque aucune suite logicielle (il ne dépend que des librairies standart, ou presque) ce qui fait qu'il est très léger.
Il est entièrement configurable et modelable, en passant par des fichiers de configuration. Il est si léger qu'il se lance en à peine quelques secondes (et c'est un euphémisme) après l'écran de connexion

Pour l'installer :

 # apt-get install fluxbox 

Tous les fichiers de configuration sont situés dans le dossier ~/.fluxbox/

On y trouve les fichiers :

* .fluxbox/init : Sont regroupées diverses informations sur les dimensions, les couleurs, les chemins d'accès...
* .fluxbox/keys : Racourcis clavier.
* .fluxbox/lastwallpaper : Le nom est assez clair. Dans ce fichier se trouve le chemin d'accès au dernier wallpaper utilisé. On n'y touche pas, on utilisera une commande spécifique.
* .fluxbox/log : ... Pas besoin d'expliquer.
* .fluxbox/menu : Fichier de configuration du menu, très simple à comprendre et à utiliser.
* .fluxbox/slitlist : Aucune idée.
* .fluxbox/startup : Fichier où seront mis tous les programmes devant être lancés au démarrage de fluxbox. L'ordre des commandes est très important : elles seront effectuées dans l'ordre où elles sont dans le fichier. Notez que fluxbox est lancé en dernier : toute commande écrite après ne sera pas effectuée.

Et les dossiers:

* .fluxbox/backgrounds/ : Tous les fonds d'écrans utilisés par les thèmes sont là.
* .fluxbox/buttons/ : Tous les boutons utilisés par les thèmes sont là.
* .fluxbox/pixmaps/ : Toutes les images utilisés par les thèmes sont là.
* .fluxbox/styles/ :Tous les fichiers de configuration des thèmes sont là.

Il y a des thèmes d'origine avec Fluxbox mais leurs fichiers de configuration et les images qu'ils utilisent ne sont pas placés dans le répertoire utilisateur puisqu'ils doivent être visibles par tous les utilisateurs. Ils sont placés dans le dossier /usr/share/fluxbox/styles/

Je vais vous détailler la syntaxe de chaque fichier :
=== Keys ===
La syntaxe est la suivante :

 &lt;touche&gt; &lt;touche&gt; [&lt;touche&gt;] : &lt;effet&gt;

==== Noms des touches ====

* Super : touche &quot;Windows&quot;
* Mod1 : Alt Gauche
* Mod2 : Alt Droite
* Shift : Shift
* Tab : Tabulation
* Control : Ctrl
* OnDesktop : Lorsque la souris pointe sur le fond d'écran
* Mouse1 : Clic gauche
* Mouse2 : Clic Gauche + Clic droit simultané ou clic sur la molette
* Mouse3 : Clic droit
* Mouse4 : Bouton de tranche (précédent et suivant)
* Mouse5 : Bouton de tranche
* F1,F2[...],F12 : Touches fonctions

Par exemple, pour [Touche Windows + Alt Gauche] :

 Super Mod1 : MyEffect

Le nom de chaque touche peut être retrouvé avec l'utilitaire '''xev''' installé par défaut avec le serveur X11.

Lancez xev dans un terminal, mettez la fenêtre qui s'ouvre au premier plan, tapez la touche dont vous ne connaissez pas l'appellation, et regardez son nom qui apparait dans le terminal.

Vous pouvez, ensuite, reporter ce nom dans le fichier keys. Par exemple :

 None XF86PowerOff: exec gksu shutdown -h now

==== Noms des effets ====

* HideMenus : Cache les menus
* WorkspaceMenu : Menu des espaces de travail
* RootMenu : Menu des applications ( voir explications sur le fichier ~/.fluxbox/menu )
* NextWorkspace : Espace de travail suivant ( si on est au 2ème, on passe au 3ème :p )
* PrevWorkspace : Espace de travail précédent
* NextWindow : Fenêtre d'après, le n° des fenêtres est défini dans l'ordre d'ouverture des fenêtres
* PrevWindow : Fenêtre d'avant
* Workspace 1,2,3...12 : Se déplacer vers l'espace de travail X

Par exemple, si on veut changer d'espace de travail en faisant [alt + FX]

 Mod1 F1: Workspace 1 # Amène à l'espace de travail 1

=== Menu ===
Il faut d'abord, pour pouvoir l'utiliser, modifier ~/.fluxbox/init à la ligne session.menuFile. Si le chemin n'est pas ~/.fluxbox/menu remplacez le chemin existant par ça.
Ce fichier de configuration est extrêmement simple à comprendre et à utiliser :

 [begin] (Titre que vous voulez donner à votre menu) # commentaire
      [submenu] (Nom du sous-menu) {} # encore un commentaire
             [exec] (conquereur de l espace) {konqueror} &lt;/usr/share/pixmaps/mon-icone.xpm&gt;
             [exec] (blah blah) {pidgin} &lt;/usr/share/pixmaps/mon-icone.png&gt;
             [submenu] (Nom de mon sous-sous-menu) {}
                    [exec] (Nom de mon appli) {mon_appli} &lt;/chemin/de/mon/image&gt;
             [end]
      [end]
      [config] (Configuration)
      [submenu] (Styles) {}
             [stylesdir] (/usr/share/fluxbox/styles)
             [stylesdir] (~/.fluxbox/styles)
      [end]
      [workspaces] (Workspaces)
      [reconfig] (Reconfigure)
      [restart] (Restart)
      [exit] (Exit)
 [end]

Ce qui est écrit ci-dessus suffit largement pour comprendre, on ne s'étendra pas sur ce point.
Si vous gardez le menu d'origine, il sera actualisé à chaque installation de logiciel.

''A finir ...''

===== Sources =====

*http://louis-c.myftp.org/blog/index.php?post/FluxBox . Ce document a été recopié avec l'autorisation expresse de son auteur.

[[Catégorie:Gestionnaires de fenêtres]]</text>
      <sha1>57v3xs83q2vxusrqll9g8aciz0m539h</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>670</id>
      <parentid>452</parentid>
      <timestamp>2010-02-01T11:23:49Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <text xml:space="preserve" bytes="5204">{{sid}}

Fluxbox est un gestionnaire de fenêtres, au même titre de Kwin(KDE), Compiz, xcompmgr, openbox et tant d'autres.

Sa particularité est de n'avoir presque aucune suite logicielle (il ne dépend que des librairies standard, ou presque) ce qui fait qu'il est très léger.
Il est entièrement configurable et modelable, en passant par des fichiers de configuration. Il est si léger qu'il se lance en quelques secondes.

Pour l'installer :

 # apt-get install fluxbox 

Tous les fichiers de configuration sont situés dans le dossier ~/.fluxbox/

On y trouve les fichiers :

* .fluxbox/init : Sont regroupées diverses informations sur les dimensions, les couleurs, les chemins d'accès...
* .fluxbox/keys : Raccourcis clavier.
* .fluxbox/lastwallpaper : Le nom est assez clair. Dans ce fichier se trouve le chemin d'accès au dernier wallpaper utilisé. On n'y touche pas, on utilisera une commande spécifique.
* .fluxbox/log : ... Pas besoin d'expliquer.
* .fluxbox/menu : Fichier de configuration du menu, très simple à comprendre et à utiliser.
* .fluxbox/slitlist : Aucune idée.
* .fluxbox/startup : Fichier où seront mis tous les programmes devant être lancés au démarrage de fluxbox. L'ordre des commandes est très important : elles seront effectuées dans l'ordre où elles sont dans le fichier. Notez que fluxbox est lancé en dernier : toute commande écrite après ne sera pas effectuée.

Et les dossiers:

* .fluxbox/backgrounds/ : Tous les fonds d'écrans utilisés par les thèmes sont là.
* .fluxbox/buttons/ : Tous les boutons utilisés par les thèmes sont là.
* .fluxbox/pixmaps/ : Toutes les images utilisés par les thèmes sont là.
* .fluxbox/styles/ :Tous les fichiers de configuration des thèmes sont là.

Il y a des thèmes d'origine avec Fluxbox mais leurs fichiers de configuration et les images qu'ils utilisent ne sont pas placés dans le répertoire utilisateur puisqu'ils doivent être visibles par tous les utilisateurs. Ils sont placés dans le dossier /usr/share/fluxbox/styles/

Je vais vous détailler la syntaxe de chaque fichier :
=== Keys ===
La syntaxe est la suivante :

 &lt;touche&gt; &lt;touche&gt; [&lt;touche&gt;] : &lt;effet&gt;

==== Noms des touches ====

* Super : touche &quot;Windows&quot;
* Mod1 : Alt Gauche
* Mod2 : Alt Droite
* Shift : Shift
* Tab : Tabulation
* Control : Ctrl
* OnDesktop : Lorsque la souris pointe sur le fond d'écran
* Mouse1 : Clic gauche
* Mouse2 : Clic Gauche + Clic droit simultané ou clic sur la molette
* Mouse3 : Clic droit
* Mouse4 : Bouton de tranche (précédent et suivant)
* Mouse5 : Bouton de tranche
* F1,F2[...],F12 : Touches fonctions

Par exemple, pour [Touche Windows + Alt Gauche] :

 Super Mod1 : MyEffect

Le nom de chaque touche peut être retrouvé avec l'utilitaire '''xev''' installé par défaut avec le serveur X11.

Lancez xev dans un terminal, mettez la fenêtre qui s'ouvre au premier plan, tapez la touche dont vous ne connaissez pas l'appellation, et regardez son nom qui apparaît dans le terminal.

Vous pouvez, ensuite, reporter ce nom dans le fichier keys. Par exemple :

 None XF86PowerOff: exec gksu shutdown -h now

==== Noms des effets ====

* HideMenus : Cache les menus
* WorkspaceMenu : Menu des espaces de travail
* RootMenu : Menu des applications ( voir explications sur le fichier ~/.fluxbox/menu )
* NextWorkspace : Espace de travail suivant ( si on est au 2ème, on passe au 3ème :p )
* PrevWorkspace : Espace de travail précédent
* NextWindow : Fenêtre d'après, le n° des fenêtres est défini dans l'ordre d'ouverture des fenêtres
* PrevWindow : Fenêtre d'avant
* Workspace 1,2,3...12 : Se déplacer vers l'espace de travail X

Par exemple, si on veut changer d'espace de travail en faisant [alt + FX]

 Mod1 F1: Workspace 1 # Amène à l'espace de travail 1

=== Menu ===
Il faut d'abord, pour pouvoir l'utiliser, modifier ~/.fluxbox/init à la ligne session.menuFile. Si le chemin n'est pas ~/.fluxbox/menu remplacez le chemin existant par ça.
Ce fichier de configuration est extrêmement simple à comprendre et à utiliser :

 [begin] (Titre que vous voulez donner à votre menu) # commentaire
      [submenu] (Nom du sous-menu) {} # encore un commentaire
             [exec] (conquereur de l espace) {konqueror} &lt;/usr/share/pixmaps/mon-icone.xpm&gt;
             [exec] (blah blah) {pidgin} &lt;/usr/share/pixmaps/mon-icone.png&gt;
             [submenu] (Nom de mon sous-sous-menu) {}
                    [exec] (Nom de mon appli) {mon_appli} &lt;/chemin/de/mon/image&gt;
             [end]
      [end]
      [config] (Configuration)
      [submenu] (Styles) {}
             [stylesdir] (/usr/share/fluxbox/styles)
             [stylesdir] (~/.fluxbox/styles)
      [end]
      [workspaces] (Workspaces)
      [reconfig] (Reconfigure)
      [restart] (Restart)
      [exit] (Exit)
 [end]

Ce qui est écrit ci-dessus suffit largement pour comprendre, on ne s'étendra pas sur ce point.
Si vous gardez le menu d'origine, il sera actualisé à chaque installation de logiciel.

''A finir ...''

===== Sources =====

*http://louis-c.myftp.org/blog/index.php?post/FluxBox . Ce document a été recopié avec l'autorisation expresse de son auteur.

[[Catégorie:Gestionnaires de fenêtres]]</text>
      <sha1>71g8u6xeeg0ig1y6h0y4n94o2zvkotr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>968</id>
      <parentid>670</parentid>
      <timestamp>2010-02-07T07:40:04Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="5229">{{sid}}

Fluxbox est un gestionnaire de fenêtres, au même titre de Kwin(KDE), Compiz, xcompmgr, openbox et tant d'autres.

Sa particularité est de n'avoir presque aucune suite logicielle (il ne dépend que des librairies standard, ou presque) ce qui fait qu'il est très léger.
Il est entièrement configurable et modelable, en passant par des fichiers de configuration. Il est si léger qu'il se lance en quelques secondes.

Pour l'installer :

 # apt-get install fluxbox 

Tous les fichiers de configuration sont situés dans le dossier ~/.fluxbox/

On y trouve les fichiers :

* .fluxbox/init : Sont regroupées diverses informations sur les dimensions, les couleurs, les chemins d'accès...
* .fluxbox/keys : Raccourcis clavier.
* .fluxbox/lastwallpaper : Le nom est assez clair. Dans ce fichier se trouve le chemin d'accès au dernier wallpaper utilisé. On n'y touche pas, on utilisera une commande spécifique.
* .fluxbox/log : ... Pas besoin d'expliquer.
* .fluxbox/menu : Fichier de configuration du menu, très simple à comprendre et à utiliser.
* .fluxbox/slitlist : Aucune idée.
* .fluxbox/startup : Fichier où seront mis tous les programmes devant être lancés au démarrage de fluxbox. L'ordre des commandes est très important : elles seront effectuées dans l'ordre où elles sont dans le fichier. Notez que fluxbox est lancé en dernier : toute commande écrite après ne sera pas effectuée.

Et les dossiers:

* .fluxbox/backgrounds/ : Tous les fonds d'écrans utilisés par les thèmes sont là.
* .fluxbox/buttons/ : Tous les boutons utilisés par les thèmes sont là.
* .fluxbox/pixmaps/ : Toutes les images utilisés par les thèmes sont là.
* .fluxbox/styles/ :Tous les fichiers de configuration des thèmes sont là.

Il y a des thèmes d'origine avec Fluxbox mais leurs fichiers de configuration et les images qu'ils utilisent ne sont pas placés dans le répertoire utilisateur puisqu'ils doivent être visibles par tous les utilisateurs. Ils sont placés dans le dossier /usr/share/fluxbox/styles/

Je vais vous détailler la syntaxe de chaque fichier :
=== Keys ===
La syntaxe est la suivante :

 &lt;touche&gt; &lt;touche&gt; [&lt;touche&gt;] : &lt;effet&gt;

==== Noms des touches ====

* Super : touche &quot;Windows&quot;
* Mod1 : Alt Gauche
* Mod2 : Alt Droite
* Shift : Shift
* Tab : Tabulation
* Control : Ctrl
* OnDesktop : Lorsque la souris pointe sur le fond d'écran
* Mouse1 : Clic gauche
* Mouse2 : Clic Gauche + Clic droit simultané ou clic sur la molette
* Mouse3 : Clic droit
* Mouse4 : Bouton de tranche (précédent et suivant)
* Mouse5 : Bouton de tranche
* F1,F2[...],F12 : Touches fonctions

Par exemple, pour [Touche Windows + Alt Gauche] :

 Super Mod1 : MyEffect

Le nom de chaque touche peut être retrouvé avec l'utilitaire '''xev''' installé par défaut avec le serveur X11.

Lancez xev dans un terminal, mettez la fenêtre qui s'ouvre au premier plan, tapez la touche dont vous ne connaissez pas l'appellation, et regardez son nom qui apparaît dans le terminal.

Vous pouvez, ensuite, reporter ce nom dans le fichier keys. Par exemple :

 None XF86PowerOff: exec gksu shutdown -h now

==== Noms des effets ====

* HideMenus : Cache les menus
* WorkspaceMenu : Menu des espaces de travail
* RootMenu : Menu des applications ( voir explications sur le fichier ~/.fluxbox/menu )
* NextWorkspace : Espace de travail suivant ( si on est au 2ème, on passe au 3ème :p )
* PrevWorkspace : Espace de travail précédent
* NextWindow : Fenêtre d'après, le n° des fenêtres est défini dans l'ordre d'ouverture des fenêtres
* PrevWindow : Fenêtre d'avant
* Workspace 1,2,3...12 : Se déplacer vers l'espace de travail X

Par exemple, si on veut changer d'espace de travail en faisant [alt + FX]

 Mod1 F1: Workspace 1 # Amène à l'espace de travail 1

=== Menu ===
Il faut d'abord, pour pouvoir l'utiliser, modifier ~/.fluxbox/init à la ligne session.menuFile. Si le chemin n'est pas ~/.fluxbox/menu remplacez le chemin existant par ça.
Ce fichier de configuration est extrêmement simple à comprendre et à utiliser :

 [begin] (Titre que vous voulez donner à votre menu) # commentaire
      [submenu] (Nom du sous-menu) {} # encore un commentaire
             [exec] (conquereur de l espace) {konqueror} &lt;/usr/share/pixmaps/mon-icone.xpm&gt;
             [exec] (blah blah) {pidgin} &lt;/usr/share/pixmaps/mon-icone.png&gt;
             [submenu] (Nom de mon sous-sous-menu) {}
                    [exec] (Nom de mon appli) {mon_appli} &lt;/chemin/de/mon/image&gt;
             [end]
      [end]
      [config] (Configuration)
      [submenu] (Styles) {}
             [stylesdir] (/usr/share/fluxbox/styles)
             [stylesdir] (~/.fluxbox/styles)
      [end]
      [workspaces] (Workspaces)
      [reconfig] (Reconfigure)
      [restart] (Restart)
      [exit] (Exit)
 [end]

Ce qui est écrit ci-dessus suffit largement pour comprendre, on ne s'étendra pas sur ce point.
Si vous gardez le menu d'origine, il sera actualisé à chaque installation de logiciel.

''A finir ...''

===== Sources =====

*http://louis-c.myftp.org/blog/index.php?post/FluxBox . Ce document a été recopié avec l'autorisation expresse de son auteur.

[[Catégorie:Gestionnaires de fenêtres]]
[[Catégorie:Flottants]]</text>
      <sha1>tiurdwdzm4jo5thd7txmycvvhkxls8s</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>976</id>
      <parentid>968</parentid>
      <timestamp>2010-02-07T07:53:34Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="5229">{{sid}}

Fluxbox est un gestionnaire de fenêtres, au même titre de Kwin(KDE), Compiz, xcompmgr, openbox et tant d'autres.

Sa particularité est de n'avoir presque aucune suite logicielle (il ne dépend que des librairies standard, ou presque) ce qui fait qu'il est très léger.
Il est entièrement configurable et modelable, en passant par des fichiers de configuration. Il est si léger qu'il se lance en quelques secondes.

Pour l'installer :

 # apt-get install fluxbox 

Tous les fichiers de configuration sont situés dans le dossier ~/.fluxbox/

On y trouve les fichiers :

* .fluxbox/init : Sont regroupées diverses informations sur les dimensions, les couleurs, les chemins d'accès...
* .fluxbox/keys : Raccourcis clavier.
* .fluxbox/lastwallpaper : Le nom est assez clair. Dans ce fichier se trouve le chemin d'accès au dernier wallpaper utilisé. On n'y touche pas, on utilisera une commande spécifique.
* .fluxbox/log : ... Pas besoin d'expliquer.
* .fluxbox/menu : Fichier de configuration du menu, très simple à comprendre et à utiliser.
* .fluxbox/slitlist : Aucune idée.
* .fluxbox/startup : Fichier où seront mis tous les programmes devant être lancés au démarrage de fluxbox. L'ordre des commandes est très important : elles seront effectuées dans l'ordre où elles sont dans le fichier. Notez que fluxbox est lancé en dernier : toute commande écrite après ne sera pas effectuée.

Et les dossiers:

* .fluxbox/backgrounds/ : Tous les fonds d'écrans utilisés par les thèmes sont là.
* .fluxbox/buttons/ : Tous les boutons utilisés par les thèmes sont là.
* .fluxbox/pixmaps/ : Toutes les images utilisés par les thèmes sont là.
* .fluxbox/styles/ :Tous les fichiers de configuration des thèmes sont là.

Il y a des thèmes d'origine avec Fluxbox mais leurs fichiers de configuration et les images qu'ils utilisent ne sont pas placés dans le répertoire utilisateur puisqu'ils doivent être visibles par tous les utilisateurs. Ils sont placés dans le dossier /usr/share/fluxbox/styles/

Je vais vous détailler la syntaxe de chaque fichier :
=== Keys ===
La syntaxe est la suivante :

 &lt;touche&gt; &lt;touche&gt; [&lt;touche&gt;] : &lt;effet&gt;

==== Noms des touches ====

* Super : touche &quot;Windows&quot;
* Mod1 : Alt Gauche
* Mod2 : Alt Droite
* Shift : Shift
* Tab : Tabulation
* Control : Ctrl
* OnDesktop : Lorsque la souris pointe sur le fond d'écran
* Mouse1 : Clic gauche
* Mouse2 : Clic Gauche + Clic droit simultané ou clic sur la molette
* Mouse3 : Clic droit
* Mouse4 : Bouton de tranche (précédent et suivant)
* Mouse5 : Bouton de tranche
* F1,F2[...],F12 : Touches fonctions

Par exemple, pour [Touche Windows + Alt Gauche] :

 Super Mod1 : MyEffect

Le nom de chaque touche peut être retrouvé avec l'utilitaire '''xev''' installé par défaut avec le serveur X11.

Lancez xev dans un terminal, mettez la fenêtre qui s'ouvre au premier plan, tapez la touche dont vous ne connaissez pas l'appellation, et regardez son nom qui apparaît dans le terminal.

Vous pouvez, ensuite, reporter ce nom dans le fichier keys. Par exemple :

 None XF86PowerOff: exec gksu shutdown -h now

==== Noms des effets ====

* HideMenus : Cache les menus
* WorkspaceMenu : Menu des espaces de travail
* RootMenu : Menu des applications ( voir explications sur le fichier ~/.fluxbox/menu )
* NextWorkspace : Espace de travail suivant ( si on est au 2ème, on passe au 3ème :p )
* PrevWorkspace : Espace de travail précédent
* NextWindow : Fenêtre d'après, le n° des fenêtres est défini dans l'ordre d'ouverture des fenêtres
* PrevWindow : Fenêtre d'avant
* Workspace 1,2,3...12 : Se déplacer vers l'espace de travail X

Par exemple, si on veut changer d'espace de travail en faisant [alt + FX]

 Mod1 F1: Workspace 1 # Amène à l'espace de travail 1

=== Menu ===
Il faut d'abord, pour pouvoir l'utiliser, modifier ~/.fluxbox/init à la ligne session.menuFile. Si le chemin n'est pas ~/.fluxbox/menu remplacez le chemin existant par ça.
Ce fichier de configuration est extrêmement simple à comprendre et à utiliser :

 [begin] (Titre que vous voulez donner à votre menu) # commentaire
      [submenu] (Nom du sous-menu) {} # encore un commentaire
             [exec] (conquereur de l espace) {konqueror} &lt;/usr/share/pixmaps/mon-icone.xpm&gt;
             [exec] (blah blah) {pidgin} &lt;/usr/share/pixmaps/mon-icone.png&gt;
             [submenu] (Nom de mon sous-sous-menu) {}
                    [exec] (Nom de mon appli) {mon_appli} &lt;/chemin/de/mon/image&gt;
             [end]
      [end]
      [config] (Configuration)
      [submenu] (Styles) {}
             [stylesdir] (/usr/share/fluxbox/styles)
             [stylesdir] (~/.fluxbox/styles)
      [end]
      [workspaces] (Workspaces)
      [reconfig] (Reconfigure)
      [restart] (Restart)
      [exit] (Exit)
 [end]

Ce qui est écrit ci-dessus suffit largement pour comprendre, on ne s'étendra pas sur ce point.
Si vous gardez le menu d'origine, il sera actualisé à chaque installation de logiciel.

''A finir ...''

===== Sources =====

*http://louis-c.myftp.org/blog/index.php?post/FluxBox . Ce document a été recopié avec l'autorisation expresse de son auteur.

[[Catégorie:Gestionnaires_de_fenêtres]]
[[Catégorie:Flottants]]</text>
      <sha1>aezronqp4ftm3q34wyq3003zmggywi1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>982</id>
      <parentid>976</parentid>
      <timestamp>2010-02-07T08:02:31Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="5228">{{sid}}

Fluxbox est un gestionnaire de fenêtres, au même titre de Kwin(KDE), Compiz, xcompmgr, openbox et tant d'autres.

Sa particularité est de n'avoir presque aucune suite logicielle (il ne dépend que des librairies standard, ou presque) ce qui fait qu'il est très léger.
Il est entièrement configurable et modelable, en passant par des fichiers de configuration. Il est si léger qu'il se lance en quelques secondes.

Pour l'installer :

 # apt-get install fluxbox 

Tous les fichiers de configuration sont situés dans le dossier ~/.fluxbox/

On y trouve les fichiers :

* .fluxbox/init : Sont regroupées diverses informations sur les dimensions, les couleurs, les chemins d'accès...
* .fluxbox/keys : Raccourcis clavier.
* .fluxbox/lastwallpaper : Le nom est assez clair. Dans ce fichier se trouve le chemin d'accès au dernier wallpaper utilisé. On n'y touche pas, on utilisera une commande spécifique.
* .fluxbox/log : ... Pas besoin d'expliquer.
* .fluxbox/menu : Fichier de configuration du menu, très simple à comprendre et à utiliser.
* .fluxbox/slitlist : Aucune idée.
* .fluxbox/startup : Fichier où seront mis tous les programmes devant être lancés au démarrage de fluxbox. L'ordre des commandes est très important : elles seront effectuées dans l'ordre où elles sont dans le fichier. Notez que fluxbox est lancé en dernier : toute commande écrite après ne sera pas effectuée.

Et les dossiers:

* .fluxbox/backgrounds/ : Tous les fonds d'écrans utilisés par les thèmes sont là.
* .fluxbox/buttons/ : Tous les boutons utilisés par les thèmes sont là.
* .fluxbox/pixmaps/ : Toutes les images utilisés par les thèmes sont là.
* .fluxbox/styles/ :Tous les fichiers de configuration des thèmes sont là.

Il y a des thèmes d'origine avec Fluxbox mais leurs fichiers de configuration et les images qu'ils utilisent ne sont pas placés dans le répertoire utilisateur puisqu'ils doivent être visibles par tous les utilisateurs. Ils sont placés dans le dossier /usr/share/fluxbox/styles/

Je vais vous détailler la syntaxe de chaque fichier :
=== Keys ===
La syntaxe est la suivante :

 &lt;touche&gt; &lt;touche&gt; [&lt;touche&gt;] : &lt;effet&gt;

==== Noms des touches ====

* Super : touche &quot;Windows&quot;
* Mod1 : Alt Gauche
* Mod2 : Alt Droite
* Shift : Shift
* Tab : Tabulation
* Control : Ctrl
* OnDesktop : Lorsque la souris pointe sur le fond d'écran
* Mouse1 : Clic gauche
* Mouse2 : Clic Gauche + Clic droit simultané ou clic sur la molette
* Mouse3 : Clic droit
* Mouse4 : Bouton de tranche (précédent et suivant)
* Mouse5 : Bouton de tranche
* F1,F2[...],F12 : Touches fonctions

Par exemple, pour [Touche Windows + Alt Gauche] :

 Super Mod1 : MyEffect

Le nom de chaque touche peut être retrouvé avec l'utilitaire '''xev''' installé par défaut avec le serveur X11.

Lancez xev dans un terminal, mettez la fenêtre qui s'ouvre au premier plan, tapez la touche dont vous ne connaissez pas l'appellation, et regardez son nom qui apparaît dans le terminal.

Vous pouvez, ensuite, reporter ce nom dans le fichier keys. Par exemple :

 None XF86PowerOff: exec gksu shutdown -h now

==== Noms des effets ====

* HideMenus : Cache les menus
* WorkspaceMenu : Menu des espaces de travail
* RootMenu : Menu des applications ( voir explications sur le fichier ~/.fluxbox/menu )
* NextWorkspace : Espace de travail suivant ( si on est au 2ème, on passe au 3ème :p )
* PrevWorkspace : Espace de travail précédent
* NextWindow : Fenêtre d'après, le n° des fenêtres est défini dans l'ordre d'ouverture des fenêtres
* PrevWindow : Fenêtre d'avant
* Workspace 1,2,3...12 : Se déplacer vers l'espace de travail X

Par exemple, si on veut changer d'espace de travail en faisant [alt + FX]

 Mod1 F1: Workspace 1 # Amène à l'espace de travail 1

=== Menu ===
Il faut d'abord, pour pouvoir l'utiliser, modifier ~/.fluxbox/init à la ligne session.menuFile. Si le chemin n'est pas ~/.fluxbox/menu remplacez le chemin existant par ça.
Ce fichier de configuration est extrêmement simple à comprendre et à utiliser :

 [begin] (Titre que vous voulez donner à votre menu) # commentaire
      [submenu] (Nom du sous-menu) {} # encore un commentaire
             [exec] (conquereur de l espace) {konqueror} &lt;/usr/share/pixmaps/mon-icone.xpm&gt;
             [exec] (blah blah) {pidgin} &lt;/usr/share/pixmaps/mon-icone.png&gt;
             [submenu] (Nom de mon sous-sous-menu) {}
                    [exec] (Nom de mon appli) {mon_appli} &lt;/chemin/de/mon/image&gt;
             [end]
      [end]
      [config] (Configuration)
      [submenu] (Styles) {}
             [stylesdir] (/usr/share/fluxbox/styles)
             [stylesdir] (~/.fluxbox/styles)
      [end]
      [workspaces] (Workspaces)
      [reconfig] (Reconfigure)
      [restart] (Restart)
      [exit] (Exit)
 [end]

Ce qui est écrit ci-dessus suffit largement pour comprendre, on ne s'étendra pas sur ce point.
Si vous gardez le menu d'origine, il sera actualisé à chaque installation de logiciel.

''A finir ...''

===== Sources =====

*http://louis-c.myftp.org/blog/index.php?post/FluxBox . Ce document a été recopié avec l'autorisation expresse de son auteur.

[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Flottants]]</text>
      <sha1>4zo000xvn2ut0uix8gyzck589ibsa3d</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3226</id>
      <parentid>982</parentid>
      <timestamp>2011-08-07T18:56:28Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="5219">Fluxbox est un gestionnaire de fenêtres, au même titre de Kwin(KDE), Compiz, xcompmgr, openbox et tant d'autres.

Sa particularité est de n'avoir presque aucune suite logicielle (il ne dépend que des librairies standard, ou presque) ce qui fait qu'il est très léger.
Il est entièrement configurable et modelable, en passant par des fichiers de configuration. Il est si léger qu'il se lance en quelques secondes.

Pour l'installer :

 # apt-get install fluxbox 

Tous les fichiers de configuration sont situés dans le dossier ~/.fluxbox/

On y trouve les fichiers :

* .fluxbox/init : Sont regroupées diverses informations sur les dimensions, les couleurs, les chemins d'accès...
* .fluxbox/keys : Raccourcis clavier.
* .fluxbox/lastwallpaper : Le nom est assez clair. Dans ce fichier se trouve le chemin d'accès au dernier wallpaper utilisé. On n'y touche pas, on utilisera une commande spécifique.
* .fluxbox/log : ... Pas besoin d'expliquer.
* .fluxbox/menu : Fichier de configuration du menu, très simple à comprendre et à utiliser.
* .fluxbox/slitlist : Aucune idée.
* .fluxbox/startup : Fichier où seront mis tous les programmes devant être lancés au démarrage de fluxbox. L'ordre des commandes est très important : elles seront effectuées dans l'ordre où elles sont dans le fichier. Notez que fluxbox est lancé en dernier : toute commande écrite après ne sera pas effectuée.

Et les dossiers:

* .fluxbox/backgrounds/ : Tous les fonds d'écrans utilisés par les thèmes sont là.
* .fluxbox/buttons/ : Tous les boutons utilisés par les thèmes sont là.
* .fluxbox/pixmaps/ : Toutes les images utilisés par les thèmes sont là.
* .fluxbox/styles/ :Tous les fichiers de configuration des thèmes sont là.

Il y a des thèmes d'origine avec Fluxbox mais leurs fichiers de configuration et les images qu'ils utilisent ne sont pas placés dans le répertoire utilisateur puisqu'ils doivent être visibles par tous les utilisateurs. Ils sont placés dans le dossier /usr/share/fluxbox/styles/

Je vais vous détailler la syntaxe de chaque fichier :
=== Keys ===
La syntaxe est la suivante :

 &lt;touche&gt; &lt;touche&gt; [&lt;touche&gt;] : &lt;effet&gt;

==== Noms des touches ====

* Super : touche &quot;Windows&quot;
* Mod1 : Alt Gauche
* Mod2 : Alt Droite
* Shift : Shift
* Tab : Tabulation
* Control : Ctrl
* OnDesktop : Lorsque la souris pointe sur le fond d'écran
* Mouse1 : Clic gauche
* Mouse2 : Clic Gauche + Clic droit simultané ou clic sur la molette
* Mouse3 : Clic droit
* Mouse4 : Bouton de tranche (précédent et suivant)
* Mouse5 : Bouton de tranche
* F1,F2[...],F12 : Touches fonctions

Par exemple, pour [Touche Windows + Alt Gauche] :

 Super Mod1 : MyEffect

Le nom de chaque touche peut être retrouvé avec l'utilitaire '''xev''' installé par défaut avec le serveur X11.

Lancez xev dans un terminal, mettez la fenêtre qui s'ouvre au premier plan, tapez la touche dont vous ne connaissez pas l'appellation, et regardez son nom qui apparaît dans le terminal.

Vous pouvez, ensuite, reporter ce nom dans le fichier keys. Par exemple :

 None XF86PowerOff: exec gksu shutdown -h now

==== Noms des effets ====

* HideMenus : Cache les menus
* WorkspaceMenu : Menu des espaces de travail
* RootMenu : Menu des applications ( voir explications sur le fichier ~/.fluxbox/menu )
* NextWorkspace : Espace de travail suivant ( si on est au 2ème, on passe au 3ème :p )
* PrevWorkspace : Espace de travail précédent
* NextWindow : Fenêtre d'après, le n° des fenêtres est défini dans l'ordre d'ouverture des fenêtres
* PrevWindow : Fenêtre d'avant
* Workspace 1,2,3...12 : Se déplacer vers l'espace de travail X

Par exemple, si on veut changer d'espace de travail en faisant [alt + FX]

 Mod1 F1: Workspace 1 # Amène à l'espace de travail 1

=== Menu ===
Il faut d'abord, pour pouvoir l'utiliser, modifier ~/.fluxbox/init à la ligne session.menuFile. Si le chemin n'est pas ~/.fluxbox/menu remplacez le chemin existant par ça.
Ce fichier de configuration est extrêmement simple à comprendre et à utiliser :

 [begin] (Titre que vous voulez donner à votre menu) # commentaire
      [submenu] (Nom du sous-menu) {} # encore un commentaire
             [exec] (conquereur de l espace) {konqueror} &lt;/usr/share/pixmaps/mon-icone.xpm&gt;
             [exec] (blah blah) {pidgin} &lt;/usr/share/pixmaps/mon-icone.png&gt;
             [submenu] (Nom de mon sous-sous-menu) {}
                    [exec] (Nom de mon appli) {mon_appli} &lt;/chemin/de/mon/image&gt;
             [end]
      [end]
      [config] (Configuration)
      [submenu] (Styles) {}
             [stylesdir] (/usr/share/fluxbox/styles)
             [stylesdir] (~/.fluxbox/styles)
      [end]
      [workspaces] (Workspaces)
      [reconfig] (Reconfigure)
      [restart] (Restart)
      [exit] (Exit)
 [end]

Ce qui est écrit ci-dessus suffit largement pour comprendre, on ne s'étendra pas sur ce point.
Si vous gardez le menu d'origine, il sera actualisé à chaque installation de logiciel.

''A finir ...''

===== Sources =====

*http://louis-c.myftp.org/blog/index.php?post/FluxBox . Ce document a été recopié avec l'autorisation expresse de son auteur.

[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Flottants]]</text>
      <sha1>in295npgqijo9m2e6z84k2ih652lvi9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5751</id>
      <parentid>3226</parentid>
      <timestamp>2014-08-20T04:59:05Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="5231">Fluxbox est un gestionnaire de fenêtres, au même titre de Kwin(KDE), Compiz, xcompmgr, openbox et tant d'autres.

Sa particularité est de n'avoir presque aucune suite logicielle (il ne dépend que des librairies standard, ou presque) ce qui fait qu'il est très léger.
Il est entièrement configurable et modelable, en passant par des fichiers de configuration. Il est si léger qu'il se lance en quelques secondes.

Pour l'installer :

 # apt-get install fluxbox 

Tous les fichiers de configuration sont situés dans le répertoire ~/.fluxbox/

On y trouve les fichiers :

* .fluxbox/init : Sont regroupées diverses informations sur les dimensions, les couleurs, les chemins d'accès...
* .fluxbox/keys : Raccourcis clavier.
* .fluxbox/lastwallpaper : Le nom est assez clair. Dans ce fichier se trouve le chemin d'accès au dernier wallpaper utilisé. On n'y touche pas, on utilisera une commande spécifique.
* .fluxbox/log : ... Pas besoin d'expliquer.
* .fluxbox/menu : Fichier de configuration du menu, très simple à comprendre et à utiliser.
* .fluxbox/slitlist : Aucune idée.
* .fluxbox/startup : Fichier où seront mis tous les programmes devant être lancés au démarrage de fluxbox. L'ordre des commandes est très important : elles seront effectuées dans l'ordre où elles sont dans le fichier. Notez que fluxbox est lancé en dernier : toute commande écrite après ne sera pas effectuée.

Et les répertoires:

* .fluxbox/backgrounds/ : Tous les fonds d'écrans utilisés par les thèmes sont là.
* .fluxbox/buttons/ : Tous les boutons utilisés par les thèmes sont là.
* .fluxbox/pixmaps/ : Toutes les images utilisés par les thèmes sont là.
* .fluxbox/styles/ :Tous les fichiers de configuration des thèmes sont là.

Il y a des thèmes d'origine avec Fluxbox mais leurs fichiers de configuration et les images qu'ils utilisent ne sont pas placés dans le répertoire utilisateur puisqu'ils doivent être visibles par tous les utilisateurs. Ils sont placés dans le répertoire /usr/share/fluxbox/styles/

Je vais vous détailler la syntaxe de chaque fichier :
=== Keys ===
La syntaxe est la suivante :

 &lt;touche&gt; &lt;touche&gt; [&lt;touche&gt;] : &lt;effet&gt;

==== Noms des touches ====

* Super : touche &quot;Windows&quot;
* Mod1 : Alt Gauche
* Mod2 : Alt Droite
* Shift : Shift
* Tab : Tabulation
* Control : Ctrl
* OnDesktop : Lorsque la souris pointe sur le fond d'écran
* Mouse1 : Clic gauche
* Mouse2 : Clic Gauche + Clic droit simultané ou clic sur la molette
* Mouse3 : Clic droit
* Mouse4 : Bouton de tranche (précédent et suivant)
* Mouse5 : Bouton de tranche
* F1,F2[...],F12 : Touches fonctions

Par exemple, pour [Touche Windows + Alt Gauche] :

 Super Mod1 : MyEffect

Le nom de chaque touche peut être retrouvé avec l'utilitaire '''xev''' installé par défaut avec le serveur X11.

Lancez xev dans un terminal, mettez la fenêtre qui s'ouvre au premier plan, tapez la touche dont vous ne connaissez pas l'appellation, et regardez son nom qui apparaît dans le terminal.

Vous pouvez, ensuite, reporter ce nom dans le fichier keys. Par exemple :

 None XF86PowerOff: exec gksu shutdown -h now

==== Noms des effets ====

* HideMenus : Cache les menus
* WorkspaceMenu : Menu des espaces de travail
* RootMenu : Menu des applications ( voir explications sur le fichier ~/.fluxbox/menu )
* NextWorkspace : Espace de travail suivant ( si on est au 2ème, on passe au 3ème :p )
* PrevWorkspace : Espace de travail précédent
* NextWindow : Fenêtre d'après, le n° des fenêtres est défini dans l'ordre d'ouverture des fenêtres
* PrevWindow : Fenêtre d'avant
* Workspace 1,2,3...12 : Se déplacer vers l'espace de travail X

Par exemple, si on veut changer d'espace de travail en faisant [alt + FX]

 Mod1 F1: Workspace 1 # Amène à l'espace de travail 1

=== Menu ===
Il faut d'abord, pour pouvoir l'utiliser, modifier ~/.fluxbox/init à la ligne session.menuFile. Si le chemin n'est pas ~/.fluxbox/menu remplacez le chemin existant par ça.
Ce fichier de configuration est extrêmement simple à comprendre et à utiliser :

 [begin] (Titre que vous voulez donner à votre menu) # commentaire
      [submenu] (Nom du sous-menu) {} # encore un commentaire
             [exec] (conquereur de l espace) {konqueror} &lt;/usr/share/pixmaps/mon-icone.xpm&gt;
             [exec] (blah blah) {pidgin} &lt;/usr/share/pixmaps/mon-icone.png&gt;
             [submenu] (Nom de mon sous-sous-menu) {}
                    [exec] (Nom de mon appli) {mon_appli} &lt;/chemin/de/mon/image&gt;
             [end]
      [end]
      [config] (Configuration)
      [submenu] (Styles) {}
             [stylesdir] (/usr/share/fluxbox/styles)
             [stylesdir] (~/.fluxbox/styles)
      [end]
      [workspaces] (Workspaces)
      [reconfig] (Reconfigure)
      [restart] (Restart)
      [exit] (Exit)
 [end]

Ce qui est écrit ci-dessus suffit largement pour comprendre, on ne s'étendra pas sur ce point.
Si vous gardez le menu d'origine, il sera actualisé à chaque installation de logiciel.

''A finir ...''

===== Sources =====

*http://louis-c.myftp.org/blog/index.php?post/FluxBox . Ce document a été recopié avec l'autorisation expresse de son auteur.

[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Flottants]]</text>
      <sha1>7psqx461a59g2h88th87pg60qdn7e2j</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Formulaire:Trucs et Astuces</title>
    <ns>106</ns>
    <id>1000</id>
    <revision>
      <id>4160</id>
      <timestamp>2012-05-05T14:06:14Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>Page créée avec « &lt;noinclude&gt; Ceci est le formulaire « Trucs et Astuces ». Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ; si une page avec ce nom existe d... »</comment>
      <text xml:space="preserve" bytes="1953">&lt;noinclude&gt;
Ceci est le formulaire « Trucs et Astuces ».
Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;
si une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.


{{#forminput:form=Trucs et Astuces}}

&lt;/noinclude&gt;&lt;includeonly&gt;
&lt;div id=&quot;wikiPreview&quot; style=&quot;display: none; padding-bottom: 25px; margin-bottom: 25px; border-bottom: 1px solid #AAAAAA;&quot;&gt;&lt;/div&gt;
{{{for template|Trucs et Astuces|multiple|label=Trucs et Astuces}}}
'''Domaine:''' {{{field|Domaine|hidden}}}

'''Protocole:''' {{{field|Paquet|values from category=Paquet}}}

'''Version debian:''' {{{field|Version debian|input type=text with autocomplete|values=Wheezy, Squeeze, Lenny, Etch, Sarge, Woody, Potato, Slink, Hamm}}}

'''Installé sur:''' {{{field|Installé sur|input type=text with autocomplete|values=Serveur, Ordinateur, de, bureau, Ordinateur, portable, Nas, Smartphone, Tablette, Mini-pc}}}

'''Environnement graphique:''' {{{field|Environnement graphique|input type=text with autocomplete|values=Xfce,Enlightenment, Gnome, Kde}}}

'''Niveau de difficulté:''' {{{field|Niveau de difficulté|input type=text with autocomplete|values=Débutant, Intermédiaire, Expérimenté, Expert}}}

'''Langage de programmation:''' {{{field|Langage de programmation|input type=text with autocomplete|values=Ajax, Bash, C++, Html, Java, Perl, Php, Python}}}

'''Matériel:''' {{{field|Matériel|input type=text with autocomplete|values=Serveur, carte vidéo}}}

'''Marque:''' {{{field|Marque|values=Nvidia, Ati, Dell, Asus}}}

'''Connectique:''' {{{field|Connectique|hidden}}}

'''Protocole:''' {{{field|Protocole|hidden}}}

{{{end template}}}

'''Texte libre:'''

{{{standard input|free text|rows=10}}}


{{{standard input|summary}}}

{{{standard input|minor edit}}} {{{standard input|watch}}}

{{{standard input|save}}} {{{standard input|preview}}} {{{standard input|changes}}} {{{standard input|cancel}}}
&lt;/includeonly&gt;</text>
      <sha1>ntliwwbyy6kqrmra6xoebec4ijdd2xw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4161</id>
      <parentid>4160</parentid>
      <timestamp>2012-05-05T14:07:32Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="2009">&lt;noinclude&gt;
Ceci est le formulaire « Trucs et Astuces ».
Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;
si une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.


{{#forminput:form=Trucs et Astuces}}

&lt;/noinclude&gt;&lt;includeonly&gt;
&lt;div id=&quot;wikiPreview&quot; style=&quot;display: none; padding-bottom: 25px; margin-bottom: 25px; border-bottom: 1px solid #AAAAAA;&quot;&gt;&lt;/div&gt;
{{{for template|Trucs et Astuces|multiple|label=Trucs et Astuces}}}
'''Domaine:''' {{{field|Domaine|input type=combobox|values = Sécurité, Multimédia, Internet}}}

'''Protocole:''' {{{field|Paquet|values from category=Paquet}}}

'''Version debian:''' {{{field|Version debian|input type=text with autocomplete|values=Wheezy, Squeeze, Lenny, Etch, Sarge, Woody, Potato, Slink, Hamm}}}

'''Installé sur:''' {{{field|Installé sur|input type=text with autocomplete|values=Serveur, Ordinateur, de, bureau, Ordinateur, portable, Nas, Smartphone, Tablette, Mini-pc}}}

'''Environnement graphique:''' {{{field|Environnement graphique|input type=text with autocomplete|values=Xfce,Enlightenment, Gnome, Kde}}}

'''Niveau de difficulté:''' {{{field|Niveau de difficulté|input type=text with autocomplete|values=Débutant, Intermédiaire, Expérimenté, Expert}}}

'''Langage de programmation:''' {{{field|Langage de programmation|input type=text with autocomplete|values=Ajax, Bash, C++, Html, Java, Perl, Php, Python}}}

'''Matériel:''' {{{field|Matériel|input type=text with autocomplete|values=Serveur, carte vidéo}}}

'''Marque:''' {{{field|Marque|values=Nvidia, Ati, Dell, Asus}}}

'''Connectique:''' {{{field|Connectique|hidden}}}

'''Protocole:''' {{{field|Protocole|hidden}}}

{{{end template}}}

'''Texte libre:'''

{{{standard input|free text|rows=10}}}


{{{standard input|summary}}}

{{{standard input|minor edit}}} {{{standard input|watch}}}

{{{standard input|save}}} {{{standard input|preview}}} {{{standard input|changes}}} {{{standard input|cancel}}}
&lt;/includeonly&gt;</text>
      <sha1>26h5wzwf69jwo2tsy0fysnw8oryx9pi</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4163</id>
      <parentid>4161</parentid>
      <timestamp>2012-05-05T14:13:10Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="1982">&lt;noinclude&gt;
Ceci est le formulaire « Trucs et Astuces ».
Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;
si une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.


{{#forminput:form=Trucs et Astuces}}

&lt;/noinclude&gt;&lt;includeonly&gt;
&lt;div id=&quot;wikiPreview&quot; style=&quot;display: none; padding-bottom: 25px; margin-bottom: 25px; border-bottom: 1px solid #AAAAAA;&quot;&gt;&lt;/div&gt;
{{{for template|Trucs et Astuces|multiple|label=Trucs et Astuces}}}
'''Domaine:''' {{{field|Domaine|input type=checkboxes|values = Sécurité, Multimédia, Internet}}}

'''Protocole:''' {{{field|Paquet|values=Http, ftp, Ip, Tcp}}}

'''Version debian:''' {{{field|Version debian|input type=checkboxes|values=Wheezy, Squeeze, Lenny, Etch, Sarge, Woody, Potato, Slink, Hamm}}}

'''Installé sur:''' {{{field|Installé sur|input type=text with autocomplete|values=Serveur, Ordinateur de bureau, Ordinateur portable, Nas, Smartphone, Tablette, Mini-pc}}}

'''Environnement graphique:''' {{{field|Environnement graphique|input type=checkboxes|values=Xfce,Enlightenment, Gnome, Kde}}}

'''Niveau de difficulté:''' {{{field|Niveau de difficulté|input type=text with autocomplete|values=Débutant, Intermédiaire, Expérimenté, Expert}}}

'''Langage de programmation:''' {{{field|Langage de programmation|input type=text with autocomplete|values=Ajax, Bash, C++, Html, Java, Perl, Php, Python}}}

'''Matériel:''' {{{field|Matériel|input type=text with autocomplete|values=Serveur, carte vidéo}}}

'''Marque:''' {{{field|Marque|values=Nvidia, Ati, Dell, Asus}}}

'''Connectique:''' {{{field|Connectique|hidden}}}

'''Protocole:''' {{{field|Protocole|hidden}}}

{{{end template}}}

'''Texte libre:'''

{{{standard input|free text|rows=10}}}


{{{standard input|summary}}}

{{{standard input|minor edit}}} {{{standard input|watch}}}

{{{standard input|save}}} {{{standard input|preview}}} {{{standard input|changes}}} {{{standard input|cancel}}}
&lt;/includeonly&gt;</text>
      <sha1>2ipqrw1zfrkt0j1xcluy7g45a2gh7gv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4166</id>
      <parentid>4163</parentid>
      <timestamp>2012-05-05T14:18:52Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="1972">&lt;noinclude&gt;
Ceci est le formulaire « Trucs et Astuces ».
Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;
si une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.


{{#forminput:form=Trucs et Astuces}}

&lt;/noinclude&gt;&lt;includeonly&gt;
&lt;div id=&quot;wikiPreview&quot; style=&quot;display: none; padding-bottom: 25px; margin-bottom: 25px; border-bottom: 1px solid #AAAAAA;&quot;&gt;&lt;/div&gt;
{{{for template|Trucs et Astuces|multiple|label=Trucs et Astuces}}}
{| class=&quot;formtable&quot;
!Domaine: | {{{field|Domaine|input type=checkboxes|values = Sécurité, Multimédia, Internet}}}

!Protocole: | {{{field|Paquet|values=Http, ftp, Ip, Tcp}}}

!Version debian: | {{{field|Version debian|input type=checkboxes|values=Wheezy, Squeeze, Lenny, Etch, Sarge, Woody, Potato, Slink, Hamm}}}

!Installé sur: | {{{field|Installé sur|input type=text with autocomplete|values=Serveur, Ordinateur de bureau, Ordinateur portable, Nas, Smartphone, Tablette, Mini-pc}}}

!Environnement graphique: | {{{field|Environnement graphique|input type=checkboxes|values=Xfce,Enlightenment, Gnome, Kde}}}

!Niveau de difficulté: | {{{field|Niveau de difficulté|input type=text with autocomplete|values=Débutant, Intermédiaire, Expérimenté, Expert}}}

!Langage de programmation: | {{{field|Langage de programmation|input type=text with autocomplete|values=Ajax, Bash, C++, Html, Java, Perl, Php, Python}}}

!Matériel: | {{{field|Matériel|input type=text with autocomplete|values=Serveur, carte vidéo}}}

!Marque: | {{{field|Marque|values=Nvidia, Ati, Dell, Asus}}}

!Connectique: | {{{field|Connectique|hidden}}}

!Protocole: | {{{field|Protocole|hidden}}}
|}
{{{end template}}}

'''Texte libre:'''

{{{standard input|free text|rows=10}}}


{{{standard input|summary}}}

{{{standard input|minor edit}}} {{{standard input|watch}}}

{{{standard input|save}}} {{{standard input|preview}}} {{{standard input|changes}}} {{{standard input|cancel}}}
&lt;/includeonly&gt;</text>
      <sha1>dzr9mpbt18hmrsdo9msealqyppyf71x</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4167</id>
      <parentid>4166</parentid>
      <timestamp>2012-05-05T14:20:21Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="1992">&lt;noinclude&gt;
Ceci est le formulaire « Trucs et Astuces ».
Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;
si une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.


{{#forminput:form=Trucs et Astuces}}

&lt;/noinclude&gt;&lt;includeonly&gt;
&lt;div id=&quot;wikiPreview&quot; style=&quot;display: none; padding-bottom: 25px; margin-bottom: 25px; border-bottom: 1px solid #AAAAAA;&quot;&gt;&lt;/div&gt;
{{{for template|Trucs et Astuces|multiple|label=Trucs et Astuces}}}
{| class=&quot;formtable&quot;
!Domaine: | {{{field|Domaine|input type=checkboxes|values = Sécurité, Multimédia, Internet}}}
|-
!Protocole: | {{{field|Paquet|values=Http, ftp, Ip, Tcp}}}
|-
!Version debian: | {{{field|Version debian|input type=checkboxes|values=Wheezy, Squeeze, Lenny, Etch, Sarge, Woody, Potato, Slink, Hamm}}}
|-
!Installé sur: | {{{field|Installé sur|input type=text with autocomplete|values=Serveur, Ordinateur de bureau, Ordinateur portable, Nas, Smartphone, Tablette, Mini-pc}}}
|-
!Environnement graphique: | {{{field|Environnement graphique|input type=checkboxes|values=Xfce,Enlightenment, Gnome, Kde}}}
|-
!Niveau de difficulté: | {{{field|Niveau de difficulté|input type=text with autocomplete|values=Débutant, Intermédiaire, Expérimenté, Expert}}}
|-
!Langage de programmation: | {{{field|Langage de programmation|input type=text with autocomplete|values=Ajax, Bash, C++, Html, Java, Perl, Php, Python}}}
|-
!Matériel: | {{{field|Matériel|input type=text with autocomplete|values=Serveur, carte vidéo}}}
|-
!Marque: | {{{field|Marque|values=Nvidia, Ati, Dell, Asus}}}
|-
!Connectique: | {{{field|Connectique|hidden}}}
|-
!Protocole: | {{{field|Protocole|hidden}}}
|}
{{{end template}}}

'''Texte libre:'''

{{{standard input|free text|rows=10}}}


{{{standard input|summary}}}

{{{standard input|minor edit}}} {{{standard input|watch}}}

{{{standard input|save}}} {{{standard input|preview}}} {{{standard input|changes}}} {{{standard input|cancel}}}
&lt;/includeonly&gt;</text>
      <sha1>6wrqql662sjim42kfgydkfs37p7x92i</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4168</id>
      <parentid>4167</parentid>
      <timestamp>2012-05-05T14:21:13Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="2002">&lt;noinclude&gt;
Ceci est le formulaire « Trucs et Astuces ».
Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;
si une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.


{{#forminput:form=Trucs et Astuces}}

&lt;/noinclude&gt;&lt;includeonly&gt;
&lt;div id=&quot;wikiPreview&quot; style=&quot;display: none; padding-bottom: 25px; margin-bottom: 25px; border-bottom: 1px solid #AAAAAA;&quot;&gt;&lt;/div&gt;
{{{for template|Trucs et Astuces|multiple|label=Trucs et Astuces}}}
{| class=&quot;formtable&quot;
!Domaine: | {{{field|Domaine|input type=checkboxes|values = Sécurité, Multimédia, Internet}}}
|-
!Protocole: 
| {{{field|Paquet|values=Http, ftp, Ip, Tcp}}}
|-
!Version debian: 
| {{{field|Version debian|input type=checkboxes|values=Wheezy, Squeeze, Lenny, Etch, Sarge, Woody, Potato, Slink, Hamm}}}
|-
!Installé sur: 
| {{{field|Installé sur|input type=text with autocomplete|values=Serveur, Ordinateur de bureau, Ordinateur portable, Nas, Smartphone, Tablette, Mini-pc}}}
|-
!Environnement graphique: 
| {{{field|Environnement graphique|input type=checkboxes|values=Xfce,Enlightenment, Gnome, Kde}}}
|-
!Niveau de difficulté: 
| {{{field|Niveau de difficulté|input type=text with autocomplete|values=Débutant, Intermédiaire, Expérimenté, Expert}}}
|-
!Langage de programmation: 
| {{{field|Langage de programmation|input type=text with autocomplete|values=Ajax, Bash, C++, Html, Java, Perl, Php, Python}}}
|-
!Matériel: 
| {{{field|Matériel|input type=text with autocomplete|values=Serveur, carte vidéo}}}
|-
!Marque: 
| {{{field|Marque|values=Nvidia, Ati, Dell, Asus}}}
|-
!Connectique: 
| {{{field|Connectique|hidden}}}
|-
!Protocole: 
| {{{field|Protocole|hidden}}}
|}
{{{end template}}}

'''Texte libre:'''

{{{standard input|free text|rows=10}}}


{{{standard input|summary}}}

{{{standard input|minor edit}}} {{{standard input|watch}}}

{{{standard input|save}}} {{{standard input|preview}}} {{{standard input|changes}}} {{{standard input|cancel}}}
&lt;/includeonly&gt;</text>
      <sha1>c8jv37hcer8o2i2pa7z53faezbha9y1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4169</id>
      <parentid>4168</parentid>
      <timestamp>2012-05-05T14:29:52Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="2902">&lt;noinclude&gt;
Ceci est le formulaire « Trucs et Astuces ».
Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;
si une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.


{{#forminput:form=Trucs et Astuces}}

&lt;/noinclude&gt;&lt;includeonly&gt;
&lt;div id=&quot;wikiPreview&quot; style=&quot;display: none; padding-bottom: 25px; margin-bottom: 25px; border-bottom: 1px solid #AAAAAA;&quot;&gt;&lt;/div&gt;
{{{for template|Trucs et Astuces|multiple|label=Trucs et Astuces}}}
{| class=&quot;formtable&quot;
!Domaine: 
| {{{field|Domaine|input type=checkboxes|values = Sécurité, Multimédia, Internet, Programmation, Réseau}}}
|-
!Paquet(s): 
| {{{field|Paquet|input type=text with autocomplete|values=Bluetooth, Ftp, http, Ip, Smtp, Tcp, Telnet, Udp, Wifi}}}
|-
!Version debian: 
| {{{field|Version debian|input type=checkboxes|values=Wheezy, Squeeze, Lenny, Etch, Sarge, Woody, Potato, Slink, Hamm}}}
|-
!Installé sur: 
| {{{field|Installé sur|input type=text with autocomplete|values=Serveur, Ordinateur de bureau, Ordinateur portable, Nas, Smartphone, Tablette, Mini-pc}}}
|-
!Environnement graphique: 
| {{{field|Environnement graphique|input type=checkboxes|values=Xfce,Enlightenment, Gnome, Kde}}}
|-
!Niveau de difficulté: 
| {{{field|Niveau de difficulté|input type=checkboxes|values=Débutant, Intermédiaire, Expérimenté, Expert}}}
|-
!Langage de programmation: 
| {{{field|Langage de programmation|input type=text with autocomplete|values=Ajax, Bash, C++, Html, Java, Perl, Php, Python}}}
|-
!Matériel: 
| {{{field|Matériel|input type=text with autocomplete|values=Serveur, carte vidéo}}}
|-
!Marque: 
| {{{field|Marque|input type=text with autocomplete|values=Nvidia, Ati, Dell, Asus}}}
|-
!Connectique: 
| {{{field|Connectique|input type=text with autocomplete|values = Port db9, 1 esata, 1 ethernet, 1 ethernet 10/100 base-t, 1 ethernet gigabit, 1 pcie, 1 rj45, 1 rs232, 1 rs485, 1 sata, 1 usb, 1 usb 2.0, 2 ethernet gigabit, 2 sata, 2 usb , 3 usb, 4 Rj11, 4 rj45, 4 usb, 6 usb, 7 usb 2.0, audio, Composite cvbs, Dbsf, Dvi, Entrée jack 3.5, esata, Ethernet 10/100 base-t, Ethernet gigabit, hdmi, Jack, Jtag, Lecteur carte SD, Lecteur de carte microsd, Lecteur de carte sd, Pcie, Péritel, Rj11, rj45, Rs232, Rs485, sata, série, sortie audio, Sortie audio numérique coaxiale, Sortie audio numérique optique, Sortie jack 3.5, sortie vidéo, Usb, Usb 2.0, Vga}}}
|-
!Protocole(s) utilis(é): 
| {{{field|Protocole|input type=text with autocomplete|values=Bluetooth, Ftp, http, Ip, Smtp, Tcp, Telnet, Udp, Wifi}}}
|}
{{{end template}}}

'''Texte libre:'''

{{{standard input|free text|rows=10}}}


{{{standard input|summary}}}

{{{standard input|minor edit}}} {{{standard input|watch}}}

{{{standard input|save}}} {{{standard input|preview}}} {{{standard input|changes}}} {{{standard input|cancel}}}
&lt;/includeonly&gt;</text>
      <sha1>54p2ioj94spm9lxlxdr4cpbqr5b1ufr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4170</id>
      <parentid>4169</parentid>
      <timestamp>2012-05-05T14:34:16Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="2964">&lt;noinclude&gt;
Ceci est le formulaire « Trucs et Astuces ».
Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;
si une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.


{{#forminput:form=Trucs et Astuces}}

&lt;/noinclude&gt;&lt;includeonly&gt;
&lt;div id=&quot;wikiPreview&quot; style=&quot;display: none; padding-bottom: 25px; margin-bottom: 25px; border-bottom: 1px solid #AAAAAA;&quot;&gt;&lt;/div&gt;
{{{for template|Trucs et Astuces|multiple|label=Trucs et Astuces}}}
{| class=&quot;formtable&quot; Dans les zones de texte séparez les valeurs par une virgule.
!Domaine: 
| {{{field|Domaine|input type=checkboxes|values = Sécurité, Multimédia, Internet, Programmation, Réseau}}}
|-
!Paquet(s): 
| {{{field|Paquet|input type=text with autocomplete|values=Bluetooth, Ftp, http, Ip, Smtp, Tcp, Telnet, Udp, Wifi}}}
|-
!Version debian: 
| {{{field|Version debian|input type=checkboxes|values=Wheezy, Squeeze, Lenny, Etch, Sarge, Woody, Potato, Slink, Hamm}}}
|-
!Installé sur: 
| {{{field|Installé sur|input type=text with autocomplete|values=Serveur, Ordinateur de bureau, Ordinateur portable, Nas, Smartphone, Tablette, Mini-pc}}}
|-
!Environnement graphique: 
| {{{field|Environnement graphique|input type=checkboxes|values=Xfce,Enlightenment, Gnome, Kde}}}
|-
!Niveau de difficulté: 
| {{{field|Niveau de difficulté|input type=checkboxes|values=Débutant, Intermédiaire, Expérimenté, Expert}}}
|-
!Langage de programmation: 
| {{{field|Langage de programmation|input type=text with autocomplete|values=Ajax, Bash, C++, Html, Java, Perl, Php, Python}}}
|-
!Matériel: 
| {{{field|Matériel|input type=text with autocomplete|values=Serveur, carte vidéo}}}
|-
!Marque: 
| {{{field|Marque|input type=text with autocomplete|values=Nvidia, Ati, Dell, Asus}}}
|-
!Connectique: 
| {{{field|Connectique|input type=text with autocomplete|values = Port db9, 1 esata, 1 ethernet, 1 ethernet 10/100 base-t, 1 ethernet gigabit, 1 pcie, 1 rj45, 1 rs232, 1 rs485, 1 sata, 1 usb, 1 usb 2.0, 2 ethernet gigabit, 2 sata, 2 usb , 3 usb, 4 Rj11, 4 rj45, 4 usb, 6 usb, 7 usb 2.0, audio, Composite cvbs, Dbsf, Dvi, Entrée jack 3.5, esata, Ethernet 10/100 base-t, Ethernet gigabit, hdmi, Jack, Jtag, Lecteur carte SD, Lecteur de carte microsd, Lecteur de carte sd, Pcie, Péritel, Rj11, rj45, Rs232, Rs485, sata, série, sortie audio, Sortie audio numérique coaxiale, Sortie audio numérique optique, Sortie jack 3.5, sortie vidéo, Usb, Usb 2.0, Vga}}}
|-
!Protocole(s) utilis(é): 
| {{{field|Protocole|input type=text with autocomplete|values=Bluetooth, Ftp, http, Ip, Smtp, Tcp, Telnet, Udp, Wifi}}}
|}
{{{end template}}}

'''Texte libre:'''

{{{standard input|free text|rows=10}}}


{{{standard input|summary}}}

{{{standard input|minor edit}}} {{{standard input|watch}}}

{{{standard input|save}}} {{{standard input|preview}}} {{{standard input|changes}}} {{{standard input|cancel}}}
&lt;/includeonly&gt;</text>
      <sha1>7krm1tlybo66mtwrovqnjbdg1343e8t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4171</id>
      <parentid>4170</parentid>
      <timestamp>2012-05-05T14:34:51Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="2971">&lt;noinclude&gt;
Ceci est le formulaire « Trucs et Astuces ».
Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;
si une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.


{{#forminput:form=Trucs et Astuces}}

&lt;/noinclude&gt;&lt;includeonly&gt;
&lt;div id=&quot;wikiPreview&quot; style=&quot;display: none; padding-bottom: 25px; margin-bottom: 25px; border-bottom: 1px solid #AAAAAA;&quot;&gt;&lt;/div&gt;
{{{for template|Trucs et Astuces|multiple|label=Trucs et Astuces}}}
{| class=&quot;formtable&quot; 
!Dans les zones de texte séparez les valeurs par une virgule. |
|-
!Domaine: 
| {{{field|Domaine|input type=checkboxes|values = Sécurité, Multimédia, Internet, Programmation, Réseau}}}
|-
!Paquet(s): 
| {{{field|Paquet|input type=text with autocomplete|values=Bluetooth, Ftp, http, Ip, Smtp, Tcp, Telnet, Udp, Wifi}}}
|-
!Version debian: 
| {{{field|Version debian|input type=checkboxes|values=Wheezy, Squeeze, Lenny, Etch, Sarge, Woody, Potato, Slink, Hamm}}}
|-
!Installé sur: 
| {{{field|Installé sur|input type=text with autocomplete|values=Serveur, Ordinateur de bureau, Ordinateur portable, Nas, Smartphone, Tablette, Mini-pc}}}
|-
!Environnement graphique: 
| {{{field|Environnement graphique|input type=checkboxes|values=Xfce,Enlightenment, Gnome, Kde}}}
|-
!Niveau de difficulté: 
| {{{field|Niveau de difficulté|input type=checkboxes|values=Débutant, Intermédiaire, Expérimenté, Expert}}}
|-
!Langage de programmation: 
| {{{field|Langage de programmation|input type=text with autocomplete|values=Ajax, Bash, C++, Html, Java, Perl, Php, Python}}}
|-
!Matériel: 
| {{{field|Matériel|input type=text with autocomplete|values=Serveur, carte vidéo}}}
|-
!Marque: 
| {{{field|Marque|input type=text with autocomplete|values=Nvidia, Ati, Dell, Asus}}}
|-
!Connectique: 
| {{{field|Connectique|input type=text with autocomplete|values = Port db9, 1 esata, 1 ethernet, 1 ethernet 10/100 base-t, 1 ethernet gigabit, 1 pcie, 1 rj45, 1 rs232, 1 rs485, 1 sata, 1 usb, 1 usb 2.0, 2 ethernet gigabit, 2 sata, 2 usb , 3 usb, 4 Rj11, 4 rj45, 4 usb, 6 usb, 7 usb 2.0, audio, Composite cvbs, Dbsf, Dvi, Entrée jack 3.5, esata, Ethernet 10/100 base-t, Ethernet gigabit, hdmi, Jack, Jtag, Lecteur carte SD, Lecteur de carte microsd, Lecteur de carte sd, Pcie, Péritel, Rj11, rj45, Rs232, Rs485, sata, série, sortie audio, Sortie audio numérique coaxiale, Sortie audio numérique optique, Sortie jack 3.5, sortie vidéo, Usb, Usb 2.0, Vga}}}
|-
!Protocole(s) utilis(é): 
| {{{field|Protocole|input type=text with autocomplete|values=Bluetooth, Ftp, http, Ip, Smtp, Tcp, Telnet, Udp, Wifi}}}
|}
{{{end template}}}

'''Texte libre:'''

{{{standard input|free text|rows=10}}}


{{{standard input|summary}}}

{{{standard input|minor edit}}} {{{standard input|watch}}}

{{{standard input|save}}} {{{standard input|preview}}} {{{standard input|changes}}} {{{standard input|cancel}}}
&lt;/includeonly&gt;</text>
      <sha1>ms3jeivvjcv5w2d1jrpvhbxnkb6jcxo</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4172</id>
      <parentid>4171</parentid>
      <timestamp>2012-05-05T14:36:09Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="3193">&lt;noinclude&gt;
Ceci est le formulaire « Trucs et Astuces ».
Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;
si une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.


{{#forminput:form=Trucs et Astuces}}

&lt;/noinclude&gt;&lt;includeonly&gt;
&lt;div id=&quot;wikiPreview&quot; style=&quot;display: none; padding-bottom: 25px; margin-bottom: 25px; border-bottom: 1px solid #AAAAAA;&quot;&gt;&lt;/div&gt;
{{{for template|Trucs et Astuces|multiple|label=Trucs et Astuces}}}
{| class=&quot;formtable&quot; 
!Dans les zones de texte séparez les valeurs par une virgule. |
|-
!Domaine: 
| {{{field|Domaine|input type=checkboxes|values = Sécurité, Multimédia, Internet, Programmation, Réseau}}}
|-
!Paquet(s): 
| {{{field|Paquet|input type=text with autocomplete|values=Bluetooth, Ftp, http, Ip, Smtp, Tcp, Telnet, Udp, Wifi}}} Séparez les valeurs par une virgule
|-
!Version debian: 
| {{{field|Version debian|input type=checkboxes|values=Wheezy, Squeeze, Lenny, Etch, Sarge, Woody, Potato, Slink, Hamm}}}
|-
!Installé sur: 
| {{{field|Installé sur|input type=text with autocomplete|values=Serveur, Ordinateur de bureau, Ordinateur portable, Nas, Smartphone, Tablette, Mini-pc}}}
|-
!Environnement graphique: 
| {{{field|Environnement graphique|input type=checkboxes|values=Xfce,Enlightenment, Gnome, Kde}}}
|-
!Niveau de difficulté: 
| {{{field|Niveau de difficulté|input type=checkboxes|values=Débutant, Intermédiaire, Expérimenté, Expert}}}
|-
!Langage de programmation: 
| {{{field|Langage de programmation|input type=text with autocomplete|values=Ajax, Bash, C++, Html, Java, Perl, Php, Python}}} Séparez les valeurs par une virgule
|-
!Matériel: 
| {{{field|Matériel|input type=text with autocomplete|values=Serveur, carte vidéo}}} Séparez les valeurs par une virgule
|-
!Marque: 
| {{{field|Marque|input type=text with autocomplete|values=Nvidia, Ati, Dell, Asus}}} Séparez les valeurs par une virgule
|-
!Connectique: 
| {{{field|Connectique|input type=text with autocomplete|values = Port db9, 1 esata, 1 ethernet, 1 ethernet 10/100 base-t, 1 ethernet gigabit, 1 pcie, 1 rj45, 1 rs232, 1 rs485, 1 sata, 1 usb, 1 usb 2.0, 2 ethernet gigabit, 2 sata, 2 usb , 3 usb, 4 Rj11, 4 rj45, 4 usb, 6 usb, 7 usb 2.0, audio, Composite cvbs, Dbsf, Dvi, Entrée jack 3.5, esata, Ethernet 10/100 base-t, Ethernet gigabit, hdmi, Jack, Jtag, Lecteur carte SD, Lecteur de carte microsd, Lecteur de carte sd, Pcie, Péritel, Rj11, rj45, Rs232, Rs485, sata, série, sortie audio, Sortie audio numérique coaxiale, Sortie audio numérique optique, Sortie jack 3.5, sortie vidéo, Usb, Usb 2.0, Vga}}} Séparez les valeurs par une virgule
|-
!Protocole(s) utilis(é): 
| {{{field|Protocole|input type=text with autocomplete|values=Bluetooth, Ftp, http, Ip, Smtp, Tcp, Telnet, Udp, Wifi}}} Séparez les valeurs par une virgule
|}
{{{end template}}}

'''Texte libre:'''

{{{standard input|free text|rows=10}}}


{{{standard input|summary}}}

{{{standard input|minor edit}}} {{{standard input|watch}}}

{{{standard input|save}}} {{{standard input|preview}}} {{{standard input|changes}}} {{{standard input|cancel}}}
&lt;/includeonly&gt;</text>
      <sha1>dmofhbljb5scjz3rvjtf3n0qnpt3u05</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4173</id>
      <parentid>4172</parentid>
      <timestamp>2012-05-05T14:37:00Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="3201">&lt;noinclude&gt;
Ceci est le formulaire « Trucs et Astuces ».
Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;
si une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.


{{#forminput:form=Trucs et Astuces}}

&lt;/noinclude&gt;&lt;includeonly&gt;
&lt;div id=&quot;wikiPreview&quot; style=&quot;display: none; padding-bottom: 25px; margin-bottom: 25px; border-bottom: 1px solid #AAAAAA;&quot;&gt;&lt;/div&gt;
{{{for template|Trucs et Astuces|multiple|label=Trucs et Astuces}}}
{| class=&quot;formtable&quot; 
!Dans les zones de texte séparez les valeurs par une virgule. |
|-
!Domaine: 
| {{{field|Domaine|input type=checkboxes|values = Sécurité, Multimédia, Internet, Programmation, Réseau}}}
|-
!Paquet(s): 
| {{{field|Paquet|cols=50|input type=text with autocomplete|values=Bluetooth, Ftp, http, Ip, Smtp, Tcp, Telnet, Udp, Wifi}}} Séparez les valeurs par une virgule
|-
!Version debian: 
| {{{field|Version debian|input type=checkboxes|values=Wheezy, Squeeze, Lenny, Etch, Sarge, Woody, Potato, Slink, Hamm}}}
|-
!Installé sur: 
| {{{field|Installé sur|input type=text with autocomplete|values=Serveur, Ordinateur de bureau, Ordinateur portable, Nas, Smartphone, Tablette, Mini-pc}}}
|-
!Environnement graphique: 
| {{{field|Environnement graphique|input type=checkboxes|values=Xfce,Enlightenment, Gnome, Kde}}}
|-
!Niveau de difficulté: 
| {{{field|Niveau de difficulté|input type=checkboxes|values=Débutant, Intermédiaire, Expérimenté, Expert}}}
|-
!Langage de programmation: 
| {{{field|Langage de programmation|input type=text with autocomplete|values=Ajax, Bash, C++, Html, Java, Perl, Php, Python}}} Séparez les valeurs par une virgule
|-
!Matériel: 
| {{{field|Matériel|input type=text with autocomplete|values=Serveur, carte vidéo}}} Séparez les valeurs par une virgule
|-
!Marque: 
| {{{field|Marque|input type=text with autocomplete|values=Nvidia, Ati, Dell, Asus}}} Séparez les valeurs par une virgule
|-
!Connectique: 
| {{{field|Connectique|input type=text with autocomplete|values = Port db9, 1 esata, 1 ethernet, 1 ethernet 10/100 base-t, 1 ethernet gigabit, 1 pcie, 1 rj45, 1 rs232, 1 rs485, 1 sata, 1 usb, 1 usb 2.0, 2 ethernet gigabit, 2 sata, 2 usb , 3 usb, 4 Rj11, 4 rj45, 4 usb, 6 usb, 7 usb 2.0, audio, Composite cvbs, Dbsf, Dvi, Entrée jack 3.5, esata, Ethernet 10/100 base-t, Ethernet gigabit, hdmi, Jack, Jtag, Lecteur carte SD, Lecteur de carte microsd, Lecteur de carte sd, Pcie, Péritel, Rj11, rj45, Rs232, Rs485, sata, série, sortie audio, Sortie audio numérique coaxiale, Sortie audio numérique optique, Sortie jack 3.5, sortie vidéo, Usb, Usb 2.0, Vga}}} Séparez les valeurs par une virgule
|-
!Protocole(s) utilis(é): 
| {{{field|Protocole|input type=text with autocomplete|values=Bluetooth, Ftp, http, Ip, Smtp, Tcp, Telnet, Udp, Wifi}}} Séparez les valeurs par une virgule
|}
{{{end template}}}

'''Texte libre:'''

{{{standard input|free text|rows=10}}}


{{{standard input|summary}}}

{{{standard input|minor edit}}} {{{standard input|watch}}}

{{{standard input|save}}} {{{standard input|preview}}} {{{standard input|changes}}} {{{standard input|cancel}}}
&lt;/includeonly&gt;</text>
      <sha1>91f41efrsqdxy6wyaqucvpg2cqgg4ry</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4174</id>
      <parentid>4173</parentid>
      <timestamp>2012-05-05T14:37:35Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="3201">&lt;noinclude&gt;
Ceci est le formulaire « Trucs et Astuces ».
Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;
si une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.


{{#forminput:form=Trucs et Astuces}}

&lt;/noinclude&gt;&lt;includeonly&gt;
&lt;div id=&quot;wikiPreview&quot; style=&quot;display: none; padding-bottom: 25px; margin-bottom: 25px; border-bottom: 1px solid #AAAAAA;&quot;&gt;&lt;/div&gt;
{{{for template|Trucs et Astuces|multiple|label=Trucs et Astuces}}}
{| class=&quot;formtable&quot; 
!Dans les zones de texte séparez les valeurs par une virgule. |
|-
!Domaine: 
| {{{field|Domaine|input type=checkboxes|values = Sécurité, Multimédia, Internet, Programmation, Réseau}}}
|-
!Paquet(s): 
| {{{field|Paquet|cols=40|input type=text with autocomplete|values=Bluetooth, Ftp, http, Ip, Smtp, Tcp, Telnet, Udp, Wifi}}} Séparez les valeurs par une virgule
|-
!Version debian: 
| {{{field|Version debian|input type=checkboxes|values=Wheezy, Squeeze, Lenny, Etch, Sarge, Woody, Potato, Slink, Hamm}}}
|-
!Installé sur: 
| {{{field|Installé sur|input type=text with autocomplete|values=Serveur, Ordinateur de bureau, Ordinateur portable, Nas, Smartphone, Tablette, Mini-pc}}}
|-
!Environnement graphique: 
| {{{field|Environnement graphique|input type=checkboxes|values=Xfce,Enlightenment, Gnome, Kde}}}
|-
!Niveau de difficulté: 
| {{{field|Niveau de difficulté|input type=checkboxes|values=Débutant, Intermédiaire, Expérimenté, Expert}}}
|-
!Langage de programmation: 
| {{{field|Langage de programmation|input type=text with autocomplete|values=Ajax, Bash, C++, Html, Java, Perl, Php, Python}}} Séparez les valeurs par une virgule
|-
!Matériel: 
| {{{field|Matériel|input type=text with autocomplete|values=Serveur, carte vidéo}}} Séparez les valeurs par une virgule
|-
!Marque: 
| {{{field|Marque|input type=text with autocomplete|values=Nvidia, Ati, Dell, Asus}}} Séparez les valeurs par une virgule
|-
!Connectique: 
| {{{field|Connectique|input type=text with autocomplete|values = Port db9, 1 esata, 1 ethernet, 1 ethernet 10/100 base-t, 1 ethernet gigabit, 1 pcie, 1 rj45, 1 rs232, 1 rs485, 1 sata, 1 usb, 1 usb 2.0, 2 ethernet gigabit, 2 sata, 2 usb , 3 usb, 4 Rj11, 4 rj45, 4 usb, 6 usb, 7 usb 2.0, audio, Composite cvbs, Dbsf, Dvi, Entrée jack 3.5, esata, Ethernet 10/100 base-t, Ethernet gigabit, hdmi, Jack, Jtag, Lecteur carte SD, Lecteur de carte microsd, Lecteur de carte sd, Pcie, Péritel, Rj11, rj45, Rs232, Rs485, sata, série, sortie audio, Sortie audio numérique coaxiale, Sortie audio numérique optique, Sortie jack 3.5, sortie vidéo, Usb, Usb 2.0, Vga}}} Séparez les valeurs par une virgule
|-
!Protocole(s) utilis(é): 
| {{{field|Protocole|input type=text with autocomplete|values=Bluetooth, Ftp, http, Ip, Smtp, Tcp, Telnet, Udp, Wifi}}} Séparez les valeurs par une virgule
|}
{{{end template}}}

'''Texte libre:'''

{{{standard input|free text|rows=10}}}


{{{standard input|summary}}}

{{{standard input|minor edit}}} {{{standard input|watch}}}

{{{standard input|save}}} {{{standard input|preview}}} {{{standard input|changes}}} {{{standard input|cancel}}}
&lt;/includeonly&gt;</text>
      <sha1>oc1jlc3j35cpd3gf68dvik8exkiz55q</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4175</id>
      <parentid>4174</parentid>
      <timestamp>2012-05-05T14:38:05Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="3201">&lt;noinclude&gt;
Ceci est le formulaire « Trucs et Astuces ».
Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;
si une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.


{{#forminput:form=Trucs et Astuces}}

&lt;/noinclude&gt;&lt;includeonly&gt;
&lt;div id=&quot;wikiPreview&quot; style=&quot;display: none; padding-bottom: 25px; margin-bottom: 25px; border-bottom: 1px solid #AAAAAA;&quot;&gt;&lt;/div&gt;
{{{for template|Trucs et Astuces|multiple|label=Trucs et Astuces}}}
{| class=&quot;formtable&quot; 
!Dans les zones de texte séparez les valeurs par une virgule. |
|-
!Domaine: 
| {{{field|Domaine|input type=checkboxes|values = Sécurité, Multimédia, Internet, Programmation, Réseau}}}
|-
!Paquet(s): 
| {{{field|Paquet|size=40|input type=text with autocomplete|values=Bluetooth, Ftp, http, Ip, Smtp, Tcp, Telnet, Udp, Wifi}}} Séparez les valeurs par une virgule
|-
!Version debian: 
| {{{field|Version debian|input type=checkboxes|values=Wheezy, Squeeze, Lenny, Etch, Sarge, Woody, Potato, Slink, Hamm}}}
|-
!Installé sur: 
| {{{field|Installé sur|input type=text with autocomplete|values=Serveur, Ordinateur de bureau, Ordinateur portable, Nas, Smartphone, Tablette, Mini-pc}}}
|-
!Environnement graphique: 
| {{{field|Environnement graphique|input type=checkboxes|values=Xfce,Enlightenment, Gnome, Kde}}}
|-
!Niveau de difficulté: 
| {{{field|Niveau de difficulté|input type=checkboxes|values=Débutant, Intermédiaire, Expérimenté, Expert}}}
|-
!Langage de programmation: 
| {{{field|Langage de programmation|input type=text with autocomplete|values=Ajax, Bash, C++, Html, Java, Perl, Php, Python}}} Séparez les valeurs par une virgule
|-
!Matériel: 
| {{{field|Matériel|input type=text with autocomplete|values=Serveur, carte vidéo}}} Séparez les valeurs par une virgule
|-
!Marque: 
| {{{field|Marque|input type=text with autocomplete|values=Nvidia, Ati, Dell, Asus}}} Séparez les valeurs par une virgule
|-
!Connectique: 
| {{{field|Connectique|input type=text with autocomplete|values = Port db9, 1 esata, 1 ethernet, 1 ethernet 10/100 base-t, 1 ethernet gigabit, 1 pcie, 1 rj45, 1 rs232, 1 rs485, 1 sata, 1 usb, 1 usb 2.0, 2 ethernet gigabit, 2 sata, 2 usb , 3 usb, 4 Rj11, 4 rj45, 4 usb, 6 usb, 7 usb 2.0, audio, Composite cvbs, Dbsf, Dvi, Entrée jack 3.5, esata, Ethernet 10/100 base-t, Ethernet gigabit, hdmi, Jack, Jtag, Lecteur carte SD, Lecteur de carte microsd, Lecteur de carte sd, Pcie, Péritel, Rj11, rj45, Rs232, Rs485, sata, série, sortie audio, Sortie audio numérique coaxiale, Sortie audio numérique optique, Sortie jack 3.5, sortie vidéo, Usb, Usb 2.0, Vga}}} Séparez les valeurs par une virgule
|-
!Protocole(s) utilis(é): 
| {{{field|Protocole|input type=text with autocomplete|values=Bluetooth, Ftp, http, Ip, Smtp, Tcp, Telnet, Udp, Wifi}}} Séparez les valeurs par une virgule
|}
{{{end template}}}

'''Texte libre:'''

{{{standard input|free text|rows=10}}}


{{{standard input|summary}}}

{{{standard input|minor edit}}} {{{standard input|watch}}}

{{{standard input|save}}} {{{standard input|preview}}} {{{standard input|changes}}} {{{standard input|cancel}}}
&lt;/includeonly&gt;</text>
      <sha1>7aiq7g8um6117q3lexskprskxwkloz6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4176</id>
      <parentid>4175</parentid>
      <timestamp>2012-05-05T14:39:08Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="3257">&lt;noinclude&gt;
Ceci est le formulaire « Trucs et Astuces ».
Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;
si une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.


{{#forminput:form=Trucs et Astuces}}

&lt;/noinclude&gt;&lt;includeonly&gt;
&lt;div id=&quot;wikiPreview&quot; style=&quot;display: none; padding-bottom: 25px; margin-bottom: 25px; border-bottom: 1px solid #AAAAAA;&quot;&gt;&lt;/div&gt;
{{{for template|Trucs et Astuces|multiple|label=Trucs et Astuces}}}
{| class=&quot;formtable&quot; 
!Dans les zones de texte séparez les valeurs par une virgule. |
|-
!Domaine: 
| {{{field|Domaine|input type=checkboxes|values = Sécurité, Multimédia, Internet, Programmation, Réseau}}}
|-
!Paquet(s): 
| {{{field|Paquet|size=60|input type=text with autocomplete|values=Bluetooth, Ftp, http, Ip, Smtp, Tcp, Telnet, Udp, Wifi}}} Séparez les valeurs par une virgule
|-
!Version debian: 
| {{{field|Version debian|size=60|input type=checkboxes|values=Wheezy, Squeeze, Lenny, Etch, Sarge, Woody, Potato, Slink, Hamm}}}
|-
!Installé sur: 
| {{{field|Installé sur|size=60|input type=text with autocomplete|values=Serveur, Ordinateur de bureau, Ordinateur portable, Nas, Smartphone, Tablette, Mini-pc}}}
|-
!Environnement graphique: 
| {{{field|Environnement graphique|input type=checkboxes|values=Xfce,Enlightenment, Gnome, Kde}}}
|-
!Niveau de difficulté: 
| {{{field|Niveau de difficulté|input type=checkboxes|values=Débutant, Intermédiaire, Expérimenté, Expert}}}
|-
!Langage de programmation: 
| {{{field|Langage de programmation|size=60|input type=text with autocomplete|values=Ajax, Bash, C++, Html, Java, Perl, Php, Python}}} Séparez les valeurs par une virgule
|-
!Matériel: 
| {{{field|Matériel|size=60|input type=text with autocomplete|values=Serveur, carte vidéo}}} Séparez les valeurs par une virgule
|-
!Marque: 
| {{{field|Marque|size=60|input type=text with autocomplete|values=Nvidia, Ati, Dell, Asus}}} Séparez les valeurs par une virgule
|-
!Connectique: 
| {{{field|Connectique|size=60|input type=text with autocomplete|values = Port db9, 1 esata, 1 ethernet, 1 ethernet 10/100 base-t, 1 ethernet gigabit, 1 pcie, 1 rj45, 1 rs232, 1 rs485, 1 sata, 1 usb, 1 usb 2.0, 2 ethernet gigabit, 2 sata, 2 usb , 3 usb, 4 Rj11, 4 rj45, 4 usb, 6 usb, 7 usb 2.0, audio, Composite cvbs, Dbsf, Dvi, Entrée jack 3.5, esata, Ethernet 10/100 base-t, Ethernet gigabit, hdmi, Jack, Jtag, Lecteur carte SD, Lecteur de carte microsd, Lecteur de carte sd, Pcie, Péritel, Rj11, rj45, Rs232, Rs485, sata, série, sortie audio, Sortie audio numérique coaxiale, Sortie audio numérique optique, Sortie jack 3.5, sortie vidéo, Usb, Usb 2.0, Vga}}} Séparez les valeurs par une virgule
|-
!Protocole(s) utilis(é): 
| {{{field|Protocole|size=60|input type=text with autocomplete|values=Bluetooth, Ftp, http, Ip, Smtp, Tcp, Telnet, Udp, Wifi}}} Séparez les valeurs par une virgule
|}
{{{end template}}}

'''Texte libre:'''

{{{standard input|free text|rows=10}}}


{{{standard input|summary}}}

{{{standard input|minor edit}}} {{{standard input|watch}}}

{{{standard input|save}}} {{{standard input|preview}}} {{{standard input|changes}}} {{{standard input|cancel}}}
&lt;/includeonly&gt;</text>
      <sha1>the494rifvr15l7qpz2p7wdax5rgcjp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4177</id>
      <parentid>4176</parentid>
      <timestamp>2012-05-05T14:39:56Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="3245">&lt;noinclude&gt;
Ceci est le formulaire « Trucs et Astuces ».
Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;
si une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.


{{#forminput:form=Trucs et Astuces}}

&lt;/noinclude&gt;&lt;includeonly&gt;
&lt;div id=&quot;wikiPreview&quot; style=&quot;display: none; padding-bottom: 25px; margin-bottom: 25px; border-bottom: 1px solid #AAAAAA;&quot;&gt;&lt;/div&gt;
{{{for template|Trucs et Astuces|multiple|label=Trucs et Astuces}}}
{| class=&quot;formtable&quot; 
!Dans les zones de texte séparez les valeurs par une virgule. |
|-
!Domaine: 
| {{{field|Domaine|input type=checkboxes|values = Sécurité, Multimédia, Internet, Programmation, Réseau}}}
|-
!Paquet(s): 
| {{{field|Paquet|size=60|input type=text with autocomplete|values=Bluetooth, Ftp, http, Ip, Smtp, Tcp, Telnet, Udp, Wifi}}} Séparez les valeurs par une virgule
|-
!Version debian: 
| {{{field|Version debian|size=60|input type=checkboxes|values=Wheezy, Squeeze, Lenny, Etch, Sarge, Woody, Potato, Slink, Hamm}}}
|-
!Installé sur: 
| {{{field|Installé sur|size=60|input type=checkboxes|values=Serveur, Ordinateur de bureau, Ordinateur portable, Nas, Smartphone, Tablette, Mini-pc}}}
|-
!Environnement graphique: 
| {{{field|Environnement graphique|input type=checkboxes|values=Xfce,Enlightenment, Gnome, Kde}}}
|-
!Niveau de difficulté: 
| {{{field|Niveau de difficulté|input type=checkboxes|values=Débutant, Intermédiaire, Expérimenté, Expert}}}
|-
!Langage de programmation: 
| {{{field|Langage de programmation|size=60|input type=text with autocomplete|values=Ajax, Bash, C++, Html, Java, Perl, Php, Python}}} Séparez les valeurs par une virgule
|-
!Matériel: 
| {{{field|Matériel|size=60|input type=text with autocomplete|values=Serveur, carte vidéo}}} Séparez les valeurs par une virgule
|-
!Marque: 
| {{{field|Marque|size=60|input type=text with autocomplete|values=Nvidia, Ati, Dell, Asus}}} Séparez les valeurs par une virgule
|-
!Connectique: 
| {{{field|Connectique|size=60|input type=text with autocomplete|values = Port db9, 1 esata, 1 ethernet, 1 ethernet 10/100 base-t, 1 ethernet gigabit, 1 pcie, 1 rj45, 1 rs232, 1 rs485, 1 sata, 1 usb, 1 usb 2.0, 2 ethernet gigabit, 2 sata, 2 usb , 3 usb, 4 Rj11, 4 rj45, 4 usb, 6 usb, 7 usb 2.0, audio, Composite cvbs, Dbsf, Dvi, Entrée jack 3.5, esata, Ethernet 10/100 base-t, Ethernet gigabit, hdmi, Jack, Jtag, Lecteur carte SD, Lecteur de carte microsd, Lecteur de carte sd, Pcie, Péritel, Rj11, rj45, Rs232, Rs485, sata, série, sortie audio, Sortie audio numérique coaxiale, Sortie audio numérique optique, Sortie jack 3.5, sortie vidéo, Usb, Usb 2.0, Vga}}} Séparez les valeurs par une virgule
|-
!Protocole(s) utilis(é): 
| {{{field|Protocole|size=60|input type=text with autocomplete|values=Bluetooth, Ftp, http, Ip, Smtp, Tcp, Telnet, Udp, Wifi}}} Séparez les valeurs par une virgule
|}
{{{end template}}}

'''Texte libre:'''

{{{standard input|free text|rows=10}}}


{{{standard input|summary}}}

{{{standard input|minor edit}}} {{{standard input|watch}}}

{{{standard input|save}}} {{{standard input|preview}}} {{{standard input|changes}}} {{{standard input|cancel}}}
&lt;/includeonly&gt;</text>
      <sha1>i5n59h5qyfox3rr2idbjb7gyzihqyt9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4181</id>
      <parentid>4177</parentid>
      <timestamp>2012-05-05T14:49:51Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="3236">&lt;noinclude&gt;
Ceci est le formulaire « Trucs et Astuces ».
Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;
si une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.


{{#forminput:form=Trucs et Astuces}}

&lt;/noinclude&gt;&lt;includeonly&gt;
&lt;div id=&quot;wikiPreview&quot; style=&quot;display: none; padding-bottom: 25px; margin-bottom: 25px; border-bottom: 1px solid #AAAAAA;&quot;&gt;&lt;/div&gt;
{{{for template|Trucs et Astuces|label=Trucs et Astuces}}}
{| class=&quot;formtable&quot; 
!Dans les zones de texte séparez les valeurs par une virgule. |
|-
!Domaine: 
| {{{field|Domaine|input type=checkboxes|values = Sécurité, Multimédia, Internet, Programmation, Réseau}}}
|-
!Paquet(s): 
| {{{field|Paquet|size=60|input type=text with autocomplete|values=Bluetooth, Ftp, http, Ip, Smtp, Tcp, Telnet, Udp, Wifi}}} Séparez les valeurs par une virgule
|-
!Version debian: 
| {{{field|Version debian|size=60|input type=checkboxes|values=Wheezy, Squeeze, Lenny, Etch, Sarge, Woody, Potato, Slink, Hamm}}}
|-
!Installé sur: 
| {{{field|Installé sur|size=60|input type=checkboxes|values=Serveur, Ordinateur de bureau, Ordinateur portable, Nas, Smartphone, Tablette, Mini-pc}}}
|-
!Environnement graphique: 
| {{{field|Environnement graphique|input type=checkboxes|values=Xfce,Enlightenment, Gnome, Kde}}}
|-
!Niveau de difficulté: 
| {{{field|Niveau de difficulté|input type=checkboxes|values=Débutant, Intermédiaire, Expérimenté, Expert}}}
|-
!Langage de programmation: 
| {{{field|Langage de programmation|size=60|input type=text with autocomplete|values=Ajax, Bash, C++, Html, Java, Perl, Php, Python}}} Séparez les valeurs par une virgule
|-
!Matériel: 
| {{{field|Matériel|size=60|input type=text with autocomplete|values=Serveur, carte vidéo}}} Séparez les valeurs par une virgule
|-
!Marque: 
| {{{field|Marque|size=60|input type=text with autocomplete|values=Nvidia, Ati, Dell, Asus}}} Séparez les valeurs par une virgule
|-
!Connectique: 
| {{{field|Connectique|size=60|input type=text with autocomplete|values = Port db9, 1 esata, 1 ethernet, 1 ethernet 10/100 base-t, 1 ethernet gigabit, 1 pcie, 1 rj45, 1 rs232, 1 rs485, 1 sata, 1 usb, 1 usb 2.0, 2 ethernet gigabit, 2 sata, 2 usb , 3 usb, 4 Rj11, 4 rj45, 4 usb, 6 usb, 7 usb 2.0, audio, Composite cvbs, Dbsf, Dvi, Entrée jack 3.5, esata, Ethernet 10/100 base-t, Ethernet gigabit, hdmi, Jack, Jtag, Lecteur carte SD, Lecteur de carte microsd, Lecteur de carte sd, Pcie, Péritel, Rj11, rj45, Rs232, Rs485, sata, série, sortie audio, Sortie audio numérique coaxiale, Sortie audio numérique optique, Sortie jack 3.5, sortie vidéo, Usb, Usb 2.0, Vga}}} Séparez les valeurs par une virgule
|-
!Protocole(s) utilis(é): 
| {{{field|Protocole|size=60|input type=text with autocomplete|values=Bluetooth, Ftp, http, Ip, Smtp, Tcp, Telnet, Udp, Wifi}}} Séparez les valeurs par une virgule
|}
{{{end template}}}

'''Texte libre:'''

{{{standard input|free text|rows=10}}}


{{{standard input|summary}}}

{{{standard input|minor edit}}} {{{standard input|watch}}}

{{{standard input|save}}} {{{standard input|preview}}} {{{standard input|changes}}} {{{standard input|cancel}}}
&lt;/includeonly&gt;</text>
      <sha1>ke75hf2jppk3me3vq74nzypvy881kt0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4191</id>
      <parentid>4181</parentid>
      <timestamp>2012-05-05T20:59:23Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="3451">&lt;noinclude&gt;
Ceci est le formulaire « Trucs et Astuces ».
Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;
si une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.


{{#forminput:form=Trucs et Astuces}}

&lt;/noinclude&gt;&lt;includeonly&gt;
&lt;div id=&quot;wikiPreview&quot; style=&quot;display: none; padding-bottom: 25px; margin-bottom: 25px; border-bottom: 1px solid #AAAAAA;&quot;&gt;&lt;/div&gt;
{{{for template|Trucs et Astuces|label=Trucs et Astuces}}}
{| class=&quot;formtable&quot; 
!Dans les zones de texte séparez les valeurs par une virgule. |
|-
!Domaine: 
| {{{field|Domaine|input type=checkboxes|values = Sécurité, Multimédia, Internet, Programmation, Réseau}}}
|-
!Action(s) effectuée(s): 
| {{{field|Action|input type=checkboxes|values = Assignation, Back-up, Configuration, Création, Gestion, Installation, Nettoyage, Redémarrage, Remplissage, Sauvegarde, Suppression}}}
|-
!Paquet(s): 
| {{{field|Paquet|size=60|input type=text with autocomplete|values=Bluetooth, Ftp, http, Ip, Smtp, Tcp, Telnet, Udp, Wifi}}} Séparez les valeurs par une virgule
|-
!Version debian: 
| {{{field|Version debian|size=60|input type=checkboxes|values=Wheezy, Squeeze, Lenny, Etch, Sarge, Woody, Potato, Slink, Hamm}}}
|-
!Installé sur: 
| {{{field|Installé sur|size=60|input type=checkboxes|values=Serveur, Ordinateur de bureau, Ordinateur portable, Nas, Smartphone, Tablette, Mini-pc}}}
|-
!Environnement graphique: 
| {{{field|Environnement graphique|input type=checkboxes|values=Xfce,Enlightenment, Gnome, Kde}}}
|-
!Niveau de difficulté: 
| {{{field|Niveau de difficulté|input type=checkboxes|values=Débutant, Intermédiaire, Expérimenté, Expert}}}
|-
!Langage de programmation: 
| {{{field|Langage de programmation|size=60|input type=text with autocomplete|values=Ajax, Bash, C++, Html, Java, Perl, Php, Python}}} Séparez les valeurs par une virgule
|-
!Matériel: 
| {{{field|Matériel|size=60|input type=text with autocomplete|values=Serveur, carte vidéo}}} Séparez les valeurs par une virgule
|-
!Marque: 
| {{{field|Marque|size=60|input type=text with autocomplete|values=Nvidia, Ati, Dell, Asus}}} Séparez les valeurs par une virgule
|-
!Connectique: 
| {{{field|Connectique|size=60|input type=text with autocomplete|values = Port db9, 1 esata, 1 ethernet, 1 ethernet 10/100 base-t, 1 ethernet gigabit, 1 pcie, 1 rj45, 1 rs232, 1 rs485, 1 sata, 1 usb, 1 usb 2.0, 2 ethernet gigabit, 2 sata, 2 usb , 3 usb, 4 Rj11, 4 rj45, 4 usb, 6 usb, 7 usb 2.0, audio, Composite cvbs, Dbsf, Dvi, Entrée jack 3.5, esata, Ethernet 10/100 base-t, Ethernet gigabit, hdmi, Jack, Jtag, Lecteur carte SD, Lecteur de carte microsd, Lecteur de carte sd, Pcie, Péritel, Rj11, rj45, Rs232, Rs485, sata, série, sortie audio, Sortie audio numérique coaxiale, Sortie audio numérique optique, Sortie jack 3.5, sortie vidéo, Usb, Usb 2.0, Vga}}} Séparez les valeurs par une virgule
|-
!Protocole(s) utilis(é): 
| {{{field|Protocole|size=60|input type=text with autocomplete|values=Bluetooth, Ftp, http, Ip, Smtp, Tcp, Telnet, Udp, Wifi}}} Séparez les valeurs par une virgule
|}
{{{end template}}}

'''Texte libre:'''

{{{standard input|free text|rows=10}}}


{{{standard input|summary}}}

{{{standard input|minor edit}}} {{{standard input|watch}}}

{{{standard input|save}}} {{{standard input|preview}}} {{{standard input|changes}}} {{{standard input|cancel}}}
&lt;/includeonly&gt;</text>
      <sha1>7gp9d9lyhbtlq3kpnckcz1sba6usymh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4260</id>
      <parentid>4191</parentid>
      <timestamp>2012-05-18T09:30:14Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="3612">&lt;noinclude&gt;
Ceci est le formulaire « Trucs et Astuces ».
Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;
si une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.


{{#forminput:form=Trucs et Astuces}}

&lt;/noinclude&gt;&lt;includeonly&gt;
&lt;div id=&quot;wikiPreview&quot; style=&quot;display: none; padding-bottom: 25px; margin-bottom: 25px; border-bottom: 1px solid #AAAAAA;&quot;&gt;&lt;/div&gt;
{{{for template|Trucs et Astuces|label=Trucs et Astuces}}}
{| class=&quot;formtable&quot; 
!Dans les zones de texte séparez les valeurs par une virgule. |
|-
!Domaine: 
| {{{field|Domaine|input type=checkboxes|values = Matériels et drivers,Logiciels, Sécurité, Multimédia, Internet, Programmation, Réseau}}}
|-
!Action(s) effectuée(s): 
| {{{field|Action|input type=checkboxes|values = Assignation, Back-up, Configuration, Création, Gestion, Installation, Nettoyage, Redémarrage, Remplissage, Sauvegarde, Suppression}}}
|-
!Paquet(s): 
| {{{field|Paquet|size=60|input type=text with autocomplete|values=Bluetooth, Ftp, http, Ip, Smtp, Tcp, Telnet, Udp, Wifi}}} Séparez les valeurs par une virgule
|-
!Version debian: 
| {{{field|Version debian|size=60|input type=checkboxes|values=Wheezy, Squeeze, Lenny, Etch, Sarge, Woody, Potato, Slink, Hamm}}}
|-
!Branche: 
| {{{field|Version debian|size=60|input type=checkboxes|values=Stable, testing, Unstable, Experimental, Toutes}}}
|-
!Installé sur: 
| {{{field|Installé sur|size=60|input type=checkboxes|values=Serveur, Ordinateur de bureau, Ordinateur portable, Nas, Smartphone, Tablette, Mini-pc}}}
|-
!Environnement graphique: 
| {{{field|Environnement graphique|input type=checkboxes|values=Xfce,Enlightenment, Gnome, Kde}}}
|-
!Niveau de difficulté: 
| {{{field|Niveau de difficulté|input type=checkboxes|values=Débutant, Intermédiaire, Expérimenté, Expert}}}
|-
!Langage de programmation: 
| {{{field|Langage de programmation|size=60|input type=text with autocomplete|values=Ajax, Bash, C++, Html, Java, Perl, Php, Python}}} Séparez les valeurs par une virgule
|-
!Matériel: 
| {{{field|Matériel|size=60|input type=text with autocomplete|values=Serveur, carte vidéo}}} Séparez les valeurs par une virgule
|-
!Marque: 
| {{{field|Marque|size=60|input type=text with autocomplete|values=Nvidia, Ati, Dell, Asus}}} Séparez les valeurs par une virgule
|-
!Connectique: 
| {{{field|Connectique|size=60|input type=text with autocomplete|values = Port db9, 1 esata, 1 ethernet, 1 ethernet 10/100 base-t, 1 ethernet gigabit, 1 pcie, 1 rj45, 1 rs232, 1 rs485, 1 sata, 1 usb, 1 usb 2.0, 2 ethernet gigabit, 2 sata, 2 usb , 3 usb, 4 Rj11, 4 rj45, 4 usb, 6 usb, 7 usb 2.0, audio, Composite cvbs, Dbsf, Dvi, Entrée jack 3.5, esata, Ethernet 10/100 base-t, Ethernet gigabit, hdmi, Jack, Jtag, Lecteur carte SD, Lecteur de carte microsd, Lecteur de carte sd, Pcie, Péritel, Rj11, rj45, Rs232, Rs485, sata, série, sortie audio, Sortie audio numérique coaxiale, Sortie audio numérique optique, Sortie jack 3.5, sortie vidéo, Usb, Usb 2.0, Vga}}} Séparez les valeurs par une virgule
|-
!Protocole(s) utilis(é): 
| {{{field|Protocole|size=60|input type=text with autocomplete|values=Bluetooth, Ftp, http, Ip, Smtp, Tcp, Telnet, Udp, Wifi}}} Séparez les valeurs par une virgule
|}
{{{end template}}}

'''Texte libre:'''

{{{standard input|free text|rows=10}}}


{{{standard input|summary}}}

{{{standard input|minor edit}}} {{{standard input|watch}}}

{{{standard input|save}}} {{{standard input|preview}}} {{{standard input|changes}}} {{{standard input|cancel}}}
&lt;/includeonly&gt;</text>
      <sha1>fzob1jb5bpeix4mhwq19s39lyqyf0xy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4262</id>
      <parentid>4260</parentid>
      <timestamp>2012-05-18T09:50:14Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="3623">&lt;noinclude&gt;
Ceci est le formulaire « Trucs et Astuces ».
Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;
si une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.


{{#forminput:form=Trucs et Astuces}}

&lt;/noinclude&gt;&lt;includeonly&gt;
&lt;div id=&quot;wikiPreview&quot; style=&quot;display: none; padding-bottom: 25px; margin-bottom: 25px; border-bottom: 1px solid #AAAAAA;&quot;&gt;&lt;/div&gt;
{{{for template|Trucs et Astuces|label=Trucs et Astuces}}}
{| class=&quot;formtable&quot; 
!Dans les zones de texte séparez les valeurs par une virgule. |
|-
!Domaine: 
| {{{field|Domaine|input type=checkboxes|values = Matériels et drivers, Commande, Logiciels, Sécurité, Multimédia, Internet, Programmation, Réseau}}}
|-
!Action(s) effectuée(s): 
| {{{field|Action|input type=checkboxes|values = Assignation, Back-up, Configuration, Création, Gestion, Installation, Nettoyage, Redémarrage, Remplissage, Sauvegarde, Suppression}}}
|-
!Paquet(s): 
| {{{field|Paquet|size=60|input type=text with autocomplete|values=Bluetooth, Ftp, http, Ip, Smtp, Tcp, Telnet, Udp, Wifi}}} Séparez les valeurs par une virgule
|-
!Version debian: 
| {{{field|Version debian|size=60|input type=checkboxes|values=Wheezy, Squeeze, Lenny, Etch, Sarge, Woody, Potato, Slink, Hamm}}}
|-
!Branche: 
| {{{field|Version debian|size=60|input type=checkboxes|values=Stable, testing, Unstable, Experimental, Toutes}}}
|-
!Installé sur: 
| {{{field|Installé sur|size=60|input type=checkboxes|values=Serveur, Ordinateur de bureau, Ordinateur portable, Nas, Smartphone, Tablette, Mini-pc}}}
|-
!Environnement graphique: 
| {{{field|Environnement graphique|input type=checkboxes|values=Xfce,Enlightenment, Gnome, Kde}}}
|-
!Niveau de difficulté: 
| {{{field|Niveau de difficulté|input type=checkboxes|values=Débutant, Intermédiaire, Expérimenté, Expert}}}
|-
!Langage de programmation: 
| {{{field|Langage de programmation|size=60|input type=text with autocomplete|values=Ajax, Bash, C++, Html, Java, Perl, Php, Python}}} Séparez les valeurs par une virgule
|-
!Matériel: 
| {{{field|Matériel|size=60|input type=text with autocomplete|values=Serveur, carte vidéo}}} Séparez les valeurs par une virgule
|-
!Marque: 
| {{{field|Marque|size=60|input type=text with autocomplete|values=Nvidia, Ati, Dell, Asus}}} Séparez les valeurs par une virgule
|-
!Connectique: 
| {{{field|Connectique|size=60|input type=text with autocomplete|values = Port db9, 1 esata, 1 ethernet, 1 ethernet 10/100 base-t, 1 ethernet gigabit, 1 pcie, 1 rj45, 1 rs232, 1 rs485, 1 sata, 1 usb, 1 usb 2.0, 2 ethernet gigabit, 2 sata, 2 usb , 3 usb, 4 Rj11, 4 rj45, 4 usb, 6 usb, 7 usb 2.0, audio, Composite cvbs, Dbsf, Dvi, Entrée jack 3.5, esata, Ethernet 10/100 base-t, Ethernet gigabit, hdmi, Jack, Jtag, Lecteur carte SD, Lecteur de carte microsd, Lecteur de carte sd, Pcie, Péritel, Rj11, rj45, Rs232, Rs485, sata, série, sortie audio, Sortie audio numérique coaxiale, Sortie audio numérique optique, Sortie jack 3.5, sortie vidéo, Usb, Usb 2.0, Vga}}} Séparez les valeurs par une virgule
|-
!Protocole(s) utilis(é): 
| {{{field|Protocole|size=60|input type=text with autocomplete|values=Bluetooth, Ftp, http, Ip, Smtp, Tcp, Telnet, Udp, Wifi}}} Séparez les valeurs par une virgule
|}
{{{end template}}}

'''Texte libre:'''

{{{standard input|free text|rows=10}}}


{{{standard input|summary}}}

{{{standard input|minor edit}}} {{{standard input|watch}}}

{{{standard input|save}}} {{{standard input|preview}}} {{{standard input|changes}}} {{{standard input|cancel}}}
&lt;/includeonly&gt;</text>
      <sha1>p3iuchic3t5yrj33214muk3tjj7xxn0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4273</id>
      <parentid>4262</parentid>
      <timestamp>2012-05-24T09:30:51Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="3606">&lt;noinclude&gt;
Ceci est le formulaire « Trucs et Astuces ».
Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;
si une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.


{{#forminput:form=Trucs et Astuces}}

&lt;/noinclude&gt;&lt;includeonly&gt;
&lt;div id=&quot;wikiPreview&quot; style=&quot;display: none; padding-bottom: 25px; margin-bottom: 25px; border-bottom: 1px solid #AAAAAA;&quot;&gt;&lt;/div&gt;
{{{for template|Trucs et Astuces|label=Trucs et Astuces}}}
{| class=&quot;formtable&quot; 
!Dans les zones de texte séparez les valeurs par une virgule. |
|-
!Domaine: 
| {{{field|Domaine|input type=checkboxes|values = Matériels et drivers, Commande, Logiciels, Sécurité, Multimédia, Internet, Programmation, Réseau}}}
|-
!Action(s) effectuée(s): 
| {{{field|Action|input type=checkboxes|values = Configuration, Création, Gestion, Installation, Nettoyage, Redémarrage, Remplissage, Sauvegarde, Suppression}}}
|-
!Paquet(s): 
| {{{field|Paquet|size=60|input type=text with autocomplete|values=Bluetooth, Ftp, http, Ip, Smtp, Tcp, Telnet, Udp, Wifi}}} Séparez les valeurs par une virgule
|-
!Version debian: 
| {{{field|Version debian|size=60|input type=checkboxes|values=Sid, Wheezy, Squeeze, Lenny, Etch, Sarge, Woody, Potato, Slink, Hamm}}}
|-
!Branche: 
| {{{field|Version debian|size=60|input type=checkboxes|values=Stable, testing, Unstable, Experimental, Toutes}}}
|-
!Installé sur: 
| {{{field|Installé sur|size=60|input type=checkboxes|values=Serveur, Ordinateur de bureau, Ordinateur portable, Nas, Smartphone, Tablette, Mini-pc}}}
|-
!Environnement graphique: 
| {{{field|Environnement graphique|input type=checkboxes|values=Xfce,Enlightenment, Gnome, Kde}}}
|-
!Niveau de difficulté: 
| {{{field|Niveau de difficulté|input type=checkboxes|values=Débutant, Intermédiaire, Expérimenté, Expert}}}
|-
!Langage de programmation: 
| {{{field|Langage de programmation|size=60|input type=text with autocomplete|values=Ajax, Bash, C++, Html, Java, Perl, Php, Python}}} Séparez les valeurs par une virgule
|-
!Matériel: 
| {{{field|Matériel|size=60|input type=text with autocomplete|values=Serveur, carte vidéo}}} Séparez les valeurs par une virgule
|-
!Marque: 
| {{{field|Marque|size=60|input type=text with autocomplete|values=Nvidia, Ati, Dell, Asus}}} Séparez les valeurs par une virgule
|-
!Connectique: 
| {{{field|Connectique|size=60|input type=text with autocomplete|values = Port db9, 1 esata, 1 ethernet, 1 ethernet 10/100 base-t, 1 ethernet gigabit, 1 pcie, 1 rj45, 1 rs232, 1 rs485, 1 sata, 1 usb, 1 usb 2.0, 2 ethernet gigabit, 2 sata, 2 usb , 3 usb, 4 Rj11, 4 rj45, 4 usb, 6 usb, 7 usb 2.0, audio, Composite cvbs, Dbsf, Dvi, Entrée jack 3.5, esata, Ethernet 10/100 base-t, Ethernet gigabit, hdmi, Jack, Jtag, Lecteur carte SD, Lecteur de carte microsd, Lecteur de carte sd, Pcie, Péritel, Rj11, rj45, Rs232, Rs485, sata, série, sortie audio, Sortie audio numérique coaxiale, Sortie audio numérique optique, Sortie jack 3.5, sortie vidéo, Usb, Usb 2.0, Vga}}} Séparez les valeurs par une virgule
|-
!Protocole(s) utilis(é): 
| {{{field|Protocole|size=60|input type=text with autocomplete|values=Bluetooth, Ftp, http, Ip, Smtp, Tcp, Telnet, Udp, Wifi}}} Séparez les valeurs par une virgule
|}
{{{end template}}}

'''Texte libre:'''

{{{standard input|free text|rows=10}}}


{{{standard input|summary}}}

{{{standard input|minor edit}}} {{{standard input|watch}}}

{{{standard input|save}}} {{{standard input|preview}}} {{{standard input|changes}}} {{{standard input|cancel}}}
&lt;/includeonly&gt;</text>
      <sha1>dz3sij0d1ngba0vui0sbcj50krkxa4q</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4277</id>
      <parentid>4273</parentid>
      <timestamp>2012-05-24T09:38:08Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="3715">&lt;noinclude&gt;
Ceci est le formulaire « Trucs et Astuces ».
Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;
si une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.


{{#forminput:form=Trucs et Astuces}}

&lt;/noinclude&gt;&lt;includeonly&gt;
&lt;div id=&quot;wikiPreview&quot; style=&quot;display: none; padding-bottom: 25px; margin-bottom: 25px; border-bottom: 1px solid #AAAAAA;&quot;&gt;&lt;/div&gt;
{{{for template|Trucs et Astuces|label=Trucs et Astuces}}}
{| class=&quot;formtable&quot; 
!Dans les zones de texte séparez les valeurs par une virgule. |
|-
!&lt;br&gt;Domaine: 
|&lt;br&gt; {{{field|Domaine|input type=checkboxes|values = Matériels et drivers, Commande, Logiciels, Sécurité, Multimédia, Internet, Programmation, Réseau}}}
|-
!&lt;br&gt;Action(s) effectuée(s): 
|&lt;br&gt; {{{field|Action|input type=checkboxes|values = Configuration, Création, Gestion, Installation, Nettoyage, Redémarrage, Remplissage, Sauvegarde, Suppression}}}
|-
!&lt;br&gt;Paquet(s): 
|&lt;br&gt; {{{field|Paquet|size=60|input type=text with autocomplete|values=Bluetooth, Ftp, http, Ip, Smtp, Tcp, Telnet, Udp, Wifi}}} Séparez les valeurs par une virgule
|-
!&lt;br&gt;Version debian: 
|&lt;br&gt; {{{field|Version debian|size=60|input type=checkboxes|values=Sid, Wheezy, Squeeze, Lenny, Etch, Sarge, Woody, Potato, Slink, Hamm}}}
|-
!&lt;br&gt;Branche: 
|&lt;br&gt; {{{field|Version debian|size=60|input type=checkboxes|values=Stable, testing, Unstable, Experimental, Toutes}}}
|-
!&lt;br&gt;Installé sur: 
|&lt;br&gt; {{{field|Installé sur|size=60|input type=checkboxes|values=Serveur, Ordinateur de bureau, Ordinateur portable, Nas, Smartphone, Tablette, Mini-pc}}}
|-
!Environnement graphique: 
| {{{field|Environnement graphique|input type=checkboxes|values=Xfce,Enlightenment, Gnome, Kde}}}
|-
!&lt;br&gt;Niveau de difficulté: 
| &lt;br&gt;{{{field|Niveau de difficulté|input type=checkboxes|values=Débutant, Intermédiaire, Expérimenté, Expert}}}
|-
!&lt;br&gt;Langage de programmation: 
| &lt;br&gt;{{{field|Langage de programmation|size=60|input type=text with autocomplete|values=Ajax, Bash, C++, Html, Java, Perl, Php, Python}}} Séparez les valeurs par une virgule
|-
!&lt;br&gt;Matériel: 
|&lt;br&gt; {{{field|Matériel|size=60|input type=text with autocomplete|values=Serveur, carte vidéo}}} Séparez les valeurs par une virgule
|-
!&lt;br&gt;Marque: 
| &lt;br&gt;{{{field|Marque|size=60|input type=text with autocomplete|values=Nvidia, Ati, Dell, Asus}}} Séparez les valeurs par une virgule
|-
!&lt;br&gt;Connectique: 
|&lt;br&gt; {{{field|Connectique|size=60|input type=text with autocomplete|values = Port db9, 1 esata, 1 ethernet, 1 ethernet 10/100 base-t, 1 ethernet gigabit, 1 pcie, 1 rj45, 1 rs232, 1 rs485, 1 sata, 1 usb, 1 usb 2.0, 2 ethernet gigabit, 2 sata, 2 usb , 3 usb, 4 Rj11, 4 rj45, 4 usb, 6 usb, 7 usb 2.0, audio, Composite cvbs, Dbsf, Dvi, Entrée jack 3.5, esata, Ethernet 10/100 base-t, Ethernet gigabit, hdmi, Jack, Jtag, Lecteur carte SD, Lecteur de carte microsd, Lecteur de carte sd, Pcie, Péritel, Rj11, rj45, Rs232, Rs485, sata, série, sortie audio, Sortie audio numérique coaxiale, Sortie audio numérique optique, Sortie jack 3.5, sortie vidéo, Usb, Usb 2.0, Vga}}} Séparez les valeurs par une virgule
|-
!&lt;br&gt;Protocole(s) utilis(é): 
|&lt;br&gt; {{{field|Protocole|size=60|input type=text with autocomplete|values=Bluetooth, Ftp, http, Ip, Smtp, Tcp, Telnet, Udp, Wifi|placeholder=Séparez les valeurs par une virgule}}} 
|}
{{{end template}}}

'''Texte libre:'''

{{{standard input|free text|rows=10}}}


{{{standard input|summary}}}

{{{standard input|minor edit}}} {{{standard input|watch}}}

{{{standard input|save}}} {{{standard input|preview}}} {{{standard input|changes}}} {{{standard input|cancel}}}
&lt;/includeonly&gt;</text>
      <sha1>t5q2ynbgw7t94kl7b8hpu1f32mpay8i</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4278</id>
      <parentid>4277</parentid>
      <timestamp>2012-05-24T09:38:41Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="3753">&lt;noinclude&gt;
Ceci est le formulaire « Trucs et Astuces ».
Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;
si une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.


{{#forminput:form=Trucs et Astuces}}

&lt;/noinclude&gt;&lt;includeonly&gt;
&lt;div id=&quot;wikiPreview&quot; style=&quot;display: none; padding-bottom: 25px; margin-bottom: 25px; border-bottom: 1px solid #AAAAAA;&quot;&gt;&lt;/div&gt;
{{{for template|Trucs et Astuces|label=Trucs et Astuces}}}
{| class=&quot;formtable&quot; 
!Dans les zones de texte séparez les valeurs par une virgule. |
|-
!&lt;br&gt;Domaine: 
|&lt;br&gt; {{{field|Domaine|input type=checkboxes|values = Matériels et drivers, Commande, Logiciels, Sécurité, Multimédia, Internet, Programmation, Réseau}}}
|-
!&lt;br&gt;Action(s) effectuée(s): 
|&lt;br&gt; {{{field|Action|input type=checkboxes|values = Configuration, Création, Gestion, Installation, Nettoyage, Redémarrage, Remplissage, Sauvegarde, Suppression}}}
|-
!&lt;br&gt;Paquet(s): 
|&lt;br&gt; {{{field|Paquet|size=60|input type=text with autocomplete|values=Bluetooth, Ftp, http, Ip, Smtp, Tcp, Telnet, Udp, Wifi}}} Séparez les valeurs par une virgule
|-
!&lt;br&gt;Version debian: 
|&lt;br&gt; {{{field|Version debian|size=60|input type=checkboxes|values=Sid, Wheezy, Squeeze, Lenny, Etch, Sarge, Woody, Potato, Slink, Hamm}}}
|-
!&lt;br&gt;Branche: 
|&lt;br&gt; {{{field|Version debian|size=60|input type=checkboxes|values=Stable, testing, Unstable, Experimental, Toutes}}}
|-
!&lt;br&gt;Installé sur: 
|&lt;br&gt; {{{field|Installé sur|size=60|input type=checkboxes|values=Serveur, Ordinateur de bureau, Ordinateur portable, Nas, Smartphone, Tablette, Mini-pc}}}
|-
!Environnement graphique: 
| {{{field|Environnement graphique|input type=checkboxes|values=Xfce,Enlightenment, Gnome, Kde}}}
|-
!&lt;br&gt;Niveau de difficulté: 
| &lt;br&gt;{{{field|Niveau de difficulté|input type=checkboxes|values=Débutant, Intermédiaire, Expérimenté, Expert}}}
|-
!&lt;br&gt;Langage de programmation: 
| &lt;br&gt;{{{field|Langage de programmation|size=60|input type=text with autocomplete|values=Ajax, Bash, C++, Html, Java, Perl, Php, Python}}} Séparez les valeurs par une virgule
|-
!&lt;br&gt;Matériel: 
|&lt;br&gt; {{{field|Matériel|size=60|input type=text with autocomplete|values=Serveur, carte vidéo|placeholder=Séparez les valeurs par une virgule}}} 
|-
!&lt;br&gt;Marque: 
| &lt;br&gt;{{{field|Marque|size=60|input type=text with autocomplete|values=Nvidia, Ati, Dell, Asus|placeholder=Séparez les valeurs par une virgule}}} 
|-
!&lt;br&gt;Connectique: 
|&lt;br&gt; {{{field|Connectique|size=60|input type=text with autocomplete|values = Port db9, 1 esata, 1 ethernet, 1 ethernet 10/100 base-t, 1 ethernet gigabit, 1 pcie, 1 rj45, 1 rs232, 1 rs485, 1 sata, 1 usb, 1 usb 2.0, 2 ethernet gigabit, 2 sata, 2 usb , 3 usb, 4 Rj11, 4 rj45, 4 usb, 6 usb, 7 usb 2.0, audio, Composite cvbs, Dbsf, Dvi, Entrée jack 3.5, esata, Ethernet 10/100 base-t, Ethernet gigabit, hdmi, Jack, Jtag, Lecteur carte SD, Lecteur de carte microsd, Lecteur de carte sd, Pcie, Péritel, Rj11, rj45, Rs232, Rs485, sata, série, sortie audio, Sortie audio numérique coaxiale, Sortie audio numérique optique, Sortie jack 3.5, sortie vidéo, Usb, Usb 2.0, Vga|placeholder=Séparez les valeurs par une virgule}}}
|-
!&lt;br&gt;Protocole(s) utilis(é): 
|&lt;br&gt; {{{field|Protocole|size=60|input type=text with autocomplete|values=Bluetooth, Ftp, http, Ip, Smtp, Tcp, Telnet, Udp, Wifi|placeholder=Séparez les valeurs par une virgule}}} 
|}
{{{end template}}}

'''Texte libre:'''

{{{standard input|free text|rows=10}}}


{{{standard input|summary}}}

{{{standard input|minor edit}}} {{{standard input|watch}}}

{{{standard input|save}}} {{{standard input|preview}}} {{{standard input|changes}}} {{{standard input|cancel}}}
&lt;/includeonly&gt;</text>
      <sha1>5jv39vwtjqy5dmya5mjft1j9yxmjizs</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4326</id>
      <parentid>4278</parentid>
      <timestamp>2012-06-04T19:44:04Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="3761">&lt;noinclude&gt;
Ceci est le formulaire « Trucs et Astuces ».
Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;
si une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.


{{#forminput:form=Trucs et Astuces}}

&lt;/noinclude&gt;&lt;includeonly&gt;
&lt;div id=&quot;wikiPreview&quot; style=&quot;display: none; padding-bottom: 25px; margin-bottom: 25px; border-bottom: 1px solid #AAAAAA;&quot;&gt;&lt;/div&gt;
{{{for template|Trucs et Astuces|label=Trucs et Astuces}}}
{| class=&quot;formtable&quot; 
!Dans les zones de texte séparez les valeurs par une virgule. |
|-
!&lt;br&gt;Domaine: 
|&lt;br&gt; {{{field|Domaine|input type=checkboxes|values = Matériels et drivers, Commande, Logiciels, Sécurité, Multimédia, Internet, Programmation, Réseau}}}
|-
!&lt;br&gt;Action(s) effectuée(s): 
|&lt;br&gt; {{{field|Action|input type=checkboxes|values = Configuration, Création, Gestion, Installation, Nettoyage, Redémarrage, Remplissage, Sauvegarde, Suppression}}}
|-
!&lt;br&gt;Paquet(s): 
|&lt;br&gt; {{{field|Paquet|size=60|input type=text with autocomplete|values=Bluetooth, Ftp, http, Ip, Smtp, Tcp, Telnet, Udp, Wifi}}} Séparez les valeurs par une virgule
|-
!&lt;br&gt;Version debian: 
|&lt;br&gt; {{{field|Version debian|size=60|input type=checkboxes|values=Sid, Wheezy, Squeeze, Lenny, Etch, Sarge, Woody, Potato, Slink, Hamm}}}
|-
!&lt;br&gt;Branche: 
|&lt;br&gt; {{{field|Version debian|size=60|input type=checkboxes|values=Stable, testing, Unstable, Experimental, Toutes}}}
|-
!&lt;br&gt;Installé sur: 
|&lt;br&gt; {{{field|Installé sur|size=60|input type=checkboxes|values=Serveur, Ordinateur de bureau, Ordinateur portable, Nas, Smartphone, Tablette, Mini-pc}}}
|-
!&lt;br&gt;Environnement graphique: 
|&lt;br&gt; {{{field|Environnement graphique|input type=checkboxes|values=Xfce,Enlightenment, Gnome, Kde}}}
|-
!&lt;br&gt;Niveau de difficulté: 
| &lt;br&gt;{{{field|Niveau de difficulté|input type=checkboxes|values=Débutant, Intermédiaire, Expérimenté, Expert}}}
|-
!&lt;br&gt;Langage de programmation: 
| &lt;br&gt;{{{field|Langage de programmation|size=60|input type=text with autocomplete|values=Ajax, Bash, C++, Html, Java, Perl, Php, Python}}} Séparez les valeurs par une virgule
|-
!&lt;br&gt;Matériel: 
|&lt;br&gt; {{{field|Matériel|size=60|input type=text with autocomplete|values=Serveur, carte vidéo|placeholder=Séparez les valeurs par une virgule}}} 
|-
!&lt;br&gt;Marque: 
| &lt;br&gt;{{{field|Marque|size=60|input type=text with autocomplete|values=Nvidia, Ati, Dell, Asus|placeholder=Séparez les valeurs par une virgule}}} 
|-
!&lt;br&gt;Connectique: 
|&lt;br&gt; {{{field|Connectique|size=60|input type=text with autocomplete|values = Port db9, 1 esata, 1 ethernet, 1 ethernet 10/100 base-t, 1 ethernet gigabit, 1 pcie, 1 rj45, 1 rs232, 1 rs485, 1 sata, 1 usb, 1 usb 2.0, 2 ethernet gigabit, 2 sata, 2 usb , 3 usb, 4 Rj11, 4 rj45, 4 usb, 6 usb, 7 usb 2.0, audio, Composite cvbs, Dbsf, Dvi, Entrée jack 3.5, esata, Ethernet 10/100 base-t, Ethernet gigabit, hdmi, Jack, Jtag, Lecteur carte SD, Lecteur de carte microsd, Lecteur de carte sd, Pcie, Péritel, Rj11, rj45, Rs232, Rs485, sata, série, sortie audio, Sortie audio numérique coaxiale, Sortie audio numérique optique, Sortie jack 3.5, sortie vidéo, Usb, Usb 2.0, Vga|placeholder=Séparez les valeurs par une virgule}}}
|-
!&lt;br&gt;Protocole(s) utilis(é): 
|&lt;br&gt; {{{field|Protocole|size=60|input type=text with autocomplete|values=Bluetooth, Ftp, http, Ip, Smtp, Tcp, Telnet, Udp, Wifi|placeholder=Séparez les valeurs par une virgule}}} 
|}
{{{end template}}}

'''Texte libre:'''

{{{standard input|free text|rows=10}}}


{{{standard input|summary}}}

{{{standard input|minor edit}}} {{{standard input|watch}}}

{{{standard input|save}}} {{{standard input|preview}}} {{{standard input|changes}}} {{{standard input|cancel}}}
&lt;/includeonly&gt;</text>
      <sha1>mrbsr2sdews6oj5hl0cgnaihcb7uahm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4327</id>
      <parentid>4326</parentid>
      <timestamp>2012-06-04T19:45:53Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="3924">&lt;noinclude&gt;
Ceci est le formulaire « Trucs et Astuces ».
Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;
si une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.


{{#forminput:form=Trucs et Astuces}}

&lt;/noinclude&gt;&lt;includeonly&gt;
&lt;div id=&quot;wikiPreview&quot; style=&quot;display: none; padding-bottom: 25px; margin-bottom: 25px; border-bottom: 1px solid #AAAAAA;&quot;&gt;&lt;/div&gt;
{{{for template|Trucs et Astuces|label=Trucs et Astuces}}}
{| class=&quot;formtable&quot; 
!Dans les zones de texte séparez les valeurs par une virgule. |
|-
!&lt;br&gt;Domaine: 
|&lt;br&gt; {{{field|Domaine|input type=checkboxes|values = Matériels et drivers, Commande, Logiciels, Sécurité, Multimédia, Internet, Programmation, Réseau}}}
|-
!&lt;br&gt;Action(s) effectuée(s): 
|&lt;br&gt; {{{field|Action|input type=checkboxes|values = Configuration, Création, Gestion, Installation, Nettoyage, Redémarrage, Remplissage, Sauvegarde, Suppression}}}
|-
!&lt;br&gt;Paquet(s): 
|&lt;br&gt; {{{field|Paquet|size=60|input type=text with autocomplete|values=Bluetooth, Ftp, http, Ip, Smtp, Tcp, Telnet, Udp, Wifi}}} Séparez les valeurs par une virgule
|-
!&lt;br&gt;Version debian: 
|&lt;br&gt; {{{field|Version debian|size=60|input type=checkboxes|values=Sid, Wheezy, Squeeze, Lenny, Etch, Sarge, Woody, Potato, Slink, Hamm}}}
|-
!&lt;br&gt;Branche: 
|&lt;br&gt; {{{field|Version debian|size=60|input type=checkboxes|values=Stable, testing, Unstable, Experimental, Toutes}}}
|-
!&lt;br&gt;Installé sur: 
|&lt;br&gt; {{{field|Installé sur|size=60|input type=checkboxes|values=Serveur, Ordinateur de bureau, Ordinateur portable, Nas, Smartphone, Tablette, Mini-pc}}}
|-
!&lt;br&gt;Environnement graphique: 
|&lt;br&gt; {{{field|Environnement graphique|input type=checkboxes|values=Xfce,Enlightenment, Gnome, Kde}}}
|-
!&lt;br&gt;Niveau de difficulté: 
| &lt;br&gt;{{{field|Niveau de difficulté|input type=checkboxes|values=Débutant, Intermédiaire, Expérimenté, Expert}}}
|-
!&lt;br&gt;Langage de programmation: 
| &lt;br&gt;{{{field|Langage de programmation|size=60|input type=text with autocomplete|values=Ajax, Bash, C++, Html, Java, Perl, Php, Python|placeholder=Séparez les différentes valeurs par une virgule le cas échéant}}} 
|-
!&lt;br&gt;Matériel: 
|&lt;br&gt; {{{field|Matériel|size=60|input type=text with autocomplete|values=Serveur, carte vidéo|placeholder=Séparez les différentes valeurs par une virgule le cas échéant}}} 
|-
!&lt;br&gt;Marque: 
| &lt;br&gt;{{{field|Marque|size=60|input type=text with autocomplete|values=Nvidia, Ati, Dell, Asus|placeholder=Séparez les différentes valeurs par une virgule le cas échéant}}} 
|-
!&lt;br&gt;Connectique: 
|&lt;br&gt; {{{field|Connectique|size=60|input type=text with autocomplete|values = Port db9, 1 esata, 1 ethernet, 1 ethernet 10/100 base-t, 1 ethernet gigabit, 1 pcie, 1 rj45, 1 rs232, 1 rs485, 1 sata, 1 usb, 1 usb 2.0, 2 ethernet gigabit, 2 sata, 2 usb , 3 usb, 4 Rj11, 4 rj45, 4 usb, 6 usb, 7 usb 2.0, audio, Composite cvbs, Dbsf, Dvi, Entrée jack 3.5, esata, Ethernet 10/100 base-t, Ethernet gigabit, hdmi, Jack, Jtag, Lecteur carte SD, Lecteur de carte microsd, Lecteur de carte sd, Pcie, Péritel, Rj11, rj45, Rs232, Rs485, sata, série, sortie audio, Sortie audio numérique coaxiale, Sortie audio numérique optique, Sortie jack 3.5, sortie vidéo, Usb, Usb 2.0, Vga|placeholder=Séparez les différentes valeurs par une virgule le cas échéant}}}
|-
!&lt;br&gt;Protocole(s) utilis(é): 
|&lt;br&gt; {{{field|Protocole|size=60|input type=text with autocomplete|values=Bluetooth, Ftp, http, Ip, Smtp, Tcp, Telnet, Udp, Wifi|placeholder=Séparez les différentes valeurs par une virgule le cas échéant}}} 
|}
{{{end template}}}

'''Texte libre:'''

{{{standard input|free text|rows=10}}}


{{{standard input|summary}}}

{{{standard input|minor edit}}} {{{standard input|watch}}}

{{{standard input|save}}} {{{standard input|preview}}} {{{standard input|changes}}} {{{standard input|cancel}}}
&lt;/includeonly&gt;</text>
      <sha1>lxbu3sqd3nfp8dcdzwzp13h8uhmwwvb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4328</id>
      <parentid>4327</parentid>
      <timestamp>2012-06-04T19:47:20Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="3967">&lt;noinclude&gt;
Ceci est le formulaire « Trucs et Astuces ».
Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;
si une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.


{{#forminput:form=Trucs et Astuces}}

&lt;/noinclude&gt;&lt;includeonly&gt;
&lt;div id=&quot;wikiPreview&quot; style=&quot;display: none; padding-bottom: 25px; margin-bottom: 25px; border-bottom: 1px solid #AAAAAA;&quot;&gt;&lt;/div&gt;
{{{for template|Trucs et Astuces|label=Trucs et Astuces}}}
{| class=&quot;formtable&quot; 
!Dans les zones de texte séparez les valeurs par une virgule. |
|-
!&lt;br&gt;Domaine: 
|&lt;br&gt; {{{field|Domaine|input type=checkboxes|values = Matériels et drivers, Commande, Logiciels, Sécurité, Multimédia, Internet, Programmation, Réseau}}}
|-
!&lt;br&gt;Action(s) effectuée(s): 
|&lt;br&gt; {{{field|Action|input type=checkboxes|values = Configuration, Création, Gestion, Installation, Nettoyage, Redémarrage, Remplissage, Sauvegarde, Suppression}}}
|-
!&lt;br&gt;Paquet(s): 
|&lt;br&gt; {{{field|Paquet|size=60|input type=text with autocomplete|values=Bluetooth, Ftp, http, Ip, Smtp, Tcp, Telnet, Udp, Wifi|placeholder=Séparez les différentes valeurs par une virgule le cas échéant}}} 
|-
!&lt;br&gt;Version debian: 
|&lt;br&gt; {{{field|Version debian|size=60|input type=checkboxes|values=Sid, Wheezy, Squeeze, Lenny, Etch, Sarge, Woody, Potato, Slink, Hamm}}}
|-
!&lt;br&gt;Branche: 
|&lt;br&gt; {{{field|Version debian|size=60|input type=checkboxes|values=Stable, testing, Unstable, Experimental, Toutes}}}
|-
!&lt;br&gt;Installé sur: 
|&lt;br&gt; {{{field|Installé sur|size=60|input type=checkboxes|values=Serveur, Ordinateur de bureau, Ordinateur portable, Nas, Smartphone, Tablette, Mini-pc}}}
|-
!&lt;br&gt;Environnement graphique: 
|&lt;br&gt; {{{field|Environnement graphique|input type=checkboxes|values=Xfce,Enlightenment, Gnome, Kde}}}
|-
!&lt;br&gt;Niveau de difficulté: 
| &lt;br&gt;{{{field|Niveau de difficulté|input type=checkboxes|values=Débutant, Intermédiaire, Expérimenté, Expert}}}
|-
!&lt;br&gt;Langage de programmation: 
| &lt;br&gt;{{{field|Langage de programmation|size=60|input type=text with autocomplete|values=Ajax, Bash, C++, Html, Java, Perl, Php, Python|placeholder=Séparez les différentes valeurs par une virgule le cas échéant}}} 
|-
!&lt;br&gt;Matériel: 
|&lt;br&gt; {{{field|Matériel|size=60|input type=text with autocomplete|values=Serveur, carte vidéo|placeholder=Séparez les différentes valeurs par une virgule le cas échéant}}} 
|-
!&lt;br&gt;Marque: 
| &lt;br&gt;{{{field|Marque|size=60|input type=text with autocomplete|values=Nvidia, Ati, Dell, Asus|placeholder=Séparez les différentes valeurs par une virgule le cas échéant}}} 
|-
!&lt;br&gt;Connectique: 
|&lt;br&gt; {{{field|Connectique|size=60|input type=text with autocomplete|values = Port db9, 1 esata, 1 ethernet, 1 ethernet 10/100 base-t, 1 ethernet gigabit, 1 pcie, 1 rj45, 1 rs232, 1 rs485, 1 sata, 1 usb, 1 usb 2.0, 2 ethernet gigabit, 2 sata, 2 usb , 3 usb, 4 Rj11, 4 rj45, 4 usb, 6 usb, 7 usb 2.0, audio, Composite cvbs, Dbsf, Dvi, Entrée jack 3.5, esata, Ethernet 10/100 base-t, Ethernet gigabit, hdmi, Jack, Jtag, Lecteur carte SD, Lecteur de carte microsd, Lecteur de carte sd, Pcie, Péritel, Rj11, rj45, Rs232, Rs485, sata, série, sortie audio, Sortie audio numérique coaxiale, Sortie audio numérique optique, Sortie jack 3.5, sortie vidéo, Usb, Usb 2.0, Vga|placeholder=Séparez les différentes valeurs par une virgule le cas échéant}}}
|-
!&lt;br&gt;Protocole(s) utilis(é): 
|&lt;br&gt; {{{field|Protocole|size=60|input type=text with autocomplete|values=Bluetooth, Ftp, http, Ip, Smtp, Tcp, Telnet, Udp, Wifi|placeholder=Séparez les différentes valeurs par une virgule le cas échéant}}} 
|}
{{{end template}}}

'''Texte libre:'''

{{{standard input|free text|rows=10}}}


{{{standard input|summary}}}

{{{standard input|minor edit}}} {{{standard input|watch}}}

{{{standard input|save}}} {{{standard input|preview}}} {{{standard input|changes}}} {{{standard input|cancel}}}
&lt;/includeonly&gt;</text>
      <sha1>p8cxedknsiguf79uwy97embfa69glhu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Forum.debian-fr.org</title>
    <ns>0</ns>
    <id>1128</id>
    <revision>
      <id>4639</id>
      <timestamp>2012-10-29T08:31:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « &lt;center&gt; {{#widget:Iframe |url=https://www.debian-fr.org/maps/forum/ |width=1200 |height=1200 |border=0 }} &lt;/center&gt; »</comment>
      <text xml:space="preserve" bytes="116">&lt;center&gt;
{{#widget:Iframe
|url=https://www.debian-fr.org/maps/forum/
|width=1200
|height=1200
|border=0
}}
&lt;/center&gt;</text>
      <sha1>0ewcp335l9m34uw5u9ckk9rg4qaq2pq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4640</id>
      <parentid>4639</parentid>
      <timestamp>2012-10-29T08:36:40Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="116">&lt;center&gt;
{{#widget:Iframe
|url=https://www.debian-fr.org/maps/forum/
|width=1600
|height=1200
|border=0
}}
&lt;/center&gt;</text>
      <sha1>94g2g7hpqj5mgb11eto8igiihiy6s1b</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4641</id>
      <parentid>4640</parentid>
      <timestamp>2012-10-29T08:36:59Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="116">&lt;center&gt;
{{#widget:Iframe
|url=https://www.debian-fr.org/maps/forum/
|width=1400
|height=1200
|border=0
}}
&lt;/center&gt;</text>
      <sha1>bgzgrkwe86khm47bpsfaepemfr35rl8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4642</id>
      <parentid>4641</parentid>
      <timestamp>2012-10-29T08:42:14Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="116">&lt;center&gt;
{{#widget:Iframe
|url=https://www.debian-fr.org/maps/forum/
|width=100%
|height=100%
|border=0
}}
&lt;/center&gt;</text>
      <sha1>3xxey0ijvq7jn3e9sf0crrybyax2dzq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4643</id>
      <parentid>4642</parentid>
      <timestamp>2012-10-29T08:42:34Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="116">&lt;center&gt;
{{#widget:Iframe
|url=https://www.debian-fr.org/maps/forum/
|width=100%
|height=1600
|border=0
}}
&lt;/center&gt;</text>
      <sha1>eym7u8lz53w2tj9lpflpsw9wu0alm4s</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Franciser une image ISO live</title>
    <ns>0</ns>
    <id>1334</id>
    <revision>
      <id>5635</id>
      <timestamp>2014-07-07T10:44:29Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <comment>les images ISO live démarrent en général en anglais, en moins de deux minutes, vous pouvez faire en sorte de franciser votre &quot;debian live.&quot;</comment>
      <text xml:space="preserve" bytes="10568">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue ligne des options de boot suivante qui permet de démarrer ma '''debian live''' directement en français.
'''&lt;pre style=&quot;color: blue&quot;&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;'''
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.
== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'image ISO téléchargée, juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépends du contenu du fichier &quot;/isolinux/live.cfg&quot; de l'image ISO dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre style=&quot;color: blue&quot;&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudrait donc modifier la ligne :
&lt;pre style=&quot;color: blue&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façons à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudrait d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.
== Recherche avec l'éditeur '''hexcurse''' : ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, 

mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Mais cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup, alors, j'entre la commande suivante :

&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;

L'écran affiché présente alors le contenu du fichier image ISO en ''Hexa'' (à gauche) et ''ASCII'' (à droite) : 

[[fichier:Hexcurse-01.png|120px|hexcurse]]

'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

La touche '''F1''' permet d'obtenir une fenêtre d'aide:

[[fichier:Hexcurse-02.png|120px|hexcurse - aide]]

On peut y voir un petit descriptif des fonctions associées aux touches raccourcis suivantes :
* '''&quot;F5&quot;''' permet de faire une recherche.
* '''&quot;F8&quot;''' quitte &quot;hexcurse&quot;.
* '''&quot;TAB&quot;''' est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
* '''&quot;CTRL-A&quot;''' est une touche bascule qui permet de basculer entre l'affichage des adresses en valeurs Hexa ou Décimal.
* '''&quot;CTRL-z&quot;''' anulle les modifications effectuées.
* '''&quot;Esc&quot;''' anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.


Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''', et je positionne le curseur dans la fenêtre ''Ascii'' avec la touche '''&quot;Tab&quot;''' afin de lancer la recherche sur les caractères ''Ascii''.

Je vais lui demander de faire une recherche, et, après avoir appuyé sur la touche '''&quot;F5&quot;''', je vois en bas à droite une invite pour entrer la chaîne de caractères à rechercher.

Je réponds alors en entrant la chaîne de caractères à rechercher : '''live-amd64''' suivit de la validation de ma saisie par la touche habituelle '''Entrée'''.

La recherche prends un peu de temps (35 secondes, mais il s'agit quand même d'un très qros fichier), mais elle aboutit en me présentant le texte recherché :

[[fichier:Hexcurse-03.png|120px|hexcurse - &quot;live-amd64&quot; a été trouvé !]]

Il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.

En haut à gauche de la fenêtre, on peut lire le décalage depuis le début du fichier : '''33807000''', mais attention, il s'agit d'une valeur hexadécimale.

Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;
== Extraire avec '''dd''' le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,

il conviendra très bien pour extraire et replacer la partie de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne vais recopier que les 512 premiers caractères de ce fichier dans l'image ISO.

== Modifier le fichier image ISO ==
Avant, je sauvegarde le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -sdl -enable-kvm -usbdevice mouse -m 2G -cpu host -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso -boot d 
&lt;/code&gt;
Un appuis sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là, et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est fonctionnelle.

Je peux donc utiliser ce fichier image ISO pour préparer mon périphérique de boot (DVD ou USB).</text>
      <sha1>d3mokr2pk766a7jaay6oyfliomd57a1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5636</id>
      <parentid>5635</parentid>
      <timestamp>2014-07-07T10:50:34Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <comment>/* Tester l'image ISO avec kvm */</comment>
      <text xml:space="preserve" bytes="10556">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue ligne des options de boot suivante qui permet de démarrer ma '''debian live''' directement en français.
'''&lt;pre style=&quot;color: blue&quot;&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;'''
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.
== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'image ISO téléchargée, juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépends du contenu du fichier &quot;/isolinux/live.cfg&quot; de l'image ISO dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre style=&quot;color: blue&quot;&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudrait donc modifier la ligne :
&lt;pre style=&quot;color: blue&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façons à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudrait d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.
== Recherche avec l'éditeur '''hexcurse''' : ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, 

mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Mais cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup, alors, j'entre la commande suivante :

&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;

L'écran affiché présente alors le contenu du fichier image ISO en ''Hexa'' (à gauche) et ''ASCII'' (à droite) : 

[[fichier:Hexcurse-01.png|120px|hexcurse]]

'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

La touche '''F1''' permet d'obtenir une fenêtre d'aide:

[[fichier:Hexcurse-02.png|120px|hexcurse - aide]]

On peut y voir un petit descriptif des fonctions associées aux touches raccourcis suivantes :
* '''&quot;F5&quot;''' permet de faire une recherche.
* '''&quot;F8&quot;''' quitte &quot;hexcurse&quot;.
* '''&quot;TAB&quot;''' est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
* '''&quot;CTRL-A&quot;''' est une touche bascule qui permet de basculer entre l'affichage des adresses en valeurs Hexa ou Décimal.
* '''&quot;CTRL-z&quot;''' anulle les modifications effectuées.
* '''&quot;Esc&quot;''' anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.


Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''', et je positionne le curseur dans la fenêtre ''Ascii'' avec la touche '''&quot;Tab&quot;''' afin de lancer la recherche sur les caractères ''Ascii''.

Je vais lui demander de faire une recherche, et, après avoir appuyé sur la touche '''&quot;F5&quot;''', je vois en bas à droite une invite pour entrer la chaîne de caractères à rechercher.

Je réponds alors en entrant la chaîne de caractères à rechercher : '''live-amd64''' suivit de la validation de ma saisie par la touche habituelle '''Entrée'''.

La recherche prends un peu de temps (35 secondes, mais il s'agit quand même d'un très qros fichier), mais elle aboutit en me présentant le texte recherché :

[[fichier:Hexcurse-03.png|120px|hexcurse - &quot;live-amd64&quot; a été trouvé !]]

Il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.

En haut à gauche de la fenêtre, on peut lire le décalage depuis le début du fichier : '''33807000''', mais attention, il s'agit d'une valeur hexadécimale.

Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;
== Extraire avec '''dd''' le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,

il conviendra très bien pour extraire et replacer la partie de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne vais recopier que les 512 premiers caractères de ce fichier dans l'image ISO.

== Modifier le fichier image ISO ==
Avant, je sauvegarde le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -sdl -usbdevice mouse -m 2G -cpu host -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso -boot d 
&lt;/code&gt;
Un appuis sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là, et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est fonctionnelle.

Je peux donc utiliser ce fichier image ISO pour préparer mon périphérique de boot (DVD ou USB).</text>
      <sha1>q38ngfztyg5hfdofkyxqtff0cop9kaq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5637</id>
      <parentid>5636</parentid>
      <timestamp>2014-07-07T10:51:21Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <comment>/* Ajouter les options avec sed */</comment>
      <text xml:space="preserve" bytes="10598">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue ligne des options de boot suivante qui permet de démarrer ma '''debian live''' directement en français.
'''&lt;pre style=&quot;color: blue&quot;&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;'''
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.
== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'image ISO téléchargée, juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépends du contenu du fichier &quot;/isolinux/live.cfg&quot; de l'image ISO dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre style=&quot;color: blue&quot;&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudrait donc modifier la ligne :
&lt;pre style=&quot;color: blue&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façons à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudrait d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.
== Recherche avec l'éditeur '''hexcurse''' : ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, 

mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Mais cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup, alors, j'entre la commande suivante :

&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;

L'écran affiché présente alors le contenu du fichier image ISO en ''Hexa'' (à gauche) et ''ASCII'' (à droite) : 

[[fichier:Hexcurse-01.png|120px|hexcurse]]

'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

La touche '''F1''' permet d'obtenir une fenêtre d'aide:

[[fichier:Hexcurse-02.png|120px|hexcurse - aide]]

On peut y voir un petit descriptif des fonctions associées aux touches raccourcis suivantes :
* '''&quot;F5&quot;''' permet de faire une recherche.
* '''&quot;F8&quot;''' quitte &quot;hexcurse&quot;.
* '''&quot;TAB&quot;''' est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
* '''&quot;CTRL-A&quot;''' est une touche bascule qui permet de basculer entre l'affichage des adresses en valeurs Hexa ou Décimal.
* '''&quot;CTRL-z&quot;''' anulle les modifications effectuées.
* '''&quot;Esc&quot;''' anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.


Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''', et je positionne le curseur dans la fenêtre ''Ascii'' avec la touche '''&quot;Tab&quot;''' afin de lancer la recherche sur les caractères ''Ascii''.

Je vais lui demander de faire une recherche, et, après avoir appuyé sur la touche '''&quot;F5&quot;''', je vois en bas à droite une invite pour entrer la chaîne de caractères à rechercher.

Je réponds alors en entrant la chaîne de caractères à rechercher : '''live-amd64''' suivit de la validation de ma saisie par la touche habituelle '''Entrée'''.

La recherche prends un peu de temps (35 secondes, mais il s'agit quand même d'un très qros fichier), mais elle aboutit en me présentant le texte recherché :

[[fichier:Hexcurse-03.png|120px|hexcurse - &quot;live-amd64&quot; a été trouvé !]]

Il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.

En haut à gauche de la fenêtre, on peut lire le décalage depuis le début du fichier : '''33807000''', mais attention, il s'agit d'une valeur hexadécimale.

Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;
== Extraire avec '''dd''' le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,

il conviendra très bien pour extraire et replacer la partie de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que tout s'est bien passsé :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne vais recopier que les 512 premiers caractères de ce fichier dans l'image ISO.

== Modifier le fichier image ISO ==
Avant, je sauvegarde le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -sdl -usbdevice mouse -m 2G -cpu host -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso -boot d 
&lt;/code&gt;
Un appuis sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là, et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est fonctionnelle.

Je peux donc utiliser ce fichier image ISO pour préparer mon périphérique de boot (DVD ou USB).</text>
      <sha1>lf7sfe3vu71wxcib4e4gz60e0oyp39g</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5638</id>
      <parentid>5637</parentid>
      <timestamp>2014-07-07T10:52:08Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <comment>/* Ajouter les options avec sed */</comment>
      <text xml:space="preserve" bytes="10611">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue ligne des options de boot suivante qui permet de démarrer ma '''debian live''' directement en français.
'''&lt;pre style=&quot;color: blue&quot;&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;'''
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.
== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'image ISO téléchargée, juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépends du contenu du fichier &quot;/isolinux/live.cfg&quot; de l'image ISO dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre style=&quot;color: blue&quot;&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudrait donc modifier la ligne :
&lt;pre style=&quot;color: blue&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façons à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudrait d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.
== Recherche avec l'éditeur '''hexcurse''' : ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, 

mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Mais cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup, alors, j'entre la commande suivante :

&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;

L'écran affiché présente alors le contenu du fichier image ISO en ''Hexa'' (à gauche) et ''ASCII'' (à droite) : 

[[fichier:Hexcurse-01.png|120px|hexcurse]]

'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

La touche '''F1''' permet d'obtenir une fenêtre d'aide:

[[fichier:Hexcurse-02.png|120px|hexcurse - aide]]

On peut y voir un petit descriptif des fonctions associées aux touches raccourcis suivantes :
* '''&quot;F5&quot;''' permet de faire une recherche.
* '''&quot;F8&quot;''' quitte &quot;hexcurse&quot;.
* '''&quot;TAB&quot;''' est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
* '''&quot;CTRL-A&quot;''' est une touche bascule qui permet de basculer entre l'affichage des adresses en valeurs Hexa ou Décimal.
* '''&quot;CTRL-z&quot;''' anulle les modifications effectuées.
* '''&quot;Esc&quot;''' anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.


Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''', et je positionne le curseur dans la fenêtre ''Ascii'' avec la touche '''&quot;Tab&quot;''' afin de lancer la recherche sur les caractères ''Ascii''.

Je vais lui demander de faire une recherche, et, après avoir appuyé sur la touche '''&quot;F5&quot;''', je vois en bas à droite une invite pour entrer la chaîne de caractères à rechercher.

Je réponds alors en entrant la chaîne de caractères à rechercher : '''live-amd64''' suivit de la validation de ma saisie par la touche habituelle '''Entrée'''.

La recherche prends un peu de temps (35 secondes, mais il s'agit quand même d'un très qros fichier), mais elle aboutit en me présentant le texte recherché :

[[fichier:Hexcurse-03.png|120px|hexcurse - &quot;live-amd64&quot; a été trouvé !]]

Il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.

En haut à gauche de la fenêtre, on peut lire le décalage depuis le début du fichier : '''33807000''', mais attention, il s'agit d'une valeur hexadécimale.

Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;
== Extraire avec '''dd''' le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,

il conviendra très bien pour extraire et replacer la partie de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne vais recopier que les 512 premiers caractères de ce fichier dans l'image ISO.

== Modifier le fichier image ISO ==
Avant, je sauvegarde le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -sdl -usbdevice mouse -m 2G -cpu host -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso -boot d 
&lt;/code&gt;
Un appuis sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là, et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est fonctionnelle.

Je peux donc utiliser ce fichier image ISO pour préparer mon périphérique de boot (DVD ou USB).</text>
      <sha1>6omjyxw8j0u7mjh80ggs60fxwwaydkg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5639</id>
      <parentid>5638</parentid>
      <timestamp>2014-07-07T10:53:05Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <comment>/* Recherche avec l'éditeur hexcurse : */</comment>
      <text xml:space="preserve" bytes="10613">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue ligne des options de boot suivante qui permet de démarrer ma '''debian live''' directement en français.
'''&lt;pre style=&quot;color: blue&quot;&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;'''
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.
== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'image ISO téléchargée, juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépends du contenu du fichier &quot;/isolinux/live.cfg&quot; de l'image ISO dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre style=&quot;color: blue&quot;&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudrait donc modifier la ligne :
&lt;pre style=&quot;color: blue&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façons à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudrait d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.
== Recherche avec l'éditeur '''hexcurse''' : ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, 

mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…,

ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Mais cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup, alors, j'entre la commande suivante :

&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;

L'écran affiché présente alors le contenu du fichier image ISO en ''Hexa'' (à gauche) et ''ASCII'' (à droite) : 

[[fichier:Hexcurse-01.png|120px|hexcurse]]

'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

La touche '''F1''' permet d'obtenir une fenêtre d'aide:

[[fichier:Hexcurse-02.png|120px|hexcurse - aide]]

On peut y voir un petit descriptif des fonctions associées aux touches raccourcis suivantes :
* '''&quot;F5&quot;''' permet de faire une recherche.
* '''&quot;F8&quot;''' quitte &quot;hexcurse&quot;.
* '''&quot;TAB&quot;''' est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
* '''&quot;CTRL-A&quot;''' est une touche bascule qui permet de basculer entre l'affichage des adresses en valeurs Hexa ou Décimal.
* '''&quot;CTRL-z&quot;''' anulle les modifications effectuées.
* '''&quot;Esc&quot;''' anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.


Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''', et je positionne le curseur dans la fenêtre ''Ascii'' avec la touche '''&quot;Tab&quot;''' afin de lancer la recherche sur les caractères ''Ascii''.

Je vais lui demander de faire une recherche, et, après avoir appuyé sur la touche '''&quot;F5&quot;''', je vois en bas à droite une invite pour entrer la chaîne de caractères à rechercher.

Je réponds alors en entrant la chaîne de caractères à rechercher : '''live-amd64''' suivit de la validation de ma saisie par la touche habituelle '''Entrée'''.

La recherche prends un peu de temps (35 secondes, mais il s'agit quand même d'un très qros fichier), mais elle aboutit en me présentant le texte recherché :

[[fichier:Hexcurse-03.png|120px|hexcurse - &quot;live-amd64&quot; a été trouvé !]]

Il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.

En haut à gauche de la fenêtre, on peut lire le décalage depuis le début du fichier : '''33807000''', mais attention, il s'agit d'une valeur hexadécimale.

Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire avec '''dd''' le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,

il conviendra très bien pour extraire et replacer la partie de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne vais recopier que les 512 premiers caractères de ce fichier dans l'image ISO.

== Modifier le fichier image ISO ==
Avant, je sauvegarde le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -sdl -usbdevice mouse -m 2G -cpu host -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso -boot d 
&lt;/code&gt;
Un appuis sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là, et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est fonctionnelle.

Je peux donc utiliser ce fichier image ISO pour préparer mon périphérique de boot (DVD ou USB).</text>
      <sha1>2kt4i8rytjmqjgouptmdn9k31xl6h8y</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5640</id>
      <parentid>5639</parentid>
      <timestamp>2014-07-07T12:54:00Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="10604">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue ligne des options de boot suivante qui permet de démarrer ma '''debian live''' directement en français.
'''&lt;pre style=&quot;color: blue&quot;&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;'''
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.
== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'image ISO téléchargée, juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier &quot;/isolinux/live.cfg&quot; de l'image ISO voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre style=&quot;color: blue&quot;&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudrait donc modifier la ligne :
&lt;pre style=&quot;color: blue&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façons à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudrait d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.
== Recherche avec l'éditeur '''hexcurse''' : ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, 

mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…,

ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Mais cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup, alors, j'entre la commande suivante :

&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;

L'écran affiché présente alors le contenu du fichier image ISO en ''Hexa'' (à gauche) et ''ASCII'' (à droite) : 

[[fichier:Hexcurse-01.png|120px|hexcurse]]

'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

La touche '''F1''' permet d'obtenir une fenêtre d'aide:

[[fichier:Hexcurse-02.png|120px|hexcurse - aide]]

On peut y voir un petit descriptif des fonctions associées aux touches raccourcis suivantes :
* '''&quot;F5&quot;''' permet de faire une recherche.
* '''&quot;F8&quot;''' quitte &quot;hexcurse&quot;.
* '''&quot;TAB&quot;''' est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
* '''&quot;CTRL-A&quot;''' est une touche bascule qui permet de basculer entre l'affichage des adresses en valeurs Hexa ou Décimal.
* '''&quot;CTRL-z&quot;''' anulle les modifications effectuées.
* '''&quot;Esc&quot;''' anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.


Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''', et je positionne le curseur dans la fenêtre ''Ascii'' avec la touche '''&quot;Tab&quot;''' afin de lancer la recherche sur les caractères ''Ascii''.

Je vais lui demander de faire une recherche, et, après avoir appuyé sur la touche '''&quot;F5&quot;''', je vois en bas à droite une invite pour entrer la chaîne de caractères à rechercher.

Je réponds alors en entrant la chaîne de caractères à rechercher : '''live-amd64''' suivi de la validation de ma saisie par la touche habituelle '''Entrée'''.

La recherche prend un peu de temps (35 secondes, mais il s'agit quand même d'un très gros fichier), mais elle aboutit en me présentant le texte recherché :

[[fichier:Hexcurse-03.png|120px|hexcurse - &quot;live-amd64&quot; a été trouvé !]]

Il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.

En haut à gauche de la fenêtre, on peut lire le décalage depuis le début du fichier : '''33807000''', mais attention, il s'agit d'une valeur hexadécimale.

Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire avec '''dd''' le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,

il conviendra très bien pour extraire et replacer la partie de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne vais recopier que les 512 premiers caractères de ce fichier dans l'image ISO.

== Modifier le fichier image ISO ==
Avant, je sauvegarde le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -sdl -usbdevice mouse -m 2G -cpu host -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso -boot d 
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là, et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est fonctionnelle.

Je peux donc utiliser ce fichier image ISO pour préparer mon périphérique de boot (DVD ou USB).</text>
      <sha1>6xvecgqnmjrg1ucogcye68fn7mf01nr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5641</id>
      <parentid>5640</parentid>
      <timestamp>2014-07-07T14:54:42Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Recherche avec l'éditeur hexcurse : */ bug Ctr-A</comment>
      <text xml:space="preserve" bytes="10683">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue ligne des options de boot suivante qui permet de démarrer ma '''debian live''' directement en français.
'''&lt;pre style=&quot;color: blue&quot;&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;'''
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.
== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'image ISO téléchargée, juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier &quot;/isolinux/live.cfg&quot; de l'image ISO voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre style=&quot;color: blue&quot;&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudrait donc modifier la ligne :
&lt;pre style=&quot;color: blue&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façons à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudrait d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.
== Recherche avec l'éditeur '''hexcurse''' : ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, 

mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…,

ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Mais cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup, alors, j'entre la commande suivante :

&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;

L'écran affiché présente alors le contenu du fichier image ISO en ''Hexa'' (à gauche) et ''ASCII'' (à droite) : 

[[fichier:Hexcurse-01.png|120px|hexcurse]]

'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

La touche '''F1''' permet d'obtenir une fenêtre d'aide:

[[fichier:Hexcurse-02.png|120px|hexcurse - aide]]

On peut y voir un petit descriptif des fonctions associées aux touches raccourcis suivantes :
* '''&quot;F5&quot;''' permet de faire une recherche.
* '''&quot;F8&quot;''' quitte &quot;hexcurse&quot;.
* '''&quot;TAB&quot;''' est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
* '''&quot;CTRL-A&quot;''' est une touche bascule qui permet de basculer entre l'affichage des adresses en valeurs Hexa ou Décimal (mais hélas, avec hexcurse version 1.55, cette fonctionnalité est buggée..).
* '''&quot;CTRL-z&quot;''' anulle les modifications effectuées.
* '''&quot;Esc&quot;''' anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.


Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''', et je positionne le curseur dans la fenêtre ''Ascii'' avec la touche '''&quot;Tab&quot;''' afin de lancer la recherche sur les caractères ''Ascii''.

Je vais lui demander de faire une recherche, et, après avoir appuyé sur la touche '''&quot;F5&quot;''', je vois en bas à droite une invite pour entrer la chaîne de caractères à rechercher.

Je réponds alors en entrant la chaîne de caractères à rechercher : '''live-amd64''' suivi de la validation de ma saisie par la touche habituelle '''Entrée'''.

La recherche prend un peu de temps (35 secondes, mais il s'agit quand même d'un très gros fichier), mais elle aboutit en me présentant le texte recherché :

[[fichier:Hexcurse-03.png|120px|hexcurse - &quot;live-amd64&quot; a été trouvé !]]

Il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.

En haut à gauche de la fenêtre, on peut lire le décalage depuis le début du fichier : '''33807000''', mais attention, il s'agit d'une valeur hexadécimale.

Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire avec '''dd''' le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,

il conviendra très bien pour extraire et replacer la partie de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne vais recopier que les 512 premiers caractères de ce fichier dans l'image ISO.

== Modifier le fichier image ISO ==
Avant, je sauvegarde le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -sdl -usbdevice mouse -m 2G -cpu host -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso -boot d 
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là, et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est fonctionnelle.

Je peux donc utiliser ce fichier image ISO pour préparer mon périphérique de boot (DVD ou USB).</text>
      <sha1>65w58vnprw0v8u4mo2uo28o8jtcbx52</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5642</id>
      <parentid>5641</parentid>
      <timestamp>2014-07-07T15:12:29Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Recherche avec l'éditeur hexcurse : */ Touches -&gt;Tableau, images -&gt; 480px</comment>
      <text xml:space="preserve" bytes="10611">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue ligne des options de boot suivante qui permet de démarrer ma '''debian live''' directement en français.
'''&lt;pre style=&quot;color: blue&quot;&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;'''
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.
== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'image ISO téléchargée, juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier &quot;/isolinux/live.cfg&quot; de l'image ISO voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre style=&quot;color: blue&quot;&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudrait donc modifier la ligne :
&lt;pre style=&quot;color: blue&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façons à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudrait d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.
== Recherche avec l'éditeur '''hexcurse''' : ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, 

mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…,

ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Mais cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup, alors, j'entre la commande suivante :

&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;

L'écran affiché présente alors le contenu du fichier image ISO en ''Hexa'' (à gauche) et ''ASCII'' (à droite) : 

[[fichier:Hexcurse-01.png|480px|hexcurse]]

'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

La touche '''F1''' permet d'obtenir une fenêtre d'aide:

[[fichier:Hexcurse-02.png|480px|hexcurse - aide]]

On peut y voir un petit descriptif des fonctions associées aux touches raccourcis suivantes :
{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}
Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''', et je positionne le curseur dans la fenêtre ''Ascii'' avec la touche '''&quot;Tab&quot;''' afin de lancer la recherche sur les caractères ''Ascii''.

Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à droite de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher.

Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''Entrée'''.

La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé :

[[fichier:Hexcurse-03.png|480px|hexcurse - &quot;live-amd64&quot; a été trouvé !]]

Il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.

En haut à gauche de la fenêtre, on peut lire le décalage depuis le début du fichier : '''33807000''', mais attention, il s'agit d'une valeur hexadécimale.

Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire avec '''dd''' le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,

il conviendra très bien pour extraire et replacer la partie de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne vais recopier que les 512 premiers caractères de ce fichier dans l'image ISO.

== Modifier le fichier image ISO ==
Avant, je sauvegarde le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -sdl -usbdevice mouse -m 2G -cpu host -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso -boot d 
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là, et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est fonctionnelle.

Je peux donc utiliser ce fichier image ISO pour préparer mon périphérique de boot (DVD ou USB).</text>
      <sha1>5wh8kwub36o0a5mgsn96jw7ssp4c6xa</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5643</id>
      <parentid>5642</parentid>
      <timestamp>2014-07-07T15:14:53Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Recherche avec l'éditeur hexcurse : */ imgs -&gt; 640px</comment>
      <text xml:space="preserve" bytes="10611">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue ligne des options de boot suivante qui permet de démarrer ma '''debian live''' directement en français.
'''&lt;pre style=&quot;color: blue&quot;&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;'''
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.
== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'image ISO téléchargée, juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier &quot;/isolinux/live.cfg&quot; de l'image ISO voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre style=&quot;color: blue&quot;&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudrait donc modifier la ligne :
&lt;pre style=&quot;color: blue&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façons à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudrait d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.
== Recherche avec l'éditeur '''hexcurse''' : ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, 

mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…,

ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Mais cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup, alors, j'entre la commande suivante :

&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;

L'écran affiché présente alors le contenu du fichier image ISO en ''Hexa'' (à gauche) et ''ASCII'' (à droite) : 

[[fichier:Hexcurse-01.png|640px|hexcurse]]

'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

La touche '''F1''' permet d'obtenir une fenêtre d'aide:

[[fichier:Hexcurse-02.png|640px|hexcurse - aide]]

On peut y voir un petit descriptif des fonctions associées aux touches raccourcis suivantes :
{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}
Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''', et je positionne le curseur dans la fenêtre ''Ascii'' avec la touche '''&quot;Tab&quot;''' afin de lancer la recherche sur les caractères ''Ascii''.

Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à droite de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher.

Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''Entrée'''.

La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé :

[[fichier:Hexcurse-03.png|640px|hexcurse - &quot;live-amd64&quot; a été trouvé !]]

Il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.

En haut à gauche de la fenêtre, on peut lire le décalage depuis le début du fichier : '''33807000''', mais attention, il s'agit d'une valeur hexadécimale.

Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire avec '''dd''' le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,

il conviendra très bien pour extraire et replacer la partie de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne vais recopier que les 512 premiers caractères de ce fichier dans l'image ISO.

== Modifier le fichier image ISO ==
Avant, je sauvegarde le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -sdl -usbdevice mouse -m 2G -cpu host -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso -boot d 
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là, et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est fonctionnelle.

Je peux donc utiliser ce fichier image ISO pour préparer mon périphérique de boot (DVD ou USB).</text>
      <sha1>5e9aboj5vj2xpaffs33ayp9equhk6pr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5644</id>
      <parentid>5643</parentid>
      <timestamp>2014-07-07T15:16:58Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Description */ cghmt couleurs</comment>
      <text xml:space="preserve" bytes="10591">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue ligne des options de boot suivante qui permet de démarrer ma '''debian live''' directement en français.
'''&lt;pre style=&quot;color: blue&quot;&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;'''
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.
== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'image ISO téléchargée, juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier &quot;/isolinux/live.cfg&quot; de l'image ISO voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudrait donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façons à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudrait d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' : ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, 

mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…,

ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Mais cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup, alors, j'entre la commande suivante :

&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;

L'écran affiché présente alors le contenu du fichier image ISO en ''Hexa'' (à gauche) et ''ASCII'' (à droite) : 

[[fichier:Hexcurse-01.png|640px|hexcurse]]

'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

La touche '''F1''' permet d'obtenir une fenêtre d'aide:

[[fichier:Hexcurse-02.png|640px|hexcurse - aide]]

On peut y voir un petit descriptif des fonctions associées aux touches raccourcis suivantes :
{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}
Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''', et je positionne le curseur dans la fenêtre ''Ascii'' avec la touche '''&quot;Tab&quot;''' afin de lancer la recherche sur les caractères ''Ascii''.

Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à droite de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher.

Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''Entrée'''.

La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé :

[[fichier:Hexcurse-03.png|640px|hexcurse - &quot;live-amd64&quot; a été trouvé !]]

Il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.

En haut à gauche de la fenêtre, on peut lire le décalage depuis le début du fichier : '''33807000''', mais attention, il s'agit d'une valeur hexadécimale.

Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire avec '''dd''' le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,

il conviendra très bien pour extraire et replacer la partie de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne vais recopier que les 512 premiers caractères de ce fichier dans l'image ISO.

== Modifier le fichier image ISO ==
Avant, je sauvegarde le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -sdl -usbdevice mouse -m 2G -cpu host -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso -boot d 
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là, et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est fonctionnelle.

Je peux donc utiliser ce fichier image ISO pour préparer mon périphérique de boot (DVD ou USB).</text>
      <sha1>5iffonwped4u7i22tg99yewz9571vm9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5646</id>
      <parentid>5644</parentid>
      <timestamp>2014-07-07T15:43:07Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Recherche avec l'éditeur hexcurse : */ formatage divers</comment>
      <text xml:space="preserve" bytes="10702">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue ligne des options de boot suivante qui permet de démarrer ma '''debian live''' directement en français.
'''&lt;pre style=&quot;color: blue&quot;&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;'''
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.
== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'image ISO téléchargée, juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier &quot;/isolinux/live.cfg&quot; de l'image ISO voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudrait donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façons à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudrait d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' : ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;

[[fichier:Hexcurse-01.png|640px|hexcurse]] &lt;br /&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite). 


[[fichier:Hexcurse-02.png|640px|hexcurse - aide]] &lt;br /&gt;
La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide.

'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}
Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.

[[fichier:Hexcurse-04.png|640px|hexcurse - En bas à gauche -&gt; Invite pour entrer la chaîne à rechercher.]] &lt;br /&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


[[fichier:Hexcurse-03.png|640px|hexcurse - &quot;live-amd64&quot; a été trouvé !]] &lt;br /&gt;
La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.

En haut à gauche de la fenêtre, on peut lire le décalage depuis le début du fichier : '''33807000''', mais attention, il s'agit d'une valeur hexadécimale. &lt;br /&gt;
Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire avec '''dd''' le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,

il conviendra très bien pour extraire et replacer la partie de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne vais recopier que les 512 premiers caractères de ce fichier dans l'image ISO.

== Modifier le fichier image ISO ==
Avant, je sauvegarde le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -sdl -usbdevice mouse -m 2G -cpu host -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso -boot d 
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là, et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est fonctionnelle.

Je peux donc utiliser ce fichier image ISO pour préparer mon périphérique de boot (DVD ou USB).</text>
      <sha1>a710nefu55nmhsatumwejhmbbir3g5w</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5647</id>
      <parentid>5646</parentid>
      <timestamp>2014-07-07T15:45:31Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Extraire avec dd le texte à modifier */ formatage divers</comment>
      <text xml:space="preserve" bytes="10723">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue ligne des options de boot suivante qui permet de démarrer ma '''debian live''' directement en français.
'''&lt;pre style=&quot;color: blue&quot;&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;'''
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.
== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'image ISO téléchargée, juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier &quot;/isolinux/live.cfg&quot; de l'image ISO voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudrait donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façons à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudrait d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' : ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;

[[fichier:Hexcurse-01.png|640px|hexcurse]] &lt;br /&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite). 


[[fichier:Hexcurse-02.png|640px|hexcurse - aide]] &lt;br /&gt;
La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide.

'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}
Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.

[[fichier:Hexcurse-04.png|640px|hexcurse - En bas à gauche -&gt; Invite pour entrer la chaîne à rechercher.]] &lt;br /&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


[[fichier:Hexcurse-03.png|640px|hexcurse - &quot;live-amd64&quot; a été trouvé !]] &lt;br /&gt;
La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.

En haut à gauche de la fenêtre, on peut lire le décalage depuis le début du fichier : '''33807000''', mais attention, il s'agit d'une valeur hexadécimale. &lt;br /&gt;
Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne vais recopier que les 512 premiers caractères de ce fichier dans l'image ISO.

== Modifier le fichier image ISO ==
Avant, je sauvegarde le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -sdl -usbdevice mouse -m 2G -cpu host -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso -boot d 
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là, et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est fonctionnelle.

Je peux donc utiliser ce fichier image ISO pour préparer mon périphérique de boot (DVD ou USB).</text>
      <sha1>gxbjacbph4b9doe3w2e1yj1wgw1kz1b</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5648</id>
      <parentid>5647</parentid>
      <timestamp>2014-07-07T15:47:01Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Recherche avec l'éditeur hexcurse : */ formatage divers</comment>
      <text xml:space="preserve" bytes="10718">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue ligne des options de boot suivante qui permet de démarrer ma '''debian live''' directement en français.
'''&lt;pre style=&quot;color: blue&quot;&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;'''
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.
== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'image ISO téléchargée, juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier &quot;/isolinux/live.cfg&quot; de l'image ISO voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudrait donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façons à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudrait d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' : ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;

[[fichier:Hexcurse-01.png|640px|hexcurse]] &lt;br /&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite). 


[[fichier:Hexcurse-02.png|640px|hexcurse - aide]] &lt;br /&gt;
La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide.

'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}
Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.

[[fichier:Hexcurse-04.png|640px|hexcurse - En bas à gauche -&gt; Invite pour entrer la chaîne à rechercher.]] &lt;br /&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


[[fichier:Hexcurse-03.png|640px|hexcurse - &quot;live-amd64&quot; a été trouvé !]] &lt;br /&gt;
La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.

En haut à gauche de la fenêtre, on peut lire le décalage depuis le début du fichier : '''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne vais recopier que les 512 premiers caractères de ce fichier dans l'image ISO.

== Modifier le fichier image ISO ==
Avant, je sauvegarde le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -sdl -usbdevice mouse -m 2G -cpu host -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso -boot d 
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là, et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est fonctionnelle.

Je peux donc utiliser ce fichier image ISO pour préparer mon périphérique de boot (DVD ou USB).</text>
      <sha1>fjb6k17iqi6735mkm0samxzhe50zb77</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5649</id>
      <parentid>5648</parentid>
      <timestamp>2014-07-07T15:49:32Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Ajouter les options avec sed */ reformulation</comment>
      <text xml:space="preserve" bytes="10715">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue ligne des options de boot suivante qui permet de démarrer ma '''debian live''' directement en français.
'''&lt;pre style=&quot;color: blue&quot;&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;'''
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.
== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'image ISO téléchargée, juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier &quot;/isolinux/live.cfg&quot; de l'image ISO voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudrait donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façons à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudrait d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' : ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;

[[fichier:Hexcurse-01.png|640px|hexcurse]] &lt;br /&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite). 


[[fichier:Hexcurse-02.png|640px|hexcurse - aide]] &lt;br /&gt;
La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide.

'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}
Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.

[[fichier:Hexcurse-04.png|640px|hexcurse - En bas à gauche -&gt; Invite pour entrer la chaîne à rechercher.]] &lt;br /&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


[[fichier:Hexcurse-03.png|640px|hexcurse - &quot;live-amd64&quot; a été trouvé !]] &lt;br /&gt;
La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.

En haut à gauche de la fenêtre, on peut lire le décalage depuis le début du fichier : '''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Modifier le fichier image ISO ==
Avant, je sauvegarde le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -sdl -usbdevice mouse -m 2G -cpu host -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso -boot d 
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là, et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est fonctionnelle.

Je peux donc utiliser ce fichier image ISO pour préparer mon périphérique de boot (DVD ou USB).</text>
      <sha1>dctma9bevw6s2h1t3ouwr8c4mukglkb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5650</id>
      <parentid>5649</parentid>
      <timestamp>2014-07-07T15:50:59Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Modifier le fichier image ISO */ reformulation</comment>
      <text xml:space="preserve" bytes="10727">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue ligne des options de boot suivante qui permet de démarrer ma '''debian live''' directement en français.
'''&lt;pre style=&quot;color: blue&quot;&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;'''
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.
== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'image ISO téléchargée, juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier &quot;/isolinux/live.cfg&quot; de l'image ISO voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudrait donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façons à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudrait d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' : ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;

[[fichier:Hexcurse-01.png|640px|hexcurse]] &lt;br /&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite). 


[[fichier:Hexcurse-02.png|640px|hexcurse - aide]] &lt;br /&gt;
La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide.

'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}
Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.

[[fichier:Hexcurse-04.png|640px|hexcurse - En bas à gauche -&gt; Invite pour entrer la chaîne à rechercher.]] &lt;br /&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


[[fichier:Hexcurse-03.png|640px|hexcurse - &quot;live-amd64&quot; a été trouvé !]] &lt;br /&gt;
La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.

En haut à gauche de la fenêtre, on peut lire le décalage depuis le début du fichier : '''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Modifier le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -sdl -usbdevice mouse -m 2G -cpu host -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso -boot d 
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là, et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est fonctionnelle.

Je peux donc utiliser ce fichier image ISO pour préparer mon périphérique de boot (DVD ou USB).</text>
      <sha1>0qa37j0h57l5jlua889xd9yqmolae4n</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5651</id>
      <parentid>5650</parentid>
      <timestamp>2014-07-07T15:52:56Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Tester l'image ISO avec kvm */ formatage divers</comment>
      <text xml:space="preserve" bytes="10744">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue ligne des options de boot suivante qui permet de démarrer ma '''debian live''' directement en français.
'''&lt;pre style=&quot;color: blue&quot;&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;'''
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.
== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'image ISO téléchargée, juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier &quot;/isolinux/live.cfg&quot; de l'image ISO voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudrait donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façons à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudrait d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' : ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;

[[fichier:Hexcurse-01.png|640px|hexcurse]] &lt;br /&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite). 


[[fichier:Hexcurse-02.png|640px|hexcurse - aide]] &lt;br /&gt;
La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide.

'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}
Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.

[[fichier:Hexcurse-04.png|640px|hexcurse - En bas à gauche -&gt; Invite pour entrer la chaîne à rechercher.]] &lt;br /&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


[[fichier:Hexcurse-03.png|640px|hexcurse - &quot;live-amd64&quot; a été trouvé !]] &lt;br /&gt;
La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.

En haut à gauche de la fenêtre, on peut lire le décalage depuis le début du fichier : '''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Modifier le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -sdl -usbdevice mouse -m 2G -cpu host -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso -boot d 
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO pour préparer mon périphérique de boot (DVD ou USB).</text>
      <sha1>ljdyaxvlb7v9h74iam138xwmqoiksjq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5652</id>
      <parentid>5651</parentid>
      <timestamp>2014-07-07T16:00:27Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Tester l'image ISO avec kvm */ ajout: &quot;faire le ménage&quot;</comment>
      <text xml:space="preserve" bytes="10911">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue ligne des options de boot suivante qui permet de démarrer ma '''debian live''' directement en français.
'''&lt;pre style=&quot;color: blue&quot;&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;'''
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.
== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'image ISO téléchargée, juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier &quot;/isolinux/live.cfg&quot; de l'image ISO voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudrait donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façons à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudrait d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' : ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;

[[fichier:Hexcurse-01.png|640px|hexcurse]] &lt;br /&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite). 


[[fichier:Hexcurse-02.png|640px|hexcurse - aide]] &lt;br /&gt;
La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide.

'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}
Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.

[[fichier:Hexcurse-04.png|640px|hexcurse - En bas à gauche -&gt; Invite pour entrer la chaîne à rechercher.]] &lt;br /&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


[[fichier:Hexcurse-03.png|640px|hexcurse - &quot;live-amd64&quot; a été trouvé !]] &lt;br /&gt;
La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.

En haut à gauche de la fenêtre, on peut lire le décalage depuis le début du fichier : '''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Modifier le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -sdl -usbdevice mouse -m 2G -cpu host -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso -boot d 
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB),&lt;br /&gt;
et &quot;faire le ménage&quot; :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;</text>
      <sha1>mp2vfpjrezfy1gktnotmwcwjkkjivli</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5653</id>
      <parentid>5652</parentid>
      <timestamp>2014-07-07T16:03:51Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Description */ orthographe</comment>
      <text xml:space="preserve" bytes="10921">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue ligne des options de boot suivante qui permet de démarrer ma '''debian live''' directement en français.
'''&lt;pre style=&quot;color: blue&quot;&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;'''
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.
== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'image ISO téléchargée, juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' : ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;

[[fichier:Hexcurse-01.png|640px|hexcurse]] &lt;br /&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite). 


[[fichier:Hexcurse-02.png|640px|hexcurse - aide]] &lt;br /&gt;
La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide.

'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}
Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.

[[fichier:Hexcurse-04.png|640px|hexcurse - En bas à gauche -&gt; Invite pour entrer la chaîne à rechercher.]] &lt;br /&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


[[fichier:Hexcurse-03.png|640px|hexcurse - &quot;live-amd64&quot; a été trouvé !]] &lt;br /&gt;
La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.

En haut à gauche de la fenêtre, on peut lire le décalage depuis le début du fichier : '''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Modifier le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -sdl -usbdevice mouse -m 2G -cpu host -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso -boot d 
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB),&lt;br /&gt;
et &quot;faire le ménage&quot; :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;</text>
      <sha1>nan4ib6bi1fmj4e3i819lftuxkb1w9b</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5654</id>
      <parentid>5653</parentid>
      <timestamp>2014-07-07T16:05:26Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Modifier le fichier image ISO */ reformulation titre</comment>
      <text xml:space="preserve" bytes="10937">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue ligne des options de boot suivante qui permet de démarrer ma '''debian live''' directement en français.
'''&lt;pre style=&quot;color: blue&quot;&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;'''
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.
== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'image ISO téléchargée, juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' : ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;

[[fichier:Hexcurse-01.png|640px|hexcurse]] &lt;br /&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite). 


[[fichier:Hexcurse-02.png|640px|hexcurse - aide]] &lt;br /&gt;
La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide.

'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}
Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.

[[fichier:Hexcurse-04.png|640px|hexcurse - En bas à gauche -&gt; Invite pour entrer la chaîne à rechercher.]] &lt;br /&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


[[fichier:Hexcurse-03.png|640px|hexcurse - &quot;live-amd64&quot; a été trouvé !]] &lt;br /&gt;
La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.

En haut à gauche de la fenêtre, on peut lire le décalage depuis le début du fichier : '''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Recopier 512 octets dans le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -sdl -usbdevice mouse -m 2G -cpu host -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso -boot d 
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB),&lt;br /&gt;
et &quot;faire le ménage&quot; :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;</text>
      <sha1>rb5182pbsmycywa1a0bvvw8swnrv664</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5655</id>
      <parentid>5654</parentid>
      <timestamp>2014-07-07T16:06:08Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Recherche avec l'éditeur hexcurse : */</comment>
      <text xml:space="preserve" bytes="10935">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue ligne des options de boot suivante qui permet de démarrer ma '''debian live''' directement en français.
'''&lt;pre style=&quot;color: blue&quot;&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;'''
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.
== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'image ISO téléchargée, juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;

[[fichier:Hexcurse-01.png|640px|hexcurse]] &lt;br /&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite). 


[[fichier:Hexcurse-02.png|640px|hexcurse - aide]] &lt;br /&gt;
La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide.

'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}
Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.

[[fichier:Hexcurse-04.png|640px|hexcurse - En bas à gauche -&gt; Invite pour entrer la chaîne à rechercher.]] &lt;br /&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


[[fichier:Hexcurse-03.png|640px|hexcurse - &quot;live-amd64&quot; a été trouvé !]] &lt;br /&gt;
La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.

En haut à gauche de la fenêtre, on peut lire le décalage depuis le début du fichier : '''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Recopier 512 octets dans le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -sdl -usbdevice mouse -m 2G -cpu host -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso -boot d 
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB),&lt;br /&gt;
et &quot;faire le ménage&quot; :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;</text>
      <sha1>tn4rvhxqetwlg0pyqw6ohu4oelk9en9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5656</id>
      <parentid>5655</parentid>
      <timestamp>2014-07-07T16:08:11Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <comment>/* Introduction */ formatage</comment>
      <text xml:space="preserve" bytes="10918">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue '''ligne des options de boot''' suivante qui permet de démarrer ma '''debian live''' directement en français.
&lt;code&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/code&gt;
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.

== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'image ISO téléchargée, juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;

[[fichier:Hexcurse-01.png|640px|hexcurse]] &lt;br /&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite). 


[[fichier:Hexcurse-02.png|640px|hexcurse - aide]] &lt;br /&gt;
La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide.

'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}
Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.

[[fichier:Hexcurse-04.png|640px|hexcurse - En bas à gauche -&gt; Invite pour entrer la chaîne à rechercher.]] &lt;br /&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


[[fichier:Hexcurse-03.png|640px|hexcurse - &quot;live-amd64&quot; a été trouvé !]] &lt;br /&gt;
La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.

En haut à gauche de la fenêtre, on peut lire le décalage depuis le début du fichier : '''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Recopier 512 octets dans le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -sdl -usbdevice mouse -m 2G -cpu host -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso -boot d 
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB),&lt;br /&gt;
et &quot;faire le ménage&quot; :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;</text>
      <sha1>h1slyf2g0oal5waomud3x95809sj372</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5657</id>
      <parentid>5656</parentid>
      <timestamp>2014-07-07T16:12:30Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Tester l'image ISO avec kvm */</comment>
      <text xml:space="preserve" bytes="10895">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue '''ligne des options de boot''' suivante qui permet de démarrer ma '''debian live''' directement en français.
&lt;code&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/code&gt;
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.

== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'image ISO téléchargée, juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;

[[fichier:Hexcurse-01.png|640px|hexcurse]] &lt;br /&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite). 


[[fichier:Hexcurse-02.png|640px|hexcurse - aide]] &lt;br /&gt;
La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide.

'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}
Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.

[[fichier:Hexcurse-04.png|640px|hexcurse - En bas à gauche -&gt; Invite pour entrer la chaîne à rechercher.]] &lt;br /&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


[[fichier:Hexcurse-03.png|640px|hexcurse - &quot;live-amd64&quot; a été trouvé !]] &lt;br /&gt;
La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.

En haut à gauche de la fenêtre, on peut lire le décalage depuis le début du fichier : '''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Recopier 512 octets dans le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -m 2G -cpu host -boot d -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB),&lt;br /&gt;
et &quot;faire le ménage&quot; :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;</text>
      <sha1>efgrucs5o5apu90huz9u7b4vfi45ozw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5658</id>
      <parentid>5657</parentid>
      <timestamp>2014-07-07T16:15:44Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <comment>/* Tester l'image ISO avec kvm */</comment>
      <text xml:space="preserve" bytes="10929">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue '''ligne des options de boot''' suivante qui permet de démarrer ma '''debian live''' directement en français.
&lt;code&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/code&gt;
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.

== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'image ISO téléchargée, juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;

[[fichier:Hexcurse-01.png|640px|hexcurse]] &lt;br /&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite). 


[[fichier:Hexcurse-02.png|640px|hexcurse - aide]] &lt;br /&gt;
La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide.

'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}
Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.

[[fichier:Hexcurse-04.png|640px|hexcurse - En bas à gauche -&gt; Invite pour entrer la chaîne à rechercher.]] &lt;br /&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


[[fichier:Hexcurse-03.png|640px|hexcurse - &quot;live-amd64&quot; a été trouvé !]] &lt;br /&gt;
La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.

En haut à gauche de la fenêtre, on peut lire le décalage depuis le début du fichier : '''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Recopier 512 octets dans le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -m 2G -cpu host -boot d -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB).

== Range ta chambre ! ==
reste plus qu'à &quot;faire le ménage&quot; :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;</text>
      <sha1>j5y6geo18g3jpp1xskpdi8ccvykqkqo</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5659</id>
      <parentid>5658</parentid>
      <timestamp>2014-07-07T17:36:39Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <comment>/* Range ta chambre ! */</comment>
      <text xml:space="preserve" bytes="10904">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue '''ligne des options de boot''' suivante qui permet de démarrer ma '''debian live''' directement en français.
&lt;code&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/code&gt;
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.

== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'image ISO téléchargée, juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;

[[fichier:Hexcurse-01.png|640px|hexcurse]] &lt;br /&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite). 


[[fichier:Hexcurse-02.png|640px|hexcurse - aide]] &lt;br /&gt;
La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide.

'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}
Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.

[[fichier:Hexcurse-04.png|640px|hexcurse - En bas à gauche -&gt; Invite pour entrer la chaîne à rechercher.]] &lt;br /&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


[[fichier:Hexcurse-03.png|640px|hexcurse - &quot;live-amd64&quot; a été trouvé !]] &lt;br /&gt;
La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.

En haut à gauche de la fenêtre, on peut lire le décalage depuis le début du fichier : '''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Recopier 512 octets dans le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -m 2G -cpu host -boot d -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB).

reste plus qu'à &quot;faire le ménage&quot; :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;</text>
      <sha1>t7gcf1baiwcxxah8pzx33h9sno7x7r0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5661</id>
      <parentid>5659</parentid>
      <timestamp>2014-07-07T17:41:07Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Recherche avec l'éditeur hexcurse */ chgmt image</comment>
      <text xml:space="preserve" bytes="10944">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue '''ligne des options de boot''' suivante qui permet de démarrer ma '''debian live''' directement en français.
&lt;code&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/code&gt;
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.

== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'image ISO téléchargée, juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;

[[fichier:Hexcurse-01.png|640px|hexcurse]] &lt;br /&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite). 


[[fichier:Hexcurse-02.png|640px|hexcurse - aide]] &lt;br /&gt;
La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide.

'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}
Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.

[[fichier:Hexcurse-04.png|640px|hexcurse - En bas à gauche -&gt; Invite pour entrer la chaîne à rechercher.]] &lt;br /&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


[[fichier:Hexcurse-05.png|640px|hexcurse - &quot;live-amd64&quot; a été trouvé !]] &lt;br /&gt;
La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.

Une fois le curseur bien positionné, en haut à gauche de la fenêtre, on pourra lire le décalage depuis le début du fichier : '''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Recopier 512 octets dans le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -m 2G -cpu host -boot d -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB).

reste plus qu'à &quot;faire le ménage&quot; :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;</text>
      <sha1>5vgqljzz7wkb47savmll5yzxrvteccu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5662</id>
      <parentid>5661</parentid>
      <timestamp>2014-07-07T17:44:02Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <comment>/* Recherche avec l'éditeur hexcurse */</comment>
      <text xml:space="preserve" bytes="10950">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue '''ligne des options de boot''' suivante qui permet de démarrer ma '''debian live''' directement en français.
&lt;code&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/code&gt;
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.

== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'image ISO téléchargée, juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;

[[fichier:Hexcurse-01.png|640px|hexcurse]] &lt;br /&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite). 


[[fichier:Hexcurse-02.png|640px|hexcurse - aide]] &lt;br /&gt;
La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide.

'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}
Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.

[[fichier:Hexcurse-04.png|640px|hexcurse - En bas à gauche -&gt; Invite pour entrer la chaîne à rechercher.]] &lt;br /&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


[[fichier:Hexcurse-05.png|640px|hexcurse - &quot;live-amd64&quot; a été trouvé !]] &lt;br /&gt;
La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.

Une fois le curseur bien positionné, en haut à gauche de la fenêtre, on pourra lire le décalage depuis le début du fichier :&lt;br /&gt;
'''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Recopier 512 octets dans le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -m 2G -cpu host -boot d -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB).

reste plus qu'à &quot;faire le ménage&quot; :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;</text>
      <sha1>b7245dhi6waqutst753tqoxuf1a3x3b</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5663</id>
      <parentid>5662</parentid>
      <timestamp>2014-07-07T17:48:12Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Tester l'image ISO avec kvm */</comment>
      <text xml:space="preserve" bytes="10977">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue '''ligne des options de boot''' suivante qui permet de démarrer ma '''debian live''' directement en français.
&lt;code&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/code&gt;
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.

== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'image ISO téléchargée, juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;

[[fichier:Hexcurse-01.png|640px|hexcurse]] &lt;br /&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite). 


[[fichier:Hexcurse-02.png|640px|hexcurse - aide]] &lt;br /&gt;
La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide.

'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}
Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.

[[fichier:Hexcurse-04.png|640px|hexcurse - En bas à gauche -&gt; Invite pour entrer la chaîne à rechercher.]] &lt;br /&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


[[fichier:Hexcurse-05.png|640px|hexcurse - &quot;live-amd64&quot; a été trouvé !]] &lt;br /&gt;
La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.

Une fois le curseur bien positionné, en haut à gauche de la fenêtre, on pourra lire le décalage depuis le début du fichier :&lt;br /&gt;
'''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Recopier 512 octets dans le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -m 2G -cpu host -boot d -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB).

Il ne reste plus qu'à supprimer les fichiers devenus inutiles :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;</text>
      <sha1>cn6fd4ze5p4xb12nxklqi8tulplae0x</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5664</id>
      <parentid>5663</parentid>
      <timestamp>2014-07-07T17:55:40Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Description */ ajout lien vers img ISO</comment>
      <text xml:space="preserve" bytes="11085">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue '''ligne des options de boot''' suivante qui permet de démarrer ma '''debian live''' directement en français.
&lt;code&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/code&gt;
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.

== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'[http://caesar.acc.umu.se/debian-cd/current-live/amd64/iso-hybrid/debian-live-7.5.0-amd64-xfce-desktop.iso|image ISO téléchargée], juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;

[[fichier:Hexcurse-01.png|640px|hexcurse]] &lt;br /&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite). 


[[fichier:Hexcurse-02.png|640px|hexcurse - aide]] &lt;br /&gt;
La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide.

'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}
Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.

[[fichier:Hexcurse-04.png|640px|hexcurse - En bas à gauche -&gt; Invite pour entrer la chaîne à rechercher.]] &lt;br /&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


[[fichier:Hexcurse-05.png|640px|hexcurse - &quot;live-amd64&quot; a été trouvé !]] &lt;br /&gt;
La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.

Une fois le curseur bien positionné, en haut à gauche de la fenêtre, on pourra lire le décalage depuis le début du fichier :&lt;br /&gt;
'''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Recopier 512 octets dans le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -m 2G -cpu host -boot d -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB).

Il ne reste plus qu'à supprimer les fichiers devenus inutiles :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;</text>
      <sha1>tvmoaqxk37wkuc4wisby29pvksatnvw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5666</id>
      <parentid>5664</parentid>
      <timestamp>2014-07-07T18:05:08Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Recherche avec l'éditeur hexcurse */ chgmt img recherche</comment>
      <text xml:space="preserve" bytes="11063">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue '''ligne des options de boot''' suivante qui permet de démarrer ma '''debian live''' directement en français.
&lt;code&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/code&gt;
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.

== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'[http://caesar.acc.umu.se/debian-cd/current-live/amd64/iso-hybrid/debian-live-7.5.0-amd64-xfce-desktop.iso|image ISO téléchargée], juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;

[[fichier:Hexcurse-01.png|640px|hexcurse]] &lt;br /&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite). 


[[fichier:Hexcurse-02.png|640px|hexcurse - aide]] &lt;br /&gt;
La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide.

'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}
Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.

[[fichier:Hexcurse-06.png|640px|En bas, à gauche -&gt; Enter ascii value (): live-amd64]] &lt;br /&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


[[fichier:Hexcurse-05.png|640px|hexcurse - &quot;live-amd64&quot; a été trouvé !]] &lt;br /&gt;
La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.

Une fois le curseur bien positionné, en haut à gauche de la fenêtre, on pourra lire le décalage depuis le début du fichier :&lt;br /&gt;
'''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Recopier 512 octets dans le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -m 2G -cpu host -boot d -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB).

Il ne reste plus qu'à supprimer les fichiers devenus inutiles :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;</text>
      <sha1>bq3ljz9jq4w02j3k7kf4gybo1e45eho</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5667</id>
      <parentid>5666</parentid>
      <timestamp>2014-07-10T17:41:37Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <comment>/* Tester l'image ISO avec kvm */ ajout script</comment>
      <text xml:space="preserve" bytes="13005">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue '''ligne des options de boot''' suivante qui permet de démarrer ma '''debian live''' directement en français.
&lt;code&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/code&gt;
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.

== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'[http://caesar.acc.umu.se/debian-cd/current-live/amd64/iso-hybrid/debian-live-7.5.0-amd64-xfce-desktop.iso|image ISO téléchargée], juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;

[[fichier:Hexcurse-01.png|640px|hexcurse]] &lt;br /&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite). 


[[fichier:Hexcurse-02.png|640px|hexcurse - aide]] &lt;br /&gt;
La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide.

'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}
Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.

[[fichier:Hexcurse-06.png|640px|En bas, à gauche -&gt; Enter ascii value (): live-amd64]] &lt;br /&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


[[fichier:Hexcurse-05.png|640px|hexcurse - &quot;live-amd64&quot; a été trouvé !]] &lt;br /&gt;
La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.

Une fois le curseur bien positionné, en haut à gauche de la fenêtre, on pourra lire le décalage depuis le début du fichier :&lt;br /&gt;
'''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Recopier 512 octets dans le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -m 2G -cpu host -boot d -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB).

Il ne reste plus qu'à supprimer les fichiers devenus inutiles :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
== Ou alors, utiliser un script ==
&lt;code&gt;
#!/bin/sh

#-------------------------------------------------------------------------------------------------
#
# NOM DU SCRIPT: IsoLive2FR.sh
#
# BUT: Ajouter les paramètres de boot à une image ISO Live debian
#       de façon à ce qu'elle démarre directement en Français.
#
# DATE: 10/07/2014
#
#-------------------------------------------------------------------------------------------------
#
# NOTES:
#-------------------------------------------------------------------------------------------------
# Ce n'est qu'une ébauche de script inspiré par ceux qu'a posté fran.b dans le fil de discussion :
#  http://www.debian-fr.org/franciser-l-iso-debian-7-5-live-nonfree-moins-de-2-minutes-t48948.html 
#
# Ça fonctionne, mais je reviendrai plus tard pour rajouter les contrôles d'erreur, et plus...
#
#-------------------------------------------------------------------------------------------------

test &quot;$1&quot; || 
  {
    printf &quot;Donnez un chemin d'image \&quot;ISO Live\&quot; debian en paramètre.\n&quot;; 
    exit 1;
  }

printf &quot;\nPatientez un peu, je suis en train de franciser \&quot;$1\&quot;...\n\n&quot;; 
fichImgEng=$1
fichImgFR=${fichImgEng%.*}-FR.${fichImgEng##*.}

fichRech=&quot;live.cfg&quot;
chOrigin=&quot;quiet splash&quot;
chAjout=&quot;lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes&quot;
chRempl=&quot;$chOrigin $chAjout&quot;
blkSize=`  isoinfo -d    -i $fichImgEng | grep &quot;block size&quot; | awk '{print $5}'`
valOffset=`isoinfo -l -R -i $fichImgEng | grep $fichRech    | awk '{print $10}'`

cp $fichImgEng $fichImgFR                                              &amp;&amp; \
dd bs=$blkSize count=1 skip=$valOffset if=$fichImgEng 2&gt;/dev/null      |  \
sed &quot;s/$chOrigin/$chRempl/&quot;                                            |  \
dd bs=$blkSize count=1 seek=$valOffset of=$fichImgFR conv=notrunc,sync

printf &quot;\n\nVoilà voilà! \&quot;$fichImgFR\&quot; est la version francisée.\n\n&quot;&lt;/code&gt;</text>
      <sha1>skr8vs7xaxxmyln56tsnzfpe0tdz2yy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5668</id>
      <parentid>5667</parentid>
      <timestamp>2014-07-10T17:47:05Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <comment>/* Ou alors, utiliser un script */ ajout &quot;necessite&quot;</comment>
      <text xml:space="preserve" bytes="13063">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue '''ligne des options de boot''' suivante qui permet de démarrer ma '''debian live''' directement en français.
&lt;code&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/code&gt;
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.

== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'[http://caesar.acc.umu.se/debian-cd/current-live/amd64/iso-hybrid/debian-live-7.5.0-amd64-xfce-desktop.iso|image ISO téléchargée], juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;

[[fichier:Hexcurse-01.png|640px|hexcurse]] &lt;br /&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite). 


[[fichier:Hexcurse-02.png|640px|hexcurse - aide]] &lt;br /&gt;
La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide.

'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}
Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.

[[fichier:Hexcurse-06.png|640px|En bas, à gauche -&gt; Enter ascii value (): live-amd64]] &lt;br /&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


[[fichier:Hexcurse-05.png|640px|hexcurse - &quot;live-amd64&quot; a été trouvé !]] &lt;br /&gt;
La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.

Une fois le curseur bien positionné, en haut à gauche de la fenêtre, on pourra lire le décalage depuis le début du fichier :&lt;br /&gt;
'''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Recopier 512 octets dans le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -m 2G -cpu host -boot d -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB).

Il ne reste plus qu'à supprimer les fichiers devenus inutiles :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
== Ou alors, utiliser un script ==
&lt;code&gt;
#!/bin/sh

#-------------------------------------------------------------------------------------------------
#
# NOM DU SCRIPT: isoLive2FR.sh
#
#
# NÉCESSITE: &quot;isoinfo&quot; du paquetage &quot;genisoimage&quot;
#
# BUT: Ajouter les paramètres de boot à une image ISO Live debian
#       de façon à ce qu'elle démarre directement en Français.
#
#
# DATE: 10/07/2014
#
#-------------------------------------------------------------------------------------------------
#
# NOTES:
#-------------------------------------------------------------------------------------------------
# Ce n'est qu'une ébauche de script inspiré par ceux qu'a posté fran.b dans le fil de discussion :
#  http://www.debian-fr.org/franciser-l-iso-debian-7-5-live-nonfree-moins-de-2-minutes-t48948.html 
#
# Ça fonctionne, mais je reviendrai plus tard pour rajouter les contrôles d'erreur, et plus...
#
#-------------------------------------------------------------------------------------------------

test &quot;$1&quot; || 
  {
    printf &quot;Donnez un chemin d'image \&quot;ISO Live\&quot; debian en paramètre.\n&quot;; 
    exit 1;
  }

printf &quot;\nPatientez un peu, je suis en train de franciser \&quot;$1\&quot;...\n\n&quot;; 
fichImgEng=$1
fichImgFR=${fichImgEng%.*}-FR.${fichImgEng##*.}

fichRech=&quot;live.cfg&quot;
chOrigin=&quot;quiet splash&quot;
chAjout=&quot;lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes&quot;
chRempl=&quot;$chOrigin $chAjout&quot;
blkSize=`  isoinfo -d    -i $fichImgEng | grep &quot;block size&quot; | awk '{print $5}'`
valOffset=`isoinfo -l -R -i $fichImgEng | grep $fichRech    | awk '{print $10}'`

cp $fichImgEng $fichImgFR                                              &amp;&amp; \
dd bs=$blkSize count=1 skip=$valOffset if=$fichImgEng 2&gt;/dev/null      |  \
sed &quot;s/$chOrigin/$chRempl/&quot;                                            |  \
dd bs=$blkSize count=1 seek=$valOffset of=$fichImgFR conv=notrunc,sync

printf &quot;\n\nVoilà voilà! \&quot;$fichImgFR\&quot; est la version francisée.\n\n&quot;
&lt;/code&gt;</text>
      <sha1>rla6ob8ch50imevbok72m2scsg2q48o</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5669</id>
      <parentid>5668</parentid>
      <timestamp>2014-07-10T17:48:10Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Ou alors, utiliser un script */</comment>
      <text xml:space="preserve" bytes="13064">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue '''ligne des options de boot''' suivante qui permet de démarrer ma '''debian live''' directement en français.
&lt;code&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/code&gt;
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.

== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'[http://caesar.acc.umu.se/debian-cd/current-live/amd64/iso-hybrid/debian-live-7.5.0-amd64-xfce-desktop.iso|image ISO téléchargée], juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;

[[fichier:Hexcurse-01.png|640px|hexcurse]] &lt;br /&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite). 


[[fichier:Hexcurse-02.png|640px|hexcurse - aide]] &lt;br /&gt;
La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide.

'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}
Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.

[[fichier:Hexcurse-06.png|640px|En bas, à gauche -&gt; Enter ascii value (): live-amd64]] &lt;br /&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


[[fichier:Hexcurse-05.png|640px|hexcurse - &quot;live-amd64&quot; a été trouvé !]] &lt;br /&gt;
La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.

Une fois le curseur bien positionné, en haut à gauche de la fenêtre, on pourra lire le décalage depuis le début du fichier :&lt;br /&gt;
'''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Recopier 512 octets dans le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -m 2G -cpu host -boot d -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB).

Il ne reste plus qu'à supprimer les fichiers devenus inutiles :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
== Ou alors, utilisez un script. ==
&lt;code&gt;
#!/bin/sh

#-------------------------------------------------------------------------------------------------
#
# NOM DU SCRIPT: isoLive2fr.sh
#
#
# NÉCESSITE: &quot;isoinfo&quot; du paquetage &quot;genisoimage&quot;
#
# BUT: Ajouter les paramètres de boot à une image ISO Live debian
#       de façon à ce qu'elle démarre directement en Français.
#
#
# DATE: 10/07/2014
#
#-------------------------------------------------------------------------------------------------
#
# NOTES:
#-------------------------------------------------------------------------------------------------
# Ce n'est qu'une ébauche de script inspiré par ceux qu'a posté fran.b dans le fil de discussion :
#  http://www.debian-fr.org/franciser-l-iso-debian-7-5-live-nonfree-moins-de-2-minutes-t48948.html 
#
# Ça fonctionne, mais je reviendrai plus tard pour rajouter les contrôles d'erreur, et plus...
#
#-------------------------------------------------------------------------------------------------

test &quot;$1&quot; || 
  {
    printf &quot;Donnez un chemin d'image \&quot;ISO Live\&quot; debian en paramètre.\n&quot;; 
    exit 1;
  }

printf &quot;\nPatientez un peu, je suis en train de franciser \&quot;$1\&quot;...\n\n&quot;; 
fichImgEng=$1
fichImgFR=${fichImgEng%.*}-FR.${fichImgEng##*.}

fichRech=&quot;live.cfg&quot;
chOrigin=&quot;quiet splash&quot;
chAjout=&quot;lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes&quot;
chRempl=&quot;$chOrigin $chAjout&quot;
blkSize=`  isoinfo -d    -i $fichImgEng | grep &quot;block size&quot; | awk '{print $5}'`
valOffset=`isoinfo -l -R -i $fichImgEng | grep $fichRech    | awk '{print $10}'`

cp $fichImgEng $fichImgFR                                              &amp;&amp; \
dd bs=$blkSize count=1 skip=$valOffset if=$fichImgEng 2&gt;/dev/null      |  \
sed &quot;s/$chOrigin/$chRempl/&quot;                                            |  \
dd bs=$blkSize count=1 seek=$valOffset of=$fichImgFR conv=notrunc,sync

printf &quot;\n\nVoilà voilà! \&quot;$fichImgFR\&quot; est la version francisée.\n\n&quot;
&lt;/code&gt;</text>
      <sha1>j3ez7um9p3p3res2zw6wmwvi5lu2yxv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5670</id>
      <parentid>5669</parentid>
      <timestamp>2014-07-10T19:01:52Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Ou alors, utilisez un script. */ utilisation &quot;/tmp&quot;</comment>
      <text xml:space="preserve" bytes="13222">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue '''ligne des options de boot''' suivante qui permet de démarrer ma '''debian live''' directement en français.
&lt;code&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/code&gt;
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.

== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'[http://caesar.acc.umu.se/debian-cd/current-live/amd64/iso-hybrid/debian-live-7.5.0-amd64-xfce-desktop.iso|image ISO téléchargée], juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;

[[fichier:Hexcurse-01.png|640px|hexcurse]] &lt;br /&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite). 


[[fichier:Hexcurse-02.png|640px|hexcurse - aide]] &lt;br /&gt;
La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide.

'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}
Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.

[[fichier:Hexcurse-06.png|640px|En bas, à gauche -&gt; Enter ascii value (): live-amd64]] &lt;br /&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


[[fichier:Hexcurse-05.png|640px|hexcurse - &quot;live-amd64&quot; a été trouvé !]] &lt;br /&gt;
La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.

Une fois le curseur bien positionné, en haut à gauche de la fenêtre, on pourra lire le décalage depuis le début du fichier :&lt;br /&gt;
'''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Recopier 512 octets dans le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -m 2G -cpu host -boot d -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB).

Il ne reste plus qu'à supprimer les fichiers devenus inutiles :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
== Ou alors, utilisez un script. ==
&lt;code&gt;
#!/bin/sh

#-------------------------------------------------------------------------------------------------
#
# NOM DU SCRIPT: isoLive2fr.sh
#
#
# NÉCESSITE: &quot;isoinfo&quot; du paquetage &quot;genisoimage&quot;
#            &quot;dd&quot;      du paquetage &quot;&quot;
#
# BUT: Ajouter les paramètres de boot à une image ISO Live debian
#       de façon à ce qu'elle démarre directement en Français.
#
#
# DATE: 10/07/2014
#
#-------------------------------------------------------------------------------------------------
#
# NOTES:
#-------------------------------------------------------------------------------------------------
# Ce n'est qu'une ébauche de script inspiré par ceux qu'a posté fran.b dans le fil de discussion :
#  http://www.debian-fr.org/franciser-l-iso-debian-7-5-live-nonfree-moins-de-2-minutes-t48948.html 
#
# Ça fonctionne, mais je reviendrai plus tard pour rajouter les contrôles d'erreur, et plus...
#
#-------------------------------------------------------------------------------------------------

test &quot;$1&quot; || 
  {
    printf &quot;Donnez un chemin d'image \&quot;ISO Live\&quot; debian en paramètre.\n&quot;; 
    exit 1;
  }

printf &quot;\nPatientez un peu, je suis en train de franciser \&quot;$1\&quot;...\n\n&quot;; 
fichImgEng=$1
fichImgFR=${fichImgEng%.*}-FR.${fichImgEng##*.}

fichRech=&quot;live.cfg&quot;
chOrigin=&quot;quiet splash&quot;
chAjout=&quot;lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes&quot;
monFichTmp=&quot;/tmp/tmpAeffacer&quot;
chRempl=&quot;$chOrigin $chAjout&quot;

blkSize=`  isoinfo -d    -i $fichImgEng | grep &quot;block size&quot; | awk '{print $5}'`
valOffset=`isoinfo -l -R -i $fichImgEng | grep $fichRech    | awk '{print $10}'`

dd bs=$blkSize count=1 skip=$valOffset if=$fichImgEng 2&gt;/dev/null                      |   \
sed &quot;s/$chOrigin/$chRempl/&quot;                           &gt; $monFichTmp                    &amp;&amp;  \
dd bs=$blkSize count=1 seek=$valOffset if=$monFichTmp of=$fichImgEng conv=notrunc,sync &amp;&amp;  \
mv $fichImgEng $fichImgFr                                                              &amp;&amp;  \
rm $monFichTmp

printf &quot;\n\nVoilà voilà! \&quot;$fichImgFR\&quot; est la version francisée.\n\n&quot;
&lt;/code&gt;</text>
      <sha1>bgabut4zyhl5fu8evye2xi1is6wnhud</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5671</id>
      <parentid>5670</parentid>
      <timestamp>2014-07-10T19:06:43Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Ou alors, utilisez un script. */ ajout necessite &quot;dd&quot;</comment>
      <text xml:space="preserve" bytes="13156">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue '''ligne des options de boot''' suivante qui permet de démarrer ma '''debian live''' directement en français.
&lt;code&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/code&gt;
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.

== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'[http://caesar.acc.umu.se/debian-cd/current-live/amd64/iso-hybrid/debian-live-7.5.0-amd64-xfce-desktop.iso|image ISO téléchargée], juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;

[[fichier:Hexcurse-01.png|640px|hexcurse]] &lt;br /&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite). 


[[fichier:Hexcurse-02.png|640px|hexcurse - aide]] &lt;br /&gt;
La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide.

'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}
Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.

[[fichier:Hexcurse-06.png|640px|En bas, à gauche -&gt; Enter ascii value (): live-amd64]] &lt;br /&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


[[fichier:Hexcurse-05.png|640px|hexcurse - &quot;live-amd64&quot; a été trouvé !]] &lt;br /&gt;
La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.

Une fois le curseur bien positionné, en haut à gauche de la fenêtre, on pourra lire le décalage depuis le début du fichier :&lt;br /&gt;
'''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Recopier 512 octets dans le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -m 2G -cpu host -boot d -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB).

Il ne reste plus qu'à supprimer les fichiers devenus inutiles :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
== Ou alors, utilisez un script. ==
&lt;code&gt;
#!/bin/sh

#-------------------------------------------------------------------------------------------------
#
# NOM DU SCRIPT: isoLive2fr.sh
#
#
# NÉCESSITE: &quot;isoinfo&quot; du paquetage &quot;genisoimage&quot;
#            &quot;dd&quot;      du paquetage &quot;coreutils&quot;
#
# BUT: Ajouter les paramètres de boot à une image ISO Live debian
#       de façon à ce qu'elle démarre directement en Français.
#
#
# DATE: 10/07/2014
#
#-------------------------------------------------------------------------------------------------
#
# NOTES:
#-------------------------------------------------------------------------------------------------
# Ce n'est qu'une ébauche de script inspiré par ceux qu'a posté fran.b dans le fil de discussion :
#  http://www.debian-fr.org/franciser-l-iso-debian-7-5-live-nonfree-moins-de-2-minutes-t48948.html 
#
# Ça fonctionne, mais je reviendrai plus tard pour rajouter les contrôles d'erreur, et plus...
#
#-------------------------------------------------------------------------------------------------

test &quot;$1&quot; || 
  {
    printf &quot;Donnez un chemin d'image \&quot;ISO Live\&quot; debian en paramètre.\n&quot;; 
    exit 1;
  }

fichImgEng=$1
fichImgFR=${fichImgEng%.*}-FR.${fichImgEng##*.}

fichRech=&quot;live.cfg&quot;
chOrigin=&quot;quiet splash&quot;
chAjout=&quot;lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes&quot;
monFichTmp=&quot;/tmp/tmpAeffacer&quot;
chRempl=&quot;$chOrigin $chAjout&quot;

blkSize=`  isoinfo -d    -i $fichImgEng | grep &quot;block size&quot; | awk '{print $5}'`
valOffset=`isoinfo -l -R -i $fichImgEng | grep $fichRech    | awk '{print $10}'`

dd bs=$blkSize count=1 skip=$valOffset if=$fichImgEng 2&gt;/dev/null                      |   \
sed &quot;s/$chOrigin/$chRempl/&quot;                           &gt; $monFichTmp                    &amp;&amp;  \
dd bs=$blkSize count=1 seek=$valOffset if=$monFichTmp of=$fichImgEng conv=notrunc,sync &amp;&amp;  \
mv $fichImgEng $fichImgFr                                                              &amp;&amp;  \
rm $monFichTmp

printf &quot;\n\nVoilà voilà! \&quot;$fichImgFR\&quot; est la version francisée.\n\n&quot;
&lt;/code&gt;</text>
      <sha1>gjsukpyt714njtl0gp2jnmcjlzq1mve</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5672</id>
      <parentid>5671</parentid>
      <timestamp>2014-07-10T19:13:05Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Ou alors, utilisez un script. */ modif &quot;monFichTmp&quot;</comment>
      <text xml:space="preserve" bytes="13168">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue '''ligne des options de boot''' suivante qui permet de démarrer ma '''debian live''' directement en français.
&lt;code&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/code&gt;
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.

== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'[http://caesar.acc.umu.se/debian-cd/current-live/amd64/iso-hybrid/debian-live-7.5.0-amd64-xfce-desktop.iso|image ISO téléchargée], juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;

[[fichier:Hexcurse-01.png|640px|hexcurse]] &lt;br /&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite). 


[[fichier:Hexcurse-02.png|640px|hexcurse - aide]] &lt;br /&gt;
La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide.

'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}
Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.

[[fichier:Hexcurse-06.png|640px|En bas, à gauche -&gt; Enter ascii value (): live-amd64]] &lt;br /&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


[[fichier:Hexcurse-05.png|640px|hexcurse - &quot;live-amd64&quot; a été trouvé !]] &lt;br /&gt;
La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.

Une fois le curseur bien positionné, en haut à gauche de la fenêtre, on pourra lire le décalage depuis le début du fichier :&lt;br /&gt;
'''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Recopier 512 octets dans le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -m 2G -cpu host -boot d -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB).

Il ne reste plus qu'à supprimer les fichiers devenus inutiles :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
== Ou alors, utilisez un script. ==
&lt;code&gt;
#!/bin/sh

#-------------------------------------------------------------------------------------------------
#
# NOM DU SCRIPT: isoLive2fr.sh
#
#
# NÉCESSITE: &quot;isoinfo&quot; du paquetage &quot;genisoimage&quot;
#            &quot;dd&quot;      du paquetage &quot;coreutils&quot;
#
# BUT: Ajouter les paramètres de boot à une image ISO Live debian
#       de façon à ce qu'elle démarre directement en Français.
#
#
# DATE: 10/07/2014
#
#-------------------------------------------------------------------------------------------------
#
# NOTES:
#-------------------------------------------------------------------------------------------------
# Ce n'est qu'une ébauche de script inspiré par ceux qu'a posté fran.b dans le fil de discussion :
#  http://www.debian-fr.org/franciser-l-iso-debian-7-5-live-nonfree-moins-de-2-minutes-t48948.html 
#
# Ça fonctionne, mais je reviendrai plus tard pour rajouter les contrôles d'erreur, et plus...
#
#-------------------------------------------------------------------------------------------------

test &quot;$1&quot; || 
  {
    printf &quot;Donnez un chemin d'image \&quot;ISO Live\&quot; debian en paramètre.\n&quot;; 
    exit 1;
  }

fichImgEng=$1
fichImgFR=${fichImgEng%.*}-FR.${fichImgEng##*.}

fichRech=&quot;live.cfg&quot;
chOrigin=&quot;quiet splash&quot;
chAjout=&quot;lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes&quot;
monFichTmp=/tmp/tmpAeffacer`date +%s`.dat
chRempl=&quot;$chOrigin $chAjout&quot;

blkSize=`  isoinfo -d    -i $fichImgEng | grep &quot;block size&quot; | awk '{print $5}'`
valOffset=`isoinfo -l -R -i $fichImgEng | grep $fichRech    | awk '{print $10}'`

dd bs=$blkSize count=1 skip=$valOffset if=$fichImgEng 2&gt;/dev/null                      |   \
sed &quot;s/$chOrigin/$chRempl/&quot;                           &gt; $monFichTmp                    &amp;&amp;  \
dd bs=$blkSize count=1 seek=$valOffset if=$monFichTmp of=$fichImgEng conv=notrunc,sync &amp;&amp;  \
mv $fichImgEng $fichImgFr                                                              &amp;&amp;  \
rm $monFichTmp

printf &quot;\n\nVoilà voilà! \&quot;$fichImgFR\&quot; est la version francisée.\n\n&quot;
&lt;/code&gt;</text>
      <sha1>t4inp3qdglzpkp4zaxe9hz5rialanew</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5673</id>
      <parentid>5672</parentid>
      <timestamp>2014-07-10T19:39:07Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Ou alors, utilisez un script. */ formatage divers</comment>
      <text xml:space="preserve" bytes="13265">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue '''ligne des options de boot''' suivante qui permet de démarrer ma '''debian live''' directement en français.
&lt;code&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/code&gt;
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.

== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'[http://caesar.acc.umu.se/debian-cd/current-live/amd64/iso-hybrid/debian-live-7.5.0-amd64-xfce-desktop.iso|image ISO téléchargée], juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;

[[fichier:Hexcurse-01.png|640px|hexcurse]] &lt;br /&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite). 


[[fichier:Hexcurse-02.png|640px|hexcurse - aide]] &lt;br /&gt;
La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide.

'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}
Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.

[[fichier:Hexcurse-06.png|640px|En bas, à gauche -&gt; Enter ascii value (): live-amd64]] &lt;br /&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


[[fichier:Hexcurse-05.png|640px|hexcurse - &quot;live-amd64&quot; a été trouvé !]] &lt;br /&gt;
La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.

Une fois le curseur bien positionné, en haut à gauche de la fenêtre, on pourra lire le décalage depuis le début du fichier :&lt;br /&gt;
'''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Recopier 512 octets dans le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -m 2G -cpu host -boot d -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB).

Il ne reste plus qu'à supprimer les fichiers devenus inutiles :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
== Ou alors, utilisez un script. ==
&lt;code&gt;
#!/bin/sh

#-------------------------------------------------------------------------------------------------
#
# NOM DU SCRIPT: isoLive2fr.sh
#
#
# NÉCESSITE: &quot;isoinfo&quot; du paquetage &quot;genisoimage&quot;
#            &quot;dd&quot;      du paquetage &quot;coreutils&quot;
#
# BUT: Ajouter les paramètres de boot à une image ISO Live debian
#       de façon à ce qu'elle démarre directement en Français.
#
#
# DATE: 10/07/2014
#
#-------------------------------------------------------------------------------------------------
#
# NOTES:
#-------------------------------------------------------------------------------------------------
# Ce n'est qu'une ébauche de script inspiré par ceux qu'a posté fran.b dans le fil de discussion :
#  http://www.debian-fr.org/franciser-l-iso-debian-7-5-live-nonfree-moins-de-2-minutes-t48948.html 
#
# Ça fonctionne, mais je reviendrai plus tard pour rajouter les contrôles d'erreur, et plus...
#
#-------------------------------------------------------------------------------------------------

test &quot;$1&quot; || 
  {
    printf &quot;Donnez un chemin d'image \&quot;ISO Live\&quot; debian en paramètre.\n&quot;; 
    exit 1;
  }

fichImgEng=$1
fichImgFr=&quot;${fichImgEng%.*}-FR.${fichImgEng##*.}&quot;

fichRech=&quot;live.cfg&quot;
chOrigin=&quot;quiet splash&quot;
chAjout=&quot;lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes&quot;
monFichTmp=&quot;/tmp/tmpAeffacer`date +%s`.dat&quot;
chRempl=&quot;$chOrigin $chAjout&quot;

blkSize=`  isoinfo -d    -i &quot;${fichImgEng}&quot; | grep &quot;block size&quot;  | awk '{print $5}'`
valOffset=`isoinfo -l -R -i &quot;${fichImgEng}&quot; | grep &quot;${fichRech}&quot; | awk '{print $10}'`


dd bs=$blkSize count=1 skip=$valOffset if=&quot;${fichImgEng}&quot; 2&gt;/dev/null                                      |   \
sed &quot;s/$chOrigin/$chRempl/&quot;                           &gt; &quot;${monFichTmp}&quot;                                    &amp;&amp;  \
dd bs=$blkSize count=1 seek=$valOffset if=&quot;${monFichTmp}&quot; of=&quot;${fichImgEng}&quot; conv=notrunc,sync 2&gt;/dev/null &amp;&amp;  \
mv &quot;${fichImgEng}&quot; &quot;${fichImgFr}&quot;                                                                          &amp;&amp;  \
rm ${monFichTmp}

printf &quot;\nVoilà voilà! \&quot;${fichImgFr}\&quot; est la version francisée.\n\n&quot;
&lt;/code&gt;</text>
      <sha1>48g2q2tqaet2u26us78h51cwdwivp4q</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5674</id>
      <parentid>5673</parentid>
      <timestamp>2014-07-10T20:04:06Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Ou alors, utilisez un script. */ divers</comment>
      <text xml:space="preserve" bytes="13258">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue '''ligne des options de boot''' suivante qui permet de démarrer ma '''debian live''' directement en français.
&lt;code&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/code&gt;
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.

== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'[http://caesar.acc.umu.se/debian-cd/current-live/amd64/iso-hybrid/debian-live-7.5.0-amd64-xfce-desktop.iso|image ISO téléchargée], juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;

[[fichier:Hexcurse-01.png|640px|hexcurse]] &lt;br /&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite). 


[[fichier:Hexcurse-02.png|640px|hexcurse - aide]] &lt;br /&gt;
La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide.

'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}
Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.

[[fichier:Hexcurse-06.png|640px|En bas, à gauche -&gt; Enter ascii value (): live-amd64]] &lt;br /&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


[[fichier:Hexcurse-05.png|640px|hexcurse - &quot;live-amd64&quot; a été trouvé !]] &lt;br /&gt;
La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.

Une fois le curseur bien positionné, en haut à gauche de la fenêtre, on pourra lire le décalage depuis le début du fichier :&lt;br /&gt;
'''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Recopier 512 octets dans le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -m 2G -cpu host -boot d -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB).

Il ne reste plus qu'à supprimer les fichiers devenus inutiles :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
== Ou alors, utilisez un script. ==
&lt;code&gt;
#!/bin/sh

#-------------------------------------------------------------------------------------------------
#
# NOM DU SCRIPT: isoLive2fr.sh
#
#
# NÉCESSITE: &quot;isoinfo&quot; du paquetage &quot;genisoimage&quot;
#            &quot;dd&quot;      du paquetage &quot;coreutils&quot;
#
# BUT: Ajouter les paramètres de boot à une image ISO Live debian
#       de façon à ce qu'elle démarre directement en Français.
#
# DATE: 10/07/2014
#
#-------------------------------------------------------------------------------------------------
#
# NOTES:
#-------------------------------------------------------------------------------------------------
# Ce n'est qu'une ébauche de script inspiré par ceux qu'a posté fran.b dans le fil de discussion :
#  http://www.debian-fr.org/franciser-l-iso-debian-7-5-live-nonfree-moins-de-2-minutes-t48948.html
#
# Ça fonctionne, mais je reviendrai plus tard pour rajouter les contrôles d'erreur, et plus...
#
#-------------------------------------------------------------------------------------------------

test &quot;$1&quot; ||
  {
    printf &quot;Donnez un chemin d'image \&quot;ISO Live\&quot; debian en paramètre.\n&quot;;
    exit 1;
  }

fichImgEn=$1
fichImgFr=&quot;${fichImgEn%.*}-FR.${fichImgEn##*.}&quot;

fichRech=&quot;live.cfg&quot;
chOrigin=&quot;quiet splash&quot;
chAjout=&quot;lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes&quot;
fichTmp=&quot;/tmp/tmpAeffacer`date +%s`.dat&quot;
chRempl=&quot;$chOrigin $chAjout&quot;

blockSize=`isoinfo -d    -i &quot;${fichImgEn}&quot; | grep &quot;block size&quot;  | awk '{print $5}'`
valOffset=`isoinfo -l -R -i &quot;${fichImgEn}&quot; | grep &quot;${fichRech}&quot; | awk '{print $10}'`


dd bs=$blockSize count=1 skip=$valOffset if=&quot;${fichImgEn}&quot;                                   2&gt;/dev/null     |   \
sed &quot;s/$chOrigin/$chRempl/&quot;                                                                   &gt; &quot;${fichTmp}&quot; &amp;&amp;  \
dd bs=$blockSize count=1 seek=$valOffset if=&quot;${fichTmp}&quot; of=&quot;${fichImgEn}&quot; conv=notrunc,sync 2&gt;/dev/null     &amp;&amp;  \
mv &quot;${fichImgEn}&quot; &quot;${fichImgFr}&quot;                                                                             &amp;&amp;  \
rm &quot;${fichTmp}&quot;

printf &quot;\nVoilà voilà! \&quot;${fichImgFr}\&quot; est la version francisée.\n\n&quot;&lt;/code&gt;</text>
      <sha1>0pnivwlzdqwr6po9ozn4j7ww33mtm88</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5675</id>
      <parentid>5674</parentid>
      <timestamp>2014-07-11T14:28:47Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Recherche avec l'éditeur hexcurse */ chg img par captures texte</comment>
      <text xml:space="preserve" bytes="26411">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue '''ligne des options de boot''' suivante qui permet de démarrer ma '''debian live''' directement en français.
&lt;code&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/code&gt;
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.

== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'[http://caesar.acc.umu.se/debian-cd/current-live/amd64/iso-hybrid/debian-live-7.5.0-amd64-xfce-desktop.iso|image ISO téléchargée], juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite).
&lt;pre&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/pre&gt;

La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide. 
&lt;pre&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│ Ctrl Key          HexCurse Keyboard Commands            │◆│ Function Keys  │
│                                                         │▒│                │
│ CTRL+?    Help     - you are reading it now             │▒│ Help     = F1  │
│ CTRL+S    Save     - saves the current file open        │▒│ Save     = F2  │
│ CTRL+O    Open     - opens a new file                   │▒│ Open     = F3  │
│ CTRL+G    Goto     - goto a specified address           │▒│ Goto     = F4  │
│ CTRL+F    Find     - search for a hex/ascii value       │▒│ Find     = F5  │
│ CTRL+A    HexAdres - toggle between hex/decimal address │▒│ HexAdres = F6  │
│ TAB       Hex Edit - toggle between hex/ASCII windows   │▒│ Hex Edit = F7  │
│ CTRL+Q    Quit     - exit out of the program            │▒│ Quit     = F8  │
│                                                         │▒│                │
│ CTRL+U    Page up  - scrolls one screen up              │▒│ Page up  = PGUP│
│ CTRL+D    Page down- scrolls one screen down            │▒│ Page down= PGDN│
│ CTRL+Z    Undo     - reverts last modification          │▒│                │
│ CTRL+T    Home     - returns to the top of the file     │▒│                │
│ CTRL+B    End      - jumps to the bottom of the file    │▒│                │
│                                                         │▒│                │
│                     Press enter to continue             │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/pre&gt;
'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}



Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.
&lt;pre&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└Enter ascii value (): live-amd64                          v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/pre&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.
&lt;pre&gt;
┌33807006─────────────────────────────────────────────────┐^┌────────────────┐
│33807000 6C 61 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 │▒│label live-amd64│
│33807010 0A 09 6D 65 6E 75 20 6C 61 62 65 6C 20 5E 4C 69 │▒│..menu label ^Li│
│33807020 76 65 20 28 61 6D 64 36 34 29 0A 09 6D 65 6E 75 │▒│ve (amd64)..menu│
│33807030 20 64 65 66 61 75 6C 74 0A 09 6C 69 6E 75 78 20 │▒│ default..linux │
│33807040 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A 09 69 │▒│/live/vmlinuz..i│
│33807050 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E 69 74 │▒│nitrd /live/init│
│33807060 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 20 62 │▒│rd.img..append b│
│33807070 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 67 20 │▒│oot=live config │
│33807080 71 75 69 65 74 20 73 70 6C 61 73 68 0A 0A 6C 61 │▒│quiet splash..la│
│33807090 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 2D 66 │▒│bel live-amd64-f│
│338070A0 61 69 6C 73 61 66 65 0A 09 6D 65 6E 75 20 6C 61 │▒│ailsafe..menu la│
│338070B0 62 65 6C 20 5E 4C 69 76 65 20 28 61 6D 64 36 34 │▒│bel ^Live (amd64│
│338070C0 20 66 61 69 6C 73 61 66 65 29 0A 09 6C 69 6E 75 │▒│ failsafe)..linu│
│338070D0 78 20 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A │▒│x /live/vmlinuz.│
│338070E0 09 69 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E │▒│.initrd /live/in│
│338070F0 69 74 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 │▒│itrd.img..append│
│33807100 20 62 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 │▒│ boot=live confi│
│33807110 67 20 6D 65 6D 74 65 73 74 20 6E 6F 61 70 69 63 │▒│g memtest noapic│
│33807120 20 6E 6F 61 70 6D 20 6E 6F 64 6D 61 20 6E 6F 6D │▒│ noapm nodma nom│
│33807130 63 65 20 6E 6F 6C 61 70 69 63 20 6E 6F 6D 6F 64 │▒│ce nolapic nomod│
│33807140 65 73 65 74 20 6E 6F 73 6D 70 20 6E 6F 73 70 6C │▒│eset nosmp nospl│
│33807150 61 73 68 20 76 67 61 3D 6E 6F 72 6D 61 6C 0A 00 │▒│ash vga=normal..│
│33807160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │◆│................│
│338071D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/pre&gt;
Une fois le curseur bien positionné, en haut à gauche de la fenêtre, on pourra lire le décalage depuis le début du fichier :&lt;br /&gt;
'''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Recopier 512 octets dans le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -m 2G -cpu host -boot d -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB).

Il ne reste plus qu'à supprimer les fichiers devenus inutiles :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
== Ou alors, utilisez un script. ==
&lt;code&gt;
#!/bin/sh

#-------------------------------------------------------------------------------------------------
#
# NOM DU SCRIPT: isoLive2fr.sh
#
#
# NÉCESSITE: &quot;isoinfo&quot; du paquetage &quot;genisoimage&quot;
#            &quot;dd&quot;      du paquetage &quot;coreutils&quot;
#
# BUT: Ajouter les paramètres de boot à une image ISO Live debian
#       de façon à ce qu'elle démarre directement en Français.
#
# DATE: 10/07/2014
#
#-------------------------------------------------------------------------------------------------
#
# NOTES:
#-------------------------------------------------------------------------------------------------
# Ce n'est qu'une ébauche de script inspiré par ceux qu'a posté fran.b dans le fil de discussion :
#  http://www.debian-fr.org/franciser-l-iso-debian-7-5-live-nonfree-moins-de-2-minutes-t48948.html
#
# Ça fonctionne, mais je reviendrai plus tard pour rajouter les contrôles d'erreur, et plus...
#
#-------------------------------------------------------------------------------------------------

test &quot;$1&quot; ||
  {
    printf &quot;Donnez un chemin d'image \&quot;ISO Live\&quot; debian en paramètre.\n&quot;;
    exit 1;
  }

fichImgEn=$1
fichImgFr=&quot;${fichImgEn%.*}-FR.${fichImgEn##*.}&quot;

fichRech=&quot;live.cfg&quot;
chOrigin=&quot;quiet splash&quot;
chAjout=&quot;lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes&quot;
fichTmp=&quot;/tmp/tmpAeffacer`date +%s`.dat&quot;
chRempl=&quot;$chOrigin $chAjout&quot;

blockSize=`isoinfo -d    -i &quot;${fichImgEn}&quot; | grep &quot;block size&quot;  | awk '{print $5}'`
valOffset=`isoinfo -l -R -i &quot;${fichImgEn}&quot; | grep &quot;${fichRech}&quot; | awk '{print $10}'`


dd bs=$blockSize count=1 skip=$valOffset if=&quot;${fichImgEn}&quot;                                   2&gt;/dev/null     |   \
sed &quot;s/$chOrigin/$chRempl/&quot;                                                                   &gt; &quot;${fichTmp}&quot; &amp;&amp;  \
dd bs=$blockSize count=1 seek=$valOffset if=&quot;${fichTmp}&quot; of=&quot;${fichImgEn}&quot; conv=notrunc,sync 2&gt;/dev/null     &amp;&amp;  \
mv &quot;${fichImgEn}&quot; &quot;${fichImgFr}&quot;                                                                             &amp;&amp;  \
rm &quot;${fichTmp}&quot;

printf &quot;\nVoilà voilà! \&quot;${fichImgFr}\&quot; est la version francisée.\n\n&quot;&lt;/code&gt;</text>
      <sha1>rlqz33hhuh2jji8zq4ys28hcbfubi4k</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5676</id>
      <parentid>5675</parentid>
      <timestamp>2014-07-11T14:33:19Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <comment>/* Ou alors, utilisez un script. */ MàJ script</comment>
      <text xml:space="preserve" bytes="26340">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue '''ligne des options de boot''' suivante qui permet de démarrer ma '''debian live''' directement en français.
&lt;code&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/code&gt;
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.

== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'[http://caesar.acc.umu.se/debian-cd/current-live/amd64/iso-hybrid/debian-live-7.5.0-amd64-xfce-desktop.iso|image ISO téléchargée], juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite).
&lt;pre&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/pre&gt;

La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide. 
&lt;pre&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│ Ctrl Key          HexCurse Keyboard Commands            │◆│ Function Keys  │
│                                                         │▒│                │
│ CTRL+?    Help     - you are reading it now             │▒│ Help     = F1  │
│ CTRL+S    Save     - saves the current file open        │▒│ Save     = F2  │
│ CTRL+O    Open     - opens a new file                   │▒│ Open     = F3  │
│ CTRL+G    Goto     - goto a specified address           │▒│ Goto     = F4  │
│ CTRL+F    Find     - search for a hex/ascii value       │▒│ Find     = F5  │
│ CTRL+A    HexAdres - toggle between hex/decimal address │▒│ HexAdres = F6  │
│ TAB       Hex Edit - toggle between hex/ASCII windows   │▒│ Hex Edit = F7  │
│ CTRL+Q    Quit     - exit out of the program            │▒│ Quit     = F8  │
│                                                         │▒│                │
│ CTRL+U    Page up  - scrolls one screen up              │▒│ Page up  = PGUP│
│ CTRL+D    Page down- scrolls one screen down            │▒│ Page down= PGDN│
│ CTRL+Z    Undo     - reverts last modification          │▒│                │
│ CTRL+T    Home     - returns to the top of the file     │▒│                │
│ CTRL+B    End      - jumps to the bottom of the file    │▒│                │
│                                                         │▒│                │
│                     Press enter to continue             │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/pre&gt;
'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}



Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.
&lt;pre&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└Enter ascii value (): live-amd64                          v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/pre&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.
&lt;pre&gt;
┌33807006─────────────────────────────────────────────────┐^┌────────────────┐
│33807000 6C 61 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 │▒│label live-amd64│
│33807010 0A 09 6D 65 6E 75 20 6C 61 62 65 6C 20 5E 4C 69 │▒│..menu label ^Li│
│33807020 76 65 20 28 61 6D 64 36 34 29 0A 09 6D 65 6E 75 │▒│ve (amd64)..menu│
│33807030 20 64 65 66 61 75 6C 74 0A 09 6C 69 6E 75 78 20 │▒│ default..linux │
│33807040 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A 09 69 │▒│/live/vmlinuz..i│
│33807050 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E 69 74 │▒│nitrd /live/init│
│33807060 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 20 62 │▒│rd.img..append b│
│33807070 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 67 20 │▒│oot=live config │
│33807080 71 75 69 65 74 20 73 70 6C 61 73 68 0A 0A 6C 61 │▒│quiet splash..la│
│33807090 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 2D 66 │▒│bel live-amd64-f│
│338070A0 61 69 6C 73 61 66 65 0A 09 6D 65 6E 75 20 6C 61 │▒│ailsafe..menu la│
│338070B0 62 65 6C 20 5E 4C 69 76 65 20 28 61 6D 64 36 34 │▒│bel ^Live (amd64│
│338070C0 20 66 61 69 6C 73 61 66 65 29 0A 09 6C 69 6E 75 │▒│ failsafe)..linu│
│338070D0 78 20 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A │▒│x /live/vmlinuz.│
│338070E0 09 69 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E │▒│.initrd /live/in│
│338070F0 69 74 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 │▒│itrd.img..append│
│33807100 20 62 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 │▒│ boot=live confi│
│33807110 67 20 6D 65 6D 74 65 73 74 20 6E 6F 61 70 69 63 │▒│g memtest noapic│
│33807120 20 6E 6F 61 70 6D 20 6E 6F 64 6D 61 20 6E 6F 6D │▒│ noapm nodma nom│
│33807130 63 65 20 6E 6F 6C 61 70 69 63 20 6E 6F 6D 6F 64 │▒│ce nolapic nomod│
│33807140 65 73 65 74 20 6E 6F 73 6D 70 20 6E 6F 73 70 6C │▒│eset nosmp nospl│
│33807150 61 73 68 20 76 67 61 3D 6E 6F 72 6D 61 6C 0A 00 │▒│ash vga=normal..│
│33807160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │◆│................│
│338071D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/pre&gt;
Une fois le curseur bien positionné, en haut à gauche de la fenêtre, on pourra lire le décalage depuis le début du fichier :&lt;br /&gt;
'''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Recopier 512 octets dans le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -m 2G -cpu host -boot d -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB).

Il ne reste plus qu'à supprimer les fichiers devenus inutiles :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
== Ou alors, utilisez un script. ==
&lt;code&gt;
#!/bin/sh
#=================================================================================================
# NOM DU SCRIPT: isoLive2fr.sh
#
#     NÉCESSITE: &quot;isoinfo&quot; du paquetage &quot;genisoimage&quot;
#                &quot;dd&quot;      du paquetage &quot;coreutils&quot;
#
# BUT: Ajouter les paramètres de boot à une image ISO Live debian
#       de façon à ce qu'elle démarre directement en Français.
#
# AUTEUR: MicP (debian-fr)
#   DATE: 10/07/2014
#-------------------------------------------------------------------------------------------------
# NOTES:
# Ce n'est qu'une ébauche de script inspiré par ceux qu'a posté fran.b dans le fil de discussion :
#  http://www.debian-fr.org/franciser-l-iso-debian-7-5-live-nonfree-moins-de-2-minutes-t48948.html
#
# Ça fonctionne, mais je reviendrai plus tard pour rajouter les contrôles d'erreur, et plus...
#=================================================================================================

test &quot;$1&quot; ||
  {
    printf &quot;Donnez un chemin d'image \&quot;ISO Live\&quot; debian en paramètre.\n&quot;;
    exit 1;
  }

fichImgEn=&quot;$1&quot;
fichImgFr=&quot;${fichImgEn%.*}-FR.${fichImgEn##*.}&quot;

fichRech=&quot;live.cfg&quot;
chOrigin=&quot;quiet splash&quot;
chAjout=&quot;lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes&quot;
fichTmp=&quot;/tmp/tmpAeffacer`date +%s`.dat&quot;
chRempl=&quot;$chOrigin $chAjout&quot;

blockSize=`isoinfo -d    -i &quot;${fichImgEn}&quot; | grep &quot;block size&quot;  | awk '{print $5}'`
valOffset=`isoinfo -l -R -i &quot;${fichImgEn}&quot; | grep &quot;${fichRech}&quot; | awk '{print $10}'`

dd bs=$blockSize count=1 skip=$valOffset if=&quot;${fichImgEn}&quot;                                   2&gt;/dev/null     |   \
sed &quot;s/$chOrigin/$chRempl/&quot;                                                                   &gt; &quot;${fichTmp}&quot; &amp;&amp;  \
dd bs=$blockSize count=1 seek=$valOffset if=&quot;${fichTmp}&quot; of=&quot;${fichImgEn}&quot; conv=notrunc,sync 2&gt;/dev/null     &amp;&amp;  \
mv &quot;${fichImgEn}&quot; &quot;${fichImgFr}&quot;                                                                             &amp;&amp;  \
rm &quot;${fichTmp}&quot;

printf &quot;\nVoilà voilà! \&quot;${fichImgFr}\&quot; est la version francisée.\n\n&quot;
&lt;/code&gt;</text>
      <sha1>nvzpobl3arxycd2a5wqy5x6iv82ibr5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5677</id>
      <parentid>5676</parentid>
      <timestamp>2014-07-11T14:36:43Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Recherche avec l'éditeur hexcurse */ chmt balises &quot;pre&quot; par &quot;code&quot;</comment>
      <text xml:space="preserve" bytes="26348">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue '''ligne des options de boot''' suivante qui permet de démarrer ma '''debian live''' directement en français.
&lt;code&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/code&gt;
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.

== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'[http://caesar.acc.umu.se/debian-cd/current-live/amd64/iso-hybrid/debian-live-7.5.0-amd64-xfce-desktop.iso|image ISO téléchargée], juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite).
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/code&gt;

La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide. 
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│ Ctrl Key          HexCurse Keyboard Commands            │◆│ Function Keys  │
│                                                         │▒│                │
│ CTRL+?    Help     - you are reading it now             │▒│ Help     = F1  │
│ CTRL+S    Save     - saves the current file open        │▒│ Save     = F2  │
│ CTRL+O    Open     - opens a new file                   │▒│ Open     = F3  │
│ CTRL+G    Goto     - goto a specified address           │▒│ Goto     = F4  │
│ CTRL+F    Find     - search for a hex/ascii value       │▒│ Find     = F5  │
│ CTRL+A    HexAdres - toggle between hex/decimal address │▒│ HexAdres = F6  │
│ TAB       Hex Edit - toggle between hex/ASCII windows   │▒│ Hex Edit = F7  │
│ CTRL+Q    Quit     - exit out of the program            │▒│ Quit     = F8  │
│                                                         │▒│                │
│ CTRL+U    Page up  - scrolls one screen up              │▒│ Page up  = PGUP│
│ CTRL+D    Page down- scrolls one screen down            │▒│ Page down= PGDN│
│ CTRL+Z    Undo     - reverts last modification          │▒│                │
│ CTRL+T    Home     - returns to the top of the file     │▒│                │
│ CTRL+B    End      - jumps to the bottom of the file    │▒│                │
│                                                         │▒│                │
│                     Press enter to continue             │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/code&gt;
'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}



Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└Enter ascii value (): live-amd64                          v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/code&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.
&lt;code&gt;
┌33807006─────────────────────────────────────────────────┐^┌────────────────┐
│33807000 6C 61 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 │▒│label live-amd64│
│33807010 0A 09 6D 65 6E 75 20 6C 61 62 65 6C 20 5E 4C 69 │▒│..menu label ^Li│
│33807020 76 65 20 28 61 6D 64 36 34 29 0A 09 6D 65 6E 75 │▒│ve (amd64)..menu│
│33807030 20 64 65 66 61 75 6C 74 0A 09 6C 69 6E 75 78 20 │▒│ default..linux │
│33807040 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A 09 69 │▒│/live/vmlinuz..i│
│33807050 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E 69 74 │▒│nitrd /live/init│
│33807060 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 20 62 │▒│rd.img..append b│
│33807070 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 67 20 │▒│oot=live config │
│33807080 71 75 69 65 74 20 73 70 6C 61 73 68 0A 0A 6C 61 │▒│quiet splash..la│
│33807090 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 2D 66 │▒│bel live-amd64-f│
│338070A0 61 69 6C 73 61 66 65 0A 09 6D 65 6E 75 20 6C 61 │▒│ailsafe..menu la│
│338070B0 62 65 6C 20 5E 4C 69 76 65 20 28 61 6D 64 36 34 │▒│bel ^Live (amd64│
│338070C0 20 66 61 69 6C 73 61 66 65 29 0A 09 6C 69 6E 75 │▒│ failsafe)..linu│
│338070D0 78 20 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A │▒│x /live/vmlinuz.│
│338070E0 09 69 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E │▒│.initrd /live/in│
│338070F0 69 74 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 │▒│itrd.img..append│
│33807100 20 62 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 │▒│ boot=live confi│
│33807110 67 20 6D 65 6D 74 65 73 74 20 6E 6F 61 70 69 63 │▒│g memtest noapic│
│33807120 20 6E 6F 61 70 6D 20 6E 6F 64 6D 61 20 6E 6F 6D │▒│ noapm nodma nom│
│33807130 63 65 20 6E 6F 6C 61 70 69 63 20 6E 6F 6D 6F 64 │▒│ce nolapic nomod│
│33807140 65 73 65 74 20 6E 6F 73 6D 70 20 6E 6F 73 70 6C │▒│eset nosmp nospl│
│33807150 61 73 68 20 76 67 61 3D 6E 6F 72 6D 61 6C 0A 00 │▒│ash vga=normal..│
│33807160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │◆│................│
│338071D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/code&gt;
Une fois le curseur bien positionné, en haut à gauche de la fenêtre, on pourra lire le décalage depuis le début du fichier :&lt;br /&gt;
'''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Recopier 512 octets dans le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -m 2G -cpu host -boot d -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB).

Il ne reste plus qu'à supprimer les fichiers devenus inutiles :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
== Ou alors, utilisez un script. ==
&lt;code&gt;
#!/bin/sh
#=================================================================================================
# NOM DU SCRIPT: isoLive2fr.sh
#
#     NÉCESSITE: &quot;isoinfo&quot; du paquetage &quot;genisoimage&quot;
#                &quot;dd&quot;      du paquetage &quot;coreutils&quot;
#
# BUT: Ajouter les paramètres de boot à une image ISO Live debian
#       de façon à ce qu'elle démarre directement en Français.
#
# AUTEUR: MicP (debian-fr)
#   DATE: 10/07/2014
#-------------------------------------------------------------------------------------------------
# NOTES:
# Ce n'est qu'une ébauche de script inspiré par ceux qu'a posté fran.b dans le fil de discussion :
#  http://www.debian-fr.org/franciser-l-iso-debian-7-5-live-nonfree-moins-de-2-minutes-t48948.html
#
# Ça fonctionne, mais je reviendrai plus tard pour rajouter les contrôles d'erreur, et plus...
#=================================================================================================

test &quot;$1&quot; ||
  {
    printf &quot;Donnez un chemin d'image \&quot;ISO Live\&quot; debian en paramètre.\n&quot;;
    exit 1;
  }

fichImgEn=&quot;$1&quot;
fichImgFr=&quot;${fichImgEn%.*}-FR.${fichImgEn##*.}&quot;

fichRech=&quot;live.cfg&quot;
chOrigin=&quot;quiet splash&quot;
chAjout=&quot;lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes&quot;
fichTmp=&quot;/tmp/tmpAeffacer`date +%s`.dat&quot;
chRempl=&quot;$chOrigin $chAjout&quot;

blockSize=`isoinfo -d    -i &quot;${fichImgEn}&quot; | grep &quot;block size&quot;  | awk '{print $5}'`
valOffset=`isoinfo -l -R -i &quot;${fichImgEn}&quot; | grep &quot;${fichRech}&quot; | awk '{print $10}'`

dd bs=$blockSize count=1 skip=$valOffset if=&quot;${fichImgEn}&quot;                                   2&gt;/dev/null     |   \
sed &quot;s/$chOrigin/$chRempl/&quot;                                                                   &gt; &quot;${fichTmp}&quot; &amp;&amp;  \
dd bs=$blockSize count=1 seek=$valOffset if=&quot;${fichTmp}&quot; of=&quot;${fichImgEn}&quot; conv=notrunc,sync 2&gt;/dev/null     &amp;&amp;  \
mv &quot;${fichImgEn}&quot; &quot;${fichImgFr}&quot;                                                                             &amp;&amp;  \
rm &quot;${fichTmp}&quot;

printf &quot;\nVoilà voilà! \&quot;${fichImgFr}\&quot; est la version francisée.\n\n&quot;
&lt;/code&gt;</text>
      <sha1>by3ecppqvb3ynicrwttvvqnmasv5ygf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5678</id>
      <parentid>5677</parentid>
      <timestamp>2014-07-11T14:41:50Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Introduction */ Aloup &quot;note&quot;</comment>
      <text xml:space="preserve" bytes="26489">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue '''ligne des options de boot''' suivante qui permet de démarrer ma '''debian live''' directement en français.
&lt;code&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/code&gt;
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.

&lt;u&gt;'''NOTE:'''&lt;/u&gt; Bien sûr cette maipulation comme le script fonctionne avec tous les fichiers image ISO de type '''debian &lt;u&gt;live&lt;/u&gt;'''

== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'[http://caesar.acc.umu.se/debian-cd/current-live/amd64/iso-hybrid/debian-live-7.5.0-amd64-xfce-desktop.iso|image ISO téléchargée], juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite).
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/code&gt;

La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide. 
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│ Ctrl Key          HexCurse Keyboard Commands            │◆│ Function Keys  │
│                                                         │▒│                │
│ CTRL+?    Help     - you are reading it now             │▒│ Help     = F1  │
│ CTRL+S    Save     - saves the current file open        │▒│ Save     = F2  │
│ CTRL+O    Open     - opens a new file                   │▒│ Open     = F3  │
│ CTRL+G    Goto     - goto a specified address           │▒│ Goto     = F4  │
│ CTRL+F    Find     - search for a hex/ascii value       │▒│ Find     = F5  │
│ CTRL+A    HexAdres - toggle between hex/decimal address │▒│ HexAdres = F6  │
│ TAB       Hex Edit - toggle between hex/ASCII windows   │▒│ Hex Edit = F7  │
│ CTRL+Q    Quit     - exit out of the program            │▒│ Quit     = F8  │
│                                                         │▒│                │
│ CTRL+U    Page up  - scrolls one screen up              │▒│ Page up  = PGUP│
│ CTRL+D    Page down- scrolls one screen down            │▒│ Page down= PGDN│
│ CTRL+Z    Undo     - reverts last modification          │▒│                │
│ CTRL+T    Home     - returns to the top of the file     │▒│                │
│ CTRL+B    End      - jumps to the bottom of the file    │▒│                │
│                                                         │▒│                │
│                     Press enter to continue             │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/code&gt;
'''NOTE:''' Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}



Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└Enter ascii value (): live-amd64                          v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/code&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.
&lt;code&gt;
┌33807006─────────────────────────────────────────────────┐^┌────────────────┐
│33807000 6C 61 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 │▒│label live-amd64│
│33807010 0A 09 6D 65 6E 75 20 6C 61 62 65 6C 20 5E 4C 69 │▒│..menu label ^Li│
│33807020 76 65 20 28 61 6D 64 36 34 29 0A 09 6D 65 6E 75 │▒│ve (amd64)..menu│
│33807030 20 64 65 66 61 75 6C 74 0A 09 6C 69 6E 75 78 20 │▒│ default..linux │
│33807040 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A 09 69 │▒│/live/vmlinuz..i│
│33807050 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E 69 74 │▒│nitrd /live/init│
│33807060 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 20 62 │▒│rd.img..append b│
│33807070 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 67 20 │▒│oot=live config │
│33807080 71 75 69 65 74 20 73 70 6C 61 73 68 0A 0A 6C 61 │▒│quiet splash..la│
│33807090 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 2D 66 │▒│bel live-amd64-f│
│338070A0 61 69 6C 73 61 66 65 0A 09 6D 65 6E 75 20 6C 61 │▒│ailsafe..menu la│
│338070B0 62 65 6C 20 5E 4C 69 76 65 20 28 61 6D 64 36 34 │▒│bel ^Live (amd64│
│338070C0 20 66 61 69 6C 73 61 66 65 29 0A 09 6C 69 6E 75 │▒│ failsafe)..linu│
│338070D0 78 20 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A │▒│x /live/vmlinuz.│
│338070E0 09 69 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E │▒│.initrd /live/in│
│338070F0 69 74 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 │▒│itrd.img..append│
│33807100 20 62 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 │▒│ boot=live confi│
│33807110 67 20 6D 65 6D 74 65 73 74 20 6E 6F 61 70 69 63 │▒│g memtest noapic│
│33807120 20 6E 6F 61 70 6D 20 6E 6F 64 6D 61 20 6E 6F 6D │▒│ noapm nodma nom│
│33807130 63 65 20 6E 6F 6C 61 70 69 63 20 6E 6F 6D 6F 64 │▒│ce nolapic nomod│
│33807140 65 73 65 74 20 6E 6F 73 6D 70 20 6E 6F 73 70 6C │▒│eset nosmp nospl│
│33807150 61 73 68 20 76 67 61 3D 6E 6F 72 6D 61 6C 0A 00 │▒│ash vga=normal..│
│33807160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │◆│................│
│338071D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/code&gt;
Une fois le curseur bien positionné, en haut à gauche de la fenêtre, on pourra lire le décalage depuis le début du fichier :&lt;br /&gt;
'''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Recopier 512 octets dans le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -m 2G -cpu host -boot d -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB).

Il ne reste plus qu'à supprimer les fichiers devenus inutiles :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
== Ou alors, utilisez un script. ==
&lt;code&gt;
#!/bin/sh
#=================================================================================================
# NOM DU SCRIPT: isoLive2fr.sh
#
#     NÉCESSITE: &quot;isoinfo&quot; du paquetage &quot;genisoimage&quot;
#                &quot;dd&quot;      du paquetage &quot;coreutils&quot;
#
# BUT: Ajouter les paramètres de boot à une image ISO Live debian
#       de façon à ce qu'elle démarre directement en Français.
#
# AUTEUR: MicP (debian-fr)
#   DATE: 10/07/2014
#-------------------------------------------------------------------------------------------------
# NOTES:
# Ce n'est qu'une ébauche de script inspiré par ceux qu'a posté fran.b dans le fil de discussion :
#  http://www.debian-fr.org/franciser-l-iso-debian-7-5-live-nonfree-moins-de-2-minutes-t48948.html
#
# Ça fonctionne, mais je reviendrai plus tard pour rajouter les contrôles d'erreur, et plus...
#=================================================================================================

test &quot;$1&quot; ||
  {
    printf &quot;Donnez un chemin d'image \&quot;ISO Live\&quot; debian en paramètre.\n&quot;;
    exit 1;
  }

fichImgEn=&quot;$1&quot;
fichImgFr=&quot;${fichImgEn%.*}-FR.${fichImgEn##*.}&quot;

fichRech=&quot;live.cfg&quot;
chOrigin=&quot;quiet splash&quot;
chAjout=&quot;lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes&quot;
fichTmp=&quot;/tmp/tmpAeffacer`date +%s`.dat&quot;
chRempl=&quot;$chOrigin $chAjout&quot;

blockSize=`isoinfo -d    -i &quot;${fichImgEn}&quot; | grep &quot;block size&quot;  | awk '{print $5}'`
valOffset=`isoinfo -l -R -i &quot;${fichImgEn}&quot; | grep &quot;${fichRech}&quot; | awk '{print $10}'`

dd bs=$blockSize count=1 skip=$valOffset if=&quot;${fichImgEn}&quot;                                   2&gt;/dev/null     |   \
sed &quot;s/$chOrigin/$chRempl/&quot;                                                                   &gt; &quot;${fichTmp}&quot; &amp;&amp;  \
dd bs=$blockSize count=1 seek=$valOffset if=&quot;${fichTmp}&quot; of=&quot;${fichImgEn}&quot; conv=notrunc,sync 2&gt;/dev/null     &amp;&amp;  \
mv &quot;${fichImgEn}&quot; &quot;${fichImgFr}&quot;                                                                             &amp;&amp;  \
rm &quot;${fichTmp}&quot;

printf &quot;\nVoilà voilà! \&quot;${fichImgFr}\&quot; est la version francisée.\n\n&quot;
&lt;/code&gt;</text>
      <sha1>acdpdx3d5oanx9ng06jc80p1aol9jex</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5679</id>
      <parentid>5678</parentid>
      <timestamp>2014-07-11T14:43:00Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Recherche avec l'éditeur hexcurse */ Soulignement &quot;Note&quot;</comment>
      <text xml:space="preserve" bytes="26496">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue '''ligne des options de boot''' suivante qui permet de démarrer ma '''debian live''' directement en français.
&lt;code&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/code&gt;
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.

&lt;u&gt;'''NOTE:'''&lt;/u&gt; Bien sûr cette maipulation comme le script fonctionne avec tous les fichiers image ISO de type '''debian &lt;u&gt;live&lt;/u&gt;'''

== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'[http://caesar.acc.umu.se/debian-cd/current-live/amd64/iso-hybrid/debian-live-7.5.0-amd64-xfce-desktop.iso|image ISO téléchargée], juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite).
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/code&gt;

La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide. 
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│ Ctrl Key          HexCurse Keyboard Commands            │◆│ Function Keys  │
│                                                         │▒│                │
│ CTRL+?    Help     - you are reading it now             │▒│ Help     = F1  │
│ CTRL+S    Save     - saves the current file open        │▒│ Save     = F2  │
│ CTRL+O    Open     - opens a new file                   │▒│ Open     = F3  │
│ CTRL+G    Goto     - goto a specified address           │▒│ Goto     = F4  │
│ CTRL+F    Find     - search for a hex/ascii value       │▒│ Find     = F5  │
│ CTRL+A    HexAdres - toggle between hex/decimal address │▒│ HexAdres = F6  │
│ TAB       Hex Edit - toggle between hex/ASCII windows   │▒│ Hex Edit = F7  │
│ CTRL+Q    Quit     - exit out of the program            │▒│ Quit     = F8  │
│                                                         │▒│                │
│ CTRL+U    Page up  - scrolls one screen up              │▒│ Page up  = PGUP│
│ CTRL+D    Page down- scrolls one screen down            │▒│ Page down= PGDN│
│ CTRL+Z    Undo     - reverts last modification          │▒│                │
│ CTRL+T    Home     - returns to the top of the file     │▒│                │
│ CTRL+B    End      - jumps to the bottom of the file    │▒│                │
│                                                         │▒│                │
│                     Press enter to continue             │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/code&gt;
&lt;u&gt;'''NOTE:'''&lt;/u&gt; Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}



Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└Enter ascii value (): live-amd64                          v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/code&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.
&lt;code&gt;
┌33807006─────────────────────────────────────────────────┐^┌────────────────┐
│33807000 6C 61 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 │▒│label live-amd64│
│33807010 0A 09 6D 65 6E 75 20 6C 61 62 65 6C 20 5E 4C 69 │▒│..menu label ^Li│
│33807020 76 65 20 28 61 6D 64 36 34 29 0A 09 6D 65 6E 75 │▒│ve (amd64)..menu│
│33807030 20 64 65 66 61 75 6C 74 0A 09 6C 69 6E 75 78 20 │▒│ default..linux │
│33807040 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A 09 69 │▒│/live/vmlinuz..i│
│33807050 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E 69 74 │▒│nitrd /live/init│
│33807060 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 20 62 │▒│rd.img..append b│
│33807070 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 67 20 │▒│oot=live config │
│33807080 71 75 69 65 74 20 73 70 6C 61 73 68 0A 0A 6C 61 │▒│quiet splash..la│
│33807090 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 2D 66 │▒│bel live-amd64-f│
│338070A0 61 69 6C 73 61 66 65 0A 09 6D 65 6E 75 20 6C 61 │▒│ailsafe..menu la│
│338070B0 62 65 6C 20 5E 4C 69 76 65 20 28 61 6D 64 36 34 │▒│bel ^Live (amd64│
│338070C0 20 66 61 69 6C 73 61 66 65 29 0A 09 6C 69 6E 75 │▒│ failsafe)..linu│
│338070D0 78 20 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A │▒│x /live/vmlinuz.│
│338070E0 09 69 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E │▒│.initrd /live/in│
│338070F0 69 74 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 │▒│itrd.img..append│
│33807100 20 62 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 │▒│ boot=live confi│
│33807110 67 20 6D 65 6D 74 65 73 74 20 6E 6F 61 70 69 63 │▒│g memtest noapic│
│33807120 20 6E 6F 61 70 6D 20 6E 6F 64 6D 61 20 6E 6F 6D │▒│ noapm nodma nom│
│33807130 63 65 20 6E 6F 6C 61 70 69 63 20 6E 6F 6D 6F 64 │▒│ce nolapic nomod│
│33807140 65 73 65 74 20 6E 6F 73 6D 70 20 6E 6F 73 70 6C │▒│eset nosmp nospl│
│33807150 61 73 68 20 76 67 61 3D 6E 6F 72 6D 61 6C 0A 00 │▒│ash vga=normal..│
│33807160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │◆│................│
│338071D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/code&gt;
Une fois le curseur bien positionné, en haut à gauche de la fenêtre, on pourra lire le décalage depuis le début du fichier :&lt;br /&gt;
'''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Recopier 512 octets dans le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -m 2G -cpu host -boot d -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB).

Il ne reste plus qu'à supprimer les fichiers devenus inutiles :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
== Ou alors, utilisez un script. ==
&lt;code&gt;
#!/bin/sh
#=================================================================================================
# NOM DU SCRIPT: isoLive2fr.sh
#
#     NÉCESSITE: &quot;isoinfo&quot; du paquetage &quot;genisoimage&quot;
#                &quot;dd&quot;      du paquetage &quot;coreutils&quot;
#
# BUT: Ajouter les paramètres de boot à une image ISO Live debian
#       de façon à ce qu'elle démarre directement en Français.
#
# AUTEUR: MicP (debian-fr)
#   DATE: 10/07/2014
#-------------------------------------------------------------------------------------------------
# NOTES:
# Ce n'est qu'une ébauche de script inspiré par ceux qu'a posté fran.b dans le fil de discussion :
#  http://www.debian-fr.org/franciser-l-iso-debian-7-5-live-nonfree-moins-de-2-minutes-t48948.html
#
# Ça fonctionne, mais je reviendrai plus tard pour rajouter les contrôles d'erreur, et plus...
#=================================================================================================

test &quot;$1&quot; ||
  {
    printf &quot;Donnez un chemin d'image \&quot;ISO Live\&quot; debian en paramètre.\n&quot;;
    exit 1;
  }

fichImgEn=&quot;$1&quot;
fichImgFr=&quot;${fichImgEn%.*}-FR.${fichImgEn##*.}&quot;

fichRech=&quot;live.cfg&quot;
chOrigin=&quot;quiet splash&quot;
chAjout=&quot;lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes&quot;
fichTmp=&quot;/tmp/tmpAeffacer`date +%s`.dat&quot;
chRempl=&quot;$chOrigin $chAjout&quot;

blockSize=`isoinfo -d    -i &quot;${fichImgEn}&quot; | grep &quot;block size&quot;  | awk '{print $5}'`
valOffset=`isoinfo -l -R -i &quot;${fichImgEn}&quot; | grep &quot;${fichRech}&quot; | awk '{print $10}'`

dd bs=$blockSize count=1 skip=$valOffset if=&quot;${fichImgEn}&quot;                                   2&gt;/dev/null     |   \
sed &quot;s/$chOrigin/$chRempl/&quot;                                                                   &gt; &quot;${fichTmp}&quot; &amp;&amp;  \
dd bs=$blockSize count=1 seek=$valOffset if=&quot;${fichTmp}&quot; of=&quot;${fichImgEn}&quot; conv=notrunc,sync 2&gt;/dev/null     &amp;&amp;  \
mv &quot;${fichImgEn}&quot; &quot;${fichImgFr}&quot;                                                                             &amp;&amp;  \
rm &quot;${fichTmp}&quot;

printf &quot;\nVoilà voilà! \&quot;${fichImgFr}\&quot; est la version francisée.\n\n&quot;
&lt;/code&gt;</text>
      <sha1>17gigv4ctcy8389g49lb1vaaq2560xg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5680</id>
      <parentid>5679</parentid>
      <timestamp>2014-07-11T23:42:46Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Ou alors, utilisez un script. */ ajout test ISO &lt;=&gt;&quot;DEBIAN LIVE&quot;</comment>
      <text xml:space="preserve" bytes="26657">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue '''ligne des options de boot''' suivante qui permet de démarrer ma '''debian live''' directement en français.
&lt;code&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/code&gt;
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.

&lt;u&gt;'''NOTE:'''&lt;/u&gt; Bien sûr cette maipulation comme le script fonctionne avec tous les fichiers image ISO de type '''debian &lt;u&gt;live&lt;/u&gt;'''

== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'[http://caesar.acc.umu.se/debian-cd/current-live/amd64/iso-hybrid/debian-live-7.5.0-amd64-xfce-desktop.iso|image ISO téléchargée], juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite).
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/code&gt;

La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide. 
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│ Ctrl Key          HexCurse Keyboard Commands            │◆│ Function Keys  │
│                                                         │▒│                │
│ CTRL+?    Help     - you are reading it now             │▒│ Help     = F1  │
│ CTRL+S    Save     - saves the current file open        │▒│ Save     = F2  │
│ CTRL+O    Open     - opens a new file                   │▒│ Open     = F3  │
│ CTRL+G    Goto     - goto a specified address           │▒│ Goto     = F4  │
│ CTRL+F    Find     - search for a hex/ascii value       │▒│ Find     = F5  │
│ CTRL+A    HexAdres - toggle between hex/decimal address │▒│ HexAdres = F6  │
│ TAB       Hex Edit - toggle between hex/ASCII windows   │▒│ Hex Edit = F7  │
│ CTRL+Q    Quit     - exit out of the program            │▒│ Quit     = F8  │
│                                                         │▒│                │
│ CTRL+U    Page up  - scrolls one screen up              │▒│ Page up  = PGUP│
│ CTRL+D    Page down- scrolls one screen down            │▒│ Page down= PGDN│
│ CTRL+Z    Undo     - reverts last modification          │▒│                │
│ CTRL+T    Home     - returns to the top of the file     │▒│                │
│ CTRL+B    End      - jumps to the bottom of the file    │▒│                │
│                                                         │▒│                │
│                     Press enter to continue             │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/code&gt;
&lt;u&gt;'''NOTE:'''&lt;/u&gt; Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}



Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└Enter ascii value (): live-amd64                          v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/code&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.
&lt;code&gt;
┌33807006─────────────────────────────────────────────────┐^┌────────────────┐
│33807000 6C 61 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 │▒│label live-amd64│
│33807010 0A 09 6D 65 6E 75 20 6C 61 62 65 6C 20 5E 4C 69 │▒│..menu label ^Li│
│33807020 76 65 20 28 61 6D 64 36 34 29 0A 09 6D 65 6E 75 │▒│ve (amd64)..menu│
│33807030 20 64 65 66 61 75 6C 74 0A 09 6C 69 6E 75 78 20 │▒│ default..linux │
│33807040 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A 09 69 │▒│/live/vmlinuz..i│
│33807050 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E 69 74 │▒│nitrd /live/init│
│33807060 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 20 62 │▒│rd.img..append b│
│33807070 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 67 20 │▒│oot=live config │
│33807080 71 75 69 65 74 20 73 70 6C 61 73 68 0A 0A 6C 61 │▒│quiet splash..la│
│33807090 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 2D 66 │▒│bel live-amd64-f│
│338070A0 61 69 6C 73 61 66 65 0A 09 6D 65 6E 75 20 6C 61 │▒│ailsafe..menu la│
│338070B0 62 65 6C 20 5E 4C 69 76 65 20 28 61 6D 64 36 34 │▒│bel ^Live (amd64│
│338070C0 20 66 61 69 6C 73 61 66 65 29 0A 09 6C 69 6E 75 │▒│ failsafe)..linu│
│338070D0 78 20 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A │▒│x /live/vmlinuz.│
│338070E0 09 69 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E │▒│.initrd /live/in│
│338070F0 69 74 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 │▒│itrd.img..append│
│33807100 20 62 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 │▒│ boot=live confi│
│33807110 67 20 6D 65 6D 74 65 73 74 20 6E 6F 61 70 69 63 │▒│g memtest noapic│
│33807120 20 6E 6F 61 70 6D 20 6E 6F 64 6D 61 20 6E 6F 6D │▒│ noapm nodma nom│
│33807130 63 65 20 6E 6F 6C 61 70 69 63 20 6E 6F 6D 6F 64 │▒│ce nolapic nomod│
│33807140 65 73 65 74 20 6E 6F 73 6D 70 20 6E 6F 73 70 6C │▒│eset nosmp nospl│
│33807150 61 73 68 20 76 67 61 3D 6E 6F 72 6D 61 6C 0A 00 │▒│ash vga=normal..│
│33807160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │◆│................│
│338071D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/code&gt;
Une fois le curseur bien positionné, en haut à gauche de la fenêtre, on pourra lire le décalage depuis le début du fichier :&lt;br /&gt;
'''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Recopier 512 octets dans le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -m 2G -cpu host -boot d -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB).

Il ne reste plus qu'à supprimer les fichiers devenus inutiles :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
== Ou alors, utilisez un script. ==
&lt;code&gt;
#!/bin/sh
#=================================================================================================
# NOM DU SCRIPT: isoLive2fr.sh
#
#     NÉCESSITE: &quot;isoinfo&quot; du paquetage &quot;genisoimage&quot;
#                &quot;dd&quot;      du paquetage &quot;coreutils&quot;
#
# BUT: Ajouter les paramètres de boot à une image ISO Live debian
#       de façon à ce qu'elle démarre directement en Français.
#
# AUTEUR: MicP (debian-fr)
#   DATE: 10/07/2014
#-------------------------------------------------------------------------------------------------
# NOTES:
# Ce n'est qu'une ébauche de script inspiré par ceux qu'a posté fran.b dans le fil de discussion :
#  http://www.debian-fr.org/franciser-l-iso-debian-7-5-live-nonfree-moins-de-2-minutes-t48948.html
#
# Ça fonctionne, mais je reviendrai plus tard pour rajouter les contrôles d'erreur, et plus...
#=================================================================================================

test &quot;$1&quot; ||
  {
    printf &quot;Donnez un chemin d'image \&quot;ISO Live\&quot; debian en paramètre.\n&quot;;
    exit 1;
  }

isoinfo -d -i &quot;$1&quot; | grep &quot;Application id: DEBIAN LIVE&quot; || \
  {
    printf &quot;\n\&quot;${1}\&quot; n'est PAS un fichier d'image ISO \&quot;Debian Live\&quot;...\n\n&quot;
    exit 1
  }

fichImgEn=&quot;$1&quot;
fichImgFr=&quot;${fichImgEn%.*}-FR.${fichImgEn##*.}&quot;

fichRech=&quot;live.cfg&quot;
chOrigin=&quot;quiet splash&quot;
chAjout=&quot;lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes&quot;
fichTmp=&quot;/tmp/tmpAeffacer`date +%s`.dat&quot;
chRempl=&quot;$chOrigin $chAjout&quot;

blockSize=`isoinfo -d    -i &quot;${fichImgEn}&quot; | grep &quot;block size&quot;  | awk '{print $5}'`
valOffset=`isoinfo -l -R -i &quot;${fichImgEn}&quot; | grep &quot;${fichRech}&quot; | awk '{print $10}'`

dd bs=$blockSize count=1 skip=$valOffset if=&quot;${fichImgEn}&quot;                                   2&gt;/dev/null     |   \
sed &quot;s/$chOrigin/$chRempl/&quot;                                                                   &gt; &quot;${fichTmp}&quot; &amp;&amp;  \
dd bs=$blockSize count=1 seek=$valOffset if=&quot;${fichTmp}&quot; of=&quot;${fichImgEn}&quot; conv=notrunc,sync 2&gt;/dev/null     &amp;&amp;  \
mv &quot;${fichImgEn}&quot; &quot;${fichImgFr}&quot;                                                                             &amp;&amp;  \
rm &quot;${fichTmp}&quot;

printf &quot;\nVoilà voilà! \&quot;${fichImgFr}\&quot; est la version francisée.\n\n&quot;
&lt;/code&gt;</text>
      <sha1>46dwxm6uqttmhphzy7r4iy9q2b9xqmj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5681</id>
      <parentid>5680</parentid>
      <timestamp>2014-07-12T00:09:04Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Ou alors, utilisez un script. */ &quot;FR&quot; juste après &quot;-live-&quot; dans le renommage de fichier</comment>
      <text xml:space="preserve" bytes="26658">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue '''ligne des options de boot''' suivante qui permet de démarrer ma '''debian live''' directement en français.
&lt;code&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/code&gt;
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.

&lt;u&gt;'''NOTE:'''&lt;/u&gt; Bien sûr cette maipulation comme le script fonctionne avec tous les fichiers image ISO de type '''debian &lt;u&gt;live&lt;/u&gt;'''

== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'[http://caesar.acc.umu.se/debian-cd/current-live/amd64/iso-hybrid/debian-live-7.5.0-amd64-xfce-desktop.iso|image ISO téléchargée], juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite).
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/code&gt;

La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide. 
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│ Ctrl Key          HexCurse Keyboard Commands            │◆│ Function Keys  │
│                                                         │▒│                │
│ CTRL+?    Help     - you are reading it now             │▒│ Help     = F1  │
│ CTRL+S    Save     - saves the current file open        │▒│ Save     = F2  │
│ CTRL+O    Open     - opens a new file                   │▒│ Open     = F3  │
│ CTRL+G    Goto     - goto a specified address           │▒│ Goto     = F4  │
│ CTRL+F    Find     - search for a hex/ascii value       │▒│ Find     = F5  │
│ CTRL+A    HexAdres - toggle between hex/decimal address │▒│ HexAdres = F6  │
│ TAB       Hex Edit - toggle between hex/ASCII windows   │▒│ Hex Edit = F7  │
│ CTRL+Q    Quit     - exit out of the program            │▒│ Quit     = F8  │
│                                                         │▒│                │
│ CTRL+U    Page up  - scrolls one screen up              │▒│ Page up  = PGUP│
│ CTRL+D    Page down- scrolls one screen down            │▒│ Page down= PGDN│
│ CTRL+Z    Undo     - reverts last modification          │▒│                │
│ CTRL+T    Home     - returns to the top of the file     │▒│                │
│ CTRL+B    End      - jumps to the bottom of the file    │▒│                │
│                                                         │▒│                │
│                     Press enter to continue             │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/code&gt;
&lt;u&gt;'''NOTE:'''&lt;/u&gt; Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}



Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└Enter ascii value (): live-amd64                          v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/code&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.
&lt;code&gt;
┌33807006─────────────────────────────────────────────────┐^┌────────────────┐
│33807000 6C 61 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 │▒│label live-amd64│
│33807010 0A 09 6D 65 6E 75 20 6C 61 62 65 6C 20 5E 4C 69 │▒│..menu label ^Li│
│33807020 76 65 20 28 61 6D 64 36 34 29 0A 09 6D 65 6E 75 │▒│ve (amd64)..menu│
│33807030 20 64 65 66 61 75 6C 74 0A 09 6C 69 6E 75 78 20 │▒│ default..linux │
│33807040 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A 09 69 │▒│/live/vmlinuz..i│
│33807050 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E 69 74 │▒│nitrd /live/init│
│33807060 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 20 62 │▒│rd.img..append b│
│33807070 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 67 20 │▒│oot=live config │
│33807080 71 75 69 65 74 20 73 70 6C 61 73 68 0A 0A 6C 61 │▒│quiet splash..la│
│33807090 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 2D 66 │▒│bel live-amd64-f│
│338070A0 61 69 6C 73 61 66 65 0A 09 6D 65 6E 75 20 6C 61 │▒│ailsafe..menu la│
│338070B0 62 65 6C 20 5E 4C 69 76 65 20 28 61 6D 64 36 34 │▒│bel ^Live (amd64│
│338070C0 20 66 61 69 6C 73 61 66 65 29 0A 09 6C 69 6E 75 │▒│ failsafe)..linu│
│338070D0 78 20 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A │▒│x /live/vmlinuz.│
│338070E0 09 69 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E │▒│.initrd /live/in│
│338070F0 69 74 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 │▒│itrd.img..append│
│33807100 20 62 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 │▒│ boot=live confi│
│33807110 67 20 6D 65 6D 74 65 73 74 20 6E 6F 61 70 69 63 │▒│g memtest noapic│
│33807120 20 6E 6F 61 70 6D 20 6E 6F 64 6D 61 20 6E 6F 6D │▒│ noapm nodma nom│
│33807130 63 65 20 6E 6F 6C 61 70 69 63 20 6E 6F 6D 6F 64 │▒│ce nolapic nomod│
│33807140 65 73 65 74 20 6E 6F 73 6D 70 20 6E 6F 73 70 6C │▒│eset nosmp nospl│
│33807150 61 73 68 20 76 67 61 3D 6E 6F 72 6D 61 6C 0A 00 │▒│ash vga=normal..│
│33807160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │◆│................│
│338071D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/code&gt;
Une fois le curseur bien positionné, en haut à gauche de la fenêtre, on pourra lire le décalage depuis le début du fichier :&lt;br /&gt;
'''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Recopier 512 octets dans le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -m 2G -cpu host -boot d -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB).

Il ne reste plus qu'à supprimer les fichiers devenus inutiles :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
== Ou alors, utilisez un script. ==
&lt;code&gt;
#!/bin/sh
#=================================================================================================
# NOM DU SCRIPT: isoLive2fr.sh
#
#     NÉCESSITE: &quot;isoinfo&quot; du paquetage &quot;genisoimage&quot;
#                &quot;dd&quot;      du paquetage &quot;coreutils&quot;
#
# BUT: Ajouter les paramètres de boot à une image ISO Live debian
#       de façon à ce qu'elle démarre directement en Français.
#
# AUTEUR: MicP (debian-fr)
#   DATE: 10/07/2014
#-------------------------------------------------------------------------------------------------
# NOTES:
# Ce n'est qu'une ébauche de script inspiré par ceux qu'a posté fran.b dans le fil de discussion :
#  http://www.debian-fr.org/franciser-l-iso-debian-7-5-live-nonfree-moins-de-2-minutes-t48948.html
#
# Ça fonctionne, mais je reviendrai plus tard pour rajouter les contrôles d'erreur, et plus...
#=================================================================================================

test &quot;$1&quot; ||
  {
    printf &quot;Donnez un chemin d'image \&quot;ISO Live\&quot; debian en paramètre.\n&quot;;
    exit 1;
  }

isoinfo -d -i &quot;$1&quot; | grep &quot;Application id: DEBIAN LIVE&quot; || \
  {
    printf &quot;\n\&quot;${1}\&quot; n'est PAS un fichier d'image ISO \&quot;Debian Live\&quot;...\n\n&quot;
    exit 1
  }

fichImgEn=&quot;$1&quot;
fichImgFr=&quot;${fichImgEn%-*}-Fr-${fichImgEn##*-}&quot;


fichRech=&quot;live.cfg&quot;
chOrigin=&quot;quiet splash&quot;
chAjout=&quot;lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes&quot;
fichTmp=&quot;/tmp/tmpAeffacer`date +%s`.dat&quot;
chRempl=&quot;$chOrigin $chAjout&quot;

blockSize=`isoinfo -d    -i &quot;${fichImgEn}&quot; | grep &quot;block size&quot;  | awk '{print $5}'`
valOffset=`isoinfo -l -R -i &quot;${fichImgEn}&quot; | grep &quot;${fichRech}&quot; | awk '{print $10}'`

dd bs=$blockSize count=1 skip=$valOffset if=&quot;${fichImgEn}&quot;                                   2&gt;/dev/null     |   \
sed &quot;s/$chOrigin/$chRempl/&quot;                                                                   &gt; &quot;${fichTmp}&quot; &amp;&amp;  \
dd bs=$blockSize count=1 seek=$valOffset if=&quot;${fichTmp}&quot; of=&quot;${fichImgEn}&quot; conv=notrunc,sync 2&gt;/dev/null     &amp;&amp;  \
mv &quot;${fichImgEn}&quot; &quot;${fichImgFr}&quot;                                                                             &amp;&amp;  \
rm &quot;${fichTmp}&quot;

printf &quot;\nVoilà voilà! \&quot;${fichImgFr}\&quot; est la version francisée.\n\n&quot;
&lt;/code&gt;</text>
      <sha1>lqkjweg5j6h6wz9nka7c36a0pe7qqev</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5682</id>
      <parentid>5681</parentid>
      <timestamp>2014-07-12T00:15:49Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Ou alors, utilisez un script. */ ajout &quot;SYNTAXE:&quot; dans en-tête</comment>
      <text xml:space="preserve" bytes="26748">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue '''ligne des options de boot''' suivante qui permet de démarrer ma '''debian live''' directement en français.
&lt;code&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/code&gt;
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.

&lt;u&gt;'''NOTE:'''&lt;/u&gt; Bien sûr cette maipulation comme le script fonctionne avec tous les fichiers image ISO de type '''debian &lt;u&gt;live&lt;/u&gt;'''

== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'[http://caesar.acc.umu.se/debian-cd/current-live/amd64/iso-hybrid/debian-live-7.5.0-amd64-xfce-desktop.iso|image ISO téléchargée], juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite).
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/code&gt;

La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide. 
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│ Ctrl Key          HexCurse Keyboard Commands            │◆│ Function Keys  │
│                                                         │▒│                │
│ CTRL+?    Help     - you are reading it now             │▒│ Help     = F1  │
│ CTRL+S    Save     - saves the current file open        │▒│ Save     = F2  │
│ CTRL+O    Open     - opens a new file                   │▒│ Open     = F3  │
│ CTRL+G    Goto     - goto a specified address           │▒│ Goto     = F4  │
│ CTRL+F    Find     - search for a hex/ascii value       │▒│ Find     = F5  │
│ CTRL+A    HexAdres - toggle between hex/decimal address │▒│ HexAdres = F6  │
│ TAB       Hex Edit - toggle between hex/ASCII windows   │▒│ Hex Edit = F7  │
│ CTRL+Q    Quit     - exit out of the program            │▒│ Quit     = F8  │
│                                                         │▒│                │
│ CTRL+U    Page up  - scrolls one screen up              │▒│ Page up  = PGUP│
│ CTRL+D    Page down- scrolls one screen down            │▒│ Page down= PGDN│
│ CTRL+Z    Undo     - reverts last modification          │▒│                │
│ CTRL+T    Home     - returns to the top of the file     │▒│                │
│ CTRL+B    End      - jumps to the bottom of the file    │▒│                │
│                                                         │▒│                │
│                     Press enter to continue             │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/code&gt;
&lt;u&gt;'''NOTE:'''&lt;/u&gt; Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}



Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└Enter ascii value (): live-amd64                          v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/code&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.
&lt;code&gt;
┌33807006─────────────────────────────────────────────────┐^┌────────────────┐
│33807000 6C 61 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 │▒│label live-amd64│
│33807010 0A 09 6D 65 6E 75 20 6C 61 62 65 6C 20 5E 4C 69 │▒│..menu label ^Li│
│33807020 76 65 20 28 61 6D 64 36 34 29 0A 09 6D 65 6E 75 │▒│ve (amd64)..menu│
│33807030 20 64 65 66 61 75 6C 74 0A 09 6C 69 6E 75 78 20 │▒│ default..linux │
│33807040 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A 09 69 │▒│/live/vmlinuz..i│
│33807050 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E 69 74 │▒│nitrd /live/init│
│33807060 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 20 62 │▒│rd.img..append b│
│33807070 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 67 20 │▒│oot=live config │
│33807080 71 75 69 65 74 20 73 70 6C 61 73 68 0A 0A 6C 61 │▒│quiet splash..la│
│33807090 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 2D 66 │▒│bel live-amd64-f│
│338070A0 61 69 6C 73 61 66 65 0A 09 6D 65 6E 75 20 6C 61 │▒│ailsafe..menu la│
│338070B0 62 65 6C 20 5E 4C 69 76 65 20 28 61 6D 64 36 34 │▒│bel ^Live (amd64│
│338070C0 20 66 61 69 6C 73 61 66 65 29 0A 09 6C 69 6E 75 │▒│ failsafe)..linu│
│338070D0 78 20 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A │▒│x /live/vmlinuz.│
│338070E0 09 69 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E │▒│.initrd /live/in│
│338070F0 69 74 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 │▒│itrd.img..append│
│33807100 20 62 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 │▒│ boot=live confi│
│33807110 67 20 6D 65 6D 74 65 73 74 20 6E 6F 61 70 69 63 │▒│g memtest noapic│
│33807120 20 6E 6F 61 70 6D 20 6E 6F 64 6D 61 20 6E 6F 6D │▒│ noapm nodma nom│
│33807130 63 65 20 6E 6F 6C 61 70 69 63 20 6E 6F 6D 6F 64 │▒│ce nolapic nomod│
│33807140 65 73 65 74 20 6E 6F 73 6D 70 20 6E 6F 73 70 6C │▒│eset nosmp nospl│
│33807150 61 73 68 20 76 67 61 3D 6E 6F 72 6D 61 6C 0A 00 │▒│ash vga=normal..│
│33807160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │◆│................│
│338071D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/code&gt;
Une fois le curseur bien positionné, en haut à gauche de la fenêtre, on pourra lire le décalage depuis le début du fichier :&lt;br /&gt;
'''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Recopier 512 octets dans le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -m 2G -cpu host -boot d -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB).

Il ne reste plus qu'à supprimer les fichiers devenus inutiles :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
== Ou alors, utilisez un script. ==
&lt;code&gt;
#!/bin/sh
#=================================================================================================
# NOM DU SCRIPT: isoLive2fr.sh
#
#       SYNTAXE: isoLive2fr &lt;fichier image ISO Live&gt;
#
#     NÉCESSITE: &quot;isoinfo&quot; du paquetage &quot;genisoimage&quot;
#                &quot;dd&quot;      du paquetage &quot;coreutils&quot;
#
#           BUT: Ajouter les paramètres de boot à une image ISO Live debian
#                  de façon à ce qu'elle démarre directement en Français.
#
#        AUTEUR: MicP (debian-fr)
#          DATE: 10/07/2014
#-------------------------------------------------------------------------------------------------
# NOTES:
# Ce n'est qu'une ébauche de script inspiré par ceux qu'a posté fran.b dans le fil de discussion :
#  http://www.debian-fr.org/franciser-l-iso-debian-7-5-live-nonfree-moins-de-2-minutes-t48948.html
#
# Ça fonctionne, mais je reviendrai plus tard pour rajouter les contrôles d'erreur, et plus...
#=================================================================================================

test &quot;$1&quot; ||
  {
    printf &quot;Donnez un chemin d'image \&quot;ISO Live\&quot; debian en paramètre.\n&quot;;
    exit 1;
  }

isoinfo -d -i &quot;$1&quot; | grep &quot;Application id: DEBIAN LIVE&quot; || \
  {
    printf &quot;\n\&quot;${1}\&quot; n'est PAS un fichier d'image ISO \&quot;Debian Live\&quot;...\n\n&quot;
    exit 1
  }

fichImgEn=&quot;$1&quot;
fichImgFr=&quot;${fichImgEn%-*}-Fr-${fichImgEn##*-}&quot;


fichRech=&quot;live.cfg&quot;
chOrigin=&quot;quiet splash&quot;
chAjout=&quot;lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes&quot;
fichTmp=&quot;/tmp/tmpAeffacer`date +%s`.dat&quot;
chRempl=&quot;$chOrigin $chAjout&quot;

blockSize=`isoinfo -d    -i &quot;${fichImgEn}&quot; | grep &quot;block size&quot;  | awk '{print $5}'`
valOffset=`isoinfo -l -R -i &quot;${fichImgEn}&quot; | grep &quot;${fichRech}&quot; | awk '{print $10}'`

dd bs=$blockSize count=1 skip=$valOffset if=&quot;${fichImgEn}&quot;                                   2&gt;/dev/null     |   \
sed &quot;s/$chOrigin/$chRempl/&quot;                                                                   &gt; &quot;${fichTmp}&quot; &amp;&amp;  \
dd bs=$blockSize count=1 seek=$valOffset if=&quot;${fichTmp}&quot; of=&quot;${fichImgEn}&quot; conv=notrunc,sync 2&gt;/dev/null     &amp;&amp;  \
mv &quot;${fichImgEn}&quot; &quot;${fichImgFr}&quot;                                                                             &amp;&amp;  \
rm &quot;${fichTmp}&quot;

printf &quot;\nVoilà voilà! \&quot;${fichImgFr}\&quot; est la version francisée.\n\n&quot;
&lt;/code&gt;</text>
      <sha1>at10qq2zdn7rl8orhuwxo0a64yjcovq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5683</id>
      <parentid>5682</parentid>
      <timestamp>2014-07-12T00:20:32Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Ou alors, utilisez un script. */ &quot;BUT:&quot; avant &quot;NÉCESSITE:&quot; dans en-tête</comment>
      <text xml:space="preserve" bytes="26755">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue '''ligne des options de boot''' suivante qui permet de démarrer ma '''debian live''' directement en français.
&lt;code&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/code&gt;
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.

&lt;u&gt;'''NOTE:'''&lt;/u&gt; Bien sûr cette maipulation comme le script fonctionne avec tous les fichiers image ISO de type '''debian &lt;u&gt;live&lt;/u&gt;'''

== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'[http://caesar.acc.umu.se/debian-cd/current-live/amd64/iso-hybrid/debian-live-7.5.0-amd64-xfce-desktop.iso|image ISO téléchargée], juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite).
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/code&gt;

La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide. 
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│ Ctrl Key          HexCurse Keyboard Commands            │◆│ Function Keys  │
│                                                         │▒│                │
│ CTRL+?    Help     - you are reading it now             │▒│ Help     = F1  │
│ CTRL+S    Save     - saves the current file open        │▒│ Save     = F2  │
│ CTRL+O    Open     - opens a new file                   │▒│ Open     = F3  │
│ CTRL+G    Goto     - goto a specified address           │▒│ Goto     = F4  │
│ CTRL+F    Find     - search for a hex/ascii value       │▒│ Find     = F5  │
│ CTRL+A    HexAdres - toggle between hex/decimal address │▒│ HexAdres = F6  │
│ TAB       Hex Edit - toggle between hex/ASCII windows   │▒│ Hex Edit = F7  │
│ CTRL+Q    Quit     - exit out of the program            │▒│ Quit     = F8  │
│                                                         │▒│                │
│ CTRL+U    Page up  - scrolls one screen up              │▒│ Page up  = PGUP│
│ CTRL+D    Page down- scrolls one screen down            │▒│ Page down= PGDN│
│ CTRL+Z    Undo     - reverts last modification          │▒│                │
│ CTRL+T    Home     - returns to the top of the file     │▒│                │
│ CTRL+B    End      - jumps to the bottom of the file    │▒│                │
│                                                         │▒│                │
│                     Press enter to continue             │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/code&gt;
&lt;u&gt;'''NOTE:'''&lt;/u&gt; Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}



Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└Enter ascii value (): live-amd64                          v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/code&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.
&lt;code&gt;
┌33807006─────────────────────────────────────────────────┐^┌────────────────┐
│33807000 6C 61 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 │▒│label live-amd64│
│33807010 0A 09 6D 65 6E 75 20 6C 61 62 65 6C 20 5E 4C 69 │▒│..menu label ^Li│
│33807020 76 65 20 28 61 6D 64 36 34 29 0A 09 6D 65 6E 75 │▒│ve (amd64)..menu│
│33807030 20 64 65 66 61 75 6C 74 0A 09 6C 69 6E 75 78 20 │▒│ default..linux │
│33807040 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A 09 69 │▒│/live/vmlinuz..i│
│33807050 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E 69 74 │▒│nitrd /live/init│
│33807060 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 20 62 │▒│rd.img..append b│
│33807070 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 67 20 │▒│oot=live config │
│33807080 71 75 69 65 74 20 73 70 6C 61 73 68 0A 0A 6C 61 │▒│quiet splash..la│
│33807090 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 2D 66 │▒│bel live-amd64-f│
│338070A0 61 69 6C 73 61 66 65 0A 09 6D 65 6E 75 20 6C 61 │▒│ailsafe..menu la│
│338070B0 62 65 6C 20 5E 4C 69 76 65 20 28 61 6D 64 36 34 │▒│bel ^Live (amd64│
│338070C0 20 66 61 69 6C 73 61 66 65 29 0A 09 6C 69 6E 75 │▒│ failsafe)..linu│
│338070D0 78 20 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A │▒│x /live/vmlinuz.│
│338070E0 09 69 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E │▒│.initrd /live/in│
│338070F0 69 74 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 │▒│itrd.img..append│
│33807100 20 62 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 │▒│ boot=live confi│
│33807110 67 20 6D 65 6D 74 65 73 74 20 6E 6F 61 70 69 63 │▒│g memtest noapic│
│33807120 20 6E 6F 61 70 6D 20 6E 6F 64 6D 61 20 6E 6F 6D │▒│ noapm nodma nom│
│33807130 63 65 20 6E 6F 6C 61 70 69 63 20 6E 6F 6D 6F 64 │▒│ce nolapic nomod│
│33807140 65 73 65 74 20 6E 6F 73 6D 70 20 6E 6F 73 70 6C │▒│eset nosmp nospl│
│33807150 61 73 68 20 76 67 61 3D 6E 6F 72 6D 61 6C 0A 00 │▒│ash vga=normal..│
│33807160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │◆│................│
│338071D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/code&gt;
Une fois le curseur bien positionné, en haut à gauche de la fenêtre, on pourra lire le décalage depuis le début du fichier :&lt;br /&gt;
'''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Recopier 512 octets dans le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -m 2G -cpu host -boot d -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB).

Il ne reste plus qu'à supprimer les fichiers devenus inutiles :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
== Ou alors, utilisez un script. ==
&lt;code&gt;
#!/bin/sh
#=================================================================================================
# NOM DU SCRIPT: isoLive2fr.sh
#
#       SYNTAXE: isoLive2fr &lt;chemin fichier image ISO Live&gt;
#
#           BUT: Ajouter les paramètres de boot à une image ISO Live debian
#                  de façon à ce qu'elle démarre directement en Français.
#
#     NÉCESSITE: &quot;isoinfo&quot; du paquetage &quot;genisoimage&quot;
#                &quot;dd&quot;      du paquetage &quot;coreutils&quot;
#
#        AUTEUR: MicP (debian-fr)
#          DATE: 10/07/2014
#-------------------------------------------------------------------------------------------------
# NOTES:
# Ce n'est qu'une ébauche de script inspiré par ceux qu'a posté fran.b dans le fil de discussion :
#  http://www.debian-fr.org/franciser-l-iso-debian-7-5-live-nonfree-moins-de-2-minutes-t48948.html
#
# Ça fonctionne, mais je reviendrai plus tard pour rajouter les contrôles d'erreur, et plus...
#=================================================================================================

test &quot;$1&quot; ||
  {
    printf &quot;Donnez un chemin d'image \&quot;ISO Live\&quot; debian en paramètre.\n&quot;;
    exit 1;
  }

isoinfo -d -i &quot;$1&quot; | grep &quot;Application id: DEBIAN LIVE&quot; || \
  {
    printf &quot;\n\&quot;${1}\&quot; n'est PAS un fichier d'image ISO \&quot;Debian Live\&quot;...\n\n&quot;
    exit 1
  }

fichImgEn=&quot;$1&quot;
fichImgFr=&quot;${fichImgEn%-*}-Fr-${fichImgEn##*-}&quot;


fichRech=&quot;live.cfg&quot;
chOrigin=&quot;quiet splash&quot;
chAjout=&quot;lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes&quot;
fichTmp=&quot;/tmp/tmpAeffacer`date +%s`.dat&quot;
chRempl=&quot;$chOrigin $chAjout&quot;

blockSize=`isoinfo -d    -i &quot;${fichImgEn}&quot; | grep &quot;block size&quot;  | awk '{print $5}'`
valOffset=`isoinfo -l -R -i &quot;${fichImgEn}&quot; | grep &quot;${fichRech}&quot; | awk '{print $10}'`

dd bs=$blockSize count=1 skip=$valOffset if=&quot;${fichImgEn}&quot;                                   2&gt;/dev/null     |   \
sed &quot;s/$chOrigin/$chRempl/&quot;                                                                   &gt; &quot;${fichTmp}&quot; &amp;&amp;  \
dd bs=$blockSize count=1 seek=$valOffset if=&quot;${fichTmp}&quot; of=&quot;${fichImgEn}&quot; conv=notrunc,sync 2&gt;/dev/null     &amp;&amp;  \
mv &quot;${fichImgEn}&quot; &quot;${fichImgFr}&quot;                                                                             &amp;&amp;  \
rm &quot;${fichTmp}&quot;

printf &quot;\nVoilà voilà! \&quot;${fichImgFr}\&quot; est la version francisée.\n\n&quot;
&lt;/code&gt;</text>
      <sha1>rgdbfz6qeig5nrfx7l908778bc66830</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5684</id>
      <parentid>5683</parentid>
      <timestamp>2014-07-12T00:20:51Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <comment>/* Ou alors, utilisez un script. */</comment>
      <text xml:space="preserve" bytes="26757">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue '''ligne des options de boot''' suivante qui permet de démarrer ma '''debian live''' directement en français.
&lt;code&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/code&gt;
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.

&lt;u&gt;'''NOTE:'''&lt;/u&gt; Bien sûr cette maipulation comme le script fonctionne avec tous les fichiers image ISO de type '''debian &lt;u&gt;live&lt;/u&gt;'''

== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'[http://caesar.acc.umu.se/debian-cd/current-live/amd64/iso-hybrid/debian-live-7.5.0-amd64-xfce-desktop.iso|image ISO téléchargée], juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite).
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/code&gt;

La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide. 
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│ Ctrl Key          HexCurse Keyboard Commands            │◆│ Function Keys  │
│                                                         │▒│                │
│ CTRL+?    Help     - you are reading it now             │▒│ Help     = F1  │
│ CTRL+S    Save     - saves the current file open        │▒│ Save     = F2  │
│ CTRL+O    Open     - opens a new file                   │▒│ Open     = F3  │
│ CTRL+G    Goto     - goto a specified address           │▒│ Goto     = F4  │
│ CTRL+F    Find     - search for a hex/ascii value       │▒│ Find     = F5  │
│ CTRL+A    HexAdres - toggle between hex/decimal address │▒│ HexAdres = F6  │
│ TAB       Hex Edit - toggle between hex/ASCII windows   │▒│ Hex Edit = F7  │
│ CTRL+Q    Quit     - exit out of the program            │▒│ Quit     = F8  │
│                                                         │▒│                │
│ CTRL+U    Page up  - scrolls one screen up              │▒│ Page up  = PGUP│
│ CTRL+D    Page down- scrolls one screen down            │▒│ Page down= PGDN│
│ CTRL+Z    Undo     - reverts last modification          │▒│                │
│ CTRL+T    Home     - returns to the top of the file     │▒│                │
│ CTRL+B    End      - jumps to the bottom of the file    │▒│                │
│                                                         │▒│                │
│                     Press enter to continue             │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/code&gt;
&lt;u&gt;'''NOTE:'''&lt;/u&gt; Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}



Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└Enter ascii value (): live-amd64                          v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/code&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.
&lt;code&gt;
┌33807006─────────────────────────────────────────────────┐^┌────────────────┐
│33807000 6C 61 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 │▒│label live-amd64│
│33807010 0A 09 6D 65 6E 75 20 6C 61 62 65 6C 20 5E 4C 69 │▒│..menu label ^Li│
│33807020 76 65 20 28 61 6D 64 36 34 29 0A 09 6D 65 6E 75 │▒│ve (amd64)..menu│
│33807030 20 64 65 66 61 75 6C 74 0A 09 6C 69 6E 75 78 20 │▒│ default..linux │
│33807040 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A 09 69 │▒│/live/vmlinuz..i│
│33807050 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E 69 74 │▒│nitrd /live/init│
│33807060 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 20 62 │▒│rd.img..append b│
│33807070 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 67 20 │▒│oot=live config │
│33807080 71 75 69 65 74 20 73 70 6C 61 73 68 0A 0A 6C 61 │▒│quiet splash..la│
│33807090 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 2D 66 │▒│bel live-amd64-f│
│338070A0 61 69 6C 73 61 66 65 0A 09 6D 65 6E 75 20 6C 61 │▒│ailsafe..menu la│
│338070B0 62 65 6C 20 5E 4C 69 76 65 20 28 61 6D 64 36 34 │▒│bel ^Live (amd64│
│338070C0 20 66 61 69 6C 73 61 66 65 29 0A 09 6C 69 6E 75 │▒│ failsafe)..linu│
│338070D0 78 20 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A │▒│x /live/vmlinuz.│
│338070E0 09 69 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E │▒│.initrd /live/in│
│338070F0 69 74 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 │▒│itrd.img..append│
│33807100 20 62 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 │▒│ boot=live confi│
│33807110 67 20 6D 65 6D 74 65 73 74 20 6E 6F 61 70 69 63 │▒│g memtest noapic│
│33807120 20 6E 6F 61 70 6D 20 6E 6F 64 6D 61 20 6E 6F 6D │▒│ noapm nodma nom│
│33807130 63 65 20 6E 6F 6C 61 70 69 63 20 6E 6F 6D 6F 64 │▒│ce nolapic nomod│
│33807140 65 73 65 74 20 6E 6F 73 6D 70 20 6E 6F 73 70 6C │▒│eset nosmp nospl│
│33807150 61 73 68 20 76 67 61 3D 6E 6F 72 6D 61 6C 0A 00 │▒│ash vga=normal..│
│33807160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │◆│................│
│338071D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/code&gt;
Une fois le curseur bien positionné, en haut à gauche de la fenêtre, on pourra lire le décalage depuis le début du fichier :&lt;br /&gt;
'''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Recopier 512 octets dans le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -m 2G -cpu host -boot d -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB).

Il ne reste plus qu'à supprimer les fichiers devenus inutiles :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
== Ou alors, utilisez un script. ==
&lt;code&gt;
#!/bin/sh -
#=================================================================================================
# NOM DU SCRIPT: isoLive2fr.sh
#
#       SYNTAXE: isoLive2fr &lt;chemin fichier image ISO Live&gt;
#
#           BUT: Ajouter les paramètres de boot à une image ISO Live debian
#                  de façon à ce qu'elle démarre directement en Français.
#
#     NÉCESSITE: &quot;isoinfo&quot; du paquetage &quot;genisoimage&quot;
#                &quot;dd&quot;      du paquetage &quot;coreutils&quot;
#
#        AUTEUR: MicP (debian-fr)
#          DATE: 10/07/2014
#-------------------------------------------------------------------------------------------------
# NOTES:
# Ce n'est qu'une ébauche de script inspiré par ceux qu'a posté fran.b dans le fil de discussion :
#  http://www.debian-fr.org/franciser-l-iso-debian-7-5-live-nonfree-moins-de-2-minutes-t48948.html
#
# Ça fonctionne, mais je reviendrai plus tard pour rajouter les contrôles d'erreur, et plus...
#=================================================================================================

test &quot;$1&quot; ||
  {
    printf &quot;Donnez un chemin d'image \&quot;ISO Live\&quot; debian en paramètre.\n&quot;;
    exit 1;
  }

isoinfo -d -i &quot;$1&quot; | grep &quot;Application id: DEBIAN LIVE&quot; || \
  {
    printf &quot;\n\&quot;${1}\&quot; n'est PAS un fichier d'image ISO \&quot;Debian Live\&quot;...\n\n&quot;
    exit 1
  }

fichImgEn=&quot;$1&quot;
fichImgFr=&quot;${fichImgEn%-*}-Fr-${fichImgEn##*-}&quot;


fichRech=&quot;live.cfg&quot;
chOrigin=&quot;quiet splash&quot;
chAjout=&quot;lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes&quot;
fichTmp=&quot;/tmp/tmpAeffacer`date +%s`.dat&quot;
chRempl=&quot;$chOrigin $chAjout&quot;

blockSize=`isoinfo -d    -i &quot;${fichImgEn}&quot; | grep &quot;block size&quot;  | awk '{print $5}'`
valOffset=`isoinfo -l -R -i &quot;${fichImgEn}&quot; | grep &quot;${fichRech}&quot; | awk '{print $10}'`

dd bs=$blockSize count=1 skip=$valOffset if=&quot;${fichImgEn}&quot;                                   2&gt;/dev/null     |   \
sed &quot;s/$chOrigin/$chRempl/&quot;                                                                   &gt; &quot;${fichTmp}&quot; &amp;&amp;  \
dd bs=$blockSize count=1 seek=$valOffset if=&quot;${fichTmp}&quot; of=&quot;${fichImgEn}&quot; conv=notrunc,sync 2&gt;/dev/null     &amp;&amp;  \
mv &quot;${fichImgEn}&quot; &quot;${fichImgFr}&quot;                                                                             &amp;&amp;  \
rm &quot;${fichTmp}&quot;

printf &quot;\nVoilà voilà! \&quot;${fichImgFr}\&quot; est la version francisée.\n\n&quot;
&lt;/code&gt;</text>
      <sha1>6gsbnrude3hid9d0j9xwas849onfm8d</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5685</id>
      <parentid>5684</parentid>
      <timestamp>2014-07-12T08:15:09Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Ou alors, utilisez un script. */ ajout keyb. variant latin9</comment>
      <text xml:space="preserve" bytes="26781">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue '''ligne des options de boot''' suivante qui permet de démarrer ma '''debian live''' directement en français.
&lt;code&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/code&gt;
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.

&lt;u&gt;'''NOTE:'''&lt;/u&gt; Bien sûr cette maipulation comme le script fonctionne avec tous les fichiers image ISO de type '''debian &lt;u&gt;live&lt;/u&gt;'''

== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'[http://caesar.acc.umu.se/debian-cd/current-live/amd64/iso-hybrid/debian-live-7.5.0-amd64-xfce-desktop.iso|image ISO téléchargée], juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite).
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/code&gt;

La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide. 
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│ Ctrl Key          HexCurse Keyboard Commands            │◆│ Function Keys  │
│                                                         │▒│                │
│ CTRL+?    Help     - you are reading it now             │▒│ Help     = F1  │
│ CTRL+S    Save     - saves the current file open        │▒│ Save     = F2  │
│ CTRL+O    Open     - opens a new file                   │▒│ Open     = F3  │
│ CTRL+G    Goto     - goto a specified address           │▒│ Goto     = F4  │
│ CTRL+F    Find     - search for a hex/ascii value       │▒│ Find     = F5  │
│ CTRL+A    HexAdres - toggle between hex/decimal address │▒│ HexAdres = F6  │
│ TAB       Hex Edit - toggle between hex/ASCII windows   │▒│ Hex Edit = F7  │
│ CTRL+Q    Quit     - exit out of the program            │▒│ Quit     = F8  │
│                                                         │▒│                │
│ CTRL+U    Page up  - scrolls one screen up              │▒│ Page up  = PGUP│
│ CTRL+D    Page down- scrolls one screen down            │▒│ Page down= PGDN│
│ CTRL+Z    Undo     - reverts last modification          │▒│                │
│ CTRL+T    Home     - returns to the top of the file     │▒│                │
│ CTRL+B    End      - jumps to the bottom of the file    │▒│                │
│                                                         │▒│                │
│                     Press enter to continue             │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/code&gt;
&lt;u&gt;'''NOTE:'''&lt;/u&gt; Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}



Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└Enter ascii value (): live-amd64                          v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/code&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.
&lt;code&gt;
┌33807006─────────────────────────────────────────────────┐^┌────────────────┐
│33807000 6C 61 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 │▒│label live-amd64│
│33807010 0A 09 6D 65 6E 75 20 6C 61 62 65 6C 20 5E 4C 69 │▒│..menu label ^Li│
│33807020 76 65 20 28 61 6D 64 36 34 29 0A 09 6D 65 6E 75 │▒│ve (amd64)..menu│
│33807030 20 64 65 66 61 75 6C 74 0A 09 6C 69 6E 75 78 20 │▒│ default..linux │
│33807040 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A 09 69 │▒│/live/vmlinuz..i│
│33807050 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E 69 74 │▒│nitrd /live/init│
│33807060 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 20 62 │▒│rd.img..append b│
│33807070 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 67 20 │▒│oot=live config │
│33807080 71 75 69 65 74 20 73 70 6C 61 73 68 0A 0A 6C 61 │▒│quiet splash..la│
│33807090 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 2D 66 │▒│bel live-amd64-f│
│338070A0 61 69 6C 73 61 66 65 0A 09 6D 65 6E 75 20 6C 61 │▒│ailsafe..menu la│
│338070B0 62 65 6C 20 5E 4C 69 76 65 20 28 61 6D 64 36 34 │▒│bel ^Live (amd64│
│338070C0 20 66 61 69 6C 73 61 66 65 29 0A 09 6C 69 6E 75 │▒│ failsafe)..linu│
│338070D0 78 20 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A │▒│x /live/vmlinuz.│
│338070E0 09 69 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E │▒│.initrd /live/in│
│338070F0 69 74 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 │▒│itrd.img..append│
│33807100 20 62 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 │▒│ boot=live confi│
│33807110 67 20 6D 65 6D 74 65 73 74 20 6E 6F 61 70 69 63 │▒│g memtest noapic│
│33807120 20 6E 6F 61 70 6D 20 6E 6F 64 6D 61 20 6E 6F 6D │▒│ noapm nodma nom│
│33807130 63 65 20 6E 6F 6C 61 70 69 63 20 6E 6F 6D 6F 64 │▒│ce nolapic nomod│
│33807140 65 73 65 74 20 6E 6F 73 6D 70 20 6E 6F 73 70 6C │▒│eset nosmp nospl│
│33807150 61 73 68 20 76 67 61 3D 6E 6F 72 6D 61 6C 0A 00 │▒│ash vga=normal..│
│33807160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │◆│................│
│338071D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/code&gt;
Une fois le curseur bien positionné, en haut à gauche de la fenêtre, on pourra lire le décalage depuis le début du fichier :&lt;br /&gt;
'''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Recopier 512 octets dans le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -m 2G -cpu host -boot d -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB).

Il ne reste plus qu'à supprimer les fichiers devenus inutiles :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
== Ou alors, utilisez un script. ==
&lt;code&gt;
#!/bin/sh -
#=================================================================================================
# NOM DU SCRIPT: isoLive2fr.sh
#
#       SYNTAXE: isoLive2fr &lt;chemin fichier image ISO Live&gt;
#
#           BUT: Ajouter les paramètres de boot à une image ISO Live debian
#                  de façon à ce qu'elle démarre directement en Français.
#
#     NÉCESSITE: &quot;isoinfo&quot; du paquetage &quot;genisoimage&quot;
#                &quot;dd&quot;      du paquetage &quot;coreutils&quot;
#
#        AUTEUR: MicP (debian-fr)
#          DATE: 10/07/2014
#-------------------------------------------------------------------------------------------------
# NOTES:
# Ce n'est qu'une ébauche de script inspiré par ceux qu'a posté fran.b dans le fil de discussion :
#  http://www.debian-fr.org/franciser-l-iso-debian-7-5-live-nonfree-moins-de-2-minutes-t48948.html
#
# Ça fonctionne, mais je reviendrai plus tard pour rajouter les contrôles d'erreur, et plus...
#=================================================================================================

test &quot;$1&quot; ||
  {
    printf &quot;Donnez un chemin d'image \&quot;ISO Live\&quot; debian en paramètre.\n&quot;;
    exit 1;
  }

isoinfo -d -i &quot;$1&quot; | grep &quot;Application id: DEBIAN LIVE&quot; || \
  {
    printf &quot;\n\&quot;${1}\&quot; n'est PAS un fichier d'image ISO \&quot;Debian Live\&quot;...\n\n&quot;
    exit 1
  }

fichImgEn=&quot;$1&quot;
fichImgFr=&quot;${fichImgEn%-*}-Fr-${fichImgEn##*-}&quot;


fichRech=&quot;live.cfg&quot;
chOrigin=&quot;quiet splash&quot;
chAjout=&quot;lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-model=pc105 keyboard-layouts=fr keyboard-variant=latin9 timezone=Europe\/Paris utc=yes&quot;
fichTmp=&quot;/tmp/tmpAeffacer`date +%s`.dat&quot;
chRempl=&quot;$chOrigin $chAjout&quot;

blockSize=`isoinfo -d    -i &quot;${fichImgEn}&quot; | grep &quot;block size&quot;  | awk '{print $5}'`
valOffset=`isoinfo -l -R -i &quot;${fichImgEn}&quot; | grep &quot;${fichRech}&quot; | awk '{print $10}'`

dd bs=$blockSize count=1 skip=$valOffset if=&quot;${fichImgEn}&quot;                                   2&gt;/dev/null     |   \
sed &quot;s/$chOrigin/$chRempl/&quot;                                                                   &gt; &quot;${fichTmp}&quot; &amp;&amp;  \
dd bs=$blockSize count=1 seek=$valOffset if=&quot;${fichTmp}&quot; of=&quot;${fichImgEn}&quot; conv=notrunc,sync 2&gt;/dev/null     &amp;&amp;  \
mv &quot;${fichImgEn}&quot; &quot;${fichImgFr}&quot;                                                                             &amp;&amp;  \
rm &quot;${fichTmp}&quot;

printf &quot;\nVoilà voilà! \&quot;${fichImgFr}\&quot; est la version francisée.\n\n&quot;
&lt;/code&gt;</text>
      <sha1>j06s4n6h28flvxx0sf8lldgqi532cfu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5686</id>
      <parentid>5685</parentid>
      <timestamp>2014-07-12T08:26:03Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Description */ ajout &quot;latin9&quot;</comment>
      <text xml:space="preserve" bytes="26805">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue '''ligne des options de boot''' suivante qui permet de démarrer ma '''debian live''' directement en français.
&lt;code&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/code&gt;
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.

&lt;u&gt;'''NOTE:'''&lt;/u&gt; Bien sûr cette maipulation comme le script fonctionne avec tous les fichiers image ISO de type '''debian &lt;u&gt;live&lt;/u&gt;'''

== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'[http://caesar.acc.umu.se/debian-cd/current-live/amd64/iso-hybrid/debian-live-7.5.0-amd64-xfce-desktop.iso|image ISO téléchargée], juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-model=pc105 keyboard-layouts=fr keyboard-VARAINT=LATIN9 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite).
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/code&gt;

La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide. 
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│ Ctrl Key          HexCurse Keyboard Commands            │◆│ Function Keys  │
│                                                         │▒│                │
│ CTRL+?    Help     - you are reading it now             │▒│ Help     = F1  │
│ CTRL+S    Save     - saves the current file open        │▒│ Save     = F2  │
│ CTRL+O    Open     - opens a new file                   │▒│ Open     = F3  │
│ CTRL+G    Goto     - goto a specified address           │▒│ Goto     = F4  │
│ CTRL+F    Find     - search for a hex/ascii value       │▒│ Find     = F5  │
│ CTRL+A    HexAdres - toggle between hex/decimal address │▒│ HexAdres = F6  │
│ TAB       Hex Edit - toggle between hex/ASCII windows   │▒│ Hex Edit = F7  │
│ CTRL+Q    Quit     - exit out of the program            │▒│ Quit     = F8  │
│                                                         │▒│                │
│ CTRL+U    Page up  - scrolls one screen up              │▒│ Page up  = PGUP│
│ CTRL+D    Page down- scrolls one screen down            │▒│ Page down= PGDN│
│ CTRL+Z    Undo     - reverts last modification          │▒│                │
│ CTRL+T    Home     - returns to the top of the file     │▒│                │
│ CTRL+B    End      - jumps to the bottom of the file    │▒│                │
│                                                         │▒│                │
│                     Press enter to continue             │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/code&gt;
&lt;u&gt;'''NOTE:'''&lt;/u&gt; Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}



Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└Enter ascii value (): live-amd64                          v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/code&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.
&lt;code&gt;
┌33807006─────────────────────────────────────────────────┐^┌────────────────┐
│33807000 6C 61 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 │▒│label live-amd64│
│33807010 0A 09 6D 65 6E 75 20 6C 61 62 65 6C 20 5E 4C 69 │▒│..menu label ^Li│
│33807020 76 65 20 28 61 6D 64 36 34 29 0A 09 6D 65 6E 75 │▒│ve (amd64)..menu│
│33807030 20 64 65 66 61 75 6C 74 0A 09 6C 69 6E 75 78 20 │▒│ default..linux │
│33807040 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A 09 69 │▒│/live/vmlinuz..i│
│33807050 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E 69 74 │▒│nitrd /live/init│
│33807060 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 20 62 │▒│rd.img..append b│
│33807070 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 67 20 │▒│oot=live config │
│33807080 71 75 69 65 74 20 73 70 6C 61 73 68 0A 0A 6C 61 │▒│quiet splash..la│
│33807090 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 2D 66 │▒│bel live-amd64-f│
│338070A0 61 69 6C 73 61 66 65 0A 09 6D 65 6E 75 20 6C 61 │▒│ailsafe..menu la│
│338070B0 62 65 6C 20 5E 4C 69 76 65 20 28 61 6D 64 36 34 │▒│bel ^Live (amd64│
│338070C0 20 66 61 69 6C 73 61 66 65 29 0A 09 6C 69 6E 75 │▒│ failsafe)..linu│
│338070D0 78 20 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A │▒│x /live/vmlinuz.│
│338070E0 09 69 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E │▒│.initrd /live/in│
│338070F0 69 74 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 │▒│itrd.img..append│
│33807100 20 62 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 │▒│ boot=live confi│
│33807110 67 20 6D 65 6D 74 65 73 74 20 6E 6F 61 70 69 63 │▒│g memtest noapic│
│33807120 20 6E 6F 61 70 6D 20 6E 6F 64 6D 61 20 6E 6F 6D │▒│ noapm nodma nom│
│33807130 63 65 20 6E 6F 6C 61 70 69 63 20 6E 6F 6D 6F 64 │▒│ce nolapic nomod│
│33807140 65 73 65 74 20 6E 6F 73 6D 70 20 6E 6F 73 70 6C │▒│eset nosmp nospl│
│33807150 61 73 68 20 76 67 61 3D 6E 6F 72 6D 61 6C 0A 00 │▒│ash vga=normal..│
│33807160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │◆│................│
│338071D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/code&gt;
Une fois le curseur bien positionné, en haut à gauche de la fenêtre, on pourra lire le décalage depuis le début du fichier :&lt;br /&gt;
'''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Recopier 512 octets dans le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -m 2G -cpu host -boot d -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB).

Il ne reste plus qu'à supprimer les fichiers devenus inutiles :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
== Ou alors, utilisez un script. ==
&lt;code&gt;
#!/bin/sh -
#=================================================================================================
# NOM DU SCRIPT: isoLive2fr.sh
#
#       SYNTAXE: isoLive2fr &lt;chemin fichier image ISO Live&gt;
#
#           BUT: Ajouter les paramètres de boot à une image ISO Live debian
#                  de façon à ce qu'elle démarre directement en Français.
#
#     NÉCESSITE: &quot;isoinfo&quot; du paquetage &quot;genisoimage&quot;
#                &quot;dd&quot;      du paquetage &quot;coreutils&quot;
#
#        AUTEUR: MicP (debian-fr)
#          DATE: 10/07/2014
#-------------------------------------------------------------------------------------------------
# NOTES:
# Ce n'est qu'une ébauche de script inspiré par ceux qu'a posté fran.b dans le fil de discussion :
#  http://www.debian-fr.org/franciser-l-iso-debian-7-5-live-nonfree-moins-de-2-minutes-t48948.html
#
# Ça fonctionne, mais je reviendrai plus tard pour rajouter les contrôles d'erreur, et plus...
#=================================================================================================

test &quot;$1&quot; ||
  {
    printf &quot;Donnez un chemin d'image \&quot;ISO Live\&quot; debian en paramètre.\n&quot;;
    exit 1;
  }

isoinfo -d -i &quot;$1&quot; | grep &quot;Application id: DEBIAN LIVE&quot; || \
  {
    printf &quot;\n\&quot;${1}\&quot; n'est PAS un fichier d'image ISO \&quot;Debian Live\&quot;...\n\n&quot;
    exit 1
  }

fichImgEn=&quot;$1&quot;
fichImgFr=&quot;${fichImgEn%-*}-Fr-${fichImgEn##*-}&quot;


fichRech=&quot;live.cfg&quot;
chOrigin=&quot;quiet splash&quot;
chAjout=&quot;lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-model=pc105 keyboard-layouts=fr keyboard-variant=latin9 timezone=Europe\/Paris utc=yes&quot;
fichTmp=&quot;/tmp/tmpAeffacer`date +%s`.dat&quot;
chRempl=&quot;$chOrigin $chAjout&quot;

blockSize=`isoinfo -d    -i &quot;${fichImgEn}&quot; | grep &quot;block size&quot;  | awk '{print $5}'`
valOffset=`isoinfo -l -R -i &quot;${fichImgEn}&quot; | grep &quot;${fichRech}&quot; | awk '{print $10}'`

dd bs=$blockSize count=1 skip=$valOffset if=&quot;${fichImgEn}&quot;                                   2&gt;/dev/null     |   \
sed &quot;s/$chOrigin/$chRempl/&quot;                                                                   &gt; &quot;${fichTmp}&quot; &amp;&amp;  \
dd bs=$blockSize count=1 seek=$valOffset if=&quot;${fichTmp}&quot; of=&quot;${fichImgEn}&quot; conv=notrunc,sync 2&gt;/dev/null     &amp;&amp;  \
mv &quot;${fichImgEn}&quot; &quot;${fichImgFr}&quot;                                                                             &amp;&amp;  \
rm &quot;${fichTmp}&quot;

printf &quot;\nVoilà voilà! \&quot;${fichImgFr}\&quot; est la version francisée.\n\n&quot;
&lt;/code&gt;</text>
      <sha1>9d9o5lfllx3eut1jd8lkq4anb8v1hw3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5687</id>
      <parentid>5686</parentid>
      <timestamp>2014-07-12T08:27:41Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Description */</comment>
      <text xml:space="preserve" bytes="26805">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue '''ligne des options de boot''' suivante qui permet de démarrer ma '''debian live''' directement en français.
&lt;code&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes&lt;/code&gt;
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.

&lt;u&gt;'''NOTE:'''&lt;/u&gt; Bien sûr cette maipulation comme le script fonctionne avec tous les fichiers image ISO de type '''debian &lt;u&gt;live&lt;/u&gt;'''

== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'[http://caesar.acc.umu.se/debian-cd/current-live/amd64/iso-hybrid/debian-live-7.5.0-amd64-xfce-desktop.iso|image ISO téléchargée], juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-model=pc105 keyboard-layouts=fr keyboard-variant=latin9 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite).
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/code&gt;

La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide. 
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│ Ctrl Key          HexCurse Keyboard Commands            │◆│ Function Keys  │
│                                                         │▒│                │
│ CTRL+?    Help     - you are reading it now             │▒│ Help     = F1  │
│ CTRL+S    Save     - saves the current file open        │▒│ Save     = F2  │
│ CTRL+O    Open     - opens a new file                   │▒│ Open     = F3  │
│ CTRL+G    Goto     - goto a specified address           │▒│ Goto     = F4  │
│ CTRL+F    Find     - search for a hex/ascii value       │▒│ Find     = F5  │
│ CTRL+A    HexAdres - toggle between hex/decimal address │▒│ HexAdres = F6  │
│ TAB       Hex Edit - toggle between hex/ASCII windows   │▒│ Hex Edit = F7  │
│ CTRL+Q    Quit     - exit out of the program            │▒│ Quit     = F8  │
│                                                         │▒│                │
│ CTRL+U    Page up  - scrolls one screen up              │▒│ Page up  = PGUP│
│ CTRL+D    Page down- scrolls one screen down            │▒│ Page down= PGDN│
│ CTRL+Z    Undo     - reverts last modification          │▒│                │
│ CTRL+T    Home     - returns to the top of the file     │▒│                │
│ CTRL+B    End      - jumps to the bottom of the file    │▒│                │
│                                                         │▒│                │
│                     Press enter to continue             │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/code&gt;
&lt;u&gt;'''NOTE:'''&lt;/u&gt; Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}



Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└Enter ascii value (): live-amd64                          v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/code&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.
&lt;code&gt;
┌33807006─────────────────────────────────────────────────┐^┌────────────────┐
│33807000 6C 61 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 │▒│label live-amd64│
│33807010 0A 09 6D 65 6E 75 20 6C 61 62 65 6C 20 5E 4C 69 │▒│..menu label ^Li│
│33807020 76 65 20 28 61 6D 64 36 34 29 0A 09 6D 65 6E 75 │▒│ve (amd64)..menu│
│33807030 20 64 65 66 61 75 6C 74 0A 09 6C 69 6E 75 78 20 │▒│ default..linux │
│33807040 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A 09 69 │▒│/live/vmlinuz..i│
│33807050 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E 69 74 │▒│nitrd /live/init│
│33807060 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 20 62 │▒│rd.img..append b│
│33807070 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 67 20 │▒│oot=live config │
│33807080 71 75 69 65 74 20 73 70 6C 61 73 68 0A 0A 6C 61 │▒│quiet splash..la│
│33807090 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 2D 66 │▒│bel live-amd64-f│
│338070A0 61 69 6C 73 61 66 65 0A 09 6D 65 6E 75 20 6C 61 │▒│ailsafe..menu la│
│338070B0 62 65 6C 20 5E 4C 69 76 65 20 28 61 6D 64 36 34 │▒│bel ^Live (amd64│
│338070C0 20 66 61 69 6C 73 61 66 65 29 0A 09 6C 69 6E 75 │▒│ failsafe)..linu│
│338070D0 78 20 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A │▒│x /live/vmlinuz.│
│338070E0 09 69 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E │▒│.initrd /live/in│
│338070F0 69 74 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 │▒│itrd.img..append│
│33807100 20 62 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 │▒│ boot=live confi│
│33807110 67 20 6D 65 6D 74 65 73 74 20 6E 6F 61 70 69 63 │▒│g memtest noapic│
│33807120 20 6E 6F 61 70 6D 20 6E 6F 64 6D 61 20 6E 6F 6D │▒│ noapm nodma nom│
│33807130 63 65 20 6E 6F 6C 61 70 69 63 20 6E 6F 6D 6F 64 │▒│ce nolapic nomod│
│33807140 65 73 65 74 20 6E 6F 73 6D 70 20 6E 6F 73 70 6C │▒│eset nosmp nospl│
│33807150 61 73 68 20 76 67 61 3D 6E 6F 72 6D 61 6C 0A 00 │▒│ash vga=normal..│
│33807160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │◆│................│
│338071D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/code&gt;
Une fois le curseur bien positionné, en haut à gauche de la fenêtre, on pourra lire le décalage depuis le début du fichier :&lt;br /&gt;
'''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Recopier 512 octets dans le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -m 2G -cpu host -boot d -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB).

Il ne reste plus qu'à supprimer les fichiers devenus inutiles :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
== Ou alors, utilisez un script. ==
&lt;code&gt;
#!/bin/sh -
#=================================================================================================
# NOM DU SCRIPT: isoLive2fr.sh
#
#       SYNTAXE: isoLive2fr &lt;chemin fichier image ISO Live&gt;
#
#           BUT: Ajouter les paramètres de boot à une image ISO Live debian
#                  de façon à ce qu'elle démarre directement en Français.
#
#     NÉCESSITE: &quot;isoinfo&quot; du paquetage &quot;genisoimage&quot;
#                &quot;dd&quot;      du paquetage &quot;coreutils&quot;
#
#        AUTEUR: MicP (debian-fr)
#          DATE: 10/07/2014
#-------------------------------------------------------------------------------------------------
# NOTES:
# Ce n'est qu'une ébauche de script inspiré par ceux qu'a posté fran.b dans le fil de discussion :
#  http://www.debian-fr.org/franciser-l-iso-debian-7-5-live-nonfree-moins-de-2-minutes-t48948.html
#
# Ça fonctionne, mais je reviendrai plus tard pour rajouter les contrôles d'erreur, et plus...
#=================================================================================================

test &quot;$1&quot; ||
  {
    printf &quot;Donnez un chemin d'image \&quot;ISO Live\&quot; debian en paramètre.\n&quot;;
    exit 1;
  }

isoinfo -d -i &quot;$1&quot; | grep &quot;Application id: DEBIAN LIVE&quot; || \
  {
    printf &quot;\n\&quot;${1}\&quot; n'est PAS un fichier d'image ISO \&quot;Debian Live\&quot;...\n\n&quot;
    exit 1
  }

fichImgEn=&quot;$1&quot;
fichImgFr=&quot;${fichImgEn%-*}-Fr-${fichImgEn##*-}&quot;


fichRech=&quot;live.cfg&quot;
chOrigin=&quot;quiet splash&quot;
chAjout=&quot;lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-model=pc105 keyboard-layouts=fr keyboard-variant=latin9 timezone=Europe\/Paris utc=yes&quot;
fichTmp=&quot;/tmp/tmpAeffacer`date +%s`.dat&quot;
chRempl=&quot;$chOrigin $chAjout&quot;

blockSize=`isoinfo -d    -i &quot;${fichImgEn}&quot; | grep &quot;block size&quot;  | awk '{print $5}'`
valOffset=`isoinfo -l -R -i &quot;${fichImgEn}&quot; | grep &quot;${fichRech}&quot; | awk '{print $10}'`

dd bs=$blockSize count=1 skip=$valOffset if=&quot;${fichImgEn}&quot;                                   2&gt;/dev/null     |   \
sed &quot;s/$chOrigin/$chRempl/&quot;                                                                   &gt; &quot;${fichTmp}&quot; &amp;&amp;  \
dd bs=$blockSize count=1 seek=$valOffset if=&quot;${fichTmp}&quot; of=&quot;${fichImgEn}&quot; conv=notrunc,sync 2&gt;/dev/null     &amp;&amp;  \
mv &quot;${fichImgEn}&quot; &quot;${fichImgFr}&quot;                                                                             &amp;&amp;  \
rm &quot;${fichTmp}&quot;

printf &quot;\nVoilà voilà! \&quot;${fichImgFr}\&quot; est la version francisée.\n\n&quot;
&lt;/code&gt;</text>
      <sha1>ca1h7rl08lzpb7iqlzarnchzj3n1zxd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5688</id>
      <parentid>5687</parentid>
      <timestamp>2014-07-12T08:28:34Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Introduction */</comment>
      <text xml:space="preserve" bytes="26829">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue '''ligne des options de boot''' suivante qui permet de démarrer ma '''debian live''' directement en français.
&lt;code&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-model=pc105 keyboard-layouts=fr keyboard-variant=latin9 timezone=Europe/Paris utc=yes&lt;/code&gt;
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.

&lt;u&gt;'''NOTE:'''&lt;/u&gt; Bien sûr cette maipulation comme le script fonctionne avec tous les fichiers image ISO de type '''debian &lt;u&gt;live&lt;/u&gt;'''

== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'[http://caesar.acc.umu.se/debian-cd/current-live/amd64/iso-hybrid/debian-live-7.5.0-amd64-xfce-desktop.iso|image ISO téléchargée], juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-model=pc105 keyboard-layouts=fr keyboard-variant=latin9 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite).
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/code&gt;

La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide. 
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│ Ctrl Key          HexCurse Keyboard Commands            │◆│ Function Keys  │
│                                                         │▒│                │
│ CTRL+?    Help     - you are reading it now             │▒│ Help     = F1  │
│ CTRL+S    Save     - saves the current file open        │▒│ Save     = F2  │
│ CTRL+O    Open     - opens a new file                   │▒│ Open     = F3  │
│ CTRL+G    Goto     - goto a specified address           │▒│ Goto     = F4  │
│ CTRL+F    Find     - search for a hex/ascii value       │▒│ Find     = F5  │
│ CTRL+A    HexAdres - toggle between hex/decimal address │▒│ HexAdres = F6  │
│ TAB       Hex Edit - toggle between hex/ASCII windows   │▒│ Hex Edit = F7  │
│ CTRL+Q    Quit     - exit out of the program            │▒│ Quit     = F8  │
│                                                         │▒│                │
│ CTRL+U    Page up  - scrolls one screen up              │▒│ Page up  = PGUP│
│ CTRL+D    Page down- scrolls one screen down            │▒│ Page down= PGDN│
│ CTRL+Z    Undo     - reverts last modification          │▒│                │
│ CTRL+T    Home     - returns to the top of the file     │▒│                │
│ CTRL+B    End      - jumps to the bottom of the file    │▒│                │
│                                                         │▒│                │
│                     Press enter to continue             │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/code&gt;
&lt;u&gt;'''NOTE:'''&lt;/u&gt; Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}



Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└Enter ascii value (): live-amd64                          v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/code&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.
&lt;code&gt;
┌33807006─────────────────────────────────────────────────┐^┌────────────────┐
│33807000 6C 61 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 │▒│label live-amd64│
│33807010 0A 09 6D 65 6E 75 20 6C 61 62 65 6C 20 5E 4C 69 │▒│..menu label ^Li│
│33807020 76 65 20 28 61 6D 64 36 34 29 0A 09 6D 65 6E 75 │▒│ve (amd64)..menu│
│33807030 20 64 65 66 61 75 6C 74 0A 09 6C 69 6E 75 78 20 │▒│ default..linux │
│33807040 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A 09 69 │▒│/live/vmlinuz..i│
│33807050 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E 69 74 │▒│nitrd /live/init│
│33807060 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 20 62 │▒│rd.img..append b│
│33807070 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 67 20 │▒│oot=live config │
│33807080 71 75 69 65 74 20 73 70 6C 61 73 68 0A 0A 6C 61 │▒│quiet splash..la│
│33807090 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 2D 66 │▒│bel live-amd64-f│
│338070A0 61 69 6C 73 61 66 65 0A 09 6D 65 6E 75 20 6C 61 │▒│ailsafe..menu la│
│338070B0 62 65 6C 20 5E 4C 69 76 65 20 28 61 6D 64 36 34 │▒│bel ^Live (amd64│
│338070C0 20 66 61 69 6C 73 61 66 65 29 0A 09 6C 69 6E 75 │▒│ failsafe)..linu│
│338070D0 78 20 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A │▒│x /live/vmlinuz.│
│338070E0 09 69 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E │▒│.initrd /live/in│
│338070F0 69 74 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 │▒│itrd.img..append│
│33807100 20 62 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 │▒│ boot=live confi│
│33807110 67 20 6D 65 6D 74 65 73 74 20 6E 6F 61 70 69 63 │▒│g memtest noapic│
│33807120 20 6E 6F 61 70 6D 20 6E 6F 64 6D 61 20 6E 6F 6D │▒│ noapm nodma nom│
│33807130 63 65 20 6E 6F 6C 61 70 69 63 20 6E 6F 6D 6F 64 │▒│ce nolapic nomod│
│33807140 65 73 65 74 20 6E 6F 73 6D 70 20 6E 6F 73 70 6C │▒│eset nosmp nospl│
│33807150 61 73 68 20 76 67 61 3D 6E 6F 72 6D 61 6C 0A 00 │▒│ash vga=normal..│
│33807160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │◆│................│
│338071D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/code&gt;
Une fois le curseur bien positionné, en haut à gauche de la fenêtre, on pourra lire le décalage depuis le début du fichier :&lt;br /&gt;
'''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Recopier 512 octets dans le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -m 2G -cpu host -boot d -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB).

Il ne reste plus qu'à supprimer les fichiers devenus inutiles :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
== Ou alors, utilisez un script. ==
&lt;code&gt;
#!/bin/sh -
#=================================================================================================
# NOM DU SCRIPT: isoLive2fr.sh
#
#       SYNTAXE: isoLive2fr &lt;chemin fichier image ISO Live&gt;
#
#           BUT: Ajouter les paramètres de boot à une image ISO Live debian
#                  de façon à ce qu'elle démarre directement en Français.
#
#     NÉCESSITE: &quot;isoinfo&quot; du paquetage &quot;genisoimage&quot;
#                &quot;dd&quot;      du paquetage &quot;coreutils&quot;
#
#        AUTEUR: MicP (debian-fr)
#          DATE: 10/07/2014
#-------------------------------------------------------------------------------------------------
# NOTES:
# Ce n'est qu'une ébauche de script inspiré par ceux qu'a posté fran.b dans le fil de discussion :
#  http://www.debian-fr.org/franciser-l-iso-debian-7-5-live-nonfree-moins-de-2-minutes-t48948.html
#
# Ça fonctionne, mais je reviendrai plus tard pour rajouter les contrôles d'erreur, et plus...
#=================================================================================================

test &quot;$1&quot; ||
  {
    printf &quot;Donnez un chemin d'image \&quot;ISO Live\&quot; debian en paramètre.\n&quot;;
    exit 1;
  }

isoinfo -d -i &quot;$1&quot; | grep &quot;Application id: DEBIAN LIVE&quot; || \
  {
    printf &quot;\n\&quot;${1}\&quot; n'est PAS un fichier d'image ISO \&quot;Debian Live\&quot;...\n\n&quot;
    exit 1
  }

fichImgEn=&quot;$1&quot;
fichImgFr=&quot;${fichImgEn%-*}-Fr-${fichImgEn##*-}&quot;


fichRech=&quot;live.cfg&quot;
chOrigin=&quot;quiet splash&quot;
chAjout=&quot;lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-model=pc105 keyboard-layouts=fr keyboard-variant=latin9 timezone=Europe\/Paris utc=yes&quot;
fichTmp=&quot;/tmp/tmpAeffacer`date +%s`.dat&quot;
chRempl=&quot;$chOrigin $chAjout&quot;

blockSize=`isoinfo -d    -i &quot;${fichImgEn}&quot; | grep &quot;block size&quot;  | awk '{print $5}'`
valOffset=`isoinfo -l -R -i &quot;${fichImgEn}&quot; | grep &quot;${fichRech}&quot; | awk '{print $10}'`

dd bs=$blockSize count=1 skip=$valOffset if=&quot;${fichImgEn}&quot;                                   2&gt;/dev/null     |   \
sed &quot;s/$chOrigin/$chRempl/&quot;                                                                   &gt; &quot;${fichTmp}&quot; &amp;&amp;  \
dd bs=$blockSize count=1 seek=$valOffset if=&quot;${fichTmp}&quot; of=&quot;${fichImgEn}&quot; conv=notrunc,sync 2&gt;/dev/null     &amp;&amp;  \
mv &quot;${fichImgEn}&quot; &quot;${fichImgFr}&quot;                                                                             &amp;&amp;  \
rm &quot;${fichTmp}&quot;

printf &quot;\nVoilà voilà! \&quot;${fichImgFr}\&quot; est la version francisée.\n\n&quot;
&lt;/code&gt;</text>
      <sha1>33h4gsx62wu96ve2r2p6htj5jivw2g5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5689</id>
      <parentid>5688</parentid>
      <timestamp>2014-07-13T06:15:11Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Ou alors, utilisez un script. */ MàJ script</comment>
      <text xml:space="preserve" bytes="26898">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue '''ligne des options de boot''' suivante qui permet de démarrer ma '''debian live''' directement en français.
&lt;code&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-model=pc105 keyboard-layouts=fr keyboard-variant=latin9 timezone=Europe/Paris utc=yes&lt;/code&gt;
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.

&lt;u&gt;'''NOTE:'''&lt;/u&gt; Bien sûr cette maipulation comme le script fonctionne avec tous les fichiers image ISO de type '''debian &lt;u&gt;live&lt;/u&gt;'''

== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'[http://caesar.acc.umu.se/debian-cd/current-live/amd64/iso-hybrid/debian-live-7.5.0-amd64-xfce-desktop.iso|image ISO téléchargée], juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-model=pc105 keyboard-layouts=fr keyboard-variant=latin9 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite).
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/code&gt;

La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide. 
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│ Ctrl Key          HexCurse Keyboard Commands            │◆│ Function Keys  │
│                                                         │▒│                │
│ CTRL+?    Help     - you are reading it now             │▒│ Help     = F1  │
│ CTRL+S    Save     - saves the current file open        │▒│ Save     = F2  │
│ CTRL+O    Open     - opens a new file                   │▒│ Open     = F3  │
│ CTRL+G    Goto     - goto a specified address           │▒│ Goto     = F4  │
│ CTRL+F    Find     - search for a hex/ascii value       │▒│ Find     = F5  │
│ CTRL+A    HexAdres - toggle between hex/decimal address │▒│ HexAdres = F6  │
│ TAB       Hex Edit - toggle between hex/ASCII windows   │▒│ Hex Edit = F7  │
│ CTRL+Q    Quit     - exit out of the program            │▒│ Quit     = F8  │
│                                                         │▒│                │
│ CTRL+U    Page up  - scrolls one screen up              │▒│ Page up  = PGUP│
│ CTRL+D    Page down- scrolls one screen down            │▒│ Page down= PGDN│
│ CTRL+Z    Undo     - reverts last modification          │▒│                │
│ CTRL+T    Home     - returns to the top of the file     │▒│                │
│ CTRL+B    End      - jumps to the bottom of the file    │▒│                │
│                                                         │▒│                │
│                     Press enter to continue             │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/code&gt;
&lt;u&gt;'''NOTE:'''&lt;/u&gt; Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}



Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└Enter ascii value (): live-amd64                          v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/code&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.
&lt;code&gt;
┌33807006─────────────────────────────────────────────────┐^┌────────────────┐
│33807000 6C 61 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 │▒│label live-amd64│
│33807010 0A 09 6D 65 6E 75 20 6C 61 62 65 6C 20 5E 4C 69 │▒│..menu label ^Li│
│33807020 76 65 20 28 61 6D 64 36 34 29 0A 09 6D 65 6E 75 │▒│ve (amd64)..menu│
│33807030 20 64 65 66 61 75 6C 74 0A 09 6C 69 6E 75 78 20 │▒│ default..linux │
│33807040 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A 09 69 │▒│/live/vmlinuz..i│
│33807050 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E 69 74 │▒│nitrd /live/init│
│33807060 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 20 62 │▒│rd.img..append b│
│33807070 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 67 20 │▒│oot=live config │
│33807080 71 75 69 65 74 20 73 70 6C 61 73 68 0A 0A 6C 61 │▒│quiet splash..la│
│33807090 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 2D 66 │▒│bel live-amd64-f│
│338070A0 61 69 6C 73 61 66 65 0A 09 6D 65 6E 75 20 6C 61 │▒│ailsafe..menu la│
│338070B0 62 65 6C 20 5E 4C 69 76 65 20 28 61 6D 64 36 34 │▒│bel ^Live (amd64│
│338070C0 20 66 61 69 6C 73 61 66 65 29 0A 09 6C 69 6E 75 │▒│ failsafe)..linu│
│338070D0 78 20 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A │▒│x /live/vmlinuz.│
│338070E0 09 69 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E │▒│.initrd /live/in│
│338070F0 69 74 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 │▒│itrd.img..append│
│33807100 20 62 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 │▒│ boot=live confi│
│33807110 67 20 6D 65 6D 74 65 73 74 20 6E 6F 61 70 69 63 │▒│g memtest noapic│
│33807120 20 6E 6F 61 70 6D 20 6E 6F 64 6D 61 20 6E 6F 6D │▒│ noapm nodma nom│
│33807130 63 65 20 6E 6F 6C 61 70 69 63 20 6E 6F 6D 6F 64 │▒│ce nolapic nomod│
│33807140 65 73 65 74 20 6E 6F 73 6D 70 20 6E 6F 73 70 6C │▒│eset nosmp nospl│
│33807150 61 73 68 20 76 67 61 3D 6E 6F 72 6D 61 6C 0A 00 │▒│ash vga=normal..│
│33807160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │◆│................│
│338071D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/code&gt;
Une fois le curseur bien positionné, en haut à gauche de la fenêtre, on pourra lire le décalage depuis le début du fichier :&lt;br /&gt;
'''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Recopier 512 octets dans le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -m 2G -cpu host -boot d -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB).

Il ne reste plus qu'à supprimer les fichiers devenus inutiles :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
== Ou alors, utilisez un script. ==
&lt;code&gt;
#!/bin/sh -
#=================================================================================================
# NOM DU SCRIPT: isoLive2fr.sh
#
#       SYNTAXE: isoLive2fr &lt;chemin fichier image ISO Live&gt;
#
#           BUT: Ajouter les paramètres de boot à une image ISO Live debian
#                  de façon à ce qu'elle démarre directement en Français.
#
#     NÉCESSITE: &quot;isoinfo&quot; du paquetage &quot;genisoimage&quot;
#                &quot;dd&quot;      du paquetage &quot;coreutils&quot;
#
#        AUTEUR: MicP (debian-fr)
#          DATE: 10/07/2014
#-------------------------------------------------------------------------------------------------
# NOTES:
# Ce n'est qu'une ébauche de script inspiré par ceux qu'a posté fran.b dans le fil de discussion :
#  http://www.debian-fr.org/franciser-l-iso-debian-7-5-live-nonfree-moins-de-2-minutes-t48948.html
#
# Ça fonctionne, mais je reviendrai plus tard pour rajouter les contrôles d'erreur, et plus...
#=================================================================================================

test &quot;$fichImgEn&quot; ||
  {
    printf &quot;\nDonnez un chemin d'image \&quot;ISO Live\&quot; debian en paramètre.\n&quot;
    exit 1
  }

isoinfo -d -i &quot;$fichImgEn&quot; | grep &quot;Application id: DEBIAN LIVE&quot; || \
  {
    printf &quot;\n\&quot;${fichImgEn}\&quot; n'est PAS un fichier d'image ISO \&quot;Debian Live\&quot;...\n\n&quot;
    exit 1
  }

frAins=&quot;-FR&quot;
insApres=&quot;live&quot;

fichImgFr=&quot;${fichImgEn%$insApres*}${insApres}${frAins}${fichImgEn#*$insApres}&quot;

fichRech=&quot;live.cfg&quot;
chOrigin=&quot;quiet splash&quot;
chAjout=&quot;lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-model=pc105 keyboard-layouts=fr keyboard-variant=latin9 timezone=Europe\/Paris utc=yes&quot;
fichTmp=&quot;/tmp/tmpAeffacer`date +%s`.dat&quot;
chRempl=&quot;$chOrigin $chAjout&quot;

blockSize=`isoinfo -d    -i &quot;${fichImgEn}&quot; | grep &quot;block size&quot;  | awk '{print $5}'`
valOffset=`isoinfo -l -R -i &quot;${fichImgEn}&quot; | grep &quot;${fichRech}&quot; | awk '{print $10}'`

dd bs=$blockSize count=1 skip=$valOffset if=&quot;${fichImgEn}&quot;                                   2&gt;/dev/null     |   \
sed &quot;s/$chOrigin/$chRempl/&quot;                                                                   &gt; &quot;${fichTmp}&quot; &amp;&amp;  \
dd bs=$blockSize count=1 seek=$valOffset if=&quot;${fichTmp}&quot; of=&quot;${fichImgEn}&quot; conv=notrunc,sync 2&gt;/dev/null     &amp;&amp;  \
mv &quot;${fichImgEn}&quot; &quot;${fichImgFr}&quot;                                                                             &amp;&amp;  \
rm &quot;${fichTmp}&quot;

printf &quot;\nVoilà voilà! \&quot;${fichImgFr}\&quot; est la version francisée.\n\n&quot;
&lt;/code&gt;</text>
      <sha1>s215k8w29ysb7l4bfzwvx4c3yx5ifhv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5690</id>
      <parentid>5689</parentid>
      <timestamp>2014-07-13T06:17:13Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Ou alors, utilisez un script. */ MàJ en-tête</comment>
      <text xml:space="preserve" bytes="27064">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue '''ligne des options de boot''' suivante qui permet de démarrer ma '''debian live''' directement en français.
&lt;code&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-model=pc105 keyboard-layouts=fr keyboard-variant=latin9 timezone=Europe/Paris utc=yes&lt;/code&gt;
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.

&lt;u&gt;'''NOTE:'''&lt;/u&gt; Bien sûr cette maipulation comme le script fonctionne avec tous les fichiers image ISO de type '''debian &lt;u&gt;live&lt;/u&gt;'''

== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'[http://caesar.acc.umu.se/debian-cd/current-live/amd64/iso-hybrid/debian-live-7.5.0-amd64-xfce-desktop.iso|image ISO téléchargée], juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-model=pc105 keyboard-layouts=fr keyboard-variant=latin9 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite).
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/code&gt;

La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide. 
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│ Ctrl Key          HexCurse Keyboard Commands            │◆│ Function Keys  │
│                                                         │▒│                │
│ CTRL+?    Help     - you are reading it now             │▒│ Help     = F1  │
│ CTRL+S    Save     - saves the current file open        │▒│ Save     = F2  │
│ CTRL+O    Open     - opens a new file                   │▒│ Open     = F3  │
│ CTRL+G    Goto     - goto a specified address           │▒│ Goto     = F4  │
│ CTRL+F    Find     - search for a hex/ascii value       │▒│ Find     = F5  │
│ CTRL+A    HexAdres - toggle between hex/decimal address │▒│ HexAdres = F6  │
│ TAB       Hex Edit - toggle between hex/ASCII windows   │▒│ Hex Edit = F7  │
│ CTRL+Q    Quit     - exit out of the program            │▒│ Quit     = F8  │
│                                                         │▒│                │
│ CTRL+U    Page up  - scrolls one screen up              │▒│ Page up  = PGUP│
│ CTRL+D    Page down- scrolls one screen down            │▒│ Page down= PGDN│
│ CTRL+Z    Undo     - reverts last modification          │▒│                │
│ CTRL+T    Home     - returns to the top of the file     │▒│                │
│ CTRL+B    End      - jumps to the bottom of the file    │▒│                │
│                                                         │▒│                │
│                     Press enter to continue             │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/code&gt;
&lt;u&gt;'''NOTE:'''&lt;/u&gt; Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}



Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└Enter ascii value (): live-amd64                          v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/code&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.
&lt;code&gt;
┌33807006─────────────────────────────────────────────────┐^┌────────────────┐
│33807000 6C 61 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 │▒│label live-amd64│
│33807010 0A 09 6D 65 6E 75 20 6C 61 62 65 6C 20 5E 4C 69 │▒│..menu label ^Li│
│33807020 76 65 20 28 61 6D 64 36 34 29 0A 09 6D 65 6E 75 │▒│ve (amd64)..menu│
│33807030 20 64 65 66 61 75 6C 74 0A 09 6C 69 6E 75 78 20 │▒│ default..linux │
│33807040 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A 09 69 │▒│/live/vmlinuz..i│
│33807050 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E 69 74 │▒│nitrd /live/init│
│33807060 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 20 62 │▒│rd.img..append b│
│33807070 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 67 20 │▒│oot=live config │
│33807080 71 75 69 65 74 20 73 70 6C 61 73 68 0A 0A 6C 61 │▒│quiet splash..la│
│33807090 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 2D 66 │▒│bel live-amd64-f│
│338070A0 61 69 6C 73 61 66 65 0A 09 6D 65 6E 75 20 6C 61 │▒│ailsafe..menu la│
│338070B0 62 65 6C 20 5E 4C 69 76 65 20 28 61 6D 64 36 34 │▒│bel ^Live (amd64│
│338070C0 20 66 61 69 6C 73 61 66 65 29 0A 09 6C 69 6E 75 │▒│ failsafe)..linu│
│338070D0 78 20 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A │▒│x /live/vmlinuz.│
│338070E0 09 69 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E │▒│.initrd /live/in│
│338070F0 69 74 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 │▒│itrd.img..append│
│33807100 20 62 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 │▒│ boot=live confi│
│33807110 67 20 6D 65 6D 74 65 73 74 20 6E 6F 61 70 69 63 │▒│g memtest noapic│
│33807120 20 6E 6F 61 70 6D 20 6E 6F 64 6D 61 20 6E 6F 6D │▒│ noapm nodma nom│
│33807130 63 65 20 6E 6F 6C 61 70 69 63 20 6E 6F 6D 6F 64 │▒│ce nolapic nomod│
│33807140 65 73 65 74 20 6E 6F 73 6D 70 20 6E 6F 73 70 6C │▒│eset nosmp nospl│
│33807150 61 73 68 20 76 67 61 3D 6E 6F 72 6D 61 6C 0A 00 │▒│ash vga=normal..│
│33807160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │◆│................│
│338071D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/code&gt;
Une fois le curseur bien positionné, en haut à gauche de la fenêtre, on pourra lire le décalage depuis le début du fichier :&lt;br /&gt;
'''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Recopier 512 octets dans le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -m 2G -cpu host -boot d -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB).

Il ne reste plus qu'à supprimer les fichiers devenus inutiles :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
== Ou alors, utilisez un script. ==
&lt;code&gt;
#!/bin/sh -
#=================================================================================================
#        NOM: isoLive2fr.sh
#
#    SYNTAXE: isoLive2fr &lt;fichier image ISO Live&gt;
#
#        BUT: Ajouter les paramètres de boot
#               dans un fichier image ISO Live debian,
#               de façon à ce qu'elle démarre en Français.
#
#  NÉCESSITE: &quot;isoinfo&quot; du paquetage &quot;genisoimage&quot;
#             &quot;dd&quot;      du paquetage &quot;coreutils&quot;
#             &quot;awk&quot;     du paquetage &quot;gawk&quot;
#             &quot;grep&quot;    du paquetage &quot;grep&quot;
#             &quot;sed&quot;     du paquetage &quot;sed&quot;
#
#     AUTEUR: MicP (debian-fr)
#
#       DATE: 12/07/2014
#    VERSION: 0.02
#
#-------------------------------------------------------------------------------------------------
# NOTES: Ce n'est qu'une ébauche de script inspiré par ceux qui ont été postés par fran.b
#         dans le fil de discussion suivant :
# http://www.debian-fr.org/franciser-l-iso-debian-7-5-live-nonfree-moins-de-2-minutes-t48948.html
#
# Ça fonctionne, mais je reviendrai plus tard pour rajouter les contrôles d'erreur, et plus...
#=================================================================================================

test &quot;$fichImgEn&quot; ||
  {
    printf &quot;\nDonnez un chemin d'image \&quot;ISO Live\&quot; debian en paramètre.\n&quot;
    exit 1
  }

isoinfo -d -i &quot;$fichImgEn&quot; | grep &quot;Application id: DEBIAN LIVE&quot; || \
  {
    printf &quot;\n\&quot;${fichImgEn}\&quot; n'est PAS un fichier d'image ISO \&quot;Debian Live\&quot;...\n\n&quot;
    exit 1
  }

frAins=&quot;-FR&quot;
insApres=&quot;live&quot;

fichImgFr=&quot;${fichImgEn%$insApres*}${insApres}${frAins}${fichImgEn#*$insApres}&quot;

fichRech=&quot;live.cfg&quot;
chOrigin=&quot;quiet splash&quot;
chAjout=&quot;lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-model=pc105 keyboard-layouts=fr keyboard-variant=latin9 timezone=Europe\/Paris utc=yes&quot;
fichTmp=&quot;/tmp/tmpAeffacer`date +%s`.dat&quot;
chRempl=&quot;$chOrigin $chAjout&quot;

blockSize=`isoinfo -d    -i &quot;${fichImgEn}&quot; | grep &quot;block size&quot;  | awk '{print $5}'`
valOffset=`isoinfo -l -R -i &quot;${fichImgEn}&quot; | grep &quot;${fichRech}&quot; | awk '{print $10}'`

dd bs=$blockSize count=1 skip=$valOffset if=&quot;${fichImgEn}&quot;                                   2&gt;/dev/null     |   \
sed &quot;s/$chOrigin/$chRempl/&quot;                                                                   &gt; &quot;${fichTmp}&quot; &amp;&amp;  \
dd bs=$blockSize count=1 seek=$valOffset if=&quot;${fichTmp}&quot; of=&quot;${fichImgEn}&quot; conv=notrunc,sync 2&gt;/dev/null     &amp;&amp;  \
mv &quot;${fichImgEn}&quot; &quot;${fichImgFr}&quot;                                                                             &amp;&amp;  \
rm &quot;${fichTmp}&quot;

printf &quot;\nVoilà voilà! \&quot;${fichImgFr}\&quot; est la version francisée.\n\n&quot;
&lt;/code&gt;</text>
      <sha1>4gyure6wglz986rcvqrh2mk75i8zpce</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5696</id>
      <parentid>5690</parentid>
      <timestamp>2014-07-18T09:51:10Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Ou alors, utilisez un script. */ nvlle version script</comment>
      <text xml:space="preserve" bytes="32916">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue '''ligne des options de boot''' suivante qui permet de démarrer ma '''debian live''' directement en français.
&lt;code&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-model=pc105 keyboard-layouts=fr keyboard-variant=latin9 timezone=Europe/Paris utc=yes&lt;/code&gt;
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.

&lt;u&gt;'''NOTE:'''&lt;/u&gt; Bien sûr cette maipulation comme le script fonctionne avec tous les fichiers image ISO de type '''debian &lt;u&gt;live&lt;/u&gt;'''

== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'[http://caesar.acc.umu.se/debian-cd/current-live/amd64/iso-hybrid/debian-live-7.5.0-amd64-xfce-desktop.iso|image ISO téléchargée], juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-model=pc105 keyboard-layouts=fr keyboard-variant=latin9 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite).
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/code&gt;

La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide. 
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│ Ctrl Key          HexCurse Keyboard Commands            │◆│ Function Keys  │
│                                                         │▒│                │
│ CTRL+?    Help     - you are reading it now             │▒│ Help     = F1  │
│ CTRL+S    Save     - saves the current file open        │▒│ Save     = F2  │
│ CTRL+O    Open     - opens a new file                   │▒│ Open     = F3  │
│ CTRL+G    Goto     - goto a specified address           │▒│ Goto     = F4  │
│ CTRL+F    Find     - search for a hex/ascii value       │▒│ Find     = F5  │
│ CTRL+A    HexAdres - toggle between hex/decimal address │▒│ HexAdres = F6  │
│ TAB       Hex Edit - toggle between hex/ASCII windows   │▒│ Hex Edit = F7  │
│ CTRL+Q    Quit     - exit out of the program            │▒│ Quit     = F8  │
│                                                         │▒│                │
│ CTRL+U    Page up  - scrolls one screen up              │▒│ Page up  = PGUP│
│ CTRL+D    Page down- scrolls one screen down            │▒│ Page down= PGDN│
│ CTRL+Z    Undo     - reverts last modification          │▒│                │
│ CTRL+T    Home     - returns to the top of the file     │▒│                │
│ CTRL+B    End      - jumps to the bottom of the file    │▒│                │
│                                                         │▒│                │
│                     Press enter to continue             │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/code&gt;
&lt;u&gt;'''NOTE:'''&lt;/u&gt; Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}



Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└Enter ascii value (): live-amd64                          v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/code&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.
&lt;code&gt;
┌33807006─────────────────────────────────────────────────┐^┌────────────────┐
│33807000 6C 61 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 │▒│label live-amd64│
│33807010 0A 09 6D 65 6E 75 20 6C 61 62 65 6C 20 5E 4C 69 │▒│..menu label ^Li│
│33807020 76 65 20 28 61 6D 64 36 34 29 0A 09 6D 65 6E 75 │▒│ve (amd64)..menu│
│33807030 20 64 65 66 61 75 6C 74 0A 09 6C 69 6E 75 78 20 │▒│ default..linux │
│33807040 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A 09 69 │▒│/live/vmlinuz..i│
│33807050 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E 69 74 │▒│nitrd /live/init│
│33807060 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 20 62 │▒│rd.img..append b│
│33807070 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 67 20 │▒│oot=live config │
│33807080 71 75 69 65 74 20 73 70 6C 61 73 68 0A 0A 6C 61 │▒│quiet splash..la│
│33807090 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 2D 66 │▒│bel live-amd64-f│
│338070A0 61 69 6C 73 61 66 65 0A 09 6D 65 6E 75 20 6C 61 │▒│ailsafe..menu la│
│338070B0 62 65 6C 20 5E 4C 69 76 65 20 28 61 6D 64 36 34 │▒│bel ^Live (amd64│
│338070C0 20 66 61 69 6C 73 61 66 65 29 0A 09 6C 69 6E 75 │▒│ failsafe)..linu│
│338070D0 78 20 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A │▒│x /live/vmlinuz.│
│338070E0 09 69 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E │▒│.initrd /live/in│
│338070F0 69 74 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 │▒│itrd.img..append│
│33807100 20 62 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 │▒│ boot=live confi│
│33807110 67 20 6D 65 6D 74 65 73 74 20 6E 6F 61 70 69 63 │▒│g memtest noapic│
│33807120 20 6E 6F 61 70 6D 20 6E 6F 64 6D 61 20 6E 6F 6D │▒│ noapm nodma nom│
│33807130 63 65 20 6E 6F 6C 61 70 69 63 20 6E 6F 6D 6F 64 │▒│ce nolapic nomod│
│33807140 65 73 65 74 20 6E 6F 73 6D 70 20 6E 6F 73 70 6C │▒│eset nosmp nospl│
│33807150 61 73 68 20 76 67 61 3D 6E 6F 72 6D 61 6C 0A 00 │▒│ash vga=normal..│
│33807160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │◆│................│
│338071D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/code&gt;
Une fois le curseur bien positionné, en haut à gauche de la fenêtre, on pourra lire le décalage depuis le début du fichier :&lt;br /&gt;
'''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aura largement assez de place pour insérer les options.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Recopier 512 octets dans le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -m 2G -cpu host -boot d -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB).

Il ne reste plus qu'à supprimer les fichiers devenus inutiles :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
== Ou alors, utilisez un script. ==
&lt;code&gt;
#!/bin/sh -
#=================================================================================================
#        NOM: isoLive2fr.sh
#
#    SYNTAXE: isoLive2fr &lt;fichier image ISO Live&gt;
#
#        BUT: Remplacer le menu de démarrage par une nouvelle entrée.
#             Cette nouvelle entrée permettra un démarrage directement en français.
#
#  NÉCESSITE: Commande     Version      Paquetage
#             --------     -------      -----------
#             isoinfo      1.1.11       genisoimage
#             GNU dd       8.13         coreutils
#             GNU awk      4.0.1        gawk
#             GNU sed      4.2.1        sed
#
#     AUTEUR: MicP (debian-fr)
#
#       DATE: 18/07/2014
#
#    VERSION: 0.04.05
#
#-------------------------------------------------------------------------------------------------
# NOTES: Ce n'est qu'une ébauche de script inspiré par ceux qui ont été postés par fran.b
#         dans le fil de discussion suivant :
# http://www.debian-fr.org/franciser-l-iso-debian-7-5-live-nonfree-moins-de-2-minutes-t48948.html
#
# Ça fonctionne, mais je reviendrai plus tard pour rajouter des contrôles d'erreur, et plus...
#-------------------------------------------------------------------------------------------------
# Projets :
#
# - Ajouter la gestion des listes (tableau) en entrée
#     depuis un &quot;glissé&quot; de nom de dossier, ou sélection multiple depuis l'interface graphique.
# - Adapter le script pour pouvoir modifier directement l'image &quot;ISO Live&quot; déjà &quot;gravée&quot; sur Clef USB.
# - Contrôler si le fichier n'a pas déjà été &quot;francisé&quot;.
#---------------------------------------------------------------
# En prévision: (Pour le futur script pour le fichier de config)
# - Rechercher dans l'ISO à Franciser les fichiers des locales et clavier disponibles.
#=================================================================================================

fichImgEn=&quot;$1&quot;
#-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# Ci dessous, la ligne des paramètres de boot qui sera utilisée par le menu de démarrage par défaut.
#   Ce menu apparaîtra en premier dans la liste avec le nom: &quot;Live Fr&quot; (suivit du type d'architecture de votre machine).
#-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
nvParams=&quot;append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-model=pc105 keyboard-layouts=fr keyboard-variant=latin9 timezone=Europe/Paris utc=yes&quot;
#-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

#------------------------------------------------------------
#  Y-a t-il un paramètre sur la ligne de commande du script ?
#------------------------------------------------------------
test -z &quot;${fichImgEn}&quot; &amp;&amp;
  {
    printf &quot;\n\nDonnez le chemin du fichier d'image \&quot;ISO Live debian\&quot; à franciser en paramètre de cette commande.\n\n Comme par exemple:\n\n\t$0 ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso\n\n\&quot;$0\&quot; vous remercie.\n\n&quot;
    exit 1
  }

#----------------------------------------------------------------
#  Le paramètre corresponds-t-il à un nom de fichier accessible ?
#----------------------------------------------------------------
test -f &quot;${fichImgEn}&quot; ||
  {
    printf &quot;\n\n\&quot;$0\&quot; n'a pu avoir accès à \&quot;${fichImgEn}\&quot;.\n\n\tEst-ce bien un nom de fichier ?\n\n&quot;
    exit 1
  }

#-----------------------------------------------
# Récupérer la taille de bloc utilisé par l'ISO.
#-----------------------------------------------
chBlksSize=&quot;Logical block size is:&quot;

isoBlckSiz=$(isoinfo -d -i &quot;${fichImgEn}&quot; | sed -n &quot;/${chBlksSize}/p&quot; | sed 's/.* //')

#--------------------------------------------------------------
# Est-ce bien un fichier d'image ISO de type &quot;DEBIAN LIVE&quot; ?
#   pour le savoir, vérifier la présence du fichier &quot;live.cfg&quot;.
#--------------------------------------------------------------
NmFichLive=&quot;  live.cfg&quot;

varLiveCfg=$(isoinfo -l -R -i &quot;${fichImgEn}&quot; 2&gt;/dev/null | sed -n &quot;/${NmFichLive}/p&quot; | awk '{print $5, $10}')

#----------------------------------------------------------
# Récupérer la taille et la position du fichier &quot;live.cfg&quot;.
#----------------------------------------------------------
ficCFGsize=${varLiveCfg%% *} # récup de ce qui précède l'espace
blckOffset=${varLiveCfg##* } # récup de ce qui suit l'espace
octsOffset=$(( $blckOffset * $isoBlckSiz ))

#---------------------------------------------------
# Si le fichier &quot;live.cfg&quot; n'est pas là,
#   l'annoncer par un message, et quitter le script.
#---------------------------------------------------
test -z &quot;${varLiveCfg}&quot; &amp;&amp;
  {
    printf &quot;\n\&quot;$0\&quot; n'a pas pu trouver de fichier \&quot;${NmFichLive}\&quot; dans le fichier \&quot;${fichImgEn}\&quot;.\n\n\tCe fichier n'est peut-être PAS un fichier d'image ISO \&quot;Debian Live\&quot;...\n\n&quot;
    exit 1
  }

#----------------------------------------------------------------
# Préparer le nom pour renommer le fichier ISO une fois francisé.
#   (insertion de &quot;-FR&quot; juste après &quot;live&quot;)
#----------------------------------------------------------------
frAins=&quot;-FR&quot;
insApres=&quot;live&quot;

fichImgFr=&quot;${fichImgEn%$insApres*}${insApres}${frAins}${fichImgEn#*$insApres}&quot;

#------------------------------------------------------------
# Créer quelques variables pour la création du menu Francisé.
#------------------------------------------------------------
chLive=&quot; ^Live (&quot;
chLiveFR=&quot; ^Live Fr (&quot;
chMenDef=&quot;\tmenu default&quot;
chAppend=&quot;\tappend boot=&quot;

#--------------------------------------------------------------------
# Créer un nom unique dans le temps pour le fichier temporaire,
# dans un sous-répertoire de &quot;/tmp/&quot; au nom du script et utilisateur.
#--------------------------------------------------------------------
nomRepTmp=&quot;$(basename $0)&quot;
nomRepTmp=&quot;/tmp/${nomRepTmp%.*}-${USER}&quot;
test -d &quot;${nomRepTmp}&quot; || mkdir &quot;${nomRepTmp}&quot;
fichTmp=&quot;${nomRepTmp}/tmp-$(date +%s).dat&quot;

#-----------------------------------------------------------------------------------
# Extraire le contenu du fichier &quot;live.cfg&quot;,
#  sélectionner le paragraphe concernant le premier menu,
#  modifier le titre du label, supprimer la ligne des paramètres de boot,
#  puis sauvegarder dans &quot;$fichTmp&quot;.
#----------------------------------------------------------------------------------
dd bs=1 count=$ficCFGsize skip=$octsOffset if=&quot;${fichImgEn}&quot; 2&gt;/dev/null | \
sed -n &quot;1,/${chAppend}/p&quot; | sed -e &quot;s/${chLive}/${chLiveFR}/&quot; -e &quot;/^${chAppend}/d&quot; &gt; &quot;${fichTmp}&quot;

#--------------------------------------------------
# Ajouter la nouvelle chaîne des paramètres de boot
#  + une ligne vide à la fin du fichier temporaire.
#--------------------------------------------------
printf &quot;\t${nvParams}\n\n&quot; &gt;&gt; &quot;${fichTmp}&quot;

#-------------------------------------------
# Remplacer le contenu du fichier &quot;live.cfg&quot;
#  par des caractères 0x00 sur l'image ISO.
#-------------------------------------------
dd bs=1 count=$ficCFGsize seek=$octsOffset if=/dev/zero of=&quot;${fichImgEn}&quot; conv=notrunc,sync 2&gt;/dev/null

#------------------------------------------------
# Copie du nouveau contenu du fichier &quot;live.cfg&quot;.
#------------------------------------------------
dd bs=1 seek=$octsOffset if=&quot;${fichTmp}&quot; of=&quot;${fichImgEn}&quot; conv=notrunc,sync 2&gt;/dev/null

#-----------------------------------------
# Renommer le fichier image ISO avec &quot;FR&quot;.
#-----------------------------------------
mv &quot;${fichImgEn}&quot; &quot;${fichImgFr}&quot;

#---------------------------------------------
# Supprimer le sous-répertoire et son contenu:
# le fichier temporaire.
#---------------------------------------------
rm -rf &quot;${nomRepTmp}&quot;

#------------------------------
# Annoncer que tout a été fait.
#------------------------------
printf &quot;\nVoilà voilà! \&quot;${fichImgFr}\&quot; est la version francisée.\n\nSomme MD5 :\n&quot;

#-----------------------------------------------------------
# Calcul de la somme MD5 de la nouvelle image ISO francisée.
#-----------------------------------------------------------
md5sum &quot;${fichImgFr}&quot;
printf &quot;\n\n&quot;

#=================================================================================================&lt;/code&gt;</text>
      <sha1>juqx1b9cp7ft7e3suxvytzobeions4y</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5697</id>
      <parentid>5696</parentid>
      <timestamp>2014-08-03T02:14:51Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Extraire, avec dd, le texte à modifier */ taille max fichier=taille originale</comment>
      <text xml:space="preserve" bytes="33269">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue '''ligne des options de boot''' suivante qui permet de démarrer ma '''debian live''' directement en français.
&lt;code&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-model=pc105 keyboard-layouts=fr keyboard-variant=latin9 timezone=Europe/Paris utc=yes&lt;/code&gt;
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.

&lt;u&gt;'''NOTE:'''&lt;/u&gt; Bien sûr cette maipulation comme le script fonctionne avec tous les fichiers image ISO de type '''debian &lt;u&gt;live&lt;/u&gt;'''

== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'[http://caesar.acc.umu.se/debian-cd/current-live/amd64/iso-hybrid/debian-live-7.5.0-amd64-xfce-desktop.iso|image ISO téléchargée], juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-model=pc105 keyboard-layouts=fr keyboard-variant=latin9 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite).
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/code&gt;

La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide. 
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│ Ctrl Key          HexCurse Keyboard Commands            │◆│ Function Keys  │
│                                                         │▒│                │
│ CTRL+?    Help     - you are reading it now             │▒│ Help     = F1  │
│ CTRL+S    Save     - saves the current file open        │▒│ Save     = F2  │
│ CTRL+O    Open     - opens a new file                   │▒│ Open     = F3  │
│ CTRL+G    Goto     - goto a specified address           │▒│ Goto     = F4  │
│ CTRL+F    Find     - search for a hex/ascii value       │▒│ Find     = F5  │
│ CTRL+A    HexAdres - toggle between hex/decimal address │▒│ HexAdres = F6  │
│ TAB       Hex Edit - toggle between hex/ASCII windows   │▒│ Hex Edit = F7  │
│ CTRL+Q    Quit     - exit out of the program            │▒│ Quit     = F8  │
│                                                         │▒│                │
│ CTRL+U    Page up  - scrolls one screen up              │▒│ Page up  = PGUP│
│ CTRL+D    Page down- scrolls one screen down            │▒│ Page down= PGDN│
│ CTRL+Z    Undo     - reverts last modification          │▒│                │
│ CTRL+T    Home     - returns to the top of the file     │▒│                │
│ CTRL+B    End      - jumps to the bottom of the file    │▒│                │
│                                                         │▒│                │
│                     Press enter to continue             │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/code&gt;
&lt;u&gt;'''NOTE:'''&lt;/u&gt; Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}



Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└Enter ascii value (): live-amd64                          v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/code&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.
&lt;code&gt;
┌33807006─────────────────────────────────────────────────┐^┌────────────────┐
│33807000 6C 61 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 │▒│label live-amd64│
│33807010 0A 09 6D 65 6E 75 20 6C 61 62 65 6C 20 5E 4C 69 │▒│..menu label ^Li│
│33807020 76 65 20 28 61 6D 64 36 34 29 0A 09 6D 65 6E 75 │▒│ve (amd64)..menu│
│33807030 20 64 65 66 61 75 6C 74 0A 09 6C 69 6E 75 78 20 │▒│ default..linux │
│33807040 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A 09 69 │▒│/live/vmlinuz..i│
│33807050 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E 69 74 │▒│nitrd /live/init│
│33807060 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 20 62 │▒│rd.img..append b│
│33807070 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 67 20 │▒│oot=live config │
│33807080 71 75 69 65 74 20 73 70 6C 61 73 68 0A 0A 6C 61 │▒│quiet splash..la│
│33807090 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 2D 66 │▒│bel live-amd64-f│
│338070A0 61 69 6C 73 61 66 65 0A 09 6D 65 6E 75 20 6C 61 │▒│ailsafe..menu la│
│338070B0 62 65 6C 20 5E 4C 69 76 65 20 28 61 6D 64 36 34 │▒│bel ^Live (amd64│
│338070C0 20 66 61 69 6C 73 61 66 65 29 0A 09 6C 69 6E 75 │▒│ failsafe)..linu│
│338070D0 78 20 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A │▒│x /live/vmlinuz.│
│338070E0 09 69 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E │▒│.initrd /live/in│
│338070F0 69 74 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 │▒│itrd.img..append│
│33807100 20 62 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 │▒│ boot=live confi│
│33807110 67 20 6D 65 6D 74 65 73 74 20 6E 6F 61 70 69 63 │▒│g memtest noapic│
│33807120 20 6E 6F 61 70 6D 20 6E 6F 64 6D 61 20 6E 6F 6D │▒│ noapm nodma nom│
│33807130 63 65 20 6E 6F 6C 61 70 69 63 20 6E 6F 6D 6F 64 │▒│ce nolapic nomod│
│33807140 65 73 65 74 20 6E 6F 73 6D 70 20 6E 6F 73 70 6C │▒│eset nosmp nospl│
│33807150 61 73 68 20 76 67 61 3D 6E 6F 72 6D 61 6C 0A 00 │▒│ash vga=normal..│
│33807160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │◆│................│
│338071D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/code&gt;
Une fois le curseur bien positionné, en haut à gauche de la fenêtre, on pourra lire le décalage depuis le début du fichier :&lt;br /&gt;
'''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aurait largement assez de place pour insérer les options, d'autant que la taille des secteurs utilisé par cette ISO est de 2048.
'''MAIS''', et oui, il y a un &quot;mais&quot;: si nous modifions le contenu du fichier par cette méthode, cela ne changera pas la taille du fichier dans le système de fichier qui l'héberge.
Le nouveau contenu du fichier &quot;live.cfg&quot; ne devra pas dépasser la taille du fichier original.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Recopier 512 octets dans le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -m 2G -cpu host -boot d -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB).

Il ne reste plus qu'à supprimer les fichiers devenus inutiles :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
== Ou alors, utilisez un script. ==
&lt;code&gt;
#!/bin/sh -
#=================================================================================================
#        NOM: isoLive2fr.sh
#
#    SYNTAXE: isoLive2fr &lt;fichier image ISO Live&gt;
#
#        BUT: Remplacer le menu de démarrage par une nouvelle entrée.
#             Cette nouvelle entrée permettra un démarrage directement en français.
#
#  NÉCESSITE: Commande     Version      Paquetage
#             --------     -------      -----------
#             isoinfo      1.1.11       genisoimage
#             GNU dd       8.13         coreutils
#             GNU awk      4.0.1        gawk
#             GNU sed      4.2.1        sed
#
#     AUTEUR: MicP (debian-fr)
#
#       DATE: 18/07/2014
#
#    VERSION: 0.04.05
#
#-------------------------------------------------------------------------------------------------
# NOTES: Ce n'est qu'une ébauche de script inspiré par ceux qui ont été postés par fran.b
#         dans le fil de discussion suivant :
# http://www.debian-fr.org/franciser-l-iso-debian-7-5-live-nonfree-moins-de-2-minutes-t48948.html
#
# Ça fonctionne, mais je reviendrai plus tard pour rajouter des contrôles d'erreur, et plus...
#-------------------------------------------------------------------------------------------------
# Projets :
#
# - Ajouter la gestion des listes (tableau) en entrée
#     depuis un &quot;glissé&quot; de nom de dossier, ou sélection multiple depuis l'interface graphique.
# - Adapter le script pour pouvoir modifier directement l'image &quot;ISO Live&quot; déjà &quot;gravée&quot; sur Clef USB.
# - Contrôler si le fichier n'a pas déjà été &quot;francisé&quot;.
#---------------------------------------------------------------
# En prévision: (Pour le futur script pour le fichier de config)
# - Rechercher dans l'ISO à Franciser les fichiers des locales et clavier disponibles.
#=================================================================================================

fichImgEn=&quot;$1&quot;
#-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# Ci dessous, la ligne des paramètres de boot qui sera utilisée par le menu de démarrage par défaut.
#   Ce menu apparaîtra en premier dans la liste avec le nom: &quot;Live Fr&quot; (suivit du type d'architecture de votre machine).
#-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
nvParams=&quot;append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-model=pc105 keyboard-layouts=fr keyboard-variant=latin9 timezone=Europe/Paris utc=yes&quot;
#-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

#------------------------------------------------------------
#  Y-a t-il un paramètre sur la ligne de commande du script ?
#------------------------------------------------------------
test -z &quot;${fichImgEn}&quot; &amp;&amp;
  {
    printf &quot;\n\nDonnez le chemin du fichier d'image \&quot;ISO Live debian\&quot; à franciser en paramètre de cette commande.\n\n Comme par exemple:\n\n\t$0 ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso\n\n\&quot;$0\&quot; vous remercie.\n\n&quot;
    exit 1
  }

#----------------------------------------------------------------
#  Le paramètre corresponds-t-il à un nom de fichier accessible ?
#----------------------------------------------------------------
test -f &quot;${fichImgEn}&quot; ||
  {
    printf &quot;\n\n\&quot;$0\&quot; n'a pu avoir accès à \&quot;${fichImgEn}\&quot;.\n\n\tEst-ce bien un nom de fichier ?\n\n&quot;
    exit 1
  }

#-----------------------------------------------
# Récupérer la taille de bloc utilisé par l'ISO.
#-----------------------------------------------
chBlksSize=&quot;Logical block size is:&quot;

isoBlckSiz=$(isoinfo -d -i &quot;${fichImgEn}&quot; | sed -n &quot;/${chBlksSize}/p&quot; | sed 's/.* //')

#--------------------------------------------------------------
# Est-ce bien un fichier d'image ISO de type &quot;DEBIAN LIVE&quot; ?
#   pour le savoir, vérifier la présence du fichier &quot;live.cfg&quot;.
#--------------------------------------------------------------
NmFichLive=&quot;  live.cfg&quot;

varLiveCfg=$(isoinfo -l -R -i &quot;${fichImgEn}&quot; 2&gt;/dev/null | sed -n &quot;/${NmFichLive}/p&quot; | awk '{print $5, $10}')

#----------------------------------------------------------
# Récupérer la taille et la position du fichier &quot;live.cfg&quot;.
#----------------------------------------------------------
ficCFGsize=${varLiveCfg%% *} # récup de ce qui précède l'espace
blckOffset=${varLiveCfg##* } # récup de ce qui suit l'espace
octsOffset=$(( $blckOffset * $isoBlckSiz ))

#---------------------------------------------------
# Si le fichier &quot;live.cfg&quot; n'est pas là,
#   l'annoncer par un message, et quitter le script.
#---------------------------------------------------
test -z &quot;${varLiveCfg}&quot; &amp;&amp;
  {
    printf &quot;\n\&quot;$0\&quot; n'a pas pu trouver de fichier \&quot;${NmFichLive}\&quot; dans le fichier \&quot;${fichImgEn}\&quot;.\n\n\tCe fichier n'est peut-être PAS un fichier d'image ISO \&quot;Debian Live\&quot;...\n\n&quot;
    exit 1
  }

#----------------------------------------------------------------
# Préparer le nom pour renommer le fichier ISO une fois francisé.
#   (insertion de &quot;-FR&quot; juste après &quot;live&quot;)
#----------------------------------------------------------------
frAins=&quot;-FR&quot;
insApres=&quot;live&quot;

fichImgFr=&quot;${fichImgEn%$insApres*}${insApres}${frAins}${fichImgEn#*$insApres}&quot;

#------------------------------------------------------------
# Créer quelques variables pour la création du menu Francisé.
#------------------------------------------------------------
chLive=&quot; ^Live (&quot;
chLiveFR=&quot; ^Live Fr (&quot;
chMenDef=&quot;\tmenu default&quot;
chAppend=&quot;\tappend boot=&quot;

#--------------------------------------------------------------------
# Créer un nom unique dans le temps pour le fichier temporaire,
# dans un sous-répertoire de &quot;/tmp/&quot; au nom du script et utilisateur.
#--------------------------------------------------------------------
nomRepTmp=&quot;$(basename $0)&quot;
nomRepTmp=&quot;/tmp/${nomRepTmp%.*}-${USER}&quot;
test -d &quot;${nomRepTmp}&quot; || mkdir &quot;${nomRepTmp}&quot;
fichTmp=&quot;${nomRepTmp}/tmp-$(date +%s).dat&quot;

#-----------------------------------------------------------------------------------
# Extraire le contenu du fichier &quot;live.cfg&quot;,
#  sélectionner le paragraphe concernant le premier menu,
#  modifier le titre du label, supprimer la ligne des paramètres de boot,
#  puis sauvegarder dans &quot;$fichTmp&quot;.
#----------------------------------------------------------------------------------
dd bs=1 count=$ficCFGsize skip=$octsOffset if=&quot;${fichImgEn}&quot; 2&gt;/dev/null | \
sed -n &quot;1,/${chAppend}/p&quot; | sed -e &quot;s/${chLive}/${chLiveFR}/&quot; -e &quot;/^${chAppend}/d&quot; &gt; &quot;${fichTmp}&quot;

#--------------------------------------------------
# Ajouter la nouvelle chaîne des paramètres de boot
#  + une ligne vide à la fin du fichier temporaire.
#--------------------------------------------------
printf &quot;\t${nvParams}\n\n&quot; &gt;&gt; &quot;${fichTmp}&quot;

#-------------------------------------------
# Remplacer le contenu du fichier &quot;live.cfg&quot;
#  par des caractères 0x00 sur l'image ISO.
#-------------------------------------------
dd bs=1 count=$ficCFGsize seek=$octsOffset if=/dev/zero of=&quot;${fichImgEn}&quot; conv=notrunc,sync 2&gt;/dev/null

#------------------------------------------------
# Copie du nouveau contenu du fichier &quot;live.cfg&quot;.
#------------------------------------------------
dd bs=1 seek=$octsOffset if=&quot;${fichTmp}&quot; of=&quot;${fichImgEn}&quot; conv=notrunc,sync 2&gt;/dev/null

#-----------------------------------------
# Renommer le fichier image ISO avec &quot;FR&quot;.
#-----------------------------------------
mv &quot;${fichImgEn}&quot; &quot;${fichImgFr}&quot;

#---------------------------------------------
# Supprimer le sous-répertoire et son contenu:
# le fichier temporaire.
#---------------------------------------------
rm -rf &quot;${nomRepTmp}&quot;

#------------------------------
# Annoncer que tout a été fait.
#------------------------------
printf &quot;\nVoilà voilà! \&quot;${fichImgFr}\&quot; est la version francisée.\n\nSomme MD5 :\n&quot;

#-----------------------------------------------------------
# Calcul de la somme MD5 de la nouvelle image ISO francisée.
#-----------------------------------------------------------
md5sum &quot;${fichImgFr}&quot;
printf &quot;\n\n&quot;

#=================================================================================================&lt;/code&gt;</text>
      <sha1>pcg1t2mkdrfm3cheez0ge6shaznlis1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5698</id>
      <parentid>5697</parentid>
      <timestamp>2014-08-03T02:23:16Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Tester l'image ISO avec kvm */ USB</comment>
      <text xml:space="preserve" bytes="33688">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue '''ligne des options de boot''' suivante qui permet de démarrer ma '''debian live''' directement en français.
&lt;code&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-model=pc105 keyboard-layouts=fr keyboard-variant=latin9 timezone=Europe/Paris utc=yes&lt;/code&gt;
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.

&lt;u&gt;'''NOTE:'''&lt;/u&gt; Bien sûr cette maipulation comme le script fonctionne avec tous les fichiers image ISO de type '''debian &lt;u&gt;live&lt;/u&gt;'''

== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'[http://caesar.acc.umu.se/debian-cd/current-live/amd64/iso-hybrid/debian-live-7.5.0-amd64-xfce-desktop.iso|image ISO téléchargée], juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-model=pc105 keyboard-layouts=fr keyboard-variant=latin9 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite).
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/code&gt;

La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide. 
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│ Ctrl Key          HexCurse Keyboard Commands            │◆│ Function Keys  │
│                                                         │▒│                │
│ CTRL+?    Help     - you are reading it now             │▒│ Help     = F1  │
│ CTRL+S    Save     - saves the current file open        │▒│ Save     = F2  │
│ CTRL+O    Open     - opens a new file                   │▒│ Open     = F3  │
│ CTRL+G    Goto     - goto a specified address           │▒│ Goto     = F4  │
│ CTRL+F    Find     - search for a hex/ascii value       │▒│ Find     = F5  │
│ CTRL+A    HexAdres - toggle between hex/decimal address │▒│ HexAdres = F6  │
│ TAB       Hex Edit - toggle between hex/ASCII windows   │▒│ Hex Edit = F7  │
│ CTRL+Q    Quit     - exit out of the program            │▒│ Quit     = F8  │
│                                                         │▒│                │
│ CTRL+U    Page up  - scrolls one screen up              │▒│ Page up  = PGUP│
│ CTRL+D    Page down- scrolls one screen down            │▒│ Page down= PGDN│
│ CTRL+Z    Undo     - reverts last modification          │▒│                │
│ CTRL+T    Home     - returns to the top of the file     │▒│                │
│ CTRL+B    End      - jumps to the bottom of the file    │▒│                │
│                                                         │▒│                │
│                     Press enter to continue             │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/code&gt;
&lt;u&gt;'''NOTE:'''&lt;/u&gt; Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}



Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└Enter ascii value (): live-amd64                          v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/code&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.
&lt;code&gt;
┌33807006─────────────────────────────────────────────────┐^┌────────────────┐
│33807000 6C 61 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 │▒│label live-amd64│
│33807010 0A 09 6D 65 6E 75 20 6C 61 62 65 6C 20 5E 4C 69 │▒│..menu label ^Li│
│33807020 76 65 20 28 61 6D 64 36 34 29 0A 09 6D 65 6E 75 │▒│ve (amd64)..menu│
│33807030 20 64 65 66 61 75 6C 74 0A 09 6C 69 6E 75 78 20 │▒│ default..linux │
│33807040 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A 09 69 │▒│/live/vmlinuz..i│
│33807050 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E 69 74 │▒│nitrd /live/init│
│33807060 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 20 62 │▒│rd.img..append b│
│33807070 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 67 20 │▒│oot=live config │
│33807080 71 75 69 65 74 20 73 70 6C 61 73 68 0A 0A 6C 61 │▒│quiet splash..la│
│33807090 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 2D 66 │▒│bel live-amd64-f│
│338070A0 61 69 6C 73 61 66 65 0A 09 6D 65 6E 75 20 6C 61 │▒│ailsafe..menu la│
│338070B0 62 65 6C 20 5E 4C 69 76 65 20 28 61 6D 64 36 34 │▒│bel ^Live (amd64│
│338070C0 20 66 61 69 6C 73 61 66 65 29 0A 09 6C 69 6E 75 │▒│ failsafe)..linu│
│338070D0 78 20 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A │▒│x /live/vmlinuz.│
│338070E0 09 69 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E │▒│.initrd /live/in│
│338070F0 69 74 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 │▒│itrd.img..append│
│33807100 20 62 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 │▒│ boot=live confi│
│33807110 67 20 6D 65 6D 74 65 73 74 20 6E 6F 61 70 69 63 │▒│g memtest noapic│
│33807120 20 6E 6F 61 70 6D 20 6E 6F 64 6D 61 20 6E 6F 6D │▒│ noapm nodma nom│
│33807130 63 65 20 6E 6F 6C 61 70 69 63 20 6E 6F 6D 6F 64 │▒│ce nolapic nomod│
│33807140 65 73 65 74 20 6E 6F 73 6D 70 20 6E 6F 73 70 6C │▒│eset nosmp nospl│
│33807150 61 73 68 20 76 67 61 3D 6E 6F 72 6D 61 6C 0A 00 │▒│ash vga=normal..│
│33807160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │◆│................│
│338071D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/code&gt;
Une fois le curseur bien positionné, en haut à gauche de la fenêtre, on pourra lire le décalage depuis le début du fichier :&lt;br /&gt;
'''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aurait largement assez de place pour insérer les options, d'autant que la taille des secteurs utilisé par cette ISO est de 2048.
'''MAIS''', et oui, il y a un &quot;mais&quot;: si nous modifions le contenu du fichier par cette méthode, cela ne changera pas la taille du fichier dans le système de fichier qui l'héberge.
Le nouveau contenu du fichier &quot;live.cfg&quot; ne devra pas dépasser la taille du fichier original.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Recopier 512 octets dans le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -m 2G -cpu host -boot d -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB).

Il ne reste plus qu'à supprimer les fichiers devenus inutiles :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;

'''NOTE:''' Si j'avais pas eu peur que vous ne fassiez une erreur de fichier de périphérique, je vous aurai dit que cette manipulation pourrait très bien être faite directement sur la clef USB.
C'est aussi facile d'y arriver que de détruire son système linux, alors si vous aimez jouer, amusez vous bien, mais moi, je ne vous ai absolument pas dit comment faire,
comme ça, on ne me fera pas porter le chapeau.

== Ou alors, utilisez un script. ==
&lt;code&gt;
#!/bin/sh -
#=================================================================================================
#        NOM: isoLive2fr.sh
#
#    SYNTAXE: isoLive2fr &lt;fichier image ISO Live&gt;
#
#        BUT: Remplacer le menu de démarrage par une nouvelle entrée.
#             Cette nouvelle entrée permettra un démarrage directement en français.
#
#  NÉCESSITE: Commande     Version      Paquetage
#             --------     -------      -----------
#             isoinfo      1.1.11       genisoimage
#             GNU dd       8.13         coreutils
#             GNU awk      4.0.1        gawk
#             GNU sed      4.2.1        sed
#
#     AUTEUR: MicP (debian-fr)
#
#       DATE: 18/07/2014
#
#    VERSION: 0.04.05
#
#-------------------------------------------------------------------------------------------------
# NOTES: Ce n'est qu'une ébauche de script inspiré par ceux qui ont été postés par fran.b
#         dans le fil de discussion suivant :
# http://www.debian-fr.org/franciser-l-iso-debian-7-5-live-nonfree-moins-de-2-minutes-t48948.html
#
# Ça fonctionne, mais je reviendrai plus tard pour rajouter des contrôles d'erreur, et plus...
#-------------------------------------------------------------------------------------------------
# Projets :
#
# - Ajouter la gestion des listes (tableau) en entrée
#     depuis un &quot;glissé&quot; de nom de dossier, ou sélection multiple depuis l'interface graphique.
# - Adapter le script pour pouvoir modifier directement l'image &quot;ISO Live&quot; déjà &quot;gravée&quot; sur Clef USB.
# - Contrôler si le fichier n'a pas déjà été &quot;francisé&quot;.
#---------------------------------------------------------------
# En prévision: (Pour le futur script pour le fichier de config)
# - Rechercher dans l'ISO à Franciser les fichiers des locales et clavier disponibles.
#=================================================================================================

fichImgEn=&quot;$1&quot;
#-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# Ci dessous, la ligne des paramètres de boot qui sera utilisée par le menu de démarrage par défaut.
#   Ce menu apparaîtra en premier dans la liste avec le nom: &quot;Live Fr&quot; (suivit du type d'architecture de votre machine).
#-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
nvParams=&quot;append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-model=pc105 keyboard-layouts=fr keyboard-variant=latin9 timezone=Europe/Paris utc=yes&quot;
#-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

#------------------------------------------------------------
#  Y-a t-il un paramètre sur la ligne de commande du script ?
#------------------------------------------------------------
test -z &quot;${fichImgEn}&quot; &amp;&amp;
  {
    printf &quot;\n\nDonnez le chemin du fichier d'image \&quot;ISO Live debian\&quot; à franciser en paramètre de cette commande.\n\n Comme par exemple:\n\n\t$0 ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso\n\n\&quot;$0\&quot; vous remercie.\n\n&quot;
    exit 1
  }

#----------------------------------------------------------------
#  Le paramètre corresponds-t-il à un nom de fichier accessible ?
#----------------------------------------------------------------
test -f &quot;${fichImgEn}&quot; ||
  {
    printf &quot;\n\n\&quot;$0\&quot; n'a pu avoir accès à \&quot;${fichImgEn}\&quot;.\n\n\tEst-ce bien un nom de fichier ?\n\n&quot;
    exit 1
  }

#-----------------------------------------------
# Récupérer la taille de bloc utilisé par l'ISO.
#-----------------------------------------------
chBlksSize=&quot;Logical block size is:&quot;

isoBlckSiz=$(isoinfo -d -i &quot;${fichImgEn}&quot; | sed -n &quot;/${chBlksSize}/p&quot; | sed 's/.* //')

#--------------------------------------------------------------
# Est-ce bien un fichier d'image ISO de type &quot;DEBIAN LIVE&quot; ?
#   pour le savoir, vérifier la présence du fichier &quot;live.cfg&quot;.
#--------------------------------------------------------------
NmFichLive=&quot;  live.cfg&quot;

varLiveCfg=$(isoinfo -l -R -i &quot;${fichImgEn}&quot; 2&gt;/dev/null | sed -n &quot;/${NmFichLive}/p&quot; | awk '{print $5, $10}')

#----------------------------------------------------------
# Récupérer la taille et la position du fichier &quot;live.cfg&quot;.
#----------------------------------------------------------
ficCFGsize=${varLiveCfg%% *} # récup de ce qui précède l'espace
blckOffset=${varLiveCfg##* } # récup de ce qui suit l'espace
octsOffset=$(( $blckOffset * $isoBlckSiz ))

#---------------------------------------------------
# Si le fichier &quot;live.cfg&quot; n'est pas là,
#   l'annoncer par un message, et quitter le script.
#---------------------------------------------------
test -z &quot;${varLiveCfg}&quot; &amp;&amp;
  {
    printf &quot;\n\&quot;$0\&quot; n'a pas pu trouver de fichier \&quot;${NmFichLive}\&quot; dans le fichier \&quot;${fichImgEn}\&quot;.\n\n\tCe fichier n'est peut-être PAS un fichier d'image ISO \&quot;Debian Live\&quot;...\n\n&quot;
    exit 1
  }

#----------------------------------------------------------------
# Préparer le nom pour renommer le fichier ISO une fois francisé.
#   (insertion de &quot;-FR&quot; juste après &quot;live&quot;)
#----------------------------------------------------------------
frAins=&quot;-FR&quot;
insApres=&quot;live&quot;

fichImgFr=&quot;${fichImgEn%$insApres*}${insApres}${frAins}${fichImgEn#*$insApres}&quot;

#------------------------------------------------------------
# Créer quelques variables pour la création du menu Francisé.
#------------------------------------------------------------
chLive=&quot; ^Live (&quot;
chLiveFR=&quot; ^Live Fr (&quot;
chMenDef=&quot;\tmenu default&quot;
chAppend=&quot;\tappend boot=&quot;

#--------------------------------------------------------------------
# Créer un nom unique dans le temps pour le fichier temporaire,
# dans un sous-répertoire de &quot;/tmp/&quot; au nom du script et utilisateur.
#--------------------------------------------------------------------
nomRepTmp=&quot;$(basename $0)&quot;
nomRepTmp=&quot;/tmp/${nomRepTmp%.*}-${USER}&quot;
test -d &quot;${nomRepTmp}&quot; || mkdir &quot;${nomRepTmp}&quot;
fichTmp=&quot;${nomRepTmp}/tmp-$(date +%s).dat&quot;

#-----------------------------------------------------------------------------------
# Extraire le contenu du fichier &quot;live.cfg&quot;,
#  sélectionner le paragraphe concernant le premier menu,
#  modifier le titre du label, supprimer la ligne des paramètres de boot,
#  puis sauvegarder dans &quot;$fichTmp&quot;.
#----------------------------------------------------------------------------------
dd bs=1 count=$ficCFGsize skip=$octsOffset if=&quot;${fichImgEn}&quot; 2&gt;/dev/null | \
sed -n &quot;1,/${chAppend}/p&quot; | sed -e &quot;s/${chLive}/${chLiveFR}/&quot; -e &quot;/^${chAppend}/d&quot; &gt; &quot;${fichTmp}&quot;

#--------------------------------------------------
# Ajouter la nouvelle chaîne des paramètres de boot
#  + une ligne vide à la fin du fichier temporaire.
#--------------------------------------------------
printf &quot;\t${nvParams}\n\n&quot; &gt;&gt; &quot;${fichTmp}&quot;

#-------------------------------------------
# Remplacer le contenu du fichier &quot;live.cfg&quot;
#  par des caractères 0x00 sur l'image ISO.
#-------------------------------------------
dd bs=1 count=$ficCFGsize seek=$octsOffset if=/dev/zero of=&quot;${fichImgEn}&quot; conv=notrunc,sync 2&gt;/dev/null

#------------------------------------------------
# Copie du nouveau contenu du fichier &quot;live.cfg&quot;.
#------------------------------------------------
dd bs=1 seek=$octsOffset if=&quot;${fichTmp}&quot; of=&quot;${fichImgEn}&quot; conv=notrunc,sync 2&gt;/dev/null

#-----------------------------------------
# Renommer le fichier image ISO avec &quot;FR&quot;.
#-----------------------------------------
mv &quot;${fichImgEn}&quot; &quot;${fichImgFr}&quot;

#---------------------------------------------
# Supprimer le sous-répertoire et son contenu:
# le fichier temporaire.
#---------------------------------------------
rm -rf &quot;${nomRepTmp}&quot;

#------------------------------
# Annoncer que tout a été fait.
#------------------------------
printf &quot;\nVoilà voilà! \&quot;${fichImgFr}\&quot; est la version francisée.\n\nSomme MD5 :\n&quot;

#-----------------------------------------------------------
# Calcul de la somme MD5 de la nouvelle image ISO francisée.
#-----------------------------------------------------------
md5sum &quot;${fichImgFr}&quot;
printf &quot;\n\n&quot;

#=================================================================================================&lt;/code&gt;</text>
      <sha1>5nettzwgut42x3bytc8almaaz2no503</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5709</id>
      <parentid>5698</parentid>
      <timestamp>2014-08-20T03:38:06Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Ou alors, utilisez un script. */ chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="33692">== Introduction ==
J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode ''qwerty'') la longue '''ligne des options de boot''' suivante qui permet de démarrer ma '''debian live''' directement en français.
&lt;code&gt; lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-model=pc105 keyboard-layouts=fr keyboard-variant=latin9 timezone=Europe/Paris utc=yes&lt;/code&gt;
Et puis, comme je suis un très très gros fainéant pour me lancer dans la création d'une nouvelle image ISO à chaque nouvelle version, voilà comment je fais depuis un petit moment.

&lt;u&gt;'''NOTE:'''&lt;/u&gt; Bien sûr cette maipulation comme le script fonctionne avec tous les fichiers image ISO de type '''debian &lt;u&gt;live&lt;/u&gt;'''

== Description ==
J'ai décidé d'ajouter ces options de boot directement dans l'[http://caesar.acc.umu.se/debian-cd/current-live/amd64/iso-hybrid/debian-live-7.5.0-amd64-xfce-desktop.iso|image ISO téléchargée], juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier '''/isolinux/live.cfg''' de l'image ISO&lt;br /&gt;
dont voici un extrait du contenu (les deux premiers &quot;label&quot;s):
&lt;pre&gt;
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd
&lt;/pre&gt;

Il me faudra donc modifier la ligne :
&lt;pre style=&quot;color: red&quot;&gt;	append boot=live config quiet splash&lt;/pre&gt;
de façon à ce qu'elle devienne :
&lt;pre style=&quot;color: green&quot;&gt;	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-model=pc105 keyboard-layouts=fr keyboard-variant=latin9 timezone=Europe/Paris utc=yes&lt;/pre&gt;
Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

== Recherche avec l'éditeur '''hexcurse''' ==

'''hexcurse''' est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO, &lt;br /&gt;
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…, &lt;br /&gt;
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,&lt;br /&gt;
alors, j'entre la commande suivante :
&lt;code&gt;michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso&lt;/code&gt;
L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite).
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/code&gt;

La touche '''&quot;F1&quot;''' permet d'obtenir une fenêtre d'aide. 
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│ Ctrl Key          HexCurse Keyboard Commands            │◆│ Function Keys  │
│                                                         │▒│                │
│ CTRL+?    Help     - you are reading it now             │▒│ Help     = F1  │
│ CTRL+S    Save     - saves the current file open        │▒│ Save     = F2  │
│ CTRL+O    Open     - opens a new file                   │▒│ Open     = F3  │
│ CTRL+G    Goto     - goto a specified address           │▒│ Goto     = F4  │
│ CTRL+F    Find     - search for a hex/ascii value       │▒│ Find     = F5  │
│ CTRL+A    HexAdres - toggle between hex/decimal address │▒│ HexAdres = F6  │
│ TAB       Hex Edit - toggle between hex/ASCII windows   │▒│ Hex Edit = F7  │
│ CTRL+Q    Quit     - exit out of the program            │▒│ Quit     = F8  │
│                                                         │▒│                │
│ CTRL+U    Page up  - scrolls one screen up              │▒│ Page up  = PGUP│
│ CTRL+D    Page down- scrolls one screen down            │▒│ Page down= PGDN│
│ CTRL+Z    Undo     - reverts last modification          │▒│                │
│ CTRL+T    Home     - returns to the top of the file     │▒│                │
│ CTRL+B    End      - jumps to the bottom of the file    │▒│                │
│                                                         │▒│                │
│                     Press enter to continue             │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  
&lt;/code&gt;
&lt;u&gt;'''NOTE:'''&lt;/u&gt; Pour utiliser les touches de raccourcis de '''hexcurse''', &lt;br /&gt;
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;5%&quot;| Touche
! Description
|-{{ligne grise}}
| '''&quot;F5&quot;'''
| Permet de faire une recherche.
|-{{ligne grise}}
| '''&quot;F8&quot;'''
| Quitte &quot;hexcurse&quot;.
|-{{ligne grise}}
| '''&quot;TAB&quot;'''
| Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
|-{{ligne grise}}
| '''&quot;CTRL-z&quot;'''
| Anulle les modifications effectuées.
|-{{ligne grise}}
| '''&quot;Esc&quot;'''
| Anulle la demande de ''&quot;sauvegarde&quot;'', ''&quot;ouverture&quot;'', ''&quot;aller à&quot;'' , ou ''&quot;recherche&quot;'' en cours.
|-{{ligne grise}}
|}



Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''&quot;Esc&quot;''',  &lt;br /&gt;
et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''&quot;Tab&quot;''' afin de faire la recherche sur les caractères '''Ascii'''.
&lt;code&gt;
┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.&gt;│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....&gt;b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...&lt;.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└Enter ascii value (): live-amd64                          v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/code&gt;
Après avoir appuyé sur la touche '''&quot;F5&quot;''', en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher. &lt;br /&gt;
Je réponds alors en entrant la chaîne de caractères : '''live-amd64''' et je valide ma saisie avec la touche habituelle : '''&quot;Entrée&quot;'''.


La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé. &lt;br /&gt;
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet '''&quot;null&quot;''' précédent, sur le premier &quot;'''l'''&quot; de &quot;'''l'''abel&quot;.
&lt;code&gt;
┌33807006─────────────────────────────────────────────────┐^┌────────────────┐
│33807000 6C 61 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 │▒│label live-amd64│
│33807010 0A 09 6D 65 6E 75 20 6C 61 62 65 6C 20 5E 4C 69 │▒│..menu label ^Li│
│33807020 76 65 20 28 61 6D 64 36 34 29 0A 09 6D 65 6E 75 │▒│ve (amd64)..menu│
│33807030 20 64 65 66 61 75 6C 74 0A 09 6C 69 6E 75 78 20 │▒│ default..linux │
│33807040 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A 09 69 │▒│/live/vmlinuz..i│
│33807050 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E 69 74 │▒│nitrd /live/init│
│33807060 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 20 62 │▒│rd.img..append b│
│33807070 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 67 20 │▒│oot=live config │
│33807080 71 75 69 65 74 20 73 70 6C 61 73 68 0A 0A 6C 61 │▒│quiet splash..la│
│33807090 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 2D 66 │▒│bel live-amd64-f│
│338070A0 61 69 6C 73 61 66 65 0A 09 6D 65 6E 75 20 6C 61 │▒│ailsafe..menu la│
│338070B0 62 65 6C 20 5E 4C 69 76 65 20 28 61 6D 64 36 34 │▒│bel ^Live (amd64│
│338070C0 20 66 61 69 6C 73 61 66 65 29 0A 09 6C 69 6E 75 │▒│ failsafe)..linu│
│338070D0 78 20 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A │▒│x /live/vmlinuz.│
│338070E0 09 69 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E │▒│.initrd /live/in│
│338070F0 69 74 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 │▒│itrd.img..append│
│33807100 20 62 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 │▒│ boot=live confi│
│33807110 67 20 6D 65 6D 74 65 73 74 20 6E 6F 61 70 69 63 │▒│g memtest noapic│
│33807120 20 6E 6F 61 70 6D 20 6E 6F 64 6D 61 20 6E 6F 6D │▒│ noapm nodma nom│
│33807130 63 65 20 6E 6F 6C 61 70 69 63 20 6E 6F 6D 6F 64 │▒│ce nolapic nomod│
│33807140 65 73 65 74 20 6E 6F 73 6D 70 20 6E 6F 73 70 6C │▒│eset nosmp nospl│
│33807150 61 73 68 20 76 67 61 3D 6E 6F 72 6D 61 6C 0A 00 │▒│ash vga=normal..│
│33807160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │◆│................│
│338071D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  
&lt;/code&gt;
Une fois le curseur bien positionné, en haut à gauche de la fenêtre, on pourra lire le décalage depuis le début du fichier :&lt;br /&gt;
'''33807000''', mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction '''printf''' :
&lt;code&gt;
michel@debG53SW:~$ printf &quot;%d\n&quot; 0x33807000
864055296
&lt;/code&gt;

== Extraire, avec '''dd''', le texte à modifier ==
'''dd''' permet de lire et écrire de façon &quot;brute&quot;, donc dans un fichier de format quelconque,&lt;br /&gt;
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
&lt;code&gt;
michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;
Je visualise avec '''hexdump''' les 512 octets récupérés :
&lt;code&gt;
michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$ 
&lt;/code&gt;
Comme on peut le constater, les 161 derniers octets sont à 0, il y aurait largement assez de place pour insérer les options, d'autant que la taille des secteurs utilisé par cette ISO est de 2048.
'''MAIS''', et oui, il y a un &quot;mais&quot;: si nous modifions le contenu du fichier par cette méthode, cela ne changera pas la taille du fichier dans le système de fichier qui l'héberge.
Le nouveau contenu du fichier &quot;live.cfg&quot; ne devra pas dépasser la taille du fichier original.

== Ajouter les options avec '''sed''' ==
Je rajoute les options à la suite de &quot;quiet splash&quot; en utilisant '''sed''' :
&lt;code&gt;
michel@debG53SW:~$ sed -i 's/quiet splash/quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt 
&lt;/code&gt;
Je vérifie que les options ont bien été ajoutées :
&lt;code&gt;
michel@debG53SW:~$ cat fichTemp.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 
&lt;/code&gt;
Bien sûr, la taille du fichier est passée de 512 à 620 octets :
&lt;code&gt;
michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$ 
&lt;/code&gt;
Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

== Recopier 512 octets dans le fichier image ISO ==
Avant tout, je vais sauvegarder le fichier original en en faisant une copie :
&lt;code&gt;
michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;
Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
&lt;code&gt;
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$ 
&lt;/code&gt;

== Tester l'image ISO avec '''kvm''' ==
Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
&lt;code&gt;
michel@debG53SW:~$ kvm -m 2G -cpu host -boot d -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
&lt;/code&gt;
Un appui sur la touche &quot;'''Tab'''&quot; me permet de constater que les options ajoutées sont bien là,&lt;br /&gt;
et le lancement de l'image ISO &quot;'''debian live'''&quot; me permet de constater que la francisation de l'interface graphique de '''Xfce''' est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO &quot;francisé&quot; pour préparer mon périphérique de boot (DVD ou USB).

Il ne reste plus qu'à supprimer les fichiers devenus inutiles :
&lt;code&gt;
michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
&lt;/code&gt;

'''NOTE:''' Si j'avais pas eu peur que vous ne fassiez une erreur de fichier de périphérique, je vous aurai dit que cette manipulation pourrait très bien être faite directement sur la clef USB.
C'est aussi facile d'y arriver que de détruire son système linux, alors si vous aimez jouer, amusez vous bien, mais moi, je ne vous ai absolument pas dit comment faire,
comme ça, on ne me fera pas porter le chapeau.

== Ou alors, utilisez un script. ==
&lt;code&gt;
#!/bin/sh -
#=================================================================================================
#        NOM: isoLive2fr.sh
#
#    SYNTAXE: isoLive2fr &lt;fichier image ISO Live&gt;
#
#        BUT: Remplacer le menu de démarrage par une nouvelle entrée.
#             Cette nouvelle entrée permettra un démarrage directement en français.
#
#  NÉCESSITE: Commande     Version      Paquetage
#             --------     -------      -----------
#             isoinfo      1.1.11       genisoimage
#             GNU dd       8.13         coreutils
#             GNU awk      4.0.1        gawk
#             GNU sed      4.2.1        sed
#
#     AUTEUR: MicP (debian-fr)
#
#       DATE: 18/07/2014
#
#    VERSION: 0.04.05
#
#-------------------------------------------------------------------------------------------------
# NOTES: Ce n'est qu'une ébauche de script inspiré par ceux qui ont été postés par fran.b
#         dans le fil de discussion suivant :
# http://www.debian-fr.org/franciser-l-iso-debian-7-5-live-nonfree-moins-de-2-minutes-t48948.html
#
# Ça fonctionne, mais je reviendrai plus tard pour rajouter des contrôles d'erreur, et plus...
#-------------------------------------------------------------------------------------------------
# Projets :
#
# - Ajouter la gestion des listes (tableau) en entrée
#     depuis un &quot;glissé&quot; de nom de répertoire, ou sélection multiple depuis l'interface graphique.
# - Adapter le script pour pouvoir modifier directement l'image &quot;ISO Live&quot; déjà &quot;gravée&quot; sur Clef USB.
# - Contrôler si le fichier n'a pas déjà été &quot;francisé&quot;.
#---------------------------------------------------------------
# En prévision: (Pour le futur script pour le fichier de config)
# - Rechercher dans l'ISO à Franciser les fichiers des locales et clavier disponibles.
#=================================================================================================

fichImgEn=&quot;$1&quot;
#-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# Ci dessous, la ligne des paramètres de boot qui sera utilisée par le menu de démarrage par défaut.
#   Ce menu apparaîtra en premier dans la liste avec le nom: &quot;Live Fr&quot; (suivit du type d'architecture de votre machine).
#-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
nvParams=&quot;append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-model=pc105 keyboard-layouts=fr keyboard-variant=latin9 timezone=Europe/Paris utc=yes&quot;
#-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

#------------------------------------------------------------
#  Y-a t-il un paramètre sur la ligne de commande du script ?
#------------------------------------------------------------
test -z &quot;${fichImgEn}&quot; &amp;&amp;
  {
    printf &quot;\n\nDonnez le chemin du fichier d'image \&quot;ISO Live debian\&quot; à franciser en paramètre de cette commande.\n\n Comme par exemple:\n\n\t$0 ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso\n\n\&quot;$0\&quot; vous remercie.\n\n&quot;
    exit 1
  }

#----------------------------------------------------------------
#  Le paramètre corresponds-t-il à un nom de fichier accessible ?
#----------------------------------------------------------------
test -f &quot;${fichImgEn}&quot; ||
  {
    printf &quot;\n\n\&quot;$0\&quot; n'a pu avoir accès à \&quot;${fichImgEn}\&quot;.\n\n\tEst-ce bien un nom de fichier ?\n\n&quot;
    exit 1
  }

#-----------------------------------------------
# Récupérer la taille de bloc utilisé par l'ISO.
#-----------------------------------------------
chBlksSize=&quot;Logical block size is:&quot;

isoBlckSiz=$(isoinfo -d -i &quot;${fichImgEn}&quot; | sed -n &quot;/${chBlksSize}/p&quot; | sed 's/.* //')

#--------------------------------------------------------------
# Est-ce bien un fichier d'image ISO de type &quot;DEBIAN LIVE&quot; ?
#   pour le savoir, vérifier la présence du fichier &quot;live.cfg&quot;.
#--------------------------------------------------------------
NmFichLive=&quot;  live.cfg&quot;

varLiveCfg=$(isoinfo -l -R -i &quot;${fichImgEn}&quot; 2&gt;/dev/null | sed -n &quot;/${NmFichLive}/p&quot; | awk '{print $5, $10}')

#----------------------------------------------------------
# Récupérer la taille et la position du fichier &quot;live.cfg&quot;.
#----------------------------------------------------------
ficCFGsize=${varLiveCfg%% *} # récup de ce qui précède l'espace
blckOffset=${varLiveCfg##* } # récup de ce qui suit l'espace
octsOffset=$(( $blckOffset * $isoBlckSiz ))

#---------------------------------------------------
# Si le fichier &quot;live.cfg&quot; n'est pas là,
#   l'annoncer par un message, et quitter le script.
#---------------------------------------------------
test -z &quot;${varLiveCfg}&quot; &amp;&amp;
  {
    printf &quot;\n\&quot;$0\&quot; n'a pas pu trouver de fichier \&quot;${NmFichLive}\&quot; dans le fichier \&quot;${fichImgEn}\&quot;.\n\n\tCe fichier n'est peut-être PAS un fichier d'image ISO \&quot;Debian Live\&quot;...\n\n&quot;
    exit 1
  }

#----------------------------------------------------------------
# Préparer le nom pour renommer le fichier ISO une fois francisé.
#   (insertion de &quot;-FR&quot; juste après &quot;live&quot;)
#----------------------------------------------------------------
frAins=&quot;-FR&quot;
insApres=&quot;live&quot;

fichImgFr=&quot;${fichImgEn%$insApres*}${insApres}${frAins}${fichImgEn#*$insApres}&quot;

#------------------------------------------------------------
# Créer quelques variables pour la création du menu Francisé.
#------------------------------------------------------------
chLive=&quot; ^Live (&quot;
chLiveFR=&quot; ^Live Fr (&quot;
chMenDef=&quot;\tmenu default&quot;
chAppend=&quot;\tappend boot=&quot;

#--------------------------------------------------------------------
# Créer un nom unique dans le temps pour le fichier temporaire,
# dans un sous-répertoire de &quot;/tmp/&quot; au nom du script et utilisateur.
#--------------------------------------------------------------------
nomRepTmp=&quot;$(basename $0)&quot;
nomRepTmp=&quot;/tmp/${nomRepTmp%.*}-${USER}&quot;
test -d &quot;${nomRepTmp}&quot; || mkdir &quot;${nomRepTmp}&quot;
fichTmp=&quot;${nomRepTmp}/tmp-$(date +%s).dat&quot;

#-----------------------------------------------------------------------------------
# Extraire le contenu du fichier &quot;live.cfg&quot;,
#  sélectionner le paragraphe concernant le premier menu,
#  modifier le titre du label, supprimer la ligne des paramètres de boot,
#  puis sauvegarder dans &quot;$fichTmp&quot;.
#----------------------------------------------------------------------------------
dd bs=1 count=$ficCFGsize skip=$octsOffset if=&quot;${fichImgEn}&quot; 2&gt;/dev/null | \
sed -n &quot;1,/${chAppend}/p&quot; | sed -e &quot;s/${chLive}/${chLiveFR}/&quot; -e &quot;/^${chAppend}/d&quot; &gt; &quot;${fichTmp}&quot;

#--------------------------------------------------
# Ajouter la nouvelle chaîne des paramètres de boot
#  + une ligne vide à la fin du fichier temporaire.
#--------------------------------------------------
printf &quot;\t${nvParams}\n\n&quot; &gt;&gt; &quot;${fichTmp}&quot;

#-------------------------------------------
# Remplacer le contenu du fichier &quot;live.cfg&quot;
#  par des caractères 0x00 sur l'image ISO.
#-------------------------------------------
dd bs=1 count=$ficCFGsize seek=$octsOffset if=/dev/zero of=&quot;${fichImgEn}&quot; conv=notrunc,sync 2&gt;/dev/null

#------------------------------------------------
# Copie du nouveau contenu du fichier &quot;live.cfg&quot;.
#------------------------------------------------
dd bs=1 seek=$octsOffset if=&quot;${fichTmp}&quot; of=&quot;${fichImgEn}&quot; conv=notrunc,sync 2&gt;/dev/null

#-----------------------------------------
# Renommer le fichier image ISO avec &quot;FR&quot;.
#-----------------------------------------
mv &quot;${fichImgEn}&quot; &quot;${fichImgFr}&quot;

#---------------------------------------------
# Supprimer le sous-répertoire et son contenu:
# le fichier temporaire.
#---------------------------------------------
rm -rf &quot;${nomRepTmp}&quot;

#------------------------------
# Annoncer que tout a été fait.
#------------------------------
printf &quot;\nVoilà voilà! \&quot;${fichImgFr}\&quot; est la version francisée.\n\nSomme MD5 :\n&quot;

#-----------------------------------------------------------
# Calcul de la somme MD5 de la nouvelle image ISO francisée.
#-----------------------------------------------------------
md5sum &quot;${fichImgFr}&quot;
printf &quot;\n\n&quot;

#=================================================================================================&lt;/code&gt;</text>
      <sha1>sp1lx6eajyh6q7h78bi705v1viazqkc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Fstab</title>
    <ns>0</ns>
    <id>129</id>
    <revision>
      <id>604</id>
      <timestamp>2010-01-31T17:09:08Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <comment>**tombe dans les pommes**</comment>
      <text xml:space="preserve" bytes="5027">'''Note:'''On appellera ''fstab'' le fichier '''/etc/fstab'''.

Le fstab est un fichier permettant de [[Glossaire#Monter|monter]] un périphérique automatiquement au démarrage ( et autres choses que nous verrons au long de ce document ).&lt;br/&gt;
Il n'est modifiable que par l'utilisateur [[Glossaire#Root|root]]. Pour les utilisateurs n'ayant pas accès au compte root, il y a d'autres méthodes telles que [[hal]] ou des règles [[udev]].

Sa syntaxe est la suivante:

 &lt;système de fichiers&gt;                 &lt;point de montage&gt;       &lt;type de système de fichier&gt;     &lt;options de montage&gt;     &lt;dump&gt; &lt;pass&gt;

== Le système de fichiers (filesystem/fs) ==

le système de fichiers peut être ciblé de plusieurs manières.

=== Périphérique Udev ===

Le périphérique peut être reconnu avec le chemin vers son nom de périphérique udev. syntaxe:

 /dev/XdYZ

Sachant que:
 *X vaut ''s'' si votre périphérique est branché en usb/(e-)sata, ''h'' si il est branché en IDE.
 *Y est une lettre de l'alphabet qui change selon l'ordre de montage de votre périphérique
 *Z est le numéro de partition. 1 si c'est la première, 2 la deuxième... '''Note:''' si votre partition est logique, son numéro commencera à 5 car les 4 premiers chiffres sont réservés aux partitions primaires

=== Le label ===

On peut aussi identifier le périphérique grace à son ''label''. syntaxe:

  LABEL=nom_de_périph

Dans un [[Glossaire#Terminal|terminal]], tapez la commande suivante:

 ls -l /dev/disk/by-label/

ce qui devrait renvoyer un truc dans ce genre:

 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Docs -&gt; ../../sda7
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 icy\x20box -&gt; ../../sdb1
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Noyau -&gt; ../../sda5
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Swap -&gt; ../../sda6

Recopiez le nom que vous voyez dans le fstab comme décrit précédement.

=== UUID ===

L'[[Glossaire#UUID|UUID]] est une chaine de caractères et de chiffres qui est unique à chaque partition. elle ressemble à ceci:
 21f910fa-4797-4ca3-af0f-cc85e28833d3
ou ceci:
 6CAF4EA76CD5202F
la syntaxe du fstab est la suivante:
 UUID=mon_code_à_ralonge

Pour connaitre le'UUID d'un périphérique, il faut tout d'abord connaitre le nom de périphérique qui lui est associé.
Si vous ne le connaissez pas, vous pouvez le retrouver grâce au label, vu dans la section précédente. Le nom de périphérique ressemble à ''sda6''.
Ensuite, dans un terminal, tapez la commande:
 ls -l /dev/disk/by-uuid
ce qui devrait renvoyer un résultat comme ceci:

 lrwxrwxrwx 1 root root 10 31 janv. 17:04 21f910fa-4797-4ca3-af0f-cc85e28833d3 -&gt; ../../sda6
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 5ce2eda1-cbb9-4a0e-9f75-d2e5da1225ac -&gt; ../../sda7
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 6CAF4EA76CD5202F -&gt; ../../sdb1
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 e06e7cf7-ba25-4dec-9a4a-e5187c566745 -&gt; ../../sda5

Vous retrouverez donc l'UUID en regardant le périphérique vers lequel il renvoie.

== Le point de montage ==

Le point de montage est le dessier dans lequel le périphérique sera monté. syntaxe:
 /chemin/absolu/du/dossier

'''Note:''' si le dossier de montage contient déjà des fichiers, lorsque le périphérique sera monté, le contenu '''visible''' de ce dossier sera celui du périphérique. {{color|red|'''Cela ne veut ''PAS'' dire que vos fichiers préexistants seront effacés!'''}} Ils seront juste ''invisibles''. Un démontage du périphérique suffira pour réafficher vos fichiers.

== le type de système de fichier ==

C'est le nom du type. Par exemple: ext2,ext3,ext4,reiserfs,tmpfs,[[swap]],iso9660(pour les CD/DVD)
Le ntfs est un cas particulier. Veuillez consulter sa [[ntfs|page réservée]]

== les options ==

''Si quelqu'un pouvait complêter cette section svp...''

Les options sont celles qui seront passées à la commande mount lors du montage. Quelques options:

{|
|'''option'''
|'''fonction'''

|-
|rw
|Permet de pouvoir lire et écrire sur le périphérique.

|-
|ro
|N'autorise que la lecture du périphérique.

|-
|users
|Autorise les utilisateurs sans droits à monter le périphérique.

|-
|defaults
| ????

|-
|noatime
|écriture sur le périphérique par blocs de données pour éviter d'user prématurément le disque?? ( à vérifier )

|-
|noauto
|Empêche le disque d'être monté au démarrage. Peut être utile pour un disque utilisé occasionellement.

|}

== dump ==

La colonne dump permet de lancer l'utilitaire dump (utilitaire de sauvegarde) si cette colonne est à 1, l'ignorer si à 0.

== pass ==

Cette commande permet de déterminer dans quel ordre seront vérifiés les systèmes de fichier avec [[fsck]]. mettre 0 à cette colonne fera que le système ne sera jamais vérifié au démarrage.
1 est généralement attribué au système racine.2 est généralement attribué aux autres partitions nécéssitant une vérification ( /home ou /var par exemple )

----
Par [[Utilisateur:L0u!$|L0u!$]] 31 janvier 2010 à 17:09 (UTC) fatigué d'avoir écrit ce roman...</text>
      <sha1>r89kw2u60510domnlprbmvu9peacjha</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>605</id>
      <parentid>604</parentid>
      <timestamp>2010-01-31T17:09:49Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="5024">'''Note:'''On appellera ''fstab'' le fichier '''/etc/fstab'''.

Le fstab est un fichier permettant de [[Glossaire#Monter|monter]] un périphérique automatiquement au démarrage ( et autres choses que nous verrons au long de ce document ).&lt;br/&gt;
Il n'est modifiable que par l'utilisateur [[Glossaire#Root|root]]. Pour les utilisateurs n'ayant pas accès au compte root, il y a d'autres méthodes telles que [[hal]] ou des règles [[udev]].

Sa syntaxe est la suivante:

 &lt;système de fichiers&gt;                 &lt;point de montage&gt;       &lt;type de système de fichier&gt;     &lt;options de montage&gt;     &lt;dump&gt; &lt;pass&gt;

== Le système de fichiers (filesystem/fs) ==

le système de fichiers peut être ciblé de plusieurs manières.

=== Périphérique Udev ===

Le périphérique peut être reconnu avec le chemin vers son nom de périphérique udev. syntaxe:

 /dev/XdYZ

Sachant que:
*X vaut ''s'' si votre périphérique est branché en usb/(e-)sata, ''h'' si il est branché en IDE.
*Y est une lettre de l'alphabet qui change selon l'ordre de montage de votre périphérique
*Z est le numéro de partition. 1 si c'est la première, 2 la deuxième... '''Note:''' si votre partition est logique, son numéro commencera à 5 car les 4 premiers chiffres sont réservés aux partitions primaires

=== Le label ===

On peut aussi identifier le périphérique grace à son ''label''. syntaxe:

  LABEL=nom_de_périph

Dans un [[Glossaire#Terminal|terminal]], tapez la commande suivante:

 ls -l /dev/disk/by-label/

ce qui devrait renvoyer un truc dans ce genre:

 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Docs -&gt; ../../sda7
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 icy\x20box -&gt; ../../sdb1
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Noyau -&gt; ../../sda5
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Swap -&gt; ../../sda6

Recopiez le nom que vous voyez dans le fstab comme décrit précédement.

=== UUID ===

L'[[Glossaire#UUID|UUID]] est une chaine de caractères et de chiffres qui est unique à chaque partition. elle ressemble à ceci:
 21f910fa-4797-4ca3-af0f-cc85e28833d3
ou ceci:
 6CAF4EA76CD5202F
la syntaxe du fstab est la suivante:
 UUID=mon_code_à_ralonge

Pour connaitre le'UUID d'un périphérique, il faut tout d'abord connaitre le nom de périphérique qui lui est associé.
Si vous ne le connaissez pas, vous pouvez le retrouver grâce au label, vu dans la section précédente. Le nom de périphérique ressemble à ''sda6''.
Ensuite, dans un terminal, tapez la commande:
 ls -l /dev/disk/by-uuid
ce qui devrait renvoyer un résultat comme ceci:

 lrwxrwxrwx 1 root root 10 31 janv. 17:04 21f910fa-4797-4ca3-af0f-cc85e28833d3 -&gt; ../../sda6
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 5ce2eda1-cbb9-4a0e-9f75-d2e5da1225ac -&gt; ../../sda7
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 6CAF4EA76CD5202F -&gt; ../../sdb1
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 e06e7cf7-ba25-4dec-9a4a-e5187c566745 -&gt; ../../sda5

Vous retrouverez donc l'UUID en regardant le périphérique vers lequel il renvoie.

== Le point de montage ==

Le point de montage est le dessier dans lequel le périphérique sera monté. syntaxe:
 /chemin/absolu/du/dossier

'''Note:''' si le dossier de montage contient déjà des fichiers, lorsque le périphérique sera monté, le contenu '''visible''' de ce dossier sera celui du périphérique. {{color|red|'''Cela ne veut ''PAS'' dire que vos fichiers préexistants seront effacés!'''}} Ils seront juste ''invisibles''. Un démontage du périphérique suffira pour réafficher vos fichiers.

== le type de système de fichier ==

C'est le nom du type. Par exemple: ext2,ext3,ext4,reiserfs,tmpfs,[[swap]],iso9660(pour les CD/DVD)
Le ntfs est un cas particulier. Veuillez consulter sa [[ntfs|page réservée]]

== les options ==

''Si quelqu'un pouvait complêter cette section svp...''

Les options sont celles qui seront passées à la commande mount lors du montage. Quelques options:

{|
|'''option'''
|'''fonction'''

|-
|rw
|Permet de pouvoir lire et écrire sur le périphérique.

|-
|ro
|N'autorise que la lecture du périphérique.

|-
|users
|Autorise les utilisateurs sans droits à monter le périphérique.

|-
|defaults
| ????

|-
|noatime
|écriture sur le périphérique par blocs de données pour éviter d'user prématurément le disque?? ( à vérifier )

|-
|noauto
|Empêche le disque d'être monté au démarrage. Peut être utile pour un disque utilisé occasionellement.

|}

== dump ==

La colonne dump permet de lancer l'utilitaire dump (utilitaire de sauvegarde) si cette colonne est à 1, l'ignorer si à 0.

== pass ==

Cette commande permet de déterminer dans quel ordre seront vérifiés les systèmes de fichier avec [[fsck]]. mettre 0 à cette colonne fera que le système ne sera jamais vérifié au démarrage.
1 est généralement attribué au système racine.2 est généralement attribué aux autres partitions nécéssitant une vérification ( /home ou /var par exemple )

----
Par [[Utilisateur:L0u!$|L0u!$]] 31 janvier 2010 à 17:09 (UTC) fatigué d'avoir écrit ce roman...</text>
      <sha1>1ligz69ru7stza4klys27av60gsoz6y</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>609</id>
      <parentid>605</parentid>
      <timestamp>2010-01-31T18:06:47Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Le point de montage */</comment>
      <text xml:space="preserve" bytes="5024">'''Note:'''On appellera ''fstab'' le fichier '''/etc/fstab'''.

Le fstab est un fichier permettant de [[Glossaire#Monter|monter]] un périphérique automatiquement au démarrage ( et autres choses que nous verrons au long de ce document ).&lt;br/&gt;
Il n'est modifiable que par l'utilisateur [[Glossaire#Root|root]]. Pour les utilisateurs n'ayant pas accès au compte root, il y a d'autres méthodes telles que [[hal]] ou des règles [[udev]].

Sa syntaxe est la suivante:

 &lt;système de fichiers&gt;                 &lt;point de montage&gt;       &lt;type de système de fichier&gt;     &lt;options de montage&gt;     &lt;dump&gt; &lt;pass&gt;

== Le système de fichiers (filesystem/fs) ==

le système de fichiers peut être ciblé de plusieurs manières.

=== Périphérique Udev ===

Le périphérique peut être reconnu avec le chemin vers son nom de périphérique udev. syntaxe:

 /dev/XdYZ

Sachant que:
*X vaut ''s'' si votre périphérique est branché en usb/(e-)sata, ''h'' si il est branché en IDE.
*Y est une lettre de l'alphabet qui change selon l'ordre de montage de votre périphérique
*Z est le numéro de partition. 1 si c'est la première, 2 la deuxième... '''Note:''' si votre partition est logique, son numéro commencera à 5 car les 4 premiers chiffres sont réservés aux partitions primaires

=== Le label ===

On peut aussi identifier le périphérique grace à son ''label''. syntaxe:

  LABEL=nom_de_périph

Dans un [[Glossaire#Terminal|terminal]], tapez la commande suivante:

 ls -l /dev/disk/by-label/

ce qui devrait renvoyer un truc dans ce genre:

 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Docs -&gt; ../../sda7
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 icy\x20box -&gt; ../../sdb1
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Noyau -&gt; ../../sda5
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Swap -&gt; ../../sda6

Recopiez le nom que vous voyez dans le fstab comme décrit précédement.

=== UUID ===

L'[[Glossaire#UUID|UUID]] est une chaine de caractères et de chiffres qui est unique à chaque partition. elle ressemble à ceci:
 21f910fa-4797-4ca3-af0f-cc85e28833d3
ou ceci:
 6CAF4EA76CD5202F
la syntaxe du fstab est la suivante:
 UUID=mon_code_à_ralonge

Pour connaitre le'UUID d'un périphérique, il faut tout d'abord connaitre le nom de périphérique qui lui est associé.
Si vous ne le connaissez pas, vous pouvez le retrouver grâce au label, vu dans la section précédente. Le nom de périphérique ressemble à ''sda6''.
Ensuite, dans un terminal, tapez la commande:
 ls -l /dev/disk/by-uuid
ce qui devrait renvoyer un résultat comme ceci:

 lrwxrwxrwx 1 root root 10 31 janv. 17:04 21f910fa-4797-4ca3-af0f-cc85e28833d3 -&gt; ../../sda6
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 5ce2eda1-cbb9-4a0e-9f75-d2e5da1225ac -&gt; ../../sda7
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 6CAF4EA76CD5202F -&gt; ../../sdb1
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 e06e7cf7-ba25-4dec-9a4a-e5187c566745 -&gt; ../../sda5

Vous retrouverez donc l'UUID en regardant le périphérique vers lequel il renvoie.

== Le point de montage ==

Le point de montage est le dossier dans lequel le périphérique sera monté. syntaxe:
 /chemin/absolu/du/dossier

'''Note:''' si le dossier de montage contient déjà des fichiers, lorsque le périphérique sera monté, le contenu '''visible''' de ce dossier sera celui du périphérique. {{color|red|'''Cela ne veut ''PAS'' dire que vos fichiers préexistants seront effacés!'''}} Ils seront juste ''invisibles''. Un démontage du périphérique suffira pour réafficher vos fichiers.

== le type de système de fichier ==

C'est le nom du type. Par exemple: ext2,ext3,ext4,reiserfs,tmpfs,[[swap]],iso9660(pour les CD/DVD)
Le ntfs est un cas particulier. Veuillez consulter sa [[ntfs|page réservée]]

== les options ==

''Si quelqu'un pouvait complêter cette section svp...''

Les options sont celles qui seront passées à la commande mount lors du montage. Quelques options:

{|
|'''option'''
|'''fonction'''

|-
|rw
|Permet de pouvoir lire et écrire sur le périphérique.

|-
|ro
|N'autorise que la lecture du périphérique.

|-
|users
|Autorise les utilisateurs sans droits à monter le périphérique.

|-
|defaults
| ????

|-
|noatime
|écriture sur le périphérique par blocs de données pour éviter d'user prématurément le disque?? ( à vérifier )

|-
|noauto
|Empêche le disque d'être monté au démarrage. Peut être utile pour un disque utilisé occasionellement.

|}

== dump ==

La colonne dump permet de lancer l'utilitaire dump (utilitaire de sauvegarde) si cette colonne est à 1, l'ignorer si à 0.

== pass ==

Cette commande permet de déterminer dans quel ordre seront vérifiés les systèmes de fichier avec [[fsck]]. mettre 0 à cette colonne fera que le système ne sera jamais vérifié au démarrage.
1 est généralement attribué au système racine.2 est généralement attribué aux autres partitions nécéssitant une vérification ( /home ou /var par exemple )

----
Par [[Utilisateur:L0u!$|L0u!$]] 31 janvier 2010 à 17:09 (UTC) fatigué d'avoir écrit ce roman...</text>
      <sha1>n94gilk6ctck7bfoq3pkc9r0198d2vq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>610</id>
      <parentid>609</parentid>
      <timestamp>2010-01-31T18:10:34Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <comment>/* les options */</comment>
      <text xml:space="preserve" bytes="5088">'''Note:'''On appellera ''fstab'' le fichier '''/etc/fstab'''.

Le fstab est un fichier permettant de [[Glossaire#Monter|monter]] un périphérique automatiquement au démarrage ( et autres choses que nous verrons au long de ce document ).&lt;br/&gt;
Il n'est modifiable que par l'utilisateur [[Glossaire#Root|root]]. Pour les utilisateurs n'ayant pas accès au compte root, il y a d'autres méthodes telles que [[hal]] ou des règles [[udev]].

Sa syntaxe est la suivante:

 &lt;système de fichiers&gt;                 &lt;point de montage&gt;       &lt;type de système de fichier&gt;     &lt;options de montage&gt;     &lt;dump&gt; &lt;pass&gt;

== Le système de fichiers (filesystem/fs) ==

le système de fichiers peut être ciblé de plusieurs manières.

=== Périphérique Udev ===

Le périphérique peut être reconnu avec le chemin vers son nom de périphérique udev. syntaxe:

 /dev/XdYZ

Sachant que:
*X vaut ''s'' si votre périphérique est branché en usb/(e-)sata, ''h'' si il est branché en IDE.
*Y est une lettre de l'alphabet qui change selon l'ordre de montage de votre périphérique
*Z est le numéro de partition. 1 si c'est la première, 2 la deuxième... '''Note:''' si votre partition est logique, son numéro commencera à 5 car les 4 premiers chiffres sont réservés aux partitions primaires

=== Le label ===

On peut aussi identifier le périphérique grace à son ''label''. syntaxe:

  LABEL=nom_de_périph

Dans un [[Glossaire#Terminal|terminal]], tapez la commande suivante:

 ls -l /dev/disk/by-label/

ce qui devrait renvoyer un truc dans ce genre:

 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Docs -&gt; ../../sda7
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 icy\x20box -&gt; ../../sdb1
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Noyau -&gt; ../../sda5
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Swap -&gt; ../../sda6

Recopiez le nom que vous voyez dans le fstab comme décrit précédement.

=== UUID ===

L'[[Glossaire#UUID|UUID]] est une chaine de caractères et de chiffres qui est unique à chaque partition. elle ressemble à ceci:
 21f910fa-4797-4ca3-af0f-cc85e28833d3
ou ceci:
 6CAF4EA76CD5202F
la syntaxe du fstab est la suivante:
 UUID=mon_code_à_ralonge

Pour connaitre le'UUID d'un périphérique, il faut tout d'abord connaitre le nom de périphérique qui lui est associé.
Si vous ne le connaissez pas, vous pouvez le retrouver grâce au label, vu dans la section précédente. Le nom de périphérique ressemble à ''sda6''.
Ensuite, dans un terminal, tapez la commande:
 ls -l /dev/disk/by-uuid
ce qui devrait renvoyer un résultat comme ceci:

 lrwxrwxrwx 1 root root 10 31 janv. 17:04 21f910fa-4797-4ca3-af0f-cc85e28833d3 -&gt; ../../sda6
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 5ce2eda1-cbb9-4a0e-9f75-d2e5da1225ac -&gt; ../../sda7
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 6CAF4EA76CD5202F -&gt; ../../sdb1
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 e06e7cf7-ba25-4dec-9a4a-e5187c566745 -&gt; ../../sda5

Vous retrouverez donc l'UUID en regardant le périphérique vers lequel il renvoie.

== Le point de montage ==

Le point de montage est le dossier dans lequel le périphérique sera monté. syntaxe:
 /chemin/absolu/du/dossier

'''Note:''' si le dossier de montage contient déjà des fichiers, lorsque le périphérique sera monté, le contenu '''visible''' de ce dossier sera celui du périphérique. {{color|red|'''Cela ne veut ''PAS'' dire que vos fichiers préexistants seront effacés!'''}} Ils seront juste ''invisibles''. Un démontage du périphérique suffira pour réafficher vos fichiers.

== le type de système de fichier ==

C'est le nom du type. Par exemple: ext2,ext3,ext4,reiserfs,tmpfs,[[swap]],iso9660(pour les CD/DVD)
Le ntfs est un cas particulier. Veuillez consulter sa [[ntfs|page réservée]]

== les options ==

''Si quelqu'un pouvait complêter cette section svp...''

Les options sont celles qui seront passées à la commande mount lors du montage. Quelques options:

{|
|'''option'''
|'''fonction'''

|-
|rw
|Permet de pouvoir lire et écrire sur le périphérique.

|-
|ro
|N'autorise que la lecture du périphérique.

|-
|users
|Autorise les utilisateurs sans droits à monter le périphérique.

|-
|defaults
| ????

|-
|noatime
|écriture sur le périphérique par blocs de données pour éviter d'user prématurément le disque??, ne met pas à jour la date d'accès dans le cas d'une lecture ( à vérifier )

|-
|noauto
|Empêche le disque d'être monté au démarrage. Peut être utile pour un disque utilisé occasionnellement.

|}

== dump ==

La colonne dump permet de lancer l'utilitaire dump (utilitaire de sauvegarde) si cette colonne est à 1, l'ignorer si à 0.

== pass ==

Cette commande permet de déterminer dans quel ordre seront vérifiés les systèmes de fichier avec [[fsck]]. mettre 0 à cette colonne fera que le système ne sera jamais vérifié au démarrage.
1 est généralement attribué au système racine.2 est généralement attribué aux autres partitions nécéssitant une vérification ( /home ou /var par exemple )

----
Par [[Utilisateur:L0u!$|L0u!$]] 31 janvier 2010 à 17:09 (UTC) fatigué d'avoir écrit ce roman...</text>
      <sha1>8ow2phbdh9zsw5wtv6lg3bi6hlmios0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>611</id>
      <parentid>610</parentid>
      <timestamp>2010-01-31T18:51:16Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* pass */</comment>
      <text xml:space="preserve" bytes="5087">'''Note:'''On appellera ''fstab'' le fichier '''/etc/fstab'''.

Le fstab est un fichier permettant de [[Glossaire#Monter|monter]] un périphérique automatiquement au démarrage ( et autres choses que nous verrons au long de ce document ).&lt;br/&gt;
Il n'est modifiable que par l'utilisateur [[Glossaire#Root|root]]. Pour les utilisateurs n'ayant pas accès au compte root, il y a d'autres méthodes telles que [[hal]] ou des règles [[udev]].

Sa syntaxe est la suivante:

 &lt;système de fichiers&gt;                 &lt;point de montage&gt;       &lt;type de système de fichier&gt;     &lt;options de montage&gt;     &lt;dump&gt; &lt;pass&gt;

== Le système de fichiers (filesystem/fs) ==

le système de fichiers peut être ciblé de plusieurs manières.

=== Périphérique Udev ===

Le périphérique peut être reconnu avec le chemin vers son nom de périphérique udev. syntaxe:

 /dev/XdYZ

Sachant que:
*X vaut ''s'' si votre périphérique est branché en usb/(e-)sata, ''h'' si il est branché en IDE.
*Y est une lettre de l'alphabet qui change selon l'ordre de montage de votre périphérique
*Z est le numéro de partition. 1 si c'est la première, 2 la deuxième... '''Note:''' si votre partition est logique, son numéro commencera à 5 car les 4 premiers chiffres sont réservés aux partitions primaires

=== Le label ===

On peut aussi identifier le périphérique grace à son ''label''. syntaxe:

  LABEL=nom_de_périph

Dans un [[Glossaire#Terminal|terminal]], tapez la commande suivante:

 ls -l /dev/disk/by-label/

ce qui devrait renvoyer un truc dans ce genre:

 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Docs -&gt; ../../sda7
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 icy\x20box -&gt; ../../sdb1
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Noyau -&gt; ../../sda5
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Swap -&gt; ../../sda6

Recopiez le nom que vous voyez dans le fstab comme décrit précédement.

=== UUID ===

L'[[Glossaire#UUID|UUID]] est une chaine de caractères et de chiffres qui est unique à chaque partition. elle ressemble à ceci:
 21f910fa-4797-4ca3-af0f-cc85e28833d3
ou ceci:
 6CAF4EA76CD5202F
la syntaxe du fstab est la suivante:
 UUID=mon_code_à_ralonge

Pour connaitre le'UUID d'un périphérique, il faut tout d'abord connaitre le nom de périphérique qui lui est associé.
Si vous ne le connaissez pas, vous pouvez le retrouver grâce au label, vu dans la section précédente. Le nom de périphérique ressemble à ''sda6''.
Ensuite, dans un terminal, tapez la commande:
 ls -l /dev/disk/by-uuid
ce qui devrait renvoyer un résultat comme ceci:

 lrwxrwxrwx 1 root root 10 31 janv. 17:04 21f910fa-4797-4ca3-af0f-cc85e28833d3 -&gt; ../../sda6
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 5ce2eda1-cbb9-4a0e-9f75-d2e5da1225ac -&gt; ../../sda7
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 6CAF4EA76CD5202F -&gt; ../../sdb1
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 e06e7cf7-ba25-4dec-9a4a-e5187c566745 -&gt; ../../sda5

Vous retrouverez donc l'UUID en regardant le périphérique vers lequel il renvoie.

== Le point de montage ==

Le point de montage est le dossier dans lequel le périphérique sera monté. syntaxe:
 /chemin/absolu/du/dossier

'''Note:''' si le dossier de montage contient déjà des fichiers, lorsque le périphérique sera monté, le contenu '''visible''' de ce dossier sera celui du périphérique. {{color|red|'''Cela ne veut ''PAS'' dire que vos fichiers préexistants seront effacés!'''}} Ils seront juste ''invisibles''. Un démontage du périphérique suffira pour réafficher vos fichiers.

== le type de système de fichier ==

C'est le nom du type. Par exemple: ext2,ext3,ext4,reiserfs,tmpfs,[[swap]],iso9660(pour les CD/DVD)
Le ntfs est un cas particulier. Veuillez consulter sa [[ntfs|page réservée]]

== les options ==

''Si quelqu'un pouvait complêter cette section svp...''

Les options sont celles qui seront passées à la commande mount lors du montage. Quelques options:

{|
|'''option'''
|'''fonction'''

|-
|rw
|Permet de pouvoir lire et écrire sur le périphérique.

|-
|ro
|N'autorise que la lecture du périphérique.

|-
|users
|Autorise les utilisateurs sans droits à monter le périphérique.

|-
|defaults
| ????

|-
|noatime
|écriture sur le périphérique par blocs de données pour éviter d'user prématurément le disque??, ne met pas à jour la date d'accès dans le cas d'une lecture ( à vérifier )

|-
|noauto
|Empêche le disque d'être monté au démarrage. Peut être utile pour un disque utilisé occasionnellement.

|}

== dump ==

La colonne dump permet de lancer l'utilitaire dump (utilitaire de sauvegarde) si cette colonne est à 1, l'ignorer si à 0.

== pass ==

Cette commande permet de déterminer dans quel ordre seront vérifiés les systèmes de fichier avec [[fsck]]. mettre 0 à cette colonne fera que le système ne sera jamais vérifié au démarrage.
1 est généralement attribué au système racine.2 est généralement attribué aux autres partitions nécessitant une vérification ( /home ou /var par exemple )

----
Par [[Utilisateur:L0u!$|L0u!$]] 31 janvier 2010 à 17:09 (UTC) fatigué d'avoir écrit ce roman...</text>
      <sha1>6ninwcs9dnh556l5jjsjbycf9tgundq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>705</id>
      <parentid>611</parentid>
      <timestamp>2010-02-01T18:00:18Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="5088">'''Note:'''On appellera ''fstab'' le fichier '''/etc/fstab'''.

Le fstab est un fichier permettant de [[Glossaire#Monter|monter]] un périphérique automatiquement au démarrage ( et autres choses que nous verrons au long de ce document ).&lt;br/&gt;
Il n'est modifiable que par l'utilisateur [[Glossaire#Root|root]]. Pour les utilisateurs n'ayant pas accès au compte root, il y a d'autres méthodes telles que [[hal]] ou des règles [[udev]].

Sa syntaxe est la suivante:

 &lt;système de fichiers&gt;                 &lt;point de montage&gt;       &lt;type de système de fichier&gt;     &lt;options de montage&gt;     &lt;dump&gt; &lt;pass&gt;

== Le système de fichiers (filesystem/fs) ==

le système de fichiers peut être ciblé de plusieurs manières.

=== Nom de Périphérique ===

Le périphérique peut être reconnu avec le chemin vers le fichier qui le représente. syntaxe:

 /dev/XdYZ

Sachant que:
*X vaut ''s'' si votre périphérique est branché en usb/(e-)sata, ''h'' si il est branché en IDE.
*Y est une lettre de l'alphabet qui change selon l'ordre de montage de votre périphérique
*Z est le numéro de partition. 1 si c'est la première, 2 la deuxième... '''Note:''' si votre partition est logique, son numéro commencera à 5 car les 4 premiers chiffres sont réservés aux partitions primaires

=== Le label ===

On peut aussi identifier le périphérique grace à son ''label''. syntaxe:

  LABEL=nom_de_périph

Dans un [[Glossaire#Terminal|terminal]], tapez la commande suivante:

 ls -l /dev/disk/by-label/

ce qui devrait renvoyer un truc dans ce genre:

 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Docs -&gt; ../../sda7
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 icy\x20box -&gt; ../../sdb1
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Noyau -&gt; ../../sda5
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Swap -&gt; ../../sda6

Recopiez le nom que vous voyez dans le fstab comme décrit précédement.

=== UUID ===

L'[[Glossaire#UUID|UUID]] est une chaine de caractères et de chiffres qui est unique à chaque partition. elle ressemble à ceci:
 21f910fa-4797-4ca3-af0f-cc85e28833d3
ou ceci:
 6CAF4EA76CD5202F
la syntaxe du fstab est la suivante:
 UUID=mon_code_à_ralonge

Pour connaitre le'UUID d'un périphérique, il faut tout d'abord connaitre le nom de périphérique qui lui est associé.
Si vous ne le connaissez pas, vous pouvez le retrouver grâce au label, vu dans la section précédente. Le nom de périphérique ressemble à ''sda6''.
Ensuite, dans un terminal, tapez la commande:
 ls -l /dev/disk/by-uuid
ce qui devrait renvoyer un résultat comme ceci:

 lrwxrwxrwx 1 root root 10 31 janv. 17:04 21f910fa-4797-4ca3-af0f-cc85e28833d3 -&gt; ../../sda6
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 5ce2eda1-cbb9-4a0e-9f75-d2e5da1225ac -&gt; ../../sda7
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 6CAF4EA76CD5202F -&gt; ../../sdb1
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 e06e7cf7-ba25-4dec-9a4a-e5187c566745 -&gt; ../../sda5

Vous retrouverez donc l'UUID en regardant le périphérique vers lequel il renvoie.

== Le point de montage ==

Le point de montage est le dossier dans lequel le périphérique sera monté. syntaxe:
 /chemin/absolu/du/dossier

'''Note:''' si le dossier de montage contient déjà des fichiers, lorsque le périphérique sera monté, le contenu '''visible''' de ce dossier sera celui du périphérique. {{color|red|'''Cela ne veut ''PAS'' dire que vos fichiers préexistants seront effacés!'''}} Ils seront juste ''invisibles''. Un démontage du périphérique suffira pour réafficher vos fichiers.

== le type de système de fichier ==

C'est le nom du type. Par exemple: ext2,ext3,ext4,reiserfs,tmpfs,[[swap]],iso9660(pour les CD/DVD)
Le ntfs est un cas particulier. Veuillez consulter sa [[ntfs|page réservée]]

== les options ==

''Si quelqu'un pouvait complêter cette section svp...''

Les options sont celles qui seront passées à la commande mount lors du montage. Quelques options:

{|
|'''option'''
|'''fonction'''

|-
|rw
|Permet de pouvoir lire et écrire sur le périphérique.

|-
|ro
|N'autorise que la lecture du périphérique.

|-
|users
|Autorise les utilisateurs sans droits à monter le périphérique.

|-
|defaults
| ????

|-
|noatime
|écriture sur le périphérique par blocs de données pour éviter d'user prématurément le disque??, ne met pas à jour la date d'accès dans le cas d'une lecture ( à vérifier )

|-
|noauto
|Empêche le disque d'être monté au démarrage. Peut être utile pour un disque utilisé occasionnellement.

|}

== dump ==

La colonne dump permet de lancer l'utilitaire dump (utilitaire de sauvegarde) si cette colonne est à 1, l'ignorer si à 0.

== pass ==

Cette commande permet de déterminer dans quel ordre seront vérifiés les systèmes de fichier avec [[fsck]]. mettre 0 à cette colonne fera que le système ne sera jamais vérifié au démarrage.
1 est généralement attribué au système racine.2 est généralement attribué aux autres partitions nécessitant une vérification ( /home ou /var par exemple )

----
Par [[Utilisateur:L0u!$|L0u!$]] 31 janvier 2010 à 17:09 (UTC) fatigué d'avoir écrit ce roman...</text>
      <sha1>hd0a2ndga38g7kfbsc2qs9dqskq9jg1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>919</id>
      <parentid>705</parentid>
      <timestamp>2010-02-05T19:10:03Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="5077">'''Note:'''On appellera ''fstab'' le fichier '''/etc/fstab'''.

Le fstab est un fichier permettant de [[Glossaire#Monter|monter]] un périphérique automatiquement au démarrage ( et autres choses que nous verrons au long de ce document ).&lt;br/&gt;
Il n'est modifiable que par l'utilisateur [[Glossaire#Root|root]]. Pour les utilisateurs n'ayant pas accès au compte root, il y a d'autres méthodes telles que [[hal]] ou des règles [[udev]].

Sa syntaxe est la suivante:

 &lt;système de fichiers&gt;                 &lt;point de montage&gt;       &lt;type de système de fichier&gt;     &lt;options de montage&gt;     &lt;dump&gt; &lt;pass&gt;

== Le système de fichiers (filesystem/fs) ==

le système de fichiers peut être ciblé de plusieurs manières.

=== Nom de Périphérique ===

Le périphérique peut être reconnu avec le chemin vers le fichier qui le représente. syntaxe:

 /dev/XdYZ

Sachant que:
*X vaut ''s'' si votre périphérique est branché en usb/(e-)sata, ''h'' si il est branché en IDE.
*Y est une lettre de l'alphabet qui change selon l'ordre de montage de votre périphérique
*Z est le numéro de partition. 1 si c'est la première, 2 la deuxième... '''Note:''' si votre partition est logique, son numéro commencera à 5 car les 4 premiers chiffres sont réservés aux partitions primaires

=== Le label ===

On peut aussi identifier le périphérique grace à son ''label''. syntaxe:

  LABEL=nom_de_périph

Dans un [[Glossaire#Terminal|terminal]], tapez la commande suivante:

 ls -l /dev/disk/by-label/

ce qui devrait renvoyer un truc dans ce genre:

 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Docs -&gt; ../../sda7
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 icy\x20box -&gt; ../../sdb1
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Noyau -&gt; ../../sda5
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Swap -&gt; ../../sda6

Recopiez le nom que vous voyez dans le fstab comme décrit précédement.

=== UUID ===

L'[[Glossaire#UUID|UUID]] est une chaine de caractères et de chiffres qui est unique à chaque partition. elle ressemble à ceci:
 21f910fa-4797-4ca3-af0f-cc85e28833d3
ou ceci:
 6CAF4EA76CD5202F
la syntaxe du fstab est la suivante:
 UUID=mon_code_à_ralonge

Pour connaitre le'UUID d'un périphérique, il faut tout d'abord connaitre le nom de périphérique qui lui est associé.
Si vous ne le connaissez pas, vous pouvez le retrouver grâce au label, vu dans la section précédente. Le nom de périphérique ressemble à ''sda6''.
Ensuite, dans un terminal, tapez la commande:
 ls -l /dev/disk/by-uuid
ce qui devrait renvoyer un résultat comme ceci:

 lrwxrwxrwx 1 root root 10 31 janv. 17:04 21f910fa-4797-4ca3-af0f-cc85e28833d3 -&gt; ../../sda6
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 5ce2eda1-cbb9-4a0e-9f75-d2e5da1225ac -&gt; ../../sda7
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 6CAF4EA76CD5202F -&gt; ../../sdb1
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 e06e7cf7-ba25-4dec-9a4a-e5187c566745 -&gt; ../../sda5

Vous retrouverez donc l'UUID en regardant le périphérique vers lequel il renvoie.

== Le point de montage ==

Le point de montage est le dossier dans lequel le périphérique sera monté. syntaxe:
 /chemin/absolu/du/dossier

'''Note:''' si le dossier de montage contient déjà des fichiers, lorsque le périphérique sera monté, le contenu '''visible''' de ce dossier sera celui du périphérique. {{color|red|'''Cela ne veut ''PAS'' dire que vos fichiers préexistants seront effacés!'''}} Ils seront juste ''invisibles''. Un démontage du périphérique suffira pour réafficher vos fichiers.

== le type de système de fichier ==

C'est le nom du type. Par exemple: ext2,ext3,ext4,reiserfs,tmpfs,[[swap]],iso9660(pour les CD/DVD)
Le ntfs est un cas particulier. Veuillez consulter sa [[ntfs|page réservée]]

== les options ==

''Si quelqu'un pouvait complêter cette section svp...''

Les options sont celles qui seront passées à la commande mount lors du montage. Quelques options:

{|
|'''option'''
|'''fonction'''

|-
|rw
|Permet de pouvoir lire et écrire sur le périphérique.

|-
|ro
|N'autorise que la lecture du périphérique.

|-
|users
|Autorise les utilisateurs sans droits à monter le périphérique.

|-
|defaults
| ????

|-
|noatime
|écriture sur le périphérique par blocs de données pour éviter d'user prématurément le disque??, ne met pas à jour la date d'accès dans le cas d'une lecture ( à vérifier )

|-
|noauto
|Empêche le disque d'être monté au démarrage. Peut être utile pour un disque utilisé occasionnellement.

|}

== dump ==

La colonne dump permet de lancer l'utilitaire dump (utilitaire de sauvegarde) si cette colonne est à 1, l'ignorer si à 0.

== pass ==

Cette commande permet de déterminer dans quel ordre seront vérifiés les systèmes de fichier avec [[fsck]]. mettre 0 à cette colonne fera que le système ne sera jamais vérifié au démarrage.
1 est généralement attribué au système racine.2 est généralement attribué aux autres partitions nécessitant une vérification ( /home ou /var par exemple )

----
Par [[Utilisateur:L0u!$|L0u!$]] 31 janvier 2010 à 17:09 (UTC)
[[Catégorie:Commandes]]</text>
      <sha1>d6r1kqpm73z42o8k2yhujs0mcvbosgl</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>926</id>
      <parentid>919</parentid>
      <timestamp>2010-02-06T10:00:46Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <comment>/* Nom de Périphérique */</comment>
      <text xml:space="preserve" bytes="5108">'''Note:'''On appellera ''fstab'' le fichier '''/etc/fstab'''.

Le fstab est un fichier permettant de [[Glossaire#Monter|monter]] un périphérique automatiquement au démarrage ( et autres choses que nous verrons au long de ce document ).&lt;br/&gt;
Il n'est modifiable que par l'utilisateur [[Glossaire#Root|root]]. Pour les utilisateurs n'ayant pas accès au compte root, il y a d'autres méthodes telles que [[hal]] ou des règles [[udev]].

Sa syntaxe est la suivante:

 &lt;système de fichiers&gt;                 &lt;point de montage&gt;       &lt;type de système de fichier&gt;     &lt;options de montage&gt;     &lt;dump&gt; &lt;pass&gt;

== Le système de fichiers (filesystem/fs) ==

le système de fichiers peut être ciblé de plusieurs manières.

=== Nom de Périphérique ===

Le périphérique peut être reconnu avec le chemin vers le fichier qui le représente. syntaxe:

 /dev/XdYZ

Sachant que:
*X vaut ''s'' si votre périphérique est branché en usb ou scsi ou émulation de scsi /(e-)sata, ''h'' si il est branché en IDE.
*Y est une lettre de l'alphabet qui change selon l'ordre de montage de votre périphérique
*Z est le numéro de partition. 1 si c'est la première, 2 la deuxième... '''Note:''' si votre partition est logique, son numéro commencera à 5 car les 4 premiers chiffres sont réservés aux partitions primaires

=== Le label ===

On peut aussi identifier le périphérique grace à son ''label''. syntaxe:

  LABEL=nom_de_périph

Dans un [[Glossaire#Terminal|terminal]], tapez la commande suivante:

 ls -l /dev/disk/by-label/

ce qui devrait renvoyer un truc dans ce genre:

 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Docs -&gt; ../../sda7
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 icy\x20box -&gt; ../../sdb1
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Noyau -&gt; ../../sda5
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Swap -&gt; ../../sda6

Recopiez le nom que vous voyez dans le fstab comme décrit précédement.

=== UUID ===

L'[[Glossaire#UUID|UUID]] est une chaine de caractères et de chiffres qui est unique à chaque partition. elle ressemble à ceci:
 21f910fa-4797-4ca3-af0f-cc85e28833d3
ou ceci:
 6CAF4EA76CD5202F
la syntaxe du fstab est la suivante:
 UUID=mon_code_à_ralonge

Pour connaitre le'UUID d'un périphérique, il faut tout d'abord connaitre le nom de périphérique qui lui est associé.
Si vous ne le connaissez pas, vous pouvez le retrouver grâce au label, vu dans la section précédente. Le nom de périphérique ressemble à ''sda6''.
Ensuite, dans un terminal, tapez la commande:
 ls -l /dev/disk/by-uuid
ce qui devrait renvoyer un résultat comme ceci:

 lrwxrwxrwx 1 root root 10 31 janv. 17:04 21f910fa-4797-4ca3-af0f-cc85e28833d3 -&gt; ../../sda6
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 5ce2eda1-cbb9-4a0e-9f75-d2e5da1225ac -&gt; ../../sda7
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 6CAF4EA76CD5202F -&gt; ../../sdb1
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 e06e7cf7-ba25-4dec-9a4a-e5187c566745 -&gt; ../../sda5

Vous retrouverez donc l'UUID en regardant le périphérique vers lequel il renvoie.

== Le point de montage ==

Le point de montage est le dossier dans lequel le périphérique sera monté. syntaxe:
 /chemin/absolu/du/dossier

'''Note:''' si le dossier de montage contient déjà des fichiers, lorsque le périphérique sera monté, le contenu '''visible''' de ce dossier sera celui du périphérique. {{color|red|'''Cela ne veut ''PAS'' dire que vos fichiers préexistants seront effacés!'''}} Ils seront juste ''invisibles''. Un démontage du périphérique suffira pour réafficher vos fichiers.

== le type de système de fichier ==

C'est le nom du type. Par exemple: ext2,ext3,ext4,reiserfs,tmpfs,[[swap]],iso9660(pour les CD/DVD)
Le ntfs est un cas particulier. Veuillez consulter sa [[ntfs|page réservée]]

== les options ==

''Si quelqu'un pouvait complêter cette section svp...''

Les options sont celles qui seront passées à la commande mount lors du montage. Quelques options:

{|
|'''option'''
|'''fonction'''

|-
|rw
|Permet de pouvoir lire et écrire sur le périphérique.

|-
|ro
|N'autorise que la lecture du périphérique.

|-
|users
|Autorise les utilisateurs sans droits à monter le périphérique.

|-
|defaults
| ????

|-
|noatime
|écriture sur le périphérique par blocs de données pour éviter d'user prématurément le disque??, ne met pas à jour la date d'accès dans le cas d'une lecture ( à vérifier )

|-
|noauto
|Empêche le disque d'être monté au démarrage. Peut être utile pour un disque utilisé occasionnellement.

|}

== dump ==

La colonne dump permet de lancer l'utilitaire dump (utilitaire de sauvegarde) si cette colonne est à 1, l'ignorer si à 0.

== pass ==

Cette commande permet de déterminer dans quel ordre seront vérifiés les systèmes de fichier avec [[fsck]]. mettre 0 à cette colonne fera que le système ne sera jamais vérifié au démarrage.
1 est généralement attribué au système racine.2 est généralement attribué aux autres partitions nécessitant une vérification ( /home ou /var par exemple )

----
Par [[Utilisateur:L0u!$|L0u!$]] 31 janvier 2010 à 17:09 (UTC)
[[Catégorie:Commandes]]</text>
      <sha1>l7rjgz42eh5dk97gavju1nwuonqpurn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>989</id>
      <parentid>926</parentid>
      <timestamp>2010-02-07T09:15:52Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <comment>/* les options */</comment>
      <text xml:space="preserve" bytes="5158">'''Note:'''On appellera ''fstab'' le fichier '''/etc/fstab'''.

Le fstab est un fichier permettant de [[Glossaire#Monter|monter]] un périphérique automatiquement au démarrage ( et autres choses que nous verrons au long de ce document ).&lt;br/&gt;
Il n'est modifiable que par l'utilisateur [[Glossaire#Root|root]]. Pour les utilisateurs n'ayant pas accès au compte root, il y a d'autres méthodes telles que [[hal]] ou des règles [[udev]].

Sa syntaxe est la suivante:

 &lt;système de fichiers&gt;                 &lt;point de montage&gt;       &lt;type de système de fichier&gt;     &lt;options de montage&gt;     &lt;dump&gt; &lt;pass&gt;

== Le système de fichiers (filesystem/fs) ==

le système de fichiers peut être ciblé de plusieurs manières.

=== Nom de Périphérique ===

Le périphérique peut être reconnu avec le chemin vers le fichier qui le représente. syntaxe:

 /dev/XdYZ

Sachant que:
*X vaut ''s'' si votre périphérique est branché en usb ou scsi ou émulation de scsi /(e-)sata, ''h'' si il est branché en IDE.
*Y est une lettre de l'alphabet qui change selon l'ordre de montage de votre périphérique
*Z est le numéro de partition. 1 si c'est la première, 2 la deuxième... '''Note:''' si votre partition est logique, son numéro commencera à 5 car les 4 premiers chiffres sont réservés aux partitions primaires

=== Le label ===

On peut aussi identifier le périphérique grace à son ''label''. syntaxe:

  LABEL=nom_de_périph

Dans un [[Glossaire#Terminal|terminal]], tapez la commande suivante:

 ls -l /dev/disk/by-label/

ce qui devrait renvoyer un truc dans ce genre:

 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Docs -&gt; ../../sda7
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 icy\x20box -&gt; ../../sdb1
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Noyau -&gt; ../../sda5
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Swap -&gt; ../../sda6

Recopiez le nom que vous voyez dans le fstab comme décrit précédement.

=== UUID ===

L'[[Glossaire#UUID|UUID]] est une chaine de caractères et de chiffres qui est unique à chaque partition. elle ressemble à ceci:
 21f910fa-4797-4ca3-af0f-cc85e28833d3
ou ceci:
 6CAF4EA76CD5202F
la syntaxe du fstab est la suivante:
 UUID=mon_code_à_ralonge

Pour connaitre le'UUID d'un périphérique, il faut tout d'abord connaitre le nom de périphérique qui lui est associé.
Si vous ne le connaissez pas, vous pouvez le retrouver grâce au label, vu dans la section précédente. Le nom de périphérique ressemble à ''sda6''.
Ensuite, dans un terminal, tapez la commande:
 ls -l /dev/disk/by-uuid
ce qui devrait renvoyer un résultat comme ceci:

 lrwxrwxrwx 1 root root 10 31 janv. 17:04 21f910fa-4797-4ca3-af0f-cc85e28833d3 -&gt; ../../sda6
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 5ce2eda1-cbb9-4a0e-9f75-d2e5da1225ac -&gt; ../../sda7
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 6CAF4EA76CD5202F -&gt; ../../sdb1
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 e06e7cf7-ba25-4dec-9a4a-e5187c566745 -&gt; ../../sda5

Vous retrouverez donc l'UUID en regardant le périphérique vers lequel il renvoie.

== Le point de montage ==

Le point de montage est le dossier dans lequel le périphérique sera monté. syntaxe:
 /chemin/absolu/du/dossier

'''Note:''' si le dossier de montage contient déjà des fichiers, lorsque le périphérique sera monté, le contenu '''visible''' de ce dossier sera celui du périphérique. {{color|red|'''Cela ne veut ''PAS'' dire que vos fichiers préexistants seront effacés!'''}} Ils seront juste ''invisibles''. Un démontage du périphérique suffira pour réafficher vos fichiers.

== le type de système de fichier ==

C'est le nom du type. Par exemple: ext2,ext3,ext4,reiserfs,tmpfs,[[swap]],iso9660(pour les CD/DVD)
Le ntfs est un cas particulier. Veuillez consulter sa [[ntfs|page réservée]]

== les options ==

''Si quelqu'un pouvait complêter cette section svp...''

Les options sont celles qui seront passées à la commande mount lors du montage. Quelques options:

{|
|'''option'''
|'''fonction'''

|-
|rw
|Permet de pouvoir lire et écrire sur la partition.

|-
|ro
|N'autorise que la lecture de la partition.

|-
|users
|Autorise les utilisateurs sans droits à monter la partition.

|-
|defaults
| Le montage et les droits appartiendront à &quot;root&quot;

|-
|noatime (no access time)
|écriture sur le périphérique par blocs de données pour éviter d'user prématurément le disque??, ne met pas à jour la date d'accès dans le cas d'une lecture ( à vérifier )

|-
|noauto
|Empêche le disque d'être monté au démarrage. Peut être utile pour un disque utilisé occasionnellement.

|}

== dump ==

La colonne dump permet de lancer l'utilitaire dump (utilitaire de sauvegarde) si cette colonne est à 1, l'ignorer si à 0.

== pass ==

Cette commande permet de déterminer dans quel ordre seront vérifiés les systèmes de fichier avec [[fsck]]. mettre 0 à cette colonne fera que le système ne sera jamais vérifié au démarrage.
1 est généralement attribué au système racine.2 est généralement attribué aux autres partitions nécessitant une vérification ( /home ou /var par exemple )

----
Par [[Utilisateur:L0u!$|L0u!$]] 31 janvier 2010 à 17:09 (UTC)
[[Catégorie:Commandes]]</text>
      <sha1>ali9hv7jr528a5dgs404a87ggv7gl9y</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1102</id>
      <parentid>989</parentid>
      <timestamp>2010-02-17T19:16:04Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="5203">'''Note:'''On appellera ''fstab'' le fichier '''/etc/fstab'''.

Le fstab est un fichier permettant de [[Glossaire#Monter|monter]] un périphérique automatiquement au démarrage ( et autres choses que nous verrons au long de ce document ).&lt;br/&gt;
Il n'est modifiable que par l'utilisateur [[Glossaire#Root|root]]. Pour les utilisateurs n'ayant pas accès au compte root, il y a d'autres méthodes telles que [[hal]] ou des règles [[udev]].

Sa syntaxe est la suivante:

 &lt;système de fichiers&gt;                 &lt;point de montage&gt;       &lt;type de système de fichier&gt;     &lt;options de montage&gt;     &lt;dump&gt; &lt;pass&gt;

== Le système de fichiers (filesystem/fs) ==

le système de fichiers peut être ciblé de plusieurs manières.

=== Nom de Périphérique ===

Le périphérique peut être reconnu avec le chemin vers le fichier qui le représente. syntaxe:

 /dev/XdYZ

Sachant que:
*X vaut ''s'' si votre périphérique est branché en usb ou scsi ou émulation de scsi /(e-)sata, ''h'' si il est branché en IDE.
*Y est une lettre de l'alphabet qui change selon l'ordre de montage de votre périphérique
*Z est le numéro de partition. 1 si c'est la première, 2 la deuxième... '''Note:''' si votre partition est logique, son numéro commencera à 5 car les 4 premiers chiffres sont réservés aux partitions primaires

=== Le label ===

On peut aussi identifier le périphérique grace à son ''label''. syntaxe:

  LABEL=nom_de_périph

Dans un [[Glossaire#Terminal|terminal]], tapez la commande suivante:

 ls -l /dev/disk/by-label/

ce qui devrait renvoyer un truc dans ce genre:

 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Docs -&gt; ../../sda7
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 icy\x20box -&gt; ../../sdb1
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Noyau -&gt; ../../sda5
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Swap -&gt; ../../sda6

Recopiez le nom que vous voyez dans le fstab comme décrit précédement.

=== UUID ===

L'[[Glossaire#UUID|UUID]] est une chaine de caractères et de chiffres qui est unique à chaque partition. elle ressemble à ceci:
 21f910fa-4797-4ca3-af0f-cc85e28833d3
ou ceci:
 6CAF4EA76CD5202F
la syntaxe du fstab est la suivante:
 UUID=mon_code_à_ralonge

Pour connaitre le'UUID d'un périphérique, il faut tout d'abord connaitre le nom de périphérique qui lui est associé.
Si vous ne le connaissez pas, vous pouvez le retrouver grâce au label, vu dans la section précédente. Le nom de périphérique ressemble à ''sda6''.
Ensuite, dans un terminal, tapez la commande:
 ls -l /dev/disk/by-uuid
ce qui devrait renvoyer un résultat comme ceci:

 lrwxrwxrwx 1 root root 10 31 janv. 17:04 21f910fa-4797-4ca3-af0f-cc85e28833d3 -&gt; ../../sda6
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 5ce2eda1-cbb9-4a0e-9f75-d2e5da1225ac -&gt; ../../sda7
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 6CAF4EA76CD5202F -&gt; ../../sdb1
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 e06e7cf7-ba25-4dec-9a4a-e5187c566745 -&gt; ../../sda5

Vous retrouverez donc l'UUID en regardant le périphérique vers lequel il renvoie.

== Le point de montage ==

Le point de montage est le dossier dans lequel le périphérique sera monté. syntaxe:
 /chemin/absolu/du/dossier

'''Note:''' si le dossier de montage contient déjà des fichiers, lorsque le périphérique sera monté, le contenu '''visible''' de ce dossier sera celui du périphérique. {{color|red|'''Cela ne veut ''PAS'' dire que vos fichiers préexistants seront effacés!'''}} Ils seront juste ''invisibles''. Un démontage du périphérique suffira pour réafficher vos fichiers.

== le type de système de fichier ==

C'est le nom du type. Par exemple: ext2,ext3,ext4,reiserfs,tmpfs,[[swap]],iso9660(pour les CD/DVD)
Le ntfs est un cas particulier. Veuillez consulter sa [[ntfs|page réservée]]

== les options ==

''Si quelqu'un pouvait complêter cette section svp...''

Les options sont celles qui seront passées à la commande mount lors du montage.Chaque option est séparée par une virgule.
 Quelques options:

{|
|'''option'''
|'''fonction'''

|-
|rw
|Permet de pouvoir lire et écrire sur la partition.

|-
|ro
|N'autorise que la lecture de la partition.

|-
|users
|Autorise les utilisateurs sans droits à monter la partition.

|-
|defaults
| Le montage et les droits appartiendront à &quot;root&quot;

|-
|noatime (no access time)
|écriture sur le périphérique par blocs de données pour éviter d'user prématurément le disque??, ne met pas à jour la date d'accès dans le cas d'une lecture ( à vérifier )

|-
|noauto
|Empêche le disque d'être monté au démarrage. Peut être utile pour un disque utilisé occasionnellement.

|}

== dump ==

La colonne dump permet de lancer l'utilitaire dump (utilitaire de sauvegarde) si cette colonne est à 1, l'ignorer si à 0.

== pass ==

Cette commande permet de déterminer dans quel ordre seront vérifiés les systèmes de fichier avec [[fsck]]. mettre 0 à cette colonne fera que le système ne sera jamais vérifié au démarrage.
1 est généralement attribué au système racine.2 est généralement attribué aux autres partitions nécessitant une vérification ( /home ou /var par exemple )

----
Par [[Utilisateur:L0u!$|L0u!$]] 31 janvier 2010 à 17:09 (UTC)
[[Catégorie:Commandes]]</text>
      <sha1>3277qie321h46wzwrt1wma1shqe4j1x</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5366</id>
      <parentid>1102</parentid>
      <timestamp>2013-08-28T07:49:12Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* les options */ MàJ</comment>
      <text xml:space="preserve" bytes="6008">'''Note:'''On appellera ''fstab'' le fichier '''/etc/fstab'''.

Le fstab est un fichier permettant de [[Glossaire#Monter|monter]] un périphérique automatiquement au démarrage ( et autres choses que nous verrons au long de ce document ).&lt;br/&gt;
Il n'est modifiable que par l'utilisateur [[Glossaire#Root|root]]. Pour les utilisateurs n'ayant pas accès au compte root, il y a d'autres méthodes telles que [[hal]] ou des règles [[udev]].

Sa syntaxe est la suivante:

 &lt;système de fichiers&gt;                 &lt;point de montage&gt;       &lt;type de système de fichier&gt;     &lt;options de montage&gt;     &lt;dump&gt; &lt;pass&gt;

== Le système de fichiers (filesystem/fs) ==

le système de fichiers peut être ciblé de plusieurs manières.

=== Nom de Périphérique ===

Le périphérique peut être reconnu avec le chemin vers le fichier qui le représente. syntaxe:

 /dev/XdYZ

Sachant que:
*X vaut ''s'' si votre périphérique est branché en usb ou scsi ou émulation de scsi /(e-)sata, ''h'' si il est branché en IDE.
*Y est une lettre de l'alphabet qui change selon l'ordre de montage de votre périphérique
*Z est le numéro de partition. 1 si c'est la première, 2 la deuxième... '''Note:''' si votre partition est logique, son numéro commencera à 5 car les 4 premiers chiffres sont réservés aux partitions primaires

=== Le label ===

On peut aussi identifier le périphérique grace à son ''label''. syntaxe:

  LABEL=nom_de_périph

Dans un [[Glossaire#Terminal|terminal]], tapez la commande suivante:

 ls -l /dev/disk/by-label/

ce qui devrait renvoyer un truc dans ce genre:

 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Docs -&gt; ../../sda7
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 icy\x20box -&gt; ../../sdb1
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Noyau -&gt; ../../sda5
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Swap -&gt; ../../sda6

Recopiez le nom que vous voyez dans le fstab comme décrit précédement.

=== UUID ===

L'[[Glossaire#UUID|UUID]] est une chaine de caractères et de chiffres qui est unique à chaque partition. elle ressemble à ceci:
 21f910fa-4797-4ca3-af0f-cc85e28833d3
ou ceci:
 6CAF4EA76CD5202F
la syntaxe du fstab est la suivante:
 UUID=mon_code_à_ralonge

Pour connaitre le'UUID d'un périphérique, il faut tout d'abord connaitre le nom de périphérique qui lui est associé.
Si vous ne le connaissez pas, vous pouvez le retrouver grâce au label, vu dans la section précédente. Le nom de périphérique ressemble à ''sda6''.
Ensuite, dans un terminal, tapez la commande:
 ls -l /dev/disk/by-uuid
ce qui devrait renvoyer un résultat comme ceci:

 lrwxrwxrwx 1 root root 10 31 janv. 17:04 21f910fa-4797-4ca3-af0f-cc85e28833d3 -&gt; ../../sda6
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 5ce2eda1-cbb9-4a0e-9f75-d2e5da1225ac -&gt; ../../sda7
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 6CAF4EA76CD5202F -&gt; ../../sdb1
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 e06e7cf7-ba25-4dec-9a4a-e5187c566745 -&gt; ../../sda5

Vous retrouverez donc l'UUID en regardant le périphérique vers lequel il renvoie.

== Le point de montage ==

Le point de montage est le dossier dans lequel le périphérique sera monté. syntaxe:
 /chemin/absolu/du/dossier

'''Note:''' si le dossier de montage contient déjà des fichiers, lorsque le périphérique sera monté, le contenu '''visible''' de ce dossier sera celui du périphérique. {{color|red|'''Cela ne veut ''PAS'' dire que vos fichiers préexistants seront effacés!'''}} Ils seront juste ''invisibles''. Un démontage du périphérique suffira pour réafficher vos fichiers.

== le type de système de fichier ==

C'est le nom du type. Par exemple: ext2,ext3,ext4,reiserfs,tmpfs,[[swap]],iso9660(pour les CD/DVD)
Le ntfs est un cas particulier. Veuillez consulter sa [[ntfs|page réservée]]

== les options ==

''Si quelqu'un pouvait complêter cette section svp...''

Les options sont celles qui seront passées à la commande mount lors du montage.Chaque option est séparée par une virgule.
 Quelques options:

{|
|'''option'''
|'''description'''

|-
|defaults
|Options par défaut =&gt; rw, suid, dev, exec, auto, nouser et async.

|-
|rw / ro
|Lecture et écriture autorisées / Lecture seule.
  
|-
|suid / nosuid
|Autorise ou interdit les opérations sur les bits suid et sgid.
  
|-
|dev / nodev
|Interprète / N'interprète pas les noeuds de type caractères ou blocs.
|-
|exec / noexec
|Autorise / Interdit l’exécution de fichiers binaires.

|-
|auto / noauto
|Automatiquement &quot;mounté&quot; au démarrage ou lors d'un appel « mount -a » / ou non.

|-
|nouser / user
|Seul &quot;root&quot; est autorisé à effectuer le &quot;mountage&quot; &quot;dé-mountage&quot; / Tous les utilisateurs aussi.

|-
|async / sync
|Accès en mode asynchrone / synchrone.
 
|-
|owner
|Seul le propriétaire est autorisé à &quot;mounter&quot; &quot;démounter&quot; le périphérique.

|-
|nofail
|Ne pas renvoyer d'erreur pour ce périphérique s'il n'existe pas.

|-
|sw
|Pour les partitions de type &quot;swap&quot;.
  
|-
|noatime
|Optimisation SSD (NO Access TIME): Écriture sur le périphérique par blocs de données (pour limiter le nombre d'accès disques) et ne met pas à jour la date d'accès dans le cas d'une lecture.

|-
|discard
|Optimisation SSD : Active le mode TRIM : Gestion des effacements/libération par blocs. Avant d'activer cette option, vérifier si ce mode est supporté par le disque et le système de fichiers.

|-
|comment
|Utilisé par les programmes de maintenance de fstab.

|}

== dump ==

La colonne dump permet de lancer l'utilitaire dump (utilitaire de sauvegarde) si cette colonne est à 1, l'ignorer si à 0.

== pass ==

Cette commande permet de déterminer dans quel ordre seront vérifiés les systèmes de fichier avec [[fsck]]. mettre 0 à cette colonne fera que le système ne sera jamais vérifié au démarrage.
1 est généralement attribué au système racine.2 est généralement attribué aux autres partitions nécessitant une vérification ( /home ou /var par exemple )

----
Par [[Utilisateur:L0u!$|L0u!$]] 31 janvier 2010 à 17:09 (UTC)
[[Catégorie:Commandes]]</text>
      <sha1>tu4aqlu1ef4uieak0x1liv1slzf1vxr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5367</id>
      <parentid>5366</parentid>
      <timestamp>2013-08-28T07:59:47Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <comment>/* les options */ Mise à jour</comment>
      <text xml:space="preserve" bytes="5973">'''Note:'''On appellera ''fstab'' le fichier '''/etc/fstab'''.

Le fstab est un fichier permettant de [[Glossaire#Monter|monter]] un périphérique automatiquement au démarrage ( et autres choses que nous verrons au long de ce document ).&lt;br/&gt;
Il n'est modifiable que par l'utilisateur [[Glossaire#Root|root]]. Pour les utilisateurs n'ayant pas accès au compte root, il y a d'autres méthodes telles que [[hal]] ou des règles [[udev]].

Sa syntaxe est la suivante:

 &lt;système de fichiers&gt;                 &lt;point de montage&gt;       &lt;type de système de fichier&gt;     &lt;options de montage&gt;     &lt;dump&gt; &lt;pass&gt;

== Le système de fichiers (filesystem/fs) ==

le système de fichiers peut être ciblé de plusieurs manières.

=== Nom de Périphérique ===

Le périphérique peut être reconnu avec le chemin vers le fichier qui le représente. syntaxe:

 /dev/XdYZ

Sachant que:
*X vaut ''s'' si votre périphérique est branché en usb ou scsi ou émulation de scsi /(e-)sata, ''h'' si il est branché en IDE.
*Y est une lettre de l'alphabet qui change selon l'ordre de montage de votre périphérique
*Z est le numéro de partition. 1 si c'est la première, 2 la deuxième... '''Note:''' si votre partition est logique, son numéro commencera à 5 car les 4 premiers chiffres sont réservés aux partitions primaires

=== Le label ===

On peut aussi identifier le périphérique grace à son ''label''. syntaxe:

  LABEL=nom_de_périph

Dans un [[Glossaire#Terminal|terminal]], tapez la commande suivante:

 ls -l /dev/disk/by-label/

ce qui devrait renvoyer un truc dans ce genre:

 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Docs -&gt; ../../sda7
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 icy\x20box -&gt; ../../sdb1
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Noyau -&gt; ../../sda5
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Swap -&gt; ../../sda6

Recopiez le nom que vous voyez dans le fstab comme décrit précédement.

=== UUID ===

L'[[Glossaire#UUID|UUID]] est une chaine de caractères et de chiffres qui est unique à chaque partition. elle ressemble à ceci:
 21f910fa-4797-4ca3-af0f-cc85e28833d3
ou ceci:
 6CAF4EA76CD5202F
la syntaxe du fstab est la suivante:
 UUID=mon_code_à_ralonge

Pour connaitre le'UUID d'un périphérique, il faut tout d'abord connaitre le nom de périphérique qui lui est associé.
Si vous ne le connaissez pas, vous pouvez le retrouver grâce au label, vu dans la section précédente. Le nom de périphérique ressemble à ''sda6''.
Ensuite, dans un terminal, tapez la commande:
 ls -l /dev/disk/by-uuid
ce qui devrait renvoyer un résultat comme ceci:

 lrwxrwxrwx 1 root root 10 31 janv. 17:04 21f910fa-4797-4ca3-af0f-cc85e28833d3 -&gt; ../../sda6
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 5ce2eda1-cbb9-4a0e-9f75-d2e5da1225ac -&gt; ../../sda7
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 6CAF4EA76CD5202F -&gt; ../../sdb1
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 e06e7cf7-ba25-4dec-9a4a-e5187c566745 -&gt; ../../sda5

Vous retrouverez donc l'UUID en regardant le périphérique vers lequel il renvoie.

== Le point de montage ==

Le point de montage est le dossier dans lequel le périphérique sera monté. syntaxe:
 /chemin/absolu/du/dossier

'''Note:''' si le dossier de montage contient déjà des fichiers, lorsque le périphérique sera monté, le contenu '''visible''' de ce dossier sera celui du périphérique. {{color|red|'''Cela ne veut ''PAS'' dire que vos fichiers préexistants seront effacés!'''}} Ils seront juste ''invisibles''. Un démontage du périphérique suffira pour réafficher vos fichiers.

== le type de système de fichier ==

C'est le nom du type. Par exemple: ext2,ext3,ext4,reiserfs,tmpfs,[[swap]],iso9660(pour les CD/DVD)
Le ntfs est un cas particulier. Veuillez consulter sa [[ntfs|page réservée]]

== options de montage ==
Les options associées à chaque partition seront utilisées par le programme &quot;mount&quot;.
Le caractère utilisé entre chaque option de la liste est la virgule &quot;,&quot;.

{|
|'''option'''
|'''description'''

|-
|defaults
|Options par défaut =&gt; rw, suid, dev, exec, auto, nouser et async.

|-
|rw / ro
|Lecture et écriture autorisées / Lecture seule.
  
|-
|suid / nosuid
|Autorise ou interdit les opérations sur les bits suid et sgid.
  
|-
|dev / nodev
|Interprète / N'interprète pas les noeuds de type caractères ou blocs.
|-
|exec / noexec
|Autorise / Interdit l’exécution de fichiers binaires.

|-
|auto / noauto
|Automatiquement &quot;mounté&quot; au démarrage ou lors d'un appel « mount -a » / ou non.

|-
|nouser / user
|Seul &quot;root&quot; est autorisé à effectuer le &quot;mountage&quot; &quot;dé-mountage&quot; / Tous les utilisateurs aussi.

|-
|async / sync
|Accès en mode asynchrone / synchrone.
 
|-
|owner
|Seul le propriétaire est autorisé à &quot;mounter&quot; &quot;démounter&quot; le périphérique.

|-
|nofail
|Ne pas renvoyer d'erreur pour ce périphérique s'il n'existe pas.

|-
|sw
|Pour les partitions de type &quot;swap&quot;.
  
|-
|noatime
|Optimisation SSD (NO Access TIME): Écriture sur le périphérique par blocs de données (pour limiter le nombre d'accès disques) et ne met pas à jour la date d'accès dans le cas d'une lecture.

|-
|discard
|Optimisation SSD : Active le mode TRIM : Gestion des effacements/libération par blocs. Avant d'activer cette option, vérifier si ce mode est supporté par le disque et le système de fichiers.

|-
|comment
|Utilisé par les programmes de maintenance de fstab.

|}

== dump ==

La colonne dump permet de lancer l'utilitaire dump (utilitaire de sauvegarde) si cette colonne est à 1, l'ignorer si à 0.

== pass ==

Cette commande permet de déterminer dans quel ordre seront vérifiés les systèmes de fichier avec [[fsck]]. mettre 0 à cette colonne fera que le système ne sera jamais vérifié au démarrage.
1 est généralement attribué au système racine.2 est généralement attribué aux autres partitions nécessitant une vérification ( /home ou /var par exemple )

----
Par [[Utilisateur:L0u!$|L0u!$]] 31 janvier 2010 à 17:09 (UTC)
[[Catégorie:Commandes]]</text>
      <sha1>g1e72jw3jyil9ffnflkqmmpgbfs7w25</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5370</id>
      <parentid>5367</parentid>
      <timestamp>2013-08-28T14:21:40Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="5943">'''Note:'''On appellera ''fstab'' le fichier '''/etc/fstab'''.

Le fstab est un fichier permettant de [[Glossaire#Monter|monter]] un périphérique automatiquement au démarrage ( et autres choses que nous verrons au long de ce document ).&lt;br/&gt;
Il n'est modifiable que par l'utilisateur [[Glossaire#Root|root]]. Pour les utilisateurs n'ayant pas accès au compte root, il y a d'autres méthodes telles que [[hal]] ou des règles [[udev]].

Sa syntaxe est la suivante:

 &lt;système de fichiers&gt; &lt;point de montage&gt; &lt;type de système de fichier&gt; &lt;options de montage&gt; &lt;dump&gt; &lt;pass&gt;

== Le système de fichiers (filesystem/fs) ==

le système de fichiers peut être ciblé de plusieurs manières.

=== Nom de Périphérique ===

Le périphérique peut être reconnu avec le chemin vers le fichier qui le représente. syntaxe:

 /dev/XdYZ

Sachant que:
*X vaut ''s'' si votre périphérique est branché en usb ou scsi ou émulation de scsi /(e-)sata, ''h'' si il est branché en IDE.
*Y est une lettre de l'alphabet qui change selon l'ordre de montage de votre périphérique
*Z est le numéro de partition. 1 si c'est la première, 2 la deuxième... '''Note:''' si votre partition est logique, son numéro commencera à 5 car les 4 premiers chiffres sont réservés aux partitions primaires

=== Le label ===

On peut aussi identifier le périphérique grace à son ''label''. syntaxe:

  LABEL=nom_de_périph

Dans un [[Glossaire#Terminal|terminal]], tapez la commande suivante:

 ls -l /dev/disk/by-label/

ce qui devrait renvoyer un truc dans ce genre:

 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Docs -&gt; ../../sda7
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 icy\x20box -&gt; ../../sdb1
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Noyau -&gt; ../../sda5
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Swap -&gt; ../../sda6

Recopiez le nom que vous voyez dans le fstab comme décrit précédement.

=== UUID ===

L'[[Glossaire#UUID|UUID]] est une chaine de caractères et de chiffres qui est unique à chaque partition. elle ressemble à ceci:
 21f910fa-4797-4ca3-af0f-cc85e28833d3
ou ceci:
 6CAF4EA76CD5202F
la syntaxe du fstab est la suivante:
 UUID=mon_code_à_ralonge

Pour connaitre le'UUID d'un périphérique, il faut tout d'abord connaitre le nom de périphérique qui lui est associé.
Si vous ne le connaissez pas, vous pouvez le retrouver grâce au label, vu dans la section précédente. Le nom de périphérique ressemble à ''sda6''.
Ensuite, dans un terminal, tapez la commande:
 ls -l /dev/disk/by-uuid
ce qui devrait renvoyer un résultat comme ceci:

 lrwxrwxrwx 1 root root 10 31 janv. 17:04 21f910fa-4797-4ca3-af0f-cc85e28833d3 -&gt; ../../sda6
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 5ce2eda1-cbb9-4a0e-9f75-d2e5da1225ac -&gt; ../../sda7
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 6CAF4EA76CD5202F -&gt; ../../sdb1
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 e06e7cf7-ba25-4dec-9a4a-e5187c566745 -&gt; ../../sda5

Vous retrouverez donc l'UUID en regardant le périphérique vers lequel il renvoie.

== Le point de montage ==

Le point de montage est le dossier dans lequel le périphérique sera monté. syntaxe:
 /chemin/absolu/du/dossier

'''Note:''' si le dossier de montage contient déjà des fichiers, lorsque le périphérique sera monté, le contenu '''visible''' de ce dossier sera celui du périphérique. {{color|red|'''Cela ne veut ''PAS'' dire que vos fichiers préexistants seront effacés!'''}} Ils seront juste ''invisibles''. Un démontage du périphérique suffira pour réafficher vos fichiers.

== le type de système de fichier ==

C'est le nom du type. Par exemple: ext2,ext3,ext4,reiserfs,tmpfs,[[swap]],iso9660(pour les CD/DVD)
Le ntfs est un cas particulier. Veuillez consulter sa [[ntfs|page réservée]]

== options de montage ==
Les options associées à chaque partition seront utilisées par le programme &quot;mount&quot;.
Le caractère utilisé entre chaque option de la liste est la virgule &quot;,&quot;.

{|
|'''option'''
|'''description'''

|-
|defaults
|Options par défaut =&gt; rw, suid, dev, exec, auto, nouser et async.

|-
|rw / ro
|Lecture et écriture autorisées / Lecture seule.
  
|-
|suid / nosuid
|Autorise ou interdit les opérations sur les bits suid et sgid.
  
|-
|dev / nodev
|Interprète / N'interprète pas les noeuds de type caractères ou blocs.
|-
|exec / noexec
|Autorise / Interdit l’exécution de fichiers binaires.

|-
|auto / noauto
|Automatiquement &quot;mounté&quot; au démarrage ou lors d'un appel « mount -a » / ou non.

|-
|nouser / user
|Seul &quot;root&quot; est autorisé à effectuer le &quot;mountage&quot; &quot;dé-mountage&quot; / Tous les utilisateurs aussi.

|-
|async / sync
|Accès en mode asynchrone / synchrone.
 
|-
|owner
|Seul le propriétaire est autorisé à &quot;mounter&quot; &quot;démounter&quot; le périphérique.

|-
|nofail
|Ne pas renvoyer d'erreur pour ce périphérique s'il n'existe pas.

|-
|sw
|Pour les partitions de type &quot;swap&quot;.
  
|-
|noatime
|Optimisation SSD (NO Access TIME): Écriture sur le périphérique par blocs de données (pour limiter le nombre d'accès disques) et ne met pas à jour la date d'accès dans le cas d'une lecture.

|-
|discard
|Optimisation SSD : Active le mode TRIM : Gestion des effacements/libération par blocs. Avant d'activer cette option, vérifier si ce mode est supporté par le disque et le système de fichiers.

|-
|comment
|Utilisé par les programmes de maintenance de fstab.

|}

== dump ==

La colonne dump permet de lancer l'utilitaire dump (utilitaire de sauvegarde) si cette colonne est à 1, l'ignorer si à 0.

== pass ==

Cette commande permet de déterminer dans quel ordre seront vérifiés les systèmes de fichier avec [[fsck]]. mettre 0 à cette colonne fera que le système ne sera jamais vérifié au démarrage.
1 est généralement attribué au système racine.2 est généralement attribué aux autres partitions nécessitant une vérification ( /home ou /var par exemple )

----
Par [[Utilisateur:L0u!$|L0u!$]] 31 janvier 2010 à 17:09 (UTC)
[[Catégorie:Commandes]]</text>
      <sha1>7t3nqr95tdtpxmpjup7oowl5z6kzx83</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5375</id>
      <parentid>5370</parentid>
      <timestamp>2013-08-29T02:33:53Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* options de montage */ couleur pour les options par défaut</comment>
      <text xml:space="preserve" bytes="5995">'''Note:'''On appellera ''fstab'' le fichier '''/etc/fstab'''.

Le fstab est un fichier permettant de [[Glossaire#Monter|monter]] un périphérique automatiquement au démarrage ( et autres choses que nous verrons au long de ce document ).&lt;br/&gt;
Il n'est modifiable que par l'utilisateur [[Glossaire#Root|root]]. Pour les utilisateurs n'ayant pas accès au compte root, il y a d'autres méthodes telles que [[hal]] ou des règles [[udev]].

Sa syntaxe est la suivante:

 &lt;système de fichiers&gt; &lt;point de montage&gt; &lt;type de système de fichier&gt; &lt;options de montage&gt; &lt;dump&gt; &lt;pass&gt;

== Le système de fichiers (filesystem/fs) ==

le système de fichiers peut être ciblé de plusieurs manières.

=== Nom de Périphérique ===

Le périphérique peut être reconnu avec le chemin vers le fichier qui le représente. syntaxe:

 /dev/XdYZ

Sachant que:
*X vaut ''s'' si votre périphérique est branché en usb ou scsi ou émulation de scsi /(e-)sata, ''h'' si il est branché en IDE.
*Y est une lettre de l'alphabet qui change selon l'ordre de montage de votre périphérique
*Z est le numéro de partition. 1 si c'est la première, 2 la deuxième... '''Note:''' si votre partition est logique, son numéro commencera à 5 car les 4 premiers chiffres sont réservés aux partitions primaires

=== Le label ===

On peut aussi identifier le périphérique grace à son ''label''. syntaxe:

  LABEL=nom_de_périph

Dans un [[Glossaire#Terminal|terminal]], tapez la commande suivante:

 ls -l /dev/disk/by-label/

ce qui devrait renvoyer un truc dans ce genre:

 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Docs -&gt; ../../sda7
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 icy\x20box -&gt; ../../sdb1
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Noyau -&gt; ../../sda5
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Swap -&gt; ../../sda6

Recopiez le nom que vous voyez dans le fstab comme décrit précédement.

=== UUID ===

L'[[Glossaire#UUID|UUID]] est une chaine de caractères et de chiffres qui est unique à chaque partition. elle ressemble à ceci:
 21f910fa-4797-4ca3-af0f-cc85e28833d3
ou ceci:
 6CAF4EA76CD5202F
la syntaxe du fstab est la suivante:
 UUID=mon_code_à_ralonge

Pour connaitre le'UUID d'un périphérique, il faut tout d'abord connaitre le nom de périphérique qui lui est associé.
Si vous ne le connaissez pas, vous pouvez le retrouver grâce au label, vu dans la section précédente. Le nom de périphérique ressemble à ''sda6''.
Ensuite, dans un terminal, tapez la commande:
 ls -l /dev/disk/by-uuid
ce qui devrait renvoyer un résultat comme ceci:

 lrwxrwxrwx 1 root root 10 31 janv. 17:04 21f910fa-4797-4ca3-af0f-cc85e28833d3 -&gt; ../../sda6
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 5ce2eda1-cbb9-4a0e-9f75-d2e5da1225ac -&gt; ../../sda7
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 6CAF4EA76CD5202F -&gt; ../../sdb1
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 e06e7cf7-ba25-4dec-9a4a-e5187c566745 -&gt; ../../sda5

Vous retrouverez donc l'UUID en regardant le périphérique vers lequel il renvoie.

== Le point de montage ==

Le point de montage est le dossier dans lequel le périphérique sera monté. syntaxe:
 /chemin/absolu/du/dossier

'''Note:''' si le dossier de montage contient déjà des fichiers, lorsque le périphérique sera monté, le contenu '''visible''' de ce dossier sera celui du périphérique. {{color|red|'''Cela ne veut ''PAS'' dire que vos fichiers préexistants seront effacés!'''}} Ils seront juste ''invisibles''. Un démontage du périphérique suffira pour réafficher vos fichiers.

== le type de système de fichier ==

C'est le nom du type. Par exemple: ext2,ext3,ext4,reiserfs,tmpfs,[[swap]],iso9660(pour les CD/DVD)
Le ntfs est un cas particulier. Veuillez consulter sa [[ntfs|page réservée]]

== options de montage== 
Dans le fichier &quot;/etc/fstab&quot;, le caractère &quot;séparateur&quot; dans la liste des options est la virgule.

La liste ci-dessous n'est pas exhaustive,&lt;br /&gt;pour connaître toutes les options possibles faire un &quot;man mount&quot;.
{|
|'''option'''
|'''description'''

|-
|{{color|#000099|defaults}}
|Options par défaut =&gt; rw, suid, dev, exec, auto, nouser, async.

|-
|rw / ro
|{{color|#000099|Lecture et écriture autorisées}} / Lecture seule.
  
|-
|suid / nosuid
|{{color|#000099|Autorise les opérations sur les bits suid et sgid}} / N'autorise pas.
  
|-
|dev / nodev
|{{color|#000099|Interprète les noeuds de type caractères ou blocs}} / N'interprète pas .

|-
|exec&amp;nbsp;/&amp;nbsp;noexec&amp;nbsp;
|{{color|#000099|Autorise l’exécution de fichiers binaires}} / N'autorise pas.

|-
|auto / noauto
|{{color|#000099|&quot;mounté&quot; automatiquement au démarrage et lors d'un appel « mount -a »}} / Ne pourra être monté qu'explicitement.

|-
|nouser / user
|{{color|#000099|Seul &quot;root&quot; sera autorisé à effectuer le &quot;mountage&quot; &quot;dé-mountage&quot;}} / Tous les utilisateurs aussi.

|-
|async / sync
|{{color|#000099|Accès en mode asynchrone}} / synchrone.
 
|-
|owner
|Seul le propriétaire sera autorisé à &quot;mounter&quot; &quot;démounter&quot; le périphérique.

|-
|noatime
|Optimisation SSD (NO Access TIME): ne pas mettre à jour l'attribut &quot;atime&quot; et limiter le nombre d'accès disques.

|-
|discard
|Optimisation SSD : Active le mode TRIM : Gestion des effacements/libération par blocs.

|-
|sw
|Pour les partitions de type &quot;swap&quot;.
  
|-
|nofail
|Ne pas renvoyer les messages d'erreur de &quot;mount&quot;.

|-
|comment
|Utilisé par les programmes de maintenance de fstab.

|}

== dump ==

La colonne dump permet de lancer l'utilitaire dump (utilitaire de sauvegarde) si cette colonne est à 1, l'ignorer si à 0.

== pass ==

Cette commande permet de déterminer dans quel ordre seront vérifiés les systèmes de fichier avec [[fsck]]. mettre 0 à cette colonne fera que le système ne sera jamais vérifié au démarrage.
1 est généralement attribué au système racine.2 est généralement attribué aux autres partitions nécessitant une vérification ( /home ou /var par exemple )

----
Par [[Utilisateur:L0u!$|L0u!$]] 31 janvier 2010 à 17:09 (UTC)
[[Catégorie:Commandes]]</text>
      <sha1>8j450u9nx0xj965oi7n0jwk1013d8d3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5377</id>
      <parentid>5375</parentid>
      <timestamp>2013-08-30T08:36:10Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* options de montage */ Modif couleur pour options par défaut</comment>
      <text xml:space="preserve" bytes="5978">'''Note:'''On appellera ''fstab'' le fichier '''/etc/fstab'''.

Le fstab est un fichier permettant de [[Glossaire#Monter|monter]] un périphérique automatiquement au démarrage ( et autres choses que nous verrons au long de ce document ).&lt;br/&gt;
Il n'est modifiable que par l'utilisateur [[Glossaire#Root|root]]. Pour les utilisateurs n'ayant pas accès au compte root, il y a d'autres méthodes telles que [[hal]] ou des règles [[udev]].

Sa syntaxe est la suivante:

 &lt;système de fichiers&gt; &lt;point de montage&gt; &lt;type de système de fichier&gt; &lt;options de montage&gt; &lt;dump&gt; &lt;pass&gt;

== Le système de fichiers (filesystem/fs) ==

le système de fichiers peut être ciblé de plusieurs manières.

=== Nom de Périphérique ===

Le périphérique peut être reconnu avec le chemin vers le fichier qui le représente. syntaxe:

 /dev/XdYZ

Sachant que:
*X vaut ''s'' si votre périphérique est branché en usb ou scsi ou émulation de scsi /(e-)sata, ''h'' si il est branché en IDE.
*Y est une lettre de l'alphabet qui change selon l'ordre de montage de votre périphérique
*Z est le numéro de partition. 1 si c'est la première, 2 la deuxième... '''Note:''' si votre partition est logique, son numéro commencera à 5 car les 4 premiers chiffres sont réservés aux partitions primaires

=== Le label ===

On peut aussi identifier le périphérique grace à son ''label''. syntaxe:

  LABEL=nom_de_périph

Dans un [[Glossaire#Terminal|terminal]], tapez la commande suivante:

 ls -l /dev/disk/by-label/

ce qui devrait renvoyer un truc dans ce genre:

 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Docs -&gt; ../../sda7
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 icy\x20box -&gt; ../../sdb1
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Noyau -&gt; ../../sda5
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Swap -&gt; ../../sda6

Recopiez le nom que vous voyez dans le fstab comme décrit précédement.

=== UUID ===

L'[[Glossaire#UUID|UUID]] est une chaine de caractères et de chiffres qui est unique à chaque partition. elle ressemble à ceci:
 21f910fa-4797-4ca3-af0f-cc85e28833d3
ou ceci:
 6CAF4EA76CD5202F
la syntaxe du fstab est la suivante:
 UUID=mon_code_à_ralonge

Pour connaitre le'UUID d'un périphérique, il faut tout d'abord connaitre le nom de périphérique qui lui est associé.
Si vous ne le connaissez pas, vous pouvez le retrouver grâce au label, vu dans la section précédente. Le nom de périphérique ressemble à ''sda6''.
Ensuite, dans un terminal, tapez la commande:
 ls -l /dev/disk/by-uuid
ce qui devrait renvoyer un résultat comme ceci:

 lrwxrwxrwx 1 root root 10 31 janv. 17:04 21f910fa-4797-4ca3-af0f-cc85e28833d3 -&gt; ../../sda6
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 5ce2eda1-cbb9-4a0e-9f75-d2e5da1225ac -&gt; ../../sda7
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 6CAF4EA76CD5202F -&gt; ../../sdb1
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 e06e7cf7-ba25-4dec-9a4a-e5187c566745 -&gt; ../../sda5

Vous retrouverez donc l'UUID en regardant le périphérique vers lequel il renvoie.

== Le point de montage ==

Le point de montage est le dossier dans lequel le périphérique sera monté. syntaxe:
 /chemin/absolu/du/dossier

'''Note:''' si le dossier de montage contient déjà des fichiers, lorsque le périphérique sera monté, le contenu '''visible''' de ce dossier sera celui du périphérique. {{color|red|'''Cela ne veut ''PAS'' dire que vos fichiers préexistants seront effacés!'''}} Ils seront juste ''invisibles''. Un démontage du périphérique suffira pour réafficher vos fichiers.

== le type de système de fichier ==

C'est le nom du type. Par exemple: ext2,ext3,ext4,reiserfs,tmpfs,[[swap]],iso9660(pour les CD/DVD)
Le ntfs est un cas particulier. Veuillez consulter sa [[ntfs|page réservée]]

== options de montage== 
Dans le fichier &quot;/etc/fstab&quot;, le caractère &quot;séparateur&quot; dans la liste des options est la virgule.

La liste ci-dessous n'est pas exhaustive,&lt;br /&gt;pour connaître toutes les options possibles faire un &quot;man mount&quot;.
{|
|'''option'''
|'''description'''

|-
|{{color|#8B1888|defaults}}
|Options par défaut =&gt; rw, suid, dev, exec, auto, nouser, async.

|-
|rw / ro
|{{color|#8B1888|Lecture et écriture autorisées}} / Lecture seule.
  
|-
|suid / nosuid
|{{color|#8B1888|Autorise les opérations sur les bits suid et sgid}} / N'autorise pas.
  
|-
|dev / nodev
|{{color|#8B1888|Interprète les noeuds de type caractères ou blocs}} / N'interprète pas .

|-
|exec&amp;nbsp;/&amp;nbsp;noexec&amp;nbsp;
|{{color|#8B1888|Autorise l’exécution des fichiers binaires}} / N'autorise pas.

|-
|auto / noauto
|{{color|#8B1888|&quot;mounté&quot; automatiquement au démarrage et lors d'un appel « mount -a »}} / Ne pourra être monté qu'explicitement.

|-
|nouser / user
|{{color|#8B1888|Seul &quot;root&quot; sera autorisé à effectuer le &quot;mountage&quot; &quot;dé-mountage&quot;}} / Tous les utilisateurs aussi.

|-
|async / sync
|{{color|#8B1888|Accès en mode asynchrone}} / synchrone.
 
|-
|owner
|Seul le propriétaire sera autorisé à &quot;mounter&quot; &quot;démounter&quot;.

|-
|noatime
|Optimisation SSD (NO Access TIME): ne pas mettre à jour l'attribut &quot;atime&quot; et limiter le nombre d'accès disques.

|-
|discard
|Optimisation SSD : Active le mode TRIM : Gestion des effacements/libération par blocs.

|-
|sw
|Pour les partitions de type &quot;swap&quot;.
  
|-
|nofail
|Ne pas renvoyer les messages d'erreur de &quot;mount&quot;.

|-
|comment
|Utilisé par les programmes de maintenance de fstab.

|}

== dump ==

La colonne dump permet de lancer l'utilitaire dump (utilitaire de sauvegarde) si cette colonne est à 1, l'ignorer si à 0.

== pass ==

Cette commande permet de déterminer dans quel ordre seront vérifiés les systèmes de fichier avec [[fsck]]. mettre 0 à cette colonne fera que le système ne sera jamais vérifié au démarrage.
1 est généralement attribué au système racine.2 est généralement attribué aux autres partitions nécessitant une vérification ( /home ou /var par exemple )

----
Par [[Utilisateur:L0u!$|L0u!$]] 31 janvier 2010 à 17:09 (UTC)
[[Catégorie:Commandes]]</text>
      <sha1>bl41kfk61fn654d4dh28gm0lpz8ovu2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5400</id>
      <parentid>5377</parentid>
      <timestamp>2013-09-14T14:32:46Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <comment>/* options de montage */ spécifier : options en couleur &lt;=&gt; options par defauf</comment>
      <text xml:space="preserve" bytes="6033">'''Note:'''On appellera ''fstab'' le fichier '''/etc/fstab'''.

Le fstab est un fichier permettant de [[Glossaire#Monter|monter]] un périphérique automatiquement au démarrage ( et autres choses que nous verrons au long de ce document ).&lt;br/&gt;
Il n'est modifiable que par l'utilisateur [[Glossaire#Root|root]]. Pour les utilisateurs n'ayant pas accès au compte root, il y a d'autres méthodes telles que [[hal]] ou des règles [[udev]].

Sa syntaxe est la suivante:

 &lt;système de fichiers&gt; &lt;point de montage&gt; &lt;type de système de fichier&gt; &lt;options de montage&gt; &lt;dump&gt; &lt;pass&gt;

== Le système de fichiers (filesystem/fs) ==

le système de fichiers peut être ciblé de plusieurs manières.

=== Nom de Périphérique ===

Le périphérique peut être reconnu avec le chemin vers le fichier qui le représente. syntaxe:

 /dev/XdYZ

Sachant que:
*X vaut ''s'' si votre périphérique est branché en usb ou scsi ou émulation de scsi /(e-)sata, ''h'' si il est branché en IDE.
*Y est une lettre de l'alphabet qui change selon l'ordre de montage de votre périphérique
*Z est le numéro de partition. 1 si c'est la première, 2 la deuxième... '''Note:''' si votre partition est logique, son numéro commencera à 5 car les 4 premiers chiffres sont réservés aux partitions primaires

=== Le label ===

On peut aussi identifier le périphérique grace à son ''label''. syntaxe:

  LABEL=nom_de_périph

Dans un [[Glossaire#Terminal|terminal]], tapez la commande suivante:

 ls -l /dev/disk/by-label/

ce qui devrait renvoyer un truc dans ce genre:

 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Docs -&gt; ../../sda7
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 icy\x20box -&gt; ../../sdb1
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Noyau -&gt; ../../sda5
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 Swap -&gt; ../../sda6

Recopiez le nom que vous voyez dans le fstab comme décrit précédement.

=== UUID ===

L'[[Glossaire#UUID|UUID]] est une chaine de caractères et de chiffres qui est unique à chaque partition. elle ressemble à ceci:
 21f910fa-4797-4ca3-af0f-cc85e28833d3
ou ceci:
 6CAF4EA76CD5202F
la syntaxe du fstab est la suivante:
 UUID=mon_code_à_ralonge

Pour connaitre le'UUID d'un périphérique, il faut tout d'abord connaitre le nom de périphérique qui lui est associé.
Si vous ne le connaissez pas, vous pouvez le retrouver grâce au label, vu dans la section précédente. Le nom de périphérique ressemble à ''sda6''.
Ensuite, dans un terminal, tapez la commande:
 ls -l /dev/disk/by-uuid
ce qui devrait renvoyer un résultat comme ceci:

 lrwxrwxrwx 1 root root 10 31 janv. 17:04 21f910fa-4797-4ca3-af0f-cc85e28833d3 -&gt; ../../sda6
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 5ce2eda1-cbb9-4a0e-9f75-d2e5da1225ac -&gt; ../../sda7
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 6CAF4EA76CD5202F -&gt; ../../sdb1
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 e06e7cf7-ba25-4dec-9a4a-e5187c566745 -&gt; ../../sda5

Vous retrouverez donc l'UUID en regardant le périphérique vers lequel il renvoie.

== Le point de montage ==

Le point de montage est le dossier dans lequel le périphérique sera monté. syntaxe:
 /chemin/absolu/du/dossier

'''Note:''' si le dossier de montage contient déjà des fichiers, lorsque le périphérique sera monté, le contenu '''visible''' de ce dossier sera celui du périphérique. {{color|red|'''Cela ne veut ''PAS'' dire que vos fichiers préexistants seront effacés!'''}} Ils seront juste ''invisibles''. Un démontage du périphérique suffira pour réafficher vos fichiers.

== le type de système de fichier ==

C'est le nom du type. Par exemple: ext2,ext3,ext4,reiserfs,tmpfs,[[swap]],iso9660(pour les CD/DVD)
Le ntfs est un cas particulier. Veuillez consulter sa [[ntfs|page réservée]]

== options de montage== 
Dans le fichier &quot;/etc/fstab&quot;, le caractère &quot;séparateur&quot; dans la liste des options est la virgule.

La liste ci-dessous n'est pas exhaustive,&lt;br /&gt;pour connaître toutes les options possibles faire un &quot;man mount&quot;.

Les options en couleurs sont les options par défaut.
{|
|'''option'''
|'''description'''

|-
|{{color|#8B1888|defaults}}
|Options par défaut =&gt; rw, suid, dev, exec, auto, nouser, async.

|-
|rw / ro
|{{color|#8B1888|Lecture et écriture autorisées}} / Lecture seule.
  
|-
|suid / nosuid
|{{color|#8B1888|Autorise les opérations sur les bits suid et sgid}} / N'autorise pas.
  
|-
|dev / nodev
|{{color|#8B1888|Interprète les noeuds de type caractères ou blocs}} / N'interprète pas .

|-
|exec&amp;nbsp;/&amp;nbsp;noexec&amp;nbsp;
|{{color|#8B1888|Autorise l’exécution des fichiers binaires}} / N'autorise pas.

|-
|auto / noauto
|{{color|#8B1888|&quot;mounté&quot; automatiquement au démarrage et lors d'un appel « mount -a »}} / Ne pourra être monté qu'explicitement.

|-
|nouser / user
|{{color|#8B1888|Seul &quot;root&quot; sera autorisé à effectuer le &quot;mountage&quot; &quot;dé-mountage&quot;}} / Tous les utilisateurs aussi.

|-
|async / sync
|{{color|#8B1888|Accès en mode asynchrone}} / synchrone.
 
|-
|owner
|Seul le propriétaire sera autorisé à &quot;mounter&quot; &quot;démounter&quot;.

|-
|noatime
|Optimisation SSD (NO Access TIME): ne pas mettre à jour l'attribut &quot;atime&quot; et limiter le nombre d'accès disques.

|-
|discard
|Optimisation SSD : Active le mode TRIM : Gestion des effacements/libération par blocs.

|-
|sw
|Pour les partitions de type &quot;swap&quot;.
  
|-
|nofail
|Ne pas renvoyer les messages d'erreur de &quot;mount&quot;.

|-
|comment
|Utilisé par les programmes de maintenance de fstab.

|}

== dump ==

La colonne dump permet de lancer l'utilitaire dump (utilitaire de sauvegarde) si cette colonne est à 1, l'ignorer si à 0.

== pass ==

Cette commande permet de déterminer dans quel ordre seront vérifiés les systèmes de fichier avec [[fsck]]. mettre 0 à cette colonne fera que le système ne sera jamais vérifié au démarrage.
1 est généralement attribué au système racine.2 est généralement attribué aux autres partitions nécessitant une vérification ( /home ou /var par exemple )

----
Par [[Utilisateur:L0u!$|L0u!$]] 31 janvier 2010 à 17:09 (UTC)
[[Catégorie:Commandes]]</text>
      <sha1>m2rhjlh3u2ey4qhnqyid1x8mfkz0980</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5410</id>
      <parentid>5400</parentid>
      <timestamp>2013-09-26T17:02:02Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>modif introduction</comment>
      <text xml:space="preserve" bytes="4653">Le fichier '''&quot;/etc/fstab&quot;''' ('''F'''ile '''S'''ystem '''TAB'''le) est le fichier permettant à la commande &quot;mount&quot; de [[Glossaire#Monter|monter]] le système de fichier racine et de le peupler au moment de l'initialisation du système.&lt;br/&gt;
Il est visualisable par tous les utilisateurs, mais n'est modifiable que par l'utilisateur ayant les privilèges du compte super administrateur : [[Glossaire#Root|root]].

Sa syntaxe est la suivante:

 &lt;système de fichiers&gt; &lt;point de montage&gt; &lt;type de système de fichier&gt; &lt;options de montage&gt; &lt;dump&gt; &lt;pass&gt;

== Le système de fichiers (filesystem/fs) ==
Ce champ décrit le périphérique bloc ou le système  de  fichiers distant à monter.&lt;br /&gt;
Pour une partition sur un périphérique local, on utilisera l'[[Glossaire#UUID|UUID]] du périphérique bloc.

Pour connaitre l'UUID d'un périphérique, il faut tout d'abord connaitre le nom de périphérique qui lui est associé. Le nom de périphérique ressemble à ''sda6''.&lt;br /&gt;
Ensuite, dans un terminal, tapez la commande:
 ls -l /dev/disk/by-uuid
ce qui devrait renvoyer un résultat comme ceci:

 lrwxrwxrwx 1 root root 10 31 janv. 17:04 21f910fa-4797-4ca3-af0f-cc85e28833d3 -&gt; ../../sda6
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 5ce2eda1-cbb9-4a0e-9f75-d2e5da1225ac -&gt; ../../sda7
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 6CAF4EA76CD5202F -&gt; ../../sdb1
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 e06e7cf7-ba25-4dec-9a4a-e5187c566745 -&gt; ../../sda5

Vous retrouverez donc l'UUID en regardant le périphérique vers lequel il renvoie.

== Le point de montage ==

Le point de montage est le dossier dans lequel le périphérique sera monté. syntaxe:
 /chemin/absolu/du/dossier

'''Note:''' si le dossier de montage contient déjà des fichiers, lorsque le périphérique sera monté, le contenu '''visible''' de ce dossier sera celui du périphérique. {{color|red|'''Cela ne veut ''PAS'' dire que vos fichiers préexistants seront effacés!'''}} Ils seront juste ''invisibles''. Un démontage du périphérique suffira pour réafficher vos fichiers.

== le type de système de fichier ==

C'est le nom du type. Par exemple: ext2,ext3,ext4,reiserfs,tmpfs,[[swap]],iso9660(pour les CD/DVD)
Le ntfs est un cas particulier. Veuillez consulter sa [[ntfs|page réservée]]

== options de montage== 
Dans le fichier &quot;/etc/fstab&quot;, le caractère &quot;séparateur&quot; dans la liste des options est la virgule.

La liste ci-dessous n'est pas exhaustive,&lt;br /&gt;pour connaître toutes les options possibles faire un &quot;man mount&quot;.

Les options en couleurs sont les options par défaut.
{|
|'''option'''
|'''description'''

|-
|{{color|#8B1888|defaults}}
|Options par défaut =&gt; rw, suid, dev, exec, auto, nouser, async.

|-
|rw / ro
|{{color|#8B1888|Lecture et écriture autorisées}} / Lecture seule.
  
|-
|suid / nosuid
|{{color|#8B1888|Autorise les opérations sur les bits suid et sgid}} / N'autorise pas.
  
|-
|dev / nodev
|{{color|#8B1888|Interprète les noeuds de type caractères ou blocs}} / N'interprète pas .

|-
|exec&amp;nbsp;/&amp;nbsp;noexec&amp;nbsp;
|{{color|#8B1888|Autorise l’exécution des fichiers binaires}} / N'autorise pas.

|-
|auto / noauto
|{{color|#8B1888|&quot;mounté&quot; automatiquement au démarrage et lors d'un appel « mount -a »}} / Ne pourra être monté qu'explicitement.

|-
|nouser / user
|{{color|#8B1888|Seul &quot;root&quot; sera autorisé à effectuer le &quot;mountage&quot; &quot;dé-mountage&quot;}} / Tous les utilisateurs aussi.

|-
|async / sync
|{{color|#8B1888|Accès en mode asynchrone}} / synchrone.
 
|-
|owner
|Seul le propriétaire sera autorisé à &quot;mounter&quot; &quot;démounter&quot;.

|-
|noatime
|Optimisation SSD (NO Access TIME): ne pas mettre à jour l'attribut &quot;atime&quot; et limiter le nombre d'accès disques.

|-
|discard
|Optimisation SSD : Active le mode TRIM : Gestion des effacements/libération par blocs.

|-
|sw
|Pour les partitions de type &quot;swap&quot;.
  
|-
|nofail
|Ne pas renvoyer les messages d'erreur de &quot;mount&quot;.

|-
|comment
|Utilisé par les programmes de maintenance de fstab.

|}

== dump ==

La colonne dump permet de lancer l'utilitaire dump (utilitaire de sauvegarde) si cette colonne est à 1, l'ignorer si à 0.

== pass ==

Cette commande permet de déterminer dans quel ordre seront vérifiés les systèmes de fichier avec [[fsck]]. mettre 0 à cette colonne fera que le système ne sera jamais vérifié au démarrage.
1 est généralement attribué au système racine.2 est généralement attribué aux autres partitions nécessitant une vérification ( /home ou /var par exemple )

----
Par [[Utilisateur:L0u!$|L0u!$]] 31 janvier 2010 à 17:09 (UTC)&lt;br /&gt;
MàJ Par [[Utilisateur:MicP|MicP]] 26 septembre 2013 à 19:00
[[Catégorie:Commandes]]</text>
      <sha1>ct3xfa8t5x7xr2w1e4qzmq1ubudlm43</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5562</id>
      <parentid>5410</parentid>
      <timestamp>2014-03-08T15:56:25Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>liens pointant sur des entrées inexistantes du glossaire</comment>
      <text xml:space="preserve" bytes="4613">Le fichier '''&quot;/etc/fstab&quot;''' ('''F'''ile '''S'''ystem '''TAB'''le) est le fichier permettant à la commande &quot;mount&quot; de monter le système de fichier racine et de le peupler au moment de l'initialisation du système.&lt;br/&gt;
Il est visualisable par tous les utilisateurs, mais n'est modifiable que par l'utilisateur ayant les privilèges du compte super administrateur : root.

Sa syntaxe est la suivante:

 &lt;système de fichiers&gt; &lt;point de montage&gt; &lt;type de système de fichier&gt; &lt;options de montage&gt; &lt;dump&gt; &lt;pass&gt;

== Le système de fichiers (filesystem/fs) ==
Ce champ décrit le périphérique bloc ou le système  de  fichiers distant à monter.&lt;br /&gt;
Pour une partition sur un périphérique local, on utilisera l'[[Glossaire#UUID|UUID]] du périphérique bloc.

Pour connaitre l'UUID d'un périphérique, il faut tout d'abord connaitre le nom de périphérique qui lui est associé. Le nom de périphérique ressemble à ''sda6''.&lt;br /&gt;
Ensuite, dans un terminal, tapez la commande:
 ls -l /dev/disk/by-uuid
ce qui devrait renvoyer un résultat comme ceci:

 lrwxrwxrwx 1 root root 10 31 janv. 17:04 21f910fa-4797-4ca3-af0f-cc85e28833d3 -&gt; ../../sda6
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 5ce2eda1-cbb9-4a0e-9f75-d2e5da1225ac -&gt; ../../sda7
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 6CAF4EA76CD5202F -&gt; ../../sdb1
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 e06e7cf7-ba25-4dec-9a4a-e5187c566745 -&gt; ../../sda5

Vous retrouverez donc l'UUID en regardant le périphérique vers lequel il renvoie.

== Le point de montage ==

Le point de montage est le dossier dans lequel le périphérique sera monté. syntaxe:
 /chemin/absolu/du/dossier

'''Note:''' si le dossier de montage contient déjà des fichiers, lorsque le périphérique sera monté, le contenu '''visible''' de ce dossier sera celui du périphérique. {{color|red|'''Cela ne veut ''PAS'' dire que vos fichiers préexistants seront effacés!'''}} Ils seront juste ''invisibles''. Un démontage du périphérique suffira pour réafficher vos fichiers.

== le type de système de fichier ==

C'est le nom du type. Par exemple: ext2,ext3,ext4,reiserfs,tmpfs,[[swap]],iso9660(pour les CD/DVD)
Le ntfs est un cas particulier. Veuillez consulter sa [[ntfs|page réservée]]

== options de montage== 
Dans le fichier &quot;/etc/fstab&quot;, le caractère &quot;séparateur&quot; dans la liste des options est la virgule.

La liste ci-dessous n'est pas exhaustive,&lt;br /&gt;pour connaître toutes les options possibles faire un &quot;man mount&quot;.

Les options en couleurs sont les options par défaut.
{|
|'''option'''
|'''description'''

|-
|{{color|#8B1888|defaults}}
|Options par défaut =&gt; rw, suid, dev, exec, auto, nouser, async.

|-
|rw / ro
|{{color|#8B1888|Lecture et écriture autorisées}} / Lecture seule.
  
|-
|suid / nosuid
|{{color|#8B1888|Autorise les opérations sur les bits suid et sgid}} / N'autorise pas.
  
|-
|dev / nodev
|{{color|#8B1888|Interprète les noeuds de type caractères ou blocs}} / N'interprète pas .

|-
|exec&amp;nbsp;/&amp;nbsp;noexec&amp;nbsp;
|{{color|#8B1888|Autorise l’exécution des fichiers binaires}} / N'autorise pas.

|-
|auto / noauto
|{{color|#8B1888|&quot;mounté&quot; automatiquement au démarrage et lors d'un appel « mount -a »}} / Ne pourra être monté qu'explicitement.

|-
|nouser / user
|{{color|#8B1888|Seul &quot;root&quot; sera autorisé à effectuer le &quot;mountage&quot; &quot;dé-mountage&quot;}} / Tous les utilisateurs aussi.

|-
|async / sync
|{{color|#8B1888|Accès en mode asynchrone}} / synchrone.
 
|-
|owner
|Seul le propriétaire sera autorisé à &quot;mounter&quot; &quot;démounter&quot;.

|-
|noatime
|Optimisation SSD (NO Access TIME): ne pas mettre à jour l'attribut &quot;atime&quot; et limiter le nombre d'accès disques.

|-
|discard
|Optimisation SSD : Active le mode TRIM : Gestion des effacements/libération par blocs.

|-
|sw
|Pour les partitions de type &quot;swap&quot;.
  
|-
|nofail
|Ne pas renvoyer les messages d'erreur de &quot;mount&quot;.

|-
|comment
|Utilisé par les programmes de maintenance de fstab.

|}

== dump ==

La colonne dump permet de lancer l'utilitaire dump (utilitaire de sauvegarde) si cette colonne est à 1, l'ignorer si à 0.

== pass ==

Cette commande permet de déterminer dans quel ordre seront vérifiés les systèmes de fichier avec [[fsck]]. mettre 0 à cette colonne fera que le système ne sera jamais vérifié au démarrage.
1 est généralement attribué au système racine.2 est généralement attribué aux autres partitions nécessitant une vérification ( /home ou /var par exemple )

----
Par [[Utilisateur:L0u!$|L0u!$]] 31 janvier 2010 à 17:09 (UTC)&lt;br /&gt;
MàJ Par [[Utilisateur:MicP|MicP]] 26 septembre 2013 à 19:00
[[Catégorie:Commandes]]</text>
      <sha1>fjloexd15yr9m6afcx5eueq74fmqf0v</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5699</id>
      <parentid>5562</parentid>
      <timestamp>2014-08-03T14:46:11Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* pass */ reformulation + tableau</comment>
      <text xml:space="preserve" bytes="4924">Le fichier '''&quot;/etc/fstab&quot;''' ('''F'''ile '''S'''ystem '''TAB'''le) est le fichier permettant à la commande &quot;mount&quot; de monter le système de fichier racine et de le peupler au moment de l'initialisation du système.&lt;br/&gt;
Il est visualisable par tous les utilisateurs, mais n'est modifiable que par l'utilisateur ayant les privilèges du compte super administrateur : root.

Sa syntaxe est la suivante:

 &lt;système de fichiers&gt; &lt;point de montage&gt; &lt;type de système de fichier&gt; &lt;options de montage&gt; &lt;dump&gt; &lt;pass&gt;

== Le système de fichiers (filesystem/fs) ==
Ce champ décrit le périphérique bloc ou le système  de  fichiers distant à monter.&lt;br /&gt;
Pour une partition sur un périphérique local, on utilisera l'[[Glossaire#UUID|UUID]] du périphérique bloc.

Pour connaitre l'UUID d'un périphérique, il faut tout d'abord connaitre le nom de périphérique qui lui est associé. Le nom de périphérique ressemble à ''sda6''.&lt;br /&gt;
Ensuite, dans un terminal, tapez la commande:
 ls -l /dev/disk/by-uuid
ce qui devrait renvoyer un résultat comme ceci:

 lrwxrwxrwx 1 root root 10 31 janv. 17:04 21f910fa-4797-4ca3-af0f-cc85e28833d3 -&gt; ../../sda6
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 5ce2eda1-cbb9-4a0e-9f75-d2e5da1225ac -&gt; ../../sda7
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 6CAF4EA76CD5202F -&gt; ../../sdb1
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 e06e7cf7-ba25-4dec-9a4a-e5187c566745 -&gt; ../../sda5

Vous retrouverez donc l'UUID en regardant le périphérique vers lequel il renvoie.

== Le point de montage ==

Le point de montage est le dossier dans lequel le périphérique sera monté. syntaxe:
 /chemin/absolu/du/dossier

'''Note:''' si le dossier de montage contient déjà des fichiers, lorsque le périphérique sera monté, le contenu '''visible''' de ce dossier sera celui du périphérique. {{color|red|'''Cela ne veut ''PAS'' dire que vos fichiers préexistants seront effacés!'''}} Ils seront juste ''invisibles''. Un démontage du périphérique suffira pour réafficher vos fichiers.

== le type de système de fichier ==

C'est le nom du type. Par exemple: ext2,ext3,ext4,reiserfs,tmpfs,[[swap]],iso9660(pour les CD/DVD)
Le ntfs est un cas particulier. Veuillez consulter sa [[ntfs|page réservée]]

== options de montage== 
Dans le fichier &quot;/etc/fstab&quot;, le caractère &quot;séparateur&quot; dans la liste des options est la virgule.

La liste ci-dessous n'est pas exhaustive,&lt;br /&gt;pour connaître toutes les options possibles faire un &quot;man mount&quot;.

Les options en couleurs sont les options par défaut.
{|
|'''option'''
|'''description'''

|-
|{{color|#8B1888|defaults}}
|Options par défaut =&gt; rw, suid, dev, exec, auto, nouser, async.

|-
|rw / ro
|{{color|#8B1888|Lecture et écriture autorisées}} / Lecture seule.
  
|-
|suid / nosuid
|{{color|#8B1888|Autorise les opérations sur les bits suid et sgid}} / N'autorise pas.
  
|-
|dev / nodev
|{{color|#8B1888|Interprète les noeuds de type caractères ou blocs}} / N'interprète pas .

|-
|exec&amp;nbsp;/&amp;nbsp;noexec&amp;nbsp;
|{{color|#8B1888|Autorise l’exécution des fichiers binaires}} / N'autorise pas.

|-
|auto / noauto
|{{color|#8B1888|&quot;mounté&quot; automatiquement au démarrage et lors d'un appel « mount -a »}} / Ne pourra être monté qu'explicitement.

|-
|nouser / user
|{{color|#8B1888|Seul &quot;root&quot; sera autorisé à effectuer le &quot;mountage&quot; &quot;dé-mountage&quot;}} / Tous les utilisateurs aussi.

|-
|async / sync
|{{color|#8B1888|Accès en mode asynchrone}} / synchrone.
 
|-
|owner
|Seul le propriétaire sera autorisé à &quot;mounter&quot; &quot;démounter&quot;.

|-
|noatime
|Optimisation SSD (NO Access TIME): ne pas mettre à jour l'attribut &quot;atime&quot; et limiter le nombre d'accès disques.

|-
|discard
|Optimisation SSD : Active le mode TRIM : Gestion des effacements/libération par blocs.

|-
|sw
|Pour les partitions de type &quot;swap&quot;.
  
|-
|nofail
|Ne pas renvoyer les messages d'erreur de &quot;mount&quot;.

|-
|comment
|Utilisé par les programmes de maintenance de fstab.

|}

== dump ==

La colonne dump permet de lancer l'utilitaire dump (utilitaire de sauvegarde) si cette colonne est à 1, l'ignorer si à 0.

== pass ==

Ce paramètre permettra à [[fsck]] de déterminer dans quel ordre il va devoir vérifier les systèmes de fichiers.&lt;br /&gt;
{| class=&quot;wikitable&quot; style=&quot;text-align:center;&quot;
|'''valeur''' || '''description'''
|-
|     1       ||style=&quot;text-align:left;&quot; |À vérifier en '''Premier''' (la racine du système debian)
|-
|     2       ||style=&quot;text-align:left;&quot; |Qui '''suivra''' la vérification du premier. (exemple: /home /usr etc.)
|-
|     0       ||style=&quot;text-align:left;&quot; |À ne '''PAS''' vérifier, car système de fichier non indispensable au démarrage et/ou au fonctionnement du système.
|}
&lt;br /&gt;
----
Par [[Utilisateur:L0u!$|L0u!$]] 31 janvier 2010 à 17:09 (UTC)&lt;br /&gt;
MàJ Par [[Utilisateur:MicP|MicP]] 26 septembre 2013 à 19:00&lt;br /&gt;
MàJ Par [[Utilisateur:MicP|MicP]] 03 août      2014 à 16:46
[[Catégorie:Commandes]]</text>
      <sha1>m26qskycgczavdrqvx5wh3bug616db2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5700</id>
      <parentid>5699</parentid>
      <timestamp>2014-08-03T14:47:17Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* pass */ chg &quot;pass&quot; -&gt; &quot;fs_passno&quot;</comment>
      <text xml:space="preserve" bytes="4929">Le fichier '''&quot;/etc/fstab&quot;''' ('''F'''ile '''S'''ystem '''TAB'''le) est le fichier permettant à la commande &quot;mount&quot; de monter le système de fichier racine et de le peupler au moment de l'initialisation du système.&lt;br/&gt;
Il est visualisable par tous les utilisateurs, mais n'est modifiable que par l'utilisateur ayant les privilèges du compte super administrateur : root.

Sa syntaxe est la suivante:

 &lt;système de fichiers&gt; &lt;point de montage&gt; &lt;type de système de fichier&gt; &lt;options de montage&gt; &lt;dump&gt; &lt;pass&gt;

== Le système de fichiers (filesystem/fs) ==
Ce champ décrit le périphérique bloc ou le système  de  fichiers distant à monter.&lt;br /&gt;
Pour une partition sur un périphérique local, on utilisera l'[[Glossaire#UUID|UUID]] du périphérique bloc.

Pour connaitre l'UUID d'un périphérique, il faut tout d'abord connaitre le nom de périphérique qui lui est associé. Le nom de périphérique ressemble à ''sda6''.&lt;br /&gt;
Ensuite, dans un terminal, tapez la commande:
 ls -l /dev/disk/by-uuid
ce qui devrait renvoyer un résultat comme ceci:

 lrwxrwxrwx 1 root root 10 31 janv. 17:04 21f910fa-4797-4ca3-af0f-cc85e28833d3 -&gt; ../../sda6
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 5ce2eda1-cbb9-4a0e-9f75-d2e5da1225ac -&gt; ../../sda7
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 6CAF4EA76CD5202F -&gt; ../../sdb1
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 e06e7cf7-ba25-4dec-9a4a-e5187c566745 -&gt; ../../sda5

Vous retrouverez donc l'UUID en regardant le périphérique vers lequel il renvoie.

== Le point de montage ==

Le point de montage est le dossier dans lequel le périphérique sera monté. syntaxe:
 /chemin/absolu/du/dossier

'''Note:''' si le dossier de montage contient déjà des fichiers, lorsque le périphérique sera monté, le contenu '''visible''' de ce dossier sera celui du périphérique. {{color|red|'''Cela ne veut ''PAS'' dire que vos fichiers préexistants seront effacés!'''}} Ils seront juste ''invisibles''. Un démontage du périphérique suffira pour réafficher vos fichiers.

== le type de système de fichier ==

C'est le nom du type. Par exemple: ext2,ext3,ext4,reiserfs,tmpfs,[[swap]],iso9660(pour les CD/DVD)
Le ntfs est un cas particulier. Veuillez consulter sa [[ntfs|page réservée]]

== options de montage== 
Dans le fichier &quot;/etc/fstab&quot;, le caractère &quot;séparateur&quot; dans la liste des options est la virgule.

La liste ci-dessous n'est pas exhaustive,&lt;br /&gt;pour connaître toutes les options possibles faire un &quot;man mount&quot;.

Les options en couleurs sont les options par défaut.
{|
|'''option'''
|'''description'''

|-
|{{color|#8B1888|defaults}}
|Options par défaut =&gt; rw, suid, dev, exec, auto, nouser, async.

|-
|rw / ro
|{{color|#8B1888|Lecture et écriture autorisées}} / Lecture seule.
  
|-
|suid / nosuid
|{{color|#8B1888|Autorise les opérations sur les bits suid et sgid}} / N'autorise pas.
  
|-
|dev / nodev
|{{color|#8B1888|Interprète les noeuds de type caractères ou blocs}} / N'interprète pas .

|-
|exec&amp;nbsp;/&amp;nbsp;noexec&amp;nbsp;
|{{color|#8B1888|Autorise l’exécution des fichiers binaires}} / N'autorise pas.

|-
|auto / noauto
|{{color|#8B1888|&quot;mounté&quot; automatiquement au démarrage et lors d'un appel « mount -a »}} / Ne pourra être monté qu'explicitement.

|-
|nouser / user
|{{color|#8B1888|Seul &quot;root&quot; sera autorisé à effectuer le &quot;mountage&quot; &quot;dé-mountage&quot;}} / Tous les utilisateurs aussi.

|-
|async / sync
|{{color|#8B1888|Accès en mode asynchrone}} / synchrone.
 
|-
|owner
|Seul le propriétaire sera autorisé à &quot;mounter&quot; &quot;démounter&quot;.

|-
|noatime
|Optimisation SSD (NO Access TIME): ne pas mettre à jour l'attribut &quot;atime&quot; et limiter le nombre d'accès disques.

|-
|discard
|Optimisation SSD : Active le mode TRIM : Gestion des effacements/libération par blocs.

|-
|sw
|Pour les partitions de type &quot;swap&quot;.
  
|-
|nofail
|Ne pas renvoyer les messages d'erreur de &quot;mount&quot;.

|-
|comment
|Utilisé par les programmes de maintenance de fstab.

|}

== dump ==

La colonne dump permet de lancer l'utilitaire dump (utilitaire de sauvegarde) si cette colonne est à 1, l'ignorer si à 0.

== fs_passno ==

Ce paramètre permettra à [[fsck]] de déterminer dans quel ordre il va devoir vérifier les systèmes de fichiers.&lt;br /&gt;
{| class=&quot;wikitable&quot; style=&quot;text-align:center;&quot;
|'''valeur''' || '''description'''
|-
|     1       ||style=&quot;text-align:left;&quot; |À vérifier en '''Premier''' (la racine du système debian)
|-
|     2       ||style=&quot;text-align:left;&quot; |Qui '''suivra''' la vérification du premier. (exemple: /home /usr etc.)
|-
|     0       ||style=&quot;text-align:left;&quot; |À ne '''PAS''' vérifier, car système de fichier non indispensable au démarrage et/ou au fonctionnement du système.
|}
&lt;br /&gt;
----
Par [[Utilisateur:L0u!$|L0u!$]] 31 janvier 2010 à 17:09 (UTC)&lt;br /&gt;
MàJ Par [[Utilisateur:MicP|MicP]] 26 septembre 2013 à 19:00&lt;br /&gt;
MàJ Par [[Utilisateur:MicP|MicP]] 03 août      2014 à 16:46
[[Catégorie:Commandes]]</text>
      <sha1>6zczeratq4xwxibrn5wl344o7k3zb9v</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5701</id>
      <parentid>5700</parentid>
      <timestamp>2014-08-03T14:52:34Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Le point de montage */ format</comment>
      <text xml:space="preserve" bytes="4943">Le fichier '''&quot;/etc/fstab&quot;''' ('''F'''ile '''S'''ystem '''TAB'''le) est le fichier permettant à la commande &quot;mount&quot; de monter le système de fichier racine et de le peupler au moment de l'initialisation du système.&lt;br/&gt;
Il est visualisable par tous les utilisateurs, mais n'est modifiable que par l'utilisateur ayant les privilèges du compte super administrateur : root.

Sa syntaxe est la suivante:

 &lt;système de fichiers&gt; &lt;point de montage&gt; &lt;type de système de fichier&gt; &lt;options de montage&gt; &lt;dump&gt; &lt;pass&gt;

== Le système de fichiers (filesystem/fs) ==
Ce champ décrit le périphérique bloc ou le système  de  fichiers distant à monter.&lt;br /&gt;
Pour une partition sur un périphérique local, on utilisera l'[[Glossaire#UUID|UUID]] du périphérique bloc.

Pour connaitre l'UUID d'un périphérique, il faut tout d'abord connaitre le nom de périphérique qui lui est associé. Le nom de périphérique ressemble à ''sda6''.&lt;br /&gt;
Ensuite, dans un terminal, tapez la commande:
 ls -l /dev/disk/by-uuid
ce qui devrait renvoyer un résultat comme ceci:

 lrwxrwxrwx 1 root root 10 31 janv. 17:04 21f910fa-4797-4ca3-af0f-cc85e28833d3 -&gt; ../../sda6
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 5ce2eda1-cbb9-4a0e-9f75-d2e5da1225ac -&gt; ../../sda7
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 6CAF4EA76CD5202F -&gt; ../../sdb1
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 e06e7cf7-ba25-4dec-9a4a-e5187c566745 -&gt; ../../sda5

Vous retrouverez donc l'UUID en regardant le périphérique vers lequel il renvoie.

== Le point de montage ==

Le point de montage est le dossier dans lequel le périphérique sera monté. syntaxe:
 /chemin/absolu/du/dossier

'''Note:''' si le dossier de montage contient déjà des fichiers, lorsque le périphérique sera monté, le contenu '''visible''' de ce dossier sera celui du périphérique.&lt;br /&gt;
{{color|red|'''Mais cela ne veut ''PAS'' dire que vos fichiers préexistants seront effacés!'''}} Ils seront juste ''invisibles'' et un démontage du périphérique suffira pour ré-afficher vos fichiers.

== le type de système de fichier ==

C'est le nom du type. Par exemple: ext2,ext3,ext4,reiserfs,tmpfs,[[swap]],iso9660(pour les CD/DVD)
Le ntfs est un cas particulier. Veuillez consulter sa [[ntfs|page réservée]]

== options de montage== 
Dans le fichier &quot;/etc/fstab&quot;, le caractère &quot;séparateur&quot; dans la liste des options est la virgule.

La liste ci-dessous n'est pas exhaustive,&lt;br /&gt;pour connaître toutes les options possibles faire un &quot;man mount&quot;.

Les options en couleurs sont les options par défaut.
{|
|'''option'''
|'''description'''

|-
|{{color|#8B1888|defaults}}
|Options par défaut =&gt; rw, suid, dev, exec, auto, nouser, async.

|-
|rw / ro
|{{color|#8B1888|Lecture et écriture autorisées}} / Lecture seule.
  
|-
|suid / nosuid
|{{color|#8B1888|Autorise les opérations sur les bits suid et sgid}} / N'autorise pas.
  
|-
|dev / nodev
|{{color|#8B1888|Interprète les noeuds de type caractères ou blocs}} / N'interprète pas .

|-
|exec&amp;nbsp;/&amp;nbsp;noexec&amp;nbsp;
|{{color|#8B1888|Autorise l’exécution des fichiers binaires}} / N'autorise pas.

|-
|auto / noauto
|{{color|#8B1888|&quot;mounté&quot; automatiquement au démarrage et lors d'un appel « mount -a »}} / Ne pourra être monté qu'explicitement.

|-
|nouser / user
|{{color|#8B1888|Seul &quot;root&quot; sera autorisé à effectuer le &quot;mountage&quot; &quot;dé-mountage&quot;}} / Tous les utilisateurs aussi.

|-
|async / sync
|{{color|#8B1888|Accès en mode asynchrone}} / synchrone.
 
|-
|owner
|Seul le propriétaire sera autorisé à &quot;mounter&quot; &quot;démounter&quot;.

|-
|noatime
|Optimisation SSD (NO Access TIME): ne pas mettre à jour l'attribut &quot;atime&quot; et limiter le nombre d'accès disques.

|-
|discard
|Optimisation SSD : Active le mode TRIM : Gestion des effacements/libération par blocs.

|-
|sw
|Pour les partitions de type &quot;swap&quot;.
  
|-
|nofail
|Ne pas renvoyer les messages d'erreur de &quot;mount&quot;.

|-
|comment
|Utilisé par les programmes de maintenance de fstab.

|}

== dump ==

La colonne dump permet de lancer l'utilitaire dump (utilitaire de sauvegarde) si cette colonne est à 1, l'ignorer si à 0.

== fs_passno ==

Ce paramètre permettra à [[fsck]] de déterminer dans quel ordre il va devoir vérifier les systèmes de fichiers.&lt;br /&gt;
{| class=&quot;wikitable&quot; style=&quot;text-align:center;&quot;
|'''valeur''' || '''description'''
|-
|     1       ||style=&quot;text-align:left;&quot; |À vérifier en '''Premier''' (la racine du système debian)
|-
|     2       ||style=&quot;text-align:left;&quot; |Qui '''suivra''' la vérification du premier. (exemple: /home /usr etc.)
|-
|     0       ||style=&quot;text-align:left;&quot; |À ne '''PAS''' vérifier, car système de fichier non indispensable au démarrage et/ou au fonctionnement du système.
|}
&lt;br /&gt;
----
Par [[Utilisateur:L0u!$|L0u!$]] 31 janvier 2010 à 17:09 (UTC)&lt;br /&gt;
MàJ Par [[Utilisateur:MicP|MicP]] 26 septembre 2013 à 19:00&lt;br /&gt;
MàJ Par [[Utilisateur:MicP|MicP]] 03 août      2014 à 16:46
[[Catégorie:Commandes]]</text>
      <sha1>kybjh2mn4wbnckz15sm0db7arneron2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5718</id>
      <parentid>5701</parentid>
      <timestamp>2014-08-20T03:55:23Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Le point de montage */ chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="4959">Le fichier '''&quot;/etc/fstab&quot;''' ('''F'''ile '''S'''ystem '''TAB'''le) est le fichier permettant à la commande &quot;mount&quot; de monter le système de fichier racine et de le peupler au moment de l'initialisation du système.&lt;br/&gt;
Il est visualisable par tous les utilisateurs, mais n'est modifiable que par l'utilisateur ayant les privilèges du compte super administrateur : root.

Sa syntaxe est la suivante:

 &lt;système de fichiers&gt; &lt;point de montage&gt; &lt;type de système de fichier&gt; &lt;options de montage&gt; &lt;dump&gt; &lt;pass&gt;

== Le système de fichiers (filesystem/fs) ==
Ce champ décrit le périphérique bloc ou le système  de  fichiers distant à monter.&lt;br /&gt;
Pour une partition sur un périphérique local, on utilisera l'[[Glossaire#UUID|UUID]] du périphérique bloc.

Pour connaitre l'UUID d'un périphérique, il faut tout d'abord connaitre le nom de périphérique qui lui est associé. Le nom de périphérique ressemble à ''sda6''.&lt;br /&gt;
Ensuite, dans un terminal, tapez la commande:
 ls -l /dev/disk/by-uuid
ce qui devrait renvoyer un résultat comme ceci:

 lrwxrwxrwx 1 root root 10 31 janv. 17:04 21f910fa-4797-4ca3-af0f-cc85e28833d3 -&gt; ../../sda6
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 5ce2eda1-cbb9-4a0e-9f75-d2e5da1225ac -&gt; ../../sda7
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 6CAF4EA76CD5202F -&gt; ../../sdb1
 lrwxrwxrwx 1 root root 10 31 janv. 17:04 e06e7cf7-ba25-4dec-9a4a-e5187c566745 -&gt; ../../sda5

Vous retrouverez donc l'UUID en regardant le périphérique vers lequel il renvoie.

== Le point de montage ==

Le point de montage est le répertoire dans lequel le périphérique sera monté. syntaxe:
 /chemin/absolu/du/répertoire

'''Note:''' si le répertoire de montage contient déjà des fichiers, lorsque le périphérique sera monté, le contenu '''visible''' de ce répertoire sera celui du périphérique.&lt;br /&gt;
{{color|red|'''Mais cela ne veut ''PAS'' dire que vos fichiers préexistants seront effacés!'''}} Ils seront juste ''invisibles'' et un démontage du périphérique suffira pour ré-afficher vos fichiers.

== le type de système de fichier ==

C'est le nom du type. Par exemple: ext2,ext3,ext4,reiserfs,tmpfs,[[swap]],iso9660(pour les CD/DVD)
Le ntfs est un cas particulier. Veuillez consulter sa [[ntfs|page réservée]]

== options de montage== 
Dans le fichier &quot;/etc/fstab&quot;, le caractère &quot;séparateur&quot; dans la liste des options est la virgule.

La liste ci-dessous n'est pas exhaustive,&lt;br /&gt;pour connaître toutes les options possibles faire un &quot;man mount&quot;.

Les options en couleurs sont les options par défaut.
{|
|'''option'''
|'''description'''

|-
|{{color|#8B1888|defaults}}
|Options par défaut =&gt; rw, suid, dev, exec, auto, nouser, async.

|-
|rw / ro
|{{color|#8B1888|Lecture et écriture autorisées}} / Lecture seule.
  
|-
|suid / nosuid
|{{color|#8B1888|Autorise les opérations sur les bits suid et sgid}} / N'autorise pas.
  
|-
|dev / nodev
|{{color|#8B1888|Interprète les noeuds de type caractères ou blocs}} / N'interprète pas .

|-
|exec&amp;nbsp;/&amp;nbsp;noexec&amp;nbsp;
|{{color|#8B1888|Autorise l’exécution des fichiers binaires}} / N'autorise pas.

|-
|auto / noauto
|{{color|#8B1888|&quot;mounté&quot; automatiquement au démarrage et lors d'un appel « mount -a »}} / Ne pourra être monté qu'explicitement.

|-
|nouser / user
|{{color|#8B1888|Seul &quot;root&quot; sera autorisé à effectuer le &quot;mountage&quot; &quot;dé-mountage&quot;}} / Tous les utilisateurs aussi.

|-
|async / sync
|{{color|#8B1888|Accès en mode asynchrone}} / synchrone.
 
|-
|owner
|Seul le propriétaire sera autorisé à &quot;mounter&quot; &quot;démounter&quot;.

|-
|noatime
|Optimisation SSD (NO Access TIME): ne pas mettre à jour l'attribut &quot;atime&quot; et limiter le nombre d'accès disques.

|-
|discard
|Optimisation SSD : Active le mode TRIM : Gestion des effacements/libération par blocs.

|-
|sw
|Pour les partitions de type &quot;swap&quot;.
  
|-
|nofail
|Ne pas renvoyer les messages d'erreur de &quot;mount&quot;.

|-
|comment
|Utilisé par les programmes de maintenance de fstab.

|}

== dump ==

La colonne dump permet de lancer l'utilitaire dump (utilitaire de sauvegarde) si cette colonne est à 1, l'ignorer si à 0.

== fs_passno ==

Ce paramètre permettra à [[fsck]] de déterminer dans quel ordre il va devoir vérifier les systèmes de fichiers.&lt;br /&gt;
{| class=&quot;wikitable&quot; style=&quot;text-align:center;&quot;
|'''valeur''' || '''description'''
|-
|     1       ||style=&quot;text-align:left;&quot; |À vérifier en '''Premier''' (la racine du système debian)
|-
|     2       ||style=&quot;text-align:left;&quot; |Qui '''suivra''' la vérification du premier. (exemple: /home /usr etc.)
|-
|     0       ||style=&quot;text-align:left;&quot; |À ne '''PAS''' vérifier, car système de fichier non indispensable au démarrage et/ou au fonctionnement du système.
|}
&lt;br /&gt;
----
Par [[Utilisateur:L0u!$|L0u!$]] 31 janvier 2010 à 17:09 (UTC)&lt;br /&gt;
MàJ Par [[Utilisateur:MicP|MicP]] 26 septembre 2013 à 19:00&lt;br /&gt;
MàJ Par [[Utilisateur:MicP|MicP]] 03 août      2014 à 16:46
[[Catégorie:Commandes]]</text>
      <sha1>8i3u70qosm8w34u6te2thu7a2s9tfbe</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>GNU/Linux Distro Timeline</title>
    <ns>0</ns>
    <id>460</id>
    <revision>
      <id>1787</id>
      <timestamp>2010-07-30T20:30:20Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « == GNU/Linux Distro Timeline ===  http://futurist.se/gldt/  Version 10.7  [[Fichier:Gldt1007.png]] »</comment>
      <text xml:space="preserve" bytes="98">== GNU/Linux Distro Timeline ===

http://futurist.se/gldt/

Version 10.7

[[Fichier:Gldt1007.png]]</text>
      <sha1>hl1ngf36bjp026g9j89t8nw4qayppo9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1981</id>
      <parentid>1787</parentid>
      <timestamp>2010-08-19T17:00:15Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Nouvelle version du GNU/Linux Distro Timeline</comment>
      <text xml:space="preserve" bytes="98">== GNU/Linux Distro Timeline ===

http://futurist.se/gldt/

Version 10.7

[[Fichier:Gldt1008.png]]</text>
      <sha1>gorqv41d7x8efeh0i0w3vdzvwtez9kh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2098</id>
      <parentid>1981</parentid>
      <timestamp>2010-09-15T17:07:12Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="121">== GNU/Linux Distro Timeline ===

http://futurist.se/gldt/

Version 10.7

[[Fichier:Gldt1008.png]]

[[Catégorie:Divers]]</text>
      <sha1>syv81kofsw1y6cu8nqfipxff7j9su38</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2292</id>
      <parentid>2098</parentid>
      <timestamp>2010-11-16T05:21:58Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="122">== GNU/Linux Distro Timeline ===

http://futurist.se/gldt/

Version 10.7

[[Fichier:Gldt1011.jpeg]]

[[Catégorie:Divers]]</text>
      <sha1>orzh3vuyrpgp0ckzj140wwmuwfi1xb3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2961</id>
      <parentid>2292</parentid>
      <timestamp>2011-05-05T05:19:59Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="122">== GNU/Linux Distro Timeline ===

http://futurist.se/gldt/

Version 11.4

[[Fichier:Gldt1104.jpeg]]

[[Catégorie:Divers]]</text>
      <sha1>do2g10yoly82kqxpqjsl8q3yiaipzva</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3128</id>
      <parentid>2961</parentid>
      <timestamp>2011-07-30T09:23:46Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* GNU/Linux Distro Timeline = */</comment>
      <text xml:space="preserve" bytes="121">== GNU/Linux Distro Timeline ===

http://futurist.se/gldt/

Version 11.6

[[Fichier:Gldt1106.png]]

[[Catégorie:Divers]]</text>
      <sha1>au7j0xrpkw7twr0ewjse5isbp5av7qp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3130</id>
      <parentid>3128</parentid>
      <timestamp>2011-07-30T11:44:30Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="122">== GNU/Linux Distro Timeline ===

http://futurist.se/gldt/

Version 11.6

[[Fichier:Gldt1106.jpeg]]

[[Catégorie:Divers]]</text>
      <sha1>i18vomilof62x5w033n4cb5cmkx97jy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3635</id>
      <parentid>3130</parentid>
      <timestamp>2011-12-05T14:00:27Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>MAJ</comment>
      <text xml:space="preserve" bytes="123">== GNU/Linux Distro Timeline ===

http://futurist.se/gldt/

Version 11.10

[[Fichier:Gldt1110.jpeg]]

[[Catégorie:Divers]]</text>
      <sha1>gc1mg1r5s1bpppacd8l0sg1m6a82yqu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3814</id>
      <parentid>3635</parentid>
      <timestamp>2012-02-06T06:29:00Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Version 12.01</comment>
      <text xml:space="preserve" bytes="129">== GNU/Linux Distro Timeline ===

http://futurist.se/gldt/

Version 12.01

[[Fichier:Gldt1201.jpg|1440px]]

[[Catégorie:Divers]]</text>
      <sha1>6p4poe0cs7hx2fnjoaenr4ae3sciq8t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4399</id>
      <parentid>3814</parentid>
      <timestamp>2012-08-15T08:19:14Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* GNU/Linux Distro Timeline = */</comment>
      <text xml:space="preserve" bytes="128">== GNU/Linux Distro Timeline ===

http://futurist.se/gldt/

Version 12.2

[[Fichier:Gldt1201.jpg|1440px]]

[[Catégorie:Divers]]</text>
      <sha1>nxi3o2dltz8vnc6sj4axf309r5knen1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5063</id>
      <parentid>4399</parentid>
      <timestamp>2013-03-25T12:02:29Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <text xml:space="preserve" bytes="129">== GNU/Linux Distro Timeline ===

http://futurist.se/gldt/

Version 12.10

[[Fichier:Gldt1210.jpg|1440px]]

[[Catégorie:Divers]]</text>
      <sha1>h959igeqgjcs9akceuy9rzf0tlqm5eq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>General/Arborescence</title>
    <ns>0</ns>
    <id>176</id>
    <revision>
      <id>710</id>
      <timestamp>2010-02-02T05:26:58Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « &lt;div style=&quot;-moz-column-count:4; column-count:4; -webkit-column-count:4;&quot;&gt;&lt;categorytree&gt;General&lt;/categorytree&gt;&lt;/div&gt;&lt;noinclude&gt; [[Catégorie:Arborescence de catégories|Gener… »</comment>
      <text xml:space="preserve" bytes="235">&lt;div style=&quot;-moz-column-count:4; column-count:4; -webkit-column-count:4;&quot;&gt;&lt;categorytree&gt;General&lt;/categorytree&gt;&lt;/div&gt;&lt;noinclude&gt;
[[Catégorie:Arborescence de catégories|General]]
[[Catégorie:Portail:General|Arborescence]]
&lt;/noinclude&gt;</text>
      <sha1>ke51vdr6v2g55eg936qfbg0c3ct0aht</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>714</id>
      <parentid>710</parentid>
      <timestamp>2010-02-02T05:33:25Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="227">&lt;div style=&quot;-moz-column-count:4; column-count:4; -webkit-column-count:4;&quot;&gt;&lt;categorytree&gt;General&lt;/categorytree&gt;&lt;/div&gt;&lt;noinclude&gt;
[[Catégorie:Arborescence de catégories|General]]
[[Catégorie:General|Arborescence]]
&lt;/noinclude&gt;</text>
      <sha1>98440hxosdnvmxe3zcrgwvsxazek42e</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1049</id>
      <parentid>714</parentid>
      <timestamp>2010-02-08T12:43:16Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="251">&lt;div style=&quot;-moz-column-count:4; column-count:4; -webkit-column-count:4;&quot;&gt;&lt;categorytree depth=&quot;5&quot; hideroot=&quot;on&quot;&gt;General&lt;/categorytree&gt;&lt;/div&gt;&lt;noinclude&gt;
[[Catégorie:Arborescence de catégories|General]]
[[Catégorie:General|Arborescence]]
&lt;/noinclude&gt;</text>
      <sha1>0ghx6djfbkv46u1e5l81mn0saz87162</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>General/Index</title>
    <ns>0</ns>
    <id>178</id>
    <revision>
      <id>712</id>
      <timestamp>2010-02-02T05:30:49Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « {| style=&quot;background:transparent;&quot; |-  | width=&quot;50%&quot; valign=&quot;top&quot; |  {| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot; &lt;!-----------… »</comment>
      <text xml:space="preserve" bytes="1089">{| style=&quot;background:transparent;&quot;
|- 
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Matériel          		|Hardware2.png}}
|- 
{{Index|/Installation           	|Installation.png}}
|-
{{Index|/Logiciels			|Logiciel.png}}
|- 
{{Index|/Gestionnaires de fenêtres      |Gestionnairedefenetres.png}}
|-
{{Index|/Kernel (Noyau)		        |Linux.jpg}}
|-
{{Index|/Paquets			|Package.jpg}}
|}
&lt;!----------------------------------------------&gt;
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Internet			|internet.png}}
|-
{{Index|/Programmation			|Programmation.png}}
|-
{{Index|/Jeux                    	|Jeux.png}}
|-
{{Index|/Sécurité informatique		|Securite.png}}
|-
{{Index|/Multimédia			|Multimedia.png}}
|- 
{{Index|/Commandes		        |Commandes.png}}
|}
|}&lt;noinclude&gt;

[[Catégorie:Portail:General/Index|*]]&lt;/noinclude&gt;</text>
      <sha1>kyzcz4gx8ntn1l8jfbw2njvj96z9tww</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>716</id>
      <parentid>712</parentid>
      <timestamp>2010-02-02T05:34:04Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1081">{| style=&quot;background:transparent;&quot;
|- 
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Matériel          		|Hardware2.png}}
|- 
{{Index|/Installation           	|Installation.png}}
|-
{{Index|/Logiciels			|Logiciel.png}}
|- 
{{Index|/Gestionnaires de fenêtres      |Gestionnairedefenetres.png}}
|-
{{Index|/Kernel (Noyau)		        |Linux.jpg}}
|-
{{Index|/Paquets			|Package.jpg}}
|}
&lt;!----------------------------------------------&gt;
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Internet			|internet.png}}
|-
{{Index|/Programmation			|Programmation.png}}
|-
{{Index|/Jeux                    	|Jeux.png}}
|-
{{Index|/Sécurité informatique		|Securite.png}}
|-
{{Index|/Multimédia			|Multimedia.png}}
|- 
{{Index|/Commandes		        |Commandes.png}}
|}
|}&lt;noinclude&gt;

[[Catégorie:General/Index|*]]&lt;/noinclude&gt;</text>
      <sha1>l36l5uv4emkk06u93ialk21l4qfoym8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>899</id>
      <parentid>716</parentid>
      <timestamp>2010-02-05T11:44:11Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="880">{| style=&quot;background:transparent;&quot;
|- 
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Installation           	|Installation.png}}
|-
{{Index|/Logiciels			|Logiciel.png}}
|- 
{{Index|/Matériel et Pilotes  		|Hardware2.png}}
|- 
{{Index|/Commandes		        |Commandes.png}}
|}
&lt;!----------------------------------------------&gt;
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Réseau et Wifi			|internet.png}}
|-
{{Index|/Noyau (Kernel)		        |Linux.jpg}}
|-
{{Index|/Programmation			|Programmation.png}}
|-
{{Index|/Sécurité       		|Securite.png}}
|-
|}&lt;noinclude&gt;

[[Catégorie:General/Index|*]]&lt;/noinclude&gt;</text>
      <sha1>gtnk3lyusiljr1ix5viqr4dr8v2eqag</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1142</id>
      <parentid>899</parentid>
      <timestamp>2010-03-14T14:44:42Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="880">{| style=&quot;background:transparent;&quot;
|- 
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Installation           	|Installation.png}}
|-
{{Index|/Logiciels			|Logiciel.png}}
|- 
{{Index|/Matériel et Pilotes  		|Hardware2.png}}
|}
&lt;!----------------------------------------------&gt;
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Réseau et Wifi			|internet.png}}
|- 
{{Index|/Commandes		        |Commandes.png}}
|-
{{Index|/Noyau (Kernel)		        |Linux.jpg}}
|-
{{Index|/Programmation			|Programmation.png}}
|-
{{Index|/Sécurité       		|Securite.png}}
|}
&lt;noinclude&gt;
|}
[[Catégorie:General/Index|*]]&lt;/noinclude&gt;</text>
      <sha1>jv6wjuc7x84fn9q2io44bxqh251z2e2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1143</id>
      <parentid>1142</parentid>
      <timestamp>2010-03-14T14:48:15Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="879">{| style=&quot;background:transparent;&quot;
|- 
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Installation           	|Installation.png}}
|-
{{Index|/Logiciels			|Logiciel.png}}
|- 
{{Index|/Réseau et Wifi			|internet.png}}
|-
{{Index|/Noyau (Kernel)		        |Linux.jpg}}
|}
&lt;!----------------------------------------------&gt;
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Matériel et Pilotes  		|Hardware2.png}}
|-
{{Index|/Commandes		        |Commandes.png}}
|-
{{Index|/Programmation			|Programmation.png}}
|-
{{Index|/Sécurité       		|Securite.png}}
|}
&lt;noinclude&gt;
|}
[[Catégorie:General/Index|*]]&lt;/noinclude&gt;</text>
      <sha1>cq5f8zi1h8tlqk1yoh4v9dhuxzd7rf3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1148</id>
      <parentid>1143</parentid>
      <timestamp>2010-03-14T17:10:01Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="925">{| style=&quot;background:transparent;&quot;
|- 
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Installation           	|Installation.png}}
|-
{{Index|/Logiciels			|Logiciel.png}}
|- 
{{Index|/Réseau et Wifi			|internet.png}}
|-
{{Index|/Noyau (Kernel)		        |Linux.jpg}}
|}
&lt;!----------------------------------------------&gt;
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Matériel et Pilotes  		|Hardware2.png}}
|-
{{Index|/Commandes		        |Commandes.png}}
|-
{{Index|/Programmation			|Programmation.png}}
|-
{{Index|/Sécurité       		|Securite.png}}
|-
{{Index|/Documentation externe       		|}}
|}
&lt;noinclude&gt;
|}
[[Catégorie:General/Index|*]]&lt;/noinclude&gt;</text>
      <sha1>k1w020ku83q9duygqo7ij4963i893yd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1154</id>
      <parentid>1148</parentid>
      <timestamp>2010-03-15T13:48:18Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="932">{| style=&quot;background:transparent;&quot;
|- 
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Installation           	|Installation.png}}
|-
{{Index|/Logiciels			|Logiciel.png}}
|- 
{{Index|/Réseau et Wifi			|internet.png}}
|-
{{Index|/Noyau (Kernel)		        |Linux.jpg}}
|}
&lt;!----------------------------------------------&gt;
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Matériel et Pilotes  		|Hardware2.png}}
|-
{{Index|/Commandes		        |Commandes.png}}
|-
{{Index|/Programmation			|Programmation.png}}
|-
{{Index|/Sécurité       		|Securite.png}}
|-
{{Index|/Documentation externe       		|Doc.png}}
|}
&lt;noinclude&gt;
|}
[[Catégorie:General/Index|*]]&lt;/noinclude&gt;</text>
      <sha1>4mwxa7zud9h4wlw9cfo15zc5admfibe</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1175</id>
      <parentid>1154</parentid>
      <timestamp>2010-03-24T06:03:28Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="974">{| style=&quot;background:transparent;&quot;
|- 
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Installation           	|Installation.png}}
|-
{{Index|/Logiciels			|Logiciel.png}}
|- 
{{Index|/Réseau et Wifi			|internet.png}}
|-
{{Index|/Noyau (Kernel)		        |Linux.jpg}}
|-
{{Index|/Divers		        |Divers.jpg}}
|}
&lt;!----------------------------------------------&gt;
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Matériel et Pilotes  		|Hardware2.png}}
|-
{{Index|/Commandes		        |Commandes.png}}
|-
{{Index|/Programmation			|Programmation.png}}
|-
{{Index|/Sécurité       		|Securite.png}}
|-
{{Index|/Documentation externe       		|Doc.png}}
|}
&lt;noinclude&gt;
|}
[[Catégorie:General/Index|*]]&lt;/noinclude&gt;</text>
      <sha1>ntuyx8fcws8pl08z9nscr5z4qff3kn6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1574</id>
      <parentid>1175</parentid>
      <timestamp>2010-06-24T14:51:53Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1038">{| style=&quot;background:transparent;&quot;
|- 
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Installation           	|Installation.png}}
|-
{{Index|/Logiciels			|Logiciel.png}}
|- 
{{Index|/Réseau et Wifi			|internet.png}}
|-
{{Index|/Noyau (Kernel)		        |Linux.jpg}}
|-
{{Index|/Les Trucs et astuces             |Linux.jpg}}
|-
|}
&lt;!----------------------------------------------&gt;
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Matériel et Pilotes  		|Hardware2.png}}
|-
{{Index|/Commandes		        |Commandes.png}}
|-
{{Index|/Programmation			|Programmation.png}}
|-
{{Index|/Sécurité       		|Securite.png}}
|-
{{Index|/Divers		        |Divers.jpg}}
|-
{{Index|/Documentation externe       		|Doc.png}}
|-
|}
&lt;noinclude&gt;
|}
[[Catégorie:General/Index|*]]&lt;/noinclude&gt;</text>
      <sha1>jicznl06zq1ouxxvi678n19dofgltyz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1577</id>
      <parentid>1574</parentid>
      <timestamp>2010-06-24T15:05:00Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1038">{| style=&quot;background:transparent;&quot;
|- 
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Installation           	|Installation.png}}
|-
{{Index|/Logiciels			|Logiciel.png}}
|- 
{{Index|/Réseau et Wifi			|internet.png}}
|-
{{Index|/Noyau (Kernel)		        |Linux.jpg}}
|-
{{Index|/Les Trucs et astuces             |T%26A.jpg}}
|-
|}
&lt;!----------------------------------------------&gt;
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Matériel et Pilotes  		|Hardware2.png}}
|-
{{Index|/Commandes		        |Commandes.png}}
|-
{{Index|/Programmation			|Programmation.png}}
|-
{{Index|/Sécurité       		|Securite.png}}
|-
{{Index|/Divers		        |Divers.jpg}}
|-
{{Index|/Documentation externe       		|Doc.png}}
|-
|}
&lt;noinclude&gt;
|}
[[Catégorie:General/Index|*]]&lt;/noinclude&gt;</text>
      <sha1>cmuvmo2b4bpgzhpi1p008dh3z1iig3n</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4197</id>
      <parentid>1577</parentid>
      <timestamp>2012-05-06T06:39:52Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Correction</comment>
      <text xml:space="preserve" bytes="1034">{| style=&quot;background:transparent;&quot;
|- 
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Installation           	|Installation.png}}
|-
{{Index|/Logiciels			|Logiciel.png}}
|- 
{{Index|/Reseau et Wifi			|internet.png}}
|-
{{Index|/Noyau (Kernel)		        |Linux.jpg}}
|-
{{Index|/Les Trucs et astuces             |T%26A.jpg}}
|-
|}
&lt;!----------------------------------------------&gt;
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Materiel et Pilotes  		|Hardware2.png}}
|-
{{Index|/Commandes		        |Commandes.png}}
|-
{{Index|/Programmation			|Programmation.png}}
|-
{{Index|/Securite       		|Securite.png}}
|-
{{Index|/Divers		        |Divers.jpg}}
|-
{{Index|/Documentation externe       		|Doc.png}}
|-
|}
&lt;noinclude&gt;
|}
[[Catégorie:General/Index|*]]&lt;/noinclude&gt;</text>
      <sha1>mew3p8u3eqsk3pfxcki4y68vyuve6f6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>General/Index thématique</title>
    <ns>0</ns>
    <id>179</id>
    <revision>
      <id>713</id>
      <timestamp>2010-02-02T05:32:06Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « {| style=&quot;background:transparent;&quot; |-  | width=&quot;50%&quot; valign=&quot;top&quot; |  {| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot; &lt;!-----------… »</comment>
      <text xml:space="preserve" bytes="1089">{| style=&quot;background:transparent;&quot;
|- 
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Matériel          		|Hardware2.png}}
|- 
{{Index|/Installation           	|Installation.png}}
|-
{{Index|/Logiciels			|Logiciel.png}}
|- 
{{Index|/Gestionnaires de fenêtres      |Gestionnairedefenetres.png}}
|-
{{Index|/Kernel (Noyau)		        |Linux.jpg}}
|-
{{Index|/Paquets			|Package.jpg}}
|}
&lt;!----------------------------------------------&gt;
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Internet			|internet.png}}
|-
{{Index|/Programmation			|Programmation.png}}
|-
{{Index|/Jeux                    	|Jeux.png}}
|-
{{Index|/Sécurité informatique		|Securite.png}}
|-
{{Index|/Multimédia			|Multimedia.png}}
|- 
{{Index|/Commandes		        |Commandes.png}}
|}
|}&lt;noinclude&gt;

[[Catégorie:Portail:General/Index|*]]&lt;/noinclude&gt;</text>
      <sha1>kyzcz4gx8ntn1l8jfbw2njvj96z9tww</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>717</id>
      <parentid>713</parentid>
      <timestamp>2010-02-02T05:34:27Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1081">{| style=&quot;background:transparent;&quot;
|- 
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Matériel          		|Hardware2.png}}
|- 
{{Index|/Installation           	|Installation.png}}
|-
{{Index|/Logiciels			|Logiciel.png}}
|- 
{{Index|/Gestionnaires de fenêtres      |Gestionnairedefenetres.png}}
|-
{{Index|/Kernel (Noyau)		        |Linux.jpg}}
|-
{{Index|/Paquets			|Package.jpg}}
|}
&lt;!----------------------------------------------&gt;
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Internet			|internet.png}}
|-
{{Index|/Programmation			|Programmation.png}}
|-
{{Index|/Jeux                    	|Jeux.png}}
|-
{{Index|/Sécurité informatique		|Securite.png}}
|-
{{Index|/Multimédia			|Multimedia.png}}
|- 
{{Index|/Commandes		        |Commandes.png}}
|}
|}&lt;noinclude&gt;

[[Catégorie:General/Index|*]]&lt;/noinclude&gt;</text>
      <sha1>l36l5uv4emkk06u93ialk21l4qfoym8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>General/Modèle</title>
    <ns>0</ns>
    <id>177</id>
    <revision>
      <id>711</id>
      <timestamp>2010-02-02T05:29:30Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « &lt;div style=&quot;background-color:#BFAD8B; display: block; border:1px solid #aaa; font-weight: bold; font-size:{{{tailleTitre}}} ; text-align: center; padding: 3px; -moz-border-ra… »</comment>
      <text xml:space="preserve" bytes="659">&lt;div style=&quot;background-color:#BFAD8B; display: block; border:1px solid #aaa; font-weight: bold; font-size:{{{tailleTitre}}} ; text-align: center; padding: 3px; -moz-border-radius-topright:0.4em; -moz-border-radius-topleft:0.4em;&quot;&gt;&lt;font color=&quot;black&quot;&gt;{{{titre}}}&lt;/font&gt;&lt;/div&gt;
&lt;div style=&quot;border: 1px solid #aaa; border-top: none; background-color: #FFF7EA; display: block; padding: 0.3em;&quot;&gt;
{{{{{modèle}}}{{{extension|}}}}}
&lt;div style=&quot;float:right;&quot;&gt;&lt;font size=&quot;1&quot;&gt;&lt;nowiki&gt;[&lt;/nowiki&gt;[[{{{modèle}}}|modifier]]&lt;nowiki&gt;]&lt;/nowiki&gt;&amp;nbsp;&lt;/font&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;noinclude&gt;
[[Catégorie:Portail:General|Modèle]]
[[Catégorie:Modèle cadre|General]]
&lt;/noinclude&gt;</text>
      <sha1>lsd6abhsu4lec9hizmme8n8tmpfgadn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>715</id>
      <parentid>711</parentid>
      <timestamp>2010-02-02T05:33:43Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="651">&lt;div style=&quot;background-color:#BFAD8B; display: block; border:1px solid #aaa; font-weight: bold; font-size:{{{tailleTitre}}} ; text-align: center; padding: 3px; -moz-border-radius-topright:0.4em; -moz-border-radius-topleft:0.4em;&quot;&gt;&lt;font color=&quot;black&quot;&gt;{{{titre}}}&lt;/font&gt;&lt;/div&gt;
&lt;div style=&quot;border: 1px solid #aaa; border-top: none; background-color: #FFF7EA; display: block; padding: 0.3em;&quot;&gt;
{{{{{modèle}}}{{{extension|}}}}}
&lt;div style=&quot;float:right;&quot;&gt;&lt;font size=&quot;1&quot;&gt;&lt;nowiki&gt;[&lt;/nowiki&gt;[[{{{modèle}}}|modifier]]&lt;nowiki&gt;]&lt;/nowiki&gt;&amp;nbsp;&lt;/font&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;noinclude&gt;
[[Catégorie:General|Modèle]]
[[Catégorie:Modèle cadre|General]]
&lt;/noinclude&gt;</text>
      <sha1>55m506j5xxbnqpre6pb50nn31ljf44t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>775</id>
      <parentid>715</parentid>
      <timestamp>2010-02-03T05:56:17Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="651">&lt;div style=&quot;background-color:#b41d37; display: block; border:1px solid #aaa; font-weight: bold; font-size:{{{tailleTitre}}} ; text-align: center; padding: 3px; -moz-border-radius-topright:0.4em; -moz-border-radius-topleft:0.4em;&quot;&gt;&lt;font color=&quot;black&quot;&gt;{{{titre}}}&lt;/font&gt;&lt;/div&gt;
&lt;div style=&quot;border: 1px solid #aaa; border-top: none; background-color: #eeeeee; display: block; padding: 0.3em;&quot;&gt;
{{{{{modèle}}}{{{extension|}}}}}
&lt;div style=&quot;float:right;&quot;&gt;&lt;font size=&quot;1&quot;&gt;&lt;nowiki&gt;[&lt;/nowiki&gt;[[{{{modèle}}}|modifier]]&lt;nowiki&gt;]&lt;/nowiki&gt;&amp;nbsp;&lt;/font&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;noinclude&gt;
[[Catégorie:General|Modèle]]
[[Catégorie:Modèle cadre|General]]
&lt;/noinclude&gt;</text>
      <sha1>4jq3isabu5xrrgtrysoxn5kw08oiq55</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>777</id>
      <parentid>775</parentid>
      <timestamp>2010-02-03T06:06:09Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="651">&lt;div style=&quot;background-color:#b41d37; display: block; border:1px solid #aaa; font-weight: bold; font-size:{{{tailleTitre}}} ; text-align: center; padding: 3px; -moz-border-radius-topright:0.4em; -moz-border-radius-topleft:0.4em;&quot;&gt;&lt;font color=&quot;white&quot;&gt;{{{titre}}}&lt;/font&gt;&lt;/div&gt;
&lt;div style=&quot;border: 1px solid #aaa; border-top: none; background-color: #eeeeee; display: block; padding: 0.3em;&quot;&gt;
{{{{{modèle}}}{{{extension|}}}}}
&lt;div style=&quot;float:right;&quot;&gt;&lt;font size=&quot;1&quot;&gt;&lt;nowiki&gt;[&lt;/nowiki&gt;[[{{{modèle}}}|modifier]]&lt;nowiki&gt;]&lt;/nowiki&gt;&amp;nbsp;&lt;/font&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;noinclude&gt;
[[Catégorie:General|Modèle]]
[[Catégorie:Modèle cadre|General]]
&lt;/noinclude&gt;</text>
      <sha1>09xcy8gmonfvqfqsip3ex7lokvcx3yp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Generalites suite</title>
    <ns>0</ns>
    <id>37</id>
    <revision>
      <id>84</id>
      <timestamp>2010-01-22T05:30:16Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <comment>Page créée avec « * [[Aide_efficace|De la manière d'obtenir une aide efficace]] »</comment>
      <text xml:space="preserve" bytes="62">* [[Aide_efficace|De la manière d'obtenir une aide efficace]]</text>
      <sha1>bo164r37aq2hdgh7ktstin9a37vabcy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Generation mots de passe</title>
    <ns>0</ns>
    <id>741</id>
    <revision>
      <id>3267</id>
      <timestamp>2011-08-12T05:24:19Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « '''Les générateurs de mots de passe'''  == Makepasswd ==  Makepasswd génère des mots de passe pseudo-aléatoire d'une longueur désirée. Il est capable de générer leur... »</comment>
      <text xml:space="preserve" bytes="3440">'''Les générateurs de mots de passe'''

== Makepasswd ==

Makepasswd génère des mots de passe pseudo-aléatoire d'une longueur désirée. Il est capable de générer leur équivalent crypté.

 # apt-get install makepasswd

* SYNOPSIS
       makepasswd  [ --chars N ] [ --clearfrom file ] [ --count N ] [ --crypt | --nocrypt | --crypt-md5 ] [ --cryptsalt N ] [ --help
       ] [ --maxchars N ] [ --minchars N ] [ --randomseed N ] [ --rerandom N ] [ --repeatpass N ] [ --string string ] [ --verbose  |
       --noverbose ]

 $ makepasswd
 SjMC4RKNAv

 $ makepasswd --chars 15
 4DyUuvcuJXP8xSL

 $ makepasswd --crypt
 noaHqXt4u    7xSbh86NWke5A

== Pwgen ==

Pwgen est un petit générateur de mot de passe sous GPL. Il crée des mots de passe qui peuvent être &quot;facilement&quot; mémorisés par un humain.

 # apt-get install pwgen

* SYNOPSIS
       pwgen [ OPTION ] [ pw_length ] [ num_pw ]

 $ pwgen
 heec7Ahf eeThav2o Ohphooy1 aez2ahP0 eSae2huv Ees9sei8 AX2li4ni wah8kaiM
 OhDeeSe9 zaiSahR9 wohBe8ok Uquee8Ai ubei5Vee bap8Yai2 Shie4le9 Aipooz0z
 Eequ2iew vode9Lei Ech0Booh ahKag2oh xaegh4Ie quu6Chi0 ieFao7ie thei0Aek
 zaiXai2I oG1eey8e Miw5tiHi AVeiVei9 gah8ooSh Aing2eiw uH5erieh chieL0ie
 eegh8Eid uP1axi5E ac8Uar0o eN6di2ph an5Dah6i ThieJ2Ee ab5Mich0 aighei4P
 ab9jiFac peiXah0n tho9Miew eiV9ez7u Doh6Guwe Uxo8luiy Aitha8ro shei0Wu9
 Ohy3aih9 mie2nuPe aeguTh4I xienga7O vaes4AeZ coodei9L aib2Uing Ia1shuk4
 quezaeW7 paVaujo2 caeCh6qu vohD1yae shain5eY sheeSh2e Ri4jaegh Aisooy4i
 aiceeTh2 He1wa9uo hoCuC7no hu7quaeL AiQu0ru5 FeeL4ahX Ohk5jooW Fae0ieth
 nieCh6au ohX5foo9 Ohbah2oo Aehee5ee AhVaig2s jueJone0 Faigoh4o que5oiVi
 Ohbie6ah eePha3ai Ais3bes8 eiWohgh3 siep6OhH jif6vooM xoaloh0O Mu7Ej7Te
 juy7keiS aiDah7be aeCh6ieb uF4Thoph MeeWohl4 Aa2meCh9 ooYeshe5 eeh3Ohsh
 vi7uw2Oo biiB9gee Ohng8AhL vohQu7ne ahXeihi1 Eifei8ix Iesheg5n OoHoo0ph
 rieth4Ch tooheeV6 meegahS5 Fi0ohRie sahQua2w Jie7ahTh kee9Ayoh nuH6ieth
 iethah5R uyu4ceeR ozi4Lasa ooleiS9o paY1bolu sooJ4iuf aeT9roo4 eePoo0Te
 ahGhohd1 teiP2ahH Eiv9eiye Yee6eig6 Shoh4wie Fie9chif Wod6bahh fa3Eisah
 shai8Eer baeng5Ee Ohh1kah0 aeNg9doo aid2Roo9 eiVair2a eeSh8yee AiTh8cha
 wooG0eez mooyi5Eo AhNoGah5 chei4Sis auzail4I ieceQu3i xeeLoh2s ieth2Ea5
 Eingaiv8 aeRoo0Oo Eiphoo0x eeGh2chi eengoh2O ohSah8Ai Waghei9r Haejo1eb
 Ier7au7x laeXaid2 Aijee3ye ohWob5ee ieYeg9Ri chui6Aix otheiF8l Udei9eFa

 $ pwgen 20 1
 Lam7veeh0Shug2wuchae

== Apg ==

APG (Automated Password Generator) est un d'outils pour la génération de mot de passe aléatoire. Il utilise plusieurs algorithmes de génération de mot de passe (actuellement deux) et un générateur intégré de nombres pseudo-aléatoire.

 # apt-get install apg

* SYNOPSIS
       apg  [-a  algorithm]  [-M mode] [-E char_string] [-n num_of_pass] [-m min_pass_len] [-x max_pass_len] [-r dictfile] [-b
       filter_file] [-p min_substr_len] [-s] [-c cl_seed] [-d] [-y] [-l] [-t] [-q] [-h] [-v]

 $ apg
 
 Please enter some random data (only first 16 are significant)
 (eg. your old password):&gt;
 yokCepKirv7 (yok-Cep-Kirv-SEVEN)
 parokPip3 (par-ok-Pip-THREE)
 mechysunByg9 (mec-hys-un-Byg-NINE)
 bueptIaj4 (buept-Iaj-FOUR)
 abHokToadd8 (ab-Hok-Toadd-EIGHT)
 doksOugaj7 (doks-Oug-aj-SEVEN)

APG propose un [http://www.adel.nursat.kz/apg/online/index.php générateur de mots de passe en ligne]. Seuls les deux premiers liens semblent fonctionner.

[[Utilisateur:Lol|Lol]] 12 août 2011 à 00:24 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>4loap8s7n00vycurfklfvai2disuzsw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Gestion Epson par depot</title>
    <ns>0</ns>
    <id>1193</id>
    <revision>
      <id>4876</id>
      <timestamp>2013-01-14T17:56:28Z</timestamp>
      <contributor>
        <username>PengouinPdt</username>
        <id>249</id>
      </contributor>
      <comment>Création de la page 'Epson par depôt'</comment>
      <text xml:space="preserve" bytes="1558">[[Catégorie:Imprimantes et Scanners]]

= Gestion des Imprimantes MFP de marque Epson par depôt debian =

== Création du fichier sources.list ==

Avec les droits administrateurs, modifiez le fichier 'sources.list' ou mieux créer un fichier list correspondant.

  echo &quot;deb http://download.ebz.epson.net/dsc/op/stable/debian/ lsb3.2 main&quot; &gt;&gt; /etc/apt/sources.list.d/epson.list

== Informations diverses ==

Cela vous permettra d'avoir des binaires debian, pour votre imprimante multi-fonctions, appelées MFP.
Certains pilotes sont spécifiques à deux, trois imprimantes ; d'autres sont plus génériques.

Tous les binaires EPSON, pour Debian et assimilées, sont disponibles à partir de l'url suivante :
[http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX] 

=== La partie Imprimante ===

Le driver utilisé n'est ni 'epson', ni 'epson2', mais bel et bien 'epkowa' !
Pensez-y, avant de modifier tout fichier de configuration, surtout relative aux fonctions réseaux. 

=== La partie Scanner ===

Pour ce qui est d'utiliser la partie scanner de votre imprimante, il faut encore aller piocher directement sur leur site.
Les paquets correspondants sont nommés 'iscan'. À-propos des packages &quot;iscan&quot;, voici ce que dit la [http://download.ebz.epson.net/faq/linux/faq_ls_00002.html FAQ Epson iscan] (en langue anglaise).

'''''Note :''' Pour &quot;iscan-network&quot;, pensez à modifier le fichier /etc/sane.d/epkowa.conf pour ajouter '''net adr_ip 1865'''''

[[Catégorie:Imprimantes et Scanners]]</text>
      <sha1>oqgzxt1f0rrefzmxzrbpuoow057s0um</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4881</id>
      <parentid>4876</parentid>
      <timestamp>2013-01-15T07:22:17Z</timestamp>
      <contributor>
        <username>PengouinPdt</username>
        <id>249</id>
      </contributor>
      <comment>/* Informations diverses */</comment>
      <text xml:space="preserve" bytes="1566">[[Catégorie:Imprimantes et Scanners]]

= Gestion des Imprimantes MFP de marque Epson par depôt debian =

== Création du fichier sources.list ==

Avec les droits administrateurs, modifiez le fichier 'sources.list' ou mieux créer un fichier list correspondant.

  echo &quot;deb http://download.ebz.epson.net/dsc/op/stable/debian/ lsb3.2 main&quot; &gt;&gt; /etc/apt/sources.list.d/epson.list

== Informations diverses ==

Cela vous permettra d'avoir des binaires debian, pour votre imprimante multi-fonctions, appelées MFP.

Tous les binaires EPSON, pour Debian et assimilées, sont disponibles à partir de l'url suivante :
[http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX] 

=== La partie Imprimante ===

Certains pilotes sont spécifiques à deux, trois imprimantes ; d'autres sont plus génériques.

Le nom du driver utilisé n'est ni 'epson', ni 'epson2', mais bel et bien 'epkowa' !
Pensez-y, avant de modifier tout fichier de configuration, surtout relative aux fonctions réseaux. 

=== La partie Scanner ===

Pour ce qui est d'utiliser la partie scanner de votre imprimante, il faut encore aller piocher directement sur leur site.
Les paquets correspondants sont nommés 'iscan'. À-propos des packages &quot;iscan&quot;, voici ce que dit la [http://download.ebz.epson.net/faq/linux/faq_ls_00002.html FAQ Epson iscan] (en langue anglaise).

'''''Note :''' Pour &quot;iscan-network&quot;, pensez à modifier le fichier /etc/sane.d/epkowa.conf pour ajouter '''net adr_ip 1865'''''

[[Catégorie:Imprimantes et Scanners]]</text>
      <sha1>lw97d0a57gytfor4qvwk08pr1ks0xo4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5117</id>
      <parentid>4881</parentid>
      <timestamp>2013-05-02T15:59:43Z</timestamp>
      <contributor>
        <username>PengouinPdt</username>
        <id>249</id>
      </contributor>
      <minor/>
      <comment>/* La partie Scanner */</comment>
      <text xml:space="preserve" bytes="1890">[[Catégorie:Imprimantes et Scanners]]

= Gestion des Imprimantes MFP de marque Epson par depôt debian =

== Création du fichier sources.list ==

Avec les droits administrateurs, modifiez le fichier 'sources.list' ou mieux créer un fichier list correspondant.

  echo &quot;deb http://download.ebz.epson.net/dsc/op/stable/debian/ lsb3.2 main&quot; &gt;&gt; /etc/apt/sources.list.d/epson.list

== Informations diverses ==

Cela vous permettra d'avoir des binaires debian, pour votre imprimante multi-fonctions, appelées MFP.

Tous les binaires EPSON, pour Debian et assimilées, sont disponibles à partir de l'url suivante :
[http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX] 

=== La partie Imprimante ===

Certains pilotes sont spécifiques à deux, trois imprimantes ; d'autres sont plus génériques.

Le nom du driver utilisé n'est ni 'epson', ni 'epson2', mais bel et bien 'epkowa' !
Pensez-y, avant de modifier tout fichier de configuration, surtout relative aux fonctions réseaux. 

=== La partie Scanner ===

Note : Il est nécessaire d'avoir le package ''''xsltproc'''' installé dans le système ...

Pour ce qui est d'utiliser la partie scanner de votre imprimante, il faut encore aller piocher directement sur leur site.
Les paquets correspondants sont nommés '''iscan''', '''iscan-data''', voire '''iscan-network''' - ''ce dernier est nécessaire seulement si le scanner a une fonctionnalité réseau''. 
''À-propos des packages &quot;iscan&quot;, voici ce que dit la [http://download.ebz.epson.net/faq/linux/faq_ls_00002.html FAQ Epson iscan] (en langue anglaise).''

Une fois les paquets téléchargés, installez-le(s) à coup de : '''dpkg -i iscan*'''

'''''Note :''' Pour &quot;iscan-network&quot;, pensez à modifier le fichier /etc/sane.d/epkowa.conf pour ajouter '''net adr_ip 1865''''' 

[[Catégorie:Imprimantes et Scanners]]</text>
      <sha1>erchu09y9qjcffyn7p4uiqjb08ufj9k</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5118</id>
      <parentid>5117</parentid>
      <timestamp>2013-05-02T16:07:52Z</timestamp>
      <contributor>
        <username>PengouinPdt</username>
        <id>249</id>
      </contributor>
      <comment>/* La partie Imprimante */</comment>
      <text xml:space="preserve" bytes="2085">[[Catégorie:Imprimantes et Scanners]]

= Gestion des Imprimantes MFP de marque Epson par depôt debian =

== Création du fichier sources.list ==

Avec les droits administrateurs, modifiez le fichier 'sources.list' ou mieux créer un fichier list correspondant.

  echo &quot;deb http://download.ebz.epson.net/dsc/op/stable/debian/ lsb3.2 main&quot; &gt;&gt; /etc/apt/sources.list.d/epson.list

== Informations diverses ==

Cela vous permettra d'avoir des binaires debian, pour votre imprimante multi-fonctions, appelées MFP.

Tous les binaires EPSON, pour Debian et assimilées, sont disponibles à partir de l'url suivante :
[http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX] 

=== La partie Imprimante ===

Certains pilotes sont spécifiques à deux, trois imprimantes ; d'autres sont plus génériques.

L'information correspondante est signifiée dans l'onglet 'Description' de la fenêtre 'Propriétés' des binaires proposés, ou la partie 'Information' de l'outil Synaptic.

'''''Note : Le nom du driver utilisé''' n'est ni 'epson', ni 'epson2', mais bel et bien '''epkowa''' !
Pensez-y, avant de modifier tout fichier de configuration, surtout relative aux fonctions réseaux.''

=== La partie Scanner ===

Note : Il est nécessaire d'avoir le package ''''xsltproc'''' installé dans le système ...

Pour ce qui est d'utiliser la partie scanner de votre imprimante, il faut encore aller piocher directement sur leur site.
Les paquets correspondants sont nommés '''iscan''', '''iscan-data''', voire '''iscan-network''' - ''ce dernier est nécessaire seulement si le scanner a une fonctionnalité réseau''. 
''À-propos des packages &quot;iscan&quot;, voici ce que dit la [http://download.ebz.epson.net/faq/linux/faq_ls_00002.html FAQ Epson iscan] (en langue anglaise).''

Une fois les paquets téléchargés, installez-le(s) à coup de : '''dpkg -i iscan*'''

'''''Note :''' Pour &quot;iscan-network&quot;, pensez à modifier le fichier /etc/sane.d/epkowa.conf pour ajouter '''net adr_ip 1865''''' 

[[Catégorie:Imprimantes et Scanners]]</text>
      <sha1>nv6430rsgw0zm52uoai62yhblqhps7x</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5119</id>
      <parentid>5118</parentid>
      <timestamp>2013-05-02T16:08:37Z</timestamp>
      <contributor>
        <username>PengouinPdt</username>
        <id>249</id>
      </contributor>
      <comment>/* La partie Imprimante */</comment>
      <text xml:space="preserve" bytes="2087">[[Catégorie:Imprimantes et Scanners]]

= Gestion des Imprimantes MFP de marque Epson par depôt debian =

== Création du fichier sources.list ==

Avec les droits administrateurs, modifiez le fichier 'sources.list' ou mieux créer un fichier list correspondant.

  echo &quot;deb http://download.ebz.epson.net/dsc/op/stable/debian/ lsb3.2 main&quot; &gt;&gt; /etc/apt/sources.list.d/epson.list

== Informations diverses ==

Cela vous permettra d'avoir des binaires debian, pour votre imprimante multi-fonctions, appelées MFP.

Tous les binaires EPSON, pour Debian et assimilées, sont disponibles à partir de l'url suivante :
[http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX] 

=== La partie Imprimante ===

Certains pilotes sont spécifiques à deux, trois imprimantes ; d'autres sont plus génériques.

L'information correspondante est signifiée dans l'onglet 'Description' de la fenêtre 'Propriétés' des binaires proposés, ou la partie 'Information' de l'outil Synaptic.

'''''Note : Le nom du driver utilisé''' n'est ni 'epson', ni 'epson2', mais bel et bien '''epkowa''' !
''Pensez-y, avant de modifier tout fichier de configuration, surtout relative aux fonctions réseaux.''

=== La partie Scanner ===

Note : Il est nécessaire d'avoir le package ''''xsltproc'''' installé dans le système ...

Pour ce qui est d'utiliser la partie scanner de votre imprimante, il faut encore aller piocher directement sur leur site.
Les paquets correspondants sont nommés '''iscan''', '''iscan-data''', voire '''iscan-network''' - ''ce dernier est nécessaire seulement si le scanner a une fonctionnalité réseau''. 
''À-propos des packages &quot;iscan&quot;, voici ce que dit la [http://download.ebz.epson.net/faq/linux/faq_ls_00002.html FAQ Epson iscan] (en langue anglaise).''

Une fois les paquets téléchargés, installez-le(s) à coup de : '''dpkg -i iscan*'''

'''''Note :''' Pour &quot;iscan-network&quot;, pensez à modifier le fichier /etc/sane.d/epkowa.conf pour ajouter '''net adr_ip 1865''''' 

[[Catégorie:Imprimantes et Scanners]]</text>
      <sha1>fhkmyk0r3ua79ft1nam6188z5wh2qbm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Gestion des archives sous Debian</title>
    <ns>0</ns>
    <id>537</id>
    <revision>
      <id>2193</id>
      <timestamp>2010-10-08T08:10:49Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « '''Gestion des archives sous GNU/Linux'''  Voici un récapitulatif des commandes les plus utilisées pour gérer les formats d'archive le plus souvent rencontrées sous GNU/L... »</comment>
      <text xml:space="preserve" bytes="6468">'''Gestion des archives sous GNU/Linux'''

Voici un récapitulatif des commandes les plus utilisées pour gérer les formats d'archive le plus souvent rencontrées sous GNU/Linux (ne seront pas traités ici les archiveurs graphiques).

A titre d'information, quelques archiveurs graphiques : File-roller - Ark - Xarchiver - peazip - Q7Z

== Utilitaires de compression ==

=== gzip (GNU/GPL) ===

programme de compression destiné à remplacer compress. Ses principaux avantages sur compress sont une compression nettement meilleure et le fait d'être non breveté. Il a été adopté par [http://www.gnu.org/ le projet GNU]

*Utilisation:

:Décompresser et détruire l'archive :

 $ gunzip fichier.gz

:Décompresser et conserver l'archive :

 $ gunzip -c fichier.gz &gt; destination

:Lire le contenu sans décompresser

 $ gunzip -c fichier.gz | less
ou
 $ zcat fichier.gz | less

:Compresser et détruire le fichier à compresser :

 $ gzip fichier

:Compresser et conserver le fichier à compresser :

 $ gzip -c fichier &gt; destination.gz

=== bzip2 (assimilé à GNU/GPL) ===

Bzip2 ressemble beaucoup à Gzip
Bzip2 est à la fois le nom d'un algorithme de compression de données et d'un logiciel libre. Les résultats sont meilleurs qu'avec gip, mais Bzip2 est plus lent. L'extension associée est .bz2

*Utilisation:

:Décompresser et détruire l'archive

 $ bunzip2 fichier.bz2

:Décompresser et conserver l'archive

 $ bunzip2 -c fichier.gz &gt; destination

:Lire le contenu sans décompresser

 $ bunzip2 -c fichier.bz2 | less

ou

 $ bzcat fichier.bz2 | less

:Compresser et détruire le fichier à compresser

 $ bzip2 fichier

:Compresser et conserver le fichier à compresser

 bzip2 -c fichier &gt; destination.bz2

== Utilitaires d'archivage ou d'archivage et de compression ==

=== tar (GNU/GPL) ===

tar (tape archiveur) est un outil très puissant pour la manipulation d'archives sous les systèmes Unix.
tar ne compresse pas, il rassemble plusieurs fichiers. Il souvent utilisé avec bz2 et gzip.

*Utilisation:

:Décompresser l'archive entière dans le répertoire courant

 $ tar xvf archive.tar

:Décompresser l'archive entière dans un autre répertoire

 $ tar xvf archive.tar -C &lt;répertoire&gt;

:Décompresser un (des) fichier(s) inclus dans l'archive

 $ tar xvf archive.tar &lt;fichier1&gt; &lt;répertoire1&gt; ...

(Vous pouvez combiner avec -C &lt;répertoire&gt; : tar xvf test.tar -C &lt;répertoire&gt; fichier)

:Lister le contenu de l'archive

 $ tar tvf archive.tar

:Créer une archive (inclure fichier1 et répertoire1) :

 $ tar cvf archive.tar &lt;fichier1&gt; &lt;répertoire1&gt; etc.

:Ajouter un (des) fichier(s) et/ou un (des) répertoire(s) à une archive existante :

 $ tar rvf archive.tar &lt;fichier1&gt; &lt;répertoire1&gt; etc.

:Enlever un (des) fichier(s) et/ou un (des) répertoire(s) d'une archive :

 $ tar --delete -vf archive.tar &lt;fichier1&gt; &lt;répertoire1&gt; etc.

:Mettre à jour un (des) fichier(s) et/ou un (des) répertoire(s) d'une archive (seuls les fichiers modifiés depuis la création de l'archive et les nouveaux fichiers seront remplacés) :

 $ tar uvf archive.tar &lt;fichier1&gt; &lt;répertoire1&gt; etc.

=== Tar gz (tgz) (GNU/GPL) ===

Il suffit d'ajouter un &quot;z&quot; à une archive tar pour qu'elle se transforme en tgz...
Ne pas de modifier avec tar une archive tar.gz, elle aurait toutes les chances d'être corrompue.

:Décompresser une archive tar.gz dans le répertoire courant :

 $ tar xvzf archive.tar.gz

:Décompresser une archive tar.gz, préciser le répertoire de destination :

 $ tar xvzf archive.tar.gz -C &lt;répertoire&gt;

:Décompresser un (des) fichier(s) et/ou un (des) répertoire(s) inclus dans une archive :

 $ tar xvzf archive.tar.gz &lt;fichier1&gt; &lt;répertoire1&gt; etc.

(Vous pouvez combiner avec -C &lt;répertoire&gt; : tar xzvf test.tar.gz -C &lt;répertoire&gt; fichier)

:Lister le contenu d'une archive :

 $ tar tvzf archive.tar.gz

:Créer une archive :

 $ tar cvzf archive.tar.gz &lt;fichier1&gt; &lt;répertoire1&gt; etc.

=== Tar bzip (GNU/GPL) ===

bzip2 est très utilisé sous UNIX comme alternative, voire comme remplacement à l'utilitaire gzip, du fait de son efficacité supérieure.

Il ne le remplace pas totalement car il est significativement moins rapide

:Décompresser l'archive entière dans le répertoire courant

 $ tar xvjf archive.tar.bz2

:Décompresser l'archive entière dans un autre répertoire

 $ tar xvjf archive.tar.bz2 -C &lt;répertoire&gt;

:Décompresser un (des) fichier(s) et/ou un (des) répertoire(s) inclus dans l'archive

 $ tar xvjf archive.tar.bz2 &lt;fichier1&gt; &lt;répertoire1&gt; etc.

(Vous pouvez combiner avec -C &lt;répertoire&gt; : tar xvjf test.tar.bz2 -C &lt;répertoire&gt; fichier)

:Lister le contenu de l'archive

 $ tar tvjf archive.tar.bz2

:Créer une archive

 $ tar cvjf archive.tar.bz2 &lt;fichier1&gt; &lt;répertoire1&gt; etc.

=== Lzma &amp; Lzma2 ===

A faire

=== Ar (GNU/GPL) ===

Ar est surtout utilisé par Debian GNU/Linux pour ses paquetages en .deb. Tout comme tar, il est souvent utilisé avec gzip ou bzip2. A éviter pour une distribution grand public de votre archive, où tar se révélera plus pratique pour les destinataires.

:Décompresser une archive

 $ ar x archive.ar

:Décompresser un (des) fichier(s) et/ou un (des) répertoire(s) de l'archive

 $ ar x archive.rar &lt;répertoire&gt; &lt;fichier&gt; etc.

:Créer une archive / ajouter un (des) fichier(s) et/ou un (des) répertoire(s) à une archive

 $ ar r archive.ar &lt;répertoire&gt; &lt;fichier&gt; etc.

:Supprimer un (des) fichier(s) et/ou un (des) répertoire(s) à une archive

 $ ar d archive.ar &lt;répertoire&gt; &lt;fichier&gt; etc.

:Lister le contenu d'une archive

 $ ar tv archive.ar

=== Zip (Algorithme dans le domaine public, licence variable pour les archiveurs) ===

EVITEZ LE ZIP pour le stockage sous GNU/Linux. Utiliser tar et gzip est une bien meilleure idée.
Pour utiliser cet utilitaire il faut que les paquets zip et unzip soient installé sur votre sytème.

:Décompresser dans le répertoire courant

 $ unzip archive.zip

:Décompresser dans un autre répertoire que le répertoire courant

 $ unzip archive.zip -d &lt;répertoire&gt;

:Créer une archive

 $ zip archive.zip &lt;répertoire&gt; &lt;fichier&gt; etc.

:Décompresser un (des) fichier(s) et/ou un (des) répertoire(s) d'une archive

 $ unzip archive.zip &lt;répertoire&gt; &lt;fichier&gt; etc.

=== Rar (Propriétaire) ===

Rar est un format propriétaire. Evitez ce format...

:Décompresser dans le répertoire courant sans arborescence

 $ rar e archive.rar

:Décompresser avec l'arborescence

 $ rar x archive.rar</text>
      <sha1>3q64yuxxdrafeb69mc83mzyl00ztfok</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2194</id>
      <parentid>2193</parentid>
      <timestamp>2010-10-08T08:11:48Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="6502">'''Gestion des archives sous GNU/Linux'''

Voici un récapitulatif des commandes les plus utilisées pour gérer les formats d'archive le plus souvent rencontrées sous GNU/Linux (ne seront pas traités ici les archiveurs graphiques).

A titre d'information, quelques archiveurs graphiques : File-roller - Ark - Xarchiver - peazip - Q7Z

== Utilitaires de compression ==

=== gzip (GNU/GPL) ===

programme de compression destiné à remplacer compress. Ses principaux avantages sur compress sont une compression nettement meilleure et le fait d'être non breveté. Il a été adopté par [http://www.gnu.org/ le projet GNU]

*Utilisation:

:Décompresser et détruire l'archive :

 $ gunzip fichier.gz

:Décompresser et conserver l'archive :

 $ gunzip -c fichier.gz &gt; destination

:Lire le contenu sans décompresser

 $ gunzip -c fichier.gz | less
ou
 $ zcat fichier.gz | less

:Compresser et détruire le fichier à compresser :

 $ gzip fichier

:Compresser et conserver le fichier à compresser :

 $ gzip -c fichier &gt; destination.gz

=== bzip2 (assimilé à GNU/GPL) ===

Bzip2 ressemble beaucoup à Gzip
Bzip2 est à la fois le nom d'un algorithme de compression de données et d'un logiciel libre. Les résultats sont meilleurs qu'avec gip, mais Bzip2 est plus lent. L'extension associée est .bz2

*Utilisation:

:Décompresser et détruire l'archive

 $ bunzip2 fichier.bz2

:Décompresser et conserver l'archive

 $ bunzip2 -c fichier.gz &gt; destination

:Lire le contenu sans décompresser

 $ bunzip2 -c fichier.bz2 | less

ou

 $ bzcat fichier.bz2 | less

:Compresser et détruire le fichier à compresser

 $ bzip2 fichier

:Compresser et conserver le fichier à compresser

 bzip2 -c fichier &gt; destination.bz2

== Utilitaires d'archivage ou d'archivage et de compression ==

=== tar (GNU/GPL) ===

tar (tape archiveur) est un outil très puissant pour la manipulation d'archives sous les systèmes Unix.
tar ne compresse pas, il rassemble plusieurs fichiers. Il souvent utilisé avec bz2 et gzip.

*Utilisation:

:Décompresser l'archive entière dans le répertoire courant

 $ tar xvf archive.tar

:Décompresser l'archive entière dans un autre répertoire

 $ tar xvf archive.tar -C &lt;répertoire&gt;

:Décompresser un (des) fichier(s) inclus dans l'archive

 $ tar xvf archive.tar &lt;fichier1&gt; &lt;répertoire1&gt; ...

(Vous pouvez combiner avec -C &lt;répertoire&gt; : tar xvf test.tar -C &lt;répertoire&gt; fichier)

:Lister le contenu de l'archive

 $ tar tvf archive.tar

:Créer une archive (inclure fichier1 et répertoire1) :

 $ tar cvf archive.tar &lt;fichier1&gt; &lt;répertoire1&gt; etc.

:Ajouter un (des) fichier(s) et/ou un (des) répertoire(s) à une archive existante :

 $ tar rvf archive.tar &lt;fichier1&gt; &lt;répertoire1&gt; etc.

:Enlever un (des) fichier(s) et/ou un (des) répertoire(s) d'une archive :

 $ tar --delete -vf archive.tar &lt;fichier1&gt; &lt;répertoire1&gt; etc.

:Mettre à jour un (des) fichier(s) et/ou un (des) répertoire(s) d'une archive (seuls les fichiers modifiés depuis la création de l'archive et les nouveaux fichiers seront remplacés) :

 $ tar uvf archive.tar &lt;fichier1&gt; &lt;répertoire1&gt; etc.

=== Tar gz (tgz) (GNU/GPL) ===

Il suffit d'ajouter un &quot;z&quot; à une archive tar pour qu'elle se transforme en tgz...
Ne pas de modifier avec tar une archive tar.gz, elle aurait toutes les chances d'être corrompue.

:Décompresser une archive tar.gz dans le répertoire courant :

 $ tar xvzf archive.tar.gz

:Décompresser une archive tar.gz, préciser le répertoire de destination :

 $ tar xvzf archive.tar.gz -C &lt;répertoire&gt;

:Décompresser un (des) fichier(s) et/ou un (des) répertoire(s) inclus dans une archive :

 $ tar xvzf archive.tar.gz &lt;fichier1&gt; &lt;répertoire1&gt; etc.

(Vous pouvez combiner avec -C &lt;répertoire&gt; : tar xzvf test.tar.gz -C &lt;répertoire&gt; fichier)

:Lister le contenu d'une archive :

 $ tar tvzf archive.tar.gz

:Créer une archive :

 $ tar cvzf archive.tar.gz &lt;fichier1&gt; &lt;répertoire1&gt; etc.

=== Tar bzip (GNU/GPL) ===

bzip2 est très utilisé sous UNIX comme alternative, voire comme remplacement à l'utilitaire gzip, du fait de son efficacité supérieure.

Il ne le remplace pas totalement car il est significativement moins rapide

:Décompresser l'archive entière dans le répertoire courant

 $ tar xvjf archive.tar.bz2

:Décompresser l'archive entière dans un autre répertoire

 $ tar xvjf archive.tar.bz2 -C &lt;répertoire&gt;

:Décompresser un (des) fichier(s) et/ou un (des) répertoire(s) inclus dans l'archive

 $ tar xvjf archive.tar.bz2 &lt;fichier1&gt; &lt;répertoire1&gt; etc.

(Vous pouvez combiner avec -C &lt;répertoire&gt; : tar xvjf test.tar.bz2 -C &lt;répertoire&gt; fichier)

:Lister le contenu de l'archive

 $ tar tvjf archive.tar.bz2

:Créer une archive

 $ tar cvjf archive.tar.bz2 &lt;fichier1&gt; &lt;répertoire1&gt; etc.

=== Lzma &amp; Lzma2 ===

A faire

=== Ar (GNU/GPL) ===

Ar est surtout utilisé par Debian GNU/Linux pour ses paquetages en .deb. Tout comme tar, il est souvent utilisé avec gzip ou bzip2. A éviter pour une distribution grand public de votre archive, où tar se révélera plus pratique pour les destinataires.

:Décompresser une archive

 $ ar x archive.ar

:Décompresser un (des) fichier(s) et/ou un (des) répertoire(s) de l'archive

 $ ar x archive.rar &lt;répertoire&gt; &lt;fichier&gt; etc.

:Créer une archive / ajouter un (des) fichier(s) et/ou un (des) répertoire(s) à une archive

 $ ar r archive.ar &lt;répertoire&gt; &lt;fichier&gt; etc.

:Supprimer un (des) fichier(s) et/ou un (des) répertoire(s) à une archive

 $ ar d archive.ar &lt;répertoire&gt; &lt;fichier&gt; etc.

:Lister le contenu d'une archive

 $ ar tv archive.ar

=== Zip (Algorithme dans le domaine public, licence variable pour les archiveurs) ===

EVITEZ LE ZIP pour le stockage sous GNU/Linux. Utiliser tar et gzip est une bien meilleure idée.
Pour utiliser cet utilitaire il faut que les paquets zip et unzip soient installé sur votre sytème.

:Décompresser dans le répertoire courant

 $ unzip archive.zip

:Décompresser dans un autre répertoire que le répertoire courant

 $ unzip archive.zip -d &lt;répertoire&gt;

:Créer une archive

 $ zip archive.zip &lt;répertoire&gt; &lt;fichier&gt; etc.

:Décompresser un (des) fichier(s) et/ou un (des) répertoire(s) d'une archive

 $ unzip archive.zip &lt;répertoire&gt; &lt;fichier&gt; etc.

=== Rar (Propriétaire) ===

Rar est un format propriétaire. Evitez ce format...

:Décompresser dans le répertoire courant sans arborescence

 $ rar e archive.rar

:Décompresser avec l'arborescence

 $ rar x archive.rar

[[Catégorie:Commandes de base]]</text>
      <sha1>b6o5fiefcerk29zcqm5lx1l79h4yulk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2196</id>
      <parentid>2194</parentid>
      <timestamp>2010-10-08T08:27:30Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* bzip2 (assimilé à GNU/GPL) */</comment>
      <text xml:space="preserve" bytes="6503">'''Gestion des archives sous GNU/Linux'''

Voici un récapitulatif des commandes les plus utilisées pour gérer les formats d'archive le plus souvent rencontrées sous GNU/Linux (ne seront pas traités ici les archiveurs graphiques).

A titre d'information, quelques archiveurs graphiques : File-roller - Ark - Xarchiver - peazip - Q7Z

== Utilitaires de compression ==

=== gzip (GNU/GPL) ===

programme de compression destiné à remplacer compress. Ses principaux avantages sur compress sont une compression nettement meilleure et le fait d'être non breveté. Il a été adopté par [http://www.gnu.org/ le projet GNU]

*Utilisation:

:Décompresser et détruire l'archive :

 $ gunzip fichier.gz

:Décompresser et conserver l'archive :

 $ gunzip -c fichier.gz &gt; destination

:Lire le contenu sans décompresser

 $ gunzip -c fichier.gz | less
ou
 $ zcat fichier.gz | less

:Compresser et détruire le fichier à compresser :

 $ gzip fichier

:Compresser et conserver le fichier à compresser :

 $ gzip -c fichier &gt; destination.gz

=== bzip2 (assimilé à GNU/GPL) ===

Bzip2 ressemble beaucoup à Gzip
Bzip2 est à la fois le nom d'un algorithme de compression de données et d'un logiciel libre. Les résultats sont meilleurs qu'avec gzip, mais Bzip2 est plus lent. L'extension associée est .bz2

*Utilisation:

:Décompresser et détruire l'archive

 $ bunzip2 fichier.bz2

:Décompresser et conserver l'archive

 $ bunzip2 -c fichier.gz &gt; destination

:Lire le contenu sans décompresser

 $ bunzip2 -c fichier.bz2 | less

ou

 $ bzcat fichier.bz2 | less

:Compresser et détruire le fichier à compresser

 $ bzip2 fichier

:Compresser et conserver le fichier à compresser

 bzip2 -c fichier &gt; destination.bz2

== Utilitaires d'archivage ou d'archivage et de compression ==

=== tar (GNU/GPL) ===

tar (tape archiveur) est un outil très puissant pour la manipulation d'archives sous les systèmes Unix.
tar ne compresse pas, il rassemble plusieurs fichiers. Il souvent utilisé avec bz2 et gzip.

*Utilisation:

:Décompresser l'archive entière dans le répertoire courant

 $ tar xvf archive.tar

:Décompresser l'archive entière dans un autre répertoire

 $ tar xvf archive.tar -C &lt;répertoire&gt;

:Décompresser un (des) fichier(s) inclus dans l'archive

 $ tar xvf archive.tar &lt;fichier1&gt; &lt;répertoire1&gt; ...

(Vous pouvez combiner avec -C &lt;répertoire&gt; : tar xvf test.tar -C &lt;répertoire&gt; fichier)

:Lister le contenu de l'archive

 $ tar tvf archive.tar

:Créer une archive (inclure fichier1 et répertoire1) :

 $ tar cvf archive.tar &lt;fichier1&gt; &lt;répertoire1&gt; etc.

:Ajouter un (des) fichier(s) et/ou un (des) répertoire(s) à une archive existante :

 $ tar rvf archive.tar &lt;fichier1&gt; &lt;répertoire1&gt; etc.

:Enlever un (des) fichier(s) et/ou un (des) répertoire(s) d'une archive :

 $ tar --delete -vf archive.tar &lt;fichier1&gt; &lt;répertoire1&gt; etc.

:Mettre à jour un (des) fichier(s) et/ou un (des) répertoire(s) d'une archive (seuls les fichiers modifiés depuis la création de l'archive et les nouveaux fichiers seront remplacés) :

 $ tar uvf archive.tar &lt;fichier1&gt; &lt;répertoire1&gt; etc.

=== Tar gz (tgz) (GNU/GPL) ===

Il suffit d'ajouter un &quot;z&quot; à une archive tar pour qu'elle se transforme en tgz...
Ne pas de modifier avec tar une archive tar.gz, elle aurait toutes les chances d'être corrompue.

:Décompresser une archive tar.gz dans le répertoire courant :

 $ tar xvzf archive.tar.gz

:Décompresser une archive tar.gz, préciser le répertoire de destination :

 $ tar xvzf archive.tar.gz -C &lt;répertoire&gt;

:Décompresser un (des) fichier(s) et/ou un (des) répertoire(s) inclus dans une archive :

 $ tar xvzf archive.tar.gz &lt;fichier1&gt; &lt;répertoire1&gt; etc.

(Vous pouvez combiner avec -C &lt;répertoire&gt; : tar xzvf test.tar.gz -C &lt;répertoire&gt; fichier)

:Lister le contenu d'une archive :

 $ tar tvzf archive.tar.gz

:Créer une archive :

 $ tar cvzf archive.tar.gz &lt;fichier1&gt; &lt;répertoire1&gt; etc.

=== Tar bzip (GNU/GPL) ===

bzip2 est très utilisé sous UNIX comme alternative, voire comme remplacement à l'utilitaire gzip, du fait de son efficacité supérieure.

Il ne le remplace pas totalement car il est significativement moins rapide

:Décompresser l'archive entière dans le répertoire courant

 $ tar xvjf archive.tar.bz2

:Décompresser l'archive entière dans un autre répertoire

 $ tar xvjf archive.tar.bz2 -C &lt;répertoire&gt;

:Décompresser un (des) fichier(s) et/ou un (des) répertoire(s) inclus dans l'archive

 $ tar xvjf archive.tar.bz2 &lt;fichier1&gt; &lt;répertoire1&gt; etc.

(Vous pouvez combiner avec -C &lt;répertoire&gt; : tar xvjf test.tar.bz2 -C &lt;répertoire&gt; fichier)

:Lister le contenu de l'archive

 $ tar tvjf archive.tar.bz2

:Créer une archive

 $ tar cvjf archive.tar.bz2 &lt;fichier1&gt; &lt;répertoire1&gt; etc.

=== Lzma &amp; Lzma2 ===

A faire

=== Ar (GNU/GPL) ===

Ar est surtout utilisé par Debian GNU/Linux pour ses paquetages en .deb. Tout comme tar, il est souvent utilisé avec gzip ou bzip2. A éviter pour une distribution grand public de votre archive, où tar se révélera plus pratique pour les destinataires.

:Décompresser une archive

 $ ar x archive.ar

:Décompresser un (des) fichier(s) et/ou un (des) répertoire(s) de l'archive

 $ ar x archive.rar &lt;répertoire&gt; &lt;fichier&gt; etc.

:Créer une archive / ajouter un (des) fichier(s) et/ou un (des) répertoire(s) à une archive

 $ ar r archive.ar &lt;répertoire&gt; &lt;fichier&gt; etc.

:Supprimer un (des) fichier(s) et/ou un (des) répertoire(s) à une archive

 $ ar d archive.ar &lt;répertoire&gt; &lt;fichier&gt; etc.

:Lister le contenu d'une archive

 $ ar tv archive.ar

=== Zip (Algorithme dans le domaine public, licence variable pour les archiveurs) ===

EVITEZ LE ZIP pour le stockage sous GNU/Linux. Utiliser tar et gzip est une bien meilleure idée.
Pour utiliser cet utilitaire il faut que les paquets zip et unzip soient installé sur votre sytème.

:Décompresser dans le répertoire courant

 $ unzip archive.zip

:Décompresser dans un autre répertoire que le répertoire courant

 $ unzip archive.zip -d &lt;répertoire&gt;

:Créer une archive

 $ zip archive.zip &lt;répertoire&gt; &lt;fichier&gt; etc.

:Décompresser un (des) fichier(s) et/ou un (des) répertoire(s) d'une archive

 $ unzip archive.zip &lt;répertoire&gt; &lt;fichier&gt; etc.

=== Rar (Propriétaire) ===

Rar est un format propriétaire. Evitez ce format...

:Décompresser dans le répertoire courant sans arborescence

 $ rar e archive.rar

:Décompresser avec l'arborescence

 $ rar x archive.rar

[[Catégorie:Commandes de base]]</text>
      <sha1>37q8t1qm50bgkatpihqlu23d4yf42m7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2197</id>
      <parentid>2196</parentid>
      <timestamp>2010-10-08T08:29:04Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* tar (GNU/GPL) */</comment>
      <text xml:space="preserve" bytes="6507">'''Gestion des archives sous GNU/Linux'''

Voici un récapitulatif des commandes les plus utilisées pour gérer les formats d'archive le plus souvent rencontrées sous GNU/Linux (ne seront pas traités ici les archiveurs graphiques).

A titre d'information, quelques archiveurs graphiques : File-roller - Ark - Xarchiver - peazip - Q7Z

== Utilitaires de compression ==

=== gzip (GNU/GPL) ===

programme de compression destiné à remplacer compress. Ses principaux avantages sur compress sont une compression nettement meilleure et le fait d'être non breveté. Il a été adopté par [http://www.gnu.org/ le projet GNU]

*Utilisation:

:Décompresser et détruire l'archive :

 $ gunzip fichier.gz

:Décompresser et conserver l'archive :

 $ gunzip -c fichier.gz &gt; destination

:Lire le contenu sans décompresser

 $ gunzip -c fichier.gz | less
ou
 $ zcat fichier.gz | less

:Compresser et détruire le fichier à compresser :

 $ gzip fichier

:Compresser et conserver le fichier à compresser :

 $ gzip -c fichier &gt; destination.gz

=== bzip2 (assimilé à GNU/GPL) ===

Bzip2 ressemble beaucoup à Gzip
Bzip2 est à la fois le nom d'un algorithme de compression de données et d'un logiciel libre. Les résultats sont meilleurs qu'avec gzip, mais Bzip2 est plus lent. L'extension associée est .bz2

*Utilisation:

:Décompresser et détruire l'archive

 $ bunzip2 fichier.bz2

:Décompresser et conserver l'archive

 $ bunzip2 -c fichier.gz &gt; destination

:Lire le contenu sans décompresser

 $ bunzip2 -c fichier.bz2 | less

ou

 $ bzcat fichier.bz2 | less

:Compresser et détruire le fichier à compresser

 $ bzip2 fichier

:Compresser et conserver le fichier à compresser

 bzip2 -c fichier &gt; destination.bz2

== Utilitaires d'archivage ou d'archivage et de compression ==

=== tar (GNU/GPL) ===

tar (tape archiveur) est un outil très puissant pour la manipulation d'archives sous les systèmes Unix.
tar ne compresse pas, il rassemble plusieurs fichiers. Il est souvent utilisé avec bz2 et gzip.

*Utilisation:

:Décompresser l'archive entière dans le répertoire courant

 $ tar xvf archive.tar

:Décompresser l'archive entière dans un autre répertoire

 $ tar xvf archive.tar -C &lt;répertoire&gt;

:Décompresser un (des) fichier(s) inclus dans l'archive

 $ tar xvf archive.tar &lt;fichier1&gt; &lt;répertoire1&gt; ...

(Vous pouvez combiner avec -C &lt;répertoire&gt; : tar xvf test.tar -C &lt;répertoire&gt; fichier)

:Lister le contenu de l'archive

 $ tar tvf archive.tar

:Créer une archive (inclure fichier1 et répertoire1) :

 $ tar cvf archive.tar &lt;fichier1&gt; &lt;répertoire1&gt; etc.

:Ajouter un (des) fichier(s) et/ou un (des) répertoire(s) à une archive existante :

 $ tar rvf archive.tar &lt;fichier1&gt; &lt;répertoire1&gt; etc.

:Enlever un (des) fichier(s) et/ou un (des) répertoire(s) d'une archive :

 $ tar --delete -vf archive.tar &lt;fichier1&gt; &lt;répertoire1&gt; etc.

:Mettre à jour un (des) fichier(s) et/ou un (des) répertoire(s) d'une archive (seuls les fichiers modifiés depuis la création de l'archive et les nouveaux fichiers seront remplacés) :

 $ tar uvf archive.tar &lt;fichier1&gt; &lt;répertoire1&gt; etc.

=== Tar gz (tgz) (GNU/GPL) ===

Il suffit d'ajouter un &quot;z&quot; à une archive tar pour qu'elle se transforme en tgz...
Ne pas de modifier avec tar une archive tar.gz, elle aurait toutes les chances d'être corrompue.

:Décompresser une archive tar.gz dans le répertoire courant :

 $ tar xvzf archive.tar.gz

:Décompresser une archive tar.gz, préciser le répertoire de destination :

 $ tar xvzf archive.tar.gz -C &lt;répertoire&gt;

:Décompresser un (des) fichier(s) et/ou un (des) répertoire(s) inclus dans une archive :

 $ tar xvzf archive.tar.gz &lt;fichier1&gt; &lt;répertoire1&gt; etc.

(Vous pouvez combiner avec -C &lt;répertoire&gt; : tar xzvf test.tar.gz -C &lt;répertoire&gt; fichier)

:Lister le contenu d'une archive :

 $ tar tvzf archive.tar.gz

:Créer une archive :

 $ tar cvzf archive.tar.gz &lt;fichier1&gt; &lt;répertoire1&gt; etc.

=== Tar bzip (GNU/GPL) ===

bzip2 est très utilisé sous UNIX comme alternative, voire comme remplacement à l'utilitaire gzip, du fait de son efficacité supérieure.

Il ne le remplace pas totalement car il est significativement moins rapide

:Décompresser l'archive entière dans le répertoire courant

 $ tar xvjf archive.tar.bz2

:Décompresser l'archive entière dans un autre répertoire

 $ tar xvjf archive.tar.bz2 -C &lt;répertoire&gt;

:Décompresser un (des) fichier(s) et/ou un (des) répertoire(s) inclus dans l'archive

 $ tar xvjf archive.tar.bz2 &lt;fichier1&gt; &lt;répertoire1&gt; etc.

(Vous pouvez combiner avec -C &lt;répertoire&gt; : tar xvjf test.tar.bz2 -C &lt;répertoire&gt; fichier)

:Lister le contenu de l'archive

 $ tar tvjf archive.tar.bz2

:Créer une archive

 $ tar cvjf archive.tar.bz2 &lt;fichier1&gt; &lt;répertoire1&gt; etc.

=== Lzma &amp; Lzma2 ===

A faire

=== Ar (GNU/GPL) ===

Ar est surtout utilisé par Debian GNU/Linux pour ses paquetages en .deb. Tout comme tar, il est souvent utilisé avec gzip ou bzip2. A éviter pour une distribution grand public de votre archive, où tar se révélera plus pratique pour les destinataires.

:Décompresser une archive

 $ ar x archive.ar

:Décompresser un (des) fichier(s) et/ou un (des) répertoire(s) de l'archive

 $ ar x archive.rar &lt;répertoire&gt; &lt;fichier&gt; etc.

:Créer une archive / ajouter un (des) fichier(s) et/ou un (des) répertoire(s) à une archive

 $ ar r archive.ar &lt;répertoire&gt; &lt;fichier&gt; etc.

:Supprimer un (des) fichier(s) et/ou un (des) répertoire(s) à une archive

 $ ar d archive.ar &lt;répertoire&gt; &lt;fichier&gt; etc.

:Lister le contenu d'une archive

 $ ar tv archive.ar

=== Zip (Algorithme dans le domaine public, licence variable pour les archiveurs) ===

EVITEZ LE ZIP pour le stockage sous GNU/Linux. Utiliser tar et gzip est une bien meilleure idée.
Pour utiliser cet utilitaire il faut que les paquets zip et unzip soient installé sur votre sytème.

:Décompresser dans le répertoire courant

 $ unzip archive.zip

:Décompresser dans un autre répertoire que le répertoire courant

 $ unzip archive.zip -d &lt;répertoire&gt;

:Créer une archive

 $ zip archive.zip &lt;répertoire&gt; &lt;fichier&gt; etc.

:Décompresser un (des) fichier(s) et/ou un (des) répertoire(s) d'une archive

 $ unzip archive.zip &lt;répertoire&gt; &lt;fichier&gt; etc.

=== Rar (Propriétaire) ===

Rar est un format propriétaire. Evitez ce format...

:Décompresser dans le répertoire courant sans arborescence

 $ rar e archive.rar

:Décompresser avec l'arborescence

 $ rar x archive.rar

[[Catégorie:Commandes de base]]</text>
      <sha1>fgqssd3ypn76aw66tiipi3vmiv9yvjk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2198</id>
      <parentid>2197</parentid>
      <timestamp>2010-10-08T08:30:13Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Tar gz (tgz) (GNU/GPL) */</comment>
      <text xml:space="preserve" bytes="6514">'''Gestion des archives sous GNU/Linux'''

Voici un récapitulatif des commandes les plus utilisées pour gérer les formats d'archive le plus souvent rencontrées sous GNU/Linux (ne seront pas traités ici les archiveurs graphiques).

A titre d'information, quelques archiveurs graphiques : File-roller - Ark - Xarchiver - peazip - Q7Z

== Utilitaires de compression ==

=== gzip (GNU/GPL) ===

programme de compression destiné à remplacer compress. Ses principaux avantages sur compress sont une compression nettement meilleure et le fait d'être non breveté. Il a été adopté par [http://www.gnu.org/ le projet GNU]

*Utilisation:

:Décompresser et détruire l'archive :

 $ gunzip fichier.gz

:Décompresser et conserver l'archive :

 $ gunzip -c fichier.gz &gt; destination

:Lire le contenu sans décompresser

 $ gunzip -c fichier.gz | less
ou
 $ zcat fichier.gz | less

:Compresser et détruire le fichier à compresser :

 $ gzip fichier

:Compresser et conserver le fichier à compresser :

 $ gzip -c fichier &gt; destination.gz

=== bzip2 (assimilé à GNU/GPL) ===

Bzip2 ressemble beaucoup à Gzip
Bzip2 est à la fois le nom d'un algorithme de compression de données et d'un logiciel libre. Les résultats sont meilleurs qu'avec gzip, mais Bzip2 est plus lent. L'extension associée est .bz2

*Utilisation:

:Décompresser et détruire l'archive

 $ bunzip2 fichier.bz2

:Décompresser et conserver l'archive

 $ bunzip2 -c fichier.gz &gt; destination

:Lire le contenu sans décompresser

 $ bunzip2 -c fichier.bz2 | less

ou

 $ bzcat fichier.bz2 | less

:Compresser et détruire le fichier à compresser

 $ bzip2 fichier

:Compresser et conserver le fichier à compresser

 bzip2 -c fichier &gt; destination.bz2

== Utilitaires d'archivage ou d'archivage et de compression ==

=== tar (GNU/GPL) ===

tar (tape archiveur) est un outil très puissant pour la manipulation d'archives sous les systèmes Unix.
tar ne compresse pas, il rassemble plusieurs fichiers. Il est souvent utilisé avec bz2 et gzip.

*Utilisation:

:Décompresser l'archive entière dans le répertoire courant

 $ tar xvf archive.tar

:Décompresser l'archive entière dans un autre répertoire

 $ tar xvf archive.tar -C &lt;répertoire&gt;

:Décompresser un (des) fichier(s) inclus dans l'archive

 $ tar xvf archive.tar &lt;fichier1&gt; &lt;répertoire1&gt; ...

(Vous pouvez combiner avec -C &lt;répertoire&gt; : tar xvf test.tar -C &lt;répertoire&gt; fichier)

:Lister le contenu de l'archive

 $ tar tvf archive.tar

:Créer une archive (inclure fichier1 et répertoire1) :

 $ tar cvf archive.tar &lt;fichier1&gt; &lt;répertoire1&gt; etc.

:Ajouter un (des) fichier(s) et/ou un (des) répertoire(s) à une archive existante :

 $ tar rvf archive.tar &lt;fichier1&gt; &lt;répertoire1&gt; etc.

:Enlever un (des) fichier(s) et/ou un (des) répertoire(s) d'une archive :

 $ tar --delete -vf archive.tar &lt;fichier1&gt; &lt;répertoire1&gt; etc.

:Mettre à jour un (des) fichier(s) et/ou un (des) répertoire(s) d'une archive (seuls les fichiers modifiés depuis la création de l'archive et les nouveaux fichiers seront remplacés) :

 $ tar uvf archive.tar &lt;fichier1&gt; &lt;répertoire1&gt; etc.

=== Tar gz (tgz) (GNU/GPL) ===

Il suffit d'ajouter un &quot;z&quot; à une archive tar pour qu'elle se transforme en tgz...
Ne pas tenter de modifier avec tar une archive tar.gz, elle aurait toutes les chances d'être corrompue.

:Décompresser une archive tar.gz dans le répertoire courant :

 $ tar xvzf archive.tar.gz

:Décompresser une archive tar.gz, préciser le répertoire de destination :

 $ tar xvzf archive.tar.gz -C &lt;répertoire&gt;

:Décompresser un (des) fichier(s) et/ou un (des) répertoire(s) inclus dans une archive :

 $ tar xvzf archive.tar.gz &lt;fichier1&gt; &lt;répertoire1&gt; etc.

(Vous pouvez combiner avec -C &lt;répertoire&gt; : tar xzvf test.tar.gz -C &lt;répertoire&gt; fichier)

:Lister le contenu d'une archive :

 $ tar tvzf archive.tar.gz

:Créer une archive :

 $ tar cvzf archive.tar.gz &lt;fichier1&gt; &lt;répertoire1&gt; etc.

=== Tar bzip (GNU/GPL) ===

bzip2 est très utilisé sous UNIX comme alternative, voire comme remplacement à l'utilitaire gzip, du fait de son efficacité supérieure.

Il ne le remplace pas totalement car il est significativement moins rapide

:Décompresser l'archive entière dans le répertoire courant

 $ tar xvjf archive.tar.bz2

:Décompresser l'archive entière dans un autre répertoire

 $ tar xvjf archive.tar.bz2 -C &lt;répertoire&gt;

:Décompresser un (des) fichier(s) et/ou un (des) répertoire(s) inclus dans l'archive

 $ tar xvjf archive.tar.bz2 &lt;fichier1&gt; &lt;répertoire1&gt; etc.

(Vous pouvez combiner avec -C &lt;répertoire&gt; : tar xvjf test.tar.bz2 -C &lt;répertoire&gt; fichier)

:Lister le contenu de l'archive

 $ tar tvjf archive.tar.bz2

:Créer une archive

 $ tar cvjf archive.tar.bz2 &lt;fichier1&gt; &lt;répertoire1&gt; etc.

=== Lzma &amp; Lzma2 ===

A faire

=== Ar (GNU/GPL) ===

Ar est surtout utilisé par Debian GNU/Linux pour ses paquetages en .deb. Tout comme tar, il est souvent utilisé avec gzip ou bzip2. A éviter pour une distribution grand public de votre archive, où tar se révélera plus pratique pour les destinataires.

:Décompresser une archive

 $ ar x archive.ar

:Décompresser un (des) fichier(s) et/ou un (des) répertoire(s) de l'archive

 $ ar x archive.rar &lt;répertoire&gt; &lt;fichier&gt; etc.

:Créer une archive / ajouter un (des) fichier(s) et/ou un (des) répertoire(s) à une archive

 $ ar r archive.ar &lt;répertoire&gt; &lt;fichier&gt; etc.

:Supprimer un (des) fichier(s) et/ou un (des) répertoire(s) à une archive

 $ ar d archive.ar &lt;répertoire&gt; &lt;fichier&gt; etc.

:Lister le contenu d'une archive

 $ ar tv archive.ar

=== Zip (Algorithme dans le domaine public, licence variable pour les archiveurs) ===

EVITEZ LE ZIP pour le stockage sous GNU/Linux. Utiliser tar et gzip est une bien meilleure idée.
Pour utiliser cet utilitaire il faut que les paquets zip et unzip soient installé sur votre sytème.

:Décompresser dans le répertoire courant

 $ unzip archive.zip

:Décompresser dans un autre répertoire que le répertoire courant

 $ unzip archive.zip -d &lt;répertoire&gt;

:Créer une archive

 $ zip archive.zip &lt;répertoire&gt; &lt;fichier&gt; etc.

:Décompresser un (des) fichier(s) et/ou un (des) répertoire(s) d'une archive

 $ unzip archive.zip &lt;répertoire&gt; &lt;fichier&gt; etc.

=== Rar (Propriétaire) ===

Rar est un format propriétaire. Evitez ce format...

:Décompresser dans le répertoire courant sans arborescence

 $ rar e archive.rar

:Décompresser avec l'arborescence

 $ rar x archive.rar

[[Catégorie:Commandes de base]]</text>
      <sha1>8desm8ghnfkx8fotr0m8laaq0v18d0q</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4106</id>
      <parentid>2198</parentid>
      <timestamp>2012-04-28T08:46:10Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="6543">'''Gestion des archives sous GNU/Linux'''

Voici un récapitulatif des commandes les plus utilisées pour gérer les formats d'archive le plus souvent rencontrées sous GNU/Linux (ne seront pas traités ici les archiveurs graphiques).

A titre d'information, quelques archiveurs graphiques : File-roller - Ark - Xarchiver - peazip - Q7Z

== Utilitaires de compression ==

=== gzip (GNU/GPL) ===

programme de compression destiné à remplacer compress. Ses principaux avantages sur compress sont une compression nettement meilleure et le fait d'être non breveté. Il a été adopté par [http://www.gnu.org/ le projet GNU]

*Utilisation:

:Décompresser et détruire l'archive :

 $ gunzip fichier.gz

:Décompresser et conserver l'archive :

 $ gunzip -c fichier.gz &gt; destination

:Lire le contenu sans décompresser

 $ gunzip -c fichier.gz | less
ou
 $ zcat fichier.gz | less

:Compresser et détruire le fichier à compresser :

 $ gzip fichier

:Compresser et conserver le fichier à compresser :

 $ gzip -c fichier &gt; destination.gz

=== bzip2 (assimilé à GNU/GPL) ===

Bzip2 ressemble beaucoup à Gzip
Bzip2 est à la fois le nom d'un algorithme de compression de données et d'un logiciel libre. Les résultats sont meilleurs qu'avec gzip, mais Bzip2 est plus lent. L'extension associée est .bz2

*Utilisation:

:Décompresser et détruire l'archive

 $ bunzip2 fichier.bz2

:Décompresser et conserver l'archive

 $ bunzip2 -c fichier.gz &gt; destination

:Lire le contenu sans décompresser

 $ bunzip2 -c fichier.bz2 | less

ou

 $ bzcat fichier.bz2 | less

:Compresser et détruire le fichier à compresser

 $ bzip2 fichier

:Compresser et conserver le fichier à compresser

 bzip2 -c fichier &gt; destination.bz2

== Utilitaires d'archivage ou d'archivage et de compression ==

=== tar (GNU/GPL) ===

tar (tape archiveur) est un outil très puissant pour la manipulation d'archives sous les systèmes Unix.
tar ne compresse pas, il rassemble plusieurs fichiers. Il est souvent utilisé avec bz2 et gzip.

*Utilisation:

:Décompresser l'archive entière dans le répertoire courant

 $ tar xvf archive.tar

:Décompresser l'archive entière dans un autre répertoire

 $ tar xvf archive.tar -C &lt;répertoire&gt;

:Décompresser un (des) fichier(s) inclus dans l'archive

 $ tar xvf archive.tar &lt;fichier1&gt; &lt;répertoire1&gt; ...

(Vous pouvez combiner avec -C &lt;répertoire&gt; : tar xvf test.tar -C &lt;répertoire&gt; fichier)

:Lister le contenu de l'archive

 $ tar tvf archive.tar

:Créer une archive (inclure fichier1 et répertoire1) :

 $ tar cvf archive.tar &lt;fichier1&gt; &lt;répertoire1&gt; etc.

:Ajouter un (des) fichier(s) et/ou un (des) répertoire(s) à une archive existante :

 $ tar rvf archive.tar &lt;fichier1&gt; &lt;répertoire1&gt; etc.

:Enlever un (des) fichier(s) et/ou un (des) répertoire(s) d'une archive :

 $ tar --delete -vf archive.tar &lt;fichier1&gt; &lt;répertoire1&gt; etc.

:Mettre à jour un (des) fichier(s) et/ou un (des) répertoire(s) d'une archive (seuls les fichiers modifiés depuis la création de l'archive et les nouveaux fichiers seront remplacés) :

 $ tar uvf archive.tar &lt;fichier1&gt; &lt;répertoire1&gt; etc.

=== Tar gz (tgz) (GNU/GPL) ===

Il suffit d'ajouter un &quot;z&quot; à une archive tar pour qu'elle se transforme en tgz...
Ne pas tenter de modifier avec tar une archive tar.gz, elle aurait toutes les chances d'être corrompue.

:Décompresser une archive tar.gz dans le répertoire courant :

 $ tar xvzf archive.tar.gz

:Décompresser une archive tar.gz, préciser le répertoire de destination :

 $ tar xvzf archive.tar.gz -C &lt;répertoire&gt;

:Décompresser un (des) fichier(s) et/ou un (des) répertoire(s) inclus dans une archive :

 $ tar xvzf archive.tar.gz &lt;fichier1&gt; &lt;répertoire1&gt; etc.

(Vous pouvez combiner avec -C &lt;répertoire&gt; : tar xzvf test.tar.gz -C &lt;répertoire&gt; fichier)

:Lister le contenu d'une archive :

 $ tar tvzf archive.tar.gz

:Créer une archive :

 $ tar cvzf archive.tar.gz &lt;fichier1&gt; &lt;répertoire1&gt; etc.

=== Tar bzip (GNU/GPL) ===

bzip2 est très utilisé sous UNIX comme alternative, voire comme remplacement à l'utilitaire gzip, du fait de son efficacité supérieure.

Il ne le remplace pas totalement car il est significativement moins rapide

:Décompresser l'archive entière dans le répertoire courant

 $ tar xvjf archive.tar.bz2

:Décompresser l'archive entière dans un autre répertoire

 $ tar xvjf archive.tar.bz2 -C &lt;répertoire&gt;

:Décompresser un (des) fichier(s) et/ou un (des) répertoire(s) inclus dans l'archive

 $ tar xvjf archive.tar.bz2 &lt;fichier1&gt; &lt;répertoire1&gt; etc.

(Vous pouvez combiner avec -C &lt;répertoire&gt; : tar xvjf test.tar.bz2 -C &lt;répertoire&gt; fichier)

:Lister le contenu de l'archive

 $ tar tvjf archive.tar.bz2

:Créer une archive

 $ tar cvjf archive.tar.bz2 &lt;fichier1&gt; &lt;répertoire1&gt; etc.

=== Lzma &amp; Lzma2 ===

A faire

=== Ar (GNU/GPL) ===

Ar est surtout utilisé par Debian GNU/Linux pour ses paquetages en .deb. Tout comme tar, il est souvent utilisé avec gzip ou bzip2. A éviter pour une distribution grand public de votre archive, où tar se révélera plus pratique pour les destinataires.

:Décompresser une archive

 $ ar x archive.ar

:Décompresser un (des) fichier(s) et/ou un (des) répertoire(s) de l'archive

 $ ar x archive.rar &lt;répertoire&gt; &lt;fichier&gt; etc.

:Créer une archive / ajouter un (des) fichier(s) et/ou un (des) répertoire(s) à une archive

 $ ar r archive.ar &lt;répertoire&gt; &lt;fichier&gt; etc.

:Supprimer un (des) fichier(s) et/ou un (des) répertoire(s) à une archive

 $ ar d archive.ar &lt;répertoire&gt; &lt;fichier&gt; etc.

:Lister le contenu d'une archive

 $ ar tv archive.ar

=== Zip (Algorithme dans le domaine public, licence variable pour les archiveurs) ===

EVITEZ LE ZIP pour le stockage sous GNU/Linux. Utiliser tar et gzip est une bien meilleure idée.
Pour utiliser cet utilitaire il faut que les paquets zip et unzip soient installé sur votre sytème.

:Décompresser dans le répertoire courant

 $ unzip archive.zip

:Décompresser dans un autre répertoire que le répertoire courant

 $ unzip archive.zip -d &lt;répertoire&gt;

:Créer une archive

 $ zip archive.zip &lt;répertoire&gt; &lt;fichier&gt; etc.

:Décompresser un (des) fichier(s) et/ou un (des) répertoire(s) d'une archive

 $ unzip archive.zip &lt;répertoire&gt; &lt;fichier&gt; etc.

=== Rar (Propriétaire) ===

Rar est un format propriétaire. Evitez ce format...

:Décompresser dans le répertoire courant sans arborescence

 $ rar e archive.rar

:Décompresser avec l'arborescence

 $ rar x archive.rar

[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>5wk9lo8rw3tbd14kmjv5qkubdu97zxp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Gestion des fichiers</title>
    <ns>0</ns>
    <id>106</id>
    <revision>
      <id>446</id>
      <timestamp>2010-01-28T13:07:56Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « {{sid}}   ----  &lt;u&gt;'''BROUILLON... La rédaction n'est pas encore terminée.'''&lt;/u&gt;   ----  = Gestion des fichiers  =  == Quelques commandes  ==  === La commande '''cat'''  =… »</comment>
      <text xml:space="preserve" bytes="11395">{{sid}} 

----

&lt;u&gt;'''BROUILLON... La rédaction n'est pas encore terminée.'''&lt;/u&gt; 

----

= Gestion des fichiers  =

== Quelques commandes  ==

=== La commande '''cat'''  ===

Afficher le contenu du fichier ''file'' dans la console. 

 $ cat file

Affiche et copie le contenu de ''file'' dans ''file2''. 

 $ cat file &amp;gt; file2

Affiche le contenu d'un fichier et numérote les lignes. 

 $ cat -n file

=== La commande '''chgrp'''  ===

Affecter un fichier à un groupe. Le changement de groupe peut être réalisé par n'importe quel utilisateur... '''mais''' on ne peut donner un fichier qu'à l'un des groupes dont on est membre. L'administrateur évidemment peut affecter un fichier à n'importe quel groupe d'utilisateur. Exemple&amp;nbsp;:''&lt;nowiki&gt;# chgrp -R toto /home/titi/fichier&lt;/nowiki&gt;''Le répertoire ''/home/titi/fichier'' et son contenu appartiendront désormais au groupe ''toto''. 

 $ chgrp groupe file

&lt;br&gt; 

=== La commande '''cp'''  ===

Copier des fichiers dans des répertoires. Exemple&amp;nbsp;: 

 $ cp

#''&lt;nowiki&gt;# cp fichier_source /repertoire_cible/&lt;/nowiki&gt;'' copie ''fichier_source'' dans ''répertoire_cible''. 
#''&lt;nowiki&gt;# cp -Rf repertoire_source /repertoire_cible&lt;/nowiki&gt;'' copie ''repertoire_source'' dans ''repertoire_cible'' sans demander de confirmation.

Attention&amp;nbsp;: Copier un fichier vers un fichier de même nom l'écrasera. Pour copier plusieurs fichiers à la fois, pensez à utiliser les caractères génériques&amp;nbsp;? et *. 

Copie sans écrasement du fichier destination. Le fichier écrasé est sauvegardé, seul le nom du fichier d'origine est modifié (ajout d'un tilde ''~'' à la fin du nom du fichier). 

 $ cp -b

Prévient Celui qui lance la commande de l'existence d'un fichier du même nom et lui demande s'il peut ou non remplacer son contenu. Permet de ne pas écraser par inadvertance des fichiers importants. 

 $ cp -i

Affiche le nom des fichiers copiés (-v = verbose ou &quot;verbeux&quot;). Pratique si vous copiez plusieurs fichiers à l'aide des caractères génériques * et/ou&amp;nbsp;? et que vous souhaitez voir le bon déroulement de la multicopie. 

 $ cp -v

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

 $ dd

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 

 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 

 $ file fichier

=== La commande '''find'''  ===

Rechercher de ''fichier''. Ex&amp;nbsp;:''&lt;nowiki&gt;# find /home/toto/bazard -name *.jpeg&lt;/nowiki&gt;'' donne la liste des fichiers .jpeg contenu dans le répertoire''/home/toto/bazard''. Vous pouvez utiliser un caractère générique pour remplacer les lettres, il faut le faire précéder d'une barre oblique inverse&amp;nbsp;:&lt;nowiki&gt;# find / -name image\*&lt;/nowiki&gt; 

 $ find -name fichier

Affiche le résultat de la recherche, avec les chemins relatifs. 

 $ find -name fichier -print

Indique le type de fichier à rechercher. Remplacez ''x'' par ''f'' pour les fichiers, ''d'' pour les répertoires et ''l'' pour les liens symboliques. 

 $ find -type x -name fichier

=== La commande '''less'''  ===

Visualiser ''fich'' page par page.Utilisez les touches directionnelles haut et bas pour faire défiler le texte, ''q'' pour quitter. 

 $ less fichier

=== La commande '''locate'''  ===

Localiser. ''Locate'' est un lien symbolique de la commande ''slocate''. Exemple&amp;nbsp;: ''&lt;nowiki&gt;# locate titi&lt;/nowiki&gt;'' affiche la liste des fichiers dont le nom contient le mot ''titi''.''Locate'' affiche tous les noms de fichiers correspondant au critère indiqué. Pour n'afficher que les fichiers autorisés, utilisez ''slocate''.''Locate'' se base sur une base de données de tous les noms de fichiers, mise à jour quotidiennement. Des fichiers récemment créés ne seront donc pas forcément référencés. Pour forcer une mise à jour manuelle, tapez&amp;nbsp;:&lt;nowiki&gt;# updatedb&lt;/nowiki&gt;ou&lt;nowiki&gt;# slocate -u&lt;/nowiki&gt; 

 $ locate x

=== La commande '''ls'''  ===

Liste les fichiers et les sous-répertoires de ''/rep''. 

 $ ls /rep

Liste tous les fichiers du répertoire indiqué, fichiers cachés (dont le nom commence par un point) compris. Si vous n'indiquez pas de répertoire, c'est le contenu du répertoire courant qui est listé. 

 $ ls -a /rep

Affiche tous les sous-répertoires de ''/rep''. 

 $ ls -d /rep

Affichage long&amp;nbsp;: droits, nom et groupe du propriétaire, taille, date de dernière modification.Si vous tapez le nom d'un lien, vous connaîtrez son fichier ou répertoire cible. 

 $ ls -l

Affiche tout le contenu du répertoire de façon détaillée. 

 $ ls -la

Liste le contenu d'un répertoire en donnant pour chaque fichier/répertoire plus de détails qu'un simple ''ls''. 

 $ ls -lh /rep

Liste les fichiers par type. Un fichier suivi d'un slash est un répertoire, un fichier suivi d'une étoile est un fichier exécutable et un fichier suivi d'un ''@'' est un lien. 

 $ ls -F

Liste les fichiers en les séparant par une virgule au lieu de les présenter en colonnes. 

 $ ls -m

En complément de ''-l'', affiche le nom et le groupe des propriétaires en fonction de leur UID et de leur GID. 

 $ ls -n

Liste les fichiers en ordre alphabétique inverse. 

 $ ls -r

Liste les fichiers triés par ordre de taille décroissante. 

 $ ls -S

Liste le contenu de ''/rep'' en triant par date de modification, du plus récent au plus ancien. 

 $ ls -t /rep

Liste les fichiers par type d'extension. 

 $ ls -X

=== La commande '''mknod'''  ===

Pour créer des fichiers de caractères majuscules ou spéciaux. 

 $ mknod

=== La commande '''more'''  ===

Permet de visualiser le contenu de ''fich'' page par page. Utilisez ''Enter'' pour le faire défiler, ''q'' pour quitter.La commande ''&lt;nowiki&gt;# cat fich   more&lt;/nowiki&gt;'' donne le même résultat. 

 $ more fich

=== La commande '''mv'''  ===

Pour déplacer ou renommer un fichier. Exemple&amp;nbsp;:''&lt;nowiki&gt;# mv toto /clown/titi&lt;/nowiki&gt;'' déplacera le fichier ''toto'' dans le répertoire ''clown'' (qui doit exister) et le renommera''titi''. 

 $ mv source destination

Effectue une sauvegarde du fichier avant de le déplacer. 

 $ mv -b

Effectue le déplacement même si la cible existe déjà, et ce sans message d'avertissement. 

 $ mv -f

Demande une confirmation si des fichiers risquent d'être écrasés par le déplacement. 

 $ mv -i

=== La commande '''rm'''  ===

Supprime ''fich''. Une fois un fichier effacé, il n'est plus possible de récupérer son contenu.Il est possible de spécifier plusieurs fichiers à la commande ''rm''&amp;nbsp;: dans ce cas, ils seront tous supprimés.Pour supprimer un fichier dont le nom commence par un tiret -, tapez&amp;nbsp;:&lt;nowiki&gt;# rm -- -lenomdufichier&lt;/nowiki&gt;ou&lt;nowiki&gt;# rm ./-lenomdufichier&lt;/nowiki&gt; 

 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 

 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 

 $ rm -i

=== La commande '''slocate'''  ===

Pour afficher la liste des fichiers dont le nom contient le mot ''couic''. La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 

 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe. 

=== La commande '''tac'''  ===

Pour afficher le contenu de ''fich'' à l'écran en commençant par le bas. 

 $ tac fich

=== La commande '''tail'''  ===

Pour afficher les 10 dernières lignes de ''fich''. 

 $ tail fich

Pour afficher les 2 dernières lignes de ''fich''. 

 $ tail -2 fich

=== La commande '''touch'''  ===

Sert normalement à modifier la date de création et de modification du fichier, mais permet aussi de créer le fichier ''fich''. 

 $ touch fich

== Quelques &quot;trucs&quot;  ==

=== Effacer le fichier -fichier.txt.  ===

Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 

 $ rm -nom_du_fichier

ne marchera pas, rm croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret. Il faut donc utiliser l'option de fin de commande symbolisée par deux tirest consécutifs --. Pour notre exemple, on tapera&amp;nbsp;: 

 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 

=== Effacer un fichier avec des caractères spéciaux  ===

 $ rm mon_fichier_avec_un_nom_à_la_con\&amp;amp;

Comme pour tout caractère compris par le batch comme une commande il faut faire précéder ce caractère de &quot;escape&quot; ( \ ) 

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;'] 

=== Taper un nom de fichier contenant des espaces.  ===

Il suffit de mettre le nom entre guillemets. 

 $ mv tutoriel linux/introduction renverra une erreur. Il faut taper&amp;nbsp;:
 $ mv &quot;tutoriel linux&quot;/introduction

Cette astuce fonctionne avec d'autres caractères spéciaux. 

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 

 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 

 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 

 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 

 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max</text>
      <sha1>ewoply6b1knw5hitsofeoq04eic8w46</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>463</id>
      <parentid>446</parentid>
      <timestamp>2010-01-28T20:56:26Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="11420">{{sid}} 

----

&lt;u&gt;'''BROUILLON... La rédaction n'est pas encore terminée.'''&lt;/u&gt; 

----

= Gestion des fichiers  =

== Quelques commandes  ==

=== La commande '''cat'''  ===

Afficher le contenu du fichier ''file'' dans la console. 

 $ cat file

Affiche et copie le contenu de ''file'' dans ''file2''. 

 $ cat file &amp;gt; file2

Affiche le contenu d'un fichier et numérote les lignes. 

 $ cat -n file

=== La commande '''chgrp'''  ===

Affecter un fichier à un groupe. Le changement de groupe peut être réalisé par n'importe quel utilisateur... '''mais''' on ne peut donner un fichier qu'à l'un des groupes dont on est membre. L'administrateur évidemment peut affecter un fichier à n'importe quel groupe d'utilisateur. Exemple&amp;nbsp;:''&lt;nowiki&gt;# chgrp -R toto /home/titi/fichier&lt;/nowiki&gt;''Le répertoire ''/home/titi/fichier'' et son contenu appartiendront désormais au groupe ''toto''. 

 $ chgrp groupe file

&lt;br&gt; 

=== La commande '''cp'''  ===

Copier des fichiers dans des répertoires. Exemple&amp;nbsp;: 

 $ cp

#''&lt;nowiki&gt;# cp fichier_source /repertoire_cible/&lt;/nowiki&gt;'' copie ''fichier_source'' dans ''répertoire_cible''. 
#''&lt;nowiki&gt;# cp -Rf repertoire_source /repertoire_cible&lt;/nowiki&gt;'' copie ''repertoire_source'' dans ''repertoire_cible'' sans demander de confirmation.

Attention&amp;nbsp;: Copier un fichier vers un fichier de même nom l'écrasera. Pour copier plusieurs fichiers à la fois, pensez à utiliser les caractères génériques&amp;nbsp;? et *. 

Copie sans écrasement du fichier destination. Le fichier écrasé est sauvegardé, seul le nom du fichier d'origine est modifié (ajout d'un tilde ''~'' à la fin du nom du fichier). 

 $ cp -b

Prévient Celui qui lance la commande de l'existence d'un fichier du même nom et lui demande s'il peut ou non remplacer son contenu. Permet de ne pas écraser par inadvertance des fichiers importants. 

 $ cp -i

Affiche le nom des fichiers copiés (-v = verbose ou &quot;verbeux&quot;). Pratique si vous copiez plusieurs fichiers à l'aide des caractères génériques * et/ou&amp;nbsp;? et que vous souhaitez voir le bon déroulement de la multicopie. 

 $ cp -v

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

 $ dd

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 

 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 

 $ file fichier

=== La commande '''find'''  ===

Rechercher de ''fichier''. Ex&amp;nbsp;:''&lt;nowiki&gt;# find /home/toto/bazard -name *.jpeg&lt;/nowiki&gt;'' donne la liste des fichiers .jpeg contenu dans le répertoire''/home/toto/bazard''. Vous pouvez utiliser un caractère générique pour remplacer les lettres, il faut le faire précéder d'une barre oblique inverse&amp;nbsp;:&lt;nowiki&gt;# find / -name image\*&lt;/nowiki&gt; 

 $ find -name fichier

Affiche le résultat de la recherche, avec les chemins relatifs. 

 $ find -name fichier -print

Indique le type de fichier à rechercher. Remplacez ''x'' par ''f'' pour les fichiers, ''d'' pour les répertoires et ''l'' pour les liens symboliques. 

 $ find -type x -name fichier

=== La commande '''less'''  ===

Visualiser ''fich'' page par page.Utilisez les touches directionnelles haut et bas pour faire défiler le texte, ''q'' pour quitter. 

 $ less fichier

=== La commande '''locate'''  ===

Localiser. ''Locate'' est un lien symbolique de la commande ''slocate''. Exemple&amp;nbsp;: ''&lt;nowiki&gt;# locate titi&lt;/nowiki&gt;'' affiche la liste des fichiers dont le nom contient le mot ''titi''.''Locate'' affiche tous les noms de fichiers correspondant au critère indiqué. Pour n'afficher que les fichiers autorisés, utilisez ''slocate''.''Locate'' se base sur une base de données de tous les noms de fichiers, mise à jour quotidiennement. Des fichiers récemment créés ne seront donc pas forcément référencés. Pour forcer une mise à jour manuelle, tapez&amp;nbsp;:&lt;nowiki&gt;# updatedb&lt;/nowiki&gt;ou&lt;nowiki&gt;# slocate -u&lt;/nowiki&gt; 

 $ locate x

=== La commande '''ls'''  ===

Liste les fichiers et les sous-répertoires de ''/rep''. 

 $ ls /rep

Liste tous les fichiers du répertoire indiqué, fichiers cachés (dont le nom commence par un point) compris. Si vous n'indiquez pas de répertoire, c'est le contenu du répertoire courant qui est listé. 

 $ ls -a /rep

Affiche tous les sous-répertoires de ''/rep''. 

 $ ls -d /rep

Affichage long&amp;nbsp;: droits, nom et groupe du propriétaire, taille, date de dernière modification.Si vous tapez le nom d'un lien, vous connaîtrez son fichier ou répertoire cible. 

 $ ls -l

Affiche tout le contenu du répertoire de façon détaillée. 

 $ ls -la

Liste le contenu d'un répertoire en donnant pour chaque fichier/répertoire plus de détails qu'un simple ''ls''. 

 $ ls -lh /rep

Liste les fichiers par type. Un fichier suivi d'un slash est un répertoire, un fichier suivi d'une étoile est un fichier exécutable et un fichier suivi d'un ''@'' est un lien. 

 $ ls -F

Liste les fichiers en les séparant par une virgule au lieu de les présenter en colonnes. 

 $ ls -m

En complément de ''-l'', affiche le nom et le groupe des propriétaires en fonction de leur UID et de leur GID. 

 $ ls -n

Liste les fichiers en ordre alphabétique inverse. 

 $ ls -r

Liste les fichiers triés par ordre de taille décroissante. 

 $ ls -S

Liste le contenu de ''/rep'' en triant par date de modification, du plus récent au plus ancien. 

 $ ls -t /rep

Liste les fichiers par type d'extension. 

 $ ls -X

=== La commande '''mknod'''  ===

Pour créer des fichiers de caractères majuscules ou spéciaux. 

 $ mknod

=== La commande '''more'''  ===

Permet de visualiser le contenu de ''fich'' page par page. Utilisez ''Enter'' pour le faire défiler, ''q'' pour quitter.La commande ''&lt;nowiki&gt;# cat fich   more&lt;/nowiki&gt;'' donne le même résultat. 

 $ more fich

=== La commande '''mv'''  ===

Pour déplacer ou renommer un fichier. Exemple&amp;nbsp;:''&lt;nowiki&gt;# mv toto /clown/titi&lt;/nowiki&gt;'' déplacera le fichier ''toto'' dans le répertoire ''clown'' (qui doit exister) et le renommera''titi''. 

 $ mv source destination

Effectue une sauvegarde du fichier avant de le déplacer. 

 $ mv -b

Effectue le déplacement même si la cible existe déjà, et ce sans message d'avertissement. 

 $ mv -f

Demande une confirmation si des fichiers risquent d'être écrasés par le déplacement. 

 $ mv -i

=== La commande '''rm'''  ===

Supprime ''fich''. Une fois un fichier effacé, il n'est plus possible de récupérer son contenu.Il est possible de spécifier plusieurs fichiers à la commande ''rm''&amp;nbsp;: dans ce cas, ils seront tous supprimés.Pour supprimer un fichier dont le nom commence par un tiret -, tapez&amp;nbsp;:&lt;nowiki&gt;# rm -- -lenomdufichier&lt;/nowiki&gt;ou&lt;nowiki&gt;# rm ./-lenomdufichier&lt;/nowiki&gt; 

 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 

 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 

 $ rm -i

=== La commande '''slocate'''  ===

Pour afficher la liste des fichiers dont le nom contient le mot ''couic''. La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 

 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe. 

=== La commande '''tac'''  ===

Pour afficher le contenu de ''fich'' à l'écran en commençant par le bas. 

 $ tac fich

=== La commande '''tail'''  ===

Pour afficher les 10 dernières lignes de ''fich''. 

 $ tail fich

Pour afficher les 2 dernières lignes de ''fich''. 

 $ tail -2 fich

=== La commande '''touch'''  ===

Sert normalement à modifier la date de création et de modification du fichier, mais permet aussi de créer le fichier ''fich''. 

 $ touch fich

== Quelques &quot;trucs&quot;  ==

=== Effacer le fichier -fichier.txt.  ===

Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 

 $ rm -nom_du_fichier

ne marchera pas, rm croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret. Il faut donc utiliser l'option de fin de commande symbolisée par deux tirest consécutifs --. Pour notre exemple, on tapera&amp;nbsp;: 

 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 

=== Effacer un fichier avec des caractères spéciaux  ===

 $ rm mon_fichier_avec_un_nom_à_la_con\&amp;amp;

Comme pour tout caractère compris par le batch comme une commande il faut faire précéder ce caractère de &quot;escape&quot; ( \ ) 

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;'] 

=== Taper un nom de fichier contenant des espaces.  ===

Il suffit de mettre le nom entre guillemets. 

 $ mv tutoriel linux/introduction renverra une erreur. Il faut taper&amp;nbsp;:
 $ mv &quot;tutoriel linux&quot;/introduction

Cette astuce fonctionne avec d'autres caractères spéciaux. 

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 

 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 

 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 

 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 

 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max
[[Catégorie:commandes]]</text>
      <sha1>oh0mvebk84z0osd5sh2idfjd5j1du38</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>468</id>
      <parentid>463</parentid>
      <timestamp>2010-01-29T03:27:18Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="11636">{{sid}} 

----

&lt;u&gt;'''BROUILLON... La rédaction n'est pas encore terminée.'''&lt;/u&gt; 

----

= Gestion des fichiers  =

== Quelques commandes  ==

=== La commande '''cat'''  ===

Afficher le contenu du fichier ''file'' dans la console. 

 $ cat file

Affiche et copie le contenu de ''file'' dans ''file2''. 

 $ cat file &amp;gt; file2

Affiche le contenu d'un fichier et numérote les lignes. 

 $ cat -n file

=== La commande '''chgrp'''  ===

Affecter un fichier à un groupe. Le changement de groupe peut être réalisé par n'importe quel utilisateur... '''mais''' on ne peut donner un fichier qu'à l'un des groupes dont on est membre. L'administrateur évidemment peut affecter un fichier à n'importe quel groupe d'utilisateur. Exemple&amp;nbsp;:''&lt;nowiki&gt;# chgrp -R toto /home/titi/fichier&lt;/nowiki&gt;''Le répertoire ''/home/titi/fichier'' et son contenu appartiendront désormais au groupe ''toto''. 

 $ chgrp groupe file

&lt;br&gt; 

=== La commande '''cp'''  ===

Copier des fichiers dans des répertoires. Exemple&amp;nbsp;: 

 $ cp

#''&lt;nowiki&gt;# cp fichier_source /repertoire_cible/&lt;/nowiki&gt;'' copie ''fichier_source'' dans ''répertoire_cible''. 
#''&lt;nowiki&gt;# cp -Rf repertoire_source /repertoire_cible&lt;/nowiki&gt;'' copie ''repertoire_source'' dans ''repertoire_cible'' sans demander de confirmation.

Attention&amp;nbsp;: Copier un fichier vers un fichier de même nom l'écrasera. Pour copier plusieurs fichiers à la fois, pensez à utiliser les caractères génériques&amp;nbsp;? et *. 

Copie sans écrasement du fichier destination. Le fichier écrasé est sauvegardé, seul le nom du fichier d'origine est modifié (ajout d'un tilde ''~'' à la fin du nom du fichier). 

 $ cp -b

Prévient Celui qui lance la commande de l'existence d'un fichier du même nom et lui demande s'il peut ou non remplacer son contenu. Permet de ne pas écraser par inadvertance des fichiers importants. 

 $ cp -i

Affiche le nom des fichiers copiés (-v = verbose ou &quot;verbeux&quot;). Pratique si vous copiez plusieurs fichiers à l'aide des caractères génériques * et/ou&amp;nbsp;? et que vous souhaitez voir le bon déroulement de la multicopie. 

 $ cp -v

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

 $ dd

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 

 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 

 $ file fichier

=== La commande '''find'''  ===

Rechercher de ''fichier''. Ex&amp;nbsp;:''&lt;nowiki&gt;# find /home/toto/bazard -name *.jpeg&lt;/nowiki&gt;'' donne la liste des fichiers .jpeg contenu dans le répertoire''/home/toto/bazard''. Vous pouvez utiliser un caractère générique pour remplacer les lettres, il faut le faire précéder d'une barre oblique inverse&amp;nbsp;:&lt;nowiki&gt;# find / -name image\*&lt;/nowiki&gt; 

 $ find -name fichier

Affiche le résultat de la recherche, avec les chemins relatifs. 

 $ find -name fichier -print

Indique le type de fichier à rechercher. Remplacez ''x'' par ''f'' pour les fichiers, ''d'' pour les répertoires et ''l'' pour les liens symboliques. 

 $ find -type x -name fichier

=== La commande '''less'''  ===

Visualiser ''fich'' page par page.Utilisez les touches directionnelles haut et bas pour faire défiler le texte, ''q'' pour quitter. 

 $ less fichier

=== La commande '''locate'''  ===

Localiser. ''Locate'' est un lien symbolique de la commande ''slocate''. Exemple&amp;nbsp;: ''&lt;nowiki&gt;# locate titi&lt;/nowiki&gt;'' affiche la liste des fichiers dont le nom contient le mot ''titi''.''Locate'' affiche tous les noms de fichiers correspondant au critère indiqué. Pour n'afficher que les fichiers autorisés, utilisez ''slocate''.''Locate'' se base sur une base de données de tous les noms de fichiers, mise à jour quotidiennement. Des fichiers récemment créés ne seront donc pas forcément référencés. Pour forcer une mise à jour manuelle, tapez&amp;nbsp;:&lt;nowiki&gt;# updatedb&lt;/nowiki&gt;ou&lt;nowiki&gt;# slocate -u&lt;/nowiki&gt; 

 $ locate x

=== La commande '''ls'''  ===

Liste les fichiers et les sous-répertoires de ''/rep''. 

 $ ls /rep

Liste tous les fichiers du répertoire indiqué, fichiers cachés (dont le nom commence par un point) compris. Si vous n'indiquez pas de répertoire, c'est le contenu du répertoire courant qui est listé. 

 $ ls -a /rep

Affiche tous les sous-répertoires de ''/rep''. 

 $ ls -d /rep

Affichage long&amp;nbsp;: droits, nom et groupe du propriétaire, taille, date de dernière modification.Si vous tapez le nom d'un lien, vous connaîtrez son fichier ou répertoire cible. 

 $ ls -l

Affiche tout le contenu du répertoire de façon détaillée. 

 $ ls -la

Liste le contenu d'un répertoire en donnant pour chaque fichier/répertoire plus de détails qu'un simple ''ls''. 

 $ ls -lh /rep

Liste les fichiers par type. Un fichier suivi d'un slash est un répertoire, un fichier suivi d'une étoile est un fichier exécutable et un fichier suivi d'un ''@'' est un lien. 

 $ ls -F

Liste les fichiers en les séparant par une virgule au lieu de les présenter en colonnes. 

 $ ls -m

En complément de ''-l'', affiche le nom et le groupe des propriétaires en fonction de leur UID et de leur GID. 

 $ ls -n

Liste les fichiers en ordre alphabétique inverse. 

 $ ls -r

Liste les fichiers triés par ordre de taille décroissante. 

 $ ls -S

Liste le contenu de ''/rep'' en triant par date de modification, du plus récent au plus ancien. 

 $ ls -t /rep

Liste les fichiers par type d'extension. 

 $ ls -X

=== La commande '''mknod'''  ===

Pour créer des fichiers de caractères majuscules ou spéciaux. 

 $ mknod

=== La commande '''more'''  ===

Permet de visualiser le contenu de ''fich'' page par page. Utilisez ''Enter'' pour le faire défiler, ''q'' pour quitter.La commande ''&lt;nowiki&gt;# cat fich   more&lt;/nowiki&gt;'' donne le même résultat. 

 $ more fich

=== La commande '''mv'''  ===

Pour déplacer ou renommer un fichier. Exemple&amp;nbsp;:''&lt;nowiki&gt;# mv toto /clown/titi&lt;/nowiki&gt;'' déplacera le fichier ''toto'' dans le répertoire ''clown'' (qui doit exister) et le renommera''titi''. 

 $ mv source destination

Effectue une sauvegarde du fichier avant de le déplacer. 

 $ mv -b

Effectue le déplacement même si la cible existe déjà, et ce sans message d'avertissement. 

 $ mv -f

Demande une confirmation si des fichiers risquent d'être écrasés par le déplacement. 

 $ mv -i

=== La commande '''rm'''  ===

Supprime ''fich''. Une fois un fichier effacé, il n'est plus possible de récupérer son contenu.Il est possible de spécifier plusieurs fichiers à la commande ''rm''&amp;nbsp;: dans ce cas, ils seront tous supprimés.Pour supprimer un fichier dont le nom commence par un tiret -, tapez&amp;nbsp;:&lt;nowiki&gt;# rm -- -lenomdufichier&lt;/nowiki&gt;ou&lt;nowiki&gt;# rm ./-lenomdufichier&lt;/nowiki&gt; 

 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 

 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 

 $ rm -i

=== La commande '''slocate'''  ===

Pour afficher la liste des fichiers dont le nom contient le mot ''couic''. La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 

 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe. 

=== La commande '''tac'''  ===

Pour afficher le contenu de ''fich'' à l'écran en commençant par le bas. 

 $ tac fich

=== La commande '''tail'''  ===

Pour afficher les 10 dernières lignes de ''fich''. 

 $ tail fich

Pour afficher les 2 dernières lignes de ''fich''. 

 $ tail -2 fich

=== La commande '''touch'''  ===

Sert normalement à modifier la date de création et de modification du fichier, mais permet aussi de créer le fichier ''fich''. 

 $ touch fich

== Quelques &quot;trucs&quot;  ==

=== Effacer le fichier -fichier.txt.  ===

Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 

 $ rm -nom_du_fichier

ne marchera pas, rm croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret. Il faut donc utiliser l'option de fin de commande symbolisée par deux tirest consécutifs --. Pour notre exemple, on tapera&amp;nbsp;: 

 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 

=== Renommer un fichier commençant par un tiret ===

 $ mv -- \-monfichier1 monfichier2

[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=4679&amp;start=0  probleme de nom: renommer un fichier commencant par un tiret] 

=== Effacer un fichier avec des caractères spéciaux  ===

 $ rm mon_fichier_avec_un_nom_à_la_con\&amp;amp;

Comme pour tout caractère compris par le batch comme une commande il faut faire précéder ce caractère de &quot;escape&quot; ( \ ) 

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;'] 

=== Taper un nom de fichier contenant des espaces.  ===

Il suffit de mettre le nom entre guillemets. 

 $ mv tutoriel linux/introduction renverra une erreur. Il faut taper&amp;nbsp;:
 $ mv &quot;tutoriel linux&quot;/introduction

Cette astuce fonctionne avec d'autres caractères spéciaux. 

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 

 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 

 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 

 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 

 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max
[[Catégorie:commandes]]</text>
      <sha1>i3r4qcw7ostm1vn9l1ynfyqncayzyx5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>471</id>
      <parentid>468</parentid>
      <timestamp>2010-01-29T04:24:51Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="11651">{{sid}} 

----

&lt;u&gt;'''BROUILLON... La rédaction n'est pas encore terminée.'''&lt;/u&gt; 

----

= Gestion des fichiers  =

== Quelques commandes  ==

=== La commande '''cat'''  ===

Afficher le contenu du fichier ''file'' dans la console. 

 $ cat fichier

Affiche et copie le contenu de ''fichier'' dans ''fichier2''. 

 $ cat file &amp;gt; file2

Affiche le contenu d'un fichier et numérote les lignes. 

 $ cat -n fichier

=== La commande '''chgrp'''  ===

Affecter un fichier à un groupe. Le changement de groupe peut être réalisé par n'importe quel utilisateur... '''mais''' on ne peut donner un fichier qu'à l'un des groupes dont on est membre. L'administrateur évidemment peut affecter un fichier à n'importe quel groupe d'utilisateur. Exemple&amp;nbsp;:''&lt;nowiki&gt;# chgrp -R toto /home/titi/fichier&lt;/nowiki&gt;''Le répertoire ''/home/titi/fichier'' et son contenu appartiendront désormais au groupe ''toto''. 

 $ chgrp groupe fichier

&lt;br&gt; 

=== La commande '''cp'''  ===

Copier des fichiers dans des répertoires. Exemple&amp;nbsp;: 

 $ cp

#''&lt;nowiki&gt;# cp fichier_source /repertoire_cible/&lt;/nowiki&gt;'' copie ''fichier_source'' dans ''répertoire_cible''. 
#''&lt;nowiki&gt;# cp -Rf repertoire_source /repertoire_cible&lt;/nowiki&gt;'' copie ''repertoire_source'' dans ''repertoire_cible'' sans demander de confirmation.

Attention&amp;nbsp;: Copier un fichier vers un fichier de même nom l'écrasera. Pour copier plusieurs fichiers à la fois, pensez à utiliser les caractères génériques&amp;nbsp;? et *. 

Copie sans écrasement du fichier destination. Le fichier écrasé est sauvegardé, seul le nom du fichier d'origine est modifié (ajout d'un tilde ''~'' à la fin du nom du fichier). 

 $ cp -b

Prévient Celui qui lance la commande de l'existence d'un fichier du même nom et lui demande s'il peut ou non remplacer son contenu. Permet de ne pas écraser par inadvertance des fichiers importants. 

 $ cp -i

Affiche le nom des fichiers copiés (-v = verbose ou &quot;verbeux&quot;). Pratique si vous copiez plusieurs fichiers à l'aide des caractères génériques * et/ou&amp;nbsp;? et que vous souhaitez voir le bon déroulement de la multicopie. 

 $ cp -v

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

 $ dd

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 

 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 

 $ file fichier

=== La commande '''find'''  ===

Rechercher de ''fichier''. Ex&amp;nbsp;:''&lt;nowiki&gt;# find /home/toto/bazard -name *.jpeg&lt;/nowiki&gt;'' donne la liste des fichiers .jpeg contenu dans le répertoire''/home/toto/bazard''. Vous pouvez utiliser un caractère générique pour remplacer les lettres, il faut le faire précéder d'une barre oblique inverse&amp;nbsp;:&lt;nowiki&gt;# find / -name image\*&lt;/nowiki&gt; 

 $ find -name fichier

Affiche le résultat de la recherche, avec les chemins relatifs. 

 $ find -name fichier -print

Indique le type de fichier à rechercher. Remplacez ''x'' par ''f'' pour les fichiers, ''d'' pour les répertoires et ''l'' pour les liens symboliques. 

 $ find -type x -name fichier

=== La commande '''less'''  ===

Visualiser ''fich'' page par page.Utilisez les touches directionnelles haut et bas pour faire défiler le texte, ''q'' pour quitter. 

 $ less fichier

=== La commande '''locate'''  ===

Localiser. ''Locate'' est un lien symbolique de la commande ''slocate''. Exemple&amp;nbsp;: ''&lt;nowiki&gt;# locate titi&lt;/nowiki&gt;'' affiche la liste des fichiers dont le nom contient le mot ''titi''.''Locate'' affiche tous les noms de fichiers correspondant au critère indiqué. Pour n'afficher que les fichiers autorisés, utilisez ''slocate''.''Locate'' se base sur une base de données de tous les noms de fichiers, mise à jour quotidiennement. Des fichiers récemment créés ne seront donc pas forcément référencés. Pour forcer une mise à jour manuelle, tapez&amp;nbsp;:&lt;nowiki&gt;# updatedb&lt;/nowiki&gt;ou&lt;nowiki&gt;# slocate -u&lt;/nowiki&gt; 

 $ locate x

=== La commande '''ls'''  ===

Liste les fichiers et les sous-répertoires de ''/rep''. 

 $ ls /rep

Liste tous les fichiers du répertoire indiqué, fichiers cachés (dont le nom commence par un point) compris. Si vous n'indiquez pas de répertoire, c'est le contenu du répertoire courant qui est listé. 

 $ ls -a /rep

Affiche tous les sous-répertoires de ''/rep''. 

 $ ls -d /rep

Affichage long&amp;nbsp;: droits, nom et groupe du propriétaire, taille, date de dernière modification.Si vous tapez le nom d'un lien, vous connaîtrez son fichier ou répertoire cible. 

 $ ls -l

Affiche tout le contenu du répertoire de façon détaillée. 

 $ ls -la

Liste le contenu d'un répertoire en donnant pour chaque fichier/répertoire plus de détails qu'un simple ''ls''. 

 $ ls -lh /rep

Liste les fichiers par type. Un fichier suivi d'un slash est un répertoire, un fichier suivi d'une étoile est un fichier exécutable et un fichier suivi d'un ''@'' est un lien. 

 $ ls -F

Liste les fichiers en les séparant par une virgule au lieu de les présenter en colonnes. 

 $ ls -m

En complément de ''-l'', affiche le nom et le groupe des propriétaires en fonction de leur UID et de leur GID. 

 $ ls -n

Liste les fichiers en ordre alphabétique inverse. 

 $ ls -r

Liste les fichiers triés par ordre de taille décroissante. 

 $ ls -S

Liste le contenu de ''/rep'' en triant par date de modification, du plus récent au plus ancien. 

 $ ls -t /rep

Liste les fichiers par type d'extension. 

 $ ls -X

=== La commande '''mknod'''  ===

Pour créer des fichiers de caractères majuscules ou spéciaux. 

 $ mknod

=== La commande '''more'''  ===

Permet de visualiser le contenu de ''fich'' page par page. Utilisez ''Enter'' pour le faire défiler, ''q'' pour quitter.La commande ''&lt;nowiki&gt;# cat fich   more&lt;/nowiki&gt;'' donne le même résultat. 

 $ more fich

=== La commande '''mv'''  ===

Pour déplacer ou renommer un fichier. Exemple&amp;nbsp;:''&lt;nowiki&gt;# mv toto /clown/titi&lt;/nowiki&gt;'' déplacera le fichier ''toto'' dans le répertoire ''clown'' (qui doit exister) et le renommera''titi''. 

 $ mv source destination

Effectue une sauvegarde du fichier avant de le déplacer. 

 $ mv -b

Effectue le déplacement même si la cible existe déjà, et ce sans message d'avertissement. 

 $ mv -f

Demande une confirmation si des fichiers risquent d'être écrasés par le déplacement. 

 $ mv -i

=== La commande '''rm'''  ===

Supprime ''fich''. Une fois un fichier effacé, il n'est plus possible de récupérer son contenu.Il est possible de spécifier plusieurs fichiers à la commande ''rm''&amp;nbsp;: dans ce cas, ils seront tous supprimés.Pour supprimer un fichier dont le nom commence par un tiret -, tapez&amp;nbsp;:&lt;nowiki&gt;# rm -- -lenomdufichier&lt;/nowiki&gt;ou&lt;nowiki&gt;# rm ./-lenomdufichier&lt;/nowiki&gt; 

 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 

 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 

 $ rm -i

=== La commande '''slocate'''  ===

Pour afficher la liste des fichiers dont le nom contient le mot ''couic''. La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 

 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe. 

=== La commande '''tac'''  ===

Pour afficher le contenu de ''fich'' à l'écran en commençant par le bas. 

 $ tac fich

=== La commande '''tail'''  ===

Pour afficher les 10 dernières lignes de ''fich''. 

 $ tail fich

Pour afficher les 2 dernières lignes de ''fich''. 

 $ tail -2 fich

=== La commande '''touch'''  ===

Sert normalement à modifier la date de création et de modification du fichier, mais permet aussi de créer le fichier ''fich''. 

 $ touch fich

== Quelques &quot;trucs&quot;  ==

=== Effacer le fichier -fichier.txt.  ===

Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 

 $ rm -nom_du_fichier

ne marchera pas, rm croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret. Il faut donc utiliser l'option de fin de commande symbolisée par deux tirest consécutifs --. Pour notre exemple, on tapera&amp;nbsp;: 

 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 

=== Renommer un fichier commençant par un tiret ===

 $ mv -- \-monfichier1 monfichier2

[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=4679&amp;start=0  probleme de nom: renommer un fichier commencant par un tiret] 

=== Effacer un fichier avec des caractères spéciaux  ===

 $ rm mon_fichier_avec_un_nom_à_la_con\&amp;amp;

Comme pour tout caractère compris par le batch comme une commande il faut faire précéder ce caractère de &quot;escape&quot; ( \ ) 

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;'] 

=== Taper un nom de fichier contenant des espaces.  ===

Il suffit de mettre le nom entre guillemets. 

 $ mv tutoriel linux/introduction renverra une erreur. Il faut taper&amp;nbsp;:
 $ mv &quot;tutoriel linux&quot;/introduction

Cette astuce fonctionne avec d'autres caractères spéciaux. 

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 

 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 

 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 

 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 

 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max
[[Catégorie:commandes]]</text>
      <sha1>fgyvmjn8eafyq12warab80m1hlzskkq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>476</id>
      <parentid>471</parentid>
      <timestamp>2010-01-29T07:32:38Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="11895">{{sid}} 

----

&lt;u&gt;'''BROUILLON... La rédaction n'est pas encore terminée.'''&lt;/u&gt; 

----

= Gestion des fichiers  =

== Quelques commandes  ==

=== La commande '''cat'''  ===

Afficher le contenu du fichier ''fichier'' dans la console. 
 $ cat fichier

Afficher et copier le contenu de ''fichier'' dans ''fichier2''. 
 $ cat file &amp;gt; file2

Afficher le contenu d'un fichier et numérote les lignes. 
 $ cat -n fichier

=== La commande '''chgrp'''  ===

Changer le groupe auquel appartient un fichier :
 $ chgrp groupe fichier

Affecter un fichier à un groupe. Le changement de groupe peut être réalisé par n'importe quel utilisateur... '''mais''' on ne peut donner un fichier qu'à l'un des groupes dont on est membre.&lt;br&gt;L'administrateur évidemment peut affecter un fichier à n'importe quel groupe d'utilisateur.&lt;br&gt;Exemple&amp;nbsp;:''&lt;nowiki&gt;$ chgrp -R toto /home/titi/rep&lt;/nowiki&gt;'' Le répertoire ''/home/titi/rep/'' et son contenu appartiendront désormais au groupe ''toto''.

=== La commande '''cp'''  ===

Copier un/des fichier(s). Exemple&amp;nbsp;: 
 $ cp fichier /home/toto/vrac

Copier ''fichier_source'' dans ''répertoire_cible''.
 $ cp fichier_source /repertoire_cible/ 

Copier ''repertoire_source'' dans ''repertoire_cible'' sans demander de confirmation.
 $ cp -Rf repertoire_source /repertoire_cible

Attention&amp;nbsp;: Copier un fichier vers un fichier de même nom l'écrasera.&lt;br&gt;Pour copier plusieurs fichiers à la fois, pensez à utiliser les caractères génériques&amp;nbsp;? et *. 

Copier sans écrasement du fichier destination (Le fichier écrasé est sauvegardé, seul le nom du fichier d'origine est modifié (ajout d'un tilde ''~'' à la fin du nom du fichier)) :
 $ cp -b

Prévient celui qui lance la commande de l'existence d'un fichier du même nom et lui demande s'il peut ou non remplacer son contenu. Permet de ne pas écraser par inadvertance des fichiers importants :
 $ cp -i

Afficher le nom des fichiers copiés (-v = verbose ou &quot;verbeux&quot;). Pratique si vous copiez plusieurs fichiers à l'aide des caractères génériques * et/ou&amp;nbsp;? et que vous souhaitez voir le bon déroulement de la multicopie. 
 $ cp -v

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

S'utilise avec les droits &quot;root&quot;

Exemple Pour sauvegarder le MBR du disque hda dans le fichier mbr.sav :
 # dd if=/dev/hda of=mbr.sav bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 9,3797e-05 s, 5,5 MB/s

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 
 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 
 $ file fichier

=== La commande '''find'''  ===

Rechercher de ''fichier''. Ex&amp;nbsp;:''&lt;nowiki&gt;# find /home/toto/bazard -name *.jpeg&lt;/nowiki&gt;'' donne la liste des fichiers .jpeg contenu dans le répertoire''/home/toto/bazard''. Vous pouvez utiliser un caractère générique pour remplacer les lettres, il faut le faire précéder d'une barre oblique inverse&amp;nbsp;:&lt;nowiki&gt;# find / -name image\*&lt;/nowiki&gt; 
 $ find -name fichier

Afficher le résultat de la recherche, avec les chemins relatifs. 
 $ find -name fichier -print

Indiquer le type de fichier à rechercher. Remplacez ''x'' par ''f'' pour les fichiers, ''d'' pour les répertoires et ''l'' pour les liens symboliques. 
 $ find -type x -name fichier

=== La commande '''less'''  ===

Visualiser ''fichier'' page par page. Utilisez les touches directionnelles haut et bas pour faire défiler le texte, ''q'' pour quitter. 
 $ less fichier

=== La commande '''locate'''  ===

Localiser un fichier. ''Locate'' est un lien symbolique de la commande ''slocate''. Exemple&amp;nbsp;: ''&lt;nowiki&gt;# locate titi&lt;/nowiki&gt;'' affiche la liste des fichiers dont le nom contient le mot ''titi''.''Locate'' affiche tous les noms de fichiers correspondant au critère indiqué. Pour n'afficher que les fichiers autorisés, utilisez ''slocate''.''Locate'' se base sur une base de données de tous les noms de fichiers, mise à jour quotidiennement. Des fichiers récemment créés ne seront donc pas forcément référencés. Pour forcer une mise à jour manuelle, tapez&amp;nbsp;:&lt;nowiki&gt;# updatedb&lt;/nowiki&gt;ou&lt;nowiki&gt;# slocate -u&lt;/nowiki&gt; 
 $ locate x

=== La commande '''ls'''  ===

Lister les fichiers et les sous-répertoires de ''/rep''. 
 $ ls /rep

Lister tous les fichiers du répertoire indiqué, fichiers cachés (dont le nom commence par un point) compris. Si vous n'indiquez pas de répertoire, c'est le contenu du répertoire courant qui est listé. 
 $ ls -a /rep

Afficher tous les sous-répertoires de ''/rep''. 
 $ ls -d /rep

Affichage long&amp;nbsp;: droits, nom et groupe du propriétaire, taille, date de dernière modification.Si vous tapez le nom d'un lien, vous connaîtrez son fichier ou répertoire cible. 
 $ ls -l

Affiche tout le contenu du répertoire de façon détaillée. 
 $ ls -la

Liste le contenu d'un répertoire en donnant pour chaque fichier/répertoire plus de détails qu'un simple ''ls''. 
 $ ls -lh /rep

Liste les fichiers par type. Un fichier suivi d'un slash est un répertoire, un fichier suivi d'une étoile est un fichier exécutable et un fichier suivi d'un ''@'' est un lien. 
 $ ls -F

Liste les fichiers en les séparant par une virgule au lieu de les présenter en colonnes. 
 $ ls -m

En complément de ''-l'', affiche le nom et le groupe des propriétaires en fonction de leur UID et de leur GID. 
 $ ls -n

Liste les fichiers en ordre alphabétique inverse. 
 $ ls -r

Liste les fichiers triés par ordre de taille décroissante. 
 $ ls -S

Liste le contenu de ''/rep'' en triant par date de modification, du plus récent au plus ancien. 
 $ ls -t /rep

Liste les fichiers par type d'extension. 
 $ ls -X

=== La commande '''mknod'''  ===

Pour créer des fichiers de caractères majuscules ou spéciaux. 
 $ mknod

=== La commande '''more'''  ===

Permet de visualiser le contenu de ''fich'' page par page. Utilisez ''Enter'' pour le faire défiler, ''q'' pour quitter.La commande ''&lt;nowiki&gt;# cat fich   more&lt;/nowiki&gt;'' donne le même résultat. 
 $ more fich

=== La commande '''mv'''  ===

Pour déplacer ou renommer un fichier. Exemple&amp;nbsp;:''&lt;nowiki&gt;# mv toto /clown/titi&lt;/nowiki&gt;'' déplacera le fichier ''toto'' dans le répertoire ''clown'' (qui doit exister) et le renommera''titi''. 
 $ mv source destination

Effectue une sauvegarde du fichier avant de le déplacer. 
 $ mv -b

Effectue le déplacement même si la cible existe déjà, et ce sans message d'avertissement. 
 $ mv -f

Demande une confirmation si des fichiers risquent d'être écrasés par le déplacement. 
 $ mv -i

=== La commande '''rm'''  ===

Supprime ''fich''. Une fois un fichier effacé, il n'est plus possible de récupérer son contenu.Il est possible de spécifier plusieurs fichiers à la commande ''rm''&amp;nbsp;: dans ce cas, ils seront tous supprimés.Pour supprimer un fichier dont le nom commence par un tiret -, tapez&amp;nbsp;:&lt;nowiki&gt;# rm -- -lenomdufichier&lt;/nowiki&gt;ou&lt;nowiki&gt;# rm ./-lenomdufichier&lt;/nowiki&gt; 
 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 
 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 
 $ rm -i

=== La commande '''slocate'''  ===

Pour afficher la liste des fichiers dont le nom contient le mot ''couic''. La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 
 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe. 

=== La commande '''tac'''  ===

Pour afficher le contenu de ''fich'' à l'écran en commençant par le bas. 
 $ tac fich

=== La commande '''tail'''  ===

Pour afficher les 10 dernières lignes de ''fich''. 
 $ tail fich

Pour afficher les 2 dernières lignes de ''fich''. 
 $ tail -2 fich

=== La commande '''touch'''  ===

Sert normalement à modifier la date de création et de modification du fichier, mais permet aussi de créer le fichier ''fich''. 
 $ touch fich

== Quelques &quot;trucs&quot;  ==

=== Effacer le fichier -fichier.txt.  ===

Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 
 $ rm -nom_du_fichier

ne marchera pas, rm croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret. Il faut donc utiliser l'option de fin de commande symbolisée par deux tirest consécutifs --. Pour notre exemple, on tapera&amp;nbsp;: 
 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 

=== Renommer un fichier commençant par un tiret ===

 $ mv -- \-monfichier1 monfichier2

[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=4679&amp;start=0  probleme de nom: renommer un fichier commencant par un tiret] 

=== Effacer un fichier avec des caractères spéciaux  ===

 $ rm mon_fichier_avec_un_nom_à_la_con\&amp;amp;

Comme pour tout caractère compris par le batch comme une commande il faut faire précéder ce caractère de &quot;escape&quot; ( \ ) 

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;'] 

=== Taper un nom de fichier contenant des espaces.  ===

Il suffit de mettre le nom entre guillemets :
 $ mv tutoriel linux/introduction renverra une erreur. Il faut taper&amp;nbsp;:
 $ mv &quot;tutoriel linux&quot;/introduction

Cette astuce fonctionne avec d'autres caractères spéciaux. 

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 
 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 
 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 
 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 
 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max

[[Catégorie:commandes]]</text>
      <sha1>awn4xl1m0rpvv0vpvc8cwbykmkzj2w7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>477</id>
      <parentid>476</parentid>
      <timestamp>2010-01-29T07:51:03Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="11945">{{sid}} 

----

&lt;u&gt;'''BROUILLON... La rédaction n'est pas encore terminée.'''&lt;/u&gt; 

----

= Gestion des fichiers  =

== Quelques commandes  ==

=== La commande '''cat'''  ===

Afficher le contenu du fichier ''fichier'' dans la console. 
 $ cat fichier

Afficher et copier le contenu de ''fichier'' dans ''fichier2''. 
 $ cat file &amp;gt; file2

Afficher le contenu d'un fichier et numérote les lignes. 
 $ cat -n fichier

=== La commande '''chgrp'''  ===

Changer le groupe auquel appartient un fichier :
 $ chgrp groupe fichier

Affecter un fichier à un groupe. Le changement de groupe peut être réalisé par n'importe quel utilisateur... '''mais''' on ne peut donner un fichier qu'à l'un des groupes dont on est membre.&lt;br&gt;L'administrateur évidemment peut affecter un fichier à n'importe quel groupe d'utilisateur.&lt;br&gt;Exemple&amp;nbsp;:''&lt;nowiki&gt;$ chgrp -R toto /home/titi/rep&lt;/nowiki&gt;'' Le répertoire ''/home/titi/rep/'' et son contenu appartiendront désormais au groupe ''toto''.

=== La commande '''cp'''  ===

Copier un/des fichier(s). Exemple&amp;nbsp;: 
 $ cp fichier /home/toto/vrac

Copier ''fichier_source'' dans ''répertoire_cible''.
 $ cp fichier_source /repertoire_cible/ 

Copier ''repertoire_source'' dans ''repertoire_cible'' sans demander de confirmation.
 $ cp -Rf repertoire_source /repertoire_cible

Attention&amp;nbsp;: Copier un fichier vers un fichier de même nom l'écrasera.&lt;br&gt;Pour copier plusieurs fichiers à la fois, pensez à utiliser les caractères génériques&amp;nbsp;? et *. 

Copier sans écrasement du fichier destination (Le fichier écrasé est sauvegardé, seul le nom du fichier d'origine est modifié (ajout d'un tilde ''~'' à la fin du nom du fichier)) :
 $ cp -b

Prévient celui qui lance la commande de l'existence d'un fichier du même nom et lui demande s'il peut ou non remplacer son contenu. Permet de ne pas écraser par inadvertance des fichiers importants :
 $ cp -i

Afficher le nom des fichiers copiés (-v = verbose ou &quot;verbeux&quot;). Pratique si vous copiez plusieurs fichiers à l'aide des caractères génériques * et/ou&amp;nbsp;? et que vous souhaitez voir le bon déroulement de la multicopie. 
 $ cp -v

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

S'utilise avec les droits &quot;root&quot;

Exemple Pour sauvegarder le MBR du disque hda dans le fichier mbr.sav :
 # dd if=/dev/hda of=mbr.sav bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 9,3797e-05 s, 5,5 MB/s

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 
 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 
 $ file fichier

=== La commande '''find'''  ===

Rechercher de ''fichier''. Ex&amp;nbsp;:''&lt;nowiki&gt;# find /home/toto/bazard -name *.jpeg&lt;/nowiki&gt;'' donne la liste des fichiers .jpeg contenu dans le répertoire''/home/toto/bazard''. Vous pouvez utiliser un caractère générique pour remplacer les lettres, il faut le faire précéder d'une barre oblique inverse&amp;nbsp;:&lt;nowiki&gt;# find / -name image\*&lt;/nowiki&gt; 
 $ find -name fichier

Afficher le résultat de la recherche, avec les chemins relatifs. 
 $ find -name fichier -print

Indiquer le type de fichier à rechercher. Remplacez ''x'' par ''f'' pour les fichiers, ''d'' pour les répertoires et ''l'' pour les liens symboliques. 
 $ find -type x -name fichier

=== La commande '''less'''  ===

Visualiser ''fichier'' page par page. Utilisez les touches directionnelles haut et bas pour faire défiler le texte, ''q'' pour quitter. 
 $ less fichier

=== La commande '''locate'''  ===

Localiser un fichier. ''Locate'' est un lien symbolique de la commande ''slocate''. Exemple&amp;nbsp;: ''&lt;nowiki&gt;# locate titi&lt;/nowiki&gt;'' affiche la liste des fichiers dont le nom contient le mot ''titi''.''Locate'' affiche tous les noms de fichiers correspondant au critère indiqué. Pour n'afficher que les fichiers autorisés, utilisez ''slocate''.''Locate'' se base sur une base de données de tous les noms de fichiers, mise à jour quotidiennement. Des fichiers récemment créés ne seront donc pas forcément référencés. Pour forcer une mise à jour manuelle, tapez&amp;nbsp;:&lt;nowiki&gt;# updatedb&lt;/nowiki&gt;ou&lt;nowiki&gt;# slocate -u&lt;/nowiki&gt; 
 $ locate x

=== La commande '''ls'''  ===

Lister les fichiers et les sous-répertoires de ''/rep''. 
 $ ls /rep

Lister tous les fichiers du répertoire indiqué, fichiers cachés (dont le nom commence par un point) compris. Si vous n'indiquez pas de répertoire, c'est le contenu du répertoire courant qui est listé. 
 $ ls -a /rep

Afficher tous les sous-répertoires de ''/rep''. 
 $ ls -d /rep

Affichage long&amp;nbsp;: droits, nom et groupe du propriétaire, taille, date de dernière modification.Si vous tapez le nom d'un lien, vous connaîtrez son fichier ou répertoire cible. 
 $ ls -l

Affiche tout le contenu du répertoire de façon détaillée. 
 $ ls -la

Liste le contenu d'un répertoire en donnant pour chaque fichier/répertoire plus de détails qu'un simple ''ls''. 
 $ ls -lh /rep

Liste les fichiers par type. Un fichier suivi d'un slash est un répertoire, un fichier suivi d'une étoile est un fichier exécutable et un fichier suivi d'un ''@'' est un lien. 
 $ ls -F

Liste les fichiers en les séparant par une virgule au lieu de les présenter en colonnes. 
 $ ls -m

En complément de ''-l'', affiche le nom et le groupe des propriétaires en fonction de leur UID et de leur GID. 
 $ ls -n

Liste les fichiers en ordre alphabétique inverse. 
 $ ls -r

Liste les fichiers triés par ordre de taille décroissante. 
 $ ls -S

Liste le contenu de ''/rep'' en triant par date de modification, du plus récent au plus ancien. 
 $ ls -t /rep

Liste les fichiers par type d'extension. 
 $ ls -X

=== La commande '''mknod'''  ===

Pour créer des fichiers de caractères majuscules ou spéciaux. 
 $ mknod

=== La commande '''more'''  ===

Permet de visualiser le contenu de ''fich'' page par page. Utilisez ''Enter'' pour le faire défiler, ''q'' pour quitter.La commande ''&lt;nowiki&gt;# cat fich   more&lt;/nowiki&gt;'' donne le même résultat. 
 $ more fich

=== La commande '''mv'''  ===

Pour déplacer ou renommer un fichier. Exemple&amp;nbsp;:''&lt;nowiki&gt;# mv toto /clown/titi&lt;/nowiki&gt;'' déplacera le fichier ''toto'' dans le répertoire ''clown'' (qui doit exister) et le renommera''titi''. 
 $ mv source destination

Effectue une sauvegarde du fichier avant de le déplacer. 
 $ mv -b

Effectue le déplacement même si la cible existe déjà, et ce sans message d'avertissement. 
 $ mv -f

Demande une confirmation si des fichiers risquent d'être écrasés par le déplacement. 
 $ mv -i

=== La commande '''rm'''  ===

Supprime ''fich''. Une fois un fichier effacé, il n'est plus possible de récupérer son contenu.Il est possible de spécifier plusieurs fichiers à la commande ''rm''&amp;nbsp;: dans ce cas, ils seront tous supprimés.Pour supprimer un fichier dont le nom commence par un tiret -, tapez&amp;nbsp;:&lt;nowiki&gt;# rm -- -lenomdufichier&lt;/nowiki&gt;ou&lt;nowiki&gt;# rm ./-lenomdufichier&lt;/nowiki&gt; 
 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 
 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 
 $ rm -i

=== La commande '''slocate'''  ===

Pour afficher la liste des fichiers dont le nom contient le mot ''couic''. La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 
 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe. 

=== La commande '''tac'''  ===

Pour afficher le contenu de ''fich'' à l'écran en commençant par le bas. 
 $ tac fich

=== La commande '''tail'''  ===

Pour afficher les 10 dernières lignes de ''fich''. 
 $ tail fich

Pour afficher les 2 dernières lignes de ''fich''. 
 $ tail -2 fich

=== La commande '''touch'''  ===

Sert normalement à modifier la date de création et de modification du fichier, mais permet aussi de créer le fichier ''fich''. 
 $ touch fich

== Quelques &quot;trucs&quot;  ==

=== Effacer le fichier -fichier.txt.  ===

Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 
 $ rm -nom_du_fichier

ne marchera pas, rm croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret. Il faut donc utiliser l'option de fin de commande symbolisée par deux tirest consécutifs --. Pour notre exemple, on tapera&amp;nbsp;: 
 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 

=== Renommer un fichier commençant par un tiret ===

 $ mv -- \-monfichier1 monfichier2

[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=4679&amp;start=0  probleme de nom: renommer un fichier commencant par un tiret] 

=== Effacer un fichier avec des caractères spéciaux  ===

 $ rm mon_fichier_avec_un_nom_à_la_con\&amp;amp;

Comme pour tout caractère compris par le batch comme une commande il faut faire précéder ce caractère de &quot;escape&quot; ( \ ) 

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;'] 

=== Taper un nom de fichier contenant des espaces.  ===

Il suffit de mettre le nom entre guillemets :
 $ mv tutoriel linux/introduction renverra une erreur. Il faut taper&amp;nbsp;:
 $ mv &quot;tutoriel linux&quot;/introduction

Cette astuce fonctionne avec d'autres caractères spéciaux. 

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 
 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 
 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 
 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 
 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max

&lt;categorytree mode=pages&gt;Commandes&lt;/categorytree&gt;
[[Catégorie:commandes]]</text>
      <sha1>0gbsxrdpgbzhle8cqrk06grb2h1l6th</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>479</id>
      <parentid>477</parentid>
      <timestamp>2010-01-29T07:53:59Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="12058">{{sid}} 

----

&lt;u&gt;'''BROUILLON... La rédaction n'est pas encore terminée.'''&lt;/u&gt; 

----
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

= Gestion des fichiers  =

== Quelques commandes  ==

=== La commande '''cat'''  ===

Afficher le contenu du fichier ''fichier'' dans la console. 
 $ cat fichier

Afficher et copier le contenu de ''fichier'' dans ''fichier2''. 
 $ cat file &amp;gt; file2

Afficher le contenu d'un fichier et numérote les lignes. 
 $ cat -n fichier

=== La commande '''chgrp'''  ===

Changer le groupe auquel appartient un fichier :
 $ chgrp groupe fichier

Affecter un fichier à un groupe. Le changement de groupe peut être réalisé par n'importe quel utilisateur... '''mais''' on ne peut donner un fichier qu'à l'un des groupes dont on est membre.&lt;br&gt;L'administrateur évidemment peut affecter un fichier à n'importe quel groupe d'utilisateur.&lt;br&gt;Exemple&amp;nbsp;:''&lt;nowiki&gt;$ chgrp -R toto /home/titi/rep&lt;/nowiki&gt;'' Le répertoire ''/home/titi/rep/'' et son contenu appartiendront désormais au groupe ''toto''.

=== La commande '''cp'''  ===

Copier un/des fichier(s). Exemple&amp;nbsp;: 
 $ cp fichier /home/toto/vrac

Copier ''fichier_source'' dans ''répertoire_cible''.
 $ cp fichier_source /repertoire_cible/ 

Copier ''repertoire_source'' dans ''repertoire_cible'' sans demander de confirmation.
 $ cp -Rf repertoire_source /repertoire_cible

Attention&amp;nbsp;: Copier un fichier vers un fichier de même nom l'écrasera.&lt;br&gt;Pour copier plusieurs fichiers à la fois, pensez à utiliser les caractères génériques&amp;nbsp;? et *. 

Copier sans écrasement du fichier destination (Le fichier écrasé est sauvegardé, seul le nom du fichier d'origine est modifié (ajout d'un tilde ''~'' à la fin du nom du fichier)) :
 $ cp -b

Prévient celui qui lance la commande de l'existence d'un fichier du même nom et lui demande s'il peut ou non remplacer son contenu. Permet de ne pas écraser par inadvertance des fichiers importants :
 $ cp -i

Afficher le nom des fichiers copiés (-v = verbose ou &quot;verbeux&quot;). Pratique si vous copiez plusieurs fichiers à l'aide des caractères génériques * et/ou&amp;nbsp;? et que vous souhaitez voir le bon déroulement de la multicopie. 
 $ cp -v

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

S'utilise avec les droits &quot;root&quot;

Exemple Pour sauvegarder le MBR du disque hda dans le fichier mbr.sav :
 # dd if=/dev/hda of=mbr.sav bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 9,3797e-05 s, 5,5 MB/s

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 
 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 
 $ file fichier

=== La commande '''find'''  ===

Rechercher de ''fichier''. Ex&amp;nbsp;:''&lt;nowiki&gt;# find /home/toto/bazard -name *.jpeg&lt;/nowiki&gt;'' donne la liste des fichiers .jpeg contenu dans le répertoire''/home/toto/bazard''. Vous pouvez utiliser un caractère générique pour remplacer les lettres, il faut le faire précéder d'une barre oblique inverse&amp;nbsp;:&lt;nowiki&gt;# find / -name image\*&lt;/nowiki&gt; 
 $ find -name fichier

Afficher le résultat de la recherche, avec les chemins relatifs. 
 $ find -name fichier -print

Indiquer le type de fichier à rechercher. Remplacez ''x'' par ''f'' pour les fichiers, ''d'' pour les répertoires et ''l'' pour les liens symboliques. 
 $ find -type x -name fichier

=== La commande '''less'''  ===

Visualiser ''fichier'' page par page. Utilisez les touches directionnelles haut et bas pour faire défiler le texte, ''q'' pour quitter. 
 $ less fichier

=== La commande '''locate'''  ===

Localiser un fichier. ''Locate'' est un lien symbolique de la commande ''slocate''. Exemple&amp;nbsp;: ''&lt;nowiki&gt;# locate titi&lt;/nowiki&gt;'' affiche la liste des fichiers dont le nom contient le mot ''titi''.''Locate'' affiche tous les noms de fichiers correspondant au critère indiqué. Pour n'afficher que les fichiers autorisés, utilisez ''slocate''.''Locate'' se base sur une base de données de tous les noms de fichiers, mise à jour quotidiennement. Des fichiers récemment créés ne seront donc pas forcément référencés. Pour forcer une mise à jour manuelle, tapez&amp;nbsp;:&lt;nowiki&gt;# updatedb&lt;/nowiki&gt;ou&lt;nowiki&gt;# slocate -u&lt;/nowiki&gt; 
 $ locate x

=== La commande '''ls'''  ===

Lister les fichiers et les sous-répertoires de ''/rep''. 
 $ ls /rep

Lister tous les fichiers du répertoire indiqué, fichiers cachés (dont le nom commence par un point) compris. Si vous n'indiquez pas de répertoire, c'est le contenu du répertoire courant qui est listé. 
 $ ls -a /rep

Afficher tous les sous-répertoires de ''/rep''. 
 $ ls -d /rep

Affichage long&amp;nbsp;: droits, nom et groupe du propriétaire, taille, date de dernière modification.Si vous tapez le nom d'un lien, vous connaîtrez son fichier ou répertoire cible. 
 $ ls -l

Affiche tout le contenu du répertoire de façon détaillée. 
 $ ls -la

Liste le contenu d'un répertoire en donnant pour chaque fichier/répertoire plus de détails qu'un simple ''ls''. 
 $ ls -lh /rep

Liste les fichiers par type. Un fichier suivi d'un slash est un répertoire, un fichier suivi d'une étoile est un fichier exécutable et un fichier suivi d'un ''@'' est un lien. 
 $ ls -F

Liste les fichiers en les séparant par une virgule au lieu de les présenter en colonnes. 
 $ ls -m

En complément de ''-l'', affiche le nom et le groupe des propriétaires en fonction de leur UID et de leur GID. 
 $ ls -n

Liste les fichiers en ordre alphabétique inverse. 
 $ ls -r

Liste les fichiers triés par ordre de taille décroissante. 
 $ ls -S

Liste le contenu de ''/rep'' en triant par date de modification, du plus récent au plus ancien. 
 $ ls -t /rep

Liste les fichiers par type d'extension. 
 $ ls -X

=== La commande '''mknod'''  ===

Pour créer des fichiers de caractères majuscules ou spéciaux. 
 $ mknod

=== La commande '''more'''  ===

Permet de visualiser le contenu de ''fich'' page par page. Utilisez ''Enter'' pour le faire défiler, ''q'' pour quitter.La commande ''&lt;nowiki&gt;# cat fich   more&lt;/nowiki&gt;'' donne le même résultat. 
 $ more fich

=== La commande '''mv'''  ===

Pour déplacer ou renommer un fichier. Exemple&amp;nbsp;:''&lt;nowiki&gt;# mv toto /clown/titi&lt;/nowiki&gt;'' déplacera le fichier ''toto'' dans le répertoire ''clown'' (qui doit exister) et le renommera''titi''. 
 $ mv source destination

Effectue une sauvegarde du fichier avant de le déplacer. 
 $ mv -b

Effectue le déplacement même si la cible existe déjà, et ce sans message d'avertissement. 
 $ mv -f

Demande une confirmation si des fichiers risquent d'être écrasés par le déplacement. 
 $ mv -i

=== La commande '''rm'''  ===

Supprime ''fich''. Une fois un fichier effacé, il n'est plus possible de récupérer son contenu.Il est possible de spécifier plusieurs fichiers à la commande ''rm''&amp;nbsp;: dans ce cas, ils seront tous supprimés.Pour supprimer un fichier dont le nom commence par un tiret -, tapez&amp;nbsp;:&lt;nowiki&gt;# rm -- -lenomdufichier&lt;/nowiki&gt;ou&lt;nowiki&gt;# rm ./-lenomdufichier&lt;/nowiki&gt; 
 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 
 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 
 $ rm -i

=== La commande '''slocate'''  ===

Pour afficher la liste des fichiers dont le nom contient le mot ''couic''. La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 
 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe. 

=== La commande '''tac'''  ===

Pour afficher le contenu de ''fich'' à l'écran en commençant par le bas. 
 $ tac fich

=== La commande '''tail'''  ===

Pour afficher les 10 dernières lignes de ''fich''. 
 $ tail fich

Pour afficher les 2 dernières lignes de ''fich''. 
 $ tail -2 fich

=== La commande '''touch'''  ===

Sert normalement à modifier la date de création et de modification du fichier, mais permet aussi de créer le fichier ''fich''. 
 $ touch fich

== Quelques &quot;trucs&quot;  ==

=== Effacer le fichier -fichier.txt.  ===

Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 
 $ rm -nom_du_fichier

ne marchera pas, rm croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret. Il faut donc utiliser l'option de fin de commande symbolisée par deux tirest consécutifs --. Pour notre exemple, on tapera&amp;nbsp;: 
 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 

=== Renommer un fichier commençant par un tiret ===

 $ mv -- \-monfichier1 monfichier2

[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=4679&amp;start=0  probleme de nom: renommer un fichier commencant par un tiret] 

=== Effacer un fichier avec des caractères spéciaux  ===

 $ rm mon_fichier_avec_un_nom_à_la_con\&amp;amp;

Comme pour tout caractère compris par le batch comme une commande il faut faire précéder ce caractère de &quot;escape&quot; ( \ ) 

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;'] 

=== Taper un nom de fichier contenant des espaces.  ===

Il suffit de mettre le nom entre guillemets :
 $ mv tutoriel linux/introduction renverra une erreur. Il faut taper&amp;nbsp;:
 $ mv &quot;tutoriel linux&quot;/introduction

Cette astuce fonctionne avec d'autres caractères spéciaux. 

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 
 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 
 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 
 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 
 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max

[[Catégorie:commandes]]</text>
      <sha1>bp76z4xr9nqjil7fzgdd2joiijr6yom</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>505</id>
      <parentid>479</parentid>
      <timestamp>2010-01-29T13:22:17Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="12068">{{sid}} 

----

&lt;u&gt;'''BROUILLON... La rédaction n'est pas encore terminée.'''&lt;/u&gt; 

----
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

= Gestion des fichiers  =

== Quelques commandes  ==

=== La commande '''cat'''  ===

Afficher le contenu du fichier ''fichier'' dans la console. 
 $ cat fichier

Afficher et copier le contenu de ''fichier'' dans ''fichier2''. 
 $ cat file &amp;gt; file2

Afficher le contenu d'un fichier et numérote les lignes. 
 $ cat -n fichier

=== La commande '''chgrp'''  ===

Changer le groupe auquel appartient un fichier :
 $ chgrp groupe fichier

Affecter un fichier à un groupe. Le changement de groupe peut être réalisé par n'importe quel utilisateur... '''mais''' on ne peut donner un fichier qu'à l'un des groupes dont on est membre.&lt;br&gt;L'administrateur évidemment peut affecter un fichier à n'importe quel groupe d'utilisateur.&lt;br&gt;Exemple&amp;nbsp;:''&lt;nowiki&gt;$ chgrp -R toto /home/titi/rep&lt;/nowiki&gt;'' Le répertoire ''/home/titi/rep/'' et son contenu appartiendront désormais au groupe ''toto''.

=== La commande '''cp'''  ===

Copier un/des fichier(s). Exemple&amp;nbsp;: 
 $ cp fichier /home/toto/vrac

Copier ''fichier_source'' dans ''répertoire_cible''.
 $ cp fichier_source /repertoire_cible/ 

Copier ''repertoire_source'' dans ''repertoire_cible'' sans demander de confirmation.
 $ cp -Rf repertoire_source /repertoire_cible

Attention&amp;nbsp;: Copier un fichier vers un fichier de même nom l'écrasera.&lt;br&gt;Pour copier plusieurs fichiers à la fois, pensez à utiliser les caractères génériques&amp;nbsp;? et *. 

Copier sans écrasement du fichier destination (Le fichier écrasé est sauvegardé, seul le nom du fichier d'origine est modifié (ajout d'un tilde ''~'' à la fin du nom du fichier)) :
 $ cp -b

Prévient celui qui lance la commande de l'existence d'un fichier du même nom et lui demande s'il peut ou non remplacer son contenu. Permet de ne pas écraser par inadvertance des fichiers importants :
 $ cp -i

Afficher le nom des fichiers copiés (-v = verbose ou &quot;verbeux&quot;). Pratique si vous copiez plusieurs fichiers à l'aide des caractères génériques * et/ou&amp;nbsp;? et que vous souhaitez voir le bon déroulement de la multicopie. 
 $ cp -v

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

S'utilise avec les droits &quot;root&quot;

Exemple Pour sauvegarder le MBR du disque hda dans le fichier mbr.sav :
 # dd if=/dev/hda of=mbr.sav bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 9,3797e-05 s, 5,5 MB/s

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 
 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 
 $ file fichier

=== La commande '''find'''  ===

Rechercher de ''fichier''. Ex&amp;nbsp;:''&lt;nowiki&gt;# find /home/toto/bazard -name *.jpeg&lt;/nowiki&gt;'' donne la liste des fichiers .jpeg contenu dans le répertoire''/home/toto/bazard''. Vous pouvez utiliser un caractère générique pour remplacer les lettres, il faut le faire précéder d'une barre oblique inverse&amp;nbsp;:&lt;nowiki&gt;# find / -name image\*&lt;/nowiki&gt; 
 $ find -name fichier

Afficher le résultat de la recherche, avec les chemins relatifs. 
 $ find -name fichier -print

Indiquer le type de fichier à rechercher. Remplacez ''x'' par ''f'' pour les fichiers, ''d'' pour les répertoires et ''l'' pour les liens symboliques. 
 $ find -type x -name fichier

=== La commande '''less'''  ===

Visualiser ''fichier'' page par page. Utilisez les touches directionnelles haut et bas pour faire défiler le texte, ''q'' pour quitter. 
 $ less fichier

=== La commande '''locate'''  ===

Localiser un fichier. ''Locate'' est un lien symbolique de la commande ''slocate''. Exemple&amp;nbsp;: ''&lt;nowiki&gt;# locate titi&lt;/nowiki&gt;'' affiche la liste des fichiers dont le nom contient le mot ''titi''.''Locate'' affiche tous les noms de fichiers correspondant au critère indiqué. Pour n'afficher que les fichiers autorisés, utilisez ''slocate''.''Locate'' se base sur une base de données de tous les noms de fichiers, mise à jour quotidiennement. Des fichiers récemment créés ne seront donc pas forcément référencés. Pour forcer une mise à jour manuelle, tapez&amp;nbsp;:&lt;nowiki&gt;# updatedb&lt;/nowiki&gt;ou&lt;nowiki&gt;# slocate -u&lt;/nowiki&gt; 
 $ locate x

=== La commande '''ls'''  ===

Lister les fichiers et les sous-répertoires de ''/rep''. 
 $ ls /rep

Lister tous les fichiers du répertoire indiqué, fichiers cachés (dont le nom commence par un point) compris. Si vous n'indiquez pas de répertoire, c'est le contenu du répertoire courant qui est listé. 
 $ ls -a /rep

Afficher tous les sous-répertoires de ''/rep''. 
 $ ls -d /rep

Affichage long&amp;nbsp;: droits, nom et groupe du propriétaire, taille, date de dernière modification.Si vous tapez le nom d'un lien, vous connaîtrez son fichier ou répertoire cible. 
 $ ls -l

Affiche tout le contenu du répertoire de façon détaillée. 
 $ ls -la

Liste le contenu d'un répertoire en donnant pour chaque fichier/répertoire plus de détails qu'un simple ''ls''. 
 $ ls -lh /rep

Liste les fichiers par type. Un fichier suivi d'un slash est un répertoire, un fichier suivi d'une étoile est un fichier exécutable et un fichier suivi d'un ''@'' est un lien. 
 $ ls -F

Liste les fichiers en les séparant par une virgule au lieu de les présenter en colonnes. 
 $ ls -m

En complément de ''-l'', affiche le nom et le groupe des propriétaires en fonction de leur UID et de leur GID. 
 $ ls -n

Liste les fichiers en ordre alphabétique inverse. 
 $ ls -r

Liste les fichiers triés par ordre de taille décroissante. 
 $ ls -S

Liste le contenu de ''/rep'' en triant par date de modification, du plus récent au plus ancien. 
 $ ls -t /rep

Liste les fichiers par type d'extension. 
 $ ls -X

=== La commande '''mknod'''  ===

Pour créer des fichiers de caractères majuscules ou spéciaux. 
 $ mknod

=== La commande '''more'''  ===

Permet de visualiser le contenu de ''fich'' page par page. Utilisez ''Enter'' pour le faire défiler, ''q'' pour quitter.La commande ''&lt;nowiki&gt;# cat fich   more&lt;/nowiki&gt;'' donne le même résultat. 
 $ more fich

=== La commande '''mv'''  ===

Pour déplacer ou renommer un fichier. Exemple&amp;nbsp;:''&lt;nowiki&gt;# mv toto /clown/titi&lt;/nowiki&gt;'' déplacera le fichier ''toto'' dans le répertoire ''clown'' (qui doit exister) et le renommera''titi''. 
 $ mv source destination

Effectue une sauvegarde du fichier avant de le déplacer. 
 $ mv -b

Effectue le déplacement même si la cible existe déjà, et ce sans message d'avertissement. 
 $ mv -f

Demande une confirmation si des fichiers risquent d'être écrasés par le déplacement. 
 $ mv -i

=== La commande '''rm'''  ===

Supprime ''fich''. Une fois un fichier effacé, il n'est plus possible de récupérer son contenu.Il est possible de spécifier plusieurs fichiers à la commande ''rm''&amp;nbsp;: dans ce cas, ils seront tous supprimés.Pour supprimer un fichier dont le nom commence par un tiret -, tapez&amp;nbsp;:&lt;nowiki&gt;# rm -- -lenomdufichier&lt;/nowiki&gt;ou&lt;nowiki&gt;# rm ./-lenomdufichier&lt;/nowiki&gt; 
 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 
 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 
 $ rm -i

=== La commande '''slocate'''  ===

Pour afficher la liste des fichiers dont le nom contient le mot ''couic''. La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 
 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe. 

=== La commande '''tac'''  ===

Pour afficher le contenu de ''fich'' à l'écran en commençant par le bas. 
 $ tac fich

=== La commande '''tail'''  ===

Pour afficher les 10 dernières lignes de ''fich''. 
 $ tail fich

Pour afficher les 2 dernières lignes de ''fich''. 
 $ tail -2 fich

=== La commande '''touch'''  ===

Sert normalement à modifier la date de création et de modification du fichier, mais permet aussi de créer le fichier ''fich''. 
 $ touch fich

== Quelques &quot;trucs&quot;  ==

=== Effacer un fichier commençant par un tiret  ===

Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 
 $ rm -fichier.txt

ne marchera pas, rm croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret.&lt;br&gt;Il faut donc utiliser l'option de fin de commande symbolisée par deux tirest consécutifs --. Pour notre exemple, on tapera&amp;nbsp;: 
 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 

=== Renommer un fichier commençant par un tiret ===

 $ mv -- \-monfichier1 monfichier2

[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=4679&amp;start=0  probleme de nom: renommer un fichier commencant par un tiret] 

=== Effacer un fichier avec des caractères spéciaux  ===

 $ rm mon_fichier_avec_un_nom_à_la_con\&amp;amp;

Comme pour tout caractère compris par le batch comme une commande il faut faire précéder ce caractère de &quot;escape&quot; ( \ ) 

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;'] 

=== Taper un nom de fichier contenant des espaces.  ===

Il suffit de mettre le nom entre guillemets :
$ mv tutoriel linux/introduction renverra une erreur. Il faut taper&amp;nbsp;:
 $ mv &quot;tutoriel linux&quot;/introduction

Cette astuce fonctionne avec d'autres caractères spéciaux. 

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 
 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 
 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 
 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 
 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max

[[Catégorie:commandes]]</text>
      <sha1>l4jzjlziqpildrj97do2usodyl780bl</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>526</id>
      <parentid>505</parentid>
      <timestamp>2010-01-30T03:46:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="12036">{{sid}} 

----

{{Ébauche|La gestion des fichiers}}

----
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

= Gestion des fichiers  =

== Quelques commandes  ==

=== La commande '''cat'''  ===

Afficher le contenu du fichier ''fichier'' dans la console. 
 $ cat fichier

Afficher et copier le contenu de ''fichier'' dans ''fichier2''. 
 $ cat file &amp;gt; file2

Afficher le contenu d'un fichier et numérote les lignes. 
 $ cat -n fichier

=== La commande '''chgrp'''  ===

Changer le groupe auquel appartient un fichier :
 $ chgrp groupe fichier

Affecter un fichier à un groupe. Le changement de groupe peut être réalisé par n'importe quel utilisateur... '''mais''' on ne peut donner un fichier qu'à l'un des groupes dont on est membre.&lt;br&gt;L'administrateur évidemment peut affecter un fichier à n'importe quel groupe d'utilisateur.&lt;br&gt;Exemple&amp;nbsp;:''&lt;nowiki&gt;$ chgrp -R toto /home/titi/rep&lt;/nowiki&gt;'' Le répertoire ''/home/titi/rep/'' et son contenu appartiendront désormais au groupe ''toto''.

=== La commande '''cp'''  ===

Copier un/des fichier(s). Exemple&amp;nbsp;: 
 $ cp fichier /home/toto/vrac

Copier ''fichier_source'' dans ''répertoire_cible''.
 $ cp fichier_source /repertoire_cible/ 

Copier ''repertoire_source'' dans ''repertoire_cible'' sans demander de confirmation.
 $ cp -Rf repertoire_source /repertoire_cible

Attention&amp;nbsp;: Copier un fichier vers un fichier de même nom l'écrasera.&lt;br&gt;Pour copier plusieurs fichiers à la fois, pensez à utiliser les caractères génériques&amp;nbsp;? et *. 

Copier sans écrasement du fichier destination (Le fichier écrasé est sauvegardé, seul le nom du fichier d'origine est modifié (ajout d'un tilde ''~'' à la fin du nom du fichier)) :
 $ cp -b

Prévient celui qui lance la commande de l'existence d'un fichier du même nom et lui demande s'il peut ou non remplacer son contenu. Permet de ne pas écraser par inadvertance des fichiers importants :
 $ cp -i

Afficher le nom des fichiers copiés (-v = verbose ou &quot;verbeux&quot;). Pratique si vous copiez plusieurs fichiers à l'aide des caractères génériques * et/ou&amp;nbsp;? et que vous souhaitez voir le bon déroulement de la multicopie. 
 $ cp -v

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

S'utilise avec les droits &quot;root&quot;

Exemple Pour sauvegarder le MBR du disque hda dans le fichier mbr.sav :
 # dd if=/dev/hda of=mbr.sav bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 9,3797e-05 s, 5,5 MB/s

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 
 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 
 $ file fichier

=== La commande '''find'''  ===

Rechercher de ''fichier''. Ex&amp;nbsp;:''&lt;nowiki&gt;# find /home/toto/bazard -name *.jpeg&lt;/nowiki&gt;'' donne la liste des fichiers .jpeg contenu dans le répertoire''/home/toto/bazard''. Vous pouvez utiliser un caractère générique pour remplacer les lettres, il faut le faire précéder d'une barre oblique inverse&amp;nbsp;:&lt;nowiki&gt;# find / -name image\*&lt;/nowiki&gt; 
 $ find -name fichier

Afficher le résultat de la recherche, avec les chemins relatifs. 
 $ find -name fichier -print

Indiquer le type de fichier à rechercher. Remplacez ''x'' par ''f'' pour les fichiers, ''d'' pour les répertoires et ''l'' pour les liens symboliques. 
 $ find -type x -name fichier

=== La commande '''less'''  ===

Visualiser ''fichier'' page par page. Utilisez les touches directionnelles haut et bas pour faire défiler le texte, ''q'' pour quitter. 
 $ less fichier

=== La commande '''locate'''  ===

Localiser un fichier. ''Locate'' est un lien symbolique de la commande ''slocate''. Exemple&amp;nbsp;: ''&lt;nowiki&gt;# locate titi&lt;/nowiki&gt;'' affiche la liste des fichiers dont le nom contient le mot ''titi''.''Locate'' affiche tous les noms de fichiers correspondant au critère indiqué. Pour n'afficher que les fichiers autorisés, utilisez ''slocate''.''Locate'' se base sur une base de données de tous les noms de fichiers, mise à jour quotidiennement. Des fichiers récemment créés ne seront donc pas forcément référencés. Pour forcer une mise à jour manuelle, tapez&amp;nbsp;:&lt;nowiki&gt;# updatedb&lt;/nowiki&gt;ou&lt;nowiki&gt;# slocate -u&lt;/nowiki&gt; 
 $ locate x

=== La commande '''ls'''  ===

Lister les fichiers et les sous-répertoires de ''/rep''. 
 $ ls /rep

Lister tous les fichiers du répertoire indiqué, fichiers cachés (dont le nom commence par un point) compris. Si vous n'indiquez pas de répertoire, c'est le contenu du répertoire courant qui est listé. 
 $ ls -a /rep

Afficher tous les sous-répertoires de ''/rep''. 
 $ ls -d /rep

Affichage long&amp;nbsp;: droits, nom et groupe du propriétaire, taille, date de dernière modification.Si vous tapez le nom d'un lien, vous connaîtrez son fichier ou répertoire cible. 
 $ ls -l

Affiche tout le contenu du répertoire de façon détaillée. 
 $ ls -la

Liste le contenu d'un répertoire en donnant pour chaque fichier/répertoire plus de détails qu'un simple ''ls''. 
 $ ls -lh /rep

Liste les fichiers par type. Un fichier suivi d'un slash est un répertoire, un fichier suivi d'une étoile est un fichier exécutable et un fichier suivi d'un ''@'' est un lien. 
 $ ls -F

Liste les fichiers en les séparant par une virgule au lieu de les présenter en colonnes. 
 $ ls -m

En complément de ''-l'', affiche le nom et le groupe des propriétaires en fonction de leur UID et de leur GID. 
 $ ls -n

Liste les fichiers en ordre alphabétique inverse. 
 $ ls -r

Liste les fichiers triés par ordre de taille décroissante. 
 $ ls -S

Liste le contenu de ''/rep'' en triant par date de modification, du plus récent au plus ancien. 
 $ ls -t /rep

Liste les fichiers par type d'extension. 
 $ ls -X

=== La commande '''mknod'''  ===

Pour créer des fichiers de caractères majuscules ou spéciaux. 
 $ mknod

=== La commande '''more'''  ===

Permet de visualiser le contenu de ''fich'' page par page. Utilisez ''Enter'' pour le faire défiler, ''q'' pour quitter.La commande ''&lt;nowiki&gt;# cat fich   more&lt;/nowiki&gt;'' donne le même résultat. 
 $ more fich

=== La commande '''mv'''  ===

Pour déplacer ou renommer un fichier. Exemple&amp;nbsp;:''&lt;nowiki&gt;# mv toto /clown/titi&lt;/nowiki&gt;'' déplacera le fichier ''toto'' dans le répertoire ''clown'' (qui doit exister) et le renommera''titi''. 
 $ mv source destination

Effectue une sauvegarde du fichier avant de le déplacer. 
 $ mv -b

Effectue le déplacement même si la cible existe déjà, et ce sans message d'avertissement. 
 $ mv -f

Demande une confirmation si des fichiers risquent d'être écrasés par le déplacement. 
 $ mv -i

=== La commande '''rm'''  ===

Supprime ''fich''. Une fois un fichier effacé, il n'est plus possible de récupérer son contenu.Il est possible de spécifier plusieurs fichiers à la commande ''rm''&amp;nbsp;: dans ce cas, ils seront tous supprimés.Pour supprimer un fichier dont le nom commence par un tiret -, tapez&amp;nbsp;:&lt;nowiki&gt;# rm -- -lenomdufichier&lt;/nowiki&gt;ou&lt;nowiki&gt;# rm ./-lenomdufichier&lt;/nowiki&gt; 
 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 
 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 
 $ rm -i

=== La commande '''slocate'''  ===

Pour afficher la liste des fichiers dont le nom contient le mot ''couic''. La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 
 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe. 

=== La commande '''tac'''  ===

Pour afficher le contenu de ''fich'' à l'écran en commençant par le bas. 
 $ tac fich

=== La commande '''tail'''  ===

Pour afficher les 10 dernières lignes de ''fich''. 
 $ tail fich

Pour afficher les 2 dernières lignes de ''fich''. 
 $ tail -2 fich

=== La commande '''touch'''  ===

Sert normalement à modifier la date de création et de modification du fichier, mais permet aussi de créer le fichier ''fich''. 
 $ touch fich

== Quelques &quot;trucs&quot;  ==

=== Effacer un fichier commençant par un tiret  ===

Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 
 $ rm -fichier.txt

ne marchera pas, rm croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret.&lt;br&gt;Il faut donc utiliser l'option de fin de commande symbolisée par deux tirest consécutifs --. Pour notre exemple, on tapera&amp;nbsp;: 
 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 

=== Renommer un fichier commençant par un tiret ===

 $ mv -- \-monfichier1 monfichier2

[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=4679&amp;start=0  probleme de nom: renommer un fichier commencant par un tiret] 

=== Effacer un fichier avec des caractères spéciaux  ===

 $ rm mon_fichier_avec_un_nom_à_la_con\&amp;amp;

Comme pour tout caractère compris par le batch comme une commande il faut faire précéder ce caractère de &quot;escape&quot; ( \ ) 

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;'] 

=== Taper un nom de fichier contenant des espaces.  ===

Il suffit de mettre le nom entre guillemets :
$ mv tutoriel linux/introduction renverra une erreur. Il faut taper&amp;nbsp;:
 $ mv &quot;tutoriel linux&quot;/introduction

Cette astuce fonctionne avec d'autres caractères spéciaux. 

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 
 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 
 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 
 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 
 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max

[[Catégorie:commandes]]</text>
      <sha1>36kj3ulbmc7vnfkwcxa177dl8hdp10i</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>578</id>
      <parentid>526</parentid>
      <timestamp>2010-01-30T17:21:29Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>/* Quelques &quot;trucs&quot; */</comment>
      <text xml:space="preserve" bytes="12432">{{sid}} 

----

{{Ébauche|La gestion des fichiers}}

----
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

= Gestion des fichiers  =

== Quelques commandes  ==

=== La commande '''cat'''  ===

Afficher le contenu du fichier ''fichier'' dans la console. 
 $ cat fichier

Afficher et copier le contenu de ''fichier'' dans ''fichier2''. 
 $ cat file &amp;gt; file2

Afficher le contenu d'un fichier et numérote les lignes. 
 $ cat -n fichier

=== La commande '''chgrp'''  ===

Changer le groupe auquel appartient un fichier :
 $ chgrp groupe fichier

Affecter un fichier à un groupe. Le changement de groupe peut être réalisé par n'importe quel utilisateur... '''mais''' on ne peut donner un fichier qu'à l'un des groupes dont on est membre.&lt;br&gt;L'administrateur évidemment peut affecter un fichier à n'importe quel groupe d'utilisateur.&lt;br&gt;Exemple&amp;nbsp;:''&lt;nowiki&gt;$ chgrp -R toto /home/titi/rep&lt;/nowiki&gt;'' Le répertoire ''/home/titi/rep/'' et son contenu appartiendront désormais au groupe ''toto''.

=== La commande '''cp'''  ===

Copier un/des fichier(s). Exemple&amp;nbsp;: 
 $ cp fichier /home/toto/vrac

Copier ''fichier_source'' dans ''répertoire_cible''.
 $ cp fichier_source /repertoire_cible/ 

Copier ''repertoire_source'' dans ''repertoire_cible'' sans demander de confirmation.
 $ cp -Rf repertoire_source /repertoire_cible

Attention&amp;nbsp;: Copier un fichier vers un fichier de même nom l'écrasera.&lt;br&gt;Pour copier plusieurs fichiers à la fois, pensez à utiliser les caractères génériques&amp;nbsp;? et *. 

Copier sans écrasement du fichier destination (Le fichier écrasé est sauvegardé, seul le nom du fichier d'origine est modifié (ajout d'un tilde ''~'' à la fin du nom du fichier)) :
 $ cp -b

Prévient celui qui lance la commande de l'existence d'un fichier du même nom et lui demande s'il peut ou non remplacer son contenu. Permet de ne pas écraser par inadvertance des fichiers importants :
 $ cp -i

Afficher le nom des fichiers copiés (-v = verbose ou &quot;verbeux&quot;). Pratique si vous copiez plusieurs fichiers à l'aide des caractères génériques * et/ou&amp;nbsp;? et que vous souhaitez voir le bon déroulement de la multicopie. 
 $ cp -v

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

S'utilise avec les droits &quot;root&quot;

Exemple Pour sauvegarder le MBR du disque hda dans le fichier mbr.sav :
 # dd if=/dev/hda of=mbr.sav bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 9,3797e-05 s, 5,5 MB/s

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 
 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 
 $ file fichier

=== La commande '''find'''  ===

Rechercher de ''fichier''. Ex&amp;nbsp;:''&lt;nowiki&gt;# find /home/toto/bazard -name *.jpeg&lt;/nowiki&gt;'' donne la liste des fichiers .jpeg contenu dans le répertoire''/home/toto/bazard''. Vous pouvez utiliser un caractère générique pour remplacer les lettres, il faut le faire précéder d'une barre oblique inverse&amp;nbsp;:&lt;nowiki&gt;# find / -name image\*&lt;/nowiki&gt; 
 $ find -name fichier

Afficher le résultat de la recherche, avec les chemins relatifs. 
 $ find -name fichier -print

Indiquer le type de fichier à rechercher. Remplacez ''x'' par ''f'' pour les fichiers, ''d'' pour les répertoires et ''l'' pour les liens symboliques. 
 $ find -type x -name fichier

=== La commande '''less'''  ===

Visualiser ''fichier'' page par page. Utilisez les touches directionnelles haut et bas pour faire défiler le texte, ''q'' pour quitter. 
 $ less fichier

=== La commande '''locate'''  ===

Localiser un fichier. ''Locate'' est un lien symbolique de la commande ''slocate''. Exemple&amp;nbsp;: ''&lt;nowiki&gt;# locate titi&lt;/nowiki&gt;'' affiche la liste des fichiers dont le nom contient le mot ''titi''.''Locate'' affiche tous les noms de fichiers correspondant au critère indiqué. Pour n'afficher que les fichiers autorisés, utilisez ''slocate''.''Locate'' se base sur une base de données de tous les noms de fichiers, mise à jour quotidiennement. Des fichiers récemment créés ne seront donc pas forcément référencés. Pour forcer une mise à jour manuelle, tapez&amp;nbsp;:&lt;nowiki&gt;# updatedb&lt;/nowiki&gt;ou&lt;nowiki&gt;# slocate -u&lt;/nowiki&gt; 
 $ locate x

=== La commande '''ls'''  ===

Lister les fichiers et les sous-répertoires de ''/rep''. 
 $ ls /rep

Lister tous les fichiers du répertoire indiqué, fichiers cachés (dont le nom commence par un point) compris. Si vous n'indiquez pas de répertoire, c'est le contenu du répertoire courant qui est listé. 
 $ ls -a /rep

Afficher tous les sous-répertoires de ''/rep''. 
 $ ls -d /rep

Affichage long&amp;nbsp;: droits, nom et groupe du propriétaire, taille, date de dernière modification.Si vous tapez le nom d'un lien, vous connaîtrez son fichier ou répertoire cible. 
 $ ls -l

Affiche tout le contenu du répertoire de façon détaillée. 
 $ ls -la

Liste le contenu d'un répertoire en donnant pour chaque fichier/répertoire plus de détails qu'un simple ''ls''. 
 $ ls -lh /rep

Liste les fichiers par type. Un fichier suivi d'un slash est un répertoire, un fichier suivi d'une étoile est un fichier exécutable et un fichier suivi d'un ''@'' est un lien. 
 $ ls -F

Liste les fichiers en les séparant par une virgule au lieu de les présenter en colonnes. 
 $ ls -m

En complément de ''-l'', affiche le nom et le groupe des propriétaires en fonction de leur UID et de leur GID. 
 $ ls -n

Liste les fichiers en ordre alphabétique inverse. 
 $ ls -r

Liste les fichiers triés par ordre de taille décroissante. 
 $ ls -S

Liste le contenu de ''/rep'' en triant par date de modification, du plus récent au plus ancien. 
 $ ls -t /rep

Liste les fichiers par type d'extension. 
 $ ls -X

=== La commande '''mknod'''  ===

Pour créer des fichiers de caractères majuscules ou spéciaux. 
 $ mknod

=== La commande '''more'''  ===

Permet de visualiser le contenu de ''fich'' page par page. Utilisez ''Enter'' pour le faire défiler, ''q'' pour quitter.La commande ''&lt;nowiki&gt;# cat fich   more&lt;/nowiki&gt;'' donne le même résultat. 
 $ more fich

=== La commande '''mv'''  ===

Pour déplacer ou renommer un fichier. Exemple&amp;nbsp;:''&lt;nowiki&gt;# mv toto /clown/titi&lt;/nowiki&gt;'' déplacera le fichier ''toto'' dans le répertoire ''clown'' (qui doit exister) et le renommera''titi''. 
 $ mv source destination

Effectue une sauvegarde du fichier avant de le déplacer. 
 $ mv -b

Effectue le déplacement même si la cible existe déjà, et ce sans message d'avertissement. 
 $ mv -f

Demande une confirmation si des fichiers risquent d'être écrasés par le déplacement. 
 $ mv -i

=== La commande '''rm'''  ===

Supprime ''fich''. Une fois un fichier effacé, il n'est plus possible de récupérer son contenu.Il est possible de spécifier plusieurs fichiers à la commande ''rm''&amp;nbsp;: dans ce cas, ils seront tous supprimés.Pour supprimer un fichier dont le nom commence par un tiret -, tapez&amp;nbsp;:&lt;nowiki&gt;# rm -- -lenomdufichier&lt;/nowiki&gt;ou&lt;nowiki&gt;# rm ./-lenomdufichier&lt;/nowiki&gt; 
 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 
 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 
 $ rm -i

=== La commande '''slocate'''  ===

Pour afficher la liste des fichiers dont le nom contient le mot ''couic''. La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 
 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe. 

=== La commande '''tac'''  ===

Pour afficher le contenu de ''fich'' à l'écran en commençant par le bas. 
 $ tac fich

=== La commande '''tail'''  ===

Pour afficher les 10 dernières lignes de ''fich''. 
 $ tail fich

Pour afficher les 2 dernières lignes de ''fich''. 
 $ tail -2 fich

=== La commande '''touch'''  ===

Sert normalement à modifier la date de création et de modification du fichier, mais permet aussi de créer le fichier ''fich''. 
 $ touch fich

== Quelques &quot;trucs&quot;  ==

=== Gestion des caractères spéciaux ===
Dans un shell (quelqu'il soit), certains caractères sont dis spéciaux. En effet ils sont interprétés par le shell avant que la commande soit lancée. Les principaux son « », «&amp;», «|», «$», «&quot;», «'», «\»... (la liste n'est pas exaustive).

Si un fichier (ou un dossier) contien l'un des ses caractères dans son nom, cela peut gêner l'utilisation du shell. Pour pallier ce problème il existe 3 solutions :
* la première consiste à faire précédé cahque caractère particulier par un «\» y compris si c'est déjà un «\» (ce qui donne «\\»)
* la deuxième consiste à entourer le fichier par des «&quot;» (dans ce cas si le fichier contient de «&quot;» dans son nom, il faut les protéger avec des «\»). Cette méthode permet de protéger tout les caractères sauf «$», «{» et «}».
* la dernière méthode consiste à entourer le nom de fichier par des «'» (dans le cas où il y a déjà des «'», il faut les protéger avec un «\»

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;'] 

=== Fichier commençant par un tiret  ===
Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 
 $ rm -fichier.txt

ne marchera pas, rm croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret.&lt;br&gt;Il faut donc utiliser l'option de fin de commande symbolisée par deux tirest consécutifs --. Pour notre exemple, on tapera&amp;nbsp;: 
 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=4679&amp;start=0  probleme de nom: renommer un fichier commencant par un tiret] 

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 
 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 
 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 
 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 
 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max

[[Catégorie:commandes]]</text>
      <sha1>04ebygppik7dqinpr1bli0fu99xmd29</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>738</id>
      <parentid>578</parentid>
      <timestamp>2010-02-02T06:26:11Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="12455">{{sid}} 

----

{{Ébauche|La gestion des fichiers}}

----
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

= Gestion des fichiers  =

== Quelques commandes  ==

=== La commande '''cat'''  ===

Afficher le contenu du fichier ''fichier'' dans la console. 
 $ cat fichier

Afficher et copier le contenu de ''fichier'' dans ''fichier2''. 
 $ cat file &amp;gt; file2

Afficher le contenu d'un fichier et numérote les lignes. 
 $ cat -n fichier

=== La commande '''chgrp'''  ===

Changer le groupe auquel appartient un fichier :
 $ chgrp groupe fichier

Affecter un fichier à un groupe. Le changement de groupe peut être réalisé par n'importe quel utilisateur... '''mais''' on ne peut donner un fichier qu'à l'un des groupes dont on est membre.&lt;br&gt;L'administrateur évidemment peut affecter un fichier à n'importe quel groupe d'utilisateur.&lt;br&gt;Exemple&amp;nbsp;:''&lt;nowiki&gt;$ chgrp -R toto /home/titi/rep&lt;/nowiki&gt;'' Le répertoire ''/home/titi/rep/'' et son contenu appartiendront désormais au groupe ''toto''.

=== La commande '''cp'''  ===

Copier un/des fichier(s). Exemple&amp;nbsp;: 
 $ cp fichier /home/toto/vrac

Copier ''fichier_source'' dans ''répertoire_cible''.
 $ cp fichier_source /repertoire_cible/ 

Copier ''repertoire_source'' dans ''repertoire_cible'' sans demander de confirmation.
 $ cp -Rf repertoire_source /repertoire_cible

Attention&amp;nbsp;: Copier un fichier vers un fichier de même nom l'écrasera.&lt;br&gt;Pour copier plusieurs fichiers à la fois, pensez à utiliser les caractères génériques&amp;nbsp;? et *. 

Copier sans écrasement du fichier destination (Le fichier écrasé est sauvegardé, seul le nom du fichier d'origine est modifié (ajout d'un tilde ''~'' à la fin du nom du fichier)) :
 $ cp -b

Prévient celui qui lance la commande de l'existence d'un fichier du même nom et lui demande s'il peut ou non remplacer son contenu. Permet de ne pas écraser par inadvertance des fichiers importants :
 $ cp -i

Afficher le nom des fichiers copiés (-v = verbose ou &quot;verbeux&quot;). Pratique si vous copiez plusieurs fichiers à l'aide des caractères génériques * et/ou&amp;nbsp;? et que vous souhaitez voir le bon déroulement de la multicopie. 
 $ cp -v

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

S'utilise avec les droits &quot;root&quot;

Exemple Pour sauvegarder le MBR du disque hda dans le fichier mbr.sav :
 # dd if=/dev/hda of=mbr.sav bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 9,3797e-05 s, 5,5 MB/s

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 
 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 
 $ file fichier

=== La commande '''find'''  ===

Rechercher de ''fichier''. Ex&amp;nbsp;:''&lt;nowiki&gt;# find /home/toto/bazard -name *.jpeg&lt;/nowiki&gt;'' donne la liste des fichiers .jpeg contenu dans le répertoire''/home/toto/bazard''. Vous pouvez utiliser un caractère générique pour remplacer les lettres, il faut le faire précéder d'une barre oblique inverse&amp;nbsp;:&lt;nowiki&gt;# find / -name image\*&lt;/nowiki&gt; 
 $ find -name fichier

Afficher le résultat de la recherche, avec les chemins relatifs. 
 $ find -name fichier -print

Indiquer le type de fichier à rechercher. Remplacez ''x'' par ''f'' pour les fichiers, ''d'' pour les répertoires et ''l'' pour les liens symboliques. 
 $ find -type x -name fichier

=== La commande '''less'''  ===

Visualiser ''fichier'' page par page. Utilisez les touches directionnelles haut et bas pour faire défiler le texte, ''q'' pour quitter. 
 $ less fichier

=== La commande '''locate'''  ===

Localiser un fichier. ''Locate'' est un lien symbolique de la commande ''slocate''. Exemple&amp;nbsp;: ''&lt;nowiki&gt;# locate titi&lt;/nowiki&gt;'' affiche la liste des fichiers dont le nom contient le mot ''titi''.''Locate'' affiche tous les noms de fichiers correspondant au critère indiqué. Pour n'afficher que les fichiers autorisés, utilisez ''slocate''.''Locate'' se base sur une base de données de tous les noms de fichiers, mise à jour quotidiennement. Des fichiers récemment créés ne seront donc pas forcément référencés. Pour forcer une mise à jour manuelle, tapez&amp;nbsp;:&lt;nowiki&gt;# updatedb&lt;/nowiki&gt;ou&lt;nowiki&gt;# slocate -u&lt;/nowiki&gt; 
 $ locate x

=== La commande '''ls'''  ===

Lister les fichiers et les sous-répertoires de ''/rep''. 
 $ ls /rep

Lister tous les fichiers du répertoire indiqué, fichiers cachés (dont le nom commence par un point) compris. Si vous n'indiquez pas de répertoire, c'est le contenu du répertoire courant qui est listé. 
 $ ls -a /rep

Afficher tous les sous-répertoires de ''/rep''. 
 $ ls -d /rep

Affichage long&amp;nbsp;: droits, nom et groupe du propriétaire, taille, date de dernière modification.Si vous tapez le nom d'un lien, vous connaîtrez son fichier ou répertoire cible. 
 $ ls -l

Affiche tout le contenu du répertoire de façon détaillée. 
 $ ls -la

Liste le contenu d'un répertoire en donnant pour chaque fichier/répertoire plus de détails qu'un simple ''ls''. 
 $ ls -lh /rep

Liste les fichiers par type. Un fichier suivi d'un slash est un répertoire, un fichier suivi d'une étoile est un fichier exécutable et un fichier suivi d'un ''@'' est un lien. 
 $ ls -F

Liste les fichiers en les séparant par une virgule au lieu de les présenter en colonnes. 
 $ ls -m

En complément de ''-l'', affiche le nom et le groupe des propriétaires en fonction de leur UID et de leur GID. 
 $ ls -n

Liste les fichiers en ordre alphabétique inverse. 
 $ ls -r

Liste les fichiers triés par ordre de taille décroissante. 
 $ ls -S

Liste le contenu de ''/rep'' en triant par date de modification, du plus récent au plus ancien. 
 $ ls -t /rep

Liste les fichiers par type d'extension. 
 $ ls -X

=== La commande '''mknod'''  ===

Pour créer des fichiers de caractères majuscules ou spéciaux. 
 $ mknod

=== La commande '''more'''  ===

Permet de visualiser le contenu de ''fich'' page par page. Utilisez ''Enter'' pour le faire défiler, ''q'' pour quitter.La commande ''&lt;nowiki&gt;# cat fich   more&lt;/nowiki&gt;'' donne le même résultat. 
 $ more fich

=== La commande '''mv'''  ===

Pour déplacer ou renommer un fichier. Exemple&amp;nbsp;:''&lt;nowiki&gt;# mv toto /clown/titi&lt;/nowiki&gt;'' déplacera le fichier ''toto'' dans le répertoire ''clown'' (qui doit exister) et le renommera''titi''. 
 $ mv source destination

Effectue une sauvegarde du fichier avant de le déplacer. 
 $ mv -b

Effectue le déplacement même si la cible existe déjà, et ce sans message d'avertissement. 
 $ mv -f

Demande une confirmation si des fichiers risquent d'être écrasés par le déplacement. 
 $ mv -i

=== La commande '''rm'''  ===

Supprime ''fich''. Une fois un fichier effacé, il n'est plus possible de récupérer son contenu.Il est possible de spécifier plusieurs fichiers à la commande ''rm''&amp;nbsp;: dans ce cas, ils seront tous supprimés.Pour supprimer un fichier dont le nom commence par un tiret -, tapez&amp;nbsp;:&lt;nowiki&gt;# rm -- -lenomdufichier&lt;/nowiki&gt;ou&lt;nowiki&gt;# rm ./-lenomdufichier&lt;/nowiki&gt; 
 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 
 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 
 $ rm -i

=== La commande '''slocate'''  ===

Pour afficher la liste des fichiers dont le nom contient le mot ''couic''. La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 
 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe. 

=== La commande '''tac'''  ===

Pour afficher le contenu de ''fich'' à l'écran en commençant par le bas. 
 $ tac fich

=== La commande '''tail'''  ===

Pour afficher les 10 dernières lignes de ''fich''. 
 $ tail fich

Pour afficher les 2 dernières lignes de ''fich''. 
 $ tail -2 fich

=== La commande '''touch'''  ===

Sert normalement à modifier la date de création et de modification du fichier, mais permet aussi de créer le fichier ''fich''. 
 $ touch fich

== Quelques &quot;trucs&quot;  ==

=== Gestion des caractères spéciaux ===
Dans un shell (quelqu'il soit), certains caractères sont dis spéciaux. En effet ils sont interprétés par le shell avant que la commande soit lancée. Les principaux son « », «&amp;», «|», «$», «&quot;», «'», «\»... (la liste n'est pas exaustive).

Si un fichier (ou un dossier) contien l'un des ses caractères dans son nom, cela peut gêner l'utilisation du shell. Pour pallier ce problème il existe 3 solutions :
* la première consiste à faire précédé cahque caractère particulier par un «\» y compris si c'est déjà un «\» (ce qui donne «\\»)
* la deuxième consiste à entourer le fichier par des «&quot;» (dans ce cas si le fichier contient de «&quot;» dans son nom, il faut les protéger avec des «\»). Cette méthode permet de protéger tout les caractères sauf «$», «{» et «}».
* la dernière méthode consiste à entourer le nom de fichier par des «'» (dans le cas où il y a déjà des «'», il faut les protéger avec un «\»

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;'] 

=== Fichier commençant par un tiret  ===
Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 
 $ rm -fichier.txt

ne marchera pas, rm croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret.&lt;br&gt;Il faut donc utiliser l'option de fin de commande symbolisée par deux tirest consécutifs --. Pour notre exemple, on tapera&amp;nbsp;: 
 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=4679&amp;start=0  probleme de nom: renommer un fichier commencant par un tiret] 

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 
 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 
 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 
 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 
 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max

[[Catégorie:General]]
[[Catégorie:commandes]]</text>
      <sha1>4n13ocdzyvmx07t8icfw287rysm3ez9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>764</id>
      <parentid>738</parentid>
      <timestamp>2010-02-02T17:17:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="12432">{{sid}} 

----

{{Ébauche|La gestion des fichiers}}

----
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

= Gestion des fichiers  =

== Quelques commandes  ==

=== La commande '''cat'''  ===

Afficher le contenu du fichier ''fichier'' dans la console. 
 $ cat fichier

Afficher et copier le contenu de ''fichier'' dans ''fichier2''. 
 $ cat file &amp;gt; file2

Afficher le contenu d'un fichier et numérote les lignes. 
 $ cat -n fichier

=== La commande '''chgrp'''  ===

Changer le groupe auquel appartient un fichier :
 $ chgrp groupe fichier

Affecter un fichier à un groupe. Le changement de groupe peut être réalisé par n'importe quel utilisateur... '''mais''' on ne peut donner un fichier qu'à l'un des groupes dont on est membre.&lt;br&gt;L'administrateur évidemment peut affecter un fichier à n'importe quel groupe d'utilisateur.&lt;br&gt;Exemple&amp;nbsp;:''&lt;nowiki&gt;$ chgrp -R toto /home/titi/rep&lt;/nowiki&gt;'' Le répertoire ''/home/titi/rep/'' et son contenu appartiendront désormais au groupe ''toto''.

=== La commande '''cp'''  ===

Copier un/des fichier(s). Exemple&amp;nbsp;: 
 $ cp fichier /home/toto/vrac

Copier ''fichier_source'' dans ''répertoire_cible''.
 $ cp fichier_source /repertoire_cible/ 

Copier ''repertoire_source'' dans ''repertoire_cible'' sans demander de confirmation.
 $ cp -Rf repertoire_source /repertoire_cible

Attention&amp;nbsp;: Copier un fichier vers un fichier de même nom l'écrasera.&lt;br&gt;Pour copier plusieurs fichiers à la fois, pensez à utiliser les caractères génériques&amp;nbsp;? et *. 

Copier sans écrasement du fichier destination (Le fichier écrasé est sauvegardé, seul le nom du fichier d'origine est modifié (ajout d'un tilde ''~'' à la fin du nom du fichier)) :
 $ cp -b

Prévient celui qui lance la commande de l'existence d'un fichier du même nom et lui demande s'il peut ou non remplacer son contenu. Permet de ne pas écraser par inadvertance des fichiers importants :
 $ cp -i

Afficher le nom des fichiers copiés (-v = verbose ou &quot;verbeux&quot;). Pratique si vous copiez plusieurs fichiers à l'aide des caractères génériques * et/ou&amp;nbsp;? et que vous souhaitez voir le bon déroulement de la multicopie. 
 $ cp -v

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

S'utilise avec les droits &quot;root&quot;

Exemple Pour sauvegarder le MBR du disque hda dans le fichier mbr.sav :
 # dd if=/dev/hda of=mbr.sav bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 9,3797e-05 s, 5,5 MB/s

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 
 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 
 $ file fichier

=== La commande '''find'''  ===

Rechercher de ''fichier''. Ex&amp;nbsp;:''&lt;nowiki&gt;# find /home/toto/bazard -name *.jpeg&lt;/nowiki&gt;'' donne la liste des fichiers .jpeg contenu dans le répertoire''/home/toto/bazard''. Vous pouvez utiliser un caractère générique pour remplacer les lettres, il faut le faire précéder d'une barre oblique inverse&amp;nbsp;:&lt;nowiki&gt;# find / -name image\*&lt;/nowiki&gt; 
 $ find -name fichier

Afficher le résultat de la recherche, avec les chemins relatifs. 
 $ find -name fichier -print

Indiquer le type de fichier à rechercher. Remplacez ''x'' par ''f'' pour les fichiers, ''d'' pour les répertoires et ''l'' pour les liens symboliques. 
 $ find -type x -name fichier

=== La commande '''less'''  ===

Visualiser ''fichier'' page par page. Utilisez les touches directionnelles haut et bas pour faire défiler le texte, ''q'' pour quitter. 
 $ less fichier

=== La commande '''locate'''  ===

Localiser un fichier. ''Locate'' est un lien symbolique de la commande ''slocate''. Exemple&amp;nbsp;: ''&lt;nowiki&gt;# locate titi&lt;/nowiki&gt;'' affiche la liste des fichiers dont le nom contient le mot ''titi''.''Locate'' affiche tous les noms de fichiers correspondant au critère indiqué. Pour n'afficher que les fichiers autorisés, utilisez ''slocate''.''Locate'' se base sur une base de données de tous les noms de fichiers, mise à jour quotidiennement. Des fichiers récemment créés ne seront donc pas forcément référencés. Pour forcer une mise à jour manuelle, tapez&amp;nbsp;:&lt;nowiki&gt;# updatedb&lt;/nowiki&gt;ou&lt;nowiki&gt;# slocate -u&lt;/nowiki&gt; 
 $ locate x

=== La commande '''ls'''  ===

Lister les fichiers et les sous-répertoires de ''/rep''. 
 $ ls /rep

Lister tous les fichiers du répertoire indiqué, fichiers cachés (dont le nom commence par un point) compris. Si vous n'indiquez pas de répertoire, c'est le contenu du répertoire courant qui est listé. 
 $ ls -a /rep

Afficher tous les sous-répertoires de ''/rep''. 
 $ ls -d /rep

Affichage long&amp;nbsp;: droits, nom et groupe du propriétaire, taille, date de dernière modification.Si vous tapez le nom d'un lien, vous connaîtrez son fichier ou répertoire cible. 
 $ ls -l

Affiche tout le contenu du répertoire de façon détaillée. 
 $ ls -la

Liste le contenu d'un répertoire en donnant pour chaque fichier/répertoire plus de détails qu'un simple ''ls''. 
 $ ls -lh /rep

Liste les fichiers par type. Un fichier suivi d'un slash est un répertoire, un fichier suivi d'une étoile est un fichier exécutable et un fichier suivi d'un ''@'' est un lien. 
 $ ls -F

Liste les fichiers en les séparant par une virgule au lieu de les présenter en colonnes. 
 $ ls -m

En complément de ''-l'', affiche le nom et le groupe des propriétaires en fonction de leur UID et de leur GID. 
 $ ls -n

Liste les fichiers en ordre alphabétique inverse. 
 $ ls -r

Liste les fichiers triés par ordre de taille décroissante. 
 $ ls -S

Liste le contenu de ''/rep'' en triant par date de modification, du plus récent au plus ancien. 
 $ ls -t /rep

Liste les fichiers par type d'extension. 
 $ ls -X

=== La commande '''mknod'''  ===

Pour créer des fichiers de caractères majuscules ou spéciaux. 
 $ mknod

=== La commande '''more'''  ===

Permet de visualiser le contenu de ''fich'' page par page. Utilisez ''Enter'' pour le faire défiler, ''q'' pour quitter.La commande ''&lt;nowiki&gt;# cat fich   more&lt;/nowiki&gt;'' donne le même résultat. 
 $ more fich

=== La commande '''mv'''  ===

Pour déplacer ou renommer un fichier. Exemple&amp;nbsp;:''&lt;nowiki&gt;# mv toto /clown/titi&lt;/nowiki&gt;'' déplacera le fichier ''toto'' dans le répertoire ''clown'' (qui doit exister) et le renommera''titi''. 
 $ mv source destination

Effectue une sauvegarde du fichier avant de le déplacer. 
 $ mv -b

Effectue le déplacement même si la cible existe déjà, et ce sans message d'avertissement. 
 $ mv -f

Demande une confirmation si des fichiers risquent d'être écrasés par le déplacement. 
 $ mv -i

=== La commande '''rm'''  ===

Supprime ''fich''. Une fois un fichier effacé, il n'est plus possible de récupérer son contenu.Il est possible de spécifier plusieurs fichiers à la commande ''rm''&amp;nbsp;: dans ce cas, ils seront tous supprimés.Pour supprimer un fichier dont le nom commence par un tiret -, tapez&amp;nbsp;:&lt;nowiki&gt;# rm -- -lenomdufichier&lt;/nowiki&gt;ou&lt;nowiki&gt;# rm ./-lenomdufichier&lt;/nowiki&gt; 
 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 
 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 
 $ rm -i

=== La commande '''slocate'''  ===

Pour afficher la liste des fichiers dont le nom contient le mot ''couic''. La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 
 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe. 

=== La commande '''tac'''  ===

Pour afficher le contenu de ''fich'' à l'écran en commençant par le bas. 
 $ tac fich

=== La commande '''tail'''  ===

Pour afficher les 10 dernières lignes de ''fich''. 
 $ tail fich

Pour afficher les 2 dernières lignes de ''fich''. 
 $ tail -2 fich

=== La commande '''touch'''  ===

Sert normalement à modifier la date de création et de modification du fichier, mais permet aussi de créer le fichier ''fich''. 
 $ touch fich

== Quelques &quot;trucs&quot;  ==

=== Gestion des caractères spéciaux ===
Dans un shell (quelqu'il soit), certains caractères sont dis spéciaux. En effet ils sont interprétés par le shell avant que la commande soit lancée. Les principaux son « », «&amp;», «|», «$», «&quot;», «'», «\»... (la liste n'est pas exaustive).

Si un fichier (ou un dossier) contien l'un des ses caractères dans son nom, cela peut gêner l'utilisation du shell. Pour pallier ce problème il existe 3 solutions :
* la première consiste à faire précédé cahque caractère particulier par un «\» y compris si c'est déjà un «\» (ce qui donne «\\»)
* la deuxième consiste à entourer le fichier par des «&quot;» (dans ce cas si le fichier contient de «&quot;» dans son nom, il faut les protéger avec des «\»). Cette méthode permet de protéger tout les caractères sauf «$», «{» et «}».
* la dernière méthode consiste à entourer le nom de fichier par des «'» (dans le cas où il y a déjà des «'», il faut les protéger avec un «\»

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;'] 

=== Fichier commençant par un tiret  ===
Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 
 $ rm -fichier.txt

ne marchera pas, rm croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret.&lt;br&gt;Il faut donc utiliser l'option de fin de commande symbolisée par deux tirest consécutifs --. Pour notre exemple, on tapera&amp;nbsp;: 
 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=4679&amp;start=0  probleme de nom: renommer un fichier commencant par un tiret] 

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 
 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 
 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 
 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 
 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max

[[Catégorie:commandes]]</text>
      <sha1>04ebygppik7dqinpr1bli0fu99xmd29</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1078</id>
      <parentid>764</parentid>
      <timestamp>2010-02-11T08:34:15Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="12440">{{sid}} 

----

{{Ébauche|La gestion des fichiers}}

----
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

= Gestion des fichiers  =

== Quelques commandes  ==

=== La commande '''cat'''  ===

Afficher le contenu du fichier ''fichier'' dans la console. 
 $ cat fichier

Afficher et copier le contenu de ''fichier'' dans ''fichier2''. 
 $ cat file &amp;gt; file2

Afficher le contenu d'un fichier et numérote les lignes. 
 $ cat -n fichier

=== La commande '''chgrp'''  ===

Changer le groupe auquel appartient un fichier :
 $ chgrp groupe fichier

Affecter un fichier à un groupe. Le changement de groupe peut être réalisé par n'importe quel utilisateur... '''mais''' on ne peut donner un fichier qu'à l'un des groupes dont on est membre.&lt;br&gt;L'administrateur évidemment peut affecter un fichier à n'importe quel groupe d'utilisateur.&lt;br&gt;Exemple&amp;nbsp;:''&lt;nowiki&gt;$ chgrp -R toto /home/titi/rep&lt;/nowiki&gt;'' Le répertoire ''/home/titi/rep/'' et son contenu appartiendront désormais au groupe ''toto''.

=== La commande '''cp'''  ===

Copier un/des fichier(s). Exemple&amp;nbsp;: 
 $ cp fichier /home/toto/vrac

Copier ''fichier_source'' dans ''répertoire_cible''.
 $ cp fichier_source /repertoire_cible/ 

Copier ''repertoire_source'' dans ''repertoire_cible'' sans demander de confirmation.
 $ cp -Rf repertoire_source /repertoire_cible

Attention&amp;nbsp;: Copier un fichier vers un fichier de même nom l'écrasera.&lt;br&gt;Pour copier plusieurs fichiers à la fois, pensez à utiliser les caractères génériques&amp;nbsp;? et *. 

Copier sans écrasement du fichier destination (Le fichier écrasé est sauvegardé, seul le nom du fichier d'origine est modifié (ajout d'un tilde ''~'' à la fin du nom du fichier)) :
 $ cp -b

Prévient celui qui lance la commande de l'existence d'un fichier du même nom et lui demande s'il peut ou non remplacer son contenu. Permet de ne pas écraser par inadvertance des fichiers importants :
 $ cp -i

Afficher le nom des fichiers copiés (-v = verbose ou &quot;verbeux&quot;). Pratique si vous copiez plusieurs fichiers à l'aide des caractères génériques * et/ou&amp;nbsp;? et que vous souhaitez voir le bon déroulement de la multicopie. 
 $ cp -v

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

S'utilise avec les droits &quot;root&quot;

Exemple Pour sauvegarder le MBR du disque hda dans le fichier mbr.sav :
 # dd if=/dev/hda of=mbr.sav bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 9,3797e-05 s, 5,5 MB/s

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 
 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 
 $ file fichier

=== La commande '''find'''  ===

Rechercher de ''fichier''. Ex&amp;nbsp;:''&lt;nowiki&gt;# find /home/toto/bazard -name *.jpeg&lt;/nowiki&gt;'' donne la liste des fichiers .jpeg contenu dans le répertoire''/home/toto/bazard''. Vous pouvez utiliser un caractère générique pour remplacer les lettres, il faut le faire précéder d'une barre oblique inverse&amp;nbsp;:&lt;nowiki&gt;# find / -name image\*&lt;/nowiki&gt; 
 $ find -name fichier

Afficher le résultat de la recherche, avec les chemins relatifs. 
 $ find -name fichier -print

Indiquer le type de fichier à rechercher. Remplacez ''x'' par ''f'' pour les fichiers, ''d'' pour les répertoires et ''l'' pour les liens symboliques. 
 $ find -type x -name fichier

=== La commande '''less'''  ===

Visualiser ''fichier'' page par page. Utilisez les touches directionnelles haut et bas pour faire défiler le texte, ''q'' pour quitter. 
 $ less fichier

=== La commande '''locate'''  ===

Localiser un fichier. ''Locate'' est un lien symbolique de la commande ''slocate''. Exemple&amp;nbsp;: ''&lt;nowiki&gt;# locate titi&lt;/nowiki&gt;'' affiche la liste des fichiers dont le nom contient le mot ''titi''.''Locate'' affiche tous les noms de fichiers correspondant au critère indiqué. Pour n'afficher que les fichiers autorisés, utilisez ''slocate''.''Locate'' se base sur une base de données de tous les noms de fichiers, mise à jour quotidiennement. Des fichiers récemment créés ne seront donc pas forcément référencés. Pour forcer une mise à jour manuelle, tapez&amp;nbsp;:&lt;nowiki&gt;# updatedb&lt;/nowiki&gt;ou&lt;nowiki&gt;# slocate -u&lt;/nowiki&gt; 
 $ locate x

=== La commande '''ls'''  ===

Lister les fichiers et les sous-répertoires de ''/rep''. 
 $ ls /rep

Lister tous les fichiers du répertoire indiqué, fichiers cachés (dont le nom commence par un point) compris. Si vous n'indiquez pas de répertoire, c'est le contenu du répertoire courant qui est listé. 
 $ ls -a /rep

Afficher tous les sous-répertoires de ''/rep''. 
 $ ls -d /rep

Affichage long&amp;nbsp;: droits, nom et groupe du propriétaire, taille, date de dernière modification.Si vous tapez le nom d'un lien, vous connaîtrez son fichier ou répertoire cible. 
 $ ls -l

Affiche tout le contenu du répertoire de façon détaillée. 
 $ ls -la

Liste le contenu d'un répertoire en donnant pour chaque fichier/répertoire plus de détails qu'un simple ''ls''. 
 $ ls -lh /rep

Liste les fichiers par type. Un fichier suivi d'un slash est un répertoire, un fichier suivi d'une étoile est un fichier exécutable et un fichier suivi d'un ''@'' est un lien. 
 $ ls -F

Liste les fichiers en les séparant par une virgule au lieu de les présenter en colonnes. 
 $ ls -m

En complément de ''-l'', affiche le nom et le groupe des propriétaires en fonction de leur UID et de leur GID. 
 $ ls -n

Liste les fichiers en ordre alphabétique inverse. 
 $ ls -r

Liste les fichiers triés par ordre de taille décroissante. 
 $ ls -S

Liste le contenu de ''/rep'' en triant par date de modification, du plus récent au plus ancien. 
 $ ls -t /rep

Liste les fichiers par type d'extension. 
 $ ls -X

=== La commande '''mknod'''  ===

Pour créer des fichiers de caractères majuscules ou spéciaux. 
 $ mknod

=== La commande '''more'''  ===

Permet de visualiser le contenu de ''fich'' page par page. Utilisez ''Enter'' pour le faire défiler, ''q'' pour quitter.La commande ''&lt;nowiki&gt;# cat fich   more&lt;/nowiki&gt;'' donne le même résultat. 
 $ more fich

=== La commande '''mv'''  ===

Pour déplacer ou renommer un fichier. Exemple&amp;nbsp;:''&lt;nowiki&gt;# mv toto /clown/titi&lt;/nowiki&gt;'' déplacera le fichier ''toto'' dans le répertoire ''clown'' (qui doit exister) et le renommera''titi''. 
 $ mv source destination

Effectue une sauvegarde du fichier avant de le déplacer. 
 $ mv -b

Effectue le déplacement même si la cible existe déjà, et ce sans message d'avertissement. 
 $ mv -f

Demande une confirmation si des fichiers risquent d'être écrasés par le déplacement. 
 $ mv -i

=== La commande '''rm'''  ===

Supprime ''fich''. Une fois un fichier effacé, il n'est plus possible de récupérer son contenu.Il est possible de spécifier plusieurs fichiers à la commande ''rm''&amp;nbsp;: dans ce cas, ils seront tous supprimés.Pour supprimer un fichier dont le nom commence par un tiret -, tapez&amp;nbsp;:&lt;nowiki&gt;# rm -- -lenomdufichier&lt;/nowiki&gt;ou&lt;nowiki&gt;# rm ./-lenomdufichier&lt;/nowiki&gt; 
 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 
 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 
 $ rm -i

=== La commande '''slocate'''  ===

Pour afficher la liste des fichiers dont le nom contient le mot ''couic''. La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 
 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe. 

=== La commande '''tac'''  ===

Pour afficher le contenu de ''fich'' à l'écran en commençant par le bas. 
 $ tac fich

=== La commande '''tail'''  ===

Pour afficher les 10 dernières lignes de ''fich''. 
 $ tail fich

Pour afficher les 2 dernières lignes de ''fich''. 
 $ tail -2 fich

=== La commande '''touch'''  ===

Sert normalement à modifier la date de création et de modification du fichier, mais permet aussi de créer le fichier ''fich''. 
 $ touch fich

== Quelques &quot;trucs&quot;  ==

=== Gestion des caractères spéciaux ===
Dans un shell (quelqu'il soit), certains caractères sont dis spéciaux. En effet ils sont interprétés par le shell avant que la commande soit lancée. Les principaux son « », «&amp;», «|», «$», «&quot;», «'», «\»... (la liste n'est pas exaustive).

Si un fichier (ou un dossier) contien l'un des ses caractères dans son nom, cela peut gêner l'utilisation du shell. Pour pallier ce problème il existe 3 solutions :
* la première consiste à faire précédé cahque caractère particulier par un «\» y compris si c'est déjà un «\» (ce qui donne «\\»)
* la deuxième consiste à entourer le fichier par des «&quot;» (dans ce cas si le fichier contient de «&quot;» dans son nom, il faut les protéger avec des «\»). Cette méthode permet de protéger tout les caractères sauf «$», «{» et «}».
* la dernière méthode consiste à entourer le nom de fichier par des «'» (dans le cas où il y a déjà des «'», il faut les protéger avec un «\»

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;'] 

=== Fichier commençant par un tiret  ===
Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 
 $ rm -fichier.txt

ne marchera pas, rm croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret.&lt;br&gt;Il faut donc utiliser l'option de fin de commande symbolisée par deux tirest consécutifs --. Pour notre exemple, on tapera&amp;nbsp;: 
 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=4679&amp;start=0  probleme de nom: renommer un fichier commencant par un tiret] 

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 
 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 
 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 
 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 
 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max

[[Catégorie:Commandes de base]]</text>
      <sha1>oavxunrvup2vanowx0l8yq9gmwmahwd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1392</id>
      <parentid>1078</parentid>
      <timestamp>2010-04-13T16:31:19Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Quelques &quot;trucs&quot; */</comment>
      <text xml:space="preserve" bytes="12827">{{sid}} 

----

{{Ébauche|La gestion des fichiers}}

----
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

= Gestion des fichiers  =

== Quelques commandes  ==

=== La commande '''cat'''  ===

Afficher le contenu du fichier ''fichier'' dans la console. 
 $ cat fichier

Afficher et copier le contenu de ''fichier'' dans ''fichier2''. 
 $ cat file &amp;gt; file2

Afficher le contenu d'un fichier et numérote les lignes. 
 $ cat -n fichier

=== La commande '''chgrp'''  ===

Changer le groupe auquel appartient un fichier :
 $ chgrp groupe fichier

Affecter un fichier à un groupe. Le changement de groupe peut être réalisé par n'importe quel utilisateur... '''mais''' on ne peut donner un fichier qu'à l'un des groupes dont on est membre.&lt;br&gt;L'administrateur évidemment peut affecter un fichier à n'importe quel groupe d'utilisateur.&lt;br&gt;Exemple&amp;nbsp;:''&lt;nowiki&gt;$ chgrp -R toto /home/titi/rep&lt;/nowiki&gt;'' Le répertoire ''/home/titi/rep/'' et son contenu appartiendront désormais au groupe ''toto''.

=== La commande '''cp'''  ===

Copier un/des fichier(s). Exemple&amp;nbsp;: 
 $ cp fichier /home/toto/vrac

Copier ''fichier_source'' dans ''répertoire_cible''.
 $ cp fichier_source /repertoire_cible/ 

Copier ''repertoire_source'' dans ''repertoire_cible'' sans demander de confirmation.
 $ cp -Rf repertoire_source /repertoire_cible

Attention&amp;nbsp;: Copier un fichier vers un fichier de même nom l'écrasera.&lt;br&gt;Pour copier plusieurs fichiers à la fois, pensez à utiliser les caractères génériques&amp;nbsp;? et *. 

Copier sans écrasement du fichier destination (Le fichier écrasé est sauvegardé, seul le nom du fichier d'origine est modifié (ajout d'un tilde ''~'' à la fin du nom du fichier)) :
 $ cp -b

Prévient celui qui lance la commande de l'existence d'un fichier du même nom et lui demande s'il peut ou non remplacer son contenu. Permet de ne pas écraser par inadvertance des fichiers importants :
 $ cp -i

Afficher le nom des fichiers copiés (-v = verbose ou &quot;verbeux&quot;). Pratique si vous copiez plusieurs fichiers à l'aide des caractères génériques * et/ou&amp;nbsp;? et que vous souhaitez voir le bon déroulement de la multicopie. 
 $ cp -v

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

S'utilise avec les droits &quot;root&quot;

Exemple Pour sauvegarder le MBR du disque hda dans le fichier mbr.sav :
 # dd if=/dev/hda of=mbr.sav bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 9,3797e-05 s, 5,5 MB/s

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 
 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 
 $ file fichier

=== La commande '''find'''  ===

Rechercher de ''fichier''. Ex&amp;nbsp;:''&lt;nowiki&gt;# find /home/toto/bazard -name *.jpeg&lt;/nowiki&gt;'' donne la liste des fichiers .jpeg contenu dans le répertoire''/home/toto/bazard''. Vous pouvez utiliser un caractère générique pour remplacer les lettres, il faut le faire précéder d'une barre oblique inverse&amp;nbsp;:&lt;nowiki&gt;# find / -name image\*&lt;/nowiki&gt; 
 $ find -name fichier

Afficher le résultat de la recherche, avec les chemins relatifs. 
 $ find -name fichier -print

Indiquer le type de fichier à rechercher. Remplacez ''x'' par ''f'' pour les fichiers, ''d'' pour les répertoires et ''l'' pour les liens symboliques. 
 $ find -type x -name fichier

=== La commande '''less'''  ===

Visualiser ''fichier'' page par page. Utilisez les touches directionnelles haut et bas pour faire défiler le texte, ''q'' pour quitter. 
 $ less fichier

=== La commande '''locate'''  ===

Localiser un fichier. ''Locate'' est un lien symbolique de la commande ''slocate''. Exemple&amp;nbsp;: ''&lt;nowiki&gt;# locate titi&lt;/nowiki&gt;'' affiche la liste des fichiers dont le nom contient le mot ''titi''.''Locate'' affiche tous les noms de fichiers correspondant au critère indiqué. Pour n'afficher que les fichiers autorisés, utilisez ''slocate''.''Locate'' se base sur une base de données de tous les noms de fichiers, mise à jour quotidiennement. Des fichiers récemment créés ne seront donc pas forcément référencés. Pour forcer une mise à jour manuelle, tapez&amp;nbsp;:&lt;nowiki&gt;# updatedb&lt;/nowiki&gt;ou&lt;nowiki&gt;# slocate -u&lt;/nowiki&gt; 
 $ locate x

=== La commande '''ls'''  ===

Lister les fichiers et les sous-répertoires de ''/rep''. 
 $ ls /rep

Lister tous les fichiers du répertoire indiqué, fichiers cachés (dont le nom commence par un point) compris. Si vous n'indiquez pas de répertoire, c'est le contenu du répertoire courant qui est listé. 
 $ ls -a /rep

Afficher tous les sous-répertoires de ''/rep''. 
 $ ls -d /rep

Affichage long&amp;nbsp;: droits, nom et groupe du propriétaire, taille, date de dernière modification.Si vous tapez le nom d'un lien, vous connaîtrez son fichier ou répertoire cible. 
 $ ls -l

Affiche tout le contenu du répertoire de façon détaillée. 
 $ ls -la

Liste le contenu d'un répertoire en donnant pour chaque fichier/répertoire plus de détails qu'un simple ''ls''. 
 $ ls -lh /rep

Liste les fichiers par type. Un fichier suivi d'un slash est un répertoire, un fichier suivi d'une étoile est un fichier exécutable et un fichier suivi d'un ''@'' est un lien. 
 $ ls -F

Liste les fichiers en les séparant par une virgule au lieu de les présenter en colonnes. 
 $ ls -m

En complément de ''-l'', affiche le nom et le groupe des propriétaires en fonction de leur UID et de leur GID. 
 $ ls -n

Liste les fichiers en ordre alphabétique inverse. 
 $ ls -r

Liste les fichiers triés par ordre de taille décroissante. 
 $ ls -S

Liste le contenu de ''/rep'' en triant par date de modification, du plus récent au plus ancien. 
 $ ls -t /rep

Liste les fichiers par type d'extension. 
 $ ls -X

=== La commande '''mknod'''  ===

Pour créer des fichiers de caractères majuscules ou spéciaux. 
 $ mknod

=== La commande '''more'''  ===

Permet de visualiser le contenu de ''fich'' page par page. Utilisez ''Enter'' pour le faire défiler, ''q'' pour quitter.La commande ''&lt;nowiki&gt;# cat fich   more&lt;/nowiki&gt;'' donne le même résultat. 
 $ more fich

=== La commande '''mv'''  ===

Pour déplacer ou renommer un fichier. Exemple&amp;nbsp;:''&lt;nowiki&gt;# mv toto /clown/titi&lt;/nowiki&gt;'' déplacera le fichier ''toto'' dans le répertoire ''clown'' (qui doit exister) et le renommera''titi''. 
 $ mv source destination

Effectue une sauvegarde du fichier avant de le déplacer. 
 $ mv -b

Effectue le déplacement même si la cible existe déjà, et ce sans message d'avertissement. 
 $ mv -f

Demande une confirmation si des fichiers risquent d'être écrasés par le déplacement. 
 $ mv -i

=== La commande '''rm'''  ===

Supprime ''fich''. Une fois un fichier effacé, il n'est plus possible de récupérer son contenu.Il est possible de spécifier plusieurs fichiers à la commande ''rm''&amp;nbsp;: dans ce cas, ils seront tous supprimés.Pour supprimer un fichier dont le nom commence par un tiret -, tapez&amp;nbsp;:&lt;nowiki&gt;# rm -- -lenomdufichier&lt;/nowiki&gt;ou&lt;nowiki&gt;# rm ./-lenomdufichier&lt;/nowiki&gt; 
 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 
 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 
 $ rm -i

=== La commande '''slocate'''  ===

Pour afficher la liste des fichiers dont le nom contient le mot ''couic''. La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 
 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe. 

=== La commande '''tac'''  ===

Pour afficher le contenu de ''fich'' à l'écran en commençant par le bas. 
 $ tac fich

=== La commande '''tail'''  ===

Pour afficher les 10 dernières lignes de ''fich''. 
 $ tail fich

Pour afficher les 2 dernières lignes de ''fich''. 
 $ tail -2 fich

=== La commande '''touch'''  ===

Sert normalement à modifier la date de création et de modification du fichier, mais permet aussi de créer le fichier ''fich''. 
 $ touch fich

== Quelques &quot;trucs&quot;  ==

=== Gestion des caractères spéciaux ===
Dans un shell (quelqu'il soit), certains caractères sont dis spéciaux. En effet ils sont interprétés par le shell avant que la commande soit lancée. Les principaux son « », «&amp;», «|», «$», «&quot;», «'», «\»... (la liste n'est pas exaustive).

Si un fichier (ou un dossier) contien l'un des ses caractères dans son nom, cela peut gêner l'utilisation du shell. Pour pallier ce problème il existe 3 solutions :
* la première consiste à faire précédé cahque caractère particulier par un «\» y compris si c'est déjà un «\» (ce qui donne «\\»)
* la deuxième consiste à entourer le fichier par des «&quot;» (dans ce cas si le fichier contient de «&quot;» dans son nom, il faut les protéger avec des «\»). Cette méthode permet de protéger tout les caractères sauf «$», «{» et «}».
* la dernière méthode consiste à entourer le nom de fichier par des «'» (dans le cas où il y a déjà des «'», il faut les protéger avec un «\»

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;'] 

=== Epurer un fichier de ses lignes commentées ===

La commande ci-dessous écrira un nouveau fichier (fichier_sans_commentaires) à partir de &quot;fichier&quot; en enlevant les lignes commentées (commençant par #) :

 grep -v &quot;^#&quot; fichier | grep -v &quot;^$&quot; &gt; fichier_sans_commentaires

[http://forum.debian-fr.org/viewtopic.php?p=269266#p269266 Epurer un fichiers des lignes commençant par #]

=== Fichier commençant par un tiret  ===
Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 
 $ rm -fichier.txt

ne marchera pas, rm croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret.&lt;br&gt;Il faut donc utiliser l'option de fin de commande symbolisée par deux tirest consécutifs --. Pour notre exemple, on tapera&amp;nbsp;: 
 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=4679&amp;start=0  probleme de nom: renommer un fichier commencant par un tiret] 

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 
 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 
 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 
 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 
 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max

[[Catégorie:Commandes de base]]</text>
      <sha1>00615ybsr8u2jsxc1uytwnvzxrern5u</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1550</id>
      <parentid>1392</parentid>
      <timestamp>2010-05-30T04:12:28Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="14140">{{sid}} 

----

{{Ébauche|La gestion des fichiers}}

----
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

= Gestion des fichiers  =

== Quelques commandes  ==

=== La commande '''cat'''  ===

Afficher le contenu du fichier ''fichier'' dans la console. 
 $ cat fichier

Afficher et copier le contenu de ''fichier'' dans ''fichier2''. 
 $ cat file &amp;gt; file2

Afficher le contenu d'un fichier et numérote les lignes. 
 $ cat -n fichier

=== La commande '''chgrp'''  ===

Changer le groupe auquel appartient un fichier :
 $ chgrp groupe fichier

Affecter un fichier à un groupe. Le changement de groupe peut être réalisé par n'importe quel utilisateur... '''mais''' on ne peut donner un fichier qu'à l'un des groupes dont on est membre.&lt;br&gt;L'administrateur évidemment peut affecter un fichier à n'importe quel groupe d'utilisateur.&lt;br&gt;Exemple&amp;nbsp;:''&lt;nowiki&gt;$ chgrp -R toto /home/titi/rep&lt;/nowiki&gt;'' Le répertoire ''/home/titi/rep/'' et son contenu appartiendront désormais au groupe ''toto''.

=== La commande '''cp'''  ===

Copier un/des fichier(s). Exemple&amp;nbsp;: 
 $ cp fichier /home/toto/vrac

Copier ''fichier_source'' dans ''répertoire_cible''.
 $ cp fichier_source /repertoire_cible/ 

Copier ''repertoire_source'' dans ''repertoire_cible'' sans demander de confirmation.
 $ cp -Rf repertoire_source /repertoire_cible

Attention&amp;nbsp;: Copier un fichier vers un fichier de même nom l'écrasera.&lt;br&gt;Pour copier plusieurs fichiers à la fois, pensez à utiliser les caractères génériques&amp;nbsp;? et *. 

Copier sans écrasement du fichier destination (Le fichier écrasé est sauvegardé, seul le nom du fichier d'origine est modifié (ajout d'un tilde ''~'' à la fin du nom du fichier)) :
 $ cp -b

Prévient celui qui lance la commande de l'existence d'un fichier du même nom et lui demande s'il peut ou non remplacer son contenu. Permet de ne pas écraser par inadvertance des fichiers importants :
 $ cp -i

Afficher le nom des fichiers copiés (-v = verbose ou &quot;verbeux&quot;). Pratique si vous copiez plusieurs fichiers à l'aide des caractères génériques * et/ou&amp;nbsp;? et que vous souhaitez voir le bon déroulement de la multicopie. 
 $ cp -v

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

S'utilise avec les droits &quot;root&quot;

Exemple Pour sauvegarder le MBR du disque hda dans le fichier mbr.sav :
 # dd if=/dev/hda of=mbr.sav bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 9,3797e-05 s, 5,5 MB/s

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 
 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 
 $ file fichier

=== La commande '''find'''  ===

Rechercher de ''fichier''. Ex&amp;nbsp;:''&lt;nowiki&gt;# find /home/toto/bazard -name *.jpeg&lt;/nowiki&gt;'' donne la liste des fichiers .jpeg contenu dans le répertoire''/home/toto/bazard''. Vous pouvez utiliser un caractère générique pour remplacer les lettres, il faut le faire précéder d'une barre oblique inverse&amp;nbsp;:&lt;nowiki&gt;# find / -name image\*&lt;/nowiki&gt; 
 $ find -name fichier

Afficher le résultat de la recherche, avec les chemins relatifs. 
 $ find -name fichier -print

Indiquer le type de fichier à rechercher. Remplacez ''x'' par ''f'' pour les fichiers, ''d'' pour les répertoires et ''l'' pour les liens symboliques. 
 $ find -type x -name fichier

=== La commande '''less'''  ===

Visualiser ''fichier'' page par page. Utilisez les touches directionnelles haut et bas pour faire défiler le texte, ''q'' pour quitter. 
 $ less fichier

=== La commande '''locate'''  ===

Localiser un fichier. ''Locate'' est un lien symbolique de la commande ''slocate''. Exemple&amp;nbsp;: ''&lt;nowiki&gt;# locate titi&lt;/nowiki&gt;'' affiche la liste des fichiers dont le nom contient le mot ''titi''.''Locate'' affiche tous les noms de fichiers correspondant au critère indiqué. Pour n'afficher que les fichiers autorisés, utilisez ''slocate''.''Locate'' se base sur une base de données de tous les noms de fichiers, mise à jour quotidiennement. Des fichiers récemment créés ne seront donc pas forcément référencés. Pour forcer une mise à jour manuelle, tapez&amp;nbsp;:&lt;nowiki&gt;# updatedb&lt;/nowiki&gt;ou&lt;nowiki&gt;# slocate -u&lt;/nowiki&gt; 
 $ locate x

=== La commande '''ls'''  ===

Lister les fichiers et les sous-répertoires de ''/rep''. 
 $ ls /rep

Lister tous les fichiers du répertoire indiqué, fichiers cachés (dont le nom commence par un point) compris. Si vous n'indiquez pas de répertoire, c'est le contenu du répertoire courant qui est listé. 
 $ ls -a /rep

Afficher tous les sous-répertoires de ''/rep''. 
 $ ls -d /rep

Affichage long&amp;nbsp;: droits, nom et groupe du propriétaire, taille, date de dernière modification.Si vous tapez le nom d'un lien, vous connaîtrez son fichier ou répertoire cible. 
 $ ls -l

Affiche tout le contenu du répertoire de façon détaillée. 
 $ ls -la

Liste le contenu d'un répertoire en donnant pour chaque fichier/répertoire plus de détails qu'un simple ''ls''. 
 $ ls -lh /rep

Liste les fichiers par type. Un fichier suivi d'un slash est un répertoire, un fichier suivi d'une étoile est un fichier exécutable et un fichier suivi d'un ''@'' est un lien. 
 $ ls -F

Liste les fichiers en les séparant par une virgule au lieu de les présenter en colonnes. 
 $ ls -m

En complément de ''-l'', affiche le nom et le groupe des propriétaires en fonction de leur UID et de leur GID. 
 $ ls -n

Liste les fichiers en ordre alphabétique inverse. 
 $ ls -r

Liste les fichiers triés par ordre de taille décroissante. 
 $ ls -S

Liste le contenu de ''/rep'' en triant par date de modification, du plus récent au plus ancien. 
 $ ls -t /rep

Liste les fichiers par type d'extension. 
 $ ls -X

=== La commande '''mknod'''  ===

Pour créer des fichiers de caractères majuscules ou spéciaux. 
 $ mknod

=== La commande '''more'''  ===

Permet de visualiser le contenu de ''fich'' page par page. Utilisez ''Enter'' pour le faire défiler, ''q'' pour quitter.La commande ''&lt;nowiki&gt;# cat fich   more&lt;/nowiki&gt;'' donne le même résultat. 
 $ more fich

=== La commande '''mv'''  ===

Pour déplacer ou renommer un fichier. Exemple&amp;nbsp;:''&lt;nowiki&gt;# mv toto /clown/titi&lt;/nowiki&gt;'' déplacera le fichier ''toto'' dans le répertoire ''clown'' (qui doit exister) et le renommera''titi''. 
 $ mv source destination

Effectue une sauvegarde du fichier avant de le déplacer. 
 $ mv -b

Effectue le déplacement même si la cible existe déjà, et ce sans message d'avertissement. 
 $ mv -f

Demande une confirmation si des fichiers risquent d'être écrasés par le déplacement. 
 $ mv -i

=== La commande '''rm'''  ===

Supprime ''fich''. Une fois un fichier effacé, il n'est plus possible de récupérer son contenu.Il est possible de spécifier plusieurs fichiers à la commande ''rm''&amp;nbsp;: dans ce cas, ils seront tous supprimés.Pour supprimer un fichier dont le nom commence par un tiret -, tapez&amp;nbsp;:&lt;nowiki&gt;# rm -- -lenomdufichier&lt;/nowiki&gt;ou&lt;nowiki&gt;# rm ./-lenomdufichier&lt;/nowiki&gt; 
 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 
 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 
 $ rm -i

=== La commande '''shred''' ===

Extrait du man : Récrire sur les FICHIERs indiqués, de façon répétée, afin de rendre difficile toute récupération des données, même à l'aide de matériel coûteux.
Cette commande est très pratique pour rendre illisible des fichiers que vous jugez &quot;sensibles&quot; !

 $ cat mon_fichier_top_secret
 Top secret - Personne ne doir avoir accès à ce fichier !
 $ shred -fvz -n 10 mon_fichier_top_secret
 shred: mon_fichier_top_secret : passe 1/11 (random)...
 shred: mon_fichier_top_secret : passe 2/11 (ffffff)...
 shred: mon_fichier_top_secret : passe 3/11 (999999)...
 shred: mon_fichier_top_secret : passe 4/11 (222222)...
 shred: mon_fichier_top_secret : passe 5/11 (000000)...
 shred: mon_fichier_top_secret : passe 6/11 (random)...
 shred: mon_fichier_top_secret : passe 7/11 (aaaaaa)...
 shred: mon_fichier_top_secret : passe 8/11 (111111)...
 shred: mon_fichier_top_secret : passe 9/11 (555555)...
 shred: mon_fichier_top_secret : passe 10/11 (random)...
 shred: mon_fichier_top_secret : passe 11/11 (000000)...
 $ cat mon_fichier_top_secret
 $ 

Voyez le man pour l'explication des option utilisées

Et comme tout est fichier, vous pouvez utiliser cette commande pour [[remettre à zéro un disque dur|effacer (et accessoirement tester) un disque dur]]

=== La commande '''slocate'''  ===

Pour afficher la liste des fichiers dont le nom contient le mot ''couic''. La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 
 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe. 

=== La commande '''tac'''  ===

Pour afficher le contenu de ''fich'' à l'écran en commençant par le bas. 
 $ tac fich

=== La commande '''tail'''  ===

Pour afficher les 10 dernières lignes de ''fich''. 
 $ tail fich

Pour afficher les 2 dernières lignes de ''fich''. 
 $ tail -2 fich

=== La commande '''touch'''  ===

Sert normalement à modifier la date de création et de modification du fichier, mais permet aussi de créer le fichier ''fich''. 
 $ touch fich

== Quelques &quot;trucs&quot;  ==

=== Gestion des caractères spéciaux ===
Dans un shell (quelqu'il soit), certains caractères sont dis spéciaux. En effet ils sont interprétés par le shell avant que la commande soit lancée. Les principaux son « », «&amp;», «|», «$», «&quot;», «'», «\»... (la liste n'est pas exaustive).

Si un fichier (ou un dossier) contien l'un des ses caractères dans son nom, cela peut gêner l'utilisation du shell. Pour pallier ce problème il existe 3 solutions :
* la première consiste à faire précédé cahque caractère particulier par un «\» y compris si c'est déjà un «\» (ce qui donne «\\»)
* la deuxième consiste à entourer le fichier par des «&quot;» (dans ce cas si le fichier contient de «&quot;» dans son nom, il faut les protéger avec des «\»). Cette méthode permet de protéger tout les caractères sauf «$», «{» et «}».
* la dernière méthode consiste à entourer le nom de fichier par des «'» (dans le cas où il y a déjà des «'», il faut les protéger avec un «\»

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;'] 

=== Epurer un fichier de ses lignes commentées ===

La commande ci-dessous écrira un nouveau fichier (fichier_sans_commentaires) à partir de &quot;fichier&quot; en enlevant les lignes commentées (commençant par #) :

 grep -v &quot;^#&quot; fichier | grep -v &quot;^$&quot; &gt; fichier_sans_commentaires

[http://forum.debian-fr.org/viewtopic.php?p=269266#p269266 Epurer un fichiers des lignes commençant par #]

=== Fichier commençant par un tiret  ===
Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 
 $ rm -fichier.txt

ne marchera pas, rm croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret.&lt;br&gt;Il faut donc utiliser l'option de fin de commande symbolisée par deux tirest consécutifs --. Pour notre exemple, on tapera&amp;nbsp;: 
 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=4679&amp;start=0  probleme de nom: renommer un fichier commencant par un tiret] 

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 
 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 
 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 
 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 
 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max

[[Catégorie:Commandes de base]]</text>
      <sha1>66io0527yqgzd0ws6scfvyk9a0lp6w4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1708</id>
      <parentid>1550</parentid>
      <timestamp>2010-07-26T09:57:16Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <comment>/* La commande shred */</comment>
      <text xml:space="preserve" bytes="14180">{{sid}} 

----

{{Ébauche|La gestion des fichiers}}

----
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

= Gestion des fichiers  =

== Quelques commandes  ==

=== La commande '''cat'''  ===

Afficher le contenu du fichier ''fichier'' dans la console. 
 $ cat fichier

Afficher et copier le contenu de ''fichier'' dans ''fichier2''. 
 $ cat file &amp;gt; file2

Afficher le contenu d'un fichier et numérote les lignes. 
 $ cat -n fichier

=== La commande '''chgrp'''  ===

Changer le groupe auquel appartient un fichier :
 $ chgrp groupe fichier

Affecter un fichier à un groupe. Le changement de groupe peut être réalisé par n'importe quel utilisateur... '''mais''' on ne peut donner un fichier qu'à l'un des groupes dont on est membre.&lt;br&gt;L'administrateur évidemment peut affecter un fichier à n'importe quel groupe d'utilisateur.&lt;br&gt;Exemple&amp;nbsp;:''&lt;nowiki&gt;$ chgrp -R toto /home/titi/rep&lt;/nowiki&gt;'' Le répertoire ''/home/titi/rep/'' et son contenu appartiendront désormais au groupe ''toto''.

=== La commande '''cp'''  ===

Copier un/des fichier(s). Exemple&amp;nbsp;: 
 $ cp fichier /home/toto/vrac

Copier ''fichier_source'' dans ''répertoire_cible''.
 $ cp fichier_source /repertoire_cible/ 

Copier ''repertoire_source'' dans ''repertoire_cible'' sans demander de confirmation.
 $ cp -Rf repertoire_source /repertoire_cible

Attention&amp;nbsp;: Copier un fichier vers un fichier de même nom l'écrasera.&lt;br&gt;Pour copier plusieurs fichiers à la fois, pensez à utiliser les caractères génériques&amp;nbsp;? et *. 

Copier sans écrasement du fichier destination (Le fichier écrasé est sauvegardé, seul le nom du fichier d'origine est modifié (ajout d'un tilde ''~'' à la fin du nom du fichier)) :
 $ cp -b

Prévient celui qui lance la commande de l'existence d'un fichier du même nom et lui demande s'il peut ou non remplacer son contenu. Permet de ne pas écraser par inadvertance des fichiers importants :
 $ cp -i

Afficher le nom des fichiers copiés (-v = verbose ou &quot;verbeux&quot;). Pratique si vous copiez plusieurs fichiers à l'aide des caractères génériques * et/ou&amp;nbsp;? et que vous souhaitez voir le bon déroulement de la multicopie. 
 $ cp -v

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

S'utilise avec les droits &quot;root&quot;

Exemple Pour sauvegarder le MBR du disque hda dans le fichier mbr.sav :
 # dd if=/dev/hda of=mbr.sav bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 9,3797e-05 s, 5,5 MB/s

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 
 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 
 $ file fichier

=== La commande '''find'''  ===

Rechercher de ''fichier''. Ex&amp;nbsp;:''&lt;nowiki&gt;# find /home/toto/bazard -name *.jpeg&lt;/nowiki&gt;'' donne la liste des fichiers .jpeg contenu dans le répertoire''/home/toto/bazard''. Vous pouvez utiliser un caractère générique pour remplacer les lettres, il faut le faire précéder d'une barre oblique inverse&amp;nbsp;:&lt;nowiki&gt;# find / -name image\*&lt;/nowiki&gt; 
 $ find -name fichier

Afficher le résultat de la recherche, avec les chemins relatifs. 
 $ find -name fichier -print

Indiquer le type de fichier à rechercher. Remplacez ''x'' par ''f'' pour les fichiers, ''d'' pour les répertoires et ''l'' pour les liens symboliques. 
 $ find -type x -name fichier

=== La commande '''less'''  ===

Visualiser ''fichier'' page par page. Utilisez les touches directionnelles haut et bas pour faire défiler le texte, ''q'' pour quitter. 
 $ less fichier

=== La commande '''locate'''  ===

Localiser un fichier. ''Locate'' est un lien symbolique de la commande ''slocate''. Exemple&amp;nbsp;: ''&lt;nowiki&gt;# locate titi&lt;/nowiki&gt;'' affiche la liste des fichiers dont le nom contient le mot ''titi''.''Locate'' affiche tous les noms de fichiers correspondant au critère indiqué. Pour n'afficher que les fichiers autorisés, utilisez ''slocate''.''Locate'' se base sur une base de données de tous les noms de fichiers, mise à jour quotidiennement. Des fichiers récemment créés ne seront donc pas forcément référencés. Pour forcer une mise à jour manuelle, tapez&amp;nbsp;:&lt;nowiki&gt;# updatedb&lt;/nowiki&gt;ou&lt;nowiki&gt;# slocate -u&lt;/nowiki&gt; 
 $ locate x

=== La commande '''ls'''  ===

Lister les fichiers et les sous-répertoires de ''/rep''. 
 $ ls /rep

Lister tous les fichiers du répertoire indiqué, fichiers cachés (dont le nom commence par un point) compris. Si vous n'indiquez pas de répertoire, c'est le contenu du répertoire courant qui est listé. 
 $ ls -a /rep

Afficher tous les sous-répertoires de ''/rep''. 
 $ ls -d /rep

Affichage long&amp;nbsp;: droits, nom et groupe du propriétaire, taille, date de dernière modification.Si vous tapez le nom d'un lien, vous connaîtrez son fichier ou répertoire cible. 
 $ ls -l

Affiche tout le contenu du répertoire de façon détaillée. 
 $ ls -la

Liste le contenu d'un répertoire en donnant pour chaque fichier/répertoire plus de détails qu'un simple ''ls''. 
 $ ls -lh /rep

Liste les fichiers par type. Un fichier suivi d'un slash est un répertoire, un fichier suivi d'une étoile est un fichier exécutable et un fichier suivi d'un ''@'' est un lien. 
 $ ls -F

Liste les fichiers en les séparant par une virgule au lieu de les présenter en colonnes. 
 $ ls -m

En complément de ''-l'', affiche le nom et le groupe des propriétaires en fonction de leur UID et de leur GID. 
 $ ls -n

Liste les fichiers en ordre alphabétique inverse. 
 $ ls -r

Liste les fichiers triés par ordre de taille décroissante. 
 $ ls -S

Liste le contenu de ''/rep'' en triant par date de modification, du plus récent au plus ancien. 
 $ ls -t /rep

Liste les fichiers par type d'extension. 
 $ ls -X

=== La commande '''mknod'''  ===

Pour créer des fichiers de caractères majuscules ou spéciaux. 
 $ mknod

=== La commande '''more'''  ===

Permet de visualiser le contenu de ''fich'' page par page. Utilisez ''Enter'' pour le faire défiler, ''q'' pour quitter.La commande ''&lt;nowiki&gt;# cat fich   more&lt;/nowiki&gt;'' donne le même résultat. 
 $ more fich

=== La commande '''mv'''  ===

Pour déplacer ou renommer un fichier. Exemple&amp;nbsp;:''&lt;nowiki&gt;# mv toto /clown/titi&lt;/nowiki&gt;'' déplacera le fichier ''toto'' dans le répertoire ''clown'' (qui doit exister) et le renommera''titi''. 
 $ mv source destination

Effectue une sauvegarde du fichier avant de le déplacer. 
 $ mv -b

Effectue le déplacement même si la cible existe déjà, et ce sans message d'avertissement. 
 $ mv -f

Demande une confirmation si des fichiers risquent d'être écrasés par le déplacement. 
 $ mv -i

=== La commande '''rm'''  ===

Supprime ''fich''. Une fois un fichier effacé, il n'est plus possible de récupérer son contenu.Il est possible de spécifier plusieurs fichiers à la commande ''rm''&amp;nbsp;: dans ce cas, ils seront tous supprimés.Pour supprimer un fichier dont le nom commence par un tiret -, tapez&amp;nbsp;:&lt;nowiki&gt;# rm -- -lenomdufichier&lt;/nowiki&gt;ou&lt;nowiki&gt;# rm ./-lenomdufichier&lt;/nowiki&gt; 
 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 
 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 
 $ rm -i

=== La commande '''shred''' ===

Extrait du man : Réécrire sur les FICHIERs indiqués, de façon répétée, afin de rendre difficile toute récupération des données, même à l'aide de matériel coûteux.
Cette commande est très pratique pour rendre illisible des fichiers que vous jugez &quot;sensibles&quot; !
Elle fait partie du paque &quot;coreutils&quot;

 $ cat mon_fichier_top_secret
 Top secret - Personne ne doir avoir accès à ce fichier !
 $ shred -fvz -n 10 mon_fichier_top_secret
 shred: mon_fichier_top_secret : passe 1/11 (random)...
 shred: mon_fichier_top_secret : passe 2/11 (ffffff)...
 shred: mon_fichier_top_secret : passe 3/11 (999999)...
 shred: mon_fichier_top_secret : passe 4/11 (222222)...
 shred: mon_fichier_top_secret : passe 5/11 (000000)...
 shred: mon_fichier_top_secret : passe 6/11 (random)...
 shred: mon_fichier_top_secret : passe 7/11 (aaaaaa)...
 shred: mon_fichier_top_secret : passe 8/11 (111111)...
 shred: mon_fichier_top_secret : passe 9/11 (555555)...
 shred: mon_fichier_top_secret : passe 10/11 (random)...
 shred: mon_fichier_top_secret : passe 11/11 (000000)...
 $ cat mon_fichier_top_secret
 $ 

Voyez le man pour l'explication des option utilisées

Et comme tout est fichier, vous pouvez utiliser cette commande pour [[remettre à zéro un disque dur|effacer (et accessoirement tester) un disque dur]]

=== La commande '''slocate'''  ===

Pour afficher la liste des fichiers dont le nom contient le mot ''couic''. La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 
 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe. 

=== La commande '''tac'''  ===

Pour afficher le contenu de ''fich'' à l'écran en commençant par le bas. 
 $ tac fich

=== La commande '''tail'''  ===

Pour afficher les 10 dernières lignes de ''fich''. 
 $ tail fich

Pour afficher les 2 dernières lignes de ''fich''. 
 $ tail -2 fich

=== La commande '''touch'''  ===

Sert normalement à modifier la date de création et de modification du fichier, mais permet aussi de créer le fichier ''fich''. 
 $ touch fich

== Quelques &quot;trucs&quot;  ==

=== Gestion des caractères spéciaux ===
Dans un shell (quelqu'il soit), certains caractères sont dis spéciaux. En effet ils sont interprétés par le shell avant que la commande soit lancée. Les principaux son « », «&amp;», «|», «$», «&quot;», «'», «\»... (la liste n'est pas exaustive).

Si un fichier (ou un dossier) contien l'un des ses caractères dans son nom, cela peut gêner l'utilisation du shell. Pour pallier ce problème il existe 3 solutions :
* la première consiste à faire précédé cahque caractère particulier par un «\» y compris si c'est déjà un «\» (ce qui donne «\\»)
* la deuxième consiste à entourer le fichier par des «&quot;» (dans ce cas si le fichier contient de «&quot;» dans son nom, il faut les protéger avec des «\»). Cette méthode permet de protéger tout les caractères sauf «$», «{» et «}».
* la dernière méthode consiste à entourer le nom de fichier par des «'» (dans le cas où il y a déjà des «'», il faut les protéger avec un «\»

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;'] 

=== Epurer un fichier de ses lignes commentées ===

La commande ci-dessous écrira un nouveau fichier (fichier_sans_commentaires) à partir de &quot;fichier&quot; en enlevant les lignes commentées (commençant par #) :

 grep -v &quot;^#&quot; fichier | grep -v &quot;^$&quot; &gt; fichier_sans_commentaires

[http://forum.debian-fr.org/viewtopic.php?p=269266#p269266 Epurer un fichiers des lignes commençant par #]

=== Fichier commençant par un tiret  ===
Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 
 $ rm -fichier.txt

ne marchera pas, rm croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret.&lt;br&gt;Il faut donc utiliser l'option de fin de commande symbolisée par deux tirest consécutifs --. Pour notre exemple, on tapera&amp;nbsp;: 
 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=4679&amp;start=0  probleme de nom: renommer un fichier commencant par un tiret] 

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 
 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 
 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 
 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 
 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max

[[Catégorie:Commandes de base]]</text>
      <sha1>5tnx792g3qabore0z1imh1dakw0bwoe</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2512</id>
      <parentid>1708</parentid>
      <timestamp>2010-12-17T07:50:01Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* La commande less */</comment>
      <text xml:space="preserve" bytes="14399">{{sid}} 

----

{{Ébauche|La gestion des fichiers}}

----
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

= Gestion des fichiers  =

== Quelques commandes  ==

=== La commande '''cat'''  ===

Afficher le contenu du fichier ''fichier'' dans la console. 
 $ cat fichier

Afficher et copier le contenu de ''fichier'' dans ''fichier2''. 
 $ cat file &amp;gt; file2

Afficher le contenu d'un fichier et numérote les lignes. 
 $ cat -n fichier

=== La commande '''chgrp'''  ===

Changer le groupe auquel appartient un fichier :
 $ chgrp groupe fichier

Affecter un fichier à un groupe. Le changement de groupe peut être réalisé par n'importe quel utilisateur... '''mais''' on ne peut donner un fichier qu'à l'un des groupes dont on est membre.&lt;br&gt;L'administrateur évidemment peut affecter un fichier à n'importe quel groupe d'utilisateur.&lt;br&gt;Exemple&amp;nbsp;:''&lt;nowiki&gt;$ chgrp -R toto /home/titi/rep&lt;/nowiki&gt;'' Le répertoire ''/home/titi/rep/'' et son contenu appartiendront désormais au groupe ''toto''.

=== La commande '''cp'''  ===

Copier un/des fichier(s). Exemple&amp;nbsp;: 
 $ cp fichier /home/toto/vrac

Copier ''fichier_source'' dans ''répertoire_cible''.
 $ cp fichier_source /repertoire_cible/ 

Copier ''repertoire_source'' dans ''repertoire_cible'' sans demander de confirmation.
 $ cp -Rf repertoire_source /repertoire_cible

Attention&amp;nbsp;: Copier un fichier vers un fichier de même nom l'écrasera.&lt;br&gt;Pour copier plusieurs fichiers à la fois, pensez à utiliser les caractères génériques&amp;nbsp;? et *. 

Copier sans écrasement du fichier destination (Le fichier écrasé est sauvegardé, seul le nom du fichier d'origine est modifié (ajout d'un tilde ''~'' à la fin du nom du fichier)) :
 $ cp -b

Prévient celui qui lance la commande de l'existence d'un fichier du même nom et lui demande s'il peut ou non remplacer son contenu. Permet de ne pas écraser par inadvertance des fichiers importants :
 $ cp -i

Afficher le nom des fichiers copiés (-v = verbose ou &quot;verbeux&quot;). Pratique si vous copiez plusieurs fichiers à l'aide des caractères génériques * et/ou&amp;nbsp;? et que vous souhaitez voir le bon déroulement de la multicopie. 
 $ cp -v

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

S'utilise avec les droits &quot;root&quot;

Exemple Pour sauvegarder le MBR du disque hda dans le fichier mbr.sav :
 # dd if=/dev/hda of=mbr.sav bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 9,3797e-05 s, 5,5 MB/s

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 
 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 
 $ file fichier

=== La commande '''find'''  ===

Rechercher de ''fichier''. Ex&amp;nbsp;:''&lt;nowiki&gt;# find /home/toto/bazard -name *.jpeg&lt;/nowiki&gt;'' donne la liste des fichiers .jpeg contenu dans le répertoire''/home/toto/bazard''. Vous pouvez utiliser un caractère générique pour remplacer les lettres, il faut le faire précéder d'une barre oblique inverse&amp;nbsp;:&lt;nowiki&gt;# find / -name image\*&lt;/nowiki&gt; 
 $ find -name fichier

Afficher le résultat de la recherche, avec les chemins relatifs. 
 $ find -name fichier -print

Indiquer le type de fichier à rechercher. Remplacez ''x'' par ''f'' pour les fichiers, ''d'' pour les répertoires et ''l'' pour les liens symboliques. 
 $ find -type x -name fichier

=== La commande '''less'''  ===

Visualiser ''fichier'' page par page. Utilisez les touches directionnelles haut et bas pour faire défiler le texte, ''q'' pour quitter. 
 $ less fichier

=== La command '''ln''' ===

Créer un lien symbolique (un alias ou un raccourci) vers un programme ou un fichier.

 ln -s &lt;chemin_complet/fichier ou répertoire de destination&gt; &lt;chemin_complet/nom du lien symbolique&gt;

=== La commande '''locate'''  ===

Localiser un fichier. ''Locate'' est un lien symbolique de la commande ''slocate''. Exemple&amp;nbsp;: ''&lt;nowiki&gt;# locate titi&lt;/nowiki&gt;'' affiche la liste des fichiers dont le nom contient le mot ''titi''.''Locate'' affiche tous les noms de fichiers correspondant au critère indiqué. Pour n'afficher que les fichiers autorisés, utilisez ''slocate''.''Locate'' se base sur une base de données de tous les noms de fichiers, mise à jour quotidiennement. Des fichiers récemment créés ne seront donc pas forcément référencés. Pour forcer une mise à jour manuelle, tapez&amp;nbsp;:&lt;nowiki&gt;# updatedb&lt;/nowiki&gt;ou&lt;nowiki&gt;# slocate -u&lt;/nowiki&gt; 
 $ locate x

=== La commande '''ls'''  ===

Lister les fichiers et les sous-répertoires de ''/rep''. 
 $ ls /rep

Lister tous les fichiers du répertoire indiqué, fichiers cachés (dont le nom commence par un point) compris. Si vous n'indiquez pas de répertoire, c'est le contenu du répertoire courant qui est listé. 
 $ ls -a /rep

Afficher tous les sous-répertoires de ''/rep''. 
 $ ls -d /rep

Affichage long&amp;nbsp;: droits, nom et groupe du propriétaire, taille, date de dernière modification.Si vous tapez le nom d'un lien, vous connaîtrez son fichier ou répertoire cible. 
 $ ls -l

Affiche tout le contenu du répertoire de façon détaillée. 
 $ ls -la

Liste le contenu d'un répertoire en donnant pour chaque fichier/répertoire plus de détails qu'un simple ''ls''. 
 $ ls -lh /rep

Liste les fichiers par type. Un fichier suivi d'un slash est un répertoire, un fichier suivi d'une étoile est un fichier exécutable et un fichier suivi d'un ''@'' est un lien. 
 $ ls -F

Liste les fichiers en les séparant par une virgule au lieu de les présenter en colonnes. 
 $ ls -m

En complément de ''-l'', affiche le nom et le groupe des propriétaires en fonction de leur UID et de leur GID. 
 $ ls -n

Liste les fichiers en ordre alphabétique inverse. 
 $ ls -r

Liste les fichiers triés par ordre de taille décroissante. 
 $ ls -S

Liste le contenu de ''/rep'' en triant par date de modification, du plus récent au plus ancien. 
 $ ls -t /rep

Liste les fichiers par type d'extension. 
 $ ls -X

=== La commande '''mknod'''  ===

Pour créer des fichiers de caractères majuscules ou spéciaux. 
 $ mknod

=== La commande '''more'''  ===

Permet de visualiser le contenu de ''fich'' page par page. Utilisez ''Enter'' pour le faire défiler, ''q'' pour quitter.La commande ''&lt;nowiki&gt;# cat fich   more&lt;/nowiki&gt;'' donne le même résultat. 
 $ more fich

=== La commande '''mv'''  ===

Pour déplacer ou renommer un fichier. Exemple&amp;nbsp;:''&lt;nowiki&gt;# mv toto /clown/titi&lt;/nowiki&gt;'' déplacera le fichier ''toto'' dans le répertoire ''clown'' (qui doit exister) et le renommera''titi''. 
 $ mv source destination

Effectue une sauvegarde du fichier avant de le déplacer. 
 $ mv -b

Effectue le déplacement même si la cible existe déjà, et ce sans message d'avertissement. 
 $ mv -f

Demande une confirmation si des fichiers risquent d'être écrasés par le déplacement. 
 $ mv -i

=== La commande '''rm'''  ===

Supprime ''fich''. Une fois un fichier effacé, il n'est plus possible de récupérer son contenu.Il est possible de spécifier plusieurs fichiers à la commande ''rm''&amp;nbsp;: dans ce cas, ils seront tous supprimés.Pour supprimer un fichier dont le nom commence par un tiret -, tapez&amp;nbsp;:&lt;nowiki&gt;# rm -- -lenomdufichier&lt;/nowiki&gt;ou&lt;nowiki&gt;# rm ./-lenomdufichier&lt;/nowiki&gt; 
 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 
 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 
 $ rm -i

=== La commande '''shred''' ===

Extrait du man : Réécrire sur les FICHIERs indiqués, de façon répétée, afin de rendre difficile toute récupération des données, même à l'aide de matériel coûteux.
Cette commande est très pratique pour rendre illisible des fichiers que vous jugez &quot;sensibles&quot; !
Elle fait partie du paque &quot;coreutils&quot;

 $ cat mon_fichier_top_secret
 Top secret - Personne ne doir avoir accès à ce fichier !
 $ shred -fvz -n 10 mon_fichier_top_secret
 shred: mon_fichier_top_secret : passe 1/11 (random)...
 shred: mon_fichier_top_secret : passe 2/11 (ffffff)...
 shred: mon_fichier_top_secret : passe 3/11 (999999)...
 shred: mon_fichier_top_secret : passe 4/11 (222222)...
 shred: mon_fichier_top_secret : passe 5/11 (000000)...
 shred: mon_fichier_top_secret : passe 6/11 (random)...
 shred: mon_fichier_top_secret : passe 7/11 (aaaaaa)...
 shred: mon_fichier_top_secret : passe 8/11 (111111)...
 shred: mon_fichier_top_secret : passe 9/11 (555555)...
 shred: mon_fichier_top_secret : passe 10/11 (random)...
 shred: mon_fichier_top_secret : passe 11/11 (000000)...
 $ cat mon_fichier_top_secret
 $ 

Voyez le man pour l'explication des option utilisées

Et comme tout est fichier, vous pouvez utiliser cette commande pour [[remettre à zéro un disque dur|effacer (et accessoirement tester) un disque dur]]

=== La commande '''slocate'''  ===

Pour afficher la liste des fichiers dont le nom contient le mot ''couic''. La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 
 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe. 

=== La commande '''tac'''  ===

Pour afficher le contenu de ''fich'' à l'écran en commençant par le bas. 
 $ tac fich

=== La commande '''tail'''  ===

Pour afficher les 10 dernières lignes de ''fich''. 
 $ tail fich

Pour afficher les 2 dernières lignes de ''fich''. 
 $ tail -2 fich

=== La commande '''touch'''  ===

Sert normalement à modifier la date de création et de modification du fichier, mais permet aussi de créer le fichier ''fich''. 
 $ touch fich

== Quelques &quot;trucs&quot;  ==

=== Gestion des caractères spéciaux ===
Dans un shell (quelqu'il soit), certains caractères sont dis spéciaux. En effet ils sont interprétés par le shell avant que la commande soit lancée. Les principaux son « », «&amp;», «|», «$», «&quot;», «'», «\»... (la liste n'est pas exaustive).

Si un fichier (ou un dossier) contien l'un des ses caractères dans son nom, cela peut gêner l'utilisation du shell. Pour pallier ce problème il existe 3 solutions :
* la première consiste à faire précédé cahque caractère particulier par un «\» y compris si c'est déjà un «\» (ce qui donne «\\»)
* la deuxième consiste à entourer le fichier par des «&quot;» (dans ce cas si le fichier contient de «&quot;» dans son nom, il faut les protéger avec des «\»). Cette méthode permet de protéger tout les caractères sauf «$», «{» et «}».
* la dernière méthode consiste à entourer le nom de fichier par des «'» (dans le cas où il y a déjà des «'», il faut les protéger avec un «\»

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;'] 

=== Epurer un fichier de ses lignes commentées ===

La commande ci-dessous écrira un nouveau fichier (fichier_sans_commentaires) à partir de &quot;fichier&quot; en enlevant les lignes commentées (commençant par #) :

 grep -v &quot;^#&quot; fichier | grep -v &quot;^$&quot; &gt; fichier_sans_commentaires

[http://forum.debian-fr.org/viewtopic.php?p=269266#p269266 Epurer un fichiers des lignes commençant par #]

=== Fichier commençant par un tiret  ===
Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 
 $ rm -fichier.txt

ne marchera pas, rm croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret.&lt;br&gt;Il faut donc utiliser l'option de fin de commande symbolisée par deux tirest consécutifs --. Pour notre exemple, on tapera&amp;nbsp;: 
 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=4679&amp;start=0  probleme de nom: renommer un fichier commencant par un tiret] 

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 
 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 
 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 
 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 
 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max

[[Catégorie:Commandes de base]]</text>
      <sha1>8ugvmplbb3o941hd1xy85pzst40fqe4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2516</id>
      <parentid>2512</parentid>
      <timestamp>2010-12-17T08:25:12Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <comment>/* La command ln */</comment>
      <text xml:space="preserve" bytes="14510">{{sid}} 

----

{{Ébauche|La gestion des fichiers}}

----
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

= Gestion des fichiers  =

== Quelques commandes  ==

=== La commande '''cat'''  ===

Afficher le contenu du fichier ''fichier'' dans la console. 
 $ cat fichier

Afficher et copier le contenu de ''fichier'' dans ''fichier2''. 
 $ cat file &amp;gt; file2

Afficher le contenu d'un fichier et numérote les lignes. 
 $ cat -n fichier

=== La commande '''chgrp'''  ===

Changer le groupe auquel appartient un fichier :
 $ chgrp groupe fichier

Affecter un fichier à un groupe. Le changement de groupe peut être réalisé par n'importe quel utilisateur... '''mais''' on ne peut donner un fichier qu'à l'un des groupes dont on est membre.&lt;br&gt;L'administrateur évidemment peut affecter un fichier à n'importe quel groupe d'utilisateur.&lt;br&gt;Exemple&amp;nbsp;:''&lt;nowiki&gt;$ chgrp -R toto /home/titi/rep&lt;/nowiki&gt;'' Le répertoire ''/home/titi/rep/'' et son contenu appartiendront désormais au groupe ''toto''.

=== La commande '''cp'''  ===

Copier un/des fichier(s). Exemple&amp;nbsp;: 
 $ cp fichier /home/toto/vrac

Copier ''fichier_source'' dans ''répertoire_cible''.
 $ cp fichier_source /repertoire_cible/ 

Copier ''repertoire_source'' dans ''repertoire_cible'' sans demander de confirmation.
 $ cp -Rf repertoire_source /repertoire_cible

Attention&amp;nbsp;: Copier un fichier vers un fichier de même nom l'écrasera.&lt;br&gt;Pour copier plusieurs fichiers à la fois, pensez à utiliser les caractères génériques&amp;nbsp;? et *. 

Copier sans écrasement du fichier destination (Le fichier écrasé est sauvegardé, seul le nom du fichier d'origine est modifié (ajout d'un tilde ''~'' à la fin du nom du fichier)) :
 $ cp -b

Prévient celui qui lance la commande de l'existence d'un fichier du même nom et lui demande s'il peut ou non remplacer son contenu. Permet de ne pas écraser par inadvertance des fichiers importants :
 $ cp -i

Afficher le nom des fichiers copiés (-v = verbose ou &quot;verbeux&quot;). Pratique si vous copiez plusieurs fichiers à l'aide des caractères génériques * et/ou&amp;nbsp;? et que vous souhaitez voir le bon déroulement de la multicopie. 
 $ cp -v

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

S'utilise avec les droits &quot;root&quot;

Exemple Pour sauvegarder le MBR du disque hda dans le fichier mbr.sav :
 # dd if=/dev/hda of=mbr.sav bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 9,3797e-05 s, 5,5 MB/s

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 
 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 
 $ file fichier

=== La commande '''find'''  ===

Rechercher de ''fichier''. Ex&amp;nbsp;:''&lt;nowiki&gt;# find /home/toto/bazard -name *.jpeg&lt;/nowiki&gt;'' donne la liste des fichiers .jpeg contenu dans le répertoire''/home/toto/bazard''. Vous pouvez utiliser un caractère générique pour remplacer les lettres, il faut le faire précéder d'une barre oblique inverse&amp;nbsp;:&lt;nowiki&gt;# find / -name image\*&lt;/nowiki&gt; 
 $ find -name fichier

Afficher le résultat de la recherche, avec les chemins relatifs. 
 $ find -name fichier -print

Indiquer le type de fichier à rechercher. Remplacez ''x'' par ''f'' pour les fichiers, ''d'' pour les répertoires et ''l'' pour les liens symboliques. 
 $ find -type x -name fichier

=== La commande '''less'''  ===

Visualiser ''fichier'' page par page. Utilisez les touches directionnelles haut et bas pour faire défiler le texte, ''q'' pour quitter. 
 $ less fichier

=== La command '''ln''' ===

Créer un lien (un alias ou un raccourci) vers un programme ou un fichier.

 Un lien symbolique :
 ln -s &lt;chemin_complet/fichier ou répertoire de destination&gt; &lt;chemin_complet/nom du lien symbolique&gt;

La commande ln utilisée sans -s créé un exemplaire supplémentaire du fichier ( à développer)

=== La commande '''locate'''  ===

Localiser un fichier. ''Locate'' est un lien symbolique de la commande ''slocate''. Exemple&amp;nbsp;: ''&lt;nowiki&gt;# locate titi&lt;/nowiki&gt;'' affiche la liste des fichiers dont le nom contient le mot ''titi''.''Locate'' affiche tous les noms de fichiers correspondant au critère indiqué. Pour n'afficher que les fichiers autorisés, utilisez ''slocate''.''Locate'' se base sur une base de données de tous les noms de fichiers, mise à jour quotidiennement. Des fichiers récemment créés ne seront donc pas forcément référencés. Pour forcer une mise à jour manuelle, tapez&amp;nbsp;:&lt;nowiki&gt;# updatedb&lt;/nowiki&gt;ou&lt;nowiki&gt;# slocate -u&lt;/nowiki&gt; 
 $ locate x

=== La commande '''ls'''  ===

Lister les fichiers et les sous-répertoires de ''/rep''. 
 $ ls /rep

Lister tous les fichiers du répertoire indiqué, fichiers cachés (dont le nom commence par un point) compris. Si vous n'indiquez pas de répertoire, c'est le contenu du répertoire courant qui est listé. 
 $ ls -a /rep

Afficher tous les sous-répertoires de ''/rep''. 
 $ ls -d /rep

Affichage long&amp;nbsp;: droits, nom et groupe du propriétaire, taille, date de dernière modification.Si vous tapez le nom d'un lien, vous connaîtrez son fichier ou répertoire cible. 
 $ ls -l

Affiche tout le contenu du répertoire de façon détaillée. 
 $ ls -la

Liste le contenu d'un répertoire en donnant pour chaque fichier/répertoire plus de détails qu'un simple ''ls''. 
 $ ls -lh /rep

Liste les fichiers par type. Un fichier suivi d'un slash est un répertoire, un fichier suivi d'une étoile est un fichier exécutable et un fichier suivi d'un ''@'' est un lien. 
 $ ls -F

Liste les fichiers en les séparant par une virgule au lieu de les présenter en colonnes. 
 $ ls -m

En complément de ''-l'', affiche le nom et le groupe des propriétaires en fonction de leur UID et de leur GID. 
 $ ls -n

Liste les fichiers en ordre alphabétique inverse. 
 $ ls -r

Liste les fichiers triés par ordre de taille décroissante. 
 $ ls -S

Liste le contenu de ''/rep'' en triant par date de modification, du plus récent au plus ancien. 
 $ ls -t /rep

Liste les fichiers par type d'extension. 
 $ ls -X

=== La commande '''mknod'''  ===

Pour créer des fichiers de caractères majuscules ou spéciaux. 
 $ mknod

=== La commande '''more'''  ===

Permet de visualiser le contenu de ''fich'' page par page. Utilisez ''Enter'' pour le faire défiler, ''q'' pour quitter.La commande ''&lt;nowiki&gt;# cat fich   more&lt;/nowiki&gt;'' donne le même résultat. 
 $ more fich

=== La commande '''mv'''  ===

Pour déplacer ou renommer un fichier. Exemple&amp;nbsp;:''&lt;nowiki&gt;# mv toto /clown/titi&lt;/nowiki&gt;'' déplacera le fichier ''toto'' dans le répertoire ''clown'' (qui doit exister) et le renommera''titi''. 
 $ mv source destination

Effectue une sauvegarde du fichier avant de le déplacer. 
 $ mv -b

Effectue le déplacement même si la cible existe déjà, et ce sans message d'avertissement. 
 $ mv -f

Demande une confirmation si des fichiers risquent d'être écrasés par le déplacement. 
 $ mv -i

=== La commande '''rm'''  ===

Supprime ''fich''. Une fois un fichier effacé, il n'est plus possible de récupérer son contenu.Il est possible de spécifier plusieurs fichiers à la commande ''rm''&amp;nbsp;: dans ce cas, ils seront tous supprimés.Pour supprimer un fichier dont le nom commence par un tiret -, tapez&amp;nbsp;:&lt;nowiki&gt;# rm -- -lenomdufichier&lt;/nowiki&gt;ou&lt;nowiki&gt;# rm ./-lenomdufichier&lt;/nowiki&gt; 
 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 
 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 
 $ rm -i

=== La commande '''shred''' ===

Extrait du man : Réécrire sur les FICHIERs indiqués, de façon répétée, afin de rendre difficile toute récupération des données, même à l'aide de matériel coûteux.
Cette commande est très pratique pour rendre illisible des fichiers que vous jugez &quot;sensibles&quot; !
Elle fait partie du paque &quot;coreutils&quot;

 $ cat mon_fichier_top_secret
 Top secret - Personne ne doir avoir accès à ce fichier !
 $ shred -fvz -n 10 mon_fichier_top_secret
 shred: mon_fichier_top_secret : passe 1/11 (random)...
 shred: mon_fichier_top_secret : passe 2/11 (ffffff)...
 shred: mon_fichier_top_secret : passe 3/11 (999999)...
 shred: mon_fichier_top_secret : passe 4/11 (222222)...
 shred: mon_fichier_top_secret : passe 5/11 (000000)...
 shred: mon_fichier_top_secret : passe 6/11 (random)...
 shred: mon_fichier_top_secret : passe 7/11 (aaaaaa)...
 shred: mon_fichier_top_secret : passe 8/11 (111111)...
 shred: mon_fichier_top_secret : passe 9/11 (555555)...
 shred: mon_fichier_top_secret : passe 10/11 (random)...
 shred: mon_fichier_top_secret : passe 11/11 (000000)...
 $ cat mon_fichier_top_secret
 $ 

Voyez le man pour l'explication des option utilisées

Et comme tout est fichier, vous pouvez utiliser cette commande pour [[remettre à zéro un disque dur|effacer (et accessoirement tester) un disque dur]]

=== La commande '''slocate'''  ===

Pour afficher la liste des fichiers dont le nom contient le mot ''couic''. La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 
 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe. 

=== La commande '''tac'''  ===

Pour afficher le contenu de ''fich'' à l'écran en commençant par le bas. 
 $ tac fich

=== La commande '''tail'''  ===

Pour afficher les 10 dernières lignes de ''fich''. 
 $ tail fich

Pour afficher les 2 dernières lignes de ''fich''. 
 $ tail -2 fich

=== La commande '''touch'''  ===

Sert normalement à modifier la date de création et de modification du fichier, mais permet aussi de créer le fichier ''fich''. 
 $ touch fich

== Quelques &quot;trucs&quot;  ==

=== Gestion des caractères spéciaux ===
Dans un shell (quelqu'il soit), certains caractères sont dis spéciaux. En effet ils sont interprétés par le shell avant que la commande soit lancée. Les principaux son « », «&amp;», «|», «$», «&quot;», «'», «\»... (la liste n'est pas exaustive).

Si un fichier (ou un dossier) contien l'un des ses caractères dans son nom, cela peut gêner l'utilisation du shell. Pour pallier ce problème il existe 3 solutions :
* la première consiste à faire précédé cahque caractère particulier par un «\» y compris si c'est déjà un «\» (ce qui donne «\\»)
* la deuxième consiste à entourer le fichier par des «&quot;» (dans ce cas si le fichier contient de «&quot;» dans son nom, il faut les protéger avec des «\»). Cette méthode permet de protéger tout les caractères sauf «$», «{» et «}».
* la dernière méthode consiste à entourer le nom de fichier par des «'» (dans le cas où il y a déjà des «'», il faut les protéger avec un «\»

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;'] 

=== Epurer un fichier de ses lignes commentées ===

La commande ci-dessous écrira un nouveau fichier (fichier_sans_commentaires) à partir de &quot;fichier&quot; en enlevant les lignes commentées (commençant par #) :

 grep -v &quot;^#&quot; fichier | grep -v &quot;^$&quot; &gt; fichier_sans_commentaires

[http://forum.debian-fr.org/viewtopic.php?p=269266#p269266 Epurer un fichiers des lignes commençant par #]

=== Fichier commençant par un tiret  ===
Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 
 $ rm -fichier.txt

ne marchera pas, rm croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret.&lt;br&gt;Il faut donc utiliser l'option de fin de commande symbolisée par deux tirest consécutifs --. Pour notre exemple, on tapera&amp;nbsp;: 
 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=4679&amp;start=0  probleme de nom: renommer un fichier commencant par un tiret] 

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 
 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 
 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 
 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 
 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max

[[Catégorie:Commandes de base]]</text>
      <sha1>68sn9n4zyqvt1j8jxdjpqyp8z8ow7zi</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2743</id>
      <parentid>2516</parentid>
      <timestamp>2011-03-08T13:27:02Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* La commande dd */</comment>
      <text xml:space="preserve" bytes="14572">{{sid}} 

----

{{Ébauche|La gestion des fichiers}}

----
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

= Gestion des fichiers  =

== Quelques commandes  ==

=== La commande '''cat'''  ===

Afficher le contenu du fichier ''fichier'' dans la console. 
 $ cat fichier

Afficher et copier le contenu de ''fichier'' dans ''fichier2''. 
 $ cat file &amp;gt; file2

Afficher le contenu d'un fichier et numérote les lignes. 
 $ cat -n fichier

=== La commande '''chgrp'''  ===

Changer le groupe auquel appartient un fichier :
 $ chgrp groupe fichier

Affecter un fichier à un groupe. Le changement de groupe peut être réalisé par n'importe quel utilisateur... '''mais''' on ne peut donner un fichier qu'à l'un des groupes dont on est membre.&lt;br&gt;L'administrateur évidemment peut affecter un fichier à n'importe quel groupe d'utilisateur.&lt;br&gt;Exemple&amp;nbsp;:''&lt;nowiki&gt;$ chgrp -R toto /home/titi/rep&lt;/nowiki&gt;'' Le répertoire ''/home/titi/rep/'' et son contenu appartiendront désormais au groupe ''toto''.

=== La commande '''cp'''  ===

Copier un/des fichier(s). Exemple&amp;nbsp;: 
 $ cp fichier /home/toto/vrac

Copier ''fichier_source'' dans ''répertoire_cible''.
 $ cp fichier_source /repertoire_cible/ 

Copier ''repertoire_source'' dans ''repertoire_cible'' sans demander de confirmation.
 $ cp -Rf repertoire_source /repertoire_cible

Attention&amp;nbsp;: Copier un fichier vers un fichier de même nom l'écrasera.&lt;br&gt;Pour copier plusieurs fichiers à la fois, pensez à utiliser les caractères génériques&amp;nbsp;? et *. 

Copier sans écrasement du fichier destination (Le fichier écrasé est sauvegardé, seul le nom du fichier d'origine est modifié (ajout d'un tilde ''~'' à la fin du nom du fichier)) :
 $ cp -b

Prévient celui qui lance la commande de l'existence d'un fichier du même nom et lui demande s'il peut ou non remplacer son contenu. Permet de ne pas écraser par inadvertance des fichiers importants :
 $ cp -i

Afficher le nom des fichiers copiés (-v = verbose ou &quot;verbeux&quot;). Pratique si vous copiez plusieurs fichiers à l'aide des caractères génériques * et/ou&amp;nbsp;? et que vous souhaitez voir le bon déroulement de la multicopie. 
 $ cp -v

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

S'utilise avec les droits &quot;root&quot;

Exemple Pour sauvegarder le MBR du disque hda dans le fichier mbr.sav :
 # dd if=/dev/hda of=mbr.sav bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 9,3797e-05 s, 5,5 MB/s

[[La_commande_dd|Plus d'informations sur la commande dd...]]

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 
 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 
 $ file fichier

=== La commande '''find'''  ===

Rechercher de ''fichier''. Ex&amp;nbsp;:''&lt;nowiki&gt;# find /home/toto/bazard -name *.jpeg&lt;/nowiki&gt;'' donne la liste des fichiers .jpeg contenu dans le répertoire''/home/toto/bazard''. Vous pouvez utiliser un caractère générique pour remplacer les lettres, il faut le faire précéder d'une barre oblique inverse&amp;nbsp;:&lt;nowiki&gt;# find / -name image\*&lt;/nowiki&gt; 
 $ find -name fichier

Afficher le résultat de la recherche, avec les chemins relatifs. 
 $ find -name fichier -print

Indiquer le type de fichier à rechercher. Remplacez ''x'' par ''f'' pour les fichiers, ''d'' pour les répertoires et ''l'' pour les liens symboliques. 
 $ find -type x -name fichier

=== La commande '''less'''  ===

Visualiser ''fichier'' page par page. Utilisez les touches directionnelles haut et bas pour faire défiler le texte, ''q'' pour quitter. 
 $ less fichier

=== La command '''ln''' ===

Créer un lien (un alias ou un raccourci) vers un programme ou un fichier.

 Un lien symbolique :
 ln -s &lt;chemin_complet/fichier ou répertoire de destination&gt; &lt;chemin_complet/nom du lien symbolique&gt;

La commande ln utilisée sans -s créé un exemplaire supplémentaire du fichier ( à développer)

=== La commande '''locate'''  ===

Localiser un fichier. ''Locate'' est un lien symbolique de la commande ''slocate''. Exemple&amp;nbsp;: ''&lt;nowiki&gt;# locate titi&lt;/nowiki&gt;'' affiche la liste des fichiers dont le nom contient le mot ''titi''.''Locate'' affiche tous les noms de fichiers correspondant au critère indiqué. Pour n'afficher que les fichiers autorisés, utilisez ''slocate''.''Locate'' se base sur une base de données de tous les noms de fichiers, mise à jour quotidiennement. Des fichiers récemment créés ne seront donc pas forcément référencés. Pour forcer une mise à jour manuelle, tapez&amp;nbsp;:&lt;nowiki&gt;# updatedb&lt;/nowiki&gt;ou&lt;nowiki&gt;# slocate -u&lt;/nowiki&gt; 
 $ locate x

=== La commande '''ls'''  ===

Lister les fichiers et les sous-répertoires de ''/rep''. 
 $ ls /rep

Lister tous les fichiers du répertoire indiqué, fichiers cachés (dont le nom commence par un point) compris. Si vous n'indiquez pas de répertoire, c'est le contenu du répertoire courant qui est listé. 
 $ ls -a /rep

Afficher tous les sous-répertoires de ''/rep''. 
 $ ls -d /rep

Affichage long&amp;nbsp;: droits, nom et groupe du propriétaire, taille, date de dernière modification.Si vous tapez le nom d'un lien, vous connaîtrez son fichier ou répertoire cible. 
 $ ls -l

Affiche tout le contenu du répertoire de façon détaillée. 
 $ ls -la

Liste le contenu d'un répertoire en donnant pour chaque fichier/répertoire plus de détails qu'un simple ''ls''. 
 $ ls -lh /rep

Liste les fichiers par type. Un fichier suivi d'un slash est un répertoire, un fichier suivi d'une étoile est un fichier exécutable et un fichier suivi d'un ''@'' est un lien. 
 $ ls -F

Liste les fichiers en les séparant par une virgule au lieu de les présenter en colonnes. 
 $ ls -m

En complément de ''-l'', affiche le nom et le groupe des propriétaires en fonction de leur UID et de leur GID. 
 $ ls -n

Liste les fichiers en ordre alphabétique inverse. 
 $ ls -r

Liste les fichiers triés par ordre de taille décroissante. 
 $ ls -S

Liste le contenu de ''/rep'' en triant par date de modification, du plus récent au plus ancien. 
 $ ls -t /rep

Liste les fichiers par type d'extension. 
 $ ls -X

=== La commande '''mknod'''  ===

Pour créer des fichiers de caractères majuscules ou spéciaux. 
 $ mknod

=== La commande '''more'''  ===

Permet de visualiser le contenu de ''fich'' page par page. Utilisez ''Enter'' pour le faire défiler, ''q'' pour quitter.La commande ''&lt;nowiki&gt;# cat fich   more&lt;/nowiki&gt;'' donne le même résultat. 
 $ more fich

=== La commande '''mv'''  ===

Pour déplacer ou renommer un fichier. Exemple&amp;nbsp;:''&lt;nowiki&gt;# mv toto /clown/titi&lt;/nowiki&gt;'' déplacera le fichier ''toto'' dans le répertoire ''clown'' (qui doit exister) et le renommera''titi''. 
 $ mv source destination

Effectue une sauvegarde du fichier avant de le déplacer. 
 $ mv -b

Effectue le déplacement même si la cible existe déjà, et ce sans message d'avertissement. 
 $ mv -f

Demande une confirmation si des fichiers risquent d'être écrasés par le déplacement. 
 $ mv -i

=== La commande '''rm'''  ===

Supprime ''fich''. Une fois un fichier effacé, il n'est plus possible de récupérer son contenu.Il est possible de spécifier plusieurs fichiers à la commande ''rm''&amp;nbsp;: dans ce cas, ils seront tous supprimés.Pour supprimer un fichier dont le nom commence par un tiret -, tapez&amp;nbsp;:&lt;nowiki&gt;# rm -- -lenomdufichier&lt;/nowiki&gt;ou&lt;nowiki&gt;# rm ./-lenomdufichier&lt;/nowiki&gt; 
 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 
 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 
 $ rm -i

=== La commande '''shred''' ===

Extrait du man : Réécrire sur les FICHIERs indiqués, de façon répétée, afin de rendre difficile toute récupération des données, même à l'aide de matériel coûteux.
Cette commande est très pratique pour rendre illisible des fichiers que vous jugez &quot;sensibles&quot; !
Elle fait partie du paque &quot;coreutils&quot;

 $ cat mon_fichier_top_secret
 Top secret - Personne ne doir avoir accès à ce fichier !
 $ shred -fvz -n 10 mon_fichier_top_secret
 shred: mon_fichier_top_secret : passe 1/11 (random)...
 shred: mon_fichier_top_secret : passe 2/11 (ffffff)...
 shred: mon_fichier_top_secret : passe 3/11 (999999)...
 shred: mon_fichier_top_secret : passe 4/11 (222222)...
 shred: mon_fichier_top_secret : passe 5/11 (000000)...
 shred: mon_fichier_top_secret : passe 6/11 (random)...
 shred: mon_fichier_top_secret : passe 7/11 (aaaaaa)...
 shred: mon_fichier_top_secret : passe 8/11 (111111)...
 shred: mon_fichier_top_secret : passe 9/11 (555555)...
 shred: mon_fichier_top_secret : passe 10/11 (random)...
 shred: mon_fichier_top_secret : passe 11/11 (000000)...
 $ cat mon_fichier_top_secret
 $ 

Voyez le man pour l'explication des option utilisées

Et comme tout est fichier, vous pouvez utiliser cette commande pour [[remettre à zéro un disque dur|effacer (et accessoirement tester) un disque dur]]

=== La commande '''slocate'''  ===

Pour afficher la liste des fichiers dont le nom contient le mot ''couic''. La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 
 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe. 

=== La commande '''tac'''  ===

Pour afficher le contenu de ''fich'' à l'écran en commençant par le bas. 
 $ tac fich

=== La commande '''tail'''  ===

Pour afficher les 10 dernières lignes de ''fich''. 
 $ tail fich

Pour afficher les 2 dernières lignes de ''fich''. 
 $ tail -2 fich

=== La commande '''touch'''  ===

Sert normalement à modifier la date de création et de modification du fichier, mais permet aussi de créer le fichier ''fich''. 
 $ touch fich

== Quelques &quot;trucs&quot;  ==

=== Gestion des caractères spéciaux ===
Dans un shell (quelqu'il soit), certains caractères sont dis spéciaux. En effet ils sont interprétés par le shell avant que la commande soit lancée. Les principaux son « », «&amp;», «|», «$», «&quot;», «'», «\»... (la liste n'est pas exaustive).

Si un fichier (ou un dossier) contien l'un des ses caractères dans son nom, cela peut gêner l'utilisation du shell. Pour pallier ce problème il existe 3 solutions :
* la première consiste à faire précédé cahque caractère particulier par un «\» y compris si c'est déjà un «\» (ce qui donne «\\»)
* la deuxième consiste à entourer le fichier par des «&quot;» (dans ce cas si le fichier contient de «&quot;» dans son nom, il faut les protéger avec des «\»). Cette méthode permet de protéger tout les caractères sauf «$», «{» et «}».
* la dernière méthode consiste à entourer le nom de fichier par des «'» (dans le cas où il y a déjà des «'», il faut les protéger avec un «\»

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;'] 

=== Epurer un fichier de ses lignes commentées ===

La commande ci-dessous écrira un nouveau fichier (fichier_sans_commentaires) à partir de &quot;fichier&quot; en enlevant les lignes commentées (commençant par #) :

 grep -v &quot;^#&quot; fichier | grep -v &quot;^$&quot; &gt; fichier_sans_commentaires

[http://forum.debian-fr.org/viewtopic.php?p=269266#p269266 Epurer un fichiers des lignes commençant par #]

=== Fichier commençant par un tiret  ===
Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 
 $ rm -fichier.txt

ne marchera pas, rm croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret.&lt;br&gt;Il faut donc utiliser l'option de fin de commande symbolisée par deux tirest consécutifs --. Pour notre exemple, on tapera&amp;nbsp;: 
 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=4679&amp;start=0  probleme de nom: renommer un fichier commencant par un tiret] 

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 
 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 
 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 
 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 
 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max

[[Catégorie:Commandes de base]]</text>
      <sha1>2gnvl6o2fd1k9mw88w1rucm9vdypi8e</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3585</id>
      <parentid>2743</parentid>
      <timestamp>2011-11-23T15:03:52Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* La commande shred */</comment>
      <text xml:space="preserve" bytes="14573">{{sid}} 

----

{{Ébauche|La gestion des fichiers}}

----
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

= Gestion des fichiers  =

== Quelques commandes  ==

=== La commande '''cat'''  ===

Afficher le contenu du fichier ''fichier'' dans la console. 
 $ cat fichier

Afficher et copier le contenu de ''fichier'' dans ''fichier2''. 
 $ cat file &amp;gt; file2

Afficher le contenu d'un fichier et numérote les lignes. 
 $ cat -n fichier

=== La commande '''chgrp'''  ===

Changer le groupe auquel appartient un fichier :
 $ chgrp groupe fichier

Affecter un fichier à un groupe. Le changement de groupe peut être réalisé par n'importe quel utilisateur... '''mais''' on ne peut donner un fichier qu'à l'un des groupes dont on est membre.&lt;br&gt;L'administrateur évidemment peut affecter un fichier à n'importe quel groupe d'utilisateur.&lt;br&gt;Exemple&amp;nbsp;:''&lt;nowiki&gt;$ chgrp -R toto /home/titi/rep&lt;/nowiki&gt;'' Le répertoire ''/home/titi/rep/'' et son contenu appartiendront désormais au groupe ''toto''.

=== La commande '''cp'''  ===

Copier un/des fichier(s). Exemple&amp;nbsp;: 
 $ cp fichier /home/toto/vrac

Copier ''fichier_source'' dans ''répertoire_cible''.
 $ cp fichier_source /repertoire_cible/ 

Copier ''repertoire_source'' dans ''repertoire_cible'' sans demander de confirmation.
 $ cp -Rf repertoire_source /repertoire_cible

Attention&amp;nbsp;: Copier un fichier vers un fichier de même nom l'écrasera.&lt;br&gt;Pour copier plusieurs fichiers à la fois, pensez à utiliser les caractères génériques&amp;nbsp;? et *. 

Copier sans écrasement du fichier destination (Le fichier écrasé est sauvegardé, seul le nom du fichier d'origine est modifié (ajout d'un tilde ''~'' à la fin du nom du fichier)) :
 $ cp -b

Prévient celui qui lance la commande de l'existence d'un fichier du même nom et lui demande s'il peut ou non remplacer son contenu. Permet de ne pas écraser par inadvertance des fichiers importants :
 $ cp -i

Afficher le nom des fichiers copiés (-v = verbose ou &quot;verbeux&quot;). Pratique si vous copiez plusieurs fichiers à l'aide des caractères génériques * et/ou&amp;nbsp;? et que vous souhaitez voir le bon déroulement de la multicopie. 
 $ cp -v

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

S'utilise avec les droits &quot;root&quot;

Exemple Pour sauvegarder le MBR du disque hda dans le fichier mbr.sav :
 # dd if=/dev/hda of=mbr.sav bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 9,3797e-05 s, 5,5 MB/s

[[La_commande_dd|Plus d'informations sur la commande dd...]]

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 
 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 
 $ file fichier

=== La commande '''find'''  ===

Rechercher de ''fichier''. Ex&amp;nbsp;:''&lt;nowiki&gt;# find /home/toto/bazard -name *.jpeg&lt;/nowiki&gt;'' donne la liste des fichiers .jpeg contenu dans le répertoire''/home/toto/bazard''. Vous pouvez utiliser un caractère générique pour remplacer les lettres, il faut le faire précéder d'une barre oblique inverse&amp;nbsp;:&lt;nowiki&gt;# find / -name image\*&lt;/nowiki&gt; 
 $ find -name fichier

Afficher le résultat de la recherche, avec les chemins relatifs. 
 $ find -name fichier -print

Indiquer le type de fichier à rechercher. Remplacez ''x'' par ''f'' pour les fichiers, ''d'' pour les répertoires et ''l'' pour les liens symboliques. 
 $ find -type x -name fichier

=== La commande '''less'''  ===

Visualiser ''fichier'' page par page. Utilisez les touches directionnelles haut et bas pour faire défiler le texte, ''q'' pour quitter. 
 $ less fichier

=== La command '''ln''' ===

Créer un lien (un alias ou un raccourci) vers un programme ou un fichier.

 Un lien symbolique :
 ln -s &lt;chemin_complet/fichier ou répertoire de destination&gt; &lt;chemin_complet/nom du lien symbolique&gt;

La commande ln utilisée sans -s créé un exemplaire supplémentaire du fichier ( à développer)

=== La commande '''locate'''  ===

Localiser un fichier. ''Locate'' est un lien symbolique de la commande ''slocate''. Exemple&amp;nbsp;: ''&lt;nowiki&gt;# locate titi&lt;/nowiki&gt;'' affiche la liste des fichiers dont le nom contient le mot ''titi''.''Locate'' affiche tous les noms de fichiers correspondant au critère indiqué. Pour n'afficher que les fichiers autorisés, utilisez ''slocate''.''Locate'' se base sur une base de données de tous les noms de fichiers, mise à jour quotidiennement. Des fichiers récemment créés ne seront donc pas forcément référencés. Pour forcer une mise à jour manuelle, tapez&amp;nbsp;:&lt;nowiki&gt;# updatedb&lt;/nowiki&gt;ou&lt;nowiki&gt;# slocate -u&lt;/nowiki&gt; 
 $ locate x

=== La commande '''ls'''  ===

Lister les fichiers et les sous-répertoires de ''/rep''. 
 $ ls /rep

Lister tous les fichiers du répertoire indiqué, fichiers cachés (dont le nom commence par un point) compris. Si vous n'indiquez pas de répertoire, c'est le contenu du répertoire courant qui est listé. 
 $ ls -a /rep

Afficher tous les sous-répertoires de ''/rep''. 
 $ ls -d /rep

Affichage long&amp;nbsp;: droits, nom et groupe du propriétaire, taille, date de dernière modification.Si vous tapez le nom d'un lien, vous connaîtrez son fichier ou répertoire cible. 
 $ ls -l

Affiche tout le contenu du répertoire de façon détaillée. 
 $ ls -la

Liste le contenu d'un répertoire en donnant pour chaque fichier/répertoire plus de détails qu'un simple ''ls''. 
 $ ls -lh /rep

Liste les fichiers par type. Un fichier suivi d'un slash est un répertoire, un fichier suivi d'une étoile est un fichier exécutable et un fichier suivi d'un ''@'' est un lien. 
 $ ls -F

Liste les fichiers en les séparant par une virgule au lieu de les présenter en colonnes. 
 $ ls -m

En complément de ''-l'', affiche le nom et le groupe des propriétaires en fonction de leur UID et de leur GID. 
 $ ls -n

Liste les fichiers en ordre alphabétique inverse. 
 $ ls -r

Liste les fichiers triés par ordre de taille décroissante. 
 $ ls -S

Liste le contenu de ''/rep'' en triant par date de modification, du plus récent au plus ancien. 
 $ ls -t /rep

Liste les fichiers par type d'extension. 
 $ ls -X

=== La commande '''mknod'''  ===

Pour créer des fichiers de caractères majuscules ou spéciaux. 
 $ mknod

=== La commande '''more'''  ===

Permet de visualiser le contenu de ''fich'' page par page. Utilisez ''Enter'' pour le faire défiler, ''q'' pour quitter.La commande ''&lt;nowiki&gt;# cat fich   more&lt;/nowiki&gt;'' donne le même résultat. 
 $ more fich

=== La commande '''mv'''  ===

Pour déplacer ou renommer un fichier. Exemple&amp;nbsp;:''&lt;nowiki&gt;# mv toto /clown/titi&lt;/nowiki&gt;'' déplacera le fichier ''toto'' dans le répertoire ''clown'' (qui doit exister) et le renommera''titi''. 
 $ mv source destination

Effectue une sauvegarde du fichier avant de le déplacer. 
 $ mv -b

Effectue le déplacement même si la cible existe déjà, et ce sans message d'avertissement. 
 $ mv -f

Demande une confirmation si des fichiers risquent d'être écrasés par le déplacement. 
 $ mv -i

=== La commande '''rm'''  ===

Supprime ''fich''. Une fois un fichier effacé, il n'est plus possible de récupérer son contenu.Il est possible de spécifier plusieurs fichiers à la commande ''rm''&amp;nbsp;: dans ce cas, ils seront tous supprimés.Pour supprimer un fichier dont le nom commence par un tiret -, tapez&amp;nbsp;:&lt;nowiki&gt;# rm -- -lenomdufichier&lt;/nowiki&gt;ou&lt;nowiki&gt;# rm ./-lenomdufichier&lt;/nowiki&gt; 
 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 
 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 
 $ rm -i

=== La commande '''shred''' ===

Extrait du man : Réécrire sur les FICHIERs indiqués, de façon répétée, afin de rendre difficile toute récupération des données, même à l'aide de matériel coûteux.
Cette commande est très pratique pour rendre illisible des fichiers que vous jugez &quot;sensibles&quot; !
Elle fait partie du paque &quot;coreutils&quot;

 $ cat mon_fichier_top_secret
 Top secret - Personne ne doir avoir accès à ce fichier !
 $ shred -fvz -n 10 mon_fichier_top_secret
 shred: mon_fichier_top_secret : passe 1/11 (random)...
 shred: mon_fichier_top_secret : passe 2/11 (ffffff)...
 shred: mon_fichier_top_secret : passe 3/11 (999999)...
 shred: mon_fichier_top_secret : passe 4/11 (222222)...
 shred: mon_fichier_top_secret : passe 5/11 (000000)...
 shred: mon_fichier_top_secret : passe 6/11 (random)...
 shred: mon_fichier_top_secret : passe 7/11 (aaaaaa)...
 shred: mon_fichier_top_secret : passe 8/11 (111111)...
 shred: mon_fichier_top_secret : passe 9/11 (555555)...
 shred: mon_fichier_top_secret : passe 10/11 (random)...
 shred: mon_fichier_top_secret : passe 11/11 (000000)...
 $ cat mon_fichier_top_secret
 $ 

Voyez le man pour l'explication des options utilisées

Et comme tout est fichier, vous pouvez utiliser cette commande pour [[remettre à zéro un disque dur|effacer (et accessoirement tester) un disque dur]]

=== La commande '''slocate'''  ===

Pour afficher la liste des fichiers dont le nom contient le mot ''couic''. La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 
 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe. 

=== La commande '''tac'''  ===

Pour afficher le contenu de ''fich'' à l'écran en commençant par le bas. 
 $ tac fich

=== La commande '''tail'''  ===

Pour afficher les 10 dernières lignes de ''fich''. 
 $ tail fich

Pour afficher les 2 dernières lignes de ''fich''. 
 $ tail -2 fich

=== La commande '''touch'''  ===

Sert normalement à modifier la date de création et de modification du fichier, mais permet aussi de créer le fichier ''fich''. 
 $ touch fich

== Quelques &quot;trucs&quot;  ==

=== Gestion des caractères spéciaux ===
Dans un shell (quelqu'il soit), certains caractères sont dis spéciaux. En effet ils sont interprétés par le shell avant que la commande soit lancée. Les principaux son « », «&amp;», «|», «$», «&quot;», «'», «\»... (la liste n'est pas exaustive).

Si un fichier (ou un dossier) contien l'un des ses caractères dans son nom, cela peut gêner l'utilisation du shell. Pour pallier ce problème il existe 3 solutions :
* la première consiste à faire précédé cahque caractère particulier par un «\» y compris si c'est déjà un «\» (ce qui donne «\\»)
* la deuxième consiste à entourer le fichier par des «&quot;» (dans ce cas si le fichier contient de «&quot;» dans son nom, il faut les protéger avec des «\»). Cette méthode permet de protéger tout les caractères sauf «$», «{» et «}».
* la dernière méthode consiste à entourer le nom de fichier par des «'» (dans le cas où il y a déjà des «'», il faut les protéger avec un «\»

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;'] 

=== Epurer un fichier de ses lignes commentées ===

La commande ci-dessous écrira un nouveau fichier (fichier_sans_commentaires) à partir de &quot;fichier&quot; en enlevant les lignes commentées (commençant par #) :

 grep -v &quot;^#&quot; fichier | grep -v &quot;^$&quot; &gt; fichier_sans_commentaires

[http://forum.debian-fr.org/viewtopic.php?p=269266#p269266 Epurer un fichiers des lignes commençant par #]

=== Fichier commençant par un tiret  ===
Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 
 $ rm -fichier.txt

ne marchera pas, rm croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret.&lt;br&gt;Il faut donc utiliser l'option de fin de commande symbolisée par deux tirest consécutifs --. Pour notre exemple, on tapera&amp;nbsp;: 
 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=4679&amp;start=0  probleme de nom: renommer un fichier commencant par un tiret] 

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 
 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 
 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 
 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 
 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max

[[Catégorie:Commandes de base]]</text>
      <sha1>7vb3432eil79ilr7kw77dj5r2o3dsma</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4107</id>
      <parentid>3585</parentid>
      <timestamp>2012-04-28T08:46:36Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="14602">{{sid}} 

----

{{Ébauche|La gestion des fichiers}}

----
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

= Gestion des fichiers  =

== Quelques commandes  ==

=== La commande '''cat'''  ===

Afficher le contenu du fichier ''fichier'' dans la console. 
 $ cat fichier

Afficher et copier le contenu de ''fichier'' dans ''fichier2''. 
 $ cat file &amp;gt; file2

Afficher le contenu d'un fichier et numérote les lignes. 
 $ cat -n fichier

=== La commande '''chgrp'''  ===

Changer le groupe auquel appartient un fichier :
 $ chgrp groupe fichier

Affecter un fichier à un groupe. Le changement de groupe peut être réalisé par n'importe quel utilisateur... '''mais''' on ne peut donner un fichier qu'à l'un des groupes dont on est membre.&lt;br&gt;L'administrateur évidemment peut affecter un fichier à n'importe quel groupe d'utilisateur.&lt;br&gt;Exemple&amp;nbsp;:''&lt;nowiki&gt;$ chgrp -R toto /home/titi/rep&lt;/nowiki&gt;'' Le répertoire ''/home/titi/rep/'' et son contenu appartiendront désormais au groupe ''toto''.

=== La commande '''cp'''  ===

Copier un/des fichier(s). Exemple&amp;nbsp;: 
 $ cp fichier /home/toto/vrac

Copier ''fichier_source'' dans ''répertoire_cible''.
 $ cp fichier_source /repertoire_cible/ 

Copier ''repertoire_source'' dans ''repertoire_cible'' sans demander de confirmation.
 $ cp -Rf repertoire_source /repertoire_cible

Attention&amp;nbsp;: Copier un fichier vers un fichier de même nom l'écrasera.&lt;br&gt;Pour copier plusieurs fichiers à la fois, pensez à utiliser les caractères génériques&amp;nbsp;? et *. 

Copier sans écrasement du fichier destination (Le fichier écrasé est sauvegardé, seul le nom du fichier d'origine est modifié (ajout d'un tilde ''~'' à la fin du nom du fichier)) :
 $ cp -b

Prévient celui qui lance la commande de l'existence d'un fichier du même nom et lui demande s'il peut ou non remplacer son contenu. Permet de ne pas écraser par inadvertance des fichiers importants :
 $ cp -i

Afficher le nom des fichiers copiés (-v = verbose ou &quot;verbeux&quot;). Pratique si vous copiez plusieurs fichiers à l'aide des caractères génériques * et/ou&amp;nbsp;? et que vous souhaitez voir le bon déroulement de la multicopie. 
 $ cp -v

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

S'utilise avec les droits &quot;root&quot;

Exemple Pour sauvegarder le MBR du disque hda dans le fichier mbr.sav :
 # dd if=/dev/hda of=mbr.sav bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 9,3797e-05 s, 5,5 MB/s

[[La_commande_dd|Plus d'informations sur la commande dd...]]

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 
 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 
 $ file fichier

=== La commande '''find'''  ===

Rechercher de ''fichier''. Ex&amp;nbsp;:''&lt;nowiki&gt;# find /home/toto/bazard -name *.jpeg&lt;/nowiki&gt;'' donne la liste des fichiers .jpeg contenu dans le répertoire''/home/toto/bazard''. Vous pouvez utiliser un caractère générique pour remplacer les lettres, il faut le faire précéder d'une barre oblique inverse&amp;nbsp;:&lt;nowiki&gt;# find / -name image\*&lt;/nowiki&gt; 
 $ find -name fichier

Afficher le résultat de la recherche, avec les chemins relatifs. 
 $ find -name fichier -print

Indiquer le type de fichier à rechercher. Remplacez ''x'' par ''f'' pour les fichiers, ''d'' pour les répertoires et ''l'' pour les liens symboliques. 
 $ find -type x -name fichier

=== La commande '''less'''  ===

Visualiser ''fichier'' page par page. Utilisez les touches directionnelles haut et bas pour faire défiler le texte, ''q'' pour quitter. 
 $ less fichier

=== La command '''ln''' ===

Créer un lien (un alias ou un raccourci) vers un programme ou un fichier.

 Un lien symbolique :
 ln -s &lt;chemin_complet/fichier ou répertoire de destination&gt; &lt;chemin_complet/nom du lien symbolique&gt;

La commande ln utilisée sans -s créé un exemplaire supplémentaire du fichier ( à développer)

=== La commande '''locate'''  ===

Localiser un fichier. ''Locate'' est un lien symbolique de la commande ''slocate''. Exemple&amp;nbsp;: ''&lt;nowiki&gt;# locate titi&lt;/nowiki&gt;'' affiche la liste des fichiers dont le nom contient le mot ''titi''.''Locate'' affiche tous les noms de fichiers correspondant au critère indiqué. Pour n'afficher que les fichiers autorisés, utilisez ''slocate''.''Locate'' se base sur une base de données de tous les noms de fichiers, mise à jour quotidiennement. Des fichiers récemment créés ne seront donc pas forcément référencés. Pour forcer une mise à jour manuelle, tapez&amp;nbsp;:&lt;nowiki&gt;# updatedb&lt;/nowiki&gt;ou&lt;nowiki&gt;# slocate -u&lt;/nowiki&gt; 
 $ locate x

=== La commande '''ls'''  ===

Lister les fichiers et les sous-répertoires de ''/rep''. 
 $ ls /rep

Lister tous les fichiers du répertoire indiqué, fichiers cachés (dont le nom commence par un point) compris. Si vous n'indiquez pas de répertoire, c'est le contenu du répertoire courant qui est listé. 
 $ ls -a /rep

Afficher tous les sous-répertoires de ''/rep''. 
 $ ls -d /rep

Affichage long&amp;nbsp;: droits, nom et groupe du propriétaire, taille, date de dernière modification.Si vous tapez le nom d'un lien, vous connaîtrez son fichier ou répertoire cible. 
 $ ls -l

Affiche tout le contenu du répertoire de façon détaillée. 
 $ ls -la

Liste le contenu d'un répertoire en donnant pour chaque fichier/répertoire plus de détails qu'un simple ''ls''. 
 $ ls -lh /rep

Liste les fichiers par type. Un fichier suivi d'un slash est un répertoire, un fichier suivi d'une étoile est un fichier exécutable et un fichier suivi d'un ''@'' est un lien. 
 $ ls -F

Liste les fichiers en les séparant par une virgule au lieu de les présenter en colonnes. 
 $ ls -m

En complément de ''-l'', affiche le nom et le groupe des propriétaires en fonction de leur UID et de leur GID. 
 $ ls -n

Liste les fichiers en ordre alphabétique inverse. 
 $ ls -r

Liste les fichiers triés par ordre de taille décroissante. 
 $ ls -S

Liste le contenu de ''/rep'' en triant par date de modification, du plus récent au plus ancien. 
 $ ls -t /rep

Liste les fichiers par type d'extension. 
 $ ls -X

=== La commande '''mknod'''  ===

Pour créer des fichiers de caractères majuscules ou spéciaux. 
 $ mknod

=== La commande '''more'''  ===

Permet de visualiser le contenu de ''fich'' page par page. Utilisez ''Enter'' pour le faire défiler, ''q'' pour quitter.La commande ''&lt;nowiki&gt;# cat fich   more&lt;/nowiki&gt;'' donne le même résultat. 
 $ more fich

=== La commande '''mv'''  ===

Pour déplacer ou renommer un fichier. Exemple&amp;nbsp;:''&lt;nowiki&gt;# mv toto /clown/titi&lt;/nowiki&gt;'' déplacera le fichier ''toto'' dans le répertoire ''clown'' (qui doit exister) et le renommera''titi''. 
 $ mv source destination

Effectue une sauvegarde du fichier avant de le déplacer. 
 $ mv -b

Effectue le déplacement même si la cible existe déjà, et ce sans message d'avertissement. 
 $ mv -f

Demande une confirmation si des fichiers risquent d'être écrasés par le déplacement. 
 $ mv -i

=== La commande '''rm'''  ===

Supprime ''fich''. Une fois un fichier effacé, il n'est plus possible de récupérer son contenu.Il est possible de spécifier plusieurs fichiers à la commande ''rm''&amp;nbsp;: dans ce cas, ils seront tous supprimés.Pour supprimer un fichier dont le nom commence par un tiret -, tapez&amp;nbsp;:&lt;nowiki&gt;# rm -- -lenomdufichier&lt;/nowiki&gt;ou&lt;nowiki&gt;# rm ./-lenomdufichier&lt;/nowiki&gt; 
 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 
 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 
 $ rm -i

=== La commande '''shred''' ===

Extrait du man : Réécrire sur les FICHIERs indiqués, de façon répétée, afin de rendre difficile toute récupération des données, même à l'aide de matériel coûteux.
Cette commande est très pratique pour rendre illisible des fichiers que vous jugez &quot;sensibles&quot; !
Elle fait partie du paque &quot;coreutils&quot;

 $ cat mon_fichier_top_secret
 Top secret - Personne ne doir avoir accès à ce fichier !
 $ shred -fvz -n 10 mon_fichier_top_secret
 shred: mon_fichier_top_secret : passe 1/11 (random)...
 shred: mon_fichier_top_secret : passe 2/11 (ffffff)...
 shred: mon_fichier_top_secret : passe 3/11 (999999)...
 shred: mon_fichier_top_secret : passe 4/11 (222222)...
 shred: mon_fichier_top_secret : passe 5/11 (000000)...
 shred: mon_fichier_top_secret : passe 6/11 (random)...
 shred: mon_fichier_top_secret : passe 7/11 (aaaaaa)...
 shred: mon_fichier_top_secret : passe 8/11 (111111)...
 shred: mon_fichier_top_secret : passe 9/11 (555555)...
 shred: mon_fichier_top_secret : passe 10/11 (random)...
 shred: mon_fichier_top_secret : passe 11/11 (000000)...
 $ cat mon_fichier_top_secret
 $ 

Voyez le man pour l'explication des options utilisées

Et comme tout est fichier, vous pouvez utiliser cette commande pour [[remettre à zéro un disque dur|effacer (et accessoirement tester) un disque dur]]

=== La commande '''slocate'''  ===

Pour afficher la liste des fichiers dont le nom contient le mot ''couic''. La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 
 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe. 

=== La commande '''tac'''  ===

Pour afficher le contenu de ''fich'' à l'écran en commençant par le bas. 
 $ tac fich

=== La commande '''tail'''  ===

Pour afficher les 10 dernières lignes de ''fich''. 
 $ tail fich

Pour afficher les 2 dernières lignes de ''fich''. 
 $ tail -2 fich

=== La commande '''touch'''  ===

Sert normalement à modifier la date de création et de modification du fichier, mais permet aussi de créer le fichier ''fich''. 
 $ touch fich

== Quelques &quot;trucs&quot;  ==

=== Gestion des caractères spéciaux ===
Dans un shell (quelqu'il soit), certains caractères sont dis spéciaux. En effet ils sont interprétés par le shell avant que la commande soit lancée. Les principaux son « », «&amp;», «|», «$», «&quot;», «'», «\»... (la liste n'est pas exaustive).

Si un fichier (ou un dossier) contien l'un des ses caractères dans son nom, cela peut gêner l'utilisation du shell. Pour pallier ce problème il existe 3 solutions :
* la première consiste à faire précédé cahque caractère particulier par un «\» y compris si c'est déjà un «\» (ce qui donne «\\»)
* la deuxième consiste à entourer le fichier par des «&quot;» (dans ce cas si le fichier contient de «&quot;» dans son nom, il faut les protéger avec des «\»). Cette méthode permet de protéger tout les caractères sauf «$», «{» et «}».
* la dernière méthode consiste à entourer le nom de fichier par des «'» (dans le cas où il y a déjà des «'», il faut les protéger avec un «\»

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;'] 

=== Epurer un fichier de ses lignes commentées ===

La commande ci-dessous écrira un nouveau fichier (fichier_sans_commentaires) à partir de &quot;fichier&quot; en enlevant les lignes commentées (commençant par #) :

 grep -v &quot;^#&quot; fichier | grep -v &quot;^$&quot; &gt; fichier_sans_commentaires

[http://forum.debian-fr.org/viewtopic.php?p=269266#p269266 Epurer un fichiers des lignes commençant par #]

=== Fichier commençant par un tiret  ===
Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 
 $ rm -fichier.txt

ne marchera pas, rm croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret.&lt;br&gt;Il faut donc utiliser l'option de fin de commande symbolisée par deux tirest consécutifs --. Pour notre exemple, on tapera&amp;nbsp;: 
 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=4679&amp;start=0  probleme de nom: renommer un fichier commencant par un tiret] 

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 
 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 
 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 
 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 
 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max

[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>o3nttd6jjvnceneshjxrt4bd4n4o64m</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4526</id>
      <parentid>4107</parentid>
      <timestamp>2012-10-19T21:10:25Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>francisation du terme &quot;file&quot; dans les exemples -&gt; &quot;fichier&quot;</comment>
      <text xml:space="preserve" bytes="14608">{{sid}} 

----

{{Ébauche|La gestion des fichiers}}

----
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

= Gestion des fichiers  =

== Quelques commandes  ==

=== La commande '''cat'''  ===

Afficher le contenu du fichier ''fichier'' dans la console. 
 $ cat fichier

Afficher et copier le contenu de ''fichier'' dans ''fichier2''. 
 $ cat fichier &amp;gt; fichier2

Afficher le contenu d'un fichier et numérote les lignes. 
 $ cat -n fichier

=== La commande '''chgrp'''  ===

Changer le groupe auquel appartient un fichier :
 $ chgrp groupe fichier

Affecter un fichier à un groupe. Le changement de groupe peut être réalisé par n'importe quel utilisateur... '''mais''' on ne peut donner un fichier qu'à l'un des groupes dont on est membre.&lt;br&gt;L'administrateur évidemment peut affecter un fichier à n'importe quel groupe d'utilisateur.&lt;br&gt;Exemple&amp;nbsp;:''&lt;nowiki&gt;$ chgrp -R toto /home/titi/rep&lt;/nowiki&gt;'' Le répertoire ''/home/titi/rep/'' et son contenu appartiendront désormais au groupe ''toto''.

=== La commande '''cp'''  ===

Copier un/des fichier(s). Exemple&amp;nbsp;: 
 $ cp fichier /home/toto/vrac

Copier ''fichier_source'' dans ''répertoire_cible''.
 $ cp fichier_source /repertoire_cible/ 

Copier ''repertoire_source'' dans ''repertoire_cible'' sans demander de confirmation.
 $ cp -Rf repertoire_source /repertoire_cible

Attention&amp;nbsp;: Copier un fichier vers un fichier de même nom l'écrasera.&lt;br&gt;Pour copier plusieurs fichiers à la fois, pensez à utiliser les caractères génériques&amp;nbsp;? et *. 

Copier sans écrasement du fichier destination (Le fichier écrasé est sauvegardé, seul le nom du fichier d'origine est modifié (ajout d'un tilde ''~'' à la fin du nom du fichier)) :
 $ cp -b

Prévient celui qui lance la commande de l'existence d'un fichier du même nom et lui demande s'il peut ou non remplacer son contenu. Permet de ne pas écraser par inadvertance des fichiers importants :
 $ cp -i

Afficher le nom des fichiers copiés (-v = verbose ou &quot;verbeux&quot;). Pratique si vous copiez plusieurs fichiers à l'aide des caractères génériques * et/ou&amp;nbsp;? et que vous souhaitez voir le bon déroulement de la multicopie. 
 $ cp -v

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

S'utilise avec les droits &quot;root&quot;

Exemple Pour sauvegarder le MBR du disque hda dans le fichier mbr.sav :
 # dd if=/dev/hda of=mbr.sav bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 9,3797e-05 s, 5,5 MB/s

[[La_commande_dd|Plus d'informations sur la commande dd...]]

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 
 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 
 $ file fichier

=== La commande '''find'''  ===

Rechercher de ''fichier''. Ex&amp;nbsp;:''&lt;nowiki&gt;# find /home/toto/bazard -name *.jpeg&lt;/nowiki&gt;'' donne la liste des fichiers .jpeg contenu dans le répertoire''/home/toto/bazard''. Vous pouvez utiliser un caractère générique pour remplacer les lettres, il faut le faire précéder d'une barre oblique inverse&amp;nbsp;:&lt;nowiki&gt;# find / -name image\*&lt;/nowiki&gt; 
 $ find -name fichier

Afficher le résultat de la recherche, avec les chemins relatifs. 
 $ find -name fichier -print

Indiquer le type de fichier à rechercher. Remplacez ''x'' par ''f'' pour les fichiers, ''d'' pour les répertoires et ''l'' pour les liens symboliques. 
 $ find -type x -name fichier

=== La commande '''less'''  ===

Visualiser ''fichier'' page par page. Utilisez les touches directionnelles haut et bas pour faire défiler le texte, ''q'' pour quitter. 
 $ less fichier

=== La command '''ln''' ===

Créer un lien (un alias ou un raccourci) vers un programme ou un fichier.

 Un lien symbolique :
 ln -s &lt;chemin_complet/fichier ou répertoire de destination&gt; &lt;chemin_complet/nom du lien symbolique&gt;

La commande ln utilisée sans -s créé un exemplaire supplémentaire du fichier ( à développer)

=== La commande '''locate'''  ===

Localiser un fichier. ''Locate'' est un lien symbolique de la commande ''slocate''. Exemple&amp;nbsp;: ''&lt;nowiki&gt;# locate titi&lt;/nowiki&gt;'' affiche la liste des fichiers dont le nom contient le mot ''titi''.''Locate'' affiche tous les noms de fichiers correspondant au critère indiqué. Pour n'afficher que les fichiers autorisés, utilisez ''slocate''.''Locate'' se base sur une base de données de tous les noms de fichiers, mise à jour quotidiennement. Des fichiers récemment créés ne seront donc pas forcément référencés. Pour forcer une mise à jour manuelle, tapez&amp;nbsp;:&lt;nowiki&gt;# updatedb&lt;/nowiki&gt;ou&lt;nowiki&gt;# slocate -u&lt;/nowiki&gt; 
 $ locate x

=== La commande '''ls'''  ===

Lister les fichiers et les sous-répertoires de ''/rep''. 
 $ ls /rep

Lister tous les fichiers du répertoire indiqué, fichiers cachés (dont le nom commence par un point) compris. Si vous n'indiquez pas de répertoire, c'est le contenu du répertoire courant qui est listé. 
 $ ls -a /rep

Afficher tous les sous-répertoires de ''/rep''. 
 $ ls -d /rep

Affichage long&amp;nbsp;: droits, nom et groupe du propriétaire, taille, date de dernière modification.Si vous tapez le nom d'un lien, vous connaîtrez son fichier ou répertoire cible. 
 $ ls -l

Affiche tout le contenu du répertoire de façon détaillée. 
 $ ls -la

Liste le contenu d'un répertoire en donnant pour chaque fichier/répertoire plus de détails qu'un simple ''ls''. 
 $ ls -lh /rep

Liste les fichiers par type. Un fichier suivi d'un slash est un répertoire, un fichier suivi d'une étoile est un fichier exécutable et un fichier suivi d'un ''@'' est un lien. 
 $ ls -F

Liste les fichiers en les séparant par une virgule au lieu de les présenter en colonnes. 
 $ ls -m

En complément de ''-l'', affiche le nom et le groupe des propriétaires en fonction de leur UID et de leur GID. 
 $ ls -n

Liste les fichiers en ordre alphabétique inverse. 
 $ ls -r

Liste les fichiers triés par ordre de taille décroissante. 
 $ ls -S

Liste le contenu de ''/rep'' en triant par date de modification, du plus récent au plus ancien. 
 $ ls -t /rep

Liste les fichiers par type d'extension. 
 $ ls -X

=== La commande '''mknod'''  ===

Pour créer des fichiers de caractères majuscules ou spéciaux. 
 $ mknod

=== La commande '''more'''  ===

Permet de visualiser le contenu de ''fich'' page par page. Utilisez ''Enter'' pour le faire défiler, ''q'' pour quitter.La commande ''&lt;nowiki&gt;# cat fich   more&lt;/nowiki&gt;'' donne le même résultat. 
 $ more fich

=== La commande '''mv'''  ===

Pour déplacer ou renommer un fichier. Exemple&amp;nbsp;:''&lt;nowiki&gt;# mv toto /clown/titi&lt;/nowiki&gt;'' déplacera le fichier ''toto'' dans le répertoire ''clown'' (qui doit exister) et le renommera''titi''. 
 $ mv source destination

Effectue une sauvegarde du fichier avant de le déplacer. 
 $ mv -b

Effectue le déplacement même si la cible existe déjà, et ce sans message d'avertissement. 
 $ mv -f

Demande une confirmation si des fichiers risquent d'être écrasés par le déplacement. 
 $ mv -i

=== La commande '''rm'''  ===

Supprime ''fich''. Une fois un fichier effacé, il n'est plus possible de récupérer son contenu.Il est possible de spécifier plusieurs fichiers à la commande ''rm''&amp;nbsp;: dans ce cas, ils seront tous supprimés.Pour supprimer un fichier dont le nom commence par un tiret -, tapez&amp;nbsp;:&lt;nowiki&gt;# rm -- -lenomdufichier&lt;/nowiki&gt;ou&lt;nowiki&gt;# rm ./-lenomdufichier&lt;/nowiki&gt; 
 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 
 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 
 $ rm -i

=== La commande '''shred''' ===

Extrait du man : Réécrire sur les FICHIERs indiqués, de façon répétée, afin de rendre difficile toute récupération des données, même à l'aide de matériel coûteux.
Cette commande est très pratique pour rendre illisible des fichiers que vous jugez &quot;sensibles&quot; !
Elle fait partie du paque &quot;coreutils&quot;

 $ cat mon_fichier_top_secret
 Top secret - Personne ne doir avoir accès à ce fichier !
 $ shred -fvz -n 10 mon_fichier_top_secret
 shred: mon_fichier_top_secret : passe 1/11 (random)...
 shred: mon_fichier_top_secret : passe 2/11 (ffffff)...
 shred: mon_fichier_top_secret : passe 3/11 (999999)...
 shred: mon_fichier_top_secret : passe 4/11 (222222)...
 shred: mon_fichier_top_secret : passe 5/11 (000000)...
 shred: mon_fichier_top_secret : passe 6/11 (random)...
 shred: mon_fichier_top_secret : passe 7/11 (aaaaaa)...
 shred: mon_fichier_top_secret : passe 8/11 (111111)...
 shred: mon_fichier_top_secret : passe 9/11 (555555)...
 shred: mon_fichier_top_secret : passe 10/11 (random)...
 shred: mon_fichier_top_secret : passe 11/11 (000000)...
 $ cat mon_fichier_top_secret
 $ 

Voyez le man pour l'explication des options utilisées

Et comme tout est fichier, vous pouvez utiliser cette commande pour [[remettre à zéro un disque dur|effacer (et accessoirement tester) un disque dur]]

=== La commande '''slocate'''  ===

Pour afficher la liste des fichiers dont le nom contient le mot ''couic''. La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 
 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe. 

=== La commande '''tac'''  ===

Pour afficher le contenu de ''fich'' à l'écran en commençant par le bas. 
 $ tac fich

=== La commande '''tail'''  ===

Pour afficher les 10 dernières lignes de ''fich''. 
 $ tail fich

Pour afficher les 2 dernières lignes de ''fich''. 
 $ tail -2 fich

=== La commande '''touch'''  ===

Sert normalement à modifier la date de création et de modification du fichier, mais permet aussi de créer le fichier ''fich''. 
 $ touch fich

== Quelques &quot;trucs&quot;  ==

=== Gestion des caractères spéciaux ===
Dans un shell (quelqu'il soit), certains caractères sont dis spéciaux. En effet ils sont interprétés par le shell avant que la commande soit lancée. Les principaux son « », «&amp;», «|», «$», «&quot;», «'», «\»... (la liste n'est pas exaustive).

Si un fichier (ou un dossier) contien l'un des ses caractères dans son nom, cela peut gêner l'utilisation du shell. Pour pallier ce problème il existe 3 solutions :
* la première consiste à faire précédé cahque caractère particulier par un «\» y compris si c'est déjà un «\» (ce qui donne «\\»)
* la deuxième consiste à entourer le fichier par des «&quot;» (dans ce cas si le fichier contient de «&quot;» dans son nom, il faut les protéger avec des «\»). Cette méthode permet de protéger tout les caractères sauf «$», «{» et «}».
* la dernière méthode consiste à entourer le nom de fichier par des «'» (dans le cas où il y a déjà des «'», il faut les protéger avec un «\»

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;'] 

=== Epurer un fichier de ses lignes commentées ===

La commande ci-dessous écrira un nouveau fichier (fichier_sans_commentaires) à partir de &quot;fichier&quot; en enlevant les lignes commentées (commençant par #) :

 grep -v &quot;^#&quot; fichier | grep -v &quot;^$&quot; &gt; fichier_sans_commentaires

[http://forum.debian-fr.org/viewtopic.php?p=269266#p269266 Epurer un fichiers des lignes commençant par #]

=== Fichier commençant par un tiret  ===
Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 
 $ rm -fichier.txt

ne marchera pas, rm croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret.&lt;br&gt;Il faut donc utiliser l'option de fin de commande symbolisée par deux tirest consécutifs --. Pour notre exemple, on tapera&amp;nbsp;: 
 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=4679&amp;start=0  probleme de nom: renommer un fichier commencant par un tiret] 

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 
 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 
 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 
 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 
 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max

[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>2od3n9cfiudmulg0yf7jdd682lt7zxy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4535</id>
      <parentid>4526</parentid>
      <timestamp>2012-10-23T05:33:53Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="14592">{{Ébauche|La gestion des fichiers}}

----
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

= Gestion des fichiers  =

== Quelques commandes  ==

=== La commande '''cat'''  ===

Afficher le contenu du fichier ''fichier'' dans la console. 
 $ cat fichier

Afficher et copier le contenu de ''fichier'' dans ''fichier2''. 
 $ cat fichier &amp;gt; fichier2

Afficher le contenu d'un fichier et numérote les lignes. 
 $ cat -n fichier

=== La commande '''chgrp'''  ===

Changer le groupe auquel appartient un fichier :
 $ chgrp groupe fichier

Affecter un fichier à un groupe. Le changement de groupe peut être réalisé par n'importe quel utilisateur... '''mais''' on ne peut donner un fichier qu'à l'un des groupes dont on est membre.&lt;br&gt;L'administrateur évidemment peut affecter un fichier à n'importe quel groupe d'utilisateur.&lt;br&gt;Exemple&amp;nbsp;:''&lt;nowiki&gt;$ chgrp -R toto /home/titi/rep&lt;/nowiki&gt;'' Le répertoire ''/home/titi/rep/'' et son contenu appartiendront désormais au groupe ''toto''.

=== La commande '''cp'''  ===

Copier un/des fichier(s). Exemple&amp;nbsp;: 
 $ cp fichier /home/toto/vrac

Copier ''fichier_source'' dans ''répertoire_cible''.
 $ cp fichier_source /repertoire_cible/ 

Copier ''repertoire_source'' dans ''repertoire_cible'' sans demander de confirmation.
 $ cp -Rf repertoire_source /repertoire_cible

Attention&amp;nbsp;: Copier un fichier vers un fichier de même nom l'écrasera.&lt;br&gt;Pour copier plusieurs fichiers à la fois, pensez à utiliser les caractères génériques&amp;nbsp;? et *. 

Copier sans écrasement du fichier destination (Le fichier écrasé est sauvegardé, seul le nom du fichier d'origine est modifié (ajout d'un tilde ''~'' à la fin du nom du fichier)) :
 $ cp -b

Prévient celui qui lance la commande de l'existence d'un fichier du même nom et lui demande s'il peut ou non remplacer son contenu. Permet de ne pas écraser par inadvertance des fichiers importants :
 $ cp -i

Afficher le nom des fichiers copiés (-v = verbose ou &quot;verbeux&quot;). Pratique si vous copiez plusieurs fichiers à l'aide des caractères génériques * et/ou&amp;nbsp;? et que vous souhaitez voir le bon déroulement de la multicopie. 
 $ cp -v

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

S'utilise avec les droits &quot;root&quot;

Exemple Pour sauvegarder le MBR du disque hda dans le fichier mbr.sav :
 # dd if=/dev/hda of=mbr.sav bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 9,3797e-05 s, 5,5 MB/s

[[La_commande_dd|Plus d'informations sur la commande dd...]]

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 
 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 
 $ file fichier

=== La commande '''find'''  ===

Rechercher de ''fichier''. Ex&amp;nbsp;:''&lt;nowiki&gt;# find /home/toto/bazard -name *.jpeg&lt;/nowiki&gt;'' donne la liste des fichiers .jpeg contenu dans le répertoire''/home/toto/bazard''. Vous pouvez utiliser un caractère générique pour remplacer les lettres, il faut le faire précéder d'une barre oblique inverse&amp;nbsp;:&lt;nowiki&gt;# find / -name image\*&lt;/nowiki&gt; 
 $ find -name fichier

Afficher le résultat de la recherche, avec les chemins relatifs. 
 $ find -name fichier -print

Indiquer le type de fichier à rechercher. Remplacez ''x'' par ''f'' pour les fichiers, ''d'' pour les répertoires et ''l'' pour les liens symboliques. 
 $ find -type x -name fichier

=== La commande '''less'''  ===

Visualiser ''fichier'' page par page. Utilisez les touches directionnelles haut et bas pour faire défiler le texte, ''q'' pour quitter. 
 $ less fichier

=== La command '''ln''' ===

Créer un lien (un alias ou un raccourci) vers un programme ou un fichier.

 Un lien symbolique :
 ln -s &lt;chemin_complet/fichier ou répertoire de destination&gt; &lt;chemin_complet/nom du lien symbolique&gt;

La commande ln utilisée sans -s créé un exemplaire supplémentaire du fichier ( à développer)

=== La commande '''locate'''  ===

Localiser un fichier. ''Locate'' est un lien symbolique de la commande ''slocate''. Exemple&amp;nbsp;: ''&lt;nowiki&gt;# locate titi&lt;/nowiki&gt;'' affiche la liste des fichiers dont le nom contient le mot ''titi''.''Locate'' affiche tous les noms de fichiers correspondant au critère indiqué. Pour n'afficher que les fichiers autorisés, utilisez ''slocate''.''Locate'' se base sur une base de données de tous les noms de fichiers, mise à jour quotidiennement. Des fichiers récemment créés ne seront donc pas forcément référencés. Pour forcer une mise à jour manuelle, tapez&amp;nbsp;:&lt;nowiki&gt;# updatedb&lt;/nowiki&gt;ou&lt;nowiki&gt;# slocate -u&lt;/nowiki&gt; 
 $ locate x

=== La commande '''ls'''  ===

Lister les fichiers et les sous-répertoires de ''/rep''. 
 $ ls /rep

Lister tous les fichiers du répertoire indiqué, fichiers cachés (dont le nom commence par un point) compris. Si vous n'indiquez pas de répertoire, c'est le contenu du répertoire courant qui est listé. 
 $ ls -a /rep

Afficher tous les sous-répertoires de ''/rep''. 
 $ ls -d /rep

Affichage long&amp;nbsp;: droits, nom et groupe du propriétaire, taille, date de dernière modification.Si vous tapez le nom d'un lien, vous connaîtrez son fichier ou répertoire cible. 
 $ ls -l

Affiche tout le contenu du répertoire de façon détaillée. 
 $ ls -la

Liste le contenu d'un répertoire en donnant pour chaque fichier/répertoire plus de détails qu'un simple ''ls''. 
 $ ls -lh /rep

Liste les fichiers par type. Un fichier suivi d'un slash est un répertoire, un fichier suivi d'une étoile est un fichier exécutable et un fichier suivi d'un ''@'' est un lien. 
 $ ls -F

Liste les fichiers en les séparant par une virgule au lieu de les présenter en colonnes. 
 $ ls -m

En complément de ''-l'', affiche le nom et le groupe des propriétaires en fonction de leur UID et de leur GID. 
 $ ls -n

Liste les fichiers en ordre alphabétique inverse. 
 $ ls -r

Liste les fichiers triés par ordre de taille décroissante. 
 $ ls -S

Liste le contenu de ''/rep'' en triant par date de modification, du plus récent au plus ancien. 
 $ ls -t /rep

Liste les fichiers par type d'extension. 
 $ ls -X

=== La commande '''mknod'''  ===

Pour créer des fichiers de caractères majuscules ou spéciaux. 
 $ mknod

=== La commande '''more'''  ===

Permet de visualiser le contenu de ''fich'' page par page. Utilisez ''Enter'' pour le faire défiler, ''q'' pour quitter.La commande ''&lt;nowiki&gt;# cat fich   more&lt;/nowiki&gt;'' donne le même résultat. 
 $ more fich

=== La commande '''mv'''  ===

Pour déplacer ou renommer un fichier. Exemple&amp;nbsp;:''&lt;nowiki&gt;# mv toto /clown/titi&lt;/nowiki&gt;'' déplacera le fichier ''toto'' dans le répertoire ''clown'' (qui doit exister) et le renommera''titi''. 
 $ mv source destination

Effectue une sauvegarde du fichier avant de le déplacer. 
 $ mv -b

Effectue le déplacement même si la cible existe déjà, et ce sans message d'avertissement. 
 $ mv -f

Demande une confirmation si des fichiers risquent d'être écrasés par le déplacement. 
 $ mv -i

=== La commande '''rm'''  ===

Supprime ''fich''. Une fois un fichier effacé, il n'est plus possible de récupérer son contenu.Il est possible de spécifier plusieurs fichiers à la commande ''rm''&amp;nbsp;: dans ce cas, ils seront tous supprimés.Pour supprimer un fichier dont le nom commence par un tiret -, tapez&amp;nbsp;:&lt;nowiki&gt;# rm -- -lenomdufichier&lt;/nowiki&gt;ou&lt;nowiki&gt;# rm ./-lenomdufichier&lt;/nowiki&gt; 
 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 
 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 
 $ rm -i

=== La commande '''shred''' ===

Extrait du man : Réécrire sur les FICHIERs indiqués, de façon répétée, afin de rendre difficile toute récupération des données, même à l'aide de matériel coûteux.
Cette commande est très pratique pour rendre illisible des fichiers que vous jugez &quot;sensibles&quot; !
Elle fait partie du paque &quot;coreutils&quot;

 $ cat mon_fichier_top_secret
 Top secret - Personne ne doir avoir accès à ce fichier !
 $ shred -fvz -n 10 mon_fichier_top_secret
 shred: mon_fichier_top_secret : passe 1/11 (random)...
 shred: mon_fichier_top_secret : passe 2/11 (ffffff)...
 shred: mon_fichier_top_secret : passe 3/11 (999999)...
 shred: mon_fichier_top_secret : passe 4/11 (222222)...
 shred: mon_fichier_top_secret : passe 5/11 (000000)...
 shred: mon_fichier_top_secret : passe 6/11 (random)...
 shred: mon_fichier_top_secret : passe 7/11 (aaaaaa)...
 shred: mon_fichier_top_secret : passe 8/11 (111111)...
 shred: mon_fichier_top_secret : passe 9/11 (555555)...
 shred: mon_fichier_top_secret : passe 10/11 (random)...
 shred: mon_fichier_top_secret : passe 11/11 (000000)...
 $ cat mon_fichier_top_secret
 $ 

Voyez le man pour l'explication des options utilisées

Et comme tout est fichier, vous pouvez utiliser cette commande pour [[remettre à zéro un disque dur|effacer (et accessoirement tester) un disque dur]]

=== La commande '''slocate'''  ===

Pour afficher la liste des fichiers dont le nom contient le mot ''couic''. La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 
 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe. 

=== La commande '''tac'''  ===

Pour afficher le contenu de ''fich'' à l'écran en commençant par le bas. 
 $ tac fich

=== La commande '''tail'''  ===

Pour afficher les 10 dernières lignes de ''fich''. 
 $ tail fich

Pour afficher les 2 dernières lignes de ''fich''. 
 $ tail -2 fich

=== La commande '''touch'''  ===

Sert normalement à modifier la date de création et de modification du fichier, mais permet aussi de créer le fichier ''fich''. 
 $ touch fich

== Quelques &quot;trucs&quot;  ==

=== Gestion des caractères spéciaux ===
Dans un shell (quelqu'il soit), certains caractères sont dis spéciaux. En effet ils sont interprétés par le shell avant que la commande soit lancée. Les principaux son « », «&amp;», «|», «$», «&quot;», «'», «\»... (la liste n'est pas exaustive).

Si un fichier (ou un dossier) contien l'un des ses caractères dans son nom, cela peut gêner l'utilisation du shell. Pour pallier ce problème il existe 3 solutions :
* la première consiste à faire précédé cahque caractère particulier par un «\» y compris si c'est déjà un «\» (ce qui donne «\\»)
* la deuxième consiste à entourer le fichier par des «&quot;» (dans ce cas si le fichier contient de «&quot;» dans son nom, il faut les protéger avec des «\»). Cette méthode permet de protéger tout les caractères sauf «$», «{» et «}».
* la dernière méthode consiste à entourer le nom de fichier par des «'» (dans le cas où il y a déjà des «'», il faut les protéger avec un «\»

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;'] 

=== Epurer un fichier de ses lignes commentées ===

La commande ci-dessous écrira un nouveau fichier (fichier_sans_commentaires) à partir de &quot;fichier&quot; en enlevant les lignes commentées (commençant par #) :

 grep -v &quot;^#&quot; fichier | grep -v &quot;^$&quot; &gt; fichier_sans_commentaires

[http://forum.debian-fr.org/viewtopic.php?p=269266#p269266 Epurer un fichiers des lignes commençant par #]

=== Fichier commençant par un tiret  ===
Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 
 $ rm -fichier.txt

ne marchera pas, rm croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret.&lt;br&gt;Il faut donc utiliser l'option de fin de commande symbolisée par deux tirest consécutifs --. Pour notre exemple, on tapera&amp;nbsp;: 
 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=4679&amp;start=0  probleme de nom: renommer un fichier commencant par un tiret] 

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 
 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 
 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 
 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 
 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max

[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>i3diuaf88nj3m4p12fc2gz7epfk38jf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5329</id>
      <parentid>4535</parentid>
      <timestamp>2013-08-04T17:58:48Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>/* Gestion des fichiers */ Début de remise en forme de cette page (ne pas valider svp)</comment>
      <text xml:space="preserve" bytes="13768">{{Ébauche|La gestion des fichiers}}

----
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

= Gestion des fichiers  =

== Lire le contenu d'un fichier  ==

La commande la plus simple pour lire le contenu d'un fichier est la commande cat.
 $ cat fichier

''cat'' cat affiche l'ensemble du fichier sur le terminal, si le fichier est trop grand il va être nécessaire de remonter pour voir le début de celui-ci. Pour ne pas avoir se problème il est possible soit d'utiliser la commande ''tac'' (''cat'' à l'envers) qui écris sur le terminal le fichier de la fin au début ou utiliser un « pager ».

Un pager est un logiciel qui va vous permettre d'avoir un affichage paginé dans le quel il seras plus facile de naviguer pour monter ou descendre dans le fichier. Les 2 pagers les plus connus et installé par défaut sur Debian sont ''more'' et ''less''. ''less'' est plus récent et offre plus de fonctionnalité. Ils s'utilisent comme cat.

=== tail/head ===

Les commandes ''tail'' et ''head'' permettent d'afficher respectivement la fin et le début des fichiers.

== Trouver un fichier ==

Les deux commandes les plus courantes pour trouver un fichier sont ''locate'' et ''find''.

''locate'' est très rapide il recherche à partir d'un fichier d'index. Ce qui signifie qu'il ne voit pas immédiatement les nouveaux fichiers, il faut attendre un peu ou lancer la commande ''updatedb'' pour mettre à jour cet index. ''locate'' s'utilise ainsi :
 $ locate machin

et il écrira sur le terminal l'ensemble des chemins de fichiers dont le nom contient « machin » où qu'ils soient sur le disque dur.

''find'' effectue une recherche dans un dossier spécifié. Il s'utilise principalement ainsi :
 $ find [dossier] [-name nom]

(ce qui es entre [] est optionnel)

Il va rechercher dans le dossier ''dossier'' les fichiers de nom ''nom''. Il est possible d'appliquer une grande variété de condition pour n'fficher que les dossier ou les fichiers d'un certain âge par exemple.

==== slocate ====

Pour afficher la liste des fichiers dont le nom contient le mot ''couic''. La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 
 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe. 

== Supprimer un fichier ==

Pour supprimer un fichier, on utilise la commande ''rm'' (il est possible de donner plusieurs fichiers) :
 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 
 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 
 $ rm -i

=== shred ===

Extrait du man : Réécrire sur les FICHIERs indiqués, de façon répétée, afin de rendre difficile toute récupération des données, même à l'aide de matériel coûteux.
Cette commande est très pratique pour rendre illisible des fichiers que vous jugez &quot;sensibles&quot; !
Elle fait partie du paque &quot;coreutils&quot;

 $ cat mon_fichier_top_secret
 Top secret - Personne ne doir avoir accès à ce fichier !
 $ shred -fvz -n 10 mon_fichier_top_secret
 shred: mon_fichier_top_secret : passe 1/11 (random)...
 shred: mon_fichier_top_secret : passe 2/11 (ffffff)...
 shred: mon_fichier_top_secret : passe 3/11 (999999)...
 shred: mon_fichier_top_secret : passe 4/11 (222222)...
 shred: mon_fichier_top_secret : passe 5/11 (000000)...
 shred: mon_fichier_top_secret : passe 6/11 (random)...
 shred: mon_fichier_top_secret : passe 7/11 (aaaaaa)...
 shred: mon_fichier_top_secret : passe 8/11 (111111)...
 shred: mon_fichier_top_secret : passe 9/11 (555555)...
 shred: mon_fichier_top_secret : passe 10/11 (random)...
 shred: mon_fichier_top_secret : passe 11/11 (000000)...
 $ cat mon_fichier_top_secret
 $ 

Voyez le man pour l'explication des options utilisées

Et comme tout est fichier, vous pouvez utiliser cette commande pour [[remettre à zéro un disque dur|effacer (et accessoirement tester) un disque dur]]

== Quelques commandes  ==

=== La commande '''chgrp'''  ===

Changer le groupe auquel appartient un fichier :
 $ chgrp groupe fichier

Affecter un fichier à un groupe. Le changement de groupe peut être réalisé par n'importe quel utilisateur... '''mais''' on ne peut donner un fichier qu'à l'un des groupes dont on est membre.&lt;br&gt;L'administrateur évidemment peut affecter un fichier à n'importe quel groupe d'utilisateur.&lt;br&gt;Exemple&amp;nbsp;:''&lt;nowiki&gt;$ chgrp -R toto /home/titi/rep&lt;/nowiki&gt;'' Le répertoire ''/home/titi/rep/'' et son contenu appartiendront désormais au groupe ''toto''.

=== La commande '''cp'''  ===

Copier un/des fichier(s). Exemple&amp;nbsp;: 
 $ cp fichier /home/toto/vrac

Copier ''fichier_source'' dans ''répertoire_cible''.
 $ cp fichier_source /repertoire_cible/ 

Copier ''repertoire_source'' dans ''repertoire_cible'' sans demander de confirmation.
 $ cp -Rf repertoire_source /repertoire_cible

Attention&amp;nbsp;: Copier un fichier vers un fichier de même nom l'écrasera.&lt;br&gt;Pour copier plusieurs fichiers à la fois, pensez à utiliser les caractères génériques&amp;nbsp;? et *. 

Copier sans écrasement du fichier destination (Le fichier écrasé est sauvegardé, seul le nom du fichier d'origine est modifié (ajout d'un tilde ''~'' à la fin du nom du fichier)) :
 $ cp -b

Prévient celui qui lance la commande de l'existence d'un fichier du même nom et lui demande s'il peut ou non remplacer son contenu. Permet de ne pas écraser par inadvertance des fichiers importants :
 $ cp -i

Afficher le nom des fichiers copiés (-v = verbose ou &quot;verbeux&quot;). Pratique si vous copiez plusieurs fichiers à l'aide des caractères génériques * et/ou&amp;nbsp;? et que vous souhaitez voir le bon déroulement de la multicopie. 
 $ cp -v

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

S'utilise avec les droits &quot;root&quot;

Exemple Pour sauvegarder le MBR du disque hda dans le fichier mbr.sav :
 # dd if=/dev/hda of=mbr.sav bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 9,3797e-05 s, 5,5 MB/s

[[La_commande_dd|Plus d'informations sur la commande dd...]]

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 
 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 
 $ file fichier

=== La command '''ln''' ===

Créer un lien (un alias ou un raccourci) vers un programme ou un fichier.

 Un lien symbolique :
 ln -s &lt;chemin_complet/fichier ou répertoire de destination&gt; &lt;chemin_complet/nom du lien symbolique&gt;

La commande ln utilisée sans -s créé un exemplaire supplémentaire du fichier ( à développer)

=== La commande '''ls'''  ===

Lister les fichiers et les sous-répertoires de ''/rep''. 
 $ ls /rep

Lister tous les fichiers du répertoire indiqué, fichiers cachés (dont le nom commence par un point) compris. Si vous n'indiquez pas de répertoire, c'est le contenu du répertoire courant qui est listé. 
 $ ls -a /rep

Afficher tous les sous-répertoires de ''/rep''. 
 $ ls -d /rep

Affichage long&amp;nbsp;: droits, nom et groupe du propriétaire, taille, date de dernière modification.Si vous tapez le nom d'un lien, vous connaîtrez son fichier ou répertoire cible. 
 $ ls -l

Affiche tout le contenu du répertoire de façon détaillée. 
 $ ls -la

Liste le contenu d'un répertoire en donnant pour chaque fichier/répertoire plus de détails qu'un simple ''ls''. 
 $ ls -lh /rep

Liste les fichiers par type. Un fichier suivi d'un slash est un répertoire, un fichier suivi d'une étoile est un fichier exécutable et un fichier suivi d'un ''@'' est un lien. 
 $ ls -F

Liste les fichiers en les séparant par une virgule au lieu de les présenter en colonnes. 
 $ ls -m

En complément de ''-l'', affiche le nom et le groupe des propriétaires en fonction de leur UID et de leur GID. 
 $ ls -n

Liste les fichiers en ordre alphabétique inverse. 
 $ ls -r

Liste les fichiers triés par ordre de taille décroissante. 
 $ ls -S

Liste le contenu de ''/rep'' en triant par date de modification, du plus récent au plus ancien. 
 $ ls -t /rep

Liste les fichiers par type d'extension. 
 $ ls -X

=== La commande '''mknod'''  ===

Pour créer des fichiers de caractères majuscules ou spéciaux. 
 $ mknod

=== La commande '''mv'''  ===

Pour déplacer ou renommer un fichier. Exemple&amp;nbsp;:''&lt;nowiki&gt;# mv toto /clown/titi&lt;/nowiki&gt;'' déplacera le fichier ''toto'' dans le répertoire ''clown'' (qui doit exister) et le renommera''titi''. 
 $ mv source destination

Effectue une sauvegarde du fichier avant de le déplacer. 
 $ mv -b

Effectue le déplacement même si la cible existe déjà, et ce sans message d'avertissement. 
 $ mv -f

Demande une confirmation si des fichiers risquent d'être écrasés par le déplacement. 
 $ mv -i

=== La commande '''touch'''  ===

Sert normalement à modifier la date de création et de modification du fichier, mais permet aussi de créer le fichier ''fich''. 
 $ touch fich

== Quelques &quot;trucs&quot;  ==

=== Gestion des caractères spéciaux ===
Dans un shell (quelqu'il soit), certains caractères sont dis spéciaux. En effet ils sont interprétés par le shell avant que la commande soit lancée. Les principaux son « », «&amp;», «|», «$», «&quot;», «'», «\»... (la liste n'est pas exaustive).

Si un fichier (ou un dossier) contien l'un des ses caractères dans son nom, cela peut gêner l'utilisation du shell. Pour pallier ce problème il existe 3 solutions :
* la première consiste à faire précédé cahque caractère particulier par un «\» y compris si c'est déjà un «\» (ce qui donne «\\»)
* la deuxième consiste à entourer le fichier par des «&quot;» (dans ce cas si le fichier contient de «&quot;» dans son nom, il faut les protéger avec des «\»). Cette méthode permet de protéger tout les caractères sauf «$», «{» et «}».
* la dernière méthode consiste à entourer le nom de fichier par des «'» (dans le cas où il y a déjà des «'», il faut les protéger avec un «\»

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;'] 

=== Epurer un fichier de ses lignes commentées ===

La commande ci-dessous écrira un nouveau fichier (fichier_sans_commentaires) à partir de &quot;fichier&quot; en enlevant les lignes commentées (commençant par #) :

 grep -v &quot;^#&quot; fichier | grep -v &quot;^$&quot; &gt; fichier_sans_commentaires

[http://forum.debian-fr.org/viewtopic.php?p=269266#p269266 Epurer un fichiers des lignes commençant par #]

=== Fichier commençant par un tiret  ===
Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 
 $ rm -fichier.txt

ne marchera pas, rm croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret.&lt;br&gt;Il faut donc utiliser l'option de fin de commande symbolisée par deux tirest consécutifs --. Pour notre exemple, on tapera&amp;nbsp;: 
 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=4679&amp;start=0  probleme de nom: renommer un fichier commencant par un tiret] 

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 
 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 
 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 
 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 
 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max

[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>9t2wg5h2mg3tkz7fyfcxnqlivwh189k</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5330</id>
      <parentid>5329</parentid>
      <timestamp>2013-08-04T17:59:46Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>/* La commande mknod */ mknod n'est pas une commande de base</comment>
      <text xml:space="preserve" bytes="13658">{{Ébauche|La gestion des fichiers}}

----
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

= Gestion des fichiers  =

== Lire le contenu d'un fichier  ==

La commande la plus simple pour lire le contenu d'un fichier est la commande cat.
 $ cat fichier

''cat'' cat affiche l'ensemble du fichier sur le terminal, si le fichier est trop grand il va être nécessaire de remonter pour voir le début de celui-ci. Pour ne pas avoir se problème il est possible soit d'utiliser la commande ''tac'' (''cat'' à l'envers) qui écris sur le terminal le fichier de la fin au début ou utiliser un « pager ».

Un pager est un logiciel qui va vous permettre d'avoir un affichage paginé dans le quel il seras plus facile de naviguer pour monter ou descendre dans le fichier. Les 2 pagers les plus connus et installé par défaut sur Debian sont ''more'' et ''less''. ''less'' est plus récent et offre plus de fonctionnalité. Ils s'utilisent comme cat.

=== tail/head ===

Les commandes ''tail'' et ''head'' permettent d'afficher respectivement la fin et le début des fichiers.

== Trouver un fichier ==

Les deux commandes les plus courantes pour trouver un fichier sont ''locate'' et ''find''.

''locate'' est très rapide il recherche à partir d'un fichier d'index. Ce qui signifie qu'il ne voit pas immédiatement les nouveaux fichiers, il faut attendre un peu ou lancer la commande ''updatedb'' pour mettre à jour cet index. ''locate'' s'utilise ainsi :
 $ locate machin

et il écrira sur le terminal l'ensemble des chemins de fichiers dont le nom contient « machin » où qu'ils soient sur le disque dur.

''find'' effectue une recherche dans un dossier spécifié. Il s'utilise principalement ainsi :
 $ find [dossier] [-name nom]

(ce qui es entre [] est optionnel)

Il va rechercher dans le dossier ''dossier'' les fichiers de nom ''nom''. Il est possible d'appliquer une grande variété de condition pour n'fficher que les dossier ou les fichiers d'un certain âge par exemple.

==== slocate ====

Pour afficher la liste des fichiers dont le nom contient le mot ''couic''. La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 
 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe. 

== Supprimer un fichier ==

Pour supprimer un fichier, on utilise la commande ''rm'' (il est possible de donner plusieurs fichiers) :
 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 
 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 
 $ rm -i

=== shred ===

Extrait du man : Réécrire sur les FICHIERs indiqués, de façon répétée, afin de rendre difficile toute récupération des données, même à l'aide de matériel coûteux.
Cette commande est très pratique pour rendre illisible des fichiers que vous jugez &quot;sensibles&quot; !
Elle fait partie du paque &quot;coreutils&quot;

 $ cat mon_fichier_top_secret
 Top secret - Personne ne doir avoir accès à ce fichier !
 $ shred -fvz -n 10 mon_fichier_top_secret
 shred: mon_fichier_top_secret : passe 1/11 (random)...
 shred: mon_fichier_top_secret : passe 2/11 (ffffff)...
 shred: mon_fichier_top_secret : passe 3/11 (999999)...
 shred: mon_fichier_top_secret : passe 4/11 (222222)...
 shred: mon_fichier_top_secret : passe 5/11 (000000)...
 shred: mon_fichier_top_secret : passe 6/11 (random)...
 shred: mon_fichier_top_secret : passe 7/11 (aaaaaa)...
 shred: mon_fichier_top_secret : passe 8/11 (111111)...
 shred: mon_fichier_top_secret : passe 9/11 (555555)...
 shred: mon_fichier_top_secret : passe 10/11 (random)...
 shred: mon_fichier_top_secret : passe 11/11 (000000)...
 $ cat mon_fichier_top_secret
 $ 

Voyez le man pour l'explication des options utilisées

Et comme tout est fichier, vous pouvez utiliser cette commande pour [[remettre à zéro un disque dur|effacer (et accessoirement tester) un disque dur]]

== Quelques commandes  ==

=== La commande '''chgrp'''  ===

Changer le groupe auquel appartient un fichier :
 $ chgrp groupe fichier

Affecter un fichier à un groupe. Le changement de groupe peut être réalisé par n'importe quel utilisateur... '''mais''' on ne peut donner un fichier qu'à l'un des groupes dont on est membre.&lt;br&gt;L'administrateur évidemment peut affecter un fichier à n'importe quel groupe d'utilisateur.&lt;br&gt;Exemple&amp;nbsp;:''&lt;nowiki&gt;$ chgrp -R toto /home/titi/rep&lt;/nowiki&gt;'' Le répertoire ''/home/titi/rep/'' et son contenu appartiendront désormais au groupe ''toto''.

=== La commande '''cp'''  ===

Copier un/des fichier(s). Exemple&amp;nbsp;: 
 $ cp fichier /home/toto/vrac

Copier ''fichier_source'' dans ''répertoire_cible''.
 $ cp fichier_source /repertoire_cible/ 

Copier ''repertoire_source'' dans ''repertoire_cible'' sans demander de confirmation.
 $ cp -Rf repertoire_source /repertoire_cible

Attention&amp;nbsp;: Copier un fichier vers un fichier de même nom l'écrasera.&lt;br&gt;Pour copier plusieurs fichiers à la fois, pensez à utiliser les caractères génériques&amp;nbsp;? et *. 

Copier sans écrasement du fichier destination (Le fichier écrasé est sauvegardé, seul le nom du fichier d'origine est modifié (ajout d'un tilde ''~'' à la fin du nom du fichier)) :
 $ cp -b

Prévient celui qui lance la commande de l'existence d'un fichier du même nom et lui demande s'il peut ou non remplacer son contenu. Permet de ne pas écraser par inadvertance des fichiers importants :
 $ cp -i

Afficher le nom des fichiers copiés (-v = verbose ou &quot;verbeux&quot;). Pratique si vous copiez plusieurs fichiers à l'aide des caractères génériques * et/ou&amp;nbsp;? et que vous souhaitez voir le bon déroulement de la multicopie. 
 $ cp -v

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

S'utilise avec les droits &quot;root&quot;

Exemple Pour sauvegarder le MBR du disque hda dans le fichier mbr.sav :
 # dd if=/dev/hda of=mbr.sav bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 9,3797e-05 s, 5,5 MB/s

[[La_commande_dd|Plus d'informations sur la commande dd...]]

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 
 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 
 $ file fichier

=== La command '''ln''' ===

Créer un lien (un alias ou un raccourci) vers un programme ou un fichier.

 Un lien symbolique :
 ln -s &lt;chemin_complet/fichier ou répertoire de destination&gt; &lt;chemin_complet/nom du lien symbolique&gt;

La commande ln utilisée sans -s créé un exemplaire supplémentaire du fichier ( à développer)

=== La commande '''ls'''  ===

Lister les fichiers et les sous-répertoires de ''/rep''. 
 $ ls /rep

Lister tous les fichiers du répertoire indiqué, fichiers cachés (dont le nom commence par un point) compris. Si vous n'indiquez pas de répertoire, c'est le contenu du répertoire courant qui est listé. 
 $ ls -a /rep

Afficher tous les sous-répertoires de ''/rep''. 
 $ ls -d /rep

Affichage long&amp;nbsp;: droits, nom et groupe du propriétaire, taille, date de dernière modification.Si vous tapez le nom d'un lien, vous connaîtrez son fichier ou répertoire cible. 
 $ ls -l

Affiche tout le contenu du répertoire de façon détaillée. 
 $ ls -la

Liste le contenu d'un répertoire en donnant pour chaque fichier/répertoire plus de détails qu'un simple ''ls''. 
 $ ls -lh /rep

Liste les fichiers par type. Un fichier suivi d'un slash est un répertoire, un fichier suivi d'une étoile est un fichier exécutable et un fichier suivi d'un ''@'' est un lien. 
 $ ls -F

Liste les fichiers en les séparant par une virgule au lieu de les présenter en colonnes. 
 $ ls -m

En complément de ''-l'', affiche le nom et le groupe des propriétaires en fonction de leur UID et de leur GID. 
 $ ls -n

Liste les fichiers en ordre alphabétique inverse. 
 $ ls -r

Liste les fichiers triés par ordre de taille décroissante. 
 $ ls -S

Liste le contenu de ''/rep'' en triant par date de modification, du plus récent au plus ancien. 
 $ ls -t /rep

Liste les fichiers par type d'extension. 
 $ ls -X

=== La commande '''mv'''  ===

Pour déplacer ou renommer un fichier. Exemple&amp;nbsp;:''&lt;nowiki&gt;# mv toto /clown/titi&lt;/nowiki&gt;'' déplacera le fichier ''toto'' dans le répertoire ''clown'' (qui doit exister) et le renommera''titi''. 
 $ mv source destination

Effectue une sauvegarde du fichier avant de le déplacer. 
 $ mv -b

Effectue le déplacement même si la cible existe déjà, et ce sans message d'avertissement. 
 $ mv -f

Demande une confirmation si des fichiers risquent d'être écrasés par le déplacement. 
 $ mv -i

=== La commande '''touch'''  ===

Sert normalement à modifier la date de création et de modification du fichier, mais permet aussi de créer le fichier ''fich''. 
 $ touch fich

== Quelques &quot;trucs&quot;  ==

=== Gestion des caractères spéciaux ===
Dans un shell (quelqu'il soit), certains caractères sont dis spéciaux. En effet ils sont interprétés par le shell avant que la commande soit lancée. Les principaux son « », «&amp;», «|», «$», «&quot;», «'», «\»... (la liste n'est pas exaustive).

Si un fichier (ou un dossier) contien l'un des ses caractères dans son nom, cela peut gêner l'utilisation du shell. Pour pallier ce problème il existe 3 solutions :
* la première consiste à faire précédé cahque caractère particulier par un «\» y compris si c'est déjà un «\» (ce qui donne «\\»)
* la deuxième consiste à entourer le fichier par des «&quot;» (dans ce cas si le fichier contient de «&quot;» dans son nom, il faut les protéger avec des «\»). Cette méthode permet de protéger tout les caractères sauf «$», «{» et «}».
* la dernière méthode consiste à entourer le nom de fichier par des «'» (dans le cas où il y a déjà des «'», il faut les protéger avec un «\»

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;'] 

=== Epurer un fichier de ses lignes commentées ===

La commande ci-dessous écrira un nouveau fichier (fichier_sans_commentaires) à partir de &quot;fichier&quot; en enlevant les lignes commentées (commençant par #) :

 grep -v &quot;^#&quot; fichier | grep -v &quot;^$&quot; &gt; fichier_sans_commentaires

[http://forum.debian-fr.org/viewtopic.php?p=269266#p269266 Epurer un fichiers des lignes commençant par #]

=== Fichier commençant par un tiret  ===
Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 
 $ rm -fichier.txt

ne marchera pas, rm croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret.&lt;br&gt;Il faut donc utiliser l'option de fin de commande symbolisée par deux tirest consécutifs --. Pour notre exemple, on tapera&amp;nbsp;: 
 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=4679&amp;start=0  probleme de nom: renommer un fichier commencant par un tiret] 

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 
 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 
 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 
 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 
 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max

[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>ds9uyvlqbatdg1yifn8434kjcivjkdz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5332</id>
      <parentid>5330</parentid>
      <timestamp>2013-08-04T23:10:33Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>J'ai un peu avancé…</comment>
      <text xml:space="preserve" bytes="14718">{{Ébauche|La gestion des fichiers}}

----
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

Lo'bjectif est de vous présenter quelques commandes de bases pour vous mettre le pied à l'étrier avec votre terminal. Nous ne pouvons pas être exhaustif car toutes les commandes possèdent un grand nombre d'options. Elles ne seront donc que rarement présentées ici. Pour les connaître il faut utiliser la commande ''man''. Il s'agit de la commande la plus imporante car elle vous explique comment fonctionne les autres commandes. C'est le manuel.

Par exemple pour connaître la liste des possibilités de la commande ''ls'' utilisez la commande :
 $ man ls

= Gestion des fichiers  =

== Lire le contenu d'un fichier  ==

La commande la plus simple pour lire le contenu d'un fichier est la commande cat.
 $ cat fichier

''cat'' cat affiche l'ensemble du fichier sur le terminal, si le fichier est trop grand il va être nécessaire de remonter pour voir le début de celui-ci. Pour ne pas avoir se problème il est possible soit d'utiliser la commande ''tac'' (''cat'' à l'envers) qui écris sur le terminal le fichier de la fin au début ou utiliser un « pager ».

Un pager est un logiciel qui va vous permettre d'avoir un affichage paginé dans le quel il seras plus facile de naviguer pour monter ou descendre dans le fichier. Les 2 pagers les plus connus et installé par défaut sur Debian sont ''more'' et ''less''. ''less'' est plus récent et offre plus de fonctionnalité. Ils s'utilisent comme cat.

=== tail/head ===

Les commandes ''tail'' et ''head'' permettent d'afficher respectivement la fin et le début des fichiers.

== Trouver un fichier ==

Les deux commandes les plus courantes pour trouver un fichier sont ''locate'' et ''find''.

''locate'' est très rapide il recherche à partir d'un fichier d'index. Ce qui signifie qu'il ne voit pas immédiatement les nouveaux fichiers, il faut attendre un peu ou lancer la commande ''updatedb'' pour mettre à jour cet index. ''locate'' s'utilise ainsi :
 $ locate machin

et il écrira sur le terminal l'ensemble des chemins de fichiers dont le nom contient « machin » où qu'ils soient sur le disque dur.

''find'' effectue une recherche dans un dossier spécifié. Il s'utilise principalement ainsi :
 $ find [dossier] [-name nom]

(ce qui es entre [] est optionnel)

Il va rechercher dans le dossier ''dossier'' les fichiers de nom ''nom''. Il est possible d'appliquer une grande variété de condition pour n'fficher que les dossier ou les fichiers d'un certain âge par exemple.

==== slocate ====

Pour afficher la liste des fichiers dont le nom contient le mot ''couic''. La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 
 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe. 

== Supprimer un fichier ==

Pour supprimer un fichier, on utilise la commande ''rm'' (il est possible de donner plusieurs fichiers) :
 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 
 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 
 $ rm -i

=== shred ===

Extrait du man : Réécrire sur les FICHIERs indiqués, de façon répétée, afin de rendre difficile toute récupération des données, même à l'aide de matériel coûteux.
Cette commande est très pratique pour rendre illisible des fichiers que vous jugez &quot;sensibles&quot; !
Elle fait partie du paque &quot;coreutils&quot;

 $ cat mon_fichier_top_secret
 Top secret - Personne ne doir avoir accès à ce fichier !
 $ shred -fvz -n 10 mon_fichier_top_secret
 shred: mon_fichier_top_secret : passe 1/11 (random)...
 shred: mon_fichier_top_secret : passe 2/11 (ffffff)...
 shred: mon_fichier_top_secret : passe 3/11 (999999)...
 shred: mon_fichier_top_secret : passe 4/11 (222222)...
 shred: mon_fichier_top_secret : passe 5/11 (000000)...
 shred: mon_fichier_top_secret : passe 6/11 (random)...
 shred: mon_fichier_top_secret : passe 7/11 (aaaaaa)...
 shred: mon_fichier_top_secret : passe 8/11 (111111)...
 shred: mon_fichier_top_secret : passe 9/11 (555555)...
 shred: mon_fichier_top_secret : passe 10/11 (random)...
 shred: mon_fichier_top_secret : passe 11/11 (000000)...
 $ cat mon_fichier_top_secret
 $ 

Voyez le man pour l'explication des options utilisées

Et comme tout est fichier, vous pouvez utiliser cette commande pour [[remettre à zéro un disque dur|effacer (et accessoirement tester) un disque dur]]

== Gérer les répertoires ==

Par défaut vous arrivez à l'ouverture du terminal dans votre dossier personnel (par défaut ''/home/&lt;login&gt;'').
Pour savoir dans quel dossier vous êtes, utilisez la commande ''pwd'' :
 $ pwd
 /home/monlogin

=== Pour changer de répertoire ===

Il faut utiliser la commande ''cd'' suivi du chemin vers le répertoire où vous souhaitez aller.
 $ cd /mon/dossier

Si on omet le dossier, on arrive dans le dossier personnel de l'utilisateur.

=== Pour lister le contenu d'un répertoire ===

Ik faut utiliser la commande ''ls'' pour lister le contenu des répertoires. Il est suivi du (ou des) dossier que l'on veut regarder, si on ne met pas de dossier ce sera le dossier courant.
 $ ls /dossier

=== Créer/supprimer un dossier ===

Pour créer un dossier on utilise la commande ''mkdir'' suivi du (ou des) dossier que l'on veut créer :
 $ mkdir /dossier

L'option ''-p'' permet de créer tous les dossiers parents qui n'existent pas encore.

Pour supprimer un dossier, on utilise la commande ''rmdir'' !
 $ rmdir /dossier

Cette commande ne peut supprimer qu'un dossier vide, pour supprimer un dossier et tout son contenu on utilise la commande ''rm'' avec l'option ''-r'' :
 $ rm -r /dossier

== Quelques commandes  ==

=== La commande '''cp'''  ===

Copier un/des fichier(s). Exemple&amp;nbsp;: 
 $ cp fichier /home/toto/vrac

Copier ''fichier_source'' dans ''répertoire_cible''.
 $ cp fichier_source /repertoire_cible/ 

Copier ''repertoire_source'' dans ''repertoire_cible'' sans demander de confirmation.
 $ cp -Rf repertoire_source /repertoire_cible

Attention&amp;nbsp;: Copier un fichier vers un fichier de même nom l'écrasera.&lt;br&gt;Pour copier plusieurs fichiers à la fois, pensez à utiliser les caractères génériques&amp;nbsp;? et *. 

Copier sans écrasement du fichier destination (Le fichier écrasé est sauvegardé, seul le nom du fichier d'origine est modifié (ajout d'un tilde ''~'' à la fin du nom du fichier)) :
 $ cp -b

Prévient celui qui lance la commande de l'existence d'un fichier du même nom et lui demande s'il peut ou non remplacer son contenu. Permet de ne pas écraser par inadvertance des fichiers importants :
 $ cp -i

Afficher le nom des fichiers copiés (-v = verbose ou &quot;verbeux&quot;). Pratique si vous copiez plusieurs fichiers à l'aide des caractères génériques * et/ou&amp;nbsp;? et que vous souhaitez voir le bon déroulement de la multicopie. 
 $ cp -v

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

S'utilise avec les droits &quot;root&quot;

Exemple Pour sauvegarder le MBR du disque hda dans le fichier mbr.sav :
 # dd if=/dev/hda of=mbr.sav bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 9,3797e-05 s, 5,5 MB/s

[[La_commande_dd|Plus d'informations sur la commande dd...]]

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 
 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 
 $ file fichier

=== La command '''ln''' ===

Créer un lien (un alias ou un raccourci) vers un programme ou un fichier.

 Un lien symbolique :
 ln -s &lt;chemin_complet/fichier ou répertoire de destination&gt; &lt;chemin_complet/nom du lien symbolique&gt;

La commande ln utilisée sans -s créé un exemplaire supplémentaire du fichier ( à développer)

=== La commande '''ls'''  ===

Lister les fichiers et les sous-répertoires de ''/rep''. 
 $ ls /rep

Lister tous les fichiers du répertoire indiqué, fichiers cachés (dont le nom commence par un point) compris. Si vous n'indiquez pas de répertoire, c'est le contenu du répertoire courant qui est listé. 
 $ ls -a /rep

Afficher tous les sous-répertoires de ''/rep''. 
 $ ls -d /rep

Affichage long&amp;nbsp;: droits, nom et groupe du propriétaire, taille, date de dernière modification.Si vous tapez le nom d'un lien, vous connaîtrez son fichier ou répertoire cible. 
 $ ls -l

Affiche tout le contenu du répertoire de façon détaillée. 
 $ ls -la

Liste le contenu d'un répertoire en donnant pour chaque fichier/répertoire plus de détails qu'un simple ''ls''. 
 $ ls -lh /rep

Liste les fichiers par type. Un fichier suivi d'un slash est un répertoire, un fichier suivi d'une étoile est un fichier exécutable et un fichier suivi d'un ''@'' est un lien. 
 $ ls -F

Liste les fichiers en les séparant par une virgule au lieu de les présenter en colonnes. 
 $ ls -m

En complément de ''-l'', affiche le nom et le groupe des propriétaires en fonction de leur UID et de leur GID. 
 $ ls -n

Liste les fichiers en ordre alphabétique inverse. 
 $ ls -r

Liste les fichiers triés par ordre de taille décroissante. 
 $ ls -S

Liste le contenu de ''/rep'' en triant par date de modification, du plus récent au plus ancien. 
 $ ls -t /rep

Liste les fichiers par type d'extension. 
 $ ls -X

=== La commande '''mv'''  ===

Pour déplacer ou renommer un fichier. Exemple&amp;nbsp;:''&lt;nowiki&gt;# mv toto /clown/titi&lt;/nowiki&gt;'' déplacera le fichier ''toto'' dans le répertoire ''clown'' (qui doit exister) et le renommera''titi''. 
 $ mv source destination

Effectue une sauvegarde du fichier avant de le déplacer. 
 $ mv -b

Effectue le déplacement même si la cible existe déjà, et ce sans message d'avertissement. 
 $ mv -f

Demande une confirmation si des fichiers risquent d'être écrasés par le déplacement. 
 $ mv -i

== Quelques &quot;trucs&quot;  ==

=== Gestion des caractères spéciaux ===
Dans un shell (quelqu'il soit), certains caractères sont dis spéciaux. En effet ils sont interprétés par le shell avant que la commande soit lancée. Les principaux son « », «&amp;», «|», «$», «&quot;», «'», «\»... (la liste n'est pas exaustive).

Si un fichier (ou un dossier) contien l'un des ses caractères dans son nom, cela peut gêner l'utilisation du shell. Pour pallier ce problème il existe 3 solutions :
* la première consiste à faire précédé cahque caractère particulier par un «\» y compris si c'est déjà un «\» (ce qui donne «\\»)
* la deuxième consiste à entourer le fichier par des «&quot;» (dans ce cas si le fichier contient de «&quot;» dans son nom, il faut les protéger avec des «\»). Cette méthode permet de protéger tout les caractères sauf «$», «{» et «}».
* la dernière méthode consiste à entourer le nom de fichier par des «'» (dans le cas où il y a déjà des «'», il faut les protéger avec un «\»

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;'] 

=== Épurer un fichier de ses lignes commentées ===

La commande ci-dessous écrira un nouveau fichier (fichier_sans_commentaires) à partir de &quot;fichier&quot; en enlevant les lignes commentées (commençant par #) :

 grep -v &quot;^#&quot; fichier | grep -v &quot;^$&quot; &gt; fichier_sans_commentaires

[http://forum.debian-fr.org/viewtopic.php?p=269266#p269266 Epurer un fichiers des lignes commençant par #]

=== Fichier commençant par un tiret  ===
Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 
 $ rm -fichier.txt

ne marchera pas, rm croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret.&lt;br&gt;Il faut donc utiliser l'option de fin de commande symbolisée par deux tirest consécutifs --. Pour notre exemple, on tapera&amp;nbsp;: 
 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=4679&amp;start=0  probleme de nom: renommer un fichier commencant par un tiret] 

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 
 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 
 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 
 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 
 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max

[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>s4l2vutmsuf1j8j6hn3ctyhmzztphoc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5333</id>
      <parentid>5332</parentid>
      <timestamp>2013-08-04T23:16:00Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <minor/>
      <comment>typo</comment>
      <text xml:space="preserve" bytes="14718">{{Ébauche|La gestion des fichiers}}

----
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

L'objectif est de vous présenter quelques commandes de bases pour vous mettre le pied à l'étrier avec votre terminal. Nous ne pouvons pas être exhaustif car toutes les commandes possèdent un grand nombre d'options. Elles ne seront donc que rarement présentées ici. Pour les connaître il faut utiliser la commande ''man''. Il s'agit de la commande la plus imporante car elle vous explique comment fonctionne les autres commandes. C'est le manuel.

Par exemple pour connaître la liste des possibilités de la commande ''ls'' utilisez la commande :
 $ man ls

= Gestion des fichiers  =

== Lire le contenu d'un fichier  ==

La commande la plus simple pour lire le contenu d'un fichier est la commande cat.
 $ cat fichier

''cat'' cat affiche l'ensemble du fichier sur le terminal, si le fichier est trop grand il va être nécessaire de remonter pour voir le début de celui-ci. Pour ne pas avoir se problème il est possible soit d'utiliser la commande ''tac'' (''cat'' à l'envers) qui écris sur le terminal le fichier de la fin au début ou utiliser un « pager ».

Un pager est un logiciel qui va vous permettre d'avoir un affichage paginé dans le quel il seras plus facile de naviguer pour monter ou descendre dans le fichier. Les 2 pagers les plus connus et installé par défaut sur Debian sont ''more'' et ''less''. ''less'' est plus récent et offre plus de fonctionnalité. Ils s'utilisent comme cat.

=== tail/head ===

Les commandes ''tail'' et ''head'' permettent d'afficher respectivement la fin et le début des fichiers.

== Trouver un fichier ==

Les deux commandes les plus courantes pour trouver un fichier sont ''locate'' et ''find''.

''locate'' est très rapide il recherche à partir d'un fichier d'index. Ce qui signifie qu'il ne voit pas immédiatement les nouveaux fichiers, il faut attendre un peu ou lancer la commande ''updatedb'' pour mettre à jour cet index. ''locate'' s'utilise ainsi :
 $ locate machin

et il écrira sur le terminal l'ensemble des chemins de fichiers dont le nom contient « machin » où qu'ils soient sur le disque dur.

''find'' effectue une recherche dans un dossier spécifié. Il s'utilise principalement ainsi :
 $ find [dossier] [-name nom]

(ce qui es entre [] est optionnel)

Il va rechercher dans le dossier ''dossier'' les fichiers de nom ''nom''. Il est possible d'appliquer une grande variété de condition pour n'fficher que les dossier ou les fichiers d'un certain âge par exemple.

==== slocate ====

Pour afficher la liste des fichiers dont le nom contient le mot ''couic''. La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 
 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe. 

== Supprimer un fichier ==

Pour supprimer un fichier, on utilise la commande ''rm'' (il est possible de donner plusieurs fichiers) :
 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 
 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 
 $ rm -i

=== shred ===

Extrait du man : Réécrire sur les FICHIERs indiqués, de façon répétée, afin de rendre difficile toute récupération des données, même à l'aide de matériel coûteux.
Cette commande est très pratique pour rendre illisible des fichiers que vous jugez &quot;sensibles&quot; !
Elle fait partie du paque &quot;coreutils&quot;

 $ cat mon_fichier_top_secret
 Top secret - Personne ne doir avoir accès à ce fichier !
 $ shred -fvz -n 10 mon_fichier_top_secret
 shred: mon_fichier_top_secret : passe 1/11 (random)...
 shred: mon_fichier_top_secret : passe 2/11 (ffffff)...
 shred: mon_fichier_top_secret : passe 3/11 (999999)...
 shred: mon_fichier_top_secret : passe 4/11 (222222)...
 shred: mon_fichier_top_secret : passe 5/11 (000000)...
 shred: mon_fichier_top_secret : passe 6/11 (random)...
 shred: mon_fichier_top_secret : passe 7/11 (aaaaaa)...
 shred: mon_fichier_top_secret : passe 8/11 (111111)...
 shred: mon_fichier_top_secret : passe 9/11 (555555)...
 shred: mon_fichier_top_secret : passe 10/11 (random)...
 shred: mon_fichier_top_secret : passe 11/11 (000000)...
 $ cat mon_fichier_top_secret
 $ 

Voyez le man pour l'explication des options utilisées

Et comme tout est fichier, vous pouvez utiliser cette commande pour [[remettre à zéro un disque dur|effacer (et accessoirement tester) un disque dur]]

== Gérer les répertoires ==

Par défaut vous arrivez à l'ouverture du terminal dans votre dossier personnel (par défaut ''/home/&lt;login&gt;'').
Pour savoir dans quel dossier vous êtes, utilisez la commande ''pwd'' :
 $ pwd
 /home/monlogin

=== Pour changer de répertoire ===

Il faut utiliser la commande ''cd'' suivi du chemin vers le répertoire où vous souhaitez aller.
 $ cd /mon/dossier

Si on omet le dossier, on arrive dans le dossier personnel de l'utilisateur.

=== Pour lister le contenu d'un répertoire ===

Ik faut utiliser la commande ''ls'' pour lister le contenu des répertoires. Il est suivi du (ou des) dossier que l'on veut regarder, si on ne met pas de dossier ce sera le dossier courant.
 $ ls /dossier

=== Créer/supprimer un dossier ===

Pour créer un dossier on utilise la commande ''mkdir'' suivi du (ou des) dossier que l'on veut créer :
 $ mkdir /dossier

L'option ''-p'' permet de créer tous les dossiers parents qui n'existent pas encore.

Pour supprimer un dossier, on utilise la commande ''rmdir'' !
 $ rmdir /dossier

Cette commande ne peut supprimer qu'un dossier vide, pour supprimer un dossier et tout son contenu on utilise la commande ''rm'' avec l'option ''-r'' :
 $ rm -r /dossier

== Quelques commandes  ==

=== La commande '''cp'''  ===

Copier un/des fichier(s). Exemple&amp;nbsp;: 
 $ cp fichier /home/toto/vrac

Copier ''fichier_source'' dans ''répertoire_cible''.
 $ cp fichier_source /repertoire_cible/ 

Copier ''repertoire_source'' dans ''repertoire_cible'' sans demander de confirmation.
 $ cp -Rf repertoire_source /repertoire_cible

Attention&amp;nbsp;: Copier un fichier vers un fichier de même nom l'écrasera.&lt;br&gt;Pour copier plusieurs fichiers à la fois, pensez à utiliser les caractères génériques&amp;nbsp;? et *. 

Copier sans écrasement du fichier destination (Le fichier écrasé est sauvegardé, seul le nom du fichier d'origine est modifié (ajout d'un tilde ''~'' à la fin du nom du fichier)) :
 $ cp -b

Prévient celui qui lance la commande de l'existence d'un fichier du même nom et lui demande s'il peut ou non remplacer son contenu. Permet de ne pas écraser par inadvertance des fichiers importants :
 $ cp -i

Afficher le nom des fichiers copiés (-v = verbose ou &quot;verbeux&quot;). Pratique si vous copiez plusieurs fichiers à l'aide des caractères génériques * et/ou&amp;nbsp;? et que vous souhaitez voir le bon déroulement de la multicopie. 
 $ cp -v

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

S'utilise avec les droits &quot;root&quot;

Exemple Pour sauvegarder le MBR du disque hda dans le fichier mbr.sav :
 # dd if=/dev/hda of=mbr.sav bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 9,3797e-05 s, 5,5 MB/s

[[La_commande_dd|Plus d'informations sur la commande dd...]]

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 
 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 
 $ file fichier

=== La command '''ln''' ===

Créer un lien (un alias ou un raccourci) vers un programme ou un fichier.

 Un lien symbolique :
 ln -s &lt;chemin_complet/fichier ou répertoire de destination&gt; &lt;chemin_complet/nom du lien symbolique&gt;

La commande ln utilisée sans -s créé un exemplaire supplémentaire du fichier ( à développer)

=== La commande '''ls'''  ===

Lister les fichiers et les sous-répertoires de ''/rep''. 
 $ ls /rep

Lister tous les fichiers du répertoire indiqué, fichiers cachés (dont le nom commence par un point) compris. Si vous n'indiquez pas de répertoire, c'est le contenu du répertoire courant qui est listé. 
 $ ls -a /rep

Afficher tous les sous-répertoires de ''/rep''. 
 $ ls -d /rep

Affichage long&amp;nbsp;: droits, nom et groupe du propriétaire, taille, date de dernière modification.Si vous tapez le nom d'un lien, vous connaîtrez son fichier ou répertoire cible. 
 $ ls -l

Affiche tout le contenu du répertoire de façon détaillée. 
 $ ls -la

Liste le contenu d'un répertoire en donnant pour chaque fichier/répertoire plus de détails qu'un simple ''ls''. 
 $ ls -lh /rep

Liste les fichiers par type. Un fichier suivi d'un slash est un répertoire, un fichier suivi d'une étoile est un fichier exécutable et un fichier suivi d'un ''@'' est un lien. 
 $ ls -F

Liste les fichiers en les séparant par une virgule au lieu de les présenter en colonnes. 
 $ ls -m

En complément de ''-l'', affiche le nom et le groupe des propriétaires en fonction de leur UID et de leur GID. 
 $ ls -n

Liste les fichiers en ordre alphabétique inverse. 
 $ ls -r

Liste les fichiers triés par ordre de taille décroissante. 
 $ ls -S

Liste le contenu de ''/rep'' en triant par date de modification, du plus récent au plus ancien. 
 $ ls -t /rep

Liste les fichiers par type d'extension. 
 $ ls -X

=== La commande '''mv'''  ===

Pour déplacer ou renommer un fichier. Exemple&amp;nbsp;:''&lt;nowiki&gt;# mv toto /clown/titi&lt;/nowiki&gt;'' déplacera le fichier ''toto'' dans le répertoire ''clown'' (qui doit exister) et le renommera''titi''. 
 $ mv source destination

Effectue une sauvegarde du fichier avant de le déplacer. 
 $ mv -b

Effectue le déplacement même si la cible existe déjà, et ce sans message d'avertissement. 
 $ mv -f

Demande une confirmation si des fichiers risquent d'être écrasés par le déplacement. 
 $ mv -i

== Quelques &quot;trucs&quot;  ==

=== Gestion des caractères spéciaux ===
Dans un shell (quelqu'il soit), certains caractères sont dis spéciaux. En effet ils sont interprétés par le shell avant que la commande soit lancée. Les principaux son « », «&amp;», «|», «$», «&quot;», «'», «\»... (la liste n'est pas exaustive).

Si un fichier (ou un dossier) contien l'un des ses caractères dans son nom, cela peut gêner l'utilisation du shell. Pour pallier ce problème il existe 3 solutions :
* la première consiste à faire précédé cahque caractère particulier par un «\» y compris si c'est déjà un «\» (ce qui donne «\\»)
* la deuxième consiste à entourer le fichier par des «&quot;» (dans ce cas si le fichier contient de «&quot;» dans son nom, il faut les protéger avec des «\»). Cette méthode permet de protéger tout les caractères sauf «$», «{» et «}».
* la dernière méthode consiste à entourer le nom de fichier par des «'» (dans le cas où il y a déjà des «'», il faut les protéger avec un «\»

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;'] 

=== Épurer un fichier de ses lignes commentées ===

La commande ci-dessous écrira un nouveau fichier (fichier_sans_commentaires) à partir de &quot;fichier&quot; en enlevant les lignes commentées (commençant par #) :

 grep -v &quot;^#&quot; fichier | grep -v &quot;^$&quot; &gt; fichier_sans_commentaires

[http://forum.debian-fr.org/viewtopic.php?p=269266#p269266 Epurer un fichiers des lignes commençant par #]

=== Fichier commençant par un tiret  ===
Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 
 $ rm -fichier.txt

ne marchera pas, rm croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret.&lt;br&gt;Il faut donc utiliser l'option de fin de commande symbolisée par deux tirest consécutifs --. Pour notre exemple, on tapera&amp;nbsp;: 
 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=4679&amp;start=0  probleme de nom: renommer un fichier commencant par un tiret] 

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 
 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 
 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 
 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 
 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max

[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>002e6ntqsilq5lg0ctx1prnt1he16j0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5340</id>
      <parentid>5333</parentid>
      <timestamp>2013-08-08T21:39:24Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <text xml:space="preserve" bytes="11194">{{Ébauche|La gestion des fichiers}}

----
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

L'objectif est de vous présenter quelques commandes de bases pour vous mettre le pied à l'étrier avec votre terminal. Nous ne pouvons pas être exhaustif car toutes les commandes possèdent un grand nombre d'options. Elles ne seront donc que rarement présentées ici. Pour les connaître il faut utiliser la commande ''man''. Il s'agit de la commande la plus imporante car elle vous explique comment fonctionne les autres commandes. C'est le manuel.

Par exemple pour connaître la liste des possibilités de la commande ''ls'' utilisez la commande :
 $ man ls

= Gestion des fichiers  =

== Lire le contenu d'un fichier  ==

La commande la plus simple pour lire le contenu d'un fichier est la commande cat.
 $ cat fichier

''cat'' cat affiche l'ensemble du fichier sur le terminal, si le fichier est trop grand il va être nécessaire de remonter pour voir le début de celui-ci. Pour ne pas avoir se problème il est possible soit d'utiliser la commande ''tac'' (''cat'' à l'envers) qui écris sur le terminal le fichier de la fin au début ou utiliser un « pager ».

Un pager est un logiciel qui va vous permettre d'avoir un affichage paginé dans le quel il seras plus facile de naviguer pour monter ou descendre dans le fichier. Les 2 pagers les plus connus et installé par défaut sur Debian sont ''more'' et ''less''. ''less'' est plus récent et offre plus de fonctionnalité. Ils s'utilisent comme cat.

Les commandes ''tail'' et ''head'' permettent d'afficher respectivement la fin et le début des fichiers.

== Trouver un fichier ==

Les deux commandes les plus courantes pour trouver un fichier sont ''locate'' et ''find''.

''locate'' est très rapide il recherche à partir d'un fichier d'index. Ce qui signifie qu'il ne voit pas immédiatement les nouveaux fichiers, il faut attendre un peu ou lancer la commande ''updatedb'' pour mettre à jour cet index. ''locate'' s'utilise ainsi :
 $ locate machin

et il écrira sur le terminal l'ensemble des chemins de fichiers dont le nom contient « machin » où qu'ils soient sur le disque dur.

''find'' effectue une recherche dans un dossier spécifié. Il s'utilise principalement ainsi :
 $ find [dossier] [-name nom]

(ce qui es entre [] est optionnel)

Il va rechercher dans le dossier ''dossier'' les fichiers de nom ''nom''. Il est possible d'appliquer une grande variété de condition pour n'fficher que les dossier ou les fichiers d'un certain âge par exemple.

La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 
 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe. 

== Supprimer un fichier ==

Pour supprimer un fichier, on utilise la commande ''rm'' (il est possible de donner plusieurs fichiers) :
 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 
 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 
 $ rm -i

Il existe des techniques permettant de retrouver un fichier supprimer. Si l'on souhaite que le fichier ne soit plus retrouvable, il existe la commande ''shred'' qui va écraser le fichier le nombre de fois que vous souhaitez et utiliser d'autres techniques pour empêcher quiconque de retrouver vos fichiers (voir aussi : [[remettre à zéro un disque dur|effacer (et accessoirement tester) un disque dur]]).

== Gérer les répertoires ==

Par défaut vous arrivez à l'ouverture du terminal dans votre dossier personnel (par défaut ''/home/&lt;login&gt;'').
Pour savoir dans quel dossier vous êtes, utilisez la commande ''pwd'' :
 $ pwd
 /home/monlogin

=== Pour changer de répertoire ===

Il faut utiliser la commande ''cd'' suivi du chemin vers le répertoire où vous souhaitez aller.
 $ cd /mon/dossier

Si on omet le dossier, on arrive dans le dossier personnel de l'utilisateur.

=== Pour lister le contenu d'un répertoire ===

Ik faut utiliser la commande ''ls'' pour lister le contenu des répertoires. Il est suivi du (ou des) dossier que l'on veut regarder, si on ne met pas de dossier ce sera le dossier courant.
 $ ls /dossier

=== Créer/supprimer un dossier ===

Pour créer un dossier on utilise la commande ''mkdir'' suivi du (ou des) dossier que l'on veut créer :
 $ mkdir /dossier

L'option ''-p'' permet de créer tous les dossiers parents qui n'existent pas encore.

Pour supprimer un dossier, on utilise la commande ''rmdir'' !
 $ rmdir /dossier

Cette commande ne peut supprimer qu'un dossier vide, pour supprimer un dossier et tout son contenu on utilise la commande ''rm'' avec l'option ''-r'' :
 $ rm -r /dossier

== Copier, renommer et déplacer un fichier ==

La commande ''cp'' permet de copier un (ou plusieurs fichiers). On lui passe en paramètre la liste des fichiers que l'on veut copier suivi du dossier de destination. S'il n'y a qu'un seul fichier la destination peut être un autre fichier :
 $ cp fic1 fic2 fic3 dossier/
 $ cp fic_orig fic_dest

La commande ''mv'' sert à la fois à déplacer et à renommer un fichier. Renommer un fichier consiste à déplacer le fichier à l'endroi où il est déjà avec un nom différent. Comme pour ''cp'' lorsque l'on déplace plusieurs fichier le dernier paramètre doit être un dossier :
 $ mv fic1 fic2 fic3 dossier/
 $ mv fic_orig fic_dest

== Quelques commandes autres ==

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

S'utilise avec les droits &quot;root&quot;

Exemple Pour sauvegarder le MBR du disque hda dans le fichier mbr.sav :
 # dd if=/dev/hda of=mbr.sav bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 9,3797e-05 s, 5,5 MB/s

[[La_commande_dd|Plus d'informations sur la commande dd...]]

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 
 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 
 $ file fichier

=== La command '''ln''' ===

Créer un lien (un alias ou un raccourci) vers un programme ou un fichier.

 Un lien symbolique :
 ln -s &lt;chemin_complet/fichier ou répertoire de destination&gt; &lt;chemin_complet/nom du lien symbolique&gt;

La commande ln utilisée sans -s créé un exemplaire supplémentaire du fichier ( à développer)

== Quelques &quot;trucs&quot;  ==

=== Gestion des caractères spéciaux ===
Dans un shell (quelqu'il soit), certains caractères sont dis spéciaux. En effet ils sont interprétés par le shell avant que la commande soit lancée. Les principaux son « », «&amp;», «|», «$», «&quot;», «'», «\»... (la liste n'est pas exaustive).

Si un fichier (ou un dossier) contien l'un des ses caractères dans son nom, cela peut gêner l'utilisation du shell. Pour pallier ce problème il existe 3 solutions :
* la première consiste à faire précédé cahque caractère particulier par un «\» y compris si c'est déjà un «\» (ce qui donne «\\»)
* la deuxième consiste à entourer le fichier par des «&quot;» (dans ce cas si le fichier contient de «&quot;» dans son nom, il faut les protéger avec des «\»). Cette méthode permet de protéger tout les caractères sauf «$», «{» et «}».
* la dernière méthode consiste à entourer le nom de fichier par des «'» (dans le cas où il y a déjà des «'», il faut les protéger avec un «\»

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;'] 

=== Épurer un fichier de ses lignes commentées ===

La commande ci-dessous écrira un nouveau fichier (fichier_sans_commentaires) à partir de &quot;fichier&quot; en enlevant les lignes commentées (commençant par #) :

 grep -v &quot;^#&quot; fichier | grep -v &quot;^$&quot; &gt; fichier_sans_commentaires

[http://forum.debian-fr.org/viewtopic.php?p=269266#p269266 Epurer un fichiers des lignes commençant par #]

=== Fichier commençant par un tiret  ===
Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 
 $ rm -fichier.txt

ne marchera pas, ''rm'' croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret.&lt;br&gt;Il faut donc utiliser l'option de fin de commande symbolisée par deux tirets consécutifs ''--''. Pour notre exemple, on tapera&amp;nbsp;: 
 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=4679&amp;start=0  problème de nom : renommer un fichier commençant par un tiret] 

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 
 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 
 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 
 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 
 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max

[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>jth2yx4tqw1a462yuhssuumws35alev</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5341</id>
      <parentid>5340</parentid>
      <timestamp>2013-08-08T21:41:55Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <text xml:space="preserve" bytes="11233">{{Ébauche|La gestion des fichiers}}

----
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

L'objectif est de vous présenter quelques commandes de bases pour vous mettre le pied à l'étrier avec votre terminal. Nous ne pouvons pas être exhaustif car toutes les commandes possèdent un grand nombre d'options. Elles ne seront donc que rarement présentées ici. Pour les connaître il faut utiliser la commande ''man''. Il s'agit de la commande la plus imporante car elle vous explique comment fonctionne les autres commandes. C'est le manuel.

Par exemple pour connaître la liste des possibilités de la commande ''ls'' utilisez la commande :
 $ man ls

= Gestion des fichiers  =

== Lire le contenu d'un fichier  ==

La commande la plus simple pour lire le contenu d'un fichier est la commande cat.
 $ cat fichier

''cat'' cat affiche l'ensemble du fichier sur le terminal, si le fichier est trop grand il va être nécessaire de remonter pour voir le début de celui-ci. Pour ne pas avoir se problème il est possible soit d'utiliser la commande ''tac'' (''cat'' à l'envers) qui écris sur le terminal le fichier de la fin au début ou utiliser un « pager ».

Un pager est un logiciel qui va vous permettre d'avoir un affichage paginé dans le quel il seras plus facile de naviguer pour monter ou descendre dans le fichier. Les 2 pagers les plus connus et installé par défaut sur Debian sont ''more'' et ''less''. ''less'' est plus récent et offre plus de fonctionnalité. Ils s'utilisent comme cat.

Les commandes ''tail'' et ''head'' permettent d'afficher respectivement la fin et le début des fichiers.

== Trouver un fichier ==

Les deux commandes les plus courantes pour trouver un fichier sont ''locate'' et ''find''.

''locate'' est très rapide il recherche à partir d'un fichier d'index. Ce qui signifie qu'il ne voit pas immédiatement les nouveaux fichiers, il faut attendre un peu ou lancer la commande ''updatedb'' pour mettre à jour cet index. ''locate'' s'utilise ainsi :
 $ locate machin

et il écrira sur le terminal l'ensemble des chemins de fichiers dont le nom contient « machin » où qu'ils soient sur le disque dur.

''find'' effectue une recherche dans un dossier spécifié. Il s'utilise principalement ainsi :
 $ find [dossier] [-name nom]

(ce qui es entre [] est optionnel)

Il va rechercher dans le dossier ''dossier'' les fichiers de nom ''nom''. Il est possible d'appliquer une grande variété de condition pour n'fficher que les dossier ou les fichiers d'un certain âge par exemple.

La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 
 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe. 

== Supprimer un fichier ==

Pour supprimer un fichier, on utilise la commande ''rm'' (il est possible de donner plusieurs fichiers) :
 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 
 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 
 $ rm -i

Il existe des techniques permettant de retrouver un fichier supprimer. Si l'on souhaite que le fichier ne soit plus retrouvable, il existe la commande ''shred'' qui va écraser le fichier le nombre de fois que vous souhaitez et utiliser d'autres techniques pour empêcher quiconque de retrouver vos fichiers (voir aussi : [[remettre à zéro un disque dur|effacer (et accessoirement tester) un disque dur]]).

== Gérer les répertoires ==

Par défaut vous arrivez à l'ouverture du terminal dans votre dossier personnel (par défaut ''/home/&lt;login&gt;'').
Pour savoir dans quel dossier vous êtes, utilisez la commande ''pwd'' :
 $ pwd
 /home/monlogin

=== Pour changer de répertoire ===

Il faut utiliser la commande ''cd'' suivi du chemin vers le répertoire où vous souhaitez aller.
 $ cd /mon/dossier

Si on omet le dossier, on arrive dans le dossier personnel de l'utilisateur.

=== Pour lister le contenu d'un répertoire ===

Ik faut utiliser la commande ''ls'' pour lister le contenu des répertoires. Il est suivi du (ou des) dossier que l'on veut regarder, si on ne met pas de dossier ce sera le dossier courant.
 $ ls /dossier

=== Créer/supprimer un dossier ===

Pour créer un dossier on utilise la commande ''mkdir'' suivi du (ou des) dossier que l'on veut créer :
 $ mkdir /dossier

L'option ''-p'' permet de créer tous les dossiers parents qui n'existent pas encore.

Pour supprimer un dossier, on utilise la commande ''rmdir'' !
 $ rmdir /dossier

Cette commande ne peut supprimer qu'un dossier vide, pour supprimer un dossier et tout son contenu on utilise la commande ''rm'' avec l'option ''-r'' :
 $ rm -r /dossier

== Copier, renommer et déplacer un fichier ==

La commande ''cp'' permet de copier un (ou plusieurs fichiers). On lui passe en paramètre la liste des fichiers que l'on veut copier suivi du dossier de destination. S'il n'y a qu'un seul fichier la destination peut être un autre fichier :
 $ cp fic1 fic2 fic3 dossier/
 $ cp fic_orig fic_dest

La commande ''mv'' sert à la fois à déplacer et à renommer un fichier. Renommer un fichier consiste à déplacer le fichier à l'endroi où il est déjà avec un nom différent. Comme pour ''cp'' lorsque l'on déplace plusieurs fichier le dernier paramètre doit être un dossier :
 $ mv fic1 fic2 fic3 dossier/
 $ mv fic_orig fic_dest

== Quelques commandes autres ==

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

S'utilise avec les droits &quot;root&quot;

Exemple Pour sauvegarder le MBR du disque hda dans le fichier mbr.sav :
 # dd if=/dev/hda of=mbr.sav bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 9,3797e-05 s, 5,5 MB/s

[[La_commande_dd|Plus d'informations sur la commande dd...]]

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 
 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 
 $ file fichier

=== La command '''ln''' ===

Créer un lien (un alias ou un raccourci) vers un programme ou un fichier.

 Un lien symbolique :
 ln -s &lt;chemin_complet/fichier ou répertoire de destination&gt; &lt;chemin_complet/nom du lien symbolique&gt;

La commande ln utilisée sans -s créé un exemplaire supplémentaire du fichier ( à développer)

== Quelques &quot;trucs&quot;  ==

=== Gestion des caractères spéciaux ===
Dans un shell (quelqu'il soit), certains caractères sont dis spéciaux. En effet ils sont interprétés par le shell avant que la commande soit lancée. Les principaux son « », «&amp;», «|», «$», «&quot;», «'», «\»... (la liste n'est pas exaustive).

Si un fichier (ou un dossier) contien l'un des ses caractères dans son nom, cela peut gêner l'utilisation du shell. Pour pallier ce problème il existe 3 solutions :
* la première consiste à faire précédé cahque caractère particulier par un «\» y compris si c'est déjà un «\» (ce qui donne «\\»)
* la deuxième consiste à entourer le fichier par des «&quot;» (dans ce cas si le fichier contient de «&quot;» dans son nom, il faut les protéger avec des «\»). Cette méthode permet de protéger tout les caractères sauf «$», «{» et «}».
* la dernière méthode consiste à entourer le nom de fichier par des «'» (dans le cas où il y a déjà des «'», il faut les protéger avec un «\»

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;'] 

=== Fichier commençant par un tiret  ===
Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 
 $ rm -fichier.txt

ne marchera pas, ''rm'' croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret.&lt;br&gt;Il faut donc utiliser l'option de fin de commande symbolisée par deux tirets consécutifs ''--''. Pour notre exemple, on tapera&amp;nbsp;: 
 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=4679&amp;start=0  problème de nom : renommer un fichier commençant par un tiret] 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 
 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 
 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max

== Quelques exemples de commandes ==

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 
 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 
 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 


=== Épurer un fichier de ses lignes commentées ===

La commande ci-dessous écrira un nouveau fichier (fichier_sans_commentaires) à partir de &quot;fichier&quot; en enlevant les lignes commentées (commençant par #) :

 grep -v &quot;^#&quot; fichier | grep -v &quot;^$&quot; &gt; fichier_sans_commentaires

[http://forum.debian-fr.org/viewtopic.php?p=269266#p269266 Epurer un fichiers des lignes commençant par #]

[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>5puowofcw0235pb10usifn26zxgnips</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5342</id>
      <parentid>5341</parentid>
      <timestamp>2013-08-09T06:21:34Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Trouver un fichier */</comment>
      <text xml:space="preserve" bytes="11233">{{Ébauche|La gestion des fichiers}}

----
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

L'objectif est de vous présenter quelques commandes de bases pour vous mettre le pied à l'étrier avec votre terminal. Nous ne pouvons pas être exhaustif car toutes les commandes possèdent un grand nombre d'options. Elles ne seront donc que rarement présentées ici. Pour les connaître il faut utiliser la commande ''man''. Il s'agit de la commande la plus imporante car elle vous explique comment fonctionne les autres commandes. C'est le manuel.

Par exemple pour connaître la liste des possibilités de la commande ''ls'' utilisez la commande :
 $ man ls

= Gestion des fichiers  =

== Lire le contenu d'un fichier  ==

La commande la plus simple pour lire le contenu d'un fichier est la commande cat.
 $ cat fichier

''cat'' cat affiche l'ensemble du fichier sur le terminal, si le fichier est trop grand il va être nécessaire de remonter pour voir le début de celui-ci. Pour ne pas avoir se problème il est possible soit d'utiliser la commande ''tac'' (''cat'' à l'envers) qui écris sur le terminal le fichier de la fin au début ou utiliser un « pager ».

Un pager est un logiciel qui va vous permettre d'avoir un affichage paginé dans le quel il seras plus facile de naviguer pour monter ou descendre dans le fichier. Les 2 pagers les plus connus et installé par défaut sur Debian sont ''more'' et ''less''. ''less'' est plus récent et offre plus de fonctionnalité. Ils s'utilisent comme cat.

Les commandes ''tail'' et ''head'' permettent d'afficher respectivement la fin et le début des fichiers.

== Trouver un fichier ==

Les deux commandes les plus courantes pour trouver un fichier sont ''locate'' et ''find''.

''locate'' est très rapide il recherche à partir d'un fichier d'index. Ce qui signifie qu'il ne voit pas immédiatement les nouveaux fichiers, il faut attendre un peu ou lancer la commande ''updatedb'' pour mettre à jour cet index. ''locate'' s'utilise ainsi :
 $ locate machin

et il écrira sur le terminal l'ensemble des chemins de fichiers dont le nom contient « machin » où qu'ils soient sur le disque dur.

''find'' effectue une recherche dans un dossier spécifié. Il s'utilise principalement ainsi :
 $ find [dossier] [-name nom]

(ce qui es entre [] est optionnel)

Il va rechercher dans le dossier ''dossier'' les fichiers de nom ''nom''. Il est possible d'appliquer une grande variété de condition pour n'afficher que les dossier ou les fichiers d'un certain âge par exemple.

La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 
 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe.

== Supprimer un fichier ==

Pour supprimer un fichier, on utilise la commande ''rm'' (il est possible de donner plusieurs fichiers) :
 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 
 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 
 $ rm -i

Il existe des techniques permettant de retrouver un fichier supprimer. Si l'on souhaite que le fichier ne soit plus retrouvable, il existe la commande ''shred'' qui va écraser le fichier le nombre de fois que vous souhaitez et utiliser d'autres techniques pour empêcher quiconque de retrouver vos fichiers (voir aussi : [[remettre à zéro un disque dur|effacer (et accessoirement tester) un disque dur]]).

== Gérer les répertoires ==

Par défaut vous arrivez à l'ouverture du terminal dans votre dossier personnel (par défaut ''/home/&lt;login&gt;'').
Pour savoir dans quel dossier vous êtes, utilisez la commande ''pwd'' :
 $ pwd
 /home/monlogin

=== Pour changer de répertoire ===

Il faut utiliser la commande ''cd'' suivi du chemin vers le répertoire où vous souhaitez aller.
 $ cd /mon/dossier

Si on omet le dossier, on arrive dans le dossier personnel de l'utilisateur.

=== Pour lister le contenu d'un répertoire ===

Ik faut utiliser la commande ''ls'' pour lister le contenu des répertoires. Il est suivi du (ou des) dossier que l'on veut regarder, si on ne met pas de dossier ce sera le dossier courant.
 $ ls /dossier

=== Créer/supprimer un dossier ===

Pour créer un dossier on utilise la commande ''mkdir'' suivi du (ou des) dossier que l'on veut créer :
 $ mkdir /dossier

L'option ''-p'' permet de créer tous les dossiers parents qui n'existent pas encore.

Pour supprimer un dossier, on utilise la commande ''rmdir'' !
 $ rmdir /dossier

Cette commande ne peut supprimer qu'un dossier vide, pour supprimer un dossier et tout son contenu on utilise la commande ''rm'' avec l'option ''-r'' :
 $ rm -r /dossier

== Copier, renommer et déplacer un fichier ==

La commande ''cp'' permet de copier un (ou plusieurs fichiers). On lui passe en paramètre la liste des fichiers que l'on veut copier suivi du dossier de destination. S'il n'y a qu'un seul fichier la destination peut être un autre fichier :
 $ cp fic1 fic2 fic3 dossier/
 $ cp fic_orig fic_dest

La commande ''mv'' sert à la fois à déplacer et à renommer un fichier. Renommer un fichier consiste à déplacer le fichier à l'endroi où il est déjà avec un nom différent. Comme pour ''cp'' lorsque l'on déplace plusieurs fichier le dernier paramètre doit être un dossier :
 $ mv fic1 fic2 fic3 dossier/
 $ mv fic_orig fic_dest

== Quelques commandes autres ==

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

S'utilise avec les droits &quot;root&quot;

Exemple Pour sauvegarder le MBR du disque hda dans le fichier mbr.sav :
 # dd if=/dev/hda of=mbr.sav bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 9,3797e-05 s, 5,5 MB/s

[[La_commande_dd|Plus d'informations sur la commande dd...]]

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 
 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 
 $ file fichier

=== La command '''ln''' ===

Créer un lien (un alias ou un raccourci) vers un programme ou un fichier.

 Un lien symbolique :
 ln -s &lt;chemin_complet/fichier ou répertoire de destination&gt; &lt;chemin_complet/nom du lien symbolique&gt;

La commande ln utilisée sans -s créé un exemplaire supplémentaire du fichier ( à développer)

== Quelques &quot;trucs&quot;  ==

=== Gestion des caractères spéciaux ===
Dans un shell (quelqu'il soit), certains caractères sont dis spéciaux. En effet ils sont interprétés par le shell avant que la commande soit lancée. Les principaux son « », «&amp;», «|», «$», «&quot;», «'», «\»... (la liste n'est pas exaustive).

Si un fichier (ou un dossier) contien l'un des ses caractères dans son nom, cela peut gêner l'utilisation du shell. Pour pallier ce problème il existe 3 solutions :
* la première consiste à faire précédé cahque caractère particulier par un «\» y compris si c'est déjà un «\» (ce qui donne «\\»)
* la deuxième consiste à entourer le fichier par des «&quot;» (dans ce cas si le fichier contient de «&quot;» dans son nom, il faut les protéger avec des «\»). Cette méthode permet de protéger tout les caractères sauf «$», «{» et «}».
* la dernière méthode consiste à entourer le nom de fichier par des «'» (dans le cas où il y a déjà des «'», il faut les protéger avec un «\»

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;'] 

=== Fichier commençant par un tiret  ===
Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 
 $ rm -fichier.txt

ne marchera pas, ''rm'' croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret.&lt;br&gt;Il faut donc utiliser l'option de fin de commande symbolisée par deux tirets consécutifs ''--''. Pour notre exemple, on tapera&amp;nbsp;: 
 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=4679&amp;start=0  problème de nom : renommer un fichier commençant par un tiret] 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 
 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 
 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max

== Quelques exemples de commandes ==

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 
 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 
 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 


=== Épurer un fichier de ses lignes commentées ===

La commande ci-dessous écrira un nouveau fichier (fichier_sans_commentaires) à partir de &quot;fichier&quot; en enlevant les lignes commentées (commençant par #) :

 grep -v &quot;^#&quot; fichier | grep -v &quot;^$&quot; &gt; fichier_sans_commentaires

[http://forum.debian-fr.org/viewtopic.php?p=269266#p269266 Epurer un fichiers des lignes commençant par #]

[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>e8z6162k9pd8umeeg17x7uyz4qro6lk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5343</id>
      <parentid>5342</parentid>
      <timestamp>2013-08-09T06:25:14Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Lire le contenu d'un fichier */</comment>
      <text xml:space="preserve" bytes="11233">{{Ébauche|La gestion des fichiers}}

----
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

L'objectif est de vous présenter quelques commandes de bases pour vous mettre le pied à l'étrier avec votre terminal. Nous ne pouvons pas être exhaustif car toutes les commandes possèdent un grand nombre d'options. Elles ne seront donc que rarement présentées ici. Pour les connaître il faut utiliser la commande ''man''. Il s'agit de la commande la plus imporante car elle vous explique comment fonctionne les autres commandes. C'est le manuel.

Par exemple pour connaître la liste des possibilités de la commande ''ls'' utilisez la commande :
 $ man ls

= Gestion des fichiers  =

== Lire le contenu d'un fichier  ==

La commande la plus simple pour lire le contenu d'un fichier est la commande cat.
 $ cat fichier

''cat'' cat affiche l'ensemble du fichier sur le terminal, si le fichier est trop grand il va être nécessaire de remonter pour voir le début de celui-ci. Pour ne pas avoir ce problème il est possible soit d'utiliser la commande ''tac'' (''cat'' à l'envers) qui écris sur le terminal le fichier de la fin au début ou utiliser un « pager ».

Un pager est un logiciel qui va vous permettre d'avoir un affichage paginé dans lequel il seras plus facile de naviguer pour monter ou descendre dans le fichier. Les 2 pagers les plus connus et installé par défaut sur Debian sont ''more'' et ''less''. ''less'' est plus récent et offre plus de fonctionnalités. Ils s'utilisent comme cat.

Les commandes ''tail'' et ''head'' permettent d'afficher respectivement la fin et le début des fichiers.

== Trouver un fichier ==

Les deux commandes les plus courantes pour trouver un fichier sont ''locate'' et ''find''.

''locate'' est très rapide il recherche à partir d'un fichier d'index. Ce qui signifie qu'il ne voit pas immédiatement les nouveaux fichiers, il faut attendre un peu ou lancer la commande ''updatedb'' pour mettre à jour cet index. ''locate'' s'utilise ainsi :
 $ locate machin

et il écrira sur le terminal l'ensemble des chemins de fichiers dont le nom contient « machin » où qu'ils soient sur le disque dur.

''find'' effectue une recherche dans un dossier spécifié. Il s'utilise principalement ainsi :
 $ find [dossier] [-name nom]

(ce qui es entre [] est optionnel)

Il va rechercher dans le dossier ''dossier'' les fichiers de nom ''nom''. Il est possible d'appliquer une grande variété de condition pour n'afficher que les dossier ou les fichiers d'un certain âge par exemple.

La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 
 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe.

== Supprimer un fichier ==

Pour supprimer un fichier, on utilise la commande ''rm'' (il est possible de donner plusieurs fichiers) :
 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 
 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 
 $ rm -i

Il existe des techniques permettant de retrouver un fichier supprimer. Si l'on souhaite que le fichier ne soit plus retrouvable, il existe la commande ''shred'' qui va écraser le fichier le nombre de fois que vous souhaitez et utiliser d'autres techniques pour empêcher quiconque de retrouver vos fichiers (voir aussi : [[remettre à zéro un disque dur|effacer (et accessoirement tester) un disque dur]]).

== Gérer les répertoires ==

Par défaut vous arrivez à l'ouverture du terminal dans votre dossier personnel (par défaut ''/home/&lt;login&gt;'').
Pour savoir dans quel dossier vous êtes, utilisez la commande ''pwd'' :
 $ pwd
 /home/monlogin

=== Pour changer de répertoire ===

Il faut utiliser la commande ''cd'' suivi du chemin vers le répertoire où vous souhaitez aller.
 $ cd /mon/dossier

Si on omet le dossier, on arrive dans le dossier personnel de l'utilisateur.

=== Pour lister le contenu d'un répertoire ===

Ik faut utiliser la commande ''ls'' pour lister le contenu des répertoires. Il est suivi du (ou des) dossier que l'on veut regarder, si on ne met pas de dossier ce sera le dossier courant.
 $ ls /dossier

=== Créer/supprimer un dossier ===

Pour créer un dossier on utilise la commande ''mkdir'' suivi du (ou des) dossier que l'on veut créer :
 $ mkdir /dossier

L'option ''-p'' permet de créer tous les dossiers parents qui n'existent pas encore.

Pour supprimer un dossier, on utilise la commande ''rmdir'' !
 $ rmdir /dossier

Cette commande ne peut supprimer qu'un dossier vide, pour supprimer un dossier et tout son contenu on utilise la commande ''rm'' avec l'option ''-r'' :
 $ rm -r /dossier

== Copier, renommer et déplacer un fichier ==

La commande ''cp'' permet de copier un (ou plusieurs fichiers). On lui passe en paramètre la liste des fichiers que l'on veut copier suivi du dossier de destination. S'il n'y a qu'un seul fichier la destination peut être un autre fichier :
 $ cp fic1 fic2 fic3 dossier/
 $ cp fic_orig fic_dest

La commande ''mv'' sert à la fois à déplacer et à renommer un fichier. Renommer un fichier consiste à déplacer le fichier à l'endroi où il est déjà avec un nom différent. Comme pour ''cp'' lorsque l'on déplace plusieurs fichier le dernier paramètre doit être un dossier :
 $ mv fic1 fic2 fic3 dossier/
 $ mv fic_orig fic_dest

== Quelques commandes autres ==

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

S'utilise avec les droits &quot;root&quot;

Exemple Pour sauvegarder le MBR du disque hda dans le fichier mbr.sav :
 # dd if=/dev/hda of=mbr.sav bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 9,3797e-05 s, 5,5 MB/s

[[La_commande_dd|Plus d'informations sur la commande dd...]]

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 
 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 
 $ file fichier

=== La command '''ln''' ===

Créer un lien (un alias ou un raccourci) vers un programme ou un fichier.

 Un lien symbolique :
 ln -s &lt;chemin_complet/fichier ou répertoire de destination&gt; &lt;chemin_complet/nom du lien symbolique&gt;

La commande ln utilisée sans -s créé un exemplaire supplémentaire du fichier ( à développer)

== Quelques &quot;trucs&quot;  ==

=== Gestion des caractères spéciaux ===
Dans un shell (quelqu'il soit), certains caractères sont dis spéciaux. En effet ils sont interprétés par le shell avant que la commande soit lancée. Les principaux son « », «&amp;», «|», «$», «&quot;», «'», «\»... (la liste n'est pas exaustive).

Si un fichier (ou un dossier) contien l'un des ses caractères dans son nom, cela peut gêner l'utilisation du shell. Pour pallier ce problème il existe 3 solutions :
* la première consiste à faire précédé cahque caractère particulier par un «\» y compris si c'est déjà un «\» (ce qui donne «\\»)
* la deuxième consiste à entourer le fichier par des «&quot;» (dans ce cas si le fichier contient de «&quot;» dans son nom, il faut les protéger avec des «\»). Cette méthode permet de protéger tout les caractères sauf «$», «{» et «}».
* la dernière méthode consiste à entourer le nom de fichier par des «'» (dans le cas où il y a déjà des «'», il faut les protéger avec un «\»

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;'] 

=== Fichier commençant par un tiret  ===
Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 
 $ rm -fichier.txt

ne marchera pas, ''rm'' croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret.&lt;br&gt;Il faut donc utiliser l'option de fin de commande symbolisée par deux tirets consécutifs ''--''. Pour notre exemple, on tapera&amp;nbsp;: 
 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=4679&amp;start=0  problème de nom : renommer un fichier commençant par un tiret] 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 
 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 
 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max

== Quelques exemples de commandes ==

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 
 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 
 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 


=== Épurer un fichier de ses lignes commentées ===

La commande ci-dessous écrira un nouveau fichier (fichier_sans_commentaires) à partir de &quot;fichier&quot; en enlevant les lignes commentées (commençant par #) :

 grep -v &quot;^#&quot; fichier | grep -v &quot;^$&quot; &gt; fichier_sans_commentaires

[http://forum.debian-fr.org/viewtopic.php?p=269266#p269266 Epurer un fichiers des lignes commençant par #]

[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>3gz8xr50uwwooorh21mnx3pvz3kducz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5344</id>
      <parentid>5343</parentid>
      <timestamp>2013-08-09T06:27:51Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Trouver un fichier */</comment>
      <text xml:space="preserve" bytes="11248">{{Ébauche|La gestion des fichiers}}

----
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

L'objectif est de vous présenter quelques commandes de bases pour vous mettre le pied à l'étrier avec votre terminal. Nous ne pouvons pas être exhaustif car toutes les commandes possèdent un grand nombre d'options. Elles ne seront donc que rarement présentées ici. Pour les connaître il faut utiliser la commande ''man''. Il s'agit de la commande la plus imporante car elle vous explique comment fonctionne les autres commandes. C'est le manuel.

Par exemple pour connaître la liste des possibilités de la commande ''ls'' utilisez la commande :
 $ man ls

= Gestion des fichiers  =

== Lire le contenu d'un fichier  ==

La commande la plus simple pour lire le contenu d'un fichier est la commande cat.
 $ cat fichier

''cat'' cat affiche l'ensemble du fichier sur le terminal, si le fichier est trop grand il va être nécessaire de remonter pour voir le début de celui-ci. Pour ne pas avoir ce problème il est possible soit d'utiliser la commande ''tac'' (''cat'' à l'envers) qui écris sur le terminal le fichier de la fin au début ou utiliser un « pager ».

Un pager est un logiciel qui va vous permettre d'avoir un affichage paginé dans lequel il seras plus facile de naviguer pour monter ou descendre dans le fichier. Les 2 pagers les plus connus et installé par défaut sur Debian sont ''more'' et ''less''. ''less'' est plus récent et offre plus de fonctionnalités. Ils s'utilisent comme cat.

Les commandes ''tail'' et ''head'' permettent d'afficher respectivement la fin et le début des fichiers.

== Trouver un fichier ==

Les deux commandes les plus courantes pour trouver un fichier sont ''locate'' et ''find''.

''locate'' est très rapide il recherche à partir d'un fichier d'index. Ce qui signifie qu'il ne voit pas immédiatement les nouveaux fichiers, il faut attendre un peu ou lancer la commande ''updatedb'' pour mettre à jour cet index. ''locate'' s'utilise ainsi :
 $ locate machin

et il écrira sur le terminal l'ensemble des chemins de fichiers dont le nom contient « machin » où qu'ils soient sur le &quot;disque dur&quot; (système).

''find'' effectue une recherche dans un dossier spécifié. Il s'utilise principalement ainsi :
 $ find [dossier] [-name nom]

(ce qui est entre [] est optionnel)

Il va rechercher dans le dossier ''dossier'' les fichiers de nom ''nom''. Il est possible d'appliquer une grande variété de condition pour n'afficher que les dossiers ou les fichiers d'un certain âge par exemple.

La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 
 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe.

== Supprimer un fichier ==

Pour supprimer un fichier, on utilise la commande ''rm'' (il est possible de donner plusieurs fichiers) :
 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 
 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 
 $ rm -i

Il existe des techniques permettant de retrouver un fichier supprimer. Si l'on souhaite que le fichier ne soit plus retrouvable, il existe la commande ''shred'' qui va écraser le fichier le nombre de fois que vous souhaitez et utiliser d'autres techniques pour empêcher quiconque de retrouver vos fichiers (voir aussi : [[remettre à zéro un disque dur|effacer (et accessoirement tester) un disque dur]]).

== Gérer les répertoires ==

Par défaut vous arrivez à l'ouverture du terminal dans votre dossier personnel (par défaut ''/home/&lt;login&gt;'').
Pour savoir dans quel dossier vous êtes, utilisez la commande ''pwd'' :
 $ pwd
 /home/monlogin

=== Pour changer de répertoire ===

Il faut utiliser la commande ''cd'' suivi du chemin vers le répertoire où vous souhaitez aller.
 $ cd /mon/dossier

Si on omet le dossier, on arrive dans le dossier personnel de l'utilisateur.

=== Pour lister le contenu d'un répertoire ===

Ik faut utiliser la commande ''ls'' pour lister le contenu des répertoires. Il est suivi du (ou des) dossier que l'on veut regarder, si on ne met pas de dossier ce sera le dossier courant.
 $ ls /dossier

=== Créer/supprimer un dossier ===

Pour créer un dossier on utilise la commande ''mkdir'' suivi du (ou des) dossier que l'on veut créer :
 $ mkdir /dossier

L'option ''-p'' permet de créer tous les dossiers parents qui n'existent pas encore.

Pour supprimer un dossier, on utilise la commande ''rmdir'' !
 $ rmdir /dossier

Cette commande ne peut supprimer qu'un dossier vide, pour supprimer un dossier et tout son contenu on utilise la commande ''rm'' avec l'option ''-r'' :
 $ rm -r /dossier

== Copier, renommer et déplacer un fichier ==

La commande ''cp'' permet de copier un (ou plusieurs fichiers). On lui passe en paramètre la liste des fichiers que l'on veut copier suivi du dossier de destination. S'il n'y a qu'un seul fichier la destination peut être un autre fichier :
 $ cp fic1 fic2 fic3 dossier/
 $ cp fic_orig fic_dest

La commande ''mv'' sert à la fois à déplacer et à renommer un fichier. Renommer un fichier consiste à déplacer le fichier à l'endroi où il est déjà avec un nom différent. Comme pour ''cp'' lorsque l'on déplace plusieurs fichier le dernier paramètre doit être un dossier :
 $ mv fic1 fic2 fic3 dossier/
 $ mv fic_orig fic_dest

== Quelques commandes autres ==

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

S'utilise avec les droits &quot;root&quot;

Exemple Pour sauvegarder le MBR du disque hda dans le fichier mbr.sav :
 # dd if=/dev/hda of=mbr.sav bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 9,3797e-05 s, 5,5 MB/s

[[La_commande_dd|Plus d'informations sur la commande dd...]]

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 
 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 
 $ file fichier

=== La command '''ln''' ===

Créer un lien (un alias ou un raccourci) vers un programme ou un fichier.

 Un lien symbolique :
 ln -s &lt;chemin_complet/fichier ou répertoire de destination&gt; &lt;chemin_complet/nom du lien symbolique&gt;

La commande ln utilisée sans -s créé un exemplaire supplémentaire du fichier ( à développer)

== Quelques &quot;trucs&quot;  ==

=== Gestion des caractères spéciaux ===
Dans un shell (quelqu'il soit), certains caractères sont dis spéciaux. En effet ils sont interprétés par le shell avant que la commande soit lancée. Les principaux son « », «&amp;», «|», «$», «&quot;», «'», «\»... (la liste n'est pas exaustive).

Si un fichier (ou un dossier) contien l'un des ses caractères dans son nom, cela peut gêner l'utilisation du shell. Pour pallier ce problème il existe 3 solutions :
* la première consiste à faire précédé cahque caractère particulier par un «\» y compris si c'est déjà un «\» (ce qui donne «\\»)
* la deuxième consiste à entourer le fichier par des «&quot;» (dans ce cas si le fichier contient de «&quot;» dans son nom, il faut les protéger avec des «\»). Cette méthode permet de protéger tout les caractères sauf «$», «{» et «}».
* la dernière méthode consiste à entourer le nom de fichier par des «'» (dans le cas où il y a déjà des «'», il faut les protéger avec un «\»

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;'] 

=== Fichier commençant par un tiret  ===
Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 
 $ rm -fichier.txt

ne marchera pas, ''rm'' croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret.&lt;br&gt;Il faut donc utiliser l'option de fin de commande symbolisée par deux tirets consécutifs ''--''. Pour notre exemple, on tapera&amp;nbsp;: 
 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=4679&amp;start=0  problème de nom : renommer un fichier commençant par un tiret] 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 
 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 
 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max

== Quelques exemples de commandes ==

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 
 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 
 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 


=== Épurer un fichier de ses lignes commentées ===

La commande ci-dessous écrira un nouveau fichier (fichier_sans_commentaires) à partir de &quot;fichier&quot; en enlevant les lignes commentées (commençant par #) :

 grep -v &quot;^#&quot; fichier | grep -v &quot;^$&quot; &gt; fichier_sans_commentaires

[http://forum.debian-fr.org/viewtopic.php?p=269266#p269266 Epurer un fichiers des lignes commençant par #]

[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>ozv6uhrftis55v39pdjaga35z78vgdx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5345</id>
      <parentid>5344</parentid>
      <timestamp>2013-08-09T06:35:58Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Supprimer un fichier */</comment>
      <text xml:space="preserve" bytes="11252">{{Ébauche|La gestion des fichiers}}

----
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

L'objectif est de vous présenter quelques commandes de bases pour vous mettre le pied à l'étrier avec votre terminal. Nous ne pouvons pas être exhaustif car toutes les commandes possèdent un grand nombre d'options. Elles ne seront donc que rarement présentées ici. Pour les connaître il faut utiliser la commande ''man''. Il s'agit de la commande la plus imporante car elle vous explique comment fonctionne les autres commandes. C'est le manuel.

Par exemple pour connaître la liste des possibilités de la commande ''ls'' utilisez la commande :
 $ man ls

= Gestion des fichiers  =

== Lire le contenu d'un fichier  ==

La commande la plus simple pour lire le contenu d'un fichier est la commande cat.
 $ cat fichier

''cat'' cat affiche l'ensemble du fichier sur le terminal, si le fichier est trop grand il va être nécessaire de remonter pour voir le début de celui-ci. Pour ne pas avoir ce problème il est possible soit d'utiliser la commande ''tac'' (''cat'' à l'envers) qui écris sur le terminal le fichier de la fin au début ou utiliser un « pager ».

Un pager est un logiciel qui va vous permettre d'avoir un affichage paginé dans lequel il seras plus facile de naviguer pour monter ou descendre dans le fichier. Les 2 pagers les plus connus et installé par défaut sur Debian sont ''more'' et ''less''. ''less'' est plus récent et offre plus de fonctionnalités. Ils s'utilisent comme cat.

Les commandes ''tail'' et ''head'' permettent d'afficher respectivement la fin et le début des fichiers.

== Trouver un fichier ==

Les deux commandes les plus courantes pour trouver un fichier sont ''locate'' et ''find''.

''locate'' est très rapide il recherche à partir d'un fichier d'index. Ce qui signifie qu'il ne voit pas immédiatement les nouveaux fichiers, il faut attendre un peu ou lancer la commande ''updatedb'' pour mettre à jour cet index. ''locate'' s'utilise ainsi :
 $ locate machin

et il écrira sur le terminal l'ensemble des chemins de fichiers dont le nom contient « machin » où qu'ils soient sur le &quot;disque dur&quot; (système).

''find'' effectue une recherche dans un dossier spécifié. Il s'utilise principalement ainsi :
 $ find [dossier] [-name nom]

(ce qui est entre [] est optionnel)

Il va rechercher dans le dossier ''dossier'' les fichiers de nom ''nom''. Il est possible d'appliquer une grande variété de condition pour n'afficher que les dossiers ou les fichiers d'un certain âge par exemple.

La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 
 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe.

== Supprimer un fichier ==

Pour supprimer un fichier, on utilise la commande ''rm'' (il est possible de donner plusieurs fichiers) :
 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 
 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 
 $ rm -i

Il existe des techniques permettant de retrouver un fichier supprimé. Si l'on souhaite que le fichier soit réellement introuvable, il existe la commande ''shred'' qui va écraser le fichier le nombre de fois que vous souhaitez et utiliser d'autres techniques pour empêcher quiconque de retrouver vos fichiers (voir aussi : [[remettre à zéro un disque dur|effacer (et accessoirement tester) un disque dur]]).

== Gérer les répertoires ==

Par défaut vous arrivez à l'ouverture du terminal dans votre dossier personnel (par défaut ''/home/&lt;login&gt;'').
Pour savoir dans quel dossier vous êtes, utilisez la commande ''pwd'' :
 $ pwd
 /home/monlogin

=== Pour changer de répertoire ===

Il faut utiliser la commande ''cd'' suivi du chemin vers le répertoire où vous souhaitez aller.
 $ cd /mon/dossier

Si on omet le dossier, on arrive dans le dossier personnel de l'utilisateur.

=== Pour lister le contenu d'un répertoire ===

Ik faut utiliser la commande ''ls'' pour lister le contenu des répertoires. Il est suivi du (ou des) dossier que l'on veut regarder, si on ne met pas de dossier ce sera le dossier courant.
 $ ls /dossier

=== Créer/supprimer un dossier ===

Pour créer un dossier on utilise la commande ''mkdir'' suivi du (ou des) dossier que l'on veut créer :
 $ mkdir /dossier

L'option ''-p'' permet de créer tous les dossiers parents qui n'existent pas encore.

Pour supprimer un dossier, on utilise la commande ''rmdir'' !
 $ rmdir /dossier

Cette commande ne peut supprimer qu'un dossier vide, pour supprimer un dossier et tout son contenu on utilise la commande ''rm'' avec l'option ''-r'' :
 $ rm -r /dossier

== Copier, renommer et déplacer un fichier ==

La commande ''cp'' permet de copier un (ou plusieurs fichiers). On lui passe en paramètre la liste des fichiers que l'on veut copier suivi du dossier de destination. S'il n'y a qu'un seul fichier la destination peut être un autre fichier :
 $ cp fic1 fic2 fic3 dossier/
 $ cp fic_orig fic_dest

La commande ''mv'' sert à la fois à déplacer et à renommer un fichier. Renommer un fichier consiste à déplacer le fichier à l'endroi où il est déjà avec un nom différent. Comme pour ''cp'' lorsque l'on déplace plusieurs fichier le dernier paramètre doit être un dossier :
 $ mv fic1 fic2 fic3 dossier/
 $ mv fic_orig fic_dest

== Quelques commandes autres ==

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

S'utilise avec les droits &quot;root&quot;

Exemple Pour sauvegarder le MBR du disque hda dans le fichier mbr.sav :
 # dd if=/dev/hda of=mbr.sav bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 9,3797e-05 s, 5,5 MB/s

[[La_commande_dd|Plus d'informations sur la commande dd...]]

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 
 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 
 $ file fichier

=== La command '''ln''' ===

Créer un lien (un alias ou un raccourci) vers un programme ou un fichier.

 Un lien symbolique :
 ln -s &lt;chemin_complet/fichier ou répertoire de destination&gt; &lt;chemin_complet/nom du lien symbolique&gt;

La commande ln utilisée sans -s créé un exemplaire supplémentaire du fichier ( à développer)

== Quelques &quot;trucs&quot;  ==

=== Gestion des caractères spéciaux ===
Dans un shell (quelqu'il soit), certains caractères sont dis spéciaux. En effet ils sont interprétés par le shell avant que la commande soit lancée. Les principaux son « », «&amp;», «|», «$», «&quot;», «'», «\»... (la liste n'est pas exaustive).

Si un fichier (ou un dossier) contien l'un des ses caractères dans son nom, cela peut gêner l'utilisation du shell. Pour pallier ce problème il existe 3 solutions :
* la première consiste à faire précédé cahque caractère particulier par un «\» y compris si c'est déjà un «\» (ce qui donne «\\»)
* la deuxième consiste à entourer le fichier par des «&quot;» (dans ce cas si le fichier contient de «&quot;» dans son nom, il faut les protéger avec des «\»). Cette méthode permet de protéger tout les caractères sauf «$», «{» et «}».
* la dernière méthode consiste à entourer le nom de fichier par des «'» (dans le cas où il y a déjà des «'», il faut les protéger avec un «\»

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;'] 

=== Fichier commençant par un tiret  ===
Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 
 $ rm -fichier.txt

ne marchera pas, ''rm'' croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret.&lt;br&gt;Il faut donc utiliser l'option de fin de commande symbolisée par deux tirets consécutifs ''--''. Pour notre exemple, on tapera&amp;nbsp;: 
 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=4679&amp;start=0  problème de nom : renommer un fichier commençant par un tiret] 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 
 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 
 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max

== Quelques exemples de commandes ==

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 
 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 
 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 


=== Épurer un fichier de ses lignes commentées ===

La commande ci-dessous écrira un nouveau fichier (fichier_sans_commentaires) à partir de &quot;fichier&quot; en enlevant les lignes commentées (commençant par #) :

 grep -v &quot;^#&quot; fichier | grep -v &quot;^$&quot; &gt; fichier_sans_commentaires

[http://forum.debian-fr.org/viewtopic.php?p=269266#p269266 Epurer un fichiers des lignes commençant par #]

[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>pldzzt21ok2lz2m3rmkz06beuppshtc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5346</id>
      <parentid>5345</parentid>
      <timestamp>2013-08-09T06:36:59Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Pour changer de répertoire */</comment>
      <text xml:space="preserve" bytes="11253">{{Ébauche|La gestion des fichiers}}

----
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

L'objectif est de vous présenter quelques commandes de bases pour vous mettre le pied à l'étrier avec votre terminal. Nous ne pouvons pas être exhaustif car toutes les commandes possèdent un grand nombre d'options. Elles ne seront donc que rarement présentées ici. Pour les connaître il faut utiliser la commande ''man''. Il s'agit de la commande la plus imporante car elle vous explique comment fonctionne les autres commandes. C'est le manuel.

Par exemple pour connaître la liste des possibilités de la commande ''ls'' utilisez la commande :
 $ man ls

= Gestion des fichiers  =

== Lire le contenu d'un fichier  ==

La commande la plus simple pour lire le contenu d'un fichier est la commande cat.
 $ cat fichier

''cat'' cat affiche l'ensemble du fichier sur le terminal, si le fichier est trop grand il va être nécessaire de remonter pour voir le début de celui-ci. Pour ne pas avoir ce problème il est possible soit d'utiliser la commande ''tac'' (''cat'' à l'envers) qui écris sur le terminal le fichier de la fin au début ou utiliser un « pager ».

Un pager est un logiciel qui va vous permettre d'avoir un affichage paginé dans lequel il seras plus facile de naviguer pour monter ou descendre dans le fichier. Les 2 pagers les plus connus et installé par défaut sur Debian sont ''more'' et ''less''. ''less'' est plus récent et offre plus de fonctionnalités. Ils s'utilisent comme cat.

Les commandes ''tail'' et ''head'' permettent d'afficher respectivement la fin et le début des fichiers.

== Trouver un fichier ==

Les deux commandes les plus courantes pour trouver un fichier sont ''locate'' et ''find''.

''locate'' est très rapide il recherche à partir d'un fichier d'index. Ce qui signifie qu'il ne voit pas immédiatement les nouveaux fichiers, il faut attendre un peu ou lancer la commande ''updatedb'' pour mettre à jour cet index. ''locate'' s'utilise ainsi :
 $ locate machin

et il écrira sur le terminal l'ensemble des chemins de fichiers dont le nom contient « machin » où qu'ils soient sur le &quot;disque dur&quot; (système).

''find'' effectue une recherche dans un dossier spécifié. Il s'utilise principalement ainsi :
 $ find [dossier] [-name nom]

(ce qui est entre [] est optionnel)

Il va rechercher dans le dossier ''dossier'' les fichiers de nom ''nom''. Il est possible d'appliquer une grande variété de condition pour n'afficher que les dossiers ou les fichiers d'un certain âge par exemple.

La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 
 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe.

== Supprimer un fichier ==

Pour supprimer un fichier, on utilise la commande ''rm'' (il est possible de donner plusieurs fichiers) :
 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 
 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 
 $ rm -i

Il existe des techniques permettant de retrouver un fichier supprimé. Si l'on souhaite que le fichier soit réellement introuvable, il existe la commande ''shred'' qui va écraser le fichier le nombre de fois que vous souhaitez et utiliser d'autres techniques pour empêcher quiconque de retrouver vos fichiers (voir aussi : [[remettre à zéro un disque dur|effacer (et accessoirement tester) un disque dur]]).

== Gérer les répertoires ==

Par défaut vous arrivez à l'ouverture du terminal dans votre dossier personnel (par défaut ''/home/&lt;login&gt;'').
Pour savoir dans quel dossier vous êtes, utilisez la commande ''pwd'' :
 $ pwd
 /home/monlogin

=== Pour changer de répertoire ===

Il faut utiliser la commande ''cd'' suivie du chemin vers le répertoire où vous souhaitez aller.
 $ cd /mon/dossier

Si on omet le dossier, on arrive dans le dossier personnel de l'utilisateur.

=== Pour lister le contenu d'un répertoire ===

Ik faut utiliser la commande ''ls'' pour lister le contenu des répertoires. Il est suivi du (ou des) dossier que l'on veut regarder, si on ne met pas de dossier ce sera le dossier courant.
 $ ls /dossier

=== Créer/supprimer un dossier ===

Pour créer un dossier on utilise la commande ''mkdir'' suivi du (ou des) dossier que l'on veut créer :
 $ mkdir /dossier

L'option ''-p'' permet de créer tous les dossiers parents qui n'existent pas encore.

Pour supprimer un dossier, on utilise la commande ''rmdir'' !
 $ rmdir /dossier

Cette commande ne peut supprimer qu'un dossier vide, pour supprimer un dossier et tout son contenu on utilise la commande ''rm'' avec l'option ''-r'' :
 $ rm -r /dossier

== Copier, renommer et déplacer un fichier ==

La commande ''cp'' permet de copier un (ou plusieurs fichiers). On lui passe en paramètre la liste des fichiers que l'on veut copier suivi du dossier de destination. S'il n'y a qu'un seul fichier la destination peut être un autre fichier :
 $ cp fic1 fic2 fic3 dossier/
 $ cp fic_orig fic_dest

La commande ''mv'' sert à la fois à déplacer et à renommer un fichier. Renommer un fichier consiste à déplacer le fichier à l'endroi où il est déjà avec un nom différent. Comme pour ''cp'' lorsque l'on déplace plusieurs fichier le dernier paramètre doit être un dossier :
 $ mv fic1 fic2 fic3 dossier/
 $ mv fic_orig fic_dest

== Quelques commandes autres ==

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

S'utilise avec les droits &quot;root&quot;

Exemple Pour sauvegarder le MBR du disque hda dans le fichier mbr.sav :
 # dd if=/dev/hda of=mbr.sav bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 9,3797e-05 s, 5,5 MB/s

[[La_commande_dd|Plus d'informations sur la commande dd...]]

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 
 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 
 $ file fichier

=== La command '''ln''' ===

Créer un lien (un alias ou un raccourci) vers un programme ou un fichier.

 Un lien symbolique :
 ln -s &lt;chemin_complet/fichier ou répertoire de destination&gt; &lt;chemin_complet/nom du lien symbolique&gt;

La commande ln utilisée sans -s créé un exemplaire supplémentaire du fichier ( à développer)

== Quelques &quot;trucs&quot;  ==

=== Gestion des caractères spéciaux ===
Dans un shell (quelqu'il soit), certains caractères sont dis spéciaux. En effet ils sont interprétés par le shell avant que la commande soit lancée. Les principaux son « », «&amp;», «|», «$», «&quot;», «'», «\»... (la liste n'est pas exaustive).

Si un fichier (ou un dossier) contien l'un des ses caractères dans son nom, cela peut gêner l'utilisation du shell. Pour pallier ce problème il existe 3 solutions :
* la première consiste à faire précédé cahque caractère particulier par un «\» y compris si c'est déjà un «\» (ce qui donne «\\»)
* la deuxième consiste à entourer le fichier par des «&quot;» (dans ce cas si le fichier contient de «&quot;» dans son nom, il faut les protéger avec des «\»). Cette méthode permet de protéger tout les caractères sauf «$», «{» et «}».
* la dernière méthode consiste à entourer le nom de fichier par des «'» (dans le cas où il y a déjà des «'», il faut les protéger avec un «\»

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;'] 

=== Fichier commençant par un tiret  ===
Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 
 $ rm -fichier.txt

ne marchera pas, ''rm'' croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret.&lt;br&gt;Il faut donc utiliser l'option de fin de commande symbolisée par deux tirets consécutifs ''--''. Pour notre exemple, on tapera&amp;nbsp;: 
 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=4679&amp;start=0  problème de nom : renommer un fichier commençant par un tiret] 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 
 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 
 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max

== Quelques exemples de commandes ==

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 
 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 
 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 


=== Épurer un fichier de ses lignes commentées ===

La commande ci-dessous écrira un nouveau fichier (fichier_sans_commentaires) à partir de &quot;fichier&quot; en enlevant les lignes commentées (commençant par #) :

 grep -v &quot;^#&quot; fichier | grep -v &quot;^$&quot; &gt; fichier_sans_commentaires

[http://forum.debian-fr.org/viewtopic.php?p=269266#p269266 Epurer un fichiers des lignes commençant par #]

[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>l4gb4ms7p0tgmsbq4oz06ovylmpmru4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5703</id>
      <parentid>5346</parentid>
      <timestamp>2014-08-20T03:18:48Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Trouver un fichier */ chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="11273">{{Ébauche|La gestion des fichiers}}

----
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

L'objectif est de vous présenter quelques commandes de bases pour vous mettre le pied à l'étrier avec votre terminal. Nous ne pouvons pas être exhaustif car toutes les commandes possèdent un grand nombre d'options. Elles ne seront donc que rarement présentées ici. Pour les connaître il faut utiliser la commande ''man''. Il s'agit de la commande la plus imporante car elle vous explique comment fonctionne les autres commandes. C'est le manuel.

Par exemple pour connaître la liste des possibilités de la commande ''ls'' utilisez la commande :
 $ man ls

= Gestion des fichiers  =

== Lire le contenu d'un fichier  ==

La commande la plus simple pour lire le contenu d'un fichier est la commande cat.
 $ cat fichier

''cat'' cat affiche l'ensemble du fichier sur le terminal, si le fichier est trop grand il va être nécessaire de remonter pour voir le début de celui-ci. Pour ne pas avoir ce problème il est possible soit d'utiliser la commande ''tac'' (''cat'' à l'envers) qui écris sur le terminal le fichier de la fin au début ou utiliser un « pager ».

Un pager est un logiciel qui va vous permettre d'avoir un affichage paginé dans lequel il seras plus facile de naviguer pour monter ou descendre dans le fichier. Les 2 pagers les plus connus et installé par défaut sur Debian sont ''more'' et ''less''. ''less'' est plus récent et offre plus de fonctionnalités. Ils s'utilisent comme cat.

Les commandes ''tail'' et ''head'' permettent d'afficher respectivement la fin et le début des fichiers.

== Trouver un fichier ==

Les deux commandes les plus courantes pour trouver un fichier sont ''locate'' et ''find''.

''locate'' est très rapide il recherche à partir d'un fichier d'index. Ce qui signifie qu'il ne voit pas immédiatement les nouveaux fichiers, il faut attendre un peu ou lancer la commande ''updatedb'' pour mettre à jour cet index. ''locate'' s'utilise ainsi :
 $ locate machin

et il écrira sur le terminal l'ensemble des chemins de fichiers dont le nom contient « machin » où qu'ils soient sur le &quot;disque dur&quot; (système).

''find'' effectue une recherche dans un répertoire spécifié. Il s'utilise principalement ainsi :
 $ find [répertoire] [-name nom]

(ce qui est entre [] est optionnel)

Il va rechercher dans le répertoire ''répertoire'' les fichiers de nom ''nom''. Il est possible d'appliquer une grande variété de condition pour n'afficher que les répertoires ou les fichiers d'un certain âge par exemple.

La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 
 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe.

== Supprimer un fichier ==

Pour supprimer un fichier, on utilise la commande ''rm'' (il est possible de donner plusieurs fichiers) :
 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 
 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 
 $ rm -i

Il existe des techniques permettant de retrouver un fichier supprimé. Si l'on souhaite que le fichier soit réellement introuvable, il existe la commande ''shred'' qui va écraser le fichier le nombre de fois que vous souhaitez et utiliser d'autres techniques pour empêcher quiconque de retrouver vos fichiers (voir aussi : [[remettre à zéro un disque dur|effacer (et accessoirement tester) un disque dur]]).

== Gérer les répertoires ==

Par défaut vous arrivez à l'ouverture du terminal dans votre dossier personnel (par défaut ''/home/&lt;login&gt;'').
Pour savoir dans quel dossier vous êtes, utilisez la commande ''pwd'' :
 $ pwd
 /home/monlogin

=== Pour changer de répertoire ===

Il faut utiliser la commande ''cd'' suivie du chemin vers le répertoire où vous souhaitez aller.
 $ cd /mon/dossier

Si on omet le dossier, on arrive dans le dossier personnel de l'utilisateur.

=== Pour lister le contenu d'un répertoire ===

Ik faut utiliser la commande ''ls'' pour lister le contenu des répertoires. Il est suivi du (ou des) dossier que l'on veut regarder, si on ne met pas de dossier ce sera le dossier courant.
 $ ls /dossier

=== Créer/supprimer un dossier ===

Pour créer un dossier on utilise la commande ''mkdir'' suivi du (ou des) dossier que l'on veut créer :
 $ mkdir /dossier

L'option ''-p'' permet de créer tous les dossiers parents qui n'existent pas encore.

Pour supprimer un dossier, on utilise la commande ''rmdir'' !
 $ rmdir /dossier

Cette commande ne peut supprimer qu'un dossier vide, pour supprimer un dossier et tout son contenu on utilise la commande ''rm'' avec l'option ''-r'' :
 $ rm -r /dossier

== Copier, renommer et déplacer un fichier ==

La commande ''cp'' permet de copier un (ou plusieurs fichiers). On lui passe en paramètre la liste des fichiers que l'on veut copier suivi du dossier de destination. S'il n'y a qu'un seul fichier la destination peut être un autre fichier :
 $ cp fic1 fic2 fic3 dossier/
 $ cp fic_orig fic_dest

La commande ''mv'' sert à la fois à déplacer et à renommer un fichier. Renommer un fichier consiste à déplacer le fichier à l'endroi où il est déjà avec un nom différent. Comme pour ''cp'' lorsque l'on déplace plusieurs fichier le dernier paramètre doit être un dossier :
 $ mv fic1 fic2 fic3 dossier/
 $ mv fic_orig fic_dest

== Quelques commandes autres ==

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

S'utilise avec les droits &quot;root&quot;

Exemple Pour sauvegarder le MBR du disque hda dans le fichier mbr.sav :
 # dd if=/dev/hda of=mbr.sav bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 9,3797e-05 s, 5,5 MB/s

[[La_commande_dd|Plus d'informations sur la commande dd...]]

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 
 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 
 $ file fichier

=== La command '''ln''' ===

Créer un lien (un alias ou un raccourci) vers un programme ou un fichier.

 Un lien symbolique :
 ln -s &lt;chemin_complet/fichier ou répertoire de destination&gt; &lt;chemin_complet/nom du lien symbolique&gt;

La commande ln utilisée sans -s créé un exemplaire supplémentaire du fichier ( à développer)

== Quelques &quot;trucs&quot;  ==

=== Gestion des caractères spéciaux ===
Dans un shell (quelqu'il soit), certains caractères sont dis spéciaux. En effet ils sont interprétés par le shell avant que la commande soit lancée. Les principaux son « », «&amp;», «|», «$», «&quot;», «'», «\»... (la liste n'est pas exaustive).

Si un fichier (ou un dossier) contien l'un des ses caractères dans son nom, cela peut gêner l'utilisation du shell. Pour pallier ce problème il existe 3 solutions :
* la première consiste à faire précédé cahque caractère particulier par un «\» y compris si c'est déjà un «\» (ce qui donne «\\»)
* la deuxième consiste à entourer le fichier par des «&quot;» (dans ce cas si le fichier contient de «&quot;» dans son nom, il faut les protéger avec des «\»). Cette méthode permet de protéger tout les caractères sauf «$», «{» et «}».
* la dernière méthode consiste à entourer le nom de fichier par des «'» (dans le cas où il y a déjà des «'», il faut les protéger avec un «\»

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;'] 

=== Fichier commençant par un tiret  ===
Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 
 $ rm -fichier.txt

ne marchera pas, ''rm'' croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret.&lt;br&gt;Il faut donc utiliser l'option de fin de commande symbolisée par deux tirets consécutifs ''--''. Pour notre exemple, on tapera&amp;nbsp;: 
 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=4679&amp;start=0  problème de nom : renommer un fichier commençant par un tiret] 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 
 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 
 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max

== Quelques exemples de commandes ==

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 
 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 
 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 


=== Épurer un fichier de ses lignes commentées ===

La commande ci-dessous écrira un nouveau fichier (fichier_sans_commentaires) à partir de &quot;fichier&quot; en enlevant les lignes commentées (commençant par #) :

 grep -v &quot;^#&quot; fichier | grep -v &quot;^$&quot; &gt; fichier_sans_commentaires

[http://forum.debian-fr.org/viewtopic.php?p=269266#p269266 Epurer un fichiers des lignes commençant par #]

[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>evt5f2eeav4diis2stdhobszwlqx9yw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5704</id>
      <parentid>5703</parentid>
      <timestamp>2014-08-20T03:20:42Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Gérer les répertoires */ chg &quot;dosssier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="11329">{{Ébauche|La gestion des fichiers}}

----
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

L'objectif est de vous présenter quelques commandes de bases pour vous mettre le pied à l'étrier avec votre terminal. Nous ne pouvons pas être exhaustif car toutes les commandes possèdent un grand nombre d'options. Elles ne seront donc que rarement présentées ici. Pour les connaître il faut utiliser la commande ''man''. Il s'agit de la commande la plus imporante car elle vous explique comment fonctionne les autres commandes. C'est le manuel.

Par exemple pour connaître la liste des possibilités de la commande ''ls'' utilisez la commande :
 $ man ls

= Gestion des fichiers  =

== Lire le contenu d'un fichier  ==

La commande la plus simple pour lire le contenu d'un fichier est la commande cat.
 $ cat fichier

''cat'' cat affiche l'ensemble du fichier sur le terminal, si le fichier est trop grand il va être nécessaire de remonter pour voir le début de celui-ci. Pour ne pas avoir ce problème il est possible soit d'utiliser la commande ''tac'' (''cat'' à l'envers) qui écris sur le terminal le fichier de la fin au début ou utiliser un « pager ».

Un pager est un logiciel qui va vous permettre d'avoir un affichage paginé dans lequel il seras plus facile de naviguer pour monter ou descendre dans le fichier. Les 2 pagers les plus connus et installé par défaut sur Debian sont ''more'' et ''less''. ''less'' est plus récent et offre plus de fonctionnalités. Ils s'utilisent comme cat.

Les commandes ''tail'' et ''head'' permettent d'afficher respectivement la fin et le début des fichiers.

== Trouver un fichier ==

Les deux commandes les plus courantes pour trouver un fichier sont ''locate'' et ''find''.

''locate'' est très rapide il recherche à partir d'un fichier d'index. Ce qui signifie qu'il ne voit pas immédiatement les nouveaux fichiers, il faut attendre un peu ou lancer la commande ''updatedb'' pour mettre à jour cet index. ''locate'' s'utilise ainsi :
 $ locate machin

et il écrira sur le terminal l'ensemble des chemins de fichiers dont le nom contient « machin » où qu'ils soient sur le &quot;disque dur&quot; (système).

''find'' effectue une recherche dans un répertoire spécifié. Il s'utilise principalement ainsi :
 $ find [répertoire] [-name nom]

(ce qui est entre [] est optionnel)

Il va rechercher dans le répertoire ''répertoire'' les fichiers de nom ''nom''. Il est possible d'appliquer une grande variété de condition pour n'afficher que les répertoires ou les fichiers d'un certain âge par exemple.

La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 
 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe.

== Supprimer un fichier ==

Pour supprimer un fichier, on utilise la commande ''rm'' (il est possible de donner plusieurs fichiers) :
 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 
 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 
 $ rm -i

Il existe des techniques permettant de retrouver un fichier supprimé. Si l'on souhaite que le fichier soit réellement introuvable, il existe la commande ''shred'' qui va écraser le fichier le nombre de fois que vous souhaitez et utiliser d'autres techniques pour empêcher quiconque de retrouver vos fichiers (voir aussi : [[remettre à zéro un disque dur|effacer (et accessoirement tester) un disque dur]]).

== Gérer les répertoires ==

Par défaut vous arrivez à l'ouverture du terminal dans votre répertoire personnel (par défaut ''/home/&lt;login&gt;'').
Pour savoir dans quel répertoire vous êtes, utilisez la commande ''pwd'' :
 $ pwd
 /home/monlogin

=== Pour changer de répertoire ===

Il faut utiliser la commande ''cd'' suivie du chemin vers le répertoire où vous souhaitez aller.
 $ cd /mon/répertoire

Si on omet le répertoire, on arrive dans le répertoire personnel de l'utilisateur.

=== Pour lister le contenu d'un répertoire ===

Ik faut utiliser la commande ''ls'' pour lister le contenu des répertoires. Il est suivi du (ou des) répertoire que l'on veut regarder, si on ne met pas de répertoire ce sera le répertoire courant.
 $ ls /répertoire

=== Créer/supprimer un répertoire ===

Pour créer un répertoire on utilise la commande ''mkdir'' suivi du (ou des) répertoire que l'on veut créer :
 $ mkdir /répertoire

L'option ''-p'' permet de créer tous les répertoires parents qui n'existent pas encore.

Pour supprimer un dossier, on utilise la commande ''rmdir'' !
 $ rmdir /dossier

Cette commande ne peut supprimer qu'un dossier vide, pour supprimer un dossier et tout son contenu on utilise la commande ''rm'' avec l'option ''-r'' :
 $ rm -r /dossier

== Copier, renommer et déplacer un fichier ==

La commande ''cp'' permet de copier un (ou plusieurs fichiers). On lui passe en paramètre la liste des fichiers que l'on veut copier suivi du dossier de destination. S'il n'y a qu'un seul fichier la destination peut être un autre fichier :
 $ cp fic1 fic2 fic3 dossier/
 $ cp fic_orig fic_dest

La commande ''mv'' sert à la fois à déplacer et à renommer un fichier. Renommer un fichier consiste à déplacer le fichier à l'endroi où il est déjà avec un nom différent. Comme pour ''cp'' lorsque l'on déplace plusieurs fichier le dernier paramètre doit être un dossier :
 $ mv fic1 fic2 fic3 dossier/
 $ mv fic_orig fic_dest

== Quelques commandes autres ==

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

S'utilise avec les droits &quot;root&quot;

Exemple Pour sauvegarder le MBR du disque hda dans le fichier mbr.sav :
 # dd if=/dev/hda of=mbr.sav bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 9,3797e-05 s, 5,5 MB/s

[[La_commande_dd|Plus d'informations sur la commande dd...]]

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 
 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 
 $ file fichier

=== La command '''ln''' ===

Créer un lien (un alias ou un raccourci) vers un programme ou un fichier.

 Un lien symbolique :
 ln -s &lt;chemin_complet/fichier ou répertoire de destination&gt; &lt;chemin_complet/nom du lien symbolique&gt;

La commande ln utilisée sans -s créé un exemplaire supplémentaire du fichier ( à développer)

== Quelques &quot;trucs&quot;  ==

=== Gestion des caractères spéciaux ===
Dans un shell (quelqu'il soit), certains caractères sont dis spéciaux. En effet ils sont interprétés par le shell avant que la commande soit lancée. Les principaux son « », «&amp;», «|», «$», «&quot;», «'», «\»... (la liste n'est pas exaustive).

Si un fichier (ou un dossier) contien l'un des ses caractères dans son nom, cela peut gêner l'utilisation du shell. Pour pallier ce problème il existe 3 solutions :
* la première consiste à faire précédé cahque caractère particulier par un «\» y compris si c'est déjà un «\» (ce qui donne «\\»)
* la deuxième consiste à entourer le fichier par des «&quot;» (dans ce cas si le fichier contient de «&quot;» dans son nom, il faut les protéger avec des «\»). Cette méthode permet de protéger tout les caractères sauf «$», «{» et «}».
* la dernière méthode consiste à entourer le nom de fichier par des «'» (dans le cas où il y a déjà des «'», il faut les protéger avec un «\»

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;'] 

=== Fichier commençant par un tiret  ===
Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 
 $ rm -fichier.txt

ne marchera pas, ''rm'' croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret.&lt;br&gt;Il faut donc utiliser l'option de fin de commande symbolisée par deux tirets consécutifs ''--''. Pour notre exemple, on tapera&amp;nbsp;: 
 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=4679&amp;start=0  problème de nom : renommer un fichier commençant par un tiret] 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 
 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 
 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max

== Quelques exemples de commandes ==

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 
 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 
 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 


=== Épurer un fichier de ses lignes commentées ===

La commande ci-dessous écrira un nouveau fichier (fichier_sans_commentaires) à partir de &quot;fichier&quot; en enlevant les lignes commentées (commençant par #) :

 grep -v &quot;^#&quot; fichier | grep -v &quot;^$&quot; &gt; fichier_sans_commentaires

[http://forum.debian-fr.org/viewtopic.php?p=269266#p269266 Epurer un fichiers des lignes commençant par #]

[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>sznemcldmmntqky4vqlztyafray9z8m</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5705</id>
      <parentid>5704</parentid>
      <timestamp>2014-08-20T03:21:49Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Créer/supprimer un répertoire */ chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="11349">{{Ébauche|La gestion des fichiers}}

----
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

L'objectif est de vous présenter quelques commandes de bases pour vous mettre le pied à l'étrier avec votre terminal. Nous ne pouvons pas être exhaustif car toutes les commandes possèdent un grand nombre d'options. Elles ne seront donc que rarement présentées ici. Pour les connaître il faut utiliser la commande ''man''. Il s'agit de la commande la plus imporante car elle vous explique comment fonctionne les autres commandes. C'est le manuel.

Par exemple pour connaître la liste des possibilités de la commande ''ls'' utilisez la commande :
 $ man ls

= Gestion des fichiers  =

== Lire le contenu d'un fichier  ==

La commande la plus simple pour lire le contenu d'un fichier est la commande cat.
 $ cat fichier

''cat'' cat affiche l'ensemble du fichier sur le terminal, si le fichier est trop grand il va être nécessaire de remonter pour voir le début de celui-ci. Pour ne pas avoir ce problème il est possible soit d'utiliser la commande ''tac'' (''cat'' à l'envers) qui écris sur le terminal le fichier de la fin au début ou utiliser un « pager ».

Un pager est un logiciel qui va vous permettre d'avoir un affichage paginé dans lequel il seras plus facile de naviguer pour monter ou descendre dans le fichier. Les 2 pagers les plus connus et installé par défaut sur Debian sont ''more'' et ''less''. ''less'' est plus récent et offre plus de fonctionnalités. Ils s'utilisent comme cat.

Les commandes ''tail'' et ''head'' permettent d'afficher respectivement la fin et le début des fichiers.

== Trouver un fichier ==

Les deux commandes les plus courantes pour trouver un fichier sont ''locate'' et ''find''.

''locate'' est très rapide il recherche à partir d'un fichier d'index. Ce qui signifie qu'il ne voit pas immédiatement les nouveaux fichiers, il faut attendre un peu ou lancer la commande ''updatedb'' pour mettre à jour cet index. ''locate'' s'utilise ainsi :
 $ locate machin

et il écrira sur le terminal l'ensemble des chemins de fichiers dont le nom contient « machin » où qu'ils soient sur le &quot;disque dur&quot; (système).

''find'' effectue une recherche dans un répertoire spécifié. Il s'utilise principalement ainsi :
 $ find [répertoire] [-name nom]

(ce qui est entre [] est optionnel)

Il va rechercher dans le répertoire ''répertoire'' les fichiers de nom ''nom''. Il est possible d'appliquer une grande variété de condition pour n'afficher que les répertoires ou les fichiers d'un certain âge par exemple.

La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 
 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe.

== Supprimer un fichier ==

Pour supprimer un fichier, on utilise la commande ''rm'' (il est possible de donner plusieurs fichiers) :
 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 
 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 
 $ rm -i

Il existe des techniques permettant de retrouver un fichier supprimé. Si l'on souhaite que le fichier soit réellement introuvable, il existe la commande ''shred'' qui va écraser le fichier le nombre de fois que vous souhaitez et utiliser d'autres techniques pour empêcher quiconque de retrouver vos fichiers (voir aussi : [[remettre à zéro un disque dur|effacer (et accessoirement tester) un disque dur]]).

== Gérer les répertoires ==

Par défaut vous arrivez à l'ouverture du terminal dans votre répertoire personnel (par défaut ''/home/&lt;login&gt;'').
Pour savoir dans quel répertoire vous êtes, utilisez la commande ''pwd'' :
 $ pwd
 /home/monlogin

=== Pour changer de répertoire ===

Il faut utiliser la commande ''cd'' suivie du chemin vers le répertoire où vous souhaitez aller.
 $ cd /mon/répertoire

Si on omet le répertoire, on arrive dans le répertoire personnel de l'utilisateur.

=== Pour lister le contenu d'un répertoire ===

Ik faut utiliser la commande ''ls'' pour lister le contenu des répertoires. Il est suivi du (ou des) répertoire que l'on veut regarder, si on ne met pas de répertoire ce sera le répertoire courant.
 $ ls /répertoire

=== Créer/supprimer un répertoire ===

Pour créer un répertoire on utilise la commande ''mkdir'' suivi du (ou des) répertoire que l'on veut créer :
 $ mkdir /répertoire

L'option ''-p'' permet de créer tous les répertoires parents qui n'existent pas encore.

Pour supprimer un répertoire, on utilise la commande ''rmdir'' !
 $ rmdir /répertoire

Cette commande ne peut supprimer qu'un répertoire vide, pour supprimer un répertoire et tout son contenu on utilise la commande ''rm'' avec l'option ''-r'' :
 $ rm -r /répertoire

== Copier, renommer et déplacer un fichier ==

La commande ''cp'' permet de copier un (ou plusieurs fichiers). On lui passe en paramètre la liste des fichiers que l'on veut copier suivi du dossier de destination. S'il n'y a qu'un seul fichier la destination peut être un autre fichier :
 $ cp fic1 fic2 fic3 dossier/
 $ cp fic_orig fic_dest

La commande ''mv'' sert à la fois à déplacer et à renommer un fichier. Renommer un fichier consiste à déplacer le fichier à l'endroi où il est déjà avec un nom différent. Comme pour ''cp'' lorsque l'on déplace plusieurs fichier le dernier paramètre doit être un dossier :
 $ mv fic1 fic2 fic3 dossier/
 $ mv fic_orig fic_dest

== Quelques commandes autres ==

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

S'utilise avec les droits &quot;root&quot;

Exemple Pour sauvegarder le MBR du disque hda dans le fichier mbr.sav :
 # dd if=/dev/hda of=mbr.sav bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 9,3797e-05 s, 5,5 MB/s

[[La_commande_dd|Plus d'informations sur la commande dd...]]

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 
 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 
 $ file fichier

=== La command '''ln''' ===

Créer un lien (un alias ou un raccourci) vers un programme ou un fichier.

 Un lien symbolique :
 ln -s &lt;chemin_complet/fichier ou répertoire de destination&gt; &lt;chemin_complet/nom du lien symbolique&gt;

La commande ln utilisée sans -s créé un exemplaire supplémentaire du fichier ( à développer)

== Quelques &quot;trucs&quot;  ==

=== Gestion des caractères spéciaux ===
Dans un shell (quelqu'il soit), certains caractères sont dis spéciaux. En effet ils sont interprétés par le shell avant que la commande soit lancée. Les principaux son « », «&amp;», «|», «$», «&quot;», «'», «\»... (la liste n'est pas exaustive).

Si un fichier (ou un dossier) contien l'un des ses caractères dans son nom, cela peut gêner l'utilisation du shell. Pour pallier ce problème il existe 3 solutions :
* la première consiste à faire précédé cahque caractère particulier par un «\» y compris si c'est déjà un «\» (ce qui donne «\\»)
* la deuxième consiste à entourer le fichier par des «&quot;» (dans ce cas si le fichier contient de «&quot;» dans son nom, il faut les protéger avec des «\»). Cette méthode permet de protéger tout les caractères sauf «$», «{» et «}».
* la dernière méthode consiste à entourer le nom de fichier par des «'» (dans le cas où il y a déjà des «'», il faut les protéger avec un «\»

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;'] 

=== Fichier commençant par un tiret  ===
Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 
 $ rm -fichier.txt

ne marchera pas, ''rm'' croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret.&lt;br&gt;Il faut donc utiliser l'option de fin de commande symbolisée par deux tirets consécutifs ''--''. Pour notre exemple, on tapera&amp;nbsp;: 
 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=4679&amp;start=0  problème de nom : renommer un fichier commençant par un tiret] 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 
 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 
 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max

== Quelques exemples de commandes ==

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 
 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 
 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 


=== Épurer un fichier de ses lignes commentées ===

La commande ci-dessous écrira un nouveau fichier (fichier_sans_commentaires) à partir de &quot;fichier&quot; en enlevant les lignes commentées (commençant par #) :

 grep -v &quot;^#&quot; fichier | grep -v &quot;^$&quot; &gt; fichier_sans_commentaires

[http://forum.debian-fr.org/viewtopic.php?p=269266#p269266 Epurer un fichiers des lignes commençant par #]

[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>h92xwxosi7hb9xznqs2aekivq8l2t91</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5706</id>
      <parentid>5705</parentid>
      <timestamp>2014-08-20T03:25:55Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Gestion des caractères spéciaux */ chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="11364">{{Ébauche|La gestion des fichiers}}

----
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

L'objectif est de vous présenter quelques commandes de bases pour vous mettre le pied à l'étrier avec votre terminal. Nous ne pouvons pas être exhaustif car toutes les commandes possèdent un grand nombre d'options. Elles ne seront donc que rarement présentées ici. Pour les connaître il faut utiliser la commande ''man''. Il s'agit de la commande la plus imporante car elle vous explique comment fonctionne les autres commandes. C'est le manuel.

Par exemple pour connaître la liste des possibilités de la commande ''ls'' utilisez la commande :
 $ man ls

= Gestion des fichiers  =

== Lire le contenu d'un fichier  ==

La commande la plus simple pour lire le contenu d'un fichier est la commande cat.
 $ cat fichier

''cat'' cat affiche l'ensemble du fichier sur le terminal, si le fichier est trop grand il va être nécessaire de remonter pour voir le début de celui-ci. Pour ne pas avoir ce problème il est possible soit d'utiliser la commande ''tac'' (''cat'' à l'envers) qui écris sur le terminal le fichier de la fin au début ou utiliser un « pager ».

Un pager est un logiciel qui va vous permettre d'avoir un affichage paginé dans lequel il seras plus facile de naviguer pour monter ou descendre dans le fichier. Les 2 pagers les plus connus et installé par défaut sur Debian sont ''more'' et ''less''. ''less'' est plus récent et offre plus de fonctionnalités. Ils s'utilisent comme cat.

Les commandes ''tail'' et ''head'' permettent d'afficher respectivement la fin et le début des fichiers.

== Trouver un fichier ==

Les deux commandes les plus courantes pour trouver un fichier sont ''locate'' et ''find''.

''locate'' est très rapide il recherche à partir d'un fichier d'index. Ce qui signifie qu'il ne voit pas immédiatement les nouveaux fichiers, il faut attendre un peu ou lancer la commande ''updatedb'' pour mettre à jour cet index. ''locate'' s'utilise ainsi :
 $ locate machin

et il écrira sur le terminal l'ensemble des chemins de fichiers dont le nom contient « machin » où qu'ils soient sur le &quot;disque dur&quot; (système).

''find'' effectue une recherche dans un répertoire spécifié. Il s'utilise principalement ainsi :
 $ find [répertoire] [-name nom]

(ce qui est entre [] est optionnel)

Il va rechercher dans le répertoire ''répertoire'' les fichiers de nom ''nom''. Il est possible d'appliquer une grande variété de condition pour n'afficher que les répertoires ou les fichiers d'un certain âge par exemple.

La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 
 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe.

== Supprimer un fichier ==

Pour supprimer un fichier, on utilise la commande ''rm'' (il est possible de donner plusieurs fichiers) :
 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 
 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 
 $ rm -i

Il existe des techniques permettant de retrouver un fichier supprimé. Si l'on souhaite que le fichier soit réellement introuvable, il existe la commande ''shred'' qui va écraser le fichier le nombre de fois que vous souhaitez et utiliser d'autres techniques pour empêcher quiconque de retrouver vos fichiers (voir aussi : [[remettre à zéro un disque dur|effacer (et accessoirement tester) un disque dur]]).

== Gérer les répertoires ==

Par défaut vous arrivez à l'ouverture du terminal dans votre répertoire personnel (par défaut ''/home/&lt;login&gt;'').
Pour savoir dans quel répertoire vous êtes, utilisez la commande ''pwd'' :
 $ pwd
 /home/monlogin

=== Pour changer de répertoire ===

Il faut utiliser la commande ''cd'' suivie du chemin vers le répertoire où vous souhaitez aller.
 $ cd /mon/répertoire

Si on omet le répertoire, on arrive dans le répertoire personnel de l'utilisateur.

=== Pour lister le contenu d'un répertoire ===

Ik faut utiliser la commande ''ls'' pour lister le contenu des répertoires. Il est suivi du (ou des) répertoire que l'on veut regarder, si on ne met pas de répertoire ce sera le répertoire courant.
 $ ls /répertoire

=== Créer/supprimer un répertoire ===

Pour créer un répertoire on utilise la commande ''mkdir'' suivi du (ou des) répertoire que l'on veut créer :
 $ mkdir /répertoire

L'option ''-p'' permet de créer tous les répertoires parents qui n'existent pas encore.

Pour supprimer un répertoire, on utilise la commande ''rmdir'' !
 $ rmdir /répertoire

Cette commande ne peut supprimer qu'un répertoire vide, pour supprimer un répertoire et tout son contenu on utilise la commande ''rm'' avec l'option ''-r'' :
 $ rm -r /répertoire

== Copier, renommer et déplacer un fichier ==

La commande ''cp'' permet de copier un (ou plusieurs fichiers). On lui passe en paramètre la liste des fichiers que l'on veut copier suivi du dossier de destination. S'il n'y a qu'un seul fichier la destination peut être un autre fichier :
 $ cp fic1 fic2 fic3 dossier/
 $ cp fic_orig fic_dest

La commande ''mv'' sert à la fois à déplacer et à renommer un fichier. Renommer un fichier consiste à déplacer le fichier à l'endroi où il est déjà avec un nom différent. Comme pour ''cp'' lorsque l'on déplace plusieurs fichier le dernier paramètre doit être un dossier :
 $ mv fic1 fic2 fic3 dossier/
 $ mv fic_orig fic_dest

== Quelques commandes autres ==

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

S'utilise avec les droits &quot;root&quot;

Exemple Pour sauvegarder le MBR du disque hda dans le fichier mbr.sav :
 # dd if=/dev/hda of=mbr.sav bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 9,3797e-05 s, 5,5 MB/s

[[La_commande_dd|Plus d'informations sur la commande dd...]]

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 
 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 
 $ file fichier

=== La command '''ln''' ===

Créer un lien (un alias ou un raccourci) vers un programme ou un fichier.

 Un lien symbolique :
 ln -s &lt;chemin_complet/fichier ou répertoire de destination&gt; &lt;chemin_complet/nom du lien symbolique&gt;

La commande ln utilisée sans -s créé un exemplaire supplémentaire du fichier ( à développer)

== Quelques &quot;trucs&quot;  ==

=== Gestion des caractères spéciaux ===
Dans un shell (quel qu'il soit), certains caractères sont dits spéciaux. En effet ils sont interprétés par le shell avant que la commande soit lancée. Les principaux sont « », «&amp;», «|», «$», «&quot;», «'», «\»... (la liste n'est pas exhaustive).

Si un fichier (ou un répertoire) contient l'un des ces caractères dans son nom, cela peut gêner l'utilisation du shell. Pour pallier à ce problème il existe 3 solutions :
* la première consiste à faire précéder chaque caractère particulier par un «\» y compris si c'est déjà un «\» (ce qui donne «\\»).
* la deuxième consiste à entourer le fichier par des «&quot;» (dans ce cas si le fichier contient des «&quot;» dans son nom, il faut les protéger avec des «\»). Cette méthode permet de protéger tous les caractères sauf «$», «{» et «}».
* la dernière méthode consiste à entourer le nom de fichier par des «'» (dans le cas où il y a déjà des «'», il faut les protéger avec un «\»).

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;']

=== Fichier commençant par un tiret  ===
Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 
 $ rm -fichier.txt

ne marchera pas, ''rm'' croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret.&lt;br&gt;Il faut donc utiliser l'option de fin de commande symbolisée par deux tirets consécutifs ''--''. Pour notre exemple, on tapera&amp;nbsp;: 
 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=4679&amp;start=0  problème de nom : renommer un fichier commençant par un tiret] 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 
 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 
 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max

== Quelques exemples de commandes ==

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 
 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 
 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 


=== Épurer un fichier de ses lignes commentées ===

La commande ci-dessous écrira un nouveau fichier (fichier_sans_commentaires) à partir de &quot;fichier&quot; en enlevant les lignes commentées (commençant par #) :

 grep -v &quot;^#&quot; fichier | grep -v &quot;^$&quot; &gt; fichier_sans_commentaires

[http://forum.debian-fr.org/viewtopic.php?p=269266#p269266 Epurer un fichiers des lignes commençant par #]

[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>9d2i3lxwz9k83p92nm0mdeh2su6adr0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5707</id>
      <parentid>5706</parentid>
      <timestamp>2014-08-20T03:29:42Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="11366">{{Ébauche|La gestion des fichiers}}

----
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

L'objectif est de vous présenter quelques commandes de base pour vous mettre le pied à l'étrier avec votre terminal. Nous ne pouvons pas être exhaustif car toutes les commandes possèdent un grand nombre d'options. Elles ne seront donc que rarement présentées ici. Pour les connaître il faut utiliser la commande ''man''. Il s'agit de la commande la plus importante car elle vous explique comment fonctionnent les autres commandes. C'est le manuel.

Par exemple pour connaître la liste des possibilités de la commande ''ls'' utilisez la commande :
 $ man ls

= Gestion des fichiers  =

== Lire le contenu d'un fichier  ==

La commande la plus simple pour lire le contenu d'un fichier est la commande cat.
 $ cat fichier

''cat'' cat affiche l'ensemble du fichier sur le terminal, si le fichier est trop grand il va être nécessaire de remonter pour voir le début de celui-ci. Pour ne pas avoir ce problème il est possible soit d'utiliser la commande ''tac'' (''cat'' à l'envers) qui écris sur le terminal le fichier de la fin au début ou utiliser un « pager ».

Un pager est un logiciel qui va vous permettre d'avoir un affichage paginé dans lequel il sera plus facile de naviguer pour monter ou descendre dans le fichier. Les 2 pagers les plus connus et installés par défaut sur Debian sont ''more'' et ''less''. ''less'' est plus récent et offre plus de fonctionnalités. Ils s'utilisent comme cat.

Les commandes ''tail'' et ''head'' permettent d'afficher respectivement la fin et le début des fichiers.

== Trouver un fichier ==

Les deux commandes les plus courantes pour trouver un fichier sont ''locate'' et ''find''.

''locate'' est très rapide il recherche à partir d'un fichier d'index. Ce qui signifie qu'il ne voit pas immédiatement les nouveaux fichiers, il faut attendre un peu ou lancer la commande ''updatedb'' pour mettre à jour cet index. ''locate'' s'utilise ainsi :
 $ locate machin

et il écrira sur le terminal l'ensemble des chemins de fichiers dont le nom contient « machin » où qu'ils soient sur le &quot;disque dur&quot; (système).

''find'' effectue une recherche dans un répertoire spécifié. Il s'utilise principalement ainsi :
 $ find [répertoire] [-name nom]

(ce qui est entre [] est optionnel)

Il va rechercher dans le répertoire ''répertoire'' les fichiers de nom ''nom''. Il est possible d'appliquer une grande variété de condition pour n'afficher que les répertoires ou les fichiers d'un certain âge par exemple.

La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 
 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe.

== Supprimer un fichier ==

Pour supprimer un fichier, on utilise la commande ''rm'' (il est possible de donner plusieurs fichiers) :
 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 
 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 
 $ rm -i

Il existe des techniques permettant de retrouver un fichier supprimé. Si l'on souhaite que le fichier soit réellement introuvable, il existe la commande ''shred'' qui va écraser le fichier le nombre de fois que vous souhaitez et utiliser d'autres techniques pour empêcher quiconque de retrouver vos fichiers (voir aussi : [[remettre à zéro un disque dur|effacer (et accessoirement tester) un disque dur]]).

== Gérer les répertoires ==

Par défaut vous arrivez à l'ouverture du terminal dans votre répertoire personnel (par défaut ''/home/&lt;login&gt;'').
Pour savoir dans quel répertoire vous êtes, utilisez la commande ''pwd'' :
 $ pwd
 /home/monlogin

=== Pour changer de répertoire ===

Il faut utiliser la commande ''cd'' suivie du chemin vers le répertoire où vous souhaitez aller.
 $ cd /mon/répertoire

Si on omet le répertoire, on arrive dans le répertoire personnel de l'utilisateur.

=== Pour lister le contenu d'un répertoire ===

Ik faut utiliser la commande ''ls'' pour lister le contenu des répertoires. Il est suivi du (ou des) répertoire que l'on veut regarder, si on ne met pas de répertoire ce sera le répertoire courant.
 $ ls /répertoire

=== Créer/supprimer un répertoire ===

Pour créer un répertoire on utilise la commande ''mkdir'' suivi du (ou des) répertoire que l'on veut créer :
 $ mkdir /répertoire

L'option ''-p'' permet de créer tous les répertoires parents qui n'existent pas encore.

Pour supprimer un répertoire, on utilise la commande ''rmdir'' !
 $ rmdir /répertoire

Cette commande ne peut supprimer qu'un répertoire vide, pour supprimer un répertoire et tout son contenu on utilise la commande ''rm'' avec l'option ''-r'' :
 $ rm -r /répertoire

== Copier, renommer et déplacer un fichier ==

La commande ''cp'' permet de copier un (ou plusieurs fichiers). On lui passe en paramètre la liste des fichiers que l'on veut copier suivi du dossier de destination. S'il n'y a qu'un seul fichier la destination peut être un autre fichier :
 $ cp fic1 fic2 fic3 dossier/
 $ cp fic_orig fic_dest

La commande ''mv'' sert à la fois à déplacer et à renommer un fichier. Renommer un fichier consiste à déplacer le fichier à l'endroi où il est déjà avec un nom différent. Comme pour ''cp'' lorsque l'on déplace plusieurs fichier le dernier paramètre doit être un dossier :
 $ mv fic1 fic2 fic3 dossier/
 $ mv fic_orig fic_dest

== Quelques commandes autres ==

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

S'utilise avec les droits &quot;root&quot;

Exemple Pour sauvegarder le MBR du disque hda dans le fichier mbr.sav :
 # dd if=/dev/hda of=mbr.sav bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 9,3797e-05 s, 5,5 MB/s

[[La_commande_dd|Plus d'informations sur la commande dd...]]

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 
 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 
 $ file fichier

=== La command '''ln''' ===

Créer un lien (un alias ou un raccourci) vers un programme ou un fichier.

 Un lien symbolique :
 ln -s &lt;chemin_complet/fichier ou répertoire de destination&gt; &lt;chemin_complet/nom du lien symbolique&gt;

La commande ln utilisée sans -s créé un exemplaire supplémentaire du fichier ( à développer)

== Quelques &quot;trucs&quot;  ==

=== Gestion des caractères spéciaux ===
Dans un shell (quel qu'il soit), certains caractères sont dits spéciaux. En effet ils sont interprétés par le shell avant que la commande soit lancée. Les principaux sont « », «&amp;», «|», «$», «&quot;», «'», «\»... (la liste n'est pas exhaustive).

Si un fichier (ou un répertoire) contient l'un des ces caractères dans son nom, cela peut gêner l'utilisation du shell. Pour pallier à ce problème il existe 3 solutions :
* la première consiste à faire précéder chaque caractère particulier par un «\» y compris si c'est déjà un «\» (ce qui donne «\\»).
* la deuxième consiste à entourer le fichier par des «&quot;» (dans ce cas si le fichier contient des «&quot;» dans son nom, il faut les protéger avec des «\»). Cette méthode permet de protéger tous les caractères sauf «$», «{» et «}».
* la dernière méthode consiste à entourer le nom de fichier par des «'» (dans le cas où il y a déjà des «'», il faut les protéger avec un «\»).

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;']

=== Fichier commençant par un tiret  ===
Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 
 $ rm -fichier.txt

ne marchera pas, ''rm'' croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret.&lt;br&gt;Il faut donc utiliser l'option de fin de commande symbolisée par deux tirets consécutifs ''--''. Pour notre exemple, on tapera&amp;nbsp;: 
 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=4679&amp;start=0  problème de nom : renommer un fichier commençant par un tiret] 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 
 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 
 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max

== Quelques exemples de commandes ==

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 
 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 
 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 


=== Épurer un fichier de ses lignes commentées ===

La commande ci-dessous écrira un nouveau fichier (fichier_sans_commentaires) à partir de &quot;fichier&quot; en enlevant les lignes commentées (commençant par #) :

 grep -v &quot;^#&quot; fichier | grep -v &quot;^$&quot; &gt; fichier_sans_commentaires

[http://forum.debian-fr.org/viewtopic.php?p=269266#p269266 Epurer un fichiers des lignes commençant par #]

[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>nrzvdfnfecrvazeyzw468acrt4atgs9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5708</id>
      <parentid>5707</parentid>
      <timestamp>2014-08-20T03:32:08Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Épurer un fichier de ses lignes commentées */</comment>
      <text xml:space="preserve" bytes="11387">{{Ébauche|La gestion des fichiers}}

----
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;

L'objectif est de vous présenter quelques commandes de base pour vous mettre le pied à l'étrier avec votre terminal. Nous ne pouvons pas être exhaustif car toutes les commandes possèdent un grand nombre d'options. Elles ne seront donc que rarement présentées ici. Pour les connaître il faut utiliser la commande ''man''. Il s'agit de la commande la plus importante car elle vous explique comment fonctionnent les autres commandes. C'est le manuel.

Par exemple pour connaître la liste des possibilités de la commande ''ls'' utilisez la commande :
 $ man ls

= Gestion des fichiers  =

== Lire le contenu d'un fichier  ==

La commande la plus simple pour lire le contenu d'un fichier est la commande cat.
 $ cat fichier

''cat'' cat affiche l'ensemble du fichier sur le terminal, si le fichier est trop grand il va être nécessaire de remonter pour voir le début de celui-ci. Pour ne pas avoir ce problème il est possible soit d'utiliser la commande ''tac'' (''cat'' à l'envers) qui écris sur le terminal le fichier de la fin au début ou utiliser un « pager ».

Un pager est un logiciel qui va vous permettre d'avoir un affichage paginé dans lequel il sera plus facile de naviguer pour monter ou descendre dans le fichier. Les 2 pagers les plus connus et installés par défaut sur Debian sont ''more'' et ''less''. ''less'' est plus récent et offre plus de fonctionnalités. Ils s'utilisent comme cat.

Les commandes ''tail'' et ''head'' permettent d'afficher respectivement la fin et le début des fichiers.

== Trouver un fichier ==

Les deux commandes les plus courantes pour trouver un fichier sont ''locate'' et ''find''.

''locate'' est très rapide il recherche à partir d'un fichier d'index. Ce qui signifie qu'il ne voit pas immédiatement les nouveaux fichiers, il faut attendre un peu ou lancer la commande ''updatedb'' pour mettre à jour cet index. ''locate'' s'utilise ainsi :
 $ locate machin

et il écrira sur le terminal l'ensemble des chemins de fichiers dont le nom contient « machin » où qu'ils soient sur le &quot;disque dur&quot; (système).

''find'' effectue une recherche dans un répertoire spécifié. Il s'utilise principalement ainsi :
 $ find [répertoire] [-name nom]

(ce qui est entre [] est optionnel)

Il va rechercher dans le répertoire ''répertoire'' les fichiers de nom ''nom''. Il est possible d'appliquer une grande variété de condition pour n'afficher que les répertoires ou les fichiers d'un certain âge par exemple.

La commande ''slocate'' est la version sécurisée de ''locate''&amp;nbsp;: elle permet de ne pas afficher des fichiers qu'un utilisateur normal n'a pas à voir. Elle permet également une recherche plus rapide qu'avec ''find''. 
 $ slocate couic

Si vous installez le paquet ''suidmanager'', vous pourrez employer la commande ''suidregister'' pour afficher en option les fichiers auxquels vous n'avez normalement pas accès, à condition de fournir le mot de passe.

== Supprimer un fichier ==

Pour supprimer un fichier, on utilise la commande ''rm'' (il est possible de donner plusieurs fichiers) :
 $ rm fich

Supprime ''fich'' sans demander de confirmation, même si le fichier est protégé en écriture. 
 $ rm -f fich

Permet de demander à l'utilisateur une confirmation avant de supprimer le ou les fichiers en question. 
 $ rm -i

Il existe des techniques permettant de retrouver un fichier supprimé. Si l'on souhaite que le fichier soit réellement introuvable, il existe la commande ''shred'' qui va écraser le fichier le nombre de fois que vous souhaitez et utiliser d'autres techniques pour empêcher quiconque de retrouver vos fichiers (voir aussi : [[remettre à zéro un disque dur|effacer (et accessoirement tester) un disque dur]]).

== Gérer les répertoires ==

Par défaut vous arrivez à l'ouverture du terminal dans votre répertoire personnel (par défaut ''/home/&lt;login&gt;'').
Pour savoir dans quel répertoire vous êtes, utilisez la commande ''pwd'' :
 $ pwd
 /home/monlogin

=== Pour changer de répertoire ===

Il faut utiliser la commande ''cd'' suivie du chemin vers le répertoire où vous souhaitez aller.
 $ cd /mon/répertoire

Si on omet le répertoire, on arrive dans le répertoire personnel de l'utilisateur.

=== Pour lister le contenu d'un répertoire ===

Ik faut utiliser la commande ''ls'' pour lister le contenu des répertoires. Il est suivi du (ou des) répertoire que l'on veut regarder, si on ne met pas de répertoire ce sera le répertoire courant.
 $ ls /répertoire

=== Créer/supprimer un répertoire ===

Pour créer un répertoire on utilise la commande ''mkdir'' suivi du (ou des) répertoire que l'on veut créer :
 $ mkdir /répertoire

L'option ''-p'' permet de créer tous les répertoires parents qui n'existent pas encore.

Pour supprimer un répertoire, on utilise la commande ''rmdir'' !
 $ rmdir /répertoire

Cette commande ne peut supprimer qu'un répertoire vide, pour supprimer un répertoire et tout son contenu on utilise la commande ''rm'' avec l'option ''-r'' :
 $ rm -r /répertoire

== Copier, renommer et déplacer un fichier ==

La commande ''cp'' permet de copier un (ou plusieurs fichiers). On lui passe en paramètre la liste des fichiers que l'on veut copier suivi du dossier de destination. S'il n'y a qu'un seul fichier la destination peut être un autre fichier :
 $ cp fic1 fic2 fic3 dossier/
 $ cp fic_orig fic_dest

La commande ''mv'' sert à la fois à déplacer et à renommer un fichier. Renommer un fichier consiste à déplacer le fichier à l'endroi où il est déjà avec un nom différent. Comme pour ''cp'' lorsque l'on déplace plusieurs fichier le dernier paramètre doit être un dossier :
 $ mv fic1 fic2 fic3 dossier/
 $ mv fic_orig fic_dest

== Quelques commandes autres ==

=== La commande '''dd'''  ===

Copier dans un fichier le contenu exact d'un support donné (disquette, table de partition...), sans tenir compte de la structure ou du format. '''Commande dangereuse'''&amp;nbsp;: vous risquez, en cas d'erreur, de faire totalement et irrémédiablement disparaître les partitions de votre disque dur. 

S'utilise avec les droits &quot;root&quot;

Exemple Pour sauvegarder le MBR du disque hda dans le fichier mbr.sav :
 # dd if=/dev/hda of=mbr.sav bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 9,3797e-05 s, 5,5 MB/s

[[La_commande_dd|Plus d'informations sur la commande dd...]]

=== La commande '''diff'''  ===

Comparer deux fichiers et indique les différences. Les lignes provenant de ''fich1'' sont préfixées par ''&amp;gt;'' et celles provenant de ''fich2'' par ''&lt;nowiki&gt;&lt;&lt;/nowiki&gt;''. Des lignes de contexte indiquent les blocs de lignes qui ont été modifiés (c), ajoutés (a) ou détruits (d), le principe étant d'indiquer les modifications à effectuer pour convertir ''fich1'' en ''fich2''. 
 $ diff fichier1 fichier2

=== La commande '''file'''  ===

Il peut arriver qu'un fichier ait une extension défectueuse ou qu'il n'en ait pas. ''File'' permet de retrouver le type de fichier. Il suffit d'indiquer après file le ou les noms des fichiers à analyser. Exemple&amp;nbsp;: &lt;nowiki&gt;# file /bin/bash /etc/passwd&lt;/nowiki&gt; 
 $ file fichier

=== La command '''ln''' ===

Créer un lien (un alias ou un raccourci) vers un programme ou un fichier.

 Un lien symbolique :
 ln -s &lt;chemin_complet/fichier ou répertoire de destination&gt; &lt;chemin_complet/nom du lien symbolique&gt;

La commande ln utilisée sans -s créé un exemplaire supplémentaire du fichier ( à développer)

== Quelques &quot;trucs&quot;  ==

=== Gestion des caractères spéciaux ===
Dans un shell (quel qu'il soit), certains caractères sont dits spéciaux. En effet ils sont interprétés par le shell avant que la commande soit lancée. Les principaux sont « », «&amp;», «|», «$», «&quot;», «'», «\»... (la liste n'est pas exhaustive).

Si un fichier (ou un répertoire) contient l'un des ces caractères dans son nom, cela peut gêner l'utilisation du shell. Pour pallier à ce problème il existe 3 solutions :
* la première consiste à faire précéder chaque caractère particulier par un «\» y compris si c'est déjà un «\» (ce qui donne «\\»).
* la deuxième consiste à entourer le fichier par des «&quot;» (dans ce cas si le fichier contient des «&quot;» dans son nom, il faut les protéger avec des «\»). Cette méthode permet de protéger tous les caractères sauf «$», «{» et «}».
* la dernière méthode consiste à entourer le nom de fichier par des «'» (dans le cas où il y a déjà des «'», il faut les protéger avec un «\»).

[http://forum.debian-fr.org/viewtopic.php?p=252027#p252027 supprimer fichier avec '&amp;amp;']

=== Fichier commençant par un tiret  ===
Il arrive que l'on fasse une fausse manipulation dans les commandes shell et que l'on se retrouve avec un fichier ayant un nom débutant par un tiret. Taper&amp;nbsp;: 
 $ rm -fichier.txt

ne marchera pas, ''rm'' croyant qu'on est en train de lui passer une option puisque telle est la signification du premier tiret.&lt;br&gt;Il faut donc utiliser l'option de fin de commande symbolisée par deux tirets consécutifs ''--''. Pour notre exemple, on tapera&amp;nbsp;: 
 $ rm -- -fichier.txt

Note&amp;nbsp;: -- est utilisable pour toutes les commandes shell. 
[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=4679&amp;start=0  problème de nom : renommer un fichier commençant par un tiret] 

=== Supprimer les ^M d'un fichier texte de Windows.  ===

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez&amp;nbsp;: 
 $ tr -d 'r' &amp;lt; fichier_windows.txt &amp;gt; fichier_windows_converti.txt

=== Message ''Too many open files''  ===

Trop de fichiers ouverts. Ceci est dû à une valeur trop petite affectée à file-max (8096 par défaut). Pour corriger ce problème, tapez&amp;nbsp;: 
 $ echo &quot;65536&quot; &amp;gt;/proc/sys/fs/file-max

== Quelques exemples de commandes ==

=== Renommer plusieurs fichiers simultanément.  ===

Exemple&amp;nbsp;: pour renommer les fichiers *.mpeg en *.mpg, tapez la ligne entière suivante&amp;nbsp;: 
 $ for i in *.mpeg; do mv &quot;$i&quot; &quot;${i%.mpeg}.mpg&quot;; done

=== Afficher les lignes d'un fichier sans les lignes commentées.  ===

Les lignes commentées sont celles qui commencent par # dans les fichiers. Pour afficher à l'écran le contenu du fichier sans ces lignes, tapez&amp;nbsp;: 
 $ sed -e &quot;/^#/d&quot; fichier

Explication de la commande&amp;nbsp;: 

sed (Stream Editor) permet de travailler sur les flux. ^ signifie tout ce qui commence par (dans notre cas, ce qui commence par #). d permet de supprimer les lignes qui correspondent à l'expression indiquée entre les barres obliques (/^#/ dans notre exemple). 


=== Épurer un fichier de ses lignes commentées ===

La commande ci-dessous écrira un nouveau fichier (fichier_sans_commentaires) à partir de &quot;fichier&quot; en enlevant les lignes commentées (commençant par #), et les lignes vides :

 grep -v &quot;^#&quot; fichier | grep -v &quot;^$&quot; &gt; fichier_sans_commentaires

[http://forum.debian-fr.org/viewtopic.php?p=269266#p269266 Epurer un fichiers des lignes commençant par #]

[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>ptiwp0sgt390q3qf311o7cvk1du0y6p</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Gestion des paquets</title>
    <ns>0</ns>
    <id>233</id>
    <revision>
      <id>1006</id>
      <timestamp>2010-02-07T15:42:29Z</timestamp>
      <contributor>
        <username>Kna</username>
        <id>35</id>
      </contributor>
      <comment>Les bases : sources.list, apt-get, aptitude. Pas eu le courage de parler du pinning finalement. Une autre fois peut-être...</comment>
      <text xml:space="preserve" bytes="5441">Les dépôts de paquet Debian sont un moyen simple, sûr et efficace pour installer des logiciels.

Les fichiers des programmes sont contenus dans des archives appelées « paquets ». Ces paquets se trouvent sur des serveurs de fichiers appelés « dépots ». Le gestionnaire de paquets, appelé « apt » se charge de récupérer les paquets et de les installer sur votre système.

Les paquets sont séparés le plus possible pour éviter d'installer des composants inutiles. Si un programme a besoin d'une bibliothèque --- composant lui permettant de faire certaines tâches (vous verrez peut-être le mot « librairie », souvent employé par anglicisme) ---, elle se situera dans un autre paquet. Le gestionnaire apt se chargera de l'installer en même temps que le programme. Si un autre programme utilise la même bibliothèque, elle ne sera pas installé deux fois...

= Configuration des dépôts =

== Dépot principal ==

'''ToDo :''' expliquer le fonctionnement des différentes releases Debian (sur une autre page ?)

Les dépots se configurent dans le fichier '''/etc/apt/sources.list'''

Pour une Debian « stable » (''lenny'' à l'heure où j'écris ces lignes), vous devriez avoir :

 deb http://ftp.fr.debian.org/debian/ stable main

Pour utiliser une autre version, il vous suffit de remplacer ''stable'' par ''testing'' ou ''unstable''.

Vous pouvez aussi mettre le nom de la version (''lenny'', ''squeeze'' et ''sid'', à l'heure où j'écris). Ce qui vous permettra de suivre votre release lorsqu'elle passera en ''testing'', ''stable'' ou ''oldstable'' (pour sid, ça ne change rien) sans toucher au fichier sources.list.

« main » désigne le composant principal du dépôt. Il ne contient que les programmes libres. Pour utiliser des programmes non libres, il vous faut rajouter les composants ''contrib'' et ''non-free'' :

 deb http://ftp.fr.debian.org/debian/ stable contrib non-free

(''non-free'' contient les paquets non libres et ''contrib'' les paquets libres qui dépendent des paquets ''non-free'').

== Autres dépôts ==

Il existe des dépôts supplémentaires que vous pouvez rajouter :

* Le dépôt ''security'' qui contient les mises-à-jour de sécurité pour ''stable'' et ''testing'', au choix :

 deb http://security.debian.org/ stable/updates main
 deb http://security.debian.org/ testing/updates main

Pour plus de renseignements, voir http://www.debian.org/security

* Le dépôt ''volatile'', qui contient des mises-à-jour pour ''stable'' des programmes ayant besoin d'être à jour sur un serveur, tels que des antivirus ou des antispams.

 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free 

Pour les détails, consultez http://www.debian.org/volatile

== Miroirs ==

'''ToDo''' : lien vers liste des mirroirs, et parler des outils pour choisir le miroir qui répond le mieux.

== Paquets sources ==

Si vous voulez avoir accès aux paquets contenant les codes source des programmes (pour les reconstruire à votre sauce), il vous faut ajouter une ligne commençant par « deb-src » au lieu de « deb » avec la même adresse derrière, par exemple :

 # deb-src http://deb-src

= Gérer ses paquets =

Il existe deux outils pour installer/désinstaller et mettre à jour des programmes : '''apt-get''' et plus récemment, '''aptitude'''.
Contrairement à ce que dit la rumeur, il n'y a aucun problème à utiliser conjointement les deux. '''apt-get''' se chargera d'effectuer l'action demandée, et c'est tout ! '''aptitude''' fournit une gestion plus fine des dépendances, en vous proposant plusieurs choix dans les situations complexes.

Si vous préferez un gestionnaire graphique, vous pouvez utiliser '''synaptic''', après l'avoir installé via :

 # aptitude install synaptic

'''ToDo''' : parler d'aptitude en ncurses

== Mettre à jour la liste des paquets ==

Pour mettre à jour la liste des paquets disponibles à partir des dépôts, il faut lancer, au choix :

 # apt-get update
 # aptitude update

== Rechercher un paquet ==

Pour rechercher un paquet, il vous suffit de lancer :

 # apt-cache search &lt;nom du paquet&gt;
 # aptitude search &lt;nom du paquet&gt;

'''aptitude''' peut prendre des expressions régulières pour &lt;nom_du_paquet&gt;.

== Installer un paquet ==

En une commande, vous pouvez installer un paquet et ses dépendances :

 # apt-get install &lt;nom du paquet&gt;
 # aptitude install &lt;nom du paquet&gt;

== Mettre à jour le système ==

Il existe deux méthodes de mises à jour :

* la première ne supprime que les paquets qui ne sont plus utilisés (recommandée) :

 # apt-get dist-upgrade
 # aptitude safe-upgrade

* la seconde mets à jour tous les paquets, sans distinction d'importance :

 # apt-get upgrade
 # aptitude full-upgrade

== Désinstaller un paquet ==

Pour désinstaller un paquet sans ses dépendances :

 # apt-get remove &lt;nom_du_paquet&gt;

Pour désinstaller un paquet avec ses dépendances (sauf si elles sont utilisées par d'autres paquets)

 # apt-get autoremove &lt;nom du paquet&gt;
 # aptitude remove &lt;nom du paquet&gt;

'''Attention :''' N'utilisez jamais '''apt-get autoremove''' sans indiquer de paquet derrière.

Pour désinstaller un paquet et supprimer ses fichiers de configuration :

 # apt-get remove --purge &lt;nom du paquet&gt;
 # apt-get autoremove --purge &lt;nom du paquet&gt;
 # aptitude purge &lt;nom du paquet&gt;


'''ToDo''' : pinning (preferences, apt-cache policy, avertissement :) : sur une autre page ?</text>
      <sha1>qxqr01mefra4kffll0lpuc85p3tl0no</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1008</id>
      <parentid>1006</parentid>
      <timestamp>2010-02-07T15:45:50Z</timestamp>
      <contributor>
        <username>Kna</username>
        <id>35</id>
      </contributor>
      <comment>Mis dans la catégorie « paquets »</comment>
      <text xml:space="preserve" bytes="5464">Les dépôts de paquet Debian sont un moyen simple, sûr et efficace pour installer des logiciels.

Les fichiers des programmes sont contenus dans des archives appelées « paquets ». Ces paquets se trouvent sur des serveurs de fichiers appelés « dépots ». Le gestionnaire de paquets, appelé « apt » se charge de récupérer les paquets et de les installer sur votre système.

Les paquets sont séparés le plus possible pour éviter d'installer des composants inutiles. Si un programme a besoin d'une bibliothèque --- composant lui permettant de faire certaines tâches (vous verrez peut-être le mot « librairie », souvent employé par anglicisme) ---, elle se situera dans un autre paquet. Le gestionnaire apt se chargera de l'installer en même temps que le programme. Si un autre programme utilise la même bibliothèque, elle ne sera pas installé deux fois...

= Configuration des dépôts =

== Dépot principal ==

'''ToDo :''' expliquer le fonctionnement des différentes releases Debian (sur une autre page ?)

Les dépots se configurent dans le fichier '''/etc/apt/sources.list'''

Pour une Debian « stable » (''lenny'' à l'heure où j'écris ces lignes), vous devriez avoir :

 deb http://ftp.fr.debian.org/debian/ stable main

Pour utiliser une autre version, il vous suffit de remplacer ''stable'' par ''testing'' ou ''unstable''.

Vous pouvez aussi mettre le nom de la version (''lenny'', ''squeeze'' et ''sid'', à l'heure où j'écris). Ce qui vous permettra de suivre votre release lorsqu'elle passera en ''testing'', ''stable'' ou ''oldstable'' (pour sid, ça ne change rien) sans toucher au fichier sources.list.

« main » désigne le composant principal du dépôt. Il ne contient que les programmes libres. Pour utiliser des programmes non libres, il vous faut rajouter les composants ''contrib'' et ''non-free'' :

 deb http://ftp.fr.debian.org/debian/ stable contrib non-free

(''non-free'' contient les paquets non libres et ''contrib'' les paquets libres qui dépendent des paquets ''non-free'').

== Autres dépôts ==

Il existe des dépôts supplémentaires que vous pouvez rajouter :

* Le dépôt ''security'' qui contient les mises-à-jour de sécurité pour ''stable'' et ''testing'', au choix :

 deb http://security.debian.org/ stable/updates main
 deb http://security.debian.org/ testing/updates main

Pour plus de renseignements, voir http://www.debian.org/security

* Le dépôt ''volatile'', qui contient des mises-à-jour pour ''stable'' des programmes ayant besoin d'être à jour sur un serveur, tels que des antivirus ou des antispams.

 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free 

Pour les détails, consultez http://www.debian.org/volatile

== Miroirs ==

'''ToDo''' : lien vers liste des mirroirs, et parler des outils pour choisir le miroir qui répond le mieux.

== Paquets sources ==

Si vous voulez avoir accès aux paquets contenant les codes source des programmes (pour les reconstruire à votre sauce), il vous faut ajouter une ligne commençant par « deb-src » au lieu de « deb » avec la même adresse derrière, par exemple :

 # deb-src http://deb-src

= Gérer ses paquets =

Il existe deux outils pour installer/désinstaller et mettre à jour des programmes : '''apt-get''' et plus récemment, '''aptitude'''.
Contrairement à ce que dit la rumeur, il n'y a aucun problème à utiliser conjointement les deux. '''apt-get''' se chargera d'effectuer l'action demandée, et c'est tout ! '''aptitude''' fournit une gestion plus fine des dépendances, en vous proposant plusieurs choix dans les situations complexes.

Si vous préferez un gestionnaire graphique, vous pouvez utiliser '''synaptic''', après l'avoir installé via :

 # aptitude install synaptic

'''ToDo''' : parler d'aptitude en ncurses

== Mettre à jour la liste des paquets ==

Pour mettre à jour la liste des paquets disponibles à partir des dépôts, il faut lancer, au choix :

 # apt-get update
 # aptitude update

== Rechercher un paquet ==

Pour rechercher un paquet, il vous suffit de lancer :

 # apt-cache search &lt;nom du paquet&gt;
 # aptitude search &lt;nom du paquet&gt;

'''aptitude''' peut prendre des expressions régulières pour &lt;nom_du_paquet&gt;.

== Installer un paquet ==

En une commande, vous pouvez installer un paquet et ses dépendances :

 # apt-get install &lt;nom du paquet&gt;
 # aptitude install &lt;nom du paquet&gt;

== Mettre à jour le système ==

Il existe deux méthodes de mises à jour :

* la première ne supprime que les paquets qui ne sont plus utilisés (recommandée) :

 # apt-get dist-upgrade
 # aptitude safe-upgrade

* la seconde mets à jour tous les paquets, sans distinction d'importance :

 # apt-get upgrade
 # aptitude full-upgrade

== Désinstaller un paquet ==

Pour désinstaller un paquet sans ses dépendances :

 # apt-get remove &lt;nom_du_paquet&gt;

Pour désinstaller un paquet avec ses dépendances (sauf si elles sont utilisées par d'autres paquets)

 # apt-get autoremove &lt;nom du paquet&gt;
 # aptitude remove &lt;nom du paquet&gt;

'''Attention :''' N'utilisez jamais '''apt-get autoremove''' sans indiquer de paquet derrière.

Pour désinstaller un paquet et supprimer ses fichiers de configuration :

 # apt-get remove --purge &lt;nom du paquet&gt;
 # apt-get autoremove --purge &lt;nom du paquet&gt;
 # aptitude purge &lt;nom du paquet&gt;


'''ToDo''' : pinning (preferences, apt-cache policy, avertissement :) : sur une autre page ?


[[Category:Paquets]]</text>
      <sha1>qdekk50dyjlqkt1vaiunk4t2bizut6y</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1009</id>
      <parentid>1008</parentid>
      <timestamp>2010-02-07T15:50:10Z</timestamp>
      <contributor>
        <username>Kna</username>
        <id>35</id>
      </contributor>
      <minor/>
      <comment>a renommé [[Gestion+des+paquets]] en [[Gestion des paquets]]&amp;nbsp;:&amp;#32;Foutu wiki, rajouter des majuscules, ça lui suffisait pas, il faut qu'il mette des « + » maintenant !:D</comment>
      <text xml:space="preserve" bytes="5464">Les dépôts de paquet Debian sont un moyen simple, sûr et efficace pour installer des logiciels.

Les fichiers des programmes sont contenus dans des archives appelées « paquets ». Ces paquets se trouvent sur des serveurs de fichiers appelés « dépots ». Le gestionnaire de paquets, appelé « apt » se charge de récupérer les paquets et de les installer sur votre système.

Les paquets sont séparés le plus possible pour éviter d'installer des composants inutiles. Si un programme a besoin d'une bibliothèque --- composant lui permettant de faire certaines tâches (vous verrez peut-être le mot « librairie », souvent employé par anglicisme) ---, elle se situera dans un autre paquet. Le gestionnaire apt se chargera de l'installer en même temps que le programme. Si un autre programme utilise la même bibliothèque, elle ne sera pas installé deux fois...

= Configuration des dépôts =

== Dépot principal ==

'''ToDo :''' expliquer le fonctionnement des différentes releases Debian (sur une autre page ?)

Les dépots se configurent dans le fichier '''/etc/apt/sources.list'''

Pour une Debian « stable » (''lenny'' à l'heure où j'écris ces lignes), vous devriez avoir :

 deb http://ftp.fr.debian.org/debian/ stable main

Pour utiliser une autre version, il vous suffit de remplacer ''stable'' par ''testing'' ou ''unstable''.

Vous pouvez aussi mettre le nom de la version (''lenny'', ''squeeze'' et ''sid'', à l'heure où j'écris). Ce qui vous permettra de suivre votre release lorsqu'elle passera en ''testing'', ''stable'' ou ''oldstable'' (pour sid, ça ne change rien) sans toucher au fichier sources.list.

« main » désigne le composant principal du dépôt. Il ne contient que les programmes libres. Pour utiliser des programmes non libres, il vous faut rajouter les composants ''contrib'' et ''non-free'' :

 deb http://ftp.fr.debian.org/debian/ stable contrib non-free

(''non-free'' contient les paquets non libres et ''contrib'' les paquets libres qui dépendent des paquets ''non-free'').

== Autres dépôts ==

Il existe des dépôts supplémentaires que vous pouvez rajouter :

* Le dépôt ''security'' qui contient les mises-à-jour de sécurité pour ''stable'' et ''testing'', au choix :

 deb http://security.debian.org/ stable/updates main
 deb http://security.debian.org/ testing/updates main

Pour plus de renseignements, voir http://www.debian.org/security

* Le dépôt ''volatile'', qui contient des mises-à-jour pour ''stable'' des programmes ayant besoin d'être à jour sur un serveur, tels que des antivirus ou des antispams.

 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free 

Pour les détails, consultez http://www.debian.org/volatile

== Miroirs ==

'''ToDo''' : lien vers liste des mirroirs, et parler des outils pour choisir le miroir qui répond le mieux.

== Paquets sources ==

Si vous voulez avoir accès aux paquets contenant les codes source des programmes (pour les reconstruire à votre sauce), il vous faut ajouter une ligne commençant par « deb-src » au lieu de « deb » avec la même adresse derrière, par exemple :

 # deb-src http://deb-src

= Gérer ses paquets =

Il existe deux outils pour installer/désinstaller et mettre à jour des programmes : '''apt-get''' et plus récemment, '''aptitude'''.
Contrairement à ce que dit la rumeur, il n'y a aucun problème à utiliser conjointement les deux. '''apt-get''' se chargera d'effectuer l'action demandée, et c'est tout ! '''aptitude''' fournit une gestion plus fine des dépendances, en vous proposant plusieurs choix dans les situations complexes.

Si vous préferez un gestionnaire graphique, vous pouvez utiliser '''synaptic''', après l'avoir installé via :

 # aptitude install synaptic

'''ToDo''' : parler d'aptitude en ncurses

== Mettre à jour la liste des paquets ==

Pour mettre à jour la liste des paquets disponibles à partir des dépôts, il faut lancer, au choix :

 # apt-get update
 # aptitude update

== Rechercher un paquet ==

Pour rechercher un paquet, il vous suffit de lancer :

 # apt-cache search &lt;nom du paquet&gt;
 # aptitude search &lt;nom du paquet&gt;

'''aptitude''' peut prendre des expressions régulières pour &lt;nom_du_paquet&gt;.

== Installer un paquet ==

En une commande, vous pouvez installer un paquet et ses dépendances :

 # apt-get install &lt;nom du paquet&gt;
 # aptitude install &lt;nom du paquet&gt;

== Mettre à jour le système ==

Il existe deux méthodes de mises à jour :

* la première ne supprime que les paquets qui ne sont plus utilisés (recommandée) :

 # apt-get dist-upgrade
 # aptitude safe-upgrade

* la seconde mets à jour tous les paquets, sans distinction d'importance :

 # apt-get upgrade
 # aptitude full-upgrade

== Désinstaller un paquet ==

Pour désinstaller un paquet sans ses dépendances :

 # apt-get remove &lt;nom_du_paquet&gt;

Pour désinstaller un paquet avec ses dépendances (sauf si elles sont utilisées par d'autres paquets)

 # apt-get autoremove &lt;nom du paquet&gt;
 # aptitude remove &lt;nom du paquet&gt;

'''Attention :''' N'utilisez jamais '''apt-get autoremove''' sans indiquer de paquet derrière.

Pour désinstaller un paquet et supprimer ses fichiers de configuration :

 # apt-get remove --purge &lt;nom du paquet&gt;
 # apt-get autoremove --purge &lt;nom du paquet&gt;
 # aptitude purge &lt;nom du paquet&gt;


'''ToDo''' : pinning (preferences, apt-cache policy, avertissement :) : sur une autre page ?


[[Category:Paquets]]</text>
      <sha1>qdekk50dyjlqkt1vaiunk4t2bizut6y</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1105</id>
      <parentid>1009</parentid>
      <timestamp>2010-02-22T10:30:53Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="5465">Les dépôts de paquet Debian sont un moyen simple, sûr et efficace pour installer des logiciels.

Les fichiers des programmes sont contenus dans des archives appelées « paquets ». Ces paquets se trouvent sur des serveurs de fichiers appelés « dépots ». Le gestionnaire de paquets, appelé « apt » se charge de récupérer les paquets et de les installer sur votre système.

Les paquets sont séparés le plus possible pour éviter d'installer des composants inutiles. Si un programme a besoin d'une bibliothèque --- composant lui permettant de faire certaines tâches (vous verrez peut-être le mot « librairie », souvent employé par anglicisme) ---, elle se situera dans un autre paquet. Le gestionnaire apt se chargera de l'installer en même temps que le programme. Si un autre programme utilise la même bibliothèque, elle ne sera pas installée deux fois...

= Configuration des dépôts =

== Dépot principal ==

'''ToDo :''' expliquer le fonctionnement des différentes releases Debian (sur une autre page ?)

Les dépots se configurent dans le fichier '''/etc/apt/sources.list'''

Pour une Debian « stable » (''lenny'' à l'heure où j'écris ces lignes), vous devriez avoir :

 deb http://ftp.fr.debian.org/debian/ stable main

Pour utiliser une autre version, il vous suffit de remplacer ''stable'' par ''testing'' ou ''unstable''.

Vous pouvez aussi mettre le nom de la version (''lenny'', ''squeeze'' et ''sid'', à l'heure où j'écris). Ce qui vous permettra de suivre votre release lorsqu'elle passera en ''testing'', ''stable'' ou ''oldstable'' (pour sid, ça ne change rien) sans toucher au fichier sources.list.

« main » désigne le composant principal du dépôt. Il ne contient que les programmes libres. Pour utiliser des programmes non libres, il vous faut rajouter les composants ''contrib'' et ''non-free'' :

 deb http://ftp.fr.debian.org/debian/ stable contrib non-free

(''non-free'' contient les paquets non libres et ''contrib'' les paquets libres qui dépendent des paquets ''non-free'').

== Autres dépôts ==

Il existe des dépôts supplémentaires que vous pouvez rajouter :

* Le dépôt ''security'' qui contient les mises-à-jour de sécurité pour ''stable'' et ''testing'', au choix :

 deb http://security.debian.org/ stable/updates main
 deb http://security.debian.org/ testing/updates main

Pour plus de renseignements, voir http://www.debian.org/security

* Le dépôt ''volatile'', qui contient des mises-à-jour pour ''stable'' des programmes ayant besoin d'être à jour sur un serveur, tels que des antivirus ou des antispams.

 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free 

Pour les détails, consultez http://www.debian.org/volatile

== Miroirs ==

'''ToDo''' : lien vers liste des mirroirs, et parler des outils pour choisir le miroir qui répond le mieux.

== Paquets sources ==

Si vous voulez avoir accès aux paquets contenant les codes source des programmes (pour les reconstruire à votre sauce), il vous faut ajouter une ligne commençant par « deb-src » au lieu de « deb » avec la même adresse derrière, par exemple :

 # deb-src http://deb-src

= Gérer ses paquets =

Il existe deux outils pour installer/désinstaller et mettre à jour des programmes : '''apt-get''' et plus récemment, '''aptitude'''.
Contrairement à ce que dit la rumeur, il n'y a aucun problème à utiliser conjointement les deux. '''apt-get''' se chargera d'effectuer l'action demandée, et c'est tout ! '''aptitude''' fournit une gestion plus fine des dépendances, en vous proposant plusieurs choix dans les situations complexes.

Si vous préferez un gestionnaire graphique, vous pouvez utiliser '''synaptic''', après l'avoir installé via :

 # aptitude install synaptic

'''ToDo''' : parler d'aptitude en ncurses

== Mettre à jour la liste des paquets ==

Pour mettre à jour la liste des paquets disponibles à partir des dépôts, il faut lancer, au choix :

 # apt-get update
 # aptitude update

== Rechercher un paquet ==

Pour rechercher un paquet, il vous suffit de lancer :

 # apt-cache search &lt;nom du paquet&gt;
 # aptitude search &lt;nom du paquet&gt;

'''aptitude''' peut prendre des expressions régulières pour &lt;nom_du_paquet&gt;.

== Installer un paquet ==

En une commande, vous pouvez installer un paquet et ses dépendances :

 # apt-get install &lt;nom du paquet&gt;
 # aptitude install &lt;nom du paquet&gt;

== Mettre à jour le système ==

Il existe deux méthodes de mises à jour :

* la première ne supprime que les paquets qui ne sont plus utilisés (recommandée) :

 # apt-get dist-upgrade
 # aptitude safe-upgrade

* la seconde mets à jour tous les paquets, sans distinction d'importance :

 # apt-get upgrade
 # aptitude full-upgrade

== Désinstaller un paquet ==

Pour désinstaller un paquet sans ses dépendances :

 # apt-get remove &lt;nom_du_paquet&gt;

Pour désinstaller un paquet avec ses dépendances (sauf si elles sont utilisées par d'autres paquets)

 # apt-get autoremove &lt;nom du paquet&gt;
 # aptitude remove &lt;nom du paquet&gt;

'''Attention :''' N'utilisez jamais '''apt-get autoremove''' sans indiquer de paquet derrière.

Pour désinstaller un paquet et supprimer ses fichiers de configuration :

 # apt-get remove --purge &lt;nom du paquet&gt;
 # apt-get autoremove --purge &lt;nom du paquet&gt;
 # aptitude purge &lt;nom du paquet&gt;


'''ToDo''' : pinning (preferences, apt-cache policy, avertissement :) : sur une autre page ?


[[Category:Paquets]]</text>
      <sha1>54o8mizbgcwdntszwsv8n4q9282m4fn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1106</id>
      <parentid>1105</parentid>
      <timestamp>2010-02-22T10:33:23Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="5466">Les dépôts de paquet Debian sont un moyen simple, sûr et efficace pour installer des logiciels.

Les fichiers des programmes sont contenus dans des archives appelées « paquets ». Ces paquets se trouvent sur des serveurs de fichiers appelés « dépots ». Le gestionnaire de paquets, appelé « apt » se charge de récupérer les paquets et de les installer sur votre système.

Les paquets sont séparés le plus possible pour éviter d'installer des composants inutiles. Si un programme a besoin d'une bibliothèque --- composant lui permettant de faire certaines tâches (vous verrez peut-être le mot « librairie », souvent employé par anglicisme) ---, elle se situera dans un autre paquet. Le gestionnaire apt se chargera de l'installer en même temps que le programme. Si un autre programme utilise la même bibliothèque, elle ne sera pas installée deux fois...

= Configuration des dépôts =

== Dépot principal ==

'''ToDo :''' expliquer le fonctionnement des différentes releases Debian (sur une autre page ?)

Les dépôts se configurent dans le fichier '''/etc/apt/sources.list'''

Pour une Debian « stable » (''lenny'' à l'heure où j'écris ces lignes), vous devriez avoir :

 deb http://ftp.fr.debian.org/debian/ stable main

Pour utiliser une autre version, il vous suffit de remplacer ''stable'' par ''testing'' ou ''unstable''.

Vous pouvez aussi mettre le nom de la version (''lenny'', ''squeeze'' et ''sid'', à l'heure où j'écris). Ce qui vous permettra de suivre votre release lorsqu'elle passera en ''testing'', ''stable'' ou ''oldstable'' (pour sid, ça ne change rien) sans toucher au fichier sources.list.

« main » désigne le composant principal du dépôt. Il ne contient que les programmes libres. Pour utiliser des programmes non libres, il vous faut rajouter les composants ''contrib'' et ''non-free'' :

 deb http://ftp.fr.debian.org/debian/ stable contrib non-free

(''non-free'' contient les paquets non libres et ''contrib'' les paquets libres qui dépendent des paquets ''non-free'').

== Autres dépôts ==

Il existe des dépôts supplémentaires que vous pouvez rajouter :

* Le dépôt ''security'' qui contient les mises-à-jour de sécurité pour ''stable'' et ''testing'', au choix :

 deb http://security.debian.org/ stable/updates main
 deb http://security.debian.org/ testing/updates main

Pour plus de renseignements, voir http://www.debian.org/security

* Le dépôt ''volatile'', qui contient des mises-à-jour pour ''stable'' des programmes ayant besoin d'être à jour sur un serveur, tels que des antivirus ou des antispams.

 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free 

Pour les détails, consultez http://www.debian.org/volatile

== Miroirs ==

'''ToDo''' : lien vers liste des mirroirs, et parler des outils pour choisir le miroir qui répond le mieux.

== Paquets sources ==

Si vous voulez avoir accès aux paquets contenant les codes source des programmes (pour les reconstruire à votre sauce), il vous faut ajouter une ligne commençant par « deb-src » au lieu de « deb » avec la même adresse derrière, par exemple :

 # deb-src http://deb-src

= Gérer ses paquets =

Il existe deux outils pour installer/désinstaller et mettre à jour des programmes : '''apt-get''' et plus récemment, '''aptitude'''.
Contrairement à ce que dit la rumeur, il n'y a aucun problème à utiliser conjointement les deux. '''apt-get''' se chargera d'effectuer l'action demandée, et c'est tout ! '''aptitude''' fournit une gestion plus fine des dépendances, en vous proposant plusieurs choix dans les situations complexes.

Si vous préferez un gestionnaire graphique, vous pouvez utiliser '''synaptic''', après l'avoir installé via :

 # aptitude install synaptic

'''ToDo''' : parler d'aptitude en ncurses

== Mettre à jour la liste des paquets ==

Pour mettre à jour la liste des paquets disponibles à partir des dépôts, il faut lancer, au choix :

 # apt-get update
 # aptitude update

== Rechercher un paquet ==

Pour rechercher un paquet, il vous suffit de lancer :

 # apt-cache search &lt;nom du paquet&gt;
 # aptitude search &lt;nom du paquet&gt;

'''aptitude''' peut prendre des expressions régulières pour &lt;nom_du_paquet&gt;.

== Installer un paquet ==

En une commande, vous pouvez installer un paquet et ses dépendances :

 # apt-get install &lt;nom du paquet&gt;
 # aptitude install &lt;nom du paquet&gt;

== Mettre à jour le système ==

Il existe deux méthodes de mises à jour :

* la première ne supprime que les paquets qui ne sont plus utilisés (recommandée) :

 # apt-get dist-upgrade
 # aptitude safe-upgrade

* la seconde mets à jour tous les paquets, sans distinction d'importance :

 # apt-get upgrade
 # aptitude full-upgrade

== Désinstaller un paquet ==

Pour désinstaller un paquet sans ses dépendances :

 # apt-get remove &lt;nom_du_paquet&gt;

Pour désinstaller un paquet avec ses dépendances (sauf si elles sont utilisées par d'autres paquets)

 # apt-get autoremove &lt;nom du paquet&gt;
 # aptitude remove &lt;nom du paquet&gt;

'''Attention :''' N'utilisez jamais '''apt-get autoremove''' sans indiquer de paquet derrière.

Pour désinstaller un paquet et supprimer ses fichiers de configuration :

 # apt-get remove --purge &lt;nom du paquet&gt;
 # apt-get autoremove --purge &lt;nom du paquet&gt;
 # aptitude purge &lt;nom du paquet&gt;


'''ToDo''' : pinning (preferences, apt-cache policy, avertissement :) : sur une autre page ?


[[Category:Paquets]]</text>
      <sha1>heh9j7s7b5h1b7jmcemxlzm94lyralg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1111</id>
      <parentid>1106</parentid>
      <timestamp>2010-03-03T05:40:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Rechercher un paquet */</comment>
      <text xml:space="preserve" bytes="6166">Les dépôts de paquet Debian sont un moyen simple, sûr et efficace pour installer des logiciels.

Les fichiers des programmes sont contenus dans des archives appelées « paquets ». Ces paquets se trouvent sur des serveurs de fichiers appelés « dépots ». Le gestionnaire de paquets, appelé « apt » se charge de récupérer les paquets et de les installer sur votre système.

Les paquets sont séparés le plus possible pour éviter d'installer des composants inutiles. Si un programme a besoin d'une bibliothèque --- composant lui permettant de faire certaines tâches (vous verrez peut-être le mot « librairie », souvent employé par anglicisme) ---, elle se situera dans un autre paquet. Le gestionnaire apt se chargera de l'installer en même temps que le programme. Si un autre programme utilise la même bibliothèque, elle ne sera pas installée deux fois...

= Configuration des dépôts =

== Dépot principal ==

'''ToDo :''' expliquer le fonctionnement des différentes releases Debian (sur une autre page ?)

Les dépôts se configurent dans le fichier '''/etc/apt/sources.list'''

Pour une Debian « stable » (''lenny'' à l'heure où j'écris ces lignes), vous devriez avoir :

 deb http://ftp.fr.debian.org/debian/ stable main

Pour utiliser une autre version, il vous suffit de remplacer ''stable'' par ''testing'' ou ''unstable''.

Vous pouvez aussi mettre le nom de la version (''lenny'', ''squeeze'' et ''sid'', à l'heure où j'écris). Ce qui vous permettra de suivre votre release lorsqu'elle passera en ''testing'', ''stable'' ou ''oldstable'' (pour sid, ça ne change rien) sans toucher au fichier sources.list.

« main » désigne le composant principal du dépôt. Il ne contient que les programmes libres. Pour utiliser des programmes non libres, il vous faut rajouter les composants ''contrib'' et ''non-free'' :

 deb http://ftp.fr.debian.org/debian/ stable contrib non-free

(''non-free'' contient les paquets non libres et ''contrib'' les paquets libres qui dépendent des paquets ''non-free'').

== Autres dépôts ==

Il existe des dépôts supplémentaires que vous pouvez rajouter :

* Le dépôt ''security'' qui contient les mises-à-jour de sécurité pour ''stable'' et ''testing'', au choix :

 deb http://security.debian.org/ stable/updates main
 deb http://security.debian.org/ testing/updates main

Pour plus de renseignements, voir http://www.debian.org/security

* Le dépôt ''volatile'', qui contient des mises-à-jour pour ''stable'' des programmes ayant besoin d'être à jour sur un serveur, tels que des antivirus ou des antispams.

 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free 

Pour les détails, consultez http://www.debian.org/volatile

== Miroirs ==

'''ToDo''' : lien vers liste des mirroirs, et parler des outils pour choisir le miroir qui répond le mieux.

== Paquets sources ==

Si vous voulez avoir accès aux paquets contenant les codes source des programmes (pour les reconstruire à votre sauce), il vous faut ajouter une ligne commençant par « deb-src » au lieu de « deb » avec la même adresse derrière, par exemple :

 # deb-src http://deb-src

= Gérer ses paquets =

Il existe deux outils pour installer/désinstaller et mettre à jour des programmes : '''apt-get''' et plus récemment, '''aptitude'''.
Contrairement à ce que dit la rumeur, il n'y a aucun problème à utiliser conjointement les deux. '''apt-get''' se chargera d'effectuer l'action demandée, et c'est tout ! '''aptitude''' fournit une gestion plus fine des dépendances, en vous proposant plusieurs choix dans les situations complexes.

Si vous préferez un gestionnaire graphique, vous pouvez utiliser '''synaptic''', après l'avoir installé via :

 # aptitude install synaptic

'''ToDo''' : parler d'aptitude en ncurses

== Mettre à jour la liste des paquets ==

Pour mettre à jour la liste des paquets disponibles à partir des dépôts, il faut lancer, au choix :

 # apt-get update
 # aptitude update

== Rechercher un paquet ==

Pour rechercher un paquet, il vous suffit de lancer :

 # apt-cache search &lt;nom du paquet&gt;
 # aptitude search &lt;nom du paquet&gt;

'''aptitude''' peut prendre des expressions régulières pour &lt;nom_du_paquet&gt;.

=== Recherches avancées ===

Aptitude propose une foule d'options de recherches avancées :


Recherche de tous les paquets installés :
 $ aptitude search ~i


Recherche des paquets désinstallés, mais dont les fichiers de configurations n'ont pas été purgés :
 $ aptitude search ~c


Recherche des paquets installés qui peuvent être mis à jour :
 $ aptitude search ~U


Rechercher les paquets installés mis en &quot;hold&quot; (&quot;hold&quot; = en pause; Ces paquets ne seront JAMAIS mis à jour tant qu'il seront marqués &quot;h&quot;) :
 $ aptitude search ~i~ahold


Vous trouverez la liste des options possibles [http://algebraicthunk.net/~dburrows/projects/aptitude/doc/en/ch02s03s05.html '''sur cette page''']

== Installer un paquet ==

En une commande, vous pouvez installer un paquet et ses dépendances :

 # apt-get install &lt;nom du paquet&gt;
 # aptitude install &lt;nom du paquet&gt;

== Mettre à jour le système ==

Il existe deux méthodes de mises à jour :

* la première ne supprime que les paquets qui ne sont plus utilisés (recommandée) :

 # apt-get dist-upgrade
 # aptitude safe-upgrade

* la seconde mets à jour tous les paquets, sans distinction d'importance :

 # apt-get upgrade
 # aptitude full-upgrade

== Désinstaller un paquet ==

Pour désinstaller un paquet sans ses dépendances :

 # apt-get remove &lt;nom_du_paquet&gt;

Pour désinstaller un paquet avec ses dépendances (sauf si elles sont utilisées par d'autres paquets)

 # apt-get autoremove &lt;nom du paquet&gt;
 # aptitude remove &lt;nom du paquet&gt;

'''Attention :''' N'utilisez jamais '''apt-get autoremove''' sans indiquer de paquet derrière.

Pour désinstaller un paquet et supprimer ses fichiers de configuration :

 # apt-get remove --purge &lt;nom du paquet&gt;
 # apt-get autoremove --purge &lt;nom du paquet&gt;
 # aptitude purge &lt;nom du paquet&gt;


'''ToDo''' : pinning (preferences, apt-cache policy, avertissement :) : sur une autre page ?


[[Category:Paquets]]</text>
      <sha1>re9nw10vl6pbgwjlxl5azzyrr941h8f</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1879</id>
      <parentid>1111</parentid>
      <timestamp>2010-08-05T19:22:07Z</timestamp>
      <contributor>
        <username>Helid</username>
        <id>62</id>
      </contributor>
      <minor/>
      <comment>Quelques petites fautes et surtout le liens vers la page d'aptitude ajouté.</comment>
      <text xml:space="preserve" bytes="6245">Les dépôts de paquet Debian sont un moyen simple, sûr et efficace pour installer des logiciels.

Les fichiers des programmes sont contenus dans des archives appelées « paquets ». Ces paquets se trouvent sur des serveurs de fichiers appelés « dépôts ». Le gestionnaire de paquets, appelé « apt » se charge de récupérer les paquets et de les installer sur votre système.

Les paquets sont séparés le plus possible pour éviter d'installer des composants inutiles. Si un programme a besoin d'une bibliothèque --- composant lui permettant de faire certaines tâches (vous verrez peut-être le mot « librairie », souvent employé par anglicisme) ---, elle se situera dans un autre paquet. Le gestionnaire apt se chargera de l'installer en même temps que le programme. Si un autre programme utilise la même bibliothèque, elle ne sera pas installée deux fois...

= Configuration des dépôts =

== Dépôt principal ==

'''ToDo :''' expliquer le fonctionnement des différentes releases Debian (sur une autre page ?)

Les dépôts se configurent dans le fichier '''/etc/apt/sources.list'''

Pour une Debian « stable » (''lenny'' à l'heure où j'écris ces lignes), vous devriez avoir :

 deb http://ftp.fr.debian.org/debian/ stable main

Pour utiliser une autre version, il vous suffit de remplacer ''stable'' par ''testing'' ou ''unstable''.

Vous pouvez aussi mettre le nom de la version (''lenny'', ''squeeze'' et ''sid'', à l'heure où j'écris). Ce qui vous permettra de suivre votre release lorsqu'elle passera en ''testing'', ''stable'' ou ''oldstable'' (pour sid, ça ne change rien) sans toucher au fichier sources.list.

« main » désigne le composant principal du dépôt. Il ne contient que les programmes libres. Pour utiliser des programmes non libres, il vous faut rajouter les composants ''contrib'' et ''non-free'' :

 deb http://ftp.fr.debian.org/debian/ stable contrib non-free

(''non-free'' contient les paquets non libres et ''contrib'' les paquets libres qui dépendent des paquets ''non-free'').

== Autres dépôts ==

Il existe des dépôts supplémentaires que vous pouvez rajouter :

* Le dépôt ''security'' qui contient les mises-à-jour de sécurité pour ''stable'' et ''testing'', au choix :

 deb http://security.debian.org/ stable/updates main
 deb http://security.debian.org/ testing/updates main

Pour plus de renseignements, voir http://www.debian.org/security

* Le dépôt ''volatile'', qui contient des mises-à-jour pour ''stable'' des programmes ayant besoin d'être à jour sur un serveur, tels que des antivirus ou des antispams.

 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free 

Pour les détails, consultez http://www.debian.org/volatile

== Miroirs ==

'''ToDo''' : lien vers liste des miroirs, et parler des outils pour choisir le miroir qui répond le mieux.

== Paquets sources ==

Si vous voulez avoir accès aux paquets contenant les codes source des programmes (pour les reconstruire à votre sauce), il vous faut ajouter une ligne commençant par « deb-src » au lieu de « deb » avec la même adresse derrière, par exemple :

 # deb-src http://deb-src

= Gérer ses paquets =

Il existe deux outils pour installer/désinstaller et mettre à jour des programmes : '''apt-get''' et plus récemment, '''aptitude'''.
Contrairement à ce que dit la rumeur, il n'y a aucun problème à utiliser conjointement les deux. '''apt-get''' se chargera d'effectuer l'action demandée, et c'est tout ! '''aptitude''' fournit une gestion plus fine des dépendances, en vous proposant plusieurs choix dans les situations complexes.

Si vous préférez un gestionnaire graphique, vous pouvez utiliser '''synaptic''', après l'avoir installé via :

 # aptitude install synaptic

Pour un détail sur le fonctionnement d'aptitude, c'est ici:[[http://www.isalo.org/wiki.debian-fr/index.php/Aptitude]]

== Mettre à jour la liste des paquets ==

Pour mettre à jour la liste des paquets disponibles à partir des dépôts, il faut lancer, au choix :

 # apt-get update
 # aptitude update

== Rechercher un paquet ==

Pour rechercher un paquet, il vous suffit de lancer :

 # apt-cache search &lt;nom du paquet&gt;
 # aptitude search &lt;nom du paquet&gt;

'''aptitude''' peut prendre des expressions régulières pour &lt;nom_du_paquet&gt;.

=== Recherches avancées ===

Aptitude propose une foule d'options de recherches avancées :


Recherche de tous les paquets installés :
 $ aptitude search ~i


Recherche des paquets désinstallés, mais dont les fichiers de configurations n'ont pas été purgés :
 $ aptitude search ~c


Recherche des paquets installés qui peuvent être mis à jour :
 $ aptitude search ~U


Rechercher les paquets installés mis en &quot;hold&quot; (&quot;hold&quot; = en pause; Ces paquets ne seront JAMAIS mis à jour tant qu'il seront marqués &quot;h&quot;) :
 $ aptitude search ~i~ahold


Vous trouverez la liste des options possibles [http://algebraicthunk.net/~dburrows/projects/aptitude/doc/en/ch02s03s05.html '''sur cette page''']

== Installer un paquet ==

En une commande, vous pouvez installer un paquet et ses dépendances :

 # apt-get install &lt;nom du paquet&gt;
 # aptitude install &lt;nom du paquet&gt;

== Mettre à jour le système ==

Il existe deux méthodes de mises à jour :

* la première ne supprime que les paquets qui ne sont plus utilisés (recommandée) :

 # apt-get dist-upgrade
 # aptitude safe-upgrade

* la seconde mets à jour tous les paquets, sans distinction d'importance :

 # apt-get upgrade
 # aptitude full-upgrade

== Désinstaller un paquet ==

Pour désinstaller un paquet sans ses dépendances :

 # apt-get remove &lt;nom_du_paquet&gt;

Pour désinstaller un paquet avec ses dépendances (sauf si elles sont utilisées par d'autres paquets)

 # apt-get autoremove &lt;nom du paquet&gt;
 # aptitude remove &lt;nom du paquet&gt;

'''Attention :''' N'utilisez jamais '''apt-get autoremove''' sans indiquer de paquet derrière.

Pour désinstaller un paquet et supprimer ses fichiers de configuration :

 # apt-get remove --purge &lt;nom du paquet&gt;
 # apt-get autoremove --purge &lt;nom du paquet&gt;
 # aptitude purge &lt;nom du paquet&gt;


'''ToDo''' : pinning (preferences, apt-cache policy, avertissement :) : sur une autre page ?


[[Category:Paquets]]</text>
      <sha1>7kyc599ezor7vlm7ccfiu2yd5dekpfw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1880</id>
      <parentid>1879</parentid>
      <timestamp>2010-08-05T19:23:15Z</timestamp>
      <contributor>
        <username>Helid</username>
        <id>62</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="6241">Les dépôts de paquet Debian sont un moyen simple, sûr et efficace pour installer des logiciels.

Les fichiers des programmes sont contenus dans des archives appelées « paquets ». Ces paquets se trouvent sur des serveurs de fichiers appelés « dépôts ». Le gestionnaire de paquets, appelé « apt » se charge de récupérer les paquets et de les installer sur votre système.

Les paquets sont séparés le plus possible pour éviter d'installer des composants inutiles. Si un programme a besoin d'une bibliothèque --- composant lui permettant de faire certaines tâches (vous verrez peut-être le mot « librairie », souvent employé par anglicisme) ---, elle se situera dans un autre paquet. Le gestionnaire apt se chargera de l'installer en même temps que le programme. Si un autre programme utilise la même bibliothèque, elle ne sera pas installée deux fois...

= Configuration des dépôts =

== Dépôt principal ==

'''ToDo :''' expliquer le fonctionnement des différentes releases Debian (sur une autre page ?)

Les dépôts se configurent dans le fichier '''/etc/apt/sources.list'''

Pour une Debian « stable » (''lenny'' à l'heure où j'écris ces lignes), vous devriez avoir :

 deb http://ftp.fr.debian.org/debian/ stable main

Pour utiliser une autre version, il vous suffit de remplacer ''stable'' par ''testing'' ou ''unstable''.

Vous pouvez aussi mettre le nom de la version (''lenny'', ''squeeze'' et ''sid'', à l'heure où j'écris). Ce qui vous permettra de suivre votre release lorsqu'elle passera en ''testing'', ''stable'' ou ''oldstable'' (pour sid, ça ne change rien) sans toucher au fichier sources.list.

« main » désigne le composant principal du dépôt. Il ne contient que les programmes libres. Pour utiliser des programmes non libres, il vous faut rajouter les composants ''contrib'' et ''non-free'' :

 deb http://ftp.fr.debian.org/debian/ stable contrib non-free

(''non-free'' contient les paquets non libres et ''contrib'' les paquets libres qui dépendent des paquets ''non-free'').

== Autres dépôts ==

Il existe des dépôts supplémentaires que vous pouvez rajouter :

* Le dépôt ''security'' qui contient les mises-à-jour de sécurité pour ''stable'' et ''testing'', au choix :

 deb http://security.debian.org/ stable/updates main
 deb http://security.debian.org/ testing/updates main

Pour plus de renseignements, voir http://www.debian.org/security

* Le dépôt ''volatile'', qui contient des mises-à-jour pour ''stable'' des programmes ayant besoin d'être à jour sur un serveur, tels que des antivirus ou des antispams.

 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free 

Pour les détails, consultez http://www.debian.org/volatile

== Miroirs ==

'''ToDo''' : lien vers liste des miroirs, et parler des outils pour choisir le miroir qui répond le mieux.

== Paquets sources ==

Si vous voulez avoir accès aux paquets contenant les codes source des programmes (pour les reconstruire à votre sauce), il vous faut ajouter une ligne commençant par « deb-src » au lieu de « deb » avec la même adresse derrière, par exemple :

 # deb-src http://deb-src

= Gérer ses paquets =

Il existe deux outils pour installer/désinstaller et mettre à jour des programmes : '''apt-get''' et plus récemment, '''aptitude'''.
Contrairement à ce que dit la rumeur, il n'y a aucun problème à utiliser conjointement les deux. '''apt-get''' se chargera d'effectuer l'action demandée, et c'est tout ! '''aptitude''' fournit une gestion plus fine des dépendances, en vous proposant plusieurs choix dans les situations complexes.

Si vous préférez un gestionnaire graphique, vous pouvez utiliser '''synaptic''', après l'avoir installé via :

 # aptitude install synaptic

Pour un détail sur l'utilisation d'aptitude, c'est ici:[[http://www.isalo.org/wiki.debian-fr/index.php/Aptitude]]

== Mettre à jour la liste des paquets ==

Pour mettre à jour la liste des paquets disponibles à partir des dépôts, il faut lancer, au choix :

 # apt-get update
 # aptitude update

== Rechercher un paquet ==

Pour rechercher un paquet, il vous suffit de lancer :

 # apt-cache search &lt;nom du paquet&gt;
 # aptitude search &lt;nom du paquet&gt;

'''aptitude''' peut prendre des expressions régulières pour &lt;nom_du_paquet&gt;.

=== Recherches avancées ===

Aptitude propose une foule d'options de recherches avancées :


Recherche de tous les paquets installés :
 $ aptitude search ~i


Recherche des paquets désinstallés, mais dont les fichiers de configurations n'ont pas été purgés :
 $ aptitude search ~c


Recherche des paquets installés qui peuvent être mis à jour :
 $ aptitude search ~U


Rechercher les paquets installés mis en &quot;hold&quot; (&quot;hold&quot; = en pause; Ces paquets ne seront JAMAIS mis à jour tant qu'il seront marqués &quot;h&quot;) :
 $ aptitude search ~i~ahold


Vous trouverez la liste des options possibles [http://algebraicthunk.net/~dburrows/projects/aptitude/doc/en/ch02s03s05.html '''sur cette page''']

== Installer un paquet ==

En une commande, vous pouvez installer un paquet et ses dépendances :

 # apt-get install &lt;nom du paquet&gt;
 # aptitude install &lt;nom du paquet&gt;

== Mettre à jour le système ==

Il existe deux méthodes de mises à jour :

* la première ne supprime que les paquets qui ne sont plus utilisés (recommandée) :

 # apt-get dist-upgrade
 # aptitude safe-upgrade

* la seconde mets à jour tous les paquets, sans distinction d'importance :

 # apt-get upgrade
 # aptitude full-upgrade

== Désinstaller un paquet ==

Pour désinstaller un paquet sans ses dépendances :

 # apt-get remove &lt;nom_du_paquet&gt;

Pour désinstaller un paquet avec ses dépendances (sauf si elles sont utilisées par d'autres paquets)

 # apt-get autoremove &lt;nom du paquet&gt;
 # aptitude remove &lt;nom du paquet&gt;

'''Attention :''' N'utilisez jamais '''apt-get autoremove''' sans indiquer de paquet derrière.

Pour désinstaller un paquet et supprimer ses fichiers de configuration :

 # apt-get remove --purge &lt;nom du paquet&gt;
 # apt-get autoremove --purge &lt;nom du paquet&gt;
 # aptitude purge &lt;nom du paquet&gt;


'''ToDo''' : pinning (preferences, apt-cache policy, avertissement :) : sur une autre page ?


[[Category:Paquets]]</text>
      <sha1>pt7bzi8ii8mtjkj9pxz2x9ylxfu7zja</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1928</id>
      <parentid>1880</parentid>
      <timestamp>2010-08-12T14:17:19Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Gérer ses paquets */</comment>
      <text xml:space="preserve" bytes="6226">Les dépôts de paquet Debian sont un moyen simple, sûr et efficace pour installer des logiciels.

Les fichiers des programmes sont contenus dans des archives appelées « paquets ». Ces paquets se trouvent sur des serveurs de fichiers appelés « dépôts ». Le gestionnaire de paquets, appelé « apt » se charge de récupérer les paquets et de les installer sur votre système.

Les paquets sont séparés le plus possible pour éviter d'installer des composants inutiles. Si un programme a besoin d'une bibliothèque --- composant lui permettant de faire certaines tâches (vous verrez peut-être le mot « librairie », souvent employé par anglicisme) ---, elle se situera dans un autre paquet. Le gestionnaire apt se chargera de l'installer en même temps que le programme. Si un autre programme utilise la même bibliothèque, elle ne sera pas installée deux fois...

= Configuration des dépôts =

== Dépôt principal ==

'''ToDo :''' expliquer le fonctionnement des différentes releases Debian (sur une autre page ?)

Les dépôts se configurent dans le fichier '''/etc/apt/sources.list'''

Pour une Debian « stable » (''lenny'' à l'heure où j'écris ces lignes), vous devriez avoir :

 deb http://ftp.fr.debian.org/debian/ stable main

Pour utiliser une autre version, il vous suffit de remplacer ''stable'' par ''testing'' ou ''unstable''.

Vous pouvez aussi mettre le nom de la version (''lenny'', ''squeeze'' et ''sid'', à l'heure où j'écris). Ce qui vous permettra de suivre votre release lorsqu'elle passera en ''testing'', ''stable'' ou ''oldstable'' (pour sid, ça ne change rien) sans toucher au fichier sources.list.

« main » désigne le composant principal du dépôt. Il ne contient que les programmes libres. Pour utiliser des programmes non libres, il vous faut rajouter les composants ''contrib'' et ''non-free'' :

 deb http://ftp.fr.debian.org/debian/ stable contrib non-free

(''non-free'' contient les paquets non libres et ''contrib'' les paquets libres qui dépendent des paquets ''non-free'').

== Autres dépôts ==

Il existe des dépôts supplémentaires que vous pouvez rajouter :

* Le dépôt ''security'' qui contient les mises-à-jour de sécurité pour ''stable'' et ''testing'', au choix :

 deb http://security.debian.org/ stable/updates main
 deb http://security.debian.org/ testing/updates main

Pour plus de renseignements, voir http://www.debian.org/security

* Le dépôt ''volatile'', qui contient des mises-à-jour pour ''stable'' des programmes ayant besoin d'être à jour sur un serveur, tels que des antivirus ou des antispams.

 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free 

Pour les détails, consultez http://www.debian.org/volatile

== Miroirs ==

'''ToDo''' : lien vers liste des miroirs, et parler des outils pour choisir le miroir qui répond le mieux.

== Paquets sources ==

Si vous voulez avoir accès aux paquets contenant les codes source des programmes (pour les reconstruire à votre sauce), il vous faut ajouter une ligne commençant par « deb-src » au lieu de « deb » avec la même adresse derrière, par exemple :

 # deb-src http://deb-src

= Gérer ses paquets =

Il existe deux outils pour installer/désinstaller et mettre à jour des programmes : '''apt-get''' et plus récemment, '''aptitude'''.
A ce que dit la rumeur, il y aurait un problème à utiliser conjointement les deux. '''apt-get''' se chargera d'effectuer l'action demandée, et c'est tout ! '''aptitude''' fournit une gestion plus fine des dépendances, en vous proposant plusieurs choix dans les situations complexes.

Si vous préférez un gestionnaire graphique, vous pouvez utiliser '''synaptic''', après l'avoir installé via :

 # aptitude install synaptic

Pour un détail sur l'utilisation d'aptitude, c'est ici:[[http://www.isalo.org/wiki.debian-fr/index.php/Aptitude]]

== Mettre à jour la liste des paquets ==

Pour mettre à jour la liste des paquets disponibles à partir des dépôts, il faut lancer, au choix :

 # apt-get update
 # aptitude update

== Rechercher un paquet ==

Pour rechercher un paquet, il vous suffit de lancer :

 # apt-cache search &lt;nom du paquet&gt;
 # aptitude search &lt;nom du paquet&gt;

'''aptitude''' peut prendre des expressions régulières pour &lt;nom_du_paquet&gt;.

=== Recherches avancées ===

Aptitude propose une foule d'options de recherches avancées :


Recherche de tous les paquets installés :
 $ aptitude search ~i


Recherche des paquets désinstallés, mais dont les fichiers de configurations n'ont pas été purgés :
 $ aptitude search ~c


Recherche des paquets installés qui peuvent être mis à jour :
 $ aptitude search ~U


Rechercher les paquets installés mis en &quot;hold&quot; (&quot;hold&quot; = en pause; Ces paquets ne seront JAMAIS mis à jour tant qu'il seront marqués &quot;h&quot;) :
 $ aptitude search ~i~ahold


Vous trouverez la liste des options possibles [http://algebraicthunk.net/~dburrows/projects/aptitude/doc/en/ch02s03s05.html '''sur cette page''']

== Installer un paquet ==

En une commande, vous pouvez installer un paquet et ses dépendances :

 # apt-get install &lt;nom du paquet&gt;
 # aptitude install &lt;nom du paquet&gt;

== Mettre à jour le système ==

Il existe deux méthodes de mises à jour :

* la première ne supprime que les paquets qui ne sont plus utilisés (recommandée) :

 # apt-get dist-upgrade
 # aptitude safe-upgrade

* la seconde mets à jour tous les paquets, sans distinction d'importance :

 # apt-get upgrade
 # aptitude full-upgrade

== Désinstaller un paquet ==

Pour désinstaller un paquet sans ses dépendances :

 # apt-get remove &lt;nom_du_paquet&gt;

Pour désinstaller un paquet avec ses dépendances (sauf si elles sont utilisées par d'autres paquets)

 # apt-get autoremove &lt;nom du paquet&gt;
 # aptitude remove &lt;nom du paquet&gt;

'''Attention :''' N'utilisez jamais '''apt-get autoremove''' sans indiquer de paquet derrière.

Pour désinstaller un paquet et supprimer ses fichiers de configuration :

 # apt-get remove --purge &lt;nom du paquet&gt;
 # apt-get autoremove --purge &lt;nom du paquet&gt;
 # aptitude purge &lt;nom du paquet&gt;


'''ToDo''' : pinning (preferences, apt-cache policy, avertissement :) : sur une autre page ?


[[Category:Paquets]]</text>
      <sha1>ch889z7w2uj6p9hclwvbf9vsh4s5zr4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1929</id>
      <parentid>1928</parentid>
      <timestamp>2010-08-12T14:19:32Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Désinstaller un paquet */</comment>
      <text xml:space="preserve" bytes="6248">Les dépôts de paquet Debian sont un moyen simple, sûr et efficace pour installer des logiciels.

Les fichiers des programmes sont contenus dans des archives appelées « paquets ». Ces paquets se trouvent sur des serveurs de fichiers appelés « dépôts ». Le gestionnaire de paquets, appelé « apt » se charge de récupérer les paquets et de les installer sur votre système.

Les paquets sont séparés le plus possible pour éviter d'installer des composants inutiles. Si un programme a besoin d'une bibliothèque --- composant lui permettant de faire certaines tâches (vous verrez peut-être le mot « librairie », souvent employé par anglicisme) ---, elle se situera dans un autre paquet. Le gestionnaire apt se chargera de l'installer en même temps que le programme. Si un autre programme utilise la même bibliothèque, elle ne sera pas installée deux fois...

= Configuration des dépôts =

== Dépôt principal ==

'''ToDo :''' expliquer le fonctionnement des différentes releases Debian (sur une autre page ?)

Les dépôts se configurent dans le fichier '''/etc/apt/sources.list'''

Pour une Debian « stable » (''lenny'' à l'heure où j'écris ces lignes), vous devriez avoir :

 deb http://ftp.fr.debian.org/debian/ stable main

Pour utiliser une autre version, il vous suffit de remplacer ''stable'' par ''testing'' ou ''unstable''.

Vous pouvez aussi mettre le nom de la version (''lenny'', ''squeeze'' et ''sid'', à l'heure où j'écris). Ce qui vous permettra de suivre votre release lorsqu'elle passera en ''testing'', ''stable'' ou ''oldstable'' (pour sid, ça ne change rien) sans toucher au fichier sources.list.

« main » désigne le composant principal du dépôt. Il ne contient que les programmes libres. Pour utiliser des programmes non libres, il vous faut rajouter les composants ''contrib'' et ''non-free'' :

 deb http://ftp.fr.debian.org/debian/ stable contrib non-free

(''non-free'' contient les paquets non libres et ''contrib'' les paquets libres qui dépendent des paquets ''non-free'').

== Autres dépôts ==

Il existe des dépôts supplémentaires que vous pouvez rajouter :

* Le dépôt ''security'' qui contient les mises-à-jour de sécurité pour ''stable'' et ''testing'', au choix :

 deb http://security.debian.org/ stable/updates main
 deb http://security.debian.org/ testing/updates main

Pour plus de renseignements, voir http://www.debian.org/security

* Le dépôt ''volatile'', qui contient des mises-à-jour pour ''stable'' des programmes ayant besoin d'être à jour sur un serveur, tels que des antivirus ou des antispams.

 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free 

Pour les détails, consultez http://www.debian.org/volatile

== Miroirs ==

'''ToDo''' : lien vers liste des miroirs, et parler des outils pour choisir le miroir qui répond le mieux.

== Paquets sources ==

Si vous voulez avoir accès aux paquets contenant les codes source des programmes (pour les reconstruire à votre sauce), il vous faut ajouter une ligne commençant par « deb-src » au lieu de « deb » avec la même adresse derrière, par exemple :

 # deb-src http://deb-src

= Gérer ses paquets =

Il existe deux outils pour installer/désinstaller et mettre à jour des programmes : '''apt-get''' et plus récemment, '''aptitude'''.
A ce que dit la rumeur, il y aurait un problème à utiliser conjointement les deux. '''apt-get''' se chargera d'effectuer l'action demandée, et c'est tout ! '''aptitude''' fournit une gestion plus fine des dépendances, en vous proposant plusieurs choix dans les situations complexes.

Si vous préférez un gestionnaire graphique, vous pouvez utiliser '''synaptic''', après l'avoir installé via :

 # aptitude install synaptic

Pour un détail sur l'utilisation d'aptitude, c'est ici:[[http://www.isalo.org/wiki.debian-fr/index.php/Aptitude]]

== Mettre à jour la liste des paquets ==

Pour mettre à jour la liste des paquets disponibles à partir des dépôts, il faut lancer, au choix :

 # apt-get update
 # aptitude update

== Rechercher un paquet ==

Pour rechercher un paquet, il vous suffit de lancer :

 # apt-cache search &lt;nom du paquet&gt;
 # aptitude search &lt;nom du paquet&gt;

'''aptitude''' peut prendre des expressions régulières pour &lt;nom_du_paquet&gt;.

=== Recherches avancées ===

Aptitude propose une foule d'options de recherches avancées :


Recherche de tous les paquets installés :
 $ aptitude search ~i


Recherche des paquets désinstallés, mais dont les fichiers de configurations n'ont pas été purgés :
 $ aptitude search ~c


Recherche des paquets installés qui peuvent être mis à jour :
 $ aptitude search ~U


Rechercher les paquets installés mis en &quot;hold&quot; (&quot;hold&quot; = en pause; Ces paquets ne seront JAMAIS mis à jour tant qu'il seront marqués &quot;h&quot;) :
 $ aptitude search ~i~ahold


Vous trouverez la liste des options possibles [http://algebraicthunk.net/~dburrows/projects/aptitude/doc/en/ch02s03s05.html '''sur cette page''']

== Installer un paquet ==

En une commande, vous pouvez installer un paquet et ses dépendances :

 # apt-get install &lt;nom du paquet&gt;
 # aptitude install &lt;nom du paquet&gt;

== Mettre à jour le système ==

Il existe deux méthodes de mises à jour :

* la première ne supprime que les paquets qui ne sont plus utilisés (recommandée) :

 # apt-get dist-upgrade
 # aptitude safe-upgrade

* la seconde mets à jour tous les paquets, sans distinction d'importance :

 # apt-get upgrade
 # aptitude full-upgrade

== Désinstaller un paquet ==

Pour désinstaller un paquet sans ses dépendances :

 # apt-get remove &lt;nom_du_paquet&gt;

Pour désinstaller un paquet avec ses dépendances (sauf si elles sont utilisées par d'autres paquets)

 # apt-get autoremove &lt;nom du paquet&gt;
 # aptitude remove &lt;nom du paquet&gt;

'''Attention :''' N'utilisez jamais '''apt-get autoremove''' sans indiquer de paquet derrière.

Pour désinstaller un paquet et supprimer ses fichiers de configuration :

 # apt-get remove --purge &lt;nom du paquet&gt;
 # apt-get autoremove --purge &lt;nom du paquet&gt;
 # aptitude purge &lt;nom du paquet&gt;


'''ToDo''' : pinning (preferences, apt-cache policy, avertissement :) : sur une autre page ?
    Voir étiquetage 


[[Category:Paquets]]</text>
      <sha1>8emvyjtd06dsxl0t15mavj3j598bh8n</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2686</id>
      <parentid>1929</parentid>
      <timestamp>2011-02-07T11:50:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Autres dépôts */</comment>
      <text xml:space="preserve" bytes="6490">Les dépôts de paquet Debian sont un moyen simple, sûr et efficace pour installer des logiciels.

Les fichiers des programmes sont contenus dans des archives appelées « paquets ». Ces paquets se trouvent sur des serveurs de fichiers appelés « dépôts ». Le gestionnaire de paquets, appelé « apt » se charge de récupérer les paquets et de les installer sur votre système.

Les paquets sont séparés le plus possible pour éviter d'installer des composants inutiles. Si un programme a besoin d'une bibliothèque --- composant lui permettant de faire certaines tâches (vous verrez peut-être le mot « librairie », souvent employé par anglicisme) ---, elle se situera dans un autre paquet. Le gestionnaire apt se chargera de l'installer en même temps que le programme. Si un autre programme utilise la même bibliothèque, elle ne sera pas installée deux fois...

= Configuration des dépôts =

== Dépôt principal ==

'''ToDo :''' expliquer le fonctionnement des différentes releases Debian (sur une autre page ?)

Les dépôts se configurent dans le fichier '''/etc/apt/sources.list'''

Pour une Debian « stable » (''lenny'' à l'heure où j'écris ces lignes), vous devriez avoir :

 deb http://ftp.fr.debian.org/debian/ stable main

Pour utiliser une autre version, il vous suffit de remplacer ''stable'' par ''testing'' ou ''unstable''.

Vous pouvez aussi mettre le nom de la version (''lenny'', ''squeeze'' et ''sid'', à l'heure où j'écris). Ce qui vous permettra de suivre votre release lorsqu'elle passera en ''testing'', ''stable'' ou ''oldstable'' (pour sid, ça ne change rien) sans toucher au fichier sources.list.

« main » désigne le composant principal du dépôt. Il ne contient que les programmes libres. Pour utiliser des programmes non libres, il vous faut rajouter les composants ''contrib'' et ''non-free'' :

 deb http://ftp.fr.debian.org/debian/ stable contrib non-free

(''non-free'' contient les paquets non libres et ''contrib'' les paquets libres qui dépendent des paquets ''non-free'').

== Autres dépôts ==

Il existe des dépôts supplémentaires que vous pouvez rajouter :

* Le dépôt ''security'' qui contient les mises-à-jour de sécurité pour ''stable'' et ''testing'', au choix :

 deb http://security.debian.org/ stable/updates main
 deb http://security.debian.org/ testing/updates main

Pour plus de renseignements, voir http://www.debian.org/security

* Le dépôt ''volatile'', qui contient des mises-à-jour pour ''stable'' des programmes ayant besoin d'être à jour sur un serveur, tels que des antivirus ou des antispams.

 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free 

Pour les détails, consultez http://www.debian.org/volatile


'''Note:''' Pour la nouvelle stable (squeeze) le dépôt volatile se trouve ici :

 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib

== Miroirs ==

'''ToDo''' : lien vers liste des miroirs, et parler des outils pour choisir le miroir qui répond le mieux.

== Paquets sources ==

Si vous voulez avoir accès aux paquets contenant les codes source des programmes (pour les reconstruire à votre sauce), il vous faut ajouter une ligne commençant par « deb-src » au lieu de « deb » avec la même adresse derrière, par exemple :

 # deb-src http://deb-src

= Gérer ses paquets =

Il existe deux outils pour installer/désinstaller et mettre à jour des programmes : '''apt-get''' et plus récemment, '''aptitude'''.
A ce que dit la rumeur, il y aurait un problème à utiliser conjointement les deux. '''apt-get''' se chargera d'effectuer l'action demandée, et c'est tout ! '''aptitude''' fournit une gestion plus fine des dépendances, en vous proposant plusieurs choix dans les situations complexes.

Si vous préférez un gestionnaire graphique, vous pouvez utiliser '''synaptic''', après l'avoir installé via :

 # aptitude install synaptic

Pour un détail sur l'utilisation d'aptitude, c'est ici:[[http://www.isalo.org/wiki.debian-fr/index.php/Aptitude]]

== Mettre à jour la liste des paquets ==

Pour mettre à jour la liste des paquets disponibles à partir des dépôts, il faut lancer, au choix :

 # apt-get update
 # aptitude update

== Rechercher un paquet ==

Pour rechercher un paquet, il vous suffit de lancer :

 # apt-cache search &lt;nom du paquet&gt;
 # aptitude search &lt;nom du paquet&gt;

'''aptitude''' peut prendre des expressions régulières pour &lt;nom_du_paquet&gt;.

=== Recherches avancées ===

Aptitude propose une foule d'options de recherches avancées :


Recherche de tous les paquets installés :
 $ aptitude search ~i


Recherche des paquets désinstallés, mais dont les fichiers de configurations n'ont pas été purgés :
 $ aptitude search ~c


Recherche des paquets installés qui peuvent être mis à jour :
 $ aptitude search ~U


Rechercher les paquets installés mis en &quot;hold&quot; (&quot;hold&quot; = en pause; Ces paquets ne seront JAMAIS mis à jour tant qu'il seront marqués &quot;h&quot;) :
 $ aptitude search ~i~ahold


Vous trouverez la liste des options possibles [http://algebraicthunk.net/~dburrows/projects/aptitude/doc/en/ch02s03s05.html '''sur cette page''']

== Installer un paquet ==

En une commande, vous pouvez installer un paquet et ses dépendances :

 # apt-get install &lt;nom du paquet&gt;
 # aptitude install &lt;nom du paquet&gt;

== Mettre à jour le système ==

Il existe deux méthodes de mises à jour :

* la première ne supprime que les paquets qui ne sont plus utilisés (recommandée) :

 # apt-get dist-upgrade
 # aptitude safe-upgrade

* la seconde mets à jour tous les paquets, sans distinction d'importance :

 # apt-get upgrade
 # aptitude full-upgrade

== Désinstaller un paquet ==

Pour désinstaller un paquet sans ses dépendances :

 # apt-get remove &lt;nom_du_paquet&gt;

Pour désinstaller un paquet avec ses dépendances (sauf si elles sont utilisées par d'autres paquets)

 # apt-get autoremove &lt;nom du paquet&gt;
 # aptitude remove &lt;nom du paquet&gt;

'''Attention :''' N'utilisez jamais '''apt-get autoremove''' sans indiquer de paquet derrière.

Pour désinstaller un paquet et supprimer ses fichiers de configuration :

 # apt-get remove --purge &lt;nom du paquet&gt;
 # apt-get autoremove --purge &lt;nom du paquet&gt;
 # aptitude purge &lt;nom du paquet&gt;


'''ToDo''' : pinning (preferences, apt-cache policy, avertissement :) : sur une autre page ?
    Voir étiquetage 


[[Category:Paquets]]</text>
      <sha1>43rvvhi4exe2474dqh4ekvmifclpk4d</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2687</id>
      <parentid>2686</parentid>
      <timestamp>2011-02-07T14:59:47Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Dépôt principal */</comment>
      <text xml:space="preserve" bytes="6621">Les dépôts de paquet Debian sont un moyen simple, sûr et efficace pour installer des logiciels.

Les fichiers des programmes sont contenus dans des archives appelées « paquets ». Ces paquets se trouvent sur des serveurs de fichiers appelés « dépôts ». Le gestionnaire de paquets, appelé « apt » se charge de récupérer les paquets et de les installer sur votre système.

Les paquets sont séparés le plus possible pour éviter d'installer des composants inutiles. Si un programme a besoin d'une bibliothèque --- composant lui permettant de faire certaines tâches (vous verrez peut-être le mot « librairie », souvent employé par anglicisme) ---, elle se situera dans un autre paquet. Le gestionnaire apt se chargera de l'installer en même temps que le programme. Si un autre programme utilise la même bibliothèque, elle ne sera pas installée deux fois...

= Configuration des dépôts =

== Dépôt principal ==

'''ToDo :''' expliquer le fonctionnement des différentes releases Debian (sur une autre page ?)

Les dépôts se configuraient dans le fichier '''/etc/apt/sources.list''' jusqu'à la Lenny et
se configurent maintenant dans le fichier '''/etc/apt/sources.list.d/debian.list''' pour une Debian Squeeze

Pour une Debian « stable » (''lenny'' à l'heure où j'écris ces lignes), vous devriez avoir :

 deb http://ftp.fr.debian.org/debian/ stable main

Pour utiliser une autre version, il vous suffit de remplacer ''stable'' par ''testing'' ou ''unstable''.

Vous pouvez aussi mettre le nom de la version (''lenny'', ''squeeze'' et ''sid'', à l'heure où j'écris). Ce qui vous permettra de suivre votre release lorsqu'elle passera en ''testing'', ''stable'' ou ''oldstable'' (pour sid, ça ne change rien) sans toucher au fichier sources.list.

« main » désigne le composant principal du dépôt. Il ne contient que les programmes libres. Pour utiliser des programmes non libres, il vous faut rajouter les composants ''contrib'' et ''non-free'' :

 deb http://ftp.fr.debian.org/debian/ stable contrib non-free

(''non-free'' contient les paquets non libres et ''contrib'' les paquets libres qui dépendent des paquets ''non-free'').

== Autres dépôts ==

Il existe des dépôts supplémentaires que vous pouvez rajouter :

* Le dépôt ''security'' qui contient les mises-à-jour de sécurité pour ''stable'' et ''testing'', au choix :

 deb http://security.debian.org/ stable/updates main
 deb http://security.debian.org/ testing/updates main

Pour plus de renseignements, voir http://www.debian.org/security

* Le dépôt ''volatile'', qui contient des mises-à-jour pour ''stable'' des programmes ayant besoin d'être à jour sur un serveur, tels que des antivirus ou des antispams.

 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free 

Pour les détails, consultez http://www.debian.org/volatile


'''Note:''' Pour la nouvelle stable (squeeze) le dépôt volatile se trouve ici :

 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib

== Miroirs ==

'''ToDo''' : lien vers liste des miroirs, et parler des outils pour choisir le miroir qui répond le mieux.

== Paquets sources ==

Si vous voulez avoir accès aux paquets contenant les codes source des programmes (pour les reconstruire à votre sauce), il vous faut ajouter une ligne commençant par « deb-src » au lieu de « deb » avec la même adresse derrière, par exemple :

 # deb-src http://deb-src

= Gérer ses paquets =

Il existe deux outils pour installer/désinstaller et mettre à jour des programmes : '''apt-get''' et plus récemment, '''aptitude'''.
A ce que dit la rumeur, il y aurait un problème à utiliser conjointement les deux. '''apt-get''' se chargera d'effectuer l'action demandée, et c'est tout ! '''aptitude''' fournit une gestion plus fine des dépendances, en vous proposant plusieurs choix dans les situations complexes.

Si vous préférez un gestionnaire graphique, vous pouvez utiliser '''synaptic''', après l'avoir installé via :

 # aptitude install synaptic

Pour un détail sur l'utilisation d'aptitude, c'est ici:[[http://www.isalo.org/wiki.debian-fr/index.php/Aptitude]]

== Mettre à jour la liste des paquets ==

Pour mettre à jour la liste des paquets disponibles à partir des dépôts, il faut lancer, au choix :

 # apt-get update
 # aptitude update

== Rechercher un paquet ==

Pour rechercher un paquet, il vous suffit de lancer :

 # apt-cache search &lt;nom du paquet&gt;
 # aptitude search &lt;nom du paquet&gt;

'''aptitude''' peut prendre des expressions régulières pour &lt;nom_du_paquet&gt;.

=== Recherches avancées ===

Aptitude propose une foule d'options de recherches avancées :


Recherche de tous les paquets installés :
 $ aptitude search ~i


Recherche des paquets désinstallés, mais dont les fichiers de configurations n'ont pas été purgés :
 $ aptitude search ~c


Recherche des paquets installés qui peuvent être mis à jour :
 $ aptitude search ~U


Rechercher les paquets installés mis en &quot;hold&quot; (&quot;hold&quot; = en pause; Ces paquets ne seront JAMAIS mis à jour tant qu'il seront marqués &quot;h&quot;) :
 $ aptitude search ~i~ahold


Vous trouverez la liste des options possibles [http://algebraicthunk.net/~dburrows/projects/aptitude/doc/en/ch02s03s05.html '''sur cette page''']

== Installer un paquet ==

En une commande, vous pouvez installer un paquet et ses dépendances :

 # apt-get install &lt;nom du paquet&gt;
 # aptitude install &lt;nom du paquet&gt;

== Mettre à jour le système ==

Il existe deux méthodes de mises à jour :

* la première ne supprime que les paquets qui ne sont plus utilisés (recommandée) :

 # apt-get dist-upgrade
 # aptitude safe-upgrade

* la seconde mets à jour tous les paquets, sans distinction d'importance :

 # apt-get upgrade
 # aptitude full-upgrade

== Désinstaller un paquet ==

Pour désinstaller un paquet sans ses dépendances :

 # apt-get remove &lt;nom_du_paquet&gt;

Pour désinstaller un paquet avec ses dépendances (sauf si elles sont utilisées par d'autres paquets)

 # apt-get autoremove &lt;nom du paquet&gt;
 # aptitude remove &lt;nom du paquet&gt;

'''Attention :''' N'utilisez jamais '''apt-get autoremove''' sans indiquer de paquet derrière.

Pour désinstaller un paquet et supprimer ses fichiers de configuration :

 # apt-get remove --purge &lt;nom du paquet&gt;
 # apt-get autoremove --purge &lt;nom du paquet&gt;
 # aptitude purge &lt;nom du paquet&gt;


'''ToDo''' : pinning (preferences, apt-cache policy, avertissement :) : sur une autre page ?
    Voir étiquetage 


[[Category:Paquets]]</text>
      <sha1>a2n1eo7qy551yrac8412zo0tjdh32pb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4518</id>
      <parentid>2687</parentid>
      <timestamp>2012-10-19T19:49:37Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>ToDo -&gt; fait !</comment>
      <text xml:space="preserve" bytes="6507">Les dépôts de paquet Debian sont un moyen simple, sûr et efficace pour installer des logiciels.

Les fichiers des programmes sont contenus dans des archives appelées « paquets ». Ces paquets se trouvent sur des serveurs de fichiers appelés « dépôts ». Le gestionnaire de paquets, appelé « apt » se charge de récupérer les paquets et de les installer sur votre système.

Les paquets sont séparés le plus possible pour éviter d'installer des composants inutiles. Si un programme a besoin d'une bibliothèque --- composant lui permettant de faire certaines tâches (vous verrez peut-être le mot « librairie », souvent employé par anglicisme) ---, elle se situera dans un autre paquet. Le gestionnaire apt se chargera de l'installer en même temps que le programme. Si un autre programme utilise la même bibliothèque, elle ne sera pas installée deux fois...

= Configuration des dépôts =

== Dépôt principal ==

'''ToDo :''' expliquer le fonctionnement des différentes releases Debian (sur une autre page ?)

Les dépôts se configuraient dans le fichier '''/etc/apt/sources.list''' jusqu'à la Lenny et
se configurent maintenant dans le fichier '''/etc/apt/sources.list.d/debian.list''' pour une Debian Squeeze

Pour une Debian « stable » (''lenny'' à l'heure où j'écris ces lignes), vous devriez avoir :

 deb http://ftp.fr.debian.org/debian/ stable main

Pour utiliser une autre version, il vous suffit de remplacer ''stable'' par ''testing'' ou ''unstable''.

Vous pouvez aussi mettre le nom de la version (''lenny'', ''squeeze'' et ''sid'', à l'heure où j'écris). Ce qui vous permettra de suivre votre release lorsqu'elle passera en ''testing'', ''stable'' ou ''oldstable'' (pour sid, ça ne change rien) sans toucher au fichier sources.list.

« main » désigne le composant principal du dépôt. Il ne contient que les programmes libres. Pour utiliser des programmes non libres, il vous faut rajouter les composants ''contrib'' et ''non-free'' :

 deb http://ftp.fr.debian.org/debian/ stable contrib non-free

(''non-free'' contient les paquets non libres et ''contrib'' les paquets libres qui dépendent des paquets ''non-free'').

== Autres dépôts ==

Il existe des dépôts supplémentaires que vous pouvez rajouter :

* Le dépôt ''security'' qui contient les mises-à-jour de sécurité pour ''stable'' et ''testing'', au choix :

 deb http://security.debian.org/ stable/updates main
 deb http://security.debian.org/ testing/updates main

Pour plus de renseignements, voir http://www.debian.org/security

* Le dépôt ''volatile'', qui contient des mises-à-jour pour ''stable'' des programmes ayant besoin d'être à jour sur un serveur, tels que des antivirus ou des antispams.

 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free 

Pour les détails, consultez http://www.debian.org/volatile


'''Note:''' Pour la nouvelle stable (squeeze) le dépôt volatile se trouve ici :

 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib

== Miroirs ==

'''ToDo''' : lien vers liste des miroirs, et parler des outils pour choisir le miroir qui répond le mieux.

== Paquets sources ==

Si vous voulez avoir accès aux paquets contenant les codes source des programmes (pour les reconstruire à votre sauce), il vous faut ajouter une ligne commençant par « deb-src » au lieu de « deb » avec la même adresse derrière, par exemple :

 # deb-src http://deb-src

= Gérer ses paquets =

Il existe deux outils pour installer/désinstaller et mettre à jour des programmes : '''apt-get''' et plus récemment, '''aptitude'''.
A ce que dit la rumeur, il y aurait un problème à utiliser conjointement les deux. '''apt-get''' se chargera d'effectuer l'action demandée, et c'est tout ! '''aptitude''' fournit une gestion plus fine des dépendances, en vous proposant plusieurs choix dans les situations complexes.

Si vous préférez un gestionnaire graphique, vous pouvez utiliser '''synaptic''', après l'avoir installé via :

 # aptitude install synaptic

Pour un détail sur l'utilisation d'aptitude, c'est ici:[[http://www.isalo.org/wiki.debian-fr/index.php/Aptitude]]

== Mettre à jour la liste des paquets ==

Pour mettre à jour la liste des paquets disponibles à partir des dépôts, il faut lancer, au choix :

 # apt-get update
 # aptitude update

== Rechercher un paquet ==

Pour rechercher un paquet, il vous suffit de lancer :

 # apt-cache search &lt;nom du paquet&gt;
 # aptitude search &lt;nom du paquet&gt;

'''aptitude''' peut prendre des expressions régulières pour &lt;nom_du_paquet&gt;.

=== Recherches avancées ===

Aptitude propose une foule d'options de recherches avancées :


Recherche de tous les paquets installés :
 $ aptitude search ~i


Recherche des paquets désinstallés, mais dont les fichiers de configurations n'ont pas été purgés :
 $ aptitude search ~c


Recherche des paquets installés qui peuvent être mis à jour :
 $ aptitude search ~U


Rechercher les paquets installés mis en &quot;hold&quot; (&quot;hold&quot; = en pause; Ces paquets ne seront JAMAIS mis à jour tant qu'il seront marqués &quot;h&quot;) :
 $ aptitude search ~i~ahold


Vous trouverez la liste des options possibles [http://algebraicthunk.net/~dburrows/projects/aptitude/doc/en/ch02s03s05.html '''sur cette page''']

== Installer un paquet ==

En une commande, vous pouvez installer un paquet et ses dépendances :

 # apt-get install &lt;nom du paquet&gt;
 # aptitude install &lt;nom du paquet&gt;

== Mettre à jour le système ==

Il existe deux méthodes de mises à jour :

* la première ne supprime que les paquets qui ne sont plus utilisés (recommandée) :

 # apt-get dist-upgrade
 # aptitude safe-upgrade

* la seconde mets à jour tous les paquets, sans distinction d'importance :

 # apt-get upgrade
 # aptitude full-upgrade

== Désinstaller un paquet ==

Pour désinstaller un paquet sans ses dépendances :

 # apt-get remove &lt;nom_du_paquet&gt;

Pour désinstaller un paquet avec ses dépendances (sauf si elles sont utilisées par d'autres paquets)

 # apt-get autoremove &lt;nom du paquet&gt;
 # aptitude remove &lt;nom du paquet&gt;

'''Attention :''' N'utilisez jamais '''apt-get autoremove''' sans indiquer de paquet derrière.

Pour désinstaller un paquet et supprimer ses fichiers de configuration :

 # apt-get remove --purge &lt;nom du paquet&gt;
 # apt-get autoremove --purge &lt;nom du paquet&gt;
 # aptitude purge &lt;nom du paquet&gt;





[[Category:Paquets]]</text>
      <sha1>k9v3vunvit3ell43u0snsr4hn72lu8l</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5184</id>
      <parentid>4518</parentid>
      <timestamp>2013-05-15T13:19:38Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>Suppression de la partie &quot;configuration des dépôts&quot; &gt; renvoi vers l'article dédié</comment>
      <text xml:space="preserve" bytes="3983">Les dépôts de paquet Debian sont un moyen simple, sûr et efficace pour installer des logiciels.

Les fichiers des programmes sont contenus dans des archives appelées « paquets ». Ces paquets se trouvent sur des serveurs de fichiers appelés « dépôts ». Le gestionnaire de paquets, appelé « apt » se charge de récupérer les paquets et de les installer sur votre système.

Les paquets sont séparés le plus possible pour éviter d'installer des composants inutiles. Si un programme a besoin d'une bibliothèque --- composant lui permettant de faire certaines tâches (vous verrez peut-être le mot « librairie », souvent employé par anglicisme) ---, elle se situera dans un autre paquet. Le gestionnaire apt se chargera de l'installer en même temps que le programme. Si un autre programme utilise la même bibliothèque, elle ne sera pas installée deux fois...

= Configuration des dépôts =

Ce sujet est traité sur un autre article : [[Sources_de_paquets_:_les_bases|Sources de paquets : les bases]]

= Gérer ses paquets =

Il existe deux outils pour installer/désinstaller et mettre à jour des programmes : '''apt-get''' et plus récemment, '''aptitude'''.
A ce que dit la rumeur, il y aurait un problème à utiliser conjointement les deux. '''apt-get''' se chargera d'effectuer l'action demandée, et c'est tout ! '''aptitude''' fournit une gestion plus fine des dépendances, en vous proposant plusieurs choix dans les situations complexes.

Si vous préférez un gestionnaire graphique, vous pouvez utiliser '''synaptic''', après l'avoir installé via :

 # aptitude install synaptic

Pour un détail sur l'utilisation d'aptitude, c'est ici:[[http://www.isalo.org/wiki.debian-fr/index.php/Aptitude]]

== Mettre à jour la liste des paquets ==

Pour mettre à jour la liste des paquets disponibles à partir des dépôts, il faut lancer, au choix :

 # apt-get update
 # aptitude update

== Rechercher un paquet ==

Pour rechercher un paquet, il vous suffit de lancer :

 # apt-cache search &lt;nom du paquet&gt;
 # aptitude search &lt;nom du paquet&gt;

'''aptitude''' peut prendre des expressions régulières pour &lt;nom_du_paquet&gt;.

=== Recherches avancées ===

Aptitude propose une foule d'options de recherches avancées :


Recherche de tous les paquets installés :
 $ aptitude search ~i


Recherche des paquets désinstallés, mais dont les fichiers de configurations n'ont pas été purgés :
 $ aptitude search ~c


Recherche des paquets installés qui peuvent être mis à jour :
 $ aptitude search ~U


Rechercher les paquets installés mis en &quot;hold&quot; (&quot;hold&quot; = en pause; Ces paquets ne seront JAMAIS mis à jour tant qu'il seront marqués &quot;h&quot;) :
 $ aptitude search ~i~ahold


Vous trouverez la liste des options possibles [http://algebraicthunk.net/~dburrows/projects/aptitude/doc/en/ch02s03s05.html '''sur cette page''']

== Installer un paquet ==

En une commande, vous pouvez installer un paquet et ses dépendances :

 # apt-get install &lt;nom du paquet&gt;
 # aptitude install &lt;nom du paquet&gt;

== Mettre à jour le système ==

Il existe deux méthodes de mises à jour :

* la première ne supprime que les paquets qui ne sont plus utilisés (recommandée) :

 # apt-get dist-upgrade
 # aptitude safe-upgrade

* la seconde mets à jour tous les paquets, sans distinction d'importance :

 # apt-get upgrade
 # aptitude full-upgrade

== Désinstaller un paquet ==

Pour désinstaller un paquet sans ses dépendances :

 # apt-get remove &lt;nom_du_paquet&gt;

Pour désinstaller un paquet avec ses dépendances (sauf si elles sont utilisées par d'autres paquets)

 # apt-get autoremove &lt;nom du paquet&gt;
 # aptitude remove &lt;nom du paquet&gt;

'''Attention :''' N'utilisez jamais '''apt-get autoremove''' sans indiquer de paquet derrière.

Pour désinstaller un paquet et supprimer ses fichiers de configuration :

 # apt-get remove --purge &lt;nom du paquet&gt;
 # apt-get autoremove --purge &lt;nom du paquet&gt;
 # aptitude purge &lt;nom du paquet&gt;





[[Category:Paquets]]</text>
      <sha1>5rgeo8po2qmuixktps9ukh327xavrlq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5824</id>
      <parentid>5184</parentid>
      <timestamp>2014-09-11T09:14:49Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="4659">Les dépôts de paquets Debian sont un moyen simple, sûr et efficace pour installer des logiciels.

Les fichiers des programmes sont contenus dans des archives appelées « paquets ». Ces paquets se trouvent sur des serveurs de fichiers appelés « dépôts ». Le gestionnaire de paquets, appelé « APT » (Advanced Packaging Tool) se charge de récupérer les paquets et de les installer sur votre système.

Les paquets sont séparés le plus possible pour éviter d’installer des composants inutiles. Si un programme a besoin d’une bibliothèque --- composant lui permettant de faire certaines tâches (vous verrez peut-être le mot « librairie », souvent employé par anglicisme) ---, elle se situera dans un autre paquet. Le gestionnaire APT se chargera de l’installer en même temps que le programme. Si un autre programme utilise la même bibliothèque, elle ne sera pas installée deux fois…

= Configuration des dépôts =

Ce sujet est traité sur un autre article : [[Sources_de_paquets_:_les_bases|Sources de paquets : les bases]]

= Gérer ses paquets =

Il existe trois outils pour installer/désinstaller et mettre à jour des programmes : '''apt-get''', [[Aptitude|'''aptitude''']] et à partir de Jessie '''apt''' (ce dernier est en fait une interface différente pour apt-get).

apt-get et apt se chargent d’effectuer l’action demandée, et c’est tout ! Ils sont donc particulièrement adaptés aux tâches de maintenance courantes, comme la mise-à-jour du sytème et les installations/désinstallations.

aptitude fournit une gestion plus fine des dépendances, en vous proposant plusieurs choix dans les situations complexes. Au prix d’un temps d’exécution plus long il est l’outil idéal pour régler les situations de conflits entre paquets.

Si vous préférez un gestionnaire graphique, vous pouvez utiliser '''synaptic''', après l’avoir installé via :

 # apt-get install synaptic

== Mettre à jour la liste des paquets ==

Pour mettre à jour la liste des paquets disponibles à partir des dépôts, il faut lancer, au choix :

 # apt-get update
 # apt update
 # aptitude update

== Rechercher un paquet ==

Pour rechercher un paquet, il vous suffit de lancer :

 $ apt-cache search &lt;mots-clés&gt;
 $ apt search &lt;mots-clés&gt;
 $ aptitude search &lt;mots-clés&gt;

aptitude peut prendre des expressions régulières dans ses termes de recherche.

=== Recherches avancées ===

Aptitude propose une foule d’options de recherches avancées :


Recherche de tous les paquets installés :
 $ aptitude search ~i


Recherche des paquets désinstallés, mais dont les fichiers de configurations n’ont pas été purgés :
 $ aptitude search ~c


Recherche des paquets installés qui peuvent être mis à jour :
 $ aptitude search ~U


Rechercher les paquets installés mis en &quot;hold&quot; (&quot;hold&quot; = en pause ; ces paquets ne seront '''jamais''' mis à jour tant qu’il seront marqués &quot;h&quot;) :
 $ aptitude search ~i~ahold


Vous trouverez la liste des options possibles [http://algebraicthunk.net/~dburrows/projects/aptitude/doc/fr/ch02s03s05.html '''sur cette page''']

== Installer un paquet ==

En une commande, vous pouvez installer un paquet et ses dépendances :

 # apt-get install &lt;paquet&gt;
 # apt install &lt;paquet&gt;
 # aptitude install &lt;paquet&gt;

== Mettre à jour le système ==

Il existe trois méthodes de mise-à-jour :

* la première n’installe ni ne supprime de paquets, quitte à empêcher la mise-à-jour de certains paquets neçessitant de nouvelles dépendances dans leur dernière version :

 # apt-get upgrade
 # aptitude --no-new-installs

* la deuxième peut installer des paquets pour satisfaire de nouvelles dépendances, mais pas en supprimer :

 # apt-get upgrade --with-new-pkgs
 # apt upgrade
 # aptitude safe-upgrade

* la troisième peut installer et/ou désinstaller des paquets pour satisfaire de nouvelles dépendances :

 # apt-get dist-upgrade
 # apt dist-upgrade
 # aptitude full-upgrade

== Désinstaller un paquet ==

Pour désinstaller un paquet sans désinstaller ses dépendances :

 # apt-get remove &lt;paquet&gt;
 # apt remove &lt;paquet&gt;

Pour désinstaller un paquet avec ses dépendances (sauf si elles sont utilisées par d’autres paquets) :

 # apt-get autoremove &lt;paquet&gt;
 # apt autoremove &lt;paquet&gt;
 # aptitude remove &lt;paquet&gt;

Pour désinstaller un paquet et supprimer ses fichiers de configuration :

 # apt-get purge &lt;paquet&gt;
 # apt purge &lt;paquet&gt;
 # aptitude purge &lt;paquet&gt;

-----

Dernière mise-à-jour :

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 11 septembre 2014 à 11:14 (CEST)

[[Category:Paquets]]</text>
      <sha1>p0mfpng178yxqtu5dkil3r9w83oa2t3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5825</id>
      <parentid>5824</parentid>
      <timestamp>2014-09-12T06:54:48Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="4705">Les dépôts de paquets Debian sont un moyen simple, sûr et efficace pour installer des logiciels.

Les fichiers des programmes sont contenus dans des archives appelées « paquets ». Ces paquets se trouvent sur des serveurs de fichiers appelés « dépôts ». Le gestionnaire de paquets, appelé « APT » (Advanced Packaging Tool) se charge de récupérer les paquets et de les installer sur votre système.

Les paquets sont séparés le plus possible pour éviter d’installer des composants inutiles. Si un programme a besoin d’une bibliothèque --- composant lui permettant de faire certaines tâches (vous verrez peut-être le mot « librairie », souvent employé par anglicisme) ---, elle se situera dans un autre paquet. Le gestionnaire APT se chargera de l’installer en même temps que le programme. Si un autre programme utilise la même bibliothèque, elle ne sera pas installée deux fois…

= Configuration des dépôts =

Ce sujet est traité sur un autre article : [[Sources_de_paquets_:_les_bases|Sources de paquets : les bases]]

= Gérer ses paquets =

Il existe trois outils pour installer/désinstaller et mettre à jour des programmes : '''apt-get''', [[Aptitude|'''aptitude''']] et à partir de Jessie '''apt''' (ce dernier est en fait une interface différente pour apt-get).

apt-get et apt se chargent d’effectuer l’action demandée, et c’est tout ! Ils sont donc particulièrement adaptés aux tâches de maintenance courantes, comme la mise-à-jour du sytème et les installations/désinstallations.

aptitude fournit une gestion plus fine des dépendances, en vous proposant plusieurs choix dans les situations complexes. Au prix d’un temps d’exécution plus long il est l’outil idéal pour régler les situations de conflits entre paquets.

Si vous préférez un gestionnaire graphique, vous pouvez utiliser '''synaptic''', après l’avoir installé via :

 # apt-get install synaptic

== Mettre à jour la liste des paquets ==

Pour mettre à jour la liste des paquets disponibles à partir des dépôts, il faut lancer, au choix :

 # apt-get update
 # apt update
 # aptitude update

== Rechercher un paquet ==

Pour rechercher un paquet, il vous suffit de lancer :

 $ apt-cache search &lt;mots-clés&gt;
 $ apt search &lt;mots-clés&gt;
 $ aptitude search &lt;mots-clés&gt;

aptitude peut prendre des expressions régulières dans ses termes de recherche.

=== Recherches avancées ===

Aptitude propose une foule d’options de recherches avancées :


Recherche de tous les paquets installés :
 $ aptitude search ~i


Recherche des paquets désinstallés, mais dont les fichiers de configurations n’ont pas été purgés :
 $ aptitude search ~c


Recherche des paquets installés qui peuvent être mis à jour :
 $ aptitude search ~U


Rechercher les paquets installés mis en &quot;hold&quot; (&quot;hold&quot; = en pause ; ces paquets ne seront '''jamais''' mis à jour tant qu’il seront marqués &quot;h&quot;) :
 $ aptitude search ~i~ahold


Vous trouverez la liste des options possibles [http://algebraicthunk.net/~dburrows/projects/aptitude/doc/fr/ch02s03s05.html '''sur cette page''']

== Installer un paquet ==

En une commande, vous pouvez installer un paquet et ses dépendances :

 # apt-get install &lt;paquet&gt;
 # apt install &lt;paquet&gt;
 # aptitude install &lt;paquet&gt;

== Mettre à jour le système ==

Il existe trois méthodes de mise-à-jour :

* la première n’installe ni ne supprime de paquets, quitte à empêcher la mise-à-jour de certains paquets neçessitant de nouvelles dépendances dans leur dernière version :

 # apt-get upgrade
 # aptitude --no-new-installs

* la deuxième peut installer des paquets pour satisfaire de nouvelles dépendances, mais pas en supprimer :

 # apt-get upgrade --with-new-pkgs
 # apt upgrade
 # aptitude safe-upgrade

* la troisième peut installer et/ou désinstaller des paquets pour satisfaire de nouvelles dépendances :

 # apt-get dist-upgrade
 # apt dist-upgrade
 # aptitude full-upgrade

== Désinstaller un paquet ==

Pour désinstaller un paquet sans désinstaller ses dépendances :

 # apt-get remove &lt;paquet&gt;
 # apt remove &lt;paquet&gt;

Pour désinstaller un paquet avec ses dépendances (sauf si elles sont utilisées par d’autres paquets) :

 # apt-get autoremove &lt;paquet&gt;
 # apt autoremove &lt;paquet&gt;
 # aptitude remove &lt;paquet&gt;

Pour désinstaller un paquet et supprimer ses fichiers de configuration :

 # apt-get purge &lt;paquet&gt;
 # apt purge &lt;paquet&gt;
 # aptitude purge &lt;paquet&gt;

-----

Création de l’article :

7 février 2010

Dernière mise-à-jour :

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 11 septembre 2014 à 11:14 (CEST)

[[Category:Paquets]]</text>
      <sha1>n6dylnwik4gzik9d1u551tf4p7bl8w2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5833</id>
      <parentid>5825</parentid>
      <timestamp>2014-09-23T03:23:28Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Mettre à jour le système */ Ajout note: &quot;MàJ liste paquetages Avant&quot;</comment>
      <text xml:space="preserve" bytes="5025">Les dépôts de paquets Debian sont un moyen simple, sûr et efficace pour installer des logiciels.

Les fichiers des programmes sont contenus dans des archives appelées « paquets ». Ces paquets se trouvent sur des serveurs de fichiers appelés « dépôts ». Le gestionnaire de paquets, appelé « APT » (Advanced Packaging Tool) se charge de récupérer les paquets et de les installer sur votre système.

Les paquets sont séparés le plus possible pour éviter d’installer des composants inutiles. Si un programme a besoin d’une bibliothèque --- composant lui permettant de faire certaines tâches (vous verrez peut-être le mot « librairie », souvent employé par anglicisme) ---, elle se situera dans un autre paquet. Le gestionnaire APT se chargera de l’installer en même temps que le programme. Si un autre programme utilise la même bibliothèque, elle ne sera pas installée deux fois…

= Configuration des dépôts =

Ce sujet est traité sur un autre article : [[Sources_de_paquets_:_les_bases|Sources de paquets : les bases]]

= Gérer ses paquets =

Il existe trois outils pour installer/désinstaller et mettre à jour des programmes : '''apt-get''', [[Aptitude|'''aptitude''']] et à partir de Jessie '''apt''' (ce dernier est en fait une interface différente pour apt-get).

apt-get et apt se chargent d’effectuer l’action demandée, et c’est tout ! Ils sont donc particulièrement adaptés aux tâches de maintenance courantes, comme la mise-à-jour du sytème et les installations/désinstallations.

aptitude fournit une gestion plus fine des dépendances, en vous proposant plusieurs choix dans les situations complexes. Au prix d’un temps d’exécution plus long il est l’outil idéal pour régler les situations de conflits entre paquets.

Si vous préférez un gestionnaire graphique, vous pouvez utiliser '''synaptic''', après l’avoir installé via :

 # apt-get install synaptic

== Mettre à jour la liste des paquets ==

Pour mettre à jour la liste des paquets disponibles à partir des dépôts, il faut lancer, au choix :

 # apt-get update
 # apt update
 # aptitude update

== Rechercher un paquet ==

Pour rechercher un paquet, il vous suffit de lancer :

 $ apt-cache search &lt;mots-clés&gt;
 $ apt search &lt;mots-clés&gt;
 $ aptitude search &lt;mots-clés&gt;

aptitude peut prendre des expressions régulières dans ses termes de recherche.

=== Recherches avancées ===

Aptitude propose une foule d’options de recherches avancées :


Recherche de tous les paquets installés :
 $ aptitude search ~i


Recherche des paquets désinstallés, mais dont les fichiers de configurations n’ont pas été purgés :
 $ aptitude search ~c


Recherche des paquets installés qui peuvent être mis à jour :
 $ aptitude search ~U


Rechercher les paquets installés mis en &quot;hold&quot; (&quot;hold&quot; = en pause ; ces paquets ne seront '''jamais''' mis à jour tant qu’il seront marqués &quot;h&quot;) :
 $ aptitude search ~i~ahold


Vous trouverez la liste des options possibles [http://algebraicthunk.net/~dburrows/projects/aptitude/doc/fr/ch02s03s05.html '''sur cette page''']

== Installer un paquet ==

En une commande, vous pouvez installer un paquet et ses dépendances :

 # apt-get install &lt;paquet&gt;
 # apt install &lt;paquet&gt;
 # aptitude install &lt;paquet&gt;

== Mettre à jour le système ==

&lt;u&gt;'''NOTE:'''&lt;/u&gt; La mise à jour des paquetages installés sur votre système, utilise la liste des paquetages.&lt;br \&gt;
       Il faudra donc [[Gestion_des_paquets#Mettre_.C3.A0_jour_la_liste_des_paquets | Mettre à jour la liste des paquetages]] '''avant''' de mettre à jour les paquetages installés.

Il existe trois méthodes de mise-à-jour :

* la première n’installe ni ne supprime de paquets, quitte à empêcher la mise-à-jour de certains paquets néçessitant de nouvelles dépendances dans leur dernière version :

 # apt-get upgrade
 # aptitude --no-new-installs

* la deuxième peut installer des paquets pour satisfaire de nouvelles dépendances, mais pas en supprimer :

 # apt-get upgrade --with-new-pkgs
 # apt upgrade
 # aptitude safe-upgrade

* la troisième peut installer et/ou désinstaller des paquets pour satisfaire de nouvelles dépendances :

 # apt-get dist-upgrade
 # apt dist-upgrade
 # aptitude full-upgrade

== Désinstaller un paquet ==

Pour désinstaller un paquet sans désinstaller ses dépendances :

 # apt-get remove &lt;paquet&gt;
 # apt remove &lt;paquet&gt;

Pour désinstaller un paquet avec ses dépendances (sauf si elles sont utilisées par d’autres paquets) :

 # apt-get autoremove &lt;paquet&gt;
 # apt autoremove &lt;paquet&gt;
 # aptitude remove &lt;paquet&gt;

Pour désinstaller un paquet et supprimer ses fichiers de configuration :

 # apt-get purge &lt;paquet&gt;
 # apt purge &lt;paquet&gt;
 # aptitude purge &lt;paquet&gt;

-----

Création de l’article :

7 février 2010

Dernière mise-à-jour :

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 11 septembre 2014 à 11:14 (CEST)

[[Category:Paquets]]</text>
      <sha1>mv88x41abc9isk3ozu6grvbwh4p3ue5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5839</id>
      <parentid>5833</parentid>
      <timestamp>2014-09-26T20:27:23Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="5012">Les dépôts de paquets Debian sont un moyen simple, sûr et efficace pour installer des logiciels.

Les fichiers des programmes sont contenus dans des archives appelées « paquets ». Ces paquets se trouvent sur des serveurs de fichiers appelés « dépôts ». Le gestionnaire de paquets, appelé « APT » (Advanced Packaging Tool) se charge de récupérer les paquets et de les installer sur votre système.

Les paquets sont séparés le plus possible pour éviter d’installer des composants inutiles. Si un programme a besoin d’une bibliothèque --- composant lui permettant de faire certaines tâches (vous verrez peut-être le mot « librairie », souvent employé par anglicisme) ---, elle se situera dans un autre paquet. Le gestionnaire APT se chargera de l’installer en même temps que le programme. Si un autre programme utilise la même bibliothèque, elle ne sera pas installée deux fois…

= Configuration des dépôts =

Ce sujet est traité sur un autre article : [[Sources_de_paquets_:_les_bases|Sources de paquets : les bases]]

= Gérer ses paquets =

Il existe trois outils pour installer/désinstaller et mettre à jour des programmes : '''apt-get''', [[Aptitude|'''aptitude''']] et à partir de Jessie '''apt''' (ce dernier est en fait une interface différente pour apt-get).

apt-get et apt se chargent d’effectuer l’action demandée, et c’est tout ! Ils sont donc particulièrement adaptés aux tâches de maintenance courantes, comme la mise-à-jour du sytème et les installations/désinstallations.

aptitude fournit une gestion plus fine des dépendances, en vous proposant plusieurs choix dans les situations complexes. Au prix d’un temps d’exécution plus long il est l’outil idéal pour régler les situations de conflits entre paquets.

Si vous préférez un gestionnaire graphique, vous pouvez utiliser '''synaptic''', après l’avoir installé via :

 # apt-get install synaptic

== Mettre à jour la liste des paquets ==

Pour mettre à jour la liste des paquets disponibles à partir des dépôts, il faut lancer, au choix :

 # apt-get update
 # apt update
 # aptitude update

== Rechercher un paquet ==

Pour rechercher un paquet, il vous suffit de lancer :

 $ apt-cache search &lt;mots-clés&gt;
 $ apt search &lt;mots-clés&gt;
 $ aptitude search &lt;mots-clés&gt;

aptitude peut prendre des expressions régulières dans ses termes de recherche.

=== Recherches avancées ===

Aptitude propose une foule d’options de recherches avancées :


Recherche de tous les paquets installés :
 $ aptitude search ~i


Recherche des paquets désinstallés, mais dont les fichiers de configurations n’ont pas été purgés :
 $ aptitude search ~c


Recherche des paquets installés qui peuvent être mis à jour :
 $ aptitude search ~U


Rechercher les paquets installés mis en &quot;hold&quot; (&quot;hold&quot; = en pause ; ces paquets ne seront '''jamais''' mis à jour tant qu’il seront marqués &quot;h&quot;) :
 $ aptitude search ~i~ahold


Vous trouverez la liste des options possibles [http://algebraicthunk.net/~dburrows/projects/aptitude/doc/fr/ch02s03s05.html '''sur cette page''']

== Installer un paquet ==

En une commande, vous pouvez installer un paquet et ses dépendances :

 # apt-get install &lt;paquet&gt;
 # apt install &lt;paquet&gt;
 # aptitude install &lt;paquet&gt;

== Mettre à jour le système ==

&lt;u&gt;'''NOTE:'''&lt;/u&gt; La mise à jour des paquets installés sur votre système, utilise la liste des paquets.&lt;br \&gt;
       Il faudra donc [[Gestion_des_paquets#Mettre_.C3.A0_jour_la_liste_des_paquets | Mettre à jour la liste des paquets]] '''avant''' de mettre à jour les paquets installés.

Il existe trois méthodes de mise-à-jour :

* la première n’installe ni ne supprime de paquets, quitte à empêcher la mise-à-jour de certains paquets nécessitant de nouvelles dépendances dans leur dernière version :

 # apt-get upgrade
 # aptitude --no-new-installs

* la deuxième peut installer des paquets pour satisfaire de nouvelles dépendances, mais pas en supprimer :

 # apt-get upgrade --with-new-pkgs
 # apt upgrade
 # aptitude safe-upgrade

* la troisième peut installer et/ou désinstaller des paquets pour satisfaire de nouvelles dépendances :

 # apt-get dist-upgrade
 # apt dist-upgrade
 # aptitude full-upgrade

== Désinstaller un paquet ==

Pour désinstaller un paquet sans désinstaller ses dépendances :

 # apt-get remove &lt;paquet&gt;
 # apt remove &lt;paquet&gt;

Pour désinstaller un paquet avec ses dépendances (sauf si elles sont utilisées par d’autres paquets) :

 # apt-get autoremove &lt;paquet&gt;
 # apt autoremove &lt;paquet&gt;
 # aptitude remove &lt;paquet&gt;

Pour désinstaller un paquet et supprimer ses fichiers de configuration :

 # apt-get purge &lt;paquet&gt;
 # apt purge &lt;paquet&gt;
 # aptitude purge &lt;paquet&gt;

-----

Création de l’article :

7 février 2010

Dernière mise-à-jour :

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 11 septembre 2014 à 11:14 (CEST)

[[Category:Paquets]]</text>
      <sha1>ivp10fe6fncx7s26czlcw4ji0lthf33</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Gestion des repertoires</title>
    <ns>0</ns>
    <id>8</id>
    <revision>
      <id>18</id>
      <timestamp>2010-01-21T14:31:28Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <comment>Page créée avec « {{Stable}}  [[Commandes_de_base|Retour Commandes de base]]  = Gestion des répertoires. =  {| class=&quot;prettytable&quot; ! &lt;center&gt;'''LISTE_DES_COMMANDE'''&lt;/center&gt; ! &lt;center&gt;'''EFF… »</comment>
      <text xml:space="preserve" bytes="3027">{{Stable}}

[[Commandes_de_base|Retour Commandes de base]]

= Gestion des répertoires. =

{| class=&quot;prettytable&quot;
! &lt;center&gt;'''LISTE_DES_COMMANDE'''&lt;/center&gt;
! &lt;center&gt;'''EFFET'''&lt;/center&gt;

|-
| $ cd /
| Revenir dans le répertoire racine.

|-
| $ cd /anymhere/somewhere
| Se rendre dans le répertoire&amp;nbsp;''somewhere''.

|-
| $ cd ~
| Revenir dans le répertoire principal (de l'utilisateur... /home/vous ou si vous êtes root /root)

|-
| $ cd ..
| Se rendre dans le répertoire situé au-dessus du répertoire courant.

|-
| $ cp -r source destination
| Copier l'ensemble d'un répertoire et de ses sous-répertoires.

|-
| $ dir repertoire
| Liste le contenu du répertoire&amp;nbsp;''repertoire''.

|-
| $ du -s repertoire
| Donne la taille du répertoire&amp;nbsp;''rep''. Avec l'option h (du -sh repertoire) vous aurez la réponse en Mo. &quot;h&quot; signifie &quot;human&quot; qui est donc plus facilement lisible par l'homme...

|-
| $ du -sh
| Mesure la taille du répertoire depuis lequel vous tapez la commande

|-
| $ ls
| Les répertoires ne sont rien d'autre que des fichiers d'un type particulier. La commande&amp;nbsp;''ls''&amp;nbsp;leur est donc applicable avec toutes ses options.

|-
| $ mkdir titi
| Pour créer le répertoire&amp;nbsp;''titi''&amp;nbsp;dans le répertoire courant.

|-
| $ mkdir -p rep1/rep2/rep3
| crée rep3 en créant rep1 et rep2 s'ils n'existent pas.

|-
| $ mv source destination
| Déplacer ou/et renommer le répertoire mentionné en&amp;nbsp;''source''. Pour renommer le répertoire, indiquer son nouveau nom à la place de&amp;nbsp;''destination''.

|-
| $ pwd
| Affiche le nom (et le chemin) du répertoire courant. La commande&amp;nbsp;''pwd''&amp;nbsp;est utile lorsqu'on désire obtenir le chemin absolu du répertoire courant.

|-
| $ vdir rep
| Liste le contenu de&amp;nbsp;''rep''&amp;nbsp;en mode verbeux (avec plus de détail que la commande&amp;nbsp;''dir'').


|-
|
| '''Avertissement''' '''Les commandes rm sont à manipuler avec beaucoup d'attention...'''

|-
| $ rm -d
| Supprime le répertoire, qu'il soit plein ou non.

|-
| $ rm -r niveau1
| Supprime un répertoire et ses sous répertoires (/niveau1/niveau2/niveau3/etc...)

|-
| $ rm -rf /repertoire
| Supprime&amp;nbsp;''repertoire''&amp;nbsp;sans demander de confirmation. Si vous utilisez en tant que root la commande&amp;nbsp;''rm -rf /'', la totalité des fichiers du système est supprimée en une fraction de seconde, '''sans possibilité de récupération'''. '''Soyez extrêmement vigilent avec cette commande !'''

|-
| $ rmdir /repertoire
| Supprime&amp;nbsp;''/repertoire''&amp;nbsp;si et seulement si&amp;nbsp;''/rep''&amp;nbsp;est vide.

|-
| $ rmdir -p /niveau1/niveau2
| Supprime une hiérarchie de répertoires vides en une seule fois. Dans notre exemple,&amp;nbsp;''niveau1''&amp;nbsp;et&amp;nbsp;''niveau2''&amp;nbsp;seront supprimés. Si&amp;nbsp;''niveau1''&amp;nbsp;n'est pas vide, la commande renverra un message d'erreur.

|-
| $ rm -Rf repertoire
| Supprime le répertoire&amp;nbsp;''repertoire'', même s'il n'est pas vide.

|}

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:19 (UTC)

[[Category:Commandes]]</text>
      <sha1>es6ig4ar5o3b86nuk2kdapuppt1tlb3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>153</id>
      <parentid>18</parentid>
      <timestamp>2010-01-23T12:38:50Z</timestamp>
      <contributor>
        <username>Wetaskiwin</username>
        <id>10</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3028">{{Stable}}

[[Commandes_de_base|Retour Commandes de base]]

= Gestion des répertoires. =

{| class=&quot;prettytable&quot;
! &lt;center&gt;'''LISTE_DES_COMMANDES'''&lt;/center&gt;
! &lt;center&gt;'''EFFET'''&lt;/center&gt;

|-
| $ cd /
| Revenir dans le répertoire racine.

|-
| $ cd /anymhere/somewhere
| Se rendre dans le répertoire&amp;nbsp;''somewhere''.

|-
| $ cd ~
| Revenir dans le répertoire principal (de l'utilisateur... /home/vous ou si vous êtes root /root)

|-
| $ cd ..
| Se rendre dans le répertoire situé au-dessus du répertoire courant.

|-
| $ cp -r source destination
| Copier l'ensemble d'un répertoire et de ses sous-répertoires.

|-
| $ dir repertoire
| Liste le contenu du répertoire&amp;nbsp;''repertoire''.

|-
| $ du -s repertoire
| Donne la taille du répertoire&amp;nbsp;''rep''. Avec l'option h (du -sh repertoire) vous aurez la réponse en Mo. &quot;h&quot; signifie &quot;human&quot; qui est donc plus facilement lisible par l'homme...

|-
| $ du -sh
| Mesure la taille du répertoire depuis lequel vous tapez la commande

|-
| $ ls
| Les répertoires ne sont rien d'autre que des fichiers d'un type particulier. La commande&amp;nbsp;''ls''&amp;nbsp;leur est donc applicable avec toutes ses options.

|-
| $ mkdir titi
| Pour créer le répertoire&amp;nbsp;''titi''&amp;nbsp;dans le répertoire courant.

|-
| $ mkdir -p rep1/rep2/rep3
| crée rep3 en créant rep1 et rep2 s'ils n'existent pas.

|-
| $ mv source destination
| Déplacer ou/et renommer le répertoire mentionné en&amp;nbsp;''source''. Pour renommer le répertoire, indiquer son nouveau nom à la place de&amp;nbsp;''destination''.

|-
| $ pwd
| Affiche le nom (et le chemin) du répertoire courant. La commande&amp;nbsp;''pwd''&amp;nbsp;est utile lorsqu'on désire obtenir le chemin absolu du répertoire courant.

|-
| $ vdir rep
| Liste le contenu de&amp;nbsp;''rep''&amp;nbsp;en mode verbeux (avec plus de détail que la commande&amp;nbsp;''dir'').


|-
|
| '''Avertissement''' '''Les commandes rm sont à manipuler avec beaucoup d'attention...'''

|-
| $ rm -d
| Supprime le répertoire, qu'il soit plein ou non.

|-
| $ rm -r niveau1
| Supprime un répertoire et ses sous répertoires (/niveau1/niveau2/niveau3/etc...)

|-
| $ rm -rf /repertoire
| Supprime&amp;nbsp;''repertoire''&amp;nbsp;sans demander de confirmation. Si vous utilisez en tant que root la commande&amp;nbsp;''rm -rf /'', la totalité des fichiers du système est supprimée en une fraction de seconde, '''sans possibilité de récupération'''. '''Soyez extrêmement vigilent avec cette commande !'''

|-
| $ rmdir /repertoire
| Supprime&amp;nbsp;''/repertoire''&amp;nbsp;si et seulement si&amp;nbsp;''/rep''&amp;nbsp;est vide.

|-
| $ rmdir -p /niveau1/niveau2
| Supprime une hiérarchie de répertoires vides en une seule fois. Dans notre exemple,&amp;nbsp;''niveau1''&amp;nbsp;et&amp;nbsp;''niveau2''&amp;nbsp;seront supprimés. Si&amp;nbsp;''niveau1''&amp;nbsp;n'est pas vide, la commande renverra un message d'erreur.

|-
| $ rm -Rf repertoire
| Supprime le répertoire&amp;nbsp;''repertoire'', même s'il n'est pas vide.

|}

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:19 (UTC)

[[Category:Commandes]]</text>
      <sha1>hr0sr7jgbvprtfeectpejcst66mhfrk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>204</id>
      <parentid>153</parentid>
      <timestamp>2010-01-23T19:59:04Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="3029">{{Stable}}

[[Commandes_de_base|Retour Commandes de base]]

= Gestion des répertoires. =

{| class=&quot;prettytable&quot;
! &lt;center&gt;'''LISTE_DES_COMMANDES'''&lt;/center&gt;
! &lt;center&gt;'''EFFET'''&lt;/center&gt;

|-
| $ cd /
| Revenir dans le répertoire racine.

|-
| $ cd /anymhere/somewhere
| Se rendre dans le répertoire&amp;nbsp;''somewhere''.

|-
| $ cd ~
| Revenir dans le répertoire principal (de l'utilisateur... /home/vous ou si vous êtes root /root)

|-
| $ cd ..
| Se rendre dans le répertoire situé au-dessus du répertoire courant.

|-
| $ cp -r source destination
| Copier l'ensemble d'un répertoire et de ses sous-répertoires.

|-
| $ dir repertoire
| Liste le contenu du répertoire&amp;nbsp;''repertoire''.

|-
| $ du -s repertoire
| Donne la taille du répertoire&amp;nbsp;''rep''. Avec l'option h (du -sh repertoire) vous aurez la réponse en Mo. &quot;h&quot; signifie &quot;human&quot; qui est donc plus facilement lisible par l'homme...

|-
| $ du -sh
| Mesure la taille du répertoire depuis lequel vous tapez la commande

|-
| $ ls
| Les répertoires ne sont rien d'autre que des fichiers d'un type particulier. La commande&amp;nbsp;''ls''&amp;nbsp;leur est donc applicable avec toutes ses options.

|-
| $ mkdir titi
| Pour créer le répertoire&amp;nbsp;''titi''&amp;nbsp;dans le répertoire courant.

|-
| $ mkdir -p rep1/rep2/rep3
| crée rep3 en créant rep1 et rep2 s'ils n'existent pas.

|-
| $ mv source destination
| Déplacer ou/et renommer le répertoire mentionné en&amp;nbsp;''source''. Pour renommer le répertoire, indiquer son nouveau nom à la place de&amp;nbsp;''destination''.

|-
| $ pwd
| Affiche le nom (et le chemin) du répertoire courant. La commande&amp;nbsp;''pwd''&amp;nbsp;est utile lorsqu'on désire obtenir le chemin absolu du répertoire courant.

|-
| $ vdir rep
| Liste le contenu de&amp;nbsp;''rep''&amp;nbsp;en mode verbeux (avec plus de détail que la commande&amp;nbsp;''dir'').


|-
|
| '''Avertissement''' '''Les commandes rm sont à manipuler avec beaucoup d'attention...'''

|-
| $ rm -d
| Supprime le répertoire, qu'il soit plein ou non.

|-
| $ rm -r niveau1
| Supprime un répertoire et ses sous répertoires (/niveau1/niveau2/niveau3/etc...)

|-
| $ rm -rf /repertoire
| Supprime&amp;nbsp;''repertoire''&amp;nbsp;sans demander de confirmation. Si vous utilisez en tant que root la commande&amp;nbsp;''rm -rf /'', la totalité des fichiers du système est supprimée en une fraction de seconde, '''sans possibilité de récupération'''. '''Soyez extrêmement vigilants avec cette commande !'''

|-
| $ rmdir /repertoire
| Supprime&amp;nbsp;''/repertoire''&amp;nbsp;si et seulement si&amp;nbsp;''/rep''&amp;nbsp;est vide.

|-
| $ rmdir -p /niveau1/niveau2
| Supprime une hiérarchie de répertoires vides en une seule fois. Dans notre exemple,&amp;nbsp;''niveau1''&amp;nbsp;et&amp;nbsp;''niveau2''&amp;nbsp;seront supprimés. Si&amp;nbsp;''niveau1''&amp;nbsp;n'est pas vide, la commande renverra un message d'erreur.

|-
| $ rm -Rf repertoire
| Supprime le répertoire&amp;nbsp;''repertoire'', même s'il n'est pas vide.

|}

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:19 (UTC)

[[Category:Commandes]]</text>
      <sha1>4zkvp10bavuy3proave57yqkwiv3xda</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>205</id>
      <parentid>204</parentid>
      <timestamp>2010-01-23T20:02:17Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="3024">{{Stable}}

[[Commandes_de_base|Retour Commandes de base]]

= Gestion des répertoires. =

{| class=&quot;prettytable&quot;
! &lt;center&gt;'''LISTE_DES_COMMANDES'''&lt;/center&gt;
! &lt;center&gt;'''EFFET'''&lt;/center&gt;

|-
| $ cd /
| Revenir dans le répertoire racine.

|-
| $ cd anywhere/somewhere
| Se rendre dans le répertoire&amp;nbsp;''somewhere''.

|-
| $ cd ~
| Revenir dans le répertoire principal (de l'utilisateur... /home/vous ou si vous êtes root /root)

|-
| $ cd ..
| Se rendre dans le répertoire situé au-dessus du répertoire courant.

|-
| $ cp -r source destination
| Copier l'ensemble d'un répertoire et de ses sous-répertoires.

|-
| $ dir repertoire
| Liste le contenu du répertoire&amp;nbsp;''repertoire''.

|-
| $ du -s repertoire
| Donne la taille du répertoire&amp;nbsp;''rep''. Avec l'option h (du -sh repertoire) vous aurez la réponse en Mo. &quot;h&quot; signifie &quot;human&quot; qui est donc plus facilement lisible par l'homme...

|-
| $ du -sh
| Mesure la taille du répertoire depuis lequel vous tapez la commande

|-
| $ ls
| Les répertoires ne sont rien d'autre que des fichiers d'un type particulier. La commande&amp;nbsp;''ls''&amp;nbsp;leur est donc applicable avec toutes ses options.

|-
| $ mkdir titi
| Pour créer le répertoire&amp;nbsp;''titi''&amp;nbsp;dans le répertoire courant.

|-
| $ mkdir -p rep1/rep2/rep3
| crée rep3 en créant rep1 et rep2 s'ils n'existent pas.

|-
| $ mv source destination
| Déplacer ou/et renommer le répertoire mentionné en&amp;nbsp;''source''. Pour renommer le répertoire, indiquer son nouveau nom à la place de&amp;nbsp;''destination''.

|-
| $ pwd
| Affiche le nom (et le chemin) du répertoire courant. La commande&amp;nbsp;''pwd''&amp;nbsp;est utile lorsqu'on désire obtenir le chemin absolu du répertoire courant.

|-
| $ vdir rep
| Liste le contenu de&amp;nbsp;''rep''&amp;nbsp;en mode verbeux (avec plus de détail que la commande&amp;nbsp;''dir'').


|-
|
| '''Avertissement''' '''Les commandes rm sont à manipuler avec beaucoup d'attention...'''

|-
| $ rm -d
| Supprime le répertoire, qu'il soit plein ou non.

|-
| $ rm -r niveau1
| Supprime un répertoire et ses sous répertoires (niveau1/niveau2/niveau3/etc...)

|-
| $ rm -rf repertoire
| Supprime&amp;nbsp;''repertoire''&amp;nbsp;sans demander de confirmation. Si vous utilisez en tant que root la commande&amp;nbsp;''rm -rf /'', la totalité des fichiers du système est supprimée en une fraction de seconde, '''sans possibilité de récupération'''. '''Soyez extrêmement vigilants avec cette commande !'''

|-
| $ rmdir repertoire
| Supprime&amp;nbsp;''/repertoire''&amp;nbsp;si et seulement si&amp;nbsp;''/rep''&amp;nbsp;est vide.

|-
| $ rmdir -p niveau1/niveau2
| Supprime une hiérarchie de répertoires vides en une seule fois. Dans notre exemple,&amp;nbsp;''niveau1''&amp;nbsp;et&amp;nbsp;''niveau2''&amp;nbsp;seront supprimés. Si&amp;nbsp;''niveau1''&amp;nbsp;n'est pas vide, la commande renverra un message d'erreur.

|-
| $ rm -Rf repertoire
| Supprime le répertoire&amp;nbsp;''repertoire'', même s'il n'est pas vide.

|}

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:19 (UTC)

[[Category:Commandes]]</text>
      <sha1>6u47l5l76fwxritvlro6yfzw87oz2ox</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>483</id>
      <parentid>205</parentid>
      <timestamp>2010-01-29T07:57:17Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3186">{{Stable}}

[[Commandes_de_base|Retour Commandes de base]]
&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;
= Gestion des répertoires. =

{| class=&quot;prettytable&quot;
! &lt;center&gt;'''LISTE_DES_COMMANDES'''&lt;/center&gt;
! &lt;center&gt;'''EFFET'''&lt;/center&gt;

|-
| $ cd /
| Revenir dans le répertoire racine.

|-
| $ cd anywhere/somewhere
| Se rendre dans le répertoire&amp;nbsp;''somewhere''.

|-
| $ cd ~
| Revenir dans le répertoire principal (de l'utilisateur... /home/vous ou si vous êtes root /root)

|-
| $ cd ..
| Se rendre dans le répertoire situé au-dessus du répertoire courant.

|-
| $ cp -r source destination
| Copier l'ensemble d'un répertoire et de ses sous-répertoires.

|-
| $ dir repertoire
| Liste le contenu du répertoire&amp;nbsp;''repertoire''.

|-
| $ du -s repertoire
| Donne la taille du répertoire&amp;nbsp;''rep''. Avec l'option h (du -sh repertoire) vous aurez la réponse en Mo. &quot;h&quot; signifie &quot;human&quot; qui est donc plus facilement lisible par l'homme...

|-
| $ du -sh
| Mesure la taille du répertoire depuis lequel vous tapez la commande

|-
| $ ls
| Les répertoires ne sont rien d'autre que des fichiers d'un type particulier. La commande&amp;nbsp;''ls''&amp;nbsp;leur est donc applicable avec toutes ses options.

|-
| $ mkdir titi
| Pour créer le répertoire&amp;nbsp;''titi''&amp;nbsp;dans le répertoire courant.

|-
| $ mkdir -p rep1/rep2/rep3
| crée rep3 en créant rep1 et rep2 s'ils n'existent pas.

|-
| $ mv source destination
| Déplacer ou/et renommer le répertoire mentionné en&amp;nbsp;''source''. Pour renommer le répertoire, indiquer son nouveau nom à la place de&amp;nbsp;''destination''.

|-
| $ pwd
| Affiche le nom (et le chemin) du répertoire courant. La commande&amp;nbsp;''pwd''&amp;nbsp;est utile lorsqu'on désire obtenir le chemin absolu du répertoire courant.

|-
| $ vdir rep
| Liste le contenu de&amp;nbsp;''rep''&amp;nbsp;en mode verbeux (avec plus de détail que la commande&amp;nbsp;''dir'').


|-
|
| '''Avertissement''' '''Les commandes rm sont à manipuler avec beaucoup d'attention...'''

|-
| $ rm -d
| Supprime le répertoire, qu'il soit plein ou non.

|-
| $ rm -r niveau1
| Supprime un répertoire et ses sous répertoires (niveau1/niveau2/niveau3/etc...)

|-
| $ rm -rf repertoire
| Supprime&amp;nbsp;''repertoire''&amp;nbsp;sans demander de confirmation. Si vous utilisez en tant que root la commande&amp;nbsp;''rm -rf /'', la totalité des fichiers du système est supprimée en une fraction de seconde, '''sans possibilité de récupération'''. '''Soyez extrêmement vigilants avec cette commande !'''

|-
| $ rmdir repertoire
| Supprime&amp;nbsp;''/repertoire''&amp;nbsp;si et seulement si&amp;nbsp;''/rep''&amp;nbsp;est vide.

|-
| $ rmdir -p niveau1/niveau2
| Supprime une hiérarchie de répertoires vides en une seule fois. Dans notre exemple,&amp;nbsp;''niveau1''&amp;nbsp;et&amp;nbsp;''niveau2''&amp;nbsp;seront supprimés. Si&amp;nbsp;''niveau1''&amp;nbsp;n'est pas vide, la commande renverra un message d'erreur.

|-
| $ rm -Rf repertoire
| Supprime le répertoire&amp;nbsp;''repertoire'', même s'il n'est pas vide.

|}

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:19 (UTC)

[[Category:Commandes]]</text>
      <sha1>ig6jfdyxn9m79ti097h8ejpcga0x3qm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>511</id>
      <parentid>483</parentid>
      <timestamp>2010-01-29T13:40:19Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3139">{{Stable}}

&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;
= Gestion des répertoires. =

{| class=&quot;prettytable&quot;
! &lt;center&gt;'''LISTE_DES_COMMANDES'''&lt;/center&gt;
! &lt;center&gt;'''EFFET'''&lt;/center&gt;

|-
| $ cd /
| Revenir dans le répertoire racine.

|-
| $ cd anywhere/somewhere
| Se rendre dans le répertoire&amp;nbsp;''somewhere''.

|-
| $ cd ~
| Revenir dans le répertoire principal (de l'utilisateur... /home/vous ou si vous êtes root /root)

|-
| $ cd ..
| Se rendre dans le répertoire situé au-dessus du répertoire courant.

|-
| $ cp -r source destination
| Copier l'ensemble d'un répertoire et de ses sous-répertoires.

|-
| $ dir repertoire
| Liste le contenu du répertoire&amp;nbsp;''repertoire''.

|-
| $ du -s repertoire
| Donne la taille du répertoire&amp;nbsp;''rep''. Avec l'option h (du -sh repertoire) vous aurez la réponse en Mo. &quot;h&quot; signifie &quot;human&quot; qui est donc plus facilement lisible par l'homme...

|-
| $ du -sh
| Mesure la taille du répertoire depuis lequel vous tapez la commande

|-
| $ ls
| Les répertoires ne sont rien d'autre que des fichiers d'un type particulier. La commande&amp;nbsp;''ls''&amp;nbsp;leur est donc applicable avec toutes ses options.

|-
| $ mkdir titi
| Pour créer le répertoire&amp;nbsp;''titi''&amp;nbsp;dans le répertoire courant.

|-
| $ mkdir -p rep1/rep2/rep3
| crée rep3 en créant rep1 et rep2 s'ils n'existent pas.

|-
| $ mv source destination
| Déplacer ou/et renommer le répertoire mentionné en&amp;nbsp;''source''. Pour renommer le répertoire, indiquer son nouveau nom à la place de&amp;nbsp;''destination''.

|-
| $ pwd
| Affiche le nom (et le chemin) du répertoire courant. La commande&amp;nbsp;''pwd''&amp;nbsp;est utile lorsqu'on désire obtenir le chemin absolu du répertoire courant.

|-
| $ vdir rep
| Liste le contenu de&amp;nbsp;''rep''&amp;nbsp;en mode verbeux (avec plus de détail que la commande&amp;nbsp;''dir'').


|-
|
| '''Avertissement''' '''Les commandes rm sont à manipuler avec beaucoup d'attention...'''

|-
| $ rm -d
| Supprime le répertoire, qu'il soit plein ou non.

|-
| $ rm -r niveau1
| Supprime un répertoire et ses sous répertoires (niveau1/niveau2/niveau3/etc...)

|-
| $ rm -rf repertoire
| Supprime&amp;nbsp;''repertoire''&amp;nbsp;sans demander de confirmation. Si vous utilisez en tant que root la commande&amp;nbsp;''rm -rf /'', la totalité des fichiers du système est supprimée en une fraction de seconde, '''sans possibilité de récupération'''. '''Soyez extrêmement vigilants avec cette commande !'''

|-
| $ rmdir repertoire
| Supprime&amp;nbsp;''/repertoire''&amp;nbsp;si et seulement si&amp;nbsp;''/rep''&amp;nbsp;est vide.

|-
| $ rmdir -p niveau1/niveau2
| Supprime une hiérarchie de répertoires vides en une seule fois. Dans notre exemple,&amp;nbsp;''niveau1''&amp;nbsp;et&amp;nbsp;''niveau2''&amp;nbsp;seront supprimés. Si&amp;nbsp;''niveau1''&amp;nbsp;n'est pas vide, la commande renverra un message d'erreur.

|-
| $ rm -Rf repertoire
| Supprime le répertoire&amp;nbsp;''repertoire'', même s'il n'est pas vide.

|}

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:19 (UTC)

[[Category:Commandes]]</text>
      <sha1>n152lq0hf89xgs1y5thu46bjijypa2p</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1079</id>
      <parentid>511</parentid>
      <timestamp>2010-02-11T08:34:31Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3147">{{Stable}}

&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;
= Gestion des répertoires. =

{| class=&quot;prettytable&quot;
! &lt;center&gt;'''LISTE_DES_COMMANDES'''&lt;/center&gt;
! &lt;center&gt;'''EFFET'''&lt;/center&gt;

|-
| $ cd /
| Revenir dans le répertoire racine.

|-
| $ cd anywhere/somewhere
| Se rendre dans le répertoire&amp;nbsp;''somewhere''.

|-
| $ cd ~
| Revenir dans le répertoire principal (de l'utilisateur... /home/vous ou si vous êtes root /root)

|-
| $ cd ..
| Se rendre dans le répertoire situé au-dessus du répertoire courant.

|-
| $ cp -r source destination
| Copier l'ensemble d'un répertoire et de ses sous-répertoires.

|-
| $ dir repertoire
| Liste le contenu du répertoire&amp;nbsp;''repertoire''.

|-
| $ du -s repertoire
| Donne la taille du répertoire&amp;nbsp;''rep''. Avec l'option h (du -sh repertoire) vous aurez la réponse en Mo. &quot;h&quot; signifie &quot;human&quot; qui est donc plus facilement lisible par l'homme...

|-
| $ du -sh
| Mesure la taille du répertoire depuis lequel vous tapez la commande

|-
| $ ls
| Les répertoires ne sont rien d'autre que des fichiers d'un type particulier. La commande&amp;nbsp;''ls''&amp;nbsp;leur est donc applicable avec toutes ses options.

|-
| $ mkdir titi
| Pour créer le répertoire&amp;nbsp;''titi''&amp;nbsp;dans le répertoire courant.

|-
| $ mkdir -p rep1/rep2/rep3
| crée rep3 en créant rep1 et rep2 s'ils n'existent pas.

|-
| $ mv source destination
| Déplacer ou/et renommer le répertoire mentionné en&amp;nbsp;''source''. Pour renommer le répertoire, indiquer son nouveau nom à la place de&amp;nbsp;''destination''.

|-
| $ pwd
| Affiche le nom (et le chemin) du répertoire courant. La commande&amp;nbsp;''pwd''&amp;nbsp;est utile lorsqu'on désire obtenir le chemin absolu du répertoire courant.

|-
| $ vdir rep
| Liste le contenu de&amp;nbsp;''rep''&amp;nbsp;en mode verbeux (avec plus de détail que la commande&amp;nbsp;''dir'').


|-
|
| '''Avertissement''' '''Les commandes rm sont à manipuler avec beaucoup d'attention...'''

|-
| $ rm -d
| Supprime le répertoire, qu'il soit plein ou non.

|-
| $ rm -r niveau1
| Supprime un répertoire et ses sous répertoires (niveau1/niveau2/niveau3/etc...)

|-
| $ rm -rf repertoire
| Supprime&amp;nbsp;''repertoire''&amp;nbsp;sans demander de confirmation. Si vous utilisez en tant que root la commande&amp;nbsp;''rm -rf /'', la totalité des fichiers du système est supprimée en une fraction de seconde, '''sans possibilité de récupération'''. '''Soyez extrêmement vigilants avec cette commande !'''

|-
| $ rmdir repertoire
| Supprime&amp;nbsp;''/repertoire''&amp;nbsp;si et seulement si&amp;nbsp;''/rep''&amp;nbsp;est vide.

|-
| $ rmdir -p niveau1/niveau2
| Supprime une hiérarchie de répertoires vides en une seule fois. Dans notre exemple,&amp;nbsp;''niveau1''&amp;nbsp;et&amp;nbsp;''niveau2''&amp;nbsp;seront supprimés. Si&amp;nbsp;''niveau1''&amp;nbsp;n'est pas vide, la commande renverra un message d'erreur.

|-
| $ rm -Rf repertoire
| Supprime le répertoire&amp;nbsp;''repertoire'', même s'il n'est pas vide.

|}

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:19 (UTC)

[[Category:Commandes de base]]</text>
      <sha1>jnzksyxbmn72p49zkt8wfjjss4agb37</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2246</id>
      <parentid>1079</parentid>
      <timestamp>2010-10-26T20:39:03Z</timestamp>
      <contributor>
        <username>ThomasPhan</username>
        <id>72</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3154">{{Stable}}

&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;
= Gestion des répertoires. =

{| class=&quot;prettytable&quot;
! &lt;center&gt;'''LISTE_DES_COMMANDES'''&lt;/center&gt;
! &lt;center&gt;'''EFFET'''&lt;/center&gt;

|-
| $ cd /
| Revenir dans le répertoire racine.

|-
| $ cd anywhere/somewhere
| Se rendre dans le répertoire&amp;nbsp;''somewhere''.

|-
| $ cd ~
| Revenir dans le répertoire principal (de l'utilisateur... /home/vous ou si vous êtes root /root)

|-
| $ cd ..
| Se rendre dans le répertoire situé au-dessus du répertoire courant.

|-
| $ cp -r source destination
| Copier l'ensemble d'un répertoire et de ses sous-répertoires.

|-
| $ dir repertoire
| Lister le contenu du répertoire&amp;nbsp;''repertoire''.

|-
| $ du -s repertoire
| Donner la taille du répertoire&amp;nbsp;''rep''. Avec l'option h (du -sh repertoire) vous aurez la réponse en Mo. &quot;h&quot; signifie &quot;human&quot; qui est donc plus facilement lisible par l'homme...

|-
| $ du -sh
| Mesurer la taille du répertoire depuis lequel vous tapez la commande

|-
| $ ls
| Les répertoires ne sont rien d'autre que des fichiers d'un type particulier. La commande&amp;nbsp;''ls''&amp;nbsp;leur est donc applicable avec toutes ses options.

|-
| $ mkdir titi
| Créer le répertoire&amp;nbsp;''titi''&amp;nbsp;dans le répertoire courant.

|-
| $ mkdir -p rep1/rep2/rep3
| Créer rep3 en créant rep1 et rep2 s'ils n'existent pas.

|-
| $ mv source destination
| Déplacer ou/et renommer le répertoire mentionné en&amp;nbsp;''source''. Pour renommer le répertoire, indiquer son nouveau nom à la place de&amp;nbsp;''destination''.

|-
| $ pwd
| Afficher le nom (et le chemin) du répertoire courant. La commande&amp;nbsp;''pwd''&amp;nbsp;est utile lorsqu'on désire obtenir le chemin absolu du répertoire courant.

|-
| $ vdir rep
| Lister le contenu de&amp;nbsp;''rep''&amp;nbsp;en mode verbeux (avec plus de détail que la commande&amp;nbsp;''dir'').


|-
|
| '''Avertissement''' '''Les commandes rm sont à manipuler avec beaucoup d'attention...'''

|-
| $ rm -d
| Supprimer le répertoire, qu'il soit plein ou non.

|-
| $ rm -r niveau1
| Supprimer un répertoire et ses sous répertoires (niveau1/niveau2/niveau3/etc...)

|-
| $ rm -rf repertoire
| Supprimer&amp;nbsp;''repertoire''&amp;nbsp;sans demander de confirmation. Si vous utilisez en tant que root la commande&amp;nbsp;''rm -rf /'', la totalité des fichiers du système est supprimée en une fraction de seconde, '''sans possibilité de récupération'''. '''Soyez extrêmement vigilants avec cette commande !'''

|-
| $ rmdir repertoire
| Supprimer&amp;nbsp;''/repertoire''&amp;nbsp;si et seulement si&amp;nbsp;''/rep''&amp;nbsp;est vide.

|-
| $ rmdir -p niveau1/niveau2
| Supprimer une hiérarchie de répertoires vides en une seule fois. Dans notre exemple,&amp;nbsp;''niveau1''&amp;nbsp;et&amp;nbsp;''niveau2''&amp;nbsp;seront supprimés. Si&amp;nbsp;''niveau1''&amp;nbsp;n'est pas vide, la commande renverra un message d'erreur.

|-
| $ rm -Rf repertoire
| Supprimer le répertoire&amp;nbsp;''repertoire'', même s'il n'est pas vide.

|}

[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:19 (UTC)

[[Category:Commandes de base]]</text>
      <sha1>6363qv79mbyo1678w1beqo8w1os2pbm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2969</id>
      <parentid>2246</parentid>
      <timestamp>2011-05-07T11:54:10Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3681">{{Stable}}

&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;
= Gestion des répertoires. =

{| class=&quot;prettytable&quot;
! &lt;center&gt;'''LISTE_DES_COMMANDES'''&lt;/center&gt;
! &lt;center&gt;'''EFFET'''&lt;/center&gt;

|-
| $ cd /
| Revenir dans le répertoire racine.

|-
| $ cd anywhere/somewhere
| Se rendre dans le répertoire&amp;nbsp;''somewhere''.

|-
| $ cd ~
| Revenir dans le répertoire principal (de l'utilisateur... /home/vous ou si vous êtes root /root)

|-
| $ cd ..
| Se rendre dans le répertoire situé au-dessus du répertoire courant.

|-
| $ cp -r source destination
| Copier l'ensemble d'un répertoire et de ses sous-répertoires.

|-
| $ dir repertoire
| Lister le contenu du répertoire&amp;nbsp;''repertoire''.

|-
| $ du -s repertoire
| Donner la taille du répertoire&amp;nbsp;''rep''. Avec l'option h (du -sh repertoire) vous aurez la réponse en Mo. &quot;h&quot; signifie &quot;human&quot; qui est donc plus facilement lisible par l'homme...

|-
| $ du -sh
| Mesurer la taille du répertoire depuis lequel vous tapez la commande

|-
| $ ls
| Les répertoires ne sont rien d'autre que des fichiers d'un type particulier. La commande&amp;nbsp;''ls''&amp;nbsp;leur est donc applicable avec toutes ses options.

|-
| $ mkdir titi
| Créer le répertoire&amp;nbsp;''titi''&amp;nbsp;dans le répertoire courant.

|-
| $ mkdir -p rep1/rep2/rep3
| Créer rep3 en créant rep1 et rep2 s'ils n'existent pas.

|-
| $ mv source destination
| Déplacer ou/et renommer le répertoire mentionné en&amp;nbsp;''source''. Pour renommer le répertoire, indiquer son nouveau nom à la place de&amp;nbsp;''destination''.

|-
| $ pwd
| Afficher le nom (et le chemin) du répertoire courant. La commande&amp;nbsp;''pwd''&amp;nbsp;est utile lorsqu'on désire obtenir le chemin absolu du répertoire courant.

|-
| $ vdir rep
| Lister le contenu de&amp;nbsp;''rep''&amp;nbsp;en mode verbeux (avec plus de détail que la commande&amp;nbsp;''dir'').


|-
|
| '''Avertissement''' '''Les commandes rm sont à manipuler avec beaucoup d'attention...'''

|-
| $ rm -d
| Supprimer le répertoire, qu'il soit plein ou non.

|-
| $ rm -r niveau1
| Supprimer un répertoire et ses sous répertoires (niveau1/niveau2/niveau3/etc...)

|-
| $ rm -rf repertoire
| Supprimer&amp;nbsp;''repertoire''&amp;nbsp;sans demander de confirmation. Si vous utilisez en tant que root la commande&amp;nbsp;''rm -rf /'', la totalité des fichiers du système est supprimée en une fraction de seconde, '''sans possibilité de récupération'''. '''Soyez extrêmement vigilants avec cette commande !'''

|-
| $ rmdir repertoire
| Supprimer&amp;nbsp;''/repertoire''&amp;nbsp;si et seulement si&amp;nbsp;''/rep''&amp;nbsp;est vide.

|-
| $ rmdir -p niveau1/niveau2
| Supprimer une hiérarchie de répertoires vides en une seule fois. Dans notre exemple,&amp;nbsp;''niveau1''&amp;nbsp;et&amp;nbsp;''niveau2''&amp;nbsp;seront supprimés. Si&amp;nbsp;''niveau1''&amp;nbsp;n'est pas vide, la commande renverra un message d'erreur.

|-
| $ rm -Rf repertoire
| Supprimer le répertoire&amp;nbsp;''repertoire'', même s'il n'est pas vide.

|}

== Truc pour effacer récursivement des répertoires ==


Voici un exemple simple d'utilisation de ''rm'' pour supprimer récursivement des répertoires de subversion (.svn)
Nous utiliserons la commande find pour trouver tous les répertoires .svn à partir du répertoire courant:

 $ find . -type d -name .svn
 .svn
 ./extensions/GlobalBlocking/.svn
 etc...

Il est possible de passer directement à ces répertoires la commande rm, en utilisant le caractère spécial ` (Alt Gr + 7)

 $ rm -r `find . -type d -name .svn`



[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:19 (UTC)

[[Category:Commandes de base]]</text>
      <sha1>sbtl5xal0ghcihetmdn26axw1y9mxvz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4108</id>
      <parentid>2969</parentid>
      <timestamp>2012-04-28T08:47:05Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="3712">{{Stable}}

&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;
= Gestion des répertoires. =

{| class=&quot;prettytable&quot;
! &lt;center&gt;'''LISTE_DES_COMMANDES'''&lt;/center&gt;
! &lt;center&gt;'''EFFET'''&lt;/center&gt;

|-
| $ cd /
| Revenir dans le répertoire racine.

|-
| $ cd anywhere/somewhere
| Se rendre dans le répertoire&amp;nbsp;''somewhere''.

|-
| $ cd ~
| Revenir dans le répertoire principal (de l'utilisateur... /home/vous ou si vous êtes root /root)

|-
| $ cd ..
| Se rendre dans le répertoire situé au-dessus du répertoire courant.

|-
| $ cp -r source destination
| Copier l'ensemble d'un répertoire et de ses sous-répertoires.

|-
| $ dir repertoire
| Lister le contenu du répertoire&amp;nbsp;''repertoire''.

|-
| $ du -s repertoire
| Donner la taille du répertoire&amp;nbsp;''rep''. Avec l'option h (du -sh repertoire) vous aurez la réponse en Mo. &quot;h&quot; signifie &quot;human&quot; qui est donc plus facilement lisible par l'homme...

|-
| $ du -sh
| Mesurer la taille du répertoire depuis lequel vous tapez la commande

|-
| $ ls
| Les répertoires ne sont rien d'autre que des fichiers d'un type particulier. La commande&amp;nbsp;''ls''&amp;nbsp;leur est donc applicable avec toutes ses options.

|-
| $ mkdir titi
| Créer le répertoire&amp;nbsp;''titi''&amp;nbsp;dans le répertoire courant.

|-
| $ mkdir -p rep1/rep2/rep3
| Créer rep3 en créant rep1 et rep2 s'ils n'existent pas.

|-
| $ mv source destination
| Déplacer ou/et renommer le répertoire mentionné en&amp;nbsp;''source''. Pour renommer le répertoire, indiquer son nouveau nom à la place de&amp;nbsp;''destination''.

|-
| $ pwd
| Afficher le nom (et le chemin) du répertoire courant. La commande&amp;nbsp;''pwd''&amp;nbsp;est utile lorsqu'on désire obtenir le chemin absolu du répertoire courant.

|-
| $ vdir rep
| Lister le contenu de&amp;nbsp;''rep''&amp;nbsp;en mode verbeux (avec plus de détail que la commande&amp;nbsp;''dir'').


|-
|
| '''Avertissement''' '''Les commandes rm sont à manipuler avec beaucoup d'attention...'''

|-
| $ rm -d
| Supprimer le répertoire, qu'il soit plein ou non.

|-
| $ rm -r niveau1
| Supprimer un répertoire et ses sous répertoires (niveau1/niveau2/niveau3/etc...)

|-
| $ rm -rf repertoire
| Supprimer&amp;nbsp;''repertoire''&amp;nbsp;sans demander de confirmation. Si vous utilisez en tant que root la commande&amp;nbsp;''rm -rf /'', la totalité des fichiers du système est supprimée en une fraction de seconde, '''sans possibilité de récupération'''. '''Soyez extrêmement vigilants avec cette commande !'''

|-
| $ rmdir repertoire
| Supprimer&amp;nbsp;''/repertoire''&amp;nbsp;si et seulement si&amp;nbsp;''/rep''&amp;nbsp;est vide.

|-
| $ rmdir -p niveau1/niveau2
| Supprimer une hiérarchie de répertoires vides en une seule fois. Dans notre exemple,&amp;nbsp;''niveau1''&amp;nbsp;et&amp;nbsp;''niveau2''&amp;nbsp;seront supprimés. Si&amp;nbsp;''niveau1''&amp;nbsp;n'est pas vide, la commande renverra un message d'erreur.

|-
| $ rm -Rf repertoire
| Supprimer le répertoire&amp;nbsp;''repertoire'', même s'il n'est pas vide.

|}

== Truc pour effacer récursivement des répertoires ==


Voici un exemple simple d'utilisation de ''rm'' pour supprimer récursivement des répertoires de subversion (.svn)
Nous utiliserons la commande find pour trouver tous les répertoires .svn à partir du répertoire courant:

 $ find . -type d -name .svn
 .svn
 ./extensions/GlobalBlocking/.svn
 etc...

Il est possible de passer directement à ces répertoires la commande rm, en utilisant le caractère spécial ` (Alt Gr + 7)

 $ rm -r `find . -type d -name .svn`



[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:19 (UTC)

[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>1ecxzngz71vi1kwhg35o7aghw5nusge</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4543</id>
      <parentid>4108</parentid>
      <timestamp>2012-10-26T06:42:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="3714">{{Stable}}

&lt;categorytree mode=pages style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;&quot;&gt;Commandes&lt;/categorytree&gt;
= Gestion des répertoires. =

{| class=&quot;prettytable&quot;
! &lt;center&gt;'''LISTE_DES_COMMANDES'''&lt;/center&gt;
! &lt;center&gt;'''EFFET'''&lt;/center&gt;

|-
| $ cd /
| Revenir dans le répertoire racine.

|-
| $ cd anywhere/somewhere
| Se rendre dans le répertoire&amp;nbsp;''somewhere''.

|-
| $ cd ~
| Revenir dans le répertoire principal (de l'utilisateur... /home/vous ou si vous êtes root /root)

|-
| $ cd ..
| Se rendre dans le répertoire situé au-dessus du répertoire courant.

|-
| $ cp -r source destination
| Copier l'ensemble d'un répertoire et de ses sous-répertoires.

|-
| $ dir repertoire
| Lister le contenu du répertoire&amp;nbsp;''repertoire''.

|-
| $ du -s repertoire
| Donner la taille du répertoire&amp;nbsp;''rep''. Avec l'option h (du -sh repertoire) vous aurez la réponse en Mo. &quot;h&quot; signifie &quot;human&quot; qui est donc plus facilement lisible par l'homme...

|-
| $ du -sh
| Mesurer la taille du répertoire depuis lequel vous tapez la commande

|-
| $ ls
| Les répertoires ne sont rien d'autre que des fichiers d'un type particulier. La commande&amp;nbsp;''ls''&amp;nbsp;leur est donc applicable avec toutes ses options.

|-
| $ mkdir titi
| Créer le répertoire&amp;nbsp;''titi''&amp;nbsp;dans le répertoire courant.

|-
| $ mkdir -p rep1/rep2/rep3
| Créer rep3 en créant rep1 et rep2 s'ils n'existent pas.

|-
| $ mv source destination
| Déplacer ou/et renommer le répertoire mentionné en&amp;nbsp;''source''. Pour renommer le répertoire, indiquer son nouveau nom à la place de&amp;nbsp;''destination''.

|-
| $ pwd
| Afficher le nom (et le chemin) du répertoire courant. La commande&amp;nbsp;''pwd''&amp;nbsp;est utile lorsqu'on désire obtenir le chemin absolu du répertoire courant.

|-
| $ vdir rep
| Lister le contenu de&amp;nbsp;''rep''&amp;nbsp;en mode verbeux (avec plus de détail que la commande&amp;nbsp;''dir'').

|-
|
|{{Avertissement|texte='''Les commandes rm sont à manipuler avec beaucoup d'attention...'''}}

|-
| $ rm -d
| Supprimer le répertoire, qu'il soit plein ou non.

|-
| $ rm -r niveau1
| Supprimer un répertoire et ses sous répertoires (niveau1/niveau2/niveau3/etc...)

|-
| $ rm -rf repertoire
| Supprimer&amp;nbsp;''repertoire''&amp;nbsp;sans demander de confirmation. Si vous utilisez en tant que root la commande&amp;nbsp;''rm -rf /'', la totalité des fichiers du système est supprimée en une fraction de seconde, '''sans possibilité de récupération'''. '''Soyez extrêmement vigilants avec cette commande !'''

|-
| $ rmdir repertoire
| Supprimer&amp;nbsp;''/repertoire''&amp;nbsp;si et seulement si&amp;nbsp;''/rep''&amp;nbsp;est vide.

|-
| $ rmdir -p niveau1/niveau2
| Supprimer une hiérarchie de répertoires vides en une seule fois. Dans notre exemple,&amp;nbsp;''niveau1''&amp;nbsp;et&amp;nbsp;''niveau2''&amp;nbsp;seront supprimés. Si&amp;nbsp;''niveau1''&amp;nbsp;n'est pas vide, la commande renverra un message d'erreur.

|-
| $ rm -Rf repertoire
| Supprimer le répertoire&amp;nbsp;''repertoire'', même s'il n'est pas vide.

|}

== Truc pour effacer récursivement des répertoires ==


Voici un exemple simple d'utilisation de ''rm'' pour supprimer récursivement des répertoires de subversion (.svn)
Nous utiliserons la commande find pour trouver tous les répertoires .svn à partir du répertoire courant:

 $ find . -type d -name .svn
 .svn
 ./extensions/GlobalBlocking/.svn
 etc...

Il est possible de passer directement à ces répertoires la commande rm, en utilisant le caractère spécial ` (Alt Gr + 7)

 $ rm -r `find . -type d -name .svn`



[[Utilisateur:Lol|Lol]] 20 janvier 2010 à 12:19 (UTC)

[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>r1md01vmkoewwa21ezx6g4r4bfi627v</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Gestion+des+paquets</title>
    <ns>0</ns>
    <id>234</id>
    <redirect title="Gestion des paquets" />
    <revision>
      <id>1010</id>
      <timestamp>2010-02-07T15:50:10Z</timestamp>
      <contributor>
        <username>Kna</username>
        <id>35</id>
      </contributor>
      <comment>a renommé [[Gestion+des+paquets]] en [[Gestion des paquets]]&amp;nbsp;:&amp;#32;Foutu wiki, rajouter des majuscules, ça lui suffisait pas, il faut qu'il mette des « + » maintenant !:D</comment>
      <text xml:space="preserve" bytes="36">#REDIRECTION [[Gestion des paquets]]</text>
      <sha1>5unvo8c6cc9tq323eght8uctb8xus2p</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Gestionnaire de fenetres</title>
    <ns>0</ns>
    <id>27</id>
    <revision>
      <id>39</id>
      <timestamp>2010-01-21T18:31:24Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <comment>Page créée avec « = Les Gestionnaires de Fenêtres =  Cette page a pour but de lister les gestionnaires de fenêtres pour lesquels une documentation est disponible. Ainsi, chacun il sera facil… »</comment>
      <text xml:space="preserve" bytes="845">= Les Gestionnaires de Fenêtres =

Cette page a pour but de lister les gestionnaires de fenêtres pour lesquels une documentation est disponible. Ainsi, chacun il sera facile d'apprendre à configurer son gestionnaire de fenêtres, surtout lorsque cela est spécifique à Debian.

== Les Flottants ==

Les gestionnaires nommés ici &quot;flottants&quot; auront un comportement similaire à (par exemple) Metacity ou kwin (les gestionnaires de fenêtres de gnome ou kde).

* [[Openbox]]
* [[Fluxbox]]
* [[Pekwm]]
* [[Fvwm]]
* [[WindowMaker]]
* [[Enlightenment]]






== Les Tilings ==

Ces gestionnaires de fenêtres ont la particularité d'aider énormément à la mise en place des fenêtres à l'écran. En particulier, ils proposent la possibilité de ne laisser aucun espace vide entre les fenêtres.

* [[dwm]]
* [[wmii]]
* [[awesome]]
* [[xmodad]]</text>
      <sha1>jlou8y4h2wbok9uls3z7gowt97gc7nw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>40</id>
      <parentid>39</parentid>
      <timestamp>2010-01-21T18:33:04Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <comment>/* Les Tilings */</comment>
      <text xml:space="preserve" bytes="845">= Les Gestionnaires de Fenêtres =

Cette page a pour but de lister les gestionnaires de fenêtres pour lesquels une documentation est disponible. Ainsi, chacun il sera facile d'apprendre à configurer son gestionnaire de fenêtres, surtout lorsque cela est spécifique à Debian.

== Les Flottants ==

Les gestionnaires nommés ici &quot;flottants&quot; auront un comportement similaire à (par exemple) Metacity ou kwin (les gestionnaires de fenêtres de gnome ou kde).

* [[Openbox]]
* [[Fluxbox]]
* [[Pekwm]]
* [[Fvwm]]
* [[WindowMaker]]
* [[Enlightenment]]






== Les Tilings ==

Ces gestionnaires de fenêtres ont la particularité d'aider énormément à la mise en place des fenêtres à l'écran. En particulier, ils proposent la possibilité de ne laisser aucun espace vide entre les fenêtres.

* [[dwm]]
* [[wmii]]
* [[awesome]]
* [[xmonad]]</text>
      <sha1>o5qz0igjx55jogjkqv380bd8fmybux9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>156</id>
      <parentid>40</parentid>
      <timestamp>2010-01-23T12:43:16Z</timestamp>
      <contributor>
        <username>Wetaskiwin</username>
        <id>10</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="851">= Les gestionnaires de fenêtres =

Cette page a pour but de lister les gestionnaires de fenêtres pour lesquels une documentation est disponible. Ainsi, il sera facile pour chacun d'apprendre à configurer son gestionnaire de fenêtres, surtout lorsque cela est spécifique à Debian.

== Les flottants ==

Les gestionnaires nommés ici &quot;flottants&quot; auront un comportement similaire à (par exemple) Metacity ou kwin (les gestionnaires de fenêtres de gnome ou kde).

* [[Openbox]]
* [[Fluxbox]]
* [[Pekwm]]
* [[Fvwm]]
* [[WindowMaker]]
* [[Enlightenment]]






== Les tillings ==

Ces gestionnaires de fenêtres ont la particularité d'aider énormément à la mise en place des fenêtres à l'écran. En particulier, ils proposent la possibilité de ne laisser aucun espace vide entre les fenêtres.

* [[dwm]]
* [[wmii]]
* [[awesome]]
* [[xmonad]]</text>
      <sha1>o9cgomnfhirqn7fvbmughhw44pdqew3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>447</id>
      <parentid>156</parentid>
      <timestamp>2010-01-28T15:44:36Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <minor/>
      <comment>/* Les tillings */</comment>
      <text xml:space="preserve" bytes="850">= Les gestionnaires de fenêtres =

Cette page a pour but de lister les gestionnaires de fenêtres pour lesquels une documentation est disponible. Ainsi, il sera facile pour chacun d'apprendre à configurer son gestionnaire de fenêtres, surtout lorsque cela est spécifique à Debian.

== Les flottants ==

Les gestionnaires nommés ici &quot;flottants&quot; auront un comportement similaire à (par exemple) Metacity ou kwin (les gestionnaires de fenêtres de gnome ou kde).

* [[Openbox]]
* [[Fluxbox]]
* [[Pekwm]]
* [[Fvwm]]
* [[WindowMaker]]
* [[Enlightenment]]






== Les tilings ==

Ces gestionnaires de fenêtres ont la particularité d'aider énormément à la mise en place des fenêtres à l'écran. En particulier, ils proposent la possibilité de ne laisser aucun espace vide entre les fenêtres.

* [[dwm]]
* [[wmii]]
* [[awesome]]
* [[xmonad]]</text>
      <sha1>q2cm55uyrrd75neite359ypt6rm5i5w</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>908</id>
      <parentid>447</parentid>
      <timestamp>2010-02-05T17:02:49Z</timestamp>
      <contributor>
        <username>Sidell</username>
        <id>34</id>
      </contributor>
      <minor/>
      <comment>/* Les tilings */ précision WIMP</comment>
      <text xml:space="preserve" bytes="920">= Les gestionnaires de fenêtres =

Cette page a pour but de lister les gestionnaires de fenêtres pour lesquels une documentation est disponible. Ainsi, il sera facile pour chacun d'apprendre à configurer son gestionnaire de fenêtres, surtout lorsque cela est spécifique à Debian.

== Les flottants ==

Les gestionnaires nommés ici &quot;flottants&quot; auront un comportement similaire à (par exemple) Metacity ou kwin (les gestionnaires de fenêtres de gnome ou kde).

* [[Openbox]]
* [[Fluxbox]]
* [[Pekwm]]
* [[Fvwm]]
* [[WindowMaker]]
* [[Enlightenment]]






== Les tilings ==

Ces gestionnaires de fenêtres ont la particularité d'aider énormément à la mise en place des fenêtres à l'écran. Ils ont l'avantage d'être entièrement pilotable au clavier (gain de temps) et s'opposent aux interface de type [http://fr.wikipedia.org/wiki/WIMP_(informatique) WIMP]

* [[dwm]]
* [[wmii]]
* [[awesome]]
* [[xmonad]]</text>
      <sha1>l0n7er74ksbvj19s2hcfe8axb1kwazn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>909</id>
      <parentid>908</parentid>
      <timestamp>2010-02-05T17:03:45Z</timestamp>
      <contributor>
        <username>Sidell</username>
        <id>34</id>
      </contributor>
      <comment>/* Les tilings */</comment>
      <text xml:space="preserve" bytes="921">= Les gestionnaires de fenêtres =

Cette page a pour but de lister les gestionnaires de fenêtres pour lesquels une documentation est disponible. Ainsi, il sera facile pour chacun d'apprendre à configurer son gestionnaire de fenêtres, surtout lorsque cela est spécifique à Debian.

== Les flottants ==

Les gestionnaires nommés ici &quot;flottants&quot; auront un comportement similaire à (par exemple) Metacity ou kwin (les gestionnaires de fenêtres de gnome ou kde).

* [[Openbox]]
* [[Fluxbox]]
* [[Pekwm]]
* [[Fvwm]]
* [[WindowMaker]]
* [[Enlightenment]]






== Les tilings ==

Ces gestionnaires de fenêtres ont la particularité d'aider énormément à la mise en place des fenêtres à l'écran. Ils ont l'avantage d'être entièrement pilotable au clavier (gain de temps) et s'opposent aux interface de type [http://fr.wikipedia.org/wiki/WIMP_(informatique) WIMP].

* [[dwm]]
* [[wmii]]
* [[awesome]]
* [[xmonad]]</text>
      <sha1>5n3vnf8xebl0x23czjmetp1dnsj7hqt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1610</id>
      <parentid>909</parentid>
      <timestamp>2010-07-05T07:54:26Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="966">#REDIRECT [[isalo:Gestionnaire_de_fenetres]]
= Les gestionnaires de fenêtres =

Cette page a pour but de lister les gestionnaires de fenêtres pour lesquels une documentation est disponible. Ainsi, il sera facile pour chacun d'apprendre à configurer son gestionnaire de fenêtres, surtout lorsque cela est spécifique à Debian.

== Les flottants ==

Les gestionnaires nommés ici &quot;flottants&quot; auront un comportement similaire à (par exemple) Metacity ou kwin (les gestionnaires de fenêtres de gnome ou kde).

* [[Openbox]]
* [[Fluxbox]]
* [[Pekwm]]
* [[Fvwm]]
* [[WindowMaker]]
* [[Enlightenment]]






== Les tilings ==

Ces gestionnaires de fenêtres ont la particularité d'aider énormément à la mise en place des fenêtres à l'écran. Ils ont l'avantage d'être entièrement pilotable au clavier (gain de temps) et s'opposent aux interface de type [http://fr.wikipedia.org/wiki/WIMP_(informatique) WIMP].

* [[dwm]]
* [[wmii]]
* [[awesome]]
* [[xmonad]]</text>
      <sha1>t3tmitvvmn9l9fed6jd85mbpz9stl2v</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1659</id>
      <parentid>1610</parentid>
      <timestamp>2010-07-06T09:18:56Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Annulation des modifications 1610 de [[Special:Contributions/Lol|Lol]] ([[User talk:Lol|discussion]])</comment>
      <text xml:space="preserve" bytes="921">= Les gestionnaires de fenêtres =

Cette page a pour but de lister les gestionnaires de fenêtres pour lesquels une documentation est disponible. Ainsi, il sera facile pour chacun d'apprendre à configurer son gestionnaire de fenêtres, surtout lorsque cela est spécifique à Debian.

== Les flottants ==

Les gestionnaires nommés ici &quot;flottants&quot; auront un comportement similaire à (par exemple) Metacity ou kwin (les gestionnaires de fenêtres de gnome ou kde).

* [[Openbox]]
* [[Fluxbox]]
* [[Pekwm]]
* [[Fvwm]]
* [[WindowMaker]]
* [[Enlightenment]]






== Les tilings ==

Ces gestionnaires de fenêtres ont la particularité d'aider énormément à la mise en place des fenêtres à l'écran. Ils ont l'avantage d'être entièrement pilotable au clavier (gain de temps) et s'opposent aux interface de type [http://fr.wikipedia.org/wiki/WIMP_(informatique) WIMP].

* [[dwm]]
* [[wmii]]
* [[awesome]]
* [[xmonad]]</text>
      <sha1>5n3vnf8xebl0x23czjmetp1dnsj7hqt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2106</id>
      <parentid>1659</parentid>
      <timestamp>2010-09-15T17:16:06Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="947">= Les gestionnaires de fenêtres =

Cette page a pour but de lister les gestionnaires de fenêtres pour lesquels une documentation est disponible. Ainsi, il sera facile pour chacun d'apprendre à configurer son gestionnaire de fenêtres, surtout lorsque cela est spécifique à Debian.

== Les flottants ==

Les gestionnaires nommés ici &quot;flottants&quot; auront un comportement similaire à (par exemple) Metacity ou kwin (les gestionnaires de fenêtres de gnome ou kde).

* [[Openbox]]
* [[Fluxbox]]
* [[Pekwm]]
* [[Fvwm]]
* [[WindowMaker]]
* [[Enlightenment]]






== Les tilings ==

Ces gestionnaires de fenêtres ont la particularité d'aider énormément à la mise en place des fenêtres à l'écran. Ils ont l'avantage d'être entièrement pilotable au clavier (gain de temps) et s'opposent aux interface de type [http://fr.wikipedia.org/wiki/WIMP_(informatique) WIMP].

* [[dwm]]
* [[wmii]]
* [[awesome]]
* [[xmonad]]

[[Catégorie:Logiciels]]</text>
      <sha1>r6vr7ck4egyprv98iv63rozin3yf8mm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Glossaire</title>
    <ns>0</ns>
    <id>118</id>
    <revision>
      <id>533</id>
      <timestamp>2010-01-30T08:47:41Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « {{Ébauche|Glossaire}}  = Glossaire =  == IRQ ==  On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée pa… »</comment>
      <text xml:space="preserve" bytes="570">{{Ébauche|Glossaire}}

= Glossaire =

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

[[Catégorie:Glossaire]]</text>
      <sha1>rx1x6n28olerknvxyci7tk1mstesgse</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>534</id>
      <parentid>533</parentid>
      <timestamp>2010-01-30T08:49:25Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="1079">{{Ébauche|Glossaire}}

= Glossaire =

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

[[Catégorie:Glossaire]]</text>
      <sha1>g3xkfrjrpi2c6tvgpkdpfvrc5otzibn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>535</id>
      <parentid>534</parentid>
      <timestamp>2010-01-30T08:50:24Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="1515">{{Ébauche|Glossaire}}

= Glossaire =

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption.

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

[[Catégorie:Glossaire]]</text>
      <sha1>od282594lwx3kao5xjp1qxljczglweh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>536</id>
      <parentid>535</parentid>
      <timestamp>2010-01-30T08:51:16Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="2229">{{Ébauche|Glossaire}}

= Glossaire =

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption.

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

[[Catégorie:Glossaire]]</text>
      <sha1>g5qkj8jxetab69xxtkojlvr55gly3t3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>537</id>
      <parentid>536</parentid>
      <timestamp>2010-01-30T08:53:05Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="2765">{{Ébauche|Glossaire}}

= Glossaire =

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption.

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

[[Catégorie:Glossaire]]</text>
      <sha1>6gomte8jyhn2lbdgvukt5sfhlut789p</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>538</id>
      <parentid>537</parentid>
      <timestamp>2010-01-30T08:53:35Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="2750">{{Ébauche|Glossaire}}

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption.

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

[[Catégorie:Glossaire]]</text>
      <sha1>as24lcr34d2dkjd6igoyn30rhmx7w5g</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>539</id>
      <parentid>538</parentid>
      <timestamp>2010-01-30T08:54:54Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="2880">{{Ébauche|Glossaire}}

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption.

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement : « Lis le foutu manuel ») ! Hum...

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

[[Catégorie:Glossaire]]</text>
      <sha1>rrtz6wmh9eae2qwva8qdkfi3wwvl44m</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>540</id>
      <parentid>539</parentid>
      <timestamp>2010-01-30T08:56:48Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="3438">{{Ébauche|Glossaire}}

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption.

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== PC ==

Le sigle PC est utilisé pour désigner un compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, superordinateur, etc.)

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement : « Lis le foutu manuel ») ! Hum...

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

[[Catégorie:Glossaire]]</text>
      <sha1>1erdbs0w00dngylid8yh93078okw653</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>542</id>
      <parentid>540</parentid>
      <timestamp>2010-01-30T09:05:45Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="4360">{{Ébauche|Glossaire}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption.

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== PC ==

Le sigle PC est utilisé pour désigner un compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, superordinateur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement : « Lis le foutu manuel ») ! Hum...

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

[[Catégorie:Glossaire]]</text>
      <sha1>nkgo8ewzw2zdsw5z245i7djgkyu5m4t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>548</id>
      <parentid>542</parentid>
      <timestamp>2010-01-30T10:12:19Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* DMA */</comment>
      <text xml:space="preserve" bytes="4366">{{Ébauche|Glossaire}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== PC ==

Le sigle PC est utilisé pour désigner un compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, superordinateur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement : « Lis le foutu manuel ») ! Hum...

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

[[Catégorie:Glossaire]]</text>
      <sha1>8prhqxbiglmjp4o8ckp59vc8iu9xvvn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>553</id>
      <parentid>548</parentid>
      <timestamp>2010-01-30T11:35:11Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="4821">{{Ébauche|Glossaire}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== PC ==

Le sigle PC est utilisé pour désigner un compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, superordinateur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement : « Lis le foutu manuel ») ! Hum...

== SSH ==

Secure Shell (SSH) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole SSH a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

[[Catégorie:Glossaire]]</text>
      <sha1>ofkpjy3w2r94nc6mo4hvesrb3nomqi5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>556</id>
      <parentid>553</parentid>
      <timestamp>2010-01-30T11:42:04Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="5992">{{Ébauche|Glossaire}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== PC ==

Le sigle PC est utilisé pour désigner un compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, superordinateur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement : « Lis le foutu manuel ») ! Hum...

== SSH ==

Secure Shell (SSH) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole SSH a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

[[Catégorie:Glossaire]]</text>
      <sha1>ry2m8bnv4nec9hw1ad6gnt1gdndxt7d</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>558</id>
      <parentid>556</parentid>
      <timestamp>2010-01-30T11:47:19Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="6425">{{Ébauche|Glossaire}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais NT File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993.

== PC ==

Le sigle PC est utilisé pour désigner un compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, superordinateur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement : « Lis le foutu manuel ») ! Hum...

== SSH ==

Secure Shell (SSH) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole SSH a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

[[Catégorie:Glossaire]]</text>
      <sha1>dv9fi539znfbno15g3r8vh6er1rrglk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>559</id>
      <parentid>558</parentid>
      <timestamp>2010-01-30T11:52:16Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="6882">{{Ébauche|Glossaire}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== CDDB ==

La CDDB, pour Compact Disc Data Base, autrement dit base de données pour disque compact (musicaux), regroupe l'ensemble des informations utiles pour renseigner les tags ID3 des fichiers mp3, WMA et Ogg Vorbis.
Nombre de logiciels encodeurs sont capables de se connecter à la CDDB officielle voire à la concurrente en open source freedb.
Pour identifier les CD, CDDB utilise un identifiant nommé DiscId qui est identique à celui de FreeDB.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais NT File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993.

== PC ==

Le sigle PC est utilisé pour désigner un compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, superordinateur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement : « Lis le foutu manuel ») ! Hum...

== SSH ==

Secure Shell (SSH) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole SSH a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

[[Catégorie:Glossaire]]</text>
      <sha1>k6o603d48yhn8yp8fu71i6xajv6ourl</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>612</id>
      <parentid>559</parentid>
      <timestamp>2010-01-31T19:12:08Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="7176">{{Ébauche|les acronymes utilisés dans les pages de ce wiki}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== CDDB ==

La CDDB, pour Compact Disc Data Base, autrement dit base de données pour disque compact (musicaux), regroupe l'ensemble des informations utiles pour renseigner les tags ID3 des fichiers mp3, WMA et Ogg Vorbis.
Nombre de logiciels encodeurs sont capables de se connecter à la CDDB officielle voire à la concurrente en open source freedb.
Pour identifier les CD, CDDB utilise un identifiant nommé DiscId qui est identique à celui de FreeDB.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais NT File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993.

== PC ==

Le sigle PC est utilisé pour désigner un compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, superordinateur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement : « Lis le foutu manuel ») ! Hum...

== SSH ==

Secure Shell (SSH) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole SSH a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== Terminal ==

Aussi appelé console, ligne de commande ou tty, c'est l'interface texte qui permet l'entrée de commandes. Lorsqu'une commande est terminée, le prompt ( user@debian:/repertoire$ ) réapparaît et attend l'entrée d'une autre commande.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

[[Catégorie:Glossaire]]</text>
      <sha1>r849xrqmhki0xariv1494kjj483o5v4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>613</id>
      <parentid>612</parentid>
      <timestamp>2010-01-31T19:14:26Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="7240">{{Ébauche|les acronymes utilisés dans les pages de ce wiki}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== CDDB ==

La CDDB, pour Compact Disc Data Base, autrement dit base de données pour disque compact (musicaux), regroupe l'ensemble des informations utiles pour renseigner les tags ID3 des fichiers mp3, WMA et Ogg Vorbis.
Nombre de logiciels encodeurs sont capables de se connecter à la CDDB officielle voire à la concurrente en open source freedb.
Pour identifier les CD, CDDB utilise un identifiant nommé DiscId qui est identique à celui de FreeDB.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais NT File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993.

== PC ==

Le sigle PC ( Personnal Computer/Ordinateur Personnel ) est utilisé pour désigner un ordinateur compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, superordinateur, serveur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement : « Lis le foutu manuel ») ! Hum...

== SSH ==

Secure Shell (SSH) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole SSH a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== Terminal ==

Aussi appelé console, ligne de commande ou tty, c'est l'interface texte qui permet l'entrée de commandes. Lorsqu'une commande est terminée, le prompt ( user@debian:/repertoire$ ) réapparaît et attend l'entrée d'une autre commande.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

[[Catégorie:Glossaire]]</text>
      <sha1>g9umekyzwli7yr2l80rsg47ndipqqlu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>615</id>
      <parentid>613</parentid>
      <timestamp>2010-02-01T04:23:00Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="8361">{{Ébauche|les acronymes utilisés dans les pages de ce wiki}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== CDDB ==

La CDDB, pour Compact Disc Data Base, autrement dit base de données pour disque compact (musicaux), regroupe l'ensemble des informations utiles pour renseigner les tags ID3 des fichiers mp3, WMA et Ogg Vorbis.
Nombre de logiciels encodeurs sont capables de se connecter à la CDDB officielle voire à la concurrente en open source freedb.
Pour identifier les CD, CDDB utilise un identifiant nommé DiscId qui est identique à celui de FreeDB.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais NT File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993.

== PC ==

Le sigle PC ( Personnal Computer/Ordinateur Personnel ) est utilisé pour désigner un ordinateur compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, superordinateur, serveur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement : « Lis le foutu manuel ») ! Hum...

== SATA ==

Le Serial ATA (ou S-ATA ou SATA) est un bus informatique principalement conçu pour le transfert de données entre un ordinateur et un disque dur mais aussi utilisé pour les lecteurs cd/dvd. C'est l'évolution du standard Advanced Technology Attachment (ATA ou IDE).
Le Serial ATA a de multiples avantages par rapport à son prédécesseur, les trois principaux étant sa vitesse, la gestion des câbles et le branchement à chaud (Hot-Plug). L'ancienne norme ATA est communément désignée sous le nom « Parallel ATA » (P-ATA) afin que les deux ne soient pas confondues.

== SCSI ==

SCSI, Small Computer System Interface en anglais, est un standard définissant un bus informatique permettant de relier un ordinateur à des périphériques ou bien même à un autre ordinateur.
La grande différence apportée par ce bus, est qu'il soulage le processeur des commandes envoyées au périphérique, commandes qui sont traitées directement par le périphérique SCSI lui-même.
Ce système est beaucoup plus rapide qui l'interface E-IDE qui accapare un pourcentage plus ou moins important du processeur.

== SSH ==

Secure Shell (SSH) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole SSH a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== Terminal ==

Aussi appelé console, ligne de commande ou tty, c'est l'interface texte qui permet l'entrée de commandes. Lorsqu'une commande est terminée, le prompt ( user@debian:/repertoire$ ) réapparaît et attend l'entrée d'une autre commande.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

[[Catégorie:Glossaire]]</text>
      <sha1>3gc20ks6q5q7ea0r6diwq8y57chj0n7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>770</id>
      <parentid>615</parentid>
      <timestamp>2010-02-02T18:59:33Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="8769">{{Ébauche|les acronymes utilisés dans les pages de ce wiki}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== CDDB ==

La CDDB, pour Compact Disc Data Base, autrement dit base de données pour disque compact (musicaux), regroupe l'ensemble des informations utiles pour renseigner les tags ID3 des fichiers mp3, WMA et Ogg Vorbis.
Nombre de logiciels encodeurs sont capables de se connecter à la CDDB officielle voire à la concurrente en open source freedb.
Pour identifier les CD, CDDB utilise un identifiant nommé DiscId qui est identique à celui de FreeDB.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== Live CD ==

Un Live CD (la traduction CD autonome a également été proposée par le projet Debian) est un CD qui contient un système d’exploitation exécutable sans installation, qui se lance au démarrage de l’ordinateur. Par extension, liveCD désigne un système d’exploitation présent sur un support externe amorçable. Les supports de stockage typiques sont le CD, le DVD et la clé USB.


== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais NT File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993.

== PC ==

Le sigle PC ( Personnal Computer/Ordinateur Personnel ) est utilisé pour désigner un ordinateur compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, superordinateur, serveur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement : « Lis le foutu manuel ») ! Hum...

== SATA ==

Le Serial ATA (ou S-ATA ou SATA) est un bus informatique principalement conçu pour le transfert de données entre un ordinateur et un disque dur mais aussi utilisé pour les lecteurs cd/dvd. C'est l'évolution du standard Advanced Technology Attachment (ATA ou IDE).
Le Serial ATA a de multiples avantages par rapport à son prédécesseur, les trois principaux étant sa vitesse, la gestion des câbles et le branchement à chaud (Hot-Plug). L'ancienne norme ATA est communément désignée sous le nom « Parallel ATA » (P-ATA) afin que les deux ne soient pas confondues.

== SCSI ==

SCSI, Small Computer System Interface en anglais, est un standard définissant un bus informatique permettant de relier un ordinateur à des périphériques ou bien même à un autre ordinateur.
La grande différence apportée par ce bus, est qu'il soulage le processeur des commandes envoyées au périphérique, commandes qui sont traitées directement par le périphérique SCSI lui-même.
Ce système est beaucoup plus rapide qui l'interface E-IDE qui accapare un pourcentage plus ou moins important du processeur.

== SSH ==

Secure Shell (SSH) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole SSH a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== Terminal ==

Aussi appelé console, ligne de commande ou tty, c'est l'interface texte qui permet l'entrée de commandes. Lorsqu'une commande est terminée, le prompt ( user@debian:/repertoire$ ) réapparaît et attend l'entrée d'une autre commande.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

[[Catégorie:Glossaire]]</text>
      <sha1>beu2xme4c2bnj6jfahdznie768f0mgr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>772</id>
      <parentid>770</parentid>
      <timestamp>2010-02-02T19:25:01Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="10567">{{Ébauche|les acronymes utilisés dans les pages de ce wiki}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== CDDB ==

La CDDB, pour Compact Disc Data Base, autrement dit base de données pour disque compact (musicaux), regroupe l'ensemble des informations utiles pour renseigner les tags ID3 des fichiers mp3, WMA et Ogg Vorbis.
Nombre de logiciels encodeurs sont capables de se connecter à la CDDB officielle voire à la concurrente en open source freedb.
Pour identifier les CD, CDDB utilise un identifiant nommé DiscId qui est identique à celui de FreeDB.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== DVD ==
Dénomination officielle « Digital Versatile Disc », c'est-à-dire « Disque numérique polyvalent ». Le DVD exploite un support semblable à celui du CD puisque ses dimensions sont les mêmes (disque de 120 mm de diamètre ou une version mini  de 80 mm). Les principales différences techniques concernent d'une part la densité / capacité de stockage-enregistrement et d'autre part, les procédés et traitements numériques (logiciels) pour leur sauvegarde.
Les capacités d'un DVD dépendent de ses spécificités. Il peut être simple ou double face et couche, en version pleine ou mini.

Les principales capacités et versions sont : DVD 5 couche unique, face unique : environ 4,7 GB, DVD DL couche double, face unique : environ 8,54 GB, DVD couche unique, double face : environ 8,54 GB, DVD couche double, double face (peu fréquent) : environ 17,08 GB, MiniDVD : couche unique, face unique : environ 1,4 GB, MiniDVD : couche unique, double face : environ 2,66 GB, MiniDVD : double couche, face unique : environ 2,66 GB, MiniDVD : double couche, double face : environ 5,2 GB.

== Ethernet ==
Ethernet est un protocole de réseau local à commutation de paquets. Bien qu'il implémente la couche physique (PHY) et la sous-couche Media Access Control  (MAC), le protocole Ethernet est classé dans la couche de liaison, car les formats de trames que le standard définit sont normalisés et peuvent être encapsulés dans des protocoles autres que ses propres couches physiques MAC et PHY. Ces couches physiques font l'objet de normes séparées en fonction des débits, du support de transmission, de la longueur des liaisons et des conditions environnementales.
Ethernet a été standardisé sous le nom IEEE 802.3. C'est maintenant une norme internationale : ISO/IEC 8802-3.

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== Live CD ==

Un Live CD (la traduction CD autonome a également été proposée par le projet Debian) est un CD qui contient un système d’exploitation exécutable sans installation, qui se lance au démarrage de l’ordinateur. Par extension, liveCD désigne un système d’exploitation présent sur un support externe amorçable. Les supports de stockage typiques sont le CD, le DVD et la clé USB.


== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais NT File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993.

== PC ==

Le sigle PC ( Personnal Computer/Ordinateur Personnel ) est utilisé pour désigner un ordinateur compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, superordinateur, serveur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement : « Lis le foutu manuel ») ! Hum...

== SATA ==

Le Serial ATA (ou S-ATA ou SATA) est un bus informatique principalement conçu pour le transfert de données entre un ordinateur et un disque dur mais aussi utilisé pour les lecteurs cd/dvd. C'est l'évolution du standard Advanced Technology Attachment (ATA ou IDE).
Le Serial ATA a de multiples avantages par rapport à son prédécesseur, les trois principaux étant sa vitesse, la gestion des câbles et le branchement à chaud (Hot-Plug). L'ancienne norme ATA est communément désignée sous le nom « Parallel ATA » (P-ATA) afin que les deux ne soient pas confondues.

== SCSI ==

SCSI, Small Computer System Interface en anglais, est un standard définissant un bus informatique permettant de relier un ordinateur à des périphériques ou bien même à un autre ordinateur.
La grande différence apportée par ce bus, est qu'il soulage le processeur des commandes envoyées au périphérique, commandes qui sont traitées directement par le périphérique SCSI lui-même.
Ce système est beaucoup plus rapide qui l'interface E-IDE qui accapare un pourcentage plus ou moins important du processeur.

== SSH ==

Secure Shell (SSH) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole SSH a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== Terminal ==

Aussi appelé console, ligne de commande ou tty, c'est l'interface texte qui permet l'entrée de commandes. Lorsqu'une commande est terminée, le prompt ( user@debian:/repertoire$ ) réapparaît et attend l'entrée d'une autre commande.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

[[Catégorie:Glossaire]]</text>
      <sha1>ehba2v27z41fjt7g4nqvnivr3xlu57f</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>783</id>
      <parentid>772</parentid>
      <timestamp>2010-02-03T06:46:44Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="10957">{{Ébauche|les acronymes utilisés dans les pages de ce wiki}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== CDDB ==

La CDDB, pour Compact Disc Data Base, autrement dit base de données pour disque compact (musicaux), regroupe l'ensemble des informations utiles pour renseigner les tags ID3 des fichiers mp3, WMA et Ogg Vorbis.
Nombre de logiciels encodeurs sont capables de se connecter à la CDDB officielle voire à la concurrente en open source freedb.
Pour identifier les CD, CDDB utilise un identifiant nommé DiscId qui est identique à celui de FreeDB.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== DVD ==
Dénomination officielle « Digital Versatile Disc », c'est-à-dire « Disque numérique polyvalent ». Le DVD exploite un support semblable à celui du CD puisque ses dimensions sont les mêmes (disque de 120 mm de diamètre ou une version mini  de 80 mm). Les principales différences techniques concernent d'une part la densité / capacité de stockage-enregistrement et d'autre part, les procédés et traitements numériques (logiciels) pour leur sauvegarde.
Les capacités d'un DVD dépendent de ses spécificités. Il peut être simple ou double face et couche, en version pleine ou mini.

Les principales capacités et versions sont : DVD 5 couche unique, face unique : environ 4,7 GB, DVD DL couche double, face unique : environ 8,54 GB, DVD couche unique, double face : environ 8,54 GB, DVD couche double, double face (peu fréquent) : environ 17,08 GB, MiniDVD : couche unique, face unique : environ 1,4 GB, MiniDVD : couche unique, double face : environ 2,66 GB, MiniDVD : double couche, face unique : environ 2,66 GB, MiniDVD : double couche, double face : environ 5,2 GB.

== Ethernet ==
Ethernet est un protocole de réseau local à commutation de paquets. Bien qu'il implémente la couche physique (PHY) et la sous-couche Media Access Control  (MAC), le protocole Ethernet est classé dans la couche de liaison, car les formats de trames que le standard définit sont normalisés et peuvent être encapsulés dans des protocoles autres que ses propres couches physiques MAC et PHY. Ces couches physiques font l'objet de normes séparées en fonction des débits, du support de transmission, de la longueur des liaisons et des conditions environnementales.
Ethernet a été standardisé sous le nom IEEE 802.3. C'est maintenant une norme internationale : ISO/IEC 8802-3.

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== Live CD ==

Un Live CD (la traduction CD autonome a également été proposée par le projet Debian) est un CD qui contient un système d’exploitation exécutable sans installation, qui se lance au démarrage de l’ordinateur. Par extension, liveCD désigne un système d’exploitation présent sur un support externe amorçable. Les supports de stockage typiques sont le CD, le DVD et la clé USB.


== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais NT File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993.

== PC ==

Le sigle PC ( Personnal Computer/Ordinateur Personnel ) est utilisé pour désigner un ordinateur compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, superordinateur, serveur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== Rolling release ==

Une approche de &quot;rolling release&quot; se réfère à un système en constante évolution, alimenté sans fin par de nouveaux paquets ou de mises à jour de paquets déjà existants, en opposition à un système figé - gelé (freeze) où les seules mises à jour seront des correctifs de sécurité. Sid est une &quot;rolling release&quot;; Lenny est une version figée (freeze).

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement : « Lis le foutu manuel ») ! Hum...

== SATA ==

Le Serial ATA (ou S-ATA ou SATA) est un bus informatique principalement conçu pour le transfert de données entre un ordinateur et un disque dur mais aussi utilisé pour les lecteurs cd/dvd. C'est l'évolution du standard Advanced Technology Attachment (ATA ou IDE).
Le Serial ATA a de multiples avantages par rapport à son prédécesseur, les trois principaux étant sa vitesse, la gestion des câbles et le branchement à chaud (Hot-Plug). L'ancienne norme ATA est communément désignée sous le nom « Parallel ATA » (P-ATA) afin que les deux ne soient pas confondues.

== SCSI ==

SCSI, Small Computer System Interface en anglais, est un standard définissant un bus informatique permettant de relier un ordinateur à des périphériques ou bien même à un autre ordinateur.
La grande différence apportée par ce bus, est qu'il soulage le processeur des commandes envoyées au périphérique, commandes qui sont traitées directement par le périphérique SCSI lui-même.
Ce système est beaucoup plus rapide qui l'interface E-IDE qui accapare un pourcentage plus ou moins important du processeur.

== SSH ==

Secure Shell (SSH) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole SSH a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== Terminal ==

Aussi appelé console, ligne de commande ou tty, c'est l'interface texte qui permet l'entrée de commandes. Lorsqu'une commande est terminée, le prompt ( user@debian:/repertoire$ ) réapparaît et attend l'entrée d'une autre commande.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

[[Catégorie:Glossaire]]</text>
      <sha1>532pbdb589bo1cgtk248yh43qeq3k6v</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>788</id>
      <parentid>783</parentid>
      <timestamp>2010-02-03T08:52:15Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="10975">{{Ébauche|les acronymes utilisés dans les pages de ce wiki}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== CDDB ==

La CDDB, pour Compact Disc Data Base, autrement dit base de données pour disque compact (musicaux), regroupe l'ensemble des informations utiles pour renseigner les tags ID3 des fichiers mp3, WMA et Ogg Vorbis.
Nombre de logiciels encodeurs sont capables de se connecter à la CDDB officielle voire à la concurrente en open source freedb.
Pour identifier les CD, CDDB utilise un identifiant nommé DiscId qui est identique à celui de FreeDB.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== DVD ==
Dénomination officielle « Digital Versatile Disc », c'est-à-dire « Disque numérique polyvalent ». Le DVD exploite un support semblable à celui du CD puisque ses dimensions sont les mêmes (disque de 120 mm de diamètre ou une version mini  de 80 mm). Les principales différences techniques concernent d'une part la densité / capacité de stockage-enregistrement et d'autre part, les procédés et traitements numériques (logiciels) pour leur sauvegarde.
Les capacités d'un DVD dépendent de ses spécificités. Il peut être simple ou double face et couche, en version pleine ou mini.

Les principales capacités et versions sont : DVD 5 couche unique, face unique : environ 4,7 GB, DVD DL couche double, face unique : environ 8,54 GB, DVD couche unique, double face : environ 8,54 GB, DVD couche double, double face (peu fréquent) : environ 17,08 GB, MiniDVD : couche unique, face unique : environ 1,4 GB, MiniDVD : couche unique, double face : environ 2,66 GB, MiniDVD : double couche, face unique : environ 2,66 GB, MiniDVD : double couche, double face : environ 5,2 GB.

== Ethernet ==
Ethernet est un protocole de réseau local à commutation de paquets. Bien qu'il implémente la couche physique (PHY) et la sous-couche Media Access Control  (MAC), le protocole Ethernet est classé dans la couche de liaison, car les formats de trames que le standard définit sont normalisés et peuvent être encapsulés dans des protocoles autres que ses propres couches physiques MAC et PHY. Ces couches physiques font l'objet de normes séparées en fonction des débits, du support de transmission, de la longueur des liaisons et des conditions environnementales.
Ethernet a été standardisé sous le nom IEEE 802.3. C'est maintenant une norme internationale : ISO/IEC 8802-3.

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== Live CD ==

Un Live CD (la traduction CD autonome a également été proposée par le projet Debian) est un CD qui contient un système d’exploitation exécutable sans installation, qui se lance au démarrage de l’ordinateur. Par extension, liveCD désigne un système d’exploitation présent sur un support externe amorçable. Les supports de stockage typiques sont le CD, le DVD et la clé USB.


== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais NT File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993.

== PC ==

Le sigle PC ( Personnal Computer/Ordinateur Personnel ) est utilisé pour désigner un ordinateur compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, superordinateur, serveur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== Rolling release ==

Une approche de &quot;rolling release&quot; se réfère à un système en constante évolution, alimenté sans fin par de nouveaux paquets ou de mises à jour de paquets déjà existants, en opposition à un système figé - gelé (freeze) où les seules mises à jour seront des correctifs de sécurité. Sid, stable, testing sont des &quot;rolling release&quot;; Lenny est une version figée (freeze).

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement : « Lis le foutu manuel ») ! Hum...

== SATA ==

Le Serial ATA (ou S-ATA ou SATA) est un bus informatique principalement conçu pour le transfert de données entre un ordinateur et un disque dur mais aussi utilisé pour les lecteurs cd/dvd. C'est l'évolution du standard Advanced Technology Attachment (ATA ou IDE).
Le Serial ATA a de multiples avantages par rapport à son prédécesseur, les trois principaux étant sa vitesse, la gestion des câbles et le branchement à chaud (Hot-Plug). L'ancienne norme ATA est communément désignée sous le nom « Parallel ATA » (P-ATA) afin que les deux ne soient pas confondues.

== SCSI ==

SCSI, Small Computer System Interface en anglais, est un standard définissant un bus informatique permettant de relier un ordinateur à des périphériques ou bien même à un autre ordinateur.
La grande différence apportée par ce bus, est qu'il soulage le processeur des commandes envoyées au périphérique, commandes qui sont traitées directement par le périphérique SCSI lui-même.
Ce système est beaucoup plus rapide qui l'interface E-IDE qui accapare un pourcentage plus ou moins important du processeur.

== SSH ==

Secure Shell (SSH) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole SSH a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== Terminal ==

Aussi appelé console, ligne de commande ou tty, c'est l'interface texte qui permet l'entrée de commandes. Lorsqu'une commande est terminée, le prompt ( user@debian:/repertoire$ ) réapparaît et attend l'entrée d'une autre commande.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

[[Catégorie:Glossaire]]</text>
      <sha1>hnhgknt06zq1gt2jegcib7ev2vk2q81</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1039</id>
      <parentid>788</parentid>
      <timestamp>2010-02-08T06:40:08Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Rolling release */</comment>
      <text xml:space="preserve" bytes="10969">{{Ébauche|les acronymes utilisés dans les pages de ce wiki}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== CDDB ==

La CDDB, pour Compact Disc Data Base, autrement dit base de données pour disque compact (musicaux), regroupe l'ensemble des informations utiles pour renseigner les tags ID3 des fichiers mp3, WMA et Ogg Vorbis.
Nombre de logiciels encodeurs sont capables de se connecter à la CDDB officielle voire à la concurrente en open source freedb.
Pour identifier les CD, CDDB utilise un identifiant nommé DiscId qui est identique à celui de FreeDB.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== DVD ==
Dénomination officielle « Digital Versatile Disc », c'est-à-dire « Disque numérique polyvalent ». Le DVD exploite un support semblable à celui du CD puisque ses dimensions sont les mêmes (disque de 120 mm de diamètre ou une version mini  de 80 mm). Les principales différences techniques concernent d'une part la densité / capacité de stockage-enregistrement et d'autre part, les procédés et traitements numériques (logiciels) pour leur sauvegarde.
Les capacités d'un DVD dépendent de ses spécificités. Il peut être simple ou double face et couche, en version pleine ou mini.

Les principales capacités et versions sont : DVD 5 couche unique, face unique : environ 4,7 GB, DVD DL couche double, face unique : environ 8,54 GB, DVD couche unique, double face : environ 8,54 GB, DVD couche double, double face (peu fréquent) : environ 17,08 GB, MiniDVD : couche unique, face unique : environ 1,4 GB, MiniDVD : couche unique, double face : environ 2,66 GB, MiniDVD : double couche, face unique : environ 2,66 GB, MiniDVD : double couche, double face : environ 5,2 GB.

== Ethernet ==
Ethernet est un protocole de réseau local à commutation de paquets. Bien qu'il implémente la couche physique (PHY) et la sous-couche Media Access Control  (MAC), le protocole Ethernet est classé dans la couche de liaison, car les formats de trames que le standard définit sont normalisés et peuvent être encapsulés dans des protocoles autres que ses propres couches physiques MAC et PHY. Ces couches physiques font l'objet de normes séparées en fonction des débits, du support de transmission, de la longueur des liaisons et des conditions environnementales.
Ethernet a été standardisé sous le nom IEEE 802.3. C'est maintenant une norme internationale : ISO/IEC 8802-3.

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== Live CD ==

Un Live CD (la traduction CD autonome a également été proposée par le projet Debian) est un CD qui contient un système d’exploitation exécutable sans installation, qui se lance au démarrage de l’ordinateur. Par extension, liveCD désigne un système d’exploitation présent sur un support externe amorçable. Les supports de stockage typiques sont le CD, le DVD et la clé USB.


== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais NT File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993.

== PC ==

Le sigle PC ( Personnal Computer/Ordinateur Personnel ) est utilisé pour désigner un ordinateur compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, superordinateur, serveur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== Rolling release ==

Une approche de &quot;rolling release&quot; se réfère à un système en constante évolution, alimenté sans fin par de nouveaux paquets ou de mises à jour de paquets déjà existants, en opposition à un système figé - gelé (freeze) où les seules mises à jour seront des correctifs de sécurité. Sid et testing sont des &quot;rolling release&quot;; Lenny est une version figée (freeze).

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement : « Lis le foutu manuel ») ! Hum...

== SATA ==

Le Serial ATA (ou S-ATA ou SATA) est un bus informatique principalement conçu pour le transfert de données entre un ordinateur et un disque dur mais aussi utilisé pour les lecteurs cd/dvd. C'est l'évolution du standard Advanced Technology Attachment (ATA ou IDE).
Le Serial ATA a de multiples avantages par rapport à son prédécesseur, les trois principaux étant sa vitesse, la gestion des câbles et le branchement à chaud (Hot-Plug). L'ancienne norme ATA est communément désignée sous le nom « Parallel ATA » (P-ATA) afin que les deux ne soient pas confondues.

== SCSI ==

SCSI, Small Computer System Interface en anglais, est un standard définissant un bus informatique permettant de relier un ordinateur à des périphériques ou bien même à un autre ordinateur.
La grande différence apportée par ce bus, est qu'il soulage le processeur des commandes envoyées au périphérique, commandes qui sont traitées directement par le périphérique SCSI lui-même.
Ce système est beaucoup plus rapide qui l'interface E-IDE qui accapare un pourcentage plus ou moins important du processeur.

== SSH ==

Secure Shell (SSH) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole SSH a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== Terminal ==

Aussi appelé console, ligne de commande ou tty, c'est l'interface texte qui permet l'entrée de commandes. Lorsqu'une commande est terminée, le prompt ( user@debian:/repertoire$ ) réapparaît et attend l'entrée d'une autre commande.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

[[Catégorie:Glossaire]]</text>
      <sha1>5ejg2zwjwyn6ypur99s4p85648uan1b</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1044</id>
      <parentid>1039</parentid>
      <timestamp>2010-02-08T07:23:22Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="10986">{{Ébauche|les acronymes utilisés dans les pages de ce wiki}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== CDDB ==

La CDDB, pour Compact Disc Data Base, autrement dit base de données pour disque compact (musicaux), regroupe l'ensemble des informations utiles pour renseigner les tags ID3 des fichiers mp3, WMA et Ogg Vorbis.
Nombre de logiciels encodeurs sont capables de se connecter à la CDDB officielle voire à la concurrente en open source freedb.
Pour identifier les CD, CDDB utilise un identifiant nommé DiscId qui est identique à celui de FreeDB.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== DVD ==
Dénomination officielle « Digital Versatile Disc », c'est-à-dire « Disque numérique polyvalent ». Le DVD exploite un support semblable à celui du CD puisque ses dimensions sont les mêmes (disque de 120 mm de diamètre ou une version mini  de 80 mm). Les principales différences techniques concernent d'une part la densité / capacité de stockage-enregistrement et d'autre part, les procédés et traitements numériques (logiciels) pour leur sauvegarde.
Les capacités d'un DVD dépendent de ses spécificités. Il peut être simple ou double face et couche, en version pleine ou mini.

Les principales capacités et versions sont : DVD 5 couche unique, face unique : environ 4,7 GB, DVD DL couche double, face unique : environ 8,54 GB, DVD couche unique, double face : environ 8,54 GB, DVD couche double, double face (peu fréquent) : environ 17,08 GB, MiniDVD : couche unique, face unique : environ 1,4 GB, MiniDVD : couche unique, double face : environ 2,66 GB, MiniDVD : double couche, face unique : environ 2,66 GB, MiniDVD : double couche, double face : environ 5,2 GB.

== Ethernet ==
Ethernet est un protocole de réseau local à commutation de paquets. Bien qu'il implémente la couche physique (PHY) et la sous-couche Media Access Control  (MAC), le protocole Ethernet est classé dans la couche de liaison, car les formats de trames que le standard définit sont normalisés et peuvent être encapsulés dans des protocoles autres que ses propres couches physiques MAC et PHY. Ces couches physiques font l'objet de normes séparées en fonction des débits, du support de transmission, de la longueur des liaisons et des conditions environnementales.
Ethernet a été standardisé sous le nom IEEE 802.3. C'est maintenant une norme internationale : ISO/IEC 8802-3.

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== Live CD ==

Un Live CD (la traduction CD autonome a également été proposée par le projet Debian) est un CD qui contient un système d’exploitation exécutable sans installation, qui se lance au démarrage de l’ordinateur. Par extension, liveCD désigne un système d’exploitation présent sur un support externe amorçable. Les supports de stockage typiques sont le CD, le DVD et la clé USB.


== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais NT File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993.

== PC ==

Le sigle PC ( Personnal Computer/Ordinateur Personnel ) est utilisé pour désigner un ordinateur compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, superordinateur, serveur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== Rolling release ==

Une approche de &quot;rolling release&quot; se réfère à un système en constante évolution, alimenté sans fin par de nouveaux paquets ou de mises à jour de paquets déjà existants, en opposition à un système figé - gelé (freeze) où les seules mises à jour seront des correctifs de sécurité. Sid et testing sont des &quot;rolling release&quot;; Stable (Etch, Lenny) est une version figée (freeze).

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement : « Lis le &quot;foutu&quot; manuel ») ! Hum...

== SATA ==

Le Serial ATA (ou S-ATA ou SATA) est un bus informatique principalement conçu pour le transfert de données entre un ordinateur et un disque dur mais aussi utilisé pour les lecteurs cd/dvd. C'est l'évolution du standard Advanced Technology Attachment (ATA ou IDE).
Le Serial ATA a de multiples avantages par rapport à son prédécesseur, les trois principaux étant sa vitesse, la gestion des câbles et le branchement à chaud (Hot-Plug). L'ancienne norme ATA est communément désignée sous le nom « Parallel ATA » (P-ATA) afin que les deux ne soient pas confondues.

== SCSI ==

SCSI, Small Computer System Interface en anglais, est un standard définissant un bus informatique permettant de relier un ordinateur à des périphériques ou bien même à un autre ordinateur.
La grande différence apportée par ce bus, est qu'il soulage le processeur des commandes envoyées au périphérique, commandes qui sont traitées directement par le périphérique SCSI lui-même.
Ce système est beaucoup plus rapide qui l'interface E-IDE qui accapare un pourcentage plus ou moins important du processeur.

== SSH ==

Secure Shell (SSH) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole SSH a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== Terminal ==

Aussi appelé console, ligne de commande ou tty, c'est l'interface texte qui permet l'entrée de commandes. Lorsqu'une commande est terminée, le prompt ( user@debian:/repertoire$ ) réapparaît et attend l'entrée d'une autre commande.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

[[Catégorie:Glossaire]]</text>
      <sha1>gbda96m5hv6z96ve20rnd0i8tl4c20x</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1260</id>
      <parentid>1044</parentid>
      <timestamp>2010-04-02T09:10:23Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="11569">{{Ébauche|les acronymes utilisés dans les pages de ce wiki}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== CDDB ==

La CDDB, pour Compact Disc Data Base, autrement dit base de données pour disque compact (musicaux), regroupe l'ensemble des informations utiles pour renseigner les tags ID3 des fichiers mp3, WMA et Ogg Vorbis.
Nombre de logiciels encodeurs sont capables de se connecter à la CDDB officielle voire à la concurrente en open source freedb.
Pour identifier les CD, CDDB utilise un identifiant nommé DiscId qui est identique à celui de FreeDB.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== DVD ==
Dénomination officielle « Digital Versatile Disc », c'est-à-dire « Disque numérique polyvalent ». Le DVD exploite un support semblable à celui du CD puisque ses dimensions sont les mêmes (disque de 120 mm de diamètre ou une version mini  de 80 mm). Les principales différences techniques concernent d'une part la densité / capacité de stockage-enregistrement et d'autre part, les procédés et traitements numériques (logiciels) pour leur sauvegarde.
Les capacités d'un DVD dépendent de ses spécificités. Il peut être simple ou double face et couche, en version pleine ou mini.

Les principales capacités et versions sont : DVD 5 couche unique, face unique : environ 4,7 GB, DVD DL couche double, face unique : environ 8,54 GB, DVD couche unique, double face : environ 8,54 GB, DVD couche double, double face (peu fréquent) : environ 17,08 GB, MiniDVD : couche unique, face unique : environ 1,4 GB, MiniDVD : couche unique, double face : environ 2,66 GB, MiniDVD : double couche, face unique : environ 2,66 GB, MiniDVD : double couche, double face : environ 5,2 GB.

== Ethernet ==
Ethernet est un protocole de réseau local à commutation de paquets. Bien qu'il implémente la couche physique (PHY) et la sous-couche Media Access Control  (MAC), le protocole Ethernet est classé dans la couche de liaison, car les formats de trames que le standard définit sont normalisés et peuvent être encapsulés dans des protocoles autres que ses propres couches physiques MAC et PHY. Ces couches physiques font l'objet de normes séparées en fonction des débits, du support de transmission, de la longueur des liaisons et des conditions environnementales.
Ethernet a été standardisé sous le nom IEEE 802.3. C'est maintenant une norme internationale : ISO/IEC 8802-3.

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== Live CD ==

Un Live CD (la traduction CD autonome a également été proposée par le projet Debian) est un CD qui contient un système d’exploitation exécutable sans installation, qui se lance au démarrage de l’ordinateur. Par extension, liveCD désigne un système d’exploitation présent sur un support externe amorçable. Les supports de stockage typiques sont le CD, le DVD et la clé USB.


== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais NT File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993.

== PC ==

Le sigle PC ( Personnal Computer/Ordinateur Personnel ) est utilisé pour désigner un ordinateur compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, superordinateur, serveur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== RAM ==

La mémoire vive, mémoire système ou mémoire volatile, aussi appelée RAM de l'anglais Random Access Memory (que l'on traduit en français par 'mémoire à accès direct'), est la mémoire informatique dans laquelle un ordinateur place les données lors de leur traitement. Les caractéristiques de cette mémoire sont :
sa rapidité d'accès (cette rapidité est essentielle pour fournir rapidement les données au processeur) ;
sa volatilité (cette volatilité implique que les données sont perdues dès que l'ordinateur cesse d'être alimenté en électricité).

== Rolling release ==

Une approche de &quot;rolling release&quot; se réfère à un système en constante évolution, alimenté sans fin par de nouveaux paquets ou de mises à jour de paquets déjà existants, en opposition à un système figé - gelé (freeze) où les seules mises à jour seront des correctifs de sécurité. Sid et testing sont des &quot;rolling release&quot;; Stable (Etch, Lenny) est une version figée (freeze).

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement : « Lis le &quot;foutu&quot; manuel ») ! Hum...

== SATA ==

Le Serial ATA (ou S-ATA ou SATA) est un bus informatique principalement conçu pour le transfert de données entre un ordinateur et un disque dur mais aussi utilisé pour les lecteurs cd/dvd. C'est l'évolution du standard Advanced Technology Attachment (ATA ou IDE).
Le Serial ATA a de multiples avantages par rapport à son prédécesseur, les trois principaux étant sa vitesse, la gestion des câbles et le branchement à chaud (Hot-Plug). L'ancienne norme ATA est communément désignée sous le nom « Parallel ATA » (P-ATA) afin que les deux ne soient pas confondues.

== SCSI ==

SCSI, Small Computer System Interface en anglais, est un standard définissant un bus informatique permettant de relier un ordinateur à des périphériques ou bien même à un autre ordinateur.
La grande différence apportée par ce bus, est qu'il soulage le processeur des commandes envoyées au périphérique, commandes qui sont traitées directement par le périphérique SCSI lui-même.
Ce système est beaucoup plus rapide qui l'interface E-IDE qui accapare un pourcentage plus ou moins important du processeur.

== SSH ==

Secure Shell (SSH) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole SSH a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== Terminal ==

Aussi appelé console, ligne de commande ou tty, c'est l'interface texte qui permet l'entrée de commandes. Lorsqu'une commande est terminée, le prompt ( user@debian:/repertoire$ ) réapparaît et attend l'entrée d'une autre commande.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

[[Catégorie:Glossaire]]</text>
      <sha1>3arwuruglidsyh4f35zs88bslfmaz03</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1406</id>
      <parentid>1260</parentid>
      <timestamp>2010-04-16T08:22:02Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="12364">{{Ébauche|les acronymes utilisés dans les pages de ce wiki}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== CDDB ==

La CDDB, pour Compact Disc Data Base, autrement dit base de données pour disque compact (musicaux), regroupe l'ensemble des informations utiles pour renseigner les tags ID3 des fichiers mp3, WMA et Ogg Vorbis.
Nombre de logiciels encodeurs sont capables de se connecter à la CDDB officielle voire à la concurrente en open source freedb.
Pour identifier les CD, CDDB utilise un identifiant nommé DiscId qui est identique à celui de FreeDB.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== DVD ==
Dénomination officielle « Digital Versatile Disc », c'est-à-dire « Disque numérique polyvalent ». Le DVD exploite un support semblable à celui du CD puisque ses dimensions sont les mêmes (disque de 120 mm de diamètre ou une version mini  de 80 mm). Les principales différences techniques concernent d'une part la densité / capacité de stockage-enregistrement et d'autre part, les procédés et traitements numériques (logiciels) pour leur sauvegarde.
Les capacités d'un DVD dépendent de ses spécificités. Il peut être simple ou double face et couche, en version pleine ou mini.

Les principales capacités et versions sont : DVD 5 couche unique, face unique : environ 4,7 GB, DVD DL couche double, face unique : environ 8,54 GB, DVD couche unique, double face : environ 8,54 GB, DVD couche double, double face (peu fréquent) : environ 17,08 GB, MiniDVD : couche unique, face unique : environ 1,4 GB, MiniDVD : couche unique, double face : environ 2,66 GB, MiniDVD : double couche, face unique : environ 2,66 GB, MiniDVD : double couche, double face : environ 5,2 GB.

== Ethernet ==
Ethernet est un protocole de réseau local à commutation de paquets. Bien qu'il implémente la couche physique (PHY) et la sous-couche Media Access Control  (MAC), le protocole Ethernet est classé dans la couche de liaison, car les formats de trames que le standard définit sont normalisés et peuvent être encapsulés dans des protocoles autres que ses propres couches physiques MAC et PHY. Ces couches physiques font l'objet de normes séparées en fonction des débits, du support de transmission, de la longueur des liaisons et des conditions environnementales.
Ethernet a été standardisé sous le nom IEEE 802.3. C'est maintenant une norme internationale : ISO/IEC 8802-3.

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IGD ==

Integrated Graphics Device, est une unité de traitement graphique (Graphics processing unit ou GPU) directement intégrée dans la carte mère d'un PC

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== Live CD ==

Un Live CD (la traduction CD autonome a également été proposée par le projet Debian) est un CD qui contient un système d’exploitation exécutable sans installation, qui se lance au démarrage de l’ordinateur. Par extension, liveCD désigne un système d’exploitation présent sur un support externe amorçable. Les supports de stockage typiques sont le CD, le DVD et la clé USB.


== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais NT File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993.

== PEG PCI ==

PEG Link Mode (PCI Express Graphics Link Mode) est une fonctionnalité disponible dans le BIOS de certaines Carte mère de arque ASUS, qui permet un overclocks automatique de la carte vidéo.

== PC ==

Le sigle PC ( Personnal Computer/Ordinateur Personnel ) est utilisé pour désigner un ordinateur compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, superordinateur, serveur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== PCIe ==

PCI Express (Peripheral Component Interconnect Express), officiellement abrégé en PCIe (ou PCI-E) est un &quot;slot&quot; d'extension standard conçu pour remplacer les anciens PCI, PCI-Xet et AGP. PCIe 2.1 est la dernière norme pour les cartes d'extension.
Il spécifie un bus local série (« bus PCI express ») et un connecteur qui sert à connecter des cartes d’extension sur la carte mère d’un ordinateur.

== RAM ==

La mémoire vive, mémoire système ou mémoire volatile, aussi appelée RAM de l'anglais Random Access Memory (que l'on traduit en français par 'mémoire à accès direct'), est la mémoire informatique dans laquelle un ordinateur place les données lors de leur traitement. Les caractéristiques de cette mémoire sont :
sa rapidité d'accès (cette rapidité est essentielle pour fournir rapidement les données au processeur) ;
sa volatilité (cette volatilité implique que les données sont perdues dès que l'ordinateur cesse d'être alimenté en électricité).

== Rolling release ==

Une approche de &quot;rolling release&quot; se réfère à un système en constante évolution, alimenté sans fin par de nouveaux paquets ou de mises à jour de paquets déjà existants, en opposition à un système figé - gelé (freeze) où les seules mises à jour seront des correctifs de sécurité. Sid et testing sont des &quot;rolling release&quot;; Stable (Etch, Lenny) est une version figée (freeze).

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement : « Lis le &quot;foutu&quot; manuel ») ! Hum...

== SATA ==

Le Serial ATA (ou S-ATA ou SATA) est un bus informatique principalement conçu pour le transfert de données entre un ordinateur et un disque dur mais aussi utilisé pour les lecteurs cd/dvd. C'est l'évolution du standard Advanced Technology Attachment (ATA ou IDE).
Le Serial ATA a de multiples avantages par rapport à son prédécesseur, les trois principaux étant sa vitesse, la gestion des câbles et le branchement à chaud (Hot-Plug). L'ancienne norme ATA est communément désignée sous le nom « Parallel ATA » (P-ATA) afin que les deux ne soient pas confondues.

== SCSI ==

SCSI, Small Computer System Interface en anglais, est un standard définissant un bus informatique permettant de relier un ordinateur à des périphériques ou bien même à un autre ordinateur.
La grande différence apportée par ce bus, est qu'il soulage le processeur des commandes envoyées au périphérique, commandes qui sont traitées directement par le périphérique SCSI lui-même.
Ce système est beaucoup plus rapide qui l'interface E-IDE qui accapare un pourcentage plus ou moins important du processeur.

== SSH ==

Secure Shell (SSH) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole SSH a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== Terminal ==

Aussi appelé console, ligne de commande ou tty, c'est l'interface texte qui permet l'entrée de commandes. Lorsqu'une commande est terminée, le prompt ( user@debian:/repertoire$ ) réapparaît et attend l'entrée d'une autre commande.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

[[Catégorie:Glossaire]]</text>
      <sha1>i2hrfslh51hrc6pqd5cmemyevw7d200</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1417</id>
      <parentid>1406</parentid>
      <timestamp>2010-04-16T14:47:11Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="12364">{{Ébauche|les acronymes utilisés dans les pages de ce wiki}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== CDDB ==

La CDDB, pour Compact Disc Data Base, autrement dit base de données pour disque compact (musicaux), regroupe l'ensemble des informations utiles pour renseigner les tags ID3 des fichiers mp3, WMA et Ogg Vorbis.
Nombre de logiciels encodeurs sont capables de se connecter à la CDDB officielle voire à la concurrente en open source freedb.
Pour identifier les CD, CDDB utilise un identifiant nommé DiscId qui est identique à celui de FreeDB.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== DVD ==
Dénomination officielle « Digital Versatile Disc », c'est-à-dire « Disque numérique polyvalent ». Le DVD exploite un support semblable à celui du CD puisque ses dimensions sont les mêmes (disque de 120 mm de diamètre ou une version mini  de 80 mm). Les principales différences techniques concernent d'une part la densité / capacité de stockage-enregistrement et d'autre part, les procédés et traitements numériques (logiciels) pour leur sauvegarde.
Les capacités d'un DVD dépendent de ses spécificités. Il peut être simple ou double face et couche, en version pleine ou mini.

Les principales capacités et versions sont : DVD 5 couche unique, face unique : environ 4,7 GB, DVD DL couche double, face unique : environ 8,54 GB, DVD couche unique, double face : environ 8,54 GB, DVD couche double, double face (peu fréquent) : environ 17,08 GB, MiniDVD : couche unique, face unique : environ 1,4 GB, MiniDVD : couche unique, double face : environ 2,66 GB, MiniDVD : double couche, face unique : environ 2,66 GB, MiniDVD : double couche, double face : environ 5,2 GB.

== Ethernet ==
Ethernet est un protocole de réseau local à commutation de paquets. Bien qu'il implémente la couche physique (PHY) et la sous-couche Media Access Control  (MAC), le protocole Ethernet est classé dans la couche de liaison, car les formats de trames que le standard définit sont normalisés et peuvent être encapsulés dans des protocoles autres que ses propres couches physiques MAC et PHY. Ces couches physiques font l'objet de normes séparées en fonction des débits, du support de transmission, de la longueur des liaisons et des conditions environnementales.
Ethernet a été standardisé sous le nom IEEE 802.3. C'est maintenant une norme internationale : ISO/IEC 8802-3.

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IGD ==

Integrated Graphics Device, est une unité de traitement graphique (Graphics processing unit ou GPU) directement intégrée dans la carte mère d'un PC

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== Live CD ==

Un Live CD (la traduction CD autonome a également été proposée par le projet Debian) est un CD qui contient un système d’exploitation exécutable sans installation, qui se lance au démarrage de l’ordinateur. Par extension, liveCD désigne un système d’exploitation présent sur un support externe amorçable. Les supports de stockage typiques sont le CD, le DVD et la clé USB.


== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais NT File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993.

== PEG PCI ==

PEG Link Mode (PCI Express Graphics Link Mode) est une fonctionnalité disponible dans le BIOS de certaines Carte mère de marque ASUS, qui permet un overclock automatique de la carte vidéo.

== PC ==

Le sigle PC ( Personnal Computer/Ordinateur Personnel ) est utilisé pour désigner un ordinateur compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, superordinateur, serveur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== PCIe ==

PCI Express (Peripheral Component Interconnect Express), officiellement abrégé en PCIe (ou PCI-E) est un &quot;slot&quot; d'extension standard conçu pour remplacer les anciens PCI, PCI-Xet et AGP. PCIe 2.1 est la dernière norme pour les cartes d'extension.
Il spécifie un bus local série (« bus PCI express ») et un connecteur qui sert à connecter des cartes d’extension sur la carte mère d’un ordinateur.

== RAM ==

La mémoire vive, mémoire système ou mémoire volatile, aussi appelée RAM de l'anglais Random Access Memory (que l'on traduit en français par 'mémoire à accès direct'), est la mémoire informatique dans laquelle un ordinateur place les données lors de leur traitement. Les caractéristiques de cette mémoire sont :
sa rapidité d'accès (cette rapidité est essentielle pour fournir rapidement les données au processeur) ;
sa volatilité (cette volatilité implique que les données sont perdues dès que l'ordinateur cesse d'être alimenté en électricité).

== Rolling release ==

Une approche de &quot;rolling release&quot; se réfère à un système en constante évolution, alimenté sans fin par de nouveaux paquets ou de mises à jour de paquets déjà existants, en opposition à un système figé - gelé (freeze) où les seules mises à jour seront des correctifs de sécurité. Sid et testing sont des &quot;rolling release&quot;; Stable (Etch, Lenny) est une version figée (freeze).

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement : « Lis le &quot;foutu&quot; manuel ») ! Hum...

== SATA ==

Le Serial ATA (ou S-ATA ou SATA) est un bus informatique principalement conçu pour le transfert de données entre un ordinateur et un disque dur mais aussi utilisé pour les lecteurs cd/dvd. C'est l'évolution du standard Advanced Technology Attachment (ATA ou IDE).
Le Serial ATA a de multiples avantages par rapport à son prédécesseur, les trois principaux étant sa vitesse, la gestion des câbles et le branchement à chaud (Hot-Plug). L'ancienne norme ATA est communément désignée sous le nom « Parallel ATA » (P-ATA) afin que les deux ne soient pas confondues.

== SCSI ==

SCSI, Small Computer System Interface en anglais, est un standard définissant un bus informatique permettant de relier un ordinateur à des périphériques ou bien même à un autre ordinateur.
La grande différence apportée par ce bus, est qu'il soulage le processeur des commandes envoyées au périphérique, commandes qui sont traitées directement par le périphérique SCSI lui-même.
Ce système est beaucoup plus rapide qui l'interface E-IDE qui accapare un pourcentage plus ou moins important du processeur.

== SSH ==

Secure Shell (SSH) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole SSH a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== Terminal ==

Aussi appelé console, ligne de commande ou tty, c'est l'interface texte qui permet l'entrée de commandes. Lorsqu'une commande est terminée, le prompt ( user@debian:/repertoire$ ) réapparaît et attend l'entrée d'une autre commande.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

[[Catégorie:Glossaire]]</text>
      <sha1>ldmjajy5h6llv3qm2lpn0rvz1pnne2y</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1420</id>
      <parentid>1417</parentid>
      <timestamp>2010-04-17T13:24:44Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="13166">{{Ébauche|les acronymes utilisés dans les pages de ce wiki}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== CDDB ==

La CDDB, pour Compact Disc Data Base, autrement dit base de données pour disque compact (musicaux), regroupe l'ensemble des informations utiles pour renseigner les tags ID3 des fichiers mp3, WMA et Ogg Vorbis.
Nombre de logiciels encodeurs sont capables de se connecter à la CDDB officielle voire à la concurrente en open source freedb.
Pour identifier les CD, CDDB utilise un identifiant nommé DiscId qui est identique à celui de FreeDB.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== DVD ==
Dénomination officielle « Digital Versatile Disc », c'est-à-dire « Disque numérique polyvalent ». Le DVD exploite un support semblable à celui du CD puisque ses dimensions sont les mêmes (disque de 120 mm de diamètre ou une version mini  de 80 mm). Les principales différences techniques concernent d'une part la densité / capacité de stockage-enregistrement et d'autre part, les procédés et traitements numériques (logiciels) pour leur sauvegarde.
Les capacités d'un DVD dépendent de ses spécificités. Il peut être simple ou double face et couche, en version pleine ou mini.

Les principales capacités et versions sont : DVD 5 couche unique, face unique : environ 4,7 GB, DVD DL couche double, face unique : environ 8,54 GB, DVD couche unique, double face : environ 8,54 GB, DVD couche double, double face (peu fréquent) : environ 17,08 GB, MiniDVD : couche unique, face unique : environ 1,4 GB, MiniDVD : couche unique, double face : environ 2,66 GB, MiniDVD : double couche, face unique : environ 2,66 GB, MiniDVD : double couche, double face : environ 5,2 GB.

== Ethernet ==
Ethernet est un protocole de réseau local à commutation de paquets. Bien qu'il implémente la couche physique (PHY) et la sous-couche Media Access Control  (MAC), le protocole Ethernet est classé dans la couche de liaison, car les formats de trames que le standard définit sont normalisés et peuvent être encapsulés dans des protocoles autres que ses propres couches physiques MAC et PHY. Ces couches physiques font l'objet de normes séparées en fonction des débits, du support de transmission, de la longueur des liaisons et des conditions environnementales.
Ethernet a été standardisé sous le nom IEEE 802.3. C'est maintenant une norme internationale : ISO/IEC 8802-3.

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IGD ==

Integrated Graphics Device, est une unité de traitement graphique (Graphics processing unit ou GPU) directement intégrée dans la carte mère d'un PC

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== Live CD ==

Un Live CD (la traduction CD autonome a également été proposée par le projet Debian) est un CD qui contient un système d’exploitation exécutable sans installation, qui se lance au démarrage de l’ordinateur. Par extension, liveCD désigne un système d’exploitation présent sur un support externe amorçable. Les supports de stockage typiques sont le CD, le DVD et la clé USB.


== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais NT File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993.

== PEG PCI ==

PEG Link Mode (PCI Express Graphics Link Mode) est une fonctionnalité disponible dans le BIOS de certaines Carte mère de marque ASUS, qui permet une préséance  (ordre de démarrage) et un overclock automatique de la carte vidéo.

== PC ==

Le sigle PC ( Personnal Computer/Ordinateur Personnel ) est utilisé pour désigner un ordinateur compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, superordinateur, serveur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== PCIe ==

PCI Express (Peripheral Component Interconnect Express), officiellement abrégé en PCIe (ou PCI-E) est un &quot;slot&quot; d'extension standard conçu pour remplacer les anciens PCI, PCI-Xet et AGP. PCIe 2.1 est la dernière norme pour les cartes d'extension.
Il spécifie un bus local série (« bus PCI express ») et un connecteur qui sert à connecter des cartes d’extension sur la carte mère d’un ordinateur.

== RAM ==

La mémoire vive, mémoire système ou mémoire volatile, aussi appelée RAM de l'anglais Random Access Memory (que l'on traduit en français par 'mémoire à accès direct'), est la mémoire informatique dans laquelle un ordinateur place les données lors de leur traitement. Les caractéristiques de cette mémoire sont :
sa rapidité d'accès (cette rapidité est essentielle pour fournir rapidement les données au processeur) ;
sa volatilité (cette volatilité implique que les données sont perdues dès que l'ordinateur cesse d'être alimenté en électricité).

== Rolling release ==

Une approche de &quot;rolling release&quot; se réfère à un système en constante évolution, alimenté sans fin par de nouveaux paquets ou de mises à jour de paquets déjà existants, en opposition à un système figé - gelé (freeze) où les seules mises à jour seront des correctifs de sécJe regarde cela en ce moment et c'est vrai qu'il y a beaucoup de fichiers bizzard dans les dossiers que tu dis avec des lignes de codes et des ## en francais cela va un peu m'aider.

Oui et la moyenne n'est pas fini car les eleves arrive lundi a 8h00 et il faut que j'ai fini donc meme si je dors 3h/4h seulement les 2 prochaines nuits il faut que je soit pres a les recevoir ...
urité. Sid et testing sont des &quot;rolling release&quot;; Stable (Etch, Lenny) est une version figée (freeze).

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement : « Lis le &quot;foutu&quot; manuel ») ! Hum...

== SATA ==

Le Serial ATA (ou S-ATA ou SATA) est un bus informatique principalement conçu pour le transfert de données entre un ordinateur et un disque dur mais aussi utilisé pour les lecteurs cd/dvd. C'est l'évolution du standard Advanced Technology Attachment (ATA ou IDE).
Le Serial ATA a de multiples avantages par rapport à son prédécesseur, les trois principaux étant sa vitesse, la gestion des câbles et le branchement à chaud (Hot-Plug). L'ancienne norme ATA est communément désignée sous le nom « Parallel ATA » (P-ATA) afin que les deux ne soient pas confondues.

== SCSI ==

SCSI, Small Computer System Interface en anglais, est un standard définissant un bus informatique permettant de relier un ordinateur à des périphériques ou bien même à un autre ordinateur.
La grande différence apportée par ce bus, est qu'il soulage le processeur des commandes envoyées au périphérique, commandes qui sont traitées directement par le périphérique SCSI lui-même.
Ce système est beaucoup plus rapide qui l'interface E-IDE qui accapare un pourcentage plus ou moins important du processeur.

== SSH ==

Secure Shell (SSH) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole SSH a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== Terminal ==

Aussi appelé console, ligne de commande ou tty, c'est l'interface texte qui permet l'entrée de commandes. Lorsqu'une commande est terminée, le promJe regarde cela en ce moment et c'est vrai qu'il y a beaucoup de fichiers bizzard dans les dossiers que tu dis avec des lignes de codes et des ## en francais cela va un peu m'aider.

Oui et la moyenne n'est pas fini car les eleves arrive lundi a 8h00 et il faut que j'ai fini donc meme si je dors 3h/4h seulement les 2 prochaines nuits il faut que je soit pres a les recevoir ...
pt ( user@debian:/repertoire$ ) réapparaît et attend l'entrée d'une autre commande.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

[[Catégorie:Glossaire]]</text>
      <sha1>kz178hxrue0mr2g3rcow71whpyhua3n</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1421</id>
      <parentid>1420</parentid>
      <timestamp>2010-04-17T18:06:26Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="12803">{{Ébauche|les acronymes utilisés dans les pages de ce wiki}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== CDDB ==

La CDDB, pour Compact Disc Data Base, autrement dit base de données pour disque compact (musicaux), regroupe l'ensemble des informations utiles pour renseigner les tags ID3 des fichiers mp3, WMA et Ogg Vorbis.
Nombre de logiciels encodeurs sont capables de se connecter à la CDDB officielle voire à la concurrente en open source freedb.
Pour identifier les CD, CDDB utilise un identifiant nommé DiscId qui est identique à celui de FreeDB.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== DVD ==
Dénomination officielle « Digital Versatile Disc », c'est-à-dire « Disque numérique polyvalent ». Le DVD exploite un support semblable à celui du CD puisque ses dimensions sont les mêmes (disque de 120 mm de diamètre ou une version mini  de 80 mm). Les principales différences techniques concernent d'une part la densité / capacité de stockage-enregistrement et d'autre part, les procédés et traitements numériques (logiciels) pour leur sauvegarde.
Les capacités d'un DVD dépendent de ses spécificités. Il peut être simple ou double face et couche, en version pleine ou mini.

Les principales capacités et versions sont : DVD 5 couche unique, face unique : environ 4,7 GB, DVD DL couche double, face unique : environ 8,54 GB, DVD couche unique, double face : environ 8,54 GB, DVD couche double, double face (peu fréquent) : environ 17,08 GB, MiniDVD : couche unique, face unique : environ 1,4 GB, MiniDVD : couche unique, double face : environ 2,66 GB, MiniDVD : double couche, face unique : environ 2,66 GB, MiniDVD : double couche, double face : environ 5,2 GB.

== Ethernet ==
Ethernet est un protocole de réseau local à commutation de paquets. Bien qu'il implémente la couche physique (PHY) et la sous-couche Media Access Control  (MAC), le protocole Ethernet est classé dans la couche de liaison, car les formats de trames que le standard définit sont normalisés et peuvent être encapsulés dans des protocoles autres que ses propres couches physiques MAC et PHY. Ces couches physiques font l'objet de normes séparées en fonction des débits, du support de transmission, de la longueur des liaisons et des conditions environnementales.
Ethernet a été standardisé sous le nom IEEE 802.3. C'est maintenant une norme internationale : ISO/IEC 8802-3.

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IGD ==

Integrated Graphics Device, est une unité de traitement graphique (Graphics processing unit ou GPU) directement intégrée dans la carte mère d'un PC

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== Live CD ==

Un Live CD (la traduction CD autonome a également été proposée par le projet Debian) est un CD qui contient un système d’exploitation exécutable sans installation, qui se lance au démarrage de l’ordinateur. Par extension, liveCD désigne un système d’exploitation présent sur un support externe amorçable. Les supports de stockage typiques sont le CD, le DVD et la clé USB.


== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais NT File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993.

== PEG PCI ==

PEG Link Mode (PCI Express Graphics Link Mode) est une fonctionnalité disponible dans le BIOS de certaines Carte mère de marque ASUS, qui permet une préséance  (ordre de démarrage) et un overclock automatique de la carte vidéo.

== PC ==

Le sigle PC ( Personnal Computer/Ordinateur Personnel ) est utilisé pour désigner un ordinateur compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, superordinateur, serveur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== PCIe ==

PCI Express (Peripheral Component Interconnect Express), officiellement abrégé en PCIe (ou PCI-E) est un &quot;slot&quot; d'extension standard conçu pour remplacer les anciens PCI, PCI-Xet et AGP. PCIe 2.1 est la dernière norme pour les cartes d'extension.
Il spécifie un bus local série (« bus PCI express ») et un connecteur qui sert à connecter des cartes d’extension sur la carte mère d’un ordinateur.

== RAM ==

La mémoire vive, mémoire système ou mémoire volatile, aussi appelée RAM de l'anglais Random Access Memory (que l'on traduit en français par 'mémoire à accès direct'), est la mémoire informatique dans laquelle un ordinateur place les données lors de leur traitement. Les caractéristiques de cette mémoire sont :
sa rapidité d'accès (cette rapidité est essentielle pour fournir rapidement les données au processeur) ;
sa volatilité (cette volatilité implique que les données sont perdues dès que l'ordinateur cesse d'être alimenté en électricité).

== Rolling release ==

Une approche de &quot;rolling release&quot; se réfère à un système en constante évolution, alimenté sans fin par de nouveaux paquets ou de mises à jour de paquets déjà existants, en opposition à un système figé - gelé (freeze) où les seules mises à jour seront des correctifs de sécurité. Sid et testing sont des &quot;rolling release&quot;; Stable (Etch, Lenny) est une version figée (freeze).

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement mais expurgé) : « Relis le &quot;foutu&quot; manuel ») ! Hum...

== SATA ==

Le Serial ATA (ou S-ATA ou SATA) est un bus informatique principalement conçu pour le transfert de données entre un ordinateur et un disque dur mais aussi utilisé pour les lecteurs cd/dvd. C'est l'évolution du standard Advanced Technology Attachment (ATA ou IDE).
Le Serial ATA a de multiples avantages par rapport à son prédécesseur, les trois principaux étant sa vitesse, la gestion des câbles et le branchement à chaud (Hot-Plug). L'ancienne norme ATA est communément désignée sous le nom « Parallel ATA » (P-ATA) afin que les deux ne soient pas confondues.

== SCSI ==

SCSI, Small Computer System Interface en anglais, est un standard définissant un bus informatique permettant de relier un ordinateur à des périphériques ou bien même à un autre ordinateur.
La grande différence apportée par ce bus, est qu'il soulage le processeur des commandes envoyées au périphérique, commandes qui sont traitées directement par le périphérique SCSI lui-même.
Ce système est beaucoup plus rapide qui l'interface E-IDE qui accapare un pourcentage plus ou moins important du processeur.

== SSH ==

Secure Shell (SSH) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole SSH a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== Terminal ==

Aussi appelé console, ligne de commande ou tty, c'est l'interface texte qui permet l'entrée de commandes. Lorsqu'une commande est terminée, le promJe regarde cela en ce moment et c'est vrai qu'il y a beaucoup de fichiers bizzard dans les dossiers que tu dis avec des lignes de codes et des ## en francais cela va un peu m'aider.

Oui et la moyenne n'est pas fini car les eleves arrive lundi a 8h00 et il faut que j'ai fini donc meme si je dors 3h/4h seulement les 2 prochaines nuits il faut que je soit pres a les recevoir ...
pt ( user@debian:/repertoire$ ) réapparaît et attend l'entrée d'une autre commande.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

[[Catégorie:Glossaire]]</text>
      <sha1>icdtc13bedfw3pf8clzxbfwxn5mwmv9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1422</id>
      <parentid>1421</parentid>
      <timestamp>2010-04-17T19:23:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Terminal */</comment>
      <text xml:space="preserve" bytes="12423">{{Ébauche|les acronymes utilisés dans les pages de ce wiki}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== CDDB ==

La CDDB, pour Compact Disc Data Base, autrement dit base de données pour disque compact (musicaux), regroupe l'ensemble des informations utiles pour renseigner les tags ID3 des fichiers mp3, WMA et Ogg Vorbis.
Nombre de logiciels encodeurs sont capables de se connecter à la CDDB officielle voire à la concurrente en open source freedb.
Pour identifier les CD, CDDB utilise un identifiant nommé DiscId qui est identique à celui de FreeDB.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== DVD ==
Dénomination officielle « Digital Versatile Disc », c'est-à-dire « Disque numérique polyvalent ». Le DVD exploite un support semblable à celui du CD puisque ses dimensions sont les mêmes (disque de 120 mm de diamètre ou une version mini  de 80 mm). Les principales différences techniques concernent d'une part la densité / capacité de stockage-enregistrement et d'autre part, les procédés et traitements numériques (logiciels) pour leur sauvegarde.
Les capacités d'un DVD dépendent de ses spécificités. Il peut être simple ou double face et couche, en version pleine ou mini.

Les principales capacités et versions sont : DVD 5 couche unique, face unique : environ 4,7 GB, DVD DL couche double, face unique : environ 8,54 GB, DVD couche unique, double face : environ 8,54 GB, DVD couche double, double face (peu fréquent) : environ 17,08 GB, MiniDVD : couche unique, face unique : environ 1,4 GB, MiniDVD : couche unique, double face : environ 2,66 GB, MiniDVD : double couche, face unique : environ 2,66 GB, MiniDVD : double couche, double face : environ 5,2 GB.

== Ethernet ==
Ethernet est un protocole de réseau local à commutation de paquets. Bien qu'il implémente la couche physique (PHY) et la sous-couche Media Access Control  (MAC), le protocole Ethernet est classé dans la couche de liaison, car les formats de trames que le standard définit sont normalisés et peuvent être encapsulés dans des protocoles autres que ses propres couches physiques MAC et PHY. Ces couches physiques font l'objet de normes séparées en fonction des débits, du support de transmission, de la longueur des liaisons et des conditions environnementales.
Ethernet a été standardisé sous le nom IEEE 802.3. C'est maintenant une norme internationale : ISO/IEC 8802-3.

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IGD ==

Integrated Graphics Device, est une unité de traitement graphique (Graphics processing unit ou GPU) directement intégrée dans la carte mère d'un PC

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== Live CD ==

Un Live CD (la traduction CD autonome a également été proposée par le projet Debian) est un CD qui contient un système d’exploitation exécutable sans installation, qui se lance au démarrage de l’ordinateur. Par extension, liveCD désigne un système d’exploitation présent sur un support externe amorçable. Les supports de stockage typiques sont le CD, le DVD et la clé USB.


== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais NT File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993.

== PEG PCI ==

PEG Link Mode (PCI Express Graphics Link Mode) est une fonctionnalité disponible dans le BIOS de certaines Carte mère de marque ASUS, qui permet une préséance  (ordre de démarrage) et un overclock automatique de la carte vidéo.

== PC ==

Le sigle PC ( Personnal Computer/Ordinateur Personnel ) est utilisé pour désigner un ordinateur compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, superordinateur, serveur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== PCIe ==

PCI Express (Peripheral Component Interconnect Express), officiellement abrégé en PCIe (ou PCI-E) est un &quot;slot&quot; d'extension standard conçu pour remplacer les anciens PCI, PCI-Xet et AGP. PCIe 2.1 est la dernière norme pour les cartes d'extension.
Il spécifie un bus local série (« bus PCI express ») et un connecteur qui sert à connecter des cartes d’extension sur la carte mère d’un ordinateur.

== RAM ==

La mémoire vive, mémoire système ou mémoire volatile, aussi appelée RAM de l'anglais Random Access Memory (que l'on traduit en français par 'mémoire à accès direct'), est la mémoire informatique dans laquelle un ordinateur place les données lors de leur traitement. Les caractéristiques de cette mémoire sont :
sa rapidité d'accès (cette rapidité est essentielle pour fournir rapidement les données au processeur) ;
sa volatilité (cette volatilité implique que les données sont perdues dès que l'ordinateur cesse d'être alimenté en électricité).

== Rolling release ==

Une approche de &quot;rolling release&quot; se réfère à un système en constante évolution, alimenté sans fin par de nouveaux paquets ou de mises à jour de paquets déjà existants, en opposition à un système figé - gelé (freeze) où les seules mises à jour seront des correctifs de sécurité. Sid et testing sont des &quot;rolling release&quot;; Stable (Etch, Lenny) est une version figée (freeze).

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement mais expurgé) : « Relis le &quot;foutu&quot; manuel ») ! Hum...

== SATA ==

Le Serial ATA (ou S-ATA ou SATA) est un bus informatique principalement conçu pour le transfert de données entre un ordinateur et un disque dur mais aussi utilisé pour les lecteurs cd/dvd. C'est l'évolution du standard Advanced Technology Attachment (ATA ou IDE).
Le Serial ATA a de multiples avantages par rapport à son prédécesseur, les trois principaux étant sa vitesse, la gestion des câbles et le branchement à chaud (Hot-Plug). L'ancienne norme ATA est communément désignée sous le nom « Parallel ATA » (P-ATA) afin que les deux ne soient pas confondues.

== SCSI ==

SCSI, Small Computer System Interface en anglais, est un standard définissant un bus informatique permettant de relier un ordinateur à des périphériques ou bien même à un autre ordinateur.
La grande différence apportée par ce bus, est qu'il soulage le processeur des commandes envoyées au périphérique, commandes qui sont traitées directement par le périphérique SCSI lui-même.
Ce système est beaucoup plus rapide qui l'interface E-IDE qui accapare un pourcentage plus ou moins important du processeur.

== SSH ==

Secure Shell (SSH) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole SSH a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== Terminal ==

Aussi appelé console, ligne de commande ou tty, c'est l'interface texte qui permet l'entrée de commandes. Lorsqu'une commande est terminée, le prompt ( user@debian:/repertoire$ ) réapparaît et attend l'entrée d'une autre commande.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

[[Catégorie:Glossaire]]</text>
      <sha1>ii0fh7a20lxgqhx42ah3rnyae3x1ndc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1430</id>
      <parentid>1422</parentid>
      <timestamp>2010-04-19T18:42:46Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="12487">{{Ébauche|les acronymes utilisés dans les pages de ce wiki}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== CDDB ==

La CDDB, pour Compact Disc Data Base, autrement dit base de données pour disque compact (musicaux), regroupe l'ensemble des informations utiles pour renseigner les tags ID3 des fichiers mp3, WMA et Ogg Vorbis.
Nombre de logiciels encodeurs sont capables de se connecter à la CDDB officielle voire à la concurrente en open source freedb.
Pour identifier les CD, CDDB utilise un identifiant nommé DiscId qui est identique à celui de FreeDB.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== DVD ==
Dénomination officielle « Digital Versatile Disc », c'est-à-dire « Disque numérique polyvalent ». Le DVD exploite un support semblable à celui du CD puisque ses dimensions sont les mêmes (disque de 120 mm de diamètre ou une version mini  de 80 mm). Les principales différences techniques concernent d'une part la densité / capacité de stockage-enregistrement et d'autre part, les procédés et traitements numériques (logiciels) pour leur sauvegarde.
Les capacités d'un DVD dépendent de ses spécificités. Il peut être simple ou double face et couche, en version pleine ou mini.

Les principales capacités et versions sont : DVD 5 couche unique, face unique : environ 4,7 GB, DVD DL couche double, face unique : environ 8,54 GB, DVD couche unique, double face : environ 8,54 GB, DVD couche double, double face (peu fréquent) : environ 17,08 GB, MiniDVD : couche unique, face unique : environ 1,4 GB, MiniDVD : couche unique, double face : environ 2,66 GB, MiniDVD : double couche, face unique : environ 2,66 GB, MiniDVD : double couche, double face : environ 5,2 GB.

== Ethernet ==
Ethernet est un protocole de réseau local à commutation de paquets. Bien qu'il implémente la couche physique (PHY) et la sous-couche Media Access Control  (MAC), le protocole Ethernet est classé dans la couche de liaison, car les formats de trames que le standard définit sont normalisés et peuvent être encapsulés dans des protocoles autres que ses propres couches physiques MAC et PHY. Ces couches physiques font l'objet de normes séparées en fonction des débits, du support de transmission, de la longueur des liaisons et des conditions environnementales.
Ethernet a été standardisé sous le nom IEEE 802.3. C'est maintenant une norme internationale : ISO/IEC 8802-3.

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IGD ==

Integrated Graphics Device, est une unité de traitement graphique (Graphics processing unit ou GPU) directement intégrée dans la carte mère d'un PC

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== Live CD ==

Un Live CD (la traduction CD autonome a également été proposée par le projet Debian) est un CD qui contient un système d’exploitation exécutable sans installation, qui se lance au démarrage de l’ordinateur. Par extension, liveCD désigne un système d’exploitation présent sur un support externe amorçable. Les supports de stockage typiques sont le CD, le DVD et la clé USB.


== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais NT File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993.

== PEG PCI ==

PEG Link Mode (PCI Express Graphics Link Mode) est une fonctionnalité disponible dans le BIOS de certaines Carte mère de marque ASUS, qui permet une préséance  (ordre de démarrage) et un overclock automatique de la carte vidéo.

== PC ==

Le sigle PC ( Personnal Computer/Ordinateur Personnel ) est utilisé pour désigner un ordinateur compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, superordinateur, serveur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== PCIe ==

PCI Express (Peripheral Component Interconnect Express), officiellement abrégé en PCIe (ou PCI-E) est un &quot;slot&quot; d'extension standard conçu pour remplacer les anciens PCI, PCI-Xet et AGP. PCIe 2.1 est la dernière norme pour les cartes d'extension.
Il spécifie un bus local série (« bus PCI express ») et un connecteur qui sert à connecter des cartes d’extension sur la carte mère d’un ordinateur.

== RAM ==

La mémoire vive, mémoire système ou mémoire volatile, aussi appelée RAM de l'anglais Random Access Memory (que l'on traduit en français par 'mémoire à accès direct'), est la mémoire informatique dans laquelle un ordinateur place les données lors de leur traitement. Les caractéristiques de cette mémoire sont :
sa rapidité d'accès (cette rapidité est essentielle pour fournir rapidement les données au processeur) ;
sa volatilité (cette volatilité implique que les données sont perdues dès que l'ordinateur cesse d'être alimenté en électricité).

== Rolling release ==

Une approche de &quot;rolling release&quot; se réfère à un système en constante évolution, alimenté sans fin par de nouveaux paquets ou de mises à jour de paquets déjà existants, en opposition à un système figé - gelé (freeze) où les seules mises à jour seront des correctifs de sécurité. Sid et testing sont des &quot;rolling release&quot;; Stable (Etch, Lenny) est une version figée (freeze).

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement mais expurgé) : « Relis le &quot;foutu&quot; manuel ») ! Hum...

== SATA ==

Le Serial ATA (ou S-ATA ou SATA) est un bus informatique principalement conçu pour le transfert de données entre un ordinateur et un disque dur mais aussi utilisé pour les lecteurs cd/dvd. C'est l'évolution du standard Advanced Technology Attachment (ATA ou IDE).
Le Serial ATA a de multiples avantages par rapport à son prédécesseur, les trois principaux étant sa vitesse, la gestion des câbles et le branchement à chaud (Hot-Plug). L'ancienne norme ATA est communément désignée sous le nom « Parallel ATA » (P-ATA) afin que les deux ne soient pas confondues.

== SCSI ==

SCSI, Small Computer System Interface en anglais, est un standard définissant un bus informatique permettant de relier un ordinateur à des périphériques ou bien même à un autre ordinateur.
La grande différence apportée par ce bus, est qu'il soulage le processeur des commandes envoyées au périphérique, commandes qui sont traitées directement par le périphérique SCSI lui-même.
Ce système est beaucoup plus rapide qui l'interface E-IDE qui accapare un pourcentage plus ou moins important du processeur.

== SSH ==

Secure Shell (SSH) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole SSH a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== Terminal ==

Aussi appelé console, ligne de commande ou tty, c'est l'interface texte qui permet l'entrée de commandes. Lorsqu'une commande est terminée ou dès qu'elle est lancée en arrière-plan &quot;&lt;la_commande&gt; &amp;&quot; , le prompt ( user@debian:/repertoire$ ) réapparaît et attend l'entrée d'une autre commande.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

[[Catégorie:Glossaire]]</text>
      <sha1>7cgii05mkg03eee8vic8fijq5v2lesx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1431</id>
      <parentid>1430</parentid>
      <timestamp>2010-04-19T18:54:50Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="12561">{{Ébauche|les acronymes utilisés dans les pages de ce wiki}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== CDDB ==

La CDDB, pour Compact Disc Data Base, autrement dit base de données pour disque compact (musicaux), regroupe l'ensemble des informations utiles pour renseigner les tags ID3 des fichiers mp3, WMA et Ogg Vorbis.
Nombre de logiciels encodeurs sont capables de se connecter à la CDDB officielle voire à la concurrente en open source freedb.
Pour identifier les CD, CDDB utilise un identifiant nommé DiscId qui est identique à celui de FreeDB.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== DVD ==
Dénomination officielle « Digital Versatile Disc », c'est-à-dire « Disque numérique polyvalent ». Le DVD exploite un support semblable à celui du CD puisque ses dimensions sont les mêmes (disque de 120 mm de diamètre ou une version mini  de 80 mm). Les principales différences techniques concernent d'une part la densité / capacité de stockage-enregistrement et d'autre part, les procédés et traitements numériques (logiciels) pour leur sauvegarde.
Les capacités d'un DVD dépendent de ses spécificités. Il peut être simple ou double face et couche, en version pleine ou mini.

Les principales capacités et versions sont : DVD 5 couche unique, face unique : environ 4,7 GB, DVD DL couche double, face unique : environ 8,54 GB, DVD couche unique, double face : environ 8,54 GB, DVD couche double, double face (peu fréquent) : environ 17,08 GB, MiniDVD : couche unique, face unique : environ 1,4 GB, MiniDVD : couche unique, double face : environ 2,66 GB, MiniDVD : double couche, face unique : environ 2,66 GB, MiniDVD : double couche, double face : environ 5,2 GB.

== Ethernet ==
Ethernet est un protocole de réseau local à commutation de paquets. Bien qu'il implémente la couche physique (PHY) et la sous-couche Media Access Control  (MAC), le protocole Ethernet est classé dans la couche de liaison, car les formats de trames que le standard définit sont normalisés et peuvent être encapsulés dans des protocoles autres que ses propres couches physiques MAC et PHY. Ces couches physiques font l'objet de normes séparées en fonction des débits, du support de transmission, de la longueur des liaisons et des conditions environnementales.
Ethernet a été standardisé sous le nom IEEE 802.3. C'est maintenant une norme internationale : ISO/IEC 8802-3.

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IGD ==

Integrated Graphics Device, est une unité de traitement graphique (Graphics processing unit ou GPU) directement intégrée dans la carte mère d'un PC

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== Live CD ==

Un Live CD (la traduction CD autonome a également été proposée par le projet Debian) est un CD qui contient un système d’exploitation exécutable sans installation, qui se lance au démarrage de l’ordinateur. Par extension, liveCD désigne un système d’exploitation présent sur un support externe amorçable. Les supports de stockage typiques sont le CD, le DVD et la clé USB.


== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais New Technology File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993 et n'a cessé d'évoluer d'une version de Windows à l'autre.

== PEG PCI ==

PEG Link Mode (PCI Express Graphics Link Mode) est une fonctionnalité disponible dans le BIOS de certaines Carte mère de marque ASUS, qui permet une préséance  (ordre de démarrage) et un overclock automatique de la carte vidéo.

== PC ==

Le sigle PC ( Personnal Computer/Ordinateur Personnel ) est utilisé pour désigner un ordinateur compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, super-ordinateur, serveur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== PCIe ==

PCI Express (Peripheral Component Interconnect Express), officiellement abrégé en PCIe (ou PCI-E) est un &quot;slot&quot; d'extension standard conçu pour remplacer les anciens PCI, PCI-Xet et AGP. PCIe 2.1 est la dernière norme pour les cartes d'extension.
Il spécifie un bus local série (« bus PCI express ») et un connecteur qui sert à connecter des cartes d’extension sur la carte mère d’un ordinateur.

== RAM ==

La mémoire vive, mémoire système ou mémoire volatile, aussi appelée RAM de l'anglais Random Access Memory (que l'on traduit en français par 'mémoire à accès direct'), est la mémoire informatique dans laquelle un ordinateur place les données lors de leur traitement. Les caractéristiques de cette mémoire sont :
sa rapidité d'accès (cette rapidité est essentielle pour fournir rapidement les données au processeur) ;
sa volatilité (cette volatilité implique que les données sont perdues dès que l'ordinateur cesse d'être alimenté en électricité).

== Rolling release ==

Une approche de &quot;rolling release&quot; se réfère à un système en constante évolution, alimenté sans fin par de nouveaux paquets ou de mises à jour de paquets déjà existants, en opposition à un système figé - gelé (freeze) où les seules mises à jour seront des correctifs de sécurité. Sid et testing sont des &quot;rolling release&quot;; Stable (Etch, Lenny) est une version figée (freeze).

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement mais expurgé) : « Relis le &quot;foutu&quot; manuel ») ! Hum...

== SATA ==

Le Serial ATA (ou S-ATA ou SATA) est un bus informatique principalement conçu pour le transfert de données entre un ordinateur et un disque dur mais aussi utilisé pour les lecteurs cd/dvd. C'est l'évolution du standard Advanced Technology Attachment (ATA ou IDE).
Le Serial ATA a de multiples avantages par rapport à son prédécesseur, les trois principaux étant sa vitesse, la gestion des câbles et le branchement à chaud (Hot-Plug). L'ancienne norme ATA est communément désignée sous le nom « Parallel ATA » (P-ATA) afin que les deux ne soient pas confondues.

== SCSI ==

SCSI, Small Computer System Interface en anglais, est un standard définissant un bus informatique permettant de relier un ordinateur à des périphériques ou bien même à un autre ordinateur.
La grande différence apportée par ce bus, est qu'il soulage le processeur des commandes envoyées au périphérique, commandes qui sont traitées directement par le périphérique SCSI lui-même.
Ce système est beaucoup plus rapide qui l'interface E-IDE qui accapare un pourcentage plus ou moins important du processeur.

== SSH ==

Secure Shell (SSH) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole SSH a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== Terminal ==

Aussi appelé console, ligne de commande ou tty, c'est l'interface texte qui permet l'entrée de commandes. Lorsqu'une commande est terminée ou dès qu'elle est lancée en arrière-plan &quot;&lt;la_commande&gt; &amp;&quot; , le prompt ( user@debian:/repertoire$ ) réapparaît et attend l'entrée d'une autre commande.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

[[Catégorie:Glossaire]]</text>
      <sha1>6vkra15x2wg8do1ozigwrj0s8cvq2wv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1598</id>
      <parentid>1431</parentid>
      <timestamp>2010-06-27T08:34:09Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="13419">{{Ébauche|les acronymes utilisés dans les pages de ce wiki}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== CDDB ==

La CDDB, pour Compact Disc Data Base, autrement dit base de données pour disque compact (musicaux), regroupe l'ensemble des informations utiles pour renseigner les tags ID3 des fichiers mp3, WMA et Ogg Vorbis.
Nombre de logiciels encodeurs sont capables de se connecter à la CDDB officielle voire à la concurrente en open source freedb.
Pour identifier les CD, CDDB utilise un identifiant nommé DiscId qui est identique à celui de FreeDB.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== DVD ==
Dénomination officielle « Digital Versatile Disc », c'est-à-dire « Disque numérique polyvalent ». Le DVD exploite un support semblable à celui du CD puisque ses dimensions sont les mêmes (disque de 120 mm de diamètre ou une version mini  de 80 mm). Les principales différences techniques concernent d'une part la densité / capacité de stockage-enregistrement et d'autre part, les procédés et traitements numériques (logiciels) pour leur sauvegarde.
Les capacités d'un DVD dépendent de ses spécificités. Il peut être simple ou double face et couche, en version pleine ou mini.

Les principales capacités et versions sont : DVD 5 couche unique, face unique : environ 4,7 GB, DVD DL couche double, face unique : environ 8,54 GB, DVD couche unique, double face : environ 8,54 GB, DVD couche double, double face (peu fréquent) : environ 17,08 GB, MiniDVD : couche unique, face unique : environ 1,4 GB, MiniDVD : couche unique, double face : environ 2,66 GB, MiniDVD : double couche, face unique : environ 2,66 GB, MiniDVD : double couche, double face : environ 5,2 GB.

== Ethernet ==
Ethernet est un protocole de réseau local à commutation de paquets. Bien qu'il implémente la couche physique (PHY) et la sous-couche Media Access Control  (MAC), le protocole Ethernet est classé dans la couche de liaison, car les formats de trames que le standard définit sont normalisés et peuvent être encapsulés dans des protocoles autres que ses propres couches physiques MAC et PHY. Ces couches physiques font l'objet de normes séparées en fonction des débits, du support de transmission, de la longueur des liaisons et des conditions environnementales.
Ethernet a été standardisé sous le nom IEEE 802.3. C'est maintenant une norme internationale : ISO/IEC 8802-3.

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IGD ==

Integrated Graphics Device, est une unité de traitement graphique (Graphics processing unit ou GPU) directement intégrée dans la carte mère d'un PC

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== Live CD ==

Un Live CD (la traduction CD autonome a également été proposée par le projet Debian) est un CD qui contient un système d’exploitation exécutable sans installation, qui se lance au démarrage de l’ordinateur. Par extension, liveCD désigne un système d’exploitation présent sur un support externe amorçable. Les supports de stockage typiques sont le CD, le DVD et la clé USB.

== MBR ==

Le Master Boot Record ou MBR (parfois aussi appelé &quot;Zone amorce&quot;) est le nom donné au premier secteur adressable d'un disque dur (cylindre 0, tête 0 et secteur 1, ou secteur 0 en adressage logique) dans le cadre d'un partitionnement Intel. Sa taille est de 512 octets. Le MBR contient la table des partitions (les 4 partitions primaires) du disque dur. Il contient également une routine d'amorçage dont le but est de charger le système d'exploitation (ou le boot loader/chargeur d'amorçage s'il existe) présent sur la partition active.

A ne pas confondre avec le BS (Boot sector) ou VBR (Volume boot record) qui lui est le premier secteur d'un périphérique de stockage de données qui n'a pas été partitionné, ou le premier secteur d'une partition individuelle sur un périphérique de stockage de données qui a été partitionné.

== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais New Technology File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993 et n'a cessé d'évoluer d'une version de Windows à l'autre.

== PEG PCI ==

PEG Link Mode (PCI Express Graphics Link Mode) est une fonctionnalité disponible dans le BIOS de certaines Carte mère de marque ASUS, qui permet une préséance  (ordre de démarrage) et un overclock automatique de la carte vidéo.

== PC ==

Le sigle PC ( Personnal Computer/Ordinateur Personnel ) est utilisé pour désigner un ordinateur compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, super-ordinateur, serveur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== PCIe ==

PCI Express (Peripheral Component Interconnect Express), officiellement abrégé en PCIe (ou PCI-E) est un &quot;slot&quot; d'extension standard conçu pour remplacer les anciens PCI, PCI-Xet et AGP. PCIe 2.1 est la dernière norme pour les cartes d'extension.
Il spécifie un bus local série (« bus PCI express ») et un connecteur qui sert à connecter des cartes d’extension sur la carte mère d’un ordinateur.

== RAM ==

La mémoire vive, mémoire système ou mémoire volatile, aussi appelée RAM de l'anglais Random Access Memory (que l'on traduit en français par 'mémoire à accès direct'), est la mémoire informatique dans laquelle un ordinateur place les données lors de leur traitement. Les caractéristiques de cette mémoire sont :
sa rapidité d'accès (cette rapidité est essentielle pour fournir rapidement les données au processeur) ;
sa volatilité (cette volatilité implique que les données sont perdues dès que l'ordinateur cesse d'être alimenté en électricité).

== Rolling release ==

Une approche de &quot;rolling release&quot; se réfère à un système en constante évolution, alimenté sans fin par de nouveaux paquets ou de mises à jour de paquets déjà existants, en opposition à un système figé - gelé (freeze) où les seules mises à jour seront des correctifs de sécurité. Sid et testing sont des &quot;rolling release&quot;; Stable (Etch, Lenny) est une version figée (freeze).

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement mais expurgé) : « Relis le &quot;foutu&quot; manuel ») ! Hum...

== SATA ==

Le Serial ATA (ou S-ATA ou SATA) est un bus informatique principalement conçu pour le transfert de données entre un ordinateur et un disque dur mais aussi utilisé pour les lecteurs cd/dvd. C'est l'évolution du standard Advanced Technology Attachment (ATA ou IDE).
Le Serial ATA a de multiples avantages par rapport à son prédécesseur, les trois principaux étant sa vitesse, la gestion des câbles et le branchement à chaud (Hot-Plug). L'ancienne norme ATA est communément désignée sous le nom « Parallel ATA » (P-ATA) afin que les deux ne soient pas confondues.

== SCSI ==

SCSI, Small Computer System Interface en anglais, est un standard définissant un bus informatique permettant de relier un ordinateur à des périphériques ou bien même à un autre ordinateur.
La grande différence apportée par ce bus, est qu'il soulage le processeur des commandes envoyées au périphérique, commandes qui sont traitées directement par le périphérique SCSI lui-même.
Ce système est beaucoup plus rapide qui l'interface E-IDE qui accapare un pourcentage plus ou moins important du processeur.

== SSH ==

Secure Shell (SSH) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole SSH a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== Terminal ==

Aussi appelé console, ligne de commande ou tty, c'est l'interface texte qui permet l'entrée de commandes. Lorsqu'une commande est terminée ou dès qu'elle est lancée en arrière-plan &quot;&lt;la_commande&gt; &amp;&quot; , le prompt ( user@debian:/repertoire$ ) réapparaît et attend l'entrée d'une autre commande.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

[[Catégorie:Glossaire]]</text>
      <sha1>6ewa51dyc80vg1zdzmg66ydj20qoxj8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1599</id>
      <parentid>1598</parentid>
      <timestamp>2010-06-27T14:12:30Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* MBR */</comment>
      <text xml:space="preserve" bytes="13288">{{Ébauche|les acronymes utilisés dans les pages de ce wiki}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== CDDB ==

La CDDB, pour Compact Disc Data Base, autrement dit base de données pour disque compact (musicaux), regroupe l'ensemble des informations utiles pour renseigner les tags ID3 des fichiers mp3, WMA et Ogg Vorbis.
Nombre de logiciels encodeurs sont capables de se connecter à la CDDB officielle voire à la concurrente en open source freedb.
Pour identifier les CD, CDDB utilise un identifiant nommé DiscId qui est identique à celui de FreeDB.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== DVD ==
Dénomination officielle « Digital Versatile Disc », c'est-à-dire « Disque numérique polyvalent ». Le DVD exploite un support semblable à celui du CD puisque ses dimensions sont les mêmes (disque de 120 mm de diamètre ou une version mini  de 80 mm). Les principales différences techniques concernent d'une part la densité / capacité de stockage-enregistrement et d'autre part, les procédés et traitements numériques (logiciels) pour leur sauvegarde.
Les capacités d'un DVD dépendent de ses spécificités. Il peut être simple ou double face et couche, en version pleine ou mini.

Les principales capacités et versions sont : DVD 5 couche unique, face unique : environ 4,7 GB, DVD DL couche double, face unique : environ 8,54 GB, DVD couche unique, double face : environ 8,54 GB, DVD couche double, double face (peu fréquent) : environ 17,08 GB, MiniDVD : couche unique, face unique : environ 1,4 GB, MiniDVD : couche unique, double face : environ 2,66 GB, MiniDVD : double couche, face unique : environ 2,66 GB, MiniDVD : double couche, double face : environ 5,2 GB.

== Ethernet ==
Ethernet est un protocole de réseau local à commutation de paquets. Bien qu'il implémente la couche physique (PHY) et la sous-couche Media Access Control  (MAC), le protocole Ethernet est classé dans la couche de liaison, car les formats de trames que le standard définit sont normalisés et peuvent être encapsulés dans des protocoles autres que ses propres couches physiques MAC et PHY. Ces couches physiques font l'objet de normes séparées en fonction des débits, du support de transmission, de la longueur des liaisons et des conditions environnementales.
Ethernet a été standardisé sous le nom IEEE 802.3. C'est maintenant une norme internationale : ISO/IEC 8802-3.

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IGD ==

Integrated Graphics Device, est une unité de traitement graphique (Graphics processing unit ou GPU) directement intégrée dans la carte mère d'un PC

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== Live CD ==

Un Live CD (la traduction CD autonome a également été proposée par le projet Debian) est un CD qui contient un système d’exploitation exécutable sans installation, qui se lance au démarrage de l’ordinateur. Par extension, liveCD désigne un système d’exploitation présent sur un support externe amorçable. Les supports de stockage typiques sont le CD, le DVD et la clé USB.

== MBR ==

Le Master Boot Record ou MBR (parfois aussi appelé &quot;Zone amorce&quot;) est le nom donné au premier secteur adressable d'un disque dur (cylindre 0, tête 0 et secteur 1, ou secteur 0 en adressage logique) dans le cadre d'un partitionnement Intel. Sa taille est de 512 octets. Le MBR contient la table des partitions (les 4 partitions primaires) du disque dur. Il contient également une routine d'amorçage dont le but est de charger le système d'exploitation (ou le boot loader/chargeur d'amorçage s'il existe) présent sur la partition active.

Il ne faut pas confondre avec le VBR (Volume Boot Record) qui, bien qu'étant un BS (boot sector) comme la MBR, est le premier secteur d'une partition et non d'un disque.

== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais New Technology File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993 et n'a cessé d'évoluer d'une version de Windows à l'autre.

== PEG PCI ==

PEG Link Mode (PCI Express Graphics Link Mode) est une fonctionnalité disponible dans le BIOS de certaines Carte mère de marque ASUS, qui permet une préséance  (ordre de démarrage) et un overclock automatique de la carte vidéo.

== PC ==

Le sigle PC ( Personnal Computer/Ordinateur Personnel ) est utilisé pour désigner un ordinateur compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, super-ordinateur, serveur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== PCIe ==

PCI Express (Peripheral Component Interconnect Express), officiellement abrégé en PCIe (ou PCI-E) est un &quot;slot&quot; d'extension standard conçu pour remplacer les anciens PCI, PCI-Xet et AGP. PCIe 2.1 est la dernière norme pour les cartes d'extension.
Il spécifie un bus local série (« bus PCI express ») et un connecteur qui sert à connecter des cartes d’extension sur la carte mère d’un ordinateur.

== RAM ==

La mémoire vive, mémoire système ou mémoire volatile, aussi appelée RAM de l'anglais Random Access Memory (que l'on traduit en français par 'mémoire à accès direct'), est la mémoire informatique dans laquelle un ordinateur place les données lors de leur traitement. Les caractéristiques de cette mémoire sont :
sa rapidité d'accès (cette rapidité est essentielle pour fournir rapidement les données au processeur) ;
sa volatilité (cette volatilité implique que les données sont perdues dès que l'ordinateur cesse d'être alimenté en électricité).

== Rolling release ==

Une approche de &quot;rolling release&quot; se réfère à un système en constante évolution, alimenté sans fin par de nouveaux paquets ou de mises à jour de paquets déjà existants, en opposition à un système figé - gelé (freeze) où les seules mises à jour seront des correctifs de sécurité. Sid et testing sont des &quot;rolling release&quot;; Stable (Etch, Lenny) est une version figée (freeze).

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement mais expurgé) : « Relis le &quot;foutu&quot; manuel ») ! Hum...

== SATA ==

Le Serial ATA (ou S-ATA ou SATA) est un bus informatique principalement conçu pour le transfert de données entre un ordinateur et un disque dur mais aussi utilisé pour les lecteurs cd/dvd. C'est l'évolution du standard Advanced Technology Attachment (ATA ou IDE).
Le Serial ATA a de multiples avantages par rapport à son prédécesseur, les trois principaux étant sa vitesse, la gestion des câbles et le branchement à chaud (Hot-Plug). L'ancienne norme ATA est communément désignée sous le nom « Parallel ATA » (P-ATA) afin que les deux ne soient pas confondues.

== SCSI ==

SCSI, Small Computer System Interface en anglais, est un standard définissant un bus informatique permettant de relier un ordinateur à des périphériques ou bien même à un autre ordinateur.
La grande différence apportée par ce bus, est qu'il soulage le processeur des commandes envoyées au périphérique, commandes qui sont traitées directement par le périphérique SCSI lui-même.
Ce système est beaucoup plus rapide qui l'interface E-IDE qui accapare un pourcentage plus ou moins important du processeur.

== SSH ==

Secure Shell (SSH) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole SSH a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== Terminal ==

Aussi appelé console, ligne de commande ou tty, c'est l'interface texte qui permet l'entrée de commandes. Lorsqu'une commande est terminée ou dès qu'elle est lancée en arrière-plan &quot;&lt;la_commande&gt; &amp;&quot; , le prompt ( user@debian:/repertoire$ ) réapparaît et attend l'entrée d'une autre commande.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

[[Catégorie:Glossaire]]</text>
      <sha1>5g3zbj16a296ajqvwxhd6r95ww6errb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1611</id>
      <parentid>1599</parentid>
      <timestamp>2010-07-05T07:54:47Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="13318">#REDIRECT [[isalo:Glossaire]]
{{Ébauche|les acronymes utilisés dans les pages de ce wiki}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== CDDB ==

La CDDB, pour Compact Disc Data Base, autrement dit base de données pour disque compact (musicaux), regroupe l'ensemble des informations utiles pour renseigner les tags ID3 des fichiers mp3, WMA et Ogg Vorbis.
Nombre de logiciels encodeurs sont capables de se connecter à la CDDB officielle voire à la concurrente en open source freedb.
Pour identifier les CD, CDDB utilise un identifiant nommé DiscId qui est identique à celui de FreeDB.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== DVD ==
Dénomination officielle « Digital Versatile Disc », c'est-à-dire « Disque numérique polyvalent ». Le DVD exploite un support semblable à celui du CD puisque ses dimensions sont les mêmes (disque de 120 mm de diamètre ou une version mini  de 80 mm). Les principales différences techniques concernent d'une part la densité / capacité de stockage-enregistrement et d'autre part, les procédés et traitements numériques (logiciels) pour leur sauvegarde.
Les capacités d'un DVD dépendent de ses spécificités. Il peut être simple ou double face et couche, en version pleine ou mini.

Les principales capacités et versions sont : DVD 5 couche unique, face unique : environ 4,7 GB, DVD DL couche double, face unique : environ 8,54 GB, DVD couche unique, double face : environ 8,54 GB, DVD couche double, double face (peu fréquent) : environ 17,08 GB, MiniDVD : couche unique, face unique : environ 1,4 GB, MiniDVD : couche unique, double face : environ 2,66 GB, MiniDVD : double couche, face unique : environ 2,66 GB, MiniDVD : double couche, double face : environ 5,2 GB.

== Ethernet ==
Ethernet est un protocole de réseau local à commutation de paquets. Bien qu'il implémente la couche physique (PHY) et la sous-couche Media Access Control  (MAC), le protocole Ethernet est classé dans la couche de liaison, car les formats de trames que le standard définit sont normalisés et peuvent être encapsulés dans des protocoles autres que ses propres couches physiques MAC et PHY. Ces couches physiques font l'objet de normes séparées en fonction des débits, du support de transmission, de la longueur des liaisons et des conditions environnementales.
Ethernet a été standardisé sous le nom IEEE 802.3. C'est maintenant une norme internationale : ISO/IEC 8802-3.

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IGD ==

Integrated Graphics Device, est une unité de traitement graphique (Graphics processing unit ou GPU) directement intégrée dans la carte mère d'un PC

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== Live CD ==

Un Live CD (la traduction CD autonome a également été proposée par le projet Debian) est un CD qui contient un système d’exploitation exécutable sans installation, qui se lance au démarrage de l’ordinateur. Par extension, liveCD désigne un système d’exploitation présent sur un support externe amorçable. Les supports de stockage typiques sont le CD, le DVD et la clé USB.

== MBR ==

Le Master Boot Record ou MBR (parfois aussi appelé &quot;Zone amorce&quot;) est le nom donné au premier secteur adressable d'un disque dur (cylindre 0, tête 0 et secteur 1, ou secteur 0 en adressage logique) dans le cadre d'un partitionnement Intel. Sa taille est de 512 octets. Le MBR contient la table des partitions (les 4 partitions primaires) du disque dur. Il contient également une routine d'amorçage dont le but est de charger le système d'exploitation (ou le boot loader/chargeur d'amorçage s'il existe) présent sur la partition active.

Il ne faut pas confondre avec le VBR (Volume Boot Record) qui, bien qu'étant un BS (boot sector) comme la MBR, est le premier secteur d'une partition et non d'un disque.

== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais New Technology File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993 et n'a cessé d'évoluer d'une version de Windows à l'autre.

== PEG PCI ==

PEG Link Mode (PCI Express Graphics Link Mode) est une fonctionnalité disponible dans le BIOS de certaines Carte mère de marque ASUS, qui permet une préséance  (ordre de démarrage) et un overclock automatique de la carte vidéo.

== PC ==

Le sigle PC ( Personnal Computer/Ordinateur Personnel ) est utilisé pour désigner un ordinateur compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, super-ordinateur, serveur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== PCIe ==

PCI Express (Peripheral Component Interconnect Express), officiellement abrégé en PCIe (ou PCI-E) est un &quot;slot&quot; d'extension standard conçu pour remplacer les anciens PCI, PCI-Xet et AGP. PCIe 2.1 est la dernière norme pour les cartes d'extension.
Il spécifie un bus local série (« bus PCI express ») et un connecteur qui sert à connecter des cartes d’extension sur la carte mère d’un ordinateur.

== RAM ==

La mémoire vive, mémoire système ou mémoire volatile, aussi appelée RAM de l'anglais Random Access Memory (que l'on traduit en français par 'mémoire à accès direct'), est la mémoire informatique dans laquelle un ordinateur place les données lors de leur traitement. Les caractéristiques de cette mémoire sont :
sa rapidité d'accès (cette rapidité est essentielle pour fournir rapidement les données au processeur) ;
sa volatilité (cette volatilité implique que les données sont perdues dès que l'ordinateur cesse d'être alimenté en électricité).

== Rolling release ==

Une approche de &quot;rolling release&quot; se réfère à un système en constante évolution, alimenté sans fin par de nouveaux paquets ou de mises à jour de paquets déjà existants, en opposition à un système figé - gelé (freeze) où les seules mises à jour seront des correctifs de sécurité. Sid et testing sont des &quot;rolling release&quot;; Stable (Etch, Lenny) est une version figée (freeze).

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement mais expurgé) : « Relis le &quot;foutu&quot; manuel ») ! Hum...

== SATA ==

Le Serial ATA (ou S-ATA ou SATA) est un bus informatique principalement conçu pour le transfert de données entre un ordinateur et un disque dur mais aussi utilisé pour les lecteurs cd/dvd. C'est l'évolution du standard Advanced Technology Attachment (ATA ou IDE).
Le Serial ATA a de multiples avantages par rapport à son prédécesseur, les trois principaux étant sa vitesse, la gestion des câbles et le branchement à chaud (Hot-Plug). L'ancienne norme ATA est communément désignée sous le nom « Parallel ATA » (P-ATA) afin que les deux ne soient pas confondues.

== SCSI ==

SCSI, Small Computer System Interface en anglais, est un standard définissant un bus informatique permettant de relier un ordinateur à des périphériques ou bien même à un autre ordinateur.
La grande différence apportée par ce bus, est qu'il soulage le processeur des commandes envoyées au périphérique, commandes qui sont traitées directement par le périphérique SCSI lui-même.
Ce système est beaucoup plus rapide qui l'interface E-IDE qui accapare un pourcentage plus ou moins important du processeur.

== SSH ==

Secure Shell (SSH) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole SSH a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== Terminal ==

Aussi appelé console, ligne de commande ou tty, c'est l'interface texte qui permet l'entrée de commandes. Lorsqu'une commande est terminée ou dès qu'elle est lancée en arrière-plan &quot;&lt;la_commande&gt; &amp;&quot; , le prompt ( user@debian:/repertoire$ ) réapparaît et attend l'entrée d'une autre commande.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

[[Catégorie:Glossaire]]</text>
      <sha1>qf2n86mmahsx6oy0fuqf4bzajxrrdd7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1652</id>
      <parentid>1611</parentid>
      <timestamp>2010-07-06T09:18:24Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Annulation des modifications 1611 de [[Special:Contributions/Lol|Lol]] ([[User talk:Lol|discussion]])</comment>
      <text xml:space="preserve" bytes="13288">{{Ébauche|les acronymes utilisés dans les pages de ce wiki}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== CDDB ==

La CDDB, pour Compact Disc Data Base, autrement dit base de données pour disque compact (musicaux), regroupe l'ensemble des informations utiles pour renseigner les tags ID3 des fichiers mp3, WMA et Ogg Vorbis.
Nombre de logiciels encodeurs sont capables de se connecter à la CDDB officielle voire à la concurrente en open source freedb.
Pour identifier les CD, CDDB utilise un identifiant nommé DiscId qui est identique à celui de FreeDB.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== DVD ==
Dénomination officielle « Digital Versatile Disc », c'est-à-dire « Disque numérique polyvalent ». Le DVD exploite un support semblable à celui du CD puisque ses dimensions sont les mêmes (disque de 120 mm de diamètre ou une version mini  de 80 mm). Les principales différences techniques concernent d'une part la densité / capacité de stockage-enregistrement et d'autre part, les procédés et traitements numériques (logiciels) pour leur sauvegarde.
Les capacités d'un DVD dépendent de ses spécificités. Il peut être simple ou double face et couche, en version pleine ou mini.

Les principales capacités et versions sont : DVD 5 couche unique, face unique : environ 4,7 GB, DVD DL couche double, face unique : environ 8,54 GB, DVD couche unique, double face : environ 8,54 GB, DVD couche double, double face (peu fréquent) : environ 17,08 GB, MiniDVD : couche unique, face unique : environ 1,4 GB, MiniDVD : couche unique, double face : environ 2,66 GB, MiniDVD : double couche, face unique : environ 2,66 GB, MiniDVD : double couche, double face : environ 5,2 GB.

== Ethernet ==
Ethernet est un protocole de réseau local à commutation de paquets. Bien qu'il implémente la couche physique (PHY) et la sous-couche Media Access Control  (MAC), le protocole Ethernet est classé dans la couche de liaison, car les formats de trames que le standard définit sont normalisés et peuvent être encapsulés dans des protocoles autres que ses propres couches physiques MAC et PHY. Ces couches physiques font l'objet de normes séparées en fonction des débits, du support de transmission, de la longueur des liaisons et des conditions environnementales.
Ethernet a été standardisé sous le nom IEEE 802.3. C'est maintenant une norme internationale : ISO/IEC 8802-3.

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IGD ==

Integrated Graphics Device, est une unité de traitement graphique (Graphics processing unit ou GPU) directement intégrée dans la carte mère d'un PC

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== Live CD ==

Un Live CD (la traduction CD autonome a également été proposée par le projet Debian) est un CD qui contient un système d’exploitation exécutable sans installation, qui se lance au démarrage de l’ordinateur. Par extension, liveCD désigne un système d’exploitation présent sur un support externe amorçable. Les supports de stockage typiques sont le CD, le DVD et la clé USB.

== MBR ==

Le Master Boot Record ou MBR (parfois aussi appelé &quot;Zone amorce&quot;) est le nom donné au premier secteur adressable d'un disque dur (cylindre 0, tête 0 et secteur 1, ou secteur 0 en adressage logique) dans le cadre d'un partitionnement Intel. Sa taille est de 512 octets. Le MBR contient la table des partitions (les 4 partitions primaires) du disque dur. Il contient également une routine d'amorçage dont le but est de charger le système d'exploitation (ou le boot loader/chargeur d'amorçage s'il existe) présent sur la partition active.

Il ne faut pas confondre avec le VBR (Volume Boot Record) qui, bien qu'étant un BS (boot sector) comme la MBR, est le premier secteur d'une partition et non d'un disque.

== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais New Technology File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993 et n'a cessé d'évoluer d'une version de Windows à l'autre.

== PEG PCI ==

PEG Link Mode (PCI Express Graphics Link Mode) est une fonctionnalité disponible dans le BIOS de certaines Carte mère de marque ASUS, qui permet une préséance  (ordre de démarrage) et un overclock automatique de la carte vidéo.

== PC ==

Le sigle PC ( Personnal Computer/Ordinateur Personnel ) est utilisé pour désigner un ordinateur compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, super-ordinateur, serveur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== PCIe ==

PCI Express (Peripheral Component Interconnect Express), officiellement abrégé en PCIe (ou PCI-E) est un &quot;slot&quot; d'extension standard conçu pour remplacer les anciens PCI, PCI-Xet et AGP. PCIe 2.1 est la dernière norme pour les cartes d'extension.
Il spécifie un bus local série (« bus PCI express ») et un connecteur qui sert à connecter des cartes d’extension sur la carte mère d’un ordinateur.

== RAM ==

La mémoire vive, mémoire système ou mémoire volatile, aussi appelée RAM de l'anglais Random Access Memory (que l'on traduit en français par 'mémoire à accès direct'), est la mémoire informatique dans laquelle un ordinateur place les données lors de leur traitement. Les caractéristiques de cette mémoire sont :
sa rapidité d'accès (cette rapidité est essentielle pour fournir rapidement les données au processeur) ;
sa volatilité (cette volatilité implique que les données sont perdues dès que l'ordinateur cesse d'être alimenté en électricité).

== Rolling release ==

Une approche de &quot;rolling release&quot; se réfère à un système en constante évolution, alimenté sans fin par de nouveaux paquets ou de mises à jour de paquets déjà existants, en opposition à un système figé - gelé (freeze) où les seules mises à jour seront des correctifs de sécurité. Sid et testing sont des &quot;rolling release&quot;; Stable (Etch, Lenny) est une version figée (freeze).

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement mais expurgé) : « Relis le &quot;foutu&quot; manuel ») ! Hum...

== SATA ==

Le Serial ATA (ou S-ATA ou SATA) est un bus informatique principalement conçu pour le transfert de données entre un ordinateur et un disque dur mais aussi utilisé pour les lecteurs cd/dvd. C'est l'évolution du standard Advanced Technology Attachment (ATA ou IDE).
Le Serial ATA a de multiples avantages par rapport à son prédécesseur, les trois principaux étant sa vitesse, la gestion des câbles et le branchement à chaud (Hot-Plug). L'ancienne norme ATA est communément désignée sous le nom « Parallel ATA » (P-ATA) afin que les deux ne soient pas confondues.

== SCSI ==

SCSI, Small Computer System Interface en anglais, est un standard définissant un bus informatique permettant de relier un ordinateur à des périphériques ou bien même à un autre ordinateur.
La grande différence apportée par ce bus, est qu'il soulage le processeur des commandes envoyées au périphérique, commandes qui sont traitées directement par le périphérique SCSI lui-même.
Ce système est beaucoup plus rapide qui l'interface E-IDE qui accapare un pourcentage plus ou moins important du processeur.

== SSH ==

Secure Shell (SSH) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole SSH a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== Terminal ==

Aussi appelé console, ligne de commande ou tty, c'est l'interface texte qui permet l'entrée de commandes. Lorsqu'une commande est terminée ou dès qu'elle est lancée en arrière-plan &quot;&lt;la_commande&gt; &amp;&quot; , le prompt ( user@debian:/repertoire$ ) réapparaît et attend l'entrée d'une autre commande.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

[[Catégorie:Glossaire]]</text>
      <sha1>5g3zbj16a296ajqvwxhd6r95ww6errb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1911</id>
      <parentid>1652</parentid>
      <timestamp>2010-08-10T10:27:07Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <text xml:space="preserve" bytes="13615">{{Ébauche|les acronymes utilisés dans les pages de ce wiki}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== CDDB ==

La CDDB, pour Compact Disc Data Base, autrement dit base de données pour disque compact (musicaux), regroupe l'ensemble des informations utiles pour renseigner les tags ID3 des fichiers mp3, WMA et Ogg Vorbis.
Nombre de logiciels encodeurs sont capables de se connecter à la CDDB officielle voire à la concurrente en open source freedb.
Pour identifier les CD, CDDB utilise un identifiant nommé DiscId qui est identique à celui de FreeDB.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== DVD ==
Dénomination officielle « Digital Versatile Disc », c'est-à-dire « Disque numérique polyvalent ». Le DVD exploite un support semblable à celui du CD puisque ses dimensions sont les mêmes (disque de 120 mm de diamètre ou une version mini  de 80 mm). Les principales différences techniques concernent d'une part la densité / capacité de stockage-enregistrement et d'autre part, les procédés et traitements numériques (logiciels) pour leur sauvegarde.
Les capacités d'un DVD dépendent de ses spécificités. Il peut être simple ou double face et couche, en version pleine ou mini.

Les principales capacités et versions sont : DVD 5 couche unique, face unique : environ 4,7 GB, DVD DL couche double, face unique : environ 8,54 GB, DVD couche unique, double face : environ 8,54 GB, DVD couche double, double face (peu fréquent) : environ 17,08 GB, MiniDVD : couche unique, face unique : environ 1,4 GB, MiniDVD : couche unique, double face : environ 2,66 GB, MiniDVD : double couche, face unique : environ 2,66 GB, MiniDVD : double couche, double face : environ 5,2 GB.

== Ethernet ==
Ethernet est un protocole de réseau local à commutation de paquets. Bien qu'il implémente la couche physique (PHY) et la sous-couche Media Access Control  (MAC), le protocole Ethernet est classé dans la couche de liaison, car les formats de trames que le standard définit sont normalisés et peuvent être encapsulés dans des protocoles autres que ses propres couches physiques MAC et PHY. Ces couches physiques font l'objet de normes séparées en fonction des débits, du support de transmission, de la longueur des liaisons et des conditions environnementales.
Ethernet a été standardisé sous le nom IEEE 802.3. C'est maintenant une norme internationale : ISO/IEC 8802-3.

== FD ==

Floppy disk : Disque souple dont le prototype le plus connu est la disquette 360Ko

== DD ==

Disket Double-Density : La disquette classique 1440Ko à ne pas confondre avec Disque Dur 

== HD == 

Hard-Disk : Disque dur que les auteurs francophone ont tendance à nommer DD (déjà utilisé pour un autre matériel)

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IGD ==

Integrated Graphics Device, est une unité de traitement graphique (Graphics processing unit ou GPU) directement intégrée dans la carte mère d'un PC

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== Live CD ==

Un Live CD (la traduction CD autonome a également été proposée par le projet Debian) est un CD qui contient un système d’exploitation exécutable sans installation, qui se lance au démarrage de l’ordinateur. Par extension, liveCD désigne un système d’exploitation présent sur un support externe amorçable. Les supports de stockage typiques sont le CD, le DVD et la clé USB.

== MBR ==

Le Master Boot Record ou MBR (parfois aussi appelé &quot;Zone amorce&quot;) est le nom donné au premier secteur adressable d'un disque dur (cylindre 0, tête 0 et secteur 1, ou secteur 0 en adressage logique) dans le cadre d'un partitionnement Intel. Sa taille est de 512 octets. Le MBR contient la table des partitions (les 4 partitions primaires) du disque dur. Il contient également une routine d'amorçage dont le but est de charger le système d'exploitation (ou le boot loader/chargeur d'amorçage s'il existe) présent sur la partition active.

Il ne faut pas confondre avec le VBR (Volume Boot Record) qui, bien qu'étant un BS (boot sector) comme la MBR, est le premier secteur d'une partition et non d'un disque.

== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais New Technology File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993 et n'a cessé d'évoluer d'une version de Windows à l'autre.

== PEG PCI ==

PEG Link Mode (PCI Express Graphics Link Mode) est une fonctionnalité disponible dans le BIOS de certaines Carte mère de marque ASUS, qui permet une préséance  (ordre de démarrage) et un overclock automatique de la carte vidéo.

== PC ==

Le sigle PC ( Personnal Computer/Ordinateur Personnel ) est utilisé pour désigner un ordinateur compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, super-ordinateur, serveur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== PCIe ==

PCI Express (Peripheral Component Interconnect Express), officiellement abrégé en PCIe (ou PCI-E) est un &quot;slot&quot; d'extension standard conçu pour remplacer les anciens PCI, PCI-Xet et AGP. PCIe 2.1 est la dernière norme pour les cartes d'extension.
Il spécifie un bus local série (« bus PCI express ») et un connecteur qui sert à connecter des cartes d’extension sur la carte mère d’un ordinateur.

== RAM ==

La mémoire vive, mémoire système ou mémoire volatile, aussi appelée RAM de l'anglais Random Access Memory (que l'on traduit en français par 'mémoire à accès direct'), est la mémoire informatique dans laquelle un ordinateur place les données lors de leur traitement. Les caractéristiques de cette mémoire sont :
sa rapidité d'accès (cette rapidité est essentielle pour fournir rapidement les données au processeur) ;
sa volatilité (cette volatilité implique que les données sont perdues dès que l'ordinateur cesse d'être alimenté en électricité).

== Rolling release ==

Une approche de &quot;rolling release&quot; se réfère à un système en constante évolution, alimenté sans fin par de nouveaux paquets ou de mises à jour de paquets déjà existants, en opposition à un système figé - gelé (freeze) où les seules mises à jour seront des correctifs de sécurité. Sid et testing sont des &quot;rolling release&quot;; Stable (Etch, Lenny) est une version figée (freeze).

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement mais expurgé) : « Relis le &quot;foutu&quot; manuel ») ! Hum...

== SATA ==

Le Serial ATA (ou S-ATA ou SATA) est un bus informatique principalement conçu pour le transfert de données entre un ordinateur et un disque dur mais aussi utilisé pour les lecteurs cd/dvd. C'est l'évolution du standard Advanced Technology Attachment (ATA ou IDE).
Le Serial ATA a de multiples avantages par rapport à son prédécesseur, les trois principaux étant sa vitesse, la gestion des câbles et le branchement à chaud (Hot-Plug). L'ancienne norme ATA est communément désignée sous le nom « Parallel ATA » (P-ATA) afin que les deux ne soient pas confondues.

== SCSI ==

SCSI, Small Computer System Interface en anglais, est un standard définissant un bus informatique permettant de relier un ordinateur à des périphériques ou bien même à un autre ordinateur.
La grande différence apportée par ce bus, est qu'il soulage le processeur des commandes envoyées au périphérique, commandes qui sont traitées directement par le périphérique SCSI lui-même.
Ce système est beaucoup plus rapide qui l'interface E-IDE qui accapare un pourcentage plus ou moins important du processeur.

== SSH ==

Secure Shell (SSH) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole SSH a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== Terminal ==

Aussi appelé console, ligne de commande ou tty, c'est l'interface texte qui permet l'entrée de commandes. Lorsqu'une commande est terminée ou dès qu'elle est lancée en arrière-plan &quot;&lt;la_commande&gt; &amp;&quot; , le prompt ( user@debian:/repertoire$ ) réapparaît et attend l'entrée d'une autre commande.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

[[Catégorie:Glossaire]]</text>
      <sha1>3htzk4xj7lamog6p7zw81f53z8j9hsp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1912</id>
      <parentid>1911</parentid>
      <timestamp>2010-08-10T10:29:21Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Terminal */</comment>
      <text xml:space="preserve" bytes="13616">{{Ébauche|les acronymes utilisés dans les pages de ce wiki}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== CDDB ==

La CDDB, pour Compact Disc Data Base, autrement dit base de données pour disque compact (musicaux), regroupe l'ensemble des informations utiles pour renseigner les tags ID3 des fichiers mp3, WMA et Ogg Vorbis.
Nombre de logiciels encodeurs sont capables de se connecter à la CDDB officielle voire à la concurrente en open source freedb.
Pour identifier les CD, CDDB utilise un identifiant nommé DiscId qui est identique à celui de FreeDB.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== DVD ==
Dénomination officielle « Digital Versatile Disc », c'est-à-dire « Disque numérique polyvalent ». Le DVD exploite un support semblable à celui du CD puisque ses dimensions sont les mêmes (disque de 120 mm de diamètre ou une version mini  de 80 mm). Les principales différences techniques concernent d'une part la densité / capacité de stockage-enregistrement et d'autre part, les procédés et traitements numériques (logiciels) pour leur sauvegarde.
Les capacités d'un DVD dépendent de ses spécificités. Il peut être simple ou double face et couche, en version pleine ou mini.

Les principales capacités et versions sont : DVD 5 couche unique, face unique : environ 4,7 GB, DVD DL couche double, face unique : environ 8,54 GB, DVD couche unique, double face : environ 8,54 GB, DVD couche double, double face (peu fréquent) : environ 17,08 GB, MiniDVD : couche unique, face unique : environ 1,4 GB, MiniDVD : couche unique, double face : environ 2,66 GB, MiniDVD : double couche, face unique : environ 2,66 GB, MiniDVD : double couche, double face : environ 5,2 GB.

== Ethernet ==
Ethernet est un protocole de réseau local à commutation de paquets. Bien qu'il implémente la couche physique (PHY) et la sous-couche Media Access Control  (MAC), le protocole Ethernet est classé dans la couche de liaison, car les formats de trames que le standard définit sont normalisés et peuvent être encapsulés dans des protocoles autres que ses propres couches physiques MAC et PHY. Ces couches physiques font l'objet de normes séparées en fonction des débits, du support de transmission, de la longueur des liaisons et des conditions environnementales.
Ethernet a été standardisé sous le nom IEEE 802.3. C'est maintenant une norme internationale : ISO/IEC 8802-3.

== FD ==

Floppy disk : Disque souple dont le prototype le plus connu est la disquette 360Ko

== DD ==

Disket Double-Density : La disquette classique 1440Ko à ne pas confondre avec Disque Dur 

== HD == 

Hard-Disk : Disque dur que les auteurs francophone ont tendance à nommer DD (déjà utilisé pour un autre matériel)

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IGD ==

Integrated Graphics Device, est une unité de traitement graphique (Graphics processing unit ou GPU) directement intégrée dans la carte mère d'un PC

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== Live CD ==

Un Live CD (la traduction CD autonome a également été proposée par le projet Debian) est un CD qui contient un système d’exploitation exécutable sans installation, qui se lance au démarrage de l’ordinateur. Par extension, liveCD désigne un système d’exploitation présent sur un support externe amorçable. Les supports de stockage typiques sont le CD, le DVD et la clé USB.

== MBR ==

Le Master Boot Record ou MBR (parfois aussi appelé &quot;Zone amorce&quot;) est le nom donné au premier secteur adressable d'un disque dur (cylindre 0, tête 0 et secteur 1, ou secteur 0 en adressage logique) dans le cadre d'un partitionnement Intel. Sa taille est de 512 octets. Le MBR contient la table des partitions (les 4 partitions primaires) du disque dur. Il contient également une routine d'amorçage dont le but est de charger le système d'exploitation (ou le boot loader/chargeur d'amorçage s'il existe) présent sur la partition active.

Il ne faut pas confondre avec le VBR (Volume Boot Record) qui, bien qu'étant un BS (boot sector) comme la MBR, est le premier secteur d'une partition et non d'un disque.

== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais New Technology File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993 et n'a cessé d'évoluer d'une version de Windows à l'autre.

== PEG PCI ==

PEG Link Mode (PCI Express Graphics Link Mode) est une fonctionnalité disponible dans le BIOS de certaines Carte mère de marque ASUS, qui permet une préséance  (ordre de démarrage) et un overclock automatique de la carte vidéo.

== PC ==

Le sigle PC ( Personnal Computer/Ordinateur Personnel ) est utilisé pour désigner un ordinateur compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, super-ordinateur, serveur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== PCIe ==

PCI Express (Peripheral Component Interconnect Express), officiellement abrégé en PCIe (ou PCI-E) est un &quot;slot&quot; d'extension standard conçu pour remplacer les anciens PCI, PCI-Xet et AGP. PCIe 2.1 est la dernière norme pour les cartes d'extension.
Il spécifie un bus local série (« bus PCI express ») et un connecteur qui sert à connecter des cartes d’extension sur la carte mère d’un ordinateur.

== RAM ==

La mémoire vive, mémoire système ou mémoire volatile, aussi appelée RAM de l'anglais Random Access Memory (que l'on traduit en français par 'mémoire à accès direct'), est la mémoire informatique dans laquelle un ordinateur place les données lors de leur traitement. Les caractéristiques de cette mémoire sont :
sa rapidité d'accès (cette rapidité est essentielle pour fournir rapidement les données au processeur) ;
sa volatilité (cette volatilité implique que les données sont perdues dès que l'ordinateur cesse d'être alimenté en électricité).

== Rolling release ==

Une approche de &quot;rolling release&quot; se réfère à un système en constante évolution, alimenté sans fin par de nouveaux paquets ou de mises à jour de paquets déjà existants, en opposition à un système figé - gelé (freeze) où les seules mises à jour seront des correctifs de sécurité. Sid et testing sont des &quot;rolling release&quot;; Stable (Etch, Lenny) est une version figée (freeze).

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement mais expurgé) : « Relis le &quot;foutu&quot; manuel ») ! Hum...

== SATA ==

Le Serial ATA (ou S-ATA ou SATA) est un bus informatique principalement conçu pour le transfert de données entre un ordinateur et un disque dur mais aussi utilisé pour les lecteurs cd/dvd. C'est l'évolution du standard Advanced Technology Attachment (ATA ou IDE).
Le Serial ATA a de multiples avantages par rapport à son prédécesseur, les trois principaux étant sa vitesse, la gestion des câbles et le branchement à chaud (Hot-Plug). L'ancienne norme ATA est communément désignée sous le nom « Parallel ATA » (P-ATA) afin que les deux ne soient pas confondues.

== SCSI ==

SCSI, Small Computer System Interface en anglais, est un standard définissant un bus informatique permettant de relier un ordinateur à des périphériques ou bien même à un autre ordinateur.
La grande différence apportée par ce bus, est qu'il soulage le processeur des commandes envoyées au périphérique, commandes qui sont traitées directement par le périphérique SCSI lui-même.
Ce système est beaucoup plus rapide qui l'interface E-IDE qui accapare un pourcentage plus ou moins important du processeur.

== SSH ==

Secure Shell (SSH) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole SSH a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== Terminal ==

Aussi appelée console, ligne de commande ou tty, c'est l'interface texte qui permet l'entrée de commandes. Lorsqu'une commande est terminée ou dès qu'elle est lancée en arrière-plan &quot;&lt;la_commande&gt; &amp;&quot; , le prompt ( user@debian:/repertoire$ ) réapparaît et attend l'entrée d'une autre commande.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

[[Catégorie:Glossaire]]</text>
      <sha1>ewsnmyxl9lwrbf3bitoup8ly5u5qmnm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1913</id>
      <parentid>1912</parentid>
      <timestamp>2010-08-10T10:35:32Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <comment>/* MBR */</comment>
      <text xml:space="preserve" bytes="13706">{{Ébauche|les acronymes utilisés dans les pages de ce wiki}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== CDDB ==

La CDDB, pour Compact Disc Data Base, autrement dit base de données pour disque compact (musicaux), regroupe l'ensemble des informations utiles pour renseigner les tags ID3 des fichiers mp3, WMA et Ogg Vorbis.
Nombre de logiciels encodeurs sont capables de se connecter à la CDDB officielle voire à la concurrente en open source freedb.
Pour identifier les CD, CDDB utilise un identifiant nommé DiscId qui est identique à celui de FreeDB.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== DVD ==
Dénomination officielle « Digital Versatile Disc », c'est-à-dire « Disque numérique polyvalent ». Le DVD exploite un support semblable à celui du CD puisque ses dimensions sont les mêmes (disque de 120 mm de diamètre ou une version mini  de 80 mm). Les principales différences techniques concernent d'une part la densité / capacité de stockage-enregistrement et d'autre part, les procédés et traitements numériques (logiciels) pour leur sauvegarde.
Les capacités d'un DVD dépendent de ses spécificités. Il peut être simple ou double face et couche, en version pleine ou mini.

Les principales capacités et versions sont : DVD 5 couche unique, face unique : environ 4,7 GB, DVD DL couche double, face unique : environ 8,54 GB, DVD couche unique, double face : environ 8,54 GB, DVD couche double, double face (peu fréquent) : environ 17,08 GB, MiniDVD : couche unique, face unique : environ 1,4 GB, MiniDVD : couche unique, double face : environ 2,66 GB, MiniDVD : double couche, face unique : environ 2,66 GB, MiniDVD : double couche, double face : environ 5,2 GB.

== Ethernet ==
Ethernet est un protocole de réseau local à commutation de paquets. Bien qu'il implémente la couche physique (PHY) et la sous-couche Media Access Control  (MAC), le protocole Ethernet est classé dans la couche de liaison, car les formats de trames que le standard définit sont normalisés et peuvent être encapsulés dans des protocoles autres que ses propres couches physiques MAC et PHY. Ces couches physiques font l'objet de normes séparées en fonction des débits, du support de transmission, de la longueur des liaisons et des conditions environnementales.
Ethernet a été standardisé sous le nom IEEE 802.3. C'est maintenant une norme internationale : ISO/IEC 8802-3.

== FD ==

Floppy disk : Disque souple dont le prototype le plus connu est la disquette 360Ko

== DD ==

Disket Double-Density : La disquette classique 1440Ko à ne pas confondre avec Disque Dur 

== HD == 

Hard-Disk : Disque dur que les auteurs francophone ont tendance à nommer DD (déjà utilisé pour un autre matériel)

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IGD ==

Integrated Graphics Device, est une unité de traitement graphique (Graphics processing unit ou GPU) directement intégrée dans la carte mère d'un PC

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== Live CD ==

Un Live CD (la traduction CD autonome a également été proposée par le projet Debian) est un CD qui contient un système d’exploitation exécutable sans installation, qui se lance au démarrage de l’ordinateur. Par extension, liveCD désigne un système d’exploitation présent sur un support externe amorçable. Les supports de stockage typiques sont le CD, le DVD et la clé USB.

== MBR ==

Le Master Boot Record ou MBR (parfois aussi appelé &quot;Zone amorce&quot;) est le nom donné au premier secteur adressable du disque dur déclaré amorçable dans le bios (cylindre 0, tête 0 et secteur 1, ou secteur 0 en adressage logique) dans le cadre d'un partitionnement Intel. Sa taille est de 512 octets. Le MBR contient la table des partitions (les 4 partitions primaires) du disque dur. Il contient également une routine d'amorçage dont le but est de charger le système d'exploitation (ou le boot loader/chargeur d'amorçage s'il existe) présent sur la partition active.

Il ne faut pas confondre avec les VBR (Volume Boot Record) qui, bien qu'étant un BS (boot sector) comme le MBR, sont les premiers secteurs des partitions et des disques,autres que celui qui dans le bios est déclaré &quot;bootable&quot;

== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais New Technology File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993 et n'a cessé d'évoluer d'une version de Windows à l'autre.

== PEG PCI ==

PEG Link Mode (PCI Express Graphics Link Mode) est une fonctionnalité disponible dans le BIOS de certaines Carte mère de marque ASUS, qui permet une préséance  (ordre de démarrage) et un overclock automatique de la carte vidéo.

== PC ==

Le sigle PC ( Personnal Computer/Ordinateur Personnel ) est utilisé pour désigner un ordinateur compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, super-ordinateur, serveur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== PCIe ==

PCI Express (Peripheral Component Interconnect Express), officiellement abrégé en PCIe (ou PCI-E) est un &quot;slot&quot; d'extension standard conçu pour remplacer les anciens PCI, PCI-Xet et AGP. PCIe 2.1 est la dernière norme pour les cartes d'extension.
Il spécifie un bus local série (« bus PCI express ») et un connecteur qui sert à connecter des cartes d’extension sur la carte mère d’un ordinateur.

== RAM ==

La mémoire vive, mémoire système ou mémoire volatile, aussi appelée RAM de l'anglais Random Access Memory (que l'on traduit en français par 'mémoire à accès direct'), est la mémoire informatique dans laquelle un ordinateur place les données lors de leur traitement. Les caractéristiques de cette mémoire sont :
sa rapidité d'accès (cette rapidité est essentielle pour fournir rapidement les données au processeur) ;
sa volatilité (cette volatilité implique que les données sont perdues dès que l'ordinateur cesse d'être alimenté en électricité).

== Rolling release ==

Une approche de &quot;rolling release&quot; se réfère à un système en constante évolution, alimenté sans fin par de nouveaux paquets ou de mises à jour de paquets déjà existants, en opposition à un système figé - gelé (freeze) où les seules mises à jour seront des correctifs de sécurité. Sid et testing sont des &quot;rolling release&quot;; Stable (Etch, Lenny) est une version figée (freeze).

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement mais expurgé) : « Relis le &quot;foutu&quot; manuel ») ! Hum...

== SATA ==

Le Serial ATA (ou S-ATA ou SATA) est un bus informatique principalement conçu pour le transfert de données entre un ordinateur et un disque dur mais aussi utilisé pour les lecteurs cd/dvd. C'est l'évolution du standard Advanced Technology Attachment (ATA ou IDE).
Le Serial ATA a de multiples avantages par rapport à son prédécesseur, les trois principaux étant sa vitesse, la gestion des câbles et le branchement à chaud (Hot-Plug). L'ancienne norme ATA est communément désignée sous le nom « Parallel ATA » (P-ATA) afin que les deux ne soient pas confondues.

== SCSI ==

SCSI, Small Computer System Interface en anglais, est un standard définissant un bus informatique permettant de relier un ordinateur à des périphériques ou bien même à un autre ordinateur.
La grande différence apportée par ce bus, est qu'il soulage le processeur des commandes envoyées au périphérique, commandes qui sont traitées directement par le périphérique SCSI lui-même.
Ce système est beaucoup plus rapide qui l'interface E-IDE qui accapare un pourcentage plus ou moins important du processeur.

== SSH ==

Secure Shell (SSH) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole SSH a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== Terminal ==

Aussi appelée console, ligne de commande ou tty, c'est l'interface texte qui permet l'entrée de commandes. Lorsqu'une commande est terminée ou dès qu'elle est lancée en arrière-plan &quot;&lt;la_commande&gt; &amp;&quot; , le prompt ( user@debian:/repertoire$ ) réapparaît et attend l'entrée d'une autre commande.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

[[Catégorie:Glossaire]]</text>
      <sha1>ob85maydud3lbqgzu1jt6mj9jz585qf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2502</id>
      <parentid>1913</parentid>
      <timestamp>2010-12-16T06:21:55Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* SSH */</comment>
      <text xml:space="preserve" bytes="14215">{{Ébauche|les acronymes utilisés dans les pages de ce wiki}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== CDDB ==

La CDDB, pour Compact Disc Data Base, autrement dit base de données pour disque compact (musicaux), regroupe l'ensemble des informations utiles pour renseigner les tags ID3 des fichiers mp3, WMA et Ogg Vorbis.
Nombre de logiciels encodeurs sont capables de se connecter à la CDDB officielle voire à la concurrente en open source freedb.
Pour identifier les CD, CDDB utilise un identifiant nommé DiscId qui est identique à celui de FreeDB.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== DVD ==
Dénomination officielle « Digital Versatile Disc », c'est-à-dire « Disque numérique polyvalent ». Le DVD exploite un support semblable à celui du CD puisque ses dimensions sont les mêmes (disque de 120 mm de diamètre ou une version mini  de 80 mm). Les principales différences techniques concernent d'une part la densité / capacité de stockage-enregistrement et d'autre part, les procédés et traitements numériques (logiciels) pour leur sauvegarde.
Les capacités d'un DVD dépendent de ses spécificités. Il peut être simple ou double face et couche, en version pleine ou mini.

Les principales capacités et versions sont : DVD 5 couche unique, face unique : environ 4,7 GB, DVD DL couche double, face unique : environ 8,54 GB, DVD couche unique, double face : environ 8,54 GB, DVD couche double, double face (peu fréquent) : environ 17,08 GB, MiniDVD : couche unique, face unique : environ 1,4 GB, MiniDVD : couche unique, double face : environ 2,66 GB, MiniDVD : double couche, face unique : environ 2,66 GB, MiniDVD : double couche, double face : environ 5,2 GB.

== Ethernet ==
Ethernet est un protocole de réseau local à commutation de paquets. Bien qu'il implémente la couche physique (PHY) et la sous-couche Media Access Control  (MAC), le protocole Ethernet est classé dans la couche de liaison, car les formats de trames que le standard définit sont normalisés et peuvent être encapsulés dans des protocoles autres que ses propres couches physiques MAC et PHY. Ces couches physiques font l'objet de normes séparées en fonction des débits, du support de transmission, de la longueur des liaisons et des conditions environnementales.
Ethernet a été standardisé sous le nom IEEE 802.3. C'est maintenant une norme internationale : ISO/IEC 8802-3.

== FD ==

Floppy disk : Disque souple dont le prototype le plus connu est la disquette 360Ko

== DD ==

Disket Double-Density : La disquette classique 1440Ko à ne pas confondre avec Disque Dur 

== HD == 

Hard-Disk : Disque dur que les auteurs francophone ont tendance à nommer DD (déjà utilisé pour un autre matériel)

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IGD ==

Integrated Graphics Device, est une unité de traitement graphique (Graphics processing unit ou GPU) directement intégrée dans la carte mère d'un PC

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== Live CD ==

Un Live CD (la traduction CD autonome a également été proposée par le projet Debian) est un CD qui contient un système d’exploitation exécutable sans installation, qui se lance au démarrage de l’ordinateur. Par extension, liveCD désigne un système d’exploitation présent sur un support externe amorçable. Les supports de stockage typiques sont le CD, le DVD et la clé USB.

== MBR ==

Le Master Boot Record ou MBR (parfois aussi appelé &quot;Zone amorce&quot;) est le nom donné au premier secteur adressable du disque dur déclaré amorçable dans le bios (cylindre 0, tête 0 et secteur 1, ou secteur 0 en adressage logique) dans le cadre d'un partitionnement Intel. Sa taille est de 512 octets. Le MBR contient la table des partitions (les 4 partitions primaires) du disque dur. Il contient également une routine d'amorçage dont le but est de charger le système d'exploitation (ou le boot loader/chargeur d'amorçage s'il existe) présent sur la partition active.

Il ne faut pas confondre avec les VBR (Volume Boot Record) qui, bien qu'étant un BS (boot sector) comme le MBR, sont les premiers secteurs des partitions et des disques,autres que celui qui dans le bios est déclaré &quot;bootable&quot;

== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais New Technology File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993 et n'a cessé d'évoluer d'une version de Windows à l'autre.

== PEG PCI ==

PEG Link Mode (PCI Express Graphics Link Mode) est une fonctionnalité disponible dans le BIOS de certaines Carte mère de marque ASUS, qui permet une préséance  (ordre de démarrage) et un overclock automatique de la carte vidéo.

== PC ==

Le sigle PC ( Personnal Computer/Ordinateur Personnel ) est utilisé pour désigner un ordinateur compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, super-ordinateur, serveur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== PCIe ==

PCI Express (Peripheral Component Interconnect Express), officiellement abrégé en PCIe (ou PCI-E) est un &quot;slot&quot; d'extension standard conçu pour remplacer les anciens PCI, PCI-Xet et AGP. PCIe 2.1 est la dernière norme pour les cartes d'extension.
Il spécifie un bus local série (« bus PCI express ») et un connecteur qui sert à connecter des cartes d’extension sur la carte mère d’un ordinateur.

== RAM ==

La mémoire vive, mémoire système ou mémoire volatile, aussi appelée RAM de l'anglais Random Access Memory (que l'on traduit en français par 'mémoire à accès direct'), est la mémoire informatique dans laquelle un ordinateur place les données lors de leur traitement. Les caractéristiques de cette mémoire sont :
sa rapidité d'accès (cette rapidité est essentielle pour fournir rapidement les données au processeur) ;
sa volatilité (cette volatilité implique que les données sont perdues dès que l'ordinateur cesse d'être alimenté en électricité).

== Rolling release ==

Une approche de &quot;rolling release&quot; se réfère à un système en constante évolution, alimenté sans fin par de nouveaux paquets ou de mises à jour de paquets déjà existants, en opposition à un système figé - gelé (freeze) où les seules mises à jour seront des correctifs de sécurité. Sid et testing sont des &quot;rolling release&quot;; Stable (Etch, Lenny) est une version figée (freeze).

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement mais expurgé) : « Relis le &quot;foutu&quot; manuel ») ! Hum...

== SATA ==

Le Serial ATA (ou S-ATA ou SATA) est un bus informatique principalement conçu pour le transfert de données entre un ordinateur et un disque dur mais aussi utilisé pour les lecteurs cd/dvd. C'est l'évolution du standard Advanced Technology Attachment (ATA ou IDE).
Le Serial ATA a de multiples avantages par rapport à son prédécesseur, les trois principaux étant sa vitesse, la gestion des câbles et le branchement à chaud (Hot-Plug). L'ancienne norme ATA est communément désignée sous le nom « Parallel ATA » (P-ATA) afin que les deux ne soient pas confondues.

== SCSI ==

SCSI, Small Computer System Interface en anglais, est un standard définissant un bus informatique permettant de relier un ordinateur à des périphériques ou bien même à un autre ordinateur.
La grande différence apportée par ce bus, est qu'il soulage le processeur des commandes envoyées au périphérique, commandes qui sont traitées directement par le périphérique SCSI lui-même.
Ce système est beaucoup plus rapide qui l'interface E-IDE qui accapare un pourcentage plus ou moins important du processeur.

== SSH ==

Secure Shell (SSH) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole SSH a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== TLD ==

Abréviation anglo-saxone : Top Level Domain. Suffixe des nom de domaine de haut niveau. Par exemple .com, .net, .biz, .info, .org

Il existe deux types de TLD : les géographiques (.fr, .uk, .be) et les &quot;catégoriciels&quot; (.name, .org, .edu). Ils permettent de distinguer les sites selon leur origine géographique ou leur activité.

Pour ce qui est des &quot;catagoriciels&quot; un site éducatif sera en .edu, un site gouvernemental sera en .gov, une entreprise commerciale aura un nom de domaine en .com

== Terminal ==

Aussi appelée console, ligne de commande ou tty, c'est l'interface texte qui permet l'entrée de commandes. Lorsqu'une commande est terminée ou dès qu'elle est lancée en arrière-plan &quot;&lt;la_commande&gt; &amp;&quot; , le prompt ( user@debian:/repertoire$ ) réapparaît et attend l'entrée d'une autre commande.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

[[Catégorie:Glossaire]]</text>
      <sha1>0v2147hxdgxh3ib2wytcsb9ofs4vmv1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2504</id>
      <parentid>2502</parentid>
      <timestamp>2010-12-16T07:40:29Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="14214">{{Ébauche|les acronymes utilisés dans les pages de ce wiki}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== CDDB ==

La CDDB, pour Compact Disc Data Base, autrement dit base de données pour disque compact (musicaux), regroupe l'ensemble des informations utiles pour renseigner les tags ID3 des fichiers mp3, WMA et Ogg Vorbis.
Nombre de logiciels encodeurs sont capables de se connecter à la CDDB officielle voire à la concurrente en open source freedb.
Pour identifier les CD, CDDB utilise un identifiant nommé DiscId qui est identique à celui de FreeDB.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== DVD ==
Dénomination officielle « Digital Versatile Disc », c'est-à-dire « Disque numérique polyvalent ». Le DVD exploite un support semblable à celui du CD puisque ses dimensions sont les mêmes (disque de 120 mm de diamètre ou une version mini  de 80 mm). Les principales différences techniques concernent d'une part la densité / capacité de stockage-enregistrement et d'autre part, les procédés et traitements numériques (logiciels) pour leur sauvegarde.
Les capacités d'un DVD dépendent de ses spécificités. Il peut être simple ou double face et couche, en version pleine ou mini.

Les principales capacités et versions sont : DVD 5 couche unique, face unique : environ 4,7 GB, DVD DL couche double, face unique : environ 8,54 GB, DVD couche unique, double face : environ 8,54 GB, DVD couche double, double face (peu fréquent) : environ 17,08 GB, MiniDVD : couche unique, face unique : environ 1,4 GB, MiniDVD : couche unique, double face : environ 2,66 GB, MiniDVD : double couche, face unique : environ 2,66 GB, MiniDVD : double couche, double face : environ 5,2 GB.

== Ethernet ==
Ethernet est un protocole de réseau local à commutation de paquets. Bien qu'il implémente la couche physique (PHY) et la sous-couche Media Access Control  (MAC), le protocole Ethernet est classé dans la couche de liaison, car les formats de trames que le standard définit sont normalisés et peuvent être encapsulés dans des protocoles autres que ses propres couches physiques MAC et PHY. Ces couches physiques font l'objet de normes séparées en fonction des débits, du support de transmission, de la longueur des liaisons et des conditions environnementales.
Ethernet a été standardisé sous le nom IEEE 802.3. C'est maintenant une norme internationale : ISO/IEC 8802-3.

== FD ==

Floppy disk : Disque souple dont le prototype le plus connu est la disquette 360Ko

== DD ==

Disket Double-Density : La disquette classique 1440Ko à ne pas confondre avec Disque Dur 

== HD == 

Hard-Disk : Disque dur que les auteurs francophone ont tendance à nommer DD (déjà utilisé pour un autre matériel)

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IGD ==

Integrated Graphics Device, est une unité de traitement graphique (Graphics processing unit ou GPU) directement intégrée dans la carte mère d'un PC

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== Live CD ==

Un Live CD (la traduction CD autonome a également été proposée par le projet Debian) est un CD qui contient un système d’exploitation exécutable sans installation, qui se lance au démarrage de l’ordinateur. Par extension, liveCD désigne un système d’exploitation présent sur un support externe amorçable. Les supports de stockage typiques sont le CD, le DVD et la clé USB.

== MBR ==

Le Master Boot Record ou MBR (parfois aussi appelé &quot;Zone amorce&quot;) est le nom donné au premier secteur adressable du disque dur déclaré amorçable dans le bios (cylindre 0, tête 0 et secteur 1, ou secteur 0 en adressage logique) dans le cadre d'un partitionnement Intel. Sa taille est de 512 octets. Le MBR contient la table des partitions (les 4 partitions primaires) du disque dur. Il contient également une routine d'amorçage dont le but est de charger le système d'exploitation (ou le boot loader/chargeur d'amorçage s'il existe) présent sur la partition active.

Il ne faut pas confondre avec les VBR (Volume Boot Record) qui, bien qu'étant un BS (boot sector) comme le MBR, sont les premiers secteurs des partitions et des disques,autres que celui qui dans le bios est déclaré &quot;bootable&quot;

== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais New Technology File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993 et n'a cessé d'évoluer d'une version de Windows à l'autre.

== PEG PCI ==

PEG Link Mode (PCI Express Graphics Link Mode) est une fonctionnalité disponible dans le BIOS de certaines Carte mère de marque ASUS, qui permet une préséance  (ordre de démarrage) et un overclock automatique de la carte vidéo.

== PC ==

Le sigle PC ( Personnal Computer/Ordinateur Personnel ) est utilisé pour désigner un ordinateur compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, super-ordinateur, serveur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== PCIe ==

PCI Express (Peripheral Component Interconnect Express), officiellement abrégé en PCIe (ou PCI-E) est un &quot;slot&quot; d'extension standard conçu pour remplacer les anciens PCI, PCI-Xet et AGP. PCIe 2.1 est la dernière norme pour les cartes d'extension.
Il spécifie un bus local série (« bus PCI express ») et un connecteur qui sert à connecter des cartes d’extension sur la carte mère d’un ordinateur.

== RAM ==

La mémoire vive, mémoire système ou mémoire volatile, aussi appelée RAM de l'anglais Random Access Memory (que l'on traduit en français par 'mémoire à accès direct'), est la mémoire informatique dans laquelle un ordinateur place les données lors de leur traitement. Les caractéristiques de cette mémoire sont :
sa rapidité d'accès (cette rapidité est essentielle pour fournir rapidement les données au processeur) ;
sa volatilité (cette volatilité implique que les données sont perdues dès que l'ordinateur cesse d'être alimenté en électricité).

== Rolling release ==

Une approche de &quot;rolling release&quot; se réfère à un système en constante évolution, alimenté sans fin par de nouveaux paquets ou de mises à jour de paquets déjà existants, en opposition à un système figé - gelé (freeze) où les seules mises à jour seront des correctifs de sécurité. Sid et testing sont des &quot;rolling release&quot;; Stable (Etch, Lenny) est une version figée (freeze).

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement mais expurgé) : « Relis le &quot;foutu&quot; manuel ») ! Hum...

== SATA ==

Le Serial ATA (ou S-ATA ou SATA) est un bus informatique principalement conçu pour le transfert de données entre un ordinateur et un disque dur mais aussi utilisé pour les lecteurs cd/dvd. C'est l'évolution du standard Advanced Technology Attachment (ATA ou IDE).
Le Serial ATA a de multiples avantages par rapport à son prédécesseur, les trois principaux étant sa vitesse, la gestion des câbles et le branchement à chaud (Hot-Plug). L'ancienne norme ATA est communément désignée sous le nom « Parallel ATA » (P-ATA) afin que les deux ne soient pas confondues.

== SCSI ==

SCSI, Small Computer System Interface en anglais, est un standard définissant un bus informatique permettant de relier un ordinateur à des périphériques ou bien même à un autre ordinateur.
La grande différence apportée par ce bus, est qu'il soulage le processeur des commandes envoyées au périphérique, commandes qui sont traitées directement par le périphérique SCSI lui-même.
Ce système est beaucoup plus rapide qui l'interface E-IDE qui accapare un pourcentage plus ou moins important du processeur.

== SSH ==

Secure Shell (SSH) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole SSH a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== TLD ==

Abréviation anglo-saxone : Top Level Domain. Suffixe des nom de domaine de haut niveau. Par exemple .com, .net, .biz, .info, .org

Il existe deux types de TLD : les géographiques (.fr, .uk, .be) et les &quot;catégoriciels&quot; (.name, .org, .edu). Ils permettent de distinguer les sites selon leur origine géographique ou leur activité.

Pour ce qui est des &quot;catégoriels&quot; un site éducatif sera en .edu, un site gouvernemental sera en .gov, une entreprise commerciale aura un nom de domaine en .com

== Terminal ==

Aussi appelée console, ligne de commande ou tty, c'est l'interface texte qui permet l'entrée de commandes. Lorsqu'une commande est terminée ou dès qu'elle est lancée en arrière-plan &quot;&lt;la_commande&gt; &amp;&quot; , le prompt ( user@debian:/repertoire$ ) réapparaît et attend l'entrée d'une autre commande.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

[[Catégorie:Glossaire]]</text>
      <sha1>ntz0hxhg5zv59lu6jaa7z6cpkc0gu2i</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2505</id>
      <parentid>2504</parentid>
      <timestamp>2010-12-16T08:19:50Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* TLD */</comment>
      <text xml:space="preserve" bytes="14212">{{Ébauche|les acronymes utilisés dans les pages de ce wiki}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== CDDB ==

La CDDB, pour Compact Disc Data Base, autrement dit base de données pour disque compact (musicaux), regroupe l'ensemble des informations utiles pour renseigner les tags ID3 des fichiers mp3, WMA et Ogg Vorbis.
Nombre de logiciels encodeurs sont capables de se connecter à la CDDB officielle voire à la concurrente en open source freedb.
Pour identifier les CD, CDDB utilise un identifiant nommé DiscId qui est identique à celui de FreeDB.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== DVD ==
Dénomination officielle « Digital Versatile Disc », c'est-à-dire « Disque numérique polyvalent ». Le DVD exploite un support semblable à celui du CD puisque ses dimensions sont les mêmes (disque de 120 mm de diamètre ou une version mini  de 80 mm). Les principales différences techniques concernent d'une part la densité / capacité de stockage-enregistrement et d'autre part, les procédés et traitements numériques (logiciels) pour leur sauvegarde.
Les capacités d'un DVD dépendent de ses spécificités. Il peut être simple ou double face et couche, en version pleine ou mini.

Les principales capacités et versions sont : DVD 5 couche unique, face unique : environ 4,7 GB, DVD DL couche double, face unique : environ 8,54 GB, DVD couche unique, double face : environ 8,54 GB, DVD couche double, double face (peu fréquent) : environ 17,08 GB, MiniDVD : couche unique, face unique : environ 1,4 GB, MiniDVD : couche unique, double face : environ 2,66 GB, MiniDVD : double couche, face unique : environ 2,66 GB, MiniDVD : double couche, double face : environ 5,2 GB.

== Ethernet ==
Ethernet est un protocole de réseau local à commutation de paquets. Bien qu'il implémente la couche physique (PHY) et la sous-couche Media Access Control  (MAC), le protocole Ethernet est classé dans la couche de liaison, car les formats de trames que le standard définit sont normalisés et peuvent être encapsulés dans des protocoles autres que ses propres couches physiques MAC et PHY. Ces couches physiques font l'objet de normes séparées en fonction des débits, du support de transmission, de la longueur des liaisons et des conditions environnementales.
Ethernet a été standardisé sous le nom IEEE 802.3. C'est maintenant une norme internationale : ISO/IEC 8802-3.

== FD ==

Floppy disk : Disque souple dont le prototype le plus connu est la disquette 360Ko

== DD ==

Disket Double-Density : La disquette classique 1440Ko à ne pas confondre avec Disque Dur 

== HD == 

Hard-Disk : Disque dur que les auteurs francophone ont tendance à nommer DD (déjà utilisé pour un autre matériel)

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IGD ==

Integrated Graphics Device, est une unité de traitement graphique (Graphics processing unit ou GPU) directement intégrée dans la carte mère d'un PC

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== Live CD ==

Un Live CD (la traduction CD autonome a également été proposée par le projet Debian) est un CD qui contient un système d’exploitation exécutable sans installation, qui se lance au démarrage de l’ordinateur. Par extension, liveCD désigne un système d’exploitation présent sur un support externe amorçable. Les supports de stockage typiques sont le CD, le DVD et la clé USB.

== MBR ==

Le Master Boot Record ou MBR (parfois aussi appelé &quot;Zone amorce&quot;) est le nom donné au premier secteur adressable du disque dur déclaré amorçable dans le bios (cylindre 0, tête 0 et secteur 1, ou secteur 0 en adressage logique) dans le cadre d'un partitionnement Intel. Sa taille est de 512 octets. Le MBR contient la table des partitions (les 4 partitions primaires) du disque dur. Il contient également une routine d'amorçage dont le but est de charger le système d'exploitation (ou le boot loader/chargeur d'amorçage s'il existe) présent sur la partition active.

Il ne faut pas confondre avec les VBR (Volume Boot Record) qui, bien qu'étant un BS (boot sector) comme le MBR, sont les premiers secteurs des partitions et des disques,autres que celui qui dans le bios est déclaré &quot;bootable&quot;

== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais New Technology File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993 et n'a cessé d'évoluer d'une version de Windows à l'autre.

== PEG PCI ==

PEG Link Mode (PCI Express Graphics Link Mode) est une fonctionnalité disponible dans le BIOS de certaines Carte mère de marque ASUS, qui permet une préséance  (ordre de démarrage) et un overclock automatique de la carte vidéo.

== PC ==

Le sigle PC ( Personnal Computer/Ordinateur Personnel ) est utilisé pour désigner un ordinateur compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, super-ordinateur, serveur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== PCIe ==

PCI Express (Peripheral Component Interconnect Express), officiellement abrégé en PCIe (ou PCI-E) est un &quot;slot&quot; d'extension standard conçu pour remplacer les anciens PCI, PCI-Xet et AGP. PCIe 2.1 est la dernière norme pour les cartes d'extension.
Il spécifie un bus local série (« bus PCI express ») et un connecteur qui sert à connecter des cartes d’extension sur la carte mère d’un ordinateur.

== RAM ==

La mémoire vive, mémoire système ou mémoire volatile, aussi appelée RAM de l'anglais Random Access Memory (que l'on traduit en français par 'mémoire à accès direct'), est la mémoire informatique dans laquelle un ordinateur place les données lors de leur traitement. Les caractéristiques de cette mémoire sont :
sa rapidité d'accès (cette rapidité est essentielle pour fournir rapidement les données au processeur) ;
sa volatilité (cette volatilité implique que les données sont perdues dès que l'ordinateur cesse d'être alimenté en électricité).

== Rolling release ==

Une approche de &quot;rolling release&quot; se réfère à un système en constante évolution, alimenté sans fin par de nouveaux paquets ou de mises à jour de paquets déjà existants, en opposition à un système figé - gelé (freeze) où les seules mises à jour seront des correctifs de sécurité. Sid et testing sont des &quot;rolling release&quot;; Stable (Etch, Lenny) est une version figée (freeze).

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement mais expurgé) : « Relis le &quot;foutu&quot; manuel ») ! Hum...

== SATA ==

Le Serial ATA (ou S-ATA ou SATA) est un bus informatique principalement conçu pour le transfert de données entre un ordinateur et un disque dur mais aussi utilisé pour les lecteurs cd/dvd. C'est l'évolution du standard Advanced Technology Attachment (ATA ou IDE).
Le Serial ATA a de multiples avantages par rapport à son prédécesseur, les trois principaux étant sa vitesse, la gestion des câbles et le branchement à chaud (Hot-Plug). L'ancienne norme ATA est communément désignée sous le nom « Parallel ATA » (P-ATA) afin que les deux ne soient pas confondues.

== SCSI ==

SCSI, Small Computer System Interface en anglais, est un standard définissant un bus informatique permettant de relier un ordinateur à des périphériques ou bien même à un autre ordinateur.
La grande différence apportée par ce bus, est qu'il soulage le processeur des commandes envoyées au périphérique, commandes qui sont traitées directement par le périphérique SCSI lui-même.
Ce système est beaucoup plus rapide qui l'interface E-IDE qui accapare un pourcentage plus ou moins important du processeur.

== SSH ==

Secure Shell (SSH) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole SSH a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== TLD ==

Abréviation anglo-saxone : Top Level Domain. Suffixe des nom de domaine de haut niveau. Par exemple .com, .net, .biz, .info, .org

Il existe deux types de TLD : les géographiques (.fr, .uk, .be) et les &quot;catégoriels&quot; (.name, .org, .edu). Ils permettent de distinguer les sites selon leur origine géographique ou leur activité.

Pour ce qui est des &quot;catégoriels&quot; un site éducatif sera en .edu, un site gouvernemental sera en .gov, une entreprise commerciale aura un nom de domaine en .com

== Terminal ==

Aussi appelée console, ligne de commande ou tty, c'est l'interface texte qui permet l'entrée de commandes. Lorsqu'une commande est terminée ou dès qu'elle est lancée en arrière-plan &quot;&lt;la_commande&gt; &amp;&quot; , le prompt ( user@debian:/repertoire$ ) réapparaît et attend l'entrée d'une autre commande.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

[[Catégorie:Glossaire]]</text>
      <sha1>sw4k8vfjmeag6mjyth43766mvqbrkej</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3163</id>
      <parentid>2505</parentid>
      <timestamp>2011-08-03T08:10:25Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* SSH */ liens</comment>
      <text xml:space="preserve" bytes="14228">{{Ébauche|les acronymes utilisés dans les pages de ce wiki}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== CDDB ==

La CDDB, pour Compact Disc Data Base, autrement dit base de données pour disque compact (musicaux), regroupe l'ensemble des informations utiles pour renseigner les tags ID3 des fichiers mp3, WMA et Ogg Vorbis.
Nombre de logiciels encodeurs sont capables de se connecter à la CDDB officielle voire à la concurrente en open source freedb.
Pour identifier les CD, CDDB utilise un identifiant nommé DiscId qui est identique à celui de FreeDB.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== DVD ==
Dénomination officielle « Digital Versatile Disc », c'est-à-dire « Disque numérique polyvalent ». Le DVD exploite un support semblable à celui du CD puisque ses dimensions sont les mêmes (disque de 120 mm de diamètre ou une version mini  de 80 mm). Les principales différences techniques concernent d'une part la densité / capacité de stockage-enregistrement et d'autre part, les procédés et traitements numériques (logiciels) pour leur sauvegarde.
Les capacités d'un DVD dépendent de ses spécificités. Il peut être simple ou double face et couche, en version pleine ou mini.

Les principales capacités et versions sont : DVD 5 couche unique, face unique : environ 4,7 GB, DVD DL couche double, face unique : environ 8,54 GB, DVD couche unique, double face : environ 8,54 GB, DVD couche double, double face (peu fréquent) : environ 17,08 GB, MiniDVD : couche unique, face unique : environ 1,4 GB, MiniDVD : couche unique, double face : environ 2,66 GB, MiniDVD : double couche, face unique : environ 2,66 GB, MiniDVD : double couche, double face : environ 5,2 GB.

== Ethernet ==
Ethernet est un protocole de réseau local à commutation de paquets. Bien qu'il implémente la couche physique (PHY) et la sous-couche Media Access Control  (MAC), le protocole Ethernet est classé dans la couche de liaison, car les formats de trames que le standard définit sont normalisés et peuvent être encapsulés dans des protocoles autres que ses propres couches physiques MAC et PHY. Ces couches physiques font l'objet de normes séparées en fonction des débits, du support de transmission, de la longueur des liaisons et des conditions environnementales.
Ethernet a été standardisé sous le nom IEEE 802.3. C'est maintenant une norme internationale : ISO/IEC 8802-3.

== FD ==

Floppy disk : Disque souple dont le prototype le plus connu est la disquette 360Ko

== DD ==

Disket Double-Density : La disquette classique 1440Ko à ne pas confondre avec Disque Dur 

== HD == 

Hard-Disk : Disque dur que les auteurs francophone ont tendance à nommer DD (déjà utilisé pour un autre matériel)

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IGD ==

Integrated Graphics Device, est une unité de traitement graphique (Graphics processing unit ou GPU) directement intégrée dans la carte mère d'un PC

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== Live CD ==

Un Live CD (la traduction CD autonome a également été proposée par le projet Debian) est un CD qui contient un système d’exploitation exécutable sans installation, qui se lance au démarrage de l’ordinateur. Par extension, liveCD désigne un système d’exploitation présent sur un support externe amorçable. Les supports de stockage typiques sont le CD, le DVD et la clé USB.

== MBR ==

Le Master Boot Record ou MBR (parfois aussi appelé &quot;Zone amorce&quot;) est le nom donné au premier secteur adressable du disque dur déclaré amorçable dans le bios (cylindre 0, tête 0 et secteur 1, ou secteur 0 en adressage logique) dans le cadre d'un partitionnement Intel. Sa taille est de 512 octets. Le MBR contient la table des partitions (les 4 partitions primaires) du disque dur. Il contient également une routine d'amorçage dont le but est de charger le système d'exploitation (ou le boot loader/chargeur d'amorçage s'il existe) présent sur la partition active.

Il ne faut pas confondre avec les VBR (Volume Boot Record) qui, bien qu'étant un BS (boot sector) comme le MBR, sont les premiers secteurs des partitions et des disques,autres que celui qui dans le bios est déclaré &quot;bootable&quot;

== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais New Technology File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993 et n'a cessé d'évoluer d'une version de Windows à l'autre.

== PEG PCI ==

PEG Link Mode (PCI Express Graphics Link Mode) est une fonctionnalité disponible dans le BIOS de certaines Carte mère de marque ASUS, qui permet une préséance  (ordre de démarrage) et un overclock automatique de la carte vidéo.

== PC ==

Le sigle PC ( Personnal Computer/Ordinateur Personnel ) est utilisé pour désigner un ordinateur compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, super-ordinateur, serveur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== PCIe ==

PCI Express (Peripheral Component Interconnect Express), officiellement abrégé en PCIe (ou PCI-E) est un &quot;slot&quot; d'extension standard conçu pour remplacer les anciens PCI, PCI-Xet et AGP. PCIe 2.1 est la dernière norme pour les cartes d'extension.
Il spécifie un bus local série (« bus PCI express ») et un connecteur qui sert à connecter des cartes d’extension sur la carte mère d’un ordinateur.

== RAM ==

La mémoire vive, mémoire système ou mémoire volatile, aussi appelée RAM de l'anglais Random Access Memory (que l'on traduit en français par 'mémoire à accès direct'), est la mémoire informatique dans laquelle un ordinateur place les données lors de leur traitement. Les caractéristiques de cette mémoire sont :
sa rapidité d'accès (cette rapidité est essentielle pour fournir rapidement les données au processeur) ;
sa volatilité (cette volatilité implique que les données sont perdues dès que l'ordinateur cesse d'être alimenté en électricité).

== Rolling release ==

Une approche de &quot;rolling release&quot; se réfère à un système en constante évolution, alimenté sans fin par de nouveaux paquets ou de mises à jour de paquets déjà existants, en opposition à un système figé - gelé (freeze) où les seules mises à jour seront des correctifs de sécurité. Sid et testing sont des &quot;rolling release&quot;; Stable (Etch, Lenny) est une version figée (freeze).

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement mais expurgé) : « Relis le &quot;foutu&quot; manuel ») ! Hum...

== SATA ==

Le Serial ATA (ou S-ATA ou SATA) est un bus informatique principalement conçu pour le transfert de données entre un ordinateur et un disque dur mais aussi utilisé pour les lecteurs cd/dvd. C'est l'évolution du standard Advanced Technology Attachment (ATA ou IDE).
Le Serial ATA a de multiples avantages par rapport à son prédécesseur, les trois principaux étant sa vitesse, la gestion des câbles et le branchement à chaud (Hot-Plug). L'ancienne norme ATA est communément désignée sous le nom « Parallel ATA » (P-ATA) afin que les deux ne soient pas confondues.

== SCSI ==

SCSI, Small Computer System Interface en anglais, est un standard définissant un bus informatique permettant de relier un ordinateur à des périphériques ou bien même à un autre ordinateur.
La grande différence apportée par ce bus, est qu'il soulage le processeur des commandes envoyées au périphérique, commandes qui sont traitées directement par le périphérique SCSI lui-même.
Ce système est beaucoup plus rapide qui l'interface E-IDE qui accapare un pourcentage plus ou moins important du processeur.

== SSH ==

Secure Shell ([[Ssh|SSH]]) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole [[Ssh|SSH]] a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== TLD ==

Abréviation anglo-saxone : Top Level Domain. Suffixe des nom de domaine de haut niveau. Par exemple .com, .net, .biz, .info, .org

Il existe deux types de TLD : les géographiques (.fr, .uk, .be) et les &quot;catégoriels&quot; (.name, .org, .edu). Ils permettent de distinguer les sites selon leur origine géographique ou leur activité.

Pour ce qui est des &quot;catégoriels&quot; un site éducatif sera en .edu, un site gouvernemental sera en .gov, une entreprise commerciale aura un nom de domaine en .com

== Terminal ==

Aussi appelée console, ligne de commande ou tty, c'est l'interface texte qui permet l'entrée de commandes. Lorsqu'une commande est terminée ou dès qu'elle est lancée en arrière-plan &quot;&lt;la_commande&gt; &amp;&quot; , le prompt ( user@debian:/repertoire$ ) réapparaît et attend l'entrée d'une autre commande.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

[[Catégorie:Glossaire]]</text>
      <sha1>68r5lzee29j41c272hg8yyncx2lr11h</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4511</id>
      <parentid>3163</parentid>
      <timestamp>2012-10-15T12:21:36Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="16185">{{Ébauche|les acronymes utilisés dans les pages de ce wiki}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== CDDB ==

La CDDB, pour Compact Disc Data Base, autrement dit base de données pour disque compact (musicaux), regroupe l'ensemble des informations utiles pour renseigner les tags ID3 des fichiers mp3, WMA et Ogg Vorbis.
Nombre de logiciels encodeurs sont capables de se connecter à la CDDB officielle voire à la concurrente en open source freedb.
Pour identifier les CD, CDDB utilise un identifiant nommé DiscId qui est identique à celui de FreeDB.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== DVD ==
Dénomination officielle « Digital Versatile Disc », c'est-à-dire « Disque numérique polyvalent ». Le DVD exploite un support semblable à celui du CD puisque ses dimensions sont les mêmes (disque de 120 mm de diamètre ou une version mini  de 80 mm). Les principales différences techniques concernent d'une part la densité / capacité de stockage-enregistrement et d'autre part, les procédés et traitements numériques (logiciels) pour leur sauvegarde.
Les capacités d'un DVD dépendent de ses spécificités. Il peut être simple ou double face et couche, en version pleine ou mini.

Les principales capacités et versions sont : DVD 5 couche unique, face unique : environ 4,7 GB, DVD DL couche double, face unique : environ 8,54 GB, DVD couche unique, double face : environ 8,54 GB, DVD couche double, double face (peu fréquent) : environ 17,08 GB, MiniDVD : couche unique, face unique : environ 1,4 GB, MiniDVD : couche unique, double face : environ 2,66 GB, MiniDVD : double couche, face unique : environ 2,66 GB, MiniDVD : double couche, double face : environ 5,2 GB.

== Ethernet ==
Ethernet est un protocole de réseau local à commutation de paquets. Bien qu'il implémente la couche physique (PHY) et la sous-couche Media Access Control  (MAC), le protocole Ethernet est classé dans la couche de liaison, car les formats de trames que le standard définit sont normalisés et peuvent être encapsulés dans des protocoles autres que ses propres couches physiques MAC et PHY. Ces couches physiques font l'objet de normes séparées en fonction des débits, du support de transmission, de la longueur des liaisons et des conditions environnementales.
Ethernet a été standardisé sous le nom IEEE 802.3. C'est maintenant une norme internationale : ISO/IEC 8802-3.

== FD ==

Floppy disk : Disque souple dont le prototype le plus connu est la disquette 360Ko

== DD ==

Disket Double-Density : La disquette classique 1440Ko à ne pas confondre avec Disque Dur 

== HD == 

Hard-Disk : Disque dur que les auteurs francophone ont tendance à nommer DD (déjà utilisé pour un autre matériel)

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IGD ==

Integrated Graphics Device, est une unité de traitement graphique (Graphics processing unit ou GPU) directement intégrée dans la carte mère d'un PC

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== LAN ==

Un réseau local, souvent désigné par l'acronyme anglais LAN de Local Area Network, est un réseau informatique tel que les terminaux qui y participent (ordinateurs, etc.) s'envoient des trames au niveau de la couche de liaison sans utiliser d’accès à internet. On définit aussi le LAN par le domaine de diffusion, c'est-à-dire l'ensemble des stations qui reçoivent une même trame de diffusion (broadcast frame). Au niveau de l'adressage IP, un réseau local correspond généralement à un sous-réseau IP (même préfixe d'adresse IP). On interconnecte les réseaux locaux au moyen de routeurs.

Une autre approche consiste à définir le réseau local par sa taille physique. C'est généralement un réseau à une échelle géographique relativement restreinte, par exemple une salle informatique, une habitation particulière, un bâtiment ou un site d'entreprise.

Dans le cas d'un réseau d'entreprise, on utilise aussi le terme RLE pour réseau local d'entreprise.

[http://fr.wikipedia.org/wiki/R%C3%A9seau_local Source]

== Live CD ==

Un Live CD (la traduction CD autonome a également été proposée par le projet Debian) est un CD qui contient un système d’exploitation exécutable sans installation, qui se lance au démarrage de l’ordinateur. Par extension, liveCD désigne un système d’exploitation présent sur un support externe amorçable. Les supports de stockage typiques sont le CD, le DVD et la clé USB.

== MAN ==

Un réseau métropolitain (en anglais Metropolitan Area Network, MAN) désigne un réseau composé d'ordinateurs habituellement utilisé dans les campus ou dans les villes. Le réseau utilise généralement des fibres optiques.

[http://fr.wikipedia.org/wiki/R%C3%A9seau_m%C3%A9tropolitain Source]

== MBR ==

Le Master Boot Record ou MBR (parfois aussi appelé &quot;Zone amorce&quot;) est le nom donné au premier secteur adressable du disque dur déclaré amorçable dans le bios (cylindre 0, tête 0 et secteur 1, ou secteur 0 en adressage logique) dans le cadre d'un partitionnement Intel. Sa taille est de 512 octets. Le MBR contient la table des partitions (les 4 partitions primaires) du disque dur. Il contient également une routine d'amorçage dont le but est de charger le système d'exploitation (ou le boot loader/chargeur d'amorçage s'il existe) présent sur la partition active.

Il ne faut pas confondre avec les VBR (Volume Boot Record) qui, bien qu'étant un BS (boot sector) comme le MBR, sont les premiers secteurs des partitions et des disques,autres que celui qui dans le bios est déclaré &quot;bootable&quot;

== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais New Technology File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993 et n'a cessé d'évoluer d'une version de Windows à l'autre.

== PEG PCI ==

PEG Link Mode (PCI Express Graphics Link Mode) est une fonctionnalité disponible dans le BIOS de certaines Carte mère de marque ASUS, qui permet une préséance  (ordre de démarrage) et un overclock automatique de la carte vidéo.

== PC ==

Le sigle PC ( Personnal Computer/Ordinateur Personnel ) est utilisé pour désigner un ordinateur compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, super-ordinateur, serveur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== PCIe ==

PCI Express (Peripheral Component Interconnect Express), officiellement abrégé en PCIe (ou PCI-E) est un &quot;slot&quot; d'extension standard conçu pour remplacer les anciens PCI, PCI-Xet et AGP. PCIe 2.1 est la dernière norme pour les cartes d'extension.
Il spécifie un bus local série (« bus PCI express ») et un connecteur qui sert à connecter des cartes d’extension sur la carte mère d’un ordinateur.

== RAM ==

La mémoire vive, mémoire système ou mémoire volatile, aussi appelée RAM de l'anglais Random Access Memory (que l'on traduit en français par 'mémoire à accès direct'), est la mémoire informatique dans laquelle un ordinateur place les données lors de leur traitement. Les caractéristiques de cette mémoire sont :
sa rapidité d'accès (cette rapidité est essentielle pour fournir rapidement les données au processeur) ;
sa volatilité (cette volatilité implique que les données sont perdues dès que l'ordinateur cesse d'être alimenté en électricité).

== Rolling release ==

Une approche de &quot;rolling release&quot; se réfère à un système en constante évolution, alimenté sans fin par de nouveaux paquets ou de mises à jour de paquets déjà existants, en opposition à un système figé - gelé (freeze) où les seules mises à jour seront des correctifs de sécurité. Sid et testing sont des &quot;rolling release&quot;; Stable (Etch, Lenny) est une version figée (freeze).

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement mais expurgé) : « Relis le &quot;foutu&quot; manuel ») ! Hum...

== SAN ==

En informatique, un réseau de stockage, ou SAN (de l'anglais Storage Area Network), est un réseau spécialisé permettant de mutualiser des ressources de stockage.

[http://fr.wikipedia.org/wiki/Storage_Area_Network Source]

== SATA ==

Le Serial ATA (ou S-ATA ou SATA) est un bus informatique principalement conçu pour le transfert de données entre un ordinateur et un disque dur mais aussi utilisé pour les lecteurs cd/dvd. C'est l'évolution du standard Advanced Technology Attachment (ATA ou IDE).
Le Serial ATA a de multiples avantages par rapport à son prédécesseur, les trois principaux étant sa vitesse, la gestion des câbles et le branchement à chaud (Hot-Plug). L'ancienne norme ATA est communément désignée sous le nom « Parallel ATA » (P-ATA) afin que les deux ne soient pas confondues.

== SCSI ==

SCSI, Small Computer System Interface en anglais, est un standard définissant un bus informatique permettant de relier un ordinateur à des périphériques ou bien même à un autre ordinateur.
La grande différence apportée par ce bus, est qu'il soulage le processeur des commandes envoyées au périphérique, commandes qui sont traitées directement par le périphérique SCSI lui-même.
Ce système est beaucoup plus rapide qui l'interface E-IDE qui accapare un pourcentage plus ou moins important du processeur.

== SSH ==

Secure Shell ([[Ssh|SSH]]) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole [[Ssh|SSH]] a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== TLD ==

Abréviation anglo-saxone : Top Level Domain. Suffixe des nom de domaine de haut niveau. Par exemple .com, .net, .biz, .info, .org

Il existe deux types de TLD : les géographiques (.fr, .uk, .be) et les &quot;catégoriels&quot; (.name, .org, .edu). Ils permettent de distinguer les sites selon leur origine géographique ou leur activité.

Pour ce qui est des &quot;catégoriels&quot; un site éducatif sera en .edu, un site gouvernemental sera en .gov, une entreprise commerciale aura un nom de domaine en .com

== Terminal ==

Aussi appelée console, ligne de commande ou tty, c'est l'interface texte qui permet l'entrée de commandes. Lorsqu'une commande est terminée ou dès qu'elle est lancée en arrière-plan &quot;&lt;la_commande&gt; &amp;&quot; , le prompt ( user@debian:/repertoire$ ) réapparaît et attend l'entrée d'une autre commande.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

== WAN ==

Un réseau étendu, souvent désigné par son acronyme anglais WAN (Wide Area Network), est un réseau informatique couvrant une grande zone géographique, typiquement à l'échelle d'un pays, d'un continent, voire de la planète entière. Le plus grand WAN est le réseau Internet. [http://fr.wikipedia.org/wiki/R%C3%A9seau_%C3%A9tendu Source]

[[Catégorie:Glossaire]]</text>
      <sha1>f5b37y37gtlgtr6x10ox7xim1xkiq0r</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5154</id>
      <parentid>4511</parentid>
      <timestamp>2013-05-14T05:03:55Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="16350">{{Ébauche|les acronymes utilisés dans les pages de ce wiki}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== CDDB ==

La CDDB, pour Compact Disc Data Base, autrement dit base de données pour disque compact (musicaux), regroupe l'ensemble des informations utiles pour renseigner les tags ID3 des fichiers mp3, WMA et Ogg Vorbis.
Nombre de logiciels encodeurs sont capables de se connecter à la CDDB officielle voire à la concurrente en open source freedb.
Pour identifier les CD, CDDB utilise un identifiant nommé DiscId qui est identique à celui de FreeDB.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== DVD ==
Dénomination officielle « Digital Versatile Disc », c'est-à-dire « Disque numérique polyvalent ». Le DVD exploite un support semblable à celui du CD puisque ses dimensions sont les mêmes (disque de 120 mm de diamètre ou une version mini  de 80 mm). Les principales différences techniques concernent d'une part la densité / capacité de stockage-enregistrement et d'autre part, les procédés et traitements numériques (logiciels) pour leur sauvegarde.
Les capacités d'un DVD dépendent de ses spécificités. Il peut être simple ou double face et couche, en version pleine ou mini.

Les principales capacités et versions sont : DVD 5 couche unique, face unique : environ 4,7 GB, DVD DL couche double, face unique : environ 8,54 GB, DVD couche unique, double face : environ 8,54 GB, DVD couche double, double face (peu fréquent) : environ 17,08 GB, MiniDVD : couche unique, face unique : environ 1,4 GB, MiniDVD : couche unique, double face : environ 2,66 GB, MiniDVD : double couche, face unique : environ 2,66 GB, MiniDVD : double couche, double face : environ 5,2 GB.

== Ethernet ==
Ethernet est un protocole de réseau local à commutation de paquets. Bien qu'il implémente la couche physique (PHY) et la sous-couche Media Access Control  (MAC), le protocole Ethernet est classé dans la couche de liaison, car les formats de trames que le standard définit sont normalisés et peuvent être encapsulés dans des protocoles autres que ses propres couches physiques MAC et PHY. Ces couches physiques font l'objet de normes séparées en fonction des débits, du support de transmission, de la longueur des liaisons et des conditions environnementales.
Ethernet a été standardisé sous le nom IEEE 802.3. C'est maintenant une norme internationale : ISO/IEC 8802-3.

== FD ==

Floppy disk : Disque souple dont le prototype le plus connu est la disquette 360Ko

== DD ==

Disket Double-Density : La disquette classique 1440Ko à ne pas confondre avec Disque Dur 

== HD == 

Hard-Disk : Disque dur que les auteurs francophone ont tendance à nommer DD (déjà utilisé pour un autre matériel)

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IGD ==

Integrated Graphics Device, est une unité de traitement graphique (Graphics processing unit ou GPU) directement intégrée dans la carte mère d'un PC

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== LAN ==

Un réseau local, souvent désigné par l'acronyme anglais LAN de Local Area Network, est un réseau informatique tel que les terminaux qui y participent (ordinateurs, etc.) s'envoient des trames au niveau de la couche de liaison sans utiliser d’accès à internet. On définit aussi le LAN par le domaine de diffusion, c'est-à-dire l'ensemble des stations qui reçoivent une même trame de diffusion (broadcast frame). Au niveau de l'adressage IP, un réseau local correspond généralement à un sous-réseau IP (même préfixe d'adresse IP). On interconnecte les réseaux locaux au moyen de routeurs.

Une autre approche consiste à définir le réseau local par sa taille physique. C'est généralement un réseau à une échelle géographique relativement restreinte, par exemple une salle informatique, une habitation particulière, un bâtiment ou un site d'entreprise.

Dans le cas d'un réseau d'entreprise, on utilise aussi le terme RLE pour réseau local d'entreprise.

[http://fr.wikipedia.org/wiki/R%C3%A9seau_local Source]

== Live CD ==

Un Live CD (la traduction CD autonome a également été proposée par le projet Debian) est un CD qui contient un système d’exploitation exécutable sans installation, qui se lance au démarrage de l’ordinateur. Par extension, liveCD désigne un système d’exploitation présent sur un support externe amorçable. Les supports de stockage typiques sont le CD, le DVD et la clé USB.

== MAN ==

Un réseau métropolitain (en anglais Metropolitan Area Network, MAN) désigne un réseau composé d'ordinateurs habituellement utilisé dans les campus ou dans les villes. Le réseau utilise généralement des fibres optiques.

[http://fr.wikipedia.org/wiki/R%C3%A9seau_m%C3%A9tropolitain Source]

== MBR ==

Le Master Boot Record ou MBR (parfois aussi appelé &quot;Zone amorce&quot;) est le nom donné au premier secteur adressable du disque dur déclaré amorçable dans le bios (cylindre 0, tête 0 et secteur 1, ou secteur 0 en adressage logique) dans le cadre d'un partitionnement Intel. Sa taille est de 512 octets. Le MBR contient la table des partitions (les 4 partitions primaires) du disque dur. Il contient également une routine d'amorçage dont le but est de charger le système d'exploitation (ou le boot loader/chargeur d'amorçage s'il existe) présent sur la partition active.

Il ne faut pas confondre avec les VBR (Volume Boot Record) qui, bien qu'étant un BS (boot sector) comme le MBR, sont les premiers secteurs des partitions et des disques,autres que celui qui dans le bios est déclaré &quot;bootable&quot;

== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais New Technology File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993 et n'a cessé d'évoluer d'une version de Windows à l'autre.

== PEG PCI ==

PEG Link Mode (PCI Express Graphics Link Mode) est une fonctionnalité disponible dans le BIOS de certaines Carte mère de marque ASUS, qui permet une préséance  (ordre de démarrage) et un overclock automatique de la carte vidéo.

== PC ==

Le sigle PC ( Personnal Computer/Ordinateur Personnel ) est utilisé pour désigner un ordinateur compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, super-ordinateur, serveur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== PCIe ==

PCI Express (Peripheral Component Interconnect Express), officiellement abrégé en PCIe (ou PCI-E) est un &quot;slot&quot; d'extension standard conçu pour remplacer les anciens PCI, PCI-Xet et AGP. PCIe 2.1 est la dernière norme pour les cartes d'extension.
Il spécifie un bus local série (« bus PCI express ») et un connecteur qui sert à connecter des cartes d’extension sur la carte mère d’un ordinateur.

== RAM ==

La mémoire vive, mémoire système ou mémoire volatile, aussi appelée RAM de l'anglais Random Access Memory (que l'on traduit en français par 'mémoire à accès direct'), est la mémoire informatique dans laquelle un ordinateur place les données lors de leur traitement. Les caractéristiques de cette mémoire sont :
sa rapidité d'accès (cette rapidité est essentielle pour fournir rapidement les données au processeur) ;
sa volatilité (cette volatilité implique que les données sont perdues dès que l'ordinateur cesse d'être alimenté en électricité).

== Rolling release ==

Une approche de &quot;rolling release&quot; se réfère à un système en constante évolution, alimenté sans fin par de nouveaux paquets ou de mises à jour de paquets déjà existants, en opposition à un système figé - gelé (freeze) où les seules mises à jour seront des correctifs de sécurité. Sid et testing sont des &quot;rolling release&quot;; Stable (Etch, Lenny) est une version figée (freeze).

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement mais expurgé) : « Relis le &quot;foutu&quot; manuel ») ! Hum...

== SAN ==

En informatique, un réseau de stockage, ou SAN (de l'anglais Storage Area Network), est un réseau spécialisé permettant de mutualiser des ressources de stockage.

[http://fr.wikipedia.org/wiki/Storage_Area_Network Source]

== SATA ==

Le Serial ATA (ou S-ATA ou SATA) est un bus informatique principalement conçu pour le transfert de données entre un ordinateur et un disque dur mais aussi utilisé pour les lecteurs cd/dvd. C'est l'évolution du standard Advanced Technology Attachment (ATA ou IDE).
Le Serial ATA a de multiples avantages par rapport à son prédécesseur, les trois principaux étant sa vitesse, la gestion des câbles et le branchement à chaud (Hot-Plug). L'ancienne norme ATA est communément désignée sous le nom « Parallel ATA » (P-ATA) afin que les deux ne soient pas confondues.

== SCSI ==

SCSI, Small Computer System Interface en anglais, est un standard définissant un bus informatique permettant de relier un ordinateur à des périphériques ou bien même à un autre ordinateur.
La grande différence apportée par ce bus, est qu'il soulage le processeur des commandes envoyées au périphérique, commandes qui sont traitées directement par le périphérique SCSI lui-même.
Ce système est beaucoup plus rapide qui l'interface E-IDE qui accapare un pourcentage plus ou moins important du processeur.

== SSH ==

Secure Shell ([[Ssh|SSH]]) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole [[Ssh|SSH]] a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== TLD ==

Abréviation anglo-saxone : Top Level Domain. Suffixe des nom de domaine de haut niveau. Par exemple .com, .net, .biz, .info, .org

Il existe deux types de TLD : les géographiques (.fr, .uk, .be) et les &quot;catégoriels&quot; (.name, .org, .edu). Ils permettent de distinguer les sites selon leur origine géographique ou leur activité.

Pour ce qui est des &quot;catégoriels&quot; un site éducatif sera en .edu, un site gouvernemental sera en .gov, une entreprise commerciale aura un nom de domaine en .com

== Terminal ==

Aussi appelée console, ligne de commande ou tty, c'est l'interface texte qui permet l'entrée de commandes. Lorsqu'une commande est terminée ou dès qu'elle est lancée en arrière-plan &quot;&lt;la_commande&gt; &amp;&quot; , le prompt ( user@debian:/repertoire$ ) réapparaît et attend l'entrée d'une autre commande.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

==UTC==

Le Temps universel coordonné ([[UTC|UTC]]) est une échelle de temps adoptée comme base du temps civil international par la majorité des pays du globe.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

== WAN ==

Un réseau étendu, souvent désigné par son acronyme anglais WAN (Wide Area Network), est un réseau informatique couvrant une grande zone géographique, typiquement à l'échelle d'un pays, d'un continent, voire de la planète entière. Le plus grand WAN est le réseau Internet. [http://fr.wikipedia.org/wiki/R%C3%A9seau_%C3%A9tendu Source]

[[Catégorie:Glossaire]]</text>
      <sha1>4f5tr2al43u8vd3a0m9ldf6m3msv86y</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5304</id>
      <parentid>5154</parentid>
      <timestamp>2013-07-15T08:32:07Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <text xml:space="preserve" bytes="16443">{{Ébauche|les acronymes utilisés dans les pages de ce wiki}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== CDDB ==

La CDDB, pour Compact Disc Data Base, autrement dit base de données pour disque compact (musicaux), regroupe l'ensemble des informations utiles pour renseigner les tags ID3 des fichiers mp3, WMA et Ogg Vorbis.
Nombre de logiciels encodeurs sont capables de se connecter à la CDDB officielle voire à la concurrente en open source freedb.
Pour identifier les CD, CDDB utilise un identifiant nommé DiscId qui est identique à celui de FreeDB.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== DVD ==
Dénomination officielle « Digital Versatile Disc », c'est-à-dire « Disque numérique polyvalent ». Le DVD exploite un support semblable à celui du CD puisque ses dimensions sont les mêmes (disque de 120 mm de diamètre ou une version mini  de 80 mm). Les principales différences techniques concernent d'une part la densité / capacité de stockage-enregistrement et d'autre part, les procédés et traitements numériques (logiciels) pour leur sauvegarde.
Les capacités d'un DVD dépendent de ses spécificités. Il peut être simple ou double face et couche, en version pleine ou mini.

Les principales capacités et versions sont : DVD 5 couche unique, face unique : environ 4,7 GB, DVD DL couche double, face unique : environ 8,54 GB, DVD couche unique, double face : environ 8,54 GB, DVD couche double, double face (peu fréquent) : environ 17,08 GB, MiniDVD : couche unique, face unique : environ 1,4 GB, MiniDVD : couche unique, double face : environ 2,66 GB, MiniDVD : double couche, face unique : environ 2,66 GB, MiniDVD : double couche, double face : environ 5,2 GB.

== Ethernet ==
Ethernet est un protocole de réseau local à commutation de paquets. Bien qu'il implémente la couche physique (PHY) et la sous-couche Media Access Control  (MAC), le protocole Ethernet est classé dans la couche de liaison, car les formats de trames que le standard définit sont normalisés et peuvent être encapsulés dans des protocoles autres que ses propres couches physiques MAC et PHY. Ces couches physiques font l'objet de normes séparées en fonction des débits, du support de transmission, de la longueur des liaisons et des conditions environnementales.
Ethernet a été standardisé sous le nom IEEE 802.3. C'est maintenant une norme internationale : ISO/IEC 8802-3.

== FD ==

Floppy disk : Disque souple dont le prototype le plus connu est la disquette 360Ko

== DD ==

Disket Double-Density : La disquette classique 1440Ko à ne pas confondre avec Disque Dur 

== HD == 

Hard-Disk : Disque dur que les auteurs francophone ont tendance à nommer DD (déjà utilisé pour un autre matériel)

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IGD ==

Integrated Graphics Device, est une unité de traitement graphique (Graphics processing unit ou GPU) directement intégrée dans la carte mère d'un PC

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== LAN ==

Un réseau local, souvent désigné par l'acronyme anglais LAN de Local Area Network, est un réseau informatique tel que les terminaux qui y participent (ordinateurs, etc.) s'envoient des trames au niveau de la couche de liaison sans utiliser d’accès à internet. On définit aussi le LAN par le domaine de diffusion, c'est-à-dire l'ensemble des stations qui reçoivent une même trame de diffusion (broadcast frame). Au niveau de l'adressage IP, un réseau local correspond généralement à un sous-réseau IP (même préfixe d'adresse IP). On interconnecte les réseaux locaux au moyen de routeurs.

Une autre approche consiste à définir le réseau local par sa taille physique. C'est généralement un réseau à une échelle géographique relativement restreinte, par exemple une salle informatique, une habitation particulière, un bâtiment ou un site d'entreprise.

Dans le cas d'un réseau d'entreprise, on utilise aussi le terme RLE pour réseau local d'entreprise.

[http://fr.wikipedia.org/wiki/R%C3%A9seau_local Source]

== Live CD ==

Un Live CD (la traduction CD autonome a également été proposée par le projet Debian) est un CD qui contient un système d’exploitation exécutable sans installation, qui se lance au démarrage de l’ordinateur. Par extension, liveCD désigne un système d’exploitation présent sur un support externe amorçable. Les supports de stockage typiques sont le CD, le DVD et la clé USB.

== MAN ==

Un réseau métropolitain (en anglais Metropolitan Area Network, MAN) désigne un réseau composé d'ordinateurs habituellement utilisé dans les campus ou dans les villes. Le réseau utilise généralement des fibres optiques.

[http://fr.wikipedia.org/wiki/R%C3%A9seau_m%C3%A9tropolitain Source]

== MBR ==

Le Master Boot Record ou MBR (parfois aussi appelé &quot;Zone amorce&quot;) est le nom donné au premier secteur adressable du disque dur déclaré amorçable dans le bios (cylindre 0, tête 0 et secteur 1, ou secteur 0 en adressage logique) dans le cadre d'un partitionnement Intel. Sa taille est de 512 octets. Le MBR contient la table des partitions (les 4 partitions primaires) du disque dur. Il contient également une routine d'amorçage dont le but est de charger le système d'exploitation (ou le boot loader/chargeur d'amorçage s'il existe) présent sur la partition active.

Il ne faut pas confondre avec les VBR (Volume Boot Record) qui, bien qu'étant un BS (boot sector) comme le MBR, sont les premiers secteurs des partitions et des disques,autres que celui qui dans le bios est déclaré &quot;bootable&quot;

== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais New Technology File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993 et n'a cessé d'évoluer d'une version de Windows à l'autre.

== PEG PCI ==

PEG Link Mode (PCI Express Graphics Link Mode) est une fonctionnalité disponible dans le BIOS de certaines Carte mère de marque ASUS, qui permet une préséance  (ordre de démarrage) et un overclock automatique de la carte vidéo.

== PC ==

Le sigle PC ( Personnal Computer/Ordinateur Personnel ) est utilisé pour désigner un ordinateur compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, super-ordinateur, serveur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== PCIe ==

PCI Express (Peripheral Component Interconnect Express), officiellement abrégé en PCIe (ou PCI-E) est un &quot;slot&quot; d'extension standard conçu pour remplacer les anciens PCI, PCI-Xet et AGP. PCIe 2.1 est la dernière norme pour les cartes d'extension.
Il spécifie un bus local série (« bus PCI express ») et un connecteur qui sert à connecter des cartes d’extension sur la carte mère d’un ordinateur.

== RAM ==

La mémoire vive, mémoire système ou mémoire volatile, aussi appelée RAM de l'anglais Random Access Memory (que l'on traduit en français par 'mémoire à accès direct'), est la mémoire informatique dans laquelle un ordinateur place les données lors de leur traitement. Les caractéristiques de cette mémoire sont :
sa rapidité d'accès (cette rapidité est essentielle pour fournir rapidement les données au processeur) ;
sa volatilité (cette volatilité implique que les données sont perdues dès que l'ordinateur cesse d'être alimenté en électricité).

== Rolling release ==

Une approche de &quot;rolling release&quot; se réfère à un système en constante évolution, alimenté sans fin par de nouveaux paquets ou de mises à jour de paquets déjà existants, en opposition à un système figé - gelé (freeze) où les seules mises à jour seront des correctifs de sécurité. Sid et testing sont des &quot;rolling release&quot;; Stable (Etch, Lenny) est une version figée (freeze).

== RPI ==

Abréviation usuel pour désigner un [http://www.raspberrypi.org/ Raspberry Pi].

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement mais expurgé) : « Relis le &quot;foutu&quot; manuel ») ! Hum...

== SAN ==

En informatique, un réseau de stockage, ou SAN (de l'anglais Storage Area Network), est un réseau spécialisé permettant de mutualiser des ressources de stockage.

[http://fr.wikipedia.org/wiki/Storage_Area_Network Source]

== SATA ==

Le Serial ATA (ou S-ATA ou SATA) est un bus informatique principalement conçu pour le transfert de données entre un ordinateur et un disque dur mais aussi utilisé pour les lecteurs cd/dvd. C'est l'évolution du standard Advanced Technology Attachment (ATA ou IDE).
Le Serial ATA a de multiples avantages par rapport à son prédécesseur, les trois principaux étant sa vitesse, la gestion des câbles et le branchement à chaud (Hot-Plug). L'ancienne norme ATA est communément désignée sous le nom « Parallel ATA » (P-ATA) afin que les deux ne soient pas confondues.

== SCSI ==

SCSI, Small Computer System Interface en anglais, est un standard définissant un bus informatique permettant de relier un ordinateur à des périphériques ou bien même à un autre ordinateur.
La grande différence apportée par ce bus, est qu'il soulage le processeur des commandes envoyées au périphérique, commandes qui sont traitées directement par le périphérique SCSI lui-même.
Ce système est beaucoup plus rapide qui l'interface E-IDE qui accapare un pourcentage plus ou moins important du processeur.

== SSH ==

Secure Shell ([[Ssh|SSH]]) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole [[Ssh|SSH]] a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== TLD ==

Abréviation anglo-saxone : Top Level Domain. Suffixe des nom de domaine de haut niveau. Par exemple .com, .net, .biz, .info, .org

Il existe deux types de TLD : les géographiques (.fr, .uk, .be) et les &quot;catégoriels&quot; (.name, .org, .edu). Ils permettent de distinguer les sites selon leur origine géographique ou leur activité.

Pour ce qui est des &quot;catégoriels&quot; un site éducatif sera en .edu, un site gouvernemental sera en .gov, une entreprise commerciale aura un nom de domaine en .com

== Terminal ==

Aussi appelée console, ligne de commande ou tty, c'est l'interface texte qui permet l'entrée de commandes. Lorsqu'une commande est terminée ou dès qu'elle est lancée en arrière-plan &quot;&lt;la_commande&gt; &amp;&quot; , le prompt ( user@debian:/repertoire$ ) réapparaît et attend l'entrée d'une autre commande.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

==UTC==

Le Temps universel coordonné ([[UTC|UTC]]) est une échelle de temps adoptée comme base du temps civil international par la majorité des pays du globe.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

== WAN ==

Un réseau étendu, souvent désigné par son acronyme anglais WAN (Wide Area Network), est un réseau informatique couvrant une grande zone géographique, typiquement à l'échelle d'un pays, d'un continent, voire de la planète entière. Le plus grand WAN est le réseau Internet. [http://fr.wikipedia.org/wiki/R%C3%A9seau_%C3%A9tendu Source]

[[Catégorie:Glossaire]]</text>
      <sha1>d67psd5khx0rrnisatdoftuh8r8v21b</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5305</id>
      <parentid>5304</parentid>
      <timestamp>2013-07-15T09:55:17Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="16445">{{Ébauche|les acronymes utilisés dans les pages de ce wiki}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== CDDB ==

La CDDB, pour Compact Disc Data Base, autrement dit base de données pour disque compact (musicaux), regroupe l'ensemble des informations utiles pour renseigner les tags ID3 des fichiers mp3, WMA et Ogg Vorbis.
Nombre de logiciels encodeurs sont capables de se connecter à la CDDB officielle voire à la concurrente en open source freedb.
Pour identifier les CD, CDDB utilise un identifiant nommé DiscId qui est identique à celui de FreeDB.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== DVD ==
Dénomination officielle « Digital Versatile Disc », c'est-à-dire « Disque numérique polyvalent ». Le DVD exploite un support semblable à celui du CD puisque ses dimensions sont les mêmes (disque de 120 mm de diamètre ou une version mini  de 80 mm). Les principales différences techniques concernent d'une part la densité / capacité de stockage-enregistrement et d'autre part, les procédés et traitements numériques (logiciels) pour leur sauvegarde.
Les capacités d'un DVD dépendent de ses spécificités. Il peut être simple ou double face et couche, en version pleine ou mini.

Les principales capacités et versions sont : DVD 5 couche unique, face unique : environ 4,7 GB, DVD DL couche double, face unique : environ 8,54 GB, DVD couche unique, double face : environ 8,54 GB, DVD couche double, double face (peu fréquent) : environ 17,08 GB, MiniDVD : couche unique, face unique : environ 1,4 GB, MiniDVD : couche unique, double face : environ 2,66 GB, MiniDVD : double couche, face unique : environ 2,66 GB, MiniDVD : double couche, double face : environ 5,2 GB.

== Ethernet ==
Ethernet est un protocole de réseau local à commutation de paquets. Bien qu'il implémente la couche physique (PHY) et la sous-couche Media Access Control  (MAC), le protocole Ethernet est classé dans la couche de liaison, car les formats de trames que le standard définit sont normalisés et peuvent être encapsulés dans des protocoles autres que ses propres couches physiques MAC et PHY. Ces couches physiques font l'objet de normes séparées en fonction des débits, du support de transmission, de la longueur des liaisons et des conditions environnementales.
Ethernet a été standardisé sous le nom IEEE 802.3. C'est maintenant une norme internationale : ISO/IEC 8802-3.

== FD ==

Floppy disk : Disque souple dont le prototype le plus connu est la disquette 360Ko

== DD ==

Disket Double-Density : La disquette classique 1440Ko à ne pas confondre avec Disque Dur 

== HD == 

Hard-Disk : Disque dur que les auteurs francophone ont tendance à nommer DD (déjà utilisé pour un autre matériel)

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IGD ==

Integrated Graphics Device, est une unité de traitement graphique (Graphics processing unit ou GPU) directement intégrée dans la carte mère d'un PC

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== LAN ==

Un réseau local, souvent désigné par l'acronyme anglais LAN de Local Area Network, est un réseau informatique tel que les terminaux qui y participent (ordinateurs, etc.) s'envoient des trames au niveau de la couche de liaison sans utiliser d’accès à internet. On définit aussi le LAN par le domaine de diffusion, c'est-à-dire l'ensemble des stations qui reçoivent une même trame de diffusion (broadcast frame). Au niveau de l'adressage IP, un réseau local correspond généralement à un sous-réseau IP (même préfixe d'adresse IP). On interconnecte les réseaux locaux au moyen de routeurs.

Une autre approche consiste à définir le réseau local par sa taille physique. C'est généralement un réseau à une échelle géographique relativement restreinte, par exemple une salle informatique, une habitation particulière, un bâtiment ou un site d'entreprise.

Dans le cas d'un réseau d'entreprise, on utilise aussi le terme RLE pour réseau local d'entreprise.

[http://fr.wikipedia.org/wiki/R%C3%A9seau_local Source]

== Live CD ==

Un Live CD (la traduction CD autonome a également été proposée par le projet Debian) est un CD qui contient un système d’exploitation exécutable sans installation, qui se lance au démarrage de l’ordinateur. Par extension, liveCD désigne un système d’exploitation présent sur un support externe amorçable. Les supports de stockage typiques sont le CD, le DVD et la clé USB.

== MAN ==

Un réseau métropolitain (en anglais Metropolitan Area Network, MAN) désigne un réseau composé d'ordinateurs habituellement utilisé dans les campus ou dans les villes. Le réseau utilise généralement des fibres optiques.

[http://fr.wikipedia.org/wiki/R%C3%A9seau_m%C3%A9tropolitain Source]

== MBR ==

Le Master Boot Record ou MBR (parfois aussi appelé &quot;Zone amorce&quot;) est le nom donné au premier secteur adressable du disque dur déclaré amorçable dans le bios (cylindre 0, tête 0 et secteur 1, ou secteur 0 en adressage logique) dans le cadre d'un partitionnement Intel. Sa taille est de 512 octets. Le MBR contient la table des partitions (les 4 partitions primaires) du disque dur. Il contient également une routine d'amorçage dont le but est de charger le système d'exploitation (ou le boot loader/chargeur d'amorçage s'il existe) présent sur la partition active.

Il ne faut pas confondre avec les VBR (Volume Boot Record) qui, bien qu'étant un BS (boot sector) comme le MBR, sont les premiers secteurs des partitions et des disques,autres que celui qui dans le bios est déclaré &quot;bootable&quot;

== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais New Technology File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993 et n'a cessé d'évoluer d'une version de Windows à l'autre.

== PEG PCI ==

PEG Link Mode (PCI Express Graphics Link Mode) est une fonctionnalité disponible dans le BIOS de certaines Carte mère de marque ASUS, qui permet une préséance  (ordre de démarrage) et un overclock automatique de la carte vidéo.

== PC ==

Le sigle PC ( Personnal Computer/Ordinateur Personnel ) est utilisé pour désigner un ordinateur compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, super-ordinateur, serveur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== PCIe ==

PCI Express (Peripheral Component Interconnect Express), officiellement abrégé en PCIe (ou PCI-E) est un &quot;slot&quot; d'extension standard conçu pour remplacer les anciens PCI, PCI-Xet et AGP. PCIe 2.1 est la dernière norme pour les cartes d'extension.
Il spécifie un bus local série (« bus PCI express ») et un connecteur qui sert à connecter des cartes d’extension sur la carte mère d’un ordinateur.

== RAM ==

La mémoire vive, mémoire système ou mémoire volatile, aussi appelée RAM de l'anglais Random Access Memory (que l'on traduit en français par 'mémoire à accès direct'), est la mémoire informatique dans laquelle un ordinateur place les données lors de leur traitement. Les caractéristiques de cette mémoire sont :
sa rapidité d'accès (cette rapidité est essentielle pour fournir rapidement les données au processeur) ;
sa volatilité (cette volatilité implique que les données sont perdues dès que l'ordinateur cesse d'être alimenté en électricité).

== Rolling release ==

Une approche de &quot;rolling release&quot; se réfère à un système en constante évolution, alimenté sans fin par de nouveaux paquets ou de mises à jour de paquets déjà existants, en opposition à un système figé - gelé (freeze) où les seules mises à jour seront des correctifs de sécurité. Sid et testing sont des &quot;rolling release&quot;; Stable (Etch, Lenny) est une version figée (freeze).

== RPI ==

Abréviation usuelle pour désigner un [http://www.raspberrypi.org/ Raspberry Pi].

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement mais expurgé) : « Relis le &quot;foutu&quot; manuel ») ! Hum...

== SAN ==

En informatique, un réseau de stockage, ou SAN (de l'anglais Storage Area Network), est un réseau spécialisé permettant de mutualiser des ressources de stockage.

[http://fr.wikipedia.org/wiki/Storage_Area_Network Source]

== SATA ==

Le Serial ATA (ou S-ATA ou SATA) est un bus informatique principalement conçu pour le transfert de données entre un ordinateur et un disque dur mais aussi utilisé pour les lecteurs cd/dvd. C'est l'évolution du standard Advanced Technology Attachment (ATA ou IDE).
Le Serial ATA a de multiples avantages par rapport à son prédécesseur, les trois principaux étant sa vitesse, la gestion des câbles et le branchement à chaud (Hot-Plug). L'ancienne norme ATA est communément désignée sous le nom « Parallel ATA » (P-ATA) afin que les deux ne soient pas confondues.

== SCSI ==

SCSI, Small Computer System Interface en anglais, est un standard définissant un bus informatique permettant de relier un ordinateur à des périphériques ou bien même à un autre ordinateur.
La grande différence apportée par ce bus, est qu'il soulage le processeur des commandes envoyées au périphérique, commandes qui sont traitées directement par le périphérique SCSI lui-même.
Ce système est beaucoup plus rapide qui l'interface E-IDE qui accapare un pourcentage plus ou moins important du processeur.

== SSH ==

Secure Shell ([[Ssh|SSH]]) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole [[Ssh|SSH]] a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== TLD ==

Abréviation anglo-saxone : Top Level Domain. Suffixe des nom de domaine de haut niveau. Par exemple .com, .net, .biz, .info, .org

Il existe deux types de TLD : les géographiques (.fr, .uk, .be) et les &quot;catégoriels&quot; (.name, .org, .edu). Ils permettent de distinguer les sites selon leur origine géographique ou leur activité.

Pour ce qui est des &quot;catégoriels&quot; un site éducatif sera en .edu, un site gouvernemental sera en .gov, une entreprise commerciale aura un nom de domaine en .com

== Terminal ==

Aussi appelée console, ligne de commande ou tty, c'est l'interface texte qui permet l'entrée de commandes. Lorsqu'une commande est terminée ou dès qu'elle est lancée en arrière-plan &quot;&lt;la_commande&gt; &amp;&quot; , le prompt ( user@debian:/repertoire$ ) réapparaît et attend l'entrée d'une autre commande.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

==UTC==

Le Temps universel coordonné ([[UTC|UTC]]) est une échelle de temps adoptée comme base du temps civil international par la majorité des pays du globe.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

== WAN ==

Un réseau étendu, souvent désigné par son acronyme anglais WAN (Wide Area Network), est un réseau informatique couvrant une grande zone géographique, typiquement à l'échelle d'un pays, d'un continent, voire de la planète entière. Le plus grand WAN est le réseau Internet. [http://fr.wikipedia.org/wiki/R%C3%A9seau_%C3%A9tendu Source]

[[Catégorie:Glossaire]]</text>
      <sha1>5dh0w98cvso40buy4zx3g8k1pa8xndk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5306</id>
      <parentid>5305</parentid>
      <timestamp>2013-07-15T10:39:15Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* RPI */</comment>
      <text xml:space="preserve" bytes="16462">{{Ébauche|les acronymes utilisés dans les pages de ce wiki}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== CDDB ==

La CDDB, pour Compact Disc Data Base, autrement dit base de données pour disque compact (musicaux), regroupe l'ensemble des informations utiles pour renseigner les tags ID3 des fichiers mp3, WMA et Ogg Vorbis.
Nombre de logiciels encodeurs sont capables de se connecter à la CDDB officielle voire à la concurrente en open source freedb.
Pour identifier les CD, CDDB utilise un identifiant nommé DiscId qui est identique à celui de FreeDB.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== DVD ==
Dénomination officielle « Digital Versatile Disc », c'est-à-dire « Disque numérique polyvalent ». Le DVD exploite un support semblable à celui du CD puisque ses dimensions sont les mêmes (disque de 120 mm de diamètre ou une version mini  de 80 mm). Les principales différences techniques concernent d'une part la densité / capacité de stockage-enregistrement et d'autre part, les procédés et traitements numériques (logiciels) pour leur sauvegarde.
Les capacités d'un DVD dépendent de ses spécificités. Il peut être simple ou double face et couche, en version pleine ou mini.

Les principales capacités et versions sont : DVD 5 couche unique, face unique : environ 4,7 GB, DVD DL couche double, face unique : environ 8,54 GB, DVD couche unique, double face : environ 8,54 GB, DVD couche double, double face (peu fréquent) : environ 17,08 GB, MiniDVD : couche unique, face unique : environ 1,4 GB, MiniDVD : couche unique, double face : environ 2,66 GB, MiniDVD : double couche, face unique : environ 2,66 GB, MiniDVD : double couche, double face : environ 5,2 GB.

== Ethernet ==
Ethernet est un protocole de réseau local à commutation de paquets. Bien qu'il implémente la couche physique (PHY) et la sous-couche Media Access Control  (MAC), le protocole Ethernet est classé dans la couche de liaison, car les formats de trames que le standard définit sont normalisés et peuvent être encapsulés dans des protocoles autres que ses propres couches physiques MAC et PHY. Ces couches physiques font l'objet de normes séparées en fonction des débits, du support de transmission, de la longueur des liaisons et des conditions environnementales.
Ethernet a été standardisé sous le nom IEEE 802.3. C'est maintenant une norme internationale : ISO/IEC 8802-3.

== FD ==

Floppy disk : Disque souple dont le prototype le plus connu est la disquette 360Ko

== DD ==

Disket Double-Density : La disquette classique 1440Ko à ne pas confondre avec Disque Dur 

== HD == 

Hard-Disk : Disque dur que les auteurs francophone ont tendance à nommer DD (déjà utilisé pour un autre matériel)

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IGD ==

Integrated Graphics Device, est une unité de traitement graphique (Graphics processing unit ou GPU) directement intégrée dans la carte mère d'un PC

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== LAN ==

Un réseau local, souvent désigné par l'acronyme anglais LAN de Local Area Network, est un réseau informatique tel que les terminaux qui y participent (ordinateurs, etc.) s'envoient des trames au niveau de la couche de liaison sans utiliser d’accès à internet. On définit aussi le LAN par le domaine de diffusion, c'est-à-dire l'ensemble des stations qui reçoivent une même trame de diffusion (broadcast frame). Au niveau de l'adressage IP, un réseau local correspond généralement à un sous-réseau IP (même préfixe d'adresse IP). On interconnecte les réseaux locaux au moyen de routeurs.

Une autre approche consiste à définir le réseau local par sa taille physique. C'est généralement un réseau à une échelle géographique relativement restreinte, par exemple une salle informatique, une habitation particulière, un bâtiment ou un site d'entreprise.

Dans le cas d'un réseau d'entreprise, on utilise aussi le terme RLE pour réseau local d'entreprise.

[http://fr.wikipedia.org/wiki/R%C3%A9seau_local Source]

== Live CD ==

Un Live CD (la traduction CD autonome a également été proposée par le projet Debian) est un CD qui contient un système d’exploitation exécutable sans installation, qui se lance au démarrage de l’ordinateur. Par extension, liveCD désigne un système d’exploitation présent sur un support externe amorçable. Les supports de stockage typiques sont le CD, le DVD et la clé USB.

== MAN ==

Un réseau métropolitain (en anglais Metropolitan Area Network, MAN) désigne un réseau composé d'ordinateurs habituellement utilisé dans les campus ou dans les villes. Le réseau utilise généralement des fibres optiques.

[http://fr.wikipedia.org/wiki/R%C3%A9seau_m%C3%A9tropolitain Source]

== MBR ==

Le Master Boot Record ou MBR (parfois aussi appelé &quot;Zone amorce&quot;) est le nom donné au premier secteur adressable du disque dur déclaré amorçable dans le bios (cylindre 0, tête 0 et secteur 1, ou secteur 0 en adressage logique) dans le cadre d'un partitionnement Intel. Sa taille est de 512 octets. Le MBR contient la table des partitions (les 4 partitions primaires) du disque dur. Il contient également une routine d'amorçage dont le but est de charger le système d'exploitation (ou le boot loader/chargeur d'amorçage s'il existe) présent sur la partition active.

Il ne faut pas confondre avec les VBR (Volume Boot Record) qui, bien qu'étant un BS (boot sector) comme le MBR, sont les premiers secteurs des partitions et des disques,autres que celui qui dans le bios est déclaré &quot;bootable&quot;

== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais New Technology File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993 et n'a cessé d'évoluer d'une version de Windows à l'autre.

== PEG PCI ==

PEG Link Mode (PCI Express Graphics Link Mode) est une fonctionnalité disponible dans le BIOS de certaines Carte mère de marque ASUS, qui permet une préséance  (ordre de démarrage) et un overclock automatique de la carte vidéo.

== PC ==

Le sigle PC ( Personnal Computer/Ordinateur Personnel ) est utilisé pour désigner un ordinateur compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, super-ordinateur, serveur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== PCIe ==

PCI Express (Peripheral Component Interconnect Express), officiellement abrégé en PCIe (ou PCI-E) est un &quot;slot&quot; d'extension standard conçu pour remplacer les anciens PCI, PCI-Xet et AGP. PCIe 2.1 est la dernière norme pour les cartes d'extension.
Il spécifie un bus local série (« bus PCI express ») et un connecteur qui sert à connecter des cartes d’extension sur la carte mère d’un ordinateur.

== RAM ==

La mémoire vive, mémoire système ou mémoire volatile, aussi appelée RAM de l'anglais Random Access Memory (que l'on traduit en français par 'mémoire à accès direct'), est la mémoire informatique dans laquelle un ordinateur place les données lors de leur traitement. Les caractéristiques de cette mémoire sont :
sa rapidité d'accès (cette rapidité est essentielle pour fournir rapidement les données au processeur) ;
sa volatilité (cette volatilité implique que les données sont perdues dès que l'ordinateur cesse d'être alimenté en électricité).

== Rolling release ==

Une approche de &quot;rolling release&quot; se réfère à un système en constante évolution, alimenté sans fin par de nouveaux paquets ou de mises à jour de paquets déjà existants, en opposition à un système figé - gelé (freeze) où les seules mises à jour seront des correctifs de sécurité. Sid et testing sont des &quot;rolling release&quot;; Stable (Etch, Lenny) est une version figée (freeze).

== RPI ==

Abréviation &quot;inventée par certains&quot; pour désigner un [http://www.raspberrypi.org/ Raspberry Pi].

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement mais expurgé) : « Relis le &quot;foutu&quot; manuel ») ! Hum...

== SAN ==

En informatique, un réseau de stockage, ou SAN (de l'anglais Storage Area Network), est un réseau spécialisé permettant de mutualiser des ressources de stockage.

[http://fr.wikipedia.org/wiki/Storage_Area_Network Source]

== SATA ==

Le Serial ATA (ou S-ATA ou SATA) est un bus informatique principalement conçu pour le transfert de données entre un ordinateur et un disque dur mais aussi utilisé pour les lecteurs cd/dvd. C'est l'évolution du standard Advanced Technology Attachment (ATA ou IDE).
Le Serial ATA a de multiples avantages par rapport à son prédécesseur, les trois principaux étant sa vitesse, la gestion des câbles et le branchement à chaud (Hot-Plug). L'ancienne norme ATA est communément désignée sous le nom « Parallel ATA » (P-ATA) afin que les deux ne soient pas confondues.

== SCSI ==

SCSI, Small Computer System Interface en anglais, est un standard définissant un bus informatique permettant de relier un ordinateur à des périphériques ou bien même à un autre ordinateur.
La grande différence apportée par ce bus, est qu'il soulage le processeur des commandes envoyées au périphérique, commandes qui sont traitées directement par le périphérique SCSI lui-même.
Ce système est beaucoup plus rapide qui l'interface E-IDE qui accapare un pourcentage plus ou moins important du processeur.

== SSH ==

Secure Shell ([[Ssh|SSH]]) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole [[Ssh|SSH]] a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== TLD ==

Abréviation anglo-saxone : Top Level Domain. Suffixe des nom de domaine de haut niveau. Par exemple .com, .net, .biz, .info, .org

Il existe deux types de TLD : les géographiques (.fr, .uk, .be) et les &quot;catégoriels&quot; (.name, .org, .edu). Ils permettent de distinguer les sites selon leur origine géographique ou leur activité.

Pour ce qui est des &quot;catégoriels&quot; un site éducatif sera en .edu, un site gouvernemental sera en .gov, une entreprise commerciale aura un nom de domaine en .com

== Terminal ==

Aussi appelée console, ligne de commande ou tty, c'est l'interface texte qui permet l'entrée de commandes. Lorsqu'une commande est terminée ou dès qu'elle est lancée en arrière-plan &quot;&lt;la_commande&gt; &amp;&quot; , le prompt ( user@debian:/repertoire$ ) réapparaît et attend l'entrée d'une autre commande.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

==UTC==

Le Temps universel coordonné ([[UTC|UTC]]) est une échelle de temps adoptée comme base du temps civil international par la majorité des pays du globe.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

== WAN ==

Un réseau étendu, souvent désigné par son acronyme anglais WAN (Wide Area Network), est un réseau informatique couvrant une grande zone géographique, typiquement à l'échelle d'un pays, d'un continent, voire de la planète entière. Le plus grand WAN est le réseau Internet. [http://fr.wikipedia.org/wiki/R%C3%A9seau_%C3%A9tendu Source]

[[Catégorie:Glossaire]]</text>
      <sha1>a3had3vpfuf2d6j7xfy9ihv84c3j7zb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5307</id>
      <parentid>5306</parentid>
      <timestamp>2013-07-15T10:41:22Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <comment>/* HD */</comment>
      <text xml:space="preserve" bytes="16516">{{Ébauche|les acronymes utilisés dans les pages de ce wiki}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== CDDB ==

La CDDB, pour Compact Disc Data Base, autrement dit base de données pour disque compact (musicaux), regroupe l'ensemble des informations utiles pour renseigner les tags ID3 des fichiers mp3, WMA et Ogg Vorbis.
Nombre de logiciels encodeurs sont capables de se connecter à la CDDB officielle voire à la concurrente en open source freedb.
Pour identifier les CD, CDDB utilise un identifiant nommé DiscId qui est identique à celui de FreeDB.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== DVD ==
Dénomination officielle « Digital Versatile Disc », c'est-à-dire « Disque numérique polyvalent ». Le DVD exploite un support semblable à celui du CD puisque ses dimensions sont les mêmes (disque de 120 mm de diamètre ou une version mini  de 80 mm). Les principales différences techniques concernent d'une part la densité / capacité de stockage-enregistrement et d'autre part, les procédés et traitements numériques (logiciels) pour leur sauvegarde.
Les capacités d'un DVD dépendent de ses spécificités. Il peut être simple ou double face et couche, en version pleine ou mini.

Les principales capacités et versions sont : DVD 5 couche unique, face unique : environ 4,7 GB, DVD DL couche double, face unique : environ 8,54 GB, DVD couche unique, double face : environ 8,54 GB, DVD couche double, double face (peu fréquent) : environ 17,08 GB, MiniDVD : couche unique, face unique : environ 1,4 GB, MiniDVD : couche unique, double face : environ 2,66 GB, MiniDVD : double couche, face unique : environ 2,66 GB, MiniDVD : double couche, double face : environ 5,2 GB.

== Ethernet ==
Ethernet est un protocole de réseau local à commutation de paquets. Bien qu'il implémente la couche physique (PHY) et la sous-couche Media Access Control  (MAC), le protocole Ethernet est classé dans la couche de liaison, car les formats de trames que le standard définit sont normalisés et peuvent être encapsulés dans des protocoles autres que ses propres couches physiques MAC et PHY. Ces couches physiques font l'objet de normes séparées en fonction des débits, du support de transmission, de la longueur des liaisons et des conditions environnementales.
Ethernet a été standardisé sous le nom IEEE 802.3. C'est maintenant une norme internationale : ISO/IEC 8802-3.

== FD ==

Floppy disk : Disque souple dont le prototype le plus connu est la disquette 360Ko

== DD ==

Disket Double-Density : La disquette classique 1440Ko à ne pas confondre avec Disque Dur 

== HD == 

Hard-Disk : Disque dur que les auteurs francophone ont tendance à nommer DD (déjà utilisé pour un autre matériel) ou pire HDD (qui se traduirait par Hard Disk Dur :D )

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IGD ==

Integrated Graphics Device, est une unité de traitement graphique (Graphics processing unit ou GPU) directement intégrée dans la carte mère d'un PC

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==

On nomme IRQ (de l'anglais Interrupt Request, en français: demande d'interruption) une interruption qui est déclenchée par une ligne d'entrée-sortie matérielle d'un microprocesseur ou d'un microcontrôleur.
Les interruptions matérielles sont utilisées en informatique lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).

== LAN ==

Un réseau local, souvent désigné par l'acronyme anglais LAN de Local Area Network, est un réseau informatique tel que les terminaux qui y participent (ordinateurs, etc.) s'envoient des trames au niveau de la couche de liaison sans utiliser d’accès à internet. On définit aussi le LAN par le domaine de diffusion, c'est-à-dire l'ensemble des stations qui reçoivent une même trame de diffusion (broadcast frame). Au niveau de l'adressage IP, un réseau local correspond généralement à un sous-réseau IP (même préfixe d'adresse IP). On interconnecte les réseaux locaux au moyen de routeurs.

Une autre approche consiste à définir le réseau local par sa taille physique. C'est généralement un réseau à une échelle géographique relativement restreinte, par exemple une salle informatique, une habitation particulière, un bâtiment ou un site d'entreprise.

Dans le cas d'un réseau d'entreprise, on utilise aussi le terme RLE pour réseau local d'entreprise.

[http://fr.wikipedia.org/wiki/R%C3%A9seau_local Source]

== Live CD ==

Un Live CD (la traduction CD autonome a également été proposée par le projet Debian) est un CD qui contient un système d’exploitation exécutable sans installation, qui se lance au démarrage de l’ordinateur. Par extension, liveCD désigne un système d’exploitation présent sur un support externe amorçable. Les supports de stockage typiques sont le CD, le DVD et la clé USB.

== MAN ==

Un réseau métropolitain (en anglais Metropolitan Area Network, MAN) désigne un réseau composé d'ordinateurs habituellement utilisé dans les campus ou dans les villes. Le réseau utilise généralement des fibres optiques.

[http://fr.wikipedia.org/wiki/R%C3%A9seau_m%C3%A9tropolitain Source]

== MBR ==

Le Master Boot Record ou MBR (parfois aussi appelé &quot;Zone amorce&quot;) est le nom donné au premier secteur adressable du disque dur déclaré amorçable dans le bios (cylindre 0, tête 0 et secteur 1, ou secteur 0 en adressage logique) dans le cadre d'un partitionnement Intel. Sa taille est de 512 octets. Le MBR contient la table des partitions (les 4 partitions primaires) du disque dur. Il contient également une routine d'amorçage dont le but est de charger le système d'exploitation (ou le boot loader/chargeur d'amorçage s'il existe) présent sur la partition active.

Il ne faut pas confondre avec les VBR (Volume Boot Record) qui, bien qu'étant un BS (boot sector) comme le MBR, sont les premiers secteurs des partitions et des disques,autres que celui qui dans le bios est déclaré &quot;bootable&quot;

== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais New Technology File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993 et n'a cessé d'évoluer d'une version de Windows à l'autre.

== PEG PCI ==

PEG Link Mode (PCI Express Graphics Link Mode) est une fonctionnalité disponible dans le BIOS de certaines Carte mère de marque ASUS, qui permet une préséance  (ordre de démarrage) et un overclock automatique de la carte vidéo.

== PC ==

Le sigle PC ( Personnal Computer/Ordinateur Personnel ) est utilisé pour désigner un ordinateur compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, super-ordinateur, serveur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== PCIe ==

PCI Express (Peripheral Component Interconnect Express), officiellement abrégé en PCIe (ou PCI-E) est un &quot;slot&quot; d'extension standard conçu pour remplacer les anciens PCI, PCI-Xet et AGP. PCIe 2.1 est la dernière norme pour les cartes d'extension.
Il spécifie un bus local série (« bus PCI express ») et un connecteur qui sert à connecter des cartes d’extension sur la carte mère d’un ordinateur.

== RAM ==

La mémoire vive, mémoire système ou mémoire volatile, aussi appelée RAM de l'anglais Random Access Memory (que l'on traduit en français par 'mémoire à accès direct'), est la mémoire informatique dans laquelle un ordinateur place les données lors de leur traitement. Les caractéristiques de cette mémoire sont :
sa rapidité d'accès (cette rapidité est essentielle pour fournir rapidement les données au processeur) ;
sa volatilité (cette volatilité implique que les données sont perdues dès que l'ordinateur cesse d'être alimenté en électricité).

== Rolling release ==

Une approche de &quot;rolling release&quot; se réfère à un système en constante évolution, alimenté sans fin par de nouveaux paquets ou de mises à jour de paquets déjà existants, en opposition à un système figé - gelé (freeze) où les seules mises à jour seront des correctifs de sécurité. Sid et testing sont des &quot;rolling release&quot;; Stable (Etch, Lenny) est une version figée (freeze).

== RPI ==

Abréviation &quot;inventée par certains&quot; pour désigner un [http://www.raspberrypi.org/ Raspberry Pi].

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement mais expurgé) : « Relis le &quot;foutu&quot; manuel ») ! Hum...

== SAN ==

En informatique, un réseau de stockage, ou SAN (de l'anglais Storage Area Network), est un réseau spécialisé permettant de mutualiser des ressources de stockage.

[http://fr.wikipedia.org/wiki/Storage_Area_Network Source]

== SATA ==

Le Serial ATA (ou S-ATA ou SATA) est un bus informatique principalement conçu pour le transfert de données entre un ordinateur et un disque dur mais aussi utilisé pour les lecteurs cd/dvd. C'est l'évolution du standard Advanced Technology Attachment (ATA ou IDE).
Le Serial ATA a de multiples avantages par rapport à son prédécesseur, les trois principaux étant sa vitesse, la gestion des câbles et le branchement à chaud (Hot-Plug). L'ancienne norme ATA est communément désignée sous le nom « Parallel ATA » (P-ATA) afin que les deux ne soient pas confondues.

== SCSI ==

SCSI, Small Computer System Interface en anglais, est un standard définissant un bus informatique permettant de relier un ordinateur à des périphériques ou bien même à un autre ordinateur.
La grande différence apportée par ce bus, est qu'il soulage le processeur des commandes envoyées au périphérique, commandes qui sont traitées directement par le périphérique SCSI lui-même.
Ce système est beaucoup plus rapide qui l'interface E-IDE qui accapare un pourcentage plus ou moins important du processeur.

== SSH ==

Secure Shell ([[Ssh|SSH]]) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole [[Ssh|SSH]] a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== TLD ==

Abréviation anglo-saxone : Top Level Domain. Suffixe des nom de domaine de haut niveau. Par exemple .com, .net, .biz, .info, .org

Il existe deux types de TLD : les géographiques (.fr, .uk, .be) et les &quot;catégoriels&quot; (.name, .org, .edu). Ils permettent de distinguer les sites selon leur origine géographique ou leur activité.

Pour ce qui est des &quot;catégoriels&quot; un site éducatif sera en .edu, un site gouvernemental sera en .gov, une entreprise commerciale aura un nom de domaine en .com

== Terminal ==

Aussi appelée console, ligne de commande ou tty, c'est l'interface texte qui permet l'entrée de commandes. Lorsqu'une commande est terminée ou dès qu'elle est lancée en arrière-plan &quot;&lt;la_commande&gt; &amp;&quot; , le prompt ( user@debian:/repertoire$ ) réapparaît et attend l'entrée d'une autre commande.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

==UTC==

Le Temps universel coordonné ([[UTC|UTC]]) est une échelle de temps adoptée comme base du temps civil international par la majorité des pays du globe.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

== WAN ==

Un réseau étendu, souvent désigné par son acronyme anglais WAN (Wide Area Network), est un réseau informatique couvrant une grande zone géographique, typiquement à l'échelle d'un pays, d'un continent, voire de la planète entière. Le plus grand WAN est le réseau Internet. [http://fr.wikipedia.org/wiki/R%C3%A9seau_%C3%A9tendu Source]

[[Catégorie:Glossaire]]</text>
      <sha1>qeu3oitgeua63dlf5jxwbn0kfdvgzos</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5335</id>
      <parentid>5307</parentid>
      <timestamp>2013-08-05T17:25:15Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <comment>/* IRQ */</comment>
      <text xml:space="preserve" bytes="17027">{{Ébauche|les acronymes utilisés dans les pages de ce wiki}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== CDDB ==

La CDDB, pour Compact Disc Data Base, autrement dit base de données pour disque compact (musicaux), regroupe l'ensemble des informations utiles pour renseigner les tags ID3 des fichiers mp3, WMA et Ogg Vorbis.
Nombre de logiciels encodeurs sont capables de se connecter à la CDDB officielle voire à la concurrente en open source freedb.
Pour identifier les CD, CDDB utilise un identifiant nommé DiscId qui est identique à celui de FreeDB.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== DVD ==
Dénomination officielle « Digital Versatile Disc », c'est-à-dire « Disque numérique polyvalent ». Le DVD exploite un support semblable à celui du CD puisque ses dimensions sont les mêmes (disque de 120 mm de diamètre ou une version mini  de 80 mm). Les principales différences techniques concernent d'une part la densité / capacité de stockage-enregistrement et d'autre part, les procédés et traitements numériques (logiciels) pour leur sauvegarde.
Les capacités d'un DVD dépendent de ses spécificités. Il peut être simple ou double face et couche, en version pleine ou mini.

Les principales capacités et versions sont : DVD 5 couche unique, face unique : environ 4,7 GB, DVD DL couche double, face unique : environ 8,54 GB, DVD couche unique, double face : environ 8,54 GB, DVD couche double, double face (peu fréquent) : environ 17,08 GB, MiniDVD : couche unique, face unique : environ 1,4 GB, MiniDVD : couche unique, double face : environ 2,66 GB, MiniDVD : double couche, face unique : environ 2,66 GB, MiniDVD : double couche, double face : environ 5,2 GB.

== Ethernet ==
Ethernet est un protocole de réseau local à commutation de paquets. Bien qu'il implémente la couche physique (PHY) et la sous-couche Media Access Control  (MAC), le protocole Ethernet est classé dans la couche de liaison, car les formats de trames que le standard définit sont normalisés et peuvent être encapsulés dans des protocoles autres que ses propres couches physiques MAC et PHY. Ces couches physiques font l'objet de normes séparées en fonction des débits, du support de transmission, de la longueur des liaisons et des conditions environnementales.
Ethernet a été standardisé sous le nom IEEE 802.3. C'est maintenant une norme internationale : ISO/IEC 8802-3.

== FD ==

Floppy disk : Disque souple dont le prototype le plus connu est la disquette 360Ko

== DD ==

Disket Double-Density : La disquette classique 1440Ko à ne pas confondre avec Disque Dur 

== HD == 

Hard-Disk : Disque dur que les auteurs francophone ont tendance à nommer DD (déjà utilisé pour un autre matériel) ou pire HDD (qui se traduirait par Hard Disk Dur :D )

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IGD ==

Integrated Graphics Device, est une unité de traitement graphique (Graphics processing unit ou GPU) directement intégrée dans la carte mère d'un PC

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==
Une IRQ ('''I'''nterrupt '''R'''e'''Q'''uest) est la demande d'exécution d'un programme qu'on appelle routine d'interruption (ISR '''I'''nterrupt '''S'''ervice '''R'''outine).&lt;br /&gt;
On distingue les interruptions matérielles, qui sont déclenchées lorsqu'un événement matériel se produit (On appuie sur une touche du clavier par exemple)&lt;br /&gt;
et les interruptions logicielles, qui peuvent être appelées depuis un programme avec l'instruction INT suivie d'un numéro.&lt;br /&gt;
Ce numéro, appelé vecteur d'interruption, corresponds à un index sur un tableau nommée IDT ('''I'''nterruption '''D'''escriptor '''T'''able) constitué d'une liste d'adresses qui pointent sur l'entrée de l'ISR à exécuter.&lt;br /&gt;
Le déclenchement d'une interruption provoquera la sauvegarde du contexte du programme en cours qui sera restauré par l'exécution de la dernière instruction de l'ISR : IRET ('''I'''nterruption '''RET'''urn), permettant ainsi au programme interrompu de pouvoir poursuivre son exécution.

== LAN ==

Un réseau local, souvent désigné par l'acronyme anglais LAN de Local Area Network, est un réseau informatique tel que les terminaux qui y participent (ordinateurs, etc.) s'envoient des trames au niveau de la couche de liaison sans utiliser d’accès à internet. On définit aussi le LAN par le domaine de diffusion, c'est-à-dire l'ensemble des stations qui reçoivent une même trame de diffusion (broadcast frame). Au niveau de l'adressage IP, un réseau local correspond généralement à un sous-réseau IP (même préfixe d'adresse IP). On interconnecte les réseaux locaux au moyen de routeurs.

Une autre approche consiste à définir le réseau local par sa taille physique. C'est généralement un réseau à une échelle géographique relativement restreinte, par exemple une salle informatique, une habitation particulière, un bâtiment ou un site d'entreprise.

Dans le cas d'un réseau d'entreprise, on utilise aussi le terme RLE pour réseau local d'entreprise.

[http://fr.wikipedia.org/wiki/R%C3%A9seau_local Source]

== Live CD ==

Un Live CD (la traduction CD autonome a également été proposée par le projet Debian) est un CD qui contient un système d’exploitation exécutable sans installation, qui se lance au démarrage de l’ordinateur. Par extension, liveCD désigne un système d’exploitation présent sur un support externe amorçable. Les supports de stockage typiques sont le CD, le DVD et la clé USB.

== MAN ==

Un réseau métropolitain (en anglais Metropolitan Area Network, MAN) désigne un réseau composé d'ordinateurs habituellement utilisé dans les campus ou dans les villes. Le réseau utilise généralement des fibres optiques.

[http://fr.wikipedia.org/wiki/R%C3%A9seau_m%C3%A9tropolitain Source]

== MBR ==

Le Master Boot Record ou MBR (parfois aussi appelé &quot;Zone amorce&quot;) est le nom donné au premier secteur adressable du disque dur déclaré amorçable dans le bios (cylindre 0, tête 0 et secteur 1, ou secteur 0 en adressage logique) dans le cadre d'un partitionnement Intel. Sa taille est de 512 octets. Le MBR contient la table des partitions (les 4 partitions primaires) du disque dur. Il contient également une routine d'amorçage dont le but est de charger le système d'exploitation (ou le boot loader/chargeur d'amorçage s'il existe) présent sur la partition active.

Il ne faut pas confondre avec les VBR (Volume Boot Record) qui, bien qu'étant un BS (boot sector) comme le MBR, sont les premiers secteurs des partitions et des disques,autres que celui qui dans le bios est déclaré &quot;bootable&quot;

== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais New Technology File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993 et n'a cessé d'évoluer d'une version de Windows à l'autre.

== PEG PCI ==

PEG Link Mode (PCI Express Graphics Link Mode) est une fonctionnalité disponible dans le BIOS de certaines Carte mère de marque ASUS, qui permet une préséance  (ordre de démarrage) et un overclock automatique de la carte vidéo.

== PC ==

Le sigle PC ( Personnal Computer/Ordinateur Personnel ) est utilisé pour désigner un ordinateur compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, super-ordinateur, serveur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== PCIe ==

PCI Express (Peripheral Component Interconnect Express), officiellement abrégé en PCIe (ou PCI-E) est un &quot;slot&quot; d'extension standard conçu pour remplacer les anciens PCI, PCI-Xet et AGP. PCIe 2.1 est la dernière norme pour les cartes d'extension.
Il spécifie un bus local série (« bus PCI express ») et un connecteur qui sert à connecter des cartes d’extension sur la carte mère d’un ordinateur.

== RAM ==

La mémoire vive, mémoire système ou mémoire volatile, aussi appelée RAM de l'anglais Random Access Memory (que l'on traduit en français par 'mémoire à accès direct'), est la mémoire informatique dans laquelle un ordinateur place les données lors de leur traitement. Les caractéristiques de cette mémoire sont :
sa rapidité d'accès (cette rapidité est essentielle pour fournir rapidement les données au processeur) ;
sa volatilité (cette volatilité implique que les données sont perdues dès que l'ordinateur cesse d'être alimenté en électricité).

== Rolling release ==

Une approche de &quot;rolling release&quot; se réfère à un système en constante évolution, alimenté sans fin par de nouveaux paquets ou de mises à jour de paquets déjà existants, en opposition à un système figé - gelé (freeze) où les seules mises à jour seront des correctifs de sécurité. Sid et testing sont des &quot;rolling release&quot;; Stable (Etch, Lenny) est une version figée (freeze).

== RPI ==

Abréviation &quot;inventée par certains&quot; pour désigner un [http://www.raspberrypi.org/ Raspberry Pi].

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement mais expurgé) : « Relis le &quot;foutu&quot; manuel ») ! Hum...

== SAN ==

En informatique, un réseau de stockage, ou SAN (de l'anglais Storage Area Network), est un réseau spécialisé permettant de mutualiser des ressources de stockage.

[http://fr.wikipedia.org/wiki/Storage_Area_Network Source]

== SATA ==

Le Serial ATA (ou S-ATA ou SATA) est un bus informatique principalement conçu pour le transfert de données entre un ordinateur et un disque dur mais aussi utilisé pour les lecteurs cd/dvd. C'est l'évolution du standard Advanced Technology Attachment (ATA ou IDE).
Le Serial ATA a de multiples avantages par rapport à son prédécesseur, les trois principaux étant sa vitesse, la gestion des câbles et le branchement à chaud (Hot-Plug). L'ancienne norme ATA est communément désignée sous le nom « Parallel ATA » (P-ATA) afin que les deux ne soient pas confondues.

== SCSI ==

SCSI, Small Computer System Interface en anglais, est un standard définissant un bus informatique permettant de relier un ordinateur à des périphériques ou bien même à un autre ordinateur.
La grande différence apportée par ce bus, est qu'il soulage le processeur des commandes envoyées au périphérique, commandes qui sont traitées directement par le périphérique SCSI lui-même.
Ce système est beaucoup plus rapide qui l'interface E-IDE qui accapare un pourcentage plus ou moins important du processeur.

== SSH ==

Secure Shell ([[Ssh|SSH]]) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole [[Ssh|SSH]] a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== TLD ==

Abréviation anglo-saxone : Top Level Domain. Suffixe des nom de domaine de haut niveau. Par exemple .com, .net, .biz, .info, .org

Il existe deux types de TLD : les géographiques (.fr, .uk, .be) et les &quot;catégoriels&quot; (.name, .org, .edu). Ils permettent de distinguer les sites selon leur origine géographique ou leur activité.

Pour ce qui est des &quot;catégoriels&quot; un site éducatif sera en .edu, un site gouvernemental sera en .gov, une entreprise commerciale aura un nom de domaine en .com

== Terminal ==

Aussi appelée console, ligne de commande ou tty, c'est l'interface texte qui permet l'entrée de commandes. Lorsqu'une commande est terminée ou dès qu'elle est lancée en arrière-plan &quot;&lt;la_commande&gt; &amp;&quot; , le prompt ( user@debian:/repertoire$ ) réapparaît et attend l'entrée d'une autre commande.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

==UTC==

Le Temps universel coordonné ([[UTC|UTC]]) est une échelle de temps adoptée comme base du temps civil international par la majorité des pays du globe.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

== WAN ==

Un réseau étendu, souvent désigné par son acronyme anglais WAN (Wide Area Network), est un réseau informatique couvrant une grande zone géographique, typiquement à l'échelle d'un pays, d'un continent, voire de la planète entière. Le plus grand WAN est le réseau Internet. [http://fr.wikipedia.org/wiki/R%C3%A9seau_%C3%A9tendu Source]

[[Catégorie:Glossaire]]</text>
      <sha1>hfbjxobrzjsjr0kud0ims4pu261xisw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5336</id>
      <parentid>5335</parentid>
      <timestamp>2013-08-05T17:36:53Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* IRQ */</comment>
      <text xml:space="preserve" bytes="17026">{{Ébauche|les acronymes utilisés dans les pages de ce wiki}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== CDDB ==

La CDDB, pour Compact Disc Data Base, autrement dit base de données pour disque compact (musicaux), regroupe l'ensemble des informations utiles pour renseigner les tags ID3 des fichiers mp3, WMA et Ogg Vorbis.
Nombre de logiciels encodeurs sont capables de se connecter à la CDDB officielle voire à la concurrente en open source freedb.
Pour identifier les CD, CDDB utilise un identifiant nommé DiscId qui est identique à celui de FreeDB.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== DVD ==
Dénomination officielle « Digital Versatile Disc », c'est-à-dire « Disque numérique polyvalent ». Le DVD exploite un support semblable à celui du CD puisque ses dimensions sont les mêmes (disque de 120 mm de diamètre ou une version mini  de 80 mm). Les principales différences techniques concernent d'une part la densité / capacité de stockage-enregistrement et d'autre part, les procédés et traitements numériques (logiciels) pour leur sauvegarde.
Les capacités d'un DVD dépendent de ses spécificités. Il peut être simple ou double face et couche, en version pleine ou mini.

Les principales capacités et versions sont : DVD 5 couche unique, face unique : environ 4,7 GB, DVD DL couche double, face unique : environ 8,54 GB, DVD couche unique, double face : environ 8,54 GB, DVD couche double, double face (peu fréquent) : environ 17,08 GB, MiniDVD : couche unique, face unique : environ 1,4 GB, MiniDVD : couche unique, double face : environ 2,66 GB, MiniDVD : double couche, face unique : environ 2,66 GB, MiniDVD : double couche, double face : environ 5,2 GB.

== Ethernet ==
Ethernet est un protocole de réseau local à commutation de paquets. Bien qu'il implémente la couche physique (PHY) et la sous-couche Media Access Control  (MAC), le protocole Ethernet est classé dans la couche de liaison, car les formats de trames que le standard définit sont normalisés et peuvent être encapsulés dans des protocoles autres que ses propres couches physiques MAC et PHY. Ces couches physiques font l'objet de normes séparées en fonction des débits, du support de transmission, de la longueur des liaisons et des conditions environnementales.
Ethernet a été standardisé sous le nom IEEE 802.3. C'est maintenant une norme internationale : ISO/IEC 8802-3.

== FD ==

Floppy disk : Disque souple dont le prototype le plus connu est la disquette 360Ko

== DD ==

Disket Double-Density : La disquette classique 1440Ko à ne pas confondre avec Disque Dur 

== HD == 

Hard-Disk : Disque dur que les auteurs francophone ont tendance à nommer DD (déjà utilisé pour un autre matériel) ou pire HDD (qui se traduirait par Hard Disk Dur :D )

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IGD ==

Integrated Graphics Device, est une unité de traitement graphique (Graphics processing unit ou GPU) directement intégrée dans la carte mère d'un PC

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==
Une IRQ ('''I'''nterrupt '''R'''e'''Q'''uest) est la demande d'exécution d'un programme qu'on appelle routine d'interruption (ISR '''I'''nterrupt '''S'''ervice '''R'''outine).&lt;br /&gt;
On distingue les interruptions matérielles, qui sont déclenchées lorsqu'un événement matériel se produit (On appuie sur une touche du clavier par exemple)&lt;br /&gt;
et les interruptions logicielles, qui peuvent être appelées depuis un programme avec l'instruction INT suivie d'un numéro.&lt;br /&gt;
Ce numéro, appelé vecteur d'interruption, correspond à un index sur un tableau nommée IDT ('''I'''nterruption '''D'''escriptor '''T'''able) constitué d'une liste d'adresses qui pointent sur l'entrée de l'ISR à exécuter.&lt;br /&gt;
Le déclenchement d'une interruption provoquera la sauvegarde du contexte du programme en cours qui sera restauré par l'exécution de la dernière instruction de l'ISR : IRET ('''I'''nterruption '''RET'''urn), permettant ainsi au programme interrompu de pouvoir poursuivre son exécution.

== LAN ==

Un réseau local, souvent désigné par l'acronyme anglais LAN de Local Area Network, est un réseau informatique tel que les terminaux qui y participent (ordinateurs, etc.) s'envoient des trames au niveau de la couche de liaison sans utiliser d’accès à internet. On définit aussi le LAN par le domaine de diffusion, c'est-à-dire l'ensemble des stations qui reçoivent une même trame de diffusion (broadcast frame). Au niveau de l'adressage IP, un réseau local correspond généralement à un sous-réseau IP (même préfixe d'adresse IP). On interconnecte les réseaux locaux au moyen de routeurs.

Une autre approche consiste à définir le réseau local par sa taille physique. C'est généralement un réseau à une échelle géographique relativement restreinte, par exemple une salle informatique, une habitation particulière, un bâtiment ou un site d'entreprise.

Dans le cas d'un réseau d'entreprise, on utilise aussi le terme RLE pour réseau local d'entreprise.

[http://fr.wikipedia.org/wiki/R%C3%A9seau_local Source]

== Live CD ==

Un Live CD (la traduction CD autonome a également été proposée par le projet Debian) est un CD qui contient un système d’exploitation exécutable sans installation, qui se lance au démarrage de l’ordinateur. Par extension, liveCD désigne un système d’exploitation présent sur un support externe amorçable. Les supports de stockage typiques sont le CD, le DVD et la clé USB.

== MAN ==

Un réseau métropolitain (en anglais Metropolitan Area Network, MAN) désigne un réseau composé d'ordinateurs habituellement utilisé dans les campus ou dans les villes. Le réseau utilise généralement des fibres optiques.

[http://fr.wikipedia.org/wiki/R%C3%A9seau_m%C3%A9tropolitain Source]

== MBR ==

Le Master Boot Record ou MBR (parfois aussi appelé &quot;Zone amorce&quot;) est le nom donné au premier secteur adressable du disque dur déclaré amorçable dans le bios (cylindre 0, tête 0 et secteur 1, ou secteur 0 en adressage logique) dans le cadre d'un partitionnement Intel. Sa taille est de 512 octets. Le MBR contient la table des partitions (les 4 partitions primaires) du disque dur. Il contient également une routine d'amorçage dont le but est de charger le système d'exploitation (ou le boot loader/chargeur d'amorçage s'il existe) présent sur la partition active.

Il ne faut pas confondre avec les VBR (Volume Boot Record) qui, bien qu'étant un BS (boot sector) comme le MBR, sont les premiers secteurs des partitions et des disques,autres que celui qui dans le bios est déclaré &quot;bootable&quot;

== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais New Technology File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993 et n'a cessé d'évoluer d'une version de Windows à l'autre.

== PEG PCI ==

PEG Link Mode (PCI Express Graphics Link Mode) est une fonctionnalité disponible dans le BIOS de certaines Carte mère de marque ASUS, qui permet une préséance  (ordre de démarrage) et un overclock automatique de la carte vidéo.

== PC ==

Le sigle PC ( Personnal Computer/Ordinateur Personnel ) est utilisé pour désigner un ordinateur compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, super-ordinateur, serveur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== PCIe ==

PCI Express (Peripheral Component Interconnect Express), officiellement abrégé en PCIe (ou PCI-E) est un &quot;slot&quot; d'extension standard conçu pour remplacer les anciens PCI, PCI-Xet et AGP. PCIe 2.1 est la dernière norme pour les cartes d'extension.
Il spécifie un bus local série (« bus PCI express ») et un connecteur qui sert à connecter des cartes d’extension sur la carte mère d’un ordinateur.

== RAM ==

La mémoire vive, mémoire système ou mémoire volatile, aussi appelée RAM de l'anglais Random Access Memory (que l'on traduit en français par 'mémoire à accès direct'), est la mémoire informatique dans laquelle un ordinateur place les données lors de leur traitement. Les caractéristiques de cette mémoire sont :
sa rapidité d'accès (cette rapidité est essentielle pour fournir rapidement les données au processeur) ;
sa volatilité (cette volatilité implique que les données sont perdues dès que l'ordinateur cesse d'être alimenté en électricité).

== Rolling release ==

Une approche de &quot;rolling release&quot; se réfère à un système en constante évolution, alimenté sans fin par de nouveaux paquets ou de mises à jour de paquets déjà existants, en opposition à un système figé - gelé (freeze) où les seules mises à jour seront des correctifs de sécurité. Sid et testing sont des &quot;rolling release&quot;; Stable (Etch, Lenny) est une version figée (freeze).

== RPI ==

Abréviation &quot;inventée par certains&quot; pour désigner un [http://www.raspberrypi.org/ Raspberry Pi].

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement mais expurgé) : « Relis le &quot;foutu&quot; manuel ») ! Hum...

== SAN ==

En informatique, un réseau de stockage, ou SAN (de l'anglais Storage Area Network), est un réseau spécialisé permettant de mutualiser des ressources de stockage.

[http://fr.wikipedia.org/wiki/Storage_Area_Network Source]

== SATA ==

Le Serial ATA (ou S-ATA ou SATA) est un bus informatique principalement conçu pour le transfert de données entre un ordinateur et un disque dur mais aussi utilisé pour les lecteurs cd/dvd. C'est l'évolution du standard Advanced Technology Attachment (ATA ou IDE).
Le Serial ATA a de multiples avantages par rapport à son prédécesseur, les trois principaux étant sa vitesse, la gestion des câbles et le branchement à chaud (Hot-Plug). L'ancienne norme ATA est communément désignée sous le nom « Parallel ATA » (P-ATA) afin que les deux ne soient pas confondues.

== SCSI ==

SCSI, Small Computer System Interface en anglais, est un standard définissant un bus informatique permettant de relier un ordinateur à des périphériques ou bien même à un autre ordinateur.
La grande différence apportée par ce bus, est qu'il soulage le processeur des commandes envoyées au périphérique, commandes qui sont traitées directement par le périphérique SCSI lui-même.
Ce système est beaucoup plus rapide qui l'interface E-IDE qui accapare un pourcentage plus ou moins important du processeur.

== SSH ==

Secure Shell ([[Ssh|SSH]]) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole [[Ssh|SSH]] a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== TLD ==

Abréviation anglo-saxone : Top Level Domain. Suffixe des nom de domaine de haut niveau. Par exemple .com, .net, .biz, .info, .org

Il existe deux types de TLD : les géographiques (.fr, .uk, .be) et les &quot;catégoriels&quot; (.name, .org, .edu). Ils permettent de distinguer les sites selon leur origine géographique ou leur activité.

Pour ce qui est des &quot;catégoriels&quot; un site éducatif sera en .edu, un site gouvernemental sera en .gov, une entreprise commerciale aura un nom de domaine en .com

== Terminal ==

Aussi appelée console, ligne de commande ou tty, c'est l'interface texte qui permet l'entrée de commandes. Lorsqu'une commande est terminée ou dès qu'elle est lancée en arrière-plan &quot;&lt;la_commande&gt; &amp;&quot; , le prompt ( user@debian:/repertoire$ ) réapparaît et attend l'entrée d'une autre commande.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

==UTC==

Le Temps universel coordonné ([[UTC|UTC]]) est une échelle de temps adoptée comme base du temps civil international par la majorité des pays du globe.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

== WAN ==

Un réseau étendu, souvent désigné par son acronyme anglais WAN (Wide Area Network), est un réseau informatique couvrant une grande zone géographique, typiquement à l'échelle d'un pays, d'un continent, voire de la planète entière. Le plus grand WAN est le réseau Internet. [http://fr.wikipedia.org/wiki/R%C3%A9seau_%C3%A9tendu Source]

[[Catégorie:Glossaire]]</text>
      <sha1>tlopebb28i3gavfyrpkk7kgynr5re89</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5337</id>
      <parentid>5336</parentid>
      <timestamp>2013-08-07T08:25:26Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <comment>/* IRQ */  ajout de liens</comment>
      <text xml:space="preserve" bytes="17197">{{Ébauche|les acronymes utilisés dans les pages de ce wiki}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== CDDB ==

La CDDB, pour Compact Disc Data Base, autrement dit base de données pour disque compact (musicaux), regroupe l'ensemble des informations utiles pour renseigner les tags ID3 des fichiers mp3, WMA et Ogg Vorbis.
Nombre de logiciels encodeurs sont capables de se connecter à la CDDB officielle voire à la concurrente en open source freedb.
Pour identifier les CD, CDDB utilise un identifiant nommé DiscId qui est identique à celui de FreeDB.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== DVD ==
Dénomination officielle « Digital Versatile Disc », c'est-à-dire « Disque numérique polyvalent ». Le DVD exploite un support semblable à celui du CD puisque ses dimensions sont les mêmes (disque de 120 mm de diamètre ou une version mini  de 80 mm). Les principales différences techniques concernent d'une part la densité / capacité de stockage-enregistrement et d'autre part, les procédés et traitements numériques (logiciels) pour leur sauvegarde.
Les capacités d'un DVD dépendent de ses spécificités. Il peut être simple ou double face et couche, en version pleine ou mini.

Les principales capacités et versions sont : DVD 5 couche unique, face unique : environ 4,7 GB, DVD DL couche double, face unique : environ 8,54 GB, DVD couche unique, double face : environ 8,54 GB, DVD couche double, double face (peu fréquent) : environ 17,08 GB, MiniDVD : couche unique, face unique : environ 1,4 GB, MiniDVD : couche unique, double face : environ 2,66 GB, MiniDVD : double couche, face unique : environ 2,66 GB, MiniDVD : double couche, double face : environ 5,2 GB.

== Ethernet ==
Ethernet est un protocole de réseau local à commutation de paquets. Bien qu'il implémente la couche physique (PHY) et la sous-couche Media Access Control  (MAC), le protocole Ethernet est classé dans la couche de liaison, car les formats de trames que le standard définit sont normalisés et peuvent être encapsulés dans des protocoles autres que ses propres couches physiques MAC et PHY. Ces couches physiques font l'objet de normes séparées en fonction des débits, du support de transmission, de la longueur des liaisons et des conditions environnementales.
Ethernet a été standardisé sous le nom IEEE 802.3. C'est maintenant une norme internationale : ISO/IEC 8802-3.

== FD ==

Floppy disk : Disque souple dont le prototype le plus connu est la disquette 360Ko

== DD ==

Disket Double-Density : La disquette classique 1440Ko à ne pas confondre avec Disque Dur 

== HD == 

Hard-Disk : Disque dur que les auteurs francophone ont tendance à nommer DD (déjà utilisé pour un autre matériel) ou pire HDD (qui se traduirait par Hard Disk Dur :D )

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IGD ==

Integrated Graphics Device, est une unité de traitement graphique (Graphics processing unit ou GPU) directement intégrée dans la carte mère d'un PC

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==
Une IRQ ('''I'''nterrupt '''R'''e'''Q'''uest) est la demande d'exécution d'un programme qu'on appelle routine d'[https://fr.wikipedia.org/wiki/Interruption_%28informatique%29 interruption] ([http://en.wikipedia.org/wiki/Interrupt_handler ISR] '''I'''nterrupt '''S'''ervice '''R'''outine).&lt;br /&gt;
On distingue les interruptions matérielles, qui sont déclenchées lorsqu'un événement matériel se produit (On appuie sur une touche du clavier par exemple)&lt;br /&gt;
et les interruptions logicielles, qui peuvent être appelées depuis un programme avec l'instruction INT suivie d'un numéro.&lt;br /&gt;
Ce numéro, appelé vecteur d'interruption, correspond à un index sur un tableau nommée [http://fr.wikipedia.org/wiki/Interrupt_Descriptor_Table IDT] ('''I'''nterruption '''D'''escriptor '''T'''able) constitué d'une liste d'adresses qui pointent sur l'entrée de l'ISR à exécuter.&lt;br /&gt;
Le déclenchement d'une interruption provoquera la sauvegarde du contexte du programme en cours qui sera restauré par l'exécution de la dernière instruction de l'ISR : IRET ('''I'''nterruption '''RET'''urn), permettant ainsi au programme interrompu de pouvoir poursuivre son exécution.

== LAN ==

Un réseau local, souvent désigné par l'acronyme anglais LAN de Local Area Network, est un réseau informatique tel que les terminaux qui y participent (ordinateurs, etc.) s'envoient des trames au niveau de la couche de liaison sans utiliser d’accès à internet. On définit aussi le LAN par le domaine de diffusion, c'est-à-dire l'ensemble des stations qui reçoivent une même trame de diffusion (broadcast frame). Au niveau de l'adressage IP, un réseau local correspond généralement à un sous-réseau IP (même préfixe d'adresse IP). On interconnecte les réseaux locaux au moyen de routeurs.

Une autre approche consiste à définir le réseau local par sa taille physique. C'est généralement un réseau à une échelle géographique relativement restreinte, par exemple une salle informatique, une habitation particulière, un bâtiment ou un site d'entreprise.

Dans le cas d'un réseau d'entreprise, on utilise aussi le terme RLE pour réseau local d'entreprise.

[http://fr.wikipedia.org/wiki/R%C3%A9seau_local Source]

== Live CD ==

Un Live CD (la traduction CD autonome a également été proposée par le projet Debian) est un CD qui contient un système d’exploitation exécutable sans installation, qui se lance au démarrage de l’ordinateur. Par extension, liveCD désigne un système d’exploitation présent sur un support externe amorçable. Les supports de stockage typiques sont le CD, le DVD et la clé USB.

== MAN ==

Un réseau métropolitain (en anglais Metropolitan Area Network, MAN) désigne un réseau composé d'ordinateurs habituellement utilisé dans les campus ou dans les villes. Le réseau utilise généralement des fibres optiques.

[http://fr.wikipedia.org/wiki/R%C3%A9seau_m%C3%A9tropolitain Source]

== MBR ==

Le Master Boot Record ou MBR (parfois aussi appelé &quot;Zone amorce&quot;) est le nom donné au premier secteur adressable du disque dur déclaré amorçable dans le bios (cylindre 0, tête 0 et secteur 1, ou secteur 0 en adressage logique) dans le cadre d'un partitionnement Intel. Sa taille est de 512 octets. Le MBR contient la table des partitions (les 4 partitions primaires) du disque dur. Il contient également une routine d'amorçage dont le but est de charger le système d'exploitation (ou le boot loader/chargeur d'amorçage s'il existe) présent sur la partition active.

Il ne faut pas confondre avec les VBR (Volume Boot Record) qui, bien qu'étant un BS (boot sector) comme le MBR, sont les premiers secteurs des partitions et des disques,autres que celui qui dans le bios est déclaré &quot;bootable&quot;

== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais New Technology File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993 et n'a cessé d'évoluer d'une version de Windows à l'autre.

== PEG PCI ==

PEG Link Mode (PCI Express Graphics Link Mode) est une fonctionnalité disponible dans le BIOS de certaines Carte mère de marque ASUS, qui permet une préséance  (ordre de démarrage) et un overclock automatique de la carte vidéo.

== PC ==

Le sigle PC ( Personnal Computer/Ordinateur Personnel ) est utilisé pour désigner un ordinateur compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, super-ordinateur, serveur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== PCIe ==

PCI Express (Peripheral Component Interconnect Express), officiellement abrégé en PCIe (ou PCI-E) est un &quot;slot&quot; d'extension standard conçu pour remplacer les anciens PCI, PCI-Xet et AGP. PCIe 2.1 est la dernière norme pour les cartes d'extension.
Il spécifie un bus local série (« bus PCI express ») et un connecteur qui sert à connecter des cartes d’extension sur la carte mère d’un ordinateur.

== RAM ==

La mémoire vive, mémoire système ou mémoire volatile, aussi appelée RAM de l'anglais Random Access Memory (que l'on traduit en français par 'mémoire à accès direct'), est la mémoire informatique dans laquelle un ordinateur place les données lors de leur traitement. Les caractéristiques de cette mémoire sont :
sa rapidité d'accès (cette rapidité est essentielle pour fournir rapidement les données au processeur) ;
sa volatilité (cette volatilité implique que les données sont perdues dès que l'ordinateur cesse d'être alimenté en électricité).

== Rolling release ==

Une approche de &quot;rolling release&quot; se réfère à un système en constante évolution, alimenté sans fin par de nouveaux paquets ou de mises à jour de paquets déjà existants, en opposition à un système figé - gelé (freeze) où les seules mises à jour seront des correctifs de sécurité. Sid et testing sont des &quot;rolling release&quot;; Stable (Etch, Lenny) est une version figée (freeze).

== RPI ==

Abréviation &quot;inventée par certains&quot; pour désigner un [http://www.raspberrypi.org/ Raspberry Pi].

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement mais expurgé) : « Relis le &quot;foutu&quot; manuel ») ! Hum...

== SAN ==

En informatique, un réseau de stockage, ou SAN (de l'anglais Storage Area Network), est un réseau spécialisé permettant de mutualiser des ressources de stockage.

[http://fr.wikipedia.org/wiki/Storage_Area_Network Source]

== SATA ==

Le Serial ATA (ou S-ATA ou SATA) est un bus informatique principalement conçu pour le transfert de données entre un ordinateur et un disque dur mais aussi utilisé pour les lecteurs cd/dvd. C'est l'évolution du standard Advanced Technology Attachment (ATA ou IDE).
Le Serial ATA a de multiples avantages par rapport à son prédécesseur, les trois principaux étant sa vitesse, la gestion des câbles et le branchement à chaud (Hot-Plug). L'ancienne norme ATA est communément désignée sous le nom « Parallel ATA » (P-ATA) afin que les deux ne soient pas confondues.

== SCSI ==

SCSI, Small Computer System Interface en anglais, est un standard définissant un bus informatique permettant de relier un ordinateur à des périphériques ou bien même à un autre ordinateur.
La grande différence apportée par ce bus, est qu'il soulage le processeur des commandes envoyées au périphérique, commandes qui sont traitées directement par le périphérique SCSI lui-même.
Ce système est beaucoup plus rapide qui l'interface E-IDE qui accapare un pourcentage plus ou moins important du processeur.

== SSH ==

Secure Shell ([[Ssh|SSH]]) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole [[Ssh|SSH]] a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== TLD ==

Abréviation anglo-saxone : Top Level Domain. Suffixe des nom de domaine de haut niveau. Par exemple .com, .net, .biz, .info, .org

Il existe deux types de TLD : les géographiques (.fr, .uk, .be) et les &quot;catégoriels&quot; (.name, .org, .edu). Ils permettent de distinguer les sites selon leur origine géographique ou leur activité.

Pour ce qui est des &quot;catégoriels&quot; un site éducatif sera en .edu, un site gouvernemental sera en .gov, une entreprise commerciale aura un nom de domaine en .com

== Terminal ==

Aussi appelée console, ligne de commande ou tty, c'est l'interface texte qui permet l'entrée de commandes. Lorsqu'une commande est terminée ou dès qu'elle est lancée en arrière-plan &quot;&lt;la_commande&gt; &amp;&quot; , le prompt ( user@debian:/repertoire$ ) réapparaît et attend l'entrée d'une autre commande.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

==UTC==

Le Temps universel coordonné ([[UTC|UTC]]) est une échelle de temps adoptée comme base du temps civil international par la majorité des pays du globe.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

== WAN ==

Un réseau étendu, souvent désigné par son acronyme anglais WAN (Wide Area Network), est un réseau informatique couvrant une grande zone géographique, typiquement à l'échelle d'un pays, d'un continent, voire de la planète entière. Le plus grand WAN est le réseau Internet. [http://fr.wikipedia.org/wiki/R%C3%A9seau_%C3%A9tendu Source]

[[Catégorie:Glossaire]]</text>
      <sha1>0wukwaiaq6fp31ruuyo6b7x4t4pqr3j</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5394</id>
      <parentid>5337</parentid>
      <timestamp>2013-09-04T23:03:51Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* HD */ HDD =&gt; Hard Disk Drive</comment>
      <text xml:space="preserve" bytes="17199">{{Ébauche|les acronymes utilisés dans les pages de ce wiki}}

== AGP ==

L’Accelerated / Advanced Graphics Port (littéralement Port Graphique Accéléré / Avancé en français), de sigle AGP, est un port interne destiné exclusivement aux cartes graphiques. Successeur pour ces périphériques du bus PCI, l’AGP permet aux informations de circuler plus rapidement.

== CDDB ==

La CDDB, pour Compact Disc Data Base, autrement dit base de données pour disque compact (musicaux), regroupe l'ensemble des informations utiles pour renseigner les tags ID3 des fichiers mp3, WMA et Ogg Vorbis.
Nombre de logiciels encodeurs sont capables de se connecter à la CDDB officielle voire à la concurrente en open source freedb.
Pour identifier les CD, CDDB utilise un identifiant nommé DiscId qui est identique à celui de FreeDB.

== DMA ==

L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où des données circulant de ou vers un périphérique (port de communication, disque dur) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour initier et conclure le transfert. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption (IRQ).

== DVD ==
Dénomination officielle « Digital Versatile Disc », c'est-à-dire « Disque numérique polyvalent ». Le DVD exploite un support semblable à celui du CD puisque ses dimensions sont les mêmes (disque de 120 mm de diamètre ou une version mini  de 80 mm). Les principales différences techniques concernent d'une part la densité / capacité de stockage-enregistrement et d'autre part, les procédés et traitements numériques (logiciels) pour leur sauvegarde.
Les capacités d'un DVD dépendent de ses spécificités. Il peut être simple ou double face et couche, en version pleine ou mini.

Les principales capacités et versions sont : DVD 5 couche unique, face unique : environ 4,7 GB, DVD DL couche double, face unique : environ 8,54 GB, DVD couche unique, double face : environ 8,54 GB, DVD couche double, double face (peu fréquent) : environ 17,08 GB, MiniDVD : couche unique, face unique : environ 1,4 GB, MiniDVD : couche unique, double face : environ 2,66 GB, MiniDVD : double couche, face unique : environ 2,66 GB, MiniDVD : double couche, double face : environ 5,2 GB.

== Ethernet ==
Ethernet est un protocole de réseau local à commutation de paquets. Bien qu'il implémente la couche physique (PHY) et la sous-couche Media Access Control  (MAC), le protocole Ethernet est classé dans la couche de liaison, car les formats de trames que le standard définit sont normalisés et peuvent être encapsulés dans des protocoles autres que ses propres couches physiques MAC et PHY. Ces couches physiques font l'objet de normes séparées en fonction des débits, du support de transmission, de la longueur des liaisons et des conditions environnementales.
Ethernet a été standardisé sous le nom IEEE 802.3. C'est maintenant une norme internationale : ISO/IEC 8802-3.

== FD ==

Floppy disk : Disque souple dont le prototype le plus connu est la disquette 360Ko

== DD ==

Disket Double-Density : La disquette classique 1440Ko à ne pas confondre avec Disque Dur 

== HD == 

Hard-Disk : Disque dur que les auteurs francophone ont tendance à nommer DD (déjà utilisé pour un autre matériel) ou pire HDD (qui se traduirait par Hard Disk Drive :D )

== I/O ==

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output.
Dans un système d'exploitation,
Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;
Les sorties sont les données émises par l'unité centrale à destination d'un périphérique (disque, réseau, écran...).

== IDE ==

L' IDE (pour Integrated Drive Electronics) est une interface de connexion pour mémoires de masses (disque dur, lecteur de CD-ROM ...). Le nom officiel de la norme est Advanced Technology Attachement, ou ATA, IDE étant une version de cette norme. Elle est également appelée ATAPI, une autre version de la norme.
On l'appelle également PATA (ou P-ATA, pour Parallel ATA) suite à l'apparition de la connexion Serial ATA.

== IGD ==

Integrated Graphics Device, est une unité de traitement graphique (Graphics processing unit ou GPU) directement intégrée dans la carte mère d'un PC

== IP ==

L’Internet Protocol, généralement abrégé IP, est un protocole de communication de réseau informatique. IP est le protocole d'Internet. IP correspond à un protocole de niveau 3 dans le modèle OSI et du modèle TCP/IP permettant un service d'adressage unique pour l'ensemble des terminaux connectés.

== IRQ ==
Une IRQ ('''I'''nterrupt '''R'''e'''Q'''uest) est la demande d'exécution d'un programme qu'on appelle routine d'[https://fr.wikipedia.org/wiki/Interruption_%28informatique%29 interruption] ([http://en.wikipedia.org/wiki/Interrupt_handler ISR] '''I'''nterrupt '''S'''ervice '''R'''outine).&lt;br /&gt;
On distingue les interruptions matérielles, qui sont déclenchées lorsqu'un événement matériel se produit (On appuie sur une touche du clavier par exemple)&lt;br /&gt;
et les interruptions logicielles, qui peuvent être appelées depuis un programme avec l'instruction INT suivie d'un numéro.&lt;br /&gt;
Ce numéro, appelé vecteur d'interruption, correspond à un index sur un tableau nommée [http://fr.wikipedia.org/wiki/Interrupt_Descriptor_Table IDT] ('''I'''nterruption '''D'''escriptor '''T'''able) constitué d'une liste d'adresses qui pointent sur l'entrée de l'ISR à exécuter.&lt;br /&gt;
Le déclenchement d'une interruption provoquera la sauvegarde du contexte du programme en cours qui sera restauré par l'exécution de la dernière instruction de l'ISR : IRET ('''I'''nterruption '''RET'''urn), permettant ainsi au programme interrompu de pouvoir poursuivre son exécution.

== LAN ==

Un réseau local, souvent désigné par l'acronyme anglais LAN de Local Area Network, est un réseau informatique tel que les terminaux qui y participent (ordinateurs, etc.) s'envoient des trames au niveau de la couche de liaison sans utiliser d’accès à internet. On définit aussi le LAN par le domaine de diffusion, c'est-à-dire l'ensemble des stations qui reçoivent une même trame de diffusion (broadcast frame). Au niveau de l'adressage IP, un réseau local correspond généralement à un sous-réseau IP (même préfixe d'adresse IP). On interconnecte les réseaux locaux au moyen de routeurs.

Une autre approche consiste à définir le réseau local par sa taille physique. C'est généralement un réseau à une échelle géographique relativement restreinte, par exemple une salle informatique, une habitation particulière, un bâtiment ou un site d'entreprise.

Dans le cas d'un réseau d'entreprise, on utilise aussi le terme RLE pour réseau local d'entreprise.

[http://fr.wikipedia.org/wiki/R%C3%A9seau_local Source]

== Live CD ==

Un Live CD (la traduction CD autonome a également été proposée par le projet Debian) est un CD qui contient un système d’exploitation exécutable sans installation, qui se lance au démarrage de l’ordinateur. Par extension, liveCD désigne un système d’exploitation présent sur un support externe amorçable. Les supports de stockage typiques sont le CD, le DVD et la clé USB.

== MAN ==

Un réseau métropolitain (en anglais Metropolitan Area Network, MAN) désigne un réseau composé d'ordinateurs habituellement utilisé dans les campus ou dans les villes. Le réseau utilise généralement des fibres optiques.

[http://fr.wikipedia.org/wiki/R%C3%A9seau_m%C3%A9tropolitain Source]

== MBR ==

Le Master Boot Record ou MBR (parfois aussi appelé &quot;Zone amorce&quot;) est le nom donné au premier secteur adressable du disque dur déclaré amorçable dans le bios (cylindre 0, tête 0 et secteur 1, ou secteur 0 en adressage logique) dans le cadre d'un partitionnement Intel. Sa taille est de 512 octets. Le MBR contient la table des partitions (les 4 partitions primaires) du disque dur. Il contient également une routine d'amorçage dont le but est de charger le système d'exploitation (ou le boot loader/chargeur d'amorçage s'il existe) présent sur la partition active.

Il ne faut pas confondre avec les VBR (Volume Boot Record) qui, bien qu'étant un BS (boot sector) comme le MBR, sont les premiers secteurs des partitions et des disques,autres que celui qui dans le bios est déclaré &quot;bootable&quot;

== NTFS ==

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais New Technology File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993 et n'a cessé d'évoluer d'une version de Windows à l'autre.

== PEG PCI ==

PEG Link Mode (PCI Express Graphics Link Mode) est une fonctionnalité disponible dans le BIOS de certaines Carte mère de marque ASUS, qui permet une préséance  (ordre de démarrage) et un overclock automatique de la carte vidéo.

== PC ==

Le sigle PC ( Personnal Computer/Ordinateur Personnel ) est utilisé pour désigner un ordinateur compatible PC, par opposition aux autres ordinateurs personnels (Macintosh autres que PC, Amiga, Atari, etc.) ;
Par abus de langage, PC est utilisé à tort pour parler d'un ordinateur ou d'un poste de travail équipé du système d'exploitation Windows ou Linux.
De manière plus rigoureuse, le terme PC est aussi utilisé pour désigner un ordinateur personnel, par opposition aux ordinateurs de tailles différentes (assistant personnel, station de travail, ordinateur central, super-ordinateur, serveur, etc.)

== PCI ==

Le Peripheral Component Interconnect (PCI) est un standard de bus local (interne) permettant de connecter des cartes d'extension sur la carte mère d'un ordinateur.
L'un des intérêts du bus PCI est que deux cartes PCI peuvent dialoguer entre elles sans passer par le processeur.

== PCIe ==

PCI Express (Peripheral Component Interconnect Express), officiellement abrégé en PCIe (ou PCI-E) est un &quot;slot&quot; d'extension standard conçu pour remplacer les anciens PCI, PCI-Xet et AGP. PCIe 2.1 est la dernière norme pour les cartes d'extension.
Il spécifie un bus local série (« bus PCI express ») et un connecteur qui sert à connecter des cartes d’extension sur la carte mère d’un ordinateur.

== RAM ==

La mémoire vive, mémoire système ou mémoire volatile, aussi appelée RAM de l'anglais Random Access Memory (que l'on traduit en français par 'mémoire à accès direct'), est la mémoire informatique dans laquelle un ordinateur place les données lors de leur traitement. Les caractéristiques de cette mémoire sont :
sa rapidité d'accès (cette rapidité est essentielle pour fournir rapidement les données au processeur) ;
sa volatilité (cette volatilité implique que les données sont perdues dès que l'ordinateur cesse d'être alimenté en électricité).

== Rolling release ==

Une approche de &quot;rolling release&quot; se réfère à un système en constante évolution, alimenté sans fin par de nouveaux paquets ou de mises à jour de paquets déjà existants, en opposition à un système figé - gelé (freeze) où les seules mises à jour seront des correctifs de sécurité. Sid et testing sont des &quot;rolling release&quot;; Stable (Etch, Lenny) est une version figée (freeze).

== RPI ==

Abréviation &quot;inventée par certains&quot; pour désigner un [http://www.raspberrypi.org/ Raspberry Pi].

== RTFM ==

l'expression anglaise d'argot internet Read the fucking manual (littéralement mais expurgé) : « Relis le &quot;foutu&quot; manuel ») ! Hum...

== SAN ==

En informatique, un réseau de stockage, ou SAN (de l'anglais Storage Area Network), est un réseau spécialisé permettant de mutualiser des ressources de stockage.

[http://fr.wikipedia.org/wiki/Storage_Area_Network Source]

== SATA ==

Le Serial ATA (ou S-ATA ou SATA) est un bus informatique principalement conçu pour le transfert de données entre un ordinateur et un disque dur mais aussi utilisé pour les lecteurs cd/dvd. C'est l'évolution du standard Advanced Technology Attachment (ATA ou IDE).
Le Serial ATA a de multiples avantages par rapport à son prédécesseur, les trois principaux étant sa vitesse, la gestion des câbles et le branchement à chaud (Hot-Plug). L'ancienne norme ATA est communément désignée sous le nom « Parallel ATA » (P-ATA) afin que les deux ne soient pas confondues.

== SCSI ==

SCSI, Small Computer System Interface en anglais, est un standard définissant un bus informatique permettant de relier un ordinateur à des périphériques ou bien même à un autre ordinateur.
La grande différence apportée par ce bus, est qu'il soulage le processeur des commandes envoyées au périphérique, commandes qui sont traitées directement par le périphérique SCSI lui-même.
Ce système est beaucoup plus rapide qui l'interface E-IDE qui accapare un pourcentage plus ou moins important du processeur.

== SSH ==

Secure Shell ([[Ssh|SSH]]) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole [[Ssh|SSH]] a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.

== TLD ==

Abréviation anglo-saxone : Top Level Domain. Suffixe des nom de domaine de haut niveau. Par exemple .com, .net, .biz, .info, .org

Il existe deux types de TLD : les géographiques (.fr, .uk, .be) et les &quot;catégoriels&quot; (.name, .org, .edu). Ils permettent de distinguer les sites selon leur origine géographique ou leur activité.

Pour ce qui est des &quot;catégoriels&quot; un site éducatif sera en .edu, un site gouvernemental sera en .gov, une entreprise commerciale aura un nom de domaine en .com

== Terminal ==

Aussi appelée console, ligne de commande ou tty, c'est l'interface texte qui permet l'entrée de commandes. Lorsqu'une commande est terminée ou dès qu'elle est lancée en arrière-plan &quot;&lt;la_commande&gt; &amp;&quot; , le prompt ( user@debian:/repertoire$ ) réapparaît et attend l'entrée d'une autre commande.

== USB ==

L’Universal Serial Bus (USB) est une norme relative à un bus informatique en transmission série qui sert à connecter des périphériques informatiques à un ordinateur. Le bus USB permet de connecter des périphériques à chaud et en bénéficiant du Plug and Play. Il peut alimenter certains périphériques en énergie, et dans sa version 2, il autorise des débits allant de 1,5 Mbit/s à 480 Mbit/s. La version 3, à venir dans les produits grand public à partir de 2010, proposera des débits jusqu'à 5 Gbit/s.

==UTC==

Le Temps universel coordonné ([[UTC|UTC]]) est une échelle de temps adoptée comme base du temps civil international par la majorité des pays du globe.

== UUID ==

UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant unique universel) utilisé en informatique. Il s'agit d'un standard défini initialement par l'OSF (Open Software Foundation). La dernière version de ce standard est définie par le RFC 4122, en 2005.
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est conçu de manière à être unique dans le monde ; cependant, le risque existe que deux ordinateurs produisent un même identifiant. Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.

== WAN ==

Un réseau étendu, souvent désigné par son acronyme anglais WAN (Wide Area Network), est un réseau informatique couvrant une grande zone géographique, typiquement à l'échelle d'un pays, d'un continent, voire de la planète entière. Le plus grand WAN est le réseau Internet. [http://fr.wikipedia.org/wiki/R%C3%A9seau_%C3%A9tendu Source]

[[Catégorie:Glossaire]]</text>
      <sha1>7h8dhz0iuno4kxgw4pxtwgev0dkm1ae</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Graver en ligne de commande</title>
    <ns>0</ns>
    <id>596</id>
    <revision>
      <id>2513</id>
      <timestamp>2010-12-17T08:04:20Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <comment>Page créée avec « Ce script doit permettre de graver en ligne de commande des disques de données, des images iso, et si possible de créer des cd audio (Cette dernière fonction n'est pas pr... »</comment>
      <text xml:space="preserve" bytes="8408">Ce script doit permettre de graver en ligne de commande des disques de données, des images iso, et si possible de créer des cd audio (Cette dernière fonction n'est pas prête pour l'instant).

Attention, le script est en cours d'élaboration.

Surtout ne pas hésiter à améliorer le script, il est sur le wiki rien que pour ça.

&lt;code bash&gt;
#!/bin/sh
#-----------------------------------------------#
# Script pour graver en console plus facilement #
# nécessite genisoimage, wodim,                 #
# éventuellement oggdec, sox,  lame, flac...    #
# pour les conversions de fichiers audio        #
#-----------------------------------------------#

#------------------ Reste à Faire : -----------------------------#
# Préciser les dépendances                                       #
# Ajouter une fonction pour vérifier que les dépendances sont là #
# Revoir la gravure de fichiers audio                            #
# Une meilleure vérification des données                         #
#----------------------------------------------------------------#

LISTE=/tmp/liste
LISTEAGRAVER=/tmp/liste_graver
TMPDIR=/tmp/gravure

choix_fichier_ () {

# Fonction qui va choisir le fichier
# on quitte lorsque l'on rentre la valeur 0
# On enregistre une liste des fichiers, le choix fait est reporté
# dans la LISTEAGRAVER
	case $1 in
		&quot;iso&quot; )

		;;
		&quot;donnees&quot; )
		    while [ &quot;$FICHIER&quot; != 0 ]; do
		       ls -a -p -X | sed = | sed 'N;s/\n/\t/' &gt; $LISTE
		       cat $LISTE
		       echo &quot;------------------------------------------&quot;
		       echo  &quot;0 \t J'ai fini! \n&quot;
		       read CHOIX
		       if [ &quot;$CHOIX&quot; = 0 ]; then
			  break
		       else
			  FICHIER=$(echo &quot;$PWD/$(sed -n ${CHOIX}p $LISTE | awk -F&quot;\t&quot; '{print $2}')&quot;)
			  # Le nom du fichier est enregistré dans /tmp/liste_graver
			  #S'il s'agit d'un répertoire, on propose de l'ajouter à la liste, ou d'aller dedans
		   
			  case $FICHIER in
			     */ | .. ) echo &quot;1) Changer de répertoire : $FICHIER&quot;
				      echo &quot;2) Ajouter ce répertoire pour le graver&quot;
				      read R
				      case $R in
					 1 ) cd $FICHIER ;;
					 2 ) echo $FICHIER &gt;&gt; $LISTEAGRAVER ;;
				      esac
				      ;;
			    
			    
			     *) echo $FICHIER &gt;&gt; $LISTEAGRAVER ;;
			 esac
		      fi      
		   done
		;;
	esac
}


edite_ () {
   while [ &quot;$C&quot; != 0 ]; do
	   echo  &quot;Voici la liste des fichiers à graver : \n&quot;
	   cat $LISTEAGRAVER
	   echo  &quot;\n \n&quot;
	   echo  &quot;1)\t Ajouter des fichiers &quot;
	   echo  &quot;2)\t Enlever des fichiers&quot;
	   echo  &quot;0)\t J'ai fini! &quot;
	   read C
	   case $C in
		1 ) choix_fichier_ ;;
		0 ) break ;;
		2 ) echo &quot;Que supprimer?&quot;
			cat $LISTEAGRAVER | sed = | sed 'N;s/\n/\t/'
			read SUPPR
			if  [ $SUPPR -le $(cat $LISTEAGRAVER |wc -l) ] &amp;&amp; [ &quot;$SUPPR&quot; != &quot;&quot; ] ; then
				sed ${SUPPR}d $LISTEAGRAVER &gt; /tmp/listetmp
				mv /tmp/listetmp $LISTEAGRAVER
			else
				echo &quot;*** Erreur, ce numéro n'est pas disponible ***&quot;
				echo &quot;*** Entrez un choix valide ***&quot;
			fi
			;;
		* ) echo &quot;Veuillez entrer un choix valide&quot; ;;
	   esac
   
   done
}

verif_integrite_ () {

# controle de l'image
# Cette fonction est-elle efficace?
   echo &quot;md5sum de l'iso :&quot;
   md5sum $1 | awk '{print $1}'
   echo &quot;md5sum du cd gravé:&quot;
   md5sum /dev/scd0 | awk '{print $1}'
   if [ &quot;$(md5sum $1 | awk '{print $1}')&quot; != &quot;$(md5sum /dev/scd0 | awk '{print $1}')&quot; ]; then
      echo &quot;ATTENTION, IL Y A EU UN PROBLÈME LORS DE LA GRAVURE!!!!!!&quot;
   else
      echo &quot;OK!&quot;
   fi
}

grave_iso_ () {
   echo &quot;Choisissez l'image iso à graver&quot;
   choix_fichier_ &quot;iso&quot;
   
   if [ -n &quot;$(cat $LISTEAGRAVER)&quot; ]; then
      echo &quot;on va graver $(cat $LISTEAGRAVER)&quot;
      echo  &quot;L'image à graver fait: \t $(du -h $(cat $LISTEAGRAVER) | awk '{print $1}')&quot;
      echo  &quot;Assurez-vous que votre cd/dvd est assez grand&quot;
      echo &quot;On y va? (O/N)&quot;
      read CHOIX
      case $CHOIX in
         O | o )
            wodim -v dev=/dev/scd0 -data &quot;$(cat $LISTEAGRAVER)&quot;
            verif_integrite_ &quot;$(cat $LISTEAGRAVER)&quot;
            ;;
         N | n ) echo &quot;annulation de la gravure&quot;
            ;;
   esac
   
   fi
}
grave_donnees_ () {
	choix_fichier_ &quot;donnees&quot;
	echo &quot;on édite la liste qui est à graver :&quot;
	edite_
	echo &quot;Quel est le nom du volume?&quot;
	read NOMVOLUME
	if [ -n &quot;$(cat $LISTEAGRAVER)&quot; ]; then
	###on lance la gravure
		echo &quot;Creation de l'image à graver&quot;
		genisoimage -R -r -J --hide-rr-moved -V &quot;$NOMVOLUME&quot; -o /tmp/$NOMVOLUME.iso $(cat $LISTEAGRAVER)
		if [ ! -f /tmp/$NOMVOLUME.iso ]; then
			echo &quot;Erreur lors de la création de l'image&quot;
			exit 666
		fi
		#on affiche un avertissement sur la taille du fichier à graver
		echo  &quot;L'image à graver fait: \t $(du -h /tmp/$NOMVOLUME.iso | awk '{print $1}')&quot;
		echo  &quot;Assurez-vous que votre cd/dvd est assez grand&quot;
		echo &quot;On y va? (O/N)&quot;
		read CHOIX
		case $CHOIX in
			O | o )
			    wodim -v dev=/dev/scd0 -data /tmp/$NOMVOLUME.iso
			    verif_integrite_ /tmp/$NOMVOLUME.iso
			;;
			N | n ) echo &quot;annulation de la gravure&quot;
			;;
		esac
	fi
}

grave_audio_ () {
   mkdir -p $TMPDIR
   [ -d $TMPDIR ]
    if [ $? = 0 ]; then
      choix_fichier_
      edite_
      echo  &quot;\n \n On va maintenant convertir les fichiers pour les graver&quot;
      cd $TMPDIR
      cp &quot;$(cat $LISTEAGRAVER )&quot; $TMPDIR
      for i in *.[Mm][Pp]3; do mv &quot;$i&quot; `echo $i | tr '[A-Z]' '[a-z]'`; done
      for i in *.MP3; do mv &quot;$i&quot; &quot;`basename &quot;$i&quot; .MP3`.mp3&quot;; done
      echo &quot;conversion des mp3 en wav&quot;
      for i in *.mp3; do
         lame --verbose --decode &quot;$i&quot; &quot;${i/%.mp3/.wav}&quot;;
      done
      echo &quot;conversion des ogg en wav&quot;
      oggdec *.ogg
      echo &quot;conversion des flac en wav&quot;
      flac --decode *.flac
      echo &quot;normalisation&quot;
      normalize-audio --mix *.wav
      for i in *.wav ; do
         echo &quot;Traitement de ${i}&quot;
         sox &quot;$i&quot; &quot;${i/%.wav/.cdr}&quot;
      done   
#on affiche un avertissement sur la taille du fichier à graver
      echo  &quot;Les données à graver font: \t $(du -h $TMPDIR | tail -n1 | awk '{print $1}')&quot;
      echo  &quot;Assurez-vous que votre cd est assez grand&quot;
      echo &quot;On y va? (O/N)&quot;
      read CHOIX
      case $CHOIX in
         O | o )

         echo  &quot; \tOn va maintenant graver!!! \n \n &quot;
         sleep 2
         wodim -v -dev=/dev/scd0 -pad -dao -audio *.cdr
               ;;
            N | n ) echo &quot;annulation de la gravure&quot;
         ;;
      esac
      
      
   fi
}

efface_disque_ () {
	while [ &quot;$EFFACEMENT&quot; != 0 ]; do
		echo &quot;Comment souhaitez-vous effacer le disque?&quot;
		echo  &quot;1 \t Effacement complet&quot;
		echo  &quot;2 \t Effacement rapide &quot;
		echo  &quot;0 \t Annuler &quot;
		read EFFACEMENT

		case $EFFACEMENT in
			2 )
				echo &quot;C'est parti pour un effacement rapide :&quot;
				sleep 1
				wodim blank=fast
				break
			;;
			1 )
				echo &quot;C'est parti pour un effacement complet :&quot;
				sleep 1
				wodim blank=all
				break
			;;
			* ) echo &quot;Veuillez entrer un choix valide&quot; ;;
		esac
	done
}

echo &quot;                     |//&quot;
echo &quot;                    (o o)&quot;
echo &quot;+-------------oOO----(_)---------------------+&quot;
echo &quot;|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|&quot;
echo &quot;|~~~~~~~~~~~~~~~~ ¤ BONJOUR ! ¤ ~~~~~~~~~~~~~|&quot;
echo &quot;|~~~~~ ¤ Ce Script va vous permettre ¤ ~~~~~~|&quot;
echo &quot;|~~~~~~~~~ ¤ de graver facilement ¤ ~~~~~~~~~|&quot;
echo &quot;|~~~~~~~~~~~~~~ ¤ vos données ¤ ~~~~~~~~~~~~~|&quot;
echo &quot;--------------------oOO----------------------+&quot;
echo &quot;                   |__|__|&quot;
echo &quot;                    || ||&quot;
echo &quot;                   ooO Ooo&quot;
echo &quot; \n \n \n &quot;

while [ &quot;$GRAVURE&quot; != 0 ]; do
	echo  &quot;Que souhaitez-vous faire? (Entrez le numéro de votre choix) \n \n&quot;
	echo  &quot;1 \t Un disque de données &quot;
	#echo  &quot;2 \t Un disque audio &quot;
	echo  &quot;2 \t Graver une image iso &quot;
	echo  &quot;3 \t Effacer le disque &quot;
	echo  &quot;0 \t Quitter &quot;
	read GRAVURE

case $GRAVURE in
	1 ) grave_donnees_ ;;
	#2 ) grave_audio_ ;;
	2 ) grave_iso_ ;;
	3 ) efface_disque_ ;;
	0 ) 
		echo &quot;
                         ''~''
                        ( o o )
+------------------.oooO--(_)--Oooo.------------------+
|                                                     |
|                      À BIENTÔT                      |
|                    .oooO                            |
|                    (   )   Oooo.                    |
+---------------------\ (----(   )--------------------+
                       \_)    ) /
                             (_/
&quot;
		exit 2 
	;;
	* ) echo &quot;Veuillez entrer un choix valide&quot; ;;
esac
done


exit 0
&lt;/code&gt;

[[Category:Scripts]]</text>
      <sha1>a8r50tdrewy1gxclgl3ax3ih0og7smh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2528</id>
      <parentid>2513</parentid>
      <timestamp>2010-12-23T22:16:49Z</timestamp>
      <contributor>
        <username>BBT1</username>
        <id>18</id>
      </contributor>
      <comment>réécriture de verif_integrite et de ses appels</comment>
      <text xml:space="preserve" bytes="8736">Ce script doit permettre de graver en ligne de commande des disques de données, des images iso, et si possible de créer des cd audio (Cette dernière fonction n'est pas prête pour l'instant).

Attention, le script est en cours d'élaboration.

Surtout ne pas hésiter à améliorer le script, il est sur le wiki rien que pour ça.

&lt;code bash&gt;
#!/bin/sh
#-----------------------------------------------#
# Script pour graver en console plus facilement #
# nécessite genisoimage, wodim,                 #
# éventuellement oggdec, sox,  lame, flac...    #
# pour les conversions de fichiers audio        #
#-----------------------------------------------#

#------------------ Reste à Faire : -----------------------------#
# Préciser les dépendances                                       #
# Ajouter une fonction pour vérifier que les dépendances sont là #
# Revoir la gravure de fichiers audio                            #
# Une meilleure vérification des données                         #
#----------------------------------------------------------------#

set -eu

LISTE=/tmp/liste
LISTEAGRAVER=/tmp/liste_graver
TMPDIR=/tmp/gravure

ERR_INTEGR=101

choix_fichier_ () {

# Fonction qui va choisir le fichier
# on quitte lorsque l'on rentre la valeur 0
# On enregistre une liste des fichiers, le choix fait est reporté
# dans la LISTEAGRAVER
	case $1 in
		&quot;iso&quot; )

		;;
		&quot;donnees&quot; )
		    while [ &quot;$FICHIER&quot; != 0 ]; do
                       
		       ls -a -p -X | sed = | sed 'N;s/\n/\t/' &gt; $LISTE
		       cat $LISTE
		       echo &quot;------------------------------------------&quot;
		       echo  &quot;0 \t J'ai fini! \n&quot;
		       read CHOIX
		       if [ &quot;$CHOIX&quot; = 0 ]; then
			  break
		       else
			  FICHIER=$(echo &quot;$PWD/$(sed -n ${CHOIX}p $LISTE | awk -F&quot;\t&quot; '{print $2}')&quot;)
			  # Le nom du fichier est enregistré dans /tmp/liste_graver
			  #S'il s'agit d'un répertoire, on propose de l'ajouter à la liste, ou d'aller dedans
		   
			  case $FICHIER in
			     */ | .. ) echo &quot;1) Changer de répertoire : $FICHIER&quot;
				      echo &quot;2) Ajouter ce répertoire pour le graver&quot;
				      read R
				      case $R in
					 1 ) cd $FICHIER ;;
					 2 ) echo $FICHIER &gt;&gt; $LISTEAGRAVER ;;
				      esac
				      ;;
			    
			    
			     *) echo $FICHIER &gt;&gt; $LISTEAGRAVER ;;
			 esac
		      fi      
		   done
		;;
	esac
}


edite_ () {
   while [ &quot;$C&quot; != 0 ]; do
	   echo  &quot;Voici la liste des fichiers à graver : \n&quot;
	   cat $LISTEAGRAVER
	   echo  &quot;\n \n&quot;
	   echo  &quot;1)\t Ajouter des fichiers &quot;
	   echo  &quot;2)\t Enlever des fichiers&quot;
	   echo  &quot;0)\t J'ai fini! &quot;
	   read C
	   case $C in
		1 ) choix_fichier_ ;;
		0 ) break ;;
		2 ) echo &quot;Que supprimer?&quot;
			cat $LISTEAGRAVER | sed = | sed 'N;s/\n/\t/'
			read SUPPR
			if  [ $SUPPR -le $(cat $LISTEAGRAVER |wc -l) ] &amp;&amp; [ &quot;$SUPPR&quot; != &quot;&quot; ] ; then
				sed ${SUPPR}d $LISTEAGRAVER &gt; /tmp/listetmp
				mv /tmp/listetmp $LISTEAGRAVER
			else
				echo &quot;*** Erreur, ce numéro n'est pas disponible ***&quot;
				echo &quot;*** Entrez un choix valide ***&quot;
			fi
			;;
		* ) echo &quot;Veuillez entrer un choix valide&quot; ;;
	   esac
   
   done
}

# controle de l'image
# Retourne 0 si le CD gravé est conforme à l'image ISO,
# 1 sinon.
verif_integrite_ () {
   MD5_ISO=$(md5sum &quot;$1&quot; | awk '{print $1}')
   echo &quot;md5sum de l'iso : $MD5_ISO&quot; &gt;&amp;2
   MD5_CD=$(md5sum /dev/scd0 | awk '{print $1}')
   echo &quot;md5sum du cd gravé: $MD5_CD&quot; &gt;&amp;2

   # Donne à la fonction sa valeur de retour
   [ &quot;$MD5_ISO&quot; -eq &quot;$MD5_CD&quot; ]
}

grave_iso_ () {
   echo &quot;Choisissez l'image iso à graver&quot;
   choix_fichier_ &quot;iso&quot;
   
   if [ -n &quot;$(cat $LISTEAGRAVER)&quot; ]; then
      echo &quot;on va graver $(cat $LISTEAGRAVER)&quot;
      echo  &quot;L'image à graver fait: \t $(du -h $(cat $LISTEAGRAVER) | awk '{print $1}')&quot;
      echo  &quot;Assurez-vous que votre cd/dvd est assez grand&quot;
      echo &quot;On y va? (O/N)&quot;
      read CHOIX
      case $CHOIX in
         O | o )
            wodim -v dev=/dev/scd0 -data &quot;$(cat $LISTEAGRAVER)&quot;
            if ! verif_integrite_ &quot;$(cat $LISTEAGRAVER)&quot;; then
              echo &quot;Erreur: echec lors de la vérification d'intégrité&quot; &gt;&amp;2
              exit $ERR_INTEGR
            fi
            ;;
         N | n ) echo &quot;annulation de la gravure&quot;
            ;;
   esac
   
   fi
}
grave_donnees_ () {
	choix_fichier_ &quot;donnees&quot;
	echo &quot;on édite la liste qui est à graver :&quot;
	edite_
	echo &quot;Quel est le nom du volume?&quot;
	read NOMVOLUME
	if [ -n &quot;$(cat $LISTEAGRAVER)&quot; ]; then
	###on lance la gravure
		echo &quot;Creation de l'image à graver&quot;
		genisoimage -R -r -J --hide-rr-moved -V &quot;$NOMVOLUME&quot; -o /tmp/$NOMVOLUME.iso $(cat $LISTEAGRAVER)
		if [ ! -f /tmp/$NOMVOLUME.iso ]; then
			echo &quot;Erreur lors de la création de l'image&quot;
			exit 666
		fi
		#on affiche un avertissement sur la taille du fichier à graver
		echo  &quot;L'image à graver fait: \t $(du -h /tmp/$NOMVOLUME.iso | awk '{print $1}')&quot;
		echo  &quot;Assurez-vous que votre cd/dvd est assez grand&quot;
		echo &quot;On y va? (O/N)&quot;
		read CHOIX
		case $CHOIX in
			O | o )
			    wodim -v dev=/dev/scd0 -data /tmp/$NOMVOLUME.iso
			    if ! verif_integrite_ /tmp/$NOMVOLUME.iso; then
                              echo &quot;Erreur: echec lors de la vérification d'intégrité&quot; &gt;&amp;2
                              exit $ERR_INTEGR
                            fi
			;;
			N | n ) echo &quot;annulation de la gravure&quot;
			;;
		esac
	fi
}

grave_audio_ () {
   mkdir -p $TMPDIR
   [ -d $TMPDIR ]
    if [ $? = 0 ]; then
      choix_fichier_
      edite_
      echo  &quot;\n \n On va maintenant convertir les fichiers pour les graver&quot;
      cd $TMPDIR
      cp &quot;$(cat $LISTEAGRAVER )&quot; $TMPDIR
      for i in *.[Mm][Pp]3; do mv &quot;$i&quot; `echo $i | tr '[A-Z]' '[a-z]'`; done
      for i in *.MP3; do mv &quot;$i&quot; &quot;`basename &quot;$i&quot; .MP3`.mp3&quot;; done
      echo &quot;conversion des mp3 en wav&quot;
      for i in *.mp3; do
         lame --verbose --decode &quot;$i&quot; &quot;${i/%.mp3/.wav}&quot;;
      done
      echo &quot;conversion des ogg en wav&quot;
      oggdec *.ogg
      echo &quot;conversion des flac en wav&quot;
      flac --decode *.flac
      echo &quot;normalisation&quot;
      normalize-audio --mix *.wav
      for i in *.wav ; do
         echo &quot;Traitement de ${i}&quot;
         sox &quot;$i&quot; &quot;${i/%.wav/.cdr}&quot;
      done   
#on affiche un avertissement sur la taille du fichier à graver
      echo  &quot;Les données à graver font: \t $(du -h $TMPDIR | tail -n1 | awk '{print $1}')&quot;
      echo  &quot;Assurez-vous que votre cd est assez grand&quot;
      echo &quot;On y va? (O/N)&quot;
      read CHOIX
      case $CHOIX in
         O | o )

         echo  &quot; \tOn va maintenant graver!!! \n \n &quot;
         sleep 2
         wodim -v -dev=/dev/scd0 -pad -dao -audio *.cdr
               ;;
            N | n ) echo &quot;annulation de la gravure&quot;
         ;;
      esac
      
      
   fi
}

efface_disque_ () {
	while [ &quot;$EFFACEMENT&quot; != 0 ]; do
		echo &quot;Comment souhaitez-vous effacer le disque?&quot;
		echo  &quot;1 \t Effacement complet&quot;
		echo  &quot;2 \t Effacement rapide &quot;
		echo  &quot;0 \t Annuler &quot;
		read EFFACEMENT

		case $EFFACEMENT in
			2 )
				echo &quot;C'est parti pour un effacement rapide :&quot;
				sleep 1
				wodim blank=fast
				break
			;;
			1 )
				echo &quot;C'est parti pour un effacement complet :&quot;
				sleep 1
				wodim blank=all
				break
			;;
			* ) echo &quot;Veuillez entrer un choix valide&quot; ;;
		esac
	done
}

echo &quot;                     |//&quot;
echo &quot;                    (o o)&quot;
echo &quot;+-------------oOO----(_)---------------------+&quot;
echo &quot;|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|&quot;
echo &quot;|~~~~~~~~~~~~~~~~ ¤ BONJOUR ! ¤ ~~~~~~~~~~~~~|&quot;
echo &quot;|~~~~~ ¤ Ce Script va vous permettre ¤ ~~~~~~|&quot;
echo &quot;|~~~~~~~~~ ¤ de graver facilement ¤ ~~~~~~~~~|&quot;
echo &quot;|~~~~~~~~~~~~~~ ¤ vos données ¤ ~~~~~~~~~~~~~|&quot;
echo &quot;--------------------oOO----------------------+&quot;
echo &quot;                   |__|__|&quot;
echo &quot;                    || ||&quot;
echo &quot;                   ooO Ooo&quot;
echo &quot; \n \n \n &quot;

while [ &quot;$GRAVURE&quot; != 0 ]; do
	echo  &quot;Que souhaitez-vous faire? (Entrez le numéro de votre choix) \n \n&quot;
	echo  &quot;1 \t Un disque de données &quot;
	#echo  &quot;2 \t Un disque audio &quot;
	echo  &quot;2 \t Graver une image iso &quot;
	echo  &quot;3 \t Effacer le disque &quot;
	echo  &quot;0 \t Quitter &quot;
	read GRAVURE

case $GRAVURE in
	1 ) grave_donnees_ ;;
	#2 ) grave_audio_ ;;
	2 ) grave_iso_ ;;
	3 ) efface_disque_ ;;
	0 ) 
		echo &quot;
                         ''~''
                        ( o o )
+------------------.oooO--(_)--Oooo.------------------+
|                                                     |
|                      À BIENTÔT                      |
|                    .oooO                            |
|                    (   )   Oooo.                    |
+---------------------\ (----(   )--------------------+
                       \_)    ) /
                             (_/
&quot;
		exit 2 
	;;
	* ) echo &quot;Veuillez entrer un choix valide&quot; ;;
esac
done


exit 0
&lt;/code&gt;

[[Category:Scripts]]</text>
      <sha1>quhawtt4kctu4c30ii9t2lji5brja1n</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2721</id>
      <parentid>2528</parentid>
      <timestamp>2011-02-22T17:44:28Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="8785">Ce script doit permettre de graver en ligne de commande des disques de données, des images iso, et si possible de créer des cd audio (Cette dernière fonction n'est pas prête pour l'instant).

Attention, le script est en cours d'élaboration (les tests positifs ont été réalisé en bash).

Surtout ne pas hésiter à améliorer le script, il est sur le wiki rien que pour ça.

&lt;code bash&gt;
#!/bin/sh
#-----------------------------------------------#
# Script pour graver en console plus facilement #
# nécessite genisoimage, wodim,                 #
# éventuellement oggdec, sox,  lame, flac...    #
# pour les conversions de fichiers audio        #
#-----------------------------------------------#

#------------------ Reste à Faire : -----------------------------#
# Préciser les dépendances                                       #
# Ajouter une fonction pour vérifier que les dépendances sont là #
# Revoir la gravure de fichiers audio                            #
# Une meilleure vérification des données                         #
#----------------------------------------------------------------#

set -eu

LISTE=/tmp/liste
LISTEAGRAVER=/tmp/liste_graver
TMPDIR=/tmp/gravure

ERR_INTEGR=101

choix_fichier_ () {

# Fonction qui va choisir le fichier
# on quitte lorsque l'on rentre la valeur 0
# On enregistre une liste des fichiers, le choix fait est reporté
# dans la LISTEAGRAVER
	case $1 in
		&quot;iso&quot; )

		;;
		&quot;donnees&quot; )
		    while [ &quot;$FICHIER&quot; != 0 ]; do
                       
		       ls -a -p -X | sed = | sed 'N;s/\n/\t/' &gt; $LISTE
		       cat $LISTE
		       echo &quot;------------------------------------------&quot;
		       echo  &quot;0 \t J'ai fini! \n&quot;
		       read CHOIX
		       if [ &quot;$CHOIX&quot; = 0 ]; then
			  break
		       else
			  FICHIER=$(echo &quot;$PWD/$(sed -n ${CHOIX}p $LISTE | awk -F&quot;\t&quot; '{print $2}')&quot;)
			  # Le nom du fichier est enregistré dans /tmp/liste_graver
			  #S'il s'agit d'un répertoire, on propose de l'ajouter à la liste, ou d'aller dedans
		   
			  case $FICHIER in
			     */ | .. ) echo &quot;1) Changer de répertoire : $FICHIER&quot;
				      echo &quot;2) Ajouter ce répertoire pour le graver&quot;
				      read R
				      case $R in
					 1 ) cd $FICHIER ;;
					 2 ) echo $FICHIER &gt;&gt; $LISTEAGRAVER ;;
				      esac
				      ;;
			    
			    
			     *) echo $FICHIER &gt;&gt; $LISTEAGRAVER ;;
			 esac
		      fi      
		   done
		;;
	esac
}


edite_ () {
   while [ &quot;$C&quot; != 0 ]; do
	   echo  &quot;Voici la liste des fichiers à graver : \n&quot;
	   cat $LISTEAGRAVER
	   echo  &quot;\n \n&quot;
	   echo  &quot;1)\t Ajouter des fichiers &quot;
	   echo  &quot;2)\t Enlever des fichiers&quot;
	   echo  &quot;0)\t J'ai fini! &quot;
	   read C
	   case $C in
		1 ) choix_fichier_ ;;
		0 ) break ;;
		2 ) echo &quot;Que supprimer?&quot;
			cat $LISTEAGRAVER | sed = | sed 'N;s/\n/\t/'
			read SUPPR
			if  [ $SUPPR -le $(cat $LISTEAGRAVER |wc -l) ] &amp;&amp; [ &quot;$SUPPR&quot; != &quot;&quot; ] ; then
				sed ${SUPPR}d $LISTEAGRAVER &gt; /tmp/listetmp
				mv /tmp/listetmp $LISTEAGRAVER
			else
				echo &quot;*** Erreur, ce numéro n'est pas disponible ***&quot;
				echo &quot;*** Entrez un choix valide ***&quot;
			fi
			;;
		* ) echo &quot;Veuillez entrer un choix valide&quot; ;;
	   esac
   
   done
}

# controle de l'image
# Retourne 0 si le CD gravé est conforme à l'image ISO,
# 1 sinon.
verif_integrite_ () {
   MD5_ISO=$(md5sum &quot;$1&quot; | awk '{print $1}')
   echo &quot;md5sum de l'iso : $MD5_ISO&quot; &gt;&amp;2
   MD5_CD=$(md5sum /dev/scd0 | awk '{print $1}')
   echo &quot;md5sum du cd gravé: $MD5_CD&quot; &gt;&amp;2

   # Donne à la fonction sa valeur de retour
   [ &quot;$MD5_ISO&quot; -eq &quot;$MD5_CD&quot; ]
}

grave_iso_ () {
   echo &quot;Choisissez l'image iso à graver&quot;
   choix_fichier_ &quot;iso&quot;
   
   if [ -n &quot;$(cat $LISTEAGRAVER)&quot; ]; then
      echo &quot;on va graver $(cat $LISTEAGRAVER)&quot;
      echo  &quot;L'image à graver fait: \t $(du -h $(cat $LISTEAGRAVER) | awk '{print $1}')&quot;
      echo  &quot;Assurez-vous que votre cd/dvd est assez grand&quot;
      echo &quot;On y va? (O/N)&quot;
      read CHOIX
      case $CHOIX in
         O | o )
            wodim -v dev=/dev/scd0 -data &quot;$(cat $LISTEAGRAVER)&quot;
            if ! verif_integrite_ &quot;$(cat $LISTEAGRAVER)&quot;; then
              echo &quot;Erreur: echec lors de la vérification d'intégrité&quot; &gt;&amp;2
              exit $ERR_INTEGR
            fi
            ;;
         N | n ) echo &quot;annulation de la gravure&quot;
            ;;
   esac
   
   fi
}
grave_donnees_ () {
	choix_fichier_ &quot;donnees&quot;
	echo &quot;on édite la liste qui est à graver :&quot;
	edite_
	echo &quot;Quel est le nom du volume?&quot;
	read NOMVOLUME
	if [ -n &quot;$(cat $LISTEAGRAVER)&quot; ]; then
	###on lance la gravure
		echo &quot;Creation de l'image à graver&quot;
		genisoimage -R -r -J --hide-rr-moved -V &quot;$NOMVOLUME&quot; -o /tmp/$NOMVOLUME.iso $(cat $LISTEAGRAVER)
		if [ ! -f /tmp/$NOMVOLUME.iso ]; then
			echo &quot;Erreur lors de la création de l'image&quot;
			exit 666
		fi
		#on affiche un avertissement sur la taille du fichier à graver
		echo  &quot;L'image à graver fait: \t $(du -h /tmp/$NOMVOLUME.iso | awk '{print $1}')&quot;
		echo  &quot;Assurez-vous que votre cd/dvd est assez grand&quot;
		echo &quot;On y va? (O/N)&quot;
		read CHOIX
		case $CHOIX in
			O | o )
			    wodim -v dev=/dev/scd0 -data /tmp/$NOMVOLUME.iso
			    if ! verif_integrite_ /tmp/$NOMVOLUME.iso; then
                              echo &quot;Erreur: echec lors de la vérification d'intégrité&quot; &gt;&amp;2
                              exit $ERR_INTEGR
                            fi
			;;
			N | n ) echo &quot;annulation de la gravure&quot;
			;;
		esac
	fi
}

grave_audio_ () {
   mkdir -p $TMPDIR
   [ -d $TMPDIR ]
    if [ $? = 0 ]; then
      choix_fichier_
      edite_
      echo  &quot;\n \n On va maintenant convertir les fichiers pour les graver&quot;
      cd $TMPDIR
      cp &quot;$(cat $LISTEAGRAVER )&quot; $TMPDIR
      for i in *.[Mm][Pp]3; do mv &quot;$i&quot; `echo $i | tr '[A-Z]' '[a-z]'`; done
      for i in *.MP3; do mv &quot;$i&quot; &quot;`basename &quot;$i&quot; .MP3`.mp3&quot;; done
      echo &quot;conversion des mp3 en wav&quot;
      for i in *.mp3; do
         lame --verbose --decode &quot;$i&quot; &quot;${i/%.mp3/.wav}&quot;;
      done
      echo &quot;conversion des ogg en wav&quot;
      oggdec *.ogg
      echo &quot;conversion des flac en wav&quot;
      flac --decode *.flac
      echo &quot;normalisation&quot;
      normalize-audio --mix *.wav
      for i in *.wav ; do
         echo &quot;Traitement de ${i}&quot;
         sox &quot;$i&quot; &quot;${i/%.wav/.cdr}&quot;
      done   
#on affiche un avertissement sur la taille du fichier à graver
      echo  &quot;Les données à graver font: \t $(du -h $TMPDIR | tail -n1 | awk '{print $1}')&quot;
      echo  &quot;Assurez-vous que votre cd est assez grand&quot;
      echo &quot;On y va? (O/N)&quot;
      read CHOIX
      case $CHOIX in
         O | o )

         echo  &quot; \tOn va maintenant graver!!! \n \n &quot;
         sleep 2
         wodim -v -dev=/dev/scd0 -pad -dao -audio *.cdr
               ;;
            N | n ) echo &quot;annulation de la gravure&quot;
         ;;
      esac
      
      
   fi
}

efface_disque_ () {
	while [ &quot;$EFFACEMENT&quot; != 0 ]; do
		echo &quot;Comment souhaitez-vous effacer le disque?&quot;
		echo  &quot;1 \t Effacement complet&quot;
		echo  &quot;2 \t Effacement rapide &quot;
		echo  &quot;0 \t Annuler &quot;
		read EFFACEMENT

		case $EFFACEMENT in
			2 )
				echo &quot;C'est parti pour un effacement rapide :&quot;
				sleep 1
				wodim blank=fast
				break
			;;
			1 )
				echo &quot;C'est parti pour un effacement complet :&quot;
				sleep 1
				wodim blank=all
				break
			;;
			* ) echo &quot;Veuillez entrer un choix valide&quot; ;;
		esac
	done
}

echo &quot;                     |//&quot;
echo &quot;                    (o o)&quot;
echo &quot;+-------------oOO----(_)---------------------+&quot;
echo &quot;|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|&quot;
echo &quot;|~~~~~~~~~~~~~~~~ ¤ BONJOUR ! ¤ ~~~~~~~~~~~~~|&quot;
echo &quot;|~~~~~ ¤ Ce Script va vous permettre ¤ ~~~~~~|&quot;
echo &quot;|~~~~~~~~~ ¤ de graver facilement ¤ ~~~~~~~~~|&quot;
echo &quot;|~~~~~~~~~~~~~~ ¤ vos données ¤ ~~~~~~~~~~~~~|&quot;
echo &quot;--------------------oOO----------------------+&quot;
echo &quot;                   |__|__|&quot;
echo &quot;                    || ||&quot;
echo &quot;                   ooO Ooo&quot;
echo &quot; \n \n \n &quot;

while [ &quot;$GRAVURE&quot; != 0 ]; do
	echo  &quot;Que souhaitez-vous faire? (Entrez le numéro de votre choix) \n \n&quot;
	echo  &quot;1 \t Un disque de données &quot;
	#echo  &quot;2 \t Un disque audio &quot;
	echo  &quot;2 \t Graver une image iso &quot;
	echo  &quot;3 \t Effacer le disque &quot;
	echo  &quot;0 \t Quitter &quot;
	read GRAVURE

case $GRAVURE in
	1 ) grave_donnees_ ;;
	#2 ) grave_audio_ ;;
	2 ) grave_iso_ ;;
	3 ) efface_disque_ ;;
	0 ) 
		echo &quot;
                         ''~''
                        ( o o )
+------------------.oooO--(_)--Oooo.------------------+
|                                                     |
|                      À BIENTÔT                      |
|                    .oooO                            |
|                    (   )   Oooo.                    |
+---------------------\ (----(   )--------------------+
                       \_)    ) /
                             (_/
&quot;
		exit 2 
	;;
	* ) echo &quot;Veuillez entrer un choix valide&quot; ;;
esac
done


exit 0
&lt;/code&gt;

[[Category:Scripts]]</text>
      <sha1>3s061eabzb9175e6zxok0y887ejewfp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2722</id>
      <parentid>2721</parentid>
      <timestamp>2011-02-22T18:34:50Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="8797">Ce script doit permettre de graver en ligne de commande des disques de données, des images iso, et si possible de créer des cd audio (Cette dernière fonction n'est pas prête pour l'instant).

Attention, le script est en cours d'élaboration (les tests positifs ont été réalisé en bash).

Surtout ne pas hésiter à améliorer le script, il est sur le wiki rien que pour ça.

&lt;code bash&gt;
#!/bin/sh
#-----------------------------------------------#
# Script pour graver en console plus facilement #
# nécessite genisoimage, wodim,                 #
# éventuellement oggdec, sox,  lame, flac...    #
# pour les conversions de fichiers audio        #
#-----------------------------------------------#

#------------------ Reste à Faire : -----------------------------#
# Préciser les dépendances                                       #
# Ajouter une fonction pour vérifier que les dépendances sont là #
# Revoir la gravure de fichiers audio                            #
# Une meilleure vérification des données                         #
#----------------------------------------------------------------#

set -eu

LISTE=/tmp/liste
LISTEAGRAVER=/tmp/liste_graver
TMPDIR=/tmp/gravure
GRAVURE=&quot;1&quot;

ERR_INTEGR=101

choix_fichier_ () {

# Fonction qui va choisir le fichier
# on quitte lorsque l'on rentre la valeur 0
# On enregistre une liste des fichiers, le choix fait est reporté
# dans la LISTEAGRAVER
	case $1 in
		&quot;iso&quot; )

		;;
		&quot;donnees&quot; )
		    while [ &quot;$FICHIER&quot; != 0 ]; do
                       
		       ls -a -p -X | sed = | sed 'N;s/\n/\t/' &gt; $LISTE
		       cat $LISTE
		       echo &quot;------------------------------------------&quot;
		       echo  &quot;0 \t J'ai fini! \n&quot;
		       read CHOIX
		       if [ &quot;$CHOIX&quot; = 0 ]; then
			  break
		       else
			  FICHIER=$(echo &quot;$PWD/$(sed -n ${CHOIX}p $LISTE | awk -F&quot;\t&quot; '{print $2}')&quot;)
			  # Le nom du fichier est enregistré dans /tmp/liste_graver
			  #S'il s'agit d'un répertoire, on propose de l'ajouter à la liste, ou d'aller dedans
		   
			  case $FICHIER in
			     */ | .. ) echo &quot;1) Changer de répertoire : $FICHIER&quot;
				      echo &quot;2) Ajouter ce répertoire pour le graver&quot;
				      read R
				      case $R in
					 1 ) cd $FICHIER ;;
					 2 ) echo $FICHIER &gt;&gt; $LISTEAGRAVER ;;
				      esac
				      ;;
			    
			    
			     *) echo $FICHIER &gt;&gt; $LISTEAGRAVER ;;
			 esac
		      fi      
		   done
		;;
	esac
}


edite_ () {
   while [ &quot;$C&quot; != 0 ]; do
	   echo  &quot;Voici la liste des fichiers à graver : \n&quot;
	   cat $LISTEAGRAVER
	   echo  &quot;\n \n&quot;
	   echo  &quot;1)\t Ajouter des fichiers &quot;
	   echo  &quot;2)\t Enlever des fichiers&quot;
	   echo  &quot;0)\t J'ai fini! &quot;
	   read C
	   case $C in
		1 ) choix_fichier_ ;;
		0 ) break ;;
		2 ) echo &quot;Que supprimer?&quot;
			cat $LISTEAGRAVER | sed = | sed 'N;s/\n/\t/'
			read SUPPR
			if  [ $SUPPR -le $(cat $LISTEAGRAVER |wc -l) ] &amp;&amp; [ &quot;$SUPPR&quot; != &quot;&quot; ] ; then
				sed ${SUPPR}d $LISTEAGRAVER &gt; /tmp/listetmp
				mv /tmp/listetmp $LISTEAGRAVER
			else
				echo &quot;*** Erreur, ce numéro n'est pas disponible ***&quot;
				echo &quot;*** Entrez un choix valide ***&quot;
			fi
			;;
		* ) echo &quot;Veuillez entrer un choix valide&quot; ;;
	   esac
   
   done
}

# controle de l'image
# Retourne 0 si le CD gravé est conforme à l'image ISO,
# 1 sinon.
verif_integrite_ () {
   MD5_ISO=$(md5sum &quot;$1&quot; | awk '{print $1}')
   echo &quot;md5sum de l'iso : $MD5_ISO&quot; &gt;&amp;2
   MD5_CD=$(md5sum /dev/scd0 | awk '{print $1}')
   echo &quot;md5sum du cd gravé: $MD5_CD&quot; &gt;&amp;2

   # Donne à la fonction sa valeur de retour
   [ &quot;$MD5_ISO&quot; -eq &quot;$MD5_CD&quot; ]
}

grave_iso_ () {
   echo &quot;Choisissez l'image iso à graver&quot;
   choix_fichier_ &quot;iso&quot;
   
   if [ -n &quot;$(cat $LISTEAGRAVER)&quot; ]; then
      echo &quot;on va graver $(cat $LISTEAGRAVER)&quot;
      echo  &quot;L'image à graver fait: \t $(du -h $(cat $LISTEAGRAVER) | awk '{print $1}')&quot;
      echo  &quot;Assurez-vous que votre cd/dvd est assez grand&quot;
      echo &quot;On y va? (O/N)&quot;
      read CHOIX
      case $CHOIX in
         O | o )
            wodim -v dev=/dev/scd0 -data &quot;$(cat $LISTEAGRAVER)&quot;
            if ! verif_integrite_ &quot;$(cat $LISTEAGRAVER)&quot;; then
              echo &quot;Erreur: echec lors de la vérification d'intégrité&quot; &gt;&amp;2
              exit $ERR_INTEGR
            fi
            ;;
         N | n ) echo &quot;annulation de la gravure&quot;
            ;;
   esac
   
   fi
}
grave_donnees_ () {
	choix_fichier_ &quot;donnees&quot;
	echo &quot;on édite la liste qui est à graver :&quot;
	edite_
	echo &quot;Quel est le nom du volume?&quot;
	read NOMVOLUME
	if [ -n &quot;$(cat $LISTEAGRAVER)&quot; ]; then
	###on lance la gravure
		echo &quot;Creation de l'image à graver&quot;
		genisoimage -R -r -J --hide-rr-moved -V &quot;$NOMVOLUME&quot; -o /tmp/$NOMVOLUME.iso $(cat $LISTEAGRAVER)
		if [ ! -f /tmp/$NOMVOLUME.iso ]; then
			echo &quot;Erreur lors de la création de l'image&quot;
			exit 666
		fi
		#on affiche un avertissement sur la taille du fichier à graver
		echo  &quot;L'image à graver fait: \t $(du -h /tmp/$NOMVOLUME.iso | awk '{print $1}')&quot;
		echo  &quot;Assurez-vous que votre cd/dvd est assez grand&quot;
		echo &quot;On y va? (O/N)&quot;
		read CHOIX
		case $CHOIX in
			O | o )
			    wodim -v dev=/dev/scd0 -data /tmp/$NOMVOLUME.iso
			    if ! verif_integrite_ /tmp/$NOMVOLUME.iso; then
                              echo &quot;Erreur: echec lors de la vérification d'intégrité&quot; &gt;&amp;2
                              exit $ERR_INTEGR
                            fi
			;;
			N | n ) echo &quot;annulation de la gravure&quot;
			;;
		esac
	fi
}

grave_audio_ () {
   mkdir -p $TMPDIR
   [ -d $TMPDIR ]
    if [ $? = 0 ]; then
      choix_fichier_
      edite_
      echo  &quot;\n \n On va maintenant convertir les fichiers pour les graver&quot;
      cd $TMPDIR
      cp &quot;$(cat $LISTEAGRAVER )&quot; $TMPDIR
      for i in *.[Mm][Pp]3; do mv &quot;$i&quot; `echo $i | tr '[A-Z]' '[a-z]'`; done
      for i in *.MP3; do mv &quot;$i&quot; &quot;`basename &quot;$i&quot; .MP3`.mp3&quot;; done
      echo &quot;conversion des mp3 en wav&quot;
      for i in *.mp3; do
         lame --verbose --decode &quot;$i&quot; &quot;${i/%.mp3/.wav}&quot;;
      done
      echo &quot;conversion des ogg en wav&quot;
      oggdec *.ogg
      echo &quot;conversion des flac en wav&quot;
      flac --decode *.flac
      echo &quot;normalisation&quot;
      normalize-audio --mix *.wav
      for i in *.wav ; do
         echo &quot;Traitement de ${i}&quot;
         sox &quot;$i&quot; &quot;${i/%.wav/.cdr}&quot;
      done   
#on affiche un avertissement sur la taille du fichier à graver
      echo  &quot;Les données à graver font: \t $(du -h $TMPDIR | tail -n1 | awk '{print $1}')&quot;
      echo  &quot;Assurez-vous que votre cd est assez grand&quot;
      echo &quot;On y va? (O/N)&quot;
      read CHOIX
      case $CHOIX in
         O | o )

         echo  &quot; \tOn va maintenant graver!!! \n \n &quot;
         sleep 2
         wodim -v -dev=/dev/scd0 -pad -dao -audio *.cdr
               ;;
            N | n ) echo &quot;annulation de la gravure&quot;
         ;;
      esac
      
      
   fi
}

efface_disque_ () {
	while [ &quot;$EFFACEMENT&quot; != 0 ]; do
		echo &quot;Comment souhaitez-vous effacer le disque?&quot;
		echo  &quot;1 \t Effacement complet&quot;
		echo  &quot;2 \t Effacement rapide &quot;
		echo  &quot;0 \t Annuler &quot;
		read EFFACEMENT

		case $EFFACEMENT in
			2 )
				echo &quot;C'est parti pour un effacement rapide :&quot;
				sleep 1
				wodim blank=fast
				break
			;;
			1 )
				echo &quot;C'est parti pour un effacement complet :&quot;
				sleep 1
				wodim blank=all
				break
			;;
			* ) echo &quot;Veuillez entrer un choix valide&quot; ;;
		esac
	done
}

echo &quot;                     |//&quot;
echo &quot;                    (o o)&quot;
echo &quot;+-------------oOO----(_)---------------------+&quot;
echo &quot;|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|&quot;
echo &quot;|~~~~~~~~~~~~~~~~ ¤ BONJOUR ! ¤ ~~~~~~~~~~~~~|&quot;
echo &quot;|~~~~~ ¤ Ce Script va vous permettre ¤ ~~~~~~|&quot;
echo &quot;|~~~~~~~~~ ¤ de graver facilement ¤ ~~~~~~~~~|&quot;
echo &quot;|~~~~~~~~~~~~~~ ¤ vos données ¤ ~~~~~~~~~~~~~|&quot;
echo &quot;--------------------oOO----------------------+&quot;
echo &quot;                   |__|__|&quot;
echo &quot;                    || ||&quot;
echo &quot;                   ooO Ooo&quot;
echo &quot; \n \n \n &quot;

while [ &quot;$GRAVURE&quot; != 0 ]; do
	echo  &quot;Que souhaitez-vous faire? (Entrez le numéro de votre choix) \n \n&quot;
	echo  &quot;1 \t Un disque de données &quot;
	#echo  &quot;2 \t Un disque audio &quot;
	echo  &quot;2 \t Graver une image iso &quot;
	echo  &quot;3 \t Effacer le disque &quot;
	echo  &quot;0 \t Quitter &quot;
	read GRAVURE

case $GRAVURE in
	1 ) grave_donnees_ ;;
	#2 ) grave_audio_ ;;
	2 ) grave_iso_ ;;
	3 ) efface_disque_ ;;
	0 ) 
		echo &quot;
                         ''~''
                        ( o o )
+------------------.oooO--(_)--Oooo.------------------+
|                                                     |
|                      À BIENTÔT                      |
|                    .oooO                            |
|                    (   )   Oooo.                    |
+---------------------\ (----(   )--------------------+
                       \_)    ) /
                             (_/
&quot;
		exit 2 
	;;
	* ) echo &quot;Veuillez entrer un choix valide&quot; ;;
esac
done


exit 0
&lt;/code&gt;

[[Category:Scripts]]</text>
      <sha1>rkxb70pypey8vwj7vtvrojx2lj8icgq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2727</id>
      <parentid>2722</parentid>
      <timestamp>2011-02-28T11:17:35Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>Petites corrections à vérifier</comment>
      <text xml:space="preserve" bytes="8637">Ce script doit permettre de graver en ligne de commande des disques de données, des images iso, et si possible de créer des cd audio (Cette dernière fonction n'est pas prête pour l'instant).

Attention, le script est en cours d'élaboration (les tests positifs ont été réalisé en bash).

Surtout ne pas hésiter à améliorer le script, il est sur le wiki rien que pour ça.

&lt;code bash&gt;
#!/bin/sh
#-----------------------------------------------#
# Script pour graver en console plus facilement #
# nécessite genisoimage, wodim,                 #
# éventuellement oggdec, sox,  lame, flac...    #
# pour les conversions de fichiers audio        #
#-----------------------------------------------#

#------------------ Reste à Faire : -----------------------------#
# Préciser les dépendances                                       #
# Ajouter une fonction pour vérifier que les dépendances sont là #
# Revoir la gravure de fichiers audio                            #
# Une meilleure vérification des données                         #
#----------------------------------------------------------------#

set -eu

LISTE=/tmp/liste
LISTEAGRAVER=/tmp/liste_graver
TMPDIR=/tmp/gravure
GRAVURE=&quot;1&quot;

ERR_INTEGR=101

choix_fichier_ () {

# Fonction qui va choisir le fichier
# on quitte lorsque l'on rentre la valeur 0
# On enregistre une liste des fichiers, le choix fait est reporté
# dans la LISTEAGRAVER
	case $1 in
		&quot;iso&quot; )

		;;
		&quot;donnees&quot; )
		    while [ &quot;$FICHIER&quot; != 0 ]; do
                       
                       ls -ApX | nl -n ln | tee $LISTE
		       echo &quot;------------------------------------------&quot;
		       echo  &quot;0 \t J'ai fini! \n&quot;
		       read CHOIX
		       if [ &quot;$CHOIX&quot; = 0 ]; then
			  break
		       else
			  FICHIER=$(echo &quot;$PWD/$(sed -n ${CHOIX}p $LISTE | awk -F&quot;\t&quot; '{print $2}')&quot;)
			  # Le nom du fichier est enregistré dans /tmp/liste_graver
			  #S'il s'agit d'un répertoire, on propose de l'ajouter à la liste, ou d'aller dedans
		   
			  case $FICHIER in
			     */ | .. ) echo &quot;1) Changer de répertoire : $FICHIER&quot;
				      echo &quot;2) Ajouter ce répertoire pour le graver&quot;
				      read R
				      case $R in
					 1 ) cd $FICHIER ;;
					 2 ) echo $FICHIER &gt;&gt; $LISTEAGRAVER ;;
				      esac
				      ;;
			    
			    
			     *) echo $FICHIER &gt;&gt; $LISTEAGRAVER ;;
			 esac
		      fi      
		   done
		;;
	esac
}


edite_ () {
   while [ &quot;$C&quot; != 0 ]; do
	   echo  &quot;Voici la liste des fichiers à graver : \n&quot;
	   cat $LISTEAGRAVER
	   echo  &quot;\n \n&quot;
	   echo  &quot;1)\t Ajouter des fichiers &quot;
	   echo  &quot;2)\t Enlever des fichiers&quot;
	   echo  &quot;0)\t J'ai fini! &quot;
	   read C
	   case $C in
		1 ) choix_fichier_ ;;
		0 ) break ;;
		2 ) echo &quot;Que supprimer?&quot;
                        ln -n ln &quot;$LISTEAGRAVER&quot;
			read SUPPR
			if  [ $SUPPR -le $(wc -l &lt; $LISTEAGRAVER) ] &amp;&amp; [ &quot;$SUPPR&quot; != &quot;&quot; ] ; then
				sed ${SUPPR}d $LISTEAGRAVER &gt; /tmp/listetmp
				mv /tmp/listetmp $LISTEAGRAVER
			else
				echo &quot;*** Erreur, ce numéro n'est pas disponible ***&quot;
				echo &quot;*** Entrez un choix valide ***&quot;
			fi
			;;
		* ) echo &quot;Veuillez entrer un choix valide&quot; ;;
	   esac
   
   done
}

# controle de l'image
# Retourne 0 si le CD gravé est conforme à l'image ISO,
# 1 sinon.
verif_integrite_ () {
   local MD5_ISO=$(md5sum &quot;$1&quot; | awk '{print $1}')
   echo &quot;md5sum de l'iso : $MD5_ISO&quot; &gt;&amp;2
   local MD5_CD=$(md5sum /dev/scd0 | awk '{print $1}')
   echo &quot;md5sum du cd gravé: $MD5_CD&quot; &gt;&amp;2

   # Donne à la fonction sa valeur de retour
   [ &quot;$MD5_ISO&quot; -eq &quot;$MD5_CD&quot; ]
}

grave_iso_ () {
   echo &quot;Choisissez l'image iso à graver&quot;
   choix_fichier_ &quot;iso&quot;
   
   if [ -n &quot;$(cat $LISTEAGRAVER)&quot; ]; then
      echo &quot;on va graver $(cat $LISTEAGRAVER)&quot;
      echo  &quot;L'image à graver fait: \t $(du -h $(cat $LISTEAGRAVER) | awk '{print $1}')&quot;
      echo  &quot;Assurez-vous que votre cd/dvd est assez grand&quot;
      echo &quot;On y va? (O/N)&quot;
      read CHOIX
      case $CHOIX in
         O | o )
            wodim -v dev=/dev/scd0 -data &quot;$(cat $LISTEAGRAVER)&quot;
            if ! verif_integrite_ &quot;$(cat $LISTEAGRAVER)&quot;; then
              echo &quot;Erreur: echec lors de la vérification d'intégrité&quot; &gt;&amp;2
              exit $ERR_INTEGR
            fi
            ;;
         N | n ) echo &quot;annulation de la gravure&quot;
            ;;
   esac
   
   fi
}
grave_donnees_ () {
	choix_fichier_ &quot;donnees&quot;
	echo &quot;on édite la liste qui est à graver :&quot;
	edite_
	echo &quot;Quel est le nom du volume?&quot;
	read NOMVOLUME
	if [ -n &quot;$(cat $LISTEAGRAVER)&quot; ]; then
	###on lance la gravure
		echo &quot;Creation de l'image à graver&quot;
		genisoimage -R -r -J --hide-rr-moved -V &quot;$NOMVOLUME&quot; -o /tmp/$NOMVOLUME.iso $(cat $LISTEAGRAVER)
		if [ ! -f /tmp/$NOMVOLUME.iso ]; then
			echo &quot;Erreur lors de la création de l'image&quot;
			exit 666
		fi
		#on affiche un avertissement sur la taille du fichier à graver
		echo  &quot;L'image à graver fait: \t $(du -h /tmp/$NOMVOLUME.iso | awk '{print $1}')&quot;
		echo  &quot;Assurez-vous que votre cd/dvd est assez grand&quot;
		echo &quot;On y va? (O/N)&quot;
		read CHOIX
		case $CHOIX in
			O | o )
			    wodim -v dev=/dev/scd0 -data /tmp/$NOMVOLUME.iso
			    if ! verif_integrite_ /tmp/$NOMVOLUME.iso; then
                              echo &quot;Erreur: echec lors de la vérification d'intégrité&quot; &gt;&amp;2
                              exit $ERR_INTEGR
                            fi
			;;
			N | n ) echo &quot;annulation de la gravure&quot;
			;;
		esac
	fi
}

grave_audio_ () {
   mkdir -p $TMPDIR
   [ -d $TMPDIR ]
    if [ $? = 0 ]; then
      choix_fichier_
      edite_
      echo  &quot;\n \n On va maintenant convertir les fichiers pour les graver&quot;
      cd $TMPDIR
      cp &quot;$(cat $LISTEAGRAVER )&quot; $TMPDIR
      echo &quot;conversion des mp3 en wav&quot;
      for i in *.[Mm][Pp]3; do
         lame --verbose --decode &quot;$i&quot; &quot;${i%.mp3}.wav&quot;;
      done
      echo &quot;conversion des ogg en wav&quot;
      oggdec *.ogg
      echo &quot;conversion des flac en wav&quot;
      flac --decode *.flac
      echo &quot;normalisation&quot;
      normalize-audio --mix *.wav
      for i in *.wav ; do
         echo &quot;Traitement de ${i}&quot;
         sox &quot;$i&quot; &quot;${i/%.wav/.cdr}&quot;
      done   
#on affiche un avertissement sur la taille du fichier à graver
      echo  &quot;Les données à graver font: \t $(du -sh $TMPDIR | awk '{print $1}')&quot;
      echo  &quot;Assurez-vous que votre cd est assez grand&quot;
      echo &quot;On y va? (O/N)&quot;
      read CHOIX
      case $CHOIX in
         O | o )

         echo  &quot; \tOn va maintenant graver!!! \n \n &quot;
         sleep 2
         wodim -v -dev=/dev/scd0 -pad -dao -audio *.cdr
               ;;
            N | n ) echo &quot;annulation de la gravure&quot;
         ;;
      esac
      
      
   fi
}

efface_disque_ () {
	while [ &quot;$EFFACEMENT&quot; != 0 ]; do
		echo &quot;Comment souhaitez-vous effacer le disque?&quot;
		echo  &quot;1 \t Effacement complet&quot;
		echo  &quot;2 \t Effacement rapide &quot;
		echo  &quot;0 \t Annuler &quot;
		read EFFACEMENT

		case $EFFACEMENT in
			2 )
				echo &quot;C'est parti pour un effacement rapide :&quot;
				sleep 1
				wodim blank=fast
				break
			;;
			1 )
				echo &quot;C'est parti pour un effacement complet :&quot;
				sleep 1
				wodim blank=all
				break
			;;
			* ) echo &quot;Veuillez entrer un choix valide&quot; ;;
		esac
	done
}

echo &quot;                     |//&quot;
echo &quot;                    (o o)&quot;
echo &quot;+-------------oOO----(_)---------------------+&quot;
echo &quot;|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|&quot;
echo &quot;|~~~~~~~~~~~~~~~~ ¤ BONJOUR ! ¤ ~~~~~~~~~~~~~|&quot;
echo &quot;|~~~~~ ¤ Ce Script va vous permettre ¤ ~~~~~~|&quot;
echo &quot;|~~~~~~~~~ ¤ de graver facilement ¤ ~~~~~~~~~|&quot;
echo &quot;|~~~~~~~~~~~~~~ ¤ vos données ¤ ~~~~~~~~~~~~~|&quot;
echo &quot;--------------------oOO----------------------+&quot;
echo &quot;                   |__|__|&quot;
echo &quot;                    || ||&quot;
echo &quot;                   ooO Ooo&quot;
echo &quot; \n \n \n &quot;

while [ &quot;$GRAVURE&quot; != 0 ]; do
	echo  &quot;Que souhaitez-vous faire? (Entrez le numéro de votre choix) \n \n&quot;
	echo  &quot;1 \t Un disque de données &quot;
	#echo  &quot;2 \t Un disque audio &quot;
	echo  &quot;2 \t Graver une image iso &quot;
	echo  &quot;3 \t Effacer le disque &quot;
	echo  &quot;0 \t Quitter &quot;
	read GRAVURE

case $GRAVURE in
	1 ) grave_donnees_ ;;
	#2 ) grave_audio_ ;;
	2 ) grave_iso_ ;;
	3 ) efface_disque_ ;;
	0 ) 
		echo &quot;
                         ''~''
                        ( o o )
+------------------.oooO--(_)--Oooo.------------------+
|                                                     |
|                      À BIENTÔT                      |
|                    .oooO                            |
|                    (   )   Oooo.                    |
+---------------------\ (----(   )--------------------+
                       \_)    ) /
                             (_/
&quot;
		exit 2 
	;;
	* ) echo &quot;Veuillez entrer un choix valide&quot; ;;
esac
done


exit 0
&lt;/code&gt;

[[Category:Scripts]]</text>
      <sha1>kecgdx254ieexa2uplt7zzseuld5upd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2728</id>
      <parentid>2727</parentid>
      <timestamp>2011-02-28T13:50:43Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="8681">Ce script doit permettre de graver en ligne de commande des disques de données, des images iso, et si possible de créer des cd audio (Cette dernière fonction n'est pas prête pour l'instant).

Attention, le script est en cours d'élaboration (les tests positifs ont été réalisé en bash).

Surtout ne pas hésiter à améliorer le script, il est sur le wiki rien que pour ça.

&lt;code bash&gt;
#!/bin/sh
#-----------------------------------------------#
# Script pour graver en console plus facilement #
# nécessite genisoimage, wodim,                 #
# éventuellement oggdec, sox,  lame, flac...    #
# pour les conversions de fichiers audio        #
#-----------------------------------------------#

#------------------ Reste à Faire : -----------------------------#
# Préciser les dépendances                                       #
# Ajouter une fonction pour vérifier que les dépendances sont là #
# Revoir la gravure de fichiers audio                            #
# Une meilleure vérification des données                         #
#----------------------------------------------------------------#

set -eu

LISTE=/tmp/liste
LISTEAGRAVER=/tmp/liste_graver
TMPDIR=/tmp/gravure
GRAVURE=&quot;1&quot;
FICHIER=&quot;1&quot;
C=&quot;1&quot;
EFFACEMENT=&quot;1&quot;
GRAVURE=&quot;1&quot;
ERR_INTEGR=101

choix_fichier_ () {

# Fonction qui va choisir le fichier
# on quitte lorsque l'on rentre la valeur 0
# On enregistre une liste des fichiers, le choix fait est reporté
# dans la LISTEAGRAVER
	case $1 in
		&quot;iso&quot; )

		;;
		&quot;donnees&quot; )
		    while [ &quot;$FICHIER&quot; != 0 ]; do
                       
                       ls -ApX | nl -n ln | tee $LISTE
		       echo &quot;------------------------------------------&quot;
		       echo  &quot;0 \t J'ai fini! \n&quot;
		       read CHOIX
		       if [ &quot;$CHOIX&quot; = 0 ]; then
			  break
		       else
			  FICHIER=$(echo &quot;$PWD/$(sed -n ${CHOIX}p $LISTE | awk -F&quot;\t&quot; '{print $2}')&quot;)
			  # Le nom du fichier est enregistré dans /tmp/liste_graver
			  #S'il s'agit d'un répertoire, on propose de l'ajouter à la liste, ou d'aller dedans
		   
			  case $FICHIER in
			     */ | .. ) echo &quot;1) Changer de répertoire : $FICHIER&quot;
				      echo &quot;2) Ajouter ce répertoire pour le graver&quot;
				      read R
				      case $R in
					 1 ) cd $FICHIER ;;
					 2 ) echo $FICHIER &gt;&gt; $LISTEAGRAVER ;;
				      esac
				      ;;
			    
			    
			     *) echo $FICHIER &gt;&gt; $LISTEAGRAVER ;;
			 esac
		      fi      
		   done
		;;
	esac
}


edite_ () {
   while [ &quot;$C&quot; != 0 ]; do
	   echo  &quot;Voici la liste des fichiers à graver : \n&quot;
	   cat $LISTEAGRAVER
	   echo  &quot;\n \n&quot;
	   echo  &quot;1)\t Ajouter des fichiers &quot;
	   echo  &quot;2)\t Enlever des fichiers&quot;
	   echo  &quot;0)\t J'ai fini! &quot;
	   read C
	   case $C in
		1 ) choix_fichier_ ;;
		0 ) break ;;
		2 ) echo &quot;Que supprimer?&quot;
                        ln -n ln &quot;$LISTEAGRAVER&quot;
			read SUPPR
			if  [ $SUPPR -le $(wc -l &lt; $LISTEAGRAVER) ] &amp;&amp; [ &quot;$SUPPR&quot; != &quot;&quot; ] ; then
				sed ${SUPPR}d $LISTEAGRAVER &gt; /tmp/listetmp
				mv /tmp/listetmp $LISTEAGRAVER
			else
				echo &quot;*** Erreur, ce numéro n'est pas disponible ***&quot;
				echo &quot;*** Entrez un choix valide ***&quot;
			fi
			;;
		* ) echo &quot;Veuillez entrer un choix valide&quot; ;;
	   esac
   
   done
}

# controle de l'image
# Retourne 0 si le CD gravé est conforme à l'image ISO,
# 1 sinon.
verif_integrite_ () {
   local MD5_ISO=$(md5sum &quot;$1&quot; | awk '{print $1}')
   echo &quot;md5sum de l'iso : $MD5_ISO&quot; &gt;&amp;2
   local MD5_CD=$(md5sum /dev/scd0 | awk '{print $1}')
   echo &quot;md5sum du cd gravé: $MD5_CD&quot; &gt;&amp;2

   # Donne à la fonction sa valeur de retour
   [ &quot;$MD5_ISO&quot; -eq &quot;$MD5_CD&quot; ]
}

grave_iso_ () {
   echo &quot;Choisissez l'image iso à graver&quot;
   choix_fichier_ &quot;iso&quot;
   
   if [ -n &quot;$(cat $LISTEAGRAVER)&quot; ]; then
      echo &quot;on va graver $(cat $LISTEAGRAVER)&quot;
      echo  &quot;L'image à graver fait: \t $(du -h $(cat $LISTEAGRAVER) | awk '{print $1}')&quot;
      echo  &quot;Assurez-vous que votre cd/dvd est assez grand&quot;
      echo &quot;On y va? (O/N)&quot;
      read CHOIX
      case $CHOIX in
         O | o )
            wodim -v dev=/dev/scd0 -data &quot;$(cat $LISTEAGRAVER)&quot;
            if ! verif_integrite_ &quot;$(cat $LISTEAGRAVER)&quot;; then
              echo &quot;Erreur: echec lors de la vérification d'intégrité&quot; &gt;&amp;2
              exit $ERR_INTEGR
            fi
            ;;
         N | n ) echo &quot;annulation de la gravure&quot;
            ;;
   esac
   
   fi
}
grave_donnees_ () {
	choix_fichier_ &quot;donnees&quot;
	echo &quot;on édite la liste qui est à graver :&quot;
	edite_
	echo &quot;Quel est le nom du volume?&quot;
	read NOMVOLUME
	if [ -n &quot;$(cat $LISTEAGRAVER)&quot; ]; then
	###on lance la gravure
		echo &quot;Creation de l'image à graver&quot;
		genisoimage -R -r -J --hide-rr-moved -V &quot;$NOMVOLUME&quot; -o /tmp/$NOMVOLUME.iso $(cat $LISTEAGRAVER)
		if [ ! -f /tmp/$NOMVOLUME.iso ]; then
			echo &quot;Erreur lors de la création de l'image&quot;
			exit 666
		fi
		#on affiche un avertissement sur la taille du fichier à graver
		echo  &quot;L'image à graver fait: \t $(du -h /tmp/$NOMVOLUME.iso | awk '{print $1}')&quot;
		echo  &quot;Assurez-vous que votre cd/dvd est assez grand&quot;
		echo &quot;On y va? (O/N)&quot;
		read CHOIX
		case $CHOIX in
			O | o )
			    wodim -v dev=/dev/scd0 -data /tmp/$NOMVOLUME.iso
			    if ! verif_integrite_ /tmp/$NOMVOLUME.iso; then
                              echo &quot;Erreur: echec lors de la vérification d'intégrité&quot; &gt;&amp;2
                              exit $ERR_INTEGR
                            fi
			;;
			N | n ) echo &quot;annulation de la gravure&quot;
			;;
		esac
	fi
}

grave_audio_ () {
   mkdir -p $TMPDIR
   [ -d $TMPDIR ]
    if [ $? = 0 ]; then
      choix_fichier_
      edite_
      echo  &quot;\n \n On va maintenant convertir les fichiers pour les graver&quot;
      cd $TMPDIR
      cp &quot;$(cat $LISTEAGRAVER )&quot; $TMPDIR
      echo &quot;conversion des mp3 en wav&quot;
      for i in *.[Mm][Pp]3; do
         lame --verbose --decode &quot;$i&quot; &quot;${i%.mp3}.wav&quot;;
      done
      echo &quot;conversion des ogg en wav&quot;
      oggdec *.ogg
      echo &quot;conversion des flac en wav&quot;
      flac --decode *.flac
      echo &quot;normalisation&quot;
      normalize-audio --mix *.wav
      for i in *.wav ; do
         echo &quot;Traitement de ${i}&quot;
         sox &quot;$i&quot; &quot;${i/%.wav/.cdr}&quot;
      done   
#on affiche un avertissement sur la taille du fichier à graver
      echo  &quot;Les données à graver font: \t $(du -sh $TMPDIR | awk '{print $1}')&quot;
      echo  &quot;Assurez-vous que votre cd est assez grand&quot;
      echo &quot;On y va? (O/N)&quot;
      read CHOIX
      case $CHOIX in
         O | o )

         echo  &quot; \tOn va maintenant graver!!! \n \n &quot;
         sleep 2
         wodim -v -dev=/dev/scd0 -pad -dao -audio *.cdr
               ;;
            N | n ) echo &quot;annulation de la gravure&quot;
         ;;
      esac
      
      
   fi
}

efface_disque_ () {
	while [ &quot;$EFFACEMENT&quot; != 0 ]; do
		echo &quot;Comment souhaitez-vous effacer le disque?&quot;
		echo  &quot;1 \t Effacement complet&quot;
		echo  &quot;2 \t Effacement rapide &quot;
		echo  &quot;0 \t Annuler &quot;
		read EFFACEMENT

		case $EFFACEMENT in
			2 )
				echo &quot;C'est parti pour un effacement rapide :&quot;
				sleep 1
				wodim blank=fast
				break
			;;
			1 )
				echo &quot;C'est parti pour un effacement complet :&quot;
				sleep 1
				wodim blank=all
				break
			;;
			* ) echo &quot;Veuillez entrer un choix valide&quot; ;;
		esac
	done
}

echo &quot;                     |//&quot;
echo &quot;                    (o o)&quot;
echo &quot;+-------------oOO----(_)---------------------+&quot;
echo &quot;|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|&quot;
echo &quot;|~~~~~~~~~~~~~~~~ ¤ BONJOUR ! ¤ ~~~~~~~~~~~~~|&quot;
echo &quot;|~~~~~ ¤ Ce Script va vous permettre ¤ ~~~~~~|&quot;
echo &quot;|~~~~~~~~~ ¤ de graver facilement ¤ ~~~~~~~~~|&quot;
echo &quot;|~~~~~~~~~~~~~~ ¤ vos données ¤ ~~~~~~~~~~~~~|&quot;
echo &quot;--------------------oOO----------------------+&quot;
echo &quot;                   |__|__|&quot;
echo &quot;                    || ||&quot;
echo &quot;                   ooO Ooo&quot;
echo &quot; \n \n \n &quot;

while [ &quot;$GRAVURE&quot; != 0 ]; do
	echo  &quot;Que souhaitez-vous faire? (Entrez le numéro de votre choix) \n \n&quot;
	echo  &quot;1 \t Un disque de données &quot;
	#echo  &quot;2 \t Un disque audio &quot;
	echo  &quot;2 \t Graver une image iso &quot;
	echo  &quot;3 \t Effacer le disque &quot;
	echo  &quot;0 \t Quitter &quot;
	read GRAVURE

case $GRAVURE in
	1 ) grave_donnees_ ;;
	#2 ) grave_audio_ ;;
	2 ) grave_iso_ ;;
	3 ) efface_disque_ ;;
	0 ) 
		echo &quot;
                         ''~''
                        ( o o )
+------------------.oooO--(_)--Oooo.------------------+
|                                                     |
|                      À BIENTÔT                      |
|                    .oooO                            |
|                    (   )   Oooo.                    |
+---------------------\ (----(   )--------------------+
                       \_)    ) /
                             (_/
&quot;
		exit 2 
	;;
	* ) echo &quot;Veuillez entrer un choix valide&quot; ;;
esac
done


exit 0
&lt;/code&gt;

[[Category:Scripts]]</text>
      <sha1>r1uk9ld52vg4ba1gca5mwct8803towp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2729</id>
      <parentid>2728</parentid>
      <timestamp>2011-02-28T13:51:47Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="8692">Ce script doit permettre de graver en ligne de commande des disques de données, des images iso, et si possible de créer des cd audio (Cette dernière fonction n'est pas prête pour l'instant).

Attention, le script est en cours d'élaboration (les tests positifs ont été réalisé en bash).

Surtout ne pas hésiter à améliorer le script, il est sur le wiki rien que pour ça.

&lt;code bash&gt;
#!/usr/bin/env/ bash
#-----------------------------------------------#
# Script pour graver en console plus facilement #
# nécessite genisoimage, wodim,                 #
# éventuellement oggdec, sox,  lame, flac...    #
# pour les conversions de fichiers audio        #
#-----------------------------------------------#

#------------------ Reste à Faire : -----------------------------#
# Préciser les dépendances                                       #
# Ajouter une fonction pour vérifier que les dépendances sont là #
# Revoir la gravure de fichiers audio                            #
# Une meilleure vérification des données                         #
#----------------------------------------------------------------#

set -eu

LISTE=/tmp/liste
LISTEAGRAVER=/tmp/liste_graver
TMPDIR=/tmp/gravure
GRAVURE=&quot;1&quot;
FICHIER=&quot;1&quot;
C=&quot;1&quot;
EFFACEMENT=&quot;1&quot;
GRAVURE=&quot;1&quot;
ERR_INTEGR=101

choix_fichier_ () {

# Fonction qui va choisir le fichier
# on quitte lorsque l'on rentre la valeur 0
# On enregistre une liste des fichiers, le choix fait est reporté
# dans la LISTEAGRAVER
	case $1 in
		&quot;iso&quot; )

		;;
		&quot;donnees&quot; )
		    while [ &quot;$FICHIER&quot; != 0 ]; do
                       
                       ls -ApX | nl -n ln | tee $LISTE
		       echo &quot;------------------------------------------&quot;
		       echo  &quot;0 \t J'ai fini! \n&quot;
		       read CHOIX
		       if [ &quot;$CHOIX&quot; = 0 ]; then
			  break
		       else
			  FICHIER=$(echo &quot;$PWD/$(sed -n ${CHOIX}p $LISTE | awk -F&quot;\t&quot; '{print $2}')&quot;)
			  # Le nom du fichier est enregistré dans /tmp/liste_graver
			  #S'il s'agit d'un répertoire, on propose de l'ajouter à la liste, ou d'aller dedans
		   
			  case $FICHIER in
			     */ | .. ) echo &quot;1) Changer de répertoire : $FICHIER&quot;
				      echo &quot;2) Ajouter ce répertoire pour le graver&quot;
				      read R
				      case $R in
					 1 ) cd $FICHIER ;;
					 2 ) echo $FICHIER &gt;&gt; $LISTEAGRAVER ;;
				      esac
				      ;;
			    
			    
			     *) echo $FICHIER &gt;&gt; $LISTEAGRAVER ;;
			 esac
		      fi      
		   done
		;;
	esac
}


edite_ () {
   while [ &quot;$C&quot; != 0 ]; do
	   echo  &quot;Voici la liste des fichiers à graver : \n&quot;
	   cat $LISTEAGRAVER
	   echo  &quot;\n \n&quot;
	   echo  &quot;1)\t Ajouter des fichiers &quot;
	   echo  &quot;2)\t Enlever des fichiers&quot;
	   echo  &quot;0)\t J'ai fini! &quot;
	   read C
	   case $C in
		1 ) choix_fichier_ ;;
		0 ) break ;;
		2 ) echo &quot;Que supprimer?&quot;
                        ln -n ln &quot;$LISTEAGRAVER&quot;
			read SUPPR
			if  [ $SUPPR -le $(wc -l &lt; $LISTEAGRAVER) ] &amp;&amp; [ &quot;$SUPPR&quot; != &quot;&quot; ] ; then
				sed ${SUPPR}d $LISTEAGRAVER &gt; /tmp/listetmp
				mv /tmp/listetmp $LISTEAGRAVER
			else
				echo &quot;*** Erreur, ce numéro n'est pas disponible ***&quot;
				echo &quot;*** Entrez un choix valide ***&quot;
			fi
			;;
		* ) echo &quot;Veuillez entrer un choix valide&quot; ;;
	   esac
   
   done
}

# controle de l'image
# Retourne 0 si le CD gravé est conforme à l'image ISO,
# 1 sinon.
verif_integrite_ () {
   local MD5_ISO=$(md5sum &quot;$1&quot; | awk '{print $1}')
   echo &quot;md5sum de l'iso : $MD5_ISO&quot; &gt;&amp;2
   local MD5_CD=$(md5sum /dev/scd0 | awk '{print $1}')
   echo &quot;md5sum du cd gravé: $MD5_CD&quot; &gt;&amp;2

   # Donne à la fonction sa valeur de retour
   [ &quot;$MD5_ISO&quot; -eq &quot;$MD5_CD&quot; ]
}

grave_iso_ () {
   echo &quot;Choisissez l'image iso à graver&quot;
   choix_fichier_ &quot;iso&quot;
   
   if [ -n &quot;$(cat $LISTEAGRAVER)&quot; ]; then
      echo &quot;on va graver $(cat $LISTEAGRAVER)&quot;
      echo  &quot;L'image à graver fait: \t $(du -h $(cat $LISTEAGRAVER) | awk '{print $1}')&quot;
      echo  &quot;Assurez-vous que votre cd/dvd est assez grand&quot;
      echo &quot;On y va? (O/N)&quot;
      read CHOIX
      case $CHOIX in
         O | o )
            wodim -v dev=/dev/scd0 -data &quot;$(cat $LISTEAGRAVER)&quot;
            if ! verif_integrite_ &quot;$(cat $LISTEAGRAVER)&quot;; then
              echo &quot;Erreur: echec lors de la vérification d'intégrité&quot; &gt;&amp;2
              exit $ERR_INTEGR
            fi
            ;;
         N | n ) echo &quot;annulation de la gravure&quot;
            ;;
   esac
   
   fi
}
grave_donnees_ () {
	choix_fichier_ &quot;donnees&quot;
	echo &quot;on édite la liste qui est à graver :&quot;
	edite_
	echo &quot;Quel est le nom du volume?&quot;
	read NOMVOLUME
	if [ -n &quot;$(cat $LISTEAGRAVER)&quot; ]; then
	###on lance la gravure
		echo &quot;Creation de l'image à graver&quot;
		genisoimage -R -r -J --hide-rr-moved -V &quot;$NOMVOLUME&quot; -o /tmp/$NOMVOLUME.iso $(cat $LISTEAGRAVER)
		if [ ! -f /tmp/$NOMVOLUME.iso ]; then
			echo &quot;Erreur lors de la création de l'image&quot;
			exit 666
		fi
		#on affiche un avertissement sur la taille du fichier à graver
		echo  &quot;L'image à graver fait: \t $(du -h /tmp/$NOMVOLUME.iso | awk '{print $1}')&quot;
		echo  &quot;Assurez-vous que votre cd/dvd est assez grand&quot;
		echo &quot;On y va? (O/N)&quot;
		read CHOIX
		case $CHOIX in
			O | o )
			    wodim -v dev=/dev/scd0 -data /tmp/$NOMVOLUME.iso
			    if ! verif_integrite_ /tmp/$NOMVOLUME.iso; then
                              echo &quot;Erreur: echec lors de la vérification d'intégrité&quot; &gt;&amp;2
                              exit $ERR_INTEGR
                            fi
			;;
			N | n ) echo &quot;annulation de la gravure&quot;
			;;
		esac
	fi
}

grave_audio_ () {
   mkdir -p $TMPDIR
   [ -d $TMPDIR ]
    if [ $? = 0 ]; then
      choix_fichier_
      edite_
      echo  &quot;\n \n On va maintenant convertir les fichiers pour les graver&quot;
      cd $TMPDIR
      cp &quot;$(cat $LISTEAGRAVER )&quot; $TMPDIR
      echo &quot;conversion des mp3 en wav&quot;
      for i in *.[Mm][Pp]3; do
         lame --verbose --decode &quot;$i&quot; &quot;${i%.mp3}.wav&quot;;
      done
      echo &quot;conversion des ogg en wav&quot;
      oggdec *.ogg
      echo &quot;conversion des flac en wav&quot;
      flac --decode *.flac
      echo &quot;normalisation&quot;
      normalize-audio --mix *.wav
      for i in *.wav ; do
         echo &quot;Traitement de ${i}&quot;
         sox &quot;$i&quot; &quot;${i/%.wav/.cdr}&quot;
      done   
#on affiche un avertissement sur la taille du fichier à graver
      echo  &quot;Les données à graver font: \t $(du -sh $TMPDIR | awk '{print $1}')&quot;
      echo  &quot;Assurez-vous que votre cd est assez grand&quot;
      echo &quot;On y va? (O/N)&quot;
      read CHOIX
      case $CHOIX in
         O | o )

         echo  &quot; \tOn va maintenant graver!!! \n \n &quot;
         sleep 2
         wodim -v -dev=/dev/scd0 -pad -dao -audio *.cdr
               ;;
            N | n ) echo &quot;annulation de la gravure&quot;
         ;;
      esac
      
      
   fi
}

efface_disque_ () {
	while [ &quot;$EFFACEMENT&quot; != 0 ]; do
		echo &quot;Comment souhaitez-vous effacer le disque?&quot;
		echo  &quot;1 \t Effacement complet&quot;
		echo  &quot;2 \t Effacement rapide &quot;
		echo  &quot;0 \t Annuler &quot;
		read EFFACEMENT

		case $EFFACEMENT in
			2 )
				echo &quot;C'est parti pour un effacement rapide :&quot;
				sleep 1
				wodim blank=fast
				break
			;;
			1 )
				echo &quot;C'est parti pour un effacement complet :&quot;
				sleep 1
				wodim blank=all
				break
			;;
			* ) echo &quot;Veuillez entrer un choix valide&quot; ;;
		esac
	done
}

echo &quot;                     |//&quot;
echo &quot;                    (o o)&quot;
echo &quot;+-------------oOO----(_)---------------------+&quot;
echo &quot;|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|&quot;
echo &quot;|~~~~~~~~~~~~~~~~ ¤ BONJOUR ! ¤ ~~~~~~~~~~~~~|&quot;
echo &quot;|~~~~~ ¤ Ce Script va vous permettre ¤ ~~~~~~|&quot;
echo &quot;|~~~~~~~~~ ¤ de graver facilement ¤ ~~~~~~~~~|&quot;
echo &quot;|~~~~~~~~~~~~~~ ¤ vos données ¤ ~~~~~~~~~~~~~|&quot;
echo &quot;--------------------oOO----------------------+&quot;
echo &quot;                   |__|__|&quot;
echo &quot;                    || ||&quot;
echo &quot;                   ooO Ooo&quot;
echo &quot; \n \n \n &quot;

while [ &quot;$GRAVURE&quot; != 0 ]; do
	echo  &quot;Que souhaitez-vous faire? (Entrez le numéro de votre choix) \n \n&quot;
	echo  &quot;1 \t Un disque de données &quot;
	#echo  &quot;2 \t Un disque audio &quot;
	echo  &quot;2 \t Graver une image iso &quot;
	echo  &quot;3 \t Effacer le disque &quot;
	echo  &quot;0 \t Quitter &quot;
	read GRAVURE

case $GRAVURE in
	1 ) grave_donnees_ ;;
	#2 ) grave_audio_ ;;
	2 ) grave_iso_ ;;
	3 ) efface_disque_ ;;
	0 ) 
		echo &quot;
                         ''~''
                        ( o o )
+------------------.oooO--(_)--Oooo.------------------+
|                                                     |
|                      À BIENTÔT                      |
|                    .oooO                            |
|                    (   )   Oooo.                    |
+---------------------\ (----(   )--------------------+
                       \_)    ) /
                             (_/
&quot;
		exit 2 
	;;
	* ) echo &quot;Veuillez entrer un choix valide&quot; ;;
esac
done


exit 0
&lt;/code&gt;

[[Category:Scripts]]</text>
      <sha1>asdngacg4fme4s3vvr4ohjasf5vsy8q</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2730</id>
      <parentid>2729</parentid>
      <timestamp>2011-02-28T15:15:25Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <text xml:space="preserve" bytes="8624">Ce script doit permettre de graver en ligne de commande des disques de données, des images iso, et si possible de créer des cd audio (Cette dernière fonction n'est pas prête pour l'instant).

Attention, le script est en cours d'élaboration (les tests positifs ont été réalisé en bash).

Surtout ne pas hésiter à améliorer le script, il est sur le wiki rien que pour ça.

&lt;code bash&gt;
#!/bin/sh
#-----------------------------------------------#
# Script pour graver en console plus facilement #
# nécessite genisoimage, wodim,                 #
# éventuellement oggdec, sox,  lame, flac...    #
# pour les conversions de fichiers audio        #
#-----------------------------------------------#

#------------------ Reste à Faire : -----------------------------#
# Préciser les dépendances                                       #
# Ajouter une fonction pour vérifier que les dépendances sont là #
# Revoir la gravure de fichiers audio                            #
# Une meilleure vérification des données                         #
#----------------------------------------------------------------#

set -eu

LISTE=/tmp/liste
LISTEAGRAVER=/tmp/liste_graver
TMPDIR=/tmp/gravure
GRAVURE='1'

ERR_INTEGR=101

choix_fichier_ () {
  local FICHIER=''

# Fonction qui va choisir le fichier
# on quitte lorsque l'on rentre la valeur 0
# On enregistre une liste des fichiers, le choix fait est reporté
# dans la LISTEAGRAVER
	case &quot;$1&quot; in
		'iso' )

		;;
		'donnees' )
		    while [ &quot;$FICHIER&quot; != 0 ]; do

           ls -ApX | nl -n ln | tee $LISTE
		       echo &quot;------------------------------------------&quot;
		       echo  &quot;0 \t J'ai fini! \n&quot;
		       read CHOIX
		       if [ &quot;$CHOIX&quot; = 0 ]; then
			  break
		       else
			  FICHIER=$(echo &quot;$PWD/$(sed -n ${CHOIX}p $LISTE | awk -F&quot;\t&quot; '{print $2}')&quot;)
			  # Le nom du fichier est enregistré dans /tmp/liste_graver
			  #S'il s'agit d'un répertoire, on propose de l'ajouter à la liste, ou d'aller dedans

			  case &quot;$FICHIER&quot; in
			     */ | .. ) echo &quot;1) Changer de répertoire : $FICHIER&quot;
				      echo '2) Ajouter ce répertoire pour le graver'
				      read R
				      case $R in
					 1 ) cd &quot;$FICHIER&quot; ;;
					 2 ) echo &quot;$FICHIER&quot; &gt;&gt; &quot;$LISTEAGRAVER&quot; ;;
				      esac
				      ;;


			     *) echo &quot;$FICHIER&quot; &gt;&gt; &quot;$LISTEAGRAVER&quot; ;;
			 esac
		      fi
		   done
		;;
	esac
}


edite_ () {
  local C=1
  while [ &quot;$C&quot; != 0 ]; do
	  echo  &quot;Voici la liste des fichiers à graver : \n&quot;
	  cat &quot;$LISTEAGRAVER&quot;
	  echo  &quot;\n \n&quot;
	  echo  &quot;1)\t Ajouter des fichiers &quot;
	  echo  &quot;2)\t Enlever des fichiers&quot;
	  echo  &quot;0)\t J'ai fini! &quot;
	  read C
	  case $C in
		  1 ) choix_fichier_ ;;
		  0 ) break ;;
		  2 ) echo 'Que supprimer?'
        ln -n ln &quot;$LISTEAGRAVER&quot;
			  read SUPPR
			  if  [ &quot;$SUPPR&quot; -le $(wc -l &lt; &quot;$LISTEAGRAVER&quot;) ] &amp;&amp; [ &quot;$SUPPR&quot; != &quot;&quot; ] ; then
				  sed ${SUPPR}d &quot;$LISTEAGRAVER&quot; &gt; /tmp/listetmp
				  mv /tmp/listetmp $LISTEAGRAVER
			  else
				  echo &quot;*** Erreur, ce numéro n'est pas disponible ***&quot;
				  echo '*** Entrez un choix valide ***'
			  fi
			  ;;
		  * ) echo 'Veuillez entrer un choix valide' ;;
	  esac

   done
}

# controle de l'image
# Retourne 0 si le CD gravé est conforme à l'image ISO,
# 1 sinon.
verif_integrite_ () {
   local MD5_ISO=$(md5sum &quot;$1&quot; | awk '{print $1}')
   echo &quot;md5sum de l'iso : $MD5_ISO&quot; &gt;&amp;2
   local MD5_CD=$(md5sum /dev/scd0 | awk '{print $1}')
   echo &quot;md5sum du cd gravé: $MD5_CD&quot; &gt;&amp;2

   # Donne à la fonction sa valeur de retour
   [ &quot;$MD5_ISO&quot; -eq &quot;$MD5_CD&quot; ]
}

grave_iso_ () {
   echo &quot;Choisissez l'image iso à graver&quot;
   choix_fichier_ 'iso'

   if [ -n &quot;$(cat $LISTEAGRAVER)&quot; ]; then
      echo &quot;on va graver $(cat $LISTEAGRAVER)&quot;
      echo  &quot;L'image à graver fait: \t $(du -h $(cat $LISTEAGRAVER) | awk '{print $1}')&quot;
      echo  'Assurez-vous que votre cd/dvd est assez grand'
      echo 'On y va? (O/N)'
      read CHOIX
      case $CHOIX in
         O | o )
            wodim -v dev=/dev/scd0 -data &quot;$(cat $LISTEAGRAVER)&quot;
            if ! verif_integrite_ &quot;$(cat $LISTEAGRAVER)&quot;; then
              echo &quot;Erreur: echec lors de la vérification d'intégrité&quot; &gt;&amp;2
              exit $ERR_INTEGR
            fi
            ;;
         N | n ) echo &quot;annulation de la gravure&quot;
            ;;
   esac

   fi
}

grave_donnees_ () {
	choix_fichier_ 'donnees'
	echo 'on édite la liste qui est à graver :'
	edite_
	echo &quot;Quel est le nom du volume?&quot;
	read NOMVOLUME
	if [ -n &quot;$(cat $LISTEAGRAVER)&quot; ]; then
	###on lance la gravure
		echo &quot;Creation de l'image à graver&quot;
		genisoimage -R -r -J --hide-rr-moved -V &quot;$NOMVOLUME&quot; -o /tmp/$NOMVOLUME.iso $(cat $LISTEAGRAVER)
		if [ ! -f /tmp/$NOMVOLUME.iso ]; then
			echo &quot;Erreur lors de la création de l'image&quot;
			exit 666
		fi
		#on affiche un avertissement sur la taille du fichier à graver
		echo  &quot;L'image à graver fait: \t $(du -h /tmp/$NOMVOLUME.iso | awk '{print $1}')&quot;
		echo  &quot;Assurez-vous que votre cd/dvd est assez grand&quot;
		echo &quot;On y va? (O/N)&quot;
		read CHOIX
		case $CHOIX in
			O | o )
			    wodim -v dev=/dev/scd0 -data /tmp/$NOMVOLUME.iso
			    if ! verif_integrite_ /tmp/$NOMVOLUME.iso; then
                              echo &quot;Erreur: echec lors de la vérification d'intégrité&quot; &gt;&amp;2
                              exit $ERR_INTEGR
                            fi
			;;
			N | n ) echo &quot;annulation de la gravure&quot;
			;;
		esac
	fi
}

grave_audio_ () {
   mkdir -p $TMPDIR
   [ -d $TMPDIR ]
    if [ $? = 0 ]; then
      choix_fichier_
      edite_
      echo  &quot;\n \n On va maintenant convertir les fichiers pour les graver&quot;
      cd $TMPDIR
      cp &quot;$(cat $LISTEAGRAVER )&quot; $TMPDIR
      echo &quot;conversion des mp3 en wav&quot;
      for i in *.[Mm][Pp]3; do
         lame --verbose --decode &quot;$i&quot; &quot;${i%.mp3}.wav&quot;;
      done
      echo &quot;conversion des ogg en wav&quot;
      oggdec *.ogg
      echo &quot;conversion des flac en wav&quot;
      flac --decode *.flac
      echo &quot;normalisation&quot;
      normalize-audio --mix *.wav
      for i in *.wav ; do
         echo &quot;Traitement de ${i}&quot;
         sox &quot;$i&quot; &quot;${i/%.wav/.cdr}&quot;
      done
#on affiche un avertissement sur la taille du fichier à graver
      echo &quot;Les données à graver font: \t $(du -sh $TMPDIR | awk '{print $1}')&quot;
      echo 'Assurez-vous que votre cd est assez grand'
      echo 'On y va? (O/N)'
      read CHOIX
      case $CHOIX in
         O | o )

         echo  &quot; \tOn va maintenant graver!!! \n \n &quot;
         sleep 2
         wodim -v -dev=/dev/scd0 -pad -dao -audio *.cdr
               ;;
            N | n ) echo 'annulation de la gravure'
         ;;
      esac


   fi
}

efface_disque_ () {
  local EFFACEMENT=1
	while [ &quot;$EFFACEMENT&quot; != 0 ]; do
		echo &quot;Comment souhaitez-vous effacer le disque?&quot;
		echo  &quot;1 \t Effacement complet&quot;
		echo  &quot;2 \t Effacement rapide &quot;
		echo  &quot;0 \t Annuler &quot;
		read EFFACEMENT

		case $EFFACEMENT in
			2 )
				echo &quot;C'est parti pour un effacement rapide :&quot;
				sleep 1
				wodim blank=fast
				break
			;;
			1 )
				echo &quot;C'est parti pour un effacement complet :&quot;
				sleep 1
				wodim blank=all
				break
			;;
			* ) echo 'Veuillez entrer un choix valide' ;;
		esac
	done
}

echo '                     |//'
echo '                    (o o)'
echo '+-------------oOO----(_)---------------------+'
echo '|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|'
echo '|~~~~~~~~~~~~~~~~ ¤ BONJOUR ! ¤ ~~~~~~~~~~~~~|'
echo '|~~~~~ ¤ Ce Script va vous permettre ¤ ~~~~~~|'
echo '|~~~~~~~~~ ¤ de graver facilement ¤ ~~~~~~~~~|'
echo '|~~~~~~~~~~~~~~ ¤ vos données ¤ ~~~~~~~~~~~~~|'
echo '--------------------oOO----------------------+'
echo '                   |__|__|'
echo '                    || ||'
echo '                   ooO Ooo'
echo &quot; \n \n \n &quot;

while [ &quot;$GRAVURE&quot; != 0 ]; do
	echo  &quot;Que souhaitez-vous faire? (Entrez le numéro de votre choix) \n \n&quot;
	echo  &quot;1 \t Un disque de données &quot;
	#echo  &quot;2 \t Un disque audio &quot;
	echo  &quot;2 \t Graver une image iso &quot;
	echo  &quot;3 \t Effacer le disque &quot;
	echo  &quot;0 \t Quitter &quot;
	read GRAVURE

case $GRAVURE in
	1 ) grave_donnees_ ;;
	#2 ) grave_audio_ ;;
	2 ) grave_iso_ ;;
	3 ) efface_disque_ ;;
	0 )
		echo '
                         ''~''
                        ( o o )
+------------------.oooO--(_)--Oooo.------------------+
|                                                     |
|                      À BIENTÔT                      |
|                    .oooO                            |
|                    (   )   Oooo.                    |
+---------------------\ (----(   )--------------------+
                       \_)    ) /
                             (_/
'
		exit 2
	;;
	* ) echo 'Veuillez entrer un choix valide' ;;
esac
done


exit 0
&lt;/code&gt;

[[Category:Scripts]]</text>
      <sha1>5nxoz3s73571dnrb0fbkqvuuy3o7i7s</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2731</id>
      <parentid>2730</parentid>
      <timestamp>2011-02-28T15:18:05Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <text xml:space="preserve" bytes="8748">Ce script doit permettre de graver en ligne de commande des disques de données, des images iso, et si possible de créer des cd audio (Cette dernière fonction n'est pas prête pour l'instant).

Attention, le script est en cours d'élaboration.

Surtout ne pas hésiter à améliorer le script, il est sur le wiki rien que pour ça.

&lt;code bash&gt;
#!/bin/sh
#-----------------------------------------------#
# Script pour graver en console plus facilement #
# nécessite genisoimage, wodim,                 #
# éventuellement oggdec, sox,  lame, flac...    #
# pour les conversions de fichiers audio        #
#-----------------------------------------------#

#------------------ Reste à Faire : -----------------------------#
# Préciser les dépendances                                       #
# Ajouter une fonction pour vérifier que les dépendances sont là #
# Revoir la gravure de fichiers audio                            #
# Une meilleure vérification des données                         #
#----------------------------------------------------------------#

set -eu

LISTE=/tmp/liste
LISTEAGRAVER=/tmp/liste_graver
TMPDIR=/tmp/gravure
GRAVURE=&quot;1&quot;

ERR_INTEGR=101

choix_fichier_ () {

# Fonction qui va choisir le fichier
# on quitte lorsque l'on rentre la valeur 0
# On enregistre une liste des fichiers, le choix fait est reporté
# dans la LISTEAGRAVER
	case $1 in
		&quot;iso&quot; )

		;;
		&quot;donnees&quot; )
		    while [ &quot;$FICHIER&quot; != 0 ]; do
                       
		       ls -a -p -X | sed = | sed 'N;s/\n/\t/' &gt; $LISTE
		       cat $LISTE
		       echo &quot;------------------------------------------&quot;
		       echo  &quot;0 \t J'ai fini! \n&quot;
		       read CHOIX
		       if [ &quot;$CHOIX&quot; = 0 ]; then
			  break
		       else
			  FICHIER=$(echo &quot;$PWD/$(sed -n ${CHOIX}p $LISTE | awk -F&quot;\t&quot; '{print $2}')&quot;)
			  # Le nom du fichier est enregistré dans /tmp/liste_graver
			  #S'il s'agit d'un répertoire, on propose de l'ajouter à la liste, ou d'aller dedans
		   
			  case $FICHIER in
			     */ | .. ) echo &quot;1) Changer de répertoire : $FICHIER&quot;
				      echo &quot;2) Ajouter ce répertoire pour le graver&quot;
				      read R
				      case $R in
					 1 ) cd $FICHIER ;;
					 2 ) echo $FICHIER &gt;&gt; $LISTEAGRAVER ;;
				      esac
				      ;;
			    
			    
			     *) echo $FICHIER &gt;&gt; $LISTEAGRAVER ;;
			 esac
		      fi      
		   done
		;;
	esac
}


edite_ () {
   while [ &quot;$C&quot; != 0 ]; do
	   echo  &quot;Voici la liste des fichiers à graver : \n&quot;
	   cat $LISTEAGRAVER
	   echo  &quot;\n \n&quot;
	   echo  &quot;1)\t Ajouter des fichiers &quot;
	   echo  &quot;2)\t Enlever des fichiers&quot;
	   echo  &quot;0)\t J'ai fini! &quot;
	   read C
	   case $C in
		1 ) choix_fichier_ ;;
		0 ) break ;;
		2 ) echo &quot;Que supprimer?&quot;
			cat $LISTEAGRAVER | sed = | sed 'N;s/\n/\t/'
			read SUPPR
			if  [ $SUPPR -le $(cat $LISTEAGRAVER |wc -l) ] &amp;&amp; [ &quot;$SUPPR&quot; != &quot;&quot; ] ; then
				sed ${SUPPR}d $LISTEAGRAVER &gt; /tmp/listetmp
				mv /tmp/listetmp $LISTEAGRAVER
			else
				echo &quot;*** Erreur, ce numéro n'est pas disponible ***&quot;
				echo &quot;*** Entrez un choix valide ***&quot;
			fi
			;;
		* ) echo &quot;Veuillez entrer un choix valide&quot; ;;
	   esac
   
   done
}

# controle de l'image
# Retourne 0 si le CD gravé est conforme à l'image ISO,
# 1 sinon.
verif_integrite_ () {
   MD5_ISO=$(md5sum &quot;$1&quot; | awk '{print $1}')
   echo &quot;md5sum de l'iso : $MD5_ISO&quot; &gt;&amp;2
   MD5_CD=$(md5sum /dev/scd0 | awk '{print $1}')
   echo &quot;md5sum du cd gravé: $MD5_CD&quot; &gt;&amp;2

   # Donne à la fonction sa valeur de retour
   [ &quot;$MD5_ISO&quot; -eq &quot;$MD5_CD&quot; ]
}

grave_iso_ () {
   echo &quot;Choisissez l'image iso à graver&quot;
   choix_fichier_ &quot;iso&quot;
   
   if [ -n &quot;$(cat $LISTEAGRAVER)&quot; ]; then
      echo &quot;on va graver $(cat $LISTEAGRAVER)&quot;
      echo  &quot;L'image à graver fait: \t $(du -h $(cat $LISTEAGRAVER) | awk '{print $1}')&quot;
      echo  &quot;Assurez-vous que votre cd/dvd est assez grand&quot;
      echo &quot;On y va? (O/N)&quot;
      read CHOIX
      case $CHOIX in
         O | o )
            wodim -v dev=/dev/scd0 -data &quot;$(cat $LISTEAGRAVER)&quot;
            if ! verif_integrite_ &quot;$(cat $LISTEAGRAVER)&quot;; then
              echo &quot;Erreur: echec lors de la vérification d'intégrité&quot; &gt;&amp;2
              exit $ERR_INTEGR
            fi
            ;;
         N | n ) echo &quot;annulation de la gravure&quot;
            ;;
   esac
   
   fi
}
grave_donnees_ () {
	choix_fichier_ &quot;donnees&quot;
	echo &quot;on édite la liste qui est à graver :&quot;
	edite_
	echo &quot;Quel est le nom du volume?&quot;
	read NOMVOLUME
	if [ -n &quot;$(cat $LISTEAGRAVER)&quot; ]; then
	###on lance la gravure
		echo &quot;Creation de l'image à graver&quot;
		genisoimage -R -r -J --hide-rr-moved -V &quot;$NOMVOLUME&quot; -o /tmp/$NOMVOLUME.iso $(cat $LISTEAGRAVER)
		if [ ! -f /tmp/$NOMVOLUME.iso ]; then
			echo &quot;Erreur lors de la création de l'image&quot;
			exit 666
		fi
		#on affiche un avertissement sur la taille du fichier à graver
		echo  &quot;L'image à graver fait: \t $(du -h /tmp/$NOMVOLUME.iso | awk '{print $1}')&quot;
		echo  &quot;Assurez-vous que votre cd/dvd est assez grand&quot;
		echo &quot;On y va? (O/N)&quot;
		read CHOIX
		case $CHOIX in
			O | o )
			    wodim -v dev=/dev/scd0 -data /tmp/$NOMVOLUME.iso
			    if ! verif_integrite_ /tmp/$NOMVOLUME.iso; then
                              echo &quot;Erreur: echec lors de la vérification d'intégrité&quot; &gt;&amp;2
                              exit $ERR_INTEGR
                            fi
			;;
			N | n ) echo &quot;annulation de la gravure&quot;
			;;
		esac
	fi
}

grave_audio_ () {
   mkdir -p $TMPDIR
   [ -d $TMPDIR ]
    if [ $? = 0 ]; then
      choix_fichier_
      edite_
      echo  &quot;\n \n On va maintenant convertir les fichiers pour les graver&quot;
      cd $TMPDIR
      cp &quot;$(cat $LISTEAGRAVER )&quot; $TMPDIR
      for i in *.[Mm][Pp]3; do mv &quot;$i&quot; `echo $i | tr '[A-Z]' '[a-z]'`; done
      for i in *.MP3; do mv &quot;$i&quot; &quot;`basename &quot;$i&quot; .MP3`.mp3&quot;; done
      echo &quot;conversion des mp3 en wav&quot;
      for i in *.mp3; do
         lame --verbose --decode &quot;$i&quot; &quot;${i/%.mp3/.wav}&quot;;
      done
      echo &quot;conversion des ogg en wav&quot;
      oggdec *.ogg
      echo &quot;conversion des flac en wav&quot;
      flac --decode *.flac
      echo &quot;normalisation&quot;
      normalize-audio --mix *.wav
      for i in *.wav ; do
         echo &quot;Traitement de ${i}&quot;
         sox &quot;$i&quot; &quot;${i/%.wav/.cdr}&quot;
      done   
#on affiche un avertissement sur la taille du fichier à graver
      echo  &quot;Les données à graver font: \t $(du -h $TMPDIR | tail -n1 | awk '{print $1}')&quot;
      echo  &quot;Assurez-vous que votre cd est assez grand&quot;
      echo &quot;On y va? (O/N)&quot;
      read CHOIX
      case $CHOIX in
         O | o )

         echo  &quot; \tOn va maintenant graver!!! \n \n &quot;
         sleep 2
         wodim -v -dev=/dev/scd0 -pad -dao -audio *.cdr
               ;;
            N | n ) echo &quot;annulation de la gravure&quot;
         ;;
      esac
      
      
   fi
}

efface_disque_ () {
	while [ &quot;$EFFACEMENT&quot; != 0 ]; do
		echo &quot;Comment souhaitez-vous effacer le disque?&quot;
		echo  &quot;1 \t Effacement complet&quot;
		echo  &quot;2 \t Effacement rapide &quot;
		echo  &quot;0 \t Annuler &quot;
		read EFFACEMENT

		case $EFFACEMENT in
			2 )
				echo &quot;C'est parti pour un effacement rapide :&quot;
				sleep 1
				wodim blank=fast
				break
			;;
			1 )
				echo &quot;C'est parti pour un effacement complet :&quot;
				sleep 1
				wodim blank=all
				break
			;;
			* ) echo &quot;Veuillez entrer un choix valide&quot; ;;
		esac
	done
}

echo &quot;                     |//&quot;
echo &quot;                    (o o)&quot;
echo &quot;+-------------oOO----(_)---------------------+&quot;
echo &quot;|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|&quot;
echo &quot;|~~~~~~~~~~~~~~~~ ¤ BONJOUR ! ¤ ~~~~~~~~~~~~~|&quot;
echo &quot;|~~~~~ ¤ Ce Script va vous permettre ¤ ~~~~~~|&quot;
echo &quot;|~~~~~~~~~ ¤ de graver facilement ¤ ~~~~~~~~~|&quot;
echo &quot;|~~~~~~~~~~~~~~ ¤ vos données ¤ ~~~~~~~~~~~~~|&quot;
echo &quot;--------------------oOO----------------------+&quot;
echo &quot;                   |__|__|&quot;
echo &quot;                    || ||&quot;
echo &quot;                   ooO Ooo&quot;
echo &quot; \n \n \n &quot;

while [ &quot;$GRAVURE&quot; != 0 ]; do
	echo  &quot;Que souhaitez-vous faire? (Entrez le numéro de votre choix) \n \n&quot;
	echo  &quot;1 \t Un disque de données &quot;
	#echo  &quot;2 \t Un disque audio &quot;
	echo  &quot;2 \t Graver une image iso &quot;
	echo  &quot;3 \t Effacer le disque &quot;
	echo  &quot;0 \t Quitter &quot;
	read GRAVURE

case $GRAVURE in
	1 ) grave_donnees_ ;;
	#2 ) grave_audio_ ;;
	2 ) grave_iso_ ;;
	3 ) efface_disque_ ;;
	0 ) 
		echo &quot;
                         ''~''
                        ( o o )
+------------------.oooO--(_)--Oooo.------------------+
|                                                     |
|                      À BIENTÔT                      |
|                    .oooO                            |
|                    (   )   Oooo.                    |
+---------------------\ (----(   )--------------------+
                       \_)    ) /
                             (_/
&quot;
		exit 2 
	;;
	* ) echo &quot;Veuillez entrer un choix valide&quot; ;;
esac
done


exit 0
&lt;/code&gt;

[[Category:Scripts]]</text>
      <sha1>7rd2r93rbqz45buthf5rlg538u4b4oq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2732</id>
      <parentid>2731</parentid>
      <timestamp>2011-02-28T15:23:01Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <text xml:space="preserve" bytes="8575">Ce script doit permettre de graver en ligne de commande des disques de données, des images iso, et si possible de créer des cd audio (Cette dernière fonction n'est pas prête pour l'instant).

Attention, le script est en cours d'élaboration.

Surtout ne pas hésiter à améliorer le script, il est sur le wiki rien que pour ça.

&lt;code bash&gt;
#!/bin/sh
#-----------------------------------------------#
# Script pour graver en console plus facilement #
# nécessite genisoimage, wodim,                 #
# éventuellement oggdec, sox,  lame, flac...    #
# pour les conversions de fichiers audio        #
#-----------------------------------------------#

#------------------ Reste à Faire : -----------------------------#
# Préciser les dépendances                                       #
# Ajouter une fonction pour vérifier que les dépendances sont là #
# Revoir la gravure de fichiers audio                            #
# Une meilleure vérification des données                         #
#----------------------------------------------------------------#

set -eu

LISTE=/tmp/liste
LISTEAGRAVER=/tmp/liste_graver
TMPDIR=/tmp/gravure
GRAVURE='1'

ERR_INTEGR=101

choix_fichier_ () {
  local FICHIER=''

# Fonction qui va choisir le fichier
# on quitte lorsque l'on rentre la valeur 0
# On enregistre une liste des fichiers, le choix fait est reporté
# dans la LISTEAGRAVER
	case &quot;$1&quot; in
		'iso' )

		;;
		'donnees' )
		    while [ &quot;$FICHIER&quot; != 0 ]; do

           ls -ApX | nl -n ln | tee $LISTE
		       echo &quot;------------------------------------------&quot;
		       echo  &quot;0 \t J'ai fini! \n&quot;
		       read CHOIX
		       if [ &quot;$CHOIX&quot; = 0 ]; then
			  break
		       else
			  FICHIER=$(echo &quot;$PWD/$(sed -n ${CHOIX}p $LISTE | awk -F&quot;\t&quot; '{print $2}')&quot;)
			  # Le nom du fichier est enregistré dans /tmp/liste_graver
			  #S'il s'agit d'un répertoire, on propose de l'ajouter à la liste, ou d'aller dedans

			  case &quot;$FICHIER&quot; in
			     */ | .. ) echo &quot;1) Changer de répertoire : $FICHIER&quot;
				      echo '2) Ajouter ce répertoire pour le graver'
				      read R
				      case $R in
					 1 ) cd &quot;$FICHIER&quot; ;;
					 2 ) echo &quot;$FICHIER&quot; &gt;&gt; &quot;$LISTEAGRAVER&quot; ;;
				      esac
				      ;;


			     *) echo &quot;$FICHIER&quot; &gt;&gt; &quot;$LISTEAGRAVER&quot; ;;
			 esac
		      fi
		   done
		;;
	esac
}


edite_ () {
  local C=1
  while [ &quot;$C&quot; != 0 ]; do
	  echo  &quot;Voici la liste des fichiers à graver : \n&quot;
	  cat &quot;$LISTEAGRAVER&quot;
	  echo  &quot;\n \n&quot;
	  echo  &quot;1)\t Ajouter des fichiers &quot;
	  echo  &quot;2)\t Enlever des fichiers&quot;
	  echo  &quot;0)\t J'ai fini! &quot;
	  read C
	  case $C in
		  1 ) choix_fichier_ ;;
		  0 ) break ;;
		  2 ) echo 'Que supprimer?'
        ln -n ln &quot;$LISTEAGRAVER&quot;
			  read SUPPR
			  if  [ &quot;$SUPPR&quot; -le $(wc -l &lt; &quot;$LISTEAGRAVER&quot;) ] &amp;&amp; [ &quot;$SUPPR&quot; != &quot;&quot; ] ; then
				  sed ${SUPPR}d &quot;$LISTEAGRAVER&quot; &gt; /tmp/listetmp
				  mv /tmp/listetmp $LISTEAGRAVER
			  else
				  echo &quot;*** Erreur, ce numéro n'est pas disponible ***&quot;
				  echo '*** Entrez un choix valide ***'
			  fi
			  ;;
		  * ) echo 'Veuillez entrer un choix valide' ;;
	  esac

   done
}

# controle de l'image
# Retourne 0 si le CD gravé est conforme à l'image ISO,
# 1 sinon.
verif_integrite_ () {
   local MD5_ISO=$(md5sum &quot;$1&quot; | awk '{print $1}')
   echo &quot;md5sum de l'iso : $MD5_ISO&quot; &gt;&amp;2
   local MD5_CD=$(md5sum /dev/scd0 | awk '{print $1}')
   echo &quot;md5sum du cd gravé: $MD5_CD&quot; &gt;&amp;2

   # Donne à la fonction sa valeur de retour
   [ &quot;$MD5_ISO&quot; -eq &quot;$MD5_CD&quot; ]
}

grave_iso_ () {
   echo &quot;Choisissez l'image iso à graver&quot;
   choix_fichier_ 'iso'

   if [ -n &quot;$(cat $LISTEAGRAVER)&quot; ]; then
      echo &quot;on va graver $(cat $LISTEAGRAVER)&quot;
      echo  &quot;L'image à graver fait: \t $(du -h $(cat $LISTEAGRAVER) | awk '{print $1}')&quot;
      echo  'Assurez-vous que votre cd/dvd est assez grand'
      echo 'On y va? (O/N)'
      read CHOIX
      case $CHOIX in
         O | o )
            wodim -v dev=/dev/scd0 -data &quot;$(cat $LISTEAGRAVER)&quot;
            if ! verif_integrite_ &quot;$(cat $LISTEAGRAVER)&quot;; then
              echo &quot;Erreur: echec lors de la vérification d'intégrité&quot; &gt;&amp;2
              exit $ERR_INTEGR
            fi
            ;;
         N | n ) echo &quot;annulation de la gravure&quot;
            ;;
   esac

   fi
}

grave_donnees_ () {
	choix_fichier_ 'donnees'
	echo 'on édite la liste qui est à graver :'
	edite_
	echo &quot;Quel est le nom du volume?&quot;
	read NOMVOLUME
	if [ -n &quot;$(cat $LISTEAGRAVER)&quot; ]; then
	###on lance la gravure
		echo &quot;Creation de l'image à graver&quot;
		genisoimage -R -r -J --hide-rr-moved -V &quot;$NOMVOLUME&quot; -o /tmp/$NOMVOLUME.iso $(cat $LISTEAGRAVER)
		if [ ! -f /tmp/$NOMVOLUME.iso ]; then
			echo &quot;Erreur lors de la création de l'image&quot;
			exit 666
		fi
		#on affiche un avertissement sur la taille du fichier à graver
		echo  &quot;L'image à graver fait: \t $(du -h /tmp/$NOMVOLUME.iso | awk '{print $1}')&quot;
		echo  &quot;Assurez-vous que votre cd/dvd est assez grand&quot;
		echo &quot;On y va? (O/N)&quot;
		read CHOIX
		case $CHOIX in
			O | o )
			    wodim -v dev=/dev/scd0 -data /tmp/$NOMVOLUME.iso
			    if ! verif_integrite_ /tmp/$NOMVOLUME.iso; then
                              echo &quot;Erreur: echec lors de la vérification d'intégrité&quot; &gt;&amp;2
                              exit $ERR_INTEGR
                            fi
			;;
			N | n ) echo &quot;annulation de la gravure&quot;
			;;
		esac
	fi
}

grave_audio_ () {
   mkdir -p $TMPDIR
   [ -d $TMPDIR ]
    if [ $? = 0 ]; then
      choix_fichier_
      edite_
      echo  &quot;\n \n On va maintenant convertir les fichiers pour les graver&quot;
      cd $TMPDIR
      cp &quot;$(cat $LISTEAGRAVER )&quot; $TMPDIR
      echo &quot;conversion des mp3 en wav&quot;
      for i in *.[Mm][Pp]3; do
         lame --verbose --decode &quot;$i&quot; &quot;${i%.mp3}.wav&quot;;
      done
      echo &quot;conversion des ogg en wav&quot;
      oggdec *.ogg
      echo &quot;conversion des flac en wav&quot;
      flac --decode *.flac
      echo &quot;normalisation&quot;
      normalize-audio --mix *.wav
      for i in *.wav ; do
         echo &quot;Traitement de ${i}&quot;
         sox &quot;$i&quot; &quot;${i/%.wav/.cdr}&quot;
      done
#on affiche un avertissement sur la taille du fichier à graver
      echo &quot;Les données à graver font: \t $(du -sh $TMPDIR | awk '{print $1}')&quot;
      echo 'Assurez-vous que votre cd est assez grand'
      echo 'On y va? (O/N)'
      read CHOIX
      case $CHOIX in
         O | o )

         echo  &quot; \tOn va maintenant graver!!! \n \n &quot;
         sleep 2
         wodim -v -dev=/dev/scd0 -pad -dao -audio *.cdr
               ;;
            N | n ) echo 'annulation de la gravure'
         ;;
      esac


   fi
}

efface_disque_ () {
  local EFFACEMENT=1
	while [ &quot;$EFFACEMENT&quot; != 0 ]; do
		echo &quot;Comment souhaitez-vous effacer le disque?&quot;
		echo  &quot;1 \t Effacement complet&quot;
		echo  &quot;2 \t Effacement rapide &quot;
		echo  &quot;0 \t Annuler &quot;
		read EFFACEMENT

		case $EFFACEMENT in
			2 )
				echo &quot;C'est parti pour un effacement rapide :&quot;
				sleep 1
				wodim blank=fast
				break
			;;
			1 )
				echo &quot;C'est parti pour un effacement complet :&quot;
				sleep 1
				wodim blank=all
				break
			;;
			* ) echo 'Veuillez entrer un choix valide' ;;
		esac
	done
}

echo '                     |//'
echo '                    (o o)'
echo '+-------------oOO----(_)---------------------+'
echo '|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|'
echo '|~~~~~~~~~~~~~~~~ ¤ BONJOUR ! ¤ ~~~~~~~~~~~~~|'
echo '|~~~~~ ¤ Ce Script va vous permettre ¤ ~~~~~~|'
echo '|~~~~~~~~~ ¤ de graver facilement ¤ ~~~~~~~~~|'
echo '|~~~~~~~~~~~~~~ ¤ vos données ¤ ~~~~~~~~~~~~~|'
echo '--------------------oOO----------------------+'
echo '                   |__|__|'
echo '                    || ||'
echo '                   ooO Ooo'
echo &quot; \n \n \n &quot;

while [ &quot;$GRAVURE&quot; != 0 ]; do
	echo  &quot;Que souhaitez-vous faire? (Entrez le numéro de votre choix) \n \n&quot;
	echo  &quot;1 \t Un disque de données &quot;
	#echo  &quot;2 \t Un disque audio &quot;
	echo  &quot;2 \t Graver une image iso &quot;
	echo  &quot;3 \t Effacer le disque &quot;
	echo  &quot;0 \t Quitter &quot;
	read GRAVURE

case $GRAVURE in
	1 ) grave_donnees_ ;;
	#2 ) grave_audio_ ;;
	2 ) grave_iso_ ;;
	3 ) efface_disque_ ;;
	0 )
		echo '
                         ''~''
                        ( o o )
+------------------.oooO--(_)--Oooo.------------------+
|                                                     |
|                      À BIENTÔT                      |
|                    .oooO                            |
|                    (   )   Oooo.                    |
+---------------------\ (----(   )--------------------+
                       \_)    ) /
                             (_/
'
		exit 2
	;;
	* ) echo 'Veuillez entrer un choix valide' ;;
esac
done


exit 0
&lt;/code&gt;

[[Category:Scripts]]</text>
      <sha1>d2m04b64gog4qfwjxdbqn0vh2g9j76c</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2733</id>
      <parentid>2732</parentid>
      <timestamp>2011-02-28T15:31:59Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <text xml:space="preserve" bytes="8416">Ce script doit permettre de graver en ligne de commande des disques de données, des images iso, et si possible de créer des cd audio (Cette dernière fonction n'est pas prête pour l'instant).

Attention, le script est en cours d'élaboration.

Surtout ne pas hésiter à améliorer le script, il est sur le wiki rien que pour ça.

&lt;code bash&gt;
#!/bin/sh
#-----------------------------------------------#
# Script pour graver en console plus facilement #
# nécessite genisoimage, wodim,                 #
# éventuellement oggdec, sox,  lame, flac...    #
# pour les conversions de fichiers audio        #
#-----------------------------------------------#

#------------------ Reste à Faire : -----------------------------#
# Préciser les dépendances                                       #
# Ajouter une fonction pour vérifier que les dépendances sont là #
# Revoir la gravure de fichiers audio                            #
# Une meilleure vérification des données                         #
#----------------------------------------------------------------#

set -eu

LISTE=/tmp/liste
LISTEAGRAVER=/tmp/liste_graver
TMPDIR=/tmp/gravure
GRAVURE='1'

ERR_INTEGR=101

choix_fichier_ () {
  local FICHIER=''

# Fonction qui va choisir le fichier
# on quitte lorsque l'on rentre la valeur 0
# On enregistre une liste des fichiers, le choix fait est reporté
# dans la LISTEAGRAVER
  case &quot;$1&quot; in
    'iso' )

		;;
		'donnees' )
		  while [ &quot;$FICHIER&quot; != 0 ]; do

      ls -ApX | nl -n ln | tee $LISTE
		  echo &quot;------------------------------------------&quot;
		  echo  &quot;0 \t J'ai fini! \n&quot;
		  read CHOIX
		  if [ &quot;$CHOIX&quot; = 0 ]; then
			  break
		  else
			  FICHIER=$(echo &quot;$PWD/$(sed -n ${CHOIX}p $LISTE | awk -F&quot;\t&quot; '{print $2}')&quot;)
			  # Le nom du fichier est enregistré dans /tmp/liste_graver
			  #S'il s'agit d'un répertoire, on propose de l'ajouter à la liste, ou d'aller dedans

			  case &quot;$FICHIER&quot; in
          */ | .. ) echo &quot;1) Changer de répertoire : $FICHIER&quot;
				    echo '2) Ajouter ce répertoire pour le graver'
				    read R
				    case $R in
					    1 ) cd &quot;$FICHIER&quot; ;;
					    2 ) echo &quot;$FICHIER&quot; &gt;&gt; &quot;$LISTEAGRAVER&quot; ;;
				        esac
				      ;;
			        *) echo &quot;$FICHIER&quot; &gt;&gt; &quot;$LISTEAGRAVER&quot; ;;
			    esac
		    fi
		   done
		;;
	esac
}


edite_ () {
  local C=1
  while [ &quot;$C&quot; != 0 ]; do
	  echo  &quot;Voici la liste des fichiers à graver : \n&quot;
	  cat &quot;$LISTEAGRAVER&quot;
	  echo  &quot;\n \n&quot;
	  echo  &quot;1)\t Ajouter des fichiers &quot;
	  echo  &quot;2)\t Enlever des fichiers&quot;
	  echo  &quot;0)\t J'ai fini! &quot;
	  read C
	  case $C in
		  1 ) choix_fichier_ ;;
		  0 ) break ;;
		  2 ) echo 'Que supprimer?'
        ln -n ln &quot;$LISTEAGRAVER&quot;
			  read SUPPR
			  if  [ &quot;$SUPPR&quot; -le $(wc -l &lt; &quot;$LISTEAGRAVER&quot;) ] &amp;&amp; [ &quot;$SUPPR&quot; != &quot;&quot; ] ; then
				  sed ${SUPPR}d &quot;$LISTEAGRAVER&quot; &gt; /tmp/listetmp
				  mv /tmp/listetmp $LISTEAGRAVER
			  else
				  echo &quot;*** Erreur, ce numéro n'est pas disponible ***&quot;
				  echo '*** Entrez un choix valide ***'
			  fi
			  ;;
		  * ) echo 'Veuillez entrer un choix valide' ;;
	  esac

   done
}

# controle de l'image
# Retourne 0 si le CD gravé est conforme à l'image ISO,
# 1 sinon.
verif_integrite_ () {
  local MD5_ISO=$(md5sum &quot;$1&quot; | awk '{print $1}')
  echo &quot;md5sum de l'iso : $MD5_ISO&quot; &gt;&amp;2
  local MD5_CD=$(md5sum /dev/scd0 | awk '{print $1}')
  echo &quot;md5sum du cd gravé: $MD5_CD&quot; &gt;&amp;2

  # Donne à la fonction sa valeur de retour
  [ &quot;$MD5_ISO&quot; -eq &quot;$MD5_CD&quot; ]
}

grave_iso_ () {
  echo &quot;Choisissez l'image iso à graver&quot;
  choix_fichier_ 'iso'

  if [ -n &quot;$(cat $LISTEAGRAVER)&quot; ]; then
    echo &quot;on va graver $(cat $LISTEAGRAVER)&quot;
    echo  &quot;L'image à graver fait: \t $(du -h $(cat $LISTEAGRAVER) | awk '{print $1}')&quot;
    echo  'Assurez-vous que votre cd/dvd est assez grand'
    echo 'On y va? (O/N)'
    read CHOIX
    case $CHOIX in
      O | o )
        wodim -v dev=/dev/scd0 -data &quot;$(cat $LISTEAGRAVER)&quot;
        if ! verif_integrite_ &quot;$(cat $LISTEAGRAVER)&quot;; then
          echo &quot;Erreur: echec lors de la vérification d'intégrité&quot; &gt;&amp;2
          exit $ERR_INTEGR
        fi
        ;;
      N | n ) echo &quot;annulation de la gravure&quot;
        ;;
    esac
  fi
}

grave_donnees_ () {
	choix_fichier_ 'donnees'
	echo 'on édite la liste qui est à graver :'
	edite_
	echo &quot;Quel est le nom du volume?&quot;
	read NOMVOLUME
	if [ -n &quot;$(cat $LISTEAGRAVER)&quot; ]; then
	  ###on lance la gravure
		echo &quot;Creation de l'image à graver&quot;
		genisoimage -R -r -J --hide-rr-moved -V &quot;$NOMVOLUME&quot; -o /tmp/$NOMVOLUME.iso $(cat $LISTEAGRAVER)
		if [ ! -f /tmp/$NOMVOLUME.iso ]; then
			echo &quot;Erreur lors de la création de l'image&quot;
			exit 666
		fi
		#on affiche un avertissement sur la taille du fichier à graver
		echo  &quot;L'image à graver fait: \t $(du -h /tmp/$NOMVOLUME.iso | awk '{print $1}')&quot;
		echo  &quot;Assurez-vous que votre cd/dvd est assez grand&quot;
		echo &quot;On y va? (O/N)&quot;
		read CHOIX
		case $CHOIX in
			O | o )
			  wodim -v dev=/dev/scd0 -data /tmp/$NOMVOLUME.iso
			  if ! verif_integrite_ /tmp/$NOMVOLUME.iso; then
          echo &quot;Erreur: echec lors de la vérification d'intégrité&quot; &gt;&amp;2
          exit $ERR_INTEGR
        fi
			;;
			N | n ) echo &quot;annulation de la gravure&quot;
			;;
		esac
	fi
}

grave_audio_ () {
  mkdir -p $TMPDIR
  [ -d $TMPDIR ]
    if [ $? = 0 ]; then
      choix_fichier_
      edite_
      echo  &quot;\n \n On va maintenant convertir les fichiers pour les graver&quot;
      cd $TMPDIR
      cp &quot;$(cat $LISTEAGRAVER )&quot; $TMPDIR
      echo &quot;conversion des mp3 en wav&quot;
      for i in *.[Mm][Pp]3; do
        lame --verbose --decode &quot;$i&quot; &quot;${i%.mp3}.wav&quot;;
      done
      echo &quot;conversion des ogg en wav&quot;
      oggdec *.ogg
      echo &quot;conversion des flac en wav&quot;
      flac --decode *.flac
      echo &quot;normalisation&quot;
      normalize-audio --mix *.wav
      for i in *.wav ; do
        echo &quot;Traitement de ${i}&quot;
        sox &quot;$i&quot; &quot;${i/%.wav/.cdr}&quot;
      done
#on affiche un avertissement sur la taille du fichier à graver
      echo &quot;Les données à graver font: \t $(du -sh $TMPDIR | awk '{print $1}')&quot;
      echo 'Assurez-vous que votre cd est assez grand'
      echo 'On y va? (O/N)'
      read CHOIX
      case $CHOIX in
        O | o )
          echo  &quot; \tOn va maintenant graver!!! \n \n &quot;
          sleep 2
          wodim -v -dev=/dev/scd0 -pad -dao -audio *.cdr
        ;;
        N | n ) echo 'annulation de la gravure'
        ;;
      esac
   fi
}

efface_disque_ () {
  local EFFACEMENT=1
	while [ &quot;$EFFACEMENT&quot; != 0 ]; do
		echo &quot;Comment souhaitez-vous effacer le disque?&quot;
		echo  &quot;1 \t Effacement complet&quot;
		echo  &quot;2 \t Effacement rapide &quot;
		echo  &quot;0 \t Annuler &quot;
		read EFFACEMENT

		case $EFFACEMENT in
			2 )
				echo &quot;C'est parti pour un effacement rapide :&quot;
				sleep 1
				wodim blank=fast
				break
			;;
			1 )
				echo &quot;C'est parti pour un effacement complet :&quot;
				sleep 1
				wodim blank=all
				break
			;;
			* ) echo 'Veuillez entrer un choix valide' ;;
		esac
	done
}

echo '                     |//'
echo '                    (o o)'
echo '+-------------oOO----(_)---------------------+'
echo '|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|'
echo '|~~~~~~~~~~~~~~~~ ¤ BONJOUR ! ¤ ~~~~~~~~~~~~~|'
echo '|~~~~~ ¤ Ce Script va vous permettre ¤ ~~~~~~|'
echo '|~~~~~~~~~ ¤ de graver facilement ¤ ~~~~~~~~~|'
echo '|~~~~~~~~~~~~~~ ¤ vos données ¤ ~~~~~~~~~~~~~|'
echo '--------------------oOO----------------------+'
echo '                   |__|__|'
echo '                    || ||'
echo '                   ooO Ooo'
echo &quot; \n \n \n &quot;

while [ &quot;$GRAVURE&quot; != 0 ]; do
	echo  &quot;Que souhaitez-vous faire? (Entrez le numéro de votre choix) \n \n&quot;
	echo  &quot;1 \t Un disque de données &quot;
	#echo  &quot;2 \t Un disque audio &quot;
	echo  &quot;2 \t Graver une image iso &quot;
	echo  &quot;3 \t Effacer le disque &quot;
	echo  &quot;0 \t Quitter &quot;
	read GRAVURE

case $GRAVURE in
	1 ) grave_donnees_ ;;
	#2 ) grave_audio_ ;;
	2 ) grave_iso_ ;;
	3 ) efface_disque_ ;;
	0 )
		echo '
                         ''~''
                        ( o o )
+------------------.oooO--(_)--Oooo.------------------+
|                                                     |
|                      À BIENTÔT                      |
|                    .oooO                            |
|                    (   )   Oooo.                    |
+---------------------\ (----(   )--------------------+
                       \_)    ) /
                             (_/
'
		exit 2
	;;
	* ) echo 'Veuillez entrer un choix valide' ;;
esac
done


exit 0
&lt;/code&gt;

[[Category:Scripts]]</text>
      <sha1>5ud717o2b7gt1h38o00qectiqwyhc19</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2734</id>
      <parentid>2733</parentid>
      <timestamp>2011-02-28T18:10:22Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <text xml:space="preserve" bytes="8524">Ce script doit permettre de graver en ligne de commande des disques de données, des images iso, et si possible de créer des cd audio (Cette dernière fonction n'est pas prête pour l'instant).

Attention, le script est en cours d'élaboration (les tests positifs ont été réalisé en bash).

Surtout ne pas hésiter à améliorer le script, il est sur le wiki rien que pour ça.

&lt;code bash&gt;
#!/bin/sh
#-----------------------------------------------#
# Script pour graver en console plus facilement #
# nécessite genisoimage, wodim,                 #
# éventuellement oggdec, sox,  lame, flac...    #
# pour les conversions de fichiers audio        #
#-----------------------------------------------#

#------------------ Reste à Faire : -----------------------------#
# Préciser les dépendances                                       #
# Ajouter une fonction pour vérifier que les dépendances sont là #
# Revoir la gravure de fichiers audio                            #
# Une meilleure vérification des données                         #
#----------------------------------------------------------------#

set -eu

LISTE=/tmp/liste
LISTEAGRAVER=/tmp/liste_graver
TMPDIR=/tmp/gravure
GRAVURE='1'

ERR_INTEGR=101

choix_fichier_ () {
  local FICHIER=''

# Fonction qui va choisir le fichier
# on quitte lorsque l'on rentre la valeur 0
# On enregistre une liste des fichiers, le choix fait est reporté
# dans la LISTEAGRAVER
  case &quot;$1&quot; in
    'iso' )

		;;
		'donnees' )
      echo 'Choisir la liste des fichiers à ajouter :'
		  while [ &quot;$FICHIER&quot; != 0 ]; do

      ls -ApX | nl -n ln | tee &quot;$LISTE&quot;
		  echo '------------------------------------------'
		  echo  &quot;0 \t J'ai fini! \n&quot;
		  read CHOIX
		  if [ &quot;$CHOIX&quot; = 0 ]; then
			  break
		  else
			  FICHIER=$(echo &quot;$PWD/$(sed -n ${CHOIX}p $LISTE | awk -F&quot;\t&quot; '{print $2}')&quot;)
			  # Le nom du fichier est enregistré dans /tmp/liste_graver
			  #S'il s'agit d'un répertoire, on propose de l'ajouter à la liste, ou d'aller dedans

			  case &quot;$FICHIER&quot; in
          */ | .. ) echo &quot;1) Changer de répertoire : $FICHIER&quot;
				    echo '2) Ajouter ce répertoire pour le graver'
				    read R
				    case $R in
					    1 ) cd &quot;$FICHIER&quot; ;;
					    2 ) echo &quot;$FICHIER&quot; &gt;&gt; &quot;$LISTEAGRAVER&quot; ;;
				        esac
				      ;;
			        *) echo &quot;$FICHIER&quot; &gt;&gt; &quot;$LISTEAGRAVER&quot; ;;
			    esac
		    fi
		   done
		;;
	esac
}


edite_ () {
  local C=1
  while [ &quot;$C&quot; != 0 ]; do
	  echo  &quot;Voici la liste des fichiers à graver : \n&quot;
	  cat &quot;$LISTEAGRAVER&quot;
	  echo  &quot;\n \n&quot;
	  echo  &quot;1)\t Ajouter des fichiers &quot;
	  echo  &quot;2)\t Enlever des fichiers&quot;
	  echo  &quot;0)\t J'ai fini! &quot;
	  read C
	  case $C in
		  1 ) choix_fichier_ ;;
		  0 ) break ;;
		  2 ) echo 'Que supprimer?'
        nl -n ln &quot;$LISTEAGRAVER&quot;
			  read SUPPR
			  if  [ &quot;$SUPPR&quot; -le $(wc -l &lt; &quot;$LISTEAGRAVER&quot;) ] &amp;&amp; [ &quot;$SUPPR&quot; != &quot;&quot; ] ; then
				  sed ${SUPPR}d &quot;$LISTEAGRAVER&quot; &gt; /tmp/listetmp
				  mv /tmp/listetmp $LISTEAGRAVER
			  else
				  echo &quot;*** Erreur, ce numéro n'est pas disponible ***&quot;
				  echo '*** Entrez un choix valide ***'
			  fi
			  ;;
		  * ) echo 'Veuillez entrer un choix valide' ;;
	  esac

   done
}

# controle de l'image
# Retourne 0 si le CD gravé est conforme à l'image ISO,
# 1 sinon.
verif_integrite_ () {
  local MD5_ISO=$(md5sum &quot;$1&quot; | awk '{print $1}')
  echo &quot;md5sum de l'iso : $MD5_ISO&quot; &gt;&amp;2
  local MD5_CD=$(md5sum /dev/scd0 | awk '{print $1}')
  echo &quot;md5sum du cd gravé: $MD5_CD&quot; &gt;&amp;2

  # Donne à la fonction sa valeur de retour
  [ &quot;$MD5_ISO&quot; -eq &quot;$MD5_CD&quot; ]
}

grave_iso_ () {
  echo &quot;Choisissez l'image iso à graver&quot;
  choix_fichier_ 'iso'

  if [ -n &quot;$(cat $LISTEAGRAVER)&quot; ]; then
    echo &quot;on va graver $(cat $LISTEAGRAVER)&quot;
    echo  &quot;L'image à graver fait: \t $(du -h $(cat $LISTEAGRAVER) | awk '{print $1}')&quot;
    echo  'Assurez-vous que votre cd/dvd est assez grand'
    echo 'On y va? (O/N)'
    read CHOIX
    case $CHOIX in
      O | o )
        wodim -v dev=/dev/scd0 -data &quot;$(cat $LISTEAGRAVER)&quot;
        if ! verif_integrite_ &quot;$(cat $LISTEAGRAVER)&quot;; then
          echo &quot;Erreur: echec lors de la vérification d'intégrité&quot; &gt;&amp;2
          exit $ERR_INTEGR
        fi
        ;;
      N | n ) echo &quot;annulation de la gravure&quot;
        ;;
    esac
  fi
}

grave_donnees_ () {
	choix_fichier_ 'donnees'
	echo 'on édite la liste qui est à graver :'
	edite_
	echo 'Quel est le nom du volume ?'
	read NOMVOLUME
	if [ -n &quot;$(cat $LISTEAGRAVER)&quot; ]; then
	  ###on lance la gravure
		echo &quot;Creation de l'image à graver&quot;
		genisoimage -R -r -J --hide-rr-moved -V &quot;$NOMVOLUME&quot; -o /tmp/$NOMVOLUME.iso $(cat $LISTEAGRAVER)
		if [ ! -f /tmp/$NOMVOLUME.iso ]; then
			echo &quot;Erreur lors de la création de l'image&quot;
			exit 666
		fi
		#on affiche un avertissement sur la taille du fichier à graver
		echo  &quot;L'image à graver fait: \t $(du -h /tmp/$NOMVOLUME.iso | awk '{print $1}')&quot;
		echo  &quot;Assurez-vous que votre cd/dvd est assez grand&quot;
		echo &quot;On y va? (O/N)&quot;
		read CHOIX
		case $CHOIX in
			O | o )
			  wodim -v dev=/dev/scd0 -data /tmp/$NOMVOLUME.iso
			  if ! verif_integrite_ /tmp/$NOMVOLUME.iso; then
          echo &quot;Erreur: echec lors de la vérification d'intégrité&quot; &gt;&amp;2
          exit $ERR_INTEGR
        fi
			;;
			N | n ) echo &quot;annulation de la gravure&quot;
			;;
		esac
	fi
}

grave_audio_ () {
  mkdir -p $TMPDIR
  [ -d $TMPDIR ]
    if [ $? = 0 ]; then
      choix_fichier_
      edite_
      echo  &quot;\n \n On va maintenant convertir les fichiers pour les graver&quot;
      cd $TMPDIR
      cp &quot;$(cat $LISTEAGRAVER )&quot; $TMPDIR
      echo &quot;conversion des mp3 en wav&quot;
      for i in *.[Mm][Pp]3; do
        lame --verbose --decode &quot;$i&quot; &quot;${i%.mp3}.wav&quot;;
      done
      echo &quot;conversion des ogg en wav&quot;
      oggdec *.ogg
      echo &quot;conversion des flac en wav&quot;
      flac --decode *.flac
      echo &quot;normalisation&quot;
      normalize-audio --mix *.wav
      for i in *.wav ; do
        echo &quot;Traitement de ${i}&quot;
        sox &quot;$i&quot; &quot;${i/%.wav/.cdr}&quot;
      done
#on affiche un avertissement sur la taille du fichier à graver
      echo &quot;Les données à graver font: \t $(du -sh $TMPDIR | awk '{print $1}')&quot;
      echo 'Assurez-vous que votre cd est assez grand'
      echo 'On y va? (O/N)'
      read CHOIX
      case $CHOIX in
        O | o )
          echo  &quot; \tOn va maintenant graver!!! \n \n &quot;
          sleep 2
          wodim -v -dev=/dev/scd0 -pad -dao -audio *.cdr
        ;;
        N | n ) echo 'annulation de la gravure'
        ;;
      esac
   fi
}

efface_disque_ () {
  local EFFACEMENT=1
	while [ &quot;$EFFACEMENT&quot; != 0 ]; do
		echo &quot;Comment souhaitez-vous effacer le disque?&quot;
		echo  &quot;1 \t Effacement complet&quot;
		echo  &quot;2 \t Effacement rapide &quot;
		echo  &quot;0 \t Annuler &quot;
		read EFFACEMENT

		case $EFFACEMENT in
			2 )
				echo &quot;C'est parti pour un effacement rapide :&quot;
				sleep 1
				wodim blank=fast
				break
			;;
			1 )
				echo &quot;C'est parti pour un effacement complet :&quot;
				sleep 1
				wodim blank=all
				break
			;;
			* ) echo 'Veuillez entrer un choix valide' ;;
		esac
	done
}

echo '                     |//'
echo '                    (o o)'
echo '+-------------oOO----(_)---------------------+'
echo '|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|'
echo '|~~~~~~~~~~~~~~~~ ¤ BONJOUR ! ¤ ~~~~~~~~~~~~~|'
echo '|~~~~~ ¤ Ce Script va vous permettre ¤ ~~~~~~|'
echo '|~~~~~~~~~ ¤ de graver facilement ¤ ~~~~~~~~~|'
echo '|~~~~~~~~~~~~~~ ¤ vos données ¤ ~~~~~~~~~~~~~|'
echo '--------------------oOO----------------------+'
echo '                   |__|__|'
echo '                    || ||'
echo '                   ooO Ooo'
echo &quot; \n \n \n &quot;

while [ &quot;$GRAVURE&quot; != 0 ]; do
	echo  &quot;Que souhaitez-vous faire? (Entrez le numéro de votre choix) \n \n&quot;
	echo  &quot;1 \t Un disque de données &quot;
	#echo  &quot;2 \t Un disque audio &quot;
	echo  &quot;2 \t Graver une image iso &quot;
	echo  &quot;3 \t Effacer le disque &quot;
	echo  &quot;0 \t Quitter &quot;
	read GRAVURE

case $GRAVURE in
	1 ) grave_donnees_ ;;
	#2 ) grave_audio_ ;;
	2 ) grave_iso_ ;;
	3 ) efface_disque_ ;;
	0 )
		echo '
                         ''~''
                        ( o o )
+------------------.oooO--(_)--Oooo.------------------+
|                                                     |
|                      À BIENTÔT                      |
|                    .oooO                            |
|                    (   )   Oooo.                    |
+---------------------\ (----(   )--------------------+
                       \_)    ) /
                             (_/
'
		exit 2
	;;
	* ) echo 'Veuillez entrer un choix valide' ;;
esac
done


exit 0
&lt;/code&gt;

[[Category:Scripts]]</text>
      <sha1>lgfayiszdyer0e9i28dtx9tya7lro37</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Généalogie</title>
    <ns>0</ns>
    <id>636</id>
    <revision>
      <id>2759</id>
      <timestamp>2011-03-27T20:33:35Z</timestamp>
      <contributor>
        <username>François 29</username>
        <id>108</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « == lifelines == Logiciel libre s'utilisant en mode texte. Disponible dans les dépôts Debian   == Gramps == Logiciel libre écrit en Python, développé par une communauté ... »</comment>
      <text xml:space="preserve" bytes="1109">== lifelines ==
Logiciel libre s'utilisant en mode texte. Disponible dans les dépôts Debian


== Gramps ==
Logiciel libre écrit en Python, développé par une communauté de généalogistes. Disponible dans les dépôts Debian.

Site officiel : http://gramps-project.org/?lang=fr

Wiki : http://gramps-project.org/wiki/index.php?title=Gramps_3.0_Wiki_Manual/fr

Forum sur Geneanet (commercial) : http://www.geneanet.org/forum/index.php?board=55945.0

Liste de discussion (en anglais) : gramps-users@lists.sourceforge.net

== Geneweb ==
Logiciel libre écrit par Daniel de Roglaudre, de l'INRIA. Il fonctionne en mode web et intègre son propre serveur web. Disponible dans les dépôts Debian.

Site officiel : http://www.geneweb.org/
Forum sur Geneanet : http://www.geneanet.org/forum/GeneWeb-utilisation-off-line-85

== Ancestris ==
Logiciel libre écrit en Java. Il est disponible dans le dépôt Arvernes. Choisir la méthode d'installation pour Ubuntu. L'adresse du dépôt et sa clé sont disponibles sur le site d'Ancestris. 

Site officiel et wiki : http://www.arvernes.com/wiki/index.php/Ancestris</text>
      <sha1>68hv5kuq9rs9nvpeqfwfe1aaso8tnkr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2760</id>
      <parentid>2759</parentid>
      <timestamp>2011-03-27T21:03:05Z</timestamp>
      <contributor>
        <username>François 29</username>
        <id>108</id>
      </contributor>
      <text xml:space="preserve" bytes="1135">== lifelines ==
Logiciel libre s'utilisant en mode texte. Disponible dans les dépôts Debian


== Gramps ==
Logiciel libre écrit en Python, développé par une communauté de généalogistes. Disponible dans les dépôts Debian.

Site officiel : http://gramps-project.org/?lang=fr

Wiki : http://gramps-project.org/wiki/index.php?title=Gramps_3.0_Wiki_Manual/fr

Forum sur Geneanet (commercial) : http://www.geneanet.org/forum/index.php?board=55945.0

Liste de discussion (en anglais) : gramps-users@lists.sourceforge.net

== Geneweb ==
Logiciel libre écrit par Daniel de Roglaudre, de l'INRIA. Il fonctionne en mode web et intègre son propre serveur web. Disponible dans les dépôts Debian.

Site officiel : http://www.geneweb.org/
Forum sur Geneanet : http://www.geneanet.org/forum/GeneWeb-utilisation-off-line-85

== Ancestris ==
Logiciel libre écrit en Java. Il est disponible dans le dépôt Arvernes. Choisir la méthode d'installation pour Ubuntu. L'adresse du dépôt et sa clé sont disponibles sur le site d'Ancestris. 

Site officiel et wiki : http://www.arvernes.com/wiki/index.php/Ancestris

[[Catégorie:Logiciels]]</text>
      <sha1>hb03pe7b9gy2aa933x893lhrtp9omyf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2761</id>
      <parentid>2760</parentid>
      <timestamp>2011-03-27T21:03:54Z</timestamp>
      <contributor>
        <username>François 29</username>
        <id>108</id>
      </contributor>
      <text xml:space="preserve" bytes="1136">== lifelines ==
Logiciel libre s'utilisant en mode texte. Disponible dans les dépôts Debian


== Gramps ==
Logiciel libre écrit en Python, développé par une communauté de généalogistes. Disponible dans les dépôts Debian.

Site officiel : http://gramps-project.org/?lang=fr

Wiki : http://gramps-project.org/wiki/index.php?title=Gramps_3.0_Wiki_Manual/fr

Forum sur Geneanet (commercial) : http://www.geneanet.org/forum/index.php?board=55945.0

Liste de discussion (en anglais) : gramps-users@lists.sourceforge.net

== Geneweb ==
Logiciel libre écrit par Daniel de Roglaudre, de l'INRIA. Il fonctionne en mode web et intègre son propre serveur web. Disponible dans les dépôts Debian.

Site officiel : http://www.geneweb.org/

Forum sur Geneanet : http://www.geneanet.org/forum/GeneWeb-utilisation-off-line-85

== Ancestris ==
Logiciel libre écrit en Java. Il est disponible dans le dépôt Arvernes. Choisir la méthode d'installation pour Ubuntu. L'adresse du dépôt et sa clé sont disponibles sur le site d'Ancestris. 

Site officiel et wiki : http://www.arvernes.com/wiki/index.php/Ancestris

[[Catégorie:Logiciels]]</text>
      <sha1>mc30ok11zi27fjgyw8elere4yr8pxns</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2762</id>
      <parentid>2761</parentid>
      <timestamp>2011-03-27T21:53:46Z</timestamp>
      <contributor>
        <username>François 29</username>
        <id>108</id>
      </contributor>
      <comment>/* Geneweb */</comment>
      <text xml:space="preserve" bytes="1101">== lifelines ==
Logiciel libre s'utilisant en mode texte. Disponible dans les dépôts Debian


== Gramps ==
Logiciel libre écrit en Python, développé par une communauté de généalogistes. Disponible dans les dépôts Debian.

Site officiel : http://gramps-project.org/?lang=fr

Wiki : http://gramps-project.org/wiki/index.php?title=Gramps_3.0_Wiki_Manual/fr

Forum sur Geneanet (commercial) : http://www.geneanet.org/forum/index.php?board=55945.0

Liste de discussion (en anglais) : gramps-users@lists.sourceforge.net

== Geneweb ==
Logiciel libre écrit par Daniel de Roglaudre, de l'INRIA. Il fonctionne en mode web. Disponible dans les dépôts Debian.

Site officiel : http://www.geneweb.org/

Forum sur Geneanet : http://www.geneanet.org/forum/GeneWeb-utilisation-off-line-85

== Ancestris ==
Logiciel libre écrit en Java. Il est disponible dans le dépôt Arvernes. Choisir la méthode d'installation pour Ubuntu. L'adresse du dépôt et sa clé sont disponibles sur le site d'Ancestris. 

Site officiel et wiki : http://www.arvernes.com/wiki/index.php/Ancestris

[[Catégorie:Logiciels]]</text>
      <sha1>1g10nxwbtxasc4ey9xv4tws9rxdt4vl</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4383</id>
      <parentid>2762</parentid>
      <timestamp>2012-08-05T18:18:22Z</timestamp>
      <contributor>
        <username>François 29</username>
        <id>108</id>
      </contributor>
      <comment>/* Ancestris */</comment>
      <text xml:space="preserve" bytes="1158">== lifelines ==
Logiciel libre s'utilisant en mode texte. Disponible dans les dépôts Debian


== Gramps ==
Logiciel libre écrit en Python, développé par une communauté de généalogistes. Disponible dans les dépôts Debian.

Site officiel : http://gramps-project.org/?lang=fr

Wiki : http://gramps-project.org/wiki/index.php?title=Gramps_3.0_Wiki_Manual/fr

Forum sur Geneanet (commercial) : http://www.geneanet.org/forum/index.php?board=55945.0

Liste de discussion (en anglais) : gramps-users@lists.sourceforge.net

== Geneweb ==
Logiciel libre écrit par Daniel de Roglaudre, de l'INRIA. Il fonctionne en mode web. Disponible dans les dépôts Debian.

Site officiel : http://www.geneweb.org/

Forum sur Geneanet : http://www.geneanet.org/forum/GeneWeb-utilisation-off-line-85

== Ancestris ==
Logiciel libre écrit en Java. Il est disponible dans le dépôt Arvernes. Choisir la méthode d'installation pour Ubuntu. L'adresse du dépôt et sa clé sont disponibles sur le site d'Ancestris. 
Note : On peut utiliser Openjdk (libre) au lieu de Java.

Site officiel et wiki : http://www.arvernes.com/wiki/index.php/Ancestris

[[Catégorie:Logiciels]]</text>
      <sha1>r1p667fdg50zoj8yap86sekt9fgq28s</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>HTTP</title>
    <ns>0</ns>
    <id>411</id>
    <revision>
      <id>1503</id>
      <timestamp>2010-05-17T11:13:45Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « [[Category:Serveurs]] »</comment>
      <text xml:space="preserve" bytes="21">[[Category:Serveurs]]</text>
      <sha1>l2nmaskv3bffsjpw0yst96acqex6l44</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Hotspot wifi</title>
    <ns>0</ns>
    <id>1328</id>
    <revision>
      <id>5600</id>
      <timestamp>2014-04-25T19:15:10Z</timestamp>
      <contributor>
        <username>Agentsteel</username>
        <id>260</id>
      </contributor>
      <comment>Création de la page. Testez un peu le script, merci!</comment>
      <text xml:space="preserve" bytes="11246">Sur cette page vous trouverez un script Bash qui vous permettra :

* de tester rapidement si votre interface sans fil est compatible avec le mode &quot;Master&quot; (via le logiciel [https://packages.debian.org/search?keywords=hostapd hostapd]) sous GNU/Linux. (Complétez le tableau en base de page!)
* de mettre en place rapidement un point d'accès sans fil d'appoint.



== Le matériel requis ==

Un ordinateur (portable ou fixe) équipé :

* de votre distribution Debian favorite,
* d'une interface réseau filaire,
* et d'une interface réseau sans fil (interne ou usb) supportée par le noyau Linux.


== Utilisation du script ==

1. Copiez/collez le script dans un fichier &quot;hotspot2014.sh&quot; (par exemple) que vous enregistrez dans votre répertoire personnel

2. Ajustez les variables : WLAN (si besoin), SSID, CHANNEL, PASSPHRASE (au minimum)

3. Donnez-lui les droits d'éxécution. Dans un shell :
&lt;code&gt;chmod +x hotspot2014.sh&lt;/code&gt;

4. Ce script doit être lancé avec les droits superutilisateur (root)
&lt;code&gt;su&lt;/code&gt;
&lt;code&gt;./hotspot2014.sh&lt;/code&gt;


Le script propose deux modes de fonctionnement :

* le mode &quot;dnsmasq/iptables&quot; : un serveur DNS et DHCP local est créé, les paquets réseau transitent entre les deux interfaces réseau via les règles du pare-feu. Avantage : permet de logguer le traffic DHCP et DNS (très instructif!) et de filtrer les flux réseau.

Pour avoir ce mode de fonctionnement il suffit de '''commenter''' la ligne
&lt;code&gt;#BRIDGE=&quot;bridge=$MY_BRIDGE&quot;&lt;/code&gt;
(ce qui est fait par défaut)

ou

* le mode &quot;bridge&quot; (pont réseau) entre l'interface filaire et l'interface sans fil. Aucun filtrage de paquets, pas de logging DHCP et DNS.

Pour avoir ce mode de fonctionnement il suffit de '''décommenter''' la ligne
&lt;code&gt;BRIDGE=&quot;bridge=$MY_BRIDGE&quot;&lt;/code&gt;


Une dernière chose :

Cela fonctionne pour vous? N'hésitez pas à remplir le tableau de compatibilité en fin de page. Merci!



=== Notes ===
* le script est pour le moment commenté dans la langue de Shakespeare mais pourra être traduit si besoin!
* n'hésitez pas à le corriger si vous trouvez un bug!


&lt;pre&gt;
#!/bin/bash
#
# hotspot2014.sh
#
# Wireless Access Point (SoftAP)
#
# by AgentSteel for Debian-fr.org
# 24/Apr/2014
#
# USE AT YOUR OWN RISK!
#
# Tested on Debian Wheezy (7.0)
#
# Two modes of operation :
#  - with a network bridge (see BRIDGE variable) for transparent connection sharing (no DNS logging...)
#   or
#  - with dnsmasq and iptables for packet forwarding between network interfaces (DNS logging)
#
# Run this script as root.
# This script will likely stop currently running network connections.
# You may also need to disable your local firewall.
#
# Required : dhclient, hostapd, firmware-realtek (non-free)
# Optional : bridge-utils, dnsmasq

# Adjust your settings here
WLAN=&quot;wlan0&quot;

# the IP address of your SoftAP interface (if using dnsmasq)
# and the corresponding IP range for your SoftAP clients (if using dnsmasq)
WLAN_IP=&quot;192.168.9.50&quot;
DHCP_RANGE=&quot;192.168.9.51,192.168.9.60&quot;

# your SoftAP SSID, channel and passphrase
SSID=&quot;alfa_test&quot;
CHANNEL=3
PASSPHRASE=&quot;changeme99&quot;

# Set your desired bridge interface name here
MY_BRIDGE=&quot;ap-br0&quot;
# and the other network interface for bridge
IF_BRIDGE=&quot;eth0&quot;

# Uncomment to use bridging, or comment to use dnsmasq/iptables
#BRIDGE=&quot;bridge=$MY_BRIDGE&quot;

# (input) network interface when using dnsmasq/iptables
IF_IN=&quot;eth0&quot;

# Set to &quot;-d&quot; for hostapd debugging output
# or &quot;-B&quot; (background mode) for default operation
HOSTAPD_OPT=&quot;-B&quot;

# global exit code for script (0 = no error)
ret=0

# function : check for required software
function checklist()
{
 local ret=0
 # check if running as root
 [[ $EUID -ne 0 ]] &amp;&amp; { echo &quot;You must be root to run this script!&quot;; ret=1; }
 if [[ -n &quot;$BRIDGE&quot; ]]; then
  # when using a bridge, ensure brctl is found
  hash brctl &gt;/dev/null 2&gt;&amp;1 || { echo &quot;brctl not found, please install bridge-utils package.&quot;; ret=1; }
 else
  # not using a bridge, we need dnsmasq and iptables
  hash dnsmasq &gt;/dev/null 2&gt;&amp;1 || { echo &quot;dnsmasq not found, please install dnsmasq package.&quot;; ret=1; }
  hash iptables &gt;/dev/null 2&gt;&amp;1 || { echo &quot;iptables not found, please install iptables package.&quot;; ret=1; }
 fi
 hash hostapd &gt;/dev/null 2&gt;&amp;1 || { echo &quot;hostapd not found, please install hostapd package.&quot;; ret=1; }
 return $ret
}

# function : cleanup the mess when exiting
function cleanup()
{
 # clean up a bit (the dirty way!)
 sysctl net.ipv4.ip_forward=0
 iptables-restore &lt;iptables.save &amp;&amp; echo &quot;iptables rules restored.&quot;
 killall hostapd &gt;/dev/null 2&gt;&amp;1 &amp;&amp; echo &quot;hostapd killed.&quot;
 [[ -f &quot;$TMP_CONF&quot; ]] &amp;&amp; rm &quot;$TMP_CONF&quot;
 killall dnsmasq &gt;/dev/null 2&gt;&amp;1 &amp;&amp; echo &quot;dnsmasq killed.&quot;
 killall dhclient &gt;/dev/null 2&gt;&amp;1 &amp;&amp; echo &quot;dhclient killed.&quot;
 ifconfig &quot;$MY_BRIDGE&quot; down &gt;/dev/null 2&gt;&amp;1
 sleep 2
 brctl delif &quot;$MY_BRIDGE&quot; &quot;$IF_BRIDGE&quot; &gt;/dev/null 2&gt;&amp;1
 brctl delif &quot;$MY_BRIDGE&quot; &quot;$WLAN&quot; &gt;/dev/null 2&gt;&amp;1
 brctl delbr &quot;$MY_BRIDGE&quot; &gt;/dev/null 2&gt;&amp;1 &amp;&amp; echo &quot;bridge $MY_BRIDGE destroyed.&quot;
}

# Main program

# check for requirements, abort eventually
checklist || exit 1

# trap for cleanup
trap cleanup SIGINT SIGTERM

# First, disable any network management software
echo -n &quot;&gt;&gt;&gt; Trying to disable any network management software... &quot;
service network-manager stop &gt;/dev/null 2&gt;&amp;1
service wicd stop &gt;/dev/null 2&gt;&amp;1
echo &quot;OK.&quot;

# If not using a bridge, start dnsmasq (dns and dhcp) server
if [[ -z &quot;$BRIDGE&quot; ]]; then
 killall dnsmasq &gt;/dev/null 2&gt;&amp;1
 # TODO : additional hosts file
 dnsmasq --interface &quot;$WLAN&quot; --dhcp-range=&quot;$DHCP_RANGE&quot; --log-queries || { echo &quot;dnsmasq failed to start!&quot;; exit 1; }
 # assign IP to the wireless interface
 ifconfig &quot;$WLAN&quot; &quot;$WLAN_IP&quot;

 # now you could start a webserver to share some files (eg. gatling lightweight www server)
 # and allow your SoftAP clients to go to http://$WLAN_IP/

 # save current firewall rules
 iptables-save &gt;iptables.save &amp;&amp; echo &quot;&gt;&gt;&gt; Current firewall configuration saved.&quot;
 # reset firewall rules
 iptables -F; iptables -X; iptables -P INPUT DROP; iptables -P OUTPUT ACCEPT; iptables -P FORWARD DROP
 # allow loopback
 iptables -A INPUT -i lo -j ACCEPT; iptables -A OUTPUT -o lo -j ACCEPT
 # allow already established connections on eth0 (useful for SSH)
 iptables -A INPUT -i $IF_IN -m state --state RELATED,ESTABLISHED -j ACCEPT
 # Allow ping on $IF_IN
 iptables -A INPUT -i $IF_IN -p icmp -m icmp --icmp-type 8 -j ACCEPT
 # allow SSH in, on $IF_IN only
 #iptables -A INPUT -i $IF_IN -p tcp -m tcp --dport 22 -j ACCEPT
 # allow HTTP in, on $IF_IN only (hotspot's web server)
 #iptables -A INPUT -i $IF_IN -p tcp -m tcp --dport 80 -j ACCEPT
 # allow DNS in, on $WLAN
 iptables -A INPUT -i $WLAN -p udp -m udp --dport 53 -j ACCEPT
 # allow DHCP in, on $WLAN
 iptables -A INPUT -i $WLAN -p udp -m udp --dport 67 -j ACCEPT
 # packet forwarding
 sysctl net.ipv4.ip_forward=1
 iptables -t nat -A POSTROUTING -o $IF_IN -j MASQUERADE
 iptables -A FORWARD -i $IF_IN -o $WLAN -m state --state RELATED,ESTABLISHED -j ACCEPT
 # allow HTTP and HTTPS to be forwarded
 iptables -A FORWARD -i $WLAN -o $IF_IN -p tcp -m tcp --dport 80 -j ACCEPT
 iptables -A FORWARD -i $WLAN -o $IF_IN -p tcp -m tcp --dport 443 -j ACCEPT
 #iptables -A FORWARD -i $WLAN -o $IF_IN -p tcp -m tcp --dport 8080 -j ACCEPT
 # uncomment below to allow SSH to be forwarded
 #iptables -A FORWARD -i $WLAN -o $IF_IN -p tcp -m tcp --dport 22 -j ACCEPT

 # (everything else will be forbidden)

else
 # we create a new network bridge to share network (and internet) access
 brctl addbr &quot;$MY_BRIDGE&quot;
 brctl addif &quot;$MY_BRIDGE&quot; &quot;$IF_BRIDGE&quot;
 # $WLAN interface will be added later to the bridge
fi

# create a temporary file with our hostapd conf
# (adapted from Realtek's examples)
# (see proprietary driver package from Realtek's website)
TMP_CONF=$(mktemp)
if [[ -z &quot;$TMP_CONF&quot; ]]; then
 echo &quot;Error creating hostapd temporary configuration file!&quot;
 ret=1
else
 # read-only for root
 chmod 600 &quot;$TMP_CONF&quot;
 cat &gt;&quot;$TMP_CONF&quot; &lt;&lt;EOF
# hostapd configuration starts here
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
interface=$WLAN
$BRIDGE
ssid=$SSID
channel=$CHANNEL
beacon_int=100
# (hardware limit for some wireless chipsets)
max_num_sta=8
hw_mode=g
# we use 802.11n (wifi N)
ieee80211n=1
wme_enabled=1
ht_capab=[SHORT-GI-20][SHORT-GI-40][HT40+]
# We use WPA2 of course
wpa=2
wpa_passphrase=$PASSPHRASE
wpa_key_mgmt=WPA-PSK
# Note: TKIP not supported with RTL8188RU chip!
wpa_pairwise=CCMP
wpa_group_rekey=86400
# other settings
logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=2
#dump_file=/tmp/hostapd.dump
dtim_period=2
rts_threshold=2347
fragm_threshold=2346
macaddr_acl=0
auth_algs=3
ignore_broadcast_ssid=0
wmm_enabled=1
wmm_ac_bk_cwmin=4
wmm_ac_bk_cwmax=10
wmm_ac_bk_aifs=7
wmm_ac_bk_txop_limit=0
wmm_ac_bk_acm=0
wmm_ac_be_aifs=3
wmm_ac_be_cwmin=4
wmm_ac_be_cwmax=10
wmm_ac_be_txop_limit=0
wmm_ac_be_acm=0
wmm_ac_vi_aifs=2
wmm_ac_vi_cwmin=3
wmm_ac_vi_cwmax=4
wmm_ac_vi_txop_limit=94
wmm_ac_vi_acm=0
wmm_ac_vo_aifs=2
wmm_ac_vo_cwmin=2
wmm_ac_vo_cwmax=3
wmm_ac_vo_txop_limit=47
wmm_ac_vo_acm=0
eapol_key_index_workaround=0
eap_server=0
own_ip_addr=127.0.0.1
EOF

 echo &quot;&gt;&gt;&gt; Starting hostapd.&quot;
 # start hostapd
 if ! hostapd $HOSTAPD_OPT &quot;$TMP_CONF&quot;; then
  echo &quot;hostapd failed to start.&quot;
  ret=1
 else
  # finally get an IP address for the bridge, only when using a bridge (assume we have a dhcp server in our LAN)
  [[ -n &quot;$BRIDGE&quot; ]] &amp;&amp; dhclient &quot;$MY_BRIDGE&quot; &amp;&amp; echo &quot;&gt;&gt;&gt; Network bridge $MY_BRIDGE is up.&quot;
  # TODO : handle dhclient failure
  [[ -z &quot;$BRIDGE&quot; ]] &amp;&amp; echo &quot;&gt;&gt;&gt; Using dnsmasq and iptables.&quot;

  iwconfig $WLAN
  echo &quot;&gt;&gt;&gt; SoftAP is up and running!            SSID = $SSID&quot;
  echo &quot;&gt;&gt;&gt; Hit ctrl-c to stop.&quot;
  # display syslog to see what happens
  tail -f /var/log/syslog
 fi
fi

cleanup
echo -e &quot;\n&gt;&gt;&gt; SoftAP terminated!&quot;
exit $ret

&lt;/pre&gt;



== Tableau de compatibilité des adaptateurs sans fil ==

'''Concerne uniquement le fonctionnement en mode &quot;Master&quot; avec Hostapd!'''

'''Merci de renseigner tous les champs!'''

{| border=1
|+ Adaptateurs testés
! Marque
! Modèle exact (préciser interne ou usb)
! Constructeur
! PCI ID (lspci -n ou lsusb)
! Puce
! Module noyau (lsmod)
! Version Debian
! Version noyau Linux
! Firmware non libre (précisez)
! Votre pseudo sur Debian-fr
! Remarques
|-
|Ralink
|RT5390 (interne)
|Ralink
|1814:539f
|RT5390
|rt2800pci
|Debian 7
|3.2
|firmware-ralink
|AgentSteel
|style=&quot;background-color: lightgreen;&quot;|Très stable. Hostapd 1.0-3 des dépôts.
|-
|TP-Link
|WN-823N (usb)
|Realtek
|0bda:8178
|RTL8192CU
|rtl8192cu
|Debian 7
|3.2
|firmware-realtek
|AgentSteel
|style=&quot;background-color: red;&quot;|Pas stable, déconnexions trop fréquentes. A tester avec les [http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=1&amp;PNid=21&amp;PFid=48&amp;Level=5&amp;Conn=4&amp;ProdID=274&amp;DownTypeID=3&amp;GetDown=false&amp;Downloads=true#2772 pilotes propriétaires Realtek])
|-
|Alfa Networks
|AWUS036NHR (usb)
|Realtek
|0bda:817f
|RTL8188RU
|rtl8192cu
|Debian 7
|3.2
|firmware-realtek
|AgentSteel
|style=&quot;background-color: orange;&quot;|Quelques déconnexions, à voir sur la durée. A tester avec les [http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=1&amp;PNid=21&amp;PFid=48&amp;Level=5&amp;Conn=4&amp;ProdID=274&amp;DownTypeID=3&amp;GetDown=false&amp;Downloads=true#2772 pilotes propriétaires Realtek])
|-
|}</text>
      <sha1>ce1gcslg43er3crjrsi6mcttlo2sa4w</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5601</id>
      <parentid>5600</parentid>
      <timestamp>2014-04-25T19:48:24Z</timestamp>
      <contributor>
        <username>Agentsteel</username>
        <id>260</id>
      </contributor>
      <minor/>
      <comment>ajout TL-WN722N</comment>
      <text xml:space="preserve" bytes="11474">Sur cette page vous trouverez un script Bash qui vous permettra :

* de tester rapidement si votre interface sans fil est compatible avec le mode &quot;Master&quot; (via le logiciel [https://packages.debian.org/search?keywords=hostapd hostapd]) sous GNU/Linux. (Complétez le tableau en base de page!)
* de mettre en place rapidement un point d'accès sans fil d'appoint.



== Le matériel requis ==

Un ordinateur (portable ou fixe) équipé :

* de votre distribution Debian favorite,
* d'une interface réseau filaire,
* et d'une interface réseau sans fil (interne ou usb) supportée par le noyau Linux.


== Utilisation du script ==

1. Copiez/collez le script dans un fichier &quot;hotspot2014.sh&quot; (par exemple) que vous enregistrez dans votre répertoire personnel

2. Ajustez les variables : WLAN (si besoin), SSID, CHANNEL, PASSPHRASE (au minimum)

3. Donnez-lui les droits d'éxécution. Dans un shell :
&lt;code&gt;chmod +x hotspot2014.sh&lt;/code&gt;

4. Ce script doit être lancé avec les droits superutilisateur (root)
&lt;code&gt;su&lt;/code&gt;
&lt;code&gt;./hotspot2014.sh&lt;/code&gt;


Le script propose deux modes de fonctionnement :

* le mode &quot;dnsmasq/iptables&quot; : un serveur DNS et DHCP local est créé, les paquets réseau transitent entre les deux interfaces réseau via les règles du pare-feu. Avantage : permet de logguer le traffic DHCP et DNS (très instructif!) et de filtrer les flux réseau.

Pour avoir ce mode de fonctionnement il suffit de '''commenter''' la ligne
&lt;code&gt;#BRIDGE=&quot;bridge=$MY_BRIDGE&quot;&lt;/code&gt;
(ce qui est fait par défaut)

ou

* le mode &quot;bridge&quot; (pont réseau) entre l'interface filaire et l'interface sans fil. Aucun filtrage de paquets, pas de logging DHCP et DNS.

Pour avoir ce mode de fonctionnement il suffit de '''décommenter''' la ligne
&lt;code&gt;BRIDGE=&quot;bridge=$MY_BRIDGE&quot;&lt;/code&gt;


Une dernière chose :

Cela fonctionne pour vous? N'hésitez pas à remplir le tableau de compatibilité en fin de page. Merci!



=== Notes ===
* le script est pour le moment commenté dans la langue de Shakespeare mais pourra être traduit si besoin!
* n'hésitez pas à le corriger si vous trouvez un bug!


&lt;pre&gt;
#!/bin/bash
#
# hotspot2014.sh
#
# Wireless Access Point (SoftAP)
#
# by AgentSteel for Debian-fr.org
# 24/Apr/2014
#
# USE AT YOUR OWN RISK!
#
# Tested on Debian Wheezy (7.0)
#
# Two modes of operation :
#  - with a network bridge (see BRIDGE variable) for transparent connection sharing (no DNS logging...)
#   or
#  - with dnsmasq and iptables for packet forwarding between network interfaces (DNS logging)
#
# Run this script as root.
# This script will likely stop currently running network connections.
# You may also need to disable your local firewall.
#
# Required : dhclient, hostapd, firmware-realtek (non-free)
# Optional : bridge-utils, dnsmasq

# Adjust your settings here
WLAN=&quot;wlan0&quot;

# the IP address of your SoftAP interface (if using dnsmasq)
# and the corresponding IP range for your SoftAP clients (if using dnsmasq)
WLAN_IP=&quot;192.168.9.50&quot;
DHCP_RANGE=&quot;192.168.9.51,192.168.9.60&quot;

# your SoftAP SSID, channel and passphrase
SSID=&quot;alfa_test&quot;
CHANNEL=3
PASSPHRASE=&quot;changeme99&quot;

# Set your desired bridge interface name here
MY_BRIDGE=&quot;ap-br0&quot;
# and the other network interface for bridge
IF_BRIDGE=&quot;eth0&quot;

# Uncomment to use bridging, or comment to use dnsmasq/iptables
#BRIDGE=&quot;bridge=$MY_BRIDGE&quot;

# (input) network interface when using dnsmasq/iptables
IF_IN=&quot;eth0&quot;

# Set to &quot;-d&quot; for hostapd debugging output
# or &quot;-B&quot; (background mode) for default operation
HOSTAPD_OPT=&quot;-B&quot;

# global exit code for script (0 = no error)
ret=0

# function : check for required software
function checklist()
{
 local ret=0
 # check if running as root
 [[ $EUID -ne 0 ]] &amp;&amp; { echo &quot;You must be root to run this script!&quot;; ret=1; }
 if [[ -n &quot;$BRIDGE&quot; ]]; then
  # when using a bridge, ensure brctl is found
  hash brctl &gt;/dev/null 2&gt;&amp;1 || { echo &quot;brctl not found, please install bridge-utils package.&quot;; ret=1; }
 else
  # not using a bridge, we need dnsmasq and iptables
  hash dnsmasq &gt;/dev/null 2&gt;&amp;1 || { echo &quot;dnsmasq not found, please install dnsmasq package.&quot;; ret=1; }
  hash iptables &gt;/dev/null 2&gt;&amp;1 || { echo &quot;iptables not found, please install iptables package.&quot;; ret=1; }
 fi
 hash hostapd &gt;/dev/null 2&gt;&amp;1 || { echo &quot;hostapd not found, please install hostapd package.&quot;; ret=1; }
 return $ret
}

# function : cleanup the mess when exiting
function cleanup()
{
 # clean up a bit (the dirty way!)
 sysctl net.ipv4.ip_forward=0
 iptables-restore &lt;iptables.save &amp;&amp; echo &quot;iptables rules restored.&quot;
 killall hostapd &gt;/dev/null 2&gt;&amp;1 &amp;&amp; echo &quot;hostapd killed.&quot;
 [[ -f &quot;$TMP_CONF&quot; ]] &amp;&amp; rm &quot;$TMP_CONF&quot;
 killall dnsmasq &gt;/dev/null 2&gt;&amp;1 &amp;&amp; echo &quot;dnsmasq killed.&quot;
 killall dhclient &gt;/dev/null 2&gt;&amp;1 &amp;&amp; echo &quot;dhclient killed.&quot;
 ifconfig &quot;$MY_BRIDGE&quot; down &gt;/dev/null 2&gt;&amp;1
 sleep 2
 brctl delif &quot;$MY_BRIDGE&quot; &quot;$IF_BRIDGE&quot; &gt;/dev/null 2&gt;&amp;1
 brctl delif &quot;$MY_BRIDGE&quot; &quot;$WLAN&quot; &gt;/dev/null 2&gt;&amp;1
 brctl delbr &quot;$MY_BRIDGE&quot; &gt;/dev/null 2&gt;&amp;1 &amp;&amp; echo &quot;bridge $MY_BRIDGE destroyed.&quot;
}

# Main program

# check for requirements, abort eventually
checklist || exit 1

# trap for cleanup
trap cleanup SIGINT SIGTERM

# First, disable any network management software
echo -n &quot;&gt;&gt;&gt; Trying to disable any network management software... &quot;
service network-manager stop &gt;/dev/null 2&gt;&amp;1
service wicd stop &gt;/dev/null 2&gt;&amp;1
echo &quot;OK.&quot;

# If not using a bridge, start dnsmasq (dns and dhcp) server
if [[ -z &quot;$BRIDGE&quot; ]]; then
 killall dnsmasq &gt;/dev/null 2&gt;&amp;1
 # TODO : additional hosts file
 dnsmasq --interface &quot;$WLAN&quot; --dhcp-range=&quot;$DHCP_RANGE&quot; --log-queries || { echo &quot;dnsmasq failed to start!&quot;; exit 1; }
 # assign IP to the wireless interface
 ifconfig &quot;$WLAN&quot; &quot;$WLAN_IP&quot;

 # now you could start a webserver to share some files (eg. gatling lightweight www server)
 # and allow your SoftAP clients to go to http://$WLAN_IP/

 # save current firewall rules
 iptables-save &gt;iptables.save &amp;&amp; echo &quot;&gt;&gt;&gt; Current firewall configuration saved.&quot;
 # reset firewall rules
 iptables -F; iptables -X; iptables -P INPUT DROP; iptables -P OUTPUT ACCEPT; iptables -P FORWARD DROP
 # allow loopback
 iptables -A INPUT -i lo -j ACCEPT; iptables -A OUTPUT -o lo -j ACCEPT
 # allow already established connections on eth0 (useful for SSH)
 iptables -A INPUT -i $IF_IN -m state --state RELATED,ESTABLISHED -j ACCEPT
 # Allow ping on $IF_IN
 iptables -A INPUT -i $IF_IN -p icmp -m icmp --icmp-type 8 -j ACCEPT
 # allow SSH in, on $IF_IN only
 #iptables -A INPUT -i $IF_IN -p tcp -m tcp --dport 22 -j ACCEPT
 # allow HTTP in, on $IF_IN only (hotspot's web server)
 #iptables -A INPUT -i $IF_IN -p tcp -m tcp --dport 80 -j ACCEPT
 # allow DNS in, on $WLAN
 iptables -A INPUT -i $WLAN -p udp -m udp --dport 53 -j ACCEPT
 # allow DHCP in, on $WLAN
 iptables -A INPUT -i $WLAN -p udp -m udp --dport 67 -j ACCEPT
 # packet forwarding
 sysctl net.ipv4.ip_forward=1
 iptables -t nat -A POSTROUTING -o $IF_IN -j MASQUERADE
 iptables -A FORWARD -i $IF_IN -o $WLAN -m state --state RELATED,ESTABLISHED -j ACCEPT
 # allow HTTP and HTTPS to be forwarded
 iptables -A FORWARD -i $WLAN -o $IF_IN -p tcp -m tcp --dport 80 -j ACCEPT
 iptables -A FORWARD -i $WLAN -o $IF_IN -p tcp -m tcp --dport 443 -j ACCEPT
 #iptables -A FORWARD -i $WLAN -o $IF_IN -p tcp -m tcp --dport 8080 -j ACCEPT
 # uncomment below to allow SSH to be forwarded
 #iptables -A FORWARD -i $WLAN -o $IF_IN -p tcp -m tcp --dport 22 -j ACCEPT

 # (everything else will be forbidden)

else
 # we create a new network bridge to share network (and internet) access
 brctl addbr &quot;$MY_BRIDGE&quot;
 brctl addif &quot;$MY_BRIDGE&quot; &quot;$IF_BRIDGE&quot;
 # $WLAN interface will be added later to the bridge
fi

# create a temporary file with our hostapd conf
# (adapted from Realtek's examples)
# (see proprietary driver package from Realtek's website)
TMP_CONF=$(mktemp)
if [[ -z &quot;$TMP_CONF&quot; ]]; then
 echo &quot;Error creating hostapd temporary configuration file!&quot;
 ret=1
else
 # read-only for root
 chmod 600 &quot;$TMP_CONF&quot;
 cat &gt;&quot;$TMP_CONF&quot; &lt;&lt;EOF
# hostapd configuration starts here
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
interface=$WLAN
$BRIDGE
ssid=$SSID
channel=$CHANNEL
beacon_int=100
# (hardware limit for some wireless chipsets)
max_num_sta=8
hw_mode=g
# we use 802.11n (wifi N)
ieee80211n=1
wme_enabled=1
ht_capab=[SHORT-GI-20][SHORT-GI-40][HT40+]
# We use WPA2 of course
wpa=2
wpa_passphrase=$PASSPHRASE
wpa_key_mgmt=WPA-PSK
# Note: TKIP not supported with RTL8188RU chip!
wpa_pairwise=CCMP
wpa_group_rekey=86400
# other settings
logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=2
#dump_file=/tmp/hostapd.dump
dtim_period=2
rts_threshold=2347
fragm_threshold=2346
macaddr_acl=0
auth_algs=3
ignore_broadcast_ssid=0
wmm_enabled=1
wmm_ac_bk_cwmin=4
wmm_ac_bk_cwmax=10
wmm_ac_bk_aifs=7
wmm_ac_bk_txop_limit=0
wmm_ac_bk_acm=0
wmm_ac_be_aifs=3
wmm_ac_be_cwmin=4
wmm_ac_be_cwmax=10
wmm_ac_be_txop_limit=0
wmm_ac_be_acm=0
wmm_ac_vi_aifs=2
wmm_ac_vi_cwmin=3
wmm_ac_vi_cwmax=4
wmm_ac_vi_txop_limit=94
wmm_ac_vi_acm=0
wmm_ac_vo_aifs=2
wmm_ac_vo_cwmin=2
wmm_ac_vo_cwmax=3
wmm_ac_vo_txop_limit=47
wmm_ac_vo_acm=0
eapol_key_index_workaround=0
eap_server=0
own_ip_addr=127.0.0.1
EOF

 echo &quot;&gt;&gt;&gt; Starting hostapd.&quot;
 # start hostapd
 if ! hostapd $HOSTAPD_OPT &quot;$TMP_CONF&quot;; then
  echo &quot;hostapd failed to start.&quot;
  ret=1
 else
  # finally get an IP address for the bridge, only when using a bridge (assume we have a dhcp server in our LAN)
  [[ -n &quot;$BRIDGE&quot; ]] &amp;&amp; dhclient &quot;$MY_BRIDGE&quot; &amp;&amp; echo &quot;&gt;&gt;&gt; Network bridge $MY_BRIDGE is up.&quot;
  # TODO : handle dhclient failure
  [[ -z &quot;$BRIDGE&quot; ]] &amp;&amp; echo &quot;&gt;&gt;&gt; Using dnsmasq and iptables.&quot;

  iwconfig $WLAN
  echo &quot;&gt;&gt;&gt; SoftAP is up and running!            SSID = $SSID&quot;
  echo &quot;&gt;&gt;&gt; Hit ctrl-c to stop.&quot;
  # display syslog to see what happens
  tail -f /var/log/syslog
 fi
fi

cleanup
echo -e &quot;\n&gt;&gt;&gt; SoftAP terminated!&quot;
exit $ret

&lt;/pre&gt;



== Tableau de compatibilité des adaptateurs sans fil ==

'''Concerne uniquement le fonctionnement en mode &quot;Master&quot; avec Hostapd!'''

'''Merci de renseigner tous les champs!'''

{| border=1
|+ Adaptateurs testés
! Marque
! Modèle exact (préciser interne ou usb)
! Constructeur
! PCI ID (lspci -n ou lsusb)
! Puce
! Module noyau (lsmod)
! Version Debian
! Version noyau Linux
! Firmware non libre (précisez)
! Votre pseudo sur Debian-fr
! Remarques (Stabilité, préciser si modifications des paramètres de configuration de hostapd...)
|-
|Ralink
|RT5390 (interne)
|Ralink
|1814:539f
|RT5390
|rt2800pci
|Debian 7
|3.2
|firmware-ralink
|AgentSteel
|style=&quot;background-color: lightgreen;&quot;|Très stable.
|-
|TP-Link
|TL-WN722N (usb)
|Atheros
|0cf3:9271
|AR9271
|ath9k_htc
|Debian 7
|3.2
|firmware-atheros
|AgentSteel
|style=&quot;background-color: lightgreen;&quot;|Très stable.
|-
|TP-Link
|TL-WN823N (usb)
|Realtek
|0bda:8178
|RTL8192CU
|rtl8192cu
|Debian 7
|3.2
|firmware-realtek
|AgentSteel
|style=&quot;background-color: red;&quot;|Pas stable, déconnexions trop fréquentes. A tester avec les [http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=1&amp;PNid=21&amp;PFid=48&amp;Level=5&amp;Conn=4&amp;ProdID=274&amp;DownTypeID=3&amp;GetDown=false&amp;Downloads=true#2772 pilotes propriétaires Realtek])
|-
|Alfa Networks
|AWUS036NHR (usb)
|Realtek
|0bda:817f
|RTL8188RU
|rtl8192cu
|Debian 7
|3.2
|firmware-realtek
|AgentSteel
|style=&quot;background-color: orange;&quot;|Quelques déconnexions, à voir sur la durée. A tester avec les [http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=1&amp;PNid=21&amp;PFid=48&amp;Level=5&amp;Conn=4&amp;ProdID=274&amp;DownTypeID=3&amp;GetDown=false&amp;Downloads=true#2772 pilotes propriétaires Realtek])
|-
|}</text>
      <sha1>rgz2ibmjv9mzxz0fmnxkw9igwi2jr4e</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5602</id>
      <parentid>5601</parentid>
      <timestamp>2014-04-26T06:44:05Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="11472">Sur cette page vous trouverez un script Bash qui vous permettra :

* de tester rapidement si votre interface sans fil est compatible avec le mode &quot;Master&quot; (via le logiciel [https://packages.debian.org/search?keywords=hostapd hostapd]) sous GNU/Linux. (Complétez le tableau en bas de page!)
* de mettre en place rapidement un point d'accès sans fil d'appoint.



== Le matériel requis ==

Un ordinateur (portable ou fixe) équipé :

* de votre distribution Debian favorite,
* d'une interface réseau filaire,
* et d'une interface réseau sans fil (interne ou usb) supportée par le noyau Linux.


== Utilisation du script ==

1. Copiez/collez le script dans un fichier &quot;hotspot2014.sh&quot; (par exemple) que vous enregistrez dans votre répertoire personnel

2. Ajustez les variables : WLAN (si besoin), SSID, CHANNEL, PASSPHRASE (au minimum)

3. Donnez-lui les droits d'éxécution. Dans un shell :
&lt;code&gt;chmod +x hotspot2014.sh&lt;/code&gt;

4. Ce script doit être lancé avec les droits superutilisateur (root)
&lt;code&gt;su&lt;/code&gt;
&lt;code&gt;./hotspot2014.sh&lt;/code&gt;


Le script propose deux modes de fonctionnement :

* le mode &quot;dnsmasq/iptables&quot; : un serveur DNS et DHCP local est créé, les paquets réseau transitent entre les deux interfaces réseau via les règles du pare-feu. Avantage : permet de logguer le trafic DHCP et DNS (très instructif!) et de filtrer les flux réseau.

Pour avoir ce mode de fonctionnement il suffit de '''commenter''' la ligne
&lt;code&gt;#BRIDGE=&quot;bridge=$MY_BRIDGE&quot;&lt;/code&gt;
(ce qui est fait par défaut)

ou

* le mode &quot;bridge&quot; (pont réseau) entre l'interface filaire et l'interface sans fil. Aucun filtrage de paquets, pas de logging DHCP et DNS.

Pour avoir ce mode de fonctionnement il suffit de '''décommenter''' la ligne
&lt;code&gt;BRIDGE=&quot;bridge=$MY_BRIDGE&quot;&lt;/code&gt;


Une dernière chose :

Cela fonctionne pour vous? N'hésitez pas à remplir le tableau de compatibilité en fin de page. Merci!



=== Notes ===
* le script est pour le moment commenté dans la langue de Shakespeare mais pourra être traduit si besoin!
* n'hésitez pas à le corriger si vous trouvez un bug!


&lt;pre&gt;
#!/bin/bash
#
# hotspot2014.sh
#
# Wireless Access Point (SoftAP)
#
# by AgentSteel for Debian-fr.org
# 24/Apr/2014
#
# USE AT YOUR OWN RISK!
#
# Tested on Debian Wheezy (7.0)
#
# Two modes of operation :
#  - with a network bridge (see BRIDGE variable) for transparent connection sharing (no DNS logging...)
#   or
#  - with dnsmasq and iptables for packet forwarding between network interfaces (DNS logging)
#
# Run this script as root.
# This script will likely stop currently running network connections.
# You may also need to disable your local firewall.
#
# Required : dhclient, hostapd, firmware-realtek (non-free)
# Optional : bridge-utils, dnsmasq

# Adjust your settings here
WLAN=&quot;wlan0&quot;

# the IP address of your SoftAP interface (if using dnsmasq)
# and the corresponding IP range for your SoftAP clients (if using dnsmasq)
WLAN_IP=&quot;192.168.9.50&quot;
DHCP_RANGE=&quot;192.168.9.51,192.168.9.60&quot;

# your SoftAP SSID, channel and passphrase
SSID=&quot;alfa_test&quot;
CHANNEL=3
PASSPHRASE=&quot;changeme99&quot;

# Set your desired bridge interface name here
MY_BRIDGE=&quot;ap-br0&quot;
# and the other network interface for bridge
IF_BRIDGE=&quot;eth0&quot;

# Uncomment to use bridging, or comment to use dnsmasq/iptables
#BRIDGE=&quot;bridge=$MY_BRIDGE&quot;

# (input) network interface when using dnsmasq/iptables
IF_IN=&quot;eth0&quot;

# Set to &quot;-d&quot; for hostapd debugging output
# or &quot;-B&quot; (background mode) for default operation
HOSTAPD_OPT=&quot;-B&quot;

# global exit code for script (0 = no error)
ret=0

# function : check for required software
function checklist()
{
 local ret=0
 # check if running as root
 [[ $EUID -ne 0 ]] &amp;&amp; { echo &quot;You must be root to run this script!&quot;; ret=1; }
 if [[ -n &quot;$BRIDGE&quot; ]]; then
  # when using a bridge, ensure brctl is found
  hash brctl &gt;/dev/null 2&gt;&amp;1 || { echo &quot;brctl not found, please install bridge-utils package.&quot;; ret=1; }
 else
  # not using a bridge, we need dnsmasq and iptables
  hash dnsmasq &gt;/dev/null 2&gt;&amp;1 || { echo &quot;dnsmasq not found, please install dnsmasq package.&quot;; ret=1; }
  hash iptables &gt;/dev/null 2&gt;&amp;1 || { echo &quot;iptables not found, please install iptables package.&quot;; ret=1; }
 fi
 hash hostapd &gt;/dev/null 2&gt;&amp;1 || { echo &quot;hostapd not found, please install hostapd package.&quot;; ret=1; }
 return $ret
}

# function : cleanup the mess when exiting
function cleanup()
{
 # clean up a bit (the dirty way!)
 sysctl net.ipv4.ip_forward=0
 iptables-restore &lt;iptables.save &amp;&amp; echo &quot;iptables rules restored.&quot;
 killall hostapd &gt;/dev/null 2&gt;&amp;1 &amp;&amp; echo &quot;hostapd killed.&quot;
 [[ -f &quot;$TMP_CONF&quot; ]] &amp;&amp; rm &quot;$TMP_CONF&quot;
 killall dnsmasq &gt;/dev/null 2&gt;&amp;1 &amp;&amp; echo &quot;dnsmasq killed.&quot;
 killall dhclient &gt;/dev/null 2&gt;&amp;1 &amp;&amp; echo &quot;dhclient killed.&quot;
 ifconfig &quot;$MY_BRIDGE&quot; down &gt;/dev/null 2&gt;&amp;1
 sleep 2
 brctl delif &quot;$MY_BRIDGE&quot; &quot;$IF_BRIDGE&quot; &gt;/dev/null 2&gt;&amp;1
 brctl delif &quot;$MY_BRIDGE&quot; &quot;$WLAN&quot; &gt;/dev/null 2&gt;&amp;1
 brctl delbr &quot;$MY_BRIDGE&quot; &gt;/dev/null 2&gt;&amp;1 &amp;&amp; echo &quot;bridge $MY_BRIDGE destroyed.&quot;
}

# Main program

# check for requirements, abort eventually
checklist || exit 1

# trap for cleanup
trap cleanup SIGINT SIGTERM

# First, disable any network management software
echo -n &quot;&gt;&gt;&gt; Trying to disable any network management software... &quot;
service network-manager stop &gt;/dev/null 2&gt;&amp;1
service wicd stop &gt;/dev/null 2&gt;&amp;1
echo &quot;OK.&quot;

# If not using a bridge, start dnsmasq (dns and dhcp) server
if [[ -z &quot;$BRIDGE&quot; ]]; then
 killall dnsmasq &gt;/dev/null 2&gt;&amp;1
 # TODO : additional hosts file
 dnsmasq --interface &quot;$WLAN&quot; --dhcp-range=&quot;$DHCP_RANGE&quot; --log-queries || { echo &quot;dnsmasq failed to start!&quot;; exit 1; }
 # assign IP to the wireless interface
 ifconfig &quot;$WLAN&quot; &quot;$WLAN_IP&quot;

 # now you could start a webserver to share some files (eg. gatling lightweight www server)
 # and allow your SoftAP clients to go to http://$WLAN_IP/

 # save current firewall rules
 iptables-save &gt;iptables.save &amp;&amp; echo &quot;&gt;&gt;&gt; Current firewall configuration saved.&quot;
 # reset firewall rules
 iptables -F; iptables -X; iptables -P INPUT DROP; iptables -P OUTPUT ACCEPT; iptables -P FORWARD DROP
 # allow loopback
 iptables -A INPUT -i lo -j ACCEPT; iptables -A OUTPUT -o lo -j ACCEPT
 # allow already established connections on eth0 (useful for SSH)
 iptables -A INPUT -i $IF_IN -m state --state RELATED,ESTABLISHED -j ACCEPT
 # Allow ping on $IF_IN
 iptables -A INPUT -i $IF_IN -p icmp -m icmp --icmp-type 8 -j ACCEPT
 # allow SSH in, on $IF_IN only
 #iptables -A INPUT -i $IF_IN -p tcp -m tcp --dport 22 -j ACCEPT
 # allow HTTP in, on $IF_IN only (hotspot's web server)
 #iptables -A INPUT -i $IF_IN -p tcp -m tcp --dport 80 -j ACCEPT
 # allow DNS in, on $WLAN
 iptables -A INPUT -i $WLAN -p udp -m udp --dport 53 -j ACCEPT
 # allow DHCP in, on $WLAN
 iptables -A INPUT -i $WLAN -p udp -m udp --dport 67 -j ACCEPT
 # packet forwarding
 sysctl net.ipv4.ip_forward=1
 iptables -t nat -A POSTROUTING -o $IF_IN -j MASQUERADE
 iptables -A FORWARD -i $IF_IN -o $WLAN -m state --state RELATED,ESTABLISHED -j ACCEPT
 # allow HTTP and HTTPS to be forwarded
 iptables -A FORWARD -i $WLAN -o $IF_IN -p tcp -m tcp --dport 80 -j ACCEPT
 iptables -A FORWARD -i $WLAN -o $IF_IN -p tcp -m tcp --dport 443 -j ACCEPT
 #iptables -A FORWARD -i $WLAN -o $IF_IN -p tcp -m tcp --dport 8080 -j ACCEPT
 # uncomment below to allow SSH to be forwarded
 #iptables -A FORWARD -i $WLAN -o $IF_IN -p tcp -m tcp --dport 22 -j ACCEPT

 # (everything else will be forbidden)

else
 # we create a new network bridge to share network (and internet) access
 brctl addbr &quot;$MY_BRIDGE&quot;
 brctl addif &quot;$MY_BRIDGE&quot; &quot;$IF_BRIDGE&quot;
 # $WLAN interface will be added later to the bridge
fi

# create a temporary file with our hostapd conf
# (adapted from Realtek's examples)
# (see proprietary driver package from Realtek's website)
TMP_CONF=$(mktemp)
if [[ -z &quot;$TMP_CONF&quot; ]]; then
 echo &quot;Error creating hostapd temporary configuration file!&quot;
 ret=1
else
 # read-only for root
 chmod 600 &quot;$TMP_CONF&quot;
 cat &gt;&quot;$TMP_CONF&quot; &lt;&lt;EOF
# hostapd configuration starts here
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
interface=$WLAN
$BRIDGE
ssid=$SSID
channel=$CHANNEL
beacon_int=100
# (hardware limit for some wireless chipsets)
max_num_sta=8
hw_mode=g
# we use 802.11n (wifi N)
ieee80211n=1
wme_enabled=1
ht_capab=[SHORT-GI-20][SHORT-GI-40][HT40+]
# We use WPA2 of course
wpa=2
wpa_passphrase=$PASSPHRASE
wpa_key_mgmt=WPA-PSK
# Note: TKIP not supported with RTL8188RU chip!
wpa_pairwise=CCMP
wpa_group_rekey=86400
# other settings
logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=2
#dump_file=/tmp/hostapd.dump
dtim_period=2
rts_threshold=2347
fragm_threshold=2346
macaddr_acl=0
auth_algs=3
ignore_broadcast_ssid=0
wmm_enabled=1
wmm_ac_bk_cwmin=4
wmm_ac_bk_cwmax=10
wmm_ac_bk_aifs=7
wmm_ac_bk_txop_limit=0
wmm_ac_bk_acm=0
wmm_ac_be_aifs=3
wmm_ac_be_cwmin=4
wmm_ac_be_cwmax=10
wmm_ac_be_txop_limit=0
wmm_ac_be_acm=0
wmm_ac_vi_aifs=2
wmm_ac_vi_cwmin=3
wmm_ac_vi_cwmax=4
wmm_ac_vi_txop_limit=94
wmm_ac_vi_acm=0
wmm_ac_vo_aifs=2
wmm_ac_vo_cwmin=2
wmm_ac_vo_cwmax=3
wmm_ac_vo_txop_limit=47
wmm_ac_vo_acm=0
eapol_key_index_workaround=0
eap_server=0
own_ip_addr=127.0.0.1
EOF

 echo &quot;&gt;&gt;&gt; Starting hostapd.&quot;
 # start hostapd
 if ! hostapd $HOSTAPD_OPT &quot;$TMP_CONF&quot;; then
  echo &quot;hostapd failed to start.&quot;
  ret=1
 else
  # finally get an IP address for the bridge, only when using a bridge (assume we have a dhcp server in our LAN)
  [[ -n &quot;$BRIDGE&quot; ]] &amp;&amp; dhclient &quot;$MY_BRIDGE&quot; &amp;&amp; echo &quot;&gt;&gt;&gt; Network bridge $MY_BRIDGE is up.&quot;
  # TODO : handle dhclient failure
  [[ -z &quot;$BRIDGE&quot; ]] &amp;&amp; echo &quot;&gt;&gt;&gt; Using dnsmasq and iptables.&quot;

  iwconfig $WLAN
  echo &quot;&gt;&gt;&gt; SoftAP is up and running!            SSID = $SSID&quot;
  echo &quot;&gt;&gt;&gt; Hit ctrl-c to stop.&quot;
  # display syslog to see what happens
  tail -f /var/log/syslog
 fi
fi

cleanup
echo -e &quot;\n&gt;&gt;&gt; SoftAP terminated!&quot;
exit $ret

&lt;/pre&gt;



== Tableau de compatibilité des adaptateurs sans fil ==

'''Concerne uniquement le fonctionnement en mode &quot;Master&quot; avec Hostapd!'''

'''Merci de renseigner tous les champs!'''

{| border=1
|+ Adaptateurs testés
! Marque
! Modèle exact (préciser interne ou usb)
! Constructeur
! PCI ID (lspci -n ou lsusb)
! Puce
! Module noyau (lsmod)
! Version Debian
! Version noyau Linux
! Firmware non libre (précisez)
! Votre pseudo sur Debian-fr
! Remarques (Stabilité, préciser si modifications des paramètres de configuration de hostapd...)
|-
|Ralink
|RT5390 (interne)
|Ralink
|1814:539f
|RT5390
|rt2800pci
|Debian 7
|3.2
|firmware-ralink
|AgentSteel
|style=&quot;background-color: lightgreen;&quot;|Très stable.
|-
|TP-Link
|TL-WN722N (usb)
|Atheros
|0cf3:9271
|AR9271
|ath9k_htc
|Debian 7
|3.2
|firmware-atheros
|AgentSteel
|style=&quot;background-color: lightgreen;&quot;|Très stable.
|-
|TP-Link
|TL-WN823N (usb)
|Realtek
|0bda:8178
|RTL8192CU
|rtl8192cu
|Debian 7
|3.2
|firmware-realtek
|AgentSteel
|style=&quot;background-color: red;&quot;|Pas stable, déconnexions trop fréquentes. A tester avec les [http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=1&amp;PNid=21&amp;PFid=48&amp;Level=5&amp;Conn=4&amp;ProdID=274&amp;DownTypeID=3&amp;GetDown=false&amp;Downloads=true#2772 pilotes propriétaires Realtek])
|-
|Alfa Networks
|AWUS036NHR (usb)
|Realtek
|0bda:817f
|RTL8188RU
|rtl8192cu
|Debian 7
|3.2
|firmware-realtek
|AgentSteel
|style=&quot;background-color: orange;&quot;|Quelques déconnexions, à voir sur la durée. A tester avec les [http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=1&amp;PNid=21&amp;PFid=48&amp;Level=5&amp;Conn=4&amp;ProdID=274&amp;DownTypeID=3&amp;GetDown=false&amp;Downloads=true#2772 pilotes propriétaires Realtek])
|-
|}</text>
      <sha1>kfge5ig5n7wxfv91yu5h0e4bvnzmsam</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5604</id>
      <parentid>5602</parentid>
      <timestamp>2014-04-26T10:30:10Z</timestamp>
      <contributor>
        <username>Agentsteel</username>
        <id>260</id>
      </contributor>
      <comment>ajouts liens + maj diverses</comment>
      <text xml:space="preserve" bytes="12871">Sur cette page vous trouverez un script Bash qui vous permettra :

* de tester rapidement si votre interface sans fil est compatible avec le mode &quot;Master&quot; (via le logiciel [https://packages.debian.org/search?keywords=hostapd hostapd]) sous GNU/Linux. (Complétez le tableau en bas de page!)
* de mettre en place rapidement un point d'accès sans fil d'appoint.



== Le matériel requis ==

Un ordinateur (portable ou fixe) équipé :

* de votre distribution Debian favorite,
* d'une interface réseau filaire,
* et d'une interface réseau sans fil (interne ou usb) supportée par le noyau Linux.


== Utilisation du script ==

1. Copiez/collez le script dans un fichier &quot;hotspot2014.sh&quot; (par exemple) que vous enregistrez dans votre répertoire personnel

2. Ajustez les variables : WLAN (si besoin), SSID, CHANNEL, PASSPHRASE (au minimum)

3. Donnez-lui les droits d'éxécution. Dans un shell :
&lt;code&gt;chmod +x hotspot2014.sh&lt;/code&gt;

4. Ce script doit être lancé avec les droits superutilisateur (root)
&lt;code&gt;su&lt;/code&gt;
&lt;code&gt;./hotspot2014.sh&lt;/code&gt;


Le script propose deux modes de fonctionnement :

* le mode &quot;dnsmasq/iptables&quot; : un serveur DNS et DHCP local est créé, les paquets réseau transitent entre les deux interfaces réseau via les règles du pare-feu. Avantage : permet de logguer le trafic DHCP et DNS (très instructif!) et de filtrer les flux réseau.

Note : par défaut seuls les ports 80 (HTTP) et 443 (HTTPS) sont autorisés par le point d'accès. Si besoin d'autoriser d'autres protocoles, ajouter les règles iptables à la suite.

Pour avoir ce mode de fonctionnement il suffit de '''commenter''' la ligne
&lt;code&gt;#BRIDGE=&quot;bridge=$MY_BRIDGE&quot;&lt;/code&gt;
(ce qui est fait par défaut)

ou

* le mode &quot;bridge&quot; (pont réseau) entre l'interface filaire et l'interface sans fil. Aucun filtrage de paquets, pas de logging DHCP et DNS.

Pour avoir ce mode de fonctionnement il suffit de '''décommenter''' la ligne
&lt;code&gt;BRIDGE=&quot;bridge=$MY_BRIDGE&quot;&lt;/code&gt;


Une dernière chose :

* Cela fonctionne pour vous? N'hésitez pas à remplir le tableau de compatibilité en fin de page. Merci!

* Cela ne fonctionne pas? N'hésitez pas à ré-essayer avec : 
  * un noyau plus récent (celui des dépôts backports par exemple)
  * une version plus récente de [http://hostap.epitest.fi/hostapd/ hostapd] (ne devrait pas poser trop de problèmes à compiler soi-même)


=== Notes ===

* Le script est pour le moment commenté dans la langue de Shakespeare mais pourra être traduit si besoin!
* N'hésitez pas à le corriger si vous trouvez un bug!


&lt;code bash&gt;
#!/bin/bash
#
# hotspot2014.sh
#
# Wireless Access Point (SoftAP)
#
# by AgentSteel for Debian-fr.org
# 24/Apr/2014
#
# USE AT YOUR OWN RISK!
#
# Tested on Debian Wheezy (7.0)
#
# Two modes of operation :
#  - with a network bridge (see BRIDGE variable) for transparent connection sharing (no DNS logging...)
#   or
#  - with dnsmasq and iptables for packet forwarding between network interfaces (DNS logging)
#
# Run this script as root.
# This script will likely stop currently running network connections.
# You may also need to disable your local firewall.
#
# Required : dhclient, hostapd, firmware-realtek (non-free)
# Optional : bridge-utils, dnsmasq

# Adjust your settings here
WLAN=&quot;wlan0&quot;

# the IP address of your SoftAP interface (if using dnsmasq)
# and the corresponding IP range for your SoftAP clients (if using dnsmasq)
WLAN_IP=&quot;192.168.9.50&quot;
DHCP_RANGE=&quot;192.168.9.51,192.168.9.60&quot;

# your SoftAP SSID, channel and passphrase
SSID=&quot;alfa_test&quot;
CHANNEL=3
PASSPHRASE=&quot;changeme99&quot;

# Set your desired bridge interface name here
MY_BRIDGE=&quot;ap-br0&quot;
# and the other network interface for bridge
IF_BRIDGE=&quot;eth0&quot;

# Uncomment to use bridging, or comment to use dnsmasq/iptables
#BRIDGE=&quot;bridge=$MY_BRIDGE&quot;

# (input) network interface when using dnsmasq/iptables
IF_IN=&quot;eth0&quot;

# Set to &quot;-d&quot; for hostapd debugging output
# or &quot;-B&quot; (background mode) for default operation
HOSTAPD_OPT=&quot;-B&quot;

# global exit code for script (0 = no error)
ret=0

# function : check for required software
function checklist()
{
 local ret=0
 # check if running as root
 [[ $EUID -ne 0 ]] &amp;&amp; { echo &quot;You must be root to run this script!&quot;; ret=1; }
 if [[ -n &quot;$BRIDGE&quot; ]]; then
  # when using a bridge, ensure brctl is found
  hash brctl &gt;/dev/null 2&gt;&amp;1 || { echo &quot;brctl not found, please install bridge-utils package.&quot;; ret=1; }
 else
  # not using a bridge, we need dnsmasq and iptables
  hash dnsmasq &gt;/dev/null 2&gt;&amp;1 || { echo &quot;dnsmasq not found, please install dnsmasq package.&quot;; ret=1; }
  hash iptables &gt;/dev/null 2&gt;&amp;1 || { echo &quot;iptables not found, please install iptables package.&quot;; ret=1; }
 fi
 hash hostapd &gt;/dev/null 2&gt;&amp;1 || { echo &quot;hostapd not found, please install hostapd package.&quot;; ret=1; }
 return $ret
}

# function : cleanup the mess when exiting
function cleanup()
{
 # clean up a bit (the dirty way!)
 sysctl net.ipv4.ip_forward=0
 iptables-restore &lt;iptables.save &amp;&amp; echo &quot;iptables rules restored.&quot;
 killall hostapd &gt;/dev/null 2&gt;&amp;1 &amp;&amp; echo &quot;hostapd killed.&quot;
 [[ -f &quot;$TMP_CONF&quot; ]] &amp;&amp; rm &quot;$TMP_CONF&quot;
 killall dnsmasq &gt;/dev/null 2&gt;&amp;1 &amp;&amp; echo &quot;dnsmasq killed.&quot;
 killall dhclient &gt;/dev/null 2&gt;&amp;1 &amp;&amp; echo &quot;dhclient killed.&quot;
 ifconfig &quot;$MY_BRIDGE&quot; down &gt;/dev/null 2&gt;&amp;1
 sleep 2
 brctl delif &quot;$MY_BRIDGE&quot; &quot;$IF_BRIDGE&quot; &gt;/dev/null 2&gt;&amp;1
 brctl delif &quot;$MY_BRIDGE&quot; &quot;$WLAN&quot; &gt;/dev/null 2&gt;&amp;1
 brctl delbr &quot;$MY_BRIDGE&quot; &gt;/dev/null 2&gt;&amp;1 &amp;&amp; echo &quot;bridge $MY_BRIDGE destroyed.&quot;
}

# Main program

# check for requirements, abort eventually
checklist || exit 1

# trap for cleanup
trap cleanup SIGINT SIGTERM

# First, disable any network management software
echo -n &quot;&gt;&gt;&gt; Trying to disable any network management software... &quot;
service network-manager stop &gt;/dev/null 2&gt;&amp;1
service wicd stop &gt;/dev/null 2&gt;&amp;1
echo &quot;OK.&quot;

# If not using a bridge, start dnsmasq (dns and dhcp) server
if [[ -z &quot;$BRIDGE&quot; ]]; then
 killall dnsmasq &gt;/dev/null 2&gt;&amp;1
 # TODO : additional hosts file
 dnsmasq --interface &quot;$WLAN&quot; --dhcp-range=&quot;$DHCP_RANGE&quot; --log-queries || { echo &quot;dnsmasq failed to start!&quot;; exit 1; }
 # assign IP to the wireless interface
 ifconfig &quot;$WLAN&quot; &quot;$WLAN_IP&quot;

 # now you could start a webserver to share some files (eg. gatling lightweight www server)
 # and allow your SoftAP clients to go to http://$WLAN_IP/

 # save current firewall rules
 iptables-save &gt;iptables.save &amp;&amp; echo &quot;&gt;&gt;&gt; Current firewall configuration saved.&quot;
 # reset firewall rules
 iptables -F; iptables -X; iptables -P INPUT DROP; iptables -P OUTPUT ACCEPT; iptables -P FORWARD DROP
 # allow loopback
 iptables -A INPUT -i lo -j ACCEPT; iptables -A OUTPUT -o lo -j ACCEPT
 # allow already established connections on eth0 (useful for SSH)
 iptables -A INPUT -i $IF_IN -m state --state RELATED,ESTABLISHED -j ACCEPT
 # Allow ping on $IF_IN
 iptables -A INPUT -i $IF_IN -p icmp -m icmp --icmp-type 8 -j ACCEPT
 # allow SSH in, on $IF_IN only
 #iptables -A INPUT -i $IF_IN -p tcp -m tcp --dport 22 -j ACCEPT
 # allow HTTP in, on $IF_IN only (hotspot's web server)
 #iptables -A INPUT -i $IF_IN -p tcp -m tcp --dport 80 -j ACCEPT
 # allow DNS in, on $WLAN
 iptables -A INPUT -i $WLAN -p udp -m udp --dport 53 -j ACCEPT
 # allow DHCP in, on $WLAN
 iptables -A INPUT -i $WLAN -p udp -m udp --dport 67 -j ACCEPT
 # packet forwarding
 sysctl net.ipv4.ip_forward=1
 iptables -t nat -A POSTROUTING -o $IF_IN -j MASQUERADE
 iptables -A FORWARD -i $IF_IN -o $WLAN -m state --state RELATED,ESTABLISHED -j ACCEPT
 # allow HTTP and HTTPS to be forwarded
 iptables -A FORWARD -i $WLAN -o $IF_IN -p tcp -m tcp --dport 80 -j ACCEPT
 iptables -A FORWARD -i $WLAN -o $IF_IN -p tcp -m tcp --dport 443 -j ACCEPT
 #iptables -A FORWARD -i $WLAN -o $IF_IN -p tcp -m tcp --dport 8080 -j ACCEPT
 # uncomment below to allow SSH to be forwarded
 #iptables -A FORWARD -i $WLAN -o $IF_IN -p tcp -m tcp --dport 22 -j ACCEPT

 # (everything else will be forbidden)

else
 # we create a new network bridge to share network (and internet) access
 brctl addbr &quot;$MY_BRIDGE&quot;
 brctl addif &quot;$MY_BRIDGE&quot; &quot;$IF_BRIDGE&quot;
 # $WLAN interface will be added later to the bridge
fi

# create a temporary file with our hostapd conf
# (adapted from Realtek's examples)
# (see proprietary driver package from Realtek's website)
TMP_CONF=$(mktemp)
if [[ -z &quot;$TMP_CONF&quot; ]]; then
 echo &quot;Error creating hostapd temporary configuration file!&quot;
 ret=1
else
 # read-only for root
 chmod 600 &quot;$TMP_CONF&quot;
 cat &gt;&quot;$TMP_CONF&quot; &lt;&lt;EOF
# hostapd configuration starts here
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
interface=$WLAN
$BRIDGE
ssid=$SSID
channel=$CHANNEL
beacon_int=100
# (hardware limit for some wireless chipsets)
max_num_sta=8
hw_mode=g
# we use 802.11n (wifi N)
ieee80211n=1
wme_enabled=1
ht_capab=[SHORT-GI-20][SHORT-GI-40][HT40+]
# We use WPA2 of course
wpa=2
wpa_passphrase=$PASSPHRASE
wpa_key_mgmt=WPA-PSK
# Note: TKIP not supported with RTL8188RU chip!
wpa_pairwise=CCMP
wpa_group_rekey=86400
# other settings
logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=2
#dump_file=/tmp/hostapd.dump
dtim_period=2
rts_threshold=2347
fragm_threshold=2346
macaddr_acl=0
auth_algs=3
ignore_broadcast_ssid=0
wmm_enabled=1
wmm_ac_bk_cwmin=4
wmm_ac_bk_cwmax=10
wmm_ac_bk_aifs=7
wmm_ac_bk_txop_limit=0
wmm_ac_bk_acm=0
wmm_ac_be_aifs=3
wmm_ac_be_cwmin=4
wmm_ac_be_cwmax=10
wmm_ac_be_txop_limit=0
wmm_ac_be_acm=0
wmm_ac_vi_aifs=2
wmm_ac_vi_cwmin=3
wmm_ac_vi_cwmax=4
wmm_ac_vi_txop_limit=94
wmm_ac_vi_acm=0
wmm_ac_vo_aifs=2
wmm_ac_vo_cwmin=2
wmm_ac_vo_cwmax=3
wmm_ac_vo_txop_limit=47
wmm_ac_vo_acm=0
eapol_key_index_workaround=0
eap_server=0
own_ip_addr=127.0.0.1
EOF

 echo &quot;&gt;&gt;&gt; Starting hostapd.&quot;
 # start hostapd
 if ! hostapd $HOSTAPD_OPT &quot;$TMP_CONF&quot;; then
  echo &quot;hostapd failed to start.&quot;
  ret=1
 else
  # finally get an IP address for the bridge, only when using a bridge (assume we have a dhcp server in our LAN)
  [[ -n &quot;$BRIDGE&quot; ]] &amp;&amp; dhclient &quot;$MY_BRIDGE&quot; &amp;&amp; echo &quot;&gt;&gt;&gt; Network bridge $MY_BRIDGE is up.&quot;
  # TODO : handle dhclient failure
  [[ -z &quot;$BRIDGE&quot; ]] &amp;&amp; echo &quot;&gt;&gt;&gt; Using dnsmasq and iptables.&quot;

  iwconfig $WLAN
  echo &quot;&gt;&gt;&gt; SoftAP is up and running!            SSID = $SSID&quot;
  echo &quot;&gt;&gt;&gt; Hit ctrl-c to stop.&quot;
  # display syslog to see what happens
  tail -f /var/log/syslog
 fi
fi

cleanup
echo -e &quot;\n&gt;&gt;&gt; SoftAP terminated!&quot;
exit $ret

&lt;/code&gt;



== Tableau de compatibilité des adaptateurs sans fil ==

'''Concerne uniquement le fonctionnement en mode &quot;Master&quot; (appelé aussi &quot;Access Point&quot;, point d'accès) avec Hostapd!'''

'''Merci de renseigner tous les champs!'''

{| border=1
|+ Adaptateurs testés
! Marque
! Modèle exact (préciser interne ou usb)
! Constructeur
! PCI ID (lspci -n ou lsusb)
! Puce
! Module noyau (lsmod)
! Version Debian
! Version noyau Linux
! Firmware non libre (précisez)
! Votre pseudo sur Debian-fr
! Remarques (Stabilité, préciser si modifications des paramètres de configuration de hostapd...)
|-
|Ralink
|RT5390 (interne)
|Ralink
|1814:539f
|RT5390
|[https://wikidevi.com/wiki/Rt2800pci rt2800pci]
|Debian 7
|3.2
|firmware-ralink
|AgentSteel
|style=&quot;background-color: lightgreen;&quot;|Très stable.
|-
|TP-Link
|[https://wikidevi.com/wiki/TP-LINK_TL-WN722N TL-WN722N] (usb)
|Atheros
|0cf3:9271
|[https://wikidevi.com/wiki/AR9271 AR9271]
|[https://wikidevi.com/wiki/Ath9k_htc ath9k_htc]
|Debian 7
|3.2
|firmware-atheros
|AgentSteel
|style=&quot;background-color: lightgreen;&quot;|Très stable.
|-
|TP-Link
|[https://wikidevi.com/wiki/TP-LINK_TL-WN823N_v1 TL-WN823N] (usb)
|Realtek
|0bda:8178
|RTL8192CU
|[https://wikidevi.com/wiki/Rtl8192cu rtl8192cu]
|Debian 7
|3.2
|firmware-realtek
|AgentSteel
|style=&quot;background-color: red;&quot;|Pas stable, déconnexions trop fréquentes. A tester avec les [http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=1&amp;PNid=21&amp;PFid=48&amp;Level=5&amp;Conn=4&amp;ProdID=274&amp;DownTypeID=3&amp;GetDown=false&amp;Downloads=true#2772 pilotes propriétaires Realtek])
|-
|Alfa Networks
|[https://wikidevi.com/wiki/ALFA_Network_AWUS036NHR_v1 AWUS036NHR v1] (usb)
|Realtek
|0bda:817f
|RTL8188RU
|[https://wikidevi.com/wiki/Rtl8192cu rtl8192cu]
|Debian 7
|3.2
|firmware-realtek
|AgentSteel
|style=&quot;background-color: orange;&quot;|Quelques déconnexions, à voir sur la durée. A tester avec les [http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=1&amp;PNid=21&amp;PFid=48&amp;Level=5&amp;Conn=4&amp;ProdID=274&amp;DownTypeID=3&amp;GetDown=false&amp;Downloads=true#2772 pilotes propriétaires Realtek])
|-
|Belkin
|[https://wikidevi.com/wiki/Belkin_F5D7050_v3 F5D7050 v3] (usb)
|Ralink
|050d:705a
|RT2571W
|[https://wikidevi.com/wiki/Rt73usb rt73usb]
|Debian 7
|3.2
|firmware-ralink
|AgentSteel
|style=&quot;background-color: lightgreen;&quot;|Très stable. Wifi G seulement, donc mettre ieee80211n=0 dans hostapd
|-
|}


== Liens utiles ==

* [http://wireless.kernel.org/ Wireless.kernel.org] Le wiki officiel du sans fil pour le noyau Linux (anglais)
* [https://wikidevi.com/wiki/Main_Page WikiDevi] Wiki dédié au recensement de matériel sans fil (anglais)</text>
      <sha1>867gir71z3yjdob39sg8okm7zjlix00</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5605</id>
      <parentid>5604</parentid>
      <timestamp>2014-04-26T11:13:53Z</timestamp>
      <contributor>
        <username>Agentsteel</username>
        <id>260</id>
      </contributor>
      <comment>ajout intel 5100</comment>
      <text xml:space="preserve" bytes="13249">Sur cette page vous trouverez un script Bash qui vous permettra :

* de tester rapidement si votre interface sans fil est compatible avec le mode &quot;Master&quot; (via le logiciel [https://packages.debian.org/search?keywords=hostapd hostapd]) sous GNU/Linux. (Complétez le tableau en bas de page!)
* de mettre en place rapidement un point d'accès sans fil d'appoint.



== Le matériel requis ==

Un ordinateur (portable ou fixe) équipé :

* de votre distribution Debian favorite,
* d'une interface réseau filaire,
* et d'une interface réseau sans fil (interne ou usb) supportée par le noyau Linux.


== Utilisation du script ==

1. Copiez/collez le script dans un fichier &quot;hotspot2014.sh&quot; (par exemple) que vous enregistrez dans votre répertoire personnel

2. Ajustez les variables : WLAN (si besoin), SSID, CHANNEL, PASSPHRASE (au minimum)

3. Donnez-lui les droits d'éxécution. Dans un shell :
&lt;code&gt;chmod +x hotspot2014.sh&lt;/code&gt;

4. Ce script doit être lancé avec les droits superutilisateur (root)
&lt;code&gt;su&lt;/code&gt;
&lt;code&gt;./hotspot2014.sh&lt;/code&gt;


Le script propose deux modes de fonctionnement :

* le mode &quot;dnsmasq/iptables&quot; : un serveur DNS et DHCP local est créé, les paquets réseau transitent entre les deux interfaces réseau via les règles du pare-feu. Avantage : permet de logguer le trafic DHCP et DNS (très instructif!) et de filtrer les flux réseau.

Note : par défaut seuls les ports 80 (HTTP) et 443 (HTTPS) sont autorisés par le point d'accès. Si besoin d'autoriser d'autres protocoles, ajouter les règles iptables à la suite.

Pour avoir ce mode de fonctionnement il suffit de '''commenter''' la ligne
&lt;code&gt;#BRIDGE=&quot;bridge=$MY_BRIDGE&quot;&lt;/code&gt;
(ce qui est fait par défaut)

ou

* le mode &quot;bridge&quot; (pont réseau) entre l'interface filaire et l'interface sans fil. Aucun filtrage de paquets, pas de logging DHCP et DNS.

Pour avoir ce mode de fonctionnement il suffit de '''décommenter''' la ligne
&lt;code&gt;BRIDGE=&quot;bridge=$MY_BRIDGE&quot;&lt;/code&gt;


Une dernière chose :

* Cela fonctionne pour vous? N'hésitez pas à remplir le tableau de compatibilité en fin de page. Merci!

* Cela ne fonctionne pas? N'hésitez pas à ré-essayer avec : 
  * un noyau plus récent (celui des dépôts backports par exemple)
  * une version plus récente de [http://hostap.epitest.fi/hostapd/ hostapd] (ne devrait pas poser trop de problèmes à compiler soi-même)


=== Notes ===

* Le script est pour le moment commenté dans la langue de Shakespeare mais pourra être traduit si besoin!
* N'hésitez pas à le corriger si vous trouvez un bug!


&lt;code bash&gt;
#!/bin/bash
#
# hotspot2014.sh
#
# Wireless Access Point (SoftAP)
#
# by AgentSteel for Debian-fr.org
# 24/Apr/2014
#
# USE AT YOUR OWN RISK!
#
# Tested on Debian Wheezy (7.0)
#
# Two modes of operation :
#  - with a network bridge (see BRIDGE variable) for transparent connection sharing (no DNS logging...)
#   or
#  - with dnsmasq and iptables for packet forwarding between network interfaces (DNS logging)
#
# Run this script as root.
# This script will likely stop currently running network connections.
# You may also need to disable your local firewall.
#
# Required : dhclient, hostapd, firmware-realtek (non-free)
# Optional : bridge-utils, dnsmasq

# Adjust your settings here
WLAN=&quot;wlan0&quot;

# the IP address of your SoftAP interface (if using dnsmasq)
# and the corresponding IP range for your SoftAP clients (if using dnsmasq)
WLAN_IP=&quot;192.168.9.50&quot;
DHCP_RANGE=&quot;192.168.9.51,192.168.9.60&quot;

# your SoftAP SSID, channel and passphrase
SSID=&quot;alfa_test&quot;
CHANNEL=3
PASSPHRASE=&quot;changeme99&quot;

# Set your desired bridge interface name here
MY_BRIDGE=&quot;ap-br0&quot;
# and the other network interface for bridge
IF_BRIDGE=&quot;eth0&quot;

# Uncomment to use bridging, or comment to use dnsmasq/iptables
#BRIDGE=&quot;bridge=$MY_BRIDGE&quot;

# (input) network interface when using dnsmasq/iptables
IF_IN=&quot;eth0&quot;

# Set to &quot;-d&quot; for hostapd debugging output
# or &quot;-B&quot; (background mode) for default operation
HOSTAPD_OPT=&quot;-B&quot;

# global exit code for script (0 = no error)
ret=0

# function : check for required software
function checklist()
{
 local ret=0
 # check if running as root
 [[ $EUID -ne 0 ]] &amp;&amp; { echo &quot;You must be root to run this script!&quot;; ret=1; }
 if [[ -n &quot;$BRIDGE&quot; ]]; then
  # when using a bridge, ensure brctl is found
  hash brctl &gt;/dev/null 2&gt;&amp;1 || { echo &quot;brctl not found, please install bridge-utils package.&quot;; ret=1; }
 else
  # not using a bridge, we need dnsmasq and iptables
  hash dnsmasq &gt;/dev/null 2&gt;&amp;1 || { echo &quot;dnsmasq not found, please install dnsmasq package.&quot;; ret=1; }
  hash iptables &gt;/dev/null 2&gt;&amp;1 || { echo &quot;iptables not found, please install iptables package.&quot;; ret=1; }
 fi
 hash hostapd &gt;/dev/null 2&gt;&amp;1 || { echo &quot;hostapd not found, please install hostapd package.&quot;; ret=1; }
 return $ret
}

# function : cleanup the mess when exiting
function cleanup()
{
 # clean up a bit (the dirty way!)
 sysctl net.ipv4.ip_forward=0
 iptables-restore &lt;iptables.save &amp;&amp; echo &quot;iptables rules restored.&quot;
 killall hostapd &gt;/dev/null 2&gt;&amp;1 &amp;&amp; echo &quot;hostapd killed.&quot;
 [[ -f &quot;$TMP_CONF&quot; ]] &amp;&amp; rm &quot;$TMP_CONF&quot;
 killall dnsmasq &gt;/dev/null 2&gt;&amp;1 &amp;&amp; echo &quot;dnsmasq killed.&quot;
 killall dhclient &gt;/dev/null 2&gt;&amp;1 &amp;&amp; echo &quot;dhclient killed.&quot;
 ifconfig &quot;$MY_BRIDGE&quot; down &gt;/dev/null 2&gt;&amp;1
 sleep 2
 brctl delif &quot;$MY_BRIDGE&quot; &quot;$IF_BRIDGE&quot; &gt;/dev/null 2&gt;&amp;1
 brctl delif &quot;$MY_BRIDGE&quot; &quot;$WLAN&quot; &gt;/dev/null 2&gt;&amp;1
 brctl delbr &quot;$MY_BRIDGE&quot; &gt;/dev/null 2&gt;&amp;1 &amp;&amp; echo &quot;bridge $MY_BRIDGE destroyed.&quot;
}

# Main program

# check for requirements, abort eventually
checklist || exit 1

# trap for cleanup
trap cleanup SIGINT SIGTERM

# First, disable any network management software
echo -n &quot;&gt;&gt;&gt; Trying to disable any network management software... &quot;
service network-manager stop &gt;/dev/null 2&gt;&amp;1
service wicd stop &gt;/dev/null 2&gt;&amp;1
echo &quot;OK.&quot;

# If not using a bridge, start dnsmasq (dns and dhcp) server
if [[ -z &quot;$BRIDGE&quot; ]]; then
 killall dnsmasq &gt;/dev/null 2&gt;&amp;1
 # TODO : additional hosts file
 dnsmasq --interface &quot;$WLAN&quot; --dhcp-range=&quot;$DHCP_RANGE&quot; --log-queries || { echo &quot;dnsmasq failed to start!&quot;; exit 1; }
 # assign IP to the wireless interface
 ifconfig &quot;$WLAN&quot; &quot;$WLAN_IP&quot;

 # now you could start a webserver to share some files (eg. gatling lightweight www server)
 # and allow your SoftAP clients to go to http://$WLAN_IP/

 # save current firewall rules
 iptables-save &gt;iptables.save &amp;&amp; echo &quot;&gt;&gt;&gt; Current firewall configuration saved.&quot;
 # reset firewall rules
 iptables -F; iptables -X; iptables -P INPUT DROP; iptables -P OUTPUT ACCEPT; iptables -P FORWARD DROP
 # allow loopback
 iptables -A INPUT -i lo -j ACCEPT; iptables -A OUTPUT -o lo -j ACCEPT
 # allow already established connections on eth0 (useful for SSH)
 iptables -A INPUT -i $IF_IN -m state --state RELATED,ESTABLISHED -j ACCEPT
 # Allow ping on $IF_IN
 iptables -A INPUT -i $IF_IN -p icmp -m icmp --icmp-type 8 -j ACCEPT
 # allow SSH in, on $IF_IN only
 #iptables -A INPUT -i $IF_IN -p tcp -m tcp --dport 22 -j ACCEPT
 # allow HTTP in, on $IF_IN only (hotspot's web server)
 #iptables -A INPUT -i $IF_IN -p tcp -m tcp --dport 80 -j ACCEPT
 # allow DNS in, on $WLAN
 iptables -A INPUT -i $WLAN -p udp -m udp --dport 53 -j ACCEPT
 # allow DHCP in, on $WLAN
 iptables -A INPUT -i $WLAN -p udp -m udp --dport 67 -j ACCEPT
 # packet forwarding
 sysctl net.ipv4.ip_forward=1
 iptables -t nat -A POSTROUTING -o $IF_IN -j MASQUERADE
 iptables -A FORWARD -i $IF_IN -o $WLAN -m state --state RELATED,ESTABLISHED -j ACCEPT
 # allow HTTP and HTTPS to be forwarded
 iptables -A FORWARD -i $WLAN -o $IF_IN -p tcp -m tcp --dport 80 -j ACCEPT
 iptables -A FORWARD -i $WLAN -o $IF_IN -p tcp -m tcp --dport 443 -j ACCEPT
 #iptables -A FORWARD -i $WLAN -o $IF_IN -p tcp -m tcp --dport 8080 -j ACCEPT
 # uncomment below to allow SSH to be forwarded
 #iptables -A FORWARD -i $WLAN -o $IF_IN -p tcp -m tcp --dport 22 -j ACCEPT

 # (everything else will be forbidden)

else
 # we create a new network bridge to share network (and internet) access
 brctl addbr &quot;$MY_BRIDGE&quot;
 brctl addif &quot;$MY_BRIDGE&quot; &quot;$IF_BRIDGE&quot;
 # $WLAN interface will be added later to the bridge
fi

# create a temporary file with our hostapd conf
# (adapted from Realtek's examples)
# (see proprietary driver package from Realtek's website)
TMP_CONF=$(mktemp)
if [[ -z &quot;$TMP_CONF&quot; ]]; then
 echo &quot;Error creating hostapd temporary configuration file!&quot;
 ret=1
else
 # read-only for root
 chmod 600 &quot;$TMP_CONF&quot;
 cat &gt;&quot;$TMP_CONF&quot; &lt;&lt;EOF
# hostapd configuration starts here
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
interface=$WLAN
$BRIDGE
ssid=$SSID
channel=$CHANNEL
beacon_int=100
# (hardware limit for some wireless chipsets)
max_num_sta=8
hw_mode=g
# we use 802.11n (wifi N)
ieee80211n=1
wme_enabled=1
ht_capab=[SHORT-GI-20][SHORT-GI-40][HT40+]
# We use WPA2 of course
wpa=2
wpa_passphrase=$PASSPHRASE
wpa_key_mgmt=WPA-PSK
# Note: TKIP not supported with RTL8188RU chip!
wpa_pairwise=CCMP
wpa_group_rekey=86400
# other settings
logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=2
#dump_file=/tmp/hostapd.dump
dtim_period=2
rts_threshold=2347
fragm_threshold=2346
macaddr_acl=0
auth_algs=3
ignore_broadcast_ssid=0
wmm_enabled=1
wmm_ac_bk_cwmin=4
wmm_ac_bk_cwmax=10
wmm_ac_bk_aifs=7
wmm_ac_bk_txop_limit=0
wmm_ac_bk_acm=0
wmm_ac_be_aifs=3
wmm_ac_be_cwmin=4
wmm_ac_be_cwmax=10
wmm_ac_be_txop_limit=0
wmm_ac_be_acm=0
wmm_ac_vi_aifs=2
wmm_ac_vi_cwmin=3
wmm_ac_vi_cwmax=4
wmm_ac_vi_txop_limit=94
wmm_ac_vi_acm=0
wmm_ac_vo_aifs=2
wmm_ac_vo_cwmin=2
wmm_ac_vo_cwmax=3
wmm_ac_vo_txop_limit=47
wmm_ac_vo_acm=0
eapol_key_index_workaround=0
eap_server=0
own_ip_addr=127.0.0.1
EOF

 echo &quot;&gt;&gt;&gt; Starting hostapd.&quot;
 # start hostapd
 if ! hostapd $HOSTAPD_OPT &quot;$TMP_CONF&quot;; then
  echo &quot;hostapd failed to start.&quot;
  ret=1
 else
  # finally get an IP address for the bridge, only when using a bridge (assume we have a dhcp server in our LAN)
  [[ -n &quot;$BRIDGE&quot; ]] &amp;&amp; dhclient &quot;$MY_BRIDGE&quot; &amp;&amp; echo &quot;&gt;&gt;&gt; Network bridge $MY_BRIDGE is up.&quot;
  # TODO : handle dhclient failure
  [[ -z &quot;$BRIDGE&quot; ]] &amp;&amp; echo &quot;&gt;&gt;&gt; Using dnsmasq and iptables.&quot;

  iwconfig $WLAN
  echo &quot;&gt;&gt;&gt; SoftAP is up and running!            SSID = $SSID&quot;
  echo &quot;&gt;&gt;&gt; Hit ctrl-c to stop.&quot;
  # display syslog to see what happens
  tail -f /var/log/syslog
 fi
fi

cleanup
echo -e &quot;\n&gt;&gt;&gt; SoftAP terminated!&quot;
exit $ret

&lt;/code&gt;



== Tableau de compatibilité des adaptateurs sans fil ==

'''Concerne uniquement le fonctionnement en mode &quot;Master&quot; (appelé aussi &quot;Access Point&quot;, point d'accès) avec Hostapd!'''

'''Merci de renseigner tous les champs!'''

{| border=1
|+ Adaptateurs testés
! Marque
! Modèle exact (préciser interne ou usb)
! Constructeur
! PCI ID (lspci -n ou lsusb)
! Puce
! Module noyau (lsmod)
! Version Debian
! Version noyau Linux
! Firmware non libre (précisez)
! Votre pseudo sur Debian-fr
! Remarques (Stabilité, préciser si modifications des paramètres de configuration de hostapd...)
|-
|Ralink
|RT5390 (interne)
|Ralink
|1814:539f
|RT5390
|[https://wikidevi.com/wiki/Rt2800pci rt2800pci]
|Debian 7
|3.2
|firmware-ralink
|AgentSteel
|style=&quot;background-color: lightgreen;&quot;|Très stable.
|-
|TP-Link
|[https://wikidevi.com/wiki/TP-LINK_TL-WN722N TL-WN722N] (usb)
|Atheros
|0cf3:9271
|[https://wikidevi.com/wiki/AR9271 AR9271]
|[https://wikidevi.com/wiki/Ath9k_htc ath9k_htc]
|Debian 7
|3.2
|firmware-atheros
|AgentSteel
|style=&quot;background-color: lightgreen;&quot;|Très stable.
|-
|TP-Link
|[https://wikidevi.com/wiki/TP-LINK_TL-WN823N_v1 TL-WN823N] (usb)
|Realtek
|0bda:8178
|RTL8192CU
|[https://wikidevi.com/wiki/Rtl8192cu rtl8192cu]
|Debian 7
|3.2
|firmware-realtek
|AgentSteel
|style=&quot;background-color: red;&quot;|Pas stable, déconnexions trop fréquentes. A tester avec les [http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=1&amp;PNid=21&amp;PFid=48&amp;Level=5&amp;Conn=4&amp;ProdID=274&amp;DownTypeID=3&amp;GetDown=false&amp;Downloads=true#2772 pilotes propriétaires Realtek])
|-
|Alfa Networks
|[https://wikidevi.com/wiki/ALFA_Network_AWUS036NHR_v1 AWUS036NHR v1] (usb)
|Realtek
|0bda:817f
|RTL8188RU
|[https://wikidevi.com/wiki/Rtl8192cu rtl8192cu]
|Debian 7
|3.2
|firmware-realtek
|AgentSteel
|style=&quot;background-color: orange;&quot;|Quelques déconnexions, à voir sur la durée. A tester avec les [http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=1&amp;PNid=21&amp;PFid=48&amp;Level=5&amp;Conn=4&amp;ProdID=274&amp;DownTypeID=3&amp;GetDown=false&amp;Downloads=true#2772 pilotes propriétaires Realtek])
|-
|Belkin
|[https://wikidevi.com/wiki/Belkin_F5D7050_v3 F5D7050 v3] (usb)
|Ralink
|050d:705a
|RT2571W
|[https://wikidevi.com/wiki/Rt73usb rt73usb]
|Debian 7
|3.2
|firmware-ralink
|AgentSteel
|style=&quot;background-color: lightgreen;&quot;|Très stable. Wifi G seulement, donc mettre ieee80211n=0 dans hostapd
|-
|Intel
|[https://wikidevi.com/wiki/Intel_WiFi_Link_5100_%28abgn,_full_size%29 WiFi Link 5100 AGN] (interne)
|Intel
|8086:4232 subsys 8086:1201 (lspci -nn -v)
|WG82541
|[http://wireless.kernel.org/en/users/Drivers/iwlwifi iwlwifi]
|Debian 7
|3.2
|firmware-iwlwifi
|AgentSteel
|style=&quot;background-color: red;&quot;|Mode AP non supporté? A tester avec config logicielle différente.
|-
|}


== Liens utiles ==

* [http://wireless.kernel.org/ Wireless.kernel.org] Le wiki officiel du sans fil pour le noyau Linux (anglais)
* [https://wikidevi.com/wiki/Main_Page WikiDevi] Wiki dédié au recensement de matériel sans fil (anglais)</text>
      <sha1>b5e255xf550aocij4qo9jhxzgbrkzz4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Identification matériel-pilotes</title>
    <ns>0</ns>
    <id>286</id>
    <revision>
      <id>1248</id>
      <timestamp>2010-04-01T14:10:56Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « Le site cité ci-dessous mérite d'être mis en avant, tellement il est pratique pour identifier convenablement son matériel, et savoir s'il est compatible...  :[http://kmut… »</comment>
      <text xml:space="preserve" bytes="1040">Le site cité ci-dessous mérite d'être mis en avant, tellement il est pratique pour identifier convenablement son matériel, et savoir s'il est compatible...

:[http://kmuto.jp/debian/hcl/ Outil Debian GNU/Linux d'identification matériel-pilotes]

Le principe est simple...

# lspci -n 

Et vous copiez le résultat sur le site... Il vous aidera à identifier le matériel et le pilote qui le fera fonctionner !

Précision :

&gt; Cette base de données utilise la PCI map du kernel Debian 2.6.32-trunk-686 .

&gt; Le résultat ne garantit pas que votre matériel sera parfaitement supporté.

&gt; Cette base de données vérifie uniquement les composants PCI pour le moment. Les pilotes X, ISA, USB, IEEE1394 ne sont pas concernés.


Source et précision sur ces fils :

*[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=3834&amp;start=0 pour connaître son matos]
*[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=19898&amp;start=0  Outil Debian GNU/Linux d'identification matériel-pilotes]

----
--[[Utilisateur:Lol|Lol]] 1 avril 2010 à 14:10 (UTC)</text>
      <sha1>oyrq0fzclezkkkfu08t4vo4b45cc775</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1249</id>
      <parentid>1248</parentid>
      <timestamp>2010-04-01T14:12:43Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1077">Le site cité ci-dessous mérite d'être mis en avant, tellement il est pratique pour identifier convenablement son matériel, et savoir s'il est compatible...

:[http://kmuto.jp/debian/hcl/ Outil Debian GNU/Linux d'identification matériel-pilotes]

Le principe est simple...

# lspci -n 

Et vous copiez le résultat sur le site... Il vous aidera à identifier le matériel et le pilote qui le fera fonctionner !

Précision :

&gt; Cette base de données utilise la PCI map du kernel Debian 2.6.32-trunk-686 .

&gt; Le résultat ne garantit pas que votre matériel sera parfaitement supporté.

&gt; Cette base de données vérifie uniquement les composants PCI pour le moment. Les pilotes X, ISA, USB, IEEE1394 ne sont pas concernés.


Source et précision sur ces fils :

*[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=3834&amp;start=0 pour connaître son matos]
*[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=19898&amp;start=0  Outil Debian GNU/Linux d'identification matériel-pilotes]

----
--[[Utilisateur:Lol|Lol]] 1 avril 2010 à 14:10 (UTC)

[[Catégorie:Matériel et Drivers]]</text>
      <sha1>m2jz81cyv1cdj7v8kk5a25vleca9rft</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1252</id>
      <parentid>1249</parentid>
      <timestamp>2010-04-01T18:00:49Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1078">Le site cité ci-dessous mérite d'être mis en avant, tellement il est pratique pour identifier convenablement son matériel, et savoir s'il est compatible...

:[http://kmuto.jp/debian/hcl/ Outil Debian GNU/Linux d'identification matériel-pilotes]

Le principe est simple...

 # lspci -n 

Et vous copiez le résultat sur le site... Il vous aidera à identifier le matériel et le pilote qui le fera fonctionner !

Précision :

&gt; Cette base de données utilise la PCI map du kernel Debian 2.6.32-trunk-686 .

&gt; Le résultat ne garantit pas que votre matériel sera parfaitement supporté.

&gt; Cette base de données vérifie uniquement les composants PCI pour le moment. Les pilotes X, ISA, USB, IEEE1394 ne sont pas concernés.


Source et précision sur ces fils :

*[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=3834&amp;start=0 pour connaître son matos]
*[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=19898&amp;start=0  Outil Debian GNU/Linux d'identification matériel-pilotes]

----
--[[Utilisateur:Lol|Lol]] 1 avril 2010 à 14:10 (UTC)

[[Catégorie:Matériel et Drivers]]</text>
      <sha1>cyfpgk51h41hvae06nnu2cn3d4sh2pm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2067</id>
      <parentid>1252</parentid>
      <timestamp>2010-09-10T18:41:56Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1073">Le site cité ci-dessous mérite d'être mis en avant, tellement il est pratique pour identifier convenablement son matériel, et savoir s'il est compatible...

:[http://kmuto.jp/debian/hcl/ Outil Debian GNU/Linux d'identification matériel-pilotes]

Le principe est simple...

 # lspci -n 

Et vous copiez le résultat sur le site... Il vous aidera à identifier le matériel et le pilote qui le fera fonctionner !

Précision :

&gt; Cette base de données utilise la PCI map du kernel Debian 2.6.34-1-686.

&gt; Le résultat ne garantit pas que votre matériel sera parfaitement supporté.

&gt; Cette base de données vérifie uniquement les composants PCI pour le moment. Les pilotes X, ISA, USB, IEEE1394 ne sont pas concernés.


Source et précision sur ces fils :

*[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=3834&amp;start=0 pour connaître son matos]
*[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=19898&amp;start=0  Outil Debian GNU/Linux d'identification matériel-pilotes]

----
--[[Utilisateur:Lol|Lol]] 1 avril 2010 à 14:10 (UTC)

[[Catégorie:Matériel et Drivers]]</text>
      <sha1>oddazsi05wr213uu9syersjr4a55xmt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2610</id>
      <parentid>2067</parentid>
      <timestamp>2010-12-29T05:46:42Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1146">
Le site cité ci-dessous mérite d'être mis en avant, tellement il est pratique pour identifier convenablement son matériel, et savoir s'il est compatible...

:[http://kmuto.jp/debian/hcl/ Outil Debian GNU/Linux d'identification matériel-pilotes]

Le principe est simple...

 # lspci -n 

Et vous copiez le résultat sur le site... Il vous aidera à identifier le matériel et le pilote qui le fera fonctionner !

Précision :

&gt; Cette base de données utilise la PCI map du kernel Debian 2.6.34-1-686.

&gt; Le résultat ne garantit pas que votre matériel sera parfaitement supporté.

&gt; Cette base de données vérifie uniquement les composants PCI pour le moment. Les pilotes X, ISA, USB, IEEE1394 ne sont pas concernés.



[[Commandes_informations|Voir aussi: Les commandes d'informations]]



Source et précision sur ces fils :

*[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=3834&amp;start=0 pour connaître son matos]
*[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=19898&amp;start=0  Outil Debian GNU/Linux d'identification matériel-pilotes]

----
--[[Utilisateur:Lol|Lol]] 1 avril 2010 à 14:10 (UTC)

[[Catégorie:Matériel et Drivers]]</text>
      <sha1>m60xh45alhnbk52psvzz3jvskbpa3nb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2959</id>
      <parentid>2610</parentid>
      <timestamp>2011-05-05T03:46:53Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1149">Le site cité ci-dessous mérite d'être mis en avant, tellement il est pratique pour identifier convenablement son matériel, et savoir s'il est compatible...

:[http://kmuto.jp/debian/hcl/ Outil Debian GNU/Linux d'identification matériel-pilotes]

Le principe est simple...

 # lspci -n 

Et vous copiez le résultat sur le site... Il vous aidera à identifier le matériel et le pilote qui le fera fonctionner !

Précision :

&gt; Cette base de données utilise la PCI map du kernel Debian 2.6.37-trunk-686.

&gt; Le résultat ne garantit pas que votre matériel sera parfaitement supporté.

&gt; Cette base de données vérifie uniquement les composants PCI pour le moment. Les pilotes X, ISA, USB, IEEE1394 ne sont pas concernés.



[[Commandes_informations|Voir aussi: Les commandes d'informations]]



Source et précision sur ces fils :

*[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=3834&amp;start=0 pour connaître son matos]
*[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=19898&amp;start=0  Outil Debian GNU/Linux d'identification matériel-pilotes]

----
--[[Utilisateur:Lol|Lol]] 1 avril 2010 à 14:10 (UTC)

[[Catégorie:Matériel et Drivers]]</text>
      <sha1>mriwuzj91nkhyn6d12qddjukm8m2u3j</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3855</id>
      <parentid>2959</parentid>
      <timestamp>2012-02-27T08:03:19Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>kernel Debian 3.1.0-1-686-pae</comment>
      <text xml:space="preserve" bytes="1148">Le site cité ci-dessous mérite d'être mis en avant, tellement il est pratique pour identifier convenablement son matériel, et savoir s'il est compatible...

:[http://kmuto.jp/debian/hcl/ Outil Debian GNU/Linux d'identification matériel-pilotes]

Le principe est simple...

 # lspci -n 

Et vous copiez le résultat sur le site... Il vous aidera à identifier le matériel et le pilote qui le fera fonctionner !

Précision :

&gt; Cette base de données utilise la PCI map du kernel Debian 3.1.0-1-686-pae.

&gt; Le résultat ne garantit pas que votre matériel sera parfaitement supporté.

&gt; Cette base de données vérifie uniquement les composants PCI pour le moment. Les pilotes X, ISA, USB, IEEE1394 ne sont pas concernés.



[[Commandes_informations|Voir aussi: Les commandes d'informations]]



Source et précision sur ces fils :

*[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=3834&amp;start=0 pour connaître son matos]
*[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=19898&amp;start=0  Outil Debian GNU/Linux d'identification matériel-pilotes]

----
--[[Utilisateur:Lol|Lol]] 1 avril 2010 à 14:10 (UTC)

[[Catégorie:Matériel et Drivers]]</text>
      <sha1>igmilh0ba46gg6gkxy5b6hshz3ytilr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Images pour firmwares non reconnus</title>
    <ns>0</ns>
    <id>507</id>
    <revision>
      <id>1993</id>
      <timestamp>2010-08-20T11:42:49Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « L'info provient de ce topic :http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=29318  Vous avez des problèmes pour installer Debian car votre matériel réseau, trop récent ou... »</comment>
      <text xml:space="preserve" bytes="627">L'info provient de ce topic :http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=29318

Vous avez des problèmes pour installer Debian car votre matériel réseau, trop récent ou non libre n'est pas pris en charge par les images classiques de Debian ?

Voici peut-être la solution : http://lists.debian.org/debian-cd/2010/08/msg00015.html

Ce message vous renverra sur le site suivant : http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/ ou vous trouverez des images Sid et Squeeze incluant des firmwares que l'on ne trouve pas dans les images classiques Debian.

[[Category:Matériel et Drivers Divers]]</text>
      <sha1>172jvvhf5icn2ql700190jxtukdqnj5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2297</id>
      <parentid>1993</parentid>
      <timestamp>2010-11-16T19:48:03Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="9843">L'info provient de ce topic :http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=29318

Vous avez des problèmes pour installer Debian car votre matériel réseau, trop récent ou non libre n'est pas pris en charge par les images classiques de Debian ?

Voici peut-être la solution : http://lists.debian.org/debian-cd/2010/08/msg00015.html

Ce message vous renverra sur le site suivant : http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/ ou vous trouverez des images Sid et Squeeze incluant des firmwares que l'on ne trouve pas dans les images classiques Debian.


Avec cette ligne de code vous récupérerez la liste des firmwares supportée :

&lt;pre style=&quot;width:1000px;overflow:auto;&quot;&gt;

cd /tmp;wget http://cdimage.debian.org/cdimage/unofficial/non-free/firmware/squeeze/current/firmware.zip;unzip firmware.zip; for i in *deb;do dpkg --info $i|grep '^[ ]\+\*'|sed 's/^[ ]\+\*/*/g'&gt;&gt;liste_firmware.tmp;done;sort liste_firmware.tmp &gt; liste_firmware; rm *.deb firmware.zip liste_firmware.tmp; echo &quot;Terminé...&quot;

&lt;/pre&gt;


Comme ceci :
&lt;code&gt;
$ cat liste_firmware 
 * Broadcom NetXtremeII 5706/5708 firmware, version Linux 2.6.25 (bnx2-06-4.0.5.fw)
 * Broadcom NetXtremeII 5709 firmware, version Linux 2.6.25 (bnx2-09-4.0.5.fw)
 * Broadcom NetXtremeII 5706/5708 firmware, version Linux 2.6.29 (bnx2-06-4.6.16.fw)
 * Broadcom NetXtremeII 5709/5716 firmware, version Linux 2.6.29 (bnx2-09-4.6.15.fw)
 * Broadcom NetXtremeII 5706/5708 firmware (mips), version Linux 2.6.30 (bnx2/bnx2-mips-06-4.6.16.fw)
 * Broadcom NetXtremeII 5706/5708 firmware (rv2p), version Linux 2.6.30 (bnx2/bnx2-rv2p-06-4.6.16.fw)
 * Broadcom NetXtremeII 5709/5716 firmware (mips), version Linux 2.6.30 (bnx2/bnx2-mips-09-4.6.17.fw)
 * Broadcom NetXtremeII 5709/5716 firmware (rv2p), version Linux 2.6.30 (bnx2/bnx2-rv2p-09-4.6.15.fw)
 * Broadcom NetXtremeII 5706/5708 firmware (mips), version Linux 2.6.32 (bnx2/bnx2-mips-06-5.0.0.j3.fw)
 * Broadcom NetXtremeII 5706/5708 firmware (rv2p), version Linux 2.6.32 (bnx2/bnx2-rv2p-06-5.0.0.j3.fw)
 * Broadcom NetXtremeII 5709/5716 firmware (mips), version Linux 2.6.32 (bnx2/bnx2-mips-09-5.0.0.j3.fw)
 * Broadcom NetXtremeII 5709/5716 firmware (rv2p), version Linux 2.6.32 (bnx2/bnx2-rv2p-09-5.0.0.j3.fw)
 * Broadcom NetXtremeII 5709 A0/A1 firmware (rv2p), version Linux 2.6.32 (bnx2/bnx2-rv2p-09ax-5.0.0.j3.fw)
 * Broadcom NetXtreme II 10Gb 57710, version 4.8.53.0 (bnx2x-e1-4.8.53.0.fw)
 * Broadcom NetXtreme II 10Gb 57711, version 4.8.53.0 (bnx2x-e1h-4.8.53.0.fw)
 * Broadcom NetXtreme II 10Gb 57710, version 5.0.21.0 (bnx2x-e1-5.0.21.0.fw)
 * Broadcom NetXtreme II 10Gb 57711, version 5.0.21.0 (bnx2x-e1h-5.0.21.0.fw)
 * Intel Pro Wireless 2100 firmware (bootstrap), version 1.3 (ipw2100-1.3.fw)
 * Intel Pro Wireless 2100 firmware (ibss mode), version 1.3 (ipw2100-1.3-i.fw)
 * Intel Pro Wireless 2100 firmware (monitor mode), version 1.3 (ipw2100-1.3-p.fw)
 * Intel Pro Wireless 2200/2915 firmware (bss), version 3.1 (ipw2200-bss.fw)
 * Intel Pro Wireless 2200/2915 firmware (ibss), version 3.1 (ipw2200-ibss.fw)
 * Intel Pro Wireless 2200/2915 firmware (snf), version 3.1 (ipw2200-sniffer.fw)
 * Intel Wireless 1000 firmware, version 128.50.3.1 (iwlwifi-1000-3.ucode)
 * Intel Wireless 3945 firmware, version 15.28.1.6 (iwlwifi-3945-1.ucode)
 * Intel Wireless 3945 firmware, version 15.32.2.9 (iwlwifi-3945-2.ucode)
 * Intel Wireless 4965 firmware, version 228.57.1.21 (iwlwifi-4965-1.ucode)
 * Intel Wireless 4965 firmware, version 228.61.2.24 (iwlwifi-4965-2.ucode)
 * Intel Wireless 5100, 5300 and 5350 firmware, version 5.4.A.11 (iwlwifi-5000-1.ucode)
 * Intel Wireless 5100, 5300 and 5350 firmware, version 8.24.2.12 (iwlwifi-5000-2.ucode)
 * Intel Wireless 5150 firmware, version 8.24.2.2 (iwlwifi-5150-2.ucode)
 * Intel Wireless 6000 firmware, version 9.193.4.1 (iwlwifi-6000-4.ucode)
 * Intel Wireless 6250 firmware, version 9.201.4.1 (iwlwifi-6050-4.ucode)
 * 3Com Typhoon firmware, version 03.001.008 (3com/typhoon.bin)
 * AdvanSys ASC-3550 firmware (advansys/3550.bin)
 * AdvanSys ASC-38C0800 firmware (advansys/38C0800.bin)
 * AdvanSys ASC-38C1600 firmware (advansys/38C1600.bin)
 * AdvanSys SCSI controller microcode (advansys/mcode.bin)
 * Agere/Prism/Symbol Orinoco firmware (AP mode), version 9.48 Hermes I (agere_ap_fw.bin)
 * Agere/Prism/Symbol Orinoco firmware (STA mode), version 9.48 Hermes I (agere_sta_fw.bin)
 * Chelsio T3 optical EDC firmware (AEL2005 PHY) (cxgb3/ael2005_opt_edc.bin)
 * Chelsio T3 twinax EDC firmware (AEL2005 PHY) (cxgb3/ael2005_twx_edc.bin)
 * Chelsio T3 twinax EDC firmware (AEL2020 PHY) (cxgb3/ael2020_twx_edc.bin)
 * Chelsio T3B protocol engine firmware, version 1.1.0 (cxgb3/t3b_psram-1.1.0.bin)
 * Chelsio T3C protocol engine firmware, version 1.1.0 (cxgb3/t3c_psram-1.1.0.bin)
 * Chelsio T3 main firmware, version 7.4.0 (cxgb3/t3fw-7.4.0.bin)
 * DAB-USB FPGA bitfile (dabusb/bitstream.bin)
 * DAB-USB firmware (dabusb/firmware.fw)
 * Xceive 5000 tuner firmware, version 1.6.114 (dvb-fe-xc5000-1.6.114.fw)
 * DiBcom dib0700 USB DVB bridge firmware, version 1.20 (dvb-usb-dib0700-1.20.fw)
 * Intel 82559 D101M microcode (e100/d101m_ucode.bin)
 * Intel 82559 D101S microcode (e100/d101s_ucode.bin)
 * Intel 82551-F and 82551-10 microcode (e100/d102e_ucode.bin)
 * kaweth/new_code.bin
 * kaweth/new_code_fix.bin
 * kaweth/trigger_code.bin
 * kaweth/trigger_code_fix.bin
 * Matrox G200 WARP engine microcode (matrox/g200_warp.fw)
 * Matrox G400/G550 WARP engine microcode (matrox/g400_warp.fw)
 * Multi-Tech USB CDMA modem firmware (mts_cdma.fw)
 * Multi-Tech USB EDGE modem firmware (mts_edge.fw)
 * Multi-Tech USB GPRS modem firmware (mts_gsm.fw)
 * Rage 128 CCE microcode (r128/r128_cce.bin)
 * Radeon HD 5400-family ME microcode (radeon/CEDAR_me.bin)
 * Radeon HD 5400-family PFP microcode (radeon/CEDAR_pfp.bin)
 * Radeon HD 5400-family RLC microcode (radeon/CEDAR_rlc.bin)
 * Radeon HD 5800/5900-family ME microcode (radeon/CYPRESS_me.bin)
 * Radeon HD 5800/5900-family PFP microcode (radeon/CYPRESS_pfp.bin)
 * Radeon HD 5800/5900-family RLC microcode (radeon/CYPRESS_rlc.bin)
 * Radeon HD 5700-family ME microcode (radeon/JUNIPER_me.bin)
 * Radeon HD 5700-family PFP microcode (radeon/JUNIPER_pfp.bin)
 * Radeon HD 5700-family RLC microcode (radeon/JUNIPER_rlc.bin)
 * Radeon R100-family CP microcode (radeon/R100_cp.bin)
 * Radeon R200-family CP microcode (radeon/R200_cp.bin)
 * Radeon R300-family CP microcode (radeon/R300_cp.bin)
 * Radeon R400-family CP microcode (radeon/R420_cp.bin)
 * Radeon R500-family CP microcode (radeon/R520_cp.bin)
 * Radeon R600 ME microcode (radeon/R600_me.bin)
 * Radeon R600 PFP microcode (radeon/R600_pfp.bin)
 * Radeon R600-family RLC microcode (radeon/R600_rlc.bin)
 * Radeon R700-family RLC microcode (radeon/R700_rlc.bin)
 * Radeon HD 5500/5600-family ME microcode (radeon/REDWOOD_me.bin)
 * Radeon HD 5500/5600-family PFP microcode (radeon/REDWOOD_pfp.bin)
 * Radeon HD 5500/5600-family RLC microcode (radeon/REDWOOD_rlc.bin)
 * Radeon RS600 CP microcode (radeon/RS600_cp.bin)
 * Radeon RS690 CP microcode (radeon/RS690_cp.bin)
 * Radeon RS780 ME microcode (radeon/RS780_me.bin)
 * Radeon RS780 PFP microcode (radeon/RS780_pfp.bin)
 * Radeon RV610 ME microcode (radeon/RV610_me.bin)
 * Radeon RV610 PFP microcode (radeon/RV610_pfp.bin)
 * Radeon RV620 ME microcode (radeon/RV620_me.bin)
 * Radeon RV620 PFP microcode (radeon/RV620_pfp.bin)
 * Radeon RV630 ME microcode (radeon/RV630_me.bin)
 * Radeon RV630 PFP microcode (radeon/RV630_pfp.bin)
 * Radeon RV635 ME microcode (radeon/RV635_me.bin)
 * Radeon RV635 PFP microcode (radeon/RV635_pfp.bin)
 * Radeon RV670 ME microcode (radeon/RV670_me.bin)
 * Radeon RV670 PFP microcode (radeon/RV670_pfp.bin)
 * Radeon RV710 ME microcode (radeon/RV710_me.bin)
 * Radeon RV710 PFP microcode (radeon/RV710_pfp.bin)
 * Radeon RV730 ME microcode (radeon/RV730_me.bin)
 * Radeon RV730 PFP microcode (radeon/RV730_pfp.bin)
 * Radeon RV770 ME microcode (radeon/RV770_me.bin)
 * Radeon RV770 PFP microcode (radeon/RV770_pfp.bin)
 * Tehuti network card firmware (tehuti/bdx.bin)
 * Broadcom BCM5703/BCM5704 TSO firmware (tigon/tg3_tso.bin)
 * Broadcom BCM5701A0 firmware (tigon/tg3.bin)
 * Broadcom BCM5705 TSO firmware (tigon/tg3_tso5.bin)
 * QLogic QLA1040 firmware, version 7.65.06 (qlogic/1040.bin)
 * QLogic QLA1080, 1240, 1280 firmware, version 8.15.11 (qlogic/1280.bin)
 * QLogic QLA10160, 12160 firmware, version 10.04.42 (qlogic/12160.bin)
 * QLogic IBA7220 serdes firmware (qlogic/sd7220.fw)
 * QLogic QLA2100 firmware, version 1.19.38 (ql2100_fw.bin)
 * QLogic QLA2200 firmware, version 2.02.08 (ql2200_fw.bin)
 * QLogic QLA2300, ISP2312, SP202 firmware, version 3.03.27 (ql2300_fw.bin)
 * QLogic ISP2322, SP212 firmware, version 3.03.27 (ql2322_fw.bin)
 * QLogic ISP2422, ISP2432[M], SP222, SP232 firmware, version 4.04.05 (ql2400_fw.bin)
 * QLogic ISP2532 firmware, version 4.04.05 (ql2500_fw.bin)
 * Ralink RT2561 (RT2501/RT5201 chipset) firmware, version 1.2 (rt2561.bin)
 * Ralink RT2561S (RT2501 Turbo/RT5201 Turbo chipset) firmware, version 1.2 (rt2561s.bin)
 * Ralink RT2661 (RT2600/RT5600 chipset) firmware, version 1.2 (rt2661.bin)
 * Ralink RT2760/RT2790/RT2860/RT2890 (RT2700P[D]/RT2700E[D]/RT2800P[D]/RT2800E[D] chipset) firmware, version 11 (rt2860.bin)
 * Ralink RT2870 (RT2800U[D] chipset) firmware, version 12 (rt2870.bin)
 * Ralink RT3070 firmware, version 17 (rt3070.bin)
 * Ralink RT3071/RT3072 firmware, version 17 (rt3071.bin)
 * Ralink RT3090 (RT3000E[D] chipset) firmware, version 19 (rt3090.bin)
 * Ralink RT2571W/RT2671 (RT2501USB/RT5201USB chipset) firmware, version 1.8 (rt73.bin)
 * NPE-B
 * NPE-C
 * ZyDAS ZD1211
 * ZyDAS ZD1211B
 * Atheros AR5007UG (alternatively known as AR2524/AR5524)
&lt;/code&gt;

[http://www.debian-fr.org/iso-avec-firmwares-non-libres-inclus-t30631.html source forum]

[[Category:Matériel et Drivers Divers]]</text>
      <sha1>1b1klf8a2e9m19jxq269accjpvr1mj8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2298</id>
      <parentid>2297</parentid>
      <timestamp>2010-11-17T05:05:50Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="9835">L'info provient de ce topic :http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=29318

Vous avez des problèmes pour installer Debian car votre matériel réseau, trop récent ou non libre n'est pas pris en charge par les images classiques de Debian ?

Voici peut-être la solution : http://lists.debian.org/debian-cd/2010/08/msg00015.html

Ce message vous renverra sur le site suivant : http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/ ou vous trouverez des images Sid et Squeeze incluant des firmwares que l'on ne trouve pas dans les images classiques Debian.


Avec cette ligne de code vous récupérerez la liste des firmwares supportée :

&lt;pre style=&quot;width:1000px;overflow:auto;&quot;&gt;

cd /tmp;wget  http://cdimage.debian.org/cdimage/unofficial/non-free/firmware/squeeze/current/firmware.zip;unzip  firmware.zip; for i in *deb;do dpkg --info $i|sed -n 's/^[  ]\+\*/*/p'&gt;&gt;liste_firmware.tmp;done;sort liste_firmware.tmp &gt;  liste_firmware; rm *.deb firmware.zip liste_firmware.tmp; echo  &quot;Terminé...&quot;

&lt;/pre&gt;


Comme ceci :
&lt;code&gt;
$ cat liste_firmware 
 * Broadcom NetXtremeII 5706/5708 firmware, version Linux 2.6.25 (bnx2-06-4.0.5.fw)
 * Broadcom NetXtremeII 5709 firmware, version Linux 2.6.25 (bnx2-09-4.0.5.fw)
 * Broadcom NetXtremeII 5706/5708 firmware, version Linux 2.6.29 (bnx2-06-4.6.16.fw)
 * Broadcom NetXtremeII 5709/5716 firmware, version Linux 2.6.29 (bnx2-09-4.6.15.fw)
 * Broadcom NetXtremeII 5706/5708 firmware (mips), version Linux 2.6.30 (bnx2/bnx2-mips-06-4.6.16.fw)
 * Broadcom NetXtremeII 5706/5708 firmware (rv2p), version Linux 2.6.30 (bnx2/bnx2-rv2p-06-4.6.16.fw)
 * Broadcom NetXtremeII 5709/5716 firmware (mips), version Linux 2.6.30 (bnx2/bnx2-mips-09-4.6.17.fw)
 * Broadcom NetXtremeII 5709/5716 firmware (rv2p), version Linux 2.6.30 (bnx2/bnx2-rv2p-09-4.6.15.fw)
 * Broadcom NetXtremeII 5706/5708 firmware (mips), version Linux 2.6.32 (bnx2/bnx2-mips-06-5.0.0.j3.fw)
 * Broadcom NetXtremeII 5706/5708 firmware (rv2p), version Linux 2.6.32 (bnx2/bnx2-rv2p-06-5.0.0.j3.fw)
 * Broadcom NetXtremeII 5709/5716 firmware (mips), version Linux 2.6.32 (bnx2/bnx2-mips-09-5.0.0.j3.fw)
 * Broadcom NetXtremeII 5709/5716 firmware (rv2p), version Linux 2.6.32 (bnx2/bnx2-rv2p-09-5.0.0.j3.fw)
 * Broadcom NetXtremeII 5709 A0/A1 firmware (rv2p), version Linux 2.6.32 (bnx2/bnx2-rv2p-09ax-5.0.0.j3.fw)
 * Broadcom NetXtreme II 10Gb 57710, version 4.8.53.0 (bnx2x-e1-4.8.53.0.fw)
 * Broadcom NetXtreme II 10Gb 57711, version 4.8.53.0 (bnx2x-e1h-4.8.53.0.fw)
 * Broadcom NetXtreme II 10Gb 57710, version 5.0.21.0 (bnx2x-e1-5.0.21.0.fw)
 * Broadcom NetXtreme II 10Gb 57711, version 5.0.21.0 (bnx2x-e1h-5.0.21.0.fw)
 * Intel Pro Wireless 2100 firmware (bootstrap), version 1.3 (ipw2100-1.3.fw)
 * Intel Pro Wireless 2100 firmware (ibss mode), version 1.3 (ipw2100-1.3-i.fw)
 * Intel Pro Wireless 2100 firmware (monitor mode), version 1.3 (ipw2100-1.3-p.fw)
 * Intel Pro Wireless 2200/2915 firmware (bss), version 3.1 (ipw2200-bss.fw)
 * Intel Pro Wireless 2200/2915 firmware (ibss), version 3.1 (ipw2200-ibss.fw)
 * Intel Pro Wireless 2200/2915 firmware (snf), version 3.1 (ipw2200-sniffer.fw)
 * Intel Wireless 1000 firmware, version 128.50.3.1 (iwlwifi-1000-3.ucode)
 * Intel Wireless 3945 firmware, version 15.28.1.6 (iwlwifi-3945-1.ucode)
 * Intel Wireless 3945 firmware, version 15.32.2.9 (iwlwifi-3945-2.ucode)
 * Intel Wireless 4965 firmware, version 228.57.1.21 (iwlwifi-4965-1.ucode)
 * Intel Wireless 4965 firmware, version 228.61.2.24 (iwlwifi-4965-2.ucode)
 * Intel Wireless 5100, 5300 and 5350 firmware, version 5.4.A.11 (iwlwifi-5000-1.ucode)
 * Intel Wireless 5100, 5300 and 5350 firmware, version 8.24.2.12 (iwlwifi-5000-2.ucode)
 * Intel Wireless 5150 firmware, version 8.24.2.2 (iwlwifi-5150-2.ucode)
 * Intel Wireless 6000 firmware, version 9.193.4.1 (iwlwifi-6000-4.ucode)
 * Intel Wireless 6250 firmware, version 9.201.4.1 (iwlwifi-6050-4.ucode)
 * 3Com Typhoon firmware, version 03.001.008 (3com/typhoon.bin)
 * AdvanSys ASC-3550 firmware (advansys/3550.bin)
 * AdvanSys ASC-38C0800 firmware (advansys/38C0800.bin)
 * AdvanSys ASC-38C1600 firmware (advansys/38C1600.bin)
 * AdvanSys SCSI controller microcode (advansys/mcode.bin)
 * Agere/Prism/Symbol Orinoco firmware (AP mode), version 9.48 Hermes I (agere_ap_fw.bin)
 * Agere/Prism/Symbol Orinoco firmware (STA mode), version 9.48 Hermes I (agere_sta_fw.bin)
 * Chelsio T3 optical EDC firmware (AEL2005 PHY) (cxgb3/ael2005_opt_edc.bin)
 * Chelsio T3 twinax EDC firmware (AEL2005 PHY) (cxgb3/ael2005_twx_edc.bin)
 * Chelsio T3 twinax EDC firmware (AEL2020 PHY) (cxgb3/ael2020_twx_edc.bin)
 * Chelsio T3B protocol engine firmware, version 1.1.0 (cxgb3/t3b_psram-1.1.0.bin)
 * Chelsio T3C protocol engine firmware, version 1.1.0 (cxgb3/t3c_psram-1.1.0.bin)
 * Chelsio T3 main firmware, version 7.4.0 (cxgb3/t3fw-7.4.0.bin)
 * DAB-USB FPGA bitfile (dabusb/bitstream.bin)
 * DAB-USB firmware (dabusb/firmware.fw)
 * Xceive 5000 tuner firmware, version 1.6.114 (dvb-fe-xc5000-1.6.114.fw)
 * DiBcom dib0700 USB DVB bridge firmware, version 1.20 (dvb-usb-dib0700-1.20.fw)
 * Intel 82559 D101M microcode (e100/d101m_ucode.bin)
 * Intel 82559 D101S microcode (e100/d101s_ucode.bin)
 * Intel 82551-F and 82551-10 microcode (e100/d102e_ucode.bin)
 * kaweth/new_code.bin
 * kaweth/new_code_fix.bin
 * kaweth/trigger_code.bin
 * kaweth/trigger_code_fix.bin
 * Matrox G200 WARP engine microcode (matrox/g200_warp.fw)
 * Matrox G400/G550 WARP engine microcode (matrox/g400_warp.fw)
 * Multi-Tech USB CDMA modem firmware (mts_cdma.fw)
 * Multi-Tech USB EDGE modem firmware (mts_edge.fw)
 * Multi-Tech USB GPRS modem firmware (mts_gsm.fw)
 * Rage 128 CCE microcode (r128/r128_cce.bin)
 * Radeon HD 5400-family ME microcode (radeon/CEDAR_me.bin)
 * Radeon HD 5400-family PFP microcode (radeon/CEDAR_pfp.bin)
 * Radeon HD 5400-family RLC microcode (radeon/CEDAR_rlc.bin)
 * Radeon HD 5800/5900-family ME microcode (radeon/CYPRESS_me.bin)
 * Radeon HD 5800/5900-family PFP microcode (radeon/CYPRESS_pfp.bin)
 * Radeon HD 5800/5900-family RLC microcode (radeon/CYPRESS_rlc.bin)
 * Radeon HD 5700-family ME microcode (radeon/JUNIPER_me.bin)
 * Radeon HD 5700-family PFP microcode (radeon/JUNIPER_pfp.bin)
 * Radeon HD 5700-family RLC microcode (radeon/JUNIPER_rlc.bin)
 * Radeon R100-family CP microcode (radeon/R100_cp.bin)
 * Radeon R200-family CP microcode (radeon/R200_cp.bin)
 * Radeon R300-family CP microcode (radeon/R300_cp.bin)
 * Radeon R400-family CP microcode (radeon/R420_cp.bin)
 * Radeon R500-family CP microcode (radeon/R520_cp.bin)
 * Radeon R600 ME microcode (radeon/R600_me.bin)
 * Radeon R600 PFP microcode (radeon/R600_pfp.bin)
 * Radeon R600-family RLC microcode (radeon/R600_rlc.bin)
 * Radeon R700-family RLC microcode (radeon/R700_rlc.bin)
 * Radeon HD 5500/5600-family ME microcode (radeon/REDWOOD_me.bin)
 * Radeon HD 5500/5600-family PFP microcode (radeon/REDWOOD_pfp.bin)
 * Radeon HD 5500/5600-family RLC microcode (radeon/REDWOOD_rlc.bin)
 * Radeon RS600 CP microcode (radeon/RS600_cp.bin)
 * Radeon RS690 CP microcode (radeon/RS690_cp.bin)
 * Radeon RS780 ME microcode (radeon/RS780_me.bin)
 * Radeon RS780 PFP microcode (radeon/RS780_pfp.bin)
 * Radeon RV610 ME microcode (radeon/RV610_me.bin)
 * Radeon RV610 PFP microcode (radeon/RV610_pfp.bin)
 * Radeon RV620 ME microcode (radeon/RV620_me.bin)
 * Radeon RV620 PFP microcode (radeon/RV620_pfp.bin)
 * Radeon RV630 ME microcode (radeon/RV630_me.bin)
 * Radeon RV630 PFP microcode (radeon/RV630_pfp.bin)
 * Radeon RV635 ME microcode (radeon/RV635_me.bin)
 * Radeon RV635 PFP microcode (radeon/RV635_pfp.bin)
 * Radeon RV670 ME microcode (radeon/RV670_me.bin)
 * Radeon RV670 PFP microcode (radeon/RV670_pfp.bin)
 * Radeon RV710 ME microcode (radeon/RV710_me.bin)
 * Radeon RV710 PFP microcode (radeon/RV710_pfp.bin)
 * Radeon RV730 ME microcode (radeon/RV730_me.bin)
 * Radeon RV730 PFP microcode (radeon/RV730_pfp.bin)
 * Radeon RV770 ME microcode (radeon/RV770_me.bin)
 * Radeon RV770 PFP microcode (radeon/RV770_pfp.bin)
 * Tehuti network card firmware (tehuti/bdx.bin)
 * Broadcom BCM5703/BCM5704 TSO firmware (tigon/tg3_tso.bin)
 * Broadcom BCM5701A0 firmware (tigon/tg3.bin)
 * Broadcom BCM5705 TSO firmware (tigon/tg3_tso5.bin)
 * QLogic QLA1040 firmware, version 7.65.06 (qlogic/1040.bin)
 * QLogic QLA1080, 1240, 1280 firmware, version 8.15.11 (qlogic/1280.bin)
 * QLogic QLA10160, 12160 firmware, version 10.04.42 (qlogic/12160.bin)
 * QLogic IBA7220 serdes firmware (qlogic/sd7220.fw)
 * QLogic QLA2100 firmware, version 1.19.38 (ql2100_fw.bin)
 * QLogic QLA2200 firmware, version 2.02.08 (ql2200_fw.bin)
 * QLogic QLA2300, ISP2312, SP202 firmware, version 3.03.27 (ql2300_fw.bin)
 * QLogic ISP2322, SP212 firmware, version 3.03.27 (ql2322_fw.bin)
 * QLogic ISP2422, ISP2432[M], SP222, SP232 firmware, version 4.04.05 (ql2400_fw.bin)
 * QLogic ISP2532 firmware, version 4.04.05 (ql2500_fw.bin)
 * Ralink RT2561 (RT2501/RT5201 chipset) firmware, version 1.2 (rt2561.bin)
 * Ralink RT2561S (RT2501 Turbo/RT5201 Turbo chipset) firmware, version 1.2 (rt2561s.bin)
 * Ralink RT2661 (RT2600/RT5600 chipset) firmware, version 1.2 (rt2661.bin)
 * Ralink RT2760/RT2790/RT2860/RT2890 (RT2700P[D]/RT2700E[D]/RT2800P[D]/RT2800E[D] chipset) firmware, version 11 (rt2860.bin)
 * Ralink RT2870 (RT2800U[D] chipset) firmware, version 12 (rt2870.bin)
 * Ralink RT3070 firmware, version 17 (rt3070.bin)
 * Ralink RT3071/RT3072 firmware, version 17 (rt3071.bin)
 * Ralink RT3090 (RT3000E[D] chipset) firmware, version 19 (rt3090.bin)
 * Ralink RT2571W/RT2671 (RT2501USB/RT5201USB chipset) firmware, version 1.8 (rt73.bin)
 * NPE-B
 * NPE-C
 * ZyDAS ZD1211
 * ZyDAS ZD1211B
 * Atheros AR5007UG (alternatively known as AR2524/AR5524)
&lt;/code&gt;

[http://www.debian-fr.org/iso-avec-firmwares-non-libres-inclus-t30631.html source forum]

[[Category:Matériel et Drivers Divers]]</text>
      <sha1>3odr6o4gmeahwbjvj65gp6rrr2tszb7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2299</id>
      <parentid>2298</parentid>
      <timestamp>2010-11-17T05:06:28Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="9831">L'info provient de ce topic :http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=29318

Vous avez des problèmes pour installer Debian car votre matériel réseau, trop récent ou non libre n'est pas pris en charge par les images classiques de Debian ?

Voici peut-être la solution : http://lists.debian.org/debian-cd/2010/08/msg00015.html

Ce message vous renverra sur le site suivant : http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/ ou vous trouverez des images Sid et Squeeze incluant des firmwares que l'on ne trouve pas dans les images classiques Debian.


Avec cette ligne de code vous récupérerez la liste des firmwares supportée :

&lt;pre style=&quot;width:1000px;overflow:auto;&quot;&gt;

cd /tmp;wget http://cdimage.debian.org/cdimage/unofficial/non-free/firmware/squeeze/current/firmware.zip;unzip firmware.zip; for i in *deb;do dpkg --info $i|sed -n 's/^[  ]\+\*/*/p'&gt;&gt;liste_firmware.tmp;done;sort liste_firmware.tmp &gt; liste_firmware; rm *.deb firmware.zip liste_firmware.tmp; echo &quot;Terminé...&quot;

&lt;/pre&gt;


Comme ceci :
&lt;code&gt;
$ cat liste_firmware 
 * Broadcom NetXtremeII 5706/5708 firmware, version Linux 2.6.25 (bnx2-06-4.0.5.fw)
 * Broadcom NetXtremeII 5709 firmware, version Linux 2.6.25 (bnx2-09-4.0.5.fw)
 * Broadcom NetXtremeII 5706/5708 firmware, version Linux 2.6.29 (bnx2-06-4.6.16.fw)
 * Broadcom NetXtremeII 5709/5716 firmware, version Linux 2.6.29 (bnx2-09-4.6.15.fw)
 * Broadcom NetXtremeII 5706/5708 firmware (mips), version Linux 2.6.30 (bnx2/bnx2-mips-06-4.6.16.fw)
 * Broadcom NetXtremeII 5706/5708 firmware (rv2p), version Linux 2.6.30 (bnx2/bnx2-rv2p-06-4.6.16.fw)
 * Broadcom NetXtremeII 5709/5716 firmware (mips), version Linux 2.6.30 (bnx2/bnx2-mips-09-4.6.17.fw)
 * Broadcom NetXtremeII 5709/5716 firmware (rv2p), version Linux 2.6.30 (bnx2/bnx2-rv2p-09-4.6.15.fw)
 * Broadcom NetXtremeII 5706/5708 firmware (mips), version Linux 2.6.32 (bnx2/bnx2-mips-06-5.0.0.j3.fw)
 * Broadcom NetXtremeII 5706/5708 firmware (rv2p), version Linux 2.6.32 (bnx2/bnx2-rv2p-06-5.0.0.j3.fw)
 * Broadcom NetXtremeII 5709/5716 firmware (mips), version Linux 2.6.32 (bnx2/bnx2-mips-09-5.0.0.j3.fw)
 * Broadcom NetXtremeII 5709/5716 firmware (rv2p), version Linux 2.6.32 (bnx2/bnx2-rv2p-09-5.0.0.j3.fw)
 * Broadcom NetXtremeII 5709 A0/A1 firmware (rv2p), version Linux 2.6.32 (bnx2/bnx2-rv2p-09ax-5.0.0.j3.fw)
 * Broadcom NetXtreme II 10Gb 57710, version 4.8.53.0 (bnx2x-e1-4.8.53.0.fw)
 * Broadcom NetXtreme II 10Gb 57711, version 4.8.53.0 (bnx2x-e1h-4.8.53.0.fw)
 * Broadcom NetXtreme II 10Gb 57710, version 5.0.21.0 (bnx2x-e1-5.0.21.0.fw)
 * Broadcom NetXtreme II 10Gb 57711, version 5.0.21.0 (bnx2x-e1h-5.0.21.0.fw)
 * Intel Pro Wireless 2100 firmware (bootstrap), version 1.3 (ipw2100-1.3.fw)
 * Intel Pro Wireless 2100 firmware (ibss mode), version 1.3 (ipw2100-1.3-i.fw)
 * Intel Pro Wireless 2100 firmware (monitor mode), version 1.3 (ipw2100-1.3-p.fw)
 * Intel Pro Wireless 2200/2915 firmware (bss), version 3.1 (ipw2200-bss.fw)
 * Intel Pro Wireless 2200/2915 firmware (ibss), version 3.1 (ipw2200-ibss.fw)
 * Intel Pro Wireless 2200/2915 firmware (snf), version 3.1 (ipw2200-sniffer.fw)
 * Intel Wireless 1000 firmware, version 128.50.3.1 (iwlwifi-1000-3.ucode)
 * Intel Wireless 3945 firmware, version 15.28.1.6 (iwlwifi-3945-1.ucode)
 * Intel Wireless 3945 firmware, version 15.32.2.9 (iwlwifi-3945-2.ucode)
 * Intel Wireless 4965 firmware, version 228.57.1.21 (iwlwifi-4965-1.ucode)
 * Intel Wireless 4965 firmware, version 228.61.2.24 (iwlwifi-4965-2.ucode)
 * Intel Wireless 5100, 5300 and 5350 firmware, version 5.4.A.11 (iwlwifi-5000-1.ucode)
 * Intel Wireless 5100, 5300 and 5350 firmware, version 8.24.2.12 (iwlwifi-5000-2.ucode)
 * Intel Wireless 5150 firmware, version 8.24.2.2 (iwlwifi-5150-2.ucode)
 * Intel Wireless 6000 firmware, version 9.193.4.1 (iwlwifi-6000-4.ucode)
 * Intel Wireless 6250 firmware, version 9.201.4.1 (iwlwifi-6050-4.ucode)
 * 3Com Typhoon firmware, version 03.001.008 (3com/typhoon.bin)
 * AdvanSys ASC-3550 firmware (advansys/3550.bin)
 * AdvanSys ASC-38C0800 firmware (advansys/38C0800.bin)
 * AdvanSys ASC-38C1600 firmware (advansys/38C1600.bin)
 * AdvanSys SCSI controller microcode (advansys/mcode.bin)
 * Agere/Prism/Symbol Orinoco firmware (AP mode), version 9.48 Hermes I (agere_ap_fw.bin)
 * Agere/Prism/Symbol Orinoco firmware (STA mode), version 9.48 Hermes I (agere_sta_fw.bin)
 * Chelsio T3 optical EDC firmware (AEL2005 PHY) (cxgb3/ael2005_opt_edc.bin)
 * Chelsio T3 twinax EDC firmware (AEL2005 PHY) (cxgb3/ael2005_twx_edc.bin)
 * Chelsio T3 twinax EDC firmware (AEL2020 PHY) (cxgb3/ael2020_twx_edc.bin)
 * Chelsio T3B protocol engine firmware, version 1.1.0 (cxgb3/t3b_psram-1.1.0.bin)
 * Chelsio T3C protocol engine firmware, version 1.1.0 (cxgb3/t3c_psram-1.1.0.bin)
 * Chelsio T3 main firmware, version 7.4.0 (cxgb3/t3fw-7.4.0.bin)
 * DAB-USB FPGA bitfile (dabusb/bitstream.bin)
 * DAB-USB firmware (dabusb/firmware.fw)
 * Xceive 5000 tuner firmware, version 1.6.114 (dvb-fe-xc5000-1.6.114.fw)
 * DiBcom dib0700 USB DVB bridge firmware, version 1.20 (dvb-usb-dib0700-1.20.fw)
 * Intel 82559 D101M microcode (e100/d101m_ucode.bin)
 * Intel 82559 D101S microcode (e100/d101s_ucode.bin)
 * Intel 82551-F and 82551-10 microcode (e100/d102e_ucode.bin)
 * kaweth/new_code.bin
 * kaweth/new_code_fix.bin
 * kaweth/trigger_code.bin
 * kaweth/trigger_code_fix.bin
 * Matrox G200 WARP engine microcode (matrox/g200_warp.fw)
 * Matrox G400/G550 WARP engine microcode (matrox/g400_warp.fw)
 * Multi-Tech USB CDMA modem firmware (mts_cdma.fw)
 * Multi-Tech USB EDGE modem firmware (mts_edge.fw)
 * Multi-Tech USB GPRS modem firmware (mts_gsm.fw)
 * Rage 128 CCE microcode (r128/r128_cce.bin)
 * Radeon HD 5400-family ME microcode (radeon/CEDAR_me.bin)
 * Radeon HD 5400-family PFP microcode (radeon/CEDAR_pfp.bin)
 * Radeon HD 5400-family RLC microcode (radeon/CEDAR_rlc.bin)
 * Radeon HD 5800/5900-family ME microcode (radeon/CYPRESS_me.bin)
 * Radeon HD 5800/5900-family PFP microcode (radeon/CYPRESS_pfp.bin)
 * Radeon HD 5800/5900-family RLC microcode (radeon/CYPRESS_rlc.bin)
 * Radeon HD 5700-family ME microcode (radeon/JUNIPER_me.bin)
 * Radeon HD 5700-family PFP microcode (radeon/JUNIPER_pfp.bin)
 * Radeon HD 5700-family RLC microcode (radeon/JUNIPER_rlc.bin)
 * Radeon R100-family CP microcode (radeon/R100_cp.bin)
 * Radeon R200-family CP microcode (radeon/R200_cp.bin)
 * Radeon R300-family CP microcode (radeon/R300_cp.bin)
 * Radeon R400-family CP microcode (radeon/R420_cp.bin)
 * Radeon R500-family CP microcode (radeon/R520_cp.bin)
 * Radeon R600 ME microcode (radeon/R600_me.bin)
 * Radeon R600 PFP microcode (radeon/R600_pfp.bin)
 * Radeon R600-family RLC microcode (radeon/R600_rlc.bin)
 * Radeon R700-family RLC microcode (radeon/R700_rlc.bin)
 * Radeon HD 5500/5600-family ME microcode (radeon/REDWOOD_me.bin)
 * Radeon HD 5500/5600-family PFP microcode (radeon/REDWOOD_pfp.bin)
 * Radeon HD 5500/5600-family RLC microcode (radeon/REDWOOD_rlc.bin)
 * Radeon RS600 CP microcode (radeon/RS600_cp.bin)
 * Radeon RS690 CP microcode (radeon/RS690_cp.bin)
 * Radeon RS780 ME microcode (radeon/RS780_me.bin)
 * Radeon RS780 PFP microcode (radeon/RS780_pfp.bin)
 * Radeon RV610 ME microcode (radeon/RV610_me.bin)
 * Radeon RV610 PFP microcode (radeon/RV610_pfp.bin)
 * Radeon RV620 ME microcode (radeon/RV620_me.bin)
 * Radeon RV620 PFP microcode (radeon/RV620_pfp.bin)
 * Radeon RV630 ME microcode (radeon/RV630_me.bin)
 * Radeon RV630 PFP microcode (radeon/RV630_pfp.bin)
 * Radeon RV635 ME microcode (radeon/RV635_me.bin)
 * Radeon RV635 PFP microcode (radeon/RV635_pfp.bin)
 * Radeon RV670 ME microcode (radeon/RV670_me.bin)
 * Radeon RV670 PFP microcode (radeon/RV670_pfp.bin)
 * Radeon RV710 ME microcode (radeon/RV710_me.bin)
 * Radeon RV710 PFP microcode (radeon/RV710_pfp.bin)
 * Radeon RV730 ME microcode (radeon/RV730_me.bin)
 * Radeon RV730 PFP microcode (radeon/RV730_pfp.bin)
 * Radeon RV770 ME microcode (radeon/RV770_me.bin)
 * Radeon RV770 PFP microcode (radeon/RV770_pfp.bin)
 * Tehuti network card firmware (tehuti/bdx.bin)
 * Broadcom BCM5703/BCM5704 TSO firmware (tigon/tg3_tso.bin)
 * Broadcom BCM5701A0 firmware (tigon/tg3.bin)
 * Broadcom BCM5705 TSO firmware (tigon/tg3_tso5.bin)
 * QLogic QLA1040 firmware, version 7.65.06 (qlogic/1040.bin)
 * QLogic QLA1080, 1240, 1280 firmware, version 8.15.11 (qlogic/1280.bin)
 * QLogic QLA10160, 12160 firmware, version 10.04.42 (qlogic/12160.bin)
 * QLogic IBA7220 serdes firmware (qlogic/sd7220.fw)
 * QLogic QLA2100 firmware, version 1.19.38 (ql2100_fw.bin)
 * QLogic QLA2200 firmware, version 2.02.08 (ql2200_fw.bin)
 * QLogic QLA2300, ISP2312, SP202 firmware, version 3.03.27 (ql2300_fw.bin)
 * QLogic ISP2322, SP212 firmware, version 3.03.27 (ql2322_fw.bin)
 * QLogic ISP2422, ISP2432[M], SP222, SP232 firmware, version 4.04.05 (ql2400_fw.bin)
 * QLogic ISP2532 firmware, version 4.04.05 (ql2500_fw.bin)
 * Ralink RT2561 (RT2501/RT5201 chipset) firmware, version 1.2 (rt2561.bin)
 * Ralink RT2561S (RT2501 Turbo/RT5201 Turbo chipset) firmware, version 1.2 (rt2561s.bin)
 * Ralink RT2661 (RT2600/RT5600 chipset) firmware, version 1.2 (rt2661.bin)
 * Ralink RT2760/RT2790/RT2860/RT2890 (RT2700P[D]/RT2700E[D]/RT2800P[D]/RT2800E[D] chipset) firmware, version 11 (rt2860.bin)
 * Ralink RT2870 (RT2800U[D] chipset) firmware, version 12 (rt2870.bin)
 * Ralink RT3070 firmware, version 17 (rt3070.bin)
 * Ralink RT3071/RT3072 firmware, version 17 (rt3071.bin)
 * Ralink RT3090 (RT3000E[D] chipset) firmware, version 19 (rt3090.bin)
 * Ralink RT2571W/RT2671 (RT2501USB/RT5201USB chipset) firmware, version 1.8 (rt73.bin)
 * NPE-B
 * NPE-C
 * ZyDAS ZD1211
 * ZyDAS ZD1211B
 * Atheros AR5007UG (alternatively known as AR2524/AR5524)
&lt;/code&gt;

[http://www.debian-fr.org/iso-avec-firmwares-non-libres-inclus-t30631.html source forum]

[[Category:Matériel et Drivers Divers]]</text>
      <sha1>rd42gik7hrqg74rnh641cugyyo9diel</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2906</id>
      <parentid>2299</parentid>
      <timestamp>2011-04-18T08:28:18Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="9834">L'info provient de ce topic :http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=29318

Vous avez des problèmes pour installer Debian car votre matériel réseau, trop récent ou non libre n'est pas pris en charge par les images classiques de Debian ?

Voici peut-être la solution : http://lists.debian.org/debian-cd/2010/08/msg00015.html

Ce message vous renverra sur le site suivant : http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/ ou vous trouverez des images Sid et Squeeze incluant des firmwares que l'on ne trouve pas dans les images classiques Debian.


Avec cette ligne de code vous récupérerez la liste des firmwares supportée :

&lt;pre style=&quot;width:1000px;overflow:auto;&quot;&gt;

cd /tmp;wget -c http://cdimage.debian.org/cdimage/unofficial/non-free/firmware/squeeze/current/firmware.zip;unzip firmware.zip; for i in *deb;do dpkg --info $i|sed -n 's/^[  ]\+\*/*/p'&gt;&gt;liste_firmware.tmp;done;sort liste_firmware.tmp &gt; liste_firmware; rm *.deb firmware.zip liste_firmware.tmp; echo &quot;Terminé...&quot;

&lt;/pre&gt;


Comme ceci :
&lt;code&gt;
$ cat liste_firmware 
 * Broadcom NetXtremeII 5706/5708 firmware, version Linux 2.6.25 (bnx2-06-4.0.5.fw)
 * Broadcom NetXtremeII 5709 firmware, version Linux 2.6.25 (bnx2-09-4.0.5.fw)
 * Broadcom NetXtremeII 5706/5708 firmware, version Linux 2.6.29 (bnx2-06-4.6.16.fw)
 * Broadcom NetXtremeII 5709/5716 firmware, version Linux 2.6.29 (bnx2-09-4.6.15.fw)
 * Broadcom NetXtremeII 5706/5708 firmware (mips), version Linux 2.6.30 (bnx2/bnx2-mips-06-4.6.16.fw)
 * Broadcom NetXtremeII 5706/5708 firmware (rv2p), version Linux 2.6.30 (bnx2/bnx2-rv2p-06-4.6.16.fw)
 * Broadcom NetXtremeII 5709/5716 firmware (mips), version Linux 2.6.30 (bnx2/bnx2-mips-09-4.6.17.fw)
 * Broadcom NetXtremeII 5709/5716 firmware (rv2p), version Linux 2.6.30 (bnx2/bnx2-rv2p-09-4.6.15.fw)
 * Broadcom NetXtremeII 5706/5708 firmware (mips), version Linux 2.6.32 (bnx2/bnx2-mips-06-5.0.0.j3.fw)
 * Broadcom NetXtremeII 5706/5708 firmware (rv2p), version Linux 2.6.32 (bnx2/bnx2-rv2p-06-5.0.0.j3.fw)
 * Broadcom NetXtremeII 5709/5716 firmware (mips), version Linux 2.6.32 (bnx2/bnx2-mips-09-5.0.0.j3.fw)
 * Broadcom NetXtremeII 5709/5716 firmware (rv2p), version Linux 2.6.32 (bnx2/bnx2-rv2p-09-5.0.0.j3.fw)
 * Broadcom NetXtremeII 5709 A0/A1 firmware (rv2p), version Linux 2.6.32 (bnx2/bnx2-rv2p-09ax-5.0.0.j3.fw)
 * Broadcom NetXtreme II 10Gb 57710, version 4.8.53.0 (bnx2x-e1-4.8.53.0.fw)
 * Broadcom NetXtreme II 10Gb 57711, version 4.8.53.0 (bnx2x-e1h-4.8.53.0.fw)
 * Broadcom NetXtreme II 10Gb 57710, version 5.0.21.0 (bnx2x-e1-5.0.21.0.fw)
 * Broadcom NetXtreme II 10Gb 57711, version 5.0.21.0 (bnx2x-e1h-5.0.21.0.fw)
 * Intel Pro Wireless 2100 firmware (bootstrap), version 1.3 (ipw2100-1.3.fw)
 * Intel Pro Wireless 2100 firmware (ibss mode), version 1.3 (ipw2100-1.3-i.fw)
 * Intel Pro Wireless 2100 firmware (monitor mode), version 1.3 (ipw2100-1.3-p.fw)
 * Intel Pro Wireless 2200/2915 firmware (bss), version 3.1 (ipw2200-bss.fw)
 * Intel Pro Wireless 2200/2915 firmware (ibss), version 3.1 (ipw2200-ibss.fw)
 * Intel Pro Wireless 2200/2915 firmware (snf), version 3.1 (ipw2200-sniffer.fw)
 * Intel Wireless 1000 firmware, version 128.50.3.1 (iwlwifi-1000-3.ucode)
 * Intel Wireless 3945 firmware, version 15.28.1.6 (iwlwifi-3945-1.ucode)
 * Intel Wireless 3945 firmware, version 15.32.2.9 (iwlwifi-3945-2.ucode)
 * Intel Wireless 4965 firmware, version 228.57.1.21 (iwlwifi-4965-1.ucode)
 * Intel Wireless 4965 firmware, version 228.61.2.24 (iwlwifi-4965-2.ucode)
 * Intel Wireless 5100, 5300 and 5350 firmware, version 5.4.A.11 (iwlwifi-5000-1.ucode)
 * Intel Wireless 5100, 5300 and 5350 firmware, version 8.24.2.12 (iwlwifi-5000-2.ucode)
 * Intel Wireless 5150 firmware, version 8.24.2.2 (iwlwifi-5150-2.ucode)
 * Intel Wireless 6000 firmware, version 9.193.4.1 (iwlwifi-6000-4.ucode)
 * Intel Wireless 6250 firmware, version 9.201.4.1 (iwlwifi-6050-4.ucode)
 * 3Com Typhoon firmware, version 03.001.008 (3com/typhoon.bin)
 * AdvanSys ASC-3550 firmware (advansys/3550.bin)
 * AdvanSys ASC-38C0800 firmware (advansys/38C0800.bin)
 * AdvanSys ASC-38C1600 firmware (advansys/38C1600.bin)
 * AdvanSys SCSI controller microcode (advansys/mcode.bin)
 * Agere/Prism/Symbol Orinoco firmware (AP mode), version 9.48 Hermes I (agere_ap_fw.bin)
 * Agere/Prism/Symbol Orinoco firmware (STA mode), version 9.48 Hermes I (agere_sta_fw.bin)
 * Chelsio T3 optical EDC firmware (AEL2005 PHY) (cxgb3/ael2005_opt_edc.bin)
 * Chelsio T3 twinax EDC firmware (AEL2005 PHY) (cxgb3/ael2005_twx_edc.bin)
 * Chelsio T3 twinax EDC firmware (AEL2020 PHY) (cxgb3/ael2020_twx_edc.bin)
 * Chelsio T3B protocol engine firmware, version 1.1.0 (cxgb3/t3b_psram-1.1.0.bin)
 * Chelsio T3C protocol engine firmware, version 1.1.0 (cxgb3/t3c_psram-1.1.0.bin)
 * Chelsio T3 main firmware, version 7.4.0 (cxgb3/t3fw-7.4.0.bin)
 * DAB-USB FPGA bitfile (dabusb/bitstream.bin)
 * DAB-USB firmware (dabusb/firmware.fw)
 * Xceive 5000 tuner firmware, version 1.6.114 (dvb-fe-xc5000-1.6.114.fw)
 * DiBcom dib0700 USB DVB bridge firmware, version 1.20 (dvb-usb-dib0700-1.20.fw)
 * Intel 82559 D101M microcode (e100/d101m_ucode.bin)
 * Intel 82559 D101S microcode (e100/d101s_ucode.bin)
 * Intel 82551-F and 82551-10 microcode (e100/d102e_ucode.bin)
 * kaweth/new_code.bin
 * kaweth/new_code_fix.bin
 * kaweth/trigger_code.bin
 * kaweth/trigger_code_fix.bin
 * Matrox G200 WARP engine microcode (matrox/g200_warp.fw)
 * Matrox G400/G550 WARP engine microcode (matrox/g400_warp.fw)
 * Multi-Tech USB CDMA modem firmware (mts_cdma.fw)
 * Multi-Tech USB EDGE modem firmware (mts_edge.fw)
 * Multi-Tech USB GPRS modem firmware (mts_gsm.fw)
 * Rage 128 CCE microcode (r128/r128_cce.bin)
 * Radeon HD 5400-family ME microcode (radeon/CEDAR_me.bin)
 * Radeon HD 5400-family PFP microcode (radeon/CEDAR_pfp.bin)
 * Radeon HD 5400-family RLC microcode (radeon/CEDAR_rlc.bin)
 * Radeon HD 5800/5900-family ME microcode (radeon/CYPRESS_me.bin)
 * Radeon HD 5800/5900-family PFP microcode (radeon/CYPRESS_pfp.bin)
 * Radeon HD 5800/5900-family RLC microcode (radeon/CYPRESS_rlc.bin)
 * Radeon HD 5700-family ME microcode (radeon/JUNIPER_me.bin)
 * Radeon HD 5700-family PFP microcode (radeon/JUNIPER_pfp.bin)
 * Radeon HD 5700-family RLC microcode (radeon/JUNIPER_rlc.bin)
 * Radeon R100-family CP microcode (radeon/R100_cp.bin)
 * Radeon R200-family CP microcode (radeon/R200_cp.bin)
 * Radeon R300-family CP microcode (radeon/R300_cp.bin)
 * Radeon R400-family CP microcode (radeon/R420_cp.bin)
 * Radeon R500-family CP microcode (radeon/R520_cp.bin)
 * Radeon R600 ME microcode (radeon/R600_me.bin)
 * Radeon R600 PFP microcode (radeon/R600_pfp.bin)
 * Radeon R600-family RLC microcode (radeon/R600_rlc.bin)
 * Radeon R700-family RLC microcode (radeon/R700_rlc.bin)
 * Radeon HD 5500/5600-family ME microcode (radeon/REDWOOD_me.bin)
 * Radeon HD 5500/5600-family PFP microcode (radeon/REDWOOD_pfp.bin)
 * Radeon HD 5500/5600-family RLC microcode (radeon/REDWOOD_rlc.bin)
 * Radeon RS600 CP microcode (radeon/RS600_cp.bin)
 * Radeon RS690 CP microcode (radeon/RS690_cp.bin)
 * Radeon RS780 ME microcode (radeon/RS780_me.bin)
 * Radeon RS780 PFP microcode (radeon/RS780_pfp.bin)
 * Radeon RV610 ME microcode (radeon/RV610_me.bin)
 * Radeon RV610 PFP microcode (radeon/RV610_pfp.bin)
 * Radeon RV620 ME microcode (radeon/RV620_me.bin)
 * Radeon RV620 PFP microcode (radeon/RV620_pfp.bin)
 * Radeon RV630 ME microcode (radeon/RV630_me.bin)
 * Radeon RV630 PFP microcode (radeon/RV630_pfp.bin)
 * Radeon RV635 ME microcode (radeon/RV635_me.bin)
 * Radeon RV635 PFP microcode (radeon/RV635_pfp.bin)
 * Radeon RV670 ME microcode (radeon/RV670_me.bin)
 * Radeon RV670 PFP microcode (radeon/RV670_pfp.bin)
 * Radeon RV710 ME microcode (radeon/RV710_me.bin)
 * Radeon RV710 PFP microcode (radeon/RV710_pfp.bin)
 * Radeon RV730 ME microcode (radeon/RV730_me.bin)
 * Radeon RV730 PFP microcode (radeon/RV730_pfp.bin)
 * Radeon RV770 ME microcode (radeon/RV770_me.bin)
 * Radeon RV770 PFP microcode (radeon/RV770_pfp.bin)
 * Tehuti network card firmware (tehuti/bdx.bin)
 * Broadcom BCM5703/BCM5704 TSO firmware (tigon/tg3_tso.bin)
 * Broadcom BCM5701A0 firmware (tigon/tg3.bin)
 * Broadcom BCM5705 TSO firmware (tigon/tg3_tso5.bin)
 * QLogic QLA1040 firmware, version 7.65.06 (qlogic/1040.bin)
 * QLogic QLA1080, 1240, 1280 firmware, version 8.15.11 (qlogic/1280.bin)
 * QLogic QLA10160, 12160 firmware, version 10.04.42 (qlogic/12160.bin)
 * QLogic IBA7220 serdes firmware (qlogic/sd7220.fw)
 * QLogic QLA2100 firmware, version 1.19.38 (ql2100_fw.bin)
 * QLogic QLA2200 firmware, version 2.02.08 (ql2200_fw.bin)
 * QLogic QLA2300, ISP2312, SP202 firmware, version 3.03.27 (ql2300_fw.bin)
 * QLogic ISP2322, SP212 firmware, version 3.03.27 (ql2322_fw.bin)
 * QLogic ISP2422, ISP2432[M], SP222, SP232 firmware, version 4.04.05 (ql2400_fw.bin)
 * QLogic ISP2532 firmware, version 4.04.05 (ql2500_fw.bin)
 * Ralink RT2561 (RT2501/RT5201 chipset) firmware, version 1.2 (rt2561.bin)
 * Ralink RT2561S (RT2501 Turbo/RT5201 Turbo chipset) firmware, version 1.2 (rt2561s.bin)
 * Ralink RT2661 (RT2600/RT5600 chipset) firmware, version 1.2 (rt2661.bin)
 * Ralink RT2760/RT2790/RT2860/RT2890 (RT2700P[D]/RT2700E[D]/RT2800P[D]/RT2800E[D] chipset) firmware, version 11 (rt2860.bin)
 * Ralink RT2870 (RT2800U[D] chipset) firmware, version 12 (rt2870.bin)
 * Ralink RT3070 firmware, version 17 (rt3070.bin)
 * Ralink RT3071/RT3072 firmware, version 17 (rt3071.bin)
 * Ralink RT3090 (RT3000E[D] chipset) firmware, version 19 (rt3090.bin)
 * Ralink RT2571W/RT2671 (RT2501USB/RT5201USB chipset) firmware, version 1.8 (rt73.bin)
 * NPE-B
 * NPE-C
 * ZyDAS ZD1211
 * ZyDAS ZD1211B
 * Atheros AR5007UG (alternatively known as AR2524/AR5524)
&lt;/code&gt;

[http://www.debian-fr.org/iso-avec-firmwares-non-libres-inclus-t30631.html source forum]

[[Category:Matériel et Drivers Divers]]</text>
      <sha1>kctxn24jyes50u029ll0a30wmskkrzs</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2907</id>
      <parentid>2906</parentid>
      <timestamp>2011-04-18T09:51:56Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Réglage auto boite de commande</comment>
      <text xml:space="preserve" bytes="9832">L'info provient de ce topic :http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=29318

Vous avez des problèmes pour installer Debian car votre matériel réseau, trop récent ou non libre n'est pas pris en charge par les images classiques de Debian ?

Voici peut-être la solution : http://lists.debian.org/debian-cd/2010/08/msg00015.html

Ce message vous renverra sur le site suivant : http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/ ou vous trouverez des images Sid et Squeeze incluant des firmwares que l'on ne trouve pas dans les images classiques Debian.


Avec cette ligne de code vous récupérerez la liste des firmwares supportée :

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;

cd /tmp;wget -c http://cdimage.debian.org/cdimage/unofficial/non-free/firmware/squeeze/current/firmware.zip;unzip firmware.zip; for i in *deb;do dpkg --info $i|sed -n 's/^[  ]\+\*/*/p'&gt;&gt;liste_firmware.tmp;done;sort liste_firmware.tmp &gt; liste_firmware; rm *.deb firmware.zip liste_firmware.tmp; echo &quot;Terminé...&quot;

&lt;/pre&gt;


Comme ceci :
&lt;code&gt;
$ cat liste_firmware 
 * Broadcom NetXtremeII 5706/5708 firmware, version Linux 2.6.25 (bnx2-06-4.0.5.fw)
 * Broadcom NetXtremeII 5709 firmware, version Linux 2.6.25 (bnx2-09-4.0.5.fw)
 * Broadcom NetXtremeII 5706/5708 firmware, version Linux 2.6.29 (bnx2-06-4.6.16.fw)
 * Broadcom NetXtremeII 5709/5716 firmware, version Linux 2.6.29 (bnx2-09-4.6.15.fw)
 * Broadcom NetXtremeII 5706/5708 firmware (mips), version Linux 2.6.30 (bnx2/bnx2-mips-06-4.6.16.fw)
 * Broadcom NetXtremeII 5706/5708 firmware (rv2p), version Linux 2.6.30 (bnx2/bnx2-rv2p-06-4.6.16.fw)
 * Broadcom NetXtremeII 5709/5716 firmware (mips), version Linux 2.6.30 (bnx2/bnx2-mips-09-4.6.17.fw)
 * Broadcom NetXtremeII 5709/5716 firmware (rv2p), version Linux 2.6.30 (bnx2/bnx2-rv2p-09-4.6.15.fw)
 * Broadcom NetXtremeII 5706/5708 firmware (mips), version Linux 2.6.32 (bnx2/bnx2-mips-06-5.0.0.j3.fw)
 * Broadcom NetXtremeII 5706/5708 firmware (rv2p), version Linux 2.6.32 (bnx2/bnx2-rv2p-06-5.0.0.j3.fw)
 * Broadcom NetXtremeII 5709/5716 firmware (mips), version Linux 2.6.32 (bnx2/bnx2-mips-09-5.0.0.j3.fw)
 * Broadcom NetXtremeII 5709/5716 firmware (rv2p), version Linux 2.6.32 (bnx2/bnx2-rv2p-09-5.0.0.j3.fw)
 * Broadcom NetXtremeII 5709 A0/A1 firmware (rv2p), version Linux 2.6.32 (bnx2/bnx2-rv2p-09ax-5.0.0.j3.fw)
 * Broadcom NetXtreme II 10Gb 57710, version 4.8.53.0 (bnx2x-e1-4.8.53.0.fw)
 * Broadcom NetXtreme II 10Gb 57711, version 4.8.53.0 (bnx2x-e1h-4.8.53.0.fw)
 * Broadcom NetXtreme II 10Gb 57710, version 5.0.21.0 (bnx2x-e1-5.0.21.0.fw)
 * Broadcom NetXtreme II 10Gb 57711, version 5.0.21.0 (bnx2x-e1h-5.0.21.0.fw)
 * Intel Pro Wireless 2100 firmware (bootstrap), version 1.3 (ipw2100-1.3.fw)
 * Intel Pro Wireless 2100 firmware (ibss mode), version 1.3 (ipw2100-1.3-i.fw)
 * Intel Pro Wireless 2100 firmware (monitor mode), version 1.3 (ipw2100-1.3-p.fw)
 * Intel Pro Wireless 2200/2915 firmware (bss), version 3.1 (ipw2200-bss.fw)
 * Intel Pro Wireless 2200/2915 firmware (ibss), version 3.1 (ipw2200-ibss.fw)
 * Intel Pro Wireless 2200/2915 firmware (snf), version 3.1 (ipw2200-sniffer.fw)
 * Intel Wireless 1000 firmware, version 128.50.3.1 (iwlwifi-1000-3.ucode)
 * Intel Wireless 3945 firmware, version 15.28.1.6 (iwlwifi-3945-1.ucode)
 * Intel Wireless 3945 firmware, version 15.32.2.9 (iwlwifi-3945-2.ucode)
 * Intel Wireless 4965 firmware, version 228.57.1.21 (iwlwifi-4965-1.ucode)
 * Intel Wireless 4965 firmware, version 228.61.2.24 (iwlwifi-4965-2.ucode)
 * Intel Wireless 5100, 5300 and 5350 firmware, version 5.4.A.11 (iwlwifi-5000-1.ucode)
 * Intel Wireless 5100, 5300 and 5350 firmware, version 8.24.2.12 (iwlwifi-5000-2.ucode)
 * Intel Wireless 5150 firmware, version 8.24.2.2 (iwlwifi-5150-2.ucode)
 * Intel Wireless 6000 firmware, version 9.193.4.1 (iwlwifi-6000-4.ucode)
 * Intel Wireless 6250 firmware, version 9.201.4.1 (iwlwifi-6050-4.ucode)
 * 3Com Typhoon firmware, version 03.001.008 (3com/typhoon.bin)
 * AdvanSys ASC-3550 firmware (advansys/3550.bin)
 * AdvanSys ASC-38C0800 firmware (advansys/38C0800.bin)
 * AdvanSys ASC-38C1600 firmware (advansys/38C1600.bin)
 * AdvanSys SCSI controller microcode (advansys/mcode.bin)
 * Agere/Prism/Symbol Orinoco firmware (AP mode), version 9.48 Hermes I (agere_ap_fw.bin)
 * Agere/Prism/Symbol Orinoco firmware (STA mode), version 9.48 Hermes I (agere_sta_fw.bin)
 * Chelsio T3 optical EDC firmware (AEL2005 PHY) (cxgb3/ael2005_opt_edc.bin)
 * Chelsio T3 twinax EDC firmware (AEL2005 PHY) (cxgb3/ael2005_twx_edc.bin)
 * Chelsio T3 twinax EDC firmware (AEL2020 PHY) (cxgb3/ael2020_twx_edc.bin)
 * Chelsio T3B protocol engine firmware, version 1.1.0 (cxgb3/t3b_psram-1.1.0.bin)
 * Chelsio T3C protocol engine firmware, version 1.1.0 (cxgb3/t3c_psram-1.1.0.bin)
 * Chelsio T3 main firmware, version 7.4.0 (cxgb3/t3fw-7.4.0.bin)
 * DAB-USB FPGA bitfile (dabusb/bitstream.bin)
 * DAB-USB firmware (dabusb/firmware.fw)
 * Xceive 5000 tuner firmware, version 1.6.114 (dvb-fe-xc5000-1.6.114.fw)
 * DiBcom dib0700 USB DVB bridge firmware, version 1.20 (dvb-usb-dib0700-1.20.fw)
 * Intel 82559 D101M microcode (e100/d101m_ucode.bin)
 * Intel 82559 D101S microcode (e100/d101s_ucode.bin)
 * Intel 82551-F and 82551-10 microcode (e100/d102e_ucode.bin)
 * kaweth/new_code.bin
 * kaweth/new_code_fix.bin
 * kaweth/trigger_code.bin
 * kaweth/trigger_code_fix.bin
 * Matrox G200 WARP engine microcode (matrox/g200_warp.fw)
 * Matrox G400/G550 WARP engine microcode (matrox/g400_warp.fw)
 * Multi-Tech USB CDMA modem firmware (mts_cdma.fw)
 * Multi-Tech USB EDGE modem firmware (mts_edge.fw)
 * Multi-Tech USB GPRS modem firmware (mts_gsm.fw)
 * Rage 128 CCE microcode (r128/r128_cce.bin)
 * Radeon HD 5400-family ME microcode (radeon/CEDAR_me.bin)
 * Radeon HD 5400-family PFP microcode (radeon/CEDAR_pfp.bin)
 * Radeon HD 5400-family RLC microcode (radeon/CEDAR_rlc.bin)
 * Radeon HD 5800/5900-family ME microcode (radeon/CYPRESS_me.bin)
 * Radeon HD 5800/5900-family PFP microcode (radeon/CYPRESS_pfp.bin)
 * Radeon HD 5800/5900-family RLC microcode (radeon/CYPRESS_rlc.bin)
 * Radeon HD 5700-family ME microcode (radeon/JUNIPER_me.bin)
 * Radeon HD 5700-family PFP microcode (radeon/JUNIPER_pfp.bin)
 * Radeon HD 5700-family RLC microcode (radeon/JUNIPER_rlc.bin)
 * Radeon R100-family CP microcode (radeon/R100_cp.bin)
 * Radeon R200-family CP microcode (radeon/R200_cp.bin)
 * Radeon R300-family CP microcode (radeon/R300_cp.bin)
 * Radeon R400-family CP microcode (radeon/R420_cp.bin)
 * Radeon R500-family CP microcode (radeon/R520_cp.bin)
 * Radeon R600 ME microcode (radeon/R600_me.bin)
 * Radeon R600 PFP microcode (radeon/R600_pfp.bin)
 * Radeon R600-family RLC microcode (radeon/R600_rlc.bin)
 * Radeon R700-family RLC microcode (radeon/R700_rlc.bin)
 * Radeon HD 5500/5600-family ME microcode (radeon/REDWOOD_me.bin)
 * Radeon HD 5500/5600-family PFP microcode (radeon/REDWOOD_pfp.bin)
 * Radeon HD 5500/5600-family RLC microcode (radeon/REDWOOD_rlc.bin)
 * Radeon RS600 CP microcode (radeon/RS600_cp.bin)
 * Radeon RS690 CP microcode (radeon/RS690_cp.bin)
 * Radeon RS780 ME microcode (radeon/RS780_me.bin)
 * Radeon RS780 PFP microcode (radeon/RS780_pfp.bin)
 * Radeon RV610 ME microcode (radeon/RV610_me.bin)
 * Radeon RV610 PFP microcode (radeon/RV610_pfp.bin)
 * Radeon RV620 ME microcode (radeon/RV620_me.bin)
 * Radeon RV620 PFP microcode (radeon/RV620_pfp.bin)
 * Radeon RV630 ME microcode (radeon/RV630_me.bin)
 * Radeon RV630 PFP microcode (radeon/RV630_pfp.bin)
 * Radeon RV635 ME microcode (radeon/RV635_me.bin)
 * Radeon RV635 PFP microcode (radeon/RV635_pfp.bin)
 * Radeon RV670 ME microcode (radeon/RV670_me.bin)
 * Radeon RV670 PFP microcode (radeon/RV670_pfp.bin)
 * Radeon RV710 ME microcode (radeon/RV710_me.bin)
 * Radeon RV710 PFP microcode (radeon/RV710_pfp.bin)
 * Radeon RV730 ME microcode (radeon/RV730_me.bin)
 * Radeon RV730 PFP microcode (radeon/RV730_pfp.bin)
 * Radeon RV770 ME microcode (radeon/RV770_me.bin)
 * Radeon RV770 PFP microcode (radeon/RV770_pfp.bin)
 * Tehuti network card firmware (tehuti/bdx.bin)
 * Broadcom BCM5703/BCM5704 TSO firmware (tigon/tg3_tso.bin)
 * Broadcom BCM5701A0 firmware (tigon/tg3.bin)
 * Broadcom BCM5705 TSO firmware (tigon/tg3_tso5.bin)
 * QLogic QLA1040 firmware, version 7.65.06 (qlogic/1040.bin)
 * QLogic QLA1080, 1240, 1280 firmware, version 8.15.11 (qlogic/1280.bin)
 * QLogic QLA10160, 12160 firmware, version 10.04.42 (qlogic/12160.bin)
 * QLogic IBA7220 serdes firmware (qlogic/sd7220.fw)
 * QLogic QLA2100 firmware, version 1.19.38 (ql2100_fw.bin)
 * QLogic QLA2200 firmware, version 2.02.08 (ql2200_fw.bin)
 * QLogic QLA2300, ISP2312, SP202 firmware, version 3.03.27 (ql2300_fw.bin)
 * QLogic ISP2322, SP212 firmware, version 3.03.27 (ql2322_fw.bin)
 * QLogic ISP2422, ISP2432[M], SP222, SP232 firmware, version 4.04.05 (ql2400_fw.bin)
 * QLogic ISP2532 firmware, version 4.04.05 (ql2500_fw.bin)
 * Ralink RT2561 (RT2501/RT5201 chipset) firmware, version 1.2 (rt2561.bin)
 * Ralink RT2561S (RT2501 Turbo/RT5201 Turbo chipset) firmware, version 1.2 (rt2561s.bin)
 * Ralink RT2661 (RT2600/RT5600 chipset) firmware, version 1.2 (rt2661.bin)
 * Ralink RT2760/RT2790/RT2860/RT2890 (RT2700P[D]/RT2700E[D]/RT2800P[D]/RT2800E[D] chipset) firmware, version 11 (rt2860.bin)
 * Ralink RT2870 (RT2800U[D] chipset) firmware, version 12 (rt2870.bin)
 * Ralink RT3070 firmware, version 17 (rt3070.bin)
 * Ralink RT3071/RT3072 firmware, version 17 (rt3071.bin)
 * Ralink RT3090 (RT3000E[D] chipset) firmware, version 19 (rt3090.bin)
 * Ralink RT2571W/RT2671 (RT2501USB/RT5201USB chipset) firmware, version 1.8 (rt73.bin)
 * NPE-B
 * NPE-C
 * ZyDAS ZD1211
 * ZyDAS ZD1211B
 * Atheros AR5007UG (alternatively known as AR2524/AR5524)
&lt;/code&gt;

[http://www.debian-fr.org/iso-avec-firmwares-non-libres-inclus-t30631.html source forum]

[[Category:Matériel et Drivers Divers]]</text>
      <sha1>476nsi5ddplf5liuyxv3slwif25dr3w</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2908</id>
      <parentid>2907</parentid>
      <timestamp>2011-04-18T10:01:48Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Mise à jour liste</comment>
      <text xml:space="preserve" bytes="10059">L'info provient de ce topic :http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=29318

Vous avez des problèmes pour installer Debian car votre matériel réseau, trop récent ou non libre n'est pas pris en charge par les images classiques de Debian ?

Voici peut-être la solution : http://lists.debian.org/debian-cd/2010/08/msg00015.html

Ce message vous renverra sur le site suivant : http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/ ou vous trouverez des images Sid et Squeeze incluant des firmwares que l'on ne trouve pas dans les images classiques Debian.


Avec cette ligne de code vous récupérerez la liste des firmwares supportée :

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;

cd /tmp;wget -c http://cdimage.debian.org/cdimage/unofficial/non-free/firmware/squeeze/current/firmware.zip;unzip firmware.zip; for i in *deb;do dpkg --info $i|sed -n 's/^[  ]\+\*/*/p'&gt;&gt;liste_firmware.tmp;done;sort liste_firmware.tmp &gt; liste_firmware; rm *.deb firmware.zip liste_firmware.tmp; echo &quot;Terminé...&quot;

&lt;/pre&gt;


Ce qui donne (ce 18 avril 2011):
&lt;code&gt;
$ cat liste_firmware 
* 3Com Typhoon firmware, version 03.001.008 (3com/typhoon.bin)
* AdvanSys ASC-3550 firmware (advansys/3550.bin)
* AdvanSys ASC-38C0800 firmware (advansys/38C0800.bin)
* AdvanSys ASC-38C1600 firmware (advansys/38C1600.bin)
* AdvanSys SCSI controller microcode (advansys/mcode.bin)
* Agere/Prism/Symbol Orinoco firmware (AP mode), version 9.48 Hermes I (agere_ap_fw.bin)
* Agere/Prism/Symbol Orinoco firmware (STA mode), version 9.48 Hermes I (agere_sta_fw.bin)
* Atheros AR5007UG (alternatively known as AR2524/AR5524)
* bnx2/bnx2-rv2p-06-6.0.15.fw
* Broadcom BCM5701A0 firmware (tigon/tg3.bin)
* Broadcom BCM5703/BCM5704 TSO firmware (tigon/tg3_tso.bin)
* Broadcom BCM5705 TSO firmware (tigon/tg3_tso5.bin)
* Broadcom NetXtreme II 10Gb 57710, version 4.8.53.0 (bnx2x-e1-4.8.53.0.fw)
* Broadcom NetXtreme II 10Gb 57710, version 5.0.21.0 (bnx2x-e1-5.0.21.0.fw)
* Broadcom NetXtreme II 10Gb 57710, version 6.0.34.0 (bnx2x/bnx2x-e1-6.0.34.0.fw)
* Broadcom NetXtreme II 10Gb 57711, version 4.8.53.0 (bnx2x-e1h-4.8.53.0.fw)
* Broadcom NetXtreme II 10Gb 57711, version 5.0.21.0 (bnx2x-e1h-5.0.21.0.fw)
* Broadcom NetXtreme II 10Gb 57711, version 6.0.34.0 (bnx2x/bnx2x-e1h-6.0.34.0.fw)
* Broadcom NetXtreme II 10Gb 57712, version 6.0.34.0 (bnx2x/bnx2x-e2-6.0.34.0.fw)
* Broadcom NetXtremeII 5706/5708 firmware (mips), version Linux 2.6.32 (bnx2/bnx2-mips-06-5.0.0.j3.fw)
* Broadcom NetXtremeII 5706/5708 firmware (mips), version Linux 2.6.37 (bnx2/bnx2-mips-06-6.0.15.fw)
* Broadcom NetXtremeII 5706/5708 firmware (rv2p), version Linux 2.6.32 (bnx2/bnx2-rv2p-06-5.0.0.j3.fw)
* Broadcom NetXtremeII 5706/5708 firmware, version Linux 2.6.25 (bnx2-06-4.0.5.fw)
* Broadcom NetXtremeII 5709/5716 firmware (mips), version Linux 2.6.32 (bnx2/bnx2-mips-09-5.0.0.j3.fw)
* Broadcom NetXtremeII 5709/5716 firmware (mips), version Linux 2.6.37 (bnx2/bnx2-mips-09-6.0.17.fw)
* Broadcom NetXtremeII 5709/5716 firmware (rv2p), version Linux 2.6.32 (bnx2/bnx2-rv2p-09-5.0.0.j3.fw)
* Broadcom NetXtremeII 5709/5716 firmware (rv2p), version Linux 2.6.37 (bnx2/bnx2-rv2p-09-6.0.17.fw)
* Broadcom NetXtremeII 5709 A0/A1 firmware (rv2p), version Linux 2.6.32 (bnx2/bnx2-rv2p-09ax-5.0.0.j3.fw)
* Broadcom NetXtremeII 5709 A0/A1 firmware (rv2p), version Linux 2.6.37 (bnx2/bnx2-rv2p-09ax-6.0.17.fw)
* Broadcom NetXtremeII 5709 firmware, version Linux 2.6.25 (bnx2-09-4.0.5.fw)
* Chelsio T3B protocol engine firmware, version 1.1.0 (cxgb3/t3b_psram-1.1.0.bin)
* Chelsio T3C protocol engine firmware, version 1.1.0 (cxgb3/t3c_psram-1.1.0.bin)
* Chelsio T3 main firmware, version 7.4.0 (cxgb3/t3fw-7.4.0.bin)
* Chelsio T3 optical EDC firmware (AEL2005 PHY) (cxgb3/ael2005_opt_edc.bin)
* Chelsio T3 twinax EDC firmware (AEL2005 PHY) (cxgb3/ael2005_twx_edc.bin)
* Chelsio T3 twinax EDC firmware (AEL2020 PHY) (cxgb3/ael2020_twx_edc.bin)
* DAB-USB firmware (dabusb/firmware.fw)
* DAB-USB FPGA bitfile (dabusb/bitstream.bin)
* DiBcom dib0700 USB DVB bridge firmware, version 1.20 (dvb-usb-dib0700-1.20.fw)
* Intel 82551-F and 82551-10 microcode (e100/d102e_ucode.bin)
* Intel 82559 D101M microcode (e100/d101m_ucode.bin)
* Intel 82559 D101S microcode (e100/d101s_ucode.bin)
* Intel Pro Wireless 2100 firmware (bootstrap), version 1.3 (ipw2100-1.3.fw)
* Intel Pro Wireless 2100 firmware (ibss mode), version 1.3 (ipw2100-1.3-i.fw)
* Intel Pro Wireless 2100 firmware (monitor mode), version 1.3 (ipw2100-1.3-p.fw)
* Intel Pro Wireless 2200/2915 firmware (bss), version 3.1 (ipw2200-bss.fw)
* Intel Pro Wireless 2200/2915 firmware (ibss), version 3.1 (ipw2200-ibss.fw)
* Intel Pro Wireless 2200/2915 firmware (snf), version 3.1 (ipw2200-sniffer.fw)
* Intel Wireless 1000 firmware, version 128.50.3.1 (iwlwifi-1000-3.ucode)
* Intel Wireless 3945 firmware, version 15.28.1.6 (iwlwifi-3945-1.ucode)
* Intel Wireless 3945 firmware, version 15.32.2.9 (iwlwifi-3945-2.ucode)
* Intel Wireless 4965 firmware, version 228.57.1.21 (iwlwifi-4965-1.ucode)
* Intel Wireless 4965 firmware, version 228.61.2.24 (iwlwifi-4965-2.ucode)
* Intel Wireless 5100, 5300 and 5350 firmware, version 5.4.A.11 (iwlwifi-5000-1.ucode)
* Intel Wireless 5100, 5300 and 5350 firmware, version 8.24.2.12 (iwlwifi-5000-2.ucode)
* Intel Wireless 5150 firmware, version 8.24.2.2 (iwlwifi-5150-2.ucode)
* Intel Wireless 6000 firmware, version 9.193.4.1 (iwlwifi-6000-4.ucode)
* Intel Wireless 6005 firmware, version 17.168.5.1 (iwlwifi-6000g2a-5.ucode)
* Intel Wireless 6030 firmware, version 17.168.5.1 (iwlwifi-6000g2b-5.ucode)
* Intel Wireless 6250 firmware, version 41.28.5.1 (iwlwifi-6050-5.ucode)
* Intel Wireless 6250 firmware, version 9.201.4.1 (iwlwifi-6050-4.ucode)
* kaweth/new_code.bin
* kaweth/new_code_fix.bin
* kaweth/trigger_code.bin
* kaweth/trigger_code_fix.bin
* Matrox G200 WARP engine microcode (matrox/g200_warp.fw)
* Matrox G400/G550 WARP engine microcode (matrox/g400_warp.fw)
* Multi-Tech USB CDMA modem firmware (mts_cdma.fw)
* Multi-Tech USB EDGE modem firmware (mts_edge.fw)
* Multi-Tech USB GPRS modem firmware (mts_gsm.fw)
* NPE-B
* NPE-C
* QLogic IBA7220 serdes firmware (qlogic/sd7220.fw)
* QLogic ISP2322, SP212 firmware, version 3.03.27 (ql2322_fw.bin)
* QLogic ISP2422, ISP2432[M], SP222, SP232 firmware, version 4.04.05 (ql2400_fw.bin)
* QLogic ISP2532 firmware, version 4.04.05 (ql2500_fw.bin)
* QLogic QLA10160, 12160 firmware, version 10.04.42 (qlogic/12160.bin)
* QLogic QLA1040 firmware, version 7.65.06 (qlogic/1040.bin)
* QLogic QLA1080, 1240, 1280 firmware, version 8.15.11 (qlogic/1280.bin)
* QLogic QLA2100 firmware, version 1.19.38 (ql2100_fw.bin)
* QLogic QLA2200 firmware, version 2.02.08 (ql2200_fw.bin)
* QLogic QLA2300, ISP2312, SP202 firmware, version 3.03.27 (ql2300_fw.bin)
* Radeon HD 5400-family ME microcode (radeon/CEDAR_me.bin)
* Radeon HD 5400-family PFP microcode (radeon/CEDAR_pfp.bin)
* Radeon HD 5400-family RLC microcode (radeon/CEDAR_rlc.bin)
* Radeon HD 5500/5600-family ME microcode (radeon/REDWOOD_me.bin)
* Radeon HD 5500/5600-family PFP microcode (radeon/REDWOOD_pfp.bin)
* Radeon HD 5500/5600-family RLC microcode (radeon/REDWOOD_rlc.bin)
* Radeon HD 5700-family ME microcode (radeon/JUNIPER_me.bin)
* Radeon HD 5700-family PFP microcode (radeon/JUNIPER_pfp.bin)
* Radeon HD 5700-family RLC microcode (radeon/JUNIPER_rlc.bin)
* Radeon HD 5800/5900-family ME microcode (radeon/CYPRESS_me.bin)
* Radeon HD 5800/5900-family PFP microcode (radeon/CYPRESS_pfp.bin)
* Radeon HD 5800/5900-family RLC microcode (radeon/CYPRESS_rlc.bin)
* Radeon R100-family CP microcode (radeon/R100_cp.bin)
* Radeon R200-family CP microcode (radeon/R200_cp.bin)
* Radeon R300-family CP microcode (radeon/R300_cp.bin)
* Radeon R400-family CP microcode (radeon/R420_cp.bin)
* Radeon R500-family CP microcode (radeon/R520_cp.bin)
* Radeon R600-family RLC microcode (radeon/R600_rlc.bin)
* Radeon R600 ME microcode (radeon/R600_me.bin)
* Radeon R600 PFP microcode (radeon/R600_pfp.bin)
* Radeon R700-family RLC microcode (radeon/R700_rlc.bin)
* Radeon RS600 CP microcode (radeon/RS600_cp.bin)
* Radeon RS690 CP microcode (radeon/RS690_cp.bin)
* Radeon RS780 ME microcode (radeon/RS780_me.bin)
* Radeon RS780 PFP microcode (radeon/RS780_pfp.bin)
* Radeon RV610 ME microcode (radeon/RV610_me.bin)
* Radeon RV610 PFP microcode (radeon/RV610_pfp.bin)
* Radeon RV620 ME microcode (radeon/RV620_me.bin)
* Radeon RV620 PFP microcode (radeon/RV620_pfp.bin)
* Radeon RV630 ME microcode (radeon/RV630_me.bin)
* Radeon RV630 PFP microcode (radeon/RV630_pfp.bin)
* Radeon RV635 ME microcode (radeon/RV635_me.bin)
* Radeon RV635 PFP microcode (radeon/RV635_pfp.bin)
* Radeon RV670 ME microcode (radeon/RV670_me.bin)
* Radeon RV670 PFP microcode (radeon/RV670_pfp.bin)
* Radeon RV710 ME microcode (radeon/RV710_me.bin)
* Radeon RV710 PFP microcode (radeon/RV710_pfp.bin)
* Radeon RV730 ME microcode (radeon/RV730_me.bin)
* Radeon RV730 PFP microcode (radeon/RV730_pfp.bin)
* Radeon RV770 ME microcode (radeon/RV770_me.bin)
* Radeon RV770 PFP microcode (radeon/RV770_pfp.bin)
* Rage 128 CCE microcode (r128/r128_cce.bin)
* Ralink RT2561 (RT2501/RT5201 chipset) firmware, version 1.2 (rt2561.bin)
* Ralink RT2561S (RT2501 Turbo/RT5201 Turbo chipset) firmware, version 1.2 (rt2561s.bin)
* Ralink RT2571W/RT2671 (RT2501USB/RT5201USB chipset) firmware, version 1.8 (rt73.bin)
* Ralink RT2661 (RT2600/RT5600 chipset) firmware, version 1.2 (rt2661.bin)
* Ralink RT2760/RT2790/RT2860/RT2890 (RT2700P[D]/RT2700E[D]/RT2800P[D]/RT2800E[D] chipset) firmware, version 11 (rt2860.bin)
* Ralink RT2870 (RT2800U[D] chipset) firmware, version 12 (rt2870.bin)
* Ralink RT3070 firmware, version 17 (rt3070.bin)
* Ralink RT3071/RT3072 firmware, version 17 (rt3071.bin)
* Ralink RT3090 (RT3000E[D] chipset) firmware, version 19 (rt3090.bin)
* Tehuti network card firmware (tehuti/bdx.bin)
* Xceive 5000 tuner firmware, version 1.6.114 (dvb-fe-xc5000-1.6.114.fw)
* ZyDAS ZD1211
* ZyDAS ZD1211B
&lt;/code&gt;

[http://www.debian-fr.org/iso-avec-firmwares-non-libres-inclus-t30631.html source forum]

[[Category:Matériel et Drivers Divers]]</text>
      <sha1>f007kacpoq3ilh4d0e24a6oppj1walj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3950</id>
      <parentid>2908</parentid>
      <timestamp>2012-03-16T07:44:21Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="11826">L'info provient de ce topic :http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=29318

Vous avez des problèmes pour installer Debian car votre matériel réseau, trop récent ou non libre n'est pas pris en charge par les images classiques de Debian ?

Voici peut-être la solution : http://lists.debian.org/debian-cd/2010/08/msg00015.html

Ce message vous renverra sur le site suivant : http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/ ou vous trouverez des images Sid et Squeeze incluant des firmwares que l'on ne trouve pas dans les images classiques Debian.


Avec cette ligne de code vous récupérerez la liste des firmwares supportée :

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;

cd /tmp;wget -c http://cdimage.debian.org/cdimage/unofficial/non-free/firmware/squeeze/current/firmware.zip;unzip firmware.zip; for i in *deb;do dpkg --info $i|sed -n 's/^[  ]\+\*/*/p'&gt;&gt;liste_firmware.tmp;done;sort liste_firmware.tmp &gt; liste_firmware; rm *.deb firmware.zip liste_firmware.tmp; echo &quot;Terminé...&quot;

&lt;/pre&gt;


Ce qui donne (ce 16 mars 2012):

 $ cat liste_firmware 
&lt;collapsetext&gt;
'''Cliquez sur la flèche ci-dessus pour dérouler.'''
&lt;code&gt;
* 3Com Typhoon firmware, version 03.001.008 (3com/typhoon.bin)
* AdvanSys ASC-3550 firmware (advansys/3550.bin)
* AdvanSys ASC-38C0800 firmware (advansys/38C0800.bin)
* AdvanSys ASC-38C1600 firmware (advansys/38C1600.bin)
* AdvanSys SCSI controller microcode (advansys/mcode.bin)
* Agere/Prism/Symbol Orinoco firmware (AP mode), version 9.48 Hermes I (agere_ap_fw.bin)
* Agere/Prism/Symbol Orinoco firmware (STA mode), version 9.48 Hermes I (agere_sta_fw.bin)
* Atheros AR3011 firmware (ath3k-1.fw)
* Atheros AR5007UG (alternatively known as AR2524/AR5524)
* Atheros AR7010/AR7015/AR9018 (type 1) firmware (ar7010.fw)
* Atheros AR7010/AR7015/AR9018 (type 2) firmware (ar7010_1_1.fw)
* Atheros AR9170 firmware (ar9170.fw)
* Atheros AR9271 firmware (ar9271.fw)
* bnx2/bnx2-rv2p-06-6.0.15.fw
* Broadcom 802.11 firmware header, version 610.809.0 (brcm/bcm43xx_hdr-0.fw)
* Broadcom 802.11 firmware, version 610.809.0 (brcm/bcm43xx-0.fw)
* Broadcom BCM5701A0 firmware (tigon/tg3.bin)
* Broadcom BCM5703/BCM5704 TSO firmware (tigon/tg3_tso.bin)
* Broadcom BCM5705 TSO firmware (tigon/tg3_tso5.bin)
* Broadcom NetXtreme II 10Gb 57710, version 4.8.53.0 (bnx2x-e1-4.8.53.0.fw)
* Broadcom NetXtreme II 10Gb 57710, version 5.0.21.0 (bnx2x-e1-5.0.21.0.fw)
* Broadcom NetXtreme II 10Gb 57710, version 6.0.34.0 (bnx2x/bnx2x-e1-6.0.34.0.fw)
* Broadcom NetXtreme II 10Gb 57711, version 4.8.53.0 (bnx2x-e1h-4.8.53.0.fw)
* Broadcom NetXtreme II 10Gb 57711, version 5.0.21.0 (bnx2x-e1h-5.0.21.0.fw)
* Broadcom NetXtreme II 10Gb 57711, version 6.0.34.0 (bnx2x/bnx2x-e1h-6.0.34.0.fw)
* Broadcom NetXtreme II 10Gb 57712, version 6.0.34.0 (bnx2x/bnx2x-e2-6.0.34.0.fw)
* Broadcom NetXtremeII 5706/5708 firmware (mips), version Linux 2.6.32 (bnx2/bnx2-mips-06-5.0.0.j3.fw)
* Broadcom NetXtremeII 5706/5708 firmware (mips), version Linux 2.6.37 (bnx2/bnx2-mips-06-6.0.15.fw)
* Broadcom NetXtremeII 5706/5708 firmware (rv2p), version Linux 2.6.32 (bnx2/bnx2-rv2p-06-5.0.0.j3.fw)
* Broadcom NetXtremeII 5706/5708 firmware, version Linux 2.6.25 (bnx2-06-4.0.5.fw)
* Broadcom NetXtremeII 5709/5716 firmware (mips), version Linux 2.6.32 (bnx2/bnx2-mips-09-5.0.0.j3.fw)
* Broadcom NetXtremeII 5709/5716 firmware (mips), version Linux 2.6.37 (bnx2/bnx2-mips-09-6.0.17.fw)
* Broadcom NetXtremeII 5709/5716 firmware (rv2p), version Linux 2.6.32 (bnx2/bnx2-rv2p-09-5.0.0.j3.fw)
* Broadcom NetXtremeII 5709/5716 firmware (rv2p), version Linux 2.6.37 (bnx2/bnx2-rv2p-09-6.0.17.fw)
* Broadcom NetXtremeII 5709 A0/A1 firmware (rv2p), version Linux 2.6.32 (bnx2/bnx2-rv2p-09ax-5.0.0.j3.fw)
* Broadcom NetXtremeII 5709 A0/A1 firmware (rv2p), version Linux 2.6.37 (bnx2/bnx2-rv2p-09ax-6.0.17.fw)
* Broadcom NetXtremeII 5709 firmware, version Linux 2.6.25 (bnx2-09-4.0.5.fw)
* Chelsio T3B protocol engine firmware, version 1.1.0 (cxgb3/t3b_psram-1.1.0.bin)
* Chelsio T3C protocol engine firmware, version 1.1.0 (cxgb3/t3c_psram-1.1.0.bin)
* Chelsio T3 main firmware, version 7.4.0 (cxgb3/t3fw-7.4.0.bin)
* Chelsio T3 optical EDC firmware (AEL2005 PHY) (cxgb3/ael2005_opt_edc.bin)
* Chelsio T3 twinax EDC firmware (AEL2005 PHY) (cxgb3/ael2005_twx_edc.bin)
* Chelsio T3 twinax EDC firmware (AEL2020 PHY) (cxgb3/ael2020_twx_edc.bin)
* Conexant CX23415/CX23416 MPEG codec (decoder) (v4l-cx2341x-dec.fw)
* Conexant CX23415/CX23416 MPEG codec (encoder) (v4l-cx2341x-enc.fw)
* Conexant CX23415/CX23416 MPEG codec (initialization) (v4l-cx2341x-init.mpg)
* Conexant CX25840 MPEG codec (v4l-cx25840.fw)
* DAB-USB firmware (dabusb/firmware.fw)
* DAB-USB FPGA bitfile (dabusb/bitstream.bin)
* DiBcom dib0700 USB DVB bridge firmware, version 1.20 (dvb-usb-dib0700-1.20.fw)
* Hauppauge PVR USB2 24xxx models (v4l-pvrusb2-24xxx-01.fw)
* Hauppauge PVR USB2 29xxx models (v4l-pvrusb2-29xxx-01.fw)
* Intel 82551-F and 82551-10 microcode (e100/d102e_ucode.bin)
* Intel 82559 D101M microcode (e100/d101m_ucode.bin)
* Intel 82559 D101S microcode (e100/d101s_ucode.bin)
* Intel Pro Wireless 2100 firmware (bootstrap), version 1.3 (ipw2100-1.3.fw)
* Intel Pro Wireless 2100 firmware (ibss mode), version 1.3 (ipw2100-1.3-i.fw)
* Intel Pro Wireless 2100 firmware (monitor mode), version 1.3 (ipw2100-1.3-p.fw)
* Intel Pro Wireless 2200/2915 firmware (bss), version 3.1 (ipw2200-bss.fw)
* Intel Pro Wireless 2200/2915 firmware (ibss), version 3.1 (ipw2200-ibss.fw)
* Intel Pro Wireless 2200/2915 firmware (snf), version 3.1 (ipw2200-sniffer.fw)
* Intel WiMAX Connection 2400 USB firmware, version 1.4 (i2400m-fw-usb-1.4.sbcf)
* Intel WiMAX Connection 2400 USB firmware, version 1.5 (i2400m-fw-usb-1.5.sbcf)
* Intel WiMAX/WiFi Link 6050 USB firmware, version 1.5 (i6050-fw-usb-1.5.sbcf)
* Intel Wireless 1000 firmware, version 128.50.3.1 (iwlwifi-1000-3.ucode)
* Intel Wireless 3945 firmware, version 15.28.1.6 (iwlwifi-3945-1.ucode)
* Intel Wireless 3945 firmware, version 15.32.2.9 (iwlwifi-3945-2.ucode)
* Intel Wireless 4965 firmware, version 228.57.1.21 (iwlwifi-4965-1.ucode)
* Intel Wireless 4965 firmware, version 228.61.2.24 (iwlwifi-4965-2.ucode)
* Intel Wireless 5100, 5300 and 5350 firmware, version 5.4.A.11 (iwlwifi-5000-1.ucode)
* Intel Wireless 5100, 5300 and 5350 firmware, version 8.24.2.12 (iwlwifi-5000-2.ucode)
* Intel Wireless 5150 firmware, version 8.24.2.2 (iwlwifi-5150-2.ucode)
* Intel Wireless 6000 firmware, version 9.193.4.1 (iwlwifi-6000-4.ucode)
* Intel Wireless 6005 firmware, version 17.168.5.1 (iwlwifi-6000g2a-5.ucode)
* Intel Wireless 6030 firmware, version 17.168.5.1 (iwlwifi-6000g2b-5.ucode)
* Intel Wireless 6250 firmware, version 41.28.5.1 (iwlwifi-6050-5.ucode)
* Intel Wireless 6250 firmware, version 9.201.4.1 (iwlwifi-6050-4.ucode)
* kaweth/new_code.bin
* kaweth/new_code_fix.bin
* kaweth/trigger_code.bin
* kaweth/trigger_code_fix.bin
* Matrox G200 WARP engine microcode (matrox/g200_warp.fw)
* Matrox G400/G550 WARP engine microcode (matrox/g400_warp.fw)
* Multi-Tech USB CDMA modem firmware (mts_cdma.fw)
* Multi-Tech USB EDGE modem firmware (mts_edge.fw)
* Multi-Tech USB GPRS modem firmware (mts_gsm.fw)
* NPE-B
* NPE-C
* phanfw.bin
* QLogic IBA7220 serdes firmware (qlogic/sd7220.fw)
* QLogic ISP2322, SP212 firmware, version 3.03.27 (ql2322_fw.bin)
* QLogic ISP2422, ISP2432[M], SP222, SP232 firmware, version 4.04.05 (ql2400_fw.bin)
* QLogic ISP2532 firmware, version 4.04.05 (ql2500_fw.bin)
* QLogic QLA10160, 12160 firmware, version 10.04.42 (qlogic/12160.bin)
* QLogic QLA1040 firmware, version 7.65.06 (qlogic/1040.bin)
* QLogic QLA1080, 1240, 1280 firmware, version 8.15.11 (qlogic/1280.bin)
* QLogic QLA2100 firmware, version 1.19.38 (ql2100_fw.bin)
* QLogic QLA2200 firmware, version 2.02.08 (ql2200_fw.bin)
* QLogic QLA2300, ISP2312, SP202 firmware, version 3.03.27 (ql2300_fw.bin)
* Radeon HD 5400-family ME microcode (radeon/CEDAR_me.bin)
* Radeon HD 5400-family PFP microcode (radeon/CEDAR_pfp.bin)
* Radeon HD 5400-family RLC microcode (radeon/CEDAR_rlc.bin)
* Radeon HD 5500/5600-family ME microcode (radeon/REDWOOD_me.bin)
* Radeon HD 5500/5600-family PFP microcode (radeon/REDWOOD_pfp.bin)
* Radeon HD 5500/5600-family RLC microcode (radeon/REDWOOD_rlc.bin)
* Radeon HD 5700-family ME microcode (radeon/JUNIPER_me.bin)
* Radeon HD 5700-family PFP microcode (radeon/JUNIPER_pfp.bin)
* Radeon HD 5700-family RLC microcode (radeon/JUNIPER_rlc.bin)
* Radeon HD 5800/5900-family ME microcode (radeon/CYPRESS_me.bin)
* Radeon HD 5800/5900-family PFP microcode (radeon/CYPRESS_pfp.bin)
* Radeon HD 5800/5900-family RLC microcode (radeon/CYPRESS_rlc.bin)
* Radeon R100-family CP microcode (radeon/R100_cp.bin)
* Radeon R200-family CP microcode (radeon/R200_cp.bin)
* Radeon R300-family CP microcode (radeon/R300_cp.bin)
* Radeon R400-family CP microcode (radeon/R420_cp.bin)
* Radeon R500-family CP microcode (radeon/R520_cp.bin)
* Radeon R600-family RLC microcode (radeon/R600_rlc.bin)
* Radeon R600 ME microcode (radeon/R600_me.bin)
* Radeon R600 PFP microcode (radeon/R600_pfp.bin)
* Radeon R700-family RLC microcode (radeon/R700_rlc.bin)
* Radeon RS600 CP microcode (radeon/RS600_cp.bin)
* Radeon RS690 CP microcode (radeon/RS690_cp.bin)
* Radeon RS780 ME microcode (radeon/RS780_me.bin)
* Radeon RS780 PFP microcode (radeon/RS780_pfp.bin)
* Radeon RV610 ME microcode (radeon/RV610_me.bin)
* Radeon RV610 PFP microcode (radeon/RV610_pfp.bin)
* Radeon RV620 ME microcode (radeon/RV620_me.bin)
* Radeon RV620 PFP microcode (radeon/RV620_pfp.bin)
* Radeon RV630 ME microcode (radeon/RV630_me.bin)
* Radeon RV630 PFP microcode (radeon/RV630_pfp.bin)
* Radeon RV635 ME microcode (radeon/RV635_me.bin)
* Radeon RV635 PFP microcode (radeon/RV635_pfp.bin)
* Radeon RV670 ME microcode (radeon/RV670_me.bin)
* Radeon RV670 PFP microcode (radeon/RV670_pfp.bin)
* Radeon RV710 ME microcode (radeon/RV710_me.bin)
* Radeon RV710 PFP microcode (radeon/RV710_pfp.bin)
* Radeon RV730 ME microcode (radeon/RV730_me.bin)
* Radeon RV730 PFP microcode (radeon/RV730_pfp.bin)
* Radeon RV770 ME microcode (radeon/RV770_me.bin)
* Radeon RV770 PFP microcode (radeon/RV770_pfp.bin)
* Rage 128 CCE microcode (r128/r128_cce.bin)
* Ralink RT2561 (RT2501/RT5201 chipset) firmware, version 1.2 (rt2561.bin)
* Ralink RT2561S (RT2501 Turbo/RT5201 Turbo chipset) firmware, version 1.2 (rt2561s.bin)
* Ralink RT2571W/RT2671 (RT2501USB/RT5201USB chipset) firmware, version 1.8 (rt73.bin)
* Ralink RT2661 (RT2600/RT5600 chipset) firmware, version 1.2 (rt2661.bin)
* Ralink RT2760/RT2790/RT2860/RT2890 (RT2700P[D]/RT2700E[D]/RT2800P[D]/RT2800E[D] chipset) firmware, version 11 (rt2860.bin)
* Ralink RT2870 (RT2800U[D] chipset) firmware, version 12 (rt2870.bin)
* Ralink RT3070 firmware, version 17 (rt3070.bin)
* Ralink RT3071/RT3072 firmware, version 17 (rt3071.bin)
* Ralink RT3090 (RT3000E[D] chipset) firmware, version 19 (rt3090.bin)
* Realtek RTL8105E-1 firmware (rtl_nic/rtl8105e-1.fw)
* Realtek RTL8111D-1/RTL8168D-1 firmware (rtl_nic/rtl8168d-1.fw)
* Realtek RTL8111D-2/RTL8168D-2 firmware (rtl_nic/rtl8168d-2.fw)
* Realtek RTL8168E-1 firmware (rtl_nic/rtl8168e-1.fw)
* Realtek RTL8168E-2 firmware (rtl_nic/rtl8168e-2.fw)
* Realtek RTL8168E-3 firmware (rtl_nic/rtl8168e-3.fw)
* Realtek RTL8192E boot code (RTL8192E/boot.img)
* Realtek RTL8192E init data (RTL8192E/data.img)
* Realtek RTL8192E main code (RTL8192E/main.img)
* Realtek RTL8192SU firmware, version 902B (RTL8192SU/rtl8192sfw.bin)
* Realtek RTL8192SU/RTL8712U firmware (rtlwifi/rtl8712u.bin)
* Tehuti network card firmware (tehuti/bdx.bin)
* VIA VT6656 firmware (vntwusb.fw)
* Xceive 5000 tuner firmware, version 1.6.114 (dvb-fe-xc5000-1.6.114.fw)
* ZyDAS ZD1211
* ZyDAS ZD1211B
&lt;/code&gt;
&lt;/collapsetext&gt;

[http://www.debian-fr.org/iso-avec-firmwares-non-libres-inclus-t30631.html source forum]

[[Category:Matériel et Drivers Divers]]</text>
      <sha1>0cfn0nnw7lav39m3elru945a4wb9yh1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3951</id>
      <parentid>3950</parentid>
      <timestamp>2012-03-16T12:04:26Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Kenshi Muto Backported d-i images archive</comment>
      <text xml:space="preserve" bytes="12148">== Images Debian pour firmwares non reconnus ==

L'info provient de ce topic :http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=29318

Vous avez des problèmes pour installer Debian car votre matériel réseau, trop récent ou non libre n'est pas pris en charge par les images classiques de Debian ?

Voici peut-être la solution : http://lists.debian.org/debian-cd/2010/08/msg00015.html

Ce message vous renverra sur le site suivant : http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/ ou vous trouverez des images Sid et Squeeze incluant des firmwares que l'on ne trouve pas dans les images classiques Debian.


Avec cette ligne de code vous récupérerez la liste des firmwares supportée :

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;

cd /tmp;wget -c http://cdimage.debian.org/cdimage/unofficial/non-free/firmware/squeeze/current/firmware.zip;unzip firmware.zip; for i in *deb;do dpkg --info $i|sed -n 's/^[  ]\+\*/*/p'&gt;&gt;liste_firmware.tmp;done;sort liste_firmware.tmp &gt; liste_firmware; rm *.deb firmware.zip liste_firmware.tmp; echo &quot;Terminé...&quot;

&lt;/pre&gt;


Ce qui donne (ce 16 mars 2012):

 $ cat liste_firmware 
&lt;collapsetext&gt;
'''Cliquez sur la flèche ci-dessus pour dérouler.'''
&lt;code&gt;
* 3Com Typhoon firmware, version 03.001.008 (3com/typhoon.bin)
* AdvanSys ASC-3550 firmware (advansys/3550.bin)
* AdvanSys ASC-38C0800 firmware (advansys/38C0800.bin)
* AdvanSys ASC-38C1600 firmware (advansys/38C1600.bin)
* AdvanSys SCSI controller microcode (advansys/mcode.bin)
* Agere/Prism/Symbol Orinoco firmware (AP mode), version 9.48 Hermes I (agere_ap_fw.bin)
* Agere/Prism/Symbol Orinoco firmware (STA mode), version 9.48 Hermes I (agere_sta_fw.bin)
* Atheros AR3011 firmware (ath3k-1.fw)
* Atheros AR5007UG (alternatively known as AR2524/AR5524)
* Atheros AR7010/AR7015/AR9018 (type 1) firmware (ar7010.fw)
* Atheros AR7010/AR7015/AR9018 (type 2) firmware (ar7010_1_1.fw)
* Atheros AR9170 firmware (ar9170.fw)
* Atheros AR9271 firmware (ar9271.fw)
* bnx2/bnx2-rv2p-06-6.0.15.fw
* Broadcom 802.11 firmware header, version 610.809.0 (brcm/bcm43xx_hdr-0.fw)
* Broadcom 802.11 firmware, version 610.809.0 (brcm/bcm43xx-0.fw)
* Broadcom BCM5701A0 firmware (tigon/tg3.bin)
* Broadcom BCM5703/BCM5704 TSO firmware (tigon/tg3_tso.bin)
* Broadcom BCM5705 TSO firmware (tigon/tg3_tso5.bin)
* Broadcom NetXtreme II 10Gb 57710, version 4.8.53.0 (bnx2x-e1-4.8.53.0.fw)
* Broadcom NetXtreme II 10Gb 57710, version 5.0.21.0 (bnx2x-e1-5.0.21.0.fw)
* Broadcom NetXtreme II 10Gb 57710, version 6.0.34.0 (bnx2x/bnx2x-e1-6.0.34.0.fw)
* Broadcom NetXtreme II 10Gb 57711, version 4.8.53.0 (bnx2x-e1h-4.8.53.0.fw)
* Broadcom NetXtreme II 10Gb 57711, version 5.0.21.0 (bnx2x-e1h-5.0.21.0.fw)
* Broadcom NetXtreme II 10Gb 57711, version 6.0.34.0 (bnx2x/bnx2x-e1h-6.0.34.0.fw)
* Broadcom NetXtreme II 10Gb 57712, version 6.0.34.0 (bnx2x/bnx2x-e2-6.0.34.0.fw)
* Broadcom NetXtremeII 5706/5708 firmware (mips), version Linux 2.6.32 (bnx2/bnx2-mips-06-5.0.0.j3.fw)
* Broadcom NetXtremeII 5706/5708 firmware (mips), version Linux 2.6.37 (bnx2/bnx2-mips-06-6.0.15.fw)
* Broadcom NetXtremeII 5706/5708 firmware (rv2p), version Linux 2.6.32 (bnx2/bnx2-rv2p-06-5.0.0.j3.fw)
* Broadcom NetXtremeII 5706/5708 firmware, version Linux 2.6.25 (bnx2-06-4.0.5.fw)
* Broadcom NetXtremeII 5709/5716 firmware (mips), version Linux 2.6.32 (bnx2/bnx2-mips-09-5.0.0.j3.fw)
* Broadcom NetXtremeII 5709/5716 firmware (mips), version Linux 2.6.37 (bnx2/bnx2-mips-09-6.0.17.fw)
* Broadcom NetXtremeII 5709/5716 firmware (rv2p), version Linux 2.6.32 (bnx2/bnx2-rv2p-09-5.0.0.j3.fw)
* Broadcom NetXtremeII 5709/5716 firmware (rv2p), version Linux 2.6.37 (bnx2/bnx2-rv2p-09-6.0.17.fw)
* Broadcom NetXtremeII 5709 A0/A1 firmware (rv2p), version Linux 2.6.32 (bnx2/bnx2-rv2p-09ax-5.0.0.j3.fw)
* Broadcom NetXtremeII 5709 A0/A1 firmware (rv2p), version Linux 2.6.37 (bnx2/bnx2-rv2p-09ax-6.0.17.fw)
* Broadcom NetXtremeII 5709 firmware, version Linux 2.6.25 (bnx2-09-4.0.5.fw)
* Chelsio T3B protocol engine firmware, version 1.1.0 (cxgb3/t3b_psram-1.1.0.bin)
* Chelsio T3C protocol engine firmware, version 1.1.0 (cxgb3/t3c_psram-1.1.0.bin)
* Chelsio T3 main firmware, version 7.4.0 (cxgb3/t3fw-7.4.0.bin)
* Chelsio T3 optical EDC firmware (AEL2005 PHY) (cxgb3/ael2005_opt_edc.bin)
* Chelsio T3 twinax EDC firmware (AEL2005 PHY) (cxgb3/ael2005_twx_edc.bin)
* Chelsio T3 twinax EDC firmware (AEL2020 PHY) (cxgb3/ael2020_twx_edc.bin)
* Conexant CX23415/CX23416 MPEG codec (decoder) (v4l-cx2341x-dec.fw)
* Conexant CX23415/CX23416 MPEG codec (encoder) (v4l-cx2341x-enc.fw)
* Conexant CX23415/CX23416 MPEG codec (initialization) (v4l-cx2341x-init.mpg)
* Conexant CX25840 MPEG codec (v4l-cx25840.fw)
* DAB-USB firmware (dabusb/firmware.fw)
* DAB-USB FPGA bitfile (dabusb/bitstream.bin)
* DiBcom dib0700 USB DVB bridge firmware, version 1.20 (dvb-usb-dib0700-1.20.fw)
* Hauppauge PVR USB2 24xxx models (v4l-pvrusb2-24xxx-01.fw)
* Hauppauge PVR USB2 29xxx models (v4l-pvrusb2-29xxx-01.fw)
* Intel 82551-F and 82551-10 microcode (e100/d102e_ucode.bin)
* Intel 82559 D101M microcode (e100/d101m_ucode.bin)
* Intel 82559 D101S microcode (e100/d101s_ucode.bin)
* Intel Pro Wireless 2100 firmware (bootstrap), version 1.3 (ipw2100-1.3.fw)
* Intel Pro Wireless 2100 firmware (ibss mode), version 1.3 (ipw2100-1.3-i.fw)
* Intel Pro Wireless 2100 firmware (monitor mode), version 1.3 (ipw2100-1.3-p.fw)
* Intel Pro Wireless 2200/2915 firmware (bss), version 3.1 (ipw2200-bss.fw)
* Intel Pro Wireless 2200/2915 firmware (ibss), version 3.1 (ipw2200-ibss.fw)
* Intel Pro Wireless 2200/2915 firmware (snf), version 3.1 (ipw2200-sniffer.fw)
* Intel WiMAX Connection 2400 USB firmware, version 1.4 (i2400m-fw-usb-1.4.sbcf)
* Intel WiMAX Connection 2400 USB firmware, version 1.5 (i2400m-fw-usb-1.5.sbcf)
* Intel WiMAX/WiFi Link 6050 USB firmware, version 1.5 (i6050-fw-usb-1.5.sbcf)
* Intel Wireless 1000 firmware, version 128.50.3.1 (iwlwifi-1000-3.ucode)
* Intel Wireless 3945 firmware, version 15.28.1.6 (iwlwifi-3945-1.ucode)
* Intel Wireless 3945 firmware, version 15.32.2.9 (iwlwifi-3945-2.ucode)
* Intel Wireless 4965 firmware, version 228.57.1.21 (iwlwifi-4965-1.ucode)
* Intel Wireless 4965 firmware, version 228.61.2.24 (iwlwifi-4965-2.ucode)
* Intel Wireless 5100, 5300 and 5350 firmware, version 5.4.A.11 (iwlwifi-5000-1.ucode)
* Intel Wireless 5100, 5300 and 5350 firmware, version 8.24.2.12 (iwlwifi-5000-2.ucode)
* Intel Wireless 5150 firmware, version 8.24.2.2 (iwlwifi-5150-2.ucode)
* Intel Wireless 6000 firmware, version 9.193.4.1 (iwlwifi-6000-4.ucode)
* Intel Wireless 6005 firmware, version 17.168.5.1 (iwlwifi-6000g2a-5.ucode)
* Intel Wireless 6030 firmware, version 17.168.5.1 (iwlwifi-6000g2b-5.ucode)
* Intel Wireless 6250 firmware, version 41.28.5.1 (iwlwifi-6050-5.ucode)
* Intel Wireless 6250 firmware, version 9.201.4.1 (iwlwifi-6050-4.ucode)
* kaweth/new_code.bin
* kaweth/new_code_fix.bin
* kaweth/trigger_code.bin
* kaweth/trigger_code_fix.bin
* Matrox G200 WARP engine microcode (matrox/g200_warp.fw)
* Matrox G400/G550 WARP engine microcode (matrox/g400_warp.fw)
* Multi-Tech USB CDMA modem firmware (mts_cdma.fw)
* Multi-Tech USB EDGE modem firmware (mts_edge.fw)
* Multi-Tech USB GPRS modem firmware (mts_gsm.fw)
* NPE-B
* NPE-C
* phanfw.bin
* QLogic IBA7220 serdes firmware (qlogic/sd7220.fw)
* QLogic ISP2322, SP212 firmware, version 3.03.27 (ql2322_fw.bin)
* QLogic ISP2422, ISP2432[M], SP222, SP232 firmware, version 4.04.05 (ql2400_fw.bin)
* QLogic ISP2532 firmware, version 4.04.05 (ql2500_fw.bin)
* QLogic QLA10160, 12160 firmware, version 10.04.42 (qlogic/12160.bin)
* QLogic QLA1040 firmware, version 7.65.06 (qlogic/1040.bin)
* QLogic QLA1080, 1240, 1280 firmware, version 8.15.11 (qlogic/1280.bin)
* QLogic QLA2100 firmware, version 1.19.38 (ql2100_fw.bin)
* QLogic QLA2200 firmware, version 2.02.08 (ql2200_fw.bin)
* QLogic QLA2300, ISP2312, SP202 firmware, version 3.03.27 (ql2300_fw.bin)
* Radeon HD 5400-family ME microcode (radeon/CEDAR_me.bin)
* Radeon HD 5400-family PFP microcode (radeon/CEDAR_pfp.bin)
* Radeon HD 5400-family RLC microcode (radeon/CEDAR_rlc.bin)
* Radeon HD 5500/5600-family ME microcode (radeon/REDWOOD_me.bin)
* Radeon HD 5500/5600-family PFP microcode (radeon/REDWOOD_pfp.bin)
* Radeon HD 5500/5600-family RLC microcode (radeon/REDWOOD_rlc.bin)
* Radeon HD 5700-family ME microcode (radeon/JUNIPER_me.bin)
* Radeon HD 5700-family PFP microcode (radeon/JUNIPER_pfp.bin)
* Radeon HD 5700-family RLC microcode (radeon/JUNIPER_rlc.bin)
* Radeon HD 5800/5900-family ME microcode (radeon/CYPRESS_me.bin)
* Radeon HD 5800/5900-family PFP microcode (radeon/CYPRESS_pfp.bin)
* Radeon HD 5800/5900-family RLC microcode (radeon/CYPRESS_rlc.bin)
* Radeon R100-family CP microcode (radeon/R100_cp.bin)
* Radeon R200-family CP microcode (radeon/R200_cp.bin)
* Radeon R300-family CP microcode (radeon/R300_cp.bin)
* Radeon R400-family CP microcode (radeon/R420_cp.bin)
* Radeon R500-family CP microcode (radeon/R520_cp.bin)
* Radeon R600-family RLC microcode (radeon/R600_rlc.bin)
* Radeon R600 ME microcode (radeon/R600_me.bin)
* Radeon R600 PFP microcode (radeon/R600_pfp.bin)
* Radeon R700-family RLC microcode (radeon/R700_rlc.bin)
* Radeon RS600 CP microcode (radeon/RS600_cp.bin)
* Radeon RS690 CP microcode (radeon/RS690_cp.bin)
* Radeon RS780 ME microcode (radeon/RS780_me.bin)
* Radeon RS780 PFP microcode (radeon/RS780_pfp.bin)
* Radeon RV610 ME microcode (radeon/RV610_me.bin)
* Radeon RV610 PFP microcode (radeon/RV610_pfp.bin)
* Radeon RV620 ME microcode (radeon/RV620_me.bin)
* Radeon RV620 PFP microcode (radeon/RV620_pfp.bin)
* Radeon RV630 ME microcode (radeon/RV630_me.bin)
* Radeon RV630 PFP microcode (radeon/RV630_pfp.bin)
* Radeon RV635 ME microcode (radeon/RV635_me.bin)
* Radeon RV635 PFP microcode (radeon/RV635_pfp.bin)
* Radeon RV670 ME microcode (radeon/RV670_me.bin)
* Radeon RV670 PFP microcode (radeon/RV670_pfp.bin)
* Radeon RV710 ME microcode (radeon/RV710_me.bin)
* Radeon RV710 PFP microcode (radeon/RV710_pfp.bin)
* Radeon RV730 ME microcode (radeon/RV730_me.bin)
* Radeon RV730 PFP microcode (radeon/RV730_pfp.bin)
* Radeon RV770 ME microcode (radeon/RV770_me.bin)
* Radeon RV770 PFP microcode (radeon/RV770_pfp.bin)
* Rage 128 CCE microcode (r128/r128_cce.bin)
* Ralink RT2561 (RT2501/RT5201 chipset) firmware, version 1.2 (rt2561.bin)
* Ralink RT2561S (RT2501 Turbo/RT5201 Turbo chipset) firmware, version 1.2 (rt2561s.bin)
* Ralink RT2571W/RT2671 (RT2501USB/RT5201USB chipset) firmware, version 1.8 (rt73.bin)
* Ralink RT2661 (RT2600/RT5600 chipset) firmware, version 1.2 (rt2661.bin)
* Ralink RT2760/RT2790/RT2860/RT2890 (RT2700P[D]/RT2700E[D]/RT2800P[D]/RT2800E[D] chipset) firmware, version 11 (rt2860.bin)
* Ralink RT2870 (RT2800U[D] chipset) firmware, version 12 (rt2870.bin)
* Ralink RT3070 firmware, version 17 (rt3070.bin)
* Ralink RT3071/RT3072 firmware, version 17 (rt3071.bin)
* Ralink RT3090 (RT3000E[D] chipset) firmware, version 19 (rt3090.bin)
* Realtek RTL8105E-1 firmware (rtl_nic/rtl8105e-1.fw)
* Realtek RTL8111D-1/RTL8168D-1 firmware (rtl_nic/rtl8168d-1.fw)
* Realtek RTL8111D-2/RTL8168D-2 firmware (rtl_nic/rtl8168d-2.fw)
* Realtek RTL8168E-1 firmware (rtl_nic/rtl8168e-1.fw)
* Realtek RTL8168E-2 firmware (rtl_nic/rtl8168e-2.fw)
* Realtek RTL8168E-3 firmware (rtl_nic/rtl8168e-3.fw)
* Realtek RTL8192E boot code (RTL8192E/boot.img)
* Realtek RTL8192E init data (RTL8192E/data.img)
* Realtek RTL8192E main code (RTL8192E/main.img)
* Realtek RTL8192SU firmware, version 902B (RTL8192SU/rtl8192sfw.bin)
* Realtek RTL8192SU/RTL8712U firmware (rtlwifi/rtl8712u.bin)
* Tehuti network card firmware (tehuti/bdx.bin)
* VIA VT6656 firmware (vntwusb.fw)
* Xceive 5000 tuner firmware, version 1.6.114 (dvb-fe-xc5000-1.6.114.fw)
* ZyDAS ZD1211
* ZyDAS ZD1211B
&lt;/code&gt;
&lt;/collapsetext&gt;

[http://www.debian-fr.org/iso-avec-firmwares-non-libres-inclus-t30631.html source forum]

== Images compilées par Kenshi Muto pour firmwares non reconnus ==

Images Debian GNU/Linux stables de l'installateur ISO avec des modifications par Kenshi Muto qui prennent en charge des matériels récents.

[http://kmuto.jp/debian/d-i/ Backported d-i images archive]


[[Category:Matériel et Drivers Divers]]</text>
      <sha1>d39ptgc68hb892idpm7asvot9dkanda</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Imprimantes LBPXXXX</title>
    <ns>0</ns>
    <id>1192</id>
    <revision>
      <id>4874</id>
      <timestamp>2013-01-05T14:27:26Z</timestamp>
      <contributor>
        <username>Clisam</username>
        <id>251</id>
      </contributor>
      <comment>Page créée avec « Voici la démarche pour installer une imprimante LBPXXXX sous debian &quot;WHEEZY&quot; (64 bits).  == Installation du Driver ==  Télécharger le driver: &lt;br /&gt; [http://software.ca... »</comment>
      <text xml:space="preserve" bytes="4311">Voici la démarche pour installer une imprimante LBPXXXX sous debian &quot;WHEEZY&quot; (64 bits).

== Installation du Driver ==

Télécharger le driver: &lt;br /&gt;
[http://software.canon-europe.com/softwa ... asp?model=]&lt;br /&gt;

Installer le paquet ia32-libs. Il fournit les bibliothèques 32bits pour les systèmes 64bits, indispensables au fonctionnement des drivers Canon.
&lt;Code&gt; aptitude install ia32-libs &lt;/code&gt;

Les paquets fournis sont des RPM. Il faut donc installer le paquet &quot;alien&quot; pour convertir ces paquets .rpm en paquets .deb:
&lt;code&gt; aptitude install alien &lt;/code&gt;

Se déplacer dans le dossier ou se situent les paquets .rpm (dans mon cas: ~/Téléchargements/CAPT_Printer_Driver_for_Linux_V220_uk_EN/64-bit_Driver/RPM)
&lt;code&gt; cd ~/Téléchargements/CAPT_Printer_Driver_for_Linux_V220_uk_EN/64-bit_Driver/RPM &lt;/code&gt;

On transforme les paquets .rpm en .deb:
&lt;code&gt; alien cndrvcups-common-2.20-1.x86_64.rpm cndrvcups-capt-2.20-1.x86_64.rpm --scripts &lt;/code&gt;

Installer les paquets .deb:
&lt;code&gt; dpkg -i cndrvcups-common-2.20-1.x86_64.deb cndrvcups-capt-2.20-1.x86_64.deb &lt;/code&gt;


== installation de l'imprimante ==

Repérer ensuite le fichier .ppd adapté à son imprimante:
&lt;code&gt; ls /usr/share/cups/model/ | grep CNCUPS &lt;/code&gt;

Installer l'imprimante:
&lt;code&gt; /usr/sbin/lpadmin -p [nom de l'imprimante]  -m [fichier ppd] -v [uri périphérique] -E &lt;/code&gt;
où:
* [nom de l'imprimante] correspond au nom que l'on souhaite donner à l'imprimante (ex: LPB1120)
* [fichier ppd] correspond au fichier .ppd précédemment défini.
* [uri périphérique]: définit l'attribut device-uri de la file d'attente de l'imprimante.Ici on mettra : ccp://localhost:59787 -E
* E : active l'imprimante déterminée et autorise les demandes d'impression sur ce périphérique.
ce qui donne pour un LBP 1120:
&lt;code&gt; /usr/sbin/lpadmin -p LBP1120 -m CNCUPSLBP1120CAPTK.ppd -v ccp://localhost:59787 -E &lt;/code&gt;

La commande suivante permettra d'installer l'imprimante dans le démon ccpd :
&lt;code&gt; /usr/sbin/ccpdadmin -p [nom de l'imprimante] -o [device] &lt;/code&gt;
où:
* [nom de l'imprimante] correspond au nom que l'on souhaite donner à l'imprimante (ex: LPB1120)
* [device] est l'emplacement du fichier du périphérique
ce qui donne pour un LBP 1120:
&lt;code&gt;/usr/sbin/ccpdadmin -p LBP1120 -o /dev/usb/lp0&lt;/code&gt;


== Vérification du bon fonctionnment ==

Démarrer ccpd et vérifier le bon fonctionnement:
&lt;code&gt; service ccpd start &lt;/code&gt;
&lt;code&gt; service ccpd status &lt;/code&gt;

Ce qui donne quelque chose comme:
&lt;code&gt;/usr/sbin/ccpd: 2902 2862&lt;/code&gt;

On vérifie le bon fonctionnement avec deux commandes:
* ccpdadmin -o [nom_imprimante] (ccpdadmin -o LBP1120, dans mon cas) donne:
&lt;code&gt;
 Entry Num  : Spooler   : Backend   : FIFO path      : Device Path    : Status
 ----------------------------------------------------------------------------
     [0]    : LBP1120    : ccp       : //localhost:59787    : /dev/usb/lp0    :&lt;/code&gt;

* captstatusui -P [nom_imprimante] doit ouvrir fenêtre avec un message Ready to print.

== Dernière étape ==

Une fois correctement installée, pour que l'imprimante fonctionne d'une façon transparente pour l'utilisateur, il faut automatiser la gestion du démon ccpd ce qui demande deux conditions : &lt;br /&gt;
* Que ccpd soit lancé ou relancé à chaque mise en service de l'imprimante.
* Que ccpd soit lancé après CUPS, pour qu’il démarre correctement.
Pour cela:
ajouter les commentaires suivants à partir de la troisième ligne du fichier
/etc/init.d/ccpd:
&lt;code&gt;
### BEGIN INIT INFO
# Provides: ccpd
# Required-Start: $local_fs $remote_fs $syslog $network $named
# Should-Start: $ALL
# Required-Stop: $syslog $remote_fs
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Description: Start Canon Printer Daemon for CUPS
### END INIT INFO &lt;/code&gt;

et exécuter ensuite la commande:
&lt;code&gt; update-rc.d ccpd defaults 90 &lt;/code&gt;


== Dysfonctionnement constaté==

L'impression depuis un navigateur internet ne fonctionne pas. Une solution consiste à imprimer dans un fichier pdf que je peux ensuite imprimer...


== Sources ==

[[http://doc.ubuntu-fr.org/tutoriel/insta ... _canon_lbp]]: ubuntu-fr &lt;br /&gt;
[[ftp://92.255.253.12/media/!!!%20hdd2/!% ... -2.2xE.txt]]: documentation]] &lt;br /&gt;
[[https://www.debian-fr.org/installation-imprimantes-canon-lasershot-t16825.html]]: forum debian-fr</text>
      <sha1>gzrp51cbnvjr58yd451krzjzu8rbc1f</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Init</title>
    <ns>0</ns>
    <id>852</id>
    <revision>
      <id>3478</id>
      <timestamp>2011-09-17T18:56:27Z</timestamp>
      <contributor>
        <username>Kna</username>
        <id>35</id>
      </contributor>
      <comment>Page créée avec « Le programme ''/sbin/init'' est le premier lancé au démarrage (après le noyau et l'initrd). C'est lui qui va gérer le démarrage du système. Il est lancé par l'utilisat... »</comment>
      <text xml:space="preserve" bytes="1501">Le programme ''/sbin/init'' est le premier lancé au démarrage (après le noyau et l'initrd). C'est lui qui va gérer le démarrage du système. Il est lancé par l'utilisateur root.

= Runlevels =

L'init debian est basé sur System V, qui utilise plusieurs de fonctionnements (runlevels). Ils sont numérotés de 0 à 6. Leur signification varie en fonction de la distribution. Sous debian, ils sont répartis par défaut comme tels :

* 0 : arrêt
* 1 : Mode maintenance « single-user »
* 2 à 5 : système multi-user
* 6 : Redémarrage

On peut passer d'un runlevel à l'autre avec la commande '''telinit'''. Par exemple :
 # telinit 0
arrête la machine

= Le fichier /etc/inittab =

Il contient les informations qui vont être lues au démarrage du système.
Chaque entrée dans ce fichier est sous la forme : id:runlevels:action:process

* id : un code unique généralement de deux caractères
* runlevels: la liste des runlevels ou l'action sera exécutée
* process : le chemin vers le programme ou script qui sera exécuté.
* action : plusieurs actions sont possibles, notamment :
** initdefault : indique le runlevel par défaut. On peut passer outre cette directive en ajoutant le paramètre ''init=&lt;runlevel&gt;'' au noyau (par exemple ''init=3'' pour démarrer au runlevel 3).
** once: lance le process une seule fois
** wait : exécute le process et attend la fin de son exécution
** respawn : exécute le process sans cesse (on le relance dès qu'il

= Scripts de démarrage =

TODO</text>
      <sha1>lnhumqduznrpv8yaojnim0f9uge0h4r</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3479</id>
      <parentid>3478</parentid>
      <timestamp>2011-09-17T20:46:05Z</timestamp>
      <contributor>
        <username>Kna</username>
        <id>35</id>
      </contributor>
      <text xml:space="preserve" bytes="4485">Le programme '''/sbin/init''' est le premier lancé au démarrage (après le noyau et l'initrd). C'est lui qui va gérer le démarrage du système. Il est lancé par l'utilisateur root.

= Runlevels =

L'init debian est basé sur System V, qui utilise plusieurs de fonctionnements (runlevels). Ils sont numérotés de 0 à 6. Leur signification varie en fonction de la distribution. Sous debian, ils sont répartis par défaut comme tels :

* 0 : arrêt
* 1 : Mode maintenance « single-user »
* 2 à 5 : système multi-user
* 6 : Redémarrage

On peut passer d'un runlevel à l'autre avec la commande '''telinit'''. Par exemple :
 # telinit 0
arrête la machine

= Le fichier /etc/inittab =

Il contient les informations qui vont être lues au démarrage du système.
Chaque entrée dans ce fichier est sous la forme : id:runlevels:action:process

* id : un code unique généralement de deux caractères
* runlevels: la liste des runlevels ou l'action sera exécutée
* process : le chemin vers le programme ou script qui sera exécuté.
* action : plusieurs actions sont possibles, notamment :
** initdefault : indique le runlevel par défaut. On peut passer outre cette directive en ajoutant le paramètre ''init=&lt;runlevel&gt;'' au noyau (par exemple ''init=3'' pour démarrer au runlevel 3).
** once: lance le process une seule fois
** wait : exécute le process et attend la fin de son exécution
** respawn : exécute le process sans cesse (on le relance dès qu'il s'est terminé)

= Scripts de démarrage =

== Syntaxe ==

Les scripts de démarrage des services sont dans le dossier /etc/init.d/

Ils sont construits de la façon suivante :
* ''/etc/init.d/nom_du_service start'' : lance le service
* ''/etc/init.d/nom_du_service stop'' : stoppe le service
* ''/etc/init.d/nom_du_service reload'' : relance le service (prend en compte la nouvelle configuration)
* ''/etc/init.d/nom_du_service restart'' : relance complètement le service (équivaut à stop, puis start)
* ''/etc/init.d/nom_du_service status'' : affiche le status (facultatif)

Pour être utilisables, un script doit avoir le droit d'éxécution et doit avoir au début des commentaires sous la forme :

 ### BEGIN INIT INFO
 # Provides:          nom_du_service
 # Required-Start:    dépendance1 dépendance2
 # Required-Stop:     dépendance1 dépendance2
 # Default-Start:     2 3 4 5
 # Default-Stop:      0 1 6
 # Short-Description: Une courte description
 # Description:       Une description plus détaillée du service
 ### END INIT INFO

Pour plus d'infos, voir la section sur les tags LSB dans le wiki debian.org : http://wiki.debian.org/LSBInitScripts?highlight=%28BEGIN%29%7C%28INIT%29%7C%28INFO%29

== Activation ==

Cette commande permet de créer les liens symboliques dans les dossiers /etc/rcX.d, ou X représente le runlevel. Ces liens sont nommés par une lettre (S ou K), suivi d'un numéro et du nom du service.

Les lettres S (start) et K (kill) servent à déterminer si le service doit être démarré ou éteint (on verra donc essentiellement des liens « K » dans /etc/rc0.d et /etc/rc6.d)
Les numéros servent à donner une priorité (les scripts ayant le numéro le plus élevés sont exécutés en dernier).

Les liens dans /etc/rcS.d sont éxecutés à chaque démarrage, pour tous les runlevels.

On peut gérer ses liens avec la commande '''update-rc.d'''.
La commande '''sysv-rc-conf''' (apt-get install sysv-rc-conf) permet de faire la même chose dans une interfaces curses.

'''Attention''' : Si vous modifiez des liens installés par debian, il peuvent réapparaitre lors de la mise à jour du paquet concerné.
La plupart des scripts init installés par debian « sourcent » un fichier ''/etc/default/nom_du_service''. Ce fichier contient généralement une variable permettant de ne pas démarrer le service, même si le script est lancé, ce qui permet de désactiver le démarrage d'un service au boot de façon pérenne.

= Petits ajustements au démarrage =

Lorsqu'on veut simplement lancer une commande ou un petit script à chaque démarrage, il n'est pas nécessaire d'écrire un script init complet. Le fichier '''/etc/rc.local''' est exécuté à chaque boot, pour tous les runlevels, après les scripts init.

Attention, comme les scripts init, ils doit rendre la main après son exécution.

= Ressources =

* Pages de manuel : init(8), inittab(5), update-rc.d(8), sysv-rc-conf(8), insserv(8)
* Le fichier /etc/init.d/skeleton montre un exemple de script init</text>
      <sha1>cecbsbe03bhjzkspjrqo7pl7gqv3v0c</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3480</id>
      <parentid>3479</parentid>
      <timestamp>2011-09-18T10:02:50Z</timestamp>
      <contributor>
        <username>Kna</username>
        <id>35</id>
      </contributor>
      <comment>/* Runlevels */</comment>
      <text xml:space="preserve" bytes="4541">Le programme '''/sbin/init''' est le premier lancé au démarrage (après le noyau et l'initrd). C'est lui qui va gérer le démarrage du système. Il est lancé par l'utilisateur root.

= Runlevels =

L'init debian est basé sur System V, qui utilise plusieurs de fonctionnements (runlevels). Ils sont numérotés de 0 à 6. Leur signification varie en fonction de la distribution. Sous debian, ils sont répartis par défaut comme tels :

* 0 : arrêt
* 1 : Mode maintenance « single-user »
* 2 à 5 : système multi-user
* 6 : Redémarrage

La commande '''runlevel''' indique le runlevel courant. On peut passer d'un runlevel à l'autre avec la commande '''telinit'''. Par exemple :
 # telinit 0
arrête la machine

= Le fichier /etc/inittab =

Il contient les informations qui vont être lues au démarrage du système.
Chaque entrée dans ce fichier est sous la forme : id:runlevels:action:process

* id : un code unique généralement de deux caractères
* runlevels: la liste des runlevels ou l'action sera exécutée
* process : le chemin vers le programme ou script qui sera exécuté.
* action : plusieurs actions sont possibles, notamment :
** initdefault : indique le runlevel par défaut. On peut passer outre cette directive en ajoutant le paramètre ''init=&lt;runlevel&gt;'' au noyau (par exemple ''init=3'' pour démarrer au runlevel 3).
** once: lance le process une seule fois
** wait : exécute le process et attend la fin de son exécution
** respawn : exécute le process sans cesse (on le relance dès qu'il s'est terminé)

= Scripts de démarrage =

== Syntaxe ==

Les scripts de démarrage des services sont dans le dossier /etc/init.d/

Ils sont construits de la façon suivante :
* ''/etc/init.d/nom_du_service start'' : lance le service
* ''/etc/init.d/nom_du_service stop'' : stoppe le service
* ''/etc/init.d/nom_du_service reload'' : relance le service (prend en compte la nouvelle configuration)
* ''/etc/init.d/nom_du_service restart'' : relance complètement le service (équivaut à stop, puis start)
* ''/etc/init.d/nom_du_service status'' : affiche le status (facultatif)

Pour être utilisables, un script doit avoir le droit d'éxécution et doit avoir au début des commentaires sous la forme :

 ### BEGIN INIT INFO
 # Provides:          nom_du_service
 # Required-Start:    dépendance1 dépendance2
 # Required-Stop:     dépendance1 dépendance2
 # Default-Start:     2 3 4 5
 # Default-Stop:      0 1 6
 # Short-Description: Une courte description
 # Description:       Une description plus détaillée du service
 ### END INIT INFO

Pour plus d'infos, voir la section sur les tags LSB dans le wiki debian.org : http://wiki.debian.org/LSBInitScripts?highlight=%28BEGIN%29%7C%28INIT%29%7C%28INFO%29

== Activation ==

Cette commande permet de créer les liens symboliques dans les dossiers /etc/rcX.d, ou X représente le runlevel. Ces liens sont nommés par une lettre (S ou K), suivi d'un numéro et du nom du service.

Les lettres S (start) et K (kill) servent à déterminer si le service doit être démarré ou éteint (on verra donc essentiellement des liens « K » dans /etc/rc0.d et /etc/rc6.d)
Les numéros servent à donner une priorité (les scripts ayant le numéro le plus élevés sont exécutés en dernier).

Les liens dans /etc/rcS.d sont éxecutés à chaque démarrage, pour tous les runlevels.

On peut gérer ses liens avec la commande '''update-rc.d'''.
La commande '''sysv-rc-conf''' (apt-get install sysv-rc-conf) permet de faire la même chose dans une interfaces curses.

'''Attention''' : Si vous modifiez des liens installés par debian, il peuvent réapparaitre lors de la mise à jour du paquet concerné.
La plupart des scripts init installés par debian « sourcent » un fichier ''/etc/default/nom_du_service''. Ce fichier contient généralement une variable permettant de ne pas démarrer le service, même si le script est lancé, ce qui permet de désactiver le démarrage d'un service au boot de façon pérenne.

= Petits ajustements au démarrage =

Lorsqu'on veut simplement lancer une commande ou un petit script à chaque démarrage, il n'est pas nécessaire d'écrire un script init complet. Le fichier '''/etc/rc.local''' est exécuté à chaque boot, pour tous les runlevels, après les scripts init.

Attention, comme les scripts init, ils doit rendre la main après son exécution.

= Ressources =

* Pages de manuel : init(8), inittab(5), update-rc.d(8), sysv-rc-conf(8), insserv(8)
* Le fichier /etc/init.d/skeleton montre un exemple de script init</text>
      <sha1>gxw82m65r8s71mn9uudk1dnyyaxhjvn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5748</id>
      <parentid>3480</parentid>
      <timestamp>2014-08-20T04:55:49Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Syntaxe */ chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="4545">Le programme '''/sbin/init''' est le premier lancé au démarrage (après le noyau et l'initrd). C'est lui qui va gérer le démarrage du système. Il est lancé par l'utilisateur root.

= Runlevels =

L'init debian est basé sur System V, qui utilise plusieurs de fonctionnements (runlevels). Ils sont numérotés de 0 à 6. Leur signification varie en fonction de la distribution. Sous debian, ils sont répartis par défaut comme tels :

* 0 : arrêt
* 1 : Mode maintenance « single-user »
* 2 à 5 : système multi-user
* 6 : Redémarrage

La commande '''runlevel''' indique le runlevel courant. On peut passer d'un runlevel à l'autre avec la commande '''telinit'''. Par exemple :
 # telinit 0
arrête la machine

= Le fichier /etc/inittab =

Il contient les informations qui vont être lues au démarrage du système.
Chaque entrée dans ce fichier est sous la forme : id:runlevels:action:process

* id : un code unique généralement de deux caractères
* runlevels: la liste des runlevels ou l'action sera exécutée
* process : le chemin vers le programme ou script qui sera exécuté.
* action : plusieurs actions sont possibles, notamment :
** initdefault : indique le runlevel par défaut. On peut passer outre cette directive en ajoutant le paramètre ''init=&lt;runlevel&gt;'' au noyau (par exemple ''init=3'' pour démarrer au runlevel 3).
** once: lance le process une seule fois
** wait : exécute le process et attend la fin de son exécution
** respawn : exécute le process sans cesse (on le relance dès qu'il s'est terminé)

= Scripts de démarrage =

== Syntaxe ==

Les scripts de démarrage des services sont dans le répertoire /etc/init.d/

Ils sont construits de la façon suivante :
* ''/etc/init.d/nom_du_service start'' : lance le service
* ''/etc/init.d/nom_du_service stop'' : stoppe le service
* ''/etc/init.d/nom_du_service reload'' : relance le service (prend en compte la nouvelle configuration)
* ''/etc/init.d/nom_du_service restart'' : relance complètement le service (équivaut à stop, puis start)
* ''/etc/init.d/nom_du_service status'' : affiche le status (facultatif)

Pour être utilisables, un script doit avoir le droit d'éxécution et doit avoir au début des commentaires sous la forme :

 ### BEGIN INIT INFO
 # Provides:          nom_du_service
 # Required-Start:    dépendance1 dépendance2
 # Required-Stop:     dépendance1 dépendance2
 # Default-Start:     2 3 4 5
 # Default-Stop:      0 1 6
 # Short-Description: Une courte description
 # Description:       Une description plus détaillée du service
 ### END INIT INFO

Pour plus d'infos, voir la section sur les tags LSB dans le wiki debian.org : http://wiki.debian.org/LSBInitScripts?highlight=%28BEGIN%29%7C%28INIT%29%7C%28INFO%29

== Activation ==

Cette commande permet de créer les liens symboliques dans les dossiers /etc/rcX.d, ou X représente le runlevel. Ces liens sont nommés par une lettre (S ou K), suivi d'un numéro et du nom du service.

Les lettres S (start) et K (kill) servent à déterminer si le service doit être démarré ou éteint (on verra donc essentiellement des liens « K » dans /etc/rc0.d et /etc/rc6.d)
Les numéros servent à donner une priorité (les scripts ayant le numéro le plus élevés sont exécutés en dernier).

Les liens dans /etc/rcS.d sont éxecutés à chaque démarrage, pour tous les runlevels.

On peut gérer ses liens avec la commande '''update-rc.d'''.
La commande '''sysv-rc-conf''' (apt-get install sysv-rc-conf) permet de faire la même chose dans une interfaces curses.

'''Attention''' : Si vous modifiez des liens installés par debian, il peuvent réapparaitre lors de la mise à jour du paquet concerné.
La plupart des scripts init installés par debian « sourcent » un fichier ''/etc/default/nom_du_service''. Ce fichier contient généralement une variable permettant de ne pas démarrer le service, même si le script est lancé, ce qui permet de désactiver le démarrage d'un service au boot de façon pérenne.

= Petits ajustements au démarrage =

Lorsqu'on veut simplement lancer une commande ou un petit script à chaque démarrage, il n'est pas nécessaire d'écrire un script init complet. Le fichier '''/etc/rc.local''' est exécuté à chaque boot, pour tous les runlevels, après les scripts init.

Attention, comme les scripts init, ils doit rendre la main après son exécution.

= Ressources =

* Pages de manuel : init(8), inittab(5), update-rc.d(8), sysv-rc-conf(8), insserv(8)
* Le fichier /etc/init.d/skeleton montre un exemple de script init</text>
      <sha1>cv2zouj5zd693yfpe64nu653g4m9glr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5749</id>
      <parentid>5748</parentid>
      <timestamp>2014-08-20T04:56:29Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Activation */ chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="4549">Le programme '''/sbin/init''' est le premier lancé au démarrage (après le noyau et l'initrd). C'est lui qui va gérer le démarrage du système. Il est lancé par l'utilisateur root.

= Runlevels =

L'init debian est basé sur System V, qui utilise plusieurs de fonctionnements (runlevels). Ils sont numérotés de 0 à 6. Leur signification varie en fonction de la distribution. Sous debian, ils sont répartis par défaut comme tels :

* 0 : arrêt
* 1 : Mode maintenance « single-user »
* 2 à 5 : système multi-user
* 6 : Redémarrage

La commande '''runlevel''' indique le runlevel courant. On peut passer d'un runlevel à l'autre avec la commande '''telinit'''. Par exemple :
 # telinit 0
arrête la machine

= Le fichier /etc/inittab =

Il contient les informations qui vont être lues au démarrage du système.
Chaque entrée dans ce fichier est sous la forme : id:runlevels:action:process

* id : un code unique généralement de deux caractères
* runlevels: la liste des runlevels ou l'action sera exécutée
* process : le chemin vers le programme ou script qui sera exécuté.
* action : plusieurs actions sont possibles, notamment :
** initdefault : indique le runlevel par défaut. On peut passer outre cette directive en ajoutant le paramètre ''init=&lt;runlevel&gt;'' au noyau (par exemple ''init=3'' pour démarrer au runlevel 3).
** once: lance le process une seule fois
** wait : exécute le process et attend la fin de son exécution
** respawn : exécute le process sans cesse (on le relance dès qu'il s'est terminé)

= Scripts de démarrage =

== Syntaxe ==

Les scripts de démarrage des services sont dans le répertoire /etc/init.d/

Ils sont construits de la façon suivante :
* ''/etc/init.d/nom_du_service start'' : lance le service
* ''/etc/init.d/nom_du_service stop'' : stoppe le service
* ''/etc/init.d/nom_du_service reload'' : relance le service (prend en compte la nouvelle configuration)
* ''/etc/init.d/nom_du_service restart'' : relance complètement le service (équivaut à stop, puis start)
* ''/etc/init.d/nom_du_service status'' : affiche le status (facultatif)

Pour être utilisables, un script doit avoir le droit d'éxécution et doit avoir au début des commentaires sous la forme :

 ### BEGIN INIT INFO
 # Provides:          nom_du_service
 # Required-Start:    dépendance1 dépendance2
 # Required-Stop:     dépendance1 dépendance2
 # Default-Start:     2 3 4 5
 # Default-Stop:      0 1 6
 # Short-Description: Une courte description
 # Description:       Une description plus détaillée du service
 ### END INIT INFO

Pour plus d'infos, voir la section sur les tags LSB dans le wiki debian.org : http://wiki.debian.org/LSBInitScripts?highlight=%28BEGIN%29%7C%28INIT%29%7C%28INFO%29

== Activation ==

Cette commande permet de créer les liens symboliques dans les répertoires /etc/rcX.d, ou X représente le runlevel. Ces liens sont nommés par une lettre (S ou K), suivi d'un numéro et du nom du service.

Les lettres S (start) et K (kill) servent à déterminer si le service doit être démarré ou éteint (on verra donc essentiellement des liens « K » dans /etc/rc0.d et /etc/rc6.d)
Les numéros servent à donner une priorité (les scripts ayant le numéro le plus élevés sont exécutés en dernier).

Les liens dans /etc/rcS.d sont éxecutés à chaque démarrage, pour tous les runlevels.

On peut gérer ses liens avec la commande '''update-rc.d'''.
La commande '''sysv-rc-conf''' (apt-get install sysv-rc-conf) permet de faire la même chose dans une interfaces curses.

'''Attention''' : Si vous modifiez des liens installés par debian, il peuvent réapparaitre lors de la mise à jour du paquet concerné.
La plupart des scripts init installés par debian « sourcent » un fichier ''/etc/default/nom_du_service''. Ce fichier contient généralement une variable permettant de ne pas démarrer le service, même si le script est lancé, ce qui permet de désactiver le démarrage d'un service au boot de façon pérenne.

= Petits ajustements au démarrage =

Lorsqu'on veut simplement lancer une commande ou un petit script à chaque démarrage, il n'est pas nécessaire d'écrire un script init complet. Le fichier '''/etc/rc.local''' est exécuté à chaque boot, pour tous les runlevels, après les scripts init.

Attention, comme les scripts init, ils doit rendre la main après son exécution.

= Ressources =

* Pages de manuel : init(8), inittab(5), update-rc.d(8), sysv-rc-conf(8), insserv(8)
* Le fichier /etc/init.d/skeleton montre un exemple de script init</text>
      <sha1>7k43ujy73pzt7yse20efg4wjbtx0iyj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Installation</title>
    <ns>0</ns>
    <id>1110</id>
    <revision>
      <id>4580</id>
      <timestamp>2012-10-28T13:15:47Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « {{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}} {{Template: Social}} {| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot; | class=&quot;MainPageBG... »</comment>
      <text xml:space="preserve" bytes="4047">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
{| style=&quot;margin:4px 0px 0px 0px; width:100%; background:none&quot;
| class=&quot;MainPageBG&quot; style=&quot;width:100%; border:1px solid #C7D0F8; background:#F2F5FD; color:#000; -moz-border-radius:4px&quot; |
{| style=&quot;vertical-align:top; background:#F2F5FD; color:#000; width:100%; text-align:center; &quot;

&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:#b41d37; padding:0px; border:1px solid #b41d37; margin-bottom:5px; text-align: center;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:#b41d37; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;float:left;&quot;&gt;{{#icon: 301px-Orange Icon Wiki.svg.png|Forum|24|http://www.isalo.org/wiki.debian-fr/}}&lt;/span&gt;
&lt;span style=&quot;color:#ffffff; float:left; font-size:100%;&quot;&gt;''' Wiki'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; font-size:200%;&quot;&gt;'''wiki.debian-fr.org'''&lt;/span&gt;&lt;span style=&quot;color:#ffffff; float:right; font-size:100%;&quot;&gt;'''Forum '''&lt;/span&gt;&lt;span style=&quot;float:right;&quot;&gt;{{#icon: Forum-groupe-utilisateurs-icone-4597-128.png|Forum|24|http://www.debian-fr.org/}}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&quot;&gt;

[[Fichier:IPv6_ready.png|75px|left|thumb]]

'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://www.debian-fr.org forum debian-fr.org].

'''Bienvenue''' sur le wiki du [http://www.debian-fr.org forum debian-fr.org].&lt;br/&gt;

{{color|magenta|''' &gt;&gt;&gt; [http://thank-you.debian.net/#thanks Dites Merci à Debian!!!] &lt;&lt;&lt;'''}}

{{color|magenta|''' &gt;&gt;&gt; [[Publication_de_Debian_6.0_&quot;Squeeze&quot;|Publication de Debian 6.0 &quot;Squeeze&quot;]] &lt;&lt;&lt;'''}}

{{color|darkmagenta|'''Si ce Wiki vous a été utile ou si vous souhaitez que de nouveaux thèmes soient abordés, pensez au [[Spécial:Guestbook|Livre d'Or]]}}
|}
----

&lt;u&gt;'''Installation'''&lt;/u&gt;

•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]]&lt;br&gt;
•&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]]&lt;br&gt;
•&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]]&lt;br&gt;
•&amp;nbsp;[[Vérifier_le_md5_d'une_image_iso|Vérifier le md5 d'une image iso]]&lt;br&gt;
•&amp;nbsp;[[Remettre une machine à zéro]]&lt;br&gt;
•&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Etch_à_Lenny|Mise à niveau (upgrade) de Etch à Lenny]]&lt;br&gt;
•&amp;nbsp;[[Installer_Debian_pas-%C3%A0-pas|Installer Lenny pas-à-pas avec une &quot;businesscard&quot;]]&lt;br&gt;
•&amp;nbsp;[[Installer_depuis_une_clé_USB|Installer Debian depuis une clé USB]]&lt;br&gt;
•&amp;nbsp;[[Unetbootin|Unetbootin]]&lt;br&gt;
•&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Lenny_à_Squeeze|Mise à niveau (upgrade) de Lenny à Squeeze]]&lt;br&gt;
•&amp;nbsp;[[Le_partitionnement|Le partitionnement]]&lt;br&gt;
•&amp;nbsp;[[Installation_de_squeeze_avec_une_businesscard|Installation de squeeze avec une &quot;businesscard&quot;]]&lt;br&gt;
•&amp;nbsp;[[Debian_on_dreamplug|Installation de Debian sur un &quot;dreamplug&quot;]]&lt;br&gt;
•&amp;nbsp;[[Installation_squeeze_chroot_debootstrap|Installation de Squeeze avec debootstrap et chroot]]&lt;br&gt;
•&amp;nbsp;[[Clef_usb_d'installation|Clef USB d'installation]]&lt;br&gt;

:*Obsolète: •&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]]

----

{| width=&quot;100%&quot;
| width=&quot;33%&quot; | {{IconLink|Installation|Installation|Installation.png|}}
| width=&quot;33%&quot; | {{IconLink|Logiciels|Les logiciels|Logiciel.png|}}
| width=&quot;33%&quot; | {{IconLink|Reseau_et_Wifi|Réseau et Wifi|internet.png|}}
|-
| width=&quot;33%&quot; | {{IconLink|Noyau_(Kernel)|Le noyau|Linux.jpg|}}
| width=&quot;33%&quot; | {{IconLink|Les_Trucs_et_astuces|Les Trucs &amp; Astuces|T%26A.jpg|}}
| width=&quot;33%&quot; | {{IconLink|Materiel_et_Pilotes|Le matériel et les pilotes|Hardware2.png|}}
|-
| width=&quot;33%&quot; | {{IconLink|Commandes|Les commandes|Commandes.png|}}
| width=&quot;33%&quot; | {{IconLink|Programmation|La programmation, les scripts...|Programmation.png|}}
| width=&quot;33%&quot; | {{IconLink|Securite|Sécurité !|Securite.png|}}
|-
| width=&quot;33%&quot; | {{IconLink|Divers|divers|Divers.jpg|}}
| width=&quot;33%&quot; | {{IconLink|Documentation_externe|Documentation externe !|Doc.png|}}
|}


&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>be60fq3i9hbqtfteurblnkpwxiaj31y</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4594</id>
      <parentid>4580</parentid>
      <timestamp>2012-10-29T03:18:19Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="2295">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
----

&lt;u&gt;'''Installation'''&lt;/u&gt;

•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]]&lt;br&gt;
•&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]]&lt;br&gt;
•&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]]&lt;br&gt;
•&amp;nbsp;[[Vérifier_le_md5_d'une_image_iso|Vérifier le md5 d'une image iso]]&lt;br&gt;
•&amp;nbsp;[[Remettre une machine à zéro]]&lt;br&gt;
•&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Etch_à_Lenny|Mise à niveau (upgrade) de Etch à Lenny]]&lt;br&gt;
•&amp;nbsp;[[Installer_Debian_pas-%C3%A0-pas|Installer Lenny pas-à-pas avec une &quot;businesscard&quot;]]&lt;br&gt;
•&amp;nbsp;[[Installer_depuis_une_clé_USB|Installer Debian depuis une clé USB]]&lt;br&gt;
•&amp;nbsp;[[Unetbootin|Unetbootin]]&lt;br&gt;
•&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Lenny_à_Squeeze|Mise à niveau (upgrade) de Lenny à Squeeze]]&lt;br&gt;
•&amp;nbsp;[[Le_partitionnement|Le partitionnement]]&lt;br&gt;
•&amp;nbsp;[[Installation_de_squeeze_avec_une_businesscard|Installation de squeeze avec une &quot;businesscard&quot;]]&lt;br&gt;
•&amp;nbsp;[[Debian_on_dreamplug|Installation de Debian sur un &quot;dreamplug&quot;]]&lt;br&gt;
•&amp;nbsp;[[Installation_squeeze_chroot_debootstrap|Installation de Squeeze avec debootstrap et chroot]]&lt;br&gt;
•&amp;nbsp;[[Clef_usb_d'installation|Clef USB d'installation]]&lt;br&gt;

:*Obsolète: •&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]]

----

{| width=&quot;100%&quot;
| width=&quot;33%&quot; | {{IconLink|Installation|Installation|Installation.png|}}
| width=&quot;33%&quot; | {{IconLink|Logiciels|Les logiciels|Logiciel.png|}}
| width=&quot;33%&quot; | {{IconLink|Reseau_et_Wifi|Réseau et Wifi|internet.png|}}
|-
| width=&quot;33%&quot; | {{IconLink|Noyau_(Kernel)|Le noyau|Linux.jpg|}}
| width=&quot;33%&quot; | {{IconLink|Les_Trucs_et_astuces|Les Trucs &amp; Astuces|T%26A.jpg|}}
| width=&quot;33%&quot; | {{IconLink|Materiel_et_Pilotes|Le matériel et les pilotes|Hardware2.png|}}
|-
| width=&quot;33%&quot; | {{IconLink|Commandes|Les commandes|Commandes.png|}}
| width=&quot;33%&quot; | {{IconLink|Programmation|La programmation, les scripts...|Programmation.png|}}
| width=&quot;33%&quot; | {{IconLink|Securite|Sécurité !|Securite.png|}}
|-
| width=&quot;33%&quot; | {{IconLink|Divers|divers|Divers.jpg|}}
| width=&quot;33%&quot; | {{IconLink|Documentation_externe|Documentation externe !|Doc.png|}}
|}


&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>bx5u2gsp9v23l7jyr2xfqft0o0ewg21</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4612</id>
      <parentid>4594</parentid>
      <timestamp>2012-10-29T04:16:48Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="2816">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
----

&lt;u&gt;'''Installation'''&lt;/u&gt;

•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]]&lt;br&gt;
•&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]]&lt;br&gt;
•&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]]&lt;br&gt;
•&amp;nbsp;[[Vérifier_le_md5_d'une_image_iso|Vérifier le md5 d'une image iso]]&lt;br&gt;
•&amp;nbsp;[[Remettre une machine à zéro]]&lt;br&gt;
•&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Etch_à_Lenny|Mise à niveau (upgrade) de Etch à Lenny]]&lt;br&gt;
•&amp;nbsp;[[Installer_Debian_pas-%C3%A0-pas|Installer Lenny pas-à-pas avec une &quot;businesscard&quot;]]&lt;br&gt;
•&amp;nbsp;[[Installer_depuis_une_clé_USB|Installer Debian depuis une clé USB]]&lt;br&gt;
•&amp;nbsp;[[Unetbootin|Unetbootin]]&lt;br&gt;
•&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Lenny_à_Squeeze|Mise à niveau (upgrade) de Lenny à Squeeze]]&lt;br&gt;
•&amp;nbsp;[[Le_partitionnement|Le partitionnement]]&lt;br&gt;
•&amp;nbsp;[[Installation_de_squeeze_avec_une_businesscard|Installation de squeeze avec une &quot;businesscard&quot;]]&lt;br&gt;
•&amp;nbsp;[[Debian_on_dreamplug|Installation de Debian sur un &quot;dreamplug&quot;]]&lt;br&gt;
•&amp;nbsp;[[Installation_squeeze_chroot_debootstrap|Installation de Squeeze avec debootstrap et chroot]]&lt;br&gt;
•&amp;nbsp;[[Clef_usb_d'installation|Clef USB d'installation]]&lt;br&gt;

:*Obsolète: •&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]]

----

{| cellspacing=5 cellpadding=5 border=0 width=100%
|{{IconLink64|Installation|Installation|Debian.png|Comment bien installer sa Debian !!}}
|{{IconLink64|Modèle:General/Index/Logiciels|Les logiciels|deb.png|Installer et configurer vos logiciels}}
|{{IconLink64|Modèle:General/Index/Reseau_et_Wifi|Réseau et Wifi|Network-Connections.png|Tout ce dont vous avez besoin pour vous connecter!}}
|-
|{{IconLink64|Modèle:General/Index/Noyau_(Kernel)|Le noyau|3054-256x256x8.png|Comment compiler son noyau? C'est ici!}}
|{{IconLink64|Modèle:General/Index/Les_Trucs_et_astuces|Les Trucs &amp; Astuces|light_bulb.png|Des T&amp;A en vrac!}}
|{{IconLink64|Modèle:General/Index/Materiel_et_Pilotes|Le matériel et les pilotes|hardware.png|Matériels et pilotes}}
|-
|{{IconLink64|Modèle:General/Index/Commandes|Les commandes|gksu-root-terminal-2.png|Les commandes: de bases et plus complexes ! ;-)}}
|{{IconLink64|Modèle:General/Index/Programmation|La programmation, les scripts...|ADP-Icons-104-256x256-01.png|Programmez!}}
|{{IconLink64|Modèle:General/Index/Securite|Sécurité|FileGuardLarge256.png|Un pare feu? C'est ici}}
|-
|{{IconLink64|Modèle:General/Index/Divers|Divers|33366-256-coffee-icon.png|Lexique, Distributions dérivées, Etc.}}
|{{IconLink64|Modèle:General/Index/Documentation_externe|Documentation externe|grey_book.png|Documentations externes diverses}}
|}


&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>i9o4xn8lmad72vurk6jw7slcwpzfs4z</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4656</id>
      <parentid>4612</parentid>
      <timestamp>2012-10-29T12:13:59Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="1468">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
----

&lt;u&gt;'''Installation'''&lt;/u&gt;

•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]]&lt;br&gt;
•&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]]&lt;br&gt;
•&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]]&lt;br&gt;
•&amp;nbsp;[[Vérifier_le_md5_d'une_image_iso|Vérifier le md5 d'une image iso]]&lt;br&gt;
•&amp;nbsp;[[Remettre une machine à zéro]]&lt;br&gt;
•&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Etch_à_Lenny|Mise à niveau (upgrade) de Etch à Lenny]]&lt;br&gt;
•&amp;nbsp;[[Installer_Debian_pas-%C3%A0-pas|Installer Lenny pas-à-pas avec une &quot;businesscard&quot;]]&lt;br&gt;
•&amp;nbsp;[[Installer_depuis_une_clé_USB|Installer Debian depuis une clé USB]]&lt;br&gt;
•&amp;nbsp;[[Unetbootin|Unetbootin]]&lt;br&gt;
•&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Lenny_à_Squeeze|Mise à niveau (upgrade) de Lenny à Squeeze]]&lt;br&gt;
•&amp;nbsp;[[Le_partitionnement|Le partitionnement]]&lt;br&gt;
•&amp;nbsp;[[Installation_de_squeeze_avec_une_businesscard|Installation de squeeze avec une &quot;businesscard&quot;]]&lt;br&gt;
•&amp;nbsp;[[Debian_on_dreamplug|Installation de Debian sur un &quot;dreamplug&quot;]]&lt;br&gt;
•&amp;nbsp;[[Installation_squeeze_chroot_debootstrap|Installation de Squeeze avec debootstrap et chroot]]&lt;br&gt;
•&amp;nbsp;[[Clef_usb_d'installation|Clef USB d'installation]]&lt;br&gt;

:*Obsolète: •&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]]

----

{{Modèle:Accueil}}

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>kgtl3dsbr36w5n2i2o6n0oe22r3m8d5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4658</id>
      <parentid>4656</parentid>
      <timestamp>2012-10-29T12:18:52Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="1524">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Installation'''&lt;/u&gt;
{|
|•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]]&lt;br&gt;
|•&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]]&lt;br&gt;
|•&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]]&lt;br&gt;
|-
|•&amp;nbsp;[[Vérifier_le_md5_d'une_image_iso|Vérifier le md5 d'une image iso]]&lt;br&gt;
|•&amp;nbsp;[[Remettre une machine à zéro]]&lt;br&gt;
|•&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Etch_à_Lenny|Mise à niveau (upgrade) de Etch à Lenny]]&lt;br&gt;
|-
|•&amp;nbsp;[[Installer_Debian_pas-%C3%A0-pas|Installer Lenny pas-à-pas avec une &quot;businesscard&quot;]]&lt;br&gt;
|•&amp;nbsp;[[Installer_depuis_une_clé_USB|Installer Debian depuis une clé USB]]&lt;br&gt;
|•&amp;nbsp;[[Unetbootin|Unetbootin]]&lt;br&gt;
|-
|•&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Lenny_à_Squeeze|Mise à niveau (upgrade) de Lenny à Squeeze]]&lt;br&gt;
|•&amp;nbsp;[[Le_partitionnement|Le partitionnement]]&lt;br&gt;
|•&amp;nbsp;[[Installation_de_squeeze_avec_une_businesscard|Installation de squeeze avec une &quot;businesscard&quot;]]&lt;br&gt;
|-
|•&amp;nbsp;[[Debian_on_dreamplug|Installation de Debian sur un &quot;dreamplug&quot;]]&lt;br&gt;
|•&amp;nbsp;[[Installation_squeeze_chroot_debootstrap|Installation de Squeeze avec debootstrap et chroot]]&lt;br&gt;
|•&amp;nbsp;[[Clef_usb_d'installation|Clef USB d'installation]]&lt;br&gt;
|}
&lt;br&gt;
*Obsolète: •&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]]

----

{{Modèle:Accueil}}

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>r1tvzkrbe4dikd5y03c2pt8dpolhf6z</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4659</id>
      <parentid>4658</parentid>
      <timestamp>2012-10-29T12:21:54Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="1747">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Installation'''&lt;/u&gt;
{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Vérifier_le_md5_d'une_image_iso|Vérifier le md5 d'une image iso]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Remettre une machine à zéro]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Etch_à_Lenny|Mise à niveau (upgrade) de Etch à Lenny]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Installer_Debian_pas-%C3%A0-pas|Installer Lenny pas-à-pas avec une &quot;businesscard&quot;]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installer_depuis_une_clé_USB|Installer Debian depuis une clé USB]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Unetbootin|Unetbootin]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Lenny_à_Squeeze|Mise à niveau (upgrade) de Lenny à Squeeze]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Le_partitionnement|Le partitionnement]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_de_squeeze_avec_une_businesscard|Installation de squeeze avec une &quot;businesscard&quot;]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Debian_on_dreamplug|Installation de Debian sur un &quot;dreamplug&quot;]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_squeeze_chroot_debootstrap|Installation de Squeeze avec debootstrap et chroot]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Clef_usb_d'installation|Clef USB d'installation]]&lt;br&gt;
|}
&lt;br&gt;
*Obsolète: •&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]]

----

{{Modèle:Accueil}}

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>n0po2og9nv89wlgy0ctcvpfluaqhcpg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5126</id>
      <parentid>4659</parentid>
      <timestamp>2013-05-05T15:38:31Z</timestamp>
      <contributor>
        <username>PengouinPdt</username>
        <id>249</id>
      </contributor>
      <minor/>
      <comment>Ajout de la page &quot;Migration Ubuntu vers Sid&quot;</comment>
      <text xml:space="preserve" bytes="1899">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Installation'''&lt;/u&gt;
{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Vérifier_le_md5_d'une_image_iso|Vérifier le md5 d'une image iso]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Remettre une machine à zéro]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Etch_à_Lenny|Mise à niveau (upgrade) de Etch à Lenny]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Installer_Debian_pas-%C3%A0-pas|Installer Lenny pas-à-pas avec une &quot;businesscard&quot;]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installer_depuis_une_clé_USB|Installer Debian depuis une clé USB]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Unetbootin|Unetbootin]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Lenny_à_Squeeze|Mise à niveau (upgrade) de Lenny à Squeeze]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Le_partitionnement|Le partitionnement]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_de_squeeze_avec_une_businesscard|Installation de squeeze avec une &quot;businesscard&quot;]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Debian_on_dreamplug|Installation de Debian sur un &quot;dreamplug&quot;]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_squeeze_chroot_debootstrap|Installation de Squeeze avec debootstrap et chroot]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Clef_usb_d'installation|Clef USB d'installation]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Migration_Ubuntu_vers_Sid|Migration Ubuntu vers (Apto)Sid&quot;]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;&lt;br&gt;
|}
&lt;br&gt;
*Obsolète: •&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]]

----

{{Modèle:Accueil}}

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>ehzoebhdk3rh4u7194bjubh9aujnuko</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5186</id>
      <parentid>5126</parentid>
      <timestamp>2013-05-15T14:18:01Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="2060">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Installation'''&lt;/u&gt;
{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Vérifier_le_md5_d'une_image_iso|Vérifier le md5 d'une image iso]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Remettre une machine à zéro]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Etch_à_Lenny|Mise à niveau (upgrade) de Etch à Lenny]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Installer_Debian_pas-%C3%A0-pas|Installer Lenny pas-à-pas avec une &quot;businesscard&quot;]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installer_depuis_une_clé_USB|Installer Debian depuis une clé USB]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Unetbootin|Unetbootin]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Lenny_à_Squeeze|Mise à niveau (upgrade) de Lenny à Squeeze]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Le_partitionnement|Le partitionnement]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_de_squeeze_avec_une_businesscard|Installation de squeeze avec une &quot;businesscard&quot;]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Debian_on_dreamplug|Installation de Debian sur un &quot;dreamplug&quot;]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_wheezy_chroot_debootstrap|Installation de Wheezy avec debootstrap et chroot]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Clef_usb_d'installation|Clef USB d'installation]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Migration_Ubuntu_vers_Sid|Migration Ubuntu vers (Apto)Sid&quot;]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;&lt;br&gt;
|}
&lt;br&gt;
*Articles obsolètes :
{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_squeeze_chroot_debootstrap|Installation de Squeeze avec debootstrap et chroot]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]]
|}
----

{{Modèle:Accueil}}

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>limpfi3ynso9vaxxv98pzbfk2r9vmcu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5188</id>
      <parentid>5186</parentid>
      <timestamp>2013-05-15T15:38:18Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="2007">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Installation'''&lt;/u&gt;
{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Vérifier_le_md5_d'une_image_iso|Vérifier le md5 d'une image iso]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Remettre une machine à zéro]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Etch_à_Lenny|Mise à niveau (upgrade) de Etch à Lenny]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Migration_Ubuntu_vers_Sid|Migration Ubuntu vers (Apto)Sid&quot;]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installer_depuis_une_clé_USB|Installer Debian depuis une clé USB]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Unetbootin|Unetbootin]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Lenny_à_Squeeze|Mise à niveau (upgrade) de Lenny à Squeeze]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Le_partitionnement|Le partitionnement]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_de_squeeze_avec_une_businesscard|Installation de squeeze avec une &quot;businesscard&quot;]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Debian_on_dreamplug|Installation de Debian sur un &quot;dreamplug&quot;]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_wheezy_chroot_debootstrap|Installation de Wheezy avec debootstrap et chroot]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Clef_usb_d'installation|Clef USB d'installation]]&lt;br&gt;
|}
&lt;br&gt;
*Articles obsolètes :
{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_squeeze_chroot_debootstrap|Installation de Squeeze avec debootstrap et chroot]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installer_Debian_pas-%C3%A0-pas|Installer Lenny pas-à-pas avec une &quot;businesscard&quot;]]&lt;br&gt;
|}
----

{{Modèle:Accueil}}

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>dyjc9fmfmh0faj4m21ysloaip667p3j</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5210</id>
      <parentid>5188</parentid>
      <timestamp>2013-05-23T17:02:54Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="2085">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Installation'''&lt;/u&gt;
{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Vérifier_le_md5_d'une_image_iso|Vérifier le md5 d'une image iso]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Remettre une machine à zéro]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Etch_à_Lenny|Mise à niveau (upgrade) de Etch à Lenny]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Migration_Ubuntu_vers_Sid|Migration Ubuntu vers (Apto)Sid&quot;]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installer_depuis_une_clé_USB|Installer Debian depuis une clé USB]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Unetbootin|Unetbootin]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Lenny_à_Squeeze|Mise à niveau (upgrade) de Lenny à Squeeze]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Le_partitionnement|Le partitionnement]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_de_squeeze_avec_une_businesscard|Installation de squeeze avec une &quot;businesscard&quot;]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Debian_on_dreamplug|Installation de Debian sur un &quot;dreamplug&quot;]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_wheezy_chroot_debootstrap|Installation de Wheezy avec debootstrap et chroot]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Clef_usb_d'installation|Clef USB d'installation]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[PXE|Installation par le réseau (boot PXE)]]&lt;br&gt;
|}
&lt;br&gt;
*Articles obsolètes :
{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_squeeze_chroot_debootstrap|Installation de Squeeze avec debootstrap et chroot]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installer_Debian_pas-%C3%A0-pas|Installer Lenny pas-à-pas avec une &quot;businesscard&quot;]]&lt;br&gt;
|}
----

{{Modèle:Accueil}}

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>q51ojxtszliezx1akckugv3afn82st3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5257</id>
      <parentid>5210</parentid>
      <timestamp>2013-06-09T15:54:52Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <minor/>
      <comment>Ajout d'un lien vers la page « Debian quoi ? »</comment>
      <text xml:space="preserve" bytes="2145">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Installation'''&lt;/u&gt;
{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Vérifier_le_md5_d'une_image_iso|Vérifier le md5 d'une image iso]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Remettre une machine à zéro]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Etch_à_Lenny|Mise à niveau (upgrade) de Etch à Lenny]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Migration_Ubuntu_vers_Sid|Migration Ubuntu vers (Apto)Sid&quot;]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installer_depuis_une_clé_USB|Installer Debian depuis une clé USB]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Unetbootin|Unetbootin]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Lenny_à_Squeeze|Mise à niveau (upgrade) de Lenny à Squeeze]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Le_partitionnement|Le partitionnement]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_de_squeeze_avec_une_businesscard|Installation de squeeze avec une &quot;businesscard&quot;]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Debian_on_dreamplug|Installation de Debian sur un &quot;dreamplug&quot;]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_wheezy_chroot_debootstrap|Installation de Wheezy avec debootstrap et chroot]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Clef_usb_d'installation|Clef USB d'installation]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[PXE|Installation par le réseau (boot PXE)]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Debian_quoi_%3F|Debian quoi ?]]
|}
&lt;br&gt;
*Articles obsolètes :
{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_squeeze_chroot_debootstrap|Installation de Squeeze avec debootstrap et chroot]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installer_Debian_pas-%C3%A0-pas|Installer Lenny pas-à-pas avec une &quot;businesscard&quot;]]&lt;br&gt;
|}
----

{{Modèle:Accueil}}

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>9955sb8sqvkaexnr4frk8zze848coom</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5258</id>
      <parentid>5257</parentid>
      <timestamp>2013-06-09T16:02:53Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>Réorganisation de la page</comment>
      <text xml:space="preserve" bytes="2234">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Installation'''&lt;/u&gt;
*Généralités :
{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Debian_quoi_%3F|Debian quoi ?]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Le_partitionnement|Le partitionnement]]&lt;br&gt;
|}
*Guides d'installation :
{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Etch_à_Lenny|Mise à niveau (upgrade) de Etch à Lenny]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Migration_Ubuntu_vers_Sid|Migration Ubuntu vers (Apto)Sid]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Installer_depuis_une_clé_USB|Installer Debian depuis une clé USB]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Unetbootin|Unetbootin]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Lenny_à_Squeeze|Mise à niveau (upgrade) de Lenny à Squeeze]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_de_squeeze_avec_une_businesscard|Installation de squeeze avec une &quot;businesscard&quot;]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Debian_on_dreamplug|Installation de Debian sur un &quot;dreamplug&quot;]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_wheezy_chroot_debootstrap|Installation de Wheezy avec debootstrap et chroot]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Clef_usb_d'installation|Clef USB d'installation]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[PXE|Installation par le réseau (boot PXE)]]&lt;br&gt;
|}
*Astuces :
{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Vérifier_le_md5_d'une_image_iso|Vérifier le md5 d'une image iso]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Remettre une machine à zéro]]&lt;br&gt;
|}
&lt;br&gt;
*Articles obsolètes :
{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_squeeze_chroot_debootstrap|Installation de Squeeze avec debootstrap et chroot]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installer_Debian_pas-%C3%A0-pas|Installer Lenny pas-à-pas avec une &quot;businesscard&quot;]]&lt;br&gt;
|}
----

{{Modèle:Accueil}}

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>1u8b9hi2shxnfzsb630uo3xqg3eqauj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5531</id>
      <parentid>5258</parentid>
      <timestamp>2014-01-19T22:13:39Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>ajout de Debian &amp; Uefi</comment>
      <text xml:space="preserve" bytes="2299">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Installation'''&lt;/u&gt;
*Généralités :
{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Debian_quoi_%3F|Debian quoi ?]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Le_partitionnement|Le partitionnement]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Debian_%26_UEFI|Debian &amp; UEFI]]&lt;br&gt;
|}
*Guides d'installation :
{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Etch_à_Lenny|Mise à niveau (upgrade) de Etch à Lenny]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Migration_Ubuntu_vers_Sid|Migration Ubuntu vers (Apto)Sid]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Installer_depuis_une_clé_USB|Installer Debian depuis une clé USB]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Unetbootin|Unetbootin]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Lenny_à_Squeeze|Mise à niveau (upgrade) de Lenny à Squeeze]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_de_squeeze_avec_une_businesscard|Installation de squeeze avec une &quot;businesscard&quot;]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Debian_on_dreamplug|Installation de Debian sur un &quot;dreamplug&quot;]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_wheezy_chroot_debootstrap|Installation de Wheezy avec debootstrap et chroot]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Clef_usb_d'installation|Clef USB d'installation]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[PXE|Installation par le réseau (boot PXE)]]&lt;br&gt;
|}
*Astuces :
{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Vérifier_le_md5_d'une_image_iso|Vérifier le md5 d'une image iso]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Remettre une machine à zéro]]&lt;br&gt;
|}
&lt;br&gt;
*Articles obsolètes :
{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_squeeze_chroot_debootstrap|Installation de Squeeze avec debootstrap et chroot]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installer_Debian_pas-%C3%A0-pas|Installer Lenny pas-à-pas avec une &quot;businesscard&quot;]]&lt;br&gt;
|}
----

{{Modèle:Accueil}}

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>ifmk4rowupfxvclwky41oev03sqkvq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5801</id>
      <parentid>5531</parentid>
      <timestamp>2014-09-06T02:47:22Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="2426">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Installation'''&lt;/u&gt;
*Généralités :
{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Debian_quoi_%3F|Debian quoi ?]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Le_partitionnement|Le partitionnement]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Debian_%26_UEFI|Debian &amp; UEFI]]&lt;br&gt;
|}
*Guides d'installation :
{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Unetbootin|Unetbootin]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Migration_Ubuntu_vers_Sid|Migration Ubuntu vers (Apto)Sid]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Installer_depuis_une_clé_USB|Installer Debian depuis une clé USB]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Lenny_à_Squeeze|Mise à niveau (upgrade) de Lenny à Squeeze]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Mise_à_niveau_de_Squeeze_vers_Wheezy|Mise à niveau de Squeeze vers Wheezy]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_de_squeeze_avec_une_businesscard|Installation de squeeze avec une &quot;businesscard&quot;]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Debian_on_dreamplug|Installation de Debian sur un &quot;dreamplug&quot;]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_wheezy_chroot_debootstrap|Installation de Wheezy avec debootstrap et chroot]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Clef_usb_d'installation|Clef USB d'installation]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[PXE|Installation par le réseau (boot PXE)]]&lt;br&gt;
|}
*Astuces :
{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Vérifier_le_md5_d'une_image_iso|Vérifier le md5 d'une image iso]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Remettre une machine à zéro]]&lt;br&gt;
|}
&lt;br&gt;
*Articles obsolètes :
{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_squeeze_chroot_debootstrap|Installation de Squeeze avec debootstrap et chroot]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installer_Debian_pas-%C3%A0-pas|Installer Lenny pas-à-pas avec une &quot;businesscard&quot;]]&lt;br&gt;
|}
{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Etch_à_Lenny|Mise à niveau (upgrade) de Etch à Lenny]]&lt;br&gt;
|}
----

{{Modèle:Accueil}}

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>fgxxsb8x186p9p8xb57z8mrnmv7ic9t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5893</id>
      <parentid>5801</parentid>
      <timestamp>2014-10-24T08:13:14Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>Ajout lien dans &quot;Astuces&quot;</comment>
      <text xml:space="preserve" bytes="2635">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Installation'''&lt;/u&gt;
*Généralités :
{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Debian_quoi_%3F|Debian quoi ?]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Le_partitionnement|Le partitionnement]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Debian_%26_UEFI|Debian &amp; UEFI]]&lt;br&gt;
|}
*Guides d'installation :
{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Unetbootin|Unetbootin]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Migration_Ubuntu_vers_Sid|Migration Ubuntu vers (Apto)Sid]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Installer_depuis_une_clé_USB|Installer Debian depuis une clé USB]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Lenny_à_Squeeze|Mise à niveau (upgrade) de Lenny à Squeeze]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Mise_à_niveau_de_Squeeze_vers_Wheezy|Mise à niveau de Squeeze vers Wheezy]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_de_squeeze_avec_une_businesscard|Installation de squeeze avec une &quot;businesscard&quot;]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Debian_on_dreamplug|Installation de Debian sur un &quot;dreamplug&quot;]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_wheezy_chroot_debootstrap|Installation de Wheezy avec debootstrap et chroot]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Clef_usb_d'installation|Clef USB d'installation]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[PXE|Installation par le réseau (boot PXE)]]&lt;br&gt;
|}
*Astuces :
{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Vérifier_le_md5_d'une_image_iso|Vérifier le md5 d'une image iso]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Remettre une machine à zéro]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Installer_debian_en_utilisant_un_Disque_dur_USB_%C3%A0_la_place_d%27un_CD-ROM_ou_Clef_USB|Installer debian en utilisant un Disque dur USB à la place d'un CD-ROM ou Clef USB]]&lt;br&gt;
|}
&lt;br&gt;
*Articles obsolètes :
{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_squeeze_chroot_debootstrap|Installation de Squeeze avec debootstrap et chroot]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installer_Debian_pas-%C3%A0-pas|Installer Lenny pas-à-pas avec une &quot;businesscard&quot;]]&lt;br&gt;
|}
{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Etch_à_Lenny|Mise à niveau (upgrade) de Etch à Lenny]]&lt;br&gt;
|}
----

{{Modèle:Accueil}}

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>sf4anbhw8nsk1ccbjjol33t1ei24d2n</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5894</id>
      <parentid>5893</parentid>
      <timestamp>2014-10-24T08:15:26Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>reformulation nom du lien</comment>
      <text xml:space="preserve" bytes="2636">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Installation'''&lt;/u&gt;
*Généralités :
{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Debian_quoi_%3F|Debian quoi ?]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Le_partitionnement|Le partitionnement]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Debian_%26_UEFI|Debian &amp; UEFI]]&lt;br&gt;
|}
*Guides d'installation :
{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Unetbootin|Unetbootin]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Migration_Ubuntu_vers_Sid|Migration Ubuntu vers (Apto)Sid]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Installer_depuis_une_clé_USB|Installer Debian depuis une clé USB]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Lenny_à_Squeeze|Mise à niveau (upgrade) de Lenny à Squeeze]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Mise_à_niveau_de_Squeeze_vers_Wheezy|Mise à niveau de Squeeze vers Wheezy]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_de_squeeze_avec_une_businesscard|Installation de squeeze avec une &quot;businesscard&quot;]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Debian_on_dreamplug|Installation de Debian sur un &quot;dreamplug&quot;]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_wheezy_chroot_debootstrap|Installation de Wheezy avec debootstrap et chroot]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Clef_usb_d'installation|Clef USB d'installation]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[PXE|Installation par le réseau (boot PXE)]]&lt;br&gt;
|}
*Astuces :
{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Vérifier_le_md5_d'une_image_iso|Vérifier le md5 d'une image iso]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Remettre une machine à zéro]]&lt;br&gt;
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Installer_debian_en_utilisant_un_Disque_dur_USB_%C3%A0_la_place_d%27un_CD-ROM_ou_Clef_USB|Utiliser un disque dur USB à la place d'un CD-ROM ou Clef USB pour installer debian]]&lt;br&gt;
|}
&lt;br&gt;
*Articles obsolètes :
{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_squeeze_chroot_debootstrap|Installation de Squeeze avec debootstrap et chroot]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]]&lt;br&gt;
| width=&quot;33%&quot; |•&amp;nbsp;[[Installer_Debian_pas-%C3%A0-pas|Installer Lenny pas-à-pas avec une &quot;businesscard&quot;]]&lt;br&gt;
|}
{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Etch_à_Lenny|Mise à niveau (upgrade) de Etch à Lenny]]&lt;br&gt;
|}
----

{{Modèle:Accueil}}

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>62mnrbdb4f02o05noeg6bwxxyjqb412</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Installation TrueCrypt Squeeze</title>
    <ns>0</ns>
    <id>1008</id>
    <revision>
      <id>4223</id>
      <timestamp>2012-05-10T14:08:06Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>Page créée avec « Installation de TrueCrypt sur une Squeeze   Il n'existe pas encore de paquet pour installer directement TrueCrypt sur une Squeeze.  Voici une méthode pas-à-pas pour l'in... »</comment>
      <text xml:space="preserve" bytes="2384">Installation de TrueCrypt sur une Squeeze


Il n'existe pas encore de paquet pour installer directement TrueCrypt sur une Squeeze.

Voici une méthode pas-à-pas pour l'installer depuis son site officiel.

/!\ Les utilisateurs doivent être dans sudoers pour utiliser truecrypt

 # visudo
 (...)
 Cmnd_Alias      CRYPT = /usr/bin/truecrypt
 utilisateur ALL=(root) NOPASSWD:CRYPT
 (...)

== Télécharger l'archive ==

Sur la page de téléchargement du site officiel : http://www.truecrypt.org/downloads choisissez dans la partie « Linux » l'architecture de votre système.

Si vous ne la connaissez pas, la commande suivante vous la donnera :
 dpkg -l &quot;linux-image*&quot; | grep ^ii
Si le résultat se termine par 686 ou 486, téléchargez la version 32-bit ; si le résultat se termine par amd64, téléchargez la version 64-bit.

== Décompresser l'archive ==

=== Avec Gnome ===

un simple clic droit suivi de « Extraire ici » fera l'affaire.

=== En ligne de commande ===

 $ tar -xzvf trucecrypt-*-linux-*.tar.gz

Vous vous retrouvez donc avec un fichier nommé truecrypt-7.1a-setup-x86 ou truecrypt-7.1a-setup-x64. (le 7.1a désigne la version et pourra différer)

== Installer les dépendances du programme ==

=== Avec sudo ===
 $ sudo apt-get install libfuse2 fuse-utils libdevmapper1.02.1

=== Dans un terminal administrateur ===
 # apt-get install libfuse2 fuse-utils libdevmapper1.02.1

== Installer le programme ==

Tout d'abord, ouvrez un terminal, puis glissez-y le fichier : son adresse sur le disque dur apparaît dans la console.

Exécutez le script avec Entrée.

« Install TrueCrypt »

« I accept and agree to be bound by the license terms »

Le script d'installation liste les dépendance, « OK », puis vous donne le script qui servira à désinstaller TrueCrypt (notez-le !), « OK »

Ici il vous sera demandé d'entrer votre mot de passe : administrateur dans une configuration avec un compte root, utilisateur dans une configuration sans compte root (avec sudo).

L'installation se déroule dans un terminal, puis vous demande d'appuyer sur Entrée pour se terminer

== Lancer le programme ==

L'exécutable se trouve à l'emplacement suivant : /usr/bin/truecrypt

Pour le lancer :
 truecrypt


--[[Utilisateur:Vv222|vv222]] 10 mai 2012 à 16:00 (CEST)

[https://www.debian-fr.org/installer-truecrypt-sous-squeeze-methode-pas-a-pas-t38687.html source]</text>
      <sha1>7ozlidllh137mzc4q9wvc86jj84h6t9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4235</id>
      <parentid>4223</parentid>
      <timestamp>2012-05-12T14:46:47Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>Correction d'une faute de frappe dans la commande d'extrcation</comment>
      <text xml:space="preserve" bytes="2383">Installation de TrueCrypt sur une Squeeze


Il n'existe pas encore de paquet pour installer directement TrueCrypt sur une Squeeze.

Voici une méthode pas-à-pas pour l'installer depuis son site officiel.

/!\ Les utilisateurs doivent être dans sudoers pour utiliser truecrypt

 # visudo
 (...)
 Cmnd_Alias      CRYPT = /usr/bin/truecrypt
 utilisateur ALL=(root) NOPASSWD:CRYPT
 (...)

== Télécharger l'archive ==

Sur la page de téléchargement du site officiel : http://www.truecrypt.org/downloads choisissez dans la partie « Linux » l'architecture de votre système.

Si vous ne la connaissez pas, la commande suivante vous la donnera :
 dpkg -l &quot;linux-image*&quot; | grep ^ii
Si le résultat se termine par 686 ou 486, téléchargez la version 32-bit ; si le résultat se termine par amd64, téléchargez la version 64-bit.

== Décompresser l'archive ==

=== Avec Gnome ===

un simple clic droit suivi de « Extraire ici » fera l'affaire.

=== En ligne de commande ===

 $ tar -xzvf truecrypt-*-linux-*.tar.gz

Vous vous retrouvez donc avec un fichier nommé truecrypt-7.1a-setup-x86 ou truecrypt-7.1a-setup-x64. (le 7.1a désigne la version et pourra différer)

== Installer les dépendances du programme ==

=== Avec sudo ===
 $ sudo apt-get install libfuse2 fuse-utils libdevmapper1.02.1

=== Dans un terminal administrateur ===
 # apt-get install libfuse2 fuse-utils libdevmapper1.02.1

== Installer le programme ==

Tout d'abord, ouvrez un terminal, puis glissez-y le fichier : son adresse sur le disque dur apparaît dans la console.

Exécutez le script avec Entrée.

« Install TrueCrypt »

« I accept and agree to be bound by the license terms »

Le script d'installation liste les dépendance, « OK », puis vous donne le script qui servira à désinstaller TrueCrypt (notez-le !), « OK »

Ici il vous sera demandé d'entrer votre mot de passe : administrateur dans une configuration avec un compte root, utilisateur dans une configuration sans compte root (avec sudo).

L'installation se déroule dans un terminal, puis vous demande d'appuyer sur Entrée pour se terminer

== Lancer le programme ==

L'exécutable se trouve à l'emplacement suivant : /usr/bin/truecrypt

Pour le lancer :
 truecrypt


--[[Utilisateur:Vv222|vv222]] 10 mai 2012 à 16:00 (CEST)

[https://www.debian-fr.org/installer-truecrypt-sous-squeeze-methode-pas-a-pas-t38687.html source]</text>
      <sha1>nkd8yni9h1yck6lu9q3vfd5lapcucnz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4742</id>
      <parentid>4235</parentid>
      <timestamp>2012-11-10T15:34:32Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>utilisation de la balise avertissement</comment>
      <text xml:space="preserve" bytes="2409">Installation de TrueCrypt sur une Squeeze


Il n'existe pas encore de paquet pour installer directement TrueCrypt sur une Squeeze.

Voici une méthode pas-à-pas pour l'installer depuis son site officiel.

{{Avertissement|texte='''Les utilisateurs doivent être dans sudoers pour utiliser truecrypt'''}}

 # visudo
 (...)
 Cmnd_Alias      CRYPT = /usr/bin/truecrypt
 utilisateur ALL=(root) NOPASSWD:CRYPT
 (...)

== Télécharger l'archive ==

Sur la page de téléchargement du site officiel : http://www.truecrypt.org/downloads choisissez dans la partie « Linux » l'architecture de votre système.

Si vous ne la connaissez pas, la commande suivante vous la donnera :
 dpkg -l &quot;linux-image*&quot; | grep ^ii
Si le résultat se termine par 686 ou 486, téléchargez la version 32-bit ; si le résultat se termine par amd64, téléchargez la version 64-bit.

== Décompresser l'archive ==

=== Avec Gnome ===

un simple clic droit suivi de « Extraire ici » fera l'affaire.

=== En ligne de commande ===

 $ tar -xzvf truecrypt-*-linux-*.tar.gz

Vous vous retrouvez donc avec un fichier nommé truecrypt-7.1a-setup-x86 ou truecrypt-7.1a-setup-x64. (le 7.1a désigne la version et pourra différer)

== Installer les dépendances du programme ==

=== Avec sudo ===
 $ sudo apt-get install libfuse2 fuse-utils libdevmapper1.02.1

=== Dans un terminal administrateur ===
 # apt-get install libfuse2 fuse-utils libdevmapper1.02.1

== Installer le programme ==

Tout d'abord, ouvrez un terminal, puis glissez-y le fichier : son adresse sur le disque dur apparaît dans la console.

Exécutez le script avec Entrée.

« Install TrueCrypt »

« I accept and agree to be bound by the license terms »

Le script d'installation liste les dépendance, « OK », puis vous donne le script qui servira à désinstaller TrueCrypt (notez-le !), « OK »

Ici il vous sera demandé d'entrer votre mot de passe : administrateur dans une configuration avec un compte root, utilisateur dans une configuration sans compte root (avec sudo).

L'installation se déroule dans un terminal, puis vous demande d'appuyer sur Entrée pour se terminer

== Lancer le programme ==

L'exécutable se trouve à l'emplacement suivant : /usr/bin/truecrypt

Pour le lancer :
 truecrypt


--[[Utilisateur:Vv222|vv222]] 10 mai 2012 à 16:00 (CEST)

[https://www.debian-fr.org/installer-truecrypt-sous-squeeze-methode-pas-a-pas-t38687.html source]</text>
      <sha1>l56whbbyuhh4dnfl12r4vuz5ojw9w06</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5215</id>
      <parentid>4742</parentid>
      <timestamp>2013-05-27T21:24:52Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>/* Télécharger l'archive */</comment>
      <text xml:space="preserve" bytes="2384">Installation de TrueCrypt sur une Squeeze


Il n'existe pas encore de paquet pour installer directement TrueCrypt sur une Squeeze.

Voici une méthode pas-à-pas pour l'installer depuis son site officiel.

{{Avertissement|texte='''Les utilisateurs doivent être dans sudoers pour utiliser truecrypt'''}}

 # visudo
 (...)
 Cmnd_Alias      CRYPT = /usr/bin/truecrypt
 utilisateur ALL=(root) NOPASSWD:CRYPT
 (...)

== Télécharger l'archive ==

Sur la page de téléchargement du site officiel : http://www.truecrypt.org/downloads choisissez dans la partie « Linux » l'architecture de votre système.

Si vous ne la connaissez pas, la commande suivante vous la donnera :
 uname -r
Si le résultat se termine par 686 ou 486, téléchargez la version 32-bit ; si le résultat se termine par amd64, téléchargez la version 64-bit.

== Décompresser l'archive ==

=== Avec Gnome ===

un simple clic droit suivi de « Extraire ici » fera l'affaire.

=== En ligne de commande ===

 $ tar -xzvf truecrypt-*-linux-*.tar.gz

Vous vous retrouvez donc avec un fichier nommé truecrypt-7.1a-setup-x86 ou truecrypt-7.1a-setup-x64. (le 7.1a désigne la version et pourra différer)

== Installer les dépendances du programme ==

=== Avec sudo ===
 $ sudo apt-get install libfuse2 fuse-utils libdevmapper1.02.1

=== Dans un terminal administrateur ===
 # apt-get install libfuse2 fuse-utils libdevmapper1.02.1

== Installer le programme ==

Tout d'abord, ouvrez un terminal, puis glissez-y le fichier : son adresse sur le disque dur apparaît dans la console.

Exécutez le script avec Entrée.

« Install TrueCrypt »

« I accept and agree to be bound by the license terms »

Le script d'installation liste les dépendance, « OK », puis vous donne le script qui servira à désinstaller TrueCrypt (notez-le !), « OK »

Ici il vous sera demandé d'entrer votre mot de passe : administrateur dans une configuration avec un compte root, utilisateur dans une configuration sans compte root (avec sudo).

L'installation se déroule dans un terminal, puis vous demande d'appuyer sur Entrée pour se terminer

== Lancer le programme ==

L'exécutable se trouve à l'emplacement suivant : /usr/bin/truecrypt

Pour le lancer :
 truecrypt


--[[Utilisateur:Vv222|vv222]] 10 mai 2012 à 16:00 (CEST)

[https://www.debian-fr.org/installer-truecrypt-sous-squeeze-methode-pas-a-pas-t38687.html source]</text>
      <sha1>q5syak7itkwyzkxp9tengdf9kfr12f5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5216</id>
      <parentid>5215</parentid>
      <timestamp>2013-05-27T21:25:11Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>/* Télécharger l'archive */</comment>
      <text xml:space="preserve" bytes="2386">Installation de TrueCrypt sur une Squeeze


Il n'existe pas encore de paquet pour installer directement TrueCrypt sur une Squeeze.

Voici une méthode pas-à-pas pour l'installer depuis son site officiel.

{{Avertissement|texte='''Les utilisateurs doivent être dans sudoers pour utiliser truecrypt'''}}

 # visudo
 (...)
 Cmnd_Alias      CRYPT = /usr/bin/truecrypt
 utilisateur ALL=(root) NOPASSWD:CRYPT
 (...)

== Télécharger l'archive ==

Sur la page de téléchargement du site officiel : http://www.truecrypt.org/downloads choisissez dans la partie « Linux » l'architecture de votre système.

Si vous ne la connaissez pas, la commande suivante vous la donnera :
 $ uname -r
Si le résultat se termine par 686 ou 486, téléchargez la version 32-bit ; si le résultat se termine par amd64, téléchargez la version 64-bit.

== Décompresser l'archive ==

=== Avec Gnome ===

un simple clic droit suivi de « Extraire ici » fera l'affaire.

=== En ligne de commande ===

 $ tar -xzvf truecrypt-*-linux-*.tar.gz

Vous vous retrouvez donc avec un fichier nommé truecrypt-7.1a-setup-x86 ou truecrypt-7.1a-setup-x64. (le 7.1a désigne la version et pourra différer)

== Installer les dépendances du programme ==

=== Avec sudo ===
 $ sudo apt-get install libfuse2 fuse-utils libdevmapper1.02.1

=== Dans un terminal administrateur ===
 # apt-get install libfuse2 fuse-utils libdevmapper1.02.1

== Installer le programme ==

Tout d'abord, ouvrez un terminal, puis glissez-y le fichier : son adresse sur le disque dur apparaît dans la console.

Exécutez le script avec Entrée.

« Install TrueCrypt »

« I accept and agree to be bound by the license terms »

Le script d'installation liste les dépendance, « OK », puis vous donne le script qui servira à désinstaller TrueCrypt (notez-le !), « OK »

Ici il vous sera demandé d'entrer votre mot de passe : administrateur dans une configuration avec un compte root, utilisateur dans une configuration sans compte root (avec sudo).

L'installation se déroule dans un terminal, puis vous demande d'appuyer sur Entrée pour se terminer

== Lancer le programme ==

L'exécutable se trouve à l'emplacement suivant : /usr/bin/truecrypt

Pour le lancer :
 truecrypt


--[[Utilisateur:Vv222|vv222]] 10 mai 2012 à 16:00 (CEST)

[https://www.debian-fr.org/installer-truecrypt-sous-squeeze-methode-pas-a-pas-t38687.html source]</text>
      <sha1>fbqja9hx0vqi7zhuihxmc8mwicnrafz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5217</id>
      <parentid>5216</parentid>
      <timestamp>2013-05-27T21:31:48Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="2661">Installation de TrueCrypt sur une Squeeze

(cette méthode n'a pas été testée sur une Wheezy, mais devrait fonctionner à l'identique)


Il n'existe pas encore de paquet pour installer directement TrueCrypt sur une Squeeze.

Voici une méthode pas-à-pas pour l'installer depuis son site officiel.

{{Avertissement|texte='''Les utilisateurs doivent être dans sudoers pour utiliser truecrypt'''}}

 # visudo
 (...)
 Cmnd_Alias      CRYPT = /usr/bin/truecrypt
 utilisateur ALL=(root) NOPASSWD:CRYPT
 (...)

== Télécharger l'archive ==

Sur la page de téléchargement du site officiel : http://www.truecrypt.org/downloads choisissez dans la partie « Linux » l'architecture de votre système.

Si vous ne la connaissez pas, la commande suivante vous la donnera :
 $ uname -r
Si le résultat se termine par 686 ou 486, téléchargez la version 32-bit ; si le résultat se termine par amd64, téléchargez la version 64-bit.

== Décompresser l'archive ==

=== Avec Gnome ===

un simple clic droit suivi de « Extraire ici » fera l'affaire.

=== En ligne de commande ===

 $ tar -xzvf truecrypt-*-linux-*.tar.gz

Vous vous retrouvez donc avec un fichier nommé truecrypt-7.1a-setup-x86 ou truecrypt-7.1a-setup-x64. (le 7.1a désigne la version et pourra différer)

== Installer les dépendances du programme ==

=== Avec sudo ===
Sur une Squeeze :
 $ sudo apt-get install libfuse2 fuse-utils libdevmapper1.02.1
Sur une Wheezy :
 $ sudo apt-get install libfuse2 fuse libdevmapper1.02.1

=== Dans un terminal administrateur ===
Sur une Squeeze :
 # apt-get install libfuse2 fuse-utils libdevmapper1.02.1
Sur une Wheezy :
 # apt-get install libfuse2 fuse libdevmapper1.02.1

== Installer le programme ==

Tout d'abord, ouvrez un terminal, puis glissez-y le fichier : son adresse sur le disque dur apparaît dans la console.

Exécutez le script avec Entrée.

« Install TrueCrypt »

« I accept and agree to be bound by the license terms »

Le script d'installation liste les dépendance, « OK », puis vous donne le script qui servira à désinstaller TrueCrypt (notez-le !), « OK »

Ici il vous sera demandé d'entrer votre mot de passe : administrateur dans une configuration avec un compte root, utilisateur dans une configuration sans compte root (avec sudo).

L'installation se déroule dans un terminal, puis vous demande d'appuyer sur Entrée pour se terminer

== Lancer le programme ==

L'exécutable se trouve à l'emplacement suivant : /usr/bin/truecrypt

Pour le lancer :
 truecrypt


--[[Utilisateur:Vv222|vv222]] 10 mai 2012 à 16:00 (CEST)

[https://www.debian-fr.org/installer-truecrypt-sous-squeeze-methode-pas-a-pas-t38687.html source]</text>
      <sha1>ci6m4tvh7h21lbduj46986ymtofli1r</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5219</id>
      <parentid>5217</parentid>
      <timestamp>2013-05-27T21:34:41Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2586">Installation de TrueCrypt sur une Squeeze ou une Wheezy


Il n'existe pas encore de paquet pour installer directement TrueCrypt sur une Squeeze/Wheezy.

Voici une méthode pas-à-pas pour l'installer depuis son site officiel.

{{Avertissement|texte='''Les utilisateurs doivent être dans sudoers pour utiliser truecrypt'''}}

 # visudo
 (...)
 Cmnd_Alias      CRYPT = /usr/bin/truecrypt
 utilisateur ALL=(root) NOPASSWD:CRYPT
 (...)

== Télécharger l'archive ==

Sur la page de téléchargement du site officiel : http://www.truecrypt.org/downloads choisissez dans la partie « Linux » l'architecture de votre système.

Si vous ne la connaissez pas, la commande suivante vous la donnera :
 $ uname -r
Si le résultat se termine par 686 ou 486, téléchargez la version 32-bit ; si le résultat se termine par amd64, téléchargez la version 64-bit.

== Décompresser l'archive ==

=== Avec Gnome ===

un simple clic droit suivi de « Extraire ici » fera l'affaire.

=== En ligne de commande ===

 $ tar -xzvf truecrypt-*-linux-*.tar.gz

Vous vous retrouvez donc avec un fichier nommé truecrypt-7.1a-setup-x86 ou truecrypt-7.1a-setup-x64. (le 7.1a désigne la version et pourra différer)

== Installer les dépendances du programme ==

=== Avec sudo ===
Sur une Squeeze :
 $ sudo apt-get install libfuse2 fuse-utils libdevmapper1.02.1
Sur une Wheezy :
 $ sudo apt-get install libfuse2 fuse libdevmapper1.02.1

=== Dans un terminal administrateur ===
Sur une Squeeze :
 # apt-get install libfuse2 fuse-utils libdevmapper1.02.1
Sur une Wheezy :
 # apt-get install libfuse2 fuse libdevmapper1.02.1

== Installer le programme ==

Tout d'abord, ouvrez un terminal, puis glissez-y le fichier : son adresse sur le disque dur apparaît dans la console.

Exécutez le script avec Entrée.

« Install TrueCrypt »

« I accept and agree to be bound by the license terms »

Le script d'installation liste les dépendance, « OK », puis vous donne le script qui servira à désinstaller TrueCrypt (notez-le !), « OK »

Ici il vous sera demandé d'entrer votre mot de passe : administrateur dans une configuration avec un compte root, utilisateur dans une configuration sans compte root (avec sudo).

L'installation se déroule dans un terminal, puis vous demande d'appuyer sur Entrée pour se terminer

== Lancer le programme ==

L'exécutable se trouve à l'emplacement suivant : /usr/bin/truecrypt

Pour le lancer :
 truecrypt


--[[Utilisateur:Vv222|vv222]] 10 mai 2012 à 16:00 (CEST)

[https://www.debian-fr.org/installer-truecrypt-sous-squeeze-methode-pas-a-pas-t38687.html source]</text>
      <sha1>79tyxtt0fgr4q8r2udu6p2yn9yxcav5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5221</id>
      <parentid>5219</parentid>
      <timestamp>2013-05-28T07:36:00Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2942">Installation de TrueCrypt sur une Squeeze ou une Wheezy

Disponible gratuitement et en français, TrueCrypt est un utilitaire permettant de créer un disque dur virtuel crypté sur votre ordinateur, pour stocker vos informations confidentielles et personnelles (photos, vidéos, comptabilité, etc). Ainsi, personne n’y aura accès sans votre autorisation. ( http://www.pcastuces.com/logitheque/truecrypt.htm )

Il n'existe pas encore de paquet pour installer directement TrueCrypt sur une Squeeze/Wheezy.

Voici une méthode pas-à-pas pour l'installer depuis son site officiel.

{{Avertissement|texte='''Les utilisateurs doivent être dans sudoers pour utiliser truecrypt'''}}

 # visudo
 (...)
 Cmnd_Alias      CRYPT = /usr/bin/truecrypt
 utilisateur ALL=(root) NOPASSWD:CRYPT
 (...)

== Télécharger l'archive ==

Sur la page de téléchargement du site officiel : http://www.truecrypt.org/downloads choisissez dans la partie « Linux » l'architecture de votre système.

Si vous ne la connaissez pas, la commande suivante vous la donnera :
 $ uname -r
Si le résultat se termine par 686 ou 486, téléchargez la version 32-bit ; si le résultat se termine par amd64, téléchargez la version 64-bit.

== Décompresser l'archive ==

=== Avec Gnome ===

un simple clic droit suivi de « Extraire ici » fera l'affaire.

=== En ligne de commande ===

 $ tar -xzvf truecrypt-*-linux-*.tar.gz

Vous vous retrouvez donc avec un fichier nommé truecrypt-7.1a-setup-x86 ou truecrypt-7.1a-setup-x64. (le 7.1a désigne la version et pourra différer)

== Installer les dépendances du programme ==

=== Avec sudo ===
Sur une Squeeze :
 $ sudo apt-get install libfuse2 fuse-utils libdevmapper1.02.1
Sur une Wheezy :
 $ sudo apt-get install libfuse2 fuse libdevmapper1.02.1

=== Dans un terminal administrateur ===
Sur une Squeeze :
 # apt-get install libfuse2 fuse-utils libdevmapper1.02.1
Sur une Wheezy :
 # apt-get install libfuse2 fuse libdevmapper1.02.1

== Installer le programme ==

Tout d'abord, ouvrez un terminal, puis glissez-y le fichier : son adresse sur le disque dur apparaît dans la console.

Exécutez le script avec Entrée.

« Install TrueCrypt »

« I accept and agree to be bound by the license terms »

Le script d'installation liste les dépendance, « OK », puis vous donne le script qui servira à désinstaller TrueCrypt (notez-le !), « OK »

Ici il vous sera demandé d'entrer votre mot de passe : administrateur dans une configuration avec un compte root, utilisateur dans une configuration sans compte root (avec sudo).

L'installation se déroule dans un terminal, puis vous demande d'appuyer sur Entrée pour se terminer

== Lancer le programme ==

L'exécutable se trouve à l'emplacement suivant : /usr/bin/truecrypt

Pour le lancer :
 truecrypt


--[[Utilisateur:Vv222|vv222]] 10 mai 2012 à 16:00 (CEST)

[https://www.debian-fr.org/installer-truecrypt-sous-squeeze-methode-pas-a-pas-t38687.html source]</text>
      <sha1>98pg5af55x7ugwuqzfhzqze7tqmss0y</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5222</id>
      <parentid>5221</parentid>
      <timestamp>2013-05-28T19:43:52Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2978">Installation de TrueCrypt sur une Squeeze ou une Wheezy

Disponible gratuitement et en français, TrueCrypt est un utilitaire permettant de créer un disque dur virtuel crypté sur votre ordinateur, pour stocker vos informations confidentielles et personnelles (photos, vidéos, comptabilité, etc). Ainsi, personne n’y aura accès sans votre autorisation. 

Il n'existe pas encore de paquet pour installer directement TrueCrypt sur une Squeeze/Wheezy.

Voici une méthode pas-à-pas pour l'installer depuis son site officiel.

{{Avertissement|texte='''Les utilisateurs doivent être dans sudoers pour utiliser truecrypt'''}}

 # visudo
 (...)
 Cmnd_Alias      CRYPT = /usr/bin/truecrypt
 utilisateur ALL=(root) NOPASSWD:CRYPT
 (...)

== Télécharger l'archive ==

Sur la page de téléchargement du site officiel : http://www.truecrypt.org/downloads choisissez dans la partie « Linux » l'architecture de votre système.

Si vous ne la connaissez pas, la commande suivante vous la donnera :
 $ uname -r
Si le résultat se termine par 686 ou 486, téléchargez la version 32-bit ; si le résultat se termine par amd64, téléchargez la version 64-bit.

== Décompresser l'archive ==

=== Avec Gnome ===

un simple clic droit suivi de « Extraire ici » fera l'affaire.

=== En ligne de commande ===

 $ tar -xzvf truecrypt-*-linux-*.tar.gz

Vous vous retrouvez donc avec un fichier nommé truecrypt-7.1a-setup-x86 ou truecrypt-7.1a-setup-x64. (le 7.1a désigne la version et pourra différer)

== Installer les dépendances du programme ==

=== Avec sudo ===
Sur une Squeeze :
 $ sudo apt-get install libfuse2 fuse-utils libdevmapper1.02.1
Sur une Wheezy :
 $ sudo apt-get install libfuse2 fuse libdevmapper1.02.1

=== Dans un terminal administrateur ===
Sur une Squeeze :
 # apt-get install libfuse2 fuse-utils libdevmapper1.02.1
Sur une Wheezy :
 # apt-get install libfuse2 fuse libdevmapper1.02.1

== Installer le programme ==

Tout d'abord, ouvrez un terminal, puis glissez-y le fichier : son adresse sur le disque dur apparaît dans la console.

Exécutez le script avec Entrée.

« Install TrueCrypt »

« I accept and agree to be bound by the license terms »

Le script d'installation liste les dépendance, « OK », puis vous donne le script qui servira à désinstaller TrueCrypt (notez-le !), « OK »

Ici il vous sera demandé d'entrer votre mot de passe : administrateur dans une configuration avec un compte root, utilisateur dans une configuration sans compte root (avec sudo).

L'installation se déroule dans un terminal, puis vous demande d'appuyer sur Entrée pour se terminer

== Lancer le programme ==

L'exécutable se trouve à l'emplacement suivant : /usr/bin/truecrypt

Pour le lancer :
 truecrypt


--[[Utilisateur:Vv222|vv222]] 10 mai 2012 à 16:00 (CEST)

[https://www.debian-fr.org/installer-truecrypt-sous-squeeze-methode-pas-a-pas-t38687.html source : forum debian-fr]
[http://www.pcastuces.com/logitheque/truecrypt.htm source : PCastuces]</text>
      <sha1>9jmsbph3r3z6g8jizxsnfwpszjg02ph</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Installation d'un noyau Debian chez ovh.</title>
    <ns>0</ns>
    <id>1087</id>
    <revision>
      <id>4490</id>
      <timestamp>2012-09-19T10:24:51Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <comment>/* Publier */</comment>
      <text xml:space="preserve" bytes="7780">== Intérêts==


* Bénéficier d'un noyau stable et éprouver.

* Bénéficier des modules iptables, entre autre. ^¿^


== Prérequis==


* Préalablement, suivre [https://www.debian-fr.org/recompile-le-noyau-ovh-c-est-complique-t37924.html ce fil].

* Inutile de préciser qu'à ce stade, de part vos choix, vous êtes censé savoir ce que vous faite, non ?


=Choix du noyau=


* '''Mon choix''' est le suivant: 2.6.32-5-amd64


 :~# aptitude search linux-image
 
 ...
 
 p linux-image-2.6.32-5-amd64 - Linux 2.6.32 for 64-bit PCs
 
 ...


==Renommer le noyau ovh==


* Avant

 :~# ls /etc/grub.d/
 
 00_header 05_debian_theme 06_OVHkernel 10_linux 20_linux_xen 30_os-prober 40_custom 41_custom README
 
 :~#

* Après

 :~# mv /etc/grub.d/06_OVHkernel /etc/grub.d/11_OVHkernel


=Installation du noyau 2.6.32-5-amd64=


:~# aptitude install linux-image-2.6.32-5-amd64


==Mise à jour de grub==

 :~# grub-mkconfig
 
 Generating grub.cfg ...
 #
 # DO NOT EDIT THIS FILE
 #
 # It is automatically generated by grub-mkconfig using templates
 # from /etc/grub.d and settings from /etc/default/grub
 #
 ### BEGIN /etc/grub.d/00_header ###
 
 if [ -s $prefix/grubenv ]; then 
 load_env
 fi
 set default=&quot;0&quot;
 if [ &quot;${prev_saved_entry}&quot; ]; then
 set saved_entry=&quot;${prev_saved_entry}&quot;
 save_env saved_entry
 set prev_saved_entry=
 save_env prev_saved_entry
 set boot_once=true
 fi
 
 function savedefault {
 if [ -z &quot;${boot_once}&quot; ]; then
 saved_entry=&quot;${chosen}&quot;
 save_env saved_entry
 fi
 }
 
 function load_video {
 insmod vbe
 insmod vga
 insmod video_bochs
 insmod video_cirrus
 }
 
 insmod part_msdos
 insmod ext2
 set root='(hd0,msdos1)'
 search --no-floppy --fs-uuid --set xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
 if loadfont /usr/share/grub/unicode.pf2 ; then
 set gfxmode=640x480
 load_video
 insmod gfxterm
 fi
 terminal_output gfxterm
 insmod part_msdos
 insmod ext2
 set root='(hd0,msdos1)'
 search --no-floppy --fs-uuid --set xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
 set locale_dir=($root)/boot/grub/locale
 set lang=fr
 insmod gettext
 set timeout=5
 ### END /etc/grub.d/00_header ###
 
 ### BEGIN /etc/grub.d/05_debian_theme ###
 set menu_color_normal=cyan/blue
 set menu_color_highlight=white/blue
 ### END /etc/grub.d/05_debian_theme ###
 
 ### BEGIN /etc/grub.d/10_linux ###
 Found linux image: /boot/vmlinuz-2.6.32-5-amd64
 Found initrd image: /boot/initrd.img-2.6.32-5-amd64
 menuentry 'Debian GNU/Linux, avec Linux 2.6.32-5-amd64' --class debian --class gnu-linux --class gnu --class os {
 insmod part_msdos
 insmod ext2
 set root='(hd0,msdos1)'
 search --no-floppy --fs-uuid --set xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
 echo 'Chargement de Linux 2.6.32-5-amd64 ...'
 linux /boot/vmlinuz-2.6.32-5-amd64 root=/dev/sda1 ro quiet
 echo 'Chargement du disque mémoire initial ...'
 initrd /boot/initrd.img-2.6.32-5-amd64
 }
 menuentry 'Debian GNU/Linux, avec Linux 2.6.32-5-amd64 (mode de dépannage)' --class debian --class gnu-linux --class gnu --class
 os {
 insmod part_msdos
 insmod ext2
 set root='(hd0,msdos1)'
 search --no-floppy --fs-uuid --set xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
 echo 'Chargement de Linux 2.6.32-5-amd64 ...'
 linux /boot/vmlinuz-2.6.32-5-amd64 root=/dev/sda1 ro single
 echo 'Chargement du disque mémoire initial ...'
 initrd /boot/initrd.img-2.6.32-5-amd64
 }
 ### END /etc/grub.d/10_linux ###
 
 ### BEGIN /etc/grub.d/11_OVHkernel ###
 Warning: update-grub_lib is deprecated, use grub-mkconfig_lib instead
 Found linux image: /boot/bzImage-3.2.13-xxxx-grs-ipv6-64
 menuentry &quot;Debian GNU/Linux, OVH kernel 3.2.13-xxxx-grs-ipv6-64&quot; {
 insmod part_msdos
 insmod ext2
 set root='(hd0,msdos1)'
 search --no-floppy --fs-uuid --set xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
 linux /boot/bzImage-3.2.13-xxxx-grs-ipv6-64 root=/dev/sda1 ro quiet
 }
 ### END /etc/grub.d/11_OVHkernel ###
 
 ### BEGIN /etc/grub.d/20_linux_xen ###
 ### END /etc/grub.d/20_linux_xen ###
 
 ### BEGIN /etc/grub.d/30_os-prober ###
 No volume groups found
 ### END /etc/grub.d/30_os-prober ###
 
 ### BEGIN /etc/grub.d/40_custom ###
 # This file provides an easy way to add custom menu entries. Simply type the
 # menu entries you want to add after this comment. Be careful not to change
 # the 'exec tail' line above.
 ### END /etc/grub.d/40_custom ###
 
 ### BEGIN /etc/grub.d/41_custom ###
 if [ -f $prefix/custom.cfg ]; then
 source $prefix/custom.cfg;
 fi
 ### END /etc/grub.d/41_custom ###
 done
 :~#


 :~# update-grub2
 Generating grub.cfg ...
 Found linux image: /boot/vmlinuz-2.6.32-5-amd64
 Found initrd image: /boot/initrd.img-2.6.32-5-amd64
 Warning: update-grub_lib is deprecated, use grub-mkconfig_lib instead
 Found linux image: /boot/bzImage-3.2.13-xxxx-grs-ipv6-64
 No volume groups found
 done
  :~#

==Vérifications==


 :~# grep menuentry /boot/grub/grub.cfg
 menuentry 'Debian GNU/Linux, avec Linux 2.6.32-5-amd64' --class debian --class gnu-linux --class gnu --class os {
 menuentry 'Debian GNU/Linux, avec Linux 2.6.32-5-amd64 (mode de dépannage)' --class debian --class gnu-linux --class gnu --class os {
 menuentry &quot;Debian GNU/Linux, OVH kernel 3.2.13-xxxx-grs-ipv6-64&quot; {
 :~#

 :~# dd if=/dev/sda bs=512 count=1 | strings
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 0,000340238 s, 1,5 MB/s
 ZRr=
 `|f
 \|f1
 '''GRUB'''
 Geom
 Hard Disk
 Rea
 Error
 :~#

 :~# aptitude search 2.6.32-5-amd64
 ...
 i linux-image-2.6.32-5-amd64 - Linux 2.6.32 for 64-bit PCs
 ...
 :~#


==Terminé! Rebooter le serveur==

 :~# /sbin/reboot


* Ce qui donne après redémarrage:

 :~# uname -r
 2.6.32-5-amd64
 :~#

 :~# uname -a
 Linux yunohost 2.6.32-5-amd64 #1 SMP Sun May 6 04:00:17 UTC 2012 x86_64 GNU/Linux
 :~#

 :~# lsmod
 Module Size Used by
 xt_multiport 2267 11
 ip6table_filter 2384 1
 ip6_tables 15107 1 ip6table_filter
 xt_recent 5977 2
 ipt_REJECT 1953 1
 xt_tcpudp 2319 32
 ipt_LOG 4518 4
 xt_limit 1782 8
 nf_conntrack_ipv4 9833 5
 nf_defrag_ipv4 1139 1 nf_conntrack_ipv4
 xt_state 1303 5
 nf_conntrack 46535 2 nf_conntrack_ipv4,xt_state
 iptable_filter 2258 1
 ip_tables 13915 1 iptable_filter
 x_tables 12845 9 xt_multiport,ip6_tables,xt_recent,ipt_REJECT,xt_tcpudp,ipt_LOG,xt_limit,xt_state,ip_tables
 loop 11799 0
 snd_pcm 60487 0
 psmouse 49985 0
 snd_timer 15598 1 snd_pcm
 snd 46526 2 snd_pcm,snd_timer
 soundcore 4598 1 snd
 snd_page_alloc 6249 1 snd_pcm
 video 17445 0
 i2c_i801 7830 0
 parport_pc 18855 0
 i2c_core 15819 1 i2c_i801
 serio_raw 3752 0
 pcspkr 1699 0
 evdev 7352 3
 output 1692 1 video
 parport 27954 1 parport_pc
 button 4650 0
 processor 29935 0
 ext4 288382 2
 mbcache 5050 1 ext4
 jbd2 67111 1 ext4
 crc16 1319 1 ext4
 dm_mod 53946 0
 raid10 17809 0
 raid456 44516 0
 async_raid6_recov 5170 1 raid456
 async_pq 3479 2 raid456,async_raid6_recov
 raid6_pq 77179 2 async_raid6_recov,async_pq
 async_xor 2478 3 raid456,async_raid6_recov,async_pq
 xor 4380 1 async_xor
 async_memcpy 1198 2 raid456,async_raid6_recov
 async_tx 1734 5 raid456,async_raid6_recov,async_pq,async_xor,async_memcpy
 raid1 18431 0
 raid0 5517 0
 multipath 6059 0
 linear 3455 0
 md_mod 73920 6 raid10,raid456,raid1,raid0,multipath,linear
 btrfs 375821 0
 zlib_deflate 17746 1 btrfs
 crc32c 2560 1
 libcrc32c 1074 1 btrfs
 sd_mod 29937 4
 crc_t10dif 1276 1 sd_mod
 uhci_hcd 18521 0
 ahci 32870 3
 thermal 11674 0
 ehci_hcd 32097 0
 libata 133776 1 ahci
 e1000e 124836 0
 scsi_mod 126725 2 sd_mod,libata
 usbcore 123122 3 uhci_hcd,ehci_hcd
 nls_base 6377 1 usbcore
 thermal_sys 11942 3 video,processor,thermal
 :~#


Moment privilégié, moment partagé ... '''. ^¿^ .'''


[[Utilisateur:Loreleil|Loreleil]]


[[User:Loreleil|Debianneux-Autodidacte . ^¿^ . sur les chemins de la connaissance et du libre ...]] ([[User talk:Loreleil|talk]]) 10:49, 19 September 2012 (CEST)


[[Category:Grub]]
[[Category:Logiciels]]</text>
      <sha1>qxh496soh5a991we73pjr7wgq9pzly6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4491</id>
      <parentid>4490</parentid>
      <timestamp>2012-09-19T11:18:34Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Intérêts */</comment>
      <text xml:space="preserve" bytes="7780">== Intérêts==


* Bénéficier d'un noyau stable et éprouvé.

* Bénéficier des modules iptables, entre autres. ^¿^

== Prérequis==


* Préalablement, suivre [https://www.debian-fr.org/recompile-le-noyau-ovh-c-est-complique-t37924.html ce fil].

* Inutile de préciser qu'à ce stade, de part vos choix, vous êtes censé savoir ce que vous faite, non ?


=Choix du noyau=


* '''Mon choix''' est le suivant: 2.6.32-5-amd64


 :~# aptitude search linux-image
 
 ...
 
 p linux-image-2.6.32-5-amd64 - Linux 2.6.32 for 64-bit PCs
 
 ...


==Renommer le noyau ovh==


* Avant

 :~# ls /etc/grub.d/
 
 00_header 05_debian_theme 06_OVHkernel 10_linux 20_linux_xen 30_os-prober 40_custom 41_custom README
 
 :~#

* Après

 :~# mv /etc/grub.d/06_OVHkernel /etc/grub.d/11_OVHkernel


=Installation du noyau 2.6.32-5-amd64=


:~# aptitude install linux-image-2.6.32-5-amd64


==Mise à jour de grub==

 :~# grub-mkconfig
 
 Generating grub.cfg ...
 #
 # DO NOT EDIT THIS FILE
 #
 # It is automatically generated by grub-mkconfig using templates
 # from /etc/grub.d and settings from /etc/default/grub
 #
 ### BEGIN /etc/grub.d/00_header ###
 
 if [ -s $prefix/grubenv ]; then 
 load_env
 fi
 set default=&quot;0&quot;
 if [ &quot;${prev_saved_entry}&quot; ]; then
 set saved_entry=&quot;${prev_saved_entry}&quot;
 save_env saved_entry
 set prev_saved_entry=
 save_env prev_saved_entry
 set boot_once=true
 fi
 
 function savedefault {
 if [ -z &quot;${boot_once}&quot; ]; then
 saved_entry=&quot;${chosen}&quot;
 save_env saved_entry
 fi
 }
 
 function load_video {
 insmod vbe
 insmod vga
 insmod video_bochs
 insmod video_cirrus
 }
 
 insmod part_msdos
 insmod ext2
 set root='(hd0,msdos1)'
 search --no-floppy --fs-uuid --set xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
 if loadfont /usr/share/grub/unicode.pf2 ; then
 set gfxmode=640x480
 load_video
 insmod gfxterm
 fi
 terminal_output gfxterm
 insmod part_msdos
 insmod ext2
 set root='(hd0,msdos1)'
 search --no-floppy --fs-uuid --set xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
 set locale_dir=($root)/boot/grub/locale
 set lang=fr
 insmod gettext
 set timeout=5
 ### END /etc/grub.d/00_header ###
 
 ### BEGIN /etc/grub.d/05_debian_theme ###
 set menu_color_normal=cyan/blue
 set menu_color_highlight=white/blue
 ### END /etc/grub.d/05_debian_theme ###
 
 ### BEGIN /etc/grub.d/10_linux ###
 Found linux image: /boot/vmlinuz-2.6.32-5-amd64
 Found initrd image: /boot/initrd.img-2.6.32-5-amd64
 menuentry 'Debian GNU/Linux, avec Linux 2.6.32-5-amd64' --class debian --class gnu-linux --class gnu --class os {
 insmod part_msdos
 insmod ext2
 set root='(hd0,msdos1)'
 search --no-floppy --fs-uuid --set xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
 echo 'Chargement de Linux 2.6.32-5-amd64 ...'
 linux /boot/vmlinuz-2.6.32-5-amd64 root=/dev/sda1 ro quiet
 echo 'Chargement du disque mémoire initial ...'
 initrd /boot/initrd.img-2.6.32-5-amd64
 }
 menuentry 'Debian GNU/Linux, avec Linux 2.6.32-5-amd64 (mode de dépannage)' --class debian --class gnu-linux --class gnu --class
 os {
 insmod part_msdos
 insmod ext2
 set root='(hd0,msdos1)'
 search --no-floppy --fs-uuid --set xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
 echo 'Chargement de Linux 2.6.32-5-amd64 ...'
 linux /boot/vmlinuz-2.6.32-5-amd64 root=/dev/sda1 ro single
 echo 'Chargement du disque mémoire initial ...'
 initrd /boot/initrd.img-2.6.32-5-amd64
 }
 ### END /etc/grub.d/10_linux ###
 
 ### BEGIN /etc/grub.d/11_OVHkernel ###
 Warning: update-grub_lib is deprecated, use grub-mkconfig_lib instead
 Found linux image: /boot/bzImage-3.2.13-xxxx-grs-ipv6-64
 menuentry &quot;Debian GNU/Linux, OVH kernel 3.2.13-xxxx-grs-ipv6-64&quot; {
 insmod part_msdos
 insmod ext2
 set root='(hd0,msdos1)'
 search --no-floppy --fs-uuid --set xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
 linux /boot/bzImage-3.2.13-xxxx-grs-ipv6-64 root=/dev/sda1 ro quiet
 }
 ### END /etc/grub.d/11_OVHkernel ###
 
 ### BEGIN /etc/grub.d/20_linux_xen ###
 ### END /etc/grub.d/20_linux_xen ###
 
 ### BEGIN /etc/grub.d/30_os-prober ###
 No volume groups found
 ### END /etc/grub.d/30_os-prober ###
 
 ### BEGIN /etc/grub.d/40_custom ###
 # This file provides an easy way to add custom menu entries. Simply type the
 # menu entries you want to add after this comment. Be careful not to change
 # the 'exec tail' line above.
 ### END /etc/grub.d/40_custom ###
 
 ### BEGIN /etc/grub.d/41_custom ###
 if [ -f $prefix/custom.cfg ]; then
 source $prefix/custom.cfg;
 fi
 ### END /etc/grub.d/41_custom ###
 done
 :~#


 :~# update-grub2
 Generating grub.cfg ...
 Found linux image: /boot/vmlinuz-2.6.32-5-amd64
 Found initrd image: /boot/initrd.img-2.6.32-5-amd64
 Warning: update-grub_lib is deprecated, use grub-mkconfig_lib instead
 Found linux image: /boot/bzImage-3.2.13-xxxx-grs-ipv6-64
 No volume groups found
 done
  :~#

==Vérifications==


 :~# grep menuentry /boot/grub/grub.cfg
 menuentry 'Debian GNU/Linux, avec Linux 2.6.32-5-amd64' --class debian --class gnu-linux --class gnu --class os {
 menuentry 'Debian GNU/Linux, avec Linux 2.6.32-5-amd64 (mode de dépannage)' --class debian --class gnu-linux --class gnu --class os {
 menuentry &quot;Debian GNU/Linux, OVH kernel 3.2.13-xxxx-grs-ipv6-64&quot; {
 :~#

 :~# dd if=/dev/sda bs=512 count=1 | strings
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 0,000340238 s, 1,5 MB/s
 ZRr=
 `|f
 \|f1
 '''GRUB'''
 Geom
 Hard Disk
 Rea
 Error
 :~#

 :~# aptitude search 2.6.32-5-amd64
 ...
 i linux-image-2.6.32-5-amd64 - Linux 2.6.32 for 64-bit PCs
 ...
 :~#


==Terminé! Rebooter le serveur==

 :~# /sbin/reboot


* Ce qui donne après redémarrage:

 :~# uname -r
 2.6.32-5-amd64
 :~#

 :~# uname -a
 Linux yunohost 2.6.32-5-amd64 #1 SMP Sun May 6 04:00:17 UTC 2012 x86_64 GNU/Linux
 :~#

 :~# lsmod
 Module Size Used by
 xt_multiport 2267 11
 ip6table_filter 2384 1
 ip6_tables 15107 1 ip6table_filter
 xt_recent 5977 2
 ipt_REJECT 1953 1
 xt_tcpudp 2319 32
 ipt_LOG 4518 4
 xt_limit 1782 8
 nf_conntrack_ipv4 9833 5
 nf_defrag_ipv4 1139 1 nf_conntrack_ipv4
 xt_state 1303 5
 nf_conntrack 46535 2 nf_conntrack_ipv4,xt_state
 iptable_filter 2258 1
 ip_tables 13915 1 iptable_filter
 x_tables 12845 9 xt_multiport,ip6_tables,xt_recent,ipt_REJECT,xt_tcpudp,ipt_LOG,xt_limit,xt_state,ip_tables
 loop 11799 0
 snd_pcm 60487 0
 psmouse 49985 0
 snd_timer 15598 1 snd_pcm
 snd 46526 2 snd_pcm,snd_timer
 soundcore 4598 1 snd
 snd_page_alloc 6249 1 snd_pcm
 video 17445 0
 i2c_i801 7830 0
 parport_pc 18855 0
 i2c_core 15819 1 i2c_i801
 serio_raw 3752 0
 pcspkr 1699 0
 evdev 7352 3
 output 1692 1 video
 parport 27954 1 parport_pc
 button 4650 0
 processor 29935 0
 ext4 288382 2
 mbcache 5050 1 ext4
 jbd2 67111 1 ext4
 crc16 1319 1 ext4
 dm_mod 53946 0
 raid10 17809 0
 raid456 44516 0
 async_raid6_recov 5170 1 raid456
 async_pq 3479 2 raid456,async_raid6_recov
 raid6_pq 77179 2 async_raid6_recov,async_pq
 async_xor 2478 3 raid456,async_raid6_recov,async_pq
 xor 4380 1 async_xor
 async_memcpy 1198 2 raid456,async_raid6_recov
 async_tx 1734 5 raid456,async_raid6_recov,async_pq,async_xor,async_memcpy
 raid1 18431 0
 raid0 5517 0
 multipath 6059 0
 linear 3455 0
 md_mod 73920 6 raid10,raid456,raid1,raid0,multipath,linear
 btrfs 375821 0
 zlib_deflate 17746 1 btrfs
 crc32c 2560 1
 libcrc32c 1074 1 btrfs
 sd_mod 29937 4
 crc_t10dif 1276 1 sd_mod
 uhci_hcd 18521 0
 ahci 32870 3
 thermal 11674 0
 ehci_hcd 32097 0
 libata 133776 1 ahci
 e1000e 124836 0
 scsi_mod 126725 2 sd_mod,libata
 usbcore 123122 3 uhci_hcd,ehci_hcd
 nls_base 6377 1 usbcore
 thermal_sys 11942 3 video,processor,thermal
 :~#


Moment privilégié, moment partagé ... '''. ^¿^ .'''


[[Utilisateur:Loreleil|Loreleil]]


[[User:Loreleil|Debianneux-Autodidacte . ^¿^ . sur les chemins de la connaissance et du libre ...]] ([[User talk:Loreleil|talk]]) 10:49, 19 September 2012 (CEST)


[[Category:Grub]]
[[Category:Logiciels]]</text>
      <sha1>6xphwqanodni5w1lpbwd9c5ppb6o8ub</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4492</id>
      <parentid>4491</parentid>
      <timestamp>2012-09-19T11:19:30Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Prérequis */</comment>
      <text xml:space="preserve" bytes="7779">== Intérêts==


* Bénéficier d'un noyau stable et éprouvé.

* Bénéficier des modules iptables, entre autres. ^¿^

== Prérequis==


* Préalablement, suivre [https://www.debian-fr.org/recompile-le-noyau-ovh-c-est-complique-t37924.html ce fil].

* Inutile de préciser qu'à ce stade, de par vos choix, vous êtes censé savoir ce que vous faites, non ?

=Choix du noyau=


* '''Mon choix''' est le suivant: 2.6.32-5-amd64


 :~# aptitude search linux-image
 
 ...
 
 p linux-image-2.6.32-5-amd64 - Linux 2.6.32 for 64-bit PCs
 
 ...


==Renommer le noyau ovh==


* Avant

 :~# ls /etc/grub.d/
 
 00_header 05_debian_theme 06_OVHkernel 10_linux 20_linux_xen 30_os-prober 40_custom 41_custom README
 
 :~#

* Après

 :~# mv /etc/grub.d/06_OVHkernel /etc/grub.d/11_OVHkernel


=Installation du noyau 2.6.32-5-amd64=


:~# aptitude install linux-image-2.6.32-5-amd64


==Mise à jour de grub==

 :~# grub-mkconfig
 
 Generating grub.cfg ...
 #
 # DO NOT EDIT THIS FILE
 #
 # It is automatically generated by grub-mkconfig using templates
 # from /etc/grub.d and settings from /etc/default/grub
 #
 ### BEGIN /etc/grub.d/00_header ###
 
 if [ -s $prefix/grubenv ]; then 
 load_env
 fi
 set default=&quot;0&quot;
 if [ &quot;${prev_saved_entry}&quot; ]; then
 set saved_entry=&quot;${prev_saved_entry}&quot;
 save_env saved_entry
 set prev_saved_entry=
 save_env prev_saved_entry
 set boot_once=true
 fi
 
 function savedefault {
 if [ -z &quot;${boot_once}&quot; ]; then
 saved_entry=&quot;${chosen}&quot;
 save_env saved_entry
 fi
 }
 
 function load_video {
 insmod vbe
 insmod vga
 insmod video_bochs
 insmod video_cirrus
 }
 
 insmod part_msdos
 insmod ext2
 set root='(hd0,msdos1)'
 search --no-floppy --fs-uuid --set xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
 if loadfont /usr/share/grub/unicode.pf2 ; then
 set gfxmode=640x480
 load_video
 insmod gfxterm
 fi
 terminal_output gfxterm
 insmod part_msdos
 insmod ext2
 set root='(hd0,msdos1)'
 search --no-floppy --fs-uuid --set xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
 set locale_dir=($root)/boot/grub/locale
 set lang=fr
 insmod gettext
 set timeout=5
 ### END /etc/grub.d/00_header ###
 
 ### BEGIN /etc/grub.d/05_debian_theme ###
 set menu_color_normal=cyan/blue
 set menu_color_highlight=white/blue
 ### END /etc/grub.d/05_debian_theme ###
 
 ### BEGIN /etc/grub.d/10_linux ###
 Found linux image: /boot/vmlinuz-2.6.32-5-amd64
 Found initrd image: /boot/initrd.img-2.6.32-5-amd64
 menuentry 'Debian GNU/Linux, avec Linux 2.6.32-5-amd64' --class debian --class gnu-linux --class gnu --class os {
 insmod part_msdos
 insmod ext2
 set root='(hd0,msdos1)'
 search --no-floppy --fs-uuid --set xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
 echo 'Chargement de Linux 2.6.32-5-amd64 ...'
 linux /boot/vmlinuz-2.6.32-5-amd64 root=/dev/sda1 ro quiet
 echo 'Chargement du disque mémoire initial ...'
 initrd /boot/initrd.img-2.6.32-5-amd64
 }
 menuentry 'Debian GNU/Linux, avec Linux 2.6.32-5-amd64 (mode de dépannage)' --class debian --class gnu-linux --class gnu --class
 os {
 insmod part_msdos
 insmod ext2
 set root='(hd0,msdos1)'
 search --no-floppy --fs-uuid --set xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
 echo 'Chargement de Linux 2.6.32-5-amd64 ...'
 linux /boot/vmlinuz-2.6.32-5-amd64 root=/dev/sda1 ro single
 echo 'Chargement du disque mémoire initial ...'
 initrd /boot/initrd.img-2.6.32-5-amd64
 }
 ### END /etc/grub.d/10_linux ###
 
 ### BEGIN /etc/grub.d/11_OVHkernel ###
 Warning: update-grub_lib is deprecated, use grub-mkconfig_lib instead
 Found linux image: /boot/bzImage-3.2.13-xxxx-grs-ipv6-64
 menuentry &quot;Debian GNU/Linux, OVH kernel 3.2.13-xxxx-grs-ipv6-64&quot; {
 insmod part_msdos
 insmod ext2
 set root='(hd0,msdos1)'
 search --no-floppy --fs-uuid --set xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
 linux /boot/bzImage-3.2.13-xxxx-grs-ipv6-64 root=/dev/sda1 ro quiet
 }
 ### END /etc/grub.d/11_OVHkernel ###
 
 ### BEGIN /etc/grub.d/20_linux_xen ###
 ### END /etc/grub.d/20_linux_xen ###
 
 ### BEGIN /etc/grub.d/30_os-prober ###
 No volume groups found
 ### END /etc/grub.d/30_os-prober ###
 
 ### BEGIN /etc/grub.d/40_custom ###
 # This file provides an easy way to add custom menu entries. Simply type the
 # menu entries you want to add after this comment. Be careful not to change
 # the 'exec tail' line above.
 ### END /etc/grub.d/40_custom ###
 
 ### BEGIN /etc/grub.d/41_custom ###
 if [ -f $prefix/custom.cfg ]; then
 source $prefix/custom.cfg;
 fi
 ### END /etc/grub.d/41_custom ###
 done
 :~#


 :~# update-grub2
 Generating grub.cfg ...
 Found linux image: /boot/vmlinuz-2.6.32-5-amd64
 Found initrd image: /boot/initrd.img-2.6.32-5-amd64
 Warning: update-grub_lib is deprecated, use grub-mkconfig_lib instead
 Found linux image: /boot/bzImage-3.2.13-xxxx-grs-ipv6-64
 No volume groups found
 done
  :~#

==Vérifications==


 :~# grep menuentry /boot/grub/grub.cfg
 menuentry 'Debian GNU/Linux, avec Linux 2.6.32-5-amd64' --class debian --class gnu-linux --class gnu --class os {
 menuentry 'Debian GNU/Linux, avec Linux 2.6.32-5-amd64 (mode de dépannage)' --class debian --class gnu-linux --class gnu --class os {
 menuentry &quot;Debian GNU/Linux, OVH kernel 3.2.13-xxxx-grs-ipv6-64&quot; {
 :~#

 :~# dd if=/dev/sda bs=512 count=1 | strings
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 0,000340238 s, 1,5 MB/s
 ZRr=
 `|f
 \|f1
 '''GRUB'''
 Geom
 Hard Disk
 Rea
 Error
 :~#

 :~# aptitude search 2.6.32-5-amd64
 ...
 i linux-image-2.6.32-5-amd64 - Linux 2.6.32 for 64-bit PCs
 ...
 :~#


==Terminé! Rebooter le serveur==

 :~# /sbin/reboot


* Ce qui donne après redémarrage:

 :~# uname -r
 2.6.32-5-amd64
 :~#

 :~# uname -a
 Linux yunohost 2.6.32-5-amd64 #1 SMP Sun May 6 04:00:17 UTC 2012 x86_64 GNU/Linux
 :~#

 :~# lsmod
 Module Size Used by
 xt_multiport 2267 11
 ip6table_filter 2384 1
 ip6_tables 15107 1 ip6table_filter
 xt_recent 5977 2
 ipt_REJECT 1953 1
 xt_tcpudp 2319 32
 ipt_LOG 4518 4
 xt_limit 1782 8
 nf_conntrack_ipv4 9833 5
 nf_defrag_ipv4 1139 1 nf_conntrack_ipv4
 xt_state 1303 5
 nf_conntrack 46535 2 nf_conntrack_ipv4,xt_state
 iptable_filter 2258 1
 ip_tables 13915 1 iptable_filter
 x_tables 12845 9 xt_multiport,ip6_tables,xt_recent,ipt_REJECT,xt_tcpudp,ipt_LOG,xt_limit,xt_state,ip_tables
 loop 11799 0
 snd_pcm 60487 0
 psmouse 49985 0
 snd_timer 15598 1 snd_pcm
 snd 46526 2 snd_pcm,snd_timer
 soundcore 4598 1 snd
 snd_page_alloc 6249 1 snd_pcm
 video 17445 0
 i2c_i801 7830 0
 parport_pc 18855 0
 i2c_core 15819 1 i2c_i801
 serio_raw 3752 0
 pcspkr 1699 0
 evdev 7352 3
 output 1692 1 video
 parport 27954 1 parport_pc
 button 4650 0
 processor 29935 0
 ext4 288382 2
 mbcache 5050 1 ext4
 jbd2 67111 1 ext4
 crc16 1319 1 ext4
 dm_mod 53946 0
 raid10 17809 0
 raid456 44516 0
 async_raid6_recov 5170 1 raid456
 async_pq 3479 2 raid456,async_raid6_recov
 raid6_pq 77179 2 async_raid6_recov,async_pq
 async_xor 2478 3 raid456,async_raid6_recov,async_pq
 xor 4380 1 async_xor
 async_memcpy 1198 2 raid456,async_raid6_recov
 async_tx 1734 5 raid456,async_raid6_recov,async_pq,async_xor,async_memcpy
 raid1 18431 0
 raid0 5517 0
 multipath 6059 0
 linear 3455 0
 md_mod 73920 6 raid10,raid456,raid1,raid0,multipath,linear
 btrfs 375821 0
 zlib_deflate 17746 1 btrfs
 crc32c 2560 1
 libcrc32c 1074 1 btrfs
 sd_mod 29937 4
 crc_t10dif 1276 1 sd_mod
 uhci_hcd 18521 0
 ahci 32870 3
 thermal 11674 0
 ehci_hcd 32097 0
 libata 133776 1 ahci
 e1000e 124836 0
 scsi_mod 126725 2 sd_mod,libata
 usbcore 123122 3 uhci_hcd,ehci_hcd
 nls_base 6377 1 usbcore
 thermal_sys 11942 3 video,processor,thermal
 :~#


Moment privilégié, moment partagé ... '''. ^¿^ .'''


[[Utilisateur:Loreleil|Loreleil]]


[[User:Loreleil|Debianneux-Autodidacte . ^¿^ . sur les chemins de la connaissance et du libre ...]] ([[User talk:Loreleil|talk]]) 10:49, 19 September 2012 (CEST)


[[Category:Grub]]
[[Category:Logiciels]]</text>
      <sha1>rg4uymspls0imtgcevsmn1iv8josh1o</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Installation d'un serveur Pmb</title>
    <ns>0</ns>
    <id>1197</id>
    <revision>
      <id>4886</id>
      <timestamp>2013-01-18T07:20:46Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>Page créée avec « Dernière màj de la procédure en janvier 2013 sur la distribution **Debian Squeeze 6.0.6 stable** et le package **PMB4.0.2**  ====Préambule====  Cette documentation con... »</comment>
      <text xml:space="preserve" bytes="12807">Dernière màj de la procédure en janvier 2013 sur la distribution **Debian Squeeze 6.0.6 stable** et le package **PMB4.0.2**

====Préambule====

Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez des versions de Linux Debian dites __stable__.

Si vous avez choisi **Ubuntu** vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour pouvoir installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :

biblio@ServeurPMB:~$ sudo passwd root

Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.

Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :

root@ServeurPMB:~# aptitude install gedit

Dans ce cas, les lignes de code décrites dans cette doc sous la forme :

root@ServeurPMB:~# vi /dossier/fichier

devront être interprétées :

root@ServeurPMB:~# gedit /dossier/fichier

/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...

====Configurer les ressources Debian====

Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :

biblio@ServeurPMB:~$ su

Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50'' 

deb http:''ftp.indexdata.dk/debian squeeze main

profitez-en aussi pour intégrer les ressources debian.fr

deb http:''ftp.fr.debian.org/debian/ squeeze main

et commentez les autres dépots 

#deb http:''ftp.debian.org/debian/ squeeze main
#deb-src http:''ftp.debian.org/debian/ squeeze main

Enregistrer et quitter vi (touche esc puis :wq).
A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':

wget http:''ftp.indexdata.dk/debian/indexdata.asc

root@ServeurPMB:~# apt-key add indexdata.asc

Puis mettez à jour votre gestionnaire de packages

root@ServeurPMB:~# aptitude update

Les ressources officielles pour php-yaz :

http:''www.indexdata.dk
ftp:''ftp.indexdata.dk/pub/debian/dists

====Installation du serveur Apache====

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :

root@ServeurPMB:~#aptitude install apache2-mpm-prefork

Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :

root@ServeurPMB:~#vi /etc/apache2/apache2.conf

ajoutez la ligne :

ServerName 127.0.0.1

Enregistrer et quittez ''Vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :

http:''localhost/

ou

http:''adresseIPdevotreServeurPMB/

Une fenêtre ♫♪ It Works ! ♪♫ s'ouvre et vous informe que Apache fonctionne correctement .

====Installer MySQL5====

/!\ le package mysql-server-5.5 n'a pas été déclaré suffisamment stable pour être intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur MySQL avec la commande :

root@ServeurPMB:~#aptitude install mysql-server-5.1

Une fois les packages  installés, nous devons configurer un mot de passe pour le root MySQL, il est possible que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :

root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1

Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 
Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root MySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''serveur MySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 

root@ServeurPMB:~# vi /etc/mysql/my.cnf

et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 

max_allowed_packet = 250 M

250M devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mysql afin de prendre en compte ces nouveaux paramètres avec  : 

root@ServeurPMB:~# /etc/init.d/mysql restart

====Php5 et ses extensions====

Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.
/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.

root@ServeurPMB:~#aptitude install php5

Installez maintenant les extensions Php5:

root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl

Un message d'avertissement peut apparaitre :

&lt;nowiki&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/nowiki&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :

root@ServeurPMB:~# vi /etc/php5/apache2/php.ini

Rechercher et modifier les paramètres ci dessous en fonction de la base et augmenter considérablement le ''max_execution_time'' :

max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Redémarrez le serveur Apache :

root@ServeurPMB:~# /etc/init.d/apache2 restart

Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :

root@ServeurPMB:~# vi /var/www/phpinfo.php 

il doit contenir :

&lt;?php
phpinfo();
?&gt; 

Ensuite, lancez votre navigateur sur :

http:''localhost/phpinfo.php

ou

http:''adresseIPdevotreserveur/phpinfo.php

Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

====PhpMyAdmin====

PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).

root@ServeurPMB:~#aptitude install phpmyadmin

Puis tapez dans la barre d'adresse de votre navigateur :

root@ServeurPMB:~#localhost/phpmyadmin

L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root __mysql__ défini au chapitre : «  4-installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : http:''www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html

====Installation de PMB====

===a - L'archive PMB===
Téléchargez l'archive PMB depuis le site http:''www.pmbservices.fr sur votre bureau
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
biblio@ServeurPMB:~$ su
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :

root@ServeurPMB:~# cd /home/biblio/Bureau

Ensuite décompressez l'archive:

root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/

Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :

root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www

==Définir les droits d'accès à /var/www/pmb==
 
Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :

root@ServeurPMB:~# cd /var

On définit le propriétaire du répertoire /www :

root@ServeurPMB:~# chown -R www-data:www-data www

Déplacez vous dans le répertoire www :

root@ServeurPMB:~# cd www

On  définit les droits sur les fichiers :

root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;

On définit les droits sur les dossiers :

root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;

==Installation de la base Pmb==
 
Lancez votre navigateur sur l'adresse :

http:''localhost/pmb/tables/install.php

J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.
 	
''Paramètres Système.''

Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
	   
Serveur : localhost

Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.

''Paramètres PMB par défaut''

Utilisateur : bibli

Base : bibli	 

''Données PMB''
	
Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http:''localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.


=====Configuration post-install=====


Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 

root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php

chercher les lignes : 

&lt;nowiki&gt;$expl['section']    = $info_995[$nb_expl]['q']; à chercher dans docs_section
		$data_doc=array();
		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);
		if (!$info_995[$nb_expl]['q']) 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;
		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];
		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;
		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;
			else $data_doc['sdoc_owner'] = 0 ;
		$expl['section'] = docs_section::import($data_doc);&lt;/nowiki&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;</text>
      <sha1>3ucymugns51vaivg7ouwvnxpba943cb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4887</id>
      <parentid>4886</parentid>
      <timestamp>2013-01-18T07:22:15Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* a - L'archive PMB */</comment>
      <text xml:space="preserve" bytes="12803">Dernière màj de la procédure en janvier 2013 sur la distribution **Debian Squeeze 6.0.6 stable** et le package **PMB4.0.2**

====Préambule====

Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez des versions de Linux Debian dites __stable__.

Si vous avez choisi **Ubuntu** vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour pouvoir installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :

biblio@ServeurPMB:~$ sudo passwd root

Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.

Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :

root@ServeurPMB:~# aptitude install gedit

Dans ce cas, les lignes de code décrites dans cette doc sous la forme :

root@ServeurPMB:~# vi /dossier/fichier

devront être interprétées :

root@ServeurPMB:~# gedit /dossier/fichier

/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...

====Configurer les ressources Debian====

Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :

biblio@ServeurPMB:~$ su

Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50'' 

deb http:''ftp.indexdata.dk/debian squeeze main

profitez-en aussi pour intégrer les ressources debian.fr

deb http:''ftp.fr.debian.org/debian/ squeeze main

et commentez les autres dépots 

#deb http:''ftp.debian.org/debian/ squeeze main
#deb-src http:''ftp.debian.org/debian/ squeeze main

Enregistrer et quitter vi (touche esc puis :wq).
A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':

wget http:''ftp.indexdata.dk/debian/indexdata.asc

root@ServeurPMB:~# apt-key add indexdata.asc

Puis mettez à jour votre gestionnaire de packages

root@ServeurPMB:~# aptitude update

Les ressources officielles pour php-yaz :

http:''www.indexdata.dk
ftp:''ftp.indexdata.dk/pub/debian/dists

====Installation du serveur Apache====

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :

root@ServeurPMB:~#aptitude install apache2-mpm-prefork

Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :

root@ServeurPMB:~#vi /etc/apache2/apache2.conf

ajoutez la ligne :

ServerName 127.0.0.1

Enregistrer et quittez ''Vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :

http:''localhost/

ou

http:''adresseIPdevotreServeurPMB/

Une fenêtre ♫♪ It Works ! ♪♫ s'ouvre et vous informe que Apache fonctionne correctement .

====Installer MySQL5====

/!\ le package mysql-server-5.5 n'a pas été déclaré suffisamment stable pour être intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur MySQL avec la commande :

root@ServeurPMB:~#aptitude install mysql-server-5.1

Une fois les packages  installés, nous devons configurer un mot de passe pour le root MySQL, il est possible que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :

root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1

Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 
Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root MySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''serveur MySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 

root@ServeurPMB:~# vi /etc/mysql/my.cnf

et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 

max_allowed_packet = 250 M

250M devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mysql afin de prendre en compte ces nouveaux paramètres avec  : 

root@ServeurPMB:~# /etc/init.d/mysql restart

====Php5 et ses extensions====

Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.
/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.

root@ServeurPMB:~#aptitude install php5

Installez maintenant les extensions Php5:

root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl

Un message d'avertissement peut apparaitre :

&lt;nowiki&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/nowiki&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :

root@ServeurPMB:~# vi /etc/php5/apache2/php.ini

Rechercher et modifier les paramètres ci dessous en fonction de la base et augmenter considérablement le ''max_execution_time'' :

max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Redémarrez le serveur Apache :

root@ServeurPMB:~# /etc/init.d/apache2 restart

Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :

root@ServeurPMB:~# vi /var/www/phpinfo.php 

il doit contenir :

&lt;?php
phpinfo();
?&gt; 

Ensuite, lancez votre navigateur sur :

http:''localhost/phpinfo.php

ou

http:''adresseIPdevotreserveur/phpinfo.php

Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

====PhpMyAdmin====

PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).

root@ServeurPMB:~#aptitude install phpmyadmin

Puis tapez dans la barre d'adresse de votre navigateur :

root@ServeurPMB:~#localhost/phpmyadmin

L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root __mysql__ défini au chapitre : «  4-installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : http:''www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html

====Installation de PMB====

===L'archive PMB===
Téléchargez l'archive PMB depuis le site http:''www.pmbservices.fr sur votre bureau
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
biblio@ServeurPMB:~$ su
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :

root@ServeurPMB:~# cd /home/biblio/Bureau

Ensuite décompressez l'archive:

root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/

Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :

root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www

==Définir les droits d'accès à /var/www/pmb==
 
Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :

root@ServeurPMB:~# cd /var

On définit le propriétaire du répertoire /www :

root@ServeurPMB:~# chown -R www-data:www-data www

Déplacez vous dans le répertoire www :

root@ServeurPMB:~# cd www

On  définit les droits sur les fichiers :

root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;

On définit les droits sur les dossiers :

root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;

==Installation de la base Pmb==
 
Lancez votre navigateur sur l'adresse :

http:''localhost/pmb/tables/install.php

J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.
 	
''Paramètres Système.''

Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
	   
Serveur : localhost

Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.

''Paramètres PMB par défaut''

Utilisateur : bibli

Base : bibli	 

''Données PMB''
	
Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http:''localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.


=====Configuration post-install=====


Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 

root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php

chercher les lignes : 

&lt;nowiki&gt;$expl['section']    = $info_995[$nb_expl]['q']; à chercher dans docs_section
		$data_doc=array();
		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);
		if (!$info_995[$nb_expl]['q']) 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;
		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];
		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;
		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;
			else $data_doc['sdoc_owner'] = 0 ;
		$expl['section'] = docs_section::import($data_doc);&lt;/nowiki&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;</text>
      <sha1>lj4ie3vfhncba97njua0yehw6o398vn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4888</id>
      <parentid>4887</parentid>
      <timestamp>2013-01-18T07:30:12Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Configuration post-install */</comment>
      <text xml:space="preserve" bytes="12861">Dernière màj de la procédure en janvier 2013 sur la distribution **Debian Squeeze 6.0.6 stable** et le package **PMB4.0.2**

====Préambule====

Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez des versions de Linux Debian dites __stable__.

Si vous avez choisi **Ubuntu** vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour pouvoir installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :

biblio@ServeurPMB:~$ sudo passwd root

Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.

Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :

root@ServeurPMB:~# aptitude install gedit

Dans ce cas, les lignes de code décrites dans cette doc sous la forme :

root@ServeurPMB:~# vi /dossier/fichier

devront être interprétées :

root@ServeurPMB:~# gedit /dossier/fichier

/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...

====Configurer les ressources Debian====

Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :

biblio@ServeurPMB:~$ su

Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50'' 

deb http:''ftp.indexdata.dk/debian squeeze main

profitez-en aussi pour intégrer les ressources debian.fr

deb http:''ftp.fr.debian.org/debian/ squeeze main

et commentez les autres dépots 

#deb http:''ftp.debian.org/debian/ squeeze main
#deb-src http:''ftp.debian.org/debian/ squeeze main

Enregistrer et quitter vi (touche esc puis :wq).
A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':

wget http:''ftp.indexdata.dk/debian/indexdata.asc

root@ServeurPMB:~# apt-key add indexdata.asc

Puis mettez à jour votre gestionnaire de packages

root@ServeurPMB:~# aptitude update

Les ressources officielles pour php-yaz :

http:''www.indexdata.dk
ftp:''ftp.indexdata.dk/pub/debian/dists

====Installation du serveur Apache====

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :

root@ServeurPMB:~#aptitude install apache2-mpm-prefork

Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :

root@ServeurPMB:~#vi /etc/apache2/apache2.conf

ajoutez la ligne :

ServerName 127.0.0.1

Enregistrer et quittez ''Vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :

http:''localhost/

ou

http:''adresseIPdevotreServeurPMB/

Une fenêtre ♫♪ It Works ! ♪♫ s'ouvre et vous informe que Apache fonctionne correctement .

====Installer MySQL5====

/!\ le package mysql-server-5.5 n'a pas été déclaré suffisamment stable pour être intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur MySQL avec la commande :

root@ServeurPMB:~#aptitude install mysql-server-5.1

Une fois les packages  installés, nous devons configurer un mot de passe pour le root MySQL, il est possible que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :

root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1

Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 
Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root MySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''serveur MySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 

root@ServeurPMB:~# vi /etc/mysql/my.cnf

et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 

max_allowed_packet = 250 M

250M devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mysql afin de prendre en compte ces nouveaux paramètres avec  : 

root@ServeurPMB:~# /etc/init.d/mysql restart

====Php5 et ses extensions====

Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.
/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.

root@ServeurPMB:~#aptitude install php5

Installez maintenant les extensions Php5:

root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl

Un message d'avertissement peut apparaitre :

&lt;nowiki&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/nowiki&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :

root@ServeurPMB:~# vi /etc/php5/apache2/php.ini

Rechercher et modifier les paramètres ci dessous en fonction de la base et augmenter considérablement le ''max_execution_time'' :

max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Redémarrez le serveur Apache :

root@ServeurPMB:~# /etc/init.d/apache2 restart

Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :

root@ServeurPMB:~# vi /var/www/phpinfo.php 

il doit contenir :

&lt;?php
phpinfo();
?&gt; 

Ensuite, lancez votre navigateur sur :

http:''localhost/phpinfo.php

ou

http:''adresseIPdevotreserveur/phpinfo.php

Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

====PhpMyAdmin====

PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).

root@ServeurPMB:~#aptitude install phpmyadmin

Puis tapez dans la barre d'adresse de votre navigateur :

root@ServeurPMB:~#localhost/phpmyadmin

L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root __mysql__ défini au chapitre : «  4-installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : http:''www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html

====Installation de PMB====

=====L'archive PMB=====
Téléchargez l'archive PMB depuis le site http:''www.pmbservices.fr sur votre bureau
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
biblio@ServeurPMB:~$ su
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :

root@ServeurPMB:~# cd /home/biblio/Bureau

Ensuite décompressez l'archive:

root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/

Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :

root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www

=====Définir les droits d'accès à /var/www/pmb=====
 
Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :

root@ServeurPMB:~# cd /var

On définit le propriétaire du répertoire /www :

root@ServeurPMB:~# chown -R www-data:www-data www

Déplacez vous dans le répertoire www :

root@ServeurPMB:~# cd www

On  définit les droits sur les fichiers :

root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;

On définit les droits sur les dossiers :

root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;

=====Installation de la base Pmb=====
 
Lancez votre navigateur sur l'adresse :

http:''localhost/pmb/tables/install.php

J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.
 	
''Paramètres Système.''

Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
	   
Serveur : localhost

Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.

''Paramètres PMB par défaut''

Utilisateur : bibli

Base : bibli	 

''Données PMB''
	
Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http:''localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.


====Configuration post-install====

=====Scripts d'import Unimarc=====

Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 

root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php

chercher les lignes : 

&lt;nowiki&gt;$expl['section']    = $info_995[$nb_expl]['q']; à chercher dans docs_section

		$data_doc=array();

		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);

		if (!$info_995[$nb_expl]['q'])
 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;

		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];

		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;

		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;

			else $data_doc['sdoc_owner'] = 0 ;

		$expl['section'] = docs_section::import($data_doc);&lt;/nowiki&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;</text>
      <sha1>01p9m2o6k3aeil466bgr5x4boifs3ob</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4889</id>
      <parentid>4888</parentid>
      <timestamp>2013-01-18T07:32:54Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Scripts d'import Unimarc */</comment>
      <text xml:space="preserve" bytes="12867">Dernière màj de la procédure en janvier 2013 sur la distribution **Debian Squeeze 6.0.6 stable** et le package **PMB4.0.2**

====Préambule====

Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez des versions de Linux Debian dites __stable__.

Si vous avez choisi **Ubuntu** vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour pouvoir installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :

biblio@ServeurPMB:~$ sudo passwd root

Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.

Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :

root@ServeurPMB:~# aptitude install gedit

Dans ce cas, les lignes de code décrites dans cette doc sous la forme :

root@ServeurPMB:~# vi /dossier/fichier

devront être interprétées :

root@ServeurPMB:~# gedit /dossier/fichier

/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...

====Configurer les ressources Debian====

Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :

biblio@ServeurPMB:~$ su

Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50'' 

deb http:''ftp.indexdata.dk/debian squeeze main

profitez-en aussi pour intégrer les ressources debian.fr

deb http:''ftp.fr.debian.org/debian/ squeeze main

et commentez les autres dépots 

#deb http:''ftp.debian.org/debian/ squeeze main
#deb-src http:''ftp.debian.org/debian/ squeeze main

Enregistrer et quitter vi (touche esc puis :wq).
A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':

wget http:''ftp.indexdata.dk/debian/indexdata.asc

root@ServeurPMB:~# apt-key add indexdata.asc

Puis mettez à jour votre gestionnaire de packages

root@ServeurPMB:~# aptitude update

Les ressources officielles pour php-yaz :

http:''www.indexdata.dk
ftp:''ftp.indexdata.dk/pub/debian/dists

====Installation du serveur Apache====

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :

root@ServeurPMB:~#aptitude install apache2-mpm-prefork

Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :

root@ServeurPMB:~#vi /etc/apache2/apache2.conf

ajoutez la ligne :

ServerName 127.0.0.1

Enregistrer et quittez ''Vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :

http:''localhost/

ou

http:''adresseIPdevotreServeurPMB/

Une fenêtre ♫♪ It Works ! ♪♫ s'ouvre et vous informe que Apache fonctionne correctement .

====Installer MySQL5====

/!\ le package mysql-server-5.5 n'a pas été déclaré suffisamment stable pour être intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur MySQL avec la commande :

root@ServeurPMB:~#aptitude install mysql-server-5.1

Une fois les packages  installés, nous devons configurer un mot de passe pour le root MySQL, il est possible que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :

root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1

Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 
Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root MySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''serveur MySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 

root@ServeurPMB:~# vi /etc/mysql/my.cnf

et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 

max_allowed_packet = 250 M

250M devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mysql afin de prendre en compte ces nouveaux paramètres avec  : 

root@ServeurPMB:~# /etc/init.d/mysql restart

====Php5 et ses extensions====

Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.
/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.

root@ServeurPMB:~#aptitude install php5

Installez maintenant les extensions Php5:

root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl

Un message d'avertissement peut apparaitre :

&lt;nowiki&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/nowiki&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :

root@ServeurPMB:~# vi /etc/php5/apache2/php.ini

Rechercher et modifier les paramètres ci dessous en fonction de la base et augmenter considérablement le ''max_execution_time'' :

max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Redémarrez le serveur Apache :

root@ServeurPMB:~# /etc/init.d/apache2 restart

Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :

root@ServeurPMB:~# vi /var/www/phpinfo.php 

il doit contenir :

&lt;?php
phpinfo();
?&gt; 

Ensuite, lancez votre navigateur sur :

http:''localhost/phpinfo.php

ou

http:''adresseIPdevotreserveur/phpinfo.php

Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

====PhpMyAdmin====

PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).

root@ServeurPMB:~#aptitude install phpmyadmin

Puis tapez dans la barre d'adresse de votre navigateur :

root@ServeurPMB:~#localhost/phpmyadmin

L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root __mysql__ défini au chapitre : «  4-installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : http:''www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html

====Installation de PMB====

=====L'archive PMB=====
Téléchargez l'archive PMB depuis le site http:''www.pmbservices.fr sur votre bureau
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
biblio@ServeurPMB:~$ su
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :

root@ServeurPMB:~# cd /home/biblio/Bureau

Ensuite décompressez l'archive:

root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/

Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :

root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www

=====Définir les droits d'accès à /var/www/pmb=====
 
Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :

root@ServeurPMB:~# cd /var

On définit le propriétaire du répertoire /www :

root@ServeurPMB:~# chown -R www-data:www-data www

Déplacez vous dans le répertoire www :

root@ServeurPMB:~# cd www

On  définit les droits sur les fichiers :

root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;

On définit les droits sur les dossiers :

root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;

=====Installation de la base Pmb=====
 
Lancez votre navigateur sur l'adresse :

http:''localhost/pmb/tables/install.php

J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.
 	
''Paramètres Système.''

Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
	   
Serveur : localhost

Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.

''Paramètres PMB par défaut''

Utilisateur : bibli

Base : bibli	 

''Données PMB''
	
Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http:''localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.


====Configuration post-install====

=====Scripts d'import Unimarc=====

Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 

root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php

chercher le bloc de lignes : 

&lt;nowiki&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section

		$data_doc=array();

		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);

		if (!$info_995[$nb_expl]['q'])
 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;

		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];

		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;

		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;

			else $data_doc['sdoc_owner'] = 0 ;

		$expl['section'] = docs_section::import($data_doc);&lt;/nowiki&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;</text>
      <sha1>48sp37vfwivaqdb3wbxzquw3kne3rhd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4890</id>
      <parentid>4889</parentid>
      <timestamp>2013-01-18T07:50:31Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Scripts d'import Unimarc */</comment>
      <text xml:space="preserve" bytes="15817">Dernière màj de la procédure en janvier 2013 sur la distribution **Debian Squeeze 6.0.6 stable** et le package **PMB4.0.2**

====Préambule====

Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez des versions de Linux Debian dites __stable__.

Si vous avez choisi **Ubuntu** vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour pouvoir installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :

biblio@ServeurPMB:~$ sudo passwd root

Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.

Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :

root@ServeurPMB:~# aptitude install gedit

Dans ce cas, les lignes de code décrites dans cette doc sous la forme :

root@ServeurPMB:~# vi /dossier/fichier

devront être interprétées :

root@ServeurPMB:~# gedit /dossier/fichier

/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...

====Configurer les ressources Debian====

Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :

biblio@ServeurPMB:~$ su

Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50'' 

deb http:''ftp.indexdata.dk/debian squeeze main

profitez-en aussi pour intégrer les ressources debian.fr

deb http:''ftp.fr.debian.org/debian/ squeeze main

et commentez les autres dépots 

#deb http:''ftp.debian.org/debian/ squeeze main
#deb-src http:''ftp.debian.org/debian/ squeeze main

Enregistrer et quitter vi (touche esc puis :wq).
A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':

wget http:''ftp.indexdata.dk/debian/indexdata.asc

root@ServeurPMB:~# apt-key add indexdata.asc

Puis mettez à jour votre gestionnaire de packages

root@ServeurPMB:~# aptitude update

Les ressources officielles pour php-yaz :

http:''www.indexdata.dk
ftp:''ftp.indexdata.dk/pub/debian/dists

====Installation du serveur Apache====

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :

root@ServeurPMB:~#aptitude install apache2-mpm-prefork

Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :

root@ServeurPMB:~#vi /etc/apache2/apache2.conf

ajoutez la ligne :

ServerName 127.0.0.1

Enregistrer et quittez ''Vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :

http:''localhost/

ou

http:''adresseIPdevotreServeurPMB/

Une fenêtre ♫♪ It Works ! ♪♫ s'ouvre et vous informe que Apache fonctionne correctement .

====Installer MySQL5====

/!\ le package mysql-server-5.5 n'a pas été déclaré suffisamment stable pour être intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur MySQL avec la commande :

root@ServeurPMB:~#aptitude install mysql-server-5.1

Une fois les packages  installés, nous devons configurer un mot de passe pour le root MySQL, il est possible que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :

root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1

Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 
Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root MySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''serveur MySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 

root@ServeurPMB:~# vi /etc/mysql/my.cnf

et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 

max_allowed_packet = 250 M

250M devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mysql afin de prendre en compte ces nouveaux paramètres avec  : 

root@ServeurPMB:~# /etc/init.d/mysql restart

====Php5 et ses extensions====

Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.
/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.

root@ServeurPMB:~#aptitude install php5

Installez maintenant les extensions Php5:

root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl

Un message d'avertissement peut apparaitre :

&lt;nowiki&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/nowiki&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :

root@ServeurPMB:~# vi /etc/php5/apache2/php.ini

Rechercher et modifier les paramètres ci dessous en fonction de la base et augmenter considérablement le ''max_execution_time'' :

max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Redémarrez le serveur Apache :

root@ServeurPMB:~# /etc/init.d/apache2 restart

Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :

root@ServeurPMB:~# vi /var/www/phpinfo.php 

il doit contenir :

&lt;?php
phpinfo();
?&gt; 

Ensuite, lancez votre navigateur sur :

http:''localhost/phpinfo.php

ou

http:''adresseIPdevotreserveur/phpinfo.php

Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

====PhpMyAdmin====

PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).

root@ServeurPMB:~#aptitude install phpmyadmin

Puis tapez dans la barre d'adresse de votre navigateur :

root@ServeurPMB:~#localhost/phpmyadmin

L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root __mysql__ défini au chapitre : «  4-installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : http:''www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html

====Installation de PMB====

=====L'archive PMB=====
Téléchargez l'archive PMB depuis le site http:''www.pmbservices.fr sur votre bureau
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
biblio@ServeurPMB:~$ su
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :

root@ServeurPMB:~# cd /home/biblio/Bureau

Ensuite décompressez l'archive:

root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/

Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :

root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www

=====Définir les droits d'accès à /var/www/pmb=====
 
Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :

root@ServeurPMB:~# cd /var

On définit le propriétaire du répertoire /www :

root@ServeurPMB:~# chown -R www-data:www-data www

Déplacez vous dans le répertoire www :

root@ServeurPMB:~# cd www

On  définit les droits sur les fichiers :

root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;

On définit les droits sur les dossiers :

root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;

=====Installation de la base Pmb=====
 
Lancez votre navigateur sur l'adresse :

http:''localhost/pmb/tables/install.php

J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.
 	
''Paramètres Système.''

Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
	   
Serveur : localhost

Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.

''Paramètres PMB par défaut''

Utilisateur : bibli

Base : bibli	 

''Données PMB''
	
Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http:''localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.


====Configuration post-install====

=====Scripts d'import Unimarc=====

Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 

root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php

chercher le bloc de lignes : 

&lt;nowiki&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section

		$data_doc=array();

		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);

		if (!$info_995[$nb_expl]['q'])
 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;

		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];

		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;

		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;

			else $data_doc['sdoc_owner'] = 0 ;

		$expl['section'] = docs_section::import($data_doc);&lt;/nowiki&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

=====Sauvegarde automatisée=====

Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.

Créer le fichier sauvegarde.sh avec n'importe quel editeur de texte : 

! /bin/bash

# Script de sauvegarde avec possibilité de rollback sur 10 jours 
# Ce script éteint le serveur à la fin de la sauvegarde 

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

echo &quot;Sauvegarde terminée&quot; &gt;&gt; /root/sauvegarde.log

shutdown - h now

Rendez ce script executable et coller le dans /root :

Root@ServeurPmb:~# chmod u+x sauvegarde.sh

Editez la crontab

root@serveurPMB:~# vi /etc/crontab

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )


et ajoutez la ligne 

30 17 * * * root /root/sauvegarde.sh

pour une sauvegarde quotidienne à 17h30

COMMANDES POUR RESTAURER LA BASE : 
d'abord creer une base vide :

ServeurPmb:~# mysql -u root -p password

mysql&gt; create database BASE;

mysql&gt; exit

puis on restaure :

ServeurPmb:~# mysql -u root -pMOTDEPASSE BASE &lt; /save/sauvegarde.sql</text>
      <sha1>51cy99bim7abjcc1gd5egwgklgelpnx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4891</id>
      <parentid>4890</parentid>
      <timestamp>2013-01-18T07:53:31Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Sauvegarde automatisée */</comment>
      <text xml:space="preserve" bytes="15792">Dernière màj de la procédure en janvier 2013 sur la distribution **Debian Squeeze 6.0.6 stable** et le package **PMB4.0.2**

====Préambule====

Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez des versions de Linux Debian dites __stable__.

Si vous avez choisi **Ubuntu** vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour pouvoir installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :

biblio@ServeurPMB:~$ sudo passwd root

Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.

Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :

root@ServeurPMB:~# aptitude install gedit

Dans ce cas, les lignes de code décrites dans cette doc sous la forme :

root@ServeurPMB:~# vi /dossier/fichier

devront être interprétées :

root@ServeurPMB:~# gedit /dossier/fichier

/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...

====Configurer les ressources Debian====

Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :

biblio@ServeurPMB:~$ su

Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50'' 

deb http:''ftp.indexdata.dk/debian squeeze main

profitez-en aussi pour intégrer les ressources debian.fr

deb http:''ftp.fr.debian.org/debian/ squeeze main

et commentez les autres dépots 

#deb http:''ftp.debian.org/debian/ squeeze main
#deb-src http:''ftp.debian.org/debian/ squeeze main

Enregistrer et quitter vi (touche esc puis :wq).
A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':

wget http:''ftp.indexdata.dk/debian/indexdata.asc

root@ServeurPMB:~# apt-key add indexdata.asc

Puis mettez à jour votre gestionnaire de packages

root@ServeurPMB:~# aptitude update

Les ressources officielles pour php-yaz :

http:''www.indexdata.dk
ftp:''ftp.indexdata.dk/pub/debian/dists

====Installation du serveur Apache====

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :

root@ServeurPMB:~#aptitude install apache2-mpm-prefork

Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :

root@ServeurPMB:~#vi /etc/apache2/apache2.conf

ajoutez la ligne :

ServerName 127.0.0.1

Enregistrer et quittez ''Vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :

http:''localhost/

ou

http:''adresseIPdevotreServeurPMB/

Une fenêtre ♫♪ It Works ! ♪♫ s'ouvre et vous informe que Apache fonctionne correctement .

====Installer MySQL5====

/!\ le package mysql-server-5.5 n'a pas été déclaré suffisamment stable pour être intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur MySQL avec la commande :

root@ServeurPMB:~#aptitude install mysql-server-5.1

Une fois les packages  installés, nous devons configurer un mot de passe pour le root MySQL, il est possible que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :

root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1

Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 
Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root MySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''serveur MySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 

root@ServeurPMB:~# vi /etc/mysql/my.cnf

et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 

max_allowed_packet = 250 M

250M devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mysql afin de prendre en compte ces nouveaux paramètres avec  : 

root@ServeurPMB:~# /etc/init.d/mysql restart

====Php5 et ses extensions====

Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.
/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.

root@ServeurPMB:~#aptitude install php5

Installez maintenant les extensions Php5:

root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl

Un message d'avertissement peut apparaitre :

&lt;nowiki&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/nowiki&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :

root@ServeurPMB:~# vi /etc/php5/apache2/php.ini

Rechercher et modifier les paramètres ci dessous en fonction de la base et augmenter considérablement le ''max_execution_time'' :

max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Redémarrez le serveur Apache :

root@ServeurPMB:~# /etc/init.d/apache2 restart

Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :

root@ServeurPMB:~# vi /var/www/phpinfo.php 

il doit contenir :

&lt;?php
phpinfo();
?&gt; 

Ensuite, lancez votre navigateur sur :

http:''localhost/phpinfo.php

ou

http:''adresseIPdevotreserveur/phpinfo.php

Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

====PhpMyAdmin====

PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).

root@ServeurPMB:~#aptitude install phpmyadmin

Puis tapez dans la barre d'adresse de votre navigateur :

root@ServeurPMB:~#localhost/phpmyadmin

L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root __mysql__ défini au chapitre : «  4-installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : http:''www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html

====Installation de PMB====

=====L'archive PMB=====
Téléchargez l'archive PMB depuis le site http:''www.pmbservices.fr sur votre bureau
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
biblio@ServeurPMB:~$ su
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :

root@ServeurPMB:~# cd /home/biblio/Bureau

Ensuite décompressez l'archive:

root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/

Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :

root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www

=====Définir les droits d'accès à /var/www/pmb=====
 
Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :

root@ServeurPMB:~# cd /var

On définit le propriétaire du répertoire /www :

root@ServeurPMB:~# chown -R www-data:www-data www

Déplacez vous dans le répertoire www :

root@ServeurPMB:~# cd www

On  définit les droits sur les fichiers :

root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;

On définit les droits sur les dossiers :

root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;

=====Installation de la base Pmb=====
 
Lancez votre navigateur sur l'adresse :

http:''localhost/pmb/tables/install.php

J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.
 	
''Paramètres Système.''

Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
	   
Serveur : localhost

Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.

''Paramètres PMB par défaut''

Utilisateur : bibli

Base : bibli	 

''Données PMB''
	
Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http:''localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.


====Configuration post-install====

=====Scripts d'import Unimarc=====

Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 

root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php

chercher le bloc de lignes : 

&lt;nowiki&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section

		$data_doc=array();

		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);

		if (!$info_995[$nb_expl]['q'])
 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;

		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];

		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;

		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;

			else $data_doc['sdoc_owner'] = 0 ;

		$expl['section'] = docs_section::import($data_doc);&lt;/nowiki&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

=====Sauvegarde automatisée=====

Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.

Créer le fichier sauvegarde.sh dans /root : 

&lt;nowiki&gt;! /bin/bash

# Script de sauvegarde avec possibilité de rollback sur 10 jours 
# Ce script éteint le serveur à la fin de la sauvegarde 

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log

mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log

mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log

mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log

mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log

mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log

mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log

mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log

mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

echo &quot;Sauvegarde terminée&quot; &gt;&gt; /root/sauvegarde.log

shutdown - h now&lt;/nowiki&gt;

Rendez ce script executable :

Root@ServeurPmb:~# chmod u+x sauvegarde.sh

Editez la crontab

root@serveurPMB:~# vi /etc/crontab

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )


et ajoutez la ligne 

30 17 * * * root /root/sauvegarde.sh

pour une sauvegarde quotidienne à 17h30

COMMANDES POUR RESTAURER LA BASE : 
d'abord creer une base vide :

ServeurPmb:~# mysql -u root -p password

mysql&gt; create database BASE;

mysql&gt; exit

puis on restaure :

ServeurPmb:~# mysql -u root -pMOTDEPASSE BASE &lt; /save/sauvegarde.sql</text>
      <sha1>iuqdz71uho4jh8xwwvatfe2p0ismis7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4892</id>
      <parentid>4891</parentid>
      <timestamp>2013-01-18T08:00:13Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Sauvegarde automatisée */</comment>
      <text xml:space="preserve" bytes="15805">Dernière màj de la procédure en janvier 2013 sur la distribution **Debian Squeeze 6.0.6 stable** et le package **PMB4.0.2**

====Préambule====

Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez des versions de Linux Debian dites __stable__.

Si vous avez choisi **Ubuntu** vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour pouvoir installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :

biblio@ServeurPMB:~$ sudo passwd root

Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.

Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :

root@ServeurPMB:~# aptitude install gedit

Dans ce cas, les lignes de code décrites dans cette doc sous la forme :

root@ServeurPMB:~# vi /dossier/fichier

devront être interprétées :

root@ServeurPMB:~# gedit /dossier/fichier

/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...

====Configurer les ressources Debian====

Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :

biblio@ServeurPMB:~$ su

Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50'' 

deb http:''ftp.indexdata.dk/debian squeeze main

profitez-en aussi pour intégrer les ressources debian.fr

deb http:''ftp.fr.debian.org/debian/ squeeze main

et commentez les autres dépots 

#deb http:''ftp.debian.org/debian/ squeeze main
#deb-src http:''ftp.debian.org/debian/ squeeze main

Enregistrer et quitter vi (touche esc puis :wq).
A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':

wget http:''ftp.indexdata.dk/debian/indexdata.asc

root@ServeurPMB:~# apt-key add indexdata.asc

Puis mettez à jour votre gestionnaire de packages

root@ServeurPMB:~# aptitude update

Les ressources officielles pour php-yaz :

http:''www.indexdata.dk
ftp:''ftp.indexdata.dk/pub/debian/dists

====Installation du serveur Apache====

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :

root@ServeurPMB:~#aptitude install apache2-mpm-prefork

Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :

root@ServeurPMB:~#vi /etc/apache2/apache2.conf

ajoutez la ligne :

ServerName 127.0.0.1

Enregistrer et quittez ''Vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :

http:''localhost/

ou

http:''adresseIPdevotreServeurPMB/

Une fenêtre ♫♪ It Works ! ♪♫ s'ouvre et vous informe que Apache fonctionne correctement .

====Installer MySQL5====

/!\ le package mysql-server-5.5 n'a pas été déclaré suffisamment stable pour être intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur MySQL avec la commande :

root@ServeurPMB:~#aptitude install mysql-server-5.1

Une fois les packages  installés, nous devons configurer un mot de passe pour le root MySQL, il est possible que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :

root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1

Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 
Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root MySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''serveur MySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 

root@ServeurPMB:~# vi /etc/mysql/my.cnf

et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 

max_allowed_packet = 250 M

250M devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mysql afin de prendre en compte ces nouveaux paramètres avec  : 

root@ServeurPMB:~# /etc/init.d/mysql restart

====Php5 et ses extensions====

Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.
/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.

root@ServeurPMB:~#aptitude install php5

Installez maintenant les extensions Php5:

root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl

Un message d'avertissement peut apparaitre :

&lt;nowiki&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/nowiki&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :

root@ServeurPMB:~# vi /etc/php5/apache2/php.ini

Rechercher et modifier les paramètres ci dessous en fonction de la base et augmenter considérablement le ''max_execution_time'' :

max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Redémarrez le serveur Apache :

root@ServeurPMB:~# /etc/init.d/apache2 restart

Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :

root@ServeurPMB:~# vi /var/www/phpinfo.php 

il doit contenir :

&lt;?php
phpinfo();
?&gt; 

Ensuite, lancez votre navigateur sur :

http:''localhost/phpinfo.php

ou

http:''adresseIPdevotreserveur/phpinfo.php

Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

====PhpMyAdmin====

PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).

root@ServeurPMB:~#aptitude install phpmyadmin

Puis tapez dans la barre d'adresse de votre navigateur :

root@ServeurPMB:~#localhost/phpmyadmin

L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root __mysql__ défini au chapitre : «  4-installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : http:''www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html

====Installation de PMB====

=====L'archive PMB=====
Téléchargez l'archive PMB depuis le site http:''www.pmbservices.fr sur votre bureau
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
biblio@ServeurPMB:~$ su
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :

root@ServeurPMB:~# cd /home/biblio/Bureau

Ensuite décompressez l'archive:

root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/

Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :

root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www

=====Définir les droits d'accès à /var/www/pmb=====
 
Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :

root@ServeurPMB:~# cd /var

On définit le propriétaire du répertoire /www :

root@ServeurPMB:~# chown -R www-data:www-data www

Déplacez vous dans le répertoire www :

root@ServeurPMB:~# cd www

On  définit les droits sur les fichiers :

root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;

On définit les droits sur les dossiers :

root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;

=====Installation de la base Pmb=====
 
Lancez votre navigateur sur l'adresse :

http:''localhost/pmb/tables/install.php

J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.
 	
''Paramètres Système.''

Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
	   
Serveur : localhost

Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.

''Paramètres PMB par défaut''

Utilisateur : bibli

Base : bibli	 

''Données PMB''
	
Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http:''localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.


====Configuration post-install====

=====Scripts d'import Unimarc=====

Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 

root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php

chercher le bloc de lignes : 

&lt;nowiki&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section

		$data_doc=array();

		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);

		if (!$info_995[$nb_expl]['q'])
 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;

		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];

		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;

		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;

			else $data_doc['sdoc_owner'] = 0 ;

		$expl['section'] = docs_section::import($data_doc);&lt;/nowiki&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

=====Sauvegarde automatisée=====

Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.

Créer le fichier sauvegarde.sh dans /root : 

&lt;nowiki&gt;&lt;poem&gt;! /bin/bash

# Script de sauvegarde avec possibilité de rollback sur 10 jours 
# Ce script éteint le serveur à la fin de la sauvegarde 

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log

mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log

mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log

mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log

mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log

mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log

mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log

mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log

mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

echo &quot;Sauvegarde terminée&quot; &gt;&gt; /root/sauvegarde.log

shutdown - h now&lt;/nowiki&gt;&lt;/poem&gt;

Rendez ce script executable :

Root@ServeurPmb:~# chmod u+x sauvegarde.sh

Editez la crontab

root@serveurPMB:~# vi /etc/crontab

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )


et ajoutez la ligne 

30 17 * * * root /root/sauvegarde.sh

pour une sauvegarde quotidienne à 17h30

COMMANDES POUR RESTAURER LA BASE : 
d'abord creer une base vide :

ServeurPmb:~# mysql -u root -p password

mysql&gt; create database BASE;

mysql&gt; exit

puis on restaure :

ServeurPmb:~# mysql -u root -pMOTDEPASSE BASE &lt; /save/sauvegarde.sql</text>
      <sha1>8unckfsrkezxwq9ze6mxf0wrwdpkkpb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4893</id>
      <parentid>4892</parentid>
      <timestamp>2013-01-18T08:07:48Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Sauvegarde automatisée */</comment>
      <text xml:space="preserve" bytes="15897">Dernière màj de la procédure en janvier 2013 sur la distribution **Debian Squeeze 6.0.6 stable** et le package **PMB4.0.2**

====Préambule====

Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez des versions de Linux Debian dites __stable__.

Si vous avez choisi **Ubuntu** vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour pouvoir installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :

biblio@ServeurPMB:~$ sudo passwd root

Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.

Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :

root@ServeurPMB:~# aptitude install gedit

Dans ce cas, les lignes de code décrites dans cette doc sous la forme :

root@ServeurPMB:~# vi /dossier/fichier

devront être interprétées :

root@ServeurPMB:~# gedit /dossier/fichier

/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...

====Configurer les ressources Debian====

Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :

biblio@ServeurPMB:~$ su

Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50'' 

deb http:''ftp.indexdata.dk/debian squeeze main

profitez-en aussi pour intégrer les ressources debian.fr

deb http:''ftp.fr.debian.org/debian/ squeeze main

et commentez les autres dépots 

#deb http:''ftp.debian.org/debian/ squeeze main
#deb-src http:''ftp.debian.org/debian/ squeeze main

Enregistrer et quitter vi (touche esc puis :wq).
A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':

wget http:''ftp.indexdata.dk/debian/indexdata.asc

root@ServeurPMB:~# apt-key add indexdata.asc

Puis mettez à jour votre gestionnaire de packages

root@ServeurPMB:~# aptitude update

Les ressources officielles pour php-yaz :

http:''www.indexdata.dk
ftp:''ftp.indexdata.dk/pub/debian/dists

====Installation du serveur Apache====

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :

root@ServeurPMB:~#aptitude install apache2-mpm-prefork

Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :

root@ServeurPMB:~#vi /etc/apache2/apache2.conf

ajoutez la ligne :

ServerName 127.0.0.1

Enregistrer et quittez ''Vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :

http:''localhost/

ou

http:''adresseIPdevotreServeurPMB/

Une fenêtre ♫♪ It Works ! ♪♫ s'ouvre et vous informe que Apache fonctionne correctement .

====Installer MySQL5====

/!\ le package mysql-server-5.5 n'a pas été déclaré suffisamment stable pour être intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur MySQL avec la commande :

root@ServeurPMB:~#aptitude install mysql-server-5.1

Une fois les packages  installés, nous devons configurer un mot de passe pour le root MySQL, il est possible que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :

root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1

Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 
Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root MySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''serveur MySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 

root@ServeurPMB:~# vi /etc/mysql/my.cnf

et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 

max_allowed_packet = 250 M

250M devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mysql afin de prendre en compte ces nouveaux paramètres avec  : 

root@ServeurPMB:~# /etc/init.d/mysql restart

====Php5 et ses extensions====

Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.
/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.

root@ServeurPMB:~#aptitude install php5

Installez maintenant les extensions Php5:

root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl

Un message d'avertissement peut apparaitre :

&lt;nowiki&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/nowiki&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :

root@ServeurPMB:~# vi /etc/php5/apache2/php.ini

Rechercher et modifier les paramètres ci dessous en fonction de la base et augmenter considérablement le ''max_execution_time'' :

max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Redémarrez le serveur Apache :

root@ServeurPMB:~# /etc/init.d/apache2 restart

Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :

root@ServeurPMB:~# vi /var/www/phpinfo.php 

il doit contenir :

&lt;?php
phpinfo();
?&gt; 

Ensuite, lancez votre navigateur sur :

http:''localhost/phpinfo.php

ou

http:''adresseIPdevotreserveur/phpinfo.php

Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

====PhpMyAdmin====

PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).

root@ServeurPMB:~#aptitude install phpmyadmin

Puis tapez dans la barre d'adresse de votre navigateur :

root@ServeurPMB:~#localhost/phpmyadmin

L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root __mysql__ défini au chapitre : «  4-installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : http:''www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html

====Installation de PMB====

=====L'archive PMB=====
Téléchargez l'archive PMB depuis le site http:''www.pmbservices.fr sur votre bureau
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
biblio@ServeurPMB:~$ su
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :

root@ServeurPMB:~# cd /home/biblio/Bureau

Ensuite décompressez l'archive:

root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/

Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :

root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www

=====Définir les droits d'accès à /var/www/pmb=====
 
Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :

root@ServeurPMB:~# cd /var

On définit le propriétaire du répertoire /www :

root@ServeurPMB:~# chown -R www-data:www-data www

Déplacez vous dans le répertoire www :

root@ServeurPMB:~# cd www

On  définit les droits sur les fichiers :

root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;

On définit les droits sur les dossiers :

root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;

=====Installation de la base Pmb=====
 
Lancez votre navigateur sur l'adresse :

http:''localhost/pmb/tables/install.php

J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.
 	
''Paramètres Système.''

Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
	   
Serveur : localhost

Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.

''Paramètres PMB par défaut''

Utilisateur : bibli

Base : bibli	 

''Données PMB''
	
Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http:''localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.


====Configuration post-install====

=====Scripts d'import Unimarc=====

Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 

root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php

chercher le bloc de lignes : 

&lt;nowiki&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section

		$data_doc=array();

		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);

		if (!$info_995[$nb_expl]['q'])
 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;

		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];

		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;

		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;

			else $data_doc['sdoc_owner'] = 0 ;

		$expl['section'] = docs_section::import($data_doc);&lt;/nowiki&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

=====Sauvegarde automatisée=====

Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.

Créer le fichier sauvegarde.sh dans /root : 

&lt;code&gt;! /bin/bash&lt;br /&gt;

&lt;nowiki&gt;#&lt;/nowiki&gt; Script de sauvegarde avec possibilité de rollback sur 10 jours 
&lt;nowiki&gt;#&lt;/nowiki&gt; Ce script éteint le serveur à la fin de la sauvegarde&lt;br /&gt;

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log&lt;br /&gt;

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log&lt;br /&gt;
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log&lt;br /&gt;
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log&lt;br /&gt;
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log&lt;br /&gt;
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log&lt;br /&gt;
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log&lt;br /&gt;
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log&lt;br /&gt;
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log&lt;br /&gt;
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log&lt;br /&gt;

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log&lt;br /&gt;

echo &quot;Sauvegarde terminée&quot; &gt;&gt; /root/sauvegarde.log&lt;br /&gt;

shutdown - h now&lt;/code&gt;

Rendez ce script executable :

Root@ServeurPmb:~# chmod u+x sauvegarde.sh

Editez la crontab

root@serveurPMB:~# vi /etc/crontab

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )


et ajoutez la ligne 

30 17 * * * root /root/sauvegarde.sh

pour une sauvegarde quotidienne à 17h30

COMMANDES POUR RESTAURER LA BASE : 
d'abord creer une base vide :

ServeurPmb:~# mysql -u root -p password

mysql&gt; create database BASE;

mysql&gt; exit

puis on restaure :

ServeurPmb:~# mysql -u root -pMOTDEPASSE BASE &lt; /save/sauvegarde.sql</text>
      <sha1>g35bd66pjznwaw2ph71brn7fwm9i392</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4894</id>
      <parentid>4893</parentid>
      <timestamp>2013-01-18T08:10:41Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Sauvegarde automatisée */</comment>
      <text xml:space="preserve" bytes="15867">Dernière màj de la procédure en janvier 2013 sur la distribution **Debian Squeeze 6.0.6 stable** et le package **PMB4.0.2**

====Préambule====

Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez des versions de Linux Debian dites __stable__.

Si vous avez choisi **Ubuntu** vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour pouvoir installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :

biblio@ServeurPMB:~$ sudo passwd root

Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.

Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :

root@ServeurPMB:~# aptitude install gedit

Dans ce cas, les lignes de code décrites dans cette doc sous la forme :

root@ServeurPMB:~# vi /dossier/fichier

devront être interprétées :

root@ServeurPMB:~# gedit /dossier/fichier

/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...

====Configurer les ressources Debian====

Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :

biblio@ServeurPMB:~$ su

Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50'' 

deb http:''ftp.indexdata.dk/debian squeeze main

profitez-en aussi pour intégrer les ressources debian.fr

deb http:''ftp.fr.debian.org/debian/ squeeze main

et commentez les autres dépots 

#deb http:''ftp.debian.org/debian/ squeeze main
#deb-src http:''ftp.debian.org/debian/ squeeze main

Enregistrer et quitter vi (touche esc puis :wq).
A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':

wget http:''ftp.indexdata.dk/debian/indexdata.asc

root@ServeurPMB:~# apt-key add indexdata.asc

Puis mettez à jour votre gestionnaire de packages

root@ServeurPMB:~# aptitude update

Les ressources officielles pour php-yaz :

http:''www.indexdata.dk
ftp:''ftp.indexdata.dk/pub/debian/dists

====Installation du serveur Apache====

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :

root@ServeurPMB:~#aptitude install apache2-mpm-prefork

Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :

root@ServeurPMB:~#vi /etc/apache2/apache2.conf

ajoutez la ligne :

ServerName 127.0.0.1

Enregistrer et quittez ''Vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :

http:''localhost/

ou

http:''adresseIPdevotreServeurPMB/

Une fenêtre ♫♪ It Works ! ♪♫ s'ouvre et vous informe que Apache fonctionne correctement .

====Installer MySQL5====

/!\ le package mysql-server-5.5 n'a pas été déclaré suffisamment stable pour être intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur MySQL avec la commande :

root@ServeurPMB:~#aptitude install mysql-server-5.1

Une fois les packages  installés, nous devons configurer un mot de passe pour le root MySQL, il est possible que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :

root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1

Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 
Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root MySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''serveur MySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 

root@ServeurPMB:~# vi /etc/mysql/my.cnf

et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 

max_allowed_packet = 250 M

250M devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mysql afin de prendre en compte ces nouveaux paramètres avec  : 

root@ServeurPMB:~# /etc/init.d/mysql restart

====Php5 et ses extensions====

Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.
/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.

root@ServeurPMB:~#aptitude install php5

Installez maintenant les extensions Php5:

root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl

Un message d'avertissement peut apparaitre :

&lt;nowiki&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/nowiki&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :

root@ServeurPMB:~# vi /etc/php5/apache2/php.ini

Rechercher et modifier les paramètres ci dessous en fonction de la base et augmenter considérablement le ''max_execution_time'' :

max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Redémarrez le serveur Apache :

root@ServeurPMB:~# /etc/init.d/apache2 restart

Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :

root@ServeurPMB:~# vi /var/www/phpinfo.php 

il doit contenir :

&lt;?php
phpinfo();
?&gt; 

Ensuite, lancez votre navigateur sur :

http:''localhost/phpinfo.php

ou

http:''adresseIPdevotreserveur/phpinfo.php

Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

====PhpMyAdmin====

PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).

root@ServeurPMB:~#aptitude install phpmyadmin

Puis tapez dans la barre d'adresse de votre navigateur :

root@ServeurPMB:~#localhost/phpmyadmin

L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root __mysql__ défini au chapitre : «  4-installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : http:''www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html

====Installation de PMB====

=====L'archive PMB=====
Téléchargez l'archive PMB depuis le site http:''www.pmbservices.fr sur votre bureau
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
biblio@ServeurPMB:~$ su
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :

root@ServeurPMB:~# cd /home/biblio/Bureau

Ensuite décompressez l'archive:

root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/

Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :

root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www

=====Définir les droits d'accès à /var/www/pmb=====
 
Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :

root@ServeurPMB:~# cd /var

On définit le propriétaire du répertoire /www :

root@ServeurPMB:~# chown -R www-data:www-data www

Déplacez vous dans le répertoire www :

root@ServeurPMB:~# cd www

On  définit les droits sur les fichiers :

root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;

On définit les droits sur les dossiers :

root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;

=====Installation de la base Pmb=====
 
Lancez votre navigateur sur l'adresse :

http:''localhost/pmb/tables/install.php

J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.
 	
''Paramètres Système.''

Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
	   
Serveur : localhost

Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.

''Paramètres PMB par défaut''

Utilisateur : bibli

Base : bibli	 

''Données PMB''
	
Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http:''localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.


====Configuration post-install====

=====Scripts d'import Unimarc=====

Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 

root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php

chercher le bloc de lignes : 

&lt;nowiki&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section

		$data_doc=array();

		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);

		if (!$info_995[$nb_expl]['q'])
 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;

		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];

		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;

		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;

			else $data_doc['sdoc_owner'] = 0 ;

		$expl['section'] = docs_section::import($data_doc);&lt;/nowiki&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

=====Sauvegarde automatisée=====

Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.

Créer le fichier sauvegarde.sh dans /root : 

&lt;code&gt;! /bin/bash&lt;br /&gt;

# Script de sauvegarde avec possibilité de rollback sur 10 jours 
# Ce script éteint le serveur à la fin de la sauvegarde&lt;br /&gt;

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

echo &quot;Sauvegarde terminée&quot; &gt;&gt; /root/sauvegarde.log

shutdown - h now&lt;/code&gt;

Rendez ce script executable :

&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;

Editez la crontab

&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;

&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;


et ajoutez la ligne 

&lt;code&gt;30 17 * * * root /root/sauvegarde.sh&lt;/code&gt;

pour une sauvegarde quotidienne à 17h30

COMMANDES POUR RESTAURER LA BASE : 
d'abord creer une base vide :

&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database BASE;
mysql&gt; exit&lt;/code&gt;

puis on restaure :

&lt;code&gt;ServeurPmb:~# mysql -u root -pMOTDEPASSE BASE &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>s666txdxlu1njfszs6tdpdz4xkan7b5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4895</id>
      <parentid>4894</parentid>
      <timestamp>2013-01-18T08:15:19Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Sauvegarde automatisée */</comment>
      <text xml:space="preserve" bytes="15980">Dernière màj de la procédure en janvier 2013 sur la distribution **Debian Squeeze 6.0.6 stable** et le package **PMB4.0.2**

====Préambule====

Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez des versions de Linux Debian dites __stable__.

Si vous avez choisi **Ubuntu** vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour pouvoir installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :

biblio@ServeurPMB:~$ sudo passwd root

Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.

Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :

root@ServeurPMB:~# aptitude install gedit

Dans ce cas, les lignes de code décrites dans cette doc sous la forme :

root@ServeurPMB:~# vi /dossier/fichier

devront être interprétées :

root@ServeurPMB:~# gedit /dossier/fichier

/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...

====Configurer les ressources Debian====

Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :

biblio@ServeurPMB:~$ su

Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50'' 

deb http:''ftp.indexdata.dk/debian squeeze main

profitez-en aussi pour intégrer les ressources debian.fr

deb http:''ftp.fr.debian.org/debian/ squeeze main

et commentez les autres dépots 

#deb http:''ftp.debian.org/debian/ squeeze main
#deb-src http:''ftp.debian.org/debian/ squeeze main

Enregistrer et quitter vi (touche esc puis :wq).
A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':

wget http:''ftp.indexdata.dk/debian/indexdata.asc

root@ServeurPMB:~# apt-key add indexdata.asc

Puis mettez à jour votre gestionnaire de packages

root@ServeurPMB:~# aptitude update

Les ressources officielles pour php-yaz :

http:''www.indexdata.dk
ftp:''ftp.indexdata.dk/pub/debian/dists

====Installation du serveur Apache====

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :

root@ServeurPMB:~#aptitude install apache2-mpm-prefork

Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :

root@ServeurPMB:~#vi /etc/apache2/apache2.conf

ajoutez la ligne :

ServerName 127.0.0.1

Enregistrer et quittez ''Vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :

http:''localhost/

ou

http:''adresseIPdevotreServeurPMB/

Une fenêtre ♫♪ It Works ! ♪♫ s'ouvre et vous informe que Apache fonctionne correctement .

====Installer MySQL5====

/!\ le package mysql-server-5.5 n'a pas été déclaré suffisamment stable pour être intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur MySQL avec la commande :

root@ServeurPMB:~#aptitude install mysql-server-5.1

Une fois les packages  installés, nous devons configurer un mot de passe pour le root MySQL, il est possible que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :

root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1

Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 
Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root MySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''serveur MySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 

root@ServeurPMB:~# vi /etc/mysql/my.cnf

et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 

max_allowed_packet = 250 M

250M devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mysql afin de prendre en compte ces nouveaux paramètres avec  : 

root@ServeurPMB:~# /etc/init.d/mysql restart

====Php5 et ses extensions====

Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.
/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.

root@ServeurPMB:~#aptitude install php5

Installez maintenant les extensions Php5:

root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl

Un message d'avertissement peut apparaitre :

&lt;nowiki&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/nowiki&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :

root@ServeurPMB:~# vi /etc/php5/apache2/php.ini

Rechercher et modifier les paramètres ci dessous en fonction de la base et augmenter considérablement le ''max_execution_time'' :

max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Redémarrez le serveur Apache :

root@ServeurPMB:~# /etc/init.d/apache2 restart

Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :

root@ServeurPMB:~# vi /var/www/phpinfo.php 

il doit contenir :

&lt;?php
phpinfo();
?&gt; 

Ensuite, lancez votre navigateur sur :

http:''localhost/phpinfo.php

ou

http:''adresseIPdevotreserveur/phpinfo.php

Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

====PhpMyAdmin====

PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).

root@ServeurPMB:~#aptitude install phpmyadmin

Puis tapez dans la barre d'adresse de votre navigateur :

root@ServeurPMB:~#localhost/phpmyadmin

L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root __mysql__ défini au chapitre : «  4-installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : http:''www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html

====Installation de PMB====

=====L'archive PMB=====
Téléchargez l'archive PMB depuis le site http:''www.pmbservices.fr sur votre bureau
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
biblio@ServeurPMB:~$ su
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :

root@ServeurPMB:~# cd /home/biblio/Bureau

Ensuite décompressez l'archive:

root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/

Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :

root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www

=====Définir les droits d'accès à /var/www/pmb=====
 
Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :

root@ServeurPMB:~# cd /var

On définit le propriétaire du répertoire /www :

root@ServeurPMB:~# chown -R www-data:www-data www

Déplacez vous dans le répertoire www :

root@ServeurPMB:~# cd www

On  définit les droits sur les fichiers :

root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;

On définit les droits sur les dossiers :

root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;

=====Installation de la base Pmb=====
 
Lancez votre navigateur sur l'adresse :

http:''localhost/pmb/tables/install.php

J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.
 	
''Paramètres Système.''

Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
	   
Serveur : localhost

Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.

''Paramètres PMB par défaut''

Utilisateur : bibli

Base : bibli	 

''Données PMB''
	
Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http:''localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.


====Configuration post-install====

=====Scripts d'import Unimarc=====

Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 

root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php

chercher le bloc de lignes : 

&lt;nowiki&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section

		$data_doc=array();

		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);

		if (!$info_995[$nb_expl]['q'])
 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;

		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];

		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;

		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;

			else $data_doc['sdoc_owner'] = 0 ;

		$expl['section'] = docs_section::import($data_doc);&lt;/nowiki&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

=====Sauvegarde automatisée=====

Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.

Créer le fichier sauvegarde.sh dans /root : 

&lt;code&gt;! /bin/bash

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

echo &quot;Sauvegarde terminée&quot; &gt;&gt; /root/sauvegarde.log

# Ce script éteint le serveur à la fin de la sauvegarde :

shutdown - h now&lt;/code&gt;

Rendez ce script executable :

&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;

Editez la crontab pour planifier la frequence de la sauvegarde

&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;

&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;


et ajoutez la ligne 

&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;

pour une sauvegarde quotidienne à 18h30 par exemple 

COMMANDES POUR RESTAURER LA BASE : 
d'abord creer une base vide :

&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database BASE;
mysql&gt; exit&lt;/code&gt;

puis on restaure :

&lt;code&gt;ServeurPmb:~# mysql -u root -pMOTDEPASSE BASE &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>5kicakrmga4zkysnuch0nsf90ra8zlh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4896</id>
      <parentid>4895</parentid>
      <timestamp>2013-01-18T08:17:13Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Sauvegarde automatisée */</comment>
      <text xml:space="preserve" bytes="16009">Dernière màj de la procédure en janvier 2013 sur la distribution **Debian Squeeze 6.0.6 stable** et le package **PMB4.0.2**

====Préambule====

Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez des versions de Linux Debian dites __stable__.

Si vous avez choisi **Ubuntu** vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour pouvoir installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :

biblio@ServeurPMB:~$ sudo passwd root

Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.

Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :

root@ServeurPMB:~# aptitude install gedit

Dans ce cas, les lignes de code décrites dans cette doc sous la forme :

root@ServeurPMB:~# vi /dossier/fichier

devront être interprétées :

root@ServeurPMB:~# gedit /dossier/fichier

/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...

====Configurer les ressources Debian====

Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :

biblio@ServeurPMB:~$ su

Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50'' 

deb http:''ftp.indexdata.dk/debian squeeze main

profitez-en aussi pour intégrer les ressources debian.fr

deb http:''ftp.fr.debian.org/debian/ squeeze main

et commentez les autres dépots 

#deb http:''ftp.debian.org/debian/ squeeze main
#deb-src http:''ftp.debian.org/debian/ squeeze main

Enregistrer et quitter vi (touche esc puis :wq).
A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':

wget http:''ftp.indexdata.dk/debian/indexdata.asc

root@ServeurPMB:~# apt-key add indexdata.asc

Puis mettez à jour votre gestionnaire de packages

root@ServeurPMB:~# aptitude update

Les ressources officielles pour php-yaz :

http:''www.indexdata.dk
ftp:''ftp.indexdata.dk/pub/debian/dists

====Installation du serveur Apache====

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :

root@ServeurPMB:~#aptitude install apache2-mpm-prefork

Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :

root@ServeurPMB:~#vi /etc/apache2/apache2.conf

ajoutez la ligne :

ServerName 127.0.0.1

Enregistrer et quittez ''Vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :

http:''localhost/

ou

http:''adresseIPdevotreServeurPMB/

Une fenêtre ♫♪ It Works ! ♪♫ s'ouvre et vous informe que Apache fonctionne correctement .

====Installer MySQL5====

/!\ le package mysql-server-5.5 n'a pas été déclaré suffisamment stable pour être intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur MySQL avec la commande :

root@ServeurPMB:~#aptitude install mysql-server-5.1

Une fois les packages  installés, nous devons configurer un mot de passe pour le root MySQL, il est possible que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :

root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1

Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 
Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root MySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''serveur MySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 

root@ServeurPMB:~# vi /etc/mysql/my.cnf

et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 

max_allowed_packet = 250 M

250M devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mysql afin de prendre en compte ces nouveaux paramètres avec  : 

root@ServeurPMB:~# /etc/init.d/mysql restart

====Php5 et ses extensions====

Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.
/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.

root@ServeurPMB:~#aptitude install php5

Installez maintenant les extensions Php5:

root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl

Un message d'avertissement peut apparaitre :

&lt;nowiki&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/nowiki&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :

root@ServeurPMB:~# vi /etc/php5/apache2/php.ini

Rechercher et modifier les paramètres ci dessous en fonction de la base et augmenter considérablement le ''max_execution_time'' :

max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Redémarrez le serveur Apache :

root@ServeurPMB:~# /etc/init.d/apache2 restart

Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :

root@ServeurPMB:~# vi /var/www/phpinfo.php 

il doit contenir :

&lt;?php
phpinfo();
?&gt; 

Ensuite, lancez votre navigateur sur :

http:''localhost/phpinfo.php

ou

http:''adresseIPdevotreserveur/phpinfo.php

Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

====PhpMyAdmin====

PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).

root@ServeurPMB:~#aptitude install phpmyadmin

Puis tapez dans la barre d'adresse de votre navigateur :

root@ServeurPMB:~#localhost/phpmyadmin

L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root __mysql__ défini au chapitre : «  4-installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : http:''www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html

====Installation de PMB====

=====L'archive PMB=====
Téléchargez l'archive PMB depuis le site http:''www.pmbservices.fr sur votre bureau
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
biblio@ServeurPMB:~$ su
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :

root@ServeurPMB:~# cd /home/biblio/Bureau

Ensuite décompressez l'archive:

root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/

Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :

root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www

=====Définir les droits d'accès à /var/www/pmb=====
 
Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :

root@ServeurPMB:~# cd /var

On définit le propriétaire du répertoire /www :

root@ServeurPMB:~# chown -R www-data:www-data www

Déplacez vous dans le répertoire www :

root@ServeurPMB:~# cd www

On  définit les droits sur les fichiers :

root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;

On définit les droits sur les dossiers :

root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;

=====Installation de la base Pmb=====
 
Lancez votre navigateur sur l'adresse :

http:''localhost/pmb/tables/install.php

J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.
 	
''Paramètres Système.''

Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
	   
Serveur : localhost

Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.

''Paramètres PMB par défaut''

Utilisateur : bibli

Base : bibli	 

''Données PMB''
	
Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http:''localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.


====Configuration post-install====

=====Scripts d'import Unimarc=====

Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 

root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php

chercher le bloc de lignes : 

&lt;nowiki&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section

		$data_doc=array();

		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);

		if (!$info_995[$nb_expl]['q'])
 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;

		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];

		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;

		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;

			else $data_doc['sdoc_owner'] = 0 ;

		$expl['section'] = docs_section::import($data_doc);&lt;/nowiki&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

=====Sauvegarde automatisée=====

Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.

======Sauvegarde de la base======

Créer le fichier sauvegarde.sh dans /root : 

&lt;code&gt;! /bin/bash

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

echo &quot;Sauvegarde terminée&quot; &gt;&gt; /root/sauvegarde.log

# Ce script éteint le serveur à la fin de la sauvegarde :

shutdown - h now&lt;/code&gt;

Rendez ce script executable :

&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;

Editez la crontab pour planifier la frequence de la sauvegarde

&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;

&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;

et ajoutez la ligne 

&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;

pour une sauvegarde quotidienne à 18h30 par exemple 

======Restaurer la base====== 
d'abord creer une base vide :

&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database BASE;
mysql&gt; exit&lt;/code&gt;

puis on restaure :

&lt;code&gt;ServeurPmb:~# mysql -u root -pMOTDEPASSE BASE &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>28mq6sbaw3mmg4u3hdmkzihvd47m7bn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4897</id>
      <parentid>4896</parentid>
      <timestamp>2013-01-18T08:18:37Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Sauvegarde de la base */</comment>
      <text xml:space="preserve" bytes="16006">Dernière màj de la procédure en janvier 2013 sur la distribution **Debian Squeeze 6.0.6 stable** et le package **PMB4.0.2**

====Préambule====

Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez des versions de Linux Debian dites __stable__.

Si vous avez choisi **Ubuntu** vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour pouvoir installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :

biblio@ServeurPMB:~$ sudo passwd root

Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.

Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :

root@ServeurPMB:~# aptitude install gedit

Dans ce cas, les lignes de code décrites dans cette doc sous la forme :

root@ServeurPMB:~# vi /dossier/fichier

devront être interprétées :

root@ServeurPMB:~# gedit /dossier/fichier

/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...

====Configurer les ressources Debian====

Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :

biblio@ServeurPMB:~$ su

Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50'' 

deb http:''ftp.indexdata.dk/debian squeeze main

profitez-en aussi pour intégrer les ressources debian.fr

deb http:''ftp.fr.debian.org/debian/ squeeze main

et commentez les autres dépots 

#deb http:''ftp.debian.org/debian/ squeeze main
#deb-src http:''ftp.debian.org/debian/ squeeze main

Enregistrer et quitter vi (touche esc puis :wq).
A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':

wget http:''ftp.indexdata.dk/debian/indexdata.asc

root@ServeurPMB:~# apt-key add indexdata.asc

Puis mettez à jour votre gestionnaire de packages

root@ServeurPMB:~# aptitude update

Les ressources officielles pour php-yaz :

http:''www.indexdata.dk
ftp:''ftp.indexdata.dk/pub/debian/dists

====Installation du serveur Apache====

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :

root@ServeurPMB:~#aptitude install apache2-mpm-prefork

Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :

root@ServeurPMB:~#vi /etc/apache2/apache2.conf

ajoutez la ligne :

ServerName 127.0.0.1

Enregistrer et quittez ''Vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :

http:''localhost/

ou

http:''adresseIPdevotreServeurPMB/

Une fenêtre ♫♪ It Works ! ♪♫ s'ouvre et vous informe que Apache fonctionne correctement .

====Installer MySQL5====

/!\ le package mysql-server-5.5 n'a pas été déclaré suffisamment stable pour être intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur MySQL avec la commande :

root@ServeurPMB:~#aptitude install mysql-server-5.1

Une fois les packages  installés, nous devons configurer un mot de passe pour le root MySQL, il est possible que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :

root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1

Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 
Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root MySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''serveur MySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 

root@ServeurPMB:~# vi /etc/mysql/my.cnf

et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 

max_allowed_packet = 250 M

250M devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mysql afin de prendre en compte ces nouveaux paramètres avec  : 

root@ServeurPMB:~# /etc/init.d/mysql restart

====Php5 et ses extensions====

Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.
/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.

root@ServeurPMB:~#aptitude install php5

Installez maintenant les extensions Php5:

root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl

Un message d'avertissement peut apparaitre :

&lt;nowiki&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/nowiki&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :

root@ServeurPMB:~# vi /etc/php5/apache2/php.ini

Rechercher et modifier les paramètres ci dessous en fonction de la base et augmenter considérablement le ''max_execution_time'' :

max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Redémarrez le serveur Apache :

root@ServeurPMB:~# /etc/init.d/apache2 restart

Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :

root@ServeurPMB:~# vi /var/www/phpinfo.php 

il doit contenir :

&lt;?php
phpinfo();
?&gt; 

Ensuite, lancez votre navigateur sur :

http:''localhost/phpinfo.php

ou

http:''adresseIPdevotreserveur/phpinfo.php

Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

====PhpMyAdmin====

PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).

root@ServeurPMB:~#aptitude install phpmyadmin

Puis tapez dans la barre d'adresse de votre navigateur :

root@ServeurPMB:~#localhost/phpmyadmin

L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root __mysql__ défini au chapitre : «  4-installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : http:''www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html

====Installation de PMB====

=====L'archive PMB=====
Téléchargez l'archive PMB depuis le site http:''www.pmbservices.fr sur votre bureau
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
biblio@ServeurPMB:~$ su
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :

root@ServeurPMB:~# cd /home/biblio/Bureau

Ensuite décompressez l'archive:

root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/

Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :

root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www

=====Définir les droits d'accès à /var/www/pmb=====
 
Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :

root@ServeurPMB:~# cd /var

On définit le propriétaire du répertoire /www :

root@ServeurPMB:~# chown -R www-data:www-data www

Déplacez vous dans le répertoire www :

root@ServeurPMB:~# cd www

On  définit les droits sur les fichiers :

root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;

On définit les droits sur les dossiers :

root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;

=====Installation de la base Pmb=====
 
Lancez votre navigateur sur l'adresse :

http:''localhost/pmb/tables/install.php

J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.
 	
''Paramètres Système.''

Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
	   
Serveur : localhost

Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.

''Paramètres PMB par défaut''

Utilisateur : bibli

Base : bibli	 

''Données PMB''
	
Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http:''localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.


====Configuration post-install====

=====Scripts d'import Unimarc=====

Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 

root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php

chercher le bloc de lignes : 

&lt;nowiki&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section

		$data_doc=array();

		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);

		if (!$info_995[$nb_expl]['q'])
 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;

		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];

		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;

		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;

			else $data_doc['sdoc_owner'] = 0 ;

		$expl['section'] = docs_section::import($data_doc);&lt;/nowiki&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

=====Sauvegarde automatisée=====

Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.

=====Sauvegarde de la base=====

Créer le fichier sauvegarde.sh dans /root : 

&lt;code&gt;! /bin/bash

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

echo &quot;Sauvegarde terminée&quot; &gt;&gt; /root/sauvegarde.log

# Ce script éteint le serveur à la fin de la sauvegarde :

shutdown -h now&lt;/code&gt;

Rendez ce script executable :

&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;

Editez la crontab pour planifier la fréquence de la sauvegarde

&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;

&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;

et ajoutez la ligne 

&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;

pour une sauvegarde quotidienne à 18h30 par exemple

======Restaurer la base====== 
d'abord creer une base vide :

&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database BASE;
mysql&gt; exit&lt;/code&gt;

puis on restaure :

&lt;code&gt;ServeurPmb:~# mysql -u root -pMOTDEPASSE BASE &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>i26oenitxtm9i1uqfdlvhe81osdrekn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4898</id>
      <parentid>4897</parentid>
      <timestamp>2013-01-18T08:20:30Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Restaurer la base */</comment>
      <text xml:space="preserve" bytes="16019">Dernière màj de la procédure en janvier 2013 sur la distribution **Debian Squeeze 6.0.6 stable** et le package **PMB4.0.2**

====Préambule====

Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez des versions de Linux Debian dites __stable__.

Si vous avez choisi **Ubuntu** vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour pouvoir installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :

biblio@ServeurPMB:~$ sudo passwd root

Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.

Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :

root@ServeurPMB:~# aptitude install gedit

Dans ce cas, les lignes de code décrites dans cette doc sous la forme :

root@ServeurPMB:~# vi /dossier/fichier

devront être interprétées :

root@ServeurPMB:~# gedit /dossier/fichier

/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...

====Configurer les ressources Debian====

Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :

biblio@ServeurPMB:~$ su

Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50'' 

deb http:''ftp.indexdata.dk/debian squeeze main

profitez-en aussi pour intégrer les ressources debian.fr

deb http:''ftp.fr.debian.org/debian/ squeeze main

et commentez les autres dépots 

#deb http:''ftp.debian.org/debian/ squeeze main
#deb-src http:''ftp.debian.org/debian/ squeeze main

Enregistrer et quitter vi (touche esc puis :wq).
A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':

wget http:''ftp.indexdata.dk/debian/indexdata.asc

root@ServeurPMB:~# apt-key add indexdata.asc

Puis mettez à jour votre gestionnaire de packages

root@ServeurPMB:~# aptitude update

Les ressources officielles pour php-yaz :

http:''www.indexdata.dk
ftp:''ftp.indexdata.dk/pub/debian/dists

====Installation du serveur Apache====

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :

root@ServeurPMB:~#aptitude install apache2-mpm-prefork

Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :

root@ServeurPMB:~#vi /etc/apache2/apache2.conf

ajoutez la ligne :

ServerName 127.0.0.1

Enregistrer et quittez ''Vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :

http:''localhost/

ou

http:''adresseIPdevotreServeurPMB/

Une fenêtre ♫♪ It Works ! ♪♫ s'ouvre et vous informe que Apache fonctionne correctement .

====Installer MySQL5====

/!\ le package mysql-server-5.5 n'a pas été déclaré suffisamment stable pour être intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur MySQL avec la commande :

root@ServeurPMB:~#aptitude install mysql-server-5.1

Une fois les packages  installés, nous devons configurer un mot de passe pour le root MySQL, il est possible que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :

root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1

Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 
Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root MySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''serveur MySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 

root@ServeurPMB:~# vi /etc/mysql/my.cnf

et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 

max_allowed_packet = 250 M

250M devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mysql afin de prendre en compte ces nouveaux paramètres avec  : 

root@ServeurPMB:~# /etc/init.d/mysql restart

====Php5 et ses extensions====

Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.
/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.

root@ServeurPMB:~#aptitude install php5

Installez maintenant les extensions Php5:

root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl

Un message d'avertissement peut apparaitre :

&lt;nowiki&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/nowiki&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :

root@ServeurPMB:~# vi /etc/php5/apache2/php.ini

Rechercher et modifier les paramètres ci dessous en fonction de la base et augmenter considérablement le ''max_execution_time'' :

max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Redémarrez le serveur Apache :

root@ServeurPMB:~# /etc/init.d/apache2 restart

Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :

root@ServeurPMB:~# vi /var/www/phpinfo.php 

il doit contenir :

&lt;?php
phpinfo();
?&gt; 

Ensuite, lancez votre navigateur sur :

http:''localhost/phpinfo.php

ou

http:''adresseIPdevotreserveur/phpinfo.php

Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

====PhpMyAdmin====

PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).

root@ServeurPMB:~#aptitude install phpmyadmin

Puis tapez dans la barre d'adresse de votre navigateur :

root@ServeurPMB:~#localhost/phpmyadmin

L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root __mysql__ défini au chapitre : «  4-installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : http:''www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html

====Installation de PMB====

=====L'archive PMB=====
Téléchargez l'archive PMB depuis le site http:''www.pmbservices.fr sur votre bureau
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
biblio@ServeurPMB:~$ su
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :

root@ServeurPMB:~# cd /home/biblio/Bureau

Ensuite décompressez l'archive:

root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/

Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :

root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www

=====Définir les droits d'accès à /var/www/pmb=====
 
Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :

root@ServeurPMB:~# cd /var

On définit le propriétaire du répertoire /www :

root@ServeurPMB:~# chown -R www-data:www-data www

Déplacez vous dans le répertoire www :

root@ServeurPMB:~# cd www

On  définit les droits sur les fichiers :

root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;

On définit les droits sur les dossiers :

root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;

=====Installation de la base Pmb=====
 
Lancez votre navigateur sur l'adresse :

http:''localhost/pmb/tables/install.php

J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.
 	
''Paramètres Système.''

Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
	   
Serveur : localhost

Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.

''Paramètres PMB par défaut''

Utilisateur : bibli

Base : bibli	 

''Données PMB''
	
Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http:''localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.


====Configuration post-install====

=====Scripts d'import Unimarc=====

Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 

root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php

chercher le bloc de lignes : 

&lt;nowiki&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section

		$data_doc=array();

		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);

		if (!$info_995[$nb_expl]['q'])
 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;

		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];

		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;

		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;

			else $data_doc['sdoc_owner'] = 0 ;

		$expl['section'] = docs_section::import($data_doc);&lt;/nowiki&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

=====Sauvegarde automatisée=====

Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.

=====Sauvegarde de la base=====

Créer le fichier sauvegarde.sh dans /root : 

&lt;code&gt;! /bin/bash

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

echo &quot;Sauvegarde terminée&quot; &gt;&gt; /root/sauvegarde.log

# Ce script éteint le serveur à la fin de la sauvegarde :

shutdown -h now&lt;/code&gt;

Rendez ce script executable :

&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;

Editez la crontab pour planifier la fréquence de la sauvegarde

&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;

&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;

et ajoutez la ligne 

&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;

pour une sauvegarde quotidienne à 18h30 par exemple

=====Restaurer la base===== 
d'abord créer une base vide :

&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;

puis on restaure :

&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>plie1tok5qk9wu7s3lqno43pxw4lldt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4899</id>
      <parentid>4898</parentid>
      <timestamp>2013-01-18T08:21:47Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Sauvegarde automatisée */</comment>
      <text xml:space="preserve" bytes="16017">Dernière màj de la procédure en janvier 2013 sur la distribution **Debian Squeeze 6.0.6 stable** et le package **PMB4.0.2**

====Préambule====

Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez des versions de Linux Debian dites __stable__.

Si vous avez choisi **Ubuntu** vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour pouvoir installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :

biblio@ServeurPMB:~$ sudo passwd root

Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.

Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :

root@ServeurPMB:~# aptitude install gedit

Dans ce cas, les lignes de code décrites dans cette doc sous la forme :

root@ServeurPMB:~# vi /dossier/fichier

devront être interprétées :

root@ServeurPMB:~# gedit /dossier/fichier

/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...

====Configurer les ressources Debian====

Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :

biblio@ServeurPMB:~$ su

Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50'' 

deb http:''ftp.indexdata.dk/debian squeeze main

profitez-en aussi pour intégrer les ressources debian.fr

deb http:''ftp.fr.debian.org/debian/ squeeze main

et commentez les autres dépots 

#deb http:''ftp.debian.org/debian/ squeeze main
#deb-src http:''ftp.debian.org/debian/ squeeze main

Enregistrer et quitter vi (touche esc puis :wq).
A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':

wget http:''ftp.indexdata.dk/debian/indexdata.asc

root@ServeurPMB:~# apt-key add indexdata.asc

Puis mettez à jour votre gestionnaire de packages

root@ServeurPMB:~# aptitude update

Les ressources officielles pour php-yaz :

http:''www.indexdata.dk
ftp:''ftp.indexdata.dk/pub/debian/dists

====Installation du serveur Apache====

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :

root@ServeurPMB:~#aptitude install apache2-mpm-prefork

Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :

root@ServeurPMB:~#vi /etc/apache2/apache2.conf

ajoutez la ligne :

ServerName 127.0.0.1

Enregistrer et quittez ''Vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :

http:''localhost/

ou

http:''adresseIPdevotreServeurPMB/

Une fenêtre ♫♪ It Works ! ♪♫ s'ouvre et vous informe que Apache fonctionne correctement .

====Installer MySQL5====

/!\ le package mysql-server-5.5 n'a pas été déclaré suffisamment stable pour être intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur MySQL avec la commande :

root@ServeurPMB:~#aptitude install mysql-server-5.1

Une fois les packages  installés, nous devons configurer un mot de passe pour le root MySQL, il est possible que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :

root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1

Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 
Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root MySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''serveur MySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 

root@ServeurPMB:~# vi /etc/mysql/my.cnf

et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 

max_allowed_packet = 250 M

250M devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mysql afin de prendre en compte ces nouveaux paramètres avec  : 

root@ServeurPMB:~# /etc/init.d/mysql restart

====Php5 et ses extensions====

Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.
/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.

root@ServeurPMB:~#aptitude install php5

Installez maintenant les extensions Php5:

root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl

Un message d'avertissement peut apparaitre :

&lt;nowiki&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/nowiki&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :

root@ServeurPMB:~# vi /etc/php5/apache2/php.ini

Rechercher et modifier les paramètres ci dessous en fonction de la base et augmenter considérablement le ''max_execution_time'' :

max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Redémarrez le serveur Apache :

root@ServeurPMB:~# /etc/init.d/apache2 restart

Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :

root@ServeurPMB:~# vi /var/www/phpinfo.php 

il doit contenir :

&lt;?php
phpinfo();
?&gt; 

Ensuite, lancez votre navigateur sur :

http:''localhost/phpinfo.php

ou

http:''adresseIPdevotreserveur/phpinfo.php

Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

====PhpMyAdmin====

PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).

root@ServeurPMB:~#aptitude install phpmyadmin

Puis tapez dans la barre d'adresse de votre navigateur :

root@ServeurPMB:~#localhost/phpmyadmin

L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root __mysql__ défini au chapitre : «  4-installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : http:''www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html

====Installation de PMB====

=====L'archive PMB=====
Téléchargez l'archive PMB depuis le site http:''www.pmbservices.fr sur votre bureau
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
biblio@ServeurPMB:~$ su
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :

root@ServeurPMB:~# cd /home/biblio/Bureau

Ensuite décompressez l'archive:

root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/

Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :

root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www

=====Définir les droits d'accès à /var/www/pmb=====
 
Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :

root@ServeurPMB:~# cd /var

On définit le propriétaire du répertoire /www :

root@ServeurPMB:~# chown -R www-data:www-data www

Déplacez vous dans le répertoire www :

root@ServeurPMB:~# cd www

On  définit les droits sur les fichiers :

root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;

On définit les droits sur les dossiers :

root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;

=====Installation de la base Pmb=====
 
Lancez votre navigateur sur l'adresse :

http:''localhost/pmb/tables/install.php

J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.
 	
''Paramètres Système.''

Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
	   
Serveur : localhost

Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.

''Paramètres PMB par défaut''

Utilisateur : bibli

Base : bibli	 

''Données PMB''
	
Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http:''localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.


====Configuration post-install====

=====Scripts d'import Unimarc=====

Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 

root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php

chercher le bloc de lignes : 

&lt;nowiki&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section

		$data_doc=array();

		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);

		if (!$info_995[$nb_expl]['q'])
 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;

		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];

		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;

		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;

			else $data_doc['sdoc_owner'] = 0 ;

		$expl['section'] = docs_section::import($data_doc);&lt;/nowiki&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

====Sauvegarde automatisée====

Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.

=====Sauvegarde de la base=====

Créer le fichier sauvegarde.sh dans /root : 

&lt;code&gt;! /bin/bash

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

echo &quot;Sauvegarde terminée&quot; &gt;&gt; /root/sauvegarde.log

# Ce script éteint le serveur à la fin de la sauvegarde :

shutdown -h now&lt;/code&gt;

Rendez ce script executable :

&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;

Editez la crontab pour planifier la fréquence de la sauvegarde

&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;

&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;

et ajoutez la ligne 

&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;

pour une sauvegarde quotidienne à 18h30 par exemple

=====Restaurer la base===== 
d'abord créer une base vide :

&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;

puis on restaure :

&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>bqlv0cuvc5y8hrz322h3okt5buruhct</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4900</id>
      <parentid>4899</parentid>
      <timestamp>2013-01-18T08:23:36Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Scripts d'import Unimarc */</comment>
      <text xml:space="preserve" bytes="16024">Dernière màj de la procédure en janvier 2013 sur la distribution **Debian Squeeze 6.0.6 stable** et le package **PMB4.0.2**

====Préambule====

Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez des versions de Linux Debian dites __stable__.

Si vous avez choisi **Ubuntu** vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour pouvoir installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :

biblio@ServeurPMB:~$ sudo passwd root

Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.

Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :

root@ServeurPMB:~# aptitude install gedit

Dans ce cas, les lignes de code décrites dans cette doc sous la forme :

root@ServeurPMB:~# vi /dossier/fichier

devront être interprétées :

root@ServeurPMB:~# gedit /dossier/fichier

/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...

====Configurer les ressources Debian====

Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :

biblio@ServeurPMB:~$ su

Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50'' 

deb http:''ftp.indexdata.dk/debian squeeze main

profitez-en aussi pour intégrer les ressources debian.fr

deb http:''ftp.fr.debian.org/debian/ squeeze main

et commentez les autres dépots 

#deb http:''ftp.debian.org/debian/ squeeze main
#deb-src http:''ftp.debian.org/debian/ squeeze main

Enregistrer et quitter vi (touche esc puis :wq).
A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':

wget http:''ftp.indexdata.dk/debian/indexdata.asc

root@ServeurPMB:~# apt-key add indexdata.asc

Puis mettez à jour votre gestionnaire de packages

root@ServeurPMB:~# aptitude update

Les ressources officielles pour php-yaz :

http:''www.indexdata.dk
ftp:''ftp.indexdata.dk/pub/debian/dists

====Installation du serveur Apache====

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :

root@ServeurPMB:~#aptitude install apache2-mpm-prefork

Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :

root@ServeurPMB:~#vi /etc/apache2/apache2.conf

ajoutez la ligne :

ServerName 127.0.0.1

Enregistrer et quittez ''Vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :

http:''localhost/

ou

http:''adresseIPdevotreServeurPMB/

Une fenêtre ♫♪ It Works ! ♪♫ s'ouvre et vous informe que Apache fonctionne correctement .

====Installer MySQL5====

/!\ le package mysql-server-5.5 n'a pas été déclaré suffisamment stable pour être intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur MySQL avec la commande :

root@ServeurPMB:~#aptitude install mysql-server-5.1

Une fois les packages  installés, nous devons configurer un mot de passe pour le root MySQL, il est possible que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :

root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1

Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 
Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root MySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''serveur MySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 

root@ServeurPMB:~# vi /etc/mysql/my.cnf

et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 

max_allowed_packet = 250 M

250M devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mysql afin de prendre en compte ces nouveaux paramètres avec  : 

root@ServeurPMB:~# /etc/init.d/mysql restart

====Php5 et ses extensions====

Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.
/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.

root@ServeurPMB:~#aptitude install php5

Installez maintenant les extensions Php5:

root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl

Un message d'avertissement peut apparaitre :

&lt;nowiki&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/nowiki&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :

root@ServeurPMB:~# vi /etc/php5/apache2/php.ini

Rechercher et modifier les paramètres ci dessous en fonction de la base et augmenter considérablement le ''max_execution_time'' :

max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Redémarrez le serveur Apache :

root@ServeurPMB:~# /etc/init.d/apache2 restart

Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :

root@ServeurPMB:~# vi /var/www/phpinfo.php 

il doit contenir :

&lt;?php
phpinfo();
?&gt; 

Ensuite, lancez votre navigateur sur :

http:''localhost/phpinfo.php

ou

http:''adresseIPdevotreserveur/phpinfo.php

Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

====PhpMyAdmin====

PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).

root@ServeurPMB:~#aptitude install phpmyadmin

Puis tapez dans la barre d'adresse de votre navigateur :

root@ServeurPMB:~#localhost/phpmyadmin

L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root __mysql__ défini au chapitre : «  4-installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : http:''www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html

====Installation de PMB====

=====L'archive PMB=====
Téléchargez l'archive PMB depuis le site http:''www.pmbservices.fr sur votre bureau
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
biblio@ServeurPMB:~$ su
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :

root@ServeurPMB:~# cd /home/biblio/Bureau

Ensuite décompressez l'archive:

root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/

Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :

root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www

=====Définir les droits d'accès à /var/www/pmb=====
 
Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :

root@ServeurPMB:~# cd /var

On définit le propriétaire du répertoire /www :

root@ServeurPMB:~# chown -R www-data:www-data www

Déplacez vous dans le répertoire www :

root@ServeurPMB:~# cd www

On  définit les droits sur les fichiers :

root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;

On définit les droits sur les dossiers :

root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;

=====Installation de la base Pmb=====
 
Lancez votre navigateur sur l'adresse :

http:''localhost/pmb/tables/install.php

J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.
 	
''Paramètres Système.''

Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
	   
Serveur : localhost

Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.

''Paramètres PMB par défaut''

Utilisateur : bibli

Base : bibli	 

''Données PMB''
	
Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http:''localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.


====Configuration post-install====

====Scripts d'import Unimarc====

Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 

&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;

chercher le bloc de lignes : 

&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section

		$data_doc=array();

		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);

		if (!$info_995[$nb_expl]['q'])
 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;

		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];

		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;

		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;

			else $data_doc['sdoc_owner'] = 0 ;

		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

====Sauvegarde automatisée====

Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.

=====Sauvegarde de la base=====

Créer le fichier sauvegarde.sh dans /root : 

&lt;code&gt;! /bin/bash

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

echo &quot;Sauvegarde terminée&quot; &gt;&gt; /root/sauvegarde.log

# Ce script éteint le serveur à la fin de la sauvegarde :

shutdown -h now&lt;/code&gt;

Rendez ce script executable :

&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;

Editez la crontab pour planifier la fréquence de la sauvegarde

&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;

&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;

et ajoutez la ligne 

&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;

pour une sauvegarde quotidienne à 18h30 par exemple

=====Restaurer la base===== 
d'abord créer une base vide :

&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;

puis on restaure :

&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>i04n151geev4g1omxidylykr7m2gdnt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4901</id>
      <parentid>4900</parentid>
      <timestamp>2013-01-18T08:24:25Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Configuration post-install */</comment>
      <text xml:space="preserve" bytes="16022">Dernière màj de la procédure en janvier 2013 sur la distribution **Debian Squeeze 6.0.6 stable** et le package **PMB4.0.2**

====Préambule====

Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez des versions de Linux Debian dites __stable__.

Si vous avez choisi **Ubuntu** vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour pouvoir installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :

biblio@ServeurPMB:~$ sudo passwd root

Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.

Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :

root@ServeurPMB:~# aptitude install gedit

Dans ce cas, les lignes de code décrites dans cette doc sous la forme :

root@ServeurPMB:~# vi /dossier/fichier

devront être interprétées :

root@ServeurPMB:~# gedit /dossier/fichier

/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...

====Configurer les ressources Debian====

Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :

biblio@ServeurPMB:~$ su

Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50'' 

deb http:''ftp.indexdata.dk/debian squeeze main

profitez-en aussi pour intégrer les ressources debian.fr

deb http:''ftp.fr.debian.org/debian/ squeeze main

et commentez les autres dépots 

#deb http:''ftp.debian.org/debian/ squeeze main
#deb-src http:''ftp.debian.org/debian/ squeeze main

Enregistrer et quitter vi (touche esc puis :wq).
A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':

wget http:''ftp.indexdata.dk/debian/indexdata.asc

root@ServeurPMB:~# apt-key add indexdata.asc

Puis mettez à jour votre gestionnaire de packages

root@ServeurPMB:~# aptitude update

Les ressources officielles pour php-yaz :

http:''www.indexdata.dk
ftp:''ftp.indexdata.dk/pub/debian/dists

====Installation du serveur Apache====

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :

root@ServeurPMB:~#aptitude install apache2-mpm-prefork

Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :

root@ServeurPMB:~#vi /etc/apache2/apache2.conf

ajoutez la ligne :

ServerName 127.0.0.1

Enregistrer et quittez ''Vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :

http:''localhost/

ou

http:''adresseIPdevotreServeurPMB/

Une fenêtre ♫♪ It Works ! ♪♫ s'ouvre et vous informe que Apache fonctionne correctement .

====Installer MySQL5====

/!\ le package mysql-server-5.5 n'a pas été déclaré suffisamment stable pour être intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur MySQL avec la commande :

root@ServeurPMB:~#aptitude install mysql-server-5.1

Une fois les packages  installés, nous devons configurer un mot de passe pour le root MySQL, il est possible que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :

root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1

Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 
Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root MySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''serveur MySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 

root@ServeurPMB:~# vi /etc/mysql/my.cnf

et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 

max_allowed_packet = 250 M

250M devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mysql afin de prendre en compte ces nouveaux paramètres avec  : 

root@ServeurPMB:~# /etc/init.d/mysql restart

====Php5 et ses extensions====

Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.
/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.

root@ServeurPMB:~#aptitude install php5

Installez maintenant les extensions Php5:

root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl

Un message d'avertissement peut apparaitre :

&lt;nowiki&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/nowiki&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :

root@ServeurPMB:~# vi /etc/php5/apache2/php.ini

Rechercher et modifier les paramètres ci dessous en fonction de la base et augmenter considérablement le ''max_execution_time'' :

max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Redémarrez le serveur Apache :

root@ServeurPMB:~# /etc/init.d/apache2 restart

Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :

root@ServeurPMB:~# vi /var/www/phpinfo.php 

il doit contenir :

&lt;?php
phpinfo();
?&gt; 

Ensuite, lancez votre navigateur sur :

http:''localhost/phpinfo.php

ou

http:''adresseIPdevotreserveur/phpinfo.php

Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

====PhpMyAdmin====

PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).

root@ServeurPMB:~#aptitude install phpmyadmin

Puis tapez dans la barre d'adresse de votre navigateur :

root@ServeurPMB:~#localhost/phpmyadmin

L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root __mysql__ défini au chapitre : «  4-installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : http:''www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html

====Installation de PMB====

=====L'archive PMB=====
Téléchargez l'archive PMB depuis le site http:''www.pmbservices.fr sur votre bureau
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
biblio@ServeurPMB:~$ su
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :

root@ServeurPMB:~# cd /home/biblio/Bureau

Ensuite décompressez l'archive:

root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/

Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :

root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www

=====Définir les droits d'accès à /var/www/pmb=====
 
Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :

root@ServeurPMB:~# cd /var

On définit le propriétaire du répertoire /www :

root@ServeurPMB:~# chown -R www-data:www-data www

Déplacez vous dans le répertoire www :

root@ServeurPMB:~# cd www

On  définit les droits sur les fichiers :

root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;

On définit les droits sur les dossiers :

root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;

=====Installation de la base Pmb=====
 
Lancez votre navigateur sur l'adresse :

http:''localhost/pmb/tables/install.php

J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.
 	
''Paramètres Système.''

Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
	   
Serveur : localhost

Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.

''Paramètres PMB par défaut''

Utilisateur : bibli

Base : bibli	 

''Données PMB''
	
Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http:''localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.


===Configuration post-install===

====Scripts d'import Unimarc====

Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 

&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;

chercher le bloc de lignes : 

&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section

		$data_doc=array();

		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);

		if (!$info_995[$nb_expl]['q'])
 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;

		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];

		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;

		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;

			else $data_doc['sdoc_owner'] = 0 ;

		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

====Sauvegarde automatisée====

Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.

=====Sauvegarde de la base=====

Créer le fichier sauvegarde.sh dans /root : 

&lt;code&gt;! /bin/bash

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

echo &quot;Sauvegarde terminée&quot; &gt;&gt; /root/sauvegarde.log

# Ce script éteint le serveur à la fin de la sauvegarde :

shutdown -h now&lt;/code&gt;

Rendez ce script executable :

&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;

Editez la crontab pour planifier la fréquence de la sauvegarde

&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;

&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;

et ajoutez la ligne 

&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;

pour une sauvegarde quotidienne à 18h30 par exemple

=====Restaurer la base===== 
d'abord créer une base vide :

&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;

puis on restaure :

&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>cxzmyj40t27gduildskdbhlagh5he6u</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4902</id>
      <parentid>4901</parentid>
      <timestamp>2013-01-18T08:26:35Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Préambule */</comment>
      <text xml:space="preserve" bytes="16064">Dernière màj de la procédure en janvier 2013 sur la distribution **Debian Squeeze 6.0.6 stable** et le package **PMB4.0.2**

===Préambule===

Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez des versions de Linux Debian dites __stable__.

Si vous avez choisi **Ubuntu** vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour pouvoir installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.

Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...

====Configurer les ressources Debian====

Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :

biblio@ServeurPMB:~$ su

Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50'' 

deb http:''ftp.indexdata.dk/debian squeeze main

profitez-en aussi pour intégrer les ressources debian.fr

deb http:''ftp.fr.debian.org/debian/ squeeze main

et commentez les autres dépots 

#deb http:''ftp.debian.org/debian/ squeeze main
#deb-src http:''ftp.debian.org/debian/ squeeze main

Enregistrer et quitter vi (touche esc puis :wq).
A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':

wget http:''ftp.indexdata.dk/debian/indexdata.asc

root@ServeurPMB:~# apt-key add indexdata.asc

Puis mettez à jour votre gestionnaire de packages

root@ServeurPMB:~# aptitude update

Les ressources officielles pour php-yaz :

http:''www.indexdata.dk
ftp:''ftp.indexdata.dk/pub/debian/dists

====Installation du serveur Apache====

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :

root@ServeurPMB:~#aptitude install apache2-mpm-prefork

Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :

root@ServeurPMB:~#vi /etc/apache2/apache2.conf

ajoutez la ligne :

ServerName 127.0.0.1

Enregistrer et quittez ''Vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :

http:''localhost/

ou

http:''adresseIPdevotreServeurPMB/

Une fenêtre ♫♪ It Works ! ♪♫ s'ouvre et vous informe que Apache fonctionne correctement .

====Installer MySQL5====

/!\ le package mysql-server-5.5 n'a pas été déclaré suffisamment stable pour être intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur MySQL avec la commande :

root@ServeurPMB:~#aptitude install mysql-server-5.1

Une fois les packages  installés, nous devons configurer un mot de passe pour le root MySQL, il est possible que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :

root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1

Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 
Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root MySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''serveur MySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 

root@ServeurPMB:~# vi /etc/mysql/my.cnf

et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 

max_allowed_packet = 250 M

250M devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mysql afin de prendre en compte ces nouveaux paramètres avec  : 

root@ServeurPMB:~# /etc/init.d/mysql restart

====Php5 et ses extensions====

Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.
/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.

root@ServeurPMB:~#aptitude install php5

Installez maintenant les extensions Php5:

root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl

Un message d'avertissement peut apparaitre :

&lt;nowiki&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/nowiki&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :

root@ServeurPMB:~# vi /etc/php5/apache2/php.ini

Rechercher et modifier les paramètres ci dessous en fonction de la base et augmenter considérablement le ''max_execution_time'' :

max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Redémarrez le serveur Apache :

root@ServeurPMB:~# /etc/init.d/apache2 restart

Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :

root@ServeurPMB:~# vi /var/www/phpinfo.php 

il doit contenir :

&lt;?php
phpinfo();
?&gt; 

Ensuite, lancez votre navigateur sur :

http:''localhost/phpinfo.php

ou

http:''adresseIPdevotreserveur/phpinfo.php

Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

====PhpMyAdmin====

PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).

root@ServeurPMB:~#aptitude install phpmyadmin

Puis tapez dans la barre d'adresse de votre navigateur :

root@ServeurPMB:~#localhost/phpmyadmin

L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root __mysql__ défini au chapitre : «  4-installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : http:''www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html

====Installation de PMB====

=====L'archive PMB=====
Téléchargez l'archive PMB depuis le site http:''www.pmbservices.fr sur votre bureau
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
biblio@ServeurPMB:~$ su
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :

root@ServeurPMB:~# cd /home/biblio/Bureau

Ensuite décompressez l'archive:

root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/

Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :

root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www

=====Définir les droits d'accès à /var/www/pmb=====
 
Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :

root@ServeurPMB:~# cd /var

On définit le propriétaire du répertoire /www :

root@ServeurPMB:~# chown -R www-data:www-data www

Déplacez vous dans le répertoire www :

root@ServeurPMB:~# cd www

On  définit les droits sur les fichiers :

root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;

On définit les droits sur les dossiers :

root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;

=====Installation de la base Pmb=====
 
Lancez votre navigateur sur l'adresse :

http:''localhost/pmb/tables/install.php

J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.
 	
''Paramètres Système.''

Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
	   
Serveur : localhost

Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.

''Paramètres PMB par défaut''

Utilisateur : bibli

Base : bibli	 

''Données PMB''
	
Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http:''localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.


===Configuration post-install===

====Scripts d'import Unimarc====

Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 

&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;

chercher le bloc de lignes : 

&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section

		$data_doc=array();

		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);

		if (!$info_995[$nb_expl]['q'])
 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;

		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];

		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;

		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;

			else $data_doc['sdoc_owner'] = 0 ;

		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

====Sauvegarde automatisée====

Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.

=====Sauvegarde de la base=====

Créer le fichier sauvegarde.sh dans /root : 

&lt;code&gt;! /bin/bash

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

echo &quot;Sauvegarde terminée&quot; &gt;&gt; /root/sauvegarde.log

# Ce script éteint le serveur à la fin de la sauvegarde :

shutdown -h now&lt;/code&gt;

Rendez ce script executable :

&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;

Editez la crontab pour planifier la fréquence de la sauvegarde

&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;

&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;

et ajoutez la ligne 

&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;

pour une sauvegarde quotidienne à 18h30 par exemple

=====Restaurer la base===== 
d'abord créer une base vide :

&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;

puis on restaure :

&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>obuq6vcc7odf7sleoukj1tytdv69yha</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4903</id>
      <parentid>4902</parentid>
      <timestamp>2013-01-18T08:37:21Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Préambule */</comment>
      <text xml:space="preserve" bytes="16296">Dernière màj de la procédure en janvier 2013 sur la distribution **Debian Squeeze 6.0.6 stable** et le package **PMB4.0.2**

===Préambule===
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.

Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...
===Configurer les ressources Debian===
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50'' 
&lt;code&gt;deb http:''ftp.indexdata.dk/debian squeeze main&lt;/code&gt;
profitez-en aussi pour intégrer les ressources debian.fr
&lt;code&gt;deb http:''ftp.fr.debian.org/debian/ squeeze main&lt;/code&gt;
et commentez les autres dépots 
&lt;code&gt;#deb http:''ftp.debian.org/debian/ squeeze main
#deb-src http:''ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':
&lt;code&gt;wget http:''ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;

Puis mettez à jour votre gestionnaire de packages

&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;

Les ressources officielles pour php-yaz :

http:''www.indexdata.dk
ftp:''ftp.indexdata.dk/pub/debian/dists

===Installation du serveur Apache===

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~#aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~#vi /etc/apache2/apache2.conf&lt;code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''Vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
&lt;code&gt;http://localhost/&lt;/code&gt;
ou
&lt;code&gt;http:''adresseIPdevotreServeurPMB&lt;/code&gt;
Une fenêtre ♫♪ It Works ! ♪♫ s'ouvre et vous informe que Apache fonctionne correctement .
===Installer MySQL5===
/!\ le package mysql-server-5.5 n'a pas été déclaré suffisamment stable pour être intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur MySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le root MySQL, il est possible que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root MySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''serveur MySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;code&gt;
250M devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mysql afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;code&gt;
===Php5 et ses extensions===
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.
/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~#aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5:
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de la base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.&lt;/code&gt;

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;/code&gt;&lt;?php
phpinfo();
?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :
http:''localhost/phpinfo.php

ou

http:''adresseIPdevotreserveur/phpinfo.php

Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

===PhpMyAdmin===

PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root __mysql__ défini au chapitre : «  4-installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : http:''www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html

===Installation de PMB===

====L'archive PMB====
Téléchargez l'archive PMB depuis le site http:''www.pmbservices.fr sur votre bureau
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
biblio@ServeurPMB:~$ su
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :

root@ServeurPMB:~# cd /home/biblio/Bureau

Ensuite décompressez l'archive:

root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/

Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :

root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www

====Définir les droits d'accès à /var/www/pmb====
 
Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :

root@ServeurPMB:~# cd /var

On définit le propriétaire du répertoire /www :

root@ServeurPMB:~# chown -R www-data:www-data www

Déplacez vous dans le répertoire www :

root@ServeurPMB:~# cd www

On  définit les droits sur les fichiers :

root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;

On définit les droits sur les dossiers :

root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;

====Installation de la base Pmb====
 
Lancez votre navigateur sur l'adresse :

http:''localhost/pmb/tables/install.php

J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.
 	
''Paramètres Système.''

Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
	   
Serveur : localhost

Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.

''Paramètres PMB par défaut''

Utilisateur : bibli

Base : bibli	 

''Données PMB''
	
Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http:''localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.

===Configuration post-install===

====Scripts d'import Unimarc====

Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 

&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;

chercher le bloc de lignes : 

&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section

		$data_doc=array();

		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);

		if (!$info_995[$nb_expl]['q'])
 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;

		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];

		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;

		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;

			else $data_doc['sdoc_owner'] = 0 ;

		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

====Sauvegarde automatisée====

Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.

=====Sauvegarde de la base=====

Créer le fichier sauvegarde.sh dans /root : 

&lt;code&gt;! /bin/bash

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

echo &quot;Sauvegarde terminée&quot; &gt;&gt; /root/sauvegarde.log

# Ce script éteint le serveur à la fin de la sauvegarde :

shutdown -h now&lt;/code&gt;

Rendez ce script executable :

&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;

Editez la crontab pour planifier la fréquence de la sauvegarde

&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;

&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;

et ajoutez la ligne 

&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;

pour une sauvegarde quotidienne à 18h30 par exemple

=====Restaurer la base===== 
d'abord créer une base vide :

&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;

puis on restaure :

&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>i7pm9fjcuzxqms6vu2poiv1oj4i7zm1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4904</id>
      <parentid>4903</parentid>
      <timestamp>2013-01-18T08:42:19Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Installer MySQL5 */</comment>
      <text xml:space="preserve" bytes="16258">Dernière màj de la procédure en janvier 2013 sur la distribution **Debian Squeeze 6.0.6 stable** et le package **PMB4.0.2**

===Préambule===
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.

Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...
===Configurer les ressources Debian===
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50'' 
&lt;code&gt;deb http:''ftp.indexdata.dk/debian squeeze main&lt;/code&gt;
profitez-en aussi pour intégrer les ressources debian.fr
&lt;code&gt;deb http:''ftp.fr.debian.org/debian/ squeeze main&lt;/code&gt;
et commentez les autres dépots 
&lt;code&gt;#deb http:''ftp.debian.org/debian/ squeeze main
#deb-src http:''ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':
&lt;code&gt;wget http:''ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;

Puis mettez à jour votre gestionnaire de packages

&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;

Les ressources officielles pour php-yaz :

http:''www.indexdata.dk
ftp:''ftp.indexdata.dk/pub/debian/dists

===Installation du serveur Apache===

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~#aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~#vi /etc/apache2/apache2.conf&lt;code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''Vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
&lt;code&gt;http://localhost/&lt;/code&gt;
ou
&lt;code&gt;http:''adresseIPdevotreServeurPMB&lt;/code&gt;
Une fenêtre ♫♪ It Works ! ♪♫ s'ouvre et vous informe que Apache fonctionne correctement .
===Installer MySQL5===
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
===Php5 et ses extensions===
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.
/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~#aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5:
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de la base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.&lt;/code&gt;

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;/code&gt;&lt;?php
phpinfo();
?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :
http:''localhost/phpinfo.php

ou

http:''adresseIPdevotreserveur/phpinfo.php

Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

===PhpMyAdmin===

PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root __mysql__ défini au chapitre : «  4-installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : http:''www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html

===Installation de PMB===

====L'archive PMB====
Téléchargez l'archive PMB depuis le site http:''www.pmbservices.fr sur votre bureau
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
biblio@ServeurPMB:~$ su
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :

root@ServeurPMB:~# cd /home/biblio/Bureau

Ensuite décompressez l'archive:

root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/

Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :

root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www

====Définir les droits d'accès à /var/www/pmb====
 
Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :

root@ServeurPMB:~# cd /var

On définit le propriétaire du répertoire /www :

root@ServeurPMB:~# chown -R www-data:www-data www

Déplacez vous dans le répertoire www :

root@ServeurPMB:~# cd www

On  définit les droits sur les fichiers :

root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;

On définit les droits sur les dossiers :

root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;

====Installation de la base Pmb====
 
Lancez votre navigateur sur l'adresse :

http:''localhost/pmb/tables/install.php

J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.
 	
''Paramètres Système.''

Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
	   
Serveur : localhost

Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.

''Paramètres PMB par défaut''

Utilisateur : bibli

Base : bibli	 

''Données PMB''
	
Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http:''localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.

===Configuration post-install===

====Scripts d'import Unimarc====

Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 

&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;

chercher le bloc de lignes : 

&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section

		$data_doc=array();

		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);

		if (!$info_995[$nb_expl]['q'])
 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;

		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];

		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;

		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;

			else $data_doc['sdoc_owner'] = 0 ;

		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

====Sauvegarde automatisée====

Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.

=====Sauvegarde de la base=====

Créer le fichier sauvegarde.sh dans /root : 

&lt;code&gt;! /bin/bash

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

echo &quot;Sauvegarde terminée&quot; &gt;&gt; /root/sauvegarde.log

# Ce script éteint le serveur à la fin de la sauvegarde :

shutdown -h now&lt;/code&gt;

Rendez ce script executable :

&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;

Editez la crontab pour planifier la fréquence de la sauvegarde

&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;

&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;

et ajoutez la ligne 

&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;

pour une sauvegarde quotidienne à 18h30 par exemple

=====Restaurer la base===== 
d'abord créer une base vide :

&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;

puis on restaure :

&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>s6xhppdxfrcov3asfnwc1b062lgmarx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4905</id>
      <parentid>4904</parentid>
      <timestamp>2013-01-18T08:49:34Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <text xml:space="preserve" bytes="16388">Dernière màj de la procédure en janvier 2013 sur la distribution ''Debian Squeeze 6.0.6 stable'' et le package ''PMB4.0.2''

===Préambule===
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.

Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...
===Configurer les ressources Debian===
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50'' 
&lt;code&gt;deb http:''ftp.indexdata.dk/debian squeeze main&lt;/code&gt;
profitez-en aussi pour intégrer les ressources debian.fr
&lt;code&gt;deb http:''ftp.fr.debian.org/debian/ squeeze main&lt;/code&gt;
et commentez les autres dépots 
&lt;code&gt;#deb http:''ftp.debian.org/debian/ squeeze main
#deb-src http:''ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':
&lt;code&gt;wget http:''ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;

Puis mettez à jour votre gestionnaire de packages

&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;

Les ressources officielles pour php-yaz :

http:''www.indexdata.dk
ftp:''ftp.indexdata.dk/pub/debian/dists

===Installation du serveur Apache===

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~#aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~#vi /etc/apache2/apache2.conf&lt;code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''Vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
&lt;code&gt;http://localhost/&lt;/code&gt;
ou
&lt;code&gt;http:''adresseIPdevotreServeurPMB&lt;/code&gt;
Une fenêtre ♫♪ It Works ! ♪♫ s'ouvre et vous informe que Apache fonctionne correctement .
===Installer MySQL5===
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
===Php5 et ses extensions===
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.
/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~#aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5:
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de la base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.&lt;/code&gt;

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;/code&gt;&lt;?php
phpinfo();
?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :
[[http://localhost/phpinfo.php]]
ou
[[http://adresseIPdevotreserveur/phpinfo.php]]
Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]
===PhpMyAdmin===
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root __mysql__ défini au chapitre : «  4-installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : http:''www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html
===Installation de PMB===
====L'archive PMB====
Téléchargez l'archive PMB depuis le site http:''www.pmbservices.fr sur votre bureau
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
====Définir les droits d'accès à /var/www/pmb====
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
====Installation de la base Pmb====
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http:''localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.

===Configuration post-install===

====Scripts d'import Unimarc====

Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 

&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;

chercher le bloc de lignes : 

&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section

		$data_doc=array();

		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);

		if (!$info_995[$nb_expl]['q'])
 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;

		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];

		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;

		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;

			else $data_doc['sdoc_owner'] = 0 ;

		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

====Sauvegarde automatisée====

Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.

=====Sauvegarde de la base=====

Créer le fichier sauvegarde.sh dans /root : 

&lt;code&gt;! /bin/bash

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

echo &quot;Sauvegarde terminée&quot; &gt;&gt; /root/sauvegarde.log

# Ce script éteint le serveur à la fin de la sauvegarde :

shutdown -h now&lt;/code&gt;

Rendez ce script executable :

&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;

Editez la crontab pour planifier la fréquence de la sauvegarde

&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;

&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;

et ajoutez la ligne 

&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;

pour une sauvegarde quotidienne à 18h30 par exemple

=====Restaurer la base===== 
d'abord créer une base vide :

&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;

puis on restaure :

&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>e3q40zx9id3pn24jfkfd55v3nyoe30c</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4906</id>
      <parentid>4905</parentid>
      <timestamp>2013-01-18T08:51:43Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Installation du serveur Apache */</comment>
      <text xml:space="preserve" bytes="16399">Dernière màj de la procédure en janvier 2013 sur la distribution ''Debian Squeeze 6.0.6 stable'' et le package ''PMB4.0.2''

===Préambule===
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.

Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...
===Configurer les ressources Debian===
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50'' 
&lt;code&gt;deb http:''ftp.indexdata.dk/debian squeeze main&lt;/code&gt;
profitez-en aussi pour intégrer les ressources debian.fr
&lt;code&gt;deb http:''ftp.fr.debian.org/debian/ squeeze main&lt;/code&gt;
et commentez les autres dépots 
&lt;code&gt;#deb http:''ftp.debian.org/debian/ squeeze main
#deb-src http:''ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':
&lt;code&gt;wget http:''ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;

Puis mettez à jour votre gestionnaire de packages

&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;

Les ressources officielles pour php-yaz :

http:''www.indexdata.dk
ftp:''ftp.indexdata.dk/pub/debian/dists

===Installation du serveur Apache===

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~#aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~#vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''Vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
&lt;code&gt;http://localhost/&lt;/code&gt;
ou
&lt;code&gt;http:''adresseIPdevotreServeurPMB&lt;/code&gt;
Une fenêtre ♫♪ It Works ! ♪♫ s'ouvre et vous informe que Apache fonctionne correctement .

===Installer MySQL5===
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
===Php5 et ses extensions===
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.
/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~#aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5:
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de la base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.&lt;/code&gt;

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;/code&gt;&lt;?php
phpinfo();
?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :
[[http://localhost/phpinfo.php]]
ou
[[http://adresseIPdevotreserveur/phpinfo.php]]
Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]
===PhpMyAdmin===
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root __mysql__ défini au chapitre : «  4-installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : http:''www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html
===Installation de PMB===
====L'archive PMB====
Téléchargez l'archive PMB depuis le site http:''www.pmbservices.fr sur votre bureau
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
====Définir les droits d'accès à /var/www/pmb====
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
====Installation de la base Pmb====
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http:''localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.

===Configuration post-install===

====Scripts d'import Unimarc====

Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 

&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;

chercher le bloc de lignes : 

&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section

		$data_doc=array();

		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);

		if (!$info_995[$nb_expl]['q'])
 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;

		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];

		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;

		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;

			else $data_doc['sdoc_owner'] = 0 ;

		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

====Sauvegarde automatisée====

Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.

=====Sauvegarde de la base=====

Créer le fichier sauvegarde.sh dans /root : 

&lt;code&gt;! /bin/bash

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

echo &quot;Sauvegarde terminée&quot; &gt;&gt; /root/sauvegarde.log

# Ce script éteint le serveur à la fin de la sauvegarde :

shutdown -h now&lt;/code&gt;

Rendez ce script executable :

&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;

Editez la crontab pour planifier la fréquence de la sauvegarde

&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;

&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;

et ajoutez la ligne 

&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;

pour une sauvegarde quotidienne à 18h30 par exemple

=====Restaurer la base===== 
d'abord créer une base vide :

&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;

puis on restaure :

&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>mq5q4em3jpj9a0h27t0xnmrfpni7ef1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4907</id>
      <parentid>4906</parentid>
      <timestamp>2013-01-18T08:53:11Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Installation du serveur Apache */</comment>
      <text xml:space="preserve" bytes="16381">Dernière màj de la procédure en janvier 2013 sur la distribution ''Debian Squeeze 6.0.6 stable'' et le package ''PMB4.0.2''

===Préambule===
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.

Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...
===Configurer les ressources Debian===
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50'' 
&lt;code&gt;deb http:''ftp.indexdata.dk/debian squeeze main&lt;/code&gt;
profitez-en aussi pour intégrer les ressources debian.fr
&lt;code&gt;deb http:''ftp.fr.debian.org/debian/ squeeze main&lt;/code&gt;
et commentez les autres dépots 
&lt;code&gt;#deb http:''ftp.debian.org/debian/ squeeze main
#deb-src http:''ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':
&lt;code&gt;wget http:''ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;

Puis mettez à jour votre gestionnaire de packages

&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;

Les ressources officielles pour php-yaz :

http:''www.indexdata.dk
ftp:''ftp.indexdata.dk/pub/debian/dists

===Installation du serveur Apache===

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~#aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~#vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ♫♪ It Works ! ♪♫ s'ouvre et vous informe que Apache fonctionne correctement .

===Installer MySQL5===
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
===Php5 et ses extensions===
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.
/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~#aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5:
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de la base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.&lt;/code&gt;

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;/code&gt;&lt;?php
phpinfo();
?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :
[[http://localhost/phpinfo.php]]
ou
[[http://adresseIPdevotreserveur/phpinfo.php]]
Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]
===PhpMyAdmin===
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root __mysql__ défini au chapitre : «  4-installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : http:''www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html
===Installation de PMB===
====L'archive PMB====
Téléchargez l'archive PMB depuis le site http:''www.pmbservices.fr sur votre bureau
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
====Définir les droits d'accès à /var/www/pmb====
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
====Installation de la base Pmb====
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http:''localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.

===Configuration post-install===

====Scripts d'import Unimarc====

Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 

&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;

chercher le bloc de lignes : 

&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section

		$data_doc=array();

		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);

		if (!$info_995[$nb_expl]['q'])
 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;

		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];

		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;

		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;

			else $data_doc['sdoc_owner'] = 0 ;

		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

====Sauvegarde automatisée====

Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.

=====Sauvegarde de la base=====

Créer le fichier sauvegarde.sh dans /root : 

&lt;code&gt;! /bin/bash

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

echo &quot;Sauvegarde terminée&quot; &gt;&gt; /root/sauvegarde.log

# Ce script éteint le serveur à la fin de la sauvegarde :

shutdown -h now&lt;/code&gt;

Rendez ce script executable :

&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;

Editez la crontab pour planifier la fréquence de la sauvegarde

&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;

&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;

et ajoutez la ligne 

&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;

pour une sauvegarde quotidienne à 18h30 par exemple

=====Restaurer la base===== 
d'abord créer une base vide :

&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;

puis on restaure :

&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>q612ecj6eznqsyf1gefmnd126992has</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4908</id>
      <parentid>4907</parentid>
      <timestamp>2013-01-18T08:55:00Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Php5 et ses extensions */</comment>
      <text xml:space="preserve" bytes="16375">Dernière màj de la procédure en janvier 2013 sur la distribution ''Debian Squeeze 6.0.6 stable'' et le package ''PMB4.0.2''

===Préambule===
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.

Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...
===Configurer les ressources Debian===
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50'' 
&lt;code&gt;deb http:''ftp.indexdata.dk/debian squeeze main&lt;/code&gt;
profitez-en aussi pour intégrer les ressources debian.fr
&lt;code&gt;deb http:''ftp.fr.debian.org/debian/ squeeze main&lt;/code&gt;
et commentez les autres dépots 
&lt;code&gt;#deb http:''ftp.debian.org/debian/ squeeze main
#deb-src http:''ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':
&lt;code&gt;wget http:''ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;

Puis mettez à jour votre gestionnaire de packages

&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;

Les ressources officielles pour php-yaz :

http:''www.indexdata.dk
ftp:''ftp.indexdata.dk/pub/debian/dists

===Installation du serveur Apache===

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~#aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~#vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ♫♪ It Works ! ♪♫ s'ouvre et vous informe que Apache fonctionne correctement .

===Installer MySQL5===
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
===Php5 et ses extensions===
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~#aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5:
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de la base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.&lt;/code&gt;

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;/code&gt;&lt;?php
phpinfo();
?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :
[[http://localhost/phpinfo.php]]
ou
[[http://adresseIPdevotreserveur/phpinfo.php]]
Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

===PhpMyAdmin===
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root __mysql__ défini au chapitre : «  4-installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : http:''www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html
===Installation de PMB===
====L'archive PMB====
Téléchargez l'archive PMB depuis le site http:''www.pmbservices.fr sur votre bureau
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
====Définir les droits d'accès à /var/www/pmb====
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
====Installation de la base Pmb====
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http:''localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.

===Configuration post-install===

====Scripts d'import Unimarc====

Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 

&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;

chercher le bloc de lignes : 

&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section

		$data_doc=array();

		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);

		if (!$info_995[$nb_expl]['q'])
 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;

		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];

		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;

		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;

			else $data_doc['sdoc_owner'] = 0 ;

		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

====Sauvegarde automatisée====

Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.

=====Sauvegarde de la base=====

Créer le fichier sauvegarde.sh dans /root : 

&lt;code&gt;! /bin/bash

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

echo &quot;Sauvegarde terminée&quot; &gt;&gt; /root/sauvegarde.log

# Ce script éteint le serveur à la fin de la sauvegarde :

shutdown -h now&lt;/code&gt;

Rendez ce script executable :

&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;

Editez la crontab pour planifier la fréquence de la sauvegarde

&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;

&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;

et ajoutez la ligne 

&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;

pour une sauvegarde quotidienne à 18h30 par exemple

=====Restaurer la base===== 
d'abord créer une base vide :

&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;

puis on restaure :

&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>cwfyb8v0m1gm24ds94kj0uf1txk8y7x</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4909</id>
      <parentid>4908</parentid>
      <timestamp>2013-01-18T09:05:43Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Sauvegarde automatisée */</comment>
      <text xml:space="preserve" bytes="16539">Dernière màj de la procédure en janvier 2013 sur la distribution ''Debian Squeeze 6.0.6 stable'' et le package ''PMB4.0.2''

===Préambule===
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.

Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...
===Configurer les ressources Debian===
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50'' 
&lt;code&gt;deb http:''ftp.indexdata.dk/debian squeeze main&lt;/code&gt;
profitez-en aussi pour intégrer les ressources debian.fr
&lt;code&gt;deb http:''ftp.fr.debian.org/debian/ squeeze main&lt;/code&gt;
et commentez les autres dépots 
&lt;code&gt;#deb http:''ftp.debian.org/debian/ squeeze main
#deb-src http:''ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':
&lt;code&gt;wget http:''ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;

Puis mettez à jour votre gestionnaire de packages

&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;

Les ressources officielles pour php-yaz :

http:''www.indexdata.dk
ftp:''ftp.indexdata.dk/pub/debian/dists

===Installation du serveur Apache===

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~#aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~#vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ♫♪ It Works ! ♪♫ s'ouvre et vous informe que Apache fonctionne correctement .

===Installer MySQL5===
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
===Php5 et ses extensions===
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~#aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5:
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de la base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.&lt;/code&gt;

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;/code&gt;&lt;?php
phpinfo();
?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :
[[http://localhost/phpinfo.php]]
ou
[[http://adresseIPdevotreserveur/phpinfo.php]]
Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

===PhpMyAdmin===
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root __mysql__ défini au chapitre : «  4-installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : http:''www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html
===Installation de PMB===
====L'archive PMB====
Téléchargez l'archive PMB depuis le site http:''www.pmbservices.fr sur votre bureau
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
====Définir les droits d'accès à /var/www/pmb====
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
====Installation de la base Pmb====
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http:''localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.

===Configuration post-install===

====Scripts d'import Unimarc====

Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 

&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;

chercher le bloc de lignes : 

&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section

		$data_doc=array();

		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);

		if (!$info_995[$nb_expl]['q'])
 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;

		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];

		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;

		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;

			else $data_doc['sdoc_owner'] = 0 ;

		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

====Sauvegarde automatisée====

Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.

=====Sauvegarde de la base=====

Créer le fichier sauvegarde.sh dans /root : 

&lt;code&gt;! /bin/bash

# Ce script enregistre un journal des évènements suivants : 
# démarrage de la sauvegarde, messages d'erreurs et fin de la sauvegarde.
# dans /root/sauvegarde.log

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes et on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

echo &quot;Sauvegarde terminée&quot; &gt;&gt; /root/sauvegarde.log

# on éteint le serveur à la fin de la sauvegarde :

shutdown -h now&lt;/code&gt;

Rendez ce script exécutable :

&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;

Editez la crontab pour planifier la fréquence de la sauvegarde

&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;

&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;

et ajoutez la ligne 

&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;

pour une sauvegarde quotidienne à 18h30 par exemple

=====Restaurer la base===== 
d'abord créer une base vide :

&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;

puis on restaure :

&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>4lnjt0azwcsuvcu1nlwiy9cgel43dfg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4910</id>
      <parentid>4909</parentid>
      <timestamp>2013-01-18T09:08:55Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Sauvegarde de la base */</comment>
      <text xml:space="preserve" bytes="16553">Dernière màj de la procédure en janvier 2013 sur la distribution ''Debian Squeeze 6.0.6 stable'' et le package ''PMB4.0.2''

===Préambule===
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.

Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...
===Configurer les ressources Debian===
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50'' 
&lt;code&gt;deb http:''ftp.indexdata.dk/debian squeeze main&lt;/code&gt;
profitez-en aussi pour intégrer les ressources debian.fr
&lt;code&gt;deb http:''ftp.fr.debian.org/debian/ squeeze main&lt;/code&gt;
et commentez les autres dépots 
&lt;code&gt;#deb http:''ftp.debian.org/debian/ squeeze main
#deb-src http:''ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':
&lt;code&gt;wget http:''ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;

Puis mettez à jour votre gestionnaire de packages

&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;

Les ressources officielles pour php-yaz :

http:''www.indexdata.dk
ftp:''ftp.indexdata.dk/pub/debian/dists

===Installation du serveur Apache===

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~#aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~#vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ♫♪ It Works ! ♪♫ s'ouvre et vous informe que Apache fonctionne correctement .

===Installer MySQL5===
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
===Php5 et ses extensions===
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~#aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5:
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de la base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.&lt;/code&gt;

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;/code&gt;&lt;?php
phpinfo();
?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :
[[http://localhost/phpinfo.php]]
ou
[[http://adresseIPdevotreserveur/phpinfo.php]]
Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

===PhpMyAdmin===
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root __mysql__ défini au chapitre : «  4-installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : http:''www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html
===Installation de PMB===
====L'archive PMB====
Téléchargez l'archive PMB depuis le site http:''www.pmbservices.fr sur votre bureau
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
====Définir les droits d'accès à /var/www/pmb====
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
====Installation de la base Pmb====
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http:''localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.

===Configuration post-install===

====Scripts d'import Unimarc====

Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 

&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;

chercher le bloc de lignes : 

&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section

		$data_doc=array();

		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);

		if (!$info_995[$nb_expl]['q'])
 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;

		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];

		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;

		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;

			else $data_doc['sdoc_owner'] = 0 ;

		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

====Sauvegarde automatisée====

Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.

=====Sauvegarde de la base=====

Créer le fichier sauvegarde.sh dans /root : 

&lt;code&gt;! /bin/bash

# Ce script enregistre un journal des évènements suivants : 
# démarrage de la sauvegarde, messages d'erreurs et fin de la sauvegarde.
# dans /root/sauvegarde.log

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes et on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

# On écrit dans le journal :

echo &quot;Sauvegarde du $(date)terminée&quot; &gt;&gt; /root/sauvegarde.log

# On éteint le serveur :

shutdown -h now&lt;/code&gt;

Rendez ce script exécutable :

&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;

Editez la crontab pour planifier la fréquence de la sauvegarde

&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;

&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;

et ajoutez la ligne 

&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;

pour une sauvegarde quotidienne à 18h30 par exemple

=====Restaurer la base===== 
d'abord créer une base vide :

&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;

puis on restaure :

&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>rehqxio2x1y22jphsn2vmfl17m9cg5g</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4911</id>
      <parentid>4910</parentid>
      <timestamp>2013-01-18T09:15:04Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Restaurer la base */</comment>
      <text xml:space="preserve" bytes="16634">Dernière màj de la procédure en janvier 2013 sur la distribution ''Debian Squeeze 6.0.6 stable'' et le package ''PMB4.0.2''

===Préambule===
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.

Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...
===Configurer les ressources Debian===
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50'' 
&lt;code&gt;deb http:''ftp.indexdata.dk/debian squeeze main&lt;/code&gt;
profitez-en aussi pour intégrer les ressources debian.fr
&lt;code&gt;deb http:''ftp.fr.debian.org/debian/ squeeze main&lt;/code&gt;
et commentez les autres dépots 
&lt;code&gt;#deb http:''ftp.debian.org/debian/ squeeze main
#deb-src http:''ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':
&lt;code&gt;wget http:''ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;

Puis mettez à jour votre gestionnaire de packages

&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;

Les ressources officielles pour php-yaz :

http:''www.indexdata.dk
ftp:''ftp.indexdata.dk/pub/debian/dists

===Installation du serveur Apache===

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~#aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~#vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ♫♪ It Works ! ♪♫ s'ouvre et vous informe que Apache fonctionne correctement .

===Installer MySQL5===
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
===Php5 et ses extensions===
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~#aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5:
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de la base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.&lt;/code&gt;

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;/code&gt;&lt;?php
phpinfo();
?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :
[[http://localhost/phpinfo.php]]
ou
[[http://adresseIPdevotreserveur/phpinfo.php]]
Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

===PhpMyAdmin===
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root __mysql__ défini au chapitre : «  4-installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : http:''www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html
===Installation de PMB===
====L'archive PMB====
Téléchargez l'archive PMB depuis le site http:''www.pmbservices.fr sur votre bureau
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
====Définir les droits d'accès à /var/www/pmb====
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
====Installation de la base Pmb====
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http:''localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.

===Configuration post-install===

====Scripts d'import Unimarc====

Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 

&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;

chercher le bloc de lignes : 

&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section

		$data_doc=array();

		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);

		if (!$info_995[$nb_expl]['q'])
 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;

		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];

		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;

		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;

			else $data_doc['sdoc_owner'] = 0 ;

		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

====Sauvegarde automatisée====

Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.

=====Sauvegarde de la base=====

Créer le fichier sauvegarde.sh dans /root : 

&lt;code&gt;! /bin/bash

# Ce script enregistre un journal des évènements suivants : 
# démarrage de la sauvegarde, messages d'erreurs et fin de la sauvegarde.
# dans /root/sauvegarde.log

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes et on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

# On écrit dans le journal :

echo &quot;Sauvegarde du $(date)terminée&quot; &gt;&gt; /root/sauvegarde.log

# On éteint le serveur :

shutdown -h now&lt;/code&gt;

Rendez ce script exécutable :

&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;

Editez la crontab pour planifier la fréquence de la sauvegarde

&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;

&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;

et ajoutez la ligne 

&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;

pour une sauvegarde quotidienne à 18h30 par exemple

=====Restaurer la base===== 
d'abord créer une base vide :

&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;

on dezippe la sauvegarde : 

&lt;code&gt;ServeurPmb:~# gunzip /save/sauvegarde.sql.gz

puis on restaure :

&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>rl7mmmwnqdcf6omfnnsjf9qbx37wlgm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4912</id>
      <parentid>4911</parentid>
      <timestamp>2013-01-18T09:21:38Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <text xml:space="preserve" bytes="16618">Dernière màj de la procédure en janvier 2013 sur la distribution ''Debian Squeeze 6.0.6 stable'' et le package ''PMB4.0.2''

===Préambule===
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.
a
Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...
===Configurer les ressources Debian===
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50'' 
[[deb http://ftp.indexdata.dk/debian squeeze main]]
profitez-en aussi pour intégrer les ressources debian.fr
[[deb http://'ftp.fr.debian.org/debian/ squeeze main]]
et commentez les autres dépots 
&lt;code&gt;#deb http://ftp.debian.org/debian/ squeeze main
#deb-src http://ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':
&lt;code&gt;wget http:''ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;

Puis mettez à jour votre gestionnaire de packages

&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;

Les ressources officielles pour php-yaz :

http:''www.indexdata.dk
ftp:''ftp.indexdata.dk/pub/debian/dists

===Installation du serveur Apache===

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~#aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~#vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ♫♪ It Works ! ♪♫ s'ouvre et vous informe que Apache fonctionne correctement .

===Installer MySQL5===
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
===Php5 et ses extensions===
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~#aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5:
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de la base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.&lt;/code&gt;

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;/code&gt;&lt;?php
phpinfo();
?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :
[[http://localhost/phpinfo.php]]
ou
[[http://adresseIPdevotreserveur/phpinfo.php]]
Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

===PhpMyAdmin===
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root __mysql__ défini au chapitre : «  4-installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : http:''www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html
===Installation de PMB===
====L'archive PMB====
Téléchargez l'archive PMB depuis le site http:''www.pmbservices.fr sur votre bureau
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
====Définir les droits d'accès à /var/www/pmb====
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
====Installation de la base Pmb====
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http:''localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.

===Configuration post-install===

====Scripts d'import Unimarc====

Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 

&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;

chercher le bloc de lignes : 

&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section

		$data_doc=array();

		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);

		if (!$info_995[$nb_expl]['q'])
 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;

		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];

		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;

		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;

			else $data_doc['sdoc_owner'] = 0 ;

		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

====Sauvegarde automatisée====

Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.

=====Sauvegarde de la base=====

Créer le fichier sauvegarde.sh dans /root : 

&lt;code&gt;! /bin/bash

# Ce script enregistre un journal des évènements suivants : 
# démarrage de la sauvegarde, messages d'erreurs et fin de la sauvegarde.
# dans /root/sauvegarde.log

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes et on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

# On écrit dans le journal :

echo &quot;Sauvegarde du $(date)terminée&quot; &gt;&gt; /root/sauvegarde.log

# On éteint le serveur :

shutdown -h now&lt;/code&gt;

Rendez ce script exécutable :

&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;

Editez la crontab pour planifier la fréquence de la sauvegarde

&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;

&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;

et ajoutez la ligne 

&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;

pour une sauvegarde quotidienne à 18h30 par exemple

=====Restaurer la base===== 
d'abord créer une base vide :

&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;

on dezippe la sauvegarde : 

&lt;code&gt;ServeurPmb:~# gunzip /save/sauvegarde.sql.gz

puis on restaure :

&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>ovzggn9kfz41bl8j3g4nsw2h41ymb4w</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4913</id>
      <parentid>4912</parentid>
      <timestamp>2013-01-18T09:23:45Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <text xml:space="preserve" bytes="16625">Dernière màj de la procédure en janvier 2013 sur la distribution ''Debian Squeeze 6.0.6 stable'' et le package ''PMB4.0.2''

===Préambule===
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.
a
Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...
===Configurer les ressources Debian===
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50'' 
[[deb http://ftp.indexdata.dk/debian squeeze main]]
profitez-en aussi pour intégrer les ressources debian.fr
[[deb http://ftp.fr.debian.org/debian/ squeeze main]]
et commentez les autres dépots 
&lt;code&gt;#deb http://ftp.debian.org/debian/ squeeze main
#deb-src http://ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':
&lt;code&gt;wget http://ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;

Puis mettez à jour votre gestionnaire de packages

&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;

Les ressources officielles pour php-yaz :

[[http://www.indexdata.dk]]
[[ftp://ftp.indexdata.dk/pub/debian/dists]]

===Installation du serveur Apache===

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~#aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~#vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ♫♪ It Works ! ♪♫ s'ouvre et vous informe que Apache fonctionne correctement .

===Installer MySQL5===
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
===Php5 et ses extensions===
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~#aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5:
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de la base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.&lt;/code&gt;

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;/code&gt;&lt;?php
phpinfo();
?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :
[[http://localhost/phpinfo.php]]
ou
[[http://adresseIPdevotreserveur/phpinfo.php]]
Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

===PhpMyAdmin===
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root __mysql__ défini au chapitre : «  4-installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : http:''www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html
===Installation de PMB===
====L'archive PMB====
Téléchargez l'archive PMB depuis le site http:''www.pmbservices.fr sur votre bureau
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
====Définir les droits d'accès à /var/www/pmb====
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
====Installation de la base Pmb====
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http:''localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.

===Configuration post-install===

====Scripts d'import Unimarc====

Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 

&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;

chercher le bloc de lignes : 

&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section

		$data_doc=array();

		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);

		if (!$info_995[$nb_expl]['q'])
 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;

		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];

		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;

		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;

			else $data_doc['sdoc_owner'] = 0 ;

		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

====Sauvegarde automatisée====

Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.

=====Sauvegarde de la base=====

Créer le fichier sauvegarde.sh dans /root : 

&lt;code&gt;! /bin/bash

# Ce script enregistre un journal des évènements suivants : 
# démarrage de la sauvegarde, messages d'erreurs et fin de la sauvegarde.
# dans /root/sauvegarde.log

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes et on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

# On écrit dans le journal :

echo &quot;Sauvegarde du $(date)terminée&quot; &gt;&gt; /root/sauvegarde.log

# On éteint le serveur :

shutdown -h now&lt;/code&gt;

Rendez ce script exécutable :

&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;

Editez la crontab pour planifier la fréquence de la sauvegarde

&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;

&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;

et ajoutez la ligne 

&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;

pour une sauvegarde quotidienne à 18h30 par exemple

=====Restaurer la base===== 
d'abord créer une base vide :

&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;

on dezippe la sauvegarde : 

&lt;code&gt;ServeurPmb:~# gunzip /save/sauvegarde.sql.gz

puis on restaure :

&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>pxhxii6ic3d82edxlaln0jdblmgv37n</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4914</id>
      <parentid>4913</parentid>
      <timestamp>2013-01-18T09:25:27Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* PhpMyAdmin */</comment>
      <text xml:space="preserve" bytes="16625">Dernière màj de la procédure en janvier 2013 sur la distribution ''Debian Squeeze 6.0.6 stable'' et le package ''PMB4.0.2''

===Préambule===
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.
a
Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...
===Configurer les ressources Debian===
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50'' 
[[deb http://ftp.indexdata.dk/debian squeeze main]]
profitez-en aussi pour intégrer les ressources debian.fr
[[deb http://ftp.fr.debian.org/debian/ squeeze main]]
et commentez les autres dépots 
&lt;code&gt;#deb http://ftp.debian.org/debian/ squeeze main
#deb-src http://ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':
&lt;code&gt;wget http://ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;

Puis mettez à jour votre gestionnaire de packages

&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;

Les ressources officielles pour php-yaz :

[[http://www.indexdata.dk]]
[[ftp://ftp.indexdata.dk/pub/debian/dists]]

===Installation du serveur Apache===

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~#aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~#vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ♫♪ It Works ! ♪♫ s'ouvre et vous informe que Apache fonctionne correctement .

===Installer MySQL5===
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
===Php5 et ses extensions===
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~#aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5:
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de la base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.&lt;/code&gt;

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;/code&gt;&lt;?php
phpinfo();
?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :
[[http://localhost/phpinfo.php]]
ou
[[http://adresseIPdevotreserveur/phpinfo.php]]
Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

===PhpMyAdmin===
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root ''mysql'' défini au chapitre 4) installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : [[http://www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html]]

===Installation de PMB===
====L'archive PMB====
Téléchargez l'archive PMB depuis le site http:''www.pmbservices.fr sur votre bureau
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
====Définir les droits d'accès à /var/www/pmb====
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
====Installation de la base Pmb====
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http:''localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.

===Configuration post-install===

====Scripts d'import Unimarc====

Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 

&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;

chercher le bloc de lignes : 

&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section

		$data_doc=array();

		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);

		if (!$info_995[$nb_expl]['q'])
 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;

		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];

		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;

		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;

			else $data_doc['sdoc_owner'] = 0 ;

		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

====Sauvegarde automatisée====

Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.

=====Sauvegarde de la base=====

Créer le fichier sauvegarde.sh dans /root : 

&lt;code&gt;! /bin/bash

# Ce script enregistre un journal des évènements suivants : 
# démarrage de la sauvegarde, messages d'erreurs et fin de la sauvegarde.
# dans /root/sauvegarde.log

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes et on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

# On écrit dans le journal :

echo &quot;Sauvegarde du $(date)terminée&quot; &gt;&gt; /root/sauvegarde.log

# On éteint le serveur :

shutdown -h now&lt;/code&gt;

Rendez ce script exécutable :

&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;

Editez la crontab pour planifier la fréquence de la sauvegarde

&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;

&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;

et ajoutez la ligne 

&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;

pour une sauvegarde quotidienne à 18h30 par exemple

=====Restaurer la base===== 
d'abord créer une base vide :

&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;

on dezippe la sauvegarde : 

&lt;code&gt;ServeurPmb:~# gunzip /save/sauvegarde.sql.gz

puis on restaure :

&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>hqb5w2kzo6sem0dk7dv7zvv5jw6pb21</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4915</id>
      <parentid>4914</parentid>
      <timestamp>2013-01-18T09:32:38Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <text xml:space="preserve" bytes="16637">Dernière màj de la procédure en janvier 2013 sur la distribution ''Debian Squeeze 6.0.6 stable'' et le package ''PMB4.0.2''

version PDF de ce tutoriel dispo @ 

===Préambule===
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.
a
Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...
===Configurer les ressources Debian===
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50'' 
[[deb http://ftp.indexdata.dk/debian squeeze main]]
profitez-en aussi pour intégrer les ressources debian.fr
[[deb http://ftp.fr.debian.org/debian/ squeeze main]]
et commentez les autres dépots 
&lt;code&gt;#deb http://ftp.debian.org/debian/ squeeze main
#deb-src http://ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':
&lt;code&gt;wget http://ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;

Puis mettez à jour votre gestionnaire de packages

&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;

Les ressources officielles pour php-yaz :

[[http://www.indexdata.dk]]
[[ftp://ftp.indexdata.dk/pub/debian/dists]]

===Installation du serveur Apache===

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~#aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~#vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ♫♪ It Works ! ♪♫ s'ouvre et vous informe que Apache fonctionne correctement .

===Installer MySQL5===
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
===Php5 et ses extensions===
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~#aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5:
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de la base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.&lt;/code&gt;

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;/code&gt;&lt;?php
phpinfo();
?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :
[[http://localhost/phpinfo.php]]
ou
[[http://adresseIPdevotreserveur/phpinfo.php]]
Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

===PhpMyAdmin===
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root ''mysql'' défini au chapitre 4) installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : [[http://www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html]]

===Installation de PMB===
====L'archive PMB====
Téléchargez l'archive PMB depuis le site http:''www.pmbservices.fr sur votre bureau
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
====Définir les droits d'accès à /var/www/pmb====
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
====Installation de la base Pmb====
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http://localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.
===Configuration post-install===
====Scripts d'import Unimarc====
Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 
&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;
chercher le bloc de lignes : 
&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section

		$data_doc=array();

		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);

		if (!$info_995[$nb_expl]['q'])
 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;

		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];

		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;

		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;

			else $data_doc['sdoc_owner'] = 0 ;

		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;
====Sauvegarde automatisée====
Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.
=====Sauvegarde de la base=====
Créer le fichier sauvegarde.sh dans /root : 
&lt;code&gt;! /bin/bash
# Ce script enregistre un journal des évènements suivants : 
# démarrage de la sauvegarde, messages d'erreurs et fin de la sauvegarde.
# dans /root/sauvegarde.log

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes et on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

# On écrit dans le journal :

echo &quot;Sauvegarde du $(date)terminée&quot; &gt;&gt; /root/sauvegarde.log

# On éteint le serveur :

shutdown -h now&lt;/code&gt;

Rendez ce script exécutable :
&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;
Editez la crontab pour planifier la fréquence de la sauvegarde
&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;
&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;
et ajoutez la ligne 
&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;
pour une sauvegarde quotidienne à 18h30 par exemple
=====Restaurer la base===== 
d'abord créer une base vide :
&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;
on dezippe la sauvegarde : 
&lt;code&gt;ServeurPmb:~# gunzip /save/sauvegarde.sql.gz
puis on restaure :
&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>5x259n40w71004sozuri5feuw9wm5j4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4916</id>
      <parentid>4915</parentid>
      <timestamp>2013-01-18T09:33:46Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <text xml:space="preserve" bytes="16691">Dernière màj de la procédure en janvier 2013 sur la distribution ''Debian Squeeze 6.0.6 stable'' et le package ''PMB4.0.2''

La version PDF de ce tutoriel est dispo @ http://download.tuxfamily.org/biblinuxiens/doc/

===Préambule===
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.
a
Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...
===Configurer les ressources Debian===
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50'' 
[[deb http://ftp.indexdata.dk/debian squeeze main]]
profitez-en aussi pour intégrer les ressources debian.fr
[[deb http://ftp.fr.debian.org/debian/ squeeze main]]
et commentez les autres dépots 
&lt;code&gt;#deb http://ftp.debian.org/debian/ squeeze main
#deb-src http://ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':
&lt;code&gt;wget http://ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;

Puis mettez à jour votre gestionnaire de packages

&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;

Les ressources officielles pour php-yaz :

[[http://www.indexdata.dk]]
[[ftp://ftp.indexdata.dk/pub/debian/dists]]

===Installation du serveur Apache===

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~#aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~#vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ♫♪ It Works ! ♪♫ s'ouvre et vous informe que Apache fonctionne correctement .

===Installer MySQL5===
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
===Php5 et ses extensions===
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~#aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5:
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de la base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.&lt;/code&gt;

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;/code&gt;&lt;?php
phpinfo();
?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :
[[http://localhost/phpinfo.php]]
ou
[[http://adresseIPdevotreserveur/phpinfo.php]]
Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

===PhpMyAdmin===
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root ''mysql'' défini au chapitre 4) installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : [[http://www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html]]

===Installation de PMB===
====L'archive PMB====
Téléchargez l'archive PMB depuis le site http:''www.pmbservices.fr sur votre bureau
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
====Définir les droits d'accès à /var/www/pmb====
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
====Installation de la base Pmb====
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http://localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.
===Configuration post-install===
====Scripts d'import Unimarc====
Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 
&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;
chercher le bloc de lignes : 
&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section

		$data_doc=array();

		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);

		if (!$info_995[$nb_expl]['q'])
 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;

		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];

		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;

		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;

			else $data_doc['sdoc_owner'] = 0 ;

		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;
====Sauvegarde automatisée====
Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.
=====Sauvegarde de la base=====
Créer le fichier sauvegarde.sh dans /root : 
&lt;code&gt;! /bin/bash
# Ce script enregistre un journal des évènements suivants : 
# démarrage de la sauvegarde, messages d'erreurs et fin de la sauvegarde.
# dans /root/sauvegarde.log

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes et on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

# On écrit dans le journal :

echo &quot;Sauvegarde du $(date)terminée&quot; &gt;&gt; /root/sauvegarde.log

# On éteint le serveur :

shutdown -h now&lt;/code&gt;

Rendez ce script exécutable :
&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;
Editez la crontab pour planifier la fréquence de la sauvegarde
&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;
&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;
et ajoutez la ligne 
&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;
pour une sauvegarde quotidienne à 18h30 par exemple
=====Restaurer la base===== 
d'abord créer une base vide :
&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;
on dezippe la sauvegarde : 
&lt;code&gt;ServeurPmb:~# gunzip /save/sauvegarde.sql.gz
puis on restaure :
&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>qyql09430i9x122kyae8vrigu1ci4qh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4917</id>
      <parentid>4916</parentid>
      <timestamp>2013-01-18T09:37:19Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <text xml:space="preserve" bytes="16695">Dernière màj de la procédure en janvier 2013 sur la distribution ''Debian Squeeze 6.0.6 stable'' et le package ''PMB4.0.2''

La version PDF de ce tutoriel est dispo @ http://download.tuxfamily.org/biblinuxiens/doc/

===Préambule===
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.
a
Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...
===Configurer les ressources Debian===
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50'' 
[[deb http://ftp.indexdata.dk/debian squeeze main]]
profitez-en aussi pour intégrer les ressources debian.fr
[[deb http://ftp.fr.debian.org/debian/ squeeze main]]
et commentez les autres dépots 
&lt;code&gt;#deb http://ftp.debian.org/debian/ squeeze main
#deb-src http://ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':
&lt;code&gt;wget http://ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;

Puis mettez à jour votre gestionnaire de packages

&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;

Les ressources officielles pour php-yaz :

[[http://www.indexdata.dk]]
[[ftp://ftp.indexdata.dk/pub/debian/dists]]

===Installation du serveur Apache===

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~#aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~#vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ♫♪ It Works ! ♪♫ s'ouvre et vous informe que Apache fonctionne correctement .

===Installer MySQL5===
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
===Php5 et ses extensions===
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~#aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5:
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de la base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.&lt;/code&gt;

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;/code&gt;&lt;?php
phpinfo();
?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :
[[http://localhost/phpinfo.php]]
ou
[[http://adresseIPdevotreserveur/phpinfo.php]]
Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

===PhpMyAdmin===
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root ''mysql'' défini au chapitre 4) installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : [[http://www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html]]

===Installation de PMB===
====L'archive PMB====
Téléchargez l'archive PMB depuis le site [[http://www.pmbservices.fr sur votre bureau]]
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
====Définir les droits d'accès à /var/www/pmb====
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
====Installation de la base Pmb====
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http://localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.
===Configuration post-install===
====Scripts d'import Unimarc====
Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 
&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;
chercher le bloc de lignes : 
&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section

		$data_doc=array();

		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);

		if (!$info_995[$nb_expl]['q'])
 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;

		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];

		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;

		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;

			else $data_doc['sdoc_owner'] = 0 ;

		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;
====Sauvegarde automatisée====
Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.
=====Sauvegarde de la base=====
Créer le fichier sauvegarde.sh dans /root : 
&lt;code&gt;! /bin/bash
# Ce script enregistre un journal des évènements suivants : 
# démarrage de la sauvegarde, messages d'erreurs et fin de la sauvegarde.
# dans /root/sauvegarde.log

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes et on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

# On écrit dans le journal :

echo &quot;Sauvegarde du $(date)terminée&quot; &gt;&gt; /root/sauvegarde.log

# On éteint le serveur :

shutdown -h now&lt;/code&gt;

Rendez ce script exécutable :
&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;
Editez la crontab pour planifier la fréquence de la sauvegarde
&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;
&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;
et ajoutez la ligne 
&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;
pour une sauvegarde quotidienne à 18h30 par exemple
=====Restaurer la base===== 
d'abord créer une base vide :
&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;
on dezippe la sauvegarde : 
&lt;code&gt;ServeurPmb:~# gunzip /save/sauvegarde.sql.gz
puis on restaure :
&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>bgwxf2u19xb733bb1vcz3x4guy8ypxy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4918</id>
      <parentid>4917</parentid>
      <timestamp>2013-01-18T09:42:21Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <text xml:space="preserve" bytes="16657">Dernière màj de la procédure en janvier 2013 sur la distribution ''Debian Squeeze 6.0.6 stable'' et le package ''PMB4.0.2''

La version PDF de ce tutoriel est dispo @ http://download.tuxfamily.org/biblinuxiens/doc/

==Préambule==
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.
a
Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...
==Configurer les ressources Debian==
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50'' 
[[deb http://ftp.indexdata.dk/debian squeeze main]]
profitez-en aussi pour intégrer les ressources debian.fr
[[deb http://ftp.fr.debian.org/debian/ squeeze main]]
et commentez les autres dépots 
&lt;code&gt;#deb http://ftp.debian.org/debian/ squeeze main
#deb-src http://ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':
&lt;code&gt;wget http://ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;

Puis mettez à jour votre gestionnaire de packages

&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;

Les ressources officielles pour php-yaz :

[[http://www.indexdata.dk]]
[[ftp://ftp.indexdata.dk/pub/debian/dists]]

==Installation du serveur Apache==

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~#aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~#vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ?? It Works ! ?? s'ouvre et vous informe que Apache fonctionne correctement .

==Installer MySQL5==
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
==Php5 et ses extensions==
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~#aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5:
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de la base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.&lt;/code&gt;

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;/code&gt;&lt;?php
phpinfo();
?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :
[[http://localhost/phpinfo.php]]
ou
[[http://adresseIPdevotreserveur/phpinfo.php]]
Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

==PhpMyAdmin==
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root ''mysql'' défini au chapitre 4) installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : [[http://www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html]]

==Installation de PMB==
===L'archive PMB===
Téléchargez l'archive PMB depuis le site [[http://www.pmbservices.fr sur votre bureau]]
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
===Définir les droits d'accès à /var/www/pmb===
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
===Installation de la base Pmb===
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http://localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.
==Configuration post-install==
===Scripts d'import Unimarc===
Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 
&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;
chercher le bloc de lignes : 
&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section

		$data_doc=array();

		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);

		if (!$info_995[$nb_expl]['q'])
 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;

		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];

		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;

		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;

			else $data_doc['sdoc_owner'] = 0 ;

		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;
===Sauvegarde automatisée===
Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.
====Sauvegarde de la base====
Créer le fichier sauvegarde.sh dans /root : 
&lt;code&gt;! /bin/bash
# Ce script enregistre un journal des évènements suivants : 
# démarrage de la sauvegarde, messages d'erreurs et fin de la sauvegarde.
# dans /root/sauvegarde.log

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes et on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

# On écrit dans le journal :

echo &quot;Sauvegarde du $(date)terminée&quot; &gt;&gt; /root/sauvegarde.log

# On éteint le serveur :

shutdown -h now&lt;/code&gt;

Rendez ce script exécutable :
&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;
Editez la crontab pour planifier la fréquence de la sauvegarde
&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;
&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;
et ajoutez la ligne 
&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;
pour une sauvegarde quotidienne à 18h30 par exemple
====Restaurer la base==== 
d'abord créer une base vide :
&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;
on dezippe la sauvegarde : 
&lt;code&gt;ServeurPmb:~# gunzip /save/sauvegarde.sql.gz
puis on restaure :
&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>7h7uumqg4yujjctzg3q1eqklhmcrmyo</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4919</id>
      <parentid>4918</parentid>
      <timestamp>2013-01-18T09:44:42Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <text xml:space="preserve" bytes="16639">Dernière màj de la procédure en janvier 2013 sur la distribution ''Debian Squeeze 6.0.6 stable'' et le package ''PMB4.0.2''

La version PDF de ce tutoriel est dispo @ http://download.tuxfamily.org/biblinuxiens/doc/

==Préambule==
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.
a
Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...
==Configurer les ressources Debian==
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50'' 
[[deb http://ftp.indexdata.dk/debian squeeze main]]
profitez-en aussi pour intégrer les ressources debian.fr
[[deb http://ftp.fr.debian.org/debian/ squeeze main]]
et commentez les autres dépots 
&lt;code&gt;#deb http://ftp.debian.org/debian/ squeeze main
#deb-src http://ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':
&lt;code&gt;wget http://ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;

Puis mettez à jour votre gestionnaire de packages

&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;

Les ressources officielles pour php-yaz :

[[http://www.indexdata.dk]]
[[ftp://ftp.indexdata.dk/pub/debian/dists]]

==Installation du serveur Apache==

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~#aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~#vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ?? It Works ! ?? s'ouvre et vous informe que Apache fonctionne correctement .

==Installer MySQL5==
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
==Php5 et ses extensions==
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~#aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5:
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de la base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.&lt;/code&gt;

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;/code&gt;&lt;?php
phpinfo();
?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :
[[http://localhost/phpinfo.php]]
ou
[[http://adresseIPdevotreserveur/phpinfo.php]]
Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

==PhpMyAdmin==
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root ''mysql'' défini au chapitre 4) installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : [[http://www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html]]
==Installation de PMB==
===L'archive PMB===
Téléchargez l'archive PMB depuis le site [[http://www.pmbservices.fr]]
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
===Définir les droits d'accès à /var/www/pmb===
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
===Installation de la base Pmb===
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http://localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.
==Configuration post-install==
===Scripts d'import Unimarc===
Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 
&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;
chercher le bloc de lignes : 
&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section

		$data_doc=array();

		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);

		if (!$info_995[$nb_expl]['q'])
 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;

		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];

		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;

		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;

			else $data_doc['sdoc_owner'] = 0 ;

		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;
===Sauvegarde automatisée===
Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.
====Sauvegarde de la base====
Créer le fichier sauvegarde.sh dans /root : 
&lt;code&gt;! /bin/bash
# Ce script enregistre un journal des évènements suivants : 
# démarrage de la sauvegarde, messages d'erreurs et fin de la sauvegarde.
# dans /root/sauvegarde.log

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes et on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

# On écrit dans le journal :

echo &quot;Sauvegarde du $(date)terminée&quot; &gt;&gt; /root/sauvegarde.log

# On éteint le serveur :

shutdown -h now&lt;/code&gt;

Rendez ce script exécutable :
&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;
Editez la crontab pour planifier la fréquence de la sauvegarde
&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;
&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;
et ajoutez la ligne 
&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;
pour une sauvegarde quotidienne à 18h30 par exemple
====Restaurer la base==== 
d'abord créer une base vide :
&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;
on dezippe la sauvegarde : 
&lt;code&gt;ServeurPmb:~# gunzip /save/sauvegarde.sql.gz
puis on restaure :
&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>hwghnxudmxwhpry9kk5t12i7i8ce92o</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4920</id>
      <parentid>4919</parentid>
      <timestamp>2013-01-18T09:46:24Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Configurer les ressources Debian */</comment>
      <text xml:space="preserve" bytes="16642">Dernière màj de la procédure en janvier 2013 sur la distribution ''Debian Squeeze 6.0.6 stable'' et le package ''PMB4.0.2''

La version PDF de ce tutoriel est dispo @ http://download.tuxfamily.org/biblinuxiens/doc/

==Préambule==
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.
a
Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...
==Configurer les ressources Debian==
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50''

[[deb http://ftp.indexdata.dk/debian squeeze main]]

profitez-en aussi pour intégrer les ressources debian.fr

[[deb http://ftp.fr.debian.org/debian/ squeeze main]]

et commentez les autres dépots 
&lt;code&gt;#deb http://ftp.debian.org/debian/ squeeze main
#deb-src http://ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':
&lt;code&gt;wget http://ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;

Puis mettez à jour votre gestionnaire de packages

&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;

Les ressources officielles pour php-yaz :

[[http://www.indexdata.dk]]
[[ftp://ftp.indexdata.dk/pub/debian/dists]]

==Installation du serveur Apache==

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~#aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~#vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ?? It Works ! ?? s'ouvre et vous informe que Apache fonctionne correctement .

==Installer MySQL5==
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
==Php5 et ses extensions==
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~#aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5:
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de la base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.&lt;/code&gt;

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;/code&gt;&lt;?php
phpinfo();
?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :
[[http://localhost/phpinfo.php]]
ou
[[http://adresseIPdevotreserveur/phpinfo.php]]
Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

==PhpMyAdmin==
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root ''mysql'' défini au chapitre 4) installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : [[http://www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html]]
==Installation de PMB==
===L'archive PMB===
Téléchargez l'archive PMB depuis le site [[http://www.pmbservices.fr]]
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
===Définir les droits d'accès à /var/www/pmb===
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
===Installation de la base Pmb===
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http://localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.
==Configuration post-install==
===Scripts d'import Unimarc===
Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 
&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;
chercher le bloc de lignes : 
&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section

		$data_doc=array();

		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);

		if (!$info_995[$nb_expl]['q'])
 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;

		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];

		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;

		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;

			else $data_doc['sdoc_owner'] = 0 ;

		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;
===Sauvegarde automatisée===
Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.
====Sauvegarde de la base====
Créer le fichier sauvegarde.sh dans /root : 
&lt;code&gt;! /bin/bash
# Ce script enregistre un journal des évènements suivants : 
# démarrage de la sauvegarde, messages d'erreurs et fin de la sauvegarde.
# dans /root/sauvegarde.log

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes et on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

# On écrit dans le journal :

echo &quot;Sauvegarde du $(date)terminée&quot; &gt;&gt; /root/sauvegarde.log

# On éteint le serveur :

shutdown -h now&lt;/code&gt;

Rendez ce script exécutable :
&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;
Editez la crontab pour planifier la fréquence de la sauvegarde
&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;
&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;
et ajoutez la ligne 
&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;
pour une sauvegarde quotidienne à 18h30 par exemple
====Restaurer la base==== 
d'abord créer une base vide :
&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;
on dezippe la sauvegarde : 
&lt;code&gt;ServeurPmb:~# gunzip /save/sauvegarde.sql.gz
puis on restaure :
&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>rr2skfjj4jua4e7xaz9x6kqansfob8d</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4921</id>
      <parentid>4920</parentid>
      <timestamp>2013-01-18T09:48:51Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Configurer les ressources Debian */</comment>
      <text xml:space="preserve" bytes="16724">Dernière màj de la procédure en janvier 2013 sur la distribution ''Debian Squeeze 6.0.6 stable'' et le package ''PMB4.0.2''

La version PDF de ce tutoriel est dispo @ http://download.tuxfamily.org/biblinuxiens/doc/

==Préambule==
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.
a
Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...
==Configurer les ressources Debian==
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50''

&lt;code&gt;deb http://ftp.indexdata.dk/debian squeeze main&lt;/code&gt;

profitez-en aussi pour intégrer les ressources debian.fr

&lt;code&gt;deb http://ftp.fr.debian.org/debian/ squeeze main&lt;/code&gt;

et commentez les autres dépots 
&lt;code&gt;#deb http://ftp.debian.org/debian/ squeeze main
#deb-src http://ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':
&lt;code&gt;wget http://ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;

Puis mettez à jour votre gestionnaire de packages

&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;

Les ressources officielles pour php-yaz :

[[http://www.indexdata.dk http://www.indexdata.dk]]
[[ftp://ftp.indexdata.dk/pub/debian/dists ftp://ftp.indexdata.dk/pub/debian/dists]]

==Installation du serveur Apache==

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~#aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~#vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ?? It Works ! ?? s'ouvre et vous informe que Apache fonctionne correctement .

==Installer MySQL5==
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
==Php5 et ses extensions==
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~#aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5:
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de la base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.&lt;/code&gt;

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;/code&gt;&lt;?php
phpinfo();
?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :
[[http://localhost/phpinfo.php]]
ou
[[http://adresseIPdevotreserveur/phpinfo.php]]
Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

==PhpMyAdmin==
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root ''mysql'' défini au chapitre 4) installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : [[http://www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html]]
==Installation de PMB==
===L'archive PMB===
Téléchargez l'archive PMB depuis le site [[http://www.pmbservices.fr]]
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
===Définir les droits d'accès à /var/www/pmb===
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
===Installation de la base Pmb===
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http://localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.
==Configuration post-install==
===Scripts d'import Unimarc===
Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 
&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;
chercher le bloc de lignes : 
&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section

		$data_doc=array();

		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);

		if (!$info_995[$nb_expl]['q'])
 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;

		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];

		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;

		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;

			else $data_doc['sdoc_owner'] = 0 ;

		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;
===Sauvegarde automatisée===
Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.
====Sauvegarde de la base====
Créer le fichier sauvegarde.sh dans /root : 
&lt;code&gt;! /bin/bash
# Ce script enregistre un journal des évènements suivants : 
# démarrage de la sauvegarde, messages d'erreurs et fin de la sauvegarde.
# dans /root/sauvegarde.log

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes et on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

# On écrit dans le journal :

echo &quot;Sauvegarde du $(date)terminée&quot; &gt;&gt; /root/sauvegarde.log

# On éteint le serveur :

shutdown -h now&lt;/code&gt;

Rendez ce script exécutable :
&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;
Editez la crontab pour planifier la fréquence de la sauvegarde
&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;
&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;
et ajoutez la ligne 
&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;
pour une sauvegarde quotidienne à 18h30 par exemple
====Restaurer la base==== 
d'abord créer une base vide :
&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;
on dezippe la sauvegarde : 
&lt;code&gt;ServeurPmb:~# gunzip /save/sauvegarde.sql.gz
puis on restaure :
&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>d4c9tqbpcr7zj94xdsuorhd4quxg74z</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4922</id>
      <parentid>4921</parentid>
      <timestamp>2013-01-18T09:58:41Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <text xml:space="preserve" bytes="16731">Dernière màj de la procédure en janvier 2013 sur la distribution ''Debian Squeeze 6.0.6 stable'' et le package ''PMB4.0.2''

La version PDF de ce tutoriel est dispo @ http://download.tuxfamily.org/biblinuxiens/doc/

==Préambule==
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.
a
Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...
==Configurer les ressources Debian==
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50''

&lt;code&gt;deb http://ftp.indexdata.dk/debian squeeze main&lt;/code&gt;

profitez-en aussi pour intégrer les ressources debian.fr

&lt;code&gt;deb http://ftp.fr.debian.org/debian/ squeeze main&lt;/code&gt;

et commentez les autres dépots 
&lt;code&gt;#deb http://ftp.debian.org/debian/ squeeze main
#deb-src http://ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':
&lt;code&gt;wget http://ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;

Puis mettez à jour votre gestionnaire de packages

&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;

Les ressources officielles pour php-yaz :

[[http://www.indexdata.dk http://www.indexdata.dk]]
[[ftp://ftp.indexdata.dk/pub/debian/dists ftp://ftp.indexdata.dk/pub/debian/dists]]

==Installation du serveur Apache==

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~#aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~#vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ?? It Works ! ?? s'ouvre et vous informe que Apache fonctionne correctement .

==Installer MySQL5==
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
==Php5 et ses extensions==
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~#aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5:
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de la base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.&lt;/code&gt;

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;/code&gt;&lt;?php
phpinfo();
?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :
[[http://localhost/phpinfo.php]]
ou
[[http://adresseIPdevotreserveur/phpinfo.php]]
Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

==PhpMyAdmin==
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root ''mysql'' défini au chapitre 4) installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : [[http://www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html]]
==Installation de PMB==
===L'archive PMB===
Téléchargez l'archive PMB depuis le site [[http://www.pmbservices.fr]]
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
===Définir les droits d'accès à /var/www/pmb===
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
===Installation de la base Pmb===
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http://localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.
==Configuration post-install==
===Scripts d'import Unimarc===
Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 
&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;
chercher le bloc de lignes : 
&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section

		$data_doc=array();

		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);

		if (!$info_995[$nb_expl]['q'])
 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;

		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];

		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;

		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;

			else $data_doc['sdoc_owner'] = 0 ;

		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;
===Sauvegarde automatisée===
Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.
====Sauvegarde de la base====
Créer le fichier sauvegarde.sh dans /root : 
&lt;code&gt;! /bin/bash
# Ce script enregistre un journal des évènements suivants : 
# démarrage de la sauvegarde, messages d'erreurs et fin de la sauvegarde.
# dans /root/sauvegarde.log

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes et on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

# On écrit dans le journal :

echo &quot;Sauvegarde du $(date)terminée&quot; &gt;&gt; /root/sauvegarde.log

# On éteint le serveur :

shutdown -h now&lt;/code&gt;

Rendez ce script exécutable :
&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;
Editez la crontab pour planifier la fréquence de la sauvegarde
&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;
&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;
et ajoutez la ligne 
&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;
pour une sauvegarde quotidienne à 18h30 par exemple
====Restaurer la base==== 
d'abord créer une base vide :
&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;
on dezippe la sauvegarde : 
&lt;code&gt;ServeurPmb:~# gunzip /save/sauvegarde.sql.gz&lt;/code&gt;
puis on restaure :
&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>jf9ajent2p4owgukpqgq6xp69zllhwr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4923</id>
      <parentid>4922</parentid>
      <timestamp>2013-01-18T10:11:45Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <text xml:space="preserve" bytes="16848">Dernière màj de la procédure en janvier 2013 sur la distribution ''Debian Squeeze 6.0.6 stable'' et le package ''PMB4.0.2''

Tutoriel proposé par [https://www.isalo.org/wiki.debian-fr/index.php?title=Utilisateur:LaurentBDP976 LaurentBDP976]
La version PDF de ce tutoriel est dispo @ http://download.tuxfamily.org/biblinuxiens/doc/

==Préambule==
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.
a
Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...
==Configurer les ressources Debian==
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50''

&lt;code&gt;deb http://ftp.indexdata.dk/debian squeeze main&lt;/code&gt;

profitez-en aussi pour intégrer les ressources debian.fr

&lt;code&gt;deb http://ftp.fr.debian.org/debian/ squeeze main&lt;/code&gt;

et commentez les autres dépots 
&lt;code&gt;#deb http://ftp.debian.org/debian/ squeeze main
#deb-src http://ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':
&lt;code&gt;wget http://ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;

Puis mettez à jour votre gestionnaire de packages

&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;

Les ressources officielles pour php-yaz :

[[http://www.indexdata.dk http://www.indexdata.dk]]
[[ftp://ftp.indexdata.dk/pub/debian/dists ftp://ftp.indexdata.dk/pub/debian/dists]]

==Installation du serveur Apache==

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~#aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~#vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ?? It Works ! ?? s'ouvre et vous informe que Apache fonctionne correctement .

==Installer MySQL5==
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
==Php5 et ses extensions==
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~#aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5:
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de la base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.&lt;/code&gt;

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;/code&gt;&lt;?php
phpinfo();
?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :
[[http://localhost/phpinfo.php]]
ou
[[http://adresseIPdevotreserveur/phpinfo.php]]
Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

==PhpMyAdmin==
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root ''mysql'' défini au chapitre 4) installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : [[http://www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html]]
==Installation de PMB==
===L'archive PMB===
Téléchargez l'archive PMB depuis le site [[http://www.pmbservices.fr]]
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
===Définir les droits d'accès à /var/www/pmb===
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
===Installation de la base Pmb===
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http://localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.
==Configuration post-install==
===Scripts d'import Unimarc===
Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 
&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;
chercher le bloc de lignes : 
&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section

		$data_doc=array();

		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);

		if (!$info_995[$nb_expl]['q'])
 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;

		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];

		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;

		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;

			else $data_doc['sdoc_owner'] = 0 ;

		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;
===Sauvegarde automatisée===
Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.
====Sauvegarde de la base====
Créer le fichier sauvegarde.sh dans /root : 
&lt;code&gt;! /bin/bash
# Ce script enregistre un journal des évènements suivants : 
# démarrage de la sauvegarde, messages d'erreurs et fin de la sauvegarde.
# dans /root/sauvegarde.log

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes et on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

# On écrit dans le journal :

echo &quot;Sauvegarde du $(date)terminée&quot; &gt;&gt; /root/sauvegarde.log

# On éteint le serveur :

shutdown -h now&lt;/code&gt;

Rendez ce script exécutable :
&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;
Editez la crontab pour planifier la fréquence de la sauvegarde
&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;
&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;
et ajoutez la ligne 
&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;
pour une sauvegarde quotidienne à 18h30 par exemple
====Restaurer la base==== 
d'abord créer une base vide :
&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;
on dezippe la sauvegarde : 
&lt;code&gt;ServeurPmb:~# gunzip /save/sauvegarde.sql.gz&lt;/code&gt;
puis on restaure :
&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>dyxefy6uxhjwudiwfeptie34s5me55u</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4924</id>
      <parentid>4923</parentid>
      <timestamp>2013-01-18T10:21:57Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Installation du serveur Apache */</comment>
      <text xml:space="preserve" bytes="16850">Dernière màj de la procédure en janvier 2013 sur la distribution ''Debian Squeeze 6.0.6 stable'' et le package ''PMB4.0.2''

Tutoriel proposé par [https://www.isalo.org/wiki.debian-fr/index.php?title=Utilisateur:LaurentBDP976 LaurentBDP976]
La version PDF de ce tutoriel est dispo @ http://download.tuxfamily.org/biblinuxiens/doc/

==Préambule==
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.
a
Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...
==Configurer les ressources Debian==
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50''

&lt;code&gt;deb http://ftp.indexdata.dk/debian squeeze main&lt;/code&gt;

profitez-en aussi pour intégrer les ressources debian.fr

&lt;code&gt;deb http://ftp.fr.debian.org/debian/ squeeze main&lt;/code&gt;

et commentez les autres dépots 
&lt;code&gt;#deb http://ftp.debian.org/debian/ squeeze main
#deb-src http://ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':
&lt;code&gt;wget http://ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;

Puis mettez à jour votre gestionnaire de packages

&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;

Les ressources officielles pour php-yaz :

[[http://www.indexdata.dk http://www.indexdata.dk]]
[[ftp://ftp.indexdata.dk/pub/debian/dists ftp://ftp.indexdata.dk/pub/debian/dists]]

==Installation du serveur Apache==

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~# aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ?? It Works ! ?? s'ouvre et vous informe que Apache fonctionne correctement .

==Installer MySQL5==
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
==Php5 et ses extensions==
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~#aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5:
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de la base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.&lt;/code&gt;

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;/code&gt;&lt;?php
phpinfo();
?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :
[[http://localhost/phpinfo.php]]
ou
[[http://adresseIPdevotreserveur/phpinfo.php]]
Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

==PhpMyAdmin==
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root ''mysql'' défini au chapitre 4) installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : [[http://www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html]]
==Installation de PMB==
===L'archive PMB===
Téléchargez l'archive PMB depuis le site [[http://www.pmbservices.fr]]
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
===Définir les droits d'accès à /var/www/pmb===
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
===Installation de la base Pmb===
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http://localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.
==Configuration post-install==
===Scripts d'import Unimarc===
Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 
&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;
chercher le bloc de lignes : 
&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section

		$data_doc=array();

		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);

		if (!$info_995[$nb_expl]['q'])
 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;

		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];

		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;

		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;

			else $data_doc['sdoc_owner'] = 0 ;

		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;
===Sauvegarde automatisée===
Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.
====Sauvegarde de la base====
Créer le fichier sauvegarde.sh dans /root : 
&lt;code&gt;! /bin/bash
# Ce script enregistre un journal des évènements suivants : 
# démarrage de la sauvegarde, messages d'erreurs et fin de la sauvegarde.
# dans /root/sauvegarde.log

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes et on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

# On écrit dans le journal :

echo &quot;Sauvegarde du $(date)terminée&quot; &gt;&gt; /root/sauvegarde.log

# On éteint le serveur :

shutdown -h now&lt;/code&gt;

Rendez ce script exécutable :
&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;
Editez la crontab pour planifier la fréquence de la sauvegarde
&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;
&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;
et ajoutez la ligne 
&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;
pour une sauvegarde quotidienne à 18h30 par exemple
====Restaurer la base==== 
d'abord créer une base vide :
&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;
on dezippe la sauvegarde : 
&lt;code&gt;ServeurPmb:~# gunzip /save/sauvegarde.sql.gz&lt;/code&gt;
puis on restaure :
&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>hrmfutp8y8y3kvyimuugywpwipa8299</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4925</id>
      <parentid>4924</parentid>
      <timestamp>2013-01-18T10:25:59Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Php5 et ses extensions */</comment>
      <text xml:space="preserve" bytes="17003">Dernière màj de la procédure en janvier 2013 sur la distribution ''Debian Squeeze 6.0.6 stable'' et le package ''PMB4.0.2''

Tutoriel proposé par [https://www.isalo.org/wiki.debian-fr/index.php?title=Utilisateur:LaurentBDP976 LaurentBDP976]
La version PDF de ce tutoriel est dispo @ http://download.tuxfamily.org/biblinuxiens/doc/

==Préambule==
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.
a
Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...
==Configurer les ressources Debian==
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50''

&lt;code&gt;deb http://ftp.indexdata.dk/debian squeeze main&lt;/code&gt;

profitez-en aussi pour intégrer les ressources debian.fr

&lt;code&gt;deb http://ftp.fr.debian.org/debian/ squeeze main&lt;/code&gt;

et commentez les autres dépots 
&lt;code&gt;#deb http://ftp.debian.org/debian/ squeeze main
#deb-src http://ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':
&lt;code&gt;wget http://ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;

Puis mettez à jour votre gestionnaire de packages

&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;

Les ressources officielles pour php-yaz :

[[http://www.indexdata.dk http://www.indexdata.dk]]
[[ftp://ftp.indexdata.dk/pub/debian/dists ftp://ftp.indexdata.dk/pub/debian/dists]]

==Installation du serveur Apache==

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~# aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ?? It Works ! ?? s'ouvre et vous informe que Apache fonctionne correctement .

==Installer MySQL5==
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
==Php5 et ses extensions==
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~# aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5 :
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de votre base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 250M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 250M 
upload_max_filesize = 250M.&lt;/code&gt;

Ces paramètres devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois ces valeurs. 
Dans le cas de grosses bases les ré-indexations de la base peuvent durer plusieurs heures, le max_execution_time devra donc être porté à 36000.
Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;/code&gt;&lt;?php
phpinfo();
?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :
[[http://localhost/phpinfo.php]]
ou
[[http://adresseIPdevotreserveur/phpinfo.php]]
Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

==PhpMyAdmin==
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root ''mysql'' défini au chapitre 4) installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : [[http://www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html]]
==Installation de PMB==
===L'archive PMB===
Téléchargez l'archive PMB depuis le site [[http://www.pmbservices.fr]]
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
===Définir les droits d'accès à /var/www/pmb===
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
===Installation de la base Pmb===
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http://localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.
==Configuration post-install==
===Scripts d'import Unimarc===
Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 
&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;
chercher le bloc de lignes : 
&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section

		$data_doc=array();

		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);

		if (!$info_995[$nb_expl]['q'])
 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;

		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];

		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;

		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;

			else $data_doc['sdoc_owner'] = 0 ;

		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;
===Sauvegarde automatisée===
Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.
====Sauvegarde de la base====
Créer le fichier sauvegarde.sh dans /root : 
&lt;code&gt;! /bin/bash
# Ce script enregistre un journal des évènements suivants : 
# démarrage de la sauvegarde, messages d'erreurs et fin de la sauvegarde.
# dans /root/sauvegarde.log

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes et on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

# On écrit dans le journal :

echo &quot;Sauvegarde du $(date)terminée&quot; &gt;&gt; /root/sauvegarde.log

# On éteint le serveur :

shutdown -h now&lt;/code&gt;

Rendez ce script exécutable :
&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;
Editez la crontab pour planifier la fréquence de la sauvegarde
&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;
&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;
et ajoutez la ligne 
&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;
pour une sauvegarde quotidienne à 18h30 par exemple
====Restaurer la base==== 
d'abord créer une base vide :
&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;
on dezippe la sauvegarde : 
&lt;code&gt;ServeurPmb:~# gunzip /save/sauvegarde.sql.gz&lt;/code&gt;
puis on restaure :
&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>2hb716h2d18cu40q89dq99etug9jxzz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4926</id>
      <parentid>4925</parentid>
      <timestamp>2013-01-18T10:30:16Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>aire grossit</comment>
      <text xml:space="preserve" bytes="16970">Dernière màj de la procédure en janvier 2013 sur la distribution ''Debian Squeeze 6.0.6 stable'' et le package ''PMB4.0.2''

Tutoriel proposé par [https://www.isalo.org/wiki.debian-fr/index.php?title=Utilisateur:LaurentBDP976 LaurentBDP976]
La version PDF de ce tutoriel est dispo @ http://download.tuxfamily.org/biblinuxiens/doc/

==Préambule==
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.
a
Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...
==Configurer les ressources Debian==
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50''

&lt;code&gt;deb http://ftp.indexdata.dk/debian squeeze main&lt;/code&gt;

profitez-en aussi pour intégrer les ressources debian.fr

&lt;code&gt;deb http://ftp.fr.debian.org/debian/ squeeze main&lt;/code&gt;

et commentez les autres dépots 
&lt;code&gt;#deb http://ftp.debian.org/debian/ squeeze main
#deb-src http://ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':
&lt;code&gt;wget http://ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;

Puis mettez à jour votre gestionnaire de packages

&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;

Les ressources officielles pour php-yaz :

[[http://www.indexdata.dk http://www.indexdata.dk]]
[[ftp://ftp.indexdata.dk/pub/debian/dists ftp://ftp.indexdata.dk/pub/debian/dists]]

==Installation du serveur Apache==

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~# aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ?? It Works ! ?? s'ouvre et vous informe que Apache fonctionne correctement .

==Installer MySQL5==
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
==Php5 et ses extensions==
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~# aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5 :
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de votre base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 512M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 512M 
upload_max_filesize = 512M.&lt;/code&gt;

Ces paramètres devraient convenir à la plupart des bibliothèques. 
Dans le cas de grosses structures possédant des fonds documentaires  importants, les ré-indexations de la base peuvent durer plusieurs heures, le max_execution_time devra donc être porté à 36000. 

Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;/code&gt;&lt;?php
phpinfo();
?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :
[[http://localhost/phpinfo.php]]
ou
[[http://adresseIPdevotreserveur/phpinfo.php]]
Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

==PhpMyAdmin==
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root ''mysql'' défini au chapitre 4) installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : [[http://www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html]]
==Installation de PMB==
===L'archive PMB===
Téléchargez l'archive PMB depuis le site [[http://www.pmbservices.fr]]
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
===Définir les droits d'accès à /var/www/pmb===
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
===Installation de la base Pmb===
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http://localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.
==Configuration post-install==
===Scripts d'import Unimarc===
Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 
&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;
chercher le bloc de lignes : 
&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section

		$data_doc=array();

		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);

		if (!$info_995[$nb_expl]['q'])
 
			$info_995[$nb_expl]['q'] = &quot;u&quot;;

		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];

		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;

		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;

			else $data_doc['sdoc_owner'] = 0 ;

		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;

et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;
===Sauvegarde automatisée===
Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.
====Sauvegarde de la base====
Créer le fichier sauvegarde.sh dans /root : 
&lt;code&gt;! /bin/bash
# Ce script enregistre un journal des évènements suivants : 
# démarrage de la sauvegarde, messages d'erreurs et fin de la sauvegarde.
# dans /root/sauvegarde.log

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes et on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

# On écrit dans le journal :

echo &quot;Sauvegarde du $(date)terminée&quot; &gt;&gt; /root/sauvegarde.log

# On éteint le serveur :

shutdown -h now&lt;/code&gt;

Rendez ce script exécutable :
&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;
Editez la crontab pour planifier la fréquence de la sauvegarde
&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;
&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;
et ajoutez la ligne 
&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;
pour une sauvegarde quotidienne à 18h30 par exemple
====Restaurer la base==== 
d'abord créer une base vide :
&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;
on dezippe la sauvegarde : 
&lt;code&gt;ServeurPmb:~# gunzip /save/sauvegarde.sql.gz&lt;/code&gt;
puis on restaure :
&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>560gd3nb2cmj3v6tpy06hemgp4tz57h</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4927</id>
      <parentid>4926</parentid>
      <timestamp>2013-01-18T11:25:57Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Scripts d'import Unimarc */</comment>
      <text xml:space="preserve" bytes="16961">Dernière màj de la procédure en janvier 2013 sur la distribution ''Debian Squeeze 6.0.6 stable'' et le package ''PMB4.0.2''

Tutoriel proposé par [https://www.isalo.org/wiki.debian-fr/index.php?title=Utilisateur:LaurentBDP976 LaurentBDP976]
La version PDF de ce tutoriel est dispo @ http://download.tuxfamily.org/biblinuxiens/doc/

==Préambule==
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.
a
Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...
==Configurer les ressources Debian==
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50''

&lt;code&gt;deb http://ftp.indexdata.dk/debian squeeze main&lt;/code&gt;

profitez-en aussi pour intégrer les ressources debian.fr

&lt;code&gt;deb http://ftp.fr.debian.org/debian/ squeeze main&lt;/code&gt;

et commentez les autres dépots 
&lt;code&gt;#deb http://ftp.debian.org/debian/ squeeze main
#deb-src http://ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':
&lt;code&gt;wget http://ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;

Puis mettez à jour votre gestionnaire de packages

&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;

Les ressources officielles pour php-yaz :

[[http://www.indexdata.dk http://www.indexdata.dk]]
[[ftp://ftp.indexdata.dk/pub/debian/dists ftp://ftp.indexdata.dk/pub/debian/dists]]

==Installation du serveur Apache==

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~# aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ?? It Works ! ?? s'ouvre et vous informe que Apache fonctionne correctement .

==Installer MySQL5==
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
==Php5 et ses extensions==
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~# aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5 :
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de votre base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 512M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 512M 
upload_max_filesize = 512M.&lt;/code&gt;

Ces paramètres devraient convenir à la plupart des bibliothèques. 
Dans le cas de grosses structures possédant des fonds documentaires  importants, les ré-indexations de la base peuvent durer plusieurs heures, le max_execution_time devra donc être porté à 36000. 

Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;/code&gt;&lt;?php
phpinfo();
?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :
[[http://localhost/phpinfo.php]]
ou
[[http://adresseIPdevotreserveur/phpinfo.php]]
Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

==PhpMyAdmin==
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root ''mysql'' défini au chapitre 4) installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : [[http://www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html]]
==Installation de PMB==
===L'archive PMB===
Téléchargez l'archive PMB depuis le site [[http://www.pmbservices.fr]]
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
===Définir les droits d'accès à /var/www/pmb===
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
===Installation de la base Pmb===
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http://localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.
==Configuration post-install==
===Scripts d'import Unimarc===
Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 
&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;
chercher le bloc de lignes : 
&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section
		$data_doc=array();
		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);
		if (!$info_995[$nb_expl]['q'])
 			$info_995[$nb_expl]['q'] = &quot;u&quot;;
		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];
		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;
		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;
			else $data_doc['sdoc_owner'] = 0 ;
		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;
et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

===Sauvegarde automatisée===
Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.
====Sauvegarde de la base====
Créer le fichier sauvegarde.sh dans /root : 
&lt;code&gt;! /bin/bash
# Ce script enregistre un journal des évènements suivants : 
# démarrage de la sauvegarde, messages d'erreurs et fin de la sauvegarde.
# dans /root/sauvegarde.log

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes et on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

# On écrit dans le journal :

echo &quot;Sauvegarde du $(date)terminée&quot; &gt;&gt; /root/sauvegarde.log

# On éteint le serveur :

shutdown -h now&lt;/code&gt;

Rendez ce script exécutable :
&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;
Editez la crontab pour planifier la fréquence de la sauvegarde
&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;
&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;
et ajoutez la ligne 
&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;
pour une sauvegarde quotidienne à 18h30 par exemple
====Restaurer la base==== 
d'abord créer une base vide :
&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;
on dezippe la sauvegarde : 
&lt;code&gt;ServeurPmb:~# gunzip /save/sauvegarde.sql.gz&lt;/code&gt;
puis on restaure :
&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>sk9hc7nt3v64z8ifoe4h0h9up9g9uv2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4928</id>
      <parentid>4927</parentid>
      <timestamp>2013-01-19T06:32:51Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <text xml:space="preserve" bytes="17176">màj de la procédure courant janvier 2013 pour la distribution ''Debian Squeeze 6.0.6 stable'' et la version 4.0.2 de l'archive PMB

PMB est un &quot;Système Intégré de Gestion de Bibliothèque&quot; libre. C'est une &quot;web-appli et s'installe donc sur un LAMP.

Ce tutoriel proposé par [https://www.isalo.org/wiki.debian-fr/index.php?title=Utilisateur:LaurentBDP976 LaurentBDP976] décrit pas-à-pas l'installation de ce service sur une distri Linux Debian.

Une version PDF de ce tutoriel est dispo @ http://download.tuxfamily.org/biblinuxiens/doc/

----

==Préambule==
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.
a
Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...
==Configurer les ressources Debian==
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50''

&lt;code&gt;deb http://ftp.indexdata.dk/debian squeeze main&lt;/code&gt;

profitez-en aussi pour intégrer les ressources debian.fr

&lt;code&gt;deb http://ftp.fr.debian.org/debian/ squeeze main&lt;/code&gt;

et commentez les autres dépots 
&lt;code&gt;#deb http://ftp.debian.org/debian/ squeeze main
#deb-src http://ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':
&lt;code&gt;wget http://ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;

Puis mettez à jour votre gestionnaire de packages

&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;

Les ressources officielles pour php-yaz :

[[http://www.indexdata.dk http://www.indexdata.dk]]
[[ftp://ftp.indexdata.dk/pub/debian/dists ftp://ftp.indexdata.dk/pub/debian/dists]]

==Installation du serveur Apache==

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~# aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ?? It Works ! ?? s'ouvre et vous informe que Apache fonctionne correctement .

==Installer MySQL5==
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
==Php5 et ses extensions==
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~# aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5 :
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de votre base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 512M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 512M 
upload_max_filesize = 512M.&lt;/code&gt;

Ces paramètres devraient convenir à la plupart des bibliothèques. 
Dans le cas de grosses structures possédant des fonds documentaires  importants, les ré-indexations de la base peuvent durer plusieurs heures, le max_execution_time devra donc être porté à 36000. 

Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;/code&gt;&lt;?php
phpinfo();
?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :
[[http://localhost/phpinfo.php]]
ou
[[http://adresseIPdevotreserveur/phpinfo.php]]
Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

==PhpMyAdmin==
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root ''mysql'' défini au chapitre 4) installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : [[http://www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html]]
==Installation de PMB==
===L'archive PMB===
Téléchargez l'archive PMB depuis le site [[http://www.pmbservices.fr]]
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
===Définir les droits d'accès à /var/www/pmb===
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
===Installation de la base Pmb===
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http://localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.
==Configuration post-install==
===Scripts d'import Unimarc===
Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 
&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;
chercher le bloc de lignes : 
&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section
		$data_doc=array();
		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);
		if (!$info_995[$nb_expl]['q'])
 			$info_995[$nb_expl]['q'] = &quot;u&quot;;
		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];
		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;
		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;
			else $data_doc['sdoc_owner'] = 0 ;
		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;
et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

===Sauvegarde automatisée===
Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.
====Sauvegarde de la base====
Créer le fichier sauvegarde.sh dans /root : 
&lt;code&gt;! /bin/bash
# Ce script enregistre un journal des évènements suivants : 
# démarrage de la sauvegarde, messages d'erreurs et fin de la sauvegarde.
# dans /root/sauvegarde.log

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes et on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

# On écrit dans le journal :

echo &quot;Sauvegarde du $(date)terminée&quot; &gt;&gt; /root/sauvegarde.log

# On éteint le serveur :

shutdown -h now&lt;/code&gt;

Rendez ce script exécutable :
&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;
Editez la crontab pour planifier la fréquence de la sauvegarde
&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;
&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;
et ajoutez la ligne 
&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;
pour une sauvegarde quotidienne à 18h30 par exemple
====Restaurer la base==== 
d'abord créer une base vide :
&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;
on dezippe la sauvegarde : 
&lt;code&gt;ServeurPmb:~# gunzip /save/sauvegarde.sql.gz&lt;/code&gt;
puis on restaure :
&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>6gb5w4o4c8ic9vrdy028dsdzknnc5g2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4929</id>
      <parentid>4928</parentid>
      <timestamp>2013-01-19T06:34:36Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <text xml:space="preserve" bytes="17176">màj de la procédure courant janvier 2013 pour la distribution ''Debian Squeeze 6.0.6 stable'' et la version 4.0.2 de l'archive PMB

PMB est un &quot;Système Intégré de Gestion de Bibliothèque&quot; libre. C'est une web-appli qui s'installe donc sur un LAMP.

Ce tutoriel proposé par [https://www.isalo.org/wiki.debian-fr/index.php?title=Utilisateur:LaurentBDP976 LaurentBDP976] décrit pas-à-pas l'installation de ce service sur une distri Linux Debian.

Une version PDF de ce tutoriel est dispo @ http://download.tuxfamily.org/biblinuxiens/doc/

----

==Préambule==
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.
a
Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...
==Configurer les ressources Debian==
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
root@ServeurPMB:~# vi /etc/apt/sources.list
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''YAZ'' nécessaire pour l'accès aux serveurs ''Z39.50''

&lt;code&gt;deb http://ftp.indexdata.dk/debian squeeze main&lt;/code&gt;

profitez-en aussi pour intégrer les ressources debian.fr

&lt;code&gt;deb http://ftp.fr.debian.org/debian/ squeeze main&lt;/code&gt;

et commentez les autres dépots 
&lt;code&gt;#deb http://ftp.debian.org/debian/ squeeze main
#deb-src http://ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Yaz'', après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'' nécessaire elle aussi pour l'installation de ''Yaz'':
&lt;code&gt;wget http://ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;

Puis mettez à jour votre gestionnaire de packages

&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;

Les ressources officielles pour php-yaz :

[[http://www.indexdata.dk http://www.indexdata.dk]]
[[ftp://ftp.indexdata.dk/pub/debian/dists ftp://ftp.indexdata.dk/pub/debian/dists]]

==Installation du serveur Apache==

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~# aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ?? It Works ! ?? s'ouvre et vous informe que Apache fonctionne correctement .

==Installer MySQL5==
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
==Php5 et ses extensions==
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~# aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5 :
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de votre base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 512M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 512M 
upload_max_filesize = 512M.&lt;/code&gt;

Ces paramètres devraient convenir à la plupart des bibliothèques. 
Dans le cas de grosses structures possédant des fonds documentaires  importants, les ré-indexations de la base peuvent durer plusieurs heures, le max_execution_time devra donc être porté à 36000. 

Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;/code&gt;&lt;?php
phpinfo();
?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :
[[http://localhost/phpinfo.php]]
ou
[[http://adresseIPdevotreserveur/phpinfo.php]]
Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

==PhpMyAdmin==
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root ''mysql'' défini au chapitre 4) installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : [[http://www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html]]
==Installation de PMB==
===L'archive PMB===
Téléchargez l'archive PMB depuis le site [[http://www.pmbservices.fr]]
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
===Définir les droits d'accès à /var/www/pmb===
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
===Installation de la base Pmb===
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http://localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.
==Configuration post-install==
===Scripts d'import Unimarc===
Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 
&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;
chercher le bloc de lignes : 
&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section
		$data_doc=array();
		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);
		if (!$info_995[$nb_expl]['q'])
 			$info_995[$nb_expl]['q'] = &quot;u&quot;;
		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];
		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;
		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;
			else $data_doc['sdoc_owner'] = 0 ;
		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;
et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

===Sauvegarde automatisée===
Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.
====Sauvegarde de la base====
Créer le fichier sauvegarde.sh dans /root : 
&lt;code&gt;! /bin/bash
# Ce script enregistre un journal des évènements suivants : 
# démarrage de la sauvegarde, messages d'erreurs et fin de la sauvegarde.
# dans /root/sauvegarde.log

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes et on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

# On écrit dans le journal :

echo &quot;Sauvegarde du $(date)terminée&quot; &gt;&gt; /root/sauvegarde.log

# On éteint le serveur :

shutdown -h now&lt;/code&gt;

Rendez ce script exécutable :
&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;
Editez la crontab pour planifier la fréquence de la sauvegarde
&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;
&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;
et ajoutez la ligne 
&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;
pour une sauvegarde quotidienne à 18h30 par exemple
====Restaurer la base==== 
d'abord créer une base vide :
&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;
on dezippe la sauvegarde : 
&lt;code&gt;ServeurPmb:~# gunzip /save/sauvegarde.sql.gz&lt;/code&gt;
puis on restaure :
&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>gljt1np7229b8v6zaexvgyfijx95ki6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4930</id>
      <parentid>4929</parentid>
      <timestamp>2013-01-19T06:40:06Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Configurer les ressources Debian */</comment>
      <text xml:space="preserve" bytes="17190">màj de la procédure courant janvier 2013 pour la distribution ''Debian Squeeze 6.0.6 stable'' et la version 4.0.2 de l'archive PMB

PMB est un &quot;Système Intégré de Gestion de Bibliothèque&quot; libre. C'est une web-appli qui s'installe donc sur un LAMP.

Ce tutoriel proposé par [https://www.isalo.org/wiki.debian-fr/index.php?title=Utilisateur:LaurentBDP976 LaurentBDP976] décrit pas-à-pas l'installation de ce service sur une distri Linux Debian.

Une version PDF de ce tutoriel est dispo @ http://download.tuxfamily.org/biblinuxiens/doc/

----

==Préambule==
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.
a
Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...
==Configurer les ressources Debian==
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apt/sources.list&lt;/code&gt;
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''Php-yaz'' nécessaire pour communiquer avec les serveurs ''Z39.50''.
&lt;code&gt;deb http://ftp.indexdata.dk/debian squeeze main&lt;/code&gt;
profitez-en aussi pour intégrer les ressources debian.fr
&lt;code&gt;deb http://ftp.fr.debian.org/debian/ squeeze main&lt;/code&gt;
et commentez les autres dépots
&lt;code&gt;#deb http://ftp.debian.org/debian/ squeeze main
#deb-src http://ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Php-yaz'' : après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'', on peut s'en passer, mais c'est plus propre :
&lt;code&gt;wget http://ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;
Puis mettez à jour votre gestionnaire de packages
&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;
Les ressources officielles pour php-yaz :
[[http://www.indexdata.dk http://www.indexdata.dk]]
[[ftp://ftp.indexdata.dk/pub/debian/dists ftp://ftp.indexdata.dk/pub/debian/dists]]

==Installation du serveur Apache==

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~# aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ?? It Works ! ?? s'ouvre et vous informe que Apache fonctionne correctement .

==Installer MySQL5==
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
==Php5 et ses extensions==
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~# aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5 :
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de votre base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 512M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 512M 
upload_max_filesize = 512M.&lt;/code&gt;

Ces paramètres devraient convenir à la plupart des bibliothèques. 
Dans le cas de grosses structures possédant des fonds documentaires  importants, les ré-indexations de la base peuvent durer plusieurs heures, le max_execution_time devra donc être porté à 36000. 

Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;/code&gt;&lt;?php
phpinfo();
?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :
[[http://localhost/phpinfo.php]]
ou
[[http://adresseIPdevotreserveur/phpinfo.php]]
Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

==PhpMyAdmin==
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root ''mysql'' défini au chapitre 4) installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : [[http://www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html]]
==Installation de PMB==
===L'archive PMB===
Téléchargez l'archive PMB depuis le site [[http://www.pmbservices.fr]]
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
===Définir les droits d'accès à /var/www/pmb===
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
===Installation de la base Pmb===
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http://localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.
==Configuration post-install==
===Scripts d'import Unimarc===
Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 
&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;
chercher le bloc de lignes : 
&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section
		$data_doc=array();
		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);
		if (!$info_995[$nb_expl]['q'])
 			$info_995[$nb_expl]['q'] = &quot;u&quot;;
		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];
		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;
		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;
			else $data_doc['sdoc_owner'] = 0 ;
		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;
et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

===Sauvegarde automatisée===
Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.
====Sauvegarde de la base====
Créer le fichier sauvegarde.sh dans /root : 
&lt;code&gt;! /bin/bash
# Ce script enregistre un journal des évènements suivants : 
# démarrage de la sauvegarde, messages d'erreurs et fin de la sauvegarde.
# dans /root/sauvegarde.log

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes et on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

# On écrit dans le journal :

echo &quot;Sauvegarde du $(date)terminée&quot; &gt;&gt; /root/sauvegarde.log

# On éteint le serveur :

shutdown -h now&lt;/code&gt;

Rendez ce script exécutable :
&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;
Editez la crontab pour planifier la fréquence de la sauvegarde
&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;
&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;
et ajoutez la ligne 
&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;
pour une sauvegarde quotidienne à 18h30 par exemple
====Restaurer la base==== 
d'abord créer une base vide :
&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;
on dezippe la sauvegarde : 
&lt;code&gt;ServeurPmb:~# gunzip /save/sauvegarde.sql.gz&lt;/code&gt;
puis on restaure :
&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>eqrngt1rdbb7qte6j7qbtzjz6x88atg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4931</id>
      <parentid>4930</parentid>
      <timestamp>2013-01-19T06:41:49Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Configurer les ressources Debian */</comment>
      <text xml:space="preserve" bytes="17222">màj de la procédure courant janvier 2013 pour la distribution ''Debian Squeeze 6.0.6 stable'' et la version 4.0.2 de l'archive PMB

PMB est un &quot;Système Intégré de Gestion de Bibliothèque&quot; libre. C'est une web-appli qui s'installe donc sur un LAMP.

Ce tutoriel proposé par [https://www.isalo.org/wiki.debian-fr/index.php?title=Utilisateur:LaurentBDP976 LaurentBDP976] décrit pas-à-pas l'installation de ce service sur une distri Linux Debian.

Une version PDF de ce tutoriel est dispo @ http://download.tuxfamily.org/biblinuxiens/doc/

----

==Préambule==
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.
a
Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...
==Configurer les ressources Debian==
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apt/sources.list&lt;/code&gt;
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''Php-yaz'' nécessaire pour communiquer avec les serveurs ''Z39.50''.
&lt;code&gt;deb http://ftp.indexdata.dk/debian squeeze main&lt;/code&gt;
profitez-en aussi pour intégrer les ressources debian.fr
&lt;code&gt;deb http://ftp.fr.debian.org/debian/ squeeze main&lt;/code&gt;
et commentez les autres dépots
&lt;code&gt;#deb http://ftp.debian.org/debian/ squeeze main
#deb-src http://ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Php-yaz'' : après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'', on peut s'en passer, mais autant faire les choses dans les règles de l'art :
&lt;code&gt;wget http://ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;
Puis mettez à jour votre gestionnaire de packages
&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;
Les ressources officielles pour php-yaz :
[[http://www.indexdata.dk http://www.indexdata.dk]]
[[ftp://ftp.indexdata.dk/pub/debian/dists ftp://ftp.indexdata.dk/pub/debian/dists]]

==Installation du serveur Apache==

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~# aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ?? It Works ! ?? s'ouvre et vous informe que Apache fonctionne correctement .

==Installer MySQL5==
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
==Php5 et ses extensions==
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~# aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5 :
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de votre base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 512M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 512M 
upload_max_filesize = 512M.&lt;/code&gt;

Ces paramètres devraient convenir à la plupart des bibliothèques. 
Dans le cas de grosses structures possédant des fonds documentaires  importants, les ré-indexations de la base peuvent durer plusieurs heures, le max_execution_time devra donc être porté à 36000. 

Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;/code&gt;&lt;?php
phpinfo();
?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :
[[http://localhost/phpinfo.php]]
ou
[[http://adresseIPdevotreserveur/phpinfo.php]]
Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

==PhpMyAdmin==
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root ''mysql'' défini au chapitre 4) installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : [[http://www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html]]
==Installation de PMB==
===L'archive PMB===
Téléchargez l'archive PMB depuis le site [[http://www.pmbservices.fr]]
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
===Définir les droits d'accès à /var/www/pmb===
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
===Installation de la base Pmb===
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http://localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.
==Configuration post-install==
===Scripts d'import Unimarc===
Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 
&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;
chercher le bloc de lignes : 
&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section
		$data_doc=array();
		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);
		if (!$info_995[$nb_expl]['q'])
 			$info_995[$nb_expl]['q'] = &quot;u&quot;;
		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];
		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;
		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;
			else $data_doc['sdoc_owner'] = 0 ;
		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;
et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

===Sauvegarde automatisée===
Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.
====Sauvegarde de la base====
Créer le fichier sauvegarde.sh dans /root : 
&lt;code&gt;! /bin/bash
# Ce script enregistre un journal des évènements suivants : 
# démarrage de la sauvegarde, messages d'erreurs et fin de la sauvegarde.
# dans /root/sauvegarde.log

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes et on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

# On écrit dans le journal :

echo &quot;Sauvegarde du $(date)terminée&quot; &gt;&gt; /root/sauvegarde.log

# On éteint le serveur :

shutdown -h now&lt;/code&gt;

Rendez ce script exécutable :
&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;
Editez la crontab pour planifier la fréquence de la sauvegarde
&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;
&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;
et ajoutez la ligne 
&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;
pour une sauvegarde quotidienne à 18h30 par exemple
====Restaurer la base==== 
d'abord créer une base vide :
&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;
on dezippe la sauvegarde : 
&lt;code&gt;ServeurPmb:~# gunzip /save/sauvegarde.sql.gz&lt;/code&gt;
puis on restaure :
&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>ok316khj5wqfpmhragp3silqu5n3xge</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4936</id>
      <parentid>4931</parentid>
      <timestamp>2013-01-23T08:28:31Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Sauvegarde de la base */</comment>
      <text xml:space="preserve" bytes="17256">màj de la procédure courant janvier 2013 pour la distribution ''Debian Squeeze 6.0.6 stable'' et la version 4.0.2 de l'archive PMB

PMB est un &quot;Système Intégré de Gestion de Bibliothèque&quot; libre. C'est une web-appli qui s'installe donc sur un LAMP.

Ce tutoriel proposé par [https://www.isalo.org/wiki.debian-fr/index.php?title=Utilisateur:LaurentBDP976 LaurentBDP976] décrit pas-à-pas l'installation de ce service sur une distri Linux Debian.

Une version PDF de ce tutoriel est dispo @ http://download.tuxfamily.org/biblinuxiens/doc/

----

==Préambule==
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.
a
Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...
==Configurer les ressources Debian==
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apt/sources.list&lt;/code&gt;
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''Php-yaz'' nécessaire pour communiquer avec les serveurs ''Z39.50''.
&lt;code&gt;deb http://ftp.indexdata.dk/debian squeeze main&lt;/code&gt;
profitez-en aussi pour intégrer les ressources debian.fr
&lt;code&gt;deb http://ftp.fr.debian.org/debian/ squeeze main&lt;/code&gt;
et commentez les autres dépots
&lt;code&gt;#deb http://ftp.debian.org/debian/ squeeze main
#deb-src http://ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Php-yaz'' : après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'', on peut s'en passer, mais autant faire les choses dans les règles de l'art :
&lt;code&gt;wget http://ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;
Puis mettez à jour votre gestionnaire de packages
&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;
Les ressources officielles pour php-yaz :
[[http://www.indexdata.dk http://www.indexdata.dk]]
[[ftp://ftp.indexdata.dk/pub/debian/dists ftp://ftp.indexdata.dk/pub/debian/dists]]

==Installation du serveur Apache==

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~# aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ?? It Works ! ?? s'ouvre et vous informe que Apache fonctionne correctement .

==Installer MySQL5==
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
==Php5 et ses extensions==
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~# aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5 :
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de votre base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 512M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 512M 
upload_max_filesize = 512M.&lt;/code&gt;

Ces paramètres devraient convenir à la plupart des bibliothèques. 
Dans le cas de grosses structures possédant des fonds documentaires  importants, les ré-indexations de la base peuvent durer plusieurs heures, le max_execution_time devra donc être porté à 36000. 

Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;/code&gt;&lt;?php
phpinfo();
?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :
[[http://localhost/phpinfo.php]]
ou
[[http://adresseIPdevotreserveur/phpinfo.php]]
Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

==PhpMyAdmin==
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root ''mysql'' défini au chapitre 4) installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : [[http://www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html]]
==Installation de PMB==
===L'archive PMB===
Téléchargez l'archive PMB depuis le site [[http://www.pmbservices.fr]]
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
===Définir les droits d'accès à /var/www/pmb===
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
===Installation de la base Pmb===
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http://localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.
==Configuration post-install==
===Scripts d'import Unimarc===
Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 
&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;
chercher le bloc de lignes : 
&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section
		$data_doc=array();
		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);
		if (!$info_995[$nb_expl]['q'])
 			$info_995[$nb_expl]['q'] = &quot;u&quot;;
		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];
		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;
		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;
			else $data_doc['sdoc_owner'] = 0 ;
		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;
et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

===Sauvegarde automatisée===
Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.
====Sauvegarde de la base====
Créer le fichier sauvegarde.sh dans /root : 
&lt;code&gt;! /bin/bash
# Ce script enregistre un journal qui rend compte du bon déroulement des évènements  dans 
#/root/sauvegarde.log
# démarrage du script, redirection des messages d'erreurs, fin de la sauvegarde.

echo &quot;Démarrage sauvegarde du $(date)&quot; 2&gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes et on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

# On écrit dans le journal :

echo &quot;Sauvegarde du $(date)terminée&quot; &gt;&gt; /root/sauvegarde.log

# On éteint le serveur :

shutdown -h now&lt;/code&gt;

Rendez ce script exécutable :
&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;
Editez la crontab pour planifier la fréquence de la sauvegarde
&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;
&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;
et ajoutez la ligne 
&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;
pour une sauvegarde quotidienne à 18h30 par exemple

====Restaurer la base==== 
d'abord créer une base vide :
&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;
on dezippe la sauvegarde : 
&lt;code&gt;ServeurPmb:~# gunzip /save/sauvegarde.sql.gz&lt;/code&gt;
puis on restaure :
&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>3nay2cv1vq1xpwzdlyd771n8rsmimzq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4957</id>
      <parentid>4936</parentid>
      <timestamp>2013-02-09T08:01:49Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Scripts d'import Unimarc */</comment>
      <text xml:space="preserve" bytes="17937">màj de la procédure courant janvier 2013 pour la distribution ''Debian Squeeze 6.0.6 stable'' et la version 4.0.2 de l'archive PMB

PMB est un &quot;Système Intégré de Gestion de Bibliothèque&quot; libre. C'est une web-appli qui s'installe donc sur un LAMP.

Ce tutoriel proposé par [https://www.isalo.org/wiki.debian-fr/index.php?title=Utilisateur:LaurentBDP976 LaurentBDP976] décrit pas-à-pas l'installation de ce service sur une distri Linux Debian.

Une version PDF de ce tutoriel est dispo @ http://download.tuxfamily.org/biblinuxiens/doc/

----

==Préambule==
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.
a
Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...
==Configurer les ressources Debian==
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apt/sources.list&lt;/code&gt;
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''Php-yaz'' nécessaire pour communiquer avec les serveurs ''Z39.50''.
&lt;code&gt;deb http://ftp.indexdata.dk/debian squeeze main&lt;/code&gt;
profitez-en aussi pour intégrer les ressources debian.fr
&lt;code&gt;deb http://ftp.fr.debian.org/debian/ squeeze main&lt;/code&gt;
et commentez les autres dépots
&lt;code&gt;#deb http://ftp.debian.org/debian/ squeeze main
#deb-src http://ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Php-yaz'' : après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'', on peut s'en passer, mais autant faire les choses dans les règles de l'art :
&lt;code&gt;wget http://ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;
Puis mettez à jour votre gestionnaire de packages
&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;
Les ressources officielles pour php-yaz :
[[http://www.indexdata.dk http://www.indexdata.dk]]
[[ftp://ftp.indexdata.dk/pub/debian/dists ftp://ftp.indexdata.dk/pub/debian/dists]]

==Installation du serveur Apache==

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~# aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ?? It Works ! ?? s'ouvre et vous informe que Apache fonctionne correctement .

==Installer MySQL5==
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
==Php5 et ses extensions==
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~# aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5 :
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de votre base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 512M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 512M 
upload_max_filesize = 512M.&lt;/code&gt;

Ces paramètres devraient convenir à la plupart des bibliothèques. 
Dans le cas de grosses structures possédant des fonds documentaires  importants, les ré-indexations de la base peuvent durer plusieurs heures, le max_execution_time devra donc être porté à 36000. 

Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;/code&gt;&lt;?php
phpinfo();
?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :
[[http://localhost/phpinfo.php]]
ou
[[http://adresseIPdevotreserveur/phpinfo.php]]
Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

==PhpMyAdmin==
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root ''mysql'' défini au chapitre 4) installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : [[http://www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html]]
==Installation de PMB==
===L'archive PMB===
Téléchargez l'archive PMB depuis le site [[http://www.pmbservices.fr]]
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
===Définir les droits d'accès à /var/www/pmb===
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
===Installation de la base Pmb===
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http://localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.
==Configuration post-install==
===Scripts d'import Unimarc===
Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 
&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;
chercher le bloc de lignes : 
&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section
		$data_doc=array();
		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);
		if (!$info_995[$nb_expl]['q'])
 			$info_995[$nb_expl]['q'] = &quot;u&quot;;
		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];
		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;
		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;
			else $data_doc['sdoc_owner'] = 0 ;
		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;
et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

même remarque concernant les codes stats lecteurs, si vous tentez d'importer un fichier de lecteur externe conforme à la recommandation 995 il vous faudra editer pmb/includes/marc_tables/FR_fr/section_995.xml
&lt;code&gt;&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?&gt;

&lt;!DOCTYPE XMLlist SYSTEM &quot;../../XMLlist.dtd&quot;&gt;

&lt;!-- liste des section 995 (public visé) de AFBDP $Id: section_995.xml,v 1.1 2004-06-09 07:15:06 touraine37 Exp $ --&gt;
-&lt;XMLlist&gt; &lt;entry code=&quot;a&quot;&gt;adultes&lt;/entry&gt; 
&lt;entry code=&quot;j&quot;&gt;jeunes&lt;/entry&gt; 
&lt;entry code=&quot;u&quot;&gt;indéterminé&lt;/entry&gt; 
&lt;entry code=&quot;z&quot;&gt;autre&lt;/entry&gt; &lt;/XMLlist&gt;&lt;/code&gt;

et remlacer la ligne &lt;entry code=&quot;b&quot;&gt;jeunes&lt;/entry&gt;  par &lt;entry code=&quot;j&quot;&gt;jeunes&lt;/entry&gt;

===Sauvegarde automatisée===
Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.
====Sauvegarde de la base====
Créer le fichier sauvegarde.sh dans /root : 
&lt;code&gt;! /bin/bash
# Ce script enregistre un journal qui rend compte du bon déroulement des évènements  dans 
#/root/sauvegarde.log
# démarrage du script, redirection des messages d'erreurs, fin de la sauvegarde.

echo &quot;Démarrage sauvegarde du $(date)&quot; 2&gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes et on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

# On écrit dans le journal :

echo &quot;Sauvegarde du $(date)terminée&quot; &gt;&gt; /root/sauvegarde.log

# On éteint le serveur :

shutdown -h now&lt;/code&gt;

Rendez ce script exécutable :
&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;
Editez la crontab pour planifier la fréquence de la sauvegarde
&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;
&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;
et ajoutez la ligne 
&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;
pour une sauvegarde quotidienne à 18h30 par exemple

====Restaurer la base==== 
d'abord créer une base vide :
&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;
on dezippe la sauvegarde : 
&lt;code&gt;ServeurPmb:~# gunzip /save/sauvegarde.sql.gz&lt;/code&gt;
puis on restaure :
&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>7vmqt7wxb97xkw1hgxpi79dctn61026</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4958</id>
      <parentid>4957</parentid>
      <timestamp>2013-02-09T08:12:05Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Scripts d'import Unimarc */</comment>
      <text xml:space="preserve" bytes="18239">màj de la procédure courant janvier 2013 pour la distribution ''Debian Squeeze 6.0.6 stable'' et la version 4.0.2 de l'archive PMB

PMB est un &quot;Système Intégré de Gestion de Bibliothèque&quot; libre. C'est une web-appli qui s'installe donc sur un LAMP.

Ce tutoriel proposé par [https://www.isalo.org/wiki.debian-fr/index.php?title=Utilisateur:LaurentBDP976 LaurentBDP976] décrit pas-à-pas l'installation de ce service sur une distri Linux Debian.

Une version PDF de ce tutoriel est dispo @ http://download.tuxfamily.org/biblinuxiens/doc/

----

==Préambule==
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.
a
Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...
==Configurer les ressources Debian==
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apt/sources.list&lt;/code&gt;
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''Php-yaz'' nécessaire pour communiquer avec les serveurs ''Z39.50''.
&lt;code&gt;deb http://ftp.indexdata.dk/debian squeeze main&lt;/code&gt;
profitez-en aussi pour intégrer les ressources debian.fr
&lt;code&gt;deb http://ftp.fr.debian.org/debian/ squeeze main&lt;/code&gt;
et commentez les autres dépots
&lt;code&gt;#deb http://ftp.debian.org/debian/ squeeze main
#deb-src http://ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Php-yaz'' : après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'', on peut s'en passer, mais autant faire les choses dans les règles de l'art :
&lt;code&gt;wget http://ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;
Puis mettez à jour votre gestionnaire de packages
&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;
Les ressources officielles pour php-yaz :
[[http://www.indexdata.dk http://www.indexdata.dk]]
[[ftp://ftp.indexdata.dk/pub/debian/dists ftp://ftp.indexdata.dk/pub/debian/dists]]

==Installation du serveur Apache==

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~# aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ?? It Works ! ?? s'ouvre et vous informe que Apache fonctionne correctement .

==Installer MySQL5==
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
==Php5 et ses extensions==
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~# aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5 :
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de votre base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 512M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 512M 
upload_max_filesize = 512M.&lt;/code&gt;

Ces paramètres devraient convenir à la plupart des bibliothèques. 
Dans le cas de grosses structures possédant des fonds documentaires  importants, les ré-indexations de la base peuvent durer plusieurs heures, le max_execution_time devra donc être porté à 36000. 

Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;/code&gt;&lt;?php
phpinfo();
?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :
[[http://localhost/phpinfo.php]]
ou
[[http://adresseIPdevotreserveur/phpinfo.php]]
Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

==PhpMyAdmin==
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root ''mysql'' défini au chapitre 4) installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : [[http://www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html]]
==Installation de PMB==
===L'archive PMB===
Téléchargez l'archive PMB depuis le site [[http://www.pmbservices.fr]]
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
===Définir les droits d'accès à /var/www/pmb===
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
===Installation de la base Pmb===
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http://localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.
==Configuration post-install==
===Scripts d'import Unimarc===
Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 
&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;
chercher le bloc de lignes : 
&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section
		$data_doc=array();
		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);
		if (!$info_995[$nb_expl]['q'])
 			$info_995[$nb_expl]['q'] = &quot;u&quot;;
		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];
		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;
		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;
			else $data_doc['sdoc_owner'] = 0 ;
		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;
et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

même remarque concernant les codes stats lecteurs, si vous tentez d'importer un fichier de lecteur externe conforme à la recommandation 995 il vous faudra editer pmb/includes/marc_tables/FR_fr/section_995.xml
&lt;code&gt;&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?&gt;

&lt;!DOCTYPE XMLlist SYSTEM &quot;../../XMLlist.dtd&quot;&gt;

&lt;!-- liste des section 995 (public visé) de AFBDP $Id: section_995.xml,v 1.1 2004-06-09 07:15:06 touraine37 Exp $ --&gt;
-&lt;XMLlist&gt; 
&lt;entry code=&quot;a&quot;&gt;adultes&lt;/entry&gt; 
&lt;entry code=&quot;b&quot;&gt;jeunes&lt;/entry&gt; 
&lt;entry code=&quot;u&quot;&gt;indéterminé&lt;/entry&gt; 
&lt;entry code=&quot;z&quot;&gt;autre&lt;/entry&gt; 
&lt;/XMLlist&gt;&lt;/code&gt;

et remlacer la ligne 
&lt;entry code=&quot;b&quot;&gt;jeunes&lt;/entry&gt;  
par 
&lt;entry code=&quot;j&quot;&gt;jeunes&lt;/entry&gt;

il faut  bien dire que les pontes qui on pondu la r995 n'ont pas nécessairement fait preuve de beaucoup de cohérence quand ils ont attribué les codes, et ne les ont pas révisé depuis 2005

ainsi

jeunes dans la table section c'est j
jeunes dans la table stats c'est b

d'où la confusion...

===Sauvegarde automatisée===
Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.
====Sauvegarde de la base====
Créer le fichier sauvegarde.sh dans /root : 
&lt;code&gt;! /bin/bash
# Ce script enregistre un journal qui rend compte du bon déroulement des évènements  dans 
#/root/sauvegarde.log
# démarrage du script, redirection des messages d'erreurs, fin de la sauvegarde.

echo &quot;Démarrage sauvegarde du $(date)&quot; 2&gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes et on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

# On écrit dans le journal :

echo &quot;Sauvegarde du $(date)terminée&quot; &gt;&gt; /root/sauvegarde.log

# On éteint le serveur :

shutdown -h now&lt;/code&gt;

Rendez ce script exécutable :
&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;
Editez la crontab pour planifier la fréquence de la sauvegarde
&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;
&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;
et ajoutez la ligne 
&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;
pour une sauvegarde quotidienne à 18h30 par exemple

====Restaurer la base==== 
d'abord créer une base vide :
&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;
on dezippe la sauvegarde : 
&lt;code&gt;ServeurPmb:~# gunzip /save/sauvegarde.sql.gz&lt;/code&gt;
puis on restaure :
&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>gtf4eq2iq8p8iu4io4g626xixwfl2k4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4959</id>
      <parentid>4958</parentid>
      <timestamp>2013-02-09T08:15:57Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Scripts d'import Unimarc */</comment>
      <text xml:space="preserve" bytes="18258">màj de la procédure courant janvier 2013 pour la distribution ''Debian Squeeze 6.0.6 stable'' et la version 4.0.2 de l'archive PMB

PMB est un &quot;Système Intégré de Gestion de Bibliothèque&quot; libre. C'est une web-appli qui s'installe donc sur un LAMP.

Ce tutoriel proposé par [https://www.isalo.org/wiki.debian-fr/index.php?title=Utilisateur:LaurentBDP976 LaurentBDP976] décrit pas-à-pas l'installation de ce service sur une distri Linux Debian.

Une version PDF de ce tutoriel est dispo @ http://download.tuxfamily.org/biblinuxiens/doc/

----

==Préambule==
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.
a
Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...
==Configurer les ressources Debian==
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apt/sources.list&lt;/code&gt;
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''Php-yaz'' nécessaire pour communiquer avec les serveurs ''Z39.50''.
&lt;code&gt;deb http://ftp.indexdata.dk/debian squeeze main&lt;/code&gt;
profitez-en aussi pour intégrer les ressources debian.fr
&lt;code&gt;deb http://ftp.fr.debian.org/debian/ squeeze main&lt;/code&gt;
et commentez les autres dépots
&lt;code&gt;#deb http://ftp.debian.org/debian/ squeeze main
#deb-src http://ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Php-yaz'' : après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'', on peut s'en passer, mais autant faire les choses dans les règles de l'art :
&lt;code&gt;wget http://ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;
Puis mettez à jour votre gestionnaire de packages
&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;
Les ressources officielles pour php-yaz :
[[http://www.indexdata.dk http://www.indexdata.dk]]
[[ftp://ftp.indexdata.dk/pub/debian/dists ftp://ftp.indexdata.dk/pub/debian/dists]]

==Installation du serveur Apache==

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~# aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ?? It Works ! ?? s'ouvre et vous informe que Apache fonctionne correctement .

==Installer MySQL5==
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
==Php5 et ses extensions==
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~# aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5 :
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de votre base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 512M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 512M 
upload_max_filesize = 512M.&lt;/code&gt;

Ces paramètres devraient convenir à la plupart des bibliothèques. 
Dans le cas de grosses structures possédant des fonds documentaires  importants, les ré-indexations de la base peuvent durer plusieurs heures, le max_execution_time devra donc être porté à 36000. 

Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;/code&gt;&lt;?php
phpinfo();
?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :
[[http://localhost/phpinfo.php]]
ou
[[http://adresseIPdevotreserveur/phpinfo.php]]
Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

==PhpMyAdmin==
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root ''mysql'' défini au chapitre 4) installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : [[http://www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html]]
==Installation de PMB==
===L'archive PMB===
Téléchargez l'archive PMB depuis le site [[http://www.pmbservices.fr]]
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
===Définir les droits d'accès à /var/www/pmb===
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
===Installation de la base Pmb===
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http://localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.
==Configuration post-install==
===Scripts d'import Unimarc===
Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 
&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;
chercher le bloc de lignes : 
&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section
		$data_doc=array();
		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);
		if (!$info_995[$nb_expl]['q'])
 			$info_995[$nb_expl]['q'] = &quot;u&quot;;
		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];
		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;
		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;
			else $data_doc['sdoc_owner'] = 0 ;
		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;
et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

même remarque concernant les codes stats lecteurs, si vous tentez d'importer un fichier de lecteur externe conforme à la recommandation 995 il vous faudra editer pmb/includes/marc_tables/FR_fr/section_995.xml
&lt;code&gt;&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?&gt;

&lt;!DOCTYPE XMLlist SYSTEM &quot;../../XMLlist.dtd&quot;&gt;

&lt;!-- liste des section 995 (public visé) de AFBDP $Id: section_995.xml,v 1.1 2004-06-09 07:15:06 touraine37 Exp $ --&gt;
-&lt;XMLlist&gt; 
&lt;entry code=&quot;a&quot;&gt;adultes&lt;/entry&gt; 
&lt;entry code=&quot;b&quot;&gt;jeunes&lt;/entry&gt; 
&lt;entry code=&quot;u&quot;&gt;indéterminé&lt;/entry&gt; 
&lt;entry code=&quot;z&quot;&gt;autre&lt;/entry&gt; 
&lt;/XMLlist&gt;&lt;/code&gt;

et remlacer la ligne 
&lt;entry code=&quot;b&quot;&gt;jeunes&lt;/entry&gt;  
par 
&lt;entry code=&quot;j&quot;&gt;jeunes&lt;/entry&gt;

il faut  bien dire que les pontes qui on pondu la r995 n'ont pas nécessairement fait preuve de beaucoup de cohérence quand ils ont attribué les codes, et ne les ont pas révisé depuis 2005

ainsi


&quot;jeunes&quot; dans la table section est codé &quot;j&quot;


&quot;jeunes&quot; dans la table stats est codé &quot;b


d'où la confusion...

===Sauvegarde automatisée===
Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.
====Sauvegarde de la base====
Créer le fichier sauvegarde.sh dans /root : 
&lt;code&gt;! /bin/bash
# Ce script enregistre un journal qui rend compte du bon déroulement des évènements  dans 
#/root/sauvegarde.log
# démarrage du script, redirection des messages d'erreurs, fin de la sauvegarde.

echo &quot;Démarrage sauvegarde du $(date)&quot; 2&gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes et on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

# On écrit dans le journal :

echo &quot;Sauvegarde du $(date)terminée&quot; &gt;&gt; /root/sauvegarde.log

# On éteint le serveur :

shutdown -h now&lt;/code&gt;

Rendez ce script exécutable :
&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;
Editez la crontab pour planifier la fréquence de la sauvegarde
&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;
&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;
et ajoutez la ligne 
&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;
pour une sauvegarde quotidienne à 18h30 par exemple

====Restaurer la base==== 
d'abord créer une base vide :
&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;
on dezippe la sauvegarde : 
&lt;code&gt;ServeurPmb:~# gunzip /save/sauvegarde.sql.gz&lt;/code&gt;
puis on restaure :
&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>mvcfswyff7onklcuxbwdmzsz2k6jf6n</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5241</id>
      <parentid>4959</parentid>
      <timestamp>2013-06-05T08:48:01Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Sauvegarde de la base */</comment>
      <text xml:space="preserve" bytes="18257">màj de la procédure courant janvier 2013 pour la distribution ''Debian Squeeze 6.0.6 stable'' et la version 4.0.2 de l'archive PMB

PMB est un &quot;Système Intégré de Gestion de Bibliothèque&quot; libre. C'est une web-appli qui s'installe donc sur un LAMP.

Ce tutoriel proposé par [https://www.isalo.org/wiki.debian-fr/index.php?title=Utilisateur:LaurentBDP976 LaurentBDP976] décrit pas-à-pas l'installation de ce service sur une distri Linux Debian.

Une version PDF de ce tutoriel est dispo @ http://download.tuxfamily.org/biblinuxiens/doc/

----

==Préambule==
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.
a
Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...
==Configurer les ressources Debian==
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apt/sources.list&lt;/code&gt;
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''Php-yaz'' nécessaire pour communiquer avec les serveurs ''Z39.50''.
&lt;code&gt;deb http://ftp.indexdata.dk/debian squeeze main&lt;/code&gt;
profitez-en aussi pour intégrer les ressources debian.fr
&lt;code&gt;deb http://ftp.fr.debian.org/debian/ squeeze main&lt;/code&gt;
et commentez les autres dépots
&lt;code&gt;#deb http://ftp.debian.org/debian/ squeeze main
#deb-src http://ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Php-yaz'' : après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'', on peut s'en passer, mais autant faire les choses dans les règles de l'art :
&lt;code&gt;wget http://ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;
Puis mettez à jour votre gestionnaire de packages
&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;
Les ressources officielles pour php-yaz :
[[http://www.indexdata.dk http://www.indexdata.dk]]
[[ftp://ftp.indexdata.dk/pub/debian/dists ftp://ftp.indexdata.dk/pub/debian/dists]]

==Installation du serveur Apache==

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~# aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ?? It Works ! ?? s'ouvre et vous informe que Apache fonctionne correctement .

==Installer MySQL5==
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
==Php5 et ses extensions==
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~# aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5 :
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de votre base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 512M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 512M 
upload_max_filesize = 512M.&lt;/code&gt;

Ces paramètres devraient convenir à la plupart des bibliothèques. 
Dans le cas de grosses structures possédant des fonds documentaires  importants, les ré-indexations de la base peuvent durer plusieurs heures, le max_execution_time devra donc être porté à 36000. 

Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;/code&gt;&lt;?php
phpinfo();
?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :
[[http://localhost/phpinfo.php]]
ou
[[http://adresseIPdevotreserveur/phpinfo.php]]
Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

==PhpMyAdmin==
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root ''mysql'' défini au chapitre 4) installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : [[http://www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html]]
==Installation de PMB==
===L'archive PMB===
Téléchargez l'archive PMB depuis le site [[http://www.pmbservices.fr]]
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
===Définir les droits d'accès à /var/www/pmb===
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
===Installation de la base Pmb===
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http://localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.
==Configuration post-install==
===Scripts d'import Unimarc===
Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 
&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;
chercher le bloc de lignes : 
&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section
		$data_doc=array();
		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);
		if (!$info_995[$nb_expl]['q'])
 			$info_995[$nb_expl]['q'] = &quot;u&quot;;
		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];
		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;
		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;
			else $data_doc['sdoc_owner'] = 0 ;
		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;
et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

même remarque concernant les codes stats lecteurs, si vous tentez d'importer un fichier de lecteur externe conforme à la recommandation 995 il vous faudra editer pmb/includes/marc_tables/FR_fr/section_995.xml
&lt;code&gt;&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?&gt;

&lt;!DOCTYPE XMLlist SYSTEM &quot;../../XMLlist.dtd&quot;&gt;

&lt;!-- liste des section 995 (public visé) de AFBDP $Id: section_995.xml,v 1.1 2004-06-09 07:15:06 touraine37 Exp $ --&gt;
-&lt;XMLlist&gt; 
&lt;entry code=&quot;a&quot;&gt;adultes&lt;/entry&gt; 
&lt;entry code=&quot;b&quot;&gt;jeunes&lt;/entry&gt; 
&lt;entry code=&quot;u&quot;&gt;indéterminé&lt;/entry&gt; 
&lt;entry code=&quot;z&quot;&gt;autre&lt;/entry&gt; 
&lt;/XMLlist&gt;&lt;/code&gt;

et remlacer la ligne 
&lt;entry code=&quot;b&quot;&gt;jeunes&lt;/entry&gt;  
par 
&lt;entry code=&quot;j&quot;&gt;jeunes&lt;/entry&gt;

il faut  bien dire que les pontes qui on pondu la r995 n'ont pas nécessairement fait preuve de beaucoup de cohérence quand ils ont attribué les codes, et ne les ont pas révisé depuis 2005

ainsi


&quot;jeunes&quot; dans la table section est codé &quot;j&quot;


&quot;jeunes&quot; dans la table stats est codé &quot;b


d'où la confusion...

===Sauvegarde automatisée===
Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.
====Sauvegarde de la base====
Créer le fichier sauvegarde.sh dans /root : 
&lt;code&gt;! /bin/bash
# Ce script enregistre un journal qui rend compte du bon déroulement des évènements  dans 
#/root/sauvegarde.log
# démarrage du script, redirection des messages d'erreurs, fin de la sauvegarde.

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes et on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

# On écrit dans le journal :

echo &quot;Sauvegarde du $(date)terminée&quot; &gt;&gt; /root/sauvegarde.log

# On éteint le serveur :

shutdown -h now&lt;/code&gt;

Rendez ce script exécutable :
&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;
Editez la crontab pour planifier la fréquence de la sauvegarde
&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;
&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;
et ajoutez la ligne 
&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;
pour une sauvegarde quotidienne à 18h30 par exemple

====Restaurer la base==== 
d'abord créer une base vide :
&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;
on dezippe la sauvegarde : 
&lt;code&gt;ServeurPmb:~# gunzip /save/sauvegarde.sql.gz&lt;/code&gt;
puis on restaure :
&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>l6zwu47j7ox310vc04bn3g6yz28793g</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5242</id>
      <parentid>5241</parentid>
      <timestamp>2013-06-05T08:51:34Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Scripts d'import Unimarc */</comment>
      <text xml:space="preserve" bytes="18263">màj de la procédure courant janvier 2013 pour la distribution ''Debian Squeeze 6.0.6 stable'' et la version 4.0.2 de l'archive PMB

PMB est un &quot;Système Intégré de Gestion de Bibliothèque&quot; libre. C'est une web-appli qui s'installe donc sur un LAMP.

Ce tutoriel proposé par [https://www.isalo.org/wiki.debian-fr/index.php?title=Utilisateur:LaurentBDP976 LaurentBDP976] décrit pas-à-pas l'installation de ce service sur une distri Linux Debian.

Une version PDF de ce tutoriel est dispo @ http://download.tuxfamily.org/biblinuxiens/doc/

----

==Préambule==
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.
a
Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...
==Configurer les ressources Debian==
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apt/sources.list&lt;/code&gt;
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''Php-yaz'' nécessaire pour communiquer avec les serveurs ''Z39.50''.
&lt;code&gt;deb http://ftp.indexdata.dk/debian squeeze main&lt;/code&gt;
profitez-en aussi pour intégrer les ressources debian.fr
&lt;code&gt;deb http://ftp.fr.debian.org/debian/ squeeze main&lt;/code&gt;
et commentez les autres dépots
&lt;code&gt;#deb http://ftp.debian.org/debian/ squeeze main
#deb-src http://ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Php-yaz'' : après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'', on peut s'en passer, mais autant faire les choses dans les règles de l'art :
&lt;code&gt;wget http://ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;
Puis mettez à jour votre gestionnaire de packages
&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;
Les ressources officielles pour php-yaz :
[[http://www.indexdata.dk http://www.indexdata.dk]]
[[ftp://ftp.indexdata.dk/pub/debian/dists ftp://ftp.indexdata.dk/pub/debian/dists]]

==Installation du serveur Apache==

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~# aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ?? It Works ! ?? s'ouvre et vous informe que Apache fonctionne correctement .

==Installer MySQL5==
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
==Php5 et ses extensions==
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~# aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5 :
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de votre base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 512M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 512M 
upload_max_filesize = 512M.&lt;/code&gt;

Ces paramètres devraient convenir à la plupart des bibliothèques. 
Dans le cas de grosses structures possédant des fonds documentaires  importants, les ré-indexations de la base peuvent durer plusieurs heures, le max_execution_time devra donc être porté à 36000. 

Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;/code&gt;&lt;?php
phpinfo();
?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :
[[http://localhost/phpinfo.php]]
ou
[[http://adresseIPdevotreserveur/phpinfo.php]]
Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

==PhpMyAdmin==
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root ''mysql'' défini au chapitre 4) installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : [[http://www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html]]
==Installation de PMB==
===L'archive PMB===
Téléchargez l'archive PMB depuis le site [[http://www.pmbservices.fr]]
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
===Définir les droits d'accès à /var/www/pmb===
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
===Installation de la base Pmb===
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http://localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.
==Configuration post-install==
===Scripts d'import Unimarc===
Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 
&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;
chercher le bloc de lignes : 
&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section
		$data_doc=array();
		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);
		if (!$info_995[$nb_expl]['q'])
 			$info_995[$nb_expl]['q'] = &quot;u&quot;;
		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];
		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;
		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;
			else $data_doc['sdoc_owner'] = 0 ;
		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;
et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

même remarque concernant les codes stats lecteurs, si vous tentez d'importer un fichier de lecteur externe conforme à la recommandation 995 il vous faudra editer pmb/includes/marc_tables/FR_fr/section_995.xml
&lt;code&gt;&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?&gt;

&lt;!DOCTYPE XMLlist SYSTEM &quot;../../XMLlist.dtd&quot;&gt;

&lt;!-- liste des section 995 (public visé) de AFBDP $Id: section_995.xml,v 1.1 2004-06-09 07:15:06 touraine37 Exp $ --&gt;
-&lt;XMLlist&gt; 
&lt;entry code=&quot;a&quot;&gt;adultes&lt;/entry&gt; 
&lt;entry code=&quot;b&quot;&gt;jeunes&lt;/entry&gt; 
&lt;entry code=&quot;u&quot;&gt;indéterminé&lt;/entry&gt; 
&lt;entry code=&quot;z&quot;&gt;autre&lt;/entry&gt; 
&lt;/XMLlist&gt;&lt;/code&gt;

et remlacer la ligne 
&lt;entry code=&quot;b&quot;&gt;jeunes&lt;/entry&gt;  
par 
&lt;entry code=&quot;j&quot;&gt;jeunes&lt;/entry&gt;

il faut dire que les pontes qui on pondu la r995 n'ont pas nécessairement fait preuve de beaucoup de cohérence quand ils ont attribué les codes, et ne les ont pas révisé depuis 2005

ainsi

&quot;jeunes&quot; dans 995$j (section)est codé &quot;j&quot;

&quot;jeunes&quot; dans 995$q (code stat/public visé) est codé &quot;b&quot;

d'où la confusion...

===Sauvegarde automatisée===
Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.
====Sauvegarde de la base====
Créer le fichier sauvegarde.sh dans /root : 
&lt;code&gt;! /bin/bash
# Ce script enregistre un journal qui rend compte du bon déroulement des évènements  dans 
#/root/sauvegarde.log
# démarrage du script, redirection des messages d'erreurs, fin de la sauvegarde.

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes et on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

# On écrit dans le journal :

echo &quot;Sauvegarde du $(date)terminée&quot; &gt;&gt; /root/sauvegarde.log

# On éteint le serveur :

shutdown -h now&lt;/code&gt;

Rendez ce script exécutable :
&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;
Editez la crontab pour planifier la fréquence de la sauvegarde
&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;
&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;
et ajoutez la ligne 
&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;
pour une sauvegarde quotidienne à 18h30 par exemple

====Restaurer la base==== 
d'abord créer une base vide :
&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;
on dezippe la sauvegarde : 
&lt;code&gt;ServeurPmb:~# gunzip /save/sauvegarde.sql.gz&lt;/code&gt;
puis on restaure :
&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>ep0fpoobtscg2ctiuae6g5gh3vnc9al</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5245</id>
      <parentid>5242</parentid>
      <timestamp>2013-06-06T12:12:16Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Php5 et ses extensions */</comment>
      <text xml:space="preserve" bytes="18203">màj de la procédure courant janvier 2013 pour la distribution ''Debian Squeeze 6.0.6 stable'' et la version 4.0.2 de l'archive PMB

PMB est un &quot;Système Intégré de Gestion de Bibliothèque&quot; libre. C'est une web-appli qui s'installe donc sur un LAMP.

Ce tutoriel proposé par [https://www.isalo.org/wiki.debian-fr/index.php?title=Utilisateur:LaurentBDP976 LaurentBDP976] décrit pas-à-pas l'installation de ce service sur une distri Linux Debian.

Une version PDF de ce tutoriel est dispo @ http://download.tuxfamily.org/biblinuxiens/doc/

----

==Préambule==
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.
a
Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...
==Configurer les ressources Debian==
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apt/sources.list&lt;/code&gt;
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''Php-yaz'' nécessaire pour communiquer avec les serveurs ''Z39.50''.
&lt;code&gt;deb http://ftp.indexdata.dk/debian squeeze main&lt;/code&gt;
profitez-en aussi pour intégrer les ressources debian.fr
&lt;code&gt;deb http://ftp.fr.debian.org/debian/ squeeze main&lt;/code&gt;
et commentez les autres dépots
&lt;code&gt;#deb http://ftp.debian.org/debian/ squeeze main
#deb-src http://ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Php-yaz'' : après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'', on peut s'en passer, mais autant faire les choses dans les règles de l'art :
&lt;code&gt;wget http://ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;
Puis mettez à jour votre gestionnaire de packages
&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;
Les ressources officielles pour php-yaz :
[[http://www.indexdata.dk http://www.indexdata.dk]]
[[ftp://ftp.indexdata.dk/pub/debian/dists ftp://ftp.indexdata.dk/pub/debian/dists]]

==Installation du serveur Apache==

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~# aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ?? It Works ! ?? s'ouvre et vous informe que Apache fonctionne correctement .

==Installer MySQL5==
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
==Php5 et ses extensions==
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~# aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5 :
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de votre base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 512M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 512M 
upload_max_filesize = 512M.&lt;/code&gt;

Ces paramètres devraient convenir à la plupart des bibliothèques. 
Dans le cas de grosses structures possédant des fonds documentaires  importants, les ré-indexations de la base peuvent durer plusieurs heures, le max_execution_time devra donc être porté à 36000. 

Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;/code&gt;&lt;?php
phpinfo();
?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :
localhost/phpinfo.php

Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

==PhpMyAdmin==
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root ''mysql'' défini au chapitre 4) installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : [[http://www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html]]
==Installation de PMB==
===L'archive PMB===
Téléchargez l'archive PMB depuis le site [[http://www.pmbservices.fr]]
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
===Définir les droits d'accès à /var/www/pmb===
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
===Installation de la base Pmb===
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http://localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.
==Configuration post-install==
===Scripts d'import Unimarc===
Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 
&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;
chercher le bloc de lignes : 
&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section
		$data_doc=array();
		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);
		if (!$info_995[$nb_expl]['q'])
 			$info_995[$nb_expl]['q'] = &quot;u&quot;;
		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];
		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;
		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;
			else $data_doc['sdoc_owner'] = 0 ;
		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;
et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

même remarque concernant les codes stats lecteurs, si vous tentez d'importer un fichier de lecteur externe conforme à la recommandation 995 il vous faudra editer pmb/includes/marc_tables/FR_fr/section_995.xml
&lt;code&gt;&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?&gt;

&lt;!DOCTYPE XMLlist SYSTEM &quot;../../XMLlist.dtd&quot;&gt;

&lt;!-- liste des section 995 (public visé) de AFBDP $Id: section_995.xml,v 1.1 2004-06-09 07:15:06 touraine37 Exp $ --&gt;
-&lt;XMLlist&gt; 
&lt;entry code=&quot;a&quot;&gt;adultes&lt;/entry&gt; 
&lt;entry code=&quot;b&quot;&gt;jeunes&lt;/entry&gt; 
&lt;entry code=&quot;u&quot;&gt;indéterminé&lt;/entry&gt; 
&lt;entry code=&quot;z&quot;&gt;autre&lt;/entry&gt; 
&lt;/XMLlist&gt;&lt;/code&gt;

et remlacer la ligne 
&lt;entry code=&quot;b&quot;&gt;jeunes&lt;/entry&gt;  
par 
&lt;entry code=&quot;j&quot;&gt;jeunes&lt;/entry&gt;

il faut dire que les pontes qui on pondu la r995 n'ont pas nécessairement fait preuve de beaucoup de cohérence quand ils ont attribué les codes, et ne les ont pas révisé depuis 2005

ainsi

&quot;jeunes&quot; dans 995$j (section)est codé &quot;j&quot;

&quot;jeunes&quot; dans 995$q (code stat/public visé) est codé &quot;b&quot;

d'où la confusion...

===Sauvegarde automatisée===
Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.
====Sauvegarde de la base====
Créer le fichier sauvegarde.sh dans /root : 
&lt;code&gt;! /bin/bash
# Ce script enregistre un journal qui rend compte du bon déroulement des évènements  dans 
#/root/sauvegarde.log
# démarrage du script, redirection des messages d'erreurs, fin de la sauvegarde.

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes et on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

# On écrit dans le journal :

echo &quot;Sauvegarde du $(date)terminée&quot; &gt;&gt; /root/sauvegarde.log

# On éteint le serveur :

shutdown -h now&lt;/code&gt;

Rendez ce script exécutable :
&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;
Editez la crontab pour planifier la fréquence de la sauvegarde
&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;
&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;
et ajoutez la ligne 
&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;
pour une sauvegarde quotidienne à 18h30 par exemple

====Restaurer la base==== 
d'abord créer une base vide :
&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;
on dezippe la sauvegarde : 
&lt;code&gt;ServeurPmb:~# gunzip /save/sauvegarde.sql.gz&lt;/code&gt;
puis on restaure :
&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>mdch584kuldg3fse0ma16lcyv5xeve2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5246</id>
      <parentid>5245</parentid>
      <timestamp>2013-06-06T12:13:40Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Php5 et ses extensions */</comment>
      <text xml:space="preserve" bytes="18218">màj de la procédure courant janvier 2013 pour la distribution ''Debian Squeeze 6.0.6 stable'' et la version 4.0.2 de l'archive PMB

PMB est un &quot;Système Intégré de Gestion de Bibliothèque&quot; libre. C'est une web-appli qui s'installe donc sur un LAMP.

Ce tutoriel proposé par [https://www.isalo.org/wiki.debian-fr/index.php?title=Utilisateur:LaurentBDP976 LaurentBDP976] décrit pas-à-pas l'installation de ce service sur une distri Linux Debian.

Une version PDF de ce tutoriel est dispo @ http://download.tuxfamily.org/biblinuxiens/doc/

----

==Préambule==
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.
a
Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...
==Configurer les ressources Debian==
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apt/sources.list&lt;/code&gt;
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''Php-yaz'' nécessaire pour communiquer avec les serveurs ''Z39.50''.
&lt;code&gt;deb http://ftp.indexdata.dk/debian squeeze main&lt;/code&gt;
profitez-en aussi pour intégrer les ressources debian.fr
&lt;code&gt;deb http://ftp.fr.debian.org/debian/ squeeze main&lt;/code&gt;
et commentez les autres dépots
&lt;code&gt;#deb http://ftp.debian.org/debian/ squeeze main
#deb-src http://ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Php-yaz'' : après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'', on peut s'en passer, mais autant faire les choses dans les règles de l'art :
&lt;code&gt;wget http://ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;
Puis mettez à jour votre gestionnaire de packages
&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;
Les ressources officielles pour php-yaz :
[[http://www.indexdata.dk http://www.indexdata.dk]]
[[ftp://ftp.indexdata.dk/pub/debian/dists ftp://ftp.indexdata.dk/pub/debian/dists]]

==Installation du serveur Apache==

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~# aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ?? It Works ! ?? s'ouvre et vous informe que Apache fonctionne correctement .

==Installer MySQL5==
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
==Php5 et ses extensions==
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~# aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5 :
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de votre base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 512M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 512M 
upload_max_filesize = 512M.&lt;/code&gt;

Ces paramètres devraient convenir à la plupart des bibliothèques. 
Dans le cas de grosses structures possédant des fonds documentaires  importants, les ré-indexations de la base peuvent durer plusieurs heures, le max_execution_time devra donc être porté à 36000. 

Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;code&gt;&lt;?php

phpinfo();

?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :

&lt;code&gt;localhost/phpinfo.php&lt;/code&gt;

Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

==PhpMyAdmin==
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root ''mysql'' défini au chapitre 4) installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : [[http://www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html]]
==Installation de PMB==
===L'archive PMB===
Téléchargez l'archive PMB depuis le site [[http://www.pmbservices.fr]]
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
===Définir les droits d'accès à /var/www/pmb===
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
===Installation de la base Pmb===
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http://localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.
==Configuration post-install==
===Scripts d'import Unimarc===
Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 
&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;
chercher le bloc de lignes : 
&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section
		$data_doc=array();
		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);
		if (!$info_995[$nb_expl]['q'])
 			$info_995[$nb_expl]['q'] = &quot;u&quot;;
		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];
		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;
		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;
			else $data_doc['sdoc_owner'] = 0 ;
		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;
et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

même remarque concernant les codes stats lecteurs, si vous tentez d'importer un fichier de lecteur externe conforme à la recommandation 995 il vous faudra editer pmb/includes/marc_tables/FR_fr/section_995.xml
&lt;code&gt;&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?&gt;

&lt;!DOCTYPE XMLlist SYSTEM &quot;../../XMLlist.dtd&quot;&gt;

&lt;!-- liste des section 995 (public visé) de AFBDP $Id: section_995.xml,v 1.1 2004-06-09 07:15:06 touraine37 Exp $ --&gt;
-&lt;XMLlist&gt; 
&lt;entry code=&quot;a&quot;&gt;adultes&lt;/entry&gt; 
&lt;entry code=&quot;b&quot;&gt;jeunes&lt;/entry&gt; 
&lt;entry code=&quot;u&quot;&gt;indéterminé&lt;/entry&gt; 
&lt;entry code=&quot;z&quot;&gt;autre&lt;/entry&gt; 
&lt;/XMLlist&gt;&lt;/code&gt;

et remlacer la ligne 
&lt;entry code=&quot;b&quot;&gt;jeunes&lt;/entry&gt;  
par 
&lt;entry code=&quot;j&quot;&gt;jeunes&lt;/entry&gt;

il faut dire que les pontes qui on pondu la r995 n'ont pas nécessairement fait preuve de beaucoup de cohérence quand ils ont attribué les codes, et ne les ont pas révisé depuis 2005

ainsi

&quot;jeunes&quot; dans 995$j (section)est codé &quot;j&quot;

&quot;jeunes&quot; dans 995$q (code stat/public visé) est codé &quot;b&quot;

d'où la confusion...

===Sauvegarde automatisée===
Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.
====Sauvegarde de la base====
Créer le fichier sauvegarde.sh dans /root : 
&lt;code&gt;! /bin/bash
# Ce script enregistre un journal qui rend compte du bon déroulement des évènements  dans 
#/root/sauvegarde.log
# démarrage du script, redirection des messages d'erreurs, fin de la sauvegarde.

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes et on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

# On écrit dans le journal :

echo &quot;Sauvegarde du $(date)terminée&quot; &gt;&gt; /root/sauvegarde.log

# On éteint le serveur :

shutdown -h now&lt;/code&gt;

Rendez ce script exécutable :
&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;
Editez la crontab pour planifier la fréquence de la sauvegarde
&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;
&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;
et ajoutez la ligne 
&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;
pour une sauvegarde quotidienne à 18h30 par exemple

====Restaurer la base==== 
d'abord créer une base vide :
&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;
on dezippe la sauvegarde : 
&lt;code&gt;ServeurPmb:~# gunzip /save/sauvegarde.sql.gz&lt;/code&gt;
puis on restaure :
&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>dujy5awn94zf3fb22164hu8gspno4tz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5247</id>
      <parentid>5246</parentid>
      <timestamp>2013-06-06T12:14:53Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Configurer les ressources Debian */</comment>
      <text xml:space="preserve" bytes="18237">màj de la procédure courant janvier 2013 pour la distribution ''Debian Squeeze 6.0.6 stable'' et la version 4.0.2 de l'archive PMB

PMB est un &quot;Système Intégré de Gestion de Bibliothèque&quot; libre. C'est une web-appli qui s'installe donc sur un LAMP.

Ce tutoriel proposé par [https://www.isalo.org/wiki.debian-fr/index.php?title=Utilisateur:LaurentBDP976 LaurentBDP976] décrit pas-à-pas l'installation de ce service sur une distri Linux Debian.

Une version PDF de ce tutoriel est dispo @ http://download.tuxfamily.org/biblinuxiens/doc/

----

==Préambule==
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif.
a
Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...
==Configurer les ressources Debian==
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apt/sources.list&lt;/code&gt;
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''Php-yaz'' nécessaire pour communiquer avec les serveurs ''Z39.50''.
&lt;code&gt;deb http://ftp.indexdata.dk/debian squeeze main&lt;/code&gt;
profitez-en aussi pour intégrer les ressources debian.fr
&lt;code&gt;deb http://ftp.fr.debian.org/debian/ squeeze main&lt;/code&gt;
et commentez les autres dépots
&lt;code&gt;#deb http://ftp.debian.org/debian/ squeeze main
#deb-src http://ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Php-yaz'' : après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'', on peut s'en passer, mais autant faire les choses dans les règles de l'art :
&lt;code&gt;root@ServeurPMB:~# wget http://ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;
Puis mettez à jour votre gestionnaire de packages
&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;
Les ressources officielles pour php-yaz :
[[http://www.indexdata.dk http://www.indexdata.dk]]
[[ftp://ftp.indexdata.dk/pub/debian/dists ftp://ftp.indexdata.dk/pub/debian/dists]]

==Installation du serveur Apache==

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~# aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ?? It Works ! ?? s'ouvre et vous informe que Apache fonctionne correctement .

==Installer MySQL5==
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
==Php5 et ses extensions==
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~# aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5 :
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de votre base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 512M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 512M 
upload_max_filesize = 512M.&lt;/code&gt;

Ces paramètres devraient convenir à la plupart des bibliothèques. 
Dans le cas de grosses structures possédant des fonds documentaires  importants, les ré-indexations de la base peuvent durer plusieurs heures, le max_execution_time devra donc être porté à 36000. 

Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;code&gt;&lt;?php

phpinfo();

?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :

&lt;code&gt;localhost/phpinfo.php&lt;/code&gt;

Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

==PhpMyAdmin==
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root ''mysql'' défini au chapitre 4) installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : [[http://www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html]]
==Installation de PMB==
===L'archive PMB===
Téléchargez l'archive PMB depuis le site [[http://www.pmbservices.fr]]
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
===Définir les droits d'accès à /var/www/pmb===
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
===Installation de la base Pmb===
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http://localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.
==Configuration post-install==
===Scripts d'import Unimarc===
Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 
&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;
chercher le bloc de lignes : 
&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section
		$data_doc=array();
		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);
		if (!$info_995[$nb_expl]['q'])
 			$info_995[$nb_expl]['q'] = &quot;u&quot;;
		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];
		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;
		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;
			else $data_doc['sdoc_owner'] = 0 ;
		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;
et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

même remarque concernant les codes stats lecteurs, si vous tentez d'importer un fichier de lecteur externe conforme à la recommandation 995 il vous faudra editer pmb/includes/marc_tables/FR_fr/section_995.xml
&lt;code&gt;&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?&gt;

&lt;!DOCTYPE XMLlist SYSTEM &quot;../../XMLlist.dtd&quot;&gt;

&lt;!-- liste des section 995 (public visé) de AFBDP $Id: section_995.xml,v 1.1 2004-06-09 07:15:06 touraine37 Exp $ --&gt;
-&lt;XMLlist&gt; 
&lt;entry code=&quot;a&quot;&gt;adultes&lt;/entry&gt; 
&lt;entry code=&quot;b&quot;&gt;jeunes&lt;/entry&gt; 
&lt;entry code=&quot;u&quot;&gt;indéterminé&lt;/entry&gt; 
&lt;entry code=&quot;z&quot;&gt;autre&lt;/entry&gt; 
&lt;/XMLlist&gt;&lt;/code&gt;

et remlacer la ligne 
&lt;entry code=&quot;b&quot;&gt;jeunes&lt;/entry&gt;  
par 
&lt;entry code=&quot;j&quot;&gt;jeunes&lt;/entry&gt;

il faut dire que les pontes qui on pondu la r995 n'ont pas nécessairement fait preuve de beaucoup de cohérence quand ils ont attribué les codes, et ne les ont pas révisé depuis 2005

ainsi

&quot;jeunes&quot; dans 995$j (section)est codé &quot;j&quot;

&quot;jeunes&quot; dans 995$q (code stat/public visé) est codé &quot;b&quot;

d'où la confusion...

===Sauvegarde automatisée===
Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.
====Sauvegarde de la base====
Créer le fichier sauvegarde.sh dans /root : 
&lt;code&gt;! /bin/bash
# Ce script enregistre un journal qui rend compte du bon déroulement des évènements  dans 
#/root/sauvegarde.log
# démarrage du script, redirection des messages d'erreurs, fin de la sauvegarde.

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes et on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

# On écrit dans le journal :

echo &quot;Sauvegarde du $(date)terminée&quot; &gt;&gt; /root/sauvegarde.log

# On éteint le serveur :

shutdown -h now&lt;/code&gt;

Rendez ce script exécutable :
&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;
Editez la crontab pour planifier la fréquence de la sauvegarde
&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;
&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;
et ajoutez la ligne 
&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;
pour une sauvegarde quotidienne à 18h30 par exemple

====Restaurer la base==== 
d'abord créer une base vide :
&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;
on dezippe la sauvegarde : 
&lt;code&gt;ServeurPmb:~# gunzip /save/sauvegarde.sql.gz&lt;/code&gt;
puis on restaure :
&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>lytc1zn4m8trlsupxpbhdvvfh01on6g</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5248</id>
      <parentid>5247</parentid>
      <timestamp>2013-06-06T12:17:13Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <comment>/* Préambule */</comment>
      <text xml:space="preserve" bytes="18371">màj de la procédure courant janvier 2013 pour la distribution ''Debian Squeeze 6.0.6 stable'' et la version 4.0.2 de l'archive PMB

PMB est un &quot;Système Intégré de Gestion de Bibliothèque&quot; libre. C'est une web-appli qui s'installe donc sur un LAMP.

Ce tutoriel proposé par [https://www.isalo.org/wiki.debian-fr/index.php?title=Utilisateur:LaurentBDP976 LaurentBDP976] décrit pas-à-pas l'installation de ce service sur une distri Linux Debian.

Une version PDF de ce tutoriel est dispo @ http://download.tuxfamily.org/biblinuxiens/doc/

----

==Préambule==
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif. Pour des raisons évidentes de sécurité les comptes ne possédant pas de mot de passe sont autoomatiquement vérouillé sous Linux.

Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...

==Configurer les ressources Debian==
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apt/sources.list&lt;/code&gt;
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''Php-yaz'' nécessaire pour communiquer avec les serveurs ''Z39.50''.
&lt;code&gt;deb http://ftp.indexdata.dk/debian squeeze main&lt;/code&gt;
profitez-en aussi pour intégrer les ressources debian.fr
&lt;code&gt;deb http://ftp.fr.debian.org/debian/ squeeze main&lt;/code&gt;
et commentez les autres dépots
&lt;code&gt;#deb http://ftp.debian.org/debian/ squeeze main
#deb-src http://ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Php-yaz'' : après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'', on peut s'en passer, mais autant faire les choses dans les règles de l'art :
&lt;code&gt;root@ServeurPMB:~# wget http://ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;
Puis mettez à jour votre gestionnaire de packages
&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;
Les ressources officielles pour php-yaz :
[[http://www.indexdata.dk http://www.indexdata.dk]]
[[ftp://ftp.indexdata.dk/pub/debian/dists ftp://ftp.indexdata.dk/pub/debian/dists]]

==Installation du serveur Apache==

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~# aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ?? It Works ! ?? s'ouvre et vous informe que Apache fonctionne correctement .

==Installer MySQL5==
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
==Php5 et ses extensions==
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~# aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5 :
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de votre base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 512M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 512M 
upload_max_filesize = 512M.&lt;/code&gt;

Ces paramètres devraient convenir à la plupart des bibliothèques. 
Dans le cas de grosses structures possédant des fonds documentaires  importants, les ré-indexations de la base peuvent durer plusieurs heures, le max_execution_time devra donc être porté à 36000. 

Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;code&gt;&lt;?php

phpinfo();

?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :

&lt;code&gt;localhost/phpinfo.php&lt;/code&gt;

Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

==PhpMyAdmin==
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root ''mysql'' défini au chapitre 4) installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : [[http://www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html]]
==Installation de PMB==
===L'archive PMB===
Téléchargez l'archive PMB depuis le site [[http://www.pmbservices.fr]]
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
===Définir les droits d'accès à /var/www/pmb===
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
===Installation de la base Pmb===
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http://localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.
==Configuration post-install==
===Scripts d'import Unimarc===
Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 
&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;
chercher le bloc de lignes : 
&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section
		$data_doc=array();
		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);
		if (!$info_995[$nb_expl]['q'])
 			$info_995[$nb_expl]['q'] = &quot;u&quot;;
		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];
		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;
		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;
			else $data_doc['sdoc_owner'] = 0 ;
		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;
et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

même remarque concernant les codes stats lecteurs, si vous tentez d'importer un fichier de lecteur externe conforme à la recommandation 995 il vous faudra editer pmb/includes/marc_tables/FR_fr/section_995.xml
&lt;code&gt;&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?&gt;

&lt;!DOCTYPE XMLlist SYSTEM &quot;../../XMLlist.dtd&quot;&gt;

&lt;!-- liste des section 995 (public visé) de AFBDP $Id: section_995.xml,v 1.1 2004-06-09 07:15:06 touraine37 Exp $ --&gt;
-&lt;XMLlist&gt; 
&lt;entry code=&quot;a&quot;&gt;adultes&lt;/entry&gt; 
&lt;entry code=&quot;b&quot;&gt;jeunes&lt;/entry&gt; 
&lt;entry code=&quot;u&quot;&gt;indéterminé&lt;/entry&gt; 
&lt;entry code=&quot;z&quot;&gt;autre&lt;/entry&gt; 
&lt;/XMLlist&gt;&lt;/code&gt;

et remlacer la ligne 
&lt;entry code=&quot;b&quot;&gt;jeunes&lt;/entry&gt;  
par 
&lt;entry code=&quot;j&quot;&gt;jeunes&lt;/entry&gt;

il faut dire que les pontes qui on pondu la r995 n'ont pas nécessairement fait preuve de beaucoup de cohérence quand ils ont attribué les codes, et ne les ont pas révisé depuis 2005

ainsi

&quot;jeunes&quot; dans 995$j (section)est codé &quot;j&quot;

&quot;jeunes&quot; dans 995$q (code stat/public visé) est codé &quot;b&quot;

d'où la confusion...

===Sauvegarde automatisée===
Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.
====Sauvegarde de la base====
Créer le fichier sauvegarde.sh dans /root : 
&lt;code&gt;! /bin/bash
# Ce script enregistre un journal qui rend compte du bon déroulement des évènements  dans 
#/root/sauvegarde.log
# démarrage du script, redirection des messages d'erreurs, fin de la sauvegarde.

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes et on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

# On écrit dans le journal :

echo &quot;Sauvegarde du $(date)terminée&quot; &gt;&gt; /root/sauvegarde.log

# On éteint le serveur :

shutdown -h now&lt;/code&gt;

Rendez ce script exécutable :
&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;
Editez la crontab pour planifier la fréquence de la sauvegarde
&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;
&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;
et ajoutez la ligne 
&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;
pour une sauvegarde quotidienne à 18h30 par exemple

====Restaurer la base==== 
d'abord créer une base vide :
&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;
on dezippe la sauvegarde : 
&lt;code&gt;ServeurPmb:~# gunzip /save/sauvegarde.sql.gz&lt;/code&gt;
puis on restaure :
&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>pe4zwblzxl0hiqze33q5ecx072kmkmj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5253</id>
      <parentid>5248</parentid>
      <timestamp>2013-06-08T14:55:33Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="18370">màj de la procédure courant janvier 2013 pour la distribution ''Debian Squeeze 6.0.6 stable'' et la version 4.0.2 de l'archive PMB

PMB est un &quot;Système Intégré de Gestion de Bibliothèque&quot; libre. C'est une web-appli qui s'installe donc sur un LAMP.

Ce tutoriel proposé par [https://www.isalo.org/wiki.debian-fr/index.php?title=Utilisateur:LaurentBDP976 LaurentBDP976] décrit pas-à-pas l'installation de ce service sur une distri Linux Debian.

Une version PDF de ce tutoriel est dispo @ http://download.tuxfamily.org/biblinuxiens/doc/

----

==Préambule==
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif. Pour des raisons évidentes de sécurité les comptes ne possédant pas de mot de passe sont automatiquement vérouillé sous Linux.

Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...

==Configurer les ressources Debian==
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apt/sources.list&lt;/code&gt;
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''Php-yaz'' nécessaire pour communiquer avec les serveurs ''Z39.50''.
&lt;code&gt;deb http://ftp.indexdata.dk/debian squeeze main&lt;/code&gt;
profitez-en aussi pour intégrer les ressources debian.fr
&lt;code&gt;deb http://ftp.fr.debian.org/debian/ squeeze main&lt;/code&gt;
et commentez les autres dépots
&lt;code&gt;#deb http://ftp.debian.org/debian/ squeeze main
#deb-src http://ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Php-yaz'' : après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'', on peut s'en passer, mais autant faire les choses dans les règles de l'art :
&lt;code&gt;root@ServeurPMB:~# wget http://ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;
Puis mettez à jour votre gestionnaire de packages
&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;
Les ressources officielles pour php-yaz :
[[http://www.indexdata.dk http://www.indexdata.dk]]
[[ftp://ftp.indexdata.dk/pub/debian/dists ftp://ftp.indexdata.dk/pub/debian/dists]]

==Installation du serveur Apache==

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~# aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ?? It Works ! ?? s'ouvre et vous informe que Apache fonctionne correctement .

==Installer MySQL5==
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
==Php5 et ses extensions==
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~# aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5 :
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de votre base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 512M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 512M 
upload_max_filesize = 512M.&lt;/code&gt;

Ces paramètres devraient convenir à la plupart des bibliothèques. 
Dans le cas de grosses structures possédant des fonds documentaires  importants, les ré-indexations de la base peuvent durer plusieurs heures, le max_execution_time devra donc être porté à 36000. 

Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;code&gt;&lt;?php

phpinfo();

?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :

&lt;code&gt;localhost/phpinfo.php&lt;/code&gt;

Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

==PhpMyAdmin==
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root ''mysql'' défini au chapitre 4) installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : [[http://www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html]]
==Installation de PMB==
===L'archive PMB===
Téléchargez l'archive PMB depuis le site [[http://www.pmbservices.fr]]
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
===Définir les droits d'accès à /var/www/pmb===
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
===Installation de la base Pmb===
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http://localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.
==Configuration post-install==
===Scripts d'import Unimarc===
Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 
&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;
chercher le bloc de lignes : 
&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section
		$data_doc=array();
		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);
		if (!$info_995[$nb_expl]['q'])
 			$info_995[$nb_expl]['q'] = &quot;u&quot;;
		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];
		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;
		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;
			else $data_doc['sdoc_owner'] = 0 ;
		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;
et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

même remarque concernant les codes stats lecteurs, si vous tentez d'importer un fichier de lecteur externe conforme à la recommandation 995 il vous faudra editer pmb/includes/marc_tables/FR_fr/section_995.xml
&lt;code&gt;&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?&gt;

&lt;!DOCTYPE XMLlist SYSTEM &quot;../../XMLlist.dtd&quot;&gt;

&lt;!-- liste des section 995 (public visé) de AFBDP $Id: section_995.xml,v 1.1 2004-06-09 07:15:06 touraine37 Exp $ --&gt;
-&lt;XMLlist&gt; 
&lt;entry code=&quot;a&quot;&gt;adultes&lt;/entry&gt; 
&lt;entry code=&quot;b&quot;&gt;jeunes&lt;/entry&gt; 
&lt;entry code=&quot;u&quot;&gt;indéterminé&lt;/entry&gt; 
&lt;entry code=&quot;z&quot;&gt;autre&lt;/entry&gt; 
&lt;/XMLlist&gt;&lt;/code&gt;

et remlacer la ligne 
&lt;entry code=&quot;b&quot;&gt;jeunes&lt;/entry&gt;  
par 
&lt;entry code=&quot;j&quot;&gt;jeunes&lt;/entry&gt;

il faut dire que les pontes qui on pondu la r995 n'ont pas nécessairement fait preuve de beaucoup de cohérence quand ils ont attribué les codes, et ne les ont pas révisé depuis 2005

ainsi

&quot;jeunes&quot; dans 995$j (section)est codé &quot;j&quot;

&quot;jeunes&quot; dans 995$q (code stat/public visé) est codé &quot;b&quot;

d'où la confusion...

===Sauvegarde automatisée===
Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.
====Sauvegarde de la base====
Créer le fichier sauvegarde.sh dans /root : 
&lt;code&gt;! /bin/bash
# Ce script enregistre un journal qui rend compte du bon déroulement des évènements  dans 
#/root/sauvegarde.log
# démarrage du script, redirection des messages d'erreurs, fin de la sauvegarde.

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes et on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

# On écrit dans le journal :

echo &quot;Sauvegarde du $(date)terminée&quot; &gt;&gt; /root/sauvegarde.log

# On éteint le serveur :

shutdown -h now&lt;/code&gt;

Rendez ce script exécutable :
&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;
Editez la crontab pour planifier la fréquence de la sauvegarde
&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;
&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;
et ajoutez la ligne 
&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;
pour une sauvegarde quotidienne à 18h30 par exemple

====Restaurer la base==== 
d'abord créer une base vide :
&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;
on dezippe la sauvegarde : 
&lt;code&gt;ServeurPmb:~# gunzip /save/sauvegarde.sql.gz&lt;/code&gt;
puis on restaure :
&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>pvt5bkrmf7zl6qzlovnd1e97ifs6cpa</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5254</id>
      <parentid>5253</parentid>
      <timestamp>2013-06-08T14:55:49Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="18371">màj de la procédure courant janvier 2013 pour la distribution ''Debian Squeeze 6.0.6 stable'' et la version 4.0.2 de l'archive PMB

PMB est un &quot;Système Intégré de Gestion de Bibliothèque&quot; libre. C'est une web-appli qui s'installe donc sur un LAMP.

Ce tutoriel proposé par [https://www.isalo.org/wiki.debian-fr/index.php?title=Utilisateur:LaurentBDP976 LaurentBDP976] décrit pas-à-pas l'installation de ce service sur une distri Linux Debian.

Une version PDF de ce tutoriel est dispo @ http://download.tuxfamily.org/biblinuxiens/doc/

----

==Préambule==
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif. Pour des raisons évidentes de sécurité les comptes ne possédant pas de mot de passe sont automatiquement verrouillés sous Linux.

Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...

==Configurer les ressources Debian==
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apt/sources.list&lt;/code&gt;
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''Php-yaz'' nécessaire pour communiquer avec les serveurs ''Z39.50''.
&lt;code&gt;deb http://ftp.indexdata.dk/debian squeeze main&lt;/code&gt;
profitez-en aussi pour intégrer les ressources debian.fr
&lt;code&gt;deb http://ftp.fr.debian.org/debian/ squeeze main&lt;/code&gt;
et commentez les autres dépots
&lt;code&gt;#deb http://ftp.debian.org/debian/ squeeze main
#deb-src http://ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Php-yaz'' : après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'', on peut s'en passer, mais autant faire les choses dans les règles de l'art :
&lt;code&gt;root@ServeurPMB:~# wget http://ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;
Puis mettez à jour votre gestionnaire de packages
&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;
Les ressources officielles pour php-yaz :
[[http://www.indexdata.dk http://www.indexdata.dk]]
[[ftp://ftp.indexdata.dk/pub/debian/dists ftp://ftp.indexdata.dk/pub/debian/dists]]

==Installation du serveur Apache==

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~# aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ?? It Works ! ?? s'ouvre et vous informe que Apache fonctionne correctement .

==Installer MySQL5==
/!\ le package mysql-server-5.5 n'est pas intégré à la version stable de Debian actuellement la 6.0.6
Ce sera probablement le cas lorsque Debian 7 actuellement en phase de test sera déclarée stable probablement au début de cette année.

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.1&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
==Php5 et ses extensions==
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~# aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5 :
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de votre base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 512M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 512M 
upload_max_filesize = 512M.&lt;/code&gt;

Ces paramètres devraient convenir à la plupart des bibliothèques. 
Dans le cas de grosses structures possédant des fonds documentaires  importants, les ré-indexations de la base peuvent durer plusieurs heures, le max_execution_time devra donc être porté à 36000. 

Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;code&gt;&lt;?php

phpinfo();

?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :

&lt;code&gt;localhost/phpinfo.php&lt;/code&gt;

Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

==PhpMyAdmin==
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root ''mysql'' défini au chapitre 4) installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : [[http://www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html]]
==Installation de PMB==
===L'archive PMB===
Téléchargez l'archive PMB depuis le site [[http://www.pmbservices.fr]]
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
===Définir les droits d'accès à /var/www/pmb===
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
===Installation de la base Pmb===
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 

Pour d'obscures raisons de charset iso et UTF8 plus ou moins en bons termes, je n'ai jamais réussi à installer correctement les catégories et les indexations décimales Dewey pré-configurées dans le package d'install, tous les caractères spéciaux se retrouvent à la fin de l'install remplacés par des caractères ésotériques indéchiffrables. Donc, pour l'instant je choisi ''aucun''.
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http://localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.
==Configuration post-install==
===Scripts d'import Unimarc===
Les scripts d'import des paniers d'exemplaires unimarc dans /pmb/admin/import comportent une erreur de codage sur la section (995$j). Il vous faudra donc éditer votre script d'import et le modifier.

ex : 
&lt;code&gt;root@ServeurPMB:~# vi /var/www/pmb/admin/import/func_bdp.inc.php&lt;/code&gt;
chercher le bloc de lignes : 
&lt;code&gt;//$expl['section'] = $info_995[$nb_expl]['q']; à chercher dans docs_section
		$data_doc=array();
		$info_995[$nb_expl]['q']=trim($info_995[$nb_expl]['q']);
		if (!$info_995[$nb_expl]['q'])
 			$info_995[$nb_expl]['q'] = &quot;u&quot;;
		$data_doc['section_libelle'] = $section_995[$info_995[$nb_expl]['q']];
		$data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['q'] ;
		if ($sdoc_codage) $data_doc['sdoc_owner'] = $book_lender_id ;
			else $data_doc['sdoc_owner'] = 0 ;
		$expl['section'] = docs_section::import($data_doc);&lt;/code&gt;
et remplacer les &quot;&lt;nowiki&gt;['q']&lt;/nowiki&gt;&quot; par des &lt;nowiki&gt;&quot;['j']&quot;&lt;/nowiki&gt;

même remarque concernant les codes stats lecteurs, si vous tentez d'importer un fichier de lecteur externe conforme à la recommandation 995 il vous faudra editer pmb/includes/marc_tables/FR_fr/section_995.xml
&lt;code&gt;&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?&gt;

&lt;!DOCTYPE XMLlist SYSTEM &quot;../../XMLlist.dtd&quot;&gt;

&lt;!-- liste des section 995 (public visé) de AFBDP $Id: section_995.xml,v 1.1 2004-06-09 07:15:06 touraine37 Exp $ --&gt;
-&lt;XMLlist&gt; 
&lt;entry code=&quot;a&quot;&gt;adultes&lt;/entry&gt; 
&lt;entry code=&quot;b&quot;&gt;jeunes&lt;/entry&gt; 
&lt;entry code=&quot;u&quot;&gt;indéterminé&lt;/entry&gt; 
&lt;entry code=&quot;z&quot;&gt;autre&lt;/entry&gt; 
&lt;/XMLlist&gt;&lt;/code&gt;

et remlacer la ligne 
&lt;entry code=&quot;b&quot;&gt;jeunes&lt;/entry&gt;  
par 
&lt;entry code=&quot;j&quot;&gt;jeunes&lt;/entry&gt;

il faut dire que les pontes qui on pondu la r995 n'ont pas nécessairement fait preuve de beaucoup de cohérence quand ils ont attribué les codes, et ne les ont pas révisé depuis 2005

ainsi

&quot;jeunes&quot; dans 995$j (section)est codé &quot;j&quot;

&quot;jeunes&quot; dans 995$q (code stat/public visé) est codé &quot;b&quot;

d'où la confusion...

===Sauvegarde automatisée===
Planifiez une sauvegarde de préférence lorsque tout vos utilisateurs, lecteurs &amp; bibliothécaires, ont cessé d'utiliser Pmb disons une trentaine de minutes après la fermeture de votre bibliothèque. C'est la raison pour laquelle ce script comporte une commande shutdown -h now qui automatise la fermeture du serveur puisqu'en théorie plus personne ne se trouve dans les locaux pour éteindre le serveur lorsque la sauvegarde est terminée.
Le pipe vers gz n'est pas obligatoire.
====Sauvegarde de la base====
Créer le fichier sauvegarde.sh dans /root : 
&lt;code&gt;! /bin/bash
# Ce script enregistre un journal qui rend compte du bon déroulement des évènements  dans 
#/root/sauvegarde.log
# démarrage du script, redirection des messages d'erreurs, fin de la sauvegarde.

echo &quot;Démarrage sauvegarde du $(date)&quot; &gt;&gt; /root/sauvegarde.log

# Nettoyage des vieilles sauvegardes et on garde la possibilité de rollback sur 10 jours :

mv /save/sauvegarde9.sql.gz /save/sauvegarde10.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde8.sql.gz /save/sauvegarde9.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde7.sql.gz /save/sauvegarde8.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde6.sql.gz /save/sauvegarde7.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde5.sql.gz /save/sauvegarde6.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde4.sql.gz /save/sauvegarde5.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde3.sql.gz /save/sauvegarde4.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde2.sql.gz /save/sauvegarde3.sql.gz 2&gt;&gt; /root/sauvegarde.log
mv /save/sauvegarde1.sql.gz /save/sauvegarde2.sql.gz 2&gt;&gt; /root/sauvegarde.log

# la commande de sauvegarde de la base :

mysqldump -u root -pMOTDEPASSE  --opt BASE 2&gt;&gt; /root/sauvegarde.log | gzip &gt; /save/sauvegarde1.sql.gz 2&gt;&gt; /root/sauvegarde.log

# On écrit dans le journal :

echo &quot;Sauvegarde du $(date)terminée&quot; &gt;&gt; /root/sauvegarde.log

# On éteint le serveur :

shutdown -h now&lt;/code&gt;

Rendez ce script exécutable :
&lt;code&gt;Root@ServeurPmb:~# chmod u+x sauvegarde.sh&lt;/code&gt;
Editez la crontab pour planifier la fréquence de la sauvegarde
&lt;code&gt;root@serveurPMB:~# vi /etc/crontab&lt;/code&gt;
&lt;code&gt;# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )&lt;/code&gt;
et ajoutez la ligne 
&lt;code&gt;30 18 * * * root /root/sauvegarde.sh&lt;/code&gt;
pour une sauvegarde quotidienne à 18h30 par exemple

====Restaurer la base==== 
d'abord créer une base vide :
&lt;code&gt;ServeurPmb:~# mysql -u root -p password
mysql&gt; create database nomdelabase;
mysql&gt; exit&lt;/code&gt;
on dezippe la sauvegarde : 
&lt;code&gt;ServeurPmb:~# gunzip /save/sauvegarde.sql.gz&lt;/code&gt;
puis on restaure :
&lt;code&gt;ServeurPmb:~# mysql -u root -pmotdepasse nomdelabase &lt; /save/sauvegarde.sql&lt;/code&gt;</text>
      <sha1>ev0fzubcfoufis7exqpo4cbm42ofrjm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5691</id>
      <parentid>5254</parentid>
      <timestamp>2014-07-15T11:13:57Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <minor/>
      <comment>màj</comment>
      <text xml:space="preserve" bytes="12312">màj de la procédure courant juillet 2014 pour la distribution ''Debian Wheezy 7 stable'' et la version 4.1 RC1 de l'archive PMB

PMB est un &quot;Système Intégré de Gestion de Bibliothèque&quot; libre. C'est une web-appli qui s'installe donc sur un LAMP.

Ce tutoriel proposé par [https://www.isalo.org/wiki.debian-fr/index.php?title=Utilisateur:LaurentBDP976 LaurentBDP976] décrit pas-à-pas l'installation de ce service sur une distri Linux Debian.

Une version PDF de ce tutoriel est dispo @ http://download.tuxfamily.org/biblinuxiens/doc/

----

==Préambule==
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif. Pour des raisons évidentes de sécurité les comptes ne possédant pas de mot de passe sont automatiquement verrouillés sous Linux.

Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...

==Configurer les ressources Debian==
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apt/sources.list&lt;/code&gt;
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''Php-yaz'' nécessaire pour communiquer avec les serveurs ''Z39.50''.
&lt;code&gt;deb http://ftp.indexdata.dk/debian squeeze main&lt;/code&gt;
profitez-en aussi pour intégrer les ressources debian.fr
&lt;code&gt;deb http://ftp.fr.debian.org/debian/ squeeze main&lt;/code&gt;
et commentez les autres dépots
&lt;code&gt;#deb http://ftp.debian.org/debian/ squeeze main
#deb-src http://ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Php-yaz'' : après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'', on peut s'en passer, mais autant faire les choses dans les règles de l'art :
&lt;code&gt;root@ServeurPMB:~# wget http://ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;
Puis mettez à jour votre gestionnaire de packages
&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;
Les ressources officielles pour php-yaz :
[[http://www.indexdata.dk http://www.indexdata.dk]]
[[ftp://ftp.indexdata.dk/pub/debian/dists ftp://ftp.indexdata.dk/pub/debian/dists]]

==Installation du serveur Apache==

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~# aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ?? It Works ! ?? s'ouvre et vous informe que Apache fonctionne correctement .

==Installer MySQL5==

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.5&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
==Php5 et ses extensions==
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~# aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5 :
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de votre base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 512M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 512M 
upload_max_filesize = 512M.&lt;/code&gt;

Ces paramètres devraient convenir à la plupart des bibliothèques. 
Dans le cas de grosses structures possédant des fonds documentaires  importants, les ré-indexations de la base peuvent durer plusieurs heures, le max_execution_time devra donc être porté à 36000. 

Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;code&gt;&lt;?php

phpinfo();

?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :

&lt;code&gt;localhost/phpinfo.php&lt;/code&gt;

Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

==PhpMyAdmin==
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root ''mysql'' défini au chapitre 4) installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : [[http://www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html]]
==Installation de PMB==
===L'archive PMB===
Téléchargez l'archive PMB depuis le site [[http://www.pmbservices.fr]]
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
===Définir les droits d'accès à /var/www/pmb===
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
===Installation de la base Pmb===
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http://localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.</text>
      <sha1>cmquezky35yc0joj3trfyje3isamzja</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5692</id>
      <parentid>5691</parentid>
      <timestamp>2014-07-15T11:16:41Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="12329">màj de la doc et est de la procédure courant juillet 2014 pour la distribution ''Debian Wheezy 7 stable'' et la version 4.1.RC1 de l'archive PMB

PMB est un &quot;Système Intégré de Gestion de Bibliothèque&quot; libre. C'est une web-appli qui s'installe donc sur un LAMP.

Ce tutoriel proposé par [https://www.isalo.org/wiki.debian-fr/index.php?title=Utilisateur:LaurentBDP976 LaurentBDP976] décrit pas-à-pas l'installation de ce service sur une distri Linux Debian.

Une version PDF de ce tutoriel est dispo @ http://download.tuxfamily.org/biblinuxiens/doc/

----

==Préambule==
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif. Pour des raisons évidentes de sécurité les comptes ne possédant pas de mot de passe sont automatiquement verrouillés sous Linux.

Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...

==Configurer les ressources Debian==
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apt/sources.list&lt;/code&gt;
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''Php-yaz'' nécessaire pour communiquer avec les serveurs ''Z39.50''.
&lt;code&gt;deb http://ftp.indexdata.dk/debian squeeze main&lt;/code&gt;
profitez-en aussi pour intégrer les ressources debian.fr
&lt;code&gt;deb http://ftp.fr.debian.org/debian/ squeeze main&lt;/code&gt;
et commentez les autres dépots
&lt;code&gt;#deb http://ftp.debian.org/debian/ squeeze main
#deb-src http://ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Php-yaz'' : après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'', on peut s'en passer, mais autant faire les choses dans les règles de l'art :
&lt;code&gt;root@ServeurPMB:~# wget http://ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;
Puis mettez à jour votre gestionnaire de packages
&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;
Les ressources officielles pour php-yaz :
[[http://www.indexdata.dk http://www.indexdata.dk]]
[[ftp://ftp.indexdata.dk/pub/debian/dists ftp://ftp.indexdata.dk/pub/debian/dists]]

==Installation du serveur Apache==

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~# aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ?? It Works ! ?? s'ouvre et vous informe que Apache fonctionne correctement .

==Installer MySQL5==

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.5&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
==Php5 et ses extensions==
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~# aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5 :
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de votre base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 512M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 512M 
upload_max_filesize = 512M.&lt;/code&gt;

Ces paramètres devraient convenir à la plupart des bibliothèques. 
Dans le cas de grosses structures possédant des fonds documentaires  importants, les ré-indexations de la base peuvent durer plusieurs heures, le max_execution_time devra donc être porté à 36000. 

Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;code&gt;&lt;?php

phpinfo();

?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :

&lt;code&gt;localhost/phpinfo.php&lt;/code&gt;

Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

==PhpMyAdmin==
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root ''mysql'' défini au chapitre 4) installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : [[http://www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html]]
==Installation de PMB==
===L'archive PMB===
Téléchargez l'archive PMB depuis le site [[http://www.pmbservices.fr]]
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
===Définir les droits d'accès à /var/www/pmb===
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
===Installation de la base Pmb===
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http://localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.</text>
      <sha1>15wbzs7c68ihyfrrs0yauygixkwssvd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5693</id>
      <parentid>5692</parentid>
      <timestamp>2014-07-15T11:17:06Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <text xml:space="preserve" bytes="12330">màj de la doc et test de la procédure courant juillet 2014 pour la distribution ''Debian Wheezy 7 stable'' et la version 4.1.RC1 de l'archive PMB

PMB est un &quot;Système Intégré de Gestion de Bibliothèque&quot; libre. C'est une web-appli qui s'installe donc sur un LAMP.

Ce tutoriel proposé par [https://www.isalo.org/wiki.debian-fr/index.php?title=Utilisateur:LaurentBDP976 LaurentBDP976] décrit pas-à-pas l'installation de ce service sur une distri Linux Debian.

Une version PDF de ce tutoriel est dispo @ http://download.tuxfamily.org/biblinuxiens/doc/

----

==Préambule==
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif. Pour des raisons évidentes de sécurité les comptes ne possédant pas de mot de passe sont automatiquement verrouillés sous Linux.

Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...

==Configurer les ressources Debian==
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apt/sources.list&lt;/code&gt;
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''Php-yaz'' nécessaire pour communiquer avec les serveurs ''Z39.50''.
&lt;code&gt;deb http://ftp.indexdata.dk/debian squeeze main&lt;/code&gt;
profitez-en aussi pour intégrer les ressources debian.fr
&lt;code&gt;deb http://ftp.fr.debian.org/debian/ squeeze main&lt;/code&gt;
et commentez les autres dépots
&lt;code&gt;#deb http://ftp.debian.org/debian/ squeeze main
#deb-src http://ftp.debian.org/debian/ squeeze main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Php-yaz'' : après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'', on peut s'en passer, mais autant faire les choses dans les règles de l'art :
&lt;code&gt;root@ServeurPMB:~# wget http://ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;
Puis mettez à jour votre gestionnaire de packages
&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;
Les ressources officielles pour php-yaz :
[[http://www.indexdata.dk http://www.indexdata.dk]]
[[ftp://ftp.indexdata.dk/pub/debian/dists ftp://ftp.indexdata.dk/pub/debian/dists]]

==Installation du serveur Apache==

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~# aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ?? It Works ! ?? s'ouvre et vous informe que Apache fonctionne correctement .

==Installer MySQL5==

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.5&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
==Php5 et ses extensions==
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~# aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5 :
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de votre base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 512M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 512M 
upload_max_filesize = 512M.&lt;/code&gt;

Ces paramètres devraient convenir à la plupart des bibliothèques. 
Dans le cas de grosses structures possédant des fonds documentaires  importants, les ré-indexations de la base peuvent durer plusieurs heures, le max_execution_time devra donc être porté à 36000. 

Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;code&gt;&lt;?php

phpinfo();

?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :

&lt;code&gt;localhost/phpinfo.php&lt;/code&gt;

Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

==PhpMyAdmin==
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root ''mysql'' défini au chapitre 4) installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : [[http://www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html]]
==Installation de PMB==
===L'archive PMB===
Téléchargez l'archive PMB depuis le site [[http://www.pmbservices.fr]]
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
===Définir les droits d'accès à /var/www/pmb===
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
===Installation de la base Pmb===
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http://localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.</text>
      <sha1>nr3otw140egtuaaojlpcc7a7fvic28c</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5694</id>
      <parentid>5693</parentid>
      <timestamp>2014-07-15T11:19:13Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <minor/>
      <comment>/* Configurer les ressources Debian */</comment>
      <text xml:space="preserve" bytes="12326">màj de la doc et test de la procédure courant juillet 2014 pour la distribution ''Debian Wheezy 7 stable'' et la version 4.1.RC1 de l'archive PMB

PMB est un &quot;Système Intégré de Gestion de Bibliothèque&quot; libre. C'est une web-appli qui s'installe donc sur un LAMP.

Ce tutoriel proposé par [https://www.isalo.org/wiki.debian-fr/index.php?title=Utilisateur:LaurentBDP976 LaurentBDP976] décrit pas-à-pas l'installation de ce service sur une distri Linux Debian.

Une version PDF de ce tutoriel est dispo @ http://download.tuxfamily.org/biblinuxiens/doc/

----

==Préambule==
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif. Pour des raisons évidentes de sécurité les comptes ne possédant pas de mot de passe sont automatiquement verrouillés sous Linux.

Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...

==Configurer les ressources Debian==
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apt/sources.list&lt;/code&gt;
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''Php-yaz'' nécessaire pour communiquer avec les serveurs ''Z39.50''.
&lt;code&gt;deb http://ftp.indexdata.dk/debian wheezy main&lt;/code&gt;
profitez-en aussi pour intégrer les ressources debian.fr
&lt;code&gt;deb http://ftp.fr.debian.org/debian/ wheezy main&lt;/code&gt;
et commentez les autres dépots
&lt;code&gt;#deb http://ftp.debian.org/debian/ wheezy main
#deb-src http://ftp.debian.org/debian/ wheezy main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Php-yaz'' : après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'', on peut s'en passer, mais autant faire les choses dans les règles de l'art :
&lt;code&gt;root@ServeurPMB:~# wget http://ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;
Puis mettez à jour votre gestionnaire de packages
&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;
Les ressources officielles pour php-yaz :
[[http://www.indexdata.dk http://www.indexdata.dk]]
[[ftp://ftp.indexdata.dk/pub/debian/dists ftp://ftp.indexdata.dk/pub/debian/dists]]

==Installation du serveur Apache==

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~# aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ?? It Works ! ?? s'ouvre et vous informe que Apache fonctionne correctement .

==Installer MySQL5==

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.5&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.1&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;
==Php5 et ses extensions==
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~# aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5 :
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de votre base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 512M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 512M 
upload_max_filesize = 512M.&lt;/code&gt;

Ces paramètres devraient convenir à la plupart des bibliothèques. 
Dans le cas de grosses structures possédant des fonds documentaires  importants, les ré-indexations de la base peuvent durer plusieurs heures, le max_execution_time devra donc être porté à 36000. 

Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;code&gt;&lt;?php

phpinfo();

?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :

&lt;code&gt;localhost/phpinfo.php&lt;/code&gt;

Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

==PhpMyAdmin==
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root ''mysql'' défini au chapitre 4) installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : [[http://www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html]]
==Installation de PMB==
===L'archive PMB===
Téléchargez l'archive PMB depuis le site [[http://www.pmbservices.fr]]
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
===Définir les droits d'accès à /var/www/pmb===
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
===Installation de la base Pmb===
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http://localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.</text>
      <sha1>bzikr8gyeflk1pmq7vkaowif8f0tybq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5695</id>
      <parentid>5694</parentid>
      <timestamp>2014-07-15T11:20:06Z</timestamp>
      <contributor>
        <username>LaurentBDP976</username>
        <id>252</id>
      </contributor>
      <minor/>
      <comment>/* Installer MySQL5 */</comment>
      <text xml:space="preserve" bytes="12327">màj de la doc et test de la procédure courant juillet 2014 pour la distribution ''Debian Wheezy 7 stable'' et la version 4.1.RC1 de l'archive PMB

PMB est un &quot;Système Intégré de Gestion de Bibliothèque&quot; libre. C'est une web-appli qui s'installe donc sur un LAMP.

Ce tutoriel proposé par [https://www.isalo.org/wiki.debian-fr/index.php?title=Utilisateur:LaurentBDP976 LaurentBDP976] décrit pas-à-pas l'installation de ce service sur une distri Linux Debian.

Une version PDF de ce tutoriel est dispo @ http://download.tuxfamily.org/biblinuxiens/doc/

----

==Préambule==
Cette documentation considère que votre distribution Debian/Ubuntu est opérationnelle, que le réseau est configuré correctement, ainsi que l'accès à l'internet. Utilisez une distribution Debian ''stable''.

Si vous avez choisi ''Ubuntu'' vous veillerez à activer le compte root sinon vous perdrez beaucoup de temps à ''sudoyer'' le système pour installer votre PMB. Les commandes décrites dans cette doc devant alors être précédées de la commande ''sudo''.
Il me parait donc moins fastidieux de réactiver le compte root. Ouvrez donc un shell et tapez :
&lt;code&gt;biblio@ServeurPMB:~$ sudo passwd root&lt;/code&gt;
Le shell vous demande d'entrer un nouveau mot de passe pour le compte root, vous le lui donnez et hop le compte est actif. Pour des raisons évidentes de sécurité les comptes ne possédant pas de mot de passe sont automatiquement verrouillés sous Linux.

Les utilisateurs peu familiers avec l'éditeur ''vi'' pourront utiliser ''gedit'', s'il n'est pas installé, faites le avec la commande :
&lt;code&gt;root@ServeurPMB:~# aptitude install gedit&lt;/code&gt;
Dans ce cas, les lignes de code décrites dans cette doc sous la forme :
&lt;code&gt;root@ServeurPMB:~# vi /dossier/fichier&lt;/code&gt;
devront être interprétées :
&lt;code&gt;root@ServeurPMB:~# gedit /dossier/fichier&lt;/code&gt;
/!\ attention, ''gedit'' ou tout autre éditeur de texte tributaire d'une interface graphique ne vous permettra pas d'administrer votre serveur à distance avec ''ssh'' par exemple. Je vous recommande donc de vous familiariser avec un éditeur en ligne de commande tel que ''vi'', ''nano'', ''emacs''...

==Configurer les ressources Debian==
Nous devons configurer ''aptitude'', le gestionnaire de packages de la distribution Debian afin qu'il accède aux ressources dont nous avons besoin.
Nous allons donc modifier certaines adresses dans le fichier le fichier ''sources.list''.
Vous trouverez celui-ci dans le répertoire ''/etc/apt/''
Ouvrez un shell , à l'invite de commande et logez vous sur le compte ''root''en tapant :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le prompt du shell vous demande alors le mot de passe du root, entrez le, puis éditez le ''sources.list'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apt/sources.list&lt;/code&gt;
ajoutez ces lignes afin d'accéder plus tard aux ressources du module ''Php-yaz'' nécessaire pour communiquer avec les serveurs ''Z39.50''.
&lt;code&gt;deb http://ftp.indexdata.dk/debian wheezy main&lt;/code&gt;
profitez-en aussi pour intégrer les ressources debian.fr
&lt;code&gt;deb http://ftp.fr.debian.org/debian/ wheezy main&lt;/code&gt;
et commentez les autres dépots
&lt;code&gt;#deb http://ftp.debian.org/debian/ wheezy main
#deb-src http://ftp.debian.org/debian/ wheezy main&lt;/code&gt;
Enregistrer et quitter vi (touche esc puis :wq).

A propose de ''Php-yaz'' : après avoir modifié le ''sources.list'' il faut charger la clé ''indexdata'', on peut s'en passer, mais autant faire les choses dans les règles de l'art :
&lt;code&gt;root@ServeurPMB:~# wget http://ftp.indexdata.dk/debian/indexdata.asc
root@ServeurPMB:~# apt-key add indexdata.asc&lt;/code&gt;
Puis mettez à jour votre gestionnaire de packages
&lt;code&gt;root@ServeurPMB:~# aptitude update&lt;/code&gt;
Les ressources officielles pour php-yaz :
[[http://www.indexdata.dk http://www.indexdata.dk]]
[[ftp://ftp.indexdata.dk/pub/debian/dists ftp://ftp.indexdata.dk/pub/debian/dists]]

==Installation du serveur Apache==

Plusieurs solutions s'offrent à nous, installer ''apache2-mpm-worker'' ou ''apache2-mpm-prefork'' ?
Worker est réputé plus rapide, Prefork est plus stable à vous de voir... Toujours dans votre shell en mode root tapez :
&lt;code&gt;root@ServeurPMB:~# aptitude install apache2-mpm-prefork&lt;/code&gt;
Nous devons éditer le fichier ''apache2.conf'' qui se trouve dans le répertoire ''/etc/apache2'' :
&lt;code&gt;root@ServeurPMB:~# vi /etc/apache2/apache2.conf&lt;/code&gt;
ajoutez la ligne :
&lt;code&gt;ServerName 127.0.0.1&lt;/code&gt;
Enregistrer et quittez ''vi'' puis, lancez votre navigateur www sur ''localhost'' ou sur l'adresse IP de votre serveur :
[[http://localhost/]]
ou
[[http://adresseIPdevotreServeurPMB]]
Une fenêtre ?? It Works ! ?? s'ouvre et vous informe que Apache fonctionne correctement .

==Installer MySQL5==

Téléchargez et installez le serveur mySQL avec la commande :
&lt;code&gt;root@ServeurPMB:~#aptitude install mysql-server-5.5&lt;/code&gt;
Une fois les packages  installés, nous devons configurer un mot de passe pour le ''root mySQL'', il est courant que celui ci vous soit demandé directement lors de l'installation du serveur, si ça n'est pas le cas ou si vous désirez changer ce mot de passe ultérieurement, entrez la commande :
&lt;code&gt;root@ServeurPMB:~# dpkg-reconfigure mysql-server-5.5&lt;/code&gt;
Une interface graphique minimaliste s'offre à vous alors, entrez-y alors le mot de passe que vous avez choisi. Puis validez. 

Petit rappel : la touche TAB [&lt;=&gt;] du clavier permet de naviguer jusqu'au bouton ''ok'' ;-)

/!\ ATTENTION  : lorsque ce mot de passe vous sera demandé par la suite, ne confondez pas le compte root mySQL et le root de votre système Linux ! 
Ici nous avons configuré le mot de passe root du ''service mySQL''.
Une solution de facilité consiste à choisir le même mot de passe pour les deux, bien que ce ne soit pas très recommandable en terme de sécurité.

Editez le fichier ''/etc/mysql/my.cnf'' 
&lt;code&gt;root@ServeurPMB:~# vi /etc/mysql/my.cnf&lt;/code&gt;
et cherchez la ligne  ''max_allowed_packet'' et changez la valeur en 
&lt;code&gt;max_allowed_packet = 250M&lt;/code&gt;
250 Mo devraient convenir à une petite bibliothèque, mais si par la suite votre base grossit, vous devrez modifier une nouvelle fois cette valeurs. 
Redémarrez mySQL afin de prendre en compte ces nouveaux paramètres avec  : 
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/mysql restart&lt;/code&gt;

==Php5 et ses extensions==
Nous devons installer le package php5 ainsi que ses extensions php5-gd, php5-yaz, php5-xsl,  php5-curl.

/!\ Attention, vous devez avoir modifié /etc/apt/sources.list comme indiqué au chapitre
''2) Configurer  les  ressources  Debian'' pour que php5-yaz s'installe correctement.
&lt;code&gt;root@ServeurPMB:~# aptitude install php5&lt;/code&gt;
Installez maintenant les extensions Php5 :
&lt;code&gt;root@ServeurPMB:~# aptitude install php5-gd php5-yaz php5-xsl php5-curl&lt;/code&gt;
Un message d'avertissement peut apparaitre :
&lt;code&gt;ATTENTION : des versions non certifiées des paquets suivants vont
être installées.
Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.
php5-yaz libyaz3
Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer «  Oui  » . Pour interrompre l'installation, entrer «  Non  » : 
&lt;/code&gt;
Pas de panique ! vous pouvez taper Oui.

Nous configurons maintenant Php5, nous avons besoin d'écrire quelques modifications dans le fichier ''php.ini'' situé dans ''/etc/php5/apache2/''. 
La commande pour l'éditer est :
&lt;code&gt;root@ServeurPMB:~# vi /etc/php5/apache2/php.ini&lt;/code&gt;
Rechercher et modifier les paramètres ci dessous en fonction de votre base et augmenter considérablement le ''max_execution_time'' :
&lt;code&gt;max_execution_time = 3600 ; Maximum execution time of each script, in seconds
memory_limit = 512M ; Maximum amount of memory a script may consume (8MB)
post_max_size = 512M 
upload_max_filesize = 512M.&lt;/code&gt;

Ces paramètres devraient convenir à la plupart des bibliothèques. 
Dans le cas de grosses structures possédant des fonds documentaires  importants, les ré-indexations de la base peuvent durer plusieurs heures, le max_execution_time devra donc être porté à 36000. 

Redémarrez le serveur Apache :
&lt;code&gt;root@ServeurPMB:~# /etc/init.d/apache2 restart&lt;/code&gt;
Pour vérifier que votre serveur PHP fonctionne correctement, créez le fichier phpinfo.php dans le dossier /var/www :
&lt;code&gt;root@ServeurPMB:~# vi /var/www/phpinfo.php&lt;/code&gt;
il doit contenir :
&lt;code&gt;&lt;?php

phpinfo();

?&gt;&lt;/code&gt;
Ensuite, lancez votre navigateur sur :

&lt;code&gt;localhost/phpinfo.php&lt;/code&gt;

Vous devriez voir s'afficher quelque chose qui ressemble à : 

[fix me : coller un print screen de phpinfo.php]

==PhpMyAdmin==
PhpMyAdmin n'est pas nécessaire au bon fonctionnement de Pmb mais vous sera utile pour gérer facilement votre base MySql par le biais d'une interface php conviviale que vous lancerez depuis votre navigateur favori, Firefox par exemple (ceux qui ont répondu Internet Explorer sont priés de sortir).
&lt;code&gt;root@ServeurPMB:~#aptitude install phpmyadmin&lt;/code&gt;
Puis tapez dans la barre d'adresse de votre navigateur :
&lt;code&gt;root@ServeurPMB:~#localhost/phpmyadmin&lt;/code&gt;
L'interface web de PhpMyAdmin se lance, entrez votre mot de passe root ''mysql'' défini au chapitre 4) installez MySQL  ».
Pour en savoir plus sur PhpMyAdmin : [[http://www.phpmyadmin.net/pma_localized_docs/fr/Documentation.fr.html]]
==Installation de PMB==
===L'archive PMB===
Téléchargez l'archive PMB depuis le site [[http://www.pmbservices.fr]]
La version courante est PMB 4.0.2.zip.
Une fois le téléchargement terminé, ouvrez un shell et logez vous sur le compte root :
&lt;code&gt;biblio@ServeurPMB:~$ su&lt;/code&gt;
Le shell vous demande d'entrer le mot de passe du root (le root Linux et non pas le root MySQL), faites le puis déplacez vous vers le dossier ou se trouve l'archive :
&lt;code&gt;root@ServeurPMB:~# cd /home/biblio/Bureau&lt;/code&gt;
Enuite décompressez l'archive:
&lt;code&gt;root@ServeurPMB:~# unzip pmb4.0.2 -d /var/www/&lt;/code&gt;
Attention ! si le nom de votre fichier Zip contient un espace, il faut protéger celui ci par un \ sinon le bash n'interprètera pas celui ci comme partie du nom de fichier mais comme un séparateur entre deux arguments et vous renverra un message d'erreur du genre ''filename not matched'') 
De manière générale, évitez d'utiliser des espaces dans les noms de fichier/dossier sous unix/linux.
Par exemple, le fichier ''pmb 4.0.2.zip'' se décompresse avec la commande :
&lt;code&gt;root@ServeurPMB:~# unzip pmb\ 4.0.2.zip -d /var/www&lt;/code&gt;
===Définir les droits d'accès à /var/www/pmb===
 Dans votre shell, toujours en mode root, déplacez vous dans le répertoire /var :
&lt;code&gt;root@ServeurPMB:~# cd /var&lt;/code&gt;
On définit le propriétaire du répertoire /www :
&lt;code&gt;root@ServeurPMB:~# chown -R www-data:www-data www&lt;/code&gt;
Déplacez vous dans le répertoire www :
&lt;code&gt;root@ServeurPMB:~# cd www&lt;/code&gt;
On  définit les droits sur les fichiers :
&lt;code&gt;root@ServeurPMB:~# find -type f -exec chmod 0640 {} \;&lt;/code&gt;
On définit les droits sur les dossiers :
&lt;code&gt;root@ServeurPMB:~# find -type d -exec chmod 0750 {} \;&lt;/code&gt;
===Installation de la base Pmb===
Lancez votre navigateur à l'adresse :
[[http://localhost/pmb/tables/install.php]]
J'ai opté pour le charset iso 8859-1 
La page d'installation comporte plusieurs ensembles de champs à renseigner.

''Paramètres Système.''
&lt;code&gt;Utilisateur MySQL : root
Mot de Passe : Votre mot de passe root MySql tel que vous l'avez défini au chapitre 4 ''installer mysql5''
Serveur : localhost
Base de données : Nom de votre base, si vous n'entrez aucune valeur ici, ce sont les ''Paramètres PMB par défaut'' décrits ci dessous qui s'appliqueront.&lt;/code&gt;
''Paramètres PMB par défaut''
&lt;code&gt;Utilisateur : bibli
Base : bibli
mot de passe : bibli&lt;/code&gt;
''Données PMB''

Faîtes comme vous voulez, mais le &quot;jeu minimum pour démarrer rapidement&quot; est bien pratique ;)

Catégories et index : 
 
Il ne vous reste plus qu'à cliquer sur le bouton ''Créer la base'', un message vous indique que la création des tables a réussi. Dans votre navigateur web tapez :
http://localhost/pmb 
Si La page d'accueil de PMB s'affiche, auto-congratulez vous chaleureusement : vous avez brillamment réussi l'installation de votre serveur PMB/Linux.</text>
      <sha1>miq92i4fd5zxmvrxrxmlzcurae9vjug</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Installation de Gitosis et RedMine sur squeeze - The Debian way!</title>
    <ns>0</ns>
    <id>927</id>
    <revision>
      <id>3857</id>
      <timestamp>2012-02-28T12:16:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « '''Cet article est en cours de rédaction''' Il s'agit de notes d'installation sur une squeeze. L'article est incomplet et sera continué plus tard.  Merci de votre compr... »</comment>
      <text xml:space="preserve" bytes="1148">'''Cet article est en cours de rédaction'''
Il s'agit de notes d'installation sur une squeeze.
L'article est incomplet et sera continué plus tard.

Merci de votre compréhension!

 # apt-get install redmine redmine-mysql librmagick-ruby libopenid-ruby mysql-server libapache2-mod-passenger
 # aptitude install libfcgi libfcgi-dev libfcgi-ruby
 # gem install fcgi

 # ln -s /usr/share/redmine /var/www/host.org/web/redmine

 # nano /etc/apache2/sites-available/host.org.vhost 

 &lt;Directory /var/www/host.org&gt;
     AllowOverride None
     Order Deny,Allow
     Deny from all
 &lt;/Directory&gt;
 &lt;VirtualHost IP:80&gt;
 ...
 
 PassengerAppRoot /var/www/host.org/web/redmine
 RailsBaseURI /redmine
 Alias /redmine /var/www/host.org/web/redmine/public
     &lt;Directory /var/www/host.org/web/redmine&gt;
         AddHandler fastcgi-script .fcgi
         Options Indexes +ExecCGI FollowSymLinks
         AllowOverride All
         Order allow,deny
         Allow from all
     &lt;/Directory&gt;
 
 ...
 &lt;/VirtualHost&gt;

 # nano /usr/share/redmine/.htaccess
 
 RewriteEngine off

 # /etc/init.d/apache2 force-reload

[[Utilisateur:Lol|Lol]] 28 février 2012 à 13:16 (CET)</text>
      <sha1>dyumqq371pb9ju6j5gs4jkg1cqrcctu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3858</id>
      <parentid>3857</parentid>
      <timestamp>2012-02-29T13:09:28Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="1349">'''Cet article est en cours de rédaction'''
Il s'agit de notes d'installation sur une squeeze.
L'article est incomplet et sera continué plus tard.

Merci de votre compréhension!

== Installation ==

 # apt-get install redmine redmine-mysql librmagick-ruby libopenid-ruby mysql-server libapache2-mod-passenger
 # aptitude install libfcgi libfcgi-dev libfcgi-ruby
 # gem install fcgi

== Configuration apache2 ==

 # ln -s /usr/share/redmine /var/www/host.org/web/redmine

 # nano /etc/apache2/sites-available/host.org.vhost 

 &lt;Directory /var/www/host.org&gt;
     AllowOverride None
     Order Deny,Allow
     Deny from all
 &lt;/Directory&gt;
 &lt;VirtualHost IP:80&gt;
 ...
 
 PassengerAppRoot /var/www/host.org/web/redmine
 RailsBaseURI /redmine
 Alias /redmine /var/www/host.org/web/redmine/public
     &lt;Directory /var/www/host.org/web/redmine&gt;
         AddHandler fastcgi-script .fcgi
         Options Indexes +ExecCGI FollowSymLinks
         AllowOverride All
         Order allow,deny
         Allow from all
     &lt;/Directory&gt;
 
 ...
 &lt;/VirtualHost&gt;

 # nano /usr/share/redmine/.htaccess
 
 RewriteEngine off

 # /etc/init.d/apache2 force-reload

== Activer les mails ==

 # cp /usr/share/doc/redmine/examples/email.yml.example /etc/redmine/default/email.yml
 # nano /etc/redmine/default/email.yml

[[Utilisateur:Lol|Lol]] 28 février 2012 à 13:16 (CET)</text>
      <sha1>gtmldlytkvjgv7rdg4lw7vxdw6j5u4c</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3868</id>
      <parentid>3858</parentid>
      <timestamp>2012-03-05T07:45:51Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <minor/>
      <comment>a déplacé [[Installation de Redmine sur squeeze - The Debian way!]] vers [[Installation de Gitosis et RedMine sur squeeze - The Debian way!]] : Ajout de Gitosis</comment>
      <text xml:space="preserve" bytes="1349">'''Cet article est en cours de rédaction'''
Il s'agit de notes d'installation sur une squeeze.
L'article est incomplet et sera continué plus tard.

Merci de votre compréhension!

== Installation ==

 # apt-get install redmine redmine-mysql librmagick-ruby libopenid-ruby mysql-server libapache2-mod-passenger
 # aptitude install libfcgi libfcgi-dev libfcgi-ruby
 # gem install fcgi

== Configuration apache2 ==

 # ln -s /usr/share/redmine /var/www/host.org/web/redmine

 # nano /etc/apache2/sites-available/host.org.vhost 

 &lt;Directory /var/www/host.org&gt;
     AllowOverride None
     Order Deny,Allow
     Deny from all
 &lt;/Directory&gt;
 &lt;VirtualHost IP:80&gt;
 ...
 
 PassengerAppRoot /var/www/host.org/web/redmine
 RailsBaseURI /redmine
 Alias /redmine /var/www/host.org/web/redmine/public
     &lt;Directory /var/www/host.org/web/redmine&gt;
         AddHandler fastcgi-script .fcgi
         Options Indexes +ExecCGI FollowSymLinks
         AllowOverride All
         Order allow,deny
         Allow from all
     &lt;/Directory&gt;
 
 ...
 &lt;/VirtualHost&gt;

 # nano /usr/share/redmine/.htaccess
 
 RewriteEngine off

 # /etc/init.d/apache2 force-reload

== Activer les mails ==

 # cp /usr/share/doc/redmine/examples/email.yml.example /etc/redmine/default/email.yml
 # nano /etc/redmine/default/email.yml

[[Utilisateur:Lol|Lol]] 28 février 2012 à 13:16 (CET)</text>
      <sha1>gtmldlytkvjgv7rdg4lw7vxdw6j5u4c</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3870</id>
      <parentid>3868</parentid>
      <timestamp>2012-03-05T07:50:36Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Ajout Gitosis</comment>
      <text xml:space="preserve" bytes="11957">Nous allons présenter dans ce tuto l'installation d'un dépôt Git et du festionnaire de projet RedMine (optionnel évidemment...).

Debian a mis à notre disposition des paquets dans les dépôts pour ces deux applications; Comme vous êtes un bon administarteur (fainéant comme il se doit, et très attaché à apt) vous allez, tout comme moi faire l'installation avec apt-get ou aptitude.
Les avantages sont nombreux, le plus évident étant les mises à jours simplifiées et la bonne intégration à votre système.

'''Git''' est un logiciel de gestion de versions décentralisé. C'est un logiciel libre créé par Linus Torvalds, le créateur du noyau Linux, et distribué selon les termes de la licence publique générale GNU version 2 ([http://fr.wikipedia.org/wiki/Git Git]).
Nous avons choisis '''Gitolite''' qui est une version plus sécurisée de '''Git'''. '''Gitosis''' permet l'accès au dépôt Git avec un seul utilisateur (utilisateur système) et il permet de filtrer les accès au dépôt par les opérateurs via des clef SSH.

'''RedMine''' RedMmine est une application web Open Source de gestion complète de projet en mode web, développé en Ruby sur la base du framework Ruby on Rails ([http://fr.wikipedia.org/wiki/RedMine Redmine]).

= Gitosis=

== Installation de Gitosis ==

Comme toujours ches Debian, l'installation est très simple:

 '''apt-get install gitosis'''
 ...
 Les paquets supplémentaires suivants seront installés : 
   python-pkg-resources python-setuptools
 Paquets suggérés :
   git-daemon-run gitweb python-distribute python-distribute-doc
 Les NOUVEAUX paquets suivants seront installés :
   gitosis python-pkg-resources python-setuptools
 ...

== Configuration ==

Nous créons l'utilisateur &quot;git&quot;, le seul à avoir l'accès au dépôt et à la configuration:

 '''adduser --system --shell /bin/bash --gecos 'git version control' --group --disabled-password --home /var/git git'''
 Ajout de l'utilisateur système « git » (UID 113) ...
 Ajout du nouveau groupe « git » (GID 117) ...
 Ajout du nouvel utilisateur « git » (UID 113) avec pour groupe d'appartenance « git » ...
 Création du répertoire personnel « /var/git »...

=== Configuration Client/Admin ===

Pour avoir accès à la configuration des dépôts et des accès utilisateurs à distance, nous créons sur une machine cliente une clef SSH:

Création de la clef:

 '''ssh-keygen -t dsa'''
 Generating public/private dsa key pair.
 Enter file in which to save the key (/home/laurent/.ssh/id_dsa): /home/laurent/.ssh/gitosis-admin-web
 Enter passphrase (empty for no passphrase): 
 Enter same passphrase again: 
 Your identification has been saved in /home/laurent/.ssh/gitosis-admin-web.
 Your public key has been saved in /home/laurent/.ssh/gitosis-admin-web.pub.
 The key fingerprint is:
 99:xx:24:xx:ef:xx:d2:xx:87:xx:32:xx:1a:xx:b7:xx laurent@sidlol
 The key's randomart image is:
 +--[ DSA 1024]----+
 |                 |
 |                 |
 |                 |
 |    . .. o       |
 |  ..xx..S        |
 |   xx.+          |
 |  ..xx o         |
 |  .oE x x        |
 |  .+xx o         |
 +-----------------+

Il faut ensuite envoyer le clef générée sur le serveur:

 '''scp /home/laurent/.ssh/gitosis-admin-web.pub web-git:/tmp/gitosis-admin-web.pub'''
 gitosis-admin-web.pub                                                                            100%  604     0.6KB/s   00:00

'''web-git''' (ci-dessus) est le nom configuré dans ssh pour l'accès au serveur:

 '''cat ~/.ssh/config'''
 Host web-git
 HostName IP_du_serveur
 Port port_ssh
 User git
 PasswordAuthentication no
 IdentityFile ~/.ssh/gitosis-admin-web.pub

Sur le serveur:
Nous intégrons la clef SSH du &quot;client&quot; et initialisons le dépôt gitosis-admin.git.

 '''su - git'''
 git@web:~$ '''gitosis-init &lt; /tmp/gitosis-admin-web.pub'''
 Initialized empty Git repository in /var/git/repositories/gitosis-admin.git/
 Reinitialized existing Git repository in /var/git/repositories/gitosis-admin.git/

Sur le client:
Nous clonons le dépôt gitosis-admin.git localement

 '''git clone git@web-git:gitosis-admin.git'''
 Cloning into 'gitosis-admin'...
 remote: Counting objects: 5, done.
 remote: Compressing objects: 100% (4/4), done.
 remote: Total 5 (delta 0), reused 5 (delta 0)
 Receiving objects: 100% (5/5), done.

Vérification:

 '''cd gitosis-admin/'''
 '''vdir'''
 total 8
 -rw-r--r-- 1 laurent laurent   84 mars   4 11:25 gitosis.conf
 drwxr-xr-x 2 laurent laurent 4096 mars   4 11:25 keydir

=== Modification de la configuration de gitosis ===

==== Ajout d'un dépôt ====

Ajoutons maintenant un dépôt à partir du &quot;client&quot;
Nous ajoutons le dépôt &quot;portailmadagascar&quot;

 '''nano gitosis.conf'''

 [gitosis]
 
 [group gitosis-admin]
 writable = gitosis-admin
 members = laurent@sidlol
 
 [group portailmadagascar]
 writable = portailmadagascar
 members = laurent@sidlol

Activons le dépôt:

 '''git add gitosis.conf'''
 '''git commit -m 'Ajout du dépôt portailmadagascar''''
 [master b0192ad] Ajout du dépôt portailmadagascar
  Committer: Laurent L &lt;laurent@sidlol.zehome.org&gt;
 Your name and email address were configured automatically based
 on your username and hostname. Please check that they are accurate.
 You can suppress this message by setting them explicitly:
 
     git config --global user.name &quot;Your Name&quot;
     git config --global user.email you@example.com
 
 After doing this, you may fix the identity used for this commit with:
 
     git commit --amend --reset-author
 
  1 files changed, 3 insertions(+), 0 deletions(-)

Envoyons la modification sur le serveur:

 '''git push origin master'''
 Counting objects: 5, done.
 Delta compression using up to 4 threads.
 Compressing objects: 100% (3/3), done.
 Writing objects: 100% (3/3), 389 bytes, done.
 Total 3 (delta 0), reused 0 (delta 0)
 To git@web-git:gitosis-admin.git
    e9439fc..b0192ad  master -&gt; master

Localement, sur le client, le dépôt n'a pas encore été initialisé; Il suffit maintenant de le &quot;récupérérer&quot; (pull) depuis le serveur:
Initialisation locale du dépôt:

 '''cd ~/git'''
 '''git clone web-git:portailmadagascar.git'''
 Cloning into 'portailmadagascar'...
 Initialized empty Git repository in /var/git/repositories/portailmadagascar.git/
 warning: You appear to have cloned an empty repository.

==== &quot;Peuplement&quot; de notre dépôt ====

Nous allons maintenant &quot;peupler&quot; notre dépôt (lui ajouter des fichiers):

Il suffit de copier vos fichiers dans le dossier ~/git/portailmadagascar, des les ajouter au dépôt, puis de les envoyer au serveur:

 '''git push origin master'''
 Counting objects: 6663, done.
 Delta compression using up to 4 threads.
 Compressing objects: 100% (6290/6290), done.
 Writing objects: 100% (6663/6663), 57.53 MiB | 55 KiB/s, done.
 Total 6663 (delta 747), reused 0 (delta 0)
 To web-git:portailmadagascar.git
  * [new branch]      master -&gt; master

 '''git clone web-git:portailmadagascar.git'''
 '''cd portailmadagascar'''
 '''git add .'''
 '''git commit -m &quot;Initial commit&quot;'''

&lt;code&gt;
Initial commit

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use &quot;git rm --cached &lt;file&gt;...&quot; to unstage)
#
#       new file:   .htaccess
#       new file:   WP PROJET ubermenu-wordpress-mega-menu-plugin.zip
#       new file:   article.zip
#       new file:   article/admin.js
...
&lt;/code&gt;

Avant d'envoyer au serveur, configurons nos identifiants:

 '''git config --global user.name &quot;lol&quot;'''
 '''git config --global user.email lol@serveur.tld'''
 '''git commit --amend --reset-author'''
 '''git push origin master'''

= Redmine =

== Installation ==

Nous commençons par préparer la base sql. (Cette option est facultative, vous avez l'option de configurer et peupler la base automatiquement avec dpkg). Nous avons choisis ici de garder la contrôle du nom de la base et de l'utilisateur mysql)?

&lt;code&gt;
mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7327
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database baseredmine character set utf8;
Query OK, 1 row affected (0.00 sec)

mysql&gt; create user 'mysqlredmine'@'localhost' identified by 'votre_mot-de-passe-pour-redmine';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; grant all privileges on baseredmine.* to 'mysqlredmine'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

== Installation redmine-mysql ==

 '''apt-get install redmine redmine-mysql libapache2-mod-passenger'''

Configurer la base: NON (Sauf si vous avez décidé de laisser dpkg s'occuper de ça)

 '''nano /etc/redmine/default/database.yml'''

 production:
   adapter: mysql
   database: baseredmine
   host: localhost
   port:
   username: mysqlredmine
   password: votre_mot-de-passe-pour-redmine
   encoding: utf8

Nous créons maintenant la structure de la base de donnée:

 '''cd /usr/share/redmine/'''
 '''RAILS_ENV=production rake db:migrate'''
 (in /usr/share/redmine)
 ==  Setup: migrating ==========================================================
 -- create_table(&quot;attachments&quot;, {:force=&gt;true})
    -&gt; 0.0993s
 -- create_table(&quot;auth_sources&quot;, {:force=&gt;true})
    -&gt; 0.0796s
 ...

Et nous y intégrons les données par défaut (Optionnel, mais fortement conseillé par RedMine)

 '''RAILS_ENV=production rake redmine:load_default_data'''
 (in /usr/share/redmine)
 
 Select language: bg, bs, ca, cs, da, de, el, en, en-GB, es, eu, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en] fr
 ====================================
 Default configuration data loaded.

=== Configuration de apache2 ===

Nous allons maintenant configurer apache2 pour l'intégration de RedMine. Les choix sont multiples quant à cette installation; Nous avons choisis un sous répertoire de /var/www et la création d'un sous-domaine dans notre DNS.

 '''ln -s /usr/share/redmine /var/www/redmine'''
 '''chown www-data:www-data /var/www/redmine/'''

 '''nano /etc/apache2/sites-available/redmine'''

&lt;code&gt;
&lt;VirtualHost ip_du_serveur:80&gt;
        ServerName redmine.serveur.tld
        Alias /redmine /var/www/redmine/public
        DocumentRoot /var/www/redmine/public
    &lt;Directory /var/www/redmine/public/&gt;
        PassengerAppRoot /var/www/redmine
        RailsBaseURI /
        AddHandler fastcgi-script .fcgi
        Options Indexes +ExecCGI FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    &lt;/Directory&gt;
&lt;/VirtualHost&gt;
&lt;/code&gt;

 '''/etc/apache2/sites-enabled/redmine'''
 '''service apache2 force-reload'''

Vous devriez maintenant être capable d'accéder à RedMine par votre navigateur (http://redmine.serveur.tld)

Login: admin
Mot de passe: admin

Il est fortement recommandé de changer le mot de passe...

=== Configuration des mails ===

Vous devrez maintenant configurer l'envoie des mails par Redmine (Il suffit de modifier les données à la fin du fichier pour qu'elles &quot;collent&quot; à votre configuration.

 '''cp /usr/share/doc/redmine/examples/email.yml.example /etc/redmine/default/email.yml'''
 '''nano /etc/redmine/default/email.yml'''

=== Intégrer le dépôt Gitosis ===

Il faut maintenant intégrer notre dépôt Git à Redmine:

Créez un nouveau projet:
[[Fichier:Redmine1.png|240px]]

Configurez le chemin du dépôt:
[[Fichier:Redmine3.png|240px]]

Accédez au dépôt:
[[Fichier:Redmine4.png|240px]]</text>
      <sha1>7upmrmw3ydvuoszivvtr2uhc7hkxygu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3877</id>
      <parentid>3870</parentid>
      <timestamp>2012-03-05T11:39:34Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="11957">Nous allons présenter dans ce tuto l'installation d'un dépôt Git et du gestionnaire de projet RedMine (optionnel évidemment...).

Debian a mis à notre disposition des paquets dans les dépôts pour ces deux applications; Comme vous êtes un bon administarteur (fainéant comme il se doit, et très attaché à apt) vous allez, tout comme moi faire l'installation avec apt-get ou aptitude.
Les avantages sont nombreux, le plus évident étant les mises à jours simplifiées et la bonne intégration à votre système.

'''Git''' est un logiciel de gestion de versions décentralisé. C'est un logiciel libre créé par Linus Torvalds, le créateur du noyau Linux, et distribué selon les termes de la licence publique générale GNU version 2 ([http://fr.wikipedia.org/wiki/Git Git]).
Nous avons choisis '''Gitolite''' qui est une version plus sécurisée de '''Git'''. '''Gitosis''' permet l'accès au dépôt Git avec un seul utilisateur (utilisateur système) et il permet de filtrer les accès au dépôt par les opérateurs via des clef SSH.

'''RedMine''' RedMmine est une application web Open Source de gestion complète de projet en mode web, développé en Ruby sur la base du framework Ruby on Rails ([http://fr.wikipedia.org/wiki/RedMine Redmine]).

= Gitosis=

== Installation de Gitosis ==

Comme toujours ches Debian, l'installation est très simple:

 '''apt-get install gitosis'''
 ...
 Les paquets supplémentaires suivants seront installés : 
   python-pkg-resources python-setuptools
 Paquets suggérés :
   git-daemon-run gitweb python-distribute python-distribute-doc
 Les NOUVEAUX paquets suivants seront installés :
   gitosis python-pkg-resources python-setuptools
 ...

== Configuration ==

Nous créons l'utilisateur &quot;git&quot;, le seul à avoir l'accès au dépôt et à la configuration:

 '''adduser --system --shell /bin/bash --gecos 'git version control' --group --disabled-password --home /var/git git'''
 Ajout de l'utilisateur système « git » (UID 113) ...
 Ajout du nouveau groupe « git » (GID 117) ...
 Ajout du nouvel utilisateur « git » (UID 113) avec pour groupe d'appartenance « git » ...
 Création du répertoire personnel « /var/git »...

=== Configuration Client/Admin ===

Pour avoir accès à la configuration des dépôts et des accès utilisateurs à distance, nous créons sur une machine cliente une clef SSH:

Création de la clef:

 '''ssh-keygen -t dsa'''
 Generating public/private dsa key pair.
 Enter file in which to save the key (/home/laurent/.ssh/id_dsa): /home/laurent/.ssh/gitosis-admin-web
 Enter passphrase (empty for no passphrase): 
 Enter same passphrase again: 
 Your identification has been saved in /home/laurent/.ssh/gitosis-admin-web.
 Your public key has been saved in /home/laurent/.ssh/gitosis-admin-web.pub.
 The key fingerprint is:
 99:xx:24:xx:ef:xx:d2:xx:87:xx:32:xx:1a:xx:b7:xx laurent@sidlol
 The key's randomart image is:
 +--[ DSA 1024]----+
 |                 |
 |                 |
 |                 |
 |    . .. o       |
 |  ..xx..S        |
 |   xx.+          |
 |  ..xx o         |
 |  .oE x x        |
 |  .+xx o         |
 +-----------------+

Il faut ensuite envoyer le clef générée sur le serveur:

 '''scp /home/laurent/.ssh/gitosis-admin-web.pub web-git:/tmp/gitosis-admin-web.pub'''
 gitosis-admin-web.pub                                                                            100%  604     0.6KB/s   00:00

'''web-git''' (ci-dessus) est le nom configuré dans ssh pour l'accès au serveur:

 '''cat ~/.ssh/config'''
 Host web-git
 HostName IP_du_serveur
 Port port_ssh
 User git
 PasswordAuthentication no
 IdentityFile ~/.ssh/gitosis-admin-web.pub

Sur le serveur:
Nous intégrons la clef SSH du &quot;client&quot; et initialisons le dépôt gitosis-admin.git.

 '''su - git'''
 git@web:~$ '''gitosis-init &lt; /tmp/gitosis-admin-web.pub'''
 Initialized empty Git repository in /var/git/repositories/gitosis-admin.git/
 Reinitialized existing Git repository in /var/git/repositories/gitosis-admin.git/

Sur le client:
Nous clonons le dépôt gitosis-admin.git localement

 '''git clone git@web-git:gitosis-admin.git'''
 Cloning into 'gitosis-admin'...
 remote: Counting objects: 5, done.
 remote: Compressing objects: 100% (4/4), done.
 remote: Total 5 (delta 0), reused 5 (delta 0)
 Receiving objects: 100% (5/5), done.

Vérification:

 '''cd gitosis-admin/'''
 '''vdir'''
 total 8
 -rw-r--r-- 1 laurent laurent   84 mars   4 11:25 gitosis.conf
 drwxr-xr-x 2 laurent laurent 4096 mars   4 11:25 keydir

=== Modification de la configuration de gitosis ===

==== Ajout d'un dépôt ====

Ajoutons maintenant un dépôt à partir du &quot;client&quot;
Nous ajoutons le dépôt &quot;portailmadagascar&quot;

 '''nano gitosis.conf'''

 [gitosis]
 
 [group gitosis-admin]
 writable = gitosis-admin
 members = laurent@sidlol
 
 [group portailmadagascar]
 writable = portailmadagascar
 members = laurent@sidlol

Activons le dépôt:

 '''git add gitosis.conf'''
 '''git commit -m 'Ajout du dépôt portailmadagascar''''
 [master b0192ad] Ajout du dépôt portailmadagascar
  Committer: Laurent L &lt;laurent@sidlol.zehome.org&gt;
 Your name and email address were configured automatically based
 on your username and hostname. Please check that they are accurate.
 You can suppress this message by setting them explicitly:
 
     git config --global user.name &quot;Your Name&quot;
     git config --global user.email you@example.com
 
 After doing this, you may fix the identity used for this commit with:
 
     git commit --amend --reset-author
 
  1 files changed, 3 insertions(+), 0 deletions(-)

Envoyons la modification sur le serveur:

 '''git push origin master'''
 Counting objects: 5, done.
 Delta compression using up to 4 threads.
 Compressing objects: 100% (3/3), done.
 Writing objects: 100% (3/3), 389 bytes, done.
 Total 3 (delta 0), reused 0 (delta 0)
 To git@web-git:gitosis-admin.git
    e9439fc..b0192ad  master -&gt; master

Localement, sur le client, le dépôt n'a pas encore été initialisé; Il suffit maintenant de le &quot;récupérérer&quot; (pull) depuis le serveur:
Initialisation locale du dépôt:

 '''cd ~/git'''
 '''git clone web-git:portailmadagascar.git'''
 Cloning into 'portailmadagascar'...
 Initialized empty Git repository in /var/git/repositories/portailmadagascar.git/
 warning: You appear to have cloned an empty repository.

==== &quot;Peuplement&quot; de notre dépôt ====

Nous allons maintenant &quot;peupler&quot; notre dépôt (lui ajouter des fichiers):

Il suffit de copier vos fichiers dans le dossier ~/git/portailmadagascar, des les ajouter au dépôt, puis de les envoyer au serveur:

 '''git push origin master'''
 Counting objects: 6663, done.
 Delta compression using up to 4 threads.
 Compressing objects: 100% (6290/6290), done.
 Writing objects: 100% (6663/6663), 57.53 MiB | 55 KiB/s, done.
 Total 6663 (delta 747), reused 0 (delta 0)
 To web-git:portailmadagascar.git
  * [new branch]      master -&gt; master

 '''git clone web-git:portailmadagascar.git'''
 '''cd portailmadagascar'''
 '''git add .'''
 '''git commit -m &quot;Initial commit&quot;'''

&lt;code&gt;
Initial commit

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use &quot;git rm --cached &lt;file&gt;...&quot; to unstage)
#
#       new file:   .htaccess
#       new file:   WP PROJET ubermenu-wordpress-mega-menu-plugin.zip
#       new file:   article.zip
#       new file:   article/admin.js
...
&lt;/code&gt;

Avant d'envoyer au serveur, configurons nos identifiants:

 '''git config --global user.name &quot;lol&quot;'''
 '''git config --global user.email lol@serveur.tld'''
 '''git commit --amend --reset-author'''
 '''git push origin master'''

= Redmine =

== Installation ==

Nous commençons par préparer la base sql. (Cette option est facultative, vous avez l'option de configurer et peupler la base automatiquement avec dpkg). Nous avons choisis ici de garder la contrôle du nom de la base et de l'utilisateur mysql)?

&lt;code&gt;
mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7327
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database baseredmine character set utf8;
Query OK, 1 row affected (0.00 sec)

mysql&gt; create user 'mysqlredmine'@'localhost' identified by 'votre_mot-de-passe-pour-redmine';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; grant all privileges on baseredmine.* to 'mysqlredmine'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

== Installation redmine-mysql ==

 '''apt-get install redmine redmine-mysql libapache2-mod-passenger'''

Configurer la base: NON (Sauf si vous avez décidé de laisser dpkg s'occuper de ça)

 '''nano /etc/redmine/default/database.yml'''

 production:
   adapter: mysql
   database: baseredmine
   host: localhost
   port:
   username: mysqlredmine
   password: votre_mot-de-passe-pour-redmine
   encoding: utf8

Nous créons maintenant la structure de la base de donnée:

 '''cd /usr/share/redmine/'''
 '''RAILS_ENV=production rake db:migrate'''
 (in /usr/share/redmine)
 ==  Setup: migrating ==========================================================
 -- create_table(&quot;attachments&quot;, {:force=&gt;true})
    -&gt; 0.0993s
 -- create_table(&quot;auth_sources&quot;, {:force=&gt;true})
    -&gt; 0.0796s
 ...

Et nous y intégrons les données par défaut (Optionnel, mais fortement conseillé par RedMine)

 '''RAILS_ENV=production rake redmine:load_default_data'''
 (in /usr/share/redmine)
 
 Select language: bg, bs, ca, cs, da, de, el, en, en-GB, es, eu, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en] fr
 ====================================
 Default configuration data loaded.

=== Configuration de apache2 ===

Nous allons maintenant configurer apache2 pour l'intégration de RedMine. Les choix sont multiples quant à cette installation; Nous avons choisis un sous répertoire de /var/www et la création d'un sous-domaine dans notre DNS.

 '''ln -s /usr/share/redmine /var/www/redmine'''
 '''chown www-data:www-data /var/www/redmine/'''

 '''nano /etc/apache2/sites-available/redmine'''

&lt;code&gt;
&lt;VirtualHost ip_du_serveur:80&gt;
        ServerName redmine.serveur.tld
        Alias /redmine /var/www/redmine/public
        DocumentRoot /var/www/redmine/public
    &lt;Directory /var/www/redmine/public/&gt;
        PassengerAppRoot /var/www/redmine
        RailsBaseURI /
        AddHandler fastcgi-script .fcgi
        Options Indexes +ExecCGI FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    &lt;/Directory&gt;
&lt;/VirtualHost&gt;
&lt;/code&gt;

 '''/etc/apache2/sites-enabled/redmine'''
 '''service apache2 force-reload'''

Vous devriez maintenant être capable d'accéder à RedMine par votre navigateur (http://redmine.serveur.tld)

Login: admin
Mot de passe: admin

Il est fortement recommandé de changer le mot de passe...

=== Configuration des mails ===

Vous devrez maintenant configurer l'envoie des mails par Redmine (Il suffit de modifier les données à la fin du fichier pour qu'elles &quot;collent&quot; à votre configuration.

 '''cp /usr/share/doc/redmine/examples/email.yml.example /etc/redmine/default/email.yml'''
 '''nano /etc/redmine/default/email.yml'''

=== Intégrer le dépôt Gitosis ===

Il faut maintenant intégrer notre dépôt Git à Redmine:

Créez un nouveau projet:
[[Fichier:Redmine1.png|240px]]

Configurez le chemin du dépôt:
[[Fichier:Redmine3.png|240px]]

Accédez au dépôt:
[[Fichier:Redmine4.png|240px]]</text>
      <sha1>7lsde17arsn6hm9hllnatat5xojuw8k</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3878</id>
      <parentid>3877</parentid>
      <timestamp>2012-03-05T11:57:48Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Ajout d'un dépôt */</comment>
      <text xml:space="preserve" bytes="11954">Nous allons présenter dans ce tuto l'installation d'un dépôt Git et du gestionnaire de projet RedMine (optionnel évidemment...).

Debian a mis à notre disposition des paquets dans les dépôts pour ces deux applications; Comme vous êtes un bon administarteur (fainéant comme il se doit, et très attaché à apt) vous allez, tout comme moi faire l'installation avec apt-get ou aptitude.
Les avantages sont nombreux, le plus évident étant les mises à jours simplifiées et la bonne intégration à votre système.

'''Git''' est un logiciel de gestion de versions décentralisé. C'est un logiciel libre créé par Linus Torvalds, le créateur du noyau Linux, et distribué selon les termes de la licence publique générale GNU version 2 ([http://fr.wikipedia.org/wiki/Git Git]).
Nous avons choisis '''Gitolite''' qui est une version plus sécurisée de '''Git'''. '''Gitosis''' permet l'accès au dépôt Git avec un seul utilisateur (utilisateur système) et il permet de filtrer les accès au dépôt par les opérateurs via des clef SSH.

'''RedMine''' RedMmine est une application web Open Source de gestion complète de projet en mode web, développé en Ruby sur la base du framework Ruby on Rails ([http://fr.wikipedia.org/wiki/RedMine Redmine]).

= Gitosis=

== Installation de Gitosis ==

Comme toujours ches Debian, l'installation est très simple:

 '''apt-get install gitosis'''
 ...
 Les paquets supplémentaires suivants seront installés : 
   python-pkg-resources python-setuptools
 Paquets suggérés :
   git-daemon-run gitweb python-distribute python-distribute-doc
 Les NOUVEAUX paquets suivants seront installés :
   gitosis python-pkg-resources python-setuptools
 ...

== Configuration ==

Nous créons l'utilisateur &quot;git&quot;, le seul à avoir l'accès au dépôt et à la configuration:

 '''adduser --system --shell /bin/bash --gecos 'git version control' --group --disabled-password --home /var/git git'''
 Ajout de l'utilisateur système « git » (UID 113) ...
 Ajout du nouveau groupe « git » (GID 117) ...
 Ajout du nouvel utilisateur « git » (UID 113) avec pour groupe d'appartenance « git » ...
 Création du répertoire personnel « /var/git »...

=== Configuration Client/Admin ===

Pour avoir accès à la configuration des dépôts et des accès utilisateurs à distance, nous créons sur une machine cliente une clef SSH:

Création de la clef:

 '''ssh-keygen -t dsa'''
 Generating public/private dsa key pair.
 Enter file in which to save the key (/home/laurent/.ssh/id_dsa): /home/laurent/.ssh/gitosis-admin-web
 Enter passphrase (empty for no passphrase): 
 Enter same passphrase again: 
 Your identification has been saved in /home/laurent/.ssh/gitosis-admin-web.
 Your public key has been saved in /home/laurent/.ssh/gitosis-admin-web.pub.
 The key fingerprint is:
 99:xx:24:xx:ef:xx:d2:xx:87:xx:32:xx:1a:xx:b7:xx laurent@sidlol
 The key's randomart image is:
 +--[ DSA 1024]----+
 |                 |
 |                 |
 |                 |
 |    . .. o       |
 |  ..xx..S        |
 |   xx.+          |
 |  ..xx o         |
 |  .oE x x        |
 |  .+xx o         |
 +-----------------+

Il faut ensuite envoyer le clef générée sur le serveur:

 '''scp /home/laurent/.ssh/gitosis-admin-web.pub web-git:/tmp/gitosis-admin-web.pub'''
 gitosis-admin-web.pub                                                                            100%  604     0.6KB/s   00:00

'''web-git''' (ci-dessus) est le nom configuré dans ssh pour l'accès au serveur:

 '''cat ~/.ssh/config'''
 Host web-git
 HostName IP_du_serveur
 Port port_ssh
 User git
 PasswordAuthentication no
 IdentityFile ~/.ssh/gitosis-admin-web.pub

Sur le serveur:
Nous intégrons la clef SSH du &quot;client&quot; et initialisons le dépôt gitosis-admin.git.

 '''su - git'''
 git@web:~$ '''gitosis-init &lt; /tmp/gitosis-admin-web.pub'''
 Initialized empty Git repository in /var/git/repositories/gitosis-admin.git/
 Reinitialized existing Git repository in /var/git/repositories/gitosis-admin.git/

Sur le client:
Nous clonons le dépôt gitosis-admin.git localement

 '''git clone git@web-git:gitosis-admin.git'''
 Cloning into 'gitosis-admin'...
 remote: Counting objects: 5, done.
 remote: Compressing objects: 100% (4/4), done.
 remote: Total 5 (delta 0), reused 5 (delta 0)
 Receiving objects: 100% (5/5), done.

Vérification:

 '''cd gitosis-admin/'''
 '''vdir'''
 total 8
 -rw-r--r-- 1 laurent laurent   84 mars   4 11:25 gitosis.conf
 drwxr-xr-x 2 laurent laurent 4096 mars   4 11:25 keydir

=== Modification de la configuration de gitosis ===

==== Ajout d'un dépôt ====

Ajoutons maintenant un dépôt à partir du &quot;client&quot;
Nous ajoutons le dépôt &quot;portailmadagascar&quot;

 '''nano gitosis.conf'''

 [gitosis]
 
 [group gitosis-admin]
 writable = gitosis-admin
 members = laurent@sidlol
 
 [group portailmadagascar]
 writable = portailmadagascar
 members = laurent@sidlol

Activons le dépôt:

 '''git add gitosis.conf'''
 '''git commit -m 'Ajout du dépôt portailmadagascar''''
 [master b0192ad] Ajout du dépôt portailmadagascar
  Committer: Laurent L &lt;laurent@sidlol.zehome.org&gt;
 Your name and email address were configured automatically based
 on your username and hostname. Please check that they are accurate.
 You can suppress this message by setting them explicitly:
 
     git config --global user.name &quot;Your Name&quot;
     git config --global user.email you@example.com
 
 After doing this, you may fix the identity used for this commit with:
 
     git commit --amend --reset-author
 
  1 files changed, 3 insertions(+), 0 deletions(-)

Envoyons la modification sur le serveur:

 '''git push origin master'''
 Counting objects: 5, done.
 Delta compression using up to 4 threads.
 Compressing objects: 100% (3/3), done.
 Writing objects: 100% (3/3), 389 bytes, done.
 Total 3 (delta 0), reused 0 (delta 0)
 To git@web-git:gitosis-admin.git
    e9439fc..b0192ad  master -&gt; master

Localement, sur le client, le dépôt n'a pas encore été initialisé; Il suffit maintenant de le &quot;récupérer&quot; (pull) depuis le serveur:
Initialisation locale du dépôt:

 '''cd ~/git'''
 '''git clone web-git:portailmadagascar.git'''
 Cloning into 'portailmadagascar'...
 Initialized empty Git repository in /var/git/repositories/portailmadagascar.git/
 warning: You appear to have cloned an empty repository.

==== &quot;Peuplement&quot; de notre dépôt ====

Nous allons maintenant &quot;peupler&quot; notre dépôt (lui ajouter des fichiers):

Il suffit de copier vos fichiers dans le dossier ~/git/portailmadagascar, des les ajouter au dépôt, puis de les envoyer au serveur:

 '''git push origin master'''
 Counting objects: 6663, done.
 Delta compression using up to 4 threads.
 Compressing objects: 100% (6290/6290), done.
 Writing objects: 100% (6663/6663), 57.53 MiB | 55 KiB/s, done.
 Total 6663 (delta 747), reused 0 (delta 0)
 To web-git:portailmadagascar.git
  * [new branch]      master -&gt; master

 '''git clone web-git:portailmadagascar.git'''
 '''cd portailmadagascar'''
 '''git add .'''
 '''git commit -m &quot;Initial commit&quot;'''

&lt;code&gt;
Initial commit

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use &quot;git rm --cached &lt;file&gt;...&quot; to unstage)
#
#       new file:   .htaccess
#       new file:   WP PROJET ubermenu-wordpress-mega-menu-plugin.zip
#       new file:   article.zip
#       new file:   article/admin.js
...
&lt;/code&gt;

Avant d'envoyer au serveur, configurons nos identifiants:

 '''git config --global user.name &quot;lol&quot;'''
 '''git config --global user.email lol@serveur.tld'''
 '''git commit --amend --reset-author'''
 '''git push origin master'''

= Redmine =

== Installation ==

Nous commençons par préparer la base sql. (Cette option est facultative, vous avez l'option de configurer et peupler la base automatiquement avec dpkg). Nous avons choisis ici de garder la contrôle du nom de la base et de l'utilisateur mysql)?

&lt;code&gt;
mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7327
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database baseredmine character set utf8;
Query OK, 1 row affected (0.00 sec)

mysql&gt; create user 'mysqlredmine'@'localhost' identified by 'votre_mot-de-passe-pour-redmine';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; grant all privileges on baseredmine.* to 'mysqlredmine'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

== Installation redmine-mysql ==

 '''apt-get install redmine redmine-mysql libapache2-mod-passenger'''

Configurer la base: NON (Sauf si vous avez décidé de laisser dpkg s'occuper de ça)

 '''nano /etc/redmine/default/database.yml'''

 production:
   adapter: mysql
   database: baseredmine
   host: localhost
   port:
   username: mysqlredmine
   password: votre_mot-de-passe-pour-redmine
   encoding: utf8

Nous créons maintenant la structure de la base de donnée:

 '''cd /usr/share/redmine/'''
 '''RAILS_ENV=production rake db:migrate'''
 (in /usr/share/redmine)
 ==  Setup: migrating ==========================================================
 -- create_table(&quot;attachments&quot;, {:force=&gt;true})
    -&gt; 0.0993s
 -- create_table(&quot;auth_sources&quot;, {:force=&gt;true})
    -&gt; 0.0796s
 ...

Et nous y intégrons les données par défaut (Optionnel, mais fortement conseillé par RedMine)

 '''RAILS_ENV=production rake redmine:load_default_data'''
 (in /usr/share/redmine)
 
 Select language: bg, bs, ca, cs, da, de, el, en, en-GB, es, eu, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en] fr
 ====================================
 Default configuration data loaded.

=== Configuration de apache2 ===

Nous allons maintenant configurer apache2 pour l'intégration de RedMine. Les choix sont multiples quant à cette installation; Nous avons choisis un sous répertoire de /var/www et la création d'un sous-domaine dans notre DNS.

 '''ln -s /usr/share/redmine /var/www/redmine'''
 '''chown www-data:www-data /var/www/redmine/'''

 '''nano /etc/apache2/sites-available/redmine'''

&lt;code&gt;
&lt;VirtualHost ip_du_serveur:80&gt;
        ServerName redmine.serveur.tld
        Alias /redmine /var/www/redmine/public
        DocumentRoot /var/www/redmine/public
    &lt;Directory /var/www/redmine/public/&gt;
        PassengerAppRoot /var/www/redmine
        RailsBaseURI /
        AddHandler fastcgi-script .fcgi
        Options Indexes +ExecCGI FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    &lt;/Directory&gt;
&lt;/VirtualHost&gt;
&lt;/code&gt;

 '''/etc/apache2/sites-enabled/redmine'''
 '''service apache2 force-reload'''

Vous devriez maintenant être capable d'accéder à RedMine par votre navigateur (http://redmine.serveur.tld)

Login: admin
Mot de passe: admin

Il est fortement recommandé de changer le mot de passe...

=== Configuration des mails ===

Vous devrez maintenant configurer l'envoie des mails par Redmine (Il suffit de modifier les données à la fin du fichier pour qu'elles &quot;collent&quot; à votre configuration.

 '''cp /usr/share/doc/redmine/examples/email.yml.example /etc/redmine/default/email.yml'''
 '''nano /etc/redmine/default/email.yml'''

=== Intégrer le dépôt Gitosis ===

Il faut maintenant intégrer notre dépôt Git à Redmine:

Créez un nouveau projet:
[[Fichier:Redmine1.png|240px]]

Configurez le chemin du dépôt:
[[Fichier:Redmine3.png|240px]]

Accédez au dépôt:
[[Fichier:Redmine4.png|240px]]</text>
      <sha1>2qdxbgq7piig9gujmc4jpw2incwlb4b</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3879</id>
      <parentid>3878</parentid>
      <timestamp>2012-03-05T11:58:36Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* &quot;Peuplement&quot; de notre dépôt */</comment>
      <text xml:space="preserve" bytes="11953">Nous allons présenter dans ce tuto l'installation d'un dépôt Git et du gestionnaire de projet RedMine (optionnel évidemment...).

Debian a mis à notre disposition des paquets dans les dépôts pour ces deux applications; Comme vous êtes un bon administarteur (fainéant comme il se doit, et très attaché à apt) vous allez, tout comme moi faire l'installation avec apt-get ou aptitude.
Les avantages sont nombreux, le plus évident étant les mises à jours simplifiées et la bonne intégration à votre système.

'''Git''' est un logiciel de gestion de versions décentralisé. C'est un logiciel libre créé par Linus Torvalds, le créateur du noyau Linux, et distribué selon les termes de la licence publique générale GNU version 2 ([http://fr.wikipedia.org/wiki/Git Git]).
Nous avons choisis '''Gitolite''' qui est une version plus sécurisée de '''Git'''. '''Gitosis''' permet l'accès au dépôt Git avec un seul utilisateur (utilisateur système) et il permet de filtrer les accès au dépôt par les opérateurs via des clef SSH.

'''RedMine''' RedMmine est une application web Open Source de gestion complète de projet en mode web, développé en Ruby sur la base du framework Ruby on Rails ([http://fr.wikipedia.org/wiki/RedMine Redmine]).

= Gitosis=

== Installation de Gitosis ==

Comme toujours ches Debian, l'installation est très simple:

 '''apt-get install gitosis'''
 ...
 Les paquets supplémentaires suivants seront installés : 
   python-pkg-resources python-setuptools
 Paquets suggérés :
   git-daemon-run gitweb python-distribute python-distribute-doc
 Les NOUVEAUX paquets suivants seront installés :
   gitosis python-pkg-resources python-setuptools
 ...

== Configuration ==

Nous créons l'utilisateur &quot;git&quot;, le seul à avoir l'accès au dépôt et à la configuration:

 '''adduser --system --shell /bin/bash --gecos 'git version control' --group --disabled-password --home /var/git git'''
 Ajout de l'utilisateur système « git » (UID 113) ...
 Ajout du nouveau groupe « git » (GID 117) ...
 Ajout du nouvel utilisateur « git » (UID 113) avec pour groupe d'appartenance « git » ...
 Création du répertoire personnel « /var/git »...

=== Configuration Client/Admin ===

Pour avoir accès à la configuration des dépôts et des accès utilisateurs à distance, nous créons sur une machine cliente une clef SSH:

Création de la clef:

 '''ssh-keygen -t dsa'''
 Generating public/private dsa key pair.
 Enter file in which to save the key (/home/laurent/.ssh/id_dsa): /home/laurent/.ssh/gitosis-admin-web
 Enter passphrase (empty for no passphrase): 
 Enter same passphrase again: 
 Your identification has been saved in /home/laurent/.ssh/gitosis-admin-web.
 Your public key has been saved in /home/laurent/.ssh/gitosis-admin-web.pub.
 The key fingerprint is:
 99:xx:24:xx:ef:xx:d2:xx:87:xx:32:xx:1a:xx:b7:xx laurent@sidlol
 The key's randomart image is:
 +--[ DSA 1024]----+
 |                 |
 |                 |
 |                 |
 |    . .. o       |
 |  ..xx..S        |
 |   xx.+          |
 |  ..xx o         |
 |  .oE x x        |
 |  .+xx o         |
 +-----------------+

Il faut ensuite envoyer le clef générée sur le serveur:

 '''scp /home/laurent/.ssh/gitosis-admin-web.pub web-git:/tmp/gitosis-admin-web.pub'''
 gitosis-admin-web.pub                                                                            100%  604     0.6KB/s   00:00

'''web-git''' (ci-dessus) est le nom configuré dans ssh pour l'accès au serveur:

 '''cat ~/.ssh/config'''
 Host web-git
 HostName IP_du_serveur
 Port port_ssh
 User git
 PasswordAuthentication no
 IdentityFile ~/.ssh/gitosis-admin-web.pub

Sur le serveur:
Nous intégrons la clef SSH du &quot;client&quot; et initialisons le dépôt gitosis-admin.git.

 '''su - git'''
 git@web:~$ '''gitosis-init &lt; /tmp/gitosis-admin-web.pub'''
 Initialized empty Git repository in /var/git/repositories/gitosis-admin.git/
 Reinitialized existing Git repository in /var/git/repositories/gitosis-admin.git/

Sur le client:
Nous clonons le dépôt gitosis-admin.git localement

 '''git clone git@web-git:gitosis-admin.git'''
 Cloning into 'gitosis-admin'...
 remote: Counting objects: 5, done.
 remote: Compressing objects: 100% (4/4), done.
 remote: Total 5 (delta 0), reused 5 (delta 0)
 Receiving objects: 100% (5/5), done.

Vérification:

 '''cd gitosis-admin/'''
 '''vdir'''
 total 8
 -rw-r--r-- 1 laurent laurent   84 mars   4 11:25 gitosis.conf
 drwxr-xr-x 2 laurent laurent 4096 mars   4 11:25 keydir

=== Modification de la configuration de gitosis ===

==== Ajout d'un dépôt ====

Ajoutons maintenant un dépôt à partir du &quot;client&quot;
Nous ajoutons le dépôt &quot;portailmadagascar&quot;

 '''nano gitosis.conf'''

 [gitosis]
 
 [group gitosis-admin]
 writable = gitosis-admin
 members = laurent@sidlol
 
 [group portailmadagascar]
 writable = portailmadagascar
 members = laurent@sidlol

Activons le dépôt:

 '''git add gitosis.conf'''
 '''git commit -m 'Ajout du dépôt portailmadagascar''''
 [master b0192ad] Ajout du dépôt portailmadagascar
  Committer: Laurent L &lt;laurent@sidlol.zehome.org&gt;
 Your name and email address were configured automatically based
 on your username and hostname. Please check that they are accurate.
 You can suppress this message by setting them explicitly:
 
     git config --global user.name &quot;Your Name&quot;
     git config --global user.email you@example.com
 
 After doing this, you may fix the identity used for this commit with:
 
     git commit --amend --reset-author
 
  1 files changed, 3 insertions(+), 0 deletions(-)

Envoyons la modification sur le serveur:

 '''git push origin master'''
 Counting objects: 5, done.
 Delta compression using up to 4 threads.
 Compressing objects: 100% (3/3), done.
 Writing objects: 100% (3/3), 389 bytes, done.
 Total 3 (delta 0), reused 0 (delta 0)
 To git@web-git:gitosis-admin.git
    e9439fc..b0192ad  master -&gt; master

Localement, sur le client, le dépôt n'a pas encore été initialisé; Il suffit maintenant de le &quot;récupérer&quot; (pull) depuis le serveur:
Initialisation locale du dépôt:

 '''cd ~/git'''
 '''git clone web-git:portailmadagascar.git'''
 Cloning into 'portailmadagascar'...
 Initialized empty Git repository in /var/git/repositories/portailmadagascar.git/
 warning: You appear to have cloned an empty repository.

==== &quot;Peuplement&quot; de notre dépôt ====

Nous allons maintenant &quot;peupler&quot; notre dépôt (lui ajouter des fichiers):

Il suffit de copier vos fichiers dans le dossier ~/git/portailmadagascar, de les ajouter au dépôt, puis de les envoyer au serveur:

 '''git push origin master'''
 Counting objects: 6663, done.
 Delta compression using up to 4 threads.
 Compressing objects: 100% (6290/6290), done.
 Writing objects: 100% (6663/6663), 57.53 MiB | 55 KiB/s, done.
 Total 6663 (delta 747), reused 0 (delta 0)
 To web-git:portailmadagascar.git
  * [new branch]      master -&gt; master

 '''git clone web-git:portailmadagascar.git'''
 '''cd portailmadagascar'''
 '''git add .'''
 '''git commit -m &quot;Initial commit&quot;'''

&lt;code&gt;
Initial commit

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use &quot;git rm --cached &lt;file&gt;...&quot; to unstage)
#
#       new file:   .htaccess
#       new file:   WP PROJET ubermenu-wordpress-mega-menu-plugin.zip
#       new file:   article.zip
#       new file:   article/admin.js
...
&lt;/code&gt;

Avant d'envoyer au serveur, configurons nos identifiants:

 '''git config --global user.name &quot;lol&quot;'''
 '''git config --global user.email lol@serveur.tld'''
 '''git commit --amend --reset-author'''
 '''git push origin master'''

= Redmine =

== Installation ==

Nous commençons par préparer la base sql. (Cette option est facultative, vous avez l'option de configurer et peupler la base automatiquement avec dpkg). Nous avons choisis ici de garder la contrôle du nom de la base et de l'utilisateur mysql)?

&lt;code&gt;
mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7327
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database baseredmine character set utf8;
Query OK, 1 row affected (0.00 sec)

mysql&gt; create user 'mysqlredmine'@'localhost' identified by 'votre_mot-de-passe-pour-redmine';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; grant all privileges on baseredmine.* to 'mysqlredmine'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

== Installation redmine-mysql ==

 '''apt-get install redmine redmine-mysql libapache2-mod-passenger'''

Configurer la base: NON (Sauf si vous avez décidé de laisser dpkg s'occuper de ça)

 '''nano /etc/redmine/default/database.yml'''

 production:
   adapter: mysql
   database: baseredmine
   host: localhost
   port:
   username: mysqlredmine
   password: votre_mot-de-passe-pour-redmine
   encoding: utf8

Nous créons maintenant la structure de la base de donnée:

 '''cd /usr/share/redmine/'''
 '''RAILS_ENV=production rake db:migrate'''
 (in /usr/share/redmine)
 ==  Setup: migrating ==========================================================
 -- create_table(&quot;attachments&quot;, {:force=&gt;true})
    -&gt; 0.0993s
 -- create_table(&quot;auth_sources&quot;, {:force=&gt;true})
    -&gt; 0.0796s
 ...

Et nous y intégrons les données par défaut (Optionnel, mais fortement conseillé par RedMine)

 '''RAILS_ENV=production rake redmine:load_default_data'''
 (in /usr/share/redmine)
 
 Select language: bg, bs, ca, cs, da, de, el, en, en-GB, es, eu, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en] fr
 ====================================
 Default configuration data loaded.

=== Configuration de apache2 ===

Nous allons maintenant configurer apache2 pour l'intégration de RedMine. Les choix sont multiples quant à cette installation; Nous avons choisis un sous répertoire de /var/www et la création d'un sous-domaine dans notre DNS.

 '''ln -s /usr/share/redmine /var/www/redmine'''
 '''chown www-data:www-data /var/www/redmine/'''

 '''nano /etc/apache2/sites-available/redmine'''

&lt;code&gt;
&lt;VirtualHost ip_du_serveur:80&gt;
        ServerName redmine.serveur.tld
        Alias /redmine /var/www/redmine/public
        DocumentRoot /var/www/redmine/public
    &lt;Directory /var/www/redmine/public/&gt;
        PassengerAppRoot /var/www/redmine
        RailsBaseURI /
        AddHandler fastcgi-script .fcgi
        Options Indexes +ExecCGI FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    &lt;/Directory&gt;
&lt;/VirtualHost&gt;
&lt;/code&gt;

 '''/etc/apache2/sites-enabled/redmine'''
 '''service apache2 force-reload'''

Vous devriez maintenant être capable d'accéder à RedMine par votre navigateur (http://redmine.serveur.tld)

Login: admin
Mot de passe: admin

Il est fortement recommandé de changer le mot de passe...

=== Configuration des mails ===

Vous devrez maintenant configurer l'envoie des mails par Redmine (Il suffit de modifier les données à la fin du fichier pour qu'elles &quot;collent&quot; à votre configuration.

 '''cp /usr/share/doc/redmine/examples/email.yml.example /etc/redmine/default/email.yml'''
 '''nano /etc/redmine/default/email.yml'''

=== Intégrer le dépôt Gitosis ===

Il faut maintenant intégrer notre dépôt Git à Redmine:

Créez un nouveau projet:
[[Fichier:Redmine1.png|240px]]

Configurez le chemin du dépôt:
[[Fichier:Redmine3.png|240px]]

Accédez au dépôt:
[[Fichier:Redmine4.png|240px]]</text>
      <sha1>aec1h9ka9kxfgeusgm1y2y8gquqtxb4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3880</id>
      <parentid>3879</parentid>
      <timestamp>2012-03-05T11:59:25Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Installation */</comment>
      <text xml:space="preserve" bytes="11952">Nous allons présenter dans ce tuto l'installation d'un dépôt Git et du gestionnaire de projet RedMine (optionnel évidemment...).

Debian a mis à notre disposition des paquets dans les dépôts pour ces deux applications; Comme vous êtes un bon administarteur (fainéant comme il se doit, et très attaché à apt) vous allez, tout comme moi faire l'installation avec apt-get ou aptitude.
Les avantages sont nombreux, le plus évident étant les mises à jours simplifiées et la bonne intégration à votre système.

'''Git''' est un logiciel de gestion de versions décentralisé. C'est un logiciel libre créé par Linus Torvalds, le créateur du noyau Linux, et distribué selon les termes de la licence publique générale GNU version 2 ([http://fr.wikipedia.org/wiki/Git Git]).
Nous avons choisis '''Gitolite''' qui est une version plus sécurisée de '''Git'''. '''Gitosis''' permet l'accès au dépôt Git avec un seul utilisateur (utilisateur système) et il permet de filtrer les accès au dépôt par les opérateurs via des clef SSH.

'''RedMine''' RedMmine est une application web Open Source de gestion complète de projet en mode web, développé en Ruby sur la base du framework Ruby on Rails ([http://fr.wikipedia.org/wiki/RedMine Redmine]).

= Gitosis=

== Installation de Gitosis ==

Comme toujours ches Debian, l'installation est très simple:

 '''apt-get install gitosis'''
 ...
 Les paquets supplémentaires suivants seront installés : 
   python-pkg-resources python-setuptools
 Paquets suggérés :
   git-daemon-run gitweb python-distribute python-distribute-doc
 Les NOUVEAUX paquets suivants seront installés :
   gitosis python-pkg-resources python-setuptools
 ...

== Configuration ==

Nous créons l'utilisateur &quot;git&quot;, le seul à avoir l'accès au dépôt et à la configuration:

 '''adduser --system --shell /bin/bash --gecos 'git version control' --group --disabled-password --home /var/git git'''
 Ajout de l'utilisateur système « git » (UID 113) ...
 Ajout du nouveau groupe « git » (GID 117) ...
 Ajout du nouvel utilisateur « git » (UID 113) avec pour groupe d'appartenance « git » ...
 Création du répertoire personnel « /var/git »...

=== Configuration Client/Admin ===

Pour avoir accès à la configuration des dépôts et des accès utilisateurs à distance, nous créons sur une machine cliente une clef SSH:

Création de la clef:

 '''ssh-keygen -t dsa'''
 Generating public/private dsa key pair.
 Enter file in which to save the key (/home/laurent/.ssh/id_dsa): /home/laurent/.ssh/gitosis-admin-web
 Enter passphrase (empty for no passphrase): 
 Enter same passphrase again: 
 Your identification has been saved in /home/laurent/.ssh/gitosis-admin-web.
 Your public key has been saved in /home/laurent/.ssh/gitosis-admin-web.pub.
 The key fingerprint is:
 99:xx:24:xx:ef:xx:d2:xx:87:xx:32:xx:1a:xx:b7:xx laurent@sidlol
 The key's randomart image is:
 +--[ DSA 1024]----+
 |                 |
 |                 |
 |                 |
 |    . .. o       |
 |  ..xx..S        |
 |   xx.+          |
 |  ..xx o         |
 |  .oE x x        |
 |  .+xx o         |
 +-----------------+

Il faut ensuite envoyer le clef générée sur le serveur:

 '''scp /home/laurent/.ssh/gitosis-admin-web.pub web-git:/tmp/gitosis-admin-web.pub'''
 gitosis-admin-web.pub                                                                            100%  604     0.6KB/s   00:00

'''web-git''' (ci-dessus) est le nom configuré dans ssh pour l'accès au serveur:

 '''cat ~/.ssh/config'''
 Host web-git
 HostName IP_du_serveur
 Port port_ssh
 User git
 PasswordAuthentication no
 IdentityFile ~/.ssh/gitosis-admin-web.pub

Sur le serveur:
Nous intégrons la clef SSH du &quot;client&quot; et initialisons le dépôt gitosis-admin.git.

 '''su - git'''
 git@web:~$ '''gitosis-init &lt; /tmp/gitosis-admin-web.pub'''
 Initialized empty Git repository in /var/git/repositories/gitosis-admin.git/
 Reinitialized existing Git repository in /var/git/repositories/gitosis-admin.git/

Sur le client:
Nous clonons le dépôt gitosis-admin.git localement

 '''git clone git@web-git:gitosis-admin.git'''
 Cloning into 'gitosis-admin'...
 remote: Counting objects: 5, done.
 remote: Compressing objects: 100% (4/4), done.
 remote: Total 5 (delta 0), reused 5 (delta 0)
 Receiving objects: 100% (5/5), done.

Vérification:

 '''cd gitosis-admin/'''
 '''vdir'''
 total 8
 -rw-r--r-- 1 laurent laurent   84 mars   4 11:25 gitosis.conf
 drwxr-xr-x 2 laurent laurent 4096 mars   4 11:25 keydir

=== Modification de la configuration de gitosis ===

==== Ajout d'un dépôt ====

Ajoutons maintenant un dépôt à partir du &quot;client&quot;
Nous ajoutons le dépôt &quot;portailmadagascar&quot;

 '''nano gitosis.conf'''

 [gitosis]
 
 [group gitosis-admin]
 writable = gitosis-admin
 members = laurent@sidlol
 
 [group portailmadagascar]
 writable = portailmadagascar
 members = laurent@sidlol

Activons le dépôt:

 '''git add gitosis.conf'''
 '''git commit -m 'Ajout du dépôt portailmadagascar''''
 [master b0192ad] Ajout du dépôt portailmadagascar
  Committer: Laurent L &lt;laurent@sidlol.zehome.org&gt;
 Your name and email address were configured automatically based
 on your username and hostname. Please check that they are accurate.
 You can suppress this message by setting them explicitly:
 
     git config --global user.name &quot;Your Name&quot;
     git config --global user.email you@example.com
 
 After doing this, you may fix the identity used for this commit with:
 
     git commit --amend --reset-author
 
  1 files changed, 3 insertions(+), 0 deletions(-)

Envoyons la modification sur le serveur:

 '''git push origin master'''
 Counting objects: 5, done.
 Delta compression using up to 4 threads.
 Compressing objects: 100% (3/3), done.
 Writing objects: 100% (3/3), 389 bytes, done.
 Total 3 (delta 0), reused 0 (delta 0)
 To git@web-git:gitosis-admin.git
    e9439fc..b0192ad  master -&gt; master

Localement, sur le client, le dépôt n'a pas encore été initialisé; Il suffit maintenant de le &quot;récupérer&quot; (pull) depuis le serveur:
Initialisation locale du dépôt:

 '''cd ~/git'''
 '''git clone web-git:portailmadagascar.git'''
 Cloning into 'portailmadagascar'...
 Initialized empty Git repository in /var/git/repositories/portailmadagascar.git/
 warning: You appear to have cloned an empty repository.

==== &quot;Peuplement&quot; de notre dépôt ====

Nous allons maintenant &quot;peupler&quot; notre dépôt (lui ajouter des fichiers):

Il suffit de copier vos fichiers dans le dossier ~/git/portailmadagascar, de les ajouter au dépôt, puis de les envoyer au serveur:

 '''git push origin master'''
 Counting objects: 6663, done.
 Delta compression using up to 4 threads.
 Compressing objects: 100% (6290/6290), done.
 Writing objects: 100% (6663/6663), 57.53 MiB | 55 KiB/s, done.
 Total 6663 (delta 747), reused 0 (delta 0)
 To web-git:portailmadagascar.git
  * [new branch]      master -&gt; master

 '''git clone web-git:portailmadagascar.git'''
 '''cd portailmadagascar'''
 '''git add .'''
 '''git commit -m &quot;Initial commit&quot;'''

&lt;code&gt;
Initial commit

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use &quot;git rm --cached &lt;file&gt;...&quot; to unstage)
#
#       new file:   .htaccess
#       new file:   WP PROJET ubermenu-wordpress-mega-menu-plugin.zip
#       new file:   article.zip
#       new file:   article/admin.js
...
&lt;/code&gt;

Avant d'envoyer au serveur, configurons nos identifiants:

 '''git config --global user.name &quot;lol&quot;'''
 '''git config --global user.email lol@serveur.tld'''
 '''git commit --amend --reset-author'''
 '''git push origin master'''

= Redmine =

== Installation ==

Nous commençons par préparer la base sql. (Cette option est facultative, vous avez l'option de configurer et peupler la base automatiquement avec dpkg). Nous avons choisi ici de garder la contrôle du nom de la base et de l'utilisateur mysql)?

&lt;code&gt;
mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7327
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database baseredmine character set utf8;
Query OK, 1 row affected (0.00 sec)

mysql&gt; create user 'mysqlredmine'@'localhost' identified by 'votre_mot-de-passe-pour-redmine';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; grant all privileges on baseredmine.* to 'mysqlredmine'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

== Installation redmine-mysql ==

 '''apt-get install redmine redmine-mysql libapache2-mod-passenger'''

Configurer la base: NON (Sauf si vous avez décidé de laisser dpkg s'occuper de ça)

 '''nano /etc/redmine/default/database.yml'''

 production:
   adapter: mysql
   database: baseredmine
   host: localhost
   port:
   username: mysqlredmine
   password: votre_mot-de-passe-pour-redmine
   encoding: utf8

Nous créons maintenant la structure de la base de donnée:

 '''cd /usr/share/redmine/'''
 '''RAILS_ENV=production rake db:migrate'''
 (in /usr/share/redmine)
 ==  Setup: migrating ==========================================================
 -- create_table(&quot;attachments&quot;, {:force=&gt;true})
    -&gt; 0.0993s
 -- create_table(&quot;auth_sources&quot;, {:force=&gt;true})
    -&gt; 0.0796s
 ...

Et nous y intégrons les données par défaut (Optionnel, mais fortement conseillé par RedMine)

 '''RAILS_ENV=production rake redmine:load_default_data'''
 (in /usr/share/redmine)
 
 Select language: bg, bs, ca, cs, da, de, el, en, en-GB, es, eu, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en] fr
 ====================================
 Default configuration data loaded.

=== Configuration de apache2 ===

Nous allons maintenant configurer apache2 pour l'intégration de RedMine. Les choix sont multiples quant à cette installation; Nous avons choisis un sous répertoire de /var/www et la création d'un sous-domaine dans notre DNS.

 '''ln -s /usr/share/redmine /var/www/redmine'''
 '''chown www-data:www-data /var/www/redmine/'''

 '''nano /etc/apache2/sites-available/redmine'''

&lt;code&gt;
&lt;VirtualHost ip_du_serveur:80&gt;
        ServerName redmine.serveur.tld
        Alias /redmine /var/www/redmine/public
        DocumentRoot /var/www/redmine/public
    &lt;Directory /var/www/redmine/public/&gt;
        PassengerAppRoot /var/www/redmine
        RailsBaseURI /
        AddHandler fastcgi-script .fcgi
        Options Indexes +ExecCGI FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    &lt;/Directory&gt;
&lt;/VirtualHost&gt;
&lt;/code&gt;

 '''/etc/apache2/sites-enabled/redmine'''
 '''service apache2 force-reload'''

Vous devriez maintenant être capable d'accéder à RedMine par votre navigateur (http://redmine.serveur.tld)

Login: admin
Mot de passe: admin

Il est fortement recommandé de changer le mot de passe...

=== Configuration des mails ===

Vous devrez maintenant configurer l'envoie des mails par Redmine (Il suffit de modifier les données à la fin du fichier pour qu'elles &quot;collent&quot; à votre configuration.

 '''cp /usr/share/doc/redmine/examples/email.yml.example /etc/redmine/default/email.yml'''
 '''nano /etc/redmine/default/email.yml'''

=== Intégrer le dépôt Gitosis ===

Il faut maintenant intégrer notre dépôt Git à Redmine:

Créez un nouveau projet:
[[Fichier:Redmine1.png|240px]]

Configurez le chemin du dépôt:
[[Fichier:Redmine3.png|240px]]

Accédez au dépôt:
[[Fichier:Redmine4.png|240px]]</text>
      <sha1>pnj8eoqur9p97qxpwllijn7jbxrd85z</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3881</id>
      <parentid>3880</parentid>
      <timestamp>2012-03-05T12:00:26Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Configuration de apache2 */</comment>
      <text xml:space="preserve" bytes="11951">Nous allons présenter dans ce tuto l'installation d'un dépôt Git et du gestionnaire de projet RedMine (optionnel évidemment...).

Debian a mis à notre disposition des paquets dans les dépôts pour ces deux applications; Comme vous êtes un bon administarteur (fainéant comme il se doit, et très attaché à apt) vous allez, tout comme moi faire l'installation avec apt-get ou aptitude.
Les avantages sont nombreux, le plus évident étant les mises à jours simplifiées et la bonne intégration à votre système.

'''Git''' est un logiciel de gestion de versions décentralisé. C'est un logiciel libre créé par Linus Torvalds, le créateur du noyau Linux, et distribué selon les termes de la licence publique générale GNU version 2 ([http://fr.wikipedia.org/wiki/Git Git]).
Nous avons choisis '''Gitolite''' qui est une version plus sécurisée de '''Git'''. '''Gitosis''' permet l'accès au dépôt Git avec un seul utilisateur (utilisateur système) et il permet de filtrer les accès au dépôt par les opérateurs via des clef SSH.

'''RedMine''' RedMmine est une application web Open Source de gestion complète de projet en mode web, développé en Ruby sur la base du framework Ruby on Rails ([http://fr.wikipedia.org/wiki/RedMine Redmine]).

= Gitosis=

== Installation de Gitosis ==

Comme toujours ches Debian, l'installation est très simple:

 '''apt-get install gitosis'''
 ...
 Les paquets supplémentaires suivants seront installés : 
   python-pkg-resources python-setuptools
 Paquets suggérés :
   git-daemon-run gitweb python-distribute python-distribute-doc
 Les NOUVEAUX paquets suivants seront installés :
   gitosis python-pkg-resources python-setuptools
 ...

== Configuration ==

Nous créons l'utilisateur &quot;git&quot;, le seul à avoir l'accès au dépôt et à la configuration:

 '''adduser --system --shell /bin/bash --gecos 'git version control' --group --disabled-password --home /var/git git'''
 Ajout de l'utilisateur système « git » (UID 113) ...
 Ajout du nouveau groupe « git » (GID 117) ...
 Ajout du nouvel utilisateur « git » (UID 113) avec pour groupe d'appartenance « git » ...
 Création du répertoire personnel « /var/git »...

=== Configuration Client/Admin ===

Pour avoir accès à la configuration des dépôts et des accès utilisateurs à distance, nous créons sur une machine cliente une clef SSH:

Création de la clef:

 '''ssh-keygen -t dsa'''
 Generating public/private dsa key pair.
 Enter file in which to save the key (/home/laurent/.ssh/id_dsa): /home/laurent/.ssh/gitosis-admin-web
 Enter passphrase (empty for no passphrase): 
 Enter same passphrase again: 
 Your identification has been saved in /home/laurent/.ssh/gitosis-admin-web.
 Your public key has been saved in /home/laurent/.ssh/gitosis-admin-web.pub.
 The key fingerprint is:
 99:xx:24:xx:ef:xx:d2:xx:87:xx:32:xx:1a:xx:b7:xx laurent@sidlol
 The key's randomart image is:
 +--[ DSA 1024]----+
 |                 |
 |                 |
 |                 |
 |    . .. o       |
 |  ..xx..S        |
 |   xx.+          |
 |  ..xx o         |
 |  .oE x x        |
 |  .+xx o         |
 +-----------------+

Il faut ensuite envoyer le clef générée sur le serveur:

 '''scp /home/laurent/.ssh/gitosis-admin-web.pub web-git:/tmp/gitosis-admin-web.pub'''
 gitosis-admin-web.pub                                                                            100%  604     0.6KB/s   00:00

'''web-git''' (ci-dessus) est le nom configuré dans ssh pour l'accès au serveur:

 '''cat ~/.ssh/config'''
 Host web-git
 HostName IP_du_serveur
 Port port_ssh
 User git
 PasswordAuthentication no
 IdentityFile ~/.ssh/gitosis-admin-web.pub

Sur le serveur:
Nous intégrons la clef SSH du &quot;client&quot; et initialisons le dépôt gitosis-admin.git.

 '''su - git'''
 git@web:~$ '''gitosis-init &lt; /tmp/gitosis-admin-web.pub'''
 Initialized empty Git repository in /var/git/repositories/gitosis-admin.git/
 Reinitialized existing Git repository in /var/git/repositories/gitosis-admin.git/

Sur le client:
Nous clonons le dépôt gitosis-admin.git localement

 '''git clone git@web-git:gitosis-admin.git'''
 Cloning into 'gitosis-admin'...
 remote: Counting objects: 5, done.
 remote: Compressing objects: 100% (4/4), done.
 remote: Total 5 (delta 0), reused 5 (delta 0)
 Receiving objects: 100% (5/5), done.

Vérification:

 '''cd gitosis-admin/'''
 '''vdir'''
 total 8
 -rw-r--r-- 1 laurent laurent   84 mars   4 11:25 gitosis.conf
 drwxr-xr-x 2 laurent laurent 4096 mars   4 11:25 keydir

=== Modification de la configuration de gitosis ===

==== Ajout d'un dépôt ====

Ajoutons maintenant un dépôt à partir du &quot;client&quot;
Nous ajoutons le dépôt &quot;portailmadagascar&quot;

 '''nano gitosis.conf'''

 [gitosis]
 
 [group gitosis-admin]
 writable = gitosis-admin
 members = laurent@sidlol
 
 [group portailmadagascar]
 writable = portailmadagascar
 members = laurent@sidlol

Activons le dépôt:

 '''git add gitosis.conf'''
 '''git commit -m 'Ajout du dépôt portailmadagascar''''
 [master b0192ad] Ajout du dépôt portailmadagascar
  Committer: Laurent L &lt;laurent@sidlol.zehome.org&gt;
 Your name and email address were configured automatically based
 on your username and hostname. Please check that they are accurate.
 You can suppress this message by setting them explicitly:
 
     git config --global user.name &quot;Your Name&quot;
     git config --global user.email you@example.com
 
 After doing this, you may fix the identity used for this commit with:
 
     git commit --amend --reset-author
 
  1 files changed, 3 insertions(+), 0 deletions(-)

Envoyons la modification sur le serveur:

 '''git push origin master'''
 Counting objects: 5, done.
 Delta compression using up to 4 threads.
 Compressing objects: 100% (3/3), done.
 Writing objects: 100% (3/3), 389 bytes, done.
 Total 3 (delta 0), reused 0 (delta 0)
 To git@web-git:gitosis-admin.git
    e9439fc..b0192ad  master -&gt; master

Localement, sur le client, le dépôt n'a pas encore été initialisé; Il suffit maintenant de le &quot;récupérer&quot; (pull) depuis le serveur:
Initialisation locale du dépôt:

 '''cd ~/git'''
 '''git clone web-git:portailmadagascar.git'''
 Cloning into 'portailmadagascar'...
 Initialized empty Git repository in /var/git/repositories/portailmadagascar.git/
 warning: You appear to have cloned an empty repository.

==== &quot;Peuplement&quot; de notre dépôt ====

Nous allons maintenant &quot;peupler&quot; notre dépôt (lui ajouter des fichiers):

Il suffit de copier vos fichiers dans le dossier ~/git/portailmadagascar, de les ajouter au dépôt, puis de les envoyer au serveur:

 '''git push origin master'''
 Counting objects: 6663, done.
 Delta compression using up to 4 threads.
 Compressing objects: 100% (6290/6290), done.
 Writing objects: 100% (6663/6663), 57.53 MiB | 55 KiB/s, done.
 Total 6663 (delta 747), reused 0 (delta 0)
 To web-git:portailmadagascar.git
  * [new branch]      master -&gt; master

 '''git clone web-git:portailmadagascar.git'''
 '''cd portailmadagascar'''
 '''git add .'''
 '''git commit -m &quot;Initial commit&quot;'''

&lt;code&gt;
Initial commit

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use &quot;git rm --cached &lt;file&gt;...&quot; to unstage)
#
#       new file:   .htaccess
#       new file:   WP PROJET ubermenu-wordpress-mega-menu-plugin.zip
#       new file:   article.zip
#       new file:   article/admin.js
...
&lt;/code&gt;

Avant d'envoyer au serveur, configurons nos identifiants:

 '''git config --global user.name &quot;lol&quot;'''
 '''git config --global user.email lol@serveur.tld'''
 '''git commit --amend --reset-author'''
 '''git push origin master'''

= Redmine =

== Installation ==

Nous commençons par préparer la base sql. (Cette option est facultative, vous avez l'option de configurer et peupler la base automatiquement avec dpkg). Nous avons choisi ici de garder la contrôle du nom de la base et de l'utilisateur mysql)?

&lt;code&gt;
mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7327
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database baseredmine character set utf8;
Query OK, 1 row affected (0.00 sec)

mysql&gt; create user 'mysqlredmine'@'localhost' identified by 'votre_mot-de-passe-pour-redmine';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; grant all privileges on baseredmine.* to 'mysqlredmine'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

== Installation redmine-mysql ==

 '''apt-get install redmine redmine-mysql libapache2-mod-passenger'''

Configurer la base: NON (Sauf si vous avez décidé de laisser dpkg s'occuper de ça)

 '''nano /etc/redmine/default/database.yml'''

 production:
   adapter: mysql
   database: baseredmine
   host: localhost
   port:
   username: mysqlredmine
   password: votre_mot-de-passe-pour-redmine
   encoding: utf8

Nous créons maintenant la structure de la base de donnée:

 '''cd /usr/share/redmine/'''
 '''RAILS_ENV=production rake db:migrate'''
 (in /usr/share/redmine)
 ==  Setup: migrating ==========================================================
 -- create_table(&quot;attachments&quot;, {:force=&gt;true})
    -&gt; 0.0993s
 -- create_table(&quot;auth_sources&quot;, {:force=&gt;true})
    -&gt; 0.0796s
 ...

Et nous y intégrons les données par défaut (Optionnel, mais fortement conseillé par RedMine)

 '''RAILS_ENV=production rake redmine:load_default_data'''
 (in /usr/share/redmine)
 
 Select language: bg, bs, ca, cs, da, de, el, en, en-GB, es, eu, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en] fr
 ====================================
 Default configuration data loaded.

=== Configuration de apache2 ===

Nous allons maintenant configurer apache2 pour l'intégration de RedMine. Les choix sont multiples quant à cette installation; Nous avons choisi un sous répertoire de /var/www et la création d'un sous-domaine dans notre DNS.

 '''ln -s /usr/share/redmine /var/www/redmine'''
 '''chown www-data:www-data /var/www/redmine/'''

 '''nano /etc/apache2/sites-available/redmine'''

&lt;code&gt;
&lt;VirtualHost ip_du_serveur:80&gt;
        ServerName redmine.serveur.tld
        Alias /redmine /var/www/redmine/public
        DocumentRoot /var/www/redmine/public
    &lt;Directory /var/www/redmine/public/&gt;
        PassengerAppRoot /var/www/redmine
        RailsBaseURI /
        AddHandler fastcgi-script .fcgi
        Options Indexes +ExecCGI FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    &lt;/Directory&gt;
&lt;/VirtualHost&gt;
&lt;/code&gt;

 '''/etc/apache2/sites-enabled/redmine'''
 '''service apache2 force-reload'''

Vous devriez maintenant être capable d'accéder à RedMine par votre navigateur (http://redmine.serveur.tld)

Login: admin
Mot de passe: admin

Il est fortement recommandé de changer le mot de passe...

=== Configuration des mails ===

Vous devrez maintenant configurer l'envoie des mails par Redmine (Il suffit de modifier les données à la fin du fichier pour qu'elles &quot;collent&quot; à votre configuration.

 '''cp /usr/share/doc/redmine/examples/email.yml.example /etc/redmine/default/email.yml'''
 '''nano /etc/redmine/default/email.yml'''

=== Intégrer le dépôt Gitosis ===

Il faut maintenant intégrer notre dépôt Git à Redmine:

Créez un nouveau projet:
[[Fichier:Redmine1.png|240px]]

Configurez le chemin du dépôt:
[[Fichier:Redmine3.png|240px]]

Accédez au dépôt:
[[Fichier:Redmine4.png|240px]]</text>
      <sha1>rj2du6yd67kpfosebupym8ie9egae7f</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3882</id>
      <parentid>3881</parentid>
      <timestamp>2012-03-05T12:01:14Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Configuration des mails */</comment>
      <text xml:space="preserve" bytes="11950">Nous allons présenter dans ce tuto l'installation d'un dépôt Git et du gestionnaire de projet RedMine (optionnel évidemment...).

Debian a mis à notre disposition des paquets dans les dépôts pour ces deux applications; Comme vous êtes un bon administarteur (fainéant comme il se doit, et très attaché à apt) vous allez, tout comme moi faire l'installation avec apt-get ou aptitude.
Les avantages sont nombreux, le plus évident étant les mises à jours simplifiées et la bonne intégration à votre système.

'''Git''' est un logiciel de gestion de versions décentralisé. C'est un logiciel libre créé par Linus Torvalds, le créateur du noyau Linux, et distribué selon les termes de la licence publique générale GNU version 2 ([http://fr.wikipedia.org/wiki/Git Git]).
Nous avons choisis '''Gitolite''' qui est une version plus sécurisée de '''Git'''. '''Gitosis''' permet l'accès au dépôt Git avec un seul utilisateur (utilisateur système) et il permet de filtrer les accès au dépôt par les opérateurs via des clef SSH.

'''RedMine''' RedMmine est une application web Open Source de gestion complète de projet en mode web, développé en Ruby sur la base du framework Ruby on Rails ([http://fr.wikipedia.org/wiki/RedMine Redmine]).

= Gitosis=

== Installation de Gitosis ==

Comme toujours ches Debian, l'installation est très simple:

 '''apt-get install gitosis'''
 ...
 Les paquets supplémentaires suivants seront installés : 
   python-pkg-resources python-setuptools
 Paquets suggérés :
   git-daemon-run gitweb python-distribute python-distribute-doc
 Les NOUVEAUX paquets suivants seront installés :
   gitosis python-pkg-resources python-setuptools
 ...

== Configuration ==

Nous créons l'utilisateur &quot;git&quot;, le seul à avoir l'accès au dépôt et à la configuration:

 '''adduser --system --shell /bin/bash --gecos 'git version control' --group --disabled-password --home /var/git git'''
 Ajout de l'utilisateur système « git » (UID 113) ...
 Ajout du nouveau groupe « git » (GID 117) ...
 Ajout du nouvel utilisateur « git » (UID 113) avec pour groupe d'appartenance « git » ...
 Création du répertoire personnel « /var/git »...

=== Configuration Client/Admin ===

Pour avoir accès à la configuration des dépôts et des accès utilisateurs à distance, nous créons sur une machine cliente une clef SSH:

Création de la clef:

 '''ssh-keygen -t dsa'''
 Generating public/private dsa key pair.
 Enter file in which to save the key (/home/laurent/.ssh/id_dsa): /home/laurent/.ssh/gitosis-admin-web
 Enter passphrase (empty for no passphrase): 
 Enter same passphrase again: 
 Your identification has been saved in /home/laurent/.ssh/gitosis-admin-web.
 Your public key has been saved in /home/laurent/.ssh/gitosis-admin-web.pub.
 The key fingerprint is:
 99:xx:24:xx:ef:xx:d2:xx:87:xx:32:xx:1a:xx:b7:xx laurent@sidlol
 The key's randomart image is:
 +--[ DSA 1024]----+
 |                 |
 |                 |
 |                 |
 |    . .. o       |
 |  ..xx..S        |
 |   xx.+          |
 |  ..xx o         |
 |  .oE x x        |
 |  .+xx o         |
 +-----------------+

Il faut ensuite envoyer le clef générée sur le serveur:

 '''scp /home/laurent/.ssh/gitosis-admin-web.pub web-git:/tmp/gitosis-admin-web.pub'''
 gitosis-admin-web.pub                                                                            100%  604     0.6KB/s   00:00

'''web-git''' (ci-dessus) est le nom configuré dans ssh pour l'accès au serveur:

 '''cat ~/.ssh/config'''
 Host web-git
 HostName IP_du_serveur
 Port port_ssh
 User git
 PasswordAuthentication no
 IdentityFile ~/.ssh/gitosis-admin-web.pub

Sur le serveur:
Nous intégrons la clef SSH du &quot;client&quot; et initialisons le dépôt gitosis-admin.git.

 '''su - git'''
 git@web:~$ '''gitosis-init &lt; /tmp/gitosis-admin-web.pub'''
 Initialized empty Git repository in /var/git/repositories/gitosis-admin.git/
 Reinitialized existing Git repository in /var/git/repositories/gitosis-admin.git/

Sur le client:
Nous clonons le dépôt gitosis-admin.git localement

 '''git clone git@web-git:gitosis-admin.git'''
 Cloning into 'gitosis-admin'...
 remote: Counting objects: 5, done.
 remote: Compressing objects: 100% (4/4), done.
 remote: Total 5 (delta 0), reused 5 (delta 0)
 Receiving objects: 100% (5/5), done.

Vérification:

 '''cd gitosis-admin/'''
 '''vdir'''
 total 8
 -rw-r--r-- 1 laurent laurent   84 mars   4 11:25 gitosis.conf
 drwxr-xr-x 2 laurent laurent 4096 mars   4 11:25 keydir

=== Modification de la configuration de gitosis ===

==== Ajout d'un dépôt ====

Ajoutons maintenant un dépôt à partir du &quot;client&quot;
Nous ajoutons le dépôt &quot;portailmadagascar&quot;

 '''nano gitosis.conf'''

 [gitosis]
 
 [group gitosis-admin]
 writable = gitosis-admin
 members = laurent@sidlol
 
 [group portailmadagascar]
 writable = portailmadagascar
 members = laurent@sidlol

Activons le dépôt:

 '''git add gitosis.conf'''
 '''git commit -m 'Ajout du dépôt portailmadagascar''''
 [master b0192ad] Ajout du dépôt portailmadagascar
  Committer: Laurent L &lt;laurent@sidlol.zehome.org&gt;
 Your name and email address were configured automatically based
 on your username and hostname. Please check that they are accurate.
 You can suppress this message by setting them explicitly:
 
     git config --global user.name &quot;Your Name&quot;
     git config --global user.email you@example.com
 
 After doing this, you may fix the identity used for this commit with:
 
     git commit --amend --reset-author
 
  1 files changed, 3 insertions(+), 0 deletions(-)

Envoyons la modification sur le serveur:

 '''git push origin master'''
 Counting objects: 5, done.
 Delta compression using up to 4 threads.
 Compressing objects: 100% (3/3), done.
 Writing objects: 100% (3/3), 389 bytes, done.
 Total 3 (delta 0), reused 0 (delta 0)
 To git@web-git:gitosis-admin.git
    e9439fc..b0192ad  master -&gt; master

Localement, sur le client, le dépôt n'a pas encore été initialisé; Il suffit maintenant de le &quot;récupérer&quot; (pull) depuis le serveur:
Initialisation locale du dépôt:

 '''cd ~/git'''
 '''git clone web-git:portailmadagascar.git'''
 Cloning into 'portailmadagascar'...
 Initialized empty Git repository in /var/git/repositories/portailmadagascar.git/
 warning: You appear to have cloned an empty repository.

==== &quot;Peuplement&quot; de notre dépôt ====

Nous allons maintenant &quot;peupler&quot; notre dépôt (lui ajouter des fichiers):

Il suffit de copier vos fichiers dans le dossier ~/git/portailmadagascar, de les ajouter au dépôt, puis de les envoyer au serveur:

 '''git push origin master'''
 Counting objects: 6663, done.
 Delta compression using up to 4 threads.
 Compressing objects: 100% (6290/6290), done.
 Writing objects: 100% (6663/6663), 57.53 MiB | 55 KiB/s, done.
 Total 6663 (delta 747), reused 0 (delta 0)
 To web-git:portailmadagascar.git
  * [new branch]      master -&gt; master

 '''git clone web-git:portailmadagascar.git'''
 '''cd portailmadagascar'''
 '''git add .'''
 '''git commit -m &quot;Initial commit&quot;'''

&lt;code&gt;
Initial commit

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use &quot;git rm --cached &lt;file&gt;...&quot; to unstage)
#
#       new file:   .htaccess
#       new file:   WP PROJET ubermenu-wordpress-mega-menu-plugin.zip
#       new file:   article.zip
#       new file:   article/admin.js
...
&lt;/code&gt;

Avant d'envoyer au serveur, configurons nos identifiants:

 '''git config --global user.name &quot;lol&quot;'''
 '''git config --global user.email lol@serveur.tld'''
 '''git commit --amend --reset-author'''
 '''git push origin master'''

= Redmine =

== Installation ==

Nous commençons par préparer la base sql. (Cette option est facultative, vous avez l'option de configurer et peupler la base automatiquement avec dpkg). Nous avons choisi ici de garder la contrôle du nom de la base et de l'utilisateur mysql)?

&lt;code&gt;
mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7327
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database baseredmine character set utf8;
Query OK, 1 row affected (0.00 sec)

mysql&gt; create user 'mysqlredmine'@'localhost' identified by 'votre_mot-de-passe-pour-redmine';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; grant all privileges on baseredmine.* to 'mysqlredmine'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

== Installation redmine-mysql ==

 '''apt-get install redmine redmine-mysql libapache2-mod-passenger'''

Configurer la base: NON (Sauf si vous avez décidé de laisser dpkg s'occuper de ça)

 '''nano /etc/redmine/default/database.yml'''

 production:
   adapter: mysql
   database: baseredmine
   host: localhost
   port:
   username: mysqlredmine
   password: votre_mot-de-passe-pour-redmine
   encoding: utf8

Nous créons maintenant la structure de la base de donnée:

 '''cd /usr/share/redmine/'''
 '''RAILS_ENV=production rake db:migrate'''
 (in /usr/share/redmine)
 ==  Setup: migrating ==========================================================
 -- create_table(&quot;attachments&quot;, {:force=&gt;true})
    -&gt; 0.0993s
 -- create_table(&quot;auth_sources&quot;, {:force=&gt;true})
    -&gt; 0.0796s
 ...

Et nous y intégrons les données par défaut (Optionnel, mais fortement conseillé par RedMine)

 '''RAILS_ENV=production rake redmine:load_default_data'''
 (in /usr/share/redmine)
 
 Select language: bg, bs, ca, cs, da, de, el, en, en-GB, es, eu, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en] fr
 ====================================
 Default configuration data loaded.

=== Configuration de apache2 ===

Nous allons maintenant configurer apache2 pour l'intégration de RedMine. Les choix sont multiples quant à cette installation; Nous avons choisi un sous répertoire de /var/www et la création d'un sous-domaine dans notre DNS.

 '''ln -s /usr/share/redmine /var/www/redmine'''
 '''chown www-data:www-data /var/www/redmine/'''

 '''nano /etc/apache2/sites-available/redmine'''

&lt;code&gt;
&lt;VirtualHost ip_du_serveur:80&gt;
        ServerName redmine.serveur.tld
        Alias /redmine /var/www/redmine/public
        DocumentRoot /var/www/redmine/public
    &lt;Directory /var/www/redmine/public/&gt;
        PassengerAppRoot /var/www/redmine
        RailsBaseURI /
        AddHandler fastcgi-script .fcgi
        Options Indexes +ExecCGI FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    &lt;/Directory&gt;
&lt;/VirtualHost&gt;
&lt;/code&gt;

 '''/etc/apache2/sites-enabled/redmine'''
 '''service apache2 force-reload'''

Vous devriez maintenant être capable d'accéder à RedMine par votre navigateur (http://redmine.serveur.tld)

Login: admin
Mot de passe: admin

Il est fortement recommandé de changer le mot de passe...

=== Configuration des mails ===

Vous devrez maintenant configurer l'envoi des mails par Redmine (Il suffit de modifier les données à la fin du fichier pour qu'elles &quot;collent&quot; à votre configuration.

 '''cp /usr/share/doc/redmine/examples/email.yml.example /etc/redmine/default/email.yml'''
 '''nano /etc/redmine/default/email.yml'''

=== Intégrer le dépôt Gitosis ===

Il faut maintenant intégrer notre dépôt Git à Redmine:

Créez un nouveau projet:
[[Fichier:Redmine1.png|240px]]

Configurez le chemin du dépôt:
[[Fichier:Redmine3.png|240px]]

Accédez au dépôt:
[[Fichier:Redmine4.png|240px]]</text>
      <sha1>gscf16adaleuycbyuqat2vjp2l7x61a</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3887</id>
      <parentid>3882</parentid>
      <timestamp>2012-03-06T07:35:57Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Configuration des mails */  TLS</comment>
      <text xml:space="preserve" bytes="12416">Nous allons présenter dans ce tuto l'installation d'un dépôt Git et du gestionnaire de projet RedMine (optionnel évidemment...).

Debian a mis à notre disposition des paquets dans les dépôts pour ces deux applications; Comme vous êtes un bon administarteur (fainéant comme il se doit, et très attaché à apt) vous allez, tout comme moi faire l'installation avec apt-get ou aptitude.
Les avantages sont nombreux, le plus évident étant les mises à jours simplifiées et la bonne intégration à votre système.

'''Git''' est un logiciel de gestion de versions décentralisé. C'est un logiciel libre créé par Linus Torvalds, le créateur du noyau Linux, et distribué selon les termes de la licence publique générale GNU version 2 ([http://fr.wikipedia.org/wiki/Git Git]).
Nous avons choisis '''Gitolite''' qui est une version plus sécurisée de '''Git'''. '''Gitosis''' permet l'accès au dépôt Git avec un seul utilisateur (utilisateur système) et il permet de filtrer les accès au dépôt par les opérateurs via des clef SSH.

'''RedMine''' RedMmine est une application web Open Source de gestion complète de projet en mode web, développé en Ruby sur la base du framework Ruby on Rails ([http://fr.wikipedia.org/wiki/RedMine Redmine]).

= Gitosis=

== Installation de Gitosis ==

Comme toujours ches Debian, l'installation est très simple:

 '''apt-get install gitosis'''
 ...
 Les paquets supplémentaires suivants seront installés : 
   python-pkg-resources python-setuptools
 Paquets suggérés :
   git-daemon-run gitweb python-distribute python-distribute-doc
 Les NOUVEAUX paquets suivants seront installés :
   gitosis python-pkg-resources python-setuptools
 ...

== Configuration ==

Nous créons l'utilisateur &quot;git&quot;, le seul à avoir l'accès au dépôt et à la configuration:

 '''adduser --system --shell /bin/bash --gecos 'git version control' --group --disabled-password --home /var/git git'''
 Ajout de l'utilisateur système « git » (UID 113) ...
 Ajout du nouveau groupe « git » (GID 117) ...
 Ajout du nouvel utilisateur « git » (UID 113) avec pour groupe d'appartenance « git » ...
 Création du répertoire personnel « /var/git »...

=== Configuration Client/Admin ===

Pour avoir accès à la configuration des dépôts et des accès utilisateurs à distance, nous créons sur une machine cliente une clef SSH:

Création de la clef:

 '''ssh-keygen -t dsa'''
 Generating public/private dsa key pair.
 Enter file in which to save the key (/home/laurent/.ssh/id_dsa): /home/laurent/.ssh/gitosis-admin-web
 Enter passphrase (empty for no passphrase): 
 Enter same passphrase again: 
 Your identification has been saved in /home/laurent/.ssh/gitosis-admin-web.
 Your public key has been saved in /home/laurent/.ssh/gitosis-admin-web.pub.
 The key fingerprint is:
 99:xx:24:xx:ef:xx:d2:xx:87:xx:32:xx:1a:xx:b7:xx laurent@sidlol
 The key's randomart image is:
 +--[ DSA 1024]----+
 |                 |
 |                 |
 |                 |
 |    . .. o       |
 |  ..xx..S        |
 |   xx.+          |
 |  ..xx o         |
 |  .oE x x        |
 |  .+xx o         |
 +-----------------+

Il faut ensuite envoyer le clef générée sur le serveur:

 '''scp /home/laurent/.ssh/gitosis-admin-web.pub web-git:/tmp/gitosis-admin-web.pub'''
 gitosis-admin-web.pub                                                                            100%  604     0.6KB/s   00:00

'''web-git''' (ci-dessus) est le nom configuré dans ssh pour l'accès au serveur:

 '''cat ~/.ssh/config'''
 Host web-git
 HostName IP_du_serveur
 Port port_ssh
 User git
 PasswordAuthentication no
 IdentityFile ~/.ssh/gitosis-admin-web.pub

Sur le serveur:
Nous intégrons la clef SSH du &quot;client&quot; et initialisons le dépôt gitosis-admin.git.

 '''su - git'''
 git@web:~$ '''gitosis-init &lt; /tmp/gitosis-admin-web.pub'''
 Initialized empty Git repository in /var/git/repositories/gitosis-admin.git/
 Reinitialized existing Git repository in /var/git/repositories/gitosis-admin.git/

Sur le client:
Nous clonons le dépôt gitosis-admin.git localement

 '''git clone git@web-git:gitosis-admin.git'''
 Cloning into 'gitosis-admin'...
 remote: Counting objects: 5, done.
 remote: Compressing objects: 100% (4/4), done.
 remote: Total 5 (delta 0), reused 5 (delta 0)
 Receiving objects: 100% (5/5), done.

Vérification:

 '''cd gitosis-admin/'''
 '''vdir'''
 total 8
 -rw-r--r-- 1 laurent laurent   84 mars   4 11:25 gitosis.conf
 drwxr-xr-x 2 laurent laurent 4096 mars   4 11:25 keydir

=== Modification de la configuration de gitosis ===

==== Ajout d'un dépôt ====

Ajoutons maintenant un dépôt à partir du &quot;client&quot;
Nous ajoutons le dépôt &quot;portailmadagascar&quot;

 '''nano gitosis.conf'''

 [gitosis]
 
 [group gitosis-admin]
 writable = gitosis-admin
 members = laurent@sidlol
 
 [group portailmadagascar]
 writable = portailmadagascar
 members = laurent@sidlol

Activons le dépôt:

 '''git add gitosis.conf'''
 '''git commit -m 'Ajout du dépôt portailmadagascar''''
 [master b0192ad] Ajout du dépôt portailmadagascar
  Committer: Laurent L &lt;laurent@sidlol.zehome.org&gt;
 Your name and email address were configured automatically based
 on your username and hostname. Please check that they are accurate.
 You can suppress this message by setting them explicitly:
 
     git config --global user.name &quot;Your Name&quot;
     git config --global user.email you@example.com
 
 After doing this, you may fix the identity used for this commit with:
 
     git commit --amend --reset-author
 
  1 files changed, 3 insertions(+), 0 deletions(-)

Envoyons la modification sur le serveur:

 '''git push origin master'''
 Counting objects: 5, done.
 Delta compression using up to 4 threads.
 Compressing objects: 100% (3/3), done.
 Writing objects: 100% (3/3), 389 bytes, done.
 Total 3 (delta 0), reused 0 (delta 0)
 To git@web-git:gitosis-admin.git
    e9439fc..b0192ad  master -&gt; master

Localement, sur le client, le dépôt n'a pas encore été initialisé; Il suffit maintenant de le &quot;récupérer&quot; (pull) depuis le serveur:
Initialisation locale du dépôt:

 '''cd ~/git'''
 '''git clone web-git:portailmadagascar.git'''
 Cloning into 'portailmadagascar'...
 Initialized empty Git repository in /var/git/repositories/portailmadagascar.git/
 warning: You appear to have cloned an empty repository.

==== &quot;Peuplement&quot; de notre dépôt ====

Nous allons maintenant &quot;peupler&quot; notre dépôt (lui ajouter des fichiers):

Il suffit de copier vos fichiers dans le dossier ~/git/portailmadagascar, de les ajouter au dépôt, puis de les envoyer au serveur:

 '''git push origin master'''
 Counting objects: 6663, done.
 Delta compression using up to 4 threads.
 Compressing objects: 100% (6290/6290), done.
 Writing objects: 100% (6663/6663), 57.53 MiB | 55 KiB/s, done.
 Total 6663 (delta 747), reused 0 (delta 0)
 To web-git:portailmadagascar.git
  * [new branch]      master -&gt; master

 '''git clone web-git:portailmadagascar.git'''
 '''cd portailmadagascar'''
 '''git add .'''
 '''git commit -m &quot;Initial commit&quot;'''

&lt;code&gt;
Initial commit

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use &quot;git rm --cached &lt;file&gt;...&quot; to unstage)
#
#       new file:   .htaccess
#       new file:   WP PROJET ubermenu-wordpress-mega-menu-plugin.zip
#       new file:   article.zip
#       new file:   article/admin.js
...
&lt;/code&gt;

Avant d'envoyer au serveur, configurons nos identifiants:

 '''git config --global user.name &quot;lol&quot;'''
 '''git config --global user.email lol@serveur.tld'''
 '''git commit --amend --reset-author'''
 '''git push origin master'''

= Redmine =

== Installation ==

Nous commençons par préparer la base sql. (Cette option est facultative, vous avez l'option de configurer et peupler la base automatiquement avec dpkg). Nous avons choisi ici de garder la contrôle du nom de la base et de l'utilisateur mysql)?

&lt;code&gt;
mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7327
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database baseredmine character set utf8;
Query OK, 1 row affected (0.00 sec)

mysql&gt; create user 'mysqlredmine'@'localhost' identified by 'votre_mot-de-passe-pour-redmine';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; grant all privileges on baseredmine.* to 'mysqlredmine'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

== Installation redmine-mysql ==

 '''apt-get install redmine redmine-mysql libapache2-mod-passenger'''

Configurer la base: NON (Sauf si vous avez décidé de laisser dpkg s'occuper de ça)

 '''nano /etc/redmine/default/database.yml'''

 production:
   adapter: mysql
   database: baseredmine
   host: localhost
   port:
   username: mysqlredmine
   password: votre_mot-de-passe-pour-redmine
   encoding: utf8

Nous créons maintenant la structure de la base de donnée:

 '''cd /usr/share/redmine/'''
 '''RAILS_ENV=production rake db:migrate'''
 (in /usr/share/redmine)
 ==  Setup: migrating ==========================================================
 -- create_table(&quot;attachments&quot;, {:force=&gt;true})
    -&gt; 0.0993s
 -- create_table(&quot;auth_sources&quot;, {:force=&gt;true})
    -&gt; 0.0796s
 ...

Et nous y intégrons les données par défaut (Optionnel, mais fortement conseillé par RedMine)

 '''RAILS_ENV=production rake redmine:load_default_data'''
 (in /usr/share/redmine)
 
 Select language: bg, bs, ca, cs, da, de, el, en, en-GB, es, eu, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en] fr
 ====================================
 Default configuration data loaded.

=== Configuration de apache2 ===

Nous allons maintenant configurer apache2 pour l'intégration de RedMine. Les choix sont multiples quant à cette installation; Nous avons choisi un sous répertoire de /var/www et la création d'un sous-domaine dans notre DNS.

 '''ln -s /usr/share/redmine /var/www/redmine'''
 '''chown www-data:www-data /var/www/redmine/'''

 '''nano /etc/apache2/sites-available/redmine'''

&lt;code&gt;
&lt;VirtualHost ip_du_serveur:80&gt;
        ServerName redmine.serveur.tld
        Alias /redmine /var/www/redmine/public
        DocumentRoot /var/www/redmine/public
    &lt;Directory /var/www/redmine/public/&gt;
        PassengerAppRoot /var/www/redmine
        RailsBaseURI /
        AddHandler fastcgi-script .fcgi
        Options Indexes +ExecCGI FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    &lt;/Directory&gt;
&lt;/VirtualHost&gt;
&lt;/code&gt;

 '''/etc/apache2/sites-enabled/redmine'''
 '''service apache2 force-reload'''

Vous devriez maintenant être capable d'accéder à RedMine par votre navigateur (http://redmine.serveur.tld)

Login: admin
Mot de passe: admin

Il est fortement recommandé de changer le mot de passe...

=== Configuration des mails ===

Vous devrez maintenant configurer l'envoi des mails par Redmine (Il suffit de modifier les données à la fin du fichier pour qu'elles &quot;collent&quot; à votre configuration.

 '''cp /usr/share/doc/redmine/examples/email.yml.example /etc/redmine/default/email.yml'''
 '''nano /etc/redmine/default/email.yml'''

==== Activation du support tls pour la fonction mail ====

Il suffit d'ajouter un plugin en tapant les commandes suivantes:

 '''cd /usr/share/redmine/'''
 '''ruby script/plugin install git://github.com/collectiveidea/action_mailer_optional_tls.git'''
 '''db:migrate_plugins RAILS_ENV=production'''
 '''service apache2 restart'''

{{en}} Source: [http://www.redmineblog.com/articles/setup-redmine-to-send-email-using-gmail/ Setup redmine to send email using gmail]

=== Intégrer le dépôt Gitosis ===

Il faut maintenant intégrer notre dépôt Git à Redmine:

Créez un nouveau projet:
[[Fichier:Redmine1.png|240px]]

Configurez le chemin du dépôt:
[[Fichier:Redmine3.png|240px]]

Accédez au dépôt:
[[Fichier:Redmine4.png|240px]]</text>
      <sha1>nchwbtxfzpz3zmuazt95vtvyu01z0oj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3893</id>
      <parentid>3887</parentid>
      <timestamp>2012-03-06T07:50:18Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>[[Catégorie:Serveurs]]</comment>
      <text xml:space="preserve" bytes="12441">Nous allons présenter dans ce tuto l'installation d'un dépôt Git et du gestionnaire de projet RedMine (optionnel évidemment...).

Debian a mis à notre disposition des paquets dans les dépôts pour ces deux applications; Comme vous êtes un bon administarteur (fainéant comme il se doit, et très attaché à apt) vous allez, tout comme moi faire l'installation avec apt-get ou aptitude.
Les avantages sont nombreux, le plus évident étant les mises à jours simplifiées et la bonne intégration à votre système.

'''Git''' est un logiciel de gestion de versions décentralisé. C'est un logiciel libre créé par Linus Torvalds, le créateur du noyau Linux, et distribué selon les termes de la licence publique générale GNU version 2 ([http://fr.wikipedia.org/wiki/Git Git]).
Nous avons choisis '''Gitolite''' qui est une version plus sécurisée de '''Git'''. '''Gitosis''' permet l'accès au dépôt Git avec un seul utilisateur (utilisateur système) et il permet de filtrer les accès au dépôt par les opérateurs via des clef SSH.

'''RedMine''' RedMmine est une application web Open Source de gestion complète de projet en mode web, développé en Ruby sur la base du framework Ruby on Rails ([http://fr.wikipedia.org/wiki/RedMine Redmine]).

= Gitosis=

== Installation de Gitosis ==

Comme toujours ches Debian, l'installation est très simple:

 '''apt-get install gitosis'''
 ...
 Les paquets supplémentaires suivants seront installés : 
   python-pkg-resources python-setuptools
 Paquets suggérés :
   git-daemon-run gitweb python-distribute python-distribute-doc
 Les NOUVEAUX paquets suivants seront installés :
   gitosis python-pkg-resources python-setuptools
 ...

== Configuration ==

Nous créons l'utilisateur &quot;git&quot;, le seul à avoir l'accès au dépôt et à la configuration:

 '''adduser --system --shell /bin/bash --gecos 'git version control' --group --disabled-password --home /var/git git'''
 Ajout de l'utilisateur système « git » (UID 113) ...
 Ajout du nouveau groupe « git » (GID 117) ...
 Ajout du nouvel utilisateur « git » (UID 113) avec pour groupe d'appartenance « git » ...
 Création du répertoire personnel « /var/git »...

=== Configuration Client/Admin ===

Pour avoir accès à la configuration des dépôts et des accès utilisateurs à distance, nous créons sur une machine cliente une clef SSH:

Création de la clef:

 '''ssh-keygen -t dsa'''
 Generating public/private dsa key pair.
 Enter file in which to save the key (/home/laurent/.ssh/id_dsa): /home/laurent/.ssh/gitosis-admin-web
 Enter passphrase (empty for no passphrase): 
 Enter same passphrase again: 
 Your identification has been saved in /home/laurent/.ssh/gitosis-admin-web.
 Your public key has been saved in /home/laurent/.ssh/gitosis-admin-web.pub.
 The key fingerprint is:
 99:xx:24:xx:ef:xx:d2:xx:87:xx:32:xx:1a:xx:b7:xx laurent@sidlol
 The key's randomart image is:
 +--[ DSA 1024]----+
 |                 |
 |                 |
 |                 |
 |    . .. o       |
 |  ..xx..S        |
 |   xx.+          |
 |  ..xx o         |
 |  .oE x x        |
 |  .+xx o         |
 +-----------------+

Il faut ensuite envoyer le clef générée sur le serveur:

 '''scp /home/laurent/.ssh/gitosis-admin-web.pub web-git:/tmp/gitosis-admin-web.pub'''
 gitosis-admin-web.pub                                                                            100%  604     0.6KB/s   00:00

'''web-git''' (ci-dessus) est le nom configuré dans ssh pour l'accès au serveur:

 '''cat ~/.ssh/config'''
 Host web-git
 HostName IP_du_serveur
 Port port_ssh
 User git
 PasswordAuthentication no
 IdentityFile ~/.ssh/gitosis-admin-web.pub

Sur le serveur:
Nous intégrons la clef SSH du &quot;client&quot; et initialisons le dépôt gitosis-admin.git.

 '''su - git'''
 git@web:~$ '''gitosis-init &lt; /tmp/gitosis-admin-web.pub'''
 Initialized empty Git repository in /var/git/repositories/gitosis-admin.git/
 Reinitialized existing Git repository in /var/git/repositories/gitosis-admin.git/

Sur le client:
Nous clonons le dépôt gitosis-admin.git localement

 '''git clone git@web-git:gitosis-admin.git'''
 Cloning into 'gitosis-admin'...
 remote: Counting objects: 5, done.
 remote: Compressing objects: 100% (4/4), done.
 remote: Total 5 (delta 0), reused 5 (delta 0)
 Receiving objects: 100% (5/5), done.

Vérification:

 '''cd gitosis-admin/'''
 '''vdir'''
 total 8
 -rw-r--r-- 1 laurent laurent   84 mars   4 11:25 gitosis.conf
 drwxr-xr-x 2 laurent laurent 4096 mars   4 11:25 keydir

=== Modification de la configuration de gitosis ===

==== Ajout d'un dépôt ====

Ajoutons maintenant un dépôt à partir du &quot;client&quot;
Nous ajoutons le dépôt &quot;portailmadagascar&quot;

 '''nano gitosis.conf'''

 [gitosis]
 
 [group gitosis-admin]
 writable = gitosis-admin
 members = laurent@sidlol
 
 [group portailmadagascar]
 writable = portailmadagascar
 members = laurent@sidlol

Activons le dépôt:

 '''git add gitosis.conf'''
 '''git commit -m 'Ajout du dépôt portailmadagascar''''
 [master b0192ad] Ajout du dépôt portailmadagascar
  Committer: Laurent L &lt;laurent@sidlol.zehome.org&gt;
 Your name and email address were configured automatically based
 on your username and hostname. Please check that they are accurate.
 You can suppress this message by setting them explicitly:
 
     git config --global user.name &quot;Your Name&quot;
     git config --global user.email you@example.com
 
 After doing this, you may fix the identity used for this commit with:
 
     git commit --amend --reset-author
 
  1 files changed, 3 insertions(+), 0 deletions(-)

Envoyons la modification sur le serveur:

 '''git push origin master'''
 Counting objects: 5, done.
 Delta compression using up to 4 threads.
 Compressing objects: 100% (3/3), done.
 Writing objects: 100% (3/3), 389 bytes, done.
 Total 3 (delta 0), reused 0 (delta 0)
 To git@web-git:gitosis-admin.git
    e9439fc..b0192ad  master -&gt; master

Localement, sur le client, le dépôt n'a pas encore été initialisé; Il suffit maintenant de le &quot;récupérer&quot; (pull) depuis le serveur:
Initialisation locale du dépôt:

 '''cd ~/git'''
 '''git clone web-git:portailmadagascar.git'''
 Cloning into 'portailmadagascar'...
 Initialized empty Git repository in /var/git/repositories/portailmadagascar.git/
 warning: You appear to have cloned an empty repository.

==== &quot;Peuplement&quot; de notre dépôt ====

Nous allons maintenant &quot;peupler&quot; notre dépôt (lui ajouter des fichiers):

Il suffit de copier vos fichiers dans le dossier ~/git/portailmadagascar, de les ajouter au dépôt, puis de les envoyer au serveur:

 '''git push origin master'''
 Counting objects: 6663, done.
 Delta compression using up to 4 threads.
 Compressing objects: 100% (6290/6290), done.
 Writing objects: 100% (6663/6663), 57.53 MiB | 55 KiB/s, done.
 Total 6663 (delta 747), reused 0 (delta 0)
 To web-git:portailmadagascar.git
  * [new branch]      master -&gt; master

 '''git clone web-git:portailmadagascar.git'''
 '''cd portailmadagascar'''
 '''git add .'''
 '''git commit -m &quot;Initial commit&quot;'''

&lt;code&gt;
Initial commit

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use &quot;git rm --cached &lt;file&gt;...&quot; to unstage)
#
#       new file:   .htaccess
#       new file:   WP PROJET ubermenu-wordpress-mega-menu-plugin.zip
#       new file:   article.zip
#       new file:   article/admin.js
...
&lt;/code&gt;

Avant d'envoyer au serveur, configurons nos identifiants:

 '''git config --global user.name &quot;lol&quot;'''
 '''git config --global user.email lol@serveur.tld'''
 '''git commit --amend --reset-author'''
 '''git push origin master'''

= Redmine =

== Installation ==

Nous commençons par préparer la base sql. (Cette option est facultative, vous avez l'option de configurer et peupler la base automatiquement avec dpkg). Nous avons choisi ici de garder la contrôle du nom de la base et de l'utilisateur mysql)?

&lt;code&gt;
mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7327
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database baseredmine character set utf8;
Query OK, 1 row affected (0.00 sec)

mysql&gt; create user 'mysqlredmine'@'localhost' identified by 'votre_mot-de-passe-pour-redmine';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; grant all privileges on baseredmine.* to 'mysqlredmine'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

== Installation redmine-mysql ==

 '''apt-get install redmine redmine-mysql libapache2-mod-passenger'''

Configurer la base: NON (Sauf si vous avez décidé de laisser dpkg s'occuper de ça)

 '''nano /etc/redmine/default/database.yml'''

 production:
   adapter: mysql
   database: baseredmine
   host: localhost
   port:
   username: mysqlredmine
   password: votre_mot-de-passe-pour-redmine
   encoding: utf8

Nous créons maintenant la structure de la base de donnée:

 '''cd /usr/share/redmine/'''
 '''RAILS_ENV=production rake db:migrate'''
 (in /usr/share/redmine)
 ==  Setup: migrating ==========================================================
 -- create_table(&quot;attachments&quot;, {:force=&gt;true})
    -&gt; 0.0993s
 -- create_table(&quot;auth_sources&quot;, {:force=&gt;true})
    -&gt; 0.0796s
 ...

Et nous y intégrons les données par défaut (Optionnel, mais fortement conseillé par RedMine)

 '''RAILS_ENV=production rake redmine:load_default_data'''
 (in /usr/share/redmine)
 
 Select language: bg, bs, ca, cs, da, de, el, en, en-GB, es, eu, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en] fr
 ====================================
 Default configuration data loaded.

=== Configuration de apache2 ===

Nous allons maintenant configurer apache2 pour l'intégration de RedMine. Les choix sont multiples quant à cette installation; Nous avons choisi un sous répertoire de /var/www et la création d'un sous-domaine dans notre DNS.

 '''ln -s /usr/share/redmine /var/www/redmine'''
 '''chown www-data:www-data /var/www/redmine/'''

 '''nano /etc/apache2/sites-available/redmine'''

&lt;code&gt;
&lt;VirtualHost ip_du_serveur:80&gt;
        ServerName redmine.serveur.tld
        Alias /redmine /var/www/redmine/public
        DocumentRoot /var/www/redmine/public
    &lt;Directory /var/www/redmine/public/&gt;
        PassengerAppRoot /var/www/redmine
        RailsBaseURI /
        AddHandler fastcgi-script .fcgi
        Options Indexes +ExecCGI FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    &lt;/Directory&gt;
&lt;/VirtualHost&gt;
&lt;/code&gt;

 '''/etc/apache2/sites-enabled/redmine'''
 '''service apache2 force-reload'''

Vous devriez maintenant être capable d'accéder à RedMine par votre navigateur (http://redmine.serveur.tld)

Login: admin
Mot de passe: admin

Il est fortement recommandé de changer le mot de passe...

=== Configuration des mails ===

Vous devrez maintenant configurer l'envoi des mails par Redmine (Il suffit de modifier les données à la fin du fichier pour qu'elles &quot;collent&quot; à votre configuration.

 '''cp /usr/share/doc/redmine/examples/email.yml.example /etc/redmine/default/email.yml'''
 '''nano /etc/redmine/default/email.yml'''

==== Activation du support tls pour la fonction mail ====

Il suffit d'ajouter un plugin en tapant les commandes suivantes:

 '''cd /usr/share/redmine/'''
 '''ruby script/plugin install git://github.com/collectiveidea/action_mailer_optional_tls.git'''
 '''db:migrate_plugins RAILS_ENV=production'''
 '''service apache2 restart'''

{{en}} Source: [http://www.redmineblog.com/articles/setup-redmine-to-send-email-using-gmail/ Setup redmine to send email using gmail]

=== Intégrer le dépôt Gitosis ===

Il faut maintenant intégrer notre dépôt Git à Redmine:

Créez un nouveau projet:
[[Fichier:Redmine1.png|240px]]

Configurez le chemin du dépôt:
[[Fichier:Redmine3.png|240px]]

Accédez au dépôt:
[[Fichier:Redmine4.png|240px]]

[[Catégorie:Serveurs]]</text>
      <sha1>qax6y38okw5ebnbmic9v81jx6aka4aj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3897</id>
      <parentid>3893</parentid>
      <timestamp>2012-03-06T08:13:20Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Sources</comment>
      <text xml:space="preserve" bytes="12988">Nous allons présenter dans ce tuto l'installation d'un dépôt Git et du gestionnaire de projet RedMine (optionnel évidemment...).

Debian a mis à notre disposition des paquets dans les dépôts pour ces deux applications; Comme vous êtes un bon administarteur (fainéant comme il se doit, et très attaché à apt) vous allez, tout comme moi faire l'installation avec apt-get ou aptitude.
Les avantages sont nombreux, le plus évident étant les mises à jours simplifiées et la bonne intégration à votre système.

'''Git''' est un logiciel de gestion de versions décentralisé. C'est un logiciel libre créé par Linus Torvalds, le créateur du noyau Linux, et distribué selon les termes de la licence publique générale GNU version 2 ([http://fr.wikipedia.org/wiki/Git Git]).
Nous avons choisis '''Gitolite''' qui est une version plus sécurisée de '''Git'''. '''Gitosis''' permet l'accès au dépôt Git avec un seul utilisateur (utilisateur système) et il permet de filtrer les accès au dépôt par les opérateurs via des clef SSH.

'''RedMine''' RedMmine est une application web Open Source de gestion complète de projet en mode web, développé en Ruby sur la base du framework Ruby on Rails ([http://fr.wikipedia.org/wiki/RedMine Redmine]).

= Gitosis=

== Installation de Gitosis ==

Comme toujours ches Debian, l'installation est très simple:

 '''apt-get install gitosis'''
 ...
 Les paquets supplémentaires suivants seront installés : 
   python-pkg-resources python-setuptools
 Paquets suggérés :
   git-daemon-run gitweb python-distribute python-distribute-doc
 Les NOUVEAUX paquets suivants seront installés :
   gitosis python-pkg-resources python-setuptools
 ...

== Configuration ==

Nous créons l'utilisateur &quot;git&quot;, le seul à avoir l'accès au dépôt et à la configuration:

 '''adduser --system --shell /bin/bash --gecos 'git version control' --group --disabled-password --home /var/git git'''
 Ajout de l'utilisateur système « git » (UID 113) ...
 Ajout du nouveau groupe « git » (GID 117) ...
 Ajout du nouvel utilisateur « git » (UID 113) avec pour groupe d'appartenance « git » ...
 Création du répertoire personnel « /var/git »...

=== Configuration Client/Admin ===

Pour avoir accès à la configuration des dépôts et des accès utilisateurs à distance, nous créons sur une machine cliente une clef SSH:

Création de la clef:

 '''ssh-keygen -t dsa'''
 Generating public/private dsa key pair.
 Enter file in which to save the key (/home/laurent/.ssh/id_dsa): /home/laurent/.ssh/gitosis-admin-web
 Enter passphrase (empty for no passphrase): 
 Enter same passphrase again: 
 Your identification has been saved in /home/laurent/.ssh/gitosis-admin-web.
 Your public key has been saved in /home/laurent/.ssh/gitosis-admin-web.pub.
 The key fingerprint is:
 99:xx:24:xx:ef:xx:d2:xx:87:xx:32:xx:1a:xx:b7:xx laurent@sidlol
 The key's randomart image is:
 +--[ DSA 1024]----+
 |                 |
 |                 |
 |                 |
 |    . .. o       |
 |  ..xx..S        |
 |   xx.+          |
 |  ..xx o         |
 |  .oE x x        |
 |  .+xx o         |
 +-----------------+

Il faut ensuite envoyer le clef générée sur le serveur:

 '''scp /home/laurent/.ssh/gitosis-admin-web.pub web-git:/tmp/gitosis-admin-web.pub'''
 gitosis-admin-web.pub                                                                            100%  604     0.6KB/s   00:00

'''web-git''' (ci-dessus) est le nom configuré dans ssh pour l'accès au serveur:

 '''cat ~/.ssh/config'''
 Host web-git
 HostName IP_du_serveur
 Port port_ssh
 User git
 PasswordAuthentication no
 IdentityFile ~/.ssh/gitosis-admin-web.pub

Sur le serveur:
Nous intégrons la clef SSH du &quot;client&quot; et initialisons le dépôt gitosis-admin.git.

 '''su - git'''
 git@web:~$ '''gitosis-init &lt; /tmp/gitosis-admin-web.pub'''
 Initialized empty Git repository in /var/git/repositories/gitosis-admin.git/
 Reinitialized existing Git repository in /var/git/repositories/gitosis-admin.git/

Sur le client:
Nous clonons le dépôt gitosis-admin.git localement

 '''git clone git@web-git:gitosis-admin.git'''
 Cloning into 'gitosis-admin'...
 remote: Counting objects: 5, done.
 remote: Compressing objects: 100% (4/4), done.
 remote: Total 5 (delta 0), reused 5 (delta 0)
 Receiving objects: 100% (5/5), done.

Vérification:

 '''cd gitosis-admin/'''
 '''vdir'''
 total 8
 -rw-r--r-- 1 laurent laurent   84 mars   4 11:25 gitosis.conf
 drwxr-xr-x 2 laurent laurent 4096 mars   4 11:25 keydir

=== Modification de la configuration de gitosis ===

==== Ajout d'un dépôt ====

Ajoutons maintenant un dépôt à partir du &quot;client&quot;
Nous ajoutons le dépôt &quot;portailmadagascar&quot;

 '''nano gitosis.conf'''

 [gitosis]
 
 [group gitosis-admin]
 writable = gitosis-admin
 members = laurent@sidlol
 
 [group portailmadagascar]
 writable = portailmadagascar
 members = laurent@sidlol

Activons le dépôt:

 '''git add gitosis.conf'''
 '''git commit -m 'Ajout du dépôt portailmadagascar''''
 [master b0192ad] Ajout du dépôt portailmadagascar
  Committer: Laurent L &lt;laurent@sidlol.zehome.org&gt;
 Your name and email address were configured automatically based
 on your username and hostname. Please check that they are accurate.
 You can suppress this message by setting them explicitly:
 
     git config --global user.name &quot;Your Name&quot;
     git config --global user.email you@example.com
 
 After doing this, you may fix the identity used for this commit with:
 
     git commit --amend --reset-author
 
  1 files changed, 3 insertions(+), 0 deletions(-)

Envoyons la modification sur le serveur:

 '''git push origin master'''
 Counting objects: 5, done.
 Delta compression using up to 4 threads.
 Compressing objects: 100% (3/3), done.
 Writing objects: 100% (3/3), 389 bytes, done.
 Total 3 (delta 0), reused 0 (delta 0)
 To git@web-git:gitosis-admin.git
    e9439fc..b0192ad  master -&gt; master

Localement, sur le client, le dépôt n'a pas encore été initialisé; Il suffit maintenant de le &quot;récupérer&quot; (pull) depuis le serveur:
Initialisation locale du dépôt:

 '''cd ~/git'''
 '''git clone web-git:portailmadagascar.git'''
 Cloning into 'portailmadagascar'...
 Initialized empty Git repository in /var/git/repositories/portailmadagascar.git/
 warning: You appear to have cloned an empty repository.

==== &quot;Peuplement&quot; de notre dépôt ====

Nous allons maintenant &quot;peupler&quot; notre dépôt (lui ajouter des fichiers):

Il suffit de copier vos fichiers dans le dossier ~/git/portailmadagascar, de les ajouter au dépôt, puis de les envoyer au serveur:

 '''git push origin master'''
 Counting objects: 6663, done.
 Delta compression using up to 4 threads.
 Compressing objects: 100% (6290/6290), done.
 Writing objects: 100% (6663/6663), 57.53 MiB | 55 KiB/s, done.
 Total 6663 (delta 747), reused 0 (delta 0)
 To web-git:portailmadagascar.git
  * [new branch]      master -&gt; master

 '''git clone web-git:portailmadagascar.git'''
 '''cd portailmadagascar'''
 '''git add .'''
 '''git commit -m &quot;Initial commit&quot;'''

&lt;code&gt;
Initial commit

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use &quot;git rm --cached &lt;file&gt;...&quot; to unstage)
#
#       new file:   .htaccess
#       new file:   WP PROJET ubermenu-wordpress-mega-menu-plugin.zip
#       new file:   article.zip
#       new file:   article/admin.js
...
&lt;/code&gt;

Avant d'envoyer au serveur, configurons nos identifiants:

 '''git config --global user.name &quot;lol&quot;'''
 '''git config --global user.email lol@serveur.tld'''
 '''git commit --amend --reset-author'''
 '''git push origin master'''

= Redmine =

== Installation ==

Nous commençons par préparer la base sql. (Cette option est facultative, vous avez l'option de configurer et peupler la base automatiquement avec dpkg). Nous avons choisi ici de garder la contrôle du nom de la base et de l'utilisateur mysql)?

&lt;code&gt;
mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7327
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database baseredmine character set utf8;
Query OK, 1 row affected (0.00 sec)

mysql&gt; create user 'mysqlredmine'@'localhost' identified by 'votre_mot-de-passe-pour-redmine';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; grant all privileges on baseredmine.* to 'mysqlredmine'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

== Installation redmine-mysql ==

 '''apt-get install redmine redmine-mysql libapache2-mod-passenger'''

Configurer la base: NON (Sauf si vous avez décidé de laisser dpkg s'occuper de ça)

 '''nano /etc/redmine/default/database.yml'''

 production:
   adapter: mysql
   database: baseredmine
   host: localhost
   port:
   username: mysqlredmine
   password: votre_mot-de-passe-pour-redmine
   encoding: utf8

Nous créons maintenant la structure de la base de donnée:

 '''cd /usr/share/redmine/'''
 '''RAILS_ENV=production rake db:migrate'''
 (in /usr/share/redmine)
 ==  Setup: migrating ==========================================================
 -- create_table(&quot;attachments&quot;, {:force=&gt;true})
    -&gt; 0.0993s
 -- create_table(&quot;auth_sources&quot;, {:force=&gt;true})
    -&gt; 0.0796s
 ...

Et nous y intégrons les données par défaut (Optionnel, mais fortement conseillé par RedMine)

 '''RAILS_ENV=production rake redmine:load_default_data'''
 (in /usr/share/redmine)
 
 Select language: bg, bs, ca, cs, da, de, el, en, en-GB, es, eu, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en] fr
 ====================================
 Default configuration data loaded.

=== Configuration de apache2 ===

Nous allons maintenant configurer apache2 pour l'intégration de RedMine. Les choix sont multiples quant à cette installation; Nous avons choisi un sous répertoire de /var/www et la création d'un sous-domaine dans notre DNS.

 '''ln -s /usr/share/redmine /var/www/redmine'''
 '''chown www-data:www-data /var/www/redmine/'''

 '''nano /etc/apache2/sites-available/redmine'''

&lt;code&gt;
&lt;VirtualHost ip_du_serveur:80&gt;
        ServerName redmine.serveur.tld
        Alias /redmine /var/www/redmine/public
        DocumentRoot /var/www/redmine/public
    &lt;Directory /var/www/redmine/public/&gt;
        PassengerAppRoot /var/www/redmine
        RailsBaseURI /
        AddHandler fastcgi-script .fcgi
        Options Indexes +ExecCGI FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    &lt;/Directory&gt;
&lt;/VirtualHost&gt;
&lt;/code&gt;

 '''/etc/apache2/sites-enabled/redmine'''
 '''service apache2 force-reload'''

Vous devriez maintenant être capable d'accéder à RedMine par votre navigateur (http://redmine.serveur.tld)

Login: admin
Mot de passe: admin

Il est fortement recommandé de changer le mot de passe...

=== Configuration des mails ===

Vous devrez maintenant configurer l'envoi des mails par Redmine (Il suffit de modifier les données à la fin du fichier pour qu'elles &quot;collent&quot; à votre configuration.

 '''cp /usr/share/doc/redmine/examples/email.yml.example /etc/redmine/default/email.yml'''
 '''nano /etc/redmine/default/email.yml'''

==== Activation du support tls pour la fonction mail ====

Il suffit d'ajouter un plugin en tapant les commandes suivantes:

 '''cd /usr/share/redmine/'''
 '''ruby script/plugin install git://github.com/collectiveidea/action_mailer_optional_tls.git'''
 '''db:migrate_plugins RAILS_ENV=production'''
 '''service apache2 restart'''

{{en}} Source: [http://www.redmineblog.com/articles/setup-redmine-to-send-email-using-gmail/ Setup redmine to send email using gmail]

=== Intégrer le dépôt Gitosis ===

Il faut maintenant intégrer notre dépôt Git à Redmine:

Créez un nouveau projet:
[[Fichier:Redmine1.png|240px]]

Configurez le chemin du dépôt:
[[Fichier:Redmine3.png|240px]]

Accédez au dépôt:
[[Fichier:Redmine4.png|240px]]

= Sources =

{{en}} [http://blog.mathiashabluetzel.ch/2011/09/01/installing-redmine-and-gitosis-on-a-debian-root-server-with-mysql/ Installing redmine and gitosis on a debian root server with mysql/]

{{fr}} [http://www.mickael-allain.fr/index.php?post/2010/03/06/Installation-et-configuration-de-son-serveur-Git-avec-Gitosis-sous-Debian-5 Installation et configuration de son serveur Git avec Gitosis sous Debian 5]

{{fr}} [http://www.sheevaboite.fr/article84/installer-serveur-git-auto-heberge-partie-1 Installer un serveur git auto hebergé]

[[Catégorie:Serveurs]]</text>
      <sha1>j7bme6g2s8iynu3cz0xkp7kehimivbf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3918</id>
      <parentid>3897</parentid>
      <timestamp>2012-03-10T06:17:15Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Déployer un site web à partir de votre dépôt</comment>
      <text xml:space="preserve" bytes="13999">Nous allons présenter dans ce tuto l'installation d'un dépôt Git et du gestionnaire de projet RedMine (optionnel évidemment...).

Debian a mis à notre disposition des paquets dans les dépôts pour ces deux applications; Comme vous êtes un bon administarteur (fainéant comme il se doit, et très attaché à apt) vous allez, tout comme moi faire l'installation avec apt-get ou aptitude.
Les avantages sont nombreux, le plus évident étant les mises à jours simplifiées et la bonne intégration à votre système.

'''Git''' est un logiciel de gestion de versions décentralisé. C'est un logiciel libre créé par Linus Torvalds, le créateur du noyau Linux, et distribué selon les termes de la licence publique générale GNU version 2 ([http://fr.wikipedia.org/wiki/Git Git]).
Nous avons choisis '''Gitolite''' qui est une version plus sécurisée de '''Git'''. '''Gitosis''' permet l'accès au dépôt Git avec un seul utilisateur (utilisateur système) et il permet de filtrer les accès au dépôt par les opérateurs via des clef SSH.

'''RedMine''' RedMmine est une application web Open Source de gestion complète de projet en mode web, développé en Ruby sur la base du framework Ruby on Rails ([http://fr.wikipedia.org/wiki/RedMine Redmine]).

= Gitosis=

== Installation de Gitosis ==

Comme toujours ches Debian, l'installation est très simple:

 '''apt-get install gitosis'''
 ...
 Les paquets supplémentaires suivants seront installés : 
   python-pkg-resources python-setuptools
 Paquets suggérés :
   git-daemon-run gitweb python-distribute python-distribute-doc
 Les NOUVEAUX paquets suivants seront installés :
   gitosis python-pkg-resources python-setuptools
 ...

== Configuration ==

Nous créons l'utilisateur &quot;git&quot;, le seul à avoir l'accès au dépôt et à la configuration:

 '''adduser --system --shell /bin/bash --gecos 'git version control' --group --disabled-password --home /var/git git'''
 Ajout de l'utilisateur système « git » (UID 113) ...
 Ajout du nouveau groupe « git » (GID 117) ...
 Ajout du nouvel utilisateur « git » (UID 113) avec pour groupe d'appartenance « git » ...
 Création du répertoire personnel « /var/git »...

=== Configuration Client/Admin ===

Pour avoir accès à la configuration des dépôts et des accès utilisateurs à distance, nous créons sur une machine cliente une clef SSH:

Création de la clef:

 '''ssh-keygen -t dsa'''
 Generating public/private dsa key pair.
 Enter file in which to save the key (/home/laurent/.ssh/id_dsa): /home/laurent/.ssh/gitosis-admin-web
 Enter passphrase (empty for no passphrase): 
 Enter same passphrase again: 
 Your identification has been saved in /home/laurent/.ssh/gitosis-admin-web.
 Your public key has been saved in /home/laurent/.ssh/gitosis-admin-web.pub.
 The key fingerprint is:
 99:xx:24:xx:ef:xx:d2:xx:87:xx:32:xx:1a:xx:b7:xx laurent@sidlol
 The key's randomart image is:
 +--[ DSA 1024]----+
 |                 |
 |                 |
 |                 |
 |    . .. o       |
 |  ..xx..S        |
 |   xx.+          |
 |  ..xx o         |
 |  .oE x x        |
 |  .+xx o         |
 +-----------------+

Il faut ensuite envoyer le clef générée sur le serveur:

 '''scp /home/laurent/.ssh/gitosis-admin-web.pub web-git:/tmp/gitosis-admin-web.pub'''
 gitosis-admin-web.pub                                                                            100%  604     0.6KB/s   00:00

'''web-git''' (ci-dessus) est le nom configuré dans ssh pour l'accès au serveur:

 '''cat ~/.ssh/config'''
 Host web-git
 HostName IP_du_serveur
 Port port_ssh
 User git
 PasswordAuthentication no
 IdentityFile ~/.ssh/gitosis-admin-web.pub

Sur le serveur:
Nous intégrons la clef SSH du &quot;client&quot; et initialisons le dépôt gitosis-admin.git.

 '''su - git'''
 git@web:~$ '''gitosis-init &lt; /tmp/gitosis-admin-web.pub'''
 Initialized empty Git repository in /var/git/repositories/gitosis-admin.git/
 Reinitialized existing Git repository in /var/git/repositories/gitosis-admin.git/

Sur le client:
Nous clonons le dépôt gitosis-admin.git localement

 '''git clone git@web-git:gitosis-admin.git'''
 Cloning into 'gitosis-admin'...
 remote: Counting objects: 5, done.
 remote: Compressing objects: 100% (4/4), done.
 remote: Total 5 (delta 0), reused 5 (delta 0)
 Receiving objects: 100% (5/5), done.

Vérification:

 '''cd gitosis-admin/'''
 '''vdir'''
 total 8
 -rw-r--r-- 1 laurent laurent   84 mars   4 11:25 gitosis.conf
 drwxr-xr-x 2 laurent laurent 4096 mars   4 11:25 keydir

=== Utilisation de gitosis ===

==== Ajouter un dépôt ====

Ajoutons maintenant un dépôt à partir du &quot;client&quot;
Nous ajoutons le dépôt &quot;portailmadagascar&quot;

 '''nano gitosis.conf'''

 [gitosis]
 
 [group gitosis-admin]
 writable = gitosis-admin
 members = laurent@sidlol
 
 [group portailmadagascar]
 writable = portailmadagascar
 members = laurent@sidlol

Activons le dépôt:

 '''git add gitosis.conf'''
 '''git commit -m 'Ajout du dépôt portailmadagascar''''
 [master b0192ad] Ajout du dépôt portailmadagascar
  Committer: Laurent L &lt;laurent@sidlol.zehome.org&gt;
 Your name and email address were configured automatically based
 on your username and hostname. Please check that they are accurate.
 You can suppress this message by setting them explicitly:
 
     git config --global user.name &quot;Your Name&quot;
     git config --global user.email you@example.com
 
 After doing this, you may fix the identity used for this commit with:
 
     git commit --amend --reset-author
 
  1 files changed, 3 insertions(+), 0 deletions(-)

Envoyons la modification sur le serveur:

 '''git push origin master'''
 Counting objects: 5, done.
 Delta compression using up to 4 threads.
 Compressing objects: 100% (3/3), done.
 Writing objects: 100% (3/3), 389 bytes, done.
 Total 3 (delta 0), reused 0 (delta 0)
 To git@web-git:gitosis-admin.git
    e9439fc..b0192ad  master -&gt; master

Localement, sur le client, le dépôt n'a pas encore été initialisé; Il suffit maintenant de le &quot;récupérer&quot; (pull) depuis le serveur:
Initialisation locale du dépôt:

 '''cd ~/git'''
 '''git clone web-git:portailmadagascar.git'''
 Cloning into 'portailmadagascar'...
 Initialized empty Git repository in /var/git/repositories/portailmadagascar.git/
 warning: You appear to have cloned an empty repository.

===== &quot;Peupler&quot; votre dépôt =====

Nous allons maintenant &quot;peupler&quot; notre dépôt (lui ajouter des fichiers):

Il suffit de copier vos fichiers dans le dossier ~/git/portailmadagascar, de les ajouter au dépôt, puis de les envoyer au serveur:

 '''git push origin master'''
 Counting objects: 6663, done.
 Delta compression using up to 4 threads.
 Compressing objects: 100% (6290/6290), done.
 Writing objects: 100% (6663/6663), 57.53 MiB | 55 KiB/s, done.
 Total 6663 (delta 747), reused 0 (delta 0)
 To web-git:portailmadagascar.git
  * [new branch]      master -&gt; master

 '''git clone web-git:portailmadagascar.git'''
 '''cd portailmadagascar'''
 '''git add .'''
 '''git commit -m &quot;Initial commit&quot;'''

&lt;code&gt;
Initial commit

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use &quot;git rm --cached &lt;file&gt;...&quot; to unstage)
#
#       new file:   .htaccess
#       new file:   WP PROJET ubermenu-wordpress-mega-menu-plugin.zip
#       new file:   article.zip
#       new file:   article/admin.js
...
&lt;/code&gt;

Avant d'envoyer au serveur, configurons nos identifiants:

 '''git config --global user.name &quot;lol&quot;'''
 '''git config --global user.email lol@serveur.tld'''
 '''git commit --amend --reset-author'''
 '''git push origin master'''

==== Déployer un site web à partir de votre dépôt ====

Git va beaucoup plus loin que la simple gestion des dépôts, nous allons détailler le déploiement d'un site à partir de Git:
Tout d'abord nous peuplons notre site avec le dépôt initial:

 cd /var/www
 git clone /var/git/repositories/votresite.git votresite
 chown -R www-data:www-data /var/www/votresite

Nous créons ensuite un script chargé de mettre à jour le site:

 # nano /usr/local/bin/MAJ-Votresite

 #!/bin/bash
 cd /var/www/votresite
 git pull
 exit

Nous le rendons exécutable:
 chmod a+x /usr/local/bin/MAJ-Votresite

Nous créons le &quot;hooks&quot; post-receive qui sera chargé de lancer la MAJ:

 nano /var/git/repositories/votresite.git/hooks/post-receive

 #!/bin/sh
 cd /usr/local/bin/
 sudo -u www-data MAJ-Votresite

Nous donnons à git le droit d'utiliser sudo pour le script:

 visudo

 git  ALL = (www-data) NOPASSWD: /usr/local/bin/MAJ-Votresite

Maintenant, à chaque mise à jour du dépôt, le site web sera lui aussi automatiquement mis à jour!

= Redmine =

== Installation ==

Nous commençons par préparer la base sql. (Cette option est facultative, vous avez l'option de configurer et peupler la base automatiquement avec dpkg). Nous avons choisi ici de garder la contrôle du nom de la base et de l'utilisateur mysql)?

&lt;code&gt;
mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7327
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database baseredmine character set utf8;
Query OK, 1 row affected (0.00 sec)

mysql&gt; create user 'mysqlredmine'@'localhost' identified by 'votre_mot-de-passe-pour-redmine';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; grant all privileges on baseredmine.* to 'mysqlredmine'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

== Installation redmine-mysql ==

 '''apt-get install redmine redmine-mysql libapache2-mod-passenger'''

Configurer la base: NON (Sauf si vous avez décidé de laisser dpkg s'occuper de ça)

 '''nano /etc/redmine/default/database.yml'''

 production:
   adapter: mysql
   database: baseredmine
   host: localhost
   port:
   username: mysqlredmine
   password: votre_mot-de-passe-pour-redmine
   encoding: utf8

Nous créons maintenant la structure de la base de donnée:

 '''cd /usr/share/redmine/'''
 '''RAILS_ENV=production rake db:migrate'''
 (in /usr/share/redmine)
 ==  Setup: migrating ==========================================================
 -- create_table(&quot;attachments&quot;, {:force=&gt;true})
    -&gt; 0.0993s
 -- create_table(&quot;auth_sources&quot;, {:force=&gt;true})
    -&gt; 0.0796s
 ...

Et nous y intégrons les données par défaut (Optionnel, mais fortement conseillé par RedMine)

 '''RAILS_ENV=production rake redmine:load_default_data'''
 (in /usr/share/redmine)
 
 Select language: bg, bs, ca, cs, da, de, el, en, en-GB, es, eu, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en] fr
 ====================================
 Default configuration data loaded.

=== Configuration de apache2 ===

Nous allons maintenant configurer apache2 pour l'intégration de RedMine. Les choix sont multiples quant à cette installation; Nous avons choisi un sous répertoire de /var/www et la création d'un sous-domaine dans notre DNS.

 '''ln -s /usr/share/redmine /var/www/redmine'''
 '''chown www-data:www-data /var/www/redmine/'''

 '''nano /etc/apache2/sites-available/redmine'''

&lt;code&gt;
&lt;VirtualHost ip_du_serveur:80&gt;
        ServerName redmine.serveur.tld
        Alias /redmine /var/www/redmine/public
        DocumentRoot /var/www/redmine/public
    &lt;Directory /var/www/redmine/public/&gt;
        PassengerAppRoot /var/www/redmine
        RailsBaseURI /
        AddHandler fastcgi-script .fcgi
        Options Indexes +ExecCGI FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    &lt;/Directory&gt;
&lt;/VirtualHost&gt;
&lt;/code&gt;

 '''/etc/apache2/sites-enabled/redmine'''
 '''service apache2 force-reload'''

Vous devriez maintenant être capable d'accéder à RedMine par votre navigateur (http://redmine.serveur.tld)

Login: admin
Mot de passe: admin

Il est fortement recommandé de changer le mot de passe...

=== Configuration des mails ===

Vous devrez maintenant configurer l'envoi des mails par Redmine (Il suffit de modifier les données à la fin du fichier pour qu'elles &quot;collent&quot; à votre configuration.

 '''cp /usr/share/doc/redmine/examples/email.yml.example /etc/redmine/default/email.yml'''
 '''nano /etc/redmine/default/email.yml'''

==== Activation du support tls pour la fonction mail ====

Il suffit d'ajouter un plugin en tapant les commandes suivantes:

 '''cd /usr/share/redmine/'''
 '''ruby script/plugin install git://github.com/collectiveidea/action_mailer_optional_tls.git'''
 '''db:migrate_plugins RAILS_ENV=production'''
 '''service apache2 restart'''

{{en}} Source: [http://www.redmineblog.com/articles/setup-redmine-to-send-email-using-gmail/ Setup redmine to send email using gmail]

=== Intégrer le dépôt Gitosis ===

Il faut maintenant intégrer notre dépôt Git à Redmine:

Créez un nouveau projet:
[[Fichier:Redmine1.png|240px]]

Configurez le chemin du dépôt:
[[Fichier:Redmine3.png|240px]]

Accédez au dépôt:
[[Fichier:Redmine4.png|240px]]

= Sources =

{{en}} [http://blog.mathiashabluetzel.ch/2011/09/01/installing-redmine-and-gitosis-on-a-debian-root-server-with-mysql/ Installing redmine and gitosis on a debian root server with mysql/]

{{fr}} [http://www.mickael-allain.fr/index.php?post/2010/03/06/Installation-et-configuration-de-son-serveur-Git-avec-Gitosis-sous-Debian-5 Installation et configuration de son serveur Git avec Gitosis sous Debian 5]

{{fr}} [http://www.sheevaboite.fr/article84/installer-serveur-git-auto-heberge-partie-1 Installer un serveur git auto hebergé]

[[Catégorie:Serveurs]]</text>
      <sha1>5k2oi8yq66n7kcy0h2ibwq3hl64pnj6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3947</id>
      <parentid>3918</parentid>
      <timestamp>2012-03-15T08:38:01Z</timestamp>
      <contributor>
        <username>Jeanfei</username>
        <id>221</id>
      </contributor>
      <comment>/* Configuration Client/Admin */</comment>
      <text xml:space="preserve" bytes="13995">Nous allons présenter dans ce tuto l'installation d'un dépôt Git et du gestionnaire de projet RedMine (optionnel évidemment...).

Debian a mis à notre disposition des paquets dans les dépôts pour ces deux applications; Comme vous êtes un bon administarteur (fainéant comme il se doit, et très attaché à apt) vous allez, tout comme moi faire l'installation avec apt-get ou aptitude.
Les avantages sont nombreux, le plus évident étant les mises à jours simplifiées et la bonne intégration à votre système.

'''Git''' est un logiciel de gestion de versions décentralisé. C'est un logiciel libre créé par Linus Torvalds, le créateur du noyau Linux, et distribué selon les termes de la licence publique générale GNU version 2 ([http://fr.wikipedia.org/wiki/Git Git]).
Nous avons choisis '''Gitolite''' qui est une version plus sécurisée de '''Git'''. '''Gitosis''' permet l'accès au dépôt Git avec un seul utilisateur (utilisateur système) et il permet de filtrer les accès au dépôt par les opérateurs via des clef SSH.

'''RedMine''' RedMmine est une application web Open Source de gestion complète de projet en mode web, développé en Ruby sur la base du framework Ruby on Rails ([http://fr.wikipedia.org/wiki/RedMine Redmine]).

= Gitosis=

== Installation de Gitosis ==

Comme toujours ches Debian, l'installation est très simple:

 '''apt-get install gitosis'''
 ...
 Les paquets supplémentaires suivants seront installés : 
   python-pkg-resources python-setuptools
 Paquets suggérés :
   git-daemon-run gitweb python-distribute python-distribute-doc
 Les NOUVEAUX paquets suivants seront installés :
   gitosis python-pkg-resources python-setuptools
 ...

== Configuration ==

Nous créons l'utilisateur &quot;git&quot;, le seul à avoir l'accès au dépôt et à la configuration:

 '''adduser --system --shell /bin/bash --gecos 'git version control' --group --disabled-password --home /var/git git'''
 Ajout de l'utilisateur système « git » (UID 113) ...
 Ajout du nouveau groupe « git » (GID 117) ...
 Ajout du nouvel utilisateur « git » (UID 113) avec pour groupe d'appartenance « git » ...
 Création du répertoire personnel « /var/git »...

=== Configuration Client/Admin ===

Pour avoir accès à la configuration des dépôts et des accès utilisateurs à distance, nous créons sur une machine cliente une clef SSH:

Création de la clef:

 '''ssh-keygen -t dsa'''
 Generating public/private dsa key pair.
 Enter file in which to save the key (/home/laurent/.ssh/id_dsa): /home/laurent/.ssh/gitosis-admin-web
 Enter passphrase (empty for no passphrase): 
 Enter same passphrase again: 
 Your identification has been saved in /home/laurent/.ssh/gitosis-admin-web.
 Your public key has been saved in /home/laurent/.ssh/gitosis-admin-web.pub.
 The key fingerprint is:
 99:xx:24:xx:ef:xx:d2:xx:87:xx:32:xx:1a:xx:b7:xx laurent@sidlol
 The key's randomart image is:
 +--[ DSA 1024]----+
 |                 |
 |                 |
 |                 |
 |    . .. o       |
 |  ..xx..S        |
 |   xx.+          |
 |  ..xx o         |
 |  .oE x x        |
 |  .+xx o         |
 +-----------------+

Il faut ensuite envoyer le clef générée sur le serveur:

 '''scp /home/laurent/.ssh/gitosis-admin-web.pub web-git:/tmp/gitosis-admin-web.pub'''
 gitosis-admin-web.pub                                                                            100%  604     0.6KB/s   00:00

'''web-git''' (ci-dessus) est le nom configuré dans ssh pour l'accès au serveur:

 '''cat ~/.ssh/config'''
 Host web-git
 HostName IP_du_serveur
 Port port_ssh
 User git
 PasswordAuthentication no
 IdentityFile ~/.ssh/gitosis-admin-web

Sur le serveur:
Nous intégrons la clef SSH du &quot;client&quot; et initialisons le dépôt gitosis-admin.git.

 '''su - git'''
 git@web:~$ '''gitosis-init &lt; /tmp/gitosis-admin-web.pub'''
 Initialized empty Git repository in /var/git/repositories/gitosis-admin.git/
 Reinitialized existing Git repository in /var/git/repositories/gitosis-admin.git/

Sur le client:
Nous clonons le dépôt gitosis-admin.git localement

 '''git clone git@web-git:gitosis-admin.git'''
 Cloning into 'gitosis-admin'...
 remote: Counting objects: 5, done.
 remote: Compressing objects: 100% (4/4), done.
 remote: Total 5 (delta 0), reused 5 (delta 0)
 Receiving objects: 100% (5/5), done.

Vérification:

 '''cd gitosis-admin/'''
 '''vdir'''
 total 8
 -rw-r--r-- 1 laurent laurent   84 mars   4 11:25 gitosis.conf
 drwxr-xr-x 2 laurent laurent 4096 mars   4 11:25 keydir

=== Utilisation de gitosis ===

==== Ajouter un dépôt ====

Ajoutons maintenant un dépôt à partir du &quot;client&quot;
Nous ajoutons le dépôt &quot;portailmadagascar&quot;

 '''nano gitosis.conf'''

 [gitosis]
 
 [group gitosis-admin]
 writable = gitosis-admin
 members = laurent@sidlol
 
 [group portailmadagascar]
 writable = portailmadagascar
 members = laurent@sidlol

Activons le dépôt:

 '''git add gitosis.conf'''
 '''git commit -m 'Ajout du dépôt portailmadagascar''''
 [master b0192ad] Ajout du dépôt portailmadagascar
  Committer: Laurent L &lt;laurent@sidlol.zehome.org&gt;
 Your name and email address were configured automatically based
 on your username and hostname. Please check that they are accurate.
 You can suppress this message by setting them explicitly:
 
     git config --global user.name &quot;Your Name&quot;
     git config --global user.email you@example.com
 
 After doing this, you may fix the identity used for this commit with:
 
     git commit --amend --reset-author
 
  1 files changed, 3 insertions(+), 0 deletions(-)

Envoyons la modification sur le serveur:

 '''git push origin master'''
 Counting objects: 5, done.
 Delta compression using up to 4 threads.
 Compressing objects: 100% (3/3), done.
 Writing objects: 100% (3/3), 389 bytes, done.
 Total 3 (delta 0), reused 0 (delta 0)
 To git@web-git:gitosis-admin.git
    e9439fc..b0192ad  master -&gt; master

Localement, sur le client, le dépôt n'a pas encore été initialisé; Il suffit maintenant de le &quot;récupérer&quot; (pull) depuis le serveur:
Initialisation locale du dépôt:

 '''cd ~/git'''
 '''git clone web-git:portailmadagascar.git'''
 Cloning into 'portailmadagascar'...
 Initialized empty Git repository in /var/git/repositories/portailmadagascar.git/
 warning: You appear to have cloned an empty repository.

===== &quot;Peupler&quot; votre dépôt =====

Nous allons maintenant &quot;peupler&quot; notre dépôt (lui ajouter des fichiers):

Il suffit de copier vos fichiers dans le dossier ~/git/portailmadagascar, de les ajouter au dépôt, puis de les envoyer au serveur:

 '''git push origin master'''
 Counting objects: 6663, done.
 Delta compression using up to 4 threads.
 Compressing objects: 100% (6290/6290), done.
 Writing objects: 100% (6663/6663), 57.53 MiB | 55 KiB/s, done.
 Total 6663 (delta 747), reused 0 (delta 0)
 To web-git:portailmadagascar.git
  * [new branch]      master -&gt; master

 '''git clone web-git:portailmadagascar.git'''
 '''cd portailmadagascar'''
 '''git add .'''
 '''git commit -m &quot;Initial commit&quot;'''

&lt;code&gt;
Initial commit

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use &quot;git rm --cached &lt;file&gt;...&quot; to unstage)
#
#       new file:   .htaccess
#       new file:   WP PROJET ubermenu-wordpress-mega-menu-plugin.zip
#       new file:   article.zip
#       new file:   article/admin.js
...
&lt;/code&gt;

Avant d'envoyer au serveur, configurons nos identifiants:

 '''git config --global user.name &quot;lol&quot;'''
 '''git config --global user.email lol@serveur.tld'''
 '''git commit --amend --reset-author'''
 '''git push origin master'''

==== Déployer un site web à partir de votre dépôt ====

Git va beaucoup plus loin que la simple gestion des dépôts, nous allons détailler le déploiement d'un site à partir de Git:
Tout d'abord nous peuplons notre site avec le dépôt initial:

 cd /var/www
 git clone /var/git/repositories/votresite.git votresite
 chown -R www-data:www-data /var/www/votresite

Nous créons ensuite un script chargé de mettre à jour le site:

 # nano /usr/local/bin/MAJ-Votresite

 #!/bin/bash
 cd /var/www/votresite
 git pull
 exit

Nous le rendons exécutable:
 chmod a+x /usr/local/bin/MAJ-Votresite

Nous créons le &quot;hooks&quot; post-receive qui sera chargé de lancer la MAJ:

 nano /var/git/repositories/votresite.git/hooks/post-receive

 #!/bin/sh
 cd /usr/local/bin/
 sudo -u www-data MAJ-Votresite

Nous donnons à git le droit d'utiliser sudo pour le script:

 visudo

 git  ALL = (www-data) NOPASSWD: /usr/local/bin/MAJ-Votresite

Maintenant, à chaque mise à jour du dépôt, le site web sera lui aussi automatiquement mis à jour!

= Redmine =

== Installation ==

Nous commençons par préparer la base sql. (Cette option est facultative, vous avez l'option de configurer et peupler la base automatiquement avec dpkg). Nous avons choisi ici de garder la contrôle du nom de la base et de l'utilisateur mysql)?

&lt;code&gt;
mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7327
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database baseredmine character set utf8;
Query OK, 1 row affected (0.00 sec)

mysql&gt; create user 'mysqlredmine'@'localhost' identified by 'votre_mot-de-passe-pour-redmine';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; grant all privileges on baseredmine.* to 'mysqlredmine'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

== Installation redmine-mysql ==

 '''apt-get install redmine redmine-mysql libapache2-mod-passenger'''

Configurer la base: NON (Sauf si vous avez décidé de laisser dpkg s'occuper de ça)

 '''nano /etc/redmine/default/database.yml'''

 production:
   adapter: mysql
   database: baseredmine
   host: localhost
   port:
   username: mysqlredmine
   password: votre_mot-de-passe-pour-redmine
   encoding: utf8

Nous créons maintenant la structure de la base de donnée:

 '''cd /usr/share/redmine/'''
 '''RAILS_ENV=production rake db:migrate'''
 (in /usr/share/redmine)
 ==  Setup: migrating ==========================================================
 -- create_table(&quot;attachments&quot;, {:force=&gt;true})
    -&gt; 0.0993s
 -- create_table(&quot;auth_sources&quot;, {:force=&gt;true})
    -&gt; 0.0796s
 ...

Et nous y intégrons les données par défaut (Optionnel, mais fortement conseillé par RedMine)

 '''RAILS_ENV=production rake redmine:load_default_data'''
 (in /usr/share/redmine)
 
 Select language: bg, bs, ca, cs, da, de, el, en, en-GB, es, eu, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en] fr
 ====================================
 Default configuration data loaded.

=== Configuration de apache2 ===

Nous allons maintenant configurer apache2 pour l'intégration de RedMine. Les choix sont multiples quant à cette installation; Nous avons choisi un sous répertoire de /var/www et la création d'un sous-domaine dans notre DNS.

 '''ln -s /usr/share/redmine /var/www/redmine'''
 '''chown www-data:www-data /var/www/redmine/'''

 '''nano /etc/apache2/sites-available/redmine'''

&lt;code&gt;
&lt;VirtualHost ip_du_serveur:80&gt;
        ServerName redmine.serveur.tld
        Alias /redmine /var/www/redmine/public
        DocumentRoot /var/www/redmine/public
    &lt;Directory /var/www/redmine/public/&gt;
        PassengerAppRoot /var/www/redmine
        RailsBaseURI /
        AddHandler fastcgi-script .fcgi
        Options Indexes +ExecCGI FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    &lt;/Directory&gt;
&lt;/VirtualHost&gt;
&lt;/code&gt;

 '''/etc/apache2/sites-enabled/redmine'''
 '''service apache2 force-reload'''

Vous devriez maintenant être capable d'accéder à RedMine par votre navigateur (http://redmine.serveur.tld)

Login: admin
Mot de passe: admin

Il est fortement recommandé de changer le mot de passe...

=== Configuration des mails ===

Vous devrez maintenant configurer l'envoi des mails par Redmine (Il suffit de modifier les données à la fin du fichier pour qu'elles &quot;collent&quot; à votre configuration.

 '''cp /usr/share/doc/redmine/examples/email.yml.example /etc/redmine/default/email.yml'''
 '''nano /etc/redmine/default/email.yml'''

==== Activation du support tls pour la fonction mail ====

Il suffit d'ajouter un plugin en tapant les commandes suivantes:

 '''cd /usr/share/redmine/'''
 '''ruby script/plugin install git://github.com/collectiveidea/action_mailer_optional_tls.git'''
 '''db:migrate_plugins RAILS_ENV=production'''
 '''service apache2 restart'''

{{en}} Source: [http://www.redmineblog.com/articles/setup-redmine-to-send-email-using-gmail/ Setup redmine to send email using gmail]

=== Intégrer le dépôt Gitosis ===

Il faut maintenant intégrer notre dépôt Git à Redmine:

Créez un nouveau projet:
[[Fichier:Redmine1.png|240px]]

Configurez le chemin du dépôt:
[[Fichier:Redmine3.png|240px]]

Accédez au dépôt:
[[Fichier:Redmine4.png|240px]]

= Sources =

{{en}} [http://blog.mathiashabluetzel.ch/2011/09/01/installing-redmine-and-gitosis-on-a-debian-root-server-with-mysql/ Installing redmine and gitosis on a debian root server with mysql/]

{{fr}} [http://www.mickael-allain.fr/index.php?post/2010/03/06/Installation-et-configuration-de-son-serveur-Git-avec-Gitosis-sous-Debian-5 Installation et configuration de son serveur Git avec Gitosis sous Debian 5]

{{fr}} [http://www.sheevaboite.fr/article84/installer-serveur-git-auto-heberge-partie-1 Installer un serveur git auto hebergé]

[[Catégorie:Serveurs]]</text>
      <sha1>ne5jguarokz7qd6hllrhuxgvqad6xrm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3984</id>
      <parentid>3947</parentid>
      <timestamp>2012-03-21T13:36:21Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Ajouter un dépôt */ Ajout utilisateur</comment>
      <text xml:space="preserve" bytes="14974">Nous allons présenter dans ce tuto l'installation d'un dépôt Git et du gestionnaire de projet RedMine (optionnel évidemment...).

Debian a mis à notre disposition des paquets dans les dépôts pour ces deux applications; Comme vous êtes un bon administarteur (fainéant comme il se doit, et très attaché à apt) vous allez, tout comme moi faire l'installation avec apt-get ou aptitude.
Les avantages sont nombreux, le plus évident étant les mises à jours simplifiées et la bonne intégration à votre système.

'''Git''' est un logiciel de gestion de versions décentralisé. C'est un logiciel libre créé par Linus Torvalds, le créateur du noyau Linux, et distribué selon les termes de la licence publique générale GNU version 2 ([http://fr.wikipedia.org/wiki/Git Git]).
Nous avons choisis '''Gitolite''' qui est une version plus sécurisée de '''Git'''. '''Gitosis''' permet l'accès au dépôt Git avec un seul utilisateur (utilisateur système) et il permet de filtrer les accès au dépôt par les opérateurs via des clef SSH.

'''RedMine''' RedMmine est une application web Open Source de gestion complète de projet en mode web, développé en Ruby sur la base du framework Ruby on Rails ([http://fr.wikipedia.org/wiki/RedMine Redmine]).

= Gitosis=

== Installation de Gitosis ==

Comme toujours ches Debian, l'installation est très simple:

 '''apt-get install gitosis'''
 ...
 Les paquets supplémentaires suivants seront installés : 
   python-pkg-resources python-setuptools
 Paquets suggérés :
   git-daemon-run gitweb python-distribute python-distribute-doc
 Les NOUVEAUX paquets suivants seront installés :
   gitosis python-pkg-resources python-setuptools
 ...

== Configuration ==

Nous créons l'utilisateur &quot;git&quot;, le seul à avoir l'accès au dépôt et à la configuration:

 '''adduser --system --shell /bin/bash --gecos 'git version control' --group --disabled-password --home /var/git git'''
 Ajout de l'utilisateur système « git » (UID 113) ...
 Ajout du nouveau groupe « git » (GID 117) ...
 Ajout du nouvel utilisateur « git » (UID 113) avec pour groupe d'appartenance « git » ...
 Création du répertoire personnel « /var/git »...

=== Configuration Client/Admin ===

Pour avoir accès à la configuration des dépôts et des accès utilisateurs à distance, nous créons sur une machine cliente une clef SSH:

Création de la clef:

 '''ssh-keygen -t dsa'''
 Generating public/private dsa key pair.
 Enter file in which to save the key (/home/laurent/.ssh/id_dsa): /home/laurent/.ssh/gitosis-admin-web
 Enter passphrase (empty for no passphrase): 
 Enter same passphrase again: 
 Your identification has been saved in /home/laurent/.ssh/gitosis-admin-web.
 Your public key has been saved in /home/laurent/.ssh/gitosis-admin-web.pub.
 The key fingerprint is:
 99:xx:24:xx:ef:xx:d2:xx:87:xx:32:xx:1a:xx:b7:xx laurent@sidlol
 The key's randomart image is:
 +--[ DSA 1024]----+
 |                 |
 |                 |
 |                 |
 |    . .. o       |
 |  ..xx..S        |
 |   xx.+          |
 |  ..xx o         |
 |  .oE x x        |
 |  .+xx o         |
 +-----------------+

Il faut ensuite envoyer le clef générée sur le serveur:

 '''scp /home/laurent/.ssh/gitosis-admin-web.pub web-git:/tmp/gitosis-admin-web.pub'''
 gitosis-admin-web.pub                                                                            100%  604     0.6KB/s   00:00

'''web-git''' (ci-dessus) est le nom configuré dans ssh pour l'accès au serveur:

 '''cat ~/.ssh/config'''
 Host web-git
 HostName IP_du_serveur
 Port port_ssh
 User git
 PasswordAuthentication no
 IdentityFile ~/.ssh/gitosis-admin-web

Sur le serveur:
Nous intégrons la clef SSH du &quot;client&quot; et initialisons le dépôt gitosis-admin.git.

 '''su - git'''
 git@web:~$ '''gitosis-init &lt; /tmp/gitosis-admin-web.pub'''
 Initialized empty Git repository in /var/git/repositories/gitosis-admin.git/
 Reinitialized existing Git repository in /var/git/repositories/gitosis-admin.git/

Sur le client:
Nous clonons le dépôt gitosis-admin.git localement

 '''git clone git@web-git:gitosis-admin.git'''
 Cloning into 'gitosis-admin'...
 remote: Counting objects: 5, done.
 remote: Compressing objects: 100% (4/4), done.
 remote: Total 5 (delta 0), reused 5 (delta 0)
 Receiving objects: 100% (5/5), done.

Vérification:

 '''cd gitosis-admin/'''
 '''vdir'''
 total 8
 -rw-r--r-- 1 laurent laurent   84 mars   4 11:25 gitosis.conf
 drwxr-xr-x 2 laurent laurent 4096 mars   4 11:25 keydir

=== Utilisation de gitosis ===

==== Ajouter un utilisateur ====

Récupérez le clef publique de l'utilisateur, et copiez-là dans le dossier .../gitosis-admin/keydir

Editez la configuration de gitosis pour accorder à votre utilisateur les droits sur un dépôt:
 nano gitosis.conf

Ajoutez la clef:
 '''git add gitosis.conf keydir/x.pub'''

Modifiez le dépôt local:
 '''git commit -m &quot;Ajout de l'utilisateur x.&quot;'''
 [master b8aaa02] Added x user.
 2 files changed, 2 insertions(+), 1 deletions(-)
 create mode 100644 keydir/x.pub

Assurez-vous que le dépôt local est synchronisé au dépôt distant:
 '''git pull --rebase'''
 Current branch master is up to date.

Enfin, &quot;poussez&quot; les modification vers le serveur:
 '''git push'''
 Counting objects: 8, done.
 Delta compression using up to 4 threads.
 Compressing objects: 100% (5/5), done.
 Writing objects: 100% (5/5), 888 bytes, done.
 Total 5 (delta 2), reused 0 (delta 0)
 To git@karma-git:gitosis-admin.git
    bf37bcf..b8aaa02  master -&gt; master

==== Ajouter un dépôt ====

Ajoutons maintenant un dépôt à partir du &quot;client&quot;
Nous ajoutons le dépôt &quot;portailmadagascar&quot;

 '''nano gitosis.conf'''

 [gitosis]
 
 [group gitosis-admin]
 writable = gitosis-admin
 members = laurent@sidlol
 
 [group portailmadagascar]
 writable = portailmadagascar
 members = laurent@sidlol

Activons le dépôt:

 '''git add gitosis.conf'''
 '''git commit -m 'Ajout du dépôt portailmadagascar''''
 [master b0192ad] Ajout du dépôt portailmadagascar
  Committer: Laurent L &lt;laurent@sidlol.zehome.org&gt;
 Your name and email address were configured automatically based
 on your username and hostname. Please check that they are accurate.
 You can suppress this message by setting them explicitly:
 
     git config --global user.name &quot;Your Name&quot;
     git config --global user.email you@example.com
 
 After doing this, you may fix the identity used for this commit with:
 
     git commit --amend --reset-author
 
  1 files changed, 3 insertions(+), 0 deletions(-)

Envoyons la modification sur le serveur:

 '''git push origin master'''
 Counting objects: 5, done.
 Delta compression using up to 4 threads.
 Compressing objects: 100% (3/3), done.
 Writing objects: 100% (3/3), 389 bytes, done.
 Total 3 (delta 0), reused 0 (delta 0)
 To git@web-git:gitosis-admin.git
    e9439fc..b0192ad  master -&gt; master

Localement, sur le client, le dépôt n'a pas encore été initialisé; Il suffit maintenant de le &quot;récupérer&quot; (pull) depuis le serveur:
Initialisation locale du dépôt:

 '''cd ~/git'''
 '''git clone web-git:portailmadagascar.git'''
 Cloning into 'portailmadagascar'...
 Initialized empty Git repository in /var/git/repositories/portailmadagascar.git/
 warning: You appear to have cloned an empty repository.

===== &quot;Peupler&quot; votre dépôt =====

Nous allons maintenant &quot;peupler&quot; notre dépôt (lui ajouter des fichiers):

Il suffit de copier vos fichiers dans le dossier ~/git/portailmadagascar, de les ajouter au dépôt, puis de les envoyer au serveur:

 '''git push origin master'''
 Counting objects: 6663, done.
 Delta compression using up to 4 threads.
 Compressing objects: 100% (6290/6290), done.
 Writing objects: 100% (6663/6663), 57.53 MiB | 55 KiB/s, done.
 Total 6663 (delta 747), reused 0 (delta 0)
 To web-git:portailmadagascar.git
  * [new branch]      master -&gt; master

 '''git clone web-git:portailmadagascar.git'''
 '''cd portailmadagascar'''
 '''git add .'''
 '''git commit -m &quot;Initial commit&quot;'''

&lt;code&gt;
Initial commit

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use &quot;git rm --cached &lt;file&gt;...&quot; to unstage)
#
#       new file:   .htaccess
#       new file:   WP PROJET ubermenu-wordpress-mega-menu-plugin.zip
#       new file:   article.zip
#       new file:   article/admin.js
...
&lt;/code&gt;

Avant d'envoyer au serveur, configurons nos identifiants:

 '''git config --global user.name &quot;lol&quot;'''
 '''git config --global user.email lol@serveur.tld'''
 '''git commit --amend --reset-author'''
 '''git push origin master'''

==== Déployer un site web à partir de votre dépôt ====

Git va beaucoup plus loin que la simple gestion des dépôts, nous allons détailler le déploiement d'un site à partir de Git:
Tout d'abord nous peuplons notre site avec le dépôt initial:

 cd /var/www
 git clone /var/git/repositories/votresite.git votresite
 chown -R www-data:www-data /var/www/votresite

Nous créons ensuite un script chargé de mettre à jour le site:

 # nano /usr/local/bin/MAJ-Votresite

 #!/bin/bash
 cd /var/www/votresite
 git pull
 exit

Nous le rendons exécutable:
 chmod a+x /usr/local/bin/MAJ-Votresite

Nous créons le &quot;hooks&quot; post-receive qui sera chargé de lancer la MAJ:

 nano /var/git/repositories/votresite.git/hooks/post-receive

 #!/bin/sh
 cd /usr/local/bin/
 sudo -u www-data MAJ-Votresite

Nous donnons à git le droit d'utiliser sudo pour le script:

 visudo

 git  ALL = (www-data) NOPASSWD: /usr/local/bin/MAJ-Votresite

Maintenant, à chaque mise à jour du dépôt, le site web sera lui aussi automatiquement mis à jour!

= Redmine =

== Installation ==

Nous commençons par préparer la base sql. (Cette option est facultative, vous avez l'option de configurer et peupler la base automatiquement avec dpkg). Nous avons choisi ici de garder la contrôle du nom de la base et de l'utilisateur mysql)?

&lt;code&gt;
mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7327
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database baseredmine character set utf8;
Query OK, 1 row affected (0.00 sec)

mysql&gt; create user 'mysqlredmine'@'localhost' identified by 'votre_mot-de-passe-pour-redmine';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; grant all privileges on baseredmine.* to 'mysqlredmine'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

== Installation redmine-mysql ==

 '''apt-get install redmine redmine-mysql libapache2-mod-passenger'''

Configurer la base: NON (Sauf si vous avez décidé de laisser dpkg s'occuper de ça)

 '''nano /etc/redmine/default/database.yml'''

 production:
   adapter: mysql
   database: baseredmine
   host: localhost
   port:
   username: mysqlredmine
   password: votre_mot-de-passe-pour-redmine
   encoding: utf8

Nous créons maintenant la structure de la base de donnée:

 '''cd /usr/share/redmine/'''
 '''RAILS_ENV=production rake db:migrate'''
 (in /usr/share/redmine)
 ==  Setup: migrating ==========================================================
 -- create_table(&quot;attachments&quot;, {:force=&gt;true})
    -&gt; 0.0993s
 -- create_table(&quot;auth_sources&quot;, {:force=&gt;true})
    -&gt; 0.0796s
 ...

Et nous y intégrons les données par défaut (Optionnel, mais fortement conseillé par RedMine)

 '''RAILS_ENV=production rake redmine:load_default_data'''
 (in /usr/share/redmine)
 
 Select language: bg, bs, ca, cs, da, de, el, en, en-GB, es, eu, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en] fr
 ====================================
 Default configuration data loaded.

=== Configuration de apache2 ===

Nous allons maintenant configurer apache2 pour l'intégration de RedMine. Les choix sont multiples quant à cette installation; Nous avons choisi un sous répertoire de /var/www et la création d'un sous-domaine dans notre DNS.

 '''ln -s /usr/share/redmine /var/www/redmine'''
 '''chown www-data:www-data /var/www/redmine/'''

 '''nano /etc/apache2/sites-available/redmine'''

&lt;code&gt;
&lt;VirtualHost ip_du_serveur:80&gt;
        ServerName redmine.serveur.tld
        Alias /redmine /var/www/redmine/public
        DocumentRoot /var/www/redmine/public
    &lt;Directory /var/www/redmine/public/&gt;
        PassengerAppRoot /var/www/redmine
        RailsBaseURI /
        AddHandler fastcgi-script .fcgi
        Options Indexes +ExecCGI FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    &lt;/Directory&gt;
&lt;/VirtualHost&gt;
&lt;/code&gt;

 '''/etc/apache2/sites-enabled/redmine'''
 '''service apache2 force-reload'''

Vous devriez maintenant être capable d'accéder à RedMine par votre navigateur (http://redmine.serveur.tld)

Login: admin
Mot de passe: admin

Il est fortement recommandé de changer le mot de passe...

=== Configuration des mails ===

Vous devrez maintenant configurer l'envoi des mails par Redmine (Il suffit de modifier les données à la fin du fichier pour qu'elles &quot;collent&quot; à votre configuration.

 '''cp /usr/share/doc/redmine/examples/email.yml.example /etc/redmine/default/email.yml'''
 '''nano /etc/redmine/default/email.yml'''

==== Activation du support tls pour la fonction mail ====

Il suffit d'ajouter un plugin en tapant les commandes suivantes:

 '''cd /usr/share/redmine/'''
 '''ruby script/plugin install git://github.com/collectiveidea/action_mailer_optional_tls.git'''
 '''db:migrate_plugins RAILS_ENV=production'''
 '''service apache2 restart'''

{{en}} Source: [http://www.redmineblog.com/articles/setup-redmine-to-send-email-using-gmail/ Setup redmine to send email using gmail]

=== Intégrer le dépôt Gitosis ===

Il faut maintenant intégrer notre dépôt Git à Redmine:

Créez un nouveau projet:
[[Fichier:Redmine1.png|240px]]

Configurez le chemin du dépôt:
[[Fichier:Redmine3.png|240px]]

Accédez au dépôt:
[[Fichier:Redmine4.png|240px]]

= Sources =

{{en}} [http://blog.mathiashabluetzel.ch/2011/09/01/installing-redmine-and-gitosis-on-a-debian-root-server-with-mysql/ Installing redmine and gitosis on a debian root server with mysql/]

{{fr}} [http://www.mickael-allain.fr/index.php?post/2010/03/06/Installation-et-configuration-de-son-serveur-Git-avec-Gitosis-sous-Debian-5 Installation et configuration de son serveur Git avec Gitosis sous Debian 5]

{{fr}} [http://www.sheevaboite.fr/article84/installer-serveur-git-auto-heberge-partie-1 Installer un serveur git auto hebergé]

[[Catégorie:Serveurs]]</text>
      <sha1>gfy5kwurjkm593gpuwe2eqtfc6v4bjr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3985</id>
      <parentid>3984</parentid>
      <timestamp>2012-03-21T13:37:17Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Ajouter un utilisateur */</comment>
      <text xml:space="preserve" bytes="14980">Nous allons présenter dans ce tuto l'installation d'un dépôt Git et du gestionnaire de projet RedMine (optionnel évidemment...).

Debian a mis à notre disposition des paquets dans les dépôts pour ces deux applications; Comme vous êtes un bon administarteur (fainéant comme il se doit, et très attaché à apt) vous allez, tout comme moi faire l'installation avec apt-get ou aptitude.
Les avantages sont nombreux, le plus évident étant les mises à jours simplifiées et la bonne intégration à votre système.

'''Git''' est un logiciel de gestion de versions décentralisé. C'est un logiciel libre créé par Linus Torvalds, le créateur du noyau Linux, et distribué selon les termes de la licence publique générale GNU version 2 ([http://fr.wikipedia.org/wiki/Git Git]).
Nous avons choisis '''Gitolite''' qui est une version plus sécurisée de '''Git'''. '''Gitosis''' permet l'accès au dépôt Git avec un seul utilisateur (utilisateur système) et il permet de filtrer les accès au dépôt par les opérateurs via des clef SSH.

'''RedMine''' RedMmine est une application web Open Source de gestion complète de projet en mode web, développé en Ruby sur la base du framework Ruby on Rails ([http://fr.wikipedia.org/wiki/RedMine Redmine]).

= Gitosis=

== Installation de Gitosis ==

Comme toujours ches Debian, l'installation est très simple:

 '''apt-get install gitosis'''
 ...
 Les paquets supplémentaires suivants seront installés : 
   python-pkg-resources python-setuptools
 Paquets suggérés :
   git-daemon-run gitweb python-distribute python-distribute-doc
 Les NOUVEAUX paquets suivants seront installés :
   gitosis python-pkg-resources python-setuptools
 ...

== Configuration ==

Nous créons l'utilisateur &quot;git&quot;, le seul à avoir l'accès au dépôt et à la configuration:

 '''adduser --system --shell /bin/bash --gecos 'git version control' --group --disabled-password --home /var/git git'''
 Ajout de l'utilisateur système « git » (UID 113) ...
 Ajout du nouveau groupe « git » (GID 117) ...
 Ajout du nouvel utilisateur « git » (UID 113) avec pour groupe d'appartenance « git » ...
 Création du répertoire personnel « /var/git »...

=== Configuration Client/Admin ===

Pour avoir accès à la configuration des dépôts et des accès utilisateurs à distance, nous créons sur une machine cliente une clef SSH:

Création de la clef:

 '''ssh-keygen -t dsa'''
 Generating public/private dsa key pair.
 Enter file in which to save the key (/home/laurent/.ssh/id_dsa): /home/laurent/.ssh/gitosis-admin-web
 Enter passphrase (empty for no passphrase): 
 Enter same passphrase again: 
 Your identification has been saved in /home/laurent/.ssh/gitosis-admin-web.
 Your public key has been saved in /home/laurent/.ssh/gitosis-admin-web.pub.
 The key fingerprint is:
 99:xx:24:xx:ef:xx:d2:xx:87:xx:32:xx:1a:xx:b7:xx laurent@sidlol
 The key's randomart image is:
 +--[ DSA 1024]----+
 |                 |
 |                 |
 |                 |
 |    . .. o       |
 |  ..xx..S        |
 |   xx.+          |
 |  ..xx o         |
 |  .oE x x        |
 |  .+xx o         |
 +-----------------+

Il faut ensuite envoyer le clef générée sur le serveur:

 '''scp /home/laurent/.ssh/gitosis-admin-web.pub web-git:/tmp/gitosis-admin-web.pub'''
 gitosis-admin-web.pub                                                                            100%  604     0.6KB/s   00:00

'''web-git''' (ci-dessus) est le nom configuré dans ssh pour l'accès au serveur:

 '''cat ~/.ssh/config'''
 Host web-git
 HostName IP_du_serveur
 Port port_ssh
 User git
 PasswordAuthentication no
 IdentityFile ~/.ssh/gitosis-admin-web

Sur le serveur:
Nous intégrons la clef SSH du &quot;client&quot; et initialisons le dépôt gitosis-admin.git.

 '''su - git'''
 git@web:~$ '''gitosis-init &lt; /tmp/gitosis-admin-web.pub'''
 Initialized empty Git repository in /var/git/repositories/gitosis-admin.git/
 Reinitialized existing Git repository in /var/git/repositories/gitosis-admin.git/

Sur le client:
Nous clonons le dépôt gitosis-admin.git localement

 '''git clone git@web-git:gitosis-admin.git'''
 Cloning into 'gitosis-admin'...
 remote: Counting objects: 5, done.
 remote: Compressing objects: 100% (4/4), done.
 remote: Total 5 (delta 0), reused 5 (delta 0)
 Receiving objects: 100% (5/5), done.

Vérification:

 '''cd gitosis-admin/'''
 '''vdir'''
 total 8
 -rw-r--r-- 1 laurent laurent   84 mars   4 11:25 gitosis.conf
 drwxr-xr-x 2 laurent laurent 4096 mars   4 11:25 keydir

=== Utilisation de gitosis ===

==== Ajouter un utilisateur ====

Récupérez le clef publique de l'utilisateur, et copiez-là dans le dossier .../gitosis-admin/keydir

Editez la configuration de gitosis pour accorder à votre utilisateur les droits sur un dépôt:
 '''nano gitosis.conf'''

Ajoutez la clef:
 '''git add gitosis.conf keydir/x.pub'''

Modifiez le dépôt local:
 '''git commit -m &quot;Ajout de l'utilisateur x.&quot;'''
 [master b8aaa02] Added x user.
 2 files changed, 2 insertions(+), 1 deletions(-)
 create mode 100644 keydir/x.pub

Assurez-vous que le dépôt local est synchronisé au dépôt distant:
 '''git pull --rebase'''
 Current branch master is up to date.

Enfin, &quot;poussez&quot; les modification vers le serveur:
 '''git push'''
 Counting objects: 8, done.
 Delta compression using up to 4 threads.
 Compressing objects: 100% (5/5), done.
 Writing objects: 100% (5/5), 888 bytes, done.
 Total 5 (delta 2), reused 0 (delta 0)
 To git@karma-git:gitosis-admin.git
    bf37bcf..b8aaa02  master -&gt; master

==== Ajouter un dépôt ====

Ajoutons maintenant un dépôt à partir du &quot;client&quot;
Nous ajoutons le dépôt &quot;portailmadagascar&quot;

 '''nano gitosis.conf'''

 [gitosis]
 
 [group gitosis-admin]
 writable = gitosis-admin
 members = laurent@sidlol
 
 [group portailmadagascar]
 writable = portailmadagascar
 members = laurent@sidlol

Activons le dépôt:

 '''git add gitosis.conf'''
 '''git commit -m 'Ajout du dépôt portailmadagascar''''
 [master b0192ad] Ajout du dépôt portailmadagascar
  Committer: Laurent L &lt;laurent@sidlol.zehome.org&gt;
 Your name and email address were configured automatically based
 on your username and hostname. Please check that they are accurate.
 You can suppress this message by setting them explicitly:
 
     git config --global user.name &quot;Your Name&quot;
     git config --global user.email you@example.com
 
 After doing this, you may fix the identity used for this commit with:
 
     git commit --amend --reset-author
 
  1 files changed, 3 insertions(+), 0 deletions(-)

Envoyons la modification sur le serveur:

 '''git push origin master'''
 Counting objects: 5, done.
 Delta compression using up to 4 threads.
 Compressing objects: 100% (3/3), done.
 Writing objects: 100% (3/3), 389 bytes, done.
 Total 3 (delta 0), reused 0 (delta 0)
 To git@web-git:gitosis-admin.git
    e9439fc..b0192ad  master -&gt; master

Localement, sur le client, le dépôt n'a pas encore été initialisé; Il suffit maintenant de le &quot;récupérer&quot; (pull) depuis le serveur:
Initialisation locale du dépôt:

 '''cd ~/git'''
 '''git clone web-git:portailmadagascar.git'''
 Cloning into 'portailmadagascar'...
 Initialized empty Git repository in /var/git/repositories/portailmadagascar.git/
 warning: You appear to have cloned an empty repository.

===== &quot;Peupler&quot; votre dépôt =====

Nous allons maintenant &quot;peupler&quot; notre dépôt (lui ajouter des fichiers):

Il suffit de copier vos fichiers dans le dossier ~/git/portailmadagascar, de les ajouter au dépôt, puis de les envoyer au serveur:

 '''git push origin master'''
 Counting objects: 6663, done.
 Delta compression using up to 4 threads.
 Compressing objects: 100% (6290/6290), done.
 Writing objects: 100% (6663/6663), 57.53 MiB | 55 KiB/s, done.
 Total 6663 (delta 747), reused 0 (delta 0)
 To web-git:portailmadagascar.git
  * [new branch]      master -&gt; master

 '''git clone web-git:portailmadagascar.git'''
 '''cd portailmadagascar'''
 '''git add .'''
 '''git commit -m &quot;Initial commit&quot;'''

&lt;code&gt;
Initial commit

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use &quot;git rm --cached &lt;file&gt;...&quot; to unstage)
#
#       new file:   .htaccess
#       new file:   WP PROJET ubermenu-wordpress-mega-menu-plugin.zip
#       new file:   article.zip
#       new file:   article/admin.js
...
&lt;/code&gt;

Avant d'envoyer au serveur, configurons nos identifiants:

 '''git config --global user.name &quot;lol&quot;'''
 '''git config --global user.email lol@serveur.tld'''
 '''git commit --amend --reset-author'''
 '''git push origin master'''

==== Déployer un site web à partir de votre dépôt ====

Git va beaucoup plus loin que la simple gestion des dépôts, nous allons détailler le déploiement d'un site à partir de Git:
Tout d'abord nous peuplons notre site avec le dépôt initial:

 cd /var/www
 git clone /var/git/repositories/votresite.git votresite
 chown -R www-data:www-data /var/www/votresite

Nous créons ensuite un script chargé de mettre à jour le site:

 # nano /usr/local/bin/MAJ-Votresite

 #!/bin/bash
 cd /var/www/votresite
 git pull
 exit

Nous le rendons exécutable:
 chmod a+x /usr/local/bin/MAJ-Votresite

Nous créons le &quot;hooks&quot; post-receive qui sera chargé de lancer la MAJ:

 nano /var/git/repositories/votresite.git/hooks/post-receive

 #!/bin/sh
 cd /usr/local/bin/
 sudo -u www-data MAJ-Votresite

Nous donnons à git le droit d'utiliser sudo pour le script:

 visudo

 git  ALL = (www-data) NOPASSWD: /usr/local/bin/MAJ-Votresite

Maintenant, à chaque mise à jour du dépôt, le site web sera lui aussi automatiquement mis à jour!

= Redmine =

== Installation ==

Nous commençons par préparer la base sql. (Cette option est facultative, vous avez l'option de configurer et peupler la base automatiquement avec dpkg). Nous avons choisi ici de garder la contrôle du nom de la base et de l'utilisateur mysql)?

&lt;code&gt;
mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7327
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database baseredmine character set utf8;
Query OK, 1 row affected (0.00 sec)

mysql&gt; create user 'mysqlredmine'@'localhost' identified by 'votre_mot-de-passe-pour-redmine';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; grant all privileges on baseredmine.* to 'mysqlredmine'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

== Installation redmine-mysql ==

 '''apt-get install redmine redmine-mysql libapache2-mod-passenger'''

Configurer la base: NON (Sauf si vous avez décidé de laisser dpkg s'occuper de ça)

 '''nano /etc/redmine/default/database.yml'''

 production:
   adapter: mysql
   database: baseredmine
   host: localhost
   port:
   username: mysqlredmine
   password: votre_mot-de-passe-pour-redmine
   encoding: utf8

Nous créons maintenant la structure de la base de donnée:

 '''cd /usr/share/redmine/'''
 '''RAILS_ENV=production rake db:migrate'''
 (in /usr/share/redmine)
 ==  Setup: migrating ==========================================================
 -- create_table(&quot;attachments&quot;, {:force=&gt;true})
    -&gt; 0.0993s
 -- create_table(&quot;auth_sources&quot;, {:force=&gt;true})
    -&gt; 0.0796s
 ...

Et nous y intégrons les données par défaut (Optionnel, mais fortement conseillé par RedMine)

 '''RAILS_ENV=production rake redmine:load_default_data'''
 (in /usr/share/redmine)
 
 Select language: bg, bs, ca, cs, da, de, el, en, en-GB, es, eu, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en] fr
 ====================================
 Default configuration data loaded.

=== Configuration de apache2 ===

Nous allons maintenant configurer apache2 pour l'intégration de RedMine. Les choix sont multiples quant à cette installation; Nous avons choisi un sous répertoire de /var/www et la création d'un sous-domaine dans notre DNS.

 '''ln -s /usr/share/redmine /var/www/redmine'''
 '''chown www-data:www-data /var/www/redmine/'''

 '''nano /etc/apache2/sites-available/redmine'''

&lt;code&gt;
&lt;VirtualHost ip_du_serveur:80&gt;
        ServerName redmine.serveur.tld
        Alias /redmine /var/www/redmine/public
        DocumentRoot /var/www/redmine/public
    &lt;Directory /var/www/redmine/public/&gt;
        PassengerAppRoot /var/www/redmine
        RailsBaseURI /
        AddHandler fastcgi-script .fcgi
        Options Indexes +ExecCGI FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    &lt;/Directory&gt;
&lt;/VirtualHost&gt;
&lt;/code&gt;

 '''/etc/apache2/sites-enabled/redmine'''
 '''service apache2 force-reload'''

Vous devriez maintenant être capable d'accéder à RedMine par votre navigateur (http://redmine.serveur.tld)

Login: admin
Mot de passe: admin

Il est fortement recommandé de changer le mot de passe...

=== Configuration des mails ===

Vous devrez maintenant configurer l'envoi des mails par Redmine (Il suffit de modifier les données à la fin du fichier pour qu'elles &quot;collent&quot; à votre configuration.

 '''cp /usr/share/doc/redmine/examples/email.yml.example /etc/redmine/default/email.yml'''
 '''nano /etc/redmine/default/email.yml'''

==== Activation du support tls pour la fonction mail ====

Il suffit d'ajouter un plugin en tapant les commandes suivantes:

 '''cd /usr/share/redmine/'''
 '''ruby script/plugin install git://github.com/collectiveidea/action_mailer_optional_tls.git'''
 '''db:migrate_plugins RAILS_ENV=production'''
 '''service apache2 restart'''

{{en}} Source: [http://www.redmineblog.com/articles/setup-redmine-to-send-email-using-gmail/ Setup redmine to send email using gmail]

=== Intégrer le dépôt Gitosis ===

Il faut maintenant intégrer notre dépôt Git à Redmine:

Créez un nouveau projet:
[[Fichier:Redmine1.png|240px]]

Configurez le chemin du dépôt:
[[Fichier:Redmine3.png|240px]]

Accédez au dépôt:
[[Fichier:Redmine4.png|240px]]

= Sources =

{{en}} [http://blog.mathiashabluetzel.ch/2011/09/01/installing-redmine-and-gitosis-on-a-debian-root-server-with-mysql/ Installing redmine and gitosis on a debian root server with mysql/]

{{fr}} [http://www.mickael-allain.fr/index.php?post/2010/03/06/Installation-et-configuration-de-son-serveur-Git-avec-Gitosis-sous-Debian-5 Installation et configuration de son serveur Git avec Gitosis sous Debian 5]

{{fr}} [http://www.sheevaboite.fr/article84/installer-serveur-git-auto-heberge-partie-1 Installer un serveur git auto hebergé]

[[Catégorie:Serveurs]]</text>
      <sha1>dvo6vdrhqhiqwpobpn3eatty7ufkkpl</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5778</id>
      <parentid>3985</parentid>
      <timestamp>2014-08-20T05:35:19Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="14988">Nous allons présenter dans ce tuto l'installation d'un dépôt Git et du gestionnaire de projet RedMine (optionnel évidemment...).

Debian a mis à notre disposition des paquets dans les dépôts pour ces deux applications; Comme vous êtes un bon administarteur (fainéant comme il se doit, et très attaché à apt) vous allez, tout comme moi faire l'installation avec apt-get ou aptitude.
Les avantages sont nombreux, le plus évident étant les mises à jours simplifiées et la bonne intégration à votre système.

'''Git''' est un logiciel de gestion de versions décentralisé. C'est un logiciel libre créé par Linus Torvalds, le créateur du noyau Linux, et distribué selon les termes de la licence publique générale GNU version 2 ([http://fr.wikipedia.org/wiki/Git Git]).
Nous avons choisis '''Gitolite''' qui est une version plus sécurisée de '''Git'''. '''Gitosis''' permet l'accès au dépôt Git avec un seul utilisateur (utilisateur système) et il permet de filtrer les accès au dépôt par les opérateurs via des clef SSH.

'''RedMine''' RedMmine est une application web Open Source de gestion complète de projet en mode web, développé en Ruby sur la base du framework Ruby on Rails ([http://fr.wikipedia.org/wiki/RedMine Redmine]).

= Gitosis=

== Installation de Gitosis ==

Comme toujours ches Debian, l'installation est très simple:

 '''apt-get install gitosis'''
 ...
 Les paquets supplémentaires suivants seront installés : 
   python-pkg-resources python-setuptools
 Paquets suggérés :
   git-daemon-run gitweb python-distribute python-distribute-doc
 Les NOUVEAUX paquets suivants seront installés :
   gitosis python-pkg-resources python-setuptools
 ...

== Configuration ==

Nous créons l'utilisateur &quot;git&quot;, le seul à avoir l'accès au dépôt et à la configuration:

 '''adduser --system --shell /bin/bash --gecos 'git version control' --group --disabled-password --home /var/git git'''
 Ajout de l'utilisateur système « git » (UID 113) ...
 Ajout du nouveau groupe « git » (GID 117) ...
 Ajout du nouvel utilisateur « git » (UID 113) avec pour groupe d'appartenance « git » ...
 Création du répertoire personnel « /var/git »...

=== Configuration Client/Admin ===

Pour avoir accès à la configuration des dépôts et des accès utilisateurs à distance, nous créons sur une machine cliente une clef SSH:

Création de la clef:

 '''ssh-keygen -t dsa'''
 Generating public/private dsa key pair.
 Enter file in which to save the key (/home/laurent/.ssh/id_dsa): /home/laurent/.ssh/gitosis-admin-web
 Enter passphrase (empty for no passphrase): 
 Enter same passphrase again: 
 Your identification has been saved in /home/laurent/.ssh/gitosis-admin-web.
 Your public key has been saved in /home/laurent/.ssh/gitosis-admin-web.pub.
 The key fingerprint is:
 99:xx:24:xx:ef:xx:d2:xx:87:xx:32:xx:1a:xx:b7:xx laurent@sidlol
 The key's randomart image is:
 +--[ DSA 1024]----+
 |                 |
 |                 |
 |                 |
 |    . .. o       |
 |  ..xx..S        |
 |   xx.+          |
 |  ..xx o         |
 |  .oE x x        |
 |  .+xx o         |
 +-----------------+

Il faut ensuite envoyer le clef générée sur le serveur:

 '''scp /home/laurent/.ssh/gitosis-admin-web.pub web-git:/tmp/gitosis-admin-web.pub'''
 gitosis-admin-web.pub                                                                            100%  604     0.6KB/s   00:00

'''web-git''' (ci-dessus) est le nom configuré dans ssh pour l'accès au serveur:

 '''cat ~/.ssh/config'''
 Host web-git
 HostName IP_du_serveur
 Port port_ssh
 User git
 PasswordAuthentication no
 IdentityFile ~/.ssh/gitosis-admin-web

Sur le serveur:
Nous intégrons la clef SSH du &quot;client&quot; et initialisons le dépôt gitosis-admin.git.

 '''su - git'''
 git@web:~$ '''gitosis-init &lt; /tmp/gitosis-admin-web.pub'''
 Initialized empty Git repository in /var/git/repositories/gitosis-admin.git/
 Reinitialized existing Git repository in /var/git/repositories/gitosis-admin.git/

Sur le client:
Nous clonons le dépôt gitosis-admin.git localement

 '''git clone git@web-git:gitosis-admin.git'''
 Cloning into 'gitosis-admin'...
 remote: Counting objects: 5, done.
 remote: Compressing objects: 100% (4/4), done.
 remote: Total 5 (delta 0), reused 5 (delta 0)
 Receiving objects: 100% (5/5), done.

Vérification:

 '''cd gitosis-admin/'''
 '''vdir'''
 total 8
 -rw-r--r-- 1 laurent laurent   84 mars   4 11:25 gitosis.conf
 drwxr-xr-x 2 laurent laurent 4096 mars   4 11:25 keydir

=== Utilisation de gitosis ===

==== Ajouter un utilisateur ====

Récupérez le clef publique de l'utilisateur, et copiez-là dans le répertoire .../gitosis-admin/keydir

Editez la configuration de gitosis pour accorder à votre utilisateur les droits sur un dépôt:
 '''nano gitosis.conf'''

Ajoutez la clef:
 '''git add gitosis.conf keydir/x.pub'''

Modifiez le dépôt local:
 '''git commit -m &quot;Ajout de l'utilisateur x.&quot;'''
 [master b8aaa02] Added x user.
 2 files changed, 2 insertions(+), 1 deletions(-)
 create mode 100644 keydir/x.pub

Assurez-vous que le dépôt local est synchronisé au dépôt distant:
 '''git pull --rebase'''
 Current branch master is up to date.

Enfin, &quot;poussez&quot; les modification vers le serveur:
 '''git push'''
 Counting objects: 8, done.
 Delta compression using up to 4 threads.
 Compressing objects: 100% (5/5), done.
 Writing objects: 100% (5/5), 888 bytes, done.
 Total 5 (delta 2), reused 0 (delta 0)
 To git@karma-git:gitosis-admin.git
    bf37bcf..b8aaa02  master -&gt; master

==== Ajouter un dépôt ====

Ajoutons maintenant un dépôt à partir du &quot;client&quot;
Nous ajoutons le dépôt &quot;portailmadagascar&quot;

 '''nano gitosis.conf'''

 [gitosis]
 
 [group gitosis-admin]
 writable = gitosis-admin
 members = laurent@sidlol
 
 [group portailmadagascar]
 writable = portailmadagascar
 members = laurent@sidlol

Activons le dépôt:

 '''git add gitosis.conf'''
 '''git commit -m 'Ajout du dépôt portailmadagascar''''
 [master b0192ad] Ajout du dépôt portailmadagascar
  Committer: Laurent L &lt;laurent@sidlol.zehome.org&gt;
 Your name and email address were configured automatically based
 on your username and hostname. Please check that they are accurate.
 You can suppress this message by setting them explicitly:
 
     git config --global user.name &quot;Your Name&quot;
     git config --global user.email you@example.com
 
 After doing this, you may fix the identity used for this commit with:
 
     git commit --amend --reset-author
 
  1 files changed, 3 insertions(+), 0 deletions(-)

Envoyons la modification sur le serveur:

 '''git push origin master'''
 Counting objects: 5, done.
 Delta compression using up to 4 threads.
 Compressing objects: 100% (3/3), done.
 Writing objects: 100% (3/3), 389 bytes, done.
 Total 3 (delta 0), reused 0 (delta 0)
 To git@web-git:gitosis-admin.git
    e9439fc..b0192ad  master -&gt; master

Localement, sur le client, le dépôt n'a pas encore été initialisé; Il suffit maintenant de le &quot;récupérer&quot; (pull) depuis le serveur:
Initialisation locale du dépôt:

 '''cd ~/git'''
 '''git clone web-git:portailmadagascar.git'''
 Cloning into 'portailmadagascar'...
 Initialized empty Git repository in /var/git/repositories/portailmadagascar.git/
 warning: You appear to have cloned an empty repository.

===== &quot;Peupler&quot; votre dépôt =====

Nous allons maintenant &quot;peupler&quot; notre dépôt (lui ajouter des fichiers):

Il suffit de copier vos fichiers dans le répertoire ~/git/portailmadagascar, de les ajouter au dépôt, puis de les envoyer au serveur:

 '''git push origin master'''
 Counting objects: 6663, done.
 Delta compression using up to 4 threads.
 Compressing objects: 100% (6290/6290), done.
 Writing objects: 100% (6663/6663), 57.53 MiB | 55 KiB/s, done.
 Total 6663 (delta 747), reused 0 (delta 0)
 To web-git:portailmadagascar.git
  * [new branch]      master -&gt; master

 '''git clone web-git:portailmadagascar.git'''
 '''cd portailmadagascar'''
 '''git add .'''
 '''git commit -m &quot;Initial commit&quot;'''

&lt;code&gt;
Initial commit

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use &quot;git rm --cached &lt;file&gt;...&quot; to unstage)
#
#       new file:   .htaccess
#       new file:   WP PROJET ubermenu-wordpress-mega-menu-plugin.zip
#       new file:   article.zip
#       new file:   article/admin.js
...
&lt;/code&gt;

Avant d'envoyer au serveur, configurons nos identifiants:

 '''git config --global user.name &quot;lol&quot;'''
 '''git config --global user.email lol@serveur.tld'''
 '''git commit --amend --reset-author'''
 '''git push origin master'''

==== Déployer un site web à partir de votre dépôt ====

Git va beaucoup plus loin que la simple gestion des dépôts, nous allons détailler le déploiement d'un site à partir de Git:
Tout d'abord nous peuplons notre site avec le dépôt initial:

 cd /var/www
 git clone /var/git/repositories/votresite.git votresite
 chown -R www-data:www-data /var/www/votresite

Nous créons ensuite un script chargé de mettre à jour le site:

 # nano /usr/local/bin/MAJ-Votresite

 #!/bin/bash
 cd /var/www/votresite
 git pull
 exit

Nous le rendons exécutable:
 chmod a+x /usr/local/bin/MAJ-Votresite

Nous créons le &quot;hooks&quot; post-receive qui sera chargé de lancer la MAJ:

 nano /var/git/repositories/votresite.git/hooks/post-receive

 #!/bin/sh
 cd /usr/local/bin/
 sudo -u www-data MAJ-Votresite

Nous donnons à git le droit d'utiliser sudo pour le script:

 visudo

 git  ALL = (www-data) NOPASSWD: /usr/local/bin/MAJ-Votresite

Maintenant, à chaque mise à jour du dépôt, le site web sera lui aussi automatiquement mis à jour!

= Redmine =

== Installation ==

Nous commençons par préparer la base sql. (Cette option est facultative, vous avez l'option de configurer et peupler la base automatiquement avec dpkg). Nous avons choisi ici de garder la contrôle du nom de la base et de l'utilisateur mysql)?

&lt;code&gt;
mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7327
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database baseredmine character set utf8;
Query OK, 1 row affected (0.00 sec)

mysql&gt; create user 'mysqlredmine'@'localhost' identified by 'votre_mot-de-passe-pour-redmine';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; grant all privileges on baseredmine.* to 'mysqlredmine'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

== Installation redmine-mysql ==

 '''apt-get install redmine redmine-mysql libapache2-mod-passenger'''

Configurer la base: NON (Sauf si vous avez décidé de laisser dpkg s'occuper de ça)

 '''nano /etc/redmine/default/database.yml'''

 production:
   adapter: mysql
   database: baseredmine
   host: localhost
   port:
   username: mysqlredmine
   password: votre_mot-de-passe-pour-redmine
   encoding: utf8

Nous créons maintenant la structure de la base de donnée:

 '''cd /usr/share/redmine/'''
 '''RAILS_ENV=production rake db:migrate'''
 (in /usr/share/redmine)
 ==  Setup: migrating ==========================================================
 -- create_table(&quot;attachments&quot;, {:force=&gt;true})
    -&gt; 0.0993s
 -- create_table(&quot;auth_sources&quot;, {:force=&gt;true})
    -&gt; 0.0796s
 ...

Et nous y intégrons les données par défaut (Optionnel, mais fortement conseillé par RedMine)

 '''RAILS_ENV=production rake redmine:load_default_data'''
 (in /usr/share/redmine)
 
 Select language: bg, bs, ca, cs, da, de, el, en, en-GB, es, eu, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en] fr
 ====================================
 Default configuration data loaded.

=== Configuration de apache2 ===

Nous allons maintenant configurer apache2 pour l'intégration de RedMine. Les choix sont multiples quant à cette installation; Nous avons choisi un sous répertoire de /var/www et la création d'un sous-domaine dans notre DNS.

 '''ln -s /usr/share/redmine /var/www/redmine'''
 '''chown www-data:www-data /var/www/redmine/'''

 '''nano /etc/apache2/sites-available/redmine'''

&lt;code&gt;
&lt;VirtualHost ip_du_serveur:80&gt;
        ServerName redmine.serveur.tld
        Alias /redmine /var/www/redmine/public
        DocumentRoot /var/www/redmine/public
    &lt;Directory /var/www/redmine/public/&gt;
        PassengerAppRoot /var/www/redmine
        RailsBaseURI /
        AddHandler fastcgi-script .fcgi
        Options Indexes +ExecCGI FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    &lt;/Directory&gt;
&lt;/VirtualHost&gt;
&lt;/code&gt;

 '''/etc/apache2/sites-enabled/redmine'''
 '''service apache2 force-reload'''

Vous devriez maintenant être capable d'accéder à RedMine par votre navigateur (http://redmine.serveur.tld)

Login: admin
Mot de passe: admin

Il est fortement recommandé de changer le mot de passe...

=== Configuration des mails ===

Vous devrez maintenant configurer l'envoi des mails par Redmine (Il suffit de modifier les données à la fin du fichier pour qu'elles &quot;collent&quot; à votre configuration.

 '''cp /usr/share/doc/redmine/examples/email.yml.example /etc/redmine/default/email.yml'''
 '''nano /etc/redmine/default/email.yml'''

==== Activation du support tls pour la fonction mail ====

Il suffit d'ajouter un plugin en tapant les commandes suivantes:

 '''cd /usr/share/redmine/'''
 '''ruby script/plugin install git://github.com/collectiveidea/action_mailer_optional_tls.git'''
 '''db:migrate_plugins RAILS_ENV=production'''
 '''service apache2 restart'''

{{en}} Source: [http://www.redmineblog.com/articles/setup-redmine-to-send-email-using-gmail/ Setup redmine to send email using gmail]

=== Intégrer le dépôt Gitosis ===

Il faut maintenant intégrer notre dépôt Git à Redmine:

Créez un nouveau projet:
[[Fichier:Redmine1.png|240px]]

Configurez le chemin du dépôt:
[[Fichier:Redmine3.png|240px]]

Accédez au dépôt:
[[Fichier:Redmine4.png|240px]]

= Sources =

{{en}} [http://blog.mathiashabluetzel.ch/2011/09/01/installing-redmine-and-gitosis-on-a-debian-root-server-with-mysql/ Installing redmine and gitosis on a debian root server with mysql/]

{{fr}} [http://www.mickael-allain.fr/index.php?post/2010/03/06/Installation-et-configuration-de-son-serveur-Git-avec-Gitosis-sous-Debian-5 Installation et configuration de son serveur Git avec Gitosis sous Debian 5]

{{fr}} [http://www.sheevaboite.fr/article84/installer-serveur-git-auto-heberge-partie-1 Installer un serveur git auto hebergé]

[[Catégorie:Serveurs]]</text>
      <sha1>omu5fhyn8a0ofhayf3vuhwmvlrhkodw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Installation de Proftpd avec base de données Mysql + TLS et gestion des users virtuel à l'aide de proftpdadmin</title>
    <ns>0</ns>
    <id>713</id>
    <revision>
      <id>3145</id>
      <timestamp>2011-07-31T16:44:31Z</timestamp>
      <contributor>
        <username>Gilles974</username>
        <id>143</id>
      </contributor>
      <comment>Page créée avec « == Proftpd + Mysql + TLS + proftpdadmin ==   je ne réinvente pas la roue. Ce tuto est dérivé de plusieurs tutos existants. J'ai grandement modifier le proftpd.conf pour av... »</comment>
      <text xml:space="preserve" bytes="18734">== Proftpd + Mysql + TLS + proftpdadmin == 

je ne réinvente pas la roue. Ce tuto est dérivé de plusieurs tutos
existants. J'ai grandement modifier le proftpd.conf pour avoir
la meilleur protection possible.

on commence par installer les paquets utiles

&lt;code&gt;apt-get install proftpd-basic proftpd-mod-mysql&lt;/code&gt;

Une fois les paquets instalés, passez à l'installation des tables MySql

&lt;code&gt;
root@bougnat:# mysql -u root -pmon-mot-de-passe 
.....

mysql&gt; CREATE DATABASE proftpd;
....

mysql&gt; USE proftpd;
.....

mysql&gt; CREATE TABLE `ftpgroup` ( 
`groupname` varchar(16) NOT NULL default '', 
`gid` smallint(6) NOT NULL default '5500', 
`members` varchar(16) NOT NULL default '', 
KEY `groupname` (`groupname`) 
) TYPE=MyISAM COMMENT='Table des groupes ProFTPD'; 

......
 
mysql&gt; CREATE TABLE `ftpquotalimits` ( 
`name` varchar(30) default NULL, 
`quota_type` enum('user','group','class','all') NOT NULL default 'user', 
`par_session` enum('false','true') NOT NULL default 'false', 
`limit_type` enum('soft','hard') NOT NULL default 'soft', 
`bytes_up_limit` float NOT NULL default '0', 
`bytes_down_limit` float NOT NULL default '0', 
`bytes_transfer_limit` float NOT NULL default '0', 
`files_up_limit` int(10) unsigned NOT NULL default '0', 
`files_down_limit` int(10) unsigned NOT NULL default '0', 
`files_transfer_limit` int(10) unsigned NOT NULL default '0' 
) TYPE=MyISAM COMMENT='Table des quotas ProFTPD'; 

......

mysql&gt; CREATE TABLE `ftpquotatotal` ( 
`name` varchar(30) NOT NULL default '', 
`quota_type` enum('user','group','class','all') NOT NULL default 'user', 
`bytes_up_total` float NOT NULL default '0', 
`bytes_down_total` float NOT NULL default '0', 
`bytes_transfer_total` float NOT NULL default '0', 
`files_up_total` int(10) unsigned NOT NULL default '0', 
`files_down_total` int(10) unsigned NOT NULL default '0', 
`files_transfer_total` int(10) unsigned NOT NULL default '0' 
) TYPE=MyISAM COMMENT='Table des compteurs des quotas ProFTPD'; 

......

mysql&gt; CREATE TABLE `ftpuser` ( 
`id` int(10) unsigned NOT NULL auto_increment, 
`userid` varchar(32) NOT NULL default '', 
`passwd` varchar(32) NOT NULL default '', 
`uid` smallint(6) NOT NULL default '5500', 
`gid` smallint(6) NOT NULL default '5500', 
`homedir` varchar(255) NOT NULL default '', 
`shell` varchar(16) NOT NULL default '/bin/false', 
`count` int(11) NOT NULL default '0', 
`accessed` datetime NOT NULL default '0000-00-00 00:00:00', 
`modified` datetime NOT NULL default '0000-00-00 00:00:00', 
`LoginAllowed` enum('true','false') NOT NULL default 'true', 
PRIMARY KEY (`id`) 
) TYPE=MyISAM COMMENT='Table des utlisateurs ProFTPD' 

......
&lt;/code&gt;

Création un nouvel utilisateur possédant seulement les droits de lire les données de la base proftpd.
Remplacer &quot;password&quot; par votre mot de passe perso

&lt;code&gt;
mysql&gt; GRANT USAGE ON proftpd.* TO 'proftpd'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

.....

mysql&gt; FLUSH PRIVILEGES;

.....

mysql&gt; exit;
&lt;/code&gt;

=== Gestion des quotas ===

Pour activer les quotas, ouvrez le fichier /etc/proftpd/modules.conf et dé-commenter la ligne correspondant
à leur gestion.

&lt;code&gt;
LoadModule mod_quotatab_sql.c
&lt;/code&gt;

La table ftpquotalimits contient la description des quotas.

La table ftpquotatotal contient les statistiques d'utilisation correspondant aux règles des quotas défini dans la table ftpquotalimits. 

Pour définir un quota,  exécute la requête suivante en renseignant les champs selon votre bon vouloir

&lt;code&gt;
INSERT INTO `ftpquotalimits` ( `name`, `quota_type`, `par_session`, `limit_type`, `bytes_up_limit`, `bytes_down_limit`, `bytes_transfer_limit`, `files_up_limit`, `files_down_limit`, `files_transfer_limit` )
VALUES ( 'NOM' , 'TYPE', 'SESSION', 'LIMIT_TYPE', 'B_UP', 'B_DOWN', 'B_TRANS', 'F_UP', 'F_DOWN', 'F_TRANS');
&lt;/code&gt;

'''NOM :''' Nom de l'utilisateur, du groupe ou de la règle selon la valeur de TYPE.
'''TYPE :''' user si le quota s'applique à un utilisateur, group à un groupe, class à une classe (ici inutile), all à tous les utilisateurs.
'''SESSION :''' true si les quotas doivent être remis à zéro à chaque nouvelle session, false sinon. ('false' est conseillé).
'''LIMIT_TYPE :''' soft pour une mesure logicielle de la taille, hard pour une mesure hardware.
'''B_UP :''' Taille (en Mbytes) autorisé à être transféré sur le serveur.
'''B_DOWN :''' Taille (en Mbytes) autorisé à être téléchargé à partir du serveur.
'''B_TRANS :''' Taille (en Mbytes) autorisé à transféré sur et à partir du serveur (upload+download).
'''F_UP :''' Nombre de fichiers autorisé à être transféré sur le serveur.
'''F_DOWN :''' Nombre de fichiers autorisé à être téléchargé à partir du serveur.
'''F_TRANS :''' Nombre de fichiers autorisé à transféré sur et à partir du serveur (upload+download).

Pour définir un quota illimité à un des champs, mettez une valeur négative ou nulle.

'''ATTENTION :''' Les quotas de type '''all''', '''class''' ou '''group''' ne définissent pas un quota pour chaque utilisateur mais un quota partagé 
par tous les utilisateurs concernés par cette règle.

Pour réinitialiser les quotas, il suffit de supprimer l'entrée correspondante à la règle devant être réinitialisée. 
Par exemple si on veut effacer les règles de quota de l'utilisateur test, on exécute la requête SQL suivante :

&lt;code&gt;
DELETE FROM `ftpquotatotal` WHERE `name`='test';
&lt;/code&gt;

Pour réinitialiser tous les quotas, par exemple tous les mois, faites une tâche cron 
se connectant sur le serveur et exécutant la requête suivante :

&lt;code&gt;
TRUNCATE TABLE `ftpquotatotal`;
&lt;/code&gt;


=== Le gros du morceau : proftpd.conf ===

commencer par faire une sauvegarde du fichier d'origine

&lt;code&gt;
root@bougnat:# cp /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.conf.sos
&lt;/code&gt;

et ouvrez le fichier. Les commentaires sont dans le fichier de conf

&lt;code&gt;
root@bougnat:# vi /etc/proftpd/proftpd.conf

#
# /etc/proftpd/proftpd.conf -- This is a basic ProFTPD configuration file.
# To really apply changes reload proftpd after modifications.
#

# Includes DSO modules
Include /etc/proftpd/modules.conf

# Set off to disable IPv6 support which is annoying on IPv4 only boxes.
UseIPv6                         off
# If set on you can experience a longer connection delay in many cases.
IdentLookups                    off

ServerName                      &quot;Charbon Ltd&quot;
ServerType                      standalone
ServerIdent                     on &quot;Serveur FTP de Charbon Ltd.&quot;
DeferWelcome                    off

MultilineRFC2228                on
DefaultServer                   on

# on cache les liens symboliques
ShowSymlinks                    off

TimeoutNoTransfer               600
TimeoutStalled                  600
TimeoutIdle                     1200

DisplayLogin                    welcome.msg
DisplayChdir                    .message true

# On limite le nombre de tentatives de login à 3.
MaxLoginAttempts                 3

# nombre de connections par client
MaxClientsPerHost               3

# nombres de clients max
MaxClients                      10

# TRES IMPORTANT : permettra de cacher les fichiers cachés :o)
#ListOptions                    &quot;-l&quot;
ListOptions 			&quot;&quot; strict

DenyFilter                      \*.*/

# On chroot tous les users dans leur homes
DefaultRoot                     ~

# On désactive le login root
RootLogin                        off

# directive qui n'affiche pas les fichiers cachés
&lt;Directory /&gt;
  HideFiles ^\..*
  &lt;Limit ALL&gt;
    IgnoreHidden On
  &lt;/Limit&gt;
&lt;/Directory&gt;

# Pas de shell pour les users
RequireValidShell               off

# Port 21 is the standard FTP port.
Port                            210

# In some cases you have to specify passive ports range to by-pass
# firewall limitations. Ephemeral ports can be used for that, but
# feel free to use a more narrow range.
PassivePorts                  53000 54000

# If your host was NATted, this option is useful in order to
# allow passive tranfers to work. You have to use your public
# address and opening the passive ports used on your firewall as well.
#MasqueradeAddress      www.mondomaine.fr

# This is useful for masquerading address with dynamic IPs:
# refresh any configured MasqueradeAddress directives every 8 hours
&lt;IfModule mod_dynmasq.c&gt;
# DynMasqRefresh 28800
&lt;/IfModule&gt;

# To prevent DoS attacks, set the maximum number of child processes
# to 30.  If you need to allow more than 30 concurrent connections
# at once, simply increase this value.  Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd)
MaxInstances                    30

# Set the user and group that the server normally runs at.
User                            proftpd
Group                           nogroup

# Umask 022 is a good standard umask to prevent new files and dirs
# (second parm) from being group and world writable.
Umask                           022  022
# Normally, we want files to be overwriteable.
AllowOverwrite                  on

# Autorise la reprise des téléchargements.
AllowRetrieveRestart on

# Autorise les clients à reprendre les Uploads vers vous.
AllowStoreRestart on

# Autorise seulement les noms de fichiers normaux (caractères alphanumérique)
PathAllowFilter &quot;[a-zA-Z0-9]&quot;

# Refuse l'upload de fichiers .ftpaccess ou .htaccess
PathDenyFilter &quot;(\.ftp)|(\.hta)[a-z]+$&quot;

# N'autorise pas de passer des printf-Formats.
AllowFilter &quot;^[a-zA-Z0-9@~ /,_.-]*$&quot;
DenyFilter &quot;%&quot;

# Recupere l'ip de la machine de l'utilisateur
 IdentLookups 			on

# Uncomment this if you are using NIS or LDAP via NSS to retrieve passwords:
# PersistentPasswd              off

# This is required to use both PAM-based authentication and local passwords
# AuthOrder                     mod_auth_pam.c* mod_auth_unix.c

# Be warned: use of this directive impacts CPU average load!
# Uncomment this if you like to see progress and transfer rate with ftpwho
# in downloads. That is not needed for uploads rates.
#
# UseSendFile                   off

TransferLog /var/log/proftpd/xferlog
SystemLog   /var/log/proftpd/proftpd.log

# pour la gestions des users
&lt;IfModule mod_sql.c&gt;
 SQLBackend            mysql
&lt;/IfModule&gt;

&lt;IfModule mod_quotatab.c&gt;
QuotaEngine 		on
&lt;/IfModule&gt;

&lt;IfModule mod_ratio.c&gt;
Ratios 			off
&lt;/IfModule&gt;


# Delay engine reduces impact of the so-called Timing Attack described in
# http://security.lss.hr/index.php?page=details&amp;ID=LSS-2004-10-02
# It is on by default.
&lt;IfModule mod_delay.c&gt;
DelayEngine 		on
&lt;/IfModule&gt;

&lt;IfModule mod_ctrls.c&gt;
ControlsEngine        on
ControlsMaxClients    2
ControlsLog           /var/log/proftpd/controls.log
ControlsInterval      5
ControlsSocket        /var/run/proftpd/proftpd.sock
&lt;/IfModule&gt;

&lt;IfModule mod_ctrls_admin.c&gt;
AdminControlsEngine 	on
&lt;/IfModule&gt;

#
# Alternative authentication frameworks
#
#Include /etc/proftpd/ldap.conf
#Include /etc/proftpd/sql.conf

#
# This is used for FTPS connections
#
Include /etc/proftpd/tls.conf

#
# Useful to keep VirtualHost/VirtualRoot directives separated
#
#Include /etc/proftpd/virtuals.conf

# Mod MySQL
# =========
# Les mots de passe sont cryptes dans la base avec la fonction ENCRYPT (MySQL)
SQLAuthTypes Crypt
SQLAuthenticate users* groups*

# Modifiez cette ligne selon l'utilisateur et le mot de passe definit plutot
SQLConnectInfo proftpd@localhost proftpd mon-mot-de-passe

# On donne a ProFTPd le nom des colonnes de la table usertable
SQLUserInfo ftpuser userid passwd uid gid homedir shell
SQLUserWhereClause &quot;LoginAllowed = 'true'&quot;

# On donne a ProFTPd le nom des colonnes de la table &quot;grouptable&quot;
SQLGroupInfo ftpgroup groupname gid members

# Création automatique du repertoire de l'utilisateur si il n'existe pas
CreateHome 		on

# Met a jour les compteurs à chaque connection d'un utilisateur
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE &quot;count=count+1, accessed=now() WHERE userid='%u'&quot; ftpuser

# Met a jour les compteurs a chaque upload ou download d'un utilisateur
SQLLog STOR,RETR modified
SQLNamedQuery modified UPDATE &quot;modified=now() WHERE userid='%u'&quot; ftpuser

# Mod quota
# =========
QuotaEngine on
QuotaDirectoryTally on
QuotaDisplayUnits Mb
QuotaShowQuotas on

# Definit les requetes SQL pour que ProFTPd recupere les infos sur les quotas
SQLNamedQuery get-quota-limit SELECT &quot;name, quota_type, par_session, limit_type, bytes_up_limit, bytes_down_limit, bytes_transfer_limit, files_up_limit, files_down_limit, files_transfer_limit FROM ftpquotalimits WHERE name = '%{0}' AND quota_type = '%{1}'&quot;

SQLNamedQuery get-quota-tally SELECT &quot;name, quota_type, bytes_up_total, bytes_down_total, bytes_transfer_total, files_up_total, files_down_total, files_transfer_total FROM ftpquotatotal WHERE name = '%{0}' AND quota_type = '%{1}'&quot;

SQLNamedQuery update-quota-tally UPDATE &quot;bytes_up_total = bytes_up_total + %{0}, bytes_down_total = bytes_down_total + %{1}, bytes_transfer_total = bytes_transfer_total + %{2}, files_up_total = files_up_total + %{3}, files_down_total = files_down_total + %{4}, files_transfer_total = files_transfer_total + %{5} WHERE name = '%{6}' AND quota_type = '%{7}'&quot; ftpquotatotal

SQLNamedQuery insert-quota-tally INSERT &quot;%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}&quot; ftpquotatotal

QuotaLimitTable sql:/get-quota-limit
QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally

# Gestion des logs
# ================
# Enregistre les requetes SQL dans /var/log/proftpd/mysql.log
SQLLogFile /var/log/proftpd/mysql.log

# Enregistre les authentifications
LogFormat auth &quot;%v [%P] %h %t \&quot;%r\&quot; %s&quot;
ExtendedLog /var/log/proftpd/auth.log AUTH auth

# Enregistre les acces aux fichiers
LogFormat write &quot;%h %l %u %t \&quot;%r\&quot; %s %b&quot;
ExtendedLog /var/log/proftpd/access.log WRITE,READ write
&lt;/code&gt;


=== Installation &amp; configuration de proftpdadmin ===


positionnez-vous dans /var/www

et prennez le paquet modifier de proftpadmin. Car celui d'origine
à quelque petits problèmes avec le TLS

on trouvera le paquet modifier à l'adresse ci-dessous

http://www.rt74.eu/public/dl/proftpdadmin.tar.gz

lancer les commandes suivantes:

&lt;code&gt;
root@bougnat:# wget -c http://www.rt74.eu/public/dl/proftpdadmin.tar.gz
root@bougnat:# gunzip *.gz 
root@bougnat:# tar xvf *.tar 
root@bougnat:# chown -R www-data.www-data proftpdadmin
&lt;/code&gt;

Création du virtualhost

&lt;code&gt;
root@bougnat:# vi /etc/apache2/sites-available/proftpdadmin.conf
&lt;/code&gt;

inserez les lignes suivantes dedans

&lt;code&gt;
Alias /ftpadmin &quot;/var/www/proftpdadmin&quot;

&lt;VirtualHost *:80&gt;
ServerName proftpdadmin
ServerAlias ftpadmin
ServerAdmin webmaster@mondomaine.fr
DocumentRoot /var/www/proftpdadmin

    &lt;Directory /var/www/proftpdadmin&gt;
        Options +FollowSymLinks
        AllowOverride All
        order allow,deny
        allow from all
    &lt;/Directory&gt;

# protection du repertoir config/

&lt;Directory /var/www/proftpdadmin/config&gt;
        Options -FollowSymLinks
        AllowOverride None
    &lt;/Directory&gt;

&lt;/VirtualHost&gt;
&lt;/code&gt;

relancer apache : '''root@bougnat:# apachectl restart'''

vérifiez l'accéssibilité à votre site

'''http://mondomaine.fr/ftpadmin/''' ou '''http://mon-IP/ftpadmin/'''


=== Sécurisons, un peux tout ça ===

dans un premier temps, occupons nous de l'accés. Comme on peut le voir
l'accés se fait en direct et en http:// .Pour éviter que des petits malins
impose leur compte, nous allons restriendre l'accés, en forcant l'admin
à rentrer un couple login/password.

mettez-vous à la racine du compte proftpdadmin et créée le fichier .htaccess

&lt;code&gt;
root@bougnat:# vi /var/www/proftpdadmin/.htaccess
&lt;/code&gt;

et inscrivez dedans les lignes suivantes

&lt;code&gt;
AuthName &quot;Acces prive&quot;
AuthType Basic
AuthUserFile &quot;/var/www/proftpdadmin/.htpasswd&quot;
AuthGroupFile /dev/null
&lt;Limit GET POST&gt;
order deny,allow
require valid-user
&lt;/Limit&gt;

&lt;IfModule mod_rewrite.c&gt;
  &lt;IfModule mod_ssl.c&gt;
        RewriteEngine on
        RewriteCond %{HTTPS} !^on$ [NC]
        #RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}       [L]
         RewriteRule (.*) https://www.mondomaine.fr/ftpadmin/       [L]
  &lt;/IfModule&gt;
&lt;/IfModule&gt;

La 1ér partie, concerne l'accés privé
La 2ème partie, concerne la rediction en https
&lt;/code&gt;

Une fois terminé, il va falloir autorise un user à acceder à la gestion du ftp
pour cela on va créer le fichier .htpasswd qui contiendra le couple login/password

pour les feigniants nous avons : http://www.websiteout.fr/htpasswd.php ou pire http://www.clockwatchers.com/htaccess_tool.html

et pour les puristes tapez la commande ci-dessous et répondez aux questions 

&lt;code&gt;
root@bougnat:# htpasswd -c /var/www/proftpdadmin/.htpasswd le-user-autorisé
&lt;/code&gt;

relancer apache : '''root@bougnat:# apachectl restart'''

revérifiez l'accéssibilité à votre site

un login/password vous sera demandé et vous êtes en https:// et non plus en http://

=== Connectons nous ===

Pour vous connectez avec filezilla ou tout autre client ftp utilisez pour le chiffrement

connecxion FT EXPLICITE sur TLS

Vérifions

&lt;code&gt;
Statut :	Connexion à 192.168.1.2:210...
Statut :	Connexion établie, attente du message d'accueil...
Réponse :	220 Serveur FTP de Charbon Ltd.
Commande :	AUTH TLS
Réponse :	234 AUTH TLS exécuté avec succès
Statut :	Initialisation de TLS...
Statut :	Vérification du certificat...
Commande :	USER tuto
Statut :	Connexion TLS/SSL établie.
Réponse :	331 Mot de passe requis pour tuto
Commande :	PASS ***********
Réponse :	230 Utilisateur tuto authentifié
Commande :	SYST
Réponse :	215 UNIX Type: L8
Commande :	FEAT
Réponse :	211-Features:
Réponse :	 LANG fr-FR.UTF-8*;fr-FR
Réponse :	 MDTM
Réponse :	 MFMT
Réponse :	 TVFS
Réponse :	 AUTH TLS
Réponse :	 UTF8
Réponse :	 MFF modify;UNIX.group;UNIX.mode;
Réponse :	 MLST modify*;perm*;size*;type*;unique*;UNIX.group*;UNIX.mode*;UNIX.owner*;
Réponse :	 PBSZ
Réponse :	 PROT
Réponse :	 SITE MKDIR
Réponse :	 SITE RMDIR
Réponse :	 SITE UTIME
Réponse :	 SITE SYMLINK
Réponse :	 REST STREAM
Réponse :	 SIZE
Réponse :	211 Fin
Commande :	OPTS UTF8 ON
Réponse :	200 UTF-8 activé
Commande :	PBSZ 0
Réponse :	200 PBSZ 0 exécuté avec succès
Commande :	PROT P
Réponse :	200 Protection set to Private
Statut :	Connecté
Statut :	Récupération du contenu du dossier...
Commande :	PWD
Réponse :	257 &quot;/&quot; est le répertoire courant
Commande :	TYPE I
Réponse :	200 Type paramétré à I
Commande :	PASV
Réponse :	227 Entering Passive Mode (192,168,1,2,210,201).
Commande :	MLSD
Réponse :	150 Ouverture d'une connexion de données en mode ASCII pour MLSD
Réponse :	226 Téléchargement terminé
Statut :	Contenu du dossier affiché avec succès
&lt;/code&gt;</text>
      <sha1>br46wokz43zr9giji9fdhf0o0znym5w</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3146</id>
      <parentid>3145</parentid>
      <timestamp>2011-07-31T16:45:34Z</timestamp>
      <contributor>
        <username>Gilles974</username>
        <id>143</id>
      </contributor>
      <text xml:space="preserve" bytes="18735">== Proftpd + Mysql + TLS + proftpdadmin == 

je ne réinvente pas la roue. Ce tuto est dérivé de plusieurs tutos
existants. J'ai grandement modifier le proftpd.conf pour avoir
la meilleur protection possible.

on commence par installer les paquets utiles

&lt;code&gt;apt-get install proftpd-basic proftpd-mod-mysql&lt;/code&gt;

Une fois les paquets installés, passez à l'installation des tables MySql

&lt;code&gt;
root@bougnat:# mysql -u root -pmon-mot-de-passe 
.....

mysql&gt; CREATE DATABASE proftpd;
....

mysql&gt; USE proftpd;
.....

mysql&gt; CREATE TABLE `ftpgroup` ( 
`groupname` varchar(16) NOT NULL default '', 
`gid` smallint(6) NOT NULL default '5500', 
`members` varchar(16) NOT NULL default '', 
KEY `groupname` (`groupname`) 
) TYPE=MyISAM COMMENT='Table des groupes ProFTPD'; 

......
 
mysql&gt; CREATE TABLE `ftpquotalimits` ( 
`name` varchar(30) default NULL, 
`quota_type` enum('user','group','class','all') NOT NULL default 'user', 
`par_session` enum('false','true') NOT NULL default 'false', 
`limit_type` enum('soft','hard') NOT NULL default 'soft', 
`bytes_up_limit` float NOT NULL default '0', 
`bytes_down_limit` float NOT NULL default '0', 
`bytes_transfer_limit` float NOT NULL default '0', 
`files_up_limit` int(10) unsigned NOT NULL default '0', 
`files_down_limit` int(10) unsigned NOT NULL default '0', 
`files_transfer_limit` int(10) unsigned NOT NULL default '0' 
) TYPE=MyISAM COMMENT='Table des quotas ProFTPD'; 

......

mysql&gt; CREATE TABLE `ftpquotatotal` ( 
`name` varchar(30) NOT NULL default '', 
`quota_type` enum('user','group','class','all') NOT NULL default 'user', 
`bytes_up_total` float NOT NULL default '0', 
`bytes_down_total` float NOT NULL default '0', 
`bytes_transfer_total` float NOT NULL default '0', 
`files_up_total` int(10) unsigned NOT NULL default '0', 
`files_down_total` int(10) unsigned NOT NULL default '0', 
`files_transfer_total` int(10) unsigned NOT NULL default '0' 
) TYPE=MyISAM COMMENT='Table des compteurs des quotas ProFTPD'; 

......

mysql&gt; CREATE TABLE `ftpuser` ( 
`id` int(10) unsigned NOT NULL auto_increment, 
`userid` varchar(32) NOT NULL default '', 
`passwd` varchar(32) NOT NULL default '', 
`uid` smallint(6) NOT NULL default '5500', 
`gid` smallint(6) NOT NULL default '5500', 
`homedir` varchar(255) NOT NULL default '', 
`shell` varchar(16) NOT NULL default '/bin/false', 
`count` int(11) NOT NULL default '0', 
`accessed` datetime NOT NULL default '0000-00-00 00:00:00', 
`modified` datetime NOT NULL default '0000-00-00 00:00:00', 
`LoginAllowed` enum('true','false') NOT NULL default 'true', 
PRIMARY KEY (`id`) 
) TYPE=MyISAM COMMENT='Table des utlisateurs ProFTPD' 

......
&lt;/code&gt;

Création un nouvel utilisateur possédant seulement les droits de lire les données de la base proftpd.
Remplacer &quot;password&quot; par votre mot de passe perso

&lt;code&gt;
mysql&gt; GRANT USAGE ON proftpd.* TO 'proftpd'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

.....

mysql&gt; FLUSH PRIVILEGES;

.....

mysql&gt; exit;
&lt;/code&gt;

=== Gestion des quotas ===

Pour activer les quotas, ouvrez le fichier /etc/proftpd/modules.conf et dé-commenter la ligne correspondant
à leur gestion.

&lt;code&gt;
LoadModule mod_quotatab_sql.c
&lt;/code&gt;

La table ftpquotalimits contient la description des quotas.

La table ftpquotatotal contient les statistiques d'utilisation correspondant aux règles des quotas défini dans la table ftpquotalimits. 

Pour définir un quota,  exécute la requête suivante en renseignant les champs selon votre bon vouloir

&lt;code&gt;
INSERT INTO `ftpquotalimits` ( `name`, `quota_type`, `par_session`, `limit_type`, `bytes_up_limit`, `bytes_down_limit`, `bytes_transfer_limit`, `files_up_limit`, `files_down_limit`, `files_transfer_limit` )
VALUES ( 'NOM' , 'TYPE', 'SESSION', 'LIMIT_TYPE', 'B_UP', 'B_DOWN', 'B_TRANS', 'F_UP', 'F_DOWN', 'F_TRANS');
&lt;/code&gt;

'''NOM :''' Nom de l'utilisateur, du groupe ou de la règle selon la valeur de TYPE.
'''TYPE :''' user si le quota s'applique à un utilisateur, group à un groupe, class à une classe (ici inutile), all à tous les utilisateurs.
'''SESSION :''' true si les quotas doivent être remis à zéro à chaque nouvelle session, false sinon. ('false' est conseillé).
'''LIMIT_TYPE :''' soft pour une mesure logicielle de la taille, hard pour une mesure hardware.
'''B_UP :''' Taille (en Mbytes) autorisé à être transféré sur le serveur.
'''B_DOWN :''' Taille (en Mbytes) autorisé à être téléchargé à partir du serveur.
'''B_TRANS :''' Taille (en Mbytes) autorisé à transféré sur et à partir du serveur (upload+download).
'''F_UP :''' Nombre de fichiers autorisé à être transféré sur le serveur.
'''F_DOWN :''' Nombre de fichiers autorisé à être téléchargé à partir du serveur.
'''F_TRANS :''' Nombre de fichiers autorisé à transféré sur et à partir du serveur (upload+download).

Pour définir un quota illimité à un des champs, mettez une valeur négative ou nulle.

'''ATTENTION :''' Les quotas de type '''all''', '''class''' ou '''group''' ne définissent pas un quota pour chaque utilisateur mais un quota partagé 
par tous les utilisateurs concernés par cette règle.

Pour réinitialiser les quotas, il suffit de supprimer l'entrée correspondante à la règle devant être réinitialisée. 
Par exemple si on veut effacer les règles de quota de l'utilisateur test, on exécute la requête SQL suivante :

&lt;code&gt;
DELETE FROM `ftpquotatotal` WHERE `name`='test';
&lt;/code&gt;

Pour réinitialiser tous les quotas, par exemple tous les mois, faites une tâche cron 
se connectant sur le serveur et exécutant la requête suivante :

&lt;code&gt;
TRUNCATE TABLE `ftpquotatotal`;
&lt;/code&gt;


=== Le gros du morceau : proftpd.conf ===

commencer par faire une sauvegarde du fichier d'origine

&lt;code&gt;
root@bougnat:# cp /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.conf.sos
&lt;/code&gt;

et ouvrez le fichier. Les commentaires sont dans le fichier de conf

&lt;code&gt;
root@bougnat:# vi /etc/proftpd/proftpd.conf

#
# /etc/proftpd/proftpd.conf -- This is a basic ProFTPD configuration file.
# To really apply changes reload proftpd after modifications.
#

# Includes DSO modules
Include /etc/proftpd/modules.conf

# Set off to disable IPv6 support which is annoying on IPv4 only boxes.
UseIPv6                         off
# If set on you can experience a longer connection delay in many cases.
IdentLookups                    off

ServerName                      &quot;Charbon Ltd&quot;
ServerType                      standalone
ServerIdent                     on &quot;Serveur FTP de Charbon Ltd.&quot;
DeferWelcome                    off

MultilineRFC2228                on
DefaultServer                   on

# on cache les liens symboliques
ShowSymlinks                    off

TimeoutNoTransfer               600
TimeoutStalled                  600
TimeoutIdle                     1200

DisplayLogin                    welcome.msg
DisplayChdir                    .message true

# On limite le nombre de tentatives de login à 3.
MaxLoginAttempts                 3

# nombre de connections par client
MaxClientsPerHost               3

# nombres de clients max
MaxClients                      10

# TRES IMPORTANT : permettra de cacher les fichiers cachés :o)
#ListOptions                    &quot;-l&quot;
ListOptions 			&quot;&quot; strict

DenyFilter                      \*.*/

# On chroot tous les users dans leur homes
DefaultRoot                     ~

# On désactive le login root
RootLogin                        off

# directive qui n'affiche pas les fichiers cachés
&lt;Directory /&gt;
  HideFiles ^\..*
  &lt;Limit ALL&gt;
    IgnoreHidden On
  &lt;/Limit&gt;
&lt;/Directory&gt;

# Pas de shell pour les users
RequireValidShell               off

# Port 21 is the standard FTP port.
Port                            210

# In some cases you have to specify passive ports range to by-pass
# firewall limitations. Ephemeral ports can be used for that, but
# feel free to use a more narrow range.
PassivePorts                  53000 54000

# If your host was NATted, this option is useful in order to
# allow passive tranfers to work. You have to use your public
# address and opening the passive ports used on your firewall as well.
#MasqueradeAddress      www.mondomaine.fr

# This is useful for masquerading address with dynamic IPs:
# refresh any configured MasqueradeAddress directives every 8 hours
&lt;IfModule mod_dynmasq.c&gt;
# DynMasqRefresh 28800
&lt;/IfModule&gt;

# To prevent DoS attacks, set the maximum number of child processes
# to 30.  If you need to allow more than 30 concurrent connections
# at once, simply increase this value.  Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd)
MaxInstances                    30

# Set the user and group that the server normally runs at.
User                            proftpd
Group                           nogroup

# Umask 022 is a good standard umask to prevent new files and dirs
# (second parm) from being group and world writable.
Umask                           022  022
# Normally, we want files to be overwriteable.
AllowOverwrite                  on

# Autorise la reprise des téléchargements.
AllowRetrieveRestart on

# Autorise les clients à reprendre les Uploads vers vous.
AllowStoreRestart on

# Autorise seulement les noms de fichiers normaux (caractères alphanumérique)
PathAllowFilter &quot;[a-zA-Z0-9]&quot;

# Refuse l'upload de fichiers .ftpaccess ou .htaccess
PathDenyFilter &quot;(\.ftp)|(\.hta)[a-z]+$&quot;

# N'autorise pas de passer des printf-Formats.
AllowFilter &quot;^[a-zA-Z0-9@~ /,_.-]*$&quot;
DenyFilter &quot;%&quot;

# Recupere l'ip de la machine de l'utilisateur
 IdentLookups 			on

# Uncomment this if you are using NIS or LDAP via NSS to retrieve passwords:
# PersistentPasswd              off

# This is required to use both PAM-based authentication and local passwords
# AuthOrder                     mod_auth_pam.c* mod_auth_unix.c

# Be warned: use of this directive impacts CPU average load!
# Uncomment this if you like to see progress and transfer rate with ftpwho
# in downloads. That is not needed for uploads rates.
#
# UseSendFile                   off

TransferLog /var/log/proftpd/xferlog
SystemLog   /var/log/proftpd/proftpd.log

# pour la gestions des users
&lt;IfModule mod_sql.c&gt;
 SQLBackend            mysql
&lt;/IfModule&gt;

&lt;IfModule mod_quotatab.c&gt;
QuotaEngine 		on
&lt;/IfModule&gt;

&lt;IfModule mod_ratio.c&gt;
Ratios 			off
&lt;/IfModule&gt;


# Delay engine reduces impact of the so-called Timing Attack described in
# http://security.lss.hr/index.php?page=details&amp;ID=LSS-2004-10-02
# It is on by default.
&lt;IfModule mod_delay.c&gt;
DelayEngine 		on
&lt;/IfModule&gt;

&lt;IfModule mod_ctrls.c&gt;
ControlsEngine        on
ControlsMaxClients    2
ControlsLog           /var/log/proftpd/controls.log
ControlsInterval      5
ControlsSocket        /var/run/proftpd/proftpd.sock
&lt;/IfModule&gt;

&lt;IfModule mod_ctrls_admin.c&gt;
AdminControlsEngine 	on
&lt;/IfModule&gt;

#
# Alternative authentication frameworks
#
#Include /etc/proftpd/ldap.conf
#Include /etc/proftpd/sql.conf

#
# This is used for FTPS connections
#
Include /etc/proftpd/tls.conf

#
# Useful to keep VirtualHost/VirtualRoot directives separated
#
#Include /etc/proftpd/virtuals.conf

# Mod MySQL
# =========
# Les mots de passe sont cryptes dans la base avec la fonction ENCRYPT (MySQL)
SQLAuthTypes Crypt
SQLAuthenticate users* groups*

# Modifiez cette ligne selon l'utilisateur et le mot de passe definit plutot
SQLConnectInfo proftpd@localhost proftpd mon-mot-de-passe

# On donne a ProFTPd le nom des colonnes de la table usertable
SQLUserInfo ftpuser userid passwd uid gid homedir shell
SQLUserWhereClause &quot;LoginAllowed = 'true'&quot;

# On donne a ProFTPd le nom des colonnes de la table &quot;grouptable&quot;
SQLGroupInfo ftpgroup groupname gid members

# Création automatique du repertoire de l'utilisateur si il n'existe pas
CreateHome 		on

# Met a jour les compteurs à chaque connection d'un utilisateur
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE &quot;count=count+1, accessed=now() WHERE userid='%u'&quot; ftpuser

# Met a jour les compteurs a chaque upload ou download d'un utilisateur
SQLLog STOR,RETR modified
SQLNamedQuery modified UPDATE &quot;modified=now() WHERE userid='%u'&quot; ftpuser

# Mod quota
# =========
QuotaEngine on
QuotaDirectoryTally on
QuotaDisplayUnits Mb
QuotaShowQuotas on

# Definit les requetes SQL pour que ProFTPd recupere les infos sur les quotas
SQLNamedQuery get-quota-limit SELECT &quot;name, quota_type, par_session, limit_type, bytes_up_limit, bytes_down_limit, bytes_transfer_limit, files_up_limit, files_down_limit, files_transfer_limit FROM ftpquotalimits WHERE name = '%{0}' AND quota_type = '%{1}'&quot;

SQLNamedQuery get-quota-tally SELECT &quot;name, quota_type, bytes_up_total, bytes_down_total, bytes_transfer_total, files_up_total, files_down_total, files_transfer_total FROM ftpquotatotal WHERE name = '%{0}' AND quota_type = '%{1}'&quot;

SQLNamedQuery update-quota-tally UPDATE &quot;bytes_up_total = bytes_up_total + %{0}, bytes_down_total = bytes_down_total + %{1}, bytes_transfer_total = bytes_transfer_total + %{2}, files_up_total = files_up_total + %{3}, files_down_total = files_down_total + %{4}, files_transfer_total = files_transfer_total + %{5} WHERE name = '%{6}' AND quota_type = '%{7}'&quot; ftpquotatotal

SQLNamedQuery insert-quota-tally INSERT &quot;%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}&quot; ftpquotatotal

QuotaLimitTable sql:/get-quota-limit
QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally

# Gestion des logs
# ================
# Enregistre les requetes SQL dans /var/log/proftpd/mysql.log
SQLLogFile /var/log/proftpd/mysql.log

# Enregistre les authentifications
LogFormat auth &quot;%v [%P] %h %t \&quot;%r\&quot; %s&quot;
ExtendedLog /var/log/proftpd/auth.log AUTH auth

# Enregistre les acces aux fichiers
LogFormat write &quot;%h %l %u %t \&quot;%r\&quot; %s %b&quot;
ExtendedLog /var/log/proftpd/access.log WRITE,READ write
&lt;/code&gt;


=== Installation &amp; configuration de proftpdadmin ===


positionnez-vous dans /var/www

et prennez le paquet modifier de proftpadmin. Car celui d'origine
à quelque petits problèmes avec le TLS

on trouvera le paquet modifier à l'adresse ci-dessous

http://www.rt74.eu/public/dl/proftpdadmin.tar.gz

lancer les commandes suivantes:

&lt;code&gt;
root@bougnat:# wget -c http://www.rt74.eu/public/dl/proftpdadmin.tar.gz
root@bougnat:# gunzip *.gz 
root@bougnat:# tar xvf *.tar 
root@bougnat:# chown -R www-data.www-data proftpdadmin
&lt;/code&gt;

Création du virtualhost

&lt;code&gt;
root@bougnat:# vi /etc/apache2/sites-available/proftpdadmin.conf
&lt;/code&gt;

inserez les lignes suivantes dedans

&lt;code&gt;
Alias /ftpadmin &quot;/var/www/proftpdadmin&quot;

&lt;VirtualHost *:80&gt;
ServerName proftpdadmin
ServerAlias ftpadmin
ServerAdmin webmaster@mondomaine.fr
DocumentRoot /var/www/proftpdadmin

    &lt;Directory /var/www/proftpdadmin&gt;
        Options +FollowSymLinks
        AllowOverride All
        order allow,deny
        allow from all
    &lt;/Directory&gt;

# protection du repertoir config/

&lt;Directory /var/www/proftpdadmin/config&gt;
        Options -FollowSymLinks
        AllowOverride None
    &lt;/Directory&gt;

&lt;/VirtualHost&gt;
&lt;/code&gt;

relancer apache : '''root@bougnat:# apachectl restart'''

vérifiez l'accéssibilité à votre site

'''http://mondomaine.fr/ftpadmin/''' ou '''http://mon-IP/ftpadmin/'''


=== Sécurisons, un peux tout ça ===

dans un premier temps, occupons nous de l'accés. Comme on peut le voir
l'accés se fait en direct et en http:// .Pour éviter que des petits malins
impose leur compte, nous allons restriendre l'accés, en forcant l'admin
à rentrer un couple login/password.

mettez-vous à la racine du compte proftpdadmin et créée le fichier .htaccess

&lt;code&gt;
root@bougnat:# vi /var/www/proftpdadmin/.htaccess
&lt;/code&gt;

et inscrivez dedans les lignes suivantes

&lt;code&gt;
AuthName &quot;Acces prive&quot;
AuthType Basic
AuthUserFile &quot;/var/www/proftpdadmin/.htpasswd&quot;
AuthGroupFile /dev/null
&lt;Limit GET POST&gt;
order deny,allow
require valid-user
&lt;/Limit&gt;

&lt;IfModule mod_rewrite.c&gt;
  &lt;IfModule mod_ssl.c&gt;
        RewriteEngine on
        RewriteCond %{HTTPS} !^on$ [NC]
        #RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}       [L]
         RewriteRule (.*) https://www.mondomaine.fr/ftpadmin/       [L]
  &lt;/IfModule&gt;
&lt;/IfModule&gt;

La 1ér partie, concerne l'accés privé
La 2ème partie, concerne la rediction en https
&lt;/code&gt;

Une fois terminé, il va falloir autorise un user à acceder à la gestion du ftp
pour cela on va créer le fichier .htpasswd qui contiendra le couple login/password

pour les feigniants nous avons : http://www.websiteout.fr/htpasswd.php ou pire http://www.clockwatchers.com/htaccess_tool.html

et pour les puristes tapez la commande ci-dessous et répondez aux questions 

&lt;code&gt;
root@bougnat:# htpasswd -c /var/www/proftpdadmin/.htpasswd le-user-autorisé
&lt;/code&gt;

relancer apache : '''root@bougnat:# apachectl restart'''

revérifiez l'accéssibilité à votre site

un login/password vous sera demandé et vous êtes en https:// et non plus en http://

=== Connectons nous ===

Pour vous connectez avec filezilla ou tout autre client ftp utilisez pour le chiffrement

connecxion FT EXPLICITE sur TLS

Vérifions

&lt;code&gt;
Statut :	Connexion à 192.168.1.2:210...
Statut :	Connexion établie, attente du message d'accueil...
Réponse :	220 Serveur FTP de Charbon Ltd.
Commande :	AUTH TLS
Réponse :	234 AUTH TLS exécuté avec succès
Statut :	Initialisation de TLS...
Statut :	Vérification du certificat...
Commande :	USER tuto
Statut :	Connexion TLS/SSL établie.
Réponse :	331 Mot de passe requis pour tuto
Commande :	PASS ***********
Réponse :	230 Utilisateur tuto authentifié
Commande :	SYST
Réponse :	215 UNIX Type: L8
Commande :	FEAT
Réponse :	211-Features:
Réponse :	 LANG fr-FR.UTF-8*;fr-FR
Réponse :	 MDTM
Réponse :	 MFMT
Réponse :	 TVFS
Réponse :	 AUTH TLS
Réponse :	 UTF8
Réponse :	 MFF modify;UNIX.group;UNIX.mode;
Réponse :	 MLST modify*;perm*;size*;type*;unique*;UNIX.group*;UNIX.mode*;UNIX.owner*;
Réponse :	 PBSZ
Réponse :	 PROT
Réponse :	 SITE MKDIR
Réponse :	 SITE RMDIR
Réponse :	 SITE UTIME
Réponse :	 SITE SYMLINK
Réponse :	 REST STREAM
Réponse :	 SIZE
Réponse :	211 Fin
Commande :	OPTS UTF8 ON
Réponse :	200 UTF-8 activé
Commande :	PBSZ 0
Réponse :	200 PBSZ 0 exécuté avec succès
Commande :	PROT P
Réponse :	200 Protection set to Private
Statut :	Connecté
Statut :	Récupération du contenu du dossier...
Commande :	PWD
Réponse :	257 &quot;/&quot; est le répertoire courant
Commande :	TYPE I
Réponse :	200 Type paramétré à I
Commande :	PASV
Réponse :	227 Entering Passive Mode (192,168,1,2,210,201).
Commande :	MLSD
Réponse :	150 Ouverture d'une connexion de données en mode ASCII pour MLSD
Réponse :	226 Téléchargement terminé
Statut :	Contenu du dossier affiché avec succès
&lt;/code&gt;</text>
      <sha1>95k9udmtjg19u7pfns65a24l604dcf0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3150</id>
      <parentid>3146</parentid>
      <timestamp>2011-08-01T05:54:03Z</timestamp>
      <contributor>
        <username>Gilles974</username>
        <id>143</id>
      </contributor>
      <comment>/* Gestion des quotas */</comment>
      <text xml:space="preserve" bytes="18743">== Proftpd + Mysql + TLS + proftpdadmin == 

je ne réinvente pas la roue. Ce tuto est dérivé de plusieurs tutos
existants. J'ai grandement modifier le proftpd.conf pour avoir
la meilleur protection possible.

on commence par installer les paquets utiles

&lt;code&gt;apt-get install proftpd-basic proftpd-mod-mysql&lt;/code&gt;

Une fois les paquets installés, passez à l'installation des tables MySql

&lt;code&gt;
root@bougnat:# mysql -u root -pmon-mot-de-passe 
.....

mysql&gt; CREATE DATABASE proftpd;
....

mysql&gt; USE proftpd;
.....

mysql&gt; CREATE TABLE `ftpgroup` ( 
`groupname` varchar(16) NOT NULL default '', 
`gid` smallint(6) NOT NULL default '5500', 
`members` varchar(16) NOT NULL default '', 
KEY `groupname` (`groupname`) 
) TYPE=MyISAM COMMENT='Table des groupes ProFTPD'; 

......
 
mysql&gt; CREATE TABLE `ftpquotalimits` ( 
`name` varchar(30) default NULL, 
`quota_type` enum('user','group','class','all') NOT NULL default 'user', 
`par_session` enum('false','true') NOT NULL default 'false', 
`limit_type` enum('soft','hard') NOT NULL default 'soft', 
`bytes_up_limit` float NOT NULL default '0', 
`bytes_down_limit` float NOT NULL default '0', 
`bytes_transfer_limit` float NOT NULL default '0', 
`files_up_limit` int(10) unsigned NOT NULL default '0', 
`files_down_limit` int(10) unsigned NOT NULL default '0', 
`files_transfer_limit` int(10) unsigned NOT NULL default '0' 
) TYPE=MyISAM COMMENT='Table des quotas ProFTPD'; 

......

mysql&gt; CREATE TABLE `ftpquotatotal` ( 
`name` varchar(30) NOT NULL default '', 
`quota_type` enum('user','group','class','all') NOT NULL default 'user', 
`bytes_up_total` float NOT NULL default '0', 
`bytes_down_total` float NOT NULL default '0', 
`bytes_transfer_total` float NOT NULL default '0', 
`files_up_total` int(10) unsigned NOT NULL default '0', 
`files_down_total` int(10) unsigned NOT NULL default '0', 
`files_transfer_total` int(10) unsigned NOT NULL default '0' 
) TYPE=MyISAM COMMENT='Table des compteurs des quotas ProFTPD'; 

......

mysql&gt; CREATE TABLE `ftpuser` ( 
`id` int(10) unsigned NOT NULL auto_increment, 
`userid` varchar(32) NOT NULL default '', 
`passwd` varchar(32) NOT NULL default '', 
`uid` smallint(6) NOT NULL default '5500', 
`gid` smallint(6) NOT NULL default '5500', 
`homedir` varchar(255) NOT NULL default '', 
`shell` varchar(16) NOT NULL default '/bin/false', 
`count` int(11) NOT NULL default '0', 
`accessed` datetime NOT NULL default '0000-00-00 00:00:00', 
`modified` datetime NOT NULL default '0000-00-00 00:00:00', 
`LoginAllowed` enum('true','false') NOT NULL default 'true', 
PRIMARY KEY (`id`) 
) TYPE=MyISAM COMMENT='Table des utlisateurs ProFTPD' 

......
&lt;/code&gt;

Création un nouvel utilisateur possédant seulement les droits de lire les données de la base proftpd.
Remplacer &quot;password&quot; par votre mot de passe perso

&lt;code&gt;
mysql&gt; GRANT USAGE ON proftpd.* TO 'proftpd'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

.....

mysql&gt; FLUSH PRIVILEGES;

.....

mysql&gt; exit;
&lt;/code&gt;

=== Gestion des quotas ===

Pour activer les quotas, ouvrez le fichier /etc/proftpd/modules.conf et dé-commenter la ligne correspondant
à leur gestion.

&lt;code&gt;
LoadModule mod_quotatab_sql.c
&lt;/code&gt;

La table ftpquotalimits contient la description des quotas.

La table ftpquotatotal contient les statistiques d'utilisation correspondant aux règles des quotas défini dans la table ftpquotalimits. 

Pour définir un quota,  exécute la requête suivante en renseignant les champs selon votre bon vouloir

&lt;code&gt;
INSERT INTO `ftpquotalimits` ( `name`, `quota_type`, `par_session`, `limit_type`, `bytes_up_limit`, `bytes_down_limit`, `bytes_transfer_limit`, `files_up_limit`, `files_down_limit`, `files_transfer_limit` )
VALUES ( 'NOM' , 'TYPE', 'SESSION', 'LIMIT_TYPE', 'B_UP', 'B_DOWN', 'B_TRANS', 'F_UP', 'F_DOWN', 'F_TRANS');
&lt;/code&gt;

'''NOM :''' Nom de l'utilisateur, du groupe ou de la règle selon la valeur de TYPE.

'''TYPE :''' user si le quota s'applique à un utilisateur, group à un groupe, class à une classe (ici inutile), all à tous les utilisateurs.

'''SESSION :''' true si les quotas doivent être remis à zéro à chaque nouvelle session, false sinon. ('false' est conseillé).

'''LIMIT_TYPE :''' soft pour une mesure logicielle de la taille, hard pour une mesure hardware.

'''B_UP :''' Taille (en Mbytes) autorisé à être transféré sur le serveur.

'''B_DOWN :''' Taille (en Mbytes) autorisé à être téléchargé à partir du serveur.

'''B_TRANS :''' Taille (en Mbytes) autorisé à transféré sur et à partir du serveur (upload+download).

'''F_UP :''' Nombre de fichiers autorisé à être transféré sur le serveur.

'''F_DOWN :''' Nombre de fichiers autorisé à être téléchargé à partir du serveur.

'''F_TRANS :''' Nombre de fichiers autorisé à transféré sur et à partir du serveur (upload+download).

Pour définir un quota illimité à un des champs, mettez une valeur négative ou nulle.

'''ATTENTION :''' Les quotas de type '''all''', '''class''' ou '''group''' ne définissent pas un quota pour chaque utilisateur mais un quota partagé 
par tous les utilisateurs concernés par cette règle.

Pour réinitialiser les quotas, il suffit de supprimer l'entrée correspondante à la règle devant être réinitialisée. 
Par exemple si on veut effacer les règles de quota de l'utilisateur test, on exécute la requête SQL suivante :

&lt;code&gt;
DELETE FROM `ftpquotatotal` WHERE `name`='test';
&lt;/code&gt;

Pour réinitialiser tous les quotas, par exemple tous les mois, faites une tâche cron 
se connectant sur le serveur et exécutant la requête suivante :

&lt;code&gt;
TRUNCATE TABLE `ftpquotatotal`;
&lt;/code&gt;

=== Le gros du morceau : proftpd.conf ===

commencer par faire une sauvegarde du fichier d'origine

&lt;code&gt;
root@bougnat:# cp /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.conf.sos
&lt;/code&gt;

et ouvrez le fichier. Les commentaires sont dans le fichier de conf

&lt;code&gt;
root@bougnat:# vi /etc/proftpd/proftpd.conf

#
# /etc/proftpd/proftpd.conf -- This is a basic ProFTPD configuration file.
# To really apply changes reload proftpd after modifications.
#

# Includes DSO modules
Include /etc/proftpd/modules.conf

# Set off to disable IPv6 support which is annoying on IPv4 only boxes.
UseIPv6                         off
# If set on you can experience a longer connection delay in many cases.
IdentLookups                    off

ServerName                      &quot;Charbon Ltd&quot;
ServerType                      standalone
ServerIdent                     on &quot;Serveur FTP de Charbon Ltd.&quot;
DeferWelcome                    off

MultilineRFC2228                on
DefaultServer                   on

# on cache les liens symboliques
ShowSymlinks                    off

TimeoutNoTransfer               600
TimeoutStalled                  600
TimeoutIdle                     1200

DisplayLogin                    welcome.msg
DisplayChdir                    .message true

# On limite le nombre de tentatives de login à 3.
MaxLoginAttempts                 3

# nombre de connections par client
MaxClientsPerHost               3

# nombres de clients max
MaxClients                      10

# TRES IMPORTANT : permettra de cacher les fichiers cachés :o)
#ListOptions                    &quot;-l&quot;
ListOptions 			&quot;&quot; strict

DenyFilter                      \*.*/

# On chroot tous les users dans leur homes
DefaultRoot                     ~

# On désactive le login root
RootLogin                        off

# directive qui n'affiche pas les fichiers cachés
&lt;Directory /&gt;
  HideFiles ^\..*
  &lt;Limit ALL&gt;
    IgnoreHidden On
  &lt;/Limit&gt;
&lt;/Directory&gt;

# Pas de shell pour les users
RequireValidShell               off

# Port 21 is the standard FTP port.
Port                            210

# In some cases you have to specify passive ports range to by-pass
# firewall limitations. Ephemeral ports can be used for that, but
# feel free to use a more narrow range.
PassivePorts                  53000 54000

# If your host was NATted, this option is useful in order to
# allow passive tranfers to work. You have to use your public
# address and opening the passive ports used on your firewall as well.
#MasqueradeAddress      www.mondomaine.fr

# This is useful for masquerading address with dynamic IPs:
# refresh any configured MasqueradeAddress directives every 8 hours
&lt;IfModule mod_dynmasq.c&gt;
# DynMasqRefresh 28800
&lt;/IfModule&gt;

# To prevent DoS attacks, set the maximum number of child processes
# to 30.  If you need to allow more than 30 concurrent connections
# at once, simply increase this value.  Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd)
MaxInstances                    30

# Set the user and group that the server normally runs at.
User                            proftpd
Group                           nogroup

# Umask 022 is a good standard umask to prevent new files and dirs
# (second parm) from being group and world writable.
Umask                           022  022
# Normally, we want files to be overwriteable.
AllowOverwrite                  on

# Autorise la reprise des téléchargements.
AllowRetrieveRestart on

# Autorise les clients à reprendre les Uploads vers vous.
AllowStoreRestart on

# Autorise seulement les noms de fichiers normaux (caractères alphanumérique)
PathAllowFilter &quot;[a-zA-Z0-9]&quot;

# Refuse l'upload de fichiers .ftpaccess ou .htaccess
PathDenyFilter &quot;(\.ftp)|(\.hta)[a-z]+$&quot;

# N'autorise pas de passer des printf-Formats.
AllowFilter &quot;^[a-zA-Z0-9@~ /,_.-]*$&quot;
DenyFilter &quot;%&quot;

# Recupere l'ip de la machine de l'utilisateur
 IdentLookups 			on

# Uncomment this if you are using NIS or LDAP via NSS to retrieve passwords:
# PersistentPasswd              off

# This is required to use both PAM-based authentication and local passwords
# AuthOrder                     mod_auth_pam.c* mod_auth_unix.c

# Be warned: use of this directive impacts CPU average load!
# Uncomment this if you like to see progress and transfer rate with ftpwho
# in downloads. That is not needed for uploads rates.
#
# UseSendFile                   off

TransferLog /var/log/proftpd/xferlog
SystemLog   /var/log/proftpd/proftpd.log

# pour la gestions des users
&lt;IfModule mod_sql.c&gt;
 SQLBackend            mysql
&lt;/IfModule&gt;

&lt;IfModule mod_quotatab.c&gt;
QuotaEngine 		on
&lt;/IfModule&gt;

&lt;IfModule mod_ratio.c&gt;
Ratios 			off
&lt;/IfModule&gt;


# Delay engine reduces impact of the so-called Timing Attack described in
# http://security.lss.hr/index.php?page=details&amp;ID=LSS-2004-10-02
# It is on by default.
&lt;IfModule mod_delay.c&gt;
DelayEngine 		on
&lt;/IfModule&gt;

&lt;IfModule mod_ctrls.c&gt;
ControlsEngine        on
ControlsMaxClients    2
ControlsLog           /var/log/proftpd/controls.log
ControlsInterval      5
ControlsSocket        /var/run/proftpd/proftpd.sock
&lt;/IfModule&gt;

&lt;IfModule mod_ctrls_admin.c&gt;
AdminControlsEngine 	on
&lt;/IfModule&gt;

#
# Alternative authentication frameworks
#
#Include /etc/proftpd/ldap.conf
#Include /etc/proftpd/sql.conf

#
# This is used for FTPS connections
#
Include /etc/proftpd/tls.conf

#
# Useful to keep VirtualHost/VirtualRoot directives separated
#
#Include /etc/proftpd/virtuals.conf

# Mod MySQL
# =========
# Les mots de passe sont cryptes dans la base avec la fonction ENCRYPT (MySQL)
SQLAuthTypes Crypt
SQLAuthenticate users* groups*

# Modifiez cette ligne selon l'utilisateur et le mot de passe definit plutot
SQLConnectInfo proftpd@localhost proftpd mon-mot-de-passe

# On donne a ProFTPd le nom des colonnes de la table usertable
SQLUserInfo ftpuser userid passwd uid gid homedir shell
SQLUserWhereClause &quot;LoginAllowed = 'true'&quot;

# On donne a ProFTPd le nom des colonnes de la table &quot;grouptable&quot;
SQLGroupInfo ftpgroup groupname gid members

# Création automatique du repertoire de l'utilisateur si il n'existe pas
CreateHome 		on

# Met a jour les compteurs à chaque connection d'un utilisateur
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE &quot;count=count+1, accessed=now() WHERE userid='%u'&quot; ftpuser

# Met a jour les compteurs a chaque upload ou download d'un utilisateur
SQLLog STOR,RETR modified
SQLNamedQuery modified UPDATE &quot;modified=now() WHERE userid='%u'&quot; ftpuser

# Mod quota
# =========
QuotaEngine on
QuotaDirectoryTally on
QuotaDisplayUnits Mb
QuotaShowQuotas on

# Definit les requetes SQL pour que ProFTPd recupere les infos sur les quotas
SQLNamedQuery get-quota-limit SELECT &quot;name, quota_type, par_session, limit_type, bytes_up_limit, bytes_down_limit, bytes_transfer_limit, files_up_limit, files_down_limit, files_transfer_limit FROM ftpquotalimits WHERE name = '%{0}' AND quota_type = '%{1}'&quot;

SQLNamedQuery get-quota-tally SELECT &quot;name, quota_type, bytes_up_total, bytes_down_total, bytes_transfer_total, files_up_total, files_down_total, files_transfer_total FROM ftpquotatotal WHERE name = '%{0}' AND quota_type = '%{1}'&quot;

SQLNamedQuery update-quota-tally UPDATE &quot;bytes_up_total = bytes_up_total + %{0}, bytes_down_total = bytes_down_total + %{1}, bytes_transfer_total = bytes_transfer_total + %{2}, files_up_total = files_up_total + %{3}, files_down_total = files_down_total + %{4}, files_transfer_total = files_transfer_total + %{5} WHERE name = '%{6}' AND quota_type = '%{7}'&quot; ftpquotatotal

SQLNamedQuery insert-quota-tally INSERT &quot;%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}&quot; ftpquotatotal

QuotaLimitTable sql:/get-quota-limit
QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally

# Gestion des logs
# ================
# Enregistre les requetes SQL dans /var/log/proftpd/mysql.log
SQLLogFile /var/log/proftpd/mysql.log

# Enregistre les authentifications
LogFormat auth &quot;%v [%P] %h %t \&quot;%r\&quot; %s&quot;
ExtendedLog /var/log/proftpd/auth.log AUTH auth

# Enregistre les acces aux fichiers
LogFormat write &quot;%h %l %u %t \&quot;%r\&quot; %s %b&quot;
ExtendedLog /var/log/proftpd/access.log WRITE,READ write
&lt;/code&gt;


=== Installation &amp; configuration de proftpdadmin ===


positionnez-vous dans /var/www

et prennez le paquet modifier de proftpadmin. Car celui d'origine
à quelque petits problèmes avec le TLS

on trouvera le paquet modifier à l'adresse ci-dessous

http://www.rt74.eu/public/dl/proftpdadmin.tar.gz

lancer les commandes suivantes:

&lt;code&gt;
root@bougnat:# wget -c http://www.rt74.eu/public/dl/proftpdadmin.tar.gz
root@bougnat:# gunzip *.gz 
root@bougnat:# tar xvf *.tar 
root@bougnat:# chown -R www-data.www-data proftpdadmin
&lt;/code&gt;

Création du virtualhost

&lt;code&gt;
root@bougnat:# vi /etc/apache2/sites-available/proftpdadmin.conf
&lt;/code&gt;

inserez les lignes suivantes dedans

&lt;code&gt;
Alias /ftpadmin &quot;/var/www/proftpdadmin&quot;

&lt;VirtualHost *:80&gt;
ServerName proftpdadmin
ServerAlias ftpadmin
ServerAdmin webmaster@mondomaine.fr
DocumentRoot /var/www/proftpdadmin

    &lt;Directory /var/www/proftpdadmin&gt;
        Options +FollowSymLinks
        AllowOverride All
        order allow,deny
        allow from all
    &lt;/Directory&gt;

# protection du repertoir config/

&lt;Directory /var/www/proftpdadmin/config&gt;
        Options -FollowSymLinks
        AllowOverride None
    &lt;/Directory&gt;

&lt;/VirtualHost&gt;
&lt;/code&gt;

relancer apache : '''root@bougnat:# apachectl restart'''

vérifiez l'accéssibilité à votre site

'''http://mondomaine.fr/ftpadmin/''' ou '''http://mon-IP/ftpadmin/'''


=== Sécurisons, un peux tout ça ===

dans un premier temps, occupons nous de l'accés. Comme on peut le voir
l'accés se fait en direct et en http:// .Pour éviter que des petits malins
impose leur compte, nous allons restriendre l'accés, en forcant l'admin
à rentrer un couple login/password.

mettez-vous à la racine du compte proftpdadmin et créée le fichier .htaccess

&lt;code&gt;
root@bougnat:# vi /var/www/proftpdadmin/.htaccess
&lt;/code&gt;

et inscrivez dedans les lignes suivantes

&lt;code&gt;
AuthName &quot;Acces prive&quot;
AuthType Basic
AuthUserFile &quot;/var/www/proftpdadmin/.htpasswd&quot;
AuthGroupFile /dev/null
&lt;Limit GET POST&gt;
order deny,allow
require valid-user
&lt;/Limit&gt;

&lt;IfModule mod_rewrite.c&gt;
  &lt;IfModule mod_ssl.c&gt;
        RewriteEngine on
        RewriteCond %{HTTPS} !^on$ [NC]
        #RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}       [L]
         RewriteRule (.*) https://www.mondomaine.fr/ftpadmin/       [L]
  &lt;/IfModule&gt;
&lt;/IfModule&gt;

La 1ér partie, concerne l'accés privé
La 2ème partie, concerne la rediction en https
&lt;/code&gt;

Une fois terminé, il va falloir autorise un user à acceder à la gestion du ftp
pour cela on va créer le fichier .htpasswd qui contiendra le couple login/password

pour les feigniants nous avons : http://www.websiteout.fr/htpasswd.php ou pire http://www.clockwatchers.com/htaccess_tool.html

et pour les puristes tapez la commande ci-dessous et répondez aux questions 

&lt;code&gt;
root@bougnat:# htpasswd -c /var/www/proftpdadmin/.htpasswd le-user-autorisé
&lt;/code&gt;

relancer apache : '''root@bougnat:# apachectl restart'''

revérifiez l'accéssibilité à votre site

un login/password vous sera demandé et vous êtes en https:// et non plus en http://

=== Connectons nous ===

Pour vous connectez avec filezilla ou tout autre client ftp utilisez pour le chiffrement

connecxion FT EXPLICITE sur TLS

Vérifions

&lt;code&gt;
Statut :	Connexion à 192.168.1.2:210...
Statut :	Connexion établie, attente du message d'accueil...
Réponse :	220 Serveur FTP de Charbon Ltd.
Commande :	AUTH TLS
Réponse :	234 AUTH TLS exécuté avec succès
Statut :	Initialisation de TLS...
Statut :	Vérification du certificat...
Commande :	USER tuto
Statut :	Connexion TLS/SSL établie.
Réponse :	331 Mot de passe requis pour tuto
Commande :	PASS ***********
Réponse :	230 Utilisateur tuto authentifié
Commande :	SYST
Réponse :	215 UNIX Type: L8
Commande :	FEAT
Réponse :	211-Features:
Réponse :	 LANG fr-FR.UTF-8*;fr-FR
Réponse :	 MDTM
Réponse :	 MFMT
Réponse :	 TVFS
Réponse :	 AUTH TLS
Réponse :	 UTF8
Réponse :	 MFF modify;UNIX.group;UNIX.mode;
Réponse :	 MLST modify*;perm*;size*;type*;unique*;UNIX.group*;UNIX.mode*;UNIX.owner*;
Réponse :	 PBSZ
Réponse :	 PROT
Réponse :	 SITE MKDIR
Réponse :	 SITE RMDIR
Réponse :	 SITE UTIME
Réponse :	 SITE SYMLINK
Réponse :	 REST STREAM
Réponse :	 SIZE
Réponse :	211 Fin
Commande :	OPTS UTF8 ON
Réponse :	200 UTF-8 activé
Commande :	PBSZ 0
Réponse :	200 PBSZ 0 exécuté avec succès
Commande :	PROT P
Réponse :	200 Protection set to Private
Statut :	Connecté
Statut :	Récupération du contenu du dossier...
Commande :	PWD
Réponse :	257 &quot;/&quot; est le répertoire courant
Commande :	TYPE I
Réponse :	200 Type paramétré à I
Commande :	PASV
Réponse :	227 Entering Passive Mode (192,168,1,2,210,201).
Commande :	MLSD
Réponse :	150 Ouverture d'une connexion de données en mode ASCII pour MLSD
Réponse :	226 Téléchargement terminé
Statut :	Contenu du dossier affiché avec succès
&lt;/code&gt;</text>
      <sha1>lq58lxbpikkqlbgqs5j2dqmn2vpnlev</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3153</id>
      <parentid>3150</parentid>
      <timestamp>2011-08-01T09:41:15Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Proftpd + Mysql + TLS + proftpdadmin */</comment>
      <text xml:space="preserve" bytes="18771">== Proftpd + Mysql + TLS + proftpdadmin == 

je ne réinvente pas la roue. Ce tuto est dérivé de plusieurs tutos
existants. J'ai grandement modifié le proftpd.conf pour avoir
la meilleure protection possible.

on commence par installer les paquets utiles

&lt;code&gt;apt-get install proftpd-basic proftpd-mod-mysql&lt;/code&gt;

Une fois les paquets installés, passez à l'installation des tables MySql

&lt;code&gt;
root@bougnat:# mysql -u root -pmon-mot-de-passe 
.....

mysql&gt; CREATE DATABASE proftpd;
....

mysql&gt; USE proftpd;
.....

mysql&gt; CREATE TABLE `ftpgroup` ( 
`groupname` varchar(16) NOT NULL default '', 
`gid` smallint(6) NOT NULL default '5500', 
`members` varchar(16) NOT NULL default '', 
KEY `groupname` (`groupname`) 
) TYPE=MyISAM COMMENT='Table des groupes ProFTPD'; 

......
 
mysql&gt; CREATE TABLE `ftpquotalimits` ( 
`name` varchar(30) default NULL, 
`quota_type` enum('user','group','class','all') NOT NULL default 'user', 
`par_session` enum('false','true') NOT NULL default 'false', 
`limit_type` enum('soft','hard') NOT NULL default 'soft', 
`bytes_up_limit` float NOT NULL default '0', 
`bytes_down_limit` float NOT NULL default '0', 
`bytes_transfer_limit` float NOT NULL default '0', 
`files_up_limit` int(10) unsigned NOT NULL default '0', 
`files_down_limit` int(10) unsigned NOT NULL default '0', 
`files_transfer_limit` int(10) unsigned NOT NULL default '0' 
) TYPE=MyISAM COMMENT='Table des quotas ProFTPD'; 

......

mysql&gt; CREATE TABLE `ftpquotatotal` ( 
`name` varchar(30) NOT NULL default '', 
`quota_type` enum('user','group','class','all') NOT NULL default 'user', 
`bytes_up_total` float NOT NULL default '0', 
`bytes_down_total` float NOT NULL default '0', 
`bytes_transfer_total` float NOT NULL default '0', 
`files_up_total` int(10) unsigned NOT NULL default '0', 
`files_down_total` int(10) unsigned NOT NULL default '0', 
`files_transfer_total` int(10) unsigned NOT NULL default '0' 
) TYPE=MyISAM COMMENT='Table des compteurs des quotas ProFTPD'; 

......

mysql&gt; CREATE TABLE `ftpuser` ( 
`id` int(10) unsigned NOT NULL auto_increment, 
`userid` varchar(32) NOT NULL default '', 
`passwd` varchar(32) NOT NULL default '', 
`uid` smallint(6) NOT NULL default '5500', 
`gid` smallint(6) NOT NULL default '5500', 
`homedir` varchar(255) NOT NULL default '', 
`shell` varchar(16) NOT NULL default '/bin/false', 
`count` int(11) NOT NULL default '0', 
`accessed` datetime NOT NULL default '0000-00-00 00:00:00', 
`modified` datetime NOT NULL default '0000-00-00 00:00:00', 
`LoginAllowed` enum('true','false') NOT NULL default 'true', 
PRIMARY KEY (`id`) 
) TYPE=MyISAM COMMENT='Table des utlisateurs ProFTPD' 

......
&lt;/code&gt;

Création d'un nouvel utilisateur possédant seulement les droits de lire les données de la base proftpd.
Remplacer &quot;password&quot; par votre mot de passe perso

&lt;code&gt;
mysql&gt; GRANT USAGE ON proftpd.* TO 'proftpd'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

.....

mysql&gt; FLUSH PRIVILEGES;

.....

mysql&gt; exit;
&lt;/code&gt;

=== Gestion des quotas ===

Pour activer les quotas, ouvrez le fichier /etc/proftpd/modules.conf et dé-commenter la ligne correspondant
à leur gestion.

&lt;code&gt;
LoadModule mod_quotatab_sql.c
&lt;/code&gt;

La table ftpquotalimits contient la description des quotas.

La table ftpquotatotal contient les statistiques d'utilisation correspondant aux règles des quotas défini dans la table ftpquotalimits. 

Pour définir un quota,  exécuter la requête suivante en renseignant les champs selon votre bon vouloir

&lt;code&gt;
INSERT INTO `ftpquotalimits` ( `name`, `quota_type`, `par_session`, `limit_type`, `bytes_up_limit`, `bytes_down_limit`, `bytes_transfer_limit`, `files_up_limit`, `files_down_limit`, `files_transfer_limit` )
VALUES ( 'NOM' , 'TYPE', 'SESSION', 'LIMIT_TYPE', 'B_UP', 'B_DOWN', 'B_TRANS', 'F_UP', 'F_DOWN', 'F_TRANS');
&lt;/code&gt;

'''NOM :''' Nom de l'utilisateur, du groupe ou de la règle selon la valeur de TYPE.

'''TYPE :''' user si le quota s'applique à un utilisateur, group à un groupe, class à une classe (ici inutile), all à tous les utilisateurs.

'''SESSION :''' true si les quotas doivent être remis à zéro à chaque nouvelle session, false sinon. ('false' est conseillé).

'''LIMIT_TYPE :''' soft pour une mesure logicielle de la taille, hard pour une mesure hardware.

'''B_UP :''' Taille (en Mbytes) autorisé à être transférée sur le serveur.

'''B_DOWN :''' Taille (en Mbytes) autorisé à être téléchargée à partir du serveur.

'''B_TRANS :''' Taille (en Mbytes) autorisé à transférée sur et à partir du serveur (upload+download).

'''F_UP :''' Nombre de fichiers autorisés à être transférés sur le serveur.

'''F_DOWN :''' Nombre de fichiers autorisés à être téléchargés à partir du serveur.

'''F_TRANS :''' Nombre de fichiers autorisés à transférés sur et à partir du serveur (upload+download).

Pour définir un quota illimité à un des champs, mettez une valeur négative ou nulle.

'''ATTENTION :''' Les quotas de type '''all''', '''class''' ou '''group''' ne définissent pas un quota pour chaque utilisateur mais un quota partagé 
pour tous les utilisateurs concernés par cette règle.

Pour réinitialiser les quotas, il suffit de supprimer l'entrée correspondante à la règle devant être réinitialisée. 
Par exemple si on veut effacer les règles de quota de l'utilisateur test, on exécute la requête SQL suivante :

&lt;code&gt;
DELETE FROM `ftpquotatotal` WHERE `name`='test';
&lt;/code&gt;

Pour réinitialiser tous les quotas, par exemple tous les mois, faites une tâche cron 
se connectant sur le serveur et exécutant la requête suivante :

&lt;code&gt;
TRUNCATE TABLE `ftpquotatotal`;
&lt;/code&gt;

=== Le gros du morceau : proftpd.conf ===

commencer par faire une sauvegarde du fichier d'origine

&lt;code&gt;
root@bougnat:# cp /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.conf.sos
&lt;/code&gt;

et ouvrez le fichier. Les commentaires sont dans le fichier de conf

&lt;code&gt;
root@bougnat:# vi /etc/proftpd/proftpd.conf

#
# /etc/proftpd/proftpd.conf -- This is a basic ProFTPD configuration file.
# To really apply changes reload proftpd after modifications.
#

# Includes DSO modules
Include /etc/proftpd/modules.conf

# Set off to disable IPv6 support which is annoying on IPv4 only boxes.
UseIPv6                         off
# If set on you can experience a longer connection delay in many cases.
IdentLookups                    off

ServerName                      &quot;Charbon Ltd&quot;
ServerType                      standalone
ServerIdent                     on &quot;Serveur FTP de Charbon Ltd.&quot;
DeferWelcome                    off

MultilineRFC2228                on
DefaultServer                   on

# on cache les liens symboliques
ShowSymlinks                    off

TimeoutNoTransfer               600
TimeoutStalled                  600
TimeoutIdle                     1200

DisplayLogin                    welcome.msg
DisplayChdir                    .message true

# On limite le nombre de tentatives de login à 3.
MaxLoginAttempts                 3

# nombre de connections par client
MaxClientsPerHost               3

# nombres de clients max
MaxClients                      10

# TRES IMPORTANT : permettra de cacher les fichiers cachés :o)
#ListOptions                    &quot;-l&quot;
ListOptions 			&quot;&quot; strict

DenyFilter                      \*.*/

# On chroot tous les users dans leur home
DefaultRoot                     ~

# On désactive le login root
RootLogin                        off

# directive qui n'affiche pas les fichiers cachés
&lt;Directory /&gt;
  HideFiles ^\..*
  &lt;Limit ALL&gt;
    IgnoreHidden On
  &lt;/Limit&gt;
&lt;/Directory&gt;

# Pas de shell pour les users
RequireValidShell               off

# Port 21 is the standard FTP port.
Port                            210

# In some cases you have to specify passive ports range to by-pass
# firewall limitations. Ephemeral ports can be used for that, but
# feel free to use a more narrow range.
PassivePorts                  53000 54000

# If your host was NATted, this option is useful in order to
# allow passive tranfers to work. You have to use your public
# address and opening the passive ports used on your firewall as well.
#MasqueradeAddress      www.mondomaine.fr

# This is useful for masquerading address with dynamic IPs:
# refresh any configured MasqueradeAddress directives every 8 hours
&lt;IfModule mod_dynmasq.c&gt;
# DynMasqRefresh 28800
&lt;/IfModule&gt;

# To prevent DoS attacks, set the maximum number of child processes
# to 30.  If you need to allow more than 30 concurrent connections
# at once, simply increase this value.  Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd)
MaxInstances                    30

# Set the user and group that the server normally runs at.
User                            proftpd
Group                           nogroup

# Umask 022 is a good standard umask to prevent new files and dirs
# (second parm) from being group and world writable.
Umask                           022  022
# Normally, we want files to be overwriteable.
AllowOverwrite                  on

# Autorise la reprise des téléchargements.
AllowRetrieveRestart on

# Autorise les clients à reprendre les Uploads vers vous.
AllowStoreRestart on

# Autorise seulement les noms de fichiers normaux (caractères alphanumérique)
PathAllowFilter &quot;[a-zA-Z0-9]&quot;

# Refuse l'upload de fichiers .ftpaccess ou .htaccess
PathDenyFilter &quot;(\.ftp)|(\.hta)[a-z]+$&quot;

# N'autorise pas de passer des printf-Formats.
AllowFilter &quot;^[a-zA-Z0-9@~ /,_.-]*$&quot;
DenyFilter &quot;%&quot;

# Récupère l'ip de la machine de l'utilisateur
 IdentLookups 			on

# Uncomment this if you are using NIS or LDAP via NSS to retrieve passwords:
# PersistentPasswd              off

# This is required to use both PAM-based authentication and local passwords
# AuthOrder                     mod_auth_pam.c* mod_auth_unix.c

# Be warned: use of this directive impacts CPU average load!
# Uncomment this if you like to see progress and transfer rate with ftpwho
# in downloads. That is not needed for uploads rates.
#
# UseSendFile                   off

TransferLog /var/log/proftpd/xferlog
SystemLog   /var/log/proftpd/proftpd.log

# pour la gestions des users
&lt;IfModule mod_sql.c&gt;
 SQLBackend            mysql
&lt;/IfModule&gt;

&lt;IfModule mod_quotatab.c&gt;
QuotaEngine 		on
&lt;/IfModule&gt;

&lt;IfModule mod_ratio.c&gt;
Ratios 			off
&lt;/IfModule&gt;


# Delay engine reduces impact of the so-called Timing Attack described in
# http://security.lss.hr/index.php?page=details&amp;ID=LSS-2004-10-02
# It is on by default.
&lt;IfModule mod_delay.c&gt;
DelayEngine 		on
&lt;/IfModule&gt;

&lt;IfModule mod_ctrls.c&gt;
ControlsEngine        on
ControlsMaxClients    2
ControlsLog           /var/log/proftpd/controls.log
ControlsInterval      5
ControlsSocket        /var/run/proftpd/proftpd.sock
&lt;/IfModule&gt;

&lt;IfModule mod_ctrls_admin.c&gt;
AdminControlsEngine 	on
&lt;/IfModule&gt;

#
# Alternative authentication frameworks
#
#Include /etc/proftpd/ldap.conf
#Include /etc/proftpd/sql.conf

#
# This is used for FTPS connections
#
Include /etc/proftpd/tls.conf

#
# Useful to keep VirtualHost/VirtualRoot directives separated
#
#Include /etc/proftpd/virtuals.conf

# Mod MySQL
# =========
# Les mots de passe sont cryptés dans la base avec la fonction ENCRYPT (MySQL)
SQLAuthTypes Crypt
SQLAuthenticate users* groups*

# Modifiez cette ligne selon l'utilisateur et le mot de passe defini plus tôt
SQLConnectInfo proftpd@localhost proftpd mon-mot-de-passe

# On donne à ProFTPd le nom des colonnes de la table usertable
SQLUserInfo ftpuser userid passwd uid gid homedir shell
SQLUserWhereClause &quot;LoginAllowed = 'true'&quot;

# On donne à ProFTPd le nom des colonnes de la table &quot;grouptable&quot;
SQLGroupInfo ftpgroup groupname gid members

# Création automatique du répertoire de l'utilisateur si il n'existe pas
CreateHome 		on

# Met à jour les compteurs à chaque connection d'un utilisateur
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE &quot;count=count+1, accessed=now() WHERE userid='%u'&quot; ftpuser

# Met à jour les compteurs à chaque upload ou download d'un utilisateur
SQLLog STOR,RETR modified
SQLNamedQuery modified UPDATE &quot;modified=now() WHERE userid='%u'&quot; ftpuser

# Mod quota
# =========
QuotaEngine on
QuotaDirectoryTally on
QuotaDisplayUnits Mb
QuotaShowQuotas on

# Définit les requetes SQL pour que ProFTPd récupère les infos sur les quotas
SQLNamedQuery get-quota-limit SELECT &quot;name, quota_type, par_session, limit_type, bytes_up_limit, bytes_down_limit, bytes_transfer_limit, files_up_limit, files_down_limit, files_transfer_limit FROM ftpquotalimits WHERE name = '%{0}' AND quota_type = '%{1}'&quot;

SQLNamedQuery get-quota-tally SELECT &quot;name, quota_type, bytes_up_total, bytes_down_total, bytes_transfer_total, files_up_total, files_down_total, files_transfer_total FROM ftpquotatotal WHERE name = '%{0}' AND quota_type = '%{1}'&quot;

SQLNamedQuery update-quota-tally UPDATE &quot;bytes_up_total = bytes_up_total + %{0}, bytes_down_total = bytes_down_total + %{1}, bytes_transfer_total = bytes_transfer_total + %{2}, files_up_total = files_up_total + %{3}, files_down_total = files_down_total + %{4}, files_transfer_total = files_transfer_total + %{5} WHERE name = '%{6}' AND quota_type = '%{7}'&quot; ftpquotatotal

SQLNamedQuery insert-quota-tally INSERT &quot;%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}&quot; ftpquotatotal

QuotaLimitTable sql:/get-quota-limit
QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally

# Gestion des logs
# ================
# Enregistre les requêtes SQL dans /var/log/proftpd/mysql.log
SQLLogFile /var/log/proftpd/mysql.log

# Enregistre les authentifications
LogFormat auth &quot;%v [%P] %h %t \&quot;%r\&quot; %s&quot;
ExtendedLog /var/log/proftpd/auth.log AUTH auth

# Enregistre les accès aux fichiers
LogFormat write &quot;%h %l %u %t \&quot;%r\&quot; %s %b&quot;
ExtendedLog /var/log/proftpd/access.log WRITE,READ write
&lt;/code&gt;


=== Installation &amp; configuration de proftpdadmin ===


positionnez-vous dans /var/www

et prenez le paquet modifié de proftpadmin. Car celui d'origine
a quelques petits problèmes avec le TLS

on trouvera le paquet modifié à l'adresse ci-dessous

http://www.rt74.eu/public/dl/proftpdadmin.tar.gz

lancer les commandes suivantes:

&lt;code&gt;
root@bougnat:# wget -c http://www.rt74.eu/public/dl/proftpdadmin.tar.gz
root@bougnat:# gunzip *.gz 
root@bougnat:# tar xvf *.tar 
root@bougnat:# chown -R www-data.www-data proftpdadmin
&lt;/code&gt;

Création du virtualhost

&lt;code&gt;
root@bougnat:# vi /etc/apache2/sites-available/proftpdadmin.conf
&lt;/code&gt;

insérez les lignes suivantes dedans

&lt;code&gt;
Alias /ftpadmin &quot;/var/www/proftpdadmin&quot;

&lt;VirtualHost *:80&gt;
ServerName proftpdadmin
ServerAlias ftpadmin
ServerAdmin webmaster@mondomaine.fr
DocumentRoot /var/www/proftpdadmin

    &lt;Directory /var/www/proftpdadmin&gt;
        Options +FollowSymLinks
        AllowOverride All
        order allow,deny
        allow from all
    &lt;/Directory&gt;

# protection du repertoir config/

&lt;Directory /var/www/proftpdadmin/config&gt;
        Options -FollowSymLinks
        AllowOverride None
    &lt;/Directory&gt;

&lt;/VirtualHost&gt;
&lt;/code&gt;

relancer apache : '''root@bougnat:# apachectl restart'''

vérifiez l'accessibilité à votre site

'''http://mondomaine.fr/ftpadmin/''' ou '''http://mon-IP/ftpadmin/'''


=== Sécurisons, un peu tout ça ===

dans un premier temps, occupons nous de l'accés. Comme on peut le voir
l'accés se fait en direct et en http:// .Pour éviter que des petits malins
impose leur compte, nous allons restreindre l'accès, en forcant l'admin
à entrer un couple login/password.

mettez-vous à la racine du compte proftpdadmin et créez le fichier .htaccess

&lt;code&gt;
root@bougnat:# vi /var/www/proftpdadmin/.htaccess
&lt;/code&gt;

et inscrivez dedans les lignes suivantes

&lt;code&gt;
AuthName &quot;Acces prive&quot;
AuthType Basic
AuthUserFile &quot;/var/www/proftpdadmin/.htpasswd&quot;
AuthGroupFile /dev/null
&lt;Limit GET POST&gt;
order deny,allow
require valid-user
&lt;/Limit&gt;

&lt;IfModule mod_rewrite.c&gt;
  &lt;IfModule mod_ssl.c&gt;
        RewriteEngine on
        RewriteCond %{HTTPS} !^on$ [NC]
        #RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}       [L]
         RewriteRule (.*) https://www.mondomaine.fr/ftpadmin/       [L]
  &lt;/IfModule&gt;
&lt;/IfModule&gt;

La 1ér partie, concerne l'accès privé
La 2ème partie, concerne la redirection en https
&lt;/code&gt;

Une fois terminé, il va falloir autoriser un user à accéder à la gestion du ftp
pour cela on va créer le fichier .htpasswd qui contiendra le couple login/password

pour les fainéants nous avons : http://www.websiteout.fr/htpasswd.php ou pire http://www.clockwatchers.com/htaccess_tool.html

et pour les puristes tapez la commande ci-dessous et répondez aux questions 

&lt;code&gt;
root@bougnat:# htpasswd -c /var/www/proftpdadmin/.htpasswd le-user-autorisé
&lt;/code&gt;

relancer apache : '''root@bougnat:# apachectl restart'''

revérifiez l'accessibilité à votre site

un login/password vous sera demandé et vous êtes en https:// et non plus en http://

=== Connectons nous ===

Pour vous connectez avec filezilla ou tout autre client ftp utilisez pour le chiffrement

connecxion FT EXPLICITE sur TLS

Vérifions

&lt;code&gt;
Statut :	Connexion à 192.168.1.2:210...
Statut :	Connexion établie, attente du message d'accueil...
Réponse :	220 Serveur FTP de Charbon Ltd.
Commande :	AUTH TLS
Réponse :	234 AUTH TLS exécuté avec succès
Statut :	Initialisation de TLS...
Statut :	Vérification du certificat...
Commande :	USER tuto
Statut :	Connexion TLS/SSL établie.
Réponse :	331 Mot de passe requis pour tuto
Commande :	PASS ***********
Réponse :	230 Utilisateur tuto authentifié
Commande :	SYST
Réponse :	215 UNIX Type: L8
Commande :	FEAT
Réponse :	211-Features:
Réponse :	 LANG fr-FR.UTF-8*;fr-FR
Réponse :	 MDTM
Réponse :	 MFMT
Réponse :	 TVFS
Réponse :	 AUTH TLS
Réponse :	 UTF8
Réponse :	 MFF modify;UNIX.group;UNIX.mode;
Réponse :	 MLST modify*;perm*;size*;type*;unique*;UNIX.group*;UNIX.mode*;UNIX.owner*;
Réponse :	 PBSZ
Réponse :	 PROT
Réponse :	 SITE MKDIR
Réponse :	 SITE RMDIR
Réponse :	 SITE UTIME
Réponse :	 SITE SYMLINK
Réponse :	 REST STREAM
Réponse :	 SIZE
Réponse :	211 Fin
Commande :	OPTS UTF8 ON
Réponse :	200 UTF-8 activé
Commande :	PBSZ 0
Réponse :	200 PBSZ 0 exécuté avec succès
Commande :	PROT P
Réponse :	200 Protection set to Private
Statut :	Connecté
Statut :	Récupération du contenu du dossier...
Commande :	PWD
Réponse :	257 &quot;/&quot; est le répertoire courant
Commande :	TYPE I
Réponse :	200 Type paramétré à I
Commande :	PASV
Réponse :	227 Entering Passive Mode (192,168,1,2,210,201).
Commande :	MLSD
Réponse :	150 Ouverture d'une connexion de données en mode ASCII pour MLSD
Réponse :	226 Téléchargement terminé
Statut :	Contenu du dossier affiché avec succès
&lt;/code&gt;</text>
      <sha1>on3o5724onth5mpstrlnu2l3sg6mgqi</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Installation de Pure-FTP avec SSL et MySQL</title>
    <ns>0</ns>
    <id>1319</id>
    <revision>
      <id>5555</id>
      <timestamp>2014-03-08T14:36:03Z</timestamp>
      <contributor>
        <username>Petitchat</username>
        <id>291</id>
      </contributor>
      <comment>Tutoriel d'installation de Pure-FTP avec SSL et MySQL</comment>
      <text xml:space="preserve" bytes="14222">Pure-FTP est l'un des meilleurs logiciels serveur FTP,un excellent choix pour transférer des fichiers. Son niveau de sécurité est très bon, le paramétrage puissant. La prise en charge du SSL nous permettra de chiffrer les données transitant par Internet. Le fait qu'on puisse gérer les comptes grâce à une table MySQL sera très pratique pour automatiser plus tard la création des comptes. 

== Prérequis ==

*Deux partition dédiées au stockage et l'écriture des données. 
*Un certificat de sécurité
*Apache, MySQL, PhpMyAdmin
*plusieurs heures devant soi et du courage 

En avant !

== Structure de l'arborescence du FTP ==

Avant de se lancer dans l'installation du FTP, il faut s’interroger sur la structure qu'aura l' arborescence du FTP. Si l'on souhaite partager des médias, le plus simple est de dédier (au moins) une partition de grande taille à la lecture et d'ajouter une seconde partition plus petite dédiée à l'écriture, là où les utilisateurs pourrons uploader. Nous traiterons ce cas simple à titre d'exemple; il est possible par la suite d'ajouter des partitions. 

Partition 1: 
nom: '''sdb5'''
rôle: propose des médias en lecture seule. 
contenu: '''trois dossiers de stockage, comme /logiciel, /film, /musique'''

Partition 2:
nom: '''sdb6'''
rôle: espace dédié à la lecture écriture. 
contenu: '''un répertoire de stockage servant aux dépôts des utilisateurs, /depot'''

créons les dossiers nécessaires au montage de l'arborescence. Ceux sur lesquels seront montés les partitions...
&lt;code&gt;cd /mnt/
mkdir data
mkdir depot&lt;/code&gt;

...et ajoutons ces lignes au fichier ''/etc/fstab'' pour monter les partitions au démarrage. ( Bonne doc sur fstab ici: http://doc.ubuntu-fr.org/mount_fstab )
&lt;code&gt;#disques de stockage
/dev/sdb5       /mnt/data ext3  user,rw,exec 0  0
/dev/sdb6       /mnt/depot ext3  user,rw,exec 0  0
&lt;/code&gt;

Il faut maintenant intégrer les dossiers à la racine des deux partition à l’arborescence du ftp. Ceci se fait  avec la puissante option ''bind'' du fichier ''/etc/fstab''. 
Créons les dossiers cibles qui seront à la racine du ftp.
&lt;code&gt;
cd /home/common/
mkdir ftp
cd ftp
mkdir logiciel; mkdir film; mkdir musique; mkdir depot
&lt;/code&gt;

Puis ajoutons ces lignes au fichier ''fstab'' afin de monter l'arborescence au démarrage du serveur:
&lt;code&gt;#dossiers ftp avec option bind
/mnt/data/logiciel     /home/common/ftp/logiciel none bind 0 0
/mnt/data/film      /home/common/ftp/film none bind 0 0
/mnt/data/musique     /home/common/ftp/musique none bind 0 0
/mnt/depot/depot      /home/common/ftp/depot none bind 0 0&lt;/code&gt;

Vérifier enfin si l'arborescence est correctement montée après redémarrage.
&lt;code&gt;shutdown -r now&lt;/code&gt;

== Gestion des droits de l'arborescence de pure-ftp ==

Dans notre cas, les utilisateurs auront tous les mêmes droits: droit en lecture sur toute l'arborescence (sauf dossier ''lost+find'' )et droit en écriture dans le dossier ''depot''. Nous allons donc créer un nouvel utilisateur dans Debian muni de ces droits.

Pour ce faire on tape ce code:
&lt;code&gt;adduser pureftpd&lt;/code&gt;
puis on répond aux questions ainsi: '''''&lt;pureftpd&gt;, &lt;pureftpd&gt;, &lt;pure-ftp&gt;, &lt;vide&gt;, &lt;vide&gt;, &lt;vide&gt;, &lt;vide&gt;, o'''''
En consultant le fichier ''/etc/passwd'', on peut relever l'Uid et le Gid de ce nouvel utilisateur. 
&lt;code&gt;
cat /etc/passwd
&lt;/code&gt;
'''Si l'utilisateur ''pureftpd'' est le deuxième à être créé, il lui est attribué les valeurs :Uid=''1001'' et Gid=''1001'''''. Ces valeurs serviront au moment des créations de compte ftp. Chaque compte paramétré avec ces Uid,Gid sera vu par le serveur comme le compte ''pureftpd''.

Cette commande change le propriétaire du dossier'' /mnt/depot'' de manière récursive. Le propriétaire devient l'utilisateur ''pureftpd'', et le groupe ''root''. Cela autorise l'écriture pour l'utilisateur du ftp.
&lt;code&gt;chown -R pureftpd:root /mnt/depot&lt;/code&gt;

Si on s’arrête là, les utilisateurs ont accès au dossier ''lost+found''. Ça n'est pas très propre. On corrige ce défaut avec la ligne suivante qui change le propriétaire de ''lost+found'' et le restitue au l'utilisateur ''root'' du groupe ''root''.
&lt;code&gt;chown root:root /mnt/depot/lost+found&lt;/code&gt;

== Préparation de l'installation, compilation et installation ==

D'abord nous allons télécharger les fichiers sources et les décompresser. Sur la page http://download.pureftpd.org/pub/pure-ftpd/releases/   est recensé les différentes version du logiciel. 
&lt;code&gt;wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.36.tar.gz&lt;/code&gt;
on décompresse ensuite l'archive obtenue.
&lt;code&gt;tar zxvf pure-ftpd-1.0.36.tar.gz&lt;/code&gt;

Après lecture de la doc officielle,    http://download.pureftpd.org/pure-ftpd/doc/README , on installe les dépendances du logiciel:
&lt;code&gt;
aptitude install libmysqlclient-dev libssl-dev build-essential&lt;/code&gt;

Puis on choisi les options de compilation qui nous intéresseront:
* --with-tls : permet d'utiliser ce type de chiffrement
* --with-certfile=/home/nomdedomaine.pem : indique au compilateur l'emplacement du certificat de chiffrement. Vérifier que le certificat '''nomdedomaine.pem''' est présent à l'emplacement indiqué. 
* --with-ftpwho: active la commande &quot;ftp-who&quot;, pratique pour vérifier l'activité en temps réel
* --with-language=french: défini le français comme langue 
* --with-mysql : les utilisateurs seront stocké dans une base MySQL
* --with-cookie : permet d'utiliser un fichier fortunefile pour que le serveur affiche une phrase d'acceuil 
* --with-altlog: permet la journalisation dans différents formats, ceci sera utile plus tard au moment du monitoring.

On se place alors dans le dossier des fichiers sources
&lt;code&gt;cd pure-ftpd-1.0.36&lt;/code&gt;
et on lance la compilation avec les options voulues:
&lt;code&gt;./configure --with-tls --with-certfile=/home/nomdedomaine.pem --with-ftpwho --with-language=french --with-mysql --with-cookie --with-altlog&lt;/code&gt;
Si tout s'est bien passé, on termine l’installation par un 
&lt;code&gt;make&lt;/code&gt;
puis enfin
&lt;code&gt;make install&lt;/code&gt;

== Paramétrage MySQL ==

Il faut maintenant configurer l'accès à la base d'authentification. Concentrons nous d'abord sur le fichier de configuration ''/etc/pure-ftpd/db/mysql.conf''.

Modifier ces lignes comme ceci pour définir un utilisateur, son mot de passe et le nom de la base:
&lt;code&gt;# Mandatory : user to bind the server as.
MYSQLUser       pureftpd

# Mandatory : user password. You must have a password.
MYSQLPassword   pureftpd

# Mandatory : database to open.
MYSQLDatabase   pureftpd&lt;/code&gt;

et, pour maintenir un chiffrement des mot de passe tout en rendement possible la liaison que l'on aura a effectuer plus tard entre PhpBB et Pure-FTP, en choisi un chiffrement en md5:
&lt;code&gt;# Mandatory : how passwords are stored
# Valid values are : &quot;cleartext&quot;, &quot;crypt&quot;, &quot;md5&quot; and &quot;password&quot;
# (&quot;password&quot; = MySQL password() function)
# You can also use &quot;any&quot; to try &quot;crypt&quot;, &quot;md5&quot; *and* &quot;password&quot;
MYSQLCrypt      md5&lt;/code&gt;

Après ces changements on laisse le fichier  ''mysql.conf''.

Reste a créer la base. facile avec PhpMyAdmin.

nom de la base : '''''pureftpd'''''
nom de la table : '''''pureftpd'''''
Nombre de colonnes : 12

structure:
Nom / ''type''
User / ''varchar(16)''
status / ''enum''
Password / ''varchar(64)''
Uid / ''varchar(11)''
Gid / ''varchar(11)''
Dir / ''varchar(128)''
ULBandwidth / ''smallint(5)''
DLBandwidth / ''smallint(5)''
comment / ''tinytext''
ipaccess / ''varchar(15) ''
QuotaSize / ''smallint(5)''
QuotaFiles / ''int(11)''

Pour finir, dans PhpMyAdmin, on créé un utilisateur '''''pureftpd''''', mot de passe  '''''pureftpd''''',  avec tout les droits sur la table, « tout cocher ».

== Écriture et intégration d'un script de lancement du démon Pure-ftpd ==

Par soucis de commodité nous créons ce script dans le Bureau de l'utilisateur principal et nous le nommons ''pure-ftpd-startupscript''. 
&lt;code&gt;cd /hom/denis/Bureau
nano pure-ftpd-startupscript&lt;/code&gt;
Ce petit script comportera quatre lignes, la plus importante étant la ligne de commande de lancement de Prure-ftpd avec ses options. Ces trois autres lignes sont triviales:
&lt;code&gt;#!/bin/bash
echo &quot;lancement du daemon pure-ftpd&quot;

echo &quot;Fin du lancement de Pure-ftpd&quot;&lt;/code&gt;
On les colle dans ''pure-ftpd-startupscript'' et on enregistre les changements. 

Le démon Pure-ftpd se lance via une ligne de commande qui est très puissante. Optimiser au mieux les options de cette ligne de commande nous permettra d'avoir un Pure-ftpd &quot;sur mesure&quot;. La doc à consulter est toujours : http://download.pureftpd.org/pub/pure-ftpd/doc/README. 

Voici un résumé des options qui nous intéressent le plus :

* -c: nombre de clients simultanées. '''Dans notre cas on peut par exemple fixer la valeur à ''50''.'''
* -A: Chroot everyone. 
* -B: en background (daemonization)
* -C: nombre maximum de connexions par client. '''Choisir une valeur assez basse, par exemple ''3'', par mesure de sécurité, pour éviter qu'un utilisateur ne monopolise la bande passante montante du serveur. '''
* -E: n'autorise que les utilisateurs authentifiés, interdit les connexions anonymes
* -F: Fortune files, message d’accueil. '''Dans notre cas il se trouve ici : ''/home/common/fortunefile'''''
* -G: interdit le renommage
* -K: autorise l'utilisateur à reprendre un upload mais lui interdit de l'effacer ou de le renommer
* -l: méthode d'authentification et chemin vers le fichier de config de l'authentification. '''Dans notre cas, on active l'authentification msyql et on précise le chemin du fichier config comme ceci: ''mysql:/etc/pure-ftpd/db/mysql.conf'''''
* -O:  Enregistre tout les transferts de fichiers dans un fichier journal particulier, dans un format alternatif. Quatre formats sont supportés:  CLF (Apache-like), Stats, W3C and xferlog. '''Ici on peut rendre les logs de Pure-ftpd exploitables par AWStats avec la variable ''clf:/var/log/transfer.log'' .'''
* -p: ports du mode passif . '''On choisi par exemple la plage de port ''34343:34443''.'''
* -R: empêche les utilisateurs d'utiliser chmod
* -Y: à 2, active l'explicite TLS

On obtiens donc la ligne de commande suivante:
&lt;code&gt;/usr/local/sbin/pure-ftpd -c 50 -A -B -C 3 -E -F /home/common/fortunefile -G -K -l mysql:/etc/pure-ftpd/db/mysql.conf -O clf:/var/log/transfer.log -p 34343:34443 -R -Y 2 &amp;&lt;/code&gt;
/!\ La rédaction de cette ligne de commande nécessite de la minutie. Il suffit d'une majuscule confondue avec une minuscule, un espace d'oublié pour générer une erreur. Les erreurs non fatales ne seront pas toujours signalées par un message d'erreur, mais le démon ne se lancera sans activer l'option erronée. Prudence donc. /!\

La version finale du fichier ''pure-ftpd-startupscript'' est donc:
&lt;code&gt;#!/bin/bash
echo &quot;lancement du daemon pure-ftpd&quot;
/usr/local/sbin/pure-ftpd -c 50 -A -B -C 3 -E -F /home/common/fortunefile -G -K -l mysql:/etc/pure-ftpd/db/mysql.conf -O clf:/var/log/transfer.log -p 34343:34443 -R -Y 2 &amp;
echo &quot;Fin du lancement de Pure-ftpd&quot;&lt;/code&gt;
Rendre ce script executable:
&lt;code&gt;chmod +x  pure-ftpd-startupscript&lt;/code&gt;
L'intégration s'achève par l'ajout du lancement à la séquence de démarrage du serveur:
&lt;code&gt; 
cp  pure-ftpd-startupscript /etc/init.d
update-rc.d pure-ftpd-startupscript defaults &lt;/code&gt;

== Dernier réglage: message d’accueil ==


Le dernier réglage concerne le message d'acceuil. Il suffit de créer le fichier''/home/common/fortunefile'' et y enregistrer un texte de bienvenue.
&lt;code&gt;BIENVENUE sur le serveur FTP monsite.net&lt;/code&gt;

Le paramétrage est enfin fini. Passons à l'étape palpitante des tests. 

== Tester le fonctionnement de Pure-ftpd[ ==

Premier réflexe, redémarrer le système pour prendre en compte tout les réglages.
&lt;code&gt;shutdown -r now&lt;/code&gt;

Nous allons maintenant créer un compte de test. Plus haut nous avons paramétré Pure-ftp pour que le stockage du mot de passe sous forme de hash MD5. Nous avons donc besoin de calculer le hash MD5 du compte test. De nombreux sites internet proposent de le faire en ligne, dont celui ci: http://www.md5hashgenerator.com/index.php

* mot de passe: '''''test'''''
* hash md5: '''''098f6bcd4621d373cade4e832627b4f6 '''''

Ouvrons une session PhPMyAdmin et ouvrons la table ''pureftpd'' de la base ''pureftpd''. Insérons une nouvelle ligne à remplir avec ces valeurs:

{| class=&quot;wikitable&quot;
|+ Paramètres du compte &quot;test&quot;
! paramètre
! variable
|-
| User / varchar(16) 
| '''test'''
|-
| status / enum 
| '''0'''
|-
| Password / varchar(64)
| '''098f6bcd4621d373cade4e832627b4f6 '''
|-
| Uid / varchar(11)
| '''1001'''
|-
| Gid / varchar(11)
| '''1001'''
|-
| Dir / varchar(128)
| '''/home/common/ftp'''
|-
| ULBandwidth / smallint(5)
| '''0'''
|-
| DLBandwidth / smallint(5
| '''0'''
|-
| comment / tinytext
| '''&lt;vide&gt;'''
|-
| ipccess / varchar(15)
|''' *'''
|-
| QuotaSize / smallint(5)
| '''0'''
|-
| QuotaFiles / int(11)
| '''0'''
|-
|}


Enregistrons cet utilisateur test. 
Le moment fatidique approche. A partir d'un poste du réseau local, ouvrons  notre logiciel client FTP et paramétrons une nouvelle connexion ainsi:
{| class=&quot;wikitable&quot;
|+ Paramètres du compte &quot;test&quot; coté client ftp
! paramètre
! variable
|-
| Hôte 
| '''&lt;adresse IP local du serveur FTP&gt;'''
|-
| Port 
| '''21'''
|-
| Protocole 
| '''FTP'''
|-
| Chiffrement 
| '''Connexion FTP explicite sur TLS'''
|-
| Identifiant 
|''' test'''
|-
| mot de passe 
| '''test'''
|-
|}
Connectons nous maintenant au serveur ftp avec cette connexion. Si tout ce passe bien, on reçoit le certificat de sécurité qu'on doit valider, puis la connexion s'effectue, le message d’accueil s'affiche dans la console. La connexion établie, on peut lire tout les dossiers et uploader dans le dossier ''/depot''.

== Conclusion ==

Une fois le système opérationnel, les utilisateurs ont un accès chiffré à votre serveur ftp. Le fait de gérer les comtpe sur une base MySQL permet aussi bien d'enregistrer des comptes automatiquement avec un code php que de les paramétrer manuellement en passant par PhpMyAdmin. Cependant, un problème de sécurité demeure: les mots de passe les plus faibles, stockés sous forme de hash MD5, ne résisterons pas au crackage.</text>
      <sha1>tihcg4m3afyqqacys66u0auiosci2on</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5556</id>
      <parentid>5555</parentid>
      <timestamp>2014-03-08T14:43:11Z</timestamp>
      <contributor>
        <username>Petitchat</username>
        <id>291</id>
      </contributor>
      <comment>/* Paramétrage MySQL */</comment>
      <text xml:space="preserve" bytes="26992">Pure-FTP est l'un des meilleurs logiciels serveur FTP,un excellent choix pour transférer des fichiers. Son niveau de sécurité est très bon, le paramétrage puissant. La prise en charge du SSL nous permettra de chiffrer les données transitant par Internet. Le fait qu'on puisse gérer les comptes grâce à une table MySQL sera très pratique pour automatiser plus tard la création des comptes. 

== Prérequis ==

*Deux partition dédiées au stockage et l'écriture des données. 
*Un certificat de sécurité
*Apache, MySQL, PhpMyAdmin
*plusieurs heures devant soi et du courage 

En avant !

== Structure de l'arborescence du FTP ==

Avant de se lancer dans l'installation du FTP, il faut s’interroger sur la structure qu'aura l' arborescence du FTP. Si l'on souhaite partager des médias, le plus simple est de dédier (au moins) une partition de grande taille à la lecture et d'ajouter une seconde partition plus petite dédiée à l'écriture, là où les utilisateurs pourrons uploader. Nous traiterons ce cas simple à titre d'exemple; il est possible par la suite d'ajouter des partitions. 

Partition 1: 
nom: '''sdb5'''
rôle: propose des médias en lecture seule. 
contenu: '''trois dossiers de stockage, comme /logiciel, /film, /musique'''

Partition 2:
nom: '''sdb6'''
rôle: espace dédié à la lecture écriture. 
contenu: '''un répertoire de stockage servant aux dépôts des utilisateurs, /depot'''

créons les dossiers nécessaires au montage de l'arborescence. Ceux sur lesquels seront montés les partitions...
&lt;code&gt;cd /mnt/
mkdir data
mkdir depot&lt;/code&gt;

...et ajoutons ces lignes au fichier ''/etc/fstab'' pour monter les partitions au démarrage. ( Bonne doc sur fstab ici: http://doc.ubuntu-fr.org/mount_fstab )
&lt;code&gt;#disques de stockage
/dev/sdb5       /mnt/data ext3  user,rw,exec 0  0
/dev/sdb6       /mnt/depot ext3  user,rw,exec 0  0
&lt;/code&gt;

Il faut maintenant intégrer les dossiers à la racine des deux partition à l’arborescence du ftp. Ceci se fait  avec la puissante option ''bind'' du fichier ''/etc/fstab''. 
Créons les dossiers cibles qui seront à la racine du ftp.
&lt;code&gt;
cd /home/common/
mkdir ftp
cd ftp
mkdir logiciel; mkdir film; mkdir musique; mkdir depot
&lt;/code&gt;

Puis ajoutons ces lignes au fichier ''fstab'' afin de monter l'arborescence au démarrage du serveur:
&lt;code&gt;#dossiers ftp avec option bind
/mnt/data/logiciel     /home/common/ftp/logiciel none bind 0 0
/mnt/data/film      /home/common/ftp/film none bind 0 0
/mnt/data/musique     /home/common/ftp/musique none bind 0 0
/mnt/depot/depot      /home/common/ftp/depot none bind 0 0&lt;/code&gt;

Vérifier enfin si l'arborescence est correctement montée après redémarrage.
&lt;code&gt;shutdown -r now&lt;/code&gt;

== Gestion des droits de l'arborescence de pure-ftp ==

Dans notre cas, les utilisateurs auront tous les mêmes droits: droit en lecture sur toute l'arborescence (sauf dossier ''lost+find'' )et droit en écriture dans le dossier ''depot''. Nous allons donc créer un nouvel utilisateur dans Debian muni de ces droits.

Pour ce faire on tape ce code:
&lt;code&gt;adduser pureftpd&lt;/code&gt;
puis on répond aux questions ainsi: '''''&lt;pureftpd&gt;, &lt;pureftpd&gt;, &lt;pure-ftp&gt;, &lt;vide&gt;, &lt;vide&gt;, &lt;vide&gt;, &lt;vide&gt;, o'''''
En consultant le fichier ''/etc/passwd'', on peut relever l'Uid et le Gid de ce nouvel utilisateur. 
&lt;code&gt;
cat /etc/passwd
&lt;/code&gt;
'''Si l'utilisateur ''pureftpd'' est le deuxième à être créé, il lui est attribué les valeurs :Uid=''1001'' et Gid=''1001'''''. Ces valeurs serviront au moment des créations de compte ftp. Chaque compte paramétré avec ces Uid,Gid sera vu par le serveur comme le compte ''pureftpd''.

Cette commande change le propriétaire du dossier'' /mnt/depot'' de manière récursive. Le propriétaire devient l'utilisateur ''pureftpd'', et le groupe ''root''. Cela autorise l'écriture pour l'utilisateur du ftp.
&lt;code&gt;chown -R pureftpd:root /mnt/depot&lt;/code&gt;

Si on s’arrête là, les utilisateurs ont accès au dossier ''lost+found''. Ça n'est pas très propre. On corrige ce défaut avec la ligne suivante qui change le propriétaire de ''lost+found'' et le restitue au l'utilisateur ''root'' du groupe ''root''.
&lt;code&gt;chown root:root /mnt/depot/lost+found&lt;/code&gt;

== Préparation de l'installation, compilation et installation ==

D'abord nous allons télécharger les fichiers sources et les décompresser. Sur la page http://download.pureftpd.org/pub/pure-ftpd/releases/   est recensé les différentes version du logiciel. 
&lt;code&gt;wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.36.tar.gz&lt;/code&gt;
on décompresse ensuite l'archive obtenue.
&lt;code&gt;tar zxvf pure-ftpd-1.0.36.tar.gz&lt;/code&gt;

Après lecture de la doc officielle,    http://download.pureftpd.org/pure-ftpd/doc/README , on installe les dépendances du logiciel:
&lt;code&gt;
aptitude install libmysqlclient-dev libssl-dev build-essential&lt;/code&gt;

Puis on choisi les options de compilation qui nous intéresseront:
* --with-tls : permet d'utiliser ce type de chiffrement
* --with-certfile=/home/nomdedomaine.pem : indique au compilateur l'emplacement du certificat de chiffrement. Vérifier que le certificat '''nomdedomaine.pem''' est présent à l'emplacement indiqué. 
* --with-ftpwho: active la commande &quot;ftp-who&quot;, pratique pour vérifier l'activité en temps réel
* --with-language=french: défini le français comme langue 
* --with-mysql : les utilisateurs seront stocké dans une base MySQL
* --with-cookie : permet d'utiliser un fichier fortunefile pour que le serveur affiche une phrase d'acceuil 
* --with-altlog: permet la journalisation dans différents formats, ceci sera utile plus tard au moment du monitoring.

On se place alors dans le dossier des fichiers sources
&lt;code&gt;cd pure-ftpd-1.0.36&lt;/code&gt;
et on lance la compilation avec les options voulues:
&lt;code&gt;./configure --with-tls --with-certfile=/home/nomdedomaine.pem --with-ftpwho --with-language=french --with-mysql --with-cookie --with-altlog&lt;/code&gt;
Si tout s'est bien passé, on termine l’installation par un 
&lt;code&gt;make&lt;/code&gt;
puis enfin
&lt;code&gt;make install&lt;/code&gt;

Pure-FTP est l'un des meilleurs logiciels serveur FTP,un excellent choix pour transférer des fichiers. Son niveau de sécurité est très bon, le paramétrage puissant. La prise en charge du SSL nous permettra de chiffrer les données transitant par Internet. Le fait qu'on puisse gérer les comptes grâce à une table MySQL sera très pratique pour automatiser plus tard la création des comptes. 

== Prérequis ==

*Deux partition dédiées au stockage et l'écriture des données. 
*Un certificat de sécurité
*Apache, MySQL, PhpMyAdmin
*plusieurs heures devant soi et du courage 

En avant !

== Structure de l'arborescence du FTP ==

Avant de se lancer dans l'installation du FTP, il faut s’interroger sur la structure qu'aura l' arborescence du FTP. Si l'on souhaite partager des médias, le plus simple est de dédier (au moins) une partition de grande taille à la lecture et d'ajouter une seconde partition plus petite dédiée à l'écriture, là où les utilisateurs pourrons uploader. Nous traiterons ce cas simple à titre d'exemple; il est possible par la suite d'ajouter des partitions. 

Partition 1: 
nom: '''sdb5'''
rôle: propose des médias en lecture seule. 
contenu: '''trois dossiers de stockage, comme /logiciel, /film, /musique'''

Partition 2:
nom: '''sdb6'''
rôle: espace dédié à la lecture écriture. 
contenu: '''un répertoire de stockage servant aux dépôts des utilisateurs, /depot'''

créons les dossiers nécessaires au montage de l'arborescence. Ceux sur lesquels seront montés les partitions...
&lt;code&gt;cd /mnt/
mkdir data
mkdir depot&lt;/code&gt;

...et ajoutons ces lignes au fichier ''/etc/fstab'' pour monter les partitions au démarrage. ( Bonne doc sur fstab ici: http://doc.ubuntu-fr.org/mount_fstab )
&lt;code&gt;#disques de stockage
/dev/sdb5       /mnt/data ext3  user,rw,exec 0  0
/dev/sdb6       /mnt/depot ext3  user,rw,exec 0  0
&lt;/code&gt;

Il faut maintenant intégrer les dossiers à la racine des deux partition à l’arborescence du ftp. Ceci se fait  avec la puissante option ''bind'' du fichier ''/etc/fstab''. 
Créons les dossiers cibles qui seront à la racine du ftp.
&lt;code&gt;
cd /home/common/
mkdir ftp
cd ftp
mkdir logiciel; mkdir film; mkdir musique; mkdir depot
&lt;/code&gt;

Puis ajoutons ces lignes au fichier ''fstab'' afin de monter l'arborescence au démarrage du serveur:
&lt;code&gt;#dossiers ftp avec option bind
/mnt/data/logiciel     /home/common/ftp/logiciel none bind 0 0
/mnt/data/film      /home/common/ftp/film none bind 0 0
/mnt/data/musique     /home/common/ftp/musique none bind 0 0
/mnt/depot/depot      /home/common/ftp/depot none bind 0 0&lt;/code&gt;

Vérifier enfin si l'arborescence est correctement montée après redémarrage.
&lt;code&gt;shutdown -r now&lt;/code&gt;

== Gestion des droits de l'arborescence de pure-ftp ==

Dans notre cas, les utilisateurs auront tous les mêmes droits: droit en lecture sur toute l'arborescence (sauf dossier ''lost+find'' )et droit en écriture dans le dossier ''depot''. Nous allons donc créer un nouvel utilisateur dans Debian muni de ces droits.

Pour ce faire on tape ce code:
&lt;code&gt;adduser pureftpd&lt;/code&gt;
puis on répond aux questions ainsi: '''''&lt;pureftpd&gt;, &lt;pureftpd&gt;, &lt;pure-ftp&gt;, &lt;vide&gt;, &lt;vide&gt;, &lt;vide&gt;, &lt;vide&gt;, o'''''
En consultant le fichier ''/etc/passwd'', on peut relever l'Uid et le Gid de ce nouvel utilisateur. 
&lt;code&gt;
cat /etc/passwd
&lt;/code&gt;
'''Si l'utilisateur ''pureftpd'' est le deuxième à être créé, il lui est attribué les valeurs :Uid=''1001'' et Gid=''1001'''''. Ces valeurs serviront au moment des créations de compte ftp. Chaque compte paramétré avec ces Uid,Gid sera vu par le serveur comme le compte ''pureftpd''.

Cette commande change le propriétaire du dossier'' /mnt/depot'' de manière récursive. Le propriétaire devient l'utilisateur ''pureftpd'', et le groupe ''root''. Cela autorise l'écriture pour l'utilisateur du ftp.
&lt;code&gt;chown -R pureftpd:root /mnt/depot&lt;/code&gt;

Si on s’arrête là, les utilisateurs ont accès au dossier ''lost+found''. Ça n'est pas très propre. On corrige ce défaut avec la ligne suivante qui change le propriétaire de ''lost+found'' et le restitue au l'utilisateur ''root'' du groupe ''root''.
&lt;code&gt;chown root:root /mnt/depot/lost+found&lt;/code&gt;

== Préparation de l'installation, compilation et installation ==

D'abord nous allons télécharger les fichiers sources et les décompresser. Sur la page http://download.pureftpd.org/pub/pure-ftpd/releases/   est recensé les différentes version du logiciel. 
&lt;code&gt;wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.36.tar.gz&lt;/code&gt;
on décompresse ensuite l'archive obtenue.
&lt;code&gt;tar zxvf pure-ftpd-1.0.36.tar.gz&lt;/code&gt;

Après lecture de la doc officielle,    http://download.pureftpd.org/pure-ftpd/doc/README , on installe les dépendances du logiciel:
&lt;code&gt;
aptitude install libmysqlclient-dev libssl-dev build-essential&lt;/code&gt;

Puis on choisi les options de compilation qui nous intéresseront:
* --with-tls : permet d'utiliser ce type de chiffrement
* --with-certfile=/home/nomdedomaine.pem : indique au compilateur l'emplacement du certificat de chiffrement. Vérifier que le certificat '''nomdedomaine.pem''' est présent à l'emplacement indiqué. 
* --with-ftpwho: active la commande &quot;ftp-who&quot;, pratique pour vérifier l'activité en temps réel
* --with-language=french: défini le français comme langue 
* --with-mysql : les utilisateurs seront stocké dans une base MySQL
* --with-cookie : permet d'utiliser un fichier fortunefile pour que le serveur affiche une phrase d'acceuil 
* --with-altlog: permet la journalisation dans différents formats, ceci sera utile plus tard au moment du monitoring.

On se place alors dans le dossier des fichiers sources
&lt;code&gt;cd pure-ftpd-1.0.36&lt;/code&gt;
et on lance la compilation avec les options voulues:
&lt;code&gt;./configure --with-tls --with-certfile=/home/nomdedomaine.pem --with-ftpwho --with-language=french --with-mysql --with-cookie --with-altlog&lt;/code&gt;
Si tout s'est bien passé, on termine l’installation par un 
&lt;code&gt;make&lt;/code&gt;
puis enfin
&lt;code&gt;make install&lt;/code&gt;

== Paramétrage MySQL ==

Il faut maintenant configurer l'accès à la base d'authentification. Concentrons nous d'abord sur le fichier de configuration ''/etc/pure-ftpd/db/mysql.conf''.

Modifier ces lignes comme ceci pour définir un utilisateur, son mot de passe et le nom de la base:
&lt;code&gt;# Mandatory : user to bind the server as.
MYSQLUser       pureftpd

# Mandatory : user password. You must have a password.
MYSQLPassword   pureftpd

# Mandatory : database to open.
MYSQLDatabase   pureftpd&lt;/code&gt;

et, pour maintenir un chiffrement des mot de passe tout en rendement possible la liaison que l'on aura a effectuer plus tard entre PhpBB et Pure-FTP, en choisi un chiffrement en md5:
&lt;code&gt;# Mandatory : how passwords are stored
# Valid values are : &quot;cleartext&quot;, &quot;crypt&quot;, &quot;md5&quot; and &quot;password&quot;
# (&quot;password&quot; = MySQL password() function)
# You can also use &quot;any&quot; to try &quot;crypt&quot;, &quot;md5&quot; *and* &quot;password&quot;
MYSQLCrypt      md5&lt;/code&gt;

Après ces changements on laisse le fichier  ''mysql.conf''.

Reste a créer la base. facile avec PhpMyAdmin.

* nom de la base : '''''pureftpd'''''
* nom de la table : '''''pureftpd'''''
* Nombre de colonnes : 12

{| class=&quot;wikitable&quot;
|+ Paramètres de la base pureftpd
! paramètre
! Type de variable
|-
| Nom  
| ''type''
|-
| User  
| ''varchar(16)''
|-
| status  
| ''enum''
|-
| Password  
| ''varchar(64)''
|-
| Uid  
| ''varchar(11)''
|-
| Gid  
| ''varchar(11)''
|-
| Dir  
| ''varchar(128)''
|-
| ULBandwidth  
| ''smallint(5)''
|-
| DLBandwidth  
| ''smallint(5)''
|-
| comment  
| ''tinytext''
|-
| ipaccess  
| ''varchar(15) ''
|-
| QuotaSize  
| ''smallint(5)''
|-
| QuotaFiles  
| ''int(11)''
|-
|}

Pour finir, dans PhpMyAdmin, on créé un utilisateur '''''pureftpd''''', mot de passe  '''''pureftpd''''',  avec tout les droits sur la table, « tout cocher ».

== Écriture et intégration d'un script de lancement du démon Pure-ftpd ==

Par soucis de commodité nous créons ce script dans le Bureau de l'utilisateur principal et nous le nommons ''pure-ftpd-startupscript''. 
&lt;code&gt;cd /hom/denis/Bureau
nano pure-ftpd-startupscript&lt;/code&gt;
Ce petit script comportera quatre lignes, la plus importante étant la ligne de commande de lancement de Prure-ftpd avec ses options. Ces trois autres lignes sont triviales:
&lt;code&gt;#!/bin/bash
echo &quot;lancement du daemon pure-ftpd&quot;

echo &quot;Fin du lancement de Pure-ftpd&quot;&lt;/code&gt;
On les colle dans ''pure-ftpd-startupscript'' et on enregistre les changements. 

Le démon Pure-ftpd se lance via une ligne de commande qui est très puissante. Optimiser au mieux les options de cette ligne de commande nous permettra d'avoir un Pure-ftpd &quot;sur mesure&quot;. La doc à consulter est toujours : http://download.pureftpd.org/pub/pure-ftpd/doc/README. 

Voici un résumé des options qui nous intéressent le plus :

* -c: nombre de clients simultanées. '''Dans notre cas on peut par exemple fixer la valeur à ''50''.'''
* -A: Chroot everyone. 
* -B: en background (daemonization)
* -C: nombre maximum de connexions par client. '''Choisir une valeur assez basse, par exemple ''3'', par mesure de sécurité, pour éviter qu'un utilisateur ne monopolise la bande passante montante du serveur. '''
* -E: n'autorise que les utilisateurs authentifiés, interdit les connexions anonymes
* -F: Fortune files, message d’accueil. '''Dans notre cas il se trouve ici : ''/home/common/fortunefile'''''
* -G: interdit le renommage
* -K: autorise l'utilisateur à reprendre un upload mais lui interdit de l'effacer ou de le renommer
* -l: méthode d'authentification et chemin vers le fichier de config de l'authentification. '''Dans notre cas, on active l'authentification msyql et on précise le chemin du fichier config comme ceci: ''mysql:/etc/pure-ftpd/db/mysql.conf'''''
* -O:  Enregistre tout les transferts de fichiers dans un fichier journal particulier, dans un format alternatif. Quatre formats sont supportés:  CLF (Apache-like), Stats, W3C and xferlog. '''Ici on peut rendre les logs de Pure-ftpd exploitables par AWStats avec la variable ''clf:/var/log/transfer.log'' .'''
* -p: ports du mode passif . '''On choisi par exemple la plage de port ''34343:34443''.'''
* -R: empêche les utilisateurs d'utiliser chmod
* -Y: à 2, active l'explicite TLS

On obtiens donc la ligne de commande suivante:
&lt;code&gt;/usr/local/sbin/pure-ftpd -c 50 -A -B -C 3 -E -F /home/common/fortunefile -G -K -l mysql:/etc/pure-ftpd/db/mysql.conf -O clf:/var/log/transfer.log -p 34343:34443 -R -Y 2 &amp;&lt;/code&gt;
/!\ La rédaction de cette ligne de commande nécessite de la minutie. Il suffit d'une majuscule confondue avec une minuscule, un espace d'oublié pour générer une erreur. Les erreurs non fatales ne seront pas toujours signalées par un message d'erreur, mais le démon ne se lancera sans activer l'option erronée. Prudence donc. /!\

La version finale du fichier ''pure-ftpd-startupscript'' est donc:
&lt;code&gt;#!/bin/bash
echo &quot;lancement du daemon pure-ftpd&quot;
/usr/local/sbin/pure-ftpd -c 50 -A -B -C 3 -E -F /home/common/fortunefile -G -K -l mysql:/etc/pure-ftpd/db/mysql.conf -O clf:/var/log/transfer.log -p 34343:34443 -R -Y 2 &amp;
echo &quot;Fin du lancement de Pure-ftpd&quot;&lt;/code&gt;
Rendre ce script executable:
&lt;code&gt;chmod +x  pure-ftpd-startupscript&lt;/code&gt;
L'intégration s'achève par l'ajout du lancement à la séquence de démarrage du serveur:
&lt;code&gt; 
cp  pure-ftpd-startupscript /etc/init.d
update-rc.d pure-ftpd-startupscript defaults &lt;/code&gt;

== Dernier réglage: message d’accueil ==


Le dernier réglage concerne le message d'acceuil. Il suffit de créer le fichier''/home/common/fortunefile'' et y enregistrer un texte de bienvenue.
&lt;code&gt;BIENVENUE sur le serveur FTP monsite.net&lt;/code&gt;

Le paramétrage est enfin fini. Passons à l'étape palpitante des tests. 

== Tester le fonctionnement de Pure-ftpd[ ==

Premier réflexe, redémarrer le système pour prendre en compte tout les réglages.
&lt;code&gt;shutdown -r now&lt;/code&gt;

Nous allons maintenant créer un compte de test. Plus haut nous avons paramétré Pure-ftp pour que le stockage du mot de passe sous forme de hash MD5. Nous avons donc besoin de calculer le hash MD5 du compte test. De nombreux sites internet proposent de le faire en ligne, dont celui ci: http://www.md5hashgenerator.com/index.php

* mot de passe: '''''test'''''
* hash md5: '''''098f6bcd4621d373cade4e832627b4f6 '''''

Ouvrons une session PhPMyAdmin et ouvrons la table ''pureftpd'' de la base ''pureftpd''. Insérons une nouvelle ligne à remplir avec ces valeurs:

{| class=&quot;wikitable&quot;
|+ Paramètres du compte &quot;test&quot;
! paramètre
! variable
|-
| User / varchar(16) 
| '''test'''
|-
| status / enum 
| '''0'''
|-
| Password / varchar(64)
| '''098f6bcd4621d373cade4e832627b4f6 '''
|-
| Uid / varchar(11)
| '''1001'''
|-
| Gid / varchar(11)
| '''1001'''
|-
| Dir / varchar(128)
| '''/home/common/ftp'''
|-
| ULBandwidth / smallint(5)
| '''0'''
|-
| DLBandwidth / smallint(5
| '''0'''
|-
| comment / tinytext
| '''&lt;vide&gt;'''
|-
| ipccess / varchar(15)
|''' *'''
|-
| QuotaSize / smallint(5)
| '''0'''
|-
| QuotaFiles / int(11)
| '''0'''
|-
|}


Enregistrons cet utilisateur test. 
Le moment fatidique approche. A partir d'un poste du réseau local, ouvrons  notre logiciel client FTP et paramétrons une nouvelle connexion ainsi:
{| class=&quot;wikitable&quot;
|+ Paramètres du compte &quot;test&quot; coté client ftp
! paramètre
! variable
|-
| Hôte 
| '''&lt;adresse IP local du serveur FTP&gt;'''
|-
| Port 
| '''21'''
|-
| Protocole 
| '''FTP'''
|-
| Chiffrement 
| '''Connexion FTP explicite sur TLS'''
|-
| Identifiant 
|''' test'''
|-
| mot de passe 
| '''test'''
|-
|}
Connectons nous maintenant au serveur ftp avec cette connexion. Si tout ce passe bien, on reçoit le certificat de sécurité qu'on doit valider, puis la connexion s'effectue, le message d’accueil s'affiche dans la console. La connexion établie, on peut lire tout les dossiers et uploader dans le dossier ''/depot''.

== Conclusion ==

Une fois le système opérationnel, les utilisateurs ont un accès chiffré à votre serveur ftp. Le fait de gérer les comtpe sur une base MySQL permet aussi bien d'enregistrer des comptes automatiquement avec un code php que de les paramétrer manuellement en passant par PhpMyAdmin. Cependant, un problème de sécurité demeure: les mots de passe les plus faibles, stockés sous forme de hash MD5, ne résisterons pas au crackage.

== Écriture et intégration d'un script de lancement du démon Pure-ftpd ==

Par soucis de commodité nous créons ce script dans le Bureau de l'utilisateur principal et nous le nommons ''pure-ftpd-startupscript''. 
&lt;code&gt;cd /hom/denis/Bureau
nano pure-ftpd-startupscript&lt;/code&gt;
Ce petit script comportera quatre lignes, la plus importante étant la ligne de commande de lancement de Prure-ftpd avec ses options. Ces trois autres lignes sont triviales:
&lt;code&gt;#!/bin/bash
echo &quot;lancement du daemon pure-ftpd&quot;

echo &quot;Fin du lancement de Pure-ftpd&quot;&lt;/code&gt;
On les colle dans ''pure-ftpd-startupscript'' et on enregistre les changements. 

Le démon Pure-ftpd se lance via une ligne de commande qui est très puissante. Optimiser au mieux les options de cette ligne de commande nous permettra d'avoir un Pure-ftpd &quot;sur mesure&quot;. La doc à consulter est toujours : http://download.pureftpd.org/pub/pure-ftpd/doc/README. 

Voici un résumé des options qui nous intéressent le plus :

* -c: nombre de clients simultanées. '''Dans notre cas on peut par exemple fixer la valeur à ''50''.'''
* -A: Chroot everyone. 
* -B: en background (daemonization)
* -C: nombre maximum de connexions par client. '''Choisir une valeur assez basse, par exemple ''3'', par mesure de sécurité, pour éviter qu'un utilisateur ne monopolise la bande passante montante du serveur. '''
* -E: n'autorise que les utilisateurs authentifiés, interdit les connexions anonymes
* -F: Fortune files, message d’accueil. '''Dans notre cas il se trouve ici : ''/home/common/fortunefile'''''
* -G: interdit le renommage
* -K: autorise l'utilisateur à reprendre un upload mais lui interdit de l'effacer ou de le renommer
* -l: méthode d'authentification et chemin vers le fichier de config de l'authentification. '''Dans notre cas, on active l'authentification msyql et on précise le chemin du fichier config comme ceci: ''mysql:/etc/pure-ftpd/db/mysql.conf'''''
* -O:  Enregistre tout les transferts de fichiers dans un fichier journal particulier, dans un format alternatif. Quatre formats sont supportés:  CLF (Apache-like), Stats, W3C and xferlog. '''Ici on peut rendre les logs de Pure-ftpd exploitables par AWStats avec la variable ''clf:/var/log/transfer.log'' .'''
* -p: ports du mode passif . '''On choisi par exemple la plage de port ''34343:34443''.'''
* -R: empêche les utilisateurs d'utiliser chmod
* -Y: à 2, active l'explicite TLS

On obtiens donc la ligne de commande suivante:
&lt;code&gt;/usr/local/sbin/pure-ftpd -c 50 -A -B -C 3 -E -F /home/common/fortunefile -G -K -l mysql:/etc/pure-ftpd/db/mysql.conf -O clf:/var/log/transfer.log -p 34343:34443 -R -Y 2 &amp;&lt;/code&gt;
/!\ La rédaction de cette ligne de commande nécessite de la minutie. Il suffit d'une majuscule confondue avec une minuscule, un espace d'oublié pour générer une erreur. Les erreurs non fatales ne seront pas toujours signalées par un message d'erreur, mais le démon ne se lancera sans activer l'option erronée. Prudence donc. /!\

La version finale du fichier ''pure-ftpd-startupscript'' est donc:
&lt;code&gt;#!/bin/bash
echo &quot;lancement du daemon pure-ftpd&quot;
/usr/local/sbin/pure-ftpd -c 50 -A -B -C 3 -E -F /home/common/fortunefile -G -K -l mysql:/etc/pure-ftpd/db/mysql.conf -O clf:/var/log/transfer.log -p 34343:34443 -R -Y 2 &amp;
echo &quot;Fin du lancement de Pure-ftpd&quot;&lt;/code&gt;
Rendre ce script executable:
&lt;code&gt;chmod +x  pure-ftpd-startupscript&lt;/code&gt;
L'intégration s'achève par l'ajout du lancement à la séquence de démarrage du serveur:
&lt;code&gt; 
cp  pure-ftpd-startupscript /etc/init.d
update-rc.d pure-ftpd-startupscript defaults &lt;/code&gt;

== Dernier réglage: message d’accueil ==


Le dernier réglage concerne le message d'acceuil. Il suffit de créer le fichier''/home/common/fortunefile'' et y enregistrer un texte de bienvenue.
&lt;code&gt;BIENVENUE sur le serveur FTP monsite.net&lt;/code&gt;

Le paramétrage est enfin fini. Passons à l'étape palpitante des tests. 

== Tester le fonctionnement de Pure-ftpd[ ==

Premier réflexe, redémarrer le système pour prendre en compte tout les réglages.
&lt;code&gt;shutdown -r now&lt;/code&gt;

Nous allons maintenant créer un compte de test. Plus haut nous avons paramétré Pure-ftp pour que le stockage du mot de passe sous forme de hash MD5. Nous avons donc besoin de calculer le hash MD5 du compte test. De nombreux sites internet proposent de le faire en ligne, dont celui ci: http://www.md5hashgenerator.com/index.php

* mot de passe: '''''test'''''
* hash md5: '''''098f6bcd4621d373cade4e832627b4f6 '''''

Ouvrons une session PhPMyAdmin et ouvrons la table ''pureftpd'' de la base ''pureftpd''. Insérons une nouvelle ligne à remplir avec ces valeurs:

{| class=&quot;wikitable&quot;
|+ Paramètres du compte &quot;test&quot;
! paramètre
! variable
|-
| User / varchar(16) 
| '''test'''
|-
| status / enum 
| '''0'''
|-
| Password / varchar(64)
| '''098f6bcd4621d373cade4e832627b4f6 '''
|-
| Uid / varchar(11)
| '''1001'''
|-
| Gid / varchar(11)
| '''1001'''
|-
| Dir / varchar(128)
| '''/home/common/ftp'''
|-
| ULBandwidth / smallint(5)
| '''0'''
|-
| DLBandwidth / smallint(5
| '''0'''
|-
| comment / tinytext
| '''&lt;vide&gt;'''
|-
| ipccess / varchar(15)
|''' *'''
|-
| QuotaSize / smallint(5)
| '''0'''
|-
| QuotaFiles / int(11)
| '''0'''
|-
|}


Enregistrons cet utilisateur test. 
Le moment fatidique approche. A partir d'un poste du réseau local, ouvrons  notre logiciel client FTP et paramétrons une nouvelle connexion ainsi:
{| class=&quot;wikitable&quot;
|+ Paramètres du compte &quot;test&quot; coté client ftp
! paramètre
! variable
|-
| Hôte 
| '''&lt;adresse IP local du serveur FTP&gt;'''
|-
| Port 
| '''21'''
|-
| Protocole 
| '''FTP'''
|-
| Chiffrement 
| '''Connexion FTP explicite sur TLS'''
|-
| Identifiant 
|''' test'''
|-
| mot de passe 
| '''test'''
|-
|}
Connectons nous maintenant au serveur ftp avec cette connexion. Si tout ce passe bien, on reçoit le certificat de sécurité qu'on doit valider, puis la connexion s'effectue, le message d’accueil s'affiche dans la console. La connexion établie, on peut lire tout les dossiers et uploader dans le dossier ''/depot''.

== Conclusion ==

Une fois le système opérationnel, les utilisateurs ont un accès chiffré à votre serveur ftp. Le fait de gérer les comtpe sur une base MySQL permet aussi bien d'enregistrer des comptes automatiquement avec un code php que de les paramétrer manuellement en passant par PhpMyAdmin. Cependant, un problème de sécurité demeure: les mots de passe les plus faibles, stockés sous forme de hash MD5, ne résisterons pas au crackage.</text>
      <sha1>3l2a1yozrlkj9ibuzew1uqqzb7mr73y</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5557</id>
      <parentid>5556</parentid>
      <timestamp>2014-03-08T14:50:00Z</timestamp>
      <contributor>
        <username>Petitchat</username>
        <id>291</id>
      </contributor>
      <comment>/* Paramétrage MySQL */</comment>
      <text xml:space="preserve" bytes="14421">Pure-FTP est l'un des meilleurs logiciels serveur FTP,un excellent choix pour transférer des fichiers. Son niveau de sécurité est très bon, le paramétrage puissant. La prise en charge du SSL nous permettra de chiffrer les données transitant par Internet. Le fait qu'on puisse gérer les comptes grâce à une table MySQL sera très pratique pour automatiser plus tard la création des comptes. 

== Prérequis ==

*Deux partition dédiées au stockage et l'écriture des données. 
*Un certificat de sécurité
*Apache, MySQL, PhpMyAdmin
*plusieurs heures devant soi et du courage 

En avant !

== Structure de l'arborescence du FTP ==

Avant de se lancer dans l'installation du FTP, il faut s’interroger sur la structure qu'aura l' arborescence du FTP. Si l'on souhaite partager des médias, le plus simple est de dédier (au moins) une partition de grande taille à la lecture et d'ajouter une seconde partition plus petite dédiée à l'écriture, là où les utilisateurs pourrons uploader. Nous traiterons ce cas simple à titre d'exemple; il est possible par la suite d'ajouter des partitions. 

Partition 1: &lt;br&gt;
* nom: '''sdb5'''
* rôle: propose des médias en lecture seule. 
* contenu: '''trois dossiers de stockage, comme /logiciel, /film, /musique'''
&lt;br&gt;
Partition 2:
* nom: '''sdb6'''
* rôle: espace dédié à la lecture écriture. 
* contenu: '''un répertoire de stockage servant aux dépôts des utilisateurs, /depot'''

créons les dossiers nécessaires au montage de l'arborescence. Ceux sur lesquels seront montés les partitions...
&lt;code&gt;cd /mnt/
mkdir data
mkdir depot&lt;/code&gt;

...et ajoutons ces lignes au fichier ''/etc/fstab'' pour monter les partitions au démarrage. ( Bonne doc sur fstab ici: http://doc.ubuntu-fr.org/mount_fstab )
&lt;code&gt;#disques de stockage
/dev/sdb5       /mnt/data ext3  user,rw,exec 0  0
/dev/sdb6       /mnt/depot ext3  user,rw,exec 0  0
&lt;/code&gt;

Il faut maintenant intégrer les dossiers à la racine des deux partition à l’arborescence du ftp. Ceci se fait  avec la puissante option ''bind'' du fichier ''/etc/fstab''. 
Créons les dossiers cibles qui seront à la racine du ftp.
&lt;code&gt;
cd /home/common/
mkdir ftp
cd ftp
mkdir logiciel; mkdir film; mkdir musique; mkdir depot
&lt;/code&gt;

Puis ajoutons ces lignes au fichier ''fstab'' afin de monter l'arborescence au démarrage du serveur:
&lt;code&gt;#dossiers ftp avec option bind
/mnt/data/logiciel     /home/common/ftp/logiciel none bind 0 0
/mnt/data/film      /home/common/ftp/film none bind 0 0
/mnt/data/musique     /home/common/ftp/musique none bind 0 0
/mnt/depot/depot      /home/common/ftp/depot none bind 0 0&lt;/code&gt;

Vérifier enfin si l'arborescence est correctement montée après redémarrage.
&lt;code&gt;shutdown -r now&lt;/code&gt;

== Gestion des droits de l'arborescence de pure-ftp ==

Dans notre cas, les utilisateurs auront tous les mêmes droits: droit en lecture sur toute l'arborescence (sauf dossier ''lost+find'' )et droit en écriture dans le dossier ''depot''. Nous allons donc créer un nouvel utilisateur dans Debian muni de ces droits.

Pour ce faire on tape ce code:
&lt;code&gt;adduser pureftpd&lt;/code&gt;
puis on répond aux questions ainsi: '''''&lt;pureftpd&gt;, &lt;pureftpd&gt;, &lt;pure-ftp&gt;, &lt;vide&gt;, &lt;vide&gt;, &lt;vide&gt;, &lt;vide&gt;, o'''''
En consultant le fichier ''/etc/passwd'', on peut relever l'Uid et le Gid de ce nouvel utilisateur. 
&lt;code&gt;
cat /etc/passwd
&lt;/code&gt;
'''Si l'utilisateur ''pureftpd'' est le deuxième à être créé, il lui est attribué les valeurs :Uid=''1001'' et Gid=''1001'''''. Ces valeurs serviront au moment des créations de compte ftp. Chaque compte paramétré avec ces Uid,Gid sera vu par le serveur comme le compte ''pureftpd''.

Cette commande change le propriétaire du dossier'' /mnt/depot'' de manière récursive. Le propriétaire devient l'utilisateur ''pureftpd'', et le groupe ''root''. Cela autorise l'écriture pour l'utilisateur du ftp.
&lt;code&gt;chown -R pureftpd:root /mnt/depot&lt;/code&gt;

Si on s’arrête là, les utilisateurs ont accès au dossier ''lost+found''. Ça n'est pas très propre. On corrige ce défaut avec la ligne suivante qui change le propriétaire de ''lost+found'' et le restitue au l'utilisateur ''root'' du groupe ''root''.
&lt;code&gt;chown root:root /mnt/depot/lost+found&lt;/code&gt;

== Préparation de l'installation, compilation et installation ==

D'abord nous allons télécharger les fichiers sources et les décompresser. Sur la page http://download.pureftpd.org/pub/pure-ftpd/releases/   est recensé les différentes version du logiciel. 
&lt;code&gt;wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.36.tar.gz&lt;/code&gt;
on décompresse ensuite l'archive obtenue.
&lt;code&gt;tar zxvf pure-ftpd-1.0.36.tar.gz&lt;/code&gt;

Après lecture de la doc officielle,    http://download.pureftpd.org/pure-ftpd/doc/README , on installe les dépendances du logiciel:
&lt;code&gt;
aptitude install libmysqlclient-dev libssl-dev build-essential&lt;/code&gt;

Puis on choisi les options de compilation qui nous intéresseront:
* --with-tls : permet d'utiliser ce type de chiffrement
* --with-certfile=/home/nomdedomaine.pem : indique au compilateur l'emplacement du certificat de chiffrement. Vérifier que le certificat '''nomdedomaine.pem''' est présent à l'emplacement indiqué. 
* --with-ftpwho: active la commande &quot;ftp-who&quot;, pratique pour vérifier l'activité en temps réel
* --with-language=french: défini le français comme langue 
* --with-mysql : les utilisateurs seront stocké dans une base MySQL
* --with-cookie : permet d'utiliser un fichier fortunefile pour que le serveur affiche une phrase d'acceuil 
* --with-altlog: permet la journalisation dans différents formats, ceci sera utile plus tard au moment du monitoring.

On se place alors dans le dossier des fichiers sources
&lt;code&gt;cd pure-ftpd-1.0.36&lt;/code&gt;
et on lance la compilation avec les options voulues:
&lt;code&gt;./configure --with-tls --with-certfile=/home/nomdedomaine.pem --with-ftpwho --with-language=french --with-mysql --with-cookie --with-altlog&lt;/code&gt;
Si tout s'est bien passé, on termine l’installation par un 
&lt;code&gt;make&lt;/code&gt;
puis enfin
&lt;code&gt;make install&lt;/code&gt;

== Paramétrage MySQL ==

Il faut maintenant configurer l'accès à la base d'authentification. Concentrons nous d'abord sur le fichier de configuration ''/etc/pure-ftpd/db/mysql.conf''.

Modifier ces lignes comme ceci pour définir un utilisateur, son mot de passe et le nom de la base:
&lt;code&gt;# Mandatory : user to bind the server as.
MYSQLUser       pureftpd

# Mandatory : user password. You must have a password.
MYSQLPassword   pureftpd

# Mandatory : database to open.
MYSQLDatabase   pureftpd&lt;/code&gt;

et, pour maintenir un chiffrement des mot de passe tout en rendement possible la liaison que l'on aura a effectuer plus tard entre PhpBB et Pure-FTP, en choisi un chiffrement en md5:
&lt;code&gt;# Mandatory : how passwords are stored
# Valid values are : &quot;cleartext&quot;, &quot;crypt&quot;, &quot;md5&quot; and &quot;password&quot;
# (&quot;password&quot; = MySQL password() function)
# You can also use &quot;any&quot; to try &quot;crypt&quot;, &quot;md5&quot; *and* &quot;password&quot;
MYSQLCrypt      md5&lt;/code&gt;

Après ces changements on laisse le fichier  ''mysql.conf''.

Reste a créer la base. facile avec PhpMyAdmin.

* nom de la base : '''''pureftpd'''''
* nom de la table : '''''pureftpd'''''
* Nombre de colonnes : 12

{| class=&quot;wikitable&quot;
|+ Paramètres de la base pureftpd
! paramètre
! Type de variable
|-
| Nom  
| ''type''
|-
| User  
| ''varchar(16)''
|-
| status  
| ''enum''
|-
| Password  
| ''varchar(64)''
|-
| Uid  
| ''varchar(11)''
|-
| Gid  
| ''varchar(11)''
|-
| Dir  
| ''varchar(128)''
|-
| ULBandwidth  
| ''smallint(5)''
|-
| DLBandwidth  
| ''smallint(5)''
|-
| comment  
| ''tinytext''
|-
| ipaccess  
| ''varchar(15) ''
|-
| QuotaSize  
| ''smallint(5)''
|-
| QuotaFiles  
| ''int(11)''
|-
|}

Pour finir, dans PhpMyAdmin, on créé un utilisateur '''''pureftpd''''', mot de passe  '''''pureftpd''''',  avec tout les droits sur la table, « tout cocher ».

== Écriture et intégration d'un script de lancement du démon Pure-ftpd ==

Par soucis de commodité nous créons ce script dans le Bureau de l'utilisateur principal et nous le nommons ''pure-ftpd-startupscript''. 
&lt;code&gt;cd /hom/denis/Bureau
nano pure-ftpd-startupscript&lt;/code&gt;
Ce petit script comportera quatre lignes, la plus importante étant la ligne de commande de lancement de Prure-ftpd avec ses options. Ces trois autres lignes sont triviales:
&lt;code&gt;#!/bin/bash
echo &quot;lancement du daemon pure-ftpd&quot;

echo &quot;Fin du lancement de Pure-ftpd&quot;&lt;/code&gt;
On les colle dans ''pure-ftpd-startupscript'' et on enregistre les changements. 

Le démon Pure-ftpd se lance via une ligne de commande qui est très puissante. Optimiser au mieux les options de cette ligne de commande nous permettra d'avoir un Pure-ftpd &quot;sur mesure&quot;. La doc à consulter est toujours : http://download.pureftpd.org/pub/pure-ftpd/doc/README. 

Voici un résumé des options qui nous intéressent le plus :

* -c: nombre de clients simultanées. '''Dans notre cas on peut par exemple fixer la valeur à ''50''.'''
* -A: Chroot everyone. 
* -B: en background (daemonization)
* -C: nombre maximum de connexions par client. '''Choisir une valeur assez basse, par exemple ''3'', par mesure de sécurité, pour éviter qu'un utilisateur ne monopolise la bande passante montante du serveur. '''
* -E: n'autorise que les utilisateurs authentifiés, interdit les connexions anonymes
* -F: Fortune files, message d’accueil. '''Dans notre cas il se trouve ici : ''/home/common/fortunefile'''''
* -G: interdit le renommage
* -K: autorise l'utilisateur à reprendre un upload mais lui interdit de l'effacer ou de le renommer
* -l: méthode d'authentification et chemin vers le fichier de config de l'authentification. '''Dans notre cas, on active l'authentification msyql et on précise le chemin du fichier config comme ceci: ''mysql:/etc/pure-ftpd/db/mysql.conf'''''
* -O:  Enregistre tout les transferts de fichiers dans un fichier journal particulier, dans un format alternatif. Quatre formats sont supportés:  CLF (Apache-like), Stats, W3C and xferlog. '''Ici on peut rendre les logs de Pure-ftpd exploitables par AWStats avec la variable ''clf:/var/log/transfer.log'' .'''
* -p: ports du mode passif . '''On choisi par exemple la plage de port ''34343:34443''.'''
* -R: empêche les utilisateurs d'utiliser chmod
* -Y: à 2, active l'explicite TLS

On obtiens donc la ligne de commande suivante:
&lt;code&gt;/usr/local/sbin/pure-ftpd -c 50 -A -B -C 3 -E -F /home/common/fortunefile -G -K -l mysql:/etc/pure-ftpd/db/mysql.conf -O clf:/var/log/transfer.log -p 34343:34443 -R -Y 2 &amp;&lt;/code&gt;
/!\ La rédaction de cette ligne de commande nécessite de la minutie. Il suffit d'une majuscule confondue avec une minuscule, un espace d'oublié pour générer une erreur. Les erreurs non fatales ne seront pas toujours signalées par un message d'erreur, mais le démon ne se lancera sans activer l'option erronée. Prudence donc. /!\

La version finale du fichier ''pure-ftpd-startupscript'' est donc:
&lt;code&gt;#!/bin/bash
echo &quot;lancement du daemon pure-ftpd&quot;
/usr/local/sbin/pure-ftpd -c 50 -A -B -C 3 -E -F /home/common/fortunefile -G -K -l mysql:/etc/pure-ftpd/db/mysql.conf -O clf:/var/log/transfer.log -p 34343:34443 -R -Y 2 &amp;
echo &quot;Fin du lancement de Pure-ftpd&quot;&lt;/code&gt;
Rendre ce script executable:
&lt;code&gt;chmod +x  pure-ftpd-startupscript&lt;/code&gt;
L'intégration s'achève par l'ajout du lancement à la séquence de démarrage du serveur:
&lt;code&gt; 
cp  pure-ftpd-startupscript /etc/init.d
update-rc.d pure-ftpd-startupscript defaults &lt;/code&gt;

== Dernier réglage: message d’accueil ==


Le dernier réglage concerne le message d'acceuil. Il suffit de créer le fichier''/home/common/fortunefile'' et y enregistrer un texte de bienvenue.
&lt;code&gt;BIENVENUE sur le serveur FTP monsite.net&lt;/code&gt;

Le paramétrage est enfin fini. Passons à l'étape palpitante des tests. 

== Tester le fonctionnement de Pure-ftpd ==

Premier réflexe, redémarrer le système pour prendre en compte tout les réglages.
&lt;code&gt;shutdown -r now&lt;/code&gt;

Nous allons maintenant créer un compte de test. Plus haut nous avons paramétré Pure-ftp pour que le stockage du mot de passe sous forme de hash MD5. Nous avons donc besoin de calculer le hash MD5 du compte test. De nombreux sites internet proposent de le faire en ligne, dont celui ci: http://www.md5hashgenerator.com/index.php

* mot de passe: '''''test'''''
* hash md5: '''''098f6bcd4621d373cade4e832627b4f6 '''''

Ouvrons une session PhPMyAdmin et ouvrons la table ''pureftpd'' de la base ''pureftpd''. Insérons une nouvelle ligne à remplir avec ces valeurs:

{| class=&quot;wikitable&quot;
|+ Paramètres du compte &quot;test&quot;
! paramètre
! variable
|-
| User / varchar(16) 
| '''test'''
|-
| status / enum 
| '''0'''
|-
| Password / varchar(64)
| '''098f6bcd4621d373cade4e832627b4f6 '''
|-
| Uid / varchar(11)
| '''1001'''
|-
| Gid / varchar(11)
| '''1001'''
|-
| Dir / varchar(128)
| '''/home/common/ftp'''
|-
| ULBandwidth / smallint(5)
| '''0'''
|-
| DLBandwidth / smallint(5
| '''0'''
|-
| comment / tinytext
| '''&lt;vide&gt;'''
|-
| ipccess / varchar(15)
|''' *'''
|-
| QuotaSize / smallint(5)
| '''0'''
|-
| QuotaFiles / int(11)
| '''0'''
|-
|}


Enregistrons cet utilisateur test. 
Le moment fatidique approche. A partir d'un poste du réseau local, ouvrons  notre logiciel client FTP et paramétrons une nouvelle connexion ainsi:
{| class=&quot;wikitable&quot;
|+ Paramètres du compte &quot;test&quot; coté client ftp
! paramètre
! variable
|-
| Hôte 
| '''&lt;adresse IP local du serveur FTP&gt;'''
|-
| Port 
| '''21'''
|-
| Protocole 
| '''FTP'''
|-
| Chiffrement 
| '''Connexion FTP explicite sur TLS'''
|-
| Identifiant 
|''' test'''
|-
| mot de passe 
| '''test'''
|-
|}
Connectons nous maintenant au serveur ftp avec cette connexion. Si tout ce passe bien, on reçoit le certificat de sécurité qu'on doit valider, puis la connexion s'effectue, le message d’accueil s'affiche dans la console. La connexion établie, on peut lire tout les dossiers et uploader dans le dossier ''/depot''.

== Conclusion ==

Une fois le système opérationnel, les utilisateurs ont un accès chiffré à votre serveur ftp. Le fait de gérer les comtpe sur une base MySQL permet aussi bien d'enregistrer des comptes automatiquement avec un code php que de les paramétrer manuellement en passant par PhpMyAdmin. Cependant, un problème de sécurité demeure: les mots de passe les plus faibles, stockés sous forme de hash MD5, ne résisterons pas au crackage.</text>
      <sha1>j8kdxyjajc76arsmn70pwd7dqkcagc4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5559</id>
      <parentid>5557</parentid>
      <timestamp>2014-03-08T15:25:27Z</timestamp>
      <contributor>
        <username>Petitchat</username>
        <id>291</id>
      </contributor>
      <text xml:space="preserve" bytes="14422">Pure-FTP est l'un des meilleurs logiciels serveur FTP, un excellent choix pour transférer des fichiers. Son niveau de sécurité est très bon, le paramétrage puissant. La prise en charge du SSL nous permettra de chiffrer les données transitant par Internet. Le fait qu'on puisse gérer les comptes grâce à une table MySQL sera très pratique pour automatiser plus tard la création des comptes. 

== Prérequis ==

*Deux partition dédiées au stockage et l'écriture des données. 
*Un certificat de sécurité
*Apache, MySQL, PhpMyAdmin
*plusieurs heures devant soi et du courage 

En avant !

== Structure de l'arborescence du FTP ==

Avant de se lancer dans l'installation du FTP, il faut s’interroger sur la structure qu'aura l' arborescence du FTP. Si l'on souhaite partager des médias, le plus simple est de dédier (au moins) une partition de grande taille à la lecture et d'ajouter une seconde partition plus petite dédiée à l'écriture, là où les utilisateurs pourrons uploader. Nous traiterons ce cas simple à titre d'exemple; il est possible par la suite d'ajouter des partitions. 

Partition 1: &lt;br&gt;
* nom: '''sdb5'''
* rôle: propose des médias en lecture seule. 
* contenu: '''trois dossiers de stockage, comme /logiciel, /film, /musique'''
&lt;br&gt;
Partition 2:
* nom: '''sdb6'''
* rôle: espace dédié à la lecture écriture. 
* contenu: '''un répertoire de stockage servant aux dépôts des utilisateurs, /depot'''

créons les dossiers nécessaires au montage de l'arborescence. Ceux sur lesquels seront montés les partitions...
&lt;code&gt;cd /mnt/
mkdir data
mkdir depot&lt;/code&gt;

...et ajoutons ces lignes au fichier ''/etc/fstab'' pour monter les partitions au démarrage. ( Bonne doc sur fstab ici: http://doc.ubuntu-fr.org/mount_fstab )
&lt;code&gt;#disques de stockage
/dev/sdb5       /mnt/data ext3  user,rw,exec 0  0
/dev/sdb6       /mnt/depot ext3  user,rw,exec 0  0
&lt;/code&gt;

Il faut maintenant intégrer les dossiers à la racine des deux partition à l’arborescence du ftp. Ceci se fait  avec la puissante option ''bind'' du fichier ''/etc/fstab''. 
Créons les dossiers cibles qui seront à la racine du ftp.
&lt;code&gt;
cd /home/common/
mkdir ftp
cd ftp
mkdir logiciel; mkdir film; mkdir musique; mkdir depot
&lt;/code&gt;

Puis ajoutons ces lignes au fichier ''fstab'' afin de monter l'arborescence au démarrage du serveur:
&lt;code&gt;#dossiers ftp avec option bind
/mnt/data/logiciel     /home/common/ftp/logiciel none bind 0 0
/mnt/data/film      /home/common/ftp/film none bind 0 0
/mnt/data/musique     /home/common/ftp/musique none bind 0 0
/mnt/depot/depot      /home/common/ftp/depot none bind 0 0&lt;/code&gt;

Vérifier enfin si l'arborescence est correctement montée après redémarrage.
&lt;code&gt;shutdown -r now&lt;/code&gt;

== Gestion des droits de l'arborescence de pure-ftp ==

Dans notre cas, les utilisateurs auront tous les mêmes droits: droit en lecture sur toute l'arborescence (sauf dossier ''lost+find'' )et droit en écriture dans le dossier ''depot''. Nous allons donc créer un nouvel utilisateur dans Debian muni de ces droits.

Pour ce faire on tape ce code:
&lt;code&gt;adduser pureftpd&lt;/code&gt;
puis on répond aux questions ainsi: '''''&lt;pureftpd&gt;, &lt;pureftpd&gt;, &lt;pure-ftp&gt;, &lt;vide&gt;, &lt;vide&gt;, &lt;vide&gt;, &lt;vide&gt;, o'''''
En consultant le fichier ''/etc/passwd'', on peut relever l'Uid et le Gid de ce nouvel utilisateur. 
&lt;code&gt;
cat /etc/passwd
&lt;/code&gt;
'''Si l'utilisateur ''pureftpd'' est le deuxième à être créé, il lui est attribué les valeurs :Uid=''1001'' et Gid=''1001'''''. Ces valeurs serviront au moment des créations de compte ftp. Chaque compte paramétré avec ces Uid,Gid sera vu par le serveur comme le compte ''pureftpd''.

Cette commande change le propriétaire du dossier'' /mnt/depot'' de manière récursive. Le propriétaire devient l'utilisateur ''pureftpd'', et le groupe ''root''. Cela autorise l'écriture pour l'utilisateur du ftp.
&lt;code&gt;chown -R pureftpd:root /mnt/depot&lt;/code&gt;

Si on s’arrête là, les utilisateurs ont accès au dossier ''lost+found''. Ça n'est pas très propre. On corrige ce défaut avec la ligne suivante qui change le propriétaire de ''lost+found'' et le restitue au l'utilisateur ''root'' du groupe ''root''.
&lt;code&gt;chown root:root /mnt/depot/lost+found&lt;/code&gt;

== Préparation de l'installation, compilation et installation ==

D'abord nous allons télécharger les fichiers sources et les décompresser. Sur la page http://download.pureftpd.org/pub/pure-ftpd/releases/   est recensé les différentes version du logiciel. 
&lt;code&gt;wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.36.tar.gz&lt;/code&gt;
on décompresse ensuite l'archive obtenue.
&lt;code&gt;tar zxvf pure-ftpd-1.0.36.tar.gz&lt;/code&gt;

Après lecture de la doc officielle,    http://download.pureftpd.org/pure-ftpd/doc/README , on installe les dépendances du logiciel:
&lt;code&gt;
aptitude install libmysqlclient-dev libssl-dev build-essential&lt;/code&gt;

Puis on choisi les options de compilation qui nous intéresseront:
* --with-tls : permet d'utiliser ce type de chiffrement
* --with-certfile=/home/nomdedomaine.pem : indique au compilateur l'emplacement du certificat de chiffrement. Vérifier que le certificat '''nomdedomaine.pem''' est présent à l'emplacement indiqué. 
* --with-ftpwho: active la commande &quot;ftp-who&quot;, pratique pour vérifier l'activité en temps réel
* --with-language=french: défini le français comme langue 
* --with-mysql : les utilisateurs seront stocké dans une base MySQL
* --with-cookie : permet d'utiliser un fichier fortunefile pour que le serveur affiche une phrase d'acceuil 
* --with-altlog: permet la journalisation dans différents formats, ceci sera utile plus tard au moment du monitoring.

On se place alors dans le dossier des fichiers sources
&lt;code&gt;cd pure-ftpd-1.0.36&lt;/code&gt;
et on lance la compilation avec les options voulues:
&lt;code&gt;./configure --with-tls --with-certfile=/home/nomdedomaine.pem --with-ftpwho --with-language=french --with-mysql --with-cookie --with-altlog&lt;/code&gt;
Si tout s'est bien passé, on termine l’installation par un 
&lt;code&gt;make&lt;/code&gt;
puis enfin
&lt;code&gt;make install&lt;/code&gt;

== Paramétrage MySQL ==

Il faut maintenant configurer l'accès à la base d'authentification. Concentrons nous d'abord sur le fichier de configuration ''/etc/pure-ftpd/db/mysql.conf''.

Modifier ces lignes comme ceci pour définir un utilisateur, son mot de passe et le nom de la base:
&lt;code&gt;# Mandatory : user to bind the server as.
MYSQLUser       pureftpd

# Mandatory : user password. You must have a password.
MYSQLPassword   pureftpd

# Mandatory : database to open.
MYSQLDatabase   pureftpd&lt;/code&gt;

et, pour maintenir un chiffrement des mot de passe tout en rendement possible la liaison que l'on aura a effectuer plus tard entre PhpBB et Pure-FTP, en choisi un chiffrement en md5:
&lt;code&gt;# Mandatory : how passwords are stored
# Valid values are : &quot;cleartext&quot;, &quot;crypt&quot;, &quot;md5&quot; and &quot;password&quot;
# (&quot;password&quot; = MySQL password() function)
# You can also use &quot;any&quot; to try &quot;crypt&quot;, &quot;md5&quot; *and* &quot;password&quot;
MYSQLCrypt      md5&lt;/code&gt;

Après ces changements on laisse le fichier  ''mysql.conf''.

Reste a créer la base. facile avec PhpMyAdmin.

* nom de la base : '''''pureftpd'''''
* nom de la table : '''''pureftpd'''''
* Nombre de colonnes : 12

{| class=&quot;wikitable&quot;
|+ Paramètres de la base pureftpd
! paramètre
! Type de variable
|-
| Nom  
| ''type''
|-
| User  
| ''varchar(16)''
|-
| status  
| ''enum''
|-
| Password  
| ''varchar(64)''
|-
| Uid  
| ''varchar(11)''
|-
| Gid  
| ''varchar(11)''
|-
| Dir  
| ''varchar(128)''
|-
| ULBandwidth  
| ''smallint(5)''
|-
| DLBandwidth  
| ''smallint(5)''
|-
| comment  
| ''tinytext''
|-
| ipaccess  
| ''varchar(15) ''
|-
| QuotaSize  
| ''smallint(5)''
|-
| QuotaFiles  
| ''int(11)''
|-
|}

Pour finir, dans PhpMyAdmin, on créé un utilisateur '''''pureftpd''''', mot de passe  '''''pureftpd''''',  avec tout les droits sur la table, « tout cocher ».

== Écriture et intégration d'un script de lancement du démon Pure-ftpd ==

Par soucis de commodité nous créons ce script dans le Bureau de l'utilisateur principal et nous le nommons ''pure-ftpd-startupscript''. 
&lt;code&gt;cd /hom/denis/Bureau
nano pure-ftpd-startupscript&lt;/code&gt;
Ce petit script comportera quatre lignes, la plus importante étant la ligne de commande de lancement de Prure-ftpd avec ses options. Ces trois autres lignes sont triviales:
&lt;code&gt;#!/bin/bash
echo &quot;lancement du daemon pure-ftpd&quot;

echo &quot;Fin du lancement de Pure-ftpd&quot;&lt;/code&gt;
On les colle dans ''pure-ftpd-startupscript'' et on enregistre les changements. 

Le démon Pure-ftpd se lance via une ligne de commande qui est très puissante. Optimiser au mieux les options de cette ligne de commande nous permettra d'avoir un Pure-ftpd &quot;sur mesure&quot;. La doc à consulter est toujours : http://download.pureftpd.org/pub/pure-ftpd/doc/README. 

Voici un résumé des options qui nous intéressent le plus :

* -c: nombre de clients simultanées. '''Dans notre cas on peut par exemple fixer la valeur à ''50''.'''
* -A: Chroot everyone. 
* -B: en background (daemonization)
* -C: nombre maximum de connexions par client. '''Choisir une valeur assez basse, par exemple ''3'', par mesure de sécurité, pour éviter qu'un utilisateur ne monopolise la bande passante montante du serveur. '''
* -E: n'autorise que les utilisateurs authentifiés, interdit les connexions anonymes
* -F: Fortune files, message d’accueil. '''Dans notre cas il se trouve ici : ''/home/common/fortunefile'''''
* -G: interdit le renommage
* -K: autorise l'utilisateur à reprendre un upload mais lui interdit de l'effacer ou de le renommer
* -l: méthode d'authentification et chemin vers le fichier de config de l'authentification. '''Dans notre cas, on active l'authentification msyql et on précise le chemin du fichier config comme ceci: ''mysql:/etc/pure-ftpd/db/mysql.conf'''''
* -O:  Enregistre tout les transferts de fichiers dans un fichier journal particulier, dans un format alternatif. Quatre formats sont supportés:  CLF (Apache-like), Stats, W3C and xferlog. '''Ici on peut rendre les logs de Pure-ftpd exploitables par AWStats avec la variable ''clf:/var/log/transfer.log'' .'''
* -p: ports du mode passif . '''On choisi par exemple la plage de port ''34343:34443''.'''
* -R: empêche les utilisateurs d'utiliser chmod
* -Y: à 2, active l'explicite TLS

On obtiens donc la ligne de commande suivante:
&lt;code&gt;/usr/local/sbin/pure-ftpd -c 50 -A -B -C 3 -E -F /home/common/fortunefile -G -K -l mysql:/etc/pure-ftpd/db/mysql.conf -O clf:/var/log/transfer.log -p 34343:34443 -R -Y 2 &amp;&lt;/code&gt;
/!\ La rédaction de cette ligne de commande nécessite de la minutie. Il suffit d'une majuscule confondue avec une minuscule, un espace d'oublié pour générer une erreur. Les erreurs non fatales ne seront pas toujours signalées par un message d'erreur, mais le démon ne se lancera sans activer l'option erronée. Prudence donc. /!\

La version finale du fichier ''pure-ftpd-startupscript'' est donc:
&lt;code&gt;#!/bin/bash
echo &quot;lancement du daemon pure-ftpd&quot;
/usr/local/sbin/pure-ftpd -c 50 -A -B -C 3 -E -F /home/common/fortunefile -G -K -l mysql:/etc/pure-ftpd/db/mysql.conf -O clf:/var/log/transfer.log -p 34343:34443 -R -Y 2 &amp;
echo &quot;Fin du lancement de Pure-ftpd&quot;&lt;/code&gt;
Rendre ce script executable:
&lt;code&gt;chmod +x  pure-ftpd-startupscript&lt;/code&gt;
L'intégration s'achève par l'ajout du lancement à la séquence de démarrage du serveur:
&lt;code&gt; 
cp  pure-ftpd-startupscript /etc/init.d
update-rc.d pure-ftpd-startupscript defaults &lt;/code&gt;

== Dernier réglage: message d’accueil ==


Le dernier réglage concerne le message d'acceuil. Il suffit de créer le fichier''/home/common/fortunefile'' et y enregistrer un texte de bienvenue.
&lt;code&gt;BIENVENUE sur le serveur FTP monsite.net&lt;/code&gt;

Le paramétrage est enfin fini. Passons à l'étape palpitante des tests. 

== Tester le fonctionnement de Pure-ftpd ==

Premier réflexe, redémarrer le système pour prendre en compte tout les réglages.
&lt;code&gt;shutdown -r now&lt;/code&gt;

Nous allons maintenant créer un compte de test. Plus haut nous avons paramétré Pure-ftp pour que le stockage du mot de passe sous forme de hash MD5. Nous avons donc besoin de calculer le hash MD5 du compte test. De nombreux sites internet proposent de le faire en ligne, dont celui ci: http://www.md5hashgenerator.com/index.php

* mot de passe: '''''test'''''
* hash md5: '''''098f6bcd4621d373cade4e832627b4f6 '''''

Ouvrons une session PhPMyAdmin et ouvrons la table ''pureftpd'' de la base ''pureftpd''. Insérons une nouvelle ligne à remplir avec ces valeurs:

{| class=&quot;wikitable&quot;
|+ Paramètres du compte &quot;test&quot;
! paramètre
! variable
|-
| User / varchar(16) 
| '''test'''
|-
| status / enum 
| '''0'''
|-
| Password / varchar(64)
| '''098f6bcd4621d373cade4e832627b4f6 '''
|-
| Uid / varchar(11)
| '''1001'''
|-
| Gid / varchar(11)
| '''1001'''
|-
| Dir / varchar(128)
| '''/home/common/ftp'''
|-
| ULBandwidth / smallint(5)
| '''0'''
|-
| DLBandwidth / smallint(5
| '''0'''
|-
| comment / tinytext
| '''&lt;vide&gt;'''
|-
| ipccess / varchar(15)
|''' *'''
|-
| QuotaSize / smallint(5)
| '''0'''
|-
| QuotaFiles / int(11)
| '''0'''
|-
|}


Enregistrons cet utilisateur test. 
Le moment fatidique approche. A partir d'un poste du réseau local, ouvrons  notre logiciel client FTP et paramétrons une nouvelle connexion ainsi:
{| class=&quot;wikitable&quot;
|+ Paramètres du compte &quot;test&quot; coté client ftp
! paramètre
! variable
|-
| Hôte 
| '''&lt;adresse IP local du serveur FTP&gt;'''
|-
| Port 
| '''21'''
|-
| Protocole 
| '''FTP'''
|-
| Chiffrement 
| '''Connexion FTP explicite sur TLS'''
|-
| Identifiant 
|''' test'''
|-
| mot de passe 
| '''test'''
|-
|}
Connectons nous maintenant au serveur ftp avec cette connexion. Si tout ce passe bien, on reçoit le certificat de sécurité qu'on doit valider, puis la connexion s'effectue, le message d’accueil s'affiche dans la console. La connexion établie, on peut lire tout les dossiers et uploader dans le dossier ''/depot''.

== Conclusion ==

Une fois le système opérationnel, les utilisateurs ont un accès chiffré à votre serveur ftp. Le fait de gérer les comtpe sur une base MySQL permet aussi bien d'enregistrer des comptes automatiquement avec un code php que de les paramétrer manuellement en passant par PhpMyAdmin. Cependant, un problème de sécurité demeure: les mots de passe les plus faibles, stockés sous forme de hash MD5, ne résisterons pas au crackage.</text>
      <sha1>m3nmtkwg1t6c2zxou8j6qlp02r1y24e</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5560</id>
      <parentid>5559</parentid>
      <timestamp>2014-03-08T15:28:33Z</timestamp>
      <contributor>
        <username>Petitchat</username>
        <id>291</id>
      </contributor>
      <comment>/* Gestion des droits de l'arborescence de pure-ftp */</comment>
      <text xml:space="preserve" bytes="14423">Pure-FTP est l'un des meilleurs logiciels serveur FTP, un excellent choix pour transférer des fichiers. Son niveau de sécurité est très bon, le paramétrage puissant. La prise en charge du SSL nous permettra de chiffrer les données transitant par Internet. Le fait qu'on puisse gérer les comptes grâce à une table MySQL sera très pratique pour automatiser plus tard la création des comptes. 

== Prérequis ==

*Deux partition dédiées au stockage et l'écriture des données. 
*Un certificat de sécurité
*Apache, MySQL, PhpMyAdmin
*plusieurs heures devant soi et du courage 

En avant !

== Structure de l'arborescence du FTP ==

Avant de se lancer dans l'installation du FTP, il faut s’interroger sur la structure qu'aura l' arborescence du FTP. Si l'on souhaite partager des médias, le plus simple est de dédier (au moins) une partition de grande taille à la lecture et d'ajouter une seconde partition plus petite dédiée à l'écriture, là où les utilisateurs pourrons uploader. Nous traiterons ce cas simple à titre d'exemple; il est possible par la suite d'ajouter des partitions. 

Partition 1: &lt;br&gt;
* nom: '''sdb5'''
* rôle: propose des médias en lecture seule. 
* contenu: '''trois dossiers de stockage, comme /logiciel, /film, /musique'''
&lt;br&gt;
Partition 2:
* nom: '''sdb6'''
* rôle: espace dédié à la lecture écriture. 
* contenu: '''un répertoire de stockage servant aux dépôts des utilisateurs, /depot'''

créons les dossiers nécessaires au montage de l'arborescence. Ceux sur lesquels seront montés les partitions...
&lt;code&gt;cd /mnt/
mkdir data
mkdir depot&lt;/code&gt;

...et ajoutons ces lignes au fichier ''/etc/fstab'' pour monter les partitions au démarrage. ( Bonne doc sur fstab ici: http://doc.ubuntu-fr.org/mount_fstab )
&lt;code&gt;#disques de stockage
/dev/sdb5       /mnt/data ext3  user,rw,exec 0  0
/dev/sdb6       /mnt/depot ext3  user,rw,exec 0  0
&lt;/code&gt;

Il faut maintenant intégrer les dossiers à la racine des deux partition à l’arborescence du ftp. Ceci se fait  avec la puissante option ''bind'' du fichier ''/etc/fstab''. 
Créons les dossiers cibles qui seront à la racine du ftp.
&lt;code&gt;
cd /home/common/
mkdir ftp
cd ftp
mkdir logiciel; mkdir film; mkdir musique; mkdir depot
&lt;/code&gt;

Puis ajoutons ces lignes au fichier ''fstab'' afin de monter l'arborescence au démarrage du serveur:
&lt;code&gt;#dossiers ftp avec option bind
/mnt/data/logiciel     /home/common/ftp/logiciel none bind 0 0
/mnt/data/film      /home/common/ftp/film none bind 0 0
/mnt/data/musique     /home/common/ftp/musique none bind 0 0
/mnt/depot/depot      /home/common/ftp/depot none bind 0 0&lt;/code&gt;

Vérifier enfin si l'arborescence est correctement montée après redémarrage.
&lt;code&gt;shutdown -r now&lt;/code&gt;

== Gestion des droits de l'arborescence de pure-ftp ==

Dans notre cas, les utilisateurs auront tous les mêmes droits: droit en lecture sur toute l'arborescence (sauf dossier ''lost+find'' ) et droit en écriture dans le dossier ''depot''. Nous allons donc créer un nouvel utilisateur dans Debian muni de ces droits.

Pour ce faire on tape ce code:
&lt;code&gt;adduser pureftpd&lt;/code&gt;
puis on répond aux questions ainsi: '''''&lt;pureftpd&gt;, &lt;pureftpd&gt;, &lt;pure-ftp&gt;, &lt;vide&gt;, &lt;vide&gt;, &lt;vide&gt;, &lt;vide&gt;, o'''''
En consultant le fichier ''/etc/passwd'', on peut relever l'Uid et le Gid de ce nouvel utilisateur. 
&lt;code&gt;
cat /etc/passwd
&lt;/code&gt;
'''Si l'utilisateur ''pureftpd'' est le deuxième à être créé, il lui est attribué les valeurs :Uid=''1001'' et Gid=''1001'''''. Ces valeurs serviront au moment des créations de compte ftp. Chaque compte paramétré avec ces Uid,Gid sera vu par le serveur comme le compte ''pureftpd''.

Cette commande change le propriétaire du dossier'' /mnt/depot'' de manière récursive. Le propriétaire devient l'utilisateur ''pureftpd'', et le groupe ''root''. Cela autorise l'écriture pour l'utilisateur du ftp.
&lt;code&gt;chown -R pureftpd:root /mnt/depot&lt;/code&gt;

Si on s’arrête là, les utilisateurs ont accès au dossier ''lost+found''. Ça n'est pas très propre. On corrige ce défaut avec la ligne suivante qui change le propriétaire de ''lost+found'' et le restitue au l'utilisateur ''root'' du groupe ''root''.
&lt;code&gt;chown root:root /mnt/depot/lost+found&lt;/code&gt;

== Préparation de l'installation, compilation et installation ==

D'abord nous allons télécharger les fichiers sources et les décompresser. Sur la page http://download.pureftpd.org/pub/pure-ftpd/releases/   est recensé les différentes version du logiciel. 
&lt;code&gt;wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.36.tar.gz&lt;/code&gt;
on décompresse ensuite l'archive obtenue.
&lt;code&gt;tar zxvf pure-ftpd-1.0.36.tar.gz&lt;/code&gt;

Après lecture de la doc officielle,    http://download.pureftpd.org/pure-ftpd/doc/README , on installe les dépendances du logiciel:
&lt;code&gt;
aptitude install libmysqlclient-dev libssl-dev build-essential&lt;/code&gt;

Puis on choisi les options de compilation qui nous intéresseront:
* --with-tls : permet d'utiliser ce type de chiffrement
* --with-certfile=/home/nomdedomaine.pem : indique au compilateur l'emplacement du certificat de chiffrement. Vérifier que le certificat '''nomdedomaine.pem''' est présent à l'emplacement indiqué. 
* --with-ftpwho: active la commande &quot;ftp-who&quot;, pratique pour vérifier l'activité en temps réel
* --with-language=french: défini le français comme langue 
* --with-mysql : les utilisateurs seront stocké dans une base MySQL
* --with-cookie : permet d'utiliser un fichier fortunefile pour que le serveur affiche une phrase d'acceuil 
* --with-altlog: permet la journalisation dans différents formats, ceci sera utile plus tard au moment du monitoring.

On se place alors dans le dossier des fichiers sources
&lt;code&gt;cd pure-ftpd-1.0.36&lt;/code&gt;
et on lance la compilation avec les options voulues:
&lt;code&gt;./configure --with-tls --with-certfile=/home/nomdedomaine.pem --with-ftpwho --with-language=french --with-mysql --with-cookie --with-altlog&lt;/code&gt;
Si tout s'est bien passé, on termine l’installation par un 
&lt;code&gt;make&lt;/code&gt;
puis enfin
&lt;code&gt;make install&lt;/code&gt;

== Paramétrage MySQL ==

Il faut maintenant configurer l'accès à la base d'authentification. Concentrons nous d'abord sur le fichier de configuration ''/etc/pure-ftpd/db/mysql.conf''.

Modifier ces lignes comme ceci pour définir un utilisateur, son mot de passe et le nom de la base:
&lt;code&gt;# Mandatory : user to bind the server as.
MYSQLUser       pureftpd

# Mandatory : user password. You must have a password.
MYSQLPassword   pureftpd

# Mandatory : database to open.
MYSQLDatabase   pureftpd&lt;/code&gt;

et, pour maintenir un chiffrement des mot de passe tout en rendement possible la liaison que l'on aura a effectuer plus tard entre PhpBB et Pure-FTP, en choisi un chiffrement en md5:
&lt;code&gt;# Mandatory : how passwords are stored
# Valid values are : &quot;cleartext&quot;, &quot;crypt&quot;, &quot;md5&quot; and &quot;password&quot;
# (&quot;password&quot; = MySQL password() function)
# You can also use &quot;any&quot; to try &quot;crypt&quot;, &quot;md5&quot; *and* &quot;password&quot;
MYSQLCrypt      md5&lt;/code&gt;

Après ces changements on laisse le fichier  ''mysql.conf''.

Reste a créer la base. facile avec PhpMyAdmin.

* nom de la base : '''''pureftpd'''''
* nom de la table : '''''pureftpd'''''
* Nombre de colonnes : 12

{| class=&quot;wikitable&quot;
|+ Paramètres de la base pureftpd
! paramètre
! Type de variable
|-
| Nom  
| ''type''
|-
| User  
| ''varchar(16)''
|-
| status  
| ''enum''
|-
| Password  
| ''varchar(64)''
|-
| Uid  
| ''varchar(11)''
|-
| Gid  
| ''varchar(11)''
|-
| Dir  
| ''varchar(128)''
|-
| ULBandwidth  
| ''smallint(5)''
|-
| DLBandwidth  
| ''smallint(5)''
|-
| comment  
| ''tinytext''
|-
| ipaccess  
| ''varchar(15) ''
|-
| QuotaSize  
| ''smallint(5)''
|-
| QuotaFiles  
| ''int(11)''
|-
|}

Pour finir, dans PhpMyAdmin, on créé un utilisateur '''''pureftpd''''', mot de passe  '''''pureftpd''''',  avec tout les droits sur la table, « tout cocher ».

== Écriture et intégration d'un script de lancement du démon Pure-ftpd ==

Par soucis de commodité nous créons ce script dans le Bureau de l'utilisateur principal et nous le nommons ''pure-ftpd-startupscript''. 
&lt;code&gt;cd /hom/denis/Bureau
nano pure-ftpd-startupscript&lt;/code&gt;
Ce petit script comportera quatre lignes, la plus importante étant la ligne de commande de lancement de Prure-ftpd avec ses options. Ces trois autres lignes sont triviales:
&lt;code&gt;#!/bin/bash
echo &quot;lancement du daemon pure-ftpd&quot;

echo &quot;Fin du lancement de Pure-ftpd&quot;&lt;/code&gt;
On les colle dans ''pure-ftpd-startupscript'' et on enregistre les changements. 

Le démon Pure-ftpd se lance via une ligne de commande qui est très puissante. Optimiser au mieux les options de cette ligne de commande nous permettra d'avoir un Pure-ftpd &quot;sur mesure&quot;. La doc à consulter est toujours : http://download.pureftpd.org/pub/pure-ftpd/doc/README. 

Voici un résumé des options qui nous intéressent le plus :

* -c: nombre de clients simultanées. '''Dans notre cas on peut par exemple fixer la valeur à ''50''.'''
* -A: Chroot everyone. 
* -B: en background (daemonization)
* -C: nombre maximum de connexions par client. '''Choisir une valeur assez basse, par exemple ''3'', par mesure de sécurité, pour éviter qu'un utilisateur ne monopolise la bande passante montante du serveur. '''
* -E: n'autorise que les utilisateurs authentifiés, interdit les connexions anonymes
* -F: Fortune files, message d’accueil. '''Dans notre cas il se trouve ici : ''/home/common/fortunefile'''''
* -G: interdit le renommage
* -K: autorise l'utilisateur à reprendre un upload mais lui interdit de l'effacer ou de le renommer
* -l: méthode d'authentification et chemin vers le fichier de config de l'authentification. '''Dans notre cas, on active l'authentification msyql et on précise le chemin du fichier config comme ceci: ''mysql:/etc/pure-ftpd/db/mysql.conf'''''
* -O:  Enregistre tout les transferts de fichiers dans un fichier journal particulier, dans un format alternatif. Quatre formats sont supportés:  CLF (Apache-like), Stats, W3C and xferlog. '''Ici on peut rendre les logs de Pure-ftpd exploitables par AWStats avec la variable ''clf:/var/log/transfer.log'' .'''
* -p: ports du mode passif . '''On choisi par exemple la plage de port ''34343:34443''.'''
* -R: empêche les utilisateurs d'utiliser chmod
* -Y: à 2, active l'explicite TLS

On obtiens donc la ligne de commande suivante:
&lt;code&gt;/usr/local/sbin/pure-ftpd -c 50 -A -B -C 3 -E -F /home/common/fortunefile -G -K -l mysql:/etc/pure-ftpd/db/mysql.conf -O clf:/var/log/transfer.log -p 34343:34443 -R -Y 2 &amp;&lt;/code&gt;
/!\ La rédaction de cette ligne de commande nécessite de la minutie. Il suffit d'une majuscule confondue avec une minuscule, un espace d'oublié pour générer une erreur. Les erreurs non fatales ne seront pas toujours signalées par un message d'erreur, mais le démon ne se lancera sans activer l'option erronée. Prudence donc. /!\

La version finale du fichier ''pure-ftpd-startupscript'' est donc:
&lt;code&gt;#!/bin/bash
echo &quot;lancement du daemon pure-ftpd&quot;
/usr/local/sbin/pure-ftpd -c 50 -A -B -C 3 -E -F /home/common/fortunefile -G -K -l mysql:/etc/pure-ftpd/db/mysql.conf -O clf:/var/log/transfer.log -p 34343:34443 -R -Y 2 &amp;
echo &quot;Fin du lancement de Pure-ftpd&quot;&lt;/code&gt;
Rendre ce script executable:
&lt;code&gt;chmod +x  pure-ftpd-startupscript&lt;/code&gt;
L'intégration s'achève par l'ajout du lancement à la séquence de démarrage du serveur:
&lt;code&gt; 
cp  pure-ftpd-startupscript /etc/init.d
update-rc.d pure-ftpd-startupscript defaults &lt;/code&gt;

== Dernier réglage: message d’accueil ==


Le dernier réglage concerne le message d'acceuil. Il suffit de créer le fichier''/home/common/fortunefile'' et y enregistrer un texte de bienvenue.
&lt;code&gt;BIENVENUE sur le serveur FTP monsite.net&lt;/code&gt;

Le paramétrage est enfin fini. Passons à l'étape palpitante des tests. 

== Tester le fonctionnement de Pure-ftpd ==

Premier réflexe, redémarrer le système pour prendre en compte tout les réglages.
&lt;code&gt;shutdown -r now&lt;/code&gt;

Nous allons maintenant créer un compte de test. Plus haut nous avons paramétré Pure-ftp pour que le stockage du mot de passe sous forme de hash MD5. Nous avons donc besoin de calculer le hash MD5 du compte test. De nombreux sites internet proposent de le faire en ligne, dont celui ci: http://www.md5hashgenerator.com/index.php

* mot de passe: '''''test'''''
* hash md5: '''''098f6bcd4621d373cade4e832627b4f6 '''''

Ouvrons une session PhPMyAdmin et ouvrons la table ''pureftpd'' de la base ''pureftpd''. Insérons une nouvelle ligne à remplir avec ces valeurs:

{| class=&quot;wikitable&quot;
|+ Paramètres du compte &quot;test&quot;
! paramètre
! variable
|-
| User / varchar(16) 
| '''test'''
|-
| status / enum 
| '''0'''
|-
| Password / varchar(64)
| '''098f6bcd4621d373cade4e832627b4f6 '''
|-
| Uid / varchar(11)
| '''1001'''
|-
| Gid / varchar(11)
| '''1001'''
|-
| Dir / varchar(128)
| '''/home/common/ftp'''
|-
| ULBandwidth / smallint(5)
| '''0'''
|-
| DLBandwidth / smallint(5
| '''0'''
|-
| comment / tinytext
| '''&lt;vide&gt;'''
|-
| ipccess / varchar(15)
|''' *'''
|-
| QuotaSize / smallint(5)
| '''0'''
|-
| QuotaFiles / int(11)
| '''0'''
|-
|}


Enregistrons cet utilisateur test. 
Le moment fatidique approche. A partir d'un poste du réseau local, ouvrons  notre logiciel client FTP et paramétrons une nouvelle connexion ainsi:
{| class=&quot;wikitable&quot;
|+ Paramètres du compte &quot;test&quot; coté client ftp
! paramètre
! variable
|-
| Hôte 
| '''&lt;adresse IP local du serveur FTP&gt;'''
|-
| Port 
| '''21'''
|-
| Protocole 
| '''FTP'''
|-
| Chiffrement 
| '''Connexion FTP explicite sur TLS'''
|-
| Identifiant 
|''' test'''
|-
| mot de passe 
| '''test'''
|-
|}
Connectons nous maintenant au serveur ftp avec cette connexion. Si tout ce passe bien, on reçoit le certificat de sécurité qu'on doit valider, puis la connexion s'effectue, le message d’accueil s'affiche dans la console. La connexion établie, on peut lire tout les dossiers et uploader dans le dossier ''/depot''.

== Conclusion ==

Une fois le système opérationnel, les utilisateurs ont un accès chiffré à votre serveur ftp. Le fait de gérer les comtpe sur une base MySQL permet aussi bien d'enregistrer des comptes automatiquement avec un code php que de les paramétrer manuellement en passant par PhpMyAdmin. Cependant, un problème de sécurité demeure: les mots de passe les plus faibles, stockés sous forme de hash MD5, ne résisterons pas au crackage.</text>
      <sha1>hqdzkd21t4zrdqd76ri5ejdkvw37eau</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5561</id>
      <parentid>5560</parentid>
      <timestamp>2014-03-08T15:52:39Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>/* Structure de l'arborescence du FTP */ on a déjà une bonne doc sur fstab à portée de main ;)</comment>
      <text xml:space="preserve" bytes="14367">Pure-FTP est l'un des meilleurs logiciels serveur FTP, un excellent choix pour transférer des fichiers. Son niveau de sécurité est très bon, le paramétrage puissant. La prise en charge du SSL nous permettra de chiffrer les données transitant par Internet. Le fait qu'on puisse gérer les comptes grâce à une table MySQL sera très pratique pour automatiser plus tard la création des comptes. 

== Prérequis ==

*Deux partition dédiées au stockage et l'écriture des données. 
*Un certificat de sécurité
*Apache, MySQL, PhpMyAdmin
*plusieurs heures devant soi et du courage 

En avant !

== Structure de l'arborescence du FTP ==

Avant de se lancer dans l'installation du FTP, il faut s’interroger sur la structure qu'aura l' arborescence du FTP. Si l'on souhaite partager des médias, le plus simple est de dédier (au moins) une partition de grande taille à la lecture et d'ajouter une seconde partition plus petite dédiée à l'écriture, là où les utilisateurs pourrons uploader. Nous traiterons ce cas simple à titre d'exemple; il est possible par la suite d'ajouter des partitions. 

Partition 1: &lt;br&gt;
* nom: '''sdb5'''
* rôle: propose des médias en lecture seule. 
* contenu: '''trois dossiers de stockage, comme /logiciel, /film, /musique'''
&lt;br&gt;
Partition 2:
* nom: '''sdb6'''
* rôle: espace dédié à la lecture écriture. 
* contenu: '''un répertoire de stockage servant aux dépôts des utilisateurs, /depot'''

créons les dossiers nécessaires au montage de l'arborescence. Ceux sur lesquels seront montés les partitions...
&lt;code&gt;cd /mnt/
mkdir data
mkdir depot&lt;/code&gt;

...et ajoutons ces lignes au fichier [[Fstab|''/etc/fstab'']] pour monter les partitions au démarrage.
&lt;code&gt;#disques de stockage
/dev/sdb5       /mnt/data ext3  user,rw,exec 0  0
/dev/sdb6       /mnt/depot ext3  user,rw,exec 0  0
&lt;/code&gt;

Il faut maintenant intégrer les dossiers à la racine des deux partition à l’arborescence du ftp. Ceci se fait  avec la puissante option ''bind'' du fichier ''/etc/fstab''. 
Créons les dossiers cibles qui seront à la racine du ftp.
&lt;code&gt;
cd /home/common/
mkdir ftp
cd ftp
mkdir logiciel; mkdir film; mkdir musique; mkdir depot
&lt;/code&gt;

Puis ajoutons ces lignes au fichier ''fstab'' afin de monter l'arborescence au démarrage du serveur:
&lt;code&gt;#dossiers ftp avec option bind
/mnt/data/logiciel     /home/common/ftp/logiciel none bind 0 0
/mnt/data/film      /home/common/ftp/film none bind 0 0
/mnt/data/musique     /home/common/ftp/musique none bind 0 0
/mnt/depot/depot      /home/common/ftp/depot none bind 0 0&lt;/code&gt;

Vérifier enfin si l'arborescence est correctement montée après redémarrage.
&lt;code&gt;shutdown -r now&lt;/code&gt;

== Gestion des droits de l'arborescence de pure-ftp ==

Dans notre cas, les utilisateurs auront tous les mêmes droits: droit en lecture sur toute l'arborescence (sauf dossier ''lost+find'' ) et droit en écriture dans le dossier ''depot''. Nous allons donc créer un nouvel utilisateur dans Debian muni de ces droits.

Pour ce faire on tape ce code:
&lt;code&gt;adduser pureftpd&lt;/code&gt;
puis on répond aux questions ainsi: '''''&lt;pureftpd&gt;, &lt;pureftpd&gt;, &lt;pure-ftp&gt;, &lt;vide&gt;, &lt;vide&gt;, &lt;vide&gt;, &lt;vide&gt;, o'''''
En consultant le fichier ''/etc/passwd'', on peut relever l'Uid et le Gid de ce nouvel utilisateur. 
&lt;code&gt;
cat /etc/passwd
&lt;/code&gt;
'''Si l'utilisateur ''pureftpd'' est le deuxième à être créé, il lui est attribué les valeurs :Uid=''1001'' et Gid=''1001'''''. Ces valeurs serviront au moment des créations de compte ftp. Chaque compte paramétré avec ces Uid,Gid sera vu par le serveur comme le compte ''pureftpd''.

Cette commande change le propriétaire du dossier'' /mnt/depot'' de manière récursive. Le propriétaire devient l'utilisateur ''pureftpd'', et le groupe ''root''. Cela autorise l'écriture pour l'utilisateur du ftp.
&lt;code&gt;chown -R pureftpd:root /mnt/depot&lt;/code&gt;

Si on s’arrête là, les utilisateurs ont accès au dossier ''lost+found''. Ça n'est pas très propre. On corrige ce défaut avec la ligne suivante qui change le propriétaire de ''lost+found'' et le restitue au l'utilisateur ''root'' du groupe ''root''.
&lt;code&gt;chown root:root /mnt/depot/lost+found&lt;/code&gt;

== Préparation de l'installation, compilation et installation ==

D'abord nous allons télécharger les fichiers sources et les décompresser. Sur la page http://download.pureftpd.org/pub/pure-ftpd/releases/   est recensé les différentes version du logiciel. 
&lt;code&gt;wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.36.tar.gz&lt;/code&gt;
on décompresse ensuite l'archive obtenue.
&lt;code&gt;tar zxvf pure-ftpd-1.0.36.tar.gz&lt;/code&gt;

Après lecture de la doc officielle,    http://download.pureftpd.org/pure-ftpd/doc/README , on installe les dépendances du logiciel:
&lt;code&gt;
aptitude install libmysqlclient-dev libssl-dev build-essential&lt;/code&gt;

Puis on choisi les options de compilation qui nous intéresseront:
* --with-tls : permet d'utiliser ce type de chiffrement
* --with-certfile=/home/nomdedomaine.pem : indique au compilateur l'emplacement du certificat de chiffrement. Vérifier que le certificat '''nomdedomaine.pem''' est présent à l'emplacement indiqué. 
* --with-ftpwho: active la commande &quot;ftp-who&quot;, pratique pour vérifier l'activité en temps réel
* --with-language=french: défini le français comme langue 
* --with-mysql : les utilisateurs seront stocké dans une base MySQL
* --with-cookie : permet d'utiliser un fichier fortunefile pour que le serveur affiche une phrase d'acceuil 
* --with-altlog: permet la journalisation dans différents formats, ceci sera utile plus tard au moment du monitoring.

On se place alors dans le dossier des fichiers sources
&lt;code&gt;cd pure-ftpd-1.0.36&lt;/code&gt;
et on lance la compilation avec les options voulues:
&lt;code&gt;./configure --with-tls --with-certfile=/home/nomdedomaine.pem --with-ftpwho --with-language=french --with-mysql --with-cookie --with-altlog&lt;/code&gt;
Si tout s'est bien passé, on termine l’installation par un 
&lt;code&gt;make&lt;/code&gt;
puis enfin
&lt;code&gt;make install&lt;/code&gt;

== Paramétrage MySQL ==

Il faut maintenant configurer l'accès à la base d'authentification. Concentrons nous d'abord sur le fichier de configuration ''/etc/pure-ftpd/db/mysql.conf''.

Modifier ces lignes comme ceci pour définir un utilisateur, son mot de passe et le nom de la base:
&lt;code&gt;# Mandatory : user to bind the server as.
MYSQLUser       pureftpd

# Mandatory : user password. You must have a password.
MYSQLPassword   pureftpd

# Mandatory : database to open.
MYSQLDatabase   pureftpd&lt;/code&gt;

et, pour maintenir un chiffrement des mot de passe tout en rendement possible la liaison que l'on aura a effectuer plus tard entre PhpBB et Pure-FTP, en choisi un chiffrement en md5:
&lt;code&gt;# Mandatory : how passwords are stored
# Valid values are : &quot;cleartext&quot;, &quot;crypt&quot;, &quot;md5&quot; and &quot;password&quot;
# (&quot;password&quot; = MySQL password() function)
# You can also use &quot;any&quot; to try &quot;crypt&quot;, &quot;md5&quot; *and* &quot;password&quot;
MYSQLCrypt      md5&lt;/code&gt;

Après ces changements on laisse le fichier  ''mysql.conf''.

Reste a créer la base. facile avec PhpMyAdmin.

* nom de la base : '''''pureftpd'''''
* nom de la table : '''''pureftpd'''''
* Nombre de colonnes : 12

{| class=&quot;wikitable&quot;
|+ Paramètres de la base pureftpd
! paramètre
! Type de variable
|-
| Nom  
| ''type''
|-
| User  
| ''varchar(16)''
|-
| status  
| ''enum''
|-
| Password  
| ''varchar(64)''
|-
| Uid  
| ''varchar(11)''
|-
| Gid  
| ''varchar(11)''
|-
| Dir  
| ''varchar(128)''
|-
| ULBandwidth  
| ''smallint(5)''
|-
| DLBandwidth  
| ''smallint(5)''
|-
| comment  
| ''tinytext''
|-
| ipaccess  
| ''varchar(15) ''
|-
| QuotaSize  
| ''smallint(5)''
|-
| QuotaFiles  
| ''int(11)''
|-
|}

Pour finir, dans PhpMyAdmin, on créé un utilisateur '''''pureftpd''''', mot de passe  '''''pureftpd''''',  avec tout les droits sur la table, « tout cocher ».

== Écriture et intégration d'un script de lancement du démon Pure-ftpd ==

Par soucis de commodité nous créons ce script dans le Bureau de l'utilisateur principal et nous le nommons ''pure-ftpd-startupscript''. 
&lt;code&gt;cd /hom/denis/Bureau
nano pure-ftpd-startupscript&lt;/code&gt;
Ce petit script comportera quatre lignes, la plus importante étant la ligne de commande de lancement de Prure-ftpd avec ses options. Ces trois autres lignes sont triviales:
&lt;code&gt;#!/bin/bash
echo &quot;lancement du daemon pure-ftpd&quot;

echo &quot;Fin du lancement de Pure-ftpd&quot;&lt;/code&gt;
On les colle dans ''pure-ftpd-startupscript'' et on enregistre les changements. 

Le démon Pure-ftpd se lance via une ligne de commande qui est très puissante. Optimiser au mieux les options de cette ligne de commande nous permettra d'avoir un Pure-ftpd &quot;sur mesure&quot;. La doc à consulter est toujours : http://download.pureftpd.org/pub/pure-ftpd/doc/README. 

Voici un résumé des options qui nous intéressent le plus :

* -c: nombre de clients simultanées. '''Dans notre cas on peut par exemple fixer la valeur à ''50''.'''
* -A: Chroot everyone. 
* -B: en background (daemonization)
* -C: nombre maximum de connexions par client. '''Choisir une valeur assez basse, par exemple ''3'', par mesure de sécurité, pour éviter qu'un utilisateur ne monopolise la bande passante montante du serveur. '''
* -E: n'autorise que les utilisateurs authentifiés, interdit les connexions anonymes
* -F: Fortune files, message d’accueil. '''Dans notre cas il se trouve ici : ''/home/common/fortunefile'''''
* -G: interdit le renommage
* -K: autorise l'utilisateur à reprendre un upload mais lui interdit de l'effacer ou de le renommer
* -l: méthode d'authentification et chemin vers le fichier de config de l'authentification. '''Dans notre cas, on active l'authentification msyql et on précise le chemin du fichier config comme ceci: ''mysql:/etc/pure-ftpd/db/mysql.conf'''''
* -O:  Enregistre tout les transferts de fichiers dans un fichier journal particulier, dans un format alternatif. Quatre formats sont supportés:  CLF (Apache-like), Stats, W3C and xferlog. '''Ici on peut rendre les logs de Pure-ftpd exploitables par AWStats avec la variable ''clf:/var/log/transfer.log'' .'''
* -p: ports du mode passif . '''On choisi par exemple la plage de port ''34343:34443''.'''
* -R: empêche les utilisateurs d'utiliser chmod
* -Y: à 2, active l'explicite TLS

On obtiens donc la ligne de commande suivante:
&lt;code&gt;/usr/local/sbin/pure-ftpd -c 50 -A -B -C 3 -E -F /home/common/fortunefile -G -K -l mysql:/etc/pure-ftpd/db/mysql.conf -O clf:/var/log/transfer.log -p 34343:34443 -R -Y 2 &amp;&lt;/code&gt;
/!\ La rédaction de cette ligne de commande nécessite de la minutie. Il suffit d'une majuscule confondue avec une minuscule, un espace d'oublié pour générer une erreur. Les erreurs non fatales ne seront pas toujours signalées par un message d'erreur, mais le démon ne se lancera sans activer l'option erronée. Prudence donc. /!\

La version finale du fichier ''pure-ftpd-startupscript'' est donc:
&lt;code&gt;#!/bin/bash
echo &quot;lancement du daemon pure-ftpd&quot;
/usr/local/sbin/pure-ftpd -c 50 -A -B -C 3 -E -F /home/common/fortunefile -G -K -l mysql:/etc/pure-ftpd/db/mysql.conf -O clf:/var/log/transfer.log -p 34343:34443 -R -Y 2 &amp;
echo &quot;Fin du lancement de Pure-ftpd&quot;&lt;/code&gt;
Rendre ce script executable:
&lt;code&gt;chmod +x  pure-ftpd-startupscript&lt;/code&gt;
L'intégration s'achève par l'ajout du lancement à la séquence de démarrage du serveur:
&lt;code&gt; 
cp  pure-ftpd-startupscript /etc/init.d
update-rc.d pure-ftpd-startupscript defaults &lt;/code&gt;

== Dernier réglage: message d’accueil ==


Le dernier réglage concerne le message d'acceuil. Il suffit de créer le fichier''/home/common/fortunefile'' et y enregistrer un texte de bienvenue.
&lt;code&gt;BIENVENUE sur le serveur FTP monsite.net&lt;/code&gt;

Le paramétrage est enfin fini. Passons à l'étape palpitante des tests. 

== Tester le fonctionnement de Pure-ftpd ==

Premier réflexe, redémarrer le système pour prendre en compte tout les réglages.
&lt;code&gt;shutdown -r now&lt;/code&gt;

Nous allons maintenant créer un compte de test. Plus haut nous avons paramétré Pure-ftp pour que le stockage du mot de passe sous forme de hash MD5. Nous avons donc besoin de calculer le hash MD5 du compte test. De nombreux sites internet proposent de le faire en ligne, dont celui ci: http://www.md5hashgenerator.com/index.php

* mot de passe: '''''test'''''
* hash md5: '''''098f6bcd4621d373cade4e832627b4f6 '''''

Ouvrons une session PhPMyAdmin et ouvrons la table ''pureftpd'' de la base ''pureftpd''. Insérons une nouvelle ligne à remplir avec ces valeurs:

{| class=&quot;wikitable&quot;
|+ Paramètres du compte &quot;test&quot;
! paramètre
! variable
|-
| User / varchar(16) 
| '''test'''
|-
| status / enum 
| '''0'''
|-
| Password / varchar(64)
| '''098f6bcd4621d373cade4e832627b4f6 '''
|-
| Uid / varchar(11)
| '''1001'''
|-
| Gid / varchar(11)
| '''1001'''
|-
| Dir / varchar(128)
| '''/home/common/ftp'''
|-
| ULBandwidth / smallint(5)
| '''0'''
|-
| DLBandwidth / smallint(5
| '''0'''
|-
| comment / tinytext
| '''&lt;vide&gt;'''
|-
| ipccess / varchar(15)
|''' *'''
|-
| QuotaSize / smallint(5)
| '''0'''
|-
| QuotaFiles / int(11)
| '''0'''
|-
|}


Enregistrons cet utilisateur test. 
Le moment fatidique approche. A partir d'un poste du réseau local, ouvrons  notre logiciel client FTP et paramétrons une nouvelle connexion ainsi:
{| class=&quot;wikitable&quot;
|+ Paramètres du compte &quot;test&quot; coté client ftp
! paramètre
! variable
|-
| Hôte 
| '''&lt;adresse IP local du serveur FTP&gt;'''
|-
| Port 
| '''21'''
|-
| Protocole 
| '''FTP'''
|-
| Chiffrement 
| '''Connexion FTP explicite sur TLS'''
|-
| Identifiant 
|''' test'''
|-
| mot de passe 
| '''test'''
|-
|}
Connectons nous maintenant au serveur ftp avec cette connexion. Si tout ce passe bien, on reçoit le certificat de sécurité qu'on doit valider, puis la connexion s'effectue, le message d’accueil s'affiche dans la console. La connexion établie, on peut lire tout les dossiers et uploader dans le dossier ''/depot''.

== Conclusion ==

Une fois le système opérationnel, les utilisateurs ont un accès chiffré à votre serveur ftp. Le fait de gérer les comtpe sur une base MySQL permet aussi bien d'enregistrer des comptes automatiquement avec un code php que de les paramétrer manuellement en passant par PhpMyAdmin. Cependant, un problème de sécurité demeure: les mots de passe les plus faibles, stockés sous forme de hash MD5, ne résisterons pas au crackage.</text>
      <sha1>3pidatwzmnri3dx2juw5jnp6elmonkc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5563</id>
      <parentid>5561</parentid>
      <timestamp>2014-03-09T16:10:30Z</timestamp>
      <contributor>
        <username>Petitchat</username>
        <id>291</id>
      </contributor>
      <text xml:space="preserve" bytes="14497">Pure-FTP est l'un des meilleurs logiciels serveur FTP, un excellent choix pour transférer des fichiers. Son niveau de sécurité est très bon, le paramétrage puissant. La prise en charge du SSL nous permettra de chiffrer les données transitant par Internet. Le fait qu'on puisse gérer les comptes grâce à une table MySQL sera très pratique pour automatiser plus tard la création des comptes. 

== Prérequis ==

*Deux partition dédiées au stockage et l'écriture des données. 
*Un certificat de sécurité
*Apache, MySQL, PhpMyAdmin
*plusieurs heures devant soi et du courage 

En avant !

== Structure de l'arborescence du FTP ==

Avant de se lancer dans l'installation du FTP, il faut s’interroger sur la structure qu'aura l' arborescence du FTP. Si l'on souhaite partager des médias, le plus simple est de dédier (au moins) une partition de grande taille à la lecture et d'ajouter une seconde partition plus petite dédiée à l'écriture, là où les utilisateurs pourrons uploader. Nous traiterons ce cas simple à titre d'exemple; il est possible par la suite d'ajouter des partitions. 

Partition 1: &lt;br&gt;
* nom: '''sdb5'''
* rôle: propose des médias en lecture seule. 
* contenu: '''trois dossiers de stockage, comme /logiciel, /film, /musique'''
&lt;br&gt;
Partition 2:
* nom: '''sdb6'''
* rôle: espace dédié à la lecture écriture. 
* contenu: '''un répertoire de stockage servant aux dépôts des utilisateurs, /depot'''

créons les dossiers nécessaires au montage de l'arborescence. Ceux sur lesquels seront montés les partitions...
&lt;code bash&gt;cd /mnt/
mkdir data
mkdir depot&lt;/code&gt;

...et ajoutons ces lignes au fichier [[Fstab|''/etc/fstab'']] pour monter les partitions au démarrage.
&lt;code bash&gt;#disques de stockage
/dev/sdb5       /mnt/data ext3  user,rw,exec 0  0
/dev/sdb6       /mnt/depot ext3  user,rw,exec 0  0
&lt;/code&gt;

Il faut maintenant intégrer les dossiers à la racine des deux partition à l’arborescence du ftp. Ceci se fait  avec la puissante option ''bind'' du fichier ''/etc/fstab''. 
Créons les dossiers cibles qui seront à la racine du ftp.
&lt;code bash&gt;
cd /home/common/
mkdir ftp
cd ftp
mkdir logiciel; mkdir film; mkdir musique; mkdir depot
&lt;/code&gt;

Puis ajoutons ces lignes au fichier ''fstab'' afin de monter l'arborescence au démarrage du serveur:
&lt;code bash&gt;#dossiers ftp avec option bind
/mnt/data/logiciel     /home/common/ftp/logiciel none bind 0 0
/mnt/data/film      /home/common/ftp/film none bind 0 0
/mnt/data/musique     /home/common/ftp/musique none bind 0 0
/mnt/depot/depot      /home/common/ftp/depot none bind 0 0&lt;/code&gt;

Vérifier enfin si l'arborescence est correctement montée après redémarrage.
&lt;code bash&gt;shutdown -r now&lt;/code&gt;

== Gestion des droits de l'arborescence de pure-ftp ==

Dans notre cas, les utilisateurs auront tous les mêmes droits: droit en lecture sur toute l'arborescence (sauf dossier ''lost+find'' ) et droit en écriture dans le dossier ''depot''. Nous allons donc créer un nouvel utilisateur dans Debian muni de ces droits.

Pour ce faire on tape ce code:
&lt;code bash&gt;adduser pureftpd&lt;/code&gt;
puis on répond aux questions ainsi: '''''&lt;pureftpd&gt;, &lt;pureftpd&gt;, &lt;pure-ftp&gt;, &lt;vide&gt;, &lt;vide&gt;, &lt;vide&gt;, &lt;vide&gt;, o'''''
En consultant le fichier ''/etc/passwd'', on peut relever l'Uid et le Gid de ce nouvel utilisateur. 
&lt;code bash&gt;
cat /etc/passwd
&lt;/code&gt;
'''Si l'utilisateur ''pureftpd'' est le deuxième à être créé, il lui est attribué les valeurs :Uid=''1001'' et Gid=''1001'''''. Ces valeurs serviront au moment des créations de compte ftp. Chaque compte paramétré avec ces Uid,Gid sera vu par le serveur comme le compte ''pureftpd''.

Cette commande change le propriétaire du dossier'' /mnt/depot'' de manière récursive. Le propriétaire devient l'utilisateur ''pureftpd'', et le groupe ''root''. Cela autorise l'écriture pour l'utilisateur du ftp.
&lt;code bash&gt;chown -R pureftpd:root /mnt/depot&lt;/code&gt;

Si on s’arrête là, les utilisateurs ont accès au dossier ''lost+found''. Ça n'est pas très propre. On corrige ce défaut avec la ligne suivante qui change le propriétaire de ''lost+found'' et le restitue au l'utilisateur ''root'' du groupe ''root''.
&lt;code bash&gt;chown root:root /mnt/depot/lost+found&lt;/code&gt;

== Préparation de l'installation, compilation et installation ==

D'abord nous allons télécharger les fichiers sources et les décompresser. Sur la page http://download.pureftpd.org/pub/pure-ftpd/releases/   est recensé les différentes version du logiciel. 
&lt;code bash&gt;wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.36.tar.gz&lt;/code&gt;
on décompresse ensuite l'archive obtenue.
&lt;code bash&gt;tar zxvf pure-ftpd-1.0.36.tar.gz&lt;/code&gt;

Après lecture de la doc officielle,    http://download.pureftpd.org/pure-ftpd/doc/README , on installe les dépendances du logiciel:
&lt;code bash&gt;
aptitude install libmysqlclient-dev libssl-dev build-essential&lt;/code&gt;

Puis on choisi les options de compilation qui nous intéresseront:
* --with-tls : permet d'utiliser ce type de chiffrement
* --with-certfile=/home/nomdedomaine.pem : indique au compilateur l'emplacement du certificat de chiffrement. Vérifier que le certificat '''nomdedomaine.pem''' est présent à l'emplacement indiqué. 
* --with-ftpwho: active la commande &quot;ftp-who&quot;, pratique pour vérifier l'activité en temps réel
* --with-language=french: défini le français comme langue 
* --with-mysql : les utilisateurs seront stocké dans une base MySQL
* --with-cookie : permet d'utiliser un fichier fortunefile pour que le serveur affiche une phrase d'acceuil 
* --with-altlog: permet la journalisation dans différents formats, ceci sera utile plus tard au moment du monitoring.

On se place alors dans le dossier des fichiers sources
&lt;code bash&gt;cd pure-ftpd-1.0.36&lt;/code&gt;
et on lance la compilation avec les options voulues:
&lt;code bash&gt;./configure --with-tls --with-certfile=/home/nomdedomaine.pem --with-ftpwho --with-language=french --with-mysql --with-cookie --with-altlog&lt;/code&gt;
Si tout s'est bien passé, on termine l’installation par un 
&lt;code bash&gt;make&lt;/code&gt;
puis enfin
&lt;code bash&gt;make install&lt;/code&gt;

== Paramétrage MySQL ==

Il faut maintenant configurer l'accès à la base d'authentification. Concentrons nous d'abord sur le fichier de configuration ''/etc/pure-ftpd/db/mysql.conf''.

Modifier ces lignes comme ceci pour définir un utilisateur, son mot de passe et le nom de la base:
&lt;code bash&gt;# Mandatory : user to bind the server as.
MYSQLUser       pureftpd

# Mandatory : user password. You must have a password.
MYSQLPassword   pureftpd

# Mandatory : database to open.
MYSQLDatabase   pureftpd&lt;/code&gt;

et, pour maintenir un chiffrement des mot de passe tout en rendement possible la liaison que l'on aura a effectuer plus tard entre PhpBB et Pure-FTP, en choisi un chiffrement en md5:
&lt;code bash&gt;# Mandatory : how passwords are stored
# Valid values are : &quot;cleartext&quot;, &quot;crypt&quot;, &quot;md5&quot; and &quot;password&quot;
# (&quot;password&quot; = MySQL password() function)
# You can also use &quot;any&quot; to try &quot;crypt&quot;, &quot;md5&quot; *and* &quot;password&quot;
MYSQLCrypt      md5&lt;/code&gt;

Après ces changements on laisse le fichier  ''mysql.conf''.

Reste a créer la base. facile avec PhpMyAdmin.

* nom de la base : '''''pureftpd'''''
* nom de la table : '''''pureftpd'''''
* Nombre de colonnes : 12

{| class=&quot;wikitable&quot;
|+ Paramètres de la base pureftpd
! paramètre
! Type de variable
|-
| Nom  
| ''type''
|-
| User  
| ''varchar(16)''
|-
| status  
| ''enum''
|-
| Password  
| ''varchar(64)''
|-
| Uid  
| ''varchar(11)''
|-
| Gid  
| ''varchar(11)''
|-
| Dir  
| ''varchar(128)''
|-
| ULBandwidth  
| ''smallint(5)''
|-
| DLBandwidth  
| ''smallint(5)''
|-
| comment  
| ''tinytext''
|-
| ipaccess  
| ''varchar(15) ''
|-
| QuotaSize  
| ''smallint(5)''
|-
| QuotaFiles  
| ''int(11)''
|-
|}

Pour finir, dans PhpMyAdmin, on créé un utilisateur '''''pureftpd''''', mot de passe  '''''pureftpd''''',  avec tout les droits sur la table, « tout cocher ».

== Écriture et intégration d'un script de lancement du démon Pure-ftpd ==

Par soucis de commodité nous créons ce script dans le Bureau de l'utilisateur principal et nous le nommons ''pure-ftpd-startupscript''. 
&lt;code bash&gt;cd /hom/denis/Bureau
nano pure-ftpd-startupscript&lt;/code&gt;
Ce petit script comportera quatre lignes, la plus importante étant la ligne de commande de lancement de Prure-ftpd avec ses options. Ces trois autres lignes sont triviales:
&lt;code bash&gt;#!/bin/bash
echo &quot;lancement du daemon pure-ftpd&quot;

echo &quot;Fin du lancement de Pure-ftpd&quot;&lt;/code&gt;
On les colle dans ''pure-ftpd-startupscript'' et on enregistre les changements. 

Le démon Pure-ftpd se lance via une ligne de commande qui est très puissante. Optimiser au mieux les options de cette ligne de commande nous permettra d'avoir un Pure-ftpd &quot;sur mesure&quot;. La doc à consulter est toujours : http://download.pureftpd.org/pub/pure-ftpd/doc/README. 

Voici un résumé des options qui nous intéressent le plus :

* -c: nombre de clients simultanées. '''Dans notre cas on peut par exemple fixer la valeur à ''50''.'''
* -A: Chroot everyone. 
* -B: en background (daemonization)
* -C: nombre maximum de connexions par client. '''Choisir une valeur assez basse, par exemple ''3'', par mesure de sécurité, pour éviter qu'un utilisateur ne monopolise la bande passante montante du serveur. '''
* -E: n'autorise que les utilisateurs authentifiés, interdit les connexions anonymes
* -F: Fortune files, message d’accueil. '''Dans notre cas il se trouve ici : ''/home/common/fortunefile'''''
* -G: interdit le renommage
* -K: autorise l'utilisateur à reprendre un upload mais lui interdit de l'effacer ou de le renommer
* -l: méthode d'authentification et chemin vers le fichier de config de l'authentification. '''Dans notre cas, on active l'authentification msyql et on précise le chemin du fichier config comme ceci: ''mysql:/etc/pure-ftpd/db/mysql.conf'''''
* -O:  Enregistre tout les transferts de fichiers dans un fichier journal particulier, dans un format alternatif. Quatre formats sont supportés:  CLF (Apache-like), Stats, W3C and xferlog. '''Ici on peut rendre les logs de Pure-ftpd exploitables par AWStats avec la variable ''clf:/var/log/transfer.log'' .'''
* -p: ports du mode passif . '''On choisi par exemple la plage de port ''34343:34443''.'''
* -R: empêche les utilisateurs d'utiliser chmod
* -Y: à 2, active l'explicite TLS

On obtiens donc la ligne de commande suivante:
&lt;code bash&gt;/usr/local/sbin/pure-ftpd -c 50 -A -B -C 3 -E -F /home/common/fortunefile -G -K -l mysql:/etc/pure-ftpd/db/mysql.conf -O clf:/var/log/transfer.log -p 34343:34443 -R -Y 2 &amp;&lt;/code&gt;
/!\ La rédaction de cette ligne de commande nécessite de la minutie. Il suffit d'une majuscule confondue avec une minuscule, un espace d'oublié pour générer une erreur. Les erreurs non fatales ne seront pas toujours signalées par un message d'erreur, mais le démon ne se lancera sans activer l'option erronée. Prudence donc. /!\

La version finale du fichier ''pure-ftpd-startupscript'' est donc:
&lt;code bash&gt;#!/bin/bash
echo &quot;lancement du daemon pure-ftpd&quot;
/usr/local/sbin/pure-ftpd -c 50 -A -B -C 3 -E -F /home/common/fortunefile -G -K -l mysql:/etc/pure-ftpd/db/mysql.conf -O clf:/var/log/transfer.log -p 34343:34443 -R -Y 2 &amp;
echo &quot;Fin du lancement de Pure-ftpd&quot;&lt;/code&gt;
Rendre ce script executable:
&lt;code bash&gt;chmod +x  pure-ftpd-startupscript&lt;/code&gt;
L'intégration s'achève par l'ajout du lancement à la séquence de démarrage du serveur:
&lt;code bash&gt; 
cp  pure-ftpd-startupscript /etc/init.d
update-rc.d pure-ftpd-startupscript defaults &lt;/code&gt;

== Dernier réglage: message d’accueil ==


Le dernier réglage concerne le message d'acceuil. Il suffit de créer le fichier''/home/common/fortunefile'' et y enregistrer un texte de bienvenue.
&lt;code bash&gt;BIENVENUE sur le serveur FTP monsite.net&lt;/code&gt;

Le paramétrage est enfin fini. Passons à l'étape palpitante des tests. 

== Tester le fonctionnement de Pure-ftpd ==

Premier réflexe, redémarrer le système pour prendre en compte tout les réglages.
&lt;code bash&gt;shutdown -r now&lt;/code&gt;

Nous allons maintenant créer un compte de test. Plus haut nous avons paramétré Pure-ftp pour que le stockage du mot de passe sous forme de hash MD5. Nous avons donc besoin de calculer le hash MD5 du compte test. De nombreux sites internet proposent de le faire en ligne, dont celui ci: http://www.md5hashgenerator.com/index.php

* mot de passe: '''''test'''''
* hash md5: '''''098f6bcd4621d373cade4e832627b4f6 '''''

Ouvrons une session PhPMyAdmin et ouvrons la table ''pureftpd'' de la base ''pureftpd''. Insérons une nouvelle ligne à remplir avec ces valeurs:

{| class=&quot;wikitable&quot;
|+ Paramètres du compte &quot;test&quot;
! paramètre
! variable
|-
| User / varchar(16) 
| '''test'''
|-
| status / enum 
| '''0'''
|-
| Password / varchar(64)
| '''098f6bcd4621d373cade4e832627b4f6 '''
|-
| Uid / varchar(11)
| '''1001'''
|-
| Gid / varchar(11)
| '''1001'''
|-
| Dir / varchar(128)
| '''/home/common/ftp'''
|-
| ULBandwidth / smallint(5)
| '''0'''
|-
| DLBandwidth / smallint(5
| '''0'''
|-
| comment / tinytext
| '''&lt;vide&gt;'''
|-
| ipccess / varchar(15)
|''' *'''
|-
| QuotaSize / smallint(5)
| '''0'''
|-
| QuotaFiles / int(11)
| '''0'''
|-
|}


Enregistrons cet utilisateur test. 
Le moment fatidique approche. A partir d'un poste du réseau local, ouvrons  notre logiciel client FTP et paramétrons une nouvelle connexion ainsi:
{| class=&quot;wikitable&quot;
|+ Paramètres du compte &quot;test&quot; coté client ftp
! paramètre
! variable
|-
| Hôte 
| '''&lt;adresse IP local du serveur FTP&gt;'''
|-
| Port 
| '''21'''
|-
| Protocole 
| '''FTP'''
|-
| Chiffrement 
| '''Connexion FTP explicite sur TLS'''
|-
| Identifiant 
|''' test'''
|-
| mot de passe 
| '''test'''
|-
|}
Connectons nous maintenant au serveur ftp avec cette connexion. Si tout ce passe bien, on reçoit le certificat de sécurité qu'on doit valider, puis la connexion s'effectue, le message d’accueil s'affiche dans la console. La connexion établie, on peut lire tout les dossiers et uploader dans le dossier ''/depot''.

== Conclusion ==

Une fois le système opérationnel, les utilisateurs ont un accès chiffré à votre serveur ftp. Le fait de gérer les comtpe sur une base MySQL permet aussi bien d'enregistrer des comptes automatiquement avec un code php que de les paramétrer manuellement en passant par PhpMyAdmin. Cependant, un problème de sécurité demeure: les mots de passe les plus faibles, stockés sous forme de hash MD5, ne résisterons pas au crackage.</text>
      <sha1>dtqq7h3pbc5n26ppgxq54xxjejzc5a2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5564</id>
      <parentid>5563</parentid>
      <timestamp>2014-03-10T13:30:02Z</timestamp>
      <contributor>
        <username>Petitchat</username>
        <id>291</id>
      </contributor>
      <text xml:space="preserve" bytes="14498">Pure-FTP est l'un des meilleurs logiciels serveur FTP, un excellent choix pour transférer des fichiers. Son niveau de sécurité est très bon, le paramétrage puissant. La prise en charge du SSL nous permettra de chiffrer les données transitant par Internet. Le fait qu'on puisse gérer les comptes grâce à une table MySQL sera très pratique pour automatiser plus tard la création des comptes. 

== Prérequis ==

*Deux partitions dédiées au stockage et l'écriture des données. 
*Un certificat de sécurité
*Apache, MySQL, PhpMyAdmin
*plusieurs heures devant soi et du courage 

En avant !

== Structure de l'arborescence du FTP ==

Avant de se lancer dans l'installation du FTP, il faut s’interroger sur la structure qu'aura l' arborescence du FTP. Si l'on souhaite partager des médias, le plus simple est de dédier (au moins) une partition de grande taille à la lecture et d'ajouter une seconde partition plus petite dédiée à l'écriture, là où les utilisateurs pourrons uploader. Nous traiterons ce cas simple à titre d'exemple; il est possible par la suite d'ajouter des partitions. 

Partition 1: &lt;br&gt;
* nom: '''sdb5'''
* rôle: propose des médias en lecture seule. 
* contenu: '''trois dossiers de stockage, comme /logiciel, /film, /musique'''
&lt;br&gt;
Partition 2:
* nom: '''sdb6'''
* rôle: espace dédié à la lecture écriture. 
* contenu: '''un répertoire de stockage servant aux dépôts des utilisateurs, /depot'''

créons les dossiers nécessaires au montage de l'arborescence. Ceux sur lesquels seront montés les partitions...
&lt;code bash&gt;cd /mnt/
mkdir data
mkdir depot&lt;/code&gt;

...et ajoutons ces lignes au fichier [[Fstab|''/etc/fstab'']] pour monter les partitions au démarrage.
&lt;code bash&gt;#disques de stockage
/dev/sdb5       /mnt/data ext3  user,rw,exec 0  0
/dev/sdb6       /mnt/depot ext3  user,rw,exec 0  0
&lt;/code&gt;

Il faut maintenant intégrer les dossiers à la racine des deux partition à l’arborescence du ftp. Ceci se fait  avec la puissante option ''bind'' du fichier ''/etc/fstab''. 
Créons les dossiers cibles qui seront à la racine du ftp.
&lt;code bash&gt;
cd /home/common/
mkdir ftp
cd ftp
mkdir logiciel; mkdir film; mkdir musique; mkdir depot
&lt;/code&gt;

Puis ajoutons ces lignes au fichier ''fstab'' afin de monter l'arborescence au démarrage du serveur:
&lt;code bash&gt;#dossiers ftp avec option bind
/mnt/data/logiciel     /home/common/ftp/logiciel none bind 0 0
/mnt/data/film      /home/common/ftp/film none bind 0 0
/mnt/data/musique     /home/common/ftp/musique none bind 0 0
/mnt/depot/depot      /home/common/ftp/depot none bind 0 0&lt;/code&gt;

Vérifier enfin si l'arborescence est correctement montée après redémarrage.
&lt;code bash&gt;shutdown -r now&lt;/code&gt;

== Gestion des droits de l'arborescence de pure-ftp ==

Dans notre cas, les utilisateurs auront tous les mêmes droits: droit en lecture sur toute l'arborescence (sauf dossier ''lost+find'' ) et droit en écriture dans le dossier ''depot''. Nous allons donc créer un nouvel utilisateur dans Debian muni de ces droits.

Pour ce faire on tape ce code:
&lt;code bash&gt;adduser pureftpd&lt;/code&gt;
puis on répond aux questions ainsi: '''''&lt;pureftpd&gt;, &lt;pureftpd&gt;, &lt;pure-ftp&gt;, &lt;vide&gt;, &lt;vide&gt;, &lt;vide&gt;, &lt;vide&gt;, o'''''
En consultant le fichier ''/etc/passwd'', on peut relever l'Uid et le Gid de ce nouvel utilisateur. 
&lt;code bash&gt;
cat /etc/passwd
&lt;/code&gt;
'''Si l'utilisateur ''pureftpd'' est le deuxième à être créé, il lui est attribué les valeurs :Uid=''1001'' et Gid=''1001'''''. Ces valeurs serviront au moment des créations de compte ftp. Chaque compte paramétré avec ces Uid,Gid sera vu par le serveur comme le compte ''pureftpd''.

Cette commande change le propriétaire du dossier'' /mnt/depot'' de manière récursive. Le propriétaire devient l'utilisateur ''pureftpd'', et le groupe ''root''. Cela autorise l'écriture pour l'utilisateur du ftp.
&lt;code bash&gt;chown -R pureftpd:root /mnt/depot&lt;/code&gt;

Si on s’arrête là, les utilisateurs ont accès au dossier ''lost+found''. Ça n'est pas très propre. On corrige ce défaut avec la ligne suivante qui change le propriétaire de ''lost+found'' et le restitue au l'utilisateur ''root'' du groupe ''root''.
&lt;code bash&gt;chown root:root /mnt/depot/lost+found&lt;/code&gt;

== Préparation de l'installation, compilation et installation ==

D'abord nous allons télécharger les fichiers sources et les décompresser. Sur la page http://download.pureftpd.org/pub/pure-ftpd/releases/   est recensé les différentes version du logiciel. 
&lt;code bash&gt;wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.36.tar.gz&lt;/code&gt;
on décompresse ensuite l'archive obtenue.
&lt;code bash&gt;tar zxvf pure-ftpd-1.0.36.tar.gz&lt;/code&gt;

Après lecture de la doc officielle,    http://download.pureftpd.org/pure-ftpd/doc/README , on installe les dépendances du logiciel:
&lt;code bash&gt;
aptitude install libmysqlclient-dev libssl-dev build-essential&lt;/code&gt;

Puis on choisi les options de compilation qui nous intéresseront:
* --with-tls : permet d'utiliser ce type de chiffrement
* --with-certfile=/home/nomdedomaine.pem : indique au compilateur l'emplacement du certificat de chiffrement. Vérifier que le certificat '''nomdedomaine.pem''' est présent à l'emplacement indiqué. 
* --with-ftpwho: active la commande &quot;ftp-who&quot;, pratique pour vérifier l'activité en temps réel
* --with-language=french: défini le français comme langue 
* --with-mysql : les utilisateurs seront stocké dans une base MySQL
* --with-cookie : permet d'utiliser un fichier fortunefile pour que le serveur affiche une phrase d'acceuil 
* --with-altlog: permet la journalisation dans différents formats, ceci sera utile plus tard au moment du monitoring.

On se place alors dans le dossier des fichiers sources
&lt;code bash&gt;cd pure-ftpd-1.0.36&lt;/code&gt;
et on lance la compilation avec les options voulues:
&lt;code bash&gt;./configure --with-tls --with-certfile=/home/nomdedomaine.pem --with-ftpwho --with-language=french --with-mysql --with-cookie --with-altlog&lt;/code&gt;
Si tout s'est bien passé, on termine l’installation par un 
&lt;code bash&gt;make&lt;/code&gt;
puis enfin
&lt;code bash&gt;make install&lt;/code&gt;

== Paramétrage MySQL ==

Il faut maintenant configurer l'accès à la base d'authentification. Concentrons nous d'abord sur le fichier de configuration ''/etc/pure-ftpd/db/mysql.conf''.

Modifier ces lignes comme ceci pour définir un utilisateur, son mot de passe et le nom de la base:
&lt;code bash&gt;# Mandatory : user to bind the server as.
MYSQLUser       pureftpd

# Mandatory : user password. You must have a password.
MYSQLPassword   pureftpd

# Mandatory : database to open.
MYSQLDatabase   pureftpd&lt;/code&gt;

et, pour maintenir un chiffrement des mot de passe tout en rendement possible la liaison que l'on aura a effectuer plus tard entre PhpBB et Pure-FTP, en choisi un chiffrement en md5:
&lt;code bash&gt;# Mandatory : how passwords are stored
# Valid values are : &quot;cleartext&quot;, &quot;crypt&quot;, &quot;md5&quot; and &quot;password&quot;
# (&quot;password&quot; = MySQL password() function)
# You can also use &quot;any&quot; to try &quot;crypt&quot;, &quot;md5&quot; *and* &quot;password&quot;
MYSQLCrypt      md5&lt;/code&gt;

Après ces changements on laisse le fichier  ''mysql.conf''.

Reste a créer la base. facile avec PhpMyAdmin.

* nom de la base : '''''pureftpd'''''
* nom de la table : '''''pureftpd'''''
* Nombre de colonnes : 12

{| class=&quot;wikitable&quot;
|+ Paramètres de la base pureftpd
! paramètre
! Type de variable
|-
| Nom  
| ''type''
|-
| User  
| ''varchar(16)''
|-
| status  
| ''enum''
|-
| Password  
| ''varchar(64)''
|-
| Uid  
| ''varchar(11)''
|-
| Gid  
| ''varchar(11)''
|-
| Dir  
| ''varchar(128)''
|-
| ULBandwidth  
| ''smallint(5)''
|-
| DLBandwidth  
| ''smallint(5)''
|-
| comment  
| ''tinytext''
|-
| ipaccess  
| ''varchar(15) ''
|-
| QuotaSize  
| ''smallint(5)''
|-
| QuotaFiles  
| ''int(11)''
|-
|}

Pour finir, dans PhpMyAdmin, on créé un utilisateur '''''pureftpd''''', mot de passe  '''''pureftpd''''',  avec tout les droits sur la table, « tout cocher ».

== Écriture et intégration d'un script de lancement du démon Pure-ftpd ==

Par soucis de commodité nous créons ce script dans le Bureau de l'utilisateur principal et nous le nommons ''pure-ftpd-startupscript''. 
&lt;code bash&gt;cd /hom/denis/Bureau
nano pure-ftpd-startupscript&lt;/code&gt;
Ce petit script comportera quatre lignes, la plus importante étant la ligne de commande de lancement de Prure-ftpd avec ses options. Ces trois autres lignes sont triviales:
&lt;code bash&gt;#!/bin/bash
echo &quot;lancement du daemon pure-ftpd&quot;

echo &quot;Fin du lancement de Pure-ftpd&quot;&lt;/code&gt;
On les colle dans ''pure-ftpd-startupscript'' et on enregistre les changements. 

Le démon Pure-ftpd se lance via une ligne de commande qui est très puissante. Optimiser au mieux les options de cette ligne de commande nous permettra d'avoir un Pure-ftpd &quot;sur mesure&quot;. La doc à consulter est toujours : http://download.pureftpd.org/pub/pure-ftpd/doc/README. 

Voici un résumé des options qui nous intéressent le plus :

* -c: nombre de clients simultanées. '''Dans notre cas on peut par exemple fixer la valeur à ''50''.'''
* -A: Chroot everyone. 
* -B: en background (daemonization)
* -C: nombre maximum de connexions par client. '''Choisir une valeur assez basse, par exemple ''3'', par mesure de sécurité, pour éviter qu'un utilisateur ne monopolise la bande passante montante du serveur. '''
* -E: n'autorise que les utilisateurs authentifiés, interdit les connexions anonymes
* -F: Fortune files, message d’accueil. '''Dans notre cas il se trouve ici : ''/home/common/fortunefile'''''
* -G: interdit le renommage
* -K: autorise l'utilisateur à reprendre un upload mais lui interdit de l'effacer ou de le renommer
* -l: méthode d'authentification et chemin vers le fichier de config de l'authentification. '''Dans notre cas, on active l'authentification msyql et on précise le chemin du fichier config comme ceci: ''mysql:/etc/pure-ftpd/db/mysql.conf'''''
* -O:  Enregistre tout les transferts de fichiers dans un fichier journal particulier, dans un format alternatif. Quatre formats sont supportés:  CLF (Apache-like), Stats, W3C and xferlog. '''Ici on peut rendre les logs de Pure-ftpd exploitables par AWStats avec la variable ''clf:/var/log/transfer.log'' .'''
* -p: ports du mode passif . '''On choisi par exemple la plage de port ''34343:34443''.'''
* -R: empêche les utilisateurs d'utiliser chmod
* -Y: à 2, active l'explicite TLS

On obtiens donc la ligne de commande suivante:
&lt;code bash&gt;/usr/local/sbin/pure-ftpd -c 50 -A -B -C 3 -E -F /home/common/fortunefile -G -K -l mysql:/etc/pure-ftpd/db/mysql.conf -O clf:/var/log/transfer.log -p 34343:34443 -R -Y 2 &amp;&lt;/code&gt;
/!\ La rédaction de cette ligne de commande nécessite de la minutie. Il suffit d'une majuscule confondue avec une minuscule, un espace d'oublié pour générer une erreur. Les erreurs non fatales ne seront pas toujours signalées par un message d'erreur, mais le démon ne se lancera sans activer l'option erronée. Prudence donc. /!\

La version finale du fichier ''pure-ftpd-startupscript'' est donc:
&lt;code bash&gt;#!/bin/bash
echo &quot;lancement du daemon pure-ftpd&quot;
/usr/local/sbin/pure-ftpd -c 50 -A -B -C 3 -E -F /home/common/fortunefile -G -K -l mysql:/etc/pure-ftpd/db/mysql.conf -O clf:/var/log/transfer.log -p 34343:34443 -R -Y 2 &amp;
echo &quot;Fin du lancement de Pure-ftpd&quot;&lt;/code&gt;
Rendre ce script executable:
&lt;code bash&gt;chmod +x  pure-ftpd-startupscript&lt;/code&gt;
L'intégration s'achève par l'ajout du lancement à la séquence de démarrage du serveur:
&lt;code bash&gt; 
cp  pure-ftpd-startupscript /etc/init.d
update-rc.d pure-ftpd-startupscript defaults &lt;/code&gt;

== Dernier réglage: message d’accueil ==


Le dernier réglage concerne le message d'acceuil. Il suffit de créer le fichier''/home/common/fortunefile'' et y enregistrer un texte de bienvenue.
&lt;code bash&gt;BIENVENUE sur le serveur FTP monsite.net&lt;/code&gt;

Le paramétrage est enfin fini. Passons à l'étape palpitante des tests. 

== Tester le fonctionnement de Pure-ftpd ==

Premier réflexe, redémarrer le système pour prendre en compte tout les réglages.
&lt;code bash&gt;shutdown -r now&lt;/code&gt;

Nous allons maintenant créer un compte de test. Plus haut nous avons paramétré Pure-ftp pour que le stockage du mot de passe sous forme de hash MD5. Nous avons donc besoin de calculer le hash MD5 du compte test. De nombreux sites internet proposent de le faire en ligne, dont celui ci: http://www.md5hashgenerator.com/index.php

* mot de passe: '''''test'''''
* hash md5: '''''098f6bcd4621d373cade4e832627b4f6 '''''

Ouvrons une session PhPMyAdmin et ouvrons la table ''pureftpd'' de la base ''pureftpd''. Insérons une nouvelle ligne à remplir avec ces valeurs:

{| class=&quot;wikitable&quot;
|+ Paramètres du compte &quot;test&quot;
! paramètre
! variable
|-
| User / varchar(16) 
| '''test'''
|-
| status / enum 
| '''0'''
|-
| Password / varchar(64)
| '''098f6bcd4621d373cade4e832627b4f6 '''
|-
| Uid / varchar(11)
| '''1001'''
|-
| Gid / varchar(11)
| '''1001'''
|-
| Dir / varchar(128)
| '''/home/common/ftp'''
|-
| ULBandwidth / smallint(5)
| '''0'''
|-
| DLBandwidth / smallint(5
| '''0'''
|-
| comment / tinytext
| '''&lt;vide&gt;'''
|-
| ipccess / varchar(15)
|''' *'''
|-
| QuotaSize / smallint(5)
| '''0'''
|-
| QuotaFiles / int(11)
| '''0'''
|-
|}


Enregistrons cet utilisateur test. 
Le moment fatidique approche. A partir d'un poste du réseau local, ouvrons  notre logiciel client FTP et paramétrons une nouvelle connexion ainsi:
{| class=&quot;wikitable&quot;
|+ Paramètres du compte &quot;test&quot; coté client ftp
! paramètre
! variable
|-
| Hôte 
| '''&lt;adresse IP local du serveur FTP&gt;'''
|-
| Port 
| '''21'''
|-
| Protocole 
| '''FTP'''
|-
| Chiffrement 
| '''Connexion FTP explicite sur TLS'''
|-
| Identifiant 
|''' test'''
|-
| mot de passe 
| '''test'''
|-
|}
Connectons nous maintenant au serveur ftp avec cette connexion. Si tout ce passe bien, on reçoit le certificat de sécurité qu'on doit valider, puis la connexion s'effectue, le message d’accueil s'affiche dans la console. La connexion établie, on peut lire tout les dossiers et uploader dans le dossier ''/depot''.

== Conclusion ==

Une fois le système opérationnel, les utilisateurs ont un accès chiffré à votre serveur ftp. Le fait de gérer les comtpe sur une base MySQL permet aussi bien d'enregistrer des comptes automatiquement avec un code php que de les paramétrer manuellement en passant par PhpMyAdmin. Cependant, un problème de sécurité demeure: les mots de passe les plus faibles, stockés sous forme de hash MD5, ne résisterons pas au crackage.</text>
      <sha1>6eok0z9wnue7bzzgfth09007kcz86ga</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5766</id>
      <parentid>5564</parentid>
      <timestamp>2014-08-20T05:22:41Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Structure de l'arborescence du FTP */ chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="14518">Pure-FTP est l'un des meilleurs logiciels serveur FTP, un excellent choix pour transférer des fichiers. Son niveau de sécurité est très bon, le paramétrage puissant. La prise en charge du SSL nous permettra de chiffrer les données transitant par Internet. Le fait qu'on puisse gérer les comptes grâce à une table MySQL sera très pratique pour automatiser plus tard la création des comptes. 

== Prérequis ==

*Deux partitions dédiées au stockage et l'écriture des données. 
*Un certificat de sécurité
*Apache, MySQL, PhpMyAdmin
*plusieurs heures devant soi et du courage 

En avant !

== Structure de l'arborescence du FTP ==

Avant de se lancer dans l'installation du FTP, il faut s’interroger sur la structure qu'aura l' arborescence du FTP. Si l'on souhaite partager des médias, le plus simple est de dédier (au moins) une partition de grande taille à la lecture et d'ajouter une seconde partition plus petite dédiée à l'écriture, là où les utilisateurs pourrons uploader. Nous traiterons ce cas simple à titre d'exemple; il est possible par la suite d'ajouter des partitions. 

Partition 1: &lt;br&gt;
* nom: '''sdb5'''
* rôle: propose des médias en lecture seule. 
* contenu: '''trois répertoires de stockage, comme /logiciel, /film, /musique'''
&lt;br&gt;
Partition 2:
* nom: '''sdb6'''
* rôle: espace dédié à la lecture écriture. 
* contenu: '''un répertoire de stockage servant aux dépôts des utilisateurs, /depot'''

créons les répertoires nécessaires au montage de l'arborescence. Ceux sur lesquels seront montés les partitions...
&lt;code bash&gt;cd /mnt/
mkdir data
mkdir depot&lt;/code&gt;

...et ajoutons ces lignes au fichier [[Fstab|''/etc/fstab'']] pour monter les partitions au démarrage.
&lt;code bash&gt;#disques de stockage
/dev/sdb5       /mnt/data ext3  user,rw,exec 0  0
/dev/sdb6       /mnt/depot ext3  user,rw,exec 0  0
&lt;/code&gt;

Il faut maintenant intégrer les répertoires à la racine des deux partition à l’arborescence du ftp. Ceci se fait  avec la puissante option ''bind'' du fichier ''/etc/fstab''. 
Créons les répertoires cibles qui seront à la racine du ftp.
&lt;code bash&gt;
cd /home/common/
mkdir ftp
cd ftp
mkdir logiciel; mkdir film; mkdir musique; mkdir depot
&lt;/code&gt;

Puis ajoutons ces lignes au fichier ''fstab'' afin de monter l'arborescence au démarrage du serveur:
&lt;code bash&gt;#répertoires ftp avec option bind
/mnt/data/logiciel     /home/common/ftp/logiciel none bind 0 0
/mnt/data/film      /home/common/ftp/film none bind 0 0
/mnt/data/musique     /home/common/ftp/musique none bind 0 0
/mnt/depot/depot      /home/common/ftp/depot none bind 0 0&lt;/code&gt;

Vérifier enfin si l'arborescence est correctement montée après redémarrage.
&lt;code bash&gt;shutdown -r now&lt;/code&gt;

== Gestion des droits de l'arborescence de pure-ftp ==

Dans notre cas, les utilisateurs auront tous les mêmes droits: droit en lecture sur toute l'arborescence (sauf dossier ''lost+find'' ) et droit en écriture dans le dossier ''depot''. Nous allons donc créer un nouvel utilisateur dans Debian muni de ces droits.

Pour ce faire on tape ce code:
&lt;code bash&gt;adduser pureftpd&lt;/code&gt;
puis on répond aux questions ainsi: '''''&lt;pureftpd&gt;, &lt;pureftpd&gt;, &lt;pure-ftp&gt;, &lt;vide&gt;, &lt;vide&gt;, &lt;vide&gt;, &lt;vide&gt;, o'''''
En consultant le fichier ''/etc/passwd'', on peut relever l'Uid et le Gid de ce nouvel utilisateur. 
&lt;code bash&gt;
cat /etc/passwd
&lt;/code&gt;
'''Si l'utilisateur ''pureftpd'' est le deuxième à être créé, il lui est attribué les valeurs :Uid=''1001'' et Gid=''1001'''''. Ces valeurs serviront au moment des créations de compte ftp. Chaque compte paramétré avec ces Uid,Gid sera vu par le serveur comme le compte ''pureftpd''.

Cette commande change le propriétaire du dossier'' /mnt/depot'' de manière récursive. Le propriétaire devient l'utilisateur ''pureftpd'', et le groupe ''root''. Cela autorise l'écriture pour l'utilisateur du ftp.
&lt;code bash&gt;chown -R pureftpd:root /mnt/depot&lt;/code&gt;

Si on s’arrête là, les utilisateurs ont accès au dossier ''lost+found''. Ça n'est pas très propre. On corrige ce défaut avec la ligne suivante qui change le propriétaire de ''lost+found'' et le restitue au l'utilisateur ''root'' du groupe ''root''.
&lt;code bash&gt;chown root:root /mnt/depot/lost+found&lt;/code&gt;

== Préparation de l'installation, compilation et installation ==

D'abord nous allons télécharger les fichiers sources et les décompresser. Sur la page http://download.pureftpd.org/pub/pure-ftpd/releases/   est recensé les différentes version du logiciel. 
&lt;code bash&gt;wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.36.tar.gz&lt;/code&gt;
on décompresse ensuite l'archive obtenue.
&lt;code bash&gt;tar zxvf pure-ftpd-1.0.36.tar.gz&lt;/code&gt;

Après lecture de la doc officielle,    http://download.pureftpd.org/pure-ftpd/doc/README , on installe les dépendances du logiciel:
&lt;code bash&gt;
aptitude install libmysqlclient-dev libssl-dev build-essential&lt;/code&gt;

Puis on choisi les options de compilation qui nous intéresseront:
* --with-tls : permet d'utiliser ce type de chiffrement
* --with-certfile=/home/nomdedomaine.pem : indique au compilateur l'emplacement du certificat de chiffrement. Vérifier que le certificat '''nomdedomaine.pem''' est présent à l'emplacement indiqué. 
* --with-ftpwho: active la commande &quot;ftp-who&quot;, pratique pour vérifier l'activité en temps réel
* --with-language=french: défini le français comme langue 
* --with-mysql : les utilisateurs seront stocké dans une base MySQL
* --with-cookie : permet d'utiliser un fichier fortunefile pour que le serveur affiche une phrase d'acceuil 
* --with-altlog: permet la journalisation dans différents formats, ceci sera utile plus tard au moment du monitoring.

On se place alors dans le dossier des fichiers sources
&lt;code bash&gt;cd pure-ftpd-1.0.36&lt;/code&gt;
et on lance la compilation avec les options voulues:
&lt;code bash&gt;./configure --with-tls --with-certfile=/home/nomdedomaine.pem --with-ftpwho --with-language=french --with-mysql --with-cookie --with-altlog&lt;/code&gt;
Si tout s'est bien passé, on termine l’installation par un 
&lt;code bash&gt;make&lt;/code&gt;
puis enfin
&lt;code bash&gt;make install&lt;/code&gt;

== Paramétrage MySQL ==

Il faut maintenant configurer l'accès à la base d'authentification. Concentrons nous d'abord sur le fichier de configuration ''/etc/pure-ftpd/db/mysql.conf''.

Modifier ces lignes comme ceci pour définir un utilisateur, son mot de passe et le nom de la base:
&lt;code bash&gt;# Mandatory : user to bind the server as.
MYSQLUser       pureftpd

# Mandatory : user password. You must have a password.
MYSQLPassword   pureftpd

# Mandatory : database to open.
MYSQLDatabase   pureftpd&lt;/code&gt;

et, pour maintenir un chiffrement des mot de passe tout en rendement possible la liaison que l'on aura a effectuer plus tard entre PhpBB et Pure-FTP, en choisi un chiffrement en md5:
&lt;code bash&gt;# Mandatory : how passwords are stored
# Valid values are : &quot;cleartext&quot;, &quot;crypt&quot;, &quot;md5&quot; and &quot;password&quot;
# (&quot;password&quot; = MySQL password() function)
# You can also use &quot;any&quot; to try &quot;crypt&quot;, &quot;md5&quot; *and* &quot;password&quot;
MYSQLCrypt      md5&lt;/code&gt;

Après ces changements on laisse le fichier  ''mysql.conf''.

Reste a créer la base. facile avec PhpMyAdmin.

* nom de la base : '''''pureftpd'''''
* nom de la table : '''''pureftpd'''''
* Nombre de colonnes : 12

{| class=&quot;wikitable&quot;
|+ Paramètres de la base pureftpd
! paramètre
! Type de variable
|-
| Nom  
| ''type''
|-
| User  
| ''varchar(16)''
|-
| status  
| ''enum''
|-
| Password  
| ''varchar(64)''
|-
| Uid  
| ''varchar(11)''
|-
| Gid  
| ''varchar(11)''
|-
| Dir  
| ''varchar(128)''
|-
| ULBandwidth  
| ''smallint(5)''
|-
| DLBandwidth  
| ''smallint(5)''
|-
| comment  
| ''tinytext''
|-
| ipaccess  
| ''varchar(15) ''
|-
| QuotaSize  
| ''smallint(5)''
|-
| QuotaFiles  
| ''int(11)''
|-
|}

Pour finir, dans PhpMyAdmin, on créé un utilisateur '''''pureftpd''''', mot de passe  '''''pureftpd''''',  avec tout les droits sur la table, « tout cocher ».

== Écriture et intégration d'un script de lancement du démon Pure-ftpd ==

Par soucis de commodité nous créons ce script dans le Bureau de l'utilisateur principal et nous le nommons ''pure-ftpd-startupscript''. 
&lt;code bash&gt;cd /hom/denis/Bureau
nano pure-ftpd-startupscript&lt;/code&gt;
Ce petit script comportera quatre lignes, la plus importante étant la ligne de commande de lancement de Prure-ftpd avec ses options. Ces trois autres lignes sont triviales:
&lt;code bash&gt;#!/bin/bash
echo &quot;lancement du daemon pure-ftpd&quot;

echo &quot;Fin du lancement de Pure-ftpd&quot;&lt;/code&gt;
On les colle dans ''pure-ftpd-startupscript'' et on enregistre les changements. 

Le démon Pure-ftpd se lance via une ligne de commande qui est très puissante. Optimiser au mieux les options de cette ligne de commande nous permettra d'avoir un Pure-ftpd &quot;sur mesure&quot;. La doc à consulter est toujours : http://download.pureftpd.org/pub/pure-ftpd/doc/README. 

Voici un résumé des options qui nous intéressent le plus :

* -c: nombre de clients simultanées. '''Dans notre cas on peut par exemple fixer la valeur à ''50''.'''
* -A: Chroot everyone. 
* -B: en background (daemonization)
* -C: nombre maximum de connexions par client. '''Choisir une valeur assez basse, par exemple ''3'', par mesure de sécurité, pour éviter qu'un utilisateur ne monopolise la bande passante montante du serveur. '''
* -E: n'autorise que les utilisateurs authentifiés, interdit les connexions anonymes
* -F: Fortune files, message d’accueil. '''Dans notre cas il se trouve ici : ''/home/common/fortunefile'''''
* -G: interdit le renommage
* -K: autorise l'utilisateur à reprendre un upload mais lui interdit de l'effacer ou de le renommer
* -l: méthode d'authentification et chemin vers le fichier de config de l'authentification. '''Dans notre cas, on active l'authentification msyql et on précise le chemin du fichier config comme ceci: ''mysql:/etc/pure-ftpd/db/mysql.conf'''''
* -O:  Enregistre tout les transferts de fichiers dans un fichier journal particulier, dans un format alternatif. Quatre formats sont supportés:  CLF (Apache-like), Stats, W3C and xferlog. '''Ici on peut rendre les logs de Pure-ftpd exploitables par AWStats avec la variable ''clf:/var/log/transfer.log'' .'''
* -p: ports du mode passif . '''On choisi par exemple la plage de port ''34343:34443''.'''
* -R: empêche les utilisateurs d'utiliser chmod
* -Y: à 2, active l'explicite TLS

On obtiens donc la ligne de commande suivante:
&lt;code bash&gt;/usr/local/sbin/pure-ftpd -c 50 -A -B -C 3 -E -F /home/common/fortunefile -G -K -l mysql:/etc/pure-ftpd/db/mysql.conf -O clf:/var/log/transfer.log -p 34343:34443 -R -Y 2 &amp;&lt;/code&gt;
/!\ La rédaction de cette ligne de commande nécessite de la minutie. Il suffit d'une majuscule confondue avec une minuscule, un espace d'oublié pour générer une erreur. Les erreurs non fatales ne seront pas toujours signalées par un message d'erreur, mais le démon ne se lancera sans activer l'option erronée. Prudence donc. /!\

La version finale du fichier ''pure-ftpd-startupscript'' est donc:
&lt;code bash&gt;#!/bin/bash
echo &quot;lancement du daemon pure-ftpd&quot;
/usr/local/sbin/pure-ftpd -c 50 -A -B -C 3 -E -F /home/common/fortunefile -G -K -l mysql:/etc/pure-ftpd/db/mysql.conf -O clf:/var/log/transfer.log -p 34343:34443 -R -Y 2 &amp;
echo &quot;Fin du lancement de Pure-ftpd&quot;&lt;/code&gt;
Rendre ce script executable:
&lt;code bash&gt;chmod +x  pure-ftpd-startupscript&lt;/code&gt;
L'intégration s'achève par l'ajout du lancement à la séquence de démarrage du serveur:
&lt;code bash&gt; 
cp  pure-ftpd-startupscript /etc/init.d
update-rc.d pure-ftpd-startupscript defaults &lt;/code&gt;

== Dernier réglage: message d’accueil ==


Le dernier réglage concerne le message d'acceuil. Il suffit de créer le fichier''/home/common/fortunefile'' et y enregistrer un texte de bienvenue.
&lt;code bash&gt;BIENVENUE sur le serveur FTP monsite.net&lt;/code&gt;

Le paramétrage est enfin fini. Passons à l'étape palpitante des tests. 

== Tester le fonctionnement de Pure-ftpd ==

Premier réflexe, redémarrer le système pour prendre en compte tout les réglages.
&lt;code bash&gt;shutdown -r now&lt;/code&gt;

Nous allons maintenant créer un compte de test. Plus haut nous avons paramétré Pure-ftp pour que le stockage du mot de passe sous forme de hash MD5. Nous avons donc besoin de calculer le hash MD5 du compte test. De nombreux sites internet proposent de le faire en ligne, dont celui ci: http://www.md5hashgenerator.com/index.php

* mot de passe: '''''test'''''
* hash md5: '''''098f6bcd4621d373cade4e832627b4f6 '''''

Ouvrons une session PhPMyAdmin et ouvrons la table ''pureftpd'' de la base ''pureftpd''. Insérons une nouvelle ligne à remplir avec ces valeurs:

{| class=&quot;wikitable&quot;
|+ Paramètres du compte &quot;test&quot;
! paramètre
! variable
|-
| User / varchar(16) 
| '''test'''
|-
| status / enum 
| '''0'''
|-
| Password / varchar(64)
| '''098f6bcd4621d373cade4e832627b4f6 '''
|-
| Uid / varchar(11)
| '''1001'''
|-
| Gid / varchar(11)
| '''1001'''
|-
| Dir / varchar(128)
| '''/home/common/ftp'''
|-
| ULBandwidth / smallint(5)
| '''0'''
|-
| DLBandwidth / smallint(5
| '''0'''
|-
| comment / tinytext
| '''&lt;vide&gt;'''
|-
| ipccess / varchar(15)
|''' *'''
|-
| QuotaSize / smallint(5)
| '''0'''
|-
| QuotaFiles / int(11)
| '''0'''
|-
|}


Enregistrons cet utilisateur test. 
Le moment fatidique approche. A partir d'un poste du réseau local, ouvrons  notre logiciel client FTP et paramétrons une nouvelle connexion ainsi:
{| class=&quot;wikitable&quot;
|+ Paramètres du compte &quot;test&quot; coté client ftp
! paramètre
! variable
|-
| Hôte 
| '''&lt;adresse IP local du serveur FTP&gt;'''
|-
| Port 
| '''21'''
|-
| Protocole 
| '''FTP'''
|-
| Chiffrement 
| '''Connexion FTP explicite sur TLS'''
|-
| Identifiant 
|''' test'''
|-
| mot de passe 
| '''test'''
|-
|}
Connectons nous maintenant au serveur ftp avec cette connexion. Si tout ce passe bien, on reçoit le certificat de sécurité qu'on doit valider, puis la connexion s'effectue, le message d’accueil s'affiche dans la console. La connexion établie, on peut lire tout les dossiers et uploader dans le dossier ''/depot''.

== Conclusion ==

Une fois le système opérationnel, les utilisateurs ont un accès chiffré à votre serveur ftp. Le fait de gérer les comtpe sur une base MySQL permet aussi bien d'enregistrer des comptes automatiquement avec un code php que de les paramétrer manuellement en passant par PhpMyAdmin. Cependant, un problème de sécurité demeure: les mots de passe les plus faibles, stockés sous forme de hash MD5, ne résisterons pas au crackage.</text>
      <sha1>t1c1slqaahnk90v9860qnlj7ex9k877</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5767</id>
      <parentid>5766</parentid>
      <timestamp>2014-08-20T05:23:29Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Gestion des droits de l'arborescence de pure-ftp */ chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="14534">Pure-FTP est l'un des meilleurs logiciels serveur FTP, un excellent choix pour transférer des fichiers. Son niveau de sécurité est très bon, le paramétrage puissant. La prise en charge du SSL nous permettra de chiffrer les données transitant par Internet. Le fait qu'on puisse gérer les comptes grâce à une table MySQL sera très pratique pour automatiser plus tard la création des comptes. 

== Prérequis ==

*Deux partitions dédiées au stockage et l'écriture des données. 
*Un certificat de sécurité
*Apache, MySQL, PhpMyAdmin
*plusieurs heures devant soi et du courage 

En avant !

== Structure de l'arborescence du FTP ==

Avant de se lancer dans l'installation du FTP, il faut s’interroger sur la structure qu'aura l' arborescence du FTP. Si l'on souhaite partager des médias, le plus simple est de dédier (au moins) une partition de grande taille à la lecture et d'ajouter une seconde partition plus petite dédiée à l'écriture, là où les utilisateurs pourrons uploader. Nous traiterons ce cas simple à titre d'exemple; il est possible par la suite d'ajouter des partitions. 

Partition 1: &lt;br&gt;
* nom: '''sdb5'''
* rôle: propose des médias en lecture seule. 
* contenu: '''trois répertoires de stockage, comme /logiciel, /film, /musique'''
&lt;br&gt;
Partition 2:
* nom: '''sdb6'''
* rôle: espace dédié à la lecture écriture. 
* contenu: '''un répertoire de stockage servant aux dépôts des utilisateurs, /depot'''

créons les répertoires nécessaires au montage de l'arborescence. Ceux sur lesquels seront montés les partitions...
&lt;code bash&gt;cd /mnt/
mkdir data
mkdir depot&lt;/code&gt;

...et ajoutons ces lignes au fichier [[Fstab|''/etc/fstab'']] pour monter les partitions au démarrage.
&lt;code bash&gt;#disques de stockage
/dev/sdb5       /mnt/data ext3  user,rw,exec 0  0
/dev/sdb6       /mnt/depot ext3  user,rw,exec 0  0
&lt;/code&gt;

Il faut maintenant intégrer les répertoires à la racine des deux partition à l’arborescence du ftp. Ceci se fait  avec la puissante option ''bind'' du fichier ''/etc/fstab''. 
Créons les répertoires cibles qui seront à la racine du ftp.
&lt;code bash&gt;
cd /home/common/
mkdir ftp
cd ftp
mkdir logiciel; mkdir film; mkdir musique; mkdir depot
&lt;/code&gt;

Puis ajoutons ces lignes au fichier ''fstab'' afin de monter l'arborescence au démarrage du serveur:
&lt;code bash&gt;#répertoires ftp avec option bind
/mnt/data/logiciel     /home/common/ftp/logiciel none bind 0 0
/mnt/data/film      /home/common/ftp/film none bind 0 0
/mnt/data/musique     /home/common/ftp/musique none bind 0 0
/mnt/depot/depot      /home/common/ftp/depot none bind 0 0&lt;/code&gt;

Vérifier enfin si l'arborescence est correctement montée après redémarrage.
&lt;code bash&gt;shutdown -r now&lt;/code&gt;

== Gestion des droits de l'arborescence de pure-ftp ==

Dans notre cas, les utilisateurs auront tous les mêmes droits: droit en lecture sur toute l'arborescence (sauf répertoire ''lost+find'' ) et droit en écriture dans le répertoire ''depot''. Nous allons donc créer un nouvel utilisateur dans Debian muni de ces droits.

Pour ce faire on tape ce code:
&lt;code bash&gt;adduser pureftpd&lt;/code&gt;
puis on répond aux questions ainsi: '''''&lt;pureftpd&gt;, &lt;pureftpd&gt;, &lt;pure-ftp&gt;, &lt;vide&gt;, &lt;vide&gt;, &lt;vide&gt;, &lt;vide&gt;, o'''''
En consultant le fichier ''/etc/passwd'', on peut relever l'Uid et le Gid de ce nouvel utilisateur. 
&lt;code bash&gt;
cat /etc/passwd
&lt;/code&gt;
'''Si l'utilisateur ''pureftpd'' est le deuxième à être créé, il lui est attribué les valeurs :Uid=''1001'' et Gid=''1001'''''. Ces valeurs serviront au moment des créations de compte ftp. Chaque compte paramétré avec ces Uid,Gid sera vu par le serveur comme le compte ''pureftpd''.

Cette commande change le propriétaire du répertoire'' /mnt/depot'' de manière récursive. Le propriétaire devient l'utilisateur ''pureftpd'', et le groupe ''root''. Cela autorise l'écriture pour l'utilisateur du ftp.
&lt;code bash&gt;chown -R pureftpd:root /mnt/depot&lt;/code&gt;

Si on s’arrête là, les utilisateurs ont accès au répertoire ''lost+found''. Ça n'est pas très propre. On corrige ce défaut avec la ligne suivante qui change le propriétaire de ''lost+found'' et le restitue au l'utilisateur ''root'' du groupe ''root''.
&lt;code bash&gt;chown root:root /mnt/depot/lost+found&lt;/code&gt;

== Préparation de l'installation, compilation et installation ==

D'abord nous allons télécharger les fichiers sources et les décompresser. Sur la page http://download.pureftpd.org/pub/pure-ftpd/releases/   est recensé les différentes version du logiciel. 
&lt;code bash&gt;wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.36.tar.gz&lt;/code&gt;
on décompresse ensuite l'archive obtenue.
&lt;code bash&gt;tar zxvf pure-ftpd-1.0.36.tar.gz&lt;/code&gt;

Après lecture de la doc officielle,    http://download.pureftpd.org/pure-ftpd/doc/README , on installe les dépendances du logiciel:
&lt;code bash&gt;
aptitude install libmysqlclient-dev libssl-dev build-essential&lt;/code&gt;

Puis on choisi les options de compilation qui nous intéresseront:
* --with-tls : permet d'utiliser ce type de chiffrement
* --with-certfile=/home/nomdedomaine.pem : indique au compilateur l'emplacement du certificat de chiffrement. Vérifier que le certificat '''nomdedomaine.pem''' est présent à l'emplacement indiqué. 
* --with-ftpwho: active la commande &quot;ftp-who&quot;, pratique pour vérifier l'activité en temps réel
* --with-language=french: défini le français comme langue 
* --with-mysql : les utilisateurs seront stocké dans une base MySQL
* --with-cookie : permet d'utiliser un fichier fortunefile pour que le serveur affiche une phrase d'acceuil 
* --with-altlog: permet la journalisation dans différents formats, ceci sera utile plus tard au moment du monitoring.

On se place alors dans le dossier des fichiers sources
&lt;code bash&gt;cd pure-ftpd-1.0.36&lt;/code&gt;
et on lance la compilation avec les options voulues:
&lt;code bash&gt;./configure --with-tls --with-certfile=/home/nomdedomaine.pem --with-ftpwho --with-language=french --with-mysql --with-cookie --with-altlog&lt;/code&gt;
Si tout s'est bien passé, on termine l’installation par un 
&lt;code bash&gt;make&lt;/code&gt;
puis enfin
&lt;code bash&gt;make install&lt;/code&gt;

== Paramétrage MySQL ==

Il faut maintenant configurer l'accès à la base d'authentification. Concentrons nous d'abord sur le fichier de configuration ''/etc/pure-ftpd/db/mysql.conf''.

Modifier ces lignes comme ceci pour définir un utilisateur, son mot de passe et le nom de la base:
&lt;code bash&gt;# Mandatory : user to bind the server as.
MYSQLUser       pureftpd

# Mandatory : user password. You must have a password.
MYSQLPassword   pureftpd

# Mandatory : database to open.
MYSQLDatabase   pureftpd&lt;/code&gt;

et, pour maintenir un chiffrement des mot de passe tout en rendement possible la liaison que l'on aura a effectuer plus tard entre PhpBB et Pure-FTP, en choisi un chiffrement en md5:
&lt;code bash&gt;# Mandatory : how passwords are stored
# Valid values are : &quot;cleartext&quot;, &quot;crypt&quot;, &quot;md5&quot; and &quot;password&quot;
# (&quot;password&quot; = MySQL password() function)
# You can also use &quot;any&quot; to try &quot;crypt&quot;, &quot;md5&quot; *and* &quot;password&quot;
MYSQLCrypt      md5&lt;/code&gt;

Après ces changements on laisse le fichier  ''mysql.conf''.

Reste a créer la base. facile avec PhpMyAdmin.

* nom de la base : '''''pureftpd'''''
* nom de la table : '''''pureftpd'''''
* Nombre de colonnes : 12

{| class=&quot;wikitable&quot;
|+ Paramètres de la base pureftpd
! paramètre
! Type de variable
|-
| Nom  
| ''type''
|-
| User  
| ''varchar(16)''
|-
| status  
| ''enum''
|-
| Password  
| ''varchar(64)''
|-
| Uid  
| ''varchar(11)''
|-
| Gid  
| ''varchar(11)''
|-
| Dir  
| ''varchar(128)''
|-
| ULBandwidth  
| ''smallint(5)''
|-
| DLBandwidth  
| ''smallint(5)''
|-
| comment  
| ''tinytext''
|-
| ipaccess  
| ''varchar(15) ''
|-
| QuotaSize  
| ''smallint(5)''
|-
| QuotaFiles  
| ''int(11)''
|-
|}

Pour finir, dans PhpMyAdmin, on créé un utilisateur '''''pureftpd''''', mot de passe  '''''pureftpd''''',  avec tout les droits sur la table, « tout cocher ».

== Écriture et intégration d'un script de lancement du démon Pure-ftpd ==

Par soucis de commodité nous créons ce script dans le Bureau de l'utilisateur principal et nous le nommons ''pure-ftpd-startupscript''. 
&lt;code bash&gt;cd /hom/denis/Bureau
nano pure-ftpd-startupscript&lt;/code&gt;
Ce petit script comportera quatre lignes, la plus importante étant la ligne de commande de lancement de Prure-ftpd avec ses options. Ces trois autres lignes sont triviales:
&lt;code bash&gt;#!/bin/bash
echo &quot;lancement du daemon pure-ftpd&quot;

echo &quot;Fin du lancement de Pure-ftpd&quot;&lt;/code&gt;
On les colle dans ''pure-ftpd-startupscript'' et on enregistre les changements. 

Le démon Pure-ftpd se lance via une ligne de commande qui est très puissante. Optimiser au mieux les options de cette ligne de commande nous permettra d'avoir un Pure-ftpd &quot;sur mesure&quot;. La doc à consulter est toujours : http://download.pureftpd.org/pub/pure-ftpd/doc/README. 

Voici un résumé des options qui nous intéressent le plus :

* -c: nombre de clients simultanées. '''Dans notre cas on peut par exemple fixer la valeur à ''50''.'''
* -A: Chroot everyone. 
* -B: en background (daemonization)
* -C: nombre maximum de connexions par client. '''Choisir une valeur assez basse, par exemple ''3'', par mesure de sécurité, pour éviter qu'un utilisateur ne monopolise la bande passante montante du serveur. '''
* -E: n'autorise que les utilisateurs authentifiés, interdit les connexions anonymes
* -F: Fortune files, message d’accueil. '''Dans notre cas il se trouve ici : ''/home/common/fortunefile'''''
* -G: interdit le renommage
* -K: autorise l'utilisateur à reprendre un upload mais lui interdit de l'effacer ou de le renommer
* -l: méthode d'authentification et chemin vers le fichier de config de l'authentification. '''Dans notre cas, on active l'authentification msyql et on précise le chemin du fichier config comme ceci: ''mysql:/etc/pure-ftpd/db/mysql.conf'''''
* -O:  Enregistre tout les transferts de fichiers dans un fichier journal particulier, dans un format alternatif. Quatre formats sont supportés:  CLF (Apache-like), Stats, W3C and xferlog. '''Ici on peut rendre les logs de Pure-ftpd exploitables par AWStats avec la variable ''clf:/var/log/transfer.log'' .'''
* -p: ports du mode passif . '''On choisi par exemple la plage de port ''34343:34443''.'''
* -R: empêche les utilisateurs d'utiliser chmod
* -Y: à 2, active l'explicite TLS

On obtiens donc la ligne de commande suivante:
&lt;code bash&gt;/usr/local/sbin/pure-ftpd -c 50 -A -B -C 3 -E -F /home/common/fortunefile -G -K -l mysql:/etc/pure-ftpd/db/mysql.conf -O clf:/var/log/transfer.log -p 34343:34443 -R -Y 2 &amp;&lt;/code&gt;
/!\ La rédaction de cette ligne de commande nécessite de la minutie. Il suffit d'une majuscule confondue avec une minuscule, un espace d'oublié pour générer une erreur. Les erreurs non fatales ne seront pas toujours signalées par un message d'erreur, mais le démon ne se lancera sans activer l'option erronée. Prudence donc. /!\

La version finale du fichier ''pure-ftpd-startupscript'' est donc:
&lt;code bash&gt;#!/bin/bash
echo &quot;lancement du daemon pure-ftpd&quot;
/usr/local/sbin/pure-ftpd -c 50 -A -B -C 3 -E -F /home/common/fortunefile -G -K -l mysql:/etc/pure-ftpd/db/mysql.conf -O clf:/var/log/transfer.log -p 34343:34443 -R -Y 2 &amp;
echo &quot;Fin du lancement de Pure-ftpd&quot;&lt;/code&gt;
Rendre ce script executable:
&lt;code bash&gt;chmod +x  pure-ftpd-startupscript&lt;/code&gt;
L'intégration s'achève par l'ajout du lancement à la séquence de démarrage du serveur:
&lt;code bash&gt; 
cp  pure-ftpd-startupscript /etc/init.d
update-rc.d pure-ftpd-startupscript defaults &lt;/code&gt;

== Dernier réglage: message d’accueil ==


Le dernier réglage concerne le message d'acceuil. Il suffit de créer le fichier''/home/common/fortunefile'' et y enregistrer un texte de bienvenue.
&lt;code bash&gt;BIENVENUE sur le serveur FTP monsite.net&lt;/code&gt;

Le paramétrage est enfin fini. Passons à l'étape palpitante des tests. 

== Tester le fonctionnement de Pure-ftpd ==

Premier réflexe, redémarrer le système pour prendre en compte tout les réglages.
&lt;code bash&gt;shutdown -r now&lt;/code&gt;

Nous allons maintenant créer un compte de test. Plus haut nous avons paramétré Pure-ftp pour que le stockage du mot de passe sous forme de hash MD5. Nous avons donc besoin de calculer le hash MD5 du compte test. De nombreux sites internet proposent de le faire en ligne, dont celui ci: http://www.md5hashgenerator.com/index.php

* mot de passe: '''''test'''''
* hash md5: '''''098f6bcd4621d373cade4e832627b4f6 '''''

Ouvrons une session PhPMyAdmin et ouvrons la table ''pureftpd'' de la base ''pureftpd''. Insérons une nouvelle ligne à remplir avec ces valeurs:

{| class=&quot;wikitable&quot;
|+ Paramètres du compte &quot;test&quot;
! paramètre
! variable
|-
| User / varchar(16) 
| '''test'''
|-
| status / enum 
| '''0'''
|-
| Password / varchar(64)
| '''098f6bcd4621d373cade4e832627b4f6 '''
|-
| Uid / varchar(11)
| '''1001'''
|-
| Gid / varchar(11)
| '''1001'''
|-
| Dir / varchar(128)
| '''/home/common/ftp'''
|-
| ULBandwidth / smallint(5)
| '''0'''
|-
| DLBandwidth / smallint(5
| '''0'''
|-
| comment / tinytext
| '''&lt;vide&gt;'''
|-
| ipccess / varchar(15)
|''' *'''
|-
| QuotaSize / smallint(5)
| '''0'''
|-
| QuotaFiles / int(11)
| '''0'''
|-
|}


Enregistrons cet utilisateur test. 
Le moment fatidique approche. A partir d'un poste du réseau local, ouvrons  notre logiciel client FTP et paramétrons une nouvelle connexion ainsi:
{| class=&quot;wikitable&quot;
|+ Paramètres du compte &quot;test&quot; coté client ftp
! paramètre
! variable
|-
| Hôte 
| '''&lt;adresse IP local du serveur FTP&gt;'''
|-
| Port 
| '''21'''
|-
| Protocole 
| '''FTP'''
|-
| Chiffrement 
| '''Connexion FTP explicite sur TLS'''
|-
| Identifiant 
|''' test'''
|-
| mot de passe 
| '''test'''
|-
|}
Connectons nous maintenant au serveur ftp avec cette connexion. Si tout ce passe bien, on reçoit le certificat de sécurité qu'on doit valider, puis la connexion s'effectue, le message d’accueil s'affiche dans la console. La connexion établie, on peut lire tout les dossiers et uploader dans le dossier ''/depot''.

== Conclusion ==

Une fois le système opérationnel, les utilisateurs ont un accès chiffré à votre serveur ftp. Le fait de gérer les comtpe sur une base MySQL permet aussi bien d'enregistrer des comptes automatiquement avec un code php que de les paramétrer manuellement en passant par PhpMyAdmin. Cependant, un problème de sécurité demeure: les mots de passe les plus faibles, stockés sous forme de hash MD5, ne résisterons pas au crackage.</text>
      <sha1>qrqtx5doddw9skyi4yillvrwt2alwyj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5768</id>
      <parentid>5767</parentid>
      <timestamp>2014-08-20T05:24:02Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Préparation de l'installation, compilation et installation */ chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="14538">Pure-FTP est l'un des meilleurs logiciels serveur FTP, un excellent choix pour transférer des fichiers. Son niveau de sécurité est très bon, le paramétrage puissant. La prise en charge du SSL nous permettra de chiffrer les données transitant par Internet. Le fait qu'on puisse gérer les comptes grâce à une table MySQL sera très pratique pour automatiser plus tard la création des comptes. 

== Prérequis ==

*Deux partitions dédiées au stockage et l'écriture des données. 
*Un certificat de sécurité
*Apache, MySQL, PhpMyAdmin
*plusieurs heures devant soi et du courage 

En avant !

== Structure de l'arborescence du FTP ==

Avant de se lancer dans l'installation du FTP, il faut s’interroger sur la structure qu'aura l' arborescence du FTP. Si l'on souhaite partager des médias, le plus simple est de dédier (au moins) une partition de grande taille à la lecture et d'ajouter une seconde partition plus petite dédiée à l'écriture, là où les utilisateurs pourrons uploader. Nous traiterons ce cas simple à titre d'exemple; il est possible par la suite d'ajouter des partitions. 

Partition 1: &lt;br&gt;
* nom: '''sdb5'''
* rôle: propose des médias en lecture seule. 
* contenu: '''trois répertoires de stockage, comme /logiciel, /film, /musique'''
&lt;br&gt;
Partition 2:
* nom: '''sdb6'''
* rôle: espace dédié à la lecture écriture. 
* contenu: '''un répertoire de stockage servant aux dépôts des utilisateurs, /depot'''

créons les répertoires nécessaires au montage de l'arborescence. Ceux sur lesquels seront montés les partitions...
&lt;code bash&gt;cd /mnt/
mkdir data
mkdir depot&lt;/code&gt;

...et ajoutons ces lignes au fichier [[Fstab|''/etc/fstab'']] pour monter les partitions au démarrage.
&lt;code bash&gt;#disques de stockage
/dev/sdb5       /mnt/data ext3  user,rw,exec 0  0
/dev/sdb6       /mnt/depot ext3  user,rw,exec 0  0
&lt;/code&gt;

Il faut maintenant intégrer les répertoires à la racine des deux partition à l’arborescence du ftp. Ceci se fait  avec la puissante option ''bind'' du fichier ''/etc/fstab''. 
Créons les répertoires cibles qui seront à la racine du ftp.
&lt;code bash&gt;
cd /home/common/
mkdir ftp
cd ftp
mkdir logiciel; mkdir film; mkdir musique; mkdir depot
&lt;/code&gt;

Puis ajoutons ces lignes au fichier ''fstab'' afin de monter l'arborescence au démarrage du serveur:
&lt;code bash&gt;#répertoires ftp avec option bind
/mnt/data/logiciel     /home/common/ftp/logiciel none bind 0 0
/mnt/data/film      /home/common/ftp/film none bind 0 0
/mnt/data/musique     /home/common/ftp/musique none bind 0 0
/mnt/depot/depot      /home/common/ftp/depot none bind 0 0&lt;/code&gt;

Vérifier enfin si l'arborescence est correctement montée après redémarrage.
&lt;code bash&gt;shutdown -r now&lt;/code&gt;

== Gestion des droits de l'arborescence de pure-ftp ==

Dans notre cas, les utilisateurs auront tous les mêmes droits: droit en lecture sur toute l'arborescence (sauf répertoire ''lost+find'' ) et droit en écriture dans le répertoire ''depot''. Nous allons donc créer un nouvel utilisateur dans Debian muni de ces droits.

Pour ce faire on tape ce code:
&lt;code bash&gt;adduser pureftpd&lt;/code&gt;
puis on répond aux questions ainsi: '''''&lt;pureftpd&gt;, &lt;pureftpd&gt;, &lt;pure-ftp&gt;, &lt;vide&gt;, &lt;vide&gt;, &lt;vide&gt;, &lt;vide&gt;, o'''''
En consultant le fichier ''/etc/passwd'', on peut relever l'Uid et le Gid de ce nouvel utilisateur. 
&lt;code bash&gt;
cat /etc/passwd
&lt;/code&gt;
'''Si l'utilisateur ''pureftpd'' est le deuxième à être créé, il lui est attribué les valeurs :Uid=''1001'' et Gid=''1001'''''. Ces valeurs serviront au moment des créations de compte ftp. Chaque compte paramétré avec ces Uid,Gid sera vu par le serveur comme le compte ''pureftpd''.

Cette commande change le propriétaire du répertoire'' /mnt/depot'' de manière récursive. Le propriétaire devient l'utilisateur ''pureftpd'', et le groupe ''root''. Cela autorise l'écriture pour l'utilisateur du ftp.
&lt;code bash&gt;chown -R pureftpd:root /mnt/depot&lt;/code&gt;

Si on s’arrête là, les utilisateurs ont accès au répertoire ''lost+found''. Ça n'est pas très propre. On corrige ce défaut avec la ligne suivante qui change le propriétaire de ''lost+found'' et le restitue au l'utilisateur ''root'' du groupe ''root''.
&lt;code bash&gt;chown root:root /mnt/depot/lost+found&lt;/code&gt;

== Préparation de l'installation, compilation et installation ==

D'abord nous allons télécharger les fichiers sources et les décompresser. Sur la page http://download.pureftpd.org/pub/pure-ftpd/releases/   est recensé les différentes version du logiciel. 
&lt;code bash&gt;wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.36.tar.gz&lt;/code&gt;
on décompresse ensuite l'archive obtenue.
&lt;code bash&gt;tar zxvf pure-ftpd-1.0.36.tar.gz&lt;/code&gt;

Après lecture de la doc officielle,    http://download.pureftpd.org/pure-ftpd/doc/README , on installe les dépendances du logiciel:
&lt;code bash&gt;
aptitude install libmysqlclient-dev libssl-dev build-essential&lt;/code&gt;

Puis on choisi les options de compilation qui nous intéresseront:
* --with-tls : permet d'utiliser ce type de chiffrement
* --with-certfile=/home/nomdedomaine.pem : indique au compilateur l'emplacement du certificat de chiffrement. Vérifier que le certificat '''nomdedomaine.pem''' est présent à l'emplacement indiqué. 
* --with-ftpwho: active la commande &quot;ftp-who&quot;, pratique pour vérifier l'activité en temps réel
* --with-language=french: défini le français comme langue 
* --with-mysql : les utilisateurs seront stocké dans une base MySQL
* --with-cookie : permet d'utiliser un fichier fortunefile pour que le serveur affiche une phrase d'acceuil 
* --with-altlog: permet la journalisation dans différents formats, ceci sera utile plus tard au moment du monitoring.

On se place alors dans le répertoire des fichiers sources
&lt;code bash&gt;cd pure-ftpd-1.0.36&lt;/code&gt;
et on lance la compilation avec les options voulues:
&lt;code bash&gt;./configure --with-tls --with-certfile=/home/nomdedomaine.pem --with-ftpwho --with-language=french --with-mysql --with-cookie --with-altlog&lt;/code&gt;
Si tout s'est bien passé, on termine l’installation par un 
&lt;code bash&gt;make&lt;/code&gt;
puis enfin
&lt;code bash&gt;make install&lt;/code&gt;

== Paramétrage MySQL ==

Il faut maintenant configurer l'accès à la base d'authentification. Concentrons nous d'abord sur le fichier de configuration ''/etc/pure-ftpd/db/mysql.conf''.

Modifier ces lignes comme ceci pour définir un utilisateur, son mot de passe et le nom de la base:
&lt;code bash&gt;# Mandatory : user to bind the server as.
MYSQLUser       pureftpd

# Mandatory : user password. You must have a password.
MYSQLPassword   pureftpd

# Mandatory : database to open.
MYSQLDatabase   pureftpd&lt;/code&gt;

et, pour maintenir un chiffrement des mot de passe tout en rendement possible la liaison que l'on aura a effectuer plus tard entre PhpBB et Pure-FTP, en choisi un chiffrement en md5:
&lt;code bash&gt;# Mandatory : how passwords are stored
# Valid values are : &quot;cleartext&quot;, &quot;crypt&quot;, &quot;md5&quot; and &quot;password&quot;
# (&quot;password&quot; = MySQL password() function)
# You can also use &quot;any&quot; to try &quot;crypt&quot;, &quot;md5&quot; *and* &quot;password&quot;
MYSQLCrypt      md5&lt;/code&gt;

Après ces changements on laisse le fichier  ''mysql.conf''.

Reste a créer la base. facile avec PhpMyAdmin.

* nom de la base : '''''pureftpd'''''
* nom de la table : '''''pureftpd'''''
* Nombre de colonnes : 12

{| class=&quot;wikitable&quot;
|+ Paramètres de la base pureftpd
! paramètre
! Type de variable
|-
| Nom  
| ''type''
|-
| User  
| ''varchar(16)''
|-
| status  
| ''enum''
|-
| Password  
| ''varchar(64)''
|-
| Uid  
| ''varchar(11)''
|-
| Gid  
| ''varchar(11)''
|-
| Dir  
| ''varchar(128)''
|-
| ULBandwidth  
| ''smallint(5)''
|-
| DLBandwidth  
| ''smallint(5)''
|-
| comment  
| ''tinytext''
|-
| ipaccess  
| ''varchar(15) ''
|-
| QuotaSize  
| ''smallint(5)''
|-
| QuotaFiles  
| ''int(11)''
|-
|}

Pour finir, dans PhpMyAdmin, on créé un utilisateur '''''pureftpd''''', mot de passe  '''''pureftpd''''',  avec tout les droits sur la table, « tout cocher ».

== Écriture et intégration d'un script de lancement du démon Pure-ftpd ==

Par soucis de commodité nous créons ce script dans le Bureau de l'utilisateur principal et nous le nommons ''pure-ftpd-startupscript''. 
&lt;code bash&gt;cd /hom/denis/Bureau
nano pure-ftpd-startupscript&lt;/code&gt;
Ce petit script comportera quatre lignes, la plus importante étant la ligne de commande de lancement de Prure-ftpd avec ses options. Ces trois autres lignes sont triviales:
&lt;code bash&gt;#!/bin/bash
echo &quot;lancement du daemon pure-ftpd&quot;

echo &quot;Fin du lancement de Pure-ftpd&quot;&lt;/code&gt;
On les colle dans ''pure-ftpd-startupscript'' et on enregistre les changements. 

Le démon Pure-ftpd se lance via une ligne de commande qui est très puissante. Optimiser au mieux les options de cette ligne de commande nous permettra d'avoir un Pure-ftpd &quot;sur mesure&quot;. La doc à consulter est toujours : http://download.pureftpd.org/pub/pure-ftpd/doc/README. 

Voici un résumé des options qui nous intéressent le plus :

* -c: nombre de clients simultanées. '''Dans notre cas on peut par exemple fixer la valeur à ''50''.'''
* -A: Chroot everyone. 
* -B: en background (daemonization)
* -C: nombre maximum de connexions par client. '''Choisir une valeur assez basse, par exemple ''3'', par mesure de sécurité, pour éviter qu'un utilisateur ne monopolise la bande passante montante du serveur. '''
* -E: n'autorise que les utilisateurs authentifiés, interdit les connexions anonymes
* -F: Fortune files, message d’accueil. '''Dans notre cas il se trouve ici : ''/home/common/fortunefile'''''
* -G: interdit le renommage
* -K: autorise l'utilisateur à reprendre un upload mais lui interdit de l'effacer ou de le renommer
* -l: méthode d'authentification et chemin vers le fichier de config de l'authentification. '''Dans notre cas, on active l'authentification msyql et on précise le chemin du fichier config comme ceci: ''mysql:/etc/pure-ftpd/db/mysql.conf'''''
* -O:  Enregistre tout les transferts de fichiers dans un fichier journal particulier, dans un format alternatif. Quatre formats sont supportés:  CLF (Apache-like), Stats, W3C and xferlog. '''Ici on peut rendre les logs de Pure-ftpd exploitables par AWStats avec la variable ''clf:/var/log/transfer.log'' .'''
* -p: ports du mode passif . '''On choisi par exemple la plage de port ''34343:34443''.'''
* -R: empêche les utilisateurs d'utiliser chmod
* -Y: à 2, active l'explicite TLS

On obtiens donc la ligne de commande suivante:
&lt;code bash&gt;/usr/local/sbin/pure-ftpd -c 50 -A -B -C 3 -E -F /home/common/fortunefile -G -K -l mysql:/etc/pure-ftpd/db/mysql.conf -O clf:/var/log/transfer.log -p 34343:34443 -R -Y 2 &amp;&lt;/code&gt;
/!\ La rédaction de cette ligne de commande nécessite de la minutie. Il suffit d'une majuscule confondue avec une minuscule, un espace d'oublié pour générer une erreur. Les erreurs non fatales ne seront pas toujours signalées par un message d'erreur, mais le démon ne se lancera sans activer l'option erronée. Prudence donc. /!\

La version finale du fichier ''pure-ftpd-startupscript'' est donc:
&lt;code bash&gt;#!/bin/bash
echo &quot;lancement du daemon pure-ftpd&quot;
/usr/local/sbin/pure-ftpd -c 50 -A -B -C 3 -E -F /home/common/fortunefile -G -K -l mysql:/etc/pure-ftpd/db/mysql.conf -O clf:/var/log/transfer.log -p 34343:34443 -R -Y 2 &amp;
echo &quot;Fin du lancement de Pure-ftpd&quot;&lt;/code&gt;
Rendre ce script executable:
&lt;code bash&gt;chmod +x  pure-ftpd-startupscript&lt;/code&gt;
L'intégration s'achève par l'ajout du lancement à la séquence de démarrage du serveur:
&lt;code bash&gt; 
cp  pure-ftpd-startupscript /etc/init.d
update-rc.d pure-ftpd-startupscript defaults &lt;/code&gt;

== Dernier réglage: message d’accueil ==


Le dernier réglage concerne le message d'acceuil. Il suffit de créer le fichier''/home/common/fortunefile'' et y enregistrer un texte de bienvenue.
&lt;code bash&gt;BIENVENUE sur le serveur FTP monsite.net&lt;/code&gt;

Le paramétrage est enfin fini. Passons à l'étape palpitante des tests. 

== Tester le fonctionnement de Pure-ftpd ==

Premier réflexe, redémarrer le système pour prendre en compte tout les réglages.
&lt;code bash&gt;shutdown -r now&lt;/code&gt;

Nous allons maintenant créer un compte de test. Plus haut nous avons paramétré Pure-ftp pour que le stockage du mot de passe sous forme de hash MD5. Nous avons donc besoin de calculer le hash MD5 du compte test. De nombreux sites internet proposent de le faire en ligne, dont celui ci: http://www.md5hashgenerator.com/index.php

* mot de passe: '''''test'''''
* hash md5: '''''098f6bcd4621d373cade4e832627b4f6 '''''

Ouvrons une session PhPMyAdmin et ouvrons la table ''pureftpd'' de la base ''pureftpd''. Insérons une nouvelle ligne à remplir avec ces valeurs:

{| class=&quot;wikitable&quot;
|+ Paramètres du compte &quot;test&quot;
! paramètre
! variable
|-
| User / varchar(16) 
| '''test'''
|-
| status / enum 
| '''0'''
|-
| Password / varchar(64)
| '''098f6bcd4621d373cade4e832627b4f6 '''
|-
| Uid / varchar(11)
| '''1001'''
|-
| Gid / varchar(11)
| '''1001'''
|-
| Dir / varchar(128)
| '''/home/common/ftp'''
|-
| ULBandwidth / smallint(5)
| '''0'''
|-
| DLBandwidth / smallint(5
| '''0'''
|-
| comment / tinytext
| '''&lt;vide&gt;'''
|-
| ipccess / varchar(15)
|''' *'''
|-
| QuotaSize / smallint(5)
| '''0'''
|-
| QuotaFiles / int(11)
| '''0'''
|-
|}


Enregistrons cet utilisateur test. 
Le moment fatidique approche. A partir d'un poste du réseau local, ouvrons  notre logiciel client FTP et paramétrons une nouvelle connexion ainsi:
{| class=&quot;wikitable&quot;
|+ Paramètres du compte &quot;test&quot; coté client ftp
! paramètre
! variable
|-
| Hôte 
| '''&lt;adresse IP local du serveur FTP&gt;'''
|-
| Port 
| '''21'''
|-
| Protocole 
| '''FTP'''
|-
| Chiffrement 
| '''Connexion FTP explicite sur TLS'''
|-
| Identifiant 
|''' test'''
|-
| mot de passe 
| '''test'''
|-
|}
Connectons nous maintenant au serveur ftp avec cette connexion. Si tout ce passe bien, on reçoit le certificat de sécurité qu'on doit valider, puis la connexion s'effectue, le message d’accueil s'affiche dans la console. La connexion établie, on peut lire tout les dossiers et uploader dans le dossier ''/depot''.

== Conclusion ==

Une fois le système opérationnel, les utilisateurs ont un accès chiffré à votre serveur ftp. Le fait de gérer les comtpe sur une base MySQL permet aussi bien d'enregistrer des comptes automatiquement avec un code php que de les paramétrer manuellement en passant par PhpMyAdmin. Cependant, un problème de sécurité demeure: les mots de passe les plus faibles, stockés sous forme de hash MD5, ne résisterons pas au crackage.</text>
      <sha1>0t31avnc5aqkhakz0k22vqparfuocn7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5769</id>
      <parentid>5768</parentid>
      <timestamp>2014-08-20T05:24:50Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Tester le fonctionnement de Pure-ftpd */ chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="14546">Pure-FTP est l'un des meilleurs logiciels serveur FTP, un excellent choix pour transférer des fichiers. Son niveau de sécurité est très bon, le paramétrage puissant. La prise en charge du SSL nous permettra de chiffrer les données transitant par Internet. Le fait qu'on puisse gérer les comptes grâce à une table MySQL sera très pratique pour automatiser plus tard la création des comptes. 

== Prérequis ==

*Deux partitions dédiées au stockage et l'écriture des données. 
*Un certificat de sécurité
*Apache, MySQL, PhpMyAdmin
*plusieurs heures devant soi et du courage 

En avant !

== Structure de l'arborescence du FTP ==

Avant de se lancer dans l'installation du FTP, il faut s’interroger sur la structure qu'aura l' arborescence du FTP. Si l'on souhaite partager des médias, le plus simple est de dédier (au moins) une partition de grande taille à la lecture et d'ajouter une seconde partition plus petite dédiée à l'écriture, là où les utilisateurs pourrons uploader. Nous traiterons ce cas simple à titre d'exemple; il est possible par la suite d'ajouter des partitions. 

Partition 1: &lt;br&gt;
* nom: '''sdb5'''
* rôle: propose des médias en lecture seule. 
* contenu: '''trois répertoires de stockage, comme /logiciel, /film, /musique'''
&lt;br&gt;
Partition 2:
* nom: '''sdb6'''
* rôle: espace dédié à la lecture écriture. 
* contenu: '''un répertoire de stockage servant aux dépôts des utilisateurs, /depot'''

créons les répertoires nécessaires au montage de l'arborescence. Ceux sur lesquels seront montés les partitions...
&lt;code bash&gt;cd /mnt/
mkdir data
mkdir depot&lt;/code&gt;

...et ajoutons ces lignes au fichier [[Fstab|''/etc/fstab'']] pour monter les partitions au démarrage.
&lt;code bash&gt;#disques de stockage
/dev/sdb5       /mnt/data ext3  user,rw,exec 0  0
/dev/sdb6       /mnt/depot ext3  user,rw,exec 0  0
&lt;/code&gt;

Il faut maintenant intégrer les répertoires à la racine des deux partition à l’arborescence du ftp. Ceci se fait  avec la puissante option ''bind'' du fichier ''/etc/fstab''. 
Créons les répertoires cibles qui seront à la racine du ftp.
&lt;code bash&gt;
cd /home/common/
mkdir ftp
cd ftp
mkdir logiciel; mkdir film; mkdir musique; mkdir depot
&lt;/code&gt;

Puis ajoutons ces lignes au fichier ''fstab'' afin de monter l'arborescence au démarrage du serveur:
&lt;code bash&gt;#répertoires ftp avec option bind
/mnt/data/logiciel     /home/common/ftp/logiciel none bind 0 0
/mnt/data/film      /home/common/ftp/film none bind 0 0
/mnt/data/musique     /home/common/ftp/musique none bind 0 0
/mnt/depot/depot      /home/common/ftp/depot none bind 0 0&lt;/code&gt;

Vérifier enfin si l'arborescence est correctement montée après redémarrage.
&lt;code bash&gt;shutdown -r now&lt;/code&gt;

== Gestion des droits de l'arborescence de pure-ftp ==

Dans notre cas, les utilisateurs auront tous les mêmes droits: droit en lecture sur toute l'arborescence (sauf répertoire ''lost+find'' ) et droit en écriture dans le répertoire ''depot''. Nous allons donc créer un nouvel utilisateur dans Debian muni de ces droits.

Pour ce faire on tape ce code:
&lt;code bash&gt;adduser pureftpd&lt;/code&gt;
puis on répond aux questions ainsi: '''''&lt;pureftpd&gt;, &lt;pureftpd&gt;, &lt;pure-ftp&gt;, &lt;vide&gt;, &lt;vide&gt;, &lt;vide&gt;, &lt;vide&gt;, o'''''
En consultant le fichier ''/etc/passwd'', on peut relever l'Uid et le Gid de ce nouvel utilisateur. 
&lt;code bash&gt;
cat /etc/passwd
&lt;/code&gt;
'''Si l'utilisateur ''pureftpd'' est le deuxième à être créé, il lui est attribué les valeurs :Uid=''1001'' et Gid=''1001'''''. Ces valeurs serviront au moment des créations de compte ftp. Chaque compte paramétré avec ces Uid,Gid sera vu par le serveur comme le compte ''pureftpd''.

Cette commande change le propriétaire du répertoire'' /mnt/depot'' de manière récursive. Le propriétaire devient l'utilisateur ''pureftpd'', et le groupe ''root''. Cela autorise l'écriture pour l'utilisateur du ftp.
&lt;code bash&gt;chown -R pureftpd:root /mnt/depot&lt;/code&gt;

Si on s’arrête là, les utilisateurs ont accès au répertoire ''lost+found''. Ça n'est pas très propre. On corrige ce défaut avec la ligne suivante qui change le propriétaire de ''lost+found'' et le restitue au l'utilisateur ''root'' du groupe ''root''.
&lt;code bash&gt;chown root:root /mnt/depot/lost+found&lt;/code&gt;

== Préparation de l'installation, compilation et installation ==

D'abord nous allons télécharger les fichiers sources et les décompresser. Sur la page http://download.pureftpd.org/pub/pure-ftpd/releases/   est recensé les différentes version du logiciel. 
&lt;code bash&gt;wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.36.tar.gz&lt;/code&gt;
on décompresse ensuite l'archive obtenue.
&lt;code bash&gt;tar zxvf pure-ftpd-1.0.36.tar.gz&lt;/code&gt;

Après lecture de la doc officielle,    http://download.pureftpd.org/pure-ftpd/doc/README , on installe les dépendances du logiciel:
&lt;code bash&gt;
aptitude install libmysqlclient-dev libssl-dev build-essential&lt;/code&gt;

Puis on choisi les options de compilation qui nous intéresseront:
* --with-tls : permet d'utiliser ce type de chiffrement
* --with-certfile=/home/nomdedomaine.pem : indique au compilateur l'emplacement du certificat de chiffrement. Vérifier que le certificat '''nomdedomaine.pem''' est présent à l'emplacement indiqué. 
* --with-ftpwho: active la commande &quot;ftp-who&quot;, pratique pour vérifier l'activité en temps réel
* --with-language=french: défini le français comme langue 
* --with-mysql : les utilisateurs seront stocké dans une base MySQL
* --with-cookie : permet d'utiliser un fichier fortunefile pour que le serveur affiche une phrase d'acceuil 
* --with-altlog: permet la journalisation dans différents formats, ceci sera utile plus tard au moment du monitoring.

On se place alors dans le répertoire des fichiers sources
&lt;code bash&gt;cd pure-ftpd-1.0.36&lt;/code&gt;
et on lance la compilation avec les options voulues:
&lt;code bash&gt;./configure --with-tls --with-certfile=/home/nomdedomaine.pem --with-ftpwho --with-language=french --with-mysql --with-cookie --with-altlog&lt;/code&gt;
Si tout s'est bien passé, on termine l’installation par un 
&lt;code bash&gt;make&lt;/code&gt;
puis enfin
&lt;code bash&gt;make install&lt;/code&gt;

== Paramétrage MySQL ==

Il faut maintenant configurer l'accès à la base d'authentification. Concentrons nous d'abord sur le fichier de configuration ''/etc/pure-ftpd/db/mysql.conf''.

Modifier ces lignes comme ceci pour définir un utilisateur, son mot de passe et le nom de la base:
&lt;code bash&gt;# Mandatory : user to bind the server as.
MYSQLUser       pureftpd

# Mandatory : user password. You must have a password.
MYSQLPassword   pureftpd

# Mandatory : database to open.
MYSQLDatabase   pureftpd&lt;/code&gt;

et, pour maintenir un chiffrement des mot de passe tout en rendement possible la liaison que l'on aura a effectuer plus tard entre PhpBB et Pure-FTP, en choisi un chiffrement en md5:
&lt;code bash&gt;# Mandatory : how passwords are stored
# Valid values are : &quot;cleartext&quot;, &quot;crypt&quot;, &quot;md5&quot; and &quot;password&quot;
# (&quot;password&quot; = MySQL password() function)
# You can also use &quot;any&quot; to try &quot;crypt&quot;, &quot;md5&quot; *and* &quot;password&quot;
MYSQLCrypt      md5&lt;/code&gt;

Après ces changements on laisse le fichier  ''mysql.conf''.

Reste a créer la base. facile avec PhpMyAdmin.

* nom de la base : '''''pureftpd'''''
* nom de la table : '''''pureftpd'''''
* Nombre de colonnes : 12

{| class=&quot;wikitable&quot;
|+ Paramètres de la base pureftpd
! paramètre
! Type de variable
|-
| Nom  
| ''type''
|-
| User  
| ''varchar(16)''
|-
| status  
| ''enum''
|-
| Password  
| ''varchar(64)''
|-
| Uid  
| ''varchar(11)''
|-
| Gid  
| ''varchar(11)''
|-
| Dir  
| ''varchar(128)''
|-
| ULBandwidth  
| ''smallint(5)''
|-
| DLBandwidth  
| ''smallint(5)''
|-
| comment  
| ''tinytext''
|-
| ipaccess  
| ''varchar(15) ''
|-
| QuotaSize  
| ''smallint(5)''
|-
| QuotaFiles  
| ''int(11)''
|-
|}

Pour finir, dans PhpMyAdmin, on créé un utilisateur '''''pureftpd''''', mot de passe  '''''pureftpd''''',  avec tout les droits sur la table, « tout cocher ».

== Écriture et intégration d'un script de lancement du démon Pure-ftpd ==

Par soucis de commodité nous créons ce script dans le Bureau de l'utilisateur principal et nous le nommons ''pure-ftpd-startupscript''. 
&lt;code bash&gt;cd /hom/denis/Bureau
nano pure-ftpd-startupscript&lt;/code&gt;
Ce petit script comportera quatre lignes, la plus importante étant la ligne de commande de lancement de Prure-ftpd avec ses options. Ces trois autres lignes sont triviales:
&lt;code bash&gt;#!/bin/bash
echo &quot;lancement du daemon pure-ftpd&quot;

echo &quot;Fin du lancement de Pure-ftpd&quot;&lt;/code&gt;
On les colle dans ''pure-ftpd-startupscript'' et on enregistre les changements. 

Le démon Pure-ftpd se lance via une ligne de commande qui est très puissante. Optimiser au mieux les options de cette ligne de commande nous permettra d'avoir un Pure-ftpd &quot;sur mesure&quot;. La doc à consulter est toujours : http://download.pureftpd.org/pub/pure-ftpd/doc/README. 

Voici un résumé des options qui nous intéressent le plus :

* -c: nombre de clients simultanées. '''Dans notre cas on peut par exemple fixer la valeur à ''50''.'''
* -A: Chroot everyone. 
* -B: en background (daemonization)
* -C: nombre maximum de connexions par client. '''Choisir une valeur assez basse, par exemple ''3'', par mesure de sécurité, pour éviter qu'un utilisateur ne monopolise la bande passante montante du serveur. '''
* -E: n'autorise que les utilisateurs authentifiés, interdit les connexions anonymes
* -F: Fortune files, message d’accueil. '''Dans notre cas il se trouve ici : ''/home/common/fortunefile'''''
* -G: interdit le renommage
* -K: autorise l'utilisateur à reprendre un upload mais lui interdit de l'effacer ou de le renommer
* -l: méthode d'authentification et chemin vers le fichier de config de l'authentification. '''Dans notre cas, on active l'authentification msyql et on précise le chemin du fichier config comme ceci: ''mysql:/etc/pure-ftpd/db/mysql.conf'''''
* -O:  Enregistre tout les transferts de fichiers dans un fichier journal particulier, dans un format alternatif. Quatre formats sont supportés:  CLF (Apache-like), Stats, W3C and xferlog. '''Ici on peut rendre les logs de Pure-ftpd exploitables par AWStats avec la variable ''clf:/var/log/transfer.log'' .'''
* -p: ports du mode passif . '''On choisi par exemple la plage de port ''34343:34443''.'''
* -R: empêche les utilisateurs d'utiliser chmod
* -Y: à 2, active l'explicite TLS

On obtiens donc la ligne de commande suivante:
&lt;code bash&gt;/usr/local/sbin/pure-ftpd -c 50 -A -B -C 3 -E -F /home/common/fortunefile -G -K -l mysql:/etc/pure-ftpd/db/mysql.conf -O clf:/var/log/transfer.log -p 34343:34443 -R -Y 2 &amp;&lt;/code&gt;
/!\ La rédaction de cette ligne de commande nécessite de la minutie. Il suffit d'une majuscule confondue avec une minuscule, un espace d'oublié pour générer une erreur. Les erreurs non fatales ne seront pas toujours signalées par un message d'erreur, mais le démon ne se lancera sans activer l'option erronée. Prudence donc. /!\

La version finale du fichier ''pure-ftpd-startupscript'' est donc:
&lt;code bash&gt;#!/bin/bash
echo &quot;lancement du daemon pure-ftpd&quot;
/usr/local/sbin/pure-ftpd -c 50 -A -B -C 3 -E -F /home/common/fortunefile -G -K -l mysql:/etc/pure-ftpd/db/mysql.conf -O clf:/var/log/transfer.log -p 34343:34443 -R -Y 2 &amp;
echo &quot;Fin du lancement de Pure-ftpd&quot;&lt;/code&gt;
Rendre ce script executable:
&lt;code bash&gt;chmod +x  pure-ftpd-startupscript&lt;/code&gt;
L'intégration s'achève par l'ajout du lancement à la séquence de démarrage du serveur:
&lt;code bash&gt; 
cp  pure-ftpd-startupscript /etc/init.d
update-rc.d pure-ftpd-startupscript defaults &lt;/code&gt;

== Dernier réglage: message d’accueil ==


Le dernier réglage concerne le message d'acceuil. Il suffit de créer le fichier''/home/common/fortunefile'' et y enregistrer un texte de bienvenue.
&lt;code bash&gt;BIENVENUE sur le serveur FTP monsite.net&lt;/code&gt;

Le paramétrage est enfin fini. Passons à l'étape palpitante des tests. 

== Tester le fonctionnement de Pure-ftpd ==

Premier réflexe, redémarrer le système pour prendre en compte tout les réglages.
&lt;code bash&gt;shutdown -r now&lt;/code&gt;

Nous allons maintenant créer un compte de test. Plus haut nous avons paramétré Pure-ftp pour que le stockage du mot de passe sous forme de hash MD5. Nous avons donc besoin de calculer le hash MD5 du compte test. De nombreux sites internet proposent de le faire en ligne, dont celui ci: http://www.md5hashgenerator.com/index.php

* mot de passe: '''''test'''''
* hash md5: '''''098f6bcd4621d373cade4e832627b4f6 '''''

Ouvrons une session PhPMyAdmin et ouvrons la table ''pureftpd'' de la base ''pureftpd''. Insérons une nouvelle ligne à remplir avec ces valeurs:

{| class=&quot;wikitable&quot;
|+ Paramètres du compte &quot;test&quot;
! paramètre
! variable
|-
| User / varchar(16) 
| '''test'''
|-
| status / enum 
| '''0'''
|-
| Password / varchar(64)
| '''098f6bcd4621d373cade4e832627b4f6 '''
|-
| Uid / varchar(11)
| '''1001'''
|-
| Gid / varchar(11)
| '''1001'''
|-
| Dir / varchar(128)
| '''/home/common/ftp'''
|-
| ULBandwidth / smallint(5)
| '''0'''
|-
| DLBandwidth / smallint(5
| '''0'''
|-
| comment / tinytext
| '''&lt;vide&gt;'''
|-
| ipccess / varchar(15)
|''' *'''
|-
| QuotaSize / smallint(5)
| '''0'''
|-
| QuotaFiles / int(11)
| '''0'''
|-
|}


Enregistrons cet utilisateur test. 
Le moment fatidique approche. A partir d'un poste du réseau local, ouvrons  notre logiciel client FTP et paramétrons une nouvelle connexion ainsi:
{| class=&quot;wikitable&quot;
|+ Paramètres du compte &quot;test&quot; coté client ftp
! paramètre
! variable
|-
| Hôte 
| '''&lt;adresse IP local du serveur FTP&gt;'''
|-
| Port 
| '''21'''
|-
| Protocole 
| '''FTP'''
|-
| Chiffrement 
| '''Connexion FTP explicite sur TLS'''
|-
| Identifiant 
|''' test'''
|-
| mot de passe 
| '''test'''
|-
|}
Connectons nous maintenant au serveur ftp avec cette connexion. Si tout ce passe bien, on reçoit le certificat de sécurité qu'on doit valider, puis la connexion s'effectue, le message d’accueil s'affiche dans la console. La connexion établie, on peut lire tout les répertoires et uploader dans le répertoire ''/depot''.

== Conclusion ==

Une fois le système opérationnel, les utilisateurs ont un accès chiffré à votre serveur ftp. Le fait de gérer les comtpe sur une base MySQL permet aussi bien d'enregistrer des comptes automatiquement avec un code php que de les paramétrer manuellement en passant par PhpMyAdmin. Cependant, un problème de sécurité demeure: les mots de passe les plus faibles, stockés sous forme de hash MD5, ne résisterons pas au crackage.</text>
      <sha1>dpnbadtq74pd66vbkw9nxp8ehoot42u</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Installation de Redmine sur squeeze - The Debian way!</title>
    <ns>0</ns>
    <id>933</id>
    <redirect title="Installation de Gitosis et RedMine sur squeeze - The Debian way!" />
    <revision>
      <id>3869</id>
      <timestamp>2012-03-05T07:45:51Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <comment>a déplacé [[Installation de Redmine sur squeeze - The Debian way!]] vers [[Installation de Gitosis et RedMine sur squeeze - The Debian way!]] : Ajout de Gitosis</comment>
      <text xml:space="preserve" bytes="81">#REDIRECTION [[Installation de Gitosis et RedMine sur squeeze - The Debian way!]]</text>
      <sha1>ftvsuhcgekf38vogb86neivdeg55g67</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Installation de squeeze avec une businesscard</title>
    <ns>0</ns>
    <id>886</id>
    <revision>
      <id>3626</id>
      <timestamp>2011-12-05T06:47:16Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « = Installation de squeeze avec une businesscard = Ce document, au travers de captures d'écrans, détaillera pas-à-pas (de façon sommaire) l'installation d'une Debian Squee... »</comment>
      <text xml:space="preserve" bytes="8517">= Installation de squeeze avec une businesscard =
Ce document, au travers de captures d'écrans, détaillera pas-à-pas (de façon sommaire) l'installation d'une Debian Squeeze à partir d'une image iso &quot;businesscard&quot;
   
== Prérequis ==

Téléchargement de l'image iso &quot;businesscard&quot; Choisissez la businesscard (en mode expert) si vous souhaitez pouvoir choisir votre distribution (stable/testing/instable) Vous pourrez également choisir votre window manager (gnome, kde, lxde, xfce) Choisissez l'image en fonction de votre machine : i386 ou amd64 en général


$ wget -c http://cdimage.debian.org/debian-cd/6.0.1a/amd64/iso-cd/debian-6.0.1a-amd64-businesscard.iso

''Il va de soit qu'il faut adapter le choix de l'image à votre matériel
''
Vérifiez votre image iso à l'aide de md5sum

Gravez l'image sur un CD(-RW).
== Installation ==

Modifier votre bios pour que votre machine démarre sur le lecteur de CD/DVD Insérez le disque dans le lecteur et démarrez sur le CD
== Page d'accueil et choix de la méthode d'installation ==

Un menu s'offre à vous :
=== Installation ===

    * Install
    * Graphical install
    * Advanced options
    * Help 
 
    
==== Install ====

Ce choix installera (presque) automatiquement une Debian Squeeze avec les options &quot;standards&quot;
==== Graphical install ====

Même chose que le choix ci-dessus, mais avec une interface graphique. Peut s'avérer moins fiable, en fonction de votre matériel.
==== Advanced options ====

C'est dans cette direction que nous allons...
==== Help ====

Divers fichiers d'aide sur les &quot;pré-requis&quot; à l'installation, les paramètres à passer au boot pour les machines un peu &quot;spéciales&quot;


== Exemple pour l'installation ==


La taille des partitions

http://pix.isalo.org/?img=1315166185.png

== Installer boot menu ==

1[[Fichier:1.PNG|120px|commentaire]]

Le menu suivant offre des choix intéressants :

    * Back...
    * Expert Install 

C'est cette option que nous choisirons, c'est celle qui laisse le plus de contrôle sur l'installation

    * Rescue mode 

Très utile si un jour votre machine ne démarre pas (cela permet de faire un chroot sur le système pour des réparations... Grub par exemple) Permet d'ouvrir un shell sur la partition système.

    * Automated install 

Comme son nom l'indique, une installation automatique où vous n'interviendrez presque pas Identique au choix Install de la première page.

    * Graphical expert install 

Identique à &quot;Expert install&quot; mais en mode graphique

    * Graphical rescue mode 

Identique à &quot;Rescue mode&quot; mais en mode graphique

    * Graphical automated install 

Identique à &quot;Automated install&quot; mais en mode graphique

    * Alternative desktop environments 

Option intéressante si vous souhaitez installer un autre bureau que Gnome (KDE, LXDE, XFCE). Vous retrouverez dans les sous-menus l'ensemble des choix offerts ici.

2[[Fichier:2.PNG|120px|commentaire]]

== Choisir la langue ==

Ici pour des raisons pratiques, je conseilles un miroir Français.(à adapter suivant vos besoins)

3[[Fichier:3.PNG|120px|commentaire]] 4[[Fichier:4.PNG|120px|commentaire]] 5[[Fichier:5.PNG|120px|commentaire]] 6[[Fichier:6.PNG|120px|commentaire]]7[[Fichier:7.PNG|120px|commentaire]]


== Choisir la disposition du clavier ==


8[[Fichier:8.PNG|120px|commentaire]] 9[[Fichier:9.PNG|120px|commentaire]] 10[[Fichier:10.PNG|120px|commentaire]]


== Détecter et monter le CD ==


11[[Fichier:12.PNG|120px|commentaire]]

Activer l'usb ? Laissez le choix par défaut : oui

12[[Fichier:13.PNG|120px|commentaire]]

pcmcia ? Cela dépendra de votre machine... Inutile de démarrer ces services si vous n'en avez pas ! La question vous sera reposée à chaque fois qu'une détection de matériel est nécessaire.

13[[Fichier:14.PNG|120px|commentair ]] 14[[Fichier:15.PNG|120px|commentaire]]


== Charger des composants d'installation à partir du CD ==


Bien que je n'ai choisi aucune des options de cette liste, je vous détaille rapidement quelques choix :

Peu de mémoire vive (lowmem) Connexion ppp (par modem) rescue mode support ntfs wireless tools

15[[Fichier:16.PNG|120px|commentaire]] 16[[Fichier:17.PNG|120px|commentaire]] 17[[Fichier:18.PNG|120px|commentaire]] 


==  Détecter le matériel réseau ==


19[[Fichier:20.PNG|120px|commentaire]]


== Configurer le réseau ==


Généralement vous êtes derrière un routeur ou une &quot;box&quot; qui doit vous fournir une adresse IP. Vous laisserez donc l'option DHCP.

21[[Fichier:21.PNG|120px|commentaire]] 22[[Fichier:22.PNG|120px|commentaire]]

Nom de la machine :

23[[Fichier:23.PNG|120px|commentaire]]

Nom du domaine. Il doit vous être fourni par le serveur DHCP. Si ce n'est pas le cas, laissez vide

24[[Fichier:24.PNG|120px|commentaire]]


== Choisir un miroir de l'archive Debian==


25[[Fichier:25.PNG|120px|commentaire]]

Choisissez un miroir pour récupérer les paquets. Inutile que vos paquets fassent 12.000 Km, choisissez un miroir proche de chez vous.

26[[Fichier:26.PNG|120px|commentaire]] 27[[Fichier:27.PNG|120px|commentaire]] 28[[Fichier:28.PNG|120px|commentaire]]

A compléter si vous avez un proxy 

29[[Fichier:29.PNG|120px|commentaire]] ]

* Un des points forts de la &quot;businesscard&quot; par rapport à une &quot;netinstall&quot;, le choix de la branche !

31[[Fichier:31.PNG|120px|commentaire]] 32[[Fichier:32.PNG|120px|commentaire]] 33[[Fichier:33.PNG|120px|commentaire]]


== Créer les utilisateurs et les mots de passe. ==


''Bien prendre note de la syntaxe exacte des noms et, des mots de passe''

34[[Fichier:34.PNG|120px|commentaire]] 35[[Fichier:35.PNG|120px|commentaire]] 36[[Fichier:36.PNG|120px|commentaire]] 37[[Fichier:37.PNG|120px|commentaire]] 38[[Fichier:38.PNG|120px|commentaire]]39[[Fichier:39.PNG|120px|commentaire]] 40[[Fichier:40.PNG|120px|commentaire]] 41[[Fichier:41.PNG|120px|commentaire]] 42[[Fichier:42.PNG|120px|commentaire]] 43[[Fichier:43.PNG|120px|commentaire]]

== Configurer l'horloge ==

44[[Fichier:44.PNG|120px|commentaire]] 45[[Fichier:45.PNG|120px|commentaire]] 46[[Fichier:46.PNG|120px|commentaire]] 47[[Fichier:47.PNG|120px|commentaire]]


== Détecter les disques ==


48[[Fichier:48.PNG|120px|commentaire]]


== Partitionner les disques ==


Il s'agit de la configuration la plus simple:

je fais une parenthèse qui peut intéresser certaines configurations manuelles.

La taille est approximative, et devrait convenir à ceux qui veulent une machine de bureau avec un peu de confort

Le [ /boot ] 50mb suffisent (100 mb c'est mieux) - Séparer la partition /boot n'est pas une nécessaire.

La racine [ / ] 3 GIB (10 GB pour un bureaux)

Le répertoire des utilisateur [ /home ] 

49[[Fichier:49.PNG|120px|commentaire]]

Plus d'informations sur le partitionnement. (adjoindre un lien interne)

51[[Fichier:51.PNG|120px|commentaire]] 52[[Fichier:52.PNG|120px|commentaire]]

'''Il est très fortement conseillé de séparer cette partition'''

53[[Fichier:53.PNG|120px|commentaire]] 54[[Fichier:54.PNG|120px|commentaire]] 55[[Fichier:55.PNG|120px|commentaire]]


== Installer le système de base ==


57[[Fichier:57.PNG|120px|commentaire]] 58[[Fichier:58.PNG|120px|commentaire]] 61[[Fichier:61.PNG|120px|commentaire]] 62[[Fichier:62.PNG|120px|commentaire]] 63[[Fichier:63.PNG|120px|commentaire]]


== Configurer l'outil de gestion des paquets ==


64[[Fichier:64.PNG|120px|commentaire]] 65[[Fichier:65.PNG|120px|commentaire]]

Vous pouvez à ce stade choisir d'utiliser des logiciel non-libre, ou pas !

66[[Fichier:66.PNG|120px|commentaire]] 67[[Fichier:67.PNG|120px|commentaire]] 68[[Fichier:68.PNG|120px|commentaire]] 


== Choisir et installer des logiciels ==


70[[Fichier:70.PNG|120px|commentaire]]

Il est possible de participer à une études statistique sur l'utilisation des paquets, ou pas !

71[[Fichier:71.PNG|120px|commentaire]] 72[[Fichier:72.PNG|120px|commentaire]] 73[[Fichier:73.PNG|120px|commentaire]]


== Installer le programme de démarrage Grub sur un disque dur ==


74[[Fichier:74.PNG|120px|commentaire]] 75[[Fichier:75.PNG|120px|commentaire]]


== Terminer l'installation ==


76[[Fichier:76.PNG|120px|commentaire]] 77[[Fichier:77.PNG|120px|commentaire]] 78[[Fichier:78.PNG|120px|commentaire]]


== Démarrer votre nouveau système  ==


79[[Fichier:79.PNG|120px|commentaire]] 80[[Fichier:80.PNG|120px|commentaire]] 82[[Fichier:82.PNG|120px|commentaire]]

Cet article à été inspiré de http://www.isalo.org/wiki.debian-fr/index.php?title=Installer_Debian_pas-%C3%A0-pas

----
[[Utilisateur:Terix|Terix]] 05 décembre 2011 à 06:46 (UTC)</text>
      <sha1>6odnjsoj5n0blzznkau0uvl1btx8kb4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3630</id>
      <parentid>3626</parentid>
      <timestamp>2011-12-05T10:14:42Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Prérequis */</comment>
      <text xml:space="preserve" bytes="8517">= Installation de squeeze avec une businesscard =
Ce document, au travers de captures d'écrans, détaillera pas-à-pas (de façon sommaire) l'installation d'une Debian Squeeze à partir d'une image iso &quot;businesscard&quot;
   
== Prérequis ==

Téléchargement de l'image iso &quot;businesscard&quot; Choisissez la businesscard (en mode expert) si vous souhaitez pouvoir choisir votre distribution (stable/testing/instable) Vous pourrez également choisir votre window manager (gnome, kde, lxde, xfce) Choisissez l'image en fonction de votre machine : i386 ou amd64 en général


$ wget -c http://cdimage.debian.org/debian-cd/6.0.1a/amd64/iso-cd/debian-6.0.1a-amd64-businesscard.iso

''Il va de soi qu'il faut adapter le choix de l'image à votre matériel
''
Vérifiez votre image iso à l'aide de md5sum

Gravez l'image sur un CD(-RW).

== Installation ==

Modifier votre bios pour que votre machine démarre sur le lecteur de CD/DVD Insérez le disque dans le lecteur et démarrez sur le CD
== Page d'accueil et choix de la méthode d'installation ==

Un menu s'offre à vous :
=== Installation ===

    * Install
    * Graphical install
    * Advanced options
    * Help 
 
    
==== Install ====

Ce choix installera (presque) automatiquement une Debian Squeeze avec les options &quot;standards&quot;
==== Graphical install ====

Même chose que le choix ci-dessus, mais avec une interface graphique. Peut s'avérer moins fiable, en fonction de votre matériel.
==== Advanced options ====

C'est dans cette direction que nous allons...
==== Help ====

Divers fichiers d'aide sur les &quot;pré-requis&quot; à l'installation, les paramètres à passer au boot pour les machines un peu &quot;spéciales&quot;


== Exemple pour l'installation ==


La taille des partitions

http://pix.isalo.org/?img=1315166185.png

== Installer boot menu ==

1[[Fichier:1.PNG|120px|commentaire]]

Le menu suivant offre des choix intéressants :

    * Back...
    * Expert Install 

C'est cette option que nous choisirons, c'est celle qui laisse le plus de contrôle sur l'installation

    * Rescue mode 

Très utile si un jour votre machine ne démarre pas (cela permet de faire un chroot sur le système pour des réparations... Grub par exemple) Permet d'ouvrir un shell sur la partition système.

    * Automated install 

Comme son nom l'indique, une installation automatique où vous n'interviendrez presque pas Identique au choix Install de la première page.

    * Graphical expert install 

Identique à &quot;Expert install&quot; mais en mode graphique

    * Graphical rescue mode 

Identique à &quot;Rescue mode&quot; mais en mode graphique

    * Graphical automated install 

Identique à &quot;Automated install&quot; mais en mode graphique

    * Alternative desktop environments 

Option intéressante si vous souhaitez installer un autre bureau que Gnome (KDE, LXDE, XFCE). Vous retrouverez dans les sous-menus l'ensemble des choix offerts ici.

2[[Fichier:2.PNG|120px|commentaire]]

== Choisir la langue ==

Ici pour des raisons pratiques, je conseilles un miroir Français.(à adapter suivant vos besoins)

3[[Fichier:3.PNG|120px|commentaire]] 4[[Fichier:4.PNG|120px|commentaire]] 5[[Fichier:5.PNG|120px|commentaire]] 6[[Fichier:6.PNG|120px|commentaire]]7[[Fichier:7.PNG|120px|commentaire]]


== Choisir la disposition du clavier ==


8[[Fichier:8.PNG|120px|commentaire]] 9[[Fichier:9.PNG|120px|commentaire]] 10[[Fichier:10.PNG|120px|commentaire]]


== Détecter et monter le CD ==


11[[Fichier:12.PNG|120px|commentaire]]

Activer l'usb ? Laissez le choix par défaut : oui

12[[Fichier:13.PNG|120px|commentaire]]

pcmcia ? Cela dépendra de votre machine... Inutile de démarrer ces services si vous n'en avez pas ! La question vous sera reposée à chaque fois qu'une détection de matériel est nécessaire.

13[[Fichier:14.PNG|120px|commentair ]] 14[[Fichier:15.PNG|120px|commentaire]]


== Charger des composants d'installation à partir du CD ==


Bien que je n'ai choisi aucune des options de cette liste, je vous détaille rapidement quelques choix :

Peu de mémoire vive (lowmem) Connexion ppp (par modem) rescue mode support ntfs wireless tools

15[[Fichier:16.PNG|120px|commentaire]] 16[[Fichier:17.PNG|120px|commentaire]] 17[[Fichier:18.PNG|120px|commentaire]] 


==  Détecter le matériel réseau ==


19[[Fichier:20.PNG|120px|commentaire]]


== Configurer le réseau ==


Généralement vous êtes derrière un routeur ou une &quot;box&quot; qui doit vous fournir une adresse IP. Vous laisserez donc l'option DHCP.

21[[Fichier:21.PNG|120px|commentaire]] 22[[Fichier:22.PNG|120px|commentaire]]

Nom de la machine :

23[[Fichier:23.PNG|120px|commentaire]]

Nom du domaine. Il doit vous être fourni par le serveur DHCP. Si ce n'est pas le cas, laissez vide

24[[Fichier:24.PNG|120px|commentaire]]


== Choisir un miroir de l'archive Debian==


25[[Fichier:25.PNG|120px|commentaire]]

Choisissez un miroir pour récupérer les paquets. Inutile que vos paquets fassent 12.000 Km, choisissez un miroir proche de chez vous.

26[[Fichier:26.PNG|120px|commentaire]] 27[[Fichier:27.PNG|120px|commentaire]] 28[[Fichier:28.PNG|120px|commentaire]]

A compléter si vous avez un proxy 

29[[Fichier:29.PNG|120px|commentaire]] ]

* Un des points forts de la &quot;businesscard&quot; par rapport à une &quot;netinstall&quot;, le choix de la branche !

31[[Fichier:31.PNG|120px|commentaire]] 32[[Fichier:32.PNG|120px|commentaire]] 33[[Fichier:33.PNG|120px|commentaire]]


== Créer les utilisateurs et les mots de passe. ==


''Bien prendre note de la syntaxe exacte des noms et, des mots de passe''

34[[Fichier:34.PNG|120px|commentaire]] 35[[Fichier:35.PNG|120px|commentaire]] 36[[Fichier:36.PNG|120px|commentaire]] 37[[Fichier:37.PNG|120px|commentaire]] 38[[Fichier:38.PNG|120px|commentaire]]39[[Fichier:39.PNG|120px|commentaire]] 40[[Fichier:40.PNG|120px|commentaire]] 41[[Fichier:41.PNG|120px|commentaire]] 42[[Fichier:42.PNG|120px|commentaire]] 43[[Fichier:43.PNG|120px|commentaire]]

== Configurer l'horloge ==

44[[Fichier:44.PNG|120px|commentaire]] 45[[Fichier:45.PNG|120px|commentaire]] 46[[Fichier:46.PNG|120px|commentaire]] 47[[Fichier:47.PNG|120px|commentaire]]


== Détecter les disques ==


48[[Fichier:48.PNG|120px|commentaire]]


== Partitionner les disques ==


Il s'agit de la configuration la plus simple:

je fais une parenthèse qui peut intéresser certaines configurations manuelles.

La taille est approximative, et devrait convenir à ceux qui veulent une machine de bureau avec un peu de confort

Le [ /boot ] 50mb suffisent (100 mb c'est mieux) - Séparer la partition /boot n'est pas une nécessaire.

La racine [ / ] 3 GIB (10 GB pour un bureaux)

Le répertoire des utilisateur [ /home ] 

49[[Fichier:49.PNG|120px|commentaire]]

Plus d'informations sur le partitionnement. (adjoindre un lien interne)

51[[Fichier:51.PNG|120px|commentaire]] 52[[Fichier:52.PNG|120px|commentaire]]

'''Il est très fortement conseillé de séparer cette partition'''

53[[Fichier:53.PNG|120px|commentaire]] 54[[Fichier:54.PNG|120px|commentaire]] 55[[Fichier:55.PNG|120px|commentaire]]


== Installer le système de base ==


57[[Fichier:57.PNG|120px|commentaire]] 58[[Fichier:58.PNG|120px|commentaire]] 61[[Fichier:61.PNG|120px|commentaire]] 62[[Fichier:62.PNG|120px|commentaire]] 63[[Fichier:63.PNG|120px|commentaire]]


== Configurer l'outil de gestion des paquets ==


64[[Fichier:64.PNG|120px|commentaire]] 65[[Fichier:65.PNG|120px|commentaire]]

Vous pouvez à ce stade choisir d'utiliser des logiciel non-libre, ou pas !

66[[Fichier:66.PNG|120px|commentaire]] 67[[Fichier:67.PNG|120px|commentaire]] 68[[Fichier:68.PNG|120px|commentaire]] 


== Choisir et installer des logiciels ==


70[[Fichier:70.PNG|120px|commentaire]]

Il est possible de participer à une études statistique sur l'utilisation des paquets, ou pas !

71[[Fichier:71.PNG|120px|commentaire]] 72[[Fichier:72.PNG|120px|commentaire]] 73[[Fichier:73.PNG|120px|commentaire]]


== Installer le programme de démarrage Grub sur un disque dur ==


74[[Fichier:74.PNG|120px|commentaire]] 75[[Fichier:75.PNG|120px|commentaire]]


== Terminer l'installation ==


76[[Fichier:76.PNG|120px|commentaire]] 77[[Fichier:77.PNG|120px|commentaire]] 78[[Fichier:78.PNG|120px|commentaire]]


== Démarrer votre nouveau système  ==


79[[Fichier:79.PNG|120px|commentaire]] 80[[Fichier:80.PNG|120px|commentaire]] 82[[Fichier:82.PNG|120px|commentaire]]

Cet article à été inspiré de http://www.isalo.org/wiki.debian-fr/index.php?title=Installer_Debian_pas-%C3%A0-pas

----
[[Utilisateur:Terix|Terix]] 05 décembre 2011 à 06:46 (UTC)</text>
      <sha1>qjnn6xnw2hdcqody5343up4xm137rlc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3631</id>
      <parentid>3630</parentid>
      <timestamp>2011-12-05T10:16:44Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Choisir la langue */</comment>
      <text xml:space="preserve" bytes="8515">= Installation de squeeze avec une businesscard =
Ce document, au travers de captures d'écrans, détaillera pas-à-pas (de façon sommaire) l'installation d'une Debian Squeeze à partir d'une image iso &quot;businesscard&quot;
   
== Prérequis ==

Téléchargement de l'image iso &quot;businesscard&quot; Choisissez la businesscard (en mode expert) si vous souhaitez pouvoir choisir votre distribution (stable/testing/instable) Vous pourrez également choisir votre window manager (gnome, kde, lxde, xfce) Choisissez l'image en fonction de votre machine : i386 ou amd64 en général


$ wget -c http://cdimage.debian.org/debian-cd/6.0.1a/amd64/iso-cd/debian-6.0.1a-amd64-businesscard.iso

''Il va de soi qu'il faut adapter le choix de l'image à votre matériel
''
Vérifiez votre image iso à l'aide de md5sum

Gravez l'image sur un CD(-RW).

== Installation ==

Modifier votre bios pour que votre machine démarre sur le lecteur de CD/DVD Insérez le disque dans le lecteur et démarrez sur le CD
== Page d'accueil et choix de la méthode d'installation ==

Un menu s'offre à vous :
=== Installation ===

    * Install
    * Graphical install
    * Advanced options
    * Help 
 
    
==== Install ====

Ce choix installera (presque) automatiquement une Debian Squeeze avec les options &quot;standards&quot;
==== Graphical install ====

Même chose que le choix ci-dessus, mais avec une interface graphique. Peut s'avérer moins fiable, en fonction de votre matériel.
==== Advanced options ====

C'est dans cette direction que nous allons...
==== Help ====

Divers fichiers d'aide sur les &quot;pré-requis&quot; à l'installation, les paramètres à passer au boot pour les machines un peu &quot;spéciales&quot;


== Exemple pour l'installation ==


La taille des partitions

http://pix.isalo.org/?img=1315166185.png

== Installer boot menu ==

1[[Fichier:1.PNG|120px|commentaire]]

Le menu suivant offre des choix intéressants :

    * Back...
    * Expert Install 

C'est cette option que nous choisirons, c'est celle qui laisse le plus de contrôle sur l'installation

    * Rescue mode 

Très utile si un jour votre machine ne démarre pas (cela permet de faire un chroot sur le système pour des réparations... Grub par exemple) Permet d'ouvrir un shell sur la partition système.

    * Automated install 

Comme son nom l'indique, une installation automatique où vous n'interviendrez presque pas Identique au choix Install de la première page.

    * Graphical expert install 

Identique à &quot;Expert install&quot; mais en mode graphique

    * Graphical rescue mode 

Identique à &quot;Rescue mode&quot; mais en mode graphique

    * Graphical automated install 

Identique à &quot;Automated install&quot; mais en mode graphique

    * Alternative desktop environments 

Option intéressante si vous souhaitez installer un autre bureau que Gnome (KDE, LXDE, XFCE). Vous retrouverez dans les sous-menus l'ensemble des choix offerts ici.

2[[Fichier:2.PNG|120px|commentaire]]

== Choisir la langue ==

Ici pour des raisons pratiques, je conseille un miroir Français.(à adapter suivant vos besoins)

3[[Fichier:3.PNG|120px|commentaire]] 4[[Fichier:4.PNG|120px|commentaire]] 5[[Fichier:5.PNG|120px|commentaire]] 6[[Fichier:6.PNG|120px|commentaire]]7[[Fichier:7.PNG|120px|commentaire]]

== Choisir la disposition du clavier ==


8[[Fichier:8.PNG|120px|commentaire]] 9[[Fichier:9.PNG|120px|commentaire]] 10[[Fichier:10.PNG|120px|commentaire]]


== Détecter et monter le CD ==


11[[Fichier:12.PNG|120px|commentaire]]

Activer l'usb ? Laissez le choix par défaut : oui

12[[Fichier:13.PNG|120px|commentaire]]

pcmcia ? Cela dépendra de votre machine... Inutile de démarrer ces services si vous n'en avez pas ! La question vous sera reposée à chaque fois qu'une détection de matériel est nécessaire.

13[[Fichier:14.PNG|120px|commentair ]] 14[[Fichier:15.PNG|120px|commentaire]]


== Charger des composants d'installation à partir du CD ==


Bien que je n'ai choisi aucune des options de cette liste, je vous détaille rapidement quelques choix :

Peu de mémoire vive (lowmem) Connexion ppp (par modem) rescue mode support ntfs wireless tools

15[[Fichier:16.PNG|120px|commentaire]] 16[[Fichier:17.PNG|120px|commentaire]] 17[[Fichier:18.PNG|120px|commentaire]] 


==  Détecter le matériel réseau ==


19[[Fichier:20.PNG|120px|commentaire]]


== Configurer le réseau ==


Généralement vous êtes derrière un routeur ou une &quot;box&quot; qui doit vous fournir une adresse IP. Vous laisserez donc l'option DHCP.

21[[Fichier:21.PNG|120px|commentaire]] 22[[Fichier:22.PNG|120px|commentaire]]

Nom de la machine :

23[[Fichier:23.PNG|120px|commentaire]]

Nom du domaine. Il doit vous être fourni par le serveur DHCP. Si ce n'est pas le cas, laissez vide

24[[Fichier:24.PNG|120px|commentaire]]


== Choisir un miroir de l'archive Debian==


25[[Fichier:25.PNG|120px|commentaire]]

Choisissez un miroir pour récupérer les paquets. Inutile que vos paquets fassent 12.000 Km, choisissez un miroir proche de chez vous.

26[[Fichier:26.PNG|120px|commentaire]] 27[[Fichier:27.PNG|120px|commentaire]] 28[[Fichier:28.PNG|120px|commentaire]]

A compléter si vous avez un proxy 

29[[Fichier:29.PNG|120px|commentaire]] ]

* Un des points forts de la &quot;businesscard&quot; par rapport à une &quot;netinstall&quot;, le choix de la branche !

31[[Fichier:31.PNG|120px|commentaire]] 32[[Fichier:32.PNG|120px|commentaire]] 33[[Fichier:33.PNG|120px|commentaire]]


== Créer les utilisateurs et les mots de passe. ==


''Bien prendre note de la syntaxe exacte des noms et, des mots de passe''

34[[Fichier:34.PNG|120px|commentaire]] 35[[Fichier:35.PNG|120px|commentaire]] 36[[Fichier:36.PNG|120px|commentaire]] 37[[Fichier:37.PNG|120px|commentaire]] 38[[Fichier:38.PNG|120px|commentaire]]39[[Fichier:39.PNG|120px|commentaire]] 40[[Fichier:40.PNG|120px|commentaire]] 41[[Fichier:41.PNG|120px|commentaire]] 42[[Fichier:42.PNG|120px|commentaire]] 43[[Fichier:43.PNG|120px|commentaire]]

== Configurer l'horloge ==

44[[Fichier:44.PNG|120px|commentaire]] 45[[Fichier:45.PNG|120px|commentaire]] 46[[Fichier:46.PNG|120px|commentaire]] 47[[Fichier:47.PNG|120px|commentaire]]


== Détecter les disques ==


48[[Fichier:48.PNG|120px|commentaire]]


== Partitionner les disques ==


Il s'agit de la configuration la plus simple:

je fais une parenthèse qui peut intéresser certaines configurations manuelles.

La taille est approximative, et devrait convenir à ceux qui veulent une machine de bureau avec un peu de confort

Le [ /boot ] 50mb suffisent (100 mb c'est mieux) - Séparer la partition /boot n'est pas une nécessaire.

La racine [ / ] 3 GIB (10 GB pour un bureaux)

Le répertoire des utilisateur [ /home ] 

49[[Fichier:49.PNG|120px|commentaire]]

Plus d'informations sur le partitionnement. (adjoindre un lien interne)

51[[Fichier:51.PNG|120px|commentaire]] 52[[Fichier:52.PNG|120px|commentaire]]

'''Il est très fortement conseillé de séparer cette partition'''

53[[Fichier:53.PNG|120px|commentaire]] 54[[Fichier:54.PNG|120px|commentaire]] 55[[Fichier:55.PNG|120px|commentaire]]


== Installer le système de base ==


57[[Fichier:57.PNG|120px|commentaire]] 58[[Fichier:58.PNG|120px|commentaire]] 61[[Fichier:61.PNG|120px|commentaire]] 62[[Fichier:62.PNG|120px|commentaire]] 63[[Fichier:63.PNG|120px|commentaire]]


== Configurer l'outil de gestion des paquets ==


64[[Fichier:64.PNG|120px|commentaire]] 65[[Fichier:65.PNG|120px|commentaire]]

Vous pouvez à ce stade choisir d'utiliser des logiciel non-libre, ou pas !

66[[Fichier:66.PNG|120px|commentaire]] 67[[Fichier:67.PNG|120px|commentaire]] 68[[Fichier:68.PNG|120px|commentaire]] 


== Choisir et installer des logiciels ==


70[[Fichier:70.PNG|120px|commentaire]]

Il est possible de participer à une études statistique sur l'utilisation des paquets, ou pas !

71[[Fichier:71.PNG|120px|commentaire]] 72[[Fichier:72.PNG|120px|commentaire]] 73[[Fichier:73.PNG|120px|commentaire]]


== Installer le programme de démarrage Grub sur un disque dur ==


74[[Fichier:74.PNG|120px|commentaire]] 75[[Fichier:75.PNG|120px|commentaire]]


== Terminer l'installation ==


76[[Fichier:76.PNG|120px|commentaire]] 77[[Fichier:77.PNG|120px|commentaire]] 78[[Fichier:78.PNG|120px|commentaire]]


== Démarrer votre nouveau système  ==


79[[Fichier:79.PNG|120px|commentaire]] 80[[Fichier:80.PNG|120px|commentaire]] 82[[Fichier:82.PNG|120px|commentaire]]

Cet article à été inspiré de http://www.isalo.org/wiki.debian-fr/index.php?title=Installer_Debian_pas-%C3%A0-pas

----
[[Utilisateur:Terix|Terix]] 05 décembre 2011 à 06:46 (UTC)</text>
      <sha1>tos4n7c18h2oq6taj8owknukp8vgveu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3632</id>
      <parentid>3631</parentid>
      <timestamp>2011-12-05T10:19:47Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Partitionner les disques */</comment>
      <text xml:space="preserve" bytes="8515">= Installation de squeeze avec une businesscard =
Ce document, au travers de captures d'écrans, détaillera pas-à-pas (de façon sommaire) l'installation d'une Debian Squeeze à partir d'une image iso &quot;businesscard&quot;
   
== Prérequis ==

Téléchargement de l'image iso &quot;businesscard&quot; Choisissez la businesscard (en mode expert) si vous souhaitez pouvoir choisir votre distribution (stable/testing/instable) Vous pourrez également choisir votre window manager (gnome, kde, lxde, xfce) Choisissez l'image en fonction de votre machine : i386 ou amd64 en général


$ wget -c http://cdimage.debian.org/debian-cd/6.0.1a/amd64/iso-cd/debian-6.0.1a-amd64-businesscard.iso

''Il va de soi qu'il faut adapter le choix de l'image à votre matériel
''
Vérifiez votre image iso à l'aide de md5sum

Gravez l'image sur un CD(-RW).

== Installation ==

Modifier votre bios pour que votre machine démarre sur le lecteur de CD/DVD Insérez le disque dans le lecteur et démarrez sur le CD
== Page d'accueil et choix de la méthode d'installation ==

Un menu s'offre à vous :
=== Installation ===

    * Install
    * Graphical install
    * Advanced options
    * Help 
 
    
==== Install ====

Ce choix installera (presque) automatiquement une Debian Squeeze avec les options &quot;standards&quot;
==== Graphical install ====

Même chose que le choix ci-dessus, mais avec une interface graphique. Peut s'avérer moins fiable, en fonction de votre matériel.
==== Advanced options ====

C'est dans cette direction que nous allons...
==== Help ====

Divers fichiers d'aide sur les &quot;pré-requis&quot; à l'installation, les paramètres à passer au boot pour les machines un peu &quot;spéciales&quot;


== Exemple pour l'installation ==


La taille des partitions

http://pix.isalo.org/?img=1315166185.png

== Installer boot menu ==

1[[Fichier:1.PNG|120px|commentaire]]

Le menu suivant offre des choix intéressants :

    * Back...
    * Expert Install 

C'est cette option que nous choisirons, c'est celle qui laisse le plus de contrôle sur l'installation

    * Rescue mode 

Très utile si un jour votre machine ne démarre pas (cela permet de faire un chroot sur le système pour des réparations... Grub par exemple) Permet d'ouvrir un shell sur la partition système.

    * Automated install 

Comme son nom l'indique, une installation automatique où vous n'interviendrez presque pas Identique au choix Install de la première page.

    * Graphical expert install 

Identique à &quot;Expert install&quot; mais en mode graphique

    * Graphical rescue mode 

Identique à &quot;Rescue mode&quot; mais en mode graphique

    * Graphical automated install 

Identique à &quot;Automated install&quot; mais en mode graphique

    * Alternative desktop environments 

Option intéressante si vous souhaitez installer un autre bureau que Gnome (KDE, LXDE, XFCE). Vous retrouverez dans les sous-menus l'ensemble des choix offerts ici.

2[[Fichier:2.PNG|120px|commentaire]]

== Choisir la langue ==

Ici pour des raisons pratiques, je conseille un miroir Français.(à adapter suivant vos besoins)

3[[Fichier:3.PNG|120px|commentaire]] 4[[Fichier:4.PNG|120px|commentaire]] 5[[Fichier:5.PNG|120px|commentaire]] 6[[Fichier:6.PNG|120px|commentaire]]7[[Fichier:7.PNG|120px|commentaire]]

== Choisir la disposition du clavier ==


8[[Fichier:8.PNG|120px|commentaire]] 9[[Fichier:9.PNG|120px|commentaire]] 10[[Fichier:10.PNG|120px|commentaire]]


== Détecter et monter le CD ==


11[[Fichier:12.PNG|120px|commentaire]]

Activer l'usb ? Laissez le choix par défaut : oui

12[[Fichier:13.PNG|120px|commentaire]]

pcmcia ? Cela dépendra de votre machine... Inutile de démarrer ces services si vous n'en avez pas ! La question vous sera reposée à chaque fois qu'une détection de matériel est nécessaire.

13[[Fichier:14.PNG|120px|commentair ]] 14[[Fichier:15.PNG|120px|commentaire]]


== Charger des composants d'installation à partir du CD ==


Bien que je n'ai choisi aucune des options de cette liste, je vous détaille rapidement quelques choix :

Peu de mémoire vive (lowmem) Connexion ppp (par modem) rescue mode support ntfs wireless tools

15[[Fichier:16.PNG|120px|commentaire]] 16[[Fichier:17.PNG|120px|commentaire]] 17[[Fichier:18.PNG|120px|commentaire]] 


==  Détecter le matériel réseau ==


19[[Fichier:20.PNG|120px|commentaire]]


== Configurer le réseau ==


Généralement vous êtes derrière un routeur ou une &quot;box&quot; qui doit vous fournir une adresse IP. Vous laisserez donc l'option DHCP.

21[[Fichier:21.PNG|120px|commentaire]] 22[[Fichier:22.PNG|120px|commentaire]]

Nom de la machine :

23[[Fichier:23.PNG|120px|commentaire]]

Nom du domaine. Il doit vous être fourni par le serveur DHCP. Si ce n'est pas le cas, laissez vide

24[[Fichier:24.PNG|120px|commentaire]]


== Choisir un miroir de l'archive Debian==


25[[Fichier:25.PNG|120px|commentaire]]

Choisissez un miroir pour récupérer les paquets. Inutile que vos paquets fassent 12.000 Km, choisissez un miroir proche de chez vous.

26[[Fichier:26.PNG|120px|commentaire]] 27[[Fichier:27.PNG|120px|commentaire]] 28[[Fichier:28.PNG|120px|commentaire]]

A compléter si vous avez un proxy 

29[[Fichier:29.PNG|120px|commentaire]] ]

* Un des points forts de la &quot;businesscard&quot; par rapport à une &quot;netinstall&quot;, le choix de la branche !

31[[Fichier:31.PNG|120px|commentaire]] 32[[Fichier:32.PNG|120px|commentaire]] 33[[Fichier:33.PNG|120px|commentaire]]


== Créer les utilisateurs et les mots de passe. ==


''Bien prendre note de la syntaxe exacte des noms et, des mots de passe''

34[[Fichier:34.PNG|120px|commentaire]] 35[[Fichier:35.PNG|120px|commentaire]] 36[[Fichier:36.PNG|120px|commentaire]] 37[[Fichier:37.PNG|120px|commentaire]] 38[[Fichier:38.PNG|120px|commentaire]]39[[Fichier:39.PNG|120px|commentaire]] 40[[Fichier:40.PNG|120px|commentaire]] 41[[Fichier:41.PNG|120px|commentaire]] 42[[Fichier:42.PNG|120px|commentaire]] 43[[Fichier:43.PNG|120px|commentaire]]

== Configurer l'horloge ==

44[[Fichier:44.PNG|120px|commentaire]] 45[[Fichier:45.PNG|120px|commentaire]] 46[[Fichier:46.PNG|120px|commentaire]] 47[[Fichier:47.PNG|120px|commentaire]]


== Détecter les disques ==


48[[Fichier:48.PNG|120px|commentaire]]


== Partitionner les disques ==


Il s'agit de la configuration la plus simple:

je fais une parenthèse qui peut intéresser certaines configurations manuelles.

La taille est approximative, et devrait convenir à ceux qui veulent une machine de bureau avec un peu de confort

Le [ /boot ] 50mb suffisent (100 mb c'est mieux) - Séparer la partition /boot n'est plus une nécessité.

La racine [ / ] 3 GIB (10 GB pour un bureau)

Le répertoire des utilisateurs [ /home ] 

49[[Fichier:49.PNG|120px|commentaire]]

Plus d'informations sur le partitionnement. (adjoindre un lien interne)

51[[Fichier:51.PNG|120px|commentaire]] 52[[Fichier:52.PNG|120px|commentaire]]

'''Il est très fortement conseillé de séparer cette partition'''

53[[Fichier:53.PNG|120px|commentaire]] 54[[Fichier:54.PNG|120px|commentaire]] 55[[Fichier:55.PNG|120px|commentaire]]

== Installer le système de base ==


57[[Fichier:57.PNG|120px|commentaire]] 58[[Fichier:58.PNG|120px|commentaire]] 61[[Fichier:61.PNG|120px|commentaire]] 62[[Fichier:62.PNG|120px|commentaire]] 63[[Fichier:63.PNG|120px|commentaire]]


== Configurer l'outil de gestion des paquets ==


64[[Fichier:64.PNG|120px|commentaire]] 65[[Fichier:65.PNG|120px|commentaire]]

Vous pouvez à ce stade choisir d'utiliser des logiciel non-libre, ou pas !

66[[Fichier:66.PNG|120px|commentaire]] 67[[Fichier:67.PNG|120px|commentaire]] 68[[Fichier:68.PNG|120px|commentaire]] 


== Choisir et installer des logiciels ==


70[[Fichier:70.PNG|120px|commentaire]]

Il est possible de participer à une études statistique sur l'utilisation des paquets, ou pas !

71[[Fichier:71.PNG|120px|commentaire]] 72[[Fichier:72.PNG|120px|commentaire]] 73[[Fichier:73.PNG|120px|commentaire]]


== Installer le programme de démarrage Grub sur un disque dur ==


74[[Fichier:74.PNG|120px|commentaire]] 75[[Fichier:75.PNG|120px|commentaire]]


== Terminer l'installation ==


76[[Fichier:76.PNG|120px|commentaire]] 77[[Fichier:77.PNG|120px|commentaire]] 78[[Fichier:78.PNG|120px|commentaire]]


== Démarrer votre nouveau système  ==


79[[Fichier:79.PNG|120px|commentaire]] 80[[Fichier:80.PNG|120px|commentaire]] 82[[Fichier:82.PNG|120px|commentaire]]

Cet article à été inspiré de http://www.isalo.org/wiki.debian-fr/index.php?title=Installer_Debian_pas-%C3%A0-pas

----
[[Utilisateur:Terix|Terix]] 05 décembre 2011 à 06:46 (UTC)</text>
      <sha1>evf5h2f7rcndtir4bqp3e8ybu7gyvrw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3636</id>
      <parentid>3632</parentid>
      <timestamp>2011-12-10T10:17:19Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Exemple pour l'installation */</comment>
      <text xml:space="preserve" bytes="8547">= Installation de squeeze avec une businesscard =
Ce document, au travers de captures d'écrans, détaillera pas-à-pas (de façon sommaire) l'installation d'une Debian Squeeze à partir d'une image iso &quot;businesscard&quot;
   
== Prérequis ==

Téléchargement de l'image iso &quot;businesscard&quot; Choisissez la businesscard (en mode expert) si vous souhaitez pouvoir choisir votre distribution (stable/testing/instable) Vous pourrez également choisir votre window manager (gnome, kde, lxde, xfce) Choisissez l'image en fonction de votre machine : i386 ou amd64 en général


$ wget -c http://cdimage.debian.org/debian-cd/6.0.1a/amd64/iso-cd/debian-6.0.1a-amd64-businesscard.iso

''Il va de soi qu'il faut adapter le choix de l'image à votre matériel
''
Vérifiez votre image iso à l'aide de md5sum

Gravez l'image sur un CD(-RW).

== Installation ==

Modifier votre bios pour que votre machine démarre sur le lecteur de CD/DVD Insérez le disque dans le lecteur et démarrez sur le CD
== Page d'accueil et choix de la méthode d'installation ==

Un menu s'offre à vous :
=== Installation ===

    * Install
    * Graphical install
    * Advanced options
    * Help 
 
    
==== Install ====

Ce choix installera (presque) automatiquement une Debian Squeeze avec les options &quot;standards&quot;
==== Graphical install ====

Même chose que le choix ci-dessus, mais avec une interface graphique. Peut s'avérer moins fiable, en fonction de votre matériel.
==== Advanced options ====

C'est dans cette direction que nous allons...
==== Help ====

Divers fichiers d'aide sur les &quot;pré-requis&quot; à l'installation, les paramètres à passer au boot pour les machines un peu &quot;spéciales&quot;


== Exemple pour l'installation ==


La taille des partitions

Ce sujet est à développer ;)

http://pix.isalo.org/?img=1315166185.png

== Installer boot menu ==

1[[Fichier:1.PNG|120px|commentaire]]

Le menu suivant offre des choix intéressants :

    * Back...
    * Expert Install 

C'est cette option que nous choisirons, c'est celle qui laisse le plus de contrôle sur l'installation

    * Rescue mode 

Très utile si un jour votre machine ne démarre pas (cela permet de faire un chroot sur le système pour des réparations... Grub par exemple) Permet d'ouvrir un shell sur la partition système.

    * Automated install 

Comme son nom l'indique, une installation automatique où vous n'interviendrez presque pas Identique au choix Install de la première page.

    * Graphical expert install 

Identique à &quot;Expert install&quot; mais en mode graphique

    * Graphical rescue mode 

Identique à &quot;Rescue mode&quot; mais en mode graphique

    * Graphical automated install 

Identique à &quot;Automated install&quot; mais en mode graphique

    * Alternative desktop environments 

Option intéressante si vous souhaitez installer un autre bureau que Gnome (KDE, LXDE, XFCE). Vous retrouverez dans les sous-menus l'ensemble des choix offerts ici.

2[[Fichier:2.PNG|120px|commentaire]]

== Choisir la langue ==

Ici pour des raisons pratiques, je conseille un miroir Français.(à adapter suivant vos besoins)

3[[Fichier:3.PNG|120px|commentaire]] 4[[Fichier:4.PNG|120px|commentaire]] 5[[Fichier:5.PNG|120px|commentaire]] 6[[Fichier:6.PNG|120px|commentaire]]7[[Fichier:7.PNG|120px|commentaire]]

== Choisir la disposition du clavier ==


8[[Fichier:8.PNG|120px|commentaire]] 9[[Fichier:9.PNG|120px|commentaire]] 10[[Fichier:10.PNG|120px|commentaire]]


== Détecter et monter le CD ==


11[[Fichier:12.PNG|120px|commentaire]]

Activer l'usb ? Laissez le choix par défaut : oui

12[[Fichier:13.PNG|120px|commentaire]]

pcmcia ? Cela dépendra de votre machine... Inutile de démarrer ces services si vous n'en avez pas ! La question vous sera reposée à chaque fois qu'une détection de matériel est nécessaire.

13[[Fichier:14.PNG|120px|commentair ]] 14[[Fichier:15.PNG|120px|commentaire]]


== Charger des composants d'installation à partir du CD ==


Bien que je n'ai choisi aucune des options de cette liste, je vous détaille rapidement quelques choix :

Peu de mémoire vive (lowmem) Connexion ppp (par modem) rescue mode support ntfs wireless tools

15[[Fichier:16.PNG|120px|commentaire]] 16[[Fichier:17.PNG|120px|commentaire]] 17[[Fichier:18.PNG|120px|commentaire]] 


==  Détecter le matériel réseau ==


19[[Fichier:20.PNG|120px|commentaire]]


== Configurer le réseau ==


Généralement vous êtes derrière un routeur ou une &quot;box&quot; qui doit vous fournir une adresse IP. Vous laisserez donc l'option DHCP.

21[[Fichier:21.PNG|120px|commentaire]] 22[[Fichier:22.PNG|120px|commentaire]]

Nom de la machine :

23[[Fichier:23.PNG|120px|commentaire]]

Nom du domaine. Il doit vous être fourni par le serveur DHCP. Si ce n'est pas le cas, laissez vide

24[[Fichier:24.PNG|120px|commentaire]]


== Choisir un miroir de l'archive Debian==


25[[Fichier:25.PNG|120px|commentaire]]

Choisissez un miroir pour récupérer les paquets. Inutile que vos paquets fassent 12.000 Km, choisissez un miroir proche de chez vous.

26[[Fichier:26.PNG|120px|commentaire]] 27[[Fichier:27.PNG|120px|commentaire]] 28[[Fichier:28.PNG|120px|commentaire]]

A compléter si vous avez un proxy 

29[[Fichier:29.PNG|120px|commentaire]] ]

* Un des points forts de la &quot;businesscard&quot; par rapport à une &quot;netinstall&quot;, le choix de la branche !

31[[Fichier:31.PNG|120px|commentaire]] 32[[Fichier:32.PNG|120px|commentaire]] 33[[Fichier:33.PNG|120px|commentaire]]


== Créer les utilisateurs et les mots de passe. ==


''Bien prendre note de la syntaxe exacte des noms et, des mots de passe''

34[[Fichier:34.PNG|120px|commentaire]] 35[[Fichier:35.PNG|120px|commentaire]] 36[[Fichier:36.PNG|120px|commentaire]] 37[[Fichier:37.PNG|120px|commentaire]] 38[[Fichier:38.PNG|120px|commentaire]]39[[Fichier:39.PNG|120px|commentaire]] 40[[Fichier:40.PNG|120px|commentaire]] 41[[Fichier:41.PNG|120px|commentaire]] 42[[Fichier:42.PNG|120px|commentaire]] 43[[Fichier:43.PNG|120px|commentaire]]

== Configurer l'horloge ==

44[[Fichier:44.PNG|120px|commentaire]] 45[[Fichier:45.PNG|120px|commentaire]] 46[[Fichier:46.PNG|120px|commentaire]] 47[[Fichier:47.PNG|120px|commentaire]]


== Détecter les disques ==


48[[Fichier:48.PNG|120px|commentaire]]


== Partitionner les disques ==


Il s'agit de la configuration la plus simple:

je fais une parenthèse qui peut intéresser certaines configurations manuelles.

La taille est approximative, et devrait convenir à ceux qui veulent une machine de bureau avec un peu de confort

Le [ /boot ] 50mb suffisent (100 mb c'est mieux) - Séparer la partition /boot n'est plus une nécessité.

La racine [ / ] 3 GIB (10 GB pour un bureau)

Le répertoire des utilisateurs [ /home ] 

49[[Fichier:49.PNG|120px|commentaire]]

Plus d'informations sur le partitionnement. (adjoindre un lien interne)

51[[Fichier:51.PNG|120px|commentaire]] 52[[Fichier:52.PNG|120px|commentaire]]

'''Il est très fortement conseillé de séparer cette partition'''

53[[Fichier:53.PNG|120px|commentaire]] 54[[Fichier:54.PNG|120px|commentaire]] 55[[Fichier:55.PNG|120px|commentaire]]

== Installer le système de base ==


57[[Fichier:57.PNG|120px|commentaire]] 58[[Fichier:58.PNG|120px|commentaire]] 61[[Fichier:61.PNG|120px|commentaire]] 62[[Fichier:62.PNG|120px|commentaire]] 63[[Fichier:63.PNG|120px|commentaire]]


== Configurer l'outil de gestion des paquets ==


64[[Fichier:64.PNG|120px|commentaire]] 65[[Fichier:65.PNG|120px|commentaire]]

Vous pouvez à ce stade choisir d'utiliser des logiciel non-libre, ou pas !

66[[Fichier:66.PNG|120px|commentaire]] 67[[Fichier:67.PNG|120px|commentaire]] 68[[Fichier:68.PNG|120px|commentaire]] 


== Choisir et installer des logiciels ==


70[[Fichier:70.PNG|120px|commentaire]]

Il est possible de participer à une études statistique sur l'utilisation des paquets, ou pas !

71[[Fichier:71.PNG|120px|commentaire]] 72[[Fichier:72.PNG|120px|commentaire]] 73[[Fichier:73.PNG|120px|commentaire]]


== Installer le programme de démarrage Grub sur un disque dur ==


74[[Fichier:74.PNG|120px|commentaire]] 75[[Fichier:75.PNG|120px|commentaire]]


== Terminer l'installation ==


76[[Fichier:76.PNG|120px|commentaire]] 77[[Fichier:77.PNG|120px|commentaire]] 78[[Fichier:78.PNG|120px|commentaire]]


== Démarrer votre nouveau système  ==


79[[Fichier:79.PNG|120px|commentaire]] 80[[Fichier:80.PNG|120px|commentaire]] 82[[Fichier:82.PNG|120px|commentaire]]

Cet article à été inspiré de http://www.isalo.org/wiki.debian-fr/index.php?title=Installer_Debian_pas-%C3%A0-pas

----
[[Utilisateur:Terix|Terix]] 05 décembre 2011 à 06:46 (UTC)</text>
      <sha1>a7vm0zcxbhbncrdzsfhrgtfp8pi60zy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4018</id>
      <parentid>3636</parentid>
      <timestamp>2012-04-11T09:10:31Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="8545">= Installation de squeeze avec une businesscard =
Ce document, au travers de captures d'écrans, détaillera pas-à-pas (de façon sommaire) l'installation d'une Debian Squeeze à partir d'une image iso &quot;businesscard&quot;
   
== Prérequis ==

Téléchargement de l'image iso &quot;businesscard&quot; Choisissez la businesscard (en mode expert) si vous souhaitez pouvoir choisir votre distribution (stable/testing/instable) Vous pourrez également choisir votre window manager (gnome, kde, lxde, xfce) Choisissez l'image en fonction de votre machine : i386 ou amd64 en général


$ wget -c http://cdimage.debian.org/debian-cd/6.0.4/amd64/iso-cd/debian-6.0.4-amd64-businesscard.iso

''Il va de soi qu'il faut adapter le choix de l'image à votre matériel
''
Vérifiez votre image iso à l'aide de md5sum

Gravez l'image sur un CD(-RW).

== Installation ==

Modifier votre bios pour que votre machine démarre sur le lecteur de CD/DVD Insérez le disque dans le lecteur et démarrez sur le CD
== Page d'accueil et choix de la méthode d'installation ==

Un menu s'offre à vous :
=== Installation ===

    * Install
    * Graphical install
    * Advanced options
    * Help 
 
    
==== Install ====

Ce choix installera (presque) automatiquement une Debian Squeeze avec les options &quot;standards&quot;
==== Graphical install ====

Même chose que le choix ci-dessus, mais avec une interface graphique. Peut s'avérer moins fiable, en fonction de votre matériel.
==== Advanced options ====

C'est dans cette direction que nous allons...
==== Help ====

Divers fichiers d'aide sur les &quot;pré-requis&quot; à l'installation, les paramètres à passer au boot pour les machines un peu &quot;spéciales&quot;


== Exemple pour l'installation ==


La taille des partitions

Ce sujet est à développer ;)

http://pix.isalo.org/?img=1315166185.png

== Installer boot menu ==

1[[Fichier:1.PNG|120px|commentaire]]

Le menu suivant offre des choix intéressants :

    * Back...
    * Expert Install 

C'est cette option que nous choisirons, c'est celle qui laisse le plus de contrôle sur l'installation

    * Rescue mode 

Très utile si un jour votre machine ne démarre pas (cela permet de faire un chroot sur le système pour des réparations... Grub par exemple) Permet d'ouvrir un shell sur la partition système.

    * Automated install 

Comme son nom l'indique, une installation automatique où vous n'interviendrez presque pas Identique au choix Install de la première page.

    * Graphical expert install 

Identique à &quot;Expert install&quot; mais en mode graphique

    * Graphical rescue mode 

Identique à &quot;Rescue mode&quot; mais en mode graphique

    * Graphical automated install 

Identique à &quot;Automated install&quot; mais en mode graphique

    * Alternative desktop environments 

Option intéressante si vous souhaitez installer un autre bureau que Gnome (KDE, LXDE, XFCE). Vous retrouverez dans les sous-menus l'ensemble des choix offerts ici.

2[[Fichier:2.PNG|120px|commentaire]]

== Choisir la langue ==

Ici pour des raisons pratiques, je conseille un miroir Français.(à adapter suivant vos besoins)

3[[Fichier:3.PNG|120px|commentaire]] 4[[Fichier:4.PNG|120px|commentaire]] 5[[Fichier:5.PNG|120px|commentaire]] 6[[Fichier:6.PNG|120px|commentaire]]7[[Fichier:7.PNG|120px|commentaire]]

== Choisir la disposition du clavier ==


8[[Fichier:8.PNG|120px|commentaire]] 9[[Fichier:9.PNG|120px|commentaire]] 10[[Fichier:10.PNG|120px|commentaire]]


== Détecter et monter le CD ==


11[[Fichier:12.PNG|120px|commentaire]]

Activer l'usb ? Laissez le choix par défaut : oui

12[[Fichier:13.PNG|120px|commentaire]]

pcmcia ? Cela dépendra de votre machine... Inutile de démarrer ces services si vous n'en avez pas ! La question vous sera reposée à chaque fois qu'une détection de matériel est nécessaire.

13[[Fichier:14.PNG|120px|commentair ]] 14[[Fichier:15.PNG|120px|commentaire]]


== Charger des composants d'installation à partir du CD ==


Bien que je n'ai choisi aucune des options de cette liste, je vous détaille rapidement quelques choix :

Peu de mémoire vive (lowmem) Connexion ppp (par modem) rescue mode support ntfs wireless tools

15[[Fichier:16.PNG|120px|commentaire]] 16[[Fichier:17.PNG|120px|commentaire]] 17[[Fichier:18.PNG|120px|commentaire]] 


==  Détecter le matériel réseau ==


19[[Fichier:20.PNG|120px|commentaire]]


== Configurer le réseau ==


Généralement vous êtes derrière un routeur ou une &quot;box&quot; qui doit vous fournir une adresse IP. Vous laisserez donc l'option DHCP.

21[[Fichier:21.PNG|120px|commentaire]] 22[[Fichier:22.PNG|120px|commentaire]]

Nom de la machine :

23[[Fichier:23.PNG|120px|commentaire]]

Nom du domaine. Il doit vous être fourni par le serveur DHCP. Si ce n'est pas le cas, laissez vide

24[[Fichier:24.PNG|120px|commentaire]]


== Choisir un miroir de l'archive Debian==


25[[Fichier:25.PNG|120px|commentaire]]

Choisissez un miroir pour récupérer les paquets. Inutile que vos paquets fassent 12.000 Km, choisissez un miroir proche de chez vous.

26[[Fichier:26.PNG|120px|commentaire]] 27[[Fichier:27.PNG|120px|commentaire]] 28[[Fichier:28.PNG|120px|commentaire]]

A compléter si vous avez un proxy 

29[[Fichier:29.PNG|120px|commentaire]] ]

* Un des points forts de la &quot;businesscard&quot; par rapport à une &quot;netinstall&quot;, le choix de la branche !

31[[Fichier:31.PNG|120px|commentaire]] 32[[Fichier:32.PNG|120px|commentaire]] 33[[Fichier:33.PNG|120px|commentaire]]


== Créer les utilisateurs et les mots de passe. ==


''Bien prendre note de la syntaxe exacte des noms et, des mots de passe''

34[[Fichier:34.PNG|120px|commentaire]] 35[[Fichier:35.PNG|120px|commentaire]] 36[[Fichier:36.PNG|120px|commentaire]] 37[[Fichier:37.PNG|120px|commentaire]] 38[[Fichier:38.PNG|120px|commentaire]]39[[Fichier:39.PNG|120px|commentaire]] 40[[Fichier:40.PNG|120px|commentaire]] 41[[Fichier:41.PNG|120px|commentaire]] 42[[Fichier:42.PNG|120px|commentaire]] 43[[Fichier:43.PNG|120px|commentaire]]

== Configurer l'horloge ==

44[[Fichier:44.PNG|120px|commentaire]] 45[[Fichier:45.PNG|120px|commentaire]] 46[[Fichier:46.PNG|120px|commentaire]] 47[[Fichier:47.PNG|120px|commentaire]]


== Détecter les disques ==


48[[Fichier:48.PNG|120px|commentaire]]


== Partitionner les disques ==


Il s'agit de la configuration la plus simple:

je fais une parenthèse qui peut intéresser certaines configurations manuelles.

La taille est approximative, et devrait convenir à ceux qui veulent une machine de bureau avec un peu de confort

Le [ /boot ] 50mb suffisent (100 mb c'est mieux) - Séparer la partition /boot n'est plus une nécessité.

La racine [ / ] 3 GIB (10 GB pour un bureau)

Le répertoire des utilisateurs [ /home ] 

49[[Fichier:49.PNG|120px|commentaire]]

Plus d'informations sur le partitionnement. (adjoindre un lien interne)

51[[Fichier:51.PNG|120px|commentaire]] 52[[Fichier:52.PNG|120px|commentaire]]

'''Il est très fortement conseillé de séparer cette partition'''

53[[Fichier:53.PNG|120px|commentaire]] 54[[Fichier:54.PNG|120px|commentaire]] 55[[Fichier:55.PNG|120px|commentaire]]

== Installer le système de base ==


57[[Fichier:57.PNG|120px|commentaire]] 58[[Fichier:58.PNG|120px|commentaire]] 61[[Fichier:61.PNG|120px|commentaire]] 62[[Fichier:62.PNG|120px|commentaire]] 63[[Fichier:63.PNG|120px|commentaire]]


== Configurer l'outil de gestion des paquets ==


64[[Fichier:64.PNG|120px|commentaire]] 65[[Fichier:65.PNG|120px|commentaire]]

Vous pouvez à ce stade choisir d'utiliser des logiciel non-libre, ou pas !

66[[Fichier:66.PNG|120px|commentaire]] 67[[Fichier:67.PNG|120px|commentaire]] 68[[Fichier:68.PNG|120px|commentaire]] 


== Choisir et installer des logiciels ==


70[[Fichier:70.PNG|120px|commentaire]]

Il est possible de participer à une études statistique sur l'utilisation des paquets, ou pas !

71[[Fichier:71.PNG|120px|commentaire]] 72[[Fichier:72.PNG|120px|commentaire]] 73[[Fichier:73.PNG|120px|commentaire]]


== Installer le programme de démarrage Grub sur un disque dur ==


74[[Fichier:74.PNG|120px|commentaire]] 75[[Fichier:75.PNG|120px|commentaire]]


== Terminer l'installation ==


76[[Fichier:76.PNG|120px|commentaire]] 77[[Fichier:77.PNG|120px|commentaire]] 78[[Fichier:78.PNG|120px|commentaire]]


== Démarrer votre nouveau système  ==


79[[Fichier:79.PNG|120px|commentaire]] 80[[Fichier:80.PNG|120px|commentaire]] 82[[Fichier:82.PNG|120px|commentaire]]

Cet article à été inspiré de http://www.isalo.org/wiki.debian-fr/index.php?title=Installer_Debian_pas-%C3%A0-pas

----
[[Utilisateur:Terix|Terix]] 05 décembre 2011 à 06:46 (UTC)</text>
      <sha1>gntsjccujd6cbk0ug0bk9c50xc1mct2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4020</id>
      <parentid>4018</parentid>
      <timestamp>2012-04-13T18:23:31Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Exemple pour l'installation */</comment>
      <text xml:space="preserve" bytes="8602">= Installation de squeeze avec une businesscard =
Ce document, au travers de captures d'écrans, détaillera pas-à-pas (de façon sommaire) l'installation d'une Debian Squeeze à partir d'une image iso &quot;businesscard&quot;
   
== Prérequis ==

Téléchargement de l'image iso &quot;businesscard&quot; Choisissez la businesscard (en mode expert) si vous souhaitez pouvoir choisir votre distribution (stable/testing/instable) Vous pourrez également choisir votre window manager (gnome, kde, lxde, xfce) Choisissez l'image en fonction de votre machine : i386 ou amd64 en général


$ wget -c http://cdimage.debian.org/debian-cd/6.0.4/amd64/iso-cd/debian-6.0.4-amd64-businesscard.iso

''Il va de soi qu'il faut adapter le choix de l'image à votre matériel
''
Vérifiez votre image iso à l'aide de md5sum

Gravez l'image sur un CD(-RW).

== Installation ==

Modifier votre bios pour que votre machine démarre sur le lecteur de CD/DVD Insérez le disque dans le lecteur et démarrez sur le CD
== Page d'accueil et choix de la méthode d'installation ==

Un menu s'offre à vous :
=== Installation ===

    * Install
    * Graphical install
    * Advanced options
    * Help 
 
    
==== Install ====

Ce choix installera (presque) automatiquement une Debian Squeeze avec les options &quot;standards&quot;
==== Graphical install ====

Même chose que le choix ci-dessus, mais avec une interface graphique. Peut s'avérer moins fiable, en fonction de votre matériel.
==== Advanced options ====

C'est dans cette direction que nous allons...
==== Help ====

Divers fichiers d'aide sur les &quot;pré-requis&quot; à l'installation, les paramètres à passer au boot pour les machines un peu &quot;spéciales&quot;


== Exemple pour l'installation ==


La taille des partitions
Le mode de partitionnement et les outils préconisés

Ces sujets sont à développer ;)

http://pix.isalo.org/?img=1315166185.png

== Installer boot menu ==

1[[Fichier:1.PNG|120px|commentaire]]

Le menu suivant offre des choix intéressants :

    * Back...
    * Expert Install 

C'est cette option que nous choisirons, c'est celle qui laisse le plus de contrôle sur l'installation

    * Rescue mode 

Très utile si un jour votre machine ne démarre pas (cela permet de faire un chroot sur le système pour des réparations... Grub par exemple) Permet d'ouvrir un shell sur la partition système.

    * Automated install 

Comme son nom l'indique, une installation automatique où vous n'interviendrez presque pas Identique au choix Install de la première page.

    * Graphical expert install 

Identique à &quot;Expert install&quot; mais en mode graphique

    * Graphical rescue mode 

Identique à &quot;Rescue mode&quot; mais en mode graphique

    * Graphical automated install 

Identique à &quot;Automated install&quot; mais en mode graphique

    * Alternative desktop environments 

Option intéressante si vous souhaitez installer un autre bureau que Gnome (KDE, LXDE, XFCE). Vous retrouverez dans les sous-menus l'ensemble des choix offerts ici.

2[[Fichier:2.PNG|120px|commentaire]]

== Choisir la langue ==

Ici pour des raisons pratiques, je conseille un miroir Français.(à adapter suivant vos besoins)

3[[Fichier:3.PNG|120px|commentaire]] 4[[Fichier:4.PNG|120px|commentaire]] 5[[Fichier:5.PNG|120px|commentaire]] 6[[Fichier:6.PNG|120px|commentaire]]7[[Fichier:7.PNG|120px|commentaire]]

== Choisir la disposition du clavier ==


8[[Fichier:8.PNG|120px|commentaire]] 9[[Fichier:9.PNG|120px|commentaire]] 10[[Fichier:10.PNG|120px|commentaire]]


== Détecter et monter le CD ==


11[[Fichier:12.PNG|120px|commentaire]]

Activer l'usb ? Laissez le choix par défaut : oui

12[[Fichier:13.PNG|120px|commentaire]]

pcmcia ? Cela dépendra de votre machine... Inutile de démarrer ces services si vous n'en avez pas ! La question vous sera reposée à chaque fois qu'une détection de matériel est nécessaire.

13[[Fichier:14.PNG|120px|commentair ]] 14[[Fichier:15.PNG|120px|commentaire]]


== Charger des composants d'installation à partir du CD ==


Bien que je n'ai choisi aucune des options de cette liste, je vous détaille rapidement quelques choix :

Peu de mémoire vive (lowmem) Connexion ppp (par modem) rescue mode support ntfs wireless tools

15[[Fichier:16.PNG|120px|commentaire]] 16[[Fichier:17.PNG|120px|commentaire]] 17[[Fichier:18.PNG|120px|commentaire]] 


==  Détecter le matériel réseau ==


19[[Fichier:20.PNG|120px|commentaire]]


== Configurer le réseau ==


Généralement vous êtes derrière un routeur ou une &quot;box&quot; qui doit vous fournir une adresse IP. Vous laisserez donc l'option DHCP.

21[[Fichier:21.PNG|120px|commentaire]] 22[[Fichier:22.PNG|120px|commentaire]]

Nom de la machine :

23[[Fichier:23.PNG|120px|commentaire]]

Nom du domaine. Il doit vous être fourni par le serveur DHCP. Si ce n'est pas le cas, laissez vide

24[[Fichier:24.PNG|120px|commentaire]]


== Choisir un miroir de l'archive Debian==


25[[Fichier:25.PNG|120px|commentaire]]

Choisissez un miroir pour récupérer les paquets. Inutile que vos paquets fassent 12.000 Km, choisissez un miroir proche de chez vous.

26[[Fichier:26.PNG|120px|commentaire]] 27[[Fichier:27.PNG|120px|commentaire]] 28[[Fichier:28.PNG|120px|commentaire]]

A compléter si vous avez un proxy 

29[[Fichier:29.PNG|120px|commentaire]] ]

* Un des points forts de la &quot;businesscard&quot; par rapport à une &quot;netinstall&quot;, le choix de la branche !

31[[Fichier:31.PNG|120px|commentaire]] 32[[Fichier:32.PNG|120px|commentaire]] 33[[Fichier:33.PNG|120px|commentaire]]


== Créer les utilisateurs et les mots de passe. ==


''Bien prendre note de la syntaxe exacte des noms et, des mots de passe''

34[[Fichier:34.PNG|120px|commentaire]] 35[[Fichier:35.PNG|120px|commentaire]] 36[[Fichier:36.PNG|120px|commentaire]] 37[[Fichier:37.PNG|120px|commentaire]] 38[[Fichier:38.PNG|120px|commentaire]]39[[Fichier:39.PNG|120px|commentaire]] 40[[Fichier:40.PNG|120px|commentaire]] 41[[Fichier:41.PNG|120px|commentaire]] 42[[Fichier:42.PNG|120px|commentaire]] 43[[Fichier:43.PNG|120px|commentaire]]

== Configurer l'horloge ==

44[[Fichier:44.PNG|120px|commentaire]] 45[[Fichier:45.PNG|120px|commentaire]] 46[[Fichier:46.PNG|120px|commentaire]] 47[[Fichier:47.PNG|120px|commentaire]]


== Détecter les disques ==


48[[Fichier:48.PNG|120px|commentaire]]


== Partitionner les disques ==


Il s'agit de la configuration la plus simple:

je fais une parenthèse qui peut intéresser certaines configurations manuelles.

La taille est approximative, et devrait convenir à ceux qui veulent une machine de bureau avec un peu de confort

Le [ /boot ] 50mb suffisent (100 mb c'est mieux) - Séparer la partition /boot n'est plus une nécessité.

La racine [ / ] 3 GIB (10 GB pour un bureau)

Le répertoire des utilisateurs [ /home ] 

49[[Fichier:49.PNG|120px|commentaire]]

Plus d'informations sur le partitionnement. (adjoindre un lien interne)

51[[Fichier:51.PNG|120px|commentaire]] 52[[Fichier:52.PNG|120px|commentaire]]

'''Il est très fortement conseillé de séparer cette partition'''

53[[Fichier:53.PNG|120px|commentaire]] 54[[Fichier:54.PNG|120px|commentaire]] 55[[Fichier:55.PNG|120px|commentaire]]

== Installer le système de base ==


57[[Fichier:57.PNG|120px|commentaire]] 58[[Fichier:58.PNG|120px|commentaire]] 61[[Fichier:61.PNG|120px|commentaire]] 62[[Fichier:62.PNG|120px|commentaire]] 63[[Fichier:63.PNG|120px|commentaire]]


== Configurer l'outil de gestion des paquets ==


64[[Fichier:64.PNG|120px|commentaire]] 65[[Fichier:65.PNG|120px|commentaire]]

Vous pouvez à ce stade choisir d'utiliser des logiciel non-libre, ou pas !

66[[Fichier:66.PNG|120px|commentaire]] 67[[Fichier:67.PNG|120px|commentaire]] 68[[Fichier:68.PNG|120px|commentaire]] 


== Choisir et installer des logiciels ==


70[[Fichier:70.PNG|120px|commentaire]]

Il est possible de participer à une études statistique sur l'utilisation des paquets, ou pas !

71[[Fichier:71.PNG|120px|commentaire]] 72[[Fichier:72.PNG|120px|commentaire]] 73[[Fichier:73.PNG|120px|commentaire]]


== Installer le programme de démarrage Grub sur un disque dur ==


74[[Fichier:74.PNG|120px|commentaire]] 75[[Fichier:75.PNG|120px|commentaire]]


== Terminer l'installation ==


76[[Fichier:76.PNG|120px|commentaire]] 77[[Fichier:77.PNG|120px|commentaire]] 78[[Fichier:78.PNG|120px|commentaire]]


== Démarrer votre nouveau système  ==


79[[Fichier:79.PNG|120px|commentaire]] 80[[Fichier:80.PNG|120px|commentaire]] 82[[Fichier:82.PNG|120px|commentaire]]

Cet article à été inspiré de http://www.isalo.org/wiki.debian-fr/index.php?title=Installer_Debian_pas-%C3%A0-pas

----
[[Utilisateur:Terix|Terix]] 05 décembre 2011 à 06:46 (UTC)</text>
      <sha1>paz1atiksa9qqdzeejmzfpwwz164l3r</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4350</id>
      <parentid>4020</parentid>
      <timestamp>2012-07-26T04:23:16Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Prérequis */</comment>
      <text xml:space="preserve" bytes="8602">= Installation de squeeze avec une businesscard =
Ce document, au travers de captures d'écrans, détaillera pas-à-pas (de façon sommaire) l'installation d'une Debian Squeeze à partir d'une image iso &quot;businesscard&quot;
   
== Prérequis ==

Téléchargement de l'image iso &quot;businesscard&quot; Choisissez la businesscard (en mode expert) si vous souhaitez pouvoir choisir votre distribution (stable/testing/instable) Vous pourrez également choisir votre window manager (gnome, kde, lxde, xfce) Choisissez l'image en fonction de votre machine : i386 ou amd64 en général


$ wget -c http://cdimage.debian.org/debian-cd/6.0.5/amd64/iso-cd/debian-6.0.5-amd64-businesscard.iso

''Il va de soi qu'il faut adapter le choix de l'image à votre matériel
''
Vérifiez votre image iso à l'aide de md5sum

Gravez l'image sur un CD(-RW).

== Installation ==

Modifier votre bios pour que votre machine démarre sur le lecteur de CD/DVD Insérez le disque dans le lecteur et démarrez sur le CD
== Page d'accueil et choix de la méthode d'installation ==

Un menu s'offre à vous :
=== Installation ===

    * Install
    * Graphical install
    * Advanced options
    * Help 
 
    
==== Install ====

Ce choix installera (presque) automatiquement une Debian Squeeze avec les options &quot;standards&quot;
==== Graphical install ====

Même chose que le choix ci-dessus, mais avec une interface graphique. Peut s'avérer moins fiable, en fonction de votre matériel.
==== Advanced options ====

C'est dans cette direction que nous allons...
==== Help ====

Divers fichiers d'aide sur les &quot;pré-requis&quot; à l'installation, les paramètres à passer au boot pour les machines un peu &quot;spéciales&quot;


== Exemple pour l'installation ==


La taille des partitions
Le mode de partitionnement et les outils préconisés

Ces sujets sont à développer ;)

http://pix.isalo.org/?img=1315166185.png

== Installer boot menu ==

1[[Fichier:1.PNG|120px|commentaire]]

Le menu suivant offre des choix intéressants :

    * Back...
    * Expert Install 

C'est cette option que nous choisirons, c'est celle qui laisse le plus de contrôle sur l'installation

    * Rescue mode 

Très utile si un jour votre machine ne démarre pas (cela permet de faire un chroot sur le système pour des réparations... Grub par exemple) Permet d'ouvrir un shell sur la partition système.

    * Automated install 

Comme son nom l'indique, une installation automatique où vous n'interviendrez presque pas Identique au choix Install de la première page.

    * Graphical expert install 

Identique à &quot;Expert install&quot; mais en mode graphique

    * Graphical rescue mode 

Identique à &quot;Rescue mode&quot; mais en mode graphique

    * Graphical automated install 

Identique à &quot;Automated install&quot; mais en mode graphique

    * Alternative desktop environments 

Option intéressante si vous souhaitez installer un autre bureau que Gnome (KDE, LXDE, XFCE). Vous retrouverez dans les sous-menus l'ensemble des choix offerts ici.

2[[Fichier:2.PNG|120px|commentaire]]

== Choisir la langue ==

Ici pour des raisons pratiques, je conseille un miroir Français.(à adapter suivant vos besoins)

3[[Fichier:3.PNG|120px|commentaire]] 4[[Fichier:4.PNG|120px|commentaire]] 5[[Fichier:5.PNG|120px|commentaire]] 6[[Fichier:6.PNG|120px|commentaire]]7[[Fichier:7.PNG|120px|commentaire]]

== Choisir la disposition du clavier ==


8[[Fichier:8.PNG|120px|commentaire]] 9[[Fichier:9.PNG|120px|commentaire]] 10[[Fichier:10.PNG|120px|commentaire]]


== Détecter et monter le CD ==


11[[Fichier:12.PNG|120px|commentaire]]

Activer l'usb ? Laissez le choix par défaut : oui

12[[Fichier:13.PNG|120px|commentaire]]

pcmcia ? Cela dépendra de votre machine... Inutile de démarrer ces services si vous n'en avez pas ! La question vous sera reposée à chaque fois qu'une détection de matériel est nécessaire.

13[[Fichier:14.PNG|120px|commentair ]] 14[[Fichier:15.PNG|120px|commentaire]]


== Charger des composants d'installation à partir du CD ==


Bien que je n'ai choisi aucune des options de cette liste, je vous détaille rapidement quelques choix :

Peu de mémoire vive (lowmem) Connexion ppp (par modem) rescue mode support ntfs wireless tools

15[[Fichier:16.PNG|120px|commentaire]] 16[[Fichier:17.PNG|120px|commentaire]] 17[[Fichier:18.PNG|120px|commentaire]] 


==  Détecter le matériel réseau ==


19[[Fichier:20.PNG|120px|commentaire]]


== Configurer le réseau ==


Généralement vous êtes derrière un routeur ou une &quot;box&quot; qui doit vous fournir une adresse IP. Vous laisserez donc l'option DHCP.

21[[Fichier:21.PNG|120px|commentaire]] 22[[Fichier:22.PNG|120px|commentaire]]

Nom de la machine :

23[[Fichier:23.PNG|120px|commentaire]]

Nom du domaine. Il doit vous être fourni par le serveur DHCP. Si ce n'est pas le cas, laissez vide

24[[Fichier:24.PNG|120px|commentaire]]


== Choisir un miroir de l'archive Debian==


25[[Fichier:25.PNG|120px|commentaire]]

Choisissez un miroir pour récupérer les paquets. Inutile que vos paquets fassent 12.000 Km, choisissez un miroir proche de chez vous.

26[[Fichier:26.PNG|120px|commentaire]] 27[[Fichier:27.PNG|120px|commentaire]] 28[[Fichier:28.PNG|120px|commentaire]]

A compléter si vous avez un proxy 

29[[Fichier:29.PNG|120px|commentaire]] ]

* Un des points forts de la &quot;businesscard&quot; par rapport à une &quot;netinstall&quot;, le choix de la branche !

31[[Fichier:31.PNG|120px|commentaire]] 32[[Fichier:32.PNG|120px|commentaire]] 33[[Fichier:33.PNG|120px|commentaire]]


== Créer les utilisateurs et les mots de passe. ==


''Bien prendre note de la syntaxe exacte des noms et, des mots de passe''

34[[Fichier:34.PNG|120px|commentaire]] 35[[Fichier:35.PNG|120px|commentaire]] 36[[Fichier:36.PNG|120px|commentaire]] 37[[Fichier:37.PNG|120px|commentaire]] 38[[Fichier:38.PNG|120px|commentaire]]39[[Fichier:39.PNG|120px|commentaire]] 40[[Fichier:40.PNG|120px|commentaire]] 41[[Fichier:41.PNG|120px|commentaire]] 42[[Fichier:42.PNG|120px|commentaire]] 43[[Fichier:43.PNG|120px|commentaire]]

== Configurer l'horloge ==

44[[Fichier:44.PNG|120px|commentaire]] 45[[Fichier:45.PNG|120px|commentaire]] 46[[Fichier:46.PNG|120px|commentaire]] 47[[Fichier:47.PNG|120px|commentaire]]


== Détecter les disques ==


48[[Fichier:48.PNG|120px|commentaire]]


== Partitionner les disques ==


Il s'agit de la configuration la plus simple:

je fais une parenthèse qui peut intéresser certaines configurations manuelles.

La taille est approximative, et devrait convenir à ceux qui veulent une machine de bureau avec un peu de confort

Le [ /boot ] 50mb suffisent (100 mb c'est mieux) - Séparer la partition /boot n'est plus une nécessité.

La racine [ / ] 3 GIB (10 GB pour un bureau)

Le répertoire des utilisateurs [ /home ] 

49[[Fichier:49.PNG|120px|commentaire]]

Plus d'informations sur le partitionnement. (adjoindre un lien interne)

51[[Fichier:51.PNG|120px|commentaire]] 52[[Fichier:52.PNG|120px|commentaire]]

'''Il est très fortement conseillé de séparer cette partition'''

53[[Fichier:53.PNG|120px|commentaire]] 54[[Fichier:54.PNG|120px|commentaire]] 55[[Fichier:55.PNG|120px|commentaire]]

== Installer le système de base ==


57[[Fichier:57.PNG|120px|commentaire]] 58[[Fichier:58.PNG|120px|commentaire]] 61[[Fichier:61.PNG|120px|commentaire]] 62[[Fichier:62.PNG|120px|commentaire]] 63[[Fichier:63.PNG|120px|commentaire]]


== Configurer l'outil de gestion des paquets ==


64[[Fichier:64.PNG|120px|commentaire]] 65[[Fichier:65.PNG|120px|commentaire]]

Vous pouvez à ce stade choisir d'utiliser des logiciel non-libre, ou pas !

66[[Fichier:66.PNG|120px|commentaire]] 67[[Fichier:67.PNG|120px|commentaire]] 68[[Fichier:68.PNG|120px|commentaire]] 


== Choisir et installer des logiciels ==


70[[Fichier:70.PNG|120px|commentaire]]

Il est possible de participer à une études statistique sur l'utilisation des paquets, ou pas !

71[[Fichier:71.PNG|120px|commentaire]] 72[[Fichier:72.PNG|120px|commentaire]] 73[[Fichier:73.PNG|120px|commentaire]]


== Installer le programme de démarrage Grub sur un disque dur ==


74[[Fichier:74.PNG|120px|commentaire]] 75[[Fichier:75.PNG|120px|commentaire]]


== Terminer l'installation ==


76[[Fichier:76.PNG|120px|commentaire]] 77[[Fichier:77.PNG|120px|commentaire]] 78[[Fichier:78.PNG|120px|commentaire]]


== Démarrer votre nouveau système  ==


79[[Fichier:79.PNG|120px|commentaire]] 80[[Fichier:80.PNG|120px|commentaire]] 82[[Fichier:82.PNG|120px|commentaire]]

Cet article à été inspiré de http://www.isalo.org/wiki.debian-fr/index.php?title=Installer_Debian_pas-%C3%A0-pas

----
[[Utilisateur:Terix|Terix]] 05 décembre 2011 à 06:46 (UTC)</text>
      <sha1>gg03e5fxjkxmv4ii4hou04t5dzi98ss</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4763</id>
      <parentid>4350</parentid>
      <timestamp>2012-11-17T23:27:47Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>/* Partitionner les disques */</comment>
      <text xml:space="preserve" bytes="8597">= Installation de squeeze avec une businesscard =
Ce document, au travers de captures d'écrans, détaillera pas-à-pas (de façon sommaire) l'installation d'une Debian Squeeze à partir d'une image iso &quot;businesscard&quot;
   
== Prérequis ==

Téléchargement de l'image iso &quot;businesscard&quot; Choisissez la businesscard (en mode expert) si vous souhaitez pouvoir choisir votre distribution (stable/testing/instable) Vous pourrez également choisir votre window manager (gnome, kde, lxde, xfce) Choisissez l'image en fonction de votre machine : i386 ou amd64 en général


$ wget -c http://cdimage.debian.org/debian-cd/6.0.5/amd64/iso-cd/debian-6.0.5-amd64-businesscard.iso

''Il va de soi qu'il faut adapter le choix de l'image à votre matériel
''
Vérifiez votre image iso à l'aide de md5sum

Gravez l'image sur un CD(-RW).

== Installation ==

Modifier votre bios pour que votre machine démarre sur le lecteur de CD/DVD Insérez le disque dans le lecteur et démarrez sur le CD
== Page d'accueil et choix de la méthode d'installation ==

Un menu s'offre à vous :
=== Installation ===

    * Install
    * Graphical install
    * Advanced options
    * Help 
 
    
==== Install ====

Ce choix installera (presque) automatiquement une Debian Squeeze avec les options &quot;standards&quot;
==== Graphical install ====

Même chose que le choix ci-dessus, mais avec une interface graphique. Peut s'avérer moins fiable, en fonction de votre matériel.
==== Advanced options ====

C'est dans cette direction que nous allons...
==== Help ====

Divers fichiers d'aide sur les &quot;pré-requis&quot; à l'installation, les paramètres à passer au boot pour les machines un peu &quot;spéciales&quot;


== Exemple pour l'installation ==


La taille des partitions
Le mode de partitionnement et les outils préconisés

Ces sujets sont à développer ;)

http://pix.isalo.org/?img=1315166185.png

== Installer boot menu ==

1[[Fichier:1.PNG|120px|commentaire]]

Le menu suivant offre des choix intéressants :

    * Back...
    * Expert Install 

C'est cette option que nous choisirons, c'est celle qui laisse le plus de contrôle sur l'installation

    * Rescue mode 

Très utile si un jour votre machine ne démarre pas (cela permet de faire un chroot sur le système pour des réparations... Grub par exemple) Permet d'ouvrir un shell sur la partition système.

    * Automated install 

Comme son nom l'indique, une installation automatique où vous n'interviendrez presque pas Identique au choix Install de la première page.

    * Graphical expert install 

Identique à &quot;Expert install&quot; mais en mode graphique

    * Graphical rescue mode 

Identique à &quot;Rescue mode&quot; mais en mode graphique

    * Graphical automated install 

Identique à &quot;Automated install&quot; mais en mode graphique

    * Alternative desktop environments 

Option intéressante si vous souhaitez installer un autre bureau que Gnome (KDE, LXDE, XFCE). Vous retrouverez dans les sous-menus l'ensemble des choix offerts ici.

2[[Fichier:2.PNG|120px|commentaire]]

== Choisir la langue ==

Ici pour des raisons pratiques, je conseille un miroir Français.(à adapter suivant vos besoins)

3[[Fichier:3.PNG|120px|commentaire]] 4[[Fichier:4.PNG|120px|commentaire]] 5[[Fichier:5.PNG|120px|commentaire]] 6[[Fichier:6.PNG|120px|commentaire]]7[[Fichier:7.PNG|120px|commentaire]]

== Choisir la disposition du clavier ==


8[[Fichier:8.PNG|120px|commentaire]] 9[[Fichier:9.PNG|120px|commentaire]] 10[[Fichier:10.PNG|120px|commentaire]]


== Détecter et monter le CD ==


11[[Fichier:12.PNG|120px|commentaire]]

Activer l'usb ? Laissez le choix par défaut : oui

12[[Fichier:13.PNG|120px|commentaire]]

pcmcia ? Cela dépendra de votre machine... Inutile de démarrer ces services si vous n'en avez pas ! La question vous sera reposée à chaque fois qu'une détection de matériel est nécessaire.

13[[Fichier:14.PNG|120px|commentair ]] 14[[Fichier:15.PNG|120px|commentaire]]


== Charger des composants d'installation à partir du CD ==


Bien que je n'ai choisi aucune des options de cette liste, je vous détaille rapidement quelques choix :

Peu de mémoire vive (lowmem) Connexion ppp (par modem) rescue mode support ntfs wireless tools

15[[Fichier:16.PNG|120px|commentaire]] 16[[Fichier:17.PNG|120px|commentaire]] 17[[Fichier:18.PNG|120px|commentaire]] 


==  Détecter le matériel réseau ==


19[[Fichier:20.PNG|120px|commentaire]]


== Configurer le réseau ==


Généralement vous êtes derrière un routeur ou une &quot;box&quot; qui doit vous fournir une adresse IP. Vous laisserez donc l'option DHCP.

21[[Fichier:21.PNG|120px|commentaire]] 22[[Fichier:22.PNG|120px|commentaire]]

Nom de la machine :

23[[Fichier:23.PNG|120px|commentaire]]

Nom du domaine. Il doit vous être fourni par le serveur DHCP. Si ce n'est pas le cas, laissez vide

24[[Fichier:24.PNG|120px|commentaire]]


== Choisir un miroir de l'archive Debian==


25[[Fichier:25.PNG|120px|commentaire]]

Choisissez un miroir pour récupérer les paquets. Inutile que vos paquets fassent 12.000 Km, choisissez un miroir proche de chez vous.

26[[Fichier:26.PNG|120px|commentaire]] 27[[Fichier:27.PNG|120px|commentaire]] 28[[Fichier:28.PNG|120px|commentaire]]

A compléter si vous avez un proxy 

29[[Fichier:29.PNG|120px|commentaire]] ]

* Un des points forts de la &quot;businesscard&quot; par rapport à une &quot;netinstall&quot;, le choix de la branche !

31[[Fichier:31.PNG|120px|commentaire]] 32[[Fichier:32.PNG|120px|commentaire]] 33[[Fichier:33.PNG|120px|commentaire]]


== Créer les utilisateurs et les mots de passe. ==


''Bien prendre note de la syntaxe exacte des noms et, des mots de passe''

34[[Fichier:34.PNG|120px|commentaire]] 35[[Fichier:35.PNG|120px|commentaire]] 36[[Fichier:36.PNG|120px|commentaire]] 37[[Fichier:37.PNG|120px|commentaire]] 38[[Fichier:38.PNG|120px|commentaire]]39[[Fichier:39.PNG|120px|commentaire]] 40[[Fichier:40.PNG|120px|commentaire]] 41[[Fichier:41.PNG|120px|commentaire]] 42[[Fichier:42.PNG|120px|commentaire]] 43[[Fichier:43.PNG|120px|commentaire]]

== Configurer l'horloge ==

44[[Fichier:44.PNG|120px|commentaire]] 45[[Fichier:45.PNG|120px|commentaire]] 46[[Fichier:46.PNG|120px|commentaire]] 47[[Fichier:47.PNG|120px|commentaire]]


== Détecter les disques ==


48[[Fichier:48.PNG|120px|commentaire]]


== Partitionner les disques ==


Il s'agit de la configuration la plus simple:

je fais une parenthèse qui peut intéresser certaines configurations manuelles.

La taille est approximative, et devrait convenir à ceux qui veulent une machine de bureau avec un peu de confort

Le [ /boot ] 50mb suffisent (100 mb c'est mieux) - Séparer la partition /boot n'est plus une nécessité.

La racine [ / ] 3 GIB (10 GB pour un bureau)

Le répertoire des utilisateurs [ /home ] 

49[[Fichier:49.PNG|120px|commentaire]]

[[Le_partitionnement|Plus d'informations sur le partitionnement.]]

51[[Fichier:51.PNG|120px|commentaire]] 52[[Fichier:52.PNG|120px|commentaire]]

'''Il est très fortement conseillé de séparer cette partition'''

53[[Fichier:53.PNG|120px|commentaire]] 54[[Fichier:54.PNG|120px|commentaire]] 55[[Fichier:55.PNG|120px|commentaire]]

== Installer le système de base ==


57[[Fichier:57.PNG|120px|commentaire]] 58[[Fichier:58.PNG|120px|commentaire]] 61[[Fichier:61.PNG|120px|commentaire]] 62[[Fichier:62.PNG|120px|commentaire]] 63[[Fichier:63.PNG|120px|commentaire]]


== Configurer l'outil de gestion des paquets ==


64[[Fichier:64.PNG|120px|commentaire]] 65[[Fichier:65.PNG|120px|commentaire]]

Vous pouvez à ce stade choisir d'utiliser des logiciel non-libre, ou pas !

66[[Fichier:66.PNG|120px|commentaire]] 67[[Fichier:67.PNG|120px|commentaire]] 68[[Fichier:68.PNG|120px|commentaire]] 


== Choisir et installer des logiciels ==


70[[Fichier:70.PNG|120px|commentaire]]

Il est possible de participer à une études statistique sur l'utilisation des paquets, ou pas !

71[[Fichier:71.PNG|120px|commentaire]] 72[[Fichier:72.PNG|120px|commentaire]] 73[[Fichier:73.PNG|120px|commentaire]]


== Installer le programme de démarrage Grub sur un disque dur ==


74[[Fichier:74.PNG|120px|commentaire]] 75[[Fichier:75.PNG|120px|commentaire]]


== Terminer l'installation ==


76[[Fichier:76.PNG|120px|commentaire]] 77[[Fichier:77.PNG|120px|commentaire]] 78[[Fichier:78.PNG|120px|commentaire]]


== Démarrer votre nouveau système  ==


79[[Fichier:79.PNG|120px|commentaire]] 80[[Fichier:80.PNG|120px|commentaire]] 82[[Fichier:82.PNG|120px|commentaire]]

Cet article à été inspiré de http://www.isalo.org/wiki.debian-fr/index.php?title=Installer_Debian_pas-%C3%A0-pas

----
[[Utilisateur:Terix|Terix]] 05 décembre 2011 à 06:46 (UTC)</text>
      <sha1>lc51ie5egi8r0b7jhwtsaq8ed0rneai</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Installation lenny chroot debootstrap</title>
    <ns>0</ns>
    <id>274</id>
    <revision>
      <id>1185</id>
      <timestamp>2010-03-25T13:00:40Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « {{Sid}}  Installation d'une Lenny avec debootstrap et chroot  L'objectif est d'installer une Lenny (de secours) à partir d'une SID, sans avoir besoin de redémarrer ma machi… »</comment>
      <text xml:space="preserve" bytes="17281">{{Sid}}

Installation d'une Lenny avec debootstrap et chroot

L'objectif est d'installer une Lenny (de secours) à partir d'une SID, sans avoir besoin de redémarrer ma machine une seule fois...
Avantage : rester dans mon environnement de travail pendant toute l'installation...

Parti-pris : utilisation de nano comme éditeur

== Prérequis ==

Pré-requis : Installer debootstrap (chroot se trouve dans le paquet coreutils normalement déjà installé dans votre Debian).
Installer un noyau qui supporte le ext4 si vous avez l'intention de choisir ce système de fichier.

 deb501# apt-get install debootstrap

Formatage de la partition qui va recevoir la Lenny :
J'ai choisi de formater en ext4, vous pouvez choisir le système de fichier de votre choix bien sur.

 deb501# mkfs -V -t ext4 /dev/sda1

Création du répertoire qui va recevoir le système et montage de la partition fraichement formatée dans ce nouveau répertoire.
J'ai choisi /var/chroot/lenny_amd64_sda1.
Un petit « ls » à la fin pour vérifier que la partition est bien montée.

 deb501# mkdir /var/chroot
 deb501# mkdir /var/chroot/lenny_amd64_sda1
 deb501# cd /var/chroot/lenny_amd64_sda1
 deb501# mount /dev/sda1 /var/chroot/lenny_amd64_sda1 
 deb501# cd /var/chroot/lenny_amd64_sda1 
 deb501# ls
 lost+found

== Installation avec debootstrap ==

Installation de la Lenny avec debootstrap (j'ai choisi une Lenny amd64, rien ne vous empêche de choisir une Etch i386 ou bien même une Sid...)
Vous remarquerez que j'ai ajouté &quot;192.168.0.1:9999/&quot; à mon adresse de dépôt...
Explication : j'utilise un dépôt local. Détails ici [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23065 sur le forum.debian-fr.org]
Si vous ne l'avez pas (apt-cacher-ng) modifiez comme suit : 

 http://ftp.debian.org/debian/

Si vous avez une mauvaise connexion, mais disposez d'un CD d'installation, vous pouvez remplacer par file:/cdrom/debian/

 deb501# debootstrap --arch amd64 lenny /var/chroot/lenny_amd64_sda1 http://192.168.0.1:9999/ftp.debian.org/debian/
 I: Retrieving Release                                                                                 
 I: Retrieving Packages                                                                                
 I: Validating Packages                                                                                
 I: Resolving dependencies of required packages...                                                     
 I: Resolving dependencies of base packages...                                                         
 I: Checking component main on http://192.168.0.1:9999/ftp.debian.org/debian...                        
 I: Retrieving adduser
 [...]
 I: Configuring aptitude...
 I: Configuring tasksel-data...
 I: Configuring tasksel...
 I: Base system installed successfully.

Si tout s'est bien passé, un &quot;ls&quot; vous retournera la toute nouvelle arborescence

 deb501# ls
 bin  boot  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  sbin  selinux  srv  sys tmp  usr  var

A ce niveau, votre Lenny est installée, mais elle n'est pas pleinement fonctionelle ni « autonome ». Vous ne pourrez pas bouter dessus...

== Préparation du chroot ==

Il faut maintenant préparer le chroot. Trois répertoires sont importants pour que cela fonctionne convenablement : /tmp /dev /proc
Vous éditez votre fstab pour que ces répertoires soient montés (et liés - « bind ») automatiquement dans votre répertoire chroot.

 deb501# nano /etc/fstab

Ajoutez :

 ############################################ montages chroot &quot;liés&quot;
 # sid32 chroot
 /tmp    /var/chroot/lenny_amd64_sda1/tmp        none    bind    0       0
 /dev    /var/chroot/lenny_amd64_sda1/dev        none    bind    0       0
 /proc   /var/chroot/lenny_amd64_sda1/proc       none    bind    0       0

Ctrl+O (enregistrez) Ctrl+X (Quittez)

 deb501# mount -a (cette commande monte tout ce qui est dans votre fstab)

Pour « normaliser les comptes et groupes » de votre nouvelle Lenny (que les utilisateurs et groupes aient les mêmes « id » dans votre système &quot;hôte&quot; et dans votre chroot tapez les commandes suivantes :

deb501# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/passwd &gt;&gt; /var/chroot/lenny_amd64_sda1/etc/passwd
deb501# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/group &gt;&gt; /var/chroot/lenny_amd64_sda1/etc/group

Vous allez maintenant entrer dans votre environnement chroot (tadaa !)

deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
sh-3.2#

== finalisation de l'installation et réglages de la Lenny ==

Vous êtes maintenant dans votre nouvelle Lenny, mais ce n'est pas terminé, votre système est incomplet, impossible de booter dessus...

=== &quot;locales&quot; ===

Nous allons maintenant mettre en français (ou ce que vous voulez...), configurer la localisation, et surtout... régler l'heure. L 'heure est très importante. Si vous démarrez sur ce nouveau système avec une mauvaise heure (dans le futur par rapport au système sur lequel vous êtes), le prochain démarrage vous laissera un goût amer, vous serez obligé de faire un fsck... Je me suis fait prendre, une heure de vérification de disque...
En effet, au montage des disques le système inscrit l'heure (au tout début du disque). Si cette heure est « dans le futur », au démarrage suivant (sur une autre installation), il ne voudra pas démarrer et exigera une vérification de disque...

 sh-3.2# apt-get update
 sh-3.2# apt-get install locales
 sh-3.2# dpkg-reconfigure locales
 sh-3.2# dpkg-reconfigure tzdata

 Current default timezone: 'Indian/Antananarivo'
 Local time is now:      Thu Oct 15 15:02:45 EAT 2009.
 Universal Time is now:  Thu Oct 15 12:02:45 UTC 2009.

 sh-3.2#
 sh-3.2# hwclock --systohc --utc

Il faut modifier le fichier /etc/default/rcS pour forcer le système à se mettre en heure locale...
Explications sur [http://forum.debian-fr.org/viewtopic.php?p=210286#p210286 le forum.debian-fr.org]

 sh-3.2# nano /etc/default/rcS

il faut modifier la ligne utc : UTC=no

 sh-3.2# apt-get install ntpdate
 sh-3.2# ntpdate ntp.metas.ch
 15 Oct 15:04:16 ntpdate[22869]: adjust time server 162.23.41.34 offset 0.014581 sec[/code]

=== Le sources.list ===

Nous allons maintenant compléter nos dépôts
La création de apt.conf est mon « bonus » j'utilise apt-cacher-ng comme je le disais plus haut...
Inutile pour vous si vous n'avez pas apt-cacher-ng installé)

 sh-3.2# nano /etc/apt/apt.conf
 Acquire::http { Proxy &quot;http://192.168.0.1:9999&quot;; };[/code]

J'ai complété avec quelques dépôts. Vous pourriez tout aussi bien ne pas le faire, mais c'est sympa d'avoir un peu de choix, non ? J'ai ajouté le dépôt « backport » pour avoir accès à un noyau récent , vous n'êtes, là encore, pas obligé de la faire.

 sh-3.2# nano /etc/apt/sources.list
 deb http://ftp.debian.org/debian lenny main
 ###### Debian Main Repos
 deb http://ftp.fr.debian.org/debian/ lenny contrib non-free
 ###### Debian Update Repos
 deb http://security.debian.org/ lenny/updates main contrib non-free
 deb http://ftp.fr.debian.org/debian/ lenny-proposed-updates main contrib non-free
 deb ftp://ftp.proxad.net/mirrors/volatile.debian.net/ lenny/volatile main contrib non-free
 #### Debian Backports - http://www.backports.org
 ## Run this command: gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C &amp;&amp; gpg --export 16BA136C | apt-key add -
 deb http://www.backports.org/debian/ lenny-backports main contrib non-free
 #### Debian Multimedia - http://www.debian-multimedia.org/
 ## Run this command: apt-get update &amp;&amp; apt-get install debian-multimedia-keyring &amp;&amp; apt-get update
 deb ftp://ftp.debian-multimedia.org lenny main

Ajoutons les clés des nouveaux dépots et mettons à jour :

 sh-3.2# gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C &amp;&amp; gpg --export 16BA136C | apt-key add -
 sh-3.2# apt-get update
 […] Vous obtiendrez évidemment cette erreur :
 W: GPG error: ftp://ftp.debian-multimedia.org lenny Release: Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907
 W: Vous pouvez lancer « apt-get update » pour corriger ces problèmes.
 sh-3.2# apt-get install debian-multimedia-keyring &amp;&amp; apt-get update
 [...]
 ATTENTION : les paquets suivants n'ont pas été authentifiés.
   debian-multimedia-keyring
 Faut-il installer ces paquets sans vérification (o/N) ? o
 sh-3.2#
 sh-3.2# apt-get upgrade

=== Clavier === 

Continuons... Le paquet MC n'est pas une obligation, moi je ne peux pas m'en passer...

 sh-3.2# apt-get install mc

Configurons maintenant le clavier

 sh-3.2# apt-get install console-data (azerty/french)

[…] Je ne sais pour quelle raison il nous met d'office le clavier mac-usb-f.. Dans le chroot il ne doit pas détecter autre chose...

 Looking for keymap to install:
 mac-usb-f

Rectifions :

 sh-3.2# dpkg-reconfigure -plow console-data (pour choisir le « bon » clavier)
(option choisir un codage clavier dans la liste complète) - pc / azerty / French / Same as X11 (latin9) / Standard
 Looking for keymap to install:
 fr-latin9 (cette fois-ci c'est bon)
 sh-3.2# exit

Nous sommes sortis du chroot, quelques fichiers à récupérer... Pour avoir un bon hostname, le réseau, le montage correct des disques...

=== hostname et fstab ===

 deb501# cp /etc/hosts /etc/hostname /etc/resolv.conf /var/chroot/lenny_amd64_sda1/etc
 deb501# cp /etc/network/interfaces /var/chroot/lenny_amd64_sda1/etc/network
 deb501# cp /etc/fstab /var/chroot/lenny_amd64_sda1/etc
 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh

+ Réglage du fsab

 sh-3.2# blkid (cette commande permat de récupérer le UUID de vos disques pour votre nouveau fstab... Je me suis fait prendre aussi, le formatage change l'UUID...)
 /dev/sdc1: UUID=&quot;8125f9ad-fa09-415e-8b2b-1562c5791d8b&quot; TYPE=&quot;ext3&quot;
 /dev/sdc2: UUID=&quot;0996b96e-3d86-4395-9cf5-cb744b543a52&quot; TYPE=&quot;ext3&quot;
 /dev/sdb1: UUID=&quot;345408AD54087440&quot; LABEL=&quot;Nouveau nom&quot; TYPE=&quot;ntfs&quot;
 /dev/sdd1: UUID=&quot;3CE6F2CCE6F28584&quot; LABEL=&quot;Nouveau nom&quot; TYPE=&quot;ntfs&quot;
 /dev/sde1: LABEL=&quot;Divers&quot; UUID=&quot;3525ee82-8d13-4caa-a27e-14de985f432d&quot; TYPE=&quot;ext3&quot;
 /dev/sda1: UUID=&quot;248403b5-cdcd-4430-bd96-67b106327373&quot; TYPE=&quot;ext4&quot;
 /dev/sda5: TYPE=&quot;swap&quot;
 ...etc
 sh-3.2# nano /etc/fstab (a rectifier en fonction de votre configuration)
 # /etc/fstab: static file system information.
 #
 # &lt;file system&gt; &lt;mount point&gt;   &lt;type&gt;  &lt;options&gt;       &lt;dump&gt;  &lt;pass&gt;
 proc    /proc   proc    defaults        0       0
 none    /proc/bus/usb   usbfs   devgid=119,devmode=664  0       0
 none    /dev/bus/usb    usbfs   devgid=1001,devmode=664 0       0
 /dev/sda5       none    swap    sw      0       0
 # Montage racine (/dev/sda1) ! Attention si votre partition racine est en ext4 !
 UUID=248403b5-cdcd-4430-bd96-67b106327373       /       ext4    errors=remount-ro       0       1
 #Entry for /dev/sda8 :
 UUID=709e9380-d39f-49db-b759-cac7a87717e6       /home   ext4    relatime        0       2
 ...etc
 # Montage DVD SATA
 /dev/scd0       /media/cdrom0   udf,iso9660     user,noauto     0       0[/code]

Création des repertoire de montage des disques de la nouvelle machine : (en fonction de votre configuration et de vos choix...)

 sh-3.2# mkdir /mnt/sda7 /mnt/Divers1 /mnt/Divers2 /mnt/XP /mnt/deb /mnt/home2 /mnt/zicmu[/code]

=== L'environement graphique ===

Maintenant ? Un environnement graphique ! (J'ai choisi Xfce, vous faites comme vous voulez... Gnome, Kde, aucun...

 sh-3.2# apt-get install xfce4
 [...]
 0 mis à jour, 275 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 132Mo dans les archives.
 Après cette opération, 386Mo d'espace disque supplémentaires seront utilisés.
 Souhaitez-vous continuer [O/n] ?o
 [...]
 Traitement des actions différées (« triggers ») pour « initramfs-tools »...
 sh-3.2#

Modification du Xorg.conf pour avoir le bon clavier au démarrage et le bon driver de votre carte vidéo. J'ai choisi nv (j'ai une nvidia vous l'aurez deviné...). Si vous ne savez pas mettez « Driver  &quot;vesa »&quot; pour ne pas prendre de risque. Vous pourrez changer ça plus tard...

 sh-3.2# nano /etc/X11/xorg.conf
 
 Section &quot;InputDevice&quot;
         Identifier      &quot;Generic Keyboard&quot;
         Driver          &quot;kbd&quot;
         Option          &quot;XkbRules&quot;      &quot;xorg&quot;
         Option          &quot;XkbModel&quot;      &quot;pc105&quot; (à changer)
         Option          &quot;XkbLayout&quot;     &quot;fr&quot; (à changer)
         Option          &quot;XkbVariant&quot;    &quot;latin9&quot; (à ajouter)
 EndSection
 
 Section &quot;InputDevice&quot;
         Identifier      &quot;Configured Mouse&quot;
         Driver          &quot;mouse&quot;
 EndSection
 
 Section &quot;Device&quot;
         Driver  &quot;nv&quot; (ajouter et modifier en fonction de votre carte)
         Identifier &quot;Card0&quot; (ajouter)
 #        Identifier      &quot;Configured Video Device&quot;
 EndSection
 
 Section &quot;Monitor&quot;
         Identifier      &quot;Configured Monitor&quot;
 EndSection
 
 Section &quot;Screen&quot;
         Identifier      &quot;Default Screen&quot;
         Monitor         &quot;Configured Monitor&quot;
 EndSection

=== Le noyau et Grub2 ===

Installons un noyau... Ce serait bête d'oublier  :wink: 

 sh-3.2# apt-cache search linux-image (choisissez dans la liste qu'il vous propose...)
 [...]
 linux-headers-2.6.30-bpo.2-amd64 - Header files for Linux 2.6.30-bpo.2-amd64
 [...]

Ici il faut récupérer votre kernel-img.conf qui permette de convenablement lancer initramfs à l'installation du nouveau noyau dans le chroot.
Ce fichier n'existe pas dans le système créé par debootstrap.
La ligne intéressante : do_initrd = yes

 sh-3.2# exit
 deb501# cp /etc/kernel-img.conf /var/chroot/lenny_amd64_sda1/etc/kernel-img.conf
 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
 sh-3.2# apt-get install linux-image-2.6.30-bpo.2-amd64
 sh-3.2# exit

Maintenant... Modifions notre grub pour que ce nouveau système soit opérationnel :
 :!: Attention, je suis sous Grub2. Si vous êtes sous Grub &quot;legacy&quot; la commande est différente évidemment...

 deb501# grub-mkconfig 
 Generating grub.cfg ...

Voici la nouvelle entrée qui nous intéresse...

 menuentry &quot;Debian GNU/Linux (5.0.3) (on /dev/sda1)&quot; {
        insmod ext2
        set root=(hd0,1)
        search --no-floppy --fs-uuid --set 248403b5-cdcd-4430-bd96-67b106327373
        linux /boot/vmlinuz-2.6.30-bpo.2-amd64 root=/dev/sda1 rootfstype=ext4
        initrd /boot/initrd.img-2.6.30-bpo.2-amd64
 [...]
 done deb501#

Vous pouvez vérifier dans la console ou en tapant nano /boot/grub/grub.cfg (ou nano /boot/grub/menu.lst si vous êtes en grub legacy)
J'ai rajouté &quot;rootfstype=ext4&quot;. Sans ce petit morceau de code votre partition fromatée en ext4 ne démarera pas... (Invalid filesystem...)

=== Divers - mots de passe ===

Derniers &quot;fignolages&quot;... J'installe un navigateur et les drivers pour que mes disque nfs soient pleinement opérationnels. Et... zsh car c'est cool !  :wink: 

 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
 sh-3.2# apt-get install gparted ntfs-3g iceweasel
 sh-3.2# apt-get install zsh[/code]

Enfin, les mots de passe...
Debootstrap installe un système sans mots de passe... Si vous redémarrez maintenant vous vous loguerez en root dans votre nouveau système sans montrer patte blanche... Un peu génant non ?

 sh-3.2# nano /etc/passwd
 laurent:x:1000:1000:Laurent Voulzy:/home/laurent:/bin/zsh

Vous enlevez le x pour que cela ressemble à ça :

 laurent::1000:1000:Laurent Voulzy:/home/laurent:/bin/zsh

Ceci afin de pouvoir loguer vos utilisateurs &quot;normaux&quot;. Il faut maintenant créer les mots de passe.

 sh-3.2# /usr/bin/passwd
 
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 sh-3.2# su - laurent
 laurent@deb501 jeu oct 15 05:16:20
 ~/  /usr/bin/passwd
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 ~/ exit
 sh-3.2# exit
 deb501# reboot

Voilà vous disposez d'une toute fraîche installation, fonctionnelle !

== Taskel ==

Pour avoir un système un peu plus complet, en fonction de vos besoins, vous pouvez utiliser l'utilitaire tasksel.
La commande suivante détaille les &quot;tâches&quot; que tasksel peut réaliser pour vous... (Vous remarquerez que ce sont les mêmes choix que dans une installation &quot;classique&quot; qui sont proposés)

 sh-3.2# tasksel --list-tasks
 u desktop       Desktop environment
 u web-server    Web server
 u print-server  Print server
 u dns-server    DNS server
 u file-server   File server
 u mail-server   Mail server
 u database-server       SQL database
 u laptop        Laptop
 u manual        manual package selection

Chaque &quot;tâche&quot; installe un ensemble de paquets utiles pour certaines utilisations. &quot;u&quot; pour non installé. Une tâche installée commence par &quot;i&quot;
Il ne vous reste plus qu'a taper dans la console

 # tasksel --task-packages nom_tache

Il existe une autre tâche, qui n'est pas dans la liste ci-dessus[code]tasksel install standard[/code]Qui installe un ensemble de paquets &quot;standards&quot;. Je vous renvoie au [[http://www.debian-facile.org/wiki/manuel:tasksel Wiki de debian-facile]] pour plus de détails.

--[[Utilisateur:Lol|Lol]] 25 mars 2010 à 13:00 (UTC)

[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 source]

[[Catégorie:Installation]]</text>
      <sha1>69zf9xro9ulji38dbs49ikqtkvhjicd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1187</id>
      <parentid>1185</parentid>
      <timestamp>2010-03-26T04:16:33Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="17297">{{Sid}}

Installation d'une Lenny avec debootstrap et chroot

L'objectif est d'installer une Lenny (sur une nouvelle partition) à partir d'une SID, sans avoir besoin de redémarrer ma machine une seule fois...
Avantage : rester dans mon environnement de travail pendant toute l'installation...

Parti-pris : utilisation de nano comme éditeur

== Prérequis ==

Pré-requis : Installer debootstrap (chroot se trouve dans le paquet coreutils normalement déjà installé dans votre Debian).
Installer un noyau qui supporte le ext4 si vous avez l'intention de choisir ce système de fichier.

 deb501# apt-get install debootstrap

Formatage de la partition qui va recevoir la Lenny :
J'ai choisi de formater en ext4, vous pouvez choisir le système de fichier de votre choix bien sur.

 deb501# mkfs -V -t ext4 /dev/sda1

Création du répertoire qui va recevoir le système et montage de la partition fraichement formatée dans ce nouveau répertoire.
J'ai choisi /var/chroot/lenny_amd64_sda1.
Un petit « ls » à la fin pour vérifier que la partition est bien montée.

 deb501# mkdir /var/chroot
 deb501# mkdir /var/chroot/lenny_amd64_sda1
 deb501# cd /var/chroot/lenny_amd64_sda1
 deb501# mount /dev/sda1 /var/chroot/lenny_amd64_sda1 
 deb501# cd /var/chroot/lenny_amd64_sda1 
 deb501# ls
 lost+found

== Installation avec debootstrap ==

Installation de la Lenny avec debootstrap (j'ai choisi une Lenny amd64, rien ne vous empêche de choisir une Etch i386 ou bien même une Sid...)
Vous remarquerez que j'ai ajouté &quot;192.168.0.1:9999/&quot; à mon adresse de dépôt...
Explication : j'utilise un dépôt local. Détails ici [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23065 sur le forum.debian-fr.org]
Si vous ne l'avez pas (apt-cacher-ng) modifiez comme suit : 

 http://ftp.debian.org/debian/

Si vous avez une mauvaise connexion, mais disposez d'un CD d'installation, vous pouvez remplacer par file:/cdrom/debian/

 deb501# debootstrap --arch amd64 lenny /var/chroot/lenny_amd64_sda1 http://192.168.0.1:9999/ftp.debian.org/debian/
 I: Retrieving Release                                                                                 
 I: Retrieving Packages                                                                                
 I: Validating Packages                                                                                
 I: Resolving dependencies of required packages...                                                     
 I: Resolving dependencies of base packages...                                                         
 I: Checking component main on http://192.168.0.1:9999/ftp.debian.org/debian...                        
 I: Retrieving adduser
 [...]
 I: Configuring aptitude...
 I: Configuring tasksel-data...
 I: Configuring tasksel...
 I: Base system installed successfully.

Si tout s'est bien passé, un &quot;ls&quot; vous retournera la toute nouvelle arborescence

 deb501# ls
 bin  boot  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  sbin  selinux  srv  sys tmp  usr  var

A ce niveau, votre Lenny est installée, mais elle n'est pas pleinement fonctionelle ni « autonome ». Vous ne pourrez pas bouter dessus...

== Préparation du chroot ==

Il faut maintenant préparer le chroot. Trois répertoires sont importants pour que cela fonctionne convenablement : /tmp /dev /proc
Vous éditez votre fstab pour que ces répertoires soient montés (et liés - « bind ») automatiquement dans votre répertoire chroot.

 deb501# nano /etc/fstab

Ajoutez :

 ############################################ montages chroot &quot;liés&quot;
 # sid32 chroot
 /tmp    /var/chroot/lenny_amd64_sda1/tmp        none    bind    0       0
 /dev    /var/chroot/lenny_amd64_sda1/dev        none    bind    0       0
 /proc   /var/chroot/lenny_amd64_sda1/proc       none    bind    0       0

Ctrl+O (enregistrez) Ctrl+X (Quittez)

 deb501# mount -a (cette commande monte tout ce qui est dans votre fstab)

Pour « normaliser les comptes et groupes » de votre nouvelle Lenny (que les utilisateurs et groupes aient les mêmes « id » dans votre système &quot;hôte&quot; et dans votre chroot tapez les commandes suivantes :

deb501# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/passwd &gt;&gt; /var/chroot/lenny_amd64_sda1/etc/passwd
deb501# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/group &gt;&gt; /var/chroot/lenny_amd64_sda1/etc/group

Vous allez maintenant entrer dans votre environnement chroot (tadaa !)

deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
sh-3.2#

== finalisation de l'installation et réglages de la Lenny ==

Vous êtes maintenant dans votre nouvelle Lenny, mais ce n'est pas terminé, votre système est incomplet, impossible de booter dessus...

=== &quot;locales&quot; ===

Nous allons maintenant mettre en français (ou ce que vous voulez...), configurer la localisation, et surtout... régler l'heure. L 'heure est très importante. Si vous démarrez sur ce nouveau système avec une mauvaise heure (dans le futur par rapport au système sur lequel vous êtes), le prochain démarrage vous laissera un goût amer, vous serez obligé de faire un fsck... Je me suis fait prendre, une heure de vérification de disque...
En effet, au montage des disques le système inscrit l'heure (au tout début du disque). Si cette heure est « dans le futur », au démarrage suivant (sur une autre installation), il ne voudra pas démarrer et exigera une vérification de disque...

 sh-3.2# apt-get update
 sh-3.2# apt-get install locales
 sh-3.2# dpkg-reconfigure locales
 sh-3.2# dpkg-reconfigure tzdata

 Current default timezone: 'Indian/Antananarivo'
 Local time is now:      Thu Oct 15 15:02:45 EAT 2009.
 Universal Time is now:  Thu Oct 15 12:02:45 UTC 2009.

 sh-3.2#
 sh-3.2# hwclock --systohc --utc

Il faut modifier le fichier /etc/default/rcS pour forcer le système à se mettre en heure locale...
Explications sur [http://forum.debian-fr.org/viewtopic.php?p=210286#p210286 le forum.debian-fr.org]

 sh-3.2# nano /etc/default/rcS

il faut modifier la ligne utc : UTC=no

 sh-3.2# apt-get install ntpdate
 sh-3.2# ntpdate ntp.metas.ch
 15 Oct 15:04:16 ntpdate[22869]: adjust time server 162.23.41.34 offset 0.014581 sec[/code]

=== Le sources.list ===

Nous allons maintenant compléter nos dépôts
La création de apt.conf est mon « bonus » j'utilise apt-cacher-ng comme je le disais plus haut...
Inutile pour vous si vous n'avez pas apt-cacher-ng installé)

 sh-3.2# nano /etc/apt/apt.conf
 Acquire::http { Proxy &quot;http://192.168.0.1:9999&quot;; };[/code]

J'ai complété avec quelques dépôts. Vous pourriez tout aussi bien ne pas le faire, mais c'est sympa d'avoir un peu de choix, non ? J'ai ajouté le dépôt « backport » pour avoir accès à un noyau récent , vous n'êtes, là encore, pas obligé de la faire.

 sh-3.2# nano /etc/apt/sources.list
 deb http://ftp.debian.org/debian lenny main
 ###### Debian Main Repos
 deb http://ftp.fr.debian.org/debian/ lenny contrib non-free
 ###### Debian Update Repos
 deb http://security.debian.org/ lenny/updates main contrib non-free
 deb http://ftp.fr.debian.org/debian/ lenny-proposed-updates main contrib non-free
 deb ftp://ftp.proxad.net/mirrors/volatile.debian.net/ lenny/volatile main contrib non-free
 #### Debian Backports - http://www.backports.org
 ## Run this command: gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C &amp;&amp; gpg --export 16BA136C | apt-key add -
 deb http://www.backports.org/debian/ lenny-backports main contrib non-free
 #### Debian Multimedia - http://www.debian-multimedia.org/
 ## Run this command: apt-get update &amp;&amp; apt-get install debian-multimedia-keyring &amp;&amp; apt-get update
 deb ftp://ftp.debian-multimedia.org lenny main

Ajoutons les clés des nouveaux dépots et mettons à jour :

 sh-3.2# gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C &amp;&amp; gpg --export 16BA136C | apt-key add -
 sh-3.2# apt-get update
 […] Vous obtiendrez évidemment cette erreur :
 W: GPG error: ftp://ftp.debian-multimedia.org lenny Release: Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907
 W: Vous pouvez lancer « apt-get update » pour corriger ces problèmes.
 sh-3.2# apt-get install debian-multimedia-keyring &amp;&amp; apt-get update
 [...]
 ATTENTION : les paquets suivants n'ont pas été authentifiés.
   debian-multimedia-keyring
 Faut-il installer ces paquets sans vérification (o/N) ? o
 sh-3.2#
 sh-3.2# apt-get upgrade

=== Clavier === 

Continuons... Le paquet MC n'est pas une obligation, moi je ne peux pas m'en passer...

 sh-3.2# apt-get install mc

Configurons maintenant le clavier

 sh-3.2# apt-get install console-data (azerty/french)

[…] Je ne sais pour quelle raison il nous met d'office le clavier mac-usb-f.. Dans le chroot il ne doit pas détecter autre chose...

 Looking for keymap to install:
 mac-usb-f

Rectifions :

 sh-3.2# dpkg-reconfigure -plow console-data (pour choisir le « bon » clavier)
(option choisir un codage clavier dans la liste complète) - pc / azerty / French / Same as X11 (latin9) / Standard
 Looking for keymap to install:
 fr-latin9 (cette fois-ci c'est bon)
 sh-3.2# exit

Nous sommes sortis du chroot, quelques fichiers à récupérer... Pour avoir un bon hostname, le réseau, le montage correct des disques...

=== hostname et fstab ===

 deb501# cp /etc/hosts /etc/hostname /etc/resolv.conf /var/chroot/lenny_amd64_sda1/etc
 deb501# cp /etc/network/interfaces /var/chroot/lenny_amd64_sda1/etc/network
 deb501# cp /etc/fstab /var/chroot/lenny_amd64_sda1/etc
 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh

+ Réglage du fsab

 sh-3.2# blkid (cette commande permat de récupérer le UUID de vos disques pour votre nouveau fstab... Je me suis fait prendre aussi, le formatage change l'UUID...)
 /dev/sdc1: UUID=&quot;8125f9ad-fa09-415e-8b2b-1562c5791d8b&quot; TYPE=&quot;ext3&quot;
 /dev/sdc2: UUID=&quot;0996b96e-3d86-4395-9cf5-cb744b543a52&quot; TYPE=&quot;ext3&quot;
 /dev/sdb1: UUID=&quot;345408AD54087440&quot; LABEL=&quot;Nouveau nom&quot; TYPE=&quot;ntfs&quot;
 /dev/sdd1: UUID=&quot;3CE6F2CCE6F28584&quot; LABEL=&quot;Nouveau nom&quot; TYPE=&quot;ntfs&quot;
 /dev/sde1: LABEL=&quot;Divers&quot; UUID=&quot;3525ee82-8d13-4caa-a27e-14de985f432d&quot; TYPE=&quot;ext3&quot;
 /dev/sda1: UUID=&quot;248403b5-cdcd-4430-bd96-67b106327373&quot; TYPE=&quot;ext4&quot;
 /dev/sda5: TYPE=&quot;swap&quot;
 ...etc
 sh-3.2# nano /etc/fstab (a rectifier en fonction de votre configuration)
 # /etc/fstab: static file system information.
 #
 # &lt;file system&gt; &lt;mount point&gt;   &lt;type&gt;  &lt;options&gt;       &lt;dump&gt;  &lt;pass&gt;
 proc    /proc   proc    defaults        0       0
 none    /proc/bus/usb   usbfs   devgid=119,devmode=664  0       0
 none    /dev/bus/usb    usbfs   devgid=1001,devmode=664 0       0
 /dev/sda5       none    swap    sw      0       0
 # Montage racine (/dev/sda1) ! Attention si votre partition racine est en ext4 !
 UUID=248403b5-cdcd-4430-bd96-67b106327373       /       ext4    errors=remount-ro       0       1
 #Entry for /dev/sda8 :
 UUID=709e9380-d39f-49db-b759-cac7a87717e6       /home   ext4    relatime        0       2
 ...etc
 # Montage DVD SATA
 /dev/scd0       /media/cdrom0   udf,iso9660     user,noauto     0       0[/code]

Création des repertoire de montage des disques de la nouvelle machine : (en fonction de votre configuration et de vos choix...)

 sh-3.2# mkdir /mnt/sda7 /mnt/Divers1 /mnt/Divers2 /mnt/XP /mnt/deb /mnt/home2 /mnt/zicmu[/code]

=== L'environement graphique ===

Maintenant ? Un environnement graphique ! (J'ai choisi Xfce, vous faites comme vous voulez... Gnome, Kde, aucun...

 sh-3.2# apt-get install xfce4
 [...]
 0 mis à jour, 275 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 132Mo dans les archives.
 Après cette opération, 386Mo d'espace disque supplémentaires seront utilisés.
 Souhaitez-vous continuer [O/n] ?o
 [...]
 Traitement des actions différées (« triggers ») pour « initramfs-tools »...
 sh-3.2#

Modification du Xorg.conf pour avoir le bon clavier au démarrage et le bon driver de votre carte vidéo. J'ai choisi nv (j'ai une nvidia vous l'aurez deviné...). Si vous ne savez pas mettez « Driver  &quot;vesa »&quot; pour ne pas prendre de risque. Vous pourrez changer ça plus tard...

 sh-3.2# nano /etc/X11/xorg.conf
 
 Section &quot;InputDevice&quot;
         Identifier      &quot;Generic Keyboard&quot;
         Driver          &quot;kbd&quot;
         Option          &quot;XkbRules&quot;      &quot;xorg&quot;
         Option          &quot;XkbModel&quot;      &quot;pc105&quot; (à changer)
         Option          &quot;XkbLayout&quot;     &quot;fr&quot; (à changer)
         Option          &quot;XkbVariant&quot;    &quot;latin9&quot; (à ajouter)
 EndSection
 
 Section &quot;InputDevice&quot;
         Identifier      &quot;Configured Mouse&quot;
         Driver          &quot;mouse&quot;
 EndSection
 
 Section &quot;Device&quot;
         Driver  &quot;nv&quot; (ajouter et modifier en fonction de votre carte)
         Identifier &quot;Card0&quot; (ajouter)
 #        Identifier      &quot;Configured Video Device&quot;
 EndSection
 
 Section &quot;Monitor&quot;
         Identifier      &quot;Configured Monitor&quot;
 EndSection
 
 Section &quot;Screen&quot;
         Identifier      &quot;Default Screen&quot;
         Monitor         &quot;Configured Monitor&quot;
 EndSection

=== Le noyau et Grub2 ===

Installons un noyau... Ce serait bête d'oublier  :wink: 

 sh-3.2# apt-cache search linux-image (choisissez dans la liste qu'il vous propose...)
 [...]
 linux-headers-2.6.30-bpo.2-amd64 - Header files for Linux 2.6.30-bpo.2-amd64
 [...]

Ici il faut récupérer votre kernel-img.conf qui permette de convenablement lancer initramfs à l'installation du nouveau noyau dans le chroot.
Ce fichier n'existe pas dans le système créé par debootstrap.
La ligne intéressante : do_initrd = yes

 sh-3.2# exit
 deb501# cp /etc/kernel-img.conf /var/chroot/lenny_amd64_sda1/etc/kernel-img.conf
 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
 sh-3.2# apt-get install linux-image-2.6.30-bpo.2-amd64
 sh-3.2# exit

Maintenant... Modifions notre grub pour que ce nouveau système soit opérationnel :
 :!: Attention, je suis sous Grub2. Si vous êtes sous Grub &quot;legacy&quot; la commande est différente évidemment...

 deb501# grub-mkconfig 
 Generating grub.cfg ...

Voici la nouvelle entrée qui nous intéresse...

 menuentry &quot;Debian GNU/Linux (5.0.3) (on /dev/sda1)&quot; {
        insmod ext2
        set root=(hd0,1)
        search --no-floppy --fs-uuid --set 248403b5-cdcd-4430-bd96-67b106327373
        linux /boot/vmlinuz-2.6.30-bpo.2-amd64 root=/dev/sda1 rootfstype=ext4
        initrd /boot/initrd.img-2.6.30-bpo.2-amd64
 [...]
 done deb501#

Vous pouvez vérifier dans la console ou en tapant nano /boot/grub/grub.cfg (ou nano /boot/grub/menu.lst si vous êtes en grub legacy)
J'ai rajouté &quot;rootfstype=ext4&quot;. Sans ce petit morceau de code votre partition fromatée en ext4 ne démarera pas... (Invalid filesystem...)

=== Divers - mots de passe ===

Derniers &quot;fignolages&quot;... J'installe un navigateur et les drivers pour que mes disque nfs soient pleinement opérationnels. Et... zsh car c'est cool !  :wink: 

 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
 sh-3.2# apt-get install gparted ntfs-3g iceweasel
 sh-3.2# apt-get install zsh[/code]

Enfin, les mots de passe...
Debootstrap installe un système sans mots de passe... Si vous redémarrez maintenant vous vous loguerez en root dans votre nouveau système sans montrer patte blanche... Un peu génant non ?

 sh-3.2# nano /etc/passwd
 laurent:x:1000:1000:Laurent Voulzy:/home/laurent:/bin/zsh

Vous enlevez le x pour que cela ressemble à ça :

 laurent::1000:1000:Laurent Voulzy:/home/laurent:/bin/zsh

Ceci afin de pouvoir loguer vos utilisateurs &quot;normaux&quot;. Il faut maintenant créer les mots de passe.

 sh-3.2# /usr/bin/passwd
 
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 sh-3.2# su - laurent
 laurent@deb501 jeu oct 15 05:16:20
 ~/  /usr/bin/passwd
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 ~/ exit
 sh-3.2# exit
 deb501# reboot

Voilà vous disposez d'une toute fraîche installation, fonctionnelle !

== Taskel ==

Pour avoir un système un peu plus complet, en fonction de vos besoins, vous pouvez utiliser l'utilitaire tasksel.
La commande suivante détaille les &quot;tâches&quot; que tasksel peut réaliser pour vous... (Vous remarquerez que ce sont les mêmes choix que dans une installation &quot;classique&quot; qui sont proposés)

 sh-3.2# tasksel --list-tasks
 u desktop       Desktop environment
 u web-server    Web server
 u print-server  Print server
 u dns-server    DNS server
 u file-server   File server
 u mail-server   Mail server
 u database-server       SQL database
 u laptop        Laptop
 u manual        manual package selection

Chaque &quot;tâche&quot; installe un ensemble de paquets utiles pour certaines utilisations. &quot;u&quot; pour non installé. Une tâche installée commence par &quot;i&quot;
Il ne vous reste plus qu'a taper dans la console

 # tasksel --task-packages nom_tache

Il existe une autre tâche, qui n'est pas dans la liste ci-dessus[code]tasksel install standard[/code]Qui installe un ensemble de paquets &quot;standards&quot;. Je vous renvoie au [[http://www.debian-facile.org/wiki/manuel:tasksel Wiki de debian-facile]] pour plus de détails.

--[[Utilisateur:Lol|Lol]] 25 mars 2010 à 13:00 (UTC)

[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 source]

[[Catégorie:Installation]]</text>
      <sha1>1rs65w469apnidieh6dwhyr13l97zon</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1234</id>
      <parentid>1187</parentid>
      <timestamp>2010-03-31T04:48:08Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Préparation du chroot */</comment>
      <text xml:space="preserve" bytes="17299">{{Sid}}

Installation d'une Lenny avec debootstrap et chroot

L'objectif est d'installer une Lenny (sur une nouvelle partition) à partir d'une SID, sans avoir besoin de redémarrer ma machine une seule fois...
Avantage : rester dans mon environnement de travail pendant toute l'installation...

Parti-pris : utilisation de nano comme éditeur

== Prérequis ==

Pré-requis : Installer debootstrap (chroot se trouve dans le paquet coreutils normalement déjà installé dans votre Debian).
Installer un noyau qui supporte le ext4 si vous avez l'intention de choisir ce système de fichier.

 deb501# apt-get install debootstrap

Formatage de la partition qui va recevoir la Lenny :
J'ai choisi de formater en ext4, vous pouvez choisir le système de fichier de votre choix bien sur.

 deb501# mkfs -V -t ext4 /dev/sda1

Création du répertoire qui va recevoir le système et montage de la partition fraichement formatée dans ce nouveau répertoire.
J'ai choisi /var/chroot/lenny_amd64_sda1.
Un petit « ls » à la fin pour vérifier que la partition est bien montée.

 deb501# mkdir /var/chroot
 deb501# mkdir /var/chroot/lenny_amd64_sda1
 deb501# cd /var/chroot/lenny_amd64_sda1
 deb501# mount /dev/sda1 /var/chroot/lenny_amd64_sda1 
 deb501# cd /var/chroot/lenny_amd64_sda1 
 deb501# ls
 lost+found

== Installation avec debootstrap ==

Installation de la Lenny avec debootstrap (j'ai choisi une Lenny amd64, rien ne vous empêche de choisir une Etch i386 ou bien même une Sid...)
Vous remarquerez que j'ai ajouté &quot;192.168.0.1:9999/&quot; à mon adresse de dépôt...
Explication : j'utilise un dépôt local. Détails ici [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23065 sur le forum.debian-fr.org]
Si vous ne l'avez pas (apt-cacher-ng) modifiez comme suit : 

 http://ftp.debian.org/debian/

Si vous avez une mauvaise connexion, mais disposez d'un CD d'installation, vous pouvez remplacer par file:/cdrom/debian/

 deb501# debootstrap --arch amd64 lenny /var/chroot/lenny_amd64_sda1 http://192.168.0.1:9999/ftp.debian.org/debian/
 I: Retrieving Release                                                                                 
 I: Retrieving Packages                                                                                
 I: Validating Packages                                                                                
 I: Resolving dependencies of required packages...                                                     
 I: Resolving dependencies of base packages...                                                         
 I: Checking component main on http://192.168.0.1:9999/ftp.debian.org/debian...                        
 I: Retrieving adduser
 [...]
 I: Configuring aptitude...
 I: Configuring tasksel-data...
 I: Configuring tasksel...
 I: Base system installed successfully.

Si tout s'est bien passé, un &quot;ls&quot; vous retournera la toute nouvelle arborescence

 deb501# ls
 bin  boot  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  sbin  selinux  srv  sys tmp  usr  var

A ce niveau, votre Lenny est installée, mais elle n'est pas pleinement fonctionelle ni « autonome ». Vous ne pourrez pas bouter dessus...

== Préparation du chroot ==

Il faut maintenant préparer le chroot. Trois répertoires sont importants pour que cela fonctionne convenablement : /tmp /dev /proc
Vous éditez votre fstab pour que ces répertoires soient montés (et liés - « bind ») automatiquement dans votre répertoire chroot.

 deb501# nano /etc/fstab

Ajoutez :

 ############################################ montages chroot &quot;liés&quot;
 # sid32 chroot
 /tmp    /var/chroot/lenny_amd64_sda1/tmp        none    bind    0       0
 /dev    /var/chroot/lenny_amd64_sda1/dev        none    bind    0       0
 /proc   /var/chroot/lenny_amd64_sda1/proc       none    bind    0       0

Ctrl+O (enregistrez) Ctrl+X (Quittez)

 deb501# mount -a (cette commande monte tout ce qui est dans votre fstab)

Pour « normaliser les comptes et groupes » de votre nouvelle Lenny (que les utilisateurs et groupes aient les mêmes « id » dans votre système &quot;hôte&quot; et dans votre chroot tapez les commandes suivantes :

 deb501# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/passwd &gt;&gt; /var/chroot/lenny_amd64_sda1/etc/passwd
 deb501# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/group &gt;&gt; /var/chroot/lenny_amd64_sda1/etc/group

Vous allez maintenant entrer dans votre environnement chroot (tadaa !)

deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
sh-3.2#

== finalisation de l'installation et réglages de la Lenny ==

Vous êtes maintenant dans votre nouvelle Lenny, mais ce n'est pas terminé, votre système est incomplet, impossible de booter dessus...

=== &quot;locales&quot; ===

Nous allons maintenant mettre en français (ou ce que vous voulez...), configurer la localisation, et surtout... régler l'heure. L 'heure est très importante. Si vous démarrez sur ce nouveau système avec une mauvaise heure (dans le futur par rapport au système sur lequel vous êtes), le prochain démarrage vous laissera un goût amer, vous serez obligé de faire un fsck... Je me suis fait prendre, une heure de vérification de disque...
En effet, au montage des disques le système inscrit l'heure (au tout début du disque). Si cette heure est « dans le futur », au démarrage suivant (sur une autre installation), il ne voudra pas démarrer et exigera une vérification de disque...

 sh-3.2# apt-get update
 sh-3.2# apt-get install locales
 sh-3.2# dpkg-reconfigure locales
 sh-3.2# dpkg-reconfigure tzdata

 Current default timezone: 'Indian/Antananarivo'
 Local time is now:      Thu Oct 15 15:02:45 EAT 2009.
 Universal Time is now:  Thu Oct 15 12:02:45 UTC 2009.

 sh-3.2#
 sh-3.2# hwclock --systohc --utc

Il faut modifier le fichier /etc/default/rcS pour forcer le système à se mettre en heure locale...
Explications sur [http://forum.debian-fr.org/viewtopic.php?p=210286#p210286 le forum.debian-fr.org]

 sh-3.2# nano /etc/default/rcS

il faut modifier la ligne utc : UTC=no

 sh-3.2# apt-get install ntpdate
 sh-3.2# ntpdate ntp.metas.ch
 15 Oct 15:04:16 ntpdate[22869]: adjust time server 162.23.41.34 offset 0.014581 sec[/code]

=== Le sources.list ===

Nous allons maintenant compléter nos dépôts
La création de apt.conf est mon « bonus » j'utilise apt-cacher-ng comme je le disais plus haut...
Inutile pour vous si vous n'avez pas apt-cacher-ng installé)

 sh-3.2# nano /etc/apt/apt.conf
 Acquire::http { Proxy &quot;http://192.168.0.1:9999&quot;; };[/code]

J'ai complété avec quelques dépôts. Vous pourriez tout aussi bien ne pas le faire, mais c'est sympa d'avoir un peu de choix, non ? J'ai ajouté le dépôt « backport » pour avoir accès à un noyau récent , vous n'êtes, là encore, pas obligé de la faire.

 sh-3.2# nano /etc/apt/sources.list
 deb http://ftp.debian.org/debian lenny main
 ###### Debian Main Repos
 deb http://ftp.fr.debian.org/debian/ lenny contrib non-free
 ###### Debian Update Repos
 deb http://security.debian.org/ lenny/updates main contrib non-free
 deb http://ftp.fr.debian.org/debian/ lenny-proposed-updates main contrib non-free
 deb ftp://ftp.proxad.net/mirrors/volatile.debian.net/ lenny/volatile main contrib non-free
 #### Debian Backports - http://www.backports.org
 ## Run this command: gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C &amp;&amp; gpg --export 16BA136C | apt-key add -
 deb http://www.backports.org/debian/ lenny-backports main contrib non-free
 #### Debian Multimedia - http://www.debian-multimedia.org/
 ## Run this command: apt-get update &amp;&amp; apt-get install debian-multimedia-keyring &amp;&amp; apt-get update
 deb ftp://ftp.debian-multimedia.org lenny main

Ajoutons les clés des nouveaux dépots et mettons à jour :

 sh-3.2# gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C &amp;&amp; gpg --export 16BA136C | apt-key add -
 sh-3.2# apt-get update
 […] Vous obtiendrez évidemment cette erreur :
 W: GPG error: ftp://ftp.debian-multimedia.org lenny Release: Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907
 W: Vous pouvez lancer « apt-get update » pour corriger ces problèmes.
 sh-3.2# apt-get install debian-multimedia-keyring &amp;&amp; apt-get update
 [...]
 ATTENTION : les paquets suivants n'ont pas été authentifiés.
   debian-multimedia-keyring
 Faut-il installer ces paquets sans vérification (o/N) ? o
 sh-3.2#
 sh-3.2# apt-get upgrade

=== Clavier === 

Continuons... Le paquet MC n'est pas une obligation, moi je ne peux pas m'en passer...

 sh-3.2# apt-get install mc

Configurons maintenant le clavier

 sh-3.2# apt-get install console-data (azerty/french)

[…] Je ne sais pour quelle raison il nous met d'office le clavier mac-usb-f.. Dans le chroot il ne doit pas détecter autre chose...

 Looking for keymap to install:
 mac-usb-f

Rectifions :

 sh-3.2# dpkg-reconfigure -plow console-data (pour choisir le « bon » clavier)
(option choisir un codage clavier dans la liste complète) - pc / azerty / French / Same as X11 (latin9) / Standard
 Looking for keymap to install:
 fr-latin9 (cette fois-ci c'est bon)
 sh-3.2# exit

Nous sommes sortis du chroot, quelques fichiers à récupérer... Pour avoir un bon hostname, le réseau, le montage correct des disques...

=== hostname et fstab ===

 deb501# cp /etc/hosts /etc/hostname /etc/resolv.conf /var/chroot/lenny_amd64_sda1/etc
 deb501# cp /etc/network/interfaces /var/chroot/lenny_amd64_sda1/etc/network
 deb501# cp /etc/fstab /var/chroot/lenny_amd64_sda1/etc
 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh

+ Réglage du fsab

 sh-3.2# blkid (cette commande permat de récupérer le UUID de vos disques pour votre nouveau fstab... Je me suis fait prendre aussi, le formatage change l'UUID...)
 /dev/sdc1: UUID=&quot;8125f9ad-fa09-415e-8b2b-1562c5791d8b&quot; TYPE=&quot;ext3&quot;
 /dev/sdc2: UUID=&quot;0996b96e-3d86-4395-9cf5-cb744b543a52&quot; TYPE=&quot;ext3&quot;
 /dev/sdb1: UUID=&quot;345408AD54087440&quot; LABEL=&quot;Nouveau nom&quot; TYPE=&quot;ntfs&quot;
 /dev/sdd1: UUID=&quot;3CE6F2CCE6F28584&quot; LABEL=&quot;Nouveau nom&quot; TYPE=&quot;ntfs&quot;
 /dev/sde1: LABEL=&quot;Divers&quot; UUID=&quot;3525ee82-8d13-4caa-a27e-14de985f432d&quot; TYPE=&quot;ext3&quot;
 /dev/sda1: UUID=&quot;248403b5-cdcd-4430-bd96-67b106327373&quot; TYPE=&quot;ext4&quot;
 /dev/sda5: TYPE=&quot;swap&quot;
 ...etc
 sh-3.2# nano /etc/fstab (a rectifier en fonction de votre configuration)
 # /etc/fstab: static file system information.
 #
 # &lt;file system&gt; &lt;mount point&gt;   &lt;type&gt;  &lt;options&gt;       &lt;dump&gt;  &lt;pass&gt;
 proc    /proc   proc    defaults        0       0
 none    /proc/bus/usb   usbfs   devgid=119,devmode=664  0       0
 none    /dev/bus/usb    usbfs   devgid=1001,devmode=664 0       0
 /dev/sda5       none    swap    sw      0       0
 # Montage racine (/dev/sda1) ! Attention si votre partition racine est en ext4 !
 UUID=248403b5-cdcd-4430-bd96-67b106327373       /       ext4    errors=remount-ro       0       1
 #Entry for /dev/sda8 :
 UUID=709e9380-d39f-49db-b759-cac7a87717e6       /home   ext4    relatime        0       2
 ...etc
 # Montage DVD SATA
 /dev/scd0       /media/cdrom0   udf,iso9660     user,noauto     0       0[/code]

Création des repertoire de montage des disques de la nouvelle machine : (en fonction de votre configuration et de vos choix...)

 sh-3.2# mkdir /mnt/sda7 /mnt/Divers1 /mnt/Divers2 /mnt/XP /mnt/deb /mnt/home2 /mnt/zicmu[/code]

=== L'environement graphique ===

Maintenant ? Un environnement graphique ! (J'ai choisi Xfce, vous faites comme vous voulez... Gnome, Kde, aucun...

 sh-3.2# apt-get install xfce4
 [...]
 0 mis à jour, 275 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 132Mo dans les archives.
 Après cette opération, 386Mo d'espace disque supplémentaires seront utilisés.
 Souhaitez-vous continuer [O/n] ?o
 [...]
 Traitement des actions différées (« triggers ») pour « initramfs-tools »...
 sh-3.2#

Modification du Xorg.conf pour avoir le bon clavier au démarrage et le bon driver de votre carte vidéo. J'ai choisi nv (j'ai une nvidia vous l'aurez deviné...). Si vous ne savez pas mettez « Driver  &quot;vesa »&quot; pour ne pas prendre de risque. Vous pourrez changer ça plus tard...

 sh-3.2# nano /etc/X11/xorg.conf
 
 Section &quot;InputDevice&quot;
         Identifier      &quot;Generic Keyboard&quot;
         Driver          &quot;kbd&quot;
         Option          &quot;XkbRules&quot;      &quot;xorg&quot;
         Option          &quot;XkbModel&quot;      &quot;pc105&quot; (à changer)
         Option          &quot;XkbLayout&quot;     &quot;fr&quot; (à changer)
         Option          &quot;XkbVariant&quot;    &quot;latin9&quot; (à ajouter)
 EndSection
 
 Section &quot;InputDevice&quot;
         Identifier      &quot;Configured Mouse&quot;
         Driver          &quot;mouse&quot;
 EndSection
 
 Section &quot;Device&quot;
         Driver  &quot;nv&quot; (ajouter et modifier en fonction de votre carte)
         Identifier &quot;Card0&quot; (ajouter)
 #        Identifier      &quot;Configured Video Device&quot;
 EndSection
 
 Section &quot;Monitor&quot;
         Identifier      &quot;Configured Monitor&quot;
 EndSection
 
 Section &quot;Screen&quot;
         Identifier      &quot;Default Screen&quot;
         Monitor         &quot;Configured Monitor&quot;
 EndSection

=== Le noyau et Grub2 ===

Installons un noyau... Ce serait bête d'oublier  :wink: 

 sh-3.2# apt-cache search linux-image (choisissez dans la liste qu'il vous propose...)
 [...]
 linux-headers-2.6.30-bpo.2-amd64 - Header files for Linux 2.6.30-bpo.2-amd64
 [...]

Ici il faut récupérer votre kernel-img.conf qui permette de convenablement lancer initramfs à l'installation du nouveau noyau dans le chroot.
Ce fichier n'existe pas dans le système créé par debootstrap.
La ligne intéressante : do_initrd = yes

 sh-3.2# exit
 deb501# cp /etc/kernel-img.conf /var/chroot/lenny_amd64_sda1/etc/kernel-img.conf
 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
 sh-3.2# apt-get install linux-image-2.6.30-bpo.2-amd64
 sh-3.2# exit

Maintenant... Modifions notre grub pour que ce nouveau système soit opérationnel :
 :!: Attention, je suis sous Grub2. Si vous êtes sous Grub &quot;legacy&quot; la commande est différente évidemment...

 deb501# grub-mkconfig 
 Generating grub.cfg ...

Voici la nouvelle entrée qui nous intéresse...

 menuentry &quot;Debian GNU/Linux (5.0.3) (on /dev/sda1)&quot; {
        insmod ext2
        set root=(hd0,1)
        search --no-floppy --fs-uuid --set 248403b5-cdcd-4430-bd96-67b106327373
        linux /boot/vmlinuz-2.6.30-bpo.2-amd64 root=/dev/sda1 rootfstype=ext4
        initrd /boot/initrd.img-2.6.30-bpo.2-amd64
 [...]
 done deb501#

Vous pouvez vérifier dans la console ou en tapant nano /boot/grub/grub.cfg (ou nano /boot/grub/menu.lst si vous êtes en grub legacy)
J'ai rajouté &quot;rootfstype=ext4&quot;. Sans ce petit morceau de code votre partition fromatée en ext4 ne démarera pas... (Invalid filesystem...)

=== Divers - mots de passe ===

Derniers &quot;fignolages&quot;... J'installe un navigateur et les drivers pour que mes disque nfs soient pleinement opérationnels. Et... zsh car c'est cool !  :wink: 

 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
 sh-3.2# apt-get install gparted ntfs-3g iceweasel
 sh-3.2# apt-get install zsh[/code]

Enfin, les mots de passe...
Debootstrap installe un système sans mots de passe... Si vous redémarrez maintenant vous vous loguerez en root dans votre nouveau système sans montrer patte blanche... Un peu génant non ?

 sh-3.2# nano /etc/passwd
 laurent:x:1000:1000:Laurent Voulzy:/home/laurent:/bin/zsh

Vous enlevez le x pour que cela ressemble à ça :

 laurent::1000:1000:Laurent Voulzy:/home/laurent:/bin/zsh

Ceci afin de pouvoir loguer vos utilisateurs &quot;normaux&quot;. Il faut maintenant créer les mots de passe.

 sh-3.2# /usr/bin/passwd
 
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 sh-3.2# su - laurent
 laurent@deb501 jeu oct 15 05:16:20
 ~/  /usr/bin/passwd
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 ~/ exit
 sh-3.2# exit
 deb501# reboot

Voilà vous disposez d'une toute fraîche installation, fonctionnelle !

== Taskel ==

Pour avoir un système un peu plus complet, en fonction de vos besoins, vous pouvez utiliser l'utilitaire tasksel.
La commande suivante détaille les &quot;tâches&quot; que tasksel peut réaliser pour vous... (Vous remarquerez que ce sont les mêmes choix que dans une installation &quot;classique&quot; qui sont proposés)

 sh-3.2# tasksel --list-tasks
 u desktop       Desktop environment
 u web-server    Web server
 u print-server  Print server
 u dns-server    DNS server
 u file-server   File server
 u mail-server   Mail server
 u database-server       SQL database
 u laptop        Laptop
 u manual        manual package selection

Chaque &quot;tâche&quot; installe un ensemble de paquets utiles pour certaines utilisations. &quot;u&quot; pour non installé. Une tâche installée commence par &quot;i&quot;
Il ne vous reste plus qu'a taper dans la console

 # tasksel --task-packages nom_tache

Il existe une autre tâche, qui n'est pas dans la liste ci-dessus[code]tasksel install standard[/code]Qui installe un ensemble de paquets &quot;standards&quot;. Je vous renvoie au [[http://www.debian-facile.org/wiki/manuel:tasksel Wiki de debian-facile]] pour plus de détails.

--[[Utilisateur:Lol|Lol]] 25 mars 2010 à 13:00 (UTC)

[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 source]

[[Catégorie:Installation]]</text>
      <sha1>99txprb4u3rw7i6ygtng723dmy69v3k</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1637</id>
      <parentid>1234</parentid>
      <timestamp>2010-07-05T08:40:42Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="17357">#REDIRECT [[isalo:Installation_lenny_chroot_debootstrap]]
{{Sid}}

Installation d'une Lenny avec debootstrap et chroot

L'objectif est d'installer une Lenny (sur une nouvelle partition) à partir d'une SID, sans avoir besoin de redémarrer ma machine une seule fois...
Avantage : rester dans mon environnement de travail pendant toute l'installation...

Parti-pris : utilisation de nano comme éditeur

== Prérequis ==

Pré-requis : Installer debootstrap (chroot se trouve dans le paquet coreutils normalement déjà installé dans votre Debian).
Installer un noyau qui supporte le ext4 si vous avez l'intention de choisir ce système de fichier.

 deb501# apt-get install debootstrap

Formatage de la partition qui va recevoir la Lenny :
J'ai choisi de formater en ext4, vous pouvez choisir le système de fichier de votre choix bien sur.

 deb501# mkfs -V -t ext4 /dev/sda1

Création du répertoire qui va recevoir le système et montage de la partition fraichement formatée dans ce nouveau répertoire.
J'ai choisi /var/chroot/lenny_amd64_sda1.
Un petit « ls » à la fin pour vérifier que la partition est bien montée.

 deb501# mkdir /var/chroot
 deb501# mkdir /var/chroot/lenny_amd64_sda1
 deb501# cd /var/chroot/lenny_amd64_sda1
 deb501# mount /dev/sda1 /var/chroot/lenny_amd64_sda1 
 deb501# cd /var/chroot/lenny_amd64_sda1 
 deb501# ls
 lost+found

== Installation avec debootstrap ==

Installation de la Lenny avec debootstrap (j'ai choisi une Lenny amd64, rien ne vous empêche de choisir une Etch i386 ou bien même une Sid...)
Vous remarquerez que j'ai ajouté &quot;192.168.0.1:9999/&quot; à mon adresse de dépôt...
Explication : j'utilise un dépôt local. Détails ici [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23065 sur le forum.debian-fr.org]
Si vous ne l'avez pas (apt-cacher-ng) modifiez comme suit : 

 http://ftp.debian.org/debian/

Si vous avez une mauvaise connexion, mais disposez d'un CD d'installation, vous pouvez remplacer par file:/cdrom/debian/

 deb501# debootstrap --arch amd64 lenny /var/chroot/lenny_amd64_sda1 http://192.168.0.1:9999/ftp.debian.org/debian/
 I: Retrieving Release                                                                                 
 I: Retrieving Packages                                                                                
 I: Validating Packages                                                                                
 I: Resolving dependencies of required packages...                                                     
 I: Resolving dependencies of base packages...                                                         
 I: Checking component main on http://192.168.0.1:9999/ftp.debian.org/debian...                        
 I: Retrieving adduser
 [...]
 I: Configuring aptitude...
 I: Configuring tasksel-data...
 I: Configuring tasksel...
 I: Base system installed successfully.

Si tout s'est bien passé, un &quot;ls&quot; vous retournera la toute nouvelle arborescence

 deb501# ls
 bin  boot  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  sbin  selinux  srv  sys tmp  usr  var

A ce niveau, votre Lenny est installée, mais elle n'est pas pleinement fonctionelle ni « autonome ». Vous ne pourrez pas bouter dessus...

== Préparation du chroot ==

Il faut maintenant préparer le chroot. Trois répertoires sont importants pour que cela fonctionne convenablement : /tmp /dev /proc
Vous éditez votre fstab pour que ces répertoires soient montés (et liés - « bind ») automatiquement dans votre répertoire chroot.

 deb501# nano /etc/fstab

Ajoutez :

 ############################################ montages chroot &quot;liés&quot;
 # sid32 chroot
 /tmp    /var/chroot/lenny_amd64_sda1/tmp        none    bind    0       0
 /dev    /var/chroot/lenny_amd64_sda1/dev        none    bind    0       0
 /proc   /var/chroot/lenny_amd64_sda1/proc       none    bind    0       0

Ctrl+O (enregistrez) Ctrl+X (Quittez)

 deb501# mount -a (cette commande monte tout ce qui est dans votre fstab)

Pour « normaliser les comptes et groupes » de votre nouvelle Lenny (que les utilisateurs et groupes aient les mêmes « id » dans votre système &quot;hôte&quot; et dans votre chroot tapez les commandes suivantes :

 deb501# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/passwd &gt;&gt; /var/chroot/lenny_amd64_sda1/etc/passwd
 deb501# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/group &gt;&gt; /var/chroot/lenny_amd64_sda1/etc/group

Vous allez maintenant entrer dans votre environnement chroot (tadaa !)

deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
sh-3.2#

== finalisation de l'installation et réglages de la Lenny ==

Vous êtes maintenant dans votre nouvelle Lenny, mais ce n'est pas terminé, votre système est incomplet, impossible de booter dessus...

=== &quot;locales&quot; ===

Nous allons maintenant mettre en français (ou ce que vous voulez...), configurer la localisation, et surtout... régler l'heure. L 'heure est très importante. Si vous démarrez sur ce nouveau système avec une mauvaise heure (dans le futur par rapport au système sur lequel vous êtes), le prochain démarrage vous laissera un goût amer, vous serez obligé de faire un fsck... Je me suis fait prendre, une heure de vérification de disque...
En effet, au montage des disques le système inscrit l'heure (au tout début du disque). Si cette heure est « dans le futur », au démarrage suivant (sur une autre installation), il ne voudra pas démarrer et exigera une vérification de disque...

 sh-3.2# apt-get update
 sh-3.2# apt-get install locales
 sh-3.2# dpkg-reconfigure locales
 sh-3.2# dpkg-reconfigure tzdata

 Current default timezone: 'Indian/Antananarivo'
 Local time is now:      Thu Oct 15 15:02:45 EAT 2009.
 Universal Time is now:  Thu Oct 15 12:02:45 UTC 2009.

 sh-3.2#
 sh-3.2# hwclock --systohc --utc

Il faut modifier le fichier /etc/default/rcS pour forcer le système à se mettre en heure locale...
Explications sur [http://forum.debian-fr.org/viewtopic.php?p=210286#p210286 le forum.debian-fr.org]

 sh-3.2# nano /etc/default/rcS

il faut modifier la ligne utc : UTC=no

 sh-3.2# apt-get install ntpdate
 sh-3.2# ntpdate ntp.metas.ch
 15 Oct 15:04:16 ntpdate[22869]: adjust time server 162.23.41.34 offset 0.014581 sec[/code]

=== Le sources.list ===

Nous allons maintenant compléter nos dépôts
La création de apt.conf est mon « bonus » j'utilise apt-cacher-ng comme je le disais plus haut...
Inutile pour vous si vous n'avez pas apt-cacher-ng installé)

 sh-3.2# nano /etc/apt/apt.conf
 Acquire::http { Proxy &quot;http://192.168.0.1:9999&quot;; };[/code]

J'ai complété avec quelques dépôts. Vous pourriez tout aussi bien ne pas le faire, mais c'est sympa d'avoir un peu de choix, non ? J'ai ajouté le dépôt « backport » pour avoir accès à un noyau récent , vous n'êtes, là encore, pas obligé de la faire.

 sh-3.2# nano /etc/apt/sources.list
 deb http://ftp.debian.org/debian lenny main
 ###### Debian Main Repos
 deb http://ftp.fr.debian.org/debian/ lenny contrib non-free
 ###### Debian Update Repos
 deb http://security.debian.org/ lenny/updates main contrib non-free
 deb http://ftp.fr.debian.org/debian/ lenny-proposed-updates main contrib non-free
 deb ftp://ftp.proxad.net/mirrors/volatile.debian.net/ lenny/volatile main contrib non-free
 #### Debian Backports - http://www.backports.org
 ## Run this command: gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C &amp;&amp; gpg --export 16BA136C | apt-key add -
 deb http://www.backports.org/debian/ lenny-backports main contrib non-free
 #### Debian Multimedia - http://www.debian-multimedia.org/
 ## Run this command: apt-get update &amp;&amp; apt-get install debian-multimedia-keyring &amp;&amp; apt-get update
 deb ftp://ftp.debian-multimedia.org lenny main

Ajoutons les clés des nouveaux dépots et mettons à jour :

 sh-3.2# gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C &amp;&amp; gpg --export 16BA136C | apt-key add -
 sh-3.2# apt-get update
 […] Vous obtiendrez évidemment cette erreur :
 W: GPG error: ftp://ftp.debian-multimedia.org lenny Release: Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907
 W: Vous pouvez lancer « apt-get update » pour corriger ces problèmes.
 sh-3.2# apt-get install debian-multimedia-keyring &amp;&amp; apt-get update
 [...]
 ATTENTION : les paquets suivants n'ont pas été authentifiés.
   debian-multimedia-keyring
 Faut-il installer ces paquets sans vérification (o/N) ? o
 sh-3.2#
 sh-3.2# apt-get upgrade

=== Clavier === 

Continuons... Le paquet MC n'est pas une obligation, moi je ne peux pas m'en passer...

 sh-3.2# apt-get install mc

Configurons maintenant le clavier

 sh-3.2# apt-get install console-data (azerty/french)

[…] Je ne sais pour quelle raison il nous met d'office le clavier mac-usb-f.. Dans le chroot il ne doit pas détecter autre chose...

 Looking for keymap to install:
 mac-usb-f

Rectifions :

 sh-3.2# dpkg-reconfigure -plow console-data (pour choisir le « bon » clavier)
(option choisir un codage clavier dans la liste complète) - pc / azerty / French / Same as X11 (latin9) / Standard
 Looking for keymap to install:
 fr-latin9 (cette fois-ci c'est bon)
 sh-3.2# exit

Nous sommes sortis du chroot, quelques fichiers à récupérer... Pour avoir un bon hostname, le réseau, le montage correct des disques...

=== hostname et fstab ===

 deb501# cp /etc/hosts /etc/hostname /etc/resolv.conf /var/chroot/lenny_amd64_sda1/etc
 deb501# cp /etc/network/interfaces /var/chroot/lenny_amd64_sda1/etc/network
 deb501# cp /etc/fstab /var/chroot/lenny_amd64_sda1/etc
 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh

+ Réglage du fsab

 sh-3.2# blkid (cette commande permat de récupérer le UUID de vos disques pour votre nouveau fstab... Je me suis fait prendre aussi, le formatage change l'UUID...)
 /dev/sdc1: UUID=&quot;8125f9ad-fa09-415e-8b2b-1562c5791d8b&quot; TYPE=&quot;ext3&quot;
 /dev/sdc2: UUID=&quot;0996b96e-3d86-4395-9cf5-cb744b543a52&quot; TYPE=&quot;ext3&quot;
 /dev/sdb1: UUID=&quot;345408AD54087440&quot; LABEL=&quot;Nouveau nom&quot; TYPE=&quot;ntfs&quot;
 /dev/sdd1: UUID=&quot;3CE6F2CCE6F28584&quot; LABEL=&quot;Nouveau nom&quot; TYPE=&quot;ntfs&quot;
 /dev/sde1: LABEL=&quot;Divers&quot; UUID=&quot;3525ee82-8d13-4caa-a27e-14de985f432d&quot; TYPE=&quot;ext3&quot;
 /dev/sda1: UUID=&quot;248403b5-cdcd-4430-bd96-67b106327373&quot; TYPE=&quot;ext4&quot;
 /dev/sda5: TYPE=&quot;swap&quot;
 ...etc
 sh-3.2# nano /etc/fstab (a rectifier en fonction de votre configuration)
 # /etc/fstab: static file system information.
 #
 # &lt;file system&gt; &lt;mount point&gt;   &lt;type&gt;  &lt;options&gt;       &lt;dump&gt;  &lt;pass&gt;
 proc    /proc   proc    defaults        0       0
 none    /proc/bus/usb   usbfs   devgid=119,devmode=664  0       0
 none    /dev/bus/usb    usbfs   devgid=1001,devmode=664 0       0
 /dev/sda5       none    swap    sw      0       0
 # Montage racine (/dev/sda1) ! Attention si votre partition racine est en ext4 !
 UUID=248403b5-cdcd-4430-bd96-67b106327373       /       ext4    errors=remount-ro       0       1
 #Entry for /dev/sda8 :
 UUID=709e9380-d39f-49db-b759-cac7a87717e6       /home   ext4    relatime        0       2
 ...etc
 # Montage DVD SATA
 /dev/scd0       /media/cdrom0   udf,iso9660     user,noauto     0       0[/code]

Création des repertoire de montage des disques de la nouvelle machine : (en fonction de votre configuration et de vos choix...)

 sh-3.2# mkdir /mnt/sda7 /mnt/Divers1 /mnt/Divers2 /mnt/XP /mnt/deb /mnt/home2 /mnt/zicmu[/code]

=== L'environement graphique ===

Maintenant ? Un environnement graphique ! (J'ai choisi Xfce, vous faites comme vous voulez... Gnome, Kde, aucun...

 sh-3.2# apt-get install xfce4
 [...]
 0 mis à jour, 275 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 132Mo dans les archives.
 Après cette opération, 386Mo d'espace disque supplémentaires seront utilisés.
 Souhaitez-vous continuer [O/n] ?o
 [...]
 Traitement des actions différées (« triggers ») pour « initramfs-tools »...
 sh-3.2#

Modification du Xorg.conf pour avoir le bon clavier au démarrage et le bon driver de votre carte vidéo. J'ai choisi nv (j'ai une nvidia vous l'aurez deviné...). Si vous ne savez pas mettez « Driver  &quot;vesa »&quot; pour ne pas prendre de risque. Vous pourrez changer ça plus tard...

 sh-3.2# nano /etc/X11/xorg.conf
 
 Section &quot;InputDevice&quot;
         Identifier      &quot;Generic Keyboard&quot;
         Driver          &quot;kbd&quot;
         Option          &quot;XkbRules&quot;      &quot;xorg&quot;
         Option          &quot;XkbModel&quot;      &quot;pc105&quot; (à changer)
         Option          &quot;XkbLayout&quot;     &quot;fr&quot; (à changer)
         Option          &quot;XkbVariant&quot;    &quot;latin9&quot; (à ajouter)
 EndSection
 
 Section &quot;InputDevice&quot;
         Identifier      &quot;Configured Mouse&quot;
         Driver          &quot;mouse&quot;
 EndSection
 
 Section &quot;Device&quot;
         Driver  &quot;nv&quot; (ajouter et modifier en fonction de votre carte)
         Identifier &quot;Card0&quot; (ajouter)
 #        Identifier      &quot;Configured Video Device&quot;
 EndSection
 
 Section &quot;Monitor&quot;
         Identifier      &quot;Configured Monitor&quot;
 EndSection
 
 Section &quot;Screen&quot;
         Identifier      &quot;Default Screen&quot;
         Monitor         &quot;Configured Monitor&quot;
 EndSection

=== Le noyau et Grub2 ===

Installons un noyau... Ce serait bête d'oublier  :wink: 

 sh-3.2# apt-cache search linux-image (choisissez dans la liste qu'il vous propose...)
 [...]
 linux-headers-2.6.30-bpo.2-amd64 - Header files for Linux 2.6.30-bpo.2-amd64
 [...]

Ici il faut récupérer votre kernel-img.conf qui permette de convenablement lancer initramfs à l'installation du nouveau noyau dans le chroot.
Ce fichier n'existe pas dans le système créé par debootstrap.
La ligne intéressante : do_initrd = yes

 sh-3.2# exit
 deb501# cp /etc/kernel-img.conf /var/chroot/lenny_amd64_sda1/etc/kernel-img.conf
 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
 sh-3.2# apt-get install linux-image-2.6.30-bpo.2-amd64
 sh-3.2# exit

Maintenant... Modifions notre grub pour que ce nouveau système soit opérationnel :
 :!: Attention, je suis sous Grub2. Si vous êtes sous Grub &quot;legacy&quot; la commande est différente évidemment...

 deb501# grub-mkconfig 
 Generating grub.cfg ...

Voici la nouvelle entrée qui nous intéresse...

 menuentry &quot;Debian GNU/Linux (5.0.3) (on /dev/sda1)&quot; {
        insmod ext2
        set root=(hd0,1)
        search --no-floppy --fs-uuid --set 248403b5-cdcd-4430-bd96-67b106327373
        linux /boot/vmlinuz-2.6.30-bpo.2-amd64 root=/dev/sda1 rootfstype=ext4
        initrd /boot/initrd.img-2.6.30-bpo.2-amd64
 [...]
 done deb501#

Vous pouvez vérifier dans la console ou en tapant nano /boot/grub/grub.cfg (ou nano /boot/grub/menu.lst si vous êtes en grub legacy)
J'ai rajouté &quot;rootfstype=ext4&quot;. Sans ce petit morceau de code votre partition fromatée en ext4 ne démarera pas... (Invalid filesystem...)

=== Divers - mots de passe ===

Derniers &quot;fignolages&quot;... J'installe un navigateur et les drivers pour que mes disque nfs soient pleinement opérationnels. Et... zsh car c'est cool !  :wink: 

 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
 sh-3.2# apt-get install gparted ntfs-3g iceweasel
 sh-3.2# apt-get install zsh[/code]

Enfin, les mots de passe...
Debootstrap installe un système sans mots de passe... Si vous redémarrez maintenant vous vous loguerez en root dans votre nouveau système sans montrer patte blanche... Un peu génant non ?

 sh-3.2# nano /etc/passwd
 laurent:x:1000:1000:Laurent Voulzy:/home/laurent:/bin/zsh

Vous enlevez le x pour que cela ressemble à ça :

 laurent::1000:1000:Laurent Voulzy:/home/laurent:/bin/zsh

Ceci afin de pouvoir loguer vos utilisateurs &quot;normaux&quot;. Il faut maintenant créer les mots de passe.

 sh-3.2# /usr/bin/passwd
 
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 sh-3.2# su - laurent
 laurent@deb501 jeu oct 15 05:16:20
 ~/  /usr/bin/passwd
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 ~/ exit
 sh-3.2# exit
 deb501# reboot

Voilà vous disposez d'une toute fraîche installation, fonctionnelle !

== Taskel ==

Pour avoir un système un peu plus complet, en fonction de vos besoins, vous pouvez utiliser l'utilitaire tasksel.
La commande suivante détaille les &quot;tâches&quot; que tasksel peut réaliser pour vous... (Vous remarquerez que ce sont les mêmes choix que dans une installation &quot;classique&quot; qui sont proposés)

 sh-3.2# tasksel --list-tasks
 u desktop       Desktop environment
 u web-server    Web server
 u print-server  Print server
 u dns-server    DNS server
 u file-server   File server
 u mail-server   Mail server
 u database-server       SQL database
 u laptop        Laptop
 u manual        manual package selection

Chaque &quot;tâche&quot; installe un ensemble de paquets utiles pour certaines utilisations. &quot;u&quot; pour non installé. Une tâche installée commence par &quot;i&quot;
Il ne vous reste plus qu'a taper dans la console

 # tasksel --task-packages nom_tache

Il existe une autre tâche, qui n'est pas dans la liste ci-dessus[code]tasksel install standard[/code]Qui installe un ensemble de paquets &quot;standards&quot;. Je vous renvoie au [[http://www.debian-facile.org/wiki/manuel:tasksel Wiki de debian-facile]] pour plus de détails.

--[[Utilisateur:Lol|Lol]] 25 mars 2010 à 13:00 (UTC)

[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 source]

[[Catégorie:Installation]]</text>
      <sha1>k882368ebqrjc7pmiacfvcpilsmpd1c</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1647</id>
      <parentid>1637</parentid>
      <timestamp>2010-07-06T09:14:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Annulation des modifications 1637 de [[Special:Contributions/Lol|Lol]] ([[User talk:Lol|discussion]])</comment>
      <text xml:space="preserve" bytes="17299">{{Sid}}

Installation d'une Lenny avec debootstrap et chroot

L'objectif est d'installer une Lenny (sur une nouvelle partition) à partir d'une SID, sans avoir besoin de redémarrer ma machine une seule fois...
Avantage : rester dans mon environnement de travail pendant toute l'installation...

Parti-pris : utilisation de nano comme éditeur

== Prérequis ==

Pré-requis : Installer debootstrap (chroot se trouve dans le paquet coreutils normalement déjà installé dans votre Debian).
Installer un noyau qui supporte le ext4 si vous avez l'intention de choisir ce système de fichier.

 deb501# apt-get install debootstrap

Formatage de la partition qui va recevoir la Lenny :
J'ai choisi de formater en ext4, vous pouvez choisir le système de fichier de votre choix bien sur.

 deb501# mkfs -V -t ext4 /dev/sda1

Création du répertoire qui va recevoir le système et montage de la partition fraichement formatée dans ce nouveau répertoire.
J'ai choisi /var/chroot/lenny_amd64_sda1.
Un petit « ls » à la fin pour vérifier que la partition est bien montée.

 deb501# mkdir /var/chroot
 deb501# mkdir /var/chroot/lenny_amd64_sda1
 deb501# cd /var/chroot/lenny_amd64_sda1
 deb501# mount /dev/sda1 /var/chroot/lenny_amd64_sda1 
 deb501# cd /var/chroot/lenny_amd64_sda1 
 deb501# ls
 lost+found

== Installation avec debootstrap ==

Installation de la Lenny avec debootstrap (j'ai choisi une Lenny amd64, rien ne vous empêche de choisir une Etch i386 ou bien même une Sid...)
Vous remarquerez que j'ai ajouté &quot;192.168.0.1:9999/&quot; à mon adresse de dépôt...
Explication : j'utilise un dépôt local. Détails ici [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23065 sur le forum.debian-fr.org]
Si vous ne l'avez pas (apt-cacher-ng) modifiez comme suit : 

 http://ftp.debian.org/debian/

Si vous avez une mauvaise connexion, mais disposez d'un CD d'installation, vous pouvez remplacer par file:/cdrom/debian/

 deb501# debootstrap --arch amd64 lenny /var/chroot/lenny_amd64_sda1 http://192.168.0.1:9999/ftp.debian.org/debian/
 I: Retrieving Release                                                                                 
 I: Retrieving Packages                                                                                
 I: Validating Packages                                                                                
 I: Resolving dependencies of required packages...                                                     
 I: Resolving dependencies of base packages...                                                         
 I: Checking component main on http://192.168.0.1:9999/ftp.debian.org/debian...                        
 I: Retrieving adduser
 [...]
 I: Configuring aptitude...
 I: Configuring tasksel-data...
 I: Configuring tasksel...
 I: Base system installed successfully.

Si tout s'est bien passé, un &quot;ls&quot; vous retournera la toute nouvelle arborescence

 deb501# ls
 bin  boot  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  sbin  selinux  srv  sys tmp  usr  var

A ce niveau, votre Lenny est installée, mais elle n'est pas pleinement fonctionelle ni « autonome ». Vous ne pourrez pas bouter dessus...

== Préparation du chroot ==

Il faut maintenant préparer le chroot. Trois répertoires sont importants pour que cela fonctionne convenablement : /tmp /dev /proc
Vous éditez votre fstab pour que ces répertoires soient montés (et liés - « bind ») automatiquement dans votre répertoire chroot.

 deb501# nano /etc/fstab

Ajoutez :

 ############################################ montages chroot &quot;liés&quot;
 # sid32 chroot
 /tmp    /var/chroot/lenny_amd64_sda1/tmp        none    bind    0       0
 /dev    /var/chroot/lenny_amd64_sda1/dev        none    bind    0       0
 /proc   /var/chroot/lenny_amd64_sda1/proc       none    bind    0       0

Ctrl+O (enregistrez) Ctrl+X (Quittez)

 deb501# mount -a (cette commande monte tout ce qui est dans votre fstab)

Pour « normaliser les comptes et groupes » de votre nouvelle Lenny (que les utilisateurs et groupes aient les mêmes « id » dans votre système &quot;hôte&quot; et dans votre chroot tapez les commandes suivantes :

 deb501# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/passwd &gt;&gt; /var/chroot/lenny_amd64_sda1/etc/passwd
 deb501# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/group &gt;&gt; /var/chroot/lenny_amd64_sda1/etc/group

Vous allez maintenant entrer dans votre environnement chroot (tadaa !)

deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
sh-3.2#

== finalisation de l'installation et réglages de la Lenny ==

Vous êtes maintenant dans votre nouvelle Lenny, mais ce n'est pas terminé, votre système est incomplet, impossible de booter dessus...

=== &quot;locales&quot; ===

Nous allons maintenant mettre en français (ou ce que vous voulez...), configurer la localisation, et surtout... régler l'heure. L 'heure est très importante. Si vous démarrez sur ce nouveau système avec une mauvaise heure (dans le futur par rapport au système sur lequel vous êtes), le prochain démarrage vous laissera un goût amer, vous serez obligé de faire un fsck... Je me suis fait prendre, une heure de vérification de disque...
En effet, au montage des disques le système inscrit l'heure (au tout début du disque). Si cette heure est « dans le futur », au démarrage suivant (sur une autre installation), il ne voudra pas démarrer et exigera une vérification de disque...

 sh-3.2# apt-get update
 sh-3.2# apt-get install locales
 sh-3.2# dpkg-reconfigure locales
 sh-3.2# dpkg-reconfigure tzdata

 Current default timezone: 'Indian/Antananarivo'
 Local time is now:      Thu Oct 15 15:02:45 EAT 2009.
 Universal Time is now:  Thu Oct 15 12:02:45 UTC 2009.

 sh-3.2#
 sh-3.2# hwclock --systohc --utc

Il faut modifier le fichier /etc/default/rcS pour forcer le système à se mettre en heure locale...
Explications sur [http://forum.debian-fr.org/viewtopic.php?p=210286#p210286 le forum.debian-fr.org]

 sh-3.2# nano /etc/default/rcS

il faut modifier la ligne utc : UTC=no

 sh-3.2# apt-get install ntpdate
 sh-3.2# ntpdate ntp.metas.ch
 15 Oct 15:04:16 ntpdate[22869]: adjust time server 162.23.41.34 offset 0.014581 sec[/code]

=== Le sources.list ===

Nous allons maintenant compléter nos dépôts
La création de apt.conf est mon « bonus » j'utilise apt-cacher-ng comme je le disais plus haut...
Inutile pour vous si vous n'avez pas apt-cacher-ng installé)

 sh-3.2# nano /etc/apt/apt.conf
 Acquire::http { Proxy &quot;http://192.168.0.1:9999&quot;; };[/code]

J'ai complété avec quelques dépôts. Vous pourriez tout aussi bien ne pas le faire, mais c'est sympa d'avoir un peu de choix, non ? J'ai ajouté le dépôt « backport » pour avoir accès à un noyau récent , vous n'êtes, là encore, pas obligé de la faire.

 sh-3.2# nano /etc/apt/sources.list
 deb http://ftp.debian.org/debian lenny main
 ###### Debian Main Repos
 deb http://ftp.fr.debian.org/debian/ lenny contrib non-free
 ###### Debian Update Repos
 deb http://security.debian.org/ lenny/updates main contrib non-free
 deb http://ftp.fr.debian.org/debian/ lenny-proposed-updates main contrib non-free
 deb ftp://ftp.proxad.net/mirrors/volatile.debian.net/ lenny/volatile main contrib non-free
 #### Debian Backports - http://www.backports.org
 ## Run this command: gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C &amp;&amp; gpg --export 16BA136C | apt-key add -
 deb http://www.backports.org/debian/ lenny-backports main contrib non-free
 #### Debian Multimedia - http://www.debian-multimedia.org/
 ## Run this command: apt-get update &amp;&amp; apt-get install debian-multimedia-keyring &amp;&amp; apt-get update
 deb ftp://ftp.debian-multimedia.org lenny main

Ajoutons les clés des nouveaux dépots et mettons à jour :

 sh-3.2# gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C &amp;&amp; gpg --export 16BA136C | apt-key add -
 sh-3.2# apt-get update
 […] Vous obtiendrez évidemment cette erreur :
 W: GPG error: ftp://ftp.debian-multimedia.org lenny Release: Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907
 W: Vous pouvez lancer « apt-get update » pour corriger ces problèmes.
 sh-3.2# apt-get install debian-multimedia-keyring &amp;&amp; apt-get update
 [...]
 ATTENTION : les paquets suivants n'ont pas été authentifiés.
   debian-multimedia-keyring
 Faut-il installer ces paquets sans vérification (o/N) ? o
 sh-3.2#
 sh-3.2# apt-get upgrade

=== Clavier === 

Continuons... Le paquet MC n'est pas une obligation, moi je ne peux pas m'en passer...

 sh-3.2# apt-get install mc

Configurons maintenant le clavier

 sh-3.2# apt-get install console-data (azerty/french)

[…] Je ne sais pour quelle raison il nous met d'office le clavier mac-usb-f.. Dans le chroot il ne doit pas détecter autre chose...

 Looking for keymap to install:
 mac-usb-f

Rectifions :

 sh-3.2# dpkg-reconfigure -plow console-data (pour choisir le « bon » clavier)
(option choisir un codage clavier dans la liste complète) - pc / azerty / French / Same as X11 (latin9) / Standard
 Looking for keymap to install:
 fr-latin9 (cette fois-ci c'est bon)
 sh-3.2# exit

Nous sommes sortis du chroot, quelques fichiers à récupérer... Pour avoir un bon hostname, le réseau, le montage correct des disques...

=== hostname et fstab ===

 deb501# cp /etc/hosts /etc/hostname /etc/resolv.conf /var/chroot/lenny_amd64_sda1/etc
 deb501# cp /etc/network/interfaces /var/chroot/lenny_amd64_sda1/etc/network
 deb501# cp /etc/fstab /var/chroot/lenny_amd64_sda1/etc
 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh

+ Réglage du fsab

 sh-3.2# blkid (cette commande permat de récupérer le UUID de vos disques pour votre nouveau fstab... Je me suis fait prendre aussi, le formatage change l'UUID...)
 /dev/sdc1: UUID=&quot;8125f9ad-fa09-415e-8b2b-1562c5791d8b&quot; TYPE=&quot;ext3&quot;
 /dev/sdc2: UUID=&quot;0996b96e-3d86-4395-9cf5-cb744b543a52&quot; TYPE=&quot;ext3&quot;
 /dev/sdb1: UUID=&quot;345408AD54087440&quot; LABEL=&quot;Nouveau nom&quot; TYPE=&quot;ntfs&quot;
 /dev/sdd1: UUID=&quot;3CE6F2CCE6F28584&quot; LABEL=&quot;Nouveau nom&quot; TYPE=&quot;ntfs&quot;
 /dev/sde1: LABEL=&quot;Divers&quot; UUID=&quot;3525ee82-8d13-4caa-a27e-14de985f432d&quot; TYPE=&quot;ext3&quot;
 /dev/sda1: UUID=&quot;248403b5-cdcd-4430-bd96-67b106327373&quot; TYPE=&quot;ext4&quot;
 /dev/sda5: TYPE=&quot;swap&quot;
 ...etc
 sh-3.2# nano /etc/fstab (a rectifier en fonction de votre configuration)
 # /etc/fstab: static file system information.
 #
 # &lt;file system&gt; &lt;mount point&gt;   &lt;type&gt;  &lt;options&gt;       &lt;dump&gt;  &lt;pass&gt;
 proc    /proc   proc    defaults        0       0
 none    /proc/bus/usb   usbfs   devgid=119,devmode=664  0       0
 none    /dev/bus/usb    usbfs   devgid=1001,devmode=664 0       0
 /dev/sda5       none    swap    sw      0       0
 # Montage racine (/dev/sda1) ! Attention si votre partition racine est en ext4 !
 UUID=248403b5-cdcd-4430-bd96-67b106327373       /       ext4    errors=remount-ro       0       1
 #Entry for /dev/sda8 :
 UUID=709e9380-d39f-49db-b759-cac7a87717e6       /home   ext4    relatime        0       2
 ...etc
 # Montage DVD SATA
 /dev/scd0       /media/cdrom0   udf,iso9660     user,noauto     0       0[/code]

Création des repertoire de montage des disques de la nouvelle machine : (en fonction de votre configuration et de vos choix...)

 sh-3.2# mkdir /mnt/sda7 /mnt/Divers1 /mnt/Divers2 /mnt/XP /mnt/deb /mnt/home2 /mnt/zicmu[/code]

=== L'environement graphique ===

Maintenant ? Un environnement graphique ! (J'ai choisi Xfce, vous faites comme vous voulez... Gnome, Kde, aucun...

 sh-3.2# apt-get install xfce4
 [...]
 0 mis à jour, 275 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 132Mo dans les archives.
 Après cette opération, 386Mo d'espace disque supplémentaires seront utilisés.
 Souhaitez-vous continuer [O/n] ?o
 [...]
 Traitement des actions différées (« triggers ») pour « initramfs-tools »...
 sh-3.2#

Modification du Xorg.conf pour avoir le bon clavier au démarrage et le bon driver de votre carte vidéo. J'ai choisi nv (j'ai une nvidia vous l'aurez deviné...). Si vous ne savez pas mettez « Driver  &quot;vesa »&quot; pour ne pas prendre de risque. Vous pourrez changer ça plus tard...

 sh-3.2# nano /etc/X11/xorg.conf
 
 Section &quot;InputDevice&quot;
         Identifier      &quot;Generic Keyboard&quot;
         Driver          &quot;kbd&quot;
         Option          &quot;XkbRules&quot;      &quot;xorg&quot;
         Option          &quot;XkbModel&quot;      &quot;pc105&quot; (à changer)
         Option          &quot;XkbLayout&quot;     &quot;fr&quot; (à changer)
         Option          &quot;XkbVariant&quot;    &quot;latin9&quot; (à ajouter)
 EndSection
 
 Section &quot;InputDevice&quot;
         Identifier      &quot;Configured Mouse&quot;
         Driver          &quot;mouse&quot;
 EndSection
 
 Section &quot;Device&quot;
         Driver  &quot;nv&quot; (ajouter et modifier en fonction de votre carte)
         Identifier &quot;Card0&quot; (ajouter)
 #        Identifier      &quot;Configured Video Device&quot;
 EndSection
 
 Section &quot;Monitor&quot;
         Identifier      &quot;Configured Monitor&quot;
 EndSection
 
 Section &quot;Screen&quot;
         Identifier      &quot;Default Screen&quot;
         Monitor         &quot;Configured Monitor&quot;
 EndSection

=== Le noyau et Grub2 ===

Installons un noyau... Ce serait bête d'oublier  :wink: 

 sh-3.2# apt-cache search linux-image (choisissez dans la liste qu'il vous propose...)
 [...]
 linux-headers-2.6.30-bpo.2-amd64 - Header files for Linux 2.6.30-bpo.2-amd64
 [...]

Ici il faut récupérer votre kernel-img.conf qui permette de convenablement lancer initramfs à l'installation du nouveau noyau dans le chroot.
Ce fichier n'existe pas dans le système créé par debootstrap.
La ligne intéressante : do_initrd = yes

 sh-3.2# exit
 deb501# cp /etc/kernel-img.conf /var/chroot/lenny_amd64_sda1/etc/kernel-img.conf
 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
 sh-3.2# apt-get install linux-image-2.6.30-bpo.2-amd64
 sh-3.2# exit

Maintenant... Modifions notre grub pour que ce nouveau système soit opérationnel :
 :!: Attention, je suis sous Grub2. Si vous êtes sous Grub &quot;legacy&quot; la commande est différente évidemment...

 deb501# grub-mkconfig 
 Generating grub.cfg ...

Voici la nouvelle entrée qui nous intéresse...

 menuentry &quot;Debian GNU/Linux (5.0.3) (on /dev/sda1)&quot; {
        insmod ext2
        set root=(hd0,1)
        search --no-floppy --fs-uuid --set 248403b5-cdcd-4430-bd96-67b106327373
        linux /boot/vmlinuz-2.6.30-bpo.2-amd64 root=/dev/sda1 rootfstype=ext4
        initrd /boot/initrd.img-2.6.30-bpo.2-amd64
 [...]
 done deb501#

Vous pouvez vérifier dans la console ou en tapant nano /boot/grub/grub.cfg (ou nano /boot/grub/menu.lst si vous êtes en grub legacy)
J'ai rajouté &quot;rootfstype=ext4&quot;. Sans ce petit morceau de code votre partition fromatée en ext4 ne démarera pas... (Invalid filesystem...)

=== Divers - mots de passe ===

Derniers &quot;fignolages&quot;... J'installe un navigateur et les drivers pour que mes disque nfs soient pleinement opérationnels. Et... zsh car c'est cool !  :wink: 

 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
 sh-3.2# apt-get install gparted ntfs-3g iceweasel
 sh-3.2# apt-get install zsh[/code]

Enfin, les mots de passe...
Debootstrap installe un système sans mots de passe... Si vous redémarrez maintenant vous vous loguerez en root dans votre nouveau système sans montrer patte blanche... Un peu génant non ?

 sh-3.2# nano /etc/passwd
 laurent:x:1000:1000:Laurent Voulzy:/home/laurent:/bin/zsh

Vous enlevez le x pour que cela ressemble à ça :

 laurent::1000:1000:Laurent Voulzy:/home/laurent:/bin/zsh

Ceci afin de pouvoir loguer vos utilisateurs &quot;normaux&quot;. Il faut maintenant créer les mots de passe.

 sh-3.2# /usr/bin/passwd
 
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 sh-3.2# su - laurent
 laurent@deb501 jeu oct 15 05:16:20
 ~/  /usr/bin/passwd
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 ~/ exit
 sh-3.2# exit
 deb501# reboot

Voilà vous disposez d'une toute fraîche installation, fonctionnelle !

== Taskel ==

Pour avoir un système un peu plus complet, en fonction de vos besoins, vous pouvez utiliser l'utilitaire tasksel.
La commande suivante détaille les &quot;tâches&quot; que tasksel peut réaliser pour vous... (Vous remarquerez que ce sont les mêmes choix que dans une installation &quot;classique&quot; qui sont proposés)

 sh-3.2# tasksel --list-tasks
 u desktop       Desktop environment
 u web-server    Web server
 u print-server  Print server
 u dns-server    DNS server
 u file-server   File server
 u mail-server   Mail server
 u database-server       SQL database
 u laptop        Laptop
 u manual        manual package selection

Chaque &quot;tâche&quot; installe un ensemble de paquets utiles pour certaines utilisations. &quot;u&quot; pour non installé. Une tâche installée commence par &quot;i&quot;
Il ne vous reste plus qu'a taper dans la console

 # tasksel --task-packages nom_tache

Il existe une autre tâche, qui n'est pas dans la liste ci-dessus[code]tasksel install standard[/code]Qui installe un ensemble de paquets &quot;standards&quot;. Je vous renvoie au [[http://www.debian-facile.org/wiki/manuel:tasksel Wiki de debian-facile]] pour plus de détails.

--[[Utilisateur:Lol|Lol]] 25 mars 2010 à 13:00 (UTC)

[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 source]

[[Catégorie:Installation]]</text>
      <sha1>99txprb4u3rw7i6ygtng723dmy69v3k</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3222</id>
      <parentid>1647</parentid>
      <timestamp>2011-08-07T18:49:27Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="17290">Installation d'une Lenny avec debootstrap et chroot

L'objectif est d'installer une Lenny (sur une nouvelle partition) à partir d'une SID, sans avoir besoin de redémarrer ma machine une seule fois...
Avantage : rester dans mon environnement de travail pendant toute l'installation...

Parti-pris : utilisation de nano comme éditeur

== Prérequis ==

Pré-requis : Installer debootstrap (chroot se trouve dans le paquet coreutils normalement déjà installé dans votre Debian).
Installer un noyau qui supporte le ext4 si vous avez l'intention de choisir ce système de fichier.

 deb501# apt-get install debootstrap

Formatage de la partition qui va recevoir la Lenny :
J'ai choisi de formater en ext4, vous pouvez choisir le système de fichier de votre choix bien sur.

 deb501# mkfs -V -t ext4 /dev/sda1

Création du répertoire qui va recevoir le système et montage de la partition fraichement formatée dans ce nouveau répertoire.
J'ai choisi /var/chroot/lenny_amd64_sda1.
Un petit « ls » à la fin pour vérifier que la partition est bien montée.

 deb501# mkdir /var/chroot
 deb501# mkdir /var/chroot/lenny_amd64_sda1
 deb501# cd /var/chroot/lenny_amd64_sda1
 deb501# mount /dev/sda1 /var/chroot/lenny_amd64_sda1 
 deb501# cd /var/chroot/lenny_amd64_sda1 
 deb501# ls
 lost+found

== Installation avec debootstrap ==

Installation de la Lenny avec debootstrap (j'ai choisi une Lenny amd64, rien ne vous empêche de choisir une Etch i386 ou bien même une Sid...)
Vous remarquerez que j'ai ajouté &quot;192.168.0.1:9999/&quot; à mon adresse de dépôt...
Explication : j'utilise un dépôt local. Détails ici [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23065 sur le forum.debian-fr.org]
Si vous ne l'avez pas (apt-cacher-ng) modifiez comme suit : 

 http://ftp.debian.org/debian/

Si vous avez une mauvaise connexion, mais disposez d'un CD d'installation, vous pouvez remplacer par file:/cdrom/debian/

 deb501# debootstrap --arch amd64 lenny /var/chroot/lenny_amd64_sda1 http://192.168.0.1:9999/ftp.debian.org/debian/
 I: Retrieving Release                                                                                 
 I: Retrieving Packages                                                                                
 I: Validating Packages                                                                                
 I: Resolving dependencies of required packages...                                                     
 I: Resolving dependencies of base packages...                                                         
 I: Checking component main on http://192.168.0.1:9999/ftp.debian.org/debian...                        
 I: Retrieving adduser
 [...]
 I: Configuring aptitude...
 I: Configuring tasksel-data...
 I: Configuring tasksel...
 I: Base system installed successfully.

Si tout s'est bien passé, un &quot;ls&quot; vous retournera la toute nouvelle arborescence

 deb501# ls
 bin  boot  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  sbin  selinux  srv  sys tmp  usr  var

A ce niveau, votre Lenny est installée, mais elle n'est pas pleinement fonctionelle ni « autonome ». Vous ne pourrez pas bouter dessus...

== Préparation du chroot ==

Il faut maintenant préparer le chroot. Trois répertoires sont importants pour que cela fonctionne convenablement : /tmp /dev /proc
Vous éditez votre fstab pour que ces répertoires soient montés (et liés - « bind ») automatiquement dans votre répertoire chroot.

 deb501# nano /etc/fstab

Ajoutez :

 ############################################ montages chroot &quot;liés&quot;
 # sid32 chroot
 /tmp    /var/chroot/lenny_amd64_sda1/tmp        none    bind    0       0
 /dev    /var/chroot/lenny_amd64_sda1/dev        none    bind    0       0
 /proc   /var/chroot/lenny_amd64_sda1/proc       none    bind    0       0

Ctrl+O (enregistrez) Ctrl+X (Quittez)

 deb501# mount -a (cette commande monte tout ce qui est dans votre fstab)

Pour « normaliser les comptes et groupes » de votre nouvelle Lenny (que les utilisateurs et groupes aient les mêmes « id » dans votre système &quot;hôte&quot; et dans votre chroot tapez les commandes suivantes :

 deb501# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/passwd &gt;&gt; /var/chroot/lenny_amd64_sda1/etc/passwd
 deb501# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/group &gt;&gt; /var/chroot/lenny_amd64_sda1/etc/group

Vous allez maintenant entrer dans votre environnement chroot (tadaa !)

deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
sh-3.2#

== finalisation de l'installation et réglages de la Lenny ==

Vous êtes maintenant dans votre nouvelle Lenny, mais ce n'est pas terminé, votre système est incomplet, impossible de booter dessus...

=== &quot;locales&quot; ===

Nous allons maintenant mettre en français (ou ce que vous voulez...), configurer la localisation, et surtout... régler l'heure. L 'heure est très importante. Si vous démarrez sur ce nouveau système avec une mauvaise heure (dans le futur par rapport au système sur lequel vous êtes), le prochain démarrage vous laissera un goût amer, vous serez obligé de faire un fsck... Je me suis fait prendre, une heure de vérification de disque...
En effet, au montage des disques le système inscrit l'heure (au tout début du disque). Si cette heure est « dans le futur », au démarrage suivant (sur une autre installation), il ne voudra pas démarrer et exigera une vérification de disque...

 sh-3.2# apt-get update
 sh-3.2# apt-get install locales
 sh-3.2# dpkg-reconfigure locales
 sh-3.2# dpkg-reconfigure tzdata

 Current default timezone: 'Indian/Antananarivo'
 Local time is now:      Thu Oct 15 15:02:45 EAT 2009.
 Universal Time is now:  Thu Oct 15 12:02:45 UTC 2009.

 sh-3.2#
 sh-3.2# hwclock --systohc --utc

Il faut modifier le fichier /etc/default/rcS pour forcer le système à se mettre en heure locale...
Explications sur [http://forum.debian-fr.org/viewtopic.php?p=210286#p210286 le forum.debian-fr.org]

 sh-3.2# nano /etc/default/rcS

il faut modifier la ligne utc : UTC=no

 sh-3.2# apt-get install ntpdate
 sh-3.2# ntpdate ntp.metas.ch
 15 Oct 15:04:16 ntpdate[22869]: adjust time server 162.23.41.34 offset 0.014581 sec[/code]

=== Le sources.list ===

Nous allons maintenant compléter nos dépôts
La création de apt.conf est mon « bonus » j'utilise apt-cacher-ng comme je le disais plus haut...
Inutile pour vous si vous n'avez pas apt-cacher-ng installé)

 sh-3.2# nano /etc/apt/apt.conf
 Acquire::http { Proxy &quot;http://192.168.0.1:9999&quot;; };[/code]

J'ai complété avec quelques dépôts. Vous pourriez tout aussi bien ne pas le faire, mais c'est sympa d'avoir un peu de choix, non ? J'ai ajouté le dépôt « backport » pour avoir accès à un noyau récent , vous n'êtes, là encore, pas obligé de la faire.

 sh-3.2# nano /etc/apt/sources.list
 deb http://ftp.debian.org/debian lenny main
 ###### Debian Main Repos
 deb http://ftp.fr.debian.org/debian/ lenny contrib non-free
 ###### Debian Update Repos
 deb http://security.debian.org/ lenny/updates main contrib non-free
 deb http://ftp.fr.debian.org/debian/ lenny-proposed-updates main contrib non-free
 deb ftp://ftp.proxad.net/mirrors/volatile.debian.net/ lenny/volatile main contrib non-free
 #### Debian Backports - http://www.backports.org
 ## Run this command: gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C &amp;&amp; gpg --export 16BA136C | apt-key add -
 deb http://www.backports.org/debian/ lenny-backports main contrib non-free
 #### Debian Multimedia - http://www.debian-multimedia.org/
 ## Run this command: apt-get update &amp;&amp; apt-get install debian-multimedia-keyring &amp;&amp; apt-get update
 deb ftp://ftp.debian-multimedia.org lenny main

Ajoutons les clés des nouveaux dépots et mettons à jour :

 sh-3.2# gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C &amp;&amp; gpg --export 16BA136C | apt-key add -
 sh-3.2# apt-get update
 […] Vous obtiendrez évidemment cette erreur :
 W: GPG error: ftp://ftp.debian-multimedia.org lenny Release: Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907
 W: Vous pouvez lancer « apt-get update » pour corriger ces problèmes.
 sh-3.2# apt-get install debian-multimedia-keyring &amp;&amp; apt-get update
 [...]
 ATTENTION : les paquets suivants n'ont pas été authentifiés.
   debian-multimedia-keyring
 Faut-il installer ces paquets sans vérification (o/N) ? o
 sh-3.2#
 sh-3.2# apt-get upgrade

=== Clavier === 

Continuons... Le paquet MC n'est pas une obligation, moi je ne peux pas m'en passer...

 sh-3.2# apt-get install mc

Configurons maintenant le clavier

 sh-3.2# apt-get install console-data (azerty/french)

[…] Je ne sais pour quelle raison il nous met d'office le clavier mac-usb-f.. Dans le chroot il ne doit pas détecter autre chose...

 Looking for keymap to install:
 mac-usb-f

Rectifions :

 sh-3.2# dpkg-reconfigure -plow console-data (pour choisir le « bon » clavier)
(option choisir un codage clavier dans la liste complète) - pc / azerty / French / Same as X11 (latin9) / Standard
 Looking for keymap to install:
 fr-latin9 (cette fois-ci c'est bon)
 sh-3.2# exit

Nous sommes sortis du chroot, quelques fichiers à récupérer... Pour avoir un bon hostname, le réseau, le montage correct des disques...

=== hostname et fstab ===

 deb501# cp /etc/hosts /etc/hostname /etc/resolv.conf /var/chroot/lenny_amd64_sda1/etc
 deb501# cp /etc/network/interfaces /var/chroot/lenny_amd64_sda1/etc/network
 deb501# cp /etc/fstab /var/chroot/lenny_amd64_sda1/etc
 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh

+ Réglage du fsab

 sh-3.2# blkid (cette commande permat de récupérer le UUID de vos disques pour votre nouveau fstab... Je me suis fait prendre aussi, le formatage change l'UUID...)
 /dev/sdc1: UUID=&quot;8125f9ad-fa09-415e-8b2b-1562c5791d8b&quot; TYPE=&quot;ext3&quot;
 /dev/sdc2: UUID=&quot;0996b96e-3d86-4395-9cf5-cb744b543a52&quot; TYPE=&quot;ext3&quot;
 /dev/sdb1: UUID=&quot;345408AD54087440&quot; LABEL=&quot;Nouveau nom&quot; TYPE=&quot;ntfs&quot;
 /dev/sdd1: UUID=&quot;3CE6F2CCE6F28584&quot; LABEL=&quot;Nouveau nom&quot; TYPE=&quot;ntfs&quot;
 /dev/sde1: LABEL=&quot;Divers&quot; UUID=&quot;3525ee82-8d13-4caa-a27e-14de985f432d&quot; TYPE=&quot;ext3&quot;
 /dev/sda1: UUID=&quot;248403b5-cdcd-4430-bd96-67b106327373&quot; TYPE=&quot;ext4&quot;
 /dev/sda5: TYPE=&quot;swap&quot;
 ...etc
 sh-3.2# nano /etc/fstab (a rectifier en fonction de votre configuration)
 # /etc/fstab: static file system information.
 #
 # &lt;file system&gt; &lt;mount point&gt;   &lt;type&gt;  &lt;options&gt;       &lt;dump&gt;  &lt;pass&gt;
 proc    /proc   proc    defaults        0       0
 none    /proc/bus/usb   usbfs   devgid=119,devmode=664  0       0
 none    /dev/bus/usb    usbfs   devgid=1001,devmode=664 0       0
 /dev/sda5       none    swap    sw      0       0
 # Montage racine (/dev/sda1) ! Attention si votre partition racine est en ext4 !
 UUID=248403b5-cdcd-4430-bd96-67b106327373       /       ext4    errors=remount-ro       0       1
 #Entry for /dev/sda8 :
 UUID=709e9380-d39f-49db-b759-cac7a87717e6       /home   ext4    relatime        0       2
 ...etc
 # Montage DVD SATA
 /dev/scd0       /media/cdrom0   udf,iso9660     user,noauto     0       0[/code]

Création des repertoire de montage des disques de la nouvelle machine : (en fonction de votre configuration et de vos choix...)

 sh-3.2# mkdir /mnt/sda7 /mnt/Divers1 /mnt/Divers2 /mnt/XP /mnt/deb /mnt/home2 /mnt/zicmu[/code]

=== L'environement graphique ===

Maintenant ? Un environnement graphique ! (J'ai choisi Xfce, vous faites comme vous voulez... Gnome, Kde, aucun...

 sh-3.2# apt-get install xfce4
 [...]
 0 mis à jour, 275 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 132Mo dans les archives.
 Après cette opération, 386Mo d'espace disque supplémentaires seront utilisés.
 Souhaitez-vous continuer [O/n] ?o
 [...]
 Traitement des actions différées (« triggers ») pour « initramfs-tools »...
 sh-3.2#

Modification du Xorg.conf pour avoir le bon clavier au démarrage et le bon driver de votre carte vidéo. J'ai choisi nv (j'ai une nvidia vous l'aurez deviné...). Si vous ne savez pas mettez « Driver  &quot;vesa »&quot; pour ne pas prendre de risque. Vous pourrez changer ça plus tard...

 sh-3.2# nano /etc/X11/xorg.conf
 
 Section &quot;InputDevice&quot;
         Identifier      &quot;Generic Keyboard&quot;
         Driver          &quot;kbd&quot;
         Option          &quot;XkbRules&quot;      &quot;xorg&quot;
         Option          &quot;XkbModel&quot;      &quot;pc105&quot; (à changer)
         Option          &quot;XkbLayout&quot;     &quot;fr&quot; (à changer)
         Option          &quot;XkbVariant&quot;    &quot;latin9&quot; (à ajouter)
 EndSection
 
 Section &quot;InputDevice&quot;
         Identifier      &quot;Configured Mouse&quot;
         Driver          &quot;mouse&quot;
 EndSection
 
 Section &quot;Device&quot;
         Driver  &quot;nv&quot; (ajouter et modifier en fonction de votre carte)
         Identifier &quot;Card0&quot; (ajouter)
 #        Identifier      &quot;Configured Video Device&quot;
 EndSection
 
 Section &quot;Monitor&quot;
         Identifier      &quot;Configured Monitor&quot;
 EndSection
 
 Section &quot;Screen&quot;
         Identifier      &quot;Default Screen&quot;
         Monitor         &quot;Configured Monitor&quot;
 EndSection

=== Le noyau et Grub2 ===

Installons un noyau... Ce serait bête d'oublier  :wink: 

 sh-3.2# apt-cache search linux-image (choisissez dans la liste qu'il vous propose...)
 [...]
 linux-headers-2.6.30-bpo.2-amd64 - Header files for Linux 2.6.30-bpo.2-amd64
 [...]

Ici il faut récupérer votre kernel-img.conf qui permette de convenablement lancer initramfs à l'installation du nouveau noyau dans le chroot.
Ce fichier n'existe pas dans le système créé par debootstrap.
La ligne intéressante : do_initrd = yes

 sh-3.2# exit
 deb501# cp /etc/kernel-img.conf /var/chroot/lenny_amd64_sda1/etc/kernel-img.conf
 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
 sh-3.2# apt-get install linux-image-2.6.30-bpo.2-amd64
 sh-3.2# exit

Maintenant... Modifions notre grub pour que ce nouveau système soit opérationnel :
 :!: Attention, je suis sous Grub2. Si vous êtes sous Grub &quot;legacy&quot; la commande est différente évidemment...

 deb501# grub-mkconfig 
 Generating grub.cfg ...

Voici la nouvelle entrée qui nous intéresse...

 menuentry &quot;Debian GNU/Linux (5.0.3) (on /dev/sda1)&quot; {
        insmod ext2
        set root=(hd0,1)
        search --no-floppy --fs-uuid --set 248403b5-cdcd-4430-bd96-67b106327373
        linux /boot/vmlinuz-2.6.30-bpo.2-amd64 root=/dev/sda1 rootfstype=ext4
        initrd /boot/initrd.img-2.6.30-bpo.2-amd64
 [...]
 done deb501#

Vous pouvez vérifier dans la console ou en tapant nano /boot/grub/grub.cfg (ou nano /boot/grub/menu.lst si vous êtes en grub legacy)
J'ai rajouté &quot;rootfstype=ext4&quot;. Sans ce petit morceau de code votre partition fromatée en ext4 ne démarera pas... (Invalid filesystem...)

=== Divers - mots de passe ===

Derniers &quot;fignolages&quot;... J'installe un navigateur et les drivers pour que mes disque nfs soient pleinement opérationnels. Et... zsh car c'est cool !  :wink: 

 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
 sh-3.2# apt-get install gparted ntfs-3g iceweasel
 sh-3.2# apt-get install zsh[/code]

Enfin, les mots de passe...
Debootstrap installe un système sans mots de passe... Si vous redémarrez maintenant vous vous loguerez en root dans votre nouveau système sans montrer patte blanche... Un peu génant non ?

 sh-3.2# nano /etc/passwd
 laurent:x:1000:1000:Laurent Voulzy:/home/laurent:/bin/zsh

Vous enlevez le x pour que cela ressemble à ça :

 laurent::1000:1000:Laurent Voulzy:/home/laurent:/bin/zsh

Ceci afin de pouvoir loguer vos utilisateurs &quot;normaux&quot;. Il faut maintenant créer les mots de passe.

 sh-3.2# /usr/bin/passwd
 
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 sh-3.2# su - laurent
 laurent@deb501 jeu oct 15 05:16:20
 ~/  /usr/bin/passwd
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 ~/ exit
 sh-3.2# exit
 deb501# reboot

Voilà vous disposez d'une toute fraîche installation, fonctionnelle !

== Taskel ==

Pour avoir un système un peu plus complet, en fonction de vos besoins, vous pouvez utiliser l'utilitaire tasksel.
La commande suivante détaille les &quot;tâches&quot; que tasksel peut réaliser pour vous... (Vous remarquerez que ce sont les mêmes choix que dans une installation &quot;classique&quot; qui sont proposés)

 sh-3.2# tasksel --list-tasks
 u desktop       Desktop environment
 u web-server    Web server
 u print-server  Print server
 u dns-server    DNS server
 u file-server   File server
 u mail-server   Mail server
 u database-server       SQL database
 u laptop        Laptop
 u manual        manual package selection

Chaque &quot;tâche&quot; installe un ensemble de paquets utiles pour certaines utilisations. &quot;u&quot; pour non installé. Une tâche installée commence par &quot;i&quot;
Il ne vous reste plus qu'a taper dans la console

 # tasksel --task-packages nom_tache

Il existe une autre tâche, qui n'est pas dans la liste ci-dessus[code]tasksel install standard[/code]Qui installe un ensemble de paquets &quot;standards&quot;. Je vous renvoie au [[http://www.debian-facile.org/wiki/manuel:tasksel Wiki de debian-facile]] pour plus de détails.

--[[Utilisateur:Lol|Lol]] 25 mars 2010 à 13:00 (UTC)

[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 source]

[[Catégorie:Installation]]</text>
      <sha1>8olvrnww3eyyzzuu6abmu3wly8bci3m</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3448</id>
      <parentid>3222</parentid>
      <timestamp>2011-09-03T05:11:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Préparation du chroot */</comment>
      <text xml:space="preserve" bytes="17292">Installation d'une Lenny avec debootstrap et chroot

L'objectif est d'installer une Lenny (sur une nouvelle partition) à partir d'une SID, sans avoir besoin de redémarrer ma machine une seule fois...
Avantage : rester dans mon environnement de travail pendant toute l'installation...

Parti-pris : utilisation de nano comme éditeur

== Prérequis ==

Pré-requis : Installer debootstrap (chroot se trouve dans le paquet coreutils normalement déjà installé dans votre Debian).
Installer un noyau qui supporte le ext4 si vous avez l'intention de choisir ce système de fichier.

 deb501# apt-get install debootstrap

Formatage de la partition qui va recevoir la Lenny :
J'ai choisi de formater en ext4, vous pouvez choisir le système de fichier de votre choix bien sur.

 deb501# mkfs -V -t ext4 /dev/sda1

Création du répertoire qui va recevoir le système et montage de la partition fraichement formatée dans ce nouveau répertoire.
J'ai choisi /var/chroot/lenny_amd64_sda1.
Un petit « ls » à la fin pour vérifier que la partition est bien montée.

 deb501# mkdir /var/chroot
 deb501# mkdir /var/chroot/lenny_amd64_sda1
 deb501# cd /var/chroot/lenny_amd64_sda1
 deb501# mount /dev/sda1 /var/chroot/lenny_amd64_sda1 
 deb501# cd /var/chroot/lenny_amd64_sda1 
 deb501# ls
 lost+found

== Installation avec debootstrap ==

Installation de la Lenny avec debootstrap (j'ai choisi une Lenny amd64, rien ne vous empêche de choisir une Etch i386 ou bien même une Sid...)
Vous remarquerez que j'ai ajouté &quot;192.168.0.1:9999/&quot; à mon adresse de dépôt...
Explication : j'utilise un dépôt local. Détails ici [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23065 sur le forum.debian-fr.org]
Si vous ne l'avez pas (apt-cacher-ng) modifiez comme suit : 

 http://ftp.debian.org/debian/

Si vous avez une mauvaise connexion, mais disposez d'un CD d'installation, vous pouvez remplacer par file:/cdrom/debian/

 deb501# debootstrap --arch amd64 lenny /var/chroot/lenny_amd64_sda1 http://192.168.0.1:9999/ftp.debian.org/debian/
 I: Retrieving Release                                                                                 
 I: Retrieving Packages                                                                                
 I: Validating Packages                                                                                
 I: Resolving dependencies of required packages...                                                     
 I: Resolving dependencies of base packages...                                                         
 I: Checking component main on http://192.168.0.1:9999/ftp.debian.org/debian...                        
 I: Retrieving adduser
 [...]
 I: Configuring aptitude...
 I: Configuring tasksel-data...
 I: Configuring tasksel...
 I: Base system installed successfully.

Si tout s'est bien passé, un &quot;ls&quot; vous retournera la toute nouvelle arborescence

 deb501# ls
 bin  boot  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  sbin  selinux  srv  sys tmp  usr  var

A ce niveau, votre Lenny est installée, mais elle n'est pas pleinement fonctionelle ni « autonome ». Vous ne pourrez pas bouter dessus...

== Préparation du chroot ==

Il faut maintenant préparer le chroot. Trois répertoires sont importants pour que cela fonctionne convenablement : /tmp /dev /proc
Vous éditez votre fstab pour que ces répertoires soient montés (et liés - « bind ») automatiquement dans votre répertoire chroot.

 deb501# nano /etc/fstab

Ajoutez :

 ############################################ montages chroot &quot;liés&quot;
 # sid32 chroot
 /tmp    /var/chroot/lenny_amd64_sda1/tmp        none    bind    0       0
 /dev    /var/chroot/lenny_amd64_sda1/dev        none    bind    0       0
 /proc   /var/chroot/lenny_amd64_sda1/proc       none    bind    0       0

Ctrl+O (enregistrez) Ctrl+X (Quittez)

 deb501# mount -a (cette commande monte tout ce qui est dans votre fstab)

Pour « normaliser les comptes et groupes » de votre nouvelle Lenny (que les utilisateurs et groupes aient les mêmes « id » dans votre système &quot;hôte&quot; et dans votre chroot tapez les commandes suivantes :

 deb501# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/passwd &gt;&gt; /var/chroot/lenny_amd64_sda1/etc/passwd
 deb501# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/group &gt;&gt; /var/chroot/lenny_amd64_sda1/etc/group

Vous allez maintenant entrer dans votre environnement chroot (tadaa !)

 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
 sh-3.2#

== finalisation de l'installation et réglages de la Lenny ==

Vous êtes maintenant dans votre nouvelle Lenny, mais ce n'est pas terminé, votre système est incomplet, impossible de booter dessus...

=== &quot;locales&quot; ===

Nous allons maintenant mettre en français (ou ce que vous voulez...), configurer la localisation, et surtout... régler l'heure. L 'heure est très importante. Si vous démarrez sur ce nouveau système avec une mauvaise heure (dans le futur par rapport au système sur lequel vous êtes), le prochain démarrage vous laissera un goût amer, vous serez obligé de faire un fsck... Je me suis fait prendre, une heure de vérification de disque...
En effet, au montage des disques le système inscrit l'heure (au tout début du disque). Si cette heure est « dans le futur », au démarrage suivant (sur une autre installation), il ne voudra pas démarrer et exigera une vérification de disque...

 sh-3.2# apt-get update
 sh-3.2# apt-get install locales
 sh-3.2# dpkg-reconfigure locales
 sh-3.2# dpkg-reconfigure tzdata

 Current default timezone: 'Indian/Antananarivo'
 Local time is now:      Thu Oct 15 15:02:45 EAT 2009.
 Universal Time is now:  Thu Oct 15 12:02:45 UTC 2009.

 sh-3.2#
 sh-3.2# hwclock --systohc --utc

Il faut modifier le fichier /etc/default/rcS pour forcer le système à se mettre en heure locale...
Explications sur [http://forum.debian-fr.org/viewtopic.php?p=210286#p210286 le forum.debian-fr.org]

 sh-3.2# nano /etc/default/rcS

il faut modifier la ligne utc : UTC=no

 sh-3.2# apt-get install ntpdate
 sh-3.2# ntpdate ntp.metas.ch
 15 Oct 15:04:16 ntpdate[22869]: adjust time server 162.23.41.34 offset 0.014581 sec[/code]

=== Le sources.list ===

Nous allons maintenant compléter nos dépôts
La création de apt.conf est mon « bonus » j'utilise apt-cacher-ng comme je le disais plus haut...
Inutile pour vous si vous n'avez pas apt-cacher-ng installé)

 sh-3.2# nano /etc/apt/apt.conf
 Acquire::http { Proxy &quot;http://192.168.0.1:9999&quot;; };[/code]

J'ai complété avec quelques dépôts. Vous pourriez tout aussi bien ne pas le faire, mais c'est sympa d'avoir un peu de choix, non ? J'ai ajouté le dépôt « backport » pour avoir accès à un noyau récent , vous n'êtes, là encore, pas obligé de la faire.

 sh-3.2# nano /etc/apt/sources.list
 deb http://ftp.debian.org/debian lenny main
 ###### Debian Main Repos
 deb http://ftp.fr.debian.org/debian/ lenny contrib non-free
 ###### Debian Update Repos
 deb http://security.debian.org/ lenny/updates main contrib non-free
 deb http://ftp.fr.debian.org/debian/ lenny-proposed-updates main contrib non-free
 deb ftp://ftp.proxad.net/mirrors/volatile.debian.net/ lenny/volatile main contrib non-free
 #### Debian Backports - http://www.backports.org
 ## Run this command: gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C &amp;&amp; gpg --export 16BA136C | apt-key add -
 deb http://www.backports.org/debian/ lenny-backports main contrib non-free
 #### Debian Multimedia - http://www.debian-multimedia.org/
 ## Run this command: apt-get update &amp;&amp; apt-get install debian-multimedia-keyring &amp;&amp; apt-get update
 deb ftp://ftp.debian-multimedia.org lenny main

Ajoutons les clés des nouveaux dépots et mettons à jour :

 sh-3.2# gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C &amp;&amp; gpg --export 16BA136C | apt-key add -
 sh-3.2# apt-get update
 […] Vous obtiendrez évidemment cette erreur :
 W: GPG error: ftp://ftp.debian-multimedia.org lenny Release: Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907
 W: Vous pouvez lancer « apt-get update » pour corriger ces problèmes.
 sh-3.2# apt-get install debian-multimedia-keyring &amp;&amp; apt-get update
 [...]
 ATTENTION : les paquets suivants n'ont pas été authentifiés.
   debian-multimedia-keyring
 Faut-il installer ces paquets sans vérification (o/N) ? o
 sh-3.2#
 sh-3.2# apt-get upgrade

=== Clavier === 

Continuons... Le paquet MC n'est pas une obligation, moi je ne peux pas m'en passer...

 sh-3.2# apt-get install mc

Configurons maintenant le clavier

 sh-3.2# apt-get install console-data (azerty/french)

[…] Je ne sais pour quelle raison il nous met d'office le clavier mac-usb-f.. Dans le chroot il ne doit pas détecter autre chose...

 Looking for keymap to install:
 mac-usb-f

Rectifions :

 sh-3.2# dpkg-reconfigure -plow console-data (pour choisir le « bon » clavier)
(option choisir un codage clavier dans la liste complète) - pc / azerty / French / Same as X11 (latin9) / Standard
 Looking for keymap to install:
 fr-latin9 (cette fois-ci c'est bon)
 sh-3.2# exit

Nous sommes sortis du chroot, quelques fichiers à récupérer... Pour avoir un bon hostname, le réseau, le montage correct des disques...

=== hostname et fstab ===

 deb501# cp /etc/hosts /etc/hostname /etc/resolv.conf /var/chroot/lenny_amd64_sda1/etc
 deb501# cp /etc/network/interfaces /var/chroot/lenny_amd64_sda1/etc/network
 deb501# cp /etc/fstab /var/chroot/lenny_amd64_sda1/etc
 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh

+ Réglage du fsab

 sh-3.2# blkid (cette commande permat de récupérer le UUID de vos disques pour votre nouveau fstab... Je me suis fait prendre aussi, le formatage change l'UUID...)
 /dev/sdc1: UUID=&quot;8125f9ad-fa09-415e-8b2b-1562c5791d8b&quot; TYPE=&quot;ext3&quot;
 /dev/sdc2: UUID=&quot;0996b96e-3d86-4395-9cf5-cb744b543a52&quot; TYPE=&quot;ext3&quot;
 /dev/sdb1: UUID=&quot;345408AD54087440&quot; LABEL=&quot;Nouveau nom&quot; TYPE=&quot;ntfs&quot;
 /dev/sdd1: UUID=&quot;3CE6F2CCE6F28584&quot; LABEL=&quot;Nouveau nom&quot; TYPE=&quot;ntfs&quot;
 /dev/sde1: LABEL=&quot;Divers&quot; UUID=&quot;3525ee82-8d13-4caa-a27e-14de985f432d&quot; TYPE=&quot;ext3&quot;
 /dev/sda1: UUID=&quot;248403b5-cdcd-4430-bd96-67b106327373&quot; TYPE=&quot;ext4&quot;
 /dev/sda5: TYPE=&quot;swap&quot;
 ...etc
 sh-3.2# nano /etc/fstab (a rectifier en fonction de votre configuration)
 # /etc/fstab: static file system information.
 #
 # &lt;file system&gt; &lt;mount point&gt;   &lt;type&gt;  &lt;options&gt;       &lt;dump&gt;  &lt;pass&gt;
 proc    /proc   proc    defaults        0       0
 none    /proc/bus/usb   usbfs   devgid=119,devmode=664  0       0
 none    /dev/bus/usb    usbfs   devgid=1001,devmode=664 0       0
 /dev/sda5       none    swap    sw      0       0
 # Montage racine (/dev/sda1) ! Attention si votre partition racine est en ext4 !
 UUID=248403b5-cdcd-4430-bd96-67b106327373       /       ext4    errors=remount-ro       0       1
 #Entry for /dev/sda8 :
 UUID=709e9380-d39f-49db-b759-cac7a87717e6       /home   ext4    relatime        0       2
 ...etc
 # Montage DVD SATA
 /dev/scd0       /media/cdrom0   udf,iso9660     user,noauto     0       0[/code]

Création des repertoire de montage des disques de la nouvelle machine : (en fonction de votre configuration et de vos choix...)

 sh-3.2# mkdir /mnt/sda7 /mnt/Divers1 /mnt/Divers2 /mnt/XP /mnt/deb /mnt/home2 /mnt/zicmu[/code]

=== L'environement graphique ===

Maintenant ? Un environnement graphique ! (J'ai choisi Xfce, vous faites comme vous voulez... Gnome, Kde, aucun...

 sh-3.2# apt-get install xfce4
 [...]
 0 mis à jour, 275 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 132Mo dans les archives.
 Après cette opération, 386Mo d'espace disque supplémentaires seront utilisés.
 Souhaitez-vous continuer [O/n] ?o
 [...]
 Traitement des actions différées (« triggers ») pour « initramfs-tools »...
 sh-3.2#

Modification du Xorg.conf pour avoir le bon clavier au démarrage et le bon driver de votre carte vidéo. J'ai choisi nv (j'ai une nvidia vous l'aurez deviné...). Si vous ne savez pas mettez « Driver  &quot;vesa »&quot; pour ne pas prendre de risque. Vous pourrez changer ça plus tard...

 sh-3.2# nano /etc/X11/xorg.conf
 
 Section &quot;InputDevice&quot;
         Identifier      &quot;Generic Keyboard&quot;
         Driver          &quot;kbd&quot;
         Option          &quot;XkbRules&quot;      &quot;xorg&quot;
         Option          &quot;XkbModel&quot;      &quot;pc105&quot; (à changer)
         Option          &quot;XkbLayout&quot;     &quot;fr&quot; (à changer)
         Option          &quot;XkbVariant&quot;    &quot;latin9&quot; (à ajouter)
 EndSection
 
 Section &quot;InputDevice&quot;
         Identifier      &quot;Configured Mouse&quot;
         Driver          &quot;mouse&quot;
 EndSection
 
 Section &quot;Device&quot;
         Driver  &quot;nv&quot; (ajouter et modifier en fonction de votre carte)
         Identifier &quot;Card0&quot; (ajouter)
 #        Identifier      &quot;Configured Video Device&quot;
 EndSection
 
 Section &quot;Monitor&quot;
         Identifier      &quot;Configured Monitor&quot;
 EndSection
 
 Section &quot;Screen&quot;
         Identifier      &quot;Default Screen&quot;
         Monitor         &quot;Configured Monitor&quot;
 EndSection

=== Le noyau et Grub2 ===

Installons un noyau... Ce serait bête d'oublier  :wink: 

 sh-3.2# apt-cache search linux-image (choisissez dans la liste qu'il vous propose...)
 [...]
 linux-headers-2.6.30-bpo.2-amd64 - Header files for Linux 2.6.30-bpo.2-amd64
 [...]

Ici il faut récupérer votre kernel-img.conf qui permette de convenablement lancer initramfs à l'installation du nouveau noyau dans le chroot.
Ce fichier n'existe pas dans le système créé par debootstrap.
La ligne intéressante : do_initrd = yes

 sh-3.2# exit
 deb501# cp /etc/kernel-img.conf /var/chroot/lenny_amd64_sda1/etc/kernel-img.conf
 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
 sh-3.2# apt-get install linux-image-2.6.30-bpo.2-amd64
 sh-3.2# exit

Maintenant... Modifions notre grub pour que ce nouveau système soit opérationnel :
 :!: Attention, je suis sous Grub2. Si vous êtes sous Grub &quot;legacy&quot; la commande est différente évidemment...

 deb501# grub-mkconfig 
 Generating grub.cfg ...

Voici la nouvelle entrée qui nous intéresse...

 menuentry &quot;Debian GNU/Linux (5.0.3) (on /dev/sda1)&quot; {
        insmod ext2
        set root=(hd0,1)
        search --no-floppy --fs-uuid --set 248403b5-cdcd-4430-bd96-67b106327373
        linux /boot/vmlinuz-2.6.30-bpo.2-amd64 root=/dev/sda1 rootfstype=ext4
        initrd /boot/initrd.img-2.6.30-bpo.2-amd64
 [...]
 done deb501#

Vous pouvez vérifier dans la console ou en tapant nano /boot/grub/grub.cfg (ou nano /boot/grub/menu.lst si vous êtes en grub legacy)
J'ai rajouté &quot;rootfstype=ext4&quot;. Sans ce petit morceau de code votre partition fromatée en ext4 ne démarera pas... (Invalid filesystem...)

=== Divers - mots de passe ===

Derniers &quot;fignolages&quot;... J'installe un navigateur et les drivers pour que mes disque nfs soient pleinement opérationnels. Et... zsh car c'est cool !  :wink: 

 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
 sh-3.2# apt-get install gparted ntfs-3g iceweasel
 sh-3.2# apt-get install zsh[/code]

Enfin, les mots de passe...
Debootstrap installe un système sans mots de passe... Si vous redémarrez maintenant vous vous loguerez en root dans votre nouveau système sans montrer patte blanche... Un peu génant non ?

 sh-3.2# nano /etc/passwd
 laurent:x:1000:1000:Laurent Voulzy:/home/laurent:/bin/zsh

Vous enlevez le x pour que cela ressemble à ça :

 laurent::1000:1000:Laurent Voulzy:/home/laurent:/bin/zsh

Ceci afin de pouvoir loguer vos utilisateurs &quot;normaux&quot;. Il faut maintenant créer les mots de passe.

 sh-3.2# /usr/bin/passwd
 
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 sh-3.2# su - laurent
 laurent@deb501 jeu oct 15 05:16:20
 ~/  /usr/bin/passwd
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 ~/ exit
 sh-3.2# exit
 deb501# reboot

Voilà vous disposez d'une toute fraîche installation, fonctionnelle !

== Taskel ==

Pour avoir un système un peu plus complet, en fonction de vos besoins, vous pouvez utiliser l'utilitaire tasksel.
La commande suivante détaille les &quot;tâches&quot; que tasksel peut réaliser pour vous... (Vous remarquerez que ce sont les mêmes choix que dans une installation &quot;classique&quot; qui sont proposés)

 sh-3.2# tasksel --list-tasks
 u desktop       Desktop environment
 u web-server    Web server
 u print-server  Print server
 u dns-server    DNS server
 u file-server   File server
 u mail-server   Mail server
 u database-server       SQL database
 u laptop        Laptop
 u manual        manual package selection

Chaque &quot;tâche&quot; installe un ensemble de paquets utiles pour certaines utilisations. &quot;u&quot; pour non installé. Une tâche installée commence par &quot;i&quot;
Il ne vous reste plus qu'a taper dans la console

 # tasksel --task-packages nom_tache

Il existe une autre tâche, qui n'est pas dans la liste ci-dessus[code]tasksel install standard[/code]Qui installe un ensemble de paquets &quot;standards&quot;. Je vous renvoie au [[http://www.debian-facile.org/wiki/manuel:tasksel Wiki de debian-facile]] pour plus de détails.

--[[Utilisateur:Lol|Lol]] 25 mars 2010 à 13:00 (UTC)

[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 source]

[[Catégorie:Installation]]</text>
      <sha1>pes4wi2bdkz10ieebla5b98rpeplg89</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3521</id>
      <parentid>3448</parentid>
      <timestamp>2011-10-30T18:09:49Z</timestamp>
      <contributor>
        <username>Martin mtl</username>
        <id>173</id>
      </contributor>
      <comment>/* Prérequis */</comment>
      <text xml:space="preserve" bytes="17295">Installation d'une Lenny avec debootstrap et chroot

L'objectif est d'installer une Lenny (sur une nouvelle partition) à partir d'une SID, sans avoir besoin de redémarrer ma machine une seule fois...
Avantage : rester dans mon environnement de travail pendant toute l'installation...

Parti-pris : utilisation de nano comme éditeur

== Prérequis ==

Prérequis : Installer debootstrap (chroot se trouve dans le paquet coreutils normalement déjà installé dans votre Debian).
Installer un noyau qui supporte le ext4 si vous avez l'intention de choisir ce système de fichiers.

 deb501# apt-get install debootstrap

Formatage de la partition qui va recevoir la Lenny :
J'ai choisi de formater en ext4, vous pouvez choisir le système de fichiers de votre choix bien sûr.

 deb501# mkfs -V -t ext4 /dev/sda1

Création du répertoire qui va recevoir le système et montage de la partition fraîchement formatée dans ce nouveau répertoire.
J'ai choisi /var/chroot/lenny_amd64_sda1.
Un petit « ls » à la fin pour vérifier que la partition est bien montée.

 deb501# mkdir /var/chroot
 deb501# mkdir /var/chroot/lenny_amd64_sda1
 deb501# cd /var/chroot/lenny_amd64_sda1
 deb501# mount /dev/sda1 /var/chroot/lenny_amd64_sda1 
 deb501# cd /var/chroot/lenny_amd64_sda1 
 deb501# ls
 lost+found

== Installation avec debootstrap ==

Installation de la Lenny avec debootstrap (j'ai choisi une Lenny amd64, rien ne vous empêche de choisir une Etch i386 ou bien même une Sid...)
Vous remarquerez que j'ai ajouté &quot;192.168.0.1:9999/&quot; à mon adresse de dépôt...
Explication : j'utilise un dépôt local. Détails ici [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23065 sur le forum.debian-fr.org]
Si vous ne l'avez pas (apt-cacher-ng) modifiez comme suit : 

 http://ftp.debian.org/debian/

Si vous avez une mauvaise connexion, mais disposez d'un CD d'installation, vous pouvez remplacer par file:/cdrom/debian/

 deb501# debootstrap --arch amd64 lenny /var/chroot/lenny_amd64_sda1 http://192.168.0.1:9999/ftp.debian.org/debian/
 I: Retrieving Release                                                                                 
 I: Retrieving Packages                                                                                
 I: Validating Packages                                                                                
 I: Resolving dependencies of required packages...                                                     
 I: Resolving dependencies of base packages...                                                         
 I: Checking component main on http://192.168.0.1:9999/ftp.debian.org/debian...                        
 I: Retrieving adduser
 [...]
 I: Configuring aptitude...
 I: Configuring tasksel-data...
 I: Configuring tasksel...
 I: Base system installed successfully.

Si tout s'est bien passé, un &quot;ls&quot; vous retournera la toute nouvelle arborescence

 deb501# ls
 bin  boot  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  sbin  selinux  srv  sys tmp  usr  var

A ce niveau, votre Lenny est installée, mais elle n'est pas pleinement fonctionelle ni « autonome ». Vous ne pourrez pas bouter dessus...

== Préparation du chroot ==

Il faut maintenant préparer le chroot. Trois répertoires sont importants pour que cela fonctionne convenablement : /tmp /dev /proc
Vous éditez votre fstab pour que ces répertoires soient montés (et liés - « bind ») automatiquement dans votre répertoire chroot.

 deb501# nano /etc/fstab

Ajoutez :

 ############################################ montages chroot &quot;liés&quot;
 # sid32 chroot
 /tmp    /var/chroot/lenny_amd64_sda1/tmp        none    bind    0       0
 /dev    /var/chroot/lenny_amd64_sda1/dev        none    bind    0       0
 /proc   /var/chroot/lenny_amd64_sda1/proc       none    bind    0       0

Ctrl+O (enregistrez) Ctrl+X (Quittez)

 deb501# mount -a (cette commande monte tout ce qui est dans votre fstab)

Pour « normaliser les comptes et groupes » de votre nouvelle Lenny (que les utilisateurs et groupes aient les mêmes « id » dans votre système &quot;hôte&quot; et dans votre chroot tapez les commandes suivantes :

 deb501# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/passwd &gt;&gt; /var/chroot/lenny_amd64_sda1/etc/passwd
 deb501# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/group &gt;&gt; /var/chroot/lenny_amd64_sda1/etc/group

Vous allez maintenant entrer dans votre environnement chroot (tadaa !)

 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
 sh-3.2#

== finalisation de l'installation et réglages de la Lenny ==

Vous êtes maintenant dans votre nouvelle Lenny, mais ce n'est pas terminé, votre système est incomplet, impossible de booter dessus...

=== &quot;locales&quot; ===

Nous allons maintenant mettre en français (ou ce que vous voulez...), configurer la localisation, et surtout... régler l'heure. L 'heure est très importante. Si vous démarrez sur ce nouveau système avec une mauvaise heure (dans le futur par rapport au système sur lequel vous êtes), le prochain démarrage vous laissera un goût amer, vous serez obligé de faire un fsck... Je me suis fait prendre, une heure de vérification de disque...
En effet, au montage des disques le système inscrit l'heure (au tout début du disque). Si cette heure est « dans le futur », au démarrage suivant (sur une autre installation), il ne voudra pas démarrer et exigera une vérification de disque...

 sh-3.2# apt-get update
 sh-3.2# apt-get install locales
 sh-3.2# dpkg-reconfigure locales
 sh-3.2# dpkg-reconfigure tzdata

 Current default timezone: 'Indian/Antananarivo'
 Local time is now:      Thu Oct 15 15:02:45 EAT 2009.
 Universal Time is now:  Thu Oct 15 12:02:45 UTC 2009.

 sh-3.2#
 sh-3.2# hwclock --systohc --utc

Il faut modifier le fichier /etc/default/rcS pour forcer le système à se mettre en heure locale...
Explications sur [http://forum.debian-fr.org/viewtopic.php?p=210286#p210286 le forum.debian-fr.org]

 sh-3.2# nano /etc/default/rcS

il faut modifier la ligne utc : UTC=no

 sh-3.2# apt-get install ntpdate
 sh-3.2# ntpdate ntp.metas.ch
 15 Oct 15:04:16 ntpdate[22869]: adjust time server 162.23.41.34 offset 0.014581 sec[/code]

=== Le sources.list ===

Nous allons maintenant compléter nos dépôts
La création de apt.conf est mon « bonus » j'utilise apt-cacher-ng comme je le disais plus haut...
Inutile pour vous si vous n'avez pas apt-cacher-ng installé)

 sh-3.2# nano /etc/apt/apt.conf
 Acquire::http { Proxy &quot;http://192.168.0.1:9999&quot;; };[/code]

J'ai complété avec quelques dépôts. Vous pourriez tout aussi bien ne pas le faire, mais c'est sympa d'avoir un peu de choix, non ? J'ai ajouté le dépôt « backport » pour avoir accès à un noyau récent , vous n'êtes, là encore, pas obligé de la faire.

 sh-3.2# nano /etc/apt/sources.list
 deb http://ftp.debian.org/debian lenny main
 ###### Debian Main Repos
 deb http://ftp.fr.debian.org/debian/ lenny contrib non-free
 ###### Debian Update Repos
 deb http://security.debian.org/ lenny/updates main contrib non-free
 deb http://ftp.fr.debian.org/debian/ lenny-proposed-updates main contrib non-free
 deb ftp://ftp.proxad.net/mirrors/volatile.debian.net/ lenny/volatile main contrib non-free
 #### Debian Backports - http://www.backports.org
 ## Run this command: gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C &amp;&amp; gpg --export 16BA136C | apt-key add -
 deb http://www.backports.org/debian/ lenny-backports main contrib non-free
 #### Debian Multimedia - http://www.debian-multimedia.org/
 ## Run this command: apt-get update &amp;&amp; apt-get install debian-multimedia-keyring &amp;&amp; apt-get update
 deb ftp://ftp.debian-multimedia.org lenny main

Ajoutons les clés des nouveaux dépots et mettons à jour :

 sh-3.2# gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C &amp;&amp; gpg --export 16BA136C | apt-key add -
 sh-3.2# apt-get update
 […] Vous obtiendrez évidemment cette erreur :
 W: GPG error: ftp://ftp.debian-multimedia.org lenny Release: Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907
 W: Vous pouvez lancer « apt-get update » pour corriger ces problèmes.
 sh-3.2# apt-get install debian-multimedia-keyring &amp;&amp; apt-get update
 [...]
 ATTENTION : les paquets suivants n'ont pas été authentifiés.
   debian-multimedia-keyring
 Faut-il installer ces paquets sans vérification (o/N) ? o
 sh-3.2#
 sh-3.2# apt-get upgrade

=== Clavier === 

Continuons... Le paquet MC n'est pas une obligation, moi je ne peux pas m'en passer...

 sh-3.2# apt-get install mc

Configurons maintenant le clavier

 sh-3.2# apt-get install console-data (azerty/french)

[…] Je ne sais pour quelle raison il nous met d'office le clavier mac-usb-f.. Dans le chroot il ne doit pas détecter autre chose...

 Looking for keymap to install:
 mac-usb-f

Rectifions :

 sh-3.2# dpkg-reconfigure -plow console-data (pour choisir le « bon » clavier)
(option choisir un codage clavier dans la liste complète) - pc / azerty / French / Same as X11 (latin9) / Standard
 Looking for keymap to install:
 fr-latin9 (cette fois-ci c'est bon)
 sh-3.2# exit

Nous sommes sortis du chroot, quelques fichiers à récupérer... Pour avoir un bon hostname, le réseau, le montage correct des disques...

=== hostname et fstab ===

 deb501# cp /etc/hosts /etc/hostname /etc/resolv.conf /var/chroot/lenny_amd64_sda1/etc
 deb501# cp /etc/network/interfaces /var/chroot/lenny_amd64_sda1/etc/network
 deb501# cp /etc/fstab /var/chroot/lenny_amd64_sda1/etc
 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh

+ Réglage du fsab

 sh-3.2# blkid (cette commande permat de récupérer le UUID de vos disques pour votre nouveau fstab... Je me suis fait prendre aussi, le formatage change l'UUID...)
 /dev/sdc1: UUID=&quot;8125f9ad-fa09-415e-8b2b-1562c5791d8b&quot; TYPE=&quot;ext3&quot;
 /dev/sdc2: UUID=&quot;0996b96e-3d86-4395-9cf5-cb744b543a52&quot; TYPE=&quot;ext3&quot;
 /dev/sdb1: UUID=&quot;345408AD54087440&quot; LABEL=&quot;Nouveau nom&quot; TYPE=&quot;ntfs&quot;
 /dev/sdd1: UUID=&quot;3CE6F2CCE6F28584&quot; LABEL=&quot;Nouveau nom&quot; TYPE=&quot;ntfs&quot;
 /dev/sde1: LABEL=&quot;Divers&quot; UUID=&quot;3525ee82-8d13-4caa-a27e-14de985f432d&quot; TYPE=&quot;ext3&quot;
 /dev/sda1: UUID=&quot;248403b5-cdcd-4430-bd96-67b106327373&quot; TYPE=&quot;ext4&quot;
 /dev/sda5: TYPE=&quot;swap&quot;
 ...etc
 sh-3.2# nano /etc/fstab (a rectifier en fonction de votre configuration)
 # /etc/fstab: static file system information.
 #
 # &lt;file system&gt; &lt;mount point&gt;   &lt;type&gt;  &lt;options&gt;       &lt;dump&gt;  &lt;pass&gt;
 proc    /proc   proc    defaults        0       0
 none    /proc/bus/usb   usbfs   devgid=119,devmode=664  0       0
 none    /dev/bus/usb    usbfs   devgid=1001,devmode=664 0       0
 /dev/sda5       none    swap    sw      0       0
 # Montage racine (/dev/sda1) ! Attention si votre partition racine est en ext4 !
 UUID=248403b5-cdcd-4430-bd96-67b106327373       /       ext4    errors=remount-ro       0       1
 #Entry for /dev/sda8 :
 UUID=709e9380-d39f-49db-b759-cac7a87717e6       /home   ext4    relatime        0       2
 ...etc
 # Montage DVD SATA
 /dev/scd0       /media/cdrom0   udf,iso9660     user,noauto     0       0[/code]

Création des repertoire de montage des disques de la nouvelle machine : (en fonction de votre configuration et de vos choix...)

 sh-3.2# mkdir /mnt/sda7 /mnt/Divers1 /mnt/Divers2 /mnt/XP /mnt/deb /mnt/home2 /mnt/zicmu[/code]

=== L'environement graphique ===

Maintenant ? Un environnement graphique ! (J'ai choisi Xfce, vous faites comme vous voulez... Gnome, Kde, aucun...

 sh-3.2# apt-get install xfce4
 [...]
 0 mis à jour, 275 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 132Mo dans les archives.
 Après cette opération, 386Mo d'espace disque supplémentaires seront utilisés.
 Souhaitez-vous continuer [O/n] ?o
 [...]
 Traitement des actions différées (« triggers ») pour « initramfs-tools »...
 sh-3.2#

Modification du Xorg.conf pour avoir le bon clavier au démarrage et le bon driver de votre carte vidéo. J'ai choisi nv (j'ai une nvidia vous l'aurez deviné...). Si vous ne savez pas mettez « Driver  &quot;vesa »&quot; pour ne pas prendre de risque. Vous pourrez changer ça plus tard...

 sh-3.2# nano /etc/X11/xorg.conf
 
 Section &quot;InputDevice&quot;
         Identifier      &quot;Generic Keyboard&quot;
         Driver          &quot;kbd&quot;
         Option          &quot;XkbRules&quot;      &quot;xorg&quot;
         Option          &quot;XkbModel&quot;      &quot;pc105&quot; (à changer)
         Option          &quot;XkbLayout&quot;     &quot;fr&quot; (à changer)
         Option          &quot;XkbVariant&quot;    &quot;latin9&quot; (à ajouter)
 EndSection
 
 Section &quot;InputDevice&quot;
         Identifier      &quot;Configured Mouse&quot;
         Driver          &quot;mouse&quot;
 EndSection
 
 Section &quot;Device&quot;
         Driver  &quot;nv&quot; (ajouter et modifier en fonction de votre carte)
         Identifier &quot;Card0&quot; (ajouter)
 #        Identifier      &quot;Configured Video Device&quot;
 EndSection
 
 Section &quot;Monitor&quot;
         Identifier      &quot;Configured Monitor&quot;
 EndSection
 
 Section &quot;Screen&quot;
         Identifier      &quot;Default Screen&quot;
         Monitor         &quot;Configured Monitor&quot;
 EndSection

=== Le noyau et Grub2 ===

Installons un noyau... Ce serait bête d'oublier  :wink: 

 sh-3.2# apt-cache search linux-image (choisissez dans la liste qu'il vous propose...)
 [...]
 linux-headers-2.6.30-bpo.2-amd64 - Header files for Linux 2.6.30-bpo.2-amd64
 [...]

Ici il faut récupérer votre kernel-img.conf qui permette de convenablement lancer initramfs à l'installation du nouveau noyau dans le chroot.
Ce fichier n'existe pas dans le système créé par debootstrap.
La ligne intéressante : do_initrd = yes

 sh-3.2# exit
 deb501# cp /etc/kernel-img.conf /var/chroot/lenny_amd64_sda1/etc/kernel-img.conf
 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
 sh-3.2# apt-get install linux-image-2.6.30-bpo.2-amd64
 sh-3.2# exit

Maintenant... Modifions notre grub pour que ce nouveau système soit opérationnel :
 :!: Attention, je suis sous Grub2. Si vous êtes sous Grub &quot;legacy&quot; la commande est différente évidemment...

 deb501# grub-mkconfig 
 Generating grub.cfg ...

Voici la nouvelle entrée qui nous intéresse...

 menuentry &quot;Debian GNU/Linux (5.0.3) (on /dev/sda1)&quot; {
        insmod ext2
        set root=(hd0,1)
        search --no-floppy --fs-uuid --set 248403b5-cdcd-4430-bd96-67b106327373
        linux /boot/vmlinuz-2.6.30-bpo.2-amd64 root=/dev/sda1 rootfstype=ext4
        initrd /boot/initrd.img-2.6.30-bpo.2-amd64
 [...]
 done deb501#

Vous pouvez vérifier dans la console ou en tapant nano /boot/grub/grub.cfg (ou nano /boot/grub/menu.lst si vous êtes en grub legacy)
J'ai rajouté &quot;rootfstype=ext4&quot;. Sans ce petit morceau de code votre partition fromatée en ext4 ne démarera pas... (Invalid filesystem...)

=== Divers - mots de passe ===

Derniers &quot;fignolages&quot;... J'installe un navigateur et les drivers pour que mes disque nfs soient pleinement opérationnels. Et... zsh car c'est cool !  :wink: 

 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
 sh-3.2# apt-get install gparted ntfs-3g iceweasel
 sh-3.2# apt-get install zsh[/code]

Enfin, les mots de passe...
Debootstrap installe un système sans mots de passe... Si vous redémarrez maintenant vous vous loguerez en root dans votre nouveau système sans montrer patte blanche... Un peu génant non ?

 sh-3.2# nano /etc/passwd
 laurent:x:1000:1000:Laurent Voulzy:/home/laurent:/bin/zsh

Vous enlevez le x pour que cela ressemble à ça :

 laurent::1000:1000:Laurent Voulzy:/home/laurent:/bin/zsh

Ceci afin de pouvoir loguer vos utilisateurs &quot;normaux&quot;. Il faut maintenant créer les mots de passe.

 sh-3.2# /usr/bin/passwd
 
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 sh-3.2# su - laurent
 laurent@deb501 jeu oct 15 05:16:20
 ~/  /usr/bin/passwd
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 ~/ exit
 sh-3.2# exit
 deb501# reboot

Voilà vous disposez d'une toute fraîche installation, fonctionnelle !

== Taskel ==

Pour avoir un système un peu plus complet, en fonction de vos besoins, vous pouvez utiliser l'utilitaire tasksel.
La commande suivante détaille les &quot;tâches&quot; que tasksel peut réaliser pour vous... (Vous remarquerez que ce sont les mêmes choix que dans une installation &quot;classique&quot; qui sont proposés)

 sh-3.2# tasksel --list-tasks
 u desktop       Desktop environment
 u web-server    Web server
 u print-server  Print server
 u dns-server    DNS server
 u file-server   File server
 u mail-server   Mail server
 u database-server       SQL database
 u laptop        Laptop
 u manual        manual package selection

Chaque &quot;tâche&quot; installe un ensemble de paquets utiles pour certaines utilisations. &quot;u&quot; pour non installé. Une tâche installée commence par &quot;i&quot;
Il ne vous reste plus qu'a taper dans la console

 # tasksel --task-packages nom_tache

Il existe une autre tâche, qui n'est pas dans la liste ci-dessus[code]tasksel install standard[/code]Qui installe un ensemble de paquets &quot;standards&quot;. Je vous renvoie au [[http://www.debian-facile.org/wiki/manuel:tasksel Wiki de debian-facile]] pour plus de détails.

--[[Utilisateur:Lol|Lol]] 25 mars 2010 à 13:00 (UTC)

[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 source]

[[Catégorie:Installation]]</text>
      <sha1>gaz8g1hdio41ihc0s8b2kdzxyx6i4xk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3522</id>
      <parentid>3521</parentid>
      <timestamp>2011-10-30T18:11:12Z</timestamp>
      <contributor>
        <username>Martin mtl</username>
        <id>173</id>
      </contributor>
      <comment>/* Installation avec debootstrap */</comment>
      <text xml:space="preserve" bytes="17297">Installation d'une Lenny avec debootstrap et chroot

L'objectif est d'installer une Lenny (sur une nouvelle partition) à partir d'une SID, sans avoir besoin de redémarrer ma machine une seule fois...
Avantage : rester dans mon environnement de travail pendant toute l'installation...

Parti-pris : utilisation de nano comme éditeur

== Prérequis ==

Prérequis : Installer debootstrap (chroot se trouve dans le paquet coreutils normalement déjà installé dans votre Debian).
Installer un noyau qui supporte le ext4 si vous avez l'intention de choisir ce système de fichiers.

 deb501# apt-get install debootstrap

Formatage de la partition qui va recevoir la Lenny :
J'ai choisi de formater en ext4, vous pouvez choisir le système de fichiers de votre choix bien sûr.

 deb501# mkfs -V -t ext4 /dev/sda1

Création du répertoire qui va recevoir le système et montage de la partition fraîchement formatée dans ce nouveau répertoire.
J'ai choisi /var/chroot/lenny_amd64_sda1.
Un petit « ls » à la fin pour vérifier que la partition est bien montée.

 deb501# mkdir /var/chroot
 deb501# mkdir /var/chroot/lenny_amd64_sda1
 deb501# cd /var/chroot/lenny_amd64_sda1
 deb501# mount /dev/sda1 /var/chroot/lenny_amd64_sda1 
 deb501# cd /var/chroot/lenny_amd64_sda1 
 deb501# ls
 lost+found

== Installation avec debootstrap ==

Installation de la Lenny avec debootstrap (j'ai choisi une Lenny amd64, rien ne vous empêche de choisir une Etch i386 ou bien même une Sid...)
Vous remarquerez que j'ai ajouté &quot;192.168.0.1:9999/&quot; à mon adresse de dépôt...
Explication : j'utilise un dépôt local. Détails ici [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23065 sur le forum.debian-fr.org]
Si vous ne l'avez pas (apt-cacher-ng) modifiez comme suit : 

 http://ftp.debian.org/debian/

Si vous avez une mauvaise connexion, mais disposez d'un CD d'installation, vous pouvez remplacer par file:/cdrom/debian/

 deb501# debootstrap --arch amd64 lenny /var/chroot/lenny_amd64_sda1 http://192.168.0.1:9999/ftp.debian.org/debian/
 I: Retrieving Release                                                                                 
 I: Retrieving Packages                                                                                
 I: Validating Packages                                                                                
 I: Resolving dependencies of required packages...                                                     
 I: Resolving dependencies of base packages...                                                         
 I: Checking component main on http://192.168.0.1:9999/ftp.debian.org/debian...                        
 I: Retrieving adduser
 [...]
 I: Configuring aptitude...
 I: Configuring tasksel-data...
 I: Configuring tasksel...
 I: Base system installed successfully.

Si tout s'est bien passé, un &quot;ls&quot; vous retournera la toute nouvelle arborescence

 deb501# ls
 bin  boot  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  sbin  selinux  srv  sys tmp  usr  var

À ce niveau, votre Lenny est installée, mais elle n'est pas pleinement fonctionnelle ni « autonome ». Vous ne pourrez pas bouter dessus...

== Préparation du chroot ==

Il faut maintenant préparer le chroot. Trois répertoires sont importants pour que cela fonctionne convenablement : /tmp /dev /proc
Vous éditez votre fstab pour que ces répertoires soient montés (et liés - « bind ») automatiquement dans votre répertoire chroot.

 deb501# nano /etc/fstab

Ajoutez :

 ############################################ montages chroot &quot;liés&quot;
 # sid32 chroot
 /tmp    /var/chroot/lenny_amd64_sda1/tmp        none    bind    0       0
 /dev    /var/chroot/lenny_amd64_sda1/dev        none    bind    0       0
 /proc   /var/chroot/lenny_amd64_sda1/proc       none    bind    0       0

Ctrl+O (enregistrez) Ctrl+X (Quittez)

 deb501# mount -a (cette commande monte tout ce qui est dans votre fstab)

Pour « normaliser les comptes et groupes » de votre nouvelle Lenny (que les utilisateurs et groupes aient les mêmes « id » dans votre système &quot;hôte&quot; et dans votre chroot tapez les commandes suivantes :

 deb501# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/passwd &gt;&gt; /var/chroot/lenny_amd64_sda1/etc/passwd
 deb501# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/group &gt;&gt; /var/chroot/lenny_amd64_sda1/etc/group

Vous allez maintenant entrer dans votre environnement chroot (tadaa !)

 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
 sh-3.2#

== finalisation de l'installation et réglages de la Lenny ==

Vous êtes maintenant dans votre nouvelle Lenny, mais ce n'est pas terminé, votre système est incomplet, impossible de booter dessus...

=== &quot;locales&quot; ===

Nous allons maintenant mettre en français (ou ce que vous voulez...), configurer la localisation, et surtout... régler l'heure. L 'heure est très importante. Si vous démarrez sur ce nouveau système avec une mauvaise heure (dans le futur par rapport au système sur lequel vous êtes), le prochain démarrage vous laissera un goût amer, vous serez obligé de faire un fsck... Je me suis fait prendre, une heure de vérification de disque...
En effet, au montage des disques le système inscrit l'heure (au tout début du disque). Si cette heure est « dans le futur », au démarrage suivant (sur une autre installation), il ne voudra pas démarrer et exigera une vérification de disque...

 sh-3.2# apt-get update
 sh-3.2# apt-get install locales
 sh-3.2# dpkg-reconfigure locales
 sh-3.2# dpkg-reconfigure tzdata

 Current default timezone: 'Indian/Antananarivo'
 Local time is now:      Thu Oct 15 15:02:45 EAT 2009.
 Universal Time is now:  Thu Oct 15 12:02:45 UTC 2009.

 sh-3.2#
 sh-3.2# hwclock --systohc --utc

Il faut modifier le fichier /etc/default/rcS pour forcer le système à se mettre en heure locale...
Explications sur [http://forum.debian-fr.org/viewtopic.php?p=210286#p210286 le forum.debian-fr.org]

 sh-3.2# nano /etc/default/rcS

il faut modifier la ligne utc : UTC=no

 sh-3.2# apt-get install ntpdate
 sh-3.2# ntpdate ntp.metas.ch
 15 Oct 15:04:16 ntpdate[22869]: adjust time server 162.23.41.34 offset 0.014581 sec[/code]

=== Le sources.list ===

Nous allons maintenant compléter nos dépôts
La création de apt.conf est mon « bonus » j'utilise apt-cacher-ng comme je le disais plus haut...
Inutile pour vous si vous n'avez pas apt-cacher-ng installé)

 sh-3.2# nano /etc/apt/apt.conf
 Acquire::http { Proxy &quot;http://192.168.0.1:9999&quot;; };[/code]

J'ai complété avec quelques dépôts. Vous pourriez tout aussi bien ne pas le faire, mais c'est sympa d'avoir un peu de choix, non ? J'ai ajouté le dépôt « backport » pour avoir accès à un noyau récent , vous n'êtes, là encore, pas obligé de la faire.

 sh-3.2# nano /etc/apt/sources.list
 deb http://ftp.debian.org/debian lenny main
 ###### Debian Main Repos
 deb http://ftp.fr.debian.org/debian/ lenny contrib non-free
 ###### Debian Update Repos
 deb http://security.debian.org/ lenny/updates main contrib non-free
 deb http://ftp.fr.debian.org/debian/ lenny-proposed-updates main contrib non-free
 deb ftp://ftp.proxad.net/mirrors/volatile.debian.net/ lenny/volatile main contrib non-free
 #### Debian Backports - http://www.backports.org
 ## Run this command: gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C &amp;&amp; gpg --export 16BA136C | apt-key add -
 deb http://www.backports.org/debian/ lenny-backports main contrib non-free
 #### Debian Multimedia - http://www.debian-multimedia.org/
 ## Run this command: apt-get update &amp;&amp; apt-get install debian-multimedia-keyring &amp;&amp; apt-get update
 deb ftp://ftp.debian-multimedia.org lenny main

Ajoutons les clés des nouveaux dépots et mettons à jour :

 sh-3.2# gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C &amp;&amp; gpg --export 16BA136C | apt-key add -
 sh-3.2# apt-get update
 […] Vous obtiendrez évidemment cette erreur :
 W: GPG error: ftp://ftp.debian-multimedia.org lenny Release: Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907
 W: Vous pouvez lancer « apt-get update » pour corriger ces problèmes.
 sh-3.2# apt-get install debian-multimedia-keyring &amp;&amp; apt-get update
 [...]
 ATTENTION : les paquets suivants n'ont pas été authentifiés.
   debian-multimedia-keyring
 Faut-il installer ces paquets sans vérification (o/N) ? o
 sh-3.2#
 sh-3.2# apt-get upgrade

=== Clavier === 

Continuons... Le paquet MC n'est pas une obligation, moi je ne peux pas m'en passer...

 sh-3.2# apt-get install mc

Configurons maintenant le clavier

 sh-3.2# apt-get install console-data (azerty/french)

[…] Je ne sais pour quelle raison il nous met d'office le clavier mac-usb-f.. Dans le chroot il ne doit pas détecter autre chose...

 Looking for keymap to install:
 mac-usb-f

Rectifions :

 sh-3.2# dpkg-reconfigure -plow console-data (pour choisir le « bon » clavier)
(option choisir un codage clavier dans la liste complète) - pc / azerty / French / Same as X11 (latin9) / Standard
 Looking for keymap to install:
 fr-latin9 (cette fois-ci c'est bon)
 sh-3.2# exit

Nous sommes sortis du chroot, quelques fichiers à récupérer... Pour avoir un bon hostname, le réseau, le montage correct des disques...

=== hostname et fstab ===

 deb501# cp /etc/hosts /etc/hostname /etc/resolv.conf /var/chroot/lenny_amd64_sda1/etc
 deb501# cp /etc/network/interfaces /var/chroot/lenny_amd64_sda1/etc/network
 deb501# cp /etc/fstab /var/chroot/lenny_amd64_sda1/etc
 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh

+ Réglage du fsab

 sh-3.2# blkid (cette commande permat de récupérer le UUID de vos disques pour votre nouveau fstab... Je me suis fait prendre aussi, le formatage change l'UUID...)
 /dev/sdc1: UUID=&quot;8125f9ad-fa09-415e-8b2b-1562c5791d8b&quot; TYPE=&quot;ext3&quot;
 /dev/sdc2: UUID=&quot;0996b96e-3d86-4395-9cf5-cb744b543a52&quot; TYPE=&quot;ext3&quot;
 /dev/sdb1: UUID=&quot;345408AD54087440&quot; LABEL=&quot;Nouveau nom&quot; TYPE=&quot;ntfs&quot;
 /dev/sdd1: UUID=&quot;3CE6F2CCE6F28584&quot; LABEL=&quot;Nouveau nom&quot; TYPE=&quot;ntfs&quot;
 /dev/sde1: LABEL=&quot;Divers&quot; UUID=&quot;3525ee82-8d13-4caa-a27e-14de985f432d&quot; TYPE=&quot;ext3&quot;
 /dev/sda1: UUID=&quot;248403b5-cdcd-4430-bd96-67b106327373&quot; TYPE=&quot;ext4&quot;
 /dev/sda5: TYPE=&quot;swap&quot;
 ...etc
 sh-3.2# nano /etc/fstab (a rectifier en fonction de votre configuration)
 # /etc/fstab: static file system information.
 #
 # &lt;file system&gt; &lt;mount point&gt;   &lt;type&gt;  &lt;options&gt;       &lt;dump&gt;  &lt;pass&gt;
 proc    /proc   proc    defaults        0       0
 none    /proc/bus/usb   usbfs   devgid=119,devmode=664  0       0
 none    /dev/bus/usb    usbfs   devgid=1001,devmode=664 0       0
 /dev/sda5       none    swap    sw      0       0
 # Montage racine (/dev/sda1) ! Attention si votre partition racine est en ext4 !
 UUID=248403b5-cdcd-4430-bd96-67b106327373       /       ext4    errors=remount-ro       0       1
 #Entry for /dev/sda8 :
 UUID=709e9380-d39f-49db-b759-cac7a87717e6       /home   ext4    relatime        0       2
 ...etc
 # Montage DVD SATA
 /dev/scd0       /media/cdrom0   udf,iso9660     user,noauto     0       0[/code]

Création des repertoire de montage des disques de la nouvelle machine : (en fonction de votre configuration et de vos choix...)

 sh-3.2# mkdir /mnt/sda7 /mnt/Divers1 /mnt/Divers2 /mnt/XP /mnt/deb /mnt/home2 /mnt/zicmu[/code]

=== L'environement graphique ===

Maintenant ? Un environnement graphique ! (J'ai choisi Xfce, vous faites comme vous voulez... Gnome, Kde, aucun...

 sh-3.2# apt-get install xfce4
 [...]
 0 mis à jour, 275 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 132Mo dans les archives.
 Après cette opération, 386Mo d'espace disque supplémentaires seront utilisés.
 Souhaitez-vous continuer [O/n] ?o
 [...]
 Traitement des actions différées (« triggers ») pour « initramfs-tools »...
 sh-3.2#

Modification du Xorg.conf pour avoir le bon clavier au démarrage et le bon driver de votre carte vidéo. J'ai choisi nv (j'ai une nvidia vous l'aurez deviné...). Si vous ne savez pas mettez « Driver  &quot;vesa »&quot; pour ne pas prendre de risque. Vous pourrez changer ça plus tard...

 sh-3.2# nano /etc/X11/xorg.conf
 
 Section &quot;InputDevice&quot;
         Identifier      &quot;Generic Keyboard&quot;
         Driver          &quot;kbd&quot;
         Option          &quot;XkbRules&quot;      &quot;xorg&quot;
         Option          &quot;XkbModel&quot;      &quot;pc105&quot; (à changer)
         Option          &quot;XkbLayout&quot;     &quot;fr&quot; (à changer)
         Option          &quot;XkbVariant&quot;    &quot;latin9&quot; (à ajouter)
 EndSection
 
 Section &quot;InputDevice&quot;
         Identifier      &quot;Configured Mouse&quot;
         Driver          &quot;mouse&quot;
 EndSection
 
 Section &quot;Device&quot;
         Driver  &quot;nv&quot; (ajouter et modifier en fonction de votre carte)
         Identifier &quot;Card0&quot; (ajouter)
 #        Identifier      &quot;Configured Video Device&quot;
 EndSection
 
 Section &quot;Monitor&quot;
         Identifier      &quot;Configured Monitor&quot;
 EndSection
 
 Section &quot;Screen&quot;
         Identifier      &quot;Default Screen&quot;
         Monitor         &quot;Configured Monitor&quot;
 EndSection

=== Le noyau et Grub2 ===

Installons un noyau... Ce serait bête d'oublier  :wink: 

 sh-3.2# apt-cache search linux-image (choisissez dans la liste qu'il vous propose...)
 [...]
 linux-headers-2.6.30-bpo.2-amd64 - Header files for Linux 2.6.30-bpo.2-amd64
 [...]

Ici il faut récupérer votre kernel-img.conf qui permette de convenablement lancer initramfs à l'installation du nouveau noyau dans le chroot.
Ce fichier n'existe pas dans le système créé par debootstrap.
La ligne intéressante : do_initrd = yes

 sh-3.2# exit
 deb501# cp /etc/kernel-img.conf /var/chroot/lenny_amd64_sda1/etc/kernel-img.conf
 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
 sh-3.2# apt-get install linux-image-2.6.30-bpo.2-amd64
 sh-3.2# exit

Maintenant... Modifions notre grub pour que ce nouveau système soit opérationnel :
 :!: Attention, je suis sous Grub2. Si vous êtes sous Grub &quot;legacy&quot; la commande est différente évidemment...

 deb501# grub-mkconfig 
 Generating grub.cfg ...

Voici la nouvelle entrée qui nous intéresse...

 menuentry &quot;Debian GNU/Linux (5.0.3) (on /dev/sda1)&quot; {
        insmod ext2
        set root=(hd0,1)
        search --no-floppy --fs-uuid --set 248403b5-cdcd-4430-bd96-67b106327373
        linux /boot/vmlinuz-2.6.30-bpo.2-amd64 root=/dev/sda1 rootfstype=ext4
        initrd /boot/initrd.img-2.6.30-bpo.2-amd64
 [...]
 done deb501#

Vous pouvez vérifier dans la console ou en tapant nano /boot/grub/grub.cfg (ou nano /boot/grub/menu.lst si vous êtes en grub legacy)
J'ai rajouté &quot;rootfstype=ext4&quot;. Sans ce petit morceau de code votre partition fromatée en ext4 ne démarera pas... (Invalid filesystem...)

=== Divers - mots de passe ===

Derniers &quot;fignolages&quot;... J'installe un navigateur et les drivers pour que mes disque nfs soient pleinement opérationnels. Et... zsh car c'est cool !  :wink: 

 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
 sh-3.2# apt-get install gparted ntfs-3g iceweasel
 sh-3.2# apt-get install zsh[/code]

Enfin, les mots de passe...
Debootstrap installe un système sans mots de passe... Si vous redémarrez maintenant vous vous loguerez en root dans votre nouveau système sans montrer patte blanche... Un peu génant non ?

 sh-3.2# nano /etc/passwd
 laurent:x:1000:1000:Laurent Voulzy:/home/laurent:/bin/zsh

Vous enlevez le x pour que cela ressemble à ça :

 laurent::1000:1000:Laurent Voulzy:/home/laurent:/bin/zsh

Ceci afin de pouvoir loguer vos utilisateurs &quot;normaux&quot;. Il faut maintenant créer les mots de passe.

 sh-3.2# /usr/bin/passwd
 
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 sh-3.2# su - laurent
 laurent@deb501 jeu oct 15 05:16:20
 ~/  /usr/bin/passwd
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 ~/ exit
 sh-3.2# exit
 deb501# reboot

Voilà vous disposez d'une toute fraîche installation, fonctionnelle !

== Taskel ==

Pour avoir un système un peu plus complet, en fonction de vos besoins, vous pouvez utiliser l'utilitaire tasksel.
La commande suivante détaille les &quot;tâches&quot; que tasksel peut réaliser pour vous... (Vous remarquerez que ce sont les mêmes choix que dans une installation &quot;classique&quot; qui sont proposés)

 sh-3.2# tasksel --list-tasks
 u desktop       Desktop environment
 u web-server    Web server
 u print-server  Print server
 u dns-server    DNS server
 u file-server   File server
 u mail-server   Mail server
 u database-server       SQL database
 u laptop        Laptop
 u manual        manual package selection

Chaque &quot;tâche&quot; installe un ensemble de paquets utiles pour certaines utilisations. &quot;u&quot; pour non installé. Une tâche installée commence par &quot;i&quot;
Il ne vous reste plus qu'a taper dans la console

 # tasksel --task-packages nom_tache

Il existe une autre tâche, qui n'est pas dans la liste ci-dessus[code]tasksel install standard[/code]Qui installe un ensemble de paquets &quot;standards&quot;. Je vous renvoie au [[http://www.debian-facile.org/wiki/manuel:tasksel Wiki de debian-facile]] pour plus de détails.

--[[Utilisateur:Lol|Lol]] 25 mars 2010 à 13:00 (UTC)

[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 source]

[[Catégorie:Installation]]</text>
      <sha1>kwhpd3peftoypkyig9u2sicaek2hknx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3523</id>
      <parentid>3522</parentid>
      <timestamp>2011-10-30T18:12:24Z</timestamp>
      <contributor>
        <username>Martin mtl</username>
        <id>173</id>
      </contributor>
      <comment>/* Préparation du chroot */</comment>
      <text xml:space="preserve" bytes="17301">Installation d'une Lenny avec debootstrap et chroot

L'objectif est d'installer une Lenny (sur une nouvelle partition) à partir d'une SID, sans avoir besoin de redémarrer ma machine une seule fois...
Avantage : rester dans mon environnement de travail pendant toute l'installation...

Parti-pris : utilisation de nano comme éditeur

== Prérequis ==

Prérequis : Installer debootstrap (chroot se trouve dans le paquet coreutils normalement déjà installé dans votre Debian).
Installer un noyau qui supporte le ext4 si vous avez l'intention de choisir ce système de fichiers.

 deb501# apt-get install debootstrap

Formatage de la partition qui va recevoir la Lenny :
J'ai choisi de formater en ext4, vous pouvez choisir le système de fichiers de votre choix bien sûr.

 deb501# mkfs -V -t ext4 /dev/sda1

Création du répertoire qui va recevoir le système et montage de la partition fraîchement formatée dans ce nouveau répertoire.
J'ai choisi /var/chroot/lenny_amd64_sda1.
Un petit « ls » à la fin pour vérifier que la partition est bien montée.

 deb501# mkdir /var/chroot
 deb501# mkdir /var/chroot/lenny_amd64_sda1
 deb501# cd /var/chroot/lenny_amd64_sda1
 deb501# mount /dev/sda1 /var/chroot/lenny_amd64_sda1 
 deb501# cd /var/chroot/lenny_amd64_sda1 
 deb501# ls
 lost+found

== Installation avec debootstrap ==

Installation de la Lenny avec debootstrap (j'ai choisi une Lenny amd64, rien ne vous empêche de choisir une Etch i386 ou bien même une Sid...)
Vous remarquerez que j'ai ajouté &quot;192.168.0.1:9999/&quot; à mon adresse de dépôt...
Explication : j'utilise un dépôt local. Détails ici [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23065 sur le forum.debian-fr.org]
Si vous ne l'avez pas (apt-cacher-ng) modifiez comme suit : 

 http://ftp.debian.org/debian/

Si vous avez une mauvaise connexion, mais disposez d'un CD d'installation, vous pouvez remplacer par file:/cdrom/debian/

 deb501# debootstrap --arch amd64 lenny /var/chroot/lenny_amd64_sda1 http://192.168.0.1:9999/ftp.debian.org/debian/
 I: Retrieving Release                                                                                 
 I: Retrieving Packages                                                                                
 I: Validating Packages                                                                                
 I: Resolving dependencies of required packages...                                                     
 I: Resolving dependencies of base packages...                                                         
 I: Checking component main on http://192.168.0.1:9999/ftp.debian.org/debian...                        
 I: Retrieving adduser
 [...]
 I: Configuring aptitude...
 I: Configuring tasksel-data...
 I: Configuring tasksel...
 I: Base system installed successfully.

Si tout s'est bien passé, un &quot;ls&quot; vous retournera la toute nouvelle arborescence

 deb501# ls
 bin  boot  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  sbin  selinux  srv  sys tmp  usr  var

À ce niveau, votre Lenny est installée, mais elle n'est pas pleinement fonctionnelle ni « autonome ». Vous ne pourrez pas bouter dessus...

== Préparation du chroot ==

Il faut maintenant préparer le chroot. Trois répertoires sont importants pour que cela fonctionne convenablement : /tmp, /dev et /proc
Vous éditez votre fstab pour que ces répertoires soient montés (et liés - « bind ») automatiquement dans votre répertoire chroot.

 deb501# nano /etc/fstab

Ajoutez :

 ############################################ montages chroot &quot;liés&quot;
 # sid32 chroot
 /tmp    /var/chroot/lenny_amd64_sda1/tmp        none    bind    0       0
 /dev    /var/chroot/lenny_amd64_sda1/dev        none    bind    0       0
 /proc   /var/chroot/lenny_amd64_sda1/proc       none    bind    0       0

Ctrl+O (enregistrez) Ctrl+X (Quittez)

 deb501# mount -a (cette commande monte tout ce qui est dans votre fstab)

Pour « normaliser les comptes et groupes » de votre nouvelle Lenny (que les utilisateurs et groupes aient les mêmes « id » dans votre système &quot;hôte&quot; et dans votre chroot tapez les commandes suivantes :

 deb501# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/passwd &gt;&gt; /var/chroot/lenny_amd64_sda1/etc/passwd
 deb501# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/group &gt;&gt; /var/chroot/lenny_amd64_sda1/etc/group

Vous allez maintenant entrer dans votre environnement chroot (tadaa !)

 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
 sh-3.2#

== finalisation de l'installation et réglages de la Lenny ==

Vous êtes maintenant dans votre nouvelle Lenny, mais ce n'est pas terminé, votre système est incomplet, impossible de booter dessus...

=== &quot;locales&quot; ===

Nous allons maintenant mettre en français (ou ce que vous voulez...), configurer la localisation, et surtout... régler l'heure. L 'heure est très importante. Si vous démarrez sur ce nouveau système avec une mauvaise heure (dans le futur par rapport au système sur lequel vous êtes), le prochain démarrage vous laissera un goût amer, vous serez obligé de faire un fsck... Je me suis fait prendre, une heure de vérification de disque...
En effet, au montage des disques le système inscrit l'heure (au tout début du disque). Si cette heure est « dans le futur », au démarrage suivant (sur une autre installation), il ne voudra pas démarrer et exigera une vérification de disque...

 sh-3.2# apt-get update
 sh-3.2# apt-get install locales
 sh-3.2# dpkg-reconfigure locales
 sh-3.2# dpkg-reconfigure tzdata

 Current default timezone: 'Indian/Antananarivo'
 Local time is now:      Thu Oct 15 15:02:45 EAT 2009.
 Universal Time is now:  Thu Oct 15 12:02:45 UTC 2009.

 sh-3.2#
 sh-3.2# hwclock --systohc --utc

Il faut modifier le fichier /etc/default/rcS pour forcer le système à se mettre en heure locale...
Explications sur [http://forum.debian-fr.org/viewtopic.php?p=210286#p210286 le forum.debian-fr.org]

 sh-3.2# nano /etc/default/rcS

il faut modifier la ligne utc : UTC=no

 sh-3.2# apt-get install ntpdate
 sh-3.2# ntpdate ntp.metas.ch
 15 Oct 15:04:16 ntpdate[22869]: adjust time server 162.23.41.34 offset 0.014581 sec[/code]

=== Le sources.list ===

Nous allons maintenant compléter nos dépôts
La création de apt.conf est mon « bonus » j'utilise apt-cacher-ng comme je le disais plus haut...
Inutile pour vous si vous n'avez pas apt-cacher-ng installé)

 sh-3.2# nano /etc/apt/apt.conf
 Acquire::http { Proxy &quot;http://192.168.0.1:9999&quot;; };[/code]

J'ai complété avec quelques dépôts. Vous pourriez tout aussi bien ne pas le faire, mais c'est sympa d'avoir un peu de choix, non ? J'ai ajouté le dépôt « backport » pour avoir accès à un noyau récent , vous n'êtes, là encore, pas obligé de la faire.

 sh-3.2# nano /etc/apt/sources.list
 deb http://ftp.debian.org/debian lenny main
 ###### Debian Main Repos
 deb http://ftp.fr.debian.org/debian/ lenny contrib non-free
 ###### Debian Update Repos
 deb http://security.debian.org/ lenny/updates main contrib non-free
 deb http://ftp.fr.debian.org/debian/ lenny-proposed-updates main contrib non-free
 deb ftp://ftp.proxad.net/mirrors/volatile.debian.net/ lenny/volatile main contrib non-free
 #### Debian Backports - http://www.backports.org
 ## Run this command: gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C &amp;&amp; gpg --export 16BA136C | apt-key add -
 deb http://www.backports.org/debian/ lenny-backports main contrib non-free
 #### Debian Multimedia - http://www.debian-multimedia.org/
 ## Run this command: apt-get update &amp;&amp; apt-get install debian-multimedia-keyring &amp;&amp; apt-get update
 deb ftp://ftp.debian-multimedia.org lenny main

Ajoutons les clés des nouveaux dépots et mettons à jour :

 sh-3.2# gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C &amp;&amp; gpg --export 16BA136C | apt-key add -
 sh-3.2# apt-get update
 […] Vous obtiendrez évidemment cette erreur :
 W: GPG error: ftp://ftp.debian-multimedia.org lenny Release: Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907
 W: Vous pouvez lancer « apt-get update » pour corriger ces problèmes.
 sh-3.2# apt-get install debian-multimedia-keyring &amp;&amp; apt-get update
 [...]
 ATTENTION : les paquets suivants n'ont pas été authentifiés.
   debian-multimedia-keyring
 Faut-il installer ces paquets sans vérification (o/N) ? o
 sh-3.2#
 sh-3.2# apt-get upgrade

=== Clavier === 

Continuons... Le paquet MC n'est pas une obligation, moi je ne peux pas m'en passer...

 sh-3.2# apt-get install mc

Configurons maintenant le clavier

 sh-3.2# apt-get install console-data (azerty/french)

[…] Je ne sais pour quelle raison il nous met d'office le clavier mac-usb-f.. Dans le chroot il ne doit pas détecter autre chose...

 Looking for keymap to install:
 mac-usb-f

Rectifions :

 sh-3.2# dpkg-reconfigure -plow console-data (pour choisir le « bon » clavier)
(option choisir un codage clavier dans la liste complète) - pc / azerty / French / Same as X11 (latin9) / Standard
 Looking for keymap to install:
 fr-latin9 (cette fois-ci c'est bon)
 sh-3.2# exit

Nous sommes sortis du chroot, quelques fichiers à récupérer... Pour avoir un bon hostname, le réseau, le montage correct des disques...

=== hostname et fstab ===

 deb501# cp /etc/hosts /etc/hostname /etc/resolv.conf /var/chroot/lenny_amd64_sda1/etc
 deb501# cp /etc/network/interfaces /var/chroot/lenny_amd64_sda1/etc/network
 deb501# cp /etc/fstab /var/chroot/lenny_amd64_sda1/etc
 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh

+ Réglage du fsab

 sh-3.2# blkid (cette commande permat de récupérer le UUID de vos disques pour votre nouveau fstab... Je me suis fait prendre aussi, le formatage change l'UUID...)
 /dev/sdc1: UUID=&quot;8125f9ad-fa09-415e-8b2b-1562c5791d8b&quot; TYPE=&quot;ext3&quot;
 /dev/sdc2: UUID=&quot;0996b96e-3d86-4395-9cf5-cb744b543a52&quot; TYPE=&quot;ext3&quot;
 /dev/sdb1: UUID=&quot;345408AD54087440&quot; LABEL=&quot;Nouveau nom&quot; TYPE=&quot;ntfs&quot;
 /dev/sdd1: UUID=&quot;3CE6F2CCE6F28584&quot; LABEL=&quot;Nouveau nom&quot; TYPE=&quot;ntfs&quot;
 /dev/sde1: LABEL=&quot;Divers&quot; UUID=&quot;3525ee82-8d13-4caa-a27e-14de985f432d&quot; TYPE=&quot;ext3&quot;
 /dev/sda1: UUID=&quot;248403b5-cdcd-4430-bd96-67b106327373&quot; TYPE=&quot;ext4&quot;
 /dev/sda5: TYPE=&quot;swap&quot;
 ...etc
 sh-3.2# nano /etc/fstab (a rectifier en fonction de votre configuration)
 # /etc/fstab: static file system information.
 #
 # &lt;file system&gt; &lt;mount point&gt;   &lt;type&gt;  &lt;options&gt;       &lt;dump&gt;  &lt;pass&gt;
 proc    /proc   proc    defaults        0       0
 none    /proc/bus/usb   usbfs   devgid=119,devmode=664  0       0
 none    /dev/bus/usb    usbfs   devgid=1001,devmode=664 0       0
 /dev/sda5       none    swap    sw      0       0
 # Montage racine (/dev/sda1) ! Attention si votre partition racine est en ext4 !
 UUID=248403b5-cdcd-4430-bd96-67b106327373       /       ext4    errors=remount-ro       0       1
 #Entry for /dev/sda8 :
 UUID=709e9380-d39f-49db-b759-cac7a87717e6       /home   ext4    relatime        0       2
 ...etc
 # Montage DVD SATA
 /dev/scd0       /media/cdrom0   udf,iso9660     user,noauto     0       0[/code]

Création des repertoire de montage des disques de la nouvelle machine : (en fonction de votre configuration et de vos choix...)

 sh-3.2# mkdir /mnt/sda7 /mnt/Divers1 /mnt/Divers2 /mnt/XP /mnt/deb /mnt/home2 /mnt/zicmu[/code]

=== L'environement graphique ===

Maintenant ? Un environnement graphique ! (J'ai choisi Xfce, vous faites comme vous voulez... Gnome, Kde, aucun...

 sh-3.2# apt-get install xfce4
 [...]
 0 mis à jour, 275 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 132Mo dans les archives.
 Après cette opération, 386Mo d'espace disque supplémentaires seront utilisés.
 Souhaitez-vous continuer [O/n] ?o
 [...]
 Traitement des actions différées (« triggers ») pour « initramfs-tools »...
 sh-3.2#

Modification du Xorg.conf pour avoir le bon clavier au démarrage et le bon driver de votre carte vidéo. J'ai choisi nv (j'ai une nvidia vous l'aurez deviné...). Si vous ne savez pas mettez « Driver  &quot;vesa »&quot; pour ne pas prendre de risque. Vous pourrez changer ça plus tard...

 sh-3.2# nano /etc/X11/xorg.conf
 
 Section &quot;InputDevice&quot;
         Identifier      &quot;Generic Keyboard&quot;
         Driver          &quot;kbd&quot;
         Option          &quot;XkbRules&quot;      &quot;xorg&quot;
         Option          &quot;XkbModel&quot;      &quot;pc105&quot; (à changer)
         Option          &quot;XkbLayout&quot;     &quot;fr&quot; (à changer)
         Option          &quot;XkbVariant&quot;    &quot;latin9&quot; (à ajouter)
 EndSection
 
 Section &quot;InputDevice&quot;
         Identifier      &quot;Configured Mouse&quot;
         Driver          &quot;mouse&quot;
 EndSection
 
 Section &quot;Device&quot;
         Driver  &quot;nv&quot; (ajouter et modifier en fonction de votre carte)
         Identifier &quot;Card0&quot; (ajouter)
 #        Identifier      &quot;Configured Video Device&quot;
 EndSection
 
 Section &quot;Monitor&quot;
         Identifier      &quot;Configured Monitor&quot;
 EndSection
 
 Section &quot;Screen&quot;
         Identifier      &quot;Default Screen&quot;
         Monitor         &quot;Configured Monitor&quot;
 EndSection

=== Le noyau et Grub2 ===

Installons un noyau... Ce serait bête d'oublier  :wink: 

 sh-3.2# apt-cache search linux-image (choisissez dans la liste qu'il vous propose...)
 [...]
 linux-headers-2.6.30-bpo.2-amd64 - Header files for Linux 2.6.30-bpo.2-amd64
 [...]

Ici il faut récupérer votre kernel-img.conf qui permette de convenablement lancer initramfs à l'installation du nouveau noyau dans le chroot.
Ce fichier n'existe pas dans le système créé par debootstrap.
La ligne intéressante : do_initrd = yes

 sh-3.2# exit
 deb501# cp /etc/kernel-img.conf /var/chroot/lenny_amd64_sda1/etc/kernel-img.conf
 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
 sh-3.2# apt-get install linux-image-2.6.30-bpo.2-amd64
 sh-3.2# exit

Maintenant... Modifions notre grub pour que ce nouveau système soit opérationnel :
 :!: Attention, je suis sous Grub2. Si vous êtes sous Grub &quot;legacy&quot; la commande est différente évidemment...

 deb501# grub-mkconfig 
 Generating grub.cfg ...

Voici la nouvelle entrée qui nous intéresse...

 menuentry &quot;Debian GNU/Linux (5.0.3) (on /dev/sda1)&quot; {
        insmod ext2
        set root=(hd0,1)
        search --no-floppy --fs-uuid --set 248403b5-cdcd-4430-bd96-67b106327373
        linux /boot/vmlinuz-2.6.30-bpo.2-amd64 root=/dev/sda1 rootfstype=ext4
        initrd /boot/initrd.img-2.6.30-bpo.2-amd64
 [...]
 done deb501#

Vous pouvez vérifier dans la console ou en tapant nano /boot/grub/grub.cfg (ou nano /boot/grub/menu.lst si vous êtes en grub legacy)
J'ai rajouté &quot;rootfstype=ext4&quot;. Sans ce petit morceau de code votre partition fromatée en ext4 ne démarera pas... (Invalid filesystem...)

=== Divers - mots de passe ===

Derniers &quot;fignolages&quot;... J'installe un navigateur et les drivers pour que mes disque nfs soient pleinement opérationnels. Et... zsh car c'est cool !  :wink: 

 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
 sh-3.2# apt-get install gparted ntfs-3g iceweasel
 sh-3.2# apt-get install zsh[/code]

Enfin, les mots de passe...
Debootstrap installe un système sans mots de passe... Si vous redémarrez maintenant vous vous loguerez en root dans votre nouveau système sans montrer patte blanche... Un peu génant non ?

 sh-3.2# nano /etc/passwd
 laurent:x:1000:1000:Laurent Voulzy:/home/laurent:/bin/zsh

Vous enlevez le x pour que cela ressemble à ça :

 laurent::1000:1000:Laurent Voulzy:/home/laurent:/bin/zsh

Ceci afin de pouvoir loguer vos utilisateurs &quot;normaux&quot;. Il faut maintenant créer les mots de passe.

 sh-3.2# /usr/bin/passwd
 
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 sh-3.2# su - laurent
 laurent@deb501 jeu oct 15 05:16:20
 ~/  /usr/bin/passwd
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 ~/ exit
 sh-3.2# exit
 deb501# reboot

Voilà vous disposez d'une toute fraîche installation, fonctionnelle !

== Taskel ==

Pour avoir un système un peu plus complet, en fonction de vos besoins, vous pouvez utiliser l'utilitaire tasksel.
La commande suivante détaille les &quot;tâches&quot; que tasksel peut réaliser pour vous... (Vous remarquerez que ce sont les mêmes choix que dans une installation &quot;classique&quot; qui sont proposés)

 sh-3.2# tasksel --list-tasks
 u desktop       Desktop environment
 u web-server    Web server
 u print-server  Print server
 u dns-server    DNS server
 u file-server   File server
 u mail-server   Mail server
 u database-server       SQL database
 u laptop        Laptop
 u manual        manual package selection

Chaque &quot;tâche&quot; installe un ensemble de paquets utiles pour certaines utilisations. &quot;u&quot; pour non installé. Une tâche installée commence par &quot;i&quot;
Il ne vous reste plus qu'a taper dans la console

 # tasksel --task-packages nom_tache

Il existe une autre tâche, qui n'est pas dans la liste ci-dessus[code]tasksel install standard[/code]Qui installe un ensemble de paquets &quot;standards&quot;. Je vous renvoie au [[http://www.debian-facile.org/wiki/manuel:tasksel Wiki de debian-facile]] pour plus de détails.

--[[Utilisateur:Lol|Lol]] 25 mars 2010 à 13:00 (UTC)

[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 source]

[[Catégorie:Installation]]</text>
      <sha1>lrhuie7nfzelpa5eh2z1w9z35967gr5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3524</id>
      <parentid>3523</parentid>
      <timestamp>2011-10-30T18:15:47Z</timestamp>
      <contributor>
        <username>Martin mtl</username>
        <id>173</id>
      </contributor>
      <comment>/* finalisation de l'installation et réglages de la Lenny */</comment>
      <text xml:space="preserve" bytes="17301">Installation d'une Lenny avec debootstrap et chroot

L'objectif est d'installer une Lenny (sur une nouvelle partition) à partir d'une SID, sans avoir besoin de redémarrer ma machine une seule fois...
Avantage : rester dans mon environnement de travail pendant toute l'installation...

Parti-pris : utilisation de nano comme éditeur

== Prérequis ==

Prérequis : Installer debootstrap (chroot se trouve dans le paquet coreutils normalement déjà installé dans votre Debian).
Installer un noyau qui supporte le ext4 si vous avez l'intention de choisir ce système de fichiers.

 deb501# apt-get install debootstrap

Formatage de la partition qui va recevoir la Lenny :
J'ai choisi de formater en ext4, vous pouvez choisir le système de fichiers de votre choix bien sûr.

 deb501# mkfs -V -t ext4 /dev/sda1

Création du répertoire qui va recevoir le système et montage de la partition fraîchement formatée dans ce nouveau répertoire.
J'ai choisi /var/chroot/lenny_amd64_sda1.
Un petit « ls » à la fin pour vérifier que la partition est bien montée.

 deb501# mkdir /var/chroot
 deb501# mkdir /var/chroot/lenny_amd64_sda1
 deb501# cd /var/chroot/lenny_amd64_sda1
 deb501# mount /dev/sda1 /var/chroot/lenny_amd64_sda1 
 deb501# cd /var/chroot/lenny_amd64_sda1 
 deb501# ls
 lost+found

== Installation avec debootstrap ==

Installation de la Lenny avec debootstrap (j'ai choisi une Lenny amd64, rien ne vous empêche de choisir une Etch i386 ou bien même une Sid...)
Vous remarquerez que j'ai ajouté &quot;192.168.0.1:9999/&quot; à mon adresse de dépôt...
Explication : j'utilise un dépôt local. Détails ici [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23065 sur le forum.debian-fr.org]
Si vous ne l'avez pas (apt-cacher-ng) modifiez comme suit : 

 http://ftp.debian.org/debian/

Si vous avez une mauvaise connexion, mais disposez d'un CD d'installation, vous pouvez remplacer par file:/cdrom/debian/

 deb501# debootstrap --arch amd64 lenny /var/chroot/lenny_amd64_sda1 http://192.168.0.1:9999/ftp.debian.org/debian/
 I: Retrieving Release                                                                                 
 I: Retrieving Packages                                                                                
 I: Validating Packages                                                                                
 I: Resolving dependencies of required packages...                                                     
 I: Resolving dependencies of base packages...                                                         
 I: Checking component main on http://192.168.0.1:9999/ftp.debian.org/debian...                        
 I: Retrieving adduser
 [...]
 I: Configuring aptitude...
 I: Configuring tasksel-data...
 I: Configuring tasksel...
 I: Base system installed successfully.

Si tout s'est bien passé, un &quot;ls&quot; vous retournera la toute nouvelle arborescence

 deb501# ls
 bin  boot  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  sbin  selinux  srv  sys tmp  usr  var

À ce niveau, votre Lenny est installée, mais elle n'est pas pleinement fonctionnelle ni « autonome ». Vous ne pourrez pas bouter dessus...

== Préparation du chroot ==

Il faut maintenant préparer le chroot. Trois répertoires sont importants pour que cela fonctionne convenablement : /tmp, /dev et /proc
Vous éditez votre fstab pour que ces répertoires soient montés (et liés - « bind ») automatiquement dans votre répertoire chroot.

 deb501# nano /etc/fstab

Ajoutez :

 ############################################ montages chroot &quot;liés&quot;
 # sid32 chroot
 /tmp    /var/chroot/lenny_amd64_sda1/tmp        none    bind    0       0
 /dev    /var/chroot/lenny_amd64_sda1/dev        none    bind    0       0
 /proc   /var/chroot/lenny_amd64_sda1/proc       none    bind    0       0

Ctrl+O (enregistrez) Ctrl+X (Quittez)

 deb501# mount -a (cette commande monte tout ce qui est dans votre fstab)

Pour « normaliser les comptes et groupes » de votre nouvelle Lenny (que les utilisateurs et groupes aient les mêmes « id » dans votre système &quot;hôte&quot; et dans votre chroot tapez les commandes suivantes :

 deb501# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/passwd &gt;&gt; /var/chroot/lenny_amd64_sda1/etc/passwd
 deb501# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/group &gt;&gt; /var/chroot/lenny_amd64_sda1/etc/group

Vous allez maintenant entrer dans votre environnement chroot (tadaa !)

 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
 sh-3.2#

== Finalisation de l'installation et réglages de la Lenny ==

Vous êtes maintenant dans votre nouvelle Lenny, mais ce n'est pas terminé, votre système est incomplet, impossible de booter dessus...

=== &quot;locales&quot; ===

Nous allons maintenant mettre en français (ou ce que vous voulez...), configurer la localisation, et surtout... régler l'heure. L'heure est très importante. Si vous démarrez sur ce nouveau système avec une mauvaise heure (dans le futur par rapport au système sur lequel vous êtes), le prochain démarrage vous laissera un goût amer, vous serez obligé de faire un fsck... Je me suis fait prendre, une heure de vérification de disque...
En effet, au montage des disques le système inscrit l'heure (au tout début du disque). Si cette heure est « dans le futur », au démarrage suivant (sur une autre installation), il ne voudra pas démarrer et exigera une vérification de disque...

 sh-3.2# apt-get update
 sh-3.2# apt-get install locales
 sh-3.2# dpkg-reconfigure locales
 sh-3.2# dpkg-reconfigure tzdata

 Current default timezone: 'Indian/Antananarivo'
 Local time is now:      Thu Oct 15 15:02:45 EAT 2009.
 Universal Time is now:  Thu Oct 15 12:02:45 UTC 2009.

 sh-3.2#
 sh-3.2# hwclock --systohc --utc

Il faut modifier le fichier /etc/default/rcS pour forcer le système à se mettre en heure locale...
Explications sur [http://forum.debian-fr.org/viewtopic.php?p=210286#p210286 le forum.debian-fr.org]

 sh-3.2# nano /etc/default/rcS

il faut modifier la ligne utc : UTC=no

 sh-3.2# apt-get install ntpdate
 sh-3.2# ntpdate ntp.metas.ch
 15 Oct 15:04:16 ntpdate[22869]: adjust time server 162.23.41.34 offset 0.014581 sec[/code]

=== Le sources.list ===

Nous allons maintenant compléter nos dépôts
La création de apt.conf est mon « bonus » j'utilise apt-cacher-ng comme je le disais plus haut...
Inutile pour vous si vous n'avez pas apt-cacher-ng installé)

 sh-3.2# nano /etc/apt/apt.conf
 Acquire::http { Proxy &quot;http://192.168.0.1:9999&quot;; };[/code]

J'ai complété avec quelques dépôts. Vous pourriez tout aussi bien ne pas le faire, mais c'est sympa d'avoir un peu de choix, non ? J'ai ajouté le dépôt « backport » pour avoir accès à un noyau récent , vous n'êtes, là encore, pas obligé de le faire.

 sh-3.2# nano /etc/apt/sources.list
 deb http://ftp.debian.org/debian lenny main
 ###### Debian Main Repos
 deb http://ftp.fr.debian.org/debian/ lenny contrib non-free
 ###### Debian Update Repos
 deb http://security.debian.org/ lenny/updates main contrib non-free
 deb http://ftp.fr.debian.org/debian/ lenny-proposed-updates main contrib non-free
 deb ftp://ftp.proxad.net/mirrors/volatile.debian.net/ lenny/volatile main contrib non-free
 #### Debian Backports - http://www.backports.org
 ## Run this command: gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C &amp;&amp; gpg --export 16BA136C | apt-key add -
 deb http://www.backports.org/debian/ lenny-backports main contrib non-free
 #### Debian Multimedia - http://www.debian-multimedia.org/
 ## Run this command: apt-get update &amp;&amp; apt-get install debian-multimedia-keyring &amp;&amp; apt-get update
 deb ftp://ftp.debian-multimedia.org lenny main

Ajoutons les clés des nouveaux dépots et mettons à jour :

 sh-3.2# gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C &amp;&amp; gpg --export 16BA136C | apt-key add -
 sh-3.2# apt-get update
 […] Vous obtiendrez évidemment cette erreur :
 W: GPG error: ftp://ftp.debian-multimedia.org lenny Release: Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907
 W: Vous pouvez lancer « apt-get update » pour corriger ces problèmes.
 sh-3.2# apt-get install debian-multimedia-keyring &amp;&amp; apt-get update
 [...]
 ATTENTION : les paquets suivants n'ont pas été authentifiés.
   debian-multimedia-keyring
 Faut-il installer ces paquets sans vérification (o/N) ? o
 sh-3.2#
 sh-3.2# apt-get upgrade

=== Clavier === 

Continuons... Le paquet MC n'est pas une obligation, moi je ne peux pas m'en passer...

 sh-3.2# apt-get install mc

Configurons maintenant le clavier

 sh-3.2# apt-get install console-data (azerty/french)

[…] Je ne sais pour quelle raison il nous met d'office le clavier mac-usb-f.. Dans le chroot il ne doit pas détecter autre chose...

 Looking for keymap to install:
 mac-usb-f

Rectifions :

 sh-3.2# dpkg-reconfigure -plow console-data (pour choisir le « bon » clavier)
(option choisir un codage clavier dans la liste complète) - pc / azerty / French / Same as X11 (latin9) / Standard
 Looking for keymap to install:
 fr-latin9 (cette fois-ci c'est bon)
 sh-3.2# exit

Nous sommes sortis du chroot, quelques fichiers à récupérer... Pour avoir un bon hostname, le réseau, le montage correct des disques...

=== hostname et fstab ===

 deb501# cp /etc/hosts /etc/hostname /etc/resolv.conf /var/chroot/lenny_amd64_sda1/etc
 deb501# cp /etc/network/interfaces /var/chroot/lenny_amd64_sda1/etc/network
 deb501# cp /etc/fstab /var/chroot/lenny_amd64_sda1/etc
 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh

+ Réglage du fsab

 sh-3.2# blkid (cette commande permat de récupérer le UUID de vos disques pour votre nouveau fstab... Je me suis fait prendre aussi, le formatage change l'UUID...)
 /dev/sdc1: UUID=&quot;8125f9ad-fa09-415e-8b2b-1562c5791d8b&quot; TYPE=&quot;ext3&quot;
 /dev/sdc2: UUID=&quot;0996b96e-3d86-4395-9cf5-cb744b543a52&quot; TYPE=&quot;ext3&quot;
 /dev/sdb1: UUID=&quot;345408AD54087440&quot; LABEL=&quot;Nouveau nom&quot; TYPE=&quot;ntfs&quot;
 /dev/sdd1: UUID=&quot;3CE6F2CCE6F28584&quot; LABEL=&quot;Nouveau nom&quot; TYPE=&quot;ntfs&quot;
 /dev/sde1: LABEL=&quot;Divers&quot; UUID=&quot;3525ee82-8d13-4caa-a27e-14de985f432d&quot; TYPE=&quot;ext3&quot;
 /dev/sda1: UUID=&quot;248403b5-cdcd-4430-bd96-67b106327373&quot; TYPE=&quot;ext4&quot;
 /dev/sda5: TYPE=&quot;swap&quot;
 ...etc
 sh-3.2# nano /etc/fstab (a rectifier en fonction de votre configuration)
 # /etc/fstab: static file system information.
 #
 # &lt;file system&gt; &lt;mount point&gt;   &lt;type&gt;  &lt;options&gt;       &lt;dump&gt;  &lt;pass&gt;
 proc    /proc   proc    defaults        0       0
 none    /proc/bus/usb   usbfs   devgid=119,devmode=664  0       0
 none    /dev/bus/usb    usbfs   devgid=1001,devmode=664 0       0
 /dev/sda5       none    swap    sw      0       0
 # Montage racine (/dev/sda1) ! Attention si votre partition racine est en ext4 !
 UUID=248403b5-cdcd-4430-bd96-67b106327373       /       ext4    errors=remount-ro       0       1
 #Entry for /dev/sda8 :
 UUID=709e9380-d39f-49db-b759-cac7a87717e6       /home   ext4    relatime        0       2
 ...etc
 # Montage DVD SATA
 /dev/scd0       /media/cdrom0   udf,iso9660     user,noauto     0       0[/code]

Création des répertoire de montage des disques de la nouvelle machine : (en fonction de votre configuration et de vos choix...)

 sh-3.2# mkdir /mnt/sda7 /mnt/Divers1 /mnt/Divers2 /mnt/XP /mnt/deb /mnt/home2 /mnt/zicmu[/code]

=== L'environnement graphique ===

Maintenant ? Un environnement graphique ! (J'ai choisi Xfce, vous faites comme vous voulez... Gnome, Kde, aucun...

 sh-3.2# apt-get install xfce4
 [...]
 0 mis à jour, 275 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 132Mo dans les archives.
 Après cette opération, 386Mo d'espace disque supplémentaires seront utilisés.
 Souhaitez-vous continuer [O/n] ?o
 [...]
 Traitement des actions différées (« triggers ») pour « initramfs-tools »...
 sh-3.2#

Modification du Xorg.conf pour avoir le bon clavier au démarrage et le bon driver de votre carte vidéo. J'ai choisi nv (j'ai une nvidia vous l'aurez deviné...). Si vous ne savez pas mettez « Driver  &quot;vesa »&quot; pour ne pas prendre de risque. Vous pourrez changer ça plus tard...

 sh-3.2# nano /etc/X11/xorg.conf
 
 Section &quot;InputDevice&quot;
         Identifier      &quot;Generic Keyboard&quot;
         Driver          &quot;kbd&quot;
         Option          &quot;XkbRules&quot;      &quot;xorg&quot;
         Option          &quot;XkbModel&quot;      &quot;pc105&quot; (à changer)
         Option          &quot;XkbLayout&quot;     &quot;fr&quot; (à changer)
         Option          &quot;XkbVariant&quot;    &quot;latin9&quot; (à ajouter)
 EndSection
 
 Section &quot;InputDevice&quot;
         Identifier      &quot;Configured Mouse&quot;
         Driver          &quot;mouse&quot;
 EndSection
 
 Section &quot;Device&quot;
         Driver  &quot;nv&quot; (ajouter et modifier en fonction de votre carte)
         Identifier &quot;Card0&quot; (ajouter)
 #        Identifier      &quot;Configured Video Device&quot;
 EndSection
 
 Section &quot;Monitor&quot;
         Identifier      &quot;Configured Monitor&quot;
 EndSection
 
 Section &quot;Screen&quot;
         Identifier      &quot;Default Screen&quot;
         Monitor         &quot;Configured Monitor&quot;
 EndSection

=== Le noyau et Grub2 ===

Installons un noyau... Ce serait bête d'oublier  :wink: 

 sh-3.2# apt-cache search linux-image (choisissez dans la liste qu'il vous propose...)
 [...]
 linux-headers-2.6.30-bpo.2-amd64 - Header files for Linux 2.6.30-bpo.2-amd64
 [...]

Ici il faut récupérer votre kernel-img.conf qui permette de convenablement lancer initramfs à l'installation du nouveau noyau dans le chroot.
Ce fichier n'existe pas dans le système créé par debootstrap.
La ligne intéressante : do_initrd = yes

 sh-3.2# exit
 deb501# cp /etc/kernel-img.conf /var/chroot/lenny_amd64_sda1/etc/kernel-img.conf
 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
 sh-3.2# apt-get install linux-image-2.6.30-bpo.2-amd64
 sh-3.2# exit

Maintenant... Modifions notre grub pour que ce nouveau système soit opérationnel :
 :!: Attention, je suis sous Grub2. Si vous êtes sous Grub &quot;legacy&quot; la commande est différente évidemment...

 deb501# grub-mkconfig 
 Generating grub.cfg ...

Voici la nouvelle entrée qui nous intéresse...

 menuentry &quot;Debian GNU/Linux (5.0.3) (on /dev/sda1)&quot; {
        insmod ext2
        set root=(hd0,1)
        search --no-floppy --fs-uuid --set 248403b5-cdcd-4430-bd96-67b106327373
        linux /boot/vmlinuz-2.6.30-bpo.2-amd64 root=/dev/sda1 rootfstype=ext4
        initrd /boot/initrd.img-2.6.30-bpo.2-amd64
 [...]
 done deb501#

Vous pouvez vérifier dans la console ou en tapant nano /boot/grub/grub.cfg (ou nano /boot/grub/menu.lst si vous êtes en grub legacy)
J'ai rajouté &quot;rootfstype=ext4&quot;. Sans ce petit morceau de code votre partition fromatée en ext4 ne démarera pas... (Invalid filesystem...)

=== Divers - mots de passe ===

Derniers &quot;fignolages&quot;... J'installe un navigateur et les drivers pour que mes disque nfs soient pleinement opérationnels. Et... zsh car c'est cool !  :wink: 

 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
 sh-3.2# apt-get install gparted ntfs-3g iceweasel
 sh-3.2# apt-get install zsh[/code]

Enfin, les mots de passe...
Debootstrap installe un système sans mots de passe... Si vous redémarrez maintenant vous vous loguerez en root dans votre nouveau système sans montrer patte blanche... Un peu génant non ?

 sh-3.2# nano /etc/passwd
 laurent:x:1000:1000:Laurent Voulzy:/home/laurent:/bin/zsh

Vous enlevez le x pour que cela ressemble à ça :

 laurent::1000:1000:Laurent Voulzy:/home/laurent:/bin/zsh

Ceci afin de pouvoir loguer vos utilisateurs &quot;normaux&quot;. Il faut maintenant créer les mots de passe.

 sh-3.2# /usr/bin/passwd
 
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 sh-3.2# su - laurent
 laurent@deb501 jeu oct 15 05:16:20
 ~/  /usr/bin/passwd
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 ~/ exit
 sh-3.2# exit
 deb501# reboot

Voilà vous disposez d'une toute fraîche installation, fonctionnelle !

== Taskel ==

Pour avoir un système un peu plus complet, en fonction de vos besoins, vous pouvez utiliser l'utilitaire tasksel.
La commande suivante détaille les &quot;tâches&quot; que tasksel peut réaliser pour vous... (Vous remarquerez que ce sont les mêmes choix que dans une installation &quot;classique&quot; qui sont proposés)

 sh-3.2# tasksel --list-tasks
 u desktop       Desktop environment
 u web-server    Web server
 u print-server  Print server
 u dns-server    DNS server
 u file-server   File server
 u mail-server   Mail server
 u database-server       SQL database
 u laptop        Laptop
 u manual        manual package selection

Chaque &quot;tâche&quot; installe un ensemble de paquets utiles pour certaines utilisations. &quot;u&quot; pour non installé. Une tâche installée commence par &quot;i&quot;
Il ne vous reste plus qu'a taper dans la console

 # tasksel --task-packages nom_tache

Il existe une autre tâche, qui n'est pas dans la liste ci-dessus[code]tasksel install standard[/code]Qui installe un ensemble de paquets &quot;standards&quot;. Je vous renvoie au [[http://www.debian-facile.org/wiki/manuel:tasksel Wiki de debian-facile]] pour plus de détails.

--[[Utilisateur:Lol|Lol]] 25 mars 2010 à 13:00 (UTC)

[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 source]

[[Catégorie:Installation]]</text>
      <sha1>k7yhck563liofdzg4ilf5c1i8hlxkpf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4089</id>
      <parentid>3524</parentid>
      <timestamp>2012-04-27T15:53:00Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>/* L'environnement graphique */</comment>
      <text xml:space="preserve" bytes="17359">Installation d'une Lenny avec debootstrap et chroot

L'objectif est d'installer une Lenny (sur une nouvelle partition) à partir d'une SID, sans avoir besoin de redémarrer ma machine une seule fois...
Avantage : rester dans mon environnement de travail pendant toute l'installation...

Parti-pris : utilisation de nano comme éditeur

== Prérequis ==

Prérequis : Installer debootstrap (chroot se trouve dans le paquet coreutils normalement déjà installé dans votre Debian).
Installer un noyau qui supporte le ext4 si vous avez l'intention de choisir ce système de fichiers.

 deb501# apt-get install debootstrap

Formatage de la partition qui va recevoir la Lenny :
J'ai choisi de formater en ext4, vous pouvez choisir le système de fichiers de votre choix bien sûr.

 deb501# mkfs -V -t ext4 /dev/sda1

Création du répertoire qui va recevoir le système et montage de la partition fraîchement formatée dans ce nouveau répertoire.
J'ai choisi /var/chroot/lenny_amd64_sda1.
Un petit « ls » à la fin pour vérifier que la partition est bien montée.

 deb501# mkdir /var/chroot
 deb501# mkdir /var/chroot/lenny_amd64_sda1
 deb501# cd /var/chroot/lenny_amd64_sda1
 deb501# mount /dev/sda1 /var/chroot/lenny_amd64_sda1 
 deb501# cd /var/chroot/lenny_amd64_sda1 
 deb501# ls
 lost+found

== Installation avec debootstrap ==

Installation de la Lenny avec debootstrap (j'ai choisi une Lenny amd64, rien ne vous empêche de choisir une Etch i386 ou bien même une Sid...)
Vous remarquerez que j'ai ajouté &quot;192.168.0.1:9999/&quot; à mon adresse de dépôt...
Explication : j'utilise un dépôt local. Détails ici [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23065 sur le forum.debian-fr.org]
Si vous ne l'avez pas (apt-cacher-ng) modifiez comme suit : 

 http://ftp.debian.org/debian/

Si vous avez une mauvaise connexion, mais disposez d'un CD d'installation, vous pouvez remplacer par file:/cdrom/debian/

 deb501# debootstrap --arch amd64 lenny /var/chroot/lenny_amd64_sda1 http://192.168.0.1:9999/ftp.debian.org/debian/
 I: Retrieving Release                                                                                 
 I: Retrieving Packages                                                                                
 I: Validating Packages                                                                                
 I: Resolving dependencies of required packages...                                                     
 I: Resolving dependencies of base packages...                                                         
 I: Checking component main on http://192.168.0.1:9999/ftp.debian.org/debian...                        
 I: Retrieving adduser
 [...]
 I: Configuring aptitude...
 I: Configuring tasksel-data...
 I: Configuring tasksel...
 I: Base system installed successfully.

Si tout s'est bien passé, un &quot;ls&quot; vous retournera la toute nouvelle arborescence

 deb501# ls
 bin  boot  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  sbin  selinux  srv  sys tmp  usr  var

À ce niveau, votre Lenny est installée, mais elle n'est pas pleinement fonctionnelle ni « autonome ». Vous ne pourrez pas bouter dessus...

== Préparation du chroot ==

Il faut maintenant préparer le chroot. Trois répertoires sont importants pour que cela fonctionne convenablement : /tmp, /dev et /proc
Vous éditez votre fstab pour que ces répertoires soient montés (et liés - « bind ») automatiquement dans votre répertoire chroot.

 deb501# nano /etc/fstab

Ajoutez :

 ############################################ montages chroot &quot;liés&quot;
 # sid32 chroot
 /tmp    /var/chroot/lenny_amd64_sda1/tmp        none    bind    0       0
 /dev    /var/chroot/lenny_amd64_sda1/dev        none    bind    0       0
 /proc   /var/chroot/lenny_amd64_sda1/proc       none    bind    0       0

Ctrl+O (enregistrez) Ctrl+X (Quittez)

 deb501# mount -a (cette commande monte tout ce qui est dans votre fstab)

Pour « normaliser les comptes et groupes » de votre nouvelle Lenny (que les utilisateurs et groupes aient les mêmes « id » dans votre système &quot;hôte&quot; et dans votre chroot tapez les commandes suivantes :

 deb501# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/passwd &gt;&gt; /var/chroot/lenny_amd64_sda1/etc/passwd
 deb501# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/group &gt;&gt; /var/chroot/lenny_amd64_sda1/etc/group

Vous allez maintenant entrer dans votre environnement chroot (tadaa !)

 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
 sh-3.2#

== Finalisation de l'installation et réglages de la Lenny ==

Vous êtes maintenant dans votre nouvelle Lenny, mais ce n'est pas terminé, votre système est incomplet, impossible de booter dessus...

=== &quot;locales&quot; ===

Nous allons maintenant mettre en français (ou ce que vous voulez...), configurer la localisation, et surtout... régler l'heure. L'heure est très importante. Si vous démarrez sur ce nouveau système avec une mauvaise heure (dans le futur par rapport au système sur lequel vous êtes), le prochain démarrage vous laissera un goût amer, vous serez obligé de faire un fsck... Je me suis fait prendre, une heure de vérification de disque...
En effet, au montage des disques le système inscrit l'heure (au tout début du disque). Si cette heure est « dans le futur », au démarrage suivant (sur une autre installation), il ne voudra pas démarrer et exigera une vérification de disque...

 sh-3.2# apt-get update
 sh-3.2# apt-get install locales
 sh-3.2# dpkg-reconfigure locales
 sh-3.2# dpkg-reconfigure tzdata

 Current default timezone: 'Indian/Antananarivo'
 Local time is now:      Thu Oct 15 15:02:45 EAT 2009.
 Universal Time is now:  Thu Oct 15 12:02:45 UTC 2009.

 sh-3.2#
 sh-3.2# hwclock --systohc --utc

Il faut modifier le fichier /etc/default/rcS pour forcer le système à se mettre en heure locale...
Explications sur [http://forum.debian-fr.org/viewtopic.php?p=210286#p210286 le forum.debian-fr.org]

 sh-3.2# nano /etc/default/rcS

il faut modifier la ligne utc : UTC=no

 sh-3.2# apt-get install ntpdate
 sh-3.2# ntpdate ntp.metas.ch
 15 Oct 15:04:16 ntpdate[22869]: adjust time server 162.23.41.34 offset 0.014581 sec[/code]

=== Le sources.list ===

Nous allons maintenant compléter nos dépôts
La création de apt.conf est mon « bonus » j'utilise apt-cacher-ng comme je le disais plus haut...
Inutile pour vous si vous n'avez pas apt-cacher-ng installé)

 sh-3.2# nano /etc/apt/apt.conf
 Acquire::http { Proxy &quot;http://192.168.0.1:9999&quot;; };[/code]

J'ai complété avec quelques dépôts. Vous pourriez tout aussi bien ne pas le faire, mais c'est sympa d'avoir un peu de choix, non ? J'ai ajouté le dépôt « backport » pour avoir accès à un noyau récent , vous n'êtes, là encore, pas obligé de le faire.

 sh-3.2# nano /etc/apt/sources.list
 deb http://ftp.debian.org/debian lenny main
 ###### Debian Main Repos
 deb http://ftp.fr.debian.org/debian/ lenny contrib non-free
 ###### Debian Update Repos
 deb http://security.debian.org/ lenny/updates main contrib non-free
 deb http://ftp.fr.debian.org/debian/ lenny-proposed-updates main contrib non-free
 deb ftp://ftp.proxad.net/mirrors/volatile.debian.net/ lenny/volatile main contrib non-free
 #### Debian Backports - http://www.backports.org
 ## Run this command: gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C &amp;&amp; gpg --export 16BA136C | apt-key add -
 deb http://www.backports.org/debian/ lenny-backports main contrib non-free
 #### Debian Multimedia - http://www.debian-multimedia.org/
 ## Run this command: apt-get update &amp;&amp; apt-get install debian-multimedia-keyring &amp;&amp; apt-get update
 deb ftp://ftp.debian-multimedia.org lenny main

Ajoutons les clés des nouveaux dépots et mettons à jour :

 sh-3.2# gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C &amp;&amp; gpg --export 16BA136C | apt-key add -
 sh-3.2# apt-get update
 […] Vous obtiendrez évidemment cette erreur :
 W: GPG error: ftp://ftp.debian-multimedia.org lenny Release: Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907
 W: Vous pouvez lancer « apt-get update » pour corriger ces problèmes.
 sh-3.2# apt-get install debian-multimedia-keyring &amp;&amp; apt-get update
 [...]
 ATTENTION : les paquets suivants n'ont pas été authentifiés.
   debian-multimedia-keyring
 Faut-il installer ces paquets sans vérification (o/N) ? o
 sh-3.2#
 sh-3.2# apt-get upgrade

=== Clavier === 

Continuons... Le paquet MC n'est pas une obligation, moi je ne peux pas m'en passer...

 sh-3.2# apt-get install mc

Configurons maintenant le clavier

 sh-3.2# apt-get install console-data (azerty/french)

[…] Je ne sais pour quelle raison il nous met d'office le clavier mac-usb-f.. Dans le chroot il ne doit pas détecter autre chose...

 Looking for keymap to install:
 mac-usb-f

Rectifions :

 sh-3.2# dpkg-reconfigure -plow console-data (pour choisir le « bon » clavier)
(option choisir un codage clavier dans la liste complète) - pc / azerty / French / Same as X11 (latin9) / Standard
 Looking for keymap to install:
 fr-latin9 (cette fois-ci c'est bon)
 sh-3.2# exit

Nous sommes sortis du chroot, quelques fichiers à récupérer... Pour avoir un bon hostname, le réseau, le montage correct des disques...

=== hostname et fstab ===

 deb501# cp /etc/hosts /etc/hostname /etc/resolv.conf /var/chroot/lenny_amd64_sda1/etc
 deb501# cp /etc/network/interfaces /var/chroot/lenny_amd64_sda1/etc/network
 deb501# cp /etc/fstab /var/chroot/lenny_amd64_sda1/etc
 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh

+ Réglage du fsab

 sh-3.2# blkid (cette commande permat de récupérer le UUID de vos disques pour votre nouveau fstab... Je me suis fait prendre aussi, le formatage change l'UUID...)
 /dev/sdc1: UUID=&quot;8125f9ad-fa09-415e-8b2b-1562c5791d8b&quot; TYPE=&quot;ext3&quot;
 /dev/sdc2: UUID=&quot;0996b96e-3d86-4395-9cf5-cb744b543a52&quot; TYPE=&quot;ext3&quot;
 /dev/sdb1: UUID=&quot;345408AD54087440&quot; LABEL=&quot;Nouveau nom&quot; TYPE=&quot;ntfs&quot;
 /dev/sdd1: UUID=&quot;3CE6F2CCE6F28584&quot; LABEL=&quot;Nouveau nom&quot; TYPE=&quot;ntfs&quot;
 /dev/sde1: LABEL=&quot;Divers&quot; UUID=&quot;3525ee82-8d13-4caa-a27e-14de985f432d&quot; TYPE=&quot;ext3&quot;
 /dev/sda1: UUID=&quot;248403b5-cdcd-4430-bd96-67b106327373&quot; TYPE=&quot;ext4&quot;
 /dev/sda5: TYPE=&quot;swap&quot;
 ...etc
 sh-3.2# nano /etc/fstab (a rectifier en fonction de votre configuration)
 # /etc/fstab: static file system information.
 #
 # &lt;file system&gt; &lt;mount point&gt;   &lt;type&gt;  &lt;options&gt;       &lt;dump&gt;  &lt;pass&gt;
 proc    /proc   proc    defaults        0       0
 none    /proc/bus/usb   usbfs   devgid=119,devmode=664  0       0
 none    /dev/bus/usb    usbfs   devgid=1001,devmode=664 0       0
 /dev/sda5       none    swap    sw      0       0
 # Montage racine (/dev/sda1) ! Attention si votre partition racine est en ext4 !
 UUID=248403b5-cdcd-4430-bd96-67b106327373       /       ext4    errors=remount-ro       0       1
 #Entry for /dev/sda8 :
 UUID=709e9380-d39f-49db-b759-cac7a87717e6       /home   ext4    relatime        0       2
 ...etc
 # Montage DVD SATA
 /dev/scd0       /media/cdrom0   udf,iso9660     user,noauto     0       0[/code]

Création des répertoire de montage des disques de la nouvelle machine : (en fonction de votre configuration et de vos choix...)

 sh-3.2# mkdir /mnt/sda7 /mnt/Divers1 /mnt/Divers2 /mnt/XP /mnt/deb /mnt/home2 /mnt/zicmu[/code]

=== L'environnement graphique ===

Maintenant ? Un environnement graphique ! (J'ai choisi Xfce, vous faites comme vous voulez... [[Environnement graphique::Gnome]], [[Environnement graphique::Kde]], aucun...

 sh-3.2# apt-get install xfce4
 [...]
 0 mis à jour, 275 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 132Mo dans les archives.
 Après cette opération, 386Mo d'espace disque supplémentaires seront utilisés.
 Souhaitez-vous continuer [O/n] ?o
 [...]
 Traitement des actions différées (« triggers ») pour « initramfs-tools »...
 sh-3.2#

Modification du Xorg.conf pour avoir le bon clavier au démarrage et le bon driver de votre carte vidéo. J'ai choisi nv (j'ai une nvidia vous l'aurez deviné...). Si vous ne savez pas mettez « Driver  &quot;vesa »&quot; pour ne pas prendre de risque. Vous pourrez changer ça plus tard...

 sh-3.2# nano /etc/X11/xorg.conf
 
 Section &quot;InputDevice&quot;
         Identifier      &quot;Generic Keyboard&quot;
         Driver          &quot;kbd&quot;
         Option          &quot;XkbRules&quot;      &quot;xorg&quot;
         Option          &quot;XkbModel&quot;      &quot;pc105&quot; (à changer)
         Option          &quot;XkbLayout&quot;     &quot;fr&quot; (à changer)
         Option          &quot;XkbVariant&quot;    &quot;latin9&quot; (à ajouter)
 EndSection
 
 Section &quot;InputDevice&quot;
         Identifier      &quot;Configured Mouse&quot;
         Driver          &quot;mouse&quot;
 EndSection
 
 Section &quot;Device&quot;
         Driver  &quot;nv&quot; (ajouter et modifier en fonction de votre carte)
         Identifier &quot;Card0&quot; (ajouter)
 #        Identifier      &quot;Configured Video Device&quot;
 EndSection
 
 Section &quot;Monitor&quot;
         Identifier      &quot;Configured Monitor&quot;
 EndSection
 
 Section &quot;Screen&quot;
         Identifier      &quot;Default Screen&quot;
         Monitor         &quot;Configured Monitor&quot;
 EndSection

=== Le noyau et Grub2 ===

Installons un noyau... Ce serait bête d'oublier  :wink: 

 sh-3.2# apt-cache search linux-image (choisissez dans la liste qu'il vous propose...)
 [...]
 linux-headers-2.6.30-bpo.2-amd64 - Header files for Linux 2.6.30-bpo.2-amd64
 [...]

Ici il faut récupérer votre kernel-img.conf qui permette de convenablement lancer initramfs à l'installation du nouveau noyau dans le chroot.
Ce fichier n'existe pas dans le système créé par debootstrap.
La ligne intéressante : do_initrd = yes

 sh-3.2# exit
 deb501# cp /etc/kernel-img.conf /var/chroot/lenny_amd64_sda1/etc/kernel-img.conf
 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
 sh-3.2# apt-get install linux-image-2.6.30-bpo.2-amd64
 sh-3.2# exit

Maintenant... Modifions notre grub pour que ce nouveau système soit opérationnel :
 :!: Attention, je suis sous Grub2. Si vous êtes sous Grub &quot;legacy&quot; la commande est différente évidemment...

 deb501# grub-mkconfig 
 Generating grub.cfg ...

Voici la nouvelle entrée qui nous intéresse...

 menuentry &quot;Debian GNU/Linux (5.0.3) (on /dev/sda1)&quot; {
        insmod ext2
        set root=(hd0,1)
        search --no-floppy --fs-uuid --set 248403b5-cdcd-4430-bd96-67b106327373
        linux /boot/vmlinuz-2.6.30-bpo.2-amd64 root=/dev/sda1 rootfstype=ext4
        initrd /boot/initrd.img-2.6.30-bpo.2-amd64
 [...]
 done deb501#

Vous pouvez vérifier dans la console ou en tapant nano /boot/grub/grub.cfg (ou nano /boot/grub/menu.lst si vous êtes en grub legacy)
J'ai rajouté &quot;rootfstype=ext4&quot;. Sans ce petit morceau de code votre partition fromatée en ext4 ne démarera pas... (Invalid filesystem...)

=== Divers - mots de passe ===

Derniers &quot;fignolages&quot;... J'installe un navigateur et les drivers pour que mes disque nfs soient pleinement opérationnels. Et... zsh car c'est cool !  :wink: 

 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
 sh-3.2# apt-get install gparted ntfs-3g iceweasel
 sh-3.2# apt-get install zsh[/code]

Enfin, les mots de passe...
Debootstrap installe un système sans mots de passe... Si vous redémarrez maintenant vous vous loguerez en root dans votre nouveau système sans montrer patte blanche... Un peu génant non ?

 sh-3.2# nano /etc/passwd
 laurent:x:1000:1000:Laurent Voulzy:/home/laurent:/bin/zsh

Vous enlevez le x pour que cela ressemble à ça :

 laurent::1000:1000:Laurent Voulzy:/home/laurent:/bin/zsh

Ceci afin de pouvoir loguer vos utilisateurs &quot;normaux&quot;. Il faut maintenant créer les mots de passe.

 sh-3.2# /usr/bin/passwd
 
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 sh-3.2# su - laurent
 laurent@deb501 jeu oct 15 05:16:20
 ~/  /usr/bin/passwd
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 ~/ exit
 sh-3.2# exit
 deb501# reboot

Voilà vous disposez d'une toute fraîche installation, fonctionnelle !

== Taskel ==

Pour avoir un système un peu plus complet, en fonction de vos besoins, vous pouvez utiliser l'utilitaire tasksel.
La commande suivante détaille les &quot;tâches&quot; que tasksel peut réaliser pour vous... (Vous remarquerez que ce sont les mêmes choix que dans une installation &quot;classique&quot; qui sont proposés)

 sh-3.2# tasksel --list-tasks
 u desktop       Desktop environment
 u web-server    Web server
 u print-server  Print server
 u dns-server    DNS server
 u file-server   File server
 u mail-server   Mail server
 u database-server       SQL database
 u laptop        Laptop
 u manual        manual package selection

Chaque &quot;tâche&quot; installe un ensemble de paquets utiles pour certaines utilisations. &quot;u&quot; pour non installé. Une tâche installée commence par &quot;i&quot;
Il ne vous reste plus qu'a taper dans la console

 # tasksel --task-packages nom_tache

Il existe une autre tâche, qui n'est pas dans la liste ci-dessus[code]tasksel install standard[/code]Qui installe un ensemble de paquets &quot;standards&quot;. Je vous renvoie au [[http://www.debian-facile.org/wiki/manuel:tasksel Wiki de debian-facile]] pour plus de détails.

--[[Utilisateur:Lol|Lol]] 25 mars 2010 à 13:00 (UTC)

[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 source]

[[Catégorie:Installation]]</text>
      <sha1>fysnzskajhqsmdmci7hcmuyktbu7lp4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4219</id>
      <parentid>4089</parentid>
      <timestamp>2012-05-10T11:37:05Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>mise-à-jour des dépots suite au passage de Lenny en oldstable</comment>
      <text xml:space="preserve" bytes="17417">Installation d'une Lenny avec debootstrap et chroot

L'objectif est d'installer une Lenny (sur une nouvelle partition) à partir d'une SID, sans avoir besoin de redémarrer ma machine une seule fois...
Avantage : rester dans mon environnement de travail pendant toute l'installation...

Parti-pris : utilisation de nano comme éditeur

== Prérequis ==

Prérequis : Installer debootstrap (chroot se trouve dans le paquet coreutils normalement déjà installé dans votre Debian).
Installer un noyau qui supporte le ext4 si vous avez l'intention de choisir ce système de fichiers.

 deb501# apt-get install debootstrap

Formatage de la partition qui va recevoir la Lenny :
J'ai choisi de formater en ext4, vous pouvez choisir le système de fichiers de votre choix bien sûr.

 deb501# mkfs -V -t ext4 /dev/sda1

Création du répertoire qui va recevoir le système et montage de la partition fraîchement formatée dans ce nouveau répertoire.
J'ai choisi /var/chroot/lenny_amd64_sda1.
Un petit « ls » à la fin pour vérifier que la partition est bien montée.

 deb501# mkdir /var/chroot
 deb501# mkdir /var/chroot/lenny_amd64_sda1
 deb501# cd /var/chroot/lenny_amd64_sda1
 deb501# mount /dev/sda1 /var/chroot/lenny_amd64_sda1 
 deb501# cd /var/chroot/lenny_amd64_sda1 
 deb501# ls
 lost+found

== Installation avec debootstrap ==

Installation de la Lenny avec debootstrap (j'ai choisi une Lenny amd64, rien ne vous empêche de choisir une Etch i386 ou bien même une Sid...)
Vous remarquerez que j'ai ajouté &quot;192.168.0.1:9999/&quot; à mon adresse de dépôt...
Explication : j'utilise un dépôt local. Détails ici [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23065 sur le forum.debian-fr.org]
Si vous ne l'avez pas (apt-cacher-ng) modifiez comme suit : 

 http://archive.debian.org/debian-archive/debian/

Si vous avez une mauvaise connexion, mais disposez d'un CD d'installation, vous pouvez remplacer par file:/cdrom/debian/

 deb501# debootstrap --arch amd64 lenny /var/chroot/lenny_amd64_sda1 http://192.168.0.1:9999/archive.debian.org/debian-archive/debian/
 I: Retrieving Release                                                                                 
 I: Retrieving Packages                                                                                
 I: Validating Packages                                                                                
 I: Resolving dependencies of required packages...                                                     
 I: Resolving dependencies of base packages...                                                         
 I: Checking component main on http://192.168.0.1:9999/archive.debian.org/debian-archive/debian/...                        
 I: Retrieving adduser
 [...]
 I: Configuring aptitude...
 I: Configuring tasksel-data...
 I: Configuring tasksel...
 I: Base system installed successfully.

Si tout s'est bien passé, un &quot;ls&quot; vous retournera la toute nouvelle arborescence

 deb501# ls
 bin  boot  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  sbin  selinux  srv  sys tmp  usr  var

À ce niveau, votre Lenny est installée, mais elle n'est pas pleinement fonctionnelle ni « autonome ». Vous ne pourrez pas bouter dessus...

== Préparation du chroot ==

Il faut maintenant préparer le chroot. Trois répertoires sont importants pour que cela fonctionne convenablement : /tmp, /dev et /proc
Vous éditez votre fstab pour que ces répertoires soient montés (et liés - « bind ») automatiquement dans votre répertoire chroot.

 deb501# nano /etc/fstab

Ajoutez :

 ############################################ montages chroot &quot;liés&quot;
 # sid32 chroot
 /tmp    /var/chroot/lenny_amd64_sda1/tmp        none    bind    0       0
 /dev    /var/chroot/lenny_amd64_sda1/dev        none    bind    0       0
 /proc   /var/chroot/lenny_amd64_sda1/proc       none    bind    0       0

Ctrl+O (enregistrez) Ctrl+X (Quittez)

 deb501# mount -a (cette commande monte tout ce qui est dans votre fstab)

Pour « normaliser les comptes et groupes » de votre nouvelle Lenny (que les utilisateurs et groupes aient les mêmes « id » dans votre système &quot;hôte&quot; et dans votre chroot tapez les commandes suivantes :

 deb501# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/passwd &gt;&gt; /var/chroot/lenny_amd64_sda1/etc/passwd
 deb501# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/group &gt;&gt; /var/chroot/lenny_amd64_sda1/etc/group

Vous allez maintenant entrer dans votre environnement chroot (tadaa !)

 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
 sh-3.2#

== Finalisation de l'installation et réglages de la Lenny ==

Vous êtes maintenant dans votre nouvelle Lenny, mais ce n'est pas terminé, votre système est incomplet, impossible de booter dessus...

=== &quot;locales&quot; ===

Nous allons maintenant mettre en français (ou ce que vous voulez...), configurer la localisation, et surtout... régler l'heure. L'heure est très importante. Si vous démarrez sur ce nouveau système avec une mauvaise heure (dans le futur par rapport au système sur lequel vous êtes), le prochain démarrage vous laissera un goût amer, vous serez obligé de faire un fsck... Je me suis fait prendre, une heure de vérification de disque...
En effet, au montage des disques le système inscrit l'heure (au tout début du disque). Si cette heure est « dans le futur », au démarrage suivant (sur une autre installation), il ne voudra pas démarrer et exigera une vérification de disque...

 sh-3.2# apt-get update
 sh-3.2# apt-get install locales
 sh-3.2# dpkg-reconfigure locales
 sh-3.2# dpkg-reconfigure tzdata

 Current default timezone: 'Indian/Antananarivo'
 Local time is now:      Thu Oct 15 15:02:45 EAT 2009.
 Universal Time is now:  Thu Oct 15 12:02:45 UTC 2009.

 sh-3.2#
 sh-3.2# hwclock --systohc --utc

Il faut modifier le fichier /etc/default/rcS pour forcer le système à se mettre en heure locale...
Explications sur [http://forum.debian-fr.org/viewtopic.php?p=210286#p210286 le forum.debian-fr.org]

 sh-3.2# nano /etc/default/rcS

il faut modifier la ligne utc : UTC=no

 sh-3.2# apt-get install ntpdate
 sh-3.2# ntpdate ntp.metas.ch
 15 Oct 15:04:16 ntpdate[22869]: adjust time server 162.23.41.34 offset 0.014581 sec[/code]

=== Le sources.list ===

Nous allons maintenant compléter nos dépôts
La création de apt.conf est mon « bonus » j'utilise apt-cacher-ng comme je le disais plus haut...
Inutile pour vous si vous n'avez pas apt-cacher-ng installé)

 sh-3.2# nano /etc/apt/apt.conf
 Acquire::http { Proxy &quot;http://192.168.0.1:9999&quot;; };[/code]

J'ai complété avec quelques dépôts. Vous pourriez tout aussi bien ne pas le faire, mais c'est sympa d'avoir un peu de choix, non ? J'ai ajouté le dépôt « backport » pour avoir accès à un noyau récent , vous n'êtes, là encore, pas obligé de le faire.

 sh-3.2# nano /etc/apt/sources.list
 deb http://ftp.debian.org/debian lenny main
 ###### Debian Main Repos
 deb http://ftp.fr.debian.org/debian/ lenny contrib non-free
 ###### Debian Update Repos
 deb http://security.debian.org/ lenny/updates main contrib non-free
 deb http://ftp.fr.debian.org/debian/ lenny-proposed-updates main contrib non-free
 deb ftp://ftp.proxad.net/mirrors/volatile.debian.net/ lenny/volatile main contrib non-free
 #### Debian Backports - http://www.backports.org
 ## Run this command: gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C &amp;&amp; gpg --export 16BA136C | apt-key add -
 deb http://www.backports.org/debian/ lenny-backports main contrib non-free
 #### Debian Multimedia - http://www.debian-multimedia.org/
 ## Run this command: apt-get update &amp;&amp; apt-get install debian-multimedia-keyring &amp;&amp; apt-get update
 deb ftp://ftp.debian-multimedia.org lenny main

Ajoutons les clés des nouveaux dépots et mettons à jour :

 sh-3.2# gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C &amp;&amp; gpg --export 16BA136C | apt-key add -
 sh-3.2# apt-get update
 […] Vous obtiendrez évidemment cette erreur :
 W: GPG error: ftp://ftp.debian-multimedia.org lenny Release: Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907
 W: Vous pouvez lancer « apt-get update » pour corriger ces problèmes.
 sh-3.2# apt-get install debian-multimedia-keyring &amp;&amp; apt-get update
 [...]
 ATTENTION : les paquets suivants n'ont pas été authentifiés.
   debian-multimedia-keyring
 Faut-il installer ces paquets sans vérification (o/N) ? o
 sh-3.2#
 sh-3.2# apt-get upgrade

=== Clavier === 

Continuons... Le paquet MC n'est pas une obligation, moi je ne peux pas m'en passer...

 sh-3.2# apt-get install mc

Configurons maintenant le clavier

 sh-3.2# apt-get install console-data (azerty/french)

[…] Je ne sais pour quelle raison il nous met d'office le clavier mac-usb-f.. Dans le chroot il ne doit pas détecter autre chose...

 Looking for keymap to install:
 mac-usb-f

Rectifions :

 sh-3.2# dpkg-reconfigure -plow console-data (pour choisir le « bon » clavier)
(option choisir un codage clavier dans la liste complète) - pc / azerty / French / Same as X11 (latin9) / Standard
 Looking for keymap to install:
 fr-latin9 (cette fois-ci c'est bon)
 sh-3.2# exit

Nous sommes sortis du chroot, quelques fichiers à récupérer... Pour avoir un bon hostname, le réseau, le montage correct des disques...

=== hostname et fstab ===

 deb501# cp /etc/hosts /etc/hostname /etc/resolv.conf /var/chroot/lenny_amd64_sda1/etc
 deb501# cp /etc/network/interfaces /var/chroot/lenny_amd64_sda1/etc/network
 deb501# cp /etc/fstab /var/chroot/lenny_amd64_sda1/etc
 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh

+ Réglage du fsab

 sh-3.2# blkid (cette commande permat de récupérer le UUID de vos disques pour votre nouveau fstab... Je me suis fait prendre aussi, le formatage change l'UUID...)
 /dev/sdc1: UUID=&quot;8125f9ad-fa09-415e-8b2b-1562c5791d8b&quot; TYPE=&quot;ext3&quot;
 /dev/sdc2: UUID=&quot;0996b96e-3d86-4395-9cf5-cb744b543a52&quot; TYPE=&quot;ext3&quot;
 /dev/sdb1: UUID=&quot;345408AD54087440&quot; LABEL=&quot;Nouveau nom&quot; TYPE=&quot;ntfs&quot;
 /dev/sdd1: UUID=&quot;3CE6F2CCE6F28584&quot; LABEL=&quot;Nouveau nom&quot; TYPE=&quot;ntfs&quot;
 /dev/sde1: LABEL=&quot;Divers&quot; UUID=&quot;3525ee82-8d13-4caa-a27e-14de985f432d&quot; TYPE=&quot;ext3&quot;
 /dev/sda1: UUID=&quot;248403b5-cdcd-4430-bd96-67b106327373&quot; TYPE=&quot;ext4&quot;
 /dev/sda5: TYPE=&quot;swap&quot;
 ...etc
 sh-3.2# nano /etc/fstab (a rectifier en fonction de votre configuration)
 # /etc/fstab: static file system information.
 #
 # &lt;file system&gt; &lt;mount point&gt;   &lt;type&gt;  &lt;options&gt;       &lt;dump&gt;  &lt;pass&gt;
 proc    /proc   proc    defaults        0       0
 none    /proc/bus/usb   usbfs   devgid=119,devmode=664  0       0
 none    /dev/bus/usb    usbfs   devgid=1001,devmode=664 0       0
 /dev/sda5       none    swap    sw      0       0
 # Montage racine (/dev/sda1) ! Attention si votre partition racine est en ext4 !
 UUID=248403b5-cdcd-4430-bd96-67b106327373       /       ext4    errors=remount-ro       0       1
 #Entry for /dev/sda8 :
 UUID=709e9380-d39f-49db-b759-cac7a87717e6       /home   ext4    relatime        0       2
 ...etc
 # Montage DVD SATA
 /dev/scd0       /media/cdrom0   udf,iso9660     user,noauto     0       0[/code]

Création des répertoire de montage des disques de la nouvelle machine : (en fonction de votre configuration et de vos choix...)

 sh-3.2# mkdir /mnt/sda7 /mnt/Divers1 /mnt/Divers2 /mnt/XP /mnt/deb /mnt/home2 /mnt/zicmu[/code]

=== L'environnement graphique ===

Maintenant ? Un environnement graphique ! (J'ai choisi Xfce, vous faites comme vous voulez... [[Environnement graphique::Gnome]], [[Environnement graphique::Kde]], aucun...

 sh-3.2# apt-get install xfce4
 [...]
 0 mis à jour, 275 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 132Mo dans les archives.
 Après cette opération, 386Mo d'espace disque supplémentaires seront utilisés.
 Souhaitez-vous continuer [O/n] ?o
 [...]
 Traitement des actions différées (« triggers ») pour « initramfs-tools »...
 sh-3.2#

Modification du Xorg.conf pour avoir le bon clavier au démarrage et le bon driver de votre carte vidéo. J'ai choisi nv (j'ai une nvidia vous l'aurez deviné...). Si vous ne savez pas mettez « Driver  &quot;vesa »&quot; pour ne pas prendre de risque. Vous pourrez changer ça plus tard...

 sh-3.2# nano /etc/X11/xorg.conf
 
 Section &quot;InputDevice&quot;
         Identifier      &quot;Generic Keyboard&quot;
         Driver          &quot;kbd&quot;
         Option          &quot;XkbRules&quot;      &quot;xorg&quot;
         Option          &quot;XkbModel&quot;      &quot;pc105&quot; (à changer)
         Option          &quot;XkbLayout&quot;     &quot;fr&quot; (à changer)
         Option          &quot;XkbVariant&quot;    &quot;latin9&quot; (à ajouter)
 EndSection
 
 Section &quot;InputDevice&quot;
         Identifier      &quot;Configured Mouse&quot;
         Driver          &quot;mouse&quot;
 EndSection
 
 Section &quot;Device&quot;
         Driver  &quot;nv&quot; (ajouter et modifier en fonction de votre carte)
         Identifier &quot;Card0&quot; (ajouter)
 #        Identifier      &quot;Configured Video Device&quot;
 EndSection
 
 Section &quot;Monitor&quot;
         Identifier      &quot;Configured Monitor&quot;
 EndSection
 
 Section &quot;Screen&quot;
         Identifier      &quot;Default Screen&quot;
         Monitor         &quot;Configured Monitor&quot;
 EndSection

=== Le noyau et Grub2 ===

Installons un noyau... Ce serait bête d'oublier  :wink: 

 sh-3.2# apt-cache search linux-image (choisissez dans la liste qu'il vous propose...)
 [...]
 linux-headers-2.6.30-bpo.2-amd64 - Header files for Linux 2.6.30-bpo.2-amd64
 [...]

Ici il faut récupérer votre kernel-img.conf qui permette de convenablement lancer initramfs à l'installation du nouveau noyau dans le chroot.
Ce fichier n'existe pas dans le système créé par debootstrap.
La ligne intéressante : do_initrd = yes

 sh-3.2# exit
 deb501# cp /etc/kernel-img.conf /var/chroot/lenny_amd64_sda1/etc/kernel-img.conf
 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
 sh-3.2# apt-get install linux-image-2.6.30-bpo.2-amd64
 sh-3.2# exit

Maintenant... Modifions notre grub pour que ce nouveau système soit opérationnel :
 :!: Attention, je suis sous Grub2. Si vous êtes sous Grub &quot;legacy&quot; la commande est différente évidemment...

 deb501# grub-mkconfig 
 Generating grub.cfg ...

Voici la nouvelle entrée qui nous intéresse...

 menuentry &quot;Debian GNU/Linux (5.0.3) (on /dev/sda1)&quot; {
        insmod ext2
        set root=(hd0,1)
        search --no-floppy --fs-uuid --set 248403b5-cdcd-4430-bd96-67b106327373
        linux /boot/vmlinuz-2.6.30-bpo.2-amd64 root=/dev/sda1 rootfstype=ext4
        initrd /boot/initrd.img-2.6.30-bpo.2-amd64
 [...]
 done deb501#

Vous pouvez vérifier dans la console ou en tapant nano /boot/grub/grub.cfg (ou nano /boot/grub/menu.lst si vous êtes en grub legacy)
J'ai rajouté &quot;rootfstype=ext4&quot;. Sans ce petit morceau de code votre partition fromatée en ext4 ne démarera pas... (Invalid filesystem...)

=== Divers - mots de passe ===

Derniers &quot;fignolages&quot;... J'installe un navigateur et les drivers pour que mes disque nfs soient pleinement opérationnels. Et... zsh car c'est cool !  :wink: 

 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
 sh-3.2# apt-get install gparted ntfs-3g iceweasel
 sh-3.2# apt-get install zsh[/code]

Enfin, les mots de passe...
Debootstrap installe un système sans mots de passe... Si vous redémarrez maintenant vous vous loguerez en root dans votre nouveau système sans montrer patte blanche... Un peu génant non ?

 sh-3.2# nano /etc/passwd
 laurent:x:1000:1000:Laurent Voulzy:/home/laurent:/bin/zsh

Vous enlevez le x pour que cela ressemble à ça :

 laurent::1000:1000:Laurent Voulzy:/home/laurent:/bin/zsh

Ceci afin de pouvoir loguer vos utilisateurs &quot;normaux&quot;. Il faut maintenant créer les mots de passe.

 sh-3.2# /usr/bin/passwd
 
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 sh-3.2# su - laurent
 laurent@deb501 jeu oct 15 05:16:20
 ~/  /usr/bin/passwd
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 ~/ exit
 sh-3.2# exit
 deb501# reboot

Voilà vous disposez d'une toute fraîche installation, fonctionnelle !

== Taskel ==

Pour avoir un système un peu plus complet, en fonction de vos besoins, vous pouvez utiliser l'utilitaire tasksel.
La commande suivante détaille les &quot;tâches&quot; que tasksel peut réaliser pour vous... (Vous remarquerez que ce sont les mêmes choix que dans une installation &quot;classique&quot; qui sont proposés)

 sh-3.2# tasksel --list-tasks
 u desktop       Desktop environment
 u web-server    Web server
 u print-server  Print server
 u dns-server    DNS server
 u file-server   File server
 u mail-server   Mail server
 u database-server       SQL database
 u laptop        Laptop
 u manual        manual package selection

Chaque &quot;tâche&quot; installe un ensemble de paquets utiles pour certaines utilisations. &quot;u&quot; pour non installé. Une tâche installée commence par &quot;i&quot;
Il ne vous reste plus qu'a taper dans la console

 # tasksel --task-packages nom_tache

Il existe une autre tâche, qui n'est pas dans la liste ci-dessus[code]tasksel install standard[/code]Qui installe un ensemble de paquets &quot;standards&quot;. Je vous renvoie au [[http://www.debian-facile.org/wiki/manuel:tasksel Wiki de debian-facile]] pour plus de détails.

--[[Utilisateur:Lol|Lol]] 25 mars 2010 à 13:00 (UTC)

[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 source]

[[Catégorie:Installation]]</text>
      <sha1>ptsqtb8wkmapl2rzipxflya9nbxzqil</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4220</id>
      <parentid>4219</parentid>
      <timestamp>2012-05-10T11:41:56Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>Annulation des modifications 4219 de [[Special:Contributions/Vv222|Vv222]] ([[User talk:Vv222|discussion]]) : explications en page de discussion</comment>
      <text xml:space="preserve" bytes="17359">Installation d'une Lenny avec debootstrap et chroot

L'objectif est d'installer une Lenny (sur une nouvelle partition) à partir d'une SID, sans avoir besoin de redémarrer ma machine une seule fois...
Avantage : rester dans mon environnement de travail pendant toute l'installation...

Parti-pris : utilisation de nano comme éditeur

== Prérequis ==

Prérequis : Installer debootstrap (chroot se trouve dans le paquet coreutils normalement déjà installé dans votre Debian).
Installer un noyau qui supporte le ext4 si vous avez l'intention de choisir ce système de fichiers.

 deb501# apt-get install debootstrap

Formatage de la partition qui va recevoir la Lenny :
J'ai choisi de formater en ext4, vous pouvez choisir le système de fichiers de votre choix bien sûr.

 deb501# mkfs -V -t ext4 /dev/sda1

Création du répertoire qui va recevoir le système et montage de la partition fraîchement formatée dans ce nouveau répertoire.
J'ai choisi /var/chroot/lenny_amd64_sda1.
Un petit « ls » à la fin pour vérifier que la partition est bien montée.

 deb501# mkdir /var/chroot
 deb501# mkdir /var/chroot/lenny_amd64_sda1
 deb501# cd /var/chroot/lenny_amd64_sda1
 deb501# mount /dev/sda1 /var/chroot/lenny_amd64_sda1 
 deb501# cd /var/chroot/lenny_amd64_sda1 
 deb501# ls
 lost+found

== Installation avec debootstrap ==

Installation de la Lenny avec debootstrap (j'ai choisi une Lenny amd64, rien ne vous empêche de choisir une Etch i386 ou bien même une Sid...)
Vous remarquerez que j'ai ajouté &quot;192.168.0.1:9999/&quot; à mon adresse de dépôt...
Explication : j'utilise un dépôt local. Détails ici [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23065 sur le forum.debian-fr.org]
Si vous ne l'avez pas (apt-cacher-ng) modifiez comme suit : 

 http://ftp.debian.org/debian/

Si vous avez une mauvaise connexion, mais disposez d'un CD d'installation, vous pouvez remplacer par file:/cdrom/debian/

 deb501# debootstrap --arch amd64 lenny /var/chroot/lenny_amd64_sda1 http://192.168.0.1:9999/ftp.debian.org/debian/
 I: Retrieving Release                                                                                 
 I: Retrieving Packages                                                                                
 I: Validating Packages                                                                                
 I: Resolving dependencies of required packages...                                                     
 I: Resolving dependencies of base packages...                                                         
 I: Checking component main on http://192.168.0.1:9999/ftp.debian.org/debian...                        
 I: Retrieving adduser
 [...]
 I: Configuring aptitude...
 I: Configuring tasksel-data...
 I: Configuring tasksel...
 I: Base system installed successfully.

Si tout s'est bien passé, un &quot;ls&quot; vous retournera la toute nouvelle arborescence

 deb501# ls
 bin  boot  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  sbin  selinux  srv  sys tmp  usr  var

À ce niveau, votre Lenny est installée, mais elle n'est pas pleinement fonctionnelle ni « autonome ». Vous ne pourrez pas bouter dessus...

== Préparation du chroot ==

Il faut maintenant préparer le chroot. Trois répertoires sont importants pour que cela fonctionne convenablement : /tmp, /dev et /proc
Vous éditez votre fstab pour que ces répertoires soient montés (et liés - « bind ») automatiquement dans votre répertoire chroot.

 deb501# nano /etc/fstab

Ajoutez :

 ############################################ montages chroot &quot;liés&quot;
 # sid32 chroot
 /tmp    /var/chroot/lenny_amd64_sda1/tmp        none    bind    0       0
 /dev    /var/chroot/lenny_amd64_sda1/dev        none    bind    0       0
 /proc   /var/chroot/lenny_amd64_sda1/proc       none    bind    0       0

Ctrl+O (enregistrez) Ctrl+X (Quittez)

 deb501# mount -a (cette commande monte tout ce qui est dans votre fstab)

Pour « normaliser les comptes et groupes » de votre nouvelle Lenny (que les utilisateurs et groupes aient les mêmes « id » dans votre système &quot;hôte&quot; et dans votre chroot tapez les commandes suivantes :

 deb501# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/passwd &gt;&gt; /var/chroot/lenny_amd64_sda1/etc/passwd
 deb501# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/group &gt;&gt; /var/chroot/lenny_amd64_sda1/etc/group

Vous allez maintenant entrer dans votre environnement chroot (tadaa !)

 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
 sh-3.2#

== Finalisation de l'installation et réglages de la Lenny ==

Vous êtes maintenant dans votre nouvelle Lenny, mais ce n'est pas terminé, votre système est incomplet, impossible de booter dessus...

=== &quot;locales&quot; ===

Nous allons maintenant mettre en français (ou ce que vous voulez...), configurer la localisation, et surtout... régler l'heure. L'heure est très importante. Si vous démarrez sur ce nouveau système avec une mauvaise heure (dans le futur par rapport au système sur lequel vous êtes), le prochain démarrage vous laissera un goût amer, vous serez obligé de faire un fsck... Je me suis fait prendre, une heure de vérification de disque...
En effet, au montage des disques le système inscrit l'heure (au tout début du disque). Si cette heure est « dans le futur », au démarrage suivant (sur une autre installation), il ne voudra pas démarrer et exigera une vérification de disque...

 sh-3.2# apt-get update
 sh-3.2# apt-get install locales
 sh-3.2# dpkg-reconfigure locales
 sh-3.2# dpkg-reconfigure tzdata

 Current default timezone: 'Indian/Antananarivo'
 Local time is now:      Thu Oct 15 15:02:45 EAT 2009.
 Universal Time is now:  Thu Oct 15 12:02:45 UTC 2009.

 sh-3.2#
 sh-3.2# hwclock --systohc --utc

Il faut modifier le fichier /etc/default/rcS pour forcer le système à se mettre en heure locale...
Explications sur [http://forum.debian-fr.org/viewtopic.php?p=210286#p210286 le forum.debian-fr.org]

 sh-3.2# nano /etc/default/rcS

il faut modifier la ligne utc : UTC=no

 sh-3.2# apt-get install ntpdate
 sh-3.2# ntpdate ntp.metas.ch
 15 Oct 15:04:16 ntpdate[22869]: adjust time server 162.23.41.34 offset 0.014581 sec[/code]

=== Le sources.list ===

Nous allons maintenant compléter nos dépôts
La création de apt.conf est mon « bonus » j'utilise apt-cacher-ng comme je le disais plus haut...
Inutile pour vous si vous n'avez pas apt-cacher-ng installé)

 sh-3.2# nano /etc/apt/apt.conf
 Acquire::http { Proxy &quot;http://192.168.0.1:9999&quot;; };[/code]

J'ai complété avec quelques dépôts. Vous pourriez tout aussi bien ne pas le faire, mais c'est sympa d'avoir un peu de choix, non ? J'ai ajouté le dépôt « backport » pour avoir accès à un noyau récent , vous n'êtes, là encore, pas obligé de le faire.

 sh-3.2# nano /etc/apt/sources.list
 deb http://ftp.debian.org/debian lenny main
 ###### Debian Main Repos
 deb http://ftp.fr.debian.org/debian/ lenny contrib non-free
 ###### Debian Update Repos
 deb http://security.debian.org/ lenny/updates main contrib non-free
 deb http://ftp.fr.debian.org/debian/ lenny-proposed-updates main contrib non-free
 deb ftp://ftp.proxad.net/mirrors/volatile.debian.net/ lenny/volatile main contrib non-free
 #### Debian Backports - http://www.backports.org
 ## Run this command: gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C &amp;&amp; gpg --export 16BA136C | apt-key add -
 deb http://www.backports.org/debian/ lenny-backports main contrib non-free
 #### Debian Multimedia - http://www.debian-multimedia.org/
 ## Run this command: apt-get update &amp;&amp; apt-get install debian-multimedia-keyring &amp;&amp; apt-get update
 deb ftp://ftp.debian-multimedia.org lenny main

Ajoutons les clés des nouveaux dépots et mettons à jour :

 sh-3.2# gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C &amp;&amp; gpg --export 16BA136C | apt-key add -
 sh-3.2# apt-get update
 […] Vous obtiendrez évidemment cette erreur :
 W: GPG error: ftp://ftp.debian-multimedia.org lenny Release: Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907
 W: Vous pouvez lancer « apt-get update » pour corriger ces problèmes.
 sh-3.2# apt-get install debian-multimedia-keyring &amp;&amp; apt-get update
 [...]
 ATTENTION : les paquets suivants n'ont pas été authentifiés.
   debian-multimedia-keyring
 Faut-il installer ces paquets sans vérification (o/N) ? o
 sh-3.2#
 sh-3.2# apt-get upgrade

=== Clavier === 

Continuons... Le paquet MC n'est pas une obligation, moi je ne peux pas m'en passer...

 sh-3.2# apt-get install mc

Configurons maintenant le clavier

 sh-3.2# apt-get install console-data (azerty/french)

[…] Je ne sais pour quelle raison il nous met d'office le clavier mac-usb-f.. Dans le chroot il ne doit pas détecter autre chose...

 Looking for keymap to install:
 mac-usb-f

Rectifions :

 sh-3.2# dpkg-reconfigure -plow console-data (pour choisir le « bon » clavier)
(option choisir un codage clavier dans la liste complète) - pc / azerty / French / Same as X11 (latin9) / Standard
 Looking for keymap to install:
 fr-latin9 (cette fois-ci c'est bon)
 sh-3.2# exit

Nous sommes sortis du chroot, quelques fichiers à récupérer... Pour avoir un bon hostname, le réseau, le montage correct des disques...

=== hostname et fstab ===

 deb501# cp /etc/hosts /etc/hostname /etc/resolv.conf /var/chroot/lenny_amd64_sda1/etc
 deb501# cp /etc/network/interfaces /var/chroot/lenny_amd64_sda1/etc/network
 deb501# cp /etc/fstab /var/chroot/lenny_amd64_sda1/etc
 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh

+ Réglage du fsab

 sh-3.2# blkid (cette commande permat de récupérer le UUID de vos disques pour votre nouveau fstab... Je me suis fait prendre aussi, le formatage change l'UUID...)
 /dev/sdc1: UUID=&quot;8125f9ad-fa09-415e-8b2b-1562c5791d8b&quot; TYPE=&quot;ext3&quot;
 /dev/sdc2: UUID=&quot;0996b96e-3d86-4395-9cf5-cb744b543a52&quot; TYPE=&quot;ext3&quot;
 /dev/sdb1: UUID=&quot;345408AD54087440&quot; LABEL=&quot;Nouveau nom&quot; TYPE=&quot;ntfs&quot;
 /dev/sdd1: UUID=&quot;3CE6F2CCE6F28584&quot; LABEL=&quot;Nouveau nom&quot; TYPE=&quot;ntfs&quot;
 /dev/sde1: LABEL=&quot;Divers&quot; UUID=&quot;3525ee82-8d13-4caa-a27e-14de985f432d&quot; TYPE=&quot;ext3&quot;
 /dev/sda1: UUID=&quot;248403b5-cdcd-4430-bd96-67b106327373&quot; TYPE=&quot;ext4&quot;
 /dev/sda5: TYPE=&quot;swap&quot;
 ...etc
 sh-3.2# nano /etc/fstab (a rectifier en fonction de votre configuration)
 # /etc/fstab: static file system information.
 #
 # &lt;file system&gt; &lt;mount point&gt;   &lt;type&gt;  &lt;options&gt;       &lt;dump&gt;  &lt;pass&gt;
 proc    /proc   proc    defaults        0       0
 none    /proc/bus/usb   usbfs   devgid=119,devmode=664  0       0
 none    /dev/bus/usb    usbfs   devgid=1001,devmode=664 0       0
 /dev/sda5       none    swap    sw      0       0
 # Montage racine (/dev/sda1) ! Attention si votre partition racine est en ext4 !
 UUID=248403b5-cdcd-4430-bd96-67b106327373       /       ext4    errors=remount-ro       0       1
 #Entry for /dev/sda8 :
 UUID=709e9380-d39f-49db-b759-cac7a87717e6       /home   ext4    relatime        0       2
 ...etc
 # Montage DVD SATA
 /dev/scd0       /media/cdrom0   udf,iso9660     user,noauto     0       0[/code]

Création des répertoire de montage des disques de la nouvelle machine : (en fonction de votre configuration et de vos choix...)

 sh-3.2# mkdir /mnt/sda7 /mnt/Divers1 /mnt/Divers2 /mnt/XP /mnt/deb /mnt/home2 /mnt/zicmu[/code]

=== L'environnement graphique ===

Maintenant ? Un environnement graphique ! (J'ai choisi Xfce, vous faites comme vous voulez... [[Environnement graphique::Gnome]], [[Environnement graphique::Kde]], aucun...

 sh-3.2# apt-get install xfce4
 [...]
 0 mis à jour, 275 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 132Mo dans les archives.
 Après cette opération, 386Mo d'espace disque supplémentaires seront utilisés.
 Souhaitez-vous continuer [O/n] ?o
 [...]
 Traitement des actions différées (« triggers ») pour « initramfs-tools »...
 sh-3.2#

Modification du Xorg.conf pour avoir le bon clavier au démarrage et le bon driver de votre carte vidéo. J'ai choisi nv (j'ai une nvidia vous l'aurez deviné...). Si vous ne savez pas mettez « Driver  &quot;vesa »&quot; pour ne pas prendre de risque. Vous pourrez changer ça plus tard...

 sh-3.2# nano /etc/X11/xorg.conf
 
 Section &quot;InputDevice&quot;
         Identifier      &quot;Generic Keyboard&quot;
         Driver          &quot;kbd&quot;
         Option          &quot;XkbRules&quot;      &quot;xorg&quot;
         Option          &quot;XkbModel&quot;      &quot;pc105&quot; (à changer)
         Option          &quot;XkbLayout&quot;     &quot;fr&quot; (à changer)
         Option          &quot;XkbVariant&quot;    &quot;latin9&quot; (à ajouter)
 EndSection
 
 Section &quot;InputDevice&quot;
         Identifier      &quot;Configured Mouse&quot;
         Driver          &quot;mouse&quot;
 EndSection
 
 Section &quot;Device&quot;
         Driver  &quot;nv&quot; (ajouter et modifier en fonction de votre carte)
         Identifier &quot;Card0&quot; (ajouter)
 #        Identifier      &quot;Configured Video Device&quot;
 EndSection
 
 Section &quot;Monitor&quot;
         Identifier      &quot;Configured Monitor&quot;
 EndSection
 
 Section &quot;Screen&quot;
         Identifier      &quot;Default Screen&quot;
         Monitor         &quot;Configured Monitor&quot;
 EndSection

=== Le noyau et Grub2 ===

Installons un noyau... Ce serait bête d'oublier  :wink: 

 sh-3.2# apt-cache search linux-image (choisissez dans la liste qu'il vous propose...)
 [...]
 linux-headers-2.6.30-bpo.2-amd64 - Header files for Linux 2.6.30-bpo.2-amd64
 [...]

Ici il faut récupérer votre kernel-img.conf qui permette de convenablement lancer initramfs à l'installation du nouveau noyau dans le chroot.
Ce fichier n'existe pas dans le système créé par debootstrap.
La ligne intéressante : do_initrd = yes

 sh-3.2# exit
 deb501# cp /etc/kernel-img.conf /var/chroot/lenny_amd64_sda1/etc/kernel-img.conf
 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
 sh-3.2# apt-get install linux-image-2.6.30-bpo.2-amd64
 sh-3.2# exit

Maintenant... Modifions notre grub pour que ce nouveau système soit opérationnel :
 :!: Attention, je suis sous Grub2. Si vous êtes sous Grub &quot;legacy&quot; la commande est différente évidemment...

 deb501# grub-mkconfig 
 Generating grub.cfg ...

Voici la nouvelle entrée qui nous intéresse...

 menuentry &quot;Debian GNU/Linux (5.0.3) (on /dev/sda1)&quot; {
        insmod ext2
        set root=(hd0,1)
        search --no-floppy --fs-uuid --set 248403b5-cdcd-4430-bd96-67b106327373
        linux /boot/vmlinuz-2.6.30-bpo.2-amd64 root=/dev/sda1 rootfstype=ext4
        initrd /boot/initrd.img-2.6.30-bpo.2-amd64
 [...]
 done deb501#

Vous pouvez vérifier dans la console ou en tapant nano /boot/grub/grub.cfg (ou nano /boot/grub/menu.lst si vous êtes en grub legacy)
J'ai rajouté &quot;rootfstype=ext4&quot;. Sans ce petit morceau de code votre partition fromatée en ext4 ne démarera pas... (Invalid filesystem...)

=== Divers - mots de passe ===

Derniers &quot;fignolages&quot;... J'installe un navigateur et les drivers pour que mes disque nfs soient pleinement opérationnels. Et... zsh car c'est cool !  :wink: 

 deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
 sh-3.2# apt-get install gparted ntfs-3g iceweasel
 sh-3.2# apt-get install zsh[/code]

Enfin, les mots de passe...
Debootstrap installe un système sans mots de passe... Si vous redémarrez maintenant vous vous loguerez en root dans votre nouveau système sans montrer patte blanche... Un peu génant non ?

 sh-3.2# nano /etc/passwd
 laurent:x:1000:1000:Laurent Voulzy:/home/laurent:/bin/zsh

Vous enlevez le x pour que cela ressemble à ça :

 laurent::1000:1000:Laurent Voulzy:/home/laurent:/bin/zsh

Ceci afin de pouvoir loguer vos utilisateurs &quot;normaux&quot;. Il faut maintenant créer les mots de passe.

 sh-3.2# /usr/bin/passwd
 
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 sh-3.2# su - laurent
 laurent@deb501 jeu oct 15 05:16:20
 ~/  /usr/bin/passwd
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 ~/ exit
 sh-3.2# exit
 deb501# reboot

Voilà vous disposez d'une toute fraîche installation, fonctionnelle !

== Taskel ==

Pour avoir un système un peu plus complet, en fonction de vos besoins, vous pouvez utiliser l'utilitaire tasksel.
La commande suivante détaille les &quot;tâches&quot; que tasksel peut réaliser pour vous... (Vous remarquerez que ce sont les mêmes choix que dans une installation &quot;classique&quot; qui sont proposés)

 sh-3.2# tasksel --list-tasks
 u desktop       Desktop environment
 u web-server    Web server
 u print-server  Print server
 u dns-server    DNS server
 u file-server   File server
 u mail-server   Mail server
 u database-server       SQL database
 u laptop        Laptop
 u manual        manual package selection

Chaque &quot;tâche&quot; installe un ensemble de paquets utiles pour certaines utilisations. &quot;u&quot; pour non installé. Une tâche installée commence par &quot;i&quot;
Il ne vous reste plus qu'a taper dans la console

 # tasksel --task-packages nom_tache

Il existe une autre tâche, qui n'est pas dans la liste ci-dessus[code]tasksel install standard[/code]Qui installe un ensemble de paquets &quot;standards&quot;. Je vous renvoie au [[http://www.debian-facile.org/wiki/manuel:tasksel Wiki de debian-facile]] pour plus de détails.

--[[Utilisateur:Lol|Lol]] 25 mars 2010 à 13:00 (UTC)

[http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 source]

[[Catégorie:Installation]]</text>
      <sha1>fysnzskajhqsmdmci7hcmuyktbu7lp4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Installation phpBB-3.0.11</title>
    <ns>0</ns>
    <id>1052</id>
    <revision>
      <id>4436</id>
      <timestamp>2012-09-11T18:38:26Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <comment>/*étape initial 00 */</comment>
      <text xml:space="preserve" bytes="26">En cours de rédaction ...</text>
      <sha1>ow0lh1r1fq3ce4qopo063m8cr6s4mle</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4464</id>
      <parentid>4436</parentid>
      <timestamp>2012-09-12T10:22:53Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <comment>/*étape 01 */</comment>
      <text xml:space="preserve" bytes="2082">&lt;span style=&quot;color:#FF0000;&quot;&gt;''' /!\ En cours de rédaction ... /!\'''&lt;/span&gt;

=Installation d'un forum phpBB=

==Prérequis==

* {{fr}} [http://forums.phpbb-fr.com/telechargement-maj-phpbb3/ Téléchargements et mises à jour]
* Ce tutoriel est destiné aux utilisateurs Linux, plus particulièrement Debian Squeeze dans le cas présent.

==Notes==

* Un bon nombre de png serviront de support d'installation.
** Pour votre confort, ces images on étaient réduites (à 300 pixels).
** Deux clics à la suite, sur l'une d'elles, l'affichera en mode pleine écran.


==Création de la base de données Mysql==

* Via la console.

 ~ # [http://www.debian-fr.org/mysql-ne-plus-taper-son-mot-de-pass-x-fois-t34738.html#p351926 mysql]
 Reading table information for completion of table and column names
 You can turn off this feature to get a quicker startup with -A
 
 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 10576
 Server version: 5.1.63-0+squeeze1-log (Debian)
 
 Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
 
 Oracle is a registered trademark of Oracle Corporation and/or its
 affiliates. Other names may be trademarks of their respective
 owners.
 
 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
 mysql&gt;

* Nommer cette base à votre guise, sous conditions:
** ne pas utiliser de caractère spéciaux.
** ne pas utiliser de caractère accentué
** ne pas utiliser de tiret '''-''' ni de point '''.'''
 mysql&gt; create database '''phpBB_3_0_11''';
 Query OK, 1 row affected (0.00 sec)
 
 mysql&gt;

[[Fichier:Créationn bdd 26 bis.png|300px]]

* Suppression d'une base, suite au(x) caractère(s)
** &lt;span style=&quot;color:#FF0000;&quot;&gt;''' /!\ Prenez garde quant à la sélection de cette dernière!!! La suppression sera irréversible /!\'''&lt;/span&gt;

 mysql&gt; DROP DATABASE phpBB_;                                                                                               
 Query OK, 0 rows affected (0.00 sec) 
 
 mysql&gt; 

 















&lt;br&gt;


[[Catégorie:Tutoriel]]

&lt;br&gt;</text>
      <sha1>purjf69vt8t1seswxklunj49zmvllwl</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4465</id>
      <parentid>4464</parentid>
      <timestamp>2012-09-12T10:26:08Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <minor/>
      <comment>/* catégorie */</comment>
      <text xml:space="preserve" bytes="2091">&lt;span style=&quot;color:#FF0000;&quot;&gt;''' /!\ En cours de rédaction ... /!\'''&lt;/span&gt;

=Installation d'un forum phpBB=

==Prérequis==

* {{fr}} [http://forums.phpbb-fr.com/telechargement-maj-phpbb3/ Téléchargements et mises à jour]
* Ce tutoriel est destiné aux utilisateurs Linux, plus particulièrement Debian Squeeze dans le cas présent.

==Notes==

* Un bon nombre de png serviront de support d'installation.
** Pour votre confort, ces images on étaient réduites (à 300 pixels).
** Deux clics à la suite, sur l'une d'elles, l'affichera en mode pleine écran.


==Création de la base de données Mysql==

* Via la console.

 ~ # [http://www.debian-fr.org/mysql-ne-plus-taper-son-mot-de-pass-x-fois-t34738.html#p351926 mysql]
 Reading table information for completion of table and column names
 You can turn off this feature to get a quicker startup with -A
 
 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 10576
 Server version: 5.1.63-0+squeeze1-log (Debian)
 
 Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
 
 Oracle is a registered trademark of Oracle Corporation and/or its
 affiliates. Other names may be trademarks of their respective
 owners.
 
 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
 mysql&gt;

* Nommer cette base à votre guise, sous conditions:
** ne pas utiliser de caractère spéciaux.
** ne pas utiliser de caractère accentué
** ne pas utiliser de tiret '''-''' ni de point '''.'''
 mysql&gt; create database '''phpBB_3_0_11''';
 Query OK, 1 row affected (0.00 sec)
 
 mysql&gt;

[[Fichier:Créationn bdd 26 bis.png|300px]]

* Suppression d'une base, suite au(x) caractère(s)
** &lt;span style=&quot;color:#FF0000;&quot;&gt;''' /!\ Prenez garde quant à la sélection de cette dernière!!! La suppression sera irréversible /!\'''&lt;/span&gt;

 mysql&gt; DROP DATABASE phpBB_;                                                                                               
 Query OK, 0 rows affected (0.00 sec) 
 
 mysql&gt; 

 















&lt;br&gt;



[[Catégorie:Serveurs:Tutoriel]]
&lt;br&gt;</text>
      <sha1>eoiylfeg19h2swcxz67vby1q0skrr49</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4466</id>
      <parentid>4465</parentid>
      <timestamp>2012-09-12T10:58:14Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <comment>/* Téléchargement */</comment>
      <text xml:space="preserve" bytes="2972">&lt;span style=&quot;color:#FF0000;&quot;&gt;''' /!\ En cours de rédaction ... /!\'''&lt;/span&gt;

=Installation d'un forum phpBB=

==Prérequis==

* {{fr}} [http://forums.phpbb-fr.com/telechargement-maj-phpbb3/ Téléchargements et mises à jour]
* Ce tutoriel est destiné aux utilisateurs Linux, plus particulièrement Debian Squeeze dans le cas présent.

==Notes==

* Un bon nombre de png serviront de support d'installation.
** Pour votre confort, ces images on étaient réduites (à 300 pixels).
** Deux clics à la suite, sur l'une d'elles, l'affichera en mode pleine écran.


==Création de la base de données Mysql==

* Via la console.

 ~ # [http://www.debian-fr.org/mysql-ne-plus-taper-son-mot-de-pass-x-fois-t34738.html#p351926 mysql]
 Reading table information for completion of table and column names
 You can turn off this feature to get a quicker startup with -A
 
 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 10576
 Server version: 5.1.63-0+squeeze1-log (Debian)
 
 Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
 
 Oracle is a registered trademark of Oracle Corporation and/or its
 affiliates. Other names may be trademarks of their respective
 owners.
 
 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
 mysql&gt;

* Nommer cette base à votre guise, sous conditions:
** ne pas utiliser de caractère spéciaux.
** ne pas utiliser de caractère accentué
** ne pas utiliser de tiret '''-''' ni de point '''.'''
 mysql&gt; create database '''phpBB_3_0_11''';
 Query OK, 1 row affected (0.00 sec)
 
 mysql&gt;

[[Fichier:Créationn bdd 26 bis.png|300px]]

* Suppression d'une base, suite au(x) caractère(s)
** &lt;span style=&quot;color:#FF0000;&quot;&gt;''' /!\ Prenez garde quant à la sélection de cette dernière!!! La suppression sera irréversible /!\'''&lt;/span&gt;

 mysql&gt;
 mysql&gt; DROP DATABASE phpBB_;                                                                                               
 Query OK, 0 rows affected (0.00 sec) 
 
 mysql&gt; 

== Création de l'utilisateur de cet base==

 mysql&gt; grant all privileges on '''phpBB_3_0_11'''.* to &quot;'''user_phpBB'''&quot;@&quot;localhost&quot; identified by  ''''votre_mot_de_pass_en_bêton'''';
 Query OK, 0 rows affected (0.00 sec)
 mysql&gt;

* Recharger les privilèges et quitter proprement.

 mysql&gt;
 mysql&gt; flush privileges;
 Query OK, 0 rows affected (0.00 sec)
 mysql&gt;

 mysql&gt; quit;
 Bye
  ~ #

* Redémarrer mysql.

  ~ # /etc/init.d/mysql restart
 Stopping MySQL database server: mysqld.
 Starting MySQL database server: mysqld.
 Checking for corrupt, not cleanly closed and upgrade needing tables..
  ~ #

== Téléchargement==

 ~ # cd /opt/sources/telechargements
  /opt/sources/telechargements #

  /opt/sources/telechargements # wget -c http://garr.dl.sourceforge.net/project/phpbb-fr/phpBB3/phpBB%203.0.11%20Package/phpBB- 3.0.11_FR.zip
 ...
 /opt/sources/telechargements #













&lt;br&gt;



[[Catégorie:Serveurs:Tutoriel]]
&lt;br&gt;</text>
      <sha1>kq3fb81jv3fpbzvtjyg9tq4n2whvwt8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4467</id>
      <parentid>4466</parentid>
      <timestamp>2012-09-12T12:00:38Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <comment>/* Interdire l'accès public*/</comment>
      <text xml:space="preserve" bytes="5072">&lt;span style=&quot;color:#FF0000;&quot;&gt;''' /!\ En cours de rédaction ... /!\'''&lt;/span&gt;

&lt;span style=&quot;color:#FF0000;&quot;&gt; &lt;/span&gt;


=Installation d'un forum phpBB=

==Prérequis==

* {{fr}} [http://forums.phpbb-fr.com/telechargement-maj-phpbb3/ Téléchargements et mises à jour]
* Ce tutoriel est destiné aux utilisateurs Linux, plus particulièrement Debian Squeeze dans le cas présent.

==Notes==

* Un bon nombre de png serviront de support d'installation.
** Pour votre confort, ces images on étaient réduites (à 300 pixels).
** Deux clics à la suite, sur l'une d'elles, l'affichera en mode pleine écran.


=Création de la base de données Mysql=

* Via la console.

 ~ # [http://www.debian-fr.org/mysql-ne-plus-taper-son-mot-de-pass-x-fois-t34738.html#p351926 mysql]
 Reading table information for completion of table and column names
 You can turn off this feature to get a quicker startup with -A
 
 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 10576
 Server version: 5.1.63-0+squeeze1-log (Debian)
 
 Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
 
 Oracle is a registered trademark of Oracle Corporation and/or its
 affiliates. Other names may be trademarks of their respective
 owners.
 
 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
 mysql&gt;

* Nommer cette base à votre guise, sous conditions:
** ne pas utiliser de caractère spéciaux.
** ne pas utiliser de caractère accentué
** ne pas utiliser de tiret '''-''' ni de point '''.'''
 mysql&gt; create database '''phpBB_3_0_11''';
 Query OK, 1 row affected (0.00 sec)
 
 mysql&gt;

[[Fichier:Créationn bdd 26 bis.png|300px]]

* Suppression d'une base, suite au(x) caractère(s)
** &lt;span style=&quot;color:#FF0000;&quot;&gt;''' /!\ Prenez garde quant à la sélection de cette dernière!!! La suppression sera irréversible /!\'''&lt;/span&gt;

 mysql&gt;
 mysql&gt; DROP DATABASE phpBB_;                                                                                               
 Query OK, 0 rows affected (0.00 sec) 
 
 mysql&gt; 

== Création de l'utilisateur de cet base==

 mysql&gt; grant all privileges on '''phpBB_3_0_11'''.* to &quot;'''user_phpBB'''&quot;@&quot;localhost&quot; identified by  ''''votre_mot_de_pass_en_bêton'''';
 Query OK, 0 rows affected (0.00 sec)
 mysql&gt;

* Recharger les privilèges et quitter proprement.

 mysql&gt;
 mysql&gt; flush privileges;
 Query OK, 0 rows affected (0.00 sec)
 mysql&gt;

 mysql&gt; quit;
 Bye
  ~ #

* Redémarrer mysql.

  ~ # /etc/init.d/mysql restart
 Stopping MySQL database server: mysqld.
 Starting MySQL database server: mysqld.
 Checking for corrupt, not cleanly closed and upgrade needing tables..
  ~ #

=Téléchargement et décompression=

 ~ # cd /opt/sources/telechargements
  /opt/sources/telechargements #

  /opt/sources/telechargements # wget -c http://garr.dl.sourceforge.net/project/phpbb-fr/phpBB3/phpBB%203.0.11%20Package/phpBB- 3.0.11_FR.zip
 ...
 /opt/sources/telechargements #


* l'option -d à pour effet d'extraire le fichier zip dans le répertoire /var/www/ et ne supprime pas l'archive zip. Si le répertoire de destination n'existe pas il est crée.

 /opt/sources/telechargements # unzip phpBB-3.0.11_FR.zip -d /var/www


=Création du Vhost apache2=

* Le forum sera accessible via http://&lt;span style=&quot;color:#FF0000;&quot;&gt;votre_domaine.com&lt;/span&gt;

 # touch /etc/apache2/sites-available/phpBB3 

 # nano /etc/apache2/sites-available/phpBB3

 &lt;VirtualHost *:80&gt;
         ServerName phpBB3  
         ServerAlias phpBB3     
         RewriteCond %{HTTP_HOST} ^&lt;span style=&quot;color:#FF0000;&quot;&gt;votre_domaine.com&lt;/span&gt;$
         RewriteRule ^(.*)   http://www.&lt;span style=&quot;color:#FF0000;&quot;&gt;votre_domaine.com&lt;/span&gt;/$1  [QSA,L,R=301]         
         ServerAdmin webmaster@&lt;span style=&quot;color:#FF0000;&quot;&gt;votre_domaine.com&lt;/span&gt;                          
         DocumentRoot /var/www/phpBB3/
                               
         &lt;Directory /&gt; 
                 Options FollowSymLinks
                 AllowOverride all
         &lt;/Directory&gt; 
    
         &lt;Directory /var/www/phpBB3/&gt;
                 Options Indexes +FollowSymLinks MultiViews 
                 AllowOverride all
                 Order allow,deny
 #                allow from all
                 allow from 192.168.1.13, 2.x.x.x
         &lt;/Directory&gt; 
 
         include /etc/apache2/www.d/*.conf
         ErrorLog ${APACHE_LOG_DIR}/www-error.log
         # Possible values include: debug, info, notice, warn, error, crit,                 
         # alert, emerg.  
         LogLevel error
         CustomLog ${APACHE_LOG_DIR}/www-access.log combined               
 &lt;/VirtualHost&gt;

===Interdire l'accès public provisoirement===

Afin de pouvoir procéder aux divers configurations/créations/modif etc ... une fois l'installation terminer

* On interdit et autorise uniquement:
** allow from all la ligne est commenté (accès public autoriser)
** allow from 192.168.1.13, 2.x.x.x on autorise uniquement l'ip local et public (accès uniquement pour ...)











&lt;br&gt;



[[Catégorie:Serveurs:Tutoriel]]
&lt;br&gt;</text>
      <sha1>acz0difp4gct2z3wg72qnetqxszep22</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4468</id>
      <parentid>4467</parentid>
      <timestamp>2012-09-12T13:12:51Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <comment>/* Bienvenue dans phpBB */</comment>
      <text xml:space="preserve" bytes="8062">&lt;span style=&quot;color:#FF0000;&quot;&gt;''' /!\ En cours de rédaction ... /!\'''&lt;/span&gt;

&lt;span style=&quot;color:#FF0000;&quot;&gt; &lt;/span&gt;


=Installation d'un forum phpBB=

==Prérequis==

* {{fr}} [http://forums.phpbb-fr.com/telechargement-maj-phpbb3/ Téléchargements et mises à jour]
* Ce tutoriel est destiné aux utilisateurs Linux, plus particulièrement Debian Squeeze dans le cas présent.

==Notes==

* Un bon nombre de png serviront de support d'installation.
** Pour votre confort, ces images on étaient réduites (à 500 pixels max.).
** Deux clics à la suite, sur l'une d'elles, l'affichera en mode pleine écran.


=Création de la base de données Mysql=

* Via la console.

 ~ # [http://www.debian-fr.org/mysql-ne-plus-taper-son-mot-de-pass-x-fois-t34738.html#p351926 mysql]
 Reading table information for completion of table and column names
 You can turn off this feature to get a quicker startup with -A
 
 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 10576
 Server version: 5.1.63-0+squeeze1-log (Debian)
 
 Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
 
 Oracle is a registered trademark of Oracle Corporation and/or its
 affiliates. Other names may be trademarks of their respective
 owners.
 
 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
 mysql&gt;

* Nommer cette base à votre guise, sous conditions:
** ne pas utiliser de caractère spéciaux.
** ne pas utiliser de caractère accentué
** ne pas utiliser de tiret '''-''' ni de point '''.'''
 mysql&gt; create database '''phpBB_3_0_11''';
 Query OK, 1 row affected (0.00 sec)
 
 mysql&gt;

[[Fichier:Créationn bdd 26 bis.png|300px]]

* Suppression d'une base, suite au(x) caractère(s)
** &lt;span style=&quot;color:#FF0000;&quot;&gt;''' /!\ Prenez garde quant à la sélection de cette dernière!!! La suppression sera irréversible /!\'''&lt;/span&gt;

 mysql&gt;
 mysql&gt; DROP DATABASE phpBB_;                                                                                               
 Query OK, 0 rows affected (0.00 sec) 
 
 mysql&gt; 

== Création de l'utilisateur de cet base==

 mysql&gt; grant all privileges on '''phpBB_3_0_11'''.* to &quot;'''user_phpBB'''&quot;@&quot;localhost&quot; identified by  ''''votre_mot_de_pass_en_bêton'''';
 Query OK, 0 rows affected (0.00 sec)
 mysql&gt;

* Recharger les privilèges et quitter proprement.

 mysql&gt;
 mysql&gt; flush privileges;
 Query OK, 0 rows affected (0.00 sec)
 mysql&gt;

 mysql&gt; quit;
 Bye
  ~ #

* Redémarrer mysql.

  ~ # /etc/init.d/mysql restart
 Stopping MySQL database server: mysqld.
 Starting MySQL database server: mysqld.
 Checking for corrupt, not cleanly closed and upgrade needing tables..
  ~ #

=Téléchargement et décompression=

 ~ # cd /opt/sources/telechargements
  /opt/sources/telechargements #

  /opt/sources/telechargements # wget -c http://garr.dl.sourceforge.net/project/phpbb-fr/phpBB3/phpBB%203.0.11%20Package/phpBB- 3.0.11_FR.zip
 ...
 /opt/sources/telechargements #


* l'option -d à pour effet d'extraire le fichier zip dans le répertoire /var/www/ et ne supprime pas l'archive zip. Si le répertoire de destination n'existe pas il est crée.

 /opt/sources/telechargements # unzip phpBB-3.0.11_FR.zip -d /var/www


=Création du Vhost apache2=

* Le forum sera accessible via http://&lt;span style=&quot;color:#FF0000;&quot;&gt;votre_domaine.com&lt;/span&gt;

 # touch /etc/apache2/sites-available/phpBB3 

 # nano /etc/apache2/sites-available/phpBB3

 &lt;VirtualHost *:80&gt;
         ServerName phpBB3  
         ServerAlias phpBB3     
         RewriteCond %{HTTP_HOST} ^&lt;span style=&quot;color:#FF0000;&quot;&gt;votre_domaine.com&lt;/span&gt;$
         RewriteRule ^(.*)   http://www.&lt;span style=&quot;color:#FF0000;&quot;&gt;votre_domaine.com&lt;/span&gt;/$1  [QSA,L,R=301]         
         ServerAdmin webmaster@&lt;span style=&quot;color:#FF0000;&quot;&gt;votre_domaine.com&lt;/span&gt;                          
         DocumentRoot /var/www/phpBB3/
                               
         &lt;Directory /&gt; 
                 Options FollowSymLinks
                 AllowOverride all
         &lt;/Directory&gt; 
    
         &lt;Directory /var/www/phpBB3/&gt;
                 Options Indexes +FollowSymLinks MultiViews 
                 AllowOverride all
                 Order allow,deny
 #                allow from all
                 allow from 192.168.1.13, 2.x.x.x
         &lt;/Directory&gt; 
 
         include /etc/apache2/www.d/*.conf
         ErrorLog ${APACHE_LOG_DIR}/www-error.log
         # Possible values include: debug, info, notice, warn, error, crit,                 
         # alert, emerg.  
         LogLevel error
         CustomLog ${APACHE_LOG_DIR}/www-access.log combined               
 &lt;/VirtualHost&gt;

==Interdire l'accès public provisoirement==

Afin de pouvoir procéder aux divers configurations/créations/modif etc ... une fois l'installation terminer

* On interdit et autorise uniquement:
** allow from all la ligne est commenté (accès public autoriser)
** allow from 192.168.1.13, 2.x.x.x on autorise uniquement l'ip local et public (accès uniquement pour ...)

== Enregistrement du Vhost et relance d'apache2==

 # a2ensite phpBB3
 Enabling site phpBB3.
 Run '/etc/init.d/apache2 reload' to activate new configuration!
 #

 # /etc/init.d/apache2 reload
 Reloading web server config: apache2.
 #

= Lancer l'installation=

* taper simplement, dans la barre d'adresse de votre navigateur favoris http://votre_domaine.com qui aura pour résultat de lancer la page http://votre_domaine.com/install/index.php

== Le tout en images==

[[Fichier:Introduction 00.png|500px]]


[[Fichier:Bienvenue dans installation 01 bis.png|500px]]


[[Fichier:Compatibilité de installation 02 bis.png|500px]]


[[Fichier:Compatibilité de installation 03 bis.png|500px]]


[[Fichier:Compatibilité de installation 04 bis.png|500px]]


[[Fichier:Compatibilité de installation 05 bis.png|500px]]

=== nom de la base et d'utilisateur===


* Entrer les informations demander.
** nom de la base
** nom de l'utilisateur

[[Fichier:Configuration de la base de données 07 bis.png|500px]]


[[Fichier:Connexion à la base de données 08 bis.png|500px]]

=== nom et mot de pass de l'administrateur===


[[Fichier:Configuration de ladministration 10 bis.png|500px]]


[[Fichier:Informations sur ladministrateur 11 bis.png|500px]]

=== télécharger la configuration===

[[Fichier:Télécharger la configuration 12 bis.png|500px]]

==== '''Attention'''====

* Cliquer comment demander.
** Enregistrer ce dernier dans votre /home/user/config.php


&lt;span style=&quot;color:#FF0000;&quot;&gt; /!\ Ce sont là des informations relative au compte administrateur /!\ &lt;/span&gt;


 :~# cat /home/loreleil/config.php
 &lt;?php
 // phpBB 3.0.x auto-generated configuration file
 // Do not change anything in this file!
 $dbms = 'mysqli';
 $dbhost = 'localhost';
 $dbport = '';
 $dbname = ''''phpBB_3_0_11'''';
 $dbuser = ''''user-phpBB'''';
 $dbpasswd = ''''votre_mot_de_pass_en_bêton'''';
 $table_prefix = 'phpbb_';
 $acm_type = 'file';
 $load_extensions = '';
 
 @define('PHPBB_INSTALLED', true);
 // @define('DEBUG', true);
 // @define('DEBUG_EXTRA', true);
 :~# 

* Déplacer ce dernier en tant que root et écraser le fichier /var/www/phpBB3/config.php ce dernier étant vide.

 # mv /home/user/config.php /var/www/phpBB3/config.php


[[Fichier:Télécharger la configuration 13 bis.png|500px]]


[[Fichier:Paramètres des e-mails 14 bis.png|500px]]


[[Fichier:Paramètres des e-mails 15 bis.png|500px]]

===renseigner le nom de domaine===


[[Fichier:Paramètres des e-mails 16 bis.png|500px]]


[[Fichier:Paramètres des e-mails 17 bis.png|500px]]

=Félicitations ! PhpBB3 est installé=


[[Fichier:Félicitations 18 bis.png|500px ]]


[[Fichier:Envoyer le rapport de statistiques 20 bis.png|500px]]


[[Fichier:Envoyer le rapport de statistiques 22 bis.png|500px]]

=Bienvenue dans phpBB=

[[Fichier:Bienvenue dans phpBB 23 bis.png|500px]]


[[Fichier:Exemple.jpg]]

[[Fichier:Exemple.jpg]]

[[Fichier:Exemple.jpg]]

[[Fichier:Exemple.jpg]]

[[Fichier:Exemple.jpg]]

[[Fichier:Exemple.jpg]]














&lt;br&gt;



[[Catégorie:Serveurs:Tutoriel]]
&lt;br&gt;</text>
      <sha1>tcaey7nrltpdhr4gqyrtyceovy747pk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4470</id>
      <parentid>4468</parentid>
      <timestamp>2012-09-12T13:34:35Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <comment>/* Facile, non ... */</comment>
      <text xml:space="preserve" bytes="8184">=Installation d'un forum phpBB=

==Prérequis==

* Ce tutoriel est destiné aux utilisateurs Linux, plus particulièrement Debian Squeeze dans le cas présent.

==Notes==

* Un bon nombre de png serviront de support d'installation.
** Pour votre confort, ces images on étaient réduites (à 500 pixels max.).
** Deux clics à la suite, sur l'une d'elles, l'affichera en mode pleine écran.


=Création de la base de données Mysql=

* Via la console.

 ~ # [http://www.debian-fr.org/mysql-ne-plus-taper-son-mot-de-pass-x-fois-t34738.html#p351926 mysql]
 Reading table information for completion of table and column names
 You can turn off this feature to get a quicker startup with -A
 
 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 10576
 Server version: 5.1.63-0+squeeze1-log (Debian)
 
 Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
 
 Oracle is a registered trademark of Oracle Corporation and/or its
 affiliates. Other names may be trademarks of their respective
 owners.
 
 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
 mysql&gt;

* Nommer cette base à votre guise, sous conditions:
** ne pas utiliser de caractère spéciaux.
** ne pas utiliser de caractère accentué
** ne pas utiliser de tiret '''-''' ni de point '''.'''
 mysql&gt; create database '''phpBB_3_0_11''';
 Query OK, 1 row affected (0.00 sec)
 
 mysql&gt;

[[Fichier:Créationn bdd 26 bis.png|300px]]

* Suppression d'une base, suite au(x) caractère(s)
** &lt;span style=&quot;color:#FF0000;&quot;&gt;''' /!\ Prenez garde quant à la sélection de cette dernière!!! La suppression sera irréversible /!\'''&lt;/span&gt;

 mysql&gt;
 mysql&gt; DROP DATABASE phpBB_;                                                                                               
 Query OK, 0 rows affected (0.00 sec) 
 
 mysql&gt; 

== Création de l'utilisateur de cet base==

 mysql&gt; grant all privileges on '''phpBB_3_0_11'''.* to &quot;'''user_phpBB'''&quot;@&quot;localhost&quot; identified by  ''''votre_mot_de_pass_en_bêton'''';
 Query OK, 0 rows affected (0.00 sec)
 mysql&gt;

* Recharger les privilèges et quitter proprement.

 mysql&gt;
 mysql&gt; flush privileges;
 Query OK, 0 rows affected (0.00 sec)
 mysql&gt;

 mysql&gt; quit;
 Bye
  ~ #

* Redémarrer mysql.

  ~ # /etc/init.d/mysql restart
 Stopping MySQL database server: mysqld.
 Starting MySQL database server: mysqld.
 Checking for corrupt, not cleanly closed and upgrade needing tables..
  ~ #

=Téléchargement et décompression=

 ~ # cd /opt/sources/telechargements
  /opt/sources/telechargements #

  /opt/sources/telechargements # wget -c http://garr.dl.sourceforge.net/project/phpbb-fr/phpBB3/phpBB%203.0.11%20Package/phpBB- 3.0.11_FR.zip
 ...
 /opt/sources/telechargements #


* l'option -d à pour effet d'extraire le fichier zip dans le répertoire /var/www/ et ne supprime pas l'archive zip. Si le répertoire de destination n'existe pas il est crée.

 /opt/sources/telechargements # unzip phpBB-3.0.11_FR.zip -d /var/www


=Création du Vhost apache2=

* Le forum sera accessible via http://&lt;span style=&quot;color:#FF0000;&quot;&gt;votre_domaine.com&lt;/span&gt;

 # touch /etc/apache2/sites-available/phpBB3 

 # nano /etc/apache2/sites-available/phpBB3

 &lt;VirtualHost *:80&gt;
         ServerName phpBB3  
         ServerAlias phpBB3     
         RewriteCond %{HTTP_HOST} ^&lt;span style=&quot;color:#FF0000;&quot;&gt;votre_domaine.com&lt;/span&gt;$
         RewriteRule ^(.*)   http://www.&lt;span style=&quot;color:#FF0000;&quot;&gt;votre_domaine.com&lt;/span&gt;/$1  [QSA,L,R=301]         
         ServerAdmin webmaster@&lt;span style=&quot;color:#FF0000;&quot;&gt;votre_domaine.com&lt;/span&gt;                          
         DocumentRoot /var/www/phpBB3/
                               
         &lt;Directory /&gt; 
                 Options FollowSymLinks
                 AllowOverride all
         &lt;/Directory&gt; 
    
         &lt;Directory /var/www/phpBB3/&gt;
                 Options Indexes +FollowSymLinks MultiViews 
                 AllowOverride all
                 Order allow,deny
 #                allow from all
                 allow from 192.168.1.13, 2.x.x.x
         &lt;/Directory&gt; 
 
         include /etc/apache2/www.d/*.conf
         ErrorLog ${APACHE_LOG_DIR}/www-error.log
         # Possible values include: debug, info, notice, warn, error, crit,                 
         # alert, emerg.  
         LogLevel error
         CustomLog ${APACHE_LOG_DIR}/www-access.log combined               
 &lt;/VirtualHost&gt;

==Interdire l'accès public provisoirement==

Afin de pouvoir procéder aux divers configurations/créations/modif etc ... une fois l'installation terminer

* On interdit et autorise uniquement:
** allow from all la ligne est commenté (accès public autoriser)
** allow from 192.168.1.13, 2.x.x.x on autorise uniquement l'ip local et public (accès uniquement pour ...)

== Enregistrement du Vhost et relance d'apache2==

 # a2ensite phpBB3
 Enabling site phpBB3.
 Run '/etc/init.d/apache2 reload' to activate new configuration!
 #

 # /etc/init.d/apache2 reload
 Reloading web server config: apache2.
 #

= Lancer l'installation=

* taper simplement, dans la barre d'adresse de votre navigateur favoris http://votre_domaine.com qui aura pour résultat de lancer la page http://votre_domaine.com/install/index.php

== Le tout en images==

[[Fichier:Introduction 00.png|500px]]


[[Fichier:Bienvenue dans installation 01 bis.png|500px]]


[[Fichier:Compatibilité de installation 02 bis.png|500px]]


[[Fichier:Compatibilité de installation 03 bis.png|500px]]


[[Fichier:Compatibilité de installation 04 bis.png|500px]]


[[Fichier:Compatibilité de installation 05 bis.png|500px]]

=== nom de la base et d'utilisateur===


* Entrer les informations demander.
** nom de la base
** nom de l'utilisateur

[[Fichier:Configuration de la base de données 07 bis.png|500px]]


[[Fichier:Connexion à la base de données 08 bis.png|500px]]

=== nom et mot de pass de l'administrateur===


[[Fichier:Configuration de ladministration 10 bis.png|500px]]


[[Fichier:Informations sur ladministrateur 11 bis.png|500px]]

=== télécharger la configuration===

[[Fichier:Télécharger la configuration 12 bis.png|500px]]

==== '''Attention'''====

* Cliquer comment demander.
** Enregistrer ce dernier dans votre /home/user/config.php


&lt;span style=&quot;color:#FF0000;&quot;&gt; /!\ Ce sont là des informations relative au compte administrateur /!\ &lt;/span&gt;


 :~# cat /home/loreleil/config.php
 &lt;?php
 // phpBB 3.0.x auto-generated configuration file
 // Do not change anything in this file!
 $dbms = 'mysqli';
 $dbhost = 'localhost';
 $dbport = '';
 $dbname = ''''phpBB_3_0_11'''';
 $dbuser = ''''user-phpBB'''';
 $dbpasswd = ''''votre_mot_de_pass_en_bêton'''';
 $table_prefix = 'phpbb_';
 $acm_type = 'file';
 $load_extensions = '';
 
 @define('PHPBB_INSTALLED', true);
 // @define('DEBUG', true);
 // @define('DEBUG_EXTRA', true);
 :~# 

* Déplacer ce dernier en tant que root et écraser le fichier /var/www/phpBB3/config.php ce dernier étant vide.

 # mv /home/user/config.php /var/www/phpBB3/config.php


[[Fichier:Télécharger la configuration 13 bis.png|500px]]


[[Fichier:Paramètres des e-mails 14 bis.png|500px]]


[[Fichier:Paramètres des e-mails 15 bis.png|500px]]

===renseigner le nom de domaine===


[[Fichier:Paramètres des e-mails 16 bis.png|500px]]


[[Fichier:Paramètres des e-mails 17 bis.png|500px]]

=Félicitations ! PhpBB3 est installé=


[[Fichier:Félicitations 18 bis.png|500px ]]


[[Fichier:Envoyer le rapport de statistiques 20 bis.png|500px]]


[[Fichier:Envoyer le rapport de statistiques 22 bis.png|500px]]

=Bienvenue dans phpBB=

[[Fichier:Bienvenue dans phpBB 23 bis.png|500px]]


[[Fichier:Bienvenue dans phpBB 24 bis.png|500px]]


[[Fichier:Bienvenue dans phpBB 25 bis.png|500px]]


* Facile, non ... ^¿^


=Source=


* [http://forums.phpbb-fr.com/documentation-phpbb3/sujet130127.html [Doc]]

* {{fr}} [http://forums.phpbb-fr.com/telechargement-maj-phpbb3/ Téléchargements et mises à jour]



[[Utilisateur:Loreleil|Loreleil]]

Moment privilégié, moment partagé ... '''. ^¿^ .'''

Amicalement, loreleil.

Je vous en serre cinq !


Loreleil 12 septembre 2012 à 15:34 (CEST)


&lt;br&gt;

[[Catégorie:Serveurs:Tutoriel]]
&lt;br&gt;</text>
      <sha1>r0qkp4hpgaa7zxkf1nogr1palm5hzt6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4471</id>
      <parentid>4470</parentid>
      <timestamp>2012-09-12T15:05:21Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="8194">=Installation d'un forum phpBB=

==Prérequis==

* Ce tutoriel est destiné aux utilisateurs Linux, plus particulièrement Debian Squeeze dans le cas présent.

==Notes==

* Un bon nombre de png serviront de support d'installation.
** Pour votre confort, ces images on été réduites (à 500 pixels max.).
** Deux clics à la suite, sur l'une d'elles, l'affichera en mode plein écran.


=Création de la base de données Mysql=

* Via la console.

 ~ # [http://www.debian-fr.org/mysql-ne-plus-taper-son-mot-de-pass-x-fois-t34738.html#p351926 mysql]
 Reading table information for completion of table and column names
 You can turn off this feature to get a quicker startup with -A
 
 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 10576
 Server version: 5.1.63-0+squeeze1-log (Debian)
 
 Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
 
 Oracle is a registered trademark of Oracle Corporation and/or its
 affiliates. Other names may be trademarks of their respective
 owners.
 
 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
 mysql&gt;

* Nommer cette base à votre guise, sous conditions:
** ne pas utiliser de caractère spéciaux.
** ne pas utiliser de caractère accentué
** ne pas utiliser de tiret '''-''' ni de point '''.'''
 mysql&gt; create database '''phpBB_3_0_11''';
 Query OK, 1 row affected (0.00 sec)
 
 mysql&gt;

[[Fichier:Créationn bdd 26 bis.png|300px]]

* Suppression d'une base, suite au(x) caractère(s)
** &lt;span style=&quot;color:#FF0000;&quot;&gt;''' /!\ Prenez garde quant à la sélection de cette dernière!!! La suppression sera irréversible /!\'''&lt;/span&gt;

 mysql&gt;
 mysql&gt; DROP DATABASE phpBB_;                                                                                               
 Query OK, 0 rows affected (0.00 sec) 
 
 mysql&gt; 

== Création de l'utilisateur de cette base==

 mysql&gt; grant all privileges on '''phpBB_3_0_11'''.* to &quot;'''user_phpBB'''&quot;@&quot;localhost&quot; identified by  ''''votre_mot_de_pass_en_bêton'''';
 Query OK, 0 rows affected (0.00 sec)
 mysql&gt;

* Recharger les privilèges et quitter proprement.

 mysql&gt;
 mysql&gt; flush privileges;
 Query OK, 0 rows affected (0.00 sec)
 mysql&gt;

 mysql&gt; quit;
 Bye
  ~ #

* Redémarrer mysql.

  ~ # /etc/init.d/mysql restart
 Stopping MySQL database server: mysqld.
 Starting MySQL database server: mysqld.
 Checking for corrupt, not cleanly closed and upgrade needing tables..
  ~ #

=Téléchargement et décompression=

 ~ # cd /opt/sources/telechargements
  /opt/sources/telechargements #

  /opt/sources/telechargements # wget -c http://garr.dl.sourceforge.net/project/phpbb-fr/phpBB3/phpBB%203.0.11%20Package/phpBB- 3.0.11_FR.zip
 ...
 /opt/sources/telechargements #


* l'option -d à pour effet d'extraire le fichier zip dans le répertoire /var/www/ et ne supprime pas l'archive zip. Si le répertoire de destination n'existe pas il est créé.

 /opt/sources/telechargements # unzip phpBB-3.0.11_FR.zip -d /var/www


=Création du Vhost apache2=

* Le forum sera accessible via http://&lt;span style=&quot;color:#FF0000;&quot;&gt;votre_domaine.com&lt;/span&gt;

 # touch /etc/apache2/sites-available/phpBB3 

 # nano /etc/apache2/sites-available/phpBB3

 &lt;VirtualHost *:80&gt;
         ServerName phpBB3  
         ServerAlias phpBB3     
         RewriteCond %{HTTP_HOST} ^&lt;span style=&quot;color:#FF0000;&quot;&gt;votre_domaine.com&lt;/span&gt;$
         RewriteRule ^(.*)   http://www.&lt;span style=&quot;color:#FF0000;&quot;&gt;votre_domaine.com&lt;/span&gt;/$1  [QSA,L,R=301]         
         ServerAdmin webmaster@&lt;span style=&quot;color:#FF0000;&quot;&gt;votre_domaine.com&lt;/span&gt;                          
         DocumentRoot /var/www/phpBB3/
                               
         &lt;Directory /&gt; 
                 Options FollowSymLinks
                 AllowOverride all
         &lt;/Directory&gt; 
    
         &lt;Directory /var/www/phpBB3/&gt;
                 Options Indexes +FollowSymLinks MultiViews 
                 AllowOverride all
                 Order allow,deny
 #                allow from all
                 allow from 192.168.1.13, 2.x.x.x
         &lt;/Directory&gt; 
 
         include /etc/apache2/www.d/*.conf
         ErrorLog ${APACHE_LOG_DIR}/www-error.log
         # Possible values include: debug, info, notice, warn, error, crit,                 
         # alert, emerg.  
         LogLevel error
         CustomLog ${APACHE_LOG_DIR}/www-access.log combined               
 &lt;/VirtualHost&gt;

==Interdire l'accès public provisoirement==

Afin de pouvoir procéder aux diverses configurations/créations/modif etc ... une fois l'installation terminée

* On interdit et autorise uniquement:
** allow from all la ligne est commentée (accès public autorisé)
** allow from 192.168.1.13, 2.x.x.x on autorise uniquement l'ip locale et public (accès uniquement pour ...)

== Enregistrement du Vhost et relance d'apache2==

 # a2ensite phpBB3
 Enabling site phpBB3.
 Run '/etc/init.d/apache2 reload' to activate new configuration!
 #

 # /etc/init.d/apache2 reload
 Reloading web server config: apache2.
 #

= Lancer l'installation=

* taper simplement, dans la barre d'adresse de votre navigateur favoris http://votre_domaine.com qui aura pour résultat de lancer la page http://votre_domaine.com/install/index.php

== Le tout en images==

[[Fichier:Introduction 00.png|500px]]


[[Fichier:Bienvenue dans installation 01 bis.png|500px]]


[[Fichier:Compatibilité de installation 02 bis.png|500px]]


[[Fichier:Compatibilité de installation 03 bis.png|500px]]


[[Fichier:Compatibilité de installation 04 bis.png|500px]]


[[Fichier:Compatibilité de installation 05 bis.png|500px]]

=== nom de la base et d'utilisateur===


* Entrer les informations demandées.
** nom de la base
** nom de l'utilisateur

[[Fichier:Configuration de la base de données 07 bis.png|500px]]


[[Fichier:Connexion à la base de données 08 bis.png|500px]]

=== nom et mot de passe de l'administrateur===


[[Fichier:Configuration de l'administration 10 bis.png|500px]]


[[Fichier:Informations sur l'administrateur 11 bis.png|500px]]

=== Télécharger la configuration===

[[Fichier:Télécharger la configuration 12 bis.png|500px]]

==== '''Attention'''====

* Cliquer comment demander.
** Enregistrer ce dernier dans votre /home/user/config.php


&lt;span style=&quot;color:#FF0000;&quot;&gt; /!\ Ce sont là des informations relatives au compte administrateur /!\ &lt;/span&gt;


 :~# cat /home/loreleil/config.php
 &lt;?php
 // phpBB 3.0.x auto-generated configuration file
 // Do not change anything in this file!
 $dbms = 'mysqli';
 $dbhost = 'localhost';
 $dbport = '';
 $dbname = ''''phpBB_3_0_11'''';
 $dbuser = ''''user-phpBB'''';
 $dbpasswd = ''''votre_mot_de_pass_en_bêton'''';
 $table_prefix = 'phpbb_';
 $acm_type = 'file';
 $load_extensions = '';
 
 @define('PHPBB_INSTALLED', true);
 // @define('DEBUG', true);
 // @define('DEBUG_EXTRA', true);
 :~# 

* Déplacer ce dernier en tant que root et écraser le fichier /var/www/phpBB3/config.php ce dernier étant vide.

 # mv /home/user/config.php /var/www/phpBB3/config.php


[[Fichier:Télécharger la configuration 13 bis.png|500px]]


[[Fichier:Paramètres des e-mails 14 bis.png|500px]]


[[Fichier:Paramètres des e-mails 15 bis.png|500px]]

===renseigner le nom de domaine===


[[Fichier:Paramètres des e-mails 16 bis.png|500px]]


[[Fichier:Paramètres des e-mails 17 bis.png|500px]]

=Félicitations ! PhpBB3 est installé=


[[Fichier:Félicitations 18 bis.png|500px ]]


[[Fichier:Envoyer le rapport de statistiques 20 bis.png|500px]]


[[Fichier:Envoyer le rapport de statistiques 22 bis.png|500px]]

=Bienvenue dans phpBB=

[[Fichier:Bienvenue dans phpBB 23 bis.png|500px]]


[[Fichier:Bienvenue dans phpBB 24 bis.png|500px]]


[[Fichier:Bienvenue dans phpBB 25 bis.png|500px]]


* Facile, non ... ^¿^


=Source=


* [http://forums.phpbb-fr.com/documentation-phpbb3/sujet130127.html [Doc]]

* {{fr}} [http://forums.phpbb-fr.com/telechargement-maj-phpbb3/ Téléchargements et mises à jour]



[[Utilisateur:Loreleil|Loreleil]]

Moment privilégié, moment partagé ... '''. ^¿^ .'''

Amicalement, loreleil.

Je vous en serre cinq !


Loreleil 12 septembre 2012 à 15:34 (CEST)


&lt;br&gt;

[[Catégorie:Serveurs:Tutoriel]]
&lt;br&gt;</text>
      <sha1>jknmxw5nbnej9eikya3ogv32qfx74rh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4477</id>
      <parentid>4471</parentid>
      <timestamp>2012-09-12T16:05:31Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <minor/>
      <comment>/* modif importation png10 et 11 renommer en 27 et 28 */</comment>
      <text xml:space="preserve" bytes="8194">=Installation d'un forum phpBB=

==Prérequis==

* Ce tutoriel est destiné aux utilisateurs Linux, plus particulièrement Debian Squeeze dans le cas présent.

==Notes==

* Un bon nombre de png serviront de support d'installation.
** Pour votre confort, ces images on été réduites (à 500 pixels max.).
** Deux clics à la suite, sur l'une d'elles, l'affichera en mode plein écran.


=Création de la base de données Mysql=

* Via la console.

 ~ # [http://www.debian-fr.org/mysql-ne-plus-taper-son-mot-de-pass-x-fois-t34738.html#p351926 mysql]
 Reading table information for completion of table and column names
 You can turn off this feature to get a quicker startup with -A
 
 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 10576
 Server version: 5.1.63-0+squeeze1-log (Debian)
 
 Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
 
 Oracle is a registered trademark of Oracle Corporation and/or its
 affiliates. Other names may be trademarks of their respective
 owners.
 
 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
 mysql&gt;

* Nommer cette base à votre guise, sous conditions:
** ne pas utiliser de caractère spéciaux.
** ne pas utiliser de caractère accentué
** ne pas utiliser de tiret '''-''' ni de point '''.'''
 mysql&gt; create database '''phpBB_3_0_11''';
 Query OK, 1 row affected (0.00 sec)
 
 mysql&gt;

[[Fichier:Créationn bdd 26 bis.png|300px]]

* Suppression d'une base, suite au(x) caractère(s)
** &lt;span style=&quot;color:#FF0000;&quot;&gt;''' /!\ Prenez garde quant à la sélection de cette dernière!!! La suppression sera irréversible /!\'''&lt;/span&gt;

 mysql&gt;
 mysql&gt; DROP DATABASE phpBB_;                                                                                               
 Query OK, 0 rows affected (0.00 sec) 
 
 mysql&gt; 

== Création de l'utilisateur de cette base==

 mysql&gt; grant all privileges on '''phpBB_3_0_11'''.* to &quot;'''user_phpBB'''&quot;@&quot;localhost&quot; identified by  ''''votre_mot_de_pass_en_bêton'''';
 Query OK, 0 rows affected (0.00 sec)
 mysql&gt;

* Recharger les privilèges et quitter proprement.

 mysql&gt;
 mysql&gt; flush privileges;
 Query OK, 0 rows affected (0.00 sec)
 mysql&gt;

 mysql&gt; quit;
 Bye
  ~ #

* Redémarrer mysql.

  ~ # /etc/init.d/mysql restart
 Stopping MySQL database server: mysqld.
 Starting MySQL database server: mysqld.
 Checking for corrupt, not cleanly closed and upgrade needing tables..
  ~ #

=Téléchargement et décompression=

 ~ # cd /opt/sources/telechargements
  /opt/sources/telechargements #

  /opt/sources/telechargements # wget -c http://garr.dl.sourceforge.net/project/phpbb-fr/phpBB3/phpBB%203.0.11%20Package/phpBB- 3.0.11_FR.zip
 ...
 /opt/sources/telechargements #


* l'option -d à pour effet d'extraire le fichier zip dans le répertoire /var/www/ et ne supprime pas l'archive zip. Si le répertoire de destination n'existe pas il est créé.

 /opt/sources/telechargements # unzip phpBB-3.0.11_FR.zip -d /var/www


=Création du Vhost apache2=

* Le forum sera accessible via http://&lt;span style=&quot;color:#FF0000;&quot;&gt;votre_domaine.com&lt;/span&gt;

 # touch /etc/apache2/sites-available/phpBB3 

 # nano /etc/apache2/sites-available/phpBB3

 &lt;VirtualHost *:80&gt;
         ServerName phpBB3  
         ServerAlias phpBB3     
         RewriteCond %{HTTP_HOST} ^&lt;span style=&quot;color:#FF0000;&quot;&gt;votre_domaine.com&lt;/span&gt;$
         RewriteRule ^(.*)   http://www.&lt;span style=&quot;color:#FF0000;&quot;&gt;votre_domaine.com&lt;/span&gt;/$1  [QSA,L,R=301]         
         ServerAdmin webmaster@&lt;span style=&quot;color:#FF0000;&quot;&gt;votre_domaine.com&lt;/span&gt;                          
         DocumentRoot /var/www/phpBB3/
                               
         &lt;Directory /&gt; 
                 Options FollowSymLinks
                 AllowOverride all
         &lt;/Directory&gt; 
    
         &lt;Directory /var/www/phpBB3/&gt;
                 Options Indexes +FollowSymLinks MultiViews 
                 AllowOverride all
                 Order allow,deny
 #                allow from all
                 allow from 192.168.1.13, 2.x.x.x
         &lt;/Directory&gt; 
 
         include /etc/apache2/www.d/*.conf
         ErrorLog ${APACHE_LOG_DIR}/www-error.log
         # Possible values include: debug, info, notice, warn, error, crit,                 
         # alert, emerg.  
         LogLevel error
         CustomLog ${APACHE_LOG_DIR}/www-access.log combined               
 &lt;/VirtualHost&gt;

==Interdire l'accès public provisoirement==

Afin de pouvoir procéder aux diverses configurations/créations/modif etc ... une fois l'installation terminée

* On interdit et autorise uniquement:
** allow from all la ligne est commentée (accès public autorisé)
** allow from 192.168.1.13, 2.x.x.x on autorise uniquement l'ip locale et public (accès uniquement pour ...)

== Enregistrement du Vhost et relance d'apache2==

 # a2ensite phpBB3
 Enabling site phpBB3.
 Run '/etc/init.d/apache2 reload' to activate new configuration!
 #

 # /etc/init.d/apache2 reload
 Reloading web server config: apache2.
 #

= Lancer l'installation=

* taper simplement, dans la barre d'adresse de votre navigateur favoris http://votre_domaine.com qui aura pour résultat de lancer la page http://votre_domaine.com/install/index.php

== Le tout en images==

[[Fichier:Introduction 00.png|500px]]


[[Fichier:Bienvenue dans installation 01 bis.png|500px]]


[[Fichier:Compatibilité de installation 02 bis.png|500px]]


[[Fichier:Compatibilité de installation 03 bis.png|500px]]


[[Fichier:Compatibilité de installation 04 bis.png|500px]]


[[Fichier:Compatibilité de installation 05 bis.png|500px]]

=== nom de la base et d'utilisateur===


* Entrer les informations demandées.
** nom de la base
** nom de l'utilisateur

[[Fichier:Configuration de la base de données 07 bis.png|500px]]


[[Fichier:Connexion à la base de données 08 bis.png|500px]]

=== nom et mot de passe de l'administrateur===


[[Fichier:Configuration de l'administration 27 bis.png|500px]]


[[Fichier:Informations sur l'administrateur 28 bis.png|500px]]

=== Télécharger la configuration===

[[Fichier:Télécharger la configuration 12 bis.png|500px]]

==== '''Attention'''====

* Cliquer comment demander.
** Enregistrer ce dernier dans votre /home/user/config.php


&lt;span style=&quot;color:#FF0000;&quot;&gt; /!\ Ce sont là des informations relatives au compte administrateur /!\ &lt;/span&gt;


 :~# cat /home/loreleil/config.php
 &lt;?php
 // phpBB 3.0.x auto-generated configuration file
 // Do not change anything in this file!
 $dbms = 'mysqli';
 $dbhost = 'localhost';
 $dbport = '';
 $dbname = ''''phpBB_3_0_11'''';
 $dbuser = ''''user-phpBB'''';
 $dbpasswd = ''''votre_mot_de_pass_en_bêton'''';
 $table_prefix = 'phpbb_';
 $acm_type = 'file';
 $load_extensions = '';
 
 @define('PHPBB_INSTALLED', true);
 // @define('DEBUG', true);
 // @define('DEBUG_EXTRA', true);
 :~# 

* Déplacer ce dernier en tant que root et écraser le fichier /var/www/phpBB3/config.php ce dernier étant vide.

 # mv /home/user/config.php /var/www/phpBB3/config.php


[[Fichier:Télécharger la configuration 13 bis.png|500px]]


[[Fichier:Paramètres des e-mails 14 bis.png|500px]]


[[Fichier:Paramètres des e-mails 15 bis.png|500px]]

===renseigner le nom de domaine===


[[Fichier:Paramètres des e-mails 16 bis.png|500px]]


[[Fichier:Paramètres des e-mails 17 bis.png|500px]]

=Félicitations ! PhpBB3 est installé=


[[Fichier:Félicitations 18 bis.png|500px ]]


[[Fichier:Envoyer le rapport de statistiques 20 bis.png|500px]]


[[Fichier:Envoyer le rapport de statistiques 22 bis.png|500px]]

=Bienvenue dans phpBB=

[[Fichier:Bienvenue dans phpBB 23 bis.png|500px]]


[[Fichier:Bienvenue dans phpBB 24 bis.png|500px]]


[[Fichier:Bienvenue dans phpBB 25 bis.png|500px]]


* Facile, non ... ^¿^


=Source=


* [http://forums.phpbb-fr.com/documentation-phpbb3/sujet130127.html [Doc]]

* {{fr}} [http://forums.phpbb-fr.com/telechargement-maj-phpbb3/ Téléchargements et mises à jour]



[[Utilisateur:Loreleil|Loreleil]]

Moment privilégié, moment partagé ... '''. ^¿^ .'''

Amicalement, loreleil.

Je vous en serre cinq !


Loreleil 12 septembre 2012 à 15:34 (CEST)


&lt;br&gt;

[[Catégorie:Serveurs:Tutoriel]]
&lt;br&gt;</text>
      <sha1>de0b67bgyigg06czltrw5uk2rmv1ui3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4478</id>
      <parentid>4477</parentid>
      <timestamp>2012-09-12T16:29:45Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Notes */</comment>
      <text xml:space="preserve" bytes="8195">=Installation d'un forum phpBB=

==Prérequis==

* Ce tutoriel est destiné aux utilisateurs Linux, plus particulièrement Debian Squeeze dans le cas présent.

==Notes==

* Un bon nombre d'images serviront de support d'installation.
** Pour votre confort, ces images on été réduites (à 500 pixels max.).
** Deux clics à la suite, sur l'une d'elles, l'affichera en mode plein écran.

=Création de la base de données Mysql=

* Via la console.

 ~ # [http://www.debian-fr.org/mysql-ne-plus-taper-son-mot-de-pass-x-fois-t34738.html#p351926 mysql]
 Reading table information for completion of table and column names
 You can turn off this feature to get a quicker startup with -A
 
 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 10576
 Server version: 5.1.63-0+squeeze1-log (Debian)
 
 Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
 
 Oracle is a registered trademark of Oracle Corporation and/or its
 affiliates. Other names may be trademarks of their respective
 owners.
 
 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
 mysql&gt;

* Nommer cette base à votre guise, sous conditions:
** ne pas utiliser de caractère spéciaux.
** ne pas utiliser de caractère accentué
** ne pas utiliser de tiret '''-''' ni de point '''.'''
 mysql&gt; create database '''phpBB_3_0_11''';
 Query OK, 1 row affected (0.00 sec)
 
 mysql&gt;

[[Fichier:Créationn bdd 26 bis.png|300px]]

* Suppression d'une base, suite au(x) caractère(s)
** &lt;span style=&quot;color:#FF0000;&quot;&gt;''' /!\ Prenez garde quant à la sélection de cette dernière!!! La suppression sera irréversible /!\'''&lt;/span&gt;

 mysql&gt;
 mysql&gt; DROP DATABASE phpBB_;                                                                                               
 Query OK, 0 rows affected (0.00 sec) 
 
 mysql&gt; 

== Création de l'utilisateur de cette base==

 mysql&gt; grant all privileges on '''phpBB_3_0_11'''.* to &quot;'''user_phpBB'''&quot;@&quot;localhost&quot; identified by  ''''votre_mot_de_pass_en_bêton'''';
 Query OK, 0 rows affected (0.00 sec)
 mysql&gt;

* Recharger les privilèges et quitter proprement.

 mysql&gt;
 mysql&gt; flush privileges;
 Query OK, 0 rows affected (0.00 sec)
 mysql&gt;

 mysql&gt; quit;
 Bye
  ~ #

* Redémarrer mysql.

  ~ # /etc/init.d/mysql restart
 Stopping MySQL database server: mysqld.
 Starting MySQL database server: mysqld.
 Checking for corrupt, not cleanly closed and upgrade needing tables..
  ~ #

=Téléchargement et décompression=

 ~ # cd /opt/sources/telechargements
  /opt/sources/telechargements #

  /opt/sources/telechargements # wget -c http://garr.dl.sourceforge.net/project/phpbb-fr/phpBB3/phpBB%203.0.11%20Package/phpBB- 3.0.11_FR.zip
 ...
 /opt/sources/telechargements #


* l'option -d à pour effet d'extraire le fichier zip dans le répertoire /var/www/ et ne supprime pas l'archive zip. Si le répertoire de destination n'existe pas il est créé.

 /opt/sources/telechargements # unzip phpBB-3.0.11_FR.zip -d /var/www


=Création du Vhost apache2=

* Le forum sera accessible via http://&lt;span style=&quot;color:#FF0000;&quot;&gt;votre_domaine.com&lt;/span&gt;

 # touch /etc/apache2/sites-available/phpBB3 

 # nano /etc/apache2/sites-available/phpBB3

 &lt;VirtualHost *:80&gt;
         ServerName phpBB3  
         ServerAlias phpBB3     
         RewriteCond %{HTTP_HOST} ^&lt;span style=&quot;color:#FF0000;&quot;&gt;votre_domaine.com&lt;/span&gt;$
         RewriteRule ^(.*)   http://www.&lt;span style=&quot;color:#FF0000;&quot;&gt;votre_domaine.com&lt;/span&gt;/$1  [QSA,L,R=301]         
         ServerAdmin webmaster@&lt;span style=&quot;color:#FF0000;&quot;&gt;votre_domaine.com&lt;/span&gt;                          
         DocumentRoot /var/www/phpBB3/
                               
         &lt;Directory /&gt; 
                 Options FollowSymLinks
                 AllowOverride all
         &lt;/Directory&gt; 
    
         &lt;Directory /var/www/phpBB3/&gt;
                 Options Indexes +FollowSymLinks MultiViews 
                 AllowOverride all
                 Order allow,deny
 #                allow from all
                 allow from 192.168.1.13, 2.x.x.x
         &lt;/Directory&gt; 
 
         include /etc/apache2/www.d/*.conf
         ErrorLog ${APACHE_LOG_DIR}/www-error.log
         # Possible values include: debug, info, notice, warn, error, crit,                 
         # alert, emerg.  
         LogLevel error
         CustomLog ${APACHE_LOG_DIR}/www-access.log combined               
 &lt;/VirtualHost&gt;

==Interdire l'accès public provisoirement==

Afin de pouvoir procéder aux diverses configurations/créations/modif etc ... une fois l'installation terminée

* On interdit et autorise uniquement:
** allow from all la ligne est commentée (accès public autorisé)
** allow from 192.168.1.13, 2.x.x.x on autorise uniquement l'ip locale et public (accès uniquement pour ...)

== Enregistrement du Vhost et relance d'apache2==

 # a2ensite phpBB3
 Enabling site phpBB3.
 Run '/etc/init.d/apache2 reload' to activate new configuration!
 #

 # /etc/init.d/apache2 reload
 Reloading web server config: apache2.
 #

= Lancer l'installation=

* taper simplement, dans la barre d'adresse de votre navigateur favoris http://votre_domaine.com qui aura pour résultat de lancer la page http://votre_domaine.com/install/index.php

== Le tout en images==

[[Fichier:Introduction 00.png|500px]]


[[Fichier:Bienvenue dans installation 01 bis.png|500px]]


[[Fichier:Compatibilité de installation 02 bis.png|500px]]


[[Fichier:Compatibilité de installation 03 bis.png|500px]]


[[Fichier:Compatibilité de installation 04 bis.png|500px]]


[[Fichier:Compatibilité de installation 05 bis.png|500px]]

=== nom de la base et d'utilisateur===


* Entrer les informations demandées.
** nom de la base
** nom de l'utilisateur

[[Fichier:Configuration de la base de données 07 bis.png|500px]]


[[Fichier:Connexion à la base de données 08 bis.png|500px]]

=== nom et mot de passe de l'administrateur===


[[Fichier:Configuration de l'administration 27 bis.png|500px]]


[[Fichier:Informations sur l'administrateur 28 bis.png|500px]]

=== Télécharger la configuration===

[[Fichier:Télécharger la configuration 12 bis.png|500px]]

==== '''Attention'''====

* Cliquer comment demander.
** Enregistrer ce dernier dans votre /home/user/config.php


&lt;span style=&quot;color:#FF0000;&quot;&gt; /!\ Ce sont là des informations relatives au compte administrateur /!\ &lt;/span&gt;


 :~# cat /home/loreleil/config.php
 &lt;?php
 // phpBB 3.0.x auto-generated configuration file
 // Do not change anything in this file!
 $dbms = 'mysqli';
 $dbhost = 'localhost';
 $dbport = '';
 $dbname = ''''phpBB_3_0_11'''';
 $dbuser = ''''user-phpBB'''';
 $dbpasswd = ''''votre_mot_de_pass_en_bêton'''';
 $table_prefix = 'phpbb_';
 $acm_type = 'file';
 $load_extensions = '';
 
 @define('PHPBB_INSTALLED', true);
 // @define('DEBUG', true);
 // @define('DEBUG_EXTRA', true);
 :~# 

* Déplacer ce dernier en tant que root et écraser le fichier /var/www/phpBB3/config.php ce dernier étant vide.

 # mv /home/user/config.php /var/www/phpBB3/config.php


[[Fichier:Télécharger la configuration 13 bis.png|500px]]


[[Fichier:Paramètres des e-mails 14 bis.png|500px]]


[[Fichier:Paramètres des e-mails 15 bis.png|500px]]

===renseigner le nom de domaine===


[[Fichier:Paramètres des e-mails 16 bis.png|500px]]


[[Fichier:Paramètres des e-mails 17 bis.png|500px]]

=Félicitations ! PhpBB3 est installé=


[[Fichier:Félicitations 18 bis.png|500px ]]


[[Fichier:Envoyer le rapport de statistiques 20 bis.png|500px]]


[[Fichier:Envoyer le rapport de statistiques 22 bis.png|500px]]

=Bienvenue dans phpBB=

[[Fichier:Bienvenue dans phpBB 23 bis.png|500px]]


[[Fichier:Bienvenue dans phpBB 24 bis.png|500px]]


[[Fichier:Bienvenue dans phpBB 25 bis.png|500px]]


* Facile, non ... ^¿^


=Source=


* [http://forums.phpbb-fr.com/documentation-phpbb3/sujet130127.html [Doc]]

* {{fr}} [http://forums.phpbb-fr.com/telechargement-maj-phpbb3/ Téléchargements et mises à jour]



[[Utilisateur:Loreleil|Loreleil]]

Moment privilégié, moment partagé ... '''. ^¿^ .'''

Amicalement, loreleil.

Je vous en serre cinq !


Loreleil 12 septembre 2012 à 15:34 (CEST)


&lt;br&gt;

[[Catégorie:Serveurs:Tutoriel]]
&lt;br&gt;</text>
      <sha1>8kxyer12uvpqxtqx8i2lkm4bckzzeln</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4488</id>
      <parentid>4478</parentid>
      <timestamp>2012-09-13T07:23:28Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <minor/>
      <comment>/* Suppression d'un utilisateur */</comment>
      <text xml:space="preserve" bytes="8582">=Installation d'un forum phpBB=

==Prérequis==

* Ce tutoriel est destiné aux utilisateurs Linux, plus particulièrement Debian Squeeze dans le cas présent.

==Notes==

* Un bon nombre d'images serviront de support d'installation.
** Pour votre confort, ces images on été réduites (à 500 pixels max.).
** Deux clics à la suite, sur l'une d'elles, l'affichera en mode plein écran.

=Création de la base de données Mysql=

* Via la console.

 ~ # [http://www.debian-fr.org/mysql-ne-plus-taper-son-mot-de-pass-x-fois-t34738.html#p351926 mysql]
 Reading table information for completion of table and column names
 You can turn off this feature to get a quicker startup with -A
 
 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 10576
 Server version: 5.1.63-0+squeeze1-log (Debian)
 
 Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
 
 Oracle is a registered trademark of Oracle Corporation and/or its
 affiliates. Other names may be trademarks of their respective
 owners.
 
 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
 mysql&gt;

* Nommer cette base à votre guise, sous conditions:
** ne pas utiliser de caractère spéciaux.
** ne pas utiliser de caractère accentué
** ne pas utiliser de tiret '''-''' ni de point '''.'''
 mysql&gt; create database '''phpBB_3_0_11''';
 Query OK, 1 row affected (0.00 sec)
 
 mysql&gt;

[[Fichier:Créationn bdd 26 bis.png|500px]]

* Suppression d'une base, suite au(x) caractère(s)
** &lt;span style=&quot;color:#FF0000;&quot;&gt;''' /!\ Prenez garde quant à la sélection de cette dernière!!! La suppression sera irréversible /!\'''&lt;/span&gt;

 mysql&gt;
 mysql&gt; DROP DATABASE phpBB_;                                                                                               
 Query OK, 0 rows affected (0.00 sec) 
 
 mysql&gt; 


== Création de l'utilisateur de cette base==

 mysql&gt; grant all privileges on '''phpBB_3_0_11'''.* to &quot;'''user_phpBB'''&quot;@&quot;localhost&quot; identified by  ''''votre_mot_de_pass_en_bêton'''';
 Query OK, 0 rows affected (0.00 sec)
 mysql&gt;


* Suppression d'un utilisateur.
** Afficher les utilisateurs des bases.

 mysql&gt; 
 mysql&gt; SELECT user FROM mysql.user; 

 mysql&gt;                      
 mysql&gt; DROP user &quot;user_phpBB&quot;@&quot;localhost&quot;;                                
 Query OK, 0 rows affected (0.00 sec) 
                                           
 mysql&gt; 

[[Fichier:Suppression utilisateur de la base 29 bis.png|500px]]

* Recharger les privilèges et quitter proprement.

 mysql&gt;
 mysql&gt; flush privileges;
 Query OK, 0 rows affected (0.00 sec)
 mysql&gt;

 mysql&gt; quit;
 Bye
  ~ #

* Redémarrer mysql.

  ~ # /etc/init.d/mysql restart
 Stopping MySQL database server: mysqld.
 Starting MySQL database server: mysqld.
 Checking for corrupt, not cleanly closed and upgrade needing tables..
  ~ #

=Téléchargement et décompression=

 ~ # cd /opt/sources/telechargements
  /opt/sources/telechargements #

  /opt/sources/telechargements # wget -c http://garr.dl.sourceforge.net/project/phpbb-fr/phpBB3/phpBB%203.0.11%20Package/phpBB- 3.0.11_FR.zip
 ...
 /opt/sources/telechargements #


* l'option -d à pour effet d'extraire le fichier zip dans le répertoire /var/www/ et ne supprime pas l'archive zip. Si le répertoire de destination n'existe pas il est créé.

 /opt/sources/telechargements # unzip phpBB-3.0.11_FR.zip -d /var/www


=Création du Vhost apache2=

* Le forum sera accessible via http://&lt;span style=&quot;color:#FF0000;&quot;&gt;votre_domaine.com&lt;/span&gt;

 # touch /etc/apache2/sites-available/phpBB3 

 # nano /etc/apache2/sites-available/phpBB3

 &lt;VirtualHost *:80&gt;
         ServerName phpBB3  
         ServerAlias phpBB3     
         RewriteCond %{HTTP_HOST} ^&lt;span style=&quot;color:#FF0000;&quot;&gt;votre_domaine.com&lt;/span&gt;$
         RewriteRule ^(.*)   http://www.&lt;span style=&quot;color:#FF0000;&quot;&gt;votre_domaine.com&lt;/span&gt;/$1  [QSA,L,R=301]         
         ServerAdmin webmaster@&lt;span style=&quot;color:#FF0000;&quot;&gt;votre_domaine.com&lt;/span&gt;                          
         DocumentRoot /var/www/phpBB3/
                               
         &lt;Directory /&gt; 
                 Options FollowSymLinks
                 AllowOverride all
         &lt;/Directory&gt; 
    
         &lt;Directory /var/www/phpBB3/&gt;
                 Options Indexes +FollowSymLinks MultiViews 
                 AllowOverride all
                 Order allow,deny
 #                allow from all
                 allow from 192.168.1.13, 2.x.x.x
         &lt;/Directory&gt; 
 
         include /etc/apache2/www.d/*.conf
         ErrorLog ${APACHE_LOG_DIR}/www-error.log
         # Possible values include: debug, info, notice, warn, error, crit,                 
         # alert, emerg.  
         LogLevel error
         CustomLog ${APACHE_LOG_DIR}/www-access.log combined               
 &lt;/VirtualHost&gt;

==Interdire l'accès public provisoirement==

Afin de pouvoir procéder aux diverses configurations/créations/modif etc ... une fois l'installation terminée

* On interdit et autorise uniquement:
** allow from all la ligne est commentée (accès public autorisé)
** allow from 192.168.1.13, 2.x.x.x on autorise uniquement l'ip locale et public (accès uniquement pour ...)

== Enregistrement du Vhost et relance d'apache2==

 # a2ensite phpBB3
 Enabling site phpBB3.
 Run '/etc/init.d/apache2 reload' to activate new configuration!
 #

 # /etc/init.d/apache2 reload
 Reloading web server config: apache2.
 #

= Lancer l'installation=

* taper simplement, dans la barre d'adresse de votre navigateur favoris http://votre_domaine.com qui aura pour résultat de lancer la page http://votre_domaine.com/install/index.php

== Le tout en images==

[[Fichier:Introduction 00.png|500px]]


[[Fichier:Bienvenue dans installation 01 bis.png|500px]]


[[Fichier:Compatibilité de installation 02 bis.png|500px]]


[[Fichier:Compatibilité de installation 03 bis.png|500px]]


[[Fichier:Compatibilité de installation 04 bis.png|500px]]


[[Fichier:Compatibilité de installation 05 bis.png|500px]]

=== nom de la base et d'utilisateur===


* Entrer les informations demandées.
** nom de la base
** nom de l'utilisateur

[[Fichier:Configuration de la base de données 07 bis.png|500px]]


[[Fichier:Connexion à la base de données 08 bis.png|500px]]

=== nom et mot de passe de l'administrateur===


[[Fichier:Configuration de l'administration 27 bis.png|500px]]


[[Fichier:Informations sur l'administrateur 28 bis.png|500px]]

=== Télécharger la configuration===

[[Fichier:Télécharger la configuration 12 bis.png|500px]]

==== '''Attention'''====

* Cliquer comment demander.
** Enregistrer ce dernier dans votre /home/user/config.php


&lt;span style=&quot;color:#FF0000;&quot;&gt; /!\ Ce sont là des informations relatives au compte administrateur /!\ &lt;/span&gt;


 :~# cat /home/loreleil/config.php
 &lt;?php
 // phpBB 3.0.x auto-generated configuration file
 // Do not change anything in this file!
 $dbms = 'mysqli';
 $dbhost = 'localhost';
 $dbport = '';
 $dbname = ''''phpBB_3_0_11'''';
 $dbuser = ''''user-phpBB'''';
 $dbpasswd = ''''votre_mot_de_pass_en_bêton'''';
 $table_prefix = 'phpbb_';
 $acm_type = 'file';
 $load_extensions = '';
 
 @define('PHPBB_INSTALLED', true);
 // @define('DEBUG', true);
 // @define('DEBUG_EXTRA', true);
 :~# 

* Déplacer ce dernier en tant que root et écraser le fichier /var/www/phpBB3/config.php ce dernier étant vide.

 # mv /home/user/config.php /var/www/phpBB3/config.php


[[Fichier:Télécharger la configuration 13 bis.png|500px]]


[[Fichier:Paramètres des e-mails 14 bis.png|500px]]


[[Fichier:Paramètres des e-mails 15 bis.png|500px]]

===renseigner le nom de domaine===


[[Fichier:Paramètres des e-mails 16 bis.png|500px]]


[[Fichier:Paramètres des e-mails 17 bis.png|500px]]

=Félicitations ! PhpBB3 est installé=


[[Fichier:Félicitations 18 bis.png|500px ]]


[[Fichier:Envoyer le rapport de statistiques 20 bis.png|500px]]


[[Fichier:Envoyer le rapport de statistiques 22 bis.png|500px]]

=Bienvenue dans phpBB=

[[Fichier:Bienvenue dans phpBB 23 bis.png|500px]]


[[Fichier:Bienvenue dans phpBB 24 bis.png|500px]]


[[Fichier:Bienvenue dans phpBB 25 bis.png|500px]]


* Facile, non ... ^¿^


=Source=


* [http://forums.phpbb-fr.com/documentation-phpbb3/sujet130127.html [Doc]]

* {{fr}} [http://forums.phpbb-fr.com/telechargement-maj-phpbb3/ Téléchargements et mises à jour]



[[Utilisateur:Loreleil|Loreleil]]

Moment privilégié, moment partagé ... '''. ^¿^ .'''

Amicalement, loreleil.

Je vous en serre cinq !


Loreleil 12 septembre 2012 à 15:34 (CEST)


&lt;br&gt;

[[Catégorie:Serveurs:Tutoriel]]
&lt;br&gt;</text>
      <sha1>4ss87js22x3ptwysvk9pv45lw7agfvx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4493</id>
      <parentid>4488</parentid>
      <timestamp>2012-09-19T12:14:02Z</timestamp>
      <contributor>
        <username>Loreleil</username>
        <id>129</id>
      </contributor>
      <minor/>
      <comment>/* modifications: ServerName */</comment>
      <text xml:space="preserve" bytes="8706">=Installation d'un forum phpBB=

==Prérequis==

* Ce tutoriel est destiné aux utilisateurs Linux, plus particulièrement Debian Squeeze dans le cas présent.

==Notes==

* Un bon nombre d'images serviront de support d'installation.
** Pour votre confort, ces images on été réduites (à 500 pixels max.).
** Deux clics à la suite, sur l'une d'elles, l'affichera en mode plein écran.

=Création de la base de données Mysql=

* Via la console.

 ~ # [http://www.debian-fr.org/mysql-ne-plus-taper-son-mot-de-pass-x-fois-t34738.html#p351926 mysql]
 Reading table information for completion of table and column names
 You can turn off this feature to get a quicker startup with -A
 
 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 10576
 Server version: 5.1.63-0+squeeze1-log (Debian)
 
 Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
 
 Oracle is a registered trademark of Oracle Corporation and/or its
 affiliates. Other names may be trademarks of their respective
 owners.
 
 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
 mysql&gt;

* Nommer cette base à votre guise, sous conditions:
** ne pas utiliser de caractère spéciaux.
** ne pas utiliser de caractère accentué
** ne pas utiliser de tiret '''-''' ni de point '''.'''
 mysql&gt; create database '''phpBB_3_0_11''';
 Query OK, 1 row affected (0.00 sec)
 
 mysql&gt;

[[Fichier:Créationn bdd 26 bis.png|500px]]

* Suppression d'une base, suite au(x) caractère(s)
** &lt;span style=&quot;color:#FF0000;&quot;&gt;''' /!\ Prenez garde quant à la sélection de cette dernière!!! La suppression sera irréversible /!\'''&lt;/span&gt;

 mysql&gt;
 mysql&gt; DROP DATABASE phpBB_;                                                                                               
 Query OK, 0 rows affected (0.00 sec) 
 
 mysql&gt; 


== Création de l'utilisateur de cette base==

 mysql&gt; grant all privileges on '''phpBB_3_0_11'''.* to &quot;'''user_phpBB'''&quot;@&quot;localhost&quot; identified by  ''''votre_mot_de_pass_en_bêton'''';
 Query OK, 0 rows affected (0.00 sec)
 mysql&gt;


* Suppression d'un utilisateur.
** Afficher les utilisateurs des bases.

 mysql&gt; 
 mysql&gt; SELECT user FROM mysql.user; 

 mysql&gt;                      
 mysql&gt; DROP user &quot;user_phpBB&quot;@&quot;localhost&quot;;                                
 Query OK, 0 rows affected (0.00 sec) 
                                           
 mysql&gt; 

[[Fichier:Suppression utilisateur de la base 29 bis.png|500px]]

* Recharger les privilèges et quitter proprement.

 mysql&gt;
 mysql&gt; flush privileges;
 Query OK, 0 rows affected (0.00 sec)
 mysql&gt;

 mysql&gt; quit;
 Bye
  ~ #

* Redémarrer mysql.

  ~ # /etc/init.d/mysql restart
 Stopping MySQL database server: mysqld.
 Starting MySQL database server: mysqld.
 Checking for corrupt, not cleanly closed and upgrade needing tables..
  ~ #

=Téléchargement et décompression=

 ~ # cd /opt/sources/telechargements
  /opt/sources/telechargements #

  /opt/sources/telechargements # wget -c http://garr.dl.sourceforge.net/project/phpbb-fr/phpBB3/phpBB%203.0.11%20Package/phpBB- 3.0.11_FR.zip
 ...
 /opt/sources/telechargements #


* l'option -d à pour effet d'extraire le fichier zip dans le répertoire /var/www/ et ne supprime pas l'archive zip. Si le répertoire de destination n'existe pas il est créé.

 /opt/sources/telechargements # unzip phpBB-3.0.11_FR.zip -d /var/www


=Création du Vhost apache2=

* Le forum sera accessible via http://&lt;span style=&quot;color:#FF0000;&quot;&gt;votre_domaine.com&lt;/span&gt;

 # touch /etc/apache2/sites-available/phpBB3 

 # nano /etc/apache2/sites-available/phpBB3

 &lt;VirtualHost *:80&gt;
         ServerName www.&lt;span style=&quot;color:#FF0000;&quot;&gt;votre_domaine.com&lt;/span&gt; 
         ServerName &lt;span style=&quot;color:#FF0000;&quot;&gt;votre_domaine.com&lt;/span&gt;
         ServerAlias phpBB3     
         RewriteCond %{HTTP_HOST} ^&lt;span style=&quot;color:#FF0000;&quot;&gt;votre_domaine.com&lt;/span&gt;$
         RewriteRule ^(.*)   http://www.&lt;span style=&quot;color:#FF0000;&quot;&gt;votre_domaine.com&lt;/span&gt;/$1  [QSA,L,R=301]         
         ServerAdmin webmaster@&lt;span style=&quot;color:#FF0000;&quot;&gt;votre_domaine.com&lt;/span&gt;                          
         DocumentRoot /var/www/phpBB3/
                               
         &lt;Directory /&gt; 
                 Options FollowSymLinks
                 AllowOverride all
         &lt;/Directory&gt; 
    
         &lt;Directory /var/www/phpBB3/&gt;
                 Options Indexes +FollowSymLinks MultiViews 
                 AllowOverride all
                 Order allow,deny
 #                allow from all
                 allow from 192.168.1.13, 2.x.x.x
         &lt;/Directory&gt; 
 
         include /etc/apache2/www.d/*.conf
         ErrorLog ${APACHE_LOG_DIR}/www-error.log
         # Possible values include: debug, info, notice, warn, error, crit,                 
         # alert, emerg.  
         LogLevel error
         CustomLog ${APACHE_LOG_DIR}/www-access.log combined               
 &lt;/VirtualHost&gt;

==Interdire l'accès public provisoirement==

Afin de pouvoir procéder aux diverses configurations/créations/modif etc ... une fois l'installation terminée

* On interdit et autorise uniquement:
** allow from all la ligne est commentée (accès public autorisé)
** allow from 192.168.1.13, 2.x.x.x on autorise uniquement l'ip locale et public (accès uniquement pour ...)

== Enregistrement du Vhost et relance d'apache2==

 # a2ensite phpBB3
 Enabling site phpBB3.
 Run '/etc/init.d/apache2 reload' to activate new configuration!
 #

 # /etc/init.d/apache2 reload
 Reloading web server config: apache2.
 #

= Lancer l'installation=

* taper simplement, dans la barre d'adresse de votre navigateur favoris http://votre_domaine.com qui aura pour résultat de lancer la page http://votre_domaine.com/install/index.php

== Le tout en images==

[[Fichier:Introduction 00.png|500px]]


[[Fichier:Bienvenue dans installation 01 bis.png|500px]]


[[Fichier:Compatibilité de installation 02 bis.png|500px]]


[[Fichier:Compatibilité de installation 03 bis.png|500px]]


[[Fichier:Compatibilité de installation 04 bis.png|500px]]


[[Fichier:Compatibilité de installation 05 bis.png|500px]]

=== nom de la base et d'utilisateur===


* Entrer les informations demandées.
** nom de la base
** nom de l'utilisateur

[[Fichier:Configuration de la base de données 07 bis.png|500px]]


[[Fichier:Connexion à la base de données 08 bis.png|500px]]

=== nom et mot de passe de l'administrateur===


[[Fichier:Configuration de l'administration 27 bis.png|500px]]


[[Fichier:Informations sur l'administrateur 28 bis.png|500px]]

=== Télécharger la configuration===

[[Fichier:Télécharger la configuration 12 bis.png|500px]]

==== '''Attention'''====

* Cliquer comment demander.
** Enregistrer ce dernier dans votre /home/user/config.php


&lt;span style=&quot;color:#FF0000;&quot;&gt; /!\ Ce sont là des informations relatives au compte administrateur /!\ &lt;/span&gt;


 :~# cat /home/loreleil/config.php
 &lt;?php
 // phpBB 3.0.x auto-generated configuration file
 // Do not change anything in this file!
 $dbms = 'mysqli';
 $dbhost = 'localhost';
 $dbport = '';
 $dbname = ''''phpBB_3_0_11'''';
 $dbuser = ''''user-phpBB'''';
 $dbpasswd = ''''votre_mot_de_pass_en_bêton'''';
 $table_prefix = 'phpbb_';
 $acm_type = 'file';
 $load_extensions = '';
 
 @define('PHPBB_INSTALLED', true);
 // @define('DEBUG', true);
 // @define('DEBUG_EXTRA', true);
 :~# 

* Déplacer ce dernier en tant que root et écraser le fichier /var/www/phpBB3/config.php ce dernier étant vide.

 # mv /home/user/config.php /var/www/phpBB3/config.php


[[Fichier:Télécharger la configuration 13 bis.png|500px]]


[[Fichier:Paramètres des e-mails 14 bis.png|500px]]


[[Fichier:Paramètres des e-mails 15 bis.png|500px]]

===renseigner le nom de domaine===


[[Fichier:Paramètres des e-mails 16 bis.png|500px]]


[[Fichier:Paramètres des e-mails 17 bis.png|500px]]

=Félicitations ! PhpBB3 est installé=


[[Fichier:Félicitations 18 bis.png|500px ]]


[[Fichier:Envoyer le rapport de statistiques 20 bis.png|500px]]


[[Fichier:Envoyer le rapport de statistiques 22 bis.png|500px]]

=Bienvenue dans phpBB=

[[Fichier:Bienvenue dans phpBB 23 bis.png|500px]]


[[Fichier:Bienvenue dans phpBB 24 bis.png|500px]]


[[Fichier:Bienvenue dans phpBB 25 bis.png|500px]]


* Facile, non ... ^¿^


=Source=


* [http://forums.phpbb-fr.com/documentation-phpbb3/sujet130127.html [Doc]]

* {{fr}} [http://forums.phpbb-fr.com/telechargement-maj-phpbb3/ Téléchargements et mises à jour]



[[Utilisateur:Loreleil|Loreleil]]

Moment privilégié, moment partagé ... '''. ^¿^ .'''

Amicalement, loreleil.

Je vous en serre cinq !


Loreleil 12 septembre 2012 à 15:34 (CEST)


&lt;br&gt;

[[Catégorie:Serveurs:Tutoriel]]
&lt;br&gt;</text>
      <sha1>333c3i6vk0kcfc9ah1dwhqbrox0y35w</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Installation squeeze chroot debootstrap</title>
    <ns>0</ns>
    <id>1006</id>
    <revision>
      <id>4217</id>
      <timestamp>2012-05-08T20:14:51Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>Page créée avec « Installation d'une Squeeze avec debootstrap et chroot  L'objectif est d'installer une Squeeze (sur une nouvelle partition) à partir d'une autre Debian (ici une autre Sque... »</comment>
      <text xml:space="preserve" bytes="15300">Installation d'une Squeeze avec debootstrap et chroot

L'objectif est d'installer une Squeeze (sur une nouvelle partition) à partir d'une autre Debian (ici une autre Squeeze, mais cette méthode fonctionnera aussi bien avec une autre version), sans avoir besoin de redémarrer ma machine une seule fois…

Avantage : rester dans mon environnement de travail pendant toute l'installation…

Parti-pris : utilisation de nano comme éditeur

== Pré-requis ==

Pré-requis : Installer debootstrap (chroot se trouve dans le paquet coreutils normalement déjà installé dans votre Debian).

 root@Janus:~# apt-get install debootstrap

Formatage de la partition qui va recevoir la Squeeze :

J'ai choisi de formater en ext4, vous pouvez choisir le système de fichiers de votre choix bien sûr.

La partition cible (ici /dev/sda4) devra aussi être adaptée à votre configuration.

 root@Janus:~# mkfs -V -t ext4 /dev/sda4

Création du répertoire qui va recevoir le système et montage de la partition fraîchement formatée dans ce nouveau répertoire.

J'ai choisi /var/chroot/squeeze_i386_sda4.

Un petit « ls » à la fin pour vérifier que la partition est bien montée.

 root@Janus:~# mkdir -p /var/chroot/squeeze_i386_sda4
 root@Janus:~# mount /dev/sda4 /var/chroot/squeeze_i386_sda4
 root@Janus:~# cd /var/chroot/squeeze_i386_sda4
 root@Janus:/var/chroot/squeeze_i386_sda4# ls
 lost+found

== Installation avec debootstrap ==

Installation de la Squeeze avec debootstrap (j'ai choisi une Squeeze i386, rien ne vous empêche de choisir une Lenny amd64 ou bien même une Sid...)

Astuces :

_Vous pouvez utiliser un dépôt local pour cette installation. Détails ici [https://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23065 sur le forum.debian-fr.org]

_Si vous avez une mauvaise connexion, mais disposez d'un CD d'installation, vous pouvez remplacer l'adresse du dépôt par file:/cdrom/debian/

_En ajoutant l'option --variant=minbase à debootstrap, vous installerez uniquement le strict minimum de paquets (pas d'aptitude, de vim, d'exim4, etc.).

 root@Janus:/var/chroot/squeeze_i386_sda4# debootstrap --arch i386 squeeze /var/chroot/squeeze_i386_sda4/ http://ftp2.fr.debian.org/debian/
 I: Retrieving Release
 I: Retrieving Packages
 I: Validating Packages
 I: Resolving dependencies of required packages...
 I: Resolving dependencies of base packages...
 I: Found additional required dependencies: insserv libbz2-1.0 libdb4.8 libslang2 
 I: Found additional base dependencies: libnfnetlink0 libsqlite3-0 
 I: Checking component main on http://ftp2.fr.debian.org/debian...
 I: Retrieving/Validating un tas de paquets
 I: Chosen extractor for .deb packages: dpkg-deb
 I: Extracting un tas de paquets...
 I: Installing core packages...
 I: Unpacking required packages...
 I: Unpacking un tas de paquets...
 I: Configuring required packages...
 I: Configuring un tas de paquets...
 I: Unpacking the base system...
 I: Unpacking un tas de paquets...
 I: Configuring the base system...
 I: Configuring un tas de paquets...
 I: Base system installed successfully.

Si tout s'est bien passé, un &quot;ls&quot; vous retournera la toute nouvelle arborescence :
 root@Janus:/var/chroot/squeeze_i386_sda4# ls
 bin boot dev etc home lib lost+found media mnt opt proc root sbin selinux srv sys tmp usr var

À ce niveau, votre Squeeze est installée, mais elle n'est pas pleinement fonctionnelle ni « autonome ». Vous ne pourrez pas démarrer dessus…

== Préparation du chroot ==

Il faut maintenant préparer le chroot. Trois répertoires sont importants pour que cela fonctionne convenablement : /tmp, /dev et /proc.

Vous devez éditer votre fstab pour que ces répertoires soient montés (et liés - « bind/rbind ») automatiquement dans votre répertoire chroot.

 root@Janus:/var/chroot/squeeze_i386_sda4# nano /etc/fstab 

Ajoutez-y :

 ## chroot Squeeze i386 sda4
 /tmp  /var/chroot/squeeze_i386_sda4/tmp  none bind  0 0
 /dev  /var/chroot/squeeze_i386_sda4/dev  none rbind 0 0
 /proc /var/chroot/squeeze_i386_sda4/proc none bind  0 0

Ctrl+O (enregistrer) Ctrl+X (Quitter)

 root@Janus:/var/chroot/squeeze_i386_sda4# mount -a

(cette commande monte tout ce qui est dans votre fstab)

Pour « normaliser les comptes et groupes » de votre nouvelle Squeeze (que les utilisateurs et groupes aient les mêmes identifiants dans votre système &quot;hôte&quot; et dans votre chroot) tapez les commandes suivantes :

 root@Janus:/var/chroot/squeeze_i386_sda4# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/passwd &gt;&gt; /var/chroot/squeeze_i386_sda4/etc/passwd
 root@Janus:/var/chroot/squeeze_i386_sda4# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/group &gt;&gt; /var/chroot/squeeze_i386_sda4/etc/group

Vous allez maintenant entrer dans votre environnement chroot (tadaa !) :

 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4
 root@Janus:/#

== Finalisation de l'installation et réglages de la Squeeze ==

Vous êtes maintenant dans votre nouvelle Squeeze, mais ce n'est pas terminé, votre système est incomplet, impossible de démarrer dessus…

=== &quot;locales&quot; ===

Nous allons maintenant mettre en français (ou ce que vous voulez…), configurer la localisation, et surtout… régler l'heure. L'heure est très importante. Si vous démarrez sur ce nouveau système avec une mauvaise heure (dans le futur par rapport au système sur lequel vous êtes), le prochain démarrage vous laissera un goût amer, vous serez obligé de faire un fsck…

En effet, au montage des disques le système inscrit l'heure (au tout début du disque). Si cette heure est « dans le futur », au démarrage suivant (sur une autre installation), il ne voudra pas démarrer et exigera une vérification de disque…

 root@Janus:/# apt-get update
 root@Janus:/# apt-get install locales
 root@Janus:/# dpkg-reconfigure locales
 root@Janus:/# dpkg-reconfigure tzdata
 root@Janus:/# hwclock --systohc --utc

Il faut modifier le fichier /etc/default/rcS pour forcer le système à se mettre en heure locale…

Explications sur [https://forum.debian-fr.org/viewtopic.php?p=210286#p210286 le forum.debian-fr.org]

 root@Janus:/# nano /etc/default/rcS

Il faut modifier la ligne utc : UTC=no

 root@Janus:/# apt-get install ntpdate
 root@Janus:/# ntpdate ntp.metas.ch

=== Le sources.list ===

Nous allons maintenant compléter nos dépôts

J'ai complété avec quelques dépôts tiers. Vous pourriez tout aussi bien ne pas le faire, mais c'est sympa d'avoir un peu de choix, non ? J'ai ajouté le dépôt « backports » pour avoir accès à un noyau récent, vous n'êtes, là encore, pas obligé de le faire.

 root@Janus:/# nano /etc/apt/sources.list
 deb http://ftp2.fr.debian.org/debian/ squeeze main
 ## Mises-à-jour de sécurité
 deb http://security.debian.org/ squeeze/updates main
 deb http://ftp2.fr.debian.org/debian/ squeeze-updates main
 ## Rétroportages - http://www.backports.org
 deb http://debian.advalem.net/debian-backports/ squeeze-backports main
 ## Debian Multimedia - http://www.debian-multimedia.org/
 deb http://debian-multimedia.tryphon.eu/ squeeze main

Si vous décidez d'ajouter les dépôts Multimedia, il peut être intéressant de créer un fichier preferences pour leur attribuer une priorité moins importante que les dépôts officiels de Debian. De cette façon vous éviterez des problèmes de compatibilité entre versions.

 root@Janus:/# nano /etc/apt/preferences
 Package: *
 Pin: release o=Unofficial Multimedia Packages
 Pin-Priority: 400

Mettons à jour :

 root@Janus:/# apt-get update
Vous obtiendrez probablement cette erreur :
 W: Erreur de GPG : http://debian-multimedia.tryphon.eu squeeze Release : Les signatures suivantes n'ont pas pu être vérifiées
 car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907
Dans ce cas la solution est simple :
 root@Janus:/# apt-get install debian-multimedia-keyring &amp;&amp; apt-get update
 ATTENTION : les paquets suivants n'ont pas été authentifiés.
   debian-multimedia-keyring
 Faut-il installer ces paquets sans vérification (o/N) ? o
 root@Janus:/# apt-get upgrade

=== Clavier === 

Configurons maintenant le clavier

 root@Janus:/# apt-get install console-data

Je ne sais pour quelle raison il nous met d'office le clavier mac-usb-fr… Dans le chroot il ne doit pas détecter autre chose…

 Looking for keymap to install:
 mac-usb-fr

Rectifions :

 root@Janus:/# dpkg-reconfigure -plow console-data
 (option choisir un codage clavier dans la liste complète) - pc / azerty / French / Same as X11 (latin9) / Standard
 Looking for keymap to install:
 fr-latin9 (cette fois-ci c'est bon)
 
=== hostname et fstab ===

 root@Janus:/# exit

Nous sommes sortis du chroot, quelques fichiers à récupérer… Pour avoir un bon hostname, le réseau, le montage correct des disques…

 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/hosts /etc/hostname /etc/resolv.conf /var/chroot/squeeze_i386_sda4/etc/
 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/network/interfaces /var/chroot/squeeze_i386_sda4/etc/network/
 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/fstab /var/chroot/squeeze_i386_sda4/etc/
 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4/

+ Réglage du fsab

 root@Janus:/# blkid (cette commande permet de récupérer le UUID de vos disques pour votre nouveau fstab…
 Ne vous faites pas prendre, le formatage change l'UUID…)
 /dev/sda1: UUID=&quot;83953ec9-f173-4bde-84b4-77cfa0ad5d95&quot; TYPE=&quot;ext4&quot; 
 /dev/sda2: UUID=&quot;cfe0a0d6-3280-4104-878d-efede6cce024&quot; TYPE=&quot;swap&quot; 
 /dev/sda3: UUID=&quot;57a6f7ec-8de6-4f47-a244-f171c6a41ab3&quot; TYPE=&quot;ext4&quot; 
 /dev/sda4: UUID=&quot;34bf3784-2c97-48e3-92ce-025e3cd6344c&quot; TYPE=&quot;ext4&quot; 

 root@Janus:/# nano /etc/fstab (à rectifier en fonction de votre configuration)
 proc                                      /proc           proc        defaults          0 0
 UUID=34bf3784-2c97-48e3-92ce-025e3cd6344c /               ext4        errors=remount-ro 0 1
 UUID=57a6f7ec-8de6-4f47-a244-f171c6a41ab3 /home           ext4        defaults          0 2
 UUID=cfe0a0d6-3280-4104-878d-efede6cce024 none            swap        sw                0 0
 /dev/scd0                                 /media/cdrom0   udf,iso9660 user,noauto       0 0
 /dev/scd1                                 /media/cdrom1   udf,iso9660 user,noauto       0 0
 /dev/fd0                                  /media/floppy0  auto        rw,user,noauto    0 0

Création des répertoire de montage des disques de la nouvelle machine : (en fonction de votre configuration et de vos choix...)

 root@Janus:/# mkdir /media/cdrom0 /media/cdrom1 /media/floppy0

=== L'environnement graphique ===

Maintenant ? Un environnement graphique ! (J'ai choisi Xfce, vous faites comme vous voulez… [[Environnement graphique::Gnome]], [[Environnement graphique::Kde]], aucun…

/!\ N'oubliez pas d'installer aussi un gestionnaire de connexion !

 root@Janus:/# apt-get install xfce4 gdm

=== Le noyau et Grub2 ===

Installons un noyau… Ce serait bête d'oublier  :wink: 

 root@Janus:/# apt-cache search linux-image (choisissez dans la liste qu'il vous propose,
 celui que je cite n'est qu'un exemple que vous n'êtes pas forcés de suivre…)
 (…)
 linux-image-3.2.0-0.bpo.2-686-pae - Linux 3.2 for modern PCs
 (…)

Ici il faut récupérer votre kernel-img.conf qui permette de convenablement lancer initramfs à l'installation du nouveau noyau dans le chroot.

Ce fichier n'existe pas dans le système créé par debootstrap.

La ligne intéressante : do_initrd = yes

 root@Janus:/# exit
 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/kernel-img.conf /var/chroot/squeeze_i386_sda4/etc/kernel-img.conf
 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4
 root@Janus:/# apt-get install -t squeeze-backports linux-image-3.2.0-0.bpo.2-686-pae
 root@Janus:/# exit

Maintenant... Modifions notre grub pour que ce nouveau système soit opérationnel :
/!\ Attention, je suis sous Grub2. Si vous êtes sous Grub &quot;legacy&quot; la commande est différente évidemment…

 root@Janus:/var/chroot/squeeze_i386_sda4# apt-get install os-prober
 root@Janus:/var/chroot/squeeze_i386_sda4# update-grub
 (…)
 Found Debian GNU/Linux (6.0.4) on /dev/sda4
 (…)


=== Divers - mots de passe ===

Derniers &quot;fignolages&quot;… J'installe un navigateur Web (Iceweasel), et GParted.

Vous pouvez bien sûr adpater cette commande pour installer vos logiciels habituels ! 

 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4
 root@Janus:/# apt-get install gparted iceweasel iceweasel-l10n-fr

Enfin, les mots de passe...

Debootstrap installe un système sans mots de passe… Si vous redémarrez maintenant vous vous connecterez en root dans votre nouveau système sans montrer patte blanche… Un peu gênant, non ?

 root@Janus:/# nano /etc/passwd
 (…)
 legoth:x:1000:1000:Le Gonidec,,,:/home/legoth:/bin/sh
 (…)

Vous enlevez le x pour que cela ressemble à ça :

 legoth::1000:1000:Le Gonidec,,,:/home/legoth:/bin/sh

Ceci afin de pouvoir connecter vos utilisateurs &quot;normaux&quot;. Il faut maintenant créer les mots de passe.

 root@Janus:/# passwd
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 root@Janus:/# su legoth -c passwd
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 root@Janus:/# exit
 root@Janus:/var/chroot/squeeze_i386_sda4# reboot

Voilà : vous disposez d'une toute fraîche installation, fonctionnelle !

== Taskel ==

Pour avoir un système un peu plus complet, en fonction de vos besoins, vous pouvez utiliser l'utilitaire tasksel.

La commande suivante détaille les &quot;tâches&quot; que tasksel peut réaliser pour vous… (vous remarquerez que ce sont les mêmes choix que dans une installation &quot;classique&quot; qui sont proposés)

 root@Janus:/# tasksel --list-tasks
 u desktop	Graphical desktop environment
 u web-server	Web server
 u print-server	Print server
 u dns-server	DNS server
 u file-server	File server
 u mail-server	Mail server
 u database-server	SQL database
 u ssh-server	SSH server
 u laptop	Laptop
 u manual	manual package selection

Chaque &quot;tâche&quot; installe un ensemble de paquets utiles pour certaines utilisations. &quot;u&quot; pour non installé. Une tâche installée commence par &quot;i&quot;.

Il ne vous reste plus qu'a taper dans la console :

 root@Janus:/# tasksel --task-packages nom_tache

Il existe une autre tâche, qui n'est pas dans la liste ci-dessus :
 tasksel install standard
Cette commande installe un ensemble de paquets &quot;standards&quot;. Je vous renvoie au [[https://www.debian-facile.org/wiki/manuel:tasksel Wiki de debian-facile]] pour plus de détails.

== Versions des programmes utilisés dans ce tutoriel ==

bash		4.1-3

apt		0.8.10.3+squeeze1

e2fsprogs	1.41.12-4stable1

coreutils	8.5-1

mount		2.17.2-9

debootstrap	1.0.26+squeeze1

nano		2.2.4-1

grep		2.6.3-3

os-prober	1.42

grub-pc		1.98+20100804-14+squeeze1

sysvinit	2.88dsf-13.1


--[[Utilisateur:Vv222|Vv222]] 8 mai 2012 à 22:00 (CEST)

[https://www.isalo.org/wiki.debian-fr/index.php?title=Installation_lenny_chroot_debootstrap source]

[https://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 source]

[[Catégorie:Installation]]</text>
      <sha1>4xpla4tzeln558yhusqzkjjap670wan</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4226</id>
      <parentid>4217</parentid>
      <timestamp>2012-05-11T09:47:22Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>Renommage du paquet debian-multimedia-keyring &gt; deb-multimedia-keyring</comment>
      <text xml:space="preserve" bytes="15294">Installation d'une Squeeze avec debootstrap et chroot

L'objectif est d'installer une Squeeze (sur une nouvelle partition) à partir d'une autre Debian (ici une autre Squeeze, mais cette méthode fonctionnera aussi bien avec une autre version), sans avoir besoin de redémarrer ma machine une seule fois…

Avantage : rester dans mon environnement de travail pendant toute l'installation…

Parti-pris : utilisation de nano comme éditeur

== Pré-requis ==

Pré-requis : Installer debootstrap (chroot se trouve dans le paquet coreutils normalement déjà installé dans votre Debian).

 root@Janus:~# apt-get install debootstrap

Formatage de la partition qui va recevoir la Squeeze :

J'ai choisi de formater en ext4, vous pouvez choisir le système de fichiers de votre choix bien sûr.

La partition cible (ici /dev/sda4) devra aussi être adaptée à votre configuration.

 root@Janus:~# mkfs -V -t ext4 /dev/sda4

Création du répertoire qui va recevoir le système et montage de la partition fraîchement formatée dans ce nouveau répertoire.

J'ai choisi /var/chroot/squeeze_i386_sda4.

Un petit « ls » à la fin pour vérifier que la partition est bien montée.

 root@Janus:~# mkdir -p /var/chroot/squeeze_i386_sda4
 root@Janus:~# mount /dev/sda4 /var/chroot/squeeze_i386_sda4
 root@Janus:~# cd /var/chroot/squeeze_i386_sda4
 root@Janus:/var/chroot/squeeze_i386_sda4# ls
 lost+found

== Installation avec debootstrap ==

Installation de la Squeeze avec debootstrap (j'ai choisi une Squeeze i386, rien ne vous empêche de choisir une Lenny amd64 ou bien même une Sid...)

Astuces :

_Vous pouvez utiliser un dépôt local pour cette installation. Détails ici [https://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23065 sur le forum.debian-fr.org]

_Si vous avez une mauvaise connexion, mais disposez d'un CD d'installation, vous pouvez remplacer l'adresse du dépôt par file:/cdrom/debian/

_En ajoutant l'option --variant=minbase à debootstrap, vous installerez uniquement le strict minimum de paquets (pas d'aptitude, de vim, d'exim4, etc.).

 root@Janus:/var/chroot/squeeze_i386_sda4# debootstrap --arch i386 squeeze /var/chroot/squeeze_i386_sda4/ http://ftp2.fr.debian.org/debian/
 I: Retrieving Release
 I: Retrieving Packages
 I: Validating Packages
 I: Resolving dependencies of required packages...
 I: Resolving dependencies of base packages...
 I: Found additional required dependencies: insserv libbz2-1.0 libdb4.8 libslang2 
 I: Found additional base dependencies: libnfnetlink0 libsqlite3-0 
 I: Checking component main on http://ftp2.fr.debian.org/debian...
 I: Retrieving/Validating un tas de paquets
 I: Chosen extractor for .deb packages: dpkg-deb
 I: Extracting un tas de paquets...
 I: Installing core packages...
 I: Unpacking required packages...
 I: Unpacking un tas de paquets...
 I: Configuring required packages...
 I: Configuring un tas de paquets...
 I: Unpacking the base system...
 I: Unpacking un tas de paquets...
 I: Configuring the base system...
 I: Configuring un tas de paquets...
 I: Base system installed successfully.

Si tout s'est bien passé, un &quot;ls&quot; vous retournera la toute nouvelle arborescence :
 root@Janus:/var/chroot/squeeze_i386_sda4# ls
 bin boot dev etc home lib lost+found media mnt opt proc root sbin selinux srv sys tmp usr var

À ce niveau, votre Squeeze est installée, mais elle n'est pas pleinement fonctionnelle ni « autonome ». Vous ne pourrez pas démarrer dessus…

== Préparation du chroot ==

Il faut maintenant préparer le chroot. Trois répertoires sont importants pour que cela fonctionne convenablement : /tmp, /dev et /proc.

Vous devez éditer votre fstab pour que ces répertoires soient montés (et liés - « bind/rbind ») automatiquement dans votre répertoire chroot.

 root@Janus:/var/chroot/squeeze_i386_sda4# nano /etc/fstab 

Ajoutez-y :

 ## chroot Squeeze i386 sda4
 /tmp  /var/chroot/squeeze_i386_sda4/tmp  none bind  0 0
 /dev  /var/chroot/squeeze_i386_sda4/dev  none rbind 0 0
 /proc /var/chroot/squeeze_i386_sda4/proc none bind  0 0

Ctrl+O (enregistrer) Ctrl+X (Quitter)

 root@Janus:/var/chroot/squeeze_i386_sda4# mount -a

(cette commande monte tout ce qui est dans votre fstab)

Pour « normaliser les comptes et groupes » de votre nouvelle Squeeze (que les utilisateurs et groupes aient les mêmes identifiants dans votre système &quot;hôte&quot; et dans votre chroot) tapez les commandes suivantes :

 root@Janus:/var/chroot/squeeze_i386_sda4# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/passwd &gt;&gt; /var/chroot/squeeze_i386_sda4/etc/passwd
 root@Janus:/var/chroot/squeeze_i386_sda4# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/group &gt;&gt; /var/chroot/squeeze_i386_sda4/etc/group

Vous allez maintenant entrer dans votre environnement chroot (tadaa !) :

 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4
 root@Janus:/#

== Finalisation de l'installation et réglages de la Squeeze ==

Vous êtes maintenant dans votre nouvelle Squeeze, mais ce n'est pas terminé, votre système est incomplet, impossible de démarrer dessus…

=== &quot;locales&quot; ===

Nous allons maintenant mettre en français (ou ce que vous voulez…), configurer la localisation, et surtout… régler l'heure. L'heure est très importante. Si vous démarrez sur ce nouveau système avec une mauvaise heure (dans le futur par rapport au système sur lequel vous êtes), le prochain démarrage vous laissera un goût amer, vous serez obligé de faire un fsck…

En effet, au montage des disques le système inscrit l'heure (au tout début du disque). Si cette heure est « dans le futur », au démarrage suivant (sur une autre installation), il ne voudra pas démarrer et exigera une vérification de disque…

 root@Janus:/# apt-get update
 root@Janus:/# apt-get install locales
 root@Janus:/# dpkg-reconfigure locales
 root@Janus:/# dpkg-reconfigure tzdata
 root@Janus:/# hwclock --systohc --utc

Il faut modifier le fichier /etc/default/rcS pour forcer le système à se mettre en heure locale…

Explications sur [https://forum.debian-fr.org/viewtopic.php?p=210286#p210286 le forum.debian-fr.org]

 root@Janus:/# nano /etc/default/rcS

Il faut modifier la ligne utc : UTC=no

 root@Janus:/# apt-get install ntpdate
 root@Janus:/# ntpdate ntp.metas.ch

=== Le sources.list ===

Nous allons maintenant compléter nos dépôts

J'ai complété avec quelques dépôts tiers. Vous pourriez tout aussi bien ne pas le faire, mais c'est sympa d'avoir un peu de choix, non ? J'ai ajouté le dépôt « backports » pour avoir accès à un noyau récent, vous n'êtes, là encore, pas obligé de le faire.

 root@Janus:/# nano /etc/apt/sources.list
 deb http://ftp2.fr.debian.org/debian/ squeeze main
 ## Mises-à-jour de sécurité
 deb http://security.debian.org/ squeeze/updates main
 deb http://ftp2.fr.debian.org/debian/ squeeze-updates main
 ## Rétroportages - http://www.backports.org
 deb http://debian.advalem.net/debian-backports/ squeeze-backports main
 ## Debian Multimedia - http://www.debian-multimedia.org/
 deb http://debian-multimedia.tryphon.eu/ squeeze main

Si vous décidez d'ajouter les dépôts Multimedia, il peut être intéressant de créer un fichier preferences pour leur attribuer une priorité moins importante que les dépôts officiels de Debian. De cette façon vous éviterez des problèmes de compatibilité entre versions.

 root@Janus:/# nano /etc/apt/preferences
 Package: *
 Pin: release o=Unofficial Multimedia Packages
 Pin-Priority: 400

Mettons à jour :

 root@Janus:/# apt-get update
Vous obtiendrez probablement cette erreur :
 W: Erreur de GPG : http://debian-multimedia.tryphon.eu squeeze Release : Les signatures suivantes n'ont pas pu être vérifiées
 car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907
Dans ce cas la solution est simple :
 root@Janus:/# apt-get install deb-multimedia-keyring &amp;&amp; apt-get update
 ATTENTION : les paquets suivants n'ont pas été authentifiés.
   deb-multimedia-keyring
 Faut-il installer ces paquets sans vérification (o/N) ? o
 root@Janus:/# apt-get upgrade

=== Clavier === 

Configurons maintenant le clavier

 root@Janus:/# apt-get install console-data

Je ne sais pour quelle raison il nous met d'office le clavier mac-usb-fr… Dans le chroot il ne doit pas détecter autre chose…

 Looking for keymap to install:
 mac-usb-fr

Rectifions :

 root@Janus:/# dpkg-reconfigure -plow console-data
 (option choisir un codage clavier dans la liste complète) - pc / azerty / French / Same as X11 (latin9) / Standard
 Looking for keymap to install:
 fr-latin9 (cette fois-ci c'est bon)
 
=== hostname et fstab ===

 root@Janus:/# exit

Nous sommes sortis du chroot, quelques fichiers à récupérer… Pour avoir un bon hostname, le réseau, le montage correct des disques…

 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/hosts /etc/hostname /etc/resolv.conf /var/chroot/squeeze_i386_sda4/etc/
 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/network/interfaces /var/chroot/squeeze_i386_sda4/etc/network/
 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/fstab /var/chroot/squeeze_i386_sda4/etc/
 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4/

+ Réglage du fsab

 root@Janus:/# blkid (cette commande permet de récupérer le UUID de vos disques pour votre nouveau fstab…
 Ne vous faites pas prendre, le formatage change l'UUID…)
 /dev/sda1: UUID=&quot;83953ec9-f173-4bde-84b4-77cfa0ad5d95&quot; TYPE=&quot;ext4&quot; 
 /dev/sda2: UUID=&quot;cfe0a0d6-3280-4104-878d-efede6cce024&quot; TYPE=&quot;swap&quot; 
 /dev/sda3: UUID=&quot;57a6f7ec-8de6-4f47-a244-f171c6a41ab3&quot; TYPE=&quot;ext4&quot; 
 /dev/sda4: UUID=&quot;34bf3784-2c97-48e3-92ce-025e3cd6344c&quot; TYPE=&quot;ext4&quot; 

 root@Janus:/# nano /etc/fstab (à rectifier en fonction de votre configuration)
 proc                                      /proc           proc        defaults          0 0
 UUID=34bf3784-2c97-48e3-92ce-025e3cd6344c /               ext4        errors=remount-ro 0 1
 UUID=57a6f7ec-8de6-4f47-a244-f171c6a41ab3 /home           ext4        defaults          0 2
 UUID=cfe0a0d6-3280-4104-878d-efede6cce024 none            swap        sw                0 0
 /dev/scd0                                 /media/cdrom0   udf,iso9660 user,noauto       0 0
 /dev/scd1                                 /media/cdrom1   udf,iso9660 user,noauto       0 0
 /dev/fd0                                  /media/floppy0  auto        rw,user,noauto    0 0

Création des répertoire de montage des disques de la nouvelle machine : (en fonction de votre configuration et de vos choix...)

 root@Janus:/# mkdir /media/cdrom0 /media/cdrom1 /media/floppy0

=== L'environnement graphique ===

Maintenant ? Un environnement graphique ! (J'ai choisi Xfce, vous faites comme vous voulez… [[Environnement graphique::Gnome]], [[Environnement graphique::Kde]], aucun…

/!\ N'oubliez pas d'installer aussi un gestionnaire de connexion !

 root@Janus:/# apt-get install xfce4 gdm

=== Le noyau et Grub2 ===

Installons un noyau… Ce serait bête d'oublier  :wink: 

 root@Janus:/# apt-cache search linux-image (choisissez dans la liste qu'il vous propose,
 celui que je cite n'est qu'un exemple que vous n'êtes pas forcés de suivre…)
 (…)
 linux-image-3.2.0-0.bpo.2-686-pae - Linux 3.2 for modern PCs
 (…)

Ici il faut récupérer votre kernel-img.conf qui permette de convenablement lancer initramfs à l'installation du nouveau noyau dans le chroot.

Ce fichier n'existe pas dans le système créé par debootstrap.

La ligne intéressante : do_initrd = yes

 root@Janus:/# exit
 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/kernel-img.conf /var/chroot/squeeze_i386_sda4/etc/kernel-img.conf
 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4
 root@Janus:/# apt-get install -t squeeze-backports linux-image-3.2.0-0.bpo.2-686-pae
 root@Janus:/# exit

Maintenant... Modifions notre grub pour que ce nouveau système soit opérationnel :
/!\ Attention, je suis sous Grub2. Si vous êtes sous Grub &quot;legacy&quot; la commande est différente évidemment…

 root@Janus:/var/chroot/squeeze_i386_sda4# apt-get install os-prober
 root@Janus:/var/chroot/squeeze_i386_sda4# update-grub
 (…)
 Found Debian GNU/Linux (6.0.4) on /dev/sda4
 (…)


=== Divers - mots de passe ===

Derniers &quot;fignolages&quot;… J'installe un navigateur Web (Iceweasel), et GParted.

Vous pouvez bien sûr adpater cette commande pour installer vos logiciels habituels ! 

 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4
 root@Janus:/# apt-get install gparted iceweasel iceweasel-l10n-fr

Enfin, les mots de passe...

Debootstrap installe un système sans mots de passe… Si vous redémarrez maintenant vous vous connecterez en root dans votre nouveau système sans montrer patte blanche… Un peu gênant, non ?

 root@Janus:/# nano /etc/passwd
 (…)
 legoth:x:1000:1000:Le Gonidec,,,:/home/legoth:/bin/sh
 (…)

Vous enlevez le x pour que cela ressemble à ça :

 legoth::1000:1000:Le Gonidec,,,:/home/legoth:/bin/sh

Ceci afin de pouvoir connecter vos utilisateurs &quot;normaux&quot;. Il faut maintenant créer les mots de passe.

 root@Janus:/# passwd
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 root@Janus:/# su legoth -c passwd
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 root@Janus:/# exit
 root@Janus:/var/chroot/squeeze_i386_sda4# reboot

Voilà : vous disposez d'une toute fraîche installation, fonctionnelle !

== Taskel ==

Pour avoir un système un peu plus complet, en fonction de vos besoins, vous pouvez utiliser l'utilitaire tasksel.

La commande suivante détaille les &quot;tâches&quot; que tasksel peut réaliser pour vous… (vous remarquerez que ce sont les mêmes choix que dans une installation &quot;classique&quot; qui sont proposés)

 root@Janus:/# tasksel --list-tasks
 u desktop	Graphical desktop environment
 u web-server	Web server
 u print-server	Print server
 u dns-server	DNS server
 u file-server	File server
 u mail-server	Mail server
 u database-server	SQL database
 u ssh-server	SSH server
 u laptop	Laptop
 u manual	manual package selection

Chaque &quot;tâche&quot; installe un ensemble de paquets utiles pour certaines utilisations. &quot;u&quot; pour non installé. Une tâche installée commence par &quot;i&quot;.

Il ne vous reste plus qu'a taper dans la console :

 root@Janus:/# tasksel --task-packages nom_tache

Il existe une autre tâche, qui n'est pas dans la liste ci-dessus :
 tasksel install standard
Cette commande installe un ensemble de paquets &quot;standards&quot;. Je vous renvoie au [[https://www.debian-facile.org/wiki/manuel:tasksel Wiki de debian-facile]] pour plus de détails.

== Versions des programmes utilisés dans ce tutoriel ==

bash		4.1-3

apt		0.8.10.3+squeeze1

e2fsprogs	1.41.12-4stable1

coreutils	8.5-1

mount		2.17.2-9

debootstrap	1.0.26+squeeze1

nano		2.2.4-1

grep		2.6.3-3

os-prober	1.42

grub-pc		1.98+20100804-14+squeeze1

sysvinit	2.88dsf-13.1


--[[Utilisateur:Vv222|Vv222]] 8 mai 2012 à 22:00 (CEST)

[https://www.isalo.org/wiki.debian-fr/index.php?title=Installation_lenny_chroot_debootstrap source]

[https://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 source]

[[Catégorie:Installation]]</text>
      <sha1>38ox8wfatda11vduqhs36sq2rntitgp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4227</id>
      <parentid>4226</parentid>
      <timestamp>2012-05-11T09:49:36Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>Ajout d'une nouvelle source</comment>
      <text xml:space="preserve" bytes="15346">Installation d'une Squeeze avec debootstrap et chroot

L'objectif est d'installer une Squeeze (sur une nouvelle partition) à partir d'une autre Debian (ici une autre Squeeze, mais cette méthode fonctionnera aussi bien avec une autre version), sans avoir besoin de redémarrer ma machine une seule fois…

Avantage : rester dans mon environnement de travail pendant toute l'installation…

Parti-pris : utilisation de nano comme éditeur

== Pré-requis ==

Pré-requis : Installer debootstrap (chroot se trouve dans le paquet coreutils normalement déjà installé dans votre Debian).

 root@Janus:~# apt-get install debootstrap

Formatage de la partition qui va recevoir la Squeeze :

J'ai choisi de formater en ext4, vous pouvez choisir le système de fichiers de votre choix bien sûr.

La partition cible (ici /dev/sda4) devra aussi être adaptée à votre configuration.

 root@Janus:~# mkfs -V -t ext4 /dev/sda4

Création du répertoire qui va recevoir le système et montage de la partition fraîchement formatée dans ce nouveau répertoire.

J'ai choisi /var/chroot/squeeze_i386_sda4.

Un petit « ls » à la fin pour vérifier que la partition est bien montée.

 root@Janus:~# mkdir -p /var/chroot/squeeze_i386_sda4
 root@Janus:~# mount /dev/sda4 /var/chroot/squeeze_i386_sda4
 root@Janus:~# cd /var/chroot/squeeze_i386_sda4
 root@Janus:/var/chroot/squeeze_i386_sda4# ls
 lost+found

== Installation avec debootstrap ==

Installation de la Squeeze avec debootstrap (j'ai choisi une Squeeze i386, rien ne vous empêche de choisir une Lenny amd64 ou bien même une Sid...)

Astuces :

_Vous pouvez utiliser un dépôt local pour cette installation. Détails ici [https://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23065 sur le forum.debian-fr.org]

_Si vous avez une mauvaise connexion, mais disposez d'un CD d'installation, vous pouvez remplacer l'adresse du dépôt par file:/cdrom/debian/

_En ajoutant l'option --variant=minbase à debootstrap, vous installerez uniquement le strict minimum de paquets (pas d'aptitude, de vim, d'exim4, etc.).

 root@Janus:/var/chroot/squeeze_i386_sda4# debootstrap --arch i386 squeeze /var/chroot/squeeze_i386_sda4/ http://ftp2.fr.debian.org/debian/
 I: Retrieving Release
 I: Retrieving Packages
 I: Validating Packages
 I: Resolving dependencies of required packages...
 I: Resolving dependencies of base packages...
 I: Found additional required dependencies: insserv libbz2-1.0 libdb4.8 libslang2 
 I: Found additional base dependencies: libnfnetlink0 libsqlite3-0 
 I: Checking component main on http://ftp2.fr.debian.org/debian...
 I: Retrieving/Validating un tas de paquets
 I: Chosen extractor for .deb packages: dpkg-deb
 I: Extracting un tas de paquets...
 I: Installing core packages...
 I: Unpacking required packages...
 I: Unpacking un tas de paquets...
 I: Configuring required packages...
 I: Configuring un tas de paquets...
 I: Unpacking the base system...
 I: Unpacking un tas de paquets...
 I: Configuring the base system...
 I: Configuring un tas de paquets...
 I: Base system installed successfully.

Si tout s'est bien passé, un &quot;ls&quot; vous retournera la toute nouvelle arborescence :
 root@Janus:/var/chroot/squeeze_i386_sda4# ls
 bin boot dev etc home lib lost+found media mnt opt proc root sbin selinux srv sys tmp usr var

À ce niveau, votre Squeeze est installée, mais elle n'est pas pleinement fonctionnelle ni « autonome ». Vous ne pourrez pas démarrer dessus…

== Préparation du chroot ==

Il faut maintenant préparer le chroot. Trois répertoires sont importants pour que cela fonctionne convenablement : /tmp, /dev et /proc.

Vous devez éditer votre fstab pour que ces répertoires soient montés (et liés - « bind/rbind ») automatiquement dans votre répertoire chroot.

 root@Janus:/var/chroot/squeeze_i386_sda4# nano /etc/fstab 

Ajoutez-y :

 ## chroot Squeeze i386 sda4
 /tmp  /var/chroot/squeeze_i386_sda4/tmp  none bind  0 0
 /dev  /var/chroot/squeeze_i386_sda4/dev  none rbind 0 0
 /proc /var/chroot/squeeze_i386_sda4/proc none bind  0 0

Ctrl+O (enregistrer) Ctrl+X (Quitter)

 root@Janus:/var/chroot/squeeze_i386_sda4# mount -a

(cette commande monte tout ce qui est dans votre fstab)

Pour « normaliser les comptes et groupes » de votre nouvelle Squeeze (que les utilisateurs et groupes aient les mêmes identifiants dans votre système &quot;hôte&quot; et dans votre chroot) tapez les commandes suivantes :

 root@Janus:/var/chroot/squeeze_i386_sda4# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/passwd &gt;&gt; /var/chroot/squeeze_i386_sda4/etc/passwd
 root@Janus:/var/chroot/squeeze_i386_sda4# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/group &gt;&gt; /var/chroot/squeeze_i386_sda4/etc/group

Vous allez maintenant entrer dans votre environnement chroot (tadaa !) :

 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4
 root@Janus:/#

== Finalisation de l'installation et réglages de la Squeeze ==

Vous êtes maintenant dans votre nouvelle Squeeze, mais ce n'est pas terminé, votre système est incomplet, impossible de démarrer dessus…

=== &quot;locales&quot; ===

Nous allons maintenant mettre en français (ou ce que vous voulez…), configurer la localisation, et surtout… régler l'heure. L'heure est très importante. Si vous démarrez sur ce nouveau système avec une mauvaise heure (dans le futur par rapport au système sur lequel vous êtes), le prochain démarrage vous laissera un goût amer, vous serez obligé de faire un fsck…

En effet, au montage des disques le système inscrit l'heure (au tout début du disque). Si cette heure est « dans le futur », au démarrage suivant (sur une autre installation), il ne voudra pas démarrer et exigera une vérification de disque…

 root@Janus:/# apt-get update
 root@Janus:/# apt-get install locales
 root@Janus:/# dpkg-reconfigure locales
 root@Janus:/# dpkg-reconfigure tzdata
 root@Janus:/# hwclock --systohc --utc

Il faut modifier le fichier /etc/default/rcS pour forcer le système à se mettre en heure locale…

Explications sur [https://forum.debian-fr.org/viewtopic.php?p=210286#p210286 le forum.debian-fr.org]

 root@Janus:/# nano /etc/default/rcS

Il faut modifier la ligne utc : UTC=no

 root@Janus:/# apt-get install ntpdate
 root@Janus:/# ntpdate ntp.metas.ch

=== Le sources.list ===

Nous allons maintenant compléter nos dépôts

J'ai complété avec quelques dépôts tiers. Vous pourriez tout aussi bien ne pas le faire, mais c'est sympa d'avoir un peu de choix, non ? J'ai ajouté le dépôt « backports » pour avoir accès à un noyau récent, vous n'êtes, là encore, pas obligé de le faire.

 root@Janus:/# nano /etc/apt/sources.list
 deb http://ftp2.fr.debian.org/debian/ squeeze main
 ## Mises-à-jour de sécurité
 deb http://security.debian.org/ squeeze/updates main
 deb http://ftp2.fr.debian.org/debian/ squeeze-updates main
 ## Rétroportages - http://www.backports.org
 deb http://debian.advalem.net/debian-backports/ squeeze-backports main
 ## Debian Multimedia - http://www.debian-multimedia.org/
 deb http://debian-multimedia.tryphon.eu/ squeeze main

Si vous décidez d'ajouter les dépôts Multimedia, il peut être intéressant de créer un fichier preferences pour leur attribuer une priorité moins importante que les dépôts officiels de Debian. De cette façon vous éviterez des problèmes de compatibilité entre versions.

 root@Janus:/# nano /etc/apt/preferences
 Package: *
 Pin: release o=Unofficial Multimedia Packages
 Pin-Priority: 400

Mettons à jour :

 root@Janus:/# apt-get update
Vous obtiendrez probablement cette erreur :
 W: Erreur de GPG : http://debian-multimedia.tryphon.eu squeeze Release : Les signatures suivantes n'ont pas pu être vérifiées
 car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907
Dans ce cas la solution est simple :
 root@Janus:/# apt-get install deb-multimedia-keyring &amp;&amp; apt-get update
 ATTENTION : les paquets suivants n'ont pas été authentifiés.
   deb-multimedia-keyring
 Faut-il installer ces paquets sans vérification (o/N) ? o
 root@Janus:/# apt-get upgrade

=== Clavier === 

Configurons maintenant le clavier

 root@Janus:/# apt-get install console-data

Je ne sais pour quelle raison il nous met d'office le clavier mac-usb-fr… Dans le chroot il ne doit pas détecter autre chose…

 Looking for keymap to install:
 mac-usb-fr

Rectifions :

 root@Janus:/# dpkg-reconfigure -plow console-data
 (option choisir un codage clavier dans la liste complète) - pc / azerty / French / Same as X11 (latin9) / Standard
 Looking for keymap to install:
 fr-latin9 (cette fois-ci c'est bon)
 
=== hostname et fstab ===

 root@Janus:/# exit

Nous sommes sortis du chroot, quelques fichiers à récupérer… Pour avoir un bon hostname, le réseau, le montage correct des disques…

 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/hosts /etc/hostname /etc/resolv.conf /var/chroot/squeeze_i386_sda4/etc/
 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/network/interfaces /var/chroot/squeeze_i386_sda4/etc/network/
 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/fstab /var/chroot/squeeze_i386_sda4/etc/
 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4/

+ Réglage du fsab

 root@Janus:/# blkid (cette commande permet de récupérer le UUID de vos disques pour votre nouveau fstab…
 Ne vous faites pas prendre, le formatage change l'UUID…)
 /dev/sda1: UUID=&quot;83953ec9-f173-4bde-84b4-77cfa0ad5d95&quot; TYPE=&quot;ext4&quot; 
 /dev/sda2: UUID=&quot;cfe0a0d6-3280-4104-878d-efede6cce024&quot; TYPE=&quot;swap&quot; 
 /dev/sda3: UUID=&quot;57a6f7ec-8de6-4f47-a244-f171c6a41ab3&quot; TYPE=&quot;ext4&quot; 
 /dev/sda4: UUID=&quot;34bf3784-2c97-48e3-92ce-025e3cd6344c&quot; TYPE=&quot;ext4&quot; 

 root@Janus:/# nano /etc/fstab (à rectifier en fonction de votre configuration)
 proc                                      /proc           proc        defaults          0 0
 UUID=34bf3784-2c97-48e3-92ce-025e3cd6344c /               ext4        errors=remount-ro 0 1
 UUID=57a6f7ec-8de6-4f47-a244-f171c6a41ab3 /home           ext4        defaults          0 2
 UUID=cfe0a0d6-3280-4104-878d-efede6cce024 none            swap        sw                0 0
 /dev/scd0                                 /media/cdrom0   udf,iso9660 user,noauto       0 0
 /dev/scd1                                 /media/cdrom1   udf,iso9660 user,noauto       0 0
 /dev/fd0                                  /media/floppy0  auto        rw,user,noauto    0 0

Création des répertoire de montage des disques de la nouvelle machine : (en fonction de votre configuration et de vos choix...)

 root@Janus:/# mkdir /media/cdrom0 /media/cdrom1 /media/floppy0

=== L'environnement graphique ===

Maintenant ? Un environnement graphique ! (J'ai choisi Xfce, vous faites comme vous voulez… [[Environnement graphique::Gnome]], [[Environnement graphique::Kde]], aucun…

/!\ N'oubliez pas d'installer aussi un gestionnaire de connexion !

 root@Janus:/# apt-get install xfce4 gdm

=== Le noyau et Grub2 ===

Installons un noyau… Ce serait bête d'oublier  :wink: 

 root@Janus:/# apt-cache search linux-image (choisissez dans la liste qu'il vous propose,
 celui que je cite n'est qu'un exemple que vous n'êtes pas forcés de suivre…)
 (…)
 linux-image-3.2.0-0.bpo.2-686-pae - Linux 3.2 for modern PCs
 (…)

Ici il faut récupérer votre kernel-img.conf qui permette de convenablement lancer initramfs à l'installation du nouveau noyau dans le chroot.

Ce fichier n'existe pas dans le système créé par debootstrap.

La ligne intéressante : do_initrd = yes

 root@Janus:/# exit
 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/kernel-img.conf /var/chroot/squeeze_i386_sda4/etc/kernel-img.conf
 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4
 root@Janus:/# apt-get install -t squeeze-backports linux-image-3.2.0-0.bpo.2-686-pae
 root@Janus:/# exit

Maintenant... Modifions notre grub pour que ce nouveau système soit opérationnel :
/!\ Attention, je suis sous Grub2. Si vous êtes sous Grub &quot;legacy&quot; la commande est différente évidemment…

 root@Janus:/var/chroot/squeeze_i386_sda4# apt-get install os-prober
 root@Janus:/var/chroot/squeeze_i386_sda4# update-grub
 (…)
 Found Debian GNU/Linux (6.0.4) on /dev/sda4
 (…)


=== Divers - mots de passe ===

Derniers &quot;fignolages&quot;… J'installe un navigateur Web (Iceweasel), et GParted.

Vous pouvez bien sûr adpater cette commande pour installer vos logiciels habituels ! 

 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4
 root@Janus:/# apt-get install gparted iceweasel iceweasel-l10n-fr

Enfin, les mots de passe...

Debootstrap installe un système sans mots de passe… Si vous redémarrez maintenant vous vous connecterez en root dans votre nouveau système sans montrer patte blanche… Un peu gênant, non ?

 root@Janus:/# nano /etc/passwd
 (…)
 legoth:x:1000:1000:Le Gonidec,,,:/home/legoth:/bin/sh
 (…)

Vous enlevez le x pour que cela ressemble à ça :

 legoth::1000:1000:Le Gonidec,,,:/home/legoth:/bin/sh

Ceci afin de pouvoir connecter vos utilisateurs &quot;normaux&quot;. Il faut maintenant créer les mots de passe.

 root@Janus:/# passwd
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 root@Janus:/# su legoth -c passwd
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 root@Janus:/# exit
 root@Janus:/var/chroot/squeeze_i386_sda4# reboot

Voilà : vous disposez d'une toute fraîche installation, fonctionnelle !

== Taskel ==

Pour avoir un système un peu plus complet, en fonction de vos besoins, vous pouvez utiliser l'utilitaire tasksel.

La commande suivante détaille les &quot;tâches&quot; que tasksel peut réaliser pour vous… (vous remarquerez que ce sont les mêmes choix que dans une installation &quot;classique&quot; qui sont proposés)

 root@Janus:/# tasksel --list-tasks
 u desktop	Graphical desktop environment
 u web-server	Web server
 u print-server	Print server
 u dns-server	DNS server
 u file-server	File server
 u mail-server	Mail server
 u database-server	SQL database
 u ssh-server	SSH server
 u laptop	Laptop
 u manual	manual package selection

Chaque &quot;tâche&quot; installe un ensemble de paquets utiles pour certaines utilisations. &quot;u&quot; pour non installé. Une tâche installée commence par &quot;i&quot;.

Il ne vous reste plus qu'a taper dans la console :

 root@Janus:/# tasksel --task-packages nom_tache

Il existe une autre tâche, qui n'est pas dans la liste ci-dessus :
 tasksel install standard
Cette commande installe un ensemble de paquets &quot;standards&quot;. Je vous renvoie au [[https://www.debian-facile.org/wiki/manuel:tasksel Wiki de debian-facile]] pour plus de détails.

== Versions des programmes utilisés dans ce tutoriel ==

bash		4.1-3

apt		0.8.10.3+squeeze1

e2fsprogs	1.41.12-4stable1

coreutils	8.5-1

mount		2.17.2-9

debootstrap	1.0.26+squeeze1

nano		2.2.4-1

grep		2.6.3-3

os-prober	1.42

grub-pc		1.98+20100804-14+squeeze1

sysvinit	2.88dsf-13.1


--[[Utilisateur:Vv222|Vv222]] 8 mai 2012 à 22:00 (CEST)

[https://www.debian-fr.org/sujet38752.html source]

[https://www.isalo.org/wiki.debian-fr/index.php?title=Installation_lenny_chroot_debootstrap source]

[https://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 source]

[[Catégorie:Installation]]</text>
      <sha1>0y00r4cqjyxllzi5sdi8jok672jzwes</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4228</id>
      <parentid>4227</parentid>
      <timestamp>2012-05-11T09:50:49Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>Suppression de crochets superflus</comment>
      <text xml:space="preserve" bytes="15344">Installation d'une Squeeze avec debootstrap et chroot

L'objectif est d'installer une Squeeze (sur une nouvelle partition) à partir d'une autre Debian (ici une autre Squeeze, mais cette méthode fonctionnera aussi bien avec une autre version), sans avoir besoin de redémarrer ma machine une seule fois…

Avantage : rester dans mon environnement de travail pendant toute l'installation…

Parti-pris : utilisation de nano comme éditeur

== Pré-requis ==

Pré-requis : Installer debootstrap (chroot se trouve dans le paquet coreutils normalement déjà installé dans votre Debian).

 root@Janus:~# apt-get install debootstrap

Formatage de la partition qui va recevoir la Squeeze :

J'ai choisi de formater en ext4, vous pouvez choisir le système de fichiers de votre choix bien sûr.

La partition cible (ici /dev/sda4) devra aussi être adaptée à votre configuration.

 root@Janus:~# mkfs -V -t ext4 /dev/sda4

Création du répertoire qui va recevoir le système et montage de la partition fraîchement formatée dans ce nouveau répertoire.

J'ai choisi /var/chroot/squeeze_i386_sda4.

Un petit « ls » à la fin pour vérifier que la partition est bien montée.

 root@Janus:~# mkdir -p /var/chroot/squeeze_i386_sda4
 root@Janus:~# mount /dev/sda4 /var/chroot/squeeze_i386_sda4
 root@Janus:~# cd /var/chroot/squeeze_i386_sda4
 root@Janus:/var/chroot/squeeze_i386_sda4# ls
 lost+found

== Installation avec debootstrap ==

Installation de la Squeeze avec debootstrap (j'ai choisi une Squeeze i386, rien ne vous empêche de choisir une Lenny amd64 ou bien même une Sid...)

Astuces :

_Vous pouvez utiliser un dépôt local pour cette installation. Détails ici [https://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23065 sur le forum.debian-fr.org]

_Si vous avez une mauvaise connexion, mais disposez d'un CD d'installation, vous pouvez remplacer l'adresse du dépôt par file:/cdrom/debian/

_En ajoutant l'option --variant=minbase à debootstrap, vous installerez uniquement le strict minimum de paquets (pas d'aptitude, de vim, d'exim4, etc.).

 root@Janus:/var/chroot/squeeze_i386_sda4# debootstrap --arch i386 squeeze /var/chroot/squeeze_i386_sda4/ http://ftp2.fr.debian.org/debian/
 I: Retrieving Release
 I: Retrieving Packages
 I: Validating Packages
 I: Resolving dependencies of required packages...
 I: Resolving dependencies of base packages...
 I: Found additional required dependencies: insserv libbz2-1.0 libdb4.8 libslang2 
 I: Found additional base dependencies: libnfnetlink0 libsqlite3-0 
 I: Checking component main on http://ftp2.fr.debian.org/debian...
 I: Retrieving/Validating un tas de paquets
 I: Chosen extractor for .deb packages: dpkg-deb
 I: Extracting un tas de paquets...
 I: Installing core packages...
 I: Unpacking required packages...
 I: Unpacking un tas de paquets...
 I: Configuring required packages...
 I: Configuring un tas de paquets...
 I: Unpacking the base system...
 I: Unpacking un tas de paquets...
 I: Configuring the base system...
 I: Configuring un tas de paquets...
 I: Base system installed successfully.

Si tout s'est bien passé, un &quot;ls&quot; vous retournera la toute nouvelle arborescence :
 root@Janus:/var/chroot/squeeze_i386_sda4# ls
 bin boot dev etc home lib lost+found media mnt opt proc root sbin selinux srv sys tmp usr var

À ce niveau, votre Squeeze est installée, mais elle n'est pas pleinement fonctionnelle ni « autonome ». Vous ne pourrez pas démarrer dessus…

== Préparation du chroot ==

Il faut maintenant préparer le chroot. Trois répertoires sont importants pour que cela fonctionne convenablement : /tmp, /dev et /proc.

Vous devez éditer votre fstab pour que ces répertoires soient montés (et liés - « bind/rbind ») automatiquement dans votre répertoire chroot.

 root@Janus:/var/chroot/squeeze_i386_sda4# nano /etc/fstab 

Ajoutez-y :

 ## chroot Squeeze i386 sda4
 /tmp  /var/chroot/squeeze_i386_sda4/tmp  none bind  0 0
 /dev  /var/chroot/squeeze_i386_sda4/dev  none rbind 0 0
 /proc /var/chroot/squeeze_i386_sda4/proc none bind  0 0

Ctrl+O (enregistrer) Ctrl+X (Quitter)

 root@Janus:/var/chroot/squeeze_i386_sda4# mount -a

(cette commande monte tout ce qui est dans votre fstab)

Pour « normaliser les comptes et groupes » de votre nouvelle Squeeze (que les utilisateurs et groupes aient les mêmes identifiants dans votre système &quot;hôte&quot; et dans votre chroot) tapez les commandes suivantes :

 root@Janus:/var/chroot/squeeze_i386_sda4# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/passwd &gt;&gt; /var/chroot/squeeze_i386_sda4/etc/passwd
 root@Janus:/var/chroot/squeeze_i386_sda4# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/group &gt;&gt; /var/chroot/squeeze_i386_sda4/etc/group

Vous allez maintenant entrer dans votre environnement chroot (tadaa !) :

 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4
 root@Janus:/#

== Finalisation de l'installation et réglages de la Squeeze ==

Vous êtes maintenant dans votre nouvelle Squeeze, mais ce n'est pas terminé, votre système est incomplet, impossible de démarrer dessus…

=== &quot;locales&quot; ===

Nous allons maintenant mettre en français (ou ce que vous voulez…), configurer la localisation, et surtout… régler l'heure. L'heure est très importante. Si vous démarrez sur ce nouveau système avec une mauvaise heure (dans le futur par rapport au système sur lequel vous êtes), le prochain démarrage vous laissera un goût amer, vous serez obligé de faire un fsck…

En effet, au montage des disques le système inscrit l'heure (au tout début du disque). Si cette heure est « dans le futur », au démarrage suivant (sur une autre installation), il ne voudra pas démarrer et exigera une vérification de disque…

 root@Janus:/# apt-get update
 root@Janus:/# apt-get install locales
 root@Janus:/# dpkg-reconfigure locales
 root@Janus:/# dpkg-reconfigure tzdata
 root@Janus:/# hwclock --systohc --utc

Il faut modifier le fichier /etc/default/rcS pour forcer le système à se mettre en heure locale…

Explications sur [https://forum.debian-fr.org/viewtopic.php?p=210286#p210286 le forum.debian-fr.org]

 root@Janus:/# nano /etc/default/rcS

Il faut modifier la ligne utc : UTC=no

 root@Janus:/# apt-get install ntpdate
 root@Janus:/# ntpdate ntp.metas.ch

=== Le sources.list ===

Nous allons maintenant compléter nos dépôts

J'ai complété avec quelques dépôts tiers. Vous pourriez tout aussi bien ne pas le faire, mais c'est sympa d'avoir un peu de choix, non ? J'ai ajouté le dépôt « backports » pour avoir accès à un noyau récent, vous n'êtes, là encore, pas obligé de le faire.

 root@Janus:/# nano /etc/apt/sources.list
 deb http://ftp2.fr.debian.org/debian/ squeeze main
 ## Mises-à-jour de sécurité
 deb http://security.debian.org/ squeeze/updates main
 deb http://ftp2.fr.debian.org/debian/ squeeze-updates main
 ## Rétroportages - http://www.backports.org
 deb http://debian.advalem.net/debian-backports/ squeeze-backports main
 ## Debian Multimedia - http://www.debian-multimedia.org/
 deb http://debian-multimedia.tryphon.eu/ squeeze main

Si vous décidez d'ajouter les dépôts Multimedia, il peut être intéressant de créer un fichier preferences pour leur attribuer une priorité moins importante que les dépôts officiels de Debian. De cette façon vous éviterez des problèmes de compatibilité entre versions.

 root@Janus:/# nano /etc/apt/preferences
 Package: *
 Pin: release o=Unofficial Multimedia Packages
 Pin-Priority: 400

Mettons à jour :

 root@Janus:/# apt-get update
Vous obtiendrez probablement cette erreur :
 W: Erreur de GPG : http://debian-multimedia.tryphon.eu squeeze Release : Les signatures suivantes n'ont pas pu être vérifiées
 car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907
Dans ce cas la solution est simple :
 root@Janus:/# apt-get install deb-multimedia-keyring &amp;&amp; apt-get update
 ATTENTION : les paquets suivants n'ont pas été authentifiés.
   deb-multimedia-keyring
 Faut-il installer ces paquets sans vérification (o/N) ? o
 root@Janus:/# apt-get upgrade

=== Clavier === 

Configurons maintenant le clavier

 root@Janus:/# apt-get install console-data

Je ne sais pour quelle raison il nous met d'office le clavier mac-usb-fr… Dans le chroot il ne doit pas détecter autre chose…

 Looking for keymap to install:
 mac-usb-fr

Rectifions :

 root@Janus:/# dpkg-reconfigure -plow console-data
 (option choisir un codage clavier dans la liste complète) - pc / azerty / French / Same as X11 (latin9) / Standard
 Looking for keymap to install:
 fr-latin9 (cette fois-ci c'est bon)
 
=== hostname et fstab ===

 root@Janus:/# exit

Nous sommes sortis du chroot, quelques fichiers à récupérer… Pour avoir un bon hostname, le réseau, le montage correct des disques…

 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/hosts /etc/hostname /etc/resolv.conf /var/chroot/squeeze_i386_sda4/etc/
 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/network/interfaces /var/chroot/squeeze_i386_sda4/etc/network/
 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/fstab /var/chroot/squeeze_i386_sda4/etc/
 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4/

+ Réglage du fsab

 root@Janus:/# blkid (cette commande permet de récupérer le UUID de vos disques pour votre nouveau fstab…
 Ne vous faites pas prendre, le formatage change l'UUID…)
 /dev/sda1: UUID=&quot;83953ec9-f173-4bde-84b4-77cfa0ad5d95&quot; TYPE=&quot;ext4&quot; 
 /dev/sda2: UUID=&quot;cfe0a0d6-3280-4104-878d-efede6cce024&quot; TYPE=&quot;swap&quot; 
 /dev/sda3: UUID=&quot;57a6f7ec-8de6-4f47-a244-f171c6a41ab3&quot; TYPE=&quot;ext4&quot; 
 /dev/sda4: UUID=&quot;34bf3784-2c97-48e3-92ce-025e3cd6344c&quot; TYPE=&quot;ext4&quot; 

 root@Janus:/# nano /etc/fstab (à rectifier en fonction de votre configuration)
 proc                                      /proc           proc        defaults          0 0
 UUID=34bf3784-2c97-48e3-92ce-025e3cd6344c /               ext4        errors=remount-ro 0 1
 UUID=57a6f7ec-8de6-4f47-a244-f171c6a41ab3 /home           ext4        defaults          0 2
 UUID=cfe0a0d6-3280-4104-878d-efede6cce024 none            swap        sw                0 0
 /dev/scd0                                 /media/cdrom0   udf,iso9660 user,noauto       0 0
 /dev/scd1                                 /media/cdrom1   udf,iso9660 user,noauto       0 0
 /dev/fd0                                  /media/floppy0  auto        rw,user,noauto    0 0

Création des répertoire de montage des disques de la nouvelle machine : (en fonction de votre configuration et de vos choix...)

 root@Janus:/# mkdir /media/cdrom0 /media/cdrom1 /media/floppy0

=== L'environnement graphique ===

Maintenant ? Un environnement graphique ! (J'ai choisi Xfce, vous faites comme vous voulez… [[Environnement graphique::Gnome]], [[Environnement graphique::Kde]], aucun…

/!\ N'oubliez pas d'installer aussi un gestionnaire de connexion !

 root@Janus:/# apt-get install xfce4 gdm

=== Le noyau et Grub2 ===

Installons un noyau… Ce serait bête d'oublier  :wink: 

 root@Janus:/# apt-cache search linux-image (choisissez dans la liste qu'il vous propose,
 celui que je cite n'est qu'un exemple que vous n'êtes pas forcés de suivre…)
 (…)
 linux-image-3.2.0-0.bpo.2-686-pae - Linux 3.2 for modern PCs
 (…)

Ici il faut récupérer votre kernel-img.conf qui permette de convenablement lancer initramfs à l'installation du nouveau noyau dans le chroot.

Ce fichier n'existe pas dans le système créé par debootstrap.

La ligne intéressante : do_initrd = yes

 root@Janus:/# exit
 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/kernel-img.conf /var/chroot/squeeze_i386_sda4/etc/kernel-img.conf
 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4
 root@Janus:/# apt-get install -t squeeze-backports linux-image-3.2.0-0.bpo.2-686-pae
 root@Janus:/# exit

Maintenant... Modifions notre grub pour que ce nouveau système soit opérationnel :
/!\ Attention, je suis sous Grub2. Si vous êtes sous Grub &quot;legacy&quot; la commande est différente évidemment…

 root@Janus:/var/chroot/squeeze_i386_sda4# apt-get install os-prober
 root@Janus:/var/chroot/squeeze_i386_sda4# update-grub
 (…)
 Found Debian GNU/Linux (6.0.4) on /dev/sda4
 (…)


=== Divers - mots de passe ===

Derniers &quot;fignolages&quot;… J'installe un navigateur Web (Iceweasel), et GParted.

Vous pouvez bien sûr adpater cette commande pour installer vos logiciels habituels ! 

 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4
 root@Janus:/# apt-get install gparted iceweasel iceweasel-l10n-fr

Enfin, les mots de passe...

Debootstrap installe un système sans mots de passe… Si vous redémarrez maintenant vous vous connecterez en root dans votre nouveau système sans montrer patte blanche… Un peu gênant, non ?

 root@Janus:/# nano /etc/passwd
 (…)
 legoth:x:1000:1000:Le Gonidec,,,:/home/legoth:/bin/sh
 (…)

Vous enlevez le x pour que cela ressemble à ça :

 legoth::1000:1000:Le Gonidec,,,:/home/legoth:/bin/sh

Ceci afin de pouvoir connecter vos utilisateurs &quot;normaux&quot;. Il faut maintenant créer les mots de passe.

 root@Janus:/# passwd
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 root@Janus:/# su legoth -c passwd
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 root@Janus:/# exit
 root@Janus:/var/chroot/squeeze_i386_sda4# reboot

Voilà : vous disposez d'une toute fraîche installation, fonctionnelle !

== Taskel ==

Pour avoir un système un peu plus complet, en fonction de vos besoins, vous pouvez utiliser l'utilitaire tasksel.

La commande suivante détaille les &quot;tâches&quot; que tasksel peut réaliser pour vous… (vous remarquerez que ce sont les mêmes choix que dans une installation &quot;classique&quot; qui sont proposés)

 root@Janus:/# tasksel --list-tasks
 u desktop	Graphical desktop environment
 u web-server	Web server
 u print-server	Print server
 u dns-server	DNS server
 u file-server	File server
 u mail-server	Mail server
 u database-server	SQL database
 u ssh-server	SSH server
 u laptop	Laptop
 u manual	manual package selection

Chaque &quot;tâche&quot; installe un ensemble de paquets utiles pour certaines utilisations. &quot;u&quot; pour non installé. Une tâche installée commence par &quot;i&quot;.

Il ne vous reste plus qu'a taper dans la console :

 root@Janus:/# tasksel --task-packages nom_tache

Il existe une autre tâche, qui n'est pas dans la liste ci-dessus :
 tasksel install standard
Cette commande installe un ensemble de paquets &quot;standards&quot;. Je vous renvoie au [https://www.debian-facile.org/wiki/manuel:tasksel Wiki de debian-facile] pour plus de détails.

== Versions des programmes utilisés dans ce tutoriel ==

bash		4.1-3

apt		0.8.10.3+squeeze1

e2fsprogs	1.41.12-4stable1

coreutils	8.5-1

mount		2.17.2-9

debootstrap	1.0.26+squeeze1

nano		2.2.4-1

grep		2.6.3-3

os-prober	1.42

grub-pc		1.98+20100804-14+squeeze1

sysvinit	2.88dsf-13.1


--[[Utilisateur:Vv222|Vv222]] 8 mai 2012 à 22:00 (CEST)

[https://www.debian-fr.org/sujet38752.html source]

[https://www.isalo.org/wiki.debian-fr/index.php?title=Installation_lenny_chroot_debootstrap source]

[https://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 source]

[[Catégorie:Installation]]</text>
      <sha1>ik2evig9y22xmnwz87o2fxj9b35cea8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4230</id>
      <parentid>4228</parentid>
      <timestamp>2012-05-11T15:54:21Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>Précision pour les clés du dépôt Multimedia (le renommage n'est pas encore effectif sur le serveur proposé dans ce tuto)</comment>
      <text xml:space="preserve" bytes="15509">Installation d'une Squeeze avec debootstrap et chroot

L'objectif est d'installer une Squeeze (sur une nouvelle partition) à partir d'une autre Debian (ici une autre Squeeze, mais cette méthode fonctionnera aussi bien avec une autre version), sans avoir besoin de redémarrer ma machine une seule fois…

Avantage : rester dans mon environnement de travail pendant toute l'installation…

Parti-pris : utilisation de nano comme éditeur

== Pré-requis ==

Pré-requis : Installer debootstrap (chroot se trouve dans le paquet coreutils normalement déjà installé dans votre Debian).

 root@Janus:~# apt-get install debootstrap

Formatage de la partition qui va recevoir la Squeeze :

J'ai choisi de formater en ext4, vous pouvez choisir le système de fichiers de votre choix bien sûr.

La partition cible (ici /dev/sda4) devra aussi être adaptée à votre configuration.

 root@Janus:~# mkfs -V -t ext4 /dev/sda4

Création du répertoire qui va recevoir le système et montage de la partition fraîchement formatée dans ce nouveau répertoire.

J'ai choisi /var/chroot/squeeze_i386_sda4.

Un petit « ls » à la fin pour vérifier que la partition est bien montée.

 root@Janus:~# mkdir -p /var/chroot/squeeze_i386_sda4
 root@Janus:~# mount /dev/sda4 /var/chroot/squeeze_i386_sda4
 root@Janus:~# cd /var/chroot/squeeze_i386_sda4
 root@Janus:/var/chroot/squeeze_i386_sda4# ls
 lost+found

== Installation avec debootstrap ==

Installation de la Squeeze avec debootstrap (j'ai choisi une Squeeze i386, rien ne vous empêche de choisir une Lenny amd64 ou bien même une Sid...)

Astuces :

_Vous pouvez utiliser un dépôt local pour cette installation. Détails ici [https://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23065 sur le forum.debian-fr.org]

_Si vous avez une mauvaise connexion, mais disposez d'un CD d'installation, vous pouvez remplacer l'adresse du dépôt par file:/cdrom/debian/

_En ajoutant l'option --variant=minbase à debootstrap, vous installerez uniquement le strict minimum de paquets (pas d'aptitude, de vim, d'exim4, etc.).

 root@Janus:/var/chroot/squeeze_i386_sda4# debootstrap --arch i386 squeeze /var/chroot/squeeze_i386_sda4/ http://ftp2.fr.debian.org/debian/
 I: Retrieving Release
 I: Retrieving Packages
 I: Validating Packages
 I: Resolving dependencies of required packages...
 I: Resolving dependencies of base packages...
 I: Found additional required dependencies: insserv libbz2-1.0 libdb4.8 libslang2 
 I: Found additional base dependencies: libnfnetlink0 libsqlite3-0 
 I: Checking component main on http://ftp2.fr.debian.org/debian...
 I: Retrieving/Validating un tas de paquets
 I: Chosen extractor for .deb packages: dpkg-deb
 I: Extracting un tas de paquets...
 I: Installing core packages...
 I: Unpacking required packages...
 I: Unpacking un tas de paquets...
 I: Configuring required packages...
 I: Configuring un tas de paquets...
 I: Unpacking the base system...
 I: Unpacking un tas de paquets...
 I: Configuring the base system...
 I: Configuring un tas de paquets...
 I: Base system installed successfully.

Si tout s'est bien passé, un &quot;ls&quot; vous retournera la toute nouvelle arborescence :
 root@Janus:/var/chroot/squeeze_i386_sda4# ls
 bin boot dev etc home lib lost+found media mnt opt proc root sbin selinux srv sys tmp usr var

À ce niveau, votre Squeeze est installée, mais elle n'est pas pleinement fonctionnelle ni « autonome ». Vous ne pourrez pas démarrer dessus…

== Préparation du chroot ==

Il faut maintenant préparer le chroot. Trois répertoires sont importants pour que cela fonctionne convenablement : /tmp, /dev et /proc.

Vous devez éditer votre fstab pour que ces répertoires soient montés (et liés - « bind/rbind ») automatiquement dans votre répertoire chroot.

 root@Janus:/var/chroot/squeeze_i386_sda4# nano /etc/fstab 

Ajoutez-y :

 ## chroot Squeeze i386 sda4
 /tmp  /var/chroot/squeeze_i386_sda4/tmp  none bind  0 0
 /dev  /var/chroot/squeeze_i386_sda4/dev  none rbind 0 0
 /proc /var/chroot/squeeze_i386_sda4/proc none bind  0 0

Ctrl+O (enregistrer) Ctrl+X (Quitter)

 root@Janus:/var/chroot/squeeze_i386_sda4# mount -a

(cette commande monte tout ce qui est dans votre fstab)

Pour « normaliser les comptes et groupes » de votre nouvelle Squeeze (que les utilisateurs et groupes aient les mêmes identifiants dans votre système &quot;hôte&quot; et dans votre chroot) tapez les commandes suivantes :

 root@Janus:/var/chroot/squeeze_i386_sda4# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/passwd &gt;&gt; /var/chroot/squeeze_i386_sda4/etc/passwd
 root@Janus:/var/chroot/squeeze_i386_sda4# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/group &gt;&gt; /var/chroot/squeeze_i386_sda4/etc/group

Vous allez maintenant entrer dans votre environnement chroot (tadaa !) :

 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4
 root@Janus:/#

== Finalisation de l'installation et réglages de la Squeeze ==

Vous êtes maintenant dans votre nouvelle Squeeze, mais ce n'est pas terminé, votre système est incomplet, impossible de démarrer dessus…

=== &quot;locales&quot; ===

Nous allons maintenant mettre en français (ou ce que vous voulez…), configurer la localisation, et surtout… régler l'heure. L'heure est très importante. Si vous démarrez sur ce nouveau système avec une mauvaise heure (dans le futur par rapport au système sur lequel vous êtes), le prochain démarrage vous laissera un goût amer, vous serez obligé de faire un fsck…

En effet, au montage des disques le système inscrit l'heure (au tout début du disque). Si cette heure est « dans le futur », au démarrage suivant (sur une autre installation), il ne voudra pas démarrer et exigera une vérification de disque…

 root@Janus:/# apt-get update
 root@Janus:/# apt-get install locales
 root@Janus:/# dpkg-reconfigure locales
 root@Janus:/# dpkg-reconfigure tzdata
 root@Janus:/# hwclock --systohc --utc

Il faut modifier le fichier /etc/default/rcS pour forcer le système à se mettre en heure locale…

Explications sur [https://forum.debian-fr.org/viewtopic.php?p=210286#p210286 le forum.debian-fr.org]

 root@Janus:/# nano /etc/default/rcS

Il faut modifier la ligne utc : UTC=no

 root@Janus:/# apt-get install ntpdate
 root@Janus:/# ntpdate ntp.metas.ch

=== Le sources.list ===

Nous allons maintenant compléter nos dépôts

J'ai complété avec quelques dépôts tiers. Vous pourriez tout aussi bien ne pas le faire, mais c'est sympa d'avoir un peu de choix, non ? J'ai ajouté le dépôt « backports » pour avoir accès à un noyau récent, vous n'êtes, là encore, pas obligé de le faire.

 root@Janus:/# nano /etc/apt/sources.list
 deb http://ftp2.fr.debian.org/debian/ squeeze main
 ## Mises-à-jour de sécurité
 deb http://security.debian.org/ squeeze/updates main
 deb http://ftp2.fr.debian.org/debian/ squeeze-updates main
 ## Rétroportages - http://www.backports.org
 deb http://debian.advalem.net/debian-backports/ squeeze-backports main
 ## Debian Multimedia - http://www.debian-multimedia.org/
 deb http://debian-multimedia.tryphon.eu/ squeeze main

Si vous décidez d'ajouter les dépôts Multimedia, il peut être intéressant de créer un fichier preferences pour leur attribuer une priorité moins importante que les dépôts officiels de Debian. De cette façon vous éviterez des problèmes de compatibilité entre versions.

 root@Janus:/# nano /etc/apt/preferences
 Package: *
 Pin: release o=Unofficial Multimedia Packages
 Pin-Priority: 400

Mettons à jour :

 root@Janus:/# apt-get update
Vous obtiendrez probablement cette erreur :
 W: Erreur de GPG : http://debian-multimedia.tryphon.eu squeeze Release : Les signatures suivantes n'ont pas pu être vérifiées
 car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907
Dans ce cas la solution est simple :
 root@Janus:/# apt-get install deb-multimedia-keyring &amp;&amp; apt-get update
 ATTENTION : les paquets suivants n'ont pas été authentifiés.
   deb-multimedia-keyring
 Faut-il installer ces paquets sans vérification (o/N) ? o
 root@Janus:/# apt-get upgrade

/!\ Si le paquet deb-multimedia-keyring n'existe pas sur le serveur que vous utilisez, remplacez-le dans les commandes précédentes par debian-multimedia-keyring.

=== Clavier === 

Configurons maintenant le clavier

 root@Janus:/# apt-get install console-data

Je ne sais pour quelle raison il nous met d'office le clavier mac-usb-fr… Dans le chroot il ne doit pas détecter autre chose…

 Looking for keymap to install:
 mac-usb-fr

Rectifions :

 root@Janus:/# dpkg-reconfigure -plow console-data
 (option choisir un codage clavier dans la liste complète) - pc / azerty / French / Same as X11 (latin9) / Standard
 Looking for keymap to install:
 fr-latin9 (cette fois-ci c'est bon)
 
=== hostname et fstab ===

 root@Janus:/# exit

Nous sommes sortis du chroot, quelques fichiers à récupérer… Pour avoir un bon hostname, le réseau, le montage correct des disques…

 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/hosts /etc/hostname /etc/resolv.conf /var/chroot/squeeze_i386_sda4/etc/
 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/network/interfaces /var/chroot/squeeze_i386_sda4/etc/network/
 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/fstab /var/chroot/squeeze_i386_sda4/etc/
 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4/

+ Réglage du fsab

 root@Janus:/# blkid (cette commande permet de récupérer le UUID de vos disques pour votre nouveau fstab…
 Ne vous faites pas prendre, le formatage change l'UUID…)
 /dev/sda1: UUID=&quot;83953ec9-f173-4bde-84b4-77cfa0ad5d95&quot; TYPE=&quot;ext4&quot; 
 /dev/sda2: UUID=&quot;cfe0a0d6-3280-4104-878d-efede6cce024&quot; TYPE=&quot;swap&quot; 
 /dev/sda3: UUID=&quot;57a6f7ec-8de6-4f47-a244-f171c6a41ab3&quot; TYPE=&quot;ext4&quot; 
 /dev/sda4: UUID=&quot;34bf3784-2c97-48e3-92ce-025e3cd6344c&quot; TYPE=&quot;ext4&quot; 

 root@Janus:/# nano /etc/fstab (à rectifier en fonction de votre configuration)
 proc                                      /proc           proc        defaults          0 0
 UUID=34bf3784-2c97-48e3-92ce-025e3cd6344c /               ext4        errors=remount-ro 0 1
 UUID=57a6f7ec-8de6-4f47-a244-f171c6a41ab3 /home           ext4        defaults          0 2
 UUID=cfe0a0d6-3280-4104-878d-efede6cce024 none            swap        sw                0 0
 /dev/scd0                                 /media/cdrom0   udf,iso9660 user,noauto       0 0
 /dev/scd1                                 /media/cdrom1   udf,iso9660 user,noauto       0 0
 /dev/fd0                                  /media/floppy0  auto        rw,user,noauto    0 0

Création des répertoire de montage des disques de la nouvelle machine : (en fonction de votre configuration et de vos choix...)

 root@Janus:/# mkdir /media/cdrom0 /media/cdrom1 /media/floppy0

=== L'environnement graphique ===

Maintenant ? Un environnement graphique ! (J'ai choisi Xfce, vous faites comme vous voulez… [[Environnement graphique::Gnome]], [[Environnement graphique::Kde]], aucun…

/!\ N'oubliez pas d'installer aussi un gestionnaire de connexion !

 root@Janus:/# apt-get install xfce4 gdm

=== Le noyau et Grub2 ===

Installons un noyau… Ce serait bête d'oublier  :wink: 

 root@Janus:/# apt-cache search linux-image (choisissez dans la liste qu'il vous propose,
 celui que je cite n'est qu'un exemple que vous n'êtes pas forcés de suivre…)
 (…)
 linux-image-3.2.0-0.bpo.2-686-pae - Linux 3.2 for modern PCs
 (…)

Ici il faut récupérer votre kernel-img.conf qui permette de convenablement lancer initramfs à l'installation du nouveau noyau dans le chroot.

Ce fichier n'existe pas dans le système créé par debootstrap.

La ligne intéressante : do_initrd = yes

 root@Janus:/# exit
 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/kernel-img.conf /var/chroot/squeeze_i386_sda4/etc/kernel-img.conf
 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4
 root@Janus:/# apt-get install -t squeeze-backports linux-image-3.2.0-0.bpo.2-686-pae
 root@Janus:/# exit

Maintenant... Modifions notre grub pour que ce nouveau système soit opérationnel :
/!\ Attention, je suis sous Grub2. Si vous êtes sous Grub &quot;legacy&quot; la commande est différente évidemment…

 root@Janus:/var/chroot/squeeze_i386_sda4# apt-get install os-prober
 root@Janus:/var/chroot/squeeze_i386_sda4# update-grub
 (…)
 Found Debian GNU/Linux (6.0.4) on /dev/sda4
 (…)


=== Divers - mots de passe ===

Derniers &quot;fignolages&quot;… J'installe un navigateur Web (Iceweasel), et GParted.

Vous pouvez bien sûr adpater cette commande pour installer vos logiciels habituels ! 

 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4
 root@Janus:/# apt-get install gparted iceweasel iceweasel-l10n-fr

Enfin, les mots de passe...

Debootstrap installe un système sans mots de passe… Si vous redémarrez maintenant vous vous connecterez en root dans votre nouveau système sans montrer patte blanche… Un peu gênant, non ?

 root@Janus:/# nano /etc/passwd
 (…)
 legoth:x:1000:1000:Le Gonidec,,,:/home/legoth:/bin/sh
 (…)

Vous enlevez le x pour que cela ressemble à ça :

 legoth::1000:1000:Le Gonidec,,,:/home/legoth:/bin/sh

Ceci afin de pouvoir connecter vos utilisateurs &quot;normaux&quot;. Il faut maintenant créer les mots de passe.

 root@Janus:/# passwd
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 root@Janus:/# su legoth -c passwd
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 root@Janus:/# exit
 root@Janus:/var/chroot/squeeze_i386_sda4# reboot

Voilà : vous disposez d'une toute fraîche installation, fonctionnelle !

== Taskel ==

Pour avoir un système un peu plus complet, en fonction de vos besoins, vous pouvez utiliser l'utilitaire tasksel.

La commande suivante détaille les &quot;tâches&quot; que tasksel peut réaliser pour vous… (vous remarquerez que ce sont les mêmes choix que dans une installation &quot;classique&quot; qui sont proposés)

 root@Janus:/# tasksel --list-tasks
 u desktop	Graphical desktop environment
 u web-server	Web server
 u print-server	Print server
 u dns-server	DNS server
 u file-server	File server
 u mail-server	Mail server
 u database-server	SQL database
 u ssh-server	SSH server
 u laptop	Laptop
 u manual	manual package selection

Chaque &quot;tâche&quot; installe un ensemble de paquets utiles pour certaines utilisations. &quot;u&quot; pour non installé. Une tâche installée commence par &quot;i&quot;.

Il ne vous reste plus qu'a taper dans la console :

 root@Janus:/# tasksel --task-packages nom_tache

Il existe une autre tâche, qui n'est pas dans la liste ci-dessus :
 tasksel install standard
Cette commande installe un ensemble de paquets &quot;standards&quot;. Je vous renvoie au [https://www.debian-facile.org/wiki/manuel:tasksel Wiki de debian-facile] pour plus de détails.

== Versions des programmes utilisés dans ce tutoriel ==

bash		4.1-3

apt		0.8.10.3+squeeze1

e2fsprogs	1.41.12-4stable1

coreutils	8.5-1

mount		2.17.2-9

debootstrap	1.0.26+squeeze1

nano		2.2.4-1

grep		2.6.3-3

os-prober	1.42

grub-pc		1.98+20100804-14+squeeze1

sysvinit	2.88dsf-13.1


--[[Utilisateur:Vv222|Vv222]] 8 mai 2012 à 22:00 (CEST)

[https://www.debian-fr.org/sujet38752.html source]

[https://www.isalo.org/wiki.debian-fr/index.php?title=Installation_lenny_chroot_debootstrap source]

[https://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 source]

[[Catégorie:Installation]]</text>
      <sha1>qoc59kkim59oh00d5watwk3mul4abpc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4239</id>
      <parentid>4230</parentid>
      <timestamp>2012-05-14T20:56:52Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>/* Le sources.list */ Mise-à-jour de l'URL du site Debian Multimedia dans les commentaires du sources.list</comment>
      <text xml:space="preserve" bytes="15520">Installation d'une Squeeze avec debootstrap et chroot

L'objectif est d'installer une Squeeze (sur une nouvelle partition) à partir d'une autre Debian (ici une autre Squeeze, mais cette méthode fonctionnera aussi bien avec une autre version), sans avoir besoin de redémarrer ma machine une seule fois…

Avantage : rester dans mon environnement de travail pendant toute l'installation…

Parti-pris : utilisation de nano comme éditeur

== Pré-requis ==

Pré-requis : Installer debootstrap (chroot se trouve dans le paquet coreutils normalement déjà installé dans votre Debian).

 root@Janus:~# apt-get install debootstrap

Formatage de la partition qui va recevoir la Squeeze :

J'ai choisi de formater en ext4, vous pouvez choisir le système de fichiers de votre choix bien sûr.

La partition cible (ici /dev/sda4) devra aussi être adaptée à votre configuration.

 root@Janus:~# mkfs -V -t ext4 /dev/sda4

Création du répertoire qui va recevoir le système et montage de la partition fraîchement formatée dans ce nouveau répertoire.

J'ai choisi /var/chroot/squeeze_i386_sda4.

Un petit « ls » à la fin pour vérifier que la partition est bien montée.

 root@Janus:~# mkdir -p /var/chroot/squeeze_i386_sda4
 root@Janus:~# mount /dev/sda4 /var/chroot/squeeze_i386_sda4
 root@Janus:~# cd /var/chroot/squeeze_i386_sda4
 root@Janus:/var/chroot/squeeze_i386_sda4# ls
 lost+found

== Installation avec debootstrap ==

Installation de la Squeeze avec debootstrap (j'ai choisi une Squeeze i386, rien ne vous empêche de choisir une Lenny amd64 ou bien même une Sid...)

Astuces :

_Vous pouvez utiliser un dépôt local pour cette installation. Détails ici [https://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23065 sur le forum.debian-fr.org]

_Si vous avez une mauvaise connexion, mais disposez d'un CD d'installation, vous pouvez remplacer l'adresse du dépôt par file:/cdrom/debian/

_En ajoutant l'option --variant=minbase à debootstrap, vous installerez uniquement le strict minimum de paquets (pas d'aptitude, de vim, d'exim4, etc.).

 root@Janus:/var/chroot/squeeze_i386_sda4# debootstrap --arch i386 squeeze /var/chroot/squeeze_i386_sda4/ http://ftp2.fr.debian.org/debian/
 I: Retrieving Release
 I: Retrieving Packages
 I: Validating Packages
 I: Resolving dependencies of required packages...
 I: Resolving dependencies of base packages...
 I: Found additional required dependencies: insserv libbz2-1.0 libdb4.8 libslang2 
 I: Found additional base dependencies: libnfnetlink0 libsqlite3-0 
 I: Checking component main on http://ftp2.fr.debian.org/debian...
 I: Retrieving/Validating un tas de paquets
 I: Chosen extractor for .deb packages: dpkg-deb
 I: Extracting un tas de paquets...
 I: Installing core packages...
 I: Unpacking required packages...
 I: Unpacking un tas de paquets...
 I: Configuring required packages...
 I: Configuring un tas de paquets...
 I: Unpacking the base system...
 I: Unpacking un tas de paquets...
 I: Configuring the base system...
 I: Configuring un tas de paquets...
 I: Base system installed successfully.

Si tout s'est bien passé, un &quot;ls&quot; vous retournera la toute nouvelle arborescence :
 root@Janus:/var/chroot/squeeze_i386_sda4# ls
 bin boot dev etc home lib lost+found media mnt opt proc root sbin selinux srv sys tmp usr var

À ce niveau, votre Squeeze est installée, mais elle n'est pas pleinement fonctionnelle ni « autonome ». Vous ne pourrez pas démarrer dessus…

== Préparation du chroot ==

Il faut maintenant préparer le chroot. Trois répertoires sont importants pour que cela fonctionne convenablement : /tmp, /dev et /proc.

Vous devez éditer votre fstab pour que ces répertoires soient montés (et liés - « bind/rbind ») automatiquement dans votre répertoire chroot.

 root@Janus:/var/chroot/squeeze_i386_sda4# nano /etc/fstab 

Ajoutez-y :

 ## chroot Squeeze i386 sda4
 /tmp  /var/chroot/squeeze_i386_sda4/tmp  none bind  0 0
 /dev  /var/chroot/squeeze_i386_sda4/dev  none rbind 0 0
 /proc /var/chroot/squeeze_i386_sda4/proc none bind  0 0

Ctrl+O (enregistrer) Ctrl+X (Quitter)

 root@Janus:/var/chroot/squeeze_i386_sda4# mount -a

(cette commande monte tout ce qui est dans votre fstab)

Pour « normaliser les comptes et groupes » de votre nouvelle Squeeze (que les utilisateurs et groupes aient les mêmes identifiants dans votre système &quot;hôte&quot; et dans votre chroot) tapez les commandes suivantes :

 root@Janus:/var/chroot/squeeze_i386_sda4# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/passwd &gt;&gt; /var/chroot/squeeze_i386_sda4/etc/passwd
 root@Janus:/var/chroot/squeeze_i386_sda4# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/group &gt;&gt; /var/chroot/squeeze_i386_sda4/etc/group

Vous allez maintenant entrer dans votre environnement chroot (tadaa !) :

 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4
 root@Janus:/#

== Finalisation de l'installation et réglages de la Squeeze ==

Vous êtes maintenant dans votre nouvelle Squeeze, mais ce n'est pas terminé, votre système est incomplet, impossible de démarrer dessus…

=== &quot;locales&quot; ===

Nous allons maintenant mettre en français (ou ce que vous voulez…), configurer la localisation, et surtout… régler l'heure. L'heure est très importante. Si vous démarrez sur ce nouveau système avec une mauvaise heure (dans le futur par rapport au système sur lequel vous êtes), le prochain démarrage vous laissera un goût amer, vous serez obligé de faire un fsck…

En effet, au montage des disques le système inscrit l'heure (au tout début du disque). Si cette heure est « dans le futur », au démarrage suivant (sur une autre installation), il ne voudra pas démarrer et exigera une vérification de disque…

 root@Janus:/# apt-get update
 root@Janus:/# apt-get install locales
 root@Janus:/# dpkg-reconfigure locales
 root@Janus:/# dpkg-reconfigure tzdata
 root@Janus:/# hwclock --systohc --utc

Il faut modifier le fichier /etc/default/rcS pour forcer le système à se mettre en heure locale…

Explications sur [https://forum.debian-fr.org/viewtopic.php?p=210286#p210286 le forum.debian-fr.org]

 root@Janus:/# nano /etc/default/rcS

Il faut modifier la ligne utc : UTC=no

 root@Janus:/# apt-get install ntpdate
 root@Janus:/# ntpdate ntp.metas.ch

=== Le sources.list ===

Nous allons maintenant compléter nos dépôts

J'ai complété avec quelques dépôts tiers. Vous pourriez tout aussi bien ne pas le faire, mais c'est sympa d'avoir un peu de choix, non ? J'ai ajouté le dépôt « backports » pour avoir accès à un noyau récent, vous n'êtes, là encore, pas obligé de le faire.

 root@Janus:/# nano /etc/apt/sources.list
 deb http://ftp2.fr.debian.org/debian/ squeeze main
 ## Mises-à-jour de sécurité
 deb http://security.debian.org/ squeeze/updates main
 deb http://ftp2.fr.debian.org/debian/ squeeze-updates main
 ## Rétroportages - http://backports-master.debian.org/
 deb http://debian.advalem.net/debian-backports/ squeeze-backports main
 ## Debian Multimedia - http://www.debian-multimedia.org/
 deb http://debian-multimedia.tryphon.eu/ squeeze main

Si vous décidez d'ajouter les dépôts Multimedia, il peut être intéressant de créer un fichier preferences pour leur attribuer une priorité moins importante que les dépôts officiels de Debian. De cette façon vous éviterez des problèmes de compatibilité entre versions.

 root@Janus:/# nano /etc/apt/preferences
 Package: *
 Pin: release o=Unofficial Multimedia Packages
 Pin-Priority: 400

Mettons à jour :

 root@Janus:/# apt-get update
Vous obtiendrez probablement cette erreur :
 W: Erreur de GPG : http://debian-multimedia.tryphon.eu squeeze Release : Les signatures suivantes n'ont pas pu être vérifiées
 car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907
Dans ce cas la solution est simple :
 root@Janus:/# apt-get install deb-multimedia-keyring &amp;&amp; apt-get update
 ATTENTION : les paquets suivants n'ont pas été authentifiés.
   deb-multimedia-keyring
 Faut-il installer ces paquets sans vérification (o/N) ? o
 root@Janus:/# apt-get upgrade

/!\ Si le paquet deb-multimedia-keyring n'existe pas sur le serveur que vous utilisez, remplacez-le dans les commandes précédentes par debian-multimedia-keyring.

=== Clavier === 

Configurons maintenant le clavier

 root@Janus:/# apt-get install console-data

Je ne sais pour quelle raison il nous met d'office le clavier mac-usb-fr… Dans le chroot il ne doit pas détecter autre chose…

 Looking for keymap to install:
 mac-usb-fr

Rectifions :

 root@Janus:/# dpkg-reconfigure -plow console-data
 (option choisir un codage clavier dans la liste complète) - pc / azerty / French / Same as X11 (latin9) / Standard
 Looking for keymap to install:
 fr-latin9 (cette fois-ci c'est bon)
 
=== hostname et fstab ===

 root@Janus:/# exit

Nous sommes sortis du chroot, quelques fichiers à récupérer… Pour avoir un bon hostname, le réseau, le montage correct des disques…

 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/hosts /etc/hostname /etc/resolv.conf /var/chroot/squeeze_i386_sda4/etc/
 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/network/interfaces /var/chroot/squeeze_i386_sda4/etc/network/
 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/fstab /var/chroot/squeeze_i386_sda4/etc/
 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4/

+ Réglage du fsab

 root@Janus:/# blkid (cette commande permet de récupérer le UUID de vos disques pour votre nouveau fstab…
 Ne vous faites pas prendre, le formatage change l'UUID…)
 /dev/sda1: UUID=&quot;83953ec9-f173-4bde-84b4-77cfa0ad5d95&quot; TYPE=&quot;ext4&quot; 
 /dev/sda2: UUID=&quot;cfe0a0d6-3280-4104-878d-efede6cce024&quot; TYPE=&quot;swap&quot; 
 /dev/sda3: UUID=&quot;57a6f7ec-8de6-4f47-a244-f171c6a41ab3&quot; TYPE=&quot;ext4&quot; 
 /dev/sda4: UUID=&quot;34bf3784-2c97-48e3-92ce-025e3cd6344c&quot; TYPE=&quot;ext4&quot; 

 root@Janus:/# nano /etc/fstab (à rectifier en fonction de votre configuration)
 proc                                      /proc           proc        defaults          0 0
 UUID=34bf3784-2c97-48e3-92ce-025e3cd6344c /               ext4        errors=remount-ro 0 1
 UUID=57a6f7ec-8de6-4f47-a244-f171c6a41ab3 /home           ext4        defaults          0 2
 UUID=cfe0a0d6-3280-4104-878d-efede6cce024 none            swap        sw                0 0
 /dev/scd0                                 /media/cdrom0   udf,iso9660 user,noauto       0 0
 /dev/scd1                                 /media/cdrom1   udf,iso9660 user,noauto       0 0
 /dev/fd0                                  /media/floppy0  auto        rw,user,noauto    0 0

Création des répertoire de montage des disques de la nouvelle machine : (en fonction de votre configuration et de vos choix...)

 root@Janus:/# mkdir /media/cdrom0 /media/cdrom1 /media/floppy0

=== L'environnement graphique ===

Maintenant ? Un environnement graphique ! (J'ai choisi Xfce, vous faites comme vous voulez… [[Environnement graphique::Gnome]], [[Environnement graphique::Kde]], aucun…

/!\ N'oubliez pas d'installer aussi un gestionnaire de connexion !

 root@Janus:/# apt-get install xfce4 gdm

=== Le noyau et Grub2 ===

Installons un noyau… Ce serait bête d'oublier  :wink: 

 root@Janus:/# apt-cache search linux-image (choisissez dans la liste qu'il vous propose,
 celui que je cite n'est qu'un exemple que vous n'êtes pas forcés de suivre…)
 (…)
 linux-image-3.2.0-0.bpo.2-686-pae - Linux 3.2 for modern PCs
 (…)

Ici il faut récupérer votre kernel-img.conf qui permette de convenablement lancer initramfs à l'installation du nouveau noyau dans le chroot.

Ce fichier n'existe pas dans le système créé par debootstrap.

La ligne intéressante : do_initrd = yes

 root@Janus:/# exit
 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/kernel-img.conf /var/chroot/squeeze_i386_sda4/etc/kernel-img.conf
 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4
 root@Janus:/# apt-get install -t squeeze-backports linux-image-3.2.0-0.bpo.2-686-pae
 root@Janus:/# exit

Maintenant... Modifions notre grub pour que ce nouveau système soit opérationnel :
/!\ Attention, je suis sous Grub2. Si vous êtes sous Grub &quot;legacy&quot; la commande est différente évidemment…

 root@Janus:/var/chroot/squeeze_i386_sda4# apt-get install os-prober
 root@Janus:/var/chroot/squeeze_i386_sda4# update-grub
 (…)
 Found Debian GNU/Linux (6.0.4) on /dev/sda4
 (…)


=== Divers - mots de passe ===

Derniers &quot;fignolages&quot;… J'installe un navigateur Web (Iceweasel), et GParted.

Vous pouvez bien sûr adpater cette commande pour installer vos logiciels habituels ! 

 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4
 root@Janus:/# apt-get install gparted iceweasel iceweasel-l10n-fr

Enfin, les mots de passe...

Debootstrap installe un système sans mots de passe… Si vous redémarrez maintenant vous vous connecterez en root dans votre nouveau système sans montrer patte blanche… Un peu gênant, non ?

 root@Janus:/# nano /etc/passwd
 (…)
 legoth:x:1000:1000:Le Gonidec,,,:/home/legoth:/bin/sh
 (…)

Vous enlevez le x pour que cela ressemble à ça :

 legoth::1000:1000:Le Gonidec,,,:/home/legoth:/bin/sh

Ceci afin de pouvoir connecter vos utilisateurs &quot;normaux&quot;. Il faut maintenant créer les mots de passe.

 root@Janus:/# passwd
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 root@Janus:/# su legoth -c passwd
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 root@Janus:/# exit
 root@Janus:/var/chroot/squeeze_i386_sda4# reboot

Voilà : vous disposez d'une toute fraîche installation, fonctionnelle !

== Taskel ==

Pour avoir un système un peu plus complet, en fonction de vos besoins, vous pouvez utiliser l'utilitaire tasksel.

La commande suivante détaille les &quot;tâches&quot; que tasksel peut réaliser pour vous… (vous remarquerez que ce sont les mêmes choix que dans une installation &quot;classique&quot; qui sont proposés)

 root@Janus:/# tasksel --list-tasks
 u desktop	Graphical desktop environment
 u web-server	Web server
 u print-server	Print server
 u dns-server	DNS server
 u file-server	File server
 u mail-server	Mail server
 u database-server	SQL database
 u ssh-server	SSH server
 u laptop	Laptop
 u manual	manual package selection

Chaque &quot;tâche&quot; installe un ensemble de paquets utiles pour certaines utilisations. &quot;u&quot; pour non installé. Une tâche installée commence par &quot;i&quot;.

Il ne vous reste plus qu'a taper dans la console :

 root@Janus:/# tasksel --task-packages nom_tache

Il existe une autre tâche, qui n'est pas dans la liste ci-dessus :
 tasksel install standard
Cette commande installe un ensemble de paquets &quot;standards&quot;. Je vous renvoie au [https://www.debian-facile.org/wiki/manuel:tasksel Wiki de debian-facile] pour plus de détails.

== Versions des programmes utilisés dans ce tutoriel ==

bash		4.1-3

apt		0.8.10.3+squeeze1

e2fsprogs	1.41.12-4stable1

coreutils	8.5-1

mount		2.17.2-9

debootstrap	1.0.26+squeeze1

nano		2.2.4-1

grep		2.6.3-3

os-prober	1.42

grub-pc		1.98+20100804-14+squeeze1

sysvinit	2.88dsf-13.1


--[[Utilisateur:Vv222|Vv222]] 8 mai 2012 à 22:00 (CEST)

[https://www.debian-fr.org/sujet38752.html source]

[https://www.isalo.org/wiki.debian-fr/index.php?title=Installation_lenny_chroot_debootstrap source]

[https://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 source]

[[Catégorie:Installation]]</text>
      <sha1>jptvb55a7qk5148tcgfq6ogrey6su8w</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4240</id>
      <parentid>4239</parentid>
      <timestamp>2012-05-14T20:58:48Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>/* Le sources.list */ Mise-à-jour de l'URL du site Debian Multimedia &amp; Backports Debian dans les commentaires du sources.list</comment>
      <text xml:space="preserve" bytes="15513">Installation d'une Squeeze avec debootstrap et chroot

L'objectif est d'installer une Squeeze (sur une nouvelle partition) à partir d'une autre Debian (ici une autre Squeeze, mais cette méthode fonctionnera aussi bien avec une autre version), sans avoir besoin de redémarrer ma machine une seule fois…

Avantage : rester dans mon environnement de travail pendant toute l'installation…

Parti-pris : utilisation de nano comme éditeur

== Pré-requis ==

Pré-requis : Installer debootstrap (chroot se trouve dans le paquet coreutils normalement déjà installé dans votre Debian).

 root@Janus:~# apt-get install debootstrap

Formatage de la partition qui va recevoir la Squeeze :

J'ai choisi de formater en ext4, vous pouvez choisir le système de fichiers de votre choix bien sûr.

La partition cible (ici /dev/sda4) devra aussi être adaptée à votre configuration.

 root@Janus:~# mkfs -V -t ext4 /dev/sda4

Création du répertoire qui va recevoir le système et montage de la partition fraîchement formatée dans ce nouveau répertoire.

J'ai choisi /var/chroot/squeeze_i386_sda4.

Un petit « ls » à la fin pour vérifier que la partition est bien montée.

 root@Janus:~# mkdir -p /var/chroot/squeeze_i386_sda4
 root@Janus:~# mount /dev/sda4 /var/chroot/squeeze_i386_sda4
 root@Janus:~# cd /var/chroot/squeeze_i386_sda4
 root@Janus:/var/chroot/squeeze_i386_sda4# ls
 lost+found

== Installation avec debootstrap ==

Installation de la Squeeze avec debootstrap (j'ai choisi une Squeeze i386, rien ne vous empêche de choisir une Lenny amd64 ou bien même une Sid...)

Astuces :

_Vous pouvez utiliser un dépôt local pour cette installation. Détails ici [https://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23065 sur le forum.debian-fr.org]

_Si vous avez une mauvaise connexion, mais disposez d'un CD d'installation, vous pouvez remplacer l'adresse du dépôt par file:/cdrom/debian/

_En ajoutant l'option --variant=minbase à debootstrap, vous installerez uniquement le strict minimum de paquets (pas d'aptitude, de vim, d'exim4, etc.).

 root@Janus:/var/chroot/squeeze_i386_sda4# debootstrap --arch i386 squeeze /var/chroot/squeeze_i386_sda4/ http://ftp2.fr.debian.org/debian/
 I: Retrieving Release
 I: Retrieving Packages
 I: Validating Packages
 I: Resolving dependencies of required packages...
 I: Resolving dependencies of base packages...
 I: Found additional required dependencies: insserv libbz2-1.0 libdb4.8 libslang2 
 I: Found additional base dependencies: libnfnetlink0 libsqlite3-0 
 I: Checking component main on http://ftp2.fr.debian.org/debian...
 I: Retrieving/Validating un tas de paquets
 I: Chosen extractor for .deb packages: dpkg-deb
 I: Extracting un tas de paquets...
 I: Installing core packages...
 I: Unpacking required packages...
 I: Unpacking un tas de paquets...
 I: Configuring required packages...
 I: Configuring un tas de paquets...
 I: Unpacking the base system...
 I: Unpacking un tas de paquets...
 I: Configuring the base system...
 I: Configuring un tas de paquets...
 I: Base system installed successfully.

Si tout s'est bien passé, un &quot;ls&quot; vous retournera la toute nouvelle arborescence :
 root@Janus:/var/chroot/squeeze_i386_sda4# ls
 bin boot dev etc home lib lost+found media mnt opt proc root sbin selinux srv sys tmp usr var

À ce niveau, votre Squeeze est installée, mais elle n'est pas pleinement fonctionnelle ni « autonome ». Vous ne pourrez pas démarrer dessus…

== Préparation du chroot ==

Il faut maintenant préparer le chroot. Trois répertoires sont importants pour que cela fonctionne convenablement : /tmp, /dev et /proc.

Vous devez éditer votre fstab pour que ces répertoires soient montés (et liés - « bind/rbind ») automatiquement dans votre répertoire chroot.

 root@Janus:/var/chroot/squeeze_i386_sda4# nano /etc/fstab 

Ajoutez-y :

 ## chroot Squeeze i386 sda4
 /tmp  /var/chroot/squeeze_i386_sda4/tmp  none bind  0 0
 /dev  /var/chroot/squeeze_i386_sda4/dev  none rbind 0 0
 /proc /var/chroot/squeeze_i386_sda4/proc none bind  0 0

Ctrl+O (enregistrer) Ctrl+X (Quitter)

 root@Janus:/var/chroot/squeeze_i386_sda4# mount -a

(cette commande monte tout ce qui est dans votre fstab)

Pour « normaliser les comptes et groupes » de votre nouvelle Squeeze (que les utilisateurs et groupes aient les mêmes identifiants dans votre système &quot;hôte&quot; et dans votre chroot) tapez les commandes suivantes :

 root@Janus:/var/chroot/squeeze_i386_sda4# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/passwd &gt;&gt; /var/chroot/squeeze_i386_sda4/etc/passwd
 root@Janus:/var/chroot/squeeze_i386_sda4# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/group &gt;&gt; /var/chroot/squeeze_i386_sda4/etc/group

Vous allez maintenant entrer dans votre environnement chroot (tadaa !) :

 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4
 root@Janus:/#

== Finalisation de l'installation et réglages de la Squeeze ==

Vous êtes maintenant dans votre nouvelle Squeeze, mais ce n'est pas terminé, votre système est incomplet, impossible de démarrer dessus…

=== &quot;locales&quot; ===

Nous allons maintenant mettre en français (ou ce que vous voulez…), configurer la localisation, et surtout… régler l'heure. L'heure est très importante. Si vous démarrez sur ce nouveau système avec une mauvaise heure (dans le futur par rapport au système sur lequel vous êtes), le prochain démarrage vous laissera un goût amer, vous serez obligé de faire un fsck…

En effet, au montage des disques le système inscrit l'heure (au tout début du disque). Si cette heure est « dans le futur », au démarrage suivant (sur une autre installation), il ne voudra pas démarrer et exigera une vérification de disque…

 root@Janus:/# apt-get update
 root@Janus:/# apt-get install locales
 root@Janus:/# dpkg-reconfigure locales
 root@Janus:/# dpkg-reconfigure tzdata
 root@Janus:/# hwclock --systohc --utc

Il faut modifier le fichier /etc/default/rcS pour forcer le système à se mettre en heure locale…

Explications sur [https://forum.debian-fr.org/viewtopic.php?p=210286#p210286 le forum.debian-fr.org]

 root@Janus:/# nano /etc/default/rcS

Il faut modifier la ligne utc : UTC=no

 root@Janus:/# apt-get install ntpdate
 root@Janus:/# ntpdate ntp.metas.ch

=== Le sources.list ===

Nous allons maintenant compléter nos dépôts

J'ai complété avec quelques dépôts tiers. Vous pourriez tout aussi bien ne pas le faire, mais c'est sympa d'avoir un peu de choix, non ? J'ai ajouté le dépôt « backports » pour avoir accès à un noyau récent, vous n'êtes, là encore, pas obligé de le faire.

 root@Janus:/# nano /etc/apt/sources.list
 deb http://ftp2.fr.debian.org/debian/ squeeze main
 ## Mises-à-jour de sécurité
 deb http://security.debian.org/ squeeze/updates main
 deb http://ftp2.fr.debian.org/debian/ squeeze-updates main
 ## Rétroportages - http://backports-master.debian.org/
 deb http://debian.advalem.net/debian-backports/ squeeze-backports main
 ## Debian Multimedia - http://deb-multimedia.org/
 deb http://debian-multimedia.tryphon.eu/ squeeze main

Si vous décidez d'ajouter les dépôts Multimedia, il peut être intéressant de créer un fichier preferences pour leur attribuer une priorité moins importante que les dépôts officiels de Debian. De cette façon vous éviterez des problèmes de compatibilité entre versions.

 root@Janus:/# nano /etc/apt/preferences
 Package: *
 Pin: release o=Unofficial Multimedia Packages
 Pin-Priority: 400

Mettons à jour :

 root@Janus:/# apt-get update
Vous obtiendrez probablement cette erreur :
 W: Erreur de GPG : http://debian-multimedia.tryphon.eu squeeze Release : Les signatures suivantes n'ont pas pu être vérifiées
 car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907
Dans ce cas la solution est simple :
 root@Janus:/# apt-get install deb-multimedia-keyring &amp;&amp; apt-get update
 ATTENTION : les paquets suivants n'ont pas été authentifiés.
   deb-multimedia-keyring
 Faut-il installer ces paquets sans vérification (o/N) ? o
 root@Janus:/# apt-get upgrade

/!\ Si le paquet deb-multimedia-keyring n'existe pas sur le serveur que vous utilisez, remplacez-le dans les commandes précédentes par debian-multimedia-keyring.

=== Clavier === 

Configurons maintenant le clavier

 root@Janus:/# apt-get install console-data

Je ne sais pour quelle raison il nous met d'office le clavier mac-usb-fr… Dans le chroot il ne doit pas détecter autre chose…

 Looking for keymap to install:
 mac-usb-fr

Rectifions :

 root@Janus:/# dpkg-reconfigure -plow console-data
 (option choisir un codage clavier dans la liste complète) - pc / azerty / French / Same as X11 (latin9) / Standard
 Looking for keymap to install:
 fr-latin9 (cette fois-ci c'est bon)
 
=== hostname et fstab ===

 root@Janus:/# exit

Nous sommes sortis du chroot, quelques fichiers à récupérer… Pour avoir un bon hostname, le réseau, le montage correct des disques…

 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/hosts /etc/hostname /etc/resolv.conf /var/chroot/squeeze_i386_sda4/etc/
 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/network/interfaces /var/chroot/squeeze_i386_sda4/etc/network/
 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/fstab /var/chroot/squeeze_i386_sda4/etc/
 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4/

+ Réglage du fsab

 root@Janus:/# blkid (cette commande permet de récupérer le UUID de vos disques pour votre nouveau fstab…
 Ne vous faites pas prendre, le formatage change l'UUID…)
 /dev/sda1: UUID=&quot;83953ec9-f173-4bde-84b4-77cfa0ad5d95&quot; TYPE=&quot;ext4&quot; 
 /dev/sda2: UUID=&quot;cfe0a0d6-3280-4104-878d-efede6cce024&quot; TYPE=&quot;swap&quot; 
 /dev/sda3: UUID=&quot;57a6f7ec-8de6-4f47-a244-f171c6a41ab3&quot; TYPE=&quot;ext4&quot; 
 /dev/sda4: UUID=&quot;34bf3784-2c97-48e3-92ce-025e3cd6344c&quot; TYPE=&quot;ext4&quot; 

 root@Janus:/# nano /etc/fstab (à rectifier en fonction de votre configuration)
 proc                                      /proc           proc        defaults          0 0
 UUID=34bf3784-2c97-48e3-92ce-025e3cd6344c /               ext4        errors=remount-ro 0 1
 UUID=57a6f7ec-8de6-4f47-a244-f171c6a41ab3 /home           ext4        defaults          0 2
 UUID=cfe0a0d6-3280-4104-878d-efede6cce024 none            swap        sw                0 0
 /dev/scd0                                 /media/cdrom0   udf,iso9660 user,noauto       0 0
 /dev/scd1                                 /media/cdrom1   udf,iso9660 user,noauto       0 0
 /dev/fd0                                  /media/floppy0  auto        rw,user,noauto    0 0

Création des répertoire de montage des disques de la nouvelle machine : (en fonction de votre configuration et de vos choix...)

 root@Janus:/# mkdir /media/cdrom0 /media/cdrom1 /media/floppy0

=== L'environnement graphique ===

Maintenant ? Un environnement graphique ! (J'ai choisi Xfce, vous faites comme vous voulez… [[Environnement graphique::Gnome]], [[Environnement graphique::Kde]], aucun…

/!\ N'oubliez pas d'installer aussi un gestionnaire de connexion !

 root@Janus:/# apt-get install xfce4 gdm

=== Le noyau et Grub2 ===

Installons un noyau… Ce serait bête d'oublier  :wink: 

 root@Janus:/# apt-cache search linux-image (choisissez dans la liste qu'il vous propose,
 celui que je cite n'est qu'un exemple que vous n'êtes pas forcés de suivre…)
 (…)
 linux-image-3.2.0-0.bpo.2-686-pae - Linux 3.2 for modern PCs
 (…)

Ici il faut récupérer votre kernel-img.conf qui permette de convenablement lancer initramfs à l'installation du nouveau noyau dans le chroot.

Ce fichier n'existe pas dans le système créé par debootstrap.

La ligne intéressante : do_initrd = yes

 root@Janus:/# exit
 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/kernel-img.conf /var/chroot/squeeze_i386_sda4/etc/kernel-img.conf
 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4
 root@Janus:/# apt-get install -t squeeze-backports linux-image-3.2.0-0.bpo.2-686-pae
 root@Janus:/# exit

Maintenant... Modifions notre grub pour que ce nouveau système soit opérationnel :
/!\ Attention, je suis sous Grub2. Si vous êtes sous Grub &quot;legacy&quot; la commande est différente évidemment…

 root@Janus:/var/chroot/squeeze_i386_sda4# apt-get install os-prober
 root@Janus:/var/chroot/squeeze_i386_sda4# update-grub
 (…)
 Found Debian GNU/Linux (6.0.4) on /dev/sda4
 (…)


=== Divers - mots de passe ===

Derniers &quot;fignolages&quot;… J'installe un navigateur Web (Iceweasel), et GParted.

Vous pouvez bien sûr adpater cette commande pour installer vos logiciels habituels ! 

 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4
 root@Janus:/# apt-get install gparted iceweasel iceweasel-l10n-fr

Enfin, les mots de passe...

Debootstrap installe un système sans mots de passe… Si vous redémarrez maintenant vous vous connecterez en root dans votre nouveau système sans montrer patte blanche… Un peu gênant, non ?

 root@Janus:/# nano /etc/passwd
 (…)
 legoth:x:1000:1000:Le Gonidec,,,:/home/legoth:/bin/sh
 (…)

Vous enlevez le x pour que cela ressemble à ça :

 legoth::1000:1000:Le Gonidec,,,:/home/legoth:/bin/sh

Ceci afin de pouvoir connecter vos utilisateurs &quot;normaux&quot;. Il faut maintenant créer les mots de passe.

 root@Janus:/# passwd
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 root@Janus:/# su legoth -c passwd
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 root@Janus:/# exit
 root@Janus:/var/chroot/squeeze_i386_sda4# reboot

Voilà : vous disposez d'une toute fraîche installation, fonctionnelle !

== Taskel ==

Pour avoir un système un peu plus complet, en fonction de vos besoins, vous pouvez utiliser l'utilitaire tasksel.

La commande suivante détaille les &quot;tâches&quot; que tasksel peut réaliser pour vous… (vous remarquerez que ce sont les mêmes choix que dans une installation &quot;classique&quot; qui sont proposés)

 root@Janus:/# tasksel --list-tasks
 u desktop	Graphical desktop environment
 u web-server	Web server
 u print-server	Print server
 u dns-server	DNS server
 u file-server	File server
 u mail-server	Mail server
 u database-server	SQL database
 u ssh-server	SSH server
 u laptop	Laptop
 u manual	manual package selection

Chaque &quot;tâche&quot; installe un ensemble de paquets utiles pour certaines utilisations. &quot;u&quot; pour non installé. Une tâche installée commence par &quot;i&quot;.

Il ne vous reste plus qu'a taper dans la console :

 root@Janus:/# tasksel --task-packages nom_tache

Il existe une autre tâche, qui n'est pas dans la liste ci-dessus :
 tasksel install standard
Cette commande installe un ensemble de paquets &quot;standards&quot;. Je vous renvoie au [https://www.debian-facile.org/wiki/manuel:tasksel Wiki de debian-facile] pour plus de détails.

== Versions des programmes utilisés dans ce tutoriel ==

bash		4.1-3

apt		0.8.10.3+squeeze1

e2fsprogs	1.41.12-4stable1

coreutils	8.5-1

mount		2.17.2-9

debootstrap	1.0.26+squeeze1

nano		2.2.4-1

grep		2.6.3-3

os-prober	1.42

grub-pc		1.98+20100804-14+squeeze1

sysvinit	2.88dsf-13.1


--[[Utilisateur:Vv222|Vv222]] 8 mai 2012 à 22:00 (CEST)

[https://www.debian-fr.org/sujet38752.html source]

[https://www.isalo.org/wiki.debian-fr/index.php?title=Installation_lenny_chroot_debootstrap source]

[https://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 source]

[[Catégorie:Installation]]</text>
      <sha1>jotg1yyq6amibyw7jmwzqdbxwr390m4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4427</id>
      <parentid>4240</parentid>
      <timestamp>2012-08-30T16:18:19Z</timestamp>
      <contributor>
        <username>Alan Picol</username>
        <id>239</id>
      </contributor>
      <minor/>
      <comment>bonne adresse debian facile</comment>
      <text xml:space="preserve" bytes="15508">Installation d'une Squeeze avec debootstrap et chroot

L'objectif est d'installer une Squeeze (sur une nouvelle partition) à partir d'une autre Debian (ici une autre Squeeze, mais cette méthode fonctionnera aussi bien avec une autre version), sans avoir besoin de redémarrer ma machine une seule fois…

Avantage : rester dans mon environnement de travail pendant toute l'installation…

Parti-pris : utilisation de nano comme éditeur

== Pré-requis ==

Pré-requis : Installer debootstrap (chroot se trouve dans le paquet coreutils normalement déjà installé dans votre Debian).

 root@Janus:~# apt-get install debootstrap

Formatage de la partition qui va recevoir la Squeeze :

J'ai choisi de formater en ext4, vous pouvez choisir le système de fichiers de votre choix bien sûr.

La partition cible (ici /dev/sda4) devra aussi être adaptée à votre configuration.

 root@Janus:~# mkfs -V -t ext4 /dev/sda4

Création du répertoire qui va recevoir le système et montage de la partition fraîchement formatée dans ce nouveau répertoire.

J'ai choisi /var/chroot/squeeze_i386_sda4.

Un petit « ls » à la fin pour vérifier que la partition est bien montée.

 root@Janus:~# mkdir -p /var/chroot/squeeze_i386_sda4
 root@Janus:~# mount /dev/sda4 /var/chroot/squeeze_i386_sda4
 root@Janus:~# cd /var/chroot/squeeze_i386_sda4
 root@Janus:/var/chroot/squeeze_i386_sda4# ls
 lost+found

== Installation avec debootstrap ==

Installation de la Squeeze avec debootstrap (j'ai choisi une Squeeze i386, rien ne vous empêche de choisir une Lenny amd64 ou bien même une Sid...)

Astuces :

_Vous pouvez utiliser un dépôt local pour cette installation. Détails ici [https://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23065 sur le forum.debian-fr.org]

_Si vous avez une mauvaise connexion, mais disposez d'un CD d'installation, vous pouvez remplacer l'adresse du dépôt par file:/cdrom/debian/

_En ajoutant l'option --variant=minbase à debootstrap, vous installerez uniquement le strict minimum de paquets (pas d'aptitude, de vim, d'exim4, etc.).

 root@Janus:/var/chroot/squeeze_i386_sda4# debootstrap --arch i386 squeeze /var/chroot/squeeze_i386_sda4/ http://ftp2.fr.debian.org/debian/
 I: Retrieving Release
 I: Retrieving Packages
 I: Validating Packages
 I: Resolving dependencies of required packages...
 I: Resolving dependencies of base packages...
 I: Found additional required dependencies: insserv libbz2-1.0 libdb4.8 libslang2 
 I: Found additional base dependencies: libnfnetlink0 libsqlite3-0 
 I: Checking component main on http://ftp2.fr.debian.org/debian...
 I: Retrieving/Validating un tas de paquets
 I: Chosen extractor for .deb packages: dpkg-deb
 I: Extracting un tas de paquets...
 I: Installing core packages...
 I: Unpacking required packages...
 I: Unpacking un tas de paquets...
 I: Configuring required packages...
 I: Configuring un tas de paquets...
 I: Unpacking the base system...
 I: Unpacking un tas de paquets...
 I: Configuring the base system...
 I: Configuring un tas de paquets...
 I: Base system installed successfully.

Si tout s'est bien passé, un &quot;ls&quot; vous retournera la toute nouvelle arborescence :
 root@Janus:/var/chroot/squeeze_i386_sda4# ls
 bin boot dev etc home lib lost+found media mnt opt proc root sbin selinux srv sys tmp usr var

À ce niveau, votre Squeeze est installée, mais elle n'est pas pleinement fonctionnelle ni « autonome ». Vous ne pourrez pas démarrer dessus…

== Préparation du chroot ==

Il faut maintenant préparer le chroot. Trois répertoires sont importants pour que cela fonctionne convenablement : /tmp, /dev et /proc.

Vous devez éditer votre fstab pour que ces répertoires soient montés (et liés - « bind/rbind ») automatiquement dans votre répertoire chroot.

 root@Janus:/var/chroot/squeeze_i386_sda4# nano /etc/fstab 

Ajoutez-y :

 ## chroot Squeeze i386 sda4
 /tmp  /var/chroot/squeeze_i386_sda4/tmp  none bind  0 0
 /dev  /var/chroot/squeeze_i386_sda4/dev  none rbind 0 0
 /proc /var/chroot/squeeze_i386_sda4/proc none bind  0 0

Ctrl+O (enregistrer) Ctrl+X (Quitter)

 root@Janus:/var/chroot/squeeze_i386_sda4# mount -a

(cette commande monte tout ce qui est dans votre fstab)

Pour « normaliser les comptes et groupes » de votre nouvelle Squeeze (que les utilisateurs et groupes aient les mêmes identifiants dans votre système &quot;hôte&quot; et dans votre chroot) tapez les commandes suivantes :

 root@Janus:/var/chroot/squeeze_i386_sda4# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/passwd &gt;&gt; /var/chroot/squeeze_i386_sda4/etc/passwd
 root@Janus:/var/chroot/squeeze_i386_sda4# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/group &gt;&gt; /var/chroot/squeeze_i386_sda4/etc/group

Vous allez maintenant entrer dans votre environnement chroot (tadaa !) :

 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4
 root@Janus:/#

== Finalisation de l'installation et réglages de la Squeeze ==

Vous êtes maintenant dans votre nouvelle Squeeze, mais ce n'est pas terminé, votre système est incomplet, impossible de démarrer dessus…

=== &quot;locales&quot; ===

Nous allons maintenant mettre en français (ou ce que vous voulez…), configurer la localisation, et surtout… régler l'heure. L'heure est très importante. Si vous démarrez sur ce nouveau système avec une mauvaise heure (dans le futur par rapport au système sur lequel vous êtes), le prochain démarrage vous laissera un goût amer, vous serez obligé de faire un fsck…

En effet, au montage des disques le système inscrit l'heure (au tout début du disque). Si cette heure est « dans le futur », au démarrage suivant (sur une autre installation), il ne voudra pas démarrer et exigera une vérification de disque…

 root@Janus:/# apt-get update
 root@Janus:/# apt-get install locales
 root@Janus:/# dpkg-reconfigure locales
 root@Janus:/# dpkg-reconfigure tzdata
 root@Janus:/# hwclock --systohc --utc

Il faut modifier le fichier /etc/default/rcS pour forcer le système à se mettre en heure locale…

Explications sur [https://forum.debian-fr.org/viewtopic.php?p=210286#p210286 le forum.debian-fr.org]

 root@Janus:/# nano /etc/default/rcS

Il faut modifier la ligne utc : UTC=no

 root@Janus:/# apt-get install ntpdate
 root@Janus:/# ntpdate ntp.metas.ch

=== Le sources.list ===

Nous allons maintenant compléter nos dépôts

J'ai complété avec quelques dépôts tiers. Vous pourriez tout aussi bien ne pas le faire, mais c'est sympa d'avoir un peu de choix, non ? J'ai ajouté le dépôt « backports » pour avoir accès à un noyau récent, vous n'êtes, là encore, pas obligé de le faire.

 root@Janus:/# nano /etc/apt/sources.list
 deb http://ftp2.fr.debian.org/debian/ squeeze main
 ## Mises-à-jour de sécurité
 deb http://security.debian.org/ squeeze/updates main
 deb http://ftp2.fr.debian.org/debian/ squeeze-updates main
 ## Rétroportages - http://backports-master.debian.org/
 deb http://debian.advalem.net/debian-backports/ squeeze-backports main
 ## Debian Multimedia - http://deb-multimedia.org/
 deb http://debian-multimedia.tryphon.eu/ squeeze main

Si vous décidez d'ajouter les dépôts Multimedia, il peut être intéressant de créer un fichier preferences pour leur attribuer une priorité moins importante que les dépôts officiels de Debian. De cette façon vous éviterez des problèmes de compatibilité entre versions.

 root@Janus:/# nano /etc/apt/preferences
 Package: *
 Pin: release o=Unofficial Multimedia Packages
 Pin-Priority: 400

Mettons à jour :

 root@Janus:/# apt-get update
Vous obtiendrez probablement cette erreur :
 W: Erreur de GPG : http://debian-multimedia.tryphon.eu squeeze Release : Les signatures suivantes n'ont pas pu être vérifiées
 car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907
Dans ce cas la solution est simple :
 root@Janus:/# apt-get install deb-multimedia-keyring &amp;&amp; apt-get update
 ATTENTION : les paquets suivants n'ont pas été authentifiés.
   deb-multimedia-keyring
 Faut-il installer ces paquets sans vérification (o/N) ? o
 root@Janus:/# apt-get upgrade

/!\ Si le paquet deb-multimedia-keyring n'existe pas sur le serveur que vous utilisez, remplacez-le dans les commandes précédentes par debian-multimedia-keyring.

=== Clavier === 

Configurons maintenant le clavier

 root@Janus:/# apt-get install console-data

Je ne sais pour quelle raison il nous met d'office le clavier mac-usb-fr… Dans le chroot il ne doit pas détecter autre chose…

 Looking for keymap to install:
 mac-usb-fr

Rectifions :

 root@Janus:/# dpkg-reconfigure -plow console-data
 (option choisir un codage clavier dans la liste complète) - pc / azerty / French / Same as X11 (latin9) / Standard
 Looking for keymap to install:
 fr-latin9 (cette fois-ci c'est bon)
 
=== hostname et fstab ===

 root@Janus:/# exit

Nous sommes sortis du chroot, quelques fichiers à récupérer… Pour avoir un bon hostname, le réseau, le montage correct des disques…

 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/hosts /etc/hostname /etc/resolv.conf /var/chroot/squeeze_i386_sda4/etc/
 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/network/interfaces /var/chroot/squeeze_i386_sda4/etc/network/
 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/fstab /var/chroot/squeeze_i386_sda4/etc/
 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4/

+ Réglage du fsab

 root@Janus:/# blkid (cette commande permet de récupérer le UUID de vos disques pour votre nouveau fstab…
 Ne vous faites pas prendre, le formatage change l'UUID…)
 /dev/sda1: UUID=&quot;83953ec9-f173-4bde-84b4-77cfa0ad5d95&quot; TYPE=&quot;ext4&quot; 
 /dev/sda2: UUID=&quot;cfe0a0d6-3280-4104-878d-efede6cce024&quot; TYPE=&quot;swap&quot; 
 /dev/sda3: UUID=&quot;57a6f7ec-8de6-4f47-a244-f171c6a41ab3&quot; TYPE=&quot;ext4&quot; 
 /dev/sda4: UUID=&quot;34bf3784-2c97-48e3-92ce-025e3cd6344c&quot; TYPE=&quot;ext4&quot; 

 root@Janus:/# nano /etc/fstab (à rectifier en fonction de votre configuration)
 proc                                      /proc           proc        defaults          0 0
 UUID=34bf3784-2c97-48e3-92ce-025e3cd6344c /               ext4        errors=remount-ro 0 1
 UUID=57a6f7ec-8de6-4f47-a244-f171c6a41ab3 /home           ext4        defaults          0 2
 UUID=cfe0a0d6-3280-4104-878d-efede6cce024 none            swap        sw                0 0
 /dev/scd0                                 /media/cdrom0   udf,iso9660 user,noauto       0 0
 /dev/scd1                                 /media/cdrom1   udf,iso9660 user,noauto       0 0
 /dev/fd0                                  /media/floppy0  auto        rw,user,noauto    0 0

Création des répertoire de montage des disques de la nouvelle machine : (en fonction de votre configuration et de vos choix...)

 root@Janus:/# mkdir /media/cdrom0 /media/cdrom1 /media/floppy0

=== L'environnement graphique ===

Maintenant ? Un environnement graphique ! (J'ai choisi Xfce, vous faites comme vous voulez… [[Environnement graphique::Gnome]], [[Environnement graphique::Kde]], aucun…

/!\ N'oubliez pas d'installer aussi un gestionnaire de connexion !

 root@Janus:/# apt-get install xfce4 gdm

=== Le noyau et Grub2 ===

Installons un noyau… Ce serait bête d'oublier  :wink: 

 root@Janus:/# apt-cache search linux-image (choisissez dans la liste qu'il vous propose,
 celui que je cite n'est qu'un exemple que vous n'êtes pas forcés de suivre…)
 (…)
 linux-image-3.2.0-0.bpo.2-686-pae - Linux 3.2 for modern PCs
 (…)

Ici il faut récupérer votre kernel-img.conf qui permette de convenablement lancer initramfs à l'installation du nouveau noyau dans le chroot.

Ce fichier n'existe pas dans le système créé par debootstrap.

La ligne intéressante : do_initrd = yes

 root@Janus:/# exit
 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/kernel-img.conf /var/chroot/squeeze_i386_sda4/etc/kernel-img.conf
 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4
 root@Janus:/# apt-get install -t squeeze-backports linux-image-3.2.0-0.bpo.2-686-pae
 root@Janus:/# exit

Maintenant... Modifions notre grub pour que ce nouveau système soit opérationnel :
/!\ Attention, je suis sous Grub2. Si vous êtes sous Grub &quot;legacy&quot; la commande est différente évidemment…

 root@Janus:/var/chroot/squeeze_i386_sda4# apt-get install os-prober
 root@Janus:/var/chroot/squeeze_i386_sda4# update-grub
 (…)
 Found Debian GNU/Linux (6.0.4) on /dev/sda4
 (…)


=== Divers - mots de passe ===

Derniers &quot;fignolages&quot;… J'installe un navigateur Web (Iceweasel), et GParted.

Vous pouvez bien sûr adpater cette commande pour installer vos logiciels habituels ! 

 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4
 root@Janus:/# apt-get install gparted iceweasel iceweasel-l10n-fr

Enfin, les mots de passe...

Debootstrap installe un système sans mots de passe… Si vous redémarrez maintenant vous vous connecterez en root dans votre nouveau système sans montrer patte blanche… Un peu gênant, non ?

 root@Janus:/# nano /etc/passwd
 (…)
 legoth:x:1000:1000:Le Gonidec,,,:/home/legoth:/bin/sh
 (…)

Vous enlevez le x pour que cela ressemble à ça :

 legoth::1000:1000:Le Gonidec,,,:/home/legoth:/bin/sh

Ceci afin de pouvoir connecter vos utilisateurs &quot;normaux&quot;. Il faut maintenant créer les mots de passe.

 root@Janus:/# passwd
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 root@Janus:/# su legoth -c passwd
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 root@Janus:/# exit
 root@Janus:/var/chroot/squeeze_i386_sda4# reboot

Voilà : vous disposez d'une toute fraîche installation, fonctionnelle !

== Taskel ==

Pour avoir un système un peu plus complet, en fonction de vos besoins, vous pouvez utiliser l'utilitaire tasksel.

La commande suivante détaille les &quot;tâches&quot; que tasksel peut réaliser pour vous… (vous remarquerez que ce sont les mêmes choix que dans une installation &quot;classique&quot; qui sont proposés)

 root@Janus:/# tasksel --list-tasks
 u desktop	Graphical desktop environment
 u web-server	Web server
 u print-server	Print server
 u dns-server	DNS server
 u file-server	File server
 u mail-server	Mail server
 u database-server	SQL database
 u ssh-server	SSH server
 u laptop	Laptop
 u manual	manual package selection

Chaque &quot;tâche&quot; installe un ensemble de paquets utiles pour certaines utilisations. &quot;u&quot; pour non installé. Une tâche installée commence par &quot;i&quot;.

Il ne vous reste plus qu'a taper dans la console :

 root@Janus:/# tasksel --task-packages nom_tache

Il existe une autre tâche, qui n'est pas dans la liste ci-dessus :
 tasksel install standard
Cette commande installe un ensemble de paquets &quot;standards&quot;. Je vous renvoie au [http://wiki.debian-facile.org/manuel:tasksel Wiki de debian-facile] pour plus de détails.

== Versions des programmes utilisés dans ce tutoriel ==

bash		4.1-3

apt		0.8.10.3+squeeze1

e2fsprogs	1.41.12-4stable1

coreutils	8.5-1

mount		2.17.2-9

debootstrap	1.0.26+squeeze1

nano		2.2.4-1

grep		2.6.3-3

os-prober	1.42

grub-pc		1.98+20100804-14+squeeze1

sysvinit	2.88dsf-13.1


--[[Utilisateur:Vv222|Vv222]] 8 mai 2012 à 22:00 (CEST)

[https://www.debian-fr.org/sujet38752.html source]

[https://www.isalo.org/wiki.debian-fr/index.php?title=Installation_lenny_chroot_debootstrap source]

[https://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 source]

[[Catégorie:Installation]]</text>
      <sha1>b7ioimhq6bt59n6bgw1wm6w1i0fkn39</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4428</id>
      <parentid>4427</parentid>
      <timestamp>2012-08-31T07:22:27Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Renvoie sur page Tasksel du Wiki</comment>
      <text xml:space="preserve" bytes="15492">Installation d'une Squeeze avec debootstrap et chroot

L'objectif est d'installer une Squeeze (sur une nouvelle partition) à partir d'une autre Debian (ici une autre Squeeze, mais cette méthode fonctionnera aussi bien avec une autre version), sans avoir besoin de redémarrer ma machine une seule fois…

Avantage : rester dans mon environnement de travail pendant toute l'installation…

Parti-pris : utilisation de nano comme éditeur

== Pré-requis ==

Pré-requis : Installer debootstrap (chroot se trouve dans le paquet coreutils normalement déjà installé dans votre Debian).

 root@Janus:~# apt-get install debootstrap

Formatage de la partition qui va recevoir la Squeeze :

J'ai choisi de formater en ext4, vous pouvez choisir le système de fichiers de votre choix bien sûr.

La partition cible (ici /dev/sda4) devra aussi être adaptée à votre configuration.

 root@Janus:~# mkfs -V -t ext4 /dev/sda4

Création du répertoire qui va recevoir le système et montage de la partition fraîchement formatée dans ce nouveau répertoire.

J'ai choisi /var/chroot/squeeze_i386_sda4.

Un petit « ls » à la fin pour vérifier que la partition est bien montée.

 root@Janus:~# mkdir -p /var/chroot/squeeze_i386_sda4
 root@Janus:~# mount /dev/sda4 /var/chroot/squeeze_i386_sda4
 root@Janus:~# cd /var/chroot/squeeze_i386_sda4
 root@Janus:/var/chroot/squeeze_i386_sda4# ls
 lost+found

== Installation avec debootstrap ==

Installation de la Squeeze avec debootstrap (j'ai choisi une Squeeze i386, rien ne vous empêche de choisir une Lenny amd64 ou bien même une Sid...)

Astuces :

_Vous pouvez utiliser un dépôt local pour cette installation. Détails ici [https://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23065 sur le forum.debian-fr.org]

_Si vous avez une mauvaise connexion, mais disposez d'un CD d'installation, vous pouvez remplacer l'adresse du dépôt par file:/cdrom/debian/

_En ajoutant l'option --variant=minbase à debootstrap, vous installerez uniquement le strict minimum de paquets (pas d'aptitude, de vim, d'exim4, etc.).

 root@Janus:/var/chroot/squeeze_i386_sda4# debootstrap --arch i386 squeeze /var/chroot/squeeze_i386_sda4/ http://ftp2.fr.debian.org/debian/
 I: Retrieving Release
 I: Retrieving Packages
 I: Validating Packages
 I: Resolving dependencies of required packages...
 I: Resolving dependencies of base packages...
 I: Found additional required dependencies: insserv libbz2-1.0 libdb4.8 libslang2 
 I: Found additional base dependencies: libnfnetlink0 libsqlite3-0 
 I: Checking component main on http://ftp2.fr.debian.org/debian...
 I: Retrieving/Validating un tas de paquets
 I: Chosen extractor for .deb packages: dpkg-deb
 I: Extracting un tas de paquets...
 I: Installing core packages...
 I: Unpacking required packages...
 I: Unpacking un tas de paquets...
 I: Configuring required packages...
 I: Configuring un tas de paquets...
 I: Unpacking the base system...
 I: Unpacking un tas de paquets...
 I: Configuring the base system...
 I: Configuring un tas de paquets...
 I: Base system installed successfully.

Si tout s'est bien passé, un &quot;ls&quot; vous retournera la toute nouvelle arborescence :
 root@Janus:/var/chroot/squeeze_i386_sda4# ls
 bin boot dev etc home lib lost+found media mnt opt proc root sbin selinux srv sys tmp usr var

À ce niveau, votre Squeeze est installée, mais elle n'est pas pleinement fonctionnelle ni « autonome ». Vous ne pourrez pas démarrer dessus…

== Préparation du chroot ==

Il faut maintenant préparer le chroot. Trois répertoires sont importants pour que cela fonctionne convenablement : /tmp, /dev et /proc.

Vous devez éditer votre fstab pour que ces répertoires soient montés (et liés - « bind/rbind ») automatiquement dans votre répertoire chroot.

 root@Janus:/var/chroot/squeeze_i386_sda4# nano /etc/fstab 

Ajoutez-y :

 ## chroot Squeeze i386 sda4
 /tmp  /var/chroot/squeeze_i386_sda4/tmp  none bind  0 0
 /dev  /var/chroot/squeeze_i386_sda4/dev  none rbind 0 0
 /proc /var/chroot/squeeze_i386_sda4/proc none bind  0 0

Ctrl+O (enregistrer) Ctrl+X (Quitter)

 root@Janus:/var/chroot/squeeze_i386_sda4# mount -a

(cette commande monte tout ce qui est dans votre fstab)

Pour « normaliser les comptes et groupes » de votre nouvelle Squeeze (que les utilisateurs et groupes aient les mêmes identifiants dans votre système &quot;hôte&quot; et dans votre chroot) tapez les commandes suivantes :

 root@Janus:/var/chroot/squeeze_i386_sda4# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/passwd &gt;&gt; /var/chroot/squeeze_i386_sda4/etc/passwd
 root@Janus:/var/chroot/squeeze_i386_sda4# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/group &gt;&gt; /var/chroot/squeeze_i386_sda4/etc/group

Vous allez maintenant entrer dans votre environnement chroot (tadaa !) :

 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4
 root@Janus:/#

== Finalisation de l'installation et réglages de la Squeeze ==

Vous êtes maintenant dans votre nouvelle Squeeze, mais ce n'est pas terminé, votre système est incomplet, impossible de démarrer dessus…

=== &quot;locales&quot; ===

Nous allons maintenant mettre en français (ou ce que vous voulez…), configurer la localisation, et surtout… régler l'heure. L'heure est très importante. Si vous démarrez sur ce nouveau système avec une mauvaise heure (dans le futur par rapport au système sur lequel vous êtes), le prochain démarrage vous laissera un goût amer, vous serez obligé de faire un fsck…

En effet, au montage des disques le système inscrit l'heure (au tout début du disque). Si cette heure est « dans le futur », au démarrage suivant (sur une autre installation), il ne voudra pas démarrer et exigera une vérification de disque…

 root@Janus:/# apt-get update
 root@Janus:/# apt-get install locales
 root@Janus:/# dpkg-reconfigure locales
 root@Janus:/# dpkg-reconfigure tzdata
 root@Janus:/# hwclock --systohc --utc

Il faut modifier le fichier /etc/default/rcS pour forcer le système à se mettre en heure locale…

Explications sur [https://forum.debian-fr.org/viewtopic.php?p=210286#p210286 le forum.debian-fr.org]

 root@Janus:/# nano /etc/default/rcS

Il faut modifier la ligne utc : UTC=no

 root@Janus:/# apt-get install ntpdate
 root@Janus:/# ntpdate ntp.metas.ch

=== Le sources.list ===

Nous allons maintenant compléter nos dépôts

J'ai complété avec quelques dépôts tiers. Vous pourriez tout aussi bien ne pas le faire, mais c'est sympa d'avoir un peu de choix, non ? J'ai ajouté le dépôt « backports » pour avoir accès à un noyau récent, vous n'êtes, là encore, pas obligé de le faire.

 root@Janus:/# nano /etc/apt/sources.list
 deb http://ftp2.fr.debian.org/debian/ squeeze main
 ## Mises-à-jour de sécurité
 deb http://security.debian.org/ squeeze/updates main
 deb http://ftp2.fr.debian.org/debian/ squeeze-updates main
 ## Rétroportages - http://backports-master.debian.org/
 deb http://debian.advalem.net/debian-backports/ squeeze-backports main
 ## Debian Multimedia - http://deb-multimedia.org/
 deb http://debian-multimedia.tryphon.eu/ squeeze main

Si vous décidez d'ajouter les dépôts Multimedia, il peut être intéressant de créer un fichier preferences pour leur attribuer une priorité moins importante que les dépôts officiels de Debian. De cette façon vous éviterez des problèmes de compatibilité entre versions.

 root@Janus:/# nano /etc/apt/preferences
 Package: *
 Pin: release o=Unofficial Multimedia Packages
 Pin-Priority: 400

Mettons à jour :

 root@Janus:/# apt-get update
Vous obtiendrez probablement cette erreur :
 W: Erreur de GPG : http://debian-multimedia.tryphon.eu squeeze Release : Les signatures suivantes n'ont pas pu être vérifiées
 car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907
Dans ce cas la solution est simple :
 root@Janus:/# apt-get install deb-multimedia-keyring &amp;&amp; apt-get update
 ATTENTION : les paquets suivants n'ont pas été authentifiés.
   deb-multimedia-keyring
 Faut-il installer ces paquets sans vérification (o/N) ? o
 root@Janus:/# apt-get upgrade

/!\ Si le paquet deb-multimedia-keyring n'existe pas sur le serveur que vous utilisez, remplacez-le dans les commandes précédentes par debian-multimedia-keyring.

=== Clavier === 

Configurons maintenant le clavier

 root@Janus:/# apt-get install console-data

Je ne sais pour quelle raison il nous met d'office le clavier mac-usb-fr… Dans le chroot il ne doit pas détecter autre chose…

 Looking for keymap to install:
 mac-usb-fr

Rectifions :

 root@Janus:/# dpkg-reconfigure -plow console-data
 (option choisir un codage clavier dans la liste complète) - pc / azerty / French / Same as X11 (latin9) / Standard
 Looking for keymap to install:
 fr-latin9 (cette fois-ci c'est bon)
 
=== hostname et fstab ===

 root@Janus:/# exit

Nous sommes sortis du chroot, quelques fichiers à récupérer… Pour avoir un bon hostname, le réseau, le montage correct des disques…

 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/hosts /etc/hostname /etc/resolv.conf /var/chroot/squeeze_i386_sda4/etc/
 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/network/interfaces /var/chroot/squeeze_i386_sda4/etc/network/
 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/fstab /var/chroot/squeeze_i386_sda4/etc/
 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4/

+ Réglage du fsab

 root@Janus:/# blkid (cette commande permet de récupérer le UUID de vos disques pour votre nouveau fstab…
 Ne vous faites pas prendre, le formatage change l'UUID…)
 /dev/sda1: UUID=&quot;83953ec9-f173-4bde-84b4-77cfa0ad5d95&quot; TYPE=&quot;ext4&quot; 
 /dev/sda2: UUID=&quot;cfe0a0d6-3280-4104-878d-efede6cce024&quot; TYPE=&quot;swap&quot; 
 /dev/sda3: UUID=&quot;57a6f7ec-8de6-4f47-a244-f171c6a41ab3&quot; TYPE=&quot;ext4&quot; 
 /dev/sda4: UUID=&quot;34bf3784-2c97-48e3-92ce-025e3cd6344c&quot; TYPE=&quot;ext4&quot; 

 root@Janus:/# nano /etc/fstab (à rectifier en fonction de votre configuration)
 proc                                      /proc           proc        defaults          0 0
 UUID=34bf3784-2c97-48e3-92ce-025e3cd6344c /               ext4        errors=remount-ro 0 1
 UUID=57a6f7ec-8de6-4f47-a244-f171c6a41ab3 /home           ext4        defaults          0 2
 UUID=cfe0a0d6-3280-4104-878d-efede6cce024 none            swap        sw                0 0
 /dev/scd0                                 /media/cdrom0   udf,iso9660 user,noauto       0 0
 /dev/scd1                                 /media/cdrom1   udf,iso9660 user,noauto       0 0
 /dev/fd0                                  /media/floppy0  auto        rw,user,noauto    0 0

Création des répertoire de montage des disques de la nouvelle machine : (en fonction de votre configuration et de vos choix...)

 root@Janus:/# mkdir /media/cdrom0 /media/cdrom1 /media/floppy0

=== L'environnement graphique ===

Maintenant ? Un environnement graphique ! (J'ai choisi Xfce, vous faites comme vous voulez… [[Environnement graphique::Gnome]], [[Environnement graphique::Kde]], aucun…

/!\ N'oubliez pas d'installer aussi un gestionnaire de connexion !

 root@Janus:/# apt-get install xfce4 gdm

=== Le noyau et Grub2 ===

Installons un noyau… Ce serait bête d'oublier  :wink: 

 root@Janus:/# apt-cache search linux-image (choisissez dans la liste qu'il vous propose,
 celui que je cite n'est qu'un exemple que vous n'êtes pas forcés de suivre…)
 (…)
 linux-image-3.2.0-0.bpo.2-686-pae - Linux 3.2 for modern PCs
 (…)

Ici il faut récupérer votre kernel-img.conf qui permette de convenablement lancer initramfs à l'installation du nouveau noyau dans le chroot.

Ce fichier n'existe pas dans le système créé par debootstrap.

La ligne intéressante : do_initrd = yes

 root@Janus:/# exit
 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/kernel-img.conf /var/chroot/squeeze_i386_sda4/etc/kernel-img.conf
 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4
 root@Janus:/# apt-get install -t squeeze-backports linux-image-3.2.0-0.bpo.2-686-pae
 root@Janus:/# exit

Maintenant... Modifions notre grub pour que ce nouveau système soit opérationnel :
/!\ Attention, je suis sous Grub2. Si vous êtes sous Grub &quot;legacy&quot; la commande est différente évidemment…

 root@Janus:/var/chroot/squeeze_i386_sda4# apt-get install os-prober
 root@Janus:/var/chroot/squeeze_i386_sda4# update-grub
 (…)
 Found Debian GNU/Linux (6.0.4) on /dev/sda4
 (…)


=== Divers - mots de passe ===

Derniers &quot;fignolages&quot;… J'installe un navigateur Web (Iceweasel), et GParted.

Vous pouvez bien sûr adpater cette commande pour installer vos logiciels habituels ! 

 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4
 root@Janus:/# apt-get install gparted iceweasel iceweasel-l10n-fr

Enfin, les mots de passe...

Debootstrap installe un système sans mots de passe… Si vous redémarrez maintenant vous vous connecterez en root dans votre nouveau système sans montrer patte blanche… Un peu gênant, non ?

 root@Janus:/# nano /etc/passwd
 (…)
 legoth:x:1000:1000:Le Gonidec,,,:/home/legoth:/bin/sh
 (…)

Vous enlevez le x pour que cela ressemble à ça :

 legoth::1000:1000:Le Gonidec,,,:/home/legoth:/bin/sh

Ceci afin de pouvoir connecter vos utilisateurs &quot;normaux&quot;. Il faut maintenant créer les mots de passe.

 root@Janus:/# passwd
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 root@Janus:/# su legoth -c passwd
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 root@Janus:/# exit
 root@Janus:/var/chroot/squeeze_i386_sda4# reboot

Voilà : vous disposez d'une toute fraîche installation, fonctionnelle !

== Tasksel ==

Pour avoir un système un peu plus complet, en fonction de vos besoins, vous pouvez utiliser l'utilitaire [[tasksel|Tasksel]].

La commande suivante détaille les &quot;tâches&quot; que [[tasksel|Tasksel]] peut réaliser pour vous… (vous remarquerez que ce sont les mêmes choix que dans une installation &quot;classique&quot; qui sont proposés)

 root@Janus:/# tasksel --list-tasks
 u desktop	Graphical desktop environment
 u web-server	Web server
 u print-server	Print server
 u dns-server	DNS server
 u file-server	File server
 u mail-server	Mail server
 u database-server	SQL database
 u ssh-server	SSH server
 u laptop	Laptop
 u manual	manual package selection

Chaque &quot;tâche&quot; installe un ensemble de paquets utiles pour certaines utilisations. &quot;u&quot; pour non installé. Une tâche installée commence par &quot;i&quot;.

Il ne vous reste plus qu'a taper dans la console :

 root@Janus:/# tasksel --task-packages nom_tache

Il existe une autre tâche, qui n'est pas dans la liste ci-dessus :
 tasksel install standard
Cette commande installe un ensemble de paquets &quot;standards&quot;. Je vous renvoie à la page [[tasksel|Tasksel]] pour plus de détails.

== Versions des programmes utilisés dans ce tutoriel ==

bash		4.1-3

apt		0.8.10.3+squeeze1

e2fsprogs	1.41.12-4stable1

coreutils	8.5-1

mount		2.17.2-9

debootstrap	1.0.26+squeeze1

nano		2.2.4-1

grep		2.6.3-3

os-prober	1.42

grub-pc		1.98+20100804-14+squeeze1

sysvinit	2.88dsf-13.1


--[[Utilisateur:Vv222|Vv222]] 8 mai 2012 à 22:00 (CEST)

[https://www.debian-fr.org/sujet38752.html source]

[https://www.isalo.org/wiki.debian-fr/index.php?title=Installation_lenny_chroot_debootstrap source]

[https://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 source]

[[Catégorie:Installation]]</text>
      <sha1>sumpp016iju4zdy9t9m08i8x5mgcdtb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4533</id>
      <parentid>4428</parentid>
      <timestamp>2012-10-21T12:49:21Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>mise en valeur des avertissements + ponctuation &quot;...&quot; -&gt; &quot;…&quot;</comment>
      <text xml:space="preserve" bytes="15510">Installation d'une Squeeze avec debootstrap et chroot

L'objectif est d'installer une Squeeze (sur une nouvelle partition) à partir d'une autre Debian (ici une autre Squeeze, mais cette méthode fonctionnera aussi bien avec une autre version), sans avoir besoin de redémarrer ma machine une seule fois…

Avantage : rester dans mon environnement de travail pendant toute l'installation…

Parti-pris : utilisation de nano comme éditeur

== Pré-requis ==

Pré-requis : Installer debootstrap (chroot se trouve dans le paquet coreutils normalement déjà installé dans votre Debian).

 root@Janus:~# apt-get install debootstrap

Formatage de la partition qui va recevoir la Squeeze :

J'ai choisi de formater en ext4, vous pouvez choisir le système de fichiers de votre choix bien sûr.

La partition cible (ici /dev/sda4) devra aussi être adaptée à votre configuration.

 root@Janus:~# mkfs -V -t ext4 /dev/sda4

Création du répertoire qui va recevoir le système et montage de la partition fraîchement formatée dans ce nouveau répertoire.

J'ai choisi /var/chroot/squeeze_i386_sda4.

Un petit « ls » à la fin pour vérifier que la partition est bien montée.

 root@Janus:~# mkdir -p /var/chroot/squeeze_i386_sda4
 root@Janus:~# mount /dev/sda4 /var/chroot/squeeze_i386_sda4
 root@Janus:~# cd /var/chroot/squeeze_i386_sda4
 root@Janus:/var/chroot/squeeze_i386_sda4# ls
 lost+found

== Installation avec debootstrap ==

Installation de la Squeeze avec debootstrap (j'ai choisi une Squeeze i386, rien ne vous empêche de choisir une Lenny amd64 ou bien même une Sid…)

Astuces :

_Vous pouvez utiliser un dépôt local pour cette installation. Détails ici [https://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23065 sur le forum.debian-fr.org]

_Si vous avez une mauvaise connexion, mais disposez d'un CD d'installation, vous pouvez remplacer l'adresse du dépôt par file:/cdrom/debian/

_En ajoutant l'option --variant=minbase à debootstrap, vous installerez uniquement le strict minimum de paquets (pas d'aptitude, de vim, d'exim4, etc.).

 root@Janus:/var/chroot/squeeze_i386_sda4# debootstrap --arch i386 squeeze /var/chroot/squeeze_i386_sda4/ http://ftp2.fr.debian.org/debian/
 I: Retrieving Release
 I: Retrieving Packages
 I: Validating Packages
 I: Resolving dependencies of required packages...
 I: Resolving dependencies of base packages...
 I: Found additional required dependencies: insserv libbz2-1.0 libdb4.8 libslang2 
 I: Found additional base dependencies: libnfnetlink0 libsqlite3-0 
 I: Checking component main on http://ftp2.fr.debian.org/debian...
 I: Retrieving/Validating un tas de paquets
 I: Chosen extractor for .deb packages: dpkg-deb
 I: Extracting un tas de paquets...
 I: Installing core packages...
 I: Unpacking required packages...
 I: Unpacking un tas de paquets...
 I: Configuring required packages...
 I: Configuring un tas de paquets...
 I: Unpacking the base system...
 I: Unpacking un tas de paquets...
 I: Configuring the base system...
 I: Configuring un tas de paquets...
 I: Base system installed successfully.

Si tout s'est bien passé, un &quot;ls&quot; vous retournera la toute nouvelle arborescence :
 root@Janus:/var/chroot/squeeze_i386_sda4# ls
 bin boot dev etc home lib lost+found media mnt opt proc root sbin selinux srv sys tmp usr var

À ce niveau, votre Squeeze est installée, mais elle n'est pas pleinement fonctionnelle ni « autonome ». Vous ne pourrez pas démarrer dessus…

== Préparation du chroot ==

Il faut maintenant préparer le chroot. Trois répertoires sont importants pour que cela fonctionne convenablement : /tmp, /dev et /proc.

Vous devez éditer votre fstab pour que ces répertoires soient montés (et liés - « bind/rbind ») automatiquement dans votre répertoire chroot.

 root@Janus:/var/chroot/squeeze_i386_sda4# nano /etc/fstab 

Ajoutez-y :

 ## chroot Squeeze i386 sda4
 /tmp  /var/chroot/squeeze_i386_sda4/tmp  none bind  0 0
 /dev  /var/chroot/squeeze_i386_sda4/dev  none rbind 0 0
 /proc /var/chroot/squeeze_i386_sda4/proc none bind  0 0

Ctrl+O (enregistrer) Ctrl+X (Quitter)

 root@Janus:/var/chroot/squeeze_i386_sda4# mount -a

(cette commande monte tout ce qui est dans votre fstab)

Pour « normaliser les comptes et groupes » de votre nouvelle Squeeze (que les utilisateurs et groupes aient les mêmes identifiants dans votre système &quot;hôte&quot; et dans votre chroot) tapez les commandes suivantes :

 root@Janus:/var/chroot/squeeze_i386_sda4# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/passwd &gt;&gt; /var/chroot/squeeze_i386_sda4/etc/passwd
 root@Janus:/var/chroot/squeeze_i386_sda4# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/group &gt;&gt; /var/chroot/squeeze_i386_sda4/etc/group

Vous allez maintenant entrer dans votre environnement chroot (tadaa !) :

 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4
 root@Janus:/#

== Finalisation de l'installation et réglages de la Squeeze ==

Vous êtes maintenant dans votre nouvelle Squeeze, mais ce n'est pas terminé, votre système est incomplet, impossible de démarrer dessus…

=== &quot;locales&quot; ===

Nous allons maintenant mettre en français (ou ce que vous voulez…), configurer la localisation, et surtout… régler l'heure. L'heure est très importante. Si vous démarrez sur ce nouveau système avec une mauvaise heure (dans le futur par rapport au système sur lequel vous êtes), le prochain démarrage vous laissera un goût amer, vous serez obligé de faire un fsck…

En effet, au montage des disques le système inscrit l'heure (au tout début du disque). Si cette heure est « dans le futur », au démarrage suivant (sur une autre installation), il ne voudra pas démarrer et exigera une vérification de disque…

 root@Janus:/# apt-get update
 root@Janus:/# apt-get install locales
 root@Janus:/# dpkg-reconfigure locales
 root@Janus:/# dpkg-reconfigure tzdata
 root@Janus:/# hwclock --systohc --utc

Il faut modifier le fichier /etc/default/rcS pour forcer le système à se mettre en heure locale…

Explications sur [https://forum.debian-fr.org/viewtopic.php?p=210286#p210286 le forum.debian-fr.org]

 root@Janus:/# nano /etc/default/rcS

Il faut modifier la ligne utc : UTC=no

 root@Janus:/# apt-get install ntpdate
 root@Janus:/# ntpdate ntp.metas.ch

=== Le sources.list ===

Nous allons maintenant compléter nos dépôts

J'ai complété avec quelques dépôts tiers. Vous pourriez tout aussi bien ne pas le faire, mais c'est sympa d'avoir un peu de choix, non ? J'ai ajouté le dépôt « backports » pour avoir accès à un noyau récent, vous n'êtes, là encore, pas obligé de le faire.

 root@Janus:/# nano /etc/apt/sources.list
 deb http://ftp2.fr.debian.org/debian/ squeeze main
 ## Mises-à-jour de sécurité
 deb http://security.debian.org/ squeeze/updates main
 deb http://ftp2.fr.debian.org/debian/ squeeze-updates main
 ## Rétroportages - http://backports-master.debian.org/
 deb http://debian.advalem.net/debian-backports/ squeeze-backports main
 ## Debian Multimedia - http://deb-multimedia.org/
 deb http://debian-multimedia.tryphon.eu/ squeeze main

Si vous décidez d'ajouter les dépôts Multimedia, il peut être intéressant de créer un fichier preferences pour leur attribuer une priorité moins importante que les dépôts officiels de Debian. De cette façon vous éviterez des problèmes de compatibilité entre versions.

 root@Janus:/# nano /etc/apt/preferences
 Package: *
 Pin: release o=Unofficial Multimedia Packages
 Pin-Priority: 400

Mettons à jour :

 root@Janus:/# apt-get update
Vous obtiendrez probablement cette erreur :
 W: Erreur de GPG : http://debian-multimedia.tryphon.eu squeeze Release : Les signatures suivantes n'ont pas pu être vérifiées
 car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907
Dans ce cas la solution est simple :
 root@Janus:/# apt-get install deb-multimedia-keyring &amp;&amp; apt-get update
 ATTENTION : les paquets suivants n'ont pas été authentifiés.
   deb-multimedia-keyring
 Faut-il installer ces paquets sans vérification (o/N) ? o
 root@Janus:/# apt-get upgrade

'''/!\ Si le paquet deb-multimedia-keyring n'existe pas sur le serveur que vous utilisez, remplacez-le dans les commandes précédentes par debian-multimedia-keyring.'''

=== Clavier === 

Configurons maintenant le clavier

 root@Janus:/# apt-get install console-data

Je ne sais pour quelle raison il nous met d'office le clavier mac-usb-fr… Dans le chroot il ne doit pas détecter autre chose…

 Looking for keymap to install:
 mac-usb-fr

Rectifions :

 root@Janus:/# dpkg-reconfigure -plow console-data
 (option choisir un codage clavier dans la liste complète) - pc / azerty / French / Same as X11 (latin9) / Standard
 Looking for keymap to install:
 fr-latin9 (cette fois-ci c'est bon)
 
=== hostname et fstab ===

 root@Janus:/# exit

Nous sommes sortis du chroot, quelques fichiers à récupérer… Pour avoir un bon hostname, le réseau, le montage correct des disques…

 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/hosts /etc/hostname /etc/resolv.conf /var/chroot/squeeze_i386_sda4/etc/
 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/network/interfaces /var/chroot/squeeze_i386_sda4/etc/network/
 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/fstab /var/chroot/squeeze_i386_sda4/etc/
 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4/

+ Réglage du fsab

 root@Janus:/# blkid (cette commande permet de récupérer le UUID de vos disques pour votre nouveau fstab…
 Ne vous faites pas prendre, le formatage change l'UUID…)
 /dev/sda1: UUID=&quot;83953ec9-f173-4bde-84b4-77cfa0ad5d95&quot; TYPE=&quot;ext4&quot; 
 /dev/sda2: UUID=&quot;cfe0a0d6-3280-4104-878d-efede6cce024&quot; TYPE=&quot;swap&quot; 
 /dev/sda3: UUID=&quot;57a6f7ec-8de6-4f47-a244-f171c6a41ab3&quot; TYPE=&quot;ext4&quot; 
 /dev/sda4: UUID=&quot;34bf3784-2c97-48e3-92ce-025e3cd6344c&quot; TYPE=&quot;ext4&quot; 

 root@Janus:/# nano /etc/fstab (à rectifier en fonction de votre configuration)
 proc                                      /proc           proc        defaults          0 0
 UUID=34bf3784-2c97-48e3-92ce-025e3cd6344c /               ext4        errors=remount-ro 0 1
 UUID=57a6f7ec-8de6-4f47-a244-f171c6a41ab3 /home           ext4        defaults          0 2
 UUID=cfe0a0d6-3280-4104-878d-efede6cce024 none            swap        sw                0 0
 /dev/scd0                                 /media/cdrom0   udf,iso9660 user,noauto       0 0
 /dev/scd1                                 /media/cdrom1   udf,iso9660 user,noauto       0 0
 /dev/fd0                                  /media/floppy0  auto        rw,user,noauto    0 0

Création des répertoire de montage des disques de la nouvelle machine : (en fonction de votre configuration et de vos choix…)

 root@Janus:/# mkdir /media/cdrom0 /media/cdrom1 /media/floppy0

=== L'environnement graphique ===

Maintenant ? Un environnement graphique ! (J'ai choisi Xfce, vous faites comme vous voulez… [[Environnement graphique::Gnome]], [[Environnement graphique::Kde]], aucun…

'''/!\ N'oubliez pas d'installer aussi un gestionnaire de connexion !'''

 root@Janus:/# apt-get install xfce4 gdm

=== Le noyau et Grub2 ===

Installons un noyau… Ce serait bête d'oublier  :wink: 

 root@Janus:/# apt-cache search linux-image (choisissez dans la liste qu'il vous propose,
 celui que je cite n'est qu'un exemple que vous n'êtes pas forcés de suivre…)
 (…)
 linux-image-3.2.0-0.bpo.2-686-pae - Linux 3.2 for modern PCs
 (…)

Ici il faut récupérer votre kernel-img.conf qui permette de convenablement lancer initramfs à l'installation du nouveau noyau dans le chroot.

Ce fichier n'existe pas dans le système créé par debootstrap.

La ligne intéressante : do_initrd = yes

 root@Janus:/# exit
 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/kernel-img.conf /var/chroot/squeeze_i386_sda4/etc/kernel-img.conf
 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4
 root@Janus:/# apt-get install -t squeeze-backports linux-image-3.2.0-0.bpo.2-686-pae
 root@Janus:/# exit

Maintenant… Modifions notre grub pour que ce nouveau système soit opérationnel :
'''/!\ Attention, je suis sous Grub2. Si vous êtes sous Grub &quot;legacy&quot; la commande est différente évidemment…'''

 root@Janus:/var/chroot/squeeze_i386_sda4# apt-get install os-prober
 root@Janus:/var/chroot/squeeze_i386_sda4# update-grub
 (…)
 Found Debian GNU/Linux (6.0.4) on /dev/sda4
 (…)


=== Divers - mots de passe ===

Derniers &quot;fignolages&quot;… J'installe un navigateur Web (Iceweasel), et GParted.

Vous pouvez bien sûr adpater cette commande pour installer vos logiciels habituels ! 

 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4
 root@Janus:/# apt-get install gparted iceweasel iceweasel-l10n-fr

Enfin, les mots de passe…

Debootstrap installe un système sans mots de passe… Si vous redémarrez maintenant vous vous connecterez en root dans votre nouveau système sans montrer patte blanche… Un peu gênant, non ?

 root@Janus:/# nano /etc/passwd
 (…)
 legoth:x:1000:1000:Le Gonidec,,,:/home/legoth:/bin/sh
 (…)

Vous enlevez le x pour que cela ressemble à ça :

 legoth::1000:1000:Le Gonidec,,,:/home/legoth:/bin/sh

Ceci afin de pouvoir connecter vos utilisateurs &quot;normaux&quot;. Il faut maintenant créer les mots de passe.

 root@Janus:/# passwd
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 root@Janus:/# su legoth -c passwd
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 root@Janus:/# exit
 root@Janus:/var/chroot/squeeze_i386_sda4# reboot

Voilà : vous disposez d'une toute fraîche installation, fonctionnelle !

== Tasksel ==

Pour avoir un système un peu plus complet, en fonction de vos besoins, vous pouvez utiliser l'utilitaire [[tasksel|Tasksel]].

La commande suivante détaille les &quot;tâches&quot; que [[tasksel|Tasksel]] peut réaliser pour vous… (vous remarquerez que ce sont les mêmes choix que dans une installation &quot;classique&quot; qui sont proposés)

 root@Janus:/# tasksel --list-tasks
 u desktop	Graphical desktop environment
 u web-server	Web server
 u print-server	Print server
 u dns-server	DNS server
 u file-server	File server
 u mail-server	Mail server
 u database-server	SQL database
 u ssh-server	SSH server
 u laptop	Laptop
 u manual	manual package selection

Chaque &quot;tâche&quot; installe un ensemble de paquets utiles pour certaines utilisations. &quot;u&quot; pour non installé. Une tâche installée commence par &quot;i&quot;.

Il ne vous reste plus qu'a taper dans la console :

 root@Janus:/# tasksel --task-packages nom_tache

Il existe une autre tâche, qui n'est pas dans la liste ci-dessus :
 tasksel install standard
Cette commande installe un ensemble de paquets &quot;standards&quot;. Je vous renvoie à la page [[tasksel|Tasksel]] pour plus de détails.

== Versions des programmes utilisés dans ce tutoriel ==

bash		4.1-3

apt		0.8.10.3+squeeze1

e2fsprogs	1.41.12-4stable1

coreutils	8.5-1

mount		2.17.2-9

debootstrap	1.0.26+squeeze1

nano		2.2.4-1

grep		2.6.3-3

os-prober	1.42

grub-pc		1.98+20100804-14+squeeze1

sysvinit	2.88dsf-13.1


--[[Utilisateur:Vv222|Vv222]] 8 mai 2012 à 22:00 (CEST)

[https://www.debian-fr.org/sujet38752.html source]

[https://www.isalo.org/wiki.debian-fr/index.php?title=Installation_lenny_chroot_debootstrap source]

[https://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 source]

[[Catégorie:Installation]]</text>
      <sha1>k1bbv9ey7oic7p6fg498s5j2qsxjr0f</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4534</id>
      <parentid>4533</parentid>
      <timestamp>2012-10-21T12:51:25Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>ponctuation : parenthèse oubliée</comment>
      <text xml:space="preserve" bytes="15511">Installation d'une Squeeze avec debootstrap et chroot

L'objectif est d'installer une Squeeze (sur une nouvelle partition) à partir d'une autre Debian (ici une autre Squeeze, mais cette méthode fonctionnera aussi bien avec une autre version), sans avoir besoin de redémarrer ma machine une seule fois…

Avantage : rester dans mon environnement de travail pendant toute l'installation…

Parti-pris : utilisation de nano comme éditeur

== Pré-requis ==

Pré-requis : Installer debootstrap (chroot se trouve dans le paquet coreutils normalement déjà installé dans votre Debian).

 root@Janus:~# apt-get install debootstrap

Formatage de la partition qui va recevoir la Squeeze :

J'ai choisi de formater en ext4, vous pouvez choisir le système de fichiers de votre choix bien sûr.

La partition cible (ici /dev/sda4) devra aussi être adaptée à votre configuration.

 root@Janus:~# mkfs -V -t ext4 /dev/sda4

Création du répertoire qui va recevoir le système et montage de la partition fraîchement formatée dans ce nouveau répertoire.

J'ai choisi /var/chroot/squeeze_i386_sda4.

Un petit « ls » à la fin pour vérifier que la partition est bien montée.

 root@Janus:~# mkdir -p /var/chroot/squeeze_i386_sda4
 root@Janus:~# mount /dev/sda4 /var/chroot/squeeze_i386_sda4
 root@Janus:~# cd /var/chroot/squeeze_i386_sda4
 root@Janus:/var/chroot/squeeze_i386_sda4# ls
 lost+found

== Installation avec debootstrap ==

Installation de la Squeeze avec debootstrap (j'ai choisi une Squeeze i386, rien ne vous empêche de choisir une Lenny amd64 ou bien même une Sid…)

Astuces :

_Vous pouvez utiliser un dépôt local pour cette installation. Détails ici [https://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23065 sur le forum.debian-fr.org]

_Si vous avez une mauvaise connexion, mais disposez d'un CD d'installation, vous pouvez remplacer l'adresse du dépôt par file:/cdrom/debian/

_En ajoutant l'option --variant=minbase à debootstrap, vous installerez uniquement le strict minimum de paquets (pas d'aptitude, de vim, d'exim4, etc.).

 root@Janus:/var/chroot/squeeze_i386_sda4# debootstrap --arch i386 squeeze /var/chroot/squeeze_i386_sda4/ http://ftp2.fr.debian.org/debian/
 I: Retrieving Release
 I: Retrieving Packages
 I: Validating Packages
 I: Resolving dependencies of required packages...
 I: Resolving dependencies of base packages...
 I: Found additional required dependencies: insserv libbz2-1.0 libdb4.8 libslang2 
 I: Found additional base dependencies: libnfnetlink0 libsqlite3-0 
 I: Checking component main on http://ftp2.fr.debian.org/debian...
 I: Retrieving/Validating un tas de paquets
 I: Chosen extractor for .deb packages: dpkg-deb
 I: Extracting un tas de paquets...
 I: Installing core packages...
 I: Unpacking required packages...
 I: Unpacking un tas de paquets...
 I: Configuring required packages...
 I: Configuring un tas de paquets...
 I: Unpacking the base system...
 I: Unpacking un tas de paquets...
 I: Configuring the base system...
 I: Configuring un tas de paquets...
 I: Base system installed successfully.

Si tout s'est bien passé, un &quot;ls&quot; vous retournera la toute nouvelle arborescence :
 root@Janus:/var/chroot/squeeze_i386_sda4# ls
 bin boot dev etc home lib lost+found media mnt opt proc root sbin selinux srv sys tmp usr var

À ce niveau, votre Squeeze est installée, mais elle n'est pas pleinement fonctionnelle ni « autonome ». Vous ne pourrez pas démarrer dessus…

== Préparation du chroot ==

Il faut maintenant préparer le chroot. Trois répertoires sont importants pour que cela fonctionne convenablement : /tmp, /dev et /proc.

Vous devez éditer votre fstab pour que ces répertoires soient montés (et liés - « bind/rbind ») automatiquement dans votre répertoire chroot.

 root@Janus:/var/chroot/squeeze_i386_sda4# nano /etc/fstab 

Ajoutez-y :

 ## chroot Squeeze i386 sda4
 /tmp  /var/chroot/squeeze_i386_sda4/tmp  none bind  0 0
 /dev  /var/chroot/squeeze_i386_sda4/dev  none rbind 0 0
 /proc /var/chroot/squeeze_i386_sda4/proc none bind  0 0

Ctrl+O (enregistrer) Ctrl+X (Quitter)

 root@Janus:/var/chroot/squeeze_i386_sda4# mount -a

(cette commande monte tout ce qui est dans votre fstab)

Pour « normaliser les comptes et groupes » de votre nouvelle Squeeze (que les utilisateurs et groupes aient les mêmes identifiants dans votre système &quot;hôte&quot; et dans votre chroot) tapez les commandes suivantes :

 root@Janus:/var/chroot/squeeze_i386_sda4# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/passwd &gt;&gt; /var/chroot/squeeze_i386_sda4/etc/passwd
 root@Janus:/var/chroot/squeeze_i386_sda4# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/group &gt;&gt; /var/chroot/squeeze_i386_sda4/etc/group

Vous allez maintenant entrer dans votre environnement chroot (tadaa !) :

 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4
 root@Janus:/#

== Finalisation de l'installation et réglages de la Squeeze ==

Vous êtes maintenant dans votre nouvelle Squeeze, mais ce n'est pas terminé, votre système est incomplet, impossible de démarrer dessus…

=== &quot;locales&quot; ===

Nous allons maintenant mettre en français (ou ce que vous voulez…), configurer la localisation, et surtout… régler l'heure. L'heure est très importante. Si vous démarrez sur ce nouveau système avec une mauvaise heure (dans le futur par rapport au système sur lequel vous êtes), le prochain démarrage vous laissera un goût amer, vous serez obligé de faire un fsck…

En effet, au montage des disques le système inscrit l'heure (au tout début du disque). Si cette heure est « dans le futur », au démarrage suivant (sur une autre installation), il ne voudra pas démarrer et exigera une vérification de disque…

 root@Janus:/# apt-get update
 root@Janus:/# apt-get install locales
 root@Janus:/# dpkg-reconfigure locales
 root@Janus:/# dpkg-reconfigure tzdata
 root@Janus:/# hwclock --systohc --utc

Il faut modifier le fichier /etc/default/rcS pour forcer le système à se mettre en heure locale…

Explications sur [https://forum.debian-fr.org/viewtopic.php?p=210286#p210286 le forum.debian-fr.org]

 root@Janus:/# nano /etc/default/rcS

Il faut modifier la ligne utc : UTC=no

 root@Janus:/# apt-get install ntpdate
 root@Janus:/# ntpdate ntp.metas.ch

=== Le sources.list ===

Nous allons maintenant compléter nos dépôts

J'ai complété avec quelques dépôts tiers. Vous pourriez tout aussi bien ne pas le faire, mais c'est sympa d'avoir un peu de choix, non ? J'ai ajouté le dépôt « backports » pour avoir accès à un noyau récent, vous n'êtes, là encore, pas obligé de le faire.

 root@Janus:/# nano /etc/apt/sources.list
 deb http://ftp2.fr.debian.org/debian/ squeeze main
 ## Mises-à-jour de sécurité
 deb http://security.debian.org/ squeeze/updates main
 deb http://ftp2.fr.debian.org/debian/ squeeze-updates main
 ## Rétroportages - http://backports-master.debian.org/
 deb http://debian.advalem.net/debian-backports/ squeeze-backports main
 ## Debian Multimedia - http://deb-multimedia.org/
 deb http://debian-multimedia.tryphon.eu/ squeeze main

Si vous décidez d'ajouter les dépôts Multimedia, il peut être intéressant de créer un fichier preferences pour leur attribuer une priorité moins importante que les dépôts officiels de Debian. De cette façon vous éviterez des problèmes de compatibilité entre versions.

 root@Janus:/# nano /etc/apt/preferences
 Package: *
 Pin: release o=Unofficial Multimedia Packages
 Pin-Priority: 400

Mettons à jour :

 root@Janus:/# apt-get update
Vous obtiendrez probablement cette erreur :
 W: Erreur de GPG : http://debian-multimedia.tryphon.eu squeeze Release : Les signatures suivantes n'ont pas pu être vérifiées
 car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907
Dans ce cas la solution est simple :
 root@Janus:/# apt-get install deb-multimedia-keyring &amp;&amp; apt-get update
 ATTENTION : les paquets suivants n'ont pas été authentifiés.
   deb-multimedia-keyring
 Faut-il installer ces paquets sans vérification (o/N) ? o
 root@Janus:/# apt-get upgrade

'''/!\ Si le paquet deb-multimedia-keyring n'existe pas sur le serveur que vous utilisez, remplacez-le dans les commandes précédentes par debian-multimedia-keyring.'''

=== Clavier === 

Configurons maintenant le clavier

 root@Janus:/# apt-get install console-data

Je ne sais pour quelle raison il nous met d'office le clavier mac-usb-fr… Dans le chroot il ne doit pas détecter autre chose…

 Looking for keymap to install:
 mac-usb-fr

Rectifions :

 root@Janus:/# dpkg-reconfigure -plow console-data
 (option choisir un codage clavier dans la liste complète) - pc / azerty / French / Same as X11 (latin9) / Standard
 Looking for keymap to install:
 fr-latin9 (cette fois-ci c'est bon)
 
=== hostname et fstab ===

 root@Janus:/# exit

Nous sommes sortis du chroot, quelques fichiers à récupérer… Pour avoir un bon hostname, le réseau, le montage correct des disques…

 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/hosts /etc/hostname /etc/resolv.conf /var/chroot/squeeze_i386_sda4/etc/
 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/network/interfaces /var/chroot/squeeze_i386_sda4/etc/network/
 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/fstab /var/chroot/squeeze_i386_sda4/etc/
 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4/

+ Réglage du fsab

 root@Janus:/# blkid (cette commande permet de récupérer le UUID de vos disques pour votre nouveau fstab…
 Ne vous faites pas prendre, le formatage change l'UUID…)
 /dev/sda1: UUID=&quot;83953ec9-f173-4bde-84b4-77cfa0ad5d95&quot; TYPE=&quot;ext4&quot; 
 /dev/sda2: UUID=&quot;cfe0a0d6-3280-4104-878d-efede6cce024&quot; TYPE=&quot;swap&quot; 
 /dev/sda3: UUID=&quot;57a6f7ec-8de6-4f47-a244-f171c6a41ab3&quot; TYPE=&quot;ext4&quot; 
 /dev/sda4: UUID=&quot;34bf3784-2c97-48e3-92ce-025e3cd6344c&quot; TYPE=&quot;ext4&quot; 

 root@Janus:/# nano /etc/fstab (à rectifier en fonction de votre configuration)
 proc                                      /proc           proc        defaults          0 0
 UUID=34bf3784-2c97-48e3-92ce-025e3cd6344c /               ext4        errors=remount-ro 0 1
 UUID=57a6f7ec-8de6-4f47-a244-f171c6a41ab3 /home           ext4        defaults          0 2
 UUID=cfe0a0d6-3280-4104-878d-efede6cce024 none            swap        sw                0 0
 /dev/scd0                                 /media/cdrom0   udf,iso9660 user,noauto       0 0
 /dev/scd1                                 /media/cdrom1   udf,iso9660 user,noauto       0 0
 /dev/fd0                                  /media/floppy0  auto        rw,user,noauto    0 0

Création des répertoire de montage des disques de la nouvelle machine : (en fonction de votre configuration et de vos choix…)

 root@Janus:/# mkdir /media/cdrom0 /media/cdrom1 /media/floppy0

=== L'environnement graphique ===

Maintenant ? Un environnement graphique ! (J'ai choisi Xfce, vous faites comme vous voulez… [[Environnement graphique::Gnome]], [[Environnement graphique::Kde]], aucun…)

'''/!\ N'oubliez pas d'installer aussi un gestionnaire de connexion !'''

 root@Janus:/# apt-get install xfce4 gdm

=== Le noyau et Grub2 ===

Installons un noyau… Ce serait bête d'oublier  :wink: 

 root@Janus:/# apt-cache search linux-image (choisissez dans la liste qu'il vous propose,
 celui que je cite n'est qu'un exemple que vous n'êtes pas forcés de suivre…)
 (…)
 linux-image-3.2.0-0.bpo.2-686-pae - Linux 3.2 for modern PCs
 (…)

Ici il faut récupérer votre kernel-img.conf qui permette de convenablement lancer initramfs à l'installation du nouveau noyau dans le chroot.

Ce fichier n'existe pas dans le système créé par debootstrap.

La ligne intéressante : do_initrd = yes

 root@Janus:/# exit
 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/kernel-img.conf /var/chroot/squeeze_i386_sda4/etc/kernel-img.conf
 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4
 root@Janus:/# apt-get install -t squeeze-backports linux-image-3.2.0-0.bpo.2-686-pae
 root@Janus:/# exit

Maintenant… Modifions notre grub pour que ce nouveau système soit opérationnel :
'''/!\ Attention, je suis sous Grub2. Si vous êtes sous Grub &quot;legacy&quot; la commande est différente évidemment…'''

 root@Janus:/var/chroot/squeeze_i386_sda4# apt-get install os-prober
 root@Janus:/var/chroot/squeeze_i386_sda4# update-grub
 (…)
 Found Debian GNU/Linux (6.0.4) on /dev/sda4
 (…)


=== Divers - mots de passe ===

Derniers &quot;fignolages&quot;… J'installe un navigateur Web (Iceweasel), et GParted.

Vous pouvez bien sûr adpater cette commande pour installer vos logiciels habituels ! 

 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4
 root@Janus:/# apt-get install gparted iceweasel iceweasel-l10n-fr

Enfin, les mots de passe…

Debootstrap installe un système sans mots de passe… Si vous redémarrez maintenant vous vous connecterez en root dans votre nouveau système sans montrer patte blanche… Un peu gênant, non ?

 root@Janus:/# nano /etc/passwd
 (…)
 legoth:x:1000:1000:Le Gonidec,,,:/home/legoth:/bin/sh
 (…)

Vous enlevez le x pour que cela ressemble à ça :

 legoth::1000:1000:Le Gonidec,,,:/home/legoth:/bin/sh

Ceci afin de pouvoir connecter vos utilisateurs &quot;normaux&quot;. Il faut maintenant créer les mots de passe.

 root@Janus:/# passwd
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 root@Janus:/# su legoth -c passwd
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 root@Janus:/# exit
 root@Janus:/var/chroot/squeeze_i386_sda4# reboot

Voilà : vous disposez d'une toute fraîche installation, fonctionnelle !

== Tasksel ==

Pour avoir un système un peu plus complet, en fonction de vos besoins, vous pouvez utiliser l'utilitaire [[tasksel|Tasksel]].

La commande suivante détaille les &quot;tâches&quot; que [[tasksel|Tasksel]] peut réaliser pour vous… (vous remarquerez que ce sont les mêmes choix que dans une installation &quot;classique&quot; qui sont proposés)

 root@Janus:/# tasksel --list-tasks
 u desktop	Graphical desktop environment
 u web-server	Web server
 u print-server	Print server
 u dns-server	DNS server
 u file-server	File server
 u mail-server	Mail server
 u database-server	SQL database
 u ssh-server	SSH server
 u laptop	Laptop
 u manual	manual package selection

Chaque &quot;tâche&quot; installe un ensemble de paquets utiles pour certaines utilisations. &quot;u&quot; pour non installé. Une tâche installée commence par &quot;i&quot;.

Il ne vous reste plus qu'a taper dans la console :

 root@Janus:/# tasksel --task-packages nom_tache

Il existe une autre tâche, qui n'est pas dans la liste ci-dessus :
 tasksel install standard
Cette commande installe un ensemble de paquets &quot;standards&quot;. Je vous renvoie à la page [[tasksel|Tasksel]] pour plus de détails.

== Versions des programmes utilisés dans ce tutoriel ==

bash		4.1-3

apt		0.8.10.3+squeeze1

e2fsprogs	1.41.12-4stable1

coreutils	8.5-1

mount		2.17.2-9

debootstrap	1.0.26+squeeze1

nano		2.2.4-1

grep		2.6.3-3

os-prober	1.42

grub-pc		1.98+20100804-14+squeeze1

sysvinit	2.88dsf-13.1


--[[Utilisateur:Vv222|Vv222]] 8 mai 2012 à 22:00 (CEST)

[https://www.debian-fr.org/sujet38752.html source]

[https://www.isalo.org/wiki.debian-fr/index.php?title=Installation_lenny_chroot_debootstrap source]

[https://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 source]

[[Catégorie:Installation]]</text>
      <sha1>cryzc5vkap56ntacw37irewafsmdgto</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4544</id>
      <parentid>4534</parentid>
      <timestamp>2012-10-26T08:23:22Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>Ajout de balises &quot;avertissement&quot;</comment>
      <text xml:space="preserve" bytes="15571">Installation d'une Squeeze avec debootstrap et chroot

L'objectif est d'installer une Squeeze (sur une nouvelle partition) à partir d'une autre Debian (ici une autre Squeeze, mais cette méthode fonctionnera aussi bien avec une autre version), sans avoir besoin de redémarrer ma machine une seule fois…

Avantage : rester dans mon environnement de travail pendant toute l'installation…

Parti-pris : utilisation de nano comme éditeur

== Pré-requis ==

Pré-requis : Installer debootstrap (chroot se trouve dans le paquet coreutils normalement déjà installé dans votre Debian).

 root@Janus:~# apt-get install debootstrap

Formatage de la partition qui va recevoir la Squeeze :

J'ai choisi de formater en ext4, vous pouvez choisir le système de fichiers de votre choix bien sûr.

La partition cible (ici /dev/sda4) devra aussi être adaptée à votre configuration.

 root@Janus:~# mkfs -V -t ext4 /dev/sda4

Création du répertoire qui va recevoir le système et montage de la partition fraîchement formatée dans ce nouveau répertoire.

J'ai choisi /var/chroot/squeeze_i386_sda4.

Un petit « ls » à la fin pour vérifier que la partition est bien montée.

 root@Janus:~# mkdir -p /var/chroot/squeeze_i386_sda4
 root@Janus:~# mount /dev/sda4 /var/chroot/squeeze_i386_sda4
 root@Janus:~# cd /var/chroot/squeeze_i386_sda4
 root@Janus:/var/chroot/squeeze_i386_sda4# ls
 lost+found

== Installation avec debootstrap ==

Installation de la Squeeze avec debootstrap (j'ai choisi une Squeeze i386, rien ne vous empêche de choisir une Lenny amd64 ou bien même une Sid…)

Astuces :

_Vous pouvez utiliser un dépôt local pour cette installation. Détails ici [https://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23065 sur le forum.debian-fr.org]

_Si vous avez une mauvaise connexion, mais disposez d'un CD d'installation, vous pouvez remplacer l'adresse du dépôt par file:/cdrom/debian/

_En ajoutant l'option --variant=minbase à debootstrap, vous installerez uniquement le strict minimum de paquets (pas d'aptitude, de vim, d'exim4, etc.).

 root@Janus:/var/chroot/squeeze_i386_sda4# debootstrap --arch i386 squeeze /var/chroot/squeeze_i386_sda4/ http://ftp2.fr.debian.org/debian/
 I: Retrieving Release
 I: Retrieving Packages
 I: Validating Packages
 I: Resolving dependencies of required packages...
 I: Resolving dependencies of base packages...
 I: Found additional required dependencies: insserv libbz2-1.0 libdb4.8 libslang2 
 I: Found additional base dependencies: libnfnetlink0 libsqlite3-0 
 I: Checking component main on http://ftp2.fr.debian.org/debian...
 I: Retrieving/Validating un tas de paquets
 I: Chosen extractor for .deb packages: dpkg-deb
 I: Extracting un tas de paquets...
 I: Installing core packages...
 I: Unpacking required packages...
 I: Unpacking un tas de paquets...
 I: Configuring required packages...
 I: Configuring un tas de paquets...
 I: Unpacking the base system...
 I: Unpacking un tas de paquets...
 I: Configuring the base system...
 I: Configuring un tas de paquets...
 I: Base system installed successfully.

Si tout s'est bien passé, un &quot;ls&quot; vous retournera la toute nouvelle arborescence :
 root@Janus:/var/chroot/squeeze_i386_sda4# ls
 bin boot dev etc home lib lost+found media mnt opt proc root sbin selinux srv sys tmp usr var

À ce niveau, votre Squeeze est installée, mais elle n'est pas pleinement fonctionnelle ni « autonome ». Vous ne pourrez pas démarrer dessus…

== Préparation du chroot ==

Il faut maintenant préparer le chroot. Trois répertoires sont importants pour que cela fonctionne convenablement : /tmp, /dev et /proc.

Vous devez éditer votre fstab pour que ces répertoires soient montés (et liés - « bind/rbind ») automatiquement dans votre répertoire chroot.

 root@Janus:/var/chroot/squeeze_i386_sda4# nano /etc/fstab 

Ajoutez-y :

 ## chroot Squeeze i386 sda4
 /tmp  /var/chroot/squeeze_i386_sda4/tmp  none bind  0 0
 /dev  /var/chroot/squeeze_i386_sda4/dev  none rbind 0 0
 /proc /var/chroot/squeeze_i386_sda4/proc none bind  0 0

Ctrl+O (enregistrer) Ctrl+X (Quitter)

 root@Janus:/var/chroot/squeeze_i386_sda4# mount -a

(cette commande monte tout ce qui est dans votre fstab)

Pour « normaliser les comptes et groupes » de votre nouvelle Squeeze (que les utilisateurs et groupes aient les mêmes identifiants dans votre système &quot;hôte&quot; et dans votre chroot) tapez les commandes suivantes :

 root@Janus:/var/chroot/squeeze_i386_sda4# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/passwd &gt;&gt; /var/chroot/squeeze_i386_sda4/etc/passwd
 root@Janus:/var/chroot/squeeze_i386_sda4# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/group &gt;&gt; /var/chroot/squeeze_i386_sda4/etc/group

Vous allez maintenant entrer dans votre environnement chroot (tadaa !) :

 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4
 root@Janus:/#

== Finalisation de l'installation et réglages de la Squeeze ==

Vous êtes maintenant dans votre nouvelle Squeeze, mais ce n'est pas terminé, votre système est incomplet, impossible de démarrer dessus…

=== &quot;locales&quot; ===

Nous allons maintenant mettre en français (ou ce que vous voulez…), configurer la localisation, et surtout… régler l'heure. L'heure est très importante. Si vous démarrez sur ce nouveau système avec une mauvaise heure (dans le futur par rapport au système sur lequel vous êtes), le prochain démarrage vous laissera un goût amer, vous serez obligé de faire un fsck…

En effet, au montage des disques le système inscrit l'heure (au tout début du disque). Si cette heure est « dans le futur », au démarrage suivant (sur une autre installation), il ne voudra pas démarrer et exigera une vérification de disque…

 root@Janus:/# apt-get update
 root@Janus:/# apt-get install locales
 root@Janus:/# dpkg-reconfigure locales
 root@Janus:/# dpkg-reconfigure tzdata
 root@Janus:/# hwclock --systohc --utc

Il faut modifier le fichier /etc/default/rcS pour forcer le système à se mettre en heure locale…

Explications sur [https://forum.debian-fr.org/viewtopic.php?p=210286#p210286 le forum.debian-fr.org]

 root@Janus:/# nano /etc/default/rcS

Il faut modifier la ligne utc : UTC=no

 root@Janus:/# apt-get install ntpdate
 root@Janus:/# ntpdate ntp.metas.ch

=== Le sources.list ===

Nous allons maintenant compléter nos dépôts

J'ai complété avec quelques dépôts tiers. Vous pourriez tout aussi bien ne pas le faire, mais c'est sympa d'avoir un peu de choix, non ? J'ai ajouté le dépôt « backports » pour avoir accès à un noyau récent, vous n'êtes, là encore, pas obligé de le faire.

 root@Janus:/# nano /etc/apt/sources.list
 deb http://ftp2.fr.debian.org/debian/ squeeze main
 ## Mises-à-jour de sécurité
 deb http://security.debian.org/ squeeze/updates main
 deb http://ftp2.fr.debian.org/debian/ squeeze-updates main
 ## Rétroportages - http://backports-master.debian.org/
 deb http://debian.advalem.net/debian-backports/ squeeze-backports main
 ## Debian Multimedia - http://deb-multimedia.org/
 deb http://debian-multimedia.tryphon.eu/ squeeze main

Si vous décidez d'ajouter les dépôts Multimedia, il peut être intéressant de créer un fichier preferences pour leur attribuer une priorité moins importante que les dépôts officiels de Debian. De cette façon vous éviterez des problèmes de compatibilité entre versions.

 root@Janus:/# nano /etc/apt/preferences
 Package: *
 Pin: release o=Unofficial Multimedia Packages
 Pin-Priority: 400

Mettons à jour :

 root@Janus:/# apt-get update
Vous obtiendrez probablement cette erreur :
 W: Erreur de GPG : http://debian-multimedia.tryphon.eu squeeze Release : Les signatures suivantes n'ont pas pu être vérifiées
 car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907
Dans ce cas la solution est simple :
 root@Janus:/# apt-get install deb-multimedia-keyring &amp;&amp; apt-get update
 ATTENTION : les paquets suivants n'ont pas été authentifiés.
   deb-multimedia-keyring
 Faut-il installer ces paquets sans vérification (o/N) ? o
 root@Janus:/# apt-get upgrade

{{Avertissement|texte='''Si le paquet deb-multimedia-keyring n'existe pas sur le serveur que vous utilisez, remplacez-le dans les commandes précédentes par debian-multimedia-keyring.'''}}

=== Clavier === 

Configurons maintenant le clavier

 root@Janus:/# apt-get install console-data

Je ne sais pour quelle raison il nous met d'office le clavier mac-usb-fr… Dans le chroot il ne doit pas détecter autre chose…

 Looking for keymap to install:
 mac-usb-fr

Rectifions :

 root@Janus:/# dpkg-reconfigure -plow console-data
 (option choisir un codage clavier dans la liste complète) - pc / azerty / French / Same as X11 (latin9) / Standard
 Looking for keymap to install:
 fr-latin9 (cette fois-ci c'est bon)
 
=== hostname et fstab ===

 root@Janus:/# exit

Nous sommes sortis du chroot, quelques fichiers à récupérer… Pour avoir un bon hostname, le réseau, le montage correct des disques…

 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/hosts /etc/hostname /etc/resolv.conf /var/chroot/squeeze_i386_sda4/etc/
 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/network/interfaces /var/chroot/squeeze_i386_sda4/etc/network/
 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/fstab /var/chroot/squeeze_i386_sda4/etc/
 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4/

+ Réglage du fsab

 root@Janus:/# blkid (cette commande permet de récupérer le UUID de vos disques pour votre nouveau fstab…
 Ne vous faites pas prendre, le formatage change l'UUID…)
 /dev/sda1: UUID=&quot;83953ec9-f173-4bde-84b4-77cfa0ad5d95&quot; TYPE=&quot;ext4&quot; 
 /dev/sda2: UUID=&quot;cfe0a0d6-3280-4104-878d-efede6cce024&quot; TYPE=&quot;swap&quot; 
 /dev/sda3: UUID=&quot;57a6f7ec-8de6-4f47-a244-f171c6a41ab3&quot; TYPE=&quot;ext4&quot; 
 /dev/sda4: UUID=&quot;34bf3784-2c97-48e3-92ce-025e3cd6344c&quot; TYPE=&quot;ext4&quot; 

 root@Janus:/# nano /etc/fstab (à rectifier en fonction de votre configuration)
 proc                                      /proc           proc        defaults          0 0
 UUID=34bf3784-2c97-48e3-92ce-025e3cd6344c /               ext4        errors=remount-ro 0 1
 UUID=57a6f7ec-8de6-4f47-a244-f171c6a41ab3 /home           ext4        defaults          0 2
 UUID=cfe0a0d6-3280-4104-878d-efede6cce024 none            swap        sw                0 0
 /dev/scd0                                 /media/cdrom0   udf,iso9660 user,noauto       0 0
 /dev/scd1                                 /media/cdrom1   udf,iso9660 user,noauto       0 0
 /dev/fd0                                  /media/floppy0  auto        rw,user,noauto    0 0

Création des répertoire de montage des disques de la nouvelle machine : (en fonction de votre configuration et de vos choix…)

 root@Janus:/# mkdir /media/cdrom0 /media/cdrom1 /media/floppy0

=== L'environnement graphique ===

Maintenant ? Un environnement graphique ! (J'ai choisi Xfce, vous faites comme vous voulez… [[Environnement graphique::Gnome]], [[Environnement graphique::Kde]], aucun…)

{{Avertissement|texte='''N'oubliez pas d'installer aussi un gestionnaire de connexion !'''}}

 root@Janus:/# apt-get install xfce4 gdm

=== Le noyau et Grub2 ===

Installons un noyau… Ce serait bête d'oublier  :wink: 

 root@Janus:/# apt-cache search linux-image (choisissez dans la liste qu'il vous propose,
 celui que je cite n'est qu'un exemple que vous n'êtes pas forcés de suivre…)
 (…)
 linux-image-3.2.0-0.bpo.2-686-pae - Linux 3.2 for modern PCs
 (…)

Ici il faut récupérer votre kernel-img.conf qui permette de convenablement lancer initramfs à l'installation du nouveau noyau dans le chroot.

Ce fichier n'existe pas dans le système créé par debootstrap.

La ligne intéressante : do_initrd = yes

 root@Janus:/# exit
 root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/kernel-img.conf /var/chroot/squeeze_i386_sda4/etc/kernel-img.conf
 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4
 root@Janus:/# apt-get install -t squeeze-backports linux-image-3.2.0-0.bpo.2-686-pae
 root@Janus:/# exit

Maintenant… Modifions notre grub pour que ce nouveau système soit opérationnel :
{{Avertissement|texte='''Attention, je suis sous Grub2. Si vous êtes sous Grub &quot;legacy&quot; la commande est différente évidemment…'''}}

 root@Janus:/var/chroot/squeeze_i386_sda4# apt-get install os-prober
 root@Janus:/var/chroot/squeeze_i386_sda4# update-grub
 (…)
 Found Debian GNU/Linux (6.0.4) on /dev/sda4
 (…)


=== Divers - mots de passe ===

Derniers &quot;fignolages&quot;… J'installe un navigateur Web (Iceweasel), et GParted.

Vous pouvez bien sûr adpater cette commande pour installer vos logiciels habituels ! 

 root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4
 root@Janus:/# apt-get install gparted iceweasel iceweasel-l10n-fr

Enfin, les mots de passe…

Debootstrap installe un système sans mots de passe… Si vous redémarrez maintenant vous vous connecterez en root dans votre nouveau système sans montrer patte blanche… Un peu gênant, non ?

 root@Janus:/# nano /etc/passwd
 (…)
 legoth:x:1000:1000:Le Gonidec,,,:/home/legoth:/bin/sh
 (…)

Vous enlevez le x pour que cela ressemble à ça :

 legoth::1000:1000:Le Gonidec,,,:/home/legoth:/bin/sh

Ceci afin de pouvoir connecter vos utilisateurs &quot;normaux&quot;. Il faut maintenant créer les mots de passe.

 root@Janus:/# passwd
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 root@Janus:/# su legoth -c passwd
 Entrez le nouveau mot de passe UNIX :
 Retapez le nouveau mot de passe UNIX :
 passwd : le mot de passe a été mis à jour avec succès
 root@Janus:/# exit
 root@Janus:/var/chroot/squeeze_i386_sda4# reboot

Voilà : vous disposez d'une toute fraîche installation, fonctionnelle !

== Tasksel ==

Pour avoir un système un peu plus complet, en fonction de vos besoins, vous pouvez utiliser l'utilitaire [[tasksel|Tasksel]].

La commande suivante détaille les &quot;tâches&quot; que [[tasksel|Tasksel]] peut réaliser pour vous… (vous remarquerez que ce sont les mêmes choix que dans une installation &quot;classique&quot; qui sont proposés)

 root@Janus:/# tasksel --list-tasks
 u desktop	Graphical desktop environment
 u web-server	Web server
 u print-server	Print server
 u dns-server	DNS server
 u file-server	File server
 u mail-server	Mail server
 u database-server	SQL database
 u ssh-server	SSH server
 u laptop	Laptop
 u manual	manual package selection

Chaque &quot;tâche&quot; installe un ensemble de paquets utiles pour certaines utilisations. &quot;u&quot; pour non installé. Une tâche installée commence par &quot;i&quot;.

Il ne vous reste plus qu'a taper dans la console :

 root@Janus:/# tasksel --task-packages nom_tache

Il existe une autre tâche, qui n'est pas dans la liste ci-dessus :
 tasksel install standard
Cette commande installe un ensemble de paquets &quot;standards&quot;. Je vous renvoie à la page [[tasksel|Tasksel]] pour plus de détails.

== Versions des programmes utilisés dans ce tutoriel ==

bash		4.1-3

apt		0.8.10.3+squeeze1

e2fsprogs	1.41.12-4stable1

coreutils	8.5-1

mount		2.17.2-9

debootstrap	1.0.26+squeeze1

nano		2.2.4-1

grep		2.6.3-3

os-prober	1.42

grub-pc		1.98+20100804-14+squeeze1

sysvinit	2.88dsf-13.1


--[[Utilisateur:Vv222|Vv222]] 8 mai 2012 à 22:00 (CEST)

[https://www.debian-fr.org/sujet38752.html source]

[https://www.isalo.org/wiki.debian-fr/index.php?title=Installation_lenny_chroot_debootstrap source]

[https://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 source]

[[Catégorie:Installation]]</text>
      <sha1>r8xxntneqh713slaw57ng36ljwocj1t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Installation sur une Squeeze d'un serveur mail complet (Postfix Postfixadmin Dovecot Mysql Amavisd-new Spamassassin Clamav Postgrey Squirrelmail Roundcube) avec gestion des filtres Imap et des quotas</title>
    <ns>0</ns>
    <id>638</id>
    <revision>
      <id>2775</id>
      <timestamp>2011-04-06T08:52:35Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Serveur de mail complet (Postfix + dovecot + mysql + postfixadmin + Spamassassin + Clamav + Webmail)</comment>
      <text xml:space="preserve" bytes="21265">Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes:
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin comme anti-pourriel;
#Apache2 comme serveur Web (qui nous permettre de supporter Postfixadmin, et notre (nos..) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines, domaines virtuels et utilisateurs;
#Squirrelmail et Roundcube comme Webmail;



== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
 
#deb http://ftp.fr.debian.org/debian/ squeeze-proposed-updates main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze-proposed-updates main non-free contrib
&lt;/code&gt;

 # apt-get update
 # apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 # nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevé par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermediaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de question sera &quot;raisonnable&quot;.

 # dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez votre nome de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichiers interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. Le gestion de cette base se fera au travers l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

A voir + tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel
Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendrons les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc:postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...) voici à quoi ressemble il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit:

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services:

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant nous devrions être capables de tester notre serveur de messagerie

Pour commencer il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il ya deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant ptit test d'envoi de mail

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail:

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;</text>
      <sha1>54mu6guwxnsx3s8hl7ylj0tdke6phr1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2776</id>
      <parentid>2775</parentid>
      <timestamp>2011-04-06T08:54:31Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="21376">Cet Article n'est pas encore terminé! Ne pas vous appuyer dessus.

{{Ébauche|Serveur Mail complet}}
{{sid}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes:
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin comme anti-pourriel;
#Apache2 comme serveur Web (qui nous permettre de supporter Postfixadmin, et notre (nos..) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines, domaines virtuels et utilisateurs;
#Squirrelmail et Roundcube comme Webmail;



== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
 
#deb http://ftp.fr.debian.org/debian/ squeeze-proposed-updates main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze-proposed-updates main non-free contrib
&lt;/code&gt;

 # apt-get update
 # apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 # nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevé par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermediaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de question sera &quot;raisonnable&quot;.

 # dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez votre nome de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichiers interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. Le gestion de cette base se fera au travers l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

A voir + tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel
Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendrons les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc:postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...) voici à quoi ressemble il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit:

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services:

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant nous devrions être capables de tester notre serveur de messagerie

Pour commencer il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il ya deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant ptit test d'envoi de mail

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail:

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;</text>
      <sha1>0ysp1rxyg32w4vkv3ppj08f2n87rcko</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2798</id>
      <parentid>2776</parentid>
      <timestamp>2011-04-06T09:01:43Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Modification du sources.list */</comment>
      <text xml:space="preserve" bytes="21200">Cet Article n'est pas encore terminé! Ne pas vous appuyer dessus.

{{Ébauche|Serveur Mail complet}}
{{sid}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes:
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin comme anti-pourriel;
#Apache2 comme serveur Web (qui nous permettre de supporter Postfixadmin, et notre (nos..) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines, domaines virtuels et utilisateurs;
#Squirrelmail et Roundcube comme Webmail;



== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 # apt-get update
 # apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 # nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevé par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermediaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de question sera &quot;raisonnable&quot;.

 # dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez votre nome de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichiers interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. Le gestion de cette base se fera au travers l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

A voir + tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel
Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendrons les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc:postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...) voici à quoi ressemble il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit:

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services:

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant nous devrions être capables de tester notre serveur de messagerie

Pour commencer il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il ya deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant ptit test d'envoi de mail

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail:

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;</text>
      <sha1>mlqxoclqdy2pxqecnys6n8whjx0b01t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2799</id>
      <parentid>2798</parentid>
      <timestamp>2011-04-06T09:13:25Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Test du SMTP AUTH */</comment>
      <text xml:space="preserve" bytes="21212">Cet Article n'est pas encore terminé! Ne pas vous appuyer dessus.

{{Ébauche|Serveur Mail complet}}
{{sid}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes:
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin comme anti-pourriel;
#Apache2 comme serveur Web (qui nous permettre de supporter Postfixadmin, et notre (nos..) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines, domaines virtuels et utilisateurs;
#Squirrelmail et Roundcube comme Webmail;



== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 # apt-get update
 # apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 # nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevé par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermediaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de question sera &quot;raisonnable&quot;.

 # dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez votre nome de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichiers interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. Le gestion de cette base se fera au travers l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

A voir + tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel
Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendrons les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc:postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...) voici à quoi ressemble il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit:

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services:

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant nous devrions être capables de tester notre serveur de messagerie

Pour commencer il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il ya deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant ptit test d'envoi de mail

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail:

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;</text>
      <sha1>pjv2cw4wdyqng7n0l6n08gb6mqdc65s</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2800</id>
      <parentid>2799</parentid>
      <timestamp>2011-04-06T10:13:35Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="21262">Cet Article n'est pas encore terminé! Ne pas vous appuyer dessus.

{{Ébauche|Serveur Mail complet}}
{{sid}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes:
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin comme anti-pourriel;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos..) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;



== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevé par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermediaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de question sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez votre nome de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichiers interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. Le gestion de cette base se fera au travers l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

A voir + tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel
Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendrons les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc:postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...) voici à quoi ressemble il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit:

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services:

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant nous devrions être capables de tester notre serveur de messagerie

Pour commencer il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il ya deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant ptit test d'envoi de mail

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail:

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;</text>
      <sha1>34izus4rgf3kqgp20se4nzhbgtvnfo9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2801</id>
      <parentid>2800</parentid>
      <timestamp>2011-04-06T10:18:15Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Postfix */</comment>
      <text xml:space="preserve" bytes="21262">Cet Article n'est pas encore terminé! Ne pas vous appuyer dessus.

{{Ébauche|Serveur Mail complet}}
{{sid}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes:
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin comme anti-pourriel;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos..) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;



== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevé par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermediaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de question sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez votre nome de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichiers interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. Le gestion de cette base se fera au travers l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

A voir + tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel
Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendrons les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...) voici à quoi ressemble il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit:

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services:

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant nous devrions être capables de tester notre serveur de messagerie

Pour commencer il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il ya deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant ptit test d'envoi de mail

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail:

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;</text>
      <sha1>2iqenkq3n1x7kq1bh1xkaalcjcx3lfm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2802</id>
      <parentid>2801</parentid>
      <timestamp>2011-04-06T10:19:54Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Dovecot */</comment>
      <text xml:space="preserve" bytes="21252">Cet Article n'est pas encore terminé! Ne pas vous appuyer dessus.

{{Ébauche|Serveur Mail complet}}
{{sid}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes:
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin comme anti-pourriel;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos..) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;



== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevé par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermediaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de question sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez votre nome de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichiers interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. Le gestion de cette base se fera au travers l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

A voir + tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel
Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendrons les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...) voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit:

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services:

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant nous devrions être capables de tester notre serveur de messagerie

Pour commencer il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il ya deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant ptit test d'envoi de mail

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail:

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;</text>
      <sha1>da34k9vjqcl4js913bhys1x00v4rmfr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2804</id>
      <parentid>2802</parentid>
      <timestamp>2011-04-06T16:44:43Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="31629">Cet Article n'est pas encore terminé! Ne pas vous appuyer dessus.

{{Ébauche|Serveur Mail complet}}
{{sid}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes:
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin comme anti-pourriel;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos..) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;



== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevé par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermediaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de question sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez votre nome de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichiers interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. Le gestion de cette base se fera au travers l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

A voir + tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel
Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendrons les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...) voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit:

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services:

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant nous devrions être capables de tester notre serveur de messagerie

Pour commencer il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il ya deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant ptit test d'envoi de mail

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail:

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui à son tour va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf:

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine:

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procéderez de la même manière, avec le code suivant récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org]

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant: /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

== Le Webmail ==

Je vous propose deux choix de Webmail; 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait)
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait)

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]</text>
      <sha1>bf6hm5rr54yq1tzdajcqwkuamci8ft8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2810</id>
      <parentid>2804</parentid>
      <timestamp>2011-04-06T17:19:59Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Squirrelmail */</comment>
      <text xml:space="preserve" bytes="32867">Cet Article n'est pas encore terminé! Ne pas vous appuyer dessus.

{{Ébauche|Serveur Mail complet}}
{{sid}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes:
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin comme anti-pourriel;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos..) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;



== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevé par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermediaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de question sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez votre nome de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichiers interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. Le gestion de cette base se fera au travers l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

A voir + tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel
Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendrons les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...) voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit:

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services:

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant nous devrions être capables de tester notre serveur de messagerie

Pour commencer il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il ya deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant ptit test d'envoi de mail

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail:

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui à son tour va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf:

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine:

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procéderez de la même manière, avec le code suivant récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org]

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant: /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

== Le Webmail ==

Je vous propose deux choix de Webmail; 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait)
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait)

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueillerons les données personnelles (carnet d'adresse, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]</text>
      <sha1>5bwcw34dnv2etxu81a4rn0opstpsuhm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2812</id>
      <parentid>2810</parentid>
      <timestamp>2011-04-07T05:30:06Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Prérequis + roundcube</comment>
      <text xml:space="preserve" bytes="35368">Cet Article n'est pas encore terminé! Ne pas vous appuyer dessus.

{{Ébauche|Serveur Mail complet}}
{{sid}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes:
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin comme anti-pourriel;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos..) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer: [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration dun serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de la faire fonctionner:

Il vous faut:
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevé par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermediaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de question sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez votre nome de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichiers interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. Le gestion de cette base se fera au travers l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

A voir + tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel
Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendrons les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...) voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit:

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services:

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant nous devrions être capables de tester notre serveur de messagerie

Pour commencer il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il ya deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant ptit test d'envoi de mail

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail:

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui à son tour va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf:

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine:

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procéderez de la même manière, avec le code suivant récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org]

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant: /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

== Le Webmail ==

Je vous propose deux choix de Webmail; 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait)
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait)

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueillerons les données personnelles (carnet d'adresse, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement téléchargement des sources [http://roundcube.net/download ICI]

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer:

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot; vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]</text>
      <sha1>gf99sknc6lwfahnjrcoyed5xmu5cs96</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2820</id>
      <parentid>2812</parentid>
      <timestamp>2011-04-07T06:30:14Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>smtps</comment>
      <text xml:space="preserve" bytes="37520">Cet Article n'est pas encore terminé! Ne pas vous appuyer dessus.

{{Ébauche|Serveur Mail complet}}
{{sid}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes:
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin comme anti-pourriel;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos..) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer: [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration dun serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de la faire fonctionner:

Il vous faut:
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevé par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermediaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de question sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez votre nome de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichiers interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. Le gestion de cette base se fera au travers l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

A voir + tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel
Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendrons les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...) voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit:

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services:

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant nous devrions être capables de tester notre serveur de messagerie

Pour commencer il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il ya deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant ptit test d'envoi de mail

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail:

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui à son tour va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf:

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine:

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procéderez de la même manière, avec le code suivant récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org]

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant: /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

== Le Webmail ==

Je vous propose deux choix de Webmail; 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait)
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait)

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueillerons les données personnelles (carnet d'adresse, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement téléchargement des sources [http://roundcube.net/download ICI]

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer:

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot; vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf juste sous cette ligne:

&lt;code&gt;
# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp      inet  n       -       -       -       -       smtpd
&lt;code&gt;

Ceci:
&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;</text>
      <sha1>rt1jxyo089uq8shx7jm8tm1h1tuzxps</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2821</id>
      <parentid>2820</parentid>
      <timestamp>2011-04-07T06:45:24Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Activation du SMTPS */</comment>
      <text xml:space="preserve" bytes="37169">Cet Article n'est pas encore terminé! Ne pas vous appuyer dessus.

{{Ébauche|Serveur Mail complet}}
{{sid}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes:
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin comme anti-pourriel;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos..) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer: [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration dun serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de la faire fonctionner:

Il vous faut:
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevé par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermediaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de question sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez votre nome de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichiers interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. Le gestion de cette base se fera au travers l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

A voir + tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel
Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendrons les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...) voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit:

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services:

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant nous devrions être capables de tester notre serveur de messagerie

Pour commencer il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il ya deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant ptit test d'envoi de mail

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail:

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui à son tour va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf:

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine:

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procéderez de la même manière, avec le code suivant récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org]

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant: /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

== Le Webmail ==

Je vous propose deux choix de Webmail; 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait)
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait)

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueillerons les données personnelles (carnet d'adresse, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement téléchargement des sources [http://roundcube.net/download ICI]

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer:

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot; vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter):
Ceci:
&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;</text>
      <sha1>9jltkeqjxqlqzumgecy18ky58bv8if7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2822</id>
      <parentid>2821</parentid>
      <timestamp>2011-04-07T10:08:28Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Prérequis */</comment>
      <text xml:space="preserve" bytes="37169">Cet Article n'est pas encore terminé! Ne pas vous appuyer dessus.

{{Ébauche|Serveur Mail complet}}
{{sid}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes:
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin comme anti-pourriel;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos..) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer: [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration dun serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner:

Il vous faut:
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevé par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermediaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de question sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez votre nome de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichiers interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. Le gestion de cette base se fera au travers l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

A voir + tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel
Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendrons les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...) voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit:

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services:

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant nous devrions être capables de tester notre serveur de messagerie

Pour commencer il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il ya deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant ptit test d'envoi de mail

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail:

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui à son tour va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf:

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine:

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procéderez de la même manière, avec le code suivant récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org]

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant: /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

== Le Webmail ==

Je vous propose deux choix de Webmail; 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait)
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait)

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueillerons les données personnelles (carnet d'adresse, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement téléchargement des sources [http://roundcube.net/download ICI]

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer:

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot; vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter):
Ceci:
&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;</text>
      <sha1>rda5kjb36bqs3ouv9m3kyx14c2vgp5a</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2823</id>
      <parentid>2822</parentid>
      <timestamp>2011-04-07T16:51:10Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Managesieve */</comment>
      <text xml:space="preserve" bytes="41163">Cet Article n'est pas encore terminé! Ne pas vous appuyer dessus.

{{Ébauche|Serveur Mail complet}}
{{sid}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes:
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin comme anti-pourriel;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos..) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer: [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration dun serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner:

Il vous faut:
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevé par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermediaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de question sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez votre nome de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichiers interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. Le gestion de cette base se fera au travers l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

A voir + tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel
Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendrons les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...) voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit:

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services:

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant nous devrions être capables de tester notre serveur de messagerie

Pour commencer il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il ya deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant ptit test d'envoi de mail

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail:

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui à son tour va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf:

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine:

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procéderez de la même manière, avec le code suivant récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org]

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant: /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

== Le Webmail ==

Je vous propose deux choix de Webmail; 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait)
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait)

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueillerons les données personnelles (carnet d'adresse, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement téléchargement des sources [http://roundcube.net/download ICI]

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer:

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot; vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter):
Ceci:
&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot: Managesieve ==

Managesieve est un plugin permetant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64)

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionnerons pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse):

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube ajouter le plugin &quot;managesieve&quot; ===</text>
      <sha1>ia9a6cucmeon0znwocem80j0l8idcw3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2826</id>
      <parentid>2823</parentid>
      <timestamp>2011-04-07T16:53:19Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Plus loin avec Dovecot: Managesieve */</comment>
      <text xml:space="preserve" bytes="41201">Cet Article n'est pas encore terminé! Ne pas vous appuyer dessus.

{{Ébauche|Serveur Mail complet}}
{{sid}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes:
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin comme anti-pourriel;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos..) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer: [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration dun serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner:

Il vous faut:
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevé par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermediaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de question sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez votre nome de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichiers interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. Le gestion de cette base se fera au travers l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

A voir + tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel
Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendrons les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...) voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit:

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services:

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant nous devrions être capables de tester notre serveur de messagerie

Pour commencer il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il ya deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant ptit test d'envoi de mail

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail:

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui à son tour va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf:

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine:

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procéderez de la même manière, avec le code suivant récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org]

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant: /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

== Le Webmail ==

Je vous propose deux choix de Webmail; 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait)
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait)

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueillerons les données personnelles (carnet d'adresse, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement téléchargement des sources [http://roundcube.net/download ICI]

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer:

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot; vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter):
Ceci:
&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot: Managesieve ==

Managesieve est un plugin permetant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64)

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionnerons pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse):

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube ajouter le plugin &quot;managesieve&quot; ===</text>
      <sha1>iqctcbp2tohiqia0wqd2srzfnsfs30l</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2827</id>
      <parentid>2826</parentid>
      <timestamp>2011-04-07T19:59:59Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Roundcube ajouter le plugin &quot;managesieve&quot; */</comment>
      <text xml:space="preserve" bytes="41943">Cet Article n'est pas encore terminé! Ne pas vous appuyer dessus.

{{Ébauche|Serveur Mail complet}}
{{sid}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes:
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin comme anti-pourriel;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos..) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer: [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration dun serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner:

Il vous faut:
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevé par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermediaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de question sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez votre nome de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichiers interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. Le gestion de cette base se fera au travers l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

A voir + tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel
Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendrons les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...) voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit:

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services:

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant nous devrions être capables de tester notre serveur de messagerie

Pour commencer il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il ya deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant ptit test d'envoi de mail

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail:

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui à son tour va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf:

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine:

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procéderez de la même manière, avec le code suivant récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org]

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant: /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

== Le Webmail ==

Je vous propose deux choix de Webmail; 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait)
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait)

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueillerons les données personnelles (carnet d'adresse, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement téléchargement des sources [http://roundcube.net/download ICI]

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer:

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot; vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter):
Ceci:
&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot: Managesieve ==

Managesieve est un plugin permetant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64)

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionnerons pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse):

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer:

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez:

 $rcmail_config['managesieve_auth_type'] = null;

Par

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres:

[[Fichier:Snapshot211.jpeg]]</text>
      <sha1>1f5hvkqufgcpcxws83wobclfgl4v8rp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2829</id>
      <parentid>2827</parentid>
      <timestamp>2011-04-08T16:06:51Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Dovecot prise en charge des quotas */</comment>
      <text xml:space="preserve" bytes="46042">Cet Article n'est pas encore terminé! Ne pas vous appuyer dessus.

{{Ébauche|Serveur Mail complet}}
{{sid}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes:
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin comme anti-pourriel;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos..) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer: [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration dun serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner:

Il vous faut:
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevé par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermediaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de question sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez votre nome de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichiers interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. Le gestion de cette base se fera au travers l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

A voir + tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel
Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendrons les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...) voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit:

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services:

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant nous devrions être capables de tester notre serveur de messagerie

Pour commencer il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il ya deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant ptit test d'envoi de mail

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail:

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui à son tour va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf:

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine:

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procéderez de la même manière, avec le code suivant récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org]

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant: /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

== Le Webmail ==

Je vous propose deux choix de Webmail; 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait)
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait)

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueillerons les données personnelles (carnet d'adresse, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement téléchargement des sources [http://roundcube.net/download ICI]

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer:

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot; vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter):
Ceci:
&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot: Managesieve ==

Managesieve est un plugin permetant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64)

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionnerons pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse):

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer:

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez:

 $rcmail_config['managesieve_auth_type'] = null;

Par

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres:

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche)

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins:

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin Managesieve

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins:
 root@facteur:~# /var/www/squirrelmail/configure

[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)</text>
      <sha1>1z3rge0bpff6iq1khlrpd2qmk63r7tq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2832</id>
      <parentid>2829</parentid>
      <timestamp>2011-04-08T16:49:19Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Définition du &quot;hostname&quot; */</comment>
      <text xml:space="preserve" bytes="46041">Cet Article n'est pas encore terminé! Ne pas vous appuyer dessus.

{{Ébauche|Serveur Mail complet}}
{{sid}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes:
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin comme anti-pourriel;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos..) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer: [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration dun serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner:

Il vous faut:
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevé par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermediaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de question sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez votre nom de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichiers interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. Le gestion de cette base se fera au travers l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

A voir + tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel
Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendrons les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...) voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit:

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services:

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant nous devrions être capables de tester notre serveur de messagerie

Pour commencer il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il ya deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant ptit test d'envoi de mail

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail:

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui à son tour va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf:

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine:

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procéderez de la même manière, avec le code suivant récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org]

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant: /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

== Le Webmail ==

Je vous propose deux choix de Webmail; 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait)
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait)

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueillerons les données personnelles (carnet d'adresse, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement téléchargement des sources [http://roundcube.net/download ICI]

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer:

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot; vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter):
Ceci:
&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot: Managesieve ==

Managesieve est un plugin permetant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64)

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionnerons pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse):

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer:

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez:

 $rcmail_config['managesieve_auth_type'] = null;

Par

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres:

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche)

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins:

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin Managesieve

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins:
 root@facteur:~# /var/www/squirrelmail/configure

[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)</text>
      <sha1>5o0s57o3zwhkawsf0aqyeprm8p3y3em</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2833</id>
      <parentid>2832</parentid>
      <timestamp>2011-04-08T16:49:50Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Install-Recommends et diminution des priorités debconf */</comment>
      <text xml:space="preserve" bytes="46043">Cet Article n'est pas encore terminé! Ne pas vous appuyer dessus.

{{Ébauche|Serveur Mail complet}}
{{sid}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes:
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin comme anti-pourriel;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos..) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer: [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration dun serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner:

Il vous faut:
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermediaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de question sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez votre nom de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichiers interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. Le gestion de cette base se fera au travers l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

A voir + tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel
Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendrons les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...) voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit:

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services:

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant nous devrions être capables de tester notre serveur de messagerie

Pour commencer il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il ya deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant ptit test d'envoi de mail

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail:

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui à son tour va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf:

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine:

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procéderez de la même manière, avec le code suivant récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org]

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant: /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

== Le Webmail ==

Je vous propose deux choix de Webmail; 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait)
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait)

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueillerons les données personnelles (carnet d'adresse, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement téléchargement des sources [http://roundcube.net/download ICI]

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer:

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot; vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter):
Ceci:
&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot: Managesieve ==

Managesieve est un plugin permetant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64)

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionnerons pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse):

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer:

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez:

 $rcmail_config['managesieve_auth_type'] = null;

Par

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres:

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche)

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins:

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin Managesieve

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins:
 root@facteur:~# /var/www/squirrelmail/configure

[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)</text>
      <sha1>mpfr0w7j6wp6r0smkpxjur3msqhopy2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2834</id>
      <parentid>2833</parentid>
      <timestamp>2011-04-08T16:52:05Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Création de la base de donnée de Postfixadmin */</comment>
      <text xml:space="preserve" bytes="46046">Cet Article n'est pas encore terminé! Ne pas vous appuyer dessus.

{{Ébauche|Serveur Mail complet}}
{{sid}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes:
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin comme anti-pourriel;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos..) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer: [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration dun serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner:

Il vous faut:
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermediaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de question sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez votre nom de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichiers interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. Le gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

A voir + tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel
Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendrons les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...) voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit:

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services:

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant nous devrions être capables de tester notre serveur de messagerie

Pour commencer il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il ya deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant ptit test d'envoi de mail

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail:

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui à son tour va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf:

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine:

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procéderez de la même manière, avec le code suivant récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org]

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant: /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

== Le Webmail ==

Je vous propose deux choix de Webmail; 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait)
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait)

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueillerons les données personnelles (carnet d'adresse, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement téléchargement des sources [http://roundcube.net/download ICI]

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer:

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot; vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter):
Ceci:
&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot: Managesieve ==

Managesieve est un plugin permetant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64)

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionnerons pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse):

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer:

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez:

 $rcmail_config['managesieve_auth_type'] = null;

Par

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres:

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche)

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins:

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin Managesieve

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins:
 root@facteur:~# /var/www/squirrelmail/configure

[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)</text>
      <sha1>fd2vkjnyogb061ble93kfaylo3pa273</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2835</id>
      <parentid>2834</parentid>
      <timestamp>2011-04-08T16:52:23Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Prise en charge dans Squirrelmail */</comment>
      <text xml:space="preserve" bytes="46044">Cet Article n'est pas encore terminé! Ne pas vous appuyer dessus.

{{Ébauche|Serveur Mail complet}}
{{sid}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes:
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin comme anti-pourriel;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos..) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer: [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration dun serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner:

Il vous faut:
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermediaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de question sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez votre nom de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichiers interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. Le gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

A voir + tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel
Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendrons les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...) voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit:

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services:

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant nous devrions être capables de tester notre serveur de messagerie

Pour commencer il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il ya deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant ptit test d'envoi de mail

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail:

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui à son tour va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf:

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine:

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procéderez de la même manière, avec le code suivant récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org]

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant: /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

== Le Webmail ==

Je vous propose deux choix de Webmail; 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait)
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait)

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueillerons les données personnelles (carnet d'adresse, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement téléchargement des sources [http://roundcube.net/download ICI]

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer:

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot; vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter):
Ceci:
&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot: Managesieve ==

Managesieve est un plugin permetant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64)

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionnerons pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse):

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer:

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez:

 $rcmail_config['managesieve_auth_type'] = null;

Par

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres:

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche)

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins:

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins:
 root@facteur:~# /var/www/squirrelmail/configure

[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)</text>
      <sha1>t5o1r6wewubro91leywkubo3mb6jvdb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2836</id>
      <parentid>2835</parentid>
      <timestamp>2011-04-08T16:53:28Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Prise en charge dans Squirrelmail */</comment>
      <text xml:space="preserve" bytes="46086">Cet Article n'est pas encore terminé! Ne pas vous appuyer dessus.

{{Ébauche|Serveur Mail complet}}
{{sid}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes:
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin comme anti-pourriel;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos..) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer: [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration dun serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner:

Il vous faut:
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermediaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de question sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez votre nom de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichiers interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. Le gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

A voir + tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel
Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendrons les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...) voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit:

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services:

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant nous devrions être capables de tester notre serveur de messagerie

Pour commencer il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il ya deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant ptit test d'envoi de mail

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail:

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui à son tour va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf:

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine:

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procéderez de la même manière, avec le code suivant récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org]

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant: /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

== Le Webmail ==

Je vous propose deux choix de Webmail; 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait)
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait)

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueillerons les données personnelles (carnet d'adresse, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement téléchargement des sources [http://roundcube.net/download ICI]

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer:

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot; vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter):
Ceci:
&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot: Managesieve ==

Managesieve est un plugin permetant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64)

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionnerons pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse):

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer:

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez:

 $rcmail_config['managesieve_auth_type'] = null;

Par

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres:

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche)

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins:

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins:
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche:
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)</text>
      <sha1>0ruuhqeoozb2e30m4s8ihp5zue0fmzq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2837</id>
      <parentid>2836</parentid>
      <timestamp>2011-04-08T16:58:16Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Réglages de Dovecot Postfix et Amavis */</comment>
      <text xml:space="preserve" bytes="46085">Cet Article n'est pas encore terminé! Ne pas vous appuyer dessus.

{{Ébauche|Serveur Mail complet}}
{{sid}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes:
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin comme anti-pourriel;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos..) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer: [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration dun serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner:

Il vous faut:
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermediaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de question sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez votre nom de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichiers interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. Le gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

A voir + tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel
Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendrons les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...) voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit:

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services:

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant nous devrions être capables de tester notre serveur de messagerie

Pour commencer il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il ya deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant ptit test d'envoi de mail

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail:

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va le passer à Amavis qui à son tour va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf:

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine:

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procéderez de la même manière, avec le code suivant récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org]

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant: /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

== Le Webmail ==

Je vous propose deux choix de Webmail; 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait)
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait)

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueillerons les données personnelles (carnet d'adresse, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement téléchargement des sources [http://roundcube.net/download ICI]

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer:

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot; vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter):
Ceci:
&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot: Managesieve ==

Managesieve est un plugin permetant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64)

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionnerons pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse):

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer:

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez:

 $rcmail_config['managesieve_auth_type'] = null;

Par

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres:

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche)

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins:

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins:
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche:
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)</text>
      <sha1>qbgg6lnuvlrgfndwvaj8j91pkxpqrod</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2838</id>
      <parentid>2837</parentid>
      <timestamp>2011-04-08T17:01:44Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Méthode avec les sources */</comment>
      <text xml:space="preserve" bytes="46085">Cet Article n'est pas encore terminé! Ne pas vous appuyer dessus.

{{Ébauche|Serveur Mail complet}}
{{sid}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes:
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin comme anti-pourriel;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos..) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer: [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration dun serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner:

Il vous faut:
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermediaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de question sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez votre nom de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichiers interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. Le gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

A voir + tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel
Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendrons les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...) voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit:

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services:

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant nous devrions être capables de tester notre serveur de messagerie

Pour commencer il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il ya deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant ptit test d'envoi de mail

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail:

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va le passer à Amavis qui à son tour va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf:

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine:

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procéderez de la même manière, avec le code suivant récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org]

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant: /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

== Le Webmail ==

Je vous propose deux choix de Webmail; 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait)
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait)

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and dirty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueillerons les données personnelles (carnet d'adresse, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement téléchargement des sources [http://roundcube.net/download ICI]

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer:

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot; vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter):
Ceci:
&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot: Managesieve ==

Managesieve est un plugin permetant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64)

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionnerons pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse):

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer:

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez:

 $rcmail_config['managesieve_auth_type'] = null;

Par

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres:

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche)

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins:

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins:
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche:
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)</text>
      <sha1>4apwhkzznygnudtfby58og5rt53f0fi</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2839</id>
      <parentid>2838</parentid>
      <timestamp>2011-04-08T17:04:50Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Plus loin avec Dovecot: Managesieve */</comment>
      <text xml:space="preserve" bytes="46087">Cet Article n'est pas encore terminé! Ne pas vous appuyer dessus.

{{Ébauche|Serveur Mail complet}}
{{sid}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes:
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin comme anti-pourriel;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos..) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer: [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration dun serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner:

Il vous faut:
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermediaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de question sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez votre nom de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichiers interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. Le gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

A voir + tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel
Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendrons les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...) voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit:

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services:

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant nous devrions être capables de tester notre serveur de messagerie

Pour commencer il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il ya deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant ptit test d'envoi de mail

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail:

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va le passer à Amavis qui à son tour va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf:

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine:

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procéderez de la même manière, avec le code suivant récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org]

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant: /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

== Le Webmail ==

Je vous propose deux choix de Webmail; 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait)
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait)

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and dirty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueillerons les données personnelles (carnet d'adresse, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement téléchargement des sources [http://roundcube.net/download ICI]

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer:

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot; vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter):
Ceci:
&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot: Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclus à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64)

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionnerons pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse):

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer:

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez:

 $rcmail_config['managesieve_auth_type'] = null;

Par

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres:

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche)

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins:

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins:
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche:
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)</text>
      <sha1>ceetxaqlnr3nym5kgr3mbjaykm2hy5p</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2840</id>
      <parentid>2839</parentid>
      <timestamp>2011-04-08T17:37:38Z</timestamp>
      <contributor>
        <username>Duxie</username>
        <id>113</id>
      </contributor>
      <minor/>
      <comment>Correction de quelques fautes de frappe. Je n'ai pas voulu toucher au style, qui est très clair, pour ne pas risquer de l'alourdir.</comment>
      <text xml:space="preserve" bytes="46144">Cet Article n'est pas encore terminé! Ne pas vous appuyer dessus.

{{Ébauche|Serveur Mail complet}}
{{sid}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin comme anti-pourriel;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. Le gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

À voir plus tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel
Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit:

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services:

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)</text>
      <sha1>050hwo8tt5v9u1b5jeqt3b0jtxxxzp1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2841</id>
      <parentid>2840</parentid>
      <timestamp>2011-04-08T18:52:57Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="46088">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin comme anti-pourriel;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. Le gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

À voir plus tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel
Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit:

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services:

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)</text>
      <sha1>ns21jj2rq4wppilvjx40ta2j843ktrt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2843</id>
      <parentid>2841</parentid>
      <timestamp>2011-04-09T07:20:30Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Installation de Postgrey</comment>
      <text xml:space="preserve" bytes="47935">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin comme anti-pourriel;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. Le gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

À voir plus tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel
Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit:

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services:

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;


== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)</text>
      <sha1>2fu7jyao26uow3zcoz3f0qu0m6utimf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2844</id>
      <parentid>2843</parentid>
      <timestamp>2011-04-09T07:22:23Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="47970">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. Le gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

À voir plus tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel
Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit:

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services:

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;


== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)</text>
      <sha1>bn9uc88p18mw3g165k5q2g4t1tbcd98</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2845</id>
      <parentid>2844</parentid>
      <timestamp>2011-04-09T08:26:50Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <minor/>
      <comment>a renommé [[Postfix + dovecot + mysql + postfixadmin + Spamassassin + Clamav + Webmail]] en [[Installation sur une Squeeze d'un serveur mail complet (Postfix Postfixadmin Dovecot Mysql Amavisd-new Spamassassin Clamav Postgrey Squirrelmail Roundcube)...</comment>
      <text xml:space="preserve" bytes="47970">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. Le gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

À voir plus tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel
Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit:

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services:

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;


== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)</text>
      <sha1>bn9uc88p18mw3g165k5q2g4t1tbcd98</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2847</id>
      <parentid>2845</parentid>
      <timestamp>2011-04-09T08:29:14Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="47994">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. Le gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

À voir plus tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel
Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit:

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services:

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;


== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>d5y2j9py22e1wklsjgddaq9f59umy48</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2849</id>
      <parentid>2847</parentid>
      <timestamp>2011-04-09T12:53:17Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Le DNS</comment>
      <text xml:space="preserve" bytes="49962">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples déstails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Modifiez en conséquence votre fichier interfaces

 root@facteur:~# nano /etc/network/interfaces
&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 nano /etc/resolv.conf
&lt;code&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/code&gt;

Un test rapide:
&lt;code&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/code&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.


=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. Le gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

À voir plus tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel
Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit:

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services:

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>kq4x3x2la0llq4vdrnq2vamuzkn7296</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2850</id>
      <parentid>2849</parentid>
      <timestamp>2011-04-09T13:59:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Réglages de Dovecot Postfix et Amavis */</comment>
      <text xml:space="preserve" bytes="50204">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples déstails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Modifiez en conséquence votre fichier interfaces

 root@facteur:~# nano /etc/network/interfaces
&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 nano /etc/resolv.conf
&lt;code&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/code&gt;

Un test rapide:
&lt;code&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/code&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.


=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. Le gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

À voir plus tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel
Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit:

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services:

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Activation du &quot;daemon&quot; de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>rpzlvwr0ydudbpapbwxmlpybyyc6k7i</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2851</id>
      <parentid>2850</parentid>
      <timestamp>2011-04-09T14:22:12Z</timestamp>
      <contributor>
        <username>Duxie</username>
        <id>113</id>
      </contributor>
      <minor/>
      <comment>/* Le DNS */ une petite faute de frappe</comment>
      <text xml:space="preserve" bytes="50203">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Modifiez en conséquence votre fichier interfaces.

 root@facteur:~# nano /etc/network/interfaces
&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 nano /etc/resolv.conf
&lt;code&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/code&gt;

Un test rapide:
&lt;code&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/code&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. Le gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

À voir plus tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel
Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit:

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services:

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Activation du &quot;daemon&quot; de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>9cmdjbuiw6u2oo7w34ly0kk76gwdt3c</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2852</id>
      <parentid>2851</parentid>
      <timestamp>2011-04-09T14:22:36Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Réglages de Dovecot Postfix et Amavis */</comment>
      <text xml:space="preserve" bytes="50276">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Modifiez en conséquence votre fichier interfaces.

 root@facteur:~# nano /etc/network/interfaces
&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 nano /etc/resolv.conf
&lt;code&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/code&gt;

Un test rapide:
&lt;code&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/code&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. Le gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

À voir plus tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel
Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit:

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services:

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>crknpa879s38cw7j09atxyc370v7uft</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2853</id>
      <parentid>2852</parentid>
      <timestamp>2011-04-09T14:23:52Z</timestamp>
      <contributor>
        <username>Duxie</username>
        <id>113</id>
      </contributor>
      <minor/>
      <comment>/* Création de la base de donnée de Postfixadmin */ juste une coquillette</comment>
      <text xml:space="preserve" bytes="50276">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Modifiez en conséquence votre fichier interfaces.

 root@facteur:~# nano /etc/network/interfaces
&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 nano /etc/resolv.conf
&lt;code&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/code&gt;

Un test rapide:
&lt;code&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/code&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

À voir plus tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel
Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit:

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services:

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>efc28xmw0sb9za1pi69j7ulajgo5d2f</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2854</id>
      <parentid>2853</parentid>
      <timestamp>2011-04-09T14:28:00Z</timestamp>
      <contributor>
        <username>Duxie</username>
        <id>113</id>
      </contributor>
      <comment>/* Postfix */ séparation (mise en page) entre deux phrases</comment>
      <text xml:space="preserve" bytes="50277">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Modifiez en conséquence votre fichier interfaces.

 root@facteur:~# nano /etc/network/interfaces
&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 nano /etc/resolv.conf
&lt;code&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/code&gt;

Un test rapide:
&lt;code&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/code&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

À voir plus tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit:

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services:

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>t8vzu4u7aqhs3kyzyir4gemxgq7cru9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2855</id>
      <parentid>2854</parentid>
      <timestamp>2011-04-09T14:29:43Z</timestamp>
      <contributor>
        <username>Duxie</username>
        <id>113</id>
      </contributor>
      <minor/>
      <comment>/* Dovecot */ ponctuation</comment>
      <text xml:space="preserve" bytes="50279">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Modifiez en conséquence votre fichier interfaces.

 root@facteur:~# nano /etc/network/interfaces
&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 nano /etc/resolv.conf
&lt;code&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/code&gt;

Un test rapide:
&lt;code&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/code&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

À voir plus tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>dyrfuh5c1rf4yr06n4wg0nu2ekqscg6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2856</id>
      <parentid>2855</parentid>
      <timestamp>2011-04-09T15:36:40Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Réglages de Dovecot Postfix et Amavis */</comment>
      <text xml:space="preserve" bytes="50493">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Modifiez en conséquence votre fichier interfaces.

 root@facteur:~# nano /etc/network/interfaces
&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 nano /etc/resolv.conf
&lt;code&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/code&gt;

Un test rapide:
&lt;code&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/code&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

À voir plus tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>83pugd1vsyxioohneqlswo5b0c39vqh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2858</id>
      <parentid>2856</parentid>
      <timestamp>2011-04-09T17:02:59Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Activation du mode SSL de Apache</comment>
      <text xml:space="preserve" bytes="51753">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Modifiez en conséquence votre fichier interfaces.

 root@facteur:~# nano /etc/network/interfaces
&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 nano /etc/resolv.conf
&lt;code&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/code&gt;

Un test rapide:
&lt;code&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/code&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

À voir plus tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>s03gl9sl84vi3w6ib6wzkac30gzbytq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2859</id>
      <parentid>2858</parentid>
      <timestamp>2011-04-09T17:04:41Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="51753">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.

[[Fichier:Snapshot155.jpeg]]

[[Fichier:Snapshot184.jpeg]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Modifiez en conséquence votre fichier interfaces.

 root@facteur:~# nano /etc/network/interfaces
&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 nano /etc/resolv.conf
&lt;code&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/code&gt;

Un test rapide:
&lt;code&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/code&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

À voir plus tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>5xyto7efw7p161k4my9545gesek7wkt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2862</id>
      <parentid>2859</parentid>
      <timestamp>2011-04-10T08:10:46Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Installation d'une squeeze minimale */</comment>
      <text xml:space="preserve" bytes="51980">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg]]


[[Fichier:Snapshot125.jpeg]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Modifiez en conséquence votre fichier interfaces.

 root@facteur:~# nano /etc/network/interfaces
&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 nano /etc/resolv.conf
&lt;code&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/code&gt;

Un test rapide:
&lt;code&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/code&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

À voir plus tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>9znn16z1y4u47su39puz831anmzqo2z</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2863</id>
      <parentid>2862</parentid>
      <timestamp>2011-04-10T08:13:49Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Install-Recommends et diminution des priorités debconf */</comment>
      <text xml:space="preserve" bytes="52112">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg]]

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Modifiez en conséquence votre fichier interfaces.

 root@facteur:~# nano /etc/network/interfaces
&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 nano /etc/resolv.conf
&lt;code&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/code&gt;

Un test rapide:
&lt;code&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/code&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

À voir plus tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>dlzgfh99maydgrjg6423p829xghilgh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2864</id>
      <parentid>2863</parentid>
      <timestamp>2011-04-10T08:16:30Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Suppression des programmes inutiles */</comment>
      <text xml:space="preserve" bytes="52214">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Modifiez en conséquence votre fichier interfaces.

 root@facteur:~# nano /etc/network/interfaces
&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 nano /etc/resolv.conf
&lt;code&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/code&gt;

Un test rapide:
&lt;code&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/code&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg]]

[[Fichier:Snapshot159.jpeg]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

À voir plus tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>6rpro96z82908johih1qf6y3amssd5a</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2865</id>
      <parentid>2864</parentid>
      <timestamp>2011-04-10T08:18:46Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Mysql */</comment>
      <text xml:space="preserve" bytes="52347">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Modifiez en conséquence votre fichier interfaces.

 root@facteur:~# nano /etc/network/interfaces
&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 nano /etc/resolv.conf
&lt;code&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/code&gt;

Un test rapide:
&lt;code&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/code&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg]]

[[Fichier:Snapshot162.jpeg]]

[[Fichier:Snapshot163.jpeg]]

[[Fichier:Snapshot187.jpeg]]

[[Fichier:Snapshot188.jpeg]]

[[Fichier:Snapshot189.jpeg]]

[[Fichier:Snapshot169.jpeg]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

À voir plus tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>eb1c17218qwu5zsv3gut0dydrcepu8i</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2866</id>
      <parentid>2865</parentid>
      <timestamp>2011-04-10T08:25:50Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Postfix/Dovecot/Apache2/sasl/php */</comment>
      <text xml:space="preserve" bytes="52800">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Modifiez en conséquence votre fichier interfaces.

 root@facteur:~# nano /etc/network/interfaces
&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 nano /etc/resolv.conf
&lt;code&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/code&gt;

Un test rapide:
&lt;code&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/code&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]
[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

À voir plus tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg]]

[[Fichier:Snapshot175.jpeg]]


Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>3ng5egafu1zryqkvahs8eelstsy0x3z</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2867</id>
      <parentid>2866</parentid>
      <timestamp>2011-04-10T08:30:48Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Postfixadmin */</comment>
      <text xml:space="preserve" bytes="52830">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Modifiez en conséquence votre fichier interfaces.

 root@facteur:~# nano /etc/network/interfaces
&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 nano /etc/resolv.conf
&lt;code&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/code&gt;

Un test rapide:
&lt;code&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/code&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]
[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

À voir plus tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;code&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/code&gt;

[[fichier:Snapshot142.jpeg]]

[[fichier:Snapshot178.jpeg]]

[[fichier:Snapshot179.jpeg]]

[[fichier:Snapshot180.jpeg]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>qma1wz9ohcwqrwxp123x2dhx6uryd3q</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2868</id>
      <parentid>2867</parentid>
      <timestamp>2011-04-10T08:37:31Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Install Amavisd-new, SpamAssassin, And Clamav */</comment>
      <text xml:space="preserve" bytes="52923">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Modifiez en conséquence votre fichier interfaces.

 root@facteur:~# nano /etc/network/interfaces
&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 nano /etc/resolv.conf
&lt;code&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/code&gt;

Un test rapide:
&lt;code&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/code&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]
[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

À voir plus tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>lmmw2ah2tarniledn9ct4ns2sgz6i6v</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2869</id>
      <parentid>2868</parentid>
      <timestamp>2011-04-10T08:48:24Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Préparation du système */</comment>
      <text xml:space="preserve" bytes="53697">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

Source [http://fr.wikipedia.org/wiki/Rkhunter Wikipedia] [http://rkhunter.sourceforge.net/The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt_get install rkhunter

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Modifiez en conséquence votre fichier interfaces.

 root@facteur:~# nano /etc/network/interfaces
&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 nano /etc/resolv.conf
&lt;code&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/code&gt;

Un test rapide:
&lt;code&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/code&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]
[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

À voir plus tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>6lr8u8vhxu7clqmc60iaicwdg0w9ko4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2871</id>
      <parentid>2869</parentid>
      <timestamp>2011-04-10T11:26:35Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Modification du sources.list */</comment>
      <text xml:space="preserve" bytes="53847">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

Source [http://fr.wikipedia.org/wiki/Rkhunter Wikipedia] [http://rkhunter.sourceforge.net/The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt_get install rkhunter

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 192.168.3.114 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Modifiez en conséquence votre fichier interfaces.

 root@facteur:~# nano /etc/network/interfaces
&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 nano /etc/resolv.conf
&lt;code&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/code&gt;

Un test rapide:
&lt;code&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/code&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]
[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

À voir plus tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>lvogvjkz60ph540bnw8wnzu8axzalb4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2872</id>
      <parentid>2871</parentid>
      <timestamp>2011-04-10T11:30:05Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Modification de votre fichier interfaces */</comment>
      <text xml:space="preserve" bytes="54045">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

Source [http://fr.wikipedia.org/wiki/Rkhunter Wikipedia] [http://rkhunter.sourceforge.net/The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt_get install rkhunter

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

Vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Modifiez en conséquence votre fichier interfaces.

 root@facteur:~# nano /etc/network/interfaces
&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 nano /etc/resolv.conf
&lt;code&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/code&gt;

Un test rapide:
&lt;code&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/code&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]
[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

À voir plus tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>1vi0prsuginbv5mbo8rr62fv1fpx9xy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2873</id>
      <parentid>2872</parentid>
      <timestamp>2011-04-10T11:31:33Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Suppression des programmes inutiles */</comment>
      <text xml:space="preserve" bytes="53850">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

Source [http://fr.wikipedia.org/wiki/Rkhunter Wikipedia] [http://rkhunter.sourceforge.net/The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt_get install rkhunter

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Modifiez en conséquence votre fichier interfaces.

 root@facteur:~# nano /etc/network/interfaces
&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 nano /etc/resolv.conf
&lt;code&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/code&gt;

Un test rapide:
&lt;code&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/code&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]
[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

À voir plus tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>9cvxee53obqddkmxd4lap09knq3z0t2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2874</id>
      <parentid>2873</parentid>
      <timestamp>2011-04-10T11:33:16Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Le DNS */</comment>
      <text xml:space="preserve" bytes="54088">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

Source [http://fr.wikipedia.org/wiki/Rkhunter Wikipedia] [http://rkhunter.sourceforge.net/The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt_get install rkhunter

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

=== Suppression des programmes inutiles ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 nano /etc/resolv.conf
&lt;code&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/code&gt;

Un test rapide:
&lt;code&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/code&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]
[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

À voir plus tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>p18a0zgrqli3wfz1k4t8pv5kca7hkpg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2875</id>
      <parentid>2874</parentid>
      <timestamp>2011-04-10T11:37:05Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Suppression des programmes inutiles */</comment>
      <text xml:space="preserve" bytes="52679">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

Source [http://fr.wikipedia.org/wiki/Rkhunter Wikipedia] [http://rkhunter.sourceforge.net/The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt_get install rkhunter

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 nano /etc/resolv.conf
&lt;code&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/code&gt;

Un test rapide:
&lt;code&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/code&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]
[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

À voir plus tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>hqw4eideky41ffuc7hik4ya4e1whop3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2876</id>
      <parentid>2875</parentid>
      <timestamp>2011-04-10T11:41:54Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Postfix/Dovecot/Apache2/sasl/php */</comment>
      <text xml:space="preserve" bytes="54361">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

Source [http://fr.wikipedia.org/wiki/Rkhunter Wikipedia] [http://rkhunter.sourceforge.net/The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt_get install rkhunter

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 nano /etc/resolv.conf
&lt;code&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/code&gt;

Un test rapide:
&lt;code&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/code&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

À voir plus tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>tnb6pqyy4fdu85abe0jqp8hgsv4nveb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2877</id>
      <parentid>2876</parentid>
      <timestamp>2011-04-10T11:44:22Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Activation du mode SSL de Apache */</comment>
      <text xml:space="preserve" bytes="54366">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

Source [http://fr.wikipedia.org/wiki/Rkhunter Wikipedia] [http://rkhunter.sourceforge.net/The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt_get install rkhunter

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 nano /etc/resolv.conf
&lt;code&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/code&gt;

Un test rapide:
&lt;code&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/code&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

À voir plus tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>pnj246mlqze9qec2szndi0w4at40kst</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2878</id>
      <parentid>2877</parentid>
      <timestamp>2011-04-10T11:47:06Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Activation du mode SSL de Apache */</comment>
      <text xml:space="preserve" bytes="54679">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

Source [http://fr.wikipedia.org/wiki/Rkhunter Wikipedia] [http://rkhunter.sourceforge.net/The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt_get install rkhunter

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 nano /etc/resolv.conf
&lt;code&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/code&gt;

Un test rapide:
&lt;code&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/code&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

À voir plus tard:

 $CONF['maxquota'] = '50';
 $CONF['quota'] = 'YES';

 $CONF['fetchmail'] = 'NO';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: http://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>mc2bhwlz5rtwhi8o0f1nivicds7cmfa</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2879</id>
      <parentid>2878</parentid>
      <timestamp>2011-04-10T11:51:59Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Postfixadmin */</comment>
      <text xml:space="preserve" bytes="54511">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

Source [http://fr.wikipedia.org/wiki/Rkhunter Wikipedia] [http://rkhunter.sourceforge.net/The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt_get install rkhunter

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 nano /etc/resolv.conf
&lt;code&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/code&gt;

Un test rapide:
&lt;code&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/code&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil http://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>2gsti19qsae9ettkru7gqcll0lfg4sx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2880</id>
      <parentid>2879</parentid>
      <timestamp>2011-04-10T11:55:58Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Postfixadmin */</comment>
      <text xml:space="preserve" bytes="54512">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

Source [http://fr.wikipedia.org/wiki/Rkhunter Wikipedia] [http://rkhunter.sourceforge.net/The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt_get install rkhunter

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 nano /etc/resolv.conf
&lt;code&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/code&gt;

Un test rapide:
&lt;code&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/code&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test du SMTP AUTH ====


La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>nta942sukam7ni541uqju7eom388qqg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2881</id>
      <parentid>2880</parentid>
      <timestamp>2011-04-10T12:21:28Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Premiers essais */</comment>
      <text xml:space="preserve" bytes="50745">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

Source [http://fr.wikipedia.org/wiki/Rkhunter Wikipedia] [http://rkhunter.sourceforge.net/The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt_get install rkhunter

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 nano /etc/resolv.conf
&lt;code&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/code&gt;

Un test rapide:
&lt;code&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/code&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>bfjwfwd98xwcq7qvdqzzqv2psefihph</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2882</id>
      <parentid>2881</parentid>
      <timestamp>2011-04-10T12:25:50Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Install Amavisd-new, SpamAssassin, And Clamav */</comment>
      <text xml:space="preserve" bytes="55692">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

Source [http://fr.wikipedia.org/wiki/Rkhunter Wikipedia] [http://rkhunter.sourceforge.net/The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt_get install rkhunter

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 nano /etc/resolv.conf
&lt;code&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/code&gt;

Un test rapide:
&lt;code&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/code&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaine avec la commde suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>ejo6ff1by7facxy6xhfajstx5mgtkxy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2883</id>
      <parentid>2882</parentid>
      <timestamp>2011-04-10T12:27:10Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Test de l'ensemble de la chaine */</comment>
      <text xml:space="preserve" bytes="55695">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

Source [http://fr.wikipedia.org/wiki/Rkhunter Wikipedia] [http://rkhunter.sourceforge.net/The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt_get install rkhunter

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 nano /etc/resolv.conf
&lt;code&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/code&gt;

Un test rapide:
&lt;code&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/code&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>53bq14k0fph55lavl7zbf832jkslgin</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2884</id>
      <parentid>2883</parentid>
      <timestamp>2011-04-12T08:22:27Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Installation de Rkhunter */</comment>
      <text xml:space="preserve" bytes="55685">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

Source [http://fr.wikipedia.org/wiki/Rkhunter] [http://rkhunter.sourceforge.net/The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt_get install rkhunter

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 nano /etc/resolv.conf
&lt;code&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/code&gt;

Un test rapide:
&lt;code&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/code&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>9vidu0ymlphzk8zwn9zyr0euef0dh8b</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2885</id>
      <parentid>2884</parentid>
      <timestamp>2011-04-12T10:59:34Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Installation de Rkhunter */</comment>
      <text xml:space="preserve" bytes="55685">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

[http://fr.wikipedia.org/wiki/Rkhunter Source] [http://rkhunter.sourceforge.net The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt_get install rkhunter

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 nano /etc/resolv.conf
&lt;code&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/code&gt;

Un test rapide:
&lt;code&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/code&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>pksf69y7yrpd3097sikkppt7s4zw2cc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2912</id>
      <parentid>2885</parentid>
      <timestamp>2011-04-25T13:05:57Z</timestamp>
      <contributor>
        <username>Aikadil</username>
        <id>120</id>
      </contributor>
      <comment>/* Test du SMTP AUTH */</comment>
      <text xml:space="preserve" bytes="55686">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

[http://fr.wikipedia.org/wiki/Rkhunter Source] [http://rkhunter.sourceforge.net The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt_get install rkhunter

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 nano /etc/resolv.conf
&lt;code&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/code&gt;

Un test rapide:
&lt;code&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/code&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai/@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>t8nsehovqfchteeis5tqydt5cbkxsoz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2914</id>
      <parentid>2912</parentid>
      <timestamp>2011-04-25T13:11:16Z</timestamp>
      <contributor>
        <username>Aikadil</username>
        <id>120</id>
      </contributor>
      <comment>/* Test du SMTP AUTH */</comment>
      <text xml:space="preserve" bytes="55686">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

[http://fr.wikipedia.org/wiki/Rkhunter Source] [http://rkhunter.sourceforge.net The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt_get install rkhunter

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/code&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 nano /etc/resolv.conf
&lt;code&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/code&gt;

Un test rapide:
&lt;code&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/code&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>9yybif6ncd7cj9hleq56iria2gucpj6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2972</id>
      <parentid>2914</parentid>
      <timestamp>2011-05-09T13:21:32Z</timestamp>
      <contributor>
        <username>Keldath</username>
        <id>64</id>
      </contributor>
      <minor/>
      <comment>/* Modification du sources.list */ Amélioration de la lisibilité du sources.list avec la balise &lt;pre&gt;</comment>
      <text xml:space="preserve" bytes="55684">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

[http://fr.wikipedia.org/wiki/Rkhunter Source] [http://rkhunter.sourceforge.net The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt_get install rkhunter

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;code&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/code&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 nano /etc/resolv.conf
&lt;code&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/code&gt;

Un test rapide:
&lt;code&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/code&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>59alr9clc41t2bqpwczqdy5n5vz40ym</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2973</id>
      <parentid>2972</parentid>
      <timestamp>2011-05-09T13:25:55Z</timestamp>
      <contributor>
        <username>Keldath</username>
        <id>64</id>
      </contributor>
      <minor/>
      <comment>/* Définition du &quot;hostname&quot; */ Amélioration de la lisibilité avec la balise &lt;pre&gt;</comment>
      <text xml:space="preserve" bytes="55682">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

[http://fr.wikipedia.org/wiki/Rkhunter Source] [http://rkhunter.sourceforge.net The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt_get install rkhunter

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 nano /etc/resolv.conf
&lt;code&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/code&gt;

Un test rapide:
&lt;code&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/code&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>cj97hra1yxy6eayemk20618a3vmiohk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2974</id>
      <parentid>2973</parentid>
      <timestamp>2011-05-09T13:27:15Z</timestamp>
      <contributor>
        <username>Keldath</username>
        <id>64</id>
      </contributor>
      <minor/>
      <comment>/* Modification de votre fichier interfaces */ Amélioration de la lisibilité avec la balise &lt;pre&gt;</comment>
      <text xml:space="preserve" bytes="55680">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

[http://fr.wikipedia.org/wiki/Rkhunter Source] [http://rkhunter.sourceforge.net The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt_get install rkhunter

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;code&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/code&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 nano /etc/resolv.conf
&lt;code&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/code&gt;

Un test rapide:
&lt;code&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/code&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>okn9w26jdjmh641nis2x27qlnu7780r</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2975</id>
      <parentid>2974</parentid>
      <timestamp>2011-05-09T13:44:03Z</timestamp>
      <contributor>
        <username>Keldath</username>
        <id>64</id>
      </contributor>
      <minor/>
      <comment>/* Le DNS */ Amélioration de la lisibilité avec la balise &lt;pre&gt;</comment>
      <text xml:space="preserve" bytes="55690">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

[http://fr.wikipedia.org/wiki/Rkhunter Source] [http://rkhunter.sourceforge.net The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt_get install rkhunter

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# nano /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/code&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>2u52k4ryiu7n97turs61jhaym5ma9rd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2976</id>
      <parentid>2975</parentid>
      <timestamp>2011-05-09T13:47:54Z</timestamp>
      <contributor>
        <username>Keldath</username>
        <id>64</id>
      </contributor>
      <minor/>
      <comment>/* Mysql */ Amélioration de la lisibilité avec la balise &lt;pre&gt;</comment>
      <text xml:space="preserve" bytes="55688">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

[http://fr.wikipedia.org/wiki/Rkhunter Source] [http://rkhunter.sourceforge.net The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt_get install rkhunter

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# nano /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>r67pkxvtpz7myng4xkwxzpz0q1887vp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3008</id>
      <parentid>2976</parentid>
      <timestamp>2011-05-29T15:42:22Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Installation de Rkhunter */</comment>
      <text xml:space="preserve" bytes="56050">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

[http://fr.wikipedia.org/wiki/Rkhunter Source] [http://rkhunter.sourceforge.net The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt-get install rkhunter

Configuration rapide:

Afin d'éviter des &quot;faux positifs&quot; inutiles, dé-commentez les deux lignes suivantes dans /etc/

 ...
 ALLOWHIDDENDIR=/dev/.udev
 ...
 ALLOWHIDDENDIR=/dev/.static
 ...

Enfin, dans le même fichier, renseignez l'adresse de réception des rapports

 ...
 #MAIL-ON-WARNING=me@mydomain   root@mydomain
 MAIL-ON-WARNING=admin@zehome.org
 ...

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# nano /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>1puxvjt9noyf7aby0235tl5w81emr6m</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3009</id>
      <parentid>3008</parentid>
      <timestamp>2011-05-30T05:31:17Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Installation de Rkhunter */</comment>
      <text xml:space="preserve" bytes="56063">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

[http://fr.wikipedia.org/wiki/Rkhunter Source] [http://rkhunter.sourceforge.net The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt-get install rkhunter

Configuration rapide:

Afin d'éviter des &quot;faux positifs&quot; inutiles, dé-commentez les deux lignes suivantes dans /etc/rkhunter.conf

 ...
 ALLOWHIDDENDIR=/dev/.udev
 ...
 ALLOWHIDDENDIR=/dev/.static
 ...

Enfin, dans le même fichier, renseignez l'adresse de réception des rapports

 ...
 #MAIL-ON-WARNING=me@mydomain   root@mydomain
 MAIL-ON-WARNING=admin@zehome.org
 ...

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# nano /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>c0kqvicio3122z9p5m7hcu0c9kro39i</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3010</id>
      <parentid>3009</parentid>
      <timestamp>2011-05-30T05:34:52Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Installation de Rkhunter */</comment>
      <text xml:space="preserve" bytes="56117">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

[http://fr.wikipedia.org/wiki/Rkhunter Source] [http://rkhunter.sourceforge.net The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt-get install rkhunter

Configuration rapide:

Afin d'éviter des &quot;faux positifs&quot; inutiles, dé-commentez les deux lignes suivantes dans /etc/rkhunter.conf

 ...
 ALLOWHIDDENDIR=/dev/.udev
 ...
 ALLOWHIDDENDIR=/dev/.static
 ...

Enfin, dans le même fichier, renseignez l'adresse de réception des rapports

 ...
 #MAIL-ON-WARNING=me@mydomain   root@mydomain
 MAIL-ON-WARNING=admin@zehome.org
 ...

Enfin, rechargez:
 root@facteur:~# rkhunter --update

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# nano /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>gzn8xqwah2gtj22fo9qqqygk8ly42vq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3011</id>
      <parentid>3010</parentid>
      <timestamp>2011-05-30T19:08:16Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Install Amavisd-new, SpamAssassin, And Clamav */</comment>
      <text xml:space="preserve" bytes="56134">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

[http://fr.wikipedia.org/wiki/Rkhunter Source] [http://rkhunter.sourceforge.net The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt-get install rkhunter

Configuration rapide:

Afin d'éviter des &quot;faux positifs&quot; inutiles, dé-commentez les deux lignes suivantes dans /etc/rkhunter.conf

 ...
 ALLOWHIDDENDIR=/dev/.udev
 ...
 ALLOWHIDDENDIR=/dev/.static
 ...

Enfin, dans le même fichier, renseignez l'adresse de réception des rapports

 ...
 #MAIL-ON-WARNING=me@mydomain   root@mydomain
 MAIL-ON-WARNING=admin@zehome.org
 ...

Enfin, rechargez:
 root@facteur:~# rkhunter --update

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# nano /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl p7zip unrar-free
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Premièrement, téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>3rev7icmb07ul6qjc43q7bx3fk61quy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3012</id>
      <parentid>3011</parentid>
      <timestamp>2011-05-30T19:25:05Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Roundcube */</comment>
      <text xml:space="preserve" bytes="56291">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

[http://fr.wikipedia.org/wiki/Rkhunter Source] [http://rkhunter.sourceforge.net The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt-get install rkhunter

Configuration rapide:

Afin d'éviter des &quot;faux positifs&quot; inutiles, dé-commentez les deux lignes suivantes dans /etc/rkhunter.conf

 ...
 ALLOWHIDDENDIR=/dev/.udev
 ...
 ALLOWHIDDENDIR=/dev/.static
 ...

Enfin, dans le même fichier, renseignez l'adresse de réception des rapports

 ...
 #MAIL-ON-WARNING=me@mydomain   root@mydomain
 MAIL-ON-WARNING=admin@zehome.org
 ...

Enfin, rechargez:
 root@facteur:~# rkhunter --update

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# nano /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl p7zip unrar-free
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Il est conseillé, mais pas indispensable d'installer préalablement les codes et modules suivants:

 root@facteur:~# apt-get install libiconv-hook1 php5-mcrypt php5-intl

Téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>9qaxkav5k8ypddpuzky0od079yzk1yu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3013</id>
      <parentid>3012</parentid>
      <timestamp>2011-05-30T19:25:45Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Roundcube */</comment>
      <text xml:space="preserve" bytes="56292">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

[http://fr.wikipedia.org/wiki/Rkhunter Source] [http://rkhunter.sourceforge.net The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt-get install rkhunter

Configuration rapide:

Afin d'éviter des &quot;faux positifs&quot; inutiles, dé-commentez les deux lignes suivantes dans /etc/rkhunter.conf

 ...
 ALLOWHIDDENDIR=/dev/.udev
 ...
 ALLOWHIDDENDIR=/dev/.static
 ...

Enfin, dans le même fichier, renseignez l'adresse de réception des rapports

 ...
 #MAIL-ON-WARNING=me@mydomain   root@mydomain
 MAIL-ON-WARNING=admin@zehome.org
 ...

Enfin, rechargez:
 root@facteur:~# rkhunter --update

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT
{
Install-Recommends &quot;false&quot;;
}
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# nano /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl p7zip unrar-free
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Il est conseillé (mais pas indispensable) d'installer préalablement les codes et modules suivants:

 root@facteur:~# apt-get install libiconv-hook1 php5-mcrypt php5-intl

Téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>krkhbvtjv8ax0n3ba9h3lofyudkspfz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3014</id>
      <parentid>3013</parentid>
      <timestamp>2011-05-30T19:34:26Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Install-Recommends et diminution des priorités debconf */</comment>
      <text xml:space="preserve" bytes="56340">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

[http://fr.wikipedia.org/wiki/Rkhunter Source] [http://rkhunter.sourceforge.net The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt-get install rkhunter

Configuration rapide:

Afin d'éviter des &quot;faux positifs&quot; inutiles, dé-commentez les deux lignes suivantes dans /etc/rkhunter.conf

 ...
 ALLOWHIDDENDIR=/dev/.udev
 ...
 ALLOWHIDDENDIR=/dev/.static
 ...

Enfin, dans le même fichier, renseignez l'adresse de réception des rapports

 ...
 #MAIL-ON-WARNING=me@mydomain   root@mydomain
 MAIL-ON-WARNING=admin@zehome.org
 ...

Enfin, rechargez:
 root@facteur:~# rkhunter --update

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; et &quot;suggérés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT 
{
  Install-Recommends &quot;false&quot;;
  Install-Suggests &quot;false&quot;;
};
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# nano /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl p7zip unrar-free
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Il est conseillé (mais pas indispensable) d'installer préalablement les codes et modules suivants:

 root@facteur:~# apt-get install libiconv-hook1 php5-mcrypt php5-intl

Téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>9b5ptjw9shee7lw1j3pr75j1phaofl8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3018</id>
      <parentid>3014</parentid>
      <timestamp>2011-06-05T05:16:35Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Autorisation des utilisateurs &quot;postfixadmin&quot; et &quot;postfix&quot; sur localhost uniquement (% remplacé par localhost)</comment>
      <text xml:space="preserve" bytes="56419">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

[http://fr.wikipedia.org/wiki/Rkhunter Source] [http://rkhunter.sourceforge.net The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt-get install rkhunter

Configuration rapide:

Afin d'éviter des &quot;faux positifs&quot; inutiles, dé-commentez les deux lignes suivantes dans /etc/rkhunter.conf

 ...
 ALLOWHIDDENDIR=/dev/.udev
 ...
 ALLOWHIDDENDIR=/dev/.static
 ...

Enfin, dans le même fichier, renseignez l'adresse de réception des rapports

 ...
 #MAIL-ON-WARNING=me@mydomain   root@mydomain
 MAIL-ON-WARNING=admin@zehome.org
 ...

Enfin, rechargez:
 root@facteur:~# rkhunter --update

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; et &quot;suggérés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT 
{
  Install-Recommends &quot;false&quot;;
  Install-Suggests &quot;false&quot;;
};
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# nano /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl p7zip unrar-free
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Il est conseillé (mais pas indispensable) d'installer préalablement les codes et modules suivants:

 root@facteur:~# apt-get install libiconv-hook1 php5-mcrypt php5-intl

Téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>bic4zz60dgo7l7espt8l9zuiktcdvii</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3019</id>
      <parentid>3018</parentid>
      <timestamp>2011-06-05T05:20:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Sauvegarde config.inc.php avant modification (et non après...)</comment>
      <text xml:space="preserve" bytes="56419">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

[http://fr.wikipedia.org/wiki/Rkhunter Source] [http://rkhunter.sourceforge.net The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt-get install rkhunter

Configuration rapide:

Afin d'éviter des &quot;faux positifs&quot; inutiles, dé-commentez les deux lignes suivantes dans /etc/rkhunter.conf

 ...
 ALLOWHIDDENDIR=/dev/.udev
 ...
 ALLOWHIDDENDIR=/dev/.static
 ...

Enfin, dans le même fichier, renseignez l'adresse de réception des rapports

 ...
 #MAIL-ON-WARNING=me@mydomain   root@mydomain
 MAIL-ON-WARNING=admin@zehome.org
 ...

Enfin, rechargez:
 root@facteur:~# rkhunter --update

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; et &quot;suggérés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT 
{
  Install-Recommends &quot;false&quot;;
  Install-Suggests &quot;false&quot;;
};
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# nano /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl p7zip unrar-free
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Il est conseillé (mais pas indispensable) d'installer préalablement les codes et modules suivants:

 root@facteur:~# apt-get install libiconv-hook1 php5-mcrypt php5-intl

Téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>j6g6m4vxlwuw4xlba03kihnlo95rk99</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3020</id>
      <parentid>3019</parentid>
      <timestamp>2011-06-05T06:13:18Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Test de l'ensemble de la chaine */</comment>
      <text xml:space="preserve" bytes="56530">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

[http://fr.wikipedia.org/wiki/Rkhunter Source] [http://rkhunter.sourceforge.net The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt-get install rkhunter

Configuration rapide:

Afin d'éviter des &quot;faux positifs&quot; inutiles, dé-commentez les deux lignes suivantes dans /etc/rkhunter.conf

 ...
 ALLOWHIDDENDIR=/dev/.udev
 ...
 ALLOWHIDDENDIR=/dev/.static
 ...

Enfin, dans le même fichier, renseignez l'adresse de réception des rapports

 ...
 #MAIL-ON-WARNING=me@mydomain   root@mydomain
 MAIL-ON-WARNING=admin@zehome.org
 ...

Enfin, rechargez:
 root@facteur:~# rkhunter --update

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; et &quot;suggérés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT 
{
  Install-Recommends &quot;false&quot;;
  Install-Suggests &quot;false&quot;;
};
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# nano /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

Il faudra installer mailx pour pouvoir faire des essais d'envois:

 root@facteur:~# apt-get install mailutils

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl p7zip unrar-free
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Il est conseillé (mais pas indispensable) d'installer préalablement les codes et modules suivants:

 root@facteur:~# apt-get install libiconv-hook1 php5-mcrypt php5-intl

Téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'%' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>om5tvo4e3q7zn2wpkwcrzz92hg4st6t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3021</id>
      <parentid>3020</parentid>
      <timestamp>2011-06-05T07:02:42Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Roundcube */</comment>
      <text xml:space="preserve" bytes="56601">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

[http://fr.wikipedia.org/wiki/Rkhunter Source] [http://rkhunter.sourceforge.net The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt-get install rkhunter

Configuration rapide:

Afin d'éviter des &quot;faux positifs&quot; inutiles, dé-commentez les deux lignes suivantes dans /etc/rkhunter.conf

 ...
 ALLOWHIDDENDIR=/dev/.udev
 ...
 ALLOWHIDDENDIR=/dev/.static
 ...

Enfin, dans le même fichier, renseignez l'adresse de réception des rapports

 ...
 #MAIL-ON-WARNING=me@mydomain   root@mydomain
 MAIL-ON-WARNING=admin@zehome.org
 ...

Enfin, rechargez:
 root@facteur:~# rkhunter --update

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; et &quot;suggérés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT 
{
  Install-Recommends &quot;false&quot;;
  Install-Suggests &quot;false&quot;;
};
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# nano /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

Il faudra installer mailx pour pouvoir faire des essais d'envois:

 root@facteur:~# apt-get install mailutils

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl p7zip unrar-free
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Il est conseillé (mais pas indispensable) d'installer préalablement les codes et modules suivants:

 root@facteur:~# apt-get install libiconv-hook1 php5-mcrypt php5-intl

Téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>lnaxbttz8sseknt7b95djlj1wu8zkj8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3022</id>
      <parentid>3021</parentid>
      <timestamp>2011-06-05T07:21:05Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Roundcube */</comment>
      <text xml:space="preserve" bytes="56659">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

[http://fr.wikipedia.org/wiki/Rkhunter Source] [http://rkhunter.sourceforge.net The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt-get install rkhunter

Configuration rapide:

Afin d'éviter des &quot;faux positifs&quot; inutiles, dé-commentez les deux lignes suivantes dans /etc/rkhunter.conf

 ...
 ALLOWHIDDENDIR=/dev/.udev
 ...
 ALLOWHIDDENDIR=/dev/.static
 ...

Enfin, dans le même fichier, renseignez l'adresse de réception des rapports

 ...
 #MAIL-ON-WARNING=me@mydomain   root@mydomain
 MAIL-ON-WARNING=admin@zehome.org
 ...

Enfin, rechargez:
 root@facteur:~# rkhunter --update

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; et &quot;suggérés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT 
{
  Install-Recommends &quot;false&quot;;
  Install-Suggests &quot;false&quot;;
};
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# nano /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

Il faudra installer mailx pour pouvoir faire des essais d'envois:

 root@facteur:~# apt-get install mailutils

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl p7zip unrar-free
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Il est conseillé (mais pas indispensable) d'installer préalablement les codes et modules suivants:

 root@facteur:~# apt-get install libiconv-hook1 php5-mcrypt php5-intl

Téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

 root@facteur:~# rm -r /var/www/roundcubemail/installer


[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbo$
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>2ddsdfsvi1edmsx5p5pytyulxzj637d</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3023</id>
      <parentid>3022</parentid>
      <timestamp>2011-06-05T08:44:49Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>ligne tronquée...</comment>
      <text xml:space="preserve" bytes="56693">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

[http://fr.wikipedia.org/wiki/Rkhunter Source] [http://rkhunter.sourceforge.net The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt-get install rkhunter

Configuration rapide:

Afin d'éviter des &quot;faux positifs&quot; inutiles, dé-commentez les deux lignes suivantes dans /etc/rkhunter.conf

 ...
 ALLOWHIDDENDIR=/dev/.udev
 ...
 ALLOWHIDDENDIR=/dev/.static
 ...

Enfin, dans le même fichier, renseignez l'adresse de réception des rapports

 ...
 #MAIL-ON-WARNING=me@mydomain   root@mydomain
 MAIL-ON-WARNING=admin@zehome.org
 ...

Enfin, rechargez:
 root@facteur:~# rkhunter --update

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; et &quot;suggérés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT 
{
  Install-Recommends &quot;false&quot;;
  Install-Suggests &quot;false&quot;;
};
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# nano /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

Il faudra installer mailx pour pouvoir faire des essais d'envois:

 root@facteur:~# apt-get install mailutils

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl p7zip unrar-free
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Il est conseillé (mais pas indispensable) d'installer préalablement les codes et modules suivants:

 root@facteur:~# apt-get install libiconv-hook1 php5-mcrypt php5-intl

Téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

 root@facteur:~# rm -r /var/www/roundcubemail/installer


[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=Perso2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbox WHERE username = '%u' AND active='1'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>mqadk6v2expwcjshgrnuouh4xrmgnfh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3025</id>
      <parentid>3023</parentid>
      <timestamp>2011-06-06T05:43:10Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Postfix */</comment>
      <text xml:space="preserve" bytes="57367">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

[http://fr.wikipedia.org/wiki/Rkhunter Source] [http://rkhunter.sourceforge.net The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt-get install rkhunter

Configuration rapide:

Afin d'éviter des &quot;faux positifs&quot; inutiles, dé-commentez les deux lignes suivantes dans /etc/rkhunter.conf

 ...
 ALLOWHIDDENDIR=/dev/.udev
 ...
 ALLOWHIDDENDIR=/dev/.static
 ...

Enfin, dans le même fichier, renseignez l'adresse de réception des rapports

 ...
 #MAIL-ON-WARNING=me@mydomain   root@mydomain
 MAIL-ON-WARNING=admin@zehome.org
 ...

Enfin, rechargez:
 root@facteur:~# rkhunter --update

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; et &quot;suggérés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT 
{
  Install-Recommends &quot;false&quot;;
  Install-Suggests &quot;false&quot;;
};
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# nano /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

==== Quelques réglages supplémentaires ====

Postfix est maintenant fonctionnel, mais il mérite encore votre attention.
Voici quelques options importantes à activer:

 # Obtenir une alerte si les emails ne partent pas
 # Par défaut cette option est réglée à 4 heures, j'ai réduit cette durée:
 delay_warning_time = 1h

 # Ajoutez votre réseau local ici
 mynetworks = 10.9.8.0/22 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

 # Indiquer à Postfix de livrer à un destinataire à la fois
 # la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnerais pas sans cette option
 dovecot_destination_recipient_limit = 1

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

Il faudra installer mailx pour pouvoir faire des essais d'envois:

 root@facteur:~# apt-get install mailutils

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl p7zip unrar-free
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Il est conseillé (mais pas indispensable) d'installer préalablement les codes et modules suivants:

 root@facteur:~# apt-get install libiconv-hook1 php5-mcrypt php5-intl

Téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

 root@facteur:~# rm -r /var/www/roundcubemail/installer


[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=Perso2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbox WHERE username = '%u' AND active='1'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>5hd3eaey4s1ar9g7w0dfkndeqlcdqng</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3041</id>
      <parentid>3025</parentid>
      <timestamp>2011-06-09T05:46:54Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>j'avais oublié le dossier pour les pièces jointes...</comment>
      <text xml:space="preserve" bytes="57421">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

[http://fr.wikipedia.org/wiki/Rkhunter Source] [http://rkhunter.sourceforge.net The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt-get install rkhunter

Configuration rapide:

Afin d'éviter des &quot;faux positifs&quot; inutiles, dé-commentez les deux lignes suivantes dans /etc/rkhunter.conf

 ...
 ALLOWHIDDENDIR=/dev/.udev
 ...
 ALLOWHIDDENDIR=/dev/.static
 ...

Enfin, dans le même fichier, renseignez l'adresse de réception des rapports

 ...
 #MAIL-ON-WARNING=me@mydomain   root@mydomain
 MAIL-ON-WARNING=admin@zehome.org
 ...

Enfin, rechargez:
 root@facteur:~# rkhunter --update

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; et &quot;suggérés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT 
{
  Install-Recommends &quot;false&quot;;
  Install-Suggests &quot;false&quot;;
};
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# nano /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

==== Quelques réglages supplémentaires ====

Postfix est maintenant fonctionnel, mais il mérite encore votre attention.
Voici quelques options importantes à activer:

 # Obtenir une alerte si les emails ne partent pas
 # Par défaut cette option est réglée à 4 heures, j'ai réduit cette durée:
 delay_warning_time = 1h

 # Ajoutez votre réseau local ici
 mynetworks = 10.9.8.0/22 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

 # Indiquer à Postfix de livrer à un destinataire à la fois
 # la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnerais pas sans cette option
 dovecot_destination_recipient_limit = 1

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

Il faudra installer mailx pour pouvoir faire des essais d'envois:

 root@facteur:~# apt-get install mailutils

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl p7zip unrar-free
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# mkdir /var/local/squirrelmail/attach
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Il est conseillé (mais pas indispensable) d'installer préalablement les codes et modules suivants:

 root@facteur:~# apt-get install libiconv-hook1 php5-mcrypt php5-intl

Téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

 root@facteur:~# rm -r /var/www/roundcubemail/installer


[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol managesieve {
  listen = *:2000
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve
  mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes
}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_auth_type'] = null;

Par :

 $rcmail_config['managesieve_auth_type'] = LOGIN;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=Perso2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbox WHERE username = '%u' AND active='1'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>nw30pdjwmw933su0km53ghbckysaz6w</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3073</id>
      <parentid>3041</parentid>
      <timestamp>2011-06-13T07:19:20Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Plus loin avec Dovecot : Managesieve */</comment>
      <text xml:space="preserve" bytes="57302">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

[http://fr.wikipedia.org/wiki/Rkhunter Source] [http://rkhunter.sourceforge.net The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt-get install rkhunter

Configuration rapide:

Afin d'éviter des &quot;faux positifs&quot; inutiles, dé-commentez les deux lignes suivantes dans /etc/rkhunter.conf

 ...
 ALLOWHIDDENDIR=/dev/.udev
 ...
 ALLOWHIDDENDIR=/dev/.static
 ...

Enfin, dans le même fichier, renseignez l'adresse de réception des rapports

 ...
 #MAIL-ON-WARNING=me@mydomain   root@mydomain
 MAIL-ON-WARNING=admin@zehome.org
 ...

Enfin, rechargez:
 root@facteur:~# rkhunter --update

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; et &quot;suggérés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT 
{
  Install-Recommends &quot;false&quot;;
  Install-Suggests &quot;false&quot;;
};
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# nano /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

==== Quelques réglages supplémentaires ====

Postfix est maintenant fonctionnel, mais il mérite encore votre attention.
Voici quelques options importantes à activer:

 # Obtenir une alerte si les emails ne partent pas
 # Par défaut cette option est réglée à 4 heures, j'ai réduit cette durée:
 delay_warning_time = 1h

 # Ajoutez votre réseau local ici
 mynetworks = 10.9.8.0/22 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

 # Indiquer à Postfix de livrer à un destinataire à la fois
 # la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnerais pas sans cette option
 dovecot_destination_recipient_limit = 1

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

Il faudra installer mailx pour pouvoir faire des essais d'envois:

 root@facteur:~# apt-get install mailutils

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl p7zip unrar-free
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# mkdir /var/local/squirrelmail/attach
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Il est conseillé (mais pas indispensable) d'installer préalablement les codes et modules suivants:

 root@facteur:~# apt-get install libiconv-hook1 php5-mcrypt php5-intl

Téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

 root@facteur:~# rm -r /var/www/roundcubemail/installer


[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  listen = *:4190
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve

}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_port'] = 2000;

Par :

 $rcmail_config['managesieve_port'] = 4190;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=Perso2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbox WHERE username = '%u' AND active='1'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>36jsz4h46gaxk1tzps90mnun203f6n9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3084</id>
      <parentid>3073</parentid>
      <timestamp>2011-07-15T11:59:32Z</timestamp>
      <contributor>
        <username>Gilles</username>
        <id>131</id>
      </contributor>
      <text xml:space="preserve" bytes="57337">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;
#Vacation - Notification d'absence


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

[http://fr.wikipedia.org/wiki/Rkhunter Source] [http://rkhunter.sourceforge.net The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt-get install rkhunter

Configuration rapide:

Afin d'éviter des &quot;faux positifs&quot; inutiles, dé-commentez les deux lignes suivantes dans /etc/rkhunter.conf

 ...
 ALLOWHIDDENDIR=/dev/.udev
 ...
 ALLOWHIDDENDIR=/dev/.static
 ...

Enfin, dans le même fichier, renseignez l'adresse de réception des rapports

 ...
 #MAIL-ON-WARNING=me@mydomain   root@mydomain
 MAIL-ON-WARNING=admin@zehome.org
 ...

Enfin, rechargez:
 root@facteur:~# rkhunter --update

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; et &quot;suggérés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT 
{
  Install-Recommends &quot;false&quot;;
  Install-Suggests &quot;false&quot;;
};
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# nano /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

==== Quelques réglages supplémentaires ====

Postfix est maintenant fonctionnel, mais il mérite encore votre attention.
Voici quelques options importantes à activer:

 # Obtenir une alerte si les emails ne partent pas
 # Par défaut cette option est réglée à 4 heures, j'ai réduit cette durée:
 delay_warning_time = 1h

 # Ajoutez votre réseau local ici
 mynetworks = 10.9.8.0/22 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

 # Indiquer à Postfix de livrer à un destinataire à la fois
 # la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnerais pas sans cette option
 dovecot_destination_recipient_limit = 1

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

Il faudra installer mailx pour pouvoir faire des essais d'envois:

 root@facteur:~# apt-get install mailutils

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl p7zip unrar-free
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# mkdir /var/local/squirrelmail/attach
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Il est conseillé (mais pas indispensable) d'installer préalablement les codes et modules suivants:

 root@facteur:~# apt-get install libiconv-hook1 php5-mcrypt php5-intl

Téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

 root@facteur:~# rm -r /var/www/roundcubemail/installer


[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  listen = *:4190
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve

}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_port'] = 2000;

Par :

 $rcmail_config['managesieve_port'] = 4190;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=Perso2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbox WHERE username = '%u' AND active='1'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>36gikc322pw2q1xavwl9z7qjrtnuw7d</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3097</id>
      <parentid>3084</parentid>
      <timestamp>2011-07-30T04:57:50Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Plus loin avec postfixadmin */</comment>
      <text xml:space="preserve" bytes="57412">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;
#Vacation - Notification d'absence


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

[http://fr.wikipedia.org/wiki/Rkhunter Source] [http://rkhunter.sourceforge.net The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt-get install rkhunter

Configuration rapide:

Afin d'éviter des &quot;faux positifs&quot; inutiles, dé-commentez les deux lignes suivantes dans /etc/rkhunter.conf

 ...
 ALLOWHIDDENDIR=/dev/.udev
 ...
 ALLOWHIDDENDIR=/dev/.static
 ...

Enfin, dans le même fichier, renseignez l'adresse de réception des rapports

 ...
 #MAIL-ON-WARNING=me@mydomain   root@mydomain
 MAIL-ON-WARNING=admin@zehome.org
 ...

Enfin, rechargez:
 root@facteur:~# rkhunter --update

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; et &quot;suggérés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT 
{
  Install-Recommends &quot;false&quot;;
  Install-Suggests &quot;false&quot;;
};
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# nano /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

==== Quelques réglages supplémentaires ====

Postfix est maintenant fonctionnel, mais il mérite encore votre attention.
Voici quelques options importantes à activer:

 # Obtenir une alerte si les emails ne partent pas
 # Par défaut cette option est réglée à 4 heures, j'ai réduit cette durée:
 delay_warning_time = 1h

 # Ajoutez votre réseau local ici
 mynetworks = 10.9.8.0/22 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

 # Indiquer à Postfix de livrer à un destinataire à la fois
 # la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnerais pas sans cette option
 dovecot_destination_recipient_limit = 1

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

Il faudra installer mailx pour pouvoir faire des essais d'envois:

 root@facteur:~# apt-get install mailutils

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl p7zip unrar-free
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# mkdir /var/local/squirrelmail/attach
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Il est conseillé (mais pas indispensable) d'installer préalablement les codes et modules suivants:

 root@facteur:~# apt-get install libiconv-hook1 php5-mcrypt php5-intl

Téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

 root@facteur:~# rm -r /var/www/roundcubemail/installer


[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  listen = *:4190
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve

}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_port'] = 2000;

Par :

 $rcmail_config['managesieve_port'] = 4190;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Plus loin avec Postfixadmin ==

=== [[Fetchmail_sur_postfixadmin]] ===

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=Perso2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbox WHERE username = '%u' AND active='1'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>qsq4ooz8bgq4rrga1phuntv369hviz0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3099</id>
      <parentid>3097</parentid>
      <timestamp>2011-07-30T05:03:51Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Plus loin avec Roundcube */</comment>
      <text xml:space="preserve" bytes="57553">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;
#Vacation - Notification d'absence


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

[http://fr.wikipedia.org/wiki/Rkhunter Source] [http://rkhunter.sourceforge.net The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt-get install rkhunter

Configuration rapide:

Afin d'éviter des &quot;faux positifs&quot; inutiles, dé-commentez les deux lignes suivantes dans /etc/rkhunter.conf

 ...
 ALLOWHIDDENDIR=/dev/.udev
 ...
 ALLOWHIDDENDIR=/dev/.static
 ...

Enfin, dans le même fichier, renseignez l'adresse de réception des rapports

 ...
 #MAIL-ON-WARNING=me@mydomain   root@mydomain
 MAIL-ON-WARNING=admin@zehome.org
 ...

Enfin, rechargez:
 root@facteur:~# rkhunter --update

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; et &quot;suggérés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT 
{
  Install-Recommends &quot;false&quot;;
  Install-Suggests &quot;false&quot;;
};
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# nano /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

==== Quelques réglages supplémentaires ====

Postfix est maintenant fonctionnel, mais il mérite encore votre attention.
Voici quelques options importantes à activer:

 # Obtenir une alerte si les emails ne partent pas
 # Par défaut cette option est réglée à 4 heures, j'ai réduit cette durée:
 delay_warning_time = 1h

 # Ajoutez votre réseau local ici
 mynetworks = 10.9.8.0/22 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

 # Indiquer à Postfix de livrer à un destinataire à la fois
 # la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnerais pas sans cette option
 dovecot_destination_recipient_limit = 1

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

Il faudra installer mailx pour pouvoir faire des essais d'envois:

 root@facteur:~# apt-get install mailutils

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl p7zip unrar-free
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# mkdir /var/local/squirrelmail/attach
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Il est conseillé (mais pas indispensable) d'installer préalablement les codes et modules suivants:

 root@facteur:~# apt-get install libiconv-hook1 php5-mcrypt php5-intl

Téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

 root@facteur:~# rm -r /var/www/roundcubemail/installer


[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  listen = *:4190
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve

}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_port'] = 2000;

Par :

 $rcmail_config['managesieve_port'] = 4190;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Plus loin avec Roundcube ==

=== [[Roundcube_%2B_Vacation_-_Notification_d%27absence|Roundcube + Vacation - Notification d'absence]] ===

== Plus loin avec Postfixadmin ==

=== [[Fetchmail_sur_postfixadmin]] ===

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=Perso2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbox WHERE username = '%u' AND active='1'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>luyelf0ercbej4o9ogxt9gjpjr22f7q</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3148</id>
      <parentid>3099</parentid>
      <timestamp>2011-07-31T19:54:17Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Plus loin avec Roundcube */  HTTPS</comment>
      <text xml:space="preserve" bytes="57637">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;
#Vacation - Notification d'absence


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

[http://fr.wikipedia.org/wiki/Rkhunter Source] [http://rkhunter.sourceforge.net The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt-get install rkhunter

Configuration rapide:

Afin d'éviter des &quot;faux positifs&quot; inutiles, dé-commentez les deux lignes suivantes dans /etc/rkhunter.conf

 ...
 ALLOWHIDDENDIR=/dev/.udev
 ...
 ALLOWHIDDENDIR=/dev/.static
 ...

Enfin, dans le même fichier, renseignez l'adresse de réception des rapports

 ...
 #MAIL-ON-WARNING=me@mydomain   root@mydomain
 MAIL-ON-WARNING=admin@zehome.org
 ...

Enfin, rechargez:
 root@facteur:~# rkhunter --update

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; et &quot;suggérés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT 
{
  Install-Recommends &quot;false&quot;;
  Install-Suggests &quot;false&quot;;
};
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# nano /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

==== Quelques réglages supplémentaires ====

Postfix est maintenant fonctionnel, mais il mérite encore votre attention.
Voici quelques options importantes à activer:

 # Obtenir une alerte si les emails ne partent pas
 # Par défaut cette option est réglée à 4 heures, j'ai réduit cette durée:
 delay_warning_time = 1h

 # Ajoutez votre réseau local ici
 mynetworks = 10.9.8.0/22 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

 # Indiquer à Postfix de livrer à un destinataire à la fois
 # la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnerais pas sans cette option
 dovecot_destination_recipient_limit = 1

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

Il faudra installer mailx pour pouvoir faire des essais d'envois:

 root@facteur:~# apt-get install mailutils

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl p7zip unrar-free
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# mkdir /var/local/squirrelmail/attach
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Il est conseillé (mais pas indispensable) d'installer préalablement les codes et modules suivants:

 root@facteur:~# apt-get install libiconv-hook1 php5-mcrypt php5-intl

Téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

 root@facteur:~# rm -r /var/www/roundcubemail/installer


[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot : Managesieve ==

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  listen = *:4190
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve

}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

=== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ===

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

=== Roundcube : ajouter le plugin &quot;managesieve&quot; ===

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_port'] = 2000;

Par :

 $rcmail_config['managesieve_port'] = 4190;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

== Plus loin avec Roundcube ==

=== [[Roundcube_%2B_Vacation_-_Notification_d%27absence|Roundcube + Vacation - Notification d'absence]] ===

=== [[Utiliser_roundcube_en_https|Forcer l'utilisation de roundcube en https]] ===

== Plus loin avec Postfixadmin ==

=== [[Fetchmail_sur_postfixadmin]] ===

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=Perso2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbox WHERE username = '%u' AND active='1'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>11hm1q634760u61sgqz89e9fq80yaz6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3149</id>
      <parentid>3148</parentid>
      <timestamp>2011-07-31T19:58:00Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Plus loin avec Dovecot */  SSL</comment>
      <text xml:space="preserve" bytes="57719">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;
#Vacation - Notification d'absence


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

[http://fr.wikipedia.org/wiki/Rkhunter Source] [http://rkhunter.sourceforge.net The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt-get install rkhunter

Configuration rapide:

Afin d'éviter des &quot;faux positifs&quot; inutiles, dé-commentez les deux lignes suivantes dans /etc/rkhunter.conf

 ...
 ALLOWHIDDENDIR=/dev/.udev
 ...
 ALLOWHIDDENDIR=/dev/.static
 ...

Enfin, dans le même fichier, renseignez l'adresse de réception des rapports

 ...
 #MAIL-ON-WARNING=me@mydomain   root@mydomain
 MAIL-ON-WARNING=admin@zehome.org
 ...

Enfin, rechargez:
 root@facteur:~# rkhunter --update

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; et &quot;suggérés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT 
{
  Install-Recommends &quot;false&quot;;
  Install-Suggests &quot;false&quot;;
};
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# nano /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

==== Quelques réglages supplémentaires ====

Postfix est maintenant fonctionnel, mais il mérite encore votre attention.
Voici quelques options importantes à activer:

 # Obtenir une alerte si les emails ne partent pas
 # Par défaut cette option est réglée à 4 heures, j'ai réduit cette durée:
 delay_warning_time = 1h

 # Ajoutez votre réseau local ici
 mynetworks = 10.9.8.0/22 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

 # Indiquer à Postfix de livrer à un destinataire à la fois
 # la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnerais pas sans cette option
 dovecot_destination_recipient_limit = 1

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

Il faudra installer mailx pour pouvoir faire des essais d'envois:

 root@facteur:~# apt-get install mailutils

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl p7zip unrar-free
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# mkdir /var/local/squirrelmail/attach
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Il est conseillé (mais pas indispensable) d'installer préalablement les codes et modules suivants:

 root@facteur:~# apt-get install libiconv-hook1 php5-mcrypt php5-intl

Téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

 root@facteur:~# rm -r /var/www/roundcubemail/installer


[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot ==

=== Managesieve ===

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  listen = *:4190
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve

}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

==== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ====

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

==== Roundcube : ajouter le plugin &quot;managesieve&quot; ====

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_port'] = 2000;

Par :

 $rcmail_config['managesieve_port'] = 4190;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

=== [[Installer_le_SSL_sur_Dovecot|Installer le SSL sur Dovecot]] ===

== Plus loin avec Roundcube ==

=== [[Roundcube_%2B_Vacation_-_Notification_d%27absence|Roundcube + Vacation - Notification d'absence]] ===

=== [[Utiliser_roundcube_en_https|Forcer l'utilisation de roundcube en https]] ===

== Plus loin avec Postfixadmin ==

=== [[Fetchmail_sur_postfixadmin]] ===

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=Perso2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbox WHERE username = '%u' AND active='1'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>fh5zm7xnf5eblkl6zhcnhqlc3jhlrp4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3169</id>
      <parentid>3149</parentid>
      <timestamp>2011-08-03T14:06:19Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>liens exxternes</comment>
      <text xml:space="preserve" bytes="57840">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;
#Vacation - Notification d'absence


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== Installation de Rkhunter ===

rkhunter (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. Pour cela, il compare les hash SHA-256, SHA-512, SHA1 et MD5 des fichiers importants avec les hash connus, qui sont accessibles à partir d'une base de données en ligne. Ainsi, il peut détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le kernel et peut effectuer des tests spécifiques à Linux et FreeBSD.

[http://fr.wikipedia.org/wiki/Rkhunter Source] [http://rkhunter.sourceforge.net The Rootkit Hunter project]

C'est le premier programme que nous installerons.

 root@facteur:~# apt-get install rkhunter

Configuration rapide:

Afin d'éviter des &quot;faux positifs&quot; inutiles, dé-commentez les deux lignes suivantes dans /etc/rkhunter.conf

 ...
 ALLOWHIDDENDIR=/dev/.udev
 ...
 ALLOWHIDDENDIR=/dev/.static
 ...

Enfin, dans le même fichier, renseignez l'adresse de réception des rapports

 ...
 #MAIL-ON-WARNING=me@mydomain   root@mydomain
 MAIL-ON-WARNING=admin@zehome.org
 ...

Enfin, rechargez:
 root@facteur:~# rkhunter --update

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; et &quot;suggérés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT 
{
  Install-Recommends &quot;false&quot;;
  Install-Suggests &quot;false&quot;;
};
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# nano /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

==== Quelques réglages supplémentaires ====

Postfix est maintenant fonctionnel, mais il mérite encore votre attention.
Voici quelques options importantes à activer:

 # Obtenir une alerte si les emails ne partent pas
 # Par défaut cette option est réglée à 4 heures, j'ai réduit cette durée:
 delay_warning_time = 1h

 # Ajoutez votre réseau local ici
 mynetworks = 10.9.8.0/22 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

 # Indiquer à Postfix de livrer à un destinataire à la fois
 # la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnerais pas sans cette option
 dovecot_destination_recipient_limit = 1

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

Il faudra installer mailx pour pouvoir faire des essais d'envois:

 root@facteur:~# apt-get install mailutils

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl p7zip unrar-free
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# mkdir /var/local/squirrelmail/attach
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Il est conseillé (mais pas indispensable) d'installer préalablement les codes et modules suivants:

 root@facteur:~# apt-get install libiconv-hook1 php5-mcrypt php5-intl

Téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

 root@facteur:~# rm -r /var/www/roundcubemail/installer


[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot ==

=== Managesieve ===

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  listen = *:4190
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve

}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

==== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ====

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

==== Roundcube : ajouter le plugin &quot;managesieve&quot; ====

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_port'] = 2000;

Par :

 $rcmail_config['managesieve_port'] = 4190;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

=== [[Installer_le_SSL_sur_Dovecot|Installer le SSL sur Dovecot]] ===

== Plus loin avec Roundcube ==

=== [[Roundcube_%2B_Vacation_-_Notification_d%27absence|Roundcube + Vacation - Notification d'absence]] ===

=== [[Utiliser_roundcube_en_https|Forcer l'utilisation de roundcube en https]] ===

== Plus loin avec Postfixadmin ==

=== [[Fetchmail_sur_postfixadmin]] ===

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=Perso2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbox WHERE username = '%u' AND active='1'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

== Lien externes ==

* {{fr}} [http://x.guimard.free.fr/postfix/ Documentation très complète de Postfix en français]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>9h93gimhkmsh5x3kjlus7cote9ac5pi</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3189</id>
      <parentid>3169</parentid>
      <timestamp>2011-08-05T09:00:30Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Installation de Rkhunter */</comment>
      <text xml:space="preserve" bytes="56694">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;
#Vacation - Notification d'absence


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== [[Rkhunter|Installation de Rkhunter]] ===

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; et &quot;suggérés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT 
{
  Install-Recommends &quot;false&quot;;
  Install-Suggests &quot;false&quot;;
};
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# nano /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

==== Quelques réglages supplémentaires ====

Postfix est maintenant fonctionnel, mais il mérite encore votre attention.
Voici quelques options importantes à activer:

 # Obtenir une alerte si les emails ne partent pas
 # Par défaut cette option est réglée à 4 heures, j'ai réduit cette durée:
 delay_warning_time = 1h

 # Ajoutez votre réseau local ici
 mynetworks = 10.9.8.0/22 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

 # Indiquer à Postfix de livrer à un destinataire à la fois
 # la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnerais pas sans cette option
 dovecot_destination_recipient_limit = 1

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

Il faudra installer mailx pour pouvoir faire des essais d'envois:

 root@facteur:~# apt-get install mailutils

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl p7zip unrar-free
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# mkdir /var/local/squirrelmail/attach
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Il est conseillé (mais pas indispensable) d'installer préalablement les codes et modules suivants:

 root@facteur:~# apt-get install libiconv-hook1 php5-mcrypt php5-intl

Téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

 root@facteur:~# rm -r /var/www/roundcubemail/installer


[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot ==

=== Managesieve ===

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  listen = *:4190
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve

}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

==== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ====

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

==== Roundcube : ajouter le plugin &quot;managesieve&quot; ====

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_port'] = 2000;

Par :

 $rcmail_config['managesieve_port'] = 4190;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

=== [[Installer_le_SSL_sur_Dovecot|Installer le SSL sur Dovecot]] ===

== Plus loin avec Roundcube ==

=== [[Roundcube_%2B_Vacation_-_Notification_d%27absence|Roundcube + Vacation - Notification d'absence]] ===

=== [[Utiliser_roundcube_en_https|Forcer l'utilisation de roundcube en https]] ===

== Plus loin avec Postfixadmin ==

=== [[Fetchmail_sur_postfixadmin]] ===

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=Perso2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbox WHERE username = '%u' AND active='1'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

== Lien externes ==

* {{fr}} [http://x.guimard.free.fr/postfix/ Documentation très complète de Postfix en français]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>6fp8536mvfsrtc7wnw4a7qb480tt20g</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3638</id>
      <parentid>3189</parentid>
      <timestamp>2011-12-12T10:40:41Z</timestamp>
      <contributor>
        <username>Nicopham</username>
        <id>183</id>
      </contributor>
      <comment>Incompatibilité de Roundcube et Suhosin</comment>
      <text xml:space="preserve" bytes="56860">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;
#Vacation - Notification d'absence


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== [[Rkhunter|Installation de Rkhunter]] ===

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; et &quot;suggérés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT 
{
  Install-Recommends &quot;false&quot;;
  Install-Suggests &quot;false&quot;;
};
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# nano /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

==== Quelques réglages supplémentaires ====

Postfix est maintenant fonctionnel, mais il mérite encore votre attention.
Voici quelques options importantes à activer:

 # Obtenir une alerte si les emails ne partent pas
 # Par défaut cette option est réglée à 4 heures, j'ai réduit cette durée:
 delay_warning_time = 1h

 # Ajoutez votre réseau local ici
 mynetworks = 10.9.8.0/22 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

 # Indiquer à Postfix de livrer à un destinataire à la fois
 # la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnerais pas sans cette option
 dovecot_destination_recipient_limit = 1

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

Il faudra installer mailx pour pouvoir faire des essais d'envois:

 root@facteur:~# apt-get install mailutils

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl p7zip unrar-free
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://192.168.3.114/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# mkdir /var/local/squirrelmail/attach
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Il est conseillé (mais pas indispensable) d'installer préalablement les codes et modules suivants:

 root@facteur:~# apt-get install libiconv-hook1 php5-mcrypt php5-intl

Téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/


Modification de php.ini pour une incompatibilité du module suhosin et roundcube :
 root@facteur:~# cat 'suhosin.session.encrypt Off' &gt;&gt; /etc/php5/apache2/php.ini


Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

 root@facteur:~# rm -r /var/www/roundcubemail/installer


[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot ==

=== Managesieve ===

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  listen = *:4190
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve

}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

==== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ====

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

==== Roundcube : ajouter le plugin &quot;managesieve&quot; ====

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_port'] = 2000;

Par :

 $rcmail_config['managesieve_port'] = 4190;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

=== [[Installer_le_SSL_sur_Dovecot|Installer le SSL sur Dovecot]] ===

== Plus loin avec Roundcube ==

=== [[Roundcube_%2B_Vacation_-_Notification_d%27absence|Roundcube + Vacation - Notification d'absence]] ===

=== [[Utiliser_roundcube_en_https|Forcer l'utilisation de roundcube en https]] ===

== Plus loin avec Postfixadmin ==

=== [[Fetchmail_sur_postfixadmin]] ===

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=Perso2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbox WHERE username = '%u' AND active='1'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

== Lien externes ==

* {{fr}} [http://x.guimard.free.fr/postfix/ Documentation très complète de Postfix en français]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>j4rxo9vuollntwnbaq716759ot895ew</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3639</id>
      <parentid>3638</parentid>
      <timestamp>2011-12-12T10:46:50Z</timestamp>
      <contributor>
        <username>Nicopham</username>
        <id>183</id>
      </contributor>
      <minor/>
      <comment>Modif IP</comment>
      <text xml:space="preserve" bytes="56868">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;
#Vacation - Notification d'absence


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== [[Rkhunter|Installation de Rkhunter]] ===

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; et &quot;suggérés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT 
{
  Install-Recommends &quot;false&quot;;
  Install-Suggests &quot;false&quot;;
};
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# nano /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

==== Quelques réglages supplémentaires ====

Postfix est maintenant fonctionnel, mais il mérite encore votre attention.
Voici quelques options importantes à activer:

 # Obtenir une alerte si les emails ne partent pas
 # Par défaut cette option est réglée à 4 heures, j'ai réduit cette durée:
 delay_warning_time = 1h

 # Ajoutez votre réseau local ici
 mynetworks = 10.9.8.0/22 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

 # Indiquer à Postfix de livrer à un destinataire à la fois
 # la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnerais pas sans cette option
 dovecot_destination_recipient_limit = 1

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

Il faudra installer mailx pour pouvoir faire des essais d'envois:

 root@facteur:~# apt-get install mailutils

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl p7zip unrar-free
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://adresse_IP_du_serveur/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# mkdir /var/local/squirrelmail/attach
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Il est conseillé (mais pas indispensable) d'installer préalablement les codes et modules suivants:

 root@facteur:~# apt-get install libiconv-hook1 php5-mcrypt php5-intl

Téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/


Modification de php.ini pour une incompatibilité du module suhosin et roundcube :
 root@facteur:~# cat 'suhosin.session.encrypt Off' &gt;&gt; /etc/php5/apache2/php.ini


Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

 root@facteur:~# rm -r /var/www/roundcubemail/installer


[[Fichier:Snapshot207.jpeg]]

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot ==

=== Managesieve ===

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  listen = *:4190
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve

}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

==== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ====

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

==== Roundcube : ajouter le plugin &quot;managesieve&quot; ====

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_port'] = 2000;

Par :

 $rcmail_config['managesieve_port'] = 4190;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

=== [[Installer_le_SSL_sur_Dovecot|Installer le SSL sur Dovecot]] ===

== Plus loin avec Roundcube ==

=== [[Roundcube_%2B_Vacation_-_Notification_d%27absence|Roundcube + Vacation - Notification d'absence]] ===

=== [[Utiliser_roundcube_en_https|Forcer l'utilisation de roundcube en https]] ===

== Plus loin avec Postfixadmin ==

=== [[Fetchmail_sur_postfixadmin]] ===

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=Perso2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbox WHERE username = '%u' AND active='1'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

== Lien externes ==

* {{fr}} [http://x.guimard.free.fr/postfix/ Documentation très complète de Postfix en français]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>9h004uzq6jccgosj8nnyi904n7cy8rh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3640</id>
      <parentid>3639</parentid>
      <timestamp>2011-12-12T11:08:43Z</timestamp>
      <contributor>
        <username>Nicopham</username>
        <id>183</id>
      </contributor>
      <comment>Alias Webmail</comment>
      <text xml:space="preserve" bytes="57715">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;
#Vacation - Notification d'absence


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== [[Rkhunter|Installation de Rkhunter]] ===

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; et &quot;suggérés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT 
{
  Install-Recommends &quot;false&quot;;
  Install-Suggests &quot;false&quot;;
};
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# nano /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

==== Quelques réglages supplémentaires ====

Postfix est maintenant fonctionnel, mais il mérite encore votre attention.
Voici quelques options importantes à activer:

 # Obtenir une alerte si les emails ne partent pas
 # Par défaut cette option est réglée à 4 heures, j'ai réduit cette durée:
 delay_warning_time = 1h

 # Ajoutez votre réseau local ici
 mynetworks = 10.9.8.0/22 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

 # Indiquer à Postfix de livrer à un destinataire à la fois
 # la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnerais pas sans cette option
 dovecot_destination_recipient_limit = 1

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

Il faudra installer mailx pour pouvoir faire des essais d'envois:

 root@facteur:~# apt-get install mailutils

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl p7zip unrar-free
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://adresse_IP_du_serveur/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# mkdir /var/local/squirrelmail/attach
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Il est conseillé (mais pas indispensable) d'installer préalablement les codes et modules suivants:

 root@facteur:~# apt-get install libiconv-hook1 php5-mcrypt php5-intl

Téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/


Modification de php.ini pour une incompatibilité du module suhosin et roundcube :
 root@facteur:~# cat 'suhosin.session.encrypt Off' &gt;&gt; /etc/php5/apache2/php.ini


Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

 root@facteur:~# rm -r /var/www/roundcubemail/installer


[[Fichier:Snapshot207.jpeg]]


Ajout d'un alias 'webmail' dans Apache. Ainsi Roundcube sera accessible depuis n'importe quel domaine hébergé sur le serveur via l'adresse http://domaine.tld/webmail/.

Editez le fichier apache2.conf
 root@facteur:~# nano /etc/apache2/apache2.conf
et ajoutez ceci à la fin du fichier :
&lt;code&gt;
Alias /webmail &quot;/var/www/roudcubemail&quot;

&lt;Directory /var/www/roundcubemail/config&gt;
        Options -FollowSymLinks
        AllowOverride None
&lt;/Directory&gt;
 
&lt;Directory /var/www/roundcubemail/temp&gt;
        Options -FollowSymLinks
        AllowOverride None
        Order allow,deny
        Deny from all
&lt;/Directory&gt;
 
&lt;Directory /var/www/roundcubemail/logs&gt;
        Options -FollowSymLinks
        AllowOverride None
        Order allow,deny
        Deny from all
&lt;/Directory&gt;
&lt;/code&gt;

Puis rechargez apache :
 root@facteur:~# service apache2 reload

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot ==

=== Managesieve ===

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  listen = *:4190
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve

}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

==== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ====

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

==== Roundcube : ajouter le plugin &quot;managesieve&quot; ====

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_port'] = 2000;

Par :

 $rcmail_config['managesieve_port'] = 4190;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

=== [[Installer_le_SSL_sur_Dovecot|Installer le SSL sur Dovecot]] ===

== Plus loin avec Roundcube ==

=== [[Roundcube_%2B_Vacation_-_Notification_d%27absence|Roundcube + Vacation - Notification d'absence]] ===

=== [[Utiliser_roundcube_en_https|Forcer l'utilisation de roundcube en https]] ===

== Plus loin avec Postfixadmin ==

=== [[Fetchmail_sur_postfixadmin]] ===

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=Perso2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbox WHERE username = '%u' AND active='1'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

== Lien externes ==

* {{fr}} [http://x.guimard.free.fr/postfix/ Documentation très complète de Postfix en français]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>ea7mketg27xqf6tz64heo8cnkfoaqj4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3952</id>
      <parentid>3640</parentid>
      <timestamp>2012-03-16T13:15:22Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Le DNS */</comment>
      <text xml:space="preserve" bytes="57714">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;
#Vacation - Notification d'absence


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== [[Rkhunter|Installation de Rkhunter]] ===

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; et &quot;suggérés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT 
{
  Install-Recommends &quot;false&quot;;
  Install-Suggests &quot;false&quot;;
};
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# cat /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

==== Quelques réglages supplémentaires ====

Postfix est maintenant fonctionnel, mais il mérite encore votre attention.
Voici quelques options importantes à activer:

 # Obtenir une alerte si les emails ne partent pas
 # Par défaut cette option est réglée à 4 heures, j'ai réduit cette durée:
 delay_warning_time = 1h

 # Ajoutez votre réseau local ici
 mynetworks = 10.9.8.0/22 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

 # Indiquer à Postfix de livrer à un destinataire à la fois
 # la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnerais pas sans cette option
 dovecot_destination_recipient_limit = 1

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

Il faudra installer mailx pour pouvoir faire des essais d'envois:

 root@facteur:~# apt-get install mailutils

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl p7zip unrar-free
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://adresse_IP_du_serveur/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# mkdir /var/local/squirrelmail/attach
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Il est conseillé (mais pas indispensable) d'installer préalablement les codes et modules suivants:

 root@facteur:~# apt-get install libiconv-hook1 php5-mcrypt php5-intl

Téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/


Modification de php.ini pour une incompatibilité du module suhosin et roundcube :
 root@facteur:~# cat 'suhosin.session.encrypt Off' &gt;&gt; /etc/php5/apache2/php.ini


Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

 root@facteur:~# rm -r /var/www/roundcubemail/installer


[[Fichier:Snapshot207.jpeg]]


Ajout d'un alias 'webmail' dans Apache. Ainsi Roundcube sera accessible depuis n'importe quel domaine hébergé sur le serveur via l'adresse http://domaine.tld/webmail/.

Editez le fichier apache2.conf
 root@facteur:~# nano /etc/apache2/apache2.conf
et ajoutez ceci à la fin du fichier :
&lt;code&gt;
Alias /webmail &quot;/var/www/roudcubemail&quot;

&lt;Directory /var/www/roundcubemail/config&gt;
        Options -FollowSymLinks
        AllowOverride None
&lt;/Directory&gt;
 
&lt;Directory /var/www/roundcubemail/temp&gt;
        Options -FollowSymLinks
        AllowOverride None
        Order allow,deny
        Deny from all
&lt;/Directory&gt;
 
&lt;Directory /var/www/roundcubemail/logs&gt;
        Options -FollowSymLinks
        AllowOverride None
        Order allow,deny
        Deny from all
&lt;/Directory&gt;
&lt;/code&gt;

Puis rechargez apache :
 root@facteur:~# service apache2 reload

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot ==

=== Managesieve ===

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  listen = *:4190
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve

}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

==== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ====

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

==== Roundcube : ajouter le plugin &quot;managesieve&quot; ====

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_port'] = 2000;

Par :

 $rcmail_config['managesieve_port'] = 4190;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

=== [[Installer_le_SSL_sur_Dovecot|Installer le SSL sur Dovecot]] ===

== Plus loin avec Roundcube ==

=== [[Roundcube_%2B_Vacation_-_Notification_d%27absence|Roundcube + Vacation - Notification d'absence]] ===

=== [[Utiliser_roundcube_en_https|Forcer l'utilisation de roundcube en https]] ===

== Plus loin avec Postfixadmin ==

=== [[Fetchmail_sur_postfixadmin]] ===

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=Perso2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbox WHERE username = '%u' AND active='1'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

== Lien externes ==

* {{fr}} [http://x.guimard.free.fr/postfix/ Documentation très complète de Postfix en français]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>st2px5u90vpdrvx70gxgfjblqg07ypk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3953</id>
      <parentid>3952</parentid>
      <timestamp>2012-03-16T13:32:26Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Postfix/Dovecot/Apache2/sasl/php */</comment>
      <text xml:space="preserve" bytes="58172">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;
#Vacation - Notification d'absence


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== [[Rkhunter|Installation de Rkhunter]] ===

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; et &quot;suggérés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT 
{
  Install-Recommends &quot;false&quot;;
  Install-Suggests &quot;false&quot;;
};
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# cat /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

''Les paquets installés:''
 Les NOUVEAUX paquets suivants vont être installés : 
   apache2-mpm-prefork{a} apache2-utils{a} apache2.2-bin{a} apache2.2-common{a} db4.8-util{a} 
   dovecot-common{a} dovecot-imapd dovecot-pop3d libapache2-mod-php5{a} libapr1{a} libaprutil1{a} 
   libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libc-client2007e{a} libonig2{a} libpq5{a} libqdbm14{a} 
   mlock{a} php5-common{a} php5-imap php5-mysql postfix-mysql sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 6 avril 2011) est &quot;postfixadmin-2.3.3&quot; (1,53 Mio)

 root@facteur:~# tar xzvf postfixadmin-2.3.3.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.3/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;

$CONF['default_language'] = 'fr';

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

==== Quelques réglages supplémentaires ====

Postfix est maintenant fonctionnel, mais il mérite encore votre attention.
Voici quelques options importantes à activer:

 # Obtenir une alerte si les emails ne partent pas
 # Par défaut cette option est réglée à 4 heures, j'ai réduit cette durée:
 delay_warning_time = 1h

 # Ajoutez votre réseau local ici
 mynetworks = 10.9.8.0/22 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

 # Indiquer à Postfix de livrer à un destinataire à la fois
 # la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnerais pas sans cette option
 dovecot_destination_recipient_limit = 1

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

Il faudra installer mailx pour pouvoir faire des essais d'envois:

 root@facteur:~# apt-get install mailutils

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl p7zip unrar-free
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://adresse_IP_du_serveur/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# mkdir /var/local/squirrelmail/attach
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Il est conseillé (mais pas indispensable) d'installer préalablement les codes et modules suivants:

 root@facteur:~# apt-get install libiconv-hook1 php5-mcrypt php5-intl

Téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/


Modification de php.ini pour une incompatibilité du module suhosin et roundcube :
 root@facteur:~# cat 'suhosin.session.encrypt Off' &gt;&gt; /etc/php5/apache2/php.ini


Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

 root@facteur:~# rm -r /var/www/roundcubemail/installer


[[Fichier:Snapshot207.jpeg]]


Ajout d'un alias 'webmail' dans Apache. Ainsi Roundcube sera accessible depuis n'importe quel domaine hébergé sur le serveur via l'adresse http://domaine.tld/webmail/.

Editez le fichier apache2.conf
 root@facteur:~# nano /etc/apache2/apache2.conf
et ajoutez ceci à la fin du fichier :
&lt;code&gt;
Alias /webmail &quot;/var/www/roudcubemail&quot;

&lt;Directory /var/www/roundcubemail/config&gt;
        Options -FollowSymLinks
        AllowOverride None
&lt;/Directory&gt;
 
&lt;Directory /var/www/roundcubemail/temp&gt;
        Options -FollowSymLinks
        AllowOverride None
        Order allow,deny
        Deny from all
&lt;/Directory&gt;
 
&lt;Directory /var/www/roundcubemail/logs&gt;
        Options -FollowSymLinks
        AllowOverride None
        Order allow,deny
        Deny from all
&lt;/Directory&gt;
&lt;/code&gt;

Puis rechargez apache :
 root@facteur:~# service apache2 reload

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot ==

=== Managesieve ===

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  listen = *:4190
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve

}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

==== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ====

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

==== Roundcube : ajouter le plugin &quot;managesieve&quot; ====

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_port'] = 2000;

Par :

 $rcmail_config['managesieve_port'] = 4190;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

=== [[Installer_le_SSL_sur_Dovecot|Installer le SSL sur Dovecot]] ===

== Plus loin avec Roundcube ==

=== [[Roundcube_%2B_Vacation_-_Notification_d%27absence|Roundcube + Vacation - Notification d'absence]] ===

=== [[Utiliser_roundcube_en_https|Forcer l'utilisation de roundcube en https]] ===

== Plus loin avec Postfixadmin ==

=== [[Fetchmail_sur_postfixadmin]] ===

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=Perso2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbox WHERE username = '%u' AND active='1'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

== Lien externes ==

* {{fr}} [http://x.guimard.free.fr/postfix/ Documentation très complète de Postfix en français]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>gds6quyq2wgxnuule3xluzlh4j6odqq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3954</id>
      <parentid>3953</parentid>
      <timestamp>2012-03-16T13:52:06Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Postfixadmin */</comment>
      <text xml:space="preserve" bytes="58313">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;
#Vacation - Notification d'absence


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== [[Rkhunter|Installation de Rkhunter]] ===

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; et &quot;suggérés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT 
{
  Install-Recommends &quot;false&quot;;
  Install-Suggests &quot;false&quot;;
};
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# cat /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

''Les paquets installés:''
 Les NOUVEAUX paquets suivants vont être installés : 
   apache2-mpm-prefork{a} apache2-utils{a} apache2.2-bin{a} apache2.2-common{a} db4.8-util{a} 
   dovecot-common{a} dovecot-imapd dovecot-pop3d libapache2-mod-php5{a} libapr1{a} libaprutil1{a} 
   libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libc-client2007e{a} libonig2{a} libpq5{a} libqdbm14{a} 
   mlock{a} php5-common{a} php5-imap php5-mysql postfix-mysql sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 16 mars 2012) est &quot;postfixadmin-2.3.5&quot; (1,5 Mio)

 root@facteur:~# wget http://tenet.dl.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-2.3.5/postfixadmin-2.3.5.tar.gz
 root@facteur:~# tar xzvf postfixadmin-2.3.5.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.5/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;
...
$CONF['default_language'] = 'fr';
...
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';
...
$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

==== Quelques réglages supplémentaires ====

Postfix est maintenant fonctionnel, mais il mérite encore votre attention.
Voici quelques options importantes à activer:

 # Obtenir une alerte si les emails ne partent pas
 # Par défaut cette option est réglée à 4 heures, j'ai réduit cette durée:
 delay_warning_time = 1h

 # Ajoutez votre réseau local ici
 mynetworks = 10.9.8.0/22 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

 # Indiquer à Postfix de livrer à un destinataire à la fois
 # la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnerais pas sans cette option
 dovecot_destination_recipient_limit = 1

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

Il faudra installer mailx pour pouvoir faire des essais d'envois:

 root@facteur:~# apt-get install mailutils

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl p7zip unrar-free
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://adresse_IP_du_serveur/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# mkdir /var/local/squirrelmail/attach
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Il est conseillé (mais pas indispensable) d'installer préalablement les codes et modules suivants:

 root@facteur:~# apt-get install libiconv-hook1 php5-mcrypt php5-intl

Téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/


Modification de php.ini pour une incompatibilité du module suhosin et roundcube :
 root@facteur:~# cat 'suhosin.session.encrypt Off' &gt;&gt; /etc/php5/apache2/php.ini


Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

 root@facteur:~# rm -r /var/www/roundcubemail/installer


[[Fichier:Snapshot207.jpeg]]


Ajout d'un alias 'webmail' dans Apache. Ainsi Roundcube sera accessible depuis n'importe quel domaine hébergé sur le serveur via l'adresse http://domaine.tld/webmail/.

Editez le fichier apache2.conf
 root@facteur:~# nano /etc/apache2/apache2.conf
et ajoutez ceci à la fin du fichier :
&lt;code&gt;
Alias /webmail &quot;/var/www/roudcubemail&quot;

&lt;Directory /var/www/roundcubemail/config&gt;
        Options -FollowSymLinks
        AllowOverride None
&lt;/Directory&gt;
 
&lt;Directory /var/www/roundcubemail/temp&gt;
        Options -FollowSymLinks
        AllowOverride None
        Order allow,deny
        Deny from all
&lt;/Directory&gt;
 
&lt;Directory /var/www/roundcubemail/logs&gt;
        Options -FollowSymLinks
        AllowOverride None
        Order allow,deny
        Deny from all
&lt;/Directory&gt;
&lt;/code&gt;

Puis rechargez apache :
 root@facteur:~# service apache2 reload

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot ==

=== Managesieve ===

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  listen = *:4190
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve

}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

==== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ====

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

==== Roundcube : ajouter le plugin &quot;managesieve&quot; ====

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_port'] = 2000;

Par :

 $rcmail_config['managesieve_port'] = 4190;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

=== [[Installer_le_SSL_sur_Dovecot|Installer le SSL sur Dovecot]] ===

== Plus loin avec Roundcube ==

=== [[Roundcube_%2B_Vacation_-_Notification_d%27absence|Roundcube + Vacation - Notification d'absence]] ===

=== [[Utiliser_roundcube_en_https|Forcer l'utilisation de roundcube en https]] ===

== Plus loin avec Postfixadmin ==

=== [[Fetchmail_sur_postfixadmin]] ===

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=Perso2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbox WHERE username = '%u' AND active='1'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

== Lien externes ==

* {{fr}} [http://x.guimard.free.fr/postfix/ Documentation très complète de Postfix en français]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>28ljgiq04o4javqles5b7nd0nq0mosf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3955</id>
      <parentid>3954</parentid>
      <timestamp>2012-03-16T14:15:02Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Dovecot */</comment>
      <text xml:space="preserve" bytes="58438">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;
#Vacation - Notification d'absence


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== [[Rkhunter|Installation de Rkhunter]] ===

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; et &quot;suggérés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT 
{
  Install-Recommends &quot;false&quot;;
  Install-Suggests &quot;false&quot;;
};
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# cat /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

''Les paquets installés:''
 Les NOUVEAUX paquets suivants vont être installés : 
   apache2-mpm-prefork{a} apache2-utils{a} apache2.2-bin{a} apache2.2-common{a} db4.8-util{a} 
   dovecot-common{a} dovecot-imapd dovecot-pop3d libapache2-mod-php5{a} libapr1{a} libaprutil1{a} 
   libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libc-client2007e{a} libonig2{a} libpq5{a} libqdbm14{a} 
   mlock{a} php5-common{a} php5-imap php5-mysql postfix-mysql sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 16 mars 2012) est &quot;postfixadmin-2.3.5&quot; (1,5 Mio)

 root@facteur:~# wget http://tenet.dl.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-2.3.5/postfixadmin-2.3.5.tar.gz
 root@facteur:~# tar xzvf postfixadmin-2.3.5.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.5/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos
 root@facteur:~# sed -i 's/facteur.zehome.org/example_domain.tld/g' /var/www/postfixadmin/config.inc.php

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;
...
$CONF['default_language'] = 'fr';
...
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';
...
$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

==== Quelques réglages supplémentaires ====

Postfix est maintenant fonctionnel, mais il mérite encore votre attention.
Voici quelques options importantes à activer:

 # Obtenir une alerte si les emails ne partent pas
 # Par défaut cette option est réglée à 4 heures, j'ai réduit cette durée:
 delay_warning_time = 1h

 # Ajoutez votre réseau local ici
 mynetworks = 10.9.8.0/22 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

 # Indiquer à Postfix de livrer à un destinataire à la fois
 # la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnerais pas sans cette option
 dovecot_destination_recipient_limit = 1

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

La commande pour voir le fichier sans les lignes commentées:
 # grep -v -E &quot;#&quot; /etc/dovecot/dovecot.conf | grep -v -E &quot;^$&quot;

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

Il faudra installer mailx pour pouvoir faire des essais d'envois:

 root@facteur:~# apt-get install mailutils

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl p7zip unrar-free
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://adresse_IP_du_serveur/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# mkdir /var/local/squirrelmail/attach
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Il est conseillé (mais pas indispensable) d'installer préalablement les codes et modules suivants:

 root@facteur:~# apt-get install libiconv-hook1 php5-mcrypt php5-intl

Téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/


Modification de php.ini pour une incompatibilité du module suhosin et roundcube :
 root@facteur:~# cat 'suhosin.session.encrypt Off' &gt;&gt; /etc/php5/apache2/php.ini


Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

 root@facteur:~# rm -r /var/www/roundcubemail/installer


[[Fichier:Snapshot207.jpeg]]


Ajout d'un alias 'webmail' dans Apache. Ainsi Roundcube sera accessible depuis n'importe quel domaine hébergé sur le serveur via l'adresse http://domaine.tld/webmail/.

Editez le fichier apache2.conf
 root@facteur:~# nano /etc/apache2/apache2.conf
et ajoutez ceci à la fin du fichier :
&lt;code&gt;
Alias /webmail &quot;/var/www/roudcubemail&quot;

&lt;Directory /var/www/roundcubemail/config&gt;
        Options -FollowSymLinks
        AllowOverride None
&lt;/Directory&gt;
 
&lt;Directory /var/www/roundcubemail/temp&gt;
        Options -FollowSymLinks
        AllowOverride None
        Order allow,deny
        Deny from all
&lt;/Directory&gt;
 
&lt;Directory /var/www/roundcubemail/logs&gt;
        Options -FollowSymLinks
        AllowOverride None
        Order allow,deny
        Deny from all
&lt;/Directory&gt;
&lt;/code&gt;

Puis rechargez apache :
 root@facteur:~# service apache2 reload

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot ==

=== Managesieve ===

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  listen = *:4190
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve

}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

==== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ====

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

==== Roundcube : ajouter le plugin &quot;managesieve&quot; ====

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_port'] = 2000;

Par :

 $rcmail_config['managesieve_port'] = 4190;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

=== [[Installer_le_SSL_sur_Dovecot|Installer le SSL sur Dovecot]] ===

== Plus loin avec Roundcube ==

=== [[Roundcube_%2B_Vacation_-_Notification_d%27absence|Roundcube + Vacation - Notification d'absence]] ===

=== [[Utiliser_roundcube_en_https|Forcer l'utilisation de roundcube en https]] ===

== Plus loin avec Postfixadmin ==

=== [[Fetchmail_sur_postfixadmin]] ===

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=Perso2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbox WHERE username = '%u' AND active='1'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

== Lien externes ==

* {{fr}} [http://x.guimard.free.fr/postfix/ Documentation très complète de Postfix en français]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>7sv5c04kafb8r6lzhwh612y350m4ytn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3982</id>
      <parentid>3955</parentid>
      <timestamp>2012-03-21T05:20:23Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Postfixadmin */</comment>
      <text xml:space="preserve" bytes="58450">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;
#Vacation - Notification d'absence


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== [[Rkhunter|Installation de Rkhunter]] ===

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; et &quot;suggérés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT 
{
  Install-Recommends &quot;false&quot;;
  Install-Suggests &quot;false&quot;;
};
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# cat /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

''Les paquets installés:''
 Les NOUVEAUX paquets suivants vont être installés : 
   apache2-mpm-prefork{a} apache2-utils{a} apache2.2-bin{a} apache2.2-common{a} db4.8-util{a} 
   dovecot-common{a} dovecot-imapd dovecot-pop3d libapache2-mod-php5{a} libapr1{a} libaprutil1{a} 
   libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libc-client2007e{a} libonig2{a} libpq5{a} libqdbm14{a} 
   mlock{a} php5-common{a} php5-imap php5-mysql postfix-mysql sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 16 mars 2012) est &quot;postfixadmin-2.3.5&quot; (1,5 Mio)

 root@facteur:~# wget http://tenet.dl.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-2.3.5/postfixadmin-2.3.5.tar.gz
 root@facteur:~# tar xzvf postfixadmin-2.3.5.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.5/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos
 root@facteur:~# sed -i 's/change-this-to-your.domain.tld/facteur.zehome.org/g' /var/www/postfixadmin/config.inc.php

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;
...
$CONF['default_language'] = 'fr';
...
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';
...
$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

==== Quelques réglages supplémentaires ====

Postfix est maintenant fonctionnel, mais il mérite encore votre attention.
Voici quelques options importantes à activer:

 # Obtenir une alerte si les emails ne partent pas
 # Par défaut cette option est réglée à 4 heures, j'ai réduit cette durée:
 delay_warning_time = 1h

 # Ajoutez votre réseau local ici
 mynetworks = 10.9.8.0/22 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

 # Indiquer à Postfix de livrer à un destinataire à la fois
 # la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnerais pas sans cette option
 dovecot_destination_recipient_limit = 1

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

La commande pour voir le fichier sans les lignes commentées:
 # grep -v -E &quot;#&quot; /etc/dovecot/dovecot.conf | grep -v -E &quot;^$&quot;

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

Il faudra installer mailx pour pouvoir faire des essais d'envois:

 root@facteur:~# apt-get install mailutils

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl p7zip unrar-free
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://adresse_IP_du_serveur/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# mkdir /var/local/squirrelmail/attach
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Il est conseillé (mais pas indispensable) d'installer préalablement les codes et modules suivants:

 root@facteur:~# apt-get install libiconv-hook1 php5-mcrypt php5-intl

Téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/


Modification de php.ini pour une incompatibilité du module suhosin et roundcube :
 root@facteur:~# cat 'suhosin.session.encrypt Off' &gt;&gt; /etc/php5/apache2/php.ini


Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

 root@facteur:~# rm -r /var/www/roundcubemail/installer


[[Fichier:Snapshot207.jpeg]]


Ajout d'un alias 'webmail' dans Apache. Ainsi Roundcube sera accessible depuis n'importe quel domaine hébergé sur le serveur via l'adresse http://domaine.tld/webmail/.

Editez le fichier apache2.conf
 root@facteur:~# nano /etc/apache2/apache2.conf
et ajoutez ceci à la fin du fichier :
&lt;code&gt;
Alias /webmail &quot;/var/www/roudcubemail&quot;

&lt;Directory /var/www/roundcubemail/config&gt;
        Options -FollowSymLinks
        AllowOverride None
&lt;/Directory&gt;
 
&lt;Directory /var/www/roundcubemail/temp&gt;
        Options -FollowSymLinks
        AllowOverride None
        Order allow,deny
        Deny from all
&lt;/Directory&gt;
 
&lt;Directory /var/www/roundcubemail/logs&gt;
        Options -FollowSymLinks
        AllowOverride None
        Order allow,deny
        Deny from all
&lt;/Directory&gt;
&lt;/code&gt;

Puis rechargez apache :
 root@facteur:~# service apache2 reload

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot ==

=== Managesieve ===

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  listen = *:4190
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve

}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

==== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ====

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

==== Roundcube : ajouter le plugin &quot;managesieve&quot; ====

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_port'] = 2000;

Par :

 $rcmail_config['managesieve_port'] = 4190;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

=== [[Installer_le_SSL_sur_Dovecot|Installer le SSL sur Dovecot]] ===

== Plus loin avec Roundcube ==

=== [[Roundcube_%2B_Vacation_-_Notification_d%27absence|Roundcube + Vacation - Notification d'absence]] ===

=== [[Utiliser_roundcube_en_https|Forcer l'utilisation de roundcube en https]] ===

== Plus loin avec Postfixadmin ==

=== [[Fetchmail_sur_postfixadmin]] ===

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=Perso2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbox WHERE username = '%u' AND active='1'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

== Lien externes ==

* {{fr}} [http://x.guimard.free.fr/postfix/ Documentation très complète de Postfix en français]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>8tv1r1d16ssjquvakdp932kov1snlru</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3986</id>
      <parentid>3982</parentid>
      <timestamp>2012-03-24T04:39:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Roundcube */  Erreur commande</comment>
      <text xml:space="preserve" bytes="58468">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;
#Vacation - Notification d'absence


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== [[Rkhunter|Installation de Rkhunter]] ===

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; et &quot;suggérés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT 
{
  Install-Recommends &quot;false&quot;;
  Install-Suggests &quot;false&quot;;
};
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# cat /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

''Les paquets installés:''
 Les NOUVEAUX paquets suivants vont être installés : 
   apache2-mpm-prefork{a} apache2-utils{a} apache2.2-bin{a} apache2.2-common{a} db4.8-util{a} 
   dovecot-common{a} dovecot-imapd dovecot-pop3d libapache2-mod-php5{a} libapr1{a} libaprutil1{a} 
   libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libc-client2007e{a} libonig2{a} libpq5{a} libqdbm14{a} 
   mlock{a} php5-common{a} php5-imap php5-mysql postfix-mysql sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 16 mars 2012) est &quot;postfixadmin-2.3.5&quot; (1,5 Mio)

 root@facteur:~# wget http://tenet.dl.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-2.3.5/postfixadmin-2.3.5.tar.gz
 root@facteur:~# tar xzvf postfixadmin-2.3.5.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.5/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos
 root@facteur:~# sed -i 's/change-this-to-your.domain.tld/facteur.zehome.org/g' /var/www/postfixadmin/config.inc.php

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;
...
$CONF['default_language'] = 'fr';
...
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';
...
$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

==== Quelques réglages supplémentaires ====

Postfix est maintenant fonctionnel, mais il mérite encore votre attention.
Voici quelques options importantes à activer:

 # Obtenir une alerte si les emails ne partent pas
 # Par défaut cette option est réglée à 4 heures, j'ai réduit cette durée:
 delay_warning_time = 1h

 # Ajoutez votre réseau local ici
 mynetworks = 10.9.8.0/22 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

 # Indiquer à Postfix de livrer à un destinataire à la fois
 # la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnerais pas sans cette option
 dovecot_destination_recipient_limit = 1

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

La commande pour voir le fichier sans les lignes commentées:
 # grep -v -E &quot;#&quot; /etc/dovecot/dovecot.conf | grep -v -E &quot;^$&quot;

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

Il faudra installer mailx pour pouvoir faire des essais d'envois:

 root@facteur:~# apt-get install mailutils

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl p7zip unrar-free
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://adresse_IP_du_serveur/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# mkdir /var/local/squirrelmail/attach
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Il est conseillé (mais pas indispensable) d'installer préalablement les codes et modules suivants:

 root@facteur:~# apt-get install libiconv-hook1 php5-mcrypt php5-intl

Téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/


Modification du php.ini d'apache2 à cause d'une incompatibilité du module suhosin avec roundcube:
 root@facteur:~# echo 'suhosin.session.encrypt Off' &gt;&gt; /etc/php5/apache2/php.ini


Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

 root@facteur:~# rm -r /var/www/roundcubemail/installer


[[Fichier:Snapshot207.jpeg]]


Ajout d'un alias 'webmail' dans Apache. Ainsi Roundcube sera accessible depuis n'importe quel domaine hébergé sur le serveur via l'adresse http://domaine.tld/webmail/.

Editez le fichier apache2.conf
 root@facteur:~# nano /etc/apache2/apache2.conf
et ajoutez ceci à la fin du fichier :
&lt;code&gt;
Alias /webmail &quot;/var/www/roudcubemail&quot;

&lt;Directory /var/www/roundcubemail/config&gt;
        Options -FollowSymLinks
        AllowOverride None
&lt;/Directory&gt;
 
&lt;Directory /var/www/roundcubemail/temp&gt;
        Options -FollowSymLinks
        AllowOverride None
        Order allow,deny
        Deny from all
&lt;/Directory&gt;
 
&lt;Directory /var/www/roundcubemail/logs&gt;
        Options -FollowSymLinks
        AllowOverride None
        Order allow,deny
        Deny from all
&lt;/Directory&gt;
&lt;/code&gt;

Puis rechargez apache :
 root@facteur:~# service apache2 reload

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot ==

=== Managesieve ===

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  listen = *:4190
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve

}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

==== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ====

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

==== Roundcube : ajouter le plugin &quot;managesieve&quot; ====

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_port'] = 2000;

Par :

 $rcmail_config['managesieve_port'] = 4190;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

=== [[Installer_le_SSL_sur_Dovecot|Installer le SSL sur Dovecot]] ===

== Plus loin avec Roundcube ==

=== [[Roundcube_%2B_Vacation_-_Notification_d%27absence|Roundcube + Vacation - Notification d'absence]] ===

=== [[Utiliser_roundcube_en_https|Forcer l'utilisation de roundcube en https]] ===

== Plus loin avec Postfixadmin ==

=== [[Fetchmail_sur_postfixadmin]] ===

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=Perso2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbox WHERE username = '%u' AND active='1'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

== Lien externes ==

* {{fr}} [http://x.guimard.free.fr/postfix/ Documentation très complète de Postfix en français]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>8u5u6lhxwnl25q0tdbscu1moatakyq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3987</id>
      <parentid>3986</parentid>
      <timestamp>2012-03-24T04:51:35Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Roundcube */</comment>
      <text xml:space="preserve" bytes="58470">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;
#Vacation - Notification d'absence


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== [[Rkhunter|Installation de Rkhunter]] ===

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; et &quot;suggérés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT 
{
  Install-Recommends &quot;false&quot;;
  Install-Suggests &quot;false&quot;;
};
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# cat /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

''Les paquets installés:''
 Les NOUVEAUX paquets suivants vont être installés : 
   apache2-mpm-prefork{a} apache2-utils{a} apache2.2-bin{a} apache2.2-common{a} db4.8-util{a} 
   dovecot-common{a} dovecot-imapd dovecot-pop3d libapache2-mod-php5{a} libapr1{a} libaprutil1{a} 
   libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libc-client2007e{a} libonig2{a} libpq5{a} libqdbm14{a} 
   mlock{a} php5-common{a} php5-imap php5-mysql postfix-mysql sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 16 mars 2012) est &quot;postfixadmin-2.3.5&quot; (1,5 Mio)

 root@facteur:~# wget http://tenet.dl.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-2.3.5/postfixadmin-2.3.5.tar.gz
 root@facteur:~# tar xzvf postfixadmin-2.3.5.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.5/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos
 root@facteur:~# sed -i 's/change-this-to-your.domain.tld/facteur.zehome.org/g' /var/www/postfixadmin/config.inc.php

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;
...
$CONF['default_language'] = 'fr';
...
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';
...
$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

==== Quelques réglages supplémentaires ====

Postfix est maintenant fonctionnel, mais il mérite encore votre attention.
Voici quelques options importantes à activer:

 # Obtenir une alerte si les emails ne partent pas
 # Par défaut cette option est réglée à 4 heures, j'ai réduit cette durée:
 delay_warning_time = 1h

 # Ajoutez votre réseau local ici
 mynetworks = 10.9.8.0/22 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

 # Indiquer à Postfix de livrer à un destinataire à la fois
 # la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnerais pas sans cette option
 dovecot_destination_recipient_limit = 1

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

La commande pour voir le fichier sans les lignes commentées:
 # grep -v -E &quot;#&quot; /etc/dovecot/dovecot.conf | grep -v -E &quot;^$&quot;

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

Il faudra installer mailx pour pouvoir faire des essais d'envois:

 root@facteur:~# apt-get install mailutils

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl p7zip unrar-free
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://adresse_IP_du_serveur/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# mkdir /var/local/squirrelmail/attach
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Il est conseillé (mais pas indispensable) d'installer préalablement les codes et modules suivants:

 root@facteur:~# apt-get install libiconv-hook1 php5-mcrypt php5-intl

Téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/


Modification du php.ini d'apache2 à cause d'une incompatibilité du module suhosin avec roundcube:
 root@facteur:~# echo 'suhosin.session.encrypt = Off' &gt;&gt; /etc/php5/apache2/php.ini


Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

 root@facteur:~# rm -r /var/www/roundcubemail/installer


[[Fichier:Snapshot207.jpeg]]


Ajout d'un alias 'webmail' dans Apache. Ainsi Roundcube sera accessible depuis n'importe quel domaine hébergé sur le serveur via l'adresse http://domaine.tld/webmail/.

Editez le fichier apache2.conf
 root@facteur:~# nano /etc/apache2/apache2.conf
et ajoutez ceci à la fin du fichier :
&lt;code&gt;
Alias /webmail &quot;/var/www/roudcubemail&quot;

&lt;Directory /var/www/roundcubemail/config&gt;
        Options -FollowSymLinks
        AllowOverride None
&lt;/Directory&gt;
 
&lt;Directory /var/www/roundcubemail/temp&gt;
        Options -FollowSymLinks
        AllowOverride None
        Order allow,deny
        Deny from all
&lt;/Directory&gt;
 
&lt;Directory /var/www/roundcubemail/logs&gt;
        Options -FollowSymLinks
        AllowOverride None
        Order allow,deny
        Deny from all
&lt;/Directory&gt;
&lt;/code&gt;

Puis rechargez apache :
 root@facteur:~# service apache2 reload

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot ==

=== Managesieve ===

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  listen = *:4190
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve

}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

==== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ====

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

==== Roundcube : ajouter le plugin &quot;managesieve&quot; ====

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_port'] = 2000;

Par :

 $rcmail_config['managesieve_port'] = 4190;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

=== [[Installer_le_SSL_sur_Dovecot|Installer le SSL sur Dovecot]] ===

== Plus loin avec Roundcube ==

=== [[Roundcube_%2B_Vacation_-_Notification_d%27absence|Roundcube + Vacation - Notification d'absence]] ===

=== [[Utiliser_roundcube_en_https|Forcer l'utilisation de roundcube en https]] ===

== Plus loin avec Postfixadmin ==

=== [[Fetchmail_sur_postfixadmin]] ===

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=Perso2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbox WHERE username = '%u' AND active='1'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

== Lien externes ==

* {{fr}} [http://x.guimard.free.fr/postfix/ Documentation très complète de Postfix en français]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>riwj3m3ljk2b4cl8dd4l71iuet499jt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3988</id>
      <parentid>3987</parentid>
      <timestamp>2012-03-24T04:58:47Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Roundcube */</comment>
      <text xml:space="preserve" bytes="58582">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;
#Vacation - Notification d'absence


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== [[Rkhunter|Installation de Rkhunter]] ===

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; et &quot;suggérés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT 
{
  Install-Recommends &quot;false&quot;;
  Install-Suggests &quot;false&quot;;
};
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# cat /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

''Les paquets installés:''
 Les NOUVEAUX paquets suivants vont être installés : 
   apache2-mpm-prefork{a} apache2-utils{a} apache2.2-bin{a} apache2.2-common{a} db4.8-util{a} 
   dovecot-common{a} dovecot-imapd dovecot-pop3d libapache2-mod-php5{a} libapr1{a} libaprutil1{a} 
   libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libc-client2007e{a} libonig2{a} libpq5{a} libqdbm14{a} 
   mlock{a} php5-common{a} php5-imap php5-mysql postfix-mysql sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 16 mars 2012) est &quot;postfixadmin-2.3.5&quot; (1,5 Mio)

 root@facteur:~# wget http://tenet.dl.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-2.3.5/postfixadmin-2.3.5.tar.gz
 root@facteur:~# tar xzvf postfixadmin-2.3.5.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.5/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos
 root@facteur:~# sed -i 's/change-this-to-your.domain.tld/facteur.zehome.org/g' /var/www/postfixadmin/config.inc.php

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;
...
$CONF['default_language'] = 'fr';
...
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';
...
$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

==== Quelques réglages supplémentaires ====

Postfix est maintenant fonctionnel, mais il mérite encore votre attention.
Voici quelques options importantes à activer:

 # Obtenir une alerte si les emails ne partent pas
 # Par défaut cette option est réglée à 4 heures, j'ai réduit cette durée:
 delay_warning_time = 1h

 # Ajoutez votre réseau local ici
 mynetworks = 10.9.8.0/22 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

 # Indiquer à Postfix de livrer à un destinataire à la fois
 # la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnerais pas sans cette option
 dovecot_destination_recipient_limit = 1

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

La commande pour voir le fichier sans les lignes commentées:
 # grep -v -E &quot;#&quot; /etc/dovecot/dovecot.conf | grep -v -E &quot;^$&quot;

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

Il faudra installer mailx pour pouvoir faire des essais d'envois:

 root@facteur:~# apt-get install mailutils

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl p7zip unrar-free
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://adresse_IP_du_serveur/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# mkdir /var/local/squirrelmail/attach
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Il est conseillé (mais pas indispensable) d'installer préalablement les codes et modules suivants:

 root@facteur:~# apt-get install libiconv-hook1 php5-mcrypt php5-intl

Téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/


Modification du php.ini d'apache2 à cause d'une incompatibilité du module suhosin avec roundcube:
Ajoutez à la fin du fichier /etc/php5/apache2/php.ini
 suhosin.session.encrypt = Off
Ou remplacez cette valeur dans le fichier 
 ;suhosin.session.encrypt = on
Par
 ;suhosin.session.encrypt = off

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

 root@facteur:~# rm -r /var/www/roundcubemail/installer


[[Fichier:Snapshot207.jpeg]]


Ajout d'un alias 'webmail' dans Apache. Ainsi Roundcube sera accessible depuis n'importe quel domaine hébergé sur le serveur via l'adresse http://domaine.tld/webmail/.

Editez le fichier apache2.conf
 root@facteur:~# nano /etc/apache2/apache2.conf
et ajoutez ceci à la fin du fichier :
&lt;code&gt;
Alias /webmail &quot;/var/www/roudcubemail&quot;

&lt;Directory /var/www/roundcubemail/config&gt;
        Options -FollowSymLinks
        AllowOverride None
&lt;/Directory&gt;
 
&lt;Directory /var/www/roundcubemail/temp&gt;
        Options -FollowSymLinks
        AllowOverride None
        Order allow,deny
        Deny from all
&lt;/Directory&gt;
 
&lt;Directory /var/www/roundcubemail/logs&gt;
        Options -FollowSymLinks
        AllowOverride None
        Order allow,deny
        Deny from all
&lt;/Directory&gt;
&lt;/code&gt;

Puis rechargez apache :
 root@facteur:~# service apache2 reload

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot ==

=== Managesieve ===

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  listen = *:4190
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve

}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

==== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ====

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

==== Roundcube : ajouter le plugin &quot;managesieve&quot; ====

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_port'] = 2000;

Par :

 $rcmail_config['managesieve_port'] = 4190;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

=== [[Installer_le_SSL_sur_Dovecot|Installer le SSL sur Dovecot]] ===

== Plus loin avec Roundcube ==

=== [[Roundcube_%2B_Vacation_-_Notification_d%27absence|Roundcube + Vacation - Notification d'absence]] ===

=== [[Utiliser_roundcube_en_https|Forcer l'utilisation de roundcube en https]] ===

== Plus loin avec Postfixadmin ==

=== [[Fetchmail_sur_postfixadmin]] ===

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=Perso2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbox WHERE username = '%u' AND active='1'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

== Lien externes ==

* {{fr}} [http://x.guimard.free.fr/postfix/ Documentation très complète de Postfix en français]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>p217i1omu1ztols4u71q3dowq0kn5j1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3989</id>
      <parentid>3988</parentid>
      <timestamp>2012-03-24T05:19:14Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Roundcube */</comment>
      <text xml:space="preserve" bytes="59292">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;
#Vacation - Notification d'absence


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== [[Rkhunter|Installation de Rkhunter]] ===

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; et &quot;suggérés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT 
{
  Install-Recommends &quot;false&quot;;
  Install-Suggests &quot;false&quot;;
};
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# cat /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

''Les paquets installés:''
 Les NOUVEAUX paquets suivants vont être installés : 
   apache2-mpm-prefork{a} apache2-utils{a} apache2.2-bin{a} apache2.2-common{a} db4.8-util{a} 
   dovecot-common{a} dovecot-imapd dovecot-pop3d libapache2-mod-php5{a} libapr1{a} libaprutil1{a} 
   libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libc-client2007e{a} libonig2{a} libpq5{a} libqdbm14{a} 
   mlock{a} php5-common{a} php5-imap php5-mysql postfix-mysql sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 16 mars 2012) est &quot;postfixadmin-2.3.5&quot; (1,5 Mio)

 root@facteur:~# wget http://tenet.dl.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-2.3.5/postfixadmin-2.3.5.tar.gz
 root@facteur:~# tar xzvf postfixadmin-2.3.5.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.5/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos
 root@facteur:~# sed -i 's/change-this-to-your.domain.tld/facteur.zehome.org/g' /var/www/postfixadmin/config.inc.php

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;
...
$CONF['default_language'] = 'fr';
...
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';
...
$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

==== Quelques réglages supplémentaires ====

Postfix est maintenant fonctionnel, mais il mérite encore votre attention.
Voici quelques options importantes à activer:

 # Obtenir une alerte si les emails ne partent pas
 # Par défaut cette option est réglée à 4 heures, j'ai réduit cette durée:
 delay_warning_time = 1h

 # Ajoutez votre réseau local ici
 mynetworks = 10.9.8.0/22 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

 # Indiquer à Postfix de livrer à un destinataire à la fois
 # la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnerais pas sans cette option
 dovecot_destination_recipient_limit = 1

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

La commande pour voir le fichier sans les lignes commentées:
 # grep -v -E &quot;#&quot; /etc/dovecot/dovecot.conf | grep -v -E &quot;^$&quot;

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

Il faudra installer mailx pour pouvoir faire des essais d'envois:

 root@facteur:~# apt-get install mailutils

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl p7zip unrar-free
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://adresse_IP_du_serveur/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# mkdir /var/local/squirrelmail/attach
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Il est conseillé (mais pas indispensable) d'installer préalablement les codes et modules suivants:

 root@facteur:~# apt-get install libiconv-hook1 php5-mcrypt php5-intl

Téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

==== php.ini ====

Deux petites modification à faire:

===== suhosin =====

Si le paquet php5-suhosin est installé, il faut modifier la configuration du php.ini d'apache2 à cause d'une incompatibilité avec roundcube:

Modifiez le php.ini de la façon suivante

Ajoutez à la fin du fichier /etc/php5/apache2/php.ini
 suhosin.session.encrypt = Off

 echo 'suhosin.session.encrypt = Off' &gt;&gt; /etc/php5/apache2/php.ini

'''Ou''' remplacez cette valeur dans le fichier /etc/php5/apache2/conf.d/suhosin.ini
 ;suhosin.session.encrypt = on
Par
 suhosin.session.encrypt = off

===== date.timezone =====

Profitons-en pour régler le fuseau horaire:
Toujours dans le fichier /etc/php5/php.ini, cherchez la variable date.timezone, dé commentez, et complétez:

&lt;pre&gt;
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = 'Indian/Antananarivo'
;date.timezone = 'Europe/Paris'
&lt;/pre&gt;

==== Mysql ====

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

==== Installation ====

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

 root@facteur:~# rm -r /var/www/roundcubemail/installer


[[Fichier:Snapshot207.jpeg]]

==== Un alias pour Apache2 ====

Ajout d'un alias 'webmail' dans Apache. Ainsi Roundcube sera accessible depuis n'importe quel domaine hébergé sur le serveur via l'adresse http://domaine.tld/webmail/.

Editez le fichier apache2.conf
 root@facteur:~# nano /etc/apache2/apache2.conf
et ajoutez ceci à la fin du fichier :
&lt;code&gt;
Alias /webmail &quot;/var/www/roudcubemail&quot;

&lt;Directory /var/www/roundcubemail/config&gt;
        Options -FollowSymLinks
        AllowOverride None
&lt;/Directory&gt;
 
&lt;Directory /var/www/roundcubemail/temp&gt;
        Options -FollowSymLinks
        AllowOverride None
        Order allow,deny
        Deny from all
&lt;/Directory&gt;
 
&lt;Directory /var/www/roundcubemail/logs&gt;
        Options -FollowSymLinks
        AllowOverride None
        Order allow,deny
        Deny from all
&lt;/Directory&gt;
&lt;/code&gt;

Puis rechargez apache :
 root@facteur:~# service apache2 reload

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot ==

=== Managesieve ===

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  listen = *:4190
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve

}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

==== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ====

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

==== Roundcube : ajouter le plugin &quot;managesieve&quot; ====

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_port'] = 2000;

Par :

 $rcmail_config['managesieve_port'] = 4190;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

=== [[Installer_le_SSL_sur_Dovecot|Installer le SSL sur Dovecot]] ===

== Plus loin avec Roundcube ==

=== [[Roundcube_%2B_Vacation_-_Notification_d%27absence|Roundcube + Vacation - Notification d'absence]] ===

=== [[Utiliser_roundcube_en_https|Forcer l'utilisation de roundcube en https]] ===

== Plus loin avec Postfixadmin ==

=== [[Fetchmail_sur_postfixadmin]] ===

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=Perso2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbox WHERE username = '%u' AND active='1'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

== Lien externes ==

* {{fr}} [http://x.guimard.free.fr/postfix/ Documentation très complète de Postfix en français]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>kj8435f3x1pmevqxjs1sxpm93m8ll1p</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3990</id>
      <parentid>3989</parentid>
      <timestamp>2012-03-24T05:45:36Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* suhosin */</comment>
      <text xml:space="preserve" bytes="59309">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;
#Vacation - Notification d'absence


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== [[Rkhunter|Installation de Rkhunter]] ===

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; et &quot;suggérés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT 
{
  Install-Recommends &quot;false&quot;;
  Install-Suggests &quot;false&quot;;
};
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# cat /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

''Les paquets installés:''
 Les NOUVEAUX paquets suivants vont être installés : 
   apache2-mpm-prefork{a} apache2-utils{a} apache2.2-bin{a} apache2.2-common{a} db4.8-util{a} 
   dovecot-common{a} dovecot-imapd dovecot-pop3d libapache2-mod-php5{a} libapr1{a} libaprutil1{a} 
   libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libc-client2007e{a} libonig2{a} libpq5{a} libqdbm14{a} 
   mlock{a} php5-common{a} php5-imap php5-mysql postfix-mysql sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 16 mars 2012) est &quot;postfixadmin-2.3.5&quot; (1,5 Mio)

 root@facteur:~# wget http://tenet.dl.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-2.3.5/postfixadmin-2.3.5.tar.gz
 root@facteur:~# tar xzvf postfixadmin-2.3.5.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.5/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos
 root@facteur:~# sed -i 's/change-this-to-your.domain.tld/facteur.zehome.org/g' /var/www/postfixadmin/config.inc.php

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;
...
$CONF['default_language'] = 'fr';
...
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';
...
$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

==== Quelques réglages supplémentaires ====

Postfix est maintenant fonctionnel, mais il mérite encore votre attention.
Voici quelques options importantes à activer:

 # Obtenir une alerte si les emails ne partent pas
 # Par défaut cette option est réglée à 4 heures, j'ai réduit cette durée:
 delay_warning_time = 1h

 # Ajoutez votre réseau local ici
 mynetworks = 10.9.8.0/22 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

 # Indiquer à Postfix de livrer à un destinataire à la fois
 # la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnerais pas sans cette option
 dovecot_destination_recipient_limit = 1

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

La commande pour voir le fichier sans les lignes commentées:
 # grep -v -E &quot;#&quot; /etc/dovecot/dovecot.conf | grep -v -E &quot;^$&quot;

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

Il faudra installer mailx pour pouvoir faire des essais d'envois:

 root@facteur:~# apt-get install mailutils

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl p7zip unrar-free
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajout de deux lignes à la fin du fichier /etc/postfix/main.cf

 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://adresse_IP_du_serveur/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# mkdir /var/local/squirrelmail/attach
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Il est conseillé (mais pas indispensable) d'installer préalablement les codes et modules suivants:

 root@facteur:~# apt-get install libiconv-hook1 php5-mcrypt php5-intl

Téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

==== php.ini ====

Deux petites modification à faire:

===== suhosin =====

Si le paquet php5-suhosin est installé, il faut modifier la configuration du php.ini d'apache2 à cause d'une incompatibilité avec roundcube:

Modifiez le php.ini de la façon suivante

Ajoutez à la fin du fichier /etc/php5/apache2/php.ini;
 suhosin.session.encrypt = Off
'''Ou''' passez la commande suivante
 echo 'suhosin.session.encrypt = Off' &gt;&gt; /etc/php5/apache2/php.ini

'''Ou''' Modifiez le fichier suhosin.ini
Remplacez cette valeur:
 ;suhosin.session.encrypt = on
Par
 suhosin.session.encrypt = off

===== date.timezone =====

Profitons-en pour régler le fuseau horaire:
Toujours dans le fichier /etc/php5/php.ini, cherchez la variable date.timezone, dé commentez, et complétez:

&lt;pre&gt;
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = 'Indian/Antananarivo'
;date.timezone = 'Europe/Paris'
&lt;/pre&gt;

==== Mysql ====

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

==== Installation ====

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

 root@facteur:~# rm -r /var/www/roundcubemail/installer


[[Fichier:Snapshot207.jpeg]]

==== Un alias pour Apache2 ====

Ajout d'un alias 'webmail' dans Apache. Ainsi Roundcube sera accessible depuis n'importe quel domaine hébergé sur le serveur via l'adresse http://domaine.tld/webmail/.

Editez le fichier apache2.conf
 root@facteur:~# nano /etc/apache2/apache2.conf
et ajoutez ceci à la fin du fichier :
&lt;code&gt;
Alias /webmail &quot;/var/www/roudcubemail&quot;

&lt;Directory /var/www/roundcubemail/config&gt;
        Options -FollowSymLinks
        AllowOverride None
&lt;/Directory&gt;
 
&lt;Directory /var/www/roundcubemail/temp&gt;
        Options -FollowSymLinks
        AllowOverride None
        Order allow,deny
        Deny from all
&lt;/Directory&gt;
 
&lt;Directory /var/www/roundcubemail/logs&gt;
        Options -FollowSymLinks
        AllowOverride None
        Order allow,deny
        Deny from all
&lt;/Directory&gt;
&lt;/code&gt;

Puis rechargez apache :
 root@facteur:~# service apache2 reload

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot ==

=== Managesieve ===

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  listen = *:4190
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve

}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

==== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ====

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

==== Roundcube : ajouter le plugin &quot;managesieve&quot; ====

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_port'] = 2000;

Par :

 $rcmail_config['managesieve_port'] = 4190;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

=== [[Installer_le_SSL_sur_Dovecot|Installer le SSL sur Dovecot]] ===

== Plus loin avec Roundcube ==

=== [[Roundcube_%2B_Vacation_-_Notification_d%27absence|Roundcube + Vacation - Notification d'absence]] ===

=== [[Utiliser_roundcube_en_https|Forcer l'utilisation de roundcube en https]] ===

== Plus loin avec Postfixadmin ==

=== [[Fetchmail_sur_postfixadmin]] ===

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=Perso2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbox WHERE username = '%u' AND active='1'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

== Lien externes ==

* {{fr}} [http://x.guimard.free.fr/postfix/ Documentation très complète de Postfix en français]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>3jr9spu84ak31bemfg1dvlhcnh2xqt2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3991</id>
      <parentid>3990</parentid>
      <timestamp>2012-03-24T05:47:48Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Réglages de Dovecot Postfix et Amavis */  Clarification &quot;postconf -e&quot;</comment>
      <text xml:space="preserve" bytes="59491">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;
#Vacation - Notification d'absence


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== [[Rkhunter|Installation de Rkhunter]] ===

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; et &quot;suggérés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT 
{
  Install-Recommends &quot;false&quot;;
  Install-Suggests &quot;false&quot;;
};
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# cat /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

''Les paquets installés:''
 Les NOUVEAUX paquets suivants vont être installés : 
   apache2-mpm-prefork{a} apache2-utils{a} apache2.2-bin{a} apache2.2-common{a} db4.8-util{a} 
   dovecot-common{a} dovecot-imapd dovecot-pop3d libapache2-mod-php5{a} libapr1{a} libaprutil1{a} 
   libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libc-client2007e{a} libonig2{a} libpq5{a} libqdbm14{a} 
   mlock{a} php5-common{a} php5-imap php5-mysql postfix-mysql sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 16 mars 2012) est &quot;postfixadmin-2.3.5&quot; (1,5 Mio)

 root@facteur:~# wget http://tenet.dl.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-2.3.5/postfixadmin-2.3.5.tar.gz
 root@facteur:~# tar xzvf postfixadmin-2.3.5.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.5/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos
 root@facteur:~# sed -i 's/change-this-to-your.domain.tld/facteur.zehome.org/g' /var/www/postfixadmin/config.inc.php

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;
...
$CONF['default_language'] = 'fr';
...
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';
...
$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

==== Quelques réglages supplémentaires ====

Postfix est maintenant fonctionnel, mais il mérite encore votre attention.
Voici quelques options importantes à activer:

 # Obtenir une alerte si les emails ne partent pas
 # Par défaut cette option est réglée à 4 heures, j'ai réduit cette durée:
 delay_warning_time = 1h

 # Ajoutez votre réseau local ici
 mynetworks = 10.9.8.0/22 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

 # Indiquer à Postfix de livrer à un destinataire à la fois
 # la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnerais pas sans cette option
 dovecot_destination_recipient_limit = 1

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

La commande pour voir le fichier sans les lignes commentées:
 # grep -v -E &quot;#&quot; /etc/dovecot/dovecot.conf | grep -v -E &quot;^$&quot;

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

Il faudra installer mailx pour pouvoir faire des essais d'envois:

 root@facteur:~# apt-get install mailutils

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl p7zip unrar-free
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajoutez avec un éditeur les deux lignes suivantes à la fin du fichier /etc/postfix/main.cf
 content_filter = amavis:[127.0.0.1]:10024
 receive_override_options = no_address_mappings

'''Ou''' tapez les deux commandes suivantes dans la console:
 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://adresse_IP_du_serveur/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# mkdir /var/local/squirrelmail/attach
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Il est conseillé (mais pas indispensable) d'installer préalablement les codes et modules suivants:

 root@facteur:~# apt-get install libiconv-hook1 php5-mcrypt php5-intl

Téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

==== php.ini ====

Deux petites modification à faire:

===== suhosin =====

Si le paquet php5-suhosin est installé, il faut modifier la configuration du php.ini d'apache2 à cause d'une incompatibilité avec roundcube:

Modifiez le php.ini de la façon suivante

Ajoutez à la fin du fichier /etc/php5/apache2/php.ini;
 suhosin.session.encrypt = Off
'''Ou''' passez la commande suivante
 echo 'suhosin.session.encrypt = Off' &gt;&gt; /etc/php5/apache2/php.ini

'''Ou''' Modifiez le fichier suhosin.ini
Remplacez cette valeur:
 ;suhosin.session.encrypt = on
Par
 suhosin.session.encrypt = off

===== date.timezone =====

Profitons-en pour régler le fuseau horaire:
Toujours dans le fichier /etc/php5/php.ini, cherchez la variable date.timezone, dé commentez, et complétez:

&lt;pre&gt;
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = 'Indian/Antananarivo'
;date.timezone = 'Europe/Paris'
&lt;/pre&gt;

==== Mysql ====

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

==== Installation ====

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

 root@facteur:~# rm -r /var/www/roundcubemail/installer


[[Fichier:Snapshot207.jpeg]]

==== Un alias pour Apache2 ====

Ajout d'un alias 'webmail' dans Apache. Ainsi Roundcube sera accessible depuis n'importe quel domaine hébergé sur le serveur via l'adresse http://domaine.tld/webmail/.

Editez le fichier apache2.conf
 root@facteur:~# nano /etc/apache2/apache2.conf
et ajoutez ceci à la fin du fichier :
&lt;code&gt;
Alias /webmail &quot;/var/www/roudcubemail&quot;

&lt;Directory /var/www/roundcubemail/config&gt;
        Options -FollowSymLinks
        AllowOverride None
&lt;/Directory&gt;
 
&lt;Directory /var/www/roundcubemail/temp&gt;
        Options -FollowSymLinks
        AllowOverride None
        Order allow,deny
        Deny from all
&lt;/Directory&gt;
 
&lt;Directory /var/www/roundcubemail/logs&gt;
        Options -FollowSymLinks
        AllowOverride None
        Order allow,deny
        Deny from all
&lt;/Directory&gt;
&lt;/code&gt;

Puis rechargez apache :
 root@facteur:~# service apache2 reload

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot ==

=== Managesieve ===

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  listen = *:4190
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve

}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

==== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ====

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

==== Roundcube : ajouter le plugin &quot;managesieve&quot; ====

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_port'] = 2000;

Par :

 $rcmail_config['managesieve_port'] = 4190;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

=== [[Installer_le_SSL_sur_Dovecot|Installer le SSL sur Dovecot]] ===

== Plus loin avec Roundcube ==

=== [[Roundcube_%2B_Vacation_-_Notification_d%27absence|Roundcube + Vacation - Notification d'absence]] ===

=== [[Utiliser_roundcube_en_https|Forcer l'utilisation de roundcube en https]] ===

== Plus loin avec Postfixadmin ==

=== [[Fetchmail_sur_postfixadmin]] ===

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=Perso2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbox WHERE username = '%u' AND active='1'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

== Lien externes ==

* {{fr}} [http://x.guimard.free.fr/postfix/ Documentation très complète de Postfix en français]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>hxuyq6aiptnj9t3zv7w471gmpl8x17h</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5107</id>
      <parentid>3991</parentid>
      <timestamp>2013-04-25T17:14:38Z</timestamp>
      <contributor>
        <username>Brizou</username>
        <id>270</id>
      </contributor>
      <comment>/* Activation du SMTPS */</comment>
      <text xml:space="preserve" bytes="60831">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;
#Vacation - Notification d'absence


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== [[Rkhunter|Installation de Rkhunter]] ===

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; et &quot;suggérés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT 
{
  Install-Recommends &quot;false&quot;;
  Install-Suggests &quot;false&quot;;
};
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# cat /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

''Les paquets installés:''
 Les NOUVEAUX paquets suivants vont être installés : 
   apache2-mpm-prefork{a} apache2-utils{a} apache2.2-bin{a} apache2.2-common{a} db4.8-util{a} 
   dovecot-common{a} dovecot-imapd dovecot-pop3d libapache2-mod-php5{a} libapr1{a} libaprutil1{a} 
   libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libc-client2007e{a} libonig2{a} libpq5{a} libqdbm14{a} 
   mlock{a} php5-common{a} php5-imap php5-mysql postfix-mysql sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 16 mars 2012) est &quot;postfixadmin-2.3.5&quot; (1,5 Mio)

 root@facteur:~# wget http://tenet.dl.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-2.3.5/postfixadmin-2.3.5.tar.gz
 root@facteur:~# tar xzvf postfixadmin-2.3.5.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.5/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos
 root@facteur:~# sed -i 's/change-this-to-your.domain.tld/facteur.zehome.org/g' /var/www/postfixadmin/config.inc.php

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;
...
$CONF['default_language'] = 'fr';
...
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';
...
$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

==== Quelques réglages supplémentaires ====

Postfix est maintenant fonctionnel, mais il mérite encore votre attention.
Voici quelques options importantes à activer:

 # Obtenir une alerte si les emails ne partent pas
 # Par défaut cette option est réglée à 4 heures, j'ai réduit cette durée:
 delay_warning_time = 1h

 # Ajoutez votre réseau local ici
 mynetworks = 10.9.8.0/22 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

 # Indiquer à Postfix de livrer à un destinataire à la fois
 # la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnerais pas sans cette option
 dovecot_destination_recipient_limit = 1

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

La commande pour voir le fichier sans les lignes commentées:
 # grep -v -E &quot;#&quot; /etc/dovecot/dovecot.conf | grep -v -E &quot;^$&quot;

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

Il faudra installer mailx pour pouvoir faire des essais d'envois:

 root@facteur:~# apt-get install mailutils

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl p7zip unrar-free
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajoutez avec un éditeur les deux lignes suivantes à la fin du fichier /etc/postfix/main.cf
 content_filter = amavis:[127.0.0.1]:10024
 receive_override_options = no_address_mappings

'''Ou''' tapez les deux commandes suivantes dans la console:
 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://adresse_IP_du_serveur/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# mkdir /var/local/squirrelmail/attach
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Il est conseillé (mais pas indispensable) d'installer préalablement les codes et modules suivants:

 root@facteur:~# apt-get install libiconv-hook1 php5-mcrypt php5-intl

Téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

==== php.ini ====

Deux petites modification à faire:

===== suhosin =====

Si le paquet php5-suhosin est installé, il faut modifier la configuration du php.ini d'apache2 à cause d'une incompatibilité avec roundcube:

Modifiez le php.ini de la façon suivante

Ajoutez à la fin du fichier /etc/php5/apache2/php.ini;
 suhosin.session.encrypt = Off
'''Ou''' passez la commande suivante
 echo 'suhosin.session.encrypt = Off' &gt;&gt; /etc/php5/apache2/php.ini

'''Ou''' Modifiez le fichier suhosin.ini
Remplacez cette valeur:
 ;suhosin.session.encrypt = on
Par
 suhosin.session.encrypt = off

===== date.timezone =====

Profitons-en pour régler le fuseau horaire:
Toujours dans le fichier /etc/php5/php.ini, cherchez la variable date.timezone, dé commentez, et complétez:

&lt;pre&gt;
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = 'Indian/Antananarivo'
;date.timezone = 'Europe/Paris'
&lt;/pre&gt;

==== Mysql ====

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

==== Installation ====

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

 root@facteur:~# rm -r /var/www/roundcubemail/installer


[[Fichier:Snapshot207.jpeg]]

==== Un alias pour Apache2 ====

Ajout d'un alias 'webmail' dans Apache. Ainsi Roundcube sera accessible depuis n'importe quel domaine hébergé sur le serveur via l'adresse http://domaine.tld/webmail/.

Editez le fichier apache2.conf
 root@facteur:~# nano /etc/apache2/apache2.conf
et ajoutez ceci à la fin du fichier :
&lt;code&gt;
Alias /webmail &quot;/var/www/roudcubemail&quot;

&lt;Directory /var/www/roundcubemail/config&gt;
        Options -FollowSymLinks
        AllowOverride None
&lt;/Directory&gt;
 
&lt;Directory /var/www/roundcubemail/temp&gt;
        Options -FollowSymLinks
        AllowOverride None
        Order allow,deny
        Deny from all
&lt;/Directory&gt;
 
&lt;Directory /var/www/roundcubemail/logs&gt;
        Options -FollowSymLinks
        AllowOverride None
        Order allow,deny
        Deny from all
&lt;/Directory&gt;
&lt;/code&gt;

Puis rechargez apache :
 root@facteur:~# service apache2 reload

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

Modifions aussi le fichier /etc/postfix/master.cf, on y ajoute 
&lt;code&gt;
# SASL parameters
# ---------------------------------

# Use Dovecot to authenticate.
smtpd_sasl_type = dovecot
# Referring to /var/spool/postfix/private/auth
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain =
smtpd_sasl_authenticated_header = yes

# TLS parameters
# ---------------------------------

# Replace this with your SSL certificate path if you are using one.
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
# The snakeoil self-signed certificate has no need for a CA file. But
# if you are using your own SSL certificate, then you probably have
# a CA certificate bundle from your provider. The path to that goes
# here.
#smtpd_tls_CAfile=/path/to/ca/file
smtpd_use_tls=yes
smtp_tls_security_level = may
smtpd_tls_security_level = may
#smtpd_tls_auth_only = no
smtp_tls_note_starttls_offer = yes
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
#smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
#smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot ==

=== Managesieve ===

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  listen = *:4190
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve

}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

==== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ====

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

==== Roundcube : ajouter le plugin &quot;managesieve&quot; ====

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_port'] = 2000;

Par :

 $rcmail_config['managesieve_port'] = 4190;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

=== [[Installer_le_SSL_sur_Dovecot|Installer le SSL sur Dovecot]] ===

== Plus loin avec Roundcube ==

=== [[Roundcube_%2B_Vacation_-_Notification_d%27absence|Roundcube + Vacation - Notification d'absence]] ===

=== [[Utiliser_roundcube_en_https|Forcer l'utilisation de roundcube en https]] ===

== Plus loin avec Postfixadmin ==

=== [[Fetchmail_sur_postfixadmin]] ===

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=Perso2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbox WHERE username = '%u' AND active='1'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

== Lien externes ==

* {{fr}} [http://x.guimard.free.fr/postfix/ Documentation très complète de Postfix en français]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>gk2daijbhvktoxoixnnnyrl1l5taq2u</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5108</id>
      <parentid>5107</parentid>
      <timestamp>2013-04-25T17:17:56Z</timestamp>
      <contributor>
        <username>Brizou</username>
        <id>270</id>
      </contributor>
      <comment>/* Activation du SMTPS */</comment>
      <text xml:space="preserve" bytes="60829">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;
#Vacation - Notification d'absence


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== [[Rkhunter|Installation de Rkhunter]] ===

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; et &quot;suggérés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT 
{
  Install-Recommends &quot;false&quot;;
  Install-Suggests &quot;false&quot;;
};
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# cat /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

''Les paquets installés:''
 Les NOUVEAUX paquets suivants vont être installés : 
   apache2-mpm-prefork{a} apache2-utils{a} apache2.2-bin{a} apache2.2-common{a} db4.8-util{a} 
   dovecot-common{a} dovecot-imapd dovecot-pop3d libapache2-mod-php5{a} libapr1{a} libaprutil1{a} 
   libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libc-client2007e{a} libonig2{a} libpq5{a} libqdbm14{a} 
   mlock{a} php5-common{a} php5-imap php5-mysql postfix-mysql sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 16 mars 2012) est &quot;postfixadmin-2.3.5&quot; (1,5 Mio)

 root@facteur:~# wget http://tenet.dl.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-2.3.5/postfixadmin-2.3.5.tar.gz
 root@facteur:~# tar xzvf postfixadmin-2.3.5.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.5/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos
 root@facteur:~# sed -i 's/change-this-to-your.domain.tld/facteur.zehome.org/g' /var/www/postfixadmin/config.inc.php

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;
...
$CONF['default_language'] = 'fr';
...
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';
...
$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

==== Quelques réglages supplémentaires ====

Postfix est maintenant fonctionnel, mais il mérite encore votre attention.
Voici quelques options importantes à activer:

 # Obtenir une alerte si les emails ne partent pas
 # Par défaut cette option est réglée à 4 heures, j'ai réduit cette durée:
 delay_warning_time = 1h

 # Ajoutez votre réseau local ici
 mynetworks = 10.9.8.0/22 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

 # Indiquer à Postfix de livrer à un destinataire à la fois
 # la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnerais pas sans cette option
 dovecot_destination_recipient_limit = 1

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

La commande pour voir le fichier sans les lignes commentées:
 # grep -v -E &quot;#&quot; /etc/dovecot/dovecot.conf | grep -v -E &quot;^$&quot;

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

Il faudra installer mailx pour pouvoir faire des essais d'envois:

 root@facteur:~# apt-get install mailutils

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl p7zip unrar-free
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajoutez avec un éditeur les deux lignes suivantes à la fin du fichier /etc/postfix/main.cf
 content_filter = amavis:[127.0.0.1]:10024
 receive_override_options = no_address_mappings

'''Ou''' tapez les deux commandes suivantes dans la console:
 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://adresse_IP_du_serveur/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# mkdir /var/local/squirrelmail/attach
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Il est conseillé (mais pas indispensable) d'installer préalablement les codes et modules suivants:

 root@facteur:~# apt-get install libiconv-hook1 php5-mcrypt php5-intl

Téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

==== php.ini ====

Deux petites modification à faire:

===== suhosin =====

Si le paquet php5-suhosin est installé, il faut modifier la configuration du php.ini d'apache2 à cause d'une incompatibilité avec roundcube:

Modifiez le php.ini de la façon suivante

Ajoutez à la fin du fichier /etc/php5/apache2/php.ini;
 suhosin.session.encrypt = Off
'''Ou''' passez la commande suivante
 echo 'suhosin.session.encrypt = Off' &gt;&gt; /etc/php5/apache2/php.ini

'''Ou''' Modifiez le fichier suhosin.ini
Remplacez cette valeur:
 ;suhosin.session.encrypt = on
Par
 suhosin.session.encrypt = off

===== date.timezone =====

Profitons-en pour régler le fuseau horaire:
Toujours dans le fichier /etc/php5/php.ini, cherchez la variable date.timezone, dé commentez, et complétez:

&lt;pre&gt;
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = 'Indian/Antananarivo'
;date.timezone = 'Europe/Paris'
&lt;/pre&gt;

==== Mysql ====

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

==== Installation ====

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

 root@facteur:~# rm -r /var/www/roundcubemail/installer


[[Fichier:Snapshot207.jpeg]]

==== Un alias pour Apache2 ====

Ajout d'un alias 'webmail' dans Apache. Ainsi Roundcube sera accessible depuis n'importe quel domaine hébergé sur le serveur via l'adresse http://domaine.tld/webmail/.

Editez le fichier apache2.conf
 root@facteur:~# nano /etc/apache2/apache2.conf
et ajoutez ceci à la fin du fichier :
&lt;code&gt;
Alias /webmail &quot;/var/www/roudcubemail&quot;

&lt;Directory /var/www/roundcubemail/config&gt;
        Options -FollowSymLinks
        AllowOverride None
&lt;/Directory&gt;
 
&lt;Directory /var/www/roundcubemail/temp&gt;
        Options -FollowSymLinks
        AllowOverride None
        Order allow,deny
        Deny from all
&lt;/Directory&gt;
 
&lt;Directory /var/www/roundcubemail/logs&gt;
        Options -FollowSymLinks
        AllowOverride None
        Order allow,deny
        Deny from all
&lt;/Directory&gt;
&lt;/code&gt;

Puis rechargez apache :
 root@facteur:~# service apache2 reload

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

Modifions aussi le fichier /etc/postfix/main.cf, on y ajoute 
&lt;code&gt;
# SASL parameters
# ---------------------------------

# Use Dovecot to authenticate.
smtpd_sasl_type = dovecot
# Referring to /var/spool/postfix/private/auth
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain =
smtpd_sasl_authenticated_header = yes

# TLS parameters
# ---------------------------------

# Replace this with your SSL certificate path if you are using one.
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
# The snakeoil self-signed certificate has no need for a CA file. But
# if you are using your own SSL certificate, then you probably have
# a CA certificate bundle from your provider. The path to that goes
# here.
#smtpd_tls_CAfile=/path/to/ca/file
smtpd_use_tls=yes
smtp_tls_security_level = may
smtpd_tls_security_level = may
#smtpd_tls_auth_only = no
smtp_tls_note_starttls_offer = yes
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
#smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
#smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot ==

=== Managesieve ===

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  listen = *:4190
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve

}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

==== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ====

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

==== Roundcube : ajouter le plugin &quot;managesieve&quot; ====

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_port'] = 2000;

Par :

 $rcmail_config['managesieve_port'] = 4190;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

=== [[Installer_le_SSL_sur_Dovecot|Installer le SSL sur Dovecot]] ===

== Plus loin avec Roundcube ==

=== [[Roundcube_%2B_Vacation_-_Notification_d%27absence|Roundcube + Vacation - Notification d'absence]] ===

=== [[Utiliser_roundcube_en_https|Forcer l'utilisation de roundcube en https]] ===

== Plus loin avec Postfixadmin ==

=== [[Fetchmail_sur_postfixadmin]] ===

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=Perso2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbox WHERE username = '%u' AND active='1'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

== Lien externes ==

* {{fr}} [http://x.guimard.free.fr/postfix/ Documentation très complète de Postfix en français]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>98fqdja3572nrj3te16mwmd1pk7jvxm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5527</id>
      <parentid>5108</parentid>
      <timestamp>2014-01-08T09:39:27Z</timestamp>
      <contributor>
        <username>GammaNu</username>
        <id>285</id>
      </contributor>
      <comment>/* Quelques réglages supplémentaires */  indication du fichier concerné</comment>
      <text xml:space="preserve" bytes="60847">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;
#Vacation - Notification d'absence


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== [[Rkhunter|Installation de Rkhunter]] ===

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; et &quot;suggérés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT 
{
  Install-Recommends &quot;false&quot;;
  Install-Suggests &quot;false&quot;;
};
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# cat /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

''Les paquets installés:''
 Les NOUVEAUX paquets suivants vont être installés : 
   apache2-mpm-prefork{a} apache2-utils{a} apache2.2-bin{a} apache2.2-common{a} db4.8-util{a} 
   dovecot-common{a} dovecot-imapd dovecot-pop3d libapache2-mod-php5{a} libapr1{a} libaprutil1{a} 
   libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libc-client2007e{a} libonig2{a} libpq5{a} libqdbm14{a} 
   mlock{a} php5-common{a} php5-imap php5-mysql postfix-mysql sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 16 mars 2012) est &quot;postfixadmin-2.3.5&quot; (1,5 Mio)

 root@facteur:~# wget http://tenet.dl.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-2.3.5/postfixadmin-2.3.5.tar.gz
 root@facteur:~# tar xzvf postfixadmin-2.3.5.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.5/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos
 root@facteur:~# sed -i 's/change-this-to-your.domain.tld/facteur.zehome.org/g' /var/www/postfixadmin/config.inc.php

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;
...
$CONF['default_language'] = 'fr';
...
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';
...
$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

==== Quelques réglages supplémentaires ====

Postfix est maintenant fonctionnel, mais il mérite encore votre attention.
Voici quelques options importantes à ajouter à votre main.cf :

 # Obtenir une alerte si les emails ne partent pas
 # Par défaut cette option est réglée à 4 heures, j'ai réduit cette durée:
 delay_warning_time = 1h

 # Ajoutez votre réseau local ici
 mynetworks = 10.9.8.0/22 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

 # Indiquer à Postfix de livrer à un destinataire à la fois
 # la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnerais pas sans cette option
 dovecot_destination_recipient_limit = 1

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

La commande pour voir le fichier sans les lignes commentées:
 # grep -v -E &quot;#&quot; /etc/dovecot/dovecot.conf | grep -v -E &quot;^$&quot;

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

Il faudra installer mailx pour pouvoir faire des essais d'envois:

 root@facteur:~# apt-get install mailutils

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le dossier est bien créé - Un dossier par domaine sera créé, les utilisateurs des domaines seront rangés dans ces dossiers.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl p7zip unrar-free
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajoutez avec un éditeur les deux lignes suivantes à la fin du fichier /etc/postfix/main.cf
 content_filter = amavis:[127.0.0.1]:10024
 receive_override_options = no_address_mappings

'''Ou''' tapez les deux commandes suivantes dans la console:
 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://adresse_IP_du_serveur/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les dossiers qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# mkdir /var/local/squirrelmail/attach
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Il est conseillé (mais pas indispensable) d'installer préalablement les codes et modules suivants:

 root@facteur:~# apt-get install libiconv-hook1 php5-mcrypt php5-intl

Téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

==== php.ini ====

Deux petites modification à faire:

===== suhosin =====

Si le paquet php5-suhosin est installé, il faut modifier la configuration du php.ini d'apache2 à cause d'une incompatibilité avec roundcube:

Modifiez le php.ini de la façon suivante

Ajoutez à la fin du fichier /etc/php5/apache2/php.ini;
 suhosin.session.encrypt = Off
'''Ou''' passez la commande suivante
 echo 'suhosin.session.encrypt = Off' &gt;&gt; /etc/php5/apache2/php.ini

'''Ou''' Modifiez le fichier suhosin.ini
Remplacez cette valeur:
 ;suhosin.session.encrypt = on
Par
 suhosin.session.encrypt = off

===== date.timezone =====

Profitons-en pour régler le fuseau horaire:
Toujours dans le fichier /etc/php5/php.ini, cherchez la variable date.timezone, dé commentez, et complétez:

&lt;pre&gt;
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = 'Indian/Antananarivo'
;date.timezone = 'Europe/Paris'
&lt;/pre&gt;

==== Mysql ====

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

==== Installation ====

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

 root@facteur:~# rm -r /var/www/roundcubemail/installer


[[Fichier:Snapshot207.jpeg]]

==== Un alias pour Apache2 ====

Ajout d'un alias 'webmail' dans Apache. Ainsi Roundcube sera accessible depuis n'importe quel domaine hébergé sur le serveur via l'adresse http://domaine.tld/webmail/.

Editez le fichier apache2.conf
 root@facteur:~# nano /etc/apache2/apache2.conf
et ajoutez ceci à la fin du fichier :
&lt;code&gt;
Alias /webmail &quot;/var/www/roudcubemail&quot;

&lt;Directory /var/www/roundcubemail/config&gt;
        Options -FollowSymLinks
        AllowOverride None
&lt;/Directory&gt;
 
&lt;Directory /var/www/roundcubemail/temp&gt;
        Options -FollowSymLinks
        AllowOverride None
        Order allow,deny
        Deny from all
&lt;/Directory&gt;
 
&lt;Directory /var/www/roundcubemail/logs&gt;
        Options -FollowSymLinks
        AllowOverride None
        Order allow,deny
        Deny from all
&lt;/Directory&gt;
&lt;/code&gt;

Puis rechargez apache :
 root@facteur:~# service apache2 reload

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

Modifions aussi le fichier /etc/postfix/main.cf, on y ajoute 
&lt;code&gt;
# SASL parameters
# ---------------------------------

# Use Dovecot to authenticate.
smtpd_sasl_type = dovecot
# Referring to /var/spool/postfix/private/auth
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain =
smtpd_sasl_authenticated_header = yes

# TLS parameters
# ---------------------------------

# Replace this with your SSL certificate path if you are using one.
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
# The snakeoil self-signed certificate has no need for a CA file. But
# if you are using your own SSL certificate, then you probably have
# a CA certificate bundle from your provider. The path to that goes
# here.
#smtpd_tls_CAfile=/path/to/ca/file
smtpd_use_tls=yes
smtp_tls_security_level = may
smtpd_tls_security_level = may
#smtpd_tls_auth_only = no
smtp_tls_note_starttls_offer = yes
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
#smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
#smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot ==

=== Managesieve ===

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  listen = *:4190
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve

}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

==== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ====

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

==== Roundcube : ajouter le plugin &quot;managesieve&quot; ====

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_port'] = 2000;

Par :

 $rcmail_config['managesieve_port'] = 4190;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

=== [[Installer_le_SSL_sur_Dovecot|Installer le SSL sur Dovecot]] ===

== Plus loin avec Roundcube ==

=== [[Roundcube_%2B_Vacation_-_Notification_d%27absence|Roundcube + Vacation - Notification d'absence]] ===

=== [[Utiliser_roundcube_en_https|Forcer l'utilisation de roundcube en https]] ===

== Plus loin avec Postfixadmin ==

=== [[Fetchmail_sur_postfixadmin]] ===

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=Perso2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbox WHERE username = '%u' AND active='1'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

== Lien externes ==

* {{fr}} [http://x.guimard.free.fr/postfix/ Documentation très complète de Postfix en français]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>h3gmntqhjeht8p69sfuazu3anoiwqrq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5779</id>
      <parentid>5527</parentid>
      <timestamp>2014-08-20T05:36:17Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="60863">{{Ébauche|l'installation d'un serveur Mail complet}}

Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.

La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql.
Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...

Les programmes :
#Postfix comme serveur de messagerie;
#Dovecot comme interface Imap/Pop3;
#Mysql comme base de donnée;
#Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
#Clamav comme anti-virus;
#Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
#Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
#Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
#Squirrelmail et Roundcube comme Webmail;
#Vacation - Notification d'absence


== Prérequis ==

Je vous recommande la lecture de ceci avant de vous lancer : [[Configuration_dun_serveur_mail_avec_Postfix#Pr.C3.A9requis|Configuration d'un serveur mail avec Postfix - Prérequis]]

En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.

Il vous faut :
# un nom de domaine
# une IP fixe
# un PC allumé si possible 24h/24
# Accessoirement un DNS local fonctionnel

== Installation d'une squeeze minimale ==

Installez une Debian minimale.
A partir d'une ISO au format &quot;carte de visite&quot; (Businesscard) par exemple, installez seulement les utilitaires standard:

[[Fichier:Snapshot155.jpeg|frameless|600px|A partir d'une &quot;Businesscard&quot;]]
[[Fichier:Snapshot184.jpeg|frameless|600px|Installez seulement les utilitaires standard]]

== Préparation du système ==

=== [[Rkhunter|Installation de Rkhunter]] ===

=== Modification du sources.list ===

 # nano /etc/apt/sources.list
&lt;pre&gt;
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;

 root@facteur:~# apt-get update
 root@facteur:~# apt-get dist-upgrade
ou:  '''Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!'''
 root@facteur:~# apt-get update &amp;&amp; apt-get dist-upgrade -y

=== Install-Recommends et diminution des priorités debconf ===

L'installation des paquets &quot;recommandés&quot; et &quot;suggérés&quot; n'est pas nécessaire, nous désactivons donc cette fonctionnalité:

 root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
&lt;code&gt;
APT 
{
  Install-Recommends &quot;false&quot;;
  Install-Suggests &quot;false&quot;;
};
&lt;/code&gt;

Les priorités de debconf sont élevées par défaut.
Choisir &quot;dialogue&quot;, puis &quot;intermédiaire&quot;. De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera &quot;raisonnable&quot;.

 root@facteur:~# dpkg-reconfigure debconf

[[Fichier:Snapshot124.jpeg|frameless|600px|Interface à utiliser: &quot;Dialogue&quot;]]
[[Fichier:Snapshot125.jpeg|frameless|600px|Ignorer les questions de priorité inférieures à &quot;intermédiaire&quot;]]

=== Définition du &quot;hostname&quot; ===

Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet.
Editez le fichier hosts pour ajouter votre nom complet de machine :

 root@facteur:~# nano /etc/hosts
&lt;pre&gt;
127.0.0.1       localhost
127.0.1.1       facteur.zehome.org      facteur
# &lt;= Ligne suivante à ajouter =&gt; #
192.168.3.114   facteur.zehome.org      facteur

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
&lt;/pre&gt;

 root@facteur:~# cat /etc/hostname
 facteur

 root@facteur:~# nano /etc/hostname
 facteur.zehome.org

 root@facteur:~# service hostname.sh start

Testez vos noms de machine et de domaine:

 root@facteur:~# hostname -s
 facteur
 root@facteur:~# hostname -d
 zehome.org
 root@facteur:~# hostname -f
 facteur.zehome.org

=== Modification de votre fichier interfaces ===

Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire.
Ajoutez aussi les DNS de votre FAI et le domaine de recherche.

 root@facteur:~# nano /etc/network/interfaces

&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

== Installation et configuration des programmes ==

=== Le DNS ===

Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.

L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum.
Pour de plus amples détails, voir ici: [[BIND|Bind]]

 root@facteur:~# apt-get install bind9

Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...

[[Fichier:Snapshot185.jpeg|frameless|600px|Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur &quot;man&quot;?]]


Modifiez votre fichier interfaces pour prendre en compte votre DNS local:

 root@facteur:~# nano /etc/network/interfaces
&lt;pre&gt;
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.3.114
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 191.168.3.255
        gateway 192.168.0.254
        dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5
        dns-search zehome.org
&lt;/pre&gt;

Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres).
Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.

 root@facteur:~# cat /etc/resolv.conf
&lt;pre&gt;
domain zehome.org
search zehome.org
nameserver 127.0.0.1
nameserver 192.168.0.3
nameserver 41.188.9.130
&lt;/pre&gt;

Un test rapide:
&lt;pre&gt;
root@facteur:~# nslookup
&gt; server
Default server: 127.0.0.1
Address: 127.0.0.1#53
Default server: 192.168.0.3
Address: 192.168.0.3#53
Default server: 41.188.9.130
Address: 41.188.9.130#53
&gt; google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 209.85.143.99
Name:	google.com
Address: 209.85.143.104
&gt; exit
&lt;/pre&gt;

Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:

 root@facteur:~# host -t MX zehome.org
 zehome.org mail is handled by 10 smtp.zehome.org.

=== Mysql ===

MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.

 root@facteur:~# apt-get install mysql-server
&lt;pre&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1
  mysql-server-core-5.1
Paquets suggérés :
  libterm-readkey-perl tinyca
Paquets recommandés :
  mailx libhtml-template-perl
Les NOUVEAUX paquets suivants seront installés :
  libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl
  libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1
  mysql-server-core-5.1
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 24,0 Mo dans les archives.
Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
...
&lt;/pre&gt;

N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql

[[Fichier:Snapshot158.jpeg|frameless|600px|Nouveau mot de passe superutilisateur de MySQL]]
[[Fichier:Snapshot159.jpeg|frameless|600px|Confirmation du mot de passe superutilisateur de MySQL]]

=== Suppression des programmes inutiles et installation de Postfix ===

Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:

Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:

&lt;code&gt;
Les paquets supplémentaires suivants seront installés : 
  postfix ssl-cert
&lt;/code&gt;

 root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

&lt;code&gt;
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light*
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 4 391 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o
(Lecture de la base de données... 36264 fichiers et répertoires déjà installés.)
Suppression de bsd-mailx ...
Purge des fichiers de configuration de bsd-mailx ...
Suppression de exim4 ...
Purge des fichiers de configuration de exim4 ...
Suppression de exim4-daemon-light ...
Stopping MTA: exim4_listener.
Purge des fichiers de configuration de exim4-daemon-light ...
Suppression de exim4-base ...
Purge des fichiers de configuration de exim4-base ...
Suppression de exim4-config ...
Purge des fichiers de configuration de exim4-config ...
dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente.
Traitement des actions différées (« triggers ») pour « man-db »...
&lt;/code&gt;

[[Fichier:Snapshot162.jpeg|frameless|600px|Veuillez choisir la configuration...]]
[[Fichier:Snapshot163.jpeg|frameless|600px|Configuration type du serveur de messagerie:]]
[[Fichier:Snapshot187.jpeg|frameless|600px|Nom de courrier:]]
[[Fichier:Snapshot188.jpeg|frameless|600px|Destinataire des courriels de &quot;root&quot; et &quot;postmaster&quot;:]]
[[Fichier:Snapshot189.jpeg|frameless|600px|Autres destinations pour lesquelles le courrier sera accepté:]]
[[Fichier:Snapshot169.jpeg|frameless|600px|Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels?]]

=== Postfix/Dovecot/Apache2/sasl/php ===

Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2

 root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin

''Les paquets installés:''
 Les NOUVEAUX paquets suivants vont être installés : 
   apache2-mpm-prefork{a} apache2-utils{a} apache2.2-bin{a} apache2.2-common{a} db4.8-util{a} 
   dovecot-common{a} dovecot-imapd dovecot-pop3d libapache2-mod-php5{a} libapr1{a} libaprutil1{a} 
   libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libc-client2007e{a} libonig2{a} libpq5{a} libqdbm14{a} 
   mlock{a} php5-common{a} php5-imap php5-mysql postfix-mysql sasl2-bin

[[Fichier:Snapshot186.jpeg|frameless|600px|Nom du fichier de sauvegarde de /etc/sasldb2 ?]]

Vous verrez passer ce message d'avertissement:
 update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).

Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :

 root@facteur:~# nano /etc/default/saslauthd

 root@facteur:~# service saslauthd start
 Starting SASL Authentication Daemon: saslauthd.

=== Activation du mode SSL de Apache ===

Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache.
C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.

Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
 root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du &quot;webmaster&quot;...)

Activons le mode SSL de Apache:
 root@facteur:~# a2enmod ssl
 Enabling module ssl.
 See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
 Run '/etc/init.d/apache2 restart' to activate new configuration!

Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
&lt;code&gt;
&lt;IfModule mod_ssl.c&gt;
...
    Listen 443
&lt;/IfModule&gt;
&lt;/code&gt;

Enfin, redémarrons Apache
 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).

Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:

&lt;code&gt;
It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
&lt;/code&gt;

=== Installation et configuration de Postfixadmin ===

==== Création de la base de donnée de Postfixadmin ====

Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface &quot;WebGui&quot; de Postfixadmin

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; GRANT SELECT ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'monmotdepasse2';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
&lt;/code&gt;

==== Postfixadmin ====

Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/

La dernière version (ce 16 mars 2012) est &quot;postfixadmin-2.3.5&quot; (1,5 Mio)

 root@facteur:~# wget http://tenet.dl.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-2.3.5/postfixadmin-2.3.5.tar.gz
 root@facteur:~# tar xzvf postfixadmin-2.3.5.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/postfixadmin-2.3.5/ /var/www/postfixadmin/
 root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/
 root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos
 root@facteur:~# sed -i 's/change-this-to-your.domain.tld/facteur.zehome.org/g' /var/www/postfixadmin/config.inc.php

 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
$CONF['configured'] = true;
...
$CONF['default_language'] = 'fr';
...
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'monmotdepasse';
$CONF['database_name'] = 'postfix';
...
$CONF['encrypt'] = 'md5crypt';
&lt;/code&gt;

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php

[[Fichier:Snapshot171.jpeg]]

Entrez le mot de passe du &quot;setup&quot; afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php

[[Fichier:Snapshot172.jpeg]]

 If you want to use the password you entered as setup password, edit config.inc.php and set
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

 root@serveur:~# nano /var/www/postfixadmin/config.inc.php

Et Remplacez:
 $CONF['setup_password'] = 'changeme';
Par:
 $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';

Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:

[[Fichier:Snapshot190.jpeg]]

Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :

[[Fichier:Snapshot191.jpeg|frameless|600px]]
[[Fichier:Snapshot175.jpeg|frameless|600px]]

Postfix admin est maintenant configuré et opérationnel.

=== Postfix ===

Passons à la configuration de postfix...

Nous créons tout d'abord notre utilisateur/groupe virtuel

Nous lui donnerons comme GID/UID le numéro 3000

 root@facteur:~# groupadd -g 3000 facteur
 root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur

Sauvegardons la configuration de postfix

 root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos
 root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos

Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
&lt;/code&gt;

 root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
&lt;code&gt;
hosts = 127.0.0.1
user = postfix
password = monmotdepasse2
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
&lt;/code&gt;

Configurons maintenant l'authentification par sasl

 root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
&lt;code&gt;
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
auxprop_plugin: rimap
&lt;/code&gt;

Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)

Sauvegarde avant modification...

 root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos

 root@facteur:~# nano /etc/default/saslauthd
&lt;code&gt;
START=yes
MECHANISMS=&quot;rimap&quot;
#imap server address
MECH_OPTIONS=&quot;localhost&quot;
OPTIONS=&quot;-c -m /var/spool/postfix/var/run/saslauthd -r&quot;
&lt;/code&gt;

Ajoutons postfix au groupe sasl:

 root@facteur:~# adduser postfix sasl
 Ajout de l'utilisateur « postfix » au groupe « sasl »...
 Ajout de l'utilisateur postfix au groupe sasl
 Fait.

Et redémarrons le service :

 root@facteur:~# service saslauthd restart
 Stopping SASL Authentication Daemon: saslauthd.
 Starting SASL Authentication Daemon: saslauthd.

Ajoutons ce qui suit au fichier /etc/postfix/main.cf:

 root@serveur:~# nano /etc/postfix/main.cf
&lt;code&gt;
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/facteur

virtual_transport = dovecot

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
&lt;/code&gt;

Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf

&lt;code&gt;
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
&lt;/code&gt;

==== Quelques réglages supplémentaires ====

Postfix est maintenant fonctionnel, mais il mérite encore votre attention.
Voici quelques options importantes à ajouter à votre main.cf :

 # Obtenir une alerte si les emails ne partent pas
 # Par défaut cette option est réglée à 4 heures, j'ai réduit cette durée:
 delay_warning_time = 1h

 # Ajoutez votre réseau local ici
 mynetworks = 10.9.8.0/22 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

 # Indiquer à Postfix de livrer à un destinataire à la fois
 # la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnerais pas sans cette option
 dovecot_destination_recipient_limit = 1

C'est tout pour l'instant pour postfix...

=== Dovecot ===

Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)

 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf

&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Sauvegardons le fichier de configuration de dovecot :

 root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos

Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:

La commande pour voir le fichier sans les lignes commentées:
 # grep -v -E &quot;#&quot; /etc/dovecot/dovecot.conf | grep -v -E &quot;^$&quot;

 root@serveur:~# cat /etc/dovecot/dovecot.conf
&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }

  user = root
}

dict {
}

plugin {
}
&lt;/code&gt;

Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :

nano /etc/dovecot/dovecot.conf

&lt;code&gt;
## Dovecot configuration file

protocols = imap imaps pop3 pop3s
log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;
mail_privileged_group = mail

disable_plaintext_auth = no
mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes

protocol imap {
}
protocol pop3 {
}
protocol managesieve {
}
protocol lda {
  postmaster_address = admin@zehome.org
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
        userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
        passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
        }
 socket listen {
  master {
  path = /var/run/dovecot/auth-master
  mode = 0600
  user = facteur
  }
  client {
  path = /var/spool/postfix/private/auth
  mode = 0660
  user = postfix
  group = postfix
  }
 }
}
dict {
}
plugin {
}
&lt;/code&gt;

Redémarrons les services :

&lt;code&gt;
root@facteur:~# service dovecot restart
Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
root@facteur:~# service postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

=== Premiers essais ===

A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie

Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:

[[Fichier:Snapshot176.jpeg]]

[[Fichier:Snapshot177.jpeg]]

==== Test de l'ensemble de la chaine ====

Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante:
Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.

Il faudra installer mailx pour pouvoir faire des essais d'envois:

 root@facteur:~# apt-get install mailutils

 root@facteur:~# echo test | mail -s &quot;Premier test SMTP&quot; essai@zehome.org &amp;&amp; tail -f /var/log/mail.info 
&lt;code&gt;
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=&lt;root&gt;
Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=&lt;root@facteur.zehome.org&gt;, size=314, nrcpt=1 (queue active)
Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=&lt;20110410121425.1B63A6C64D@facteur.zehome.org&gt;: saved mail to INBOX
Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=&lt;essai@zehome.org&gt;, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
&lt;/code&gt;

CTRL + C pour sortir.

==== Test du SMTP AUTH ====

La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai\@essai.org&quot;);'
 ZXNzYWkub3Jn

 $ perl -MMIME::Base64 -e 'print encode_base64(&quot;essai&quot;);'
 ZXNzYWk=

Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:

 telnet 192.168.3.114 25
 Trying 192.168.3.114...
 Connected to 192.168.3.114.
 Escape character is '^]'.
 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)

Saluons le serveur SMTP...

 EHLO facteur.zehome.org

Réponse...

 250-facteur.zehome.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH PLAIN LOGIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Nous lui faisons savoir que nous voulons nous authentifier:

 AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
 334 UGFzc3dvcmQ6
 ZXNzYWk=
 235 2.7.0 Authentication successful

Maintenant, petit test d'envoi de mail :

 mail from:essai@essai.org
 250 2.1.0 Ok
 rcpt to:essai@essai.org
 250 2.1.5 Ok
 data
 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
 Test
 .
 250 2.0.0 Ok: queued as E172752683
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.

Avant l'envoi du premier mail :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  .profile

Après :

 root@facteur:~# ls -a /home/facteur/
 .  ..  .bash_logout  .bashrc  essai.org  .profile

Le répertoire est bien créé - Un répertoire par domaine sera créé, les utilisateurs des domaines seront rangés dans ces répertoires.

Les logs dans /var/log/mail.log:

&lt;code&gt;
Apr  6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=&lt;&gt;
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=&lt;essai@essai.org&gt;, size=201, nrcpt=1 (queue active)
Apr  6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX
Apr  6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed
Apr  6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

==== Test de la connexion IMAP avec telnet====

&lt;code&gt;
$ telnet 192.168.3.114 143
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai        
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 3 EXISTS
* 3 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1302078677] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
Connection closed by foreign host.
&lt;/code&gt;


=== Install Amavisd-new, SpamAssassin, And Clamav ===

La commande &quot;tout en un&quot;...

&lt;pre style=&quot;width:auto;overflow:auto;&quot;&gt;
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl p7zip unrar-free
&lt;/pre&gt;

[[Fichier:Snapshot142.jpeg|frameless|600px]]
[[Fichier:Snapshot178.jpeg|frameless|600px]]
[[Fichier:Snapshot179.jpeg|frameless|600px]]
[[Fichier:Snapshot180.jpeg|frameless|600px]]

==== Réglages de Dovecot Postfix et Amavis ====

Il faut maintenant organiser le &quot;voyage&quot; des mails entre Postfix/Amavis et Dovecot

Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus.
Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.

Nous ajoutons donc ce qui suit à la fin du fichier master.cf :

 root@facteur:~# nano /etc/postfix/master.cf
&lt;code&gt;
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1
&lt;/code&gt;

Ajoutez avec un éditeur les deux lignes suivantes à la fin du fichier /etc/postfix/main.cf
 content_filter = amavis:[127.0.0.1]:10024
 receive_override_options = no_address_mappings

'''Ou''' tapez les deux commandes suivantes dans la console:
 root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
 root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'

Rien à faire du côté de Dovecot, nous l'avons déjà configuré.

Activons maintenant les filtres (il suffit de décommenter 4 lignes):

 root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
&lt;code&gt;
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Please note, that anti-spam checking is DISABLED by
# default.
# If You wish to enable it, please uncomment the following lines:


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return
&lt;/code&gt;

Nous allons maintenant configurer la quarantaine :

 root@facteur:~# nano /etc/amavis/conf.d/50-user
&lt;code&gt;
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory
# $spam_quarantine_to = &quot;admin\@$mydomain&quot;; # Send Spam to Adminstrator
# $spam_quarantine_to = undef;                   # Do nothing with Spam
$final_spam_destiny = D_DISCARD;
$spam_admin = &quot;admin\@$mydomain&quot;;          # Where to send Notification

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
&lt;/code&gt;

Création du répertoire qui va accueillir les mails infectés:

 root@facteur:~# mkdir /var/spool/virusmails
 root@facteur:~# chown amavis:amavis /var/spool/virusmails

Mise à jour des règles de Spamassassin

 root@facteur:~# sa-update -D

Activation du &quot;daemon&quot; de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:

 root@facteur:~# nano /etc/default/spamassassin
&lt;code&gt;
# Change to one to enable spamd
ENABLED=1
...
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1
&lt;/code&gt;

 root@facteur:~# service spamassassin start
 Starting SpamAssassin Mail Filter Daemon: spamd.

 root@facteur:~# adduser clamav amavis
 Ajout de l'utilisateur « clamav » au groupe « amavis »...
 Ajout de l'utilisateur clamav au groupe amavis
 Fait.

 root@facteur:~# service amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: amavisd-new.

 root@facteur:~# service clamav-daemon restart
 Stopping ClamAV daemon: clamd.
 Starting ClamAV daemon: clamd .

 root@facteur:~# service postfix restart
 Stopping Postfix Mail Transport Agent: postfix.
 Starting Postfix Mail Transport Agent: postfix.

==== Test de Spamassassin et Clamav ====

===== Test Spamassassin =====

Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt
Il suffit de coller cette ligne dans un mail et de l'envoyer:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Il sera détecté comme Spam:

&lt;code&gt;
telnet 192.168.3.114 25
Trying 192.168.3.114...
Connected to 192.168.3.114.
Escape character is '^]'.
220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn
334 UGFzc3dvcmQ6
ZXNzYWk=
235 2.7.0 Authentication successful
mail from:essai@essai.org
250 2.1.0 Ok
rcpt to:admin@zehome.org
250 2.1.5 Ok
data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
Test Spamassassin 
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as F19436C405
quit
221 2.0.0 Bye
Connection closed by foreign host.
&lt;/code&gt;

Et effectivement... &quot;facteur amavis[7057]: (07057-01) Blocked SPAM&quot;

&lt;code&gt;
Apr  6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2]
Apr  6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=&lt;&gt;
Apr  6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=&lt;essai@essai.org&gt;, size=281, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1]
Apr  6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=&lt;&gt;, size=2947, nrcpt=1 (queue active)
Apr  6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms
Apr  6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed
Apr  6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=&lt;SSxt4KviusO2QF@facteur.zehome.org&gt;: saved mail to INBOX
Apr  6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=&lt;essai@essai.org&gt;, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed
Apr  6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

===== Test de l'anti-virus =====

Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Effectivement le mail est mis en quarantaine: &quot;Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN&quot;

&lt;code&gt;
Apr  6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org
Apr  6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=&lt;&gt;
Apr  6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=&lt;essai@essai.org&gt;, size=275, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1]
Apr  6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=&lt;20110406161940.81CB86C417@facteur.zehome.org&gt;
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=&lt;essai@essai.org&gt;, size=956, nrcpt=1 (queue active)
Apr  6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] &lt;essai@essai.org&gt; -&gt; &lt;admin@zehome.org&gt;, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms
Apr  6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=&lt;admin@zehome.org&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed
Apr  6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=&lt;admin@zehome.org&gt;, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF)
Apr  6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed
Apr  6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
&lt;/code&gt;

Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)

=== Installation de Postgrey ===

Postgrey, qu'est-ce que c'est?
Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...

Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.

Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.

 root@facteur:~# apt-get install postgrey

 root@facteur:~# nano /etc/default/postgrey
&lt;code&gt;
 POSTGREY_OPTS=&quot;--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients&quot;
&lt;/code&gt;
 root@facteur:~# nano /etc/postfix/main.cf
&lt;code&gt;
...
smtpd_recipient_restrictions =
...
  reject_unauth_pipelining,
  check_policy_service inet:127.0.0.1:10023,
  reject_invalid_hostname
&lt;/code&gt;

 root@facteur:~# service postgrey restart
 root@facteur:~# service postfix restart
&lt;code&gt;
 root@facteur:~# netstat -tulpen | grep LISTEN
...
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      0          7338        2271/postgrey.pid -
...
&lt;/code&gt;

Vous disposez de deux fichiers dans lesquels vous pouvez mettre en &quot;liste blanche&quot; des domaines &quot;amis&quot; ou des adresses de destination:
&lt;code&gt;
root@facteur:~# vdir /etc/postgrey/
total 12
-rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients
-rw-r--r-- 1 root root  189 12 janv. 00:15 whitelist_recipients
&lt;/code&gt;

== Le Webmail ==

Je vous propose deux choix de Webmail : 

#Squirrelmail: Simplissime, léger et possédant de multiples plugins;
#Roundcube: Plus lourd mais plus complet;

=== Squirrelmail ===

Deux méthodes : Méthode via apt et méthode via le paquet source.

==== Méthode Debian ====

 root@facteur:~# apt-get install squirrelmail
 root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Configurez Squirrelmail:

 root@facteur:~# /usr/sbin/squirrelmail-configure

&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créez un domaine avec postfixadmin (si ce n'est pas déjà fait).
Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

Testez avec cette adresse:

http://adresse_IP_du_serveur/squirrelmail

[[Fichier:Snapshot192.jpeg]]

==== Méthode avec les sources ====

La méthode présentée ici est ce que l'on appelle &quot;quick and durty&quot; - Je ne m'attache pas aux locales et plugins intéressants pas exemple.
Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière &quot;snapshot&quot;). Liste [http://squirrelmail.org/download.php ICI]

 root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/
 root@facteur:~# rmdir /var/www/squirrelmail.stable/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/

Configuration:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 2 (Server Settings)
Command &gt;&gt; A (Update IMAP Settings)
Command &gt;&gt; 8 (Server software)
[other]: dovecot
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Créons les répertoires qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:

 root@facteur:~# mkdir /var/local/squirrelmail
 root@facteur:~# mkdir /var/local/squirrelmail/data
 root@facteur:~# mkdir /var/local/squirrelmail/attach
 root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail

 root@facteur:~# service apache2 restart
 Restarting web server: apache2 ... waiting .

[[Fichier:Snapshot194.jpeg]]

=== Roundcube ===

Il est conseillé (mais pas indispensable) d'installer préalablement les codes et modules suivants:

 root@facteur:~# apt-get install libiconv-hook1 php5-mcrypt php5-intl

Téléchargement des sources [http://roundcube.net/download ICI] :

 root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/
 root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail
 root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/

==== php.ini ====

Deux petites modification à faire:

===== suhosin =====

Si le paquet php5-suhosin est installé, il faut modifier la configuration du php.ini d'apache2 à cause d'une incompatibilité avec roundcube:

Modifiez le php.ini de la façon suivante

Ajoutez à la fin du fichier /etc/php5/apache2/php.ini;
 suhosin.session.encrypt = Off
'''Ou''' passez la commande suivante
 echo 'suhosin.session.encrypt = Off' &gt;&gt; /etc/php5/apache2/php.ini

'''Ou''' Modifiez le fichier suhosin.ini
Remplacez cette valeur:
 ;suhosin.session.encrypt = on
Par
 suhosin.session.encrypt = off

===== date.timezone =====

Profitons-en pour régler le fuseau horaire:
Toujours dans le fichier /etc/php5/php.ini, cherchez la variable date.timezone, dé commentez, et complétez:

&lt;pre&gt;
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = 'Indian/Antananarivo'
;date.timezone = 'Europe/Paris'
&lt;/pre&gt;

==== Mysql ====

Roundcube à besoin d'une base de donnée, il faut maintenant la créer :

 root@facteur:~# mysql -u root -p
 Enter password: 
&lt;code&gt;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database roundbase;
Query OK, 1 row affected (0.00 sec)

mysql&gt; GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql&gt; quit
Bye
&lt;/code&gt;

==== Installation ====

Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/

Laissez-vous guider, jusqu’à la page de création de la configuration.

Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les &quot;locales&quot;.

[[Fichier:Snapshot200.jpeg]]

[[Fichier:Snapshot197.jpeg]]

[[Fichier:Snapshot206.jpeg]]

[[Fichier:Snapshot199.jpeg]]

L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/

Cliquez sur &quot;continuer&quot; (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.

Initialisez la base de données :

[[Fichier:Snapshot201.jpeg]]

[[Fichier:Snapshot202.jpeg]]

Quand tous les tests sont &quot;Ok&quot;, vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/

 root@facteur:~# rm -r /var/www/roundcubemail/installer


[[Fichier:Snapshot207.jpeg]]

==== Un alias pour Apache2 ====

Ajout d'un alias 'webmail' dans Apache. Ainsi Roundcube sera accessible depuis n'importe quel domaine hébergé sur le serveur via l'adresse http://domaine.tld/webmail/.

Editez le fichier apache2.conf
 root@facteur:~# nano /etc/apache2/apache2.conf
et ajoutez ceci à la fin du fichier :
&lt;code&gt;
Alias /webmail &quot;/var/www/roudcubemail&quot;

&lt;Directory /var/www/roundcubemail/config&gt;
        Options -FollowSymLinks
        AllowOverride None
&lt;/Directory&gt;
 
&lt;Directory /var/www/roundcubemail/temp&gt;
        Options -FollowSymLinks
        AllowOverride None
        Order allow,deny
        Deny from all
&lt;/Directory&gt;
 
&lt;Directory /var/www/roundcubemail/logs&gt;
        Options -FollowSymLinks
        AllowOverride None
        Order allow,deny
        Deny from all
&lt;/Directory&gt;
&lt;/code&gt;

Puis rechargez apache :
 root@facteur:~# service apache2 reload

== Activation du SMTPS ==

La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)

Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter)
ceci :

&lt;code&gt;
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
&lt;/code&gt;

Modifions aussi le fichier /etc/postfix/main.cf, on y ajoute 
&lt;code&gt;
# SASL parameters
# ---------------------------------

# Use Dovecot to authenticate.
smtpd_sasl_type = dovecot
# Referring to /var/spool/postfix/private/auth
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain =
smtpd_sasl_authenticated_header = yes

# TLS parameters
# ---------------------------------

# Replace this with your SSL certificate path if you are using one.
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
# The snakeoil self-signed certificate has no need for a CA file. But
# if you are using your own SSL certificate, then you probably have
# a CA certificate bundle from your provider. The path to that goes
# here.
#smtpd_tls_CAfile=/path/to/ca/file
smtpd_use_tls=yes
smtp_tls_security_level = may
smtpd_tls_security_level = may
#smtpd_tls_auth_only = no
smtp_tls_note_starttls_offer = yes
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
#smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
#smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

&lt;/code&gt;

 root@facteur:~# service postfix restart

Et vérifions que le port 465 est bien ouvert:

 root@facteur:~# netstat -laputen | grep master
 tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          14857       3757/master     
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          14852       3757/master     
 tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      108        3408        828/amavisd (master
 tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      0          14986       3757/master

Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)

Sur Squirrelmail:

&lt;code&gt;
SMTP Settings
-------------
4.   SMTP Server           : localhost
5.   SMTP Port             : 465
6.   POP before SMTP       : false
7.   SMTP Authentication   : none
8.   Secure SMTP (TLS)     : true
9.   Header encryption key :
&lt;/code&gt;

Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)

&lt;code&gt;
// ----------------------------------
// SMTP
// ----------------------------------
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_auth_cid'] = null;
$rcmail_config['smtp_auth_pw'] = null;
&lt;/code&gt;

== Plus loin avec Dovecot ==

=== Managesieve ===

Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2

Ajoutez le dépôt suivant (valable en i386 et amd64) :

 root@facteur:~# nano /etc/apt/sources.list

 deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main

 root@facteur:~# apt-get update

Réglez le problème de clef gpg...

 root@facteur:~# apt-get dist-upgrade
 Lecture des listes de paquets... Fait
 Construction de l'arbre des dépendances       
 Lecture des informations d'état... Fait
 Calcul de la mise à jour... Fait
 Les paquets suivants seront mis à jour :
   dovecot-common dovecot-imapd dovecot-pop3d
 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 4 102 ko dans les archives.
 Après cette opération, 7 954 ko d'espace disque seront libérés.
 Souhaitez-vous continuer [O/n] ?

Conservez votre configuration...
[[Fichier:Snapshot209.jpeg]]

Modifiez la configuration de Dovecot pour activer Managesieve

 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
protocols = imap imaps managesieve pop3 pop3s
...
protocol lda {
...
  mail_plugins = sieve quota
}
protocol managesieve {
  listen = *:4190
  login_executable = /usr/lib/dovecot/managesieve-login
  mail_executable = /usr/lib/dovecot/managesieve

}
...
plugin {
  ## Sieve
  sieve_dir = /home/facteur/%d/%n/sieve
  sieve = /home/facteur/%d/%n/.dovecot.sieve
}
&lt;/code&gt;

 root@facteur:~# service dovecot restart

==== Squirrelmail : ajouter le plugin &quot;avelsieve&quot; ====

Téléchargement [http://squirrelmail.org/plugin_view.php?id=73 ICI]

 root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
 root@facteur:~# cd /var/www/squirrelmail/
 root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php

Téléchargez aussi la librairie java-script (même page)
Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...

 root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/
 root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins

Activez les plugins:

 root@facteur:~# /var/www/squirrelmail/configure
&lt;code&gt;
Command &gt;&gt; 8 (Plugins)
Command &gt;&gt; ? (avelsieve) + (javascript_libs)
Command &gt;&gt; s
Command &gt;&gt; q
&lt;/code&gt;

Vous avez maintenant accès à une nouvelle option: Filtres!

[[Fichier:Snapshot210.jpeg]]

Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :

&lt;code&gt;
Return-Path: &lt;MAILER-DAEMON&gt;
Delivered-To: essai1@essai.org
Received: from localhost (localhost [127.0.0.1])
    	by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A
    	for &lt;essai1@essai.org&gt;; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org
Received: from facteur.zehome.org ([127.0.0.1])
    	by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024)
    	with ESMTP id 8L-CWt6ZrQIC for &lt;essai1@essai.org&gt;;
    	Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
Received: by facteur.zehome.org (Postfix, from userid 3000)
    	id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT)
X-Sieve: Dovecot Sieve 0.1.18
Message-ID: &lt;dovecot-sieve-1302194513-52514-0@facteur.zehome.org&gt;
Date: Thu, 07 Apr 2011 19:41:53 +0300
From: &lt;essai@essai.org&gt;
To: &lt;essai1@essai.org&gt;
Subject: En Vacances!
In-Reply-To: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
References: &lt;31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114&gt;
Auto-Submitted: auto-replied (vacation)
Precedence: bulk
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
&lt;/code&gt;

==== Roundcube : ajouter le plugin &quot;managesieve&quot; ====

Le plugin est déjà présent dans Roundcube, il suffit de l'activer :

 root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php

Vers la ligne 324...

 // ----------------------------------
 // PLUGINS
 // ----------------------------------
 
 // List of active plugins (in plugins/ directory)
 $rcmail_config['plugins'] = array('managesieve');

Et de le configurer:

 root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php

Remplacez :

 $rcmail_config['managesieve_port'] = 2000;

Par :

 $rcmail_config['managesieve_port'] = 4190;

Vous avez maintenant accès à la page de configuration des filtres :

[[Fichier:Snapshot211.jpeg]]

=== [[Installer_le_SSL_sur_Dovecot|Installer le SSL sur Dovecot]] ===

== Plus loin avec Roundcube ==

=== [[Roundcube_%2B_Vacation_-_Notification_d%27absence|Roundcube + Vacation - Notification d'absence]] ===

=== [[Utiliser_roundcube_en_https|Forcer l'utilisation de roundcube en https]] ===

== Plus loin avec Postfixadmin ==

=== [[Fetchmail_sur_postfixadmin]] ===

== Dovecot - Mise en place de quotas ==

Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!


Modification de la configuration de Dovecot:
 root@facteur:~# nano /etc/dovecot/dovecot.conf
&lt;code&gt;
...
protocol imap {
       mail_plugins = quota imap_quota
}
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_plugins = quota
}
...
protocol lda {
...
  mail_plugins = sieve quota
}
...
dict {
  quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
...
plugin {
...
  ## quota
  quota = dict:%u::proxy::quotadict
  quota_rule = *:storage=10M:messages=1000
  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u
  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u
}
&lt;/code&gt;

Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
 root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
&lt;code&gt;
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
&lt;/code&gt;

Modification de la requête à la base Mysql:
 root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
&lt;code&gt;
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=Perso2
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbox WHERE username = '%u' AND active='1'
password_query = SELECT password FROM mailbox WHERE username = '%u'
&lt;/code&gt;

Prise en charge des quotas dans postfixadmin:
 root@facteur:~# nano /var/www/postfixadmin/config.inc.php
&lt;code&gt;
...
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'YES';
...
// Optional:
// Show used quotas from Dovecot dictionary backend in virtual
// mailbox listing.
// See: DOCUMENTATION/DOVECOT.txt
//      http://wiki.dovecot.org/Quota/Dict
//
$CONF['used_quotas'] = 'YES';

// if you use dovecot &gt;= 1.2, set this to yes.
// Note about dovecot config: table &quot;quota&quot; is for 1.0 &amp; 1.1, table &quot;quota2&quot; is for dovecot 1.2 and newer
$CONF['new_quota_table'] = 'YES';
&lt;/code&gt;

Création du script chargé d'envoyer les alertes:
 root@facteur:~# nano /usr/local/bin/quota-warning.sh
&lt;code&gt;
#!/bin/sh

PERCENT=$1
FROM=&quot;admin@isalo.org&quot;
qwf=&quot;/tmp/quota.warning.$$&quot;

echo &quot;From: $FROM
To: $USER
To: admin@isalo.org
Subject: Votre boite mail est pleine à $PERCENT%
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur&quot; &gt;&gt; $qwf

cat $qwf | /usr/sbin/sendmail -f $FROM &quot;$USER&quot;
rm -f $qwf

exit 0
&lt;/code&gt;
 root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh
 root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh

Redémarrage de Dovecot
 root@facteur:~# service dovecot restart

=== Prise en charge dans Roundcube ===

Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).

[[Fichier:Snapshot212.jpeg]]

=== Prise en charge dans Squirrelmail ===

Il faut installer 2 plugins :

[http://squirrelmail.org/plugin_view.php?id=237 Check Quota]
et
[http://squirrelmail.org/plugin_view.php?id=152 Compatibility]

Procédez de la même façon que vous avez installé le plugin avelsieve.

Pour le plugin &quot;compatibility&quot; rien d'autre à faire.
Pour le plugin &quot;Check Quota&quot;:

 root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php
 root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
&lt;code&gt;
*******************************
 * Quota Configuration Options *
 *******************************/
...

$settings['quota_type'] = 1;
&lt;/code&gt;

Activez les deux plugins :
 root@facteur:~# /var/www/squirrelmail/configure

Visualisation du quota en haut à gauche :
[[Fichier:Snapshot213.jpeg]]

== Lien externes ==

* {{fr}} [http://x.guimard.free.fr/postfix/ Documentation très complète de Postfix en français]

[[Utilisateur:Lol|Lol]] 8 avril 2011 à 11:06 (CDT)
[[Catégorie:Serveurs]]</text>
      <sha1>icatuclw60xusgsc4sklzsktdybsy92</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Installation wheezy chroot debootstrap</title>
    <ns>0</ns>
    <id>1255</id>
    <revision>
      <id>5185</id>
      <timestamp>2013-05-15T14:15:35Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>Page créée avec « Installation d'une Wheezy avec debootstrap et chroot  L'objectif est d'installer une Wheezy (sur une nouvelle partition) à partir d'une autre Debian (ici une Sid, mais ce... »</comment>
      <text xml:space="preserve" bytes="13906">Installation d'une Wheezy avec debootstrap et chroot

L'objectif est d'installer une Wheezy (sur une nouvelle partition) à partir d'une autre Debian (ici une Sid, mais cette méthode fonctionnera aussi bien avec une autre version), sans avoir besoin de redémarrer ma machine une seule fois…

Avantage : rester dans mon environnement de travail pendant toute l'installation…

Parti-pris : utilisation de nano comme éditeur

== Pré-requis ==

Pré-requis : Installer debootstrap (chroot se trouve dans le paquet coreutils normalement déjà installé dans votre Debian).

 root@HAL9000:~# apt-get install debootstrap

Formatage de la partition qui va recevoir la Wheezy :

J'ai choisi de formater en ext4, vous pouvez choisir le système de fichiers de votre choix bien sûr.

La partition cible (ici /dev/sdd1) devra aussi être adaptée à votre configuration.

 root@HAL9000:~# mkfs -V -t ext4 /dev/sdd1

Création du répertoire qui va recevoir le système et montage de la partition fraîchement formatée dans ce nouveau répertoire.

J'ai choisi /var/chroot/wheezy_amd64_sdd1.

Un petit « ls » à la fin pour vérifier que la partition est bien montée.

 root@HAL9000:~# mkdir -p /var/chroot/wheezy_amd64_sdd1
 root@HAL9000:~# mount /dev/sdd1 /var/chroot/wheezy_amd64_sdd1
 root@HAL9000:~# cd /var/chroot/wheezy_amd64_sdd1
 root@Hal9000:/var/chroot/wheezy_amd64_sdd1# ls
 lost+found

== Installation avec debootstrap ==

Installation de la Wheezy avec debootstrap (j'ai choisi une Wheezy amd64, rien ne vous empêche de choisir une Squeeze i386 ou bien même une Sid…)

Astuces :

_Vous pouvez utiliser un dépôt local pour cette installation. Détails ici [https://www.debian-fr.org/creer-un-depot-local-complet-pour-son-reseau-t23065.html sur le forum.debian-fr.org]

_Si vous avez une mauvaise connexion, mais disposez d'un CD d'installation, vous pouvez remplacer l'adresse du dépôt par file:/cdrom/debian/

_En ajoutant l'option --variant=minbase à debootstrap, vous installerez uniquement le strict minimum de paquets (pas d'aptitude, de vim, d'exim4, etc.).

 root@HAL9000:/var/chroot/wheezy_amd64_sdd1# debootstrap --arch amd64 wheezy /var/chroot/wheezy_amd64_sdd1/ http://http.debian.net/debian/
 I: Retrieving Release
 I: Retrieving Release.gpg
 I: Checking Release signature
 I: Valid Release signature (key id 9FED2BCBDCD29CDF762678CBAED4B06F473041FA)
 I: Retrieving Packages
 I: Validating Packages
 I: Resolving dependencies of required packages...
 I: Resolving dependencies of base packages...
 I: Found additional required dependencies: insserv libbz2-1.0 libdb5.1 libsemanage-common libsemanage1 libslang2 libustr-1.0-1 
 I: Found additional base dependencies: libept1.4.12 libgcrypt11 libgnutls26 libgpg-error0 libidn11 libnfnetlink0 libp11-kit0 libsqlite3-0 libtasn1-3 libxapian22 
 I: Checking component main on http://http.debian.net/debian...
 I: Retrieving/Validating un tas de paquets
 I: Chosen extractor for .deb packages: dpkg-deb
 I: Extracting un tas de paquets...
 I: Installing core packages...
 I: Unpacking required packages...
 I: Unpacking un tas de paquets...
 I: Configuring required packages...
 I: Configuring un tas de paquets...
 I: Unpacking the base system...
 I: Unpacking un tas de paquets...
 I: Configuring the base system...
 I: Configuring un tas de paquets...
 I: Base system installed successfully.

Si tout s'est bien passé, un &quot;ls&quot; vous retournera la toute nouvelle arborescence :
 root@Janus:/var/chroot/wheezy_amd64_sdd1# ls
 bin boot dev etc home lib lib64 lost+found media mnt opt proc root run sbin selinux srv sys tmp usr var

À ce niveau, votre Wheezy est installée, mais elle n'est pas pleinement fonctionnelle ni « autonome ». Vous ne pourrez pas démarrer dessus…

== Préparation du chroot ==

Il faut maintenant préparer le chroot. Trois répertoires sont importants pour que cela fonctionne convenablement : /tmp, /dev et /proc.

Vous devez éditer votre fstab pour que ces répertoires soient montés (et liés - « bind/rbind ») automatiquement dans votre répertoire chroot.

 root@HAL9000:/var/chroot/wheezy_amd64_sdd1# nano /etc/fstab 

Ajoutez-y :

 ## chroot Wheezy amd64 sdd1
 /tmp  /var/chroot/wheezy_amd64_sdd1/tmp  none bind  0 0
 /dev  /var/chroot/wheezy_amd64_sdd1/dev  none rbind 0 0
 /proc /var/chroot/wheezy_amd64_sdd1/proc none bind  0 0

Ctrl+O (enregistrer) Ctrl+X (Quitter)

 root@HAL9000:/var/chroot/wheezy_amd64_sdd1# mount -a

(cette commande monte tout ce qui est dans votre fstab)

Pour « normaliser les comptes et groupes » de votre nouvelle Wheezy (que les utilisateurs et groupes aient les mêmes identifiants dans votre système &quot;hôte&quot; et dans votre chroot) tapez les commandes suivantes :

 root@HAL9000:/var/chroot/wheezy_amd64_sdd1# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/passwd &gt;&gt; /var/chroot/wheezy_amd64_sdd1/etc/passwd
 root@HAL9000:/var/chroot/wheezy_amd64_sdd1# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/group &gt;&gt; /var/chroot/wheezy_amd64_sdd1/etc/group

Vous allez maintenant entrer dans votre environnement chroot (tadaa !) :

 root@HAL9000:/var/chroot/wheezy_amd64_sdd1# chroot /var/chroot/wheezy_amd64_sdd1
 root@HAL9000:/#

== Finalisation de l'installation et réglages de la Wheezy ==

Vous êtes maintenant dans votre nouvelle Wheezy mais ce n'est pas terminé.

Votre système est incomplet, il est toujours impossible de démarrer dessus…

=== &quot;locales&quot; ===

Nous allons maintenant mettre en français (ou ce que vous voulez…), configurer la localisation, et surtout… régler l'heure. L'heure est très importante. Si vous démarrez sur ce nouveau système avec une mauvaise heure (dans le futur par rapport au système sur lequel vous êtes), le prochain démarrage vous laissera un goût amer, vous serez obligé de faire un fsck…

En effet, au montage des disques le système inscrit l'heure (au tout début du disque). Si cette heure est « dans le futur », au démarrage suivant (sur une autre installation), il ne voudra pas démarrer et exigera une vérification de disque…

 root@HAL9000:/# apt-get update
 root@HAL9000:/# apt-get install locales
 root@HAL9000:/# dpkg-reconfigure locales
 root@HAL9000:/# dpkg-reconfigure tzdata
 root@HAL9000:/# hwclock --systohc --utc
 root@HAL9000:/# apt-get install ntpdate
 root@HAL9000:/# ntpdate ntp.metas.ch

=== Le sources.list ===

Nous allons maintenant compléter nos dépôts

J'ai ajouté le dépôt de rétroportages (backports) pour avoir accès à un noyau récent, vous n'êtes bien sûr pas obligé de le faire.

 root@HAL9000:/# nano /etc/apt/sources.list
 deb http://http.debian.net/debian wheezy main
 
 ## Mises-à-jour de sécurité
 deb http://security.debian.org/ wheezy/updates main
 deb http://http.debian.net/debian/ wheezy-updates main
 
 ## Rétroportages
 deb http://http.debian.net/debian/ wheezy-backports main

Mettons à jour :

 root@HAL9000:/# apt-get update

=== Clavier === 

Configurons maintenant le clavier

 root@HAL9000:/# apt-get install console-data
 root@HAL9000:/# dpkg-reconfigure -plow console-data
 (option choisir un codage clavier dans la liste complète) - pc / azerty / French / Same as X11 (latin9) / Standard
 Looking for keymap to install:
 fr-latin9 (cette fois-ci c'est bon)
 
=== hostname et fstab ===

 root@HAL9000:/# exit

Nous sommes sortis du chroot, quelques fichiers à récupérer… Pour avoir un bon hostname, le réseau, le montage correct des disques…

 root@HAL9000:/var/chroot/wheezy_amd64_sdd1# cp /etc/hosts /etc/hostname /etc/resolv.conf /var/chroot/wheezy_amd64_sdd1/etc/
 root@HAL9000:/var/chroot/wheezy_amd64_sdd1# cp /etc/network/interfaces /var/chroot/wheezy_amd64_sdd1/etc/network/
 root@HAL9000:/var/chroot/wheezy_amd64_sdd1# cp /etc/fstab /var/chroot/wheezy_amd64_sdd1/etc/
 root@HAL9000:/var/chroot/wheezy_amd64_sdd1# chroot /var/chroot/wheezy_amd64_sdd1/

+ Réglage du fsab

 root@HAL9000:/# blkid (cette commande permet de récupérer le UUID de vos disques pour votre nouveau fstab…
 Ne vous faites pas prendre, le formatage change l'UUID…)
 /dev/sda1: UUID=&quot;f6fb3a64-0773-4cfe-86f9-df372b5c6bda&quot; TYPE=&quot;ext4&quot; 
 /dev/sda5: UUID=&quot;1b9b21b5-6963-4851-a30a-318314194d2a&quot; TYPE=&quot;ext4&quot; 
 /dev/sda6: UUID=&quot;47bfcfed-42b4-4a80-a93d-69ff4dd36109&quot; TYPE=&quot;swap&quot; 
 /dev/sdb1: UUID=&quot;3f332488-3a43-46b3-b20f-4373e9467dfe&quot; TYPE=&quot;ext4&quot; 
 /dev/sdc1: UUID=&quot;3a503ab3-af43-414b-9249-300203538b2d&quot; TYPE=&quot;ext4&quot; 
 /dev/sdd1: UUID=&quot;2edb9c6e-d531-4653-a653-6c66d0607f5c&quot; TYPE=&quot;ext4&quot;

 root@HAL9000:/# nano /etc/fstab (à rectifier en fonction de votre configuration)
 proc                                      /proc            proc        defaults          0 0
 UUID=2edb9c6e-d531-4653-a653-6c66d0607f5c /                ext4        errors=remount-ro 0 1
 UUID=3f332488-3a43-46b3-b20f-4373e9467dfe /home            ext4        defaults          0 2
 UUID=47bfcfed-42b4-4a80-a93d-69ff4dd36109 none             swap        sw                0 0
 /dev/sr0                                  /media/cdrom0    udf,iso9660 user,noauto       0 0

Création des répertoire de montage des disques de la nouvelle machine : (en fonction de votre configuration et de vos choix…)

 root@HAL9000:/# mkdir /media/cdrom0

=== L'environnement graphique ===

Maintenant ? Un environnement graphique ! (J'ai choisi Xfce, vous faites comme vous voulez… Gnome, Kde, aucun…)

{{Avertissement|texte='''N'oubliez pas d'installer aussi un gestionnaire de connexion !'''}}

 root@HAL9000:/# apt-get install xfce4 slim

=== Le noyau et Grub2 ===

Installons un noyau… Ce serait bête d'oublier !

 root@HAL9000:/# apt-cache search linux-image (choisissez dans la liste qu'il vous propose,
 celui que je cite n'est qu'un exemple que vous n'êtes pas forcés de suivre…)
 (…)
 linux-image-3.2.0-4-amd64 - Linux 3.2 for 64-bit PCs
 (…)

Ici il faut récupérer votre kernel-img.conf qui permette de convenablement lancer initramfs à l'installation du nouveau noyau dans le chroot.

Ce fichier n'existe pas dans le système créé par debootstrap.

La ligne intéressante : do_initrd = yes

 root@HAL9000:/# exit
 root@HAL9000:/var/chroot/wheezy_amd64_sdd1# cp /etc/kernel-img.conf /var/chroot/wheezy_amd64_sdd1/etc/kernel-img.conf
 root@HAL9000:/var/chroot/wheezy_amd64_sdd1# chroot /var/chroot/wheezy_amd64_sdd1
 root@HAL9000:/# apt-get install linux-image-3.2.0-4-amd64
 root@HAL9000:/# exit

Maintenant… Modifions notre grub pour que ce nouveau système soit opérationnel :
{{Avertissement|texte='''Attention, je suis sous Grub2. Si vous êtes sous Grub &quot;legacy&quot; la commande est différente évidemment…'''}}

 root@HAL9000:/var/chroot/wheezy_amd64_sdd1# apt-get install os-prober
 root@HAL9000:/var/chroot/wheezy_amd64_sdd1# update-grub
 (…)
 Found Debian GNU/Linux (7.0) on /dev/sdd1
 (…)


=== Divers - mots de passe ===

Derniers &quot;fignolages&quot;… J'installe un navigateur Web (Midori), et GParted.

Vous pouvez bien sûr adpater cette commande pour installer vos logiciels habituels ! 

 root@HAL9000:/var/chroot/wheezy_amd64_sdd1# chroot /var/chroot/wheezy_amd64_sdd1
 root@HAL9000:/# apt-get install gparted midori

Enfin, les mots de passe…

Debootstrap installe un système sans mots de passe… Si vous redémarrez maintenant vous vous connecterez en root dans votre nouveau système sans montrer patte blanche… Un peu gênant, non ?

 root@HAL9000:/# nano /etc/passwd
 (…)
 dave:x:1000:1000:Dave,,,:/home/dave:/bin/bash
 (…)

Vous enlevez le x pour que cela ressemble à ça :

 dave::1000:1000:Dave,,,:/home/dave:/bin/bash

Ceci afin de pouvoir connecter vos utilisateurs &quot;normaux&quot;. Il faut maintenant créer les mots de passe.

 root@HAL9000:/# passwd
 Enter new UNIX password: 
 Retype new UNIX password: 
 passwd: password updated successfully
 root@HAL9000:/# su dave -c passwd
 Enter new UNIX password: 
 Retype new UNIX password: 
 passwd: password updated successfully
 root@HAL9000:/# exit

Et vous pouvez enfin redémarrer sur votre nouveau système :

 root@HAL9000:/var/chroot/wheezy_amd64_sdd1# reboot

Voilà : vous disposez d'une toute fraîche installation, fonctionnelle !

== Tasksel ==

Pour avoir un système un peu plus complet, en fonction de vos besoins, vous pouvez utiliser l'utilitaire [[tasksel|Tasksel]].

La commande suivante détaille les &quot;tâches&quot; que [[tasksel|Tasksel]] peut réaliser pour vous… (vous remarquerez que ce sont les mêmes choix que dans une installation &quot;classique&quot; qui sont proposés)

 root@HAL9000:/# tasksel --list-tasks
 u desktop	Debian desktop environment
 u web-server	Web server
 u print-server	Print server
 u database-server	SQL database
 u dns-server	DNS Server
 u file-server	File server
 u mail-server	Mail server
 u ssh-server	SSH server
 u laptop	Laptop


Chaque &quot;tâche&quot; installe un ensemble de paquets utiles pour certaines utilisations. &quot;u&quot; pour non installé. Une tâche installée commence par &quot;i&quot;.

Il ne vous reste plus qu'a taper dans la console :

 root@HAL9000:/# tasksel --task-packages nom_tache

Il existe une autre tâche, qui n'est pas dans la liste ci-dessus :
 tasksel install standard
Cette commande installe un ensemble de paquets &quot;standards&quot;. Je vous renvoie à la page [[tasksel|Tasksel]] pour plus de détails.

== Versions des programmes utilisés dans ce tutoriel ==

bash : 4.2+dfsg-1

apt : 0.9.8

e2fsprogs : 1.42.5-1.1

coreutils : 8.20-3

mount : 2.20.1-5

debootstrap : 1.0.49

nano : 2.2.6-1+b1

grep : 2.14-1

os-prober : 1.58

grub-pc : 2.00-14

sysvinit : 2.88dsf-41


[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 15 mai 2013 à 16:15 (CEST)

[https://www.isalo.org/wiki.debian-fr/Installation_squeeze_chroot_debootstrap source : Wiki debian-fr]

[https://www.isalo.org/wiki.debian-fr/Installation_lenny_chroot_debootstrap source : Wiki debian-fr]

[https://www.debian-fr.org/installer-une-lenny-avec-debootstrap-et-chroot-t23531.html source : forum debian-fr]

[[Catégorie:Installation]]</text>
      <sha1>fvp0jg8vjeieqkel1w8dj085yofmbom</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5187</id>
      <parentid>5185</parentid>
      <timestamp>2013-05-15T15:05:54Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="13908">Installation d'une Wheezy avec debootstrap et chroot

L'objectif est d'installer une Wheezy (sur une nouvelle partition) à partir d'une autre Debian (ici une Sid, mais cette méthode fonctionnera aussi bien avec une autre version), sans avoir besoin de redémarrer ma machine une seule fois…

Avantage : rester dans mon environnement de travail pendant toute l'installation…

Parti-pris : utilisation de nano comme éditeur

== Pré-requis ==

Pré-requis : Installer debootstrap (chroot se trouve dans le paquet coreutils normalement déjà installé dans votre Debian).

 root@HAL9000:~# apt-get install debootstrap

Formatage de la partition qui va recevoir la Wheezy :

J'ai choisi de formater en ext4, vous pouvez choisir le système de fichiers de votre choix bien sûr.

La partition cible (ici /dev/sdd1) devra aussi être adaptée à votre configuration.

 root@HAL9000:~# mkfs -V -t ext4 /dev/sdd1

Création du répertoire qui va recevoir le système et montage de la partition fraîchement formatée dans ce nouveau répertoire.

J'ai choisi /var/chroot/wheezy_amd64_sdd1.

Un petit « ls » à la fin pour vérifier que la partition est bien montée.

 root@HAL9000:~# mkdir -p /var/chroot/wheezy_amd64_sdd1
 root@HAL9000:~# mount /dev/sdd1 /var/chroot/wheezy_amd64_sdd1
 root@HAL9000:~# cd /var/chroot/wheezy_amd64_sdd1
 root@Hal9000:/var/chroot/wheezy_amd64_sdd1# ls
 lost+found

== Installation avec debootstrap ==

Installation de la Wheezy avec debootstrap (j'ai choisi une Wheezy amd64, rien ne vous empêche de choisir une Squeeze i386 ou bien même une Sid…)

Astuces :

_Vous pouvez utiliser un dépôt local pour cette installation. Détails ici [https://www.debian-fr.org/creer-un-depot-local-complet-pour-son-reseau-t23065.html sur le forum.debian-fr.org]

_Si vous avez une mauvaise connexion, mais disposez d'un CD d'installation, vous pouvez remplacer l'adresse du dépôt par file:/cdrom/debian/

_En ajoutant l'option --variant=minbase à debootstrap, vous installerez uniquement le strict minimum de paquets (pas d'aptitude, de vim, d'exim4, etc.).

 root@HAL9000:/var/chroot/wheezy_amd64_sdd1# debootstrap --arch amd64 wheezy /var/chroot/wheezy_amd64_sdd1/ http://http.debian.net/debian/
 I: Retrieving Release
 I: Retrieving Release.gpg
 I: Checking Release signature
 I: Valid Release signature (key id 9FED2BCBDCD29CDF762678CBAED4B06F473041FA)
 I: Retrieving Packages
 I: Validating Packages
 I: Resolving dependencies of required packages...
 I: Resolving dependencies of base packages...
 I: Found additional required dependencies: insserv libbz2-1.0 libdb5.1 libsemanage-common libsemanage1 libslang2 libustr-1.0-1 
 I: Found additional base dependencies: libept1.4.12 libgcrypt11 libgnutls26 libgpg-error0 libidn11 libnfnetlink0 libp11-kit0 libsqlite3-0 libtasn1-3 libxapian22 
 I: Checking component main on http://http.debian.net/debian...
 I: Retrieving/Validating un tas de paquets
 I: Chosen extractor for .deb packages: dpkg-deb
 I: Extracting un tas de paquets...
 I: Installing core packages...
 I: Unpacking required packages...
 I: Unpacking un tas de paquets...
 I: Configuring required packages...
 I: Configuring un tas de paquets...
 I: Unpacking the base system...
 I: Unpacking un tas de paquets...
 I: Configuring the base system...
 I: Configuring un tas de paquets...
 I: Base system installed successfully.

Si tout s'est bien passé, un &quot;ls&quot; vous retournera la toute nouvelle arborescence :
 root@HAL9000:/var/chroot/wheezy_amd64_sdd1# ls
 bin boot dev etc home lib lib64 lost+found media mnt opt proc root run sbin selinux srv sys tmp usr var

À ce niveau, votre Wheezy est installée, mais elle n'est pas pleinement fonctionnelle ni « autonome ». Vous ne pourrez pas démarrer dessus…

== Préparation du chroot ==

Il faut maintenant préparer le chroot. Trois répertoires sont importants pour que cela fonctionne convenablement : /tmp, /dev et /proc.

Vous devez éditer votre fstab pour que ces répertoires soient montés (et liés - « bind/rbind ») automatiquement dans votre répertoire chroot.

 root@HAL9000:/var/chroot/wheezy_amd64_sdd1# nano /etc/fstab 

Ajoutez-y :

 ## chroot Wheezy amd64 sdd1
 /tmp  /var/chroot/wheezy_amd64_sdd1/tmp  none bind  0 0
 /dev  /var/chroot/wheezy_amd64_sdd1/dev  none rbind 0 0
 /proc /var/chroot/wheezy_amd64_sdd1/proc none bind  0 0

Ctrl+O (enregistrer) Ctrl+X (Quitter)

 root@HAL9000:/var/chroot/wheezy_amd64_sdd1# mount -a

(cette commande monte tout ce qui est dans votre fstab)

Pour « normaliser les comptes et groupes » de votre nouvelle Wheezy (que les utilisateurs et groupes aient les mêmes identifiants dans votre système &quot;hôte&quot; et dans votre chroot) tapez les commandes suivantes :

 root@HAL9000:/var/chroot/wheezy_amd64_sdd1# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/passwd &gt;&gt; /var/chroot/wheezy_amd64_sdd1/etc/passwd
 root@HAL9000:/var/chroot/wheezy_amd64_sdd1# grep &quot;^[^:]*:x:[0-9][0-9][0-9][0-9]:&quot; /etc/group &gt;&gt; /var/chroot/wheezy_amd64_sdd1/etc/group

Vous allez maintenant entrer dans votre environnement chroot (tadaa !) :

 root@HAL9000:/var/chroot/wheezy_amd64_sdd1# chroot /var/chroot/wheezy_amd64_sdd1
 root@HAL9000:/#

== Finalisation de l'installation et réglages de la Wheezy ==

Vous êtes maintenant dans votre nouvelle Wheezy mais ce n'est pas terminé.

Votre système est incomplet, il est toujours impossible de démarrer dessus…

=== &quot;locales&quot; ===

Nous allons maintenant mettre en français (ou ce que vous voulez…), configurer la localisation, et surtout… régler l'heure. L'heure est très importante. Si vous démarrez sur ce nouveau système avec une mauvaise heure (dans le futur par rapport au système sur lequel vous êtes), le prochain démarrage vous laissera un goût amer, vous serez obligé de faire un fsck…

En effet, au montage des disques le système inscrit l'heure (au tout début du disque). Si cette heure est « dans le futur », au démarrage suivant (sur une autre installation), il ne voudra pas démarrer et exigera une vérification de disque…

 root@HAL9000:/# apt-get update
 root@HAL9000:/# apt-get install locales
 root@HAL9000:/# dpkg-reconfigure locales
 root@HAL9000:/# dpkg-reconfigure tzdata
 root@HAL9000:/# hwclock --systohc --utc
 root@HAL9000:/# apt-get install ntpdate
 root@HAL9000:/# ntpdate ntp.metas.ch

=== Le sources.list ===

Nous allons maintenant compléter nos dépôts

J'ai ajouté le dépôt de rétroportages (backports) pour avoir accès à un noyau récent, vous n'êtes bien sûr pas obligé de le faire.

 root@HAL9000:/# nano /etc/apt/sources.list
 deb http://http.debian.net/debian wheezy main
 
 ## Mises-à-jour de sécurité
 deb http://security.debian.org/ wheezy/updates main
 deb http://http.debian.net/debian/ wheezy-updates main
 
 ## Rétroportages
 deb http://http.debian.net/debian/ wheezy-backports main

Mettons à jour :

 root@HAL9000:/# apt-get update

=== Clavier === 

Configurons maintenant le clavier

 root@HAL9000:/# apt-get install console-data
 root@HAL9000:/# dpkg-reconfigure -plow console-data
 (option choisir un codage clavier dans la liste complète) - pc / azerty / French / Same as X11 (latin9) / Standard
 Looking for keymap to install:
 fr-latin9 (cette fois-ci c'est bon)
 
=== hostname et fstab ===

 root@HAL9000:/# exit

Nous sommes sortis du chroot, quelques fichiers à récupérer… Pour avoir un bon hostname, le réseau, le montage correct des disques…

 root@HAL9000:/var/chroot/wheezy_amd64_sdd1# cp /etc/hosts /etc/hostname /etc/resolv.conf /var/chroot/wheezy_amd64_sdd1/etc/
 root@HAL9000:/var/chroot/wheezy_amd64_sdd1# cp /etc/network/interfaces /var/chroot/wheezy_amd64_sdd1/etc/network/
 root@HAL9000:/var/chroot/wheezy_amd64_sdd1# cp /etc/fstab /var/chroot/wheezy_amd64_sdd1/etc/
 root@HAL9000:/var/chroot/wheezy_amd64_sdd1# chroot /var/chroot/wheezy_amd64_sdd1/

+ Réglage du fsab

 root@HAL9000:/# blkid (cette commande permet de récupérer le UUID de vos disques pour votre nouveau fstab…
 Ne vous faites pas prendre, le formatage change l'UUID…)
 /dev/sda1: UUID=&quot;f6fb3a64-0773-4cfe-86f9-df372b5c6bda&quot; TYPE=&quot;ext4&quot; 
 /dev/sda5: UUID=&quot;1b9b21b5-6963-4851-a30a-318314194d2a&quot; TYPE=&quot;ext4&quot; 
 /dev/sda6: UUID=&quot;47bfcfed-42b4-4a80-a93d-69ff4dd36109&quot; TYPE=&quot;swap&quot; 
 /dev/sdb1: UUID=&quot;3f332488-3a43-46b3-b20f-4373e9467dfe&quot; TYPE=&quot;ext4&quot; 
 /dev/sdc1: UUID=&quot;3a503ab3-af43-414b-9249-300203538b2d&quot; TYPE=&quot;ext4&quot; 
 /dev/sdd1: UUID=&quot;2edb9c6e-d531-4653-a653-6c66d0607f5c&quot; TYPE=&quot;ext4&quot;

 root@HAL9000:/# nano /etc/fstab (à rectifier en fonction de votre configuration)
 proc                                      /proc            proc        defaults          0 0
 UUID=2edb9c6e-d531-4653-a653-6c66d0607f5c /                ext4        errors=remount-ro 0 1
 UUID=3f332488-3a43-46b3-b20f-4373e9467dfe /home            ext4        defaults          0 2
 UUID=47bfcfed-42b4-4a80-a93d-69ff4dd36109 none             swap        sw                0 0
 /dev/sr0                                  /media/cdrom0    udf,iso9660 user,noauto       0 0

Création des répertoire de montage des disques de la nouvelle machine : (en fonction de votre configuration et de vos choix…)

 root@HAL9000:/# mkdir /media/cdrom0

=== L'environnement graphique ===

Maintenant ? Un environnement graphique ! (J'ai choisi Xfce, vous faites comme vous voulez… Gnome, Kde, aucun…)

{{Avertissement|texte='''N'oubliez pas d'installer aussi un gestionnaire de connexion !'''}}

 root@HAL9000:/# apt-get install xfce4 slim

=== Le noyau et Grub2 ===

Installons un noyau… Ce serait bête d'oublier !

 root@HAL9000:/# apt-cache search linux-image (choisissez dans la liste qu'il vous propose,
 celui que je cite n'est qu'un exemple que vous n'êtes pas forcés de suivre…)
 (…)
 linux-image-3.2.0-4-amd64 - Linux 3.2 for 64-bit PCs
 (…)

Ici il faut récupérer votre kernel-img.conf qui permette de convenablement lancer initramfs à l'installation du nouveau noyau dans le chroot.

Ce fichier n'existe pas dans le système créé par debootstrap.

La ligne intéressante : do_initrd = yes

 root@HAL9000:/# exit
 root@HAL9000:/var/chroot/wheezy_amd64_sdd1# cp /etc/kernel-img.conf /var/chroot/wheezy_amd64_sdd1/etc/kernel-img.conf
 root@HAL9000:/var/chroot/wheezy_amd64_sdd1# chroot /var/chroot/wheezy_amd64_sdd1
 root@HAL9000:/# apt-get install linux-image-3.2.0-4-amd64
 root@HAL9000:/# exit

Maintenant… Modifions notre grub pour que ce nouveau système soit opérationnel :
{{Avertissement|texte='''Attention, je suis sous Grub2. Si vous êtes sous Grub &quot;legacy&quot; la commande est différente évidemment…'''}}

 root@HAL9000:/var/chroot/wheezy_amd64_sdd1# apt-get install os-prober
 root@HAL9000:/var/chroot/wheezy_amd64_sdd1# update-grub
 (…)
 Found Debian GNU/Linux (7.0) on /dev/sdd1
 (…)


=== Divers - mots de passe ===

Derniers &quot;fignolages&quot;… J'installe un navigateur Web (Midori), et GParted.

Vous pouvez bien sûr adpater cette commande pour installer vos logiciels habituels ! 

 root@HAL9000:/var/chroot/wheezy_amd64_sdd1# chroot /var/chroot/wheezy_amd64_sdd1
 root@HAL9000:/# apt-get install gparted midori

Enfin, les mots de passe…

Debootstrap installe un système sans mots de passe… Si vous redémarrez maintenant vous vous connecterez en root dans votre nouveau système sans montrer patte blanche… Un peu gênant, non ?

 root@HAL9000:/# nano /etc/passwd
 (…)
 dave:x:1000:1000:Dave,,,:/home/dave:/bin/bash
 (…)

Vous enlevez le x pour que cela ressemble à ça :

 dave::1000:1000:Dave,,,:/home/dave:/bin/bash

Ceci afin de pouvoir connecter vos utilisateurs &quot;normaux&quot;. Il faut maintenant créer les mots de passe.

 root@HAL9000:/# passwd
 Enter new UNIX password: 
 Retype new UNIX password: 
 passwd: password updated successfully
 root@HAL9000:/# su dave -c passwd
 Enter new UNIX password: 
 Retype new UNIX password: 
 passwd: password updated successfully
 root@HAL9000:/# exit

Et vous pouvez enfin redémarrer sur votre nouveau système :

 root@HAL9000:/var/chroot/wheezy_amd64_sdd1# reboot

Voilà : vous disposez d'une toute fraîche installation, fonctionnelle !

== Tasksel ==

Pour avoir un système un peu plus complet, en fonction de vos besoins, vous pouvez utiliser l'utilitaire [[tasksel|Tasksel]].

La commande suivante détaille les &quot;tâches&quot; que [[tasksel|Tasksel]] peut réaliser pour vous… (vous remarquerez que ce sont les mêmes choix que dans une installation &quot;classique&quot; qui sont proposés)

 root@HAL9000:/# tasksel --list-tasks
 u desktop	Debian desktop environment
 u web-server	Web server
 u print-server	Print server
 u database-server	SQL database
 u dns-server	DNS Server
 u file-server	File server
 u mail-server	Mail server
 u ssh-server	SSH server
 u laptop	Laptop


Chaque &quot;tâche&quot; installe un ensemble de paquets utiles pour certaines utilisations. &quot;u&quot; pour non installé. Une tâche installée commence par &quot;i&quot;.

Il ne vous reste plus qu'a taper dans la console :

 root@HAL9000:/# tasksel --task-packages nom_tache

Il existe une autre tâche, qui n'est pas dans la liste ci-dessus :
 tasksel install standard
Cette commande installe un ensemble de paquets &quot;standards&quot;. Je vous renvoie à la page [[tasksel|Tasksel]] pour plus de détails.

== Versions des programmes utilisés dans ce tutoriel ==

bash : 4.2+dfsg-1

apt : 0.9.8

e2fsprogs : 1.42.5-1.1

coreutils : 8.20-3

mount : 2.20.1-5

debootstrap : 1.0.49

nano : 2.2.6-1+b1

grep : 2.14-1

os-prober : 1.58

grub-pc : 2.00-14

sysvinit : 2.88dsf-41


[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 15 mai 2013 à 16:15 (CEST)

[https://www.isalo.org/wiki.debian-fr/Installation_squeeze_chroot_debootstrap source : Wiki debian-fr]

[https://www.isalo.org/wiki.debian-fr/Installation_lenny_chroot_debootstrap source : Wiki debian-fr]

[https://www.debian-fr.org/installer-une-lenny-avec-debootstrap-et-chroot-t23531.html source : forum debian-fr]

[[Catégorie:Installation]]</text>
      <sha1>6a5hhg956j28x4cu5mdutdcstlwlzky</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Installer Debian Voyage sur une carte Alix2d2</title>
    <ns>0</ns>
    <id>626</id>
    <revision>
      <id>2613</id>
      <timestamp>2010-12-29T12:06:36Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « {{Sid}}   '''Debian sur une carte Alix2d2 avec Voyage (squeeze)'''  Nous allons détailler dans ce Tuto l'installation d'un système Debian ([http://linux.voyage.hk/ Voyage])... »</comment>
      <text xml:space="preserve" bytes="11930">{{Sid}}


'''Debian sur une carte Alix2d2 avec Voyage (squeeze)'''

Nous allons détailler dans ce Tuto l'installation d'un système Debian ([http://linux.voyage.hk/ Voyage]) sur une [http://www.pcengines.ch/alix2d2.htm Carte Alix2d2].

''[http://linux.voyage.hk/ Voyage Linux Debian]'' est une distribution dérivée de Debian qui fonctionne sur des plates-formes x86 telles que les moteurs PC ALIX / WRAP, 45xx/48xx Soekris et des cartes à base d'Atom.

La carte [[Voyage_%2B_Kanet_%2B_Alix2d2#Alix2d2|Alix2d2]] est une &quot;mini-box&quot; très peu gourmande en énergie fonctionnant avec un CPU AMD Geode 500Mhz, 256 Mo de mémoire vive et sur une carte mémoire de type CF. 
La carte Alix2d2 ne disposant pas de carte graphique, il faut donc contrôler le démarrage et l'installation de Debian au travers du port série.

== Installation de Voyage ==

Téléchargez la dernière version de voyage:

 # wget http://mirror.voyage.hk/download/voyage/voyage-current.tar.bz2
 # tar xvjf voyage-current.tar.bz2 -C ~/
 # cd voyage-current

Insérer la CF

 # dmesg
 ...
 [51649.188572]  sdd:
 [51649.194802] sd 8:0:0:1: [sdd] Assuming drive cache: write through
 [51649.194807] sd 8:0:0:1: [sdd] Attached SCSI removable disk

Faire une partition primaire de 2Go et la rendre bootable.

 # cfdisk /dev/sdd (ou un autre utilitaire de partitionnement)
 # /sbin/mkfs -t ext2 /dev/sdd1
 # tune2fs -c 0 /dev/sdd1
 tune2fs 1.41.12 (17-May-2010)
 Initialisation du nombre maximal de montages à -1

Lancement du script d'installation:

 # ./usr/local/sbin/voyage.update
&lt;code&gt;
What would you like to do?
  1 - Create new Voyage Linux disk
  2 - Update existing Voyage configuration
  3 - Exit
      (default=1 [Create new Voyage Linux disk]): 1

some mandatory options are unset, please enter them interactively
Where is the Voyage Linux distribution directory?
  (default=/root/voyage-current): 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=2 [Select Target Profile]): 1

Where is the Voyage Linux distribution directory?
  (default=/root/voyage-current): 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=2 [Select Target Profile]): 2

Please select Voyage profile:
  1 - 4501
  2 - 4511/4521
  3 - 4801
  4 - 5501
  5 - ALIX
  6 - Generic PC
  7 - Notebook (pcmcia)
  8 - WRAP
      (default=5 [ALIX]): 5

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=3 [Select Target Disk]): 3

Partitions information
major minor  #blocks  name

   8        0 1953514584 sda
   8        1   51199123 sda1
   8        2          1 sda2
   8        5   51199123 sda5
   8        6   51199123 sda6
   8        7    8193118 sda7
   8        8  768003358 sda8
   8        9 1023716352 sda9
   8       16 1953514584 sdb
   8       17 1953512001 sdb1
   8       48    7831152 sdd
   8       49    2932600 sdd1
   8       50          1 sdd2
   8       53     321563 sdd5
   8       54    2281755 sdd6
   8       55    2289412 sdd7

Which device accesses the target disk [/dev/hde]? /dev/sdd

Which partition should I use on /dev/sdd for the Voyage system [1]? 

Where can I mount the target disk [/mnt/cf]? 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=4 [Select Target Bootstrap Loader]): 4

Which loader do you want (grub or lilo) [grub]? 

Which partition is used for bootstrap [1]? 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=5 [Configure Target Console]): 5

Select terminal type:
  1 - Serial Terminal
  2 - Console Interface
      (default=1 [Serial Terminal]): 1

Please choose speed:
  1 - 2400
  2 - 4800
  3 - 9600
  4 - 19200
  5 - 38400
  6 - 57600
  7 - 115200
      (default=5 [38400]): 3

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=6 [Partition and Create Filesystem]): 6

What shall I do with your Flash Media?
  1 - Partition Flash Media and Create Filesystem
  2 - Use Flash Media as-is
      (default=1 [Partition Flash Media and Create Filesystem]): 1

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=7 [Copy Distribution to Target]): 7

    
Configuration details:
----------------------

Distribution directory:   /root/voyage-current

Disk/Flash Device:        /dev/sdd
Installation Partition:   /dev/sdd1
Create Partition and FS:  yes
Bootstrap Partition:      /dev/sdd1

Will be mounted on:       /mnt/cf

Target system profile:    ALIX
Target console:           serial
Target baud rate:         9600

Bootstrap installer:      grub
Bootstrap partition:      /dev/sdd1

OK to continue (y/n)? y

Ready to go ....
Checking that no-one is using this disk right now ...
OK

Disk /dev/sdd: 1022 cylinders, 247 heads, 62 sectors/track
Old situation:
Units = cylinders of 7840768 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sdd1   *      0+   1021    1022-   7825453+  83  Linux
/dev/sdd2          0       -       0          0    0  Empty
/dev/sdd3          0       -       0          0    0  Empty
/dev/sdd4          0       -       0          0    0  Empty
New situation:
Units = cylinders of 7840768 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sdd1   *      0+   1021    1022-   7825453+  83  Linux
/dev/sdd2          0       -       0          0    0  Empty
/dev/sdd3          0       -       0          0    0  Empty
/dev/sdd4          0       -       0          0    0  Empty
Successfully wrote the new partition table

Re-reading the partition table ...

If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes:  dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)
mke2fs 1.41.12 (17-May-2010)
Étiquette de système de fichiers=
Type de système d'exploitation : Linux
Taille de bloc=4096 (log=2)
Taille de fragment=4096 (log=2)
« Stride » = 0 blocs, « Stripe width » = 0 blocs
489600 i-noeuds, 1956363 blocs
97818 blocs (5.00%) réservés pour le super utilisateur
Premier bloc de données=0
Nombre maximum de blocs du système de fichiers=2004877312
60 groupes de blocs
32768 blocs par groupe, 32768 fragments par groupe
8160 i-noeuds par groupe
Superblocs de secours stockés sur les blocs : 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Écriture des tables d'i-noeuds : complété                        
Écriture des superblocs et de l'information de comptabilité du système de
fichiers : complété

Le système de fichiers sera automatiquement vérifié tous les 20 montages ou
après 180 jours, selon la première éventualité. Utiliser tune2fs -c ou -i
pour écraser la valeur.
tune2fs 1.41.12 (17-May-2010)
Initialisation du nombre maximal de montages à -1
Initialisation de l'intervalle de vérification à 0 secondes
Copying files .... done

Removing pcmcia from update-rc.d
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = &quot;fr_FR.UTF-8&quot;
    are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
update-rc.d: using dependency based boot sequencing
Removing dnsmasq.pxe.conf in /etc/dnsmasq.more.conf
Reconfiguring resolvconf
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = &quot;fr_FR.UTF-8&quot;
    are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = &quot;fr_FR.UTF-8&quot;
    are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
Installing grub
Copy grub files from /mnt/cf to /mnt/cf/boot/grub
Setting up grub under chroot /mnt/cf
copyfiles.sh script completed
What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=8 [Exit]): 8

&lt;/code&gt;

== Réglages ==

monter la CF

nano /etc/network/interfaces

&lt;code&gt;auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 192.168.0.8
        netmask 255.255.255.0
        broadcast 192.168.0.255

auto eth1
        iface eth1 inet static
        address 41.188.26.122
        netmask 255.255.255.248
        gateway 41.188.26.121
        network 41.188.26.0
        broadcast 41.188.26.248
        dns-nameservers 41.188.9.130 192.192.32.5&lt;/code&gt;

Régler son sources.list

== Premier démarrage ==

Pour ce premier démarrage, et afin de nous assurer que le système est fonctionnel, nous nous connecterons à la carte Alix par le biais d'un terminal (c'est sur ce terminal que toutes les sorties sont redirigées).

 # apt-get install gtkterm

Pluger le CF dans la CM Alix

Brancher le [[Voyage_%2B_Kanet_%2B_Alix2d2#C.C3.A2ble_null-modem|câble null-modem]]
Si vous n'en avez pas il est tout a fait possible de le bricoler vous-même.

Lancer GTKterm, configurer le port et la vitesse (mettez 9600)

Mettez la CM sous tension

[[Fichier:Alix Voyage 3.jpeg]]

Connectez vous en root
Mot de passe &quot;voyage&quot;

[[Fichier:Alix Voyage 4.jpeg]]

== Se connecter en ssh ==

&lt;code&gt;ssh root@192.168.0.8               
The authenticity of host '192.168.0.8 (192.168.0.8)' can't be established.
RSA key fingerprint is 8f:da:e5:5b:c9:c8:dd:77:c6:ed:87:2d:71:eb:46:01.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.8' (RSA) to the list of known hosts.
root@192.168.0.8's password: 
Linux voyage 2.6.32-voyage #1 PREEMPT Mon Aug 16 10:31:06 GMT 2010 i586

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
 __  __
 \ \/ /___ __  __ ___  ___  ___    Useful Commands:
  \  // _ \\ \/ /,-_ |/ _ |/ -_)     remountrw - mount disk as read-write
   \/ \___/ \  / \___,\_  |\___|     remountro - mount disk as read-only
           _/_/        _'_|          remove.docs - remove all docs and manpages 
     { V o y a g e } - L i n u x     
      &lt; http://linux.voyage.hk &gt;   Version: 0.7 (Build Date 20101015)


Last login: Sat Jan  1 00:00:59 2000
root@voyage:~#&lt;/code&gt;

== Annexe ==

=== Alix2d2 ===

[[Fichier:Photo_001.jpg]]

[[Fichier:Photo_002.jpg]]

=== Câble null-modem ===

[[Fichier:9_pin_serial_null_modem.jpg]]

[[Fichier:NULL MODEM CABLE.jpg]]</text>
      <sha1>sipgnbhq07yw2wldo4war5a52qn0697</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2618</id>
      <parentid>2613</parentid>
      <timestamp>2010-12-29T13:10:27Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="12055">{{Sid}}


'''Debian sur une carte Alix2d2 avec Voyage (squeeze)'''

Nous allons détailler dans ce Tuto l'installation d'un système Debian ([http://linux.voyage.hk/ Voyage]) sur une [http://www.pcengines.ch/alix2d2.htm Carte Alix2d2].

''[http://linux.voyage.hk/ Voyage Linux Debian]'' est une distribution dérivée de Debian qui fonctionne sur des plates-formes x86 telles que les moteurs PC ALIX / WRAP, 45xx/48xx Soekris et des cartes à base d'Atom.

La carte [[Voyage_%2B_Kanet_%2B_Alix2d2#Alix2d2|Alix2d2]] est une &quot;mini-box&quot; très peu gourmande en énergie fonctionnant avec un CPU AMD Geode 500Mhz, 256 Mo de mémoire vive et sur une carte mémoire de type CF. 
La carte Alix2d2 ne disposant pas de carte graphique, il faut donc contrôler le démarrage et l'installation de Debian au travers du port série.

== Installation de Voyage ==

Téléchargez la dernière version de voyage:

 # wget http://mirror.voyage.hk/download/voyage/voyage-current.tar.bz2
 # tar xvjf voyage-current.tar.bz2 -C ~/
 # cd voyage-current

Insérer la CF

 # dmesg
 ...
 [51649.188572]  sdd:
 [51649.194802] sd 8:0:0:1: [sdd] Assuming drive cache: write through
 [51649.194807] sd 8:0:0:1: [sdd] Attached SCSI removable disk

Faire une partition primaire de 2Go et la rendre bootable.

 # cfdisk /dev/sdd (ou un autre utilitaire de partitionnement)
 # /sbin/mkfs -t ext2 /dev/sdd1
 # tune2fs -c 0 /dev/sdd1
 tune2fs 1.41.12 (17-May-2010)
 Initialisation du nombre maximal de montages à -1

Lancement du script d'installation:

 # ./usr/local/sbin/voyage.update
&lt;code&gt;
What would you like to do?
  1 - Create new Voyage Linux disk
  2 - Update existing Voyage configuration
  3 - Exit
      (default=1 [Create new Voyage Linux disk]): 1

some mandatory options are unset, please enter them interactively
Where is the Voyage Linux distribution directory?
  (default=/root/voyage-current): 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=2 [Select Target Profile]): 1

Where is the Voyage Linux distribution directory?
  (default=/root/voyage-current): 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=2 [Select Target Profile]): 2

Please select Voyage profile:
  1 - 4501
  2 - 4511/4521
  3 - 4801
  4 - 5501
  5 - ALIX
  6 - Generic PC
  7 - Notebook (pcmcia)
  8 - WRAP
      (default=5 [ALIX]): 5

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=3 [Select Target Disk]): 3

Partitions information
major minor  #blocks  name

   8        0 1953514584 sda
   8        1   51199123 sda1
   8        2          1 sda2
   8        5   51199123 sda5
   8        6   51199123 sda6
   8        7    8193118 sda7
   8        8  768003358 sda8
   8        9 1023716352 sda9
   8       16 1953514584 sdb
   8       17 1953512001 sdb1
   8       48    7831152 sdd
   8       49    2932600 sdd1
   8       50          1 sdd2
   8       53     321563 sdd5
   8       54    2281755 sdd6
   8       55    2289412 sdd7

Which device accesses the target disk [/dev/hde]? /dev/sdd

Which partition should I use on /dev/sdd for the Voyage system [1]? 

Where can I mount the target disk [/mnt/cf]? 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=4 [Select Target Bootstrap Loader]): 4

Which loader do you want (grub or lilo) [grub]? 

Which partition is used for bootstrap [1]? 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=5 [Configure Target Console]): 5

Select terminal type:
  1 - Serial Terminal
  2 - Console Interface
      (default=1 [Serial Terminal]): 1

Please choose speed:
  1 - 2400
  2 - 4800
  3 - 9600
  4 - 19200
  5 - 38400
  6 - 57600
  7 - 115200
      (default=5 [38400]): 3

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=6 [Partition and Create Filesystem]): 6

What shall I do with your Flash Media?
  1 - Partition Flash Media and Create Filesystem
  2 - Use Flash Media as-is
      (default=1 [Partition Flash Media and Create Filesystem]): 1

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=7 [Copy Distribution to Target]): 7

    
Configuration details:
----------------------

Distribution directory:   /root/voyage-current

Disk/Flash Device:        /dev/sdd
Installation Partition:   /dev/sdd1
Create Partition and FS:  yes
Bootstrap Partition:      /dev/sdd1

Will be mounted on:       /mnt/cf

Target system profile:    ALIX
Target console:           serial
Target baud rate:         9600

Bootstrap installer:      grub
Bootstrap partition:      /dev/sdd1

OK to continue (y/n)? y

Ready to go ....
Checking that no-one is using this disk right now ...
OK

Disk /dev/sdd: 1022 cylinders, 247 heads, 62 sectors/track
Old situation:
Units = cylinders of 7840768 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sdd1   *      0+   1021    1022-   7825453+  83  Linux
/dev/sdd2          0       -       0          0    0  Empty
/dev/sdd3          0       -       0          0    0  Empty
/dev/sdd4          0       -       0          0    0  Empty
New situation:
Units = cylinders of 7840768 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sdd1   *      0+   1021    1022-   7825453+  83  Linux
/dev/sdd2          0       -       0          0    0  Empty
/dev/sdd3          0       -       0          0    0  Empty
/dev/sdd4          0       -       0          0    0  Empty
Successfully wrote the new partition table

Re-reading the partition table ...

If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes:  dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)
mke2fs 1.41.12 (17-May-2010)
Étiquette de système de fichiers=
Type de système d'exploitation : Linux
Taille de bloc=4096 (log=2)
Taille de fragment=4096 (log=2)
« Stride » = 0 blocs, « Stripe width » = 0 blocs
489600 i-noeuds, 1956363 blocs
97818 blocs (5.00%) réservés pour le super utilisateur
Premier bloc de données=0
Nombre maximum de blocs du système de fichiers=2004877312
60 groupes de blocs
32768 blocs par groupe, 32768 fragments par groupe
8160 i-noeuds par groupe
Superblocs de secours stockés sur les blocs : 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Écriture des tables d'i-noeuds : complété                        
Écriture des superblocs et de l'information de comptabilité du système de
fichiers : complété

Le système de fichiers sera automatiquement vérifié tous les 20 montages ou
après 180 jours, selon la première éventualité. Utiliser tune2fs -c ou -i
pour écraser la valeur.
tune2fs 1.41.12 (17-May-2010)
Initialisation du nombre maximal de montages à -1
Initialisation de l'intervalle de vérification à 0 secondes
Copying files .... done

Removing pcmcia from update-rc.d
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = &quot;fr_FR.UTF-8&quot;
    are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
update-rc.d: using dependency based boot sequencing
Removing dnsmasq.pxe.conf in /etc/dnsmasq.more.conf
Reconfiguring resolvconf
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = &quot;fr_FR.UTF-8&quot;
    are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = &quot;fr_FR.UTF-8&quot;
    are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
Installing grub
Copy grub files from /mnt/cf to /mnt/cf/boot/grub
Setting up grub under chroot /mnt/cf
copyfiles.sh script completed
What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=8 [Exit]): 8

&lt;/code&gt;

== Réglages ==

monter la CF

nano /etc/network/interfaces

&lt;code&gt;auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 192.168.0.8
        netmask 255.255.255.0
        broadcast 192.168.0.255

auto eth1
        iface eth1 inet static
        address 41.188.26.122
        netmask 255.255.255.248
        gateway 41.188.26.121
        network 41.188.26.0
        broadcast 41.188.26.248
        dns-nameservers 41.188.9.130 192.192.32.5&lt;/code&gt;

Régler son sources.list

== Premier démarrage ==

Pour ce premier démarrage, et afin de nous assurer que le système est fonctionnel, nous nous connecterons à la carte Alix par le biais d'un terminal (c'est sur ce terminal que toutes les sorties sont redirigées).

 # apt-get install gtkterm

Pluger le CF dans la CM Alix

Brancher le [[Voyage_%2B_Kanet_%2B_Alix2d2#C.C3.A2ble_null-modem|câble null-modem]]
Si vous n'en avez pas il est tout a fait possible de le bricoler vous-même.

Lancer GTKterm, configurer le port et la vitesse (mettez 9600)

Mettez la CM sous tension

[[Fichier:Alix Voyage 3.jpeg]]

Connectez vous en root
Mot de passe &quot;voyage&quot;

[[Fichier:Alix Voyage 4.jpeg]]

== Se connecter en ssh ==

&lt;code&gt;ssh root@192.168.0.8               
The authenticity of host '192.168.0.8 (192.168.0.8)' can't be established.
RSA key fingerprint is 8f:da:e5:5b:c9:c8:dd:77:c6:ed:87:2d:71:eb:46:01.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.8' (RSA) to the list of known hosts.
root@192.168.0.8's password: 
Linux voyage 2.6.32-voyage #1 PREEMPT Mon Aug 16 10:31:06 GMT 2010 i586

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
 __  __
 \ \/ /___ __  __ ___  ___  ___    Useful Commands:
  \  // _ \\ \/ /,-_ |/ _ |/ -_)     remountrw - mount disk as read-write
   \/ \___/ \  / \___,\_  |\___|     remountro - mount disk as read-only
           _/_/        _'_|          remove.docs - remove all docs and manpages 
     { V o y a g e } - L i n u x     
      &lt; http://linux.voyage.hk &gt;   Version: 0.7 (Build Date 20101015)


Last login: Sat Jan  1 00:00:59 2000
root@voyage:~#&lt;/code&gt;

== Annexe ==

=== Alix2d2 ===

[[Fichier:Photo_001.jpg]]

[[Fichier:Photo_002.jpg]]

=== Câble null-modem ===

[[Fichier:9_pin_serial_null_modem.jpg]]

[[Fichier:NULL MODEM CABLE.jpg]]

[[Utilisateur:Lol|Lol]] 29 décembre 2010 à 07:10 (CST)
[[Catégorie:Installation]]
[[Catégorie:DistributionsDérivées]]</text>
      <sha1>qa7flarptcnmx5vco6xvtf3zu68b4oa</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2619</id>
      <parentid>2618</parentid>
      <timestamp>2010-12-29T13:12:36Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="12089">{{Sid}}


'''Debian sur une carte Alix2d2 avec Voyage (squeeze)'''

Nous allons détailler dans ce Tuto l'installation d'un système Debian ([http://linux.voyage.hk/ Voyage]) sur une [http://www.pcengines.ch/alix2d2.htm Carte Alix2d2].

''[http://linux.voyage.hk/ Voyage Linux Debian]'' est une distribution dérivée de Debian qui fonctionne sur des plates-formes x86 telles que les moteurs PC ALIX / WRAP, 45xx/48xx Soekris et des cartes à base d'Atom.

La carte [[Installer_Debian_Voyage_sur_une_carte_Alix2d2#Alix2d2|Alix2d2]] est une &quot;mini-box&quot; très peu gourmande en énergie fonctionnant avec un CPU AMD Geode 500Mhz, 256 Mo de mémoire vive et sur une carte mémoire de type CF. 
La carte Alix2d2 ne disposant pas de carte graphique, il faut donc contrôler le démarrage et l'installation de Debian au travers du port série.

== Installation de Voyage ==

Téléchargez la dernière version de voyage:

 # wget http://mirror.voyage.hk/download/voyage/voyage-current.tar.bz2
 # tar xvjf voyage-current.tar.bz2 -C ~/
 # cd voyage-current

Insérer la CF

 # dmesg
 ...
 [51649.188572]  sdd:
 [51649.194802] sd 8:0:0:1: [sdd] Assuming drive cache: write through
 [51649.194807] sd 8:0:0:1: [sdd] Attached SCSI removable disk

Faire une partition primaire de 2Go et la rendre bootable.

 # cfdisk /dev/sdd (ou un autre utilitaire de partitionnement)
 # /sbin/mkfs -t ext2 /dev/sdd1
 # tune2fs -c 0 /dev/sdd1
 tune2fs 1.41.12 (17-May-2010)
 Initialisation du nombre maximal de montages à -1

Lancement du script d'installation:

 # ./usr/local/sbin/voyage.update
&lt;code&gt;
What would you like to do?
  1 - Create new Voyage Linux disk
  2 - Update existing Voyage configuration
  3 - Exit
      (default=1 [Create new Voyage Linux disk]): 1

some mandatory options are unset, please enter them interactively
Where is the Voyage Linux distribution directory?
  (default=/root/voyage-current): 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=2 [Select Target Profile]): 1

Where is the Voyage Linux distribution directory?
  (default=/root/voyage-current): 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=2 [Select Target Profile]): 2

Please select Voyage profile:
  1 - 4501
  2 - 4511/4521
  3 - 4801
  4 - 5501
  5 - ALIX
  6 - Generic PC
  7 - Notebook (pcmcia)
  8 - WRAP
      (default=5 [ALIX]): 5

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=3 [Select Target Disk]): 3

Partitions information
major minor  #blocks  name

   8        0 1953514584 sda
   8        1   51199123 sda1
   8        2          1 sda2
   8        5   51199123 sda5
   8        6   51199123 sda6
   8        7    8193118 sda7
   8        8  768003358 sda8
   8        9 1023716352 sda9
   8       16 1953514584 sdb
   8       17 1953512001 sdb1
   8       48    7831152 sdd
   8       49    2932600 sdd1
   8       50          1 sdd2
   8       53     321563 sdd5
   8       54    2281755 sdd6
   8       55    2289412 sdd7

Which device accesses the target disk [/dev/hde]? /dev/sdd

Which partition should I use on /dev/sdd for the Voyage system [1]? 

Where can I mount the target disk [/mnt/cf]? 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=4 [Select Target Bootstrap Loader]): 4

Which loader do you want (grub or lilo) [grub]? 

Which partition is used for bootstrap [1]? 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=5 [Configure Target Console]): 5

Select terminal type:
  1 - Serial Terminal
  2 - Console Interface
      (default=1 [Serial Terminal]): 1

Please choose speed:
  1 - 2400
  2 - 4800
  3 - 9600
  4 - 19200
  5 - 38400
  6 - 57600
  7 - 115200
      (default=5 [38400]): 3

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=6 [Partition and Create Filesystem]): 6

What shall I do with your Flash Media?
  1 - Partition Flash Media and Create Filesystem
  2 - Use Flash Media as-is
      (default=1 [Partition Flash Media and Create Filesystem]): 1

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=7 [Copy Distribution to Target]): 7

    
Configuration details:
----------------------

Distribution directory:   /root/voyage-current

Disk/Flash Device:        /dev/sdd
Installation Partition:   /dev/sdd1
Create Partition and FS:  yes
Bootstrap Partition:      /dev/sdd1

Will be mounted on:       /mnt/cf

Target system profile:    ALIX
Target console:           serial
Target baud rate:         9600

Bootstrap installer:      grub
Bootstrap partition:      /dev/sdd1

OK to continue (y/n)? y

Ready to go ....
Checking that no-one is using this disk right now ...
OK

Disk /dev/sdd: 1022 cylinders, 247 heads, 62 sectors/track
Old situation:
Units = cylinders of 7840768 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sdd1   *      0+   1021    1022-   7825453+  83  Linux
/dev/sdd2          0       -       0          0    0  Empty
/dev/sdd3          0       -       0          0    0  Empty
/dev/sdd4          0       -       0          0    0  Empty
New situation:
Units = cylinders of 7840768 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sdd1   *      0+   1021    1022-   7825453+  83  Linux
/dev/sdd2          0       -       0          0    0  Empty
/dev/sdd3          0       -       0          0    0  Empty
/dev/sdd4          0       -       0          0    0  Empty
Successfully wrote the new partition table

Re-reading the partition table ...

If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes:  dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)
mke2fs 1.41.12 (17-May-2010)
Étiquette de système de fichiers=
Type de système d'exploitation : Linux
Taille de bloc=4096 (log=2)
Taille de fragment=4096 (log=2)
« Stride » = 0 blocs, « Stripe width » = 0 blocs
489600 i-noeuds, 1956363 blocs
97818 blocs (5.00%) réservés pour le super utilisateur
Premier bloc de données=0
Nombre maximum de blocs du système de fichiers=2004877312
60 groupes de blocs
32768 blocs par groupe, 32768 fragments par groupe
8160 i-noeuds par groupe
Superblocs de secours stockés sur les blocs : 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Écriture des tables d'i-noeuds : complété                        
Écriture des superblocs et de l'information de comptabilité du système de
fichiers : complété

Le système de fichiers sera automatiquement vérifié tous les 20 montages ou
après 180 jours, selon la première éventualité. Utiliser tune2fs -c ou -i
pour écraser la valeur.
tune2fs 1.41.12 (17-May-2010)
Initialisation du nombre maximal de montages à -1
Initialisation de l'intervalle de vérification à 0 secondes
Copying files .... done

Removing pcmcia from update-rc.d
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = &quot;fr_FR.UTF-8&quot;
    are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
update-rc.d: using dependency based boot sequencing
Removing dnsmasq.pxe.conf in /etc/dnsmasq.more.conf
Reconfiguring resolvconf
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = &quot;fr_FR.UTF-8&quot;
    are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = &quot;fr_FR.UTF-8&quot;
    are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
Installing grub
Copy grub files from /mnt/cf to /mnt/cf/boot/grub
Setting up grub under chroot /mnt/cf
copyfiles.sh script completed
What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=8 [Exit]): 8

&lt;/code&gt;

== Réglages ==

monter la CF

nano /etc/network/interfaces

&lt;code&gt;auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 192.168.0.8
        netmask 255.255.255.0
        broadcast 192.168.0.255

auto eth1
        iface eth1 inet static
        address 41.188.26.122
        netmask 255.255.255.248
        gateway 41.188.26.121
        network 41.188.26.0
        broadcast 41.188.26.248
        dns-nameservers 41.188.9.130 192.192.32.5&lt;/code&gt;

Régler son sources.list

== Premier démarrage ==

Pour ce premier démarrage, et afin de nous assurer que le système est fonctionnel, nous nous connecterons à la carte Alix par le biais d'un terminal (c'est sur ce terminal que toutes les sorties sont redirigées).

 # apt-get install gtkterm

Pluger le CF dans la CM Alix

Brancher le [[Installer_Debian_Voyage_sur_une_carte_Alix2d2#C.C3.A2ble_null-modem|câble null-modem]]
Si vous n'en avez pas il est tout a fait possible de le bricoler vous-même.

Lancer GTKterm, configurer le port et la vitesse (mettez 9600)

Mettez la CM sous tension

[[Fichier:Alix Voyage 3.jpeg]]

Connectez vous en root
Mot de passe &quot;voyage&quot;

[[Fichier:Alix Voyage 4.jpeg]]

== Se connecter en ssh ==

&lt;code&gt;ssh root@192.168.0.8               
The authenticity of host '192.168.0.8 (192.168.0.8)' can't be established.
RSA key fingerprint is 8f:da:e5:5b:c9:c8:dd:77:c6:ed:87:2d:71:eb:46:01.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.8' (RSA) to the list of known hosts.
root@192.168.0.8's password: 
Linux voyage 2.6.32-voyage #1 PREEMPT Mon Aug 16 10:31:06 GMT 2010 i586

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
 __  __
 \ \/ /___ __  __ ___  ___  ___    Useful Commands:
  \  // _ \\ \/ /,-_ |/ _ |/ -_)     remountrw - mount disk as read-write
   \/ \___/ \  / \___,\_  |\___|     remountro - mount disk as read-only
           _/_/        _'_|          remove.docs - remove all docs and manpages 
     { V o y a g e } - L i n u x     
      &lt; http://linux.voyage.hk &gt;   Version: 0.7 (Build Date 20101015)


Last login: Sat Jan  1 00:00:59 2000
root@voyage:~#&lt;/code&gt;

== Annexe ==

=== Alix2d2 ===

[[Fichier:Photo_001.jpg]]

[[Fichier:Photo_002.jpg]]

=== Câble null-modem ===

[[Fichier:9_pin_serial_null_modem.jpg]]

[[Fichier:NULL MODEM CABLE.jpg]]

[[Utilisateur:Lol|Lol]] 29 décembre 2010 à 07:10 (CST)
[[Catégorie:Installation]]
[[Catégorie:DistributionsDérivées]]</text>
      <sha1>fm2uo1mvpbkvr6jmc7p2tnc0ijrou5a</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4008</id>
      <parentid>2619</parentid>
      <timestamp>2012-04-09T06:19:03Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Installation de Voyage */</comment>
      <text xml:space="preserve" bytes="12186">{{Sid}}


'''Debian sur une carte Alix2d2 avec Voyage (squeeze)'''

Nous allons détailler dans ce Tuto l'installation d'un système Debian ([http://linux.voyage.hk/ Voyage]) sur une [http://www.pcengines.ch/alix2d2.htm Carte Alix2d2].

''[http://linux.voyage.hk/ Voyage Linux Debian]'' est une distribution dérivée de Debian qui fonctionne sur des plates-formes x86 telles que les moteurs PC ALIX / WRAP, 45xx/48xx Soekris et des cartes à base d'Atom.

La carte [[Installer_Debian_Voyage_sur_une_carte_Alix2d2#Alix2d2|Alix2d2]] est une &quot;mini-box&quot; très peu gourmande en énergie fonctionnant avec un CPU AMD Geode 500Mhz, 256 Mo de mémoire vive et sur une carte mémoire de type CF. 
La carte Alix2d2 ne disposant pas de carte graphique, il faut donc contrôler le démarrage et l'installation de Debian au travers du port série.

== Installation de Voyage ==

Téléchargez la dernière version de voyage:

 # wget http://mirror.voyage.hk/download/voyage/voyage-current.tar.bz2
 # tar xvjf voyage-current.tar.bz2 -C ~/
 # cd voyage-current

Insérer la CF

 # dmesg
 ...
 [51649.188572]  sdd:
 [51649.194802] sd 8:0:0:1: [sdd] Assuming drive cache: write through
 [51649.194807] sd 8:0:0:1: [sdd] Attached SCSI removable disk

Faire une partition primaire de 2Go et la rendre bootable.

 # cfdisk /dev/sdd (ou un autre utilitaire de partitionnement)
 # /sbin/mkfs -t ext2 /dev/sdd1
 # tune2fs -c 0 /dev/sdd1
 tune2fs 1.41.12 (17-May-2010)
 Initialisation du nombre maximal de montages à -1

Préparez le répertoire ou sera montée la partition qui accueillera Voyage:

 # mkdir /mnt/cf

Lancement du script d'installation:

 # ./usr/local/sbin/voyage.update
&lt;code&gt;
What would you like to do?
  1 - Create new Voyage Linux disk
  2 - Update existing Voyage configuration
  3 - Exit
      (default=1 [Create new Voyage Linux disk]): 1

some mandatory options are unset, please enter them interactively
Where is the Voyage Linux distribution directory?
  (default=/root/voyage-current): 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=2 [Select Target Profile]): 1

Where is the Voyage Linux distribution directory?
  (default=/root/voyage-current): 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=2 [Select Target Profile]): 2

Please select Voyage profile:
  1 - 4501
  2 - 4511/4521
  3 - 4801
  4 - 5501
  5 - ALIX
  6 - Generic PC
  7 - Notebook (pcmcia)
  8 - WRAP
      (default=5 [ALIX]): 5

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=3 [Select Target Disk]): 3

Partitions information
major minor  #blocks  name

   8        0 1953514584 sda
   8        1   51199123 sda1
   8        2          1 sda2
   8        5   51199123 sda5
   8        6   51199123 sda6
   8        7    8193118 sda7
   8        8  768003358 sda8
   8        9 1023716352 sda9
   8       16 1953514584 sdb
   8       17 1953512001 sdb1
   8       48    7831152 sdd
   8       49    2932600 sdd1
   8       50          1 sdd2
   8       53     321563 sdd5
   8       54    2281755 sdd6
   8       55    2289412 sdd7

Which device accesses the target disk [/dev/hde]? /dev/sdd

Which partition should I use on /dev/sdd for the Voyage system [1]? 

Where can I mount the target disk [/mnt/cf]? 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=4 [Select Target Bootstrap Loader]): 4

Which loader do you want (grub or lilo) [grub]? 

Which partition is used for bootstrap [1]? 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=5 [Configure Target Console]): 5

Select terminal type:
  1 - Serial Terminal
  2 - Console Interface
      (default=1 [Serial Terminal]): 1

Please choose speed:
  1 - 2400
  2 - 4800
  3 - 9600
  4 - 19200
  5 - 38400
  6 - 57600
  7 - 115200
      (default=5 [38400]): 3

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=6 [Partition and Create Filesystem]): 6

What shall I do with your Flash Media?
  1 - Partition Flash Media and Create Filesystem
  2 - Use Flash Media as-is
      (default=1 [Partition Flash Media and Create Filesystem]): 1

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=7 [Copy Distribution to Target]): 7

    
Configuration details:
----------------------

Distribution directory:   /root/voyage-current

Disk/Flash Device:        /dev/sdd
Installation Partition:   /dev/sdd1
Create Partition and FS:  yes
Bootstrap Partition:      /dev/sdd1

Will be mounted on:       /mnt/cf

Target system profile:    ALIX
Target console:           serial
Target baud rate:         9600

Bootstrap installer:      grub
Bootstrap partition:      /dev/sdd1

OK to continue (y/n)? y

Ready to go ....
Checking that no-one is using this disk right now ...
OK

Disk /dev/sdd: 1022 cylinders, 247 heads, 62 sectors/track
Old situation:
Units = cylinders of 7840768 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sdd1   *      0+   1021    1022-   7825453+  83  Linux
/dev/sdd2          0       -       0          0    0  Empty
/dev/sdd3          0       -       0          0    0  Empty
/dev/sdd4          0       -       0          0    0  Empty
New situation:
Units = cylinders of 7840768 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sdd1   *      0+   1021    1022-   7825453+  83  Linux
/dev/sdd2          0       -       0          0    0  Empty
/dev/sdd3          0       -       0          0    0  Empty
/dev/sdd4          0       -       0          0    0  Empty
Successfully wrote the new partition table

Re-reading the partition table ...

If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes:  dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)
mke2fs 1.41.12 (17-May-2010)
Étiquette de système de fichiers=
Type de système d'exploitation : Linux
Taille de bloc=4096 (log=2)
Taille de fragment=4096 (log=2)
« Stride » = 0 blocs, « Stripe width » = 0 blocs
489600 i-noeuds, 1956363 blocs
97818 blocs (5.00%) réservés pour le super utilisateur
Premier bloc de données=0
Nombre maximum de blocs du système de fichiers=2004877312
60 groupes de blocs
32768 blocs par groupe, 32768 fragments par groupe
8160 i-noeuds par groupe
Superblocs de secours stockés sur les blocs : 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Écriture des tables d'i-noeuds : complété                        
Écriture des superblocs et de l'information de comptabilité du système de
fichiers : complété

Le système de fichiers sera automatiquement vérifié tous les 20 montages ou
après 180 jours, selon la première éventualité. Utiliser tune2fs -c ou -i
pour écraser la valeur.
tune2fs 1.41.12 (17-May-2010)
Initialisation du nombre maximal de montages à -1
Initialisation de l'intervalle de vérification à 0 secondes
Copying files .... done

Removing pcmcia from update-rc.d
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = &quot;fr_FR.UTF-8&quot;
    are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
update-rc.d: using dependency based boot sequencing
Removing dnsmasq.pxe.conf in /etc/dnsmasq.more.conf
Reconfiguring resolvconf
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = &quot;fr_FR.UTF-8&quot;
    are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = &quot;fr_FR.UTF-8&quot;
    are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
Installing grub
Copy grub files from /mnt/cf to /mnt/cf/boot/grub
Setting up grub under chroot /mnt/cf
copyfiles.sh script completed
What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=8 [Exit]): 8

&lt;/code&gt;

== Réglages ==

monter la CF

nano /etc/network/interfaces

&lt;code&gt;auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 192.168.0.8
        netmask 255.255.255.0
        broadcast 192.168.0.255

auto eth1
        iface eth1 inet static
        address 41.188.26.122
        netmask 255.255.255.248
        gateway 41.188.26.121
        network 41.188.26.0
        broadcast 41.188.26.248
        dns-nameservers 41.188.9.130 192.192.32.5&lt;/code&gt;

Régler son sources.list

== Premier démarrage ==

Pour ce premier démarrage, et afin de nous assurer que le système est fonctionnel, nous nous connecterons à la carte Alix par le biais d'un terminal (c'est sur ce terminal que toutes les sorties sont redirigées).

 # apt-get install gtkterm

Pluger le CF dans la CM Alix

Brancher le [[Installer_Debian_Voyage_sur_une_carte_Alix2d2#C.C3.A2ble_null-modem|câble null-modem]]
Si vous n'en avez pas il est tout a fait possible de le bricoler vous-même.

Lancer GTKterm, configurer le port et la vitesse (mettez 9600)

Mettez la CM sous tension

[[Fichier:Alix Voyage 3.jpeg]]

Connectez vous en root
Mot de passe &quot;voyage&quot;

[[Fichier:Alix Voyage 4.jpeg]]

== Se connecter en ssh ==

&lt;code&gt;ssh root@192.168.0.8               
The authenticity of host '192.168.0.8 (192.168.0.8)' can't be established.
RSA key fingerprint is 8f:da:e5:5b:c9:c8:dd:77:c6:ed:87:2d:71:eb:46:01.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.8' (RSA) to the list of known hosts.
root@192.168.0.8's password: 
Linux voyage 2.6.32-voyage #1 PREEMPT Mon Aug 16 10:31:06 GMT 2010 i586

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
 __  __
 \ \/ /___ __  __ ___  ___  ___    Useful Commands:
  \  // _ \\ \/ /,-_ |/ _ |/ -_)     remountrw - mount disk as read-write
   \/ \___/ \  / \___,\_  |\___|     remountro - mount disk as read-only
           _/_/        _'_|          remove.docs - remove all docs and manpages 
     { V o y a g e } - L i n u x     
      &lt; http://linux.voyage.hk &gt;   Version: 0.7 (Build Date 20101015)


Last login: Sat Jan  1 00:00:59 2000
root@voyage:~#&lt;/code&gt;

== Annexe ==

=== Alix2d2 ===

[[Fichier:Photo_001.jpg]]

[[Fichier:Photo_002.jpg]]

=== Câble null-modem ===

[[Fichier:9_pin_serial_null_modem.jpg]]

[[Fichier:NULL MODEM CABLE.jpg]]

[[Utilisateur:Lol|Lol]] 29 décembre 2010 à 07:10 (CST)
[[Catégorie:Installation]]
[[Catégorie:DistributionsDérivées]]</text>
      <sha1>5qum1tdm5iohotp8gcetu0d8koaon9u</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4009</id>
      <parentid>4008</parentid>
      <timestamp>2012-04-09T06:20:34Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Réglages */</comment>
      <text xml:space="preserve" bytes="12195">{{Sid}}


'''Debian sur une carte Alix2d2 avec Voyage (squeeze)'''

Nous allons détailler dans ce Tuto l'installation d'un système Debian ([http://linux.voyage.hk/ Voyage]) sur une [http://www.pcengines.ch/alix2d2.htm Carte Alix2d2].

''[http://linux.voyage.hk/ Voyage Linux Debian]'' est une distribution dérivée de Debian qui fonctionne sur des plates-formes x86 telles que les moteurs PC ALIX / WRAP, 45xx/48xx Soekris et des cartes à base d'Atom.

La carte [[Installer_Debian_Voyage_sur_une_carte_Alix2d2#Alix2d2|Alix2d2]] est une &quot;mini-box&quot; très peu gourmande en énergie fonctionnant avec un CPU AMD Geode 500Mhz, 256 Mo de mémoire vive et sur une carte mémoire de type CF. 
La carte Alix2d2 ne disposant pas de carte graphique, il faut donc contrôler le démarrage et l'installation de Debian au travers du port série.

== Installation de Voyage ==

Téléchargez la dernière version de voyage:

 # wget http://mirror.voyage.hk/download/voyage/voyage-current.tar.bz2
 # tar xvjf voyage-current.tar.bz2 -C ~/
 # cd voyage-current

Insérer la CF

 # dmesg
 ...
 [51649.188572]  sdd:
 [51649.194802] sd 8:0:0:1: [sdd] Assuming drive cache: write through
 [51649.194807] sd 8:0:0:1: [sdd] Attached SCSI removable disk

Faire une partition primaire de 2Go et la rendre bootable.

 # cfdisk /dev/sdd (ou un autre utilitaire de partitionnement)
 # /sbin/mkfs -t ext2 /dev/sdd1
 # tune2fs -c 0 /dev/sdd1
 tune2fs 1.41.12 (17-May-2010)
 Initialisation du nombre maximal de montages à -1

Préparez le répertoire ou sera montée la partition qui accueillera Voyage:

 # mkdir /mnt/cf

Lancement du script d'installation:

 # ./usr/local/sbin/voyage.update
&lt;code&gt;
What would you like to do?
  1 - Create new Voyage Linux disk
  2 - Update existing Voyage configuration
  3 - Exit
      (default=1 [Create new Voyage Linux disk]): 1

some mandatory options are unset, please enter them interactively
Where is the Voyage Linux distribution directory?
  (default=/root/voyage-current): 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=2 [Select Target Profile]): 1

Where is the Voyage Linux distribution directory?
  (default=/root/voyage-current): 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=2 [Select Target Profile]): 2

Please select Voyage profile:
  1 - 4501
  2 - 4511/4521
  3 - 4801
  4 - 5501
  5 - ALIX
  6 - Generic PC
  7 - Notebook (pcmcia)
  8 - WRAP
      (default=5 [ALIX]): 5

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=3 [Select Target Disk]): 3

Partitions information
major minor  #blocks  name

   8        0 1953514584 sda
   8        1   51199123 sda1
   8        2          1 sda2
   8        5   51199123 sda5
   8        6   51199123 sda6
   8        7    8193118 sda7
   8        8  768003358 sda8
   8        9 1023716352 sda9
   8       16 1953514584 sdb
   8       17 1953512001 sdb1
   8       48    7831152 sdd
   8       49    2932600 sdd1
   8       50          1 sdd2
   8       53     321563 sdd5
   8       54    2281755 sdd6
   8       55    2289412 sdd7

Which device accesses the target disk [/dev/hde]? /dev/sdd

Which partition should I use on /dev/sdd for the Voyage system [1]? 

Where can I mount the target disk [/mnt/cf]? 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=4 [Select Target Bootstrap Loader]): 4

Which loader do you want (grub or lilo) [grub]? 

Which partition is used for bootstrap [1]? 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=5 [Configure Target Console]): 5

Select terminal type:
  1 - Serial Terminal
  2 - Console Interface
      (default=1 [Serial Terminal]): 1

Please choose speed:
  1 - 2400
  2 - 4800
  3 - 9600
  4 - 19200
  5 - 38400
  6 - 57600
  7 - 115200
      (default=5 [38400]): 3

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=6 [Partition and Create Filesystem]): 6

What shall I do with your Flash Media?
  1 - Partition Flash Media and Create Filesystem
  2 - Use Flash Media as-is
      (default=1 [Partition Flash Media and Create Filesystem]): 1

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=7 [Copy Distribution to Target]): 7

    
Configuration details:
----------------------

Distribution directory:   /root/voyage-current

Disk/Flash Device:        /dev/sdd
Installation Partition:   /dev/sdd1
Create Partition and FS:  yes
Bootstrap Partition:      /dev/sdd1

Will be mounted on:       /mnt/cf

Target system profile:    ALIX
Target console:           serial
Target baud rate:         9600

Bootstrap installer:      grub
Bootstrap partition:      /dev/sdd1

OK to continue (y/n)? y

Ready to go ....
Checking that no-one is using this disk right now ...
OK

Disk /dev/sdd: 1022 cylinders, 247 heads, 62 sectors/track
Old situation:
Units = cylinders of 7840768 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sdd1   *      0+   1021    1022-   7825453+  83  Linux
/dev/sdd2          0       -       0          0    0  Empty
/dev/sdd3          0       -       0          0    0  Empty
/dev/sdd4          0       -       0          0    0  Empty
New situation:
Units = cylinders of 7840768 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sdd1   *      0+   1021    1022-   7825453+  83  Linux
/dev/sdd2          0       -       0          0    0  Empty
/dev/sdd3          0       -       0          0    0  Empty
/dev/sdd4          0       -       0          0    0  Empty
Successfully wrote the new partition table

Re-reading the partition table ...

If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes:  dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)
mke2fs 1.41.12 (17-May-2010)
Étiquette de système de fichiers=
Type de système d'exploitation : Linux
Taille de bloc=4096 (log=2)
Taille de fragment=4096 (log=2)
« Stride » = 0 blocs, « Stripe width » = 0 blocs
489600 i-noeuds, 1956363 blocs
97818 blocs (5.00%) réservés pour le super utilisateur
Premier bloc de données=0
Nombre maximum de blocs du système de fichiers=2004877312
60 groupes de blocs
32768 blocs par groupe, 32768 fragments par groupe
8160 i-noeuds par groupe
Superblocs de secours stockés sur les blocs : 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Écriture des tables d'i-noeuds : complété                        
Écriture des superblocs et de l'information de comptabilité du système de
fichiers : complété

Le système de fichiers sera automatiquement vérifié tous les 20 montages ou
après 180 jours, selon la première éventualité. Utiliser tune2fs -c ou -i
pour écraser la valeur.
tune2fs 1.41.12 (17-May-2010)
Initialisation du nombre maximal de montages à -1
Initialisation de l'intervalle de vérification à 0 secondes
Copying files .... done

Removing pcmcia from update-rc.d
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = &quot;fr_FR.UTF-8&quot;
    are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
update-rc.d: using dependency based boot sequencing
Removing dnsmasq.pxe.conf in /etc/dnsmasq.more.conf
Reconfiguring resolvconf
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = &quot;fr_FR.UTF-8&quot;
    are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = &quot;fr_FR.UTF-8&quot;
    are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
Installing grub
Copy grub files from /mnt/cf to /mnt/cf/boot/grub
Setting up grub under chroot /mnt/cf
copyfiles.sh script completed
What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=8 [Exit]): 8

&lt;/code&gt;

== Réglages ==

monter la CF

nano /etc/network/interfaces

&lt;code&gt;auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 192.168.0.8
        netmask 255.255.255.0
        broadcast 192.168.0.255

auto eth1
        iface eth1 inet static
        address 41.188.xxx.xxx
        netmask 255.255.255.248
        gateway 41.188.xxx.xxx
        network 41.188.xxx.0
        broadcast 41.188.xxx.248
        dns-nameservers 41.188.xxx.xxx 192.192.xxx.xxx&lt;/code&gt;

Régler son sources.list

== Premier démarrage ==

Pour ce premier démarrage, et afin de nous assurer que le système est fonctionnel, nous nous connecterons à la carte Alix par le biais d'un terminal (c'est sur ce terminal que toutes les sorties sont redirigées).

 # apt-get install gtkterm

Pluger le CF dans la CM Alix

Brancher le [[Installer_Debian_Voyage_sur_une_carte_Alix2d2#C.C3.A2ble_null-modem|câble null-modem]]
Si vous n'en avez pas il est tout a fait possible de le bricoler vous-même.

Lancer GTKterm, configurer le port et la vitesse (mettez 9600)

Mettez la CM sous tension

[[Fichier:Alix Voyage 3.jpeg]]

Connectez vous en root
Mot de passe &quot;voyage&quot;

[[Fichier:Alix Voyage 4.jpeg]]

== Se connecter en ssh ==

&lt;code&gt;ssh root@192.168.0.8               
The authenticity of host '192.168.0.8 (192.168.0.8)' can't be established.
RSA key fingerprint is 8f:da:e5:5b:c9:c8:dd:77:c6:ed:87:2d:71:eb:46:01.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.8' (RSA) to the list of known hosts.
root@192.168.0.8's password: 
Linux voyage 2.6.32-voyage #1 PREEMPT Mon Aug 16 10:31:06 GMT 2010 i586

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
 __  __
 \ \/ /___ __  __ ___  ___  ___    Useful Commands:
  \  // _ \\ \/ /,-_ |/ _ |/ -_)     remountrw - mount disk as read-write
   \/ \___/ \  / \___,\_  |\___|     remountro - mount disk as read-only
           _/_/        _'_|          remove.docs - remove all docs and manpages 
     { V o y a g e } - L i n u x     
      &lt; http://linux.voyage.hk &gt;   Version: 0.7 (Build Date 20101015)


Last login: Sat Jan  1 00:00:59 2000
root@voyage:~#&lt;/code&gt;

== Annexe ==

=== Alix2d2 ===

[[Fichier:Photo_001.jpg]]

[[Fichier:Photo_002.jpg]]

=== Câble null-modem ===

[[Fichier:9_pin_serial_null_modem.jpg]]

[[Fichier:NULL MODEM CABLE.jpg]]

[[Utilisateur:Lol|Lol]] 29 décembre 2010 à 07:10 (CST)
[[Catégorie:Installation]]
[[Catégorie:DistributionsDérivées]]</text>
      <sha1>rroak5vp37q7pj84pcv3f0lxk3u93bw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4010</id>
      <parentid>4009</parentid>
      <timestamp>2012-04-09T06:24:53Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Réglages */</comment>
      <text xml:space="preserve" bytes="12306">{{Sid}}


'''Debian sur une carte Alix2d2 avec Voyage (squeeze)'''

Nous allons détailler dans ce Tuto l'installation d'un système Debian ([http://linux.voyage.hk/ Voyage]) sur une [http://www.pcengines.ch/alix2d2.htm Carte Alix2d2].

''[http://linux.voyage.hk/ Voyage Linux Debian]'' est une distribution dérivée de Debian qui fonctionne sur des plates-formes x86 telles que les moteurs PC ALIX / WRAP, 45xx/48xx Soekris et des cartes à base d'Atom.

La carte [[Installer_Debian_Voyage_sur_une_carte_Alix2d2#Alix2d2|Alix2d2]] est une &quot;mini-box&quot; très peu gourmande en énergie fonctionnant avec un CPU AMD Geode 500Mhz, 256 Mo de mémoire vive et sur une carte mémoire de type CF. 
La carte Alix2d2 ne disposant pas de carte graphique, il faut donc contrôler le démarrage et l'installation de Debian au travers du port série.

== Installation de Voyage ==

Téléchargez la dernière version de voyage:

 # wget http://mirror.voyage.hk/download/voyage/voyage-current.tar.bz2
 # tar xvjf voyage-current.tar.bz2 -C ~/
 # cd voyage-current

Insérer la CF

 # dmesg
 ...
 [51649.188572]  sdd:
 [51649.194802] sd 8:0:0:1: [sdd] Assuming drive cache: write through
 [51649.194807] sd 8:0:0:1: [sdd] Attached SCSI removable disk

Faire une partition primaire de 2Go et la rendre bootable.

 # cfdisk /dev/sdd (ou un autre utilitaire de partitionnement)
 # /sbin/mkfs -t ext2 /dev/sdd1
 # tune2fs -c 0 /dev/sdd1
 tune2fs 1.41.12 (17-May-2010)
 Initialisation du nombre maximal de montages à -1

Préparez le répertoire ou sera montée la partition qui accueillera Voyage:

 # mkdir /mnt/cf

Lancement du script d'installation:

 # ./usr/local/sbin/voyage.update
&lt;code&gt;
What would you like to do?
  1 - Create new Voyage Linux disk
  2 - Update existing Voyage configuration
  3 - Exit
      (default=1 [Create new Voyage Linux disk]): 1

some mandatory options are unset, please enter them interactively
Where is the Voyage Linux distribution directory?
  (default=/root/voyage-current): 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=2 [Select Target Profile]): 1

Where is the Voyage Linux distribution directory?
  (default=/root/voyage-current): 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=2 [Select Target Profile]): 2

Please select Voyage profile:
  1 - 4501
  2 - 4511/4521
  3 - 4801
  4 - 5501
  5 - ALIX
  6 - Generic PC
  7 - Notebook (pcmcia)
  8 - WRAP
      (default=5 [ALIX]): 5

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=3 [Select Target Disk]): 3

Partitions information
major minor  #blocks  name

   8        0 1953514584 sda
   8        1   51199123 sda1
   8        2          1 sda2
   8        5   51199123 sda5
   8        6   51199123 sda6
   8        7    8193118 sda7
   8        8  768003358 sda8
   8        9 1023716352 sda9
   8       16 1953514584 sdb
   8       17 1953512001 sdb1
   8       48    7831152 sdd
   8       49    2932600 sdd1
   8       50          1 sdd2
   8       53     321563 sdd5
   8       54    2281755 sdd6
   8       55    2289412 sdd7

Which device accesses the target disk [/dev/hde]? /dev/sdd

Which partition should I use on /dev/sdd for the Voyage system [1]? 

Where can I mount the target disk [/mnt/cf]? 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=4 [Select Target Bootstrap Loader]): 4

Which loader do you want (grub or lilo) [grub]? 

Which partition is used for bootstrap [1]? 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=5 [Configure Target Console]): 5

Select terminal type:
  1 - Serial Terminal
  2 - Console Interface
      (default=1 [Serial Terminal]): 1

Please choose speed:
  1 - 2400
  2 - 4800
  3 - 9600
  4 - 19200
  5 - 38400
  6 - 57600
  7 - 115200
      (default=5 [38400]): 3

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=6 [Partition and Create Filesystem]): 6

What shall I do with your Flash Media?
  1 - Partition Flash Media and Create Filesystem
  2 - Use Flash Media as-is
      (default=1 [Partition Flash Media and Create Filesystem]): 1

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=7 [Copy Distribution to Target]): 7

    
Configuration details:
----------------------

Distribution directory:   /root/voyage-current

Disk/Flash Device:        /dev/sdd
Installation Partition:   /dev/sdd1
Create Partition and FS:  yes
Bootstrap Partition:      /dev/sdd1

Will be mounted on:       /mnt/cf

Target system profile:    ALIX
Target console:           serial
Target baud rate:         9600

Bootstrap installer:      grub
Bootstrap partition:      /dev/sdd1

OK to continue (y/n)? y

Ready to go ....
Checking that no-one is using this disk right now ...
OK

Disk /dev/sdd: 1022 cylinders, 247 heads, 62 sectors/track
Old situation:
Units = cylinders of 7840768 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sdd1   *      0+   1021    1022-   7825453+  83  Linux
/dev/sdd2          0       -       0          0    0  Empty
/dev/sdd3          0       -       0          0    0  Empty
/dev/sdd4          0       -       0          0    0  Empty
New situation:
Units = cylinders of 7840768 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sdd1   *      0+   1021    1022-   7825453+  83  Linux
/dev/sdd2          0       -       0          0    0  Empty
/dev/sdd3          0       -       0          0    0  Empty
/dev/sdd4          0       -       0          0    0  Empty
Successfully wrote the new partition table

Re-reading the partition table ...

If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes:  dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)
mke2fs 1.41.12 (17-May-2010)
Étiquette de système de fichiers=
Type de système d'exploitation : Linux
Taille de bloc=4096 (log=2)
Taille de fragment=4096 (log=2)
« Stride » = 0 blocs, « Stripe width » = 0 blocs
489600 i-noeuds, 1956363 blocs
97818 blocs (5.00%) réservés pour le super utilisateur
Premier bloc de données=0
Nombre maximum de blocs du système de fichiers=2004877312
60 groupes de blocs
32768 blocs par groupe, 32768 fragments par groupe
8160 i-noeuds par groupe
Superblocs de secours stockés sur les blocs : 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Écriture des tables d'i-noeuds : complété                        
Écriture des superblocs et de l'information de comptabilité du système de
fichiers : complété

Le système de fichiers sera automatiquement vérifié tous les 20 montages ou
après 180 jours, selon la première éventualité. Utiliser tune2fs -c ou -i
pour écraser la valeur.
tune2fs 1.41.12 (17-May-2010)
Initialisation du nombre maximal de montages à -1
Initialisation de l'intervalle de vérification à 0 secondes
Copying files .... done

Removing pcmcia from update-rc.d
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = &quot;fr_FR.UTF-8&quot;
    are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
update-rc.d: using dependency based boot sequencing
Removing dnsmasq.pxe.conf in /etc/dnsmasq.more.conf
Reconfiguring resolvconf
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = &quot;fr_FR.UTF-8&quot;
    are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = &quot;fr_FR.UTF-8&quot;
    are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
Installing grub
Copy grub files from /mnt/cf to /mnt/cf/boot/grub
Setting up grub under chroot /mnt/cf
copyfiles.sh script completed
What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=8 [Exit]): 8

&lt;/code&gt;

== Réglages ==

monter la CF

 # mount /dev/sdd1 /mnt/cf

Réglez le réseau:
 # nano /mnt/cf/etc/network/interfaces

&lt;code&gt;auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 192.168.0.8
        netmask 255.255.255.0
        broadcast 192.168.0.255

auto eth1
        iface eth1 inet static
        address 41.188.xxx.xxx
        netmask 255.255.255.248
        gateway 41.188.xxx.xxx
        network 41.188.xxx.0
        broadcast 41.188.xxx.248
        dns-nameservers 41.188.xxx.xxx 192.192.xxx.xxx&lt;/code&gt;

Régler son sources.list si nécessaire:
 # nano /mnt/cf/etc/apt/sources.list

== Premier démarrage ==

Pour ce premier démarrage, et afin de nous assurer que le système est fonctionnel, nous nous connecterons à la carte Alix par le biais d'un terminal (c'est sur ce terminal que toutes les sorties sont redirigées).

 # apt-get install gtkterm

Pluger le CF dans la CM Alix

Brancher le [[Installer_Debian_Voyage_sur_une_carte_Alix2d2#C.C3.A2ble_null-modem|câble null-modem]]
Si vous n'en avez pas il est tout a fait possible de le bricoler vous-même.

Lancer GTKterm, configurer le port et la vitesse (mettez 9600)

Mettez la CM sous tension

[[Fichier:Alix Voyage 3.jpeg]]

Connectez vous en root
Mot de passe &quot;voyage&quot;

[[Fichier:Alix Voyage 4.jpeg]]

== Se connecter en ssh ==

&lt;code&gt;ssh root@192.168.0.8               
The authenticity of host '192.168.0.8 (192.168.0.8)' can't be established.
RSA key fingerprint is 8f:da:e5:5b:c9:c8:dd:77:c6:ed:87:2d:71:eb:46:01.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.8' (RSA) to the list of known hosts.
root@192.168.0.8's password: 
Linux voyage 2.6.32-voyage #1 PREEMPT Mon Aug 16 10:31:06 GMT 2010 i586

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
 __  __
 \ \/ /___ __  __ ___  ___  ___    Useful Commands:
  \  // _ \\ \/ /,-_ |/ _ |/ -_)     remountrw - mount disk as read-write
   \/ \___/ \  / \___,\_  |\___|     remountro - mount disk as read-only
           _/_/        _'_|          remove.docs - remove all docs and manpages 
     { V o y a g e } - L i n u x     
      &lt; http://linux.voyage.hk &gt;   Version: 0.7 (Build Date 20101015)


Last login: Sat Jan  1 00:00:59 2000
root@voyage:~#&lt;/code&gt;

== Annexe ==

=== Alix2d2 ===

[[Fichier:Photo_001.jpg]]

[[Fichier:Photo_002.jpg]]

=== Câble null-modem ===

[[Fichier:9_pin_serial_null_modem.jpg]]

[[Fichier:NULL MODEM CABLE.jpg]]

[[Utilisateur:Lol|Lol]] 29 décembre 2010 à 07:10 (CST)
[[Catégorie:Installation]]
[[Catégorie:DistributionsDérivées]]</text>
      <sha1>2gry08zsrzexmq5mczzacdro5r8cnuo</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4011</id>
      <parentid>4010</parentid>
      <timestamp>2012-04-09T06:37:20Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>{{Stable}}</comment>
      <text xml:space="preserve" bytes="12309">{{Stable}}


'''Debian sur une carte Alix2d2 avec Voyage (squeeze)'''

Nous allons détailler dans ce Tuto l'installation d'un système Debian ([http://linux.voyage.hk/ Voyage]) sur une [http://www.pcengines.ch/alix2d2.htm Carte Alix2d2].

''[http://linux.voyage.hk/ Voyage Linux Debian]'' est une distribution dérivée de Debian qui fonctionne sur des plates-formes x86 telles que les moteurs PC ALIX / WRAP, 45xx/48xx Soekris et des cartes à base d'Atom.

La carte [[Installer_Debian_Voyage_sur_une_carte_Alix2d2#Alix2d2|Alix2d2]] est une &quot;mini-box&quot; très peu gourmande en énergie fonctionnant avec un CPU AMD Geode 500Mhz, 256 Mo de mémoire vive et sur une carte mémoire de type CF. 
La carte Alix2d2 ne disposant pas de carte graphique, il faut donc contrôler le démarrage et l'installation de Debian au travers du port série.

== Installation de Voyage ==

Téléchargez la dernière version de voyage:

 # wget http://mirror.voyage.hk/download/voyage/voyage-current.tar.bz2
 # tar xvjf voyage-current.tar.bz2 -C ~/
 # cd voyage-current

Insérer la CF

 # dmesg
 ...
 [51649.188572]  sdd:
 [51649.194802] sd 8:0:0:1: [sdd] Assuming drive cache: write through
 [51649.194807] sd 8:0:0:1: [sdd] Attached SCSI removable disk

Faire une partition primaire de 2Go et la rendre bootable.

 # cfdisk /dev/sdd (ou un autre utilitaire de partitionnement)
 # /sbin/mkfs -t ext2 /dev/sdd1
 # tune2fs -c 0 /dev/sdd1
 tune2fs 1.41.12 (17-May-2010)
 Initialisation du nombre maximal de montages à -1

Préparez le répertoire ou sera montée la partition qui accueillera Voyage:

 # mkdir /mnt/cf

Lancement du script d'installation:

 # ./usr/local/sbin/voyage.update
&lt;code&gt;
What would you like to do?
  1 - Create new Voyage Linux disk
  2 - Update existing Voyage configuration
  3 - Exit
      (default=1 [Create new Voyage Linux disk]): 1

some mandatory options are unset, please enter them interactively
Where is the Voyage Linux distribution directory?
  (default=/root/voyage-current): 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=2 [Select Target Profile]): 1

Where is the Voyage Linux distribution directory?
  (default=/root/voyage-current): 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=2 [Select Target Profile]): 2

Please select Voyage profile:
  1 - 4501
  2 - 4511/4521
  3 - 4801
  4 - 5501
  5 - ALIX
  6 - Generic PC
  7 - Notebook (pcmcia)
  8 - WRAP
      (default=5 [ALIX]): 5

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=3 [Select Target Disk]): 3

Partitions information
major minor  #blocks  name

   8        0 1953514584 sda
   8        1   51199123 sda1
   8        2          1 sda2
   8        5   51199123 sda5
   8        6   51199123 sda6
   8        7    8193118 sda7
   8        8  768003358 sda8
   8        9 1023716352 sda9
   8       16 1953514584 sdb
   8       17 1953512001 sdb1
   8       48    7831152 sdd
   8       49    2932600 sdd1
   8       50          1 sdd2
   8       53     321563 sdd5
   8       54    2281755 sdd6
   8       55    2289412 sdd7

Which device accesses the target disk [/dev/hde]? /dev/sdd

Which partition should I use on /dev/sdd for the Voyage system [1]? 

Where can I mount the target disk [/mnt/cf]? 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=4 [Select Target Bootstrap Loader]): 4

Which loader do you want (grub or lilo) [grub]? 

Which partition is used for bootstrap [1]? 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=5 [Configure Target Console]): 5

Select terminal type:
  1 - Serial Terminal
  2 - Console Interface
      (default=1 [Serial Terminal]): 1

Please choose speed:
  1 - 2400
  2 - 4800
  3 - 9600
  4 - 19200
  5 - 38400
  6 - 57600
  7 - 115200
      (default=5 [38400]): 3

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=6 [Partition and Create Filesystem]): 6

What shall I do with your Flash Media?
  1 - Partition Flash Media and Create Filesystem
  2 - Use Flash Media as-is
      (default=1 [Partition Flash Media and Create Filesystem]): 1

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=7 [Copy Distribution to Target]): 7

    
Configuration details:
----------------------

Distribution directory:   /root/voyage-current

Disk/Flash Device:        /dev/sdd
Installation Partition:   /dev/sdd1
Create Partition and FS:  yes
Bootstrap Partition:      /dev/sdd1

Will be mounted on:       /mnt/cf

Target system profile:    ALIX
Target console:           serial
Target baud rate:         9600

Bootstrap installer:      grub
Bootstrap partition:      /dev/sdd1

OK to continue (y/n)? y

Ready to go ....
Checking that no-one is using this disk right now ...
OK

Disk /dev/sdd: 1022 cylinders, 247 heads, 62 sectors/track
Old situation:
Units = cylinders of 7840768 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sdd1   *      0+   1021    1022-   7825453+  83  Linux
/dev/sdd2          0       -       0          0    0  Empty
/dev/sdd3          0       -       0          0    0  Empty
/dev/sdd4          0       -       0          0    0  Empty
New situation:
Units = cylinders of 7840768 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sdd1   *      0+   1021    1022-   7825453+  83  Linux
/dev/sdd2          0       -       0          0    0  Empty
/dev/sdd3          0       -       0          0    0  Empty
/dev/sdd4          0       -       0          0    0  Empty
Successfully wrote the new partition table

Re-reading the partition table ...

If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes:  dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)
mke2fs 1.41.12 (17-May-2010)
Étiquette de système de fichiers=
Type de système d'exploitation : Linux
Taille de bloc=4096 (log=2)
Taille de fragment=4096 (log=2)
« Stride » = 0 blocs, « Stripe width » = 0 blocs
489600 i-noeuds, 1956363 blocs
97818 blocs (5.00%) réservés pour le super utilisateur
Premier bloc de données=0
Nombre maximum de blocs du système de fichiers=2004877312
60 groupes de blocs
32768 blocs par groupe, 32768 fragments par groupe
8160 i-noeuds par groupe
Superblocs de secours stockés sur les blocs : 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Écriture des tables d'i-noeuds : complété                        
Écriture des superblocs et de l'information de comptabilité du système de
fichiers : complété

Le système de fichiers sera automatiquement vérifié tous les 20 montages ou
après 180 jours, selon la première éventualité. Utiliser tune2fs -c ou -i
pour écraser la valeur.
tune2fs 1.41.12 (17-May-2010)
Initialisation du nombre maximal de montages à -1
Initialisation de l'intervalle de vérification à 0 secondes
Copying files .... done

Removing pcmcia from update-rc.d
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = &quot;fr_FR.UTF-8&quot;
    are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
update-rc.d: using dependency based boot sequencing
Removing dnsmasq.pxe.conf in /etc/dnsmasq.more.conf
Reconfiguring resolvconf
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = &quot;fr_FR.UTF-8&quot;
    are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = &quot;fr_FR.UTF-8&quot;
    are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
Installing grub
Copy grub files from /mnt/cf to /mnt/cf/boot/grub
Setting up grub under chroot /mnt/cf
copyfiles.sh script completed
What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=8 [Exit]): 8

&lt;/code&gt;

== Réglages ==

monter la CF

 # mount /dev/sdd1 /mnt/cf

Réglez le réseau:
 # nano /mnt/cf/etc/network/interfaces

&lt;code&gt;auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 192.168.0.8
        netmask 255.255.255.0
        broadcast 192.168.0.255

auto eth1
        iface eth1 inet static
        address 41.188.xxx.xxx
        netmask 255.255.255.248
        gateway 41.188.xxx.xxx
        network 41.188.xxx.0
        broadcast 41.188.xxx.248
        dns-nameservers 41.188.xxx.xxx 192.192.xxx.xxx&lt;/code&gt;

Régler son sources.list si nécessaire:
 # nano /mnt/cf/etc/apt/sources.list

== Premier démarrage ==

Pour ce premier démarrage, et afin de nous assurer que le système est fonctionnel, nous nous connecterons à la carte Alix par le biais d'un terminal (c'est sur ce terminal que toutes les sorties sont redirigées).

 # apt-get install gtkterm

Pluger le CF dans la CM Alix

Brancher le [[Installer_Debian_Voyage_sur_une_carte_Alix2d2#C.C3.A2ble_null-modem|câble null-modem]]
Si vous n'en avez pas il est tout a fait possible de le bricoler vous-même.

Lancer GTKterm, configurer le port et la vitesse (mettez 9600)

Mettez la CM sous tension

[[Fichier:Alix Voyage 3.jpeg]]

Connectez vous en root
Mot de passe &quot;voyage&quot;

[[Fichier:Alix Voyage 4.jpeg]]

== Se connecter en ssh ==

&lt;code&gt;ssh root@192.168.0.8               
The authenticity of host '192.168.0.8 (192.168.0.8)' can't be established.
RSA key fingerprint is 8f:da:e5:5b:c9:c8:dd:77:c6:ed:87:2d:71:eb:46:01.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.8' (RSA) to the list of known hosts.
root@192.168.0.8's password: 
Linux voyage 2.6.32-voyage #1 PREEMPT Mon Aug 16 10:31:06 GMT 2010 i586

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
 __  __
 \ \/ /___ __  __ ___  ___  ___    Useful Commands:
  \  // _ \\ \/ /,-_ |/ _ |/ -_)     remountrw - mount disk as read-write
   \/ \___/ \  / \___,\_  |\___|     remountro - mount disk as read-only
           _/_/        _'_|          remove.docs - remove all docs and manpages 
     { V o y a g e } - L i n u x     
      &lt; http://linux.voyage.hk &gt;   Version: 0.7 (Build Date 20101015)


Last login: Sat Jan  1 00:00:59 2000
root@voyage:~#&lt;/code&gt;

== Annexe ==

=== Alix2d2 ===

[[Fichier:Photo_001.jpg]]

[[Fichier:Photo_002.jpg]]

=== Câble null-modem ===

[[Fichier:9_pin_serial_null_modem.jpg]]

[[Fichier:NULL MODEM CABLE.jpg]]

[[Utilisateur:Lol|Lol]] 29 décembre 2010 à 07:10 (CST)
[[Catégorie:Installation]]
[[Catégorie:DistributionsDérivées]]</text>
      <sha1>8wl1fmvtih962kbnnyste2xreaz7uku</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4012</id>
      <parentid>4011</parentid>
      <timestamp>2012-04-09T06:43:43Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Premier démarrage */</comment>
      <text xml:space="preserve" bytes="12499">{{Stable}}


'''Debian sur une carte Alix2d2 avec Voyage (squeeze)'''

Nous allons détailler dans ce Tuto l'installation d'un système Debian ([http://linux.voyage.hk/ Voyage]) sur une [http://www.pcengines.ch/alix2d2.htm Carte Alix2d2].

''[http://linux.voyage.hk/ Voyage Linux Debian]'' est une distribution dérivée de Debian qui fonctionne sur des plates-formes x86 telles que les moteurs PC ALIX / WRAP, 45xx/48xx Soekris et des cartes à base d'Atom.

La carte [[Installer_Debian_Voyage_sur_une_carte_Alix2d2#Alix2d2|Alix2d2]] est une &quot;mini-box&quot; très peu gourmande en énergie fonctionnant avec un CPU AMD Geode 500Mhz, 256 Mo de mémoire vive et sur une carte mémoire de type CF. 
La carte Alix2d2 ne disposant pas de carte graphique, il faut donc contrôler le démarrage et l'installation de Debian au travers du port série.

== Installation de Voyage ==

Téléchargez la dernière version de voyage:

 # wget http://mirror.voyage.hk/download/voyage/voyage-current.tar.bz2
 # tar xvjf voyage-current.tar.bz2 -C ~/
 # cd voyage-current

Insérer la CF

 # dmesg
 ...
 [51649.188572]  sdd:
 [51649.194802] sd 8:0:0:1: [sdd] Assuming drive cache: write through
 [51649.194807] sd 8:0:0:1: [sdd] Attached SCSI removable disk

Faire une partition primaire de 2Go et la rendre bootable.

 # cfdisk /dev/sdd (ou un autre utilitaire de partitionnement)
 # /sbin/mkfs -t ext2 /dev/sdd1
 # tune2fs -c 0 /dev/sdd1
 tune2fs 1.41.12 (17-May-2010)
 Initialisation du nombre maximal de montages à -1

Préparez le répertoire ou sera montée la partition qui accueillera Voyage:

 # mkdir /mnt/cf

Lancement du script d'installation:

 # ./usr/local/sbin/voyage.update
&lt;code&gt;
What would you like to do?
  1 - Create new Voyage Linux disk
  2 - Update existing Voyage configuration
  3 - Exit
      (default=1 [Create new Voyage Linux disk]): 1

some mandatory options are unset, please enter them interactively
Where is the Voyage Linux distribution directory?
  (default=/root/voyage-current): 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=2 [Select Target Profile]): 1

Where is the Voyage Linux distribution directory?
  (default=/root/voyage-current): 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=2 [Select Target Profile]): 2

Please select Voyage profile:
  1 - 4501
  2 - 4511/4521
  3 - 4801
  4 - 5501
  5 - ALIX
  6 - Generic PC
  7 - Notebook (pcmcia)
  8 - WRAP
      (default=5 [ALIX]): 5

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=3 [Select Target Disk]): 3

Partitions information
major minor  #blocks  name

   8        0 1953514584 sda
   8        1   51199123 sda1
   8        2          1 sda2
   8        5   51199123 sda5
   8        6   51199123 sda6
   8        7    8193118 sda7
   8        8  768003358 sda8
   8        9 1023716352 sda9
   8       16 1953514584 sdb
   8       17 1953512001 sdb1
   8       48    7831152 sdd
   8       49    2932600 sdd1
   8       50          1 sdd2
   8       53     321563 sdd5
   8       54    2281755 sdd6
   8       55    2289412 sdd7

Which device accesses the target disk [/dev/hde]? /dev/sdd

Which partition should I use on /dev/sdd for the Voyage system [1]? 

Where can I mount the target disk [/mnt/cf]? 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=4 [Select Target Bootstrap Loader]): 4

Which loader do you want (grub or lilo) [grub]? 

Which partition is used for bootstrap [1]? 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=5 [Configure Target Console]): 5

Select terminal type:
  1 - Serial Terminal
  2 - Console Interface
      (default=1 [Serial Terminal]): 1

Please choose speed:
  1 - 2400
  2 - 4800
  3 - 9600
  4 - 19200
  5 - 38400
  6 - 57600
  7 - 115200
      (default=5 [38400]): 3

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=6 [Partition and Create Filesystem]): 6

What shall I do with your Flash Media?
  1 - Partition Flash Media and Create Filesystem
  2 - Use Flash Media as-is
      (default=1 [Partition Flash Media and Create Filesystem]): 1

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=7 [Copy Distribution to Target]): 7

    
Configuration details:
----------------------

Distribution directory:   /root/voyage-current

Disk/Flash Device:        /dev/sdd
Installation Partition:   /dev/sdd1
Create Partition and FS:  yes
Bootstrap Partition:      /dev/sdd1

Will be mounted on:       /mnt/cf

Target system profile:    ALIX
Target console:           serial
Target baud rate:         9600

Bootstrap installer:      grub
Bootstrap partition:      /dev/sdd1

OK to continue (y/n)? y

Ready to go ....
Checking that no-one is using this disk right now ...
OK

Disk /dev/sdd: 1022 cylinders, 247 heads, 62 sectors/track
Old situation:
Units = cylinders of 7840768 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sdd1   *      0+   1021    1022-   7825453+  83  Linux
/dev/sdd2          0       -       0          0    0  Empty
/dev/sdd3          0       -       0          0    0  Empty
/dev/sdd4          0       -       0          0    0  Empty
New situation:
Units = cylinders of 7840768 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sdd1   *      0+   1021    1022-   7825453+  83  Linux
/dev/sdd2          0       -       0          0    0  Empty
/dev/sdd3          0       -       0          0    0  Empty
/dev/sdd4          0       -       0          0    0  Empty
Successfully wrote the new partition table

Re-reading the partition table ...

If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes:  dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)
mke2fs 1.41.12 (17-May-2010)
Étiquette de système de fichiers=
Type de système d'exploitation : Linux
Taille de bloc=4096 (log=2)
Taille de fragment=4096 (log=2)
« Stride » = 0 blocs, « Stripe width » = 0 blocs
489600 i-noeuds, 1956363 blocs
97818 blocs (5.00%) réservés pour le super utilisateur
Premier bloc de données=0
Nombre maximum de blocs du système de fichiers=2004877312
60 groupes de blocs
32768 blocs par groupe, 32768 fragments par groupe
8160 i-noeuds par groupe
Superblocs de secours stockés sur les blocs : 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Écriture des tables d'i-noeuds : complété                        
Écriture des superblocs et de l'information de comptabilité du système de
fichiers : complété

Le système de fichiers sera automatiquement vérifié tous les 20 montages ou
après 180 jours, selon la première éventualité. Utiliser tune2fs -c ou -i
pour écraser la valeur.
tune2fs 1.41.12 (17-May-2010)
Initialisation du nombre maximal de montages à -1
Initialisation de l'intervalle de vérification à 0 secondes
Copying files .... done

Removing pcmcia from update-rc.d
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = &quot;fr_FR.UTF-8&quot;
    are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
update-rc.d: using dependency based boot sequencing
Removing dnsmasq.pxe.conf in /etc/dnsmasq.more.conf
Reconfiguring resolvconf
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = &quot;fr_FR.UTF-8&quot;
    are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = &quot;fr_FR.UTF-8&quot;
    are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
Installing grub
Copy grub files from /mnt/cf to /mnt/cf/boot/grub
Setting up grub under chroot /mnt/cf
copyfiles.sh script completed
What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=8 [Exit]): 8

&lt;/code&gt;

== Réglages ==

monter la CF

 # mount /dev/sdd1 /mnt/cf

Réglez le réseau:
 # nano /mnt/cf/etc/network/interfaces

&lt;code&gt;auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 192.168.0.8
        netmask 255.255.255.0
        broadcast 192.168.0.255

auto eth1
        iface eth1 inet static
        address 41.188.xxx.xxx
        netmask 255.255.255.248
        gateway 41.188.xxx.xxx
        network 41.188.xxx.0
        broadcast 41.188.xxx.248
        dns-nameservers 41.188.xxx.xxx 192.192.xxx.xxx&lt;/code&gt;

Régler son sources.list si nécessaire:
 # nano /mnt/cf/etc/apt/sources.list

== Premier démarrage ==

Pour ce premier démarrage, et afin de nous assurer que le système est fonctionnel, nous nous connecterons à la carte Alix par le biais d'un terminal (c'est sur ce terminal que toutes les sorties sont redirigées).

 # apt-get install gtkterm

Pluger le CF dans la CM Alix

Brancher le [[Installer_Debian_Voyage_sur_une_carte_Alix2d2#C.C3.A2ble_null-modem|câble null-modem]]
Si vous n'en avez pas il est tout a fait possible de le bricoler vous-même.

Lancer GTKterm, configurer le port et la vitesse (mettez 9600)

Vous remarquerez que j'ai utilisé le port /dev/ttyUSB0; C'est parce que j'ai un adaptateur USB/COM.
Sur votre machine, si vous avez un port COM, ce sera de ce genre: /dev/tty0

Mettez la CM sous tension

[[Fichier:Alix Voyage 3.jpeg|960px]]

Connectez vous en root
Mot de passe &quot;voyage&quot;

[[Fichier:Alix Voyage 4.jpeg|960px]]

== Se connecter en ssh ==

&lt;code&gt;ssh root@192.168.0.8               
The authenticity of host '192.168.0.8 (192.168.0.8)' can't be established.
RSA key fingerprint is 8f:da:e5:5b:c9:c8:dd:77:c6:ed:87:2d:71:eb:46:01.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.8' (RSA) to the list of known hosts.
root@192.168.0.8's password: 
Linux voyage 2.6.32-voyage #1 PREEMPT Mon Aug 16 10:31:06 GMT 2010 i586

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
 __  __
 \ \/ /___ __  __ ___  ___  ___    Useful Commands:
  \  // _ \\ \/ /,-_ |/ _ |/ -_)     remountrw - mount disk as read-write
   \/ \___/ \  / \___,\_  |\___|     remountro - mount disk as read-only
           _/_/        _'_|          remove.docs - remove all docs and manpages 
     { V o y a g e } - L i n u x     
      &lt; http://linux.voyage.hk &gt;   Version: 0.7 (Build Date 20101015)


Last login: Sat Jan  1 00:00:59 2000
root@voyage:~#&lt;/code&gt;

== Annexe ==

=== Alix2d2 ===

[[Fichier:Photo_001.jpg]]

[[Fichier:Photo_002.jpg]]

=== Câble null-modem ===

[[Fichier:9_pin_serial_null_modem.jpg]]

[[Fichier:NULL MODEM CABLE.jpg]]

[[Utilisateur:Lol|Lol]] 29 décembre 2010 à 07:10 (CST)
[[Catégorie:Installation]]
[[Catégorie:DistributionsDérivées]]</text>
      <sha1>qgdip8lda8w2zdiwm2n4pambhfjk0ra</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4060</id>
      <parentid>4012</parentid>
      <timestamp>2012-04-25T06:03:03Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="12514">{{Stable}}


'''Debian sur une carte [[Matériel::Alix2d2]] avec Voyage (squeeze)'''

Nous allons détailler dans ce Tuto l'installation d'un système Debian ([http://linux.voyage.hk/ Voyage]) sur une [http://www.pcengines.ch/alix2d2.htm Carte Alix2d2].

''[http://linux.voyage.hk/ Voyage Linux Debian]'' est une distribution dérivée de Debian qui fonctionne sur des plates-formes x86 telles que les moteurs PC ALIX / WRAP, 45xx/48xx Soekris et des cartes à base d'Atom.

La carte [[Installer_Debian_Voyage_sur_une_carte_Alix2d2#Alix2d2|Alix2d2]] est une &quot;mini-box&quot; très peu gourmande en énergie fonctionnant avec un CPU AMD Geode 500Mhz, 256 Mo de mémoire vive et sur une carte mémoire de type CF. 
La carte Alix2d2 ne disposant pas de carte graphique, il faut donc contrôler le démarrage et l'installation de Debian au travers du port série.

== Installation de Voyage ==

Téléchargez la dernière version de voyage:

 # wget http://mirror.voyage.hk/download/voyage/voyage-current.tar.bz2
 # tar xvjf voyage-current.tar.bz2 -C ~/
 # cd voyage-current

Insérer la CF

 # dmesg
 ...
 [51649.188572]  sdd:
 [51649.194802] sd 8:0:0:1: [sdd] Assuming drive cache: write through
 [51649.194807] sd 8:0:0:1: [sdd] Attached SCSI removable disk

Faire une partition primaire de 2Go et la rendre bootable.

 # cfdisk /dev/sdd (ou un autre utilitaire de partitionnement)
 # /sbin/mkfs -t ext2 /dev/sdd1
 # tune2fs -c 0 /dev/sdd1
 tune2fs 1.41.12 (17-May-2010)
 Initialisation du nombre maximal de montages à -1

Préparez le répertoire ou sera montée la partition qui accueillera Voyage:

 # mkdir /mnt/cf

Lancement du script d'installation:

 # ./usr/local/sbin/voyage.update
&lt;code&gt;
What would you like to do?
  1 - Create new Voyage Linux disk
  2 - Update existing Voyage configuration
  3 - Exit
      (default=1 [Create new Voyage Linux disk]): 1

some mandatory options are unset, please enter them interactively
Where is the Voyage Linux distribution directory?
  (default=/root/voyage-current): 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=2 [Select Target Profile]): 1

Where is the Voyage Linux distribution directory?
  (default=/root/voyage-current): 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=2 [Select Target Profile]): 2

Please select Voyage profile:
  1 - 4501
  2 - 4511/4521
  3 - 4801
  4 - 5501
  5 - ALIX
  6 - Generic PC
  7 - Notebook (pcmcia)
  8 - WRAP
      (default=5 [ALIX]): 5

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=3 [Select Target Disk]): 3

Partitions information
major minor  #blocks  name

   8        0 1953514584 sda
   8        1   51199123 sda1
   8        2          1 sda2
   8        5   51199123 sda5
   8        6   51199123 sda6
   8        7    8193118 sda7
   8        8  768003358 sda8
   8        9 1023716352 sda9
   8       16 1953514584 sdb
   8       17 1953512001 sdb1
   8       48    7831152 sdd
   8       49    2932600 sdd1
   8       50          1 sdd2
   8       53     321563 sdd5
   8       54    2281755 sdd6
   8       55    2289412 sdd7

Which device accesses the target disk [/dev/hde]? /dev/sdd

Which partition should I use on /dev/sdd for the Voyage system [1]? 

Where can I mount the target disk [/mnt/cf]? 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=4 [Select Target Bootstrap Loader]): 4

Which loader do you want (grub or lilo) [grub]? 

Which partition is used for bootstrap [1]? 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=5 [Configure Target Console]): 5

Select terminal type:
  1 - Serial Terminal
  2 - Console Interface
      (default=1 [Serial Terminal]): 1

Please choose speed:
  1 - 2400
  2 - 4800
  3 - 9600
  4 - 19200
  5 - 38400
  6 - 57600
  7 - 115200
      (default=5 [38400]): 3

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=6 [Partition and Create Filesystem]): 6

What shall I do with your Flash Media?
  1 - Partition Flash Media and Create Filesystem
  2 - Use Flash Media as-is
      (default=1 [Partition Flash Media and Create Filesystem]): 1

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=7 [Copy Distribution to Target]): 7

    
Configuration details:
----------------------

Distribution directory:   /root/voyage-current

Disk/Flash Device:        /dev/sdd
Installation Partition:   /dev/sdd1
Create Partition and FS:  yes
Bootstrap Partition:      /dev/sdd1

Will be mounted on:       /mnt/cf

Target system profile:    ALIX
Target console:           serial
Target baud rate:         9600

Bootstrap installer:      grub
Bootstrap partition:      /dev/sdd1

OK to continue (y/n)? y

Ready to go ....
Checking that no-one is using this disk right now ...
OK

Disk /dev/sdd: 1022 cylinders, 247 heads, 62 sectors/track
Old situation:
Units = cylinders of 7840768 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sdd1   *      0+   1021    1022-   7825453+  83  Linux
/dev/sdd2          0       -       0          0    0  Empty
/dev/sdd3          0       -       0          0    0  Empty
/dev/sdd4          0       -       0          0    0  Empty
New situation:
Units = cylinders of 7840768 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sdd1   *      0+   1021    1022-   7825453+  83  Linux
/dev/sdd2          0       -       0          0    0  Empty
/dev/sdd3          0       -       0          0    0  Empty
/dev/sdd4          0       -       0          0    0  Empty
Successfully wrote the new partition table

Re-reading the partition table ...

If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes:  dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)
mke2fs 1.41.12 (17-May-2010)
Étiquette de système de fichiers=
Type de système d'exploitation : Linux
Taille de bloc=4096 (log=2)
Taille de fragment=4096 (log=2)
« Stride » = 0 blocs, « Stripe width » = 0 blocs
489600 i-noeuds, 1956363 blocs
97818 blocs (5.00%) réservés pour le super utilisateur
Premier bloc de données=0
Nombre maximum de blocs du système de fichiers=2004877312
60 groupes de blocs
32768 blocs par groupe, 32768 fragments par groupe
8160 i-noeuds par groupe
Superblocs de secours stockés sur les blocs : 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Écriture des tables d'i-noeuds : complété                        
Écriture des superblocs et de l'information de comptabilité du système de
fichiers : complété

Le système de fichiers sera automatiquement vérifié tous les 20 montages ou
après 180 jours, selon la première éventualité. Utiliser tune2fs -c ou -i
pour écraser la valeur.
tune2fs 1.41.12 (17-May-2010)
Initialisation du nombre maximal de montages à -1
Initialisation de l'intervalle de vérification à 0 secondes
Copying files .... done

Removing pcmcia from update-rc.d
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = &quot;fr_FR.UTF-8&quot;
    are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
update-rc.d: using dependency based boot sequencing
Removing dnsmasq.pxe.conf in /etc/dnsmasq.more.conf
Reconfiguring resolvconf
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = &quot;fr_FR.UTF-8&quot;
    are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = &quot;fr_FR.UTF-8&quot;
    are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
Installing grub
Copy grub files from /mnt/cf to /mnt/cf/boot/grub
Setting up grub under chroot /mnt/cf
copyfiles.sh script completed
What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=8 [Exit]): 8

&lt;/code&gt;

== Réglages ==

monter la CF

 # mount /dev/sdd1 /mnt/cf

Réglez le réseau:
 # nano /mnt/cf/etc/network/interfaces

&lt;code&gt;auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 192.168.0.8
        netmask 255.255.255.0
        broadcast 192.168.0.255

auto eth1
        iface eth1 inet static
        address 41.188.xxx.xxx
        netmask 255.255.255.248
        gateway 41.188.xxx.xxx
        network 41.188.xxx.0
        broadcast 41.188.xxx.248
        dns-nameservers 41.188.xxx.xxx 192.192.xxx.xxx&lt;/code&gt;

Régler son sources.list si nécessaire:
 # nano /mnt/cf/etc/apt/sources.list

== Premier démarrage ==

Pour ce premier démarrage, et afin de nous assurer que le système est fonctionnel, nous nous connecterons à la carte Alix par le biais d'un terminal (c'est sur ce terminal que toutes les sorties sont redirigées).

 # apt-get install gtkterm

Pluger le CF dans la CM Alix

Brancher le [[Installer_Debian_Voyage_sur_une_carte_Alix2d2#C.C3.A2ble_null-modem|câble null-modem]]
Si vous n'en avez pas il est tout a fait possible de le bricoler vous-même.

Lancer GTKterm, configurer le port et la vitesse (mettez 9600)

Vous remarquerez que j'ai utilisé le port /dev/ttyUSB0; C'est parce que j'ai un adaptateur USB/COM.
Sur votre machine, si vous avez un port COM, ce sera de ce genre: /dev/tty0

Mettez la CM sous tension

[[Fichier:Alix Voyage 3.jpeg|960px]]

Connectez vous en root
Mot de passe &quot;voyage&quot;

[[Fichier:Alix Voyage 4.jpeg|960px]]

== Se connecter en ssh ==

&lt;code&gt;ssh root@192.168.0.8               
The authenticity of host '192.168.0.8 (192.168.0.8)' can't be established.
RSA key fingerprint is 8f:da:e5:5b:c9:c8:dd:77:c6:ed:87:2d:71:eb:46:01.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.8' (RSA) to the list of known hosts.
root@192.168.0.8's password: 
Linux voyage 2.6.32-voyage #1 PREEMPT Mon Aug 16 10:31:06 GMT 2010 i586

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
 __  __
 \ \/ /___ __  __ ___  ___  ___    Useful Commands:
  \  // _ \\ \/ /,-_ |/ _ |/ -_)     remountrw - mount disk as read-write
   \/ \___/ \  / \___,\_  |\___|     remountro - mount disk as read-only
           _/_/        _'_|          remove.docs - remove all docs and manpages 
     { V o y a g e } - L i n u x     
      &lt; http://linux.voyage.hk &gt;   Version: 0.7 (Build Date 20101015)


Last login: Sat Jan  1 00:00:59 2000
root@voyage:~#&lt;/code&gt;

== Annexe ==

=== Alix2d2 ===

[[Fichier:Photo_001.jpg]]

[[Fichier:Photo_002.jpg]]

=== Câble null-modem ===

[[Fichier:9_pin_serial_null_modem.jpg]]

[[Fichier:NULL MODEM CABLE.jpg]]

[[Utilisateur:Lol|Lol]] 29 décembre 2010 à 07:10 (CST)
[[Catégorie:Installation]]
[[Catégorie:DistributionsDérivées]]</text>
      <sha1>90f2notk27dtu8vbccbdu5zt7ea6w9b</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4111</id>
      <parentid>4060</parentid>
      <timestamp>2012-04-28T08:49:57Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="12537">{{Stable}}


'''Debian sur une carte [[Matériel::Alix2d2]] avec Voyage (squeeze)'''

Nous allons détailler dans ce Tuto l'installation d'un système Debian ([http://linux.voyage.hk/ Voyage]) sur une [http://www.pcengines.ch/alix2d2.htm Carte Alix2d2].

''[http://linux.voyage.hk/ Voyage Linux Debian]'' est une distribution dérivée de Debian qui fonctionne sur des plates-formes x86 telles que les moteurs PC ALIX / WRAP, 45xx/48xx Soekris et des cartes à base d'Atom.

La carte [[Installer_Debian_Voyage_sur_une_carte_Alix2d2#Alix2d2|Alix2d2]] est une [[Matériel::Mini-pc|&quot;mini-box&quot;]] très peu gourmande en énergie fonctionnant avec un CPU AMD Geode 500Mhz, 256 Mo de mémoire vive et sur une carte mémoire de type CF. 
La carte Alix2d2 ne disposant pas de carte graphique, il faut donc contrôler le démarrage et l'installation de Debian au travers du port série.

== Installation de Voyage ==

Téléchargez la dernière version de voyage:

 # wget http://mirror.voyage.hk/download/voyage/voyage-current.tar.bz2
 # tar xvjf voyage-current.tar.bz2 -C ~/
 # cd voyage-current

Insérer la CF

 # dmesg
 ...
 [51649.188572]  sdd:
 [51649.194802] sd 8:0:0:1: [sdd] Assuming drive cache: write through
 [51649.194807] sd 8:0:0:1: [sdd] Attached SCSI removable disk

Faire une partition primaire de 2Go et la rendre bootable.

 # cfdisk /dev/sdd (ou un autre utilitaire de partitionnement)
 # /sbin/mkfs -t ext2 /dev/sdd1
 # tune2fs -c 0 /dev/sdd1
 tune2fs 1.41.12 (17-May-2010)
 Initialisation du nombre maximal de montages à -1

Préparez le répertoire ou sera montée la partition qui accueillera Voyage:

 # mkdir /mnt/cf

Lancement du script d'installation:

 # ./usr/local/sbin/voyage.update
&lt;code&gt;
What would you like to do?
  1 - Create new Voyage Linux disk
  2 - Update existing Voyage configuration
  3 - Exit
      (default=1 [Create new Voyage Linux disk]): 1

some mandatory options are unset, please enter them interactively
Where is the Voyage Linux distribution directory?
  (default=/root/voyage-current): 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=2 [Select Target Profile]): 1

Where is the Voyage Linux distribution directory?
  (default=/root/voyage-current): 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=2 [Select Target Profile]): 2

Please select Voyage profile:
  1 - 4501
  2 - 4511/4521
  3 - 4801
  4 - 5501
  5 - ALIX
  6 - Generic PC
  7 - Notebook (pcmcia)
  8 - WRAP
      (default=5 [ALIX]): 5

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=3 [Select Target Disk]): 3

Partitions information
major minor  #blocks  name

   8        0 1953514584 sda
   8        1   51199123 sda1
   8        2          1 sda2
   8        5   51199123 sda5
   8        6   51199123 sda6
   8        7    8193118 sda7
   8        8  768003358 sda8
   8        9 1023716352 sda9
   8       16 1953514584 sdb
   8       17 1953512001 sdb1
   8       48    7831152 sdd
   8       49    2932600 sdd1
   8       50          1 sdd2
   8       53     321563 sdd5
   8       54    2281755 sdd6
   8       55    2289412 sdd7

Which device accesses the target disk [/dev/hde]? /dev/sdd

Which partition should I use on /dev/sdd for the Voyage system [1]? 

Where can I mount the target disk [/mnt/cf]? 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=4 [Select Target Bootstrap Loader]): 4

Which loader do you want (grub or lilo) [grub]? 

Which partition is used for bootstrap [1]? 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=5 [Configure Target Console]): 5

Select terminal type:
  1 - Serial Terminal
  2 - Console Interface
      (default=1 [Serial Terminal]): 1

Please choose speed:
  1 - 2400
  2 - 4800
  3 - 9600
  4 - 19200
  5 - 38400
  6 - 57600
  7 - 115200
      (default=5 [38400]): 3

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=6 [Partition and Create Filesystem]): 6

What shall I do with your Flash Media?
  1 - Partition Flash Media and Create Filesystem
  2 - Use Flash Media as-is
      (default=1 [Partition Flash Media and Create Filesystem]): 1

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=7 [Copy Distribution to Target]): 7

    
Configuration details:
----------------------

Distribution directory:   /root/voyage-current

Disk/Flash Device:        /dev/sdd
Installation Partition:   /dev/sdd1
Create Partition and FS:  yes
Bootstrap Partition:      /dev/sdd1

Will be mounted on:       /mnt/cf

Target system profile:    ALIX
Target console:           serial
Target baud rate:         9600

Bootstrap installer:      grub
Bootstrap partition:      /dev/sdd1

OK to continue (y/n)? y

Ready to go ....
Checking that no-one is using this disk right now ...
OK

Disk /dev/sdd: 1022 cylinders, 247 heads, 62 sectors/track
Old situation:
Units = cylinders of 7840768 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sdd1   *      0+   1021    1022-   7825453+  83  Linux
/dev/sdd2          0       -       0          0    0  Empty
/dev/sdd3          0       -       0          0    0  Empty
/dev/sdd4          0       -       0          0    0  Empty
New situation:
Units = cylinders of 7840768 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sdd1   *      0+   1021    1022-   7825453+  83  Linux
/dev/sdd2          0       -       0          0    0  Empty
/dev/sdd3          0       -       0          0    0  Empty
/dev/sdd4          0       -       0          0    0  Empty
Successfully wrote the new partition table

Re-reading the partition table ...

If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes:  dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)
mke2fs 1.41.12 (17-May-2010)
Étiquette de système de fichiers=
Type de système d'exploitation : Linux
Taille de bloc=4096 (log=2)
Taille de fragment=4096 (log=2)
« Stride » = 0 blocs, « Stripe width » = 0 blocs
489600 i-noeuds, 1956363 blocs
97818 blocs (5.00%) réservés pour le super utilisateur
Premier bloc de données=0
Nombre maximum de blocs du système de fichiers=2004877312
60 groupes de blocs
32768 blocs par groupe, 32768 fragments par groupe
8160 i-noeuds par groupe
Superblocs de secours stockés sur les blocs : 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Écriture des tables d'i-noeuds : complété                        
Écriture des superblocs et de l'information de comptabilité du système de
fichiers : complété

Le système de fichiers sera automatiquement vérifié tous les 20 montages ou
après 180 jours, selon la première éventualité. Utiliser tune2fs -c ou -i
pour écraser la valeur.
tune2fs 1.41.12 (17-May-2010)
Initialisation du nombre maximal de montages à -1
Initialisation de l'intervalle de vérification à 0 secondes
Copying files .... done

Removing pcmcia from update-rc.d
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = &quot;fr_FR.UTF-8&quot;
    are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
update-rc.d: using dependency based boot sequencing
Removing dnsmasq.pxe.conf in /etc/dnsmasq.more.conf
Reconfiguring resolvconf
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = &quot;fr_FR.UTF-8&quot;
    are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = &quot;fr_FR.UTF-8&quot;
    are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
Installing grub
Copy grub files from /mnt/cf to /mnt/cf/boot/grub
Setting up grub under chroot /mnt/cf
copyfiles.sh script completed
What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=8 [Exit]): 8

&lt;/code&gt;

== Réglages ==

monter la CF

 # mount /dev/sdd1 /mnt/cf

Réglez le réseau:
 # nano /mnt/cf/etc/network/interfaces

&lt;code&gt;auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 192.168.0.8
        netmask 255.255.255.0
        broadcast 192.168.0.255

auto eth1
        iface eth1 inet static
        address 41.188.xxx.xxx
        netmask 255.255.255.248
        gateway 41.188.xxx.xxx
        network 41.188.xxx.0
        broadcast 41.188.xxx.248
        dns-nameservers 41.188.xxx.xxx 192.192.xxx.xxx&lt;/code&gt;

Régler son sources.list si nécessaire:
 # nano /mnt/cf/etc/apt/sources.list

== Premier démarrage ==

Pour ce premier démarrage, et afin de nous assurer que le système est fonctionnel, nous nous connecterons à la carte Alix par le biais d'un terminal (c'est sur ce terminal que toutes les sorties sont redirigées).

 # apt-get install gtkterm

Pluger le CF dans la CM Alix

Brancher le [[Installer_Debian_Voyage_sur_une_carte_Alix2d2#C.C3.A2ble_null-modem|câble null-modem]]
Si vous n'en avez pas il est tout a fait possible de le bricoler vous-même.

Lancer GTKterm, configurer le port et la vitesse (mettez 9600)

Vous remarquerez que j'ai utilisé le port /dev/ttyUSB0; C'est parce que j'ai un adaptateur USB/COM.
Sur votre machine, si vous avez un port COM, ce sera de ce genre: /dev/tty0

Mettez la CM sous tension

[[Fichier:Alix Voyage 3.jpeg|960px]]

Connectez vous en root
Mot de passe &quot;voyage&quot;

[[Fichier:Alix Voyage 4.jpeg|960px]]

== Se connecter en ssh ==

&lt;code&gt;ssh root@192.168.0.8               
The authenticity of host '192.168.0.8 (192.168.0.8)' can't be established.
RSA key fingerprint is 8f:da:e5:5b:c9:c8:dd:77:c6:ed:87:2d:71:eb:46:01.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.8' (RSA) to the list of known hosts.
root@192.168.0.8's password: 
Linux voyage 2.6.32-voyage #1 PREEMPT Mon Aug 16 10:31:06 GMT 2010 i586

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
 __  __
 \ \/ /___ __  __ ___  ___  ___    Useful Commands:
  \  // _ \\ \/ /,-_ |/ _ |/ -_)     remountrw - mount disk as read-write
   \/ \___/ \  / \___,\_  |\___|     remountro - mount disk as read-only
           _/_/        _'_|          remove.docs - remove all docs and manpages 
     { V o y a g e } - L i n u x     
      &lt; http://linux.voyage.hk &gt;   Version: 0.7 (Build Date 20101015)


Last login: Sat Jan  1 00:00:59 2000
root@voyage:~#&lt;/code&gt;

== Annexe ==

=== Alix2d2 ===

[[Fichier:Photo_001.jpg]]

[[Fichier:Photo_002.jpg]]

=== Câble null-modem ===

[[Fichier:9_pin_serial_null_modem.jpg]]

[[Fichier:NULL MODEM CABLE.jpg]]

[[Utilisateur:Lol|Lol]] 29 décembre 2010 à 07:10 (CST)
[[Catégorie:Installation]]
[[Catégorie:DistributionsDérivées]]</text>
      <sha1>srgd28akrxdt6gtyw65fwaq4r1cuvrc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4112</id>
      <parentid>4111</parentid>
      <timestamp>2012-04-28T08:51:34Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="12549">{{Stable}}


'''Debian sur une carte [[Matériel::Alix2d2]] avec Voyage (squeeze)'''

Nous allons détailler dans ce Tuto l'[[Action::installation]] d'un système Debian ([http://linux.voyage.hk/ Voyage]) sur une [http://www.pcengines.ch/alix2d2.htm Carte Alix2d2].

''[http://linux.voyage.hk/ Voyage Linux Debian]'' est une distribution dérivée de Debian qui fonctionne sur des plates-formes x86 telles que les moteurs PC ALIX / WRAP, 45xx/48xx Soekris et des cartes à base d'Atom.

La carte [[Installer_Debian_Voyage_sur_une_carte_Alix2d2#Alix2d2|Alix2d2]] est une [[Matériel::Mini-pc|&quot;mini-box&quot;]] très peu gourmande en énergie fonctionnant avec un CPU AMD Geode 500Mhz, 256 Mo de mémoire vive et sur une carte mémoire de type CF. 
La carte Alix2d2 ne disposant pas de carte graphique, il faut donc contrôler le démarrage et l'installation de Debian au travers du port série.

== Installation de Voyage ==

Téléchargez la dernière version de voyage:

 # wget http://mirror.voyage.hk/download/voyage/voyage-current.tar.bz2
 # tar xvjf voyage-current.tar.bz2 -C ~/
 # cd voyage-current

Insérer la CF

 # dmesg
 ...
 [51649.188572]  sdd:
 [51649.194802] sd 8:0:0:1: [sdd] Assuming drive cache: write through
 [51649.194807] sd 8:0:0:1: [sdd] Attached SCSI removable disk

Faire une partition primaire de 2Go et la rendre bootable.

 # cfdisk /dev/sdd (ou un autre utilitaire de partitionnement)
 # /sbin/mkfs -t ext2 /dev/sdd1
 # tune2fs -c 0 /dev/sdd1
 tune2fs 1.41.12 (17-May-2010)
 Initialisation du nombre maximal de montages à -1

Préparez le répertoire ou sera montée la partition qui accueillera Voyage:

 # mkdir /mnt/cf

Lancement du script d'installation:

 # ./usr/local/sbin/voyage.update
&lt;code&gt;
What would you like to do?
  1 - Create new Voyage Linux disk
  2 - Update existing Voyage configuration
  3 - Exit
      (default=1 [Create new Voyage Linux disk]): 1

some mandatory options are unset, please enter them interactively
Where is the Voyage Linux distribution directory?
  (default=/root/voyage-current): 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=2 [Select Target Profile]): 1

Where is the Voyage Linux distribution directory?
  (default=/root/voyage-current): 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=2 [Select Target Profile]): 2

Please select Voyage profile:
  1 - 4501
  2 - 4511/4521
  3 - 4801
  4 - 5501
  5 - ALIX
  6 - Generic PC
  7 - Notebook (pcmcia)
  8 - WRAP
      (default=5 [ALIX]): 5

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=3 [Select Target Disk]): 3

Partitions information
major minor  #blocks  name

   8        0 1953514584 sda
   8        1   51199123 sda1
   8        2          1 sda2
   8        5   51199123 sda5
   8        6   51199123 sda6
   8        7    8193118 sda7
   8        8  768003358 sda8
   8        9 1023716352 sda9
   8       16 1953514584 sdb
   8       17 1953512001 sdb1
   8       48    7831152 sdd
   8       49    2932600 sdd1
   8       50          1 sdd2
   8       53     321563 sdd5
   8       54    2281755 sdd6
   8       55    2289412 sdd7

Which device accesses the target disk [/dev/hde]? /dev/sdd

Which partition should I use on /dev/sdd for the Voyage system [1]? 

Where can I mount the target disk [/mnt/cf]? 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=4 [Select Target Bootstrap Loader]): 4

Which loader do you want (grub or lilo) [grub]? 

Which partition is used for bootstrap [1]? 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=5 [Configure Target Console]): 5

Select terminal type:
  1 - Serial Terminal
  2 - Console Interface
      (default=1 [Serial Terminal]): 1

Please choose speed:
  1 - 2400
  2 - 4800
  3 - 9600
  4 - 19200
  5 - 38400
  6 - 57600
  7 - 115200
      (default=5 [38400]): 3

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=6 [Partition and Create Filesystem]): 6

What shall I do with your Flash Media?
  1 - Partition Flash Media and Create Filesystem
  2 - Use Flash Media as-is
      (default=1 [Partition Flash Media and Create Filesystem]): 1

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=7 [Copy Distribution to Target]): 7

    
Configuration details:
----------------------

Distribution directory:   /root/voyage-current

Disk/Flash Device:        /dev/sdd
Installation Partition:   /dev/sdd1
Create Partition and FS:  yes
Bootstrap Partition:      /dev/sdd1

Will be mounted on:       /mnt/cf

Target system profile:    ALIX
Target console:           serial
Target baud rate:         9600

Bootstrap installer:      grub
Bootstrap partition:      /dev/sdd1

OK to continue (y/n)? y

Ready to go ....
Checking that no-one is using this disk right now ...
OK

Disk /dev/sdd: 1022 cylinders, 247 heads, 62 sectors/track
Old situation:
Units = cylinders of 7840768 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sdd1   *      0+   1021    1022-   7825453+  83  Linux
/dev/sdd2          0       -       0          0    0  Empty
/dev/sdd3          0       -       0          0    0  Empty
/dev/sdd4          0       -       0          0    0  Empty
New situation:
Units = cylinders of 7840768 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sdd1   *      0+   1021    1022-   7825453+  83  Linux
/dev/sdd2          0       -       0          0    0  Empty
/dev/sdd3          0       -       0          0    0  Empty
/dev/sdd4          0       -       0          0    0  Empty
Successfully wrote the new partition table

Re-reading the partition table ...

If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes:  dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)
mke2fs 1.41.12 (17-May-2010)
Étiquette de système de fichiers=
Type de système d'exploitation : Linux
Taille de bloc=4096 (log=2)
Taille de fragment=4096 (log=2)
« Stride » = 0 blocs, « Stripe width » = 0 blocs
489600 i-noeuds, 1956363 blocs
97818 blocs (5.00%) réservés pour le super utilisateur
Premier bloc de données=0
Nombre maximum de blocs du système de fichiers=2004877312
60 groupes de blocs
32768 blocs par groupe, 32768 fragments par groupe
8160 i-noeuds par groupe
Superblocs de secours stockés sur les blocs : 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Écriture des tables d'i-noeuds : complété                        
Écriture des superblocs et de l'information de comptabilité du système de
fichiers : complété

Le système de fichiers sera automatiquement vérifié tous les 20 montages ou
après 180 jours, selon la première éventualité. Utiliser tune2fs -c ou -i
pour écraser la valeur.
tune2fs 1.41.12 (17-May-2010)
Initialisation du nombre maximal de montages à -1
Initialisation de l'intervalle de vérification à 0 secondes
Copying files .... done

Removing pcmcia from update-rc.d
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = &quot;fr_FR.UTF-8&quot;
    are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
update-rc.d: using dependency based boot sequencing
Removing dnsmasq.pxe.conf in /etc/dnsmasq.more.conf
Reconfiguring resolvconf
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = &quot;fr_FR.UTF-8&quot;
    are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = &quot;fr_FR.UTF-8&quot;
    are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
Installing grub
Copy grub files from /mnt/cf to /mnt/cf/boot/grub
Setting up grub under chroot /mnt/cf
copyfiles.sh script completed
What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=8 [Exit]): 8

&lt;/code&gt;

== Réglages ==

monter la CF

 # mount /dev/sdd1 /mnt/cf

Réglez le réseau:
 # nano /mnt/cf/etc/network/interfaces

&lt;code&gt;auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 192.168.0.8
        netmask 255.255.255.0
        broadcast 192.168.0.255

auto eth1
        iface eth1 inet static
        address 41.188.xxx.xxx
        netmask 255.255.255.248
        gateway 41.188.xxx.xxx
        network 41.188.xxx.0
        broadcast 41.188.xxx.248
        dns-nameservers 41.188.xxx.xxx 192.192.xxx.xxx&lt;/code&gt;

Régler son sources.list si nécessaire:
 # nano /mnt/cf/etc/apt/sources.list

== Premier démarrage ==

Pour ce premier démarrage, et afin de nous assurer que le système est fonctionnel, nous nous connecterons à la carte Alix par le biais d'un terminal (c'est sur ce terminal que toutes les sorties sont redirigées).

 # apt-get install gtkterm

Pluger le CF dans la CM Alix

Brancher le [[Installer_Debian_Voyage_sur_une_carte_Alix2d2#C.C3.A2ble_null-modem|câble null-modem]]
Si vous n'en avez pas il est tout a fait possible de le bricoler vous-même.

Lancer GTKterm, configurer le port et la vitesse (mettez 9600)

Vous remarquerez que j'ai utilisé le port /dev/ttyUSB0; C'est parce que j'ai un adaptateur USB/COM.
Sur votre machine, si vous avez un port COM, ce sera de ce genre: /dev/tty0

Mettez la CM sous tension

[[Fichier:Alix Voyage 3.jpeg|960px]]

Connectez vous en root
Mot de passe &quot;voyage&quot;

[[Fichier:Alix Voyage 4.jpeg|960px]]

== Se connecter en ssh ==

&lt;code&gt;ssh root@192.168.0.8               
The authenticity of host '192.168.0.8 (192.168.0.8)' can't be established.
RSA key fingerprint is 8f:da:e5:5b:c9:c8:dd:77:c6:ed:87:2d:71:eb:46:01.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.8' (RSA) to the list of known hosts.
root@192.168.0.8's password: 
Linux voyage 2.6.32-voyage #1 PREEMPT Mon Aug 16 10:31:06 GMT 2010 i586

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
 __  __
 \ \/ /___ __  __ ___  ___  ___    Useful Commands:
  \  // _ \\ \/ /,-_ |/ _ |/ -_)     remountrw - mount disk as read-write
   \/ \___/ \  / \___,\_  |\___|     remountro - mount disk as read-only
           _/_/        _'_|          remove.docs - remove all docs and manpages 
     { V o y a g e } - L i n u x     
      &lt; http://linux.voyage.hk &gt;   Version: 0.7 (Build Date 20101015)


Last login: Sat Jan  1 00:00:59 2000
root@voyage:~#&lt;/code&gt;

== Annexe ==

=== Alix2d2 ===

[[Fichier:Photo_001.jpg]]

[[Fichier:Photo_002.jpg]]

=== Câble null-modem ===

[[Fichier:9_pin_serial_null_modem.jpg]]

[[Fichier:NULL MODEM CABLE.jpg]]

[[Utilisateur:Lol|Lol]] 29 décembre 2010 à 07:10 (CST)
[[Catégorie:Installation]]
[[Catégorie:DistributionsDérivées]]</text>
      <sha1>it1uwwj340quvn1pcz3rh3f39542bzt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4120</id>
      <parentid>4112</parentid>
      <timestamp>2012-04-28T09:12:31Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="12566">{{Stable}}


'''Debian sur une carte [[Matériel::Alix2d2]] avec Voyage (squeeze)'''

Nous allons détailler dans ce Tuto l'[[Action::installation]] d'un système Debian ([http://linux.voyage.hk/ Voyage]) sur une [http://www.pcengines.ch/alix2d2.htm Carte Alix2d2].

''[http://linux.voyage.hk/ Voyage Linux Debian]'' est une distribution dérivée de Debian qui fonctionne sur des plates-formes x86 telles que les moteurs PC ALIX / WRAP, 45xx/48xx Soekris et des cartes à base d'Atom.

La carte [[Installer_Debian_Voyage_sur_une_carte_Alix2d2#Alix2d2|Alix2d2]] est une [[Matériel::Mini-pc|&quot;mini-box&quot;]] très peu gourmande en énergie fonctionnant avec un CPU AMD Geode 500Mhz, 256 Mo de mémoire vive et sur une carte mémoire de type CF. 
La carte Alix2d2 ne disposant pas de carte graphique, il faut donc contrôler le démarrage et l'installation de Debian au travers du port [[Connectique::série]].

== Installation de Voyage ==

Téléchargez la dernière version de voyage:

 # wget http://mirror.voyage.hk/download/voyage/voyage-current.tar.bz2
 # tar xvjf voyage-current.tar.bz2 -C ~/
 # cd voyage-current

Insérer la CF

 # dmesg
 ...
 [51649.188572]  sdd:
 [51649.194802] sd 8:0:0:1: [sdd] Assuming drive cache: write through
 [51649.194807] sd 8:0:0:1: [sdd] Attached SCSI removable disk

Faire une partition primaire de 2Go et la rendre bootable.

 # cfdisk /dev/sdd (ou un autre utilitaire de partitionnement)
 # /sbin/mkfs -t ext2 /dev/sdd1
 # tune2fs -c 0 /dev/sdd1
 tune2fs 1.41.12 (17-May-2010)
 Initialisation du nombre maximal de montages à -1

Préparez le répertoire ou sera montée la partition qui accueillera Voyage:

 # mkdir /mnt/cf

Lancement du script d'installation:

 # ./usr/local/sbin/voyage.update
&lt;code&gt;
What would you like to do?
  1 - Create new Voyage Linux disk
  2 - Update existing Voyage configuration
  3 - Exit
      (default=1 [Create new Voyage Linux disk]): 1

some mandatory options are unset, please enter them interactively
Where is the Voyage Linux distribution directory?
  (default=/root/voyage-current): 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=2 [Select Target Profile]): 1

Where is the Voyage Linux distribution directory?
  (default=/root/voyage-current): 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=2 [Select Target Profile]): 2

Please select Voyage profile:
  1 - 4501
  2 - 4511/4521
  3 - 4801
  4 - 5501
  5 - ALIX
  6 - Generic PC
  7 - Notebook (pcmcia)
  8 - WRAP
      (default=5 [ALIX]): 5

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=3 [Select Target Disk]): 3

Partitions information
major minor  #blocks  name

   8        0 1953514584 sda
   8        1   51199123 sda1
   8        2          1 sda2
   8        5   51199123 sda5
   8        6   51199123 sda6
   8        7    8193118 sda7
   8        8  768003358 sda8
   8        9 1023716352 sda9
   8       16 1953514584 sdb
   8       17 1953512001 sdb1
   8       48    7831152 sdd
   8       49    2932600 sdd1
   8       50          1 sdd2
   8       53     321563 sdd5
   8       54    2281755 sdd6
   8       55    2289412 sdd7

Which device accesses the target disk [/dev/hde]? /dev/sdd

Which partition should I use on /dev/sdd for the Voyage system [1]? 

Where can I mount the target disk [/mnt/cf]? 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=4 [Select Target Bootstrap Loader]): 4

Which loader do you want (grub or lilo) [grub]? 

Which partition is used for bootstrap [1]? 

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=5 [Configure Target Console]): 5

Select terminal type:
  1 - Serial Terminal
  2 - Console Interface
      (default=1 [Serial Terminal]): 1

Please choose speed:
  1 - 2400
  2 - 4800
  3 - 9600
  4 - 19200
  5 - 38400
  6 - 57600
  7 - 115200
      (default=5 [38400]): 3

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=6 [Partition and Create Filesystem]): 6

What shall I do with your Flash Media?
  1 - Partition Flash Media and Create Filesystem
  2 - Use Flash Media as-is
      (default=1 [Partition Flash Media and Create Filesystem]): 1

What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=7 [Copy Distribution to Target]): 7

    
Configuration details:
----------------------

Distribution directory:   /root/voyage-current

Disk/Flash Device:        /dev/sdd
Installation Partition:   /dev/sdd1
Create Partition and FS:  yes
Bootstrap Partition:      /dev/sdd1

Will be mounted on:       /mnt/cf

Target system profile:    ALIX
Target console:           serial
Target baud rate:         9600

Bootstrap installer:      grub
Bootstrap partition:      /dev/sdd1

OK to continue (y/n)? y

Ready to go ....
Checking that no-one is using this disk right now ...
OK

Disk /dev/sdd: 1022 cylinders, 247 heads, 62 sectors/track
Old situation:
Units = cylinders of 7840768 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sdd1   *      0+   1021    1022-   7825453+  83  Linux
/dev/sdd2          0       -       0          0    0  Empty
/dev/sdd3          0       -       0          0    0  Empty
/dev/sdd4          0       -       0          0    0  Empty
New situation:
Units = cylinders of 7840768 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sdd1   *      0+   1021    1022-   7825453+  83  Linux
/dev/sdd2          0       -       0          0    0  Empty
/dev/sdd3          0       -       0          0    0  Empty
/dev/sdd4          0       -       0          0    0  Empty
Successfully wrote the new partition table

Re-reading the partition table ...

If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes:  dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)
mke2fs 1.41.12 (17-May-2010)
Étiquette de système de fichiers=
Type de système d'exploitation : Linux
Taille de bloc=4096 (log=2)
Taille de fragment=4096 (log=2)
« Stride » = 0 blocs, « Stripe width » = 0 blocs
489600 i-noeuds, 1956363 blocs
97818 blocs (5.00%) réservés pour le super utilisateur
Premier bloc de données=0
Nombre maximum de blocs du système de fichiers=2004877312
60 groupes de blocs
32768 blocs par groupe, 32768 fragments par groupe
8160 i-noeuds par groupe
Superblocs de secours stockés sur les blocs : 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Écriture des tables d'i-noeuds : complété                        
Écriture des superblocs et de l'information de comptabilité du système de
fichiers : complété

Le système de fichiers sera automatiquement vérifié tous les 20 montages ou
après 180 jours, selon la première éventualité. Utiliser tune2fs -c ou -i
pour écraser la valeur.
tune2fs 1.41.12 (17-May-2010)
Initialisation du nombre maximal de montages à -1
Initialisation de l'intervalle de vérification à 0 secondes
Copying files .... done

Removing pcmcia from update-rc.d
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = &quot;fr_FR.UTF-8&quot;
    are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
update-rc.d: using dependency based boot sequencing
Removing dnsmasq.pxe.conf in /etc/dnsmasq.more.conf
Reconfiguring resolvconf
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = &quot;fr_FR.UTF-8&quot;
    are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = &quot;fr_FR.UTF-8&quot;
    are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
Installing grub
Copy grub files from /mnt/cf to /mnt/cf/boot/grub
Setting up grub under chroot /mnt/cf
copyfiles.sh script completed
What would you like to do?
  1 - Specify Distribution Directory
  2 - Select Target Profile
  3 - Select Target Disk
  4 - Select Target Bootstrap Loader
  5 - Configure Target Console
  6 - Partition and Create Filesystem
      (default=8 [Exit]): 8

&lt;/code&gt;

== Réglages ==

monter la CF

 # mount /dev/sdd1 /mnt/cf

Réglez le réseau:
 # nano /mnt/cf/etc/network/interfaces

&lt;code&gt;auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 192.168.0.8
        netmask 255.255.255.0
        broadcast 192.168.0.255

auto eth1
        iface eth1 inet static
        address 41.188.xxx.xxx
        netmask 255.255.255.248
        gateway 41.188.xxx.xxx
        network 41.188.xxx.0
        broadcast 41.188.xxx.248
        dns-nameservers 41.188.xxx.xxx 192.192.xxx.xxx&lt;/code&gt;

Régler son sources.list si nécessaire:
 # nano /mnt/cf/etc/apt/sources.list

== Premier démarrage ==

Pour ce premier démarrage, et afin de nous assurer que le système est fonctionnel, nous nous connecterons à la carte Alix par le biais d'un terminal (c'est sur ce terminal que toutes les sorties sont redirigées).

 # apt-get install gtkterm

Pluger le CF dans la CM Alix

Brancher le [[Installer_Debian_Voyage_sur_une_carte_Alix2d2#C.C3.A2ble_null-modem|câble null-modem]]
Si vous n'en avez pas il est tout a fait possible de le bricoler vous-même.

Lancer GTKterm, configurer le port et la vitesse (mettez 9600)

Vous remarquerez que j'ai utilisé le port /dev/ttyUSB0; C'est parce que j'ai un adaptateur USB/COM.
Sur votre machine, si vous avez un port COM, ce sera de ce genre: /dev/tty0

Mettez la CM sous tension

[[Fichier:Alix Voyage 3.jpeg|960px]]

Connectez vous en root
Mot de passe &quot;voyage&quot;

[[Fichier:Alix Voyage 4.jpeg|960px]]

== Se connecter en ssh ==

&lt;code&gt;ssh root@192.168.0.8               
The authenticity of host '192.168.0.8 (192.168.0.8)' can't be established.
RSA key fingerprint is 8f:da:e5:5b:c9:c8:dd:77:c6:ed:87:2d:71:eb:46:01.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.8' (RSA) to the list of known hosts.
root@192.168.0.8's password: 
Linux voyage 2.6.32-voyage #1 PREEMPT Mon Aug 16 10:31:06 GMT 2010 i586

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
 __  __
 \ \/ /___ __  __ ___  ___  ___    Useful Commands:
  \  // _ \\ \/ /,-_ |/ _ |/ -_)     remountrw - mount disk as read-write
   \/ \___/ \  / \___,\_  |\___|     remountro - mount disk as read-only
           _/_/        _'_|          remove.docs - remove all docs and manpages 
     { V o y a g e } - L i n u x     
      &lt; http://linux.voyage.hk &gt;   Version: 0.7 (Build Date 20101015)


Last login: Sat Jan  1 00:00:59 2000
root@voyage:~#&lt;/code&gt;

== Annexe ==

=== Alix2d2 ===

[[Fichier:Photo_001.jpg]]

[[Fichier:Photo_002.jpg]]

=== Câble null-modem ===

[[Fichier:9_pin_serial_null_modem.jpg]]

[[Fichier:NULL MODEM CABLE.jpg]]

[[Utilisateur:Lol|Lol]] 29 décembre 2010 à 07:10 (CST)
[[Catégorie:Installation]]
[[Catégorie:DistributionsDérivées]]</text>
      <sha1>td3y9g2lrg9do3onznlwatmmiqpg7jb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Installer Debian pas-à-pas</title>
    <ns>0</ns>
    <id>382</id>
    <revision>
      <id>1355</id>
      <timestamp>2010-04-02T16:01:43Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « {{Ébauche|Installer Debian pas-à-pas}}  Ce document, à travers des captures d'écrans, vous détaillera (de façon sommaire) l'installation d'une Debian Lenny à partir d'… »</comment>
      <text xml:space="preserve" bytes="3263">{{Ébauche|Installer Debian pas-à-pas}}

Ce document, à travers des captures d'écrans, vous détaillera (de façon sommaire) l'installation d'une Debian Lenny à partir d'une image iso &quot;businesscard&quot;

== Prérequis ==

Téléchargement de l'image iso &quot;businesscard&quot;
Choisissez la businesscard si vous souhaitez pouvoir choisir votre distribution (stable/testing/instable)

 $ wget http://cdimage.debian.org/debian-cd/5.0.4/i386/iso-cd/debian-504-i386-businesscard.iso

Vérifiez votre mage iso à l'aide de [[Vérifier_le_md5_d'une_image_iso|'''md5sum''']]

== Installation ==

Démarrer sur l'image le cd que vous aurez gravé

=== Page d'accueil et choix de la méthode d'installation ===

[[Image:01.jpeg]]

[[Image:02.jpeg]]

=== Choisir la langue ===

[[Image:03.jpeg]]

[[Image:04.jpeg]]

[[Image:05.jpeg]]

[[Image:06.jpeg]]

[[Image:07.jpeg]]

[[Image:08.jpeg]]

[[Image:09.jpeg]]

=== Choisir la disposition du clavier ===

[[Image:10.jpeg]]

[[Image:11.jpeg]]

[[Image:12.jpeg]]

=== Détecter et monter le CD ===

[[Image:13.jpeg]]

[[Image:14.jpeg]]

[[Image:15.jpeg]]

[[Image:16.jpeg]]

=== Charger des composants d'installation à partir du CD ===

[[Image:17.jpeg]]

[[Image:18.jpeg]]

[[Image:19.jpeg]]

[[Image:20.jpeg]]

[[Image:21.jpeg]]

=== Détecter le matériel réseau ===

[[Image:22.jpeg]]

[[Image:23.jpeg]]

=== Configurer le réseau ===

[[Image:24.jpeg]]

[[Image:25.jpeg]]

[[Image:26.jpeg]]

[[Image:27.jpeg]]

[[Image:28.jpeg]]

=== Choisir un miroir de l'archive Debian ===

[[Image:29.jpeg]]

[[Image:30.jpeg]]

[[Image:31.jpeg]]

[[Image:32.jpeg]]

[[Image:33.jpeg]]

A compléter si vous avez un proxy (pour ma part il s'agit d'un dépôt cache de paquets)

[[Image:34.jpeg]]

[[Image:35.jpeg]]

Un des points forts de la &quot;businesscard&quot; par rapport à une &quot;netinstall&quot;, le choix de la branche !

[[Image:36.jpeg]]

=== Configurer l'horloge ===

[[Image:37.jpeg]]

[[Image:38.jpeg]]

[[Image:39.jpeg]]

[[Image:40.jpeg]]

[[Image:41.jpeg]]

=== Détecter les disques ===

[[Image:42.jpeg]]

[[Image:43.jpeg]]

=== Partitionner les disques ===

[[Image:44.jpeg]]

[[Image:45.jpeg]]

[[Image:46.jpeg]]

[[Image:47.jpeg]]

[[Image:48.jpeg]]

[[Image:49.jpeg]]

[[Image:50.jpeg]]

=== Installer le système de base ===

[[Image:51.jpeg]]

[[Image:52.jpeg]]

[[Image:53.jpeg]]

[[Image:54.jpeg]]

[[Image:55.jpeg]]

[[Image:56.jpeg]]

=== Créer les utilisateurs et choisir les mots de passe ===

[[Image:57.jpeg]]

[[Image:58.jpeg]]

[[Image:59.jpeg]]

[[Image:60.jpeg]]

[[Image:61.jpeg]]

[[Image:62.jpeg]]

[[Image:63.jpeg]]

[[Image:64.jpeg]]

[[Image:65.jpeg]]

[[Image:66.jpeg]]

=== Configurer l'outil de gestion des paquets ===

[[Image:67.jpeg]]

[[Image:68.jpeg]]

[[Image:69.jpeg]]

[[Image:70.jpeg]]

=== Choisir et installer des logiciels ===

[[Image:71.jpeg]]

[[Image:72.jpeg]]

[[Image:73.jpeg]]

[[Image:74.jpeg]]

=== Installer le programme de démarrage Grub sur un disque dur ===

[[Image:75.jpeg]]

[[Image:76.jpeg]]

[[Image:77.jpeg]]

[[Image:78.jpeg]]

=== Sauvegarder les journaux de débogage ===

[[Image:79.jpeg]]

[[Image:80.jpeg]]

[[Image:81.jpeg]]

=== Terminer l'installation ===

[[Image:82.jpeg]]

[[Image:83.jpeg]]

[[Image:84.jpeg]]

[[Image:85.jpeg]]

[[Image:86.jpeg]]

[[Image:87.jpeg]]</text>
      <sha1>k99b4la86wangq5s7r9vft6s5iovxfx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1359</id>
      <parentid>1355</parentid>
      <timestamp>2010-04-03T04:12:04Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="4927">{{Ébauche|Installer Debian pas-à-pas}}

Ce document, au travers de captures d'écrans, détaillera pas-à-pas (de façon sommaire) l'installation d'une Debian Lenny à partir d'une image iso &quot;businesscard&quot;

== Prérequis ==

Téléchargement de l'image iso &quot;businesscard&quot;
Choisissez la businesscard si vous souhaitez pouvoir choisir votre distribution (stable/testing/instable)

 $ wget http://cdimage.debian.org/debian-cd/5.0.4/i386/iso-cd/debian-504-i386-businesscard.iso

Vérifiez votre mage iso à l'aide de [[Vérifier_le_md5_d'une_image_iso|'''md5sum''']]

Gravez l'image sur un CD.

== Installation ==

Modifier votre bios pour que votre machine démarre sur le lecteur de CD/DVD
Insérez le disque dans le lecteur et démarrez sur le CD

== Page d'accueil et choix de la méthode d'installation ==

Un menu s'offre à vous :

=== Installation===
*Install
*Graphical install
*Advanced options
*Help

====Install====
Ce choix installera (presque) automatiquement une Debian Lenny avec les options &quot;standards&quot;
====Graphical install====
Même chose que le choix ci-dessus, mais avec une interface graphique.
Peut s'avérer moins fiable, en fonction de votre matériel.
==== Advanced options====
C'est dans cette directions que nous allons...
====Help====
Divers fichiers d'aide sur les &quot;pré-requis&quot; à l'installation, les paramètres à passer au boot pour les machines un peu &quot;spéciales&quot;

[[Fichier:01 help.jpeg]]


== Installer boot menu ==

[[Image:01.jpeg]]

[[Image:02.jpeg]]

=== Choisir la langue ===

[[Image:03.jpeg]]

[[Image:04.jpeg]]

[[Image:05.jpeg]]

[[Image:06.jpeg]]

[[Image:07.jpeg]]

[[Image:08.jpeg]]

[[Image:09.jpeg]]

=== Choisir la disposition du clavier ===

[[Image:10.jpeg]]

[[Image:11.jpeg]]

[[Image:12.jpeg]]

=== Détecter et monter le CD ===

[[Image:13.jpeg]]

Activer l'usb ? Laissez le choix par défaut : oui

[[Image:14.jpeg]]

pcmcia ? Cela dépendra de votre machine...
Inutile de démarrer ces services si vous n'en avez pas !
La question vous sera reposée à chaque fois qu'une détection de matériel est nécessaire.

[[Image:15.jpeg]]

[[Image:16.jpeg]]

=== Charger des composants d'installation à partir du CD ===

Bien que je n'ai choisi aucune des options de cette liste, je vous détaille rapidement quelques choix :

Peu de mémoire vive (lowmem)
Connexion ppp (par modem)
rescue mode
support ntfs
wireless tools

[[Image:17.jpeg]]

[[Image:18.jpeg]]

[[Image:19.jpeg]]

[[Image:20.jpeg]]

[[Image:21.jpeg]]

=== Détecter le matériel réseau ===

[[Image:22.jpeg]]

[[Image:23.jpeg]]

=== Configurer le réseau ===

Généralement vous êtes derrière un routeur ou une &quot;box&quot; qui doit vous fournir une adresse IP.
Vous laisserez donc l'option DHCP.

[[Image:24.jpeg]]

[[Image:25.jpeg]]

[[Image:26.jpeg]]

Nom de la machine :

[[Image:27.jpeg]]

Nom du domaine. Il doit vous être fourni par le serveur DHCP. Si ce n'est pas le cas, laissez vide

[[Image:28.jpeg]]

=== Choisir un miroir de l'archive Debian ===

[[Image:29.jpeg]]

[[Image:30.jpeg]]

Choisissez un miroir pour récupérer les paquets. Inutiles que vos paquets fassent 12.000 Km, choisissez un miroir proche de chez vous.

[[Image:31.jpeg]]

[[Image:32.jpeg]]

[[Image:33.jpeg]]

A compléter si vous avez un proxy (pour ma part il s'agit d'un dépôt cache de paquets)

[[Image:34.jpeg]]

[[Image:35.jpeg]]

Un des points forts de la &quot;businesscard&quot; par rapport à une &quot;netinstall&quot;, le choix de la branche !

[[Image:36.jpeg]]

=== Configurer l'horloge ===

[[Image:37.jpeg]]

[[Image:38.jpeg]]

[[Image:39.jpeg]]

[[Image:40.jpeg]]

[[Image:41.jpeg]]

=== Détecter les disques ===

[[Image:42.jpeg]]

[[Image:43.jpeg]]

=== Partitionner les disques ===

[[Image:44.jpeg]]

[[Image:45.jpeg]]

[[Image:46.jpeg]]

[[Image:47.jpeg]]

[[Image:48.jpeg]]

[[Image:49.jpeg]]

[[Image:50.jpeg]]

=== Installer le système de base ===

[[Image:51.jpeg]]

[[Image:52.jpeg]]

[[Image:53.jpeg]]

[[Image:54.jpeg]]

[[Image:55.jpeg]]

[[Image:56.jpeg]]

=== Créer les utilisateurs et choisir les mots de passe ===

[[Image:57.jpeg]]

[[Image:58.jpeg]]

[[Image:59.jpeg]]

[[Image:60.jpeg]]

[[Image:61.jpeg]]

[[Image:62.jpeg]]

[[Image:63.jpeg]]

[[Image:64.jpeg]]

[[Image:65.jpeg]]

[[Image:66.jpeg]]

=== Configurer l'outil de gestion des paquets ===

[[Image:67.jpeg]]

[[Image:68.jpeg]]

[[Image:69.jpeg]]

[[Image:70.jpeg]]

=== Choisir et installer des logiciels ===

[[Image:71.jpeg]]

[[Image:72.jpeg]]

[[Image:73.jpeg]]

[[Image:74.jpeg]]

=== Installer le programme de démarrage Grub sur un disque dur ===

[[Image:75.jpeg]]

[[Image:76.jpeg]]

[[Image:77.jpeg]]

[[Image:78.jpeg]]

=== Sauvegarder les journaux de débogage ===

[[Image:79.jpeg]]

[[Image:80.jpeg]]

[[Image:81.jpeg]]

=== Terminer l'installation ===

[[Image:82.jpeg]]

[[Image:83.jpeg]]

[[Image:84.jpeg]]

[[Image:85.jpeg]]

[[Image:86.jpeg]]

[[Image:87.jpeg]]

----
--[[Utilisateur:Lol|Lol]] 3 avril 2010 à 04:12 (UTC)</text>
      <sha1>55yp49xgviyvq3xesvcdt3201904liz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1360</id>
      <parentid>1359</parentid>
      <timestamp>2010-04-03T04:25:30Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="5856">{{Ébauche|Installer Debian pas-à-pas}}

Ce document, au travers de captures d'écrans, détaillera pas-à-pas (de façon sommaire) l'installation d'une Debian Lenny à partir d'une image iso &quot;businesscard&quot;

== Prérequis ==

Téléchargement de l'image iso &quot;businesscard&quot;
Choisissez la businesscard si vous souhaitez pouvoir choisir votre distribution (stable/testing/instable)

 $ wget http://cdimage.debian.org/debian-cd/5.0.4/i386/iso-cd/debian-504-i386-businesscard.iso

Vérifiez votre mage iso à l'aide de [[Vérifier_le_md5_d'une_image_iso|'''md5sum''']]

Gravez l'image sur un CD.

== Installation ==

Modifier votre bios pour que votre machine démarre sur le lecteur de CD/DVD
Insérez le disque dans le lecteur et démarrez sur le CD

== Page d'accueil et choix de la méthode d'installation ==

Un menu s'offre à vous :

=== Installation===
*Install
*Graphical install
*Advanced options
*Help

====Install====
Ce choix installera (presque) automatiquement une Debian Lenny avec les options &quot;standards&quot;
====Graphical install====
Même chose que le choix ci-dessus, mais avec une interface graphique.
Peut s'avérer moins fiable, en fonction de votre matériel.
==== Advanced options====
C'est dans cette directions que nous allons...
====Help====
Divers fichiers d'aide sur les &quot;pré-requis&quot; à l'installation, les paramètres à passer au boot pour les machines un peu &quot;spéciales&quot;

[[Fichier:01 help.jpeg]]


== Installer boot menu ==

[[Image:01.jpeg]]

Le menu suivant offre des choix intéressants :

*Back...
*Expert Install
C'est cette option que nous choisirons, c'est celle qui laisse le plus de contrôle sur l'installation
*Rescue mode
Très utile si un jours votre machine ne démarre pas (cela permet de faire un chroot sur le système pour des réparations... Grub pas exemple)
*Automated install
Comme son nom l'indique, une installation automatique ou vous n'interviendrez presque pas
Identique au choix Install de la première page.
*Graphical expert install
Identique à &quot;Expert install&quot; mais en mode graphique
*Graphical rescue mode
Identique à &quot;Rescue mode&quot; mais en mode graphique
*Graphical automated install
Identique à &quot;Automated install&quot; mais en mode graphique
*Alternative desktop environments
Option intéressante si vous souhaitez installer un autre bureau que Gnome (KDE, LXDE, XFCE).
Vous retrouverez dans les sou-menus l'ensemble des choix offerts ici.

[[Image:02.jpeg]]

=== Choisir la langue ===

[[Image:03.jpeg]]

[[Image:04.jpeg]]

[[Image:05.jpeg]]

[[Image:06.jpeg]]

[[Image:07.jpeg]]

[[Image:08.jpeg]]

[[Image:09.jpeg]]

=== Choisir la disposition du clavier ===

[[Image:10.jpeg]]

[[Image:11.jpeg]]

[[Image:12.jpeg]]

=== Détecter et monter le CD ===

[[Image:13.jpeg]]

Activer l'usb ? Laissez le choix par défaut : oui

[[Image:14.jpeg]]

pcmcia ? Cela dépendra de votre machine...
Inutile de démarrer ces services si vous n'en avez pas !
La question vous sera reposée à chaque fois qu'une détection de matériel est nécessaire.

[[Image:15.jpeg]]

[[Image:16.jpeg]]

=== Charger des composants d'installation à partir du CD ===

Bien que je n'ai choisi aucune des options de cette liste, je vous détaille rapidement quelques choix :

Peu de mémoire vive (lowmem)
Connexion ppp (par modem)
rescue mode
support ntfs
wireless tools

[[Image:17.jpeg]]

[[Image:18.jpeg]]

[[Image:19.jpeg]]

[[Image:20.jpeg]]

[[Image:21.jpeg]]

=== Détecter le matériel réseau ===

[[Image:22.jpeg]]

[[Image:23.jpeg]]

=== Configurer le réseau ===

Généralement vous êtes derrière un routeur ou une &quot;box&quot; qui doit vous fournir une adresse IP.
Vous laisserez donc l'option DHCP.

[[Image:24.jpeg]]

[[Image:25.jpeg]]

[[Image:26.jpeg]]

Nom de la machine :

[[Image:27.jpeg]]

Nom du domaine. Il doit vous être fourni par le serveur DHCP. Si ce n'est pas le cas, laissez vide

[[Image:28.jpeg]]

=== Choisir un miroir de l'archive Debian ===

[[Image:29.jpeg]]

[[Image:30.jpeg]]

Choisissez un miroir pour récupérer les paquets. Inutiles que vos paquets fassent 12.000 Km, choisissez un miroir proche de chez vous.

[[Image:31.jpeg]]

[[Image:32.jpeg]]

[[Image:33.jpeg]]

A compléter si vous avez un proxy (pour ma part il s'agit d'un dépôt cache de paquets)

[[Image:34.jpeg]]

[[Image:35.jpeg]]

Un des points forts de la &quot;businesscard&quot; par rapport à une &quot;netinstall&quot;, le choix de la branche !

[[Image:36.jpeg]]

=== Configurer l'horloge ===

[[Image:37.jpeg]]

[[Image:38.jpeg]]

[[Image:39.jpeg]]

[[Image:40.jpeg]]

[[Image:41.jpeg]]

=== Détecter les disques ===

[[Image:42.jpeg]]

[[Image:43.jpeg]]

=== Partitionner les disques ===

[[Image:44.jpeg]]

[[Image:45.jpeg]]

[[Image:46.jpeg]]

[[Image:47.jpeg]]

[[Image:48.jpeg]]

[[Image:49.jpeg]]

[[Image:50.jpeg]]

=== Installer le système de base ===

[[Image:51.jpeg]]

[[Image:52.jpeg]]

[[Image:53.jpeg]]

[[Image:54.jpeg]]

[[Image:55.jpeg]]

[[Image:56.jpeg]]

=== Créer les utilisateurs et choisir les mots de passe ===

[[Image:57.jpeg]]

[[Image:58.jpeg]]

[[Image:59.jpeg]]

[[Image:60.jpeg]]

[[Image:61.jpeg]]

[[Image:62.jpeg]]

[[Image:63.jpeg]]

[[Image:64.jpeg]]

[[Image:65.jpeg]]

[[Image:66.jpeg]]

=== Configurer l'outil de gestion des paquets ===

[[Image:67.jpeg]]

[[Image:68.jpeg]]

[[Image:69.jpeg]]

[[Image:70.jpeg]]

=== Choisir et installer des logiciels ===

[[Image:71.jpeg]]

[[Image:72.jpeg]]

[[Image:73.jpeg]]

[[Image:74.jpeg]]

=== Installer le programme de démarrage Grub sur un disque dur ===

[[Image:75.jpeg]]

[[Image:76.jpeg]]

[[Image:77.jpeg]]

[[Image:78.jpeg]]

=== Sauvegarder les journaux de débogage ===

[[Image:79.jpeg]]

[[Image:80.jpeg]]

[[Image:81.jpeg]]

=== Terminer l'installation ===

[[Image:82.jpeg]]

[[Image:83.jpeg]]

[[Image:84.jpeg]]

[[Image:85.jpeg]]

[[Image:86.jpeg]]

[[Image:87.jpeg]]

----
--[[Utilisateur:Lol|Lol]] 3 avril 2010 à 04:12 (UTC)</text>
      <sha1>gz7hti2t57q6sy6foxu8i58o7cb8bdd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1361</id>
      <parentid>1360</parentid>
      <timestamp>2010-04-03T04:29:24Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="5908">{{Ébauche|Installer Debian pas-à-pas}}

Ce document, au travers de captures d'écrans, détaillera pas-à-pas (de façon sommaire) l'installation d'une Debian Lenny à partir d'une image iso &quot;businesscard&quot;

== Prérequis ==

Téléchargement de l'image iso &quot;businesscard&quot;
Choisissez la businesscard si vous souhaitez pouvoir choisir votre distribution (stable/testing/instable)

 $ wget http://cdimage.debian.org/debian-cd/5.0.4/i386/iso-cd/debian-504-i386-businesscard.iso

Vérifiez votre mage iso à l'aide de [[Vérifier_le_md5_d'une_image_iso|'''md5sum''']]

Gravez l'image sur un CD.

== Installation ==

Modifier votre bios pour que votre machine démarre sur le lecteur de CD/DVD
Insérez le disque dans le lecteur et démarrez sur le CD

== Page d'accueil et choix de la méthode d'installation ==

Un menu s'offre à vous :

=== Installation===
*Install
*Graphical install
*Advanced options
*Help

====Install====
Ce choix installera (presque) automatiquement une Debian Lenny avec les options &quot;standards&quot;
====Graphical install====
Même chose que le choix ci-dessus, mais avec une interface graphique.
Peut s'avérer moins fiable, en fonction de votre matériel.
==== Advanced options====
C'est dans cette directions que nous allons...
====Help====
Divers fichiers d'aide sur les &quot;pré-requis&quot; à l'installation, les paramètres à passer au boot pour les machines un peu &quot;spéciales&quot;

[[Fichier:01 help.jpeg]]


== Installer boot menu ==

[[Image:01.jpeg]]

Le menu suivant offre des choix intéressants :

*Back...
*Expert Install
C'est cette option que nous choisirons, c'est celle qui laisse le plus de contrôle sur l'installation
*Rescue mode
Très utile si un jours votre machine ne démarre pas (cela permet de faire un chroot sur le système pour des réparations... Grub pas exemple)
Permet d'ouvrir un shell sur la partition système.
*Automated install
Comme son nom l'indique, une installation automatique ou vous n'interviendrez presque pas
Identique au choix Install de la première page.
*Graphical expert install
Identique à &quot;Expert install&quot; mais en mode graphique
*Graphical rescue mode
Identique à &quot;Rescue mode&quot; mais en mode graphique
*Graphical automated install
Identique à &quot;Automated install&quot; mais en mode graphique
*Alternative desktop environments
Option intéressante si vous souhaitez installer un autre bureau que Gnome (KDE, LXDE, XFCE).
Vous retrouverez dans les sou-menus l'ensemble des choix offerts ici.

[[Image:02.jpeg]]

=== Choisir la langue ===

[[Image:03.jpeg]]

[[Image:04.jpeg]]

[[Image:05.jpeg]]

[[Image:06.jpeg]]

[[Image:07.jpeg]]

[[Image:08.jpeg]]

[[Image:09.jpeg]]

=== Choisir la disposition du clavier ===

[[Image:10.jpeg]]

[[Image:11.jpeg]]

[[Image:12.jpeg]]

=== Détecter et monter le CD ===

[[Image:13.jpeg]]

Activer l'usb ? Laissez le choix par défaut : oui

[[Image:14.jpeg]]

pcmcia ? Cela dépendra de votre machine...
Inutile de démarrer ces services si vous n'en avez pas !
La question vous sera reposée à chaque fois qu'une détection de matériel est nécessaire.

[[Image:15.jpeg]]

[[Image:16.jpeg]]

=== Charger des composants d'installation à partir du CD ===

Bien que je n'ai choisi aucune des options de cette liste, je vous détaille rapidement quelques choix :

Peu de mémoire vive (lowmem)
Connexion ppp (par modem)
rescue mode
support ntfs
wireless tools

[[Image:17.jpeg]]

[[Image:18.jpeg]]

[[Image:19.jpeg]]

[[Image:20.jpeg]]

[[Image:21.jpeg]]

=== Détecter le matériel réseau ===

[[Image:22.jpeg]]

[[Image:23.jpeg]]

=== Configurer le réseau ===

Généralement vous êtes derrière un routeur ou une &quot;box&quot; qui doit vous fournir une adresse IP.
Vous laisserez donc l'option DHCP.

[[Image:24.jpeg]]

[[Image:25.jpeg]]

[[Image:26.jpeg]]

Nom de la machine :

[[Image:27.jpeg]]

Nom du domaine. Il doit vous être fourni par le serveur DHCP. Si ce n'est pas le cas, laissez vide

[[Image:28.jpeg]]

=== Choisir un miroir de l'archive Debian ===

[[Image:29.jpeg]]

[[Image:30.jpeg]]

Choisissez un miroir pour récupérer les paquets. Inutiles que vos paquets fassent 12.000 Km, choisissez un miroir proche de chez vous.

[[Image:31.jpeg]]

[[Image:32.jpeg]]

[[Image:33.jpeg]]

A compléter si vous avez un proxy (pour ma part il s'agit d'un dépôt cache de paquets)

[[Image:34.jpeg]]

[[Image:35.jpeg]]

Un des points forts de la &quot;businesscard&quot; par rapport à une &quot;netinstall&quot;, le choix de la branche !

[[Image:36.jpeg]]

=== Configurer l'horloge ===

[[Image:37.jpeg]]

[[Image:38.jpeg]]

[[Image:39.jpeg]]

[[Image:40.jpeg]]

[[Image:41.jpeg]]

=== Détecter les disques ===

[[Image:42.jpeg]]

[[Image:43.jpeg]]

=== Partitionner les disques ===

[[Image:44.jpeg]]

[[Image:45.jpeg]]

[[Image:46.jpeg]]

[[Image:47.jpeg]]

[[Image:48.jpeg]]

[[Image:49.jpeg]]

[[Image:50.jpeg]]

=== Installer le système de base ===

[[Image:51.jpeg]]

[[Image:52.jpeg]]

[[Image:53.jpeg]]

[[Image:54.jpeg]]

[[Image:55.jpeg]]

[[Image:56.jpeg]]

=== Créer les utilisateurs et choisir les mots de passe ===

[[Image:57.jpeg]]

[[Image:58.jpeg]]

[[Image:59.jpeg]]

[[Image:60.jpeg]]

[[Image:61.jpeg]]

[[Image:62.jpeg]]

[[Image:63.jpeg]]

[[Image:64.jpeg]]

[[Image:65.jpeg]]

[[Image:66.jpeg]]

=== Configurer l'outil de gestion des paquets ===

[[Image:67.jpeg]]

[[Image:68.jpeg]]

[[Image:69.jpeg]]

[[Image:70.jpeg]]

=== Choisir et installer des logiciels ===

[[Image:71.jpeg]]

[[Image:72.jpeg]]

[[Image:73.jpeg]]

[[Image:74.jpeg]]

=== Installer le programme de démarrage Grub sur un disque dur ===

[[Image:75.jpeg]]

[[Image:76.jpeg]]

[[Image:77.jpeg]]

[[Image:78.jpeg]]

=== Sauvegarder les journaux de débogage ===

[[Image:79.jpeg]]

[[Image:80.jpeg]]

[[Image:81.jpeg]]

=== Terminer l'installation ===

[[Image:82.jpeg]]

[[Image:83.jpeg]]

[[Image:84.jpeg]]

[[Image:85.jpeg]]

[[Image:86.jpeg]]

[[Image:87.jpeg]]

----
--[[Utilisateur:Lol|Lol]] 3 avril 2010 à 04:12 (UTC)</text>
      <sha1>q6qmn0ekg8ijttvp4ps0vomyfwcz0qw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1362</id>
      <parentid>1361</parentid>
      <timestamp>2010-04-03T04:31:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="5889">{{Ébauche|Installer Debian pas-à-pas}}

Ce document, au travers de captures d'écrans, détaillera pas-à-pas (de façon sommaire) l'installation d'une Debian Lenny à partir d'une image iso &quot;businesscard&quot;

== Prérequis ==

Téléchargement de l'image iso &quot;businesscard&quot;
Choisissez la businesscard si vous souhaitez pouvoir choisir votre distribution (stable/testing/instable)

 $ wget http://cdimage.debian.org/debian-cd/5.0.4/i386/iso-cd/debian-504-i386-businesscard.iso

Vérifiez votre mage iso à l'aide de [[Vérifier_le_md5_d'une_image_iso|'''md5sum''']]

Gravez l'image sur un CD.

== Installation ==

Modifier votre bios pour que votre machine démarre sur le lecteur de CD/DVD
Insérez le disque dans le lecteur et démarrez sur le CD

== Page d'accueil et choix de la méthode d'installation ==

Un menu s'offre à vous :

=== Installation===
*Install
*Graphical install
*Advanced options
*Help

====Install====
Ce choix installera (presque) automatiquement une Debian Lenny avec les options &quot;standards&quot;
====Graphical install====
Même chose que le choix ci-dessus, mais avec une interface graphique.
Peut s'avérer moins fiable, en fonction de votre matériel.
==== Advanced options====
C'est dans cette directions que nous allons...
====Help====
Divers fichiers d'aide sur les &quot;pré-requis&quot; à l'installation, les paramètres à passer au boot pour les machines un peu &quot;spéciales&quot;

[[Fichier:01 help.jpeg]]


== Installer boot menu ==

[[Image:01.jpeg]]

Le menu suivant offre des choix intéressants :

*Back...
*Expert Install
C'est cette option que nous choisirons, c'est celle qui laisse le plus de contrôle sur l'installation
*Rescue mode
Très utile si un jours votre machine ne démarre pas (cela permet de faire un chroot sur le système pour des réparations... Grub pas exemple)
Permet d'ouvrir un shell sur la partition système.
*Automated install
Comme son nom l'indique, une installation automatique ou vous n'interviendrez presque pas
Identique au choix Install de la première page.
*Graphical expert install
Identique à &quot;Expert install&quot; mais en mode graphique
*Graphical rescue mode
Identique à &quot;Rescue mode&quot; mais en mode graphique
*Graphical automated install
Identique à &quot;Automated install&quot; mais en mode graphique
*Alternative desktop environments
Option intéressante si vous souhaitez installer un autre bureau que Gnome (KDE, LXDE, XFCE).
Vous retrouverez dans les sou-menus l'ensemble des choix offerts ici.

[[Image:02.jpeg]]

=== Choisir la langue ===

[[Image:03.jpeg]]

[[Image:04.jpeg]]

[[Image:05.jpeg]]

[[Image:06.jpeg]]

[[Image:07.jpeg]]

[[Image:08.jpeg]]

[[Image:09.jpeg]]

=== Choisir la disposition du clavier ===

[[Image:10.jpeg]]

[[Image:11.jpeg]]

[[Image:12.jpeg]]

=== Détecter et monter le CD ===

[[Image:13.jpeg]]

Activer l'usb ? Laissez le choix par défaut : oui

[[Image:14.jpeg]]

pcmcia ? Cela dépendra de votre machine...
Inutile de démarrer ces services si vous n'en avez pas !
La question vous sera reposée à chaque fois qu'une détection de matériel est nécessaire.

[[Image:15.jpeg]]

[[Image:16.jpeg]]

=== Charger des composants d'installation à partir du CD ===

Bien que je n'ai choisi aucune des options de cette liste, je vous détaille rapidement quelques choix :

Peu de mémoire vive (lowmem)
Connexion ppp (par modem)
rescue mode
support ntfs
wireless tools

[[Image:17.jpeg]]

[[Image:18.jpeg]]

[[Image:19.jpeg]]

[[Image:20.jpeg]]

[[Image:21.jpeg]]

=== Détecter le matériel réseau ===

[[Image:22.jpeg]]

[[Image:23.jpeg]]

=== Configurer le réseau ===

Généralement vous êtes derrière un routeur ou une &quot;box&quot; qui doit vous fournir une adresse IP.
Vous laisserez donc l'option DHCP.

[[Image:24.jpeg]]

[[Image:25.jpeg]]

[[Image:26.jpeg]]

Nom de la machine :

[[Image:27.jpeg]]

Nom du domaine. Il doit vous être fourni par le serveur DHCP. Si ce n'est pas le cas, laissez vide

[[Image:28.jpeg]]

=== Choisir un miroir de l'archive Debian ===

[[Image:29.jpeg]]

[[Image:30.jpeg]]

Choisissez un miroir pour récupérer les paquets. Inutiles que vos paquets fassent 12.000 Km, choisissez un miroir proche de chez vous.

[[Image:31.jpeg]]

[[Image:32.jpeg]]

[[Image:33.jpeg]]

A compléter si vous avez un proxy (pour ma part il s'agit d'un dépôt cache de paquets)

[[Image:34.jpeg]]

[[Image:35.jpeg]]

Un des points forts de la &quot;businesscard&quot; par rapport à une &quot;netinstall&quot;, le choix de la branche !

[[Image:36.jpeg]]

=== Configurer l'horloge ===

[[Image:37.jpeg]]

[[Image:38.jpeg]]

[[Image:39.jpeg]]

[[Image:40.jpeg]]

[[Image:41.jpeg]]

=== Détecter les disques ===

[[Image:42.jpeg]]

[[Image:43.jpeg]]

=== Partitionner les disques ===

[[Image:44.jpeg]]

[[Image:45.jpeg]]

[[Image:46.jpeg]]

[[Image:47.jpeg]]

[[Image:48.jpeg]]

[[Image:49.jpeg]]

[[Image:50.jpeg]]

=== Installer le système de base ===

[[Image:51.jpeg]]

[[Image:52.jpeg]]

[[Image:53.jpeg]]

[[Image:54.jpeg]]

[[Image:55.jpeg]]

[[Image:56.jpeg]]

=== Créer les utilisateurs et choisir les mots de passe ===

[[Image:57.jpeg]]

[[Image:58.jpeg]]

[[Image:59.jpeg]]

[[Image:60.jpeg]]

[[Image:61.jpeg]]

[[Image:62.jpeg]]

[[Image:63.jpeg]]

[[Image:64.jpeg]]

[[Image:65.jpeg]]

[[Image:66.jpeg]]

=== Configurer l'outil de gestion des paquets ===

[[Image:67.jpeg]]

[[Image:68.jpeg]]

[[Image:69.jpeg]]

[[Image:70.jpeg]]

=== Choisir et installer des logiciels ===

[[Image:71.jpeg]]

[[Image:72.jpeg]]

[[Image:73.jpeg]]

[[Image:74.jpeg]]

=== Installer le programme de démarrage Grub sur un disque dur ===

[[Image:75.jpeg]]

[[Image:76.jpeg]]

[[Image:77.jpeg]]

[[Image:78.jpeg]]

=== Sauvegarder les journaux de débogage ===

[[Image:79.jpeg]]

[[Image:80.jpeg]]

[[Image:81.jpeg]]

=== Terminer l'installation ===

[[Image:82.jpeg]]

[[Image:83.jpeg]]

[[Image:84.jpeg]]

[[Image:85.jpeg]]

[[Image:87.jpeg]]

----
--[[Utilisateur:Lol|Lol]] 3 avril 2010 à 04:12 (UTC)</text>
      <sha1>er9pbkznatq5n291qgd1m1nal2e4n0l</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1564</id>
      <parentid>1362</parentid>
      <timestamp>2010-06-10T16:53:23Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Installer boot menu */</comment>
      <text xml:space="preserve" bytes="5890">{{Ébauche|Installer Debian pas-à-pas}}

Ce document, au travers de captures d'écrans, détaillera pas-à-pas (de façon sommaire) l'installation d'une Debian Lenny à partir d'une image iso &quot;businesscard&quot;

== Prérequis ==

Téléchargement de l'image iso &quot;businesscard&quot;
Choisissez la businesscard si vous souhaitez pouvoir choisir votre distribution (stable/testing/instable)

 $ wget http://cdimage.debian.org/debian-cd/5.0.4/i386/iso-cd/debian-504-i386-businesscard.iso

Vérifiez votre mage iso à l'aide de [[Vérifier_le_md5_d'une_image_iso|'''md5sum''']]

Gravez l'image sur un CD.

== Installation ==

Modifier votre bios pour que votre machine démarre sur le lecteur de CD/DVD
Insérez le disque dans le lecteur et démarrez sur le CD

== Page d'accueil et choix de la méthode d'installation ==

Un menu s'offre à vous :

=== Installation===
*Install
*Graphical install
*Advanced options
*Help

====Install====
Ce choix installera (presque) automatiquement une Debian Lenny avec les options &quot;standards&quot;
====Graphical install====
Même chose que le choix ci-dessus, mais avec une interface graphique.
Peut s'avérer moins fiable, en fonction de votre matériel.
==== Advanced options====
C'est dans cette directions que nous allons...
====Help====
Divers fichiers d'aide sur les &quot;pré-requis&quot; à l'installation, les paramètres à passer au boot pour les machines un peu &quot;spéciales&quot;

[[Fichier:01 help.jpeg]]


== Installer boot menu ==

[[Image:01.jpeg]]

Le menu suivant offre des choix intéressants :

*Back...
*Expert Install
C'est cette option que nous choisirons, c'est celle qui laisse le plus de contrôle sur l'installation
*Rescue mode
Très utile si un jour votre machine ne démarre pas (cela permet de faire un chroot sur le système pour des réparations... Grub pas exemple)
Permet d'ouvrir un shell sur la partition système.
*Automated install
Comme son nom l'indique, une installation automatique où vous n'interviendrez presque pas
Identique au choix Install de la première page.
*Graphical expert install
Identique à &quot;Expert install&quot; mais en mode graphique
*Graphical rescue mode
Identique à &quot;Rescue mode&quot; mais en mode graphique
*Graphical automated install
Identique à &quot;Automated install&quot; mais en mode graphique
*Alternative desktop environments
Option intéressante si vous souhaitez installer un autre bureau que Gnome (KDE, LXDE, XFCE).
Vous retrouverez dans les sous-menus l'ensemble des choix offerts ici.

[[Image:02.jpeg]]

=== Choisir la langue ===

[[Image:03.jpeg]]

[[Image:04.jpeg]]

[[Image:05.jpeg]]

[[Image:06.jpeg]]

[[Image:07.jpeg]]

[[Image:08.jpeg]]

[[Image:09.jpeg]]

=== Choisir la disposition du clavier ===

[[Image:10.jpeg]]

[[Image:11.jpeg]]

[[Image:12.jpeg]]

=== Détecter et monter le CD ===

[[Image:13.jpeg]]

Activer l'usb ? Laissez le choix par défaut : oui

[[Image:14.jpeg]]

pcmcia ? Cela dépendra de votre machine...
Inutile de démarrer ces services si vous n'en avez pas !
La question vous sera reposée à chaque fois qu'une détection de matériel est nécessaire.

[[Image:15.jpeg]]

[[Image:16.jpeg]]

=== Charger des composants d'installation à partir du CD ===

Bien que je n'ai choisi aucune des options de cette liste, je vous détaille rapidement quelques choix :

Peu de mémoire vive (lowmem)
Connexion ppp (par modem)
rescue mode
support ntfs
wireless tools

[[Image:17.jpeg]]

[[Image:18.jpeg]]

[[Image:19.jpeg]]

[[Image:20.jpeg]]

[[Image:21.jpeg]]

=== Détecter le matériel réseau ===

[[Image:22.jpeg]]

[[Image:23.jpeg]]

=== Configurer le réseau ===

Généralement vous êtes derrière un routeur ou une &quot;box&quot; qui doit vous fournir une adresse IP.
Vous laisserez donc l'option DHCP.

[[Image:24.jpeg]]

[[Image:25.jpeg]]

[[Image:26.jpeg]]

Nom de la machine :

[[Image:27.jpeg]]

Nom du domaine. Il doit vous être fourni par le serveur DHCP. Si ce n'est pas le cas, laissez vide

[[Image:28.jpeg]]

=== Choisir un miroir de l'archive Debian ===

[[Image:29.jpeg]]

[[Image:30.jpeg]]

Choisissez un miroir pour récupérer les paquets. Inutiles que vos paquets fassent 12.000 Km, choisissez un miroir proche de chez vous.

[[Image:31.jpeg]]

[[Image:32.jpeg]]

[[Image:33.jpeg]]

A compléter si vous avez un proxy (pour ma part il s'agit d'un dépôt cache de paquets)

[[Image:34.jpeg]]

[[Image:35.jpeg]]

Un des points forts de la &quot;businesscard&quot; par rapport à une &quot;netinstall&quot;, le choix de la branche !

[[Image:36.jpeg]]

=== Configurer l'horloge ===

[[Image:37.jpeg]]

[[Image:38.jpeg]]

[[Image:39.jpeg]]

[[Image:40.jpeg]]

[[Image:41.jpeg]]

=== Détecter les disques ===

[[Image:42.jpeg]]

[[Image:43.jpeg]]

=== Partitionner les disques ===

[[Image:44.jpeg]]

[[Image:45.jpeg]]

[[Image:46.jpeg]]

[[Image:47.jpeg]]

[[Image:48.jpeg]]

[[Image:49.jpeg]]

[[Image:50.jpeg]]

=== Installer le système de base ===

[[Image:51.jpeg]]

[[Image:52.jpeg]]

[[Image:53.jpeg]]

[[Image:54.jpeg]]

[[Image:55.jpeg]]

[[Image:56.jpeg]]

=== Créer les utilisateurs et choisir les mots de passe ===

[[Image:57.jpeg]]

[[Image:58.jpeg]]

[[Image:59.jpeg]]

[[Image:60.jpeg]]

[[Image:61.jpeg]]

[[Image:62.jpeg]]

[[Image:63.jpeg]]

[[Image:64.jpeg]]

[[Image:65.jpeg]]

[[Image:66.jpeg]]

=== Configurer l'outil de gestion des paquets ===

[[Image:67.jpeg]]

[[Image:68.jpeg]]

[[Image:69.jpeg]]

[[Image:70.jpeg]]

=== Choisir et installer des logiciels ===

[[Image:71.jpeg]]

[[Image:72.jpeg]]

[[Image:73.jpeg]]

[[Image:74.jpeg]]

=== Installer le programme de démarrage Grub sur un disque dur ===

[[Image:75.jpeg]]

[[Image:76.jpeg]]

[[Image:77.jpeg]]

[[Image:78.jpeg]]

=== Sauvegarder les journaux de débogage ===

[[Image:79.jpeg]]

[[Image:80.jpeg]]

[[Image:81.jpeg]]

=== Terminer l'installation ===

[[Image:82.jpeg]]

[[Image:83.jpeg]]

[[Image:84.jpeg]]

[[Image:85.jpeg]]

[[Image:87.jpeg]]

----
--[[Utilisateur:Lol|Lol]] 3 avril 2010 à 04:12 (UTC)</text>
      <sha1>azsae7fh0jd917r0xxhmwtxdkp5py8z</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1640</id>
      <parentid>1564</parentid>
      <timestamp>2010-07-05T08:42:18Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="5942">#REDIRECT [[isalo:Installer_Debian_pas-%C3%A0-pas]]
{{Ébauche|Installer Debian pas-à-pas}}

Ce document, au travers de captures d'écrans, détaillera pas-à-pas (de façon sommaire) l'installation d'une Debian Lenny à partir d'une image iso &quot;businesscard&quot;

== Prérequis ==

Téléchargement de l'image iso &quot;businesscard&quot;
Choisissez la businesscard si vous souhaitez pouvoir choisir votre distribution (stable/testing/instable)

 $ wget http://cdimage.debian.org/debian-cd/5.0.4/i386/iso-cd/debian-504-i386-businesscard.iso

Vérifiez votre mage iso à l'aide de [[Vérifier_le_md5_d'une_image_iso|'''md5sum''']]

Gravez l'image sur un CD.

== Installation ==

Modifier votre bios pour que votre machine démarre sur le lecteur de CD/DVD
Insérez le disque dans le lecteur et démarrez sur le CD

== Page d'accueil et choix de la méthode d'installation ==

Un menu s'offre à vous :

=== Installation===
*Install
*Graphical install
*Advanced options
*Help

====Install====
Ce choix installera (presque) automatiquement une Debian Lenny avec les options &quot;standards&quot;
====Graphical install====
Même chose que le choix ci-dessus, mais avec une interface graphique.
Peut s'avérer moins fiable, en fonction de votre matériel.
==== Advanced options====
C'est dans cette directions que nous allons...
====Help====
Divers fichiers d'aide sur les &quot;pré-requis&quot; à l'installation, les paramètres à passer au boot pour les machines un peu &quot;spéciales&quot;

[[Fichier:01 help.jpeg]]


== Installer boot menu ==

[[Image:01.jpeg]]

Le menu suivant offre des choix intéressants :

*Back...
*Expert Install
C'est cette option que nous choisirons, c'est celle qui laisse le plus de contrôle sur l'installation
*Rescue mode
Très utile si un jour votre machine ne démarre pas (cela permet de faire un chroot sur le système pour des réparations... Grub pas exemple)
Permet d'ouvrir un shell sur la partition système.
*Automated install
Comme son nom l'indique, une installation automatique où vous n'interviendrez presque pas
Identique au choix Install de la première page.
*Graphical expert install
Identique à &quot;Expert install&quot; mais en mode graphique
*Graphical rescue mode
Identique à &quot;Rescue mode&quot; mais en mode graphique
*Graphical automated install
Identique à &quot;Automated install&quot; mais en mode graphique
*Alternative desktop environments
Option intéressante si vous souhaitez installer un autre bureau que Gnome (KDE, LXDE, XFCE).
Vous retrouverez dans les sous-menus l'ensemble des choix offerts ici.

[[Image:02.jpeg]]

=== Choisir la langue ===

[[Image:03.jpeg]]

[[Image:04.jpeg]]

[[Image:05.jpeg]]

[[Image:06.jpeg]]

[[Image:07.jpeg]]

[[Image:08.jpeg]]

[[Image:09.jpeg]]

=== Choisir la disposition du clavier ===

[[Image:10.jpeg]]

[[Image:11.jpeg]]

[[Image:12.jpeg]]

=== Détecter et monter le CD ===

[[Image:13.jpeg]]

Activer l'usb ? Laissez le choix par défaut : oui

[[Image:14.jpeg]]

pcmcia ? Cela dépendra de votre machine...
Inutile de démarrer ces services si vous n'en avez pas !
La question vous sera reposée à chaque fois qu'une détection de matériel est nécessaire.

[[Image:15.jpeg]]

[[Image:16.jpeg]]

=== Charger des composants d'installation à partir du CD ===

Bien que je n'ai choisi aucune des options de cette liste, je vous détaille rapidement quelques choix :

Peu de mémoire vive (lowmem)
Connexion ppp (par modem)
rescue mode
support ntfs
wireless tools

[[Image:17.jpeg]]

[[Image:18.jpeg]]

[[Image:19.jpeg]]

[[Image:20.jpeg]]

[[Image:21.jpeg]]

=== Détecter le matériel réseau ===

[[Image:22.jpeg]]

[[Image:23.jpeg]]

=== Configurer le réseau ===

Généralement vous êtes derrière un routeur ou une &quot;box&quot; qui doit vous fournir une adresse IP.
Vous laisserez donc l'option DHCP.

[[Image:24.jpeg]]

[[Image:25.jpeg]]

[[Image:26.jpeg]]

Nom de la machine :

[[Image:27.jpeg]]

Nom du domaine. Il doit vous être fourni par le serveur DHCP. Si ce n'est pas le cas, laissez vide

[[Image:28.jpeg]]

=== Choisir un miroir de l'archive Debian ===

[[Image:29.jpeg]]

[[Image:30.jpeg]]

Choisissez un miroir pour récupérer les paquets. Inutiles que vos paquets fassent 12.000 Km, choisissez un miroir proche de chez vous.

[[Image:31.jpeg]]

[[Image:32.jpeg]]

[[Image:33.jpeg]]

A compléter si vous avez un proxy (pour ma part il s'agit d'un dépôt cache de paquets)

[[Image:34.jpeg]]

[[Image:35.jpeg]]

Un des points forts de la &quot;businesscard&quot; par rapport à une &quot;netinstall&quot;, le choix de la branche !

[[Image:36.jpeg]]

=== Configurer l'horloge ===

[[Image:37.jpeg]]

[[Image:38.jpeg]]

[[Image:39.jpeg]]

[[Image:40.jpeg]]

[[Image:41.jpeg]]

=== Détecter les disques ===

[[Image:42.jpeg]]

[[Image:43.jpeg]]

=== Partitionner les disques ===

[[Image:44.jpeg]]

[[Image:45.jpeg]]

[[Image:46.jpeg]]

[[Image:47.jpeg]]

[[Image:48.jpeg]]

[[Image:49.jpeg]]

[[Image:50.jpeg]]

=== Installer le système de base ===

[[Image:51.jpeg]]

[[Image:52.jpeg]]

[[Image:53.jpeg]]

[[Image:54.jpeg]]

[[Image:55.jpeg]]

[[Image:56.jpeg]]

=== Créer les utilisateurs et choisir les mots de passe ===

[[Image:57.jpeg]]

[[Image:58.jpeg]]

[[Image:59.jpeg]]

[[Image:60.jpeg]]

[[Image:61.jpeg]]

[[Image:62.jpeg]]

[[Image:63.jpeg]]

[[Image:64.jpeg]]

[[Image:65.jpeg]]

[[Image:66.jpeg]]

=== Configurer l'outil de gestion des paquets ===

[[Image:67.jpeg]]

[[Image:68.jpeg]]

[[Image:69.jpeg]]

[[Image:70.jpeg]]

=== Choisir et installer des logiciels ===

[[Image:71.jpeg]]

[[Image:72.jpeg]]

[[Image:73.jpeg]]

[[Image:74.jpeg]]

=== Installer le programme de démarrage Grub sur un disque dur ===

[[Image:75.jpeg]]

[[Image:76.jpeg]]

[[Image:77.jpeg]]

[[Image:78.jpeg]]

=== Sauvegarder les journaux de débogage ===

[[Image:79.jpeg]]

[[Image:80.jpeg]]

[[Image:81.jpeg]]

=== Terminer l'installation ===

[[Image:82.jpeg]]

[[Image:83.jpeg]]

[[Image:84.jpeg]]

[[Image:85.jpeg]]

[[Image:87.jpeg]]

----
--[[Utilisateur:Lol|Lol]] 3 avril 2010 à 04:12 (UTC)</text>
      <sha1>he8sc37hdzpqxuip3llrnjqpyb7km77</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1644</id>
      <parentid>1640</parentid>
      <timestamp>2010-07-06T09:13:23Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Annulation des modifications 1640 de [[Special:Contributions/Lol|Lol]] ([[User talk:Lol|discussion]])</comment>
      <text xml:space="preserve" bytes="5890">{{Ébauche|Installer Debian pas-à-pas}}

Ce document, au travers de captures d'écrans, détaillera pas-à-pas (de façon sommaire) l'installation d'une Debian Lenny à partir d'une image iso &quot;businesscard&quot;

== Prérequis ==

Téléchargement de l'image iso &quot;businesscard&quot;
Choisissez la businesscard si vous souhaitez pouvoir choisir votre distribution (stable/testing/instable)

 $ wget http://cdimage.debian.org/debian-cd/5.0.4/i386/iso-cd/debian-504-i386-businesscard.iso

Vérifiez votre mage iso à l'aide de [[Vérifier_le_md5_d'une_image_iso|'''md5sum''']]

Gravez l'image sur un CD.

== Installation ==

Modifier votre bios pour que votre machine démarre sur le lecteur de CD/DVD
Insérez le disque dans le lecteur et démarrez sur le CD

== Page d'accueil et choix de la méthode d'installation ==

Un menu s'offre à vous :

=== Installation===
*Install
*Graphical install
*Advanced options
*Help

====Install====
Ce choix installera (presque) automatiquement une Debian Lenny avec les options &quot;standards&quot;
====Graphical install====
Même chose que le choix ci-dessus, mais avec une interface graphique.
Peut s'avérer moins fiable, en fonction de votre matériel.
==== Advanced options====
C'est dans cette directions que nous allons...
====Help====
Divers fichiers d'aide sur les &quot;pré-requis&quot; à l'installation, les paramètres à passer au boot pour les machines un peu &quot;spéciales&quot;

[[Fichier:01 help.jpeg]]


== Installer boot menu ==

[[Image:01.jpeg]]

Le menu suivant offre des choix intéressants :

*Back...
*Expert Install
C'est cette option que nous choisirons, c'est celle qui laisse le plus de contrôle sur l'installation
*Rescue mode
Très utile si un jour votre machine ne démarre pas (cela permet de faire un chroot sur le système pour des réparations... Grub pas exemple)
Permet d'ouvrir un shell sur la partition système.
*Automated install
Comme son nom l'indique, une installation automatique où vous n'interviendrez presque pas
Identique au choix Install de la première page.
*Graphical expert install
Identique à &quot;Expert install&quot; mais en mode graphique
*Graphical rescue mode
Identique à &quot;Rescue mode&quot; mais en mode graphique
*Graphical automated install
Identique à &quot;Automated install&quot; mais en mode graphique
*Alternative desktop environments
Option intéressante si vous souhaitez installer un autre bureau que Gnome (KDE, LXDE, XFCE).
Vous retrouverez dans les sous-menus l'ensemble des choix offerts ici.

[[Image:02.jpeg]]

=== Choisir la langue ===

[[Image:03.jpeg]]

[[Image:04.jpeg]]

[[Image:05.jpeg]]

[[Image:06.jpeg]]

[[Image:07.jpeg]]

[[Image:08.jpeg]]

[[Image:09.jpeg]]

=== Choisir la disposition du clavier ===

[[Image:10.jpeg]]

[[Image:11.jpeg]]

[[Image:12.jpeg]]

=== Détecter et monter le CD ===

[[Image:13.jpeg]]

Activer l'usb ? Laissez le choix par défaut : oui

[[Image:14.jpeg]]

pcmcia ? Cela dépendra de votre machine...
Inutile de démarrer ces services si vous n'en avez pas !
La question vous sera reposée à chaque fois qu'une détection de matériel est nécessaire.

[[Image:15.jpeg]]

[[Image:16.jpeg]]

=== Charger des composants d'installation à partir du CD ===

Bien que je n'ai choisi aucune des options de cette liste, je vous détaille rapidement quelques choix :

Peu de mémoire vive (lowmem)
Connexion ppp (par modem)
rescue mode
support ntfs
wireless tools

[[Image:17.jpeg]]

[[Image:18.jpeg]]

[[Image:19.jpeg]]

[[Image:20.jpeg]]

[[Image:21.jpeg]]

=== Détecter le matériel réseau ===

[[Image:22.jpeg]]

[[Image:23.jpeg]]

=== Configurer le réseau ===

Généralement vous êtes derrière un routeur ou une &quot;box&quot; qui doit vous fournir une adresse IP.
Vous laisserez donc l'option DHCP.

[[Image:24.jpeg]]

[[Image:25.jpeg]]

[[Image:26.jpeg]]

Nom de la machine :

[[Image:27.jpeg]]

Nom du domaine. Il doit vous être fourni par le serveur DHCP. Si ce n'est pas le cas, laissez vide

[[Image:28.jpeg]]

=== Choisir un miroir de l'archive Debian ===

[[Image:29.jpeg]]

[[Image:30.jpeg]]

Choisissez un miroir pour récupérer les paquets. Inutiles que vos paquets fassent 12.000 Km, choisissez un miroir proche de chez vous.

[[Image:31.jpeg]]

[[Image:32.jpeg]]

[[Image:33.jpeg]]

A compléter si vous avez un proxy (pour ma part il s'agit d'un dépôt cache de paquets)

[[Image:34.jpeg]]

[[Image:35.jpeg]]

Un des points forts de la &quot;businesscard&quot; par rapport à une &quot;netinstall&quot;, le choix de la branche !

[[Image:36.jpeg]]

=== Configurer l'horloge ===

[[Image:37.jpeg]]

[[Image:38.jpeg]]

[[Image:39.jpeg]]

[[Image:40.jpeg]]

[[Image:41.jpeg]]

=== Détecter les disques ===

[[Image:42.jpeg]]

[[Image:43.jpeg]]

=== Partitionner les disques ===

[[Image:44.jpeg]]

[[Image:45.jpeg]]

[[Image:46.jpeg]]

[[Image:47.jpeg]]

[[Image:48.jpeg]]

[[Image:49.jpeg]]

[[Image:50.jpeg]]

=== Installer le système de base ===

[[Image:51.jpeg]]

[[Image:52.jpeg]]

[[Image:53.jpeg]]

[[Image:54.jpeg]]

[[Image:55.jpeg]]

[[Image:56.jpeg]]

=== Créer les utilisateurs et choisir les mots de passe ===

[[Image:57.jpeg]]

[[Image:58.jpeg]]

[[Image:59.jpeg]]

[[Image:60.jpeg]]

[[Image:61.jpeg]]

[[Image:62.jpeg]]

[[Image:63.jpeg]]

[[Image:64.jpeg]]

[[Image:65.jpeg]]

[[Image:66.jpeg]]

=== Configurer l'outil de gestion des paquets ===

[[Image:67.jpeg]]

[[Image:68.jpeg]]

[[Image:69.jpeg]]

[[Image:70.jpeg]]

=== Choisir et installer des logiciels ===

[[Image:71.jpeg]]

[[Image:72.jpeg]]

[[Image:73.jpeg]]

[[Image:74.jpeg]]

=== Installer le programme de démarrage Grub sur un disque dur ===

[[Image:75.jpeg]]

[[Image:76.jpeg]]

[[Image:77.jpeg]]

[[Image:78.jpeg]]

=== Sauvegarder les journaux de débogage ===

[[Image:79.jpeg]]

[[Image:80.jpeg]]

[[Image:81.jpeg]]

=== Terminer l'installation ===

[[Image:82.jpeg]]

[[Image:83.jpeg]]

[[Image:84.jpeg]]

[[Image:85.jpeg]]

[[Image:87.jpeg]]

----
--[[Utilisateur:Lol|Lol]] 3 avril 2010 à 04:12 (UTC)</text>
      <sha1>azsae7fh0jd917r0xxhmwtxdkp5py8z</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1835</id>
      <parentid>1644</parentid>
      <timestamp>2010-08-03T06:41:30Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Installer boot menu */</comment>
      <text xml:space="preserve" bytes="5890">{{Ébauche|Installer Debian pas-à-pas}}

Ce document, au travers de captures d'écrans, détaillera pas-à-pas (de façon sommaire) l'installation d'une Debian Lenny à partir d'une image iso &quot;businesscard&quot;

== Prérequis ==

Téléchargement de l'image iso &quot;businesscard&quot;
Choisissez la businesscard si vous souhaitez pouvoir choisir votre distribution (stable/testing/instable)

 $ wget http://cdimage.debian.org/debian-cd/5.0.4/i386/iso-cd/debian-504-i386-businesscard.iso

Vérifiez votre mage iso à l'aide de [[Vérifier_le_md5_d'une_image_iso|'''md5sum''']]

Gravez l'image sur un CD.

== Installation ==

Modifier votre bios pour que votre machine démarre sur le lecteur de CD/DVD
Insérez le disque dans le lecteur et démarrez sur le CD

== Page d'accueil et choix de la méthode d'installation ==

Un menu s'offre à vous :

=== Installation===
*Install
*Graphical install
*Advanced options
*Help

====Install====
Ce choix installera (presque) automatiquement une Debian Lenny avec les options &quot;standards&quot;
====Graphical install====
Même chose que le choix ci-dessus, mais avec une interface graphique.
Peut s'avérer moins fiable, en fonction de votre matériel.
==== Advanced options====
C'est dans cette directions que nous allons...
====Help====
Divers fichiers d'aide sur les &quot;pré-requis&quot; à l'installation, les paramètres à passer au boot pour les machines un peu &quot;spéciales&quot;

[[Fichier:01 help.jpeg]]


== Installer boot menu ==

[[Image:01.jpeg]]

Le menu suivant offre des choix intéressants :

*Back...
*Expert Install
C'est cette option que nous choisirons, c'est celle qui laisse le plus de contrôle sur l'installation
*Rescue mode
Très utile si un jour votre machine ne démarre pas (cela permet de faire un chroot sur le système pour des réparations... Grub par exemple)
Permet d'ouvrir un shell sur la partition système.
*Automated install
Comme son nom l'indique, une installation automatique où vous n'interviendrez presque pas
Identique au choix Install de la première page.
*Graphical expert install
Identique à &quot;Expert install&quot; mais en mode graphique
*Graphical rescue mode
Identique à &quot;Rescue mode&quot; mais en mode graphique
*Graphical automated install
Identique à &quot;Automated install&quot; mais en mode graphique
*Alternative desktop environments
Option intéressante si vous souhaitez installer un autre bureau que Gnome (KDE, LXDE, XFCE).
Vous retrouverez dans les sous-menus l'ensemble des choix offerts ici.

[[Image:02.jpeg]]

=== Choisir la langue ===

[[Image:03.jpeg]]

[[Image:04.jpeg]]

[[Image:05.jpeg]]

[[Image:06.jpeg]]

[[Image:07.jpeg]]

[[Image:08.jpeg]]

[[Image:09.jpeg]]

=== Choisir la disposition du clavier ===

[[Image:10.jpeg]]

[[Image:11.jpeg]]

[[Image:12.jpeg]]

=== Détecter et monter le CD ===

[[Image:13.jpeg]]

Activer l'usb ? Laissez le choix par défaut : oui

[[Image:14.jpeg]]

pcmcia ? Cela dépendra de votre machine...
Inutile de démarrer ces services si vous n'en avez pas !
La question vous sera reposée à chaque fois qu'une détection de matériel est nécessaire.

[[Image:15.jpeg]]

[[Image:16.jpeg]]

=== Charger des composants d'installation à partir du CD ===

Bien que je n'ai choisi aucune des options de cette liste, je vous détaille rapidement quelques choix :

Peu de mémoire vive (lowmem)
Connexion ppp (par modem)
rescue mode
support ntfs
wireless tools

[[Image:17.jpeg]]

[[Image:18.jpeg]]

[[Image:19.jpeg]]

[[Image:20.jpeg]]

[[Image:21.jpeg]]

=== Détecter le matériel réseau ===

[[Image:22.jpeg]]

[[Image:23.jpeg]]

=== Configurer le réseau ===

Généralement vous êtes derrière un routeur ou une &quot;box&quot; qui doit vous fournir une adresse IP.
Vous laisserez donc l'option DHCP.

[[Image:24.jpeg]]

[[Image:25.jpeg]]

[[Image:26.jpeg]]

Nom de la machine :

[[Image:27.jpeg]]

Nom du domaine. Il doit vous être fourni par le serveur DHCP. Si ce n'est pas le cas, laissez vide

[[Image:28.jpeg]]

=== Choisir un miroir de l'archive Debian ===

[[Image:29.jpeg]]

[[Image:30.jpeg]]

Choisissez un miroir pour récupérer les paquets. Inutiles que vos paquets fassent 12.000 Km, choisissez un miroir proche de chez vous.

[[Image:31.jpeg]]

[[Image:32.jpeg]]

[[Image:33.jpeg]]

A compléter si vous avez un proxy (pour ma part il s'agit d'un dépôt cache de paquets)

[[Image:34.jpeg]]

[[Image:35.jpeg]]

Un des points forts de la &quot;businesscard&quot; par rapport à une &quot;netinstall&quot;, le choix de la branche !

[[Image:36.jpeg]]

=== Configurer l'horloge ===

[[Image:37.jpeg]]

[[Image:38.jpeg]]

[[Image:39.jpeg]]

[[Image:40.jpeg]]

[[Image:41.jpeg]]

=== Détecter les disques ===

[[Image:42.jpeg]]

[[Image:43.jpeg]]

=== Partitionner les disques ===

[[Image:44.jpeg]]

[[Image:45.jpeg]]

[[Image:46.jpeg]]

[[Image:47.jpeg]]

[[Image:48.jpeg]]

[[Image:49.jpeg]]

[[Image:50.jpeg]]

=== Installer le système de base ===

[[Image:51.jpeg]]

[[Image:52.jpeg]]

[[Image:53.jpeg]]

[[Image:54.jpeg]]

[[Image:55.jpeg]]

[[Image:56.jpeg]]

=== Créer les utilisateurs et choisir les mots de passe ===

[[Image:57.jpeg]]

[[Image:58.jpeg]]

[[Image:59.jpeg]]

[[Image:60.jpeg]]

[[Image:61.jpeg]]

[[Image:62.jpeg]]

[[Image:63.jpeg]]

[[Image:64.jpeg]]

[[Image:65.jpeg]]

[[Image:66.jpeg]]

=== Configurer l'outil de gestion des paquets ===

[[Image:67.jpeg]]

[[Image:68.jpeg]]

[[Image:69.jpeg]]

[[Image:70.jpeg]]

=== Choisir et installer des logiciels ===

[[Image:71.jpeg]]

[[Image:72.jpeg]]

[[Image:73.jpeg]]

[[Image:74.jpeg]]

=== Installer le programme de démarrage Grub sur un disque dur ===

[[Image:75.jpeg]]

[[Image:76.jpeg]]

[[Image:77.jpeg]]

[[Image:78.jpeg]]

=== Sauvegarder les journaux de débogage ===

[[Image:79.jpeg]]

[[Image:80.jpeg]]

[[Image:81.jpeg]]

=== Terminer l'installation ===

[[Image:82.jpeg]]

[[Image:83.jpeg]]

[[Image:84.jpeg]]

[[Image:85.jpeg]]

[[Image:87.jpeg]]

----
--[[Utilisateur:Lol|Lol]] 3 avril 2010 à 04:12 (UTC)</text>
      <sha1>nrcpgsowcdf726gxhxcjpbix8lqdtdg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1888</id>
      <parentid>1835</parentid>
      <timestamp>2010-08-07T13:43:15Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Prérequis */ Mise à jour lien</comment>
      <text xml:space="preserve" bytes="5967">{{Ébauche|Installer Debian pas-à-pas}}

Ce document, au travers de captures d'écrans, détaillera pas-à-pas (de façon sommaire) l'installation d'une Debian Lenny à partir d'une image iso &quot;businesscard&quot;

== Prérequis ==

Téléchargement de l'image iso &quot;businesscard&quot;
Choisissez la businesscard si vous souhaitez pouvoir choisir votre distribution (stable/testing/instable)
Choisissez l'image en fonction de votre machine : i386 ou amd64 en général

 $ wget http://cdimage.debian.org/debian-cd/5.0.5/i386/iso-cd/debian-505-i386-businesscard.iso

Vérifiez votre mage iso à l'aide de [[Vérifier_le_md5_d'une_image_iso|'''md5sum''']]

Gravez l'image sur un CD.

== Installation ==

Modifier votre bios pour que votre machine démarre sur le lecteur de CD/DVD
Insérez le disque dans le lecteur et démarrez sur le CD

== Page d'accueil et choix de la méthode d'installation ==

Un menu s'offre à vous :

=== Installation===
*Install
*Graphical install
*Advanced options
*Help

====Install====
Ce choix installera (presque) automatiquement une Debian Lenny avec les options &quot;standards&quot;
====Graphical install====
Même chose que le choix ci-dessus, mais avec une interface graphique.
Peut s'avérer moins fiable, en fonction de votre matériel.
==== Advanced options====
C'est dans cette directions que nous allons...
====Help====
Divers fichiers d'aide sur les &quot;pré-requis&quot; à l'installation, les paramètres à passer au boot pour les machines un peu &quot;spéciales&quot;

[[Fichier:01 help.jpeg]]


== Installer boot menu ==

[[Image:01.jpeg]]

Le menu suivant offre des choix intéressants :

*Back...
*Expert Install
C'est cette option que nous choisirons, c'est celle qui laisse le plus de contrôle sur l'installation
*Rescue mode
Très utile si un jour votre machine ne démarre pas (cela permet de faire un chroot sur le système pour des réparations... Grub par exemple)
Permet d'ouvrir un shell sur la partition système.
*Automated install
Comme son nom l'indique, une installation automatique où vous n'interviendrez presque pas
Identique au choix Install de la première page.
*Graphical expert install
Identique à &quot;Expert install&quot; mais en mode graphique
*Graphical rescue mode
Identique à &quot;Rescue mode&quot; mais en mode graphique
*Graphical automated install
Identique à &quot;Automated install&quot; mais en mode graphique
*Alternative desktop environments
Option intéressante si vous souhaitez installer un autre bureau que Gnome (KDE, LXDE, XFCE).
Vous retrouverez dans les sous-menus l'ensemble des choix offerts ici.

[[Image:02.jpeg]]

=== Choisir la langue ===

[[Image:03.jpeg]]

[[Image:04.jpeg]]

[[Image:05.jpeg]]

[[Image:06.jpeg]]

[[Image:07.jpeg]]

[[Image:08.jpeg]]

[[Image:09.jpeg]]

=== Choisir la disposition du clavier ===

[[Image:10.jpeg]]

[[Image:11.jpeg]]

[[Image:12.jpeg]]

=== Détecter et monter le CD ===

[[Image:13.jpeg]]

Activer l'usb ? Laissez le choix par défaut : oui

[[Image:14.jpeg]]

pcmcia ? Cela dépendra de votre machine...
Inutile de démarrer ces services si vous n'en avez pas !
La question vous sera reposée à chaque fois qu'une détection de matériel est nécessaire.

[[Image:15.jpeg]]

[[Image:16.jpeg]]

=== Charger des composants d'installation à partir du CD ===

Bien que je n'ai choisi aucune des options de cette liste, je vous détaille rapidement quelques choix :

Peu de mémoire vive (lowmem)
Connexion ppp (par modem)
rescue mode
support ntfs
wireless tools

[[Image:17.jpeg]]

[[Image:18.jpeg]]

[[Image:19.jpeg]]

[[Image:20.jpeg]]

[[Image:21.jpeg]]

=== Détecter le matériel réseau ===

[[Image:22.jpeg]]

[[Image:23.jpeg]]

=== Configurer le réseau ===

Généralement vous êtes derrière un routeur ou une &quot;box&quot; qui doit vous fournir une adresse IP.
Vous laisserez donc l'option DHCP.

[[Image:24.jpeg]]

[[Image:25.jpeg]]

[[Image:26.jpeg]]

Nom de la machine :

[[Image:27.jpeg]]

Nom du domaine. Il doit vous être fourni par le serveur DHCP. Si ce n'est pas le cas, laissez vide

[[Image:28.jpeg]]

=== Choisir un miroir de l'archive Debian ===

[[Image:29.jpeg]]

[[Image:30.jpeg]]

Choisissez un miroir pour récupérer les paquets. Inutiles que vos paquets fassent 12.000 Km, choisissez un miroir proche de chez vous.

[[Image:31.jpeg]]

[[Image:32.jpeg]]

[[Image:33.jpeg]]

A compléter si vous avez un proxy (pour ma part il s'agit d'un dépôt cache de paquets)

[[Image:34.jpeg]]

[[Image:35.jpeg]]

Un des points forts de la &quot;businesscard&quot; par rapport à une &quot;netinstall&quot;, le choix de la branche !

[[Image:36.jpeg]]

=== Configurer l'horloge ===

[[Image:37.jpeg]]

[[Image:38.jpeg]]

[[Image:39.jpeg]]

[[Image:40.jpeg]]

[[Image:41.jpeg]]

=== Détecter les disques ===

[[Image:42.jpeg]]

[[Image:43.jpeg]]

=== Partitionner les disques ===

[[Image:44.jpeg]]

[[Image:45.jpeg]]

[[Image:46.jpeg]]

[[Image:47.jpeg]]

[[Image:48.jpeg]]

[[Image:49.jpeg]]

[[Image:50.jpeg]]

=== Installer le système de base ===

[[Image:51.jpeg]]

[[Image:52.jpeg]]

[[Image:53.jpeg]]

[[Image:54.jpeg]]

[[Image:55.jpeg]]

[[Image:56.jpeg]]

=== Créer les utilisateurs et choisir les mots de passe ===

[[Image:57.jpeg]]

[[Image:58.jpeg]]

[[Image:59.jpeg]]

[[Image:60.jpeg]]

[[Image:61.jpeg]]

[[Image:62.jpeg]]

[[Image:63.jpeg]]

[[Image:64.jpeg]]

[[Image:65.jpeg]]

[[Image:66.jpeg]]

=== Configurer l'outil de gestion des paquets ===

[[Image:67.jpeg]]

[[Image:68.jpeg]]

[[Image:69.jpeg]]

[[Image:70.jpeg]]

=== Choisir et installer des logiciels ===

[[Image:71.jpeg]]

[[Image:72.jpeg]]

[[Image:73.jpeg]]

[[Image:74.jpeg]]

=== Installer le programme de démarrage Grub sur un disque dur ===

[[Image:75.jpeg]]

[[Image:76.jpeg]]

[[Image:77.jpeg]]

[[Image:78.jpeg]]

=== Sauvegarder les journaux de débogage ===

[[Image:79.jpeg]]

[[Image:80.jpeg]]

[[Image:81.jpeg]]

=== Terminer l'installation ===

[[Image:82.jpeg]]

[[Image:83.jpeg]]

[[Image:84.jpeg]]

[[Image:85.jpeg]]

[[Image:87.jpeg]]

----
--[[Utilisateur:Lol|Lol]] 3 avril 2010 à 04:12 (UTC)</text>
      <sha1>bnf3uexftnajwmlpsm0hmn11s9api8h</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1889</id>
      <parentid>1888</parentid>
      <timestamp>2010-08-07T14:00:56Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="5970">{{Ébauche|Installer Debian pas-à-pas}}

Ce document, au travers de captures d'écrans, détaillera pas-à-pas (de façon sommaire) l'installation d'une Debian Lenny à partir d'une image iso &quot;businesscard&quot;

== Prérequis ==

Téléchargement de l'image iso &quot;businesscard&quot;
Choisissez la businesscard si vous souhaitez pouvoir choisir votre distribution (stable/testing/instable)
Choisissez l'image en fonction de votre machine : i386 ou amd64 en général

 $ wget -c http://cdimage.debian.org/debian-cd/5.0.5/i386/iso-cd/debian-505-i386-businesscard.iso

Vérifiez votre mage iso à l'aide de [[Vérifier_le_md5_d'une_image_iso|'''md5sum''']]

Gravez l'image sur un CD.

== Installation ==

Modifier votre bios pour que votre machine démarre sur le lecteur de CD/DVD
Insérez le disque dans le lecteur et démarrez sur le CD

== Page d'accueil et choix de la méthode d'installation ==

Un menu s'offre à vous :

=== Installation===
*Install
*Graphical install
*Advanced options
*Help

====Install====
Ce choix installera (presque) automatiquement une Debian Lenny avec les options &quot;standards&quot;
====Graphical install====
Même chose que le choix ci-dessus, mais avec une interface graphique.
Peut s'avérer moins fiable, en fonction de votre matériel.
==== Advanced options====
C'est dans cette directions que nous allons...
====Help====
Divers fichiers d'aide sur les &quot;pré-requis&quot; à l'installation, les paramètres à passer au boot pour les machines un peu &quot;spéciales&quot;

[[Fichier:01 help.jpeg]]


== Installer boot menu ==

[[Image:01.jpeg]]

Le menu suivant offre des choix intéressants :

*Back...
*Expert Install
C'est cette option que nous choisirons, c'est celle qui laisse le plus de contrôle sur l'installation
*Rescue mode
Très utile si un jour votre machine ne démarre pas (cela permet de faire un chroot sur le système pour des réparations... Grub par exemple)
Permet d'ouvrir un shell sur la partition système.
*Automated install
Comme son nom l'indique, une installation automatique où vous n'interviendrez presque pas
Identique au choix Install de la première page.
*Graphical expert install
Identique à &quot;Expert install&quot; mais en mode graphique
*Graphical rescue mode
Identique à &quot;Rescue mode&quot; mais en mode graphique
*Graphical automated install
Identique à &quot;Automated install&quot; mais en mode graphique
*Alternative desktop environments
Option intéressante si vous souhaitez installer un autre bureau que Gnome (KDE, LXDE, XFCE).
Vous retrouverez dans les sous-menus l'ensemble des choix offerts ici.

[[Image:02.jpeg]]

=== Choisir la langue ===

[[Image:03.jpeg]]

[[Image:04.jpeg]]

[[Image:05.jpeg]]

[[Image:06.jpeg]]

[[Image:07.jpeg]]

[[Image:08.jpeg]]

[[Image:09.jpeg]]

=== Choisir la disposition du clavier ===

[[Image:10.jpeg]]

[[Image:11.jpeg]]

[[Image:12.jpeg]]

=== Détecter et monter le CD ===

[[Image:13.jpeg]]

Activer l'usb ? Laissez le choix par défaut : oui

[[Image:14.jpeg]]

pcmcia ? Cela dépendra de votre machine...
Inutile de démarrer ces services si vous n'en avez pas !
La question vous sera reposée à chaque fois qu'une détection de matériel est nécessaire.

[[Image:15.jpeg]]

[[Image:16.jpeg]]

=== Charger des composants d'installation à partir du CD ===

Bien que je n'ai choisi aucune des options de cette liste, je vous détaille rapidement quelques choix :

Peu de mémoire vive (lowmem)
Connexion ppp (par modem)
rescue mode
support ntfs
wireless tools

[[Image:17.jpeg]]

[[Image:18.jpeg]]

[[Image:19.jpeg]]

[[Image:20.jpeg]]

[[Image:21.jpeg]]

=== Détecter le matériel réseau ===

[[Image:22.jpeg]]

[[Image:23.jpeg]]

=== Configurer le réseau ===

Généralement vous êtes derrière un routeur ou une &quot;box&quot; qui doit vous fournir une adresse IP.
Vous laisserez donc l'option DHCP.

[[Image:24.jpeg]]

[[Image:25.jpeg]]

[[Image:26.jpeg]]

Nom de la machine :

[[Image:27.jpeg]]

Nom du domaine. Il doit vous être fourni par le serveur DHCP. Si ce n'est pas le cas, laissez vide

[[Image:28.jpeg]]

=== Choisir un miroir de l'archive Debian ===

[[Image:29.jpeg]]

[[Image:30.jpeg]]

Choisissez un miroir pour récupérer les paquets. Inutiles que vos paquets fassent 12.000 Km, choisissez un miroir proche de chez vous.

[[Image:31.jpeg]]

[[Image:32.jpeg]]

[[Image:33.jpeg]]

A compléter si vous avez un proxy (pour ma part il s'agit d'un dépôt cache de paquets)

[[Image:34.jpeg]]

[[Image:35.jpeg]]

Un des points forts de la &quot;businesscard&quot; par rapport à une &quot;netinstall&quot;, le choix de la branche !

[[Image:36.jpeg]]

=== Configurer l'horloge ===

[[Image:37.jpeg]]

[[Image:38.jpeg]]

[[Image:39.jpeg]]

[[Image:40.jpeg]]

[[Image:41.jpeg]]

=== Détecter les disques ===

[[Image:42.jpeg]]

[[Image:43.jpeg]]

=== Partitionner les disques ===

[[Image:44.jpeg]]

[[Image:45.jpeg]]

[[Image:46.jpeg]]

[[Image:47.jpeg]]

[[Image:48.jpeg]]

[[Image:49.jpeg]]

[[Image:50.jpeg]]

=== Installer le système de base ===

[[Image:51.jpeg]]

[[Image:52.jpeg]]

[[Image:53.jpeg]]

[[Image:54.jpeg]]

[[Image:55.jpeg]]

[[Image:56.jpeg]]

=== Créer les utilisateurs et choisir les mots de passe ===

[[Image:57.jpeg]]

[[Image:58.jpeg]]

[[Image:59.jpeg]]

[[Image:60.jpeg]]

[[Image:61.jpeg]]

[[Image:62.jpeg]]

[[Image:63.jpeg]]

[[Image:64.jpeg]]

[[Image:65.jpeg]]

[[Image:66.jpeg]]

=== Configurer l'outil de gestion des paquets ===

[[Image:67.jpeg]]

[[Image:68.jpeg]]

[[Image:69.jpeg]]

[[Image:70.jpeg]]

=== Choisir et installer des logiciels ===

[[Image:71.jpeg]]

[[Image:72.jpeg]]

[[Image:73.jpeg]]

[[Image:74.jpeg]]

=== Installer le programme de démarrage Grub sur un disque dur ===

[[Image:75.jpeg]]

[[Image:76.jpeg]]

[[Image:77.jpeg]]

[[Image:78.jpeg]]

=== Sauvegarder les journaux de débogage ===

[[Image:79.jpeg]]

[[Image:80.jpeg]]

[[Image:81.jpeg]]

=== Terminer l'installation ===

[[Image:82.jpeg]]

[[Image:83.jpeg]]

[[Image:84.jpeg]]

[[Image:85.jpeg]]

[[Image:87.jpeg]]

----
--[[Utilisateur:Lol|Lol]] 3 avril 2010 à 04:12 (UTC)</text>
      <sha1>e4z0jvxc6u3ia5huwx214mugr7syjwm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2093</id>
      <parentid>1889</parentid>
      <timestamp>2010-09-15T17:02:25Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="5999">{{Ébauche|Installer Debian pas-à-pas}}

Ce document, au travers de captures d'écrans, détaillera pas-à-pas (de façon sommaire) l'installation d'une Debian Lenny à partir d'une image iso &quot;businesscard&quot;

== Prérequis ==

Téléchargement de l'image iso &quot;businesscard&quot;
Choisissez la businesscard si vous souhaitez pouvoir choisir votre distribution (stable/testing/instable)
Choisissez l'image en fonction de votre machine : i386 ou amd64 en général

 $ wget -c http://cdimage.debian.org/debian-cd/5.0.5/i386/iso-cd/debian-505-i386-businesscard.iso

Vérifiez votre mage iso à l'aide de [[Vérifier_le_md5_d'une_image_iso|'''md5sum''']]

Gravez l'image sur un CD.

== Installation ==

Modifier votre bios pour que votre machine démarre sur le lecteur de CD/DVD
Insérez le disque dans le lecteur et démarrez sur le CD

== Page d'accueil et choix de la méthode d'installation ==

Un menu s'offre à vous :

=== Installation===
*Install
*Graphical install
*Advanced options
*Help

====Install====
Ce choix installera (presque) automatiquement une Debian Lenny avec les options &quot;standards&quot;
====Graphical install====
Même chose que le choix ci-dessus, mais avec une interface graphique.
Peut s'avérer moins fiable, en fonction de votre matériel.
==== Advanced options====
C'est dans cette directions que nous allons...
====Help====
Divers fichiers d'aide sur les &quot;pré-requis&quot; à l'installation, les paramètres à passer au boot pour les machines un peu &quot;spéciales&quot;

[[Fichier:01 help.jpeg]]


== Installer boot menu ==

[[Image:01.jpeg]]

Le menu suivant offre des choix intéressants :

*Back...
*Expert Install
C'est cette option que nous choisirons, c'est celle qui laisse le plus de contrôle sur l'installation
*Rescue mode
Très utile si un jour votre machine ne démarre pas (cela permet de faire un chroot sur le système pour des réparations... Grub par exemple)
Permet d'ouvrir un shell sur la partition système.
*Automated install
Comme son nom l'indique, une installation automatique où vous n'interviendrez presque pas
Identique au choix Install de la première page.
*Graphical expert install
Identique à &quot;Expert install&quot; mais en mode graphique
*Graphical rescue mode
Identique à &quot;Rescue mode&quot; mais en mode graphique
*Graphical automated install
Identique à &quot;Automated install&quot; mais en mode graphique
*Alternative desktop environments
Option intéressante si vous souhaitez installer un autre bureau que Gnome (KDE, LXDE, XFCE).
Vous retrouverez dans les sous-menus l'ensemble des choix offerts ici.

[[Image:02.jpeg]]

=== Choisir la langue ===

[[Image:03.jpeg]]

[[Image:04.jpeg]]

[[Image:05.jpeg]]

[[Image:06.jpeg]]

[[Image:07.jpeg]]

[[Image:08.jpeg]]

[[Image:09.jpeg]]

=== Choisir la disposition du clavier ===

[[Image:10.jpeg]]

[[Image:11.jpeg]]

[[Image:12.jpeg]]

=== Détecter et monter le CD ===

[[Image:13.jpeg]]

Activer l'usb ? Laissez le choix par défaut : oui

[[Image:14.jpeg]]

pcmcia ? Cela dépendra de votre machine...
Inutile de démarrer ces services si vous n'en avez pas !
La question vous sera reposée à chaque fois qu'une détection de matériel est nécessaire.

[[Image:15.jpeg]]

[[Image:16.jpeg]]

=== Charger des composants d'installation à partir du CD ===

Bien que je n'ai choisi aucune des options de cette liste, je vous détaille rapidement quelques choix :

Peu de mémoire vive (lowmem)
Connexion ppp (par modem)
rescue mode
support ntfs
wireless tools

[[Image:17.jpeg]]

[[Image:18.jpeg]]

[[Image:19.jpeg]]

[[Image:20.jpeg]]

[[Image:21.jpeg]]

=== Détecter le matériel réseau ===

[[Image:22.jpeg]]

[[Image:23.jpeg]]

=== Configurer le réseau ===

Généralement vous êtes derrière un routeur ou une &quot;box&quot; qui doit vous fournir une adresse IP.
Vous laisserez donc l'option DHCP.

[[Image:24.jpeg]]

[[Image:25.jpeg]]

[[Image:26.jpeg]]

Nom de la machine :

[[Image:27.jpeg]]

Nom du domaine. Il doit vous être fourni par le serveur DHCP. Si ce n'est pas le cas, laissez vide

[[Image:28.jpeg]]

=== Choisir un miroir de l'archive Debian ===

[[Image:29.jpeg]]

[[Image:30.jpeg]]

Choisissez un miroir pour récupérer les paquets. Inutiles que vos paquets fassent 12.000 Km, choisissez un miroir proche de chez vous.

[[Image:31.jpeg]]

[[Image:32.jpeg]]

[[Image:33.jpeg]]

A compléter si vous avez un proxy (pour ma part il s'agit d'un dépôt cache de paquets)

[[Image:34.jpeg]]

[[Image:35.jpeg]]

Un des points forts de la &quot;businesscard&quot; par rapport à une &quot;netinstall&quot;, le choix de la branche !

[[Image:36.jpeg]]

=== Configurer l'horloge ===

[[Image:37.jpeg]]

[[Image:38.jpeg]]

[[Image:39.jpeg]]

[[Image:40.jpeg]]

[[Image:41.jpeg]]

=== Détecter les disques ===

[[Image:42.jpeg]]

[[Image:43.jpeg]]

=== Partitionner les disques ===

[[Image:44.jpeg]]

[[Image:45.jpeg]]

[[Image:46.jpeg]]

[[Image:47.jpeg]]

[[Image:48.jpeg]]

[[Image:49.jpeg]]

[[Image:50.jpeg]]

=== Installer le système de base ===

[[Image:51.jpeg]]

[[Image:52.jpeg]]

[[Image:53.jpeg]]

[[Image:54.jpeg]]

[[Image:55.jpeg]]

[[Image:56.jpeg]]

=== Créer les utilisateurs et choisir les mots de passe ===

[[Image:57.jpeg]]

[[Image:58.jpeg]]

[[Image:59.jpeg]]

[[Image:60.jpeg]]

[[Image:61.jpeg]]

[[Image:62.jpeg]]

[[Image:63.jpeg]]

[[Image:64.jpeg]]

[[Image:65.jpeg]]

[[Image:66.jpeg]]

=== Configurer l'outil de gestion des paquets ===

[[Image:67.jpeg]]

[[Image:68.jpeg]]

[[Image:69.jpeg]]

[[Image:70.jpeg]]

=== Choisir et installer des logiciels ===

[[Image:71.jpeg]]

[[Image:72.jpeg]]

[[Image:73.jpeg]]

[[Image:74.jpeg]]

=== Installer le programme de démarrage Grub sur un disque dur ===

[[Image:75.jpeg]]

[[Image:76.jpeg]]

[[Image:77.jpeg]]

[[Image:78.jpeg]]

=== Sauvegarder les journaux de débogage ===

[[Image:79.jpeg]]

[[Image:80.jpeg]]

[[Image:81.jpeg]]

=== Terminer l'installation ===

[[Image:82.jpeg]]

[[Image:83.jpeg]]

[[Image:84.jpeg]]

[[Image:85.jpeg]]

[[Image:87.jpeg]]

----
--[[Utilisateur:Lol|Lol]] 3 avril 2010 à 04:12 (UTC)

[[Catégorie:Installation]]</text>
      <sha1>qpcbem3g1sulnn57e9106x7j54mzhzu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2270</id>
      <parentid>2093</parentid>
      <timestamp>2010-11-11T11:39:07Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Lien mort */</comment>
      <text xml:space="preserve" bytes="5995">{{Ébauche|Installer Debian pas-à-pas}}

Ce document, au travers de captures d'écrans, détaillera pas-à-pas (de façon sommaire) l'installation d'une Debian Lenny à partir d'une image iso &quot;businesscard&quot;

== Prérequis ==

Téléchargement de l'image iso &quot;businesscard&quot;
Choisissez la businesscard si vous souhaitez pouvoir choisir votre distribution (stable/testing/instable)
Choisissez l'image en fonction de votre machine : i386 ou amd64 en général

 $ wget -c http://ftp.acc.umu.se/debian-cd/5.0.6/i386/iso-cd/debian-506-i386-businesscard.iso

Vérifiez votre mage iso à l'aide de [[Vérifier_le_md5_d'une_image_iso|'''md5sum''']]

Gravez l'image sur un CD.

== Installation ==

Modifier votre bios pour que votre machine démarre sur le lecteur de CD/DVD
Insérez le disque dans le lecteur et démarrez sur le CD

== Page d'accueil et choix de la méthode d'installation ==

Un menu s'offre à vous :

=== Installation===
*Install
*Graphical install
*Advanced options
*Help

====Install====
Ce choix installera (presque) automatiquement une Debian Lenny avec les options &quot;standards&quot;
====Graphical install====
Même chose que le choix ci-dessus, mais avec une interface graphique.
Peut s'avérer moins fiable, en fonction de votre matériel.
==== Advanced options====
C'est dans cette directions que nous allons...
====Help====
Divers fichiers d'aide sur les &quot;pré-requis&quot; à l'installation, les paramètres à passer au boot pour les machines un peu &quot;spéciales&quot;

[[Fichier:01 help.jpeg]]


== Installer boot menu ==

[[Image:01.jpeg]]

Le menu suivant offre des choix intéressants :

*Back...
*Expert Install
C'est cette option que nous choisirons, c'est celle qui laisse le plus de contrôle sur l'installation
*Rescue mode
Très utile si un jour votre machine ne démarre pas (cela permet de faire un chroot sur le système pour des réparations... Grub par exemple)
Permet d'ouvrir un shell sur la partition système.
*Automated install
Comme son nom l'indique, une installation automatique où vous n'interviendrez presque pas
Identique au choix Install de la première page.
*Graphical expert install
Identique à &quot;Expert install&quot; mais en mode graphique
*Graphical rescue mode
Identique à &quot;Rescue mode&quot; mais en mode graphique
*Graphical automated install
Identique à &quot;Automated install&quot; mais en mode graphique
*Alternative desktop environments
Option intéressante si vous souhaitez installer un autre bureau que Gnome (KDE, LXDE, XFCE).
Vous retrouverez dans les sous-menus l'ensemble des choix offerts ici.

[[Image:02.jpeg]]

=== Choisir la langue ===

[[Image:03.jpeg]]

[[Image:04.jpeg]]

[[Image:05.jpeg]]

[[Image:06.jpeg]]

[[Image:07.jpeg]]

[[Image:08.jpeg]]

[[Image:09.jpeg]]

=== Choisir la disposition du clavier ===

[[Image:10.jpeg]]

[[Image:11.jpeg]]

[[Image:12.jpeg]]

=== Détecter et monter le CD ===

[[Image:13.jpeg]]

Activer l'usb ? Laissez le choix par défaut : oui

[[Image:14.jpeg]]

pcmcia ? Cela dépendra de votre machine...
Inutile de démarrer ces services si vous n'en avez pas !
La question vous sera reposée à chaque fois qu'une détection de matériel est nécessaire.

[[Image:15.jpeg]]

[[Image:16.jpeg]]

=== Charger des composants d'installation à partir du CD ===

Bien que je n'ai choisi aucune des options de cette liste, je vous détaille rapidement quelques choix :

Peu de mémoire vive (lowmem)
Connexion ppp (par modem)
rescue mode
support ntfs
wireless tools

[[Image:17.jpeg]]

[[Image:18.jpeg]]

[[Image:19.jpeg]]

[[Image:20.jpeg]]

[[Image:21.jpeg]]

=== Détecter le matériel réseau ===

[[Image:22.jpeg]]

[[Image:23.jpeg]]

=== Configurer le réseau ===

Généralement vous êtes derrière un routeur ou une &quot;box&quot; qui doit vous fournir une adresse IP.
Vous laisserez donc l'option DHCP.

[[Image:24.jpeg]]

[[Image:25.jpeg]]

[[Image:26.jpeg]]

Nom de la machine :

[[Image:27.jpeg]]

Nom du domaine. Il doit vous être fourni par le serveur DHCP. Si ce n'est pas le cas, laissez vide

[[Image:28.jpeg]]

=== Choisir un miroir de l'archive Debian ===

[[Image:29.jpeg]]

[[Image:30.jpeg]]

Choisissez un miroir pour récupérer les paquets. Inutiles que vos paquets fassent 12.000 Km, choisissez un miroir proche de chez vous.

[[Image:31.jpeg]]

[[Image:32.jpeg]]

[[Image:33.jpeg]]

A compléter si vous avez un proxy (pour ma part il s'agit d'un dépôt cache de paquets)

[[Image:34.jpeg]]

[[Image:35.jpeg]]

Un des points forts de la &quot;businesscard&quot; par rapport à une &quot;netinstall&quot;, le choix de la branche !

[[Image:36.jpeg]]

=== Configurer l'horloge ===

[[Image:37.jpeg]]

[[Image:38.jpeg]]

[[Image:39.jpeg]]

[[Image:40.jpeg]]

[[Image:41.jpeg]]

=== Détecter les disques ===

[[Image:42.jpeg]]

[[Image:43.jpeg]]

=== Partitionner les disques ===

[[Image:44.jpeg]]

[[Image:45.jpeg]]

[[Image:46.jpeg]]

[[Image:47.jpeg]]

[[Image:48.jpeg]]

[[Image:49.jpeg]]

[[Image:50.jpeg]]

=== Installer le système de base ===

[[Image:51.jpeg]]

[[Image:52.jpeg]]

[[Image:53.jpeg]]

[[Image:54.jpeg]]

[[Image:55.jpeg]]

[[Image:56.jpeg]]

=== Créer les utilisateurs et choisir les mots de passe ===

[[Image:57.jpeg]]

[[Image:58.jpeg]]

[[Image:59.jpeg]]

[[Image:60.jpeg]]

[[Image:61.jpeg]]

[[Image:62.jpeg]]

[[Image:63.jpeg]]

[[Image:64.jpeg]]

[[Image:65.jpeg]]

[[Image:66.jpeg]]

=== Configurer l'outil de gestion des paquets ===

[[Image:67.jpeg]]

[[Image:68.jpeg]]

[[Image:69.jpeg]]

[[Image:70.jpeg]]

=== Choisir et installer des logiciels ===

[[Image:71.jpeg]]

[[Image:72.jpeg]]

[[Image:73.jpeg]]

[[Image:74.jpeg]]

=== Installer le programme de démarrage Grub sur un disque dur ===

[[Image:75.jpeg]]

[[Image:76.jpeg]]

[[Image:77.jpeg]]

[[Image:78.jpeg]]

=== Sauvegarder les journaux de débogage ===

[[Image:79.jpeg]]

[[Image:80.jpeg]]

[[Image:81.jpeg]]

=== Terminer l'installation ===

[[Image:82.jpeg]]

[[Image:83.jpeg]]

[[Image:84.jpeg]]

[[Image:85.jpeg]]

[[Image:87.jpeg]]

----
--[[Utilisateur:Lol|Lol]] 3 avril 2010 à 04:12 (UTC)

[[Catégorie:Installation]]</text>
      <sha1>9j8lj3j19z83nkl7ss7s3r2yevxl4xn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2271</id>
      <parentid>2270</parentid>
      <timestamp>2010-11-11T12:29:35Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Prérequis */</comment>
      <text xml:space="preserve" bytes="6000">{{Ébauche|Installer Debian pas-à-pas}}

Ce document, au travers de captures d'écrans, détaillera pas-à-pas (de façon sommaire) l'installation d'une Debian Lenny à partir d'une image iso &quot;businesscard&quot;

== Prérequis ==

Téléchargement de l'image iso &quot;businesscard&quot;
Choisissez la businesscard si vous souhaitez pouvoir choisir votre distribution (stable/testing/instable)
Choisissez l'image en fonction de votre machine : i386 ou amd64 en général

 $ wget -c http://ftp.acc.umu.se/debian-cd/5.0.6/i386/iso-cd/debian-506-i386-businesscard.iso

Vérifiez votre mage iso à l'aide de [[Vérifier_le_md5_d'une_image_iso|'''md5sum''']]

Gravez l'image sur un CD(-RW).

== Installation ==

Modifier votre bios pour que votre machine démarre sur le lecteur de CD/DVD
Insérez le disque dans le lecteur et démarrez sur le CD

== Page d'accueil et choix de la méthode d'installation ==

Un menu s'offre à vous :

=== Installation===
*Install
*Graphical install
*Advanced options
*Help

====Install====
Ce choix installera (presque) automatiquement une Debian Lenny avec les options &quot;standards&quot;
====Graphical install====
Même chose que le choix ci-dessus, mais avec une interface graphique.
Peut s'avérer moins fiable, en fonction de votre matériel.
==== Advanced options====
C'est dans cette directions que nous allons...
====Help====
Divers fichiers d'aide sur les &quot;pré-requis&quot; à l'installation, les paramètres à passer au boot pour les machines un peu &quot;spéciales&quot;

[[Fichier:01 help.jpeg]]


== Installer boot menu ==

[[Image:01.jpeg]]

Le menu suivant offre des choix intéressants :

*Back...
*Expert Install
C'est cette option que nous choisirons, c'est celle qui laisse le plus de contrôle sur l'installation
*Rescue mode
Très utile si un jour votre machine ne démarre pas (cela permet de faire un chroot sur le système pour des réparations... Grub par exemple)
Permet d'ouvrir un shell sur la partition système.
*Automated install
Comme son nom l'indique, une installation automatique où vous n'interviendrez presque pas
Identique au choix Install de la première page.
*Graphical expert install
Identique à &quot;Expert install&quot; mais en mode graphique
*Graphical rescue mode
Identique à &quot;Rescue mode&quot; mais en mode graphique
*Graphical automated install
Identique à &quot;Automated install&quot; mais en mode graphique
*Alternative desktop environments
Option intéressante si vous souhaitez installer un autre bureau que Gnome (KDE, LXDE, XFCE).
Vous retrouverez dans les sous-menus l'ensemble des choix offerts ici.

[[Image:02.jpeg]]

=== Choisir la langue ===

[[Image:03.jpeg]]

[[Image:04.jpeg]]

[[Image:05.jpeg]]

[[Image:06.jpeg]]

[[Image:07.jpeg]]

[[Image:08.jpeg]]

[[Image:09.jpeg]]

=== Choisir la disposition du clavier ===

[[Image:10.jpeg]]

[[Image:11.jpeg]]

[[Image:12.jpeg]]

=== Détecter et monter le CD ===

[[Image:13.jpeg]]

Activer l'usb ? Laissez le choix par défaut : oui

[[Image:14.jpeg]]

pcmcia ? Cela dépendra de votre machine...
Inutile de démarrer ces services si vous n'en avez pas !
La question vous sera reposée à chaque fois qu'une détection de matériel est nécessaire.

[[Image:15.jpeg]]

[[Image:16.jpeg]]

=== Charger des composants d'installation à partir du CD ===

Bien que je n'ai choisi aucune des options de cette liste, je vous détaille rapidement quelques choix :

Peu de mémoire vive (lowmem)
Connexion ppp (par modem)
rescue mode
support ntfs
wireless tools

[[Image:17.jpeg]]

[[Image:18.jpeg]]

[[Image:19.jpeg]]

[[Image:20.jpeg]]

[[Image:21.jpeg]]

=== Détecter le matériel réseau ===

[[Image:22.jpeg]]

[[Image:23.jpeg]]

=== Configurer le réseau ===

Généralement vous êtes derrière un routeur ou une &quot;box&quot; qui doit vous fournir une adresse IP.
Vous laisserez donc l'option DHCP.

[[Image:24.jpeg]]

[[Image:25.jpeg]]

[[Image:26.jpeg]]

Nom de la machine :

[[Image:27.jpeg]]

Nom du domaine. Il doit vous être fourni par le serveur DHCP. Si ce n'est pas le cas, laissez vide

[[Image:28.jpeg]]

=== Choisir un miroir de l'archive Debian ===

[[Image:29.jpeg]]

[[Image:30.jpeg]]

Choisissez un miroir pour récupérer les paquets. Inutiles que vos paquets fassent 12.000 Km, choisissez un miroir proche de chez vous.

[[Image:31.jpeg]]

[[Image:32.jpeg]]

[[Image:33.jpeg]]

A compléter si vous avez un proxy (pour ma part il s'agit d'un dépôt cache de paquets)

[[Image:34.jpeg]]

[[Image:35.jpeg]]

Un des points forts de la &quot;businesscard&quot; par rapport à une &quot;netinstall&quot;, le choix de la branche !

[[Image:36.jpeg]]

=== Configurer l'horloge ===

[[Image:37.jpeg]]

[[Image:38.jpeg]]

[[Image:39.jpeg]]

[[Image:40.jpeg]]

[[Image:41.jpeg]]

=== Détecter les disques ===

[[Image:42.jpeg]]

[[Image:43.jpeg]]

=== Partitionner les disques ===

[[Image:44.jpeg]]

[[Image:45.jpeg]]

[[Image:46.jpeg]]

[[Image:47.jpeg]]

[[Image:48.jpeg]]

[[Image:49.jpeg]]

[[Image:50.jpeg]]

=== Installer le système de base ===

[[Image:51.jpeg]]

[[Image:52.jpeg]]

[[Image:53.jpeg]]

[[Image:54.jpeg]]

[[Image:55.jpeg]]

[[Image:56.jpeg]]

=== Créer les utilisateurs et choisir les mots de passe ===

[[Image:57.jpeg]]

[[Image:58.jpeg]]

[[Image:59.jpeg]]

[[Image:60.jpeg]]

[[Image:61.jpeg]]

[[Image:62.jpeg]]

[[Image:63.jpeg]]

[[Image:64.jpeg]]

[[Image:65.jpeg]]

[[Image:66.jpeg]]

=== Configurer l'outil de gestion des paquets ===

[[Image:67.jpeg]]

[[Image:68.jpeg]]

[[Image:69.jpeg]]

[[Image:70.jpeg]]

=== Choisir et installer des logiciels ===

[[Image:71.jpeg]]

[[Image:72.jpeg]]

[[Image:73.jpeg]]

[[Image:74.jpeg]]

=== Installer le programme de démarrage Grub sur un disque dur ===

[[Image:75.jpeg]]

[[Image:76.jpeg]]

[[Image:77.jpeg]]

[[Image:78.jpeg]]

=== Sauvegarder les journaux de débogage ===

[[Image:79.jpeg]]

[[Image:80.jpeg]]

[[Image:81.jpeg]]

=== Terminer l'installation ===

[[Image:82.jpeg]]

[[Image:83.jpeg]]

[[Image:84.jpeg]]

[[Image:85.jpeg]]

[[Image:87.jpeg]]

----
--[[Utilisateur:Lol|Lol]] 3 avril 2010 à 04:12 (UTC)

[[Catégorie:Installation]]</text>
      <sha1>e9yzp9yphgr700bzg1swbfjnekvzrrb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2724</id>
      <parentid>2271</parentid>
      <timestamp>2011-02-27T10:42:18Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Prérequis */</comment>
      <text xml:space="preserve" bytes="6095">{{Ébauche|Installer Debian pas-à-pas}}

Ce document, au travers de captures d'écrans, détaillera pas-à-pas (de façon sommaire) l'installation d'une Debian Lenny à partir d'une image iso &quot;businesscard&quot;

== Prérequis ==

Téléchargement de l'image iso &quot;businesscard&quot;
Choisissez la businesscard (en mode expert) si vous souhaitez pouvoir choisir votre distribution (stable/testing/instable)
Vous pourrez également choisir votre window manager (gnome, kde, lxde, xfce)
Choisissez l'image en fonction de votre machine : i386 ou amd64 en général

 $ wget -c http://ftp.acc.umu.se/debian-cd/5.0.6/i386/iso-cd/debian-506-i386-businesscard.iso

Vérifiez votre mage iso à l'aide de [[Vérifier_le_md5_d'une_image_iso|'''md5sum''']]

Gravez l'image sur un CD(-RW).

== Installation ==

Modifier votre bios pour que votre machine démarre sur le lecteur de CD/DVD
Insérez le disque dans le lecteur et démarrez sur le CD

== Page d'accueil et choix de la méthode d'installation ==

Un menu s'offre à vous :

=== Installation===
*Install
*Graphical install
*Advanced options
*Help

====Install====
Ce choix installera (presque) automatiquement une Debian Lenny avec les options &quot;standards&quot;
====Graphical install====
Même chose que le choix ci-dessus, mais avec une interface graphique.
Peut s'avérer moins fiable, en fonction de votre matériel.
==== Advanced options====
C'est dans cette directions que nous allons...
====Help====
Divers fichiers d'aide sur les &quot;pré-requis&quot; à l'installation, les paramètres à passer au boot pour les machines un peu &quot;spéciales&quot;

[[Fichier:01 help.jpeg]]


== Installer boot menu ==

[[Image:01.jpeg]]

Le menu suivant offre des choix intéressants :

*Back...
*Expert Install
C'est cette option que nous choisirons, c'est celle qui laisse le plus de contrôle sur l'installation
*Rescue mode
Très utile si un jour votre machine ne démarre pas (cela permet de faire un chroot sur le système pour des réparations... Grub par exemple)
Permet d'ouvrir un shell sur la partition système.
*Automated install
Comme son nom l'indique, une installation automatique où vous n'interviendrez presque pas
Identique au choix Install de la première page.
*Graphical expert install
Identique à &quot;Expert install&quot; mais en mode graphique
*Graphical rescue mode
Identique à &quot;Rescue mode&quot; mais en mode graphique
*Graphical automated install
Identique à &quot;Automated install&quot; mais en mode graphique
*Alternative desktop environments
Option intéressante si vous souhaitez installer un autre bureau que Gnome (KDE, LXDE, XFCE).
Vous retrouverez dans les sous-menus l'ensemble des choix offerts ici.

[[Image:02.jpeg]]

=== Choisir la langue ===

[[Image:03.jpeg]]

[[Image:04.jpeg]]

[[Image:05.jpeg]]

[[Image:06.jpeg]]

[[Image:07.jpeg]]

[[Image:08.jpeg]]

[[Image:09.jpeg]]

=== Choisir la disposition du clavier ===

[[Image:10.jpeg]]

[[Image:11.jpeg]]

[[Image:12.jpeg]]

=== Détecter et monter le CD ===

[[Image:13.jpeg]]

Activer l'usb ? Laissez le choix par défaut : oui

[[Image:14.jpeg]]

pcmcia ? Cela dépendra de votre machine...
Inutile de démarrer ces services si vous n'en avez pas !
La question vous sera reposée à chaque fois qu'une détection de matériel est nécessaire.

[[Image:15.jpeg]]

[[Image:16.jpeg]]

=== Charger des composants d'installation à partir du CD ===

Bien que je n'ai choisi aucune des options de cette liste, je vous détaille rapidement quelques choix :

Peu de mémoire vive (lowmem)
Connexion ppp (par modem)
rescue mode
support ntfs
wireless tools

[[Image:17.jpeg]]

[[Image:18.jpeg]]

[[Image:19.jpeg]]

[[Image:20.jpeg]]

[[Image:21.jpeg]]

=== Détecter le matériel réseau ===

[[Image:22.jpeg]]

[[Image:23.jpeg]]

=== Configurer le réseau ===

Généralement vous êtes derrière un routeur ou une &quot;box&quot; qui doit vous fournir une adresse IP.
Vous laisserez donc l'option DHCP.

[[Image:24.jpeg]]

[[Image:25.jpeg]]

[[Image:26.jpeg]]

Nom de la machine :

[[Image:27.jpeg]]

Nom du domaine. Il doit vous être fourni par le serveur DHCP. Si ce n'est pas le cas, laissez vide

[[Image:28.jpeg]]

=== Choisir un miroir de l'archive Debian ===

[[Image:29.jpeg]]

[[Image:30.jpeg]]

Choisissez un miroir pour récupérer les paquets. Inutiles que vos paquets fassent 12.000 Km, choisissez un miroir proche de chez vous.

[[Image:31.jpeg]]

[[Image:32.jpeg]]

[[Image:33.jpeg]]

A compléter si vous avez un proxy (pour ma part il s'agit d'un dépôt cache de paquets)

[[Image:34.jpeg]]

[[Image:35.jpeg]]

Un des points forts de la &quot;businesscard&quot; par rapport à une &quot;netinstall&quot;, le choix de la branche !

[[Image:36.jpeg]]

=== Configurer l'horloge ===

[[Image:37.jpeg]]

[[Image:38.jpeg]]

[[Image:39.jpeg]]

[[Image:40.jpeg]]

[[Image:41.jpeg]]

=== Détecter les disques ===

[[Image:42.jpeg]]

[[Image:43.jpeg]]

=== Partitionner les disques ===

[[Image:44.jpeg]]

[[Image:45.jpeg]]

[[Image:46.jpeg]]

[[Image:47.jpeg]]

[[Image:48.jpeg]]

[[Image:49.jpeg]]

[[Image:50.jpeg]]

=== Installer le système de base ===

[[Image:51.jpeg]]

[[Image:52.jpeg]]

[[Image:53.jpeg]]

[[Image:54.jpeg]]

[[Image:55.jpeg]]

[[Image:56.jpeg]]

=== Créer les utilisateurs et choisir les mots de passe ===

[[Image:57.jpeg]]

[[Image:58.jpeg]]

[[Image:59.jpeg]]

[[Image:60.jpeg]]

[[Image:61.jpeg]]

[[Image:62.jpeg]]

[[Image:63.jpeg]]

[[Image:64.jpeg]]

[[Image:65.jpeg]]

[[Image:66.jpeg]]

=== Configurer l'outil de gestion des paquets ===

[[Image:67.jpeg]]

[[Image:68.jpeg]]

[[Image:69.jpeg]]

[[Image:70.jpeg]]

=== Choisir et installer des logiciels ===

[[Image:71.jpeg]]

[[Image:72.jpeg]]

[[Image:73.jpeg]]

[[Image:74.jpeg]]

=== Installer le programme de démarrage Grub sur un disque dur ===

[[Image:75.jpeg]]

[[Image:76.jpeg]]

[[Image:77.jpeg]]

[[Image:78.jpeg]]

=== Sauvegarder les journaux de débogage ===

[[Image:79.jpeg]]

[[Image:80.jpeg]]

[[Image:81.jpeg]]

=== Terminer l'installation ===

[[Image:82.jpeg]]

[[Image:83.jpeg]]

[[Image:84.jpeg]]

[[Image:85.jpeg]]

[[Image:87.jpeg]]

----
--[[Utilisateur:Lol|Lol]] 3 avril 2010 à 04:12 (UTC)

[[Catégorie:Installation]]</text>
      <sha1>jte6bhob3weqooduzex2dcbm2284n2c</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2725</id>
      <parentid>2724</parentid>
      <timestamp>2011-02-27T10:42:46Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Prérequis */</comment>
      <text xml:space="preserve" bytes="6096">{{Ébauche|Installer Debian pas-à-pas}}

Ce document, au travers de captures d'écrans, détaillera pas-à-pas (de façon sommaire) l'installation d'une Debian Lenny à partir d'une image iso &quot;businesscard&quot;

== Prérequis ==

Téléchargement de l'image iso &quot;businesscard&quot;
Choisissez la businesscard (en mode expert) si vous souhaitez pouvoir choisir votre distribution (stable/testing/instable)
Vous pourrez également choisir votre window manager (gnome, kde, lxde, xfce)
Choisissez l'image en fonction de votre machine : i386 ou amd64 en général

 $ wget -c http://ftp.acc.umu.se/debian-cd/5.0.6/i386/iso-cd/debian-506-i386-businesscard.iso

Vérifiez votre image iso à l'aide de [[Vérifier_le_md5_d'une_image_iso|'''md5sum''']]

Gravez l'image sur un CD(-RW).

== Installation ==

Modifier votre bios pour que votre machine démarre sur le lecteur de CD/DVD
Insérez le disque dans le lecteur et démarrez sur le CD

== Page d'accueil et choix de la méthode d'installation ==

Un menu s'offre à vous :

=== Installation===
*Install
*Graphical install
*Advanced options
*Help

====Install====
Ce choix installera (presque) automatiquement une Debian Lenny avec les options &quot;standards&quot;
====Graphical install====
Même chose que le choix ci-dessus, mais avec une interface graphique.
Peut s'avérer moins fiable, en fonction de votre matériel.
==== Advanced options====
C'est dans cette directions que nous allons...
====Help====
Divers fichiers d'aide sur les &quot;pré-requis&quot; à l'installation, les paramètres à passer au boot pour les machines un peu &quot;spéciales&quot;

[[Fichier:01 help.jpeg]]


== Installer boot menu ==

[[Image:01.jpeg]]

Le menu suivant offre des choix intéressants :

*Back...
*Expert Install
C'est cette option que nous choisirons, c'est celle qui laisse le plus de contrôle sur l'installation
*Rescue mode
Très utile si un jour votre machine ne démarre pas (cela permet de faire un chroot sur le système pour des réparations... Grub par exemple)
Permet d'ouvrir un shell sur la partition système.
*Automated install
Comme son nom l'indique, une installation automatique où vous n'interviendrez presque pas
Identique au choix Install de la première page.
*Graphical expert install
Identique à &quot;Expert install&quot; mais en mode graphique
*Graphical rescue mode
Identique à &quot;Rescue mode&quot; mais en mode graphique
*Graphical automated install
Identique à &quot;Automated install&quot; mais en mode graphique
*Alternative desktop environments
Option intéressante si vous souhaitez installer un autre bureau que Gnome (KDE, LXDE, XFCE).
Vous retrouverez dans les sous-menus l'ensemble des choix offerts ici.

[[Image:02.jpeg]]

=== Choisir la langue ===

[[Image:03.jpeg]]

[[Image:04.jpeg]]

[[Image:05.jpeg]]

[[Image:06.jpeg]]

[[Image:07.jpeg]]

[[Image:08.jpeg]]

[[Image:09.jpeg]]

=== Choisir la disposition du clavier ===

[[Image:10.jpeg]]

[[Image:11.jpeg]]

[[Image:12.jpeg]]

=== Détecter et monter le CD ===

[[Image:13.jpeg]]

Activer l'usb ? Laissez le choix par défaut : oui

[[Image:14.jpeg]]

pcmcia ? Cela dépendra de votre machine...
Inutile de démarrer ces services si vous n'en avez pas !
La question vous sera reposée à chaque fois qu'une détection de matériel est nécessaire.

[[Image:15.jpeg]]

[[Image:16.jpeg]]

=== Charger des composants d'installation à partir du CD ===

Bien que je n'ai choisi aucune des options de cette liste, je vous détaille rapidement quelques choix :

Peu de mémoire vive (lowmem)
Connexion ppp (par modem)
rescue mode
support ntfs
wireless tools

[[Image:17.jpeg]]

[[Image:18.jpeg]]

[[Image:19.jpeg]]

[[Image:20.jpeg]]

[[Image:21.jpeg]]

=== Détecter le matériel réseau ===

[[Image:22.jpeg]]

[[Image:23.jpeg]]

=== Configurer le réseau ===

Généralement vous êtes derrière un routeur ou une &quot;box&quot; qui doit vous fournir une adresse IP.
Vous laisserez donc l'option DHCP.

[[Image:24.jpeg]]

[[Image:25.jpeg]]

[[Image:26.jpeg]]

Nom de la machine :

[[Image:27.jpeg]]

Nom du domaine. Il doit vous être fourni par le serveur DHCP. Si ce n'est pas le cas, laissez vide

[[Image:28.jpeg]]

=== Choisir un miroir de l'archive Debian ===

[[Image:29.jpeg]]

[[Image:30.jpeg]]

Choisissez un miroir pour récupérer les paquets. Inutiles que vos paquets fassent 12.000 Km, choisissez un miroir proche de chez vous.

[[Image:31.jpeg]]

[[Image:32.jpeg]]

[[Image:33.jpeg]]

A compléter si vous avez un proxy (pour ma part il s'agit d'un dépôt cache de paquets)

[[Image:34.jpeg]]

[[Image:35.jpeg]]

Un des points forts de la &quot;businesscard&quot; par rapport à une &quot;netinstall&quot;, le choix de la branche !

[[Image:36.jpeg]]

=== Configurer l'horloge ===

[[Image:37.jpeg]]

[[Image:38.jpeg]]

[[Image:39.jpeg]]

[[Image:40.jpeg]]

[[Image:41.jpeg]]

=== Détecter les disques ===

[[Image:42.jpeg]]

[[Image:43.jpeg]]

=== Partitionner les disques ===

[[Image:44.jpeg]]

[[Image:45.jpeg]]

[[Image:46.jpeg]]

[[Image:47.jpeg]]

[[Image:48.jpeg]]

[[Image:49.jpeg]]

[[Image:50.jpeg]]

=== Installer le système de base ===

[[Image:51.jpeg]]

[[Image:52.jpeg]]

[[Image:53.jpeg]]

[[Image:54.jpeg]]

[[Image:55.jpeg]]

[[Image:56.jpeg]]

=== Créer les utilisateurs et choisir les mots de passe ===

[[Image:57.jpeg]]

[[Image:58.jpeg]]

[[Image:59.jpeg]]

[[Image:60.jpeg]]

[[Image:61.jpeg]]

[[Image:62.jpeg]]

[[Image:63.jpeg]]

[[Image:64.jpeg]]

[[Image:65.jpeg]]

[[Image:66.jpeg]]

=== Configurer l'outil de gestion des paquets ===

[[Image:67.jpeg]]

[[Image:68.jpeg]]

[[Image:69.jpeg]]

[[Image:70.jpeg]]

=== Choisir et installer des logiciels ===

[[Image:71.jpeg]]

[[Image:72.jpeg]]

[[Image:73.jpeg]]

[[Image:74.jpeg]]

=== Installer le programme de démarrage Grub sur un disque dur ===

[[Image:75.jpeg]]

[[Image:76.jpeg]]

[[Image:77.jpeg]]

[[Image:78.jpeg]]

=== Sauvegarder les journaux de débogage ===

[[Image:79.jpeg]]

[[Image:80.jpeg]]

[[Image:81.jpeg]]

=== Terminer l'installation ===

[[Image:82.jpeg]]

[[Image:83.jpeg]]

[[Image:84.jpeg]]

[[Image:85.jpeg]]

[[Image:87.jpeg]]

----
--[[Utilisateur:Lol|Lol]] 3 avril 2010 à 04:12 (UTC)

[[Catégorie:Installation]]</text>
      <sha1>iw4lwkzuow03e9f7ojrkqh3aft8l6qg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2726</id>
      <parentid>2725</parentid>
      <timestamp>2011-02-27T10:43:34Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Advanced options */</comment>
      <text xml:space="preserve" bytes="6096">{{Ébauche|Installer Debian pas-à-pas}}

Ce document, au travers de captures d'écrans, détaillera pas-à-pas (de façon sommaire) l'installation d'une Debian Lenny à partir d'une image iso &quot;businesscard&quot;

== Prérequis ==

Téléchargement de l'image iso &quot;businesscard&quot;
Choisissez la businesscard (en mode expert) si vous souhaitez pouvoir choisir votre distribution (stable/testing/instable)
Vous pourrez également choisir votre window manager (gnome, kde, lxde, xfce)
Choisissez l'image en fonction de votre machine : i386 ou amd64 en général

 $ wget -c http://ftp.acc.umu.se/debian-cd/5.0.6/i386/iso-cd/debian-506-i386-businesscard.iso

Vérifiez votre image iso à l'aide de [[Vérifier_le_md5_d'une_image_iso|'''md5sum''']]

Gravez l'image sur un CD(-RW).

== Installation ==

Modifier votre bios pour que votre machine démarre sur le lecteur de CD/DVD
Insérez le disque dans le lecteur et démarrez sur le CD

== Page d'accueil et choix de la méthode d'installation ==

Un menu s'offre à vous :

=== Installation===
*Install
*Graphical install
*Advanced options
*Help

====Install====
Ce choix installera (presque) automatiquement une Debian Lenny avec les options &quot;standards&quot;
====Graphical install====
Même chose que le choix ci-dessus, mais avec une interface graphique.
Peut s'avérer moins fiable, en fonction de votre matériel.
==== Advanced options====
C'est dans cette direction que nous allons...

====Help====
Divers fichiers d'aide sur les &quot;pré-requis&quot; à l'installation, les paramètres à passer au boot pour les machines un peu &quot;spéciales&quot;

[[Fichier:01 help.jpeg]]


== Installer boot menu ==

[[Image:01.jpeg]]

Le menu suivant offre des choix intéressants :

*Back...
*Expert Install
C'est cette option que nous choisirons, c'est celle qui laisse le plus de contrôle sur l'installation
*Rescue mode
Très utile si un jour votre machine ne démarre pas (cela permet de faire un chroot sur le système pour des réparations... Grub par exemple)
Permet d'ouvrir un shell sur la partition système.
*Automated install
Comme son nom l'indique, une installation automatique où vous n'interviendrez presque pas
Identique au choix Install de la première page.
*Graphical expert install
Identique à &quot;Expert install&quot; mais en mode graphique
*Graphical rescue mode
Identique à &quot;Rescue mode&quot; mais en mode graphique
*Graphical automated install
Identique à &quot;Automated install&quot; mais en mode graphique
*Alternative desktop environments
Option intéressante si vous souhaitez installer un autre bureau que Gnome (KDE, LXDE, XFCE).
Vous retrouverez dans les sous-menus l'ensemble des choix offerts ici.

[[Image:02.jpeg]]

=== Choisir la langue ===

[[Image:03.jpeg]]

[[Image:04.jpeg]]

[[Image:05.jpeg]]

[[Image:06.jpeg]]

[[Image:07.jpeg]]

[[Image:08.jpeg]]

[[Image:09.jpeg]]

=== Choisir la disposition du clavier ===

[[Image:10.jpeg]]

[[Image:11.jpeg]]

[[Image:12.jpeg]]

=== Détecter et monter le CD ===

[[Image:13.jpeg]]

Activer l'usb ? Laissez le choix par défaut : oui

[[Image:14.jpeg]]

pcmcia ? Cela dépendra de votre machine...
Inutile de démarrer ces services si vous n'en avez pas !
La question vous sera reposée à chaque fois qu'une détection de matériel est nécessaire.

[[Image:15.jpeg]]

[[Image:16.jpeg]]

=== Charger des composants d'installation à partir du CD ===

Bien que je n'ai choisi aucune des options de cette liste, je vous détaille rapidement quelques choix :

Peu de mémoire vive (lowmem)
Connexion ppp (par modem)
rescue mode
support ntfs
wireless tools

[[Image:17.jpeg]]

[[Image:18.jpeg]]

[[Image:19.jpeg]]

[[Image:20.jpeg]]

[[Image:21.jpeg]]

=== Détecter le matériel réseau ===

[[Image:22.jpeg]]

[[Image:23.jpeg]]

=== Configurer le réseau ===

Généralement vous êtes derrière un routeur ou une &quot;box&quot; qui doit vous fournir une adresse IP.
Vous laisserez donc l'option DHCP.

[[Image:24.jpeg]]

[[Image:25.jpeg]]

[[Image:26.jpeg]]

Nom de la machine :

[[Image:27.jpeg]]

Nom du domaine. Il doit vous être fourni par le serveur DHCP. Si ce n'est pas le cas, laissez vide

[[Image:28.jpeg]]

=== Choisir un miroir de l'archive Debian ===

[[Image:29.jpeg]]

[[Image:30.jpeg]]

Choisissez un miroir pour récupérer les paquets. Inutiles que vos paquets fassent 12.000 Km, choisissez un miroir proche de chez vous.

[[Image:31.jpeg]]

[[Image:32.jpeg]]

[[Image:33.jpeg]]

A compléter si vous avez un proxy (pour ma part il s'agit d'un dépôt cache de paquets)

[[Image:34.jpeg]]

[[Image:35.jpeg]]

Un des points forts de la &quot;businesscard&quot; par rapport à une &quot;netinstall&quot;, le choix de la branche !

[[Image:36.jpeg]]

=== Configurer l'horloge ===

[[Image:37.jpeg]]

[[Image:38.jpeg]]

[[Image:39.jpeg]]

[[Image:40.jpeg]]

[[Image:41.jpeg]]

=== Détecter les disques ===

[[Image:42.jpeg]]

[[Image:43.jpeg]]

=== Partitionner les disques ===

[[Image:44.jpeg]]

[[Image:45.jpeg]]

[[Image:46.jpeg]]

[[Image:47.jpeg]]

[[Image:48.jpeg]]

[[Image:49.jpeg]]

[[Image:50.jpeg]]

=== Installer le système de base ===

[[Image:51.jpeg]]

[[Image:52.jpeg]]

[[Image:53.jpeg]]

[[Image:54.jpeg]]

[[Image:55.jpeg]]

[[Image:56.jpeg]]

=== Créer les utilisateurs et choisir les mots de passe ===

[[Image:57.jpeg]]

[[Image:58.jpeg]]

[[Image:59.jpeg]]

[[Image:60.jpeg]]

[[Image:61.jpeg]]

[[Image:62.jpeg]]

[[Image:63.jpeg]]

[[Image:64.jpeg]]

[[Image:65.jpeg]]

[[Image:66.jpeg]]

=== Configurer l'outil de gestion des paquets ===

[[Image:67.jpeg]]

[[Image:68.jpeg]]

[[Image:69.jpeg]]

[[Image:70.jpeg]]

=== Choisir et installer des logiciels ===

[[Image:71.jpeg]]

[[Image:72.jpeg]]

[[Image:73.jpeg]]

[[Image:74.jpeg]]

=== Installer le programme de démarrage Grub sur un disque dur ===

[[Image:75.jpeg]]

[[Image:76.jpeg]]

[[Image:77.jpeg]]

[[Image:78.jpeg]]

=== Sauvegarder les journaux de débogage ===

[[Image:79.jpeg]]

[[Image:80.jpeg]]

[[Image:81.jpeg]]

=== Terminer l'installation ===

[[Image:82.jpeg]]

[[Image:83.jpeg]]

[[Image:84.jpeg]]

[[Image:85.jpeg]]

[[Image:87.jpeg]]

----
--[[Utilisateur:Lol|Lol]] 3 avril 2010 à 04:12 (UTC)

[[Catégorie:Installation]]</text>
      <sha1>oqbexuekxdw0qnpkkw3zxtmyh4kmthk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2910</id>
      <parentid>2726</parentid>
      <timestamp>2011-04-24T18:35:18Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Prérequis */</comment>
      <text xml:space="preserve" bytes="6170">{{Ébauche|Installer Debian pas-à-pas}}

Ce document, au travers de captures d'écrans, détaillera pas-à-pas (de façon sommaire) l'installation d'une Debian Lenny à partir d'une image iso &quot;businesscard&quot;

== Prérequis ==

Téléchargement de l'image iso &quot;businesscard&quot;
Choisissez la businesscard (en mode expert) si vous souhaitez pouvoir choisir votre distribution (stable/testing/instable)
Vous pourrez également choisir votre window manager (gnome, kde, lxde, xfce)
Choisissez l'image en fonction de votre machine : i386 ou amd64 en général

 $ wget -c http://ftp.acc.umu.se/debian-cd/5.0.6/i386/iso-cd/debian-506-i386-businesscard.iso

Cette adresse est périmée : Voir ==&gt; http://www.debian.org/CD/netinst/

Vérifiez votre image iso à l'aide de [[Vérifier_le_md5_d'une_image_iso|'''md5sum''']]

Gravez l'image sur un CD(-RW).

== Installation ==

Modifier votre bios pour que votre machine démarre sur le lecteur de CD/DVD
Insérez le disque dans le lecteur et démarrez sur le CD

== Page d'accueil et choix de la méthode d'installation ==

Un menu s'offre à vous :

=== Installation===
*Install
*Graphical install
*Advanced options
*Help

====Install====
Ce choix installera (presque) automatiquement une Debian Lenny avec les options &quot;standards&quot;
====Graphical install====
Même chose que le choix ci-dessus, mais avec une interface graphique.
Peut s'avérer moins fiable, en fonction de votre matériel.
==== Advanced options====
C'est dans cette direction que nous allons...

====Help====
Divers fichiers d'aide sur les &quot;pré-requis&quot; à l'installation, les paramètres à passer au boot pour les machines un peu &quot;spéciales&quot;

[[Fichier:01 help.jpeg]]


== Installer boot menu ==

[[Image:01.jpeg]]

Le menu suivant offre des choix intéressants :

*Back...
*Expert Install
C'est cette option que nous choisirons, c'est celle qui laisse le plus de contrôle sur l'installation
*Rescue mode
Très utile si un jour votre machine ne démarre pas (cela permet de faire un chroot sur le système pour des réparations... Grub par exemple)
Permet d'ouvrir un shell sur la partition système.
*Automated install
Comme son nom l'indique, une installation automatique où vous n'interviendrez presque pas
Identique au choix Install de la première page.
*Graphical expert install
Identique à &quot;Expert install&quot; mais en mode graphique
*Graphical rescue mode
Identique à &quot;Rescue mode&quot; mais en mode graphique
*Graphical automated install
Identique à &quot;Automated install&quot; mais en mode graphique
*Alternative desktop environments
Option intéressante si vous souhaitez installer un autre bureau que Gnome (KDE, LXDE, XFCE).
Vous retrouverez dans les sous-menus l'ensemble des choix offerts ici.

[[Image:02.jpeg]]

=== Choisir la langue ===

[[Image:03.jpeg]]

[[Image:04.jpeg]]

[[Image:05.jpeg]]

[[Image:06.jpeg]]

[[Image:07.jpeg]]

[[Image:08.jpeg]]

[[Image:09.jpeg]]

=== Choisir la disposition du clavier ===

[[Image:10.jpeg]]

[[Image:11.jpeg]]

[[Image:12.jpeg]]

=== Détecter et monter le CD ===

[[Image:13.jpeg]]

Activer l'usb ? Laissez le choix par défaut : oui

[[Image:14.jpeg]]

pcmcia ? Cela dépendra de votre machine...
Inutile de démarrer ces services si vous n'en avez pas !
La question vous sera reposée à chaque fois qu'une détection de matériel est nécessaire.

[[Image:15.jpeg]]

[[Image:16.jpeg]]

=== Charger des composants d'installation à partir du CD ===

Bien que je n'ai choisi aucune des options de cette liste, je vous détaille rapidement quelques choix :

Peu de mémoire vive (lowmem)
Connexion ppp (par modem)
rescue mode
support ntfs
wireless tools

[[Image:17.jpeg]]

[[Image:18.jpeg]]

[[Image:19.jpeg]]

[[Image:20.jpeg]]

[[Image:21.jpeg]]

=== Détecter le matériel réseau ===

[[Image:22.jpeg]]

[[Image:23.jpeg]]

=== Configurer le réseau ===

Généralement vous êtes derrière un routeur ou une &quot;box&quot; qui doit vous fournir une adresse IP.
Vous laisserez donc l'option DHCP.

[[Image:24.jpeg]]

[[Image:25.jpeg]]

[[Image:26.jpeg]]

Nom de la machine :

[[Image:27.jpeg]]

Nom du domaine. Il doit vous être fourni par le serveur DHCP. Si ce n'est pas le cas, laissez vide

[[Image:28.jpeg]]

=== Choisir un miroir de l'archive Debian ===

[[Image:29.jpeg]]

[[Image:30.jpeg]]

Choisissez un miroir pour récupérer les paquets. Inutiles que vos paquets fassent 12.000 Km, choisissez un miroir proche de chez vous.

[[Image:31.jpeg]]

[[Image:32.jpeg]]

[[Image:33.jpeg]]

A compléter si vous avez un proxy (pour ma part il s'agit d'un dépôt cache de paquets)

[[Image:34.jpeg]]

[[Image:35.jpeg]]

Un des points forts de la &quot;businesscard&quot; par rapport à une &quot;netinstall&quot;, le choix de la branche !

[[Image:36.jpeg]]

=== Configurer l'horloge ===

[[Image:37.jpeg]]

[[Image:38.jpeg]]

[[Image:39.jpeg]]

[[Image:40.jpeg]]

[[Image:41.jpeg]]

=== Détecter les disques ===

[[Image:42.jpeg]]

[[Image:43.jpeg]]

=== Partitionner les disques ===

[[Image:44.jpeg]]

[[Image:45.jpeg]]

[[Image:46.jpeg]]

[[Image:47.jpeg]]

[[Image:48.jpeg]]

[[Image:49.jpeg]]

[[Image:50.jpeg]]

=== Installer le système de base ===

[[Image:51.jpeg]]

[[Image:52.jpeg]]

[[Image:53.jpeg]]

[[Image:54.jpeg]]

[[Image:55.jpeg]]

[[Image:56.jpeg]]

=== Créer les utilisateurs et choisir les mots de passe ===

[[Image:57.jpeg]]

[[Image:58.jpeg]]

[[Image:59.jpeg]]

[[Image:60.jpeg]]

[[Image:61.jpeg]]

[[Image:62.jpeg]]

[[Image:63.jpeg]]

[[Image:64.jpeg]]

[[Image:65.jpeg]]

[[Image:66.jpeg]]

=== Configurer l'outil de gestion des paquets ===

[[Image:67.jpeg]]

[[Image:68.jpeg]]

[[Image:69.jpeg]]

[[Image:70.jpeg]]

=== Choisir et installer des logiciels ===

[[Image:71.jpeg]]

[[Image:72.jpeg]]

[[Image:73.jpeg]]

[[Image:74.jpeg]]

=== Installer le programme de démarrage Grub sur un disque dur ===

[[Image:75.jpeg]]

[[Image:76.jpeg]]

[[Image:77.jpeg]]

[[Image:78.jpeg]]

=== Sauvegarder les journaux de débogage ===

[[Image:79.jpeg]]

[[Image:80.jpeg]]

[[Image:81.jpeg]]

=== Terminer l'installation ===

[[Image:82.jpeg]]

[[Image:83.jpeg]]

[[Image:84.jpeg]]

[[Image:85.jpeg]]

[[Image:87.jpeg]]

----
--[[Utilisateur:Lol|Lol]] 3 avril 2010 à 04:12 (UTC)

[[Catégorie:Installation]]</text>
      <sha1>avb1r5gtjgbsk0k1m52svxp1ul3e0p7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2911</id>
      <parentid>2910</parentid>
      <timestamp>2011-04-25T08:49:07Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Prérequis */</comment>
      <text xml:space="preserve" bytes="6221">{{Ébauche|Installer Debian pas-à-pas}}

Ce document, au travers de captures d'écrans, détaillera pas-à-pas (de façon sommaire) l'installation d'une Debian Lenny à partir d'une image iso &quot;businesscard&quot;

== Prérequis ==

Téléchargement de l'image iso &quot;businesscard&quot;
Choisissez la businesscard (en mode expert) si vous souhaitez pouvoir choisir votre distribution (stable/testing/instable)
Vous pourrez également choisir votre window manager (gnome, kde, lxde, xfce)
Choisissez l'image en fonction de votre machine : i386 ou amd64 en général

 $ wget -c http://ftp.acc.umu.se/debian-cd/5.0.6/i386/iso-cd/debian-506-i386-businesscard.iso
Nouvelle version :
 $ wget -c http://cdimage.debian.org/debian-cd/6.0.1a/amd64/iso-cd/debian-6.0.1a-amd64-businesscard.iso



Vérifiez votre image iso à l'aide de [[Vérifier_le_md5_d'une_image_iso|'''md5sum''']]

Gravez l'image sur un CD(-RW).

== Installation ==

Modifier votre bios pour que votre machine démarre sur le lecteur de CD/DVD
Insérez le disque dans le lecteur et démarrez sur le CD

== Page d'accueil et choix de la méthode d'installation ==

Un menu s'offre à vous :

=== Installation===
*Install
*Graphical install
*Advanced options
*Help

====Install====
Ce choix installera (presque) automatiquement une Debian Lenny avec les options &quot;standards&quot;
====Graphical install====
Même chose que le choix ci-dessus, mais avec une interface graphique.
Peut s'avérer moins fiable, en fonction de votre matériel.
==== Advanced options====
C'est dans cette direction que nous allons...

====Help====
Divers fichiers d'aide sur les &quot;pré-requis&quot; à l'installation, les paramètres à passer au boot pour les machines un peu &quot;spéciales&quot;

[[Fichier:01 help.jpeg]]


== Installer boot menu ==

[[Image:01.jpeg]]

Le menu suivant offre des choix intéressants :

*Back...
*Expert Install
C'est cette option que nous choisirons, c'est celle qui laisse le plus de contrôle sur l'installation
*Rescue mode
Très utile si un jour votre machine ne démarre pas (cela permet de faire un chroot sur le système pour des réparations... Grub par exemple)
Permet d'ouvrir un shell sur la partition système.
*Automated install
Comme son nom l'indique, une installation automatique où vous n'interviendrez presque pas
Identique au choix Install de la première page.
*Graphical expert install
Identique à &quot;Expert install&quot; mais en mode graphique
*Graphical rescue mode
Identique à &quot;Rescue mode&quot; mais en mode graphique
*Graphical automated install
Identique à &quot;Automated install&quot; mais en mode graphique
*Alternative desktop environments
Option intéressante si vous souhaitez installer un autre bureau que Gnome (KDE, LXDE, XFCE).
Vous retrouverez dans les sous-menus l'ensemble des choix offerts ici.

[[Image:02.jpeg]]

=== Choisir la langue ===

[[Image:03.jpeg]]

[[Image:04.jpeg]]

[[Image:05.jpeg]]

[[Image:06.jpeg]]

[[Image:07.jpeg]]

[[Image:08.jpeg]]

[[Image:09.jpeg]]

=== Choisir la disposition du clavier ===

[[Image:10.jpeg]]

[[Image:11.jpeg]]

[[Image:12.jpeg]]

=== Détecter et monter le CD ===

[[Image:13.jpeg]]

Activer l'usb ? Laissez le choix par défaut : oui

[[Image:14.jpeg]]

pcmcia ? Cela dépendra de votre machine...
Inutile de démarrer ces services si vous n'en avez pas !
La question vous sera reposée à chaque fois qu'une détection de matériel est nécessaire.

[[Image:15.jpeg]]

[[Image:16.jpeg]]

=== Charger des composants d'installation à partir du CD ===

Bien que je n'ai choisi aucune des options de cette liste, je vous détaille rapidement quelques choix :

Peu de mémoire vive (lowmem)
Connexion ppp (par modem)
rescue mode
support ntfs
wireless tools

[[Image:17.jpeg]]

[[Image:18.jpeg]]

[[Image:19.jpeg]]

[[Image:20.jpeg]]

[[Image:21.jpeg]]

=== Détecter le matériel réseau ===

[[Image:22.jpeg]]

[[Image:23.jpeg]]

=== Configurer le réseau ===

Généralement vous êtes derrière un routeur ou une &quot;box&quot; qui doit vous fournir une adresse IP.
Vous laisserez donc l'option DHCP.

[[Image:24.jpeg]]

[[Image:25.jpeg]]

[[Image:26.jpeg]]

Nom de la machine :

[[Image:27.jpeg]]

Nom du domaine. Il doit vous être fourni par le serveur DHCP. Si ce n'est pas le cas, laissez vide

[[Image:28.jpeg]]

=== Choisir un miroir de l'archive Debian ===

[[Image:29.jpeg]]

[[Image:30.jpeg]]

Choisissez un miroir pour récupérer les paquets. Inutiles que vos paquets fassent 12.000 Km, choisissez un miroir proche de chez vous.

[[Image:31.jpeg]]

[[Image:32.jpeg]]

[[Image:33.jpeg]]

A compléter si vous avez un proxy (pour ma part il s'agit d'un dépôt cache de paquets)

[[Image:34.jpeg]]

[[Image:35.jpeg]]

Un des points forts de la &quot;businesscard&quot; par rapport à une &quot;netinstall&quot;, le choix de la branche !

[[Image:36.jpeg]]

=== Configurer l'horloge ===

[[Image:37.jpeg]]

[[Image:38.jpeg]]

[[Image:39.jpeg]]

[[Image:40.jpeg]]

[[Image:41.jpeg]]

=== Détecter les disques ===

[[Image:42.jpeg]]

[[Image:43.jpeg]]

=== Partitionner les disques ===

[[Image:44.jpeg]]

[[Image:45.jpeg]]

[[Image:46.jpeg]]

[[Image:47.jpeg]]

[[Image:48.jpeg]]

[[Image:49.jpeg]]

[[Image:50.jpeg]]

=== Installer le système de base ===

[[Image:51.jpeg]]

[[Image:52.jpeg]]

[[Image:53.jpeg]]

[[Image:54.jpeg]]

[[Image:55.jpeg]]

[[Image:56.jpeg]]

=== Créer les utilisateurs et choisir les mots de passe ===

[[Image:57.jpeg]]

[[Image:58.jpeg]]

[[Image:59.jpeg]]

[[Image:60.jpeg]]

[[Image:61.jpeg]]

[[Image:62.jpeg]]

[[Image:63.jpeg]]

[[Image:64.jpeg]]

[[Image:65.jpeg]]

[[Image:66.jpeg]]

=== Configurer l'outil de gestion des paquets ===

[[Image:67.jpeg]]

[[Image:68.jpeg]]

[[Image:69.jpeg]]

[[Image:70.jpeg]]

=== Choisir et installer des logiciels ===

[[Image:71.jpeg]]

[[Image:72.jpeg]]

[[Image:73.jpeg]]

[[Image:74.jpeg]]

=== Installer le programme de démarrage Grub sur un disque dur ===

[[Image:75.jpeg]]

[[Image:76.jpeg]]

[[Image:77.jpeg]]

[[Image:78.jpeg]]

=== Sauvegarder les journaux de débogage ===

[[Image:79.jpeg]]

[[Image:80.jpeg]]

[[Image:81.jpeg]]

=== Terminer l'installation ===

[[Image:82.jpeg]]

[[Image:83.jpeg]]

[[Image:84.jpeg]]

[[Image:85.jpeg]]

[[Image:87.jpeg]]

----
--[[Utilisateur:Lol|Lol]] 3 avril 2010 à 04:12 (UTC)

[[Catégorie:Installation]]</text>
      <sha1>mf1ed6pee4wiu14f5i8hcor3zd0hie2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3032</id>
      <parentid>2911</parentid>
      <timestamp>2011-06-07T10:54:35Z</timestamp>
      <contributor>
        <username>Panthere</username>
        <id>133</id>
      </contributor>
      <minor/>
      <comment>/* Page d'accueil et choix de la méthode d'installation */</comment>
      <text xml:space="preserve" bytes="6281">{{Ébauche|Installer Debian pas-à-pas}}

Ce document, au travers de captures d'écrans, détaillera pas-à-pas (de façon sommaire) l'installation d'une Debian Lenny à partir d'une image iso &quot;businesscard&quot;

== Prérequis ==

Téléchargement de l'image iso &quot;businesscard&quot;
Choisissez la businesscard (en mode expert) si vous souhaitez pouvoir choisir votre distribution (stable/testing/instable)
Vous pourrez également choisir votre window manager (gnome, kde, lxde, xfce)
Choisissez l'image en fonction de votre machine : i386 ou amd64 en général

 $ wget -c http://ftp.acc.umu.se/debian-cd/5.0.6/i386/iso-cd/debian-506-i386-businesscard.iso
Nouvelle version :
 $ wget -c http://cdimage.debian.org/debian-cd/6.0.1a/amd64/iso-cd/debian-6.0.1a-amd64-businesscard.iso



Vérifiez votre image iso à l'aide de [[Vérifier_le_md5_d'une_image_iso|'''md5sum''']]

Gravez l'image sur un CD(-RW).

== Installation ==

Modifier votre bios pour que votre machine démarre sur le lecteur de CD/DVD
Insérez le disque dans le lecteur et démarrez sur le CD

== Page d'accueil et choix de la méthode d'installation ==

Un menu s'offre à vous :

=== Installation===
*Install
*Graphical install
*Advanced options
*Help

====Install====
Ce choix installera (presque) automatiquement une Debian Lenny avec les options &quot;standards&quot;
====Graphical install====
Même chose que le choix ci-dessus, mais avec une interface graphique.
Peut s'avérer moins fiable, en fonction de votre matériel.
==== Advanced options====
C'est dans cette direction que nous allons...

====Help====
Divers fichiers d'aide sur les &quot;pré-requis&quot; à l'installation, les paramètres à passer au boot pour les machines un peu &quot;spéciales&quot;

====Exemple pour l'installation====
La taille des partition.
[[Fichier:01 help.jpeg]]

== Installer boot menu ==

[[Image:01.jpeg]]

Le menu suivant offre des choix intéressants :

*Back...
*Expert Install
C'est cette option que nous choisirons, c'est celle qui laisse le plus de contrôle sur l'installation
*Rescue mode
Très utile si un jour votre machine ne démarre pas (cela permet de faire un chroot sur le système pour des réparations... Grub par exemple)
Permet d'ouvrir un shell sur la partition système.
*Automated install
Comme son nom l'indique, une installation automatique où vous n'interviendrez presque pas
Identique au choix Install de la première page.
*Graphical expert install
Identique à &quot;Expert install&quot; mais en mode graphique
*Graphical rescue mode
Identique à &quot;Rescue mode&quot; mais en mode graphique
*Graphical automated install
Identique à &quot;Automated install&quot; mais en mode graphique
*Alternative desktop environments
Option intéressante si vous souhaitez installer un autre bureau que Gnome (KDE, LXDE, XFCE).
Vous retrouverez dans les sous-menus l'ensemble des choix offerts ici.

[[Image:02.jpeg]]

=== Choisir la langue ===

[[Image:03.jpeg]]

[[Image:04.jpeg]]

[[Image:05.jpeg]]

[[Image:06.jpeg]]

[[Image:07.jpeg]]

[[Image:08.jpeg]]

[[Image:09.jpeg]]

=== Choisir la disposition du clavier ===

[[Image:10.jpeg]]

[[Image:11.jpeg]]

[[Image:12.jpeg]]

=== Détecter et monter le CD ===

[[Image:13.jpeg]]

Activer l'usb ? Laissez le choix par défaut : oui

[[Image:14.jpeg]]

pcmcia ? Cela dépendra de votre machine...
Inutile de démarrer ces services si vous n'en avez pas !
La question vous sera reposée à chaque fois qu'une détection de matériel est nécessaire.

[[Image:15.jpeg]]

[[Image:16.jpeg]]

=== Charger des composants d'installation à partir du CD ===

Bien que je n'ai choisi aucune des options de cette liste, je vous détaille rapidement quelques choix :

Peu de mémoire vive (lowmem)
Connexion ppp (par modem)
rescue mode
support ntfs
wireless tools

[[Image:17.jpeg]]

[[Image:18.jpeg]]

[[Image:19.jpeg]]

[[Image:20.jpeg]]

[[Image:21.jpeg]]

=== Détecter le matériel réseau ===

[[Image:22.jpeg]]

[[Image:23.jpeg]]

=== Configurer le réseau ===

Généralement vous êtes derrière un routeur ou une &quot;box&quot; qui doit vous fournir une adresse IP.
Vous laisserez donc l'option DHCP.

[[Image:24.jpeg]]

[[Image:25.jpeg]]

[[Image:26.jpeg]]

Nom de la machine :

[[Image:27.jpeg]]

Nom du domaine. Il doit vous être fourni par le serveur DHCP. Si ce n'est pas le cas, laissez vide

[[Image:28.jpeg]]

=== Choisir un miroir de l'archive Debian ===

[[Image:29.jpeg]]

[[Image:30.jpeg]]

Choisissez un miroir pour récupérer les paquets. Inutiles que vos paquets fassent 12.000 Km, choisissez un miroir proche de chez vous.

[[Image:31.jpeg]]

[[Image:32.jpeg]]

[[Image:33.jpeg]]

A compléter si vous avez un proxy (pour ma part il s'agit d'un dépôt cache de paquets)

[[Image:34.jpeg]]

[[Image:35.jpeg]]

Un des points forts de la &quot;businesscard&quot; par rapport à une &quot;netinstall&quot;, le choix de la branche !

[[Image:36.jpeg]]

=== Configurer l'horloge ===

[[Image:37.jpeg]]

[[Image:38.jpeg]]

[[Image:39.jpeg]]

[[Image:40.jpeg]]

[[Image:41.jpeg]]

=== Détecter les disques ===

[[Image:42.jpeg]]

[[Image:43.jpeg]]

=== Partitionner les disques ===

[[Image:44.jpeg]]

[[Image:45.jpeg]]

[[Image:46.jpeg]]

[[Image:47.jpeg]]

[[Image:48.jpeg]]

[[Image:49.jpeg]]

[[Image:50.jpeg]]

=== Installer le système de base ===

[[Image:51.jpeg]]

[[Image:52.jpeg]]

[[Image:53.jpeg]]

[[Image:54.jpeg]]

[[Image:55.jpeg]]

[[Image:56.jpeg]]

=== Créer les utilisateurs et choisir les mots de passe ===

[[Image:57.jpeg]]

[[Image:58.jpeg]]

[[Image:59.jpeg]]

[[Image:60.jpeg]]

[[Image:61.jpeg]]

[[Image:62.jpeg]]

[[Image:63.jpeg]]

[[Image:64.jpeg]]

[[Image:65.jpeg]]

[[Image:66.jpeg]]

=== Configurer l'outil de gestion des paquets ===

[[Image:67.jpeg]]

[[Image:68.jpeg]]

[[Image:69.jpeg]]

[[Image:70.jpeg]]

=== Choisir et installer des logiciels ===

[[Image:71.jpeg]]

[[Image:72.jpeg]]

[[Image:73.jpeg]]

[[Image:74.jpeg]]

=== Installer le programme de démarrage Grub sur un disque dur ===

[[Image:75.jpeg]]

[[Image:76.jpeg]]

[[Image:77.jpeg]]

[[Image:78.jpeg]]

=== Sauvegarder les journaux de débogage ===

[[Image:79.jpeg]]

[[Image:80.jpeg]]

[[Image:81.jpeg]]

=== Terminer l'installation ===

[[Image:82.jpeg]]

[[Image:83.jpeg]]

[[Image:84.jpeg]]

[[Image:85.jpeg]]

[[Image:87.jpeg]]

----
--[[Utilisateur:Lol|Lol]] 3 avril 2010 à 04:12 (UTC)

[[Catégorie:Installation]]</text>
      <sha1>fpeaz54mypmdg26gqs9052wpd5oosfe</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3033</id>
      <parentid>3032</parentid>
      <timestamp>2011-06-07T10:55:52Z</timestamp>
      <contributor>
        <username>Panthere</username>
        <id>133</id>
      </contributor>
      <comment>/* Page d'accueil et choix de la méthode d'installation */</comment>
      <text xml:space="preserve" bytes="6285">{{Ébauche|Installer Debian pas-à-pas}}

Ce document, au travers de captures d'écrans, détaillera pas-à-pas (de façon sommaire) l'installation d'une Debian Lenny à partir d'une image iso &quot;businesscard&quot;

== Prérequis ==

Téléchargement de l'image iso &quot;businesscard&quot;
Choisissez la businesscard (en mode expert) si vous souhaitez pouvoir choisir votre distribution (stable/testing/instable)
Vous pourrez également choisir votre window manager (gnome, kde, lxde, xfce)
Choisissez l'image en fonction de votre machine : i386 ou amd64 en général

 $ wget -c http://ftp.acc.umu.se/debian-cd/5.0.6/i386/iso-cd/debian-506-i386-businesscard.iso
Nouvelle version :
 $ wget -c http://cdimage.debian.org/debian-cd/6.0.1a/amd64/iso-cd/debian-6.0.1a-amd64-businesscard.iso



Vérifiez votre image iso à l'aide de [[Vérifier_le_md5_d'une_image_iso|'''md5sum''']]

Gravez l'image sur un CD(-RW).

== Installation ==

Modifier votre bios pour que votre machine démarre sur le lecteur de CD/DVD
Insérez le disque dans le lecteur et démarrez sur le CD

== Page d'accueil et choix de la méthode d'installation ==

Un menu s'offre à vous :

=== Installation===
*Install
*Graphical install
*Advanced options
*Help

====Install====
Ce choix installera (presque) automatiquement une Debian Lenny avec les options &quot;standards&quot;
====Graphical install====
Même chose que le choix ci-dessus, mais avec une interface graphique.
Peut s'avérer moins fiable, en fonction de votre matériel.
==== Advanced options====
C'est dans cette direction que nous allons...

====Help====
Divers fichiers d'aide sur les &quot;pré-requis&quot; à l'installation, les paramètres à passer au boot pour les machines un peu &quot;spéciales&quot;

====Exemple pour l'installation====
La taille des partition.




[[Fichier:01 help.jpeg]]

== Installer boot menu ==

[[Image:01.jpeg]]

Le menu suivant offre des choix intéressants :

*Back...
*Expert Install
C'est cette option que nous choisirons, c'est celle qui laisse le plus de contrôle sur l'installation
*Rescue mode
Très utile si un jour votre machine ne démarre pas (cela permet de faire un chroot sur le système pour des réparations... Grub par exemple)
Permet d'ouvrir un shell sur la partition système.
*Automated install
Comme son nom l'indique, une installation automatique où vous n'interviendrez presque pas
Identique au choix Install de la première page.
*Graphical expert install
Identique à &quot;Expert install&quot; mais en mode graphique
*Graphical rescue mode
Identique à &quot;Rescue mode&quot; mais en mode graphique
*Graphical automated install
Identique à &quot;Automated install&quot; mais en mode graphique
*Alternative desktop environments
Option intéressante si vous souhaitez installer un autre bureau que Gnome (KDE, LXDE, XFCE).
Vous retrouverez dans les sous-menus l'ensemble des choix offerts ici.

[[Image:02.jpeg]]

=== Choisir la langue ===

[[Image:03.jpeg]]

[[Image:04.jpeg]]

[[Image:05.jpeg]]

[[Image:06.jpeg]]

[[Image:07.jpeg]]

[[Image:08.jpeg]]

[[Image:09.jpeg]]

=== Choisir la disposition du clavier ===

[[Image:10.jpeg]]

[[Image:11.jpeg]]

[[Image:12.jpeg]]

=== Détecter et monter le CD ===

[[Image:13.jpeg]]

Activer l'usb ? Laissez le choix par défaut : oui

[[Image:14.jpeg]]

pcmcia ? Cela dépendra de votre machine...
Inutile de démarrer ces services si vous n'en avez pas !
La question vous sera reposée à chaque fois qu'une détection de matériel est nécessaire.

[[Image:15.jpeg]]

[[Image:16.jpeg]]

=== Charger des composants d'installation à partir du CD ===

Bien que je n'ai choisi aucune des options de cette liste, je vous détaille rapidement quelques choix :

Peu de mémoire vive (lowmem)
Connexion ppp (par modem)
rescue mode
support ntfs
wireless tools

[[Image:17.jpeg]]

[[Image:18.jpeg]]

[[Image:19.jpeg]]

[[Image:20.jpeg]]

[[Image:21.jpeg]]

=== Détecter le matériel réseau ===

[[Image:22.jpeg]]

[[Image:23.jpeg]]

=== Configurer le réseau ===

Généralement vous êtes derrière un routeur ou une &quot;box&quot; qui doit vous fournir une adresse IP.
Vous laisserez donc l'option DHCP.

[[Image:24.jpeg]]

[[Image:25.jpeg]]

[[Image:26.jpeg]]

Nom de la machine :

[[Image:27.jpeg]]

Nom du domaine. Il doit vous être fourni par le serveur DHCP. Si ce n'est pas le cas, laissez vide

[[Image:28.jpeg]]

=== Choisir un miroir de l'archive Debian ===

[[Image:29.jpeg]]

[[Image:30.jpeg]]

Choisissez un miroir pour récupérer les paquets. Inutiles que vos paquets fassent 12.000 Km, choisissez un miroir proche de chez vous.

[[Image:31.jpeg]]

[[Image:32.jpeg]]

[[Image:33.jpeg]]

A compléter si vous avez un proxy (pour ma part il s'agit d'un dépôt cache de paquets)

[[Image:34.jpeg]]

[[Image:35.jpeg]]

Un des points forts de la &quot;businesscard&quot; par rapport à une &quot;netinstall&quot;, le choix de la branche !

[[Image:36.jpeg]]

=== Configurer l'horloge ===

[[Image:37.jpeg]]

[[Image:38.jpeg]]

[[Image:39.jpeg]]

[[Image:40.jpeg]]

[[Image:41.jpeg]]

=== Détecter les disques ===

[[Image:42.jpeg]]

[[Image:43.jpeg]]

=== Partitionner les disques ===

[[Image:44.jpeg]]

[[Image:45.jpeg]]

[[Image:46.jpeg]]

[[Image:47.jpeg]]

[[Image:48.jpeg]]

[[Image:49.jpeg]]

[[Image:50.jpeg]]

=== Installer le système de base ===

[[Image:51.jpeg]]

[[Image:52.jpeg]]

[[Image:53.jpeg]]

[[Image:54.jpeg]]

[[Image:55.jpeg]]

[[Image:56.jpeg]]

=== Créer les utilisateurs et choisir les mots de passe ===

[[Image:57.jpeg]]

[[Image:58.jpeg]]

[[Image:59.jpeg]]

[[Image:60.jpeg]]

[[Image:61.jpeg]]

[[Image:62.jpeg]]

[[Image:63.jpeg]]

[[Image:64.jpeg]]

[[Image:65.jpeg]]

[[Image:66.jpeg]]

=== Configurer l'outil de gestion des paquets ===

[[Image:67.jpeg]]

[[Image:68.jpeg]]

[[Image:69.jpeg]]

[[Image:70.jpeg]]

=== Choisir et installer des logiciels ===

[[Image:71.jpeg]]

[[Image:72.jpeg]]

[[Image:73.jpeg]]

[[Image:74.jpeg]]

=== Installer le programme de démarrage Grub sur un disque dur ===

[[Image:75.jpeg]]

[[Image:76.jpeg]]

[[Image:77.jpeg]]

[[Image:78.jpeg]]

=== Sauvegarder les journaux de débogage ===

[[Image:79.jpeg]]

[[Image:80.jpeg]]

[[Image:81.jpeg]]

=== Terminer l'installation ===

[[Image:82.jpeg]]

[[Image:83.jpeg]]

[[Image:84.jpeg]]

[[Image:85.jpeg]]

[[Image:87.jpeg]]

----
--[[Utilisateur:Lol|Lol]] 3 avril 2010 à 04:12 (UTC)

[[Catégorie:Installation]]</text>
      <sha1>2lkjkdusdmvdq4uxzf9zhw23ct0gleq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3034</id>
      <parentid>3033</parentid>
      <timestamp>2011-06-07T11:07:34Z</timestamp>
      <contributor>
        <username>Panthere</username>
        <id>133</id>
      </contributor>
      <minor/>
      <comment>/* Partitionner les disques */</comment>
      <text xml:space="preserve" bytes="6793">{{Ébauche|Installer Debian pas-à-pas}}

Ce document, au travers de captures d'écrans, détaillera pas-à-pas (de façon sommaire) l'installation d'une Debian Lenny à partir d'une image iso &quot;businesscard&quot;

== Prérequis ==

Téléchargement de l'image iso &quot;businesscard&quot;
Choisissez la businesscard (en mode expert) si vous souhaitez pouvoir choisir votre distribution (stable/testing/instable)
Vous pourrez également choisir votre window manager (gnome, kde, lxde, xfce)
Choisissez l'image en fonction de votre machine : i386 ou amd64 en général

 $ wget -c http://ftp.acc.umu.se/debian-cd/5.0.6/i386/iso-cd/debian-506-i386-businesscard.iso
Nouvelle version :
 $ wget -c http://cdimage.debian.org/debian-cd/6.0.1a/amd64/iso-cd/debian-6.0.1a-amd64-businesscard.iso



Vérifiez votre image iso à l'aide de [[Vérifier_le_md5_d'une_image_iso|'''md5sum''']]

Gravez l'image sur un CD(-RW).

== Installation ==

Modifier votre bios pour que votre machine démarre sur le lecteur de CD/DVD
Insérez le disque dans le lecteur et démarrez sur le CD

== Page d'accueil et choix de la méthode d'installation ==

Un menu s'offre à vous :

=== Installation===
*Install
*Graphical install
*Advanced options
*Help

====Install====
Ce choix installera (presque) automatiquement une Debian Lenny avec les options &quot;standards&quot;
====Graphical install====
Même chose que le choix ci-dessus, mais avec une interface graphique.
Peut s'avérer moins fiable, en fonction de votre matériel.
==== Advanced options====
C'est dans cette direction que nous allons...

====Help====
Divers fichiers d'aide sur les &quot;pré-requis&quot; à l'installation, les paramètres à passer au boot pour les machines un peu &quot;spéciales&quot;

====Exemple pour l'installation====
La taille des partition.




[[Fichier:01 help.jpeg]]

== Installer boot menu ==

[[Image:01.jpeg]]

Le menu suivant offre des choix intéressants :

*Back...
*Expert Install
C'est cette option que nous choisirons, c'est celle qui laisse le plus de contrôle sur l'installation
*Rescue mode
Très utile si un jour votre machine ne démarre pas (cela permet de faire un chroot sur le système pour des réparations... Grub par exemple)
Permet d'ouvrir un shell sur la partition système.
*Automated install
Comme son nom l'indique, une installation automatique où vous n'interviendrez presque pas
Identique au choix Install de la première page.
*Graphical expert install
Identique à &quot;Expert install&quot; mais en mode graphique
*Graphical rescue mode
Identique à &quot;Rescue mode&quot; mais en mode graphique
*Graphical automated install
Identique à &quot;Automated install&quot; mais en mode graphique
*Alternative desktop environments
Option intéressante si vous souhaitez installer un autre bureau que Gnome (KDE, LXDE, XFCE).
Vous retrouverez dans les sous-menus l'ensemble des choix offerts ici.

[[Image:02.jpeg]]

=== Choisir la langue ===

[[Image:03.jpeg]]

[[Image:04.jpeg]]

[[Image:05.jpeg]]

[[Image:06.jpeg]]

[[Image:07.jpeg]]

[[Image:08.jpeg]]

[[Image:09.jpeg]]

=== Choisir la disposition du clavier ===

[[Image:10.jpeg]]

[[Image:11.jpeg]]

[[Image:12.jpeg]]

=== Détecter et monter le CD ===

[[Image:13.jpeg]]

Activer l'usb ? Laissez le choix par défaut : oui

[[Image:14.jpeg]]

pcmcia ? Cela dépendra de votre machine...
Inutile de démarrer ces services si vous n'en avez pas !
La question vous sera reposée à chaque fois qu'une détection de matériel est nécessaire.

[[Image:15.jpeg]]

[[Image:16.jpeg]]

=== Charger des composants d'installation à partir du CD ===

Bien que je n'ai choisi aucune des options de cette liste, je vous détaille rapidement quelques choix :

Peu de mémoire vive (lowmem)
Connexion ppp (par modem)
rescue mode
support ntfs
wireless tools

[[Image:17.jpeg]]

[[Image:18.jpeg]]

[[Image:19.jpeg]]

[[Image:20.jpeg]]

[[Image:21.jpeg]]

=== Détecter le matériel réseau ===

[[Image:22.jpeg]]

[[Image:23.jpeg]]

=== Configurer le réseau ===

Généralement vous êtes derrière un routeur ou une &quot;box&quot; qui doit vous fournir une adresse IP.
Vous laisserez donc l'option DHCP.

[[Image:24.jpeg]]

[[Image:25.jpeg]]

[[Image:26.jpeg]]

Nom de la machine :

[[Image:27.jpeg]]

Nom du domaine. Il doit vous être fourni par le serveur DHCP. Si ce n'est pas le cas, laissez vide

[[Image:28.jpeg]]

=== Choisir un miroir de l'archive Debian ===

[[Image:29.jpeg]]

[[Image:30.jpeg]]

Choisissez un miroir pour récupérer les paquets. Inutiles que vos paquets fassent 12.000 Km, choisissez un miroir proche de chez vous.

[[Image:31.jpeg]]

[[Image:32.jpeg]]

[[Image:33.jpeg]]

A compléter si vous avez un proxy (pour ma part il s'agit d'un dépôt cache de paquets)

[[Image:34.jpeg]]

[[Image:35.jpeg]]

Un des points forts de la &quot;businesscard&quot; par rapport à une &quot;netinstall&quot;, le choix de la branche !

[[Image:36.jpeg]]

=== Configurer l'horloge ===

[[Image:37.jpeg]]

[[Image:38.jpeg]]

[[Image:39.jpeg]]

[[Image:40.jpeg]]

[[Image:41.jpeg]]

=== Détecter les disques ===

[[Image:42.jpeg]]

[[Image:43.jpeg]]

=== Partitionner les disques ===
Il s'agit de la configuration la plus simple:
je fait une parenthèse qui ici peux intéresser certaine configuration manuel.
la taille est aprocimatif, et devrai convenir a ceux qui veule une machine de bureaux avec un peux de confort

le [ /boot ] 50mb  suffi (100 mb c'est mieux)
la racine [ / ] 3 GIB (10 GB pour un bureaux)
le répertoire des utilisateur [ /home ] (c'est mieux si cette partition est séparée)
éventuellement mettre un [ /home/mp3 ] en lecture seule, de la taille qui vous convient


[[Image:44.jpeg]]


[[Image:45.jpeg]]

[[Image:46.jpeg]]

[[Image:47.jpeg]]

[[Image:48.jpeg]]

[[Image:49.jpeg]]

[[Image:50.jpeg]]

=== Installer le système de base ===

[[Image:51.jpeg]]

[[Image:52.jpeg]]

[[Image:53.jpeg]]

[[Image:54.jpeg]]

[[Image:55.jpeg]]

[[Image:56.jpeg]]

=== Créer les utilisateurs et choisir les mots de passe ===

[[Image:57.jpeg]]

[[Image:58.jpeg]]

[[Image:59.jpeg]]

[[Image:60.jpeg]]

[[Image:61.jpeg]]

[[Image:62.jpeg]]

[[Image:63.jpeg]]

[[Image:64.jpeg]]

[[Image:65.jpeg]]

[[Image:66.jpeg]]

=== Configurer l'outil de gestion des paquets ===

[[Image:67.jpeg]]

[[Image:68.jpeg]]

[[Image:69.jpeg]]

[[Image:70.jpeg]]

=== Choisir et installer des logiciels ===

[[Image:71.jpeg]]

[[Image:72.jpeg]]

[[Image:73.jpeg]]

[[Image:74.jpeg]]

=== Installer le programme de démarrage Grub sur un disque dur ===

[[Image:75.jpeg]]

[[Image:76.jpeg]]

[[Image:77.jpeg]]

[[Image:78.jpeg]]

=== Sauvegarder les journaux de débogage ===

[[Image:79.jpeg]]

[[Image:80.jpeg]]

[[Image:81.jpeg]]

=== Terminer l'installation ===

[[Image:82.jpeg]]

[[Image:83.jpeg]]

[[Image:84.jpeg]]

[[Image:85.jpeg]]

[[Image:87.jpeg]]

----
--[[Utilisateur:Lol|Lol]] 3 avril 2010 à 04:12 (UTC)

[[Catégorie:Installation]]</text>
      <sha1>7png7iu3zx5l7p0q38dlkmqrmlg4ur2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3036</id>
      <parentid>3034</parentid>
      <timestamp>2011-06-07T15:23:52Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="6798">{{Ébauche|Installer Debian pas-à-pas}}

Ce document, au travers de captures d'écrans, détaillera pas-à-pas (de façon sommaire) l'installation d'une Debian Lenny à partir d'une image iso &quot;businesscard&quot;

== Prérequis ==

Téléchargement de l'image iso &quot;businesscard&quot;
Choisissez la businesscard (en mode expert) si vous souhaitez pouvoir choisir votre distribution (stable/testing/instable)
Vous pourrez également choisir votre window manager (gnome, kde, lxde, xfce)
Choisissez l'image en fonction de votre machine : i386 ou amd64 en général

 $ wget -c http://ftp.acc.umu.se/debian-cd/5.0.6/i386/iso-cd/debian-506-i386-businesscard.iso
Nouvelle version :
 $ wget -c http://cdimage.debian.org/debian-cd/6.0.1a/amd64/iso-cd/debian-6.0.1a-amd64-businesscard.iso



Vérifiez votre image iso à l'aide de [[Vérifier_le_md5_d'une_image_iso|'''md5sum''']]

Gravez l'image sur un CD(-RW).

== Installation ==

Modifier votre bios pour que votre machine démarre sur le lecteur de CD/DVD
Insérez le disque dans le lecteur et démarrez sur le CD

== Page d'accueil et choix de la méthode d'installation ==

Un menu s'offre à vous :

=== Installation===
*Install
*Graphical install
*Advanced options
*Help

====Install====
Ce choix installera (presque) automatiquement une Debian Lenny avec les options &quot;standards&quot;
====Graphical install====
Même chose que le choix ci-dessus, mais avec une interface graphique.
Peut s'avérer moins fiable, en fonction de votre matériel.
==== Advanced options====
C'est dans cette direction que nous allons...

====Help====
Divers fichiers d'aide sur les &quot;pré-requis&quot; à l'installation, les paramètres à passer au boot pour les machines un peu &quot;spéciales&quot;

====Exemple pour l'installation====
La taille des partitions.




[[Fichier:01 help.jpeg]]

== Installer boot menu ==

[[Image:01.jpeg]]

Le menu suivant offre des choix intéressants :

*Back...
*Expert Install
C'est cette option que nous choisirons, c'est celle qui laisse le plus de contrôle sur l'installation
*Rescue mode
Très utile si un jour votre machine ne démarre pas (cela permet de faire un chroot sur le système pour des réparations... Grub par exemple)
Permet d'ouvrir un shell sur la partition système.
*Automated install
Comme son nom l'indique, une installation automatique où vous n'interviendrez presque pas
Identique au choix Install de la première page.
*Graphical expert install
Identique à &quot;Expert install&quot; mais en mode graphique
*Graphical rescue mode
Identique à &quot;Rescue mode&quot; mais en mode graphique
*Graphical automated install
Identique à &quot;Automated install&quot; mais en mode graphique
*Alternative desktop environments
Option intéressante si vous souhaitez installer un autre bureau que Gnome (KDE, LXDE, XFCE).
Vous retrouverez dans les sous-menus l'ensemble des choix offerts ici.

[[Image:02.jpeg]]

=== Choisir la langue ===

[[Image:03.jpeg]]

[[Image:04.jpeg]]

[[Image:05.jpeg]]

[[Image:06.jpeg]]

[[Image:07.jpeg]]

[[Image:08.jpeg]]

[[Image:09.jpeg]]

=== Choisir la disposition du clavier ===

[[Image:10.jpeg]]

[[Image:11.jpeg]]

[[Image:12.jpeg]]

=== Détecter et monter le CD ===

[[Image:13.jpeg]]

Activer l'usb ? Laissez le choix par défaut : oui

[[Image:14.jpeg]]

pcmcia ? Cela dépendra de votre machine...
Inutile de démarrer ces services si vous n'en avez pas !
La question vous sera reposée à chaque fois qu'une détection de matériel est nécessaire.

[[Image:15.jpeg]]

[[Image:16.jpeg]]

=== Charger des composants d'installation à partir du CD ===

Bien que je n'ai choisi aucune des options de cette liste, je vous détaille rapidement quelques choix :

Peu de mémoire vive (lowmem)
Connexion ppp (par modem)
rescue mode
support ntfs
wireless tools

[[Image:17.jpeg]]

[[Image:18.jpeg]]

[[Image:19.jpeg]]

[[Image:20.jpeg]]

[[Image:21.jpeg]]

=== Détecter le matériel réseau ===

[[Image:22.jpeg]]

[[Image:23.jpeg]]

=== Configurer le réseau ===

Généralement vous êtes derrière un routeur ou une &quot;box&quot; qui doit vous fournir une adresse IP.
Vous laisserez donc l'option DHCP.

[[Image:24.jpeg]]

[[Image:25.jpeg]]

[[Image:26.jpeg]]

Nom de la machine :

[[Image:27.jpeg]]

Nom du domaine. Il doit vous être fourni par le serveur DHCP. Si ce n'est pas le cas, laissez vide

[[Image:28.jpeg]]

=== Choisir un miroir de l'archive Debian ===

[[Image:29.jpeg]]

[[Image:30.jpeg]]

Choisissez un miroir pour récupérer les paquets. Inutile que vos paquets fassent 12.000 Km, choisissez un miroir proche de chez vous.

[[Image:31.jpeg]]

[[Image:32.jpeg]]

[[Image:33.jpeg]]

A compléter si vous avez un proxy (pour ma part il s'agit d'un dépôt cache de paquets)

[[Image:34.jpeg]]

[[Image:35.jpeg]]

Un des points forts de la &quot;businesscard&quot; par rapport à une &quot;netinstall&quot;, le choix de la branche !

[[Image:36.jpeg]]

=== Configurer l'horloge ===

[[Image:37.jpeg]]

[[Image:38.jpeg]]

[[Image:39.jpeg]]

[[Image:40.jpeg]]

[[Image:41.jpeg]]

=== Détecter les disques ===

[[Image:42.jpeg]]

[[Image:43.jpeg]]

=== Partitionner les disques ===
Il s'agit de la configuration la plus simple:
je fais une parenthèse qui peut intéresser certaines configurations manuelles.
La taille est approximative, et devrait convenir à ceux qui veulent une machine de bureau avec un peu de confort

Le [ /boot ] 50mb  suffi (100 mb c'est mieux)
La racine [ / ] 3 GIB (10 GB pour un bureaux)
Le répertoire des utilisateur [ /home ] (c'est mieux si cette partition est séparée)
éventuellement mettre un [ /home/mp3 ] en lecture seule, de la taille qui vous convient


[[Image:44.jpeg]]


[[Image:45.jpeg]]

[[Image:46.jpeg]]

[[Image:47.jpeg]]

[[Image:48.jpeg]]

[[Image:49.jpeg]]

[[Image:50.jpeg]]

=== Installer le système de base ===

[[Image:51.jpeg]]

[[Image:52.jpeg]]

[[Image:53.jpeg]]

[[Image:54.jpeg]]

[[Image:55.jpeg]]

[[Image:56.jpeg]]

=== Créer les utilisateurs et choisir les mots de passe ===

[[Image:57.jpeg]]

[[Image:58.jpeg]]

[[Image:59.jpeg]]

[[Image:60.jpeg]]

[[Image:61.jpeg]]

[[Image:62.jpeg]]

[[Image:63.jpeg]]

[[Image:64.jpeg]]

[[Image:65.jpeg]]

[[Image:66.jpeg]]

=== Configurer l'outil de gestion des paquets ===

[[Image:67.jpeg]]

[[Image:68.jpeg]]

[[Image:69.jpeg]]

[[Image:70.jpeg]]

=== Choisir et installer des logiciels ===

[[Image:71.jpeg]]

[[Image:72.jpeg]]

[[Image:73.jpeg]]

[[Image:74.jpeg]]

=== Installer le programme de démarrage Grub sur un disque dur ===

[[Image:75.jpeg]]

[[Image:76.jpeg]]

[[Image:77.jpeg]]

[[Image:78.jpeg]]

=== Sauvegarder les journaux de débogage ===

[[Image:79.jpeg]]

[[Image:80.jpeg]]

[[Image:81.jpeg]]

=== Terminer l'installation ===

[[Image:82.jpeg]]

[[Image:83.jpeg]]

[[Image:84.jpeg]]

[[Image:85.jpeg]]

[[Image:87.jpeg]]

----
--[[Utilisateur:Lol|Lol]] 3 avril 2010 à 04:12 (UTC)

[[Catégorie:Installation]]</text>
      <sha1>dpx0xk8scviybn5c3l1m0d7fpe5zfpu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3037</id>
      <parentid>3036</parentid>
      <timestamp>2011-06-08T06:28:26Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Partitionner les disques */</comment>
      <text xml:space="preserve" bytes="6953">{{Ébauche|Installer Debian pas-à-pas}}

Ce document, au travers de captures d'écrans, détaillera pas-à-pas (de façon sommaire) l'installation d'une Debian Lenny à partir d'une image iso &quot;businesscard&quot;

== Prérequis ==

Téléchargement de l'image iso &quot;businesscard&quot;
Choisissez la businesscard (en mode expert) si vous souhaitez pouvoir choisir votre distribution (stable/testing/instable)
Vous pourrez également choisir votre window manager (gnome, kde, lxde, xfce)
Choisissez l'image en fonction de votre machine : i386 ou amd64 en général

 $ wget -c http://ftp.acc.umu.se/debian-cd/5.0.6/i386/iso-cd/debian-506-i386-businesscard.iso
Nouvelle version :
 $ wget -c http://cdimage.debian.org/debian-cd/6.0.1a/amd64/iso-cd/debian-6.0.1a-amd64-businesscard.iso



Vérifiez votre image iso à l'aide de [[Vérifier_le_md5_d'une_image_iso|'''md5sum''']]

Gravez l'image sur un CD(-RW).

== Installation ==

Modifier votre bios pour que votre machine démarre sur le lecteur de CD/DVD
Insérez le disque dans le lecteur et démarrez sur le CD

== Page d'accueil et choix de la méthode d'installation ==

Un menu s'offre à vous :

=== Installation===
*Install
*Graphical install
*Advanced options
*Help

====Install====
Ce choix installera (presque) automatiquement une Debian Lenny avec les options &quot;standards&quot;
====Graphical install====
Même chose que le choix ci-dessus, mais avec une interface graphique.
Peut s'avérer moins fiable, en fonction de votre matériel.
==== Advanced options====
C'est dans cette direction que nous allons...

====Help====
Divers fichiers d'aide sur les &quot;pré-requis&quot; à l'installation, les paramètres à passer au boot pour les machines un peu &quot;spéciales&quot;

====Exemple pour l'installation====
La taille des partitions.




[[Fichier:01 help.jpeg]]

== Installer boot menu ==

[[Image:01.jpeg]]

Le menu suivant offre des choix intéressants :

*Back...
*Expert Install
C'est cette option que nous choisirons, c'est celle qui laisse le plus de contrôle sur l'installation
*Rescue mode
Très utile si un jour votre machine ne démarre pas (cela permet de faire un chroot sur le système pour des réparations... Grub par exemple)
Permet d'ouvrir un shell sur la partition système.
*Automated install
Comme son nom l'indique, une installation automatique où vous n'interviendrez presque pas
Identique au choix Install de la première page.
*Graphical expert install
Identique à &quot;Expert install&quot; mais en mode graphique
*Graphical rescue mode
Identique à &quot;Rescue mode&quot; mais en mode graphique
*Graphical automated install
Identique à &quot;Automated install&quot; mais en mode graphique
*Alternative desktop environments
Option intéressante si vous souhaitez installer un autre bureau que Gnome (KDE, LXDE, XFCE).
Vous retrouverez dans les sous-menus l'ensemble des choix offerts ici.

[[Image:02.jpeg]]

=== Choisir la langue ===

[[Image:03.jpeg]]

[[Image:04.jpeg]]

[[Image:05.jpeg]]

[[Image:06.jpeg]]

[[Image:07.jpeg]]

[[Image:08.jpeg]]

[[Image:09.jpeg]]

=== Choisir la disposition du clavier ===

[[Image:10.jpeg]]

[[Image:11.jpeg]]

[[Image:12.jpeg]]

=== Détecter et monter le CD ===

[[Image:13.jpeg]]

Activer l'usb ? Laissez le choix par défaut : oui

[[Image:14.jpeg]]

pcmcia ? Cela dépendra de votre machine...
Inutile de démarrer ces services si vous n'en avez pas !
La question vous sera reposée à chaque fois qu'une détection de matériel est nécessaire.

[[Image:15.jpeg]]

[[Image:16.jpeg]]

=== Charger des composants d'installation à partir du CD ===

Bien que je n'ai choisi aucune des options de cette liste, je vous détaille rapidement quelques choix :

Peu de mémoire vive (lowmem)
Connexion ppp (par modem)
rescue mode
support ntfs
wireless tools

[[Image:17.jpeg]]

[[Image:18.jpeg]]

[[Image:19.jpeg]]

[[Image:20.jpeg]]

[[Image:21.jpeg]]

=== Détecter le matériel réseau ===

[[Image:22.jpeg]]

[[Image:23.jpeg]]

=== Configurer le réseau ===

Généralement vous êtes derrière un routeur ou une &quot;box&quot; qui doit vous fournir une adresse IP.
Vous laisserez donc l'option DHCP.

[[Image:24.jpeg]]

[[Image:25.jpeg]]

[[Image:26.jpeg]]

Nom de la machine :

[[Image:27.jpeg]]

Nom du domaine. Il doit vous être fourni par le serveur DHCP. Si ce n'est pas le cas, laissez vide

[[Image:28.jpeg]]

=== Choisir un miroir de l'archive Debian ===

[[Image:29.jpeg]]

[[Image:30.jpeg]]

Choisissez un miroir pour récupérer les paquets. Inutile que vos paquets fassent 12.000 Km, choisissez un miroir proche de chez vous.

[[Image:31.jpeg]]

[[Image:32.jpeg]]

[[Image:33.jpeg]]

A compléter si vous avez un proxy (pour ma part il s'agit d'un dépôt cache de paquets)

[[Image:34.jpeg]]

[[Image:35.jpeg]]

Un des points forts de la &quot;businesscard&quot; par rapport à une &quot;netinstall&quot;, le choix de la branche !

[[Image:36.jpeg]]

=== Configurer l'horloge ===

[[Image:37.jpeg]]

[[Image:38.jpeg]]

[[Image:39.jpeg]]

[[Image:40.jpeg]]

[[Image:41.jpeg]]

=== Détecter les disques ===

[[Image:42.jpeg]]

[[Image:43.jpeg]]

=== Partitionner les disques ===
Il s'agit de la configuration la plus simple:

je fais une parenthèse qui peut intéresser certaines configurations manuelles.

La taille est approximative, et devrait convenir à ceux qui veulent une machine de bureau avec un peu de confort

Le [ /boot ] 50mb  suffisent (100 mb c'est mieux) - Séparer la partition /boot n'est pas une nécessité.

La racine [ / ] 3 GIB (10 GB pour un bureaux)

Le répertoire des utilisateur [ /home ] ('''Il est très fortement conseillé de séparer cette partition''')
éventuellement mettre un [ /home/mp3 ] en lecture seule, de la taille qui vous convient

[[Le_partitionnement|Plus d'informations sur le partitionnement]].

[[Image:44.jpeg]]


[[Image:45.jpeg]]

[[Image:46.jpeg]]

[[Image:47.jpeg]]

[[Image:48.jpeg]]

[[Image:49.jpeg]]

[[Image:50.jpeg]]

=== Installer le système de base ===

[[Image:51.jpeg]]

[[Image:52.jpeg]]

[[Image:53.jpeg]]

[[Image:54.jpeg]]

[[Image:55.jpeg]]

[[Image:56.jpeg]]

=== Créer les utilisateurs et choisir les mots de passe ===

[[Image:57.jpeg]]

[[Image:58.jpeg]]

[[Image:59.jpeg]]

[[Image:60.jpeg]]

[[Image:61.jpeg]]

[[Image:62.jpeg]]

[[Image:63.jpeg]]

[[Image:64.jpeg]]

[[Image:65.jpeg]]

[[Image:66.jpeg]]

=== Configurer l'outil de gestion des paquets ===

[[Image:67.jpeg]]

[[Image:68.jpeg]]

[[Image:69.jpeg]]

[[Image:70.jpeg]]

=== Choisir et installer des logiciels ===

[[Image:71.jpeg]]

[[Image:72.jpeg]]

[[Image:73.jpeg]]

[[Image:74.jpeg]]

=== Installer le programme de démarrage Grub sur un disque dur ===

[[Image:75.jpeg]]

[[Image:76.jpeg]]

[[Image:77.jpeg]]

[[Image:78.jpeg]]

=== Sauvegarder les journaux de débogage ===

[[Image:79.jpeg]]

[[Image:80.jpeg]]

[[Image:81.jpeg]]

=== Terminer l'installation ===

[[Image:82.jpeg]]

[[Image:83.jpeg]]

[[Image:84.jpeg]]

[[Image:85.jpeg]]

[[Image:87.jpeg]]

----
--[[Utilisateur:Lol|Lol]] 3 avril 2010 à 04:12 (UTC)

[[Catégorie:Installation]]</text>
      <sha1>bttmajhl2mrr049r4bqxjwxvj009wnr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3038</id>
      <parentid>3037</parentid>
      <timestamp>2011-06-08T12:47:42Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Partitionner les disques */</comment>
      <text xml:space="preserve" bytes="6864">{{Ébauche|Installer Debian pas-à-pas}}

Ce document, au travers de captures d'écrans, détaillera pas-à-pas (de façon sommaire) l'installation d'une Debian Lenny à partir d'une image iso &quot;businesscard&quot;

== Prérequis ==

Téléchargement de l'image iso &quot;businesscard&quot;
Choisissez la businesscard (en mode expert) si vous souhaitez pouvoir choisir votre distribution (stable/testing/instable)
Vous pourrez également choisir votre window manager (gnome, kde, lxde, xfce)
Choisissez l'image en fonction de votre machine : i386 ou amd64 en général

 $ wget -c http://ftp.acc.umu.se/debian-cd/5.0.6/i386/iso-cd/debian-506-i386-businesscard.iso
Nouvelle version :
 $ wget -c http://cdimage.debian.org/debian-cd/6.0.1a/amd64/iso-cd/debian-6.0.1a-amd64-businesscard.iso



Vérifiez votre image iso à l'aide de [[Vérifier_le_md5_d'une_image_iso|'''md5sum''']]

Gravez l'image sur un CD(-RW).

== Installation ==

Modifier votre bios pour que votre machine démarre sur le lecteur de CD/DVD
Insérez le disque dans le lecteur et démarrez sur le CD

== Page d'accueil et choix de la méthode d'installation ==

Un menu s'offre à vous :

=== Installation===
*Install
*Graphical install
*Advanced options
*Help

====Install====
Ce choix installera (presque) automatiquement une Debian Lenny avec les options &quot;standards&quot;
====Graphical install====
Même chose que le choix ci-dessus, mais avec une interface graphique.
Peut s'avérer moins fiable, en fonction de votre matériel.
==== Advanced options====
C'est dans cette direction que nous allons...

====Help====
Divers fichiers d'aide sur les &quot;pré-requis&quot; à l'installation, les paramètres à passer au boot pour les machines un peu &quot;spéciales&quot;

====Exemple pour l'installation====
La taille des partitions.




[[Fichier:01 help.jpeg]]

== Installer boot menu ==

[[Image:01.jpeg]]

Le menu suivant offre des choix intéressants :

*Back...
*Expert Install
C'est cette option que nous choisirons, c'est celle qui laisse le plus de contrôle sur l'installation
*Rescue mode
Très utile si un jour votre machine ne démarre pas (cela permet de faire un chroot sur le système pour des réparations... Grub par exemple)
Permet d'ouvrir un shell sur la partition système.
*Automated install
Comme son nom l'indique, une installation automatique où vous n'interviendrez presque pas
Identique au choix Install de la première page.
*Graphical expert install
Identique à &quot;Expert install&quot; mais en mode graphique
*Graphical rescue mode
Identique à &quot;Rescue mode&quot; mais en mode graphique
*Graphical automated install
Identique à &quot;Automated install&quot; mais en mode graphique
*Alternative desktop environments
Option intéressante si vous souhaitez installer un autre bureau que Gnome (KDE, LXDE, XFCE).
Vous retrouverez dans les sous-menus l'ensemble des choix offerts ici.

[[Image:02.jpeg]]

=== Choisir la langue ===

[[Image:03.jpeg]]

[[Image:04.jpeg]]

[[Image:05.jpeg]]

[[Image:06.jpeg]]

[[Image:07.jpeg]]

[[Image:08.jpeg]]

[[Image:09.jpeg]]

=== Choisir la disposition du clavier ===

[[Image:10.jpeg]]

[[Image:11.jpeg]]

[[Image:12.jpeg]]

=== Détecter et monter le CD ===

[[Image:13.jpeg]]

Activer l'usb ? Laissez le choix par défaut : oui

[[Image:14.jpeg]]

pcmcia ? Cela dépendra de votre machine...
Inutile de démarrer ces services si vous n'en avez pas !
La question vous sera reposée à chaque fois qu'une détection de matériel est nécessaire.

[[Image:15.jpeg]]

[[Image:16.jpeg]]

=== Charger des composants d'installation à partir du CD ===

Bien que je n'ai choisi aucune des options de cette liste, je vous détaille rapidement quelques choix :

Peu de mémoire vive (lowmem)
Connexion ppp (par modem)
rescue mode
support ntfs
wireless tools

[[Image:17.jpeg]]

[[Image:18.jpeg]]

[[Image:19.jpeg]]

[[Image:20.jpeg]]

[[Image:21.jpeg]]

=== Détecter le matériel réseau ===

[[Image:22.jpeg]]

[[Image:23.jpeg]]

=== Configurer le réseau ===

Généralement vous êtes derrière un routeur ou une &quot;box&quot; qui doit vous fournir une adresse IP.
Vous laisserez donc l'option DHCP.

[[Image:24.jpeg]]

[[Image:25.jpeg]]

[[Image:26.jpeg]]

Nom de la machine :

[[Image:27.jpeg]]

Nom du domaine. Il doit vous être fourni par le serveur DHCP. Si ce n'est pas le cas, laissez vide

[[Image:28.jpeg]]

=== Choisir un miroir de l'archive Debian ===

[[Image:29.jpeg]]

[[Image:30.jpeg]]

Choisissez un miroir pour récupérer les paquets. Inutile que vos paquets fassent 12.000 Km, choisissez un miroir proche de chez vous.

[[Image:31.jpeg]]

[[Image:32.jpeg]]

[[Image:33.jpeg]]

A compléter si vous avez un proxy (pour ma part il s'agit d'un dépôt cache de paquets)

[[Image:34.jpeg]]

[[Image:35.jpeg]]

Un des points forts de la &quot;businesscard&quot; par rapport à une &quot;netinstall&quot;, le choix de la branche !

[[Image:36.jpeg]]

=== Configurer l'horloge ===

[[Image:37.jpeg]]

[[Image:38.jpeg]]

[[Image:39.jpeg]]

[[Image:40.jpeg]]

[[Image:41.jpeg]]

=== Détecter les disques ===

[[Image:42.jpeg]]

[[Image:43.jpeg]]

=== Partitionner les disques ===
Il s'agit de la configuration la plus simple:

je fais une parenthèse qui peut intéresser certaines configurations manuelles.

La taille est approximative, et devrait convenir à ceux qui veulent une machine de bureau avec un peu de confort

Le [ /boot ] 50mb  suffisent (100 mb c'est mieux) - Séparer la partition /boot n'est pas une nécessité.

La racine [ / ] 3 GIB (10 GB pour un bureaux)

Le répertoire des utilisateur [ /home ] ('''Il est très fortement conseillé de séparer cette partition''')

[[Le_partitionnement|Plus d'informations sur le partitionnement]].

[[Image:44.jpeg]]


[[Image:45.jpeg]]

[[Image:46.jpeg]]

[[Image:47.jpeg]]

[[Image:48.jpeg]]

[[Image:49.jpeg]]

[[Image:50.jpeg]]

=== Installer le système de base ===

[[Image:51.jpeg]]

[[Image:52.jpeg]]

[[Image:53.jpeg]]

[[Image:54.jpeg]]

[[Image:55.jpeg]]

[[Image:56.jpeg]]

=== Créer les utilisateurs et choisir les mots de passe ===

[[Image:57.jpeg]]

[[Image:58.jpeg]]

[[Image:59.jpeg]]

[[Image:60.jpeg]]

[[Image:61.jpeg]]

[[Image:62.jpeg]]

[[Image:63.jpeg]]

[[Image:64.jpeg]]

[[Image:65.jpeg]]

[[Image:66.jpeg]]

=== Configurer l'outil de gestion des paquets ===

[[Image:67.jpeg]]

[[Image:68.jpeg]]

[[Image:69.jpeg]]

[[Image:70.jpeg]]

=== Choisir et installer des logiciels ===

[[Image:71.jpeg]]

[[Image:72.jpeg]]

[[Image:73.jpeg]]

[[Image:74.jpeg]]

=== Installer le programme de démarrage Grub sur un disque dur ===

[[Image:75.jpeg]]

[[Image:76.jpeg]]

[[Image:77.jpeg]]

[[Image:78.jpeg]]

=== Sauvegarder les journaux de débogage ===

[[Image:79.jpeg]]

[[Image:80.jpeg]]

[[Image:81.jpeg]]

=== Terminer l'installation ===

[[Image:82.jpeg]]

[[Image:83.jpeg]]

[[Image:84.jpeg]]

[[Image:85.jpeg]]

[[Image:87.jpeg]]

----
--[[Utilisateur:Lol|Lol]] 3 avril 2010 à 04:12 (UTC)

[[Catégorie:Installation]]</text>
      <sha1>2oxeozi29rl7y65cvx8w6x93tka7iad</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3077</id>
      <parentid>3038</parentid>
      <timestamp>2011-06-13T10:32:36Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Partitionner les disques */</comment>
      <text xml:space="preserve" bytes="6865">{{Ébauche|Installer Debian pas-à-pas}}

Ce document, au travers de captures d'écrans, détaillera pas-à-pas (de façon sommaire) l'installation d'une Debian Lenny à partir d'une image iso &quot;businesscard&quot;

== Prérequis ==

Téléchargement de l'image iso &quot;businesscard&quot;
Choisissez la businesscard (en mode expert) si vous souhaitez pouvoir choisir votre distribution (stable/testing/instable)
Vous pourrez également choisir votre window manager (gnome, kde, lxde, xfce)
Choisissez l'image en fonction de votre machine : i386 ou amd64 en général

 $ wget -c http://ftp.acc.umu.se/debian-cd/5.0.6/i386/iso-cd/debian-506-i386-businesscard.iso
Nouvelle version :
 $ wget -c http://cdimage.debian.org/debian-cd/6.0.1a/amd64/iso-cd/debian-6.0.1a-amd64-businesscard.iso



Vérifiez votre image iso à l'aide de [[Vérifier_le_md5_d'une_image_iso|'''md5sum''']]

Gravez l'image sur un CD(-RW).

== Installation ==

Modifier votre bios pour que votre machine démarre sur le lecteur de CD/DVD
Insérez le disque dans le lecteur et démarrez sur le CD

== Page d'accueil et choix de la méthode d'installation ==

Un menu s'offre à vous :

=== Installation===
*Install
*Graphical install
*Advanced options
*Help

====Install====
Ce choix installera (presque) automatiquement une Debian Lenny avec les options &quot;standards&quot;
====Graphical install====
Même chose que le choix ci-dessus, mais avec une interface graphique.
Peut s'avérer moins fiable, en fonction de votre matériel.
==== Advanced options====
C'est dans cette direction que nous allons...

====Help====
Divers fichiers d'aide sur les &quot;pré-requis&quot; à l'installation, les paramètres à passer au boot pour les machines un peu &quot;spéciales&quot;

====Exemple pour l'installation====
La taille des partitions.




[[Fichier:01 help.jpeg]]

== Installer boot menu ==

[[Image:01.jpeg]]

Le menu suivant offre des choix intéressants :

*Back...
*Expert Install
C'est cette option que nous choisirons, c'est celle qui laisse le plus de contrôle sur l'installation
*Rescue mode
Très utile si un jour votre machine ne démarre pas (cela permet de faire un chroot sur le système pour des réparations... Grub par exemple)
Permet d'ouvrir un shell sur la partition système.
*Automated install
Comme son nom l'indique, une installation automatique où vous n'interviendrez presque pas
Identique au choix Install de la première page.
*Graphical expert install
Identique à &quot;Expert install&quot; mais en mode graphique
*Graphical rescue mode
Identique à &quot;Rescue mode&quot; mais en mode graphique
*Graphical automated install
Identique à &quot;Automated install&quot; mais en mode graphique
*Alternative desktop environments
Option intéressante si vous souhaitez installer un autre bureau que Gnome (KDE, LXDE, XFCE).
Vous retrouverez dans les sous-menus l'ensemble des choix offerts ici.

[[Image:02.jpeg]]

=== Choisir la langue ===

[[Image:03.jpeg]]

[[Image:04.jpeg]]

[[Image:05.jpeg]]

[[Image:06.jpeg]]

[[Image:07.jpeg]]

[[Image:08.jpeg]]

[[Image:09.jpeg]]

=== Choisir la disposition du clavier ===

[[Image:10.jpeg]]

[[Image:11.jpeg]]

[[Image:12.jpeg]]

=== Détecter et monter le CD ===

[[Image:13.jpeg]]

Activer l'usb ? Laissez le choix par défaut : oui

[[Image:14.jpeg]]

pcmcia ? Cela dépendra de votre machine...
Inutile de démarrer ces services si vous n'en avez pas !
La question vous sera reposée à chaque fois qu'une détection de matériel est nécessaire.

[[Image:15.jpeg]]

[[Image:16.jpeg]]

=== Charger des composants d'installation à partir du CD ===

Bien que je n'ai choisi aucune des options de cette liste, je vous détaille rapidement quelques choix :

Peu de mémoire vive (lowmem)
Connexion ppp (par modem)
rescue mode
support ntfs
wireless tools

[[Image:17.jpeg]]

[[Image:18.jpeg]]

[[Image:19.jpeg]]

[[Image:20.jpeg]]

[[Image:21.jpeg]]

=== Détecter le matériel réseau ===

[[Image:22.jpeg]]

[[Image:23.jpeg]]

=== Configurer le réseau ===

Généralement vous êtes derrière un routeur ou une &quot;box&quot; qui doit vous fournir une adresse IP.
Vous laisserez donc l'option DHCP.

[[Image:24.jpeg]]

[[Image:25.jpeg]]

[[Image:26.jpeg]]

Nom de la machine :

[[Image:27.jpeg]]

Nom du domaine. Il doit vous être fourni par le serveur DHCP. Si ce n'est pas le cas, laissez vide

[[Image:28.jpeg]]

=== Choisir un miroir de l'archive Debian ===

[[Image:29.jpeg]]

[[Image:30.jpeg]]

Choisissez un miroir pour récupérer les paquets. Inutile que vos paquets fassent 12.000 Km, choisissez un miroir proche de chez vous.

[[Image:31.jpeg]]

[[Image:32.jpeg]]

[[Image:33.jpeg]]

A compléter si vous avez un proxy (pour ma part il s'agit d'un dépôt cache de paquets)

[[Image:34.jpeg]]

[[Image:35.jpeg]]

Un des points forts de la &quot;businesscard&quot; par rapport à une &quot;netinstall&quot;, le choix de la branche !

[[Image:36.jpeg]]

=== Configurer l'horloge ===

[[Image:37.jpeg]]

[[Image:38.jpeg]]

[[Image:39.jpeg]]

[[Image:40.jpeg]]

[[Image:41.jpeg]]

=== Détecter les disques ===

[[Image:42.jpeg]]

[[Image:43.jpeg]]

=== Partitionner les disques ===
Il s'agit de la configuration la plus simple:

je fais une parenthèse qui peut intéresser certaines configurations manuelles.

La taille est approximative, et devrait convenir à ceux qui veulent une machine de bureau avec un peu de confort

Le [ /boot ] 50mb  suffisent (100 mb c'est mieux) - Séparer la partition /boot n'est plus une nécessité.

La racine [ / ] 3 GIB (10 GB pour un bureaux)

Le répertoire des utilisateur [ /home ] ('''Il est très fortement conseillé de séparer cette partition''')

[[Le_partitionnement|Plus d'informations sur le partitionnement]].

[[Image:44.jpeg]]


[[Image:45.jpeg]]

[[Image:46.jpeg]]

[[Image:47.jpeg]]

[[Image:48.jpeg]]

[[Image:49.jpeg]]

[[Image:50.jpeg]]

=== Installer le système de base ===

[[Image:51.jpeg]]

[[Image:52.jpeg]]

[[Image:53.jpeg]]

[[Image:54.jpeg]]

[[Image:55.jpeg]]

[[Image:56.jpeg]]

=== Créer les utilisateurs et choisir les mots de passe ===

[[Image:57.jpeg]]

[[Image:58.jpeg]]

[[Image:59.jpeg]]

[[Image:60.jpeg]]

[[Image:61.jpeg]]

[[Image:62.jpeg]]

[[Image:63.jpeg]]

[[Image:64.jpeg]]

[[Image:65.jpeg]]

[[Image:66.jpeg]]

=== Configurer l'outil de gestion des paquets ===

[[Image:67.jpeg]]

[[Image:68.jpeg]]

[[Image:69.jpeg]]

[[Image:70.jpeg]]

=== Choisir et installer des logiciels ===

[[Image:71.jpeg]]

[[Image:72.jpeg]]

[[Image:73.jpeg]]

[[Image:74.jpeg]]

=== Installer le programme de démarrage Grub sur un disque dur ===

[[Image:75.jpeg]]

[[Image:76.jpeg]]

[[Image:77.jpeg]]

[[Image:78.jpeg]]

=== Sauvegarder les journaux de débogage ===

[[Image:79.jpeg]]

[[Image:80.jpeg]]

[[Image:81.jpeg]]

=== Terminer l'installation ===

[[Image:82.jpeg]]

[[Image:83.jpeg]]

[[Image:84.jpeg]]

[[Image:85.jpeg]]

[[Image:87.jpeg]]

----
--[[Utilisateur:Lol|Lol]] 3 avril 2010 à 04:12 (UTC)

[[Catégorie:Installation]]</text>
      <sha1>sxco34oor7tgb1rqi16svcw8z0h928o</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3839</id>
      <parentid>3077</parentid>
      <timestamp>2012-02-16T14:51:29Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Prérequis */</comment>
      <text xml:space="preserve" bytes="6957">{{Ébauche|Installer Debian pas-à-pas}}

Ce document, au travers de captures d'écrans, détaillera pas-à-pas (de façon sommaire) l'installation d'une Debian Lenny à partir d'une image iso &quot;businesscard&quot;

== Prérequis ==

Téléchargement de l'image iso &quot;businesscard&quot;
Choisissez la businesscard (en mode expert) si vous souhaitez pouvoir choisir votre distribution (stable/testing/instable) Le choix &quot;businesscard&quot; et non &quot;netinst&quot; se justifie par la possibilité de choix offerte !
Vous pourrez également choisir votre window manager (gnome, kde, lxde, xfce)
Choisissez l'image en fonction de votre machine : i386 ou amd64 en général

 $ wget -c http://ftp.acc.umu.se/debian-cd/5.0.6/i386/iso-cd/debian-506-i386-businesscard.iso
Nouvelle version :
 $ wget -c http://cdimage.debian.org/debian-cd/6.0.1a/amd64/iso-cd/debian-6.0.1a-amd64-businesscard.iso



Vérifiez votre image iso à l'aide de [[Vérifier_le_md5_d'une_image_iso|'''md5sum''']]

Gravez l'image sur un CD(-RW).

== Installation ==

Modifier votre bios pour que votre machine démarre sur le lecteur de CD/DVD
Insérez le disque dans le lecteur et démarrez sur le CD

== Page d'accueil et choix de la méthode d'installation ==

Un menu s'offre à vous :

=== Installation===
*Install
*Graphical install
*Advanced options
*Help

====Install====
Ce choix installera (presque) automatiquement une Debian Lenny avec les options &quot;standards&quot;
====Graphical install====
Même chose que le choix ci-dessus, mais avec une interface graphique.
Peut s'avérer moins fiable, en fonction de votre matériel.
==== Advanced options====
C'est dans cette direction que nous allons...

====Help====
Divers fichiers d'aide sur les &quot;pré-requis&quot; à l'installation, les paramètres à passer au boot pour les machines un peu &quot;spéciales&quot;

====Exemple pour l'installation====
La taille des partitions.




[[Fichier:01 help.jpeg]]

== Installer boot menu ==

[[Image:01.jpeg]]

Le menu suivant offre des choix intéressants :

*Back...
*Expert Install
C'est cette option que nous choisirons, c'est celle qui laisse le plus de contrôle sur l'installation
*Rescue mode
Très utile si un jour votre machine ne démarre pas (cela permet de faire un chroot sur le système pour des réparations... Grub par exemple)
Permet d'ouvrir un shell sur la partition système.
*Automated install
Comme son nom l'indique, une installation automatique où vous n'interviendrez presque pas
Identique au choix Install de la première page.
*Graphical expert install
Identique à &quot;Expert install&quot; mais en mode graphique
*Graphical rescue mode
Identique à &quot;Rescue mode&quot; mais en mode graphique
*Graphical automated install
Identique à &quot;Automated install&quot; mais en mode graphique
*Alternative desktop environments
Option intéressante si vous souhaitez installer un autre bureau que Gnome (KDE, LXDE, XFCE).
Vous retrouverez dans les sous-menus l'ensemble des choix offerts ici.

[[Image:02.jpeg]]

=== Choisir la langue ===

[[Image:03.jpeg]]

[[Image:04.jpeg]]

[[Image:05.jpeg]]

[[Image:06.jpeg]]

[[Image:07.jpeg]]

[[Image:08.jpeg]]

[[Image:09.jpeg]]

=== Choisir la disposition du clavier ===

[[Image:10.jpeg]]

[[Image:11.jpeg]]

[[Image:12.jpeg]]

=== Détecter et monter le CD ===

[[Image:13.jpeg]]

Activer l'usb ? Laissez le choix par défaut : oui

[[Image:14.jpeg]]

pcmcia ? Cela dépendra de votre machine...
Inutile de démarrer ces services si vous n'en avez pas !
La question vous sera reposée à chaque fois qu'une détection de matériel est nécessaire.

[[Image:15.jpeg]]

[[Image:16.jpeg]]

=== Charger des composants d'installation à partir du CD ===

Bien que je n'ai choisi aucune des options de cette liste, je vous détaille rapidement quelques choix :

Peu de mémoire vive (lowmem)
Connexion ppp (par modem)
rescue mode
support ntfs
wireless tools

[[Image:17.jpeg]]

[[Image:18.jpeg]]

[[Image:19.jpeg]]

[[Image:20.jpeg]]

[[Image:21.jpeg]]

=== Détecter le matériel réseau ===

[[Image:22.jpeg]]

[[Image:23.jpeg]]

=== Configurer le réseau ===

Généralement vous êtes derrière un routeur ou une &quot;box&quot; qui doit vous fournir une adresse IP.
Vous laisserez donc l'option DHCP.

[[Image:24.jpeg]]

[[Image:25.jpeg]]

[[Image:26.jpeg]]

Nom de la machine :

[[Image:27.jpeg]]

Nom du domaine. Il doit vous être fourni par le serveur DHCP. Si ce n'est pas le cas, laissez vide

[[Image:28.jpeg]]

=== Choisir un miroir de l'archive Debian ===

[[Image:29.jpeg]]

[[Image:30.jpeg]]

Choisissez un miroir pour récupérer les paquets. Inutile que vos paquets fassent 12.000 Km, choisissez un miroir proche de chez vous.

[[Image:31.jpeg]]

[[Image:32.jpeg]]

[[Image:33.jpeg]]

A compléter si vous avez un proxy (pour ma part il s'agit d'un dépôt cache de paquets)

[[Image:34.jpeg]]

[[Image:35.jpeg]]

Un des points forts de la &quot;businesscard&quot; par rapport à une &quot;netinstall&quot;, le choix de la branche !

[[Image:36.jpeg]]

=== Configurer l'horloge ===

[[Image:37.jpeg]]

[[Image:38.jpeg]]

[[Image:39.jpeg]]

[[Image:40.jpeg]]

[[Image:41.jpeg]]

=== Détecter les disques ===

[[Image:42.jpeg]]

[[Image:43.jpeg]]

=== Partitionner les disques ===
Il s'agit de la configuration la plus simple:

je fais une parenthèse qui peut intéresser certaines configurations manuelles.

La taille est approximative, et devrait convenir à ceux qui veulent une machine de bureau avec un peu de confort

Le [ /boot ] 50mb  suffisent (100 mb c'est mieux) - Séparer la partition /boot n'est plus une nécessité.

La racine [ / ] 3 GIB (10 GB pour un bureaux)

Le répertoire des utilisateur [ /home ] ('''Il est très fortement conseillé de séparer cette partition''')

[[Le_partitionnement|Plus d'informations sur le partitionnement]].

[[Image:44.jpeg]]


[[Image:45.jpeg]]

[[Image:46.jpeg]]

[[Image:47.jpeg]]

[[Image:48.jpeg]]

[[Image:49.jpeg]]

[[Image:50.jpeg]]

=== Installer le système de base ===

[[Image:51.jpeg]]

[[Image:52.jpeg]]

[[Image:53.jpeg]]

[[Image:54.jpeg]]

[[Image:55.jpeg]]

[[Image:56.jpeg]]

=== Créer les utilisateurs et choisir les mots de passe ===

[[Image:57.jpeg]]

[[Image:58.jpeg]]

[[Image:59.jpeg]]

[[Image:60.jpeg]]

[[Image:61.jpeg]]

[[Image:62.jpeg]]

[[Image:63.jpeg]]

[[Image:64.jpeg]]

[[Image:65.jpeg]]

[[Image:66.jpeg]]

=== Configurer l'outil de gestion des paquets ===

[[Image:67.jpeg]]

[[Image:68.jpeg]]

[[Image:69.jpeg]]

[[Image:70.jpeg]]

=== Choisir et installer des logiciels ===

[[Image:71.jpeg]]

[[Image:72.jpeg]]

[[Image:73.jpeg]]

[[Image:74.jpeg]]

=== Installer le programme de démarrage Grub sur un disque dur ===

[[Image:75.jpeg]]

[[Image:76.jpeg]]

[[Image:77.jpeg]]

[[Image:78.jpeg]]

=== Sauvegarder les journaux de débogage ===

[[Image:79.jpeg]]

[[Image:80.jpeg]]

[[Image:81.jpeg]]

=== Terminer l'installation ===

[[Image:82.jpeg]]

[[Image:83.jpeg]]

[[Image:84.jpeg]]

[[Image:85.jpeg]]

[[Image:87.jpeg]]

----
--[[Utilisateur:Lol|Lol]] 3 avril 2010 à 04:12 (UTC)

[[Catégorie:Installation]]</text>
      <sha1>lu856sircp4dymhehq36lrgj5stollv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3999</id>
      <parentid>3839</parentid>
      <timestamp>2012-03-27T11:59:26Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Prérequis */</comment>
      <text xml:space="preserve" bytes="6955">{{Ébauche|Installer Debian pas-à-pas}}

Ce document, au travers de captures d'écrans, détaillera pas-à-pas (de façon sommaire) l'installation d'une Debian Lenny à partir d'une image iso &quot;businesscard&quot;

== Prérequis ==

Téléchargement de l'image iso &quot;businesscard&quot;
Choisissez la businesscard (en mode expert) si vous souhaitez pouvoir choisir votre distribution (stable/testing/instable) Le choix &quot;businesscard&quot; et non &quot;netinst&quot; se justifie par la possibilité de choix offerte !
Vous pourrez également choisir votre window manager (gnome, kde, lxde, xfce)
Choisissez l'image en fonction de votre machine : i386 ou amd64 en général

 $ wget -c http://ftp.acc.umu.se/debian-cd/5.0.6/i386/iso-cd/debian-506-i386-businesscard.iso
Nouvelle version :
 $ wget -c http://cdimage.debian.org/debian-cd/6.0.4/amd64/iso-cd/debian-6.0.4-amd64-businesscard.iso



Vérifiez votre image iso à l'aide de [[Vérifier_le_md5_d'une_image_iso|'''md5sum''']]

Gravez l'image sur un CD(-RW).

== Installation ==

Modifier votre bios pour que votre machine démarre sur le lecteur de CD/DVD
Insérez le disque dans le lecteur et démarrez sur le CD

== Page d'accueil et choix de la méthode d'installation ==

Un menu s'offre à vous :

=== Installation===
*Install
*Graphical install
*Advanced options
*Help

====Install====
Ce choix installera (presque) automatiquement une Debian Lenny avec les options &quot;standards&quot;
====Graphical install====
Même chose que le choix ci-dessus, mais avec une interface graphique.
Peut s'avérer moins fiable, en fonction de votre matériel.
==== Advanced options====
C'est dans cette direction que nous allons...

====Help====
Divers fichiers d'aide sur les &quot;pré-requis&quot; à l'installation, les paramètres à passer au boot pour les machines un peu &quot;spéciales&quot;

====Exemple pour l'installation====
La taille des partitions.




[[Fichier:01 help.jpeg]]

== Installer boot menu ==

[[Image:01.jpeg]]

Le menu suivant offre des choix intéressants :

*Back...
*Expert Install
C'est cette option que nous choisirons, c'est celle qui laisse le plus de contrôle sur l'installation
*Rescue mode
Très utile si un jour votre machine ne démarre pas (cela permet de faire un chroot sur le système pour des réparations... Grub par exemple)
Permet d'ouvrir un shell sur la partition système.
*Automated install
Comme son nom l'indique, une installation automatique où vous n'interviendrez presque pas
Identique au choix Install de la première page.
*Graphical expert install
Identique à &quot;Expert install&quot; mais en mode graphique
*Graphical rescue mode
Identique à &quot;Rescue mode&quot; mais en mode graphique
*Graphical automated install
Identique à &quot;Automated install&quot; mais en mode graphique
*Alternative desktop environments
Option intéressante si vous souhaitez installer un autre bureau que Gnome (KDE, LXDE, XFCE).
Vous retrouverez dans les sous-menus l'ensemble des choix offerts ici.

[[Image:02.jpeg]]

=== Choisir la langue ===

[[Image:03.jpeg]]

[[Image:04.jpeg]]

[[Image:05.jpeg]]

[[Image:06.jpeg]]

[[Image:07.jpeg]]

[[Image:08.jpeg]]

[[Image:09.jpeg]]

=== Choisir la disposition du clavier ===

[[Image:10.jpeg]]

[[Image:11.jpeg]]

[[Image:12.jpeg]]

=== Détecter et monter le CD ===

[[Image:13.jpeg]]

Activer l'usb ? Laissez le choix par défaut : oui

[[Image:14.jpeg]]

pcmcia ? Cela dépendra de votre machine...
Inutile de démarrer ces services si vous n'en avez pas !
La question vous sera reposée à chaque fois qu'une détection de matériel est nécessaire.

[[Image:15.jpeg]]

[[Image:16.jpeg]]

=== Charger des composants d'installation à partir du CD ===

Bien que je n'ai choisi aucune des options de cette liste, je vous détaille rapidement quelques choix :

Peu de mémoire vive (lowmem)
Connexion ppp (par modem)
rescue mode
support ntfs
wireless tools

[[Image:17.jpeg]]

[[Image:18.jpeg]]

[[Image:19.jpeg]]

[[Image:20.jpeg]]

[[Image:21.jpeg]]

=== Détecter le matériel réseau ===

[[Image:22.jpeg]]

[[Image:23.jpeg]]

=== Configurer le réseau ===

Généralement vous êtes derrière un routeur ou une &quot;box&quot; qui doit vous fournir une adresse IP.
Vous laisserez donc l'option DHCP.

[[Image:24.jpeg]]

[[Image:25.jpeg]]

[[Image:26.jpeg]]

Nom de la machine :

[[Image:27.jpeg]]

Nom du domaine. Il doit vous être fourni par le serveur DHCP. Si ce n'est pas le cas, laissez vide

[[Image:28.jpeg]]

=== Choisir un miroir de l'archive Debian ===

[[Image:29.jpeg]]

[[Image:30.jpeg]]

Choisissez un miroir pour récupérer les paquets. Inutile que vos paquets fassent 12.000 Km, choisissez un miroir proche de chez vous.

[[Image:31.jpeg]]

[[Image:32.jpeg]]

[[Image:33.jpeg]]

A compléter si vous avez un proxy (pour ma part il s'agit d'un dépôt cache de paquets)

[[Image:34.jpeg]]

[[Image:35.jpeg]]

Un des points forts de la &quot;businesscard&quot; par rapport à une &quot;netinstall&quot;, le choix de la branche !

[[Image:36.jpeg]]

=== Configurer l'horloge ===

[[Image:37.jpeg]]

[[Image:38.jpeg]]

[[Image:39.jpeg]]

[[Image:40.jpeg]]

[[Image:41.jpeg]]

=== Détecter les disques ===

[[Image:42.jpeg]]

[[Image:43.jpeg]]

=== Partitionner les disques ===
Il s'agit de la configuration la plus simple:

je fais une parenthèse qui peut intéresser certaines configurations manuelles.

La taille est approximative, et devrait convenir à ceux qui veulent une machine de bureau avec un peu de confort

Le [ /boot ] 50mb  suffisent (100 mb c'est mieux) - Séparer la partition /boot n'est plus une nécessité.

La racine [ / ] 3 GIB (10 GB pour un bureaux)

Le répertoire des utilisateur [ /home ] ('''Il est très fortement conseillé de séparer cette partition''')

[[Le_partitionnement|Plus d'informations sur le partitionnement]].

[[Image:44.jpeg]]


[[Image:45.jpeg]]

[[Image:46.jpeg]]

[[Image:47.jpeg]]

[[Image:48.jpeg]]

[[Image:49.jpeg]]

[[Image:50.jpeg]]

=== Installer le système de base ===

[[Image:51.jpeg]]

[[Image:52.jpeg]]

[[Image:53.jpeg]]

[[Image:54.jpeg]]

[[Image:55.jpeg]]

[[Image:56.jpeg]]

=== Créer les utilisateurs et choisir les mots de passe ===

[[Image:57.jpeg]]

[[Image:58.jpeg]]

[[Image:59.jpeg]]

[[Image:60.jpeg]]

[[Image:61.jpeg]]

[[Image:62.jpeg]]

[[Image:63.jpeg]]

[[Image:64.jpeg]]

[[Image:65.jpeg]]

[[Image:66.jpeg]]

=== Configurer l'outil de gestion des paquets ===

[[Image:67.jpeg]]

[[Image:68.jpeg]]

[[Image:69.jpeg]]

[[Image:70.jpeg]]

=== Choisir et installer des logiciels ===

[[Image:71.jpeg]]

[[Image:72.jpeg]]

[[Image:73.jpeg]]

[[Image:74.jpeg]]

=== Installer le programme de démarrage Grub sur un disque dur ===

[[Image:75.jpeg]]

[[Image:76.jpeg]]

[[Image:77.jpeg]]

[[Image:78.jpeg]]

=== Sauvegarder les journaux de débogage ===

[[Image:79.jpeg]]

[[Image:80.jpeg]]

[[Image:81.jpeg]]

=== Terminer l'installation ===

[[Image:82.jpeg]]

[[Image:83.jpeg]]

[[Image:84.jpeg]]

[[Image:85.jpeg]]

[[Image:87.jpeg]]

----
--[[Utilisateur:Lol|Lol]] 3 avril 2010 à 04:12 (UTC)

[[Catégorie:Installation]]</text>
      <sha1>1graa12r9f5bym67tanvri97qrk6wel</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4495</id>
      <parentid>3999</parentid>
      <timestamp>2012-09-23T18:21:03Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Prérequis */</comment>
      <text xml:space="preserve" bytes="7059">{{Ébauche|Installer Debian pas-à-pas}}

Ce document, au travers de captures d'écrans, détaillera pas-à-pas (de façon sommaire) l'installation d'une Debian Lenny à partir d'une image iso &quot;businesscard&quot;

== Prérequis ==

Téléchargement de l'image iso &quot;businesscard&quot;
Choisissez la businesscard (en mode expert) si vous souhaitez pouvoir choisir votre distribution (stable/testing/instable) Le choix &quot;businesscard&quot; et non &quot;netinst&quot; se justifie par la possibilité de choix offerte ! (ce choix sera caduque à la sortie de la wheezy)
Vous pourrez également choisir votre window manager (gnome, kde, lxde, xfce)
Choisissez l'image en fonction de votre machine : i386 ou amd64 en général

 $ wget -c http://cdimage.debian.org/debian-cd/6.0.5/i386//iso-cd/debian-605-i386-businesscard.iso
Nouvelle version :
 $ wget -c http://cdimage.debian.org/debian-cd/6.0.5/amd64/iso-cd/debian-6.0.5-amd64-businesscard.iso


Vérifiez votre image iso à l'aide de [[Vérifier_le_md5_d'une_image_iso|'''md5sum''']]

Gravez l'image sur un CD(-RW).


http://cdimage.debian.org/debian-cd/6.0.5/i386/

== Installation ==

Modifier votre bios pour que votre machine démarre sur le lecteur de CD/DVD
Insérez le disque dans le lecteur et démarrez sur le CD

== Page d'accueil et choix de la méthode d'installation ==

Un menu s'offre à vous :

=== Installation===
*Install
*Graphical install
*Advanced options
*Help

====Install====
Ce choix installera (presque) automatiquement une Debian Lenny avec les options &quot;standards&quot;
====Graphical install====
Même chose que le choix ci-dessus, mais avec une interface graphique.
Peut s'avérer moins fiable, en fonction de votre matériel.
==== Advanced options====
C'est dans cette direction que nous allons...

====Help====
Divers fichiers d'aide sur les &quot;pré-requis&quot; à l'installation, les paramètres à passer au boot pour les machines un peu &quot;spéciales&quot;

====Exemple pour l'installation====
La taille des partitions.




[[Fichier:01 help.jpeg]]

== Installer boot menu ==

[[Image:01.jpeg]]

Le menu suivant offre des choix intéressants :

*Back...
*Expert Install
C'est cette option que nous choisirons, c'est celle qui laisse le plus de contrôle sur l'installation
*Rescue mode
Très utile si un jour votre machine ne démarre pas (cela permet de faire un chroot sur le système pour des réparations... Grub par exemple)
Permet d'ouvrir un shell sur la partition système.
*Automated install
Comme son nom l'indique, une installation automatique où vous n'interviendrez presque pas
Identique au choix Install de la première page.
*Graphical expert install
Identique à &quot;Expert install&quot; mais en mode graphique
*Graphical rescue mode
Identique à &quot;Rescue mode&quot; mais en mode graphique
*Graphical automated install
Identique à &quot;Automated install&quot; mais en mode graphique
*Alternative desktop environments
Option intéressante si vous souhaitez installer un autre bureau que Gnome (KDE, LXDE, XFCE).
Vous retrouverez dans les sous-menus l'ensemble des choix offerts ici.

[[Image:02.jpeg]]

=== Choisir la langue ===

[[Image:03.jpeg]]

[[Image:04.jpeg]]

[[Image:05.jpeg]]

[[Image:06.jpeg]]

[[Image:07.jpeg]]

[[Image:08.jpeg]]

[[Image:09.jpeg]]

=== Choisir la disposition du clavier ===

[[Image:10.jpeg]]

[[Image:11.jpeg]]

[[Image:12.jpeg]]

=== Détecter et monter le CD ===

[[Image:13.jpeg]]

Activer l'usb ? Laissez le choix par défaut : oui

[[Image:14.jpeg]]

pcmcia ? Cela dépendra de votre machine...
Inutile de démarrer ces services si vous n'en avez pas !
La question vous sera reposée à chaque fois qu'une détection de matériel est nécessaire.

[[Image:15.jpeg]]

[[Image:16.jpeg]]

=== Charger des composants d'installation à partir du CD ===

Bien que je n'ai choisi aucune des options de cette liste, je vous détaille rapidement quelques choix :

Peu de mémoire vive (lowmem)
Connexion ppp (par modem)
rescue mode
support ntfs
wireless tools

[[Image:17.jpeg]]

[[Image:18.jpeg]]

[[Image:19.jpeg]]

[[Image:20.jpeg]]

[[Image:21.jpeg]]

=== Détecter le matériel réseau ===

[[Image:22.jpeg]]

[[Image:23.jpeg]]

=== Configurer le réseau ===

Généralement vous êtes derrière un routeur ou une &quot;box&quot; qui doit vous fournir une adresse IP.
Vous laisserez donc l'option DHCP.

[[Image:24.jpeg]]

[[Image:25.jpeg]]

[[Image:26.jpeg]]

Nom de la machine :

[[Image:27.jpeg]]

Nom du domaine. Il doit vous être fourni par le serveur DHCP. Si ce n'est pas le cas, laissez vide

[[Image:28.jpeg]]

=== Choisir un miroir de l'archive Debian ===

[[Image:29.jpeg]]

[[Image:30.jpeg]]

Choisissez un miroir pour récupérer les paquets. Inutile que vos paquets fassent 12.000 Km, choisissez un miroir proche de chez vous.

[[Image:31.jpeg]]

[[Image:32.jpeg]]

[[Image:33.jpeg]]

A compléter si vous avez un proxy (pour ma part il s'agit d'un dépôt cache de paquets)

[[Image:34.jpeg]]

[[Image:35.jpeg]]

Un des points forts de la &quot;businesscard&quot; par rapport à une &quot;netinstall&quot;, le choix de la branche !

[[Image:36.jpeg]]

=== Configurer l'horloge ===

[[Image:37.jpeg]]

[[Image:38.jpeg]]

[[Image:39.jpeg]]

[[Image:40.jpeg]]

[[Image:41.jpeg]]

=== Détecter les disques ===

[[Image:42.jpeg]]

[[Image:43.jpeg]]

=== Partitionner les disques ===
Il s'agit de la configuration la plus simple:

je fais une parenthèse qui peut intéresser certaines configurations manuelles.

La taille est approximative, et devrait convenir à ceux qui veulent une machine de bureau avec un peu de confort

Le [ /boot ] 50mb  suffisent (100 mb c'est mieux) - Séparer la partition /boot n'est plus une nécessité.

La racine [ / ] 3 GIB (10 GB pour un bureaux)

Le répertoire des utilisateur [ /home ] ('''Il est très fortement conseillé de séparer cette partition''')

[[Le_partitionnement|Plus d'informations sur le partitionnement]].

[[Image:44.jpeg]]


[[Image:45.jpeg]]

[[Image:46.jpeg]]

[[Image:47.jpeg]]

[[Image:48.jpeg]]

[[Image:49.jpeg]]

[[Image:50.jpeg]]

=== Installer le système de base ===

[[Image:51.jpeg]]

[[Image:52.jpeg]]

[[Image:53.jpeg]]

[[Image:54.jpeg]]

[[Image:55.jpeg]]

[[Image:56.jpeg]]

=== Créer les utilisateurs et choisir les mots de passe ===

[[Image:57.jpeg]]

[[Image:58.jpeg]]

[[Image:59.jpeg]]

[[Image:60.jpeg]]

[[Image:61.jpeg]]

[[Image:62.jpeg]]

[[Image:63.jpeg]]

[[Image:64.jpeg]]

[[Image:65.jpeg]]

[[Image:66.jpeg]]

=== Configurer l'outil de gestion des paquets ===

[[Image:67.jpeg]]

[[Image:68.jpeg]]

[[Image:69.jpeg]]

[[Image:70.jpeg]]

=== Choisir et installer des logiciels ===

[[Image:71.jpeg]]

[[Image:72.jpeg]]

[[Image:73.jpeg]]

[[Image:74.jpeg]]

=== Installer le programme de démarrage Grub sur un disque dur ===

[[Image:75.jpeg]]

[[Image:76.jpeg]]

[[Image:77.jpeg]]

[[Image:78.jpeg]]

=== Sauvegarder les journaux de débogage ===

[[Image:79.jpeg]]

[[Image:80.jpeg]]

[[Image:81.jpeg]]

=== Terminer l'installation ===

[[Image:82.jpeg]]

[[Image:83.jpeg]]

[[Image:84.jpeg]]

[[Image:85.jpeg]]

[[Image:87.jpeg]]

----
--[[Utilisateur:Lol|Lol]] 3 avril 2010 à 04:12 (UTC)

[[Catégorie:Installation]]</text>
      <sha1>8sijliwqkjcy8cz7ngrdfa7aslhk9qd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Installer aptosid</title>
    <ns>0</ns>
    <id>528</id>
    <revision>
      <id>2134</id>
      <timestamp>2010-09-29T15:39:53Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « &lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt; '''/!\''' Ce document n'a pas été validé par la communauté. Soyez ... »</comment>
      <text xml:space="preserve" bytes="6917">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


Installer Aptosid

== 1 – Pourquoi celle là et pas la vraie Sid ==

Vous êtes tentés par l'installation d'une sid mais vous avez un peu peur de ne pas être à la hauteur.

Bien sûr le forum est là mais si vous pouviez avoir quelqu'un derrière vous pour vous guider ce serait mieux.

A défaut d'avoir quelqu'un derrière je vous propose une sid revue et corrigée par de grands développeurs.

J'ai nommé «&amp;nbsp;aptosid&amp;nbsp;» (précédemment sidux). Ce sont les mêmes développeurs, seul le nom a changé.

En plus de sa «&amp;nbsp;presque&amp;nbsp;» stabilité, nous n'aurons pas à nous soucier de sa francisation, et si nous n'avons pas trop de matériel exotique tout va fonctionner dès l'installation. Son mode «&amp;nbsp;live&amp;nbsp;» va d'ailleurs nous permettre de vérifier avant que c'est vrai.

Bien sûr avant de graver votre cd-live vous avez vérifié le md5 du télé-chargement et celui de la gravure.

Il n'est nullement obligatoire de choisir LVM, ni EXT4, ni ma manière de dénommer les volumes, pas même de suivre mon découpage pour que le mode d'emploi cesse d'être valable.

Et si vous n'aimez pas KDE il existe une version XFCE bien plus légère. 

* 1-1 – L'ordinateur : vous avez environ 15 Go de disponible en un ou plusieurs morceaux (partitions primaires et/ou logiques) sur un ou plusieurs disques.

* 1-2 – Comme toutes les sid il est hors de question de la mettre à jour une fois de temps en temps sous peine de dégats. Une sid cela s'entretient journellement.

== 2 – Les options choisies ==

* 2-1 Sudo, mais pas celui des autres, un sudo sécurisé par quelques options, dont la première est que l'utilisateur responsable ait un vrai mot de passe, pas le nom de mon chien « Pataud » ==

* 2-2 Le couple smxi/sgfxi pour ne pas remettre au lendemain la partie fastidieuse des mises à jour que l'on remet sans cesse au lendemain et pour ne pas scier la branche sur laquelle on est assis (mettre à jour la partie graphique pendant qu'elle est active). ==

* 2-3 Séparer nettement en volumes logiques séparés, ce qui seras conservé dans tous les cas, ce qui peut provoquer des blocages systèmes, et le système lui même. ==

* 2-4 Opter pour le dernier système de fichier ext connu alors que Netinstall ou Businesscard stable ne le gère pas encore  ==

== 3 Système de volumes logiques (lvm2) ==

* 3-1 pvcreate /dev/sdXY /dev/sdYZ « vg_name »… initialise tous les morceaux que vous avez pu glaner sur vos disques

* 3-2 vgcreate regroupe tous ces morceaux en un espace virtuel que nous allons pouvoir découper en volume logique, l'équivalent des anciennes partitions, sans avoir ces fameuses limitations.

* 3-3 lvcreate -L5G -n « lv_name » vg_name créé un volume de 5 Go nommé lv_name dans vg_name

* 3-4 Ma notation des noms de volume et leur taille

lv_root1 Go

lv_usr8 GoPour avoir l'avenir devant moi

lv_var3 GoPour éviter les «&amp;nbsp;DDOS&amp;nbsp;» des logs

lv_tmp5 GoPour le download d'un dvd

lv_opt1 GoPour y mettre les drivers de vieux matériels

lv_home6 Go

lv_swap1 GoA agrandir a la taille de la RAM pour mettre en sommeil 

Soit un total de 19 Go sans compter /home ou 25 en tout

* 3-5 Formater

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name&lt;/nowiki&gt;

* 3-6 Lancer l'installation

Comme d'habitude vous aurez à choisir la langue, les mots de passe, le nom de la machine, l'emplacement du grub&amp;nbsp;: Si vous ne choisissez pas le MBR ne venez pas vous plaindre. Si d'autres systèmes cohabitent avec celui-ci ils seront reconnus et vous les aurez au menu.

* 3-7 Cas particulier de réinstallation (le bug de la chaise au clavier)

Seuls les volumes root, usr, var, tmp sont à formater 

== 4-0 Marche à suivre. ==

* 4-1 Démarrer le cd-live

Ouvrir une console et modifier son profile si nécessaire

 $ su &lt;nowiki&gt;==&gt; on devient root&lt;/nowiki&gt;

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name (root, usr, var, tmp …)&lt;/nowiki&gt;

* 4-2 Lancer l'installation

Désigner les différentes partitions dans les cases prévues à cet effet

Si vous avez choisi le français, seuls les expatriés auront à rectifier le fuseau horaire

Un mot de passe root

Un utilisateur inexistant précédemment dans home et un mot de passe

Un nom pour votre machine

Lancer l'installation.

Dans quelques minutes elle sera terminée.

* 4-3 Lancer la nouvelle installation

Au menu «&amp;nbsp;grub&amp;nbsp;» entrer E pour editer le menu.

Sur la ligne «&amp;nbsp;linux&amp;nbsp;» après le «&amp;nbsp;quiet&amp;nbsp;» ajouter un 3 (c'est le level multi user en console)

CTRL + x pour démarrer

* 4-4 C'est à root de jouer

On se connecte en root avec son MDP

&lt;nowiki&gt;# apt-get update&lt;/nowiki&gt;

&lt;nowiki&gt;# apt-get install apt-listbugs (avant tout le monde)&lt;/nowiki&gt;

&lt;nowiki&gt;# apt-get install aptitude (si l'on est un fan pour que tout le reste soit homogène) et à &lt;/nowiki&gt;

condition que aptitude ne soit pas buguée 

&lt;nowiki&gt;# aptitude install nano (yakuake numlockx linuxlogo)&lt;/nowiki&gt;

&lt;nowiki&gt;# nano /etc/sudoers&lt;/nowiki&gt;

Defaults:ALLtty_tickets''','''timestamp_timeout=0


«&amp;nbsp;vous&amp;nbsp;»ALL=(ALL) ALL

&lt;nowiki&gt;# userdel -r «&amp;nbsp;user_fictif&amp;nbsp;»&lt;/nowiki&gt;

&lt;nowiki&gt;# adduser «&amp;nbsp;vous&amp;nbsp;»&lt;/nowiki&gt;

&lt;nowiki&gt;# cd /usr/bin/local/ &amp;&amp; wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip&lt;/nowiki&gt;

&lt;nowiki&gt;# exit&lt;/nowiki&gt;Si tout se passe bien root n'est pas près d'avoir la main mais vous serez obligé de donner votre MDP à tout bout de champ car il n'est valable que dans une seule console et pour une seule opération.

* 4-5 C'est à vous de jouer

 $ sudo nano /etc/hosts pour rétablir la liste des hosts

 $ sudo smxi -e (upgrade du kernel) et reboot sur le nouveau (n'oubliez pas le 3)

 $ sudo smxi -e upgrade, nettoyage des paquets inutiles, installation graphique …

Profitez de ce laps de temps pour générer les clés ssh, la génération étant d'autant plus rapide que la circulation des informations est intense sur le bus (ALT + F2)

Démarrer la session graphique et servez vous de yakuake comme console, vous allez voir&amp;nbsp;!

Bon F12 

 $ sudo aptitude install iceweasel iceweasel-l10n-fr icedove icedove-l10n-fr sysv-rc-conf kde-&amp;nbsp;10n-fr apt-file openssh-server

 $ sudo /etc/init.d/ssh start

 $ sudo nano /etc/modprobe.d/alsa-base.conf

 options snd-hda-intel model-auto

A ce stade utiliser les drivers de opt pour finir d'installer vos périphériques exotiques


Vous devriez avoir une machine presque fonctionnelle:D

[[Catégorie:Installation]]</text>
      <sha1>fld61gbvq9awl0q8i2luklhgdv0v4wy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2135</id>
      <parentid>2134</parentid>
      <timestamp>2010-09-29T17:22:46Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* 2 – Les options choisies */</comment>
      <text xml:space="preserve" bytes="6919">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


Installer Aptosid

== 1 – Pourquoi celle là et pas la vraie Sid ==

Vous êtes tentés par l'installation d'une sid mais vous avez un peu peur de ne pas être à la hauteur.

Bien sûr le forum est là mais si vous pouviez avoir quelqu'un derrière vous pour vous guider ce serait mieux.

A défaut d'avoir quelqu'un derrière je vous propose une sid revue et corrigée par de grands développeurs.

J'ai nommé «&amp;nbsp;aptosid&amp;nbsp;» (précédemment sidux). Ce sont les mêmes développeurs, seul le nom a changé.

En plus de sa «&amp;nbsp;presque&amp;nbsp;» stabilité, nous n'aurons pas à nous soucier de sa francisation, et si nous n'avons pas trop de matériel exotique tout va fonctionner dès l'installation. Son mode «&amp;nbsp;live&amp;nbsp;» va d'ailleurs nous permettre de vérifier avant que c'est vrai.

Bien sûr avant de graver votre cd-live vous avez vérifié le md5 du télé-chargement et celui de la gravure.

Il n'est nullement obligatoire de choisir LVM, ni EXT4, ni ma manière de dénommer les volumes, pas même de suivre mon découpage pour que le mode d'emploi cesse d'être valable.

Et si vous n'aimez pas KDE il existe une version XFCE bien plus légère. 

* 1-1 – L'ordinateur : vous avez environ 15 Go de disponible en un ou plusieurs morceaux (partitions primaires et/ou logiques) sur un ou plusieurs disques.

* 1-2 – Comme toutes les sid il est hors de question de la mettre à jour une fois de temps en temps sous peine de dégats. Une sid cela s'entretient journellement.

== 2 – Les options choisies ==

* 2-1 Sudo, mais pas celui des autres, un sudo sécurisé par quelques options, dont la première est que l'utilisateur responsable ait un vrai mot de passe, pas le nom de mon chien « Pataud » ==

* 2-2 Le couple smxi/sgfxi pour ne pas remettre à plus tard la partie fastidieuse des mises à jour que l'on repousse sans cesse au lendemain et pour ne pas scier la branche sur laquelle on est assis (mettre à jour la partie graphique pendant qu'elle est active). ==

* 2-3 Séparer nettement en volumes logiques séparés, ce qui sera conservé dans tous les cas, ce qui peut provoquer des blocages systèmes, et le système lui même. ==

* 2-4 Opter pour le dernier système de fichier ext connu alors que Netinstall ou Businesscard stable ne le gère pas encore  ==

== 3 Système de volumes logiques (lvm2) ==

* 3-1 pvcreate /dev/sdXY /dev/sdYZ « vg_name »… initialise tous les morceaux que vous avez pu glaner sur vos disques

* 3-2 vgcreate regroupe tous ces morceaux en un espace virtuel que nous allons pouvoir découper en volume logique, l'équivalent des anciennes partitions, sans avoir ces fameuses limitations.

* 3-3 lvcreate -L5G -n « lv_name » vg_name créé un volume de 5 Go nommé lv_name dans vg_name

* 3-4 Ma notation des noms de volume et leur taille

lv_root1 Go

lv_usr8 GoPour avoir l'avenir devant moi

lv_var3 GoPour éviter les «&amp;nbsp;DDOS&amp;nbsp;» des logs

lv_tmp5 GoPour le download d'un dvd

lv_opt1 GoPour y mettre les drivers de vieux matériels

lv_home6 Go

lv_swap1 GoA agrandir a la taille de la RAM pour mettre en sommeil 

Soit un total de 19 Go sans compter /home ou 25 en tout

* 3-5 Formater

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name&lt;/nowiki&gt;

* 3-6 Lancer l'installation

Comme d'habitude vous aurez à choisir la langue, les mots de passe, le nom de la machine, l'emplacement du grub&amp;nbsp;: Si vous ne choisissez pas le MBR ne venez pas vous plaindre. Si d'autres systèmes cohabitent avec celui-ci ils seront reconnus et vous les aurez au menu.

* 3-7 Cas particulier de réinstallation (le bug de la chaise au clavier)

Seuls les volumes root, usr, var, tmp sont à formater 

== 4-0 Marche à suivre. ==

* 4-1 Démarrer le cd-live

Ouvrir une console et modifier son profile si nécessaire

 $ su &lt;nowiki&gt;==&gt; on devient root&lt;/nowiki&gt;

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name (root, usr, var, tmp …)&lt;/nowiki&gt;

* 4-2 Lancer l'installation

Désigner les différentes partitions dans les cases prévues à cet effet

Si vous avez choisi le français, seuls les expatriés auront à rectifier le fuseau horaire

Un mot de passe root

Un utilisateur inexistant précédemment dans home et un mot de passe

Un nom pour votre machine

Lancer l'installation.

Dans quelques minutes elle sera terminée.

* 4-3 Lancer la nouvelle installation

Au menu «&amp;nbsp;grub&amp;nbsp;» entrer E pour editer le menu.

Sur la ligne «&amp;nbsp;linux&amp;nbsp;» après le «&amp;nbsp;quiet&amp;nbsp;» ajouter un 3 (c'est le level multi user en console)

CTRL + x pour démarrer

* 4-4 C'est à root de jouer

On se connecte en root avec son MDP

&lt;nowiki&gt;# apt-get update&lt;/nowiki&gt;

&lt;nowiki&gt;# apt-get install apt-listbugs (avant tout le monde)&lt;/nowiki&gt;

&lt;nowiki&gt;# apt-get install aptitude (si l'on est un fan pour que tout le reste soit homogène) et à &lt;/nowiki&gt;

condition que aptitude ne soit pas buguée 

&lt;nowiki&gt;# aptitude install nano (yakuake numlockx linuxlogo)&lt;/nowiki&gt;

&lt;nowiki&gt;# nano /etc/sudoers&lt;/nowiki&gt;

Defaults:ALLtty_tickets''','''timestamp_timeout=0


«&amp;nbsp;vous&amp;nbsp;»ALL=(ALL) ALL

&lt;nowiki&gt;# userdel -r «&amp;nbsp;user_fictif&amp;nbsp;»&lt;/nowiki&gt;

&lt;nowiki&gt;# adduser «&amp;nbsp;vous&amp;nbsp;»&lt;/nowiki&gt;

&lt;nowiki&gt;# cd /usr/bin/local/ &amp;&amp; wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip&lt;/nowiki&gt;

&lt;nowiki&gt;# exit&lt;/nowiki&gt;Si tout se passe bien root n'est pas près d'avoir la main mais vous serez obligé de donner votre MDP à tout bout de champ car il n'est valable que dans une seule console et pour une seule opération.

* 4-5 C'est à vous de jouer

 $ sudo nano /etc/hosts pour rétablir la liste des hosts

 $ sudo smxi -e (upgrade du kernel) et reboot sur le nouveau (n'oubliez pas le 3)

 $ sudo smxi -e upgrade, nettoyage des paquets inutiles, installation graphique …

Profitez de ce laps de temps pour générer les clés ssh, la génération étant d'autant plus rapide que la circulation des informations est intense sur le bus (ALT + F2)

Démarrer la session graphique et servez vous de yakuake comme console, vous allez voir&amp;nbsp;!

Bon F12 

 $ sudo aptitude install iceweasel iceweasel-l10n-fr icedove icedove-l10n-fr sysv-rc-conf kde-&amp;nbsp;10n-fr apt-file openssh-server

 $ sudo /etc/init.d/ssh start

 $ sudo nano /etc/modprobe.d/alsa-base.conf

 options snd-hda-intel model-auto

A ce stade utiliser les drivers de opt pour finir d'installer vos périphériques exotiques


Vous devriez avoir une machine presque fonctionnelle:D

[[Catégorie:Installation]]</text>
      <sha1>npwqr6caw6o5il3sg6rd4v8ohrwv9lp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2136</id>
      <parentid>2135</parentid>
      <timestamp>2010-09-29T17:26:27Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* 3 Système de volumes logiques (lvm2) */</comment>
      <text xml:space="preserve" bytes="6943">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


Installer Aptosid

== 1 – Pourquoi celle là et pas la vraie Sid ==

Vous êtes tentés par l'installation d'une sid mais vous avez un peu peur de ne pas être à la hauteur.

Bien sûr le forum est là mais si vous pouviez avoir quelqu'un derrière vous pour vous guider ce serait mieux.

A défaut d'avoir quelqu'un derrière je vous propose une sid revue et corrigée par de grands développeurs.

J'ai nommé «&amp;nbsp;aptosid&amp;nbsp;» (précédemment sidux). Ce sont les mêmes développeurs, seul le nom a changé.

En plus de sa «&amp;nbsp;presque&amp;nbsp;» stabilité, nous n'aurons pas à nous soucier de sa francisation, et si nous n'avons pas trop de matériel exotique tout va fonctionner dès l'installation. Son mode «&amp;nbsp;live&amp;nbsp;» va d'ailleurs nous permettre de vérifier avant que c'est vrai.

Bien sûr avant de graver votre cd-live vous avez vérifié le md5 du télé-chargement et celui de la gravure.

Il n'est nullement obligatoire de choisir LVM, ni EXT4, ni ma manière de dénommer les volumes, pas même de suivre mon découpage pour que le mode d'emploi cesse d'être valable.

Et si vous n'aimez pas KDE il existe une version XFCE bien plus légère. 

* 1-1 – L'ordinateur : vous avez environ 15 Go de disponible en un ou plusieurs morceaux (partitions primaires et/ou logiques) sur un ou plusieurs disques.

* 1-2 – Comme toutes les sid il est hors de question de la mettre à jour une fois de temps en temps sous peine de dégats. Une sid cela s'entretient journellement.

== 2 – Les options choisies ==

* 2-1 Sudo, mais pas celui des autres, un sudo sécurisé par quelques options, dont la première est que l'utilisateur responsable ait un vrai mot de passe, pas le nom de mon chien « Pataud » ==

* 2-2 Le couple smxi/sgfxi pour ne pas remettre à plus tard la partie fastidieuse des mises à jour que l'on repousse sans cesse au lendemain et pour ne pas scier la branche sur laquelle on est assis (mettre à jour la partie graphique pendant qu'elle est active). ==

* 2-3 Séparer nettement en volumes logiques séparés, ce qui sera conservé dans tous les cas, ce qui peut provoquer des blocages systèmes, et le système lui même. ==

* 2-4 Opter pour le dernier système de fichier ext connu alors que Netinstall ou Businesscard stable ne le gère pas encore  ==

== 3 Système de volumes logiques (lvm2) ==

* 3-1 pvcreate /dev/sdXY /dev/sdYZ « vg_name »… initialise tous les morceaux que vous avez pu glaner sur vos disques

* 3-2 vgcreate regroupe tous ces morceaux en un espace virtuel que nous allons pouvoir découper en volume logique, l'équivalent des anciennes partitions, sans avoir ces fameuses limitations.

* 3-3 lvcreate -L5G -n « lv_name »  vg_name créé un volume de 5 Go nommé lv_name dans vg_name

* 3-4 Ma notation des noms de volume et leur taille

lv_root  1 Go

lv_usr   8 Go Pour avoir l'avenir devant moi

lv_var   3 Go Pour éviter les «&amp;nbsp;DDOS&amp;nbsp;» des logs

lv_tmp   5 Go Pour le download d'un dvd

lv_opt   1 Go Pour y mettre les drivers de vieux matériels

lv_home  6 Go

lv_swap  1 Go A agrandir à la taille de la RAM pour mettre en sommeil 

Soit un total de 19 Go sans compter /home ou 25 en tout

* 3-5 Formater

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name&lt;/nowiki&gt;

* 3-6 Lancer l'installation

Comme d'habitude vous aurez à choisir la langue, les mots de passe, le nom de la machine, l'emplacement du grub&amp;nbsp;: Si vous ne choisissez pas le MBR ne venez pas vous plaindre. Si d'autres systèmes cohabitent avec celui-ci ils seront reconnus et vous les aurez au menu.

* 3-7 Cas particulier de réinstallation (le bug de la chaise au clavier)

Seuls les volumes root, usr, var, tmp sont à formater

== 4-0 Marche à suivre. ==

* 4-1 Démarrer le cd-live

Ouvrir une console et modifier son profile si nécessaire

 $ su &lt;nowiki&gt;==&gt; on devient root&lt;/nowiki&gt;

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name (root, usr, var, tmp …)&lt;/nowiki&gt;

* 4-2 Lancer l'installation

Désigner les différentes partitions dans les cases prévues à cet effet

Si vous avez choisi le français, seuls les expatriés auront à rectifier le fuseau horaire

Un mot de passe root

Un utilisateur inexistant précédemment dans home et un mot de passe

Un nom pour votre machine

Lancer l'installation.

Dans quelques minutes elle sera terminée.

* 4-3 Lancer la nouvelle installation

Au menu «&amp;nbsp;grub&amp;nbsp;» entrer E pour editer le menu.

Sur la ligne «&amp;nbsp;linux&amp;nbsp;» après le «&amp;nbsp;quiet&amp;nbsp;» ajouter un 3 (c'est le level multi user en console)

CTRL + x pour démarrer

* 4-4 C'est à root de jouer

On se connecte en root avec son MDP

&lt;nowiki&gt;# apt-get update&lt;/nowiki&gt;

&lt;nowiki&gt;# apt-get install apt-listbugs (avant tout le monde)&lt;/nowiki&gt;

&lt;nowiki&gt;# apt-get install aptitude (si l'on est un fan pour que tout le reste soit homogène) et à &lt;/nowiki&gt;

condition que aptitude ne soit pas buguée 

&lt;nowiki&gt;# aptitude install nano (yakuake numlockx linuxlogo)&lt;/nowiki&gt;

&lt;nowiki&gt;# nano /etc/sudoers&lt;/nowiki&gt;

Defaults:ALLtty_tickets''','''timestamp_timeout=0


«&amp;nbsp;vous&amp;nbsp;»ALL=(ALL) ALL

&lt;nowiki&gt;# userdel -r «&amp;nbsp;user_fictif&amp;nbsp;»&lt;/nowiki&gt;

&lt;nowiki&gt;# adduser «&amp;nbsp;vous&amp;nbsp;»&lt;/nowiki&gt;

&lt;nowiki&gt;# cd /usr/bin/local/ &amp;&amp; wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip&lt;/nowiki&gt;

&lt;nowiki&gt;# exit&lt;/nowiki&gt;Si tout se passe bien root n'est pas près d'avoir la main mais vous serez obligé de donner votre MDP à tout bout de champ car il n'est valable que dans une seule console et pour une seule opération.

* 4-5 C'est à vous de jouer

 $ sudo nano /etc/hosts pour rétablir la liste des hosts

 $ sudo smxi -e (upgrade du kernel) et reboot sur le nouveau (n'oubliez pas le 3)

 $ sudo smxi -e upgrade, nettoyage des paquets inutiles, installation graphique …

Profitez de ce laps de temps pour générer les clés ssh, la génération étant d'autant plus rapide que la circulation des informations est intense sur le bus (ALT + F2)

Démarrer la session graphique et servez vous de yakuake comme console, vous allez voir&amp;nbsp;!

Bon F12 

 $ sudo aptitude install iceweasel iceweasel-l10n-fr icedove icedove-l10n-fr sysv-rc-conf kde-&amp;nbsp;10n-fr apt-file openssh-server

 $ sudo /etc/init.d/ssh start

 $ sudo nano /etc/modprobe.d/alsa-base.conf

 options snd-hda-intel model-auto

A ce stade utiliser les drivers de opt pour finir d'installer vos périphériques exotiques


Vous devriez avoir une machine presque fonctionnelle:D

[[Catégorie:Installation]]</text>
      <sha1>6m8osck22ovb0yimgb6yllg1clpw5x4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2137</id>
      <parentid>2136</parentid>
      <timestamp>2010-09-29T17:31:24Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* 4-0 Marche à suivre. */</comment>
      <text xml:space="preserve" bytes="6948">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


Installer Aptosid

== 1 – Pourquoi celle là et pas la vraie Sid ==

Vous êtes tentés par l'installation d'une sid mais vous avez un peu peur de ne pas être à la hauteur.

Bien sûr le forum est là mais si vous pouviez avoir quelqu'un derrière vous pour vous guider ce serait mieux.

A défaut d'avoir quelqu'un derrière je vous propose une sid revue et corrigée par de grands développeurs.

J'ai nommé «&amp;nbsp;aptosid&amp;nbsp;» (précédemment sidux). Ce sont les mêmes développeurs, seul le nom a changé.

En plus de sa «&amp;nbsp;presque&amp;nbsp;» stabilité, nous n'aurons pas à nous soucier de sa francisation, et si nous n'avons pas trop de matériel exotique tout va fonctionner dès l'installation. Son mode «&amp;nbsp;live&amp;nbsp;» va d'ailleurs nous permettre de vérifier avant que c'est vrai.

Bien sûr avant de graver votre cd-live vous avez vérifié le md5 du télé-chargement et celui de la gravure.

Il n'est nullement obligatoire de choisir LVM, ni EXT4, ni ma manière de dénommer les volumes, pas même de suivre mon découpage pour que le mode d'emploi cesse d'être valable.

Et si vous n'aimez pas KDE il existe une version XFCE bien plus légère. 

* 1-1 – L'ordinateur : vous avez environ 15 Go de disponible en un ou plusieurs morceaux (partitions primaires et/ou logiques) sur un ou plusieurs disques.

* 1-2 – Comme toutes les sid il est hors de question de la mettre à jour une fois de temps en temps sous peine de dégats. Une sid cela s'entretient journellement.

== 2 – Les options choisies ==

* 2-1 Sudo, mais pas celui des autres, un sudo sécurisé par quelques options, dont la première est que l'utilisateur responsable ait un vrai mot de passe, pas le nom de mon chien « Pataud » ==

* 2-2 Le couple smxi/sgfxi pour ne pas remettre à plus tard la partie fastidieuse des mises à jour que l'on repousse sans cesse au lendemain et pour ne pas scier la branche sur laquelle on est assis (mettre à jour la partie graphique pendant qu'elle est active). ==

* 2-3 Séparer nettement en volumes logiques séparés, ce qui sera conservé dans tous les cas, ce qui peut provoquer des blocages systèmes, et le système lui même. ==

* 2-4 Opter pour le dernier système de fichier ext connu alors que Netinstall ou Businesscard stable ne le gère pas encore  ==

== 3 Système de volumes logiques (lvm2) ==

* 3-1 pvcreate /dev/sdXY /dev/sdYZ « vg_name »… initialise tous les morceaux que vous avez pu glaner sur vos disques

* 3-2 vgcreate regroupe tous ces morceaux en un espace virtuel que nous allons pouvoir découper en volume logique, l'équivalent des anciennes partitions, sans avoir ces fameuses limitations.

* 3-3 lvcreate -L5G -n « lv_name »  vg_name créé un volume de 5 Go nommé lv_name dans vg_name

* 3-4 Ma notation des noms de volume et leur taille

lv_root  1 Go

lv_usr   8 Go Pour avoir l'avenir devant moi

lv_var   3 Go Pour éviter les «&amp;nbsp;DDOS&amp;nbsp;» des logs

lv_tmp   5 Go Pour le download d'un dvd

lv_opt   1 Go Pour y mettre les drivers de vieux matériels

lv_home  6 Go

lv_swap  1 Go A agrandir à la taille de la RAM pour mettre en sommeil 

Soit un total de 19 Go sans compter /home ou 25 en tout

* 3-5 Formater

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name&lt;/nowiki&gt;

* 3-6 Lancer l'installation

Comme d'habitude vous aurez à choisir la langue, les mots de passe, le nom de la machine, l'emplacement du grub&amp;nbsp;: Si vous ne choisissez pas le MBR ne venez pas vous plaindre. Si d'autres systèmes cohabitent avec celui-ci ils seront reconnus et vous les aurez au menu.

* 3-7 Cas particulier de réinstallation (le bug de la chaise au clavier)

Seuls les volumes root, usr, var, tmp sont à formater

== 4-0 Marche à suivre. ==

* 4-1 Démarrer le cd-live

Ouvrir une console et modifier son profil si nécessaire

 $ su &lt;nowiki&gt;==&gt; on devient root&lt;/nowiki&gt;

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name (root, usr, var, tmp …)&lt;/nowiki&gt;

* 4-2 Lancer l'installation

Désigner les différentes partitions dans les cases prévues à cet effet

Si vous avez choisi le français, seuls les expatriés auront à rectifier le fuseau horaire

Un mot de passe root

Un utilisateur inexistant précédemment dans home et un mot de passe

Un nom pour votre machine

Lancer l'installation.

Dans quelques minutes elle sera terminée.

* 4-3 Lancer la nouvelle installation

Au menu «&amp;nbsp;grub&amp;nbsp;» entrer E pour éditer le menu.

Sur la ligne «&amp;nbsp;linux&amp;nbsp;» après le «&amp;nbsp;quiet&amp;nbsp;» ajouter un 3 (c'est le level multi user en console)

CTRL + x pour démarrer

* 4-4 C'est à root de jouer

On se connecte en root avec son MDP

&lt;nowiki&gt;# apt-get update&lt;/nowiki&gt;

&lt;nowiki&gt;# apt-get install apt-listbugs (avant tout le monde)&lt;/nowiki&gt;

&lt;nowiki&gt;# apt-get install aptitude (si l'on est un fan pour que tout le reste soit homogène) et à &lt;/nowiki&gt;

condition que aptitude ne soit pas buguée 

&lt;nowiki&gt;# aptitude install nano (yakuake numlockx linuxlogo)&lt;/nowiki&gt;

&lt;nowiki&gt;# nano /etc/sudoers&lt;/nowiki&gt;

Defaults:ALL   tty_tickets''','''timestamp_timeout=0


«&amp;nbsp;vous&amp;nbsp;»  ALL=(ALL) ALL

&lt;nowiki&gt;# userdel -r «&amp;nbsp;user_fictif&amp;nbsp;»&lt;/nowiki&gt;

&lt;nowiki&gt;# adduser «&amp;nbsp;vous&amp;nbsp;»&lt;/nowiki&gt;

&lt;nowiki&gt;# cd /usr/bin/local/ &amp;&amp; wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip&lt;/nowiki&gt;

&lt;nowiki&gt;# exit&lt;/nowiki&gt;Si tout se passe bien root n'est pas près d'avoir la main mais vous serez obligé de donner votre MDP à tout bout de champ car il n'est valable que dans une seule console et pour une seule opération.

* 4-5 C'est à vous de jouer

 $ sudo nano /etc/hosts pour rétablir la liste des hosts

 $ sudo smxi -e (upgrade du kernel) et reboot sur le nouveau (n'oubliez pas le 3)

 $ sudo smxi -e upgrade, nettoyage des paquets inutiles, installation graphique …

Profitez de ce laps de temps pour générer les clés ssh, la génération étant d'autant plus rapide que la circulation des informations est intense sur le bus (ALT + F2)

Démarrer la session graphique et servez vous de yakuake comme console, vous allez voir&amp;nbsp;!

Bon F12 

 $ sudo aptitude install iceweasel iceweasel-l10n-fr icedove icedove-l10n-fr sysv-rc-conf kde-&amp;nbsp;10n-fr apt-file openssh-server

 $ sudo /etc/init.d/ssh start

 $ sudo nano /etc/modprobe.d/alsa-base.conf

 options snd-hda-intel model-auto

A ce stade utiliser les drivers de opt pour finir d'installer vos périphériques exotiques


Vous devriez avoir une machine presque fonctionnelle:D

[[Catégorie:Installation]]</text>
      <sha1>70bhwiqhf8e98zyv0zd2udjbg9varom</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2138</id>
      <parentid>2137</parentid>
      <timestamp>2010-09-29T17:37:09Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="6946">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


Installer Aptosid

== 1 – Pourquoi celle là et pas la vraie Sid ==

Vous êtes tentés par l'installation d'une sid mais vous avez un peu peur de ne pas être à la hauteur.

Bien sûr le forum est là mais si vous pouviez avoir quelqu'un derrière vous pour vous guider ce serait mieux.

A défaut d'avoir quelqu'un derrière je vous propose une sid revue et corrigée par de grands développeurs.

J'ai nommé «&amp;nbsp;aptosid&amp;nbsp;» (précédemment sidux). Ce sont les mêmes développeurs, seul le nom a changé.

En plus de sa «&amp;nbsp;presque&amp;nbsp;» stabilité, nous n'aurons pas à nous soucier de sa francisation, et si nous n'avons pas trop de matériel exotique tout va fonctionner dès l'installation. Son mode «&amp;nbsp;live&amp;nbsp;» va d'ailleurs nous permettre de vérifier avant que c'est vrai.

Bien sûr avant de graver votre cd-live [[Vérifier_le_md5_d'une_image_iso|vous avez vérifié le md5 du télé-chargement]] et celui de la gravure.

Il n'est nullement obligatoire de choisir LVM, ni EXT4, ni ma manière de dénommer les volumes, pas même de suivre mon découpage pour que le mode d'emploi cesse d'être valable.

Et si vous n'aimez pas KDE il existe une version XFCE bien plus légère. 

* 1-1 – L'ordinateur : vous avez environ 15 Go de disponible en un ou plusieurs morceaux (partitions primaires et/ou logiques) sur un ou plusieurs disques.

* 1-2 – Comme toutes les sid il est hors de question de la mettre à jour une fois de temps en temps sous peine de dégats. Une sid cela s'entretient journellement.

== 2 – Les options choisies ==

* 2-1 Sudo, mais pas celui des autres, un sudo sécurisé par quelques options, dont la première est que l'utilisateur responsable ait un vrai mot de passe, pas le nom de mon chien « Pataud » ==

* 2-2 Le couple smxi/sgfxi pour ne pas remettre au lendemain la partie fastidieuse des mises à jour que l'on remet sans cesse au lendemain et pour ne pas scier la branche sur laquelle on est assis (mettre à jour la partie graphique pendant qu'elle est active). ==

* 2-3 Séparer nettement en volumes logiques séparés, ce qui seras conservé dans tous les cas, ce qui peut provoquer des blocages systèmes, et le système lui même. ==

* 2-4 Opter pour le dernier système de fichier ext connu alors que Netinstall ou Businesscard stable ne le gère pas encore  ==

== 3 Système de volumes logiques (lvm2) ==

* 3-1 pvcreate /dev/sdXY /dev/sdYZ « vg_name »… initialise tous les morceaux que vous avez pu glaner sur vos disques

* 3-2 vgcreate regroupe tous ces morceaux en un espace virtuel que nous allons pouvoir découper en volume logique, l'équivalent des anciennes partitions, sans avoir ces fameuses limitations.

* 3-3 lvcreate -L5G -n « lv_name » vg_name créé un volume de 5 Go nommé lv_name dans vg_name

* 3-4 Ma notation des noms de volume et leur taille

lv_root1 Go

lv_usr8 GoPour avoir l'avenir devant moi

lv_var3 GoPour éviter les «&amp;nbsp;DDOS&amp;nbsp;» des logs

lv_tmp5 GoPour le download d'un dvd

lv_opt1 GoPour y mettre les drivers de vieux matériels

lv_home6 Go

lv_swap1 GoA agrandir a la taille de la RAM pour mettre en sommeil 

Soit un total de 19 Go sans compter /home ou 25 en tout

* 3-5 Formater

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name&lt;/nowiki&gt;

* 3-6 Lancer l'installation

Comme d'habitude vous aurez à choisir la langue, les mots de passe, le nom de la machine, l'emplacement du grub&amp;nbsp;: Si vous ne choisissez pas le MBR ne venez pas vous plaindre. Si d'autres systèmes cohabitent avec celui-ci ils seront reconnus et vous les aurez au menu.

* 3-7 Cas particulier de réinstallation (le bug de la chaise au clavier)

Seuls les volumes root, usr, var, tmp sont à formater 

== 4-0 Marche à suivre. ==

* 4-1 Démarrer le cd-live

Ouvrir une console et modifier son profile si nécessaire

 $ su &lt;nowiki&gt;==&gt; on devient root&lt;/nowiki&gt;

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name (root, usr, var, tmp …)&lt;/nowiki&gt;

* 4-2 Lancer l'installation

Désigner les différentes partitions dans les cases prévues à cet effet

Si vous avez choisi le français, seuls les expatriés auront à rectifier le fuseau horaire

Un mot de passe root

Un utilisateur inexistant précédemment dans home et un mot de passe

Un nom pour votre machine

Lancer l'installation.

Dans quelques minutes elle sera terminée.

* 4-3 Lancer la nouvelle installation

Au menu «&amp;nbsp;grub&amp;nbsp;» entrer E pour editer le menu.

Sur la ligne «&amp;nbsp;linux&amp;nbsp;» après le «&amp;nbsp;quiet&amp;nbsp;» ajouter un 3 (c'est le level multi user en console)

CTRL + x pour démarrer

* 4-4 C'est à root de jouer

On se connecte en root avec son MDP

&lt;nowiki&gt;# apt-get update&lt;/nowiki&gt;

&lt;nowiki&gt;# apt-get install apt-listbugs (avant tout le monde)&lt;/nowiki&gt;

&lt;nowiki&gt;# apt-get install aptitude (si l'on est un fan pour que tout le reste soit homogène) et à &lt;/nowiki&gt;

condition que aptitude ne soit pas buguée 

&lt;nowiki&gt;# aptitude install nano (yakuake numlockx linuxlogo)&lt;/nowiki&gt;

&lt;nowiki&gt;# nano /etc/sudoers&lt;/nowiki&gt;

Defaults:ALLtty_tickets''','''timestamp_timeout=0


«&amp;nbsp;vous&amp;nbsp;»ALL=(ALL) ALL

&lt;nowiki&gt;# userdel -r «&amp;nbsp;user_fictif&amp;nbsp;»&lt;/nowiki&gt;

&lt;nowiki&gt;# adduser «&amp;nbsp;vous&amp;nbsp;»&lt;/nowiki&gt;

&lt;nowiki&gt;# cd /usr/bin/local/ &amp;&amp; wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip&lt;/nowiki&gt;

&lt;nowiki&gt;# exit&lt;/nowiki&gt;Si tout se passe bien root n'est pas près d'avoir la main mais vous serez obligé de donner votre MDP à tout bout de champ car il n'est valable que dans une seule console et pour une seule opération.

* 4-5 C'est à vous de jouer

 $ sudo nano /etc/hosts pour rétablir la liste des hosts

 $ sudo smxi -e (upgrade du kernel) et reboot sur le nouveau (n'oubliez pas le 3)

 $ sudo smxi -e upgrade, nettoyage des paquets inutiles, installation graphique …

Profitez de ce laps de temps pour générer les clés ssh, la génération étant d'autant plus rapide que la circulation des informations est intense sur le bus (ALT + F2)

Démarrer la session graphique et servez vous de yakuake comme console, vous allez voir&amp;nbsp;!

Bon F12 

 $ sudo aptitude install iceweasel iceweasel-l10n-fr icedove icedove-l10n-fr sysv-rc-conf kde-&amp;nbsp;10n-fr apt-file openssh-server

 $ sudo /etc/init.d/ssh start

 $ sudo nano /etc/modprobe.d/alsa-base.conf

 options snd-hda-intel model-auto

A ce stade utiliser les drivers de opt pour finir d'installer vos périphériques exotiques


Vous devriez avoir une machine presque fonctionnelle:D

[[Catégorie:Installation]]</text>
      <sha1>ou033mcx27panzwensxk8w5uej3sqig</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2139</id>
      <parentid>2138</parentid>
      <timestamp>2010-09-29T17:37:50Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="6928">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


Installer Aptosid

== Pourquoi celle là et pas la vraie Sid ==

Vous êtes tentés par l'installation d'une sid mais vous avez un peu peur de ne pas être à la hauteur.

Bien sûr le forum est là mais si vous pouviez avoir quelqu'un derrière vous pour vous guider ce serait mieux.

A défaut d'avoir quelqu'un derrière je vous propose une sid revue et corrigée par de grands développeurs.

J'ai nommé «&amp;nbsp;aptosid&amp;nbsp;» (précédemment sidux). Ce sont les mêmes développeurs, seul le nom a changé.

En plus de sa «&amp;nbsp;presque&amp;nbsp;» stabilité, nous n'aurons pas à nous soucier de sa francisation, et si nous n'avons pas trop de matériel exotique tout va fonctionner dès l'installation. Son mode «&amp;nbsp;live&amp;nbsp;» va d'ailleurs nous permettre de vérifier avant que c'est vrai.

Bien sûr avant de graver votre cd-live [[Vérifier_le_md5_d'une_image_iso|vous avez vérifié le md5 du télé-chargement]] et celui de la gravure.

Il n'est nullement obligatoire de choisir LVM, ni EXT4, ni ma manière de dénommer les volumes, pas même de suivre mon découpage pour que le mode d'emploi cesse d'être valable.

Et si vous n'aimez pas KDE il existe une version XFCE bien plus légère. 

* 1-1 – L'ordinateur : vous avez environ 15 Go de disponible en un ou plusieurs morceaux (partitions primaires et/ou logiques) sur un ou plusieurs disques.

* 1-2 – Comme toutes les sid il est hors de question de la mettre à jour une fois de temps en temps sous peine de dégats. Une sid cela s'entretient journellement.

== Les options choisies ==

* 2-1 Sudo, mais pas celui des autres, un sudo sécurisé par quelques options, dont la première est que l'utilisateur responsable ait un vrai mot de passe, pas le nom de mon chien « Pataud » ==

* 2-2 Le couple smxi/sgfxi pour ne pas remettre au lendemain la partie fastidieuse des mises à jour que l'on remet sans cesse au lendemain et pour ne pas scier la branche sur laquelle on est assis (mettre à jour la partie graphique pendant qu'elle est active). ==

* 2-3 Séparer nettement en volumes logiques séparés, ce qui seras conservé dans tous les cas, ce qui peut provoquer des blocages systèmes, et le système lui même. ==

* 2-4 Opter pour le dernier système de fichier ext connu alors que Netinstall ou Businesscard stable ne le gère pas encore  ==

== Système de volumes logiques (lvm2) ==

* 3-1 pvcreate /dev/sdXY /dev/sdYZ « vg_name »… initialise tous les morceaux que vous avez pu glaner sur vos disques

* 3-2 vgcreate regroupe tous ces morceaux en un espace virtuel que nous allons pouvoir découper en volume logique, l'équivalent des anciennes partitions, sans avoir ces fameuses limitations.

* 3-3 lvcreate -L5G -n « lv_name » vg_name créé un volume de 5 Go nommé lv_name dans vg_name

* 3-4 Ma notation des noms de volume et leur taille

lv_root1 Go

lv_usr8 GoPour avoir l'avenir devant moi

lv_var3 GoPour éviter les «&amp;nbsp;DDOS&amp;nbsp;» des logs

lv_tmp5 GoPour le download d'un dvd

lv_opt1 GoPour y mettre les drivers de vieux matériels

lv_home6 Go

lv_swap1 GoA agrandir a la taille de la RAM pour mettre en sommeil 

Soit un total de 19 Go sans compter /home ou 25 en tout

* 3-5 Formater

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name&lt;/nowiki&gt;

* 3-6 Lancer l'installation

Comme d'habitude vous aurez à choisir la langue, les mots de passe, le nom de la machine, l'emplacement du grub&amp;nbsp;: Si vous ne choisissez pas le MBR ne venez pas vous plaindre. Si d'autres systèmes cohabitent avec celui-ci ils seront reconnus et vous les aurez au menu.

* 3-7 Cas particulier de réinstallation (le bug de la chaise au clavier)

Seuls les volumes root, usr, var, tmp sont à formater 

== Marche à suivre. ==

* 4-1 Démarrer le cd-live

Ouvrir une console et modifier son profile si nécessaire

 $ su &lt;nowiki&gt;==&gt; on devient root&lt;/nowiki&gt;

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name (root, usr, var, tmp …)&lt;/nowiki&gt;

* 4-2 Lancer l'installation

Désigner les différentes partitions dans les cases prévues à cet effet

Si vous avez choisi le français, seuls les expatriés auront à rectifier le fuseau horaire

Un mot de passe root

Un utilisateur inexistant précédemment dans home et un mot de passe

Un nom pour votre machine

Lancer l'installation.

Dans quelques minutes elle sera terminée.

* 4-3 Lancer la nouvelle installation

Au menu «&amp;nbsp;grub&amp;nbsp;» entrer E pour editer le menu.

Sur la ligne «&amp;nbsp;linux&amp;nbsp;» après le «&amp;nbsp;quiet&amp;nbsp;» ajouter un 3 (c'est le level multi user en console)

CTRL + x pour démarrer

* 4-4 C'est à root de jouer

On se connecte en root avec son MDP

&lt;nowiki&gt;# apt-get update&lt;/nowiki&gt;

&lt;nowiki&gt;# apt-get install apt-listbugs (avant tout le monde)&lt;/nowiki&gt;

&lt;nowiki&gt;# apt-get install aptitude (si l'on est un fan pour que tout le reste soit homogène) et à &lt;/nowiki&gt;

condition que aptitude ne soit pas buguée 

&lt;nowiki&gt;# aptitude install nano (yakuake numlockx linuxlogo)&lt;/nowiki&gt;

&lt;nowiki&gt;# nano /etc/sudoers&lt;/nowiki&gt;

Defaults:ALLtty_tickets''','''timestamp_timeout=0


«&amp;nbsp;vous&amp;nbsp;»ALL=(ALL) ALL

&lt;nowiki&gt;# userdel -r «&amp;nbsp;user_fictif&amp;nbsp;»&lt;/nowiki&gt;

&lt;nowiki&gt;# adduser «&amp;nbsp;vous&amp;nbsp;»&lt;/nowiki&gt;

&lt;nowiki&gt;# cd /usr/bin/local/ &amp;&amp; wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip&lt;/nowiki&gt;

&lt;nowiki&gt;# exit&lt;/nowiki&gt;Si tout se passe bien root n'est pas près d'avoir la main mais vous serez obligé de donner votre MDP à tout bout de champ car il n'est valable que dans une seule console et pour une seule opération.

* 4-5 C'est à vous de jouer

 $ sudo nano /etc/hosts pour rétablir la liste des hosts

 $ sudo smxi -e (upgrade du kernel) et reboot sur le nouveau (n'oubliez pas le 3)

 $ sudo smxi -e upgrade, nettoyage des paquets inutiles, installation graphique …

Profitez de ce laps de temps pour générer les clés ssh, la génération étant d'autant plus rapide que la circulation des informations est intense sur le bus (ALT + F2)

Démarrer la session graphique et servez vous de yakuake comme console, vous allez voir&amp;nbsp;!

Bon F12 

 $ sudo aptitude install iceweasel iceweasel-l10n-fr icedove icedove-l10n-fr sysv-rc-conf kde-&amp;nbsp;10n-fr apt-file openssh-server

 $ sudo /etc/init.d/ssh start

 $ sudo nano /etc/modprobe.d/alsa-base.conf

 options snd-hda-intel model-auto

A ce stade utiliser les drivers de opt pour finir d'installer vos périphériques exotiques


Vous devriez avoir une machine presque fonctionnelle:D

[[Catégorie:Installation]]</text>
      <sha1>0sfrwmddfbtlr1ksynlwo22x7pwt79f</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2140</id>
      <parentid>2139</parentid>
      <timestamp>2010-09-29T17:40:21Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Pourquoi celle là et pas la vraie Sid */</comment>
      <text xml:space="preserve" bytes="6924">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


Installer Aptosid

== Pourquoi celle là et pas la vraie Sid ==

Vous êtes tentés par l'installation d'une sid mais vous avez un peu peur de ne pas être à la hauteur.

Bien sûr le forum est là mais si vous pouviez avoir quelqu'un derrière vous pour vous guider ce serait mieux.

A défaut d'avoir quelqu'un derrière je vous propose une sid revue et corrigée par de grands développeurs.

J'ai nommé «&amp;nbsp;aptosid&amp;nbsp;» (précédemment sidux). Ce sont les mêmes développeurs, seul le nom a changé.

En plus de sa «&amp;nbsp;presque&amp;nbsp;» stabilité, nous n'aurons pas à nous soucier de sa francisation, et si nous n'avons pas trop de matériel exotique tout va fonctionner dès l'installation. Son mode «&amp;nbsp;live&amp;nbsp;» va d'ailleurs nous permettre de vérifier avant que c'est vrai.

Bien sûr avant de graver votre cd-live [[Vérifier_le_md5_d'une_image_iso|vous avez vérifié le md5 du télé-chargement]] et celui de la gravure.

Il n'est nullement obligatoire de choisir LVM, ni EXT4, ni ma manière de dénommer les volumes, pas même de suivre mon découpage pour que le mode d'emploi cesse d'être valable.

Et si vous n'aimez pas KDE il existe une version XFCE bien plus légère. 

=== L'ordinateur ===

vous avez environ 15 Go de disponible en un ou plusieurs morceaux (partitions primaires et/ou logiques) sur un ou plusieurs disques.

=== Comme toutes les sid ===

Il est hors de question de la mettre à jour une fois de temps en temps sous peine de dégats. Une sid cela s'entretient journellement.

== Les options choisies ==

* 2-1 Sudo, mais pas celui des autres, un sudo sécurisé par quelques options, dont la première est que l'utilisateur responsable ait un vrai mot de passe, pas le nom de mon chien « Pataud » ==

* 2-2 Le couple smxi/sgfxi pour ne pas remettre au lendemain la partie fastidieuse des mises à jour que l'on remet sans cesse au lendemain et pour ne pas scier la branche sur laquelle on est assis (mettre à jour la partie graphique pendant qu'elle est active). ==

* 2-3 Séparer nettement en volumes logiques séparés, ce qui seras conservé dans tous les cas, ce qui peut provoquer des blocages systèmes, et le système lui même. ==

* 2-4 Opter pour le dernier système de fichier ext connu alors que Netinstall ou Businesscard stable ne le gère pas encore  ==

== Système de volumes logiques (lvm2) ==

* 3-1 pvcreate /dev/sdXY /dev/sdYZ « vg_name »… initialise tous les morceaux que vous avez pu glaner sur vos disques

* 3-2 vgcreate regroupe tous ces morceaux en un espace virtuel que nous allons pouvoir découper en volume logique, l'équivalent des anciennes partitions, sans avoir ces fameuses limitations.

* 3-3 lvcreate -L5G -n « lv_name » vg_name créé un volume de 5 Go nommé lv_name dans vg_name

* 3-4 Ma notation des noms de volume et leur taille

lv_root1 Go

lv_usr8 GoPour avoir l'avenir devant moi

lv_var3 GoPour éviter les «&amp;nbsp;DDOS&amp;nbsp;» des logs

lv_tmp5 GoPour le download d'un dvd

lv_opt1 GoPour y mettre les drivers de vieux matériels

lv_home6 Go

lv_swap1 GoA agrandir a la taille de la RAM pour mettre en sommeil 

Soit un total de 19 Go sans compter /home ou 25 en tout

* 3-5 Formater

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name&lt;/nowiki&gt;

* 3-6 Lancer l'installation

Comme d'habitude vous aurez à choisir la langue, les mots de passe, le nom de la machine, l'emplacement du grub&amp;nbsp;: Si vous ne choisissez pas le MBR ne venez pas vous plaindre. Si d'autres systèmes cohabitent avec celui-ci ils seront reconnus et vous les aurez au menu.

* 3-7 Cas particulier de réinstallation (le bug de la chaise au clavier)

Seuls les volumes root, usr, var, tmp sont à formater 

== Marche à suivre. ==

* 4-1 Démarrer le cd-live

Ouvrir une console et modifier son profile si nécessaire

 $ su &lt;nowiki&gt;==&gt; on devient root&lt;/nowiki&gt;

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name (root, usr, var, tmp …)&lt;/nowiki&gt;

* 4-2 Lancer l'installation

Désigner les différentes partitions dans les cases prévues à cet effet

Si vous avez choisi le français, seuls les expatriés auront à rectifier le fuseau horaire

Un mot de passe root

Un utilisateur inexistant précédemment dans home et un mot de passe

Un nom pour votre machine

Lancer l'installation.

Dans quelques minutes elle sera terminée.

* 4-3 Lancer la nouvelle installation

Au menu «&amp;nbsp;grub&amp;nbsp;» entrer E pour editer le menu.

Sur la ligne «&amp;nbsp;linux&amp;nbsp;» après le «&amp;nbsp;quiet&amp;nbsp;» ajouter un 3 (c'est le level multi user en console)

CTRL + x pour démarrer

* 4-4 C'est à root de jouer

On se connecte en root avec son MDP

&lt;nowiki&gt;# apt-get update&lt;/nowiki&gt;

&lt;nowiki&gt;# apt-get install apt-listbugs (avant tout le monde)&lt;/nowiki&gt;

&lt;nowiki&gt;# apt-get install aptitude (si l'on est un fan pour que tout le reste soit homogène) et à &lt;/nowiki&gt;

condition que aptitude ne soit pas buguée 

&lt;nowiki&gt;# aptitude install nano (yakuake numlockx linuxlogo)&lt;/nowiki&gt;

&lt;nowiki&gt;# nano /etc/sudoers&lt;/nowiki&gt;

Defaults:ALLtty_tickets''','''timestamp_timeout=0


«&amp;nbsp;vous&amp;nbsp;»ALL=(ALL) ALL

&lt;nowiki&gt;# userdel -r «&amp;nbsp;user_fictif&amp;nbsp;»&lt;/nowiki&gt;

&lt;nowiki&gt;# adduser «&amp;nbsp;vous&amp;nbsp;»&lt;/nowiki&gt;

&lt;nowiki&gt;# cd /usr/bin/local/ &amp;&amp; wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip&lt;/nowiki&gt;

&lt;nowiki&gt;# exit&lt;/nowiki&gt;Si tout se passe bien root n'est pas près d'avoir la main mais vous serez obligé de donner votre MDP à tout bout de champ car il n'est valable que dans une seule console et pour une seule opération.

* 4-5 C'est à vous de jouer

 $ sudo nano /etc/hosts pour rétablir la liste des hosts

 $ sudo smxi -e (upgrade du kernel) et reboot sur le nouveau (n'oubliez pas le 3)

 $ sudo smxi -e upgrade, nettoyage des paquets inutiles, installation graphique …

Profitez de ce laps de temps pour générer les clés ssh, la génération étant d'autant plus rapide que la circulation des informations est intense sur le bus (ALT + F2)

Démarrer la session graphique et servez vous de yakuake comme console, vous allez voir&amp;nbsp;!

Bon F12 

 $ sudo aptitude install iceweasel iceweasel-l10n-fr icedove icedove-l10n-fr sysv-rc-conf kde-&amp;nbsp;10n-fr apt-file openssh-server

 $ sudo /etc/init.d/ssh start

 $ sudo nano /etc/modprobe.d/alsa-base.conf

 options snd-hda-intel model-auto

A ce stade utiliser les drivers de opt pour finir d'installer vos périphériques exotiques


Vous devriez avoir une machine presque fonctionnelle:D

[[Catégorie:Installation]]</text>
      <sha1>df8z3j0wx41kapwrvea4j78vge2s0zh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2141</id>
      <parentid>2140</parentid>
      <timestamp>2010-09-29T17:42:26Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Les options choisies */</comment>
      <text xml:space="preserve" bytes="6930">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


Installer Aptosid

== Pourquoi celle là et pas la vraie Sid ==

Vous êtes tentés par l'installation d'une sid mais vous avez un peu peur de ne pas être à la hauteur.

Bien sûr le forum est là mais si vous pouviez avoir quelqu'un derrière vous pour vous guider ce serait mieux.

A défaut d'avoir quelqu'un derrière je vous propose une sid revue et corrigée par de grands développeurs.

J'ai nommé «&amp;nbsp;aptosid&amp;nbsp;» (précédemment sidux). Ce sont les mêmes développeurs, seul le nom a changé.

En plus de sa «&amp;nbsp;presque&amp;nbsp;» stabilité, nous n'aurons pas à nous soucier de sa francisation, et si nous n'avons pas trop de matériel exotique tout va fonctionner dès l'installation. Son mode «&amp;nbsp;live&amp;nbsp;» va d'ailleurs nous permettre de vérifier avant que c'est vrai.

Bien sûr avant de graver votre cd-live [[Vérifier_le_md5_d'une_image_iso|vous avez vérifié le md5 du télé-chargement]] et celui de la gravure.

Il n'est nullement obligatoire de choisir LVM, ni EXT4, ni ma manière de dénommer les volumes, pas même de suivre mon découpage pour que le mode d'emploi cesse d'être valable.

Et si vous n'aimez pas KDE il existe une version XFCE bien plus légère. 

=== L'ordinateur ===

vous avez environ 15 Go de disponible en un ou plusieurs morceaux (partitions primaires et/ou logiques) sur un ou plusieurs disques.

=== Comme toutes les sid ===

Il est hors de question de la mettre à jour une fois de temps en temps sous peine de dégats. Une sid cela s'entretient journellement.

== Les options choisies ==

=== Sudo ===

Mais pas celui des autres, un sudo sécurisé par quelques options, dont la première est que l'utilisateur responsable ait un vrai mot de passe, pas le nom de mon chien « Pataud » ==

=== Le couple smxi/sgfxi ===

Pour ne pas remettre au lendemain la partie fastidieuse des mises à jour que l'on remet sans cesse au lendemain et pour ne pas scier la branche sur laquelle on est assis (mettre à jour la partie graphique pendant qu'elle est active).

=== Séparer nettement en volumes logiques séparés ===

Ce qui seras conservé dans tous les cas, ce qui peut provoquer des blocages systèmes, et le système lui même.

=== Ext4 === 

Opter pour le dernier système de fichier ext connu alors que Netinstall ou Businesscard stable ne le gère pas encore

== Système de volumes logiques (lvm2) ==

* 3-1 pvcreate /dev/sdXY /dev/sdYZ « vg_name »… initialise tous les morceaux que vous avez pu glaner sur vos disques

* 3-2 vgcreate regroupe tous ces morceaux en un espace virtuel que nous allons pouvoir découper en volume logique, l'équivalent des anciennes partitions, sans avoir ces fameuses limitations.

* 3-3 lvcreate -L5G -n « lv_name » vg_name créé un volume de 5 Go nommé lv_name dans vg_name

* 3-4 Ma notation des noms de volume et leur taille

lv_root1 Go

lv_usr8 GoPour avoir l'avenir devant moi

lv_var3 GoPour éviter les «&amp;nbsp;DDOS&amp;nbsp;» des logs

lv_tmp5 GoPour le download d'un dvd

lv_opt1 GoPour y mettre les drivers de vieux matériels

lv_home6 Go

lv_swap1 GoA agrandir a la taille de la RAM pour mettre en sommeil 

Soit un total de 19 Go sans compter /home ou 25 en tout

* 3-5 Formater

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name&lt;/nowiki&gt;

* 3-6 Lancer l'installation

Comme d'habitude vous aurez à choisir la langue, les mots de passe, le nom de la machine, l'emplacement du grub&amp;nbsp;: Si vous ne choisissez pas le MBR ne venez pas vous plaindre. Si d'autres systèmes cohabitent avec celui-ci ils seront reconnus et vous les aurez au menu.

* 3-7 Cas particulier de réinstallation (le bug de la chaise au clavier)

Seuls les volumes root, usr, var, tmp sont à formater 

== Marche à suivre. ==

* 4-1 Démarrer le cd-live

Ouvrir une console et modifier son profile si nécessaire

 $ su &lt;nowiki&gt;==&gt; on devient root&lt;/nowiki&gt;

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name (root, usr, var, tmp …)&lt;/nowiki&gt;

* 4-2 Lancer l'installation

Désigner les différentes partitions dans les cases prévues à cet effet

Si vous avez choisi le français, seuls les expatriés auront à rectifier le fuseau horaire

Un mot de passe root

Un utilisateur inexistant précédemment dans home et un mot de passe

Un nom pour votre machine

Lancer l'installation.

Dans quelques minutes elle sera terminée.

* 4-3 Lancer la nouvelle installation

Au menu «&amp;nbsp;grub&amp;nbsp;» entrer E pour editer le menu.

Sur la ligne «&amp;nbsp;linux&amp;nbsp;» après le «&amp;nbsp;quiet&amp;nbsp;» ajouter un 3 (c'est le level multi user en console)

CTRL + x pour démarrer

* 4-4 C'est à root de jouer

On se connecte en root avec son MDP

&lt;nowiki&gt;# apt-get update&lt;/nowiki&gt;

&lt;nowiki&gt;# apt-get install apt-listbugs (avant tout le monde)&lt;/nowiki&gt;

&lt;nowiki&gt;# apt-get install aptitude (si l'on est un fan pour que tout le reste soit homogène) et à &lt;/nowiki&gt;

condition que aptitude ne soit pas buguée 

&lt;nowiki&gt;# aptitude install nano (yakuake numlockx linuxlogo)&lt;/nowiki&gt;

&lt;nowiki&gt;# nano /etc/sudoers&lt;/nowiki&gt;

Defaults:ALLtty_tickets''','''timestamp_timeout=0


«&amp;nbsp;vous&amp;nbsp;»ALL=(ALL) ALL

&lt;nowiki&gt;# userdel -r «&amp;nbsp;user_fictif&amp;nbsp;»&lt;/nowiki&gt;

&lt;nowiki&gt;# adduser «&amp;nbsp;vous&amp;nbsp;»&lt;/nowiki&gt;

&lt;nowiki&gt;# cd /usr/bin/local/ &amp;&amp; wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip&lt;/nowiki&gt;

&lt;nowiki&gt;# exit&lt;/nowiki&gt;Si tout se passe bien root n'est pas près d'avoir la main mais vous serez obligé de donner votre MDP à tout bout de champ car il n'est valable que dans une seule console et pour une seule opération.

* 4-5 C'est à vous de jouer

 $ sudo nano /etc/hosts pour rétablir la liste des hosts

 $ sudo smxi -e (upgrade du kernel) et reboot sur le nouveau (n'oubliez pas le 3)

 $ sudo smxi -e upgrade, nettoyage des paquets inutiles, installation graphique …

Profitez de ce laps de temps pour générer les clés ssh, la génération étant d'autant plus rapide que la circulation des informations est intense sur le bus (ALT + F2)

Démarrer la session graphique et servez vous de yakuake comme console, vous allez voir&amp;nbsp;!

Bon F12 

 $ sudo aptitude install iceweasel iceweasel-l10n-fr icedove icedove-l10n-fr sysv-rc-conf kde-&amp;nbsp;10n-fr apt-file openssh-server

 $ sudo /etc/init.d/ssh start

 $ sudo nano /etc/modprobe.d/alsa-base.conf

 options snd-hda-intel model-auto

A ce stade utiliser les drivers de opt pour finir d'installer vos périphériques exotiques


Vous devriez avoir une machine presque fonctionnelle:D

[[Catégorie:Installation]]</text>
      <sha1>4n8pao1axbyiwvxjit82bxghm8j3495</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2142</id>
      <parentid>2141</parentid>
      <timestamp>2010-09-29T17:47:33Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Système de volumes logiques (lvm2) */</comment>
      <text xml:space="preserve" bytes="7042">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


Installer Aptosid

== Pourquoi celle là et pas la vraie Sid ==

Vous êtes tentés par l'installation d'une sid mais vous avez un peu peur de ne pas être à la hauteur.

Bien sûr le forum est là mais si vous pouviez avoir quelqu'un derrière vous pour vous guider ce serait mieux.

A défaut d'avoir quelqu'un derrière je vous propose une sid revue et corrigée par de grands développeurs.

J'ai nommé «&amp;nbsp;aptosid&amp;nbsp;» (précédemment sidux). Ce sont les mêmes développeurs, seul le nom a changé.

En plus de sa «&amp;nbsp;presque&amp;nbsp;» stabilité, nous n'aurons pas à nous soucier de sa francisation, et si nous n'avons pas trop de matériel exotique tout va fonctionner dès l'installation. Son mode «&amp;nbsp;live&amp;nbsp;» va d'ailleurs nous permettre de vérifier avant que c'est vrai.

Bien sûr avant de graver votre cd-live [[Vérifier_le_md5_d'une_image_iso|vous avez vérifié le md5 du télé-chargement]] et celui de la gravure.

Il n'est nullement obligatoire de choisir LVM, ni EXT4, ni ma manière de dénommer les volumes, pas même de suivre mon découpage pour que le mode d'emploi cesse d'être valable.

Et si vous n'aimez pas KDE il existe une version XFCE bien plus légère. 

=== L'ordinateur ===

vous avez environ 15 Go de disponible en un ou plusieurs morceaux (partitions primaires et/ou logiques) sur un ou plusieurs disques.

=== Comme toutes les sid ===

Il est hors de question de la mettre à jour une fois de temps en temps sous peine de dégats. Une sid cela s'entretient journellement.

== Les options choisies ==

=== Sudo ===

Mais pas celui des autres, un sudo sécurisé par quelques options, dont la première est que l'utilisateur responsable ait un vrai mot de passe, pas le nom de mon chien « Pataud » ==

=== Le couple smxi/sgfxi ===

Pour ne pas remettre au lendemain la partie fastidieuse des mises à jour que l'on remet sans cesse au lendemain et pour ne pas scier la branche sur laquelle on est assis (mettre à jour la partie graphique pendant qu'elle est active).

=== Séparer nettement en volumes logiques séparés ===

Ce qui seras conservé dans tous les cas, ce qui peut provoquer des blocages systèmes, et le système lui même.

=== Ext4 === 

Opter pour le dernier système de fichier ext connu alors que Netinstall ou Businesscard stable ne le gère pas encore

== Système de volumes logiques (lvm2) ==

=== Initialiser ===

Initialiser tous les morceaux que vous avez pu glaner sur vos disques

 # pvcreate /dev/sdXY /dev/sdYZ « vg_name »

=== Regrouper ===

Regroupr tous ces morceaux en un espace virtuel que nous allons pouvoir découper en volume logique, l'équivalent des anciennes partitions, sans avoir ces fameuses limitations.

 # vgcreate

=== Créer ===

Création d'un volume de 5 Go nommé lv_name dans vg_name

# lvcreate -L5G -n « lv_name » vg_name

=== Nommage et taille ===

Ma notation des noms de volume et leur taille

* lv_root1 Go
* lv_usr 8Go - Pour avoir l'avenir devant moi
* lv_var 3Go - Pour éviter les «&amp;nbsp;DDOS&amp;nbsp;» des logs
* lv_tmp 5Go - Pour le download d'un dvd
* lv_opt 1Go - Pour y mettre les drivers de vieux matériels
* lv_home 6Go
* lv_swap 1Go - A agrandir a la taille de la RAM pour mettre en sommeil 

Soit un total de 19 Go sans compter /home ou 25 en tout

=== Formater ===

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name&lt;/nowiki&gt;

=== Installer ===

Comme d'habitude vous aurez à choisir la langue, les mots de passe, le nom de la machine, l'emplacement du grub&amp;nbsp;: Si vous ne choisissez pas le MBR ne venez pas vous plaindre. Si d'autres systèmes cohabitent avec celui-ci ils seront reconnus et vous les aurez au menu.

=== Réinstallation ===

Le cas particulier de le réinstallation (le bug de la chaise au clavier)

Seuls les volumes root, usr, var, tmp sont à formater

== Marche à suivre. ==

* 4-1 Démarrer le cd-live

Ouvrir une console et modifier son profile si nécessaire

 $ su &lt;nowiki&gt;==&gt; on devient root&lt;/nowiki&gt;

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name (root, usr, var, tmp …)&lt;/nowiki&gt;

* 4-2 Lancer l'installation

Désigner les différentes partitions dans les cases prévues à cet effet

Si vous avez choisi le français, seuls les expatriés auront à rectifier le fuseau horaire

Un mot de passe root

Un utilisateur inexistant précédemment dans home et un mot de passe

Un nom pour votre machine

Lancer l'installation.

Dans quelques minutes elle sera terminée.

* 4-3 Lancer la nouvelle installation

Au menu «&amp;nbsp;grub&amp;nbsp;» entrer E pour editer le menu.

Sur la ligne «&amp;nbsp;linux&amp;nbsp;» après le «&amp;nbsp;quiet&amp;nbsp;» ajouter un 3 (c'est le level multi user en console)

CTRL + x pour démarrer

* 4-4 C'est à root de jouer

On se connecte en root avec son MDP

&lt;nowiki&gt;# apt-get update&lt;/nowiki&gt;

&lt;nowiki&gt;# apt-get install apt-listbugs (avant tout le monde)&lt;/nowiki&gt;

&lt;nowiki&gt;# apt-get install aptitude (si l'on est un fan pour que tout le reste soit homogène) et à &lt;/nowiki&gt;

condition que aptitude ne soit pas buguée 

&lt;nowiki&gt;# aptitude install nano (yakuake numlockx linuxlogo)&lt;/nowiki&gt;

&lt;nowiki&gt;# nano /etc/sudoers&lt;/nowiki&gt;

Defaults:ALLtty_tickets''','''timestamp_timeout=0


«&amp;nbsp;vous&amp;nbsp;»ALL=(ALL) ALL

&lt;nowiki&gt;# userdel -r «&amp;nbsp;user_fictif&amp;nbsp;»&lt;/nowiki&gt;

&lt;nowiki&gt;# adduser «&amp;nbsp;vous&amp;nbsp;»&lt;/nowiki&gt;

&lt;nowiki&gt;# cd /usr/bin/local/ &amp;&amp; wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip&lt;/nowiki&gt;

&lt;nowiki&gt;# exit&lt;/nowiki&gt;Si tout se passe bien root n'est pas près d'avoir la main mais vous serez obligé de donner votre MDP à tout bout de champ car il n'est valable que dans une seule console et pour une seule opération.

* 4-5 C'est à vous de jouer

 $ sudo nano /etc/hosts pour rétablir la liste des hosts

 $ sudo smxi -e (upgrade du kernel) et reboot sur le nouveau (n'oubliez pas le 3)

 $ sudo smxi -e upgrade, nettoyage des paquets inutiles, installation graphique …

Profitez de ce laps de temps pour générer les clés ssh, la génération étant d'autant plus rapide que la circulation des informations est intense sur le bus (ALT + F2)

Démarrer la session graphique et servez vous de yakuake comme console, vous allez voir&amp;nbsp;!

Bon F12 

 $ sudo aptitude install iceweasel iceweasel-l10n-fr icedove icedove-l10n-fr sysv-rc-conf kde-&amp;nbsp;10n-fr apt-file openssh-server

 $ sudo /etc/init.d/ssh start

 $ sudo nano /etc/modprobe.d/alsa-base.conf

 options snd-hda-intel model-auto

A ce stade utiliser les drivers de opt pour finir d'installer vos périphériques exotiques


Vous devriez avoir une machine presque fonctionnelle:D

[[Catégorie:Installation]]</text>
      <sha1>qya6h70liguj42y8hxu2xogchjrufwh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2143</id>
      <parentid>2142</parentid>
      <timestamp>2010-09-29T17:47:50Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Nommage et taille */</comment>
      <text xml:space="preserve" bytes="7042">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


Installer Aptosid

== Pourquoi celle là et pas la vraie Sid ==

Vous êtes tentés par l'installation d'une sid mais vous avez un peu peur de ne pas être à la hauteur.

Bien sûr le forum est là mais si vous pouviez avoir quelqu'un derrière vous pour vous guider ce serait mieux.

A défaut d'avoir quelqu'un derrière je vous propose une sid revue et corrigée par de grands développeurs.

J'ai nommé «&amp;nbsp;aptosid&amp;nbsp;» (précédemment sidux). Ce sont les mêmes développeurs, seul le nom a changé.

En plus de sa «&amp;nbsp;presque&amp;nbsp;» stabilité, nous n'aurons pas à nous soucier de sa francisation, et si nous n'avons pas trop de matériel exotique tout va fonctionner dès l'installation. Son mode «&amp;nbsp;live&amp;nbsp;» va d'ailleurs nous permettre de vérifier avant que c'est vrai.

Bien sûr avant de graver votre cd-live [[Vérifier_le_md5_d'une_image_iso|vous avez vérifié le md5 du télé-chargement]] et celui de la gravure.

Il n'est nullement obligatoire de choisir LVM, ni EXT4, ni ma manière de dénommer les volumes, pas même de suivre mon découpage pour que le mode d'emploi cesse d'être valable.

Et si vous n'aimez pas KDE il existe une version XFCE bien plus légère. 

=== L'ordinateur ===

vous avez environ 15 Go de disponible en un ou plusieurs morceaux (partitions primaires et/ou logiques) sur un ou plusieurs disques.

=== Comme toutes les sid ===

Il est hors de question de la mettre à jour une fois de temps en temps sous peine de dégats. Une sid cela s'entretient journellement.

== Les options choisies ==

=== Sudo ===

Mais pas celui des autres, un sudo sécurisé par quelques options, dont la première est que l'utilisateur responsable ait un vrai mot de passe, pas le nom de mon chien « Pataud » ==

=== Le couple smxi/sgfxi ===

Pour ne pas remettre au lendemain la partie fastidieuse des mises à jour que l'on remet sans cesse au lendemain et pour ne pas scier la branche sur laquelle on est assis (mettre à jour la partie graphique pendant qu'elle est active).

=== Séparer nettement en volumes logiques séparés ===

Ce qui seras conservé dans tous les cas, ce qui peut provoquer des blocages systèmes, et le système lui même.

=== Ext4 === 

Opter pour le dernier système de fichier ext connu alors que Netinstall ou Businesscard stable ne le gère pas encore

== Système de volumes logiques (lvm2) ==

=== Initialiser ===

Initialiser tous les morceaux que vous avez pu glaner sur vos disques

 # pvcreate /dev/sdXY /dev/sdYZ « vg_name »

=== Regrouper ===

Regroupr tous ces morceaux en un espace virtuel que nous allons pouvoir découper en volume logique, l'équivalent des anciennes partitions, sans avoir ces fameuses limitations.

 # vgcreate

=== Créer ===

Création d'un volume de 5 Go nommé lv_name dans vg_name

# lvcreate -L5G -n « lv_name » vg_name

=== Nommage et taille ===

Ma notation des noms de volume et leur taille

* lv_root 1Go
* lv_usr 8Go - Pour avoir l'avenir devant moi
* lv_var 3Go - Pour éviter les «&amp;nbsp;DDOS&amp;nbsp;» des logs
* lv_tmp 5Go - Pour le download d'un dvd
* lv_opt 1Go - Pour y mettre les drivers de vieux matériels
* lv_home 6Go
* lv_swap 1Go - A agrandir a la taille de la RAM pour mettre en sommeil 

Soit un total de 19 Go sans compter /home ou 25 en tout

=== Formater ===

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name&lt;/nowiki&gt;

=== Installer ===

Comme d'habitude vous aurez à choisir la langue, les mots de passe, le nom de la machine, l'emplacement du grub&amp;nbsp;: Si vous ne choisissez pas le MBR ne venez pas vous plaindre. Si d'autres systèmes cohabitent avec celui-ci ils seront reconnus et vous les aurez au menu.

=== Réinstallation ===

Le cas particulier de le réinstallation (le bug de la chaise au clavier)

Seuls les volumes root, usr, var, tmp sont à formater

== Marche à suivre. ==

* 4-1 Démarrer le cd-live

Ouvrir une console et modifier son profile si nécessaire

 $ su &lt;nowiki&gt;==&gt; on devient root&lt;/nowiki&gt;

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name (root, usr, var, tmp …)&lt;/nowiki&gt;

* 4-2 Lancer l'installation

Désigner les différentes partitions dans les cases prévues à cet effet

Si vous avez choisi le français, seuls les expatriés auront à rectifier le fuseau horaire

Un mot de passe root

Un utilisateur inexistant précédemment dans home et un mot de passe

Un nom pour votre machine

Lancer l'installation.

Dans quelques minutes elle sera terminée.

* 4-3 Lancer la nouvelle installation

Au menu «&amp;nbsp;grub&amp;nbsp;» entrer E pour editer le menu.

Sur la ligne «&amp;nbsp;linux&amp;nbsp;» après le «&amp;nbsp;quiet&amp;nbsp;» ajouter un 3 (c'est le level multi user en console)

CTRL + x pour démarrer

* 4-4 C'est à root de jouer

On se connecte en root avec son MDP

&lt;nowiki&gt;# apt-get update&lt;/nowiki&gt;

&lt;nowiki&gt;# apt-get install apt-listbugs (avant tout le monde)&lt;/nowiki&gt;

&lt;nowiki&gt;# apt-get install aptitude (si l'on est un fan pour que tout le reste soit homogène) et à &lt;/nowiki&gt;

condition que aptitude ne soit pas buguée 

&lt;nowiki&gt;# aptitude install nano (yakuake numlockx linuxlogo)&lt;/nowiki&gt;

&lt;nowiki&gt;# nano /etc/sudoers&lt;/nowiki&gt;

Defaults:ALLtty_tickets''','''timestamp_timeout=0


«&amp;nbsp;vous&amp;nbsp;»ALL=(ALL) ALL

&lt;nowiki&gt;# userdel -r «&amp;nbsp;user_fictif&amp;nbsp;»&lt;/nowiki&gt;

&lt;nowiki&gt;# adduser «&amp;nbsp;vous&amp;nbsp;»&lt;/nowiki&gt;

&lt;nowiki&gt;# cd /usr/bin/local/ &amp;&amp; wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip&lt;/nowiki&gt;

&lt;nowiki&gt;# exit&lt;/nowiki&gt;Si tout se passe bien root n'est pas près d'avoir la main mais vous serez obligé de donner votre MDP à tout bout de champ car il n'est valable que dans une seule console et pour une seule opération.

* 4-5 C'est à vous de jouer

 $ sudo nano /etc/hosts pour rétablir la liste des hosts

 $ sudo smxi -e (upgrade du kernel) et reboot sur le nouveau (n'oubliez pas le 3)

 $ sudo smxi -e upgrade, nettoyage des paquets inutiles, installation graphique …

Profitez de ce laps de temps pour générer les clés ssh, la génération étant d'autant plus rapide que la circulation des informations est intense sur le bus (ALT + F2)

Démarrer la session graphique et servez vous de yakuake comme console, vous allez voir&amp;nbsp;!

Bon F12 

 $ sudo aptitude install iceweasel iceweasel-l10n-fr icedove icedove-l10n-fr sysv-rc-conf kde-&amp;nbsp;10n-fr apt-file openssh-server

 $ sudo /etc/init.d/ssh start

 $ sudo nano /etc/modprobe.d/alsa-base.conf

 options snd-hda-intel model-auto

A ce stade utiliser les drivers de opt pour finir d'installer vos périphériques exotiques


Vous devriez avoir une machine presque fonctionnelle:D

[[Catégorie:Installation]]</text>
      <sha1>8e9mossq1q5kn47c1dmz1t9v8biu8ap</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2144</id>
      <parentid>2143</parentid>
      <timestamp>2010-09-29T17:49:12Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Marche à suivre. */</comment>
      <text xml:space="preserve" bytes="7051">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


Installer Aptosid

== Pourquoi celle là et pas la vraie Sid ==

Vous êtes tentés par l'installation d'une sid mais vous avez un peu peur de ne pas être à la hauteur.

Bien sûr le forum est là mais si vous pouviez avoir quelqu'un derrière vous pour vous guider ce serait mieux.

A défaut d'avoir quelqu'un derrière je vous propose une sid revue et corrigée par de grands développeurs.

J'ai nommé «&amp;nbsp;aptosid&amp;nbsp;» (précédemment sidux). Ce sont les mêmes développeurs, seul le nom a changé.

En plus de sa «&amp;nbsp;presque&amp;nbsp;» stabilité, nous n'aurons pas à nous soucier de sa francisation, et si nous n'avons pas trop de matériel exotique tout va fonctionner dès l'installation. Son mode «&amp;nbsp;live&amp;nbsp;» va d'ailleurs nous permettre de vérifier avant que c'est vrai.

Bien sûr avant de graver votre cd-live [[Vérifier_le_md5_d'une_image_iso|vous avez vérifié le md5 du télé-chargement]] et celui de la gravure.

Il n'est nullement obligatoire de choisir LVM, ni EXT4, ni ma manière de dénommer les volumes, pas même de suivre mon découpage pour que le mode d'emploi cesse d'être valable.

Et si vous n'aimez pas KDE il existe une version XFCE bien plus légère. 

=== L'ordinateur ===

vous avez environ 15 Go de disponible en un ou plusieurs morceaux (partitions primaires et/ou logiques) sur un ou plusieurs disques.

=== Comme toutes les sid ===

Il est hors de question de la mettre à jour une fois de temps en temps sous peine de dégats. Une sid cela s'entretient journellement.

== Les options choisies ==

=== Sudo ===

Mais pas celui des autres, un sudo sécurisé par quelques options, dont la première est que l'utilisateur responsable ait un vrai mot de passe, pas le nom de mon chien « Pataud » ==

=== Le couple smxi/sgfxi ===

Pour ne pas remettre au lendemain la partie fastidieuse des mises à jour que l'on remet sans cesse au lendemain et pour ne pas scier la branche sur laquelle on est assis (mettre à jour la partie graphique pendant qu'elle est active).

=== Séparer nettement en volumes logiques séparés ===

Ce qui seras conservé dans tous les cas, ce qui peut provoquer des blocages systèmes, et le système lui même.

=== Ext4 === 

Opter pour le dernier système de fichier ext connu alors que Netinstall ou Businesscard stable ne le gère pas encore

== Système de volumes logiques (lvm2) ==

=== Initialiser ===

Initialiser tous les morceaux que vous avez pu glaner sur vos disques

 # pvcreate /dev/sdXY /dev/sdYZ « vg_name »

=== Regrouper ===

Regroupr tous ces morceaux en un espace virtuel que nous allons pouvoir découper en volume logique, l'équivalent des anciennes partitions, sans avoir ces fameuses limitations.

 # vgcreate

=== Créer ===

Création d'un volume de 5 Go nommé lv_name dans vg_name

# lvcreate -L5G -n « lv_name » vg_name

=== Nommage et taille ===

Ma notation des noms de volume et leur taille

* lv_root 1Go
* lv_usr 8Go - Pour avoir l'avenir devant moi
* lv_var 3Go - Pour éviter les «&amp;nbsp;DDOS&amp;nbsp;» des logs
* lv_tmp 5Go - Pour le download d'un dvd
* lv_opt 1Go - Pour y mettre les drivers de vieux matériels
* lv_home 6Go
* lv_swap 1Go - A agrandir a la taille de la RAM pour mettre en sommeil 

Soit un total de 19 Go sans compter /home ou 25 en tout

=== Formater ===

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name&lt;/nowiki&gt;

=== Installer ===

Comme d'habitude vous aurez à choisir la langue, les mots de passe, le nom de la machine, l'emplacement du grub&amp;nbsp;: Si vous ne choisissez pas le MBR ne venez pas vous plaindre. Si d'autres systèmes cohabitent avec celui-ci ils seront reconnus et vous les aurez au menu.

=== Réinstallation ===

Le cas particulier de le réinstallation (le bug de la chaise au clavier)

Seuls les volumes root, usr, var, tmp sont à formater

== Marche à suivre. ==

=== Démarrer le cd-live ===

Ouvrir une console et modifier son profile si nécessaire

 $ su &lt;nowiki&gt;==&gt; on devient root&lt;/nowiki&gt;

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name (root, usr, var, tmp …)&lt;/nowiki&gt;

=== Lancer l'installation ===

Désigner les différentes partitions dans les cases prévues à cet effet

Si vous avez choisi le français, seuls les expatriés auront à rectifier le fuseau horaire

Un mot de passe root

Un utilisateur inexistant précédemment dans home et un mot de passe

Un nom pour votre machine

Lancer l'installation.

Dans quelques minutes elle sera terminée.

=== Lancer la nouvelle installation ===

Au menu «&amp;nbsp;grub&amp;nbsp;» entrer E pour editer le menu.

Sur la ligne «&amp;nbsp;linux&amp;nbsp;» après le «&amp;nbsp;quiet&amp;nbsp;» ajouter un 3 (c'est le level multi user en console)

CTRL + x pour démarrer

=== C'est à root de jouer ===

On se connecte en root avec son MDP

&lt;nowiki&gt;# apt-get update&lt;/nowiki&gt;

&lt;nowiki&gt;# apt-get install apt-listbugs (avant tout le monde)&lt;/nowiki&gt;

&lt;nowiki&gt;# apt-get install aptitude (si l'on est un fan pour que tout le reste soit homogène) et à &lt;/nowiki&gt;

condition que aptitude ne soit pas buguée 

&lt;nowiki&gt;# aptitude install nano (yakuake numlockx linuxlogo)&lt;/nowiki&gt;

&lt;nowiki&gt;# nano /etc/sudoers&lt;/nowiki&gt;

Defaults:ALLtty_tickets''','''timestamp_timeout=0


«&amp;nbsp;vous&amp;nbsp;»ALL=(ALL) ALL

&lt;nowiki&gt;# userdel -r «&amp;nbsp;user_fictif&amp;nbsp;»&lt;/nowiki&gt;

&lt;nowiki&gt;# adduser «&amp;nbsp;vous&amp;nbsp;»&lt;/nowiki&gt;

&lt;nowiki&gt;# cd /usr/bin/local/ &amp;&amp; wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip&lt;/nowiki&gt;

&lt;nowiki&gt;# exit&lt;/nowiki&gt;Si tout se passe bien root n'est pas près d'avoir la main mais vous serez obligé de donner votre MDP à tout bout de champ car il n'est valable que dans une seule console et pour une seule opération.

=== C'est à vous de jouer ===

 $ sudo nano /etc/hosts pour rétablir la liste des hosts

 $ sudo smxi -e (upgrade du kernel) et reboot sur le nouveau (n'oubliez pas le 3)

 $ sudo smxi -e upgrade, nettoyage des paquets inutiles, installation graphique …

Profitez de ce laps de temps pour générer les clés ssh, la génération étant d'autant plus rapide que la circulation des informations est intense sur le bus (ALT + F2)

Démarrer la session graphique et servez vous de yakuake comme console, vous allez voir&amp;nbsp;!

Bon F12

 $ sudo aptitude install iceweasel iceweasel-l10n-fr icedove icedove-l10n-fr sysv-rc-conf kde-&amp;nbsp;10n-fr apt-file openssh-server

 $ sudo /etc/init.d/ssh start

 $ sudo nano /etc/modprobe.d/alsa-base.conf

 options snd-hda-intel model-auto

A ce stade utiliser les drivers de opt pour finir d'installer vos périphériques exotiques


Vous devriez avoir une machine presque fonctionnelle:D

[[Catégorie:Installation]]</text>
      <sha1>a9sf28ps58m354ml29tg9gfect6sxdd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2145</id>
      <parentid>2144</parentid>
      <timestamp>2010-09-29T17:56:42Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* C'est à root de jouer */</comment>
      <text xml:space="preserve" bytes="6898">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


Installer Aptosid

== Pourquoi celle là et pas la vraie Sid ==

Vous êtes tentés par l'installation d'une sid mais vous avez un peu peur de ne pas être à la hauteur.

Bien sûr le forum est là mais si vous pouviez avoir quelqu'un derrière vous pour vous guider ce serait mieux.

A défaut d'avoir quelqu'un derrière je vous propose une sid revue et corrigée par de grands développeurs.

J'ai nommé «&amp;nbsp;aptosid&amp;nbsp;» (précédemment sidux). Ce sont les mêmes développeurs, seul le nom a changé.

En plus de sa «&amp;nbsp;presque&amp;nbsp;» stabilité, nous n'aurons pas à nous soucier de sa francisation, et si nous n'avons pas trop de matériel exotique tout va fonctionner dès l'installation. Son mode «&amp;nbsp;live&amp;nbsp;» va d'ailleurs nous permettre de vérifier avant que c'est vrai.

Bien sûr avant de graver votre cd-live [[Vérifier_le_md5_d'une_image_iso|vous avez vérifié le md5 du télé-chargement]] et celui de la gravure.

Il n'est nullement obligatoire de choisir LVM, ni EXT4, ni ma manière de dénommer les volumes, pas même de suivre mon découpage pour que le mode d'emploi cesse d'être valable.

Et si vous n'aimez pas KDE il existe une version XFCE bien plus légère. 

=== L'ordinateur ===

vous avez environ 15 Go de disponible en un ou plusieurs morceaux (partitions primaires et/ou logiques) sur un ou plusieurs disques.

=== Comme toutes les sid ===

Il est hors de question de la mettre à jour une fois de temps en temps sous peine de dégats. Une sid cela s'entretient journellement.

== Les options choisies ==

=== Sudo ===

Mais pas celui des autres, un sudo sécurisé par quelques options, dont la première est que l'utilisateur responsable ait un vrai mot de passe, pas le nom de mon chien « Pataud » ==

=== Le couple smxi/sgfxi ===

Pour ne pas remettre au lendemain la partie fastidieuse des mises à jour que l'on remet sans cesse au lendemain et pour ne pas scier la branche sur laquelle on est assis (mettre à jour la partie graphique pendant qu'elle est active).

=== Séparer nettement en volumes logiques séparés ===

Ce qui seras conservé dans tous les cas, ce qui peut provoquer des blocages systèmes, et le système lui même.

=== Ext4 === 

Opter pour le dernier système de fichier ext connu alors que Netinstall ou Businesscard stable ne le gère pas encore

== Système de volumes logiques (lvm2) ==

=== Initialiser ===

Initialiser tous les morceaux que vous avez pu glaner sur vos disques

 # pvcreate /dev/sdXY /dev/sdYZ « vg_name »

=== Regrouper ===

Regroupr tous ces morceaux en un espace virtuel que nous allons pouvoir découper en volume logique, l'équivalent des anciennes partitions, sans avoir ces fameuses limitations.

 # vgcreate

=== Créer ===

Création d'un volume de 5 Go nommé lv_name dans vg_name

# lvcreate -L5G -n « lv_name » vg_name

=== Nommage et taille ===

Ma notation des noms de volume et leur taille

* lv_root 1Go
* lv_usr 8Go - Pour avoir l'avenir devant moi
* lv_var 3Go - Pour éviter les «&amp;nbsp;DDOS&amp;nbsp;» des logs
* lv_tmp 5Go - Pour le download d'un dvd
* lv_opt 1Go - Pour y mettre les drivers de vieux matériels
* lv_home 6Go
* lv_swap 1Go - A agrandir a la taille de la RAM pour mettre en sommeil 

Soit un total de 19 Go sans compter /home ou 25 en tout

=== Formater ===

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name&lt;/nowiki&gt;

=== Installer ===

Comme d'habitude vous aurez à choisir la langue, les mots de passe, le nom de la machine, l'emplacement du grub&amp;nbsp;: Si vous ne choisissez pas le MBR ne venez pas vous plaindre. Si d'autres systèmes cohabitent avec celui-ci ils seront reconnus et vous les aurez au menu.

=== Réinstallation ===

Le cas particulier de le réinstallation (le bug de la chaise au clavier)

Seuls les volumes root, usr, var, tmp sont à formater

== Marche à suivre. ==

=== Démarrer le cd-live ===

Ouvrir une console et modifier son profile si nécessaire

 $ su &lt;nowiki&gt;==&gt; on devient root&lt;/nowiki&gt;

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name (root, usr, var, tmp …)&lt;/nowiki&gt;

=== Lancer l'installation ===

Désigner les différentes partitions dans les cases prévues à cet effet

Si vous avez choisi le français, seuls les expatriés auront à rectifier le fuseau horaire

Un mot de passe root

Un utilisateur inexistant précédemment dans home et un mot de passe

Un nom pour votre machine

Lancer l'installation.

Dans quelques minutes elle sera terminée.

=== Lancer la nouvelle installation ===

Au menu «&amp;nbsp;grub&amp;nbsp;» entrer E pour editer le menu.

Sur la ligne «&amp;nbsp;linux&amp;nbsp;» après le «&amp;nbsp;quiet&amp;nbsp;» ajouter un 3 (c'est le level multi user en console)

CTRL + x pour démarrer

=== C'est à root de jouer ===

On se connecte en root avec son MDP

 # apt-get update

Avant tout le monde:
 # apt-get install apt-listbugs

Si l'on est un fan pour que tout le reste soit homogène, et à condition que aptitude ne soit pas buguée:
 # apt-get install aptitude

 # aptitude install nano (yakuake numlockx linuxlogo)

 # nano /etc/sudoers

 Defaults:ALL timestamp_timeout=0
 Defaults tty_tickets
 
 &quot;vous&quot; ALL=(ALL) ALL

 # userdel -r «&amp;nbsp;user_fictif&amp;nbsp;»
 # adduser «&amp;nbsp;vous&amp;nbsp;»

 # cd /usr/bin/local/ &amp;&amp; wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip

 # exit

Si tout se passe bien root n'est pas près d'avoir la main mais vous serez obligé de donner votre MDP à tout bout de champ car il n'est valable que dans une seule console et pour une seule opération.

=== C'est à vous de jouer ===

 $ sudo nano /etc/hosts pour rétablir la liste des hosts

 $ sudo smxi -e (upgrade du kernel) et reboot sur le nouveau (n'oubliez pas le 3)

 $ sudo smxi -e upgrade, nettoyage des paquets inutiles, installation graphique …

Profitez de ce laps de temps pour générer les clés ssh, la génération étant d'autant plus rapide que la circulation des informations est intense sur le bus (ALT + F2)

Démarrer la session graphique et servez vous de yakuake comme console, vous allez voir&amp;nbsp;!

Bon F12

 $ sudo aptitude install iceweasel iceweasel-l10n-fr icedove icedove-l10n-fr sysv-rc-conf kde-&amp;nbsp;10n-fr apt-file openssh-server

 $ sudo /etc/init.d/ssh start

 $ sudo nano /etc/modprobe.d/alsa-base.conf

 options snd-hda-intel model-auto

A ce stade utiliser les drivers de opt pour finir d'installer vos périphériques exotiques


Vous devriez avoir une machine presque fonctionnelle:D

[[Catégorie:Installation]]</text>
      <sha1>a3uvolulrupxzlqx2c649af452ck5z6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2146</id>
      <parentid>2145</parentid>
      <timestamp>2010-09-29T18:48:49Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Le couple smxi/sgfxi */</comment>
      <text xml:space="preserve" bytes="6901">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


Installer Aptosid

== Pourquoi celle là et pas la vraie Sid ==

Vous êtes tentés par l'installation d'une sid mais vous avez un peu peur de ne pas être à la hauteur.

Bien sûr le forum est là mais si vous pouviez avoir quelqu'un derrière vous pour vous guider ce serait mieux.

A défaut d'avoir quelqu'un derrière je vous propose une sid revue et corrigée par de grands développeurs.

J'ai nommé «&amp;nbsp;aptosid&amp;nbsp;» (précédemment sidux). Ce sont les mêmes développeurs, seul le nom a changé.

En plus de sa «&amp;nbsp;presque&amp;nbsp;» stabilité, nous n'aurons pas à nous soucier de sa francisation, et si nous n'avons pas trop de matériel exotique tout va fonctionner dès l'installation. Son mode «&amp;nbsp;live&amp;nbsp;» va d'ailleurs nous permettre de vérifier avant que c'est vrai.

Bien sûr avant de graver votre cd-live [[Vérifier_le_md5_d'une_image_iso|vous avez vérifié le md5 du télé-chargement]] et celui de la gravure.

Il n'est nullement obligatoire de choisir LVM, ni EXT4, ni ma manière de dénommer les volumes, pas même de suivre mon découpage pour que le mode d'emploi cesse d'être valable.

Et si vous n'aimez pas KDE il existe une version XFCE bien plus légère. 

=== L'ordinateur ===

vous avez environ 15 Go de disponible en un ou plusieurs morceaux (partitions primaires et/ou logiques) sur un ou plusieurs disques.

=== Comme toutes les sid ===

Il est hors de question de la mettre à jour une fois de temps en temps sous peine de dégats. Une sid cela s'entretient journellement.

== Les options choisies ==

=== Sudo ===

Mais pas celui des autres, un sudo sécurisé par quelques options, dont la première est que l'utilisateur responsable ait un vrai mot de passe, pas le nom de mon chien « Pataud » ==

=== Le couple smxi/sgfxi ===

Pour ne pas remettre à plus tard la partie fastidieuse des mises à jour que l'on repousse sans cesse au lendemain et pour ne pas scier la branche sur laquelle on est assis (mettre à jour la partie graphique pendant qu'elle est active).

=== Séparer nettement en volumes logiques séparés ===

Ce qui seras conservé dans tous les cas, ce qui peut provoquer des blocages systèmes, et le système lui même.

=== Ext4 === 

Opter pour le dernier système de fichier ext connu alors que Netinstall ou Businesscard stable ne le gère pas encore

== Système de volumes logiques (lvm2) ==

=== Initialiser ===

Initialiser tous les morceaux que vous avez pu glaner sur vos disques

 # pvcreate /dev/sdXY /dev/sdYZ « vg_name »

=== Regrouper ===

Regroupr tous ces morceaux en un espace virtuel que nous allons pouvoir découper en volume logique, l'équivalent des anciennes partitions, sans avoir ces fameuses limitations.

 # vgcreate

=== Créer ===

Création d'un volume de 5 Go nommé lv_name dans vg_name

# lvcreate -L5G -n « lv_name » vg_name

=== Nommage et taille ===

Ma notation des noms de volume et leur taille

* lv_root 1Go
* lv_usr 8Go - Pour avoir l'avenir devant moi
* lv_var 3Go - Pour éviter les «&amp;nbsp;DDOS&amp;nbsp;» des logs
* lv_tmp 5Go - Pour le download d'un dvd
* lv_opt 1Go - Pour y mettre les drivers de vieux matériels
* lv_home 6Go
* lv_swap 1Go - A agrandir a la taille de la RAM pour mettre en sommeil 

Soit un total de 19 Go sans compter /home ou 25 en tout

=== Formater ===

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name&lt;/nowiki&gt;

=== Installer ===

Comme d'habitude vous aurez à choisir la langue, les mots de passe, le nom de la machine, l'emplacement du grub&amp;nbsp;: Si vous ne choisissez pas le MBR ne venez pas vous plaindre. Si d'autres systèmes cohabitent avec celui-ci ils seront reconnus et vous les aurez au menu.

=== Réinstallation ===

Le cas particulier de le réinstallation (le bug de la chaise au clavier)

Seuls les volumes root, usr, var, tmp sont à formater

== Marche à suivre. ==

=== Démarrer le cd-live ===

Ouvrir une console et modifier son profile si nécessaire

 $ su &lt;nowiki&gt;==&gt; on devient root&lt;/nowiki&gt;

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name (root, usr, var, tmp …)&lt;/nowiki&gt;

=== Lancer l'installation ===

Désigner les différentes partitions dans les cases prévues à cet effet

Si vous avez choisi le français, seuls les expatriés auront à rectifier le fuseau horaire

Un mot de passe root

Un utilisateur inexistant précédemment dans home et un mot de passe

Un nom pour votre machine

Lancer l'installation.

Dans quelques minutes elle sera terminée.

=== Lancer la nouvelle installation ===

Au menu «&amp;nbsp;grub&amp;nbsp;» entrer E pour editer le menu.

Sur la ligne «&amp;nbsp;linux&amp;nbsp;» après le «&amp;nbsp;quiet&amp;nbsp;» ajouter un 3 (c'est le level multi user en console)

CTRL + x pour démarrer

=== C'est à root de jouer ===

On se connecte en root avec son MDP

 # apt-get update

Avant tout le monde:
 # apt-get install apt-listbugs

Si l'on est un fan pour que tout le reste soit homogène, et à condition que aptitude ne soit pas buguée:
 # apt-get install aptitude

 # aptitude install nano (yakuake numlockx linuxlogo)

 # nano /etc/sudoers

 Defaults:ALL timestamp_timeout=0
 Defaults tty_tickets
 
 &quot;vous&quot; ALL=(ALL) ALL

 # userdel -r «&amp;nbsp;user_fictif&amp;nbsp;»
 # adduser «&amp;nbsp;vous&amp;nbsp;»

 # cd /usr/bin/local/ &amp;&amp; wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip

 # exit

Si tout se passe bien root n'est pas près d'avoir la main mais vous serez obligé de donner votre MDP à tout bout de champ car il n'est valable que dans une seule console et pour une seule opération.

=== C'est à vous de jouer ===

 $ sudo nano /etc/hosts pour rétablir la liste des hosts

 $ sudo smxi -e (upgrade du kernel) et reboot sur le nouveau (n'oubliez pas le 3)

 $ sudo smxi -e upgrade, nettoyage des paquets inutiles, installation graphique …

Profitez de ce laps de temps pour générer les clés ssh, la génération étant d'autant plus rapide que la circulation des informations est intense sur le bus (ALT + F2)

Démarrer la session graphique et servez vous de yakuake comme console, vous allez voir&amp;nbsp;!

Bon F12

 $ sudo aptitude install iceweasel iceweasel-l10n-fr icedove icedove-l10n-fr sysv-rc-conf kde-&amp;nbsp;10n-fr apt-file openssh-server

 $ sudo /etc/init.d/ssh start

 $ sudo nano /etc/modprobe.d/alsa-base.conf

 options snd-hda-intel model-auto

A ce stade utiliser les drivers de opt pour finir d'installer vos périphériques exotiques


Vous devriez avoir une machine presque fonctionnelle:D

[[Catégorie:Installation]]</text>
      <sha1>dhooo21r32700n45moci3k5yt68jakr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2147</id>
      <parentid>2146</parentid>
      <timestamp>2010-09-29T18:49:06Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Regrouper */</comment>
      <text xml:space="preserve" bytes="6902">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


Installer Aptosid

== Pourquoi celle là et pas la vraie Sid ==

Vous êtes tentés par l'installation d'une sid mais vous avez un peu peur de ne pas être à la hauteur.

Bien sûr le forum est là mais si vous pouviez avoir quelqu'un derrière vous pour vous guider ce serait mieux.

A défaut d'avoir quelqu'un derrière je vous propose une sid revue et corrigée par de grands développeurs.

J'ai nommé «&amp;nbsp;aptosid&amp;nbsp;» (précédemment sidux). Ce sont les mêmes développeurs, seul le nom a changé.

En plus de sa «&amp;nbsp;presque&amp;nbsp;» stabilité, nous n'aurons pas à nous soucier de sa francisation, et si nous n'avons pas trop de matériel exotique tout va fonctionner dès l'installation. Son mode «&amp;nbsp;live&amp;nbsp;» va d'ailleurs nous permettre de vérifier avant que c'est vrai.

Bien sûr avant de graver votre cd-live [[Vérifier_le_md5_d'une_image_iso|vous avez vérifié le md5 du télé-chargement]] et celui de la gravure.

Il n'est nullement obligatoire de choisir LVM, ni EXT4, ni ma manière de dénommer les volumes, pas même de suivre mon découpage pour que le mode d'emploi cesse d'être valable.

Et si vous n'aimez pas KDE il existe une version XFCE bien plus légère. 

=== L'ordinateur ===

vous avez environ 15 Go de disponible en un ou plusieurs morceaux (partitions primaires et/ou logiques) sur un ou plusieurs disques.

=== Comme toutes les sid ===

Il est hors de question de la mettre à jour une fois de temps en temps sous peine de dégats. Une sid cela s'entretient journellement.

== Les options choisies ==

=== Sudo ===

Mais pas celui des autres, un sudo sécurisé par quelques options, dont la première est que l'utilisateur responsable ait un vrai mot de passe, pas le nom de mon chien « Pataud » ==

=== Le couple smxi/sgfxi ===

Pour ne pas remettre à plus tard la partie fastidieuse des mises à jour que l'on repousse sans cesse au lendemain et pour ne pas scier la branche sur laquelle on est assis (mettre à jour la partie graphique pendant qu'elle est active).

=== Séparer nettement en volumes logiques séparés ===

Ce qui seras conservé dans tous les cas, ce qui peut provoquer des blocages systèmes, et le système lui même.

=== Ext4 === 

Opter pour le dernier système de fichier ext connu alors que Netinstall ou Businesscard stable ne le gère pas encore

== Système de volumes logiques (lvm2) ==

=== Initialiser ===

Initialiser tous les morceaux que vous avez pu glaner sur vos disques

 # pvcreate /dev/sdXY /dev/sdYZ « vg_name »

=== Regrouper ===

Regrouper tous ces morceaux en un espace virtuel que nous allons pouvoir découper en volume logique, l'équivalent des anciennes partitions, sans avoir ces fameuses limitations.

 # vgcreate

=== Créer ===

Création d'un volume de 5 Go nommé lv_name dans vg_name

# lvcreate -L5G -n « lv_name » vg_name

=== Nommage et taille ===

Ma notation des noms de volume et leur taille

* lv_root 1Go
* lv_usr 8Go - Pour avoir l'avenir devant moi
* lv_var 3Go - Pour éviter les «&amp;nbsp;DDOS&amp;nbsp;» des logs
* lv_tmp 5Go - Pour le download d'un dvd
* lv_opt 1Go - Pour y mettre les drivers de vieux matériels
* lv_home 6Go
* lv_swap 1Go - A agrandir a la taille de la RAM pour mettre en sommeil 

Soit un total de 19 Go sans compter /home ou 25 en tout

=== Formater ===

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name&lt;/nowiki&gt;

=== Installer ===

Comme d'habitude vous aurez à choisir la langue, les mots de passe, le nom de la machine, l'emplacement du grub&amp;nbsp;: Si vous ne choisissez pas le MBR ne venez pas vous plaindre. Si d'autres systèmes cohabitent avec celui-ci ils seront reconnus et vous les aurez au menu.

=== Réinstallation ===

Le cas particulier de le réinstallation (le bug de la chaise au clavier)

Seuls les volumes root, usr, var, tmp sont à formater

== Marche à suivre. ==

=== Démarrer le cd-live ===

Ouvrir une console et modifier son profile si nécessaire

 $ su &lt;nowiki&gt;==&gt; on devient root&lt;/nowiki&gt;

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name (root, usr, var, tmp …)&lt;/nowiki&gt;

=== Lancer l'installation ===

Désigner les différentes partitions dans les cases prévues à cet effet

Si vous avez choisi le français, seuls les expatriés auront à rectifier le fuseau horaire

Un mot de passe root

Un utilisateur inexistant précédemment dans home et un mot de passe

Un nom pour votre machine

Lancer l'installation.

Dans quelques minutes elle sera terminée.

=== Lancer la nouvelle installation ===

Au menu «&amp;nbsp;grub&amp;nbsp;» entrer E pour editer le menu.

Sur la ligne «&amp;nbsp;linux&amp;nbsp;» après le «&amp;nbsp;quiet&amp;nbsp;» ajouter un 3 (c'est le level multi user en console)

CTRL + x pour démarrer

=== C'est à root de jouer ===

On se connecte en root avec son MDP

 # apt-get update

Avant tout le monde:
 # apt-get install apt-listbugs

Si l'on est un fan pour que tout le reste soit homogène, et à condition que aptitude ne soit pas buguée:
 # apt-get install aptitude

 # aptitude install nano (yakuake numlockx linuxlogo)

 # nano /etc/sudoers

 Defaults:ALL timestamp_timeout=0
 Defaults tty_tickets
 
 &quot;vous&quot; ALL=(ALL) ALL

 # userdel -r «&amp;nbsp;user_fictif&amp;nbsp;»
 # adduser «&amp;nbsp;vous&amp;nbsp;»

 # cd /usr/bin/local/ &amp;&amp; wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip

 # exit

Si tout se passe bien root n'est pas près d'avoir la main mais vous serez obligé de donner votre MDP à tout bout de champ car il n'est valable que dans une seule console et pour une seule opération.

=== C'est à vous de jouer ===

 $ sudo nano /etc/hosts pour rétablir la liste des hosts

 $ sudo smxi -e (upgrade du kernel) et reboot sur le nouveau (n'oubliez pas le 3)

 $ sudo smxi -e upgrade, nettoyage des paquets inutiles, installation graphique …

Profitez de ce laps de temps pour générer les clés ssh, la génération étant d'autant plus rapide que la circulation des informations est intense sur le bus (ALT + F2)

Démarrer la session graphique et servez vous de yakuake comme console, vous allez voir&amp;nbsp;!

Bon F12

 $ sudo aptitude install iceweasel iceweasel-l10n-fr icedove icedove-l10n-fr sysv-rc-conf kde-&amp;nbsp;10n-fr apt-file openssh-server

 $ sudo /etc/init.d/ssh start

 $ sudo nano /etc/modprobe.d/alsa-base.conf

 options snd-hda-intel model-auto

A ce stade utiliser les drivers de opt pour finir d'installer vos périphériques exotiques


Vous devriez avoir une machine presque fonctionnelle:D

[[Catégorie:Installation]]</text>
      <sha1>4uh1lnhv82d6t7de6m6tzrjnvkyu3j2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2148</id>
      <parentid>2147</parentid>
      <timestamp>2010-09-29T18:51:26Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Séparer nettement en volumes logiques séparés */</comment>
      <text xml:space="preserve" bytes="6901">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


Installer Aptosid

== Pourquoi celle là et pas la vraie Sid ==

Vous êtes tentés par l'installation d'une sid mais vous avez un peu peur de ne pas être à la hauteur.

Bien sûr le forum est là mais si vous pouviez avoir quelqu'un derrière vous pour vous guider ce serait mieux.

A défaut d'avoir quelqu'un derrière je vous propose une sid revue et corrigée par de grands développeurs.

J'ai nommé «&amp;nbsp;aptosid&amp;nbsp;» (précédemment sidux). Ce sont les mêmes développeurs, seul le nom a changé.

En plus de sa «&amp;nbsp;presque&amp;nbsp;» stabilité, nous n'aurons pas à nous soucier de sa francisation, et si nous n'avons pas trop de matériel exotique tout va fonctionner dès l'installation. Son mode «&amp;nbsp;live&amp;nbsp;» va d'ailleurs nous permettre de vérifier avant que c'est vrai.

Bien sûr avant de graver votre cd-live [[Vérifier_le_md5_d'une_image_iso|vous avez vérifié le md5 du télé-chargement]] et celui de la gravure.

Il n'est nullement obligatoire de choisir LVM, ni EXT4, ni ma manière de dénommer les volumes, pas même de suivre mon découpage pour que le mode d'emploi cesse d'être valable.

Et si vous n'aimez pas KDE il existe une version XFCE bien plus légère. 

=== L'ordinateur ===

vous avez environ 15 Go de disponible en un ou plusieurs morceaux (partitions primaires et/ou logiques) sur un ou plusieurs disques.

=== Comme toutes les sid ===

Il est hors de question de la mettre à jour une fois de temps en temps sous peine de dégats. Une sid cela s'entretient journellement.

== Les options choisies ==

=== Sudo ===

Mais pas celui des autres, un sudo sécurisé par quelques options, dont la première est que l'utilisateur responsable ait un vrai mot de passe, pas le nom de mon chien « Pataud » ==

=== Le couple smxi/sgfxi ===

Pour ne pas remettre à plus tard la partie fastidieuse des mises à jour que l'on repousse sans cesse au lendemain et pour ne pas scier la branche sur laquelle on est assis (mettre à jour la partie graphique pendant qu'elle est active).

=== Séparer nettement en volumes logiques séparés ===

Ce qui sera conservé dans tous les cas, ce qui peut provoquer des blocages systèmes, et le système lui même.

=== Ext4 === 

Opter pour le dernier système de fichier ext connu alors que Netinstall ou Businesscard stable ne le gère pas encore

== Système de volumes logiques (lvm2) ==

=== Initialiser ===

Initialiser tous les morceaux que vous avez pu glaner sur vos disques

 # pvcreate /dev/sdXY /dev/sdYZ « vg_name »

=== Regrouper ===

Regrouper tous ces morceaux en un espace virtuel que nous allons pouvoir découper en volume logique, l'équivalent des anciennes partitions, sans avoir ces fameuses limitations.

 # vgcreate

=== Créer ===

Création d'un volume de 5 Go nommé lv_name dans vg_name

# lvcreate -L5G -n « lv_name » vg_name

=== Nommage et taille ===

Ma notation des noms de volume et leur taille

* lv_root 1Go
* lv_usr 8Go - Pour avoir l'avenir devant moi
* lv_var 3Go - Pour éviter les «&amp;nbsp;DDOS&amp;nbsp;» des logs
* lv_tmp 5Go - Pour le download d'un dvd
* lv_opt 1Go - Pour y mettre les drivers de vieux matériels
* lv_home 6Go
* lv_swap 1Go - A agrandir a la taille de la RAM pour mettre en sommeil 

Soit un total de 19 Go sans compter /home ou 25 en tout

=== Formater ===

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name&lt;/nowiki&gt;

=== Installer ===

Comme d'habitude vous aurez à choisir la langue, les mots de passe, le nom de la machine, l'emplacement du grub&amp;nbsp;: Si vous ne choisissez pas le MBR ne venez pas vous plaindre. Si d'autres systèmes cohabitent avec celui-ci ils seront reconnus et vous les aurez au menu.

=== Réinstallation ===

Le cas particulier de le réinstallation (le bug de la chaise au clavier)

Seuls les volumes root, usr, var, tmp sont à formater

== Marche à suivre. ==

=== Démarrer le cd-live ===

Ouvrir une console et modifier son profile si nécessaire

 $ su &lt;nowiki&gt;==&gt; on devient root&lt;/nowiki&gt;

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name (root, usr, var, tmp …)&lt;/nowiki&gt;

=== Lancer l'installation ===

Désigner les différentes partitions dans les cases prévues à cet effet

Si vous avez choisi le français, seuls les expatriés auront à rectifier le fuseau horaire

Un mot de passe root

Un utilisateur inexistant précédemment dans home et un mot de passe

Un nom pour votre machine

Lancer l'installation.

Dans quelques minutes elle sera terminée.

=== Lancer la nouvelle installation ===

Au menu «&amp;nbsp;grub&amp;nbsp;» entrer E pour editer le menu.

Sur la ligne «&amp;nbsp;linux&amp;nbsp;» après le «&amp;nbsp;quiet&amp;nbsp;» ajouter un 3 (c'est le level multi user en console)

CTRL + x pour démarrer

=== C'est à root de jouer ===

On se connecte en root avec son MDP

 # apt-get update

Avant tout le monde:
 # apt-get install apt-listbugs

Si l'on est un fan pour que tout le reste soit homogène, et à condition que aptitude ne soit pas buguée:
 # apt-get install aptitude

 # aptitude install nano (yakuake numlockx linuxlogo)

 # nano /etc/sudoers

 Defaults:ALL timestamp_timeout=0
 Defaults tty_tickets
 
 &quot;vous&quot; ALL=(ALL) ALL

 # userdel -r «&amp;nbsp;user_fictif&amp;nbsp;»
 # adduser «&amp;nbsp;vous&amp;nbsp;»

 # cd /usr/bin/local/ &amp;&amp; wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip

 # exit

Si tout se passe bien root n'est pas près d'avoir la main mais vous serez obligé de donner votre MDP à tout bout de champ car il n'est valable que dans une seule console et pour une seule opération.

=== C'est à vous de jouer ===

 $ sudo nano /etc/hosts pour rétablir la liste des hosts

 $ sudo smxi -e (upgrade du kernel) et reboot sur le nouveau (n'oubliez pas le 3)

 $ sudo smxi -e upgrade, nettoyage des paquets inutiles, installation graphique …

Profitez de ce laps de temps pour générer les clés ssh, la génération étant d'autant plus rapide que la circulation des informations est intense sur le bus (ALT + F2)

Démarrer la session graphique et servez vous de yakuake comme console, vous allez voir&amp;nbsp;!

Bon F12

 $ sudo aptitude install iceweasel iceweasel-l10n-fr icedove icedove-l10n-fr sysv-rc-conf kde-&amp;nbsp;10n-fr apt-file openssh-server

 $ sudo /etc/init.d/ssh start

 $ sudo nano /etc/modprobe.d/alsa-base.conf

 options snd-hda-intel model-auto

A ce stade utiliser les drivers de opt pour finir d'installer vos périphériques exotiques


Vous devriez avoir une machine presque fonctionnelle:D

[[Catégorie:Installation]]</text>
      <sha1>bk1pb45jxocrlz9y7jk5cexi5aoaabv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2149</id>
      <parentid>2148</parentid>
      <timestamp>2010-09-29T18:52:24Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Démarrer le cd-live */</comment>
      <text xml:space="preserve" bytes="6900">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


Installer Aptosid

== Pourquoi celle là et pas la vraie Sid ==

Vous êtes tentés par l'installation d'une sid mais vous avez un peu peur de ne pas être à la hauteur.

Bien sûr le forum est là mais si vous pouviez avoir quelqu'un derrière vous pour vous guider ce serait mieux.

A défaut d'avoir quelqu'un derrière je vous propose une sid revue et corrigée par de grands développeurs.

J'ai nommé «&amp;nbsp;aptosid&amp;nbsp;» (précédemment sidux). Ce sont les mêmes développeurs, seul le nom a changé.

En plus de sa «&amp;nbsp;presque&amp;nbsp;» stabilité, nous n'aurons pas à nous soucier de sa francisation, et si nous n'avons pas trop de matériel exotique tout va fonctionner dès l'installation. Son mode «&amp;nbsp;live&amp;nbsp;» va d'ailleurs nous permettre de vérifier avant que c'est vrai.

Bien sûr avant de graver votre cd-live [[Vérifier_le_md5_d'une_image_iso|vous avez vérifié le md5 du télé-chargement]] et celui de la gravure.

Il n'est nullement obligatoire de choisir LVM, ni EXT4, ni ma manière de dénommer les volumes, pas même de suivre mon découpage pour que le mode d'emploi cesse d'être valable.

Et si vous n'aimez pas KDE il existe une version XFCE bien plus légère. 

=== L'ordinateur ===

vous avez environ 15 Go de disponible en un ou plusieurs morceaux (partitions primaires et/ou logiques) sur un ou plusieurs disques.

=== Comme toutes les sid ===

Il est hors de question de la mettre à jour une fois de temps en temps sous peine de dégats. Une sid cela s'entretient journellement.

== Les options choisies ==

=== Sudo ===

Mais pas celui des autres, un sudo sécurisé par quelques options, dont la première est que l'utilisateur responsable ait un vrai mot de passe, pas le nom de mon chien « Pataud » ==

=== Le couple smxi/sgfxi ===

Pour ne pas remettre à plus tard la partie fastidieuse des mises à jour que l'on repousse sans cesse au lendemain et pour ne pas scier la branche sur laquelle on est assis (mettre à jour la partie graphique pendant qu'elle est active).

=== Séparer nettement en volumes logiques séparés ===

Ce qui sera conservé dans tous les cas, ce qui peut provoquer des blocages systèmes, et le système lui même.

=== Ext4 === 

Opter pour le dernier système de fichier ext connu alors que Netinstall ou Businesscard stable ne le gère pas encore

== Système de volumes logiques (lvm2) ==

=== Initialiser ===

Initialiser tous les morceaux que vous avez pu glaner sur vos disques

 # pvcreate /dev/sdXY /dev/sdYZ « vg_name »

=== Regrouper ===

Regrouper tous ces morceaux en un espace virtuel que nous allons pouvoir découper en volume logique, l'équivalent des anciennes partitions, sans avoir ces fameuses limitations.

 # vgcreate

=== Créer ===

Création d'un volume de 5 Go nommé lv_name dans vg_name

# lvcreate -L5G -n « lv_name » vg_name

=== Nommage et taille ===

Ma notation des noms de volume et leur taille

* lv_root 1Go
* lv_usr 8Go - Pour avoir l'avenir devant moi
* lv_var 3Go - Pour éviter les «&amp;nbsp;DDOS&amp;nbsp;» des logs
* lv_tmp 5Go - Pour le download d'un dvd
* lv_opt 1Go - Pour y mettre les drivers de vieux matériels
* lv_home 6Go
* lv_swap 1Go - A agrandir a la taille de la RAM pour mettre en sommeil 

Soit un total de 19 Go sans compter /home ou 25 en tout

=== Formater ===

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name&lt;/nowiki&gt;

=== Installer ===

Comme d'habitude vous aurez à choisir la langue, les mots de passe, le nom de la machine, l'emplacement du grub&amp;nbsp;: Si vous ne choisissez pas le MBR ne venez pas vous plaindre. Si d'autres systèmes cohabitent avec celui-ci ils seront reconnus et vous les aurez au menu.

=== Réinstallation ===

Le cas particulier de le réinstallation (le bug de la chaise au clavier)

Seuls les volumes root, usr, var, tmp sont à formater

== Marche à suivre. ==

=== Démarrer le cd-live ===

Ouvrir une console et modifier son profil si nécessaire

 $ su &lt;nowiki&gt;==&gt; on devient root&lt;/nowiki&gt;

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name (root, usr, var, tmp …)&lt;/nowiki&gt;

=== Lancer l'installation ===

Désigner les différentes partitions dans les cases prévues à cet effet

Si vous avez choisi le français, seuls les expatriés auront à rectifier le fuseau horaire

Un mot de passe root

Un utilisateur inexistant précédemment dans home et un mot de passe

Un nom pour votre machine

Lancer l'installation.

Dans quelques minutes elle sera terminée.

=== Lancer la nouvelle installation ===

Au menu «&amp;nbsp;grub&amp;nbsp;» entrer E pour editer le menu.

Sur la ligne «&amp;nbsp;linux&amp;nbsp;» après le «&amp;nbsp;quiet&amp;nbsp;» ajouter un 3 (c'est le level multi user en console)

CTRL + x pour démarrer

=== C'est à root de jouer ===

On se connecte en root avec son MDP

 # apt-get update

Avant tout le monde:
 # apt-get install apt-listbugs

Si l'on est un fan pour que tout le reste soit homogène, et à condition que aptitude ne soit pas buguée:
 # apt-get install aptitude

 # aptitude install nano (yakuake numlockx linuxlogo)

 # nano /etc/sudoers

 Defaults:ALL timestamp_timeout=0
 Defaults tty_tickets
 
 &quot;vous&quot; ALL=(ALL) ALL

 # userdel -r «&amp;nbsp;user_fictif&amp;nbsp;»
 # adduser «&amp;nbsp;vous&amp;nbsp;»

 # cd /usr/bin/local/ &amp;&amp; wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip

 # exit

Si tout se passe bien root n'est pas près d'avoir la main mais vous serez obligé de donner votre MDP à tout bout de champ car il n'est valable que dans une seule console et pour une seule opération.

=== C'est à vous de jouer ===

 $ sudo nano /etc/hosts pour rétablir la liste des hosts

 $ sudo smxi -e (upgrade du kernel) et reboot sur le nouveau (n'oubliez pas le 3)

 $ sudo smxi -e upgrade, nettoyage des paquets inutiles, installation graphique …

Profitez de ce laps de temps pour générer les clés ssh, la génération étant d'autant plus rapide que la circulation des informations est intense sur le bus (ALT + F2)

Démarrer la session graphique et servez vous de yakuake comme console, vous allez voir&amp;nbsp;!

Bon F12

 $ sudo aptitude install iceweasel iceweasel-l10n-fr icedove icedove-l10n-fr sysv-rc-conf kde-&amp;nbsp;10n-fr apt-file openssh-server

 $ sudo /etc/init.d/ssh start

 $ sudo nano /etc/modprobe.d/alsa-base.conf

 options snd-hda-intel model-auto

A ce stade utiliser les drivers de opt pour finir d'installer vos périphériques exotiques


Vous devriez avoir une machine presque fonctionnelle:D

[[Catégorie:Installation]]</text>
      <sha1>7jsojvv4w1axsogtbedj0db9xqfmqt0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2150</id>
      <parentid>2149</parentid>
      <timestamp>2010-09-29T18:52:50Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Lancer la nouvelle installation */</comment>
      <text xml:space="preserve" bytes="6901">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


Installer Aptosid

== Pourquoi celle là et pas la vraie Sid ==

Vous êtes tentés par l'installation d'une sid mais vous avez un peu peur de ne pas être à la hauteur.

Bien sûr le forum est là mais si vous pouviez avoir quelqu'un derrière vous pour vous guider ce serait mieux.

A défaut d'avoir quelqu'un derrière je vous propose une sid revue et corrigée par de grands développeurs.

J'ai nommé «&amp;nbsp;aptosid&amp;nbsp;» (précédemment sidux). Ce sont les mêmes développeurs, seul le nom a changé.

En plus de sa «&amp;nbsp;presque&amp;nbsp;» stabilité, nous n'aurons pas à nous soucier de sa francisation, et si nous n'avons pas trop de matériel exotique tout va fonctionner dès l'installation. Son mode «&amp;nbsp;live&amp;nbsp;» va d'ailleurs nous permettre de vérifier avant que c'est vrai.

Bien sûr avant de graver votre cd-live [[Vérifier_le_md5_d'une_image_iso|vous avez vérifié le md5 du télé-chargement]] et celui de la gravure.

Il n'est nullement obligatoire de choisir LVM, ni EXT4, ni ma manière de dénommer les volumes, pas même de suivre mon découpage pour que le mode d'emploi cesse d'être valable.

Et si vous n'aimez pas KDE il existe une version XFCE bien plus légère. 

=== L'ordinateur ===

vous avez environ 15 Go de disponible en un ou plusieurs morceaux (partitions primaires et/ou logiques) sur un ou plusieurs disques.

=== Comme toutes les sid ===

Il est hors de question de la mettre à jour une fois de temps en temps sous peine de dégats. Une sid cela s'entretient journellement.

== Les options choisies ==

=== Sudo ===

Mais pas celui des autres, un sudo sécurisé par quelques options, dont la première est que l'utilisateur responsable ait un vrai mot de passe, pas le nom de mon chien « Pataud » ==

=== Le couple smxi/sgfxi ===

Pour ne pas remettre à plus tard la partie fastidieuse des mises à jour que l'on repousse sans cesse au lendemain et pour ne pas scier la branche sur laquelle on est assis (mettre à jour la partie graphique pendant qu'elle est active).

=== Séparer nettement en volumes logiques séparés ===

Ce qui sera conservé dans tous les cas, ce qui peut provoquer des blocages systèmes, et le système lui même.

=== Ext4 === 

Opter pour le dernier système de fichier ext connu alors que Netinstall ou Businesscard stable ne le gère pas encore

== Système de volumes logiques (lvm2) ==

=== Initialiser ===

Initialiser tous les morceaux que vous avez pu glaner sur vos disques

 # pvcreate /dev/sdXY /dev/sdYZ « vg_name »

=== Regrouper ===

Regrouper tous ces morceaux en un espace virtuel que nous allons pouvoir découper en volume logique, l'équivalent des anciennes partitions, sans avoir ces fameuses limitations.

 # vgcreate

=== Créer ===

Création d'un volume de 5 Go nommé lv_name dans vg_name

# lvcreate -L5G -n « lv_name » vg_name

=== Nommage et taille ===

Ma notation des noms de volume et leur taille

* lv_root 1Go
* lv_usr 8Go - Pour avoir l'avenir devant moi
* lv_var 3Go - Pour éviter les «&amp;nbsp;DDOS&amp;nbsp;» des logs
* lv_tmp 5Go - Pour le download d'un dvd
* lv_opt 1Go - Pour y mettre les drivers de vieux matériels
* lv_home 6Go
* lv_swap 1Go - A agrandir a la taille de la RAM pour mettre en sommeil 

Soit un total de 19 Go sans compter /home ou 25 en tout

=== Formater ===

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name&lt;/nowiki&gt;

=== Installer ===

Comme d'habitude vous aurez à choisir la langue, les mots de passe, le nom de la machine, l'emplacement du grub&amp;nbsp;: Si vous ne choisissez pas le MBR ne venez pas vous plaindre. Si d'autres systèmes cohabitent avec celui-ci ils seront reconnus et vous les aurez au menu.

=== Réinstallation ===

Le cas particulier de le réinstallation (le bug de la chaise au clavier)

Seuls les volumes root, usr, var, tmp sont à formater

== Marche à suivre. ==

=== Démarrer le cd-live ===

Ouvrir une console et modifier son profil si nécessaire

 $ su &lt;nowiki&gt;==&gt; on devient root&lt;/nowiki&gt;

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name (root, usr, var, tmp …)&lt;/nowiki&gt;

=== Lancer l'installation ===

Désigner les différentes partitions dans les cases prévues à cet effet

Si vous avez choisi le français, seuls les expatriés auront à rectifier le fuseau horaire

Un mot de passe root

Un utilisateur inexistant précédemment dans home et un mot de passe

Un nom pour votre machine

Lancer l'installation.

Dans quelques minutes elle sera terminée.

=== Lancer la nouvelle installation ===

Au menu «&amp;nbsp;grub&amp;nbsp;» entrer E pour éditer le menu.

Sur la ligne «&amp;nbsp;linux&amp;nbsp;» après le «&amp;nbsp;quiet&amp;nbsp;» ajouter un 3 (c'est le level multi user en console)

CTRL + x pour démarrer

=== C'est à root de jouer ===

On se connecte en root avec son MDP

 # apt-get update

Avant tout le monde:
 # apt-get install apt-listbugs

Si l'on est un fan pour que tout le reste soit homogène, et à condition que aptitude ne soit pas buguée:
 # apt-get install aptitude

 # aptitude install nano (yakuake numlockx linuxlogo)

 # nano /etc/sudoers

 Defaults:ALL timestamp_timeout=0
 Defaults tty_tickets
 
 &quot;vous&quot; ALL=(ALL) ALL

 # userdel -r «&amp;nbsp;user_fictif&amp;nbsp;»
 # adduser «&amp;nbsp;vous&amp;nbsp;»

 # cd /usr/bin/local/ &amp;&amp; wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip

 # exit

Si tout se passe bien root n'est pas près d'avoir la main mais vous serez obligé de donner votre MDP à tout bout de champ car il n'est valable que dans une seule console et pour une seule opération.

=== C'est à vous de jouer ===

 $ sudo nano /etc/hosts pour rétablir la liste des hosts

 $ sudo smxi -e (upgrade du kernel) et reboot sur le nouveau (n'oubliez pas le 3)

 $ sudo smxi -e upgrade, nettoyage des paquets inutiles, installation graphique …

Profitez de ce laps de temps pour générer les clés ssh, la génération étant d'autant plus rapide que la circulation des informations est intense sur le bus (ALT + F2)

Démarrer la session graphique et servez vous de yakuake comme console, vous allez voir&amp;nbsp;!

Bon F12

 $ sudo aptitude install iceweasel iceweasel-l10n-fr icedove icedove-l10n-fr sysv-rc-conf kde-&amp;nbsp;10n-fr apt-file openssh-server

 $ sudo /etc/init.d/ssh start

 $ sudo nano /etc/modprobe.d/alsa-base.conf

 options snd-hda-intel model-auto

A ce stade utiliser les drivers de opt pour finir d'installer vos périphériques exotiques


Vous devriez avoir une machine presque fonctionnelle:D

[[Catégorie:Installation]]</text>
      <sha1>33mig8wq080ewnd26knm5sul6xxa80z</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2152</id>
      <parentid>2150</parentid>
      <timestamp>2010-09-30T05:19:20Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="6940">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


Installer Aptosid

== Pourquoi celle là et pas la vraie Sid ==

Vous êtes tentés par l'installation d'une sid mais vous avez un peu peur de ne pas être à la hauteur.

Bien sûr le forum est là mais si vous pouviez avoir quelqu'un derrière vous pour vous guider ce serait mieux.

A défaut d'avoir quelqu'un derrière je vous propose une sid revue et corrigée par de grands développeurs.

J'ai nommé «&amp;nbsp;aptosid&amp;nbsp;» (précédemment sidux). Ce sont les mêmes développeurs, seul le nom a changé.

En plus de sa «&amp;nbsp;presque&amp;nbsp;» stabilité, nous n'aurons pas à nous soucier de sa francisation, et si nous n'avons pas trop de matériel exotique tout va fonctionner dès l'installation. Son mode «&amp;nbsp;live&amp;nbsp;» va d'ailleurs nous permettre de vérifier avant que c'est vrai.

Bien sûr avant de graver votre cd-live [[Vérifier_le_md5_d'une_image_iso|vous avez vérifié le md5 du télé-chargement]] et celui de la gravure.

Il n'est nullement obligatoire de choisir LVM, ni EXT4, ni ma manière de dénommer les volumes, pas même de suivre mon découpage pour que le mode d'emploi cesse d'être valable.

Et si vous n'aimez pas KDE il existe une version XFCE bien plus légère. 

=== L'ordinateur ===

vous avez environ 15 Go de disponible en un ou plusieurs morceaux (partitions primaires et/ou logiques) sur un ou plusieurs disques.

=== Comme toutes les sid ===

Il est hors de question de la mettre à jour une fois de temps en temps sous peine de dégats. Une sid cela s'entretient journellement.

== Les options choisies ==

=== Sudo ===

Mais pas celui des autres, un sudo sécurisé par quelques options, dont la première est que l'utilisateur responsable ait un vrai mot de passe, pas le nom de mon chien « Pataud » ==

=== Le couple smxi/sgfxi ===

Pour ne pas remettre à plus tard la partie fastidieuse des mises à jour que l'on repousse sans cesse au lendemain et pour ne pas scier la branche sur laquelle on est assis (mettre à jour la partie graphique pendant qu'elle est active).

=== Séparer nettement en volumes logiques séparés ===

Ce qui sera conservé dans tous les cas, ce qui peut provoquer des blocages systèmes, et le système lui même.

=== Ext4 === 

Opter pour le dernier système de fichier ext connu alors que Netinstall ou Businesscard stable ne le gère pas encore

== Système de volumes logiques (lvm2) ==

=== Initialiser ===

Initialiser tous les morceaux que vous avez pu glaner sur vos disques

 # pvcreate /dev/sdXY /dev/sdYZ « vg_name »

=== Regrouper ===

Regrouper tous ces morceaux en un espace virtuel que nous allons pouvoir découper en volume logique, l'équivalent des anciennes partitions, sans avoir ces fameuses limitations.

 # vgcreate

=== Créer ===

Création d'un volume de 5 Go nommé lv_name dans vg_name

# lvcreate -L5G -n « lv_name » vg_name

=== Nommage et taille ===

Ma notation des noms de volume et leur taille

* lv_root 1Go
* lv_usr 8Go - Pour avoir l'avenir devant moi
* lv_var 3Go - Pour éviter les «&amp;nbsp;DDOS&amp;nbsp;» des logs
* lv_tmp 5Go - Pour le download d'un dvd
* lv_opt 1Go - Pour y mettre les drivers de vieux matériels
* lv_home 6Go
* lv_swap 1Go - A agrandir a la taille de la RAM pour mettre en sommeil 

Soit un total de 19 Go sans compter /home ou 25 en tout

=== Formater ===

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name&lt;/nowiki&gt;

=== Installer ===

Comme d'habitude vous aurez à choisir la langue, les mots de passe, le nom de la machine, l'emplacement du grub&amp;nbsp;: Si vous ne choisissez pas le MBR ne venez pas vous plaindre. Si d'autres systèmes cohabitent avec celui-ci ils seront reconnus et vous les aurez au menu.

=== Réinstallation ===

Le cas particulier de le réinstallation (le bug de la chaise au clavier)

Seuls les volumes root, usr, var, tmp sont à formater

== Marche à suivre. ==

=== Démarrer le cd-live ===

Ouvrir une console et modifier son profil si nécessaire

 $ su &lt;nowiki&gt;==&gt; on devient root&lt;/nowiki&gt;

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name (root, usr, var, tmp …)&lt;/nowiki&gt;

=== Lancer l'installation ===

Désigner les différentes partitions dans les cases prévues à cet effet

Si vous avez choisi le français, seuls les expatriés auront à rectifier le fuseau horaire

Un mot de passe root

Un utilisateur inexistant précédemment dans home et un mot de passe

Un nom pour votre machine

Lancer l'installation.

Dans quelques minutes elle sera terminée.

=== Lancer la nouvelle installation ===

Au menu «&amp;nbsp;grub&amp;nbsp;» entrer E pour éditer le menu.

Sur la ligne «&amp;nbsp;linux&amp;nbsp;» après le «&amp;nbsp;quiet&amp;nbsp;» ajouter un 3 (c'est le level multi user en console)

CTRL + x pour démarrer

=== C'est à root de jouer ===

On se connecte en root avec son MDP

 # apt-get update

Avant tout le monde:
 # apt-get install apt-listbugs

Si l'on est un fan pour que tout le reste soit homogène, et à condition que aptitude ne soit pas buguée:
 # apt-get install aptitude

 # aptitude install nano (yakuake numlockx linuxlogo)

 # nano /etc/sudoers

 Defaults:ALL timestamp_timeout=0
 Defaults tty_tickets
 
 &quot;vous&quot; ALL=(ALL) ALL

 # userdel -r «&amp;nbsp;user_fictif&amp;nbsp;»
 # adduser «&amp;nbsp;vous&amp;nbsp;»

 # cd /usr/bin/local/ &amp;&amp; wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip

 # exit

Si tout se passe bien root n'est pas près d'avoir la main mais vous serez obligé de donner votre MDP à tout bout de champ car il n'est valable que dans une seule console et pour une seule opération.

=== C'est à vous de jouer ===

 $ sudo nano /etc/hosts pour rétablir la liste des hosts

 $ sudo smxi -e (upgrade du kernel) et reboot sur le nouveau (n'oubliez pas le 3)

 $ sudo smxi -e upgrade, nettoyage des paquets inutiles, installation graphique …

Profitez de ce laps de temps pour générer les clés ssh, la génération étant d'autant plus rapide que la circulation des informations est intense sur le bus (ALT + F2)

Démarrer la session graphique et servez vous de yakuake comme console, vous allez voir&amp;nbsp;!

Bon F12

 $ sudo aptitude install iceweasel iceweasel-l10n-fr icedove icedove-l10n-fr sysv-rc-conf kde-&amp;nbsp;10n-fr apt-file openssh-server

 $ sudo /etc/init.d/ssh start

 $ sudo nano /etc/modprobe.d/alsa-base.conf

 options snd-hda-intel model-auto

A ce stade utiliser les drivers de opt pour finir d'installer vos périphériques exotiques


Vous devriez avoir une machine presque fonctionnelle:D

[[Catégorie:Installation]]
[[Catégorie:DistributionsDérivées]]</text>
      <sha1>ftjce911azkbh0jpbekrpcy9j70wbb3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2154</id>
      <parentid>2152</parentid>
      <timestamp>2010-09-30T07:20:39Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* L'ordinateur */</comment>
      <text xml:space="preserve" bytes="6940">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


Installer Aptosid

== Pourquoi celle là et pas la vraie Sid ==

Vous êtes tentés par l'installation d'une sid mais vous avez un peu peur de ne pas être à la hauteur.

Bien sûr le forum est là mais si vous pouviez avoir quelqu'un derrière vous pour vous guider ce serait mieux.

A défaut d'avoir quelqu'un derrière je vous propose une sid revue et corrigée par de grands développeurs.

J'ai nommé «&amp;nbsp;aptosid&amp;nbsp;» (précédemment sidux). Ce sont les mêmes développeurs, seul le nom a changé.

En plus de sa «&amp;nbsp;presque&amp;nbsp;» stabilité, nous n'aurons pas à nous soucier de sa francisation, et si nous n'avons pas trop de matériel exotique tout va fonctionner dès l'installation. Son mode «&amp;nbsp;live&amp;nbsp;» va d'ailleurs nous permettre de vérifier avant que c'est vrai.

Bien sûr avant de graver votre cd-live [[Vérifier_le_md5_d'une_image_iso|vous avez vérifié le md5 du télé-chargement]] et celui de la gravure.

Il n'est nullement obligatoire de choisir LVM, ni EXT4, ni ma manière de dénommer les volumes, pas même de suivre mon découpage pour que le mode d'emploi cesse d'être valable.

Et si vous n'aimez pas KDE il existe une version XFCE bien plus légère. 

=== L'ordinateur ===

Vous avez environ 20 Go de disponible en un ou plusieurs morceaux (partitions primaires et/ou logiques) sur un ou plusieurs disques.

=== Comme toutes les sid ===

Il est hors de question de la mettre à jour une fois de temps en temps sous peine de dégats. Une sid cela s'entretient journellement.

== Les options choisies ==

=== Sudo ===

Mais pas celui des autres, un sudo sécurisé par quelques options, dont la première est que l'utilisateur responsable ait un vrai mot de passe, pas le nom de mon chien « Pataud » ==

=== Le couple smxi/sgfxi ===

Pour ne pas remettre à plus tard la partie fastidieuse des mises à jour que l'on repousse sans cesse au lendemain et pour ne pas scier la branche sur laquelle on est assis (mettre à jour la partie graphique pendant qu'elle est active).

=== Séparer nettement en volumes logiques séparés ===

Ce qui sera conservé dans tous les cas, ce qui peut provoquer des blocages systèmes, et le système lui même.

=== Ext4 === 

Opter pour le dernier système de fichier ext connu alors que Netinstall ou Businesscard stable ne le gère pas encore

== Système de volumes logiques (lvm2) ==

=== Initialiser ===

Initialiser tous les morceaux que vous avez pu glaner sur vos disques

 # pvcreate /dev/sdXY /dev/sdYZ « vg_name »

=== Regrouper ===

Regrouper tous ces morceaux en un espace virtuel que nous allons pouvoir découper en volume logique, l'équivalent des anciennes partitions, sans avoir ces fameuses limitations.

 # vgcreate

=== Créer ===

Création d'un volume de 5 Go nommé lv_name dans vg_name

# lvcreate -L5G -n « lv_name » vg_name

=== Nommage et taille ===

Ma notation des noms de volume et leur taille

* lv_root 1Go
* lv_usr 8Go - Pour avoir l'avenir devant moi
* lv_var 3Go - Pour éviter les «&amp;nbsp;DDOS&amp;nbsp;» des logs
* lv_tmp 5Go - Pour le download d'un dvd
* lv_opt 1Go - Pour y mettre les drivers de vieux matériels
* lv_home 6Go
* lv_swap 1Go - A agrandir a la taille de la RAM pour mettre en sommeil 

Soit un total de 19 Go sans compter /home ou 25 en tout

=== Formater ===

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name&lt;/nowiki&gt;

=== Installer ===

Comme d'habitude vous aurez à choisir la langue, les mots de passe, le nom de la machine, l'emplacement du grub&amp;nbsp;: Si vous ne choisissez pas le MBR ne venez pas vous plaindre. Si d'autres systèmes cohabitent avec celui-ci ils seront reconnus et vous les aurez au menu.

=== Réinstallation ===

Le cas particulier de le réinstallation (le bug de la chaise au clavier)

Seuls les volumes root, usr, var, tmp sont à formater

== Marche à suivre. ==

=== Démarrer le cd-live ===

Ouvrir une console et modifier son profil si nécessaire

 $ su &lt;nowiki&gt;==&gt; on devient root&lt;/nowiki&gt;

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name (root, usr, var, tmp …)&lt;/nowiki&gt;

=== Lancer l'installation ===

Désigner les différentes partitions dans les cases prévues à cet effet

Si vous avez choisi le français, seuls les expatriés auront à rectifier le fuseau horaire

Un mot de passe root

Un utilisateur inexistant précédemment dans home et un mot de passe

Un nom pour votre machine

Lancer l'installation.

Dans quelques minutes elle sera terminée.

=== Lancer la nouvelle installation ===

Au menu «&amp;nbsp;grub&amp;nbsp;» entrer E pour éditer le menu.

Sur la ligne «&amp;nbsp;linux&amp;nbsp;» après le «&amp;nbsp;quiet&amp;nbsp;» ajouter un 3 (c'est le level multi user en console)

CTRL + x pour démarrer

=== C'est à root de jouer ===

On se connecte en root avec son MDP

 # apt-get update

Avant tout le monde:
 # apt-get install apt-listbugs

Si l'on est un fan pour que tout le reste soit homogène, et à condition que aptitude ne soit pas buguée:
 # apt-get install aptitude

 # aptitude install nano (yakuake numlockx linuxlogo)

 # nano /etc/sudoers

 Defaults:ALL timestamp_timeout=0
 Defaults tty_tickets
 
 &quot;vous&quot; ALL=(ALL) ALL

 # userdel -r «&amp;nbsp;user_fictif&amp;nbsp;»
 # adduser «&amp;nbsp;vous&amp;nbsp;»

 # cd /usr/bin/local/ &amp;&amp; wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip

 # exit

Si tout se passe bien root n'est pas près d'avoir la main mais vous serez obligé de donner votre MDP à tout bout de champ car il n'est valable que dans une seule console et pour une seule opération.

=== C'est à vous de jouer ===

 $ sudo nano /etc/hosts pour rétablir la liste des hosts

 $ sudo smxi -e (upgrade du kernel) et reboot sur le nouveau (n'oubliez pas le 3)

 $ sudo smxi -e upgrade, nettoyage des paquets inutiles, installation graphique …

Profitez de ce laps de temps pour générer les clés ssh, la génération étant d'autant plus rapide que la circulation des informations est intense sur le bus (ALT + F2)

Démarrer la session graphique et servez vous de yakuake comme console, vous allez voir&amp;nbsp;!

Bon F12

 $ sudo aptitude install iceweasel iceweasel-l10n-fr icedove icedove-l10n-fr sysv-rc-conf kde-&amp;nbsp;10n-fr apt-file openssh-server

 $ sudo /etc/init.d/ssh start

 $ sudo nano /etc/modprobe.d/alsa-base.conf

 options snd-hda-intel model-auto

A ce stade utiliser les drivers de opt pour finir d'installer vos périphériques exotiques


Vous devriez avoir une machine presque fonctionnelle:D

[[Catégorie:Installation]]
[[Catégorie:DistributionsDérivées]]</text>
      <sha1>tojnbxgiz8vu9p470dg9w033cgljgs4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2155</id>
      <parentid>2154</parentid>
      <timestamp>2010-09-30T07:23:46Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Nommage et taille */</comment>
      <text xml:space="preserve" bytes="6949">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


Installer Aptosid

== Pourquoi celle là et pas la vraie Sid ==

Vous êtes tentés par l'installation d'une sid mais vous avez un peu peur de ne pas être à la hauteur.

Bien sûr le forum est là mais si vous pouviez avoir quelqu'un derrière vous pour vous guider ce serait mieux.

A défaut d'avoir quelqu'un derrière je vous propose une sid revue et corrigée par de grands développeurs.

J'ai nommé «&amp;nbsp;aptosid&amp;nbsp;» (précédemment sidux). Ce sont les mêmes développeurs, seul le nom a changé.

En plus de sa «&amp;nbsp;presque&amp;nbsp;» stabilité, nous n'aurons pas à nous soucier de sa francisation, et si nous n'avons pas trop de matériel exotique tout va fonctionner dès l'installation. Son mode «&amp;nbsp;live&amp;nbsp;» va d'ailleurs nous permettre de vérifier avant que c'est vrai.

Bien sûr avant de graver votre cd-live [[Vérifier_le_md5_d'une_image_iso|vous avez vérifié le md5 du télé-chargement]] et celui de la gravure.

Il n'est nullement obligatoire de choisir LVM, ni EXT4, ni ma manière de dénommer les volumes, pas même de suivre mon découpage pour que le mode d'emploi cesse d'être valable.

Et si vous n'aimez pas KDE il existe une version XFCE bien plus légère. 

=== L'ordinateur ===

Vous avez environ 20 Go de disponible en un ou plusieurs morceaux (partitions primaires et/ou logiques) sur un ou plusieurs disques.

=== Comme toutes les sid ===

Il est hors de question de la mettre à jour une fois de temps en temps sous peine de dégats. Une sid cela s'entretient journellement.

== Les options choisies ==

=== Sudo ===

Mais pas celui des autres, un sudo sécurisé par quelques options, dont la première est que l'utilisateur responsable ait un vrai mot de passe, pas le nom de mon chien « Pataud » ==

=== Le couple smxi/sgfxi ===

Pour ne pas remettre à plus tard la partie fastidieuse des mises à jour que l'on repousse sans cesse au lendemain et pour ne pas scier la branche sur laquelle on est assis (mettre à jour la partie graphique pendant qu'elle est active).

=== Séparer nettement en volumes logiques séparés ===

Ce qui sera conservé dans tous les cas, ce qui peut provoquer des blocages systèmes, et le système lui même.

=== Ext4 === 

Opter pour le dernier système de fichier ext connu alors que Netinstall ou Businesscard stable ne le gère pas encore

== Système de volumes logiques (lvm2) ==

=== Initialiser ===

Initialiser tous les morceaux que vous avez pu glaner sur vos disques

 # pvcreate /dev/sdXY /dev/sdYZ « vg_name »

=== Regrouper ===

Regrouper tous ces morceaux en un espace virtuel que nous allons pouvoir découper en volume logique, l'équivalent des anciennes partitions, sans avoir ces fameuses limitations.

 # vgcreate

=== Créer ===

Création d'un volume de 5 Go nommé lv_name dans vg_name

# lvcreate -L5G -n « lv_name » vg_name

=== Nommage et taille ===

Ma notation des noms de volume et leur taille

* lv_root 1Go
* lv_usr 8Go - Pour avoir l'avenir devant moi
* lv_var 3Go - Pour éviter les «&amp;nbsp;DDOS&amp;nbsp;» des logs
* lv_tmp 5Go - Pour le download d'un dvd
* lv_opt 1Go - Pour y mettre les drivers de vieux matériels
* lv_home 6Go
* lv_swap 1Go - A agrandir à la taille de la RAM pour pouvoir mettre en sommeil 

Soit un total de 19 Go sans compter /home ou 25 en tout

=== Formater ===

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name&lt;/nowiki&gt;

=== Installer ===

Comme d'habitude vous aurez à choisir la langue, les mots de passe, le nom de la machine, l'emplacement du grub&amp;nbsp;: Si vous ne choisissez pas le MBR ne venez pas vous plaindre. Si d'autres systèmes cohabitent avec celui-ci ils seront reconnus et vous les aurez au menu.

=== Réinstallation ===

Le cas particulier de le réinstallation (le bug de la chaise au clavier)

Seuls les volumes root, usr, var, tmp sont à formater

== Marche à suivre. ==

=== Démarrer le cd-live ===

Ouvrir une console et modifier son profil si nécessaire

 $ su &lt;nowiki&gt;==&gt; on devient root&lt;/nowiki&gt;

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name (root, usr, var, tmp …)&lt;/nowiki&gt;

=== Lancer l'installation ===

Désigner les différentes partitions dans les cases prévues à cet effet

Si vous avez choisi le français, seuls les expatriés auront à rectifier le fuseau horaire

Un mot de passe root

Un utilisateur inexistant précédemment dans home et un mot de passe

Un nom pour votre machine

Lancer l'installation.

Dans quelques minutes elle sera terminée.

=== Lancer la nouvelle installation ===

Au menu «&amp;nbsp;grub&amp;nbsp;» entrer E pour éditer le menu.

Sur la ligne «&amp;nbsp;linux&amp;nbsp;» après le «&amp;nbsp;quiet&amp;nbsp;» ajouter un 3 (c'est le level multi user en console)

CTRL + x pour démarrer

=== C'est à root de jouer ===

On se connecte en root avec son MDP

 # apt-get update

Avant tout le monde:
 # apt-get install apt-listbugs

Si l'on est un fan pour que tout le reste soit homogène, et à condition que aptitude ne soit pas buguée:
 # apt-get install aptitude

 # aptitude install nano (yakuake numlockx linuxlogo)

 # nano /etc/sudoers

 Defaults:ALL timestamp_timeout=0
 Defaults tty_tickets
 
 &quot;vous&quot; ALL=(ALL) ALL

 # userdel -r «&amp;nbsp;user_fictif&amp;nbsp;»
 # adduser «&amp;nbsp;vous&amp;nbsp;»

 # cd /usr/bin/local/ &amp;&amp; wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip

 # exit

Si tout se passe bien root n'est pas près d'avoir la main mais vous serez obligé de donner votre MDP à tout bout de champ car il n'est valable que dans une seule console et pour une seule opération.

=== C'est à vous de jouer ===

 $ sudo nano /etc/hosts pour rétablir la liste des hosts

 $ sudo smxi -e (upgrade du kernel) et reboot sur le nouveau (n'oubliez pas le 3)

 $ sudo smxi -e upgrade, nettoyage des paquets inutiles, installation graphique …

Profitez de ce laps de temps pour générer les clés ssh, la génération étant d'autant plus rapide que la circulation des informations est intense sur le bus (ALT + F2)

Démarrer la session graphique et servez vous de yakuake comme console, vous allez voir&amp;nbsp;!

Bon F12

 $ sudo aptitude install iceweasel iceweasel-l10n-fr icedove icedove-l10n-fr sysv-rc-conf kde-&amp;nbsp;10n-fr apt-file openssh-server

 $ sudo /etc/init.d/ssh start

 $ sudo nano /etc/modprobe.d/alsa-base.conf

 options snd-hda-intel model-auto

A ce stade utiliser les drivers de opt pour finir d'installer vos périphériques exotiques


Vous devriez avoir une machine presque fonctionnelle:D

[[Catégorie:Installation]]
[[Catégorie:DistributionsDérivées]]</text>
      <sha1>3xgr2q5hzchrk8f2f2p3oyz92gz8zmq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2156</id>
      <parentid>2155</parentid>
      <timestamp>2010-09-30T11:01:51Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* C'est à vous de jouer */</comment>
      <text xml:space="preserve" bytes="6957">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


Installer Aptosid

== Pourquoi celle là et pas la vraie Sid ==

Vous êtes tentés par l'installation d'une sid mais vous avez un peu peur de ne pas être à la hauteur.

Bien sûr le forum est là mais si vous pouviez avoir quelqu'un derrière vous pour vous guider ce serait mieux.

A défaut d'avoir quelqu'un derrière je vous propose une sid revue et corrigée par de grands développeurs.

J'ai nommé «&amp;nbsp;aptosid&amp;nbsp;» (précédemment sidux). Ce sont les mêmes développeurs, seul le nom a changé.

En plus de sa «&amp;nbsp;presque&amp;nbsp;» stabilité, nous n'aurons pas à nous soucier de sa francisation, et si nous n'avons pas trop de matériel exotique tout va fonctionner dès l'installation. Son mode «&amp;nbsp;live&amp;nbsp;» va d'ailleurs nous permettre de vérifier avant que c'est vrai.

Bien sûr avant de graver votre cd-live [[Vérifier_le_md5_d'une_image_iso|vous avez vérifié le md5 du télé-chargement]] et celui de la gravure.

Il n'est nullement obligatoire de choisir LVM, ni EXT4, ni ma manière de dénommer les volumes, pas même de suivre mon découpage pour que le mode d'emploi cesse d'être valable.

Et si vous n'aimez pas KDE il existe une version XFCE bien plus légère. 

=== L'ordinateur ===

Vous avez environ 20 Go de disponible en un ou plusieurs morceaux (partitions primaires et/ou logiques) sur un ou plusieurs disques.

=== Comme toutes les sid ===

Il est hors de question de la mettre à jour une fois de temps en temps sous peine de dégats. Une sid cela s'entretient journellement.

== Les options choisies ==

=== Sudo ===

Mais pas celui des autres, un sudo sécurisé par quelques options, dont la première est que l'utilisateur responsable ait un vrai mot de passe, pas le nom de mon chien « Pataud » ==

=== Le couple smxi/sgfxi ===

Pour ne pas remettre à plus tard la partie fastidieuse des mises à jour que l'on repousse sans cesse au lendemain et pour ne pas scier la branche sur laquelle on est assis (mettre à jour la partie graphique pendant qu'elle est active).

=== Séparer nettement en volumes logiques séparés ===

Ce qui sera conservé dans tous les cas, ce qui peut provoquer des blocages systèmes, et le système lui même.

=== Ext4 === 

Opter pour le dernier système de fichier ext connu alors que Netinstall ou Businesscard stable ne le gère pas encore

== Système de volumes logiques (lvm2) ==

=== Initialiser ===

Initialiser tous les morceaux que vous avez pu glaner sur vos disques

 # pvcreate /dev/sdXY /dev/sdYZ « vg_name »

=== Regrouper ===

Regrouper tous ces morceaux en un espace virtuel que nous allons pouvoir découper en volume logique, l'équivalent des anciennes partitions, sans avoir ces fameuses limitations.

 # vgcreate

=== Créer ===

Création d'un volume de 5 Go nommé lv_name dans vg_name

# lvcreate -L5G -n « lv_name » vg_name

=== Nommage et taille ===

Ma notation des noms de volume et leur taille

* lv_root 1Go
* lv_usr 8Go - Pour avoir l'avenir devant moi
* lv_var 3Go - Pour éviter les «&amp;nbsp;DDOS&amp;nbsp;» des logs
* lv_tmp 5Go - Pour le download d'un dvd
* lv_opt 1Go - Pour y mettre les drivers de vieux matériels
* lv_home 6Go
* lv_swap 1Go - A agrandir à la taille de la RAM pour pouvoir mettre en sommeil 

Soit un total de 19 Go sans compter /home ou 25 en tout

=== Formater ===

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name&lt;/nowiki&gt;

=== Installer ===

Comme d'habitude vous aurez à choisir la langue, les mots de passe, le nom de la machine, l'emplacement du grub&amp;nbsp;: Si vous ne choisissez pas le MBR ne venez pas vous plaindre. Si d'autres systèmes cohabitent avec celui-ci ils seront reconnus et vous les aurez au menu.

=== Réinstallation ===

Le cas particulier de le réinstallation (le bug de la chaise au clavier)

Seuls les volumes root, usr, var, tmp sont à formater

== Marche à suivre. ==

=== Démarrer le cd-live ===

Ouvrir une console et modifier son profil si nécessaire

 $ su &lt;nowiki&gt;==&gt; on devient root&lt;/nowiki&gt;

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name (root, usr, var, tmp …)&lt;/nowiki&gt;

=== Lancer l'installation ===

Désigner les différentes partitions dans les cases prévues à cet effet

Si vous avez choisi le français, seuls les expatriés auront à rectifier le fuseau horaire

Un mot de passe root

Un utilisateur inexistant précédemment dans home et un mot de passe

Un nom pour votre machine

Lancer l'installation.

Dans quelques minutes elle sera terminée.

=== Lancer la nouvelle installation ===

Au menu «&amp;nbsp;grub&amp;nbsp;» entrer E pour éditer le menu.

Sur la ligne «&amp;nbsp;linux&amp;nbsp;» après le «&amp;nbsp;quiet&amp;nbsp;» ajouter un 3 (c'est le level multi user en console)

CTRL + x pour démarrer

=== C'est à root de jouer ===

On se connecte en root avec son MDP

 # apt-get update

Avant tout le monde:
 # apt-get install apt-listbugs

Si l'on est un fan pour que tout le reste soit homogène, et à condition que aptitude ne soit pas buguée:
 # apt-get install aptitude

 # aptitude install nano (yakuake numlockx linuxlogo)

 # nano /etc/sudoers

 Defaults:ALL timestamp_timeout=0
 Defaults tty_tickets
 
 &quot;vous&quot; ALL=(ALL) ALL

 # userdel -r «&amp;nbsp;user_fictif&amp;nbsp;»
 # adduser «&amp;nbsp;vous&amp;nbsp;»

 # cd /usr/bin/local/ &amp;&amp; wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip

 # exit

Si tout se passe bien root n'est pas près d'avoir la main mais vous serez obligé de donner votre MDP à tout bout de champ car il n'est valable que dans une seule console et pour une seule opération.

=== C'est à vous de jouer ===

 $ sudo nano /etc/hosts pour rétablir la liste des hosts

 $ sudo smxi -e (upgrade du kernel) et reboot sur le nouveau (n'oubliez pas le 3)

 $ sudo smxi -e upgrade, nettoyage des paquets inutiles, installation graphique …

Profitez de ce laps de temps pour générer les clés ssh, la génération étant d'autant plus rapide que la circulation des informations est intense sur le bus (ALT + F2)

Démarrer la session graphique et servez vous de yakuake comme console, vous allez voir&amp;nbsp;!

Bon F12

 $ sudo aptitude install iceweasel iceweasel-l10n-fr icedove icedove-l10n-fr sysv-rc-conf kde-&amp;nbsp;10n-fr apt-file openssh-server kdesudo

 $ sudo /etc/init.d/ssh start

 $ sudo nano /etc/modprobe.d/alsa-base.conf

 options snd-hda-intel model-auto

A ce stade utiliser les drivers de opt pour finir d'installer vos périphériques exotiques


Vous devriez avoir une machine presque fonctionnelle:D

[[Catégorie:Installation]]
[[Catégorie:DistributionsDérivées]]</text>
      <sha1>l74k36twtzqrn33zd28cjrza3vwpjtp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2173</id>
      <parentid>2156</parentid>
      <timestamp>2010-10-01T12:31:06Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <comment>/* Initialiser */</comment>
      <text xml:space="preserve" bytes="6965">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


Installer Aptosid

== Pourquoi celle là et pas la vraie Sid ==

Vous êtes tentés par l'installation d'une sid mais vous avez un peu peur de ne pas être à la hauteur.

Bien sûr le forum est là mais si vous pouviez avoir quelqu'un derrière vous pour vous guider ce serait mieux.

A défaut d'avoir quelqu'un derrière je vous propose une sid revue et corrigée par de grands développeurs.

J'ai nommé «&amp;nbsp;aptosid&amp;nbsp;» (précédemment sidux). Ce sont les mêmes développeurs, seul le nom a changé.

En plus de sa «&amp;nbsp;presque&amp;nbsp;» stabilité, nous n'aurons pas à nous soucier de sa francisation, et si nous n'avons pas trop de matériel exotique tout va fonctionner dès l'installation. Son mode «&amp;nbsp;live&amp;nbsp;» va d'ailleurs nous permettre de vérifier avant que c'est vrai.

Bien sûr avant de graver votre cd-live [[Vérifier_le_md5_d'une_image_iso|vous avez vérifié le md5 du télé-chargement]] et celui de la gravure.

Il n'est nullement obligatoire de choisir LVM, ni EXT4, ni ma manière de dénommer les volumes, pas même de suivre mon découpage pour que le mode d'emploi cesse d'être valable.

Et si vous n'aimez pas KDE il existe une version XFCE bien plus légère. 

=== L'ordinateur ===

Vous avez environ 20 Go de disponible en un ou plusieurs morceaux (partitions primaires et/ou logiques) sur un ou plusieurs disques.

=== Comme toutes les sid ===

Il est hors de question de la mettre à jour une fois de temps en temps sous peine de dégats. Une sid cela s'entretient journellement.

== Les options choisies ==

=== Sudo ===

Mais pas celui des autres, un sudo sécurisé par quelques options, dont la première est que l'utilisateur responsable ait un vrai mot de passe, pas le nom de mon chien « Pataud » ==

=== Le couple smxi/sgfxi ===

Pour ne pas remettre à plus tard la partie fastidieuse des mises à jour que l'on repousse sans cesse au lendemain et pour ne pas scier la branche sur laquelle on est assis (mettre à jour la partie graphique pendant qu'elle est active).

=== Séparer nettement en volumes logiques séparés ===

Ce qui sera conservé dans tous les cas, ce qui peut provoquer des blocages systèmes, et le système lui même.

=== Ext4 === 

Opter pour le dernier système de fichier ext connu alors que Netinstall ou Businesscard stable ne le gère pas encore

== Système de volumes logiques (lvm2) ==

=== Initialiser ===

Initialiser tous les morceaux (X,Y,Z) que vous avez pu glaner sur vos disques

 # pvcreate /dev/sdXY /dev/sdYZ « vg_name »

=== Regrouper ===

Regrouper tous ces morceaux en un espace virtuel que nous allons pouvoir découper en volume logique, l'équivalent des anciennes partitions, sans avoir ces fameuses limitations.

 # vgcreate

=== Créer ===

Création d'un volume de 5 Go nommé lv_name dans vg_name

# lvcreate -L5G -n « lv_name » vg_name

=== Nommage et taille ===

Ma notation des noms de volume et leur taille

* lv_root 1Go
* lv_usr 8Go - Pour avoir l'avenir devant moi
* lv_var 3Go - Pour éviter les «&amp;nbsp;DDOS&amp;nbsp;» des logs
* lv_tmp 5Go - Pour le download d'un dvd
* lv_opt 1Go - Pour y mettre les drivers de vieux matériels
* lv_home 6Go
* lv_swap 1Go - A agrandir à la taille de la RAM pour pouvoir mettre en sommeil 

Soit un total de 19 Go sans compter /home ou 25 en tout

=== Formater ===

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name&lt;/nowiki&gt;

=== Installer ===

Comme d'habitude vous aurez à choisir la langue, les mots de passe, le nom de la machine, l'emplacement du grub&amp;nbsp;: Si vous ne choisissez pas le MBR ne venez pas vous plaindre. Si d'autres systèmes cohabitent avec celui-ci ils seront reconnus et vous les aurez au menu.

=== Réinstallation ===

Le cas particulier de le réinstallation (le bug de la chaise au clavier)

Seuls les volumes root, usr, var, tmp sont à formater

== Marche à suivre. ==

=== Démarrer le cd-live ===

Ouvrir une console et modifier son profil si nécessaire

 $ su &lt;nowiki&gt;==&gt; on devient root&lt;/nowiki&gt;

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name (root, usr, var, tmp …)&lt;/nowiki&gt;

=== Lancer l'installation ===

Désigner les différentes partitions dans les cases prévues à cet effet

Si vous avez choisi le français, seuls les expatriés auront à rectifier le fuseau horaire

Un mot de passe root

Un utilisateur inexistant précédemment dans home et un mot de passe

Un nom pour votre machine

Lancer l'installation.

Dans quelques minutes elle sera terminée.

=== Lancer la nouvelle installation ===

Au menu «&amp;nbsp;grub&amp;nbsp;» entrer E pour éditer le menu.

Sur la ligne «&amp;nbsp;linux&amp;nbsp;» après le «&amp;nbsp;quiet&amp;nbsp;» ajouter un 3 (c'est le level multi user en console)

CTRL + x pour démarrer

=== C'est à root de jouer ===

On se connecte en root avec son MDP

 # apt-get update

Avant tout le monde:
 # apt-get install apt-listbugs

Si l'on est un fan pour que tout le reste soit homogène, et à condition que aptitude ne soit pas buguée:
 # apt-get install aptitude

 # aptitude install nano (yakuake numlockx linuxlogo)

 # nano /etc/sudoers

 Defaults:ALL timestamp_timeout=0
 Defaults tty_tickets
 
 &quot;vous&quot; ALL=(ALL) ALL

 # userdel -r «&amp;nbsp;user_fictif&amp;nbsp;»
 # adduser «&amp;nbsp;vous&amp;nbsp;»

 # cd /usr/bin/local/ &amp;&amp; wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip

 # exit

Si tout se passe bien root n'est pas près d'avoir la main mais vous serez obligé de donner votre MDP à tout bout de champ car il n'est valable que dans une seule console et pour une seule opération.

=== C'est à vous de jouer ===

 $ sudo nano /etc/hosts pour rétablir la liste des hosts

 $ sudo smxi -e (upgrade du kernel) et reboot sur le nouveau (n'oubliez pas le 3)

 $ sudo smxi -e upgrade, nettoyage des paquets inutiles, installation graphique …

Profitez de ce laps de temps pour générer les clés ssh, la génération étant d'autant plus rapide que la circulation des informations est intense sur le bus (ALT + F2)

Démarrer la session graphique et servez vous de yakuake comme console, vous allez voir&amp;nbsp;!

Bon F12

 $ sudo aptitude install iceweasel iceweasel-l10n-fr icedove icedove-l10n-fr sysv-rc-conf kde-&amp;nbsp;10n-fr apt-file openssh-server kdesudo

 $ sudo /etc/init.d/ssh start

 $ sudo nano /etc/modprobe.d/alsa-base.conf

 options snd-hda-intel model-auto

A ce stade utiliser les drivers de opt pour finir d'installer vos périphériques exotiques


Vous devriez avoir une machine presque fonctionnelle:D

[[Catégorie:Installation]]
[[Catégorie:DistributionsDérivées]]</text>
      <sha1>nvgc9nftwrsohjzqo4ca4wn2mrs3bhg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2174</id>
      <parentid>2173</parentid>
      <timestamp>2010-10-01T12:34:42Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Système de volumes logiques (lvm2) */</comment>
      <text xml:space="preserve" bytes="7037">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


Installer Aptosid

== Pourquoi celle là et pas la vraie Sid ==

Vous êtes tentés par l'installation d'une sid mais vous avez un peu peur de ne pas être à la hauteur.

Bien sûr le forum est là mais si vous pouviez avoir quelqu'un derrière vous pour vous guider ce serait mieux.

A défaut d'avoir quelqu'un derrière je vous propose une sid revue et corrigée par de grands développeurs.

J'ai nommé «&amp;nbsp;aptosid&amp;nbsp;» (précédemment sidux). Ce sont les mêmes développeurs, seul le nom a changé.

En plus de sa «&amp;nbsp;presque&amp;nbsp;» stabilité, nous n'aurons pas à nous soucier de sa francisation, et si nous n'avons pas trop de matériel exotique tout va fonctionner dès l'installation. Son mode «&amp;nbsp;live&amp;nbsp;» va d'ailleurs nous permettre de vérifier avant que c'est vrai.

Bien sûr avant de graver votre cd-live [[Vérifier_le_md5_d'une_image_iso|vous avez vérifié le md5 du télé-chargement]] et celui de la gravure.

Il n'est nullement obligatoire de choisir LVM, ni EXT4, ni ma manière de dénommer les volumes, pas même de suivre mon découpage pour que le mode d'emploi cesse d'être valable.

Et si vous n'aimez pas KDE il existe une version XFCE bien plus légère. 

=== L'ordinateur ===

Vous avez environ 20 Go de disponible en un ou plusieurs morceaux (partitions primaires et/ou logiques) sur un ou plusieurs disques.

=== Comme toutes les sid ===

Il est hors de question de la mettre à jour une fois de temps en temps sous peine de dégats. Une sid cela s'entretient journellement.

== Les options choisies ==

=== Sudo ===

Mais pas celui des autres, un sudo sécurisé par quelques options, dont la première est que l'utilisateur responsable ait un vrai mot de passe, pas le nom de mon chien « Pataud » ==

=== Le couple smxi/sgfxi ===

Pour ne pas remettre à plus tard la partie fastidieuse des mises à jour que l'on repousse sans cesse au lendemain et pour ne pas scier la branche sur laquelle on est assis (mettre à jour la partie graphique pendant qu'elle est active).

=== Séparer nettement en volumes logiques séparés ===

Ce qui sera conservé dans tous les cas, ce qui peut provoquer des blocages systèmes, et le système lui même.

=== Ext4 === 

Opter pour le dernier système de fichier ext connu alors que Netinstall ou Businesscard stable ne le gère pas encore

== Système de volumes logiques (lvm2) ==

Si vous n'êtes pas familier de LVM consultez le man de ces commandes 

=== Initialiser ===

Initialiser tous les morceaux (X,Y,Z) que vous avez pu glaner sur vos disques

 # pvcreate /dev/sdXY /dev/sdYZ « vg_name »

=== Regrouper ===

Regrouper tous ces morceaux en un espace virtuel que nous allons pouvoir découper en volume logique, l'équivalent des anciennes partitions, sans avoir ces fameuses limitations.

 # vgcreate

=== Créer ===

Création d'un volume de 5 Go nommé lv_name dans vg_name

# lvcreate -L5G -n « lv_name » vg_name

=== Nommage et taille ===

Ma notation des noms de volume et leur taille

* lv_root 1Go
* lv_usr 8Go - Pour avoir l'avenir devant moi
* lv_var 3Go - Pour éviter les «&amp;nbsp;DDOS&amp;nbsp;» des logs
* lv_tmp 5Go - Pour le download d'un dvd
* lv_opt 1Go - Pour y mettre les drivers de vieux matériels
* lv_home 6Go
* lv_swap 1Go - A agrandir à la taille de la RAM pour pouvoir mettre en sommeil 

Soit un total de 19 Go sans compter /home ou 25 en tout

=== Formater ===

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name&lt;/nowiki&gt;

=== Installer ===

Comme d'habitude vous aurez à choisir la langue, les mots de passe, le nom de la machine, l'emplacement du grub&amp;nbsp;: Si vous ne choisissez pas le MBR ne venez pas vous plaindre. Si d'autres systèmes cohabitent avec celui-ci ils seront reconnus et vous les aurez au menu.

=== Réinstallation ===

Le cas particulier de le réinstallation (le bug de la chaise au clavier)

Seuls les volumes root, usr, var, tmp sont à formater

== Marche à suivre. ==

=== Démarrer le cd-live ===

Ouvrir une console et modifier son profil si nécessaire

 $ su &lt;nowiki&gt;==&gt; on devient root&lt;/nowiki&gt;

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name (root, usr, var, tmp …)&lt;/nowiki&gt;

=== Lancer l'installation ===

Désigner les différentes partitions dans les cases prévues à cet effet

Si vous avez choisi le français, seuls les expatriés auront à rectifier le fuseau horaire

Un mot de passe root

Un utilisateur inexistant précédemment dans home et un mot de passe

Un nom pour votre machine

Lancer l'installation.

Dans quelques minutes elle sera terminée.

=== Lancer la nouvelle installation ===

Au menu «&amp;nbsp;grub&amp;nbsp;» entrer E pour éditer le menu.

Sur la ligne «&amp;nbsp;linux&amp;nbsp;» après le «&amp;nbsp;quiet&amp;nbsp;» ajouter un 3 (c'est le level multi user en console)

CTRL + x pour démarrer

=== C'est à root de jouer ===

On se connecte en root avec son MDP

 # apt-get update

Avant tout le monde:
 # apt-get install apt-listbugs

Si l'on est un fan pour que tout le reste soit homogène, et à condition que aptitude ne soit pas buguée:
 # apt-get install aptitude

 # aptitude install nano (yakuake numlockx linuxlogo)

 # nano /etc/sudoers

 Defaults:ALL timestamp_timeout=0
 Defaults tty_tickets
 
 &quot;vous&quot; ALL=(ALL) ALL

 # userdel -r «&amp;nbsp;user_fictif&amp;nbsp;»
 # adduser «&amp;nbsp;vous&amp;nbsp;»

 # cd /usr/bin/local/ &amp;&amp; wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip

 # exit

Si tout se passe bien root n'est pas près d'avoir la main mais vous serez obligé de donner votre MDP à tout bout de champ car il n'est valable que dans une seule console et pour une seule opération.

=== C'est à vous de jouer ===

 $ sudo nano /etc/hosts pour rétablir la liste des hosts

 $ sudo smxi -e (upgrade du kernel) et reboot sur le nouveau (n'oubliez pas le 3)

 $ sudo smxi -e upgrade, nettoyage des paquets inutiles, installation graphique …

Profitez de ce laps de temps pour générer les clés ssh, la génération étant d'autant plus rapide que la circulation des informations est intense sur le bus (ALT + F2)

Démarrer la session graphique et servez vous de yakuake comme console, vous allez voir&amp;nbsp;!

Bon F12

 $ sudo aptitude install iceweasel iceweasel-l10n-fr icedove icedove-l10n-fr sysv-rc-conf kde-&amp;nbsp;10n-fr apt-file openssh-server kdesudo

 $ sudo /etc/init.d/ssh start

 $ sudo nano /etc/modprobe.d/alsa-base.conf

 options snd-hda-intel model-auto

A ce stade utiliser les drivers de opt pour finir d'installer vos périphériques exotiques


Vous devriez avoir une machine presque fonctionnelle:D

[[Catégorie:Installation]]
[[Catégorie:DistributionsDérivées]]</text>
      <sha1>fhiv4fd8s7p4d0jyl3m8scl39t59ji6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2367</id>
      <parentid>2174</parentid>
      <timestamp>2010-11-22T05:20:23Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="7159">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;

Pour des informations et questions sur Aptosid : [http://aptosid-fr.org/forum/index.php Forum ApToSid en Français]

'''Installer Aptosid'''

== Pourquoi celle là et pas la vraie Sid ==

Vous êtes tentés par l'installation d'une sid mais vous avez un peu peur de ne pas être à la hauteur.

Bien sûr le forum est là mais si vous pouviez avoir quelqu'un derrière vous pour vous guider ce serait mieux.

A défaut d'avoir quelqu'un derrière je vous propose une sid revue et corrigée par de grands développeurs.

J'ai nommé «&amp;nbsp;aptosid&amp;nbsp;» (précédemment sidux). Ce sont les mêmes développeurs, seul le nom a changé.

En plus de sa «&amp;nbsp;presque&amp;nbsp;» stabilité, nous n'aurons pas à nous soucier de sa francisation, et si nous n'avons pas trop de matériel exotique tout va fonctionner dès l'installation. Son mode «&amp;nbsp;live&amp;nbsp;» va d'ailleurs nous permettre de vérifier avant que c'est vrai.

Bien sûr avant de graver votre cd-live [[Vérifier_le_md5_d'une_image_iso|vous avez vérifié le md5 du télé-chargement]] et celui de la gravure.

Il n'est nullement obligatoire de choisir LVM, ni EXT4, ni ma manière de dénommer les volumes, pas même de suivre mon découpage pour que le mode d'emploi cesse d'être valable.

Et si vous n'aimez pas KDE il existe une version XFCE bien plus légère. 

=== L'ordinateur ===

Vous avez environ 20 Go de disponible en un ou plusieurs morceaux (partitions primaires et/ou logiques) sur un ou plusieurs disques.

=== Comme toutes les sid ===

Il est hors de question de la mettre à jour une fois de temps en temps sous peine de dégats. Une sid cela s'entretient journellement.

== Les options choisies ==

=== Sudo ===

Mais pas celui des autres, un sudo sécurisé par quelques options, dont la première est que l'utilisateur responsable ait un vrai mot de passe, pas le nom de mon chien « Pataud » ==

=== Le couple smxi/sgfxi ===

Pour ne pas remettre à plus tard la partie fastidieuse des mises à jour que l'on repousse sans cesse au lendemain et pour ne pas scier la branche sur laquelle on est assis (mettre à jour la partie graphique pendant qu'elle est active).

=== Séparer nettement en volumes logiques séparés ===

Ce qui sera conservé dans tous les cas, ce qui peut provoquer des blocages systèmes, et le système lui même.

=== Ext4 === 

Opter pour le dernier système de fichier ext connu alors que Netinstall ou Businesscard stable ne le gère pas encore

== Système de volumes logiques (lvm2) ==

Si vous n'êtes pas familier de LVM consultez le man de ces commandes 

=== Initialiser ===

Initialiser tous les morceaux (X,Y,Z) que vous avez pu glaner sur vos disques

 # pvcreate /dev/sdXY /dev/sdYZ « vg_name »

=== Regrouper ===

Regrouper tous ces morceaux en un espace virtuel que nous allons pouvoir découper en volume logique, l'équivalent des anciennes partitions, sans avoir ces fameuses limitations.

 # vgcreate

=== Créer ===

Création d'un volume de 5 Go nommé lv_name dans vg_name

# lvcreate -L5G -n « lv_name » vg_name

=== Nommage et taille ===

Ma notation des noms de volume et leur taille

* lv_root 1Go
* lv_usr 8Go - Pour avoir l'avenir devant moi
* lv_var 3Go - Pour éviter les «&amp;nbsp;DDOS&amp;nbsp;» des logs
* lv_tmp 5Go - Pour le download d'un dvd
* lv_opt 1Go - Pour y mettre les drivers de vieux matériels
* lv_home 6Go
* lv_swap 1Go - A agrandir à la taille de la RAM pour pouvoir mettre en sommeil 

Soit un total de 19 Go sans compter /home ou 25 en tout

=== Formater ===

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name&lt;/nowiki&gt;

=== Installer ===

Comme d'habitude vous aurez à choisir la langue, les mots de passe, le nom de la machine, l'emplacement du grub&amp;nbsp;: Si vous ne choisissez pas le MBR ne venez pas vous plaindre. Si d'autres systèmes cohabitent avec celui-ci ils seront reconnus et vous les aurez au menu.

=== Réinstallation ===

Le cas particulier de le réinstallation (le bug de la chaise au clavier)

Seuls les volumes root, usr, var, tmp sont à formater

== Marche à suivre. ==

=== Démarrer le cd-live ===

Ouvrir une console et modifier son profil si nécessaire

 $ su &lt;nowiki&gt;==&gt; on devient root&lt;/nowiki&gt;

&lt;nowiki&gt;# mkfs.ext4 /dev/vg_name/lv_name (root, usr, var, tmp …)&lt;/nowiki&gt;

=== Lancer l'installation ===

Désigner les différentes partitions dans les cases prévues à cet effet

Si vous avez choisi le français, seuls les expatriés auront à rectifier le fuseau horaire

Un mot de passe root

Un utilisateur inexistant précédemment dans home et un mot de passe

Un nom pour votre machine

Lancer l'installation.

Dans quelques minutes elle sera terminée.

=== Lancer la nouvelle installation ===

Au menu «&amp;nbsp;grub&amp;nbsp;» entrer E pour éditer le menu.

Sur la ligne «&amp;nbsp;linux&amp;nbsp;» après le «&amp;nbsp;quiet&amp;nbsp;» ajouter un 3 (c'est le level multi user en console)

CTRL + x pour démarrer

=== C'est à root de jouer ===

On se connecte en root avec son MDP

 # apt-get update

Avant tout le monde:
 # apt-get install apt-listbugs

Si l'on est un fan pour que tout le reste soit homogène, et à condition que aptitude ne soit pas buguée:
 # apt-get install aptitude

 # aptitude install nano (yakuake numlockx linuxlogo)

 # nano /etc/sudoers

 Defaults:ALL timestamp_timeout=0
 Defaults tty_tickets
 
 &quot;vous&quot; ALL=(ALL) ALL

 # userdel -r «&amp;nbsp;user_fictif&amp;nbsp;»
 # adduser «&amp;nbsp;vous&amp;nbsp;»

 # cd /usr/bin/local/ &amp;&amp; wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip

 # exit

Si tout se passe bien root n'est pas près d'avoir la main mais vous serez obligé de donner votre MDP à tout bout de champ car il n'est valable que dans une seule console et pour une seule opération.

=== C'est à vous de jouer ===

 $ sudo nano /etc/hosts pour rétablir la liste des hosts

 $ sudo smxi -e (upgrade du kernel) et reboot sur le nouveau (n'oubliez pas le 3)

 $ sudo smxi -e upgrade, nettoyage des paquets inutiles, installation graphique …

Profitez de ce laps de temps pour générer les clés ssh, la génération étant d'autant plus rapide que la circulation des informations est intense sur le bus (ALT + F2)

Démarrer la session graphique et servez vous de yakuake comme console, vous allez voir&amp;nbsp;!

Bon F12

 $ sudo aptitude install iceweasel iceweasel-l10n-fr icedove icedove-l10n-fr sysv-rc-conf kde-&amp;nbsp;10n-fr apt-file openssh-server kdesudo

 $ sudo /etc/init.d/ssh start

 $ sudo nano /etc/modprobe.d/alsa-base.conf

 options snd-hda-intel model-auto

A ce stade utiliser les drivers de opt pour finir d'installer vos périphériques exotiques


Vous devriez avoir une machine presque fonctionnelle:D

[[Catégorie:Installation]]
[[Catégorie:DistributionsDérivées]]</text>
      <sha1>13jhruqb901xenwwfb1oynlls6otjs5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Installer debian en utilisant un Disque dur USB à la place d'un CD-ROM ou Clef USB</title>
    <ns>0</ns>
    <id>1348</id>
    <revision>
      <id>5840</id>
      <timestamp>2014-09-30T23:31:46Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <comment>Page créée avec «  == Introduction == Les performances en vitesse écriture-lecture des clef USB sont si désespérément lentes,&lt;br /&gt; qu'on en oublie parfois qu'on avait lancé une copie ... »</comment>
      <text xml:space="preserve" bytes="34076">
== Introduction ==
Les performances en vitesse écriture-lecture des clef USB sont si désespérément lentes,&lt;br /&gt;
qu'on en oublie parfois qu'on avait lancé une copie d'image ISO sur une clef USB.&lt;br /&gt;
Et je ne parle même pas du temps passé à la gravure d'un CD ou DVD…

En utilisant un disque dur USB à la place d'une clef USB ou d'un CD-ROM, c'est au moins '''100 fois plus vite fait''',&lt;br /&gt;
et on peut y gagner une bonne demi-journée d'attente quand il s'agit d'une image ISO Live de plus d'un Gio.

Ici, j'utilise un disque dur SSD d'occasion de 64Gio, (qui a été lâchement abandonné par son propriétaire sous prétexte qu'il avait été malade, et qu'il était trop maigre et trop vieux ;-) )&lt;br /&gt;
ce qui améliore d'autant plus les performances en vitesse écriture-lecture.


Mais je n'ai pas envie de devoir sauvegarder tous les fichiers qui y sont stokés,&lt;br /&gt;
pour ensuite, une fois que je n'ai plus besoin de cette Clef-disque USB,&lt;br /&gt;
devoir recréer chaque partition et remettre en place tous les fichiers sauvegardés.

D'autant que finalement, je n'ai besoin que de 2 ou 3 Gio maximum (si j'utilisai une image ISO autre qu'une image ISO debian netinstall de 250Mio maxi).

La solution que je propose ici consiste à '''ne sauvegarder que l'espace disque qui va être écrasé par la copie de l'image ISO'''.
== La sauvegarde ==
je commence par sauvegarder dans un fichier une copie de l'espace disque original&lt;br /&gt;
avant qu'il ne soit écrasé par la copie de l'image ISO sur ce disque.


Avant de connecter le disque USB que je vais utiliser comme clef USB,&lt;br /&gt;
Je visualise les messages du noyau concernant les périphériques de type &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;block&lt;/span&gt; qu'il a reconnu comme tel :
  root@debG53SW:~# dmesg -T |grep blocks
  [sam. sept. 27 01:08:53 2014] ACPI: Executed 1 blocks of module-level executable AML code
  [sam. sept. 27 01:08:54 2014] sd 0:0:0:0: [sda] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:08:54 2014] sd 1:0:0:0: [sdb] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:08:57 2014] sd 8:0:0:0: [sdd] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:08:57 2014] sd 7:0:0:0: [sde] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  root@debG53SW:~# 


Ensuite, je connecte physiquement le disque USB qui va me servir de clef USB,&lt;br /&gt;
ensuite, une fois le disque connecté physiquement,&lt;br /&gt;
je relance la même ligne de commande afin de trouver le &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;nom du nœud&lt;/span&gt; (point de &lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''mount'''&lt;/span&gt;age) dans &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;/dev&lt;/span&gt; :&lt;br /&gt;
  root@debG53SW:~# dmesg -T |grep blocks
  [sam. sept. 27 01:08:53 2014] ACPI: Executed 1 blocks of module-level executable AML code
  [sam. sept. 27 01:08:54 2014] sd 0:0:0:0: [sda] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:08:54 2014] sd 1:0:0:0: [sdb] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:08:57 2014] sd 8:0:0:0: [sdd] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:08:57 2014] sd 7:0:0:0: [sde] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:13:46 2014] sd 9:0:0:0: [sdf] 125045424 512-byte logical blocks: (64.0 GB/59.6 GiB)
  root@debG53SW:~# 
je constate que le nœud, associé à ce disque dans le répertoire &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;/dev&lt;/span&gt;, est &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;sdf&lt;/span&gt;,&lt;br /&gt;
alors je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monIso=&quot;/home/michel/Téléchargements/firmware-7.6.0-amd64-netinst.iso&quot;
  root@debG53SW:~# nbBlckIso=$((($(stat -c %s ${monIso})/$taillBlck)+1))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 


À ce stade, soyez &lt;u&gt;'''sûr et certain'''&lt;/u&gt;&lt;/b&gt; de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;sdf&lt;/span&gt;) associé au disque USB,

    &lt;span style=&quot;background-color:red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: red; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;&quot;&lt;/span&gt; au lieu de &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt; 
&lt;br /&gt;

  &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;&lt;br /&gt;



Au cas où une des partitions de ce disque ait été &lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''auto-mount'''&lt;/span&gt;ée,&lt;br /&gt;
je dé-&lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''mount'''&lt;/span&gt;e tous les systèmes de fichiers de ce disque :
  root@debG53SW:~# umount ${maCible}*
  umount : /dev/sdf : n'est pas monté
  umount : /dev/sdf1 : n'est pas monté
  root@debG53SW:~# 


je récupère (sauvegarde) une copie de l'espace disque qui sera écrasé par la copie du fichier image ISO sur le disque :
  root@debG53SW:~# dd bs=$taillBlck count=$nbBlckIso if=${maCible} of=${monSauv} &amp;&amp; sync
  60+0 enregistrements lus
  60+0 enregistrements écrits
  251658240 octets (252 MB) copiés, 2,42913 s, 104 MB/s
  root@debG53SW:~# 
(Plus tard, quand je voudrai remettre mon disque USB (&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt;) dans son état original, je n'aurai plus qu'à recopier le fichier &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${monSauv}&lt;/span&gt; sur le disque.)&lt;br /&gt;


Je copie le fichier image ISO (&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${monIso}&lt;/span&gt;) sur mon disque USB (&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt;)
  root@debG53SW:~# dd bs=$taillBlck if=${monIso} of=${maCible} &amp;&amp; sync
  59+0 enregistrements lus
  59+0 enregistrements écrits
  247463936 octets (247 MB) copiés, 3,7607 s, 65,8 MB/s
  root@debG53SW:~# 

Mon disque est maintenant '''prêt à être utilisé comme une clef USB''' pour l'installation de debian.


Je débranche le disque USB que je viens de préparer avec ma machine,&lt;br /&gt;
pour le connecter à la machine sur laquelle je veux installer debian,&lt;br /&gt;
et je vais la démarrer en la faisant booter sur ce disque USB.


== L'installation de debian ==
Au cours de l'installation de debian, le programme se rendra compte qu'il ne s'agit pas d'une Clef USB ou d'un lecteur de CD-ROM,&lt;br /&gt;
et effectivement, il ne s'agit pas d'un &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;périphérique amovible&lt;/span&gt;.&lt;br /&gt;

Mais il nous proposera d'entrer le nom du fichier de périphérique correspondant au disque-Clef USB :&lt;br /&gt;
&lt;span style=&quot;
        white-space: pre-wrap;
        background-color: #eeeeee;
        font: x-small sans-serif;
        font-family: monospace,Courier;
        font-size: 1.2em;
&quot;&gt;
 ┌─────────────────────────────┤  &lt;span style=&quot;color: red; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;'''[!!] Détecter et monter le CD'''&lt;/span&gt;  ├─────────────────────────────┐ 
 │                                                                                             │ 
 │  Aucun lecteur de CD-ROM usuel n'a été détecté.                                             │ 
 │                                                                                             │ 
 │  Il peut-être nécessaire de charger des pilotes additionnels de lecteurs de CD-ROM depuis   │ 
 │  un support amovible, par exemple une disquette de pilotes. Si vous avez un tel support     │ 
 │  placez-le dans le lecteur, puis continuez. Dans le cas contraire, vous aurez la            │ 
 │  possibilité de choisir vous-même les modules des pilotes de lecteurs de CD-ROM.            │ 
 │                                                                                             │ 
 │  Faut-il charger les pilotes de lecteurs de CD-ROM depuis un support amovible ?             │ 
 │                                                                                             │ 
 │      &lt;Oui&gt;                                                                        &lt;span style=&quot;background-color: red; color: white;&quot;&gt;'''&lt;Non&gt;'''&lt;/span&gt;     │ 
 └─────────────────────────────────────────────────────────────────────────────────────────────┘ 
­
­
­
 ┌─────────────────────────────┤  &lt;span style=&quot;color: red; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;'''[!!] Détecter et monter le CD'''&lt;/span&gt;  ├─────────────────────────────┐ 
 │                                                                                             │ 
 │  Aucun lecteur de CD-ROM usuel n'a été détecté.                                             │ 
 │                                                                                             │ 
 │  Le lecteur de CD-ROM est peut-être un ancien modèle Mitsumi ou un lecteur qui n'est ni     │ 
 │  un IDE, ni un SCSI. Si vous êtes dans cette situation, vous pouvez indiquer quel module    │ 
 │  devra être chargé et quel périphérique sera utilisé. Si vous ne connaissez pas le module   │ 
 │  et le pilote dont vous avez besoin, veuillez consulter la documentation ou essayez de      │ 
 │  procéder à une installation via le réseau au lieu d'une installation avec un CD.           │ 
 │                                                                                             │ 
 │  Voulez-vous choisir le module et le périphérique du lecteur de CD-ROM ?                    │ 
 │                                                                                             │ 
 │      &lt;span style=&quot;background-color: red; color: white;&quot;&gt;'''&lt;Oui&gt;'''&lt;/span&gt;                                                                        &lt;Non&gt;     │ 
 └─────────────────────────────────────────────────────────────────────────────────────────────┘ 
­
­
­
 ┌─────────────────────────────┤  &lt;span style=&quot;color: red; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;'''[!!] Détecter et monter le CD'''&lt;/span&gt;  ├─────────────────────────────┐ 
 │                                                                                             │ 
 │  La détection automatique n'a pas trouvé de lecteur de CD-ROM. Vous pouvez essayer de       │ 
 │  charger un module particulier si vous possedez un lecteur de CD-ROM spécifique (qui n'est  │ 
 │  ni IDE ni SCSI).                                                                           │ 
 │                                                                                             │ 
 │  Module pour le lecteur de CD-ROM :                                                         │ 
 │                                                                                             │ 
 │                                           &lt;span style=&quot;background-color: red; color: white;&quot;&gt;'''none'''&lt;/span&gt;                                              │ 
 │                                           cdrom                                             │ 
 │                                                                                             │ 
 └─────────────────────────────────────────────────────────────────────────────────────────────┘ 
­
­
­
 ┌─────────────────────────────┤  &lt;span style=&quot;color: red; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;'''[!!] Détecter et monter le CD'''&lt;/span&gt;  ├─────────────────────────────┐ 
 │                                                                                             │ 
 │  Afin de pouvoir accéder au lecteur de CD-ROM, veuillez indiquer le fichier de              │ 
 │  périphérique utilisé. En effet, les lecteurs non standrads utilisent des fichiers de       │ 
 │  périphérique non standrad tels que /dev/mcdx par exemple.                                  │ 
 │                                                                                             │ 
 │  Vous pouvez obtenir un interpréteur de commandes sur le deuxième terminal (ALT+F2) pour    │ 
 │  voir les périphériques disponibles dans /dev en tapant « ls /dev ». Vous pourrez revenir   │ 
 │  à cet écran par ALT+F1.                                                                    │ 
 │                                                                                             │ 
 │  Fichier de périphérique pour le lecteur de CD-ROM :                                        │ 
 │                                                                                             │ 
 │  &lt;span style=&quot;background-color: red; color: white; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;'''/dev/sdc_________________________________________________________________________________'''&lt;/span&gt;  │ 
 │                                                                                             │ 
 │                                         &lt;Continuer&gt;                                         │ 
 └─────────────────────────────────────────────────────────────────────────────────────────────┘ 
&lt;/span&gt;
       Ci-dessus, j'ai entré le nom du fichier de périphérique correspondant au disque-Clef USB

       Après avoir ouvert la deuxième console avec &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;ALT+F2&lt;/span&gt;, j'ai entré la commande :

           &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;ls -l /dev/disk/by-label&lt;/span&gt;

       Ceci m'a permis de retrouver la partition &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;Debian 7.6.0 amd64 1 -&gt; ../../sdb1&lt;/span&gt;&lt;br /&gt;
               Le fichier de périphérique associé au disque-Clef USB est donc &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;/dev/sdb&lt;/span&gt;
                                                                                                

Le programme d'installation a pu continuer son travail normalement,&lt;br /&gt;
et la machine a donc redémarré sur un système debian tout neuf et fonctionnel.



== La remise à l'état d'origine du disque dur ==

Je vais maintenant remettre ce disque-Clef USB dans son état initial :

Avant de connecter le disque USB que j'ais utilisé comme clef USB,&lt;br /&gt;
Je visualise les messages du noyau concernant les périphériques de type &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;block&lt;/span&gt; qu'il a reconnu comme tel :
  root@debG53SW:~# dmesg -T |grep blocks
  [sam. sept. 27 01:51:00 2014] ACPI: Executed 1 blocks of module-level executable AML code
  [sam. sept. 27 01:51:01 2014] sd 0:0:0:0: [sda] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:51:01 2014] sd 1:0:0:0: [sdb] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:51:04 2014] sd 7:0:0:0: [sdd] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:51:04 2014] sd 8:0:0:0: [sde] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  root@debG53SW:~# 

Ensuite, je connecte physiquement le disque USB m'avait servi de clef USB,&lt;br /&gt;
ensuite, une fois le disque connecté physiquement,&lt;br /&gt;
je relance la même ligne de commande afin de trouver le &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;nom du nœud&lt;/span&gt; dans &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;/dev&lt;/span&gt; :&lt;br /&gt;
  root@debG53SW:~# dmesg -T |grep blocks
  [sam. sept. 27 01:51:00 2014] ACPI: Executed 1 blocks of module-level executable AML code
  [sam. sept. 27 01:51:01 2014] sd 0:0:0:0: [sda] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:51:01 2014] sd 1:0:0:0: [sdb] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:51:04 2014] sd 7:0:0:0: [sdd] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:51:04 2014] sd 8:0:0:0: [sde] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:53:41 2014] sd 9:0:0:0: [sdf] 125045424 512-byte logical blocks: (64.0 GB/59.6 GiB)
  root@debG53SW:~# 
je constate que le nœud, associé à ce disque dans le répertoire &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;/dev&lt;/span&gt;, est &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;sdf&lt;/span&gt;,&lt;br /&gt;
alors je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 


À ce stade, soyez '''&lt;u&gt;sûr et certain&lt;/u&gt;''' de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;sdf&lt;/span&gt;) associé au disque USB,

    &lt;span style=&quot;background-color:red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: red; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;&quot;&lt;/span&gt; au lieu de &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt; 
&lt;br /&gt;

  &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;&lt;br /&gt;



Au cas où une des partitions de ce disque ait été &lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''auto-mount'''&lt;/span&gt;ée,&lt;br /&gt;
je dé-&lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''mount'''&lt;/span&gt;e tous les systèmes de fichiers de ce disque :
  root@debG53SW:~# umount ${maCible}*
  umount : /dev/sdf : n'est pas monté
  umount : /dev/sdf1 : n'est pas monté
  umount : /dev/sdf2 : n'est pas monté
  root@debG53SW:~# 

Je lance la recopie sur le disque du fichier &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${monSauv}&lt;/span&gt;qui avait été sauvegardé :
  root@debG53SW:~# dd conv=notrunc bs=$taillBlck if=${monSauv} of=${maCible} &amp;&amp; sync
  60+0 enregistrements lus
  60+0 enregistrements écrits
  251658240 octets (252 MB) copiés, 3,83389 s, 65,6 MB/s
  root@debG53SW:~# 

Et je vais faire prendre en compte ce changement par le noyau

Je recherche, avant de le déconnecter, le &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;nom d'hôte SCSI&lt;/span&gt; de ce disque :
  root@debG53SW:~# readlink /sys/block/sdf
  ../devices/pci0000:00/0000:00:1c.3/0000:04:00.0/usb4/4-1/4-1.4/4-1.4:1.0/host9/target9:0:0/9:0:0:0/block/sdf
  root@debG53SW:~# 

Ok, c'est &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;host9&lt;/span&gt;

Je déconnecte logiciellement le disque &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;sdf&lt;/span&gt; :
  root@debG53SW:~# echo 1 &gt; /sys/block/sdf/device/delete
  root@debG53SW:~# 

et je demande au &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;contrôleur SCSI&lt;/span&gt; de détecter et re-connecter le disque :
  root@debG53SW:~# echo &quot;- - -&quot; &gt; /sys/class/scsi_host/host9/scan
  root@debG53SW:~# 


je vérifie que les messages du noyau confirment la détection :
  root@debG53SW:~# dmesg -T | tail
  [sam. sept. 27 01:53:42 2014] sd 9:0:0:0: [sdf] Attached SCSI disk
  [sam. sept. 27 01:58:11 2014] sd 9:0:0:0: [sdf] Synchronizing SCSI cache
  [sam. sept. 27 02:00:53 2014] scsi 9:0:0:0: Direct-Access     ASMT     2105             0    PQ: 0 ANSI: 6
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: Attached scsi generic sg6 type 0
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] 125045424 512-byte logical blocks: (64.0 GB/59.6 GiB)
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] Write Protect is off
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] Mode Sense: 43 00 00 00
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
  [sam. sept. 27 02:00:53 2014]  sdf: sdf1
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] Attached SCSI disk 
  root@debG53SW:~# 
Je peux voir, dans les messages du noyau :

  - la synchronisation du cache du contrôleur, suite à la déconnexion du disque à &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;&quot;&gt;01:58:11&lt;/span&gt; (suite à l'envoi de la commande &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;echo 1 &gt; /sys/block/sdf/device/delete&lt;/span&gt;)

  - les messages correspondants à la détection par le contrôleur     du disque à &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier; font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;&quot;&gt;02:00:53&lt;/span&gt; (suite à l'envoi de la commande &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;echo &quot;- - -&quot; &gt; /sys/class/scsi_host/host9/scan&lt;/span&gt;)


Mon disque est maintenant dans son état initial d'avant la copie du fichier image ISO,&lt;br /&gt;
avec toutes ses partitions originales et ses fichiers bien en place.

     Il peut donc reprendre une activité normale.
 </text>
      <sha1>m6sijkvoptj307zfdtdm12aqeonbuyw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5841</id>
      <parentid>5840</parentid>
      <timestamp>2014-10-02T17:05:45Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* L'installation de debian */ formatage (nowrap + br)</comment>
      <text xml:space="preserve" bytes="34456">
== Introduction ==
Les performances en vitesse écriture-lecture des clef USB sont si désespérément lentes,&lt;br /&gt;
qu'on en oublie parfois qu'on avait lancé une copie d'image ISO sur une clef USB.&lt;br /&gt;
Et je ne parle même pas du temps passé à la gravure d'un CD ou DVD…

En utilisant un disque dur USB à la place d'une clef USB ou d'un CD-ROM, c'est au moins '''100 fois plus vite fait''',&lt;br /&gt;
et on peut y gagner une bonne demi-journée d'attente quand il s'agit d'une image ISO Live de plus d'un Gio.

Ici, j'utilise un disque dur SSD d'occasion de 64Gio, (qui a été lâchement abandonné par son propriétaire sous prétexte qu'il avait été malade, et qu'il était trop maigre et trop vieux ;-) )&lt;br /&gt;
ce qui améliore d'autant plus les performances en vitesse écriture-lecture.


Mais je n'ai pas envie de devoir sauvegarder tous les fichiers qui y sont stokés,&lt;br /&gt;
pour ensuite, une fois que je n'ai plus besoin de cette Clef-disque USB,&lt;br /&gt;
devoir recréer chaque partition et remettre en place tous les fichiers sauvegardés.

D'autant que finalement, je n'ai besoin que de 2 ou 3 Gio maximum (si j'utilisai une image ISO autre qu'une image ISO debian netinstall de 250Mio maxi).

La solution que je propose ici consiste à '''ne sauvegarder que l'espace disque qui va être écrasé par la copie de l'image ISO'''.
== La sauvegarde ==
je commence par sauvegarder dans un fichier une copie de l'espace disque original&lt;br /&gt;
avant qu'il ne soit écrasé par la copie de l'image ISO sur ce disque.


Avant de connecter le disque USB que je vais utiliser comme clef USB,&lt;br /&gt;
Je visualise les messages du noyau concernant les périphériques de type &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;block&lt;/span&gt; qu'il a reconnu comme tel :
  root@debG53SW:~# dmesg -T |grep blocks
  [sam. sept. 27 01:08:53 2014] ACPI: Executed 1 blocks of module-level executable AML code
  [sam. sept. 27 01:08:54 2014] sd 0:0:0:0: [sda] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:08:54 2014] sd 1:0:0:0: [sdb] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:08:57 2014] sd 8:0:0:0: [sdd] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:08:57 2014] sd 7:0:0:0: [sde] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  root@debG53SW:~# 


Ensuite, je connecte physiquement le disque USB qui va me servir de clef USB,&lt;br /&gt;
ensuite, une fois le disque connecté physiquement,&lt;br /&gt;
je relance la même ligne de commande afin de trouver le &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;nom du nœud&lt;/span&gt; (point de &lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''mount'''&lt;/span&gt;age) dans &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;/dev&lt;/span&gt; :&lt;br /&gt;
  root@debG53SW:~# dmesg -T |grep blocks
  [sam. sept. 27 01:08:53 2014] ACPI: Executed 1 blocks of module-level executable AML code
  [sam. sept. 27 01:08:54 2014] sd 0:0:0:0: [sda] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:08:54 2014] sd 1:0:0:0: [sdb] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:08:57 2014] sd 8:0:0:0: [sdd] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:08:57 2014] sd 7:0:0:0: [sde] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:13:46 2014] sd 9:0:0:0: [sdf] 125045424 512-byte logical blocks: (64.0 GB/59.6 GiB)
  root@debG53SW:~# 
je constate que le nœud, associé à ce disque dans le répertoire &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;/dev&lt;/span&gt;, est &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;sdf&lt;/span&gt;,&lt;br /&gt;
alors je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monIso=&quot;/home/michel/Téléchargements/firmware-7.6.0-amd64-netinst.iso&quot;
  root@debG53SW:~# nbBlckIso=$((($(stat -c %s ${monIso})/$taillBlck)+1))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 


À ce stade, soyez &lt;u&gt;'''sûr et certain'''&lt;/u&gt;&lt;/b&gt; de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;sdf&lt;/span&gt;) associé au disque USB,

    &lt;span style=&quot;background-color:red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: red; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;&quot;&lt;/span&gt; au lieu de &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt; 
&lt;br /&gt;

  &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;&lt;br /&gt;



Au cas où une des partitions de ce disque ait été &lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''auto-mount'''&lt;/span&gt;ée,&lt;br /&gt;
je dé-&lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''mount'''&lt;/span&gt;e tous les systèmes de fichiers de ce disque :
  root@debG53SW:~# umount ${maCible}*
  umount : /dev/sdf : n'est pas monté
  umount : /dev/sdf1 : n'est pas monté
  root@debG53SW:~# 


je récupère (sauvegarde) une copie de l'espace disque qui sera écrasé par la copie du fichier image ISO sur le disque :
  root@debG53SW:~# dd bs=$taillBlck count=$nbBlckIso if=${maCible} of=${monSauv} &amp;&amp; sync
  60+0 enregistrements lus
  60+0 enregistrements écrits
  251658240 octets (252 MB) copiés, 2,42913 s, 104 MB/s
  root@debG53SW:~# 
(Plus tard, quand je voudrai remettre mon disque USB (&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt;) dans son état original, je n'aurai plus qu'à recopier le fichier &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${monSauv}&lt;/span&gt; sur le disque.)&lt;br /&gt;


Je copie le fichier image ISO (&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${monIso}&lt;/span&gt;) sur mon disque USB (&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt;)
  root@debG53SW:~# dd bs=$taillBlck if=${monIso} of=${maCible} &amp;&amp; sync
  59+0 enregistrements lus
  59+0 enregistrements écrits
  247463936 octets (247 MB) copiés, 3,7607 s, 65,8 MB/s
  root@debG53SW:~# 

Mon disque est maintenant '''prêt à être utilisé comme une clef USB''' pour l'installation de debian.


Je débranche le disque USB que je viens de préparer avec ma machine,&lt;br /&gt;
pour le connecter à la machine sur laquelle je veux installer debian,&lt;br /&gt;
et je vais la démarrer en la faisant booter sur ce disque USB.


== L'installation de debian ==
Au cours de l'installation de debian, le programme se rendra compte qu'il ne s'agit pas d'une Clef USB ou d'un lecteur de CD-ROM,&lt;br /&gt;
et effectivement, il ne s'agit pas d'un &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;périphérique amovible&lt;/span&gt;.&lt;br /&gt;

Mais il nous proposera d'entrer le nom du fichier de périphérique correspondant au disque-Clef USB :&lt;br /&gt;
&lt;span style=&quot;
        background-color: #eeeeee;
        font: x-small sans-serif;
        font-family: monospace,Courier;
        font-size: 1.2em;
        white-space: nowrap;
&quot;&gt;
 ┌─────────────────────────────┤  &lt;span style=&quot;color: red; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;'''[!!] Détecter et monter le CD'''&lt;/span&gt;  ├─────────────────────────────┐ &lt;br /&gt;
 │                                                                                             │ &lt;br /&gt;
 │  Aucun lecteur de CD-ROM usuel n'a été détecté.                                             │ &lt;br /&gt;
 │                                                                                             │ &lt;br /&gt;
 │  Il peut-être nécessaire de charger des pilotes additionnels de lecteurs de CD-ROM depuis   │ &lt;br /&gt;
 │  un support amovible, par exemple une disquette de pilotes. Si vous avez un tel support     │ &lt;br /&gt;
 │  placez-le dans le lecteur, puis continuez. Dans le cas contraire, vous aurez la            │ &lt;br /&gt;
 │  possibilité de choisir vous-même les modules des pilotes de lecteurs de CD-ROM.            │ &lt;br /&gt;
 │                                                                                             │ &lt;br /&gt;
 │  Faut-il charger les pilotes de lecteurs de CD-ROM depuis un support amovible ?             │ &lt;br /&gt;
 │                                                                                             │ &lt;br /&gt;
 │      &lt;Oui&gt;                                                                        &lt;span style=&quot;background-color: red; color: white;&quot;&gt;'''&lt;Non&gt;'''&lt;/span&gt;     │ &lt;br /&gt;
 └─────────────────────────────────────────────────────────────────────────────────────────────┘ &lt;br /&gt;
­&lt;br /&gt;
­&lt;br /&gt;
­&lt;br /&gt;
 ┌─────────────────────────────┤  &lt;span style=&quot;color: red; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;'''[!!] Détecter et monter le CD'''&lt;/span&gt;  ├─────────────────────────────┐ &lt;br /&gt;
 │                                                                                             │ &lt;br /&gt;
 │  Aucun lecteur de CD-ROM usuel n'a été détecté.                                             │ &lt;br /&gt;
 │                                                                                             │ &lt;br /&gt;
 │  Le lecteur de CD-ROM est peut-être un ancien modèle Mitsumi ou un lecteur qui n'est ni     │ &lt;br /&gt;
 │  un IDE, ni un SCSI. Si vous êtes dans cette situation, vous pouvez indiquer quel module    │ &lt;br /&gt;
 │  devra être chargé et quel périphérique sera utilisé. Si vous ne connaissez pas le module   │ &lt;br /&gt;
 │  et le pilote dont vous avez besoin, veuillez consulter la documentation ou essayez de      │ &lt;br /&gt;
 │  procéder à une installation via le réseau au lieu d'une installation avec un CD.           │ &lt;br /&gt;
 │                                                                                             │ &lt;br /&gt;
 │  Voulez-vous choisir le module et le périphérique du lecteur de CD-ROM ?                    │ &lt;br /&gt;
 │                                                                                             │ &lt;br /&gt;
 │      &lt;span style=&quot;background-color: red; color: white;&quot;&gt;'''&lt;Oui&gt;'''&lt;/span&gt;                                                                        &lt;Non&gt;     │ &lt;br /&gt;
 └─────────────────────────────────────────────────────────────────────────────────────────────┘ &lt;br /&gt;
­&lt;br /&gt;
­&lt;br /&gt;
­&lt;br /&gt;
 ┌─────────────────────────────┤  &lt;span style=&quot;color: red; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;'''[!!] Détecter et monter le CD'''&lt;/span&gt;  ├─────────────────────────────┐ &lt;br /&gt;
 │                                                                                             │ &lt;br /&gt;
 │  La détection automatique n'a pas trouvé de lecteur de CD-ROM. Vous pouvez essayer de       │ &lt;br /&gt;
 │  charger un module particulier si vous possedez un lecteur de CD-ROM spécifique (qui n'est  │ &lt;br /&gt;
 │  ni IDE ni SCSI).                                                                           │ &lt;br /&gt;
 │                                                                                             │ &lt;br /&gt;
 │  Module pour le lecteur de CD-ROM :                                                         │ &lt;br /&gt;
 │                                                                                             │ &lt;br /&gt;
 │                                           &lt;span style=&quot;background-color: red; color: white;&quot;&gt;'''none'''&lt;/span&gt;                                              │ &lt;br /&gt;
 │                                           cdrom                                             │ &lt;br /&gt;
 │                                                                                             │ &lt;br /&gt;
 └─────────────────────────────────────────────────────────────────────────────────────────────┘ &lt;br /&gt;
­&lt;br /&gt;
­&lt;br /&gt;
­&lt;br /&gt;
 ┌─────────────────────────────┤  &lt;span style=&quot;color: red; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;'''[!!] Détecter et monter le CD'''&lt;/span&gt;  ├─────────────────────────────┐ &lt;br /&gt;
 │                                                                                             │ &lt;br /&gt;
 │  Afin de pouvoir accéder au lecteur de CD-ROM, veuillez indiquer le fichier de              │ &lt;br /&gt;
 │  périphérique utilisé. En effet, les lecteurs non standrads utilisent des fichiers de       │ &lt;br /&gt;
 │  périphérique non standrad tels que /dev/mcdx par exemple.                                  │ &lt;br /&gt;
 │                                                                                             │ &lt;br /&gt;
 │  Vous pouvez obtenir un interpréteur de commandes sur le deuxième terminal (ALT+F2) pour    │ &lt;br /&gt;
 │  voir les périphériques disponibles dans /dev en tapant « ls /dev ». Vous pourrez revenir   │ &lt;br /&gt;
 │  à cet écran par ALT+F1.                                                                    │ &lt;br /&gt;
 │                                                                                             │ &lt;br /&gt;
 │  Fichier de périphérique pour le lecteur de CD-ROM :                                        │ &lt;br /&gt;
 │                                                                                             │ &lt;br /&gt;
 │  &lt;span style=&quot;background-color: red; color: white; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;'''/dev/sdc_________________________________________________________________________________'''&lt;/span&gt;  │ &lt;br /&gt;
 │                                                                                             │ &lt;br /&gt;
 │                                         &lt;Continuer&gt;                                         │ &lt;br /&gt;
 └─────────────────────────────────────────────────────────────────────────────────────────────┘ &lt;br /&gt;
&lt;/span&gt;
       Ci-dessus, j'ai entré le nom du fichier de périphérique correspondant au disque-Clef USB

       Après avoir ouvert la deuxième console avec &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;ALT+F2&lt;/span&gt;, j'ai entré la commande :

           &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;ls -l /dev/disk/by-label&lt;/span&gt;

       Ceci m'a permis de retrouver la partition &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;Debian 7.6.0 amd64 1 -&gt; ../../sdb1&lt;/span&gt;&lt;br /&gt;
               Le fichier de périphérique associé au disque-Clef USB est donc &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;/dev/sdb&lt;/span&gt;
                                                                                                

Le programme d'installation a pu continuer son travail normalement,&lt;br /&gt;
et la machine a donc redémarré sur un système debian tout neuf et fonctionnel.

== La remise à l'état d'origine du disque dur ==

Je vais maintenant remettre ce disque-Clef USB dans son état initial :

Avant de connecter le disque USB que j'ais utilisé comme clef USB,&lt;br /&gt;
Je visualise les messages du noyau concernant les périphériques de type &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;block&lt;/span&gt; qu'il a reconnu comme tel :
  root@debG53SW:~# dmesg -T |grep blocks
  [sam. sept. 27 01:51:00 2014] ACPI: Executed 1 blocks of module-level executable AML code
  [sam. sept. 27 01:51:01 2014] sd 0:0:0:0: [sda] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:51:01 2014] sd 1:0:0:0: [sdb] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:51:04 2014] sd 7:0:0:0: [sdd] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:51:04 2014] sd 8:0:0:0: [sde] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  root@debG53SW:~# 

Ensuite, je connecte physiquement le disque USB m'avait servi de clef USB,&lt;br /&gt;
ensuite, une fois le disque connecté physiquement,&lt;br /&gt;
je relance la même ligne de commande afin de trouver le &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;nom du nœud&lt;/span&gt; dans &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;/dev&lt;/span&gt; :&lt;br /&gt;
  root@debG53SW:~# dmesg -T |grep blocks
  [sam. sept. 27 01:51:00 2014] ACPI: Executed 1 blocks of module-level executable AML code
  [sam. sept. 27 01:51:01 2014] sd 0:0:0:0: [sda] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:51:01 2014] sd 1:0:0:0: [sdb] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:51:04 2014] sd 7:0:0:0: [sdd] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:51:04 2014] sd 8:0:0:0: [sde] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:53:41 2014] sd 9:0:0:0: [sdf] 125045424 512-byte logical blocks: (64.0 GB/59.6 GiB)
  root@debG53SW:~# 
je constate que le nœud, associé à ce disque dans le répertoire &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;/dev&lt;/span&gt;, est &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;sdf&lt;/span&gt;,&lt;br /&gt;
alors je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 


À ce stade, soyez '''&lt;u&gt;sûr et certain&lt;/u&gt;''' de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;sdf&lt;/span&gt;) associé au disque USB,

    &lt;span style=&quot;background-color:red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: red; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;&quot;&lt;/span&gt; au lieu de &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt; 
&lt;br /&gt;

  &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;&lt;br /&gt;



Au cas où une des partitions de ce disque ait été &lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''auto-mount'''&lt;/span&gt;ée,&lt;br /&gt;
je dé-&lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''mount'''&lt;/span&gt;e tous les systèmes de fichiers de ce disque :
  root@debG53SW:~# umount ${maCible}*
  umount : /dev/sdf : n'est pas monté
  umount : /dev/sdf1 : n'est pas monté
  umount : /dev/sdf2 : n'est pas monté
  root@debG53SW:~# 

Je lance la recopie sur le disque du fichier &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${monSauv}&lt;/span&gt;qui avait été sauvegardé :
  root@debG53SW:~# dd conv=notrunc bs=$taillBlck if=${monSauv} of=${maCible} &amp;&amp; sync
  60+0 enregistrements lus
  60+0 enregistrements écrits
  251658240 octets (252 MB) copiés, 3,83389 s, 65,6 MB/s
  root@debG53SW:~# 

Et je vais faire prendre en compte ce changement par le noyau

Je recherche, avant de le déconnecter, le &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;nom d'hôte SCSI&lt;/span&gt; de ce disque :
  root@debG53SW:~# readlink /sys/block/sdf
  ../devices/pci0000:00/0000:00:1c.3/0000:04:00.0/usb4/4-1/4-1.4/4-1.4:1.0/host9/target9:0:0/9:0:0:0/block/sdf
  root@debG53SW:~# 

Ok, c'est &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;host9&lt;/span&gt;

Je déconnecte logiciellement le disque &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;sdf&lt;/span&gt; :
  root@debG53SW:~# echo 1 &gt; /sys/block/sdf/device/delete
  root@debG53SW:~# 

et je demande au &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;contrôleur SCSI&lt;/span&gt; de détecter et re-connecter le disque :
  root@debG53SW:~# echo &quot;- - -&quot; &gt; /sys/class/scsi_host/host9/scan
  root@debG53SW:~# 


je vérifie que les messages du noyau confirment la détection :
  root@debG53SW:~# dmesg -T | tail
  [sam. sept. 27 01:53:42 2014] sd 9:0:0:0: [sdf] Attached SCSI disk
  [sam. sept. 27 01:58:11 2014] sd 9:0:0:0: [sdf] Synchronizing SCSI cache
  [sam. sept. 27 02:00:53 2014] scsi 9:0:0:0: Direct-Access     ASMT     2105             0    PQ: 0 ANSI: 6
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: Attached scsi generic sg6 type 0
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] 125045424 512-byte logical blocks: (64.0 GB/59.6 GiB)
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] Write Protect is off
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] Mode Sense: 43 00 00 00
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
  [sam. sept. 27 02:00:53 2014]  sdf: sdf1
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] Attached SCSI disk 
  root@debG53SW:~# 
Je peux voir, dans les messages du noyau :

  - la synchronisation du cache du contrôleur, suite à la déconnexion du disque à &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;&quot;&gt;01:58:11&lt;/span&gt; (suite à l'envoi de la commande &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;echo 1 &gt; /sys/block/sdf/device/delete&lt;/span&gt;)

  - les messages correspondants à la détection par le contrôleur     du disque à &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier; font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;&quot;&gt;02:00:53&lt;/span&gt; (suite à l'envoi de la commande &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;echo &quot;- - -&quot; &gt; /sys/class/scsi_host/host9/scan&lt;/span&gt;)


Mon disque est maintenant dans son état initial d'avant la copie du fichier image ISO,&lt;br /&gt;
avec toutes ses partitions originales et ses fichiers bien en place.

     Il peut donc reprendre une activité normale.
 </text>
      <sha1>2z35136qv2f3owkr5nv8cd40gl5jf6y</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5842</id>
      <parentid>5841</parentid>
      <timestamp>2014-10-02T18:03:40Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* L'installation de debian */ divers ajustements html</comment>
      <text xml:space="preserve" bytes="27821">
== Introduction ==
Les performances en vitesse écriture-lecture des clef USB sont si désespérément lentes,&lt;br /&gt;
qu'on en oublie parfois qu'on avait lancé une copie d'image ISO sur une clef USB.&lt;br /&gt;
Et je ne parle même pas du temps passé à la gravure d'un CD ou DVD…

En utilisant un disque dur USB à la place d'une clef USB ou d'un CD-ROM, c'est au moins '''100 fois plus vite fait''',&lt;br /&gt;
et on peut y gagner une bonne demi-journée d'attente quand il s'agit d'une image ISO Live de plus d'un Gio.

Ici, j'utilise un disque dur SSD d'occasion de 64Gio, (qui a été lâchement abandonné par son propriétaire sous prétexte qu'il avait été malade, et qu'il était trop maigre et trop vieux ;-) )&lt;br /&gt;
ce qui améliore d'autant plus les performances en vitesse écriture-lecture.


Mais je n'ai pas envie de devoir sauvegarder tous les fichiers qui y sont stokés,&lt;br /&gt;
pour ensuite, une fois que je n'ai plus besoin de cette Clef-disque USB,&lt;br /&gt;
devoir recréer chaque partition et remettre en place tous les fichiers sauvegardés.

D'autant que finalement, je n'ai besoin que de 2 ou 3 Gio maximum (si j'utilisai une image ISO autre qu'une image ISO debian netinstall de 250Mio maxi).

La solution que je propose ici consiste à '''ne sauvegarder que l'espace disque qui va être écrasé par la copie de l'image ISO'''.
== La sauvegarde ==
je commence par sauvegarder dans un fichier une copie de l'espace disque original&lt;br /&gt;
avant qu'il ne soit écrasé par la copie de l'image ISO sur ce disque.


Avant de connecter le disque USB que je vais utiliser comme clef USB,&lt;br /&gt;
Je visualise les messages du noyau concernant les périphériques de type &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;block&lt;/span&gt; qu'il a reconnu comme tel :
  root@debG53SW:~# dmesg -T |grep blocks
  [sam. sept. 27 01:08:53 2014] ACPI: Executed 1 blocks of module-level executable AML code
  [sam. sept. 27 01:08:54 2014] sd 0:0:0:0: [sda] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:08:54 2014] sd 1:0:0:0: [sdb] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:08:57 2014] sd 8:0:0:0: [sdd] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:08:57 2014] sd 7:0:0:0: [sde] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  root@debG53SW:~# 


Ensuite, je connecte physiquement le disque USB qui va me servir de clef USB,&lt;br /&gt;
ensuite, une fois le disque connecté physiquement,&lt;br /&gt;
je relance la même ligne de commande afin de trouver le &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;nom du nœud&lt;/span&gt; (point de &lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''mount'''&lt;/span&gt;age) dans &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;/dev&lt;/span&gt; :&lt;br /&gt;
  root@debG53SW:~# dmesg -T |grep blocks
  [sam. sept. 27 01:08:53 2014] ACPI: Executed 1 blocks of module-level executable AML code
  [sam. sept. 27 01:08:54 2014] sd 0:0:0:0: [sda] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:08:54 2014] sd 1:0:0:0: [sdb] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:08:57 2014] sd 8:0:0:0: [sdd] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:08:57 2014] sd 7:0:0:0: [sde] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:13:46 2014] sd 9:0:0:0: [sdf] 125045424 512-byte logical blocks: (64.0 GB/59.6 GiB)
  root@debG53SW:~# 
je constate que le nœud, associé à ce disque dans le répertoire &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;/dev&lt;/span&gt;, est &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;sdf&lt;/span&gt;,&lt;br /&gt;
alors je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monIso=&quot;/home/michel/Téléchargements/firmware-7.6.0-amd64-netinst.iso&quot;
  root@debG53SW:~# nbBlckIso=$((($(stat -c %s ${monIso})/$taillBlck)+1))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 


À ce stade, soyez &lt;u&gt;'''sûr et certain'''&lt;/u&gt;&lt;/b&gt; de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;sdf&lt;/span&gt;) associé au disque USB,

    &lt;span style=&quot;background-color:red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: red; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;&quot;&lt;/span&gt; au lieu de &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt; 
&lt;br /&gt;

  &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;&lt;br /&gt;



Au cas où une des partitions de ce disque ait été &lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''auto-mount'''&lt;/span&gt;ée,&lt;br /&gt;
je dé-&lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''mount'''&lt;/span&gt;e tous les systèmes de fichiers de ce disque :
  root@debG53SW:~# umount ${maCible}*
  umount : /dev/sdf : n'est pas monté
  umount : /dev/sdf1 : n'est pas monté
  root@debG53SW:~# 


je récupère (sauvegarde) une copie de l'espace disque qui sera écrasé par la copie du fichier image ISO sur le disque :
  root@debG53SW:~# dd bs=$taillBlck count=$nbBlckIso if=${maCible} of=${monSauv} &amp;&amp; sync
  60+0 enregistrements lus
  60+0 enregistrements écrits
  251658240 octets (252 MB) copiés, 2,42913 s, 104 MB/s
  root@debG53SW:~# 
(Plus tard, quand je voudrai remettre mon disque USB (&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt;) dans son état original, je n'aurai plus qu'à recopier le fichier &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${monSauv}&lt;/span&gt; sur le disque.)&lt;br /&gt;


Je copie le fichier image ISO (&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${monIso}&lt;/span&gt;) sur mon disque USB (&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt;)
  root@debG53SW:~# dd bs=$taillBlck if=${monIso} of=${maCible} &amp;&amp; sync
  59+0 enregistrements lus
  59+0 enregistrements écrits
  247463936 octets (247 MB) copiés, 3,7607 s, 65,8 MB/s
  root@debG53SW:~# 

Mon disque est maintenant '''prêt à être utilisé comme une clef USB''' pour l'installation de debian.


Je débranche le disque USB que je viens de préparer avec ma machine,&lt;br /&gt;
pour le connecter à la machine sur laquelle je veux installer debian,&lt;br /&gt;
et je vais la démarrer en la faisant booter sur ce disque USB.


== L'installation de debian ==
Au cours de l'installation de debian, le programme se rendra compte qu'il ne s'agit pas d'une Clef USB ou d'un lecteur de CD-ROM,&lt;br /&gt;
et effectivement, il ne s'agit pas d'un &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;périphérique amovible&lt;/span&gt;.&lt;br /&gt;

Mais il nous proposera d'entrer le nom du fichier de périphérique correspondant au disque-Clef USB :

&lt;span style=&quot;white-space: nowrap; font-family: monospace, Courier;&quot;&gt;
 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐
 │                                                                                             │
 │  Aucun lecteur de CD-ROM usuel n'a été détecté.                                             │
 │                                                                                             │
 │  Il peut-être nécessaire de charger des pilotes additionnels de lecteurs de CD-ROM depuis   │
 │  un support amovible, par exemple une disquette de pilotes. Si vous avez un tel support     │
 │  placez-le dans le lecteur, puis continuez. Dans le cas contraire, vous aurez la            │
 │  possibilité de choisir vous-même les modules des pilotes de lecteurs de CD-ROM.            │
 │                                                                                             │
 │  Faut-il charger les pilotes de lecteurs de CD-ROM depuis un support amovible ?             │
 │                                                                                             │
 │      &lt;Oui&gt;                                                                        &lt;span style=&quot;background-color: red; color: white;&quot;&gt;&lt;Non&gt;&lt;/span&gt;     │
 └─────────────────────────────────────────────────────────────────────────────────────────────┘

 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐
 │                                                                                             │
 │  Aucun lecteur de CD-ROM usuel n'a été détecté.                                             │
 │                                                                                             │
 │  Le lecteur de CD-ROM est peut-être un ancien modèle Mitsumi ou un lecteur qui n'est ni     │
 │  un IDE, ni un SCSI. Si vous êtes dans cette situation, vous pouvez indiquer quel module    │
 │  devra être chargé et quel périphérique sera utilisé. Si vous ne connaissez pas le module   │
 │  et le pilote dont vous avez besoin, veuillez consulter la documentation ou essayez de      │
 │  procéder à une installation via le réseau au lieu d'une installation avec un CD.           │
 │                                                                                             │
 │  Voulez-vous choisir le module et le périphérique du lecteur de CD-ROM ?                    │
 │                                                                                             │
 │      &lt;span style=&quot;background-color: red; color: white;&quot;&gt;&lt;Oui&gt;&lt;/span&gt;                                                                        &lt;Non&gt;     │
 └─────────────────────────────────────────────────────────────────────────────────────────────┘

 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐
 │                                                                                             │
 │  La détection automatique n'a pas trouvé de lecteur de CD-ROM. Vous pouvez essayer de       │
 │  charger un module particulier si vous possedez un lecteur de CD-ROM spécifique (qui n'est  │
 │  ni IDE ni SCSI).                                                                           │
 │                                                                                             │
 │  Module pour le lecteur de CD-ROM :                                                         │
 │                                                                                             │
 │                                           &lt;span style=&quot;background-color: red; color: white;&quot;&gt;none&lt;/span&gt;                                              │
 │                                           cdrom                                             │
 │                                                                                             │
 └─────────────────────────────────────────────────────────────────────────────────────────────┘­

 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐ 
 │                                                                                             │ 
 │  Afin de pouvoir accéder au lecteur de CD-ROM, veuillez indiquer le fichier de              │ 
 │  périphérique utilisé. En effet, les lecteurs non standrads utilisent des fichiers de       │ 
 │  périphérique non standrad tels que /dev/mcdx par exemple.                                  │ 
 │                                                                                             │ 
 │  Vous pouvez obtenir un interpréteur de commandes sur le deuxième terminal (ALT+F2) pour    │ 
 │  voir les périphériques disponibles dans /dev en tapant « ls /dev ». Vous pourrez revenir   │ 
 │  à cet écran par ALT+F1.                                                                    │ 
 │                                                                                             │ 
 │  Fichier de périphérique pour le lecteur de CD-ROM :                                        │ 
 │                                                                                             │ 
 │  &lt;span style=&quot;background-color: red; color: white;&quot;&gt;/dev/sdc_________________________________________________________________________________&lt;/span&gt;  │ 
 │                                                                                             │ 
 │                                         &lt;Continuer&gt;                                         │ 
 └─────────────────────────────────────────────────────────────────────────────────────────────┘ 
&lt;/span&gt;
       Ci-dessus, j'ai entré le nom du fichier de périphérique correspondant au disque-Clef USB

       Après avoir ouvert la deuxième console avec &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;ALT+F2&lt;/span&gt;, j'ai entré la commande :

           &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;ls -l /dev/disk/by-label&lt;/span&gt;

       Ceci m'a permis de retrouver la partition &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;Debian 7.6.0 amd64 1 -&gt; ../../sdb1&lt;/span&gt;&lt;br /&gt;
               Le fichier de périphérique associé au disque-Clef USB est donc &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;/dev/sdb&lt;/span&gt;

Le programme d'installation a pu continuer son travail normalement,&lt;br /&gt;
et la machine a donc redémarré sur un système debian tout neuf et fonctionnel.

== La remise à l'état d'origine du disque dur ==

Je vais maintenant remettre ce disque-Clef USB dans son état initial :

Avant de connecter le disque USB que j'ais utilisé comme clef USB,&lt;br /&gt;
Je visualise les messages du noyau concernant les périphériques de type &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;block&lt;/span&gt; qu'il a reconnu comme tel :
  root@debG53SW:~# dmesg -T |grep blocks
  [sam. sept. 27 01:51:00 2014] ACPI: Executed 1 blocks of module-level executable AML code
  [sam. sept. 27 01:51:01 2014] sd 0:0:0:0: [sda] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:51:01 2014] sd 1:0:0:0: [sdb] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:51:04 2014] sd 7:0:0:0: [sdd] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:51:04 2014] sd 8:0:0:0: [sde] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  root@debG53SW:~# 

Ensuite, je connecte physiquement le disque USB m'avait servi de clef USB,&lt;br /&gt;
ensuite, une fois le disque connecté physiquement,&lt;br /&gt;
je relance la même ligne de commande afin de trouver le &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;nom du nœud&lt;/span&gt; dans &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;/dev&lt;/span&gt; :&lt;br /&gt;
  root@debG53SW:~# dmesg -T |grep blocks
  [sam. sept. 27 01:51:00 2014] ACPI: Executed 1 blocks of module-level executable AML code
  [sam. sept. 27 01:51:01 2014] sd 0:0:0:0: [sda] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:51:01 2014] sd 1:0:0:0: [sdb] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:51:04 2014] sd 7:0:0:0: [sdd] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:51:04 2014] sd 8:0:0:0: [sde] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:53:41 2014] sd 9:0:0:0: [sdf] 125045424 512-byte logical blocks: (64.0 GB/59.6 GiB)
  root@debG53SW:~# 
je constate que le nœud, associé à ce disque dans le répertoire &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;/dev&lt;/span&gt;, est &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;sdf&lt;/span&gt;,&lt;br /&gt;
alors je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 


À ce stade, soyez '''&lt;u&gt;sûr et certain&lt;/u&gt;''' de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;sdf&lt;/span&gt;) associé au disque USB,

    &lt;span style=&quot;background-color:red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: red; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;&quot;&lt;/span&gt; au lieu de &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt; 
&lt;br /&gt;

  &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;&lt;br /&gt;



Au cas où une des partitions de ce disque ait été &lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''auto-mount'''&lt;/span&gt;ée,&lt;br /&gt;
je dé-&lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''mount'''&lt;/span&gt;e tous les systèmes de fichiers de ce disque :
  root@debG53SW:~# umount ${maCible}*
  umount : /dev/sdf : n'est pas monté
  umount : /dev/sdf1 : n'est pas monté
  umount : /dev/sdf2 : n'est pas monté
  root@debG53SW:~# 

Je lance la recopie sur le disque du fichier &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${monSauv}&lt;/span&gt;qui avait été sauvegardé :
  root@debG53SW:~# dd conv=notrunc bs=$taillBlck if=${monSauv} of=${maCible} &amp;&amp; sync
  60+0 enregistrements lus
  60+0 enregistrements écrits
  251658240 octets (252 MB) copiés, 3,83389 s, 65,6 MB/s
  root@debG53SW:~# 

Et je vais faire prendre en compte ce changement par le noyau

Je recherche, avant de le déconnecter, le &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;nom d'hôte SCSI&lt;/span&gt; de ce disque :
  root@debG53SW:~# readlink /sys/block/sdf
  ../devices/pci0000:00/0000:00:1c.3/0000:04:00.0/usb4/4-1/4-1.4/4-1.4:1.0/host9/target9:0:0/9:0:0:0/block/sdf
  root@debG53SW:~# 

Ok, c'est &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;host9&lt;/span&gt;

Je déconnecte logiciellement le disque &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;sdf&lt;/span&gt; :
  root@debG53SW:~# echo 1 &gt; /sys/block/sdf/device/delete
  root@debG53SW:~# 

et je demande au &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;contrôleur SCSI&lt;/span&gt; de détecter et re-connecter le disque :
  root@debG53SW:~# echo &quot;- - -&quot; &gt; /sys/class/scsi_host/host9/scan
  root@debG53SW:~# 


je vérifie que les messages du noyau confirment la détection :
  root@debG53SW:~# dmesg -T | tail
  [sam. sept. 27 01:53:42 2014] sd 9:0:0:0: [sdf] Attached SCSI disk
  [sam. sept. 27 01:58:11 2014] sd 9:0:0:0: [sdf] Synchronizing SCSI cache
  [sam. sept. 27 02:00:53 2014] scsi 9:0:0:0: Direct-Access     ASMT     2105             0    PQ: 0 ANSI: 6
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: Attached scsi generic sg6 type 0
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] 125045424 512-byte logical blocks: (64.0 GB/59.6 GiB)
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] Write Protect is off
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] Mode Sense: 43 00 00 00
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
  [sam. sept. 27 02:00:53 2014]  sdf: sdf1
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] Attached SCSI disk 
  root@debG53SW:~# 
Je peux voir, dans les messages du noyau :

  - la synchronisation du cache du contrôleur, suite à la déconnexion du disque à &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;&quot;&gt;01:58:11&lt;/span&gt; (suite à l'envoi de la commande &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;echo 1 &gt; /sys/block/sdf/device/delete&lt;/span&gt;)

  - les messages correspondants à la détection par le contrôleur     du disque à &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier; font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;&quot;&gt;02:00:53&lt;/span&gt; (suite à l'envoi de la commande &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;echo &quot;- - -&quot; &gt; /sys/class/scsi_host/host9/scan&lt;/span&gt;)


Mon disque est maintenant dans son état initial d'avant la copie du fichier image ISO,&lt;br /&gt;
avec toutes ses partitions originales et ses fichiers bien en place.

     Il peut donc reprendre une activité normale.
 </text>
      <sha1>gjzc2vi8leu8kjbajj2arjt13ss8ize</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5844</id>
      <parentid>5842</parentid>
      <timestamp>2014-10-03T14:39:50Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* L'installation de debian */ ajout &quot;white-space: nowrap;&quot;</comment>
      <text xml:space="preserve" bytes="27884">
== Introduction ==
Les performances en vitesse écriture-lecture des clef USB sont si désespérément lentes,&lt;br /&gt;
qu'on en oublie parfois qu'on avait lancé une copie d'image ISO sur une clef USB.&lt;br /&gt;
Et je ne parle même pas du temps passé à la gravure d'un CD ou DVD…

En utilisant un disque dur USB à la place d'une clef USB ou d'un CD-ROM, c'est au moins '''100 fois plus vite fait''',&lt;br /&gt;
et on peut y gagner une bonne demi-journée d'attente quand il s'agit d'une image ISO Live de plus d'un Gio.

Ici, j'utilise un disque dur SSD d'occasion de 64Gio, (qui a été lâchement abandonné par son propriétaire sous prétexte qu'il avait été malade, et qu'il était trop maigre et trop vieux ;-) )&lt;br /&gt;
ce qui améliore d'autant plus les performances en vitesse écriture-lecture.


Mais je n'ai pas envie de devoir sauvegarder tous les fichiers qui y sont stokés,&lt;br /&gt;
pour ensuite, une fois que je n'ai plus besoin de cette Clef-disque USB,&lt;br /&gt;
devoir recréer chaque partition et remettre en place tous les fichiers sauvegardés.

D'autant que finalement, je n'ai besoin que de 2 ou 3 Gio maximum (si j'utilisai une image ISO autre qu'une image ISO debian netinstall de 250Mio maxi).

La solution que je propose ici consiste à '''ne sauvegarder que l'espace disque qui va être écrasé par la copie de l'image ISO'''.
== La sauvegarde ==
je commence par sauvegarder dans un fichier une copie de l'espace disque original&lt;br /&gt;
avant qu'il ne soit écrasé par la copie de l'image ISO sur ce disque.


Avant de connecter le disque USB que je vais utiliser comme clef USB,&lt;br /&gt;
Je visualise les messages du noyau concernant les périphériques de type &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;block&lt;/span&gt; qu'il a reconnu comme tel :
  root@debG53SW:~# dmesg -T |grep blocks
  [sam. sept. 27 01:08:53 2014] ACPI: Executed 1 blocks of module-level executable AML code
  [sam. sept. 27 01:08:54 2014] sd 0:0:0:0: [sda] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:08:54 2014] sd 1:0:0:0: [sdb] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:08:57 2014] sd 8:0:0:0: [sdd] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:08:57 2014] sd 7:0:0:0: [sde] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  root@debG53SW:~# 


Ensuite, je connecte physiquement le disque USB qui va me servir de clef USB,&lt;br /&gt;
ensuite, une fois le disque connecté physiquement,&lt;br /&gt;
je relance la même ligne de commande afin de trouver le &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;nom du nœud&lt;/span&gt; (point de &lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''mount'''&lt;/span&gt;age) dans &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;/dev&lt;/span&gt; :&lt;br /&gt;
  root@debG53SW:~# dmesg -T |grep blocks
  [sam. sept. 27 01:08:53 2014] ACPI: Executed 1 blocks of module-level executable AML code
  [sam. sept. 27 01:08:54 2014] sd 0:0:0:0: [sda] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:08:54 2014] sd 1:0:0:0: [sdb] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:08:57 2014] sd 8:0:0:0: [sdd] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:08:57 2014] sd 7:0:0:0: [sde] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:13:46 2014] sd 9:0:0:0: [sdf] 125045424 512-byte logical blocks: (64.0 GB/59.6 GiB)
  root@debG53SW:~# 
je constate que le nœud, associé à ce disque dans le répertoire &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;/dev&lt;/span&gt;, est &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;sdf&lt;/span&gt;,&lt;br /&gt;
alors je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monIso=&quot;/home/michel/Téléchargements/firmware-7.6.0-amd64-netinst.iso&quot;
  root@debG53SW:~# nbBlckIso=$((($(stat -c %s ${monIso})/$taillBlck)+1))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 


À ce stade, soyez &lt;u&gt;'''sûr et certain'''&lt;/u&gt;&lt;/b&gt; de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;sdf&lt;/span&gt;) associé au disque USB,

    &lt;span style=&quot;background-color:red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: red; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;&quot;&lt;/span&gt; au lieu de &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt; 
&lt;br /&gt;

  &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;&lt;br /&gt;



Au cas où une des partitions de ce disque ait été &lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''auto-mount'''&lt;/span&gt;ée,&lt;br /&gt;
je dé-&lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''mount'''&lt;/span&gt;e tous les systèmes de fichiers de ce disque :
  root@debG53SW:~# umount ${maCible}*
  umount : /dev/sdf : n'est pas monté
  umount : /dev/sdf1 : n'est pas monté
  root@debG53SW:~# 


je récupère (sauvegarde) une copie de l'espace disque qui sera écrasé par la copie du fichier image ISO sur le disque :
  root@debG53SW:~# dd bs=$taillBlck count=$nbBlckIso if=${maCible} of=${monSauv} &amp;&amp; sync
  60+0 enregistrements lus
  60+0 enregistrements écrits
  251658240 octets (252 MB) copiés, 2,42913 s, 104 MB/s
  root@debG53SW:~# 
(Plus tard, quand je voudrai remettre mon disque USB (&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt;) dans son état original, je n'aurai plus qu'à recopier le fichier &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${monSauv}&lt;/span&gt; sur le disque.)&lt;br /&gt;


Je copie le fichier image ISO (&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${monIso}&lt;/span&gt;) sur mon disque USB (&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt;)
  root@debG53SW:~# dd bs=$taillBlck if=${monIso} of=${maCible} &amp;&amp; sync
  59+0 enregistrements lus
  59+0 enregistrements écrits
  247463936 octets (247 MB) copiés, 3,7607 s, 65,8 MB/s
  root@debG53SW:~# 

Mon disque est maintenant '''prêt à être utilisé comme une clef USB''' pour l'installation de debian.


Je débranche le disque USB que je viens de préparer avec ma machine,&lt;br /&gt;
pour le connecter à la machine sur laquelle je veux installer debian,&lt;br /&gt;
et je vais la démarrer en la faisant booter sur ce disque USB.


== L'installation de debian ==
Au cours de l'installation de debian, le programme se rendra compte qu'il ne s'agit pas d'une Clef USB ou d'un lecteur de CD-ROM,&lt;br /&gt;
et effectivement, il ne s'agit pas d'un &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;périphérique amovible&lt;/span&gt;.&lt;br /&gt;

Mais il nous proposera d'entrer le nom du fichier de périphérique correspondant au disque-Clef USB :

&lt;span style=&quot;white-space: nowrap; font-family: monospace, Courier;&quot;&gt;
 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐
 │                                                                                             │
 │  Aucun lecteur de CD-ROM usuel n'a été détecté.                                             │
 │                                                                                             │
 │  Il peut-être nécessaire de charger des pilotes additionnels de lecteurs de CD-ROM depuis   │
 │  un support amovible, par exemple une disquette de pilotes. Si vous avez un tel support     │
 │  placez-le dans le lecteur, puis continuez. Dans le cas contraire, vous aurez la            │
 │  possibilité de choisir vous-même les modules des pilotes de lecteurs de CD-ROM.            │
 │                                                                                             │
 │  Faut-il charger les pilotes de lecteurs de CD-ROM depuis un support amovible ?             │
 │                                                                                             │
 │      &lt;Oui&gt;                                                                        &lt;span style=&quot;background-color: red; color: white;&quot;&gt;&lt;Non&gt;&lt;/span&gt;     │
 └─────────────────────────────────────────────────────────────────────────────────────────────┘

 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐
 │                                                                                             │
 │  Aucun lecteur de CD-ROM usuel n'a été détecté.                                             │
 │                                                                                             │
 │  Le lecteur de CD-ROM est peut-être un ancien modèle Mitsumi ou un lecteur qui n'est ni     │
 │  un IDE, ni un SCSI. Si vous êtes dans cette situation, vous pouvez indiquer quel module    │
 │  devra être chargé et quel périphérique sera utilisé. Si vous ne connaissez pas le module   │
 │  et le pilote dont vous avez besoin, veuillez consulter la documentation ou essayez de      │
 │  procéder à une installation via le réseau au lieu d'une installation avec un CD.           │
 │                                                                                             │
 │  Voulez-vous choisir le module et le périphérique du lecteur de CD-ROM ?                    │
 │                                                                                             │
 │      &lt;span style=&quot;background-color: red; color: white;&quot;&gt;&lt;Oui&gt;&lt;/span&gt;                                                                        &lt;Non&gt;     │
 └─────────────────────────────────────────────────────────────────────────────────────────────┘

 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐
 │                                                                                             │
 │  La détection automatique n'a pas trouvé de lecteur de CD-ROM. Vous pouvez essayer de       │
 │  charger un module particulier si vous possedez un lecteur de CD-ROM spécifique (qui n'est  │
 │  ni IDE ni SCSI).                                                                           │
 │                                                                                             │
 │  Module pour le lecteur de CD-ROM :                                                         │
 │                                                                                             │
 │                                           &lt;span style=&quot;background-color: red; color: white;&quot;&gt;none&lt;/span&gt;                                              │
 │                                           cdrom                                             │
 │                                                                                             │
 └─────────────────────────────────────────────────────────────────────────────────────────────┘­

 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐ 
 │                                                                                             │ 
 │  Afin de pouvoir accéder au lecteur de CD-ROM, veuillez indiquer le fichier de              │ 
 │  périphérique utilisé. En effet, les lecteurs non standrads utilisent des fichiers de       │ 
 │  périphérique non standrad tels que /dev/mcdx par exemple.                                  │ 
 │                                                                                             │ 
 │  Vous pouvez obtenir un interpréteur de commandes sur le deuxième terminal (ALT+F2) pour    │ 
 │  voir les périphériques disponibles dans /dev en tapant « ls /dev ». Vous pourrez revenir   │ 
 │  à cet écran par ALT+F1.                                                                    │ 
 │                                                                                             │ 
 │  Fichier de périphérique pour le lecteur de CD-ROM :                                        │ 
 │                                                                                             │ 
 │  &lt;span style=&quot;background-color: red; color: white;&quot;&gt;/dev/sdc_________________________________________________________________________________&lt;/span&gt;  │ 
 │                                                                                             │ 
 │                                         &lt;Continuer&gt;                                         │ 
 └─────────────────────────────────────────────────────────────────────────────────────────────┘ 
&lt;/span&gt;
       Ci-dessus, j'ai entré le nom du fichier de périphérique correspondant au disque-Clef USB

       Après avoir ouvert la deuxième console avec &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;ALT+F2&lt;/span&gt;, j'ai entré la commande :

           &lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;ls -l /dev/disk/by-label&lt;/span&gt;

       Ceci m'a permis de retrouver la partition &lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;Debian 7.6.0 amd64 1 -&gt; ../../sdb1&lt;/span&gt;&lt;br /&gt;
               Le fichier de périphérique associé au disque-Clef USB est donc &lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;/dev/sdb&lt;/span&gt;

Le programme d'installation a pu continuer son travail normalement,&lt;br /&gt;
et la machine a donc redémarré sur un système debian tout neuf et fonctionnel.

== La remise à l'état d'origine du disque dur ==

Je vais maintenant remettre ce disque-Clef USB dans son état initial :

Avant de connecter le disque USB que j'ais utilisé comme clef USB,&lt;br /&gt;
Je visualise les messages du noyau concernant les périphériques de type &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;block&lt;/span&gt; qu'il a reconnu comme tel :
  root@debG53SW:~# dmesg -T |grep blocks
  [sam. sept. 27 01:51:00 2014] ACPI: Executed 1 blocks of module-level executable AML code
  [sam. sept. 27 01:51:01 2014] sd 0:0:0:0: [sda] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:51:01 2014] sd 1:0:0:0: [sdb] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:51:04 2014] sd 7:0:0:0: [sdd] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:51:04 2014] sd 8:0:0:0: [sde] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  root@debG53SW:~# 

Ensuite, je connecte physiquement le disque USB m'avait servi de clef USB,&lt;br /&gt;
ensuite, une fois le disque connecté physiquement,&lt;br /&gt;
je relance la même ligne de commande afin de trouver le &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;nom du nœud&lt;/span&gt; dans &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;/dev&lt;/span&gt; :&lt;br /&gt;
  root@debG53SW:~# dmesg -T |grep blocks
  [sam. sept. 27 01:51:00 2014] ACPI: Executed 1 blocks of module-level executable AML code
  [sam. sept. 27 01:51:01 2014] sd 0:0:0:0: [sda] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:51:01 2014] sd 1:0:0:0: [sdb] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:51:04 2014] sd 7:0:0:0: [sdd] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:51:04 2014] sd 8:0:0:0: [sde] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:53:41 2014] sd 9:0:0:0: [sdf] 125045424 512-byte logical blocks: (64.0 GB/59.6 GiB)
  root@debG53SW:~# 
je constate que le nœud, associé à ce disque dans le répertoire &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;/dev&lt;/span&gt;, est &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;sdf&lt;/span&gt;,&lt;br /&gt;
alors je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 


À ce stade, soyez '''&lt;u&gt;sûr et certain&lt;/u&gt;''' de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;sdf&lt;/span&gt;) associé au disque USB,

    &lt;span style=&quot;background-color:red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: red; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;&quot;&lt;/span&gt; au lieu de &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt; 
&lt;br /&gt;

  &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;&lt;br /&gt;



Au cas où une des partitions de ce disque ait été &lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''auto-mount'''&lt;/span&gt;ée,&lt;br /&gt;
je dé-&lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''mount'''&lt;/span&gt;e tous les systèmes de fichiers de ce disque :
  root@debG53SW:~# umount ${maCible}*
  umount : /dev/sdf : n'est pas monté
  umount : /dev/sdf1 : n'est pas monté
  umount : /dev/sdf2 : n'est pas monté
  root@debG53SW:~# 

Je lance la recopie sur le disque du fichier &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${monSauv}&lt;/span&gt;qui avait été sauvegardé :
  root@debG53SW:~# dd conv=notrunc bs=$taillBlck if=${monSauv} of=${maCible} &amp;&amp; sync
  60+0 enregistrements lus
  60+0 enregistrements écrits
  251658240 octets (252 MB) copiés, 3,83389 s, 65,6 MB/s
  root@debG53SW:~# 

Et je vais faire prendre en compte ce changement par le noyau

Je recherche, avant de le déconnecter, le &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;nom d'hôte SCSI&lt;/span&gt; de ce disque :
  root@debG53SW:~# readlink /sys/block/sdf
  ../devices/pci0000:00/0000:00:1c.3/0000:04:00.0/usb4/4-1/4-1.4/4-1.4:1.0/host9/target9:0:0/9:0:0:0/block/sdf
  root@debG53SW:~# 

Ok, c'est &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;host9&lt;/span&gt;

Je déconnecte logiciellement le disque &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;sdf&lt;/span&gt; :
  root@debG53SW:~# echo 1 &gt; /sys/block/sdf/device/delete
  root@debG53SW:~# 

et je demande au &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;contrôleur SCSI&lt;/span&gt; de détecter et re-connecter le disque :
  root@debG53SW:~# echo &quot;- - -&quot; &gt; /sys/class/scsi_host/host9/scan
  root@debG53SW:~# 


je vérifie que les messages du noyau confirment la détection :
  root@debG53SW:~# dmesg -T | tail
  [sam. sept. 27 01:53:42 2014] sd 9:0:0:0: [sdf] Attached SCSI disk
  [sam. sept. 27 01:58:11 2014] sd 9:0:0:0: [sdf] Synchronizing SCSI cache
  [sam. sept. 27 02:00:53 2014] scsi 9:0:0:0: Direct-Access     ASMT     2105             0    PQ: 0 ANSI: 6
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: Attached scsi generic sg6 type 0
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] 125045424 512-byte logical blocks: (64.0 GB/59.6 GiB)
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] Write Protect is off
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] Mode Sense: 43 00 00 00
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
  [sam. sept. 27 02:00:53 2014]  sdf: sdf1
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] Attached SCSI disk 
  root@debG53SW:~# 
Je peux voir, dans les messages du noyau :

  - la synchronisation du cache du contrôleur, suite à la déconnexion du disque à &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;&quot;&gt;01:58:11&lt;/span&gt; (suite à l'envoi de la commande &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;echo 1 &gt; /sys/block/sdf/device/delete&lt;/span&gt;)

  - les messages correspondants à la détection par le contrôleur     du disque à &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier; font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;&quot;&gt;02:00:53&lt;/span&gt; (suite à l'envoi de la commande &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;echo &quot;- - -&quot; &gt; /sys/class/scsi_host/host9/scan&lt;/span&gt;)


Mon disque est maintenant dans son état initial d'avant la copie du fichier image ISO,&lt;br /&gt;
avec toutes ses partitions originales et ses fichiers bien en place.

     Il peut donc reprendre une activité normale.
 </text>
      <sha1>goji4xzb86128mnw8yxsmo5qxo6u6gs</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5845</id>
      <parentid>5844</parentid>
      <timestamp>2014-10-03T15:07:41Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* La sauvegarde */ formatage</comment>
      <text xml:space="preserve" bytes="27875">
== Introduction ==
Les performances en vitesse écriture-lecture des clef USB sont si désespérément lentes,&lt;br /&gt;
qu'on en oublie parfois qu'on avait lancé une copie d'image ISO sur une clef USB.&lt;br /&gt;
Et je ne parle même pas du temps passé à la gravure d'un CD ou DVD…

En utilisant un disque dur USB à la place d'une clef USB ou d'un CD-ROM, c'est au moins '''100 fois plus vite fait''',&lt;br /&gt;
et on peut y gagner une bonne demi-journée d'attente quand il s'agit d'une image ISO Live de plus d'un Gio.

Ici, j'utilise un disque dur SSD d'occasion de 64Gio, (qui a été lâchement abandonné par son propriétaire sous prétexte qu'il avait été malade, et qu'il était trop maigre et trop vieux ;-) )&lt;br /&gt;
ce qui améliore d'autant plus les performances en vitesse écriture-lecture.


Mais je n'ai pas envie de devoir sauvegarder tous les fichiers qui y sont stokés,&lt;br /&gt;
pour ensuite, une fois que je n'ai plus besoin de cette Clef-disque USB,&lt;br /&gt;
devoir recréer chaque partition et remettre en place tous les fichiers sauvegardés.

D'autant que finalement, je n'ai besoin que de 2 ou 3 Gio maximum (si j'utilisai une image ISO autre qu'une image ISO debian netinstall de 250Mio maxi).

La solution que je propose ici consiste à '''ne sauvegarder que l'espace disque qui va être écrasé par la copie de l'image ISO'''.
== La sauvegarde ==
je commence par sauvegarder dans un fichier une copie de l'espace disque original&lt;br /&gt;
avant qu'il ne soit écrasé par la copie de l'image ISO sur ce disque.


Avant de connecter le disque USB que je vais utiliser comme clef USB,&lt;br /&gt;
Je visualise les messages du noyau concernant les périphériques de type 
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;block&lt;/span&gt;
qu'il a reconnu comme tel :
  root@debG53SW:~# dmesg -T |grep blocks
  [sam. sept. 27 01:08:53 2014] ACPI: Executed 1 blocks of module-level executable AML code
  [sam. sept. 27 01:08:54 2014] sd 0:0:0:0: [sda] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:08:54 2014] sd 1:0:0:0: [sdb] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:08:57 2014] sd 8:0:0:0: [sdd] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:08:57 2014] sd 7:0:0:0: [sde] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  root@debG53SW:~# 

Ensuite, je connecte physiquement le disque USB qui va me servir de clef USB.

Une fois le disque connecté physiquement, je relance la même ligne de commande afin de trouver le 
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;&quot;&gt;nom du nœud&lt;/span&gt;
(point de 
&lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''mount'''&lt;/span&gt;age) dans 
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;/dev&lt;/span&gt; :
  root@debG53SW:~# dmesg -T |grep blocks
  [sam. sept. 27 01:08:53 2014] ACPI: Executed 1 blocks of module-level executable AML code
  [sam. sept. 27 01:08:54 2014] sd 0:0:0:0: [sda] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:08:54 2014] sd 1:0:0:0: [sdb] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:08:57 2014] sd 8:0:0:0: [sdd] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:08:57 2014] sd 7:0:0:0: [sde] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:13:46 2014] sd 9:0:0:0: [sdf] 125045424 512-byte logical blocks: (64.0 GB/59.6 GiB)
  root@debG53SW:~# 
je constate que le nœud, associé à ce disque dans le répertoire
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;/dev&lt;/span&gt;,
est
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;sdf&lt;/span&gt;.

Je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monIso=&quot;/home/michel/Téléchargements/firmware-7.6.0-amd64-netinst.iso&quot;
  root@debG53SW:~# nbBlckIso=$((($(stat -c %s ${monIso})/$taillBlck)+1))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 


À ce stade, soyez
&lt;u&gt;'''sûr et certain'''&lt;/u&gt;
de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;&quot;&gt;sdf&lt;/span&gt;
) associé au disque USB,

    
&lt;span style=&quot;background-color:red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;white-space: nowrap; margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: red; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;&quot;&lt;/span&gt;
au lieu de
&lt;span style=&quot;white-space: nowrap; margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt;

  
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;


Au cas où une des partitions de ce disque
ait été &lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''auto-mount'''&lt;/span&gt;ée,
je dé-&lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''mount'''&lt;/span&gt;e
tous les systèmes de fichiers de ce disque :
  root@debG53SW:~# umount ${maCible}*
  umount : /dev/sdf : n'est pas monté
  umount : /dev/sdf1 : n'est pas monté
  root@debG53SW:~# 

je récupère (sauvegarde) une copie de l'espace disque qui sera écrasé par la copie du fichier image ISO sur le disque :
  root@debG53SW:~# dd bs=$taillBlck count=$nbBlckIso if=${maCible} of=${monSauv} &amp;&amp; sync
  60+0 enregistrements lus
  60+0 enregistrements écrits
  251658240 octets (252 MB) copiés, 2,42913 s, 104 MB/s
  root@debG53SW:~# 
(Plus tard, quand je voudrai remettre mon disque USB
(&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt;)
dans son état original, je n'aurai plus qu'à recopier le fichier
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${monSauv}&lt;/span&gt;
sur le disque.)

Je copie le fichier image ISO
(&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${monIso}&lt;/span&gt;)
sur mon disque USB
(&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt;) :
  root@debG53SW:~# dd bs=$taillBlck if=${monIso} of=${maCible} &amp;&amp; sync
  59+0 enregistrements lus
  59+0 enregistrements écrits
  247463936 octets (247 MB) copiés, 3,7607 s, 65,8 MB/s
  root@debG53SW:~# 

Mon disque est maintenant '''prêt à être utilisé comme une clef USB''' pour l'installation de debian.


Je débranche le disque USB que je viens de préparer avec ma machine, pour le connecter à la machine sur laquelle je veux installer debian,&lt;br /&gt;
et je vais la démarrer en la faisant booter sur ce disque USB.

== L'installation de debian ==
Au cours de l'installation de debian, le programme se rendra compte qu'il ne s'agit pas d'une Clef USB ou d'un lecteur de CD-ROM,&lt;br /&gt;
et effectivement, il ne s'agit pas d'un &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;périphérique amovible&lt;/span&gt;.&lt;br /&gt;

Mais il nous proposera d'entrer le nom du fichier de périphérique correspondant au disque-Clef USB :

&lt;span style=&quot;white-space: nowrap; font-family: monospace, Courier;&quot;&gt;
 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐
 │                                                                                             │
 │  Aucun lecteur de CD-ROM usuel n'a été détecté.                                             │
 │                                                                                             │
 │  Il peut-être nécessaire de charger des pilotes additionnels de lecteurs de CD-ROM depuis   │
 │  un support amovible, par exemple une disquette de pilotes. Si vous avez un tel support     │
 │  placez-le dans le lecteur, puis continuez. Dans le cas contraire, vous aurez la            │
 │  possibilité de choisir vous-même les modules des pilotes de lecteurs de CD-ROM.            │
 │                                                                                             │
 │  Faut-il charger les pilotes de lecteurs de CD-ROM depuis un support amovible ?             │
 │                                                                                             │
 │      &lt;Oui&gt;                                                                        &lt;span style=&quot;background-color: red; color: white;&quot;&gt;&lt;Non&gt;&lt;/span&gt;     │
 └─────────────────────────────────────────────────────────────────────────────────────────────┘

 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐
 │                                                                                             │
 │  Aucun lecteur de CD-ROM usuel n'a été détecté.                                             │
 │                                                                                             │
 │  Le lecteur de CD-ROM est peut-être un ancien modèle Mitsumi ou un lecteur qui n'est ni     │
 │  un IDE, ni un SCSI. Si vous êtes dans cette situation, vous pouvez indiquer quel module    │
 │  devra être chargé et quel périphérique sera utilisé. Si vous ne connaissez pas le module   │
 │  et le pilote dont vous avez besoin, veuillez consulter la documentation ou essayez de      │
 │  procéder à une installation via le réseau au lieu d'une installation avec un CD.           │
 │                                                                                             │
 │  Voulez-vous choisir le module et le périphérique du lecteur de CD-ROM ?                    │
 │                                                                                             │
 │      &lt;span style=&quot;background-color: red; color: white;&quot;&gt;&lt;Oui&gt;&lt;/span&gt;                                                                        &lt;Non&gt;     │
 └─────────────────────────────────────────────────────────────────────────────────────────────┘

 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐
 │                                                                                             │
 │  La détection automatique n'a pas trouvé de lecteur de CD-ROM. Vous pouvez essayer de       │
 │  charger un module particulier si vous possedez un lecteur de CD-ROM spécifique (qui n'est  │
 │  ni IDE ni SCSI).                                                                           │
 │                                                                                             │
 │  Module pour le lecteur de CD-ROM :                                                         │
 │                                                                                             │
 │                                           &lt;span style=&quot;background-color: red; color: white;&quot;&gt;none&lt;/span&gt;                                              │
 │                                           cdrom                                             │
 │                                                                                             │
 └─────────────────────────────────────────────────────────────────────────────────────────────┘­

 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐ 
 │                                                                                             │ 
 │  Afin de pouvoir accéder au lecteur de CD-ROM, veuillez indiquer le fichier de              │ 
 │  périphérique utilisé. En effet, les lecteurs non standrads utilisent des fichiers de       │ 
 │  périphérique non standrad tels que /dev/mcdx par exemple.                                  │ 
 │                                                                                             │ 
 │  Vous pouvez obtenir un interpréteur de commandes sur le deuxième terminal (ALT+F2) pour    │ 
 │  voir les périphériques disponibles dans /dev en tapant « ls /dev ». Vous pourrez revenir   │ 
 │  à cet écran par ALT+F1.                                                                    │ 
 │                                                                                             │ 
 │  Fichier de périphérique pour le lecteur de CD-ROM :                                        │ 
 │                                                                                             │ 
 │  &lt;span style=&quot;background-color: red; color: white;&quot;&gt;/dev/sdc_________________________________________________________________________________&lt;/span&gt;  │ 
 │                                                                                             │ 
 │                                         &lt;Continuer&gt;                                         │ 
 └─────────────────────────────────────────────────────────────────────────────────────────────┘ 
&lt;/span&gt;
       Ci-dessus, j'ai entré le nom du fichier de périphérique correspondant au disque-Clef USB

       Après avoir ouvert la deuxième console avec &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;ALT+F2&lt;/span&gt;, j'ai entré la commande :

           &lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;ls -l /dev/disk/by-label&lt;/span&gt;

       Ceci m'a permis de retrouver la partition &lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;Debian 7.6.0 amd64 1 -&gt; ../../sdb1&lt;/span&gt;&lt;br /&gt;
               Le fichier de périphérique associé au disque-Clef USB est donc &lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;/dev/sdb&lt;/span&gt;

Le programme d'installation a pu continuer son travail normalement,&lt;br /&gt;
et la machine a donc redémarré sur un système debian tout neuf et fonctionnel.

== La remise à l'état d'origine du disque dur ==

Je vais maintenant remettre ce disque-Clef USB dans son état initial :

Avant de connecter le disque USB que j'ais utilisé comme clef USB,&lt;br /&gt;
Je visualise les messages du noyau concernant les périphériques de type &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;block&lt;/span&gt; qu'il a reconnu comme tel :
  root@debG53SW:~# dmesg -T |grep blocks
  [sam. sept. 27 01:51:00 2014] ACPI: Executed 1 blocks of module-level executable AML code
  [sam. sept. 27 01:51:01 2014] sd 0:0:0:0: [sda] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:51:01 2014] sd 1:0:0:0: [sdb] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:51:04 2014] sd 7:0:0:0: [sdd] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:51:04 2014] sd 8:0:0:0: [sde] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  root@debG53SW:~# 

Ensuite, je connecte physiquement le disque USB m'avait servi de clef USB,&lt;br /&gt;
ensuite, une fois le disque connecté physiquement,&lt;br /&gt;
je relance la même ligne de commande afin de trouver le &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;nom du nœud&lt;/span&gt; dans &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;/dev&lt;/span&gt; :&lt;br /&gt;
  root@debG53SW:~# dmesg -T |grep blocks
  [sam. sept. 27 01:51:00 2014] ACPI: Executed 1 blocks of module-level executable AML code
  [sam. sept. 27 01:51:01 2014] sd 0:0:0:0: [sda] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:51:01 2014] sd 1:0:0:0: [sdb] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:51:04 2014] sd 7:0:0:0: [sdd] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:51:04 2014] sd 8:0:0:0: [sde] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:53:41 2014] sd 9:0:0:0: [sdf] 125045424 512-byte logical blocks: (64.0 GB/59.6 GiB)
  root@debG53SW:~# 
je constate que le nœud, associé à ce disque dans le répertoire &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;/dev&lt;/span&gt;, est &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;sdf&lt;/span&gt;,&lt;br /&gt;
alors je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 


À ce stade, soyez '''&lt;u&gt;sûr et certain&lt;/u&gt;''' de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;sdf&lt;/span&gt;) associé au disque USB,

    &lt;span style=&quot;background-color:red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: red; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;&quot;&lt;/span&gt; au lieu de &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt; 
&lt;br /&gt;

  &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;&lt;br /&gt;



Au cas où une des partitions de ce disque ait été &lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''auto-mount'''&lt;/span&gt;ée,&lt;br /&gt;
je dé-&lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''mount'''&lt;/span&gt;e tous les systèmes de fichiers de ce disque :
  root@debG53SW:~# umount ${maCible}*
  umount : /dev/sdf : n'est pas monté
  umount : /dev/sdf1 : n'est pas monté
  umount : /dev/sdf2 : n'est pas monté
  root@debG53SW:~# 

Je lance la recopie sur le disque du fichier &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${monSauv}&lt;/span&gt;qui avait été sauvegardé :
  root@debG53SW:~# dd conv=notrunc bs=$taillBlck if=${monSauv} of=${maCible} &amp;&amp; sync
  60+0 enregistrements lus
  60+0 enregistrements écrits
  251658240 octets (252 MB) copiés, 3,83389 s, 65,6 MB/s
  root@debG53SW:~# 

Et je vais faire prendre en compte ce changement par le noyau

Je recherche, avant de le déconnecter, le &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;nom d'hôte SCSI&lt;/span&gt; de ce disque :
  root@debG53SW:~# readlink /sys/block/sdf
  ../devices/pci0000:00/0000:00:1c.3/0000:04:00.0/usb4/4-1/4-1.4/4-1.4:1.0/host9/target9:0:0/9:0:0:0/block/sdf
  root@debG53SW:~# 

Ok, c'est &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;host9&lt;/span&gt;

Je déconnecte logiciellement le disque &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;sdf&lt;/span&gt; :
  root@debG53SW:~# echo 1 &gt; /sys/block/sdf/device/delete
  root@debG53SW:~# 

et je demande au &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;contrôleur SCSI&lt;/span&gt; de détecter et re-connecter le disque :
  root@debG53SW:~# echo &quot;- - -&quot; &gt; /sys/class/scsi_host/host9/scan
  root@debG53SW:~# 


je vérifie que les messages du noyau confirment la détection :
  root@debG53SW:~# dmesg -T | tail
  [sam. sept. 27 01:53:42 2014] sd 9:0:0:0: [sdf] Attached SCSI disk
  [sam. sept. 27 01:58:11 2014] sd 9:0:0:0: [sdf] Synchronizing SCSI cache
  [sam. sept. 27 02:00:53 2014] scsi 9:0:0:0: Direct-Access     ASMT     2105             0    PQ: 0 ANSI: 6
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: Attached scsi generic sg6 type 0
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] 125045424 512-byte logical blocks: (64.0 GB/59.6 GiB)
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] Write Protect is off
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] Mode Sense: 43 00 00 00
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
  [sam. sept. 27 02:00:53 2014]  sdf: sdf1
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] Attached SCSI disk 
  root@debG53SW:~# 
Je peux voir, dans les messages du noyau :

  - la synchronisation du cache du contrôleur, suite à la déconnexion du disque à &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;&quot;&gt;01:58:11&lt;/span&gt; (suite à l'envoi de la commande &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;echo 1 &gt; /sys/block/sdf/device/delete&lt;/span&gt;)

  - les messages correspondants à la détection par le contrôleur     du disque à &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier; font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;&quot;&gt;02:00:53&lt;/span&gt; (suite à l'envoi de la commande &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;echo &quot;- - -&quot; &gt; /sys/class/scsi_host/host9/scan&lt;/span&gt;)


Mon disque est maintenant dans son état initial d'avant la copie du fichier image ISO,&lt;br /&gt;
avec toutes ses partitions originales et ses fichiers bien en place.

     Il peut donc reprendre une activité normale.
 </text>
      <sha1>3015zt51qfrrdjxiz5ittkmho5wjz7j</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5846</id>
      <parentid>5845</parentid>
      <timestamp>2014-10-03T15:37:13Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* L'installation de debian */ formatage + correction</comment>
      <text xml:space="preserve" bytes="27806">
== Introduction ==
Les performances en vitesse écriture-lecture des clef USB sont si désespérément lentes,&lt;br /&gt;
qu'on en oublie parfois qu'on avait lancé une copie d'image ISO sur une clef USB.&lt;br /&gt;
Et je ne parle même pas du temps passé à la gravure d'un CD ou DVD…

En utilisant un disque dur USB à la place d'une clef USB ou d'un CD-ROM, c'est au moins '''100 fois plus vite fait''',&lt;br /&gt;
et on peut y gagner une bonne demi-journée d'attente quand il s'agit d'une image ISO Live de plus d'un Gio.

Ici, j'utilise un disque dur SSD d'occasion de 64Gio, (qui a été lâchement abandonné par son propriétaire sous prétexte qu'il avait été malade, et qu'il était trop maigre et trop vieux ;-) )&lt;br /&gt;
ce qui améliore d'autant plus les performances en vitesse écriture-lecture.


Mais je n'ai pas envie de devoir sauvegarder tous les fichiers qui y sont stokés,&lt;br /&gt;
pour ensuite, une fois que je n'ai plus besoin de cette Clef-disque USB,&lt;br /&gt;
devoir recréer chaque partition et remettre en place tous les fichiers sauvegardés.

D'autant que finalement, je n'ai besoin que de 2 ou 3 Gio maximum (si j'utilisai une image ISO autre qu'une image ISO debian netinstall de 250Mio maxi).

La solution que je propose ici consiste à '''ne sauvegarder que l'espace disque qui va être écrasé par la copie de l'image ISO'''.
== La sauvegarde ==
je commence par sauvegarder dans un fichier une copie de l'espace disque original&lt;br /&gt;
avant qu'il ne soit écrasé par la copie de l'image ISO sur ce disque.


Avant de connecter le disque USB que je vais utiliser comme clef USB,&lt;br /&gt;
Je visualise les messages du noyau concernant les périphériques de type 
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;block&lt;/span&gt;
qu'il a reconnu comme tel :
  root@debG53SW:~# dmesg -T |grep blocks
  [sam. sept. 27 01:08:53 2014] ACPI: Executed 1 blocks of module-level executable AML code
  [sam. sept. 27 01:08:54 2014] sd 0:0:0:0: [sda] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:08:54 2014] sd 1:0:0:0: [sdb] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:08:57 2014] sd 8:0:0:0: [sdd] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:08:57 2014] sd 7:0:0:0: [sde] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  root@debG53SW:~# 

Ensuite, je connecte physiquement le disque USB qui va me servir de clef USB.

Une fois le disque connecté physiquement, je relance la même ligne de commande afin de trouver le 
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;&quot;&gt;nom du nœud&lt;/span&gt;
(point de 
&lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''mount'''&lt;/span&gt;age) dans 
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;/dev&lt;/span&gt; :
  root@debG53SW:~# dmesg -T |grep blocks
  [sam. sept. 27 01:08:53 2014] ACPI: Executed 1 blocks of module-level executable AML code
  [sam. sept. 27 01:08:54 2014] sd 0:0:0:0: [sda] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:08:54 2014] sd 1:0:0:0: [sdb] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:08:57 2014] sd 8:0:0:0: [sdd] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:08:57 2014] sd 7:0:0:0: [sde] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:13:46 2014] sd 9:0:0:0: [sdf] 125045424 512-byte logical blocks: (64.0 GB/59.6 GiB)
  root@debG53SW:~# 
je constate que le nœud, associé à ce disque dans le répertoire
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;/dev&lt;/span&gt;,
est
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;sdf&lt;/span&gt;.

Je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monIso=&quot;/home/michel/Téléchargements/firmware-7.6.0-amd64-netinst.iso&quot;
  root@debG53SW:~# nbBlckIso=$((($(stat -c %s ${monIso})/$taillBlck)+1))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 


À ce stade, soyez
&lt;u&gt;'''sûr et certain'''&lt;/u&gt;
de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;&quot;&gt;sdf&lt;/span&gt;
) associé au disque USB,

    
&lt;span style=&quot;background-color:red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;white-space: nowrap; margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: red; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;&quot;&lt;/span&gt;
au lieu de
&lt;span style=&quot;white-space: nowrap; margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt;

  
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;


Au cas où une des partitions de ce disque
ait été &lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''auto-mount'''&lt;/span&gt;ée,
je dé-&lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''mount'''&lt;/span&gt;e
tous les systèmes de fichiers de ce disque :
  root@debG53SW:~# umount ${maCible}*
  umount : /dev/sdf : n'est pas monté
  umount : /dev/sdf1 : n'est pas monté
  root@debG53SW:~# 

je récupère (sauvegarde) une copie de l'espace disque qui sera écrasé par la copie du fichier image ISO sur le disque :
  root@debG53SW:~# dd bs=$taillBlck count=$nbBlckIso if=${maCible} of=${monSauv} &amp;&amp; sync
  60+0 enregistrements lus
  60+0 enregistrements écrits
  251658240 octets (252 MB) copiés, 2,42913 s, 104 MB/s
  root@debG53SW:~# 
(Plus tard, quand je voudrai remettre mon disque USB
(&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt;)
dans son état original, je n'aurai plus qu'à recopier le fichier
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${monSauv}&lt;/span&gt;
sur le disque.)

Je copie le fichier image ISO
(&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${monIso}&lt;/span&gt;)
sur mon disque USB
(&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt;) :
  root@debG53SW:~# dd bs=$taillBlck if=${monIso} of=${maCible} &amp;&amp; sync
  59+0 enregistrements lus
  59+0 enregistrements écrits
  247463936 octets (247 MB) copiés, 3,7607 s, 65,8 MB/s
  root@debG53SW:~# 

Mon disque est maintenant '''prêt à être utilisé comme une clef USB''' pour l'installation de debian.


Je débranche le disque USB que je viens de préparer avec ma machine, pour le connecter à la machine sur laquelle je veux installer debian,&lt;br /&gt;
et je vais la démarrer en la faisant booter sur ce disque USB.

== L'installation de debian ==

Au cours de l'installation de debian, le programme se rendra compte qu'il ne s'agit pas d'une Clef USB ou d'un lecteur de CD-ROM,

car il ne s'agit pas d'un
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; font-family: monospace, Courier; font: x-small sans-serif; font-size: 1em; border: 1px solid rgb(221, 221, 221); background-color: #66CCFF;&quot;&gt;
périphérique amovible
&lt;/span&gt;.

Mais il va nous proposer d'entrer le nom du fichier de périphérique correspondant au disque-Clef USB :

&lt;span style=&quot;white-space: nowrap; font-family: monospace, Courier;&quot;&gt;
 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐
 │                                                                                             │
 │  Aucun lecteur de CD-ROM usuel n'a été détecté.                                             │
 │                                                                                             │
 │  Il peut-être nécessaire de charger des pilotes additionnels de lecteurs de CD-ROM depuis   │
 │  un support amovible, par exemple une disquette de pilotes. Si vous avez un tel support     │
 │  placez-le dans le lecteur, puis continuez. Dans le cas contraire, vous aurez la            │
 │  possibilité de choisir vous-même les modules des pilotes de lecteurs de CD-ROM.            │
 │                                                                                             │
 │  Faut-il charger les pilotes de lecteurs de CD-ROM depuis un support amovible ?             │
 │                                                                                             │
 │      &lt;Oui&gt;                                                                        &lt;span style=&quot;background-color: red; color: white;&quot;&gt;&lt;Non&gt;&lt;/span&gt;     │
 └─────────────────────────────────────────────────────────────────────────────────────────────┘

 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐
 │                                                                                             │
 │  Aucun lecteur de CD-ROM usuel n'a été détecté.                                             │
 │                                                                                             │
 │  Le lecteur de CD-ROM est peut-être un ancien modèle Mitsumi ou un lecteur qui n'est ni     │
 │  un IDE, ni un SCSI. Si vous êtes dans cette situation, vous pouvez indiquer quel module    │
 │  devra être chargé et quel périphérique sera utilisé. Si vous ne connaissez pas le module   │
 │  et le pilote dont vous avez besoin, veuillez consulter la documentation ou essayez de      │
 │  procéder à une installation via le réseau au lieu d'une installation avec un CD.           │
 │                                                                                             │
 │  Voulez-vous choisir le module et le périphérique du lecteur de CD-ROM ?                    │
 │                                                                                             │
 │      &lt;span style=&quot;background-color: red; color: white;&quot;&gt;&lt;Oui&gt;&lt;/span&gt;                                                                        &lt;Non&gt;     │
 └─────────────────────────────────────────────────────────────────────────────────────────────┘

 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐
 │                                                                                             │
 │  La détection automatique n'a pas trouvé de lecteur de CD-ROM. Vous pouvez essayer de       │
 │  charger un module particulier si vous possedez un lecteur de CD-ROM spécifique (qui n'est  │
 │  ni IDE ni SCSI).                                                                           │
 │                                                                                             │
 │  Module pour le lecteur de CD-ROM :                                                         │
 │                                                                                             │
 │                                           &lt;span style=&quot;background-color: red; color: white;&quot;&gt;none&lt;/span&gt;                                              │
 │                                           cdrom                                             │
 │                                                                                             │
 └─────────────────────────────────────────────────────────────────────────────────────────────┘­

 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐ 
 │                                                                                             │ 
 │  Afin de pouvoir accéder au lecteur de CD-ROM, veuillez indiquer le fichier de              │ 
 │  périphérique utilisé. En effet, les lecteurs non standrads utilisent des fichiers de       │ 
 │  périphérique non standrad tels que /dev/mcdx par exemple.                                  │ 
 │                                                                                             │ 
 │  Vous pouvez obtenir un interpréteur de commandes sur le deuxième terminal (ALT+F2) pour    │ 
 │  voir les périphériques disponibles dans /dev en tapant « ls /dev ». Vous pourrez revenir   │ 
 │  à cet écran par ALT+F1.                                                                    │ 
 │                                                                                             │ 
 │  Fichier de périphérique pour le lecteur de CD-ROM :                                        │ 
 │                                                                                             │ 
 │  &lt;span style=&quot;background-color: red; color: white;&quot;&gt;/dev/sdc_________________________________________________________________________________&lt;/span&gt;  │ 
 │                                                                                             │ 
 │                                         &lt;Continuer&gt;                                         │ 
 └─────────────────────────────────────────────────────────────────────────────────────────────┘ 
&lt;/span&gt;
Ci-dessus, j'ai pu entrer le nom du fichier de périphérique correspondant au disque-Clef USB.


Pour connaître le nom du fichier de périphérique correspondant au disque-Clef USB,

j'ai ouvert une deuxième console avec
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); background-color: #33CC33; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;ALT+F2&lt;/span&gt;,
pour entrer la commande :
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); background-color: #33CC33; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;
ls -l /dev/disk/by-label
&lt;/span&gt;

ce qui m'a permis de retrouver la partition
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #66CCFF; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;
Debian 7.6.0 amd64 1 -&gt; ../../'''sdc'''1
&lt;/span&gt;

Le fichier de périphérique associé au disque-Clef USB est donc
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #66CCFF; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;
/dev/sdc
&lt;/span&gt;


Le programme d'installation a continué son travail normalement, et la machine a pu redémarrer avec son système debian.

== La remise à l'état d'origine du disque dur ==

Je vais maintenant remettre ce disque-Clef USB dans son état initial :

Avant de connecter le disque USB que j'ais utilisé comme clef USB,&lt;br /&gt;
Je visualise les messages du noyau concernant les périphériques de type &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;block&lt;/span&gt; qu'il a reconnu comme tel :
  root@debG53SW:~# dmesg -T |grep blocks
  [sam. sept. 27 01:51:00 2014] ACPI: Executed 1 blocks of module-level executable AML code
  [sam. sept. 27 01:51:01 2014] sd 0:0:0:0: [sda] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:51:01 2014] sd 1:0:0:0: [sdb] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:51:04 2014] sd 7:0:0:0: [sdd] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:51:04 2014] sd 8:0:0:0: [sde] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  root@debG53SW:~# 

Ensuite, je connecte physiquement le disque USB m'avait servi de clef USB,&lt;br /&gt;
ensuite, une fois le disque connecté physiquement,&lt;br /&gt;
je relance la même ligne de commande afin de trouver le &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;nom du nœud&lt;/span&gt; dans &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;/dev&lt;/span&gt; :&lt;br /&gt;
  root@debG53SW:~# dmesg -T |grep blocks
  [sam. sept. 27 01:51:00 2014] ACPI: Executed 1 blocks of module-level executable AML code
  [sam. sept. 27 01:51:01 2014] sd 0:0:0:0: [sda] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:51:01 2014] sd 1:0:0:0: [sdb] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:51:04 2014] sd 7:0:0:0: [sdd] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:51:04 2014] sd 8:0:0:0: [sde] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:53:41 2014] sd 9:0:0:0: [sdf] 125045424 512-byte logical blocks: (64.0 GB/59.6 GiB)
  root@debG53SW:~# 
je constate que le nœud, associé à ce disque dans le répertoire &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;/dev&lt;/span&gt;, est &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;sdf&lt;/span&gt;,&lt;br /&gt;
alors je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 


À ce stade, soyez '''&lt;u&gt;sûr et certain&lt;/u&gt;''' de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;sdf&lt;/span&gt;) associé au disque USB,

    &lt;span style=&quot;background-color:red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: red; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;&quot;&lt;/span&gt; au lieu de &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt; 
&lt;br /&gt;

  &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;&lt;br /&gt;



Au cas où une des partitions de ce disque ait été &lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''auto-mount'''&lt;/span&gt;ée,&lt;br /&gt;
je dé-&lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''mount'''&lt;/span&gt;e tous les systèmes de fichiers de ce disque :
  root@debG53SW:~# umount ${maCible}*
  umount : /dev/sdf : n'est pas monté
  umount : /dev/sdf1 : n'est pas monté
  umount : /dev/sdf2 : n'est pas monté
  root@debG53SW:~# 

Je lance la recopie sur le disque du fichier &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${monSauv}&lt;/span&gt;qui avait été sauvegardé :
  root@debG53SW:~# dd conv=notrunc bs=$taillBlck if=${monSauv} of=${maCible} &amp;&amp; sync
  60+0 enregistrements lus
  60+0 enregistrements écrits
  251658240 octets (252 MB) copiés, 3,83389 s, 65,6 MB/s
  root@debG53SW:~# 

Et je vais faire prendre en compte ce changement par le noyau

Je recherche, avant de le déconnecter, le &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;nom d'hôte SCSI&lt;/span&gt; de ce disque :
  root@debG53SW:~# readlink /sys/block/sdf
  ../devices/pci0000:00/0000:00:1c.3/0000:04:00.0/usb4/4-1/4-1.4/4-1.4:1.0/host9/target9:0:0/9:0:0:0/block/sdf
  root@debG53SW:~# 

Ok, c'est &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;host9&lt;/span&gt;

Je déconnecte logiciellement le disque &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;sdf&lt;/span&gt; :
  root@debG53SW:~# echo 1 &gt; /sys/block/sdf/device/delete
  root@debG53SW:~# 

et je demande au &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;contrôleur SCSI&lt;/span&gt; de détecter et re-connecter le disque :
  root@debG53SW:~# echo &quot;- - -&quot; &gt; /sys/class/scsi_host/host9/scan
  root@debG53SW:~# 


je vérifie que les messages du noyau confirment la détection :
  root@debG53SW:~# dmesg -T | tail
  [sam. sept. 27 01:53:42 2014] sd 9:0:0:0: [sdf] Attached SCSI disk
  [sam. sept. 27 01:58:11 2014] sd 9:0:0:0: [sdf] Synchronizing SCSI cache
  [sam. sept. 27 02:00:53 2014] scsi 9:0:0:0: Direct-Access     ASMT     2105             0    PQ: 0 ANSI: 6
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: Attached scsi generic sg6 type 0
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] 125045424 512-byte logical blocks: (64.0 GB/59.6 GiB)
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] Write Protect is off
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] Mode Sense: 43 00 00 00
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
  [sam. sept. 27 02:00:53 2014]  sdf: sdf1
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] Attached SCSI disk 
  root@debG53SW:~# 
Je peux voir, dans les messages du noyau :

  - la synchronisation du cache du contrôleur, suite à la déconnexion du disque à &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;&quot;&gt;01:58:11&lt;/span&gt; (suite à l'envoi de la commande &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;echo 1 &gt; /sys/block/sdf/device/delete&lt;/span&gt;)

  - les messages correspondants à la détection par le contrôleur     du disque à &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier; font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;&quot;&gt;02:00:53&lt;/span&gt; (suite à l'envoi de la commande &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;echo &quot;- - -&quot; &gt; /sys/class/scsi_host/host9/scan&lt;/span&gt;)


Mon disque est maintenant dans son état initial d'avant la copie du fichier image ISO,&lt;br /&gt;
avec toutes ses partitions originales et ses fichiers bien en place.

     Il peut donc reprendre une activité normale.
 </text>
      <sha1>ml0bemci0y1vnema643sh52nhgc9gz2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5847</id>
      <parentid>5846</parentid>
      <timestamp>2014-10-03T15:52:28Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* La remise à l'état d'origine du disque dur */ formatage</comment>
      <text xml:space="preserve" bytes="28001">
== Introduction ==
Les performances en vitesse écriture-lecture des clef USB sont si désespérément lentes,&lt;br /&gt;
qu'on en oublie parfois qu'on avait lancé une copie d'image ISO sur une clef USB.&lt;br /&gt;
Et je ne parle même pas du temps passé à la gravure d'un CD ou DVD…

En utilisant un disque dur USB à la place d'une clef USB ou d'un CD-ROM, c'est au moins '''100 fois plus vite fait''',&lt;br /&gt;
et on peut y gagner une bonne demi-journée d'attente quand il s'agit d'une image ISO Live de plus d'un Gio.

Ici, j'utilise un disque dur SSD d'occasion de 64Gio, (qui a été lâchement abandonné par son propriétaire sous prétexte qu'il avait été malade, et qu'il était trop maigre et trop vieux ;-) )&lt;br /&gt;
ce qui améliore d'autant plus les performances en vitesse écriture-lecture.


Mais je n'ai pas envie de devoir sauvegarder tous les fichiers qui y sont stokés,&lt;br /&gt;
pour ensuite, une fois que je n'ai plus besoin de cette Clef-disque USB,&lt;br /&gt;
devoir recréer chaque partition et remettre en place tous les fichiers sauvegardés.

D'autant que finalement, je n'ai besoin que de 2 ou 3 Gio maximum (si j'utilisai une image ISO autre qu'une image ISO debian netinstall de 250Mio maxi).

La solution que je propose ici consiste à '''ne sauvegarder que l'espace disque qui va être écrasé par la copie de l'image ISO'''.
== La sauvegarde ==
je commence par sauvegarder dans un fichier une copie de l'espace disque original&lt;br /&gt;
avant qu'il ne soit écrasé par la copie de l'image ISO sur ce disque.


Avant de connecter le disque USB que je vais utiliser comme clef USB,&lt;br /&gt;
Je visualise les messages du noyau concernant les périphériques de type 
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;block&lt;/span&gt;
qu'il a reconnu comme tel :
  root@debG53SW:~# dmesg -T |grep blocks
  [sam. sept. 27 01:08:53 2014] ACPI: Executed 1 blocks of module-level executable AML code
  [sam. sept. 27 01:08:54 2014] sd 0:0:0:0: [sda] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:08:54 2014] sd 1:0:0:0: [sdb] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:08:57 2014] sd 8:0:0:0: [sdd] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:08:57 2014] sd 7:0:0:0: [sde] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  root@debG53SW:~# 

Ensuite, je connecte physiquement le disque USB qui va me servir de clef USB.

Une fois le disque connecté physiquement, je relance la même ligne de commande afin de trouver le 
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;&quot;&gt;nom du nœud&lt;/span&gt;
(point de 
&lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''mount'''&lt;/span&gt;age) dans 
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;/dev&lt;/span&gt; :
  root@debG53SW:~# dmesg -T |grep blocks
  [sam. sept. 27 01:08:53 2014] ACPI: Executed 1 blocks of module-level executable AML code
  [sam. sept. 27 01:08:54 2014] sd 0:0:0:0: [sda] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:08:54 2014] sd 1:0:0:0: [sdb] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:08:57 2014] sd 8:0:0:0: [sdd] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:08:57 2014] sd 7:0:0:0: [sde] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:13:46 2014] sd 9:0:0:0: [sdf] 125045424 512-byte logical blocks: (64.0 GB/59.6 GiB)
  root@debG53SW:~# 
je constate que le nœud, associé à ce disque dans le répertoire
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;/dev&lt;/span&gt;,
est
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;sdf&lt;/span&gt;.

Je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monIso=&quot;/home/michel/Téléchargements/firmware-7.6.0-amd64-netinst.iso&quot;
  root@debG53SW:~# nbBlckIso=$((($(stat -c %s ${monIso})/$taillBlck)+1))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 


À ce stade, soyez
&lt;u&gt;'''sûr et certain'''&lt;/u&gt;
de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;&quot;&gt;sdf&lt;/span&gt;
) associé au disque USB,

    
&lt;span style=&quot;background-color:red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;white-space: nowrap; margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: red; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;&quot;&lt;/span&gt;
au lieu de
&lt;span style=&quot;white-space: nowrap; margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt;

  
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;


Au cas où une des partitions de ce disque
ait été &lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''auto-mount'''&lt;/span&gt;ée,
je dé-&lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''mount'''&lt;/span&gt;e
tous les systèmes de fichiers de ce disque :
  root@debG53SW:~# umount ${maCible}*
  umount : /dev/sdf : n'est pas monté
  umount : /dev/sdf1 : n'est pas monté
  root@debG53SW:~# 

je récupère (sauvegarde) une copie de l'espace disque qui sera écrasé par la copie du fichier image ISO sur le disque :
  root@debG53SW:~# dd bs=$taillBlck count=$nbBlckIso if=${maCible} of=${monSauv} &amp;&amp; sync
  60+0 enregistrements lus
  60+0 enregistrements écrits
  251658240 octets (252 MB) copiés, 2,42913 s, 104 MB/s
  root@debG53SW:~# 
(Plus tard, quand je voudrai remettre mon disque USB
(&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt;)
dans son état original, je n'aurai plus qu'à recopier le fichier
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${monSauv}&lt;/span&gt;
sur le disque.)

Je copie le fichier image ISO
(&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${monIso}&lt;/span&gt;)
sur mon disque USB
(&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt;) :
  root@debG53SW:~# dd bs=$taillBlck if=${monIso} of=${maCible} &amp;&amp; sync
  59+0 enregistrements lus
  59+0 enregistrements écrits
  247463936 octets (247 MB) copiés, 3,7607 s, 65,8 MB/s
  root@debG53SW:~# 

Mon disque est maintenant '''prêt à être utilisé comme une clef USB''' pour l'installation de debian.


Je débranche le disque USB que je viens de préparer avec ma machine, pour le connecter à la machine sur laquelle je veux installer debian,&lt;br /&gt;
et je vais la démarrer en la faisant booter sur ce disque USB.

== L'installation de debian ==

Au cours de l'installation de debian, le programme se rendra compte qu'il ne s'agit pas d'une Clef USB ou d'un lecteur de CD-ROM,

car il ne s'agit pas d'un
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; font-family: monospace, Courier; font: x-small sans-serif; font-size: 1em; border: 1px solid rgb(221, 221, 221); background-color: #66CCFF;&quot;&gt;
périphérique amovible
&lt;/span&gt;.

Mais il va nous proposer d'entrer le nom du fichier de périphérique correspondant au disque-Clef USB :

&lt;span style=&quot;white-space: nowrap; font-family: monospace, Courier;&quot;&gt;
 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐
 │                                                                                             │
 │  Aucun lecteur de CD-ROM usuel n'a été détecté.                                             │
 │                                                                                             │
 │  Il peut-être nécessaire de charger des pilotes additionnels de lecteurs de CD-ROM depuis   │
 │  un support amovible, par exemple une disquette de pilotes. Si vous avez un tel support     │
 │  placez-le dans le lecteur, puis continuez. Dans le cas contraire, vous aurez la            │
 │  possibilité de choisir vous-même les modules des pilotes de lecteurs de CD-ROM.            │
 │                                                                                             │
 │  Faut-il charger les pilotes de lecteurs de CD-ROM depuis un support amovible ?             │
 │                                                                                             │
 │      &lt;Oui&gt;                                                                        &lt;span style=&quot;background-color: red; color: white;&quot;&gt;&lt;Non&gt;&lt;/span&gt;     │
 └─────────────────────────────────────────────────────────────────────────────────────────────┘

 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐
 │                                                                                             │
 │  Aucun lecteur de CD-ROM usuel n'a été détecté.                                             │
 │                                                                                             │
 │  Le lecteur de CD-ROM est peut-être un ancien modèle Mitsumi ou un lecteur qui n'est ni     │
 │  un IDE, ni un SCSI. Si vous êtes dans cette situation, vous pouvez indiquer quel module    │
 │  devra être chargé et quel périphérique sera utilisé. Si vous ne connaissez pas le module   │
 │  et le pilote dont vous avez besoin, veuillez consulter la documentation ou essayez de      │
 │  procéder à une installation via le réseau au lieu d'une installation avec un CD.           │
 │                                                                                             │
 │  Voulez-vous choisir le module et le périphérique du lecteur de CD-ROM ?                    │
 │                                                                                             │
 │      &lt;span style=&quot;background-color: red; color: white;&quot;&gt;&lt;Oui&gt;&lt;/span&gt;                                                                        &lt;Non&gt;     │
 └─────────────────────────────────────────────────────────────────────────────────────────────┘

 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐
 │                                                                                             │
 │  La détection automatique n'a pas trouvé de lecteur de CD-ROM. Vous pouvez essayer de       │
 │  charger un module particulier si vous possedez un lecteur de CD-ROM spécifique (qui n'est  │
 │  ni IDE ni SCSI).                                                                           │
 │                                                                                             │
 │  Module pour le lecteur de CD-ROM :                                                         │
 │                                                                                             │
 │                                           &lt;span style=&quot;background-color: red; color: white;&quot;&gt;none&lt;/span&gt;                                              │
 │                                           cdrom                                             │
 │                                                                                             │
 └─────────────────────────────────────────────────────────────────────────────────────────────┘­

 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐ 
 │                                                                                             │ 
 │  Afin de pouvoir accéder au lecteur de CD-ROM, veuillez indiquer le fichier de              │ 
 │  périphérique utilisé. En effet, les lecteurs non standrads utilisent des fichiers de       │ 
 │  périphérique non standrad tels que /dev/mcdx par exemple.                                  │ 
 │                                                                                             │ 
 │  Vous pouvez obtenir un interpréteur de commandes sur le deuxième terminal (ALT+F2) pour    │ 
 │  voir les périphériques disponibles dans /dev en tapant « ls /dev ». Vous pourrez revenir   │ 
 │  à cet écran par ALT+F1.                                                                    │ 
 │                                                                                             │ 
 │  Fichier de périphérique pour le lecteur de CD-ROM :                                        │ 
 │                                                                                             │ 
 │  &lt;span style=&quot;background-color: red; color: white;&quot;&gt;/dev/sdc_________________________________________________________________________________&lt;/span&gt;  │ 
 │                                                                                             │ 
 │                                         &lt;Continuer&gt;                                         │ 
 └─────────────────────────────────────────────────────────────────────────────────────────────┘ 
&lt;/span&gt;
Ci-dessus, j'ai pu entrer le nom du fichier de périphérique correspondant au disque-Clef USB.


Pour connaître le nom du fichier de périphérique correspondant au disque-Clef USB,

j'ai ouvert une deuxième console avec
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); background-color: #33CC33; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;ALT+F2&lt;/span&gt;,
pour entrer la commande :
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); background-color: #33CC33; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;
ls -l /dev/disk/by-label
&lt;/span&gt;

ce qui m'a permis de retrouver la partition
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #66CCFF; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;
Debian 7.6.0 amd64 1 -&gt; ../../'''sdc'''1
&lt;/span&gt;

Le fichier de périphérique associé au disque-Clef USB est donc
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #66CCFF; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;
/dev/sdc
&lt;/span&gt;


Le programme d'installation a continué son travail normalement, et la machine a pu redémarrer avec son système debian.

== La remise à l'état d'origine du disque dur ==

Je vais maintenant remettre ce disque-Clef USB dans son état initial :

Avant de connecter le disque USB que je vais utiliser comme clef USB,&lt;br /&gt;
Je visualise les messages du noyau concernant les périphériques de type 
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;block&lt;/span&gt;
qu'il a reconnu comme tel :
  root@debG53SW:~# dmesg -T |grep blocks
  [sam. sept. 27 01:51:00 2014] ACPI: Executed 1 blocks of module-level executable AML code
  [sam. sept. 27 01:51:01 2014] sd 0:0:0:0: [sda] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:51:01 2014] sd 1:0:0:0: [sdb] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:51:04 2014] sd 7:0:0:0: [sdd] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:51:04 2014] sd 8:0:0:0: [sde] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  root@debG53SW:~# 

Ensuite, je connecte physiquement le disque USB qui va me servir de clef USB.

Une fois le disque connecté physiquement, je relance la même ligne de commande afin de trouver le 
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;&quot;&gt;nom du nœud&lt;/span&gt;
(point de 
&lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''mount'''&lt;/span&gt;age) dans 
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;/dev&lt;/span&gt; :
  root@debG53SW:~# dmesg -T |grep blocks
  [sam. sept. 27 01:51:00 2014] ACPI: Executed 1 blocks of module-level executable AML code
  [sam. sept. 27 01:51:01 2014] sd 0:0:0:0: [sda] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:51:01 2014] sd 1:0:0:0: [sdb] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:51:04 2014] sd 7:0:0:0: [sdd] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:51:04 2014] sd 8:0:0:0: [sde] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:53:41 2014] sd 9:0:0:0: [sdf] 125045424 512-byte logical blocks: (64.0 GB/59.6 GiB)
  root@debG53SW:~# 
je constate que le nœud, associé à ce disque dans le répertoire
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;/dev&lt;/span&gt;,
est
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;sdf&lt;/span&gt;.

Je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 


À ce stade, soyez
&lt;u&gt;'''sûr et certain'''&lt;/u&gt;
de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;&quot;&gt;sdf&lt;/span&gt;
) associé au disque USB,

    
&lt;span style=&quot;background-color:red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;white-space: nowrap; margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: red; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;&quot;&lt;/span&gt;
au lieu de
&lt;span style=&quot;white-space: nowrap; margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt;

  
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;


Au cas où une des partitions de ce disque
ait été &lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''auto-mount'''&lt;/span&gt;ée,
je dé-&lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''mount'''&lt;/span&gt;e
tous les systèmes de fichiers de ce disque :
  root@debG53SW:~# umount ${maCible}*
  umount : /dev/sdf : n'est pas monté
  umount : /dev/sdf1 : n'est pas monté
  umount : /dev/sdf2 : n'est pas monté
  root@debG53SW:~# 

Je lance la recopie sur le disque du fichier
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); background-color: #33CC33; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${monSauv}&lt;/span&gt;
qui avait été sauvegardé :
  root@debG53SW:~# dd conv=notrunc bs=$taillBlck if=${monSauv} of=${maCible} &amp;&amp; sync
  60+0 enregistrements lus
  60+0 enregistrements écrits
  251658240 octets (252 MB) copiés, 3,83389 s, 65,6 MB/s
  root@debG53SW:~# 

Et je vais faire prendre en compte ce changement par le noyau

Je recherche, avant de le déconnecter, le
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace, Courier; font: x-small sans-serif; font-size: 1em;border: 1px solid rgb(221, 221, 221);&quot;&gt;nom d'hôte SCSI&lt;/span&gt;
de ce disque :
  root@debG53SW:~# readlink /sys/block/sdf
  ../devices/pci0000:00/0000:00:1c.3/0000:04:00.0/usb4/4-1/4-1.4/4-1.4:1.0/host9/target9:0:0/9:0:0:0/block/sdf
  root@debG53SW:~# 

Ok, c'est
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); background-color: #33CC33; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;host9&lt;/span&gt;

Je déconnecte logiciellement le disque
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace, Courier; font: x-small sans-serif; font-size: 1em; border: 1px solid rgb(221, 221, 221); background-color: #66CCFF;&quot;&gt;sdf&lt;/span&gt; :
  root@debG53SW:~# echo 1 &gt; /sys/block/sdf/device/delete
  root@debG53SW:~# 

et je demande au
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace, Courier; font: x-small sans-serif; font-size: 1em; border: 1px solid rgb(221, 221, 221); background-color: #66CCFF;&quot;&gt;contrôleur SCSI&lt;/span&gt;
de détecter et re-connecter le disque :
  root@debG53SW:~# echo &quot;- - -&quot; &gt; /sys/class/scsi_host/host9/scan
  root@debG53SW:~# 


je vérifie que les messages du noyau confirment la détection :
  root@debG53SW:~# dmesg -T | tail
  [sam. sept. 27 01:53:42 2014] sd 9:0:0:0: [sdf] Attached SCSI disk
  [sam. sept. 27 01:58:11 2014] sd 9:0:0:0: [sdf] Synchronizing SCSI cache
  [sam. sept. 27 02:00:53 2014] scsi 9:0:0:0: Direct-Access     ASMT     2105             0    PQ: 0 ANSI: 6
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: Attached scsi generic sg6 type 0
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] 125045424 512-byte logical blocks: (64.0 GB/59.6 GiB)
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] Write Protect is off
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] Mode Sense: 43 00 00 00
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
  [sam. sept. 27 02:00:53 2014]  sdf: sdf1
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] Attached SCSI disk 
  root@debG53SW:~# 
Je peux voir, dans les messages du noyau :

  - la synchronisation du cache du contrôleur, suite à la déconnexion du disque à
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace, Courier; font: x-small sans-serif; font-size: 1em; border: 1px solid rgb(221, 221, 221); background-color: #66CCFF;&quot;&gt;01:58:11&lt;/span&gt;
(
suite à l'envoi de la commande
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); background-color: #33CC33; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;
echo 1 &gt; /sys/block/sdf/device/delete
&lt;/span&gt;
)

  - les messages correspondants à la détection par le contrôleur     du disque à
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace, Courier; font: x-small sans-serif; font-size: 1em; border: 1px solid rgb(221, 221, 221); background-color: #66CCFF;&quot;&gt;02:00:53&lt;/span&gt;
(
suite à l'envoi de la commande
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); background-color: #33CC33; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;
echo &quot;- - -&quot; &gt; /sys/class/scsi_host/host9/scan
&lt;/span&gt;
)


Mon disque est maintenant dans son état initial d'avant la copie du fichier image ISO,&lt;br /&gt;
avec toutes ses partitions originales et ses fichiers bien en place.

     Il peut donc reprendre une activité normale.
 </text>
      <sha1>c4660y7al6jlq0x09b0dp6piiyowe4h</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5848</id>
      <parentid>5847</parentid>
      <timestamp>2014-10-03T15:55:24Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Introduction */</comment>
      <text xml:space="preserve" bytes="27850">
== Introduction ==
Les performances en vitesse écriture-lecture des clef USB sont si désespérément lentes,&lt;br /&gt;
qu'on en oublie parfois qu'on avait lancé une copie d'image ISO sur une clef USB.&lt;br /&gt;
Et je ne parle même pas du temps passé à la gravure d'un CD ou DVD…

En utilisant un disque dur USB à la place d'une clef USB ou d'un CD-ROM, c'est au moins '''100 fois plus vite fait''',&lt;br /&gt;
et on peut y gagner une bonne demi-journée d'attente quand il s'agit d'une image ISO Live de plus d'un Gio.

Ici, j'utilise un disque dur SSD d'occasion de 64Gio, ce qui améliore d'autant plus les performances en vitesse écriture-lecture.


Mais je n'ai pas envie de devoir sauvegarder tous les fichiers qui y sont stokés,&lt;br /&gt;
pour ensuite, une fois que je n'ai plus besoin de cette Clef-disque USB,&lt;br /&gt;
devoir recréer chaque partition et remettre en place tous les fichiers sauvegardés.

D'autant que finalement, je n'ai besoin que de 2 ou 3 Gio maximum (si j'utilisai une image ISO autre qu'une image ISO debian netinstall de 250Mio maxi).

La solution que je propose ici consiste à '''ne sauvegarder que l'espace disque qui va être écrasé par la copie de l'image ISO'''.

== La sauvegarde ==
je commence par sauvegarder dans un fichier une copie de l'espace disque original&lt;br /&gt;
avant qu'il ne soit écrasé par la copie de l'image ISO sur ce disque.


Avant de connecter le disque USB que je vais utiliser comme clef USB,&lt;br /&gt;
Je visualise les messages du noyau concernant les périphériques de type 
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;block&lt;/span&gt;
qu'il a reconnu comme tel :
  root@debG53SW:~# dmesg -T |grep blocks
  [sam. sept. 27 01:08:53 2014] ACPI: Executed 1 blocks of module-level executable AML code
  [sam. sept. 27 01:08:54 2014] sd 0:0:0:0: [sda] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:08:54 2014] sd 1:0:0:0: [sdb] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:08:57 2014] sd 8:0:0:0: [sdd] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:08:57 2014] sd 7:0:0:0: [sde] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  root@debG53SW:~# 

Ensuite, je connecte physiquement le disque USB qui va me servir de clef USB.

Une fois le disque connecté physiquement, je relance la même ligne de commande afin de trouver le 
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;&quot;&gt;nom du nœud&lt;/span&gt;
(point de 
&lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''mount'''&lt;/span&gt;age) dans 
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;/dev&lt;/span&gt; :
  root@debG53SW:~# dmesg -T |grep blocks
  [sam. sept. 27 01:08:53 2014] ACPI: Executed 1 blocks of module-level executable AML code
  [sam. sept. 27 01:08:54 2014] sd 0:0:0:0: [sda] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:08:54 2014] sd 1:0:0:0: [sdb] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:08:57 2014] sd 8:0:0:0: [sdd] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:08:57 2014] sd 7:0:0:0: [sde] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:13:46 2014] sd 9:0:0:0: [sdf] 125045424 512-byte logical blocks: (64.0 GB/59.6 GiB)
  root@debG53SW:~# 
je constate que le nœud, associé à ce disque dans le répertoire
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;/dev&lt;/span&gt;,
est
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;sdf&lt;/span&gt;.

Je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monIso=&quot;/home/michel/Téléchargements/firmware-7.6.0-amd64-netinst.iso&quot;
  root@debG53SW:~# nbBlckIso=$((($(stat -c %s ${monIso})/$taillBlck)+1))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 


À ce stade, soyez
&lt;u&gt;'''sûr et certain'''&lt;/u&gt;
de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;&quot;&gt;sdf&lt;/span&gt;
) associé au disque USB,

    
&lt;span style=&quot;background-color:red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;white-space: nowrap; margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: red; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;&quot;&lt;/span&gt;
au lieu de
&lt;span style=&quot;white-space: nowrap; margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt;

  
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;


Au cas où une des partitions de ce disque
ait été &lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''auto-mount'''&lt;/span&gt;ée,
je dé-&lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''mount'''&lt;/span&gt;e
tous les systèmes de fichiers de ce disque :
  root@debG53SW:~# umount ${maCible}*
  umount : /dev/sdf : n'est pas monté
  umount : /dev/sdf1 : n'est pas monté
  root@debG53SW:~# 

je récupère (sauvegarde) une copie de l'espace disque qui sera écrasé par la copie du fichier image ISO sur le disque :
  root@debG53SW:~# dd bs=$taillBlck count=$nbBlckIso if=${maCible} of=${monSauv} &amp;&amp; sync
  60+0 enregistrements lus
  60+0 enregistrements écrits
  251658240 octets (252 MB) copiés, 2,42913 s, 104 MB/s
  root@debG53SW:~# 
(Plus tard, quand je voudrai remettre mon disque USB
(&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt;)
dans son état original, je n'aurai plus qu'à recopier le fichier
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${monSauv}&lt;/span&gt;
sur le disque.)

Je copie le fichier image ISO
(&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${monIso}&lt;/span&gt;)
sur mon disque USB
(&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt;) :
  root@debG53SW:~# dd bs=$taillBlck if=${monIso} of=${maCible} &amp;&amp; sync
  59+0 enregistrements lus
  59+0 enregistrements écrits
  247463936 octets (247 MB) copiés, 3,7607 s, 65,8 MB/s
  root@debG53SW:~# 

Mon disque est maintenant '''prêt à être utilisé comme une clef USB''' pour l'installation de debian.


Je débranche le disque USB que je viens de préparer avec ma machine, pour le connecter à la machine sur laquelle je veux installer debian,&lt;br /&gt;
et je vais la démarrer en la faisant booter sur ce disque USB.

== L'installation de debian ==

Au cours de l'installation de debian, le programme se rendra compte qu'il ne s'agit pas d'une Clef USB ou d'un lecteur de CD-ROM,

car il ne s'agit pas d'un
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; font-family: monospace, Courier; font: x-small sans-serif; font-size: 1em; border: 1px solid rgb(221, 221, 221); background-color: #66CCFF;&quot;&gt;
périphérique amovible
&lt;/span&gt;.

Mais il va nous proposer d'entrer le nom du fichier de périphérique correspondant au disque-Clef USB :

&lt;span style=&quot;white-space: nowrap; font-family: monospace, Courier;&quot;&gt;
 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐
 │                                                                                             │
 │  Aucun lecteur de CD-ROM usuel n'a été détecté.                                             │
 │                                                                                             │
 │  Il peut-être nécessaire de charger des pilotes additionnels de lecteurs de CD-ROM depuis   │
 │  un support amovible, par exemple une disquette de pilotes. Si vous avez un tel support     │
 │  placez-le dans le lecteur, puis continuez. Dans le cas contraire, vous aurez la            │
 │  possibilité de choisir vous-même les modules des pilotes de lecteurs de CD-ROM.            │
 │                                                                                             │
 │  Faut-il charger les pilotes de lecteurs de CD-ROM depuis un support amovible ?             │
 │                                                                                             │
 │      &lt;Oui&gt;                                                                        &lt;span style=&quot;background-color: red; color: white;&quot;&gt;&lt;Non&gt;&lt;/span&gt;     │
 └─────────────────────────────────────────────────────────────────────────────────────────────┘

 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐
 │                                                                                             │
 │  Aucun lecteur de CD-ROM usuel n'a été détecté.                                             │
 │                                                                                             │
 │  Le lecteur de CD-ROM est peut-être un ancien modèle Mitsumi ou un lecteur qui n'est ni     │
 │  un IDE, ni un SCSI. Si vous êtes dans cette situation, vous pouvez indiquer quel module    │
 │  devra être chargé et quel périphérique sera utilisé. Si vous ne connaissez pas le module   │
 │  et le pilote dont vous avez besoin, veuillez consulter la documentation ou essayez de      │
 │  procéder à une installation via le réseau au lieu d'une installation avec un CD.           │
 │                                                                                             │
 │  Voulez-vous choisir le module et le périphérique du lecteur de CD-ROM ?                    │
 │                                                                                             │
 │      &lt;span style=&quot;background-color: red; color: white;&quot;&gt;&lt;Oui&gt;&lt;/span&gt;                                                                        &lt;Non&gt;     │
 └─────────────────────────────────────────────────────────────────────────────────────────────┘

 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐
 │                                                                                             │
 │  La détection automatique n'a pas trouvé de lecteur de CD-ROM. Vous pouvez essayer de       │
 │  charger un module particulier si vous possedez un lecteur de CD-ROM spécifique (qui n'est  │
 │  ni IDE ni SCSI).                                                                           │
 │                                                                                             │
 │  Module pour le lecteur de CD-ROM :                                                         │
 │                                                                                             │
 │                                           &lt;span style=&quot;background-color: red; color: white;&quot;&gt;none&lt;/span&gt;                                              │
 │                                           cdrom                                             │
 │                                                                                             │
 └─────────────────────────────────────────────────────────────────────────────────────────────┘­

 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐ 
 │                                                                                             │ 
 │  Afin de pouvoir accéder au lecteur de CD-ROM, veuillez indiquer le fichier de              │ 
 │  périphérique utilisé. En effet, les lecteurs non standrads utilisent des fichiers de       │ 
 │  périphérique non standrad tels que /dev/mcdx par exemple.                                  │ 
 │                                                                                             │ 
 │  Vous pouvez obtenir un interpréteur de commandes sur le deuxième terminal (ALT+F2) pour    │ 
 │  voir les périphériques disponibles dans /dev en tapant « ls /dev ». Vous pourrez revenir   │ 
 │  à cet écran par ALT+F1.                                                                    │ 
 │                                                                                             │ 
 │  Fichier de périphérique pour le lecteur de CD-ROM :                                        │ 
 │                                                                                             │ 
 │  &lt;span style=&quot;background-color: red; color: white;&quot;&gt;/dev/sdc_________________________________________________________________________________&lt;/span&gt;  │ 
 │                                                                                             │ 
 │                                         &lt;Continuer&gt;                                         │ 
 └─────────────────────────────────────────────────────────────────────────────────────────────┘ 
&lt;/span&gt;
Ci-dessus, j'ai pu entrer le nom du fichier de périphérique correspondant au disque-Clef USB.


Pour connaître le nom du fichier de périphérique correspondant au disque-Clef USB,

j'ai ouvert une deuxième console avec
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); background-color: #33CC33; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;ALT+F2&lt;/span&gt;,
pour entrer la commande :
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); background-color: #33CC33; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;
ls -l /dev/disk/by-label
&lt;/span&gt;

ce qui m'a permis de retrouver la partition
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #66CCFF; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;
Debian 7.6.0 amd64 1 -&gt; ../../'''sdc'''1
&lt;/span&gt;

Le fichier de périphérique associé au disque-Clef USB est donc
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #66CCFF; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;
/dev/sdc
&lt;/span&gt;


Le programme d'installation a continué son travail normalement, et la machine a pu redémarrer avec son système debian.

== La remise à l'état d'origine du disque dur ==

Je vais maintenant remettre ce disque-Clef USB dans son état initial :

Avant de connecter le disque USB que je vais utiliser comme clef USB,&lt;br /&gt;
Je visualise les messages du noyau concernant les périphériques de type 
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;block&lt;/span&gt;
qu'il a reconnu comme tel :
  root@debG53SW:~# dmesg -T |grep blocks
  [sam. sept. 27 01:51:00 2014] ACPI: Executed 1 blocks of module-level executable AML code
  [sam. sept. 27 01:51:01 2014] sd 0:0:0:0: [sda] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:51:01 2014] sd 1:0:0:0: [sdb] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:51:04 2014] sd 7:0:0:0: [sdd] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:51:04 2014] sd 8:0:0:0: [sde] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  root@debG53SW:~# 

Ensuite, je connecte physiquement le disque USB qui va me servir de clef USB.

Une fois le disque connecté physiquement, je relance la même ligne de commande afin de trouver le 
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;&quot;&gt;nom du nœud&lt;/span&gt;
(point de 
&lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''mount'''&lt;/span&gt;age) dans 
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;/dev&lt;/span&gt; :
  root@debG53SW:~# dmesg -T |grep blocks
  [sam. sept. 27 01:51:00 2014] ACPI: Executed 1 blocks of module-level executable AML code
  [sam. sept. 27 01:51:01 2014] sd 0:0:0:0: [sda] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:51:01 2014] sd 1:0:0:0: [sdb] 250069680 512-byte logical blocks: (128 GB/119 GiB)
  [sam. sept. 27 01:51:04 2014] sd 7:0:0:0: [sdd] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:51:04 2014] sd 8:0:0:0: [sde] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
  [sam. sept. 27 01:53:41 2014] sd 9:0:0:0: [sdf] 125045424 512-byte logical blocks: (64.0 GB/59.6 GiB)
  root@debG53SW:~# 
je constate que le nœud, associé à ce disque dans le répertoire
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;/dev&lt;/span&gt;,
est
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;font-family:fixed;&quot;&gt;sdf&lt;/span&gt;.

Je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 


À ce stade, soyez
&lt;u&gt;'''sûr et certain'''&lt;/u&gt;
de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;&quot;&gt;sdf&lt;/span&gt;
) associé au disque USB,

    
&lt;span style=&quot;background-color:red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;white-space: nowrap; margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: red; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;&quot;&lt;/span&gt;
au lieu de
&lt;span style=&quot;white-space: nowrap; margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt;

  
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;


Au cas où une des partitions de ce disque
ait été &lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''auto-mount'''&lt;/span&gt;ée,
je dé-&lt;span style=&quot;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #FFFF66;&quot;&gt;'''mount'''&lt;/span&gt;e
tous les systèmes de fichiers de ce disque :
  root@debG53SW:~# umount ${maCible}*
  umount : /dev/sdf : n'est pas monté
  umount : /dev/sdf1 : n'est pas monté
  umount : /dev/sdf2 : n'est pas monté
  root@debG53SW:~# 

Je lance la recopie sur le disque du fichier
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); background-color: #33CC33; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${monSauv}&lt;/span&gt;
qui avait été sauvegardé :
  root@debG53SW:~# dd conv=notrunc bs=$taillBlck if=${monSauv} of=${maCible} &amp;&amp; sync
  60+0 enregistrements lus
  60+0 enregistrements écrits
  251658240 octets (252 MB) copiés, 3,83389 s, 65,6 MB/s
  root@debG53SW:~# 

Et je vais faire prendre en compte ce changement par le noyau

Je recherche, avant de le déconnecter, le
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace, Courier; font: x-small sans-serif; font-size: 1em;border: 1px solid rgb(221, 221, 221);&quot;&gt;nom d'hôte SCSI&lt;/span&gt;
de ce disque :
  root@debG53SW:~# readlink /sys/block/sdf
  ../devices/pci0000:00/0000:00:1c.3/0000:04:00.0/usb4/4-1/4-1.4/4-1.4:1.0/host9/target9:0:0/9:0:0:0/block/sdf
  root@debG53SW:~# 

Ok, c'est
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); background-color: #33CC33; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;host9&lt;/span&gt;

Je déconnecte logiciellement le disque
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace, Courier; font: x-small sans-serif; font-size: 1em; border: 1px solid rgb(221, 221, 221); background-color: #66CCFF;&quot;&gt;sdf&lt;/span&gt; :
  root@debG53SW:~# echo 1 &gt; /sys/block/sdf/device/delete
  root@debG53SW:~# 

et je demande au
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace, Courier; font: x-small sans-serif; font-size: 1em; border: 1px solid rgb(221, 221, 221); background-color: #66CCFF;&quot;&gt;contrôleur SCSI&lt;/span&gt;
de détecter et re-connecter le disque :
  root@debG53SW:~# echo &quot;- - -&quot; &gt; /sys/class/scsi_host/host9/scan
  root@debG53SW:~# 


je vérifie que les messages du noyau confirment la détection :
  root@debG53SW:~# dmesg -T | tail
  [sam. sept. 27 01:53:42 2014] sd 9:0:0:0: [sdf] Attached SCSI disk
  [sam. sept. 27 01:58:11 2014] sd 9:0:0:0: [sdf] Synchronizing SCSI cache
  [sam. sept. 27 02:00:53 2014] scsi 9:0:0:0: Direct-Access     ASMT     2105             0    PQ: 0 ANSI: 6
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: Attached scsi generic sg6 type 0
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] 125045424 512-byte logical blocks: (64.0 GB/59.6 GiB)
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] Write Protect is off
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] Mode Sense: 43 00 00 00
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
  [sam. sept. 27 02:00:53 2014]  sdf: sdf1
  [sam. sept. 27 02:00:53 2014] sd 9:0:0:0: [sdf] Attached SCSI disk 
  root@debG53SW:~# 
Je peux voir, dans les messages du noyau :

  - la synchronisation du cache du contrôleur, suite à la déconnexion du disque à
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace, Courier; font: x-small sans-serif; font-size: 1em; border: 1px solid rgb(221, 221, 221); background-color: #66CCFF;&quot;&gt;01:58:11&lt;/span&gt;
(
suite à l'envoi de la commande
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); background-color: #33CC33; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;
echo 1 &gt; /sys/block/sdf/device/delete
&lt;/span&gt;
)

  - les messages correspondants à la détection par le contrôleur     du disque à
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace, Courier; font: x-small sans-serif; font-size: 1em; border: 1px solid rgb(221, 221, 221); background-color: #66CCFF;&quot;&gt;02:00:53&lt;/span&gt;
(
suite à l'envoi de la commande
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); background-color: #33CC33; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;
echo &quot;- - -&quot; &gt; /sys/class/scsi_host/host9/scan
&lt;/span&gt;
)


Mon disque est maintenant dans son état initial d'avant la copie du fichier image ISO,&lt;br /&gt;
avec toutes ses partitions originales et ses fichiers bien en place.

     Il peut donc reprendre une activité normale.
 </text>
      <sha1>2j86wtq0796rh3zjt8nk5432wh4k4in</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5849</id>
      <parentid>5848</parentid>
      <timestamp>2014-10-04T08:27:15Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>plus court</comment>
      <text xml:space="preserve" bytes="9637">
== Introduction ==
Les performances en vitesse écriture-lecture des clef USB sont si désespérément lentes,&lt;br /&gt;
qu'on en oublie parfois qu'on avait lancé une copie d'image ISO sur une clef USB.&lt;br /&gt;
Et je ne parle même pas du temps passé à la gravure d'un CD ou DVD…

En utilisant un disque dur USB à la place d'une clef USB ou d'un CD-ROM, c'est au moins '''100 fois plus vite fait''',&lt;br /&gt;
et on peut y gagner une bonne demi-journée d'attente quand il s'agit d'une image ISO Live de plus d'un Gio.

Ici, j'utilise un disque dur SSD d'occasion de 64Gio, ce qui améliore d'autant plus les performances en vitesse écriture-lecture.


Mais je n'ai pas envie de devoir sauvegarder tous les fichiers qui y sont stokés,&lt;br /&gt;
pour ensuite, une fois que je n'ai plus besoin de cette Clef-disque USB,&lt;br /&gt;
devoir recréer chaque partition et remettre en place tous les fichiers sauvegardés.

D'autant que finalement, je n'ai besoin que de 2 ou 3 Gio maximum (si j'utilisai une image ISO autre qu'une image ISO debian netinstall de 250Mio maxi).

La solution que je propose ici consiste à '''ne sauvegarder que l'espace disque qui va être écrasé par la copie de l'image ISO'''.

== La sauvegarde ==
Je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monIso=&quot;/home/michel/Téléchargements/firmware-7.6.0-amd64-netinst.iso&quot;
  root@debG53SW:~# nbBlckIso=$((($(stat -c %s ${monIso})/$taillBlck)+1))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 

je récupère (sauvegarde) une copie de l'espace disque qui sera écrasé par la copie du fichier image ISO sur le disque :
  root@debG53SW:~# dd bs=$taillBlck count=$nbBlckIso if=${maCible} of=${monSauv} &amp;&amp; sync
  60+0 enregistrements lus
  60+0 enregistrements écrits
  251658240 octets (252 MB) copiés, 2,42913 s, 104 MB/s
  root@debG53SW:~# 



À ce stade, soyez
&lt;u&gt;'''sûr et certain'''&lt;/u&gt;
de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;&quot;&gt;sdf&lt;/span&gt;
) associé au disque USB,

    
&lt;span style=&quot;background-color:red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;white-space: nowrap; margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: red; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;&quot;&lt;/span&gt;
au lieu de
&lt;span style=&quot;white-space: nowrap; margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt;

  
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;


Je copie le fichier image ISO
(&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${monIso}&lt;/span&gt;)
sur mon disque USB
(&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt;) :
  root@debG53SW:~# dd bs=$taillBlck if=${monIso} of=${maCible} &amp;&amp; sync
  59+0 enregistrements lus
  59+0 enregistrements écrits
  247463936 octets (247 MB) copiés, 3,7607 s, 65,8 MB/s
  root@debG53SW:~# 


Mon disque est maintenant '''prêt à être utilisé comme une clef USB''' pour l'installation de debian.


Je débranche le disque USB que je viens de préparer avec ma machine, pour le connecter à la machine sur laquelle je veux installer debian,&lt;br /&gt;
et je vais la démarrer en la faisant booter sur ce disque USB.

== L'installation de debian ==

Au cours de l'installation de debian, le programme se rendra compte qu'il ne s'agit pas d'une Clef USB ou d'un lecteur de CD-ROM,

car il ne s'agit pas d'un
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; font-family: monospace, Courier; font: x-small sans-serif; font-size: 1em; border: 1px solid rgb(221, 221, 221); background-color: #66CCFF;&quot;&gt;
périphérique amovible
&lt;/span&gt;.

Mais il va nous proposer d'entrer le nom du fichier de périphérique correspondant au disque-Clef USB :&lt;br /&gt;
Pour connaître le nom du fichier de périphérique correspondant au disque-Clef USB,

j'ai ouvert une deuxième console avec
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); background-color: #33CC33; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;ALT+F2&lt;/span&gt;,
pour entrer la commande :
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); background-color: #33CC33; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;
ls -l /dev/disk/by-label
&lt;/span&gt;

ce qui m'a permis de retrouver la partition
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #66CCFF; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;
Debian 7.6.0 amd64 1 -&gt; ../../'''sdc'''1
&lt;/span&gt;

Le fichier de périphérique associé au disque-Clef USB est donc
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #66CCFF; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;
/dev/sdc
&lt;/span&gt;

&lt;span style=&quot;white-space: nowrap; font-family: monospace, Courier;&quot;&gt;

 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐ 
 │                                                                                             │ 
 │  Afin de pouvoir accéder au lecteur de CD-ROM, veuillez indiquer le fichier de              │ 
 │  périphérique utilisé. En effet, les lecteurs non standrads utilisent des fichiers de       │ 
 │  périphérique non standrad tels que /dev/mcdx par exemple.                                  │ 
 │                                                                                             │ 
 │  Vous pouvez obtenir un interpréteur de commandes sur le deuxième terminal (ALT+F2) pour    │ 
 │  voir les périphériques disponibles dans /dev en tapant « ls /dev ». Vous pourrez revenir   │ 
 │  à cet écran par ALT+F1.                                                                    │ 
 │                                                                                             │ 
 │  Fichier de périphérique pour le lecteur de CD-ROM :                                        │ 
 │                                                                                             │ 
 │  &lt;span style=&quot;background-color: red; color: white;&quot;&gt;/dev/sdc_________________________________________________________________________________&lt;/span&gt;  │ 
 │                                                                                             │ 
 │                                         &lt;Continuer&gt;                                         │ 
 └─────────────────────────────────────────────────────────────────────────────────────────────┘ 
&lt;/span&gt;
Le programme d'installation a continué son travail normalement, et la machine a pu redémarrer avec son système debian.

== La remise à l'état d'origine du disque dur ==

Je vais maintenant remettre ce disque-Clef USB dans son état initial :

Je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 

Je lance la recopie sur le disque du fichier ${monSauv} qui avait été sauvegardé :

 root@debG53SW:~# dd conv=notrunc bs=$taillBlck if=${monSauv} of=${maCible} &amp;&amp; sync
 60+0 enregistrements lus
 60+0 enregistrements écrits
 251658240 octets (252 MB) copiés, 3,83389 s, 65,6 MB/s
 root@debG53SW:~# 

Je déconnecte et reconnecte le cordon USB de mon disque.


Mon disque est maintenant dans son état initial d'avant la copie du fichier image ISO,&lt;br /&gt;
avec toutes ses partitions originales et ses fichiers bien en place.

     Il peut donc reprendre une activité normale.
 </text>
      <sha1>2gl5i337plrx4ur34vz3d2qjb0rjsml</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5850</id>
      <parentid>5849</parentid>
      <timestamp>2014-10-04T14:52:56Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* La remise à l'état d'origine du disque dur */ détails en +</comment>
      <text xml:space="preserve" bytes="9899">
== Introduction ==
Les performances en vitesse écriture-lecture des clef USB sont si désespérément lentes,&lt;br /&gt;
qu'on en oublie parfois qu'on avait lancé une copie d'image ISO sur une clef USB.&lt;br /&gt;
Et je ne parle même pas du temps passé à la gravure d'un CD ou DVD…

En utilisant un disque dur USB à la place d'une clef USB ou d'un CD-ROM, c'est au moins '''100 fois plus vite fait''',&lt;br /&gt;
et on peut y gagner une bonne demi-journée d'attente quand il s'agit d'une image ISO Live de plus d'un Gio.

Ici, j'utilise un disque dur SSD d'occasion de 64Gio, ce qui améliore d'autant plus les performances en vitesse écriture-lecture.


Mais je n'ai pas envie de devoir sauvegarder tous les fichiers qui y sont stokés,&lt;br /&gt;
pour ensuite, une fois que je n'ai plus besoin de cette Clef-disque USB,&lt;br /&gt;
devoir recréer chaque partition et remettre en place tous les fichiers sauvegardés.

D'autant que finalement, je n'ai besoin que de 2 ou 3 Gio maximum (si j'utilisai une image ISO autre qu'une image ISO debian netinstall de 250Mio maxi).

La solution que je propose ici consiste à '''ne sauvegarder que l'espace disque qui va être écrasé par la copie de l'image ISO'''.

== La sauvegarde ==
Je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monIso=&quot;/home/michel/Téléchargements/firmware-7.6.0-amd64-netinst.iso&quot;
  root@debG53SW:~# nbBlckIso=$((($(stat -c %s ${monIso})/$taillBlck)+1))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 

je récupère (sauvegarde) une copie de l'espace disque qui sera écrasé par la copie du fichier image ISO sur le disque :
  root@debG53SW:~# dd bs=$taillBlck count=$nbBlckIso if=${maCible} of=${monSauv} &amp;&amp; sync
  60+0 enregistrements lus
  60+0 enregistrements écrits
  251658240 octets (252 MB) copiés, 2,42913 s, 104 MB/s
  root@debG53SW:~# 



À ce stade, soyez
&lt;u&gt;'''sûr et certain'''&lt;/u&gt;
de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;&quot;&gt;sdf&lt;/span&gt;
) associé au disque USB,

    
&lt;span style=&quot;background-color:red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;white-space: nowrap; margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: red; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;&quot;&lt;/span&gt;
au lieu de
&lt;span style=&quot;white-space: nowrap; margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt;

  
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;


Je copie le fichier image ISO
(&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${monIso}&lt;/span&gt;)
sur mon disque USB
(&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt;) :
  root@debG53SW:~# dd bs=$taillBlck if=${monIso} of=${maCible} &amp;&amp; sync
  59+0 enregistrements lus
  59+0 enregistrements écrits
  247463936 octets (247 MB) copiés, 3,7607 s, 65,8 MB/s
  root@debG53SW:~# 


Mon disque est maintenant '''prêt à être utilisé comme une clef USB''' pour l'installation de debian.


Je débranche le disque USB que je viens de préparer avec ma machine, pour le connecter à la machine sur laquelle je veux installer debian,&lt;br /&gt;
et je vais la démarrer en la faisant booter sur ce disque USB.

== L'installation de debian ==

Au cours de l'installation de debian, le programme se rendra compte qu'il ne s'agit pas d'une Clef USB ou d'un lecteur de CD-ROM,

car il ne s'agit pas d'un
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; font-family: monospace, Courier; font: x-small sans-serif; font-size: 1em; border: 1px solid rgb(221, 221, 221); background-color: #66CCFF;&quot;&gt;
périphérique amovible
&lt;/span&gt;.

Mais il va nous proposer d'entrer le nom du fichier de périphérique correspondant au disque-Clef USB :&lt;br /&gt;
Pour connaître le nom du fichier de périphérique correspondant au disque-Clef USB,

j'ai ouvert une deuxième console avec
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); background-color: #33CC33; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;ALT+F2&lt;/span&gt;,
pour entrer la commande :
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); background-color: #33CC33; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;
ls -l /dev/disk/by-label
&lt;/span&gt;

ce qui m'a permis de retrouver la partition
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #66CCFF; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;
Debian 7.6.0 amd64 1 -&gt; ../../'''sdc'''1
&lt;/span&gt;

Le fichier de périphérique associé au disque-Clef USB est donc
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #66CCFF; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;
/dev/sdc
&lt;/span&gt;

&lt;span style=&quot;white-space: nowrap; font-family: monospace, Courier;&quot;&gt;

 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐ 
 │                                                                                             │ 
 │  Afin de pouvoir accéder au lecteur de CD-ROM, veuillez indiquer le fichier de              │ 
 │  périphérique utilisé. En effet, les lecteurs non standrads utilisent des fichiers de       │ 
 │  périphérique non standrad tels que /dev/mcdx par exemple.                                  │ 
 │                                                                                             │ 
 │  Vous pouvez obtenir un interpréteur de commandes sur le deuxième terminal (ALT+F2) pour    │ 
 │  voir les périphériques disponibles dans /dev en tapant « ls /dev ». Vous pourrez revenir   │ 
 │  à cet écran par ALT+F1.                                                                    │ 
 │                                                                                             │ 
 │  Fichier de périphérique pour le lecteur de CD-ROM :                                        │ 
 │                                                                                             │ 
 │  &lt;span style=&quot;background-color: red; color: white;&quot;&gt;/dev/sdc_________________________________________________________________________________&lt;/span&gt;  │ 
 │                                                                                             │ 
 │                                         &lt;Continuer&gt;                                         │ 
 └─────────────────────────────────────────────────────────────────────────────────────────────┘ 
&lt;/span&gt;
Le programme d'installation a continué son travail normalement, et la machine a pu redémarrer avec son système debian.

== La remise à l'état d'origine du disque dur ==

Je vais maintenant remettre ce disque-Clef USB dans son état initial :

Je connecte mon disque USB sur la machine que j'avais utilisée pour créer le fichier de sauvegarde,&lt;br /&gt;
et je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 

Je lance la recopie sur le disque du fichier ${monSauv} qui avait été sauvegardé :

 root@debG53SW:~# dd conv=notrunc bs=$taillBlck if=&quot;${monSauv}&quot; of=&quot;${maCible}&quot; &amp;&amp; sync
 60+0 enregistrements lus
 60+0 enregistrements écrits
 251658240 octets (252 MB) copiés, 3,83389 s, 65,6 MB/s
 root@debG53SW:~# 

Je déconnecte et reconnecte le cordon USB de mon disque.


Mon disque est maintenant dans son état initial d'avant la copie du fichier image ISO,&lt;br /&gt;
avec toutes ses partitions originales et ses fichiers bien en place.

Après s'être assuré que tout est en place sur mon disque, je peux donc supprimer le fichier de sauvegarde :
  root@debG53SW:~# rm &quot;${monSauv}&quot;
      Il peut donc reprendre une activité normale.
 </text>
      <sha1>2hxv49yeb9afhom8fint5gqh42of112</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5851</id>
      <parentid>5850</parentid>
      <timestamp>2014-10-04T14:53:54Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* La remise à l'état d'origine du disque dur */</comment>
      <text xml:space="preserve" bytes="9838">
== Introduction ==
Les performances en vitesse écriture-lecture des clef USB sont si désespérément lentes,&lt;br /&gt;
qu'on en oublie parfois qu'on avait lancé une copie d'image ISO sur une clef USB.&lt;br /&gt;
Et je ne parle même pas du temps passé à la gravure d'un CD ou DVD…

En utilisant un disque dur USB à la place d'une clef USB ou d'un CD-ROM, c'est au moins '''100 fois plus vite fait''',&lt;br /&gt;
et on peut y gagner une bonne demi-journée d'attente quand il s'agit d'une image ISO Live de plus d'un Gio.

Ici, j'utilise un disque dur SSD d'occasion de 64Gio, ce qui améliore d'autant plus les performances en vitesse écriture-lecture.


Mais je n'ai pas envie de devoir sauvegarder tous les fichiers qui y sont stokés,&lt;br /&gt;
pour ensuite, une fois que je n'ai plus besoin de cette Clef-disque USB,&lt;br /&gt;
devoir recréer chaque partition et remettre en place tous les fichiers sauvegardés.

D'autant que finalement, je n'ai besoin que de 2 ou 3 Gio maximum (si j'utilisai une image ISO autre qu'une image ISO debian netinstall de 250Mio maxi).

La solution que je propose ici consiste à '''ne sauvegarder que l'espace disque qui va être écrasé par la copie de l'image ISO'''.

== La sauvegarde ==
Je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monIso=&quot;/home/michel/Téléchargements/firmware-7.6.0-amd64-netinst.iso&quot;
  root@debG53SW:~# nbBlckIso=$((($(stat -c %s ${monIso})/$taillBlck)+1))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 

je récupère (sauvegarde) une copie de l'espace disque qui sera écrasé par la copie du fichier image ISO sur le disque :
  root@debG53SW:~# dd bs=$taillBlck count=$nbBlckIso if=${maCible} of=${monSauv} &amp;&amp; sync
  60+0 enregistrements lus
  60+0 enregistrements écrits
  251658240 octets (252 MB) copiés, 2,42913 s, 104 MB/s
  root@debG53SW:~# 



À ce stade, soyez
&lt;u&gt;'''sûr et certain'''&lt;/u&gt;
de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; font-family: monospace,Courier;font: x-small sans-serif;font-size: 1em;border: 1px solid rgb(221, 221, 221);background-color: #66CCFF;&quot;&gt;sdf&lt;/span&gt;
) associé au disque USB,

    
&lt;span style=&quot;background-color:red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;white-space: nowrap; margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: red; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;&quot;&lt;/span&gt;
au lieu de
&lt;span style=&quot;white-space: nowrap; margin: 0; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt;

  
&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;


Je copie le fichier image ISO
(&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${monIso}&lt;/span&gt;)
sur mon disque USB
(&lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #33CC33; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt;) :
  root@debG53SW:~# dd bs=$taillBlck if=${monIso} of=${maCible} &amp;&amp; sync
  59+0 enregistrements lus
  59+0 enregistrements écrits
  247463936 octets (247 MB) copiés, 3,7607 s, 65,8 MB/s
  root@debG53SW:~# 


Mon disque est maintenant '''prêt à être utilisé comme une clef USB''' pour l'installation de debian.


Je débranche le disque USB que je viens de préparer avec ma machine, pour le connecter à la machine sur laquelle je veux installer debian,&lt;br /&gt;
et je vais la démarrer en la faisant booter sur ce disque USB.

== L'installation de debian ==

Au cours de l'installation de debian, le programme se rendra compte qu'il ne s'agit pas d'une Clef USB ou d'un lecteur de CD-ROM,

car il ne s'agit pas d'un
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; font-family: monospace, Courier; font: x-small sans-serif; font-size: 1em; border: 1px solid rgb(221, 221, 221); background-color: #66CCFF;&quot;&gt;
périphérique amovible
&lt;/span&gt;.

Mais il va nous proposer d'entrer le nom du fichier de périphérique correspondant au disque-Clef USB :&lt;br /&gt;
Pour connaître le nom du fichier de périphérique correspondant au disque-Clef USB,

j'ai ouvert une deuxième console avec
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); background-color: #33CC33; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;ALT+F2&lt;/span&gt;,
pour entrer la commande :
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); background-color: #33CC33; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;
ls -l /dev/disk/by-label
&lt;/span&gt;

ce qui m'a permis de retrouver la partition
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #66CCFF; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;
Debian 7.6.0 amd64 1 -&gt; ../../'''sdc'''1
&lt;/span&gt;

Le fichier de périphérique associé au disque-Clef USB est donc
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #66CCFF; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;
/dev/sdc
&lt;/span&gt;

&lt;span style=&quot;white-space: nowrap; font-family: monospace, Courier;&quot;&gt;

 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐ 
 │                                                                                             │ 
 │  Afin de pouvoir accéder au lecteur de CD-ROM, veuillez indiquer le fichier de              │ 
 │  périphérique utilisé. En effet, les lecteurs non standrads utilisent des fichiers de       │ 
 │  périphérique non standrad tels que /dev/mcdx par exemple.                                  │ 
 │                                                                                             │ 
 │  Vous pouvez obtenir un interpréteur de commandes sur le deuxième terminal (ALT+F2) pour    │ 
 │  voir les périphériques disponibles dans /dev en tapant « ls /dev ». Vous pourrez revenir   │ 
 │  à cet écran par ALT+F1.                                                                    │ 
 │                                                                                             │ 
 │  Fichier de périphérique pour le lecteur de CD-ROM :                                        │ 
 │                                                                                             │ 
 │  &lt;span style=&quot;background-color: red; color: white;&quot;&gt;/dev/sdc_________________________________________________________________________________&lt;/span&gt;  │ 
 │                                                                                             │ 
 │                                         &lt;Continuer&gt;                                         │ 
 └─────────────────────────────────────────────────────────────────────────────────────────────┘ 
&lt;/span&gt;
Le programme d'installation a continué son travail normalement, et la machine a pu redémarrer avec son système debian.

== La remise à l'état d'origine du disque dur ==

Je vais maintenant remettre ce disque-Clef USB dans son état initial :

Je connecte mon disque USB sur la machine que j'avais utilisée pour créer le fichier de sauvegarde,&lt;br /&gt;
et je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 

Je lance la recopie sur le disque du fichier ${monSauv} qui avait été sauvegardé :

 root@debG53SW:~# dd conv=notrunc bs=$taillBlck if=&quot;${monSauv}&quot; of=&quot;${maCible}&quot; &amp;&amp; sync
 60+0 enregistrements lus
 60+0 enregistrements écrits
 251658240 octets (252 MB) copiés, 3,83389 s, 65,6 MB/s
 root@debG53SW:~# 

Je déconnecte et reconnecte le cordon USB de mon disque.


Mon disque est maintenant dans son état initial d'avant la copie du fichier image ISO,&lt;br /&gt;
avec toutes ses partitions originales et ses fichiers bien en place.

Après s'être assuré que tout est bien en place sur mon disque, je peux donc supprimer le fichier de sauvegarde :
  root@debG53SW:~# rm &quot;${monSauv}&quot;</text>
      <sha1>9zlj4sjmtwiibr565dmoal97ambyq1s</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5852</id>
      <parentid>5851</parentid>
      <timestamp>2014-10-04T15:21:23Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* La sauvegarde */ divers formatage</comment>
      <text xml:space="preserve" bytes="9132">
== Introduction ==
Les performances en vitesse écriture-lecture des clef USB sont si désespérément lentes,&lt;br /&gt;
qu'on en oublie parfois qu'on avait lancé une copie d'image ISO sur une clef USB.&lt;br /&gt;
Et je ne parle même pas du temps passé à la gravure d'un CD ou DVD…

En utilisant un disque dur USB à la place d'une clef USB ou d'un CD-ROM, c'est au moins '''100 fois plus vite fait''',&lt;br /&gt;
et on peut y gagner une bonne demi-journée d'attente quand il s'agit d'une image ISO Live de plus d'un Gio.

Ici, j'utilise un disque dur SSD d'occasion de 64Gio, ce qui améliore d'autant plus les performances en vitesse écriture-lecture.


Mais je n'ai pas envie de devoir sauvegarder tous les fichiers qui y sont stokés,&lt;br /&gt;
pour ensuite, une fois que je n'ai plus besoin de cette Clef-disque USB,&lt;br /&gt;
devoir recréer chaque partition et remettre en place tous les fichiers sauvegardés.

D'autant que finalement, je n'ai besoin que de 2 ou 3 Gio maximum (si j'utilisai une image ISO autre qu'une image ISO debian netinstall de 250Mio maxi).

La solution que je propose ici consiste à '''ne sauvegarder que l'espace disque qui va être écrasé par la copie de l'image ISO'''.

== La sauvegarde ==
Je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monIso=&quot;/home/michel/Téléchargements/firmware-7.6.0-amd64-netinst.iso&quot;
  root@debG53SW:~# nbBlckIso=$((($(stat -c %s ${monIso})/$taillBlck)+1))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 


À ce stade, soyez
&lt;u&gt;'''sûr et certain'''&lt;/u&gt;
de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (sdf) associé au disque USB,

    
&lt;span style=&quot;background-color: red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;
&lt;span style=&quot;background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;background-color: red;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;background-color: #33CC33;&quot;&gt;&quot;&lt;/span&gt;
au lieu de
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em; background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt;&lt;br /&gt;
  &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;
&lt;/span&gt;



je récupère (sauvegarde) une copie de l'espace disque qui sera écrasé par la copie du fichier image ISO sur le disque :
  root@debG53SW:~# dd bs=$taillBlck count=$nbBlckIso if=&quot;${maCible}&quot; of=&quot;${monSauv}&quot; &amp;&amp; sync
  60+0 enregistrements lus
  60+0 enregistrements écrits
  251658240 octets (252 MB) copiés, 2,42913 s, 104 MB/s
  root@debG53SW:~# 


Je copie le fichier image ISO
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${monIso}&lt;/span&gt;
sur mon disque USB
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt; :
  root@debG53SW:~# dd bs=$taillBlck if=${monIso} of=${maCible} &amp;&amp; sync
  59+0 enregistrements lus
  59+0 enregistrements écrits
  247463936 octets (247 MB) copiés, 3,7607 s, 65,8 MB/s
  root@debG53SW:~# 


Mon disque est maintenant '''prêt à être utilisé comme une clef USB''' pour l'installation de debian.


Je débranche le disque USB que je viens de préparer avec ma machine, pour le connecter à la machine sur laquelle je veux installer debian,&lt;br /&gt;
et je vais la démarrer en la faisant booter sur ce disque USB.

== L'installation de debian ==

Au cours de l'installation de debian, le programme se rendra compte qu'il ne s'agit pas d'une Clef USB ou d'un lecteur de CD-ROM,

car il ne s'agit pas d'un
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; font-family: monospace, Courier; font: x-small sans-serif; font-size: 1em; border: 1px solid rgb(221, 221, 221); background-color: #66CCFF;&quot;&gt;
périphérique amovible
&lt;/span&gt;.

Mais il va nous proposer d'entrer le nom du fichier de périphérique correspondant au disque-Clef USB :&lt;br /&gt;
Pour connaître le nom du fichier de périphérique correspondant au disque-Clef USB,

j'ai ouvert une deuxième console avec
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); background-color: #33CC33; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;ALT+F2&lt;/span&gt;,
pour entrer la commande :
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); background-color: #33CC33; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;
ls -l /dev/disk/by-label
&lt;/span&gt;

ce qui m'a permis de retrouver la partition
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #66CCFF; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;
Debian 7.6.0 amd64 1 -&gt; ../../'''sdc'''1
&lt;/span&gt;

Le fichier de périphérique associé au disque-Clef USB est donc
&lt;span style=&quot;white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221);background-color: #66CCFF; font: x-small sans-serif; font-family: monospace,Courier; font-size: 1em;&quot;&gt;
/dev/sdc
&lt;/span&gt;

&lt;span style=&quot;white-space: nowrap; font-family: monospace, Courier;&quot;&gt;

 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐ 
 │                                                                                             │ 
 │  Afin de pouvoir accéder au lecteur de CD-ROM, veuillez indiquer le fichier de              │ 
 │  périphérique utilisé. En effet, les lecteurs non standrads utilisent des fichiers de       │ 
 │  périphérique non standrad tels que /dev/mcdx par exemple.                                  │ 
 │                                                                                             │ 
 │  Vous pouvez obtenir un interpréteur de commandes sur le deuxième terminal (ALT+F2) pour    │ 
 │  voir les périphériques disponibles dans /dev en tapant « ls /dev ». Vous pourrez revenir   │ 
 │  à cet écran par ALT+F1.                                                                    │ 
 │                                                                                             │ 
 │  Fichier de périphérique pour le lecteur de CD-ROM :                                        │ 
 │                                                                                             │ 
 │  &lt;span style=&quot;background-color: red; color: white;&quot;&gt;/dev/sdc_________________________________________________________________________________&lt;/span&gt;  │ 
 │                                                                                             │ 
 │                                         &lt;Continuer&gt;                                         │ 
 └─────────────────────────────────────────────────────────────────────────────────────────────┘ 
&lt;/span&gt;
Le programme d'installation a continué son travail normalement, et la machine a pu redémarrer avec son système debian.

== La remise à l'état d'origine du disque dur ==

Je vais maintenant remettre ce disque-Clef USB dans son état initial :

Je connecte mon disque USB sur la machine que j'avais utilisée pour créer le fichier de sauvegarde,&lt;br /&gt;
et je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 

Je lance la recopie sur le disque du fichier ${monSauv} qui avait été sauvegardé :

 root@debG53SW:~# dd conv=notrunc bs=$taillBlck if=&quot;${monSauv}&quot; of=&quot;${maCible}&quot; &amp;&amp; sync
 60+0 enregistrements lus
 60+0 enregistrements écrits
 251658240 octets (252 MB) copiés, 3,83389 s, 65,6 MB/s
 root@debG53SW:~# 

Je déconnecte et reconnecte le cordon USB de mon disque.


Mon disque est maintenant dans son état initial d'avant la copie du fichier image ISO,&lt;br /&gt;
avec toutes ses partitions originales et ses fichiers bien en place.

Après s'être assuré que tout est bien en place sur mon disque, je peux donc supprimer le fichier de sauvegarde :
  root@debG53SW:~# rm &quot;${monSauv}&quot;</text>
      <sha1>pvmbc1ap98a1j42o7l8lxxwvpbgk9j5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5853</id>
      <parentid>5852</parentid>
      <timestamp>2014-10-04T15:25:27Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* L'installation de debian */ divers formatage</comment>
      <text xml:space="preserve" bytes="9129">
== Introduction ==
Les performances en vitesse écriture-lecture des clef USB sont si désespérément lentes,&lt;br /&gt;
qu'on en oublie parfois qu'on avait lancé une copie d'image ISO sur une clef USB.&lt;br /&gt;
Et je ne parle même pas du temps passé à la gravure d'un CD ou DVD…

En utilisant un disque dur USB à la place d'une clef USB ou d'un CD-ROM, c'est au moins '''100 fois plus vite fait''',&lt;br /&gt;
et on peut y gagner une bonne demi-journée d'attente quand il s'agit d'une image ISO Live de plus d'un Gio.

Ici, j'utilise un disque dur SSD d'occasion de 64Gio, ce qui améliore d'autant plus les performances en vitesse écriture-lecture.


Mais je n'ai pas envie de devoir sauvegarder tous les fichiers qui y sont stokés,&lt;br /&gt;
pour ensuite, une fois que je n'ai plus besoin de cette Clef-disque USB,&lt;br /&gt;
devoir recréer chaque partition et remettre en place tous les fichiers sauvegardés.

D'autant que finalement, je n'ai besoin que de 2 ou 3 Gio maximum (si j'utilisai une image ISO autre qu'une image ISO debian netinstall de 250Mio maxi).

La solution que je propose ici consiste à '''ne sauvegarder que l'espace disque qui va être écrasé par la copie de l'image ISO'''.

== La sauvegarde ==
Je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monIso=&quot;/home/michel/Téléchargements/firmware-7.6.0-amd64-netinst.iso&quot;
  root@debG53SW:~# nbBlckIso=$((($(stat -c %s ${monIso})/$taillBlck)+1))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 


À ce stade, soyez
&lt;u&gt;'''sûr et certain'''&lt;/u&gt;
de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (sdf) associé au disque USB,

    
&lt;span style=&quot;background-color: red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;
&lt;span style=&quot;background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;background-color: red;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;background-color: #33CC33;&quot;&gt;&quot;&lt;/span&gt;
au lieu de
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em; background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt;&lt;br /&gt;
  &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;
&lt;/span&gt;



je récupère (sauvegarde) une copie de l'espace disque qui sera écrasé par la copie du fichier image ISO sur le disque :
  root@debG53SW:~# dd bs=$taillBlck count=$nbBlckIso if=&quot;${maCible}&quot; of=&quot;${monSauv}&quot; &amp;&amp; sync
  60+0 enregistrements lus
  60+0 enregistrements écrits
  251658240 octets (252 MB) copiés, 2,42913 s, 104 MB/s
  root@debG53SW:~# 


Je copie le fichier image ISO
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${monIso}&lt;/span&gt;
sur mon disque USB
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt; :
  root@debG53SW:~# dd bs=$taillBlck if=${monIso} of=${maCible} &amp;&amp; sync
  59+0 enregistrements lus
  59+0 enregistrements écrits
  247463936 octets (247 MB) copiés, 3,7607 s, 65,8 MB/s
  root@debG53SW:~# 


Mon disque est maintenant '''prêt à être utilisé comme une clef USB''' pour l'installation de debian.


Je débranche le disque USB que je viens de préparer avec ma machine, pour le connecter à la machine sur laquelle je veux installer debian,&lt;br /&gt;
et je vais la démarrer en la faisant booter sur ce disque USB.

== L'installation de debian ==

Au cours de l'installation de debian, le programme se rendra compte qu'il ne s'agit pas d'une Clef USB ou d'un lecteur de CD-ROM,

car il ne s'agit pas d'un
&lt;span style=&quot;background-color: #66CCFF; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; font-family: monospace, Courier; font: x-small sans-serif; font-size: 1em; border: 1px solid rgb(221, 221, 221);&quot;&gt;périphérique amovible&lt;/span&gt;.

Mais il va nous proposer d'entrer le nom du fichier de périphérique correspondant au disque-Clef USB :&lt;br /&gt;
Pour connaître le nom du fichier de périphérique correspondant au disque-Clef USB,

j'ai ouvert une deuxième console avec
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;ALT+F2&lt;/span&gt;,
pour entrer la commande :
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;ls -l /dev/disk/by-label&lt;/span&gt;

ce qui m'a permis de retrouver la partition
&lt;span style=&quot;background-color: #66CCFF; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;Debian 7.6.0 amd64 1 -&gt; ../../'''sdc'''1&lt;/span&gt;


Le fichier de périphérique associé au disque-Clef USB est donc
&lt;span style=&quot;background-color: #66CCFF; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;/dev/sdc&lt;/span&gt;

&lt;span style=&quot;white-space: nowrap; font-family: monospace, Courier;&quot;&gt;

 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐ 
 │                                                                                             │ 
 │  Afin de pouvoir accéder au lecteur de CD-ROM, veuillez indiquer le fichier de              │ 
 │  périphérique utilisé. En effet, les lecteurs non standrads utilisent des fichiers de       │ 
 │  périphérique non standrad tels que /dev/mcdx par exemple.                                  │ 
 │                                                                                             │ 
 │  Vous pouvez obtenir un interpréteur de commandes sur le deuxième terminal (ALT+F2) pour    │ 
 │  voir les périphériques disponibles dans /dev en tapant « ls /dev ». Vous pourrez revenir   │ 
 │  à cet écran par ALT+F1.                                                                    │ 
 │                                                                                             │ 
 │  Fichier de périphérique pour le lecteur de CD-ROM :                                        │ 
 │                                                                                             │ 
 │  &lt;span style=&quot;background-color: red; color: white;&quot;&gt;/dev/sdc_________________________________________________________________________________&lt;/span&gt;  │ 
 │                                                                                             │ 
 │                                         &lt;Continuer&gt;                                         │ 
 └─────────────────────────────────────────────────────────────────────────────────────────────┘ 
&lt;/span&gt;
Le programme d'installation a continué son travail normalement, et la machine a pu redémarrer avec son système debian.

== La remise à l'état d'origine du disque dur ==

Je vais maintenant remettre ce disque-Clef USB dans son état initial :

Je connecte mon disque USB sur la machine que j'avais utilisée pour créer le fichier de sauvegarde,&lt;br /&gt;
et je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 

Je lance la recopie sur le disque du fichier ${monSauv} qui avait été sauvegardé :

 root@debG53SW:~# dd conv=notrunc bs=$taillBlck if=&quot;${monSauv}&quot; of=&quot;${maCible}&quot; &amp;&amp; sync
 60+0 enregistrements lus
 60+0 enregistrements écrits
 251658240 octets (252 MB) copiés, 3,83389 s, 65,6 MB/s
 root@debG53SW:~# 

Je déconnecte et reconnecte le cordon USB de mon disque.


Mon disque est maintenant dans son état initial d'avant la copie du fichier image ISO,&lt;br /&gt;
avec toutes ses partitions originales et ses fichiers bien en place.

Après s'être assuré que tout est bien en place sur mon disque, je peux donc supprimer le fichier de sauvegarde :
  root@debG53SW:~# rm &quot;${monSauv}&quot;</text>
      <sha1>rd7ffzsavdehw7bcmvtr71djqyx4dbl</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5854</id>
      <parentid>5853</parentid>
      <timestamp>2014-10-04T15:31:33Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* La remise à l'état d'origine du disque dur */ divers fomatage</comment>
      <text xml:space="preserve" bytes="9468">
== Introduction ==
Les performances en vitesse écriture-lecture des clef USB sont si désespérément lentes,&lt;br /&gt;
qu'on en oublie parfois qu'on avait lancé une copie d'image ISO sur une clef USB.&lt;br /&gt;
Et je ne parle même pas du temps passé à la gravure d'un CD ou DVD…

En utilisant un disque dur USB à la place d'une clef USB ou d'un CD-ROM, c'est au moins '''100 fois plus vite fait''',&lt;br /&gt;
et on peut y gagner une bonne demi-journée d'attente quand il s'agit d'une image ISO Live de plus d'un Gio.

Ici, j'utilise un disque dur SSD d'occasion de 64Gio, ce qui améliore d'autant plus les performances en vitesse écriture-lecture.


Mais je n'ai pas envie de devoir sauvegarder tous les fichiers qui y sont stokés,&lt;br /&gt;
pour ensuite, une fois que je n'ai plus besoin de cette Clef-disque USB,&lt;br /&gt;
devoir recréer chaque partition et remettre en place tous les fichiers sauvegardés.

D'autant que finalement, je n'ai besoin que de 2 ou 3 Gio maximum (si j'utilisai une image ISO autre qu'une image ISO debian netinstall de 250Mio maxi).

La solution que je propose ici consiste à '''ne sauvegarder que l'espace disque qui va être écrasé par la copie de l'image ISO'''.

== La sauvegarde ==
Je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monIso=&quot;/home/michel/Téléchargements/firmware-7.6.0-amd64-netinst.iso&quot;
  root@debG53SW:~# nbBlckIso=$((($(stat -c %s ${monIso})/$taillBlck)+1))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 


À ce stade, soyez
&lt;u&gt;'''sûr et certain'''&lt;/u&gt;
de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (sdf) associé au disque USB,

    
&lt;span style=&quot;background-color: red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;
&lt;span style=&quot;background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;background-color: red;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;background-color: #33CC33;&quot;&gt;&quot;&lt;/span&gt;
au lieu de
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em; background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt;&lt;br /&gt;
  &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;
&lt;/span&gt;



je récupère (sauvegarde) une copie de l'espace disque qui sera écrasé par la copie du fichier image ISO sur le disque :
  root@debG53SW:~# dd bs=$taillBlck count=$nbBlckIso if=&quot;${maCible}&quot; of=&quot;${monSauv}&quot; &amp;&amp; sync
  60+0 enregistrements lus
  60+0 enregistrements écrits
  251658240 octets (252 MB) copiés, 2,42913 s, 104 MB/s
  root@debG53SW:~# 


Je copie le fichier image ISO
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${monIso}&lt;/span&gt;
sur mon disque USB
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt; :
  root@debG53SW:~# dd bs=$taillBlck if=${monIso} of=${maCible} &amp;&amp; sync
  59+0 enregistrements lus
  59+0 enregistrements écrits
  247463936 octets (247 MB) copiés, 3,7607 s, 65,8 MB/s
  root@debG53SW:~# 


Mon disque est maintenant '''prêt à être utilisé comme une clef USB''' pour l'installation de debian.


Je débranche le disque USB que je viens de préparer avec ma machine, pour le connecter à la machine sur laquelle je veux installer debian,&lt;br /&gt;
et je vais la démarrer en la faisant booter sur ce disque USB.

== L'installation de debian ==

Au cours de l'installation de debian, le programme se rendra compte qu'il ne s'agit pas d'une Clef USB ou d'un lecteur de CD-ROM,

car il ne s'agit pas d'un
&lt;span style=&quot;background-color: #66CCFF; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; font-family: monospace, Courier; font: x-small sans-serif; font-size: 1em; border: 1px solid rgb(221, 221, 221);&quot;&gt;périphérique amovible&lt;/span&gt;.

Mais il va nous proposer d'entrer le nom du fichier de périphérique correspondant au disque-Clef USB :&lt;br /&gt;
Pour connaître le nom du fichier de périphérique correspondant au disque-Clef USB,

j'ai ouvert une deuxième console avec
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;ALT+F2&lt;/span&gt;,
pour entrer la commande :
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;ls -l /dev/disk/by-label&lt;/span&gt;

ce qui m'a permis de retrouver la partition
&lt;span style=&quot;background-color: #66CCFF; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;Debian 7.6.0 amd64 1 -&gt; ../../'''sdc'''1&lt;/span&gt;


Le fichier de périphérique associé au disque-Clef USB est donc
&lt;span style=&quot;background-color: #66CCFF; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;/dev/sdc&lt;/span&gt;

&lt;span style=&quot;white-space: nowrap; font-family: monospace, Courier;&quot;&gt;

 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐ 
 │                                                                                             │ 
 │  Afin de pouvoir accéder au lecteur de CD-ROM, veuillez indiquer le fichier de              │ 
 │  périphérique utilisé. En effet, les lecteurs non standrads utilisent des fichiers de       │ 
 │  périphérique non standrad tels que /dev/mcdx par exemple.                                  │ 
 │                                                                                             │ 
 │  Vous pouvez obtenir un interpréteur de commandes sur le deuxième terminal (ALT+F2) pour    │ 
 │  voir les périphériques disponibles dans /dev en tapant « ls /dev ». Vous pourrez revenir   │ 
 │  à cet écran par ALT+F1.                                                                    │ 
 │                                                                                             │ 
 │  Fichier de périphérique pour le lecteur de CD-ROM :                                        │ 
 │                                                                                             │ 
 │  &lt;span style=&quot;background-color: red; color: white;&quot;&gt;/dev/sdc_________________________________________________________________________________&lt;/span&gt;  │ 
 │                                                                                             │ 
 │                                         &lt;Continuer&gt;                                         │ 
 └─────────────────────────────────────────────────────────────────────────────────────────────┘ 
&lt;/span&gt;
Le programme d'installation a continué son travail normalement, et la machine a pu redémarrer avec son système debian.

== La remise à l'état d'origine du disque dur ==

Je vais maintenant remettre ce disque-Clef USB dans son état initial :

Je connecte mon disque USB sur la machine que j'avais utilisée pour créer le fichier de sauvegarde,&lt;br /&gt;
et je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 

Je lance la recopie du fichier
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${monSauv}&lt;/span&gt;
qui avait été sauvegardé, sur le disque
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt; :

 root@debG53SW:~# dd conv=notrunc bs=$taillBlck if=&quot;${monSauv}&quot; of=&quot;${maCible}&quot; &amp;&amp; sync
 60+0 enregistrements lus
 60+0 enregistrements écrits
 251658240 octets (252 MB) copiés, 3,83389 s, 65,6 MB/s
 root@debG53SW:~# 

Je déconnecte et reconnecte le cordon USB de mon disque.

Mon disque est maintenant dans son état initial d'avant la copie du fichier image ISO, avec toutes ses partitions originales et ses fichiers bien en place.

Après m'être assuré que tout est bien en place sur mon disque, je peux donc supprimer le fichier de sauvegarde :
  root@debG53SW:~# rm &quot;${monSauv}&quot;</text>
      <sha1>4sh6ymusiiflf4pdkzlv68eh4nzm9g9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5855</id>
      <parentid>5854</parentid>
      <timestamp>2014-10-04T15:32:26Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* La sauvegarde */ divers formatage</comment>
      <text xml:space="preserve" bytes="9472">
== Introduction ==
Les performances en vitesse écriture-lecture des clef USB sont si désespérément lentes,&lt;br /&gt;
qu'on en oublie parfois qu'on avait lancé une copie d'image ISO sur une clef USB.&lt;br /&gt;
Et je ne parle même pas du temps passé à la gravure d'un CD ou DVD…

En utilisant un disque dur USB à la place d'une clef USB ou d'un CD-ROM, c'est au moins '''100 fois plus vite fait''',&lt;br /&gt;
et on peut y gagner une bonne demi-journée d'attente quand il s'agit d'une image ISO Live de plus d'un Gio.

Ici, j'utilise un disque dur SSD d'occasion de 64Gio, ce qui améliore d'autant plus les performances en vitesse écriture-lecture.


Mais je n'ai pas envie de devoir sauvegarder tous les fichiers qui y sont stokés,&lt;br /&gt;
pour ensuite, une fois que je n'ai plus besoin de cette Clef-disque USB,&lt;br /&gt;
devoir recréer chaque partition et remettre en place tous les fichiers sauvegardés.

D'autant que finalement, je n'ai besoin que de 2 ou 3 Gio maximum (si j'utilisai une image ISO autre qu'une image ISO debian netinstall de 250Mio maxi).

La solution que je propose ici consiste à '''ne sauvegarder que l'espace disque qui va être écrasé par la copie de l'image ISO'''.

== La sauvegarde ==
Je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monIso=&quot;/home/michel/Téléchargements/firmware-7.6.0-amd64-netinst.iso&quot;
  root@debG53SW:~# nbBlckIso=$((($(stat -c %s ${monIso})/$taillBlck)+1))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 


À ce stade, soyez
&lt;u&gt;'''sûr et certain'''&lt;/u&gt;
de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (sdf) associé au disque USB,

    
&lt;span style=&quot;background-color: red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;
&lt;span style=&quot;background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;background-color: red;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;background-color: #33CC33;&quot;&gt;&quot;&lt;/span&gt;
au lieu de
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em; background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt;&lt;br /&gt;
  &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;
&lt;/span&gt;



je récupère (sauvegarde) une copie de l'espace disque qui sera écrasé par la copie du fichier image ISO sur le disque :
  root@debG53SW:~# dd bs=$taillBlck count=$nbBlckIso if=&quot;${maCible}&quot; of=&quot;${monSauv}&quot; &amp;&amp; sync
  60+0 enregistrements lus
  60+0 enregistrements écrits
  251658240 octets (252 MB) copiés, 2,42913 s, 104 MB/s
  root@debG53SW:~# 


Je copie le fichier image ISO
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${monIso}&lt;/span&gt;
sur mon disque USB
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt; :
  root@debG53SW:~# dd bs=$taillBlck if=&quot;${monIso}&quot; of=&quot;${maCible}&quot; &amp;&amp; sync
  59+0 enregistrements lus
  59+0 enregistrements écrits
  247463936 octets (247 MB) copiés, 3,7607 s, 65,8 MB/s
  root@debG53SW:~# 


Mon disque est maintenant '''prêt à être utilisé comme une clef USB''' pour l'installation de debian.


Je débranche le disque USB que je viens de préparer avec ma machine, pour le connecter à la machine sur laquelle je veux installer debian,&lt;br /&gt;
et je vais la démarrer en la faisant booter sur ce disque USB.

== L'installation de debian ==

Au cours de l'installation de debian, le programme se rendra compte qu'il ne s'agit pas d'une Clef USB ou d'un lecteur de CD-ROM,

car il ne s'agit pas d'un
&lt;span style=&quot;background-color: #66CCFF; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; font-family: monospace, Courier; font: x-small sans-serif; font-size: 1em; border: 1px solid rgb(221, 221, 221);&quot;&gt;périphérique amovible&lt;/span&gt;.

Mais il va nous proposer d'entrer le nom du fichier de périphérique correspondant au disque-Clef USB :&lt;br /&gt;
Pour connaître le nom du fichier de périphérique correspondant au disque-Clef USB,

j'ai ouvert une deuxième console avec
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;ALT+F2&lt;/span&gt;,
pour entrer la commande :
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;ls -l /dev/disk/by-label&lt;/span&gt;

ce qui m'a permis de retrouver la partition
&lt;span style=&quot;background-color: #66CCFF; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;Debian 7.6.0 amd64 1 -&gt; ../../'''sdc'''1&lt;/span&gt;


Le fichier de périphérique associé au disque-Clef USB est donc
&lt;span style=&quot;background-color: #66CCFF; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;/dev/sdc&lt;/span&gt;

&lt;span style=&quot;white-space: nowrap; font-family: monospace, Courier;&quot;&gt;

 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐ 
 │                                                                                             │ 
 │  Afin de pouvoir accéder au lecteur de CD-ROM, veuillez indiquer le fichier de              │ 
 │  périphérique utilisé. En effet, les lecteurs non standrads utilisent des fichiers de       │ 
 │  périphérique non standrad tels que /dev/mcdx par exemple.                                  │ 
 │                                                                                             │ 
 │  Vous pouvez obtenir un interpréteur de commandes sur le deuxième terminal (ALT+F2) pour    │ 
 │  voir les périphériques disponibles dans /dev en tapant « ls /dev ». Vous pourrez revenir   │ 
 │  à cet écran par ALT+F1.                                                                    │ 
 │                                                                                             │ 
 │  Fichier de périphérique pour le lecteur de CD-ROM :                                        │ 
 │                                                                                             │ 
 │  &lt;span style=&quot;background-color: red; color: white;&quot;&gt;/dev/sdc_________________________________________________________________________________&lt;/span&gt;  │ 
 │                                                                                             │ 
 │                                         &lt;Continuer&gt;                                         │ 
 └─────────────────────────────────────────────────────────────────────────────────────────────┘ 
&lt;/span&gt;
Le programme d'installation a continué son travail normalement, et la machine a pu redémarrer avec son système debian.

== La remise à l'état d'origine du disque dur ==

Je vais maintenant remettre ce disque-Clef USB dans son état initial :

Je connecte mon disque USB sur la machine que j'avais utilisée pour créer le fichier de sauvegarde,&lt;br /&gt;
et je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 

Je lance la recopie du fichier
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${monSauv}&lt;/span&gt;
qui avait été sauvegardé, sur le disque
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt; :

 root@debG53SW:~# dd conv=notrunc bs=$taillBlck if=&quot;${monSauv}&quot; of=&quot;${maCible}&quot; &amp;&amp; sync
 60+0 enregistrements lus
 60+0 enregistrements écrits
 251658240 octets (252 MB) copiés, 3,83389 s, 65,6 MB/s
 root@debG53SW:~# 

Je déconnecte et reconnecte le cordon USB de mon disque.

Mon disque est maintenant dans son état initial d'avant la copie du fichier image ISO, avec toutes ses partitions originales et ses fichiers bien en place.

Après m'être assuré que tout est bien en place sur mon disque, je peux donc supprimer le fichier de sauvegarde :
  root@debG53SW:~# rm &quot;${monSauv}&quot;</text>
      <sha1>3td29q4659huwlbohrq774qa38728lu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5856</id>
      <parentid>5855</parentid>
      <timestamp>2014-10-04T15:33:39Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* La sauvegarde */ divers formatage</comment>
      <text xml:space="preserve" bytes="9474">
== Introduction ==
Les performances en vitesse écriture-lecture des clef USB sont si désespérément lentes,&lt;br /&gt;
qu'on en oublie parfois qu'on avait lancé une copie d'image ISO sur une clef USB.&lt;br /&gt;
Et je ne parle même pas du temps passé à la gravure d'un CD ou DVD…

En utilisant un disque dur USB à la place d'une clef USB ou d'un CD-ROM, c'est au moins '''100 fois plus vite fait''',&lt;br /&gt;
et on peut y gagner une bonne demi-journée d'attente quand il s'agit d'une image ISO Live de plus d'un Gio.

Ici, j'utilise un disque dur SSD d'occasion de 64Gio, ce qui améliore d'autant plus les performances en vitesse écriture-lecture.


Mais je n'ai pas envie de devoir sauvegarder tous les fichiers qui y sont stokés,&lt;br /&gt;
pour ensuite, une fois que je n'ai plus besoin de cette Clef-disque USB,&lt;br /&gt;
devoir recréer chaque partition et remettre en place tous les fichiers sauvegardés.

D'autant que finalement, je n'ai besoin que de 2 ou 3 Gio maximum (si j'utilisai une image ISO autre qu'une image ISO debian netinstall de 250Mio maxi).

La solution que je propose ici consiste à '''ne sauvegarder que l'espace disque qui va être écrasé par la copie de l'image ISO'''.

== La sauvegarde ==
Je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monIso=&quot;/home/michel/Téléchargements/firmware-7.6.0-amd64-netinst.iso&quot;
  root@debG53SW:~# nbBlckIso=$((($(stat -c %s &quot;${monIso}&quot;)/$taillBlck)+1))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 


À ce stade, soyez
&lt;u&gt;'''sûr et certain'''&lt;/u&gt;
de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (sdf) associé au disque USB,

    
&lt;span style=&quot;background-color: red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;
&lt;span style=&quot;background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;background-color: red;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;background-color: #33CC33;&quot;&gt;&quot;&lt;/span&gt;
au lieu de
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em; background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt;&lt;br /&gt;
  &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;
&lt;/span&gt;



je récupère (sauvegarde) une copie de l'espace disque qui sera écrasé par la copie du fichier image ISO sur le disque :
  root@debG53SW:~# dd bs=$taillBlck count=$nbBlckIso if=&quot;${maCible}&quot; of=&quot;${monSauv}&quot; &amp;&amp; sync
  60+0 enregistrements lus
  60+0 enregistrements écrits
  251658240 octets (252 MB) copiés, 2,42913 s, 104 MB/s
  root@debG53SW:~# 


Je copie le fichier image ISO
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${monIso}&lt;/span&gt;
sur mon disque USB
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt; :
  root@debG53SW:~# dd bs=$taillBlck if=&quot;${monIso}&quot; of=&quot;${maCible}&quot; &amp;&amp; sync
  59+0 enregistrements lus
  59+0 enregistrements écrits
  247463936 octets (247 MB) copiés, 3,7607 s, 65,8 MB/s
  root@debG53SW:~# 


Mon disque est maintenant '''prêt à être utilisé comme une clef USB''' pour l'installation de debian.


Je débranche le disque USB que je viens de préparer avec ma machine, pour le connecter à la machine sur laquelle je veux installer debian,&lt;br /&gt;
et je vais la démarrer en la faisant booter sur ce disque USB.

== L'installation de debian ==

Au cours de l'installation de debian, le programme se rendra compte qu'il ne s'agit pas d'une Clef USB ou d'un lecteur de CD-ROM,

car il ne s'agit pas d'un
&lt;span style=&quot;background-color: #66CCFF; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; font-family: monospace, Courier; font: x-small sans-serif; font-size: 1em; border: 1px solid rgb(221, 221, 221);&quot;&gt;périphérique amovible&lt;/span&gt;.

Mais il va nous proposer d'entrer le nom du fichier de périphérique correspondant au disque-Clef USB :&lt;br /&gt;
Pour connaître le nom du fichier de périphérique correspondant au disque-Clef USB,

j'ai ouvert une deuxième console avec
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;ALT+F2&lt;/span&gt;,
pour entrer la commande :
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;ls -l /dev/disk/by-label&lt;/span&gt;

ce qui m'a permis de retrouver la partition
&lt;span style=&quot;background-color: #66CCFF; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;Debian 7.6.0 amd64 1 -&gt; ../../'''sdc'''1&lt;/span&gt;


Le fichier de périphérique associé au disque-Clef USB est donc
&lt;span style=&quot;background-color: #66CCFF; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;/dev/sdc&lt;/span&gt;

&lt;span style=&quot;white-space: nowrap; font-family: monospace, Courier;&quot;&gt;

 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐ 
 │                                                                                             │ 
 │  Afin de pouvoir accéder au lecteur de CD-ROM, veuillez indiquer le fichier de              │ 
 │  périphérique utilisé. En effet, les lecteurs non standrads utilisent des fichiers de       │ 
 │  périphérique non standrad tels que /dev/mcdx par exemple.                                  │ 
 │                                                                                             │ 
 │  Vous pouvez obtenir un interpréteur de commandes sur le deuxième terminal (ALT+F2) pour    │ 
 │  voir les périphériques disponibles dans /dev en tapant « ls /dev ». Vous pourrez revenir   │ 
 │  à cet écran par ALT+F1.                                                                    │ 
 │                                                                                             │ 
 │  Fichier de périphérique pour le lecteur de CD-ROM :                                        │ 
 │                                                                                             │ 
 │  &lt;span style=&quot;background-color: red; color: white;&quot;&gt;/dev/sdc_________________________________________________________________________________&lt;/span&gt;  │ 
 │                                                                                             │ 
 │                                         &lt;Continuer&gt;                                         │ 
 └─────────────────────────────────────────────────────────────────────────────────────────────┘ 
&lt;/span&gt;
Le programme d'installation a continué son travail normalement, et la machine a pu redémarrer avec son système debian.

== La remise à l'état d'origine du disque dur ==

Je vais maintenant remettre ce disque-Clef USB dans son état initial :

Je connecte mon disque USB sur la machine que j'avais utilisée pour créer le fichier de sauvegarde,&lt;br /&gt;
et je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 

Je lance la recopie du fichier
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${monSauv}&lt;/span&gt;
qui avait été sauvegardé, sur le disque
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt; :

 root@debG53SW:~# dd conv=notrunc bs=$taillBlck if=&quot;${monSauv}&quot; of=&quot;${maCible}&quot; &amp;&amp; sync
 60+0 enregistrements lus
 60+0 enregistrements écrits
 251658240 octets (252 MB) copiés, 3,83389 s, 65,6 MB/s
 root@debG53SW:~# 

Je déconnecte et reconnecte le cordon USB de mon disque.

Mon disque est maintenant dans son état initial d'avant la copie du fichier image ISO, avec toutes ses partitions originales et ses fichiers bien en place.

Après m'être assuré que tout est bien en place sur mon disque, je peux donc supprimer le fichier de sauvegarde :
  root@debG53SW:~# rm &quot;${monSauv}&quot;</text>
      <sha1>ivpqlb561699g2kfukswle0ta4i5z5y</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5857</id>
      <parentid>5856</parentid>
      <timestamp>2014-10-04T15:36:42Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* L'installation de debian */</comment>
      <text xml:space="preserve" bytes="9477">
== Introduction ==
Les performances en vitesse écriture-lecture des clef USB sont si désespérément lentes,&lt;br /&gt;
qu'on en oublie parfois qu'on avait lancé une copie d'image ISO sur une clef USB.&lt;br /&gt;
Et je ne parle même pas du temps passé à la gravure d'un CD ou DVD…

En utilisant un disque dur USB à la place d'une clef USB ou d'un CD-ROM, c'est au moins '''100 fois plus vite fait''',&lt;br /&gt;
et on peut y gagner une bonne demi-journée d'attente quand il s'agit d'une image ISO Live de plus d'un Gio.

Ici, j'utilise un disque dur SSD d'occasion de 64Gio, ce qui améliore d'autant plus les performances en vitesse écriture-lecture.


Mais je n'ai pas envie de devoir sauvegarder tous les fichiers qui y sont stokés,&lt;br /&gt;
pour ensuite, une fois que je n'ai plus besoin de cette Clef-disque USB,&lt;br /&gt;
devoir recréer chaque partition et remettre en place tous les fichiers sauvegardés.

D'autant que finalement, je n'ai besoin que de 2 ou 3 Gio maximum (si j'utilisai une image ISO autre qu'une image ISO debian netinstall de 250Mio maxi).

La solution que je propose ici consiste à '''ne sauvegarder que l'espace disque qui va être écrasé par la copie de l'image ISO'''.

== La sauvegarde ==
Je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monIso=&quot;/home/michel/Téléchargements/firmware-7.6.0-amd64-netinst.iso&quot;
  root@debG53SW:~# nbBlckIso=$((($(stat -c %s &quot;${monIso}&quot;)/$taillBlck)+1))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 


À ce stade, soyez
&lt;u&gt;'''sûr et certain'''&lt;/u&gt;
de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (sdf) associé au disque USB,

    
&lt;span style=&quot;background-color: red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;
&lt;span style=&quot;background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;background-color: red;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;background-color: #33CC33;&quot;&gt;&quot;&lt;/span&gt;
au lieu de
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em; background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt;&lt;br /&gt;
  &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;
&lt;/span&gt;



je récupère (sauvegarde) une copie de l'espace disque qui sera écrasé par la copie du fichier image ISO sur le disque :
  root@debG53SW:~# dd bs=$taillBlck count=$nbBlckIso if=&quot;${maCible}&quot; of=&quot;${monSauv}&quot; &amp;&amp; sync
  60+0 enregistrements lus
  60+0 enregistrements écrits
  251658240 octets (252 MB) copiés, 2,42913 s, 104 MB/s
  root@debG53SW:~# 


Je copie le fichier image ISO
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${monIso}&lt;/span&gt;
sur mon disque USB
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt; :
  root@debG53SW:~# dd bs=$taillBlck if=&quot;${monIso}&quot; of=&quot;${maCible}&quot; &amp;&amp; sync
  59+0 enregistrements lus
  59+0 enregistrements écrits
  247463936 octets (247 MB) copiés, 3,7607 s, 65,8 MB/s
  root@debG53SW:~# 


Mon disque est maintenant '''prêt à être utilisé comme une clef USB''' pour l'installation de debian.


Je débranche le disque USB que je viens de préparer avec ma machine, pour le connecter à la machine sur laquelle je veux installer debian,&lt;br /&gt;
et je vais la démarrer en la faisant booter sur ce disque USB.

== L'installation de debian ==

Au cours de l'installation de debian, le programme se rendra compte qu'il ne s'agit pas d'une Clef USB ou d'un lecteur de CD-ROM,&lt;br /&gt;
car il ne s'agit pas d'un
&lt;span style=&quot;background-color: #66CCFF; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; font-family: monospace, Courier; font: x-small sans-serif; font-size: 1em; border: 1px solid rgb(221, 221, 221);&quot;&gt;périphérique amovible&lt;/span&gt;.
Mais il va nous proposer d'entrer le nom du fichier de périphérique correspondant au disque-Clef USB.

Pour connaître le nom du fichier de périphérique correspondant au disque-Clef USB,&lt;br /&gt;
j'ai ouvert une deuxième console avec
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;ALT+F2&lt;/span&gt;,
pour entrer la commande :
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;ls -l /dev/disk/by-label&lt;/span&gt;

ce qui m'a permis de retrouver la partition
&lt;span style=&quot;background-color: #66CCFF; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;Debian 7.6.0 amd64 1 -&gt; ../../'''sdc'''1&lt;/span&gt;


Le fichier de périphérique associé au disque-Clef USB est donc
&lt;span style=&quot;background-color: #66CCFF; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;/dev/sdc&lt;/span&gt;

&lt;span style=&quot;white-space: nowrap; font-family: monospace, Courier;&quot;&gt;

 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐ 
 │                                                                                             │ 
 │  Afin de pouvoir accéder au lecteur de CD-ROM, veuillez indiquer le fichier de              │ 
 │  périphérique utilisé. En effet, les lecteurs non standrads utilisent des fichiers de       │ 
 │  périphérique non standrad tels que /dev/mcdx par exemple.                                  │ 
 │                                                                                             │ 
 │  Vous pouvez obtenir un interpréteur de commandes sur le deuxième terminal (ALT+F2) pour    │ 
 │  voir les périphériques disponibles dans /dev en tapant « ls /dev ». Vous pourrez revenir   │ 
 │  à cet écran par ALT+F1.                                                                    │ 
 │                                                                                             │ 
 │  Fichier de périphérique pour le lecteur de CD-ROM :                                        │ 
 │                                                                                             │ 
 │  &lt;span style=&quot;background-color: red; color: white;&quot;&gt;/dev/sdc_________________________________________________________________________________&lt;/span&gt;  │ 
 │                                                                                             │ 
 │                                         &lt;Continuer&gt;                                         │ 
 └─────────────────────────────────────────────────────────────────────────────────────────────┘ 
&lt;/span&gt;
Le programme d'installation a continué son travail normalement, et la machine a pu redémarrer avec son système debian.

== La remise à l'état d'origine du disque dur ==

Je vais maintenant remettre ce disque-Clef USB dans son état initial :

Je connecte mon disque USB sur la machine que j'avais utilisée pour créer le fichier de sauvegarde,&lt;br /&gt;
et je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 

Je lance la recopie du fichier
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${monSauv}&lt;/span&gt;
qui avait été sauvegardé, sur le disque
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt; :

 root@debG53SW:~# dd conv=notrunc bs=$taillBlck if=&quot;${monSauv}&quot; of=&quot;${maCible}&quot; &amp;&amp; sync
 60+0 enregistrements lus
 60+0 enregistrements écrits
 251658240 octets (252 MB) copiés, 3,83389 s, 65,6 MB/s
 root@debG53SW:~# 

Je déconnecte et reconnecte le cordon USB de mon disque.

Mon disque est maintenant dans son état initial d'avant la copie du fichier image ISO, avec toutes ses partitions originales et ses fichiers bien en place.

Après m'être assuré que tout est bien en place sur mon disque, je peux donc supprimer le fichier de sauvegarde :
  root@debG53SW:~# rm &quot;${monSauv}&quot;</text>
      <sha1>eb0g95h9v8dvhvcwqcsvkvym237z0d6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5858</id>
      <parentid>5857</parentid>
      <timestamp>2014-10-04T15:37:38Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* La remise à l'état d'origine du disque dur */</comment>
      <text xml:space="preserve" bytes="10377">
== Introduction ==
Les performances en vitesse écriture-lecture des clef USB sont si désespérément lentes,&lt;br /&gt;
qu'on en oublie parfois qu'on avait lancé une copie d'image ISO sur une clef USB.&lt;br /&gt;
Et je ne parle même pas du temps passé à la gravure d'un CD ou DVD…

En utilisant un disque dur USB à la place d'une clef USB ou d'un CD-ROM, c'est au moins '''100 fois plus vite fait''',&lt;br /&gt;
et on peut y gagner une bonne demi-journée d'attente quand il s'agit d'une image ISO Live de plus d'un Gio.

Ici, j'utilise un disque dur SSD d'occasion de 64Gio, ce qui améliore d'autant plus les performances en vitesse écriture-lecture.


Mais je n'ai pas envie de devoir sauvegarder tous les fichiers qui y sont stokés,&lt;br /&gt;
pour ensuite, une fois que je n'ai plus besoin de cette Clef-disque USB,&lt;br /&gt;
devoir recréer chaque partition et remettre en place tous les fichiers sauvegardés.

D'autant que finalement, je n'ai besoin que de 2 ou 3 Gio maximum (si j'utilisai une image ISO autre qu'une image ISO debian netinstall de 250Mio maxi).

La solution que je propose ici consiste à '''ne sauvegarder que l'espace disque qui va être écrasé par la copie de l'image ISO'''.

== La sauvegarde ==
Je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monIso=&quot;/home/michel/Téléchargements/firmware-7.6.0-amd64-netinst.iso&quot;
  root@debG53SW:~# nbBlckIso=$((($(stat -c %s &quot;${monIso}&quot;)/$taillBlck)+1))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 


À ce stade, soyez
&lt;u&gt;'''sûr et certain'''&lt;/u&gt;
de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (sdf) associé au disque USB,

    
&lt;span style=&quot;background-color: red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;
&lt;span style=&quot;background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;background-color: red;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;background-color: #33CC33;&quot;&gt;&quot;&lt;/span&gt;
au lieu de
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em; background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt;&lt;br /&gt;
  &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;
&lt;/span&gt;



je récupère (sauvegarde) une copie de l'espace disque qui sera écrasé par la copie du fichier image ISO sur le disque :
  root@debG53SW:~# dd bs=$taillBlck count=$nbBlckIso if=&quot;${maCible}&quot; of=&quot;${monSauv}&quot; &amp;&amp; sync
  60+0 enregistrements lus
  60+0 enregistrements écrits
  251658240 octets (252 MB) copiés, 2,42913 s, 104 MB/s
  root@debG53SW:~# 


Je copie le fichier image ISO
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${monIso}&lt;/span&gt;
sur mon disque USB
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt; :
  root@debG53SW:~# dd bs=$taillBlck if=&quot;${monIso}&quot; of=&quot;${maCible}&quot; &amp;&amp; sync
  59+0 enregistrements lus
  59+0 enregistrements écrits
  247463936 octets (247 MB) copiés, 3,7607 s, 65,8 MB/s
  root@debG53SW:~# 


Mon disque est maintenant '''prêt à être utilisé comme une clef USB''' pour l'installation de debian.


Je débranche le disque USB que je viens de préparer avec ma machine, pour le connecter à la machine sur laquelle je veux installer debian,&lt;br /&gt;
et je vais la démarrer en la faisant booter sur ce disque USB.

== L'installation de debian ==

Au cours de l'installation de debian, le programme se rendra compte qu'il ne s'agit pas d'une Clef USB ou d'un lecteur de CD-ROM,&lt;br /&gt;
car il ne s'agit pas d'un
&lt;span style=&quot;background-color: #66CCFF; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; font-family: monospace, Courier; font: x-small sans-serif; font-size: 1em; border: 1px solid rgb(221, 221, 221);&quot;&gt;périphérique amovible&lt;/span&gt;.
Mais il va nous proposer d'entrer le nom du fichier de périphérique correspondant au disque-Clef USB.

Pour connaître le nom du fichier de périphérique correspondant au disque-Clef USB,&lt;br /&gt;
j'ai ouvert une deuxième console avec
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;ALT+F2&lt;/span&gt;,
pour entrer la commande :
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;ls -l /dev/disk/by-label&lt;/span&gt;

ce qui m'a permis de retrouver la partition
&lt;span style=&quot;background-color: #66CCFF; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;Debian 7.6.0 amd64 1 -&gt; ../../'''sdc'''1&lt;/span&gt;


Le fichier de périphérique associé au disque-Clef USB est donc
&lt;span style=&quot;background-color: #66CCFF; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;/dev/sdc&lt;/span&gt;

&lt;span style=&quot;white-space: nowrap; font-family: monospace, Courier;&quot;&gt;

 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐ 
 │                                                                                             │ 
 │  Afin de pouvoir accéder au lecteur de CD-ROM, veuillez indiquer le fichier de              │ 
 │  périphérique utilisé. En effet, les lecteurs non standrads utilisent des fichiers de       │ 
 │  périphérique non standrad tels que /dev/mcdx par exemple.                                  │ 
 │                                                                                             │ 
 │  Vous pouvez obtenir un interpréteur de commandes sur le deuxième terminal (ALT+F2) pour    │ 
 │  voir les périphériques disponibles dans /dev en tapant « ls /dev ». Vous pourrez revenir   │ 
 │  à cet écran par ALT+F1.                                                                    │ 
 │                                                                                             │ 
 │  Fichier de périphérique pour le lecteur de CD-ROM :                                        │ 
 │                                                                                             │ 
 │  &lt;span style=&quot;background-color: red; color: white;&quot;&gt;/dev/sdc_________________________________________________________________________________&lt;/span&gt;  │ 
 │                                                                                             │ 
 │                                         &lt;Continuer&gt;                                         │ 
 └─────────────────────────────────────────────────────────────────────────────────────────────┘ 
&lt;/span&gt;
Le programme d'installation a continué son travail normalement, et la machine a pu redémarrer avec son système debian.

== La remise à l'état d'origine du disque dur ==

Je vais maintenant remettre ce disque-Clef USB dans son état initial :

Je connecte mon disque USB sur la machine que j'avais utilisée pour créer le fichier de sauvegarde,&lt;br /&gt;
et je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 


À ce stade, soyez
&lt;u&gt;'''sûr et certain'''&lt;/u&gt;
de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (sdf) associé au disque USB,

    
&lt;span style=&quot;background-color: red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;
&lt;span style=&quot;background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;background-color: red;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;background-color: #33CC33;&quot;&gt;&quot;&lt;/span&gt;
au lieu de
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em; background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt;&lt;br /&gt;
  &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;
&lt;/span&gt;



Je lance la recopie du fichier
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${monSauv}&lt;/span&gt;
qui avait été sauvegardé, sur le disque
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt; :

 root@debG53SW:~# dd conv=notrunc bs=$taillBlck if=&quot;${monSauv}&quot; of=&quot;${maCible}&quot; &amp;&amp; sync
 60+0 enregistrements lus
 60+0 enregistrements écrits
 251658240 octets (252 MB) copiés, 3,83389 s, 65,6 MB/s
 root@debG53SW:~# 

Je déconnecte et reconnecte le cordon USB de mon disque.

Mon disque est maintenant dans son état initial d'avant la copie du fichier image ISO, avec toutes ses partitions originales et ses fichiers bien en place.

Après m'être assuré que tout est bien en place sur mon disque, je peux donc supprimer le fichier de sauvegarde :
  root@debG53SW:~# rm &quot;${monSauv}&quot;</text>
      <sha1>03x03zrnk6yjuzoto0bkcz062nak3qo</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5859</id>
      <parentid>5858</parentid>
      <timestamp>2014-10-05T08:10:51Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* La remise à l'état d'origine du disque dur */</comment>
      <text xml:space="preserve" bytes="10348">
== Introduction ==
Les performances en vitesse écriture-lecture des clef USB sont si désespérément lentes,&lt;br /&gt;
qu'on en oublie parfois qu'on avait lancé une copie d'image ISO sur une clef USB.&lt;br /&gt;
Et je ne parle même pas du temps passé à la gravure d'un CD ou DVD…

En utilisant un disque dur USB à la place d'une clef USB ou d'un CD-ROM, c'est au moins '''100 fois plus vite fait''',&lt;br /&gt;
et on peut y gagner une bonne demi-journée d'attente quand il s'agit d'une image ISO Live de plus d'un Gio.

Ici, j'utilise un disque dur SSD d'occasion de 64Gio, ce qui améliore d'autant plus les performances en vitesse écriture-lecture.


Mais je n'ai pas envie de devoir sauvegarder tous les fichiers qui y sont stokés,&lt;br /&gt;
pour ensuite, une fois que je n'ai plus besoin de cette Clef-disque USB,&lt;br /&gt;
devoir recréer chaque partition et remettre en place tous les fichiers sauvegardés.

D'autant que finalement, je n'ai besoin que de 2 ou 3 Gio maximum (si j'utilisai une image ISO autre qu'une image ISO debian netinstall de 250Mio maxi).

La solution que je propose ici consiste à '''ne sauvegarder que l'espace disque qui va être écrasé par la copie de l'image ISO'''.

== La sauvegarde ==
Je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monIso=&quot;/home/michel/Téléchargements/firmware-7.6.0-amd64-netinst.iso&quot;
  root@debG53SW:~# nbBlckIso=$((($(stat -c %s &quot;${monIso}&quot;)/$taillBlck)+1))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 


À ce stade, soyez
&lt;u&gt;'''sûr et certain'''&lt;/u&gt;
de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (sdf) associé au disque USB,

    
&lt;span style=&quot;background-color: red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;
&lt;span style=&quot;background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;background-color: red;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;background-color: #33CC33;&quot;&gt;&quot;&lt;/span&gt;
au lieu de
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em; background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt;&lt;br /&gt;
  &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;
&lt;/span&gt;



je récupère (sauvegarde) une copie de l'espace disque qui sera écrasé par la copie du fichier image ISO sur le disque :
  root@debG53SW:~# dd bs=$taillBlck count=$nbBlckIso if=&quot;${maCible}&quot; of=&quot;${monSauv}&quot; &amp;&amp; sync
  60+0 enregistrements lus
  60+0 enregistrements écrits
  251658240 octets (252 MB) copiés, 2,42913 s, 104 MB/s
  root@debG53SW:~# 


Je copie le fichier image ISO
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${monIso}&lt;/span&gt;
sur mon disque USB
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt; :
  root@debG53SW:~# dd bs=$taillBlck if=&quot;${monIso}&quot; of=&quot;${maCible}&quot; &amp;&amp; sync
  59+0 enregistrements lus
  59+0 enregistrements écrits
  247463936 octets (247 MB) copiés, 3,7607 s, 65,8 MB/s
  root@debG53SW:~# 


Mon disque est maintenant '''prêt à être utilisé comme une clef USB''' pour l'installation de debian.


Je débranche le disque USB que je viens de préparer avec ma machine, pour le connecter à la machine sur laquelle je veux installer debian,&lt;br /&gt;
et je vais la démarrer en la faisant booter sur ce disque USB.

== L'installation de debian ==

Au cours de l'installation de debian, le programme se rendra compte qu'il ne s'agit pas d'une Clef USB ou d'un lecteur de CD-ROM,&lt;br /&gt;
car il ne s'agit pas d'un
&lt;span style=&quot;background-color: #66CCFF; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; font-family: monospace, Courier; font: x-small sans-serif; font-size: 1em; border: 1px solid rgb(221, 221, 221);&quot;&gt;périphérique amovible&lt;/span&gt;.
Mais il va nous proposer d'entrer le nom du fichier de périphérique correspondant au disque-Clef USB.

Pour connaître le nom du fichier de périphérique correspondant au disque-Clef USB,&lt;br /&gt;
j'ai ouvert une deuxième console avec
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;ALT+F2&lt;/span&gt;,
pour entrer la commande :
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;ls -l /dev/disk/by-label&lt;/span&gt;

ce qui m'a permis de retrouver la partition
&lt;span style=&quot;background-color: #66CCFF; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;Debian 7.6.0 amd64 1 -&gt; ../../'''sdc'''1&lt;/span&gt;


Le fichier de périphérique associé au disque-Clef USB est donc
&lt;span style=&quot;background-color: #66CCFF; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;/dev/sdc&lt;/span&gt;

&lt;span style=&quot;white-space: nowrap; font-family: monospace, Courier;&quot;&gt;

 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐ 
 │                                                                                             │ 
 │  Afin de pouvoir accéder au lecteur de CD-ROM, veuillez indiquer le fichier de              │ 
 │  périphérique utilisé. En effet, les lecteurs non standrads utilisent des fichiers de       │ 
 │  périphérique non standrad tels que /dev/mcdx par exemple.                                  │ 
 │                                                                                             │ 
 │  Vous pouvez obtenir un interpréteur de commandes sur le deuxième terminal (ALT+F2) pour    │ 
 │  voir les périphériques disponibles dans /dev en tapant « ls /dev ». Vous pourrez revenir   │ 
 │  à cet écran par ALT+F1.                                                                    │ 
 │                                                                                             │ 
 │  Fichier de périphérique pour le lecteur de CD-ROM :                                        │ 
 │                                                                                             │ 
 │  &lt;span style=&quot;background-color: red; color: white;&quot;&gt;/dev/sdc_________________________________________________________________________________&lt;/span&gt;  │ 
 │                                                                                             │ 
 │                                         &lt;Continuer&gt;                                         │ 
 └─────────────────────────────────────────────────────────────────────────────────────────────┘ 
&lt;/span&gt;
Le programme d'installation a continué son travail normalement, et la machine a pu redémarrer avec son système debian.

== La remise à l'état d'origine du disque dur ==

Je vais maintenant remettre ce disque-Clef USB dans son état initial :

Je connecte mon disque USB sur la machine que j'avais utilisée pour créer le fichier de sauvegarde,&lt;br /&gt;
et je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 


À ce stade, soyez
&lt;u&gt;'''sûr et certain'''&lt;/u&gt;
de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (sdf) associé au disque USB,

    
&lt;span style=&quot;background-color: red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;
&lt;span style=&quot;background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;background-color: red;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;background-color: #33CC33;&quot;&gt;&quot;&lt;/span&gt;
au lieu de
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em; background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt;&lt;br /&gt;
  &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;
&lt;/span&gt;



Je lance la recopie du fichier
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${monSauv}&lt;/span&gt;
sur le disque
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt; :

 root@debG53SW:~# dd conv=notrunc bs=$taillBlck if=&quot;${monSauv}&quot; of=&quot;${maCible}&quot; &amp;&amp; sync
 60+0 enregistrements lus
 60+0 enregistrements écrits
 251658240 octets (252 MB) copiés, 3,83389 s, 65,6 MB/s
 root@debG53SW:~# 

Je déconnecte et reconnecte le cordon USB de mon disque.

Mon disque est maintenant dans son état initial d'avant la copie du fichier image ISO, avec toutes ses partitions originales et ses fichiers bien en place.

Après m'être assuré que tout est bien en place sur mon disque, je peux donc supprimer le fichier de sauvegarde :
  root@debG53SW:~# rm &quot;${monSauv}&quot;</text>
      <sha1>67d373ucok68rtsw1kdwv91g700nj82</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5860</id>
      <parentid>5859</parentid>
      <timestamp>2014-10-08T12:59:13Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Introduction */ liens + ortho. + reformulation</comment>
      <text xml:space="preserve" bytes="10630">
== Introduction ==
Les performances en vitesse écriture-lecture des clef USB sont si désespérément lentes,&lt;br /&gt;
qu'on en oublie parfois qu'on avait lancé une copie d'image ISO sur une clef USB.&lt;br /&gt;
Et je ne parle même pas du temps passé à la gravure d'un CD ou DVD…

En utilisant un disque dur USB à la place d'une clef USB ou d'un CD-ROM, cette préparation est '''100 fois''' plus vite faite,&lt;br /&gt;
et on peut y gagner une bonne demi-journée d'attente quand il s'agit d'une image [https://www.debian.org/CD/live/index.fr.html ISO Live] de plus d'un Gio.

Ici, j'utilise un disque dur SSD, ce qui améliore d'autant plus les performances en vitesse écriture-lecture.


Mais je n'ai pas envie de devoir sauvegarder tous les fichiers qui y sont stockés,&lt;br /&gt;
pour ensuite, une fois que je n'ai plus besoin de cette Clef-disque USB,&lt;br /&gt;
être obligé de recréer chaque partition  pour y remettre en place tous les fichiers sauvegardés.

D'autant que finalement, je n'ai besoin que de 2 ou 3 Gio au grand maximum (si j'utilisai une image ISO autre qu'une image ISO [https://www.debian.org/CD/netinst/ debian netinstall] de 250Mio maxi).

La solution que je propose ici consiste à '''ne sauvegarder que l'espace disque qui va être écrasé par la copie de l'image ISO'''.


&lt;u&gt;'''NOTE :'''&lt;/u&gt; Bien sûr, cette méthode fonctionne pour toutes les image [http://linuxfr.org/users/tankey/journaux/iso-hybrides ISO Hybrides] de toutes les distribution.&lt;br /&gt;

== La sauvegarde ==
Je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monIso=&quot;/home/michel/Téléchargements/firmware-7.6.0-amd64-netinst.iso&quot;
  root@debG53SW:~# nbBlckIso=$((($(stat -c %s &quot;${monIso}&quot;)/$taillBlck)+1))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 


À ce stade, soyez
&lt;u&gt;'''sûr et certain'''&lt;/u&gt;
de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (sdf) associé au disque USB,

    
&lt;span style=&quot;background-color: red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;
&lt;span style=&quot;background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;background-color: red;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;background-color: #33CC33;&quot;&gt;&quot;&lt;/span&gt;
au lieu de
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em; background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt;&lt;br /&gt;
  &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;
&lt;/span&gt;



je récupère (sauvegarde) une copie de l'espace disque qui sera écrasé par la copie du fichier image ISO sur le disque :
  root@debG53SW:~# dd bs=$taillBlck count=$nbBlckIso if=&quot;${maCible}&quot; of=&quot;${monSauv}&quot; &amp;&amp; sync
  60+0 enregistrements lus
  60+0 enregistrements écrits
  251658240 octets (252 MB) copiés, 2,42913 s, 104 MB/s
  root@debG53SW:~# 


Je copie le fichier image ISO
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${monIso}&lt;/span&gt;
sur mon disque USB
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt; :
  root@debG53SW:~# dd bs=$taillBlck if=&quot;${monIso}&quot; of=&quot;${maCible}&quot; &amp;&amp; sync
  59+0 enregistrements lus
  59+0 enregistrements écrits
  247463936 octets (247 MB) copiés, 3,7607 s, 65,8 MB/s
  root@debG53SW:~# 


Mon disque est maintenant '''prêt à être utilisé comme une clef USB''' pour l'installation de debian.


Je débranche le disque USB que je viens de préparer avec ma machine, pour le connecter à la machine sur laquelle je veux installer debian,&lt;br /&gt;
et je vais la démarrer en la faisant booter sur ce disque USB.

== L'installation de debian ==

Au cours de l'installation de debian, le programme se rendra compte qu'il ne s'agit pas d'une Clef USB ou d'un lecteur de CD-ROM,&lt;br /&gt;
car il ne s'agit pas d'un
&lt;span style=&quot;background-color: #66CCFF; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; font-family: monospace, Courier; font: x-small sans-serif; font-size: 1em; border: 1px solid rgb(221, 221, 221);&quot;&gt;périphérique amovible&lt;/span&gt;.
Mais il va nous proposer d'entrer le nom du fichier de périphérique correspondant au disque-Clef USB.

Pour connaître le nom du fichier de périphérique correspondant au disque-Clef USB,&lt;br /&gt;
j'ai ouvert une deuxième console avec
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;ALT+F2&lt;/span&gt;,
pour entrer la commande :
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;ls -l /dev/disk/by-label&lt;/span&gt;

ce qui m'a permis de retrouver la partition
&lt;span style=&quot;background-color: #66CCFF; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;Debian 7.6.0 amd64 1 -&gt; ../../'''sdc'''1&lt;/span&gt;


Le fichier de périphérique associé au disque-Clef USB est donc
&lt;span style=&quot;background-color: #66CCFF; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;/dev/sdc&lt;/span&gt;

&lt;span style=&quot;white-space: nowrap; font-family: monospace, Courier;&quot;&gt;

 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐ 
 │                                                                                             │ 
 │  Afin de pouvoir accéder au lecteur de CD-ROM, veuillez indiquer le fichier de              │ 
 │  périphérique utilisé. En effet, les lecteurs non standrads utilisent des fichiers de       │ 
 │  périphérique non standrad tels que /dev/mcdx par exemple.                                  │ 
 │                                                                                             │ 
 │  Vous pouvez obtenir un interpréteur de commandes sur le deuxième terminal (ALT+F2) pour    │ 
 │  voir les périphériques disponibles dans /dev en tapant « ls /dev ». Vous pourrez revenir   │ 
 │  à cet écran par ALT+F1.                                                                    │ 
 │                                                                                             │ 
 │  Fichier de périphérique pour le lecteur de CD-ROM :                                        │ 
 │                                                                                             │ 
 │  &lt;span style=&quot;background-color: red; color: white;&quot;&gt;/dev/sdc_________________________________________________________________________________&lt;/span&gt;  │ 
 │                                                                                             │ 
 │                                         &lt;Continuer&gt;                                         │ 
 └─────────────────────────────────────────────────────────────────────────────────────────────┘ 
&lt;/span&gt;
Le programme d'installation a continué son travail normalement, et la machine a pu redémarrer avec son système debian.

== La remise à l'état d'origine du disque dur ==

Je vais maintenant remettre ce disque-Clef USB dans son état initial :

Je connecte mon disque USB sur la machine que j'avais utilisée pour créer le fichier de sauvegarde,&lt;br /&gt;
et je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 


À ce stade, soyez
&lt;u&gt;'''sûr et certain'''&lt;/u&gt;
de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (sdf) associé au disque USB,

    
&lt;span style=&quot;background-color: red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;
&lt;span style=&quot;background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;background-color: red;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;background-color: #33CC33;&quot;&gt;&quot;&lt;/span&gt;
au lieu de
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em; background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt;&lt;br /&gt;
  &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;
&lt;/span&gt;



Je lance la recopie du fichier
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${monSauv}&lt;/span&gt;
sur le disque
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt; :

 root@debG53SW:~# dd conv=notrunc bs=$taillBlck if=&quot;${monSauv}&quot; of=&quot;${maCible}&quot; &amp;&amp; sync
 60+0 enregistrements lus
 60+0 enregistrements écrits
 251658240 octets (252 MB) copiés, 3,83389 s, 65,6 MB/s
 root@debG53SW:~# 

Je déconnecte et reconnecte le cordon USB de mon disque.

Mon disque est maintenant dans son état initial d'avant la copie du fichier image ISO, avec toutes ses partitions originales et ses fichiers bien en place.

Après m'être assuré que tout est bien en place sur mon disque, je peux donc supprimer le fichier de sauvegarde :
  root@debG53SW:~# rm &quot;${monSauv}&quot;</text>
      <sha1>oavk6negthilr9in5euxhz2d2dnjo62</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5861</id>
      <parentid>5860</parentid>
      <timestamp>2014-10-08T13:04:43Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* La sauvegarde */</comment>
      <text xml:space="preserve" bytes="10650">
== Introduction ==
Les performances en vitesse écriture-lecture des clef USB sont si désespérément lentes,&lt;br /&gt;
qu'on en oublie parfois qu'on avait lancé une copie d'image ISO sur une clef USB.&lt;br /&gt;
Et je ne parle même pas du temps passé à la gravure d'un CD ou DVD…

En utilisant un disque dur USB à la place d'une clef USB ou d'un CD-ROM, cette préparation est '''100 fois''' plus vite faite,&lt;br /&gt;
et on peut y gagner une bonne demi-journée d'attente quand il s'agit d'une image [https://www.debian.org/CD/live/index.fr.html ISO Live] de plus d'un Gio.

Ici, j'utilise un disque dur SSD, ce qui améliore d'autant plus les performances en vitesse écriture-lecture.


Mais je n'ai pas envie de devoir sauvegarder tous les fichiers qui y sont stockés,&lt;br /&gt;
pour ensuite, une fois que je n'ai plus besoin de cette Clef-disque USB,&lt;br /&gt;
être obligé de recréer chaque partition  pour y remettre en place tous les fichiers sauvegardés.

D'autant que finalement, je n'ai besoin que de 2 ou 3 Gio au grand maximum (si j'utilisai une image ISO autre qu'une image ISO [https://www.debian.org/CD/netinst/ debian netinstall] de 250Mio maxi).

La solution que je propose ici consiste à '''ne sauvegarder que l'espace disque qui va être écrasé par la copie de l'image ISO'''.


&lt;u&gt;'''NOTE :'''&lt;/u&gt; Bien sûr, cette méthode fonctionne pour toutes les image [http://linuxfr.org/users/tankey/journaux/iso-hybrides ISO Hybrides] de toutes les distribution.&lt;br /&gt;

== La sauvegarde ==
Je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monIso=&quot;/home/michel/Téléchargements/firmware-7.6.0-amd64-netinst.iso&quot;
  root@debG53SW:~# nbBlckIso=$((($(stat -c %s &quot;${monIso}&quot;)/$taillBlck)+1))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 


À ce stade, soyez
&lt;u&gt;'''sûr et certain'''&lt;/u&gt;
de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (dans ce tuto : /dev/sdf) associé au disque USB,

    
&lt;span style=&quot;background-color: red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;
&lt;span style=&quot;background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;background-color: red;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;background-color: #33CC33;&quot;&gt;&quot;&lt;/span&gt;
au lieu de
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em; background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt;&lt;br /&gt;
  &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;
&lt;/span&gt;



je récupère (sauvegarde) une copie de l'espace disque qui sera écrasé par la copie du fichier image ISO sur le disque :
  root@debG53SW:~# dd bs=$taillBlck count=$nbBlckIso if=&quot;${maCible}&quot; of=&quot;${monSauv}&quot; &amp;&amp; sync
  60+0 enregistrements lus
  60+0 enregistrements écrits
  251658240 octets (252 MB) copiés, 2,42913 s, 104 MB/s
  root@debG53SW:~# 


Je copie le fichier image ISO
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${monIso}&lt;/span&gt;
sur mon disque USB
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt; :
  root@debG53SW:~# dd bs=$taillBlck if=&quot;${monIso}&quot; of=&quot;${maCible}&quot; &amp;&amp; sync
  59+0 enregistrements lus
  59+0 enregistrements écrits
  247463936 octets (247 MB) copiés, 3,7607 s, 65,8 MB/s
  root@debG53SW:~# 


Mon disque est maintenant '''prêt à être utilisé comme une clef USB''' pour l'installation de debian.


Je débranche le disque USB que je viens de préparer avec ma machine, pour le connecter à la machine sur laquelle je veux installer debian,&lt;br /&gt;
et je vais la démarrer en la faisant booter sur ce disque USB.

== L'installation de debian ==

Au cours de l'installation de debian, le programme se rendra compte qu'il ne s'agit pas d'une Clef USB ou d'un lecteur de CD-ROM,&lt;br /&gt;
car il ne s'agit pas d'un
&lt;span style=&quot;background-color: #66CCFF; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; font-family: monospace, Courier; font: x-small sans-serif; font-size: 1em; border: 1px solid rgb(221, 221, 221);&quot;&gt;périphérique amovible&lt;/span&gt;.
Mais il va nous proposer d'entrer le nom du fichier de périphérique correspondant au disque-Clef USB.

Pour connaître le nom du fichier de périphérique correspondant au disque-Clef USB,&lt;br /&gt;
j'ai ouvert une deuxième console avec
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;ALT+F2&lt;/span&gt;,
pour entrer la commande :
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;ls -l /dev/disk/by-label&lt;/span&gt;

ce qui m'a permis de retrouver la partition
&lt;span style=&quot;background-color: #66CCFF; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;Debian 7.6.0 amd64 1 -&gt; ../../'''sdc'''1&lt;/span&gt;


Le fichier de périphérique associé au disque-Clef USB est donc
&lt;span style=&quot;background-color: #66CCFF; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;/dev/sdc&lt;/span&gt;

&lt;span style=&quot;white-space: nowrap; font-family: monospace, Courier;&quot;&gt;

 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐ 
 │                                                                                             │ 
 │  Afin de pouvoir accéder au lecteur de CD-ROM, veuillez indiquer le fichier de              │ 
 │  périphérique utilisé. En effet, les lecteurs non standrads utilisent des fichiers de       │ 
 │  périphérique non standrad tels que /dev/mcdx par exemple.                                  │ 
 │                                                                                             │ 
 │  Vous pouvez obtenir un interpréteur de commandes sur le deuxième terminal (ALT+F2) pour    │ 
 │  voir les périphériques disponibles dans /dev en tapant « ls /dev ». Vous pourrez revenir   │ 
 │  à cet écran par ALT+F1.                                                                    │ 
 │                                                                                             │ 
 │  Fichier de périphérique pour le lecteur de CD-ROM :                                        │ 
 │                                                                                             │ 
 │  &lt;span style=&quot;background-color: red; color: white;&quot;&gt;/dev/sdc_________________________________________________________________________________&lt;/span&gt;  │ 
 │                                                                                             │ 
 │                                         &lt;Continuer&gt;                                         │ 
 └─────────────────────────────────────────────────────────────────────────────────────────────┘ 
&lt;/span&gt;
Le programme d'installation a continué son travail normalement, et la machine a pu redémarrer avec son système debian.

== La remise à l'état d'origine du disque dur ==

Je vais maintenant remettre ce disque-Clef USB dans son état initial :

Je connecte mon disque USB sur la machine que j'avais utilisée pour créer le fichier de sauvegarde,&lt;br /&gt;
et je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 


À ce stade, soyez
&lt;u&gt;'''sûr et certain'''&lt;/u&gt;
de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (sdf) associé au disque USB,

    
&lt;span style=&quot;background-color: red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;
&lt;span style=&quot;background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;background-color: red;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;background-color: #33CC33;&quot;&gt;&quot;&lt;/span&gt;
au lieu de
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em; background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt;&lt;br /&gt;
  &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;
&lt;/span&gt;



Je lance la recopie du fichier
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${monSauv}&lt;/span&gt;
sur le disque
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt; :

 root@debG53SW:~# dd conv=notrunc bs=$taillBlck if=&quot;${monSauv}&quot; of=&quot;${maCible}&quot; &amp;&amp; sync
 60+0 enregistrements lus
 60+0 enregistrements écrits
 251658240 octets (252 MB) copiés, 3,83389 s, 65,6 MB/s
 root@debG53SW:~# 

Je déconnecte et reconnecte le cordon USB de mon disque.

Mon disque est maintenant dans son état initial d'avant la copie du fichier image ISO, avec toutes ses partitions originales et ses fichiers bien en place.

Après m'être assuré que tout est bien en place sur mon disque, je peux donc supprimer le fichier de sauvegarde :
  root@debG53SW:~# rm &quot;${monSauv}&quot;</text>
      <sha1>nspijkf6msvrn9zphyknghujpgnsnri</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5862</id>
      <parentid>5861</parentid>
      <timestamp>2014-10-08T13:05:17Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* La remise à l'état d'origine du disque dur */</comment>
      <text xml:space="preserve" bytes="10665">
== Introduction ==
Les performances en vitesse écriture-lecture des clef USB sont si désespérément lentes,&lt;br /&gt;
qu'on en oublie parfois qu'on avait lancé une copie d'image ISO sur une clef USB.&lt;br /&gt;
Et je ne parle même pas du temps passé à la gravure d'un CD ou DVD…

En utilisant un disque dur USB à la place d'une clef USB ou d'un CD-ROM, cette préparation est '''100 fois''' plus vite faite,&lt;br /&gt;
et on peut y gagner une bonne demi-journée d'attente quand il s'agit d'une image [https://www.debian.org/CD/live/index.fr.html ISO Live] de plus d'un Gio.

Ici, j'utilise un disque dur SSD, ce qui améliore d'autant plus les performances en vitesse écriture-lecture.


Mais je n'ai pas envie de devoir sauvegarder tous les fichiers qui y sont stockés,&lt;br /&gt;
pour ensuite, une fois que je n'ai plus besoin de cette Clef-disque USB,&lt;br /&gt;
être obligé de recréer chaque partition  pour y remettre en place tous les fichiers sauvegardés.

D'autant que finalement, je n'ai besoin que de 2 ou 3 Gio au grand maximum (si j'utilisai une image ISO autre qu'une image ISO [https://www.debian.org/CD/netinst/ debian netinstall] de 250Mio maxi).

La solution que je propose ici consiste à '''ne sauvegarder que l'espace disque qui va être écrasé par la copie de l'image ISO'''.


&lt;u&gt;'''NOTE :'''&lt;/u&gt; Bien sûr, cette méthode fonctionne pour toutes les image [http://linuxfr.org/users/tankey/journaux/iso-hybrides ISO Hybrides] de toutes les distribution.&lt;br /&gt;

== La sauvegarde ==
Je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monIso=&quot;/home/michel/Téléchargements/firmware-7.6.0-amd64-netinst.iso&quot;
  root@debG53SW:~# nbBlckIso=$((($(stat -c %s &quot;${monIso}&quot;)/$taillBlck)+1))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 


À ce stade, soyez
&lt;u&gt;'''sûr et certain'''&lt;/u&gt;
de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (dans ce tuto : /dev/sdf) associé au disque USB,

    
&lt;span style=&quot;background-color: red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;
&lt;span style=&quot;background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;background-color: red;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;background-color: #33CC33;&quot;&gt;&quot;&lt;/span&gt;
au lieu de
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em; background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt;&lt;br /&gt;
  &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;
&lt;/span&gt;



je récupère (sauvegarde) une copie de l'espace disque qui sera écrasé par la copie du fichier image ISO sur le disque :
  root@debG53SW:~# dd bs=$taillBlck count=$nbBlckIso if=&quot;${maCible}&quot; of=&quot;${monSauv}&quot; &amp;&amp; sync
  60+0 enregistrements lus
  60+0 enregistrements écrits
  251658240 octets (252 MB) copiés, 2,42913 s, 104 MB/s
  root@debG53SW:~# 


Je copie le fichier image ISO
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${monIso}&lt;/span&gt;
sur mon disque USB
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt; :
  root@debG53SW:~# dd bs=$taillBlck if=&quot;${monIso}&quot; of=&quot;${maCible}&quot; &amp;&amp; sync
  59+0 enregistrements lus
  59+0 enregistrements écrits
  247463936 octets (247 MB) copiés, 3,7607 s, 65,8 MB/s
  root@debG53SW:~# 


Mon disque est maintenant '''prêt à être utilisé comme une clef USB''' pour l'installation de debian.


Je débranche le disque USB que je viens de préparer avec ma machine, pour le connecter à la machine sur laquelle je veux installer debian,&lt;br /&gt;
et je vais la démarrer en la faisant booter sur ce disque USB.

== L'installation de debian ==

Au cours de l'installation de debian, le programme se rendra compte qu'il ne s'agit pas d'une Clef USB ou d'un lecteur de CD-ROM,&lt;br /&gt;
car il ne s'agit pas d'un
&lt;span style=&quot;background-color: #66CCFF; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; font-family: monospace, Courier; font: x-small sans-serif; font-size: 1em; border: 1px solid rgb(221, 221, 221);&quot;&gt;périphérique amovible&lt;/span&gt;.
Mais il va nous proposer d'entrer le nom du fichier de périphérique correspondant au disque-Clef USB.

Pour connaître le nom du fichier de périphérique correspondant au disque-Clef USB,&lt;br /&gt;
j'ai ouvert une deuxième console avec
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;ALT+F2&lt;/span&gt;,
pour entrer la commande :
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;ls -l /dev/disk/by-label&lt;/span&gt;

ce qui m'a permis de retrouver la partition
&lt;span style=&quot;background-color: #66CCFF; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;Debian 7.6.0 amd64 1 -&gt; ../../'''sdc'''1&lt;/span&gt;


Le fichier de périphérique associé au disque-Clef USB est donc
&lt;span style=&quot;background-color: #66CCFF; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;/dev/sdc&lt;/span&gt;

&lt;span style=&quot;white-space: nowrap; font-family: monospace, Courier;&quot;&gt;

 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐ 
 │                                                                                             │ 
 │  Afin de pouvoir accéder au lecteur de CD-ROM, veuillez indiquer le fichier de              │ 
 │  périphérique utilisé. En effet, les lecteurs non standrads utilisent des fichiers de       │ 
 │  périphérique non standrad tels que /dev/mcdx par exemple.                                  │ 
 │                                                                                             │ 
 │  Vous pouvez obtenir un interpréteur de commandes sur le deuxième terminal (ALT+F2) pour    │ 
 │  voir les périphériques disponibles dans /dev en tapant « ls /dev ». Vous pourrez revenir   │ 
 │  à cet écran par ALT+F1.                                                                    │ 
 │                                                                                             │ 
 │  Fichier de périphérique pour le lecteur de CD-ROM :                                        │ 
 │                                                                                             │ 
 │  &lt;span style=&quot;background-color: red; color: white;&quot;&gt;/dev/sdc_________________________________________________________________________________&lt;/span&gt;  │ 
 │                                                                                             │ 
 │                                         &lt;Continuer&gt;                                         │ 
 └─────────────────────────────────────────────────────────────────────────────────────────────┘ 
&lt;/span&gt;
Le programme d'installation a continué son travail normalement, et la machine a pu redémarrer avec son système debian.

== La remise à l'état d'origine du disque dur ==

Je vais maintenant remettre ce disque-Clef USB dans son état initial :

Je connecte mon disque USB sur la machine que j'avais utilisée pour créer le fichier de sauvegarde,&lt;br /&gt;
et je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 


À ce stade, soyez
&lt;u&gt;'''sûr et certain'''&lt;/u&gt;
de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (dans ce tuto : sdf) associé au disque USB,

    
&lt;span style=&quot;background-color: red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;
&lt;span style=&quot;background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;background-color: red;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;background-color: #33CC33;&quot;&gt;&quot;&lt;/span&gt;
au lieu de
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em; background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt;&lt;br /&gt;
  &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;
&lt;/span&gt;



Je lance la recopie du fichier
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${monSauv}&lt;/span&gt;
sur le disque
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt; :

 root@debG53SW:~# dd conv=notrunc bs=$taillBlck if=&quot;${monSauv}&quot; of=&quot;${maCible}&quot; &amp;&amp; sync
 60+0 enregistrements lus
 60+0 enregistrements écrits
 251658240 octets (252 MB) copiés, 3,83389 s, 65,6 MB/s
 root@debG53SW:~# 

Je déconnecte et reconnecte le cordon USB de mon disque.

Mon disque est maintenant dans son état initial d'avant la copie du fichier image ISO, avec toutes ses partitions originales et ses fichiers bien en place.

Après m'être assuré que tout est bien en place sur mon disque, je peux donc supprimer le fichier de sauvegarde :
  root@debG53SW:~# rm &quot;${monSauv}&quot;</text>
      <sha1>mdeju2d0la9vzlnels8k7obkdt0ts8e</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5863</id>
      <parentid>5862</parentid>
      <timestamp>2014-10-08T13:06:08Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Introduction */</comment>
      <text xml:space="preserve" bytes="10671">
== Introduction ==
Les performances en vitesse écriture-lecture des clef USB sont si désespérément lentes,&lt;br /&gt;
qu'on en oublie parfois qu'on avait lancé une copie d'image ISO sur une clef USB.&lt;br /&gt;
Et je ne parle même pas du temps passé à la gravure d'un CD ou DVD…

En utilisant un disque dur USB à la place d'une clef USB ou d'un CD-ROM, cette préparation est '''100 fois''' plus vite faite,&lt;br /&gt;
et on peut y gagner une bonne demi-journée d'attente quand il s'agit d'une image [https://www.debian.org/CD/live/index.fr.html ISO Live] de plus d'un Gio.

Ici, j'utilise un disque dur SSD, ce qui améliore d'autant plus les performances en vitesse écriture-lecture.


Mais je n'ai pas envie de devoir sauvegarder tous les fichiers qui y sont stockés,&lt;br /&gt;
pour ensuite, une fois que je n'ai plus besoin de cette Clef-disque USB,&lt;br /&gt;
être obligé de recréer chaque partition  pour y remettre en place tous les fichiers sauvegardés.

D'autant que finalement, je n'ai besoin que de 2 ou 3 Gio au grand maximum (si j'utilisai une image ISO autre qu'une image ISO [https://www.debian.org/CD/netinst/ debian netinstall] de 250Mio maxi).

La solution que je propose ici consiste à '''ne sauvegarder que l'espace disque qui va être écrasé par la copie de l'image ISO'''.


&lt;u&gt;'''NOTE :'''&lt;/u&gt; Bien sûr, cette méthode fonctionne aussi pour toutes les image [http://linuxfr.org/users/tankey/journaux/iso-hybrides ISO Hybrides] de toutes les distribution.&lt;br /&gt;

== La sauvegarde ==
Je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monIso=&quot;/home/michel/Téléchargements/firmware-7.6.0-amd64-netinst.iso&quot;
  root@debG53SW:~# nbBlckIso=$((($(stat -c %s &quot;${monIso}&quot;)/$taillBlck)+1))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 


À ce stade, soyez
&lt;u&gt;'''sûr et certain'''&lt;/u&gt;
de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (dans ce tuto : /dev/sdf) associé au disque USB,

    
&lt;span style=&quot;background-color: red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;
&lt;span style=&quot;background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;background-color: red;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;background-color: #33CC33;&quot;&gt;&quot;&lt;/span&gt;
au lieu de
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em; background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt;&lt;br /&gt;
  &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;
&lt;/span&gt;



je récupère (sauvegarde) une copie de l'espace disque qui sera écrasé par la copie du fichier image ISO sur le disque :
  root@debG53SW:~# dd bs=$taillBlck count=$nbBlckIso if=&quot;${maCible}&quot; of=&quot;${monSauv}&quot; &amp;&amp; sync
  60+0 enregistrements lus
  60+0 enregistrements écrits
  251658240 octets (252 MB) copiés, 2,42913 s, 104 MB/s
  root@debG53SW:~# 


Je copie le fichier image ISO
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${monIso}&lt;/span&gt;
sur mon disque USB
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt; :
  root@debG53SW:~# dd bs=$taillBlck if=&quot;${monIso}&quot; of=&quot;${maCible}&quot; &amp;&amp; sync
  59+0 enregistrements lus
  59+0 enregistrements écrits
  247463936 octets (247 MB) copiés, 3,7607 s, 65,8 MB/s
  root@debG53SW:~# 


Mon disque est maintenant '''prêt à être utilisé comme une clef USB''' pour l'installation de debian.


Je débranche le disque USB que je viens de préparer avec ma machine, pour le connecter à la machine sur laquelle je veux installer debian,&lt;br /&gt;
et je vais la démarrer en la faisant booter sur ce disque USB.

== L'installation de debian ==

Au cours de l'installation de debian, le programme se rendra compte qu'il ne s'agit pas d'une Clef USB ou d'un lecteur de CD-ROM,&lt;br /&gt;
car il ne s'agit pas d'un
&lt;span style=&quot;background-color: #66CCFF; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; font-family: monospace, Courier; font: x-small sans-serif; font-size: 1em; border: 1px solid rgb(221, 221, 221);&quot;&gt;périphérique amovible&lt;/span&gt;.
Mais il va nous proposer d'entrer le nom du fichier de périphérique correspondant au disque-Clef USB.

Pour connaître le nom du fichier de périphérique correspondant au disque-Clef USB,&lt;br /&gt;
j'ai ouvert une deuxième console avec
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;ALT+F2&lt;/span&gt;,
pour entrer la commande :
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;ls -l /dev/disk/by-label&lt;/span&gt;

ce qui m'a permis de retrouver la partition
&lt;span style=&quot;background-color: #66CCFF; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;Debian 7.6.0 amd64 1 -&gt; ../../'''sdc'''1&lt;/span&gt;


Le fichier de périphérique associé au disque-Clef USB est donc
&lt;span style=&quot;background-color: #66CCFF; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;/dev/sdc&lt;/span&gt;

&lt;span style=&quot;white-space: nowrap; font-family: monospace, Courier;&quot;&gt;

 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐ 
 │                                                                                             │ 
 │  Afin de pouvoir accéder au lecteur de CD-ROM, veuillez indiquer le fichier de              │ 
 │  périphérique utilisé. En effet, les lecteurs non standrads utilisent des fichiers de       │ 
 │  périphérique non standrad tels que /dev/mcdx par exemple.                                  │ 
 │                                                                                             │ 
 │  Vous pouvez obtenir un interpréteur de commandes sur le deuxième terminal (ALT+F2) pour    │ 
 │  voir les périphériques disponibles dans /dev en tapant « ls /dev ». Vous pourrez revenir   │ 
 │  à cet écran par ALT+F1.                                                                    │ 
 │                                                                                             │ 
 │  Fichier de périphérique pour le lecteur de CD-ROM :                                        │ 
 │                                                                                             │ 
 │  &lt;span style=&quot;background-color: red; color: white;&quot;&gt;/dev/sdc_________________________________________________________________________________&lt;/span&gt;  │ 
 │                                                                                             │ 
 │                                         &lt;Continuer&gt;                                         │ 
 └─────────────────────────────────────────────────────────────────────────────────────────────┘ 
&lt;/span&gt;
Le programme d'installation a continué son travail normalement, et la machine a pu redémarrer avec son système debian.

== La remise à l'état d'origine du disque dur ==

Je vais maintenant remettre ce disque-Clef USB dans son état initial :

Je connecte mon disque USB sur la machine que j'avais utilisée pour créer le fichier de sauvegarde,&lt;br /&gt;
et je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 


À ce stade, soyez
&lt;u&gt;'''sûr et certain'''&lt;/u&gt;
de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (dans ce tuto : sdf) associé au disque USB,

    
&lt;span style=&quot;background-color: red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;
&lt;span style=&quot;background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;background-color: red;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;background-color: #33CC33;&quot;&gt;&quot;&lt;/span&gt;
au lieu de
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em; background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt;&lt;br /&gt;
  &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;
&lt;/span&gt;



Je lance la recopie du fichier
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${monSauv}&lt;/span&gt;
sur le disque
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt; :

 root@debG53SW:~# dd conv=notrunc bs=$taillBlck if=&quot;${monSauv}&quot; of=&quot;${maCible}&quot; &amp;&amp; sync
 60+0 enregistrements lus
 60+0 enregistrements écrits
 251658240 octets (252 MB) copiés, 3,83389 s, 65,6 MB/s
 root@debG53SW:~# 

Je déconnecte et reconnecte le cordon USB de mon disque.

Mon disque est maintenant dans son état initial d'avant la copie du fichier image ISO, avec toutes ses partitions originales et ses fichiers bien en place.

Après m'être assuré que tout est bien en place sur mon disque, je peux donc supprimer le fichier de sauvegarde :
  root@debG53SW:~# rm &quot;${monSauv}&quot;</text>
      <sha1>217omzwp8lvjpp1o8kwzyddhffzhroj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5864</id>
      <parentid>5863</parentid>
      <timestamp>2014-10-08T13:16:41Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* La remise à l'état d'origine du disque dur */ Ajout &quot;Bilan&quot;</comment>
      <text xml:space="preserve" bytes="10792">
== Introduction ==
Les performances en vitesse écriture-lecture des clef USB sont si désespérément lentes,&lt;br /&gt;
qu'on en oublie parfois qu'on avait lancé une copie d'image ISO sur une clef USB.&lt;br /&gt;
Et je ne parle même pas du temps passé à la gravure d'un CD ou DVD…

En utilisant un disque dur USB à la place d'une clef USB ou d'un CD-ROM, cette préparation est '''100 fois''' plus vite faite,&lt;br /&gt;
et on peut y gagner une bonne demi-journée d'attente quand il s'agit d'une image [https://www.debian.org/CD/live/index.fr.html ISO Live] de plus d'un Gio.

Ici, j'utilise un disque dur SSD, ce qui améliore d'autant plus les performances en vitesse écriture-lecture.


Mais je n'ai pas envie de devoir sauvegarder tous les fichiers qui y sont stockés,&lt;br /&gt;
pour ensuite, une fois que je n'ai plus besoin de cette Clef-disque USB,&lt;br /&gt;
être obligé de recréer chaque partition  pour y remettre en place tous les fichiers sauvegardés.

D'autant que finalement, je n'ai besoin que de 2 ou 3 Gio au grand maximum (si j'utilisai une image ISO autre qu'une image ISO [https://www.debian.org/CD/netinst/ debian netinstall] de 250Mio maxi).

La solution que je propose ici consiste à '''ne sauvegarder que l'espace disque qui va être écrasé par la copie de l'image ISO'''.


&lt;u&gt;'''NOTE :'''&lt;/u&gt; Bien sûr, cette méthode fonctionne aussi pour toutes les image [http://linuxfr.org/users/tankey/journaux/iso-hybrides ISO Hybrides] de toutes les distribution.&lt;br /&gt;

== La sauvegarde ==
Je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monIso=&quot;/home/michel/Téléchargements/firmware-7.6.0-amd64-netinst.iso&quot;
  root@debG53SW:~# nbBlckIso=$((($(stat -c %s &quot;${monIso}&quot;)/$taillBlck)+1))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 


À ce stade, soyez
&lt;u&gt;'''sûr et certain'''&lt;/u&gt;
de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (dans ce tuto : /dev/sdf) associé au disque USB,

    
&lt;span style=&quot;background-color: red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;
&lt;span style=&quot;background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;background-color: red;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;background-color: #33CC33;&quot;&gt;&quot;&lt;/span&gt;
au lieu de
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em; background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt;&lt;br /&gt;
  &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;
&lt;/span&gt;



je récupère (sauvegarde) une copie de l'espace disque qui sera écrasé par la copie du fichier image ISO sur le disque :
  root@debG53SW:~# dd bs=$taillBlck count=$nbBlckIso if=&quot;${maCible}&quot; of=&quot;${monSauv}&quot; &amp;&amp; sync
  60+0 enregistrements lus
  60+0 enregistrements écrits
  251658240 octets (252 MB) copiés, 2,42913 s, 104 MB/s
  root@debG53SW:~# 


Je copie le fichier image ISO
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${monIso}&lt;/span&gt;
sur mon disque USB
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt; :
  root@debG53SW:~# dd bs=$taillBlck if=&quot;${monIso}&quot; of=&quot;${maCible}&quot; &amp;&amp; sync
  59+0 enregistrements lus
  59+0 enregistrements écrits
  247463936 octets (247 MB) copiés, 3,7607 s, 65,8 MB/s
  root@debG53SW:~# 


Mon disque est maintenant '''prêt à être utilisé comme une clef USB''' pour l'installation de debian.


Je débranche le disque USB que je viens de préparer avec ma machine, pour le connecter à la machine sur laquelle je veux installer debian,&lt;br /&gt;
et je vais la démarrer en la faisant booter sur ce disque USB.

== L'installation de debian ==

Au cours de l'installation de debian, le programme se rendra compte qu'il ne s'agit pas d'une Clef USB ou d'un lecteur de CD-ROM,&lt;br /&gt;
car il ne s'agit pas d'un
&lt;span style=&quot;background-color: #66CCFF; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; font-family: monospace, Courier; font: x-small sans-serif; font-size: 1em; border: 1px solid rgb(221, 221, 221);&quot;&gt;périphérique amovible&lt;/span&gt;.
Mais il va nous proposer d'entrer le nom du fichier de périphérique correspondant au disque-Clef USB.

Pour connaître le nom du fichier de périphérique correspondant au disque-Clef USB,&lt;br /&gt;
j'ai ouvert une deuxième console avec
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;ALT+F2&lt;/span&gt;,
pour entrer la commande :
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;ls -l /dev/disk/by-label&lt;/span&gt;

ce qui m'a permis de retrouver la partition
&lt;span style=&quot;background-color: #66CCFF; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;Debian 7.6.0 amd64 1 -&gt; ../../'''sdc'''1&lt;/span&gt;


Le fichier de périphérique associé au disque-Clef USB est donc
&lt;span style=&quot;background-color: #66CCFF; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;/dev/sdc&lt;/span&gt;

&lt;span style=&quot;white-space: nowrap; font-family: monospace, Courier;&quot;&gt;

 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐ 
 │                                                                                             │ 
 │  Afin de pouvoir accéder au lecteur de CD-ROM, veuillez indiquer le fichier de              │ 
 │  périphérique utilisé. En effet, les lecteurs non standrads utilisent des fichiers de       │ 
 │  périphérique non standrad tels que /dev/mcdx par exemple.                                  │ 
 │                                                                                             │ 
 │  Vous pouvez obtenir un interpréteur de commandes sur le deuxième terminal (ALT+F2) pour    │ 
 │  voir les périphériques disponibles dans /dev en tapant « ls /dev ». Vous pourrez revenir   │ 
 │  à cet écran par ALT+F1.                                                                    │ 
 │                                                                                             │ 
 │  Fichier de périphérique pour le lecteur de CD-ROM :                                        │ 
 │                                                                                             │ 
 │  &lt;span style=&quot;background-color: red; color: white;&quot;&gt;/dev/sdc_________________________________________________________________________________&lt;/span&gt;  │ 
 │                                                                                             │ 
 │                                         &lt;Continuer&gt;                                         │ 
 └─────────────────────────────────────────────────────────────────────────────────────────────┘ 
&lt;/span&gt;
Le programme d'installation a continué son travail normalement, et la machine a pu redémarrer avec son système debian.

== La remise à l'état d'origine du disque dur ==

Je vais maintenant remettre ce disque-Clef USB dans son état initial :

Je connecte mon disque USB sur la machine que j'avais utilisée pour créer le fichier de sauvegarde,&lt;br /&gt;
et je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 


À ce stade, soyez
&lt;u&gt;'''sûr et certain'''&lt;/u&gt;
de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (dans ce tuto : sdf) associé au disque USB,

    
&lt;span style=&quot;background-color: red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;
&lt;span style=&quot;background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;background-color: red;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;background-color: #33CC33;&quot;&gt;&quot;&lt;/span&gt;
au lieu de
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em; background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt;&lt;br /&gt;
  &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;
&lt;/span&gt;



Je lance la recopie du fichier
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${monSauv}&lt;/span&gt;
sur le disque
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt; :

 root@debG53SW:~# dd conv=notrunc bs=$taillBlck if=&quot;${monSauv}&quot; of=&quot;${maCible}&quot; &amp;&amp; sync
 60+0 enregistrements lus
 60+0 enregistrements écrits
 251658240 octets (252 MB) copiés, 3,83389 s, 65,6 MB/s
 root@debG53SW:~# 

Je déconnecte et reconnecte le cordon USB de mon disque.

Mon disque est maintenant dans son état initial d'avant la copie du fichier image ISO, avec toutes ses partitions originales et ses fichiers bien en place.

Après m'être assuré que tout est bien en place sur mon disque, je peux donc supprimer le fichier de sauvegarde :
  root@debG53SW:~# rm &quot;${monSauv}&quot;


== Bilan ==

Durée en lecture/écriture pour &quot;gravure ISO&quot; + sauvegarde + restauration =&gt; '''moins de 10 secondes'''.</text>
      <sha1>l98ix10ucg3evq4s7jcr62l4b7pwrdk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5865</id>
      <parentid>5864</parentid>
      <timestamp>2014-10-08T16:02:22Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Introduction */ ajout note</comment>
      <text xml:space="preserve" bytes="10957">
== Introduction ==
Les performances en vitesse écriture-lecture des clef USB sont si désespérément lentes,&lt;br /&gt;
qu'on en oublie parfois qu'on avait lancé une copie d'image ISO sur une clef USB.&lt;br /&gt;
Et je ne parle même pas du temps passé à la gravure d'un CD ou DVD…

En utilisant un disque dur USB à la place d'une clef USB ou d'un CD-ROM, cette préparation est '''100 fois''' plus vite faite,&lt;br /&gt;
et on peut y gagner une bonne demi-journée d'attente quand il s'agit d'une image [https://www.debian.org/CD/live/index.fr.html ISO Live] de plus d'un Gio.

Ici, j'utilise un disque dur SSD, ce qui améliore d'autant plus les performances en vitesse écriture-lecture.


Mais je n'ai pas envie de devoir sauvegarder tous les fichiers qui y sont stockés,&lt;br /&gt;
pour ensuite, une fois que je n'ai plus besoin de cette Clef-disque USB,&lt;br /&gt;
être obligé de recréer chaque partition  pour y remettre en place tous les fichiers sauvegardés.

D'autant que finalement, je n'ai besoin que de 2 ou 3 Gio au grand maximum (si j'utilisai une image ISO autre qu'une image ISO [https://www.debian.org/CD/netinst/ debian netinstall] de 250Mio maxi).

La solution que je propose ici consiste à '''ne sauvegarder que l'espace disque qui va être écrasé par la copie de l'image ISO'''.


&lt;u&gt;'''NOTE :'''&lt;/u&gt; Bien sûr, cette méthode fonctionne aussi pour toutes les image [http://linuxfr.org/users/tankey/journaux/iso-hybrides ISO Hybrides] de toutes les distribution.&lt;br /&gt;
       Et bien sûr aussi, elle permettra de gagner du temps si on n'a pas envie d'avoir à sauvegarder/restituer le contenu intégral d'une clef USB.

== La sauvegarde ==
Je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monIso=&quot;/home/michel/Téléchargements/firmware-7.6.0-amd64-netinst.iso&quot;
  root@debG53SW:~# nbBlckIso=$((($(stat -c %s &quot;${monIso}&quot;)/$taillBlck)+1))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 


À ce stade, soyez
&lt;u&gt;'''sûr et certain'''&lt;/u&gt;
de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (dans ce tuto : /dev/sdf) associé au disque USB,

    
&lt;span style=&quot;background-color: red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;
&lt;span style=&quot;background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;background-color: red;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;background-color: #33CC33;&quot;&gt;&quot;&lt;/span&gt;
au lieu de
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em; background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt;&lt;br /&gt;
  &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;
&lt;/span&gt;



je récupère (sauvegarde) une copie de l'espace disque qui sera écrasé par la copie du fichier image ISO sur le disque :
  root@debG53SW:~# dd bs=$taillBlck count=$nbBlckIso if=&quot;${maCible}&quot; of=&quot;${monSauv}&quot; &amp;&amp; sync
  60+0 enregistrements lus
  60+0 enregistrements écrits
  251658240 octets (252 MB) copiés, 2,42913 s, 104 MB/s
  root@debG53SW:~# 


Je copie le fichier image ISO
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${monIso}&lt;/span&gt;
sur mon disque USB
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt; :
  root@debG53SW:~# dd bs=$taillBlck if=&quot;${monIso}&quot; of=&quot;${maCible}&quot; &amp;&amp; sync
  59+0 enregistrements lus
  59+0 enregistrements écrits
  247463936 octets (247 MB) copiés, 3,7607 s, 65,8 MB/s
  root@debG53SW:~# 


Mon disque est maintenant '''prêt à être utilisé comme une clef USB''' pour l'installation de debian.


Je débranche le disque USB que je viens de préparer avec ma machine, pour le connecter à la machine sur laquelle je veux installer debian,&lt;br /&gt;
et je vais la démarrer en la faisant booter sur ce disque USB.

== L'installation de debian ==

Au cours de l'installation de debian, le programme se rendra compte qu'il ne s'agit pas d'une Clef USB ou d'un lecteur de CD-ROM,&lt;br /&gt;
car il ne s'agit pas d'un
&lt;span style=&quot;background-color: #66CCFF; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; font-family: monospace, Courier; font: x-small sans-serif; font-size: 1em; border: 1px solid rgb(221, 221, 221);&quot;&gt;périphérique amovible&lt;/span&gt;.
Mais il va nous proposer d'entrer le nom du fichier de périphérique correspondant au disque-Clef USB.

Pour connaître le nom du fichier de périphérique correspondant au disque-Clef USB,&lt;br /&gt;
j'ai ouvert une deuxième console avec
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;ALT+F2&lt;/span&gt;,
pour entrer la commande :
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;ls -l /dev/disk/by-label&lt;/span&gt;

ce qui m'a permis de retrouver la partition
&lt;span style=&quot;background-color: #66CCFF; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;Debian 7.6.0 amd64 1 -&gt; ../../'''sdc'''1&lt;/span&gt;


Le fichier de périphérique associé au disque-Clef USB est donc
&lt;span style=&quot;background-color: #66CCFF; white-space: nowrap; padding-left: 0.3em; padding-right: 0.3em; border: 1px solid rgb(221, 221, 221); font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;/dev/sdc&lt;/span&gt;

&lt;span style=&quot;white-space: nowrap; font-family: monospace, Courier;&quot;&gt;

 ┌─────────────────────────────┤  &lt;span style=&quot;color: red;&quot;&gt;[!!] Détecter et monter le CD&lt;/span&gt;  ├─────────────────────────────┐ 
 │                                                                                             │ 
 │  Afin de pouvoir accéder au lecteur de CD-ROM, veuillez indiquer le fichier de              │ 
 │  périphérique utilisé. En effet, les lecteurs non standrads utilisent des fichiers de       │ 
 │  périphérique non standrad tels que /dev/mcdx par exemple.                                  │ 
 │                                                                                             │ 
 │  Vous pouvez obtenir un interpréteur de commandes sur le deuxième terminal (ALT+F2) pour    │ 
 │  voir les périphériques disponibles dans /dev en tapant « ls /dev ». Vous pourrez revenir   │ 
 │  à cet écran par ALT+F1.                                                                    │ 
 │                                                                                             │ 
 │  Fichier de périphérique pour le lecteur de CD-ROM :                                        │ 
 │                                                                                             │ 
 │  &lt;span style=&quot;background-color: red; color: white;&quot;&gt;/dev/sdc_________________________________________________________________________________&lt;/span&gt;  │ 
 │                                                                                             │ 
 │                                         &lt;Continuer&gt;                                         │ 
 └─────────────────────────────────────────────────────────────────────────────────────────────┘ 
&lt;/span&gt;
Le programme d'installation a continué son travail normalement, et la machine a pu redémarrer avec son système debian.

== La remise à l'état d'origine du disque dur ==

Je vais maintenant remettre ce disque-Clef USB dans son état initial :

Je connecte mon disque USB sur la machine que j'avais utilisée pour créer le fichier de sauvegarde,&lt;br /&gt;
et je définis les quelques variables qui me simplifieront le travail pour la suite :
  root@debG53SW:~# maCible=&quot;/dev/sdf&quot;
  root@debG53SW:~# taillBlck=$((1024*1024*4))
  root@debG53SW:~# monSauv=&quot;/home/michel/Téléchargements/sauv-tmp-sdf-firmware-7.6.0-amd64-netinst.iso.DD&quot;
  root@debG53SW:~# 


À ce stade, soyez
&lt;u&gt;'''sûr et certain'''&lt;/u&gt;
de ne pas avoir fait d'erreur concernant le '''nom du fichier de périphérique''' (dans ce tuto : sdf) associé au disque USB,

    
&lt;span style=&quot;background-color: red&quot;&gt; UNE ERREUR DU GENRE  : --&lt;/span&gt;--&gt; 
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;
&lt;span style=&quot;background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sd&lt;/span&gt;&lt;span style=&quot;background-color: red;&quot;&gt;'''a'''&lt;/span&gt;&lt;span style=&quot;background-color: #33CC33;&quot;&gt;&quot;&lt;/span&gt;
au lieu de
&lt;span style=&quot;white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em; background-color: #33CC33;&quot;&gt;maCible=&quot;/dev/sdf&quot;&lt;/span&gt;&lt;br /&gt;
  &lt;span style=&quot;padding-left: 0.3em; padding-right: 0.3em; background-color:red&quot;&gt;''' ! ET CE SERA LE DÉSASTRE ! '''&lt;/span&gt;
&lt;/span&gt;



Je lance la recopie du fichier
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${monSauv}&lt;/span&gt;
sur le disque
&lt;span style=&quot;background-color: #33CC33; white-space: nowrap; margin: 0; padding: 0; font: x-small sans-serif; font-family: monospace, Courier; font-size: 1em;&quot;&gt;${maCible}&lt;/span&gt; :

 root@debG53SW:~# dd conv=notrunc bs=$taillBlck if=&quot;${monSauv}&quot; of=&quot;${maCible}&quot; &amp;&amp; sync
 60+0 enregistrements lus
 60+0 enregistrements écrits
 251658240 octets (252 MB) copiés, 3,83389 s, 65,6 MB/s
 root@debG53SW:~# 

Je déconnecte et reconnecte le cordon USB de mon disque.

Mon disque est maintenant dans son état initial d'avant la copie du fichier image ISO, avec toutes ses partitions originales et ses fichiers bien en place.

Après m'être assuré que tout est bien en place sur mon disque, je peux donc supprimer le fichier de sauvegarde :
  root@debG53SW:~# rm &quot;${monSauv}&quot;


== Bilan ==

Durée en lecture/écriture pour &quot;gravure ISO&quot; + sauvegarde + restauration =&gt; '''moins de 10 secondes'''.</text>
      <sha1>6xdom6953rkvrnpfllp6xbn5zmojakk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Installer depuis une clé USB</title>
    <ns>0</ns>
    <id>508</id>
    <revision>
      <id>1995</id>
      <timestamp>2010-08-20T12:02:08Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « Merci à Zodar pour son astuce!  '''Installer debian depuis une clé usb'''  Prérequis : * avoir un système linux fonctionnel.. * pouvoir démarrer sur USB  Avec l'émergen... »</comment>
      <text xml:space="preserve" bytes="1590">Merci à Zodar pour son astuce!

'''Installer debian depuis une clé usb'''

Prérequis :
* avoir un système linux fonctionnel..
* pouvoir démarrer sur USB

Avec l'émergence des notebook (dépourvus de lecteur CD), peu de solutions s'offrent pour installer un système linux.
* acheter un lecteur CD externe : peu onéreux, mais achat tout de même
* unetbootin : qui se dit être un installateur depuis un support USB; mais qui n'est pas franchement au point.


Voilà une petite méthode simple et rapide pour installer debian depuis une clé usb.
Ce sujet donne suite à une petite astuce de MisterFriandise que j'ai emprunté

:1) On se rend [http://ftp.nl.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/ ici et on télécharge] : boot.img.gz (uniquement)
::1.1) On télécharge une businesscard (ou netinstall; mais que une de ces deux visiblement)

:2) On branche une clé usb qu'on démonte (on note son point de montage : /dev/sdb par ex)

:3) En root 
 # zcat boot.img.gz &gt; /dev/sdb (pour reprendre l'exemple)

:4) On monte la clé (au plus simple, on déplug - replug)

:5) On copie sur la clé l'iso de la businesscard

:6) On reboot sur la clé (en modifiant le bios pour booter sur usb)

Perso j'ai choisi l'install en mode expert et ai mis une Lenny (avec une businesscard, la branche voulue sera proposée pendant l'installation)Le disque dur est correctement détecté (en sda) donc aucun soucis d'installation, tout se fait comme depuis un CD.

Source : http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=29316&amp;start=0

[[Catégorie:Installation]]</text>
      <sha1>addvcxtq900auq0n9o9oonzih0c0j41</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1996</id>
      <parentid>1995</parentid>
      <timestamp>2010-08-20T12:02:32Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>a déplacé [[Installer sur une clé USB]] vers [[Installer depuis une clé USB]]</comment>
      <text xml:space="preserve" bytes="1590">Merci à Zodar pour son astuce!

'''Installer debian depuis une clé usb'''

Prérequis :
* avoir un système linux fonctionnel..
* pouvoir démarrer sur USB

Avec l'émergence des notebook (dépourvus de lecteur CD), peu de solutions s'offrent pour installer un système linux.
* acheter un lecteur CD externe : peu onéreux, mais achat tout de même
* unetbootin : qui se dit être un installateur depuis un support USB; mais qui n'est pas franchement au point.


Voilà une petite méthode simple et rapide pour installer debian depuis une clé usb.
Ce sujet donne suite à une petite astuce de MisterFriandise que j'ai emprunté

:1) On se rend [http://ftp.nl.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/ ici et on télécharge] : boot.img.gz (uniquement)
::1.1) On télécharge une businesscard (ou netinstall; mais que une de ces deux visiblement)

:2) On branche une clé usb qu'on démonte (on note son point de montage : /dev/sdb par ex)

:3) En root 
 # zcat boot.img.gz &gt; /dev/sdb (pour reprendre l'exemple)

:4) On monte la clé (au plus simple, on déplug - replug)

:5) On copie sur la clé l'iso de la businesscard

:6) On reboot sur la clé (en modifiant le bios pour booter sur usb)

Perso j'ai choisi l'install en mode expert et ai mis une Lenny (avec une businesscard, la branche voulue sera proposée pendant l'installation)Le disque dur est correctement détecté (en sda) donc aucun soucis d'installation, tout se fait comme depuis un CD.

Source : http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=29316&amp;start=0

[[Catégorie:Installation]]</text>
      <sha1>addvcxtq900auq0n9o9oonzih0c0j41</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1999</id>
      <parentid>1996</parentid>
      <timestamp>2010-08-20T12:32:40Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2378">Merci à Zodar pour son astuce!

'''Installer debian depuis une clé usb'''

Prérequis :
* avoir un système linux fonctionnel..
* pouvoir démarrer sur USB

Avec l'émergence des notebook (dépourvus de lecteur CD), peu de solutions s'offrent pour installer un système linux.
* acheter un lecteur CD externe : peu onéreux, mais achat tout de même
* unetbootin : qui se dit être un installateur depuis un support USB; mais qui n'est pas franchement au point.


Voilà une petite méthode simple et rapide pour installer debian depuis une clé usb.
Ce sujet donne suite à une petite astuce de MisterFriandise que j'ai emprunté

:1) On se rend [http://ftp.nl.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/ ici et on télécharge] : boot.img.gz (uniquement)
::1.1) On télécharge une businesscard (ou netinstall; mais que une de ces deux visiblement)

:2) On branche une clé usb qu'on démonte (on note son point de montage : /dev/sdb par ex)

:3) En root 
 # zcat boot.img.gz &gt; /dev/sdb (pour reprendre l'exemple)

:4) On monte la clé (au plus simple, on déplug - replug)

:5) On copie sur la clé l'iso de la businesscard

:6) On reboot sur la clé (en modifiant le bios pour booter sur usb)

Perso j'ai choisi l'install en mode expert et ai mis une Lenny (avec une businesscard, la branche voulue sera proposée pendant l'installation)Le disque dur est correctement détecté (en sda) donc aucun soucis d'installation, tout se fait comme depuis un CD.


'''Complément:''' Pour ceux qui malgré tout font leur clé avec unetbootin, voici un petit début d'aide

:1) Via unetbootin, la clé usb sera détectée en sda / le disc dur en sdb ...on fait l'install normalement..

:2) jusqu'à installer GRUB=&gt; '''NON''' à : installer sur le MBR =&gt; '''Choisir /dev/sdb en location pour GRUB'''

:3) Et on reboot :
:4) Au menu du GRUB, on édite (via e) =&gt; on remplace toutes les instances sdb en sda (que les instances) et on peut booter normalement (pour le moment de manière temporaire)

:5) ...une fois debian démarré, on se log en root
 # vi /boot/grub/menu.lst (j'installe une lenny &gt; j'ai choisi grub 1)
 =&gt; on remplace tous les sdb en sda

On sauvegarde.

:6) On reboot pour tester (shutdown -r now)normalement debian boot correctement

Source : http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=29316&amp;start=0

[[Catégorie:Installation]]</text>
      <sha1>o8vpkyxvdmfaavnsy4w6xkv0vzx0y28</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2000</id>
      <parentid>1999</parentid>
      <timestamp>2010-08-20T12:42:57Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2411">Merci à [[Discussion_utilisateur:Zodar|Zodar]] pour son astuce!

'''Installer debian depuis une clé usb'''

Prérequis :
* avoir un système linux fonctionnel..
* pouvoir démarrer sur USB

Avec l'émergence des notebook (dépourvus de lecteur CD), peu de solutions s'offrent pour installer un système linux.
* acheter un lecteur CD externe : peu onéreux, mais achat tout de même
* unetbootin : qui se dit être un installateur depuis un support USB; mais qui n'est pas franchement au point.


Voilà une petite méthode simple et rapide pour installer debian depuis une clé usb.
Ce sujet donne suite à une petite astuce de MisterFriandise que j'ai emprunté

:1) On se rend [http://ftp.nl.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/ ici et on télécharge] : boot.img.gz (uniquement)
::1.1) On télécharge une businesscard (ou netinstall; mais que une de ces deux visiblement)

:2) On branche une clé usb qu'on démonte (on note son point de montage : /dev/sdb par ex)

:3) En root 
 # zcat boot.img.gz &gt; /dev/sdb (pour reprendre l'exemple)

:4) On monte la clé (au plus simple, on déplug - replug)

:5) On copie sur la clé l'iso de la businesscard

:6) On reboot sur la clé (en modifiant le bios pour booter sur usb)

Perso j'ai choisi l'install en mode expert et ai mis une Lenny (avec une businesscard, la branche voulue sera proposée pendant l'installation)Le disque dur est correctement détecté (en sda) donc aucun soucis d'installation, tout se fait comme depuis un CD.


'''Complément:''' Pour ceux qui malgré tout font leur clé avec unetbootin, voici un petit début d'aide

:1) Via unetbootin, la clé usb sera détectée en sda / le disc dur en sdb ...on fait l'install normalement..

:2) jusqu'à installer GRUB=&gt; '''NON''' à : installer sur le MBR =&gt; '''Choisir /dev/sdb en location pour GRUB'''

:3) Et on reboot :
:4) Au menu du GRUB, on édite (via e) =&gt; on remplace toutes les instances sdb en sda (que les instances) et on peut booter normalement (pour le moment de manière temporaire)

:5) ...une fois debian démarré, on se log en root
 # vi /boot/grub/menu.lst (j'installe une lenny &gt; j'ai choisi grub 1)
 =&gt; on remplace tous les sdb en sda

On sauvegarde.

:6) On reboot pour tester (shutdown -r now)normalement debian boot correctement

Source : http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=29316&amp;start=0

[[Catégorie:Installation]]</text>
      <sha1>72e3wexenesk0cvfu30q7zzh8rf5ubc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2001</id>
      <parentid>2000</parentid>
      <timestamp>2010-08-20T14:03:57Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2784">Merci à [[Discussion_utilisateur:Zodar|Zodar]] pour son astuce!

'''Installer debian depuis une clé usb'''

Prérequis :
* avoir un système linux fonctionnel..
* pouvoir démarrer sur USB

Avec l'émergence des notebook (dépourvus de lecteur CD), peu de solutions s'offrent pour installer un système linux.
* acheter un lecteur CD externe : peu onéreux, mais achat tout de même
* unetbootin : qui se dit être un installateur depuis un support USB; mais qui n'est pas franchement au point.


Voilà une petite méthode simple et rapide pour installer debian depuis une clé usb.
Ce sujet donne suite à une petite astuce de MisterFriandise que j'ai emprunté

:1) On se rend [http://ftp.nl.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/ ici et on télécharge] : boot.img.gz (uniquement)
::1.1) On télécharge une businesscard (ou netinstall; mais que une de ces deux visiblement)

:2) On branche une clé usb qu'on démonte (on note son point de montage : /dev/sdb par ex)

:3) En root 
 # zcat boot.img.gz &gt; /dev/sdb (pour reprendre l'exemple)

:4) On monte la clé (au plus simple, on déplug - replug)

:5) On copie sur la clé l'iso de la businesscard

:6) On reboot sur la clé (en modifiant le bios pour booter sur usb)

Perso j'ai choisi l'install en mode expert et ai mis une Lenny (avec une businesscard, la branche voulue sera proposée pendant l'installation)Le disque dur est correctement détecté (en sda) donc aucun soucis d'installation, tout se fait comme depuis un CD.

----
* Sur un système UNIX, zcat peut être remplacé par :
 gunzip boot.img.gz dd if=boot.img of=/dev/sdX

Ensuite sous Windows il existe des équivalents à dd. Par exemple : http://software.intel.com/en-us/article ... Windows_PC

Pour la décompression du format gz sous Windows 7zip peut le faire : 
http://framakey.org/Portables/7zipPortable
(Merci MisterFreez)
----

'''Complément:''' Pour ceux qui malgré tout font leur clé avec unetbootin, voici un petit début d'aide

:1) Via unetbootin, la clé usb sera détectée en sda / le disc dur en sdb ...on fait l'install normalement..

:2) jusqu'à installer GRUB=&gt; '''NON''' à : installer sur le MBR =&gt; '''Choisir /dev/sdb en location pour GRUB'''

:3) Et on reboot :
:4) Au menu du GRUB, on édite (via e) =&gt; on remplace toutes les instances sdb en sda (que les instances) et on peut booter normalement (pour le moment de manière temporaire)

:5) ...une fois debian démarré, on se log en root
 # vi /boot/grub/menu.lst (j'installe une lenny &gt; j'ai choisi grub 1)
 =&gt; on remplace tous les sdb en sda

On sauvegarde.

:6) On reboot pour tester (shutdown -r now)normalement debian boot correctement

Source : http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=29316&amp;start=0

[[Catégorie:Installation]]</text>
      <sha1>os58qlsuo1gqunzeq7zm3urt6kl4a12</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2013</id>
      <parentid>2001</parentid>
      <timestamp>2010-08-21T06:12:04Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2880">Merci à [[Discussion_utilisateur:Zodar|Zodar]] pour son astuce!

'''Installer debian depuis une clé usb'''

Prérequis :
* avoir un système linux fonctionnel..
* pouvoir démarrer sur USB

Avec l'émergence des notebook (dépourvus de lecteur CD), peu de solutions s'offrent pour installer un système linux.
* acheter un lecteur CD externe : peu onéreux, mais achat tout de même
* unetbootin : qui se dit être un installateur depuis un support USB; mais qui n'est pas franchement au point.


Voilà une petite méthode simple et rapide pour installer debian depuis une clé usb.
Ce sujet donne suite à une petite astuce de MisterFriandise que j'ai emprunté

:1) On se rend [http://ftp.nl.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/ ici et on télécharge] : boot.img.gz (uniquement)
::1.1) On télécharge une businesscard (ou netinstall; mais que une de ces deux visiblement)

:2) On branche une clé usb qu'on démonte (on note son point de montage : /dev/sdb par ex)

:3) En root 
 # zcat boot.img.gz &gt; /dev/sdb (pour reprendre l'exemple)

:4) On monte la clé (au plus simple, on déplug - replug)

:5) On copie sur la clé l'iso de la businesscard

:6) On reboot sur la clé (en modifiant le bios pour booter sur usb)

Perso j'ai choisi l'install en mode expert et ai mis une Lenny (avec une businesscard, la branche voulue sera proposée pendant l'installation)Le disque dur est correctement détecté (en sda) donc aucun soucis d'installation, tout se fait comme depuis un CD.

----
* Sur un système UNIX, zcat peut être remplacé par :
 gunzip boot.img.gz dd if=boot.img of=/dev/sdX

Ensuite sous Windows il existe des équivalents à dd. Par exemple : http://software.intel.com/en-us/article ... Windows_PC

Pour la décompression du format gz sous Windows 7zip peut le faire : 
http://framakey.org/Portables/7zipPortable
(Merci MisterFreez)
----

'''Complément:''' Pour ceux qui malgré tout font leur clé avec unetbootin, voici un petit début d'aide

:1) Via unetbootin, la clé usb sera détectée en sda / le disc dur en sdb ...on fait l'install normalement..

:2) jusqu'à installer GRUB=&gt; '''NON''' à : installer sur le MBR =&gt; '''Choisir /dev/sdb en location pour GRUB'''

:3) Et on reboot :
:4) Au menu du GRUB, on édite (via e) =&gt; on remplace toutes les instances sdb en sda (que les instances) et on peut booter normalement (pour le moment de manière temporaire)

:5) ...une fois debian démarré, on se log en root
 # vi /boot/grub/menu.lst (j'installe une lenny &gt; j'ai choisi grub 1)
 =&gt; on remplace tous les sdb en sda

On sauvegarde.

:6) On reboot pour tester (shutdown -r now)normalement debian boot correctement

Source : http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=29316&amp;start=0

[http://www.debian.org/releases/stable/i386/ch04s03.html.fr Documentation Debian en français]

[[Catégorie:Installation]]</text>
      <sha1>0ipvgqfaomjdrh863gatt6vs8q5ilg6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2243</id>
      <parentid>2013</parentid>
      <timestamp>2010-10-25T08:18:17Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2883">Merci à [[Discussion_utilisateur:Zodar|Zodar]] pour son astuce!

'''Installer debian depuis une clé usb'''

Prérequis :
* avoir un système linux fonctionnel..
* pouvoir démarrer sur USB

Avec l'émergence des notebook (dépourvus de lecteur CD), peu de solutions s'offrent pour installer un système linux.
* acheter un lecteur CD externe : peu onéreux, mais achat tout de même
* unetbootin : qui se dit être un installateur depuis un support USB; mais qui n'est pas franchement au point.


Voilà une petite méthode simple et rapide pour installer debian depuis une clé usb.
Ce sujet donne suite à une petite astuce de MisterFriandise que j'ai empruntée

:1) On se rend [http://ftp.nl.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/ ici et on télécharge] : boot.img.gz (uniquement)
::1.1) On télécharge une businesscard (ou netinstall; mais que l'une de ces deux visiblement)

:2) On branche une clé usb qu'on démonte (on note son point de montage : /dev/sdb par ex)

:3) En root 
 # zcat boot.img.gz &gt; /dev/sdb (pour reprendre l'exemple)

:4) On monte la clé (au plus simple, on déplug - replug)

:5) On copie sur la clé l'iso de la businesscard

:6) On reboot sur la clé (en modifiant le bios pour booter sur usb)

Perso j'ai choisi l'install en mode expert et ai mis une Lenny (avec une businesscard, la branche voulue sera proposée pendant l'installation) Le disque dur est correctement détecté (en sda) donc aucun souci d'installation, tout se fait comme depuis un CD.

----
* Sur un système UNIX, zcat peut être remplacé par :
 gunzip boot.img.gz dd if=boot.img of=/dev/sdX

Ensuite sous Windows il existe des équivalents à dd. Par exemple : http://software.intel.com/en-us/article ... Windows_PC

Pour la décompression du format gz sous Windows 7zip peut le faire : 
http://framakey.org/Portables/7zipPortable
(Merci MisterFreez)
----

'''Complément:''' Pour ceux qui malgré tout font leur clé avec unetbootin, voici un petit début d'aide

:1) Via unetbootin, la clé usb sera détectée en sda / le disc dur en sdb ...on fait l'install normalement..

:2) jusqu'à installer GRUB=&gt; '''NON''' à : installer sur le MBR =&gt; '''Choisir /dev/sdb en location pour GRUB'''

:3) Et on reboot :
:4) Au menu du GRUB, on édite (via e) =&gt; on remplace toutes les instances sdb en sda (que les instances) et on peut booter normalement (pour le moment de manière temporaire)

:5) ...une fois debian démarré, on se log en root
 # vi /boot/grub/menu.lst (j'installe une lenny &gt; j'ai choisi grub 1)
 =&gt; on remplace tous les sdb en sda

On sauvegarde.

:6) On reboot pour tester (shutdown -r now)normalement debian boot correctement

Source : http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=29316&amp;start=0

[http://www.debian.org/releases/stable/i386/ch04s03.html.fr Documentation Debian en français]

[[Catégorie:Installation]]</text>
      <sha1>fvta40imu3oabdnc4s7a9wxf6zq6fs6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2245</id>
      <parentid>2243</parentid>
      <timestamp>2010-10-26T20:32:47Z</timestamp>
      <contributor>
        <username>ThomasPhan</username>
        <id>72</id>
      </contributor>
      <comment>m</comment>
      <text xml:space="preserve" bytes="2893">Merci à [[Discussion_utilisateur:Zodar|Zodar]] pour son astuce !

'''Installer debian depuis une clé usb'''

Prérequis :
* avoir un système linux fonctionnel
* pouvoir démarrer sur USB

Avec l'émergence des notebooks (dépourvus de lecteur CD), peu de solutions s'offrent pour installer un système Linux.
* acheter un lecteur CD externe : peu onéreux, mais achat tout de même
* unetbootin : qui se dit être un installateur depuis un support USB ; mais qui n'est pas franchement au point.


Voilà une petite méthode simple et rapide pour installer debian depuis une clé USB.
Ce sujet donne suite à une petite astuce de MisterFriandise que j'ai empruntée :

:1) On se rend [http://ftp.nl.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/ ici et on télécharge] : boot.img.gz (uniquement)
::1.1) On télécharge une businesscard (ou netinstall; mais que l'une de ces deux visiblement)

:2) On branche une clé USB qu'on démonte (on note son point de montage : /dev/sdb par exemple)

:3) En root 
 # zcat boot.img.gz &gt; /dev/sdb (pour reprendre l'exemple)

:4) On monte la clé (au plus simple, on déplug - replug)

:5) On copie sur la clé l'ISO de la businesscard

:6) On reboote sur la clé (en modifiant le BIOS pour booter sur USB)

Perso j'ai choisi l'install en mode expert et ai mis une Lenny (avec une businesscard, la branche voulue sera proposée pendant l'installation) Le disque dur est correctement détecté (en sda) donc aucun souci d'installation, tout se fait comme depuis un CD.

----
* Sur un système UNIX, zcat peut être remplacé par :
 gunzip boot.img.gz dd if=boot.img of=/dev/sdX

Ensuite sous Windows il existe des équivalents à dd. Par exemple : http://software.intel.com/en-us/article ... Windows_PC

Pour la décompression du format gz sous Windows 7zip peut le faire : 
http://framakey.org/Portables/7zipPortable
(Merci MisterFreez)
----

'''Complément:''' Pour ceux qui malgré tout font leur clé avec unetbootin, voici un petit début d'aide

:1) Via unetbootin, la clé USB sera détectée en sda / le disc dur en sdb ...on fait l'install normalement..

:2) jusqu'à installer GRUB=&gt; '''NON''' à : installer sur le MBR =&gt; '''Choisir /dev/sdb en location pour GRUB'''

:3) Et on reboote :
:4) Au menu du GRUB, on édite (via e) =&gt; on remplace toutes les instances sdb en sda (que les instances) et on peut booter normalement (pour le moment de manière temporaire)

:5) ...une fois debian démarré, on se log en root
 # vi /boot/grub/menu.lst (j'installe une Lenny &gt; j'ai choisi grub 1)
 =&gt; on remplace tous les sdb en sda

On sauvegarde.

:6) On reboot pour tester (shutdown -r now)normalement debian boot correctement

Source : http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=29316&amp;start=0

[http://www.debian.org/releases/stable/i386/ch04s03.html.fr Documentation Debian en français]

[[Catégorie:Installation]]</text>
      <sha1>p9753v6lrc16q5shkb3hs8myjak3eq7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4801</id>
      <parentid>2245</parentid>
      <timestamp>2012-12-07T12:36:20Z</timestamp>
      <contributor>
        <username>Kinroux</username>
        <id>104</id>
      </contributor>
      <text xml:space="preserve" bytes="2894">Merci à [[Discussion_utilisateur:Zodar|Zodar]] pour son astuce !

'''Installer debian depuis une clé usb'''

Prérequis :
* avoir un système linux fonctionnel
* pouvoir démarrer sur USB

Avec l'émergence des notebooks (dépourvus de lecteur CD), peu de solutions s'offrent pour installer un système Linux.
* acheter un lecteur CD externe : peu onéreux, mais achat tout de même
* unetbootin : qui se dit être un installateur depuis un support USB ; mais qui n'est pas franchement au point.


Voilà une petite méthode simple et rapide pour installer debian depuis une clé USB.
Ce sujet donne suite à une petite astuce de MisterFriandise que j'ai empruntée :

:1) On se rend [http://ftp.nl.debian.org/debian/dists/stable/main/installer-i386/current/images/hd-media/ ici et on télécharge] : boot.img.gz (uniquement)
::1.1) On télécharge une businesscard (ou netinstall; mais que l'une de ces deux visiblement)

:2) On branche une clé USB qu'on démonte (on note son point de montage : /dev/sdb par exemple)

:3) En root 
 # zcat boot.img.gz &gt; /dev/sdb (pour reprendre l'exemple)

:4) On monte la clé (au plus simple, on déplug - replug)

:5) On copie sur la clé l'ISO de la businesscard

:6) On reboote sur la clé (en modifiant le BIOS pour booter sur USB)

Perso j'ai choisi l'install en mode expert et ai mis une Lenny (avec une businesscard, la branche voulue sera proposée pendant l'installation) Le disque dur est correctement détecté (en sda) donc aucun souci d'installation, tout se fait comme depuis un CD.

----
* Sur un système UNIX, zcat peut être remplacé par :
 gunzip boot.img.gz dd if=boot.img of=/dev/sdX

Ensuite sous Windows il existe des équivalents à dd. Par exemple : http://software.intel.com/en-us/article ... Windows_PC

Pour la décompression du format gz sous Windows 7zip peut le faire : 
http://framakey.org/Portables/7zipPortable
(Merci MisterFreez)
----

'''Complément:''' Pour ceux qui malgré tout font leur clé avec unetbootin, voici un petit début d'aide

:1) Via unetbootin, la clé USB sera détectée en sda / le disc dur en sdb ...on fait l'install normalement..

:2) jusqu'à installer GRUB=&gt; '''NON''' à : installer sur le MBR =&gt; '''Choisir /dev/sdb en location pour GRUB'''

:3) Et on reboote :
:4) Au menu du GRUB, on édite (via e) =&gt; on remplace toutes les instances sdb en sda (que les instances) et on peut booter normalement (pour le moment de manière temporaire)

:5) ...une fois debian démarré, on se log en root
 # vi /boot/grub/menu.lst (j'installe une Lenny &gt; j'ai choisi grub 1)
 =&gt; on remplace tous les sdb en sda

On sauvegarde.

:6) On reboot pour tester (shutdown -r now)normalement debian boot correctement

Source : http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=29316&amp;start=0

[http://www.debian.org/releases/stable/i386/ch04s03.html.fr Documentation Debian en français]

[[Catégorie:Installation]]</text>
      <sha1>70cvq5fanaww7tlire79vy8locpk6wb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4803</id>
      <parentid>4801</parentid>
      <timestamp>2012-12-07T16:31:57Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2895">Merci à [[Discussion_utilisateur:Zodar|Zodar]] pour son astuce !

'''Installer debian depuis une clé usb'''

Prérequis :
* avoir un système linux fonctionnel
* pouvoir démarrer sur USB

Avec l'émergence des notebooks (dépourvus de lecteur CD), peu de solutions s'offrent pour installer un système Linux.
* acheter un lecteur CD externe : peu onéreux, mais achat tout de même
* unetbootin : qui se dit être un installateur depuis un support USB ; mais qui n'est pas franchement au point.


Voilà une petite méthode simple et rapide pour installer debian depuis une clé USB.
Ce sujet donne suite à une petite astuce de MisterFriandise que j'ai empruntée :

:1) On se rend [http://ftp.nl.debian.org/debian/dists/stable/main/installer-i386/current/images/hd-media/ ici et on télécharge] : boot.img.gz (uniquement)
::1.1) On télécharge une businesscard (ou netinstall; mais que l'une de ces deux visiblement)

:2) On branche une clé USB qu'on démonte (on note son point de montage : /dev/sdb par exemple)

:3) En root 
 # zcat boot.img.gz &gt; /dev/sdb (pour reprendre l'exemple)

:4) On monte la clé (au plus simple, on déplug - replug)

:5) On copie sur la clé l'ISO de la businesscard

:6) On reboote sur la clé (en modifiant le BIOS pour booter sur USB)

Perso j'ai choisi l'install en mode expert et ai mis une Lenny (avec une businesscard, la branche voulue sera proposée pendant l'installation) Le disque dur est correctement détecté (en sda) donc aucun souci d'installation, tout se fait comme depuis un CD.

----
* Sur un système UNIX, zcat peut être remplacé par :
 gunzip boot.img.gz dd if=boot.img of=/dev/sdX

Ensuite sous Windows il existe des équivalents à dd. Par exemple : http://software.intel.com/en-us/article ... Windows_PC

Pour la décompression du format gz sous Windows 7zip peut le faire : 
http://framakey.org/Portables/7zipPortable
(Merci MisterFreez)
----

'''Complément:''' Pour ceux qui malgré tout font leur clé avec unetbootin, voici un petit début d'aide

:1) Via unetbootin, la clé USB sera détectée en sda / le disc dur en sdb ...on fait l'install normalement..

:2) jusqu'à installer GRUB=&gt; '''NON''' à : installer sur le MBR =&gt; '''Choisir /dev/sdb en location pour GRUB'''

:3) Et on reboote :
:4) Au menu du GRUB, on édite (via e) =&gt; on remplace toutes les instances sdb en sda (que les instances) et on peut booter normalement (pour le moment de manière temporaire)

:5) ...une fois debian démarré, on se log en root
 # vi /boot/grub/menu.lst (j'installe une stable &gt; j'ai choisi grub 1)
 =&gt; on remplace tous les sdb en sda

On sauvegarde.

:6) On reboot pour tester (shutdown -r now)normalement debian boot correctement

Source : http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=29316&amp;start=0

[http://www.debian.org/releases/stable/i386/ch04s03.html.fr Documentation Debian en français]

[[Catégorie:Installation]]</text>
      <sha1>ojg6f3xfkj1rot35e29ioptc93r9lhz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4804</id>
      <parentid>4803</parentid>
      <timestamp>2012-12-07T16:33:26Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2896">Merci à [[Discussion_utilisateur:Zodar|Zodar]] pour son astuce !

'''Installer debian depuis une clé usb'''

Prérequis :
* avoir un système linux fonctionnel
* pouvoir démarrer sur USB

Avec l'émergence des notebooks (dépourvus de lecteur CD), peu de solutions s'offrent pour installer un système Linux.
* acheter un lecteur CD externe : peu onéreux, mais achat tout de même
* unetbootin : qui se dit être un installateur depuis un support USB ; mais qui n'est pas franchement au point.


Voilà une petite méthode simple et rapide pour installer debian depuis une clé USB.
Ce sujet donne suite à une petite astuce de MisterFriandise que j'ai empruntée :

:1) On se rend [http://ftp.nl.debian.org/debian/dists/stable/main/installer-i386/current/images/hd-media/ ici et on télécharge] : boot.img.gz (uniquement)
::1.1) On télécharge une businesscard (ou netinstall; mais que l'une de ces deux visiblement)

:2) On branche une clé USB qu'on démonte (on note son point de montage : /dev/sdb par exemple)

:3) En root 
 # zcat boot.img.gz &gt; /dev/sdb (pour reprendre l'exemple)

:4) On monte la clé (au plus simple, on déplug - replug)

:5) On copie sur la clé l'ISO de la businesscard

:6) On reboote sur la clé (en modifiant le BIOS pour booter sur USB)

Perso j'ai choisi l'install en mode expert et ai mis une stable (avec une businesscard, la branche voulue sera proposée pendant l'installation) Le disque dur est correctement détecté (en sda) donc aucun souci d'installation, tout se fait comme depuis un CD.

----
* Sur un système UNIX, zcat peut être remplacé par :
 gunzip boot.img.gz dd if=boot.img of=/dev/sdX

Ensuite sous Windows il existe des équivalents à dd. Par exemple : http://software.intel.com/en-us/article ... Windows_PC

Pour la décompression du format gz sous Windows 7zip peut le faire : 
http://framakey.org/Portables/7zipPortable
(Merci MisterFreez)
----

'''Complément:''' Pour ceux qui malgré tout font leur clé avec unetbootin, voici un petit début d'aide

:1) Via unetbootin, la clé USB sera détectée en sda / le disc dur en sdb ...on fait l'install normalement..

:2) jusqu'à installer GRUB=&gt; '''NON''' à : installer sur le MBR =&gt; '''Choisir /dev/sdb en location pour GRUB'''

:3) Et on reboote :
:4) Au menu du GRUB, on édite (via e) =&gt; on remplace toutes les instances sdb en sda (que les instances) et on peut booter normalement (pour le moment de manière temporaire)

:5) ...une fois debian démarré, on se log en root
 # vi /boot/grub/menu.lst (j'installe une stable &gt; j'ai choisi grub 1)
 =&gt; on remplace tous les sdb en sda

On sauvegarde.

:6) On reboot pour tester (shutdown -r now)normalement debian boot correctement

Source : http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=29316&amp;start=0

[http://www.debian.org/releases/stable/i386/ch04s03.html.fr Documentation Debian en français]

[[Catégorie:Installation]]</text>
      <sha1>gipeplf6tasd73l0suwb3svqomcei1k</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5260</id>
      <parentid>4804</parentid>
      <timestamp>2013-06-09T16:08:53Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>Retrait d'une partie qui n'a pas sa place ici.</comment>
      <text xml:space="preserve" bytes="2102">Merci à [[Discussion_utilisateur:Zodar|Zodar]] pour son astuce !

'''Installer debian depuis une clé usb'''

Prérequis :
* avoir un système linux fonctionnel
* pouvoir démarrer sur USB

Avec l'émergence des notebooks (dépourvus de lecteur CD), peu de solutions s'offrent pour installer un système Linux.
* acheter un lecteur CD externe : peu onéreux, mais achat tout de même
* unetbootin : qui se dit être un installateur depuis un support USB ; mais qui n'est pas franchement au point.


Voilà une petite méthode simple et rapide pour installer debian depuis une clé USB.
Ce sujet donne suite à une petite astuce de MisterFriandise que j'ai empruntée :

:1) On se rend [http://ftp.nl.debian.org/debian/dists/stable/main/installer-i386/current/images/hd-media/ ici et on télécharge] : boot.img.gz (uniquement)
::1.1) On télécharge une businesscard (ou netinstall; mais que l'une de ces deux visiblement)

:2) On branche une clé USB qu'on démonte (on note son point de montage : /dev/sdb par exemple)

:3) En root 
 # zcat boot.img.gz &gt; /dev/sdb (pour reprendre l'exemple)

:4) On monte la clé (au plus simple, on déplug - replug)

:5) On copie sur la clé l'ISO de la businesscard

:6) On reboote sur la clé (en modifiant le BIOS pour booter sur USB)

Perso j'ai choisi l'install en mode expert et ai mis une stable (avec une businesscard, la branche voulue sera proposée pendant l'installation) Le disque dur est correctement détecté (en sda) donc aucun souci d'installation, tout se fait comme depuis un CD.

----
* Sur un système UNIX, zcat peut être remplacé par :
 gunzip boot.img.gz dd if=boot.img of=/dev/sdX

Ensuite sous Windows il existe des équivalents à dd. Par exemple : http://software.intel.com/en-us/article ... Windows_PC

Pour la décompression du format gz sous Windows 7zip peut le faire : 
http://framakey.org/Portables/7zipPortable
(Merci MisterFreez)

Source : http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=29316&amp;start=0

[http://www.debian.org/releases/stable/i386/ch04s03.html.fr Documentation Debian en français]

[[Catégorie:Installation]]</text>
      <sha1>kipemqby8p25cgvb9nbahk8wg55v4ig</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5261</id>
      <parentid>5260</parentid>
      <timestamp>2013-06-09T16:14:08Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2044">Merci à [[Discussion_utilisateur:Zodar|Zodar]] pour son astuce !

'''Installer debian depuis une clé usb'''

Prérequis :
* avoir un système linux fonctionnel
* pouvoir démarrer sur USB

Avec l'émergence des notebooks (dépourvus de lecteur CD), peu de solutions s'offrent pour installer un système Linux.
* acheter un lecteur CD externe : peu onéreux, mais achat tout de même
* unetbootin : qui se dit être un installateur depuis un support USB ; mais qui n'est pas franchement au point.


Voilà une petite méthode simple et rapide pour installer debian depuis une clé USB.
Ce sujet donne suite à une petite astuce de MisterFriandise que j'ai empruntée :

:1) On se rend [http://ftp.nl.debian.org/debian/dists/stable/main/installer-i386/current/images/hd-media/ ici et on télécharge] : boot.img.gz (uniquement)
::1.1) On télécharge une netinstall

:2) On branche une clé USB qu'on démonte (on note son point de montage : /dev/sdb par exemple)

:3) En root 
 # zcat boot.img.gz &gt; /dev/sdb (pour reprendre l'exemple)

:4) On monte la clé (au plus simple, on déplug - replug)

:5) On copie sur la clé l'ISO de la businesscard

:6) On reboote sur la clé (en modifiant le BIOS pour booter sur USB)

Perso j'ai choisi l'install en mode expert et ai mis une stable (avec une businesscard, la branche voulue sera proposée pendant l'installation) Le disque dur est correctement détecté (en sda) donc aucun souci d'installation, tout se fait comme depuis un CD.

----
* Sur un système UNIX, zcat peut être remplacé par :
 gunzip boot.img.gz dd if=boot.img of=/dev/sdX

Ensuite sous Windows il existe des équivalents à dd. Par exemple : http://software.intel.com/en-us/article ... Windows_PC

Pour la décompression du format gz sous Windows 7zip peut le faire : 
http://framakey.org/Portables/7zipPortable
(Merci MisterFreez)

Source : http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=29316&amp;start=0

[http://www.debian.org/releases/stable/i386/ch04s03.html.fr Documentation Debian en français]

[[Catégorie:Installation]]</text>
      <sha1>s1xu24stwjtw7skl1lybjvfjlkca1hy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5401</id>
      <parentid>5261</parentid>
      <timestamp>2013-09-14T16:17:20Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="2633">Merci à [[Discussion_utilisateur:Zodar|Zodar]] pour son astuce !

'''Installer Debian depuis une clé USB'''

Pré-requis :
* avoir un système GNU/Linux fonctionnel ;
* pouvoir démarrer sur USB (il peut s'agir d'une option à régler dans le BIOS de la machine).

Avec l'émergence des notebooks (dépourvus de lecteur CD), peu de solutions s'offrent pour installer un système GNU/Linux :
* acheter un lecteur CD externe : peu onéreux, mais représente tout de même un investissement ;
* unetbootin : un installeur pour support USB, mais qui n'est pas franchement au point.


Voilà une petite méthode simple et rapide pour installer Debian depuis une clé USB.
Ce sujet donne suite à une petite astuce de MisterFriandise que j'ai empruntée :

:1a) pour une architecture i386 : Rendez-vous [http://ftp.nl.debian.org/debian/dists/stable/main/installer-i386/current/images/hd-media/ ici] et téléchargez boot.img.gz ;
:1b) pour une architecture amd64 : Rendez-vous [http://ftp.nl.debian.org/debian/dists/stable/main/installer-amd64/current/images/hd-media/ ici] et téléchargez boot.img.gz ;
::1.1) Téléchargez une image [http://www.debian.org/CD/netinst/ « netinstall »] ;

:2) Branchez votre clé USB et démontez-la (notez sa désignation sous /dev : /dev/sdb sera utilisé par la suite, mais devra bien sûr être remplacé par la désignation correcte sous votre système) ;

:3) En root :
 zcat boot.img.gz &gt; /dev/sdb

:4) Montez la clé (au plus simple, la débrancher/rebrancher devrait suffire) ;

:5) Copiez sur la clé l'image de la netinstall ;

:6) Redémarrez votre machine sur la clé (en modifiant si besoin les réglages du BIOS pour pouvoir démarrer sur USB).

Le disque dur est correctement détecté (en sda) donc aucun souci d'installation, tout se fait comme depuis un CD.

----

* Sur un système UNIX, zcat peut être remplacé par :
 gunzip boot.img.gz
 dd if=boot.img of=/dev/sdb

* Sous Windows il existe des équivalents à dd. (TODO : ''ajouter un lien vers un outil compatible Windows faisant l'affaire'')

Pour la décompression du format gunzip (.gz) sous Windows, vous pouvez utiliser [http://www.spiroo.be/7zip/ 7-zip].

(merci à MisterFreez pour ces précisions)

----

Source : [https://www.debian-fr.org/installer-debian-depuis-une-cle-usb-t29316.html le forum debian-fr.org]

Source : [http://www.debian.org/releases/stable/i386/ch04s03.html.fr la documentation officielle Debian]

----

Tout commentaire sur cet article est le bienvenu sur [https://www.debian-fr.org/digression-installer-debian-depuis-une-cle-usb-t29320.html le forum debian-fr.org].

[[Catégorie:Installation]]</text>
      <sha1>ioqjljjwbjzkiox6ru3hjs9m99g5fup</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5403</id>
      <parentid>5401</parentid>
      <timestamp>2013-09-15T17:42:39Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2596">Merci à [[Discussion_utilisateur:Zodar|Zodar]] pour son astuce !

'''Installer Debian depuis une clé USB'''

Pré-requis :
* avoir un système GNU/Linux fonctionnel ;
* pouvoir démarrer sur USB (il peut s'agir d'une option à régler dans le BIOS de la machine).

Avec l'émergence des notebooks (dépourvus de lecteur CD), peu de solutions s'offrent pour installer un système GNU/Linux :
* acheter un lecteur CD externe : peu onéreux, mais représente tout de même un investissement ;
* unetbootin : un installeur pour support USB, mais qui n'est pas franchement au point.


Voilà une petite méthode simple et rapide pour installer Debian depuis une clé USB.
Ce sujet donne suite à une petite astuce de MisterFriandise que j'ai empruntée :

:1a) pour une architecture i386 : Rendez-vous [http://ftp.nl.debian.org/debian/dists/stable/main/installer-i386/current/images/hd-media/ ici] et téléchargez boot.img.gz ;
:1b) pour une architecture amd64 : Rendez-vous [http://ftp.nl.debian.org/debian/dists/stable/main/installer-amd64/current/images/hd-media/ ici] et téléchargez boot.img.gz ;
::1.1) Téléchargez une image [http://www.debian.org/CD/netinst/ « netinstall »] ;

:2) Branchez votre clé USB et démontez-la (notez sa désignation sous /dev : /dev/sdb sera utilisé par la suite, mais devra bien sûr être remplacé par la désignation correcte sous votre système) ;

:3) En root :
 zcat boot.img.gz &gt; /dev/sdb

:4) Montez la clé (au plus simple, la débrancher/rebrancher devrait suffire) ;

:5) Copiez sur la clé l'image de la netinstall ;

:6) Redémarrez votre machine sur la clé (en modifiant si besoin les réglages du BIOS pour pouvoir démarrer sur USB).

Le disque dur est correctement détecté (en sda) donc aucun souci d'installation, tout se fait comme depuis un CD.

----

* Sur un système UNIX, zcat peut être remplacé par :
 gunzip boot.img.gz
 dd if=boot.img of=/dev/sdb

* Sous Windows il existe des équivalents à dd. Par exemple : http://www.chrysocome.net/dd

Pour la décompression du format gunzip (.gz) sous Windows, vous pouvez utiliser [http://www.spiroo.be/7zip/ 7-zip].

(merci à MisterFreez pour ces précisions)

----

Source : [https://www.debian-fr.org/installer-debian-depuis-une-cle-usb-t29316.html le forum debian-fr.org]

Source : [http://www.debian.org/releases/stable/i386/ch04s03.html.fr la documentation officielle Debian]

----

Tout commentaire sur cet article est le bienvenu sur [https://www.debian-fr.org/digression-installer-debian-depuis-une-cle-usb-t29320.html le forum debian-fr.org].

[[Catégorie:Installation]]</text>
      <sha1>t1hkk8ait7pa3sw9i5lwy9wojkbhkbs</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Installer le SSL sur Dovecot</title>
    <ns>0</ns>
    <id>711</id>
    <revision>
      <id>3141</id>
      <timestamp>2011-07-31T11:19:09Z</timestamp>
      <contributor>
        <username>Gilles974</username>
        <id>143</id>
      </contributor>
      <comment>Page créée avec « == Dovecot et le SSL ==  === Préparation de l'environnement ===  dans un premier temps, nous allons nous occuper de la conf général de dovecot  Dans le protocole imap, nou... »</comment>
      <text xml:space="preserve" bytes="7455">== Dovecot et le SSL ==

=== Préparation de l'environnement ===

dans un premier temps, nous allons nous occuper de la conf général de dovecot

Dans le protocole imap, nous allons rajouter un paramètre qui permet de modifier le comportement de Dovecot 
face à certains clients mails et de leurs bugs éventuels. Pour cela ouvrez le fichier :

&lt;code&gt;
root@facteur:~# vi /etc/dovecot/dovecot.conf

protocol imap {
imap_client_workarounds = outlook-idle delay-newmail netscape-eoh tb-extra-mailbox-sep
}
&lt;/code&gt;

'''outlook-idle :''' Outlook et Outlook Express ne coupent jamais avec une commande IDLE. 
               Si Dovecot ne reçoit rien pendant 30 minutes, il coupe la connexion. 
               C’est correct, mais Outlook Express ne se reconnecte pas et vous ne voyez donc plus l’arrivée de nouveaux messages.

'''netscape-eoh :''' force l’ajout d’une ligne vide en fin de hearder des mails.  
               Normalement cette ligne vide est présente. Mais en le forçant, on en est certain

'''tb-extra-mailbox-sep :''' en théorie seulement nécessaire avec des boites au format mailbox

Dovecot envoie par défaut ses logs dans syslog. Pour décharger le fichier et avoir une meilleur vue
de se qui se passe au sein de dovecot, nous allons lui créer son propre fichier de logs
Rajouter dans le fichier /etc/dovecot/dovecot.conf la ligne ci-dessous. Et donner lui les bons droits

&lt;code&gt;
info_log_path = /var/log/dovecot-info.log

chown facteur.facteur /var/log/dovecot-info.log &amp;&amp; chmod 770 /var/log/dovecot-info.log
&lt;/code&gt;

Création du fichier de log

&lt;code&gt;
root@facteur:~#  vi /etc/logrotate.d/dovecot

et inscrivez les lignes ci-dessous dedans

/var/log/dovecot-info.log {
  missingok
  notifempty
  delaycompress
  sharedscripts
  postrotate
    /bin/kill -USR1 `cat /var/run/dovecot/master.pid 2&gt;/dev/null` 2&gt; /dev/null || true
  endscript
}
&lt;/code&gt;

=== Mise en place du SSL ===

Nous retournons dans le fichier dovecot.conf pour modifier la section : protocol imap et rajoutez à la suite
les lignes suivantes

&lt;code&gt;
root@facteur:~# vi /etc/dovecot/dovecot.conf

protocol imap {
imap_client_workarounds = outlook-idle delay-newmail netscape-eoh tb-extra-mailbox-sep
listen = 127.0.0.1:143
ssl_listen = *:993
}
&lt;/code&gt;

Les certificat SSL ont étés générés lors de l'installation. Mais rien ne vous empêche
de mettre vos propres certificats.
Les certificats auto-signé de Dovecot se trouve dans '''/etc/ssl/certs/dovecot.pem'''

Vous pouvez les mettent dans la section protocol imap ou dans le fichier global (en debut).
L'avantage de les mettent dans la section imap, c'est que vous pouvez générer d'autres certificats
et les mettent dans la section '''protocol pop3'''. A vous de voir

Modifier la variable '''disable_plaintext_auth = no''' dèjà présente ci-dessous à &quot;yes&quot;, et ajouter les lignes suivantes.

&lt;code&gt;
disable_plaintext_auth = yes
auth_mechanisms = plain
ssl = yes
ssl_cert_file = /etc/ssl/certs/dovecot.pem
ssl_key_file = /etc/ssl/private/dovecot.pem
&lt;/code&gt;

relancer dovecot 

&lt;code&gt;
root@facteur:~# /etc/init.d/dovecot restart
&lt;/code&gt;

Faisons quelques petites vérifications

&lt;code&gt;
root@facteur:~#  lsof -i tcp:993

COMMAND    PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
dovecot   3018    root    8u  IPv4   6764      0t0  TCP *:imaps (LISTEN)
imap-logi 3029 dovecot    5u  IPv4   6764      0t0  TCP *:imaps (LISTEN)
imap-logi 3030 dovecot    5u  IPv4   6764      0t0  TCP *:imaps (LISTEN)
imap-logi 3031 dovecot    5u  IPv4   6764      0t0  TCP *:imaps (LISTEN)

root@facteur:~#  netstat -tulpen | grep LISTEN
....
tcp        0      0 0.0.0.0:993             0.0.0.0:*               LISTEN      0          6764        3018/dovecot
....

root@facteur:~# openssl s_client -connect 127.0.0.1:993  

CONNECTED(00000003)
depth=0 /O=Dovecot mail server/OU=facteur.bougnat.org/CN=facteur.bougnat.org/emailAddress=root@facteur.bougnat.org
verify error:num=18:self signed certificate
verify return:1
depth=0 /O=Dovecot mail server/OU=facteur.bougnat.org/CN=facteur.bougnat.org/emailAddress=root@facteur.bougnat.org
verify return:1
---
Certificate chain
 0 s:/O=Dovecot mail server/OU=facteur.bougnat.org/CN=facteur.bougnat.org/emailAddress=root@facteur.bougnat.org
   i:/O=Dovecot mail server/OU=facteur.bougnat.org/CN=facteur.bougnat.org/emailAddress=root@facteur.bougnat.org
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIEdzCCA1+gAwIBAgIJAIUkTR2yA5P0MA0GCSqGSIb3DQEBBQUAMIGDMRwwGgYD
.....
7aBwPRRdyKwgx4Ocz8ab2iWYrQ21N/6aB34DODTaVDLn1IP/h4XgZLBC6w==
-----END CERTIFICATE-----
....
---
No client certificate CA names sent
---
SSL handshake has read 1846 bytes and written 319 bytes
---
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1
    Cipher    : DHE-RSA-AES256-SHA
    Session-ID: 193039B58181C09ABBE4364CA961AD3A77F5A4FB0BAA7BA99199C41EE845FBE2
    Session-ID-ctx:
    Master-Key: FB2FFB51A9AC7F82C65FA9A494AE5E8D5F7D6492D3CF50C8444ACBD915F1851F51D07B7997DBE03B5A2B0F2DD7BFC4E9
    Key-Arg   : None
    Start Time: 1311957648
    Timeout   : 300 (sec)
    Verify return code: 18 (self signed certificate)
---
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;Sent&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;Junk&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;Trash&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;Drafts&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;dovecot.sieve&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 11 EXISTS
* 2 RECENT
* OK [UNSEEN 10] First unseen.
* OK [UIDVALIDITY 1307884974] UIDs valid
* OK [UIDNEXT 12] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
closed
&lt;/code&gt;

Redémarrons les services

&lt;code&gt;
root@facteur:~# service dovecot restart

Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart

Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.

root@facteur:~# service postfix restart

Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

les clients peuvent se connecter au serveur IMAP sur le port 993 et toutes les communications seront chiffrées

Si vous vous connectez au serveur avec outlook express, lors du paramétrage de votre compte,
n’oubliez pas de renseigner dans l'onglet &quot;Avancé&quot; le port 993 dans le champ &quot;Courrier entrants (IMAP)&quot;
et de cocher &quot;Ce serveur nécessite une connexion sécurisée (SSL)&quot;

=== Astuces ===

mettre au debut du fichier /etc/doveot/dovecot.conf les directives suivantes pour isoler la tâche de login
[code]login_chroot = yes
login_user = dovecot
login_process_per_connection = yes[/code]</text>
      <sha1>4ew5sp8hvuzjnuq4jydnfi0extlwi2r</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3142</id>
      <parentid>3141</parentid>
      <timestamp>2011-07-31T11:20:58Z</timestamp>
      <contributor>
        <username>Gilles974</username>
        <id>143</id>
      </contributor>
      <comment>/* Astuces */</comment>
      <text xml:space="preserve" bytes="7459">== Dovecot et le SSL ==

=== Préparation de l'environnement ===

dans un premier temps, nous allons nous occuper de la conf général de dovecot

Dans le protocole imap, nous allons rajouter un paramètre qui permet de modifier le comportement de Dovecot 
face à certains clients mails et de leurs bugs éventuels. Pour cela ouvrez le fichier :

&lt;code&gt;
root@facteur:~# vi /etc/dovecot/dovecot.conf

protocol imap {
imap_client_workarounds = outlook-idle delay-newmail netscape-eoh tb-extra-mailbox-sep
}
&lt;/code&gt;

'''outlook-idle :''' Outlook et Outlook Express ne coupent jamais avec une commande IDLE. 
               Si Dovecot ne reçoit rien pendant 30 minutes, il coupe la connexion. 
               C’est correct, mais Outlook Express ne se reconnecte pas et vous ne voyez donc plus l’arrivée de nouveaux messages.

'''netscape-eoh :''' force l’ajout d’une ligne vide en fin de hearder des mails.  
               Normalement cette ligne vide est présente. Mais en le forçant, on en est certain

'''tb-extra-mailbox-sep :''' en théorie seulement nécessaire avec des boites au format mailbox

Dovecot envoie par défaut ses logs dans syslog. Pour décharger le fichier et avoir une meilleur vue
de se qui se passe au sein de dovecot, nous allons lui créer son propre fichier de logs
Rajouter dans le fichier /etc/dovecot/dovecot.conf la ligne ci-dessous. Et donner lui les bons droits

&lt;code&gt;
info_log_path = /var/log/dovecot-info.log

chown facteur.facteur /var/log/dovecot-info.log &amp;&amp; chmod 770 /var/log/dovecot-info.log
&lt;/code&gt;

Création du fichier de log

&lt;code&gt;
root@facteur:~#  vi /etc/logrotate.d/dovecot

et inscrivez les lignes ci-dessous dedans

/var/log/dovecot-info.log {
  missingok
  notifempty
  delaycompress
  sharedscripts
  postrotate
    /bin/kill -USR1 `cat /var/run/dovecot/master.pid 2&gt;/dev/null` 2&gt; /dev/null || true
  endscript
}
&lt;/code&gt;

=== Mise en place du SSL ===

Nous retournons dans le fichier dovecot.conf pour modifier la section : protocol imap et rajoutez à la suite
les lignes suivantes

&lt;code&gt;
root@facteur:~# vi /etc/dovecot/dovecot.conf

protocol imap {
imap_client_workarounds = outlook-idle delay-newmail netscape-eoh tb-extra-mailbox-sep
listen = 127.0.0.1:143
ssl_listen = *:993
}
&lt;/code&gt;

Les certificat SSL ont étés générés lors de l'installation. Mais rien ne vous empêche
de mettre vos propres certificats.
Les certificats auto-signé de Dovecot se trouve dans '''/etc/ssl/certs/dovecot.pem'''

Vous pouvez les mettent dans la section protocol imap ou dans le fichier global (en debut).
L'avantage de les mettent dans la section imap, c'est que vous pouvez générer d'autres certificats
et les mettent dans la section '''protocol pop3'''. A vous de voir

Modifier la variable '''disable_plaintext_auth = no''' dèjà présente ci-dessous à &quot;yes&quot;, et ajouter les lignes suivantes.

&lt;code&gt;
disable_plaintext_auth = yes
auth_mechanisms = plain
ssl = yes
ssl_cert_file = /etc/ssl/certs/dovecot.pem
ssl_key_file = /etc/ssl/private/dovecot.pem
&lt;/code&gt;

relancer dovecot 

&lt;code&gt;
root@facteur:~# /etc/init.d/dovecot restart
&lt;/code&gt;

Faisons quelques petites vérifications

&lt;code&gt;
root@facteur:~#  lsof -i tcp:993

COMMAND    PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
dovecot   3018    root    8u  IPv4   6764      0t0  TCP *:imaps (LISTEN)
imap-logi 3029 dovecot    5u  IPv4   6764      0t0  TCP *:imaps (LISTEN)
imap-logi 3030 dovecot    5u  IPv4   6764      0t0  TCP *:imaps (LISTEN)
imap-logi 3031 dovecot    5u  IPv4   6764      0t0  TCP *:imaps (LISTEN)

root@facteur:~#  netstat -tulpen | grep LISTEN
....
tcp        0      0 0.0.0.0:993             0.0.0.0:*               LISTEN      0          6764        3018/dovecot
....

root@facteur:~# openssl s_client -connect 127.0.0.1:993  

CONNECTED(00000003)
depth=0 /O=Dovecot mail server/OU=facteur.bougnat.org/CN=facteur.bougnat.org/emailAddress=root@facteur.bougnat.org
verify error:num=18:self signed certificate
verify return:1
depth=0 /O=Dovecot mail server/OU=facteur.bougnat.org/CN=facteur.bougnat.org/emailAddress=root@facteur.bougnat.org
verify return:1
---
Certificate chain
 0 s:/O=Dovecot mail server/OU=facteur.bougnat.org/CN=facteur.bougnat.org/emailAddress=root@facteur.bougnat.org
   i:/O=Dovecot mail server/OU=facteur.bougnat.org/CN=facteur.bougnat.org/emailAddress=root@facteur.bougnat.org
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIEdzCCA1+gAwIBAgIJAIUkTR2yA5P0MA0GCSqGSIb3DQEBBQUAMIGDMRwwGgYD
.....
7aBwPRRdyKwgx4Ocz8ab2iWYrQ21N/6aB34DODTaVDLn1IP/h4XgZLBC6w==
-----END CERTIFICATE-----
....
---
No client certificate CA names sent
---
SSL handshake has read 1846 bytes and written 319 bytes
---
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1
    Cipher    : DHE-RSA-AES256-SHA
    Session-ID: 193039B58181C09ABBE4364CA961AD3A77F5A4FB0BAA7BA99199C41EE845FBE2
    Session-ID-ctx:
    Master-Key: FB2FFB51A9AC7F82C65FA9A494AE5E8D5F7D6492D3CF50C8444ACBD915F1851F51D07B7997DBE03B5A2B0F2DD7BFC4E9
    Key-Arg   : None
    Start Time: 1311957648
    Timeout   : 300 (sec)
    Verify return code: 18 (self signed certificate)
---
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;Sent&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;Junk&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;Trash&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;Drafts&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;dovecot.sieve&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 11 EXISTS
* 2 RECENT
* OK [UNSEEN 10] First unseen.
* OK [UIDVALIDITY 1307884974] UIDs valid
* OK [UIDNEXT 12] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
closed
&lt;/code&gt;

Redémarrons les services

&lt;code&gt;
root@facteur:~# service dovecot restart

Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart

Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.

root@facteur:~# service postfix restart

Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

les clients peuvent se connecter au serveur IMAP sur le port 993 et toutes les communications seront chiffrées

Si vous vous connectez au serveur avec outlook express, lors du paramétrage de votre compte,
n’oubliez pas de renseigner dans l'onglet &quot;Avancé&quot; le port 993 dans le champ &quot;Courrier entrants (IMAP)&quot;
et de cocher &quot;Ce serveur nécessite une connexion sécurisée (SSL)&quot;

=== Astuces ===

mettre au debut du fichier /etc/dovecot/dovecot.conf les directives suivantes pour isoler la tâche de login

&lt;code&gt;
login_chroot = yes
login_user = dovecot
login_process_per_connection = yes
&lt;/code&gt;</text>
      <sha1>ewm6cj1ogs9iuyum0896imfu2thnaa5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3143</id>
      <parentid>3142</parentid>
      <timestamp>2011-07-31T12:06:41Z</timestamp>
      <contributor>
        <username>Gilles974</username>
        <id>143</id>
      </contributor>
      <text xml:space="preserve" bytes="7414">== Dovecot et le SSL ==

=== Préparation de l'environnement ===

dans un premier temps, nous allons nous occuper de la conf général de dovecot

Dans le protocole imap, nous allons rajouter un paramètre qui permet de modifier le comportement de Dovecot 
face à certains clients mails et de leurs bugs éventuels. Pour cela ouvrez le fichier :

&lt;code&gt;
root@facteur:~# vi /etc/dovecot/dovecot.conf

protocol imap {
imap_client_workarounds = outlook-idle delay-newmail netscape-eoh tb-extra-mailbox-sep
}
&lt;/code&gt;

'''outlook-idle :''' Outlook et Outlook Express ne coupent jamais avec une commande IDLE. 
Si Dovecot ne reçoit rien pendant 30 minutes, il coupe la connexion. C’est correct, mais 
Outlook Express ne se reconnecte pas et vous ne voyez donc plus l’arrivée de nouveaux messages.

'''netscape-eoh :''' force l’ajout d’une ligne vide en fin de hearder des mails.  
Normalement cette ligne vide est présente. Mais en le forçant, on en est certain

'''tb-extra-mailbox-sep :''' en théorie seulement nécessaire avec des boites au format mailbox

Dovecot envoie par défaut ses logs dans syslog. Pour décharger le fichier et avoir une meilleur vue
de se qui se passe au sein de dovecot, nous allons lui créer son propre fichier de logs
Rajouter dans le fichier /etc/dovecot/dovecot.conf la ligne ci-dessous. Et donner lui les bons droits

&lt;code&gt;
info_log_path = /var/log/dovecot-info.log

chown facteur.facteur /var/log/dovecot-info.log &amp;&amp; chmod 770 /var/log/dovecot-info.log
&lt;/code&gt;

Création du fichier de log

&lt;code&gt;
root@facteur:~#  vi /etc/logrotate.d/dovecot

et inscrivez les lignes ci-dessous dedans

/var/log/dovecot-info.log {
  missingok
  notifempty
  delaycompress
  sharedscripts
  postrotate
    /bin/kill -USR1 `cat /var/run/dovecot/master.pid 2&gt;/dev/null` 2&gt; /dev/null || true
  endscript
}
&lt;/code&gt;

=== Mise en place du SSL ===

Nous retournons dans le fichier dovecot.conf pour modifier la section : protocol imap et rajoutez à la suite
les lignes suivantes

&lt;code&gt;
root@facteur:~# vi /etc/dovecot/dovecot.conf

protocol imap {
imap_client_workarounds = outlook-idle delay-newmail netscape-eoh tb-extra-mailbox-sep
listen = 127.0.0.1:143
ssl_listen = *:993
}
&lt;/code&gt;

Les certificat SSL ont étés générés lors de l'installation. Mais rien ne vous empêche
de mettre vos propres certificats.
Les certificats auto-signé de Dovecot se trouve dans '''/etc/ssl/certs/dovecot.pem'''

Vous pouvez les mettent dans la section protocol imap ou dans le fichier global (en debut).
L'avantage de les mettent dans la section imap, c'est que vous pouvez générer d'autres certificats
et les mettent dans la section '''protocol pop3'''. A vous de voir

Modifier la variable '''disable_plaintext_auth = no''' dèjà présente ci-dessous à &quot;yes&quot;, et ajouter les lignes suivantes.

&lt;code&gt;
disable_plaintext_auth = yes
auth_mechanisms = plain
ssl = yes
ssl_cert_file = /etc/ssl/certs/dovecot.pem
ssl_key_file = /etc/ssl/private/dovecot.pem
&lt;/code&gt;

relancer dovecot 

&lt;code&gt;
root@facteur:~# /etc/init.d/dovecot restart
&lt;/code&gt;

Faisons quelques petites vérifications

&lt;code&gt;
root@facteur:~#  lsof -i tcp:993

COMMAND    PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
dovecot   3018    root    8u  IPv4   6764      0t0  TCP *:imaps (LISTEN)
imap-logi 3029 dovecot    5u  IPv4   6764      0t0  TCP *:imaps (LISTEN)
imap-logi 3030 dovecot    5u  IPv4   6764      0t0  TCP *:imaps (LISTEN)
imap-logi 3031 dovecot    5u  IPv4   6764      0t0  TCP *:imaps (LISTEN)

root@facteur:~#  netstat -tulpen | grep LISTEN
....
tcp        0      0 0.0.0.0:993             0.0.0.0:*               LISTEN      0          6764        3018/dovecot
....

root@facteur:~# openssl s_client -connect 127.0.0.1:993  

CONNECTED(00000003)
depth=0 /O=Dovecot mail server/OU=facteur.bougnat.org/CN=facteur.bougnat.org/emailAddress=root@facteur.bougnat.org
verify error:num=18:self signed certificate
verify return:1
depth=0 /O=Dovecot mail server/OU=facteur.bougnat.org/CN=facteur.bougnat.org/emailAddress=root@facteur.bougnat.org
verify return:1
---
Certificate chain
 0 s:/O=Dovecot mail server/OU=facteur.bougnat.org/CN=facteur.bougnat.org/emailAddress=root@facteur.bougnat.org
   i:/O=Dovecot mail server/OU=facteur.bougnat.org/CN=facteur.bougnat.org/emailAddress=root@facteur.bougnat.org
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIEdzCCA1+gAwIBAgIJAIUkTR2yA5P0MA0GCSqGSIb3DQEBBQUAMIGDMRwwGgYD
.....
7aBwPRRdyKwgx4Ocz8ab2iWYrQ21N/6aB34DODTaVDLn1IP/h4XgZLBC6w==
-----END CERTIFICATE-----
....
---
No client certificate CA names sent
---
SSL handshake has read 1846 bytes and written 319 bytes
---
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1
    Cipher    : DHE-RSA-AES256-SHA
    Session-ID: 193039B58181C09ABBE4364CA961AD3A77F5A4FB0BAA7BA99199C41EE845FBE2
    Session-ID-ctx:
    Master-Key: FB2FFB51A9AC7F82C65FA9A494AE5E8D5F7D6492D3CF50C8444ACBD915F1851F51D07B7997DBE03B5A2B0F2DD7BFC4E9
    Key-Arg   : None
    Start Time: 1311957648
    Timeout   : 300 (sec)
    Verify return code: 18 (self signed certificate)
---
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;Sent&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;Junk&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;Trash&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;Drafts&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;dovecot.sieve&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 11 EXISTS
* 2 RECENT
* OK [UNSEEN 10] First unseen.
* OK [UIDVALIDITY 1307884974] UIDs valid
* OK [UIDNEXT 12] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
closed
&lt;/code&gt;

Redémarrons les services

&lt;code&gt;
root@facteur:~# service dovecot restart

Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart

Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.

root@facteur:~# service postfix restart

Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

les clients peuvent se connecter au serveur IMAP sur le port 993 et toutes les communications seront chiffrées

Si vous vous connectez au serveur avec outlook express, lors du paramétrage de votre compte,
n’oubliez pas de renseigner dans l'onglet &quot;Avancé&quot; le port 993 dans le champ &quot;Courrier entrants (IMAP)&quot;
et de cocher &quot;Ce serveur nécessite une connexion sécurisée (SSL)&quot;

=== Astuces ===

mettre au debut du fichier /etc/dovecot/dovecot.conf les directives suivantes pour isoler la tâche de login

&lt;code&gt;
login_chroot = yes
login_user = dovecot
login_process_per_connection = yes
&lt;/code&gt;</text>
      <sha1>06645x2lnrknc8ipu3ccw0f6x4hyzxi</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3151</id>
      <parentid>3143</parentid>
      <timestamp>2011-08-01T09:23:33Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Préparation de l'environnement */</comment>
      <text xml:space="preserve" bytes="7413">== Dovecot et le SSL ==

=== Préparation de l'environnement ===

dans un premier temps, nous allons nous occuper de la conf général de dovecot

Dans le protocole imap, nous allons rajouter un paramètre qui permet de modifier le comportement de Dovecot 
face à certains clients mails et de leurs bugs éventuels. Pour cela ouvrez le fichier :

&lt;code&gt;
root@facteur:~# vi /etc/dovecot/dovecot.conf

protocol imap {
imap_client_workarounds = outlook-idle delay-newmail netscape-eoh tb-extra-mailbox-sep
}
&lt;/code&gt;

'''outlook-idle :''' Outlook et Outlook Express ne coupent jamais avec une commande IDLE. 
Si Dovecot ne reçoit rien pendant 30 minutes, il coupe la connexion. C’est correct, mais 
Outlook Express ne se reconnecte pas et vous ne voyez donc plus l’arrivée de nouveaux messages.

'''netscape-eoh :''' force l’ajout d’une ligne vide en fin de header des mails.  
Normalement cette ligne vide est présente. Mais en la forçant, on en est certain

'''tb-extra-mailbox-sep :''' en théorie seulement nécessaire avec des boites au format mailbox

Dovecot envoie par défaut ses logs dans syslog. Pour décharger le fichier et avoir une meilleur vue
de ce qui se passe au sein de dovecot, nous allons lui créer son propre fichier de logs
Rajouter dans le fichier /etc/dovecot/dovecot.conf la ligne ci-dessous. Et donnez lui les bons droits

&lt;code&gt;
info_log_path = /var/log/dovecot-info.log

chown facteur.facteur /var/log/dovecot-info.log &amp;&amp; chmod 770 /var/log/dovecot-info.log
&lt;/code&gt;

Création du fichier de log

&lt;code&gt;
root@facteur:~#  vi /etc/logrotate.d/dovecot

et inscrivez les lignes ci-dessous dedans

/var/log/dovecot-info.log {
  missingok
  notifempty
  delaycompress
  sharedscripts
  postrotate
    /bin/kill -USR1 `cat /var/run/dovecot/master.pid 2&gt;/dev/null` 2&gt; /dev/null || true
  endscript
}
&lt;/code&gt;

=== Mise en place du SSL ===

Nous retournons dans le fichier dovecot.conf pour modifier la section : protocol imap et rajoutez à la suite
les lignes suivantes

&lt;code&gt;
root@facteur:~# vi /etc/dovecot/dovecot.conf

protocol imap {
imap_client_workarounds = outlook-idle delay-newmail netscape-eoh tb-extra-mailbox-sep
listen = 127.0.0.1:143
ssl_listen = *:993
}
&lt;/code&gt;

Les certificat SSL ont étés générés lors de l'installation. Mais rien ne vous empêche
de mettre vos propres certificats.
Les certificats auto-signé de Dovecot se trouve dans '''/etc/ssl/certs/dovecot.pem'''

Vous pouvez les mettent dans la section protocol imap ou dans le fichier global (en debut).
L'avantage de les mettent dans la section imap, c'est que vous pouvez générer d'autres certificats
et les mettent dans la section '''protocol pop3'''. A vous de voir

Modifier la variable '''disable_plaintext_auth = no''' dèjà présente ci-dessous à &quot;yes&quot;, et ajouter les lignes suivantes.

&lt;code&gt;
disable_plaintext_auth = yes
auth_mechanisms = plain
ssl = yes
ssl_cert_file = /etc/ssl/certs/dovecot.pem
ssl_key_file = /etc/ssl/private/dovecot.pem
&lt;/code&gt;

relancer dovecot 

&lt;code&gt;
root@facteur:~# /etc/init.d/dovecot restart
&lt;/code&gt;

Faisons quelques petites vérifications

&lt;code&gt;
root@facteur:~#  lsof -i tcp:993

COMMAND    PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
dovecot   3018    root    8u  IPv4   6764      0t0  TCP *:imaps (LISTEN)
imap-logi 3029 dovecot    5u  IPv4   6764      0t0  TCP *:imaps (LISTEN)
imap-logi 3030 dovecot    5u  IPv4   6764      0t0  TCP *:imaps (LISTEN)
imap-logi 3031 dovecot    5u  IPv4   6764      0t0  TCP *:imaps (LISTEN)

root@facteur:~#  netstat -tulpen | grep LISTEN
....
tcp        0      0 0.0.0.0:993             0.0.0.0:*               LISTEN      0          6764        3018/dovecot
....

root@facteur:~# openssl s_client -connect 127.0.0.1:993  

CONNECTED(00000003)
depth=0 /O=Dovecot mail server/OU=facteur.bougnat.org/CN=facteur.bougnat.org/emailAddress=root@facteur.bougnat.org
verify error:num=18:self signed certificate
verify return:1
depth=0 /O=Dovecot mail server/OU=facteur.bougnat.org/CN=facteur.bougnat.org/emailAddress=root@facteur.bougnat.org
verify return:1
---
Certificate chain
 0 s:/O=Dovecot mail server/OU=facteur.bougnat.org/CN=facteur.bougnat.org/emailAddress=root@facteur.bougnat.org
   i:/O=Dovecot mail server/OU=facteur.bougnat.org/CN=facteur.bougnat.org/emailAddress=root@facteur.bougnat.org
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIEdzCCA1+gAwIBAgIJAIUkTR2yA5P0MA0GCSqGSIb3DQEBBQUAMIGDMRwwGgYD
.....
7aBwPRRdyKwgx4Ocz8ab2iWYrQ21N/6aB34DODTaVDLn1IP/h4XgZLBC6w==
-----END CERTIFICATE-----
....
---
No client certificate CA names sent
---
SSL handshake has read 1846 bytes and written 319 bytes
---
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1
    Cipher    : DHE-RSA-AES256-SHA
    Session-ID: 193039B58181C09ABBE4364CA961AD3A77F5A4FB0BAA7BA99199C41EE845FBE2
    Session-ID-ctx:
    Master-Key: FB2FFB51A9AC7F82C65FA9A494AE5E8D5F7D6492D3CF50C8444ACBD915F1851F51D07B7997DBE03B5A2B0F2DD7BFC4E9
    Key-Arg   : None
    Start Time: 1311957648
    Timeout   : 300 (sec)
    Verify return code: 18 (self signed certificate)
---
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;Sent&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;Junk&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;Trash&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;Drafts&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;dovecot.sieve&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 11 EXISTS
* 2 RECENT
* OK [UNSEEN 10] First unseen.
* OK [UIDVALIDITY 1307884974] UIDs valid
* OK [UIDNEXT 12] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
closed
&lt;/code&gt;

Redémarrons les services

&lt;code&gt;
root@facteur:~# service dovecot restart

Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart

Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.

root@facteur:~# service postfix restart

Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

les clients peuvent se connecter au serveur IMAP sur le port 993 et toutes les communications seront chiffrées

Si vous vous connectez au serveur avec outlook express, lors du paramétrage de votre compte,
n’oubliez pas de renseigner dans l'onglet &quot;Avancé&quot; le port 993 dans le champ &quot;Courrier entrants (IMAP)&quot;
et de cocher &quot;Ce serveur nécessite une connexion sécurisée (SSL)&quot;

=== Astuces ===

mettre au debut du fichier /etc/dovecot/dovecot.conf les directives suivantes pour isoler la tâche de login

&lt;code&gt;
login_chroot = yes
login_user = dovecot
login_process_per_connection = yes
&lt;/code&gt;</text>
      <sha1>9m5ytws088c1ofkuxlbzp90mdpd1mpn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3152</id>
      <parentid>3151</parentid>
      <timestamp>2011-08-01T09:26:20Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Mise en place du SSL */</comment>
      <text xml:space="preserve" bytes="7414">== Dovecot et le SSL ==

=== Préparation de l'environnement ===

dans un premier temps, nous allons nous occuper de la conf général de dovecot

Dans le protocole imap, nous allons rajouter un paramètre qui permet de modifier le comportement de Dovecot 
face à certains clients mails et de leurs bugs éventuels. Pour cela ouvrez le fichier :

&lt;code&gt;
root@facteur:~# vi /etc/dovecot/dovecot.conf

protocol imap {
imap_client_workarounds = outlook-idle delay-newmail netscape-eoh tb-extra-mailbox-sep
}
&lt;/code&gt;

'''outlook-idle :''' Outlook et Outlook Express ne coupent jamais avec une commande IDLE. 
Si Dovecot ne reçoit rien pendant 30 minutes, il coupe la connexion. C’est correct, mais 
Outlook Express ne se reconnecte pas et vous ne voyez donc plus l’arrivée de nouveaux messages.

'''netscape-eoh :''' force l’ajout d’une ligne vide en fin de header des mails.  
Normalement cette ligne vide est présente. Mais en la forçant, on en est certain

'''tb-extra-mailbox-sep :''' en théorie seulement nécessaire avec des boites au format mailbox

Dovecot envoie par défaut ses logs dans syslog. Pour décharger le fichier et avoir une meilleur vue
de ce qui se passe au sein de dovecot, nous allons lui créer son propre fichier de logs
Rajouter dans le fichier /etc/dovecot/dovecot.conf la ligne ci-dessous. Et donnez lui les bons droits

&lt;code&gt;
info_log_path = /var/log/dovecot-info.log

chown facteur.facteur /var/log/dovecot-info.log &amp;&amp; chmod 770 /var/log/dovecot-info.log
&lt;/code&gt;

Création du fichier de log

&lt;code&gt;
root@facteur:~#  vi /etc/logrotate.d/dovecot

et inscrivez les lignes ci-dessous dedans

/var/log/dovecot-info.log {
  missingok
  notifempty
  delaycompress
  sharedscripts
  postrotate
    /bin/kill -USR1 `cat /var/run/dovecot/master.pid 2&gt;/dev/null` 2&gt; /dev/null || true
  endscript
}
&lt;/code&gt;

=== Mise en place du SSL ===

Nous retournons dans le fichier dovecot.conf pour modifier la section : protocol imap et rajouter à la suite
les lignes suivantes

&lt;code&gt;
root@facteur:~# vi /etc/dovecot/dovecot.conf

protocol imap {
imap_client_workarounds = outlook-idle delay-newmail netscape-eoh tb-extra-mailbox-sep
listen = 127.0.0.1:143
ssl_listen = *:993
}
&lt;/code&gt;

Les certificat SSL ont étés générés lors de l'installation. Mais rien ne vous empêche
de mettre vos propres certificats.
Les certificats auto-signé de Dovecot se trouvent dans '''/etc/ssl/certs/dovecot.pem'''

Vous pouvez les mettre dans la section protocol imap ou dans le fichier global (en début).
L'avantage de les mettre dans la section imap, c'est que vous pouvez générer d'autres certificats
ou les mettre dans la section '''protocol pop3'''. A vous de voir

Modifier la variable '''disable_plaintext_auth = no''' dèjà présente ci-dessous à &quot;yes&quot;, et ajouter les lignes suivantes.

&lt;code&gt;
disable_plaintext_auth = yes
auth_mechanisms = plain
ssl = yes
ssl_cert_file = /etc/ssl/certs/dovecot.pem
ssl_key_file = /etc/ssl/private/dovecot.pem
&lt;/code&gt;

relancer dovecot 

&lt;code&gt;
root@facteur:~# /etc/init.d/dovecot restart
&lt;/code&gt;

Faisons quelques petites vérifications.

&lt;code&gt;
root@facteur:~#  lsof -i tcp:993

COMMAND    PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
dovecot   3018    root    8u  IPv4   6764      0t0  TCP *:imaps (LISTEN)
imap-logi 3029 dovecot    5u  IPv4   6764      0t0  TCP *:imaps (LISTEN)
imap-logi 3030 dovecot    5u  IPv4   6764      0t0  TCP *:imaps (LISTEN)
imap-logi 3031 dovecot    5u  IPv4   6764      0t0  TCP *:imaps (LISTEN)

root@facteur:~#  netstat -tulpen | grep LISTEN
....
tcp        0      0 0.0.0.0:993             0.0.0.0:*               LISTEN      0          6764        3018/dovecot
....

root@facteur:~# openssl s_client -connect 127.0.0.1:993  

CONNECTED(00000003)
depth=0 /O=Dovecot mail server/OU=facteur.bougnat.org/CN=facteur.bougnat.org/emailAddress=root@facteur.bougnat.org
verify error:num=18:self signed certificate
verify return:1
depth=0 /O=Dovecot mail server/OU=facteur.bougnat.org/CN=facteur.bougnat.org/emailAddress=root@facteur.bougnat.org
verify return:1
---
Certificate chain
 0 s:/O=Dovecot mail server/OU=facteur.bougnat.org/CN=facteur.bougnat.org/emailAddress=root@facteur.bougnat.org
   i:/O=Dovecot mail server/OU=facteur.bougnat.org/CN=facteur.bougnat.org/emailAddress=root@facteur.bougnat.org
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIEdzCCA1+gAwIBAgIJAIUkTR2yA5P0MA0GCSqGSIb3DQEBBQUAMIGDMRwwGgYD
.....
7aBwPRRdyKwgx4Ocz8ab2iWYrQ21N/6aB34DODTaVDLn1IP/h4XgZLBC6w==
-----END CERTIFICATE-----
....
---
No client certificate CA names sent
---
SSL handshake has read 1846 bytes and written 319 bytes
---
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1
    Cipher    : DHE-RSA-AES256-SHA
    Session-ID: 193039B58181C09ABBE4364CA961AD3A77F5A4FB0BAA7BA99199C41EE845FBE2
    Session-ID-ctx:
    Master-Key: FB2FFB51A9AC7F82C65FA9A494AE5E8D5F7D6492D3CF50C8444ACBD915F1851F51D07B7997DBE03B5A2B0F2DD7BFC4E9
    Key-Arg   : None
    Start Time: 1311957648
    Timeout   : 300 (sec)
    Verify return code: 18 (self signed certificate)
---
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE AUTH=PLAIN] Dovecot ready.
a1 LOGIN essai@essai.org essai
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
a2 LIST &quot;&quot; &quot;*&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;Sent&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;Junk&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;Trash&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;Drafts&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;dovecot.sieve&quot;
* LIST (\HasNoChildren) &quot;.&quot; &quot;INBOX&quot;
a2 OK List completed.
a3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 11 EXISTS
* 2 RECENT
* OK [UNSEEN 10] First unseen.
* OK [UIDVALIDITY 1307884974] UIDs valid
* OK [UIDNEXT 12] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
a3 OK [READ-ONLY] Select completed.
a4 LOGOUT
* BYE Logging out
a4 OK Logout completed.
closed
&lt;/code&gt;

Redémarrons les services

&lt;code&gt;
root@facteur:~# service dovecot restart

Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
.
root@facteur:~# service saslauthd restart

Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.

root@facteur:~# service postfix restart

Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
&lt;/code&gt;

les clients peuvent se connecter au serveur IMAP sur le port 993 et toutes les communications seront chiffrées

Si vous vous connectez au serveur avec outlook express, lors du paramétrage de votre compte,
n’oubliez pas de renseigner dans l'onglet &quot;Avancé&quot; le port 993 dans le champ &quot;Courrier entrants (IMAP)&quot;
et de cocher &quot;Ce serveur nécessite une connexion sécurisée (SSL)&quot;

=== Astuces ===

mettre au debut du fichier /etc/dovecot/dovecot.conf les directives suivantes pour isoler la tâche de login

&lt;code&gt;
login_chroot = yes
login_user = dovecot
login_process_per_connection = yes
&lt;/code&gt;</text>
      <sha1>1610fu6njtbph9a7rhambrryw2zxrl8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Installer les pilotes nVidia privateur</title>
    <ns>0</ns>
    <id>47</id>
    <revision>
      <id>123</id>
      <timestamp>2010-01-23T04:28:10Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « == I - Présentation ==  Avant tout sur Debian, il y a deux types de cartes nVidia : * Les vieilles -&gt; 'legacy' * Les nouvelles (chez nos cousins d'Ubuntu, ils ont préféré… »</comment>
      <text xml:space="preserve" bytes="8057">== I - Présentation ==

Avant tout sur Debian, il y a deux types de cartes nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe, que vous n'avez jamais rien compilé, ou que l'installation est nouvelle. Si ce n'est pas le cas assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur, recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libres, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :
[code]
## lenny
deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
[/code]
Bon ça c'est pour les gens 'stable', si vous êtes moins conservateur, vous êtes surement en SID, la version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépots, pour vérifier que votre sources.list vous permet d'y accéder tapez :
[code]
$ apt-cache policy nvidia-kernel-source
[/code]
Qui devrait vous donner quelque chose comme ça :
[code]
nvidia-kernel-source:
  Installé : 180.29-1
  Candidat : 180.29-1
 Table de version :
 *** 180.29-1 0
        970 http://ftp.fr.debian.org sid/non-free Packages
        100 /var/lib/dpkg/status
     173.14.09-5 0
        500 http://ftp.fr.debian.org lenny/non-free Packages
        900 http://ftp.fr.debian.org squeeze/non-free Packages
[/code]
Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un source.list permettant de se sortir de n'importe quelle dépendance, pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop : [url=http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]Sources.list au carré ou minimaliste[/url]

N'oubliez pas de mettre à jour la liste de vos paquets :
[code]
# apt-get update
[/code]

'''ATTENTION''' Si votre carte est basé sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique, je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.


== III - Détection de votre carte graphique ==

La partie la plus délicate, quel est mon pilote de carte graphique ?
[code]
$ lspci
[/code]
mon résultat, sur mon super portable Siemens :
[code]
...
03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
...
[/code]
dans les [] vous avez le type de carte, allez sur cette page : [url=http://www.nvidia.fr/object/legacy_drivers_fr.html]LEGACY[/url]
si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknow device, vous devrez mettre à jour vos identifiants :
[code]
# update-pciids
[/code]
et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot; veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite, nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique :

Si vous êtes avec gnome :
[code]# /etc/init.d/gdm stop[/code]

Si vous êtes avec KDE :
[code]# /etc/init.d/kdm stop[/code]

Si vous n'avez ni gnome, ni KDE, je suppose que vous savez très bien comment faire  :wink: 

Puis :
[code]
# nvidia-installer --uninstall
# modprobe -r nvidia
[/code]

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

[code]# find / -name &quot;*nvidia*&quot; -delete[/code]


== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, dans le cas d'une carte legacy, remplacez les références à nvidia, par  les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy
Remarque : Les bons informaticiens, sont en générales des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! alors ils ont crus bons, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peut comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littérallement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;, mais comprenez bien que l'abrévation a la même signification.

[code]
$ su 
# apt-get install module-assistant
# m-a prepare
# m-a clean nvidia-kernel
[/code]
Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :
      [code]
       # apt-get install -t unstable nvidia-kernel-source[/code]
La suite est la même :
[code]
# m-a a-i -i nvidia-kernel-source
# apt-get install nvidia-glx
[/code]

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf
[code]
# nano /etc/X11/xorg.conf
[/code]
Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)
[code]
Section &quot;Device&quot;
    Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
    Driver         &quot;nv&quot;
EndSection
[/code]
Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
[code]    Driver         &quot;nv&quot;[/code]
Par :
[code]    Driver         &quot;nvidia&quot;[/code]
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :
Pour GNOME :
[code]# /etc/init.d/gdm restart[/code]
Pour KDE :
[code]# /etc/init.d/kdm restart[/code]
Ou si vous êtes sur de rien :
[code]
# reboot
[/code]


== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manips à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources, ça évite pas mal de problèmes, mais si on voit :
[code]
Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,
[/code]
lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.


== ANNEXE 1 ==
 : Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :
[code]
 $ su
 # rm -rf /usr/src/modules/nvidia-kernel/
 # cd /usr/src
 # tar xjvf nvidia-kernel.tar.bz2
 # cd modules/nvidia-kernel/debian
 # cp control.template control
 # m-a a-i -i nvidia-kernel-source
 # apt-get install nvidia-glx
[/code]
Retournez à la partie V

[[Utilisateur:Debianhadic|Debianhadic]]

[[Category:Pilotes]]
[[Category:nVidia]]</text>
      <sha1>4inbevuhtuqfqr0giogpam757p5qhg1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>125</id>
      <parentid>123</parentid>
      <timestamp>2010-01-23T04:32:27Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="8057">== I - Présentation ==

Avant tout sur Debian, il y a deux types de cartes nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe, que vous n'avez jamais rien compilé, ou que l'installation est nouvelle. Si ce n'est pas le cas assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur, recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libres, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :
[code]
## lenny
deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
[/code]
Bon ça c'est pour les gens 'stable', si vous êtes moins conservateur, vous êtes surement en SID, la version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépots, pour vérifier que votre sources.list vous permet d'y accéder tapez :
[code]
$ apt-cache policy nvidia-kernel-source
[/code]
Qui devrait vous donner quelque chose comme ça :
[code]
nvidia-kernel-source:
  Installé : 180.29-1
  Candidat : 180.29-1
 Table de version :
 *** 180.29-1 0
        970 http://ftp.fr.debian.org sid/non-free Packages
        100 /var/lib/dpkg/status
     173.14.09-5 0
        500 http://ftp.fr.debian.org lenny/non-free Packages
        900 http://ftp.fr.debian.org squeeze/non-free Packages
[/code]
Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un source.list permettant de se sortir de n'importe quelle dépendance, pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop : [url=http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]Sources.list au carré ou minimaliste[/url]

N'oubliez pas de mettre à jour la liste de vos paquets :
[code]
# apt-get update
[/code]

'''ATTENTION''' Si votre carte est basé sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique, je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.


== III - Détection de votre carte graphique ==

La partie la plus délicate, quel est mon pilote de carte graphique ?
[code]
$ lspci
[/code]
mon résultat, sur mon super portable Siemens :
[code]
...
03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
...
[/code]
dans les [] vous avez le type de carte, allez sur cette page : [url=http://www.nvidia.fr/object/legacy_drivers_fr.html]LEGACY[/url]
si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknow device, vous devrez mettre à jour vos identifiants :
[code]
# update-pciids
[/code]
et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot; veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite, nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique :

Si vous êtes avec gnome :
[code]# /etc/init.d/gdm stop[/code]

Si vous êtes avec KDE :
[code]# /etc/init.d/kdm stop[/code]

Si vous n'avez ni gnome, ni KDE, je suppose que vous savez très bien comment faire  :wink: 

Puis :
[code]
# nvidia-installer --uninstall
# modprobe -r nvidia
[/code]

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

[code]# find / -name &quot;*nvidia*&quot; -delete[/code]


== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, dans le cas d'une carte legacy, remplacez les références à nvidia, par  les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy
Remarque : Les bons informaticiens, sont en générales des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! alors ils ont crus bons, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peut comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littérallement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;, mais comprenez bien que l'abrévation a la même signification.

[code]
$ su 
# apt-get install module-assistant
# m-a prepare
# m-a clean nvidia-kernel
[/code]
Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :
      [code]
       # apt-get install -t unstable nvidia-kernel-source[/code]
La suite est la même :
[code]
# m-a a-i -i nvidia-kernel-source
# apt-get install nvidia-glx
[/code]

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf
[code]
# nano /etc/X11/xorg.conf
[/code]
Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)
[code]
Section &quot;Device&quot;
    Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
    Driver         &quot;nv&quot;
EndSection
[/code]
Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
[code]    Driver         &quot;nv&quot;[/code]
Par :
[code]    Driver         &quot;nvidia&quot;[/code]
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :
Pour GNOME :
[code]# /etc/init.d/gdm restart[/code]
Pour KDE :
[code]# /etc/init.d/kdm restart[/code]
Ou si vous êtes sur de rien :
[code]
# reboot
[/code]


== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manips à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources, ça évite pas mal de problèmes, mais si on voit :
[code]
Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,
[/code]
lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.


== ANNEXE 1 ==
 : Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :
[code]
 $ su
 # rm -rf /usr/src/modules/nvidia-kernel/
 # cd /usr/src
 # tar xjvf nvidia-kernel.tar.bz2
 # cd modules/nvidia-kernel/debian
 # cp control.template control
 # m-a a-i -i nvidia-kernel-source
 # apt-get install nvidia-glx
[/code]
Retournez à la partie V

[[Utilisateur:Debianhadic|Debianhadic]]

[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>dhe8399i2nej9ba03rozb37n02wftge</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>135</id>
      <parentid>125</parentid>
      <timestamp>2010-01-23T10:45:11Z</timestamp>
      <contributor>
        <username>Fran.b</username>
        <id>13</id>
      </contributor>
      <comment>/* ANNEXE 1 */</comment>
      <text xml:space="preserve" bytes="11448">== I - Présentation ==

Avant tout sur Debian, il y a deux types de cartes nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe, que vous n'avez jamais rien compilé, ou que l'installation est nouvelle. Si ce n'est pas le cas assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur, recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libres, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :
[code]
## lenny
deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
[/code]
Bon ça c'est pour les gens 'stable', si vous êtes moins conservateur, vous êtes surement en SID, la version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépots, pour vérifier que votre sources.list vous permet d'y accéder tapez :
[code]
$ apt-cache policy nvidia-kernel-source
[/code]
Qui devrait vous donner quelque chose comme ça :
[code]
nvidia-kernel-source:
  Installé : 180.29-1
  Candidat : 180.29-1
 Table de version :
 *** 180.29-1 0
        970 http://ftp.fr.debian.org sid/non-free Packages
        100 /var/lib/dpkg/status
     173.14.09-5 0
        500 http://ftp.fr.debian.org lenny/non-free Packages
        900 http://ftp.fr.debian.org squeeze/non-free Packages
[/code]
Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un source.list permettant de se sortir de n'importe quelle dépendance, pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop : [url=http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]Sources.list au carré ou minimaliste[/url]

N'oubliez pas de mettre à jour la liste de vos paquets :
[code]
# apt-get update
[/code]

'''ATTENTION''' Si votre carte est basé sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique, je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.


== III - Détection de votre carte graphique ==

La partie la plus délicate, quel est mon pilote de carte graphique ?
[code]
$ lspci
[/code]
mon résultat, sur mon super portable Siemens :
[code]
...
03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
...
[/code]
dans les [] vous avez le type de carte, allez sur cette page : [url=http://www.nvidia.fr/object/legacy_drivers_fr.html]LEGACY[/url]
si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknow device, vous devrez mettre à jour vos identifiants :
[code]
# update-pciids
[/code]
et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot; veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite, nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique :

Si vous êtes avec gnome :
[code]# /etc/init.d/gdm stop[/code]

Si vous êtes avec KDE :
[code]# /etc/init.d/kdm stop[/code]

Si vous n'avez ni gnome, ni KDE, je suppose que vous savez très bien comment faire  :wink: 

Puis :
[code]
# nvidia-installer --uninstall
# modprobe -r nvidia
[/code]

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

[code]# find / -name &quot;*nvidia*&quot; -delete[/code]


== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, dans le cas d'une carte legacy, remplacez les références à nvidia, par  les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy
Remarque : Les bons informaticiens, sont en générales des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! alors ils ont crus bons, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peut comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littérallement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;, mais comprenez bien que l'abrévation a la même signification.

[code]
$ su 
# apt-get install module-assistant
# m-a prepare
# m-a clean nvidia-kernel
[/code]
Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :
      [code]
       # apt-get install -t unstable nvidia-kernel-source[/code]
La suite est la même :
[code]
# m-a a-i -i nvidia-kernel-source
# apt-get install nvidia-glx
[/code]

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf
[code]
# nano /etc/X11/xorg.conf
[/code]
Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)
[code]
Section &quot;Device&quot;
    Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
    Driver         &quot;nv&quot;
EndSection
[/code]
Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
[code]    Driver         &quot;nv&quot;[/code]
Par :
[code]    Driver         &quot;nvidia&quot;[/code]
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :
Pour GNOME :
[code]# /etc/init.d/gdm restart[/code]
Pour KDE :
[code]# /etc/init.d/kdm restart[/code]
Ou si vous êtes sur de rien :
[code]
# reboot
[/code]


== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manips à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources, ça évite pas mal de problèmes, mais si on voit :
[code]
Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,
[/code]
lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.


== ANNEXE 1 ==
 : Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :
[code]
 $ su
 # rm -rf /usr/src/modules/nvidia-kernel/
 # cd /usr/src
 # tar xjvf nvidia-kernel.tar.bz2
 # cd modules/nvidia-kernel/debian
 # cp control.template control
 # m-a a-i -i nvidia-kernel-source
 # apt-get install nvidia-glx
[/code]
Retournez à la partie V

[[Utilisateur:Debianhadic|Debianhadic]]

== Annexe 2 (refaire des paquets .deb)==
NVIDIA a fait une mise à jour des drivers il y a 5 minutes. Vous êtes raisonnable (vous avez attendu 5 minutes) mais tout de même, vous voulez ces drivers même si cela peut ne pas marcher (si, ça n'est pas infaillible). Vous savez donc que ça peut tout casser mais tant pis, vous les voulez quand même et qui plus est sous forme de paquets (caprice ?). Bon, c'est faisable à partir des .run. La démarche est la suivante:

&lt;br /&gt;

Il vous faut installer les scripts de développement (paquet devscripts) et procéder comme suit:

&lt;br /&gt;

* Charger les sources des paquets nvidia, il faut bien évidemment une entrée deb-src dans le fichier sources.list&lt;br /&gt;Sous root: 

 # apt-get build-dep nvidia-glx

&lt;br /&gt;et sous votre login&lt;br /&gt;

 $ apt-get source nvidia-glx

&lt;br /&gt;&lt;br /&gt;Un répartoire nvidia-graphics-drivers-??? est crée (ici c'est nvidia-graphics-drivers-173.14.09)
* Charger les .run correspondants. Pour amd64 il vous faut le .run i386 et amd64, pour le i386, seul le .run 386 est nécessaire. Dans notre exemple, ce sont les fichiers&lt;br /&gt;&lt;br /&gt;

 NVIDIA-Linux-x86-190.53-pkg1.run
et
 NVIDIA-Linux-x86_64-190.53-pkg2.run

&lt;br /&gt;Mettez ces fichiers dans le répertoire nvidia-graphics-drivers-173.14.09 et donnez leur les droits à l'éxécution (chmod +x)
* Allez dans ce répertoire et mettez la version à jour:&lt;br /&gt;&lt;br /&gt;

 $ dch -v 190.53

&lt;br /&gt;&lt;br /&gt;Le fichier changelog est ouvert en édition, tapez vos motivations et fermez le fichier. Le répertoire a changé de nom, faites un cd ../nvidia-graphics-drivers-190.53
* Il faut tout d'abord changer toutes les références de 173.14.09 en 190.53 et les appels aux fichiers .run
** Editer le fichier debian/upstream_info (avec emacs bien sûr) et modifier en conséquence les valeurs RELEASE et NEXTVER (en 190.53 et 190.54)
** Dans ce même fichier changer les extensions pkg0 des fichiers NVIDIA-???.run et des répertoires correspondants, dans notre exemple, cela revient à remplacer le pkg0 en pkg1. Attention, il y a plusieurs références, faites une recherche sur pkg dans ce fichier.
** Soyez courageux, virez tous les patches: vous avez décidé d'installer le système de NVIDIA, les patches peuvent être inadaptés:&lt;br /&gt;&lt;br /&gt;

 $ rm -R patches*

&lt;br /&gt;&lt;br /&gt;(Si à ce stade vous avez effacé votre disque dur parce que vous n'étiez pas dans le bon niveau et que vous travaillé en root, positivez: vous venez d'apprendre pourquoi on ne travaille jamais en root).
* Effacez les vieux .run inutiles&lt;br /&gt;&lt;br /&gt;

 $ cd ..
 $ rm NVIDIA-Linux-x86-173.14.09-pkg0.run NVIDIA-Linux-x86_64-173.14.09-pkg2.run

&lt;br /&gt;&lt;br /&gt;
* Lachez vous enfin en lançant la construction des paquets:&lt;br /&gt;&lt;br /&gt;

 $ fakeroot dpkg-buildpackage -us -uc

&lt;br /&gt;&lt;br /&gt;
* Regardez dans le répertoire au dessus vous avez
** Les paquets:&lt;br /&gt;
 nvidia-glx-ia32_190.53_amd64.deb
 nvidia-glx-dev_190.53_amd64.deb
 nvidia-glx_190.53_amd64.deb
 nvidia-kernel-source_190.53_amd64.deb
** Les sources:
 nvidia-graphics-drivers_190.53_amd64.changes
 nvidia-graphics-drivers_190.53.dsc
 nvidia-graphics-drivers_190.53.tar.gz

Les premiers sont les librairies et drivers xorg (les glx) ainsi que les sources pour faire le module nvidia avec module assistant, les seconds sont les sources de vos paquets. En cas de problème, vous pouvez les rectifier.

[[Utilisateur:fran.b|François Boisson]]
[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>5imcq00sakygyvpu2jiiczuccr9aq1m</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>138</id>
      <parentid>135</parentid>
      <timestamp>2010-01-23T10:59:01Z</timestamp>
      <contributor>
        <username>Fran.b</username>
        <id>13</id>
      </contributor>
      <comment>/* Annexe 2 (refaire des paquets .deb) */</comment>
      <text xml:space="preserve" bytes="11448">== I - Présentation ==

Avant tout sur Debian, il y a deux types de cartes nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe, que vous n'avez jamais rien compilé, ou que l'installation est nouvelle. Si ce n'est pas le cas assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur, recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libres, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :
[code]
## lenny
deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
[/code]
Bon ça c'est pour les gens 'stable', si vous êtes moins conservateur, vous êtes surement en SID, la version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépots, pour vérifier que votre sources.list vous permet d'y accéder tapez :
[code]
$ apt-cache policy nvidia-kernel-source
[/code]
Qui devrait vous donner quelque chose comme ça :
[code]
nvidia-kernel-source:
  Installé : 180.29-1
  Candidat : 180.29-1
 Table de version :
 *** 180.29-1 0
        970 http://ftp.fr.debian.org sid/non-free Packages
        100 /var/lib/dpkg/status
     173.14.09-5 0
        500 http://ftp.fr.debian.org lenny/non-free Packages
        900 http://ftp.fr.debian.org squeeze/non-free Packages
[/code]
Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un source.list permettant de se sortir de n'importe quelle dépendance, pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop : [url=http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]Sources.list au carré ou minimaliste[/url]

N'oubliez pas de mettre à jour la liste de vos paquets :
[code]
# apt-get update
[/code]

'''ATTENTION''' Si votre carte est basé sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique, je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.


== III - Détection de votre carte graphique ==

La partie la plus délicate, quel est mon pilote de carte graphique ?
[code]
$ lspci
[/code]
mon résultat, sur mon super portable Siemens :
[code]
...
03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
...
[/code]
dans les [] vous avez le type de carte, allez sur cette page : [url=http://www.nvidia.fr/object/legacy_drivers_fr.html]LEGACY[/url]
si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknow device, vous devrez mettre à jour vos identifiants :
[code]
# update-pciids
[/code]
et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot; veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite, nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique :

Si vous êtes avec gnome :
[code]# /etc/init.d/gdm stop[/code]

Si vous êtes avec KDE :
[code]# /etc/init.d/kdm stop[/code]

Si vous n'avez ni gnome, ni KDE, je suppose que vous savez très bien comment faire  :wink: 

Puis :
[code]
# nvidia-installer --uninstall
# modprobe -r nvidia
[/code]

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

[code]# find / -name &quot;*nvidia*&quot; -delete[/code]


== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, dans le cas d'une carte legacy, remplacez les références à nvidia, par  les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy
Remarque : Les bons informaticiens, sont en générales des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! alors ils ont crus bons, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peut comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littérallement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;, mais comprenez bien que l'abrévation a la même signification.

[code]
$ su 
# apt-get install module-assistant
# m-a prepare
# m-a clean nvidia-kernel
[/code]
Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :
      [code]
       # apt-get install -t unstable nvidia-kernel-source[/code]
La suite est la même :
[code]
# m-a a-i -i nvidia-kernel-source
# apt-get install nvidia-glx
[/code]

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf
[code]
# nano /etc/X11/xorg.conf
[/code]
Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)
[code]
Section &quot;Device&quot;
    Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
    Driver         &quot;nv&quot;
EndSection
[/code]
Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
[code]    Driver         &quot;nv&quot;[/code]
Par :
[code]    Driver         &quot;nvidia&quot;[/code]
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :
Pour GNOME :
[code]# /etc/init.d/gdm restart[/code]
Pour KDE :
[code]# /etc/init.d/kdm restart[/code]
Ou si vous êtes sur de rien :
[code]
# reboot
[/code]


== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manips à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources, ça évite pas mal de problèmes, mais si on voit :
[code]
Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,
[/code]
lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.


== ANNEXE 1 ==
 : Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :
[code]
 $ su
 # rm -rf /usr/src/modules/nvidia-kernel/
 # cd /usr/src
 # tar xjvf nvidia-kernel.tar.bz2
 # cd modules/nvidia-kernel/debian
 # cp control.template control
 # m-a a-i -i nvidia-kernel-source
 # apt-get install nvidia-glx
[/code]
Retournez à la partie V

[[Utilisateur:Debianhadic|Debianhadic]]

== ANNEXE 2 (refaire des paquets .deb)==
NVIDIA a fait une mise à jour des drivers il y a 5 minutes. Vous êtes raisonnable (vous avez attendu 5 minutes) mais tout de même, vous voulez ces drivers même si cela peut ne pas marcher (si, ça n'est pas infaillible). Vous savez donc que ça peut tout casser mais tant pis, vous les voulez quand même et qui plus est sous forme de paquets (caprice ?). Bon, c'est faisable à partir des .run. La démarche est la suivante:

&lt;br /&gt;

Il vous faut installer les scripts de développement (paquet devscripts) et procéder comme suit:

&lt;br /&gt;

* Charger les sources des paquets nvidia, il faut bien évidemment une entrée deb-src dans le fichier sources.list&lt;br /&gt;Sous root: 

 # apt-get build-dep nvidia-glx

&lt;br /&gt;et sous votre login&lt;br /&gt;

 $ apt-get source nvidia-glx

&lt;br /&gt;&lt;br /&gt;Un répartoire nvidia-graphics-drivers-??? est crée (ici c'est nvidia-graphics-drivers-173.14.09)
* Charger les .run correspondants. Pour amd64 il vous faut le .run i386 et amd64, pour le i386, seul le .run 386 est nécessaire. Dans notre exemple, ce sont les fichiers&lt;br /&gt;&lt;br /&gt;

 NVIDIA-Linux-x86-190.53-pkg1.run
et
 NVIDIA-Linux-x86_64-190.53-pkg2.run

&lt;br /&gt;Mettez ces fichiers dans le répertoire nvidia-graphics-drivers-173.14.09 et donnez leur les droits à l'éxécution (chmod +x)
* Allez dans ce répertoire et mettez la version à jour:&lt;br /&gt;&lt;br /&gt;

 $ dch -v 190.53

&lt;br /&gt;&lt;br /&gt;Le fichier changelog est ouvert en édition, tapez vos motivations et fermez le fichier. Le répertoire a changé de nom, faites un cd ../nvidia-graphics-drivers-190.53
* Il faut tout d'abord changer toutes les références de 173.14.09 en 190.53 et les appels aux fichiers .run
** Editer le fichier debian/upstream_info (avec emacs bien sûr) et modifier en conséquence les valeurs RELEASE et NEXTVER (en 190.53 et 190.54)
** Dans ce même fichier changer les extensions pkg0 des fichiers NVIDIA-???.run et des répertoires correspondants, dans notre exemple, cela revient à remplacer le pkg0 en pkg1. Attention, il y a plusieurs références, faites une recherche sur pkg dans ce fichier.
** Soyez courageux, virez tous les patches: vous avez décidé d'installer le système de NVIDIA, les patches peuvent être inadaptés:&lt;br /&gt;&lt;br /&gt;

 $ rm -R patches*

&lt;br /&gt;&lt;br /&gt;(Si à ce stade vous avez effacé votre disque dur parce que vous n'étiez pas dans le bon niveau et que vous travaillé en root, positivez: vous venez d'apprendre pourquoi on ne travaille jamais en root).
* Effacez les vieux .run inutiles&lt;br /&gt;&lt;br /&gt;

 $ cd ..
 $ rm NVIDIA-Linux-x86-173.14.09-pkg0.run NVIDIA-Linux-x86_64-173.14.09-pkg2.run

&lt;br /&gt;&lt;br /&gt;
* Lachez vous enfin en lançant la construction des paquets:&lt;br /&gt;&lt;br /&gt;

 $ fakeroot dpkg-buildpackage -us -uc

&lt;br /&gt;&lt;br /&gt;
* Regardez dans le répertoire au dessus vous avez
** Les paquets:&lt;br /&gt;
 nvidia-glx-ia32_190.53_amd64.deb
 nvidia-glx-dev_190.53_amd64.deb
 nvidia-glx_190.53_amd64.deb
 nvidia-kernel-source_190.53_amd64.deb
** Les sources:
 nvidia-graphics-drivers_190.53_amd64.changes
 nvidia-graphics-drivers_190.53.dsc
 nvidia-graphics-drivers_190.53.tar.gz

Les premiers sont les librairies et drivers xorg (les glx) ainsi que les sources pour faire le module nvidia avec module assistant, les seconds sont les sources de vos paquets. En cas de problème, vous pouvez les rectifier.

[[Utilisateur:fran.b|François Boisson]]
[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>5m0ia2yezar54k8ix7whzvd19qq00u2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>139</id>
      <parentid>138</parentid>
      <timestamp>2010-01-23T11:00:52Z</timestamp>
      <contributor>
        <username>Fran.b</username>
        <id>13</id>
      </contributor>
      <minor/>
      <comment>/* ANNEXE 2 (refaire des paquets .deb) */</comment>
      <text xml:space="preserve" bytes="11463">== I - Présentation ==

Avant tout sur Debian, il y a deux types de cartes nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe, que vous n'avez jamais rien compilé, ou que l'installation est nouvelle. Si ce n'est pas le cas assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur, recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libres, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :
[code]
## lenny
deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
[/code]
Bon ça c'est pour les gens 'stable', si vous êtes moins conservateur, vous êtes surement en SID, la version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépots, pour vérifier que votre sources.list vous permet d'y accéder tapez :
[code]
$ apt-cache policy nvidia-kernel-source
[/code]
Qui devrait vous donner quelque chose comme ça :
[code]
nvidia-kernel-source:
  Installé : 180.29-1
  Candidat : 180.29-1
 Table de version :
 *** 180.29-1 0
        970 http://ftp.fr.debian.org sid/non-free Packages
        100 /var/lib/dpkg/status
     173.14.09-5 0
        500 http://ftp.fr.debian.org lenny/non-free Packages
        900 http://ftp.fr.debian.org squeeze/non-free Packages
[/code]
Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un source.list permettant de se sortir de n'importe quelle dépendance, pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop : [url=http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]Sources.list au carré ou minimaliste[/url]

N'oubliez pas de mettre à jour la liste de vos paquets :
[code]
# apt-get update
[/code]

'''ATTENTION''' Si votre carte est basé sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique, je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.


== III - Détection de votre carte graphique ==

La partie la plus délicate, quel est mon pilote de carte graphique ?
[code]
$ lspci
[/code]
mon résultat, sur mon super portable Siemens :
[code]
...
03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
...
[/code]
dans les [] vous avez le type de carte, allez sur cette page : [url=http://www.nvidia.fr/object/legacy_drivers_fr.html]LEGACY[/url]
si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknow device, vous devrez mettre à jour vos identifiants :
[code]
# update-pciids
[/code]
et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot; veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite, nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique :

Si vous êtes avec gnome :
[code]# /etc/init.d/gdm stop[/code]

Si vous êtes avec KDE :
[code]# /etc/init.d/kdm stop[/code]

Si vous n'avez ni gnome, ni KDE, je suppose que vous savez très bien comment faire  :wink: 

Puis :
[code]
# nvidia-installer --uninstall
# modprobe -r nvidia
[/code]

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

[code]# find / -name &quot;*nvidia*&quot; -delete[/code]


== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, dans le cas d'une carte legacy, remplacez les références à nvidia, par  les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy
Remarque : Les bons informaticiens, sont en générales des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! alors ils ont crus bons, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peut comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littérallement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;, mais comprenez bien que l'abrévation a la même signification.

[code]
$ su 
# apt-get install module-assistant
# m-a prepare
# m-a clean nvidia-kernel
[/code]
Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :
      [code]
       # apt-get install -t unstable nvidia-kernel-source[/code]
La suite est la même :
[code]
# m-a a-i -i nvidia-kernel-source
# apt-get install nvidia-glx
[/code]

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf
[code]
# nano /etc/X11/xorg.conf
[/code]
Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)
[code]
Section &quot;Device&quot;
    Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
    Driver         &quot;nv&quot;
EndSection
[/code]
Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
[code]    Driver         &quot;nv&quot;[/code]
Par :
[code]    Driver         &quot;nvidia&quot;[/code]
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :
Pour GNOME :
[code]# /etc/init.d/gdm restart[/code]
Pour KDE :
[code]# /etc/init.d/kdm restart[/code]
Ou si vous êtes sur de rien :
[code]
# reboot
[/code]


== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manips à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources, ça évite pas mal de problèmes, mais si on voit :
[code]
Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,
[/code]
lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.


== ANNEXE 1 ==
 : Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :
[code]
 $ su
 # rm -rf /usr/src/modules/nvidia-kernel/
 # cd /usr/src
 # tar xjvf nvidia-kernel.tar.bz2
 # cd modules/nvidia-kernel/debian
 # cp control.template control
 # m-a a-i -i nvidia-kernel-source
 # apt-get install nvidia-glx
[/code]
Retournez à la partie V

[[Utilisateur:Debianhadic|Debianhadic]]

== ANNEXE 2 (refaire des paquets .deb)==
NVIDIA a fait une mise à jour des drivers il y a 5 minutes. Vous êtes raisonnable (vous avez attendu 5 minutes) mais tout de même, vous voulez ces drivers même si cela peut ne pas marcher (si, ça n'est pas infaillible). Vous savez donc que ça peut tout casser mais tant pis, vous les voulez quand même et qui plus est sous forme de paquets (caprice ?). Bon, c'est faisable à partir des .run. La démarche est la suivante:

&lt;br /&gt;

Il vous faut installer les scripts de développement (paquet devscripts) et procéder comme suit:

&lt;br /&gt;

* Charger les sources des paquets nvidia, il faut bien évidemment une entrée deb-src dans le fichier sources.list&lt;br /&gt;Sous root: 

 # apt-get build-dep nvidia-glx

&lt;br /&gt;et sous votre login&lt;br /&gt;

 $ apt-get source nvidia-glx

&lt;br /&gt;&lt;br /&gt;Un répartoire nvidia-graphics-drivers-??? est crée (ici c'est nvidia-graphics-drivers-173.14.09)
* Charger les .run correspondants. Pour amd64 il vous faut le .run i386 et amd64, pour le i386, seul le .run 386 est nécessaire. Dans notre exemple, ce sont les fichiers&lt;br /&gt;&lt;br /&gt;

 NVIDIA-Linux-x86-190.53-pkg1.run
et
 NVIDIA-Linux-x86_64-190.53-pkg2.run

&lt;br /&gt;Mettez ces fichiers dans le répertoire nvidia-graphics-drivers-173.14.09 et donnez leur les droits à l'éxécution (chmod +x)
* Allez dans ce répertoire et mettez la version à jour:&lt;br /&gt;&lt;br /&gt;

 $ dch -v 190.53

&lt;br /&gt;&lt;br /&gt;Le fichier changelog est ouvert en édition, tapez vos motivations et fermez le fichier. Le répertoire a changé de nom, faites un

 cd ../nvidia-graphics-drivers-190.53

* Il faut tout d'abord changer toutes les références de 173.14.09 en 190.53 et les appels aux fichiers .run
** Editer le fichier debian/upstream_info (avec emacs bien sûr) et modifier en conséquence les valeurs RELEASE et NEXTVER (en 190.53 et 190.54)
** Dans ce même fichier changer les extensions pkg0 des fichiers NVIDIA-???.run et des répertoires correspondants, dans notre exemple, cela revient à remplacer le pkg0 en pkg1. Attention, il y a plusieurs références, faites une recherche sur pkg dans ce fichier.
** Soyez courageux, virez tous les patches: vous avez décidé d'installer le système de NVIDIA, les patches peuvent être inadaptés:&lt;br /&gt;&lt;br /&gt;

 $ rm -R patches*

&lt;br /&gt;&lt;br /&gt;(Si à ce stade vous avez effacé votre disque dur parce que vous n'étiez pas dans le bon niveau et que vous travaillé en root, '''positivez''': vous venez d'apprendre pourquoi on ne travaille '''jamais''' en root).
* Effacez les vieux .run inutiles&lt;br /&gt;&lt;br /&gt;

 $ cd ..
 $ rm NVIDIA-Linux-x86-173.14.09-pkg0.run NVIDIA-Linux-x86_64-173.14.09-pkg2.run

&lt;br /&gt;&lt;br /&gt;
* Lachez vous enfin en lançant la construction des paquets:&lt;br /&gt;&lt;br /&gt;

 $ fakeroot dpkg-buildpackage -us -uc

&lt;br /&gt;&lt;br /&gt;
* Regardez dans le répertoire au dessus vous avez
** Les paquets:&lt;br /&gt;
 nvidia-glx-ia32_190.53_amd64.deb
 nvidia-glx-dev_190.53_amd64.deb
 nvidia-glx_190.53_amd64.deb
 nvidia-kernel-source_190.53_amd64.deb
** Les sources:
 nvidia-graphics-drivers_190.53_amd64.changes
 nvidia-graphics-drivers_190.53.dsc
 nvidia-graphics-drivers_190.53.tar.gz

Les premiers sont les librairies et drivers xorg (les glx) ainsi que les sources pour faire le module nvidia avec module assistant, les seconds sont les sources de vos paquets. En cas de problème, vous pouvez les rectifier.

[[Utilisateur:fran.b|François Boisson]]
[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>fg3plb9mbn9k0eqte3n4jro4qb2x12s</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>160</id>
      <parentid>139</parentid>
      <timestamp>2010-01-23T13:00:14Z</timestamp>
      <contributor>
        <username>Debianhadic</username>
        <id>11</id>
      </contributor>
      <comment>/* II - Modification des dépôts */</comment>
      <text xml:space="preserve" bytes="11461">== I - Présentation ==

Avant tout sur Debian, il y a deux types de cartes nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe, que vous n'avez jamais rien compilé, ou que l'installation est nouvelle. Si ce n'est pas le cas assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur, recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libres, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :

  ##lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free

Bon ça c'est pour les gens 'stable', si vous êtes moins conservateur, vous êtes surement en SID, la version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépots, pour vérifier que votre sources.list vous permet d'y accéder tapez :

   $ apt-cache policy nvidia-kernel-source

Qui devrait vous donner quelque chose comme ça :

   nvidia-kernel-source:
     Installé : 180.29-1
     Candidat : 180.29-1
    Table de version :
    *** 180.29-1 0
           970 http://ftp.fr.debian.org sid/non-free Packages
           100 /var/lib/dpkg/status
        173.14.09-5 0
           500 http://ftp.fr.debian.org lenny/non-free Packages
           900 http://ftp.fr.debian.org squeeze/non-free Packages

Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un source.list permettant de se sortir de n'importe quelle dépendance, pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop : [url=http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]Sources.list au carré ou minimaliste[/url]

N'oubliez pas de mettre à jour la liste de vos paquets :
[code]
# apt-get update
[/code]

'''ATTENTION''' Si votre carte est basé sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique, je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.

== III - Détection de votre carte graphique ==

La partie la plus délicate, quel est mon pilote de carte graphique ?
[code]
$ lspci
[/code]
mon résultat, sur mon super portable Siemens :
[code]
...
03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
...
[/code]
dans les [] vous avez le type de carte, allez sur cette page : [url=http://www.nvidia.fr/object/legacy_drivers_fr.html]LEGACY[/url]
si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknow device, vous devrez mettre à jour vos identifiants :
[code]
# update-pciids
[/code]
et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot; veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite, nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique :

Si vous êtes avec gnome :
[code]# /etc/init.d/gdm stop[/code]

Si vous êtes avec KDE :
[code]# /etc/init.d/kdm stop[/code]

Si vous n'avez ni gnome, ni KDE, je suppose que vous savez très bien comment faire  :wink: 

Puis :
[code]
# nvidia-installer --uninstall
# modprobe -r nvidia
[/code]

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

[code]# find / -name &quot;*nvidia*&quot; -delete[/code]


== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, dans le cas d'une carte legacy, remplacez les références à nvidia, par  les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy
Remarque : Les bons informaticiens, sont en générales des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! alors ils ont crus bons, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peut comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littérallement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;, mais comprenez bien que l'abrévation a la même signification.

[code]
$ su 
# apt-get install module-assistant
# m-a prepare
# m-a clean nvidia-kernel
[/code]
Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :
      [code]
       # apt-get install -t unstable nvidia-kernel-source[/code]
La suite est la même :
[code]
# m-a a-i -i nvidia-kernel-source
# apt-get install nvidia-glx
[/code]

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf
[code]
# nano /etc/X11/xorg.conf
[/code]
Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)
[code]
Section &quot;Device&quot;
    Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
    Driver         &quot;nv&quot;
EndSection
[/code]
Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
[code]    Driver         &quot;nv&quot;[/code]
Par :
[code]    Driver         &quot;nvidia&quot;[/code]
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :
Pour GNOME :
[code]# /etc/init.d/gdm restart[/code]
Pour KDE :
[code]# /etc/init.d/kdm restart[/code]
Ou si vous êtes sur de rien :
[code]
# reboot
[/code]


== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manips à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources, ça évite pas mal de problèmes, mais si on voit :
[code]
Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,
[/code]
lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.


== ANNEXE 1 ==
 : Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :
[code]
 $ su
 # rm -rf /usr/src/modules/nvidia-kernel/
 # cd /usr/src
 # tar xjvf nvidia-kernel.tar.bz2
 # cd modules/nvidia-kernel/debian
 # cp control.template control
 # m-a a-i -i nvidia-kernel-source
 # apt-get install nvidia-glx
[/code]
Retournez à la partie V

[[Utilisateur:Debianhadic|Debianhadic]]

== ANNEXE 2 (refaire des paquets .deb)==
NVIDIA a fait une mise à jour des drivers il y a 5 minutes. Vous êtes raisonnable (vous avez attendu 5 minutes) mais tout de même, vous voulez ces drivers même si cela peut ne pas marcher (si, ça n'est pas infaillible). Vous savez donc que ça peut tout casser mais tant pis, vous les voulez quand même et qui plus est sous forme de paquets (caprice ?). Bon, c'est faisable à partir des .run. La démarche est la suivante:

&lt;br /&gt;

Il vous faut installer les scripts de développement (paquet devscripts) et procéder comme suit:

&lt;br /&gt;

* Charger les sources des paquets nvidia, il faut bien évidemment une entrée deb-src dans le fichier sources.list&lt;br /&gt;Sous root: 

 # apt-get build-dep nvidia-glx

&lt;br /&gt;et sous votre login&lt;br /&gt;

 $ apt-get source nvidia-glx

&lt;br /&gt;&lt;br /&gt;Un répartoire nvidia-graphics-drivers-??? est crée (ici c'est nvidia-graphics-drivers-173.14.09)
* Charger les .run correspondants. Pour amd64 il vous faut le .run i386 et amd64, pour le i386, seul le .run 386 est nécessaire. Dans notre exemple, ce sont les fichiers&lt;br /&gt;&lt;br /&gt;

 NVIDIA-Linux-x86-190.53-pkg1.run
et
 NVIDIA-Linux-x86_64-190.53-pkg2.run

&lt;br /&gt;Mettez ces fichiers dans le répertoire nvidia-graphics-drivers-173.14.09 et donnez leur les droits à l'éxécution (chmod +x)
* Allez dans ce répertoire et mettez la version à jour:&lt;br /&gt;&lt;br /&gt;

 $ dch -v 190.53

&lt;br /&gt;&lt;br /&gt;Le fichier changelog est ouvert en édition, tapez vos motivations et fermez le fichier. Le répertoire a changé de nom, faites un

 cd ../nvidia-graphics-drivers-190.53

* Il faut tout d'abord changer toutes les références de 173.14.09 en 190.53 et les appels aux fichiers .run
** Editer le fichier debian/upstream_info (avec emacs bien sûr) et modifier en conséquence les valeurs RELEASE et NEXTVER (en 190.53 et 190.54)
** Dans ce même fichier changer les extensions pkg0 des fichiers NVIDIA-???.run et des répertoires correspondants, dans notre exemple, cela revient à remplacer le pkg0 en pkg1. Attention, il y a plusieurs références, faites une recherche sur pkg dans ce fichier.
** Soyez courageux, virez tous les patches: vous avez décidé d'installer le système de NVIDIA, les patches peuvent être inadaptés:&lt;br /&gt;&lt;br /&gt;

 $ rm -R patches*

&lt;br /&gt;&lt;br /&gt;(Si à ce stade vous avez effacé votre disque dur parce que vous n'étiez pas dans le bon niveau et que vous travaillé en root, '''positivez''': vous venez d'apprendre pourquoi on ne travaille '''jamais''' en root).
* Effacez les vieux .run inutiles&lt;br /&gt;&lt;br /&gt;

 $ cd ..
 $ rm NVIDIA-Linux-x86-173.14.09-pkg0.run NVIDIA-Linux-x86_64-173.14.09-pkg2.run

&lt;br /&gt;&lt;br /&gt;
* Lachez vous enfin en lançant la construction des paquets:&lt;br /&gt;&lt;br /&gt;

 $ fakeroot dpkg-buildpackage -us -uc

&lt;br /&gt;&lt;br /&gt;
* Regardez dans le répertoire au dessus vous avez
** Les paquets:&lt;br /&gt;
 nvidia-glx-ia32_190.53_amd64.deb
 nvidia-glx-dev_190.53_amd64.deb
 nvidia-glx_190.53_amd64.deb
 nvidia-kernel-source_190.53_amd64.deb
** Les sources:
 nvidia-graphics-drivers_190.53_amd64.changes
 nvidia-graphics-drivers_190.53.dsc
 nvidia-graphics-drivers_190.53.tar.gz

Les premiers sont les librairies et drivers xorg (les glx) ainsi que les sources pour faire le module nvidia avec module assistant, les seconds sont les sources de vos paquets. En cas de problème, vous pouvez les rectifier.

[[Utilisateur:fran.b|François Boisson]]
[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>rt9ojnl82do0xyns6xkqj9ci0ehp01g</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>161</id>
      <parentid>160</parentid>
      <timestamp>2010-01-23T13:01:32Z</timestamp>
      <contributor>
        <username>Debianhadic</username>
        <id>11</id>
      </contributor>
      <comment>/* II - Modification des dépôts */</comment>
      <text xml:space="preserve" bytes="11401">== I - Présentation ==

Avant tout sur Debian, il y a deux types de cartes nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe, que vous n'avez jamais rien compilé, ou que l'installation est nouvelle. Si ce n'est pas le cas assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur, recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libres, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :

  ##lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free

Bon ça c'est pour les gens 'stable', si vous êtes moins conservateur, vous êtes surement en SID, la version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépots, pour vérifier que votre sources.list vous permet d'y accéder tapez :

   $ apt-cache policy nvidia-kernel-source

Qui devrait vous donner quelque chose comme ça :

   nvidia-kernel-source:
     Installé : 180.29-1
     Candidat : 180.29-1
    Table de version :
    *** 180.29-1 0
           970 http://ftp.fr.debian.org sid/non-free Packages
           100 /var/lib/dpkg/status
        173.14.09-5 0
           500 http://ftp.fr.debian.org lenny/non-free Packages
           900 http://ftp.fr.debian.org squeeze/non-free Packages

Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un source.list permettant de se sortir de n'importe quelle dépendance, pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]

N'oubliez pas de mettre à jour la liste de vos paquets :

   # apt-get update

'''ATTENTION''' Si votre carte est basé sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique, je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.

== III - Détection de votre carte graphique ==

La partie la plus délicate, quel est mon pilote de carte graphique ?
[code]
$ lspci
[/code]
mon résultat, sur mon super portable Siemens :
[code]
...
03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
...
[/code]
dans les [] vous avez le type de carte, allez sur cette page : [url=http://www.nvidia.fr/object/legacy_drivers_fr.html]LEGACY[/url]
si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknow device, vous devrez mettre à jour vos identifiants :
[code]
# update-pciids
[/code]
et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot; veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite, nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique :

Si vous êtes avec gnome :
[code]# /etc/init.d/gdm stop[/code]

Si vous êtes avec KDE :
[code]# /etc/init.d/kdm stop[/code]

Si vous n'avez ni gnome, ni KDE, je suppose que vous savez très bien comment faire  :wink: 

Puis :
[code]
# nvidia-installer --uninstall
# modprobe -r nvidia
[/code]

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

[code]# find / -name &quot;*nvidia*&quot; -delete[/code]


== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, dans le cas d'une carte legacy, remplacez les références à nvidia, par  les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy
Remarque : Les bons informaticiens, sont en générales des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! alors ils ont crus bons, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peut comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littérallement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;, mais comprenez bien que l'abrévation a la même signification.

[code]
$ su 
# apt-get install module-assistant
# m-a prepare
# m-a clean nvidia-kernel
[/code]
Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :
      [code]
       # apt-get install -t unstable nvidia-kernel-source[/code]
La suite est la même :
[code]
# m-a a-i -i nvidia-kernel-source
# apt-get install nvidia-glx
[/code]

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf
[code]
# nano /etc/X11/xorg.conf
[/code]
Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)
[code]
Section &quot;Device&quot;
    Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
    Driver         &quot;nv&quot;
EndSection
[/code]
Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
[code]    Driver         &quot;nv&quot;[/code]
Par :
[code]    Driver         &quot;nvidia&quot;[/code]
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :
Pour GNOME :
[code]# /etc/init.d/gdm restart[/code]
Pour KDE :
[code]# /etc/init.d/kdm restart[/code]
Ou si vous êtes sur de rien :
[code]
# reboot
[/code]


== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manips à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources, ça évite pas mal de problèmes, mais si on voit :
[code]
Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,
[/code]
lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.


== ANNEXE 1 ==
 : Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :
[code]
 $ su
 # rm -rf /usr/src/modules/nvidia-kernel/
 # cd /usr/src
 # tar xjvf nvidia-kernel.tar.bz2
 # cd modules/nvidia-kernel/debian
 # cp control.template control
 # m-a a-i -i nvidia-kernel-source
 # apt-get install nvidia-glx
[/code]
Retournez à la partie V

[[Utilisateur:Debianhadic|Debianhadic]]

== ANNEXE 2 (refaire des paquets .deb)==
NVIDIA a fait une mise à jour des drivers il y a 5 minutes. Vous êtes raisonnable (vous avez attendu 5 minutes) mais tout de même, vous voulez ces drivers même si cela peut ne pas marcher (si, ça n'est pas infaillible). Vous savez donc que ça peut tout casser mais tant pis, vous les voulez quand même et qui plus est sous forme de paquets (caprice ?). Bon, c'est faisable à partir des .run. La démarche est la suivante:

&lt;br /&gt;

Il vous faut installer les scripts de développement (paquet devscripts) et procéder comme suit:

&lt;br /&gt;

* Charger les sources des paquets nvidia, il faut bien évidemment une entrée deb-src dans le fichier sources.list&lt;br /&gt;Sous root: 

 # apt-get build-dep nvidia-glx

&lt;br /&gt;et sous votre login&lt;br /&gt;

 $ apt-get source nvidia-glx

&lt;br /&gt;&lt;br /&gt;Un répartoire nvidia-graphics-drivers-??? est crée (ici c'est nvidia-graphics-drivers-173.14.09)
* Charger les .run correspondants. Pour amd64 il vous faut le .run i386 et amd64, pour le i386, seul le .run 386 est nécessaire. Dans notre exemple, ce sont les fichiers&lt;br /&gt;&lt;br /&gt;

 NVIDIA-Linux-x86-190.53-pkg1.run
et
 NVIDIA-Linux-x86_64-190.53-pkg2.run

&lt;br /&gt;Mettez ces fichiers dans le répertoire nvidia-graphics-drivers-173.14.09 et donnez leur les droits à l'éxécution (chmod +x)
* Allez dans ce répertoire et mettez la version à jour:&lt;br /&gt;&lt;br /&gt;

 $ dch -v 190.53

&lt;br /&gt;&lt;br /&gt;Le fichier changelog est ouvert en édition, tapez vos motivations et fermez le fichier. Le répertoire a changé de nom, faites un

 cd ../nvidia-graphics-drivers-190.53

* Il faut tout d'abord changer toutes les références de 173.14.09 en 190.53 et les appels aux fichiers .run
** Editer le fichier debian/upstream_info (avec emacs bien sûr) et modifier en conséquence les valeurs RELEASE et NEXTVER (en 190.53 et 190.54)
** Dans ce même fichier changer les extensions pkg0 des fichiers NVIDIA-???.run et des répertoires correspondants, dans notre exemple, cela revient à remplacer le pkg0 en pkg1. Attention, il y a plusieurs références, faites une recherche sur pkg dans ce fichier.
** Soyez courageux, virez tous les patches: vous avez décidé d'installer le système de NVIDIA, les patches peuvent être inadaptés:&lt;br /&gt;&lt;br /&gt;

 $ rm -R patches*

&lt;br /&gt;&lt;br /&gt;(Si à ce stade vous avez effacé votre disque dur parce que vous n'étiez pas dans le bon niveau et que vous travaillé en root, '''positivez''': vous venez d'apprendre pourquoi on ne travaille '''jamais''' en root).
* Effacez les vieux .run inutiles&lt;br /&gt;&lt;br /&gt;

 $ cd ..
 $ rm NVIDIA-Linux-x86-173.14.09-pkg0.run NVIDIA-Linux-x86_64-173.14.09-pkg2.run

&lt;br /&gt;&lt;br /&gt;
* Lachez vous enfin en lançant la construction des paquets:&lt;br /&gt;&lt;br /&gt;

 $ fakeroot dpkg-buildpackage -us -uc

&lt;br /&gt;&lt;br /&gt;
* Regardez dans le répertoire au dessus vous avez
** Les paquets:&lt;br /&gt;
 nvidia-glx-ia32_190.53_amd64.deb
 nvidia-glx-dev_190.53_amd64.deb
 nvidia-glx_190.53_amd64.deb
 nvidia-kernel-source_190.53_amd64.deb
** Les sources:
 nvidia-graphics-drivers_190.53_amd64.changes
 nvidia-graphics-drivers_190.53.dsc
 nvidia-graphics-drivers_190.53.tar.gz

Les premiers sont les librairies et drivers xorg (les glx) ainsi que les sources pour faire le module nvidia avec module assistant, les seconds sont les sources de vos paquets. En cas de problème, vous pouvez les rectifier.

[[Utilisateur:fran.b|François Boisson]]
[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>qer9x8mcc6g07h1jdv409yy7h4cjxj5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>162</id>
      <parentid>161</parentid>
      <timestamp>2010-01-23T13:03:29Z</timestamp>
      <contributor>
        <username>Debianhadic</username>
        <id>11</id>
      </contributor>
      <comment>/* III - Détection de votre carte graphique */</comment>
      <text xml:space="preserve" bytes="11325">== I - Présentation ==

Avant tout sur Debian, il y a deux types de cartes nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe, que vous n'avez jamais rien compilé, ou que l'installation est nouvelle. Si ce n'est pas le cas assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur, recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libres, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :

  ##lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free

Bon ça c'est pour les gens 'stable', si vous êtes moins conservateur, vous êtes surement en SID, la version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépots, pour vérifier que votre sources.list vous permet d'y accéder tapez :

   $ apt-cache policy nvidia-kernel-source

Qui devrait vous donner quelque chose comme ça :

   nvidia-kernel-source:
     Installé : 180.29-1
     Candidat : 180.29-1
    Table de version :
    *** 180.29-1 0
           970 http://ftp.fr.debian.org sid/non-free Packages
           100 /var/lib/dpkg/status
        173.14.09-5 0
           500 http://ftp.fr.debian.org lenny/non-free Packages
           900 http://ftp.fr.debian.org squeeze/non-free Packages

Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un source.list permettant de se sortir de n'importe quelle dépendance, pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]

N'oubliez pas de mettre à jour la liste de vos paquets :

   # apt-get update

'''ATTENTION''' Si votre carte est basé sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique, je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.

== III - Détection de votre carte graphique ==

La partie la plus délicate, quel est mon pilote de carte graphique ?

   $ lspci

mon résultat, sur mon super portable Siemens :

   ...
   03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
   ...

dans les [] vous avez le type de carte, allez sur cette page [http://www.nvidia.fr/object/legacy_drivers_fr.html]
si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknow device, vous devrez mettre à jour vos identifiants :

   # update-pciids

et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot; veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite, nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique :

Si vous êtes avec gnome :
   
   # /etc/init.d/gdm stop

Si vous êtes avec KDE :

   # /etc/init.d/kdm stop

Si vous n'avez ni gnome, ni KDE, je suppose que vous savez très bien comment faire  :wink: 

Puis :

   # nvidia-installer --uninstall
   # modprobe -r nvidia

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

   # find / -name &quot;*nvidia*&quot; -delete

== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, dans le cas d'une carte legacy, remplacez les références à nvidia, par  les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy
Remarque : Les bons informaticiens, sont en générales des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! alors ils ont crus bons, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peut comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littérallement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;, mais comprenez bien que l'abrévation a la même signification.

[code]
$ su 
# apt-get install module-assistant
# m-a prepare
# m-a clean nvidia-kernel
[/code]
Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :
      [code]
       # apt-get install -t unstable nvidia-kernel-source[/code]
La suite est la même :
[code]
# m-a a-i -i nvidia-kernel-source
# apt-get install nvidia-glx
[/code]

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf
[code]
# nano /etc/X11/xorg.conf
[/code]
Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)
[code]
Section &quot;Device&quot;
    Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
    Driver         &quot;nv&quot;
EndSection
[/code]
Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
[code]    Driver         &quot;nv&quot;[/code]
Par :
[code]    Driver         &quot;nvidia&quot;[/code]
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :
Pour GNOME :
[code]# /etc/init.d/gdm restart[/code]
Pour KDE :
[code]# /etc/init.d/kdm restart[/code]
Ou si vous êtes sur de rien :
[code]
# reboot
[/code]


== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manips à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources, ça évite pas mal de problèmes, mais si on voit :
[code]
Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,
[/code]
lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.


== ANNEXE 1 ==
 : Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :
[code]
 $ su
 # rm -rf /usr/src/modules/nvidia-kernel/
 # cd /usr/src
 # tar xjvf nvidia-kernel.tar.bz2
 # cd modules/nvidia-kernel/debian
 # cp control.template control
 # m-a a-i -i nvidia-kernel-source
 # apt-get install nvidia-glx
[/code]
Retournez à la partie V

[[Utilisateur:Debianhadic|Debianhadic]]

== ANNEXE 2 (refaire des paquets .deb)==
NVIDIA a fait une mise à jour des drivers il y a 5 minutes. Vous êtes raisonnable (vous avez attendu 5 minutes) mais tout de même, vous voulez ces drivers même si cela peut ne pas marcher (si, ça n'est pas infaillible). Vous savez donc que ça peut tout casser mais tant pis, vous les voulez quand même et qui plus est sous forme de paquets (caprice ?). Bon, c'est faisable à partir des .run. La démarche est la suivante:

&lt;br /&gt;

Il vous faut installer les scripts de développement (paquet devscripts) et procéder comme suit:

&lt;br /&gt;

* Charger les sources des paquets nvidia, il faut bien évidemment une entrée deb-src dans le fichier sources.list&lt;br /&gt;Sous root: 

 # apt-get build-dep nvidia-glx

&lt;br /&gt;et sous votre login&lt;br /&gt;

 $ apt-get source nvidia-glx

&lt;br /&gt;&lt;br /&gt;Un répartoire nvidia-graphics-drivers-??? est crée (ici c'est nvidia-graphics-drivers-173.14.09)
* Charger les .run correspondants. Pour amd64 il vous faut le .run i386 et amd64, pour le i386, seul le .run 386 est nécessaire. Dans notre exemple, ce sont les fichiers&lt;br /&gt;&lt;br /&gt;

 NVIDIA-Linux-x86-190.53-pkg1.run
et
 NVIDIA-Linux-x86_64-190.53-pkg2.run

&lt;br /&gt;Mettez ces fichiers dans le répertoire nvidia-graphics-drivers-173.14.09 et donnez leur les droits à l'éxécution (chmod +x)
* Allez dans ce répertoire et mettez la version à jour:&lt;br /&gt;&lt;br /&gt;

 $ dch -v 190.53

&lt;br /&gt;&lt;br /&gt;Le fichier changelog est ouvert en édition, tapez vos motivations et fermez le fichier. Le répertoire a changé de nom, faites un

 cd ../nvidia-graphics-drivers-190.53

* Il faut tout d'abord changer toutes les références de 173.14.09 en 190.53 et les appels aux fichiers .run
** Editer le fichier debian/upstream_info (avec emacs bien sûr) et modifier en conséquence les valeurs RELEASE et NEXTVER (en 190.53 et 190.54)
** Dans ce même fichier changer les extensions pkg0 des fichiers NVIDIA-???.run et des répertoires correspondants, dans notre exemple, cela revient à remplacer le pkg0 en pkg1. Attention, il y a plusieurs références, faites une recherche sur pkg dans ce fichier.
** Soyez courageux, virez tous les patches: vous avez décidé d'installer le système de NVIDIA, les patches peuvent être inadaptés:&lt;br /&gt;&lt;br /&gt;

 $ rm -R patches*

&lt;br /&gt;&lt;br /&gt;(Si à ce stade vous avez effacé votre disque dur parce que vous n'étiez pas dans le bon niveau et que vous travaillé en root, '''positivez''': vous venez d'apprendre pourquoi on ne travaille '''jamais''' en root).
* Effacez les vieux .run inutiles&lt;br /&gt;&lt;br /&gt;

 $ cd ..
 $ rm NVIDIA-Linux-x86-173.14.09-pkg0.run NVIDIA-Linux-x86_64-173.14.09-pkg2.run

&lt;br /&gt;&lt;br /&gt;
* Lachez vous enfin en lançant la construction des paquets:&lt;br /&gt;&lt;br /&gt;

 $ fakeroot dpkg-buildpackage -us -uc

&lt;br /&gt;&lt;br /&gt;
* Regardez dans le répertoire au dessus vous avez
** Les paquets:&lt;br /&gt;
 nvidia-glx-ia32_190.53_amd64.deb
 nvidia-glx-dev_190.53_amd64.deb
 nvidia-glx_190.53_amd64.deb
 nvidia-kernel-source_190.53_amd64.deb
** Les sources:
 nvidia-graphics-drivers_190.53_amd64.changes
 nvidia-graphics-drivers_190.53.dsc
 nvidia-graphics-drivers_190.53.tar.gz

Les premiers sont les librairies et drivers xorg (les glx) ainsi que les sources pour faire le module nvidia avec module assistant, les seconds sont les sources de vos paquets. En cas de problème, vous pouvez les rectifier.

[[Utilisateur:fran.b|François Boisson]]
[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>8t3o19n8uun1589msd07norift9cfdf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>163</id>
      <parentid>162</parentid>
      <timestamp>2010-01-23T13:04:29Z</timestamp>
      <contributor>
        <username>Debianhadic</username>
        <id>11</id>
      </contributor>
      <comment>/* IV - Compilation du module - Patch du noyau */</comment>
      <text xml:space="preserve" bytes="11300">== I - Présentation ==

Avant tout sur Debian, il y a deux types de cartes nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe, que vous n'avez jamais rien compilé, ou que l'installation est nouvelle. Si ce n'est pas le cas assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur, recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libres, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :

  ##lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free

Bon ça c'est pour les gens 'stable', si vous êtes moins conservateur, vous êtes surement en SID, la version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépots, pour vérifier que votre sources.list vous permet d'y accéder tapez :

   $ apt-cache policy nvidia-kernel-source

Qui devrait vous donner quelque chose comme ça :

   nvidia-kernel-source:
     Installé : 180.29-1
     Candidat : 180.29-1
    Table de version :
    *** 180.29-1 0
           970 http://ftp.fr.debian.org sid/non-free Packages
           100 /var/lib/dpkg/status
        173.14.09-5 0
           500 http://ftp.fr.debian.org lenny/non-free Packages
           900 http://ftp.fr.debian.org squeeze/non-free Packages

Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un source.list permettant de se sortir de n'importe quelle dépendance, pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]

N'oubliez pas de mettre à jour la liste de vos paquets :

   # apt-get update

'''ATTENTION''' Si votre carte est basé sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique, je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.

== III - Détection de votre carte graphique ==

La partie la plus délicate, quel est mon pilote de carte graphique ?

   $ lspci

mon résultat, sur mon super portable Siemens :

   ...
   03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
   ...

dans les [] vous avez le type de carte, allez sur cette page [http://www.nvidia.fr/object/legacy_drivers_fr.html]
si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknow device, vous devrez mettre à jour vos identifiants :

   # update-pciids

et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot; veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite, nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique :

Si vous êtes avec gnome :
   
   # /etc/init.d/gdm stop

Si vous êtes avec KDE :

   # /etc/init.d/kdm stop

Si vous n'avez ni gnome, ni KDE, je suppose que vous savez très bien comment faire  :wink: 

Puis :

   # nvidia-installer --uninstall
   # modprobe -r nvidia

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

   # find / -name &quot;*nvidia*&quot; -delete

== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, dans le cas d'une carte legacy, remplacez les références à nvidia, par  les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy
Remarque : Les bons informaticiens, sont en générales des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! alors ils ont crus bons, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peut comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littérallement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;, mais comprenez bien que l'abrévation a la même signification.

   $ su 
   # apt-get install module-assistant
   # m-a prepare
   # m-a clean nvidia-kernel

Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :

   # apt-get install -t unstable nvidia-kernel-source[/code]

La suite est la même :

   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf
[code]
# nano /etc/X11/xorg.conf
[/code]
Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)
[code]
Section &quot;Device&quot;
    Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
    Driver         &quot;nv&quot;
EndSection
[/code]
Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
[code]    Driver         &quot;nv&quot;[/code]
Par :
[code]    Driver         &quot;nvidia&quot;[/code]
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :
Pour GNOME :
[code]# /etc/init.d/gdm restart[/code]
Pour KDE :
[code]# /etc/init.d/kdm restart[/code]
Ou si vous êtes sur de rien :
[code]
# reboot
[/code]


== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manips à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources, ça évite pas mal de problèmes, mais si on voit :
[code]
Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,
[/code]
lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.


== ANNEXE 1 ==
 : Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :
[code]
 $ su
 # rm -rf /usr/src/modules/nvidia-kernel/
 # cd /usr/src
 # tar xjvf nvidia-kernel.tar.bz2
 # cd modules/nvidia-kernel/debian
 # cp control.template control
 # m-a a-i -i nvidia-kernel-source
 # apt-get install nvidia-glx
[/code]
Retournez à la partie V

[[Utilisateur:Debianhadic|Debianhadic]]

== ANNEXE 2 (refaire des paquets .deb)==
NVIDIA a fait une mise à jour des drivers il y a 5 minutes. Vous êtes raisonnable (vous avez attendu 5 minutes) mais tout de même, vous voulez ces drivers même si cela peut ne pas marcher (si, ça n'est pas infaillible). Vous savez donc que ça peut tout casser mais tant pis, vous les voulez quand même et qui plus est sous forme de paquets (caprice ?). Bon, c'est faisable à partir des .run. La démarche est la suivante:

&lt;br /&gt;

Il vous faut installer les scripts de développement (paquet devscripts) et procéder comme suit:

&lt;br /&gt;

* Charger les sources des paquets nvidia, il faut bien évidemment une entrée deb-src dans le fichier sources.list&lt;br /&gt;Sous root: 

 # apt-get build-dep nvidia-glx

&lt;br /&gt;et sous votre login&lt;br /&gt;

 $ apt-get source nvidia-glx

&lt;br /&gt;&lt;br /&gt;Un répartoire nvidia-graphics-drivers-??? est crée (ici c'est nvidia-graphics-drivers-173.14.09)
* Charger les .run correspondants. Pour amd64 il vous faut le .run i386 et amd64, pour le i386, seul le .run 386 est nécessaire. Dans notre exemple, ce sont les fichiers&lt;br /&gt;&lt;br /&gt;

 NVIDIA-Linux-x86-190.53-pkg1.run
et
 NVIDIA-Linux-x86_64-190.53-pkg2.run

&lt;br /&gt;Mettez ces fichiers dans le répertoire nvidia-graphics-drivers-173.14.09 et donnez leur les droits à l'éxécution (chmod +x)
* Allez dans ce répertoire et mettez la version à jour:&lt;br /&gt;&lt;br /&gt;

 $ dch -v 190.53

&lt;br /&gt;&lt;br /&gt;Le fichier changelog est ouvert en édition, tapez vos motivations et fermez le fichier. Le répertoire a changé de nom, faites un

 cd ../nvidia-graphics-drivers-190.53

* Il faut tout d'abord changer toutes les références de 173.14.09 en 190.53 et les appels aux fichiers .run
** Editer le fichier debian/upstream_info (avec emacs bien sûr) et modifier en conséquence les valeurs RELEASE et NEXTVER (en 190.53 et 190.54)
** Dans ce même fichier changer les extensions pkg0 des fichiers NVIDIA-???.run et des répertoires correspondants, dans notre exemple, cela revient à remplacer le pkg0 en pkg1. Attention, il y a plusieurs références, faites une recherche sur pkg dans ce fichier.
** Soyez courageux, virez tous les patches: vous avez décidé d'installer le système de NVIDIA, les patches peuvent être inadaptés:&lt;br /&gt;&lt;br /&gt;

 $ rm -R patches*

&lt;br /&gt;&lt;br /&gt;(Si à ce stade vous avez effacé votre disque dur parce que vous n'étiez pas dans le bon niveau et que vous travaillé en root, '''positivez''': vous venez d'apprendre pourquoi on ne travaille '''jamais''' en root).
* Effacez les vieux .run inutiles&lt;br /&gt;&lt;br /&gt;

 $ cd ..
 $ rm NVIDIA-Linux-x86-173.14.09-pkg0.run NVIDIA-Linux-x86_64-173.14.09-pkg2.run

&lt;br /&gt;&lt;br /&gt;
* Lachez vous enfin en lançant la construction des paquets:&lt;br /&gt;&lt;br /&gt;

 $ fakeroot dpkg-buildpackage -us -uc

&lt;br /&gt;&lt;br /&gt;
* Regardez dans le répertoire au dessus vous avez
** Les paquets:&lt;br /&gt;
 nvidia-glx-ia32_190.53_amd64.deb
 nvidia-glx-dev_190.53_amd64.deb
 nvidia-glx_190.53_amd64.deb
 nvidia-kernel-source_190.53_amd64.deb
** Les sources:
 nvidia-graphics-drivers_190.53_amd64.changes
 nvidia-graphics-drivers_190.53.dsc
 nvidia-graphics-drivers_190.53.tar.gz

Les premiers sont les librairies et drivers xorg (les glx) ainsi que les sources pour faire le module nvidia avec module assistant, les seconds sont les sources de vos paquets. En cas de problème, vous pouvez les rectifier.

[[Utilisateur:fran.b|François Boisson]]
[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>tljp9hkvwo0jdou5izfhl4qf28neckf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>164</id>
      <parentid>163</parentid>
      <timestamp>2010-01-23T13:06:05Z</timestamp>
      <contributor>
        <username>Debianhadic</username>
        <id>11</id>
      </contributor>
      <comment>/* V - Paramétrage de xorg.conf */</comment>
      <text xml:space="preserve" bytes="11231">== I - Présentation ==

Avant tout sur Debian, il y a deux types de cartes nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe, que vous n'avez jamais rien compilé, ou que l'installation est nouvelle. Si ce n'est pas le cas assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur, recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libres, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :

  ##lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free

Bon ça c'est pour les gens 'stable', si vous êtes moins conservateur, vous êtes surement en SID, la version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépots, pour vérifier que votre sources.list vous permet d'y accéder tapez :

   $ apt-cache policy nvidia-kernel-source

Qui devrait vous donner quelque chose comme ça :

   nvidia-kernel-source:
     Installé : 180.29-1
     Candidat : 180.29-1
    Table de version :
    *** 180.29-1 0
           970 http://ftp.fr.debian.org sid/non-free Packages
           100 /var/lib/dpkg/status
        173.14.09-5 0
           500 http://ftp.fr.debian.org lenny/non-free Packages
           900 http://ftp.fr.debian.org squeeze/non-free Packages

Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un source.list permettant de se sortir de n'importe quelle dépendance, pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]

N'oubliez pas de mettre à jour la liste de vos paquets :

   # apt-get update

'''ATTENTION''' Si votre carte est basé sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique, je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.

== III - Détection de votre carte graphique ==

La partie la plus délicate, quel est mon pilote de carte graphique ?

   $ lspci

mon résultat, sur mon super portable Siemens :

   ...
   03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
   ...

dans les [] vous avez le type de carte, allez sur cette page [http://www.nvidia.fr/object/legacy_drivers_fr.html]
si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknow device, vous devrez mettre à jour vos identifiants :

   # update-pciids

et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot; veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite, nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique :

Si vous êtes avec gnome :
   
   # /etc/init.d/gdm stop

Si vous êtes avec KDE :

   # /etc/init.d/kdm stop

Si vous n'avez ni gnome, ni KDE, je suppose que vous savez très bien comment faire  :wink: 

Puis :

   # nvidia-installer --uninstall
   # modprobe -r nvidia

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

   # find / -name &quot;*nvidia*&quot; -delete

== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, dans le cas d'une carte legacy, remplacez les références à nvidia, par  les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy
Remarque : Les bons informaticiens, sont en générales des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! alors ils ont crus bons, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peut comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littérallement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;, mais comprenez bien que l'abrévation a la même signification.

   $ su 
   # apt-get install module-assistant
   # m-a prepare
   # m-a clean nvidia-kernel

Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :

   # apt-get install -t unstable nvidia-kernel-source[/code]

La suite est la même :

   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf

   # nano /etc/X11/xorg.conf

Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)

   Section &quot;Device&quot;
       Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
       Driver         &quot;nv&quot;
   EndSection

Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
   Driver         &quot;nv&quot;
Par :
   Driver         &quot;nvidia&quot;
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :
Pour GNOME :

   # /etc/init.d/gdm restart

Pour KDE :
   # /etc/init.d/kdm restart
Ou si vous êtes sur de rien :

   # reboot

== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manips à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources, ça évite pas mal de problèmes, mais si on voit :
[code]
Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,
[/code]
lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.


== ANNEXE 1 ==
 : Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :
[code]
 $ su
 # rm -rf /usr/src/modules/nvidia-kernel/
 # cd /usr/src
 # tar xjvf nvidia-kernel.tar.bz2
 # cd modules/nvidia-kernel/debian
 # cp control.template control
 # m-a a-i -i nvidia-kernel-source
 # apt-get install nvidia-glx
[/code]
Retournez à la partie V

[[Utilisateur:Debianhadic|Debianhadic]]

== ANNEXE 2 (refaire des paquets .deb)==
NVIDIA a fait une mise à jour des drivers il y a 5 minutes. Vous êtes raisonnable (vous avez attendu 5 minutes) mais tout de même, vous voulez ces drivers même si cela peut ne pas marcher (si, ça n'est pas infaillible). Vous savez donc que ça peut tout casser mais tant pis, vous les voulez quand même et qui plus est sous forme de paquets (caprice ?). Bon, c'est faisable à partir des .run. La démarche est la suivante:

&lt;br /&gt;

Il vous faut installer les scripts de développement (paquet devscripts) et procéder comme suit:

&lt;br /&gt;

* Charger les sources des paquets nvidia, il faut bien évidemment une entrée deb-src dans le fichier sources.list&lt;br /&gt;Sous root: 

 # apt-get build-dep nvidia-glx

&lt;br /&gt;et sous votre login&lt;br /&gt;

 $ apt-get source nvidia-glx

&lt;br /&gt;&lt;br /&gt;Un répartoire nvidia-graphics-drivers-??? est crée (ici c'est nvidia-graphics-drivers-173.14.09)
* Charger les .run correspondants. Pour amd64 il vous faut le .run i386 et amd64, pour le i386, seul le .run 386 est nécessaire. Dans notre exemple, ce sont les fichiers&lt;br /&gt;&lt;br /&gt;

 NVIDIA-Linux-x86-190.53-pkg1.run
et
 NVIDIA-Linux-x86_64-190.53-pkg2.run

&lt;br /&gt;Mettez ces fichiers dans le répertoire nvidia-graphics-drivers-173.14.09 et donnez leur les droits à l'éxécution (chmod +x)
* Allez dans ce répertoire et mettez la version à jour:&lt;br /&gt;&lt;br /&gt;

 $ dch -v 190.53

&lt;br /&gt;&lt;br /&gt;Le fichier changelog est ouvert en édition, tapez vos motivations et fermez le fichier. Le répertoire a changé de nom, faites un

 cd ../nvidia-graphics-drivers-190.53

* Il faut tout d'abord changer toutes les références de 173.14.09 en 190.53 et les appels aux fichiers .run
** Editer le fichier debian/upstream_info (avec emacs bien sûr) et modifier en conséquence les valeurs RELEASE et NEXTVER (en 190.53 et 190.54)
** Dans ce même fichier changer les extensions pkg0 des fichiers NVIDIA-???.run et des répertoires correspondants, dans notre exemple, cela revient à remplacer le pkg0 en pkg1. Attention, il y a plusieurs références, faites une recherche sur pkg dans ce fichier.
** Soyez courageux, virez tous les patches: vous avez décidé d'installer le système de NVIDIA, les patches peuvent être inadaptés:&lt;br /&gt;&lt;br /&gt;

 $ rm -R patches*

&lt;br /&gt;&lt;br /&gt;(Si à ce stade vous avez effacé votre disque dur parce que vous n'étiez pas dans le bon niveau et que vous travaillé en root, '''positivez''': vous venez d'apprendre pourquoi on ne travaille '''jamais''' en root).
* Effacez les vieux .run inutiles&lt;br /&gt;&lt;br /&gt;

 $ cd ..
 $ rm NVIDIA-Linux-x86-173.14.09-pkg0.run NVIDIA-Linux-x86_64-173.14.09-pkg2.run

&lt;br /&gt;&lt;br /&gt;
* Lachez vous enfin en lançant la construction des paquets:&lt;br /&gt;&lt;br /&gt;

 $ fakeroot dpkg-buildpackage -us -uc

&lt;br /&gt;&lt;br /&gt;
* Regardez dans le répertoire au dessus vous avez
** Les paquets:&lt;br /&gt;
 nvidia-glx-ia32_190.53_amd64.deb
 nvidia-glx-dev_190.53_amd64.deb
 nvidia-glx_190.53_amd64.deb
 nvidia-kernel-source_190.53_amd64.deb
** Les sources:
 nvidia-graphics-drivers_190.53_amd64.changes
 nvidia-graphics-drivers_190.53.dsc
 nvidia-graphics-drivers_190.53.tar.gz

Les premiers sont les librairies et drivers xorg (les glx) ainsi que les sources pour faire le module nvidia avec module assistant, les seconds sont les sources de vos paquets. En cas de problème, vous pouvez les rectifier.

[[Utilisateur:fran.b|François Boisson]]
[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>2naoagtmby3mgjcovqqlobls1kpahzf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>165</id>
      <parentid>164</parentid>
      <timestamp>2010-01-23T13:06:27Z</timestamp>
      <contributor>
        <username>Debianhadic</username>
        <id>11</id>
      </contributor>
      <comment>/* VI - Conclusion */</comment>
      <text xml:space="preserve" bytes="11220">== I - Présentation ==

Avant tout sur Debian, il y a deux types de cartes nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe, que vous n'avez jamais rien compilé, ou que l'installation est nouvelle. Si ce n'est pas le cas assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur, recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libres, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :

  ##lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free

Bon ça c'est pour les gens 'stable', si vous êtes moins conservateur, vous êtes surement en SID, la version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépots, pour vérifier que votre sources.list vous permet d'y accéder tapez :

   $ apt-cache policy nvidia-kernel-source

Qui devrait vous donner quelque chose comme ça :

   nvidia-kernel-source:
     Installé : 180.29-1
     Candidat : 180.29-1
    Table de version :
    *** 180.29-1 0
           970 http://ftp.fr.debian.org sid/non-free Packages
           100 /var/lib/dpkg/status
        173.14.09-5 0
           500 http://ftp.fr.debian.org lenny/non-free Packages
           900 http://ftp.fr.debian.org squeeze/non-free Packages

Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un source.list permettant de se sortir de n'importe quelle dépendance, pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]

N'oubliez pas de mettre à jour la liste de vos paquets :

   # apt-get update

'''ATTENTION''' Si votre carte est basé sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique, je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.

== III - Détection de votre carte graphique ==

La partie la plus délicate, quel est mon pilote de carte graphique ?

   $ lspci

mon résultat, sur mon super portable Siemens :

   ...
   03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
   ...

dans les [] vous avez le type de carte, allez sur cette page [http://www.nvidia.fr/object/legacy_drivers_fr.html]
si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknow device, vous devrez mettre à jour vos identifiants :

   # update-pciids

et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot; veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite, nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique :

Si vous êtes avec gnome :
   
   # /etc/init.d/gdm stop

Si vous êtes avec KDE :

   # /etc/init.d/kdm stop

Si vous n'avez ni gnome, ni KDE, je suppose que vous savez très bien comment faire  :wink: 

Puis :

   # nvidia-installer --uninstall
   # modprobe -r nvidia

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

   # find / -name &quot;*nvidia*&quot; -delete

== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, dans le cas d'une carte legacy, remplacez les références à nvidia, par  les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy
Remarque : Les bons informaticiens, sont en générales des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! alors ils ont crus bons, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peut comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littérallement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;, mais comprenez bien que l'abrévation a la même signification.

   $ su 
   # apt-get install module-assistant
   # m-a prepare
   # m-a clean nvidia-kernel

Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :

   # apt-get install -t unstable nvidia-kernel-source[/code]

La suite est la même :

   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf

   # nano /etc/X11/xorg.conf

Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)

   Section &quot;Device&quot;
       Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
       Driver         &quot;nv&quot;
   EndSection

Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
   Driver         &quot;nv&quot;
Par :
   Driver         &quot;nvidia&quot;
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :
Pour GNOME :

   # /etc/init.d/gdm restart

Pour KDE :
   # /etc/init.d/kdm restart
Ou si vous êtes sur de rien :

   # reboot

== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manips à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources, ça évite pas mal de problèmes, mais si on voit :

   Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,

lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.

== ANNEXE 1 ==
 : Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :
[code]
 $ su
 # rm -rf /usr/src/modules/nvidia-kernel/
 # cd /usr/src
 # tar xjvf nvidia-kernel.tar.bz2
 # cd modules/nvidia-kernel/debian
 # cp control.template control
 # m-a a-i -i nvidia-kernel-source
 # apt-get install nvidia-glx
[/code]
Retournez à la partie V

[[Utilisateur:Debianhadic|Debianhadic]]

== ANNEXE 2 (refaire des paquets .deb)==
NVIDIA a fait une mise à jour des drivers il y a 5 minutes. Vous êtes raisonnable (vous avez attendu 5 minutes) mais tout de même, vous voulez ces drivers même si cela peut ne pas marcher (si, ça n'est pas infaillible). Vous savez donc que ça peut tout casser mais tant pis, vous les voulez quand même et qui plus est sous forme de paquets (caprice ?). Bon, c'est faisable à partir des .run. La démarche est la suivante:

&lt;br /&gt;

Il vous faut installer les scripts de développement (paquet devscripts) et procéder comme suit:

&lt;br /&gt;

* Charger les sources des paquets nvidia, il faut bien évidemment une entrée deb-src dans le fichier sources.list&lt;br /&gt;Sous root: 

 # apt-get build-dep nvidia-glx

&lt;br /&gt;et sous votre login&lt;br /&gt;

 $ apt-get source nvidia-glx

&lt;br /&gt;&lt;br /&gt;Un répartoire nvidia-graphics-drivers-??? est crée (ici c'est nvidia-graphics-drivers-173.14.09)
* Charger les .run correspondants. Pour amd64 il vous faut le .run i386 et amd64, pour le i386, seul le .run 386 est nécessaire. Dans notre exemple, ce sont les fichiers&lt;br /&gt;&lt;br /&gt;

 NVIDIA-Linux-x86-190.53-pkg1.run
et
 NVIDIA-Linux-x86_64-190.53-pkg2.run

&lt;br /&gt;Mettez ces fichiers dans le répertoire nvidia-graphics-drivers-173.14.09 et donnez leur les droits à l'éxécution (chmod +x)
* Allez dans ce répertoire et mettez la version à jour:&lt;br /&gt;&lt;br /&gt;

 $ dch -v 190.53

&lt;br /&gt;&lt;br /&gt;Le fichier changelog est ouvert en édition, tapez vos motivations et fermez le fichier. Le répertoire a changé de nom, faites un

 cd ../nvidia-graphics-drivers-190.53

* Il faut tout d'abord changer toutes les références de 173.14.09 en 190.53 et les appels aux fichiers .run
** Editer le fichier debian/upstream_info (avec emacs bien sûr) et modifier en conséquence les valeurs RELEASE et NEXTVER (en 190.53 et 190.54)
** Dans ce même fichier changer les extensions pkg0 des fichiers NVIDIA-???.run et des répertoires correspondants, dans notre exemple, cela revient à remplacer le pkg0 en pkg1. Attention, il y a plusieurs références, faites une recherche sur pkg dans ce fichier.
** Soyez courageux, virez tous les patches: vous avez décidé d'installer le système de NVIDIA, les patches peuvent être inadaptés:&lt;br /&gt;&lt;br /&gt;

 $ rm -R patches*

&lt;br /&gt;&lt;br /&gt;(Si à ce stade vous avez effacé votre disque dur parce que vous n'étiez pas dans le bon niveau et que vous travaillé en root, '''positivez''': vous venez d'apprendre pourquoi on ne travaille '''jamais''' en root).
* Effacez les vieux .run inutiles&lt;br /&gt;&lt;br /&gt;

 $ cd ..
 $ rm NVIDIA-Linux-x86-173.14.09-pkg0.run NVIDIA-Linux-x86_64-173.14.09-pkg2.run

&lt;br /&gt;&lt;br /&gt;
* Lachez vous enfin en lançant la construction des paquets:&lt;br /&gt;&lt;br /&gt;

 $ fakeroot dpkg-buildpackage -us -uc

&lt;br /&gt;&lt;br /&gt;
* Regardez dans le répertoire au dessus vous avez
** Les paquets:&lt;br /&gt;
 nvidia-glx-ia32_190.53_amd64.deb
 nvidia-glx-dev_190.53_amd64.deb
 nvidia-glx_190.53_amd64.deb
 nvidia-kernel-source_190.53_amd64.deb
** Les sources:
 nvidia-graphics-drivers_190.53_amd64.changes
 nvidia-graphics-drivers_190.53.dsc
 nvidia-graphics-drivers_190.53.tar.gz

Les premiers sont les librairies et drivers xorg (les glx) ainsi que les sources pour faire le module nvidia avec module assistant, les seconds sont les sources de vos paquets. En cas de problème, vous pouvez les rectifier.

[[Utilisateur:fran.b|François Boisson]]
[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>argz5kq1108fae8fx3vmahryz5wnski</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>166</id>
      <parentid>165</parentid>
      <timestamp>2010-01-23T13:07:07Z</timestamp>
      <contributor>
        <username>Debianhadic</username>
        <id>11</id>
      </contributor>
      <comment>/* ANNEXE 1 */</comment>
      <text xml:space="preserve" bytes="11222">== I - Présentation ==

Avant tout sur Debian, il y a deux types de cartes nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe, que vous n'avez jamais rien compilé, ou que l'installation est nouvelle. Si ce n'est pas le cas assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur, recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libres, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :

  ##lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free

Bon ça c'est pour les gens 'stable', si vous êtes moins conservateur, vous êtes surement en SID, la version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépots, pour vérifier que votre sources.list vous permet d'y accéder tapez :

   $ apt-cache policy nvidia-kernel-source

Qui devrait vous donner quelque chose comme ça :

   nvidia-kernel-source:
     Installé : 180.29-1
     Candidat : 180.29-1
    Table de version :
    *** 180.29-1 0
           970 http://ftp.fr.debian.org sid/non-free Packages
           100 /var/lib/dpkg/status
        173.14.09-5 0
           500 http://ftp.fr.debian.org lenny/non-free Packages
           900 http://ftp.fr.debian.org squeeze/non-free Packages

Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un source.list permettant de se sortir de n'importe quelle dépendance, pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]

N'oubliez pas de mettre à jour la liste de vos paquets :

   # apt-get update

'''ATTENTION''' Si votre carte est basé sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique, je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.

== III - Détection de votre carte graphique ==

La partie la plus délicate, quel est mon pilote de carte graphique ?

   $ lspci

mon résultat, sur mon super portable Siemens :

   ...
   03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
   ...

dans les [] vous avez le type de carte, allez sur cette page [http://www.nvidia.fr/object/legacy_drivers_fr.html]
si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknow device, vous devrez mettre à jour vos identifiants :

   # update-pciids

et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot; veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite, nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique :

Si vous êtes avec gnome :
   
   # /etc/init.d/gdm stop

Si vous êtes avec KDE :

   # /etc/init.d/kdm stop

Si vous n'avez ni gnome, ni KDE, je suppose que vous savez très bien comment faire  :wink: 

Puis :

   # nvidia-installer --uninstall
   # modprobe -r nvidia

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

   # find / -name &quot;*nvidia*&quot; -delete

== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, dans le cas d'une carte legacy, remplacez les références à nvidia, par  les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy
Remarque : Les bons informaticiens, sont en générales des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! alors ils ont crus bons, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peut comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littérallement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;, mais comprenez bien que l'abrévation a la même signification.

   $ su 
   # apt-get install module-assistant
   # m-a prepare
   # m-a clean nvidia-kernel

Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :

   # apt-get install -t unstable nvidia-kernel-source[/code]

La suite est la même :

   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf

   # nano /etc/X11/xorg.conf

Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)

   Section &quot;Device&quot;
       Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
       Driver         &quot;nv&quot;
   EndSection

Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
   Driver         &quot;nv&quot;
Par :
   Driver         &quot;nvidia&quot;
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :
Pour GNOME :

   # /etc/init.d/gdm restart

Pour KDE :
   # /etc/init.d/kdm restart
Ou si vous êtes sur de rien :

   # reboot

== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manips à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources, ça évite pas mal de problèmes, mais si on voit :

   Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,

lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.

== ANNEXE 1 ==
  Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :

   $ su
   # rm -rf /usr/src/modules/nvidia-kernel/
   # cd /usr/src
   # tar xjvf nvidia-kernel.tar.bz2
   # cd modules/nvidia-kernel/debian
   # cp control.template control
   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

Retournez à la partie V

[[Utilisateur:Debianhadic|Debianhadic]]

== ANNEXE 2 (refaire des paquets .deb)==
NVIDIA a fait une mise à jour des drivers il y a 5 minutes. Vous êtes raisonnable (vous avez attendu 5 minutes) mais tout de même, vous voulez ces drivers même si cela peut ne pas marcher (si, ça n'est pas infaillible). Vous savez donc que ça peut tout casser mais tant pis, vous les voulez quand même et qui plus est sous forme de paquets (caprice ?). Bon, c'est faisable à partir des .run. La démarche est la suivante:

&lt;br /&gt;

Il vous faut installer les scripts de développement (paquet devscripts) et procéder comme suit:

&lt;br /&gt;

* Charger les sources des paquets nvidia, il faut bien évidemment une entrée deb-src dans le fichier sources.list&lt;br /&gt;Sous root: 

 # apt-get build-dep nvidia-glx

&lt;br /&gt;et sous votre login&lt;br /&gt;

 $ apt-get source nvidia-glx

&lt;br /&gt;&lt;br /&gt;Un répartoire nvidia-graphics-drivers-??? est crée (ici c'est nvidia-graphics-drivers-173.14.09)
* Charger les .run correspondants. Pour amd64 il vous faut le .run i386 et amd64, pour le i386, seul le .run 386 est nécessaire. Dans notre exemple, ce sont les fichiers&lt;br /&gt;&lt;br /&gt;

 NVIDIA-Linux-x86-190.53-pkg1.run
et
 NVIDIA-Linux-x86_64-190.53-pkg2.run

&lt;br /&gt;Mettez ces fichiers dans le répertoire nvidia-graphics-drivers-173.14.09 et donnez leur les droits à l'éxécution (chmod +x)
* Allez dans ce répertoire et mettez la version à jour:&lt;br /&gt;&lt;br /&gt;

 $ dch -v 190.53

&lt;br /&gt;&lt;br /&gt;Le fichier changelog est ouvert en édition, tapez vos motivations et fermez le fichier. Le répertoire a changé de nom, faites un

 cd ../nvidia-graphics-drivers-190.53

* Il faut tout d'abord changer toutes les références de 173.14.09 en 190.53 et les appels aux fichiers .run
** Editer le fichier debian/upstream_info (avec emacs bien sûr) et modifier en conséquence les valeurs RELEASE et NEXTVER (en 190.53 et 190.54)
** Dans ce même fichier changer les extensions pkg0 des fichiers NVIDIA-???.run et des répertoires correspondants, dans notre exemple, cela revient à remplacer le pkg0 en pkg1. Attention, il y a plusieurs références, faites une recherche sur pkg dans ce fichier.
** Soyez courageux, virez tous les patches: vous avez décidé d'installer le système de NVIDIA, les patches peuvent être inadaptés:&lt;br /&gt;&lt;br /&gt;

 $ rm -R patches*

&lt;br /&gt;&lt;br /&gt;(Si à ce stade vous avez effacé votre disque dur parce que vous n'étiez pas dans le bon niveau et que vous travaillé en root, '''positivez''': vous venez d'apprendre pourquoi on ne travaille '''jamais''' en root).
* Effacez les vieux .run inutiles&lt;br /&gt;&lt;br /&gt;

 $ cd ..
 $ rm NVIDIA-Linux-x86-173.14.09-pkg0.run NVIDIA-Linux-x86_64-173.14.09-pkg2.run

&lt;br /&gt;&lt;br /&gt;
* Lachez vous enfin en lançant la construction des paquets:&lt;br /&gt;&lt;br /&gt;

 $ fakeroot dpkg-buildpackage -us -uc

&lt;br /&gt;&lt;br /&gt;
* Regardez dans le répertoire au dessus vous avez
** Les paquets:&lt;br /&gt;
 nvidia-glx-ia32_190.53_amd64.deb
 nvidia-glx-dev_190.53_amd64.deb
 nvidia-glx_190.53_amd64.deb
 nvidia-kernel-source_190.53_amd64.deb
** Les sources:
 nvidia-graphics-drivers_190.53_amd64.changes
 nvidia-graphics-drivers_190.53.dsc
 nvidia-graphics-drivers_190.53.tar.gz

Les premiers sont les librairies et drivers xorg (les glx) ainsi que les sources pour faire le module nvidia avec module assistant, les seconds sont les sources de vos paquets. En cas de problème, vous pouvez les rectifier.

[[Utilisateur:fran.b|François Boisson]]
[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>8sgj08y7iwp0qmn0xkk0qa2tvqd8iab</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>167</id>
      <parentid>166</parentid>
      <timestamp>2010-01-23T13:07:28Z</timestamp>
      <contributor>
        <username>Debianhadic</username>
        <id>11</id>
      </contributor>
      <comment>/* ANNEXE 1 */</comment>
      <text xml:space="preserve" bytes="11221">== I - Présentation ==

Avant tout sur Debian, il y a deux types de cartes nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe, que vous n'avez jamais rien compilé, ou que l'installation est nouvelle. Si ce n'est pas le cas assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur, recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libres, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :

  ##lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free

Bon ça c'est pour les gens 'stable', si vous êtes moins conservateur, vous êtes surement en SID, la version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépots, pour vérifier que votre sources.list vous permet d'y accéder tapez :

   $ apt-cache policy nvidia-kernel-source

Qui devrait vous donner quelque chose comme ça :

   nvidia-kernel-source:
     Installé : 180.29-1
     Candidat : 180.29-1
    Table de version :
    *** 180.29-1 0
           970 http://ftp.fr.debian.org sid/non-free Packages
           100 /var/lib/dpkg/status
        173.14.09-5 0
           500 http://ftp.fr.debian.org lenny/non-free Packages
           900 http://ftp.fr.debian.org squeeze/non-free Packages

Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un source.list permettant de se sortir de n'importe quelle dépendance, pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]

N'oubliez pas de mettre à jour la liste de vos paquets :

   # apt-get update

'''ATTENTION''' Si votre carte est basé sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique, je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.

== III - Détection de votre carte graphique ==

La partie la plus délicate, quel est mon pilote de carte graphique ?

   $ lspci

mon résultat, sur mon super portable Siemens :

   ...
   03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
   ...

dans les [] vous avez le type de carte, allez sur cette page [http://www.nvidia.fr/object/legacy_drivers_fr.html]
si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknow device, vous devrez mettre à jour vos identifiants :

   # update-pciids

et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot; veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite, nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique :

Si vous êtes avec gnome :
   
   # /etc/init.d/gdm stop

Si vous êtes avec KDE :

   # /etc/init.d/kdm stop

Si vous n'avez ni gnome, ni KDE, je suppose que vous savez très bien comment faire  :wink: 

Puis :

   # nvidia-installer --uninstall
   # modprobe -r nvidia

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

   # find / -name &quot;*nvidia*&quot; -delete

== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, dans le cas d'une carte legacy, remplacez les références à nvidia, par  les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy
Remarque : Les bons informaticiens, sont en générales des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! alors ils ont crus bons, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peut comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littérallement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;, mais comprenez bien que l'abrévation a la même signification.

   $ su 
   # apt-get install module-assistant
   # m-a prepare
   # m-a clean nvidia-kernel

Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :

   # apt-get install -t unstable nvidia-kernel-source[/code]

La suite est la même :

   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf

   # nano /etc/X11/xorg.conf

Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)

   Section &quot;Device&quot;
       Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
       Driver         &quot;nv&quot;
   EndSection

Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
   Driver         &quot;nv&quot;
Par :
   Driver         &quot;nvidia&quot;
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :
Pour GNOME :

   # /etc/init.d/gdm restart

Pour KDE :
   # /etc/init.d/kdm restart
Ou si vous êtes sur de rien :

   # reboot

== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manips à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources, ça évite pas mal de problèmes, mais si on voit :

   Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,

lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.

== ANNEXE 1 ==
 Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :

   $ su
   # rm -rf /usr/src/modules/nvidia-kernel/
   # cd /usr/src
   # tar xjvf nvidia-kernel.tar.bz2
   # cd modules/nvidia-kernel/debian
   # cp control.template control
   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

Retournez à la partie V

[[Utilisateur:Debianhadic|Debianhadic]]

== ANNEXE 2 (refaire des paquets .deb)==
NVIDIA a fait une mise à jour des drivers il y a 5 minutes. Vous êtes raisonnable (vous avez attendu 5 minutes) mais tout de même, vous voulez ces drivers même si cela peut ne pas marcher (si, ça n'est pas infaillible). Vous savez donc que ça peut tout casser mais tant pis, vous les voulez quand même et qui plus est sous forme de paquets (caprice ?). Bon, c'est faisable à partir des .run. La démarche est la suivante:

&lt;br /&gt;

Il vous faut installer les scripts de développement (paquet devscripts) et procéder comme suit:

&lt;br /&gt;

* Charger les sources des paquets nvidia, il faut bien évidemment une entrée deb-src dans le fichier sources.list&lt;br /&gt;Sous root: 

 # apt-get build-dep nvidia-glx

&lt;br /&gt;et sous votre login&lt;br /&gt;

 $ apt-get source nvidia-glx

&lt;br /&gt;&lt;br /&gt;Un répartoire nvidia-graphics-drivers-??? est crée (ici c'est nvidia-graphics-drivers-173.14.09)
* Charger les .run correspondants. Pour amd64 il vous faut le .run i386 et amd64, pour le i386, seul le .run 386 est nécessaire. Dans notre exemple, ce sont les fichiers&lt;br /&gt;&lt;br /&gt;

 NVIDIA-Linux-x86-190.53-pkg1.run
et
 NVIDIA-Linux-x86_64-190.53-pkg2.run

&lt;br /&gt;Mettez ces fichiers dans le répertoire nvidia-graphics-drivers-173.14.09 et donnez leur les droits à l'éxécution (chmod +x)
* Allez dans ce répertoire et mettez la version à jour:&lt;br /&gt;&lt;br /&gt;

 $ dch -v 190.53

&lt;br /&gt;&lt;br /&gt;Le fichier changelog est ouvert en édition, tapez vos motivations et fermez le fichier. Le répertoire a changé de nom, faites un

 cd ../nvidia-graphics-drivers-190.53

* Il faut tout d'abord changer toutes les références de 173.14.09 en 190.53 et les appels aux fichiers .run
** Editer le fichier debian/upstream_info (avec emacs bien sûr) et modifier en conséquence les valeurs RELEASE et NEXTVER (en 190.53 et 190.54)
** Dans ce même fichier changer les extensions pkg0 des fichiers NVIDIA-???.run et des répertoires correspondants, dans notre exemple, cela revient à remplacer le pkg0 en pkg1. Attention, il y a plusieurs références, faites une recherche sur pkg dans ce fichier.
** Soyez courageux, virez tous les patches: vous avez décidé d'installer le système de NVIDIA, les patches peuvent être inadaptés:&lt;br /&gt;&lt;br /&gt;

 $ rm -R patches*

&lt;br /&gt;&lt;br /&gt;(Si à ce stade vous avez effacé votre disque dur parce que vous n'étiez pas dans le bon niveau et que vous travaillé en root, '''positivez''': vous venez d'apprendre pourquoi on ne travaille '''jamais''' en root).
* Effacez les vieux .run inutiles&lt;br /&gt;&lt;br /&gt;

 $ cd ..
 $ rm NVIDIA-Linux-x86-173.14.09-pkg0.run NVIDIA-Linux-x86_64-173.14.09-pkg2.run

&lt;br /&gt;&lt;br /&gt;
* Lachez vous enfin en lançant la construction des paquets:&lt;br /&gt;&lt;br /&gt;

 $ fakeroot dpkg-buildpackage -us -uc

&lt;br /&gt;&lt;br /&gt;
* Regardez dans le répertoire au dessus vous avez
** Les paquets:&lt;br /&gt;
 nvidia-glx-ia32_190.53_amd64.deb
 nvidia-glx-dev_190.53_amd64.deb
 nvidia-glx_190.53_amd64.deb
 nvidia-kernel-source_190.53_amd64.deb
** Les sources:
 nvidia-graphics-drivers_190.53_amd64.changes
 nvidia-graphics-drivers_190.53.dsc
 nvidia-graphics-drivers_190.53.tar.gz

Les premiers sont les librairies et drivers xorg (les glx) ainsi que les sources pour faire le module nvidia avec module assistant, les seconds sont les sources de vos paquets. En cas de problème, vous pouvez les rectifier.

[[Utilisateur:fran.b|François Boisson]]
[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>ro6mhsch0ydwnz12c0viaqpy14v09bc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>168</id>
      <parentid>167</parentid>
      <timestamp>2010-01-23T13:07:37Z</timestamp>
      <contributor>
        <username>Debianhadic</username>
        <id>11</id>
      </contributor>
      <comment>/* ANNEXE 1 */</comment>
      <text xml:space="preserve" bytes="11220">== I - Présentation ==

Avant tout sur Debian, il y a deux types de cartes nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe, que vous n'avez jamais rien compilé, ou que l'installation est nouvelle. Si ce n'est pas le cas assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur, recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libres, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :

  ##lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free

Bon ça c'est pour les gens 'stable', si vous êtes moins conservateur, vous êtes surement en SID, la version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépots, pour vérifier que votre sources.list vous permet d'y accéder tapez :

   $ apt-cache policy nvidia-kernel-source

Qui devrait vous donner quelque chose comme ça :

   nvidia-kernel-source:
     Installé : 180.29-1
     Candidat : 180.29-1
    Table de version :
    *** 180.29-1 0
           970 http://ftp.fr.debian.org sid/non-free Packages
           100 /var/lib/dpkg/status
        173.14.09-5 0
           500 http://ftp.fr.debian.org lenny/non-free Packages
           900 http://ftp.fr.debian.org squeeze/non-free Packages

Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un source.list permettant de se sortir de n'importe quelle dépendance, pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]

N'oubliez pas de mettre à jour la liste de vos paquets :

   # apt-get update

'''ATTENTION''' Si votre carte est basé sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique, je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.

== III - Détection de votre carte graphique ==

La partie la plus délicate, quel est mon pilote de carte graphique ?

   $ lspci

mon résultat, sur mon super portable Siemens :

   ...
   03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
   ...

dans les [] vous avez le type de carte, allez sur cette page [http://www.nvidia.fr/object/legacy_drivers_fr.html]
si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknow device, vous devrez mettre à jour vos identifiants :

   # update-pciids

et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot; veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite, nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique :

Si vous êtes avec gnome :
   
   # /etc/init.d/gdm stop

Si vous êtes avec KDE :

   # /etc/init.d/kdm stop

Si vous n'avez ni gnome, ni KDE, je suppose que vous savez très bien comment faire  :wink: 

Puis :

   # nvidia-installer --uninstall
   # modprobe -r nvidia

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

   # find / -name &quot;*nvidia*&quot; -delete

== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, dans le cas d'une carte legacy, remplacez les références à nvidia, par  les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy
Remarque : Les bons informaticiens, sont en générales des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! alors ils ont crus bons, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peut comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littérallement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;, mais comprenez bien que l'abrévation a la même signification.

   $ su 
   # apt-get install module-assistant
   # m-a prepare
   # m-a clean nvidia-kernel

Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :

   # apt-get install -t unstable nvidia-kernel-source[/code]

La suite est la même :

   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf

   # nano /etc/X11/xorg.conf

Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)

   Section &quot;Device&quot;
       Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
       Driver         &quot;nv&quot;
   EndSection

Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
   Driver         &quot;nv&quot;
Par :
   Driver         &quot;nvidia&quot;
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :
Pour GNOME :

   # /etc/init.d/gdm restart

Pour KDE :
   # /etc/init.d/kdm restart
Ou si vous êtes sur de rien :

   # reboot

== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manips à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources, ça évite pas mal de problèmes, mais si on voit :

   Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,

lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.

== ANNEXE 1 ==
Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :

   $ su
   # rm -rf /usr/src/modules/nvidia-kernel/
   # cd /usr/src
   # tar xjvf nvidia-kernel.tar.bz2
   # cd modules/nvidia-kernel/debian
   # cp control.template control
   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

Retournez à la partie V

[[Utilisateur:Debianhadic|Debianhadic]]

== ANNEXE 2 (refaire des paquets .deb)==
NVIDIA a fait une mise à jour des drivers il y a 5 minutes. Vous êtes raisonnable (vous avez attendu 5 minutes) mais tout de même, vous voulez ces drivers même si cela peut ne pas marcher (si, ça n'est pas infaillible). Vous savez donc que ça peut tout casser mais tant pis, vous les voulez quand même et qui plus est sous forme de paquets (caprice ?). Bon, c'est faisable à partir des .run. La démarche est la suivante:

&lt;br /&gt;

Il vous faut installer les scripts de développement (paquet devscripts) et procéder comme suit:

&lt;br /&gt;

* Charger les sources des paquets nvidia, il faut bien évidemment une entrée deb-src dans le fichier sources.list&lt;br /&gt;Sous root: 

 # apt-get build-dep nvidia-glx

&lt;br /&gt;et sous votre login&lt;br /&gt;

 $ apt-get source nvidia-glx

&lt;br /&gt;&lt;br /&gt;Un répartoire nvidia-graphics-drivers-??? est crée (ici c'est nvidia-graphics-drivers-173.14.09)
* Charger les .run correspondants. Pour amd64 il vous faut le .run i386 et amd64, pour le i386, seul le .run 386 est nécessaire. Dans notre exemple, ce sont les fichiers&lt;br /&gt;&lt;br /&gt;

 NVIDIA-Linux-x86-190.53-pkg1.run
et
 NVIDIA-Linux-x86_64-190.53-pkg2.run

&lt;br /&gt;Mettez ces fichiers dans le répertoire nvidia-graphics-drivers-173.14.09 et donnez leur les droits à l'éxécution (chmod +x)
* Allez dans ce répertoire et mettez la version à jour:&lt;br /&gt;&lt;br /&gt;

 $ dch -v 190.53

&lt;br /&gt;&lt;br /&gt;Le fichier changelog est ouvert en édition, tapez vos motivations et fermez le fichier. Le répertoire a changé de nom, faites un

 cd ../nvidia-graphics-drivers-190.53

* Il faut tout d'abord changer toutes les références de 173.14.09 en 190.53 et les appels aux fichiers .run
** Editer le fichier debian/upstream_info (avec emacs bien sûr) et modifier en conséquence les valeurs RELEASE et NEXTVER (en 190.53 et 190.54)
** Dans ce même fichier changer les extensions pkg0 des fichiers NVIDIA-???.run et des répertoires correspondants, dans notre exemple, cela revient à remplacer le pkg0 en pkg1. Attention, il y a plusieurs références, faites une recherche sur pkg dans ce fichier.
** Soyez courageux, virez tous les patches: vous avez décidé d'installer le système de NVIDIA, les patches peuvent être inadaptés:&lt;br /&gt;&lt;br /&gt;

 $ rm -R patches*

&lt;br /&gt;&lt;br /&gt;(Si à ce stade vous avez effacé votre disque dur parce que vous n'étiez pas dans le bon niveau et que vous travaillé en root, '''positivez''': vous venez d'apprendre pourquoi on ne travaille '''jamais''' en root).
* Effacez les vieux .run inutiles&lt;br /&gt;&lt;br /&gt;

 $ cd ..
 $ rm NVIDIA-Linux-x86-173.14.09-pkg0.run NVIDIA-Linux-x86_64-173.14.09-pkg2.run

&lt;br /&gt;&lt;br /&gt;
* Lachez vous enfin en lançant la construction des paquets:&lt;br /&gt;&lt;br /&gt;

 $ fakeroot dpkg-buildpackage -us -uc

&lt;br /&gt;&lt;br /&gt;
* Regardez dans le répertoire au dessus vous avez
** Les paquets:&lt;br /&gt;
 nvidia-glx-ia32_190.53_amd64.deb
 nvidia-glx-dev_190.53_amd64.deb
 nvidia-glx_190.53_amd64.deb
 nvidia-kernel-source_190.53_amd64.deb
** Les sources:
 nvidia-graphics-drivers_190.53_amd64.changes
 nvidia-graphics-drivers_190.53.dsc
 nvidia-graphics-drivers_190.53.tar.gz

Les premiers sont les librairies et drivers xorg (les glx) ainsi que les sources pour faire le module nvidia avec module assistant, les seconds sont les sources de vos paquets. En cas de problème, vous pouvez les rectifier.

[[Utilisateur:fran.b|François Boisson]]
[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>rdgwv4yfh9s6wya3cz5c2ys831rvobp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>169</id>
      <parentid>168</parentid>
      <timestamp>2010-01-23T13:17:09Z</timestamp>
      <contributor>
        <username>Wetaskiwin</username>
        <id>10</id>
      </contributor>
      <minor/>
      <comment>/* I - Présentation */</comment>
      <text xml:space="preserve" bytes="11220">== I - Présentation ==

Avant tout sur Debian, il y a deux types de cartes nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(Chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe, que vous n'avez jamais rien compilé, ou que l'installation est nouvelle. Si ce n'est pas le cas assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur, recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libres, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :

  ##lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free

Bon ça c'est pour les gens 'stable', si vous êtes moins conservateur, vous êtes surement en SID, la version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépots, pour vérifier que votre sources.list vous permet d'y accéder tapez :

   $ apt-cache policy nvidia-kernel-source

Qui devrait vous donner quelque chose comme ça :

   nvidia-kernel-source:
     Installé : 180.29-1
     Candidat : 180.29-1
    Table de version :
    *** 180.29-1 0
           970 http://ftp.fr.debian.org sid/non-free Packages
           100 /var/lib/dpkg/status
        173.14.09-5 0
           500 http://ftp.fr.debian.org lenny/non-free Packages
           900 http://ftp.fr.debian.org squeeze/non-free Packages

Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un source.list permettant de se sortir de n'importe quelle dépendance, pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]

N'oubliez pas de mettre à jour la liste de vos paquets :

   # apt-get update

'''ATTENTION''' Si votre carte est basé sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique, je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.

== III - Détection de votre carte graphique ==

La partie la plus délicate, quel est mon pilote de carte graphique ?

   $ lspci

mon résultat, sur mon super portable Siemens :

   ...
   03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
   ...

dans les [] vous avez le type de carte, allez sur cette page [http://www.nvidia.fr/object/legacy_drivers_fr.html]
si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknow device, vous devrez mettre à jour vos identifiants :

   # update-pciids

et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot; veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite, nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique :

Si vous êtes avec gnome :
   
   # /etc/init.d/gdm stop

Si vous êtes avec KDE :

   # /etc/init.d/kdm stop

Si vous n'avez ni gnome, ni KDE, je suppose que vous savez très bien comment faire  :wink: 

Puis :

   # nvidia-installer --uninstall
   # modprobe -r nvidia

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

   # find / -name &quot;*nvidia*&quot; -delete

== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, dans le cas d'une carte legacy, remplacez les références à nvidia, par  les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy
Remarque : Les bons informaticiens, sont en générales des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! alors ils ont crus bons, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peut comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littérallement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;, mais comprenez bien que l'abrévation a la même signification.

   $ su 
   # apt-get install module-assistant
   # m-a prepare
   # m-a clean nvidia-kernel

Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :

   # apt-get install -t unstable nvidia-kernel-source[/code]

La suite est la même :

   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf

   # nano /etc/X11/xorg.conf

Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)

   Section &quot;Device&quot;
       Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
       Driver         &quot;nv&quot;
   EndSection

Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
   Driver         &quot;nv&quot;
Par :
   Driver         &quot;nvidia&quot;
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :
Pour GNOME :

   # /etc/init.d/gdm restart

Pour KDE :
   # /etc/init.d/kdm restart
Ou si vous êtes sur de rien :

   # reboot

== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manips à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources, ça évite pas mal de problèmes, mais si on voit :

   Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,

lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.

== ANNEXE 1 ==
Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :

   $ su
   # rm -rf /usr/src/modules/nvidia-kernel/
   # cd /usr/src
   # tar xjvf nvidia-kernel.tar.bz2
   # cd modules/nvidia-kernel/debian
   # cp control.template control
   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

Retournez à la partie V

[[Utilisateur:Debianhadic|Debianhadic]]

== ANNEXE 2 (refaire des paquets .deb)==
NVIDIA a fait une mise à jour des drivers il y a 5 minutes. Vous êtes raisonnable (vous avez attendu 5 minutes) mais tout de même, vous voulez ces drivers même si cela peut ne pas marcher (si, ça n'est pas infaillible). Vous savez donc que ça peut tout casser mais tant pis, vous les voulez quand même et qui plus est sous forme de paquets (caprice ?). Bon, c'est faisable à partir des .run. La démarche est la suivante:

&lt;br /&gt;

Il vous faut installer les scripts de développement (paquet devscripts) et procéder comme suit:

&lt;br /&gt;

* Charger les sources des paquets nvidia, il faut bien évidemment une entrée deb-src dans le fichier sources.list&lt;br /&gt;Sous root: 

 # apt-get build-dep nvidia-glx

&lt;br /&gt;et sous votre login&lt;br /&gt;

 $ apt-get source nvidia-glx

&lt;br /&gt;&lt;br /&gt;Un répartoire nvidia-graphics-drivers-??? est crée (ici c'est nvidia-graphics-drivers-173.14.09)
* Charger les .run correspondants. Pour amd64 il vous faut le .run i386 et amd64, pour le i386, seul le .run 386 est nécessaire. Dans notre exemple, ce sont les fichiers&lt;br /&gt;&lt;br /&gt;

 NVIDIA-Linux-x86-190.53-pkg1.run
et
 NVIDIA-Linux-x86_64-190.53-pkg2.run

&lt;br /&gt;Mettez ces fichiers dans le répertoire nvidia-graphics-drivers-173.14.09 et donnez leur les droits à l'éxécution (chmod +x)
* Allez dans ce répertoire et mettez la version à jour:&lt;br /&gt;&lt;br /&gt;

 $ dch -v 190.53

&lt;br /&gt;&lt;br /&gt;Le fichier changelog est ouvert en édition, tapez vos motivations et fermez le fichier. Le répertoire a changé de nom, faites un

 cd ../nvidia-graphics-drivers-190.53

* Il faut tout d'abord changer toutes les références de 173.14.09 en 190.53 et les appels aux fichiers .run
** Editer le fichier debian/upstream_info (avec emacs bien sûr) et modifier en conséquence les valeurs RELEASE et NEXTVER (en 190.53 et 190.54)
** Dans ce même fichier changer les extensions pkg0 des fichiers NVIDIA-???.run et des répertoires correspondants, dans notre exemple, cela revient à remplacer le pkg0 en pkg1. Attention, il y a plusieurs références, faites une recherche sur pkg dans ce fichier.
** Soyez courageux, virez tous les patches: vous avez décidé d'installer le système de NVIDIA, les patches peuvent être inadaptés:&lt;br /&gt;&lt;br /&gt;

 $ rm -R patches*

&lt;br /&gt;&lt;br /&gt;(Si à ce stade vous avez effacé votre disque dur parce que vous n'étiez pas dans le bon niveau et que vous travaillé en root, '''positivez''': vous venez d'apprendre pourquoi on ne travaille '''jamais''' en root).
* Effacez les vieux .run inutiles&lt;br /&gt;&lt;br /&gt;

 $ cd ..
 $ rm NVIDIA-Linux-x86-173.14.09-pkg0.run NVIDIA-Linux-x86_64-173.14.09-pkg2.run

&lt;br /&gt;&lt;br /&gt;
* Lachez vous enfin en lançant la construction des paquets:&lt;br /&gt;&lt;br /&gt;

 $ fakeroot dpkg-buildpackage -us -uc

&lt;br /&gt;&lt;br /&gt;
* Regardez dans le répertoire au dessus vous avez
** Les paquets:&lt;br /&gt;
 nvidia-glx-ia32_190.53_amd64.deb
 nvidia-glx-dev_190.53_amd64.deb
 nvidia-glx_190.53_amd64.deb
 nvidia-kernel-source_190.53_amd64.deb
** Les sources:
 nvidia-graphics-drivers_190.53_amd64.changes
 nvidia-graphics-drivers_190.53.dsc
 nvidia-graphics-drivers_190.53.tar.gz

Les premiers sont les librairies et drivers xorg (les glx) ainsi que les sources pour faire le module nvidia avec module assistant, les seconds sont les sources de vos paquets. En cas de problème, vous pouvez les rectifier.

[[Utilisateur:fran.b|François Boisson]]
[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>m9us8v3glp0q5nz4khhe3q5ykkxv7q5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>170</id>
      <parentid>169</parentid>
      <timestamp>2010-01-23T13:18:31Z</timestamp>
      <contributor>
        <username>Wetaskiwin</username>
        <id>10</id>
      </contributor>
      <minor/>
      <comment>/* I - Présentation */</comment>
      <text xml:space="preserve" bytes="11220">== I - Présentation ==

Avant tout sur Debian, il y a deux types de cartes nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(Chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe, que vous n'avez jamais rien compilé ou que l'installation est nouvelle. Si ce n'est pas le cas, assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur. Recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libres, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :

  ##lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free

Bon ça c'est pour les gens 'stable', si vous êtes moins conservateur, vous êtes surement en SID, la version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépots, pour vérifier que votre sources.list vous permet d'y accéder tapez :

   $ apt-cache policy nvidia-kernel-source

Qui devrait vous donner quelque chose comme ça :

   nvidia-kernel-source:
     Installé : 180.29-1
     Candidat : 180.29-1
    Table de version :
    *** 180.29-1 0
           970 http://ftp.fr.debian.org sid/non-free Packages
           100 /var/lib/dpkg/status
        173.14.09-5 0
           500 http://ftp.fr.debian.org lenny/non-free Packages
           900 http://ftp.fr.debian.org squeeze/non-free Packages

Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un source.list permettant de se sortir de n'importe quelle dépendance, pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]

N'oubliez pas de mettre à jour la liste de vos paquets :

   # apt-get update

'''ATTENTION''' Si votre carte est basé sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique, je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.

== III - Détection de votre carte graphique ==

La partie la plus délicate, quel est mon pilote de carte graphique ?

   $ lspci

mon résultat, sur mon super portable Siemens :

   ...
   03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
   ...

dans les [] vous avez le type de carte, allez sur cette page [http://www.nvidia.fr/object/legacy_drivers_fr.html]
si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknow device, vous devrez mettre à jour vos identifiants :

   # update-pciids

et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot; veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite, nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique :

Si vous êtes avec gnome :
   
   # /etc/init.d/gdm stop

Si vous êtes avec KDE :

   # /etc/init.d/kdm stop

Si vous n'avez ni gnome, ni KDE, je suppose que vous savez très bien comment faire  :wink: 

Puis :

   # nvidia-installer --uninstall
   # modprobe -r nvidia

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

   # find / -name &quot;*nvidia*&quot; -delete

== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, dans le cas d'une carte legacy, remplacez les références à nvidia, par  les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy
Remarque : Les bons informaticiens, sont en générales des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! alors ils ont crus bons, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peut comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littérallement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;, mais comprenez bien que l'abrévation a la même signification.

   $ su 
   # apt-get install module-assistant
   # m-a prepare
   # m-a clean nvidia-kernel

Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :

   # apt-get install -t unstable nvidia-kernel-source[/code]

La suite est la même :

   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf

   # nano /etc/X11/xorg.conf

Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)

   Section &quot;Device&quot;
       Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
       Driver         &quot;nv&quot;
   EndSection

Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
   Driver         &quot;nv&quot;
Par :
   Driver         &quot;nvidia&quot;
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :
Pour GNOME :

   # /etc/init.d/gdm restart

Pour KDE :
   # /etc/init.d/kdm restart
Ou si vous êtes sur de rien :

   # reboot

== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manips à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources, ça évite pas mal de problèmes, mais si on voit :

   Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,

lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.

== ANNEXE 1 ==
Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :

   $ su
   # rm -rf /usr/src/modules/nvidia-kernel/
   # cd /usr/src
   # tar xjvf nvidia-kernel.tar.bz2
   # cd modules/nvidia-kernel/debian
   # cp control.template control
   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

Retournez à la partie V

[[Utilisateur:Debianhadic|Debianhadic]]

== ANNEXE 2 (refaire des paquets .deb)==
NVIDIA a fait une mise à jour des drivers il y a 5 minutes. Vous êtes raisonnable (vous avez attendu 5 minutes) mais tout de même, vous voulez ces drivers même si cela peut ne pas marcher (si, ça n'est pas infaillible). Vous savez donc que ça peut tout casser mais tant pis, vous les voulez quand même et qui plus est sous forme de paquets (caprice ?). Bon, c'est faisable à partir des .run. La démarche est la suivante:

&lt;br /&gt;

Il vous faut installer les scripts de développement (paquet devscripts) et procéder comme suit:

&lt;br /&gt;

* Charger les sources des paquets nvidia, il faut bien évidemment une entrée deb-src dans le fichier sources.list&lt;br /&gt;Sous root: 

 # apt-get build-dep nvidia-glx

&lt;br /&gt;et sous votre login&lt;br /&gt;

 $ apt-get source nvidia-glx

&lt;br /&gt;&lt;br /&gt;Un répartoire nvidia-graphics-drivers-??? est crée (ici c'est nvidia-graphics-drivers-173.14.09)
* Charger les .run correspondants. Pour amd64 il vous faut le .run i386 et amd64, pour le i386, seul le .run 386 est nécessaire. Dans notre exemple, ce sont les fichiers&lt;br /&gt;&lt;br /&gt;

 NVIDIA-Linux-x86-190.53-pkg1.run
et
 NVIDIA-Linux-x86_64-190.53-pkg2.run

&lt;br /&gt;Mettez ces fichiers dans le répertoire nvidia-graphics-drivers-173.14.09 et donnez leur les droits à l'éxécution (chmod +x)
* Allez dans ce répertoire et mettez la version à jour:&lt;br /&gt;&lt;br /&gt;

 $ dch -v 190.53

&lt;br /&gt;&lt;br /&gt;Le fichier changelog est ouvert en édition, tapez vos motivations et fermez le fichier. Le répertoire a changé de nom, faites un

 cd ../nvidia-graphics-drivers-190.53

* Il faut tout d'abord changer toutes les références de 173.14.09 en 190.53 et les appels aux fichiers .run
** Editer le fichier debian/upstream_info (avec emacs bien sûr) et modifier en conséquence les valeurs RELEASE et NEXTVER (en 190.53 et 190.54)
** Dans ce même fichier changer les extensions pkg0 des fichiers NVIDIA-???.run et des répertoires correspondants, dans notre exemple, cela revient à remplacer le pkg0 en pkg1. Attention, il y a plusieurs références, faites une recherche sur pkg dans ce fichier.
** Soyez courageux, virez tous les patches: vous avez décidé d'installer le système de NVIDIA, les patches peuvent être inadaptés:&lt;br /&gt;&lt;br /&gt;

 $ rm -R patches*

&lt;br /&gt;&lt;br /&gt;(Si à ce stade vous avez effacé votre disque dur parce que vous n'étiez pas dans le bon niveau et que vous travaillé en root, '''positivez''': vous venez d'apprendre pourquoi on ne travaille '''jamais''' en root).
* Effacez les vieux .run inutiles&lt;br /&gt;&lt;br /&gt;

 $ cd ..
 $ rm NVIDIA-Linux-x86-173.14.09-pkg0.run NVIDIA-Linux-x86_64-173.14.09-pkg2.run

&lt;br /&gt;&lt;br /&gt;
* Lachez vous enfin en lançant la construction des paquets:&lt;br /&gt;&lt;br /&gt;

 $ fakeroot dpkg-buildpackage -us -uc

&lt;br /&gt;&lt;br /&gt;
* Regardez dans le répertoire au dessus vous avez
** Les paquets:&lt;br /&gt;
 nvidia-glx-ia32_190.53_amd64.deb
 nvidia-glx-dev_190.53_amd64.deb
 nvidia-glx_190.53_amd64.deb
 nvidia-kernel-source_190.53_amd64.deb
** Les sources:
 nvidia-graphics-drivers_190.53_amd64.changes
 nvidia-graphics-drivers_190.53.dsc
 nvidia-graphics-drivers_190.53.tar.gz

Les premiers sont les librairies et drivers xorg (les glx) ainsi que les sources pour faire le module nvidia avec module assistant, les seconds sont les sources de vos paquets. En cas de problème, vous pouvez les rectifier.

[[Utilisateur:fran.b|François Boisson]]
[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>buhx23evkz0tdcwty8zf0cl0ufn4jdi</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>175</id>
      <parentid>170</parentid>
      <timestamp>2010-01-23T14:04:40Z</timestamp>
      <contributor>
        <username>Clem</username>
        <id>6</id>
      </contributor>
      <comment>/* ANNEXE 2 (refaire des paquets .deb) */</comment>
      <text xml:space="preserve" bytes="11220">== I - Présentation ==

Avant tout sur Debian, il y a deux types de cartes nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(Chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe, que vous n'avez jamais rien compilé ou que l'installation est nouvelle. Si ce n'est pas le cas, assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur. Recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libres, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :

  ##lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free

Bon ça c'est pour les gens 'stable', si vous êtes moins conservateur, vous êtes surement en SID, la version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépots, pour vérifier que votre sources.list vous permet d'y accéder tapez :

   $ apt-cache policy nvidia-kernel-source

Qui devrait vous donner quelque chose comme ça :

   nvidia-kernel-source:
     Installé : 180.29-1
     Candidat : 180.29-1
    Table de version :
    *** 180.29-1 0
           970 http://ftp.fr.debian.org sid/non-free Packages
           100 /var/lib/dpkg/status
        173.14.09-5 0
           500 http://ftp.fr.debian.org lenny/non-free Packages
           900 http://ftp.fr.debian.org squeeze/non-free Packages

Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un source.list permettant de se sortir de n'importe quelle dépendance, pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]

N'oubliez pas de mettre à jour la liste de vos paquets :

   # apt-get update

'''ATTENTION''' Si votre carte est basé sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique, je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.

== III - Détection de votre carte graphique ==

La partie la plus délicate, quel est mon pilote de carte graphique ?

   $ lspci

mon résultat, sur mon super portable Siemens :

   ...
   03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
   ...

dans les [] vous avez le type de carte, allez sur cette page [http://www.nvidia.fr/object/legacy_drivers_fr.html]
si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknow device, vous devrez mettre à jour vos identifiants :

   # update-pciids

et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot; veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite, nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique :

Si vous êtes avec gnome :
   
   # /etc/init.d/gdm stop

Si vous êtes avec KDE :

   # /etc/init.d/kdm stop

Si vous n'avez ni gnome, ni KDE, je suppose que vous savez très bien comment faire  :wink: 

Puis :

   # nvidia-installer --uninstall
   # modprobe -r nvidia

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

   # find / -name &quot;*nvidia*&quot; -delete

== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, dans le cas d'une carte legacy, remplacez les références à nvidia, par  les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy
Remarque : Les bons informaticiens, sont en générales des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! alors ils ont crus bons, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peut comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littérallement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;, mais comprenez bien que l'abrévation a la même signification.

   $ su 
   # apt-get install module-assistant
   # m-a prepare
   # m-a clean nvidia-kernel

Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :

   # apt-get install -t unstable nvidia-kernel-source[/code]

La suite est la même :

   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf

   # nano /etc/X11/xorg.conf

Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)

   Section &quot;Device&quot;
       Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
       Driver         &quot;nv&quot;
   EndSection

Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
   Driver         &quot;nv&quot;
Par :
   Driver         &quot;nvidia&quot;
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :
Pour GNOME :

   # /etc/init.d/gdm restart

Pour KDE :
   # /etc/init.d/kdm restart
Ou si vous êtes sur de rien :

   # reboot

== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manips à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources, ça évite pas mal de problèmes, mais si on voit :

   Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,

lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.

== ANNEXE 1 ==
Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :

   $ su
   # rm -rf /usr/src/modules/nvidia-kernel/
   # cd /usr/src
   # tar xjvf nvidia-kernel.tar.bz2
   # cd modules/nvidia-kernel/debian
   # cp control.template control
   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

Retournez à la partie V

[[Utilisateur:Debianhadic|Debianhadic]]

== ANNEXE 2 (refaire des paquets .deb)==
NVIDIA a fait une mise à jour des drivers il y a 5 minutes. Vous êtes raisonnable (vous avez attendu 5 minutes) mais tout de même, vous voulez ces drivers même si cela peut ne pas marcher (si, ça n'est pas infaillible). Vous savez donc que ça peut tout casser mais tant pis, vous les voulez quand même et qui plus est sous forme de paquets (caprice ?). Bon, c'est faisable à partir des .run. La démarche est la suivante:

&lt;br /&gt;

Il vous faut installer les scripts de développement (paquet devscripts) et procéder comme suit:

&lt;br /&gt;

* Charger les sources des paquets nvidia, il faut bien évidemment une entrée deb-src dans le fichier sources.list&lt;br /&gt;Sous root: 

 # apt-get build-dep nvidia-glx

&lt;br /&gt;et sous votre login&lt;br /&gt;

 $ apt-get source nvidia-glx

&lt;br /&gt;&lt;br /&gt;Un répertoire nvidia-graphics-drivers-??? est crée (ici c'est nvidia-graphics-drivers-173.14.09)
* Charger les .run correspondants. Pour amd64 il vous faut le .run i386 et amd64, pour le i386, seul le .run 386 est nécessaire. Dans notre exemple, ce sont les fichiers&lt;br /&gt;&lt;br /&gt;

 NVIDIA-Linux-x86-190.53-pkg1.run
et
 NVIDIA-Linux-x86_64-190.53-pkg2.run

&lt;br /&gt;Mettez ces fichiers dans le répertoire nvidia-graphics-drivers-173.14.09 et donnez leur les droits à l'éxécution (chmod +x)
* Allez dans ce répertoire et mettez la version à jour:&lt;br /&gt;&lt;br /&gt;

 $ dch -v 190.53

&lt;br /&gt;&lt;br /&gt;Le fichier changelog est ouvert en édition, tapez vos motivations et fermez le fichier. Le répertoire a changé de nom, faites un

 cd ../nvidia-graphics-drivers-190.53

* Il faut tout d'abord changer toutes les références de 173.14.09 en 190.53 et les appels aux fichiers .run
** Editer le fichier debian/upstream_info (avec emacs bien sûr) et modifier en conséquence les valeurs RELEASE et NEXTVER (en 190.53 et 190.54)
** Dans ce même fichier changer les extensions pkg0 des fichiers NVIDIA-???.run et des répertoires correspondants, dans notre exemple, cela revient à remplacer le pkg0 en pkg1. Attention, il y a plusieurs références, faites une recherche sur pkg dans ce fichier.
** Soyez courageux, virez tous les patches: vous avez décidé d'installer le système de NVIDIA, les patches peuvent être inadaptés:&lt;br /&gt;&lt;br /&gt;

 $ rm -R patches*

&lt;br /&gt;&lt;br /&gt;(Si à ce stade vous avez effacé votre disque dur parce que vous n'étiez pas dans le bon niveau et que vous travaillé en root, '''positivez''': vous venez d'apprendre pourquoi on ne travaille '''jamais''' en root).
* Effacez les vieux .run inutiles&lt;br /&gt;&lt;br /&gt;

 $ cd ..
 $ rm NVIDIA-Linux-x86-173.14.09-pkg0.run NVIDIA-Linux-x86_64-173.14.09-pkg2.run

&lt;br /&gt;&lt;br /&gt;
* Lachez vous enfin en lançant la construction des paquets:&lt;br /&gt;&lt;br /&gt;

 $ fakeroot dpkg-buildpackage -us -uc

&lt;br /&gt;&lt;br /&gt;
* Regardez dans le répertoire au dessus vous avez
** Les paquets:&lt;br /&gt;
 nvidia-glx-ia32_190.53_amd64.deb
 nvidia-glx-dev_190.53_amd64.deb
 nvidia-glx_190.53_amd64.deb
 nvidia-kernel-source_190.53_amd64.deb
** Les sources:
 nvidia-graphics-drivers_190.53_amd64.changes
 nvidia-graphics-drivers_190.53.dsc
 nvidia-graphics-drivers_190.53.tar.gz

Les premiers sont les librairies et drivers xorg (les glx) ainsi que les sources pour faire le module nvidia avec module assistant, les seconds sont les sources de vos paquets. En cas de problème, vous pouvez les rectifier.

[[Utilisateur:fran.b|François Boisson]]
[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>4hpw0iv72rv1nfln3v9pgiw8ho7vbut</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>178</id>
      <parentid>175</parentid>
      <timestamp>2010-01-23T14:54:47Z</timestamp>
      <contributor>
        <username>Fran.b</username>
        <id>13</id>
      </contributor>
      <minor/>
      <comment>/* ANNEXE 2 (refaire des paquets .deb) */</comment>
      <text xml:space="preserve" bytes="11283">== I - Présentation ==

Avant tout sur Debian, il y a deux types de cartes nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(Chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe, que vous n'avez jamais rien compilé ou que l'installation est nouvelle. Si ce n'est pas le cas, assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur. Recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libres, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :

  ##lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free

Bon ça c'est pour les gens 'stable', si vous êtes moins conservateur, vous êtes surement en SID, la version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépots, pour vérifier que votre sources.list vous permet d'y accéder tapez :

   $ apt-cache policy nvidia-kernel-source

Qui devrait vous donner quelque chose comme ça :

   nvidia-kernel-source:
     Installé : 180.29-1
     Candidat : 180.29-1
    Table de version :
    *** 180.29-1 0
           970 http://ftp.fr.debian.org sid/non-free Packages
           100 /var/lib/dpkg/status
        173.14.09-5 0
           500 http://ftp.fr.debian.org lenny/non-free Packages
           900 http://ftp.fr.debian.org squeeze/non-free Packages

Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un source.list permettant de se sortir de n'importe quelle dépendance, pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]

N'oubliez pas de mettre à jour la liste de vos paquets :

   # apt-get update

'''ATTENTION''' Si votre carte est basé sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique, je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.

== III - Détection de votre carte graphique ==

La partie la plus délicate, quel est mon pilote de carte graphique ?

   $ lspci

mon résultat, sur mon super portable Siemens :

   ...
   03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
   ...

dans les [] vous avez le type de carte, allez sur cette page [http://www.nvidia.fr/object/legacy_drivers_fr.html]
si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknow device, vous devrez mettre à jour vos identifiants :

   # update-pciids

et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot; veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite, nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique :

Si vous êtes avec gnome :
   
   # /etc/init.d/gdm stop

Si vous êtes avec KDE :

   # /etc/init.d/kdm stop

Si vous n'avez ni gnome, ni KDE, je suppose que vous savez très bien comment faire  :wink: 

Puis :

   # nvidia-installer --uninstall
   # modprobe -r nvidia

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

   # find / -name &quot;*nvidia*&quot; -delete

== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, dans le cas d'une carte legacy, remplacez les références à nvidia, par  les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy
Remarque : Les bons informaticiens, sont en générales des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! alors ils ont crus bons, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peut comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littérallement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;, mais comprenez bien que l'abrévation a la même signification.

   $ su 
   # apt-get install module-assistant
   # m-a prepare
   # m-a clean nvidia-kernel

Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :

   # apt-get install -t unstable nvidia-kernel-source[/code]

La suite est la même :

   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf

   # nano /etc/X11/xorg.conf

Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)

   Section &quot;Device&quot;
       Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
       Driver         &quot;nv&quot;
   EndSection

Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
   Driver         &quot;nv&quot;
Par :
   Driver         &quot;nvidia&quot;
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :
Pour GNOME :

   # /etc/init.d/gdm restart

Pour KDE :
   # /etc/init.d/kdm restart
Ou si vous êtes sur de rien :

   # reboot

== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manips à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources, ça évite pas mal de problèmes, mais si on voit :

   Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,

lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.

== ANNEXE 1 ==
Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :

   $ su
   # rm -rf /usr/src/modules/nvidia-kernel/
   # cd /usr/src
   # tar xjvf nvidia-kernel.tar.bz2
   # cd modules/nvidia-kernel/debian
   # cp control.template control
   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

Retournez à la partie V

[[Utilisateur:Debianhadic|Debianhadic]]

== ANNEXE 2 (refaire des paquets .deb)==
NVIDIA a fait une mise à jour des drivers il y a 5 minutes. Vous êtes raisonnable (vous avez attendu 5 minutes) mais tout de même, vous voulez ces drivers même si cela peut ne pas marcher (si, ça n'est pas infaillible). Vous savez donc que ça peut tout casser mais tant pis, vous les voulez quand même et qui plus est sous forme de paquets (caprice ?). Bon, c'est faisable à partir des .run. La démarche est la suivante:

&lt;br /&gt;

Il vous faut installer les scripts de développement (paquet devscripts) et procéder comme suit:

&lt;br /&gt;

* Chargez les sources des paquets nvidia, il faut bien évidemment une entrée deb-src dans le fichier sources.list&lt;br /&gt;Sous root: 

 # apt-get build-dep nvidia-glx

&lt;br /&gt;et sous votre login&lt;br /&gt;

 $ apt-get source nvidia-glx

&lt;br /&gt;&lt;br /&gt;Un répertoire nvidia-graphics-drivers-??? est crée (ici c'est nvidia-graphics-drivers-173.14.09)
* Chargez les .run correspondants. Pour amd64 il vous faut le .run i386 et amd64, pour le i386, seul le .run 386 est nécessaire. Dans le doute, vous pouvez mettre les 2 si vous êtes inquiet. Dans notre exemple, ce sont les fichiers&lt;br /&gt;&lt;br /&gt;

 NVIDIA-Linux-x86-190.53-pkg1.run
et
 NVIDIA-Linux-x86_64-190.53-pkg2.run

&lt;br /&gt;Mettez ces fichiers dans le répertoire nvidia-graphics-drivers-173.14.09 et donnez leur les droits à l'éxécution (chmod +x)
* Allez dans ce répertoire et mettez la version à jour:&lt;br /&gt;&lt;br /&gt;

 $ dch -v 190.53

&lt;br /&gt;&lt;br /&gt;Le fichier changelog est ouvert en édition, tapez vos motivations et fermez le fichier. Le répertoire a changé de nom, faites un

 cd ../nvidia-graphics-drivers-190.53

* Il faut tout d'abord changer toutes les références de 173.14.09 en 190.53 et les appels aux fichiers .run
** Editer le fichier debian/upstream_info (avec emacs bien sûr) et modifier en conséquence les valeurs RELEASE et NEXTVER (en 190.53 et 190.54)
** Dans ce même fichier changez les extensions pkg0 des fichiers NVIDIA-???.run et des répertoires correspondants, dans notre exemple, cela revient à remplacer le pkg0 en pkg1. Attention, il y a plusieurs références, faites une recherche sur pkg dans ce fichier.
** Soyez courageux, virez tous les patches: vous avez décidé d'installer le système de NVIDIA, les patches peuvent être inadaptés:&lt;br /&gt;&lt;br /&gt;

 $ rm -R patches*

&lt;br /&gt;&lt;br /&gt;(Si à ce stade vous avez effacé votre disque dur parce que vous n'étiez pas dans le bon niveau et que vous travaillez en root, '''positivez''': vous venez d'apprendre pourquoi on ne travaille '''jamais''' en root).
* Effacez les vieux .run inutiles&lt;br /&gt;&lt;br /&gt;

 $ cd ..
 $ rm NVIDIA-Linux-x86-173.14.09-pkg0.run NVIDIA-Linux-x86_64-173.14.09-pkg2.run

&lt;br /&gt;&lt;br /&gt;
* Lachez vous enfin en lançant la construction des paquets:&lt;br /&gt;&lt;br /&gt;

 $ fakeroot dpkg-buildpackage -us -uc

&lt;br /&gt;&lt;br /&gt;
* Regardez dans le répertoire au dessus vous avez
** Les paquets:&lt;br /&gt;
 nvidia-glx-ia32_190.53_amd64.deb
 nvidia-glx-dev_190.53_amd64.deb
 nvidia-glx_190.53_amd64.deb
 nvidia-kernel-source_190.53_amd64.deb
** Les sources:
 nvidia-graphics-drivers_190.53_amd64.changes
 nvidia-graphics-drivers_190.53.dsc
 nvidia-graphics-drivers_190.53.tar.gz

Les premiers sont les librairies et drivers xorg (les glx) ainsi que les sources pour faire le module nvidia avec module assistant, les seconds sont les sources de vos paquets. En cas de problème, vous pouvez les rectifier.

[[Utilisateur:fran.b|François Boisson]]
[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>fx6yl7uiyoa61zydw9pi0mwdvzlnjy3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>208</id>
      <parentid>178</parentid>
      <timestamp>2010-01-23T20:36:49Z</timestamp>
      <contributor>
        <username>Wetaskiwin</username>
        <id>10</id>
      </contributor>
      <minor/>
      <comment>/* I - Présentation */</comment>
      <text xml:space="preserve" bytes="11282">== I - Présentation ==

Avant tout sur Debian, il y a deux types de cartes nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(Chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe que vous n'avez jamais rien compilé ou que l'installation est nouvelle. Si ce n'est pas le cas, assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur. Recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libres, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :

  ##lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free

Bon ça c'est pour les gens 'stable', si vous êtes moins conservateur, vous êtes surement en SID, la version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépots, pour vérifier que votre sources.list vous permet d'y accéder tapez :

   $ apt-cache policy nvidia-kernel-source

Qui devrait vous donner quelque chose comme ça :

   nvidia-kernel-source:
     Installé : 180.29-1
     Candidat : 180.29-1
    Table de version :
    *** 180.29-1 0
           970 http://ftp.fr.debian.org sid/non-free Packages
           100 /var/lib/dpkg/status
        173.14.09-5 0
           500 http://ftp.fr.debian.org lenny/non-free Packages
           900 http://ftp.fr.debian.org squeeze/non-free Packages

Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un source.list permettant de se sortir de n'importe quelle dépendance, pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]

N'oubliez pas de mettre à jour la liste de vos paquets :

   # apt-get update

'''ATTENTION''' Si votre carte est basé sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique, je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.

== III - Détection de votre carte graphique ==

La partie la plus délicate, quel est mon pilote de carte graphique ?

   $ lspci

mon résultat, sur mon super portable Siemens :

   ...
   03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
   ...

dans les [] vous avez le type de carte, allez sur cette page [http://www.nvidia.fr/object/legacy_drivers_fr.html]
si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknow device, vous devrez mettre à jour vos identifiants :

   # update-pciids

et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot; veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite, nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique :

Si vous êtes avec gnome :
   
   # /etc/init.d/gdm stop

Si vous êtes avec KDE :

   # /etc/init.d/kdm stop

Si vous n'avez ni gnome, ni KDE, je suppose que vous savez très bien comment faire  :wink: 

Puis :

   # nvidia-installer --uninstall
   # modprobe -r nvidia

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

   # find / -name &quot;*nvidia*&quot; -delete

== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, dans le cas d'une carte legacy, remplacez les références à nvidia, par  les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy
Remarque : Les bons informaticiens, sont en générales des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! alors ils ont crus bons, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peut comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littérallement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;, mais comprenez bien que l'abrévation a la même signification.

   $ su 
   # apt-get install module-assistant
   # m-a prepare
   # m-a clean nvidia-kernel

Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :

   # apt-get install -t unstable nvidia-kernel-source[/code]

La suite est la même :

   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf

   # nano /etc/X11/xorg.conf

Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)

   Section &quot;Device&quot;
       Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
       Driver         &quot;nv&quot;
   EndSection

Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
   Driver         &quot;nv&quot;
Par :
   Driver         &quot;nvidia&quot;
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :
Pour GNOME :

   # /etc/init.d/gdm restart

Pour KDE :
   # /etc/init.d/kdm restart
Ou si vous êtes sur de rien :

   # reboot

== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manips à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources, ça évite pas mal de problèmes, mais si on voit :

   Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,

lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.

== ANNEXE 1 ==
Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :

   $ su
   # rm -rf /usr/src/modules/nvidia-kernel/
   # cd /usr/src
   # tar xjvf nvidia-kernel.tar.bz2
   # cd modules/nvidia-kernel/debian
   # cp control.template control
   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

Retournez à la partie V

[[Utilisateur:Debianhadic|Debianhadic]]

== ANNEXE 2 (refaire des paquets .deb)==
NVIDIA a fait une mise à jour des drivers il y a 5 minutes. Vous êtes raisonnable (vous avez attendu 5 minutes) mais tout de même, vous voulez ces drivers même si cela peut ne pas marcher (si, ça n'est pas infaillible). Vous savez donc que ça peut tout casser mais tant pis, vous les voulez quand même et qui plus est sous forme de paquets (caprice ?). Bon, c'est faisable à partir des .run. La démarche est la suivante:

&lt;br /&gt;

Il vous faut installer les scripts de développement (paquet devscripts) et procéder comme suit:

&lt;br /&gt;

* Chargez les sources des paquets nvidia, il faut bien évidemment une entrée deb-src dans le fichier sources.list&lt;br /&gt;Sous root: 

 # apt-get build-dep nvidia-glx

&lt;br /&gt;et sous votre login&lt;br /&gt;

 $ apt-get source nvidia-glx

&lt;br /&gt;&lt;br /&gt;Un répertoire nvidia-graphics-drivers-??? est crée (ici c'est nvidia-graphics-drivers-173.14.09)
* Chargez les .run correspondants. Pour amd64 il vous faut le .run i386 et amd64, pour le i386, seul le .run 386 est nécessaire. Dans le doute, vous pouvez mettre les 2 si vous êtes inquiet. Dans notre exemple, ce sont les fichiers&lt;br /&gt;&lt;br /&gt;

 NVIDIA-Linux-x86-190.53-pkg1.run
et
 NVIDIA-Linux-x86_64-190.53-pkg2.run

&lt;br /&gt;Mettez ces fichiers dans le répertoire nvidia-graphics-drivers-173.14.09 et donnez leur les droits à l'éxécution (chmod +x)
* Allez dans ce répertoire et mettez la version à jour:&lt;br /&gt;&lt;br /&gt;

 $ dch -v 190.53

&lt;br /&gt;&lt;br /&gt;Le fichier changelog est ouvert en édition, tapez vos motivations et fermez le fichier. Le répertoire a changé de nom, faites un

 cd ../nvidia-graphics-drivers-190.53

* Il faut tout d'abord changer toutes les références de 173.14.09 en 190.53 et les appels aux fichiers .run
** Editer le fichier debian/upstream_info (avec emacs bien sûr) et modifier en conséquence les valeurs RELEASE et NEXTVER (en 190.53 et 190.54)
** Dans ce même fichier changez les extensions pkg0 des fichiers NVIDIA-???.run et des répertoires correspondants, dans notre exemple, cela revient à remplacer le pkg0 en pkg1. Attention, il y a plusieurs références, faites une recherche sur pkg dans ce fichier.
** Soyez courageux, virez tous les patches: vous avez décidé d'installer le système de NVIDIA, les patches peuvent être inadaptés:&lt;br /&gt;&lt;br /&gt;

 $ rm -R patches*

&lt;br /&gt;&lt;br /&gt;(Si à ce stade vous avez effacé votre disque dur parce que vous n'étiez pas dans le bon niveau et que vous travaillez en root, '''positivez''': vous venez d'apprendre pourquoi on ne travaille '''jamais''' en root).
* Effacez les vieux .run inutiles&lt;br /&gt;&lt;br /&gt;

 $ cd ..
 $ rm NVIDIA-Linux-x86-173.14.09-pkg0.run NVIDIA-Linux-x86_64-173.14.09-pkg2.run

&lt;br /&gt;&lt;br /&gt;
* Lachez vous enfin en lançant la construction des paquets:&lt;br /&gt;&lt;br /&gt;

 $ fakeroot dpkg-buildpackage -us -uc

&lt;br /&gt;&lt;br /&gt;
* Regardez dans le répertoire au dessus vous avez
** Les paquets:&lt;br /&gt;
 nvidia-glx-ia32_190.53_amd64.deb
 nvidia-glx-dev_190.53_amd64.deb
 nvidia-glx_190.53_amd64.deb
 nvidia-kernel-source_190.53_amd64.deb
** Les sources:
 nvidia-graphics-drivers_190.53_amd64.changes
 nvidia-graphics-drivers_190.53.dsc
 nvidia-graphics-drivers_190.53.tar.gz

Les premiers sont les librairies et drivers xorg (les glx) ainsi que les sources pour faire le module nvidia avec module assistant, les seconds sont les sources de vos paquets. En cas de problème, vous pouvez les rectifier.

[[Utilisateur:fran.b|François Boisson]]
[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>i7y5ywbqa037m35wp7b2qucx2vd9mp7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>209</id>
      <parentid>208</parentid>
      <timestamp>2010-01-23T20:40:56Z</timestamp>
      <contributor>
        <username>Wetaskiwin</username>
        <id>10</id>
      </contributor>
      <minor/>
      <comment>/* II - Modification des dépôts */</comment>
      <text xml:space="preserve" bytes="11283">== I - Présentation ==

Avant tout sur Debian, il y a deux types de cartes nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(Chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe que vous n'avez jamais rien compilé ou que l'installation est nouvelle. Si ce n'est pas le cas, assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur. Recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libre, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :

  ##lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free

Bon ça c'est pour les gens 'stable'. Si vous êtes moins conservateur, vous êtes surement en SID. La version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépots. Pour vérifier que votre sources.list vous permet d'y accéder tapez :

   $ apt-cache policy nvidia-kernel-source

Qui devrait vous donner quelque chose comme ça :

   nvidia-kernel-source:
     Installé : 180.29-1
     Candidat : 180.29-1
    Table de version :
    *** 180.29-1 0
           970 http://ftp.fr.debian.org sid/non-free Packages
           100 /var/lib/dpkg/status
        173.14.09-5 0
           500 http://ftp.fr.debian.org lenny/non-free Packages
           900 http://ftp.fr.debian.org squeeze/non-free Packages

Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un sources.list permettant de se sortir de n'importe quelle dépendance. Pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]

N'oubliez pas de mettre à jour la liste de vos paquets :

   # apt-get update

'''ATTENTION''' Si votre carte est basée sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique. Je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.

== III - Détection de votre carte graphique ==

La partie la plus délicate, quel est mon pilote de carte graphique ?

   $ lspci

mon résultat, sur mon super portable Siemens :

   ...
   03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
   ...

dans les [] vous avez le type de carte, allez sur cette page [http://www.nvidia.fr/object/legacy_drivers_fr.html]
si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknow device, vous devrez mettre à jour vos identifiants :

   # update-pciids

et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot; veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite, nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique :

Si vous êtes avec gnome :
   
   # /etc/init.d/gdm stop

Si vous êtes avec KDE :

   # /etc/init.d/kdm stop

Si vous n'avez ni gnome, ni KDE, je suppose que vous savez très bien comment faire  :wink: 

Puis :

   # nvidia-installer --uninstall
   # modprobe -r nvidia

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

   # find / -name &quot;*nvidia*&quot; -delete

== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, dans le cas d'une carte legacy, remplacez les références à nvidia, par  les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy
Remarque : Les bons informaticiens, sont en générales des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! alors ils ont crus bons, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peut comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littérallement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;, mais comprenez bien que l'abrévation a la même signification.

   $ su 
   # apt-get install module-assistant
   # m-a prepare
   # m-a clean nvidia-kernel

Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :

   # apt-get install -t unstable nvidia-kernel-source[/code]

La suite est la même :

   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf

   # nano /etc/X11/xorg.conf

Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)

   Section &quot;Device&quot;
       Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
       Driver         &quot;nv&quot;
   EndSection

Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
   Driver         &quot;nv&quot;
Par :
   Driver         &quot;nvidia&quot;
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :
Pour GNOME :

   # /etc/init.d/gdm restart

Pour KDE :
   # /etc/init.d/kdm restart
Ou si vous êtes sur de rien :

   # reboot

== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manips à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources, ça évite pas mal de problèmes, mais si on voit :

   Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,

lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.

== ANNEXE 1 ==
Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :

   $ su
   # rm -rf /usr/src/modules/nvidia-kernel/
   # cd /usr/src
   # tar xjvf nvidia-kernel.tar.bz2
   # cd modules/nvidia-kernel/debian
   # cp control.template control
   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

Retournez à la partie V

[[Utilisateur:Debianhadic|Debianhadic]]

== ANNEXE 2 (refaire des paquets .deb)==
NVIDIA a fait une mise à jour des drivers il y a 5 minutes. Vous êtes raisonnable (vous avez attendu 5 minutes) mais tout de même, vous voulez ces drivers même si cela peut ne pas marcher (si, ça n'est pas infaillible). Vous savez donc que ça peut tout casser mais tant pis, vous les voulez quand même et qui plus est sous forme de paquets (caprice ?). Bon, c'est faisable à partir des .run. La démarche est la suivante:

&lt;br /&gt;

Il vous faut installer les scripts de développement (paquet devscripts) et procéder comme suit:

&lt;br /&gt;

* Chargez les sources des paquets nvidia, il faut bien évidemment une entrée deb-src dans le fichier sources.list&lt;br /&gt;Sous root: 

 # apt-get build-dep nvidia-glx

&lt;br /&gt;et sous votre login&lt;br /&gt;

 $ apt-get source nvidia-glx

&lt;br /&gt;&lt;br /&gt;Un répertoire nvidia-graphics-drivers-??? est crée (ici c'est nvidia-graphics-drivers-173.14.09)
* Chargez les .run correspondants. Pour amd64 il vous faut le .run i386 et amd64, pour le i386, seul le .run 386 est nécessaire. Dans le doute, vous pouvez mettre les 2 si vous êtes inquiet. Dans notre exemple, ce sont les fichiers&lt;br /&gt;&lt;br /&gt;

 NVIDIA-Linux-x86-190.53-pkg1.run
et
 NVIDIA-Linux-x86_64-190.53-pkg2.run

&lt;br /&gt;Mettez ces fichiers dans le répertoire nvidia-graphics-drivers-173.14.09 et donnez leur les droits à l'éxécution (chmod +x)
* Allez dans ce répertoire et mettez la version à jour:&lt;br /&gt;&lt;br /&gt;

 $ dch -v 190.53

&lt;br /&gt;&lt;br /&gt;Le fichier changelog est ouvert en édition, tapez vos motivations et fermez le fichier. Le répertoire a changé de nom, faites un

 cd ../nvidia-graphics-drivers-190.53

* Il faut tout d'abord changer toutes les références de 173.14.09 en 190.53 et les appels aux fichiers .run
** Editer le fichier debian/upstream_info (avec emacs bien sûr) et modifier en conséquence les valeurs RELEASE et NEXTVER (en 190.53 et 190.54)
** Dans ce même fichier changez les extensions pkg0 des fichiers NVIDIA-???.run et des répertoires correspondants, dans notre exemple, cela revient à remplacer le pkg0 en pkg1. Attention, il y a plusieurs références, faites une recherche sur pkg dans ce fichier.
** Soyez courageux, virez tous les patches: vous avez décidé d'installer le système de NVIDIA, les patches peuvent être inadaptés:&lt;br /&gt;&lt;br /&gt;

 $ rm -R patches*

&lt;br /&gt;&lt;br /&gt;(Si à ce stade vous avez effacé votre disque dur parce que vous n'étiez pas dans le bon niveau et que vous travaillez en root, '''positivez''': vous venez d'apprendre pourquoi on ne travaille '''jamais''' en root).
* Effacez les vieux .run inutiles&lt;br /&gt;&lt;br /&gt;

 $ cd ..
 $ rm NVIDIA-Linux-x86-173.14.09-pkg0.run NVIDIA-Linux-x86_64-173.14.09-pkg2.run

&lt;br /&gt;&lt;br /&gt;
* Lachez vous enfin en lançant la construction des paquets:&lt;br /&gt;&lt;br /&gt;

 $ fakeroot dpkg-buildpackage -us -uc

&lt;br /&gt;&lt;br /&gt;
* Regardez dans le répertoire au dessus vous avez
** Les paquets:&lt;br /&gt;
 nvidia-glx-ia32_190.53_amd64.deb
 nvidia-glx-dev_190.53_amd64.deb
 nvidia-glx_190.53_amd64.deb
 nvidia-kernel-source_190.53_amd64.deb
** Les sources:
 nvidia-graphics-drivers_190.53_amd64.changes
 nvidia-graphics-drivers_190.53.dsc
 nvidia-graphics-drivers_190.53.tar.gz

Les premiers sont les librairies et drivers xorg (les glx) ainsi que les sources pour faire le module nvidia avec module assistant, les seconds sont les sources de vos paquets. En cas de problème, vous pouvez les rectifier.

[[Utilisateur:fran.b|François Boisson]]
[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>9zaf98g6rzhqngkqmdmzhky2uwctl54</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>210</id>
      <parentid>209</parentid>
      <timestamp>2010-01-23T20:45:28Z</timestamp>
      <contributor>
        <username>Wetaskiwin</username>
        <id>10</id>
      </contributor>
      <minor/>
      <comment>/* III - Détection de votre carte graphique */</comment>
      <text xml:space="preserve" bytes="11285">== I - Présentation ==

Avant tout sur Debian, il y a deux types de cartes nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(Chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe que vous n'avez jamais rien compilé ou que l'installation est nouvelle. Si ce n'est pas le cas, assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur. Recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libre, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :

  ##lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free

Bon ça c'est pour les gens 'stable'. Si vous êtes moins conservateur, vous êtes surement en SID. La version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépots. Pour vérifier que votre sources.list vous permet d'y accéder tapez :

   $ apt-cache policy nvidia-kernel-source

Qui devrait vous donner quelque chose comme ça :

   nvidia-kernel-source:
     Installé : 180.29-1
     Candidat : 180.29-1
    Table de version :
    *** 180.29-1 0
           970 http://ftp.fr.debian.org sid/non-free Packages
           100 /var/lib/dpkg/status
        173.14.09-5 0
           500 http://ftp.fr.debian.org lenny/non-free Packages
           900 http://ftp.fr.debian.org squeeze/non-free Packages

Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un sources.list permettant de se sortir de n'importe quelle dépendance. Pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]

N'oubliez pas de mettre à jour la liste de vos paquets :

   # apt-get update

'''ATTENTION''' Si votre carte est basée sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique. Je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.

== III - Détection de votre carte graphique ==

La partie la plus délicate : quel est mon pilote de carte graphique ?

   $ lspci

mon résultat, sur mon super portable Siemens :

   ...
   03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
   ...

dans les [] vous avez le type de carte. Allez sur cette page [http://www.nvidia.fr/object/legacy_drivers_fr.html]
Si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknow device, vous devrez mettre à jour vos identifiants :

   # update-pciids

et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot;, veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite. Nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique :

Si vous êtes avec gnome :
   
   # /etc/init.d/gdm stop

Si vous êtes avec KDE :

   # /etc/init.d/kdm stop

Si vous n'avez ni gnome, ni KDE, je suppose que vous savez très bien comment faire  :wink: 

Puis :

   # nvidia-installer --uninstall
   # modprobe -r nvidia

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

   # find / -name &quot;*nvidia*&quot; -delete

== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, dans le cas d'une carte legacy, remplacez les références à nvidia, par  les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy
Remarque : Les bons informaticiens, sont en générales des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! alors ils ont crus bons, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peut comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littérallement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;, mais comprenez bien que l'abrévation a la même signification.

   $ su 
   # apt-get install module-assistant
   # m-a prepare
   # m-a clean nvidia-kernel

Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :

   # apt-get install -t unstable nvidia-kernel-source[/code]

La suite est la même :

   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf

   # nano /etc/X11/xorg.conf

Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)

   Section &quot;Device&quot;
       Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
       Driver         &quot;nv&quot;
   EndSection

Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
   Driver         &quot;nv&quot;
Par :
   Driver         &quot;nvidia&quot;
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :
Pour GNOME :

   # /etc/init.d/gdm restart

Pour KDE :
   # /etc/init.d/kdm restart
Ou si vous êtes sur de rien :

   # reboot

== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manips à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources, ça évite pas mal de problèmes, mais si on voit :

   Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,

lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.

== ANNEXE 1 ==
Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :

   $ su
   # rm -rf /usr/src/modules/nvidia-kernel/
   # cd /usr/src
   # tar xjvf nvidia-kernel.tar.bz2
   # cd modules/nvidia-kernel/debian
   # cp control.template control
   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

Retournez à la partie V

[[Utilisateur:Debianhadic|Debianhadic]]

== ANNEXE 2 (refaire des paquets .deb)==
NVIDIA a fait une mise à jour des drivers il y a 5 minutes. Vous êtes raisonnable (vous avez attendu 5 minutes) mais tout de même, vous voulez ces drivers même si cela peut ne pas marcher (si, ça n'est pas infaillible). Vous savez donc que ça peut tout casser mais tant pis, vous les voulez quand même et qui plus est sous forme de paquets (caprice ?). Bon, c'est faisable à partir des .run. La démarche est la suivante:

&lt;br /&gt;

Il vous faut installer les scripts de développement (paquet devscripts) et procéder comme suit:

&lt;br /&gt;

* Chargez les sources des paquets nvidia, il faut bien évidemment une entrée deb-src dans le fichier sources.list&lt;br /&gt;Sous root: 

 # apt-get build-dep nvidia-glx

&lt;br /&gt;et sous votre login&lt;br /&gt;

 $ apt-get source nvidia-glx

&lt;br /&gt;&lt;br /&gt;Un répertoire nvidia-graphics-drivers-??? est crée (ici c'est nvidia-graphics-drivers-173.14.09)
* Chargez les .run correspondants. Pour amd64 il vous faut le .run i386 et amd64, pour le i386, seul le .run 386 est nécessaire. Dans le doute, vous pouvez mettre les 2 si vous êtes inquiet. Dans notre exemple, ce sont les fichiers&lt;br /&gt;&lt;br /&gt;

 NVIDIA-Linux-x86-190.53-pkg1.run
et
 NVIDIA-Linux-x86_64-190.53-pkg2.run

&lt;br /&gt;Mettez ces fichiers dans le répertoire nvidia-graphics-drivers-173.14.09 et donnez leur les droits à l'éxécution (chmod +x)
* Allez dans ce répertoire et mettez la version à jour:&lt;br /&gt;&lt;br /&gt;

 $ dch -v 190.53

&lt;br /&gt;&lt;br /&gt;Le fichier changelog est ouvert en édition, tapez vos motivations et fermez le fichier. Le répertoire a changé de nom, faites un

 cd ../nvidia-graphics-drivers-190.53

* Il faut tout d'abord changer toutes les références de 173.14.09 en 190.53 et les appels aux fichiers .run
** Editer le fichier debian/upstream_info (avec emacs bien sûr) et modifier en conséquence les valeurs RELEASE et NEXTVER (en 190.53 et 190.54)
** Dans ce même fichier changez les extensions pkg0 des fichiers NVIDIA-???.run et des répertoires correspondants, dans notre exemple, cela revient à remplacer le pkg0 en pkg1. Attention, il y a plusieurs références, faites une recherche sur pkg dans ce fichier.
** Soyez courageux, virez tous les patches: vous avez décidé d'installer le système de NVIDIA, les patches peuvent être inadaptés:&lt;br /&gt;&lt;br /&gt;

 $ rm -R patches*

&lt;br /&gt;&lt;br /&gt;(Si à ce stade vous avez effacé votre disque dur parce que vous n'étiez pas dans le bon niveau et que vous travaillez en root, '''positivez''': vous venez d'apprendre pourquoi on ne travaille '''jamais''' en root).
* Effacez les vieux .run inutiles&lt;br /&gt;&lt;br /&gt;

 $ cd ..
 $ rm NVIDIA-Linux-x86-173.14.09-pkg0.run NVIDIA-Linux-x86_64-173.14.09-pkg2.run

&lt;br /&gt;&lt;br /&gt;
* Lachez vous enfin en lançant la construction des paquets:&lt;br /&gt;&lt;br /&gt;

 $ fakeroot dpkg-buildpackage -us -uc

&lt;br /&gt;&lt;br /&gt;
* Regardez dans le répertoire au dessus vous avez
** Les paquets:&lt;br /&gt;
 nvidia-glx-ia32_190.53_amd64.deb
 nvidia-glx-dev_190.53_amd64.deb
 nvidia-glx_190.53_amd64.deb
 nvidia-kernel-source_190.53_amd64.deb
** Les sources:
 nvidia-graphics-drivers_190.53_amd64.changes
 nvidia-graphics-drivers_190.53.dsc
 nvidia-graphics-drivers_190.53.tar.gz

Les premiers sont les librairies et drivers xorg (les glx) ainsi que les sources pour faire le module nvidia avec module assistant, les seconds sont les sources de vos paquets. En cas de problème, vous pouvez les rectifier.

[[Utilisateur:fran.b|François Boisson]]
[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>m5nv6mzsh19i1w66xtiz7xqwn62jyt8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>211</id>
      <parentid>210</parentid>
      <timestamp>2010-01-23T20:49:34Z</timestamp>
      <contributor>
        <username>Wetaskiwin</username>
        <id>10</id>
      </contributor>
      <minor/>
      <comment>/* IV - Compilation du module - Patch du noyau */</comment>
      <text xml:space="preserve" bytes="11269">== I - Présentation ==

Avant tout sur Debian, il y a deux types de cartes nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(Chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe que vous n'avez jamais rien compilé ou que l'installation est nouvelle. Si ce n'est pas le cas, assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur. Recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libre, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :

  ##lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free

Bon ça c'est pour les gens 'stable'. Si vous êtes moins conservateur, vous êtes surement en SID. La version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépots. Pour vérifier que votre sources.list vous permet d'y accéder tapez :

   $ apt-cache policy nvidia-kernel-source

Qui devrait vous donner quelque chose comme ça :

   nvidia-kernel-source:
     Installé : 180.29-1
     Candidat : 180.29-1
    Table de version :
    *** 180.29-1 0
           970 http://ftp.fr.debian.org sid/non-free Packages
           100 /var/lib/dpkg/status
        173.14.09-5 0
           500 http://ftp.fr.debian.org lenny/non-free Packages
           900 http://ftp.fr.debian.org squeeze/non-free Packages

Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un sources.list permettant de se sortir de n'importe quelle dépendance. Pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]

N'oubliez pas de mettre à jour la liste de vos paquets :

   # apt-get update

'''ATTENTION''' Si votre carte est basée sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique. Je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.

== III - Détection de votre carte graphique ==

La partie la plus délicate : quel est mon pilote de carte graphique ?

   $ lspci

mon résultat, sur mon super portable Siemens :

   ...
   03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
   ...

dans les [] vous avez le type de carte. Allez sur cette page [http://www.nvidia.fr/object/legacy_drivers_fr.html]
Si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknow device, vous devrez mettre à jour vos identifiants :

   # update-pciids

et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot;, veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite. Nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique :

Si vous êtes avec gnome :
   
   # /etc/init.d/gdm stop

Si vous êtes avec KDE :

   # /etc/init.d/kdm stop

Si vous n'avez ni gnome, ni KDE, je suppose que vous savez très bien comment faire  :wink: 

Puis :

   # nvidia-installer --uninstall
   # modprobe -r nvidia

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

   # find / -name &quot;*nvidia*&quot; -delete

== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, pour une carte legacy, remplacez les références à nvidia par les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy

Remarque : Les bons informaticiens, sont en général des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! Alors ils ont cru bon, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peu comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littéralement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;. Mais comprenez bien que l'abrévation a la même signification.

   $ su 
   # apt-get install module-assistant
   # m-a prepare
   # m-a clean nvidia-kernel

Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :

   # apt-get install -t unstable nvidia-kernel-source[/code]

La suite est la même :

   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf

   # nano /etc/X11/xorg.conf

Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)

   Section &quot;Device&quot;
       Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
       Driver         &quot;nv&quot;
   EndSection

Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
   Driver         &quot;nv&quot;
Par :
   Driver         &quot;nvidia&quot;
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :
Pour GNOME :

   # /etc/init.d/gdm restart

Pour KDE :
   # /etc/init.d/kdm restart
Ou si vous êtes sur de rien :

   # reboot

== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manips à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources, ça évite pas mal de problèmes, mais si on voit :

   Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,

lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.

== ANNEXE 1 ==
Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :

   $ su
   # rm -rf /usr/src/modules/nvidia-kernel/
   # cd /usr/src
   # tar xjvf nvidia-kernel.tar.bz2
   # cd modules/nvidia-kernel/debian
   # cp control.template control
   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

Retournez à la partie V

[[Utilisateur:Debianhadic|Debianhadic]]

== ANNEXE 2 (refaire des paquets .deb)==
NVIDIA a fait une mise à jour des drivers il y a 5 minutes. Vous êtes raisonnable (vous avez attendu 5 minutes) mais tout de même, vous voulez ces drivers même si cela peut ne pas marcher (si, ça n'est pas infaillible). Vous savez donc que ça peut tout casser mais tant pis, vous les voulez quand même et qui plus est sous forme de paquets (caprice ?). Bon, c'est faisable à partir des .run. La démarche est la suivante:

&lt;br /&gt;

Il vous faut installer les scripts de développement (paquet devscripts) et procéder comme suit:

&lt;br /&gt;

* Chargez les sources des paquets nvidia, il faut bien évidemment une entrée deb-src dans le fichier sources.list&lt;br /&gt;Sous root: 

 # apt-get build-dep nvidia-glx

&lt;br /&gt;et sous votre login&lt;br /&gt;

 $ apt-get source nvidia-glx

&lt;br /&gt;&lt;br /&gt;Un répertoire nvidia-graphics-drivers-??? est crée (ici c'est nvidia-graphics-drivers-173.14.09)
* Chargez les .run correspondants. Pour amd64 il vous faut le .run i386 et amd64, pour le i386, seul le .run 386 est nécessaire. Dans le doute, vous pouvez mettre les 2 si vous êtes inquiet. Dans notre exemple, ce sont les fichiers&lt;br /&gt;&lt;br /&gt;

 NVIDIA-Linux-x86-190.53-pkg1.run
et
 NVIDIA-Linux-x86_64-190.53-pkg2.run

&lt;br /&gt;Mettez ces fichiers dans le répertoire nvidia-graphics-drivers-173.14.09 et donnez leur les droits à l'éxécution (chmod +x)
* Allez dans ce répertoire et mettez la version à jour:&lt;br /&gt;&lt;br /&gt;

 $ dch -v 190.53

&lt;br /&gt;&lt;br /&gt;Le fichier changelog est ouvert en édition, tapez vos motivations et fermez le fichier. Le répertoire a changé de nom, faites un

 cd ../nvidia-graphics-drivers-190.53

* Il faut tout d'abord changer toutes les références de 173.14.09 en 190.53 et les appels aux fichiers .run
** Editer le fichier debian/upstream_info (avec emacs bien sûr) et modifier en conséquence les valeurs RELEASE et NEXTVER (en 190.53 et 190.54)
** Dans ce même fichier changez les extensions pkg0 des fichiers NVIDIA-???.run et des répertoires correspondants, dans notre exemple, cela revient à remplacer le pkg0 en pkg1. Attention, il y a plusieurs références, faites une recherche sur pkg dans ce fichier.
** Soyez courageux, virez tous les patches: vous avez décidé d'installer le système de NVIDIA, les patches peuvent être inadaptés:&lt;br /&gt;&lt;br /&gt;

 $ rm -R patches*

&lt;br /&gt;&lt;br /&gt;(Si à ce stade vous avez effacé votre disque dur parce que vous n'étiez pas dans le bon niveau et que vous travaillez en root, '''positivez''': vous venez d'apprendre pourquoi on ne travaille '''jamais''' en root).
* Effacez les vieux .run inutiles&lt;br /&gt;&lt;br /&gt;

 $ cd ..
 $ rm NVIDIA-Linux-x86-173.14.09-pkg0.run NVIDIA-Linux-x86_64-173.14.09-pkg2.run

&lt;br /&gt;&lt;br /&gt;
* Lachez vous enfin en lançant la construction des paquets:&lt;br /&gt;&lt;br /&gt;

 $ fakeroot dpkg-buildpackage -us -uc

&lt;br /&gt;&lt;br /&gt;
* Regardez dans le répertoire au dessus vous avez
** Les paquets:&lt;br /&gt;
 nvidia-glx-ia32_190.53_amd64.deb
 nvidia-glx-dev_190.53_amd64.deb
 nvidia-glx_190.53_amd64.deb
 nvidia-kernel-source_190.53_amd64.deb
** Les sources:
 nvidia-graphics-drivers_190.53_amd64.changes
 nvidia-graphics-drivers_190.53.dsc
 nvidia-graphics-drivers_190.53.tar.gz

Les premiers sont les librairies et drivers xorg (les glx) ainsi que les sources pour faire le module nvidia avec module assistant, les seconds sont les sources de vos paquets. En cas de problème, vous pouvez les rectifier.

[[Utilisateur:fran.b|François Boisson]]
[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>1b4gvw0w802hxk3mtjea2kd8kpzn92l</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>212</id>
      <parentid>211</parentid>
      <timestamp>2010-01-23T20:51:15Z</timestamp>
      <contributor>
        <username>Wetaskiwin</username>
        <id>10</id>
      </contributor>
      <minor/>
      <comment>/* V - Paramétrage de xorg.conf */</comment>
      <text xml:space="preserve" bytes="11271">== I - Présentation ==

Avant tout sur Debian, il y a deux types de cartes nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(Chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe que vous n'avez jamais rien compilé ou que l'installation est nouvelle. Si ce n'est pas le cas, assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur. Recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libre, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :

  ##lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free

Bon ça c'est pour les gens 'stable'. Si vous êtes moins conservateur, vous êtes surement en SID. La version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépots. Pour vérifier que votre sources.list vous permet d'y accéder tapez :

   $ apt-cache policy nvidia-kernel-source

Qui devrait vous donner quelque chose comme ça :

   nvidia-kernel-source:
     Installé : 180.29-1
     Candidat : 180.29-1
    Table de version :
    *** 180.29-1 0
           970 http://ftp.fr.debian.org sid/non-free Packages
           100 /var/lib/dpkg/status
        173.14.09-5 0
           500 http://ftp.fr.debian.org lenny/non-free Packages
           900 http://ftp.fr.debian.org squeeze/non-free Packages

Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un sources.list permettant de se sortir de n'importe quelle dépendance. Pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]

N'oubliez pas de mettre à jour la liste de vos paquets :

   # apt-get update

'''ATTENTION''' Si votre carte est basée sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique. Je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.

== III - Détection de votre carte graphique ==

La partie la plus délicate : quel est mon pilote de carte graphique ?

   $ lspci

mon résultat, sur mon super portable Siemens :

   ...
   03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
   ...

dans les [] vous avez le type de carte. Allez sur cette page [http://www.nvidia.fr/object/legacy_drivers_fr.html]
Si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknow device, vous devrez mettre à jour vos identifiants :

   # update-pciids

et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot;, veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite. Nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique :

Si vous êtes avec gnome :
   
   # /etc/init.d/gdm stop

Si vous êtes avec KDE :

   # /etc/init.d/kdm stop

Si vous n'avez ni gnome, ni KDE, je suppose que vous savez très bien comment faire  :wink: 

Puis :

   # nvidia-installer --uninstall
   # modprobe -r nvidia

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

   # find / -name &quot;*nvidia*&quot; -delete

== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, pour une carte legacy, remplacez les références à nvidia par les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy

Remarque : Les bons informaticiens, sont en général des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! Alors ils ont cru bon, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peu comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littéralement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;. Mais comprenez bien que l'abrévation a la même signification.

   $ su 
   # apt-get install module-assistant
   # m-a prepare
   # m-a clean nvidia-kernel

Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :

   # apt-get install -t unstable nvidia-kernel-source[/code]

La suite est la même :

   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf

   # nano /etc/X11/xorg.conf

Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf, vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)

   Section &quot;Device&quot;
       Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
       Driver         &quot;nv&quot;
   EndSection

Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
   Driver         &quot;nv&quot;
Par :
   Driver         &quot;nvidia&quot;
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :

Pour GNOME :

   # /etc/init.d/gdm restart

Pour KDE :
   # /etc/init.d/kdm restart
Ou si vous êtes sur de rien :

   # reboot

== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manips à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources, ça évite pas mal de problèmes, mais si on voit :

   Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,

lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.

== ANNEXE 1 ==
Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :

   $ su
   # rm -rf /usr/src/modules/nvidia-kernel/
   # cd /usr/src
   # tar xjvf nvidia-kernel.tar.bz2
   # cd modules/nvidia-kernel/debian
   # cp control.template control
   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

Retournez à la partie V

[[Utilisateur:Debianhadic|Debianhadic]]

== ANNEXE 2 (refaire des paquets .deb)==
NVIDIA a fait une mise à jour des drivers il y a 5 minutes. Vous êtes raisonnable (vous avez attendu 5 minutes) mais tout de même, vous voulez ces drivers même si cela peut ne pas marcher (si, ça n'est pas infaillible). Vous savez donc que ça peut tout casser mais tant pis, vous les voulez quand même et qui plus est sous forme de paquets (caprice ?). Bon, c'est faisable à partir des .run. La démarche est la suivante:

&lt;br /&gt;

Il vous faut installer les scripts de développement (paquet devscripts) et procéder comme suit:

&lt;br /&gt;

* Chargez les sources des paquets nvidia, il faut bien évidemment une entrée deb-src dans le fichier sources.list&lt;br /&gt;Sous root: 

 # apt-get build-dep nvidia-glx

&lt;br /&gt;et sous votre login&lt;br /&gt;

 $ apt-get source nvidia-glx

&lt;br /&gt;&lt;br /&gt;Un répertoire nvidia-graphics-drivers-??? est crée (ici c'est nvidia-graphics-drivers-173.14.09)
* Chargez les .run correspondants. Pour amd64 il vous faut le .run i386 et amd64, pour le i386, seul le .run 386 est nécessaire. Dans le doute, vous pouvez mettre les 2 si vous êtes inquiet. Dans notre exemple, ce sont les fichiers&lt;br /&gt;&lt;br /&gt;

 NVIDIA-Linux-x86-190.53-pkg1.run
et
 NVIDIA-Linux-x86_64-190.53-pkg2.run

&lt;br /&gt;Mettez ces fichiers dans le répertoire nvidia-graphics-drivers-173.14.09 et donnez leur les droits à l'éxécution (chmod +x)
* Allez dans ce répertoire et mettez la version à jour:&lt;br /&gt;&lt;br /&gt;

 $ dch -v 190.53

&lt;br /&gt;&lt;br /&gt;Le fichier changelog est ouvert en édition, tapez vos motivations et fermez le fichier. Le répertoire a changé de nom, faites un

 cd ../nvidia-graphics-drivers-190.53

* Il faut tout d'abord changer toutes les références de 173.14.09 en 190.53 et les appels aux fichiers .run
** Editer le fichier debian/upstream_info (avec emacs bien sûr) et modifier en conséquence les valeurs RELEASE et NEXTVER (en 190.53 et 190.54)
** Dans ce même fichier changez les extensions pkg0 des fichiers NVIDIA-???.run et des répertoires correspondants, dans notre exemple, cela revient à remplacer le pkg0 en pkg1. Attention, il y a plusieurs références, faites une recherche sur pkg dans ce fichier.
** Soyez courageux, virez tous les patches: vous avez décidé d'installer le système de NVIDIA, les patches peuvent être inadaptés:&lt;br /&gt;&lt;br /&gt;

 $ rm -R patches*

&lt;br /&gt;&lt;br /&gt;(Si à ce stade vous avez effacé votre disque dur parce que vous n'étiez pas dans le bon niveau et que vous travaillez en root, '''positivez''': vous venez d'apprendre pourquoi on ne travaille '''jamais''' en root).
* Effacez les vieux .run inutiles&lt;br /&gt;&lt;br /&gt;

 $ cd ..
 $ rm NVIDIA-Linux-x86-173.14.09-pkg0.run NVIDIA-Linux-x86_64-173.14.09-pkg2.run

&lt;br /&gt;&lt;br /&gt;
* Lachez vous enfin en lançant la construction des paquets:&lt;br /&gt;&lt;br /&gt;

 $ fakeroot dpkg-buildpackage -us -uc

&lt;br /&gt;&lt;br /&gt;
* Regardez dans le répertoire au dessus vous avez
** Les paquets:&lt;br /&gt;
 nvidia-glx-ia32_190.53_amd64.deb
 nvidia-glx-dev_190.53_amd64.deb
 nvidia-glx_190.53_amd64.deb
 nvidia-kernel-source_190.53_amd64.deb
** Les sources:
 nvidia-graphics-drivers_190.53_amd64.changes
 nvidia-graphics-drivers_190.53.dsc
 nvidia-graphics-drivers_190.53.tar.gz

Les premiers sont les librairies et drivers xorg (les glx) ainsi que les sources pour faire le module nvidia avec module assistant, les seconds sont les sources de vos paquets. En cas de problème, vous pouvez les rectifier.

[[Utilisateur:fran.b|François Boisson]]
[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>9kts1wc7s26906m5ab3tvx13a5jvhcv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>213</id>
      <parentid>212</parentid>
      <timestamp>2010-01-23T20:53:53Z</timestamp>
      <contributor>
        <username>Wetaskiwin</username>
        <id>10</id>
      </contributor>
      <minor/>
      <comment>/* VI - Conclusion */</comment>
      <text xml:space="preserve" bytes="11278">== I - Présentation ==

Avant tout sur Debian, il y a deux types de cartes nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(Chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe que vous n'avez jamais rien compilé ou que l'installation est nouvelle. Si ce n'est pas le cas, assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur. Recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libre, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :

  ##lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free

Bon ça c'est pour les gens 'stable'. Si vous êtes moins conservateur, vous êtes surement en SID. La version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépots. Pour vérifier que votre sources.list vous permet d'y accéder tapez :

   $ apt-cache policy nvidia-kernel-source

Qui devrait vous donner quelque chose comme ça :

   nvidia-kernel-source:
     Installé : 180.29-1
     Candidat : 180.29-1
    Table de version :
    *** 180.29-1 0
           970 http://ftp.fr.debian.org sid/non-free Packages
           100 /var/lib/dpkg/status
        173.14.09-5 0
           500 http://ftp.fr.debian.org lenny/non-free Packages
           900 http://ftp.fr.debian.org squeeze/non-free Packages

Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un sources.list permettant de se sortir de n'importe quelle dépendance. Pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]

N'oubliez pas de mettre à jour la liste de vos paquets :

   # apt-get update

'''ATTENTION''' Si votre carte est basée sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique. Je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.

== III - Détection de votre carte graphique ==

La partie la plus délicate : quel est mon pilote de carte graphique ?

   $ lspci

mon résultat, sur mon super portable Siemens :

   ...
   03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
   ...

dans les [] vous avez le type de carte. Allez sur cette page [http://www.nvidia.fr/object/legacy_drivers_fr.html]
Si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknow device, vous devrez mettre à jour vos identifiants :

   # update-pciids

et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot;, veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite. Nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique :

Si vous êtes avec gnome :
   
   # /etc/init.d/gdm stop

Si vous êtes avec KDE :

   # /etc/init.d/kdm stop

Si vous n'avez ni gnome, ni KDE, je suppose que vous savez très bien comment faire  :wink: 

Puis :

   # nvidia-installer --uninstall
   # modprobe -r nvidia

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

   # find / -name &quot;*nvidia*&quot; -delete

== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, pour une carte legacy, remplacez les références à nvidia par les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy

Remarque : Les bons informaticiens, sont en général des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! Alors ils ont cru bon, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peu comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littéralement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;. Mais comprenez bien que l'abrévation a la même signification.

   $ su 
   # apt-get install module-assistant
   # m-a prepare
   # m-a clean nvidia-kernel

Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :

   # apt-get install -t unstable nvidia-kernel-source[/code]

La suite est la même :

   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf

   # nano /etc/X11/xorg.conf

Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf, vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)

   Section &quot;Device&quot;
       Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
       Driver         &quot;nv&quot;
   EndSection

Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
   Driver         &quot;nv&quot;
Par :
   Driver         &quot;nvidia&quot;
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :

Pour GNOME :

   # /etc/init.d/gdm restart

Pour KDE :
   # /etc/init.d/kdm restart
Ou si vous êtes sur de rien :

   # reboot

== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manipulations à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources. Ça évite pas mal de problèmes, mais si on voit :

   Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,

lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.

== ANNEXE 1 ==
Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :

   $ su
   # rm -rf /usr/src/modules/nvidia-kernel/
   # cd /usr/src
   # tar xjvf nvidia-kernel.tar.bz2
   # cd modules/nvidia-kernel/debian
   # cp control.template control
   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

Retournez à la partie V

[[Utilisateur:Debianhadic|Debianhadic]]

== ANNEXE 2 (refaire des paquets .deb)==
NVIDIA a fait une mise à jour des drivers il y a 5 minutes. Vous êtes raisonnable (vous avez attendu 5 minutes) mais tout de même, vous voulez ces drivers même si cela peut ne pas marcher (si, ça n'est pas infaillible). Vous savez donc que ça peut tout casser mais tant pis, vous les voulez quand même et qui plus est sous forme de paquets (caprice ?). Bon, c'est faisable à partir des .run. La démarche est la suivante:

&lt;br /&gt;

Il vous faut installer les scripts de développement (paquet devscripts) et procéder comme suit:

&lt;br /&gt;

* Chargez les sources des paquets nvidia, il faut bien évidemment une entrée deb-src dans le fichier sources.list&lt;br /&gt;Sous root: 

 # apt-get build-dep nvidia-glx

&lt;br /&gt;et sous votre login&lt;br /&gt;

 $ apt-get source nvidia-glx

&lt;br /&gt;&lt;br /&gt;Un répertoire nvidia-graphics-drivers-??? est crée (ici c'est nvidia-graphics-drivers-173.14.09)
* Chargez les .run correspondants. Pour amd64 il vous faut le .run i386 et amd64, pour le i386, seul le .run 386 est nécessaire. Dans le doute, vous pouvez mettre les 2 si vous êtes inquiet. Dans notre exemple, ce sont les fichiers&lt;br /&gt;&lt;br /&gt;

 NVIDIA-Linux-x86-190.53-pkg1.run
et
 NVIDIA-Linux-x86_64-190.53-pkg2.run

&lt;br /&gt;Mettez ces fichiers dans le répertoire nvidia-graphics-drivers-173.14.09 et donnez leur les droits à l'éxécution (chmod +x)
* Allez dans ce répertoire et mettez la version à jour:&lt;br /&gt;&lt;br /&gt;

 $ dch -v 190.53

&lt;br /&gt;&lt;br /&gt;Le fichier changelog est ouvert en édition, tapez vos motivations et fermez le fichier. Le répertoire a changé de nom, faites un

 cd ../nvidia-graphics-drivers-190.53

* Il faut tout d'abord changer toutes les références de 173.14.09 en 190.53 et les appels aux fichiers .run
** Editer le fichier debian/upstream_info (avec emacs bien sûr) et modifier en conséquence les valeurs RELEASE et NEXTVER (en 190.53 et 190.54)
** Dans ce même fichier changez les extensions pkg0 des fichiers NVIDIA-???.run et des répertoires correspondants, dans notre exemple, cela revient à remplacer le pkg0 en pkg1. Attention, il y a plusieurs références, faites une recherche sur pkg dans ce fichier.
** Soyez courageux, virez tous les patches: vous avez décidé d'installer le système de NVIDIA, les patches peuvent être inadaptés:&lt;br /&gt;&lt;br /&gt;

 $ rm -R patches*

&lt;br /&gt;&lt;br /&gt;(Si à ce stade vous avez effacé votre disque dur parce que vous n'étiez pas dans le bon niveau et que vous travaillez en root, '''positivez''': vous venez d'apprendre pourquoi on ne travaille '''jamais''' en root).
* Effacez les vieux .run inutiles&lt;br /&gt;&lt;br /&gt;

 $ cd ..
 $ rm NVIDIA-Linux-x86-173.14.09-pkg0.run NVIDIA-Linux-x86_64-173.14.09-pkg2.run

&lt;br /&gt;&lt;br /&gt;
* Lachez vous enfin en lançant la construction des paquets:&lt;br /&gt;&lt;br /&gt;

 $ fakeroot dpkg-buildpackage -us -uc

&lt;br /&gt;&lt;br /&gt;
* Regardez dans le répertoire au dessus vous avez
** Les paquets:&lt;br /&gt;
 nvidia-glx-ia32_190.53_amd64.deb
 nvidia-glx-dev_190.53_amd64.deb
 nvidia-glx_190.53_amd64.deb
 nvidia-kernel-source_190.53_amd64.deb
** Les sources:
 nvidia-graphics-drivers_190.53_amd64.changes
 nvidia-graphics-drivers_190.53.dsc
 nvidia-graphics-drivers_190.53.tar.gz

Les premiers sont les librairies et drivers xorg (les glx) ainsi que les sources pour faire le module nvidia avec module assistant, les seconds sont les sources de vos paquets. En cas de problème, vous pouvez les rectifier.

[[Utilisateur:fran.b|François Boisson]]
[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>em6yzk9wsau7addrmndj4e5czhvksx2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>214</id>
      <parentid>213</parentid>
      <timestamp>2010-01-23T21:03:38Z</timestamp>
      <contributor>
        <username>Wetaskiwin</username>
        <id>10</id>
      </contributor>
      <minor/>
      <comment>/* ANNEXE 2 (refaire des paquets .deb) */</comment>
      <text xml:space="preserve" bytes="11287">== I - Présentation ==

Avant tout sur Debian, il y a deux types de cartes nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(Chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe que vous n'avez jamais rien compilé ou que l'installation est nouvelle. Si ce n'est pas le cas, assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur. Recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libre, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :

  ##lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free

Bon ça c'est pour les gens 'stable'. Si vous êtes moins conservateur, vous êtes surement en SID. La version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépots. Pour vérifier que votre sources.list vous permet d'y accéder tapez :

   $ apt-cache policy nvidia-kernel-source

Qui devrait vous donner quelque chose comme ça :

   nvidia-kernel-source:
     Installé : 180.29-1
     Candidat : 180.29-1
    Table de version :
    *** 180.29-1 0
           970 http://ftp.fr.debian.org sid/non-free Packages
           100 /var/lib/dpkg/status
        173.14.09-5 0
           500 http://ftp.fr.debian.org lenny/non-free Packages
           900 http://ftp.fr.debian.org squeeze/non-free Packages

Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un sources.list permettant de se sortir de n'importe quelle dépendance. Pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]

N'oubliez pas de mettre à jour la liste de vos paquets :

   # apt-get update

'''ATTENTION''' Si votre carte est basée sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique. Je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.

== III - Détection de votre carte graphique ==

La partie la plus délicate : quel est mon pilote de carte graphique ?

   $ lspci

mon résultat, sur mon super portable Siemens :

   ...
   03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
   ...

dans les [] vous avez le type de carte. Allez sur cette page [http://www.nvidia.fr/object/legacy_drivers_fr.html]
Si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknow device, vous devrez mettre à jour vos identifiants :

   # update-pciids

et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot;, veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite. Nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique :

Si vous êtes avec gnome :
   
   # /etc/init.d/gdm stop

Si vous êtes avec KDE :

   # /etc/init.d/kdm stop

Si vous n'avez ni gnome, ni KDE, je suppose que vous savez très bien comment faire  :wink: 

Puis :

   # nvidia-installer --uninstall
   # modprobe -r nvidia

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

   # find / -name &quot;*nvidia*&quot; -delete

== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, pour une carte legacy, remplacez les références à nvidia par les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy

Remarque : Les bons informaticiens, sont en général des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! Alors ils ont cru bon, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peu comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littéralement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;. Mais comprenez bien que l'abrévation a la même signification.

   $ su 
   # apt-get install module-assistant
   # m-a prepare
   # m-a clean nvidia-kernel

Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :

   # apt-get install -t unstable nvidia-kernel-source[/code]

La suite est la même :

   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf

   # nano /etc/X11/xorg.conf

Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf, vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)

   Section &quot;Device&quot;
       Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
       Driver         &quot;nv&quot;
   EndSection

Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
   Driver         &quot;nv&quot;
Par :
   Driver         &quot;nvidia&quot;
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :

Pour GNOME :

   # /etc/init.d/gdm restart

Pour KDE :
   # /etc/init.d/kdm restart
Ou si vous êtes sur de rien :

   # reboot

== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manipulations à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources. Ça évite pas mal de problèmes, mais si on voit :

   Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,

lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.

== ANNEXE 1 ==
Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :

   $ su
   # rm -rf /usr/src/modules/nvidia-kernel/
   # cd /usr/src
   # tar xjvf nvidia-kernel.tar.bz2
   # cd modules/nvidia-kernel/debian
   # cp control.template control
   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

Retournez à la partie V

[[Utilisateur:Debianhadic|Debianhadic]]

== ANNEXE 2 (refaire des paquets .deb)==
NVIDIA a fait une mise à jour des drivers il y a 5 minutes. Vous êtes raisonnable (vous avez attendu 5 minutes) mais tout de même, vous voulez ces drivers même si cela peut ne pas marcher (si, ça n'est pas infaillible). Vous savez donc que ça peut tout casser mais tant pis, vous les voulez quand même et qui plus est sous forme de paquets (caprice ?). Bon, c'est faisable à partir des .run. La démarche est la suivante:

&lt;br /&gt;

Il vous faut installer les scripts de développement (paquet devscripts) et procéder comme suit:

&lt;br /&gt;

* Chargez les sources des paquets nvidia. Il faut bien évidemment une entrée deb-src dans le fichier sources.list&lt;br /&gt;Sous root: 

 # apt-get build-dep nvidia-glx

&lt;br /&gt;et sous votre login&lt;br /&gt;

 $ apt-get source nvidia-glx

&lt;br /&gt;&lt;br /&gt;Un répertoire nvidia-graphics-drivers-??? est créé (ici c'est nvidia-graphics-drivers-173.14.09)
* Chargez les .run correspondants. Pour amd64 il vous faut le .run i386 et amd64. Pour le i386, seul le .run 386 est nécessaire. Dans le doute, vous pouvez mettre les 2 si vous êtes inquiet. Dans notre exemple, ce sont les fichiers&lt;br /&gt;&lt;br /&gt;

 NVIDIA-Linux-x86-190.53-pkg1.run
et
 NVIDIA-Linux-x86_64-190.53-pkg2.run

&lt;br /&gt;Mettez ces fichiers dans le répertoire nvidia-graphics-drivers-173.14.09 et donnez leur les droits à l'éxécution (chmod +x)
* Allez dans ce répertoire et mettez la version à jour:&lt;br /&gt;&lt;br /&gt;

 $ dch -v 190.53

&lt;br /&gt;&lt;br /&gt;Le fichier changelog est ouvert en édition, tapez vos motivations et fermez le fichier. Le répertoire a changé de nom, faites un

 cd ../nvidia-graphics-drivers-190.53

* Il faut tout d'abord changer toutes les références de 173.14.09 en 190.53 et les appels aux fichiers .run
** Editez le fichier debian/upstream_info (avec emacs bien sûr) et modifiez en conséquence les valeurs RELEASE et NEXTVER (en 190.53 et 190.54)
** Dans ce même fichier, changez les extensions pkg0 des fichiers NVIDIA-???.run et des répertoires correspondants. Dans notre exemple, cela revient à remplacer le pkg0 en pkg1. Attention, il y a plusieurs références, faites une recherche sur pkg dans ce fichier.
** Soyez courageux, virez tous les patches : vous avez décidé d'installer le système de NVIDIA. Les patches peuvent être inadaptés:&lt;br /&gt;&lt;br /&gt;

 $ rm -R patches*

&lt;br /&gt;&lt;br /&gt;(Si à ce stade vous avez effacé votre disque dur parce que vous n'étiez pas dans le bon niveau et que vous travailliez en root, '''positivez''' : vous venez d'apprendre pourquoi on ne travaille '''jamais''' en root).
* Effacez les vieux .run inutiles&lt;br /&gt;&lt;br /&gt;

 $ cd ..
 $ rm NVIDIA-Linux-x86-173.14.09-pkg0.run NVIDIA-Linux-x86_64-173.14.09-pkg2.run

&lt;br /&gt;&lt;br /&gt;
* Lâchez-vous enfin en lançant la construction des paquets:&lt;br /&gt;&lt;br /&gt;

 $ fakeroot dpkg-buildpackage -us -uc

&lt;br /&gt;&lt;br /&gt;
* Regardez dans le répertoire au-dessus, vous avez :
** Les paquets:&lt;br /&gt;
 nvidia-glx-ia32_190.53_amd64.deb
 nvidia-glx-dev_190.53_amd64.deb
 nvidia-glx_190.53_amd64.deb
 nvidia-kernel-source_190.53_amd64.deb
** Les sources:
 nvidia-graphics-drivers_190.53_amd64.changes
 nvidia-graphics-drivers_190.53.dsc
 nvidia-graphics-drivers_190.53.tar.gz

Les premiers sont les librairies et drivers xorg (les glx) ainsi que les sources pour faire le module nvidia avec module assistant, les seconds sont les sources de vos paquets. En cas de problème, vous pouvez les rectifier.

[[Utilisateur:fran.b|François Boisson]]
[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>8sy8z9eejsczm4vdarccfs5975h22el</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>229</id>
      <parentid>214</parentid>
      <timestamp>2010-01-24T12:48:09Z</timestamp>
      <contributor>
        <username>Debianhadic</username>
        <id>11</id>
      </contributor>
      <comment>/* IV - Compilation du module - Patch du noyau */</comment>
      <text xml:space="preserve" bytes="11280">== I - Présentation ==

Avant tout sur Debian, il y a deux types de cartes nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(Chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe que vous n'avez jamais rien compilé ou que l'installation est nouvelle. Si ce n'est pas le cas, assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur. Recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libre, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :

  ##lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free

Bon ça c'est pour les gens 'stable'. Si vous êtes moins conservateur, vous êtes surement en SID. La version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépots. Pour vérifier que votre sources.list vous permet d'y accéder tapez :

   $ apt-cache policy nvidia-kernel-source

Qui devrait vous donner quelque chose comme ça :

   nvidia-kernel-source:
     Installé : 180.29-1
     Candidat : 180.29-1
    Table de version :
    *** 180.29-1 0
           970 http://ftp.fr.debian.org sid/non-free Packages
           100 /var/lib/dpkg/status
        173.14.09-5 0
           500 http://ftp.fr.debian.org lenny/non-free Packages
           900 http://ftp.fr.debian.org squeeze/non-free Packages

Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un sources.list permettant de se sortir de n'importe quelle dépendance. Pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]

N'oubliez pas de mettre à jour la liste de vos paquets :

   # apt-get update

'''ATTENTION''' Si votre carte est basée sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique. Je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.

== III - Détection de votre carte graphique ==

La partie la plus délicate : quel est mon pilote de carte graphique ?

   $ lspci

mon résultat, sur mon super portable Siemens :

   ...
   03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
   ...

dans les [] vous avez le type de carte. Allez sur cette page [http://www.nvidia.fr/object/legacy_drivers_fr.html]
Si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknow device, vous devrez mettre à jour vos identifiants :

   # update-pciids

et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot;, veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite. Nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique :

Si vous êtes avec gnome :
   
   # /etc/init.d/gdm stop

Si vous êtes avec KDE :

   # /etc/init.d/kdm stop

Si vous n'avez ni gnome, ni KDE, je suppose que vous savez très bien comment faire  :wink: 

Puis :

   # nvidia-installer --uninstall
   # modprobe -r nvidia

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

   # find / -name &quot;*nvidia*&quot; -delete

== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, pour une carte legacy, remplacez les références à nvidia par les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy

Remarque : Les bons informaticiens, sont en général des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! Alors ils ont cru bon, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peu comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littéralement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;. Mais comprenez bien que l'abrévation a la même signification.

   $ su 
   # apt-get install module-assistant
   # m-a prepare
   # m-a clean nvidia-kernel

Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :

   # apt-get install -t unstable nvidia-kernel-source

La suite est la même :

   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf

   # nano /etc/X11/xorg.conf

Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf, vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)

   Section &quot;Device&quot;
       Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
       Driver         &quot;nv&quot;
   EndSection

Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
   Driver         &quot;nv&quot;
Par :
   Driver         &quot;nvidia&quot;
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :

Pour GNOME :

   # /etc/init.d/gdm restart

Pour KDE :
   # /etc/init.d/kdm restart
Ou si vous êtes sur de rien :

   # reboot

== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manipulations à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources. Ça évite pas mal de problèmes, mais si on voit :

   Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,

lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.

== ANNEXE 1 ==
Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :

   $ su
   # rm -rf /usr/src/modules/nvidia-kernel/
   # cd /usr/src
   # tar xjvf nvidia-kernel.tar.bz2
   # cd modules/nvidia-kernel/debian
   # cp control.template control
   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

Retournez à la partie V

[[Utilisateur:Debianhadic|Debianhadic]]

== ANNEXE 2 (refaire des paquets .deb)==
NVIDIA a fait une mise à jour des drivers il y a 5 minutes. Vous êtes raisonnable (vous avez attendu 5 minutes) mais tout de même, vous voulez ces drivers même si cela peut ne pas marcher (si, ça n'est pas infaillible). Vous savez donc que ça peut tout casser mais tant pis, vous les voulez quand même et qui plus est sous forme de paquets (caprice ?). Bon, c'est faisable à partir des .run. La démarche est la suivante:

&lt;br /&gt;

Il vous faut installer les scripts de développement (paquet devscripts) et procéder comme suit:

&lt;br /&gt;

* Chargez les sources des paquets nvidia. Il faut bien évidemment une entrée deb-src dans le fichier sources.list&lt;br /&gt;Sous root: 

 # apt-get build-dep nvidia-glx

&lt;br /&gt;et sous votre login&lt;br /&gt;

 $ apt-get source nvidia-glx

&lt;br /&gt;&lt;br /&gt;Un répertoire nvidia-graphics-drivers-??? est créé (ici c'est nvidia-graphics-drivers-173.14.09)
* Chargez les .run correspondants. Pour amd64 il vous faut le .run i386 et amd64. Pour le i386, seul le .run 386 est nécessaire. Dans le doute, vous pouvez mettre les 2 si vous êtes inquiet. Dans notre exemple, ce sont les fichiers&lt;br /&gt;&lt;br /&gt;

 NVIDIA-Linux-x86-190.53-pkg1.run
et
 NVIDIA-Linux-x86_64-190.53-pkg2.run

&lt;br /&gt;Mettez ces fichiers dans le répertoire nvidia-graphics-drivers-173.14.09 et donnez leur les droits à l'éxécution (chmod +x)
* Allez dans ce répertoire et mettez la version à jour:&lt;br /&gt;&lt;br /&gt;

 $ dch -v 190.53

&lt;br /&gt;&lt;br /&gt;Le fichier changelog est ouvert en édition, tapez vos motivations et fermez le fichier. Le répertoire a changé de nom, faites un

 cd ../nvidia-graphics-drivers-190.53

* Il faut tout d'abord changer toutes les références de 173.14.09 en 190.53 et les appels aux fichiers .run
** Editez le fichier debian/upstream_info (avec emacs bien sûr) et modifiez en conséquence les valeurs RELEASE et NEXTVER (en 190.53 et 190.54)
** Dans ce même fichier, changez les extensions pkg0 des fichiers NVIDIA-???.run et des répertoires correspondants. Dans notre exemple, cela revient à remplacer le pkg0 en pkg1. Attention, il y a plusieurs références, faites une recherche sur pkg dans ce fichier.
** Soyez courageux, virez tous les patches : vous avez décidé d'installer le système de NVIDIA. Les patches peuvent être inadaptés:&lt;br /&gt;&lt;br /&gt;

 $ rm -R patches*

&lt;br /&gt;&lt;br /&gt;(Si à ce stade vous avez effacé votre disque dur parce que vous n'étiez pas dans le bon niveau et que vous travailliez en root, '''positivez''' : vous venez d'apprendre pourquoi on ne travaille '''jamais''' en root).
* Effacez les vieux .run inutiles&lt;br /&gt;&lt;br /&gt;

 $ cd ..
 $ rm NVIDIA-Linux-x86-173.14.09-pkg0.run NVIDIA-Linux-x86_64-173.14.09-pkg2.run

&lt;br /&gt;&lt;br /&gt;
* Lâchez-vous enfin en lançant la construction des paquets:&lt;br /&gt;&lt;br /&gt;

 $ fakeroot dpkg-buildpackage -us -uc

&lt;br /&gt;&lt;br /&gt;
* Regardez dans le répertoire au-dessus, vous avez :
** Les paquets:&lt;br /&gt;
 nvidia-glx-ia32_190.53_amd64.deb
 nvidia-glx-dev_190.53_amd64.deb
 nvidia-glx_190.53_amd64.deb
 nvidia-kernel-source_190.53_amd64.deb
** Les sources:
 nvidia-graphics-drivers_190.53_amd64.changes
 nvidia-graphics-drivers_190.53.dsc
 nvidia-graphics-drivers_190.53.tar.gz

Les premiers sont les librairies et drivers xorg (les glx) ainsi que les sources pour faire le module nvidia avec module assistant, les seconds sont les sources de vos paquets. En cas de problème, vous pouvez les rectifier.

[[Utilisateur:fran.b|François Boisson]]
[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>lg4hmly8cyjn2td1ye49uywuw7a5z6l</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>232</id>
      <parentid>229</parentid>
      <timestamp>2010-01-24T13:57:16Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* II - Modification des dépôts */</comment>
      <text xml:space="preserve" bytes="11284">== I - Présentation ==

Avant tout sur Debian, il y a deux types de cartes nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(Chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe que vous n'avez jamais rien compilé ou que l'installation est nouvelle. Si ce n'est pas le cas, assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur. Recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libre, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :

  ##stable
  deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
  deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

Bon ça c'est pour les gens 'stable'. Si vous êtes moins conservateur, vous êtes surement en SID. La version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépôts. Pour vérifier que votre sources.list vous permet d'y accéder tapez :

   $ apt-cache policy nvidia-kernel-source

Qui devrait vous donner quelque chose comme ça :

   nvidia-kernel-source:
     Installé : 180.29-1
     Candidat : 180.29-1
    Table de version :
    *** 180.29-1 0
           970 http://ftp.fr.debian.org sid/non-free Packages
           100 /var/lib/dpkg/status
        173.14.09-5 0
           500 http://ftp.fr.debian.org lenny/non-free Packages
           900 http://ftp.fr.debian.org squeeze/non-free Packages

Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un sources.list permettant de se sortir de n'importe quelle dépendance. Pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]

N'oubliez pas de mettre à jour la liste de vos paquets :

   # apt-get update

'''ATTENTION''' Si votre carte est basée sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique. Je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.

== III - Détection de votre carte graphique ==

La partie la plus délicate : quel est mon pilote de carte graphique ?

   $ lspci

mon résultat, sur mon super portable Siemens :

   ...
   03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
   ...

dans les [] vous avez le type de carte. Allez sur cette page [http://www.nvidia.fr/object/legacy_drivers_fr.html]
Si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknow device, vous devrez mettre à jour vos identifiants :

   # update-pciids

et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot;, veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite. Nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique :

Si vous êtes avec gnome :
   
   # /etc/init.d/gdm stop

Si vous êtes avec KDE :

   # /etc/init.d/kdm stop

Si vous n'avez ni gnome, ni KDE, je suppose que vous savez très bien comment faire  :wink: 

Puis :

   # nvidia-installer --uninstall
   # modprobe -r nvidia

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

   # find / -name &quot;*nvidia*&quot; -delete

== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, pour une carte legacy, remplacez les références à nvidia par les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy

Remarque : Les bons informaticiens, sont en général des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! Alors ils ont cru bon, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peu comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littéralement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;. Mais comprenez bien que l'abrévation a la même signification.

   $ su 
   # apt-get install module-assistant
   # m-a prepare
   # m-a clean nvidia-kernel

Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :

   # apt-get install -t unstable nvidia-kernel-source

La suite est la même :

   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf

   # nano /etc/X11/xorg.conf

Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf, vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)

   Section &quot;Device&quot;
       Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
       Driver         &quot;nv&quot;
   EndSection

Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
   Driver         &quot;nv&quot;
Par :
   Driver         &quot;nvidia&quot;
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :

Pour GNOME :

   # /etc/init.d/gdm restart

Pour KDE :
   # /etc/init.d/kdm restart
Ou si vous êtes sur de rien :

   # reboot

== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manipulations à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources. Ça évite pas mal de problèmes, mais si on voit :

   Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,

lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.

== ANNEXE 1 ==
Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :

   $ su
   # rm -rf /usr/src/modules/nvidia-kernel/
   # cd /usr/src
   # tar xjvf nvidia-kernel.tar.bz2
   # cd modules/nvidia-kernel/debian
   # cp control.template control
   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

Retournez à la partie V

[[Utilisateur:Debianhadic|Debianhadic]]

== ANNEXE 2 (refaire des paquets .deb)==
NVIDIA a fait une mise à jour des drivers il y a 5 minutes. Vous êtes raisonnable (vous avez attendu 5 minutes) mais tout de même, vous voulez ces drivers même si cela peut ne pas marcher (si, ça n'est pas infaillible). Vous savez donc que ça peut tout casser mais tant pis, vous les voulez quand même et qui plus est sous forme de paquets (caprice ?). Bon, c'est faisable à partir des .run. La démarche est la suivante:

&lt;br /&gt;

Il vous faut installer les scripts de développement (paquet devscripts) et procéder comme suit:

&lt;br /&gt;

* Chargez les sources des paquets nvidia. Il faut bien évidemment une entrée deb-src dans le fichier sources.list&lt;br /&gt;Sous root: 

 # apt-get build-dep nvidia-glx

&lt;br /&gt;et sous votre login&lt;br /&gt;

 $ apt-get source nvidia-glx

&lt;br /&gt;&lt;br /&gt;Un répertoire nvidia-graphics-drivers-??? est créé (ici c'est nvidia-graphics-drivers-173.14.09)
* Chargez les .run correspondants. Pour amd64 il vous faut le .run i386 et amd64. Pour le i386, seul le .run 386 est nécessaire. Dans le doute, vous pouvez mettre les 2 si vous êtes inquiet. Dans notre exemple, ce sont les fichiers&lt;br /&gt;&lt;br /&gt;

 NVIDIA-Linux-x86-190.53-pkg1.run
et
 NVIDIA-Linux-x86_64-190.53-pkg2.run

&lt;br /&gt;Mettez ces fichiers dans le répertoire nvidia-graphics-drivers-173.14.09 et donnez leur les droits à l'éxécution (chmod +x)
* Allez dans ce répertoire et mettez la version à jour:&lt;br /&gt;&lt;br /&gt;

 $ dch -v 190.53

&lt;br /&gt;&lt;br /&gt;Le fichier changelog est ouvert en édition, tapez vos motivations et fermez le fichier. Le répertoire a changé de nom, faites un

 cd ../nvidia-graphics-drivers-190.53

* Il faut tout d'abord changer toutes les références de 173.14.09 en 190.53 et les appels aux fichiers .run
** Editez le fichier debian/upstream_info (avec emacs bien sûr) et modifiez en conséquence les valeurs RELEASE et NEXTVER (en 190.53 et 190.54)
** Dans ce même fichier, changez les extensions pkg0 des fichiers NVIDIA-???.run et des répertoires correspondants. Dans notre exemple, cela revient à remplacer le pkg0 en pkg1. Attention, il y a plusieurs références, faites une recherche sur pkg dans ce fichier.
** Soyez courageux, virez tous les patches : vous avez décidé d'installer le système de NVIDIA. Les patches peuvent être inadaptés:&lt;br /&gt;&lt;br /&gt;

 $ rm -R patches*

&lt;br /&gt;&lt;br /&gt;(Si à ce stade vous avez effacé votre disque dur parce que vous n'étiez pas dans le bon niveau et que vous travailliez en root, '''positivez''' : vous venez d'apprendre pourquoi on ne travaille '''jamais''' en root).
* Effacez les vieux .run inutiles&lt;br /&gt;&lt;br /&gt;

 $ cd ..
 $ rm NVIDIA-Linux-x86-173.14.09-pkg0.run NVIDIA-Linux-x86_64-173.14.09-pkg2.run

&lt;br /&gt;&lt;br /&gt;
* Lâchez-vous enfin en lançant la construction des paquets:&lt;br /&gt;&lt;br /&gt;

 $ fakeroot dpkg-buildpackage -us -uc

&lt;br /&gt;&lt;br /&gt;
* Regardez dans le répertoire au-dessus, vous avez :
** Les paquets:&lt;br /&gt;
 nvidia-glx-ia32_190.53_amd64.deb
 nvidia-glx-dev_190.53_amd64.deb
 nvidia-glx_190.53_amd64.deb
 nvidia-kernel-source_190.53_amd64.deb
** Les sources:
 nvidia-graphics-drivers_190.53_amd64.changes
 nvidia-graphics-drivers_190.53.dsc
 nvidia-graphics-drivers_190.53.tar.gz

Les premiers sont les librairies et drivers xorg (les glx) ainsi que les sources pour faire le module nvidia avec module assistant, les seconds sont les sources de vos paquets. En cas de problème, vous pouvez les rectifier.

[[Utilisateur:fran.b|François Boisson]]
[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>hh9k1rxr9a2vjjtaywz2amsr5pqc31p</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>600</id>
      <parentid>232</parentid>
      <timestamp>2010-01-31T13:11:27Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* III - Détection de votre carte graphique */</comment>
      <text xml:space="preserve" bytes="11285">== I - Présentation ==

Avant tout sur Debian, il y a deux types de cartes nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(Chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe que vous n'avez jamais rien compilé ou que l'installation est nouvelle. Si ce n'est pas le cas, assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur. Recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libre, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :

  ##stable
  deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
  deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

Bon ça c'est pour les gens 'stable'. Si vous êtes moins conservateur, vous êtes surement en SID. La version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépôts. Pour vérifier que votre sources.list vous permet d'y accéder tapez :

   $ apt-cache policy nvidia-kernel-source

Qui devrait vous donner quelque chose comme ça :

   nvidia-kernel-source:
     Installé : 180.29-1
     Candidat : 180.29-1
    Table de version :
    *** 180.29-1 0
           970 http://ftp.fr.debian.org sid/non-free Packages
           100 /var/lib/dpkg/status
        173.14.09-5 0
           500 http://ftp.fr.debian.org lenny/non-free Packages
           900 http://ftp.fr.debian.org squeeze/non-free Packages

Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un sources.list permettant de se sortir de n'importe quelle dépendance. Pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]

N'oubliez pas de mettre à jour la liste de vos paquets :

   # apt-get update

'''ATTENTION''' Si votre carte est basée sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique. Je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.

== III - Détection de votre carte graphique ==

La partie la plus délicate : quel est mon pilote de carte graphique ?

   $ lspci

mon résultat, sur mon super portable Siemens :

   ...
   03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
   ...

dans les [] vous avez le type de carte. Allez sur cette page [http://www.nvidia.fr/object/legacy_drivers_fr.html]
Si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknown device, vous devrez mettre à jour vos identifiants :

   # update-pciids

et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot;, veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite. Nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique :

Si vous êtes avec gnome :
   
   # /etc/init.d/gdm stop

Si vous êtes avec KDE :

   # /etc/init.d/kdm stop

Si vous n'avez ni gnome, ni KDE, je suppose que vous savez très bien comment faire  :wink: 

Puis :

   # nvidia-installer --uninstall
   # modprobe -r nvidia

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

   # find / -name &quot;*nvidia*&quot; -delete

== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, pour une carte legacy, remplacez les références à nvidia par les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy

Remarque : Les bons informaticiens, sont en général des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! Alors ils ont cru bon, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peu comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littéralement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;. Mais comprenez bien que l'abrévation a la même signification.

   $ su 
   # apt-get install module-assistant
   # m-a prepare
   # m-a clean nvidia-kernel

Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :

   # apt-get install -t unstable nvidia-kernel-source

La suite est la même :

   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf

   # nano /etc/X11/xorg.conf

Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf, vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)

   Section &quot;Device&quot;
       Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
       Driver         &quot;nv&quot;
   EndSection

Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
   Driver         &quot;nv&quot;
Par :
   Driver         &quot;nvidia&quot;
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :

Pour GNOME :

   # /etc/init.d/gdm restart

Pour KDE :
   # /etc/init.d/kdm restart
Ou si vous êtes sur de rien :

   # reboot

== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manipulations à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources. Ça évite pas mal de problèmes, mais si on voit :

   Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,

lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.

== ANNEXE 1 ==
Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :

   $ su
   # rm -rf /usr/src/modules/nvidia-kernel/
   # cd /usr/src
   # tar xjvf nvidia-kernel.tar.bz2
   # cd modules/nvidia-kernel/debian
   # cp control.template control
   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

Retournez à la partie V

[[Utilisateur:Debianhadic|Debianhadic]]

== ANNEXE 2 (refaire des paquets .deb)==
NVIDIA a fait une mise à jour des drivers il y a 5 minutes. Vous êtes raisonnable (vous avez attendu 5 minutes) mais tout de même, vous voulez ces drivers même si cela peut ne pas marcher (si, ça n'est pas infaillible). Vous savez donc que ça peut tout casser mais tant pis, vous les voulez quand même et qui plus est sous forme de paquets (caprice ?). Bon, c'est faisable à partir des .run. La démarche est la suivante:

&lt;br /&gt;

Il vous faut installer les scripts de développement (paquet devscripts) et procéder comme suit:

&lt;br /&gt;

* Chargez les sources des paquets nvidia. Il faut bien évidemment une entrée deb-src dans le fichier sources.list&lt;br /&gt;Sous root: 

 # apt-get build-dep nvidia-glx

&lt;br /&gt;et sous votre login&lt;br /&gt;

 $ apt-get source nvidia-glx

&lt;br /&gt;&lt;br /&gt;Un répertoire nvidia-graphics-drivers-??? est créé (ici c'est nvidia-graphics-drivers-173.14.09)
* Chargez les .run correspondants. Pour amd64 il vous faut le .run i386 et amd64. Pour le i386, seul le .run 386 est nécessaire. Dans le doute, vous pouvez mettre les 2 si vous êtes inquiet. Dans notre exemple, ce sont les fichiers&lt;br /&gt;&lt;br /&gt;

 NVIDIA-Linux-x86-190.53-pkg1.run
et
 NVIDIA-Linux-x86_64-190.53-pkg2.run

&lt;br /&gt;Mettez ces fichiers dans le répertoire nvidia-graphics-drivers-173.14.09 et donnez leur les droits à l'éxécution (chmod +x)
* Allez dans ce répertoire et mettez la version à jour:&lt;br /&gt;&lt;br /&gt;

 $ dch -v 190.53

&lt;br /&gt;&lt;br /&gt;Le fichier changelog est ouvert en édition, tapez vos motivations et fermez le fichier. Le répertoire a changé de nom, faites un

 cd ../nvidia-graphics-drivers-190.53

* Il faut tout d'abord changer toutes les références de 173.14.09 en 190.53 et les appels aux fichiers .run
** Editez le fichier debian/upstream_info (avec emacs bien sûr) et modifiez en conséquence les valeurs RELEASE et NEXTVER (en 190.53 et 190.54)
** Dans ce même fichier, changez les extensions pkg0 des fichiers NVIDIA-???.run et des répertoires correspondants. Dans notre exemple, cela revient à remplacer le pkg0 en pkg1. Attention, il y a plusieurs références, faites une recherche sur pkg dans ce fichier.
** Soyez courageux, virez tous les patches : vous avez décidé d'installer le système de NVIDIA. Les patches peuvent être inadaptés:&lt;br /&gt;&lt;br /&gt;

 $ rm -R patches*

&lt;br /&gt;&lt;br /&gt;(Si à ce stade vous avez effacé votre disque dur parce que vous n'étiez pas dans le bon niveau et que vous travailliez en root, '''positivez''' : vous venez d'apprendre pourquoi on ne travaille '''jamais''' en root).
* Effacez les vieux .run inutiles&lt;br /&gt;&lt;br /&gt;

 $ cd ..
 $ rm NVIDIA-Linux-x86-173.14.09-pkg0.run NVIDIA-Linux-x86_64-173.14.09-pkg2.run

&lt;br /&gt;&lt;br /&gt;
* Lâchez-vous enfin en lançant la construction des paquets:&lt;br /&gt;&lt;br /&gt;

 $ fakeroot dpkg-buildpackage -us -uc

&lt;br /&gt;&lt;br /&gt;
* Regardez dans le répertoire au-dessus, vous avez :
** Les paquets:&lt;br /&gt;
 nvidia-glx-ia32_190.53_amd64.deb
 nvidia-glx-dev_190.53_amd64.deb
 nvidia-glx_190.53_amd64.deb
 nvidia-kernel-source_190.53_amd64.deb
** Les sources:
 nvidia-graphics-drivers_190.53_amd64.changes
 nvidia-graphics-drivers_190.53.dsc
 nvidia-graphics-drivers_190.53.tar.gz

Les premiers sont les librairies et drivers xorg (les glx) ainsi que les sources pour faire le module nvidia avec module assistant, les seconds sont les sources de vos paquets. En cas de problème, vous pouvez les rectifier.

[[Utilisateur:fran.b|François Boisson]]
[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>1wdginykvjg7ne5xy5qz3g0lgr23fbg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>814</id>
      <parentid>600</parentid>
      <timestamp>2010-02-03T18:54:42Z</timestamp>
      <contributor>
        <username>Wetaskiwin</username>
        <id>10</id>
      </contributor>
      <minor/>
      <comment>/* ANNEXE 2 (refaire des paquets .deb) */</comment>
      <text xml:space="preserve" bytes="11285">== I - Présentation ==

Avant tout sur Debian, il y a deux types de cartes nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(Chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe que vous n'avez jamais rien compilé ou que l'installation est nouvelle. Si ce n'est pas le cas, assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur. Recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libre, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :

  ##stable
  deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
  deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

Bon ça c'est pour les gens 'stable'. Si vous êtes moins conservateur, vous êtes surement en SID. La version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépôts. Pour vérifier que votre sources.list vous permet d'y accéder tapez :

   $ apt-cache policy nvidia-kernel-source

Qui devrait vous donner quelque chose comme ça :

   nvidia-kernel-source:
     Installé : 180.29-1
     Candidat : 180.29-1
    Table de version :
    *** 180.29-1 0
           970 http://ftp.fr.debian.org sid/non-free Packages
           100 /var/lib/dpkg/status
        173.14.09-5 0
           500 http://ftp.fr.debian.org lenny/non-free Packages
           900 http://ftp.fr.debian.org squeeze/non-free Packages

Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un sources.list permettant de se sortir de n'importe quelle dépendance. Pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]

N'oubliez pas de mettre à jour la liste de vos paquets :

   # apt-get update

'''ATTENTION''' Si votre carte est basée sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique. Je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.

== III - Détection de votre carte graphique ==

La partie la plus délicate : quel est mon pilote de carte graphique ?

   $ lspci

mon résultat, sur mon super portable Siemens :

   ...
   03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
   ...

dans les [] vous avez le type de carte. Allez sur cette page [http://www.nvidia.fr/object/legacy_drivers_fr.html]
Si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknown device, vous devrez mettre à jour vos identifiants :

   # update-pciids

et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot;, veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite. Nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique :

Si vous êtes avec gnome :
   
   # /etc/init.d/gdm stop

Si vous êtes avec KDE :

   # /etc/init.d/kdm stop

Si vous n'avez ni gnome, ni KDE, je suppose que vous savez très bien comment faire  :wink: 

Puis :

   # nvidia-installer --uninstall
   # modprobe -r nvidia

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

   # find / -name &quot;*nvidia*&quot; -delete

== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, pour une carte legacy, remplacez les références à nvidia par les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy

Remarque : Les bons informaticiens, sont en général des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! Alors ils ont cru bon, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peu comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littéralement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;. Mais comprenez bien que l'abrévation a la même signification.

   $ su 
   # apt-get install module-assistant
   # m-a prepare
   # m-a clean nvidia-kernel

Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :

   # apt-get install -t unstable nvidia-kernel-source

La suite est la même :

   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf

   # nano /etc/X11/xorg.conf

Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf, vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)

   Section &quot;Device&quot;
       Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
       Driver         &quot;nv&quot;
   EndSection

Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
   Driver         &quot;nv&quot;
Par :
   Driver         &quot;nvidia&quot;
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :

Pour GNOME :

   # /etc/init.d/gdm restart

Pour KDE :
   # /etc/init.d/kdm restart
Ou si vous êtes sur de rien :

   # reboot

== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manipulations à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources. Ça évite pas mal de problèmes, mais si on voit :

   Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,

lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.

== ANNEXE 1 ==
Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :

   $ su
   # rm -rf /usr/src/modules/nvidia-kernel/
   # cd /usr/src
   # tar xjvf nvidia-kernel.tar.bz2
   # cd modules/nvidia-kernel/debian
   # cp control.template control
   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

Retournez à la partie V

[[Utilisateur:Debianhadic|Debianhadic]]

== ANNEXE 2 (Refaire des paquets .deb)==
NVIDIA a fait une mise à jour des drivers il y a 5 minutes. Vous êtes raisonnable (vous avez attendu 5 minutes) mais tout de même, vous voulez ces drivers même si cela peut ne pas marcher (si, ça n'est pas infaillible). Vous savez donc que ça peut tout casser mais tant pis, vous les voulez quand même et qui plus est sous forme de paquets (caprice ?). Bon, c'est faisable à partir des .run. La démarche est la suivante:

&lt;br /&gt;

Il vous faut installer les scripts de développement (paquet devscripts) et procéder comme suit:

&lt;br /&gt;

* Chargez les sources des paquets nvidia. Il faut bien évidemment une entrée deb-src dans le fichier sources.list&lt;br /&gt;Sous root: 

 # apt-get build-dep nvidia-glx

&lt;br /&gt;et sous votre login&lt;br /&gt;

 $ apt-get source nvidia-glx

&lt;br /&gt;&lt;br /&gt;Un répertoire nvidia-graphics-drivers-??? est créé (ici c'est nvidia-graphics-drivers-173.14.09)
* Chargez les .run correspondants. Pour amd64 il vous faut le .run i386 et amd64. Pour le i386, seul le .run 386 est nécessaire. Dans le doute, vous pouvez mettre les 2 si vous êtes inquiet. Dans notre exemple, ce sont les fichiers&lt;br /&gt;&lt;br /&gt;

 NVIDIA-Linux-x86-190.53-pkg1.run
et
 NVIDIA-Linux-x86_64-190.53-pkg2.run

&lt;br /&gt;Mettez ces fichiers dans le répertoire nvidia-graphics-drivers-173.14.09 et donnez leur les droits à l'éxécution (chmod +x)
* Allez dans ce répertoire et mettez la version à jour:&lt;br /&gt;&lt;br /&gt;

 $ dch -v 190.53

&lt;br /&gt;&lt;br /&gt;Le fichier changelog est ouvert en édition, tapez vos motivations et fermez le fichier. Le répertoire a changé de nom, faites un

 cd ../nvidia-graphics-drivers-190.53

* Il faut tout d'abord changer toutes les références de 173.14.09 en 190.53 et les appels aux fichiers .run
** Editez le fichier debian/upstream_info (avec emacs bien sûr) et modifiez en conséquence les valeurs RELEASE et NEXTVER (en 190.53 et 190.54)
** Dans ce même fichier, changez les extensions pkg0 des fichiers NVIDIA-???.run et des répertoires correspondants. Dans notre exemple, cela revient à remplacer le pkg0 en pkg1. Attention, il y a plusieurs références, faites une recherche sur pkg dans ce fichier.
** Soyez courageux, virez tous les patches : vous avez décidé d'installer le système de NVIDIA. Les patches peuvent être inadaptés:&lt;br /&gt;&lt;br /&gt;

 $ rm -R patches*

&lt;br /&gt;&lt;br /&gt;(Si à ce stade vous avez effacé votre disque dur parce que vous n'étiez pas dans le bon niveau et que vous travailliez en root, '''positivez''' : vous venez d'apprendre pourquoi on ne travaille '''jamais''' en root).
* Effacez les vieux .run inutiles&lt;br /&gt;&lt;br /&gt;

 $ cd ..
 $ rm NVIDIA-Linux-x86-173.14.09-pkg0.run NVIDIA-Linux-x86_64-173.14.09-pkg2.run

&lt;br /&gt;&lt;br /&gt;
* Lâchez-vous enfin en lançant la construction des paquets:&lt;br /&gt;&lt;br /&gt;

 $ fakeroot dpkg-buildpackage -us -uc

&lt;br /&gt;&lt;br /&gt;
* Regardez dans le répertoire au-dessus, vous avez :
** Les paquets:&lt;br /&gt;
 nvidia-glx-ia32_190.53_amd64.deb
 nvidia-glx-dev_190.53_amd64.deb
 nvidia-glx_190.53_amd64.deb
 nvidia-kernel-source_190.53_amd64.deb
** Les sources:
 nvidia-graphics-drivers_190.53_amd64.changes
 nvidia-graphics-drivers_190.53.dsc
 nvidia-graphics-drivers_190.53.tar.gz

Les premiers sont les librairies et drivers xorg (les glx) ainsi que les sources pour faire le module nvidia avec module assistant, les seconds sont les sources de vos paquets. En cas de problème, vous pouvez les rectifier.

[[Utilisateur:fran.b|François Boisson]]
[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>5szt38r7bwty2eg2gonag270zpkid6i</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1602</id>
      <parentid>814</parentid>
      <timestamp>2010-07-05T07:45:57Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="11344">#REDIRECT [[isalo:Installer_les_pilotes_nVidia_privateur]]
== I - Présentation ==

Avant tout sur Debian, il y a deux types de cartes nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(Chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe que vous n'avez jamais rien compilé ou que l'installation est nouvelle. Si ce n'est pas le cas, assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur. Recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libre, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :

  ##stable
  deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
  deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

Bon ça c'est pour les gens 'stable'. Si vous êtes moins conservateur, vous êtes surement en SID. La version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépôts. Pour vérifier que votre sources.list vous permet d'y accéder tapez :

   $ apt-cache policy nvidia-kernel-source

Qui devrait vous donner quelque chose comme ça :

   nvidia-kernel-source:
     Installé : 180.29-1
     Candidat : 180.29-1
    Table de version :
    *** 180.29-1 0
           970 http://ftp.fr.debian.org sid/non-free Packages
           100 /var/lib/dpkg/status
        173.14.09-5 0
           500 http://ftp.fr.debian.org lenny/non-free Packages
           900 http://ftp.fr.debian.org squeeze/non-free Packages

Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un sources.list permettant de se sortir de n'importe quelle dépendance. Pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]

N'oubliez pas de mettre à jour la liste de vos paquets :

   # apt-get update

'''ATTENTION''' Si votre carte est basée sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique. Je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.

== III - Détection de votre carte graphique ==

La partie la plus délicate : quel est mon pilote de carte graphique ?

   $ lspci

mon résultat, sur mon super portable Siemens :

   ...
   03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
   ...

dans les [] vous avez le type de carte. Allez sur cette page [http://www.nvidia.fr/object/legacy_drivers_fr.html]
Si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknown device, vous devrez mettre à jour vos identifiants :

   # update-pciids

et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot;, veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite. Nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique :

Si vous êtes avec gnome :
   
   # /etc/init.d/gdm stop

Si vous êtes avec KDE :

   # /etc/init.d/kdm stop

Si vous n'avez ni gnome, ni KDE, je suppose que vous savez très bien comment faire  :wink: 

Puis :

   # nvidia-installer --uninstall
   # modprobe -r nvidia

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

   # find / -name &quot;*nvidia*&quot; -delete

== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, pour une carte legacy, remplacez les références à nvidia par les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy

Remarque : Les bons informaticiens, sont en général des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! Alors ils ont cru bon, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peu comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littéralement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;. Mais comprenez bien que l'abrévation a la même signification.

   $ su 
   # apt-get install module-assistant
   # m-a prepare
   # m-a clean nvidia-kernel

Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :

   # apt-get install -t unstable nvidia-kernel-source

La suite est la même :

   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf

   # nano /etc/X11/xorg.conf

Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf, vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)

   Section &quot;Device&quot;
       Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
       Driver         &quot;nv&quot;
   EndSection

Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
   Driver         &quot;nv&quot;
Par :
   Driver         &quot;nvidia&quot;
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :

Pour GNOME :

   # /etc/init.d/gdm restart

Pour KDE :
   # /etc/init.d/kdm restart
Ou si vous êtes sur de rien :

   # reboot

== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manipulations à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources. Ça évite pas mal de problèmes, mais si on voit :

   Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,

lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.

== ANNEXE 1 ==
Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :

   $ su
   # rm -rf /usr/src/modules/nvidia-kernel/
   # cd /usr/src
   # tar xjvf nvidia-kernel.tar.bz2
   # cd modules/nvidia-kernel/debian
   # cp control.template control
   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

Retournez à la partie V

[[Utilisateur:Debianhadic|Debianhadic]]

== ANNEXE 2 (Refaire des paquets .deb)==
NVIDIA a fait une mise à jour des drivers il y a 5 minutes. Vous êtes raisonnable (vous avez attendu 5 minutes) mais tout de même, vous voulez ces drivers même si cela peut ne pas marcher (si, ça n'est pas infaillible). Vous savez donc que ça peut tout casser mais tant pis, vous les voulez quand même et qui plus est sous forme de paquets (caprice ?). Bon, c'est faisable à partir des .run. La démarche est la suivante:

&lt;br /&gt;

Il vous faut installer les scripts de développement (paquet devscripts) et procéder comme suit:

&lt;br /&gt;

* Chargez les sources des paquets nvidia. Il faut bien évidemment une entrée deb-src dans le fichier sources.list&lt;br /&gt;Sous root: 

 # apt-get build-dep nvidia-glx

&lt;br /&gt;et sous votre login&lt;br /&gt;

 $ apt-get source nvidia-glx

&lt;br /&gt;&lt;br /&gt;Un répertoire nvidia-graphics-drivers-??? est créé (ici c'est nvidia-graphics-drivers-173.14.09)
* Chargez les .run correspondants. Pour amd64 il vous faut le .run i386 et amd64. Pour le i386, seul le .run 386 est nécessaire. Dans le doute, vous pouvez mettre les 2 si vous êtes inquiet. Dans notre exemple, ce sont les fichiers&lt;br /&gt;&lt;br /&gt;

 NVIDIA-Linux-x86-190.53-pkg1.run
et
 NVIDIA-Linux-x86_64-190.53-pkg2.run

&lt;br /&gt;Mettez ces fichiers dans le répertoire nvidia-graphics-drivers-173.14.09 et donnez leur les droits à l'éxécution (chmod +x)
* Allez dans ce répertoire et mettez la version à jour:&lt;br /&gt;&lt;br /&gt;

 $ dch -v 190.53

&lt;br /&gt;&lt;br /&gt;Le fichier changelog est ouvert en édition, tapez vos motivations et fermez le fichier. Le répertoire a changé de nom, faites un

 cd ../nvidia-graphics-drivers-190.53

* Il faut tout d'abord changer toutes les références de 173.14.09 en 190.53 et les appels aux fichiers .run
** Editez le fichier debian/upstream_info (avec emacs bien sûr) et modifiez en conséquence les valeurs RELEASE et NEXTVER (en 190.53 et 190.54)
** Dans ce même fichier, changez les extensions pkg0 des fichiers NVIDIA-???.run et des répertoires correspondants. Dans notre exemple, cela revient à remplacer le pkg0 en pkg1. Attention, il y a plusieurs références, faites une recherche sur pkg dans ce fichier.
** Soyez courageux, virez tous les patches : vous avez décidé d'installer le système de NVIDIA. Les patches peuvent être inadaptés:&lt;br /&gt;&lt;br /&gt;

 $ rm -R patches*

&lt;br /&gt;&lt;br /&gt;(Si à ce stade vous avez effacé votre disque dur parce que vous n'étiez pas dans le bon niveau et que vous travailliez en root, '''positivez''' : vous venez d'apprendre pourquoi on ne travaille '''jamais''' en root).
* Effacez les vieux .run inutiles&lt;br /&gt;&lt;br /&gt;

 $ cd ..
 $ rm NVIDIA-Linux-x86-173.14.09-pkg0.run NVIDIA-Linux-x86_64-173.14.09-pkg2.run

&lt;br /&gt;&lt;br /&gt;
* Lâchez-vous enfin en lançant la construction des paquets:&lt;br /&gt;&lt;br /&gt;

 $ fakeroot dpkg-buildpackage -us -uc

&lt;br /&gt;&lt;br /&gt;
* Regardez dans le répertoire au-dessus, vous avez :
** Les paquets:&lt;br /&gt;
 nvidia-glx-ia32_190.53_amd64.deb
 nvidia-glx-dev_190.53_amd64.deb
 nvidia-glx_190.53_amd64.deb
 nvidia-kernel-source_190.53_amd64.deb
** Les sources:
 nvidia-graphics-drivers_190.53_amd64.changes
 nvidia-graphics-drivers_190.53.dsc
 nvidia-graphics-drivers_190.53.tar.gz

Les premiers sont les librairies et drivers xorg (les glx) ainsi que les sources pour faire le module nvidia avec module assistant, les seconds sont les sources de vos paquets. En cas de problème, vous pouvez les rectifier.

[[Utilisateur:fran.b|François Boisson]]
[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>j58dwgztylvt27hkdlfkb56fymnv4js</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1650</id>
      <parentid>1602</parentid>
      <timestamp>2010-07-06T09:17:31Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Annulation des modifications 1602 de [[Special:Contributions/Lol|Lol]] ([[User talk:Lol|discussion]])</comment>
      <text xml:space="preserve" bytes="11285">== I - Présentation ==

Avant tout sur Debian, il y a deux types de cartes nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(Chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe que vous n'avez jamais rien compilé ou que l'installation est nouvelle. Si ce n'est pas le cas, assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur. Recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libre, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :

  ##stable
  deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
  deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

Bon ça c'est pour les gens 'stable'. Si vous êtes moins conservateur, vous êtes surement en SID. La version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépôts. Pour vérifier que votre sources.list vous permet d'y accéder tapez :

   $ apt-cache policy nvidia-kernel-source

Qui devrait vous donner quelque chose comme ça :

   nvidia-kernel-source:
     Installé : 180.29-1
     Candidat : 180.29-1
    Table de version :
    *** 180.29-1 0
           970 http://ftp.fr.debian.org sid/non-free Packages
           100 /var/lib/dpkg/status
        173.14.09-5 0
           500 http://ftp.fr.debian.org lenny/non-free Packages
           900 http://ftp.fr.debian.org squeeze/non-free Packages

Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un sources.list permettant de se sortir de n'importe quelle dépendance. Pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]

N'oubliez pas de mettre à jour la liste de vos paquets :

   # apt-get update

'''ATTENTION''' Si votre carte est basée sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique. Je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.

== III - Détection de votre carte graphique ==

La partie la plus délicate : quel est mon pilote de carte graphique ?

   $ lspci

mon résultat, sur mon super portable Siemens :

   ...
   03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
   ...

dans les [] vous avez le type de carte. Allez sur cette page [http://www.nvidia.fr/object/legacy_drivers_fr.html]
Si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknown device, vous devrez mettre à jour vos identifiants :

   # update-pciids

et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot;, veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite. Nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique :

Si vous êtes avec gnome :
   
   # /etc/init.d/gdm stop

Si vous êtes avec KDE :

   # /etc/init.d/kdm stop

Si vous n'avez ni gnome, ni KDE, je suppose que vous savez très bien comment faire  :wink: 

Puis :

   # nvidia-installer --uninstall
   # modprobe -r nvidia

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

   # find / -name &quot;*nvidia*&quot; -delete

== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, pour une carte legacy, remplacez les références à nvidia par les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy

Remarque : Les bons informaticiens, sont en général des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! Alors ils ont cru bon, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peu comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littéralement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;. Mais comprenez bien que l'abrévation a la même signification.

   $ su 
   # apt-get install module-assistant
   # m-a prepare
   # m-a clean nvidia-kernel

Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :

   # apt-get install -t unstable nvidia-kernel-source

La suite est la même :

   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf

   # nano /etc/X11/xorg.conf

Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf, vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)

   Section &quot;Device&quot;
       Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
       Driver         &quot;nv&quot;
   EndSection

Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
   Driver         &quot;nv&quot;
Par :
   Driver         &quot;nvidia&quot;
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :

Pour GNOME :

   # /etc/init.d/gdm restart

Pour KDE :
   # /etc/init.d/kdm restart
Ou si vous êtes sur de rien :

   # reboot

== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manipulations à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources. Ça évite pas mal de problèmes, mais si on voit :

   Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,

lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.

== ANNEXE 1 ==
Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :

   $ su
   # rm -rf /usr/src/modules/nvidia-kernel/
   # cd /usr/src
   # tar xjvf nvidia-kernel.tar.bz2
   # cd modules/nvidia-kernel/debian
   # cp control.template control
   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

Retournez à la partie V

[[Utilisateur:Debianhadic|Debianhadic]]

== ANNEXE 2 (Refaire des paquets .deb)==
NVIDIA a fait une mise à jour des drivers il y a 5 minutes. Vous êtes raisonnable (vous avez attendu 5 minutes) mais tout de même, vous voulez ces drivers même si cela peut ne pas marcher (si, ça n'est pas infaillible). Vous savez donc que ça peut tout casser mais tant pis, vous les voulez quand même et qui plus est sous forme de paquets (caprice ?). Bon, c'est faisable à partir des .run. La démarche est la suivante:

&lt;br /&gt;

Il vous faut installer les scripts de développement (paquet devscripts) et procéder comme suit:

&lt;br /&gt;

* Chargez les sources des paquets nvidia. Il faut bien évidemment une entrée deb-src dans le fichier sources.list&lt;br /&gt;Sous root: 

 # apt-get build-dep nvidia-glx

&lt;br /&gt;et sous votre login&lt;br /&gt;

 $ apt-get source nvidia-glx

&lt;br /&gt;&lt;br /&gt;Un répertoire nvidia-graphics-drivers-??? est créé (ici c'est nvidia-graphics-drivers-173.14.09)
* Chargez les .run correspondants. Pour amd64 il vous faut le .run i386 et amd64. Pour le i386, seul le .run 386 est nécessaire. Dans le doute, vous pouvez mettre les 2 si vous êtes inquiet. Dans notre exemple, ce sont les fichiers&lt;br /&gt;&lt;br /&gt;

 NVIDIA-Linux-x86-190.53-pkg1.run
et
 NVIDIA-Linux-x86_64-190.53-pkg2.run

&lt;br /&gt;Mettez ces fichiers dans le répertoire nvidia-graphics-drivers-173.14.09 et donnez leur les droits à l'éxécution (chmod +x)
* Allez dans ce répertoire et mettez la version à jour:&lt;br /&gt;&lt;br /&gt;

 $ dch -v 190.53

&lt;br /&gt;&lt;br /&gt;Le fichier changelog est ouvert en édition, tapez vos motivations et fermez le fichier. Le répertoire a changé de nom, faites un

 cd ../nvidia-graphics-drivers-190.53

* Il faut tout d'abord changer toutes les références de 173.14.09 en 190.53 et les appels aux fichiers .run
** Editez le fichier debian/upstream_info (avec emacs bien sûr) et modifiez en conséquence les valeurs RELEASE et NEXTVER (en 190.53 et 190.54)
** Dans ce même fichier, changez les extensions pkg0 des fichiers NVIDIA-???.run et des répertoires correspondants. Dans notre exemple, cela revient à remplacer le pkg0 en pkg1. Attention, il y a plusieurs références, faites une recherche sur pkg dans ce fichier.
** Soyez courageux, virez tous les patches : vous avez décidé d'installer le système de NVIDIA. Les patches peuvent être inadaptés:&lt;br /&gt;&lt;br /&gt;

 $ rm -R patches*

&lt;br /&gt;&lt;br /&gt;(Si à ce stade vous avez effacé votre disque dur parce que vous n'étiez pas dans le bon niveau et que vous travailliez en root, '''positivez''' : vous venez d'apprendre pourquoi on ne travaille '''jamais''' en root).
* Effacez les vieux .run inutiles&lt;br /&gt;&lt;br /&gt;

 $ cd ..
 $ rm NVIDIA-Linux-x86-173.14.09-pkg0.run NVIDIA-Linux-x86_64-173.14.09-pkg2.run

&lt;br /&gt;&lt;br /&gt;
* Lâchez-vous enfin en lançant la construction des paquets:&lt;br /&gt;&lt;br /&gt;

 $ fakeroot dpkg-buildpackage -us -uc

&lt;br /&gt;&lt;br /&gt;
* Regardez dans le répertoire au-dessus, vous avez :
** Les paquets:&lt;br /&gt;
 nvidia-glx-ia32_190.53_amd64.deb
 nvidia-glx-dev_190.53_amd64.deb
 nvidia-glx_190.53_amd64.deb
 nvidia-kernel-source_190.53_amd64.deb
** Les sources:
 nvidia-graphics-drivers_190.53_amd64.changes
 nvidia-graphics-drivers_190.53.dsc
 nvidia-graphics-drivers_190.53.tar.gz

Les premiers sont les librairies et drivers xorg (les glx) ainsi que les sources pour faire le module nvidia avec module assistant, les seconds sont les sources de vos paquets. En cas de problème, vous pouvez les rectifier.

[[Utilisateur:fran.b|François Boisson]]
[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>5szt38r7bwty2eg2gonag270zpkid6i</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1930</id>
      <parentid>1650</parentid>
      <timestamp>2010-08-13T13:36:13Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* IV - Compilation du module - Patch du noyau */</comment>
      <text xml:space="preserve" bytes="11286">== I - Présentation ==

Avant tout sur Debian, il y a deux types de cartes nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(Chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe que vous n'avez jamais rien compilé ou que l'installation est nouvelle. Si ce n'est pas le cas, assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur. Recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libre, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :

  ##stable
  deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
  deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

Bon ça c'est pour les gens 'stable'. Si vous êtes moins conservateur, vous êtes surement en SID. La version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépôts. Pour vérifier que votre sources.list vous permet d'y accéder tapez :

   $ apt-cache policy nvidia-kernel-source

Qui devrait vous donner quelque chose comme ça :

   nvidia-kernel-source:
     Installé : 180.29-1
     Candidat : 180.29-1
    Table de version :
    *** 180.29-1 0
           970 http://ftp.fr.debian.org sid/non-free Packages
           100 /var/lib/dpkg/status
        173.14.09-5 0
           500 http://ftp.fr.debian.org lenny/non-free Packages
           900 http://ftp.fr.debian.org squeeze/non-free Packages

Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un sources.list permettant de se sortir de n'importe quelle dépendance. Pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]

N'oubliez pas de mettre à jour la liste de vos paquets :

   # apt-get update

'''ATTENTION''' Si votre carte est basée sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique. Je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.

== III - Détection de votre carte graphique ==

La partie la plus délicate : quel est mon pilote de carte graphique ?

   $ lspci

mon résultat, sur mon super portable Siemens :

   ...
   03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
   ...

dans les [] vous avez le type de carte. Allez sur cette page [http://www.nvidia.fr/object/legacy_drivers_fr.html]
Si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknown device, vous devrez mettre à jour vos identifiants :

   # update-pciids

et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot;, veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite. Nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique :

Si vous êtes avec gnome :
   
   # /etc/init.d/gdm stop

Si vous êtes avec KDE :

   # /etc/init.d/kdm stop

Si vous n'avez ni gnome, ni KDE, je suppose que vous savez très bien comment faire  :wink: 

Puis :

   # nvidia-installer --uninstall
   # modprobe -r nvidia

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

   # find / -name &quot;*nvidia*&quot; -delete

== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, pour une carte legacy, remplacez les références à nvidia par les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy

Remarque : Les bons informaticiens, sont en général des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! Alors ils ont cru bon, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peu comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littéralement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;. Mais comprenez bien que l'abréviation a la même signification.

   $ su 
   # apt-get install module-assistant
   # m-a prepare
   # m-a clean nvidia-kernel

Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :

   # apt-get install -t unstable nvidia-kernel-source

La suite est la même :

   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf

   # nano /etc/X11/xorg.conf

Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf, vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)

   Section &quot;Device&quot;
       Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
       Driver         &quot;nv&quot;
   EndSection

Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
   Driver         &quot;nv&quot;
Par :
   Driver         &quot;nvidia&quot;
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :

Pour GNOME :

   # /etc/init.d/gdm restart

Pour KDE :
   # /etc/init.d/kdm restart
Ou si vous êtes sur de rien :

   # reboot

== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manipulations à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources. Ça évite pas mal de problèmes, mais si on voit :

   Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,

lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.

== ANNEXE 1 ==
Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :

   $ su
   # rm -rf /usr/src/modules/nvidia-kernel/
   # cd /usr/src
   # tar xjvf nvidia-kernel.tar.bz2
   # cd modules/nvidia-kernel/debian
   # cp control.template control
   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

Retournez à la partie V

[[Utilisateur:Debianhadic|Debianhadic]]

== ANNEXE 2 (Refaire des paquets .deb)==
NVIDIA a fait une mise à jour des drivers il y a 5 minutes. Vous êtes raisonnable (vous avez attendu 5 minutes) mais tout de même, vous voulez ces drivers même si cela peut ne pas marcher (si, ça n'est pas infaillible). Vous savez donc que ça peut tout casser mais tant pis, vous les voulez quand même et qui plus est sous forme de paquets (caprice ?). Bon, c'est faisable à partir des .run. La démarche est la suivante:

&lt;br /&gt;

Il vous faut installer les scripts de développement (paquet devscripts) et procéder comme suit:

&lt;br /&gt;

* Chargez les sources des paquets nvidia. Il faut bien évidemment une entrée deb-src dans le fichier sources.list&lt;br /&gt;Sous root: 

 # apt-get build-dep nvidia-glx

&lt;br /&gt;et sous votre login&lt;br /&gt;

 $ apt-get source nvidia-glx

&lt;br /&gt;&lt;br /&gt;Un répertoire nvidia-graphics-drivers-??? est créé (ici c'est nvidia-graphics-drivers-173.14.09)
* Chargez les .run correspondants. Pour amd64 il vous faut le .run i386 et amd64. Pour le i386, seul le .run 386 est nécessaire. Dans le doute, vous pouvez mettre les 2 si vous êtes inquiet. Dans notre exemple, ce sont les fichiers&lt;br /&gt;&lt;br /&gt;

 NVIDIA-Linux-x86-190.53-pkg1.run
et
 NVIDIA-Linux-x86_64-190.53-pkg2.run

&lt;br /&gt;Mettez ces fichiers dans le répertoire nvidia-graphics-drivers-173.14.09 et donnez leur les droits à l'éxécution (chmod +x)
* Allez dans ce répertoire et mettez la version à jour:&lt;br /&gt;&lt;br /&gt;

 $ dch -v 190.53

&lt;br /&gt;&lt;br /&gt;Le fichier changelog est ouvert en édition, tapez vos motivations et fermez le fichier. Le répertoire a changé de nom, faites un

 cd ../nvidia-graphics-drivers-190.53

* Il faut tout d'abord changer toutes les références de 173.14.09 en 190.53 et les appels aux fichiers .run
** Editez le fichier debian/upstream_info (avec emacs bien sûr) et modifiez en conséquence les valeurs RELEASE et NEXTVER (en 190.53 et 190.54)
** Dans ce même fichier, changez les extensions pkg0 des fichiers NVIDIA-???.run et des répertoires correspondants. Dans notre exemple, cela revient à remplacer le pkg0 en pkg1. Attention, il y a plusieurs références, faites une recherche sur pkg dans ce fichier.
** Soyez courageux, virez tous les patches : vous avez décidé d'installer le système de NVIDIA. Les patches peuvent être inadaptés:&lt;br /&gt;&lt;br /&gt;

 $ rm -R patches*

&lt;br /&gt;&lt;br /&gt;(Si à ce stade vous avez effacé votre disque dur parce que vous n'étiez pas dans le bon niveau et que vous travailliez en root, '''positivez''' : vous venez d'apprendre pourquoi on ne travaille '''jamais''' en root).
* Effacez les vieux .run inutiles&lt;br /&gt;&lt;br /&gt;

 $ cd ..
 $ rm NVIDIA-Linux-x86-173.14.09-pkg0.run NVIDIA-Linux-x86_64-173.14.09-pkg2.run

&lt;br /&gt;&lt;br /&gt;
* Lâchez-vous enfin en lançant la construction des paquets:&lt;br /&gt;&lt;br /&gt;

 $ fakeroot dpkg-buildpackage -us -uc

&lt;br /&gt;&lt;br /&gt;
* Regardez dans le répertoire au-dessus, vous avez :
** Les paquets:&lt;br /&gt;
 nvidia-glx-ia32_190.53_amd64.deb
 nvidia-glx-dev_190.53_amd64.deb
 nvidia-glx_190.53_amd64.deb
 nvidia-kernel-source_190.53_amd64.deb
** Les sources:
 nvidia-graphics-drivers_190.53_amd64.changes
 nvidia-graphics-drivers_190.53.dsc
 nvidia-graphics-drivers_190.53.tar.gz

Les premiers sont les librairies et drivers xorg (les glx) ainsi que les sources pour faire le module nvidia avec module assistant, les seconds sont les sources de vos paquets. En cas de problème, vous pouvez les rectifier.

[[Utilisateur:fran.b|François Boisson]]
[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>k37btacpudzp4ooqtg8w1pq6sbvsjra</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3024</id>
      <parentid>1930</parentid>
      <timestamp>2011-06-05T21:38:06Z</timestamp>
      <contributor>
        <username>David96</username>
        <id>134</id>
      </contributor>
      <minor/>
      <comment>lspci, remplacé par lspci | grep -i vga  &gt; plus rapide :)</comment>
      <text xml:space="preserve" bytes="11300">== I - Présentation ==

Avant tout sur Debian, il y a deux types de cartes nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(Chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe que vous n'avez jamais rien compilé ou que l'installation est nouvelle. Si ce n'est pas le cas, assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur. Recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libre, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :

  ##stable
  deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
  deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

Bon ça c'est pour les gens 'stable'. Si vous êtes moins conservateur, vous êtes surement en SID. La version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépôts. Pour vérifier que votre sources.list vous permet d'y accéder tapez :

   $ apt-cache policy nvidia-kernel-source

Qui devrait vous donner quelque chose comme ça :

   nvidia-kernel-source:
     Installé : 180.29-1
     Candidat : 180.29-1
    Table de version :
    *** 180.29-1 0
           970 http://ftp.fr.debian.org sid/non-free Packages
           100 /var/lib/dpkg/status
        173.14.09-5 0
           500 http://ftp.fr.debian.org lenny/non-free Packages
           900 http://ftp.fr.debian.org squeeze/non-free Packages

Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un sources.list permettant de se sortir de n'importe quelle dépendance. Pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]

N'oubliez pas de mettre à jour la liste de vos paquets :

   # apt-get update

'''ATTENTION''' Si votre carte est basée sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique. Je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.

== III - Détection de votre carte graphique ==

La partie la plus délicate : quel est mon pilote de carte graphique ?

   $ lspci | grep -i vga

mon résultat, sur mon super portable Siemens :

   ...
   03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
   ...

dans les [] vous avez le type de carte. Allez sur cette page [http://www.nvidia.fr/object/legacy_drivers_fr.html]
Si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknown device, vous devrez mettre à jour vos identifiants :

   # update-pciids

et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot;, veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite. Nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique :

Si vous êtes avec gnome :
   
   # /etc/init.d/gdm stop

Si vous êtes avec KDE :

   # /etc/init.d/kdm stop

Si vous n'avez ni gnome, ni KDE, je suppose que vous savez très bien comment faire  :wink: 

Puis :

   # nvidia-installer --uninstall
   # modprobe -r nvidia

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

   # find / -name &quot;*nvidia*&quot; -delete

== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, pour une carte legacy, remplacez les références à nvidia par les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy

Remarque : Les bons informaticiens, sont en général des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! Alors ils ont cru bon, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peu comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littéralement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;. Mais comprenez bien que l'abréviation a la même signification.

   $ su 
   # apt-get install module-assistant
   # m-a prepare
   # m-a clean nvidia-kernel

Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :

   # apt-get install -t unstable nvidia-kernel-source

La suite est la même :

   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf

   # nano /etc/X11/xorg.conf

Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf, vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)

   Section &quot;Device&quot;
       Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
       Driver         &quot;nv&quot;
   EndSection

Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
   Driver         &quot;nv&quot;
Par :
   Driver         &quot;nvidia&quot;
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :

Pour GNOME :

   # /etc/init.d/gdm restart

Pour KDE :
   # /etc/init.d/kdm restart
Ou si vous êtes sur de rien :

   # reboot

== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manipulations à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources. Ça évite pas mal de problèmes, mais si on voit :

   Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,

lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.

== ANNEXE 1 ==
Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :

   $ su
   # rm -rf /usr/src/modules/nvidia-kernel/
   # cd /usr/src
   # tar xjvf nvidia-kernel.tar.bz2
   # cd modules/nvidia-kernel/debian
   # cp control.template control
   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

Retournez à la partie V

[[Utilisateur:Debianhadic|Debianhadic]]

== ANNEXE 2 (Refaire des paquets .deb)==
NVIDIA a fait une mise à jour des drivers il y a 5 minutes. Vous êtes raisonnable (vous avez attendu 5 minutes) mais tout de même, vous voulez ces drivers même si cela peut ne pas marcher (si, ça n'est pas infaillible). Vous savez donc que ça peut tout casser mais tant pis, vous les voulez quand même et qui plus est sous forme de paquets (caprice ?). Bon, c'est faisable à partir des .run. La démarche est la suivante:

&lt;br /&gt;

Il vous faut installer les scripts de développement (paquet devscripts) et procéder comme suit:

&lt;br /&gt;

* Chargez les sources des paquets nvidia. Il faut bien évidemment une entrée deb-src dans le fichier sources.list&lt;br /&gt;Sous root: 

 # apt-get build-dep nvidia-glx

&lt;br /&gt;et sous votre login&lt;br /&gt;

 $ apt-get source nvidia-glx

&lt;br /&gt;&lt;br /&gt;Un répertoire nvidia-graphics-drivers-??? est créé (ici c'est nvidia-graphics-drivers-173.14.09)
* Chargez les .run correspondants. Pour amd64 il vous faut le .run i386 et amd64. Pour le i386, seul le .run 386 est nécessaire. Dans le doute, vous pouvez mettre les 2 si vous êtes inquiet. Dans notre exemple, ce sont les fichiers&lt;br /&gt;&lt;br /&gt;

 NVIDIA-Linux-x86-190.53-pkg1.run
et
 NVIDIA-Linux-x86_64-190.53-pkg2.run

&lt;br /&gt;Mettez ces fichiers dans le répertoire nvidia-graphics-drivers-173.14.09 et donnez leur les droits à l'éxécution (chmod +x)
* Allez dans ce répertoire et mettez la version à jour:&lt;br /&gt;&lt;br /&gt;

 $ dch -v 190.53

&lt;br /&gt;&lt;br /&gt;Le fichier changelog est ouvert en édition, tapez vos motivations et fermez le fichier. Le répertoire a changé de nom, faites un

 cd ../nvidia-graphics-drivers-190.53

* Il faut tout d'abord changer toutes les références de 173.14.09 en 190.53 et les appels aux fichiers .run
** Editez le fichier debian/upstream_info (avec emacs bien sûr) et modifiez en conséquence les valeurs RELEASE et NEXTVER (en 190.53 et 190.54)
** Dans ce même fichier, changez les extensions pkg0 des fichiers NVIDIA-???.run et des répertoires correspondants. Dans notre exemple, cela revient à remplacer le pkg0 en pkg1. Attention, il y a plusieurs références, faites une recherche sur pkg dans ce fichier.
** Soyez courageux, virez tous les patches : vous avez décidé d'installer le système de NVIDIA. Les patches peuvent être inadaptés:&lt;br /&gt;&lt;br /&gt;

 $ rm -R patches*

&lt;br /&gt;&lt;br /&gt;(Si à ce stade vous avez effacé votre disque dur parce que vous n'étiez pas dans le bon niveau et que vous travailliez en root, '''positivez''' : vous venez d'apprendre pourquoi on ne travaille '''jamais''' en root).
* Effacez les vieux .run inutiles&lt;br /&gt;&lt;br /&gt;

 $ cd ..
 $ rm NVIDIA-Linux-x86-173.14.09-pkg0.run NVIDIA-Linux-x86_64-173.14.09-pkg2.run

&lt;br /&gt;&lt;br /&gt;
* Lâchez-vous enfin en lançant la construction des paquets:&lt;br /&gt;&lt;br /&gt;

 $ fakeroot dpkg-buildpackage -us -uc

&lt;br /&gt;&lt;br /&gt;
* Regardez dans le répertoire au-dessus, vous avez :
** Les paquets:&lt;br /&gt;
 nvidia-glx-ia32_190.53_amd64.deb
 nvidia-glx-dev_190.53_amd64.deb
 nvidia-glx_190.53_amd64.deb
 nvidia-kernel-source_190.53_amd64.deb
** Les sources:
 nvidia-graphics-drivers_190.53_amd64.changes
 nvidia-graphics-drivers_190.53.dsc
 nvidia-graphics-drivers_190.53.tar.gz

Les premiers sont les librairies et drivers xorg (les glx) ainsi que les sources pour faire le module nvidia avec module assistant, les seconds sont les sources de vos paquets. En cas de problème, vous pouvez les rectifier.

[[Utilisateur:fran.b|François Boisson]]
[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>bvl0t30i3s8ui431lrsucxe2yb5u70n</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4037</id>
      <parentid>3024</parentid>
      <timestamp>2012-04-23T12:41:04Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>/* I - Présentation */</comment>
      <text xml:space="preserve" bytes="11328">== I - Présentation ==

Avant tout sur Debian, il y a deux types de [[Matériel::Carte vidéo|cartes]] nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(Chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe que vous n'avez jamais rien compilé ou que l'installation est nouvelle. Si ce n'est pas le cas, assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur. Recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libre, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :

  ##stable
  deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
  deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

Bon ça c'est pour les gens 'stable'. Si vous êtes moins conservateur, vous êtes surement en SID. La version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépôts. Pour vérifier que votre sources.list vous permet d'y accéder tapez :

   $ apt-cache policy nvidia-kernel-source

Qui devrait vous donner quelque chose comme ça :

   nvidia-kernel-source:
     Installé : 180.29-1
     Candidat : 180.29-1
    Table de version :
    *** 180.29-1 0
           970 http://ftp.fr.debian.org sid/non-free Packages
           100 /var/lib/dpkg/status
        173.14.09-5 0
           500 http://ftp.fr.debian.org lenny/non-free Packages
           900 http://ftp.fr.debian.org squeeze/non-free Packages

Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un sources.list permettant de se sortir de n'importe quelle dépendance. Pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]

N'oubliez pas de mettre à jour la liste de vos paquets :

   # apt-get update

'''ATTENTION''' Si votre carte est basée sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique. Je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.

== III - Détection de votre carte graphique ==

La partie la plus délicate : quel est mon pilote de carte graphique ?

   $ lspci | grep -i vga

mon résultat, sur mon super portable Siemens :

   ...
   03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
   ...

dans les [] vous avez le type de carte. Allez sur cette page [http://www.nvidia.fr/object/legacy_drivers_fr.html]
Si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknown device, vous devrez mettre à jour vos identifiants :

   # update-pciids

et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot;, veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite. Nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique :

Si vous êtes avec gnome :
   
   # /etc/init.d/gdm stop

Si vous êtes avec KDE :

   # /etc/init.d/kdm stop

Si vous n'avez ni gnome, ni KDE, je suppose que vous savez très bien comment faire  :wink: 

Puis :

   # nvidia-installer --uninstall
   # modprobe -r nvidia

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

   # find / -name &quot;*nvidia*&quot; -delete

== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, pour une carte legacy, remplacez les références à nvidia par les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy

Remarque : Les bons informaticiens, sont en général des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! Alors ils ont cru bon, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peu comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littéralement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;. Mais comprenez bien que l'abréviation a la même signification.

   $ su 
   # apt-get install module-assistant
   # m-a prepare
   # m-a clean nvidia-kernel

Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :

   # apt-get install -t unstable nvidia-kernel-source

La suite est la même :

   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf

   # nano /etc/X11/xorg.conf

Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf, vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)

   Section &quot;Device&quot;
       Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
       Driver         &quot;nv&quot;
   EndSection

Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
   Driver         &quot;nv&quot;
Par :
   Driver         &quot;nvidia&quot;
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :

Pour GNOME :

   # /etc/init.d/gdm restart

Pour KDE :
   # /etc/init.d/kdm restart
Ou si vous êtes sur de rien :

   # reboot

== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manipulations à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources. Ça évite pas mal de problèmes, mais si on voit :

   Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,

lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.

== ANNEXE 1 ==
Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :

   $ su
   # rm -rf /usr/src/modules/nvidia-kernel/
   # cd /usr/src
   # tar xjvf nvidia-kernel.tar.bz2
   # cd modules/nvidia-kernel/debian
   # cp control.template control
   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

Retournez à la partie V

[[Utilisateur:Debianhadic|Debianhadic]]

== ANNEXE 2 (Refaire des paquets .deb)==
NVIDIA a fait une mise à jour des drivers il y a 5 minutes. Vous êtes raisonnable (vous avez attendu 5 minutes) mais tout de même, vous voulez ces drivers même si cela peut ne pas marcher (si, ça n'est pas infaillible). Vous savez donc que ça peut tout casser mais tant pis, vous les voulez quand même et qui plus est sous forme de paquets (caprice ?). Bon, c'est faisable à partir des .run. La démarche est la suivante:

&lt;br /&gt;

Il vous faut installer les scripts de développement (paquet devscripts) et procéder comme suit:

&lt;br /&gt;

* Chargez les sources des paquets nvidia. Il faut bien évidemment une entrée deb-src dans le fichier sources.list&lt;br /&gt;Sous root: 

 # apt-get build-dep nvidia-glx

&lt;br /&gt;et sous votre login&lt;br /&gt;

 $ apt-get source nvidia-glx

&lt;br /&gt;&lt;br /&gt;Un répertoire nvidia-graphics-drivers-??? est créé (ici c'est nvidia-graphics-drivers-173.14.09)
* Chargez les .run correspondants. Pour amd64 il vous faut le .run i386 et amd64. Pour le i386, seul le .run 386 est nécessaire. Dans le doute, vous pouvez mettre les 2 si vous êtes inquiet. Dans notre exemple, ce sont les fichiers&lt;br /&gt;&lt;br /&gt;

 NVIDIA-Linux-x86-190.53-pkg1.run
et
 NVIDIA-Linux-x86_64-190.53-pkg2.run

&lt;br /&gt;Mettez ces fichiers dans le répertoire nvidia-graphics-drivers-173.14.09 et donnez leur les droits à l'éxécution (chmod +x)
* Allez dans ce répertoire et mettez la version à jour:&lt;br /&gt;&lt;br /&gt;

 $ dch -v 190.53

&lt;br /&gt;&lt;br /&gt;Le fichier changelog est ouvert en édition, tapez vos motivations et fermez le fichier. Le répertoire a changé de nom, faites un

 cd ../nvidia-graphics-drivers-190.53

* Il faut tout d'abord changer toutes les références de 173.14.09 en 190.53 et les appels aux fichiers .run
** Editez le fichier debian/upstream_info (avec emacs bien sûr) et modifiez en conséquence les valeurs RELEASE et NEXTVER (en 190.53 et 190.54)
** Dans ce même fichier, changez les extensions pkg0 des fichiers NVIDIA-???.run et des répertoires correspondants. Dans notre exemple, cela revient à remplacer le pkg0 en pkg1. Attention, il y a plusieurs références, faites une recherche sur pkg dans ce fichier.
** Soyez courageux, virez tous les patches : vous avez décidé d'installer le système de NVIDIA. Les patches peuvent être inadaptés:&lt;br /&gt;&lt;br /&gt;

 $ rm -R patches*

&lt;br /&gt;&lt;br /&gt;(Si à ce stade vous avez effacé votre disque dur parce que vous n'étiez pas dans le bon niveau et que vous travailliez en root, '''positivez''' : vous venez d'apprendre pourquoi on ne travaille '''jamais''' en root).
* Effacez les vieux .run inutiles&lt;br /&gt;&lt;br /&gt;

 $ cd ..
 $ rm NVIDIA-Linux-x86-173.14.09-pkg0.run NVIDIA-Linux-x86_64-173.14.09-pkg2.run

&lt;br /&gt;&lt;br /&gt;
* Lâchez-vous enfin en lançant la construction des paquets:&lt;br /&gt;&lt;br /&gt;

 $ fakeroot dpkg-buildpackage -us -uc

&lt;br /&gt;&lt;br /&gt;
* Regardez dans le répertoire au-dessus, vous avez :
** Les paquets:&lt;br /&gt;
 nvidia-glx-ia32_190.53_amd64.deb
 nvidia-glx-dev_190.53_amd64.deb
 nvidia-glx_190.53_amd64.deb
 nvidia-kernel-source_190.53_amd64.deb
** Les sources:
 nvidia-graphics-drivers_190.53_amd64.changes
 nvidia-graphics-drivers_190.53.dsc
 nvidia-graphics-drivers_190.53.tar.gz

Les premiers sont les librairies et drivers xorg (les glx) ainsi que les sources pour faire le module nvidia avec module assistant, les seconds sont les sources de vos paquets. En cas de problème, vous pouvez les rectifier.

[[Utilisateur:fran.b|François Boisson]]
[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>n50mrifo2e2zv3hfjil60wt9xrav7a2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5834</id>
      <parentid>4037</parentid>
      <timestamp>2014-09-24T14:15:57Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* III - Détection de votre carte graphique */ commande générique pour stopper le gestionnaire de session</comment>
      <text xml:space="preserve" bytes="11244">== I - Présentation ==

Avant tout sur Debian, il y a deux types de [[Matériel::Carte vidéo|cartes]] nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(Chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe que vous n'avez jamais rien compilé ou que l'installation est nouvelle. Si ce n'est pas le cas, assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur. Recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libre, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :

  ##stable
  deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
  deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

Bon ça c'est pour les gens 'stable'. Si vous êtes moins conservateur, vous êtes surement en SID. La version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépôts. Pour vérifier que votre sources.list vous permet d'y accéder tapez :

   $ apt-cache policy nvidia-kernel-source

Qui devrait vous donner quelque chose comme ça :

   nvidia-kernel-source:
     Installé : 180.29-1
     Candidat : 180.29-1
    Table de version :
    *** 180.29-1 0
           970 http://ftp.fr.debian.org sid/non-free Packages
           100 /var/lib/dpkg/status
        173.14.09-5 0
           500 http://ftp.fr.debian.org lenny/non-free Packages
           900 http://ftp.fr.debian.org squeeze/non-free Packages

Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un sources.list permettant de se sortir de n'importe quelle dépendance. Pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]

N'oubliez pas de mettre à jour la liste de vos paquets :

   # apt-get update

'''ATTENTION''' Si votre carte est basée sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique. Je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.

== III - Détection de votre carte graphique ==

La partie la plus délicate : quel est mon pilote de carte graphique ?

   $ lspci | grep -i vga

mon résultat, sur mon super portable Siemens :

   ...
   03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
   ...

dans les [] vous avez le type de carte. Allez sur cette page [http://www.nvidia.fr/object/legacy_drivers_fr.html]
Si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknown device, vous devrez mettre à jour vos identifiants :

   # update-pciids

et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot;, veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite. Nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique en stoppant le gestionnaire de session graphique :

   # service $(basename $(cat /etc/X11/default-display-manager)) stop

Puis :

   # nvidia-installer --uninstall
   # modprobe -r nvidia

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

   # find / -name &quot;*nvidia*&quot; -delete

== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, pour une carte legacy, remplacez les références à nvidia par les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy

Remarque : Les bons informaticiens, sont en général des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! Alors ils ont cru bon, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peu comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littéralement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;. Mais comprenez bien que l'abréviation a la même signification.

   $ su 
   # apt-get install module-assistant
   # m-a prepare
   # m-a clean nvidia-kernel

Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :

   # apt-get install -t unstable nvidia-kernel-source

La suite est la même :

   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf

   # nano /etc/X11/xorg.conf

Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf, vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)

   Section &quot;Device&quot;
       Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
       Driver         &quot;nv&quot;
   EndSection

Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
   Driver         &quot;nv&quot;
Par :
   Driver         &quot;nvidia&quot;
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :

Pour GNOME :

   # /etc/init.d/gdm restart

Pour KDE :
   # /etc/init.d/kdm restart
Ou si vous êtes sur de rien :

   # reboot

== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manipulations à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources. Ça évite pas mal de problèmes, mais si on voit :

   Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,

lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.

== ANNEXE 1 ==
Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :

   $ su
   # rm -rf /usr/src/modules/nvidia-kernel/
   # cd /usr/src
   # tar xjvf nvidia-kernel.tar.bz2
   # cd modules/nvidia-kernel/debian
   # cp control.template control
   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

Retournez à la partie V

[[Utilisateur:Debianhadic|Debianhadic]]

== ANNEXE 2 (Refaire des paquets .deb)==
NVIDIA a fait une mise à jour des drivers il y a 5 minutes. Vous êtes raisonnable (vous avez attendu 5 minutes) mais tout de même, vous voulez ces drivers même si cela peut ne pas marcher (si, ça n'est pas infaillible). Vous savez donc que ça peut tout casser mais tant pis, vous les voulez quand même et qui plus est sous forme de paquets (caprice ?). Bon, c'est faisable à partir des .run. La démarche est la suivante:

&lt;br /&gt;

Il vous faut installer les scripts de développement (paquet devscripts) et procéder comme suit:

&lt;br /&gt;

* Chargez les sources des paquets nvidia. Il faut bien évidemment une entrée deb-src dans le fichier sources.list&lt;br /&gt;Sous root: 

 # apt-get build-dep nvidia-glx

&lt;br /&gt;et sous votre login&lt;br /&gt;

 $ apt-get source nvidia-glx

&lt;br /&gt;&lt;br /&gt;Un répertoire nvidia-graphics-drivers-??? est créé (ici c'est nvidia-graphics-drivers-173.14.09)
* Chargez les .run correspondants. Pour amd64 il vous faut le .run i386 et amd64. Pour le i386, seul le .run 386 est nécessaire. Dans le doute, vous pouvez mettre les 2 si vous êtes inquiet. Dans notre exemple, ce sont les fichiers&lt;br /&gt;&lt;br /&gt;

 NVIDIA-Linux-x86-190.53-pkg1.run
et
 NVIDIA-Linux-x86_64-190.53-pkg2.run

&lt;br /&gt;Mettez ces fichiers dans le répertoire nvidia-graphics-drivers-173.14.09 et donnez leur les droits à l'éxécution (chmod +x)
* Allez dans ce répertoire et mettez la version à jour:&lt;br /&gt;&lt;br /&gt;

 $ dch -v 190.53

&lt;br /&gt;&lt;br /&gt;Le fichier changelog est ouvert en édition, tapez vos motivations et fermez le fichier. Le répertoire a changé de nom, faites un

 cd ../nvidia-graphics-drivers-190.53

* Il faut tout d'abord changer toutes les références de 173.14.09 en 190.53 et les appels aux fichiers .run
** Editez le fichier debian/upstream_info (avec emacs bien sûr) et modifiez en conséquence les valeurs RELEASE et NEXTVER (en 190.53 et 190.54)
** Dans ce même fichier, changez les extensions pkg0 des fichiers NVIDIA-???.run et des répertoires correspondants. Dans notre exemple, cela revient à remplacer le pkg0 en pkg1. Attention, il y a plusieurs références, faites une recherche sur pkg dans ce fichier.
** Soyez courageux, virez tous les patches : vous avez décidé d'installer le système de NVIDIA. Les patches peuvent être inadaptés:&lt;br /&gt;&lt;br /&gt;

 $ rm -R patches*

&lt;br /&gt;&lt;br /&gt;(Si à ce stade vous avez effacé votre disque dur parce que vous n'étiez pas dans le bon niveau et que vous travailliez en root, '''positivez''' : vous venez d'apprendre pourquoi on ne travaille '''jamais''' en root).
* Effacez les vieux .run inutiles&lt;br /&gt;&lt;br /&gt;

 $ cd ..
 $ rm NVIDIA-Linux-x86-173.14.09-pkg0.run NVIDIA-Linux-x86_64-173.14.09-pkg2.run

&lt;br /&gt;&lt;br /&gt;
* Lâchez-vous enfin en lançant la construction des paquets:&lt;br /&gt;&lt;br /&gt;

 $ fakeroot dpkg-buildpackage -us -uc

&lt;br /&gt;&lt;br /&gt;
* Regardez dans le répertoire au-dessus, vous avez :
** Les paquets:&lt;br /&gt;
 nvidia-glx-ia32_190.53_amd64.deb
 nvidia-glx-dev_190.53_amd64.deb
 nvidia-glx_190.53_amd64.deb
 nvidia-kernel-source_190.53_amd64.deb
** Les sources:
 nvidia-graphics-drivers_190.53_amd64.changes
 nvidia-graphics-drivers_190.53.dsc
 nvidia-graphics-drivers_190.53.tar.gz

Les premiers sont les librairies et drivers xorg (les glx) ainsi que les sources pour faire le module nvidia avec module assistant, les seconds sont les sources de vos paquets. En cas de problème, vous pouvez les rectifier.

[[Utilisateur:fran.b|François Boisson]]
[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>ku2798kh53c3qq1wa5mgfyid7zutvux</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5835</id>
      <parentid>5834</parentid>
      <timestamp>2014-09-26T16:55:11Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* III - Détection de votre carte graphique */ chg stop -&gt; restart</comment>
      <text xml:space="preserve" bytes="11247">== I - Présentation ==

Avant tout sur Debian, il y a deux types de [[Matériel::Carte vidéo|cartes]] nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(Chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe que vous n'avez jamais rien compilé ou que l'installation est nouvelle. Si ce n'est pas le cas, assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur. Recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libre, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :

  ##stable
  deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
  deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

Bon ça c'est pour les gens 'stable'. Si vous êtes moins conservateur, vous êtes surement en SID. La version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépôts. Pour vérifier que votre sources.list vous permet d'y accéder tapez :

   $ apt-cache policy nvidia-kernel-source

Qui devrait vous donner quelque chose comme ça :

   nvidia-kernel-source:
     Installé : 180.29-1
     Candidat : 180.29-1
    Table de version :
    *** 180.29-1 0
           970 http://ftp.fr.debian.org sid/non-free Packages
           100 /var/lib/dpkg/status
        173.14.09-5 0
           500 http://ftp.fr.debian.org lenny/non-free Packages
           900 http://ftp.fr.debian.org squeeze/non-free Packages

Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un sources.list permettant de se sortir de n'importe quelle dépendance. Pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]

N'oubliez pas de mettre à jour la liste de vos paquets :

   # apt-get update

'''ATTENTION''' Si votre carte est basée sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique. Je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.

== III - Détection de votre carte graphique ==

La partie la plus délicate : quel est mon pilote de carte graphique ?

   $ lspci | grep -i vga

mon résultat, sur mon super portable Siemens :

   ...
   03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
   ...

dans les [] vous avez le type de carte. Allez sur cette page [http://www.nvidia.fr/object/legacy_drivers_fr.html]
Si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknown device, vous devrez mettre à jour vos identifiants :

   # update-pciids

et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot;, veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite. Nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique en stoppant le gestionnaire de session graphique :

   # service $(basename $(cat /etc/X11/default-display-manager)) restart

Puis :

   # nvidia-installer --uninstall
   # modprobe -r nvidia

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

   # find / -name &quot;*nvidia*&quot; -delete

== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, pour une carte legacy, remplacez les références à nvidia par les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy

Remarque : Les bons informaticiens, sont en général des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! Alors ils ont cru bon, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peu comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littéralement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;. Mais comprenez bien que l'abréviation a la même signification.

   $ su 
   # apt-get install module-assistant
   # m-a prepare
   # m-a clean nvidia-kernel

Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :

   # apt-get install -t unstable nvidia-kernel-source

La suite est la même :

   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf

   # nano /etc/X11/xorg.conf

Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf, vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)

   Section &quot;Device&quot;
       Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
       Driver         &quot;nv&quot;
   EndSection

Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
   Driver         &quot;nv&quot;
Par :
   Driver         &quot;nvidia&quot;
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :

Pour GNOME :

   # /etc/init.d/gdm restart

Pour KDE :
   # /etc/init.d/kdm restart
Ou si vous êtes sur de rien :

   # reboot

== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manipulations à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources. Ça évite pas mal de problèmes, mais si on voit :

   Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,

lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.

== ANNEXE 1 ==
Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :

   $ su
   # rm -rf /usr/src/modules/nvidia-kernel/
   # cd /usr/src
   # tar xjvf nvidia-kernel.tar.bz2
   # cd modules/nvidia-kernel/debian
   # cp control.template control
   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

Retournez à la partie V

[[Utilisateur:Debianhadic|Debianhadic]]

== ANNEXE 2 (Refaire des paquets .deb)==
NVIDIA a fait une mise à jour des drivers il y a 5 minutes. Vous êtes raisonnable (vous avez attendu 5 minutes) mais tout de même, vous voulez ces drivers même si cela peut ne pas marcher (si, ça n'est pas infaillible). Vous savez donc que ça peut tout casser mais tant pis, vous les voulez quand même et qui plus est sous forme de paquets (caprice ?). Bon, c'est faisable à partir des .run. La démarche est la suivante:

&lt;br /&gt;

Il vous faut installer les scripts de développement (paquet devscripts) et procéder comme suit:

&lt;br /&gt;

* Chargez les sources des paquets nvidia. Il faut bien évidemment une entrée deb-src dans le fichier sources.list&lt;br /&gt;Sous root: 

 # apt-get build-dep nvidia-glx

&lt;br /&gt;et sous votre login&lt;br /&gt;

 $ apt-get source nvidia-glx

&lt;br /&gt;&lt;br /&gt;Un répertoire nvidia-graphics-drivers-??? est créé (ici c'est nvidia-graphics-drivers-173.14.09)
* Chargez les .run correspondants. Pour amd64 il vous faut le .run i386 et amd64. Pour le i386, seul le .run 386 est nécessaire. Dans le doute, vous pouvez mettre les 2 si vous êtes inquiet. Dans notre exemple, ce sont les fichiers&lt;br /&gt;&lt;br /&gt;

 NVIDIA-Linux-x86-190.53-pkg1.run
et
 NVIDIA-Linux-x86_64-190.53-pkg2.run

&lt;br /&gt;Mettez ces fichiers dans le répertoire nvidia-graphics-drivers-173.14.09 et donnez leur les droits à l'éxécution (chmod +x)
* Allez dans ce répertoire et mettez la version à jour:&lt;br /&gt;&lt;br /&gt;

 $ dch -v 190.53

&lt;br /&gt;&lt;br /&gt;Le fichier changelog est ouvert en édition, tapez vos motivations et fermez le fichier. Le répertoire a changé de nom, faites un

 cd ../nvidia-graphics-drivers-190.53

* Il faut tout d'abord changer toutes les références de 173.14.09 en 190.53 et les appels aux fichiers .run
** Editez le fichier debian/upstream_info (avec emacs bien sûr) et modifiez en conséquence les valeurs RELEASE et NEXTVER (en 190.53 et 190.54)
** Dans ce même fichier, changez les extensions pkg0 des fichiers NVIDIA-???.run et des répertoires correspondants. Dans notre exemple, cela revient à remplacer le pkg0 en pkg1. Attention, il y a plusieurs références, faites une recherche sur pkg dans ce fichier.
** Soyez courageux, virez tous les patches : vous avez décidé d'installer le système de NVIDIA. Les patches peuvent être inadaptés:&lt;br /&gt;&lt;br /&gt;

 $ rm -R patches*

&lt;br /&gt;&lt;br /&gt;(Si à ce stade vous avez effacé votre disque dur parce que vous n'étiez pas dans le bon niveau et que vous travailliez en root, '''positivez''' : vous venez d'apprendre pourquoi on ne travaille '''jamais''' en root).
* Effacez les vieux .run inutiles&lt;br /&gt;&lt;br /&gt;

 $ cd ..
 $ rm NVIDIA-Linux-x86-173.14.09-pkg0.run NVIDIA-Linux-x86_64-173.14.09-pkg2.run

&lt;br /&gt;&lt;br /&gt;
* Lâchez-vous enfin en lançant la construction des paquets:&lt;br /&gt;&lt;br /&gt;

 $ fakeroot dpkg-buildpackage -us -uc

&lt;br /&gt;&lt;br /&gt;
* Regardez dans le répertoire au-dessus, vous avez :
** Les paquets:&lt;br /&gt;
 nvidia-glx-ia32_190.53_amd64.deb
 nvidia-glx-dev_190.53_amd64.deb
 nvidia-glx_190.53_amd64.deb
 nvidia-kernel-source_190.53_amd64.deb
** Les sources:
 nvidia-graphics-drivers_190.53_amd64.changes
 nvidia-graphics-drivers_190.53.dsc
 nvidia-graphics-drivers_190.53.tar.gz

Les premiers sont les librairies et drivers xorg (les glx) ainsi que les sources pour faire le module nvidia avec module assistant, les seconds sont les sources de vos paquets. En cas de problème, vous pouvez les rectifier.

[[Utilisateur:fran.b|François Boisson]]
[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>jiu58w30nhwg5ee81hx0hbwf5gllauy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5836</id>
      <parentid>5835</parentid>
      <timestamp>2014-09-26T16:56:26Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <comment>/* III - Détection de votre carte graphique */ chg restart -&gt; stop</comment>
      <text xml:space="preserve" bytes="11244">== I - Présentation ==

Avant tout sur Debian, il y a deux types de [[Matériel::Carte vidéo|cartes]] nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(Chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe que vous n'avez jamais rien compilé ou que l'installation est nouvelle. Si ce n'est pas le cas, assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur. Recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libre, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :

  ##stable
  deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
  deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

Bon ça c'est pour les gens 'stable'. Si vous êtes moins conservateur, vous êtes surement en SID. La version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépôts. Pour vérifier que votre sources.list vous permet d'y accéder tapez :

   $ apt-cache policy nvidia-kernel-source

Qui devrait vous donner quelque chose comme ça :

   nvidia-kernel-source:
     Installé : 180.29-1
     Candidat : 180.29-1
    Table de version :
    *** 180.29-1 0
           970 http://ftp.fr.debian.org sid/non-free Packages
           100 /var/lib/dpkg/status
        173.14.09-5 0
           500 http://ftp.fr.debian.org lenny/non-free Packages
           900 http://ftp.fr.debian.org squeeze/non-free Packages

Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un sources.list permettant de se sortir de n'importe quelle dépendance. Pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]

N'oubliez pas de mettre à jour la liste de vos paquets :

   # apt-get update

'''ATTENTION''' Si votre carte est basée sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique. Je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.

== III - Détection de votre carte graphique ==

La partie la plus délicate : quel est mon pilote de carte graphique ?

   $ lspci | grep -i vga

mon résultat, sur mon super portable Siemens :

   ...
   03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
   ...

dans les [] vous avez le type de carte. Allez sur cette page [http://www.nvidia.fr/object/legacy_drivers_fr.html]
Si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknown device, vous devrez mettre à jour vos identifiants :

   # update-pciids

et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot;, veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite. Nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique en stoppant le gestionnaire de session graphique :

   # service $(basename $(cat /etc/X11/default-display-manager)) stop

Puis :

   # nvidia-installer --uninstall
   # modprobe -r nvidia

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

   # find / -name &quot;*nvidia*&quot; -delete

== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, pour une carte legacy, remplacez les références à nvidia par les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy

Remarque : Les bons informaticiens, sont en général des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! Alors ils ont cru bon, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peu comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littéralement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;. Mais comprenez bien que l'abréviation a la même signification.

   $ su 
   # apt-get install module-assistant
   # m-a prepare
   # m-a clean nvidia-kernel

Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :

   # apt-get install -t unstable nvidia-kernel-source

La suite est la même :

   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf

   # nano /etc/X11/xorg.conf

Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf, vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)

   Section &quot;Device&quot;
       Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
       Driver         &quot;nv&quot;
   EndSection

Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
   Driver         &quot;nv&quot;
Par :
   Driver         &quot;nvidia&quot;
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :

Pour GNOME :

   # /etc/init.d/gdm restart

Pour KDE :
   # /etc/init.d/kdm restart
Ou si vous êtes sur de rien :

   # reboot

== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manipulations à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources. Ça évite pas mal de problèmes, mais si on voit :

   Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,

lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.

== ANNEXE 1 ==
Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :

   $ su
   # rm -rf /usr/src/modules/nvidia-kernel/
   # cd /usr/src
   # tar xjvf nvidia-kernel.tar.bz2
   # cd modules/nvidia-kernel/debian
   # cp control.template control
   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

Retournez à la partie V

[[Utilisateur:Debianhadic|Debianhadic]]

== ANNEXE 2 (Refaire des paquets .deb)==
NVIDIA a fait une mise à jour des drivers il y a 5 minutes. Vous êtes raisonnable (vous avez attendu 5 minutes) mais tout de même, vous voulez ces drivers même si cela peut ne pas marcher (si, ça n'est pas infaillible). Vous savez donc que ça peut tout casser mais tant pis, vous les voulez quand même et qui plus est sous forme de paquets (caprice ?). Bon, c'est faisable à partir des .run. La démarche est la suivante:

&lt;br /&gt;

Il vous faut installer les scripts de développement (paquet devscripts) et procéder comme suit:

&lt;br /&gt;

* Chargez les sources des paquets nvidia. Il faut bien évidemment une entrée deb-src dans le fichier sources.list&lt;br /&gt;Sous root: 

 # apt-get build-dep nvidia-glx

&lt;br /&gt;et sous votre login&lt;br /&gt;

 $ apt-get source nvidia-glx

&lt;br /&gt;&lt;br /&gt;Un répertoire nvidia-graphics-drivers-??? est créé (ici c'est nvidia-graphics-drivers-173.14.09)
* Chargez les .run correspondants. Pour amd64 il vous faut le .run i386 et amd64. Pour le i386, seul le .run 386 est nécessaire. Dans le doute, vous pouvez mettre les 2 si vous êtes inquiet. Dans notre exemple, ce sont les fichiers&lt;br /&gt;&lt;br /&gt;

 NVIDIA-Linux-x86-190.53-pkg1.run
et
 NVIDIA-Linux-x86_64-190.53-pkg2.run

&lt;br /&gt;Mettez ces fichiers dans le répertoire nvidia-graphics-drivers-173.14.09 et donnez leur les droits à l'éxécution (chmod +x)
* Allez dans ce répertoire et mettez la version à jour:&lt;br /&gt;&lt;br /&gt;

 $ dch -v 190.53

&lt;br /&gt;&lt;br /&gt;Le fichier changelog est ouvert en édition, tapez vos motivations et fermez le fichier. Le répertoire a changé de nom, faites un

 cd ../nvidia-graphics-drivers-190.53

* Il faut tout d'abord changer toutes les références de 173.14.09 en 190.53 et les appels aux fichiers .run
** Editez le fichier debian/upstream_info (avec emacs bien sûr) et modifiez en conséquence les valeurs RELEASE et NEXTVER (en 190.53 et 190.54)
** Dans ce même fichier, changez les extensions pkg0 des fichiers NVIDIA-???.run et des répertoires correspondants. Dans notre exemple, cela revient à remplacer le pkg0 en pkg1. Attention, il y a plusieurs références, faites une recherche sur pkg dans ce fichier.
** Soyez courageux, virez tous les patches : vous avez décidé d'installer le système de NVIDIA. Les patches peuvent être inadaptés:&lt;br /&gt;&lt;br /&gt;

 $ rm -R patches*

&lt;br /&gt;&lt;br /&gt;(Si à ce stade vous avez effacé votre disque dur parce que vous n'étiez pas dans le bon niveau et que vous travailliez en root, '''positivez''' : vous venez d'apprendre pourquoi on ne travaille '''jamais''' en root).
* Effacez les vieux .run inutiles&lt;br /&gt;&lt;br /&gt;

 $ cd ..
 $ rm NVIDIA-Linux-x86-173.14.09-pkg0.run NVIDIA-Linux-x86_64-173.14.09-pkg2.run

&lt;br /&gt;&lt;br /&gt;
* Lâchez-vous enfin en lançant la construction des paquets:&lt;br /&gt;&lt;br /&gt;

 $ fakeroot dpkg-buildpackage -us -uc

&lt;br /&gt;&lt;br /&gt;
* Regardez dans le répertoire au-dessus, vous avez :
** Les paquets:&lt;br /&gt;
 nvidia-glx-ia32_190.53_amd64.deb
 nvidia-glx-dev_190.53_amd64.deb
 nvidia-glx_190.53_amd64.deb
 nvidia-kernel-source_190.53_amd64.deb
** Les sources:
 nvidia-graphics-drivers_190.53_amd64.changes
 nvidia-graphics-drivers_190.53.dsc
 nvidia-graphics-drivers_190.53.tar.gz

Les premiers sont les librairies et drivers xorg (les glx) ainsi que les sources pour faire le module nvidia avec module assistant, les seconds sont les sources de vos paquets. En cas de problème, vous pouvez les rectifier.

[[Utilisateur:fran.b|François Boisson]]
[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>ku2798kh53c3qq1wa5mgfyid7zutvux</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5837</id>
      <parentid>5836</parentid>
      <timestamp>2014-09-26T16:58:57Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* V - Paramétrage de xorg.conf */</comment>
      <text xml:space="preserve" bytes="11290">== I - Présentation ==

Avant tout sur Debian, il y a deux types de [[Matériel::Carte vidéo|cartes]] nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(Chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe que vous n'avez jamais rien compilé ou que l'installation est nouvelle. Si ce n'est pas le cas, assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur. Recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libre, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :

  ##stable
  deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
  deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

Bon ça c'est pour les gens 'stable'. Si vous êtes moins conservateur, vous êtes surement en SID. La version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépôts. Pour vérifier que votre sources.list vous permet d'y accéder tapez :

   $ apt-cache policy nvidia-kernel-source

Qui devrait vous donner quelque chose comme ça :

   nvidia-kernel-source:
     Installé : 180.29-1
     Candidat : 180.29-1
    Table de version :
    *** 180.29-1 0
           970 http://ftp.fr.debian.org sid/non-free Packages
           100 /var/lib/dpkg/status
        173.14.09-5 0
           500 http://ftp.fr.debian.org lenny/non-free Packages
           900 http://ftp.fr.debian.org squeeze/non-free Packages

Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un sources.list permettant de se sortir de n'importe quelle dépendance. Pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]

N'oubliez pas de mettre à jour la liste de vos paquets :

   # apt-get update

'''ATTENTION''' Si votre carte est basée sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique. Je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.

== III - Détection de votre carte graphique ==

La partie la plus délicate : quel est mon pilote de carte graphique ?

   $ lspci | grep -i vga

mon résultat, sur mon super portable Siemens :

   ...
   03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
   ...

dans les [] vous avez le type de carte. Allez sur cette page [http://www.nvidia.fr/object/legacy_drivers_fr.html]
Si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknown device, vous devrez mettre à jour vos identifiants :

   # update-pciids

et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot;, veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite. Nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique en stoppant le gestionnaire de session graphique :

   # service $(basename $(cat /etc/X11/default-display-manager)) stop

Puis :

   # nvidia-installer --uninstall
   # modprobe -r nvidia

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

   # find / -name &quot;*nvidia*&quot; -delete

== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, pour une carte legacy, remplacez les références à nvidia par les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy

Remarque : Les bons informaticiens, sont en général des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! Alors ils ont cru bon, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peu comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littéralement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;. Mais comprenez bien que l'abréviation a la même signification.

   $ su 
   # apt-get install module-assistant
   # m-a prepare
   # m-a clean nvidia-kernel

Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :

   # apt-get install -t unstable nvidia-kernel-source

La suite est la même :

   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf

   # nano /etc/X11/xorg.conf

Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf, vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)

   Section &quot;Device&quot;
       Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
       Driver         &quot;nv&quot;
   EndSection

Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
   Driver         &quot;nv&quot;
Par :
   Driver         &quot;nvidia&quot;
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :

   # service $(basename $(cat /etc/X11/default-display-manager)) start

Ou redémarrez la machine, si vous n'utilisez pas de gestionnaire de session graphique :

   # reboot

== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manipulations à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources. Ça évite pas mal de problèmes, mais si on voit :

   Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,

lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.

== ANNEXE 1 ==
Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :

   $ su
   # rm -rf /usr/src/modules/nvidia-kernel/
   # cd /usr/src
   # tar xjvf nvidia-kernel.tar.bz2
   # cd modules/nvidia-kernel/debian
   # cp control.template control
   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

Retournez à la partie V

[[Utilisateur:Debianhadic|Debianhadic]]

== ANNEXE 2 (Refaire des paquets .deb)==
NVIDIA a fait une mise à jour des drivers il y a 5 minutes. Vous êtes raisonnable (vous avez attendu 5 minutes) mais tout de même, vous voulez ces drivers même si cela peut ne pas marcher (si, ça n'est pas infaillible). Vous savez donc que ça peut tout casser mais tant pis, vous les voulez quand même et qui plus est sous forme de paquets (caprice ?). Bon, c'est faisable à partir des .run. La démarche est la suivante:

&lt;br /&gt;

Il vous faut installer les scripts de développement (paquet devscripts) et procéder comme suit:

&lt;br /&gt;

* Chargez les sources des paquets nvidia. Il faut bien évidemment une entrée deb-src dans le fichier sources.list&lt;br /&gt;Sous root: 

 # apt-get build-dep nvidia-glx

&lt;br /&gt;et sous votre login&lt;br /&gt;

 $ apt-get source nvidia-glx

&lt;br /&gt;&lt;br /&gt;Un répertoire nvidia-graphics-drivers-??? est créé (ici c'est nvidia-graphics-drivers-173.14.09)
* Chargez les .run correspondants. Pour amd64 il vous faut le .run i386 et amd64. Pour le i386, seul le .run 386 est nécessaire. Dans le doute, vous pouvez mettre les 2 si vous êtes inquiet. Dans notre exemple, ce sont les fichiers&lt;br /&gt;&lt;br /&gt;

 NVIDIA-Linux-x86-190.53-pkg1.run
et
 NVIDIA-Linux-x86_64-190.53-pkg2.run

&lt;br /&gt;Mettez ces fichiers dans le répertoire nvidia-graphics-drivers-173.14.09 et donnez leur les droits à l'éxécution (chmod +x)
* Allez dans ce répertoire et mettez la version à jour:&lt;br /&gt;&lt;br /&gt;

 $ dch -v 190.53

&lt;br /&gt;&lt;br /&gt;Le fichier changelog est ouvert en édition, tapez vos motivations et fermez le fichier. Le répertoire a changé de nom, faites un

 cd ../nvidia-graphics-drivers-190.53

* Il faut tout d'abord changer toutes les références de 173.14.09 en 190.53 et les appels aux fichiers .run
** Editez le fichier debian/upstream_info (avec emacs bien sûr) et modifiez en conséquence les valeurs RELEASE et NEXTVER (en 190.53 et 190.54)
** Dans ce même fichier, changez les extensions pkg0 des fichiers NVIDIA-???.run et des répertoires correspondants. Dans notre exemple, cela revient à remplacer le pkg0 en pkg1. Attention, il y a plusieurs références, faites une recherche sur pkg dans ce fichier.
** Soyez courageux, virez tous les patches : vous avez décidé d'installer le système de NVIDIA. Les patches peuvent être inadaptés:&lt;br /&gt;&lt;br /&gt;

 $ rm -R patches*

&lt;br /&gt;&lt;br /&gt;(Si à ce stade vous avez effacé votre disque dur parce que vous n'étiez pas dans le bon niveau et que vous travailliez en root, '''positivez''' : vous venez d'apprendre pourquoi on ne travaille '''jamais''' en root).
* Effacez les vieux .run inutiles&lt;br /&gt;&lt;br /&gt;

 $ cd ..
 $ rm NVIDIA-Linux-x86-173.14.09-pkg0.run NVIDIA-Linux-x86_64-173.14.09-pkg2.run

&lt;br /&gt;&lt;br /&gt;
* Lâchez-vous enfin en lançant la construction des paquets:&lt;br /&gt;&lt;br /&gt;

 $ fakeroot dpkg-buildpackage -us -uc

&lt;br /&gt;&lt;br /&gt;
* Regardez dans le répertoire au-dessus, vous avez :
** Les paquets:&lt;br /&gt;
 nvidia-glx-ia32_190.53_amd64.deb
 nvidia-glx-dev_190.53_amd64.deb
 nvidia-glx_190.53_amd64.deb
 nvidia-kernel-source_190.53_amd64.deb
** Les sources:
 nvidia-graphics-drivers_190.53_amd64.changes
 nvidia-graphics-drivers_190.53.dsc
 nvidia-graphics-drivers_190.53.tar.gz

Les premiers sont les librairies et drivers xorg (les glx) ainsi que les sources pour faire le module nvidia avec module assistant, les seconds sont les sources de vos paquets. En cas de problème, vous pouvez les rectifier.

[[Utilisateur:fran.b|François Boisson]]
[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>ja7jd7hlec4lqkos2tvc9kxee07jyx9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5838</id>
      <parentid>5837</parentid>
      <timestamp>2014-09-26T17:04:36Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* V - Paramétrage de xorg.conf */ ajout passer dans mode graphique</comment>
      <text xml:space="preserve" bytes="11396">== I - Présentation ==

Avant tout sur Debian, il y a deux types de [[Matériel::Carte vidéo|cartes]] nVidia :
* Les vieilles -&gt; 'legacy'
* Les nouvelles
(Chez nos cousins d'Ubuntu, ils ont préféré rediviser les nouvelles avec une nouvelle catégorie, appellée, euh ... 'new' -&gt; nvidia-new-kernel-source, nvidia-new-glx)

On part du principe que vous n'avez jamais rien compilé ou que l'installation est nouvelle. Si ce n'est pas le cas, assurez-vous que votre système est à jour, surtout du point de vue des noyaux. Après vérification, si pour vous tout est Ok, passez à l'étape II sinon :

 $ su
 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Il est absolument primordial que ces étapes ne génèrent aucune erreur. Recommencez plusieurs fois en incluant la directive &quot;-f&quot; (force) si nécessaire.

Vous pourriez avoir également besoin de ce tuto : [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13818]

== II - Modification des dépôts ==

Les pilotes sont bien des paquets 'debian' mais ils n'ont pas grand chose de libre, bien que gratuits, alors il vous faut ajouter, si ce n'est déjà fait, les clauses contrib et non-free dans votre source.list :

  ##stable
  deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
  deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

Bon ça c'est pour les gens 'stable'. Si vous êtes moins conservateur, vous êtes surement en SID. La version intermédiaire testing (à l'écriture de ce tuto nommée Squeeze) peut parfois présenter des manques dans ses dépôts. Pour vérifier que votre sources.list vous permet d'y accéder tapez :

   $ apt-cache policy nvidia-kernel-source

Qui devrait vous donner quelque chose comme ça :

   nvidia-kernel-source:
     Installé : 180.29-1
     Candidat : 180.29-1
    Table de version :
    *** 180.29-1 0
           970 http://ftp.fr.debian.org sid/non-free Packages
           100 /var/lib/dpkg/status
        173.14.09-5 0
           500 http://ftp.fr.debian.org lenny/non-free Packages
           900 http://ftp.fr.debian.org squeeze/non-free Packages

Pour éviter d'avoir le moindre problème, il est extrêmement conseillé d'avoir un sources.list permettant de se sortir de n'importe quelle dépendance. Pour cela, inspirez-vous (copier/coller) de l'excellent tuto de MattoTop [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659]

N'oubliez pas de mettre à jour la liste de vos paquets :

   # apt-get update

'''ATTENTION''' Si votre carte est basée sur un chipset très récent (8800 par exemple) le pilote Etch (Lenny le peut-il maintenant ?) ne pourra supporter votre carte graphique. Je vous conseille donc dans ce cas de faire évoluer votre distribution en SID pour pouvoir profiter pleinement de votre carte graphique.

== III - Détection de votre carte graphique ==

La partie la plus délicate : quel est mon pilote de carte graphique ?

   $ lspci | grep -i vga

mon résultat, sur mon super portable Siemens :

   ...
   03:00.0 VGA compatible controller: nVidia Corporation NV41.8 [GeForce Go 6800] (rev a2)
   ...

dans les [] vous avez le type de carte. Allez sur cette page [http://www.nvidia.fr/object/legacy_drivers_fr.html]
Si vous y trouvez votre carte ... tant pis vous aurez l'accélération graphique, mais pas les supers trucs de compiz, votre carte est trop vieille, mais elle peut encore servir, n'est-ce pas Ricardo ?

Si vous voyez quelque chose comme unknown device, vous devrez mettre à jour vos identifiants :

   # update-pciids

et dans ce cas recommencez la partie III

'''ATTENTION''', Si vous avez déjà essayé d'installer les pilotes nvidia, sur le site officiel, avec l'application &quot;.run&quot;, veuillez effectuer les opérations suivantes : (sinon passer en IV directement)

Je vous conseille d'imprimer ce tuto, avant de passer à la suite. Nous devons arrêter le serveur graphique (xorg) donc adieu souris, copier/coller ...

Se rendre dans une console (Ctrl + Alt + F1), se logger en tant qu'administrateur (utilisateur : root, mot de passe administrateur, pour les Ubunteux, loggez vous avec votre compte utilisateur normal, puis tapez &quot;$ sudo su&quot;)

Nous allons arrêter l'interface graphique en stoppant le gestionnaire de session graphique :

   # service $(basename $(cat /etc/X11/default-display-manager)) stop

Puis :

   # nvidia-installer --uninstall
   # modprobe -r nvidia

Là, votre ancien driver *.run tout beurk devrait être désinstallé.

Maintenant, il faut effacer toute mention de ces pilotes :

   # find / -name &quot;*nvidia*&quot; -delete

== IV - Compilation du module - Patch du noyau ==

Dans le tuto qui suit, pour une carte legacy, remplacez les références à nvidia par les pilotes nvidia-legacy, donc nvidia-kernel-legacy-source, nvidia-glx-legacy

Remarque : Les bons informaticiens, sont en général des gens très intelligents, logiques, et disciplinés mais ils n'en restent pas moins feignants ! Alors ils ont cru bon, pour que les commandes ne soient pas trop évidentes à lire pour un néophyte, de permettre l'utilisation d'abréviation, un peu comme un langage SMS. Dans les commandes que vous allez découvrir maintenant, vous verrez &quot;m-a&quot; que vous pourriez donc utiliser également littéralement avec &quot;module-assistant&quot;, ainsi que &quot;a-i&quot; en &quot;auto-install&quot;. Mais comprenez bien que l'abréviation a la même signification.

   $ su 
   # apt-get install module-assistant
   # m-a prepare
   # m-a clean nvidia-kernel

Si vous êtes en testing mais que vous désirez utiliser le pilote de SID alors il vous faudra le télécharger avant que module-assistant ne le fasse :

   # apt-get install -t unstable nvidia-kernel-source

La suite est la même :

   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

== V - Paramétrage de xorg.conf ==

Editez votre xorg.conf

   # nano /etc/X11/xorg.conf

Bon si vous préférez vi, vim, emac, et autres tortures, vous pouvez.
Dans votre fichier xorg.conf, vous trouverez une ligne comme celle-la : (Si vous ne trouvez pas cette section, alors ajoutez la !)

   Section &quot;Device&quot;
       Identifier     &quot;NVIDIA Corporation NV41.8 [GeForce Go 6800]&quot;
       Driver         &quot;nv&quot;
   EndSection

Tout ce qui est noté entre &quot;&quot; est suceptible d'être différent, puisque cela dépend de votre ordinateur.

Remplacez :
   Driver         &quot;nv&quot;
Par :
   Driver         &quot;nvidia&quot;
Enregistrez votre fichier (Ctrl+O ou Ctrl+X pour enregistrer en quittant) avec Nano

Relancez votre serveur graphique :

   # service $(basename $(cat /etc/X11/default-display-manager)) start

Et vous pouvez accéder au gestionnaire de connexion en passant dans la console N° 7 par Alt+F7

Ou alors redémarrez la machine, si vous n'utilisez pas de gestionnaire de connexion graphique :

   # reboot

== VI - Conclusion ==

Les noyaux n'étant pas &quot;patchés&quot; lors du téléchargement, vous serez dans l'obligation de recommencer ces manipulations à chaque changement de celui-ci.

nvidia-glx ne se met pas à jour tant que le module nvidia n'est pas recompilé avec les nouvelles sources. Ça évite pas mal de problèmes, mais si on voit :

   Les paquets nvidia-glx, nvidia-glx-dev ont été conservés,

lors d'un apt-get upgrade, c'est qu'il faut recompiler l'ensemble pour profiter d'une mise à jour des pilotes nvidia, donc reprenez le tuto IV.

== ANNEXE 1 ==
Et puis si après tout ça ... Cela ne fonctionne toujours pas ! et bien il y a peut être un conflit avec une installation antérieure comme nous l'a démontré Shenga. Donc voila une suite de commande à faire dans un terminal :

   $ su
   # rm -rf /usr/src/modules/nvidia-kernel/
   # cd /usr/src
   # tar xjvf nvidia-kernel.tar.bz2
   # cd modules/nvidia-kernel/debian
   # cp control.template control
   # m-a a-i -i nvidia-kernel-source
   # apt-get install nvidia-glx

Retournez à la partie V

[[Utilisateur:Debianhadic|Debianhadic]]

== ANNEXE 2 (Refaire des paquets .deb)==
NVIDIA a fait une mise à jour des drivers il y a 5 minutes. Vous êtes raisonnable (vous avez attendu 5 minutes) mais tout de même, vous voulez ces drivers même si cela peut ne pas marcher (si, ça n'est pas infaillible). Vous savez donc que ça peut tout casser mais tant pis, vous les voulez quand même et qui plus est sous forme de paquets (caprice ?). Bon, c'est faisable à partir des .run. La démarche est la suivante:

&lt;br /&gt;

Il vous faut installer les scripts de développement (paquet devscripts) et procéder comme suit:

&lt;br /&gt;

* Chargez les sources des paquets nvidia. Il faut bien évidemment une entrée deb-src dans le fichier sources.list&lt;br /&gt;Sous root: 

 # apt-get build-dep nvidia-glx

&lt;br /&gt;et sous votre login&lt;br /&gt;

 $ apt-get source nvidia-glx

&lt;br /&gt;&lt;br /&gt;Un répertoire nvidia-graphics-drivers-??? est créé (ici c'est nvidia-graphics-drivers-173.14.09)
* Chargez les .run correspondants. Pour amd64 il vous faut le .run i386 et amd64. Pour le i386, seul le .run 386 est nécessaire. Dans le doute, vous pouvez mettre les 2 si vous êtes inquiet. Dans notre exemple, ce sont les fichiers&lt;br /&gt;&lt;br /&gt;

 NVIDIA-Linux-x86-190.53-pkg1.run
et
 NVIDIA-Linux-x86_64-190.53-pkg2.run

&lt;br /&gt;Mettez ces fichiers dans le répertoire nvidia-graphics-drivers-173.14.09 et donnez leur les droits à l'éxécution (chmod +x)
* Allez dans ce répertoire et mettez la version à jour:&lt;br /&gt;&lt;br /&gt;

 $ dch -v 190.53

&lt;br /&gt;&lt;br /&gt;Le fichier changelog est ouvert en édition, tapez vos motivations et fermez le fichier. Le répertoire a changé de nom, faites un

 cd ../nvidia-graphics-drivers-190.53

* Il faut tout d'abord changer toutes les références de 173.14.09 en 190.53 et les appels aux fichiers .run
** Editez le fichier debian/upstream_info (avec emacs bien sûr) et modifiez en conséquence les valeurs RELEASE et NEXTVER (en 190.53 et 190.54)
** Dans ce même fichier, changez les extensions pkg0 des fichiers NVIDIA-???.run et des répertoires correspondants. Dans notre exemple, cela revient à remplacer le pkg0 en pkg1. Attention, il y a plusieurs références, faites une recherche sur pkg dans ce fichier.
** Soyez courageux, virez tous les patches : vous avez décidé d'installer le système de NVIDIA. Les patches peuvent être inadaptés:&lt;br /&gt;&lt;br /&gt;

 $ rm -R patches*

&lt;br /&gt;&lt;br /&gt;(Si à ce stade vous avez effacé votre disque dur parce que vous n'étiez pas dans le bon niveau et que vous travailliez en root, '''positivez''' : vous venez d'apprendre pourquoi on ne travaille '''jamais''' en root).
* Effacez les vieux .run inutiles&lt;br /&gt;&lt;br /&gt;

 $ cd ..
 $ rm NVIDIA-Linux-x86-173.14.09-pkg0.run NVIDIA-Linux-x86_64-173.14.09-pkg2.run

&lt;br /&gt;&lt;br /&gt;
* Lâchez-vous enfin en lançant la construction des paquets:&lt;br /&gt;&lt;br /&gt;

 $ fakeroot dpkg-buildpackage -us -uc

&lt;br /&gt;&lt;br /&gt;
* Regardez dans le répertoire au-dessus, vous avez :
** Les paquets:&lt;br /&gt;
 nvidia-glx-ia32_190.53_amd64.deb
 nvidia-glx-dev_190.53_amd64.deb
 nvidia-glx_190.53_amd64.deb
 nvidia-kernel-source_190.53_amd64.deb
** Les sources:
 nvidia-graphics-drivers_190.53_amd64.changes
 nvidia-graphics-drivers_190.53.dsc
 nvidia-graphics-drivers_190.53.tar.gz

Les premiers sont les librairies et drivers xorg (les glx) ainsi que les sources pour faire le module nvidia avec module assistant, les seconds sont les sources de vos paquets. En cas de problème, vous pouvez les rectifier.

[[Utilisateur:fran.b|François Boisson]]
[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>8ta8bllbsi7uewu2insyhgsqlwawl6s</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Installer sur une clé USB</title>
    <ns>0</ns>
    <id>509</id>
    <redirect title="Installer depuis une clé USB" />
    <revision>
      <id>1997</id>
      <timestamp>2010-08-20T12:02:32Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>a déplacé [[Installer sur une clé USB]] vers [[Installer depuis une clé USB]]</comment>
      <text xml:space="preserve" bytes="46">#REDIRECTION [[Installer depuis une clé USB]]</text>
      <sha1>jbwxp2va31frk1iaykoz1d6latsbuq5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Installer un serveur Zabbix</title>
    <ns>0</ns>
    <id>943</id>
    <revision>
      <id>3921</id>
      <timestamp>2012-03-14T07:42:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « Nous allons détailler dans ce papier l'installation d'un serveur Zabbix sur une Debian Squeeze (Façon Debian avec apt).  ZABBIX est un logiciel open source créé par Al... »</comment>
      <text xml:space="preserve" bytes="8780">Nous allons détailler dans ce papier l'installation d'un serveur Zabbix sur une Debian Squeeze (Façon Debian avec apt).

ZABBIX est un logiciel open source créé par Alexei Vladishev. Zabbix permet de surveiller le statut de divers services réseau, serveurs et autres matériels réseau ([http://fr.wikipedia.org/wiki/Zabbix Wikipedia])
Il vous permettra de surveiller un très grand nombre de matériels.
Il fonctionne avec un serveur qui centralisé et des agents (un sur chaque matériel surveillé) qui collecte les informations pour mise à disposition du serveur.
Zabbix possède aussi un &quot;proxy&quot; qui permet de collecter les informations sur plusieurs matériels (un sous réseau par exemple), évitant au serveur de se connecter à toutes les machines. Pour de très grand réseaux c'est fort utile...

[http://www.zabbix.com/ Site officiel de Zabbix]

== Installation du serveur ==

Nous installons sur une machine le serveur zabbix ainsi qu'un agent qui sera chargé de surveiller le serveur lui-même.
Comme d'habitude avec Debian, c'est très simple:

 apt-get update
 apt-get install zabbix-agent zabbix-frontend-php zabbix-server-mysql

&lt;gallery&gt;
Fichier:zabbix_1-1.png|
Fichier:zabbix_2.png|
Fichier:zabbix_3.png|
Fichier:zabbix_4.png|
Fichier:zabbix_5.png|
Fichier:zabbix_6.png|
Fichier:zabbix_7.png|
Fichier:zabbix_8.png|
Fichier:zabbix_9.png|
Fichier:zabbix_10.png|
Fichier:zabbix_11.png|
Fichier:zabbix_12.png|
Fichier:zabbix_13.png|
Fichier:zabbix_14.png|
&lt;/gallery&gt;
=== Bug sur la version stable ===

Le frontend sur [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=637451 certaines versions] est bogué...

 apt-listbugs list zabbix-frontend-php
 Récupération des rapports de bogue... Fait  
 Analyse des informations Trouvé/Corrigé... Fait  
 Bogues de gravité grave sur zabbix-frontend-php (-&gt; ) &lt;non corrigé&gt;
  #637451 - zabbix-frontend-php: web access fails with Access denied for user 'zabbix'@'localhost'
 Résumé :
  zabbix-frontend-php(1 bogue)

 mysql_connect(): Access denied for user 'zabbix'@'localhost' (using password: YES)[/usr/share/zabbix/include/db.inc.php:58]

&lt;code&gt;
 # mysql -u root -p
 Enter password: 
 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 457
 Server version: 5.1.49-3-log (Debian)
 
 Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
 This software comes with ABSOLUTELY NO WARRANTY. This is free software,
 and you are welcome to modify and redistribute it under the GPL v2 license
 
 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
 mysql&gt; USE mysql;
 Reading table information for completion of table and column names
 You can turn off this feature to get a quicker startup with -A
 Database changed
 
 mysql&gt; update user set password=PASSWORD(&quot;zabbix&quot;) where User='zabbix';
 Query OK, 1 row affected (0.00 sec)
 Rows matched: 1  Changed: 1  Warnings: 0
 
 mysql&gt; FLUSH PRIVILEGES;
 Query OK, 0 rows affected (0.00 sec)
 
 mysql&gt; exit
 Bye
&lt;/code&gt;

=== Erreur de connexion de 'Admin' ===

Si vous rencontrez cette erreur lors de la première tentative de connexion avec l'utilisateur 'Admin':

C'est simple &quot;réparer&quot;, il suffit de modifier le mot de passe &quot;Admin&quot; dans la base MySql:

&lt;code&gt;
mysql -u root -p                                                    
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 963
Server version: 5.1.61-2 (Debian)

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; USE zabbix;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql&gt; UPDATE users SET passwd=md5('password') WHERE alias='Admin';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
You have new mail.
&lt;/code&gt;

=== Régler le php.ini ===

Afin de fonctionner correctement, Zabbix à besoin de quelques ajustements sur le php.ini de apache2.
Il faut aussi correctement renseigner le fuseau horaire faute de quoi vous aurez droit à ce beau message d'erreur en permanence:

&lt;code&gt;
date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the
date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely
misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone.
[include/page_header.php:145]
&lt;/code&gt;

 nano /etc/php5/apache2/php.ini

&lt;code&gt;
;max_execution_time = 60
max_execution_time = 300
...

...
;max_input_time = 60
max_input_time = 300
...

...
;post_max_size = 8M
post_max_size = 16M
...

...
;date.timezone =
date.timezone = Africa/Nairobi
...
&lt;/code&gt;

 service apache2 restart
 service zabbix-server restart

=== Se connecter au frontend ===

 http://ip/zabbix

[[fichier:zabbix_01.png|480px]]

=== Configurer zabbix-agent sur le serveur ===

Copiez le résultat de:
 $ hostname
Dans le fichier zabbix_agentd.conf

 nano /etc/zabbix/zabbix_agentd.conf

&lt;code&gt;
#Server=localhost
Server=127.0.0.1

### Option: Hostname
#       Unique, case sensitive hostname.
#       Required for active checks and must match hostname as configured on the server.
#       Value is acquired from HostnameItem if undefined.
#
# Mandatory: no
# Default:
# Hostname=
Hostname=sidlol
&lt;/code&gt;

 # service zabbix-server restart
 Stopping Zabbix server: zabbix_serverNo /usr/sbin/zabbix_server found running; none killed.
 .
 Starting Zabbix server: zabbix_server.

 # service zabbix-agent restart

Connectez-vous à l'interface de zabbix, puis dans le nume, rendez vous à: Configuration &gt; Hotes
Cliquez sur Zabbix Server, Remplacez le nom 'Zabbix Serveur' par le hostname que vous avez précédemment modifié dans le fichier zabbix_agentd.conf.
Cliquez sur save, cliquez enfin sur 'not monitored' pour activer la surveillance.
Vous devriez obtenir ceci:

[[fichier:zabbix_15.png]]

Il vous reste maintenant à configurer vos hôtes surveillés (il faudra bien sur installer pour chaque matériel zabbix-agent)

[[fichier:zabbix_16.png|960px]]

== Installer zabbix-agent sur une machine Debian ==

 root@ns387444:~# apt-get update
 root@ns387444:~# apt-get install zabbix-agent

 root@ns387444:~# service zabbix-agent status
 Zabbix agent is running

 netstat -laputen|grep zabbix
 tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      118        3827400     32607/zabbix_agentd
 tcp6       0      0 :::10050                :::*                    LISTEN      118        3827401     32607/zabbix_agentd

 nano /etc/zabbix/zabbix_agentd.conf

&lt;code&gt;
...
#Server=localhost
Server=IP_du_serveur_Zabbix

# Server port for sending active checks

#ServerPort=10051

# Unique hostname. Required for active checks.

#Hostname=localhost
Hostname=nom (identifiant unique) qui sera utilisé par le serveur pour décrire la machine surveillée
...
&lt;/code&gt;

 root@web:~# service zabbix-agent restart
 Stopping Zabbix agent: zabbix_agentd.
 Starting Zabbix agent: zabbix_agentd.

== zabbix dans un vhost ==

 ~/ nano /etc/apache2/sites-available/zabbix

 &lt;VirtualHost ip_publique:443&gt;
         DocumentRoot /usr/share/zabbix
 
         ServerName zabbix.votredomaine.org
         ServerAlias www.zabbix.votredomaine.org
         ServerAdmin admin@votredomaine.org
 
         SSLEngine on
         SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
         SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
 &lt;/VirtualHost&gt;

Si vous êtes derrière une passerelle, remplacez l'IP publique par l'IP locale du serveur, et créez une règle NAT sur la passerelle pour que le port 443 (ip publique) soit redirigé vers le port 443 de votre ip locale.

 a2ensite zabbix
 Enabling site zabbix.
 To activate the new configuration, you need to run:
   service apache2 reload

 service apache2 reload

Il sufira ensuite de configurer le DNS pour pointer sur votre ip publique

== Surveiller votre serveur Zabbix à partir d'un appareil sous Android ==

Il existe une application pour les appareils fonctionnants sous Android: Mobbix (à installer via le &quot;market&quot; de l'appareil).
Si vous avez configuré un vhost et qu'il est accessible depuis Internet vous pourrez surveiller votre serveur à distance:

[[fichier:mobbix.png|240px]]

[[Utilisateur:Lol|Lol]] 14 mars 2012 à 08:42 (CET)</text>
      <sha1>k3qys3ctnawszztoi4awdzuw7sjli5f</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3942</id>
      <parentid>3921</parentid>
      <timestamp>2012-03-14T09:41:47Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="8779">Nous allons détailler dans ce papier l'installation d'un serveur Zabbix sur une Debian Squeeze (Façon Debian avec apt).

ZABBIX est un logiciel open source créé par Alexei Vladishev. Zabbix permet de surveiller le statut de divers services réseau, serveurs et autres matériels réseau ([http://fr.wikipedia.org/wiki/Zabbix Wikipedia])
Il vous permettra de surveiller un très grand nombre de matériels.
Il fonctionne avec un serveur qui centralise et des agents (un sur chaque matériel surveillé) qui collecte les informations pour mise à disposition du serveur.
Zabbix possède aussi un &quot;proxy&quot; qui permet de collecter les informations sur plusieurs matériels (un sous réseau par exemple), évitant au serveur de se connecter à toutes les machines. Pour de très grand réseaux c'est fort utile...

[http://www.zabbix.com/ Site officiel de Zabbix]

== Installation du serveur ==

Nous installons sur une machine le serveur zabbix ainsi qu'un agent qui sera chargé de surveiller le serveur lui-même.
Comme d'habitude avec Debian, c'est très simple:

 apt-get update
 apt-get install zabbix-agent zabbix-frontend-php zabbix-server-mysql

&lt;gallery&gt;
Fichier:zabbix_1-1.png|
Fichier:zabbix_2.png|
Fichier:zabbix_3.png|
Fichier:zabbix_4.png|
Fichier:zabbix_5.png|
Fichier:zabbix_6.png|
Fichier:zabbix_7.png|
Fichier:zabbix_8.png|
Fichier:zabbix_9.png|
Fichier:zabbix_10.png|
Fichier:zabbix_11.png|
Fichier:zabbix_12.png|
Fichier:zabbix_13.png|
Fichier:zabbix_14.png|
&lt;/gallery&gt;
=== Bug sur la version stable ===

Le frontend sur [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=637451 certaines versions] est bogué...

 apt-listbugs list zabbix-frontend-php
 Récupération des rapports de bogue... Fait  
 Analyse des informations Trouvé/Corrigé... Fait  
 Bogues de gravité grave sur zabbix-frontend-php (-&gt; ) &lt;non corrigé&gt;
  #637451 - zabbix-frontend-php: web access fails with Access denied for user 'zabbix'@'localhost'
 Résumé :
  zabbix-frontend-php(1 bogue)

 mysql_connect(): Access denied for user 'zabbix'@'localhost' (using password: YES)[/usr/share/zabbix/include/db.inc.php:58]

&lt;code&gt;
 # mysql -u root -p
 Enter password: 
 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 457
 Server version: 5.1.49-3-log (Debian)
 
 Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
 This software comes with ABSOLUTELY NO WARRANTY. This is free software,
 and you are welcome to modify and redistribute it under the GPL v2 license
 
 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
 mysql&gt; USE mysql;
 Reading table information for completion of table and column names
 You can turn off this feature to get a quicker startup with -A
 Database changed
 
 mysql&gt; update user set password=PASSWORD(&quot;zabbix&quot;) where User='zabbix';
 Query OK, 1 row affected (0.00 sec)
 Rows matched: 1  Changed: 1  Warnings: 0
 
 mysql&gt; FLUSH PRIVILEGES;
 Query OK, 0 rows affected (0.00 sec)
 
 mysql&gt; exit
 Bye
&lt;/code&gt;

=== Erreur de connexion de 'Admin' ===

Si vous rencontrez cette erreur lors de la première tentative de connexion avec l'utilisateur 'Admin':

C'est simple &quot;réparer&quot;, il suffit de modifier le mot de passe &quot;Admin&quot; dans la base MySql:

&lt;code&gt;
mysql -u root -p                                                    
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 963
Server version: 5.1.61-2 (Debian)

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; USE zabbix;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql&gt; UPDATE users SET passwd=md5('password') WHERE alias='Admin';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
You have new mail.
&lt;/code&gt;

=== Régler le php.ini ===

Afin de fonctionner correctement, Zabbix a besoin de quelques ajustements sur le php.ini de apache2.
Il faut aussi correctement renseigner le fuseau horaire faute de quoi vous aurez droit à ce beau message d'erreur en permanence:

&lt;code&gt;
date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the
date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely
misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone.
[include/page_header.php:145]
&lt;/code&gt;

 nano /etc/php5/apache2/php.ini

&lt;code&gt;
;max_execution_time = 60
max_execution_time = 300
...

...
;max_input_time = 60
max_input_time = 300
...

...
;post_max_size = 8M
post_max_size = 16M
...

...
;date.timezone =
date.timezone = Africa/Nairobi
...
&lt;/code&gt;

 service apache2 restart
 service zabbix-server restart

=== Se connecter au frontend ===

 http://ip/zabbix

[[fichier:zabbix_01.png|480px]]

=== Configurer zabbix-agent sur le serveur ===

Copiez le résultat de:
 $ hostname
Dans le fichier zabbix_agentd.conf

 nano /etc/zabbix/zabbix_agentd.conf

&lt;code&gt;
#Server=localhost
Server=127.0.0.1

### Option: Hostname
#       Unique, case sensitive hostname.
#       Required for active checks and must match hostname as configured on the server.
#       Value is acquired from HostnameItem if undefined.
#
# Mandatory: no
# Default:
# Hostname=
Hostname=sidlol
&lt;/code&gt;

 # service zabbix-server restart
 Stopping Zabbix server: zabbix_serverNo /usr/sbin/zabbix_server found running; none killed.
 .
 Starting Zabbix server: zabbix_server.

 # service zabbix-agent restart

Connectez-vous à l'interface de zabbix, puis dans le nume, rendez vous à: Configuration &gt; Hotes
Cliquez sur Zabbix Server, Remplacez le nom 'Zabbix Serveur' par le hostname que vous avez précédemment modifié dans le fichier zabbix_agentd.conf.
Cliquez sur save, cliquez enfin sur 'not monitored' pour activer la surveillance.
Vous devriez obtenir ceci:

[[fichier:zabbix_15.png]]

Il vous reste maintenant à configurer vos hôtes surveillés (il faudra bien sûr installer pour chaque matériel zabbix-agent)

[[fichier:zabbix_16.png|960px]]

== Installer zabbix-agent sur une machine Debian ==

 root@ns387444:~# apt-get update
 root@ns387444:~# apt-get install zabbix-agent

 root@ns387444:~# service zabbix-agent status
 Zabbix agent is running

 netstat -laputen|grep zabbix
 tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      118        3827400     32607/zabbix_agentd
 tcp6       0      0 :::10050                :::*                    LISTEN      118        3827401     32607/zabbix_agentd

 nano /etc/zabbix/zabbix_agentd.conf

&lt;code&gt;
...
#Server=localhost
Server=IP_du_serveur_Zabbix

# Server port for sending active checks

#ServerPort=10051

# Unique hostname. Required for active checks.

#Hostname=localhost
Hostname=nom (identifiant unique) qui sera utilisé par le serveur pour décrire la machine surveillée
...
&lt;/code&gt;

 root@web:~# service zabbix-agent restart
 Stopping Zabbix agent: zabbix_agentd.
 Starting Zabbix agent: zabbix_agentd.

== zabbix dans un vhost ==

 ~/ nano /etc/apache2/sites-available/zabbix

 &lt;VirtualHost ip_publique:443&gt;
         DocumentRoot /usr/share/zabbix
 
         ServerName zabbix.votredomaine.org
         ServerAlias www.zabbix.votredomaine.org
         ServerAdmin admin@votredomaine.org
 
         SSLEngine on
         SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
         SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
 &lt;/VirtualHost&gt;

Si vous êtes derrière une passerelle, remplacez l'IP publique par l'IP locale du serveur, et créez une règle NAT sur la passerelle pour que le port 443 (ip publique) soit redirigé vers le port 443 de votre ip locale.

 a2ensite zabbix
 Enabling site zabbix.
 To activate the new configuration, you need to run:
   service apache2 reload

 service apache2 reload

Il sufira ensuite de configurer le DNS pour pointer sur votre ip publique

== Surveiller votre serveur Zabbix à partir d'un appareil sous Android ==

Il existe une application pour les appareils fonctionnants sous Android: Mobbix (à installer via le &quot;market&quot; de l'appareil).
Si vous avez configuré un vhost et qu'il est accessible depuis Internet vous pourrez surveiller votre serveur à distance:

[[fichier:mobbix.png|240px]]

[[Utilisateur:Lol|Lol]] 14 mars 2012 à 08:42 (CET)</text>
      <sha1>qkz42gj1tosxvwmnazj9me5wdg0z1yx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3943</id>
      <parentid>3942</parentid>
      <timestamp>2012-03-14T12:14:01Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Installation du serveur */</comment>
      <text xml:space="preserve" bytes="9062">Nous allons détailler dans ce papier l'installation d'un serveur Zabbix sur une Debian Squeeze (Façon Debian avec apt).

ZABBIX est un logiciel open source créé par Alexei Vladishev. Zabbix permet de surveiller le statut de divers services réseau, serveurs et autres matériels réseau ([http://fr.wikipedia.org/wiki/Zabbix Wikipedia])
Il vous permettra de surveiller un très grand nombre de matériels.
Il fonctionne avec un serveur qui centralise et des agents (un sur chaque matériel surveillé) qui collecte les informations pour mise à disposition du serveur.
Zabbix possède aussi un &quot;proxy&quot; qui permet de collecter les informations sur plusieurs matériels (un sous réseau par exemple), évitant au serveur de se connecter à toutes les machines. Pour de très grand réseaux c'est fort utile...

[http://www.zabbix.com/ Site officiel de Zabbix]

== Installation du serveur ==

Nous installons sur une machine le serveur zabbix ainsi qu'un agent qui sera chargé de surveiller le serveur lui-même.
Comme d'habitude avec Debian, c'est très simple:

 apt-get update
 apt-get install zabbix-agent zabbix-frontend-php zabbix-server-mysql

L'installeur va vous poser plein de question, laissez les options par défaut.

&lt;gallery&gt;
Fichier:zabbix_1-1.png|
Fichier:zabbix_2.png|
Fichier:zabbix_3.png|
Fichier:zabbix_4.png|
Fichier:zabbix_5.png|
Fichier:zabbix_6.png|
Fichier:zabbix_7.png|
Fichier:zabbix_8.png|
Fichier:zabbix_9.png|
Fichier:zabbix_10.png|
Fichier:zabbix_11.png|
Fichier:zabbix_12.png|
Fichier:zabbix_13.png|
Fichier:zabbix_14.png|
&lt;/gallery&gt;
=== Bug sur la version stable ===

Le frontend sur [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=637451 certaines versions] est bogué...

 apt-listbugs list zabbix-frontend-php
 Récupération des rapports de bogue... Fait  
 Analyse des informations Trouvé/Corrigé... Fait  
 Bogues de gravité grave sur zabbix-frontend-php (-&gt; ) &lt;non corrigé&gt;
  #637451 - zabbix-frontend-php: web access fails with Access denied for user 'zabbix'@'localhost'
 Résumé :
  zabbix-frontend-php(1 bogue)

Le mot de passe de connexion de zabbix à la base de données ne s'est pas convenablement initialisé dans MySql.

 mysql_connect(): Access denied for user 'zabbix'@'localhost' (using password: YES)[/usr/share/zabbix/include/db.inc.php:58]

Il suffit de réinitialiser le mot de passe de connexion à la base Zabbix dans MySql:

&lt;code&gt;
 # mysql -u root -p
 Enter password: 
 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 457
 Server version: 5.1.49-3-log (Debian)
 
 Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
 This software comes with ABSOLUTELY NO WARRANTY. This is free software,
 and you are welcome to modify and redistribute it under the GPL v2 license
 
 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
 mysql&gt; USE mysql;
 Reading table information for completion of table and column names
 You can turn off this feature to get a quicker startup with -A
 Database changed
 
 mysql&gt; update user set password=PASSWORD(&quot;zabbix&quot;) where User='zabbix';
 Query OK, 1 row affected (0.00 sec)
 Rows matched: 1  Changed: 1  Warnings: 0
 
 mysql&gt; FLUSH PRIVILEGES;
 Query OK, 0 rows affected (0.00 sec)
 
 mysql&gt; exit
 Bye
&lt;/code&gt;

=== Erreur de connexion de 'Admin' ===

Si vous rencontrez cette erreur lors de la première tentative de connexion avec l'utilisateur 'Admin':

C'est simple &quot;réparer&quot;, il suffit de modifier le mot de passe &quot;Admin&quot; dans la base MySql:

&lt;code&gt;
mysql -u root -p                                                    
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 963
Server version: 5.1.61-2 (Debian)

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; USE zabbix;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql&gt; UPDATE users SET passwd=md5('password') WHERE alias='Admin';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
You have new mail.
&lt;/code&gt;

=== Régler le php.ini ===

Afin de fonctionner correctement, Zabbix a besoin de quelques ajustements sur le php.ini de apache2.
Il faut aussi correctement renseigner le fuseau horaire faute de quoi vous aurez droit à ce beau message d'erreur en permanence:

&lt;code&gt;
date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the
date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely
misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone.
[include/page_header.php:145]
&lt;/code&gt;

 nano /etc/php5/apache2/php.ini

&lt;code&gt;
;max_execution_time = 60
max_execution_time = 300
...

...
;max_input_time = 60
max_input_time = 300
...

...
;post_max_size = 8M
post_max_size = 16M
...

...
;date.timezone =
date.timezone = Africa/Nairobi
...
&lt;/code&gt;

 service apache2 restart
 service zabbix-server restart

=== Se connecter au frontend ===

 http://ip/zabbix

[[fichier:zabbix_01.png|480px]]

=== Configurer zabbix-agent sur le serveur ===

Copiez le résultat de:
 $ hostname
Dans le fichier zabbix_agentd.conf

 nano /etc/zabbix/zabbix_agentd.conf

&lt;code&gt;
#Server=localhost
Server=127.0.0.1

### Option: Hostname
#       Unique, case sensitive hostname.
#       Required for active checks and must match hostname as configured on the server.
#       Value is acquired from HostnameItem if undefined.
#
# Mandatory: no
# Default:
# Hostname=
Hostname=sidlol
&lt;/code&gt;

 # service zabbix-server restart
 Stopping Zabbix server: zabbix_serverNo /usr/sbin/zabbix_server found running; none killed.
 .
 Starting Zabbix server: zabbix_server.

 # service zabbix-agent restart

Connectez-vous à l'interface de zabbix, puis dans le nume, rendez vous à: Configuration &gt; Hotes
Cliquez sur Zabbix Server, Remplacez le nom 'Zabbix Serveur' par le hostname que vous avez précédemment modifié dans le fichier zabbix_agentd.conf.
Cliquez sur save, cliquez enfin sur 'not monitored' pour activer la surveillance.
Vous devriez obtenir ceci:

[[fichier:zabbix_15.png]]

Il vous reste maintenant à configurer vos hôtes surveillés (il faudra bien sûr installer pour chaque matériel zabbix-agent)

[[fichier:zabbix_16.png|960px]]

== Installer zabbix-agent sur une machine Debian ==

 root@ns387444:~# apt-get update
 root@ns387444:~# apt-get install zabbix-agent

 root@ns387444:~# service zabbix-agent status
 Zabbix agent is running

 netstat -laputen|grep zabbix
 tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      118        3827400     32607/zabbix_agentd
 tcp6       0      0 :::10050                :::*                    LISTEN      118        3827401     32607/zabbix_agentd

 nano /etc/zabbix/zabbix_agentd.conf

&lt;code&gt;
...
#Server=localhost
Server=IP_du_serveur_Zabbix

# Server port for sending active checks

#ServerPort=10051

# Unique hostname. Required for active checks.

#Hostname=localhost
Hostname=nom (identifiant unique) qui sera utilisé par le serveur pour décrire la machine surveillée
...
&lt;/code&gt;

 root@web:~# service zabbix-agent restart
 Stopping Zabbix agent: zabbix_agentd.
 Starting Zabbix agent: zabbix_agentd.

== zabbix dans un vhost ==

 ~/ nano /etc/apache2/sites-available/zabbix

 &lt;VirtualHost ip_publique:443&gt;
         DocumentRoot /usr/share/zabbix
 
         ServerName zabbix.votredomaine.org
         ServerAlias www.zabbix.votredomaine.org
         ServerAdmin admin@votredomaine.org
 
         SSLEngine on
         SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
         SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
 &lt;/VirtualHost&gt;

Si vous êtes derrière une passerelle, remplacez l'IP publique par l'IP locale du serveur, et créez une règle NAT sur la passerelle pour que le port 443 (ip publique) soit redirigé vers le port 443 de votre ip locale.

 a2ensite zabbix
 Enabling site zabbix.
 To activate the new configuration, you need to run:
   service apache2 reload

 service apache2 reload

Il sufira ensuite de configurer le DNS pour pointer sur votre ip publique

== Surveiller votre serveur Zabbix à partir d'un appareil sous Android ==

Il existe une application pour les appareils fonctionnants sous Android: Mobbix (à installer via le &quot;market&quot; de l'appareil).
Si vous avez configuré un vhost et qu'il est accessible depuis Internet vous pourrez surveiller votre serveur à distance:

[[fichier:mobbix.png|240px]]

[[Utilisateur:Lol|Lol]] 14 mars 2012 à 08:42 (CET)</text>
      <sha1>9v279481lo1ra2dvl5amo6m5gsy11h1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3944</id>
      <parentid>3943</parentid>
      <timestamp>2012-03-14T12:15:08Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Erreur de connexion de 'Admin' */</comment>
      <text xml:space="preserve" bytes="9051">Nous allons détailler dans ce papier l'installation d'un serveur Zabbix sur une Debian Squeeze (Façon Debian avec apt).

ZABBIX est un logiciel open source créé par Alexei Vladishev. Zabbix permet de surveiller le statut de divers services réseau, serveurs et autres matériels réseau ([http://fr.wikipedia.org/wiki/Zabbix Wikipedia])
Il vous permettra de surveiller un très grand nombre de matériels.
Il fonctionne avec un serveur qui centralise et des agents (un sur chaque matériel surveillé) qui collecte les informations pour mise à disposition du serveur.
Zabbix possède aussi un &quot;proxy&quot; qui permet de collecter les informations sur plusieurs matériels (un sous réseau par exemple), évitant au serveur de se connecter à toutes les machines. Pour de très grand réseaux c'est fort utile...

[http://www.zabbix.com/ Site officiel de Zabbix]

== Installation du serveur ==

Nous installons sur une machine le serveur zabbix ainsi qu'un agent qui sera chargé de surveiller le serveur lui-même.
Comme d'habitude avec Debian, c'est très simple:

 apt-get update
 apt-get install zabbix-agent zabbix-frontend-php zabbix-server-mysql

L'installeur va vous poser plein de question, laissez les options par défaut.

&lt;gallery&gt;
Fichier:zabbix_1-1.png|
Fichier:zabbix_2.png|
Fichier:zabbix_3.png|
Fichier:zabbix_4.png|
Fichier:zabbix_5.png|
Fichier:zabbix_6.png|
Fichier:zabbix_7.png|
Fichier:zabbix_8.png|
Fichier:zabbix_9.png|
Fichier:zabbix_10.png|
Fichier:zabbix_11.png|
Fichier:zabbix_12.png|
Fichier:zabbix_13.png|
Fichier:zabbix_14.png|
&lt;/gallery&gt;
=== Bug sur la version stable ===

Le frontend sur [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=637451 certaines versions] est bogué...

 apt-listbugs list zabbix-frontend-php
 Récupération des rapports de bogue... Fait  
 Analyse des informations Trouvé/Corrigé... Fait  
 Bogues de gravité grave sur zabbix-frontend-php (-&gt; ) &lt;non corrigé&gt;
  #637451 - zabbix-frontend-php: web access fails with Access denied for user 'zabbix'@'localhost'
 Résumé :
  zabbix-frontend-php(1 bogue)

Le mot de passe de connexion de zabbix à la base de données ne s'est pas convenablement initialisé dans MySql.

 mysql_connect(): Access denied for user 'zabbix'@'localhost' (using password: YES)[/usr/share/zabbix/include/db.inc.php:58]

Il suffit de réinitialiser le mot de passe de connexion à la base Zabbix dans MySql:

&lt;code&gt;
 # mysql -u root -p
 Enter password: 
 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 457
 Server version: 5.1.49-3-log (Debian)
 
 Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
 This software comes with ABSOLUTELY NO WARRANTY. This is free software,
 and you are welcome to modify and redistribute it under the GPL v2 license
 
 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
 mysql&gt; USE mysql;
 Reading table information for completion of table and column names
 You can turn off this feature to get a quicker startup with -A
 Database changed
 
 mysql&gt; update user set password=PASSWORD(&quot;zabbix&quot;) where User='zabbix';
 Query OK, 1 row affected (0.00 sec)
 Rows matched: 1  Changed: 1  Warnings: 0
 
 mysql&gt; FLUSH PRIVILEGES;
 Query OK, 0 rows affected (0.00 sec)
 
 mysql&gt; exit
 Bye
&lt;/code&gt;

=== Erreur de connexion de 'Admin' ===

Si vous rencontrez cette erreur lors de la première tentative de connexion avec l'utilisateur 'Admin':

C'est simple: Il suffit de modifier le mot de passe &quot;Admin&quot; dans la base MySql:

&lt;code&gt;
mysql -u root -p                                                    
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 963
Server version: 5.1.61-2 (Debian)

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; USE zabbix;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql&gt; UPDATE users SET passwd=md5('password') WHERE alias='Admin';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; exit
Bye
You have new mail.
&lt;/code&gt;

=== Régler le php.ini ===

Afin de fonctionner correctement, Zabbix a besoin de quelques ajustements sur le php.ini de apache2.
Il faut aussi correctement renseigner le fuseau horaire faute de quoi vous aurez droit à ce beau message d'erreur en permanence:

&lt;code&gt;
date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the
date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely
misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone.
[include/page_header.php:145]
&lt;/code&gt;

 nano /etc/php5/apache2/php.ini

&lt;code&gt;
;max_execution_time = 60
max_execution_time = 300
...

...
;max_input_time = 60
max_input_time = 300
...

...
;post_max_size = 8M
post_max_size = 16M
...

...
;date.timezone =
date.timezone = Africa/Nairobi
...
&lt;/code&gt;

 service apache2 restart
 service zabbix-server restart

=== Se connecter au frontend ===

 http://ip/zabbix

[[fichier:zabbix_01.png|480px]]

=== Configurer zabbix-agent sur le serveur ===

Copiez le résultat de:
 $ hostname
Dans le fichier zabbix_agentd.conf

 nano /etc/zabbix/zabbix_agentd.conf

&lt;code&gt;
#Server=localhost
Server=127.0.0.1

### Option: Hostname
#       Unique, case sensitive hostname.
#       Required for active checks and must match hostname as configured on the server.
#       Value is acquired from HostnameItem if undefined.
#
# Mandatory: no
# Default:
# Hostname=
Hostname=sidlol
&lt;/code&gt;

 # service zabbix-server restart
 Stopping Zabbix server: zabbix_serverNo /usr/sbin/zabbix_server found running; none killed.
 .
 Starting Zabbix server: zabbix_server.

 # service zabbix-agent restart

Connectez-vous à l'interface de zabbix, puis dans le nume, rendez vous à: Configuration &gt; Hotes
Cliquez sur Zabbix Server, Remplacez le nom 'Zabbix Serveur' par le hostname que vous avez précédemment modifié dans le fichier zabbix_agentd.conf.
Cliquez sur save, cliquez enfin sur 'not monitored' pour activer la surveillance.
Vous devriez obtenir ceci:

[[fichier:zabbix_15.png]]

Il vous reste maintenant à configurer vos hôtes surveillés (il faudra bien sûr installer pour chaque matériel zabbix-agent)

[[fichier:zabbix_16.png|960px]]

== Installer zabbix-agent sur une machine Debian ==

 root@ns387444:~# apt-get update
 root@ns387444:~# apt-get install zabbix-agent

 root@ns387444:~# service zabbix-agent status
 Zabbix agent is running

 netstat -laputen|grep zabbix
 tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      118        3827400     32607/zabbix_agentd
 tcp6       0      0 :::10050                :::*                    LISTEN      118        3827401     32607/zabbix_agentd

 nano /etc/zabbix/zabbix_agentd.conf

&lt;code&gt;
...
#Server=localhost
Server=IP_du_serveur_Zabbix

# Server port for sending active checks

#ServerPort=10051

# Unique hostname. Required for active checks.

#Hostname=localhost
Hostname=nom (identifiant unique) qui sera utilisé par le serveur pour décrire la machine surveillée
...
&lt;/code&gt;

 root@web:~# service zabbix-agent restart
 Stopping Zabbix agent: zabbix_agentd.
 Starting Zabbix agent: zabbix_agentd.

== zabbix dans un vhost ==

 ~/ nano /etc/apache2/sites-available/zabbix

 &lt;VirtualHost ip_publique:443&gt;
         DocumentRoot /usr/share/zabbix
 
         ServerName zabbix.votredomaine.org
         ServerAlias www.zabbix.votredomaine.org
         ServerAdmin admin@votredomaine.org
 
         SSLEngine on
         SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
         SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
 &lt;/VirtualHost&gt;

Si vous êtes derrière une passerelle, remplacez l'IP publique par l'IP locale du serveur, et créez une règle NAT sur la passerelle pour que le port 443 (ip publique) soit redirigé vers le port 443 de votre ip locale.

 a2ensite zabbix
 Enabling site zabbix.
 To activate the new configuration, you need to run:
   service apache2 reload

 service apache2 reload

Il sufira ensuite de configurer le DNS pour pointer sur votre ip publique

== Surveiller votre serveur Zabbix à partir d'un appareil sous Android ==

Il existe une application pour les appareils fonctionnants sous Android: Mobbix (à installer via le &quot;market&quot; de l'appareil).
Si vous avez configuré un vhost et qu'il est accessible depuis Internet vous pourrez surveiller votre serveur à distance:

[[fichier:mobbix.png|240px]]

[[Utilisateur:Lol|Lol]] 14 mars 2012 à 08:42 (CET)</text>
      <sha1>18uyw08ap2etccotwgvxpstqdjlyyae</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Interfaces et wpasupplicant</title>
    <ns>0</ns>
    <id>216</id>
    <revision>
      <id>826</id>
      <timestamp>2010-02-04T07:20:46Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <comment>Page créée avec « Si vous ne voulez pas que votre connexion wifi soit utilisée à votre insu, vous devez faire en sorte que celle-ci soit cryptée.  Il existe plusieurs types de cryptages, le… »</comment>
      <text xml:space="preserve" bytes="3387">Si vous ne voulez pas que votre connexion wifi soit utilisée à votre insu, vous devez faire en sorte que celle-ci soit cryptée.

Il existe plusieurs types de cryptages, le WEP, le WPA-802.xx, le WPA-PSK... Nous ne nous intéresserons ici qu'au WPA-PSK car celui-ci est bien plus sécurisé que le WEP, assez facile à contourner.


On peut configurer le cryptage WPA-PSK de sa carte wifi dans le fichier '''/etc/wpa_supplicant.conf''', mais tout regrouper dans le fichier '''/etc/network/interfaces''' est tout aussi simple.

== Le point d'accès ==
Le point d'accès est l'endroit à partir duquel vous vous connectez, ce peut être une xxxBox, un routeur... etc. Ce point d'accès est défini à l'aide de plusieurs paramètres :

* Le ssid : C'est le nom du réseau. ( maximum 32 caractères )
* Le canal d'émission : Bande de fréquences dans laquelle sont émises les ondes wifi.
* Le mode : Il définit le débit du transfert des données. ( b, g, ...)
* Le mode de chiffrement : WPA-PSK, WEP...
* La clé de chiffrement : C'est le mot de passe pour accéder à la connexion, en WPA-PSK, cette clé doit avoit entre 8 et 63 caractères.

== Configuration du fichier interfaces ==
=== wpasupplicant ===
'''wpasupplicant''' est un paquet disponible dans toutes les versions de Debian dans la section main. On l'installe par :
&lt;pre&gt; # aptitude install wpasupplicant
&lt;/pre&gt;
Il va nous fournir l'outil '''wpa_passphrase''' qui va nous permettre de récupérer la clé cryptée à partir du mot de passe en clair et du nom de notre réseau ( ssid ).
Cette chiffrée devra être indiquée dans le fichier interfaces.

Par exemple :
* notre réseau se nomme : Mon_wifi_chez_moi
* la clé en clair est   : Ma_clé_ultra_secrète_anti_hackers

On lance en console wpa_passphrase comme ceci : '''wpa_passphrase &lt;ssid&gt; &lt;clé en clair&gt;'''

Ce qui, dans l'exemple donne :

&lt;pre&gt;
$ wpa_passphrase Mon_wifi_chez_moi Ma_clé_ultra_secrète_anti_hackers
network={
	ssid=&quot;Mon_wifi_chez_moi&quot;
	#psk=&quot;Ma_clé_ultra_secrète_anti_hackers&quot;
	psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116
&lt;/pre&gt;

On vient de récupérer la clé chiffrée, ici '''psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116'''
=== Remplir /etc/network/interfaces ===

&lt;u&gt;Nota&lt;/u&gt; : nous appelons notre interface wlan0, &lt;u&gt;c'est peut-être différent chez vous&lt;/u&gt;. Donc adaptez en fonction de vos propres paramètres.

==== Avec le serveur en DHCP ====

&lt;pre&gt;
# Configuration avec le serveur en DHCP
auto wlan0
iface wlan0 inet dhcp
wpa-conf managed
wpa-ap-scan 1
wpa-scan-ssid 1
wpa-ssid Mon_wifi_chez_moi
wpa-key-mgmt WPA-PSK
wpa-psk ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116
&lt;/pre&gt;
==== Avec le serveur en statique ====

&lt;u&gt;Nota&lt;/u&gt; :Ici, les adresses sont complètement définies, &lt;u&gt;modifiez les avec vos propres adresses.&lt;/u&gt;

&lt;pre&gt;
# Configuration en statique
auto wlan0
iface wlan0 inet static
address 192.168.0.2
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.0.1
wpa-conf managed
wpa-ap-scan 1
wpa-scan-ssid 1
wpa-ssid Mon_wifi_chez_moi
wpa-key-mgmt WPA-PSK
wpa-psk ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116
&lt;/pre&gt;

== Relancer le réseau ==

Vous devez relancer le réseau afin de prendre en compte les nouveaux paramètres avec :

&lt;pre&gt;
# /etc/init.d/networking restart
&lt;/pre&gt;

[[Category:Wifi]]</text>
      <sha1>qhkeh0vu0rj746ezi2v9sf7nizboseu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>827</id>
      <parentid>826</parentid>
      <timestamp>2010-02-04T07:23:53Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <minor/>
      <comment>/* wpasupplicant */</comment>
      <text xml:space="preserve" bytes="3393">Si vous ne voulez pas que votre connexion wifi soit utilisée à votre insu, vous devez faire en sorte que celle-ci soit cryptée.

Il existe plusieurs types de cryptages, le WEP, le WPA-802.xx, le WPA-PSK... Nous ne nous intéresserons ici qu'au WPA-PSK car celui-ci est bien plus sécurisé que le WEP, assez facile à contourner.


On peut configurer le cryptage WPA-PSK de sa carte wifi dans le fichier '''/etc/wpa_supplicant.conf''', mais tout regrouper dans le fichier '''/etc/network/interfaces''' est tout aussi simple.

== Le point d'accès ==
Le point d'accès est l'endroit à partir duquel vous vous connectez, ce peut être une xxxBox, un routeur... etc. Ce point d'accès est défini à l'aide de plusieurs paramètres :

* Le ssid : C'est le nom du réseau. ( maximum 32 caractères )
* Le canal d'émission : Bande de fréquences dans laquelle sont émises les ondes wifi.
* Le mode : Il définit le débit du transfert des données. ( b, g, ...)
* Le mode de chiffrement : WPA-PSK, WEP...
* La clé de chiffrement : C'est le mot de passe pour accéder à la connexion, en WPA-PSK, cette clé doit avoit entre 8 et 63 caractères.

== Configuration du fichier interfaces ==
=== wpasupplicant ===
'''wpasupplicant''' est un paquet disponible dans toutes les versions de Debian dans la section main. On l'installe par :
&lt;pre&gt; # aptitude install wpasupplicant
&lt;/pre&gt;
Il va nous fournir l'outil '''wpa_passphrase''' qui va nous permettre de récupérer la clé cryptée à partir du mot de passe en clair et du nom de notre réseau ( ssid ).
Cette clé chiffrée devra être indiquée dans le fichier interfaces.

Par exemple :
* notre réseau se nomme : Mon_wifi_chez_moi
* la clé en clair est   : Ma_clé_ultra_secrète_anti_hackers

On lance en console wpa_passphrase comme ceci : '''wpa_passphrase &lt;ssid&gt; &lt;clé en clair&gt;'''

Ce qui, dans l'exemple donne :

&lt;pre&gt;
$ wpa_passphrase Mon_wifi_chez_moi Ma_clé_ultra_secrète_anti_hackers
network={
	ssid=&quot;Mon_wifi_chez_moi&quot;
	#psk=&quot;Ma_clé_ultra_secrète_anti_hackers&quot;
	psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116
&lt;/pre&gt;

On vient de récupérer la clé chiffrée, ici '''psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116'''

=== Remplir /etc/network/interfaces ===

&lt;u&gt;Nota&lt;/u&gt; : nous appelons notre interface wlan0, &lt;u&gt;c'est peut-être différent chez vous&lt;/u&gt;. Donc adaptez en fonction de vos propres paramètres.

==== Avec le serveur en DHCP ====

&lt;pre&gt;
# Configuration avec le serveur en DHCP
auto wlan0
iface wlan0 inet dhcp
wpa-conf managed
wpa-ap-scan 1
wpa-scan-ssid 1
wpa-ssid Mon_wifi_chez_moi
wpa-key-mgmt WPA-PSK
wpa-psk ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116
&lt;/pre&gt;
==== Avec le serveur en statique ====

&lt;u&gt;Nota&lt;/u&gt; :Ici, les adresses sont complètement définies, &lt;u&gt;modifiez les avec vos propres adresses.&lt;/u&gt;

&lt;pre&gt;
# Configuration en statique
auto wlan0
iface wlan0 inet static
address 192.168.0.2
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.0.1
wpa-conf managed
wpa-ap-scan 1
wpa-scan-ssid 1
wpa-ssid Mon_wifi_chez_moi
wpa-key-mgmt WPA-PSK
wpa-psk ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116
&lt;/pre&gt;

== Relancer le réseau ==

Vous devez relancer le réseau afin de prendre en compte les nouveaux paramètres avec :

&lt;pre&gt;
# /etc/init.d/networking restart
&lt;/pre&gt;

[[Category:Wifi]]</text>
      <sha1>spyy43dusg89d5tj7e1awjmimzftaio</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>828</id>
      <parentid>827</parentid>
      <timestamp>2010-02-04T07:24:35Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <minor/>
      <comment>/* Avec le serveur en statique */</comment>
      <text xml:space="preserve" bytes="3394">Si vous ne voulez pas que votre connexion wifi soit utilisée à votre insu, vous devez faire en sorte que celle-ci soit cryptée.

Il existe plusieurs types de cryptages, le WEP, le WPA-802.xx, le WPA-PSK... Nous ne nous intéresserons ici qu'au WPA-PSK car celui-ci est bien plus sécurisé que le WEP, assez facile à contourner.


On peut configurer le cryptage WPA-PSK de sa carte wifi dans le fichier '''/etc/wpa_supplicant.conf''', mais tout regrouper dans le fichier '''/etc/network/interfaces''' est tout aussi simple.

== Le point d'accès ==
Le point d'accès est l'endroit à partir duquel vous vous connectez, ce peut être une xxxBox, un routeur... etc. Ce point d'accès est défini à l'aide de plusieurs paramètres :

* Le ssid : C'est le nom du réseau. ( maximum 32 caractères )
* Le canal d'émission : Bande de fréquences dans laquelle sont émises les ondes wifi.
* Le mode : Il définit le débit du transfert des données. ( b, g, ...)
* Le mode de chiffrement : WPA-PSK, WEP...
* La clé de chiffrement : C'est le mot de passe pour accéder à la connexion, en WPA-PSK, cette clé doit avoit entre 8 et 63 caractères.

== Configuration du fichier interfaces ==
=== wpasupplicant ===
'''wpasupplicant''' est un paquet disponible dans toutes les versions de Debian dans la section main. On l'installe par :
&lt;pre&gt; # aptitude install wpasupplicant
&lt;/pre&gt;
Il va nous fournir l'outil '''wpa_passphrase''' qui va nous permettre de récupérer la clé cryptée à partir du mot de passe en clair et du nom de notre réseau ( ssid ).
Cette clé chiffrée devra être indiquée dans le fichier interfaces.

Par exemple :
* notre réseau se nomme : Mon_wifi_chez_moi
* la clé en clair est   : Ma_clé_ultra_secrète_anti_hackers

On lance en console wpa_passphrase comme ceci : '''wpa_passphrase &lt;ssid&gt; &lt;clé en clair&gt;'''

Ce qui, dans l'exemple donne :

&lt;pre&gt;
$ wpa_passphrase Mon_wifi_chez_moi Ma_clé_ultra_secrète_anti_hackers
network={
	ssid=&quot;Mon_wifi_chez_moi&quot;
	#psk=&quot;Ma_clé_ultra_secrète_anti_hackers&quot;
	psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116
&lt;/pre&gt;

On vient de récupérer la clé chiffrée, ici '''psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116'''

=== Remplir /etc/network/interfaces ===

&lt;u&gt;Nota&lt;/u&gt; : nous appelons notre interface wlan0, &lt;u&gt;c'est peut-être différent chez vous&lt;/u&gt;. Donc adaptez en fonction de vos propres paramètres.

==== Avec le serveur en DHCP ====

&lt;pre&gt;
# Configuration avec le serveur en DHCP
auto wlan0
iface wlan0 inet dhcp
wpa-conf managed
wpa-ap-scan 1
wpa-scan-ssid 1
wpa-ssid Mon_wifi_chez_moi
wpa-key-mgmt WPA-PSK
wpa-psk ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116
&lt;/pre&gt;
==== Avec le serveur en statique ====

&lt;u&gt;Nota&lt;/u&gt; : Ici, les adresses sont complètement définies, &lt;u&gt;modifiez les avec vos propres adresses.&lt;/u&gt;

&lt;pre&gt;
# Configuration en statique
auto wlan0
iface wlan0 inet static
address 192.168.0.2
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.0.1
wpa-conf managed
wpa-ap-scan 1
wpa-scan-ssid 1
wpa-ssid Mon_wifi_chez_moi
wpa-key-mgmt WPA-PSK
wpa-psk ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116
&lt;/pre&gt;

== Relancer le réseau ==

Vous devez relancer le réseau afin de prendre en compte les nouveaux paramètres avec :

&lt;pre&gt;
# /etc/init.d/networking restart
&lt;/pre&gt;

[[Category:Wifi]]</text>
      <sha1>pxztbd0xlkh5mi3zloyb1xo28j6fx5w</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>829</id>
      <parentid>828</parentid>
      <timestamp>2010-02-04T07:56:59Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <minor/>
      <comment>/* wpasupplicant */</comment>
      <text xml:space="preserve" bytes="3422">Si vous ne voulez pas que votre connexion wifi soit utilisée à votre insu, vous devez faire en sorte que celle-ci soit cryptée.

Il existe plusieurs types de cryptages, le WEP, le WPA-802.xx, le WPA-PSK... Nous ne nous intéresserons ici qu'au WPA-PSK car celui-ci est bien plus sécurisé que le WEP, assez facile à contourner.


On peut configurer le cryptage WPA-PSK de sa carte wifi dans le fichier '''/etc/wpa_supplicant.conf''', mais tout regrouper dans le fichier '''/etc/network/interfaces''' est tout aussi simple.

== Le point d'accès ==
Le point d'accès est l'endroit à partir duquel vous vous connectez, ce peut être une xxxBox, un routeur... etc. Ce point d'accès est défini à l'aide de plusieurs paramètres :

* Le ssid : C'est le nom du réseau. ( maximum 32 caractères )
* Le canal d'émission : Bande de fréquences dans laquelle sont émises les ondes wifi.
* Le mode : Il définit le débit du transfert des données. ( b, g, ...)
* Le mode de chiffrement : WPA-PSK, WEP...
* La clé de chiffrement : C'est le mot de passe pour accéder à la connexion, en WPA-PSK, cette clé doit avoit entre 8 et 63 caractères.

== Configuration du fichier interfaces ==
=== wpasupplicant ===
'''wpasupplicant''' est un paquet disponible dans toutes les versions de Debian dans la section main. On l'installe par :
&lt;pre&gt; # aptitude install wpasupplicant
&lt;/pre&gt;
Il va nous fournir l'outil '''wpa_passphrase''' qui va nous permettre de récupérer la clé cryptée à partir du mot de passe en clair et du nom de notre réseau ( ssid ).
Cette clé chiffrée devra être indiquée dans le fichier interfaces.

Par exemple :
* notre réseau se nomme : Mon_wifi_chez_moi
* la clé en clair est   : Ma_clé_ultra_secrète_anti_hackers

On lance en console wpa_passphrase comme ceci : '''wpa_passphrase &lt;ssid&gt; &lt;clé en clair&gt;'''

Ce qui, dans l'exemple donne :

&lt;pre&gt;
$ wpa_passphrase Mon_wifi_chez_moi Ma_clé_ultra_secrète_anti_hackers
network={
	ssid=&quot;Mon_wifi_chez_moi&quot;
	#psk=&quot;Ma_clé_ultra_secrète_anti_hackers&quot;
	psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116
&lt;/pre&gt;

On vient de récupérer la clé chiffrée, ici '''psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116'''. Il suffira de la recopier.

=== Remplir /etc/network/interfaces ===

&lt;u&gt;Nota&lt;/u&gt; : nous appelons notre interface wlan0, &lt;u&gt;c'est peut-être différent chez vous&lt;/u&gt;. Donc adaptez en fonction de vos propres paramètres.

==== Avec le serveur en DHCP ====

&lt;pre&gt;
# Configuration avec le serveur en DHCP
auto wlan0
iface wlan0 inet dhcp
wpa-conf managed
wpa-ap-scan 1
wpa-scan-ssid 1
wpa-ssid Mon_wifi_chez_moi
wpa-key-mgmt WPA-PSK
wpa-psk ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116
&lt;/pre&gt;
==== Avec le serveur en statique ====

&lt;u&gt;Nota&lt;/u&gt; : Ici, les adresses sont complètement définies, &lt;u&gt;modifiez les avec vos propres adresses.&lt;/u&gt;

&lt;pre&gt;
# Configuration en statique
auto wlan0
iface wlan0 inet static
address 192.168.0.2
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.0.1
wpa-conf managed
wpa-ap-scan 1
wpa-scan-ssid 1
wpa-ssid Mon_wifi_chez_moi
wpa-key-mgmt WPA-PSK
wpa-psk ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116
&lt;/pre&gt;

== Relancer le réseau ==

Vous devez relancer le réseau afin de prendre en compte les nouveaux paramètres avec :

&lt;pre&gt;
# /etc/init.d/networking restart
&lt;/pre&gt;

[[Category:Wifi]]</text>
      <sha1>mqt1jl6kay8dushvnvbxs8cmp4q5vs4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>913</id>
      <parentid>829</parentid>
      <timestamp>2010-02-05T18:22:27Z</timestamp>
      <contributor>
        <username>Kna</username>
        <id>35</id>
      </contributor>
      <text xml:space="preserve" bytes="5124">Si vous ne voulez pas que votre connexion wifi soit utilisée à votre insu, vous devez faire en sorte que celle-ci soit chiffrée.

Il existe plusieurs types de chiffrement, le WEP, le WPA-802.xx, le WPA-PSK... Nous ne nous intéresserons ici qu'au WPA-PSK car celui-ci est bien plus sécurisé que le WEP, assez facile à contourner.


On peut configurer le cryptage WPA-PSK de sa carte wifi dans le fichier '''/etc/wpa_supplicant.conf''', mais tout regrouper dans le fichier '''/etc/network/interfaces''' est tout aussi simple.

== Le point d'accès ==
Le point d'accès est l'endroit à partir duquel vous vous connectez, ce peut être une xxxBox, un routeur... etc. Ce point d'accès est défini à l'aide de plusieurs paramètres :

* Le ssid : C'est le nom du réseau. ( maximum 32 caractères )
* Le canal d'émission : Bande de fréquences dans laquelle sont émises les ondes wifi.
* Le mode : Il définit le débit du transfert des données. ( b, g, ...)
* Le mode de chiffrement : WPA-PSK, WEP...
* La clé de chiffrement : C'est le mot de passe pour accéder à la connexion, en WPA-PSK, cette clé doit avoit entre 8 et 63 caractères.

== Configuration du fichier interfaces ==
=== wpasupplicant ===
'''wpasupplicant''' est un paquet disponible dans toutes les versions de Debian dans la section main. On l'installe par :
&lt;pre&gt; # aptitude install wpasupplicant
&lt;/pre&gt;
Il va nous fournir l'outil '''wpa_passphrase''' qui va nous permettre de récupérer la clé cryptée à partir du mot de passe en clair et du nom de notre réseau ( ssid ).
Cette clé chiffrée devra être indiquée dans le fichier interfaces.

Par exemple :
* notre réseau se nomme : Mon_wifi_chez_moi
* la clé en clair est   : Ma_clé_ultra_secrète_anti_hackers

On lance en console wpa_passphrase comme ceci : '''wpa_passphrase &lt;ssid&gt; &lt;clé en clair&gt;'''

Ce qui, dans l'exemple donne :

&lt;pre&gt;
$ wpa_passphrase Mon_wifi_chez_moi Ma_clé_ultra_secrète_anti_hackers
network={
	ssid=&quot;Mon_wifi_chez_moi&quot;
	#psk=&quot;Ma_clé_ultra_secrète_anti_hackers&quot;
	psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116
}
&lt;/pre&gt;

On vient de récupérer la clé chiffrée, ici '''psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116'''. Il suffira alors de la recopier

Vous pouvez recopier le résultat complet de la commande wpa_passphrase dans /etc/wpasupplicant.conf. Vous pourrez alors vous connectez en lançant (en root) :

 # wpa_supplicant -i&lt;interface&gt; -d&lt;driver&gt;-c/etc/wpa_supplicant.conf

Pour '''&lt;driver&gt;''', en général, il faut indiquer « wext ». Mais ceci peut varier selon votre carte WiFi et la version de wpa_supplicant. Pour voir la liste des drivers, lancez :

 $ /sbin/wpa_supplicant -l

Pour automatiser la connexion, il est préférable d'utiliser le fichier '''interfaces''' :

=== Remplir /etc/network/interfaces ===

&lt;u&gt;Nota&lt;/u&gt; : nous appelons notre interface wlan0, &lt;u&gt;c'est peut-être différent chez vous&lt;/u&gt;. Donc adaptez en fonction de vos propres paramètres.

==== Avec le serveur en DHCP ====

&lt;pre&gt;
# Configuration avec le serveur en DHCP
auto wlan0
iface wlan0 inet dhcp
wpa-conf managed
wpa-ap-scan 1
wpa-scan-ssid 1
wpa-ssid Mon_wifi_chez_moi
wpa-key-mgmt WPA-PSK
wpa-psk ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116
&lt;/pre&gt;
==== Avec le serveur en statique ====

&lt;u&gt;Nota&lt;/u&gt; : Ici, les adresses sont complètement définies, &lt;u&gt;modifiez les avec vos propres adresses.&lt;/u&gt;

&lt;pre&gt;
# Configuration en statique
auto wlan0
iface wlan0 inet static
address 192.168.0.2
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.0.1
wpa-conf managed
wpa-ap-scan 1
wpa-scan-ssid 1
wpa-ssid Mon_wifi_chez_moi
wpa-key-mgmt WPA-PSK
wpa-psk ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116
&lt;/pre&gt;

== Configuration nomade ==

Pour un portable, il est possible de configurer sa connection pour plusieurs réseaux, selon l'endroit où l'on se trouve. Il y a deux méthodes :

=== Guessnet ===

Guessnet est un gestionnaire de connexions multiples. Sa configuration est détaillée sur cette page : http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13839

=== wpasupplicant.conf comme gestionnaire de connexions ===

Vous pouvez renseigner plusieurs réseaux différents dans '''/etc/wpasupplicant.conf'''.
Il est possible d'ajouter une ligne priority pour déterminer la priorité de l'interface :

 network={
        ssid=&quot;Mon_wifi_chez_moi&quot;
	psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116
        priority=2
 }

Vous pouvez ajouter un « catch-all » pour capter les réseaux publics :

 network={
        key_mgmt=none
        priority=1
 }

Pour que le fichier '''wpasupplicant.conf''' soit utilisé au démarrage, il faut renseigner dans le fichier '''/etc/network/interfaces''' :

 auto &lt;interface&gt;
 iface &lt;interface&gt; inet manual
     wpa-driver wext (ou autre, voir plus haut)
     wpa-roam /etc/wpasupplicant/wpasupplicant.conf

== Relancer le réseau ==

Vous devez relancer le réseau afin de prendre en compte les nouveaux paramètres avec :

&lt;pre&gt;
# /etc/init.d/networking restart
&lt;/pre&gt;

[[Category:Wifi]]</text>
      <sha1>j1zt3q59qq45cnuffnahqnrcmsj16gk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>940</id>
      <parentid>913</parentid>
      <timestamp>2010-02-07T00:35:54Z</timestamp>
      <contributor>
        <username>Kna</username>
        <id>35</id>
      </contributor>
      <comment>Partie sur wpasupplicant (sauf wpa_passphrase et connexion nomade) déplacée dans [[Configuration_du_réseau]]</comment>
      <text xml:space="preserve" bytes="3908">Si vous ne voulez pas que votre connexion wifi soit utilisée à votre insu, vous devez faire en sorte que celle-ci soit chiffrée.

Il existe plusieurs types de chiffrement, le WEP, le WPA-802.xx, le WPA-PSK... Nous ne nous intéresserons ici qu'au WPA-PSK car celui-ci est bien plus sécurisé que le WEP, assez facile à contourner.


== Configuration du fichier interfaces ==

Assurez vous d'avoir les paquets '''wireless-tools''' et '''wpasupplicant''' installés :

 # aptitude install wireless-tools wpasupplicant

=== Déterminer la clé chiffrée ===

Nous utilisons l'outil '''wpa_passphrase''' qui va nous permettre de récupérer la clé chiffrée à partir du mot de passe en clair et du nom de notre réseau ( ssid ).
Cette clé chiffrée devra être indiquée dans le fichier interfaces.

Par exemple :
* notre réseau se nomme : Mon_wifi_chez_moi
* la clé en clair est   : Ma_clé_ultra_secrète_anti_hackers

On lance en console wpa_passphrase comme ceci : '''wpa_passphrase &lt;ssid&gt; &lt;clé en clair&gt;'''

Ce qui, dans l'exemple donne :

&lt;pre&gt;
$ wpa_passphrase Mon_wifi_chez_moi Ma_clé_ultra_secrète_anti_hackers
network={
	ssid=&quot;Mon_wifi_chez_moi&quot;
	#psk=&quot;Ma_clé_ultra_secrète_anti_hackers&quot;
	psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116
}
&lt;/pre&gt;

On vient de récupérer la clé chiffrée, ici '''psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116'''. Il suffira alors de la recopier dans le fichier interfaces.

=== Remplir /etc/network/interfaces ===

&lt;u&gt;Nota&lt;/u&gt; : nous appelons notre interface wlan0, &lt;u&gt;c'est peut-être différent chez vous&lt;/u&gt;. Donc adaptez en fonction de vos propres paramètres.

==== Avec le serveur en DHCP ====

&lt;pre&gt;
# Configuration avec le serveur en DHCP
auto wlan0
iface wlan0 inet dhcp
wpa-conf managed
wpa-ap-scan 1
wpa-scan-ssid 1
wpa-ssid Mon_wifi_chez_moi
wpa-key-mgmt WPA-PSK
wpa-psk ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116
&lt;/pre&gt;
==== Avec le serveur en statique ====

&lt;u&gt;Nota&lt;/u&gt; : Ici, les adresses sont complètement définies, &lt;u&gt;modifiez les avec vos propres adresses.&lt;/u&gt;

&lt;pre&gt;
# Configuration en statique
auto wlan0
iface wlan0 inet static
address 192.168.0.2
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.0.1
wpa-conf managed
wpa-ap-scan 1
wpa-scan-ssid 1
wpa-ssid Mon_wifi_chez_moi
wpa-key-mgmt WPA-PSK
wpa-psk ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116
&lt;/pre&gt;

== Configuration nomade ==

Pour un portable, il est possible de configurer sa connection pour plusieurs réseaux, selon l'endroit où l'on se trouve. Il y a deux méthodes :

=== Guessnet ===

Guessnet est un gestionnaire de connexions multiples. Sa configuration est détaillée sur cette page : http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13839

=== wpasupplicant.conf comme gestionnaire de connexions ===

Vous pouvez renseigner plusieurs réseaux différents dans '''/etc/wpasupplicant.conf'''.
Il est possible d'ajouter une ligne priority pour déterminer la priorité de l'interface :

 network={
        ssid=&quot;Mon_wifi_chez_moi&quot;
        psk=ff9116847b8e1515fc66232fd33161fdc7f7910a165b64328e905724e7308116
        priority=2
 }

Vous pouvez ajouter un « catch-all » pour capter les réseaux publics :

 network={
        key_mgmt=none
        priority=1
 }

Pour que le fichier '''wpasupplicant.conf''' soit utilisé au démarrage, il faut renseigner dans le fichier '''/etc/network/interfaces''' :

 auto &lt;interface&gt;
 iface &lt;interface&gt; inet manual
     wpa-driver wext (ou autre, voir plus haut)
     wpa-roam /etc/wpasupplicant/wpasupplicant.conf

Pour plus de détails sur le fichier '''wpasupplicant.conf''', allez à la page [[Configuration_du_réseau]]

== Relancer le réseau ==

Vous devez relancer le réseau afin de prendre en compte les nouveaux paramètres avec :

&lt;pre&gt;
# /etc/init.d/networking restart
&lt;/pre&gt;

[[Category:Wifi]]</text>
      <sha1>g54cu3yon7jqai8myr92wg9ao8xt95t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Interfaces graphiques Rsync</title>
    <ns>0</ns>
    <id>746</id>
    <revision>
      <id>3278</id>
      <timestamp>2011-08-12T07:42:11Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « '''Les interfaces graphiques pour Rsync'''  Il existe plusieurs interfaces graphiques utilisant Rsync pour simplifier vos sauvegrades. Même si elle sont très pratiques, n'o... »</comment>
      <text xml:space="preserve" bytes="1116">'''Les interfaces graphiques pour Rsync'''

Il existe plusieurs interfaces graphiques utilisant Rsync pour simplifier vos sauvegrades.
Même si elle sont très pratiques, n'oubliez pas que rien ne vaut un bon petit script personnel...

== LuckyBackup ==

Très belle interface réalisée en Qt4, très complète:

 # apt-get install luckybackup

[[Fichier:LuckyBackup.jpeg|480px]]

LuckyBackup dispose d'une aide très complète:

[[Fichier:LuckyBackup1.jpeg|480px]]

== Gadmin-rsync ==

GAdminRsync est une interface utilisateur C/GTK+ graphique pour le client Rsync et Rsync-Server.

 # apt-get install gadmin-rsync

L'aide intégrée au logiciel n'est pas très complète, mais vous trouverez sur le Net une documentation abondante.

[[Fichier:Gadmin-Rsync.jpeg|480px]]

== Grsync ==

Synchronisation utilisant Rsync de fichiers et dossiers au travers d'une interface graphique GTK.
L'interface graphique simple, mais programme toujours aussi puissant grâce à Rsync...

[[Fichier:GRsync1.jpeg|480px]]

== GtkRsync ==

A faire

[[Utilisateur:Lol|Lol]] 12 août 2011 à 02:42 (CDT)
[[Catégorie:Logiciels Divers]]</text>
      <sha1>ocis35ip2n9mn6mj9wunyx137z1db4a</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5747</id>
      <parentid>3278</parentid>
      <timestamp>2014-08-20T04:54:59Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Grsync */ chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="1120">'''Les interfaces graphiques pour Rsync'''

Il existe plusieurs interfaces graphiques utilisant Rsync pour simplifier vos sauvegrades.
Même si elle sont très pratiques, n'oubliez pas que rien ne vaut un bon petit script personnel...

== LuckyBackup ==

Très belle interface réalisée en Qt4, très complète:

 # apt-get install luckybackup

[[Fichier:LuckyBackup.jpeg|480px]]

LuckyBackup dispose d'une aide très complète:

[[Fichier:LuckyBackup1.jpeg|480px]]

== Gadmin-rsync ==

GAdminRsync est une interface utilisateur C/GTK+ graphique pour le client Rsync et Rsync-Server.

 # apt-get install gadmin-rsync

L'aide intégrée au logiciel n'est pas très complète, mais vous trouverez sur le Net une documentation abondante.

[[Fichier:Gadmin-Rsync.jpeg|480px]]

== Grsync ==

Synchronisation utilisant Rsync de fichiers et répertoires au travers d'une interface graphique GTK.
L'interface graphique simple, mais programme toujours aussi puissant grâce à Rsync...

[[Fichier:GRsync1.jpeg|480px]]

== GtkRsync ==

A faire

[[Utilisateur:Lol|Lol]] 12 août 2011 à 02:42 (CDT)
[[Catégorie:Logiciels Divers]]</text>
      <sha1>fjf4w832exirhhikj3yi2971mryz9p0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Introduction au routage</title>
    <ns>0</ns>
    <id>686</id>
    <revision>
      <id>2971</id>
      <timestamp>2011-05-08T16:56:07Z</timestamp>
      <contributor>
        <username>Tetrix</username>
        <id>117</id>
      </contributor>
      <comment>Page créée avec « Le routage à partir de son PC  http://www.isalo.org/wiki.debian-fr/index.php?title=Configuration_du_r%C3%A9seau#Routage  http://bird.network.cz/    * Squeeze(1.2.5-1)       ... »</comment>
      <text xml:space="preserve" bytes="4427">Le routage à partir de son PC

http://www.isalo.org/wiki.debian-fr/index.php?title=Configuration_du_r%C3%A9seau#Routage

http://bird.network.cz/

  * Squeeze(1.2.5-1)        http://packages.debian.org/fr/squeeze/bird
  * Wheezy(1.3.0-1)         http://packages.debian.org/fr/wheezy/bird
  * Sid(1.3.1-1 and others) http://packages.debian.org/fr/sid/bird

The BIRD Internet Routing Daemon &quot;Le démon de routage Internet BIRD&quot;(citation),

Le projet BIRD vise à développer une dynamique fonctionnelle IP de routage principalement ciblée sur (mais non limité à) les systèmes UNIX et distribué sous la Licence Publique Générale GNU .

2.5.2011 - Nouvelle version 1.3.1. Diverses corrections de bugs mineurs. Des améliorations mineures liées à BGP et au port Linux.

Qu'est-ce que nous soutenons:

  * Les adresses IPv4 et IPv6 (utiliser-ipv6 lors de la configuration)
  * Plusieurs tables de routage
  * BGP BGP
  * RIP RIP
  * OSPF OSPF
  * Les routes statiques
  * Inter-table de protocole
  * Interface de ligne de commande (en utilisant le «birdc« client; pour obtenir de l'aide, appuyez simplement sur ​​&quot;?&quot;)
  * Très peu de commandes en ligne pour changer la configuration, il suffit d'éditer le fichier de configuration ,

qui délivre un «configure» commande ou envoyer SIGHUP BIRD cela commencera à utiliser la nouvelle configuration, redémarrer les protocoles touchés par les changements de configuration

  * Puissant langage de la ligne de filtrage 

BIRD a été développé comme un projet scolaire à la Faculté de Mathématiques et de Physique , Charles de Prague.Actuellement, il est développé et soutenu par Labs CZ.NIC .Les membres de l'équipe actuelle sont les suivants:

  * Ondrej Filip (OSPF, port BSD, les communiqués, l'emballage)
  * Martin Mares (architecture globale, de base, les décharges, BGP)
  * Ondrej Zajicek (Nouvelles fonctionnalités BGP, OSPFv3) 

Ancien membres de l'équipe: Libor Forst et Pavel Machek .

Il existe aussi une mailing-list des développeurs et des utilisateurs BIRD: bird-users@network.cz .Pour vous abonner à la liste, envoyez simplement un &quot;abonnez-utilisateurs de commande d'oiseaux&quot;(en anglais :&quot;BIRD command-user&quot;) dans un mail à majordomo@network.cz .

Vous pouvez regarder les sources et les rejets .



http://www.openbgpd.org/fr/index.html

OpenBGPD est une implémentation LIBRE du protocole Border Gateway Protocol, Version 4. Il permet aux machines ordinaires,

d'être utilisées comme des routeurs échangeant des routes avec d'autres systèmes gérant le protocole BGP.

Initié suite à l'insatisfaction procurée par les autres implémentations, OpenBGPD est à présent une implémentation BGP complète, utilisée par de nombreux sites. Les utilisateurs nous félicitent souvent pour la facilité d'utilisation et les hautes performances, ainsi que la fiabilité de OpenBGPD.

Le compagnon de OpenBGPD, OpenOSPFD, apporte le support du protocole OSPF.

OpenBGPD est principalement développé par:

   * Henning Brauer et Claudio Jeker; OpenOSPFD est aussi développé by Esben Nørby. 

Les deux font partie du Projet OpenBSD. Le logiciel est librement utilisable et réutilisable par tous, sous une licence BSD.

L'objectif du projet:

Etre le plus sécurisé possible. Coder méticuleusement, contrôler strictement la validité des données, en particulier sur le chemin d'entrée réseau, et réaliser des opérations sur des mémoires tampons bornées. Se servir de la séparation des privilèges pour minimiser l'impact d'un éventuel bogue de sécurité.

La fiabilité est extrêmement importante. L'arrêt de bgpd entraîne habituellement la perte des routes et donc de l'accessibilité.

Fournir une implémentation légère, suffisante dans la majorité des cas. Ne pas essayer de supporter tous les cas d'utilisation, plus obscurs les uns que les autres mais supporter les cas typiques.

Fournir une syntaxe de configuration alliant facilité de compréhension et efficacité.

Etre très rapide et avoir une très bonne gestion de la mémoire.

Comme bgpd gère des tables avec des centaines de milliers d'entrées, celles-ci doivent être conçues avec attention , aux vues de leur besoin en mémoire.



  * Quagga, successeur de GNU Zebra,

http://www.quagga.net/

http://openmaniak.com/fr/quagga_tutorial.php#debian_conf



  * XORP.

http://www.xorp.org/

http://packages.debian.org/search?keywords=xorp</text>
      <sha1>06e8fiz8dkfscmqwy0mw4j2d9o11hgn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2991</id>
      <parentid>2971</parentid>
      <timestamp>2011-05-18T14:07:22Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <minor/>
      <comment>a déplacé [[Mon super titre de page]] vers [[Introduction au routage]] : Erreur de titre ;)</comment>
      <text xml:space="preserve" bytes="4427">Le routage à partir de son PC

http://www.isalo.org/wiki.debian-fr/index.php?title=Configuration_du_r%C3%A9seau#Routage

http://bird.network.cz/

  * Squeeze(1.2.5-1)        http://packages.debian.org/fr/squeeze/bird
  * Wheezy(1.3.0-1)         http://packages.debian.org/fr/wheezy/bird
  * Sid(1.3.1-1 and others) http://packages.debian.org/fr/sid/bird

The BIRD Internet Routing Daemon &quot;Le démon de routage Internet BIRD&quot;(citation),

Le projet BIRD vise à développer une dynamique fonctionnelle IP de routage principalement ciblée sur (mais non limité à) les systèmes UNIX et distribué sous la Licence Publique Générale GNU .

2.5.2011 - Nouvelle version 1.3.1. Diverses corrections de bugs mineurs. Des améliorations mineures liées à BGP et au port Linux.

Qu'est-ce que nous soutenons:

  * Les adresses IPv4 et IPv6 (utiliser-ipv6 lors de la configuration)
  * Plusieurs tables de routage
  * BGP BGP
  * RIP RIP
  * OSPF OSPF
  * Les routes statiques
  * Inter-table de protocole
  * Interface de ligne de commande (en utilisant le «birdc« client; pour obtenir de l'aide, appuyez simplement sur ​​&quot;?&quot;)
  * Très peu de commandes en ligne pour changer la configuration, il suffit d'éditer le fichier de configuration ,

qui délivre un «configure» commande ou envoyer SIGHUP BIRD cela commencera à utiliser la nouvelle configuration, redémarrer les protocoles touchés par les changements de configuration

  * Puissant langage de la ligne de filtrage 

BIRD a été développé comme un projet scolaire à la Faculté de Mathématiques et de Physique , Charles de Prague.Actuellement, il est développé et soutenu par Labs CZ.NIC .Les membres de l'équipe actuelle sont les suivants:

  * Ondrej Filip (OSPF, port BSD, les communiqués, l'emballage)
  * Martin Mares (architecture globale, de base, les décharges, BGP)
  * Ondrej Zajicek (Nouvelles fonctionnalités BGP, OSPFv3) 

Ancien membres de l'équipe: Libor Forst et Pavel Machek .

Il existe aussi une mailing-list des développeurs et des utilisateurs BIRD: bird-users@network.cz .Pour vous abonner à la liste, envoyez simplement un &quot;abonnez-utilisateurs de commande d'oiseaux&quot;(en anglais :&quot;BIRD command-user&quot;) dans un mail à majordomo@network.cz .

Vous pouvez regarder les sources et les rejets .



http://www.openbgpd.org/fr/index.html

OpenBGPD est une implémentation LIBRE du protocole Border Gateway Protocol, Version 4. Il permet aux machines ordinaires,

d'être utilisées comme des routeurs échangeant des routes avec d'autres systèmes gérant le protocole BGP.

Initié suite à l'insatisfaction procurée par les autres implémentations, OpenBGPD est à présent une implémentation BGP complète, utilisée par de nombreux sites. Les utilisateurs nous félicitent souvent pour la facilité d'utilisation et les hautes performances, ainsi que la fiabilité de OpenBGPD.

Le compagnon de OpenBGPD, OpenOSPFD, apporte le support du protocole OSPF.

OpenBGPD est principalement développé par:

   * Henning Brauer et Claudio Jeker; OpenOSPFD est aussi développé by Esben Nørby. 

Les deux font partie du Projet OpenBSD. Le logiciel est librement utilisable et réutilisable par tous, sous une licence BSD.

L'objectif du projet:

Etre le plus sécurisé possible. Coder méticuleusement, contrôler strictement la validité des données, en particulier sur le chemin d'entrée réseau, et réaliser des opérations sur des mémoires tampons bornées. Se servir de la séparation des privilèges pour minimiser l'impact d'un éventuel bogue de sécurité.

La fiabilité est extrêmement importante. L'arrêt de bgpd entraîne habituellement la perte des routes et donc de l'accessibilité.

Fournir une implémentation légère, suffisante dans la majorité des cas. Ne pas essayer de supporter tous les cas d'utilisation, plus obscurs les uns que les autres mais supporter les cas typiques.

Fournir une syntaxe de configuration alliant facilité de compréhension et efficacité.

Etre très rapide et avoir une très bonne gestion de la mémoire.

Comme bgpd gère des tables avec des centaines de milliers d'entrées, celles-ci doivent être conçues avec attention , aux vues de leur besoin en mémoire.



  * Quagga, successeur de GNU Zebra,

http://www.quagga.net/

http://openmaniak.com/fr/quagga_tutorial.php#debian_conf



  * XORP.

http://www.xorp.org/

http://packages.debian.org/search?keywords=xorp</text>
      <sha1>06e8fiz8dkfscmqwy0mw4j2d9o11hgn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2993</id>
      <parentid>2991</parentid>
      <timestamp>2011-05-18T14:09:33Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <text xml:space="preserve" bytes="4459">Le routage à partir de son PC

http://www.isalo.org/wiki.debian-fr/index.php?title=Configuration_du_r%C3%A9seau#Routage

http://bird.network.cz/

  * Squeeze(1.2.5-1)        http://packages.debian.org/fr/squeeze/bird
  * Wheezy(1.3.0-1)         http://packages.debian.org/fr/wheezy/bird
  * Sid(1.3.1-1 and others) http://packages.debian.org/fr/sid/bird

The BIRD Internet Routing Daemon &quot;Le démon de routage Internet BIRD&quot;(citation),

Le projet BIRD vise à développer une dynamique fonctionnelle IP de routage principalement ciblée sur (mais non limité à) les systèmes UNIX et distribué sous la Licence Publique Générale GNU .

2.5.2011 - Nouvelle version 1.3.1. Diverses corrections de bugs mineurs. Des améliorations mineures liées à BGP et au port Linux.

Qu'est-ce que nous soutenons:

  * Les adresses IPv4 et IPv6 (utiliser-ipv6 lors de la configuration)
  * Plusieurs tables de routage
  * BGP BGP
  * RIP RIP
  * OSPF OSPF
  * Les routes statiques
  * Inter-table de protocole
  * Interface de ligne de commande (en utilisant le «birdc« client; pour obtenir de l'aide, appuyez simplement sur ​​&quot;?&quot;)
  * Très peu de commandes en ligne pour changer la configuration, il suffit d'éditer le fichier de configuration ,

qui délivre un «configure» commande ou envoyer SIGHUP BIRD cela commencera à utiliser la nouvelle configuration, redémarrer les protocoles touchés par les changements de configuration

  * Puissant langage de la ligne de filtrage 

BIRD a été développé comme un projet scolaire à la Faculté de Mathématiques et de Physique , Charles de Prague.Actuellement, il est développé et soutenu par Labs CZ.NIC .Les membres de l'équipe actuelle sont les suivants:

  * Ondrej Filip (OSPF, port BSD, les communiqués, l'emballage)
  * Martin Mares (architecture globale, de base, les décharges, BGP)
  * Ondrej Zajicek (Nouvelles fonctionnalités BGP, OSPFv3) 

Ancien membres de l'équipe: Libor Forst et Pavel Machek .

Il existe aussi une mailing-list des développeurs et des utilisateurs BIRD: bird-users@network.cz .Pour vous abonner à la liste, envoyez simplement un &quot;abonnez-utilisateurs de commande d'oiseaux&quot;(en anglais :&quot;BIRD command-user&quot;) dans un mail à majordomo@network.cz .

Vous pouvez regarder les sources et les rejets .



http://www.openbgpd.org/fr/index.html

OpenBGPD est une implémentation LIBRE du protocole Border Gateway Protocol, Version 4. Il permet aux machines ordinaires,

d'être utilisées comme des routeurs échangeant des routes avec d'autres systèmes gérant le protocole BGP.

Initié suite à l'insatisfaction procurée par les autres implémentations, OpenBGPD est à présent une implémentation BGP complète, utilisée par de nombreux sites. Les utilisateurs nous félicitent souvent pour la facilité d'utilisation et les hautes performances, ainsi que la fiabilité de OpenBGPD.

Le compagnon de OpenBGPD, OpenOSPFD, apporte le support du protocole OSPF.

OpenBGPD est principalement développé par:

   * Henning Brauer et Claudio Jeker; OpenOSPFD est aussi développé by Esben Nørby. 

Les deux font partie du Projet OpenBSD. Le logiciel est librement utilisable et réutilisable par tous, sous une licence BSD.

L'objectif du projet:

Etre le plus sécurisé possible. Coder méticuleusement, contrôler strictement la validité des données, en particulier sur le chemin d'entrée réseau, et réaliser des opérations sur des mémoires tampons bornées. Se servir de la séparation des privilèges pour minimiser l'impact d'un éventuel bogue de sécurité.

La fiabilité est extrêmement importante. L'arrêt de bgpd entraîne habituellement la perte des routes et donc de l'accessibilité.

Fournir une implémentation légère, suffisante dans la majorité des cas. Ne pas essayer de supporter tous les cas d'utilisation, plus obscurs les uns que les autres mais supporter les cas typiques.

Fournir une syntaxe de configuration alliant facilité de compréhension et efficacité.

Etre très rapide et avoir une très bonne gestion de la mémoire.

Comme bgpd gère des tables avec des centaines de milliers d'entrées, celles-ci doivent être conçues avec attention , aux vues de leur besoin en mémoire.



  * Quagga, successeur de GNU Zebra,

http://www.quagga.net/

http://openmaniak.com/fr/quagga_tutorial.php#debian_conf



  * XORP.

http://www.xorp.org/

http://packages.debian.org/search?keywords=xorp

[[Catégorie:Réseau_Avancé]]</text>
      <sha1>4hmv5fseb35eehr5ft6g7dbwm86d31l</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2994</id>
      <parentid>2993</parentid>
      <timestamp>2011-05-18T14:33:12Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="4466">Le routage à partir de son PC

http://www.isalo.org/wiki.debian-fr/index.php?title=Configuration_du_r%C3%A9seau#Routage

http://bird.network.cz/

  * Squeeze(1.2.5-1)        http://packages.debian.org/fr/squeeze/bird
  * Wheezy(1.3.0-1)         http://packages.debian.org/fr/wheezy/bird
  * Sid(1.3.1-1 and others) http://packages.debian.org/fr/sid/bird

The BIRD Internet Routing Daemon &quot;Le démon de routage Internet BIRD&quot;(citation),

Le projet BIRD vise à développer une dynamique fonctionnelle IP de routage principalement ciblée sur (mais non limité à) les systèmes UNIX et distribué sous la Licence Publique Générale GNU .

2.5.2011 - Nouvelle version 1.3.1. Diverses corrections de bugs mineurs. Des améliorations mineures liées à BGP et au port Linux.

Qu'est-ce que nous soutenons:

  * Les adresses IPv4 et IPv6 (utiliser-ipv6 lors de la configuration)
  * Plusieurs tables de routage
  * BGP BGP
  * RIP RIP
  * OSPF OSPF
  * Les routes statiques
  * Inter-table de protocole
  * Interface de ligne de commande (en utilisant le «birdc« client; pour obtenir de l'aide, appuyez simplement sur ​​&quot;?&quot;)
  * Très peu de commandes en ligne pour changer la configuration, il suffit d'éditer le fichier de configuration ,

qui délivre un «configure» commande ou envoyer SIGHUP BIRD cela commencera à utiliser la nouvelle configuration, redémarrer les protocoles touchés par les changements de configuration

  * Puissant langage de la ligne de filtrage 

BIRD a été développé comme un projet scolaire à la Faculté de Mathématiques et de Physique , Charles de Prague.Actuellement, il est développé et soutenu par Labs CZ.NIC .Les membres de l'équipe actuelle sont les suivants:

  * Ondrej Filip (OSPF, port BSD, les communiqués, l'emballage)
  * Martin Mares (architecture globale, de base, les décharges, BGP)
  * Ondrej Zajicek (Nouvelles fonctionnalités BGP, OSPFv3) 

Ancien membres de l'équipe: Libor Forst et Pavel Machek .

Il existe aussi une mailing-list des développeurs et des utilisateurs BIRD: bird-users@network.cz .Pour vous abonner à la liste, envoyez simplement un &quot;abonnez-utilisateurs de commande d'oiseaux&quot;(en anglais :&quot;BIRD command-user&quot;) dans un mail à majordomo@network.cz .

Vous pouvez regarder les sources et les rejets .



http://www.openbgpd.org/fr/index.html

OpenBGPD est une implémentation LIBRE du protocole Border Gateway Protocol, Version 4. Il permet aux machines ordinaires,

d'être utilisées comme des routeurs échangeant des routes avec d'autres systèmes gérant le protocole BGP.

Initié suite à l'insatisfaction procurée par les autres implémentations, OpenBGPD est à présent une implémentation BGP complète, utilisée par de nombreux sites. Les utilisateurs nous félicitent souvent pour la facilité d'utilisation et les hautes performances, ainsi que la fiabilité de OpenBGPD.

Le compagnon de OpenBGPD, OpenOSPFD, apporte le support du protocole OSPF.

OpenBGPD est principalement développé par:

   * Henning Brauer et Claudio Jeker; OpenOSPFD est aussi développé by Esben Nørby. 

Les deux font partie du Projet OpenBSD. Le logiciel est librement utilisable et réutilisable par tous, sous une licence BSD.

L'objectif du projet:

Etre le plus sécurisé possible. Coder méticuleusement, contrôler strictement la validité des données, en particulier sur le chemin d'entrée réseau, et réaliser des opérations sur des mémoires tampons bornées. Se servir de la séparation des privilèges pour minimiser l'impact d'un éventuel bogue de sécurité.

La fiabilité est extrêmement importante. L'arrêt de bgpd entraîne habituellement la perte des routes et donc de l'accessibilité.

Fournir une implémentation légère, suffisante dans la majorité des cas. Ne pas essayer de supporter tous les cas d'utilisation, plus obscurs les uns que les autres mais supporter les cas typiques.

Fournir une syntaxe de configuration alliant facilité de compréhension et efficacité.

Etre très rapide et avoir une très bonne gestion de la mémoire.

Comme bgpd gère des tables avec des centaines de milliers d'entrées, celles-ci doivent être conçues avec attention , aux vues de leur besoin en mémoire.



  * Quagga, successeur de GNU Zebra,

http://www.quagga.net/

http://openmaniak.com/fr/quagga_tutorial.php#debian_conf



  * XORP.

http://www.xorp.org/

http://packages.debian.org/search?keywords=xorp

[[Catégorie:Réseau Généralités]]</text>
      <sha1>6n5kl8axcmio5ljz0ux0icvz1u5yzqa</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>KVM</title>
    <ns>0</ns>
    <id>1258</id>
    <revision>
      <id>5194</id>
      <timestamp>2013-05-17T17:29:06Z</timestamp>
      <contributor>
        <username>Grhim</username>
        <id>116</id>
      </contributor>
      <comment>Page créée avec « KVM :  Kernel-based Virtual Machine, est une machine virtuelle pour Linux,  il peut y avoir un bug apres une mise a jour majeur, le remede est simple,allez dans le bios et... »</comment>
      <text xml:space="preserve" bytes="366">KVM :  Kernel-based Virtual Machine, est une machine virtuelle pour Linux,

il peut y avoir un bug apres une mise a jour majeur, le remede est simple,allez dans le bios et si vous avez un bios reçent , vous aurez a chercher &quot;virtualisation&quot; qui est a mettre sur &quot;on&quot; t, au prochain reboot de la machine vous n'aurez plus le fameux 
[code]KVM DISABLED BY BIOS[/code]</text>
      <sha1>9hnjj3vrcbmhgv62rt73yylmrv8aa22</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5195</id>
      <parentid>5194</parentid>
      <timestamp>2013-05-17T17:29:34Z</timestamp>
      <contributor>
        <username>Grhim</username>
        <id>116</id>
      </contributor>
      <text xml:space="preserve" bytes="355">KVM :  Kernel-based Virtual Machine, est une machine virtuelle pour Linux,

il peut y avoir un bug apres une mise a jour majeur, le remede est simple,allez dans le bios et si vous avez un bios reçent , vous aurez a chercher &quot;virtualisation&quot; qui est a mettre sur &quot;on&quot; , au prochain reboot de la machine vous n'aurez plus le fameux 
 : KVM DISABLED BY BIOS</text>
      <sha1>9xa1lqcscederpxyoyrzi6v8uhpl8i7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5199</id>
      <parentid>5195</parentid>
      <timestamp>2013-05-19T16:18:03Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>message du module kvm lors du boot  : &quot;kvm: disabled by bios&quot;</comment>
      <text xml:space="preserve" bytes="632">Depuis la version 2.6.20, le noyau de Linux intègre le module pour l'hyperviseur de machines virtuelles KVM.&lt;br/&gt;
Si votre machine est équipée d'un microprocesseur intègrant le support de la virtualisation (Amd-V ou Intel-VTx), il se peut quand même que l'option du BIOS de votre carte mère permettant cette fonctionnalité soit désactivée.&lt;br/&gt;
Le module KVM du noyau vous en informe alors au moment du boot en affichant le message suivant :
 kvm: disabled by bios
Chercher &quot;virtualisation&quot; dans les options de votre BIOS et activez cette fonctionalité pour ne plus voir s'afficher ce message d'information à chaque boot.</text>
      <sha1>nosns29ocht88nxlsi59t669c4a05ry</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5200</id>
      <parentid>5199</parentid>
      <timestamp>2013-05-19T16:18:51Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="633">Depuis la version 2.6.20, le noyau de Linux intègre le module pour l'hyperviseur de machines virtuelles KVM.&lt;br/&gt;

Si votre machine est équipée d'un microprocesseur intègrant le support de la virtualisation (Amd-V ou Intel-VTx), il se peut quand même que l'option du BIOS de votre carte mère permettant cette fonctionnalité soit désactivée.&lt;br/&gt;
Le module KVM du noyau vous en informe alors au moment du boot en affichant le message suivant :
 kvm: disabled by bios
Chercher &quot;virtualisation&quot; dans les options de votre BIOS et activez cette fonctionalité pour ne plus voir s'afficher ce message d'information à chaque boot.</text>
      <sha1>mo3osn9u6ibpxqiqccnpmo4k35d8geu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5201</id>
      <parentid>5200</parentid>
      <timestamp>2013-05-19T16:20:32Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="634">Depuis la version 2.6.20, le noyau de Linux intègre le module pour l'hyperviseur de machines virtuelles KVM.&lt;br/&gt;

Si votre machine est équipée d'un microprocesseur intégrant le support de la virtualisation (Amd-V ou Intel-VTx), il se peut quand même que l'option du BIOS de votre carte mère permettant cette fonctionnalité soit désactivée.&lt;br/&gt;
Le module KVM du noyau vous en informe alors au moment du boot en affichant le message suivant :
 kvm: disabled by bios
Chercher &quot;virtualisation&quot; dans les options du BIOS de votre carte mère et activez cette fonctionnalité pour ne plus voir s'afficher ce message d'information.</text>
      <sha1>qol63atjoksindj3zou3i64ft37e7wt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5202</id>
      <parentid>5201</parentid>
      <timestamp>2013-05-19T16:23:00Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <text xml:space="preserve" bytes="646">Depuis la version 2.6.20, le noyau de Linux intègre le module pour l'hyperviseur de machines virtuelles KVM.&lt;br/&gt;

Si votre machine est équipée d'un microprocesseur intégrant le support de la virtualisation (Amd-V ou Intel-VTx), il se peut quand même que l'option du BIOS de votre carte mère permettant cette fonctionnalité soit désactivée.&lt;br/&gt;
Le module KVM du noyau vous en informe alors au moment du boot en affichant le message suivant :
 kvm: disabled by bios
Pour ne plus voir s'afficher ce message d'information, 
chercher dans les options du BIOS de votre carte mère l'option &quot;virtualisation&quot; et activez cette fonctionnalité .</text>
      <sha1>82z3jw5eyxk6ionsvd12sgegw6zi4p6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5203</id>
      <parentid>5202</parentid>
      <timestamp>2013-05-19T22:51:16Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="636">Depuis la version 2.6.20, le noyau de Linux intègre le module pour l'hyperviseur de machines virtuelles KVM.&lt;br/&gt;

Si votre machine est équipée d'un microprocesseur intégrant le support de la virtualisation (Amd-V ou Intel-VTx), il se peut que l'option du BIOS de votre carte mère permettant cette fonctionnalité ne soit pas activée.&lt;br/&gt;
Le module KVM du noyau vous en informe alors au moment du boot en affichant le message suivant :
 kvm: disabled by bios
Pour ne plus voir s'afficher ce message d'information, cherchez dans les options du BIOS de votre carte mère l'option &quot;virtualisation&quot; et activez cette fonctionnalité .</text>
      <sha1>dj630ylozzm7388lpvido5v19ijxdyy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5207</id>
      <parentid>5203</parentid>
      <timestamp>2013-05-23T16:34:26Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>kernel 2.6.20 module KVM</comment>
      <text xml:space="preserve" bytes="715">Depuis la version 2.6.20, le noyau de Linux intègre le module [http://fr.wikipedia.org/wiki/Kernel-based_Virtual_Machine KVM] (Kernel-based Virtual Machine).&lt;br/&gt;

Si votre machine est équipée d'un microprocesseur intégrant le support de la [http://en.wikipedia.org/wiki/X86_virtualization virtualisation x86] (AMD-v ou Intel-VT), il se peut que l'option du BIOS de votre carte mère permettant cette fonctionnalité ne soit pas activée, le module KVM du noyau vous en informe alors en affichant le message suivant :
 kvm: disabled by bios
Pour ne plus voir s'afficher ce message d'information, cherchez dans les options du BIOS de votre carte mère l'option &quot;virtualisation&quot; et activez cette fonctionnalité .</text>
      <sha1>7q2n8acj6usne8itjmbob6upc5xzz0j</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Kna</title>
    <ns>0</ns>
    <id>225</id>
    <revision>
      <id>933</id>
      <timestamp>2010-02-06T17:05:21Z</timestamp>
      <contributor>
        <username>Kna</username>
        <id>35</id>
      </contributor>
      <comment>Page créée avec « Moi aussi j'ai eu droit à ma majuscule. »</comment>
      <text xml:space="preserve" bytes="40">Moi aussi j'ai eu droit à ma majuscule.</text>
      <sha1>n0qjufsanigrwfu0yxnl6b7bddrrakc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>L'etiquetage de paquets via le fichier /etc/apt/preferences</title>
    <ns>0</ns>
    <id>454</id>
    <revision>
      <id>1717</id>
      <timestamp>2010-07-27T09:48:12Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>Creation de la page</comment>
      <text xml:space="preserve" bytes="19003">Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences?


L'etiquetage (ou pinning en VO) consiste a assigner a un paquet (ou a un groupe de paquets) une priorite d'installation differente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermediaire du fichier /etc/apt/preferences. Une installation fraiche ne comporte pas de fichier preferences, il faut donc le creer soi meme.

Chaque depot present dans le sources.list se voit attribuer une priorite d'installation. Par defaut tous les depots ont la meme priorite (500 sauf exception : experimental et backports par exemple qui ont une priorite par defaut de 1), et a priorites egales c'est le numero de version des paquets qui joue : le plus recent est prioritaire.

Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus recents et qui ne viennent pas d'experimental qui ont la priorite, ce qui correspond a sid.

Le fichier de preferences sert a modifier les priorites qui sont affectees aux paquets par APT, et ce par l'intermediaire de regles s'appliquant a un, plusieurs ou un ensemble de paquets (et non a des depots : c'est un abus de language qui peut nuire a la comprehension du fonctionnement des regles). Cette methode peut etre utilisee pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, un fichier preferences n'est utile que si l'on veut mixer differentes branches de debian (par exemple sid avec testing et stable) ou bien lors de l'ajout de depots non officiels dont on veut &quot;affiner&quot; le comportement. Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'etiquetage peut tres vite casser votre systeme.

Citer:
Bien que la fonction de pinning d'APT decrite dans apt_preferences (5) soit puissante, ses effets peuvent etre difficiles a comprendre et a gerer. Vous devriez la considerer comme une Fonction Avancee.


C'est pas moi qui le dit, c'est la doc officielle... donc la premiere chose a se demander c'est &quot;ai je vraiment besoin d'etiqueter des paquets?&quot;. Certains des chapitres suivants devraient vous aider a repondre a cette question, mais cette reponse dependra en tres grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'etiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire meme plusieures fois. Certaines informations sont repetees dans differents paragraphes, j'espere que ce n'est pas redondant mais que ca facilite la comprehension du sujet et evitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi a faire ce tutoriel :

Question concernant le fichier preferences
/etc/apt/preferences et sa première non-mise à jour
Pourquoi les preferences du T&amp;A sont foireux ?
mettre en blacklist des mises à jour APT
Énervant manque d'explications : fichier preferences

Vous pouvez egalement trouver des informations sur l'etiquetage en tapant man apt_preferences dans un terminal.




Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences?


L'etiquetage (ou pinning en VO) consiste a assigner a un paquet (ou a un groupe de paquets) une priorite d'installation differente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermediaire du fichier /etc/apt/preferences. Une installation fraiche ne comporte pas de fichier preferences, il faut donc le creer soi meme.

Chaque depot present dans le sources.list se voit attribuer une priorite d'installation. Par defaut tous les depots ont la meme priorite (500 sauf exception : experimental et backports par exemple qui ont une priorite par defaut de 1), et a priorites egales c'est le numero de version des paquets qui joue : le plus recent est prioritaire.

Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus recents et qui ne viennent pas d'experimental qui ont la priorite, ce qui correspond a sid.

Le fichier de preferences sert a modifier les priorites qui sont affectees aux paquets par APT, et ce par l'intermediaire de regles s'appliquant a un, plusieurs ou un ensemble de paquets (et non a des depots : c'est un abus de language qui peut nuire a la comprehension du fonctionnement des regles). Cette methode peut etre utilisee pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, un fichier preferences n'est utile que si l'on veut mixer differentes branches de debian (par exemple sid avec testing et stable) ou bien lors de l'ajout de depots non officiels dont on veut &quot;affiner&quot; le comportement. Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'etiquetage peut tres vite casser votre systeme.

Citer:
Bien que la fonction de pinning d'APT decrite dans apt_preferences (5) soit puissante, ses effets peuvent etre difficiles a comprendre et a gerer. Vous devriez la considerer comme une Fonction Avancee.


C'est pas moi qui le dit, c'est la doc officielle... donc la premiere chose a se demander c'est &quot;ai je vraiment besoin d'etiqueter des paquets?&quot;. Certains des chapitres suivants devraient vous aider a repondre a cette question, mais cette reponse dependra en tres grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'etiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire meme plusieures fois. Certaines informations sont repetees dans differents paragraphes, j'espere que ce n'est pas redondant mais que ca facilite la comprehension du sujet et evitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi a faire ce tutoriel :

Question concernant le fichier preferences
/etc/apt/preferences et sa première non-mise à jour
Pourquoi les preferences du T&amp;A sont foireux ?
mettre en blacklist des mises à jour APT
Énervant manque d'explications : fichier preferences

Vous pouvez egalement trouver des informations sur l'etiquetage en tapant man apt_preferences dans un terminal.




Stable


L'interet de la branche stable est sa stabilite (etonnant non?). Donc la melanger avec les autres branches est souvent une tres mauvaise idee. Si vous avez besoin de paquets plus recents preferez les backports, la compilation, ou tout simplement utilisez une autre branche principale a la place!

Etant donne qu'il est fortement deconseille de melanger stable et les branches superieures, il est preferable de n'avoir que ses entrees dans le sources.list. Le preferences est donc inutile, sauf si vous souhaitez utiliser les depots backports. Dans ce cas, surtout n'en abusez pas. Installez uniquement les paquets des backports dont vous avez vraiment besoin.

Le sources.list adequat dans ce cas peut-etre le suivant (changez les adresses des depots stable par d'autres que vous prefereriez si vous le souhaitez) :

Code:
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://mirror.home-dn.net/debian-multimedia stable main
#deb-src http://mirror.home-dn.net/debian-multimedia stable main

# backports
deb http://www.backports.org/debian lenny-backports main contrib non-free



Les preferences des backports ont par defaut une valeur de 1. Si vous souhaitez choisir par vous meme quand installer une eventuelle nouvelle version disponible dans ces depots, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installe depuis les backports soit mis a jour automatiquement en cas de nouvelle version disponible dans ces depots, alors vous n'aurez besoin que de cette seule entree dans le fichier preferences :

Code:
Package: *
Pin: release a=lenny-backports
Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option -t :

apt-get install -t lenny-backports paquet ou aptitude install -t lenny-backports paquet.


Pour plus d'informations, reportez vous au : site des backports (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre :

Code:
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://mirror.home-dn.net/debian-multimedia stable main
#deb-src http://mirror.home-dn.net/debian-multimedia stable main


# testing
deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free

# testing security
deb http://security.debian.org/ testing/updates main contrib non-free
#deb-src http://security.debian.org/ testing/updates main contrib non-free

# testing multimedia
deb http://mirror.home-dn.net/debian-multimedia testing main
#deb-src http://mirror.home-dn.net/debian-multimedia testing main


# sid
deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free

# sid multimedia
deb http://mirror.home-dn.net/debian-multimedia sid main
#deb-src http://mirror.home-dn.net/debian-multimedia sid main


Accompagne de ce fichier preferences :

Code:
Package: *
Pin: release o=Debian,a=stable
Pin-Priority: 900

Package: *
Pin: release o=Debian,a=testing
Pin-Priority: -10

Package: *
Pin: release o=Debian,a=unstable
Pin-Priority: -10


Si vous vous contentez de faire les mises a jours et d'installer normalement des paquets, votre systeme sera exactement dans le meme etat que s'il n'avait que le depots stables sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non present dans les depots stables mais present dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.




Stable


L'interet de la branche stable est sa stabilite (etonnant non?). Donc la melanger avec les autres branches est souvent une tres mauvaise idee. Si vous avez besoin de paquets plus recents preferez les backports, la compilation, ou tout simplement utilisez une autre branche principale a la place!

Etant donne qu'il est fortement deconseille de melanger stable et les branches superieures, il est preferable de n'avoir que ses entrees dans le sources.list. Le preferences est donc inutile, sauf si vous souhaitez utiliser les depots backports. Dans ce cas, surtout n'en abusez pas. Installez uniquement les paquets des backports dont vous avez vraiment besoin.

Le sources.list adequat dans ce cas peut-etre le suivant (changez les adresses des depots stable par d'autres que vous prefereriez si vous le souhaitez) :

Code:
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://mirror.home-dn.net/debian-multimedia stable main
#deb-src http://mirror.home-dn.net/debian-multimedia stable main

# backports
deb http://www.backports.org/debian lenny-backports main contrib non-free



Les preferences des backports ont par defaut une valeur de 1. Si vous souhaitez choisir par vous meme quand installer une eventuelle nouvelle version disponible dans ces depots, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installe depuis les backports soit mis a jour automatiquement en cas de nouvelle version disponible dans ces depots, alors vous n'aurez besoin que de cette seule entree dans le fichier preferences :

Code:
Package: *
Pin: release a=lenny-backports
Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option -t :

apt-get install -t lenny-backports paquet ou aptitude install -t lenny-backports paquet.


Pour plus d'informations, reportez vous au : site des backports (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre :

Code:
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://mirror.home-dn.net/debian-multimedia stable main
#deb-src http://mirror.home-dn.net/debian-multimedia stable main


# testing
deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free

# testing security
deb http://security.debian.org/ testing/updates main contrib non-free
#deb-src http://security.debian.org/ testing/updates main contrib non-free

# testing multimedia
deb http://mirror.home-dn.net/debian-multimedia testing main
#deb-src http://mirror.home-dn.net/debian-multimedia testing main


# sid
deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free

# sid multimedia
deb http://mirror.home-dn.net/debian-multimedia sid main
#deb-src http://mirror.home-dn.net/debian-multimedia sid main


Accompagne de ce fichier preferences :

Code:
Package: *
Pin: release o=Debian,a=stable
Pin-Priority: 900

Package: *
Pin: release o=Debian,a=testing
Pin-Priority: -10

Package: *
Pin: release o=Debian,a=unstable
Pin-Priority: -10


Si vous vous contentez de faire les mises a jours et d'installer normalement des paquets, votre systeme sera exactement dans le meme etat que s'il n'avait que le depots stables sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non present dans les depots stables mais present dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.




Sid


Comme testing, sid n'est pas toujours complete d'ou l'utilite d'avoir les autres branches facilement accessibles. Cela dit il faut quand meme surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise aptitude qui propose souvent des solutions complexes.

Pour le sources.list suivant :

Code:
# lenny
deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free

# lenny security
deb http://security.debian.org/ lenny/updates main contrib non-free
#deb-src http://security.debian.org/ lenny/updates main contrib non-free

# lenny volatile
deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free

# lenny multimedia
deb http://mirror.home-dn.net/debian-multimedia lenny main
#deb-src http://mirror.home-dn.net/debian-multimedia lenny main


# squeeze
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free

# squeeze security
deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

# squeeze multimedia
deb http://mirror.home-dn.net/debian-multimedia squeeze main
#deb-src http://mirror.home-dn.net/debian-multimedia squeeze main


# sid
deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free

# sid multimedia
deb http://mirror.home-dn.net/debian-multimedia sid main
#deb-src http://mirror.home-dn.net/debian-multimedia sid main


Il n'y a pas besoin de fichier preferences puisque par defaut tous les depots ont la meme priorite, et a priorites egales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installe. Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets.

Si vous souhaitez utiliser les depots experimental, utilisez un sources.list complet comme celui presente dans le paragraphe Testing. Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables, a plus fortes raison ceux de multimedia, mais si vous tenez a ces depots alors utilisez ce fichier preferences pour eviter les problemes :

Code:
Package: *
Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
Pin-Priority: 1</text>
      <sha1>qmj68ov3pmt5cr0xwql1dl9ng43vzcf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1718</id>
      <parentid>1717</parentid>
      <timestamp>2010-07-27T09:55:49Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>Rajout de texte</comment>
      <text xml:space="preserve" bytes="26716">Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences?


L'etiquetage (ou pinning en VO) consiste a assigner a un paquet (ou a un groupe de paquets) une priorite d'installation differente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermediaire du fichier /etc/apt/preferences. Une installation fraiche ne comporte pas de fichier preferences, il faut donc le creer soi meme.

Chaque depot present dans le sources.list se voit attribuer une priorite d'installation. Par defaut tous les depots ont la meme priorite (500 sauf exception : experimental et backports par exemple qui ont une priorite par defaut de 1), et a priorites egales c'est le numero de version des paquets qui joue : le plus recent est prioritaire.

Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus recents et qui ne viennent pas d'experimental qui ont la priorite, ce qui correspond a sid.

Le fichier de preferences sert a modifier les priorites qui sont affectees aux paquets par APT, et ce par l'intermediaire de regles s'appliquant a un, plusieurs ou un ensemble de paquets (et non a des depots : c'est un abus de language qui peut nuire a la comprehension du fonctionnement des regles). Cette methode peut etre utilisee pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, un fichier preferences n'est utile que si l'on veut mixer differentes branches de debian (par exemple sid avec testing et stable) ou bien lors de l'ajout de depots non officiels dont on veut &quot;affiner&quot; le comportement. Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'etiquetage peut tres vite casser votre systeme.

Citer:
Bien que la fonction de pinning d'APT decrite dans apt_preferences (5) soit puissante, ses effets peuvent etre difficiles a comprendre et a gerer. Vous devriez la considerer comme une Fonction Avancee.


C'est pas moi qui le dit, c'est la doc officielle... donc la premiere chose a se demander c'est &quot;ai je vraiment besoin d'etiqueter des paquets?&quot;. Certains des chapitres suivants devraient vous aider a repondre a cette question, mais cette reponse dependra en tres grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'etiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire meme plusieures fois. Certaines informations sont repetees dans differents paragraphes, j'espere que ce n'est pas redondant mais que ca facilite la comprehension du sujet et evitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi a faire ce tutoriel :

Question concernant le fichier preferences
/etc/apt/preferences et sa première non-mise à jour
Pourquoi les preferences du T&amp;A sont foireux ?
mettre en blacklist des mises à jour APT
Énervant manque d'explications : fichier preferences

Vous pouvez egalement trouver des informations sur l'etiquetage en tapant man apt_preferences dans un terminal.




Structure du fichier /etc/apt/preferences


Ce fichier est constitue d'une ou plusieurs entrees separees par des lignes blanches. Un exemple d'entrees de fichier preferences :

Code:
   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entree est de la forme suivante :

Code:
   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou negatif)


Pour completer au mieux ces entrees nous nous servirons de la commande apt-cache policy qui donne des resultats de ce type :

Code:
500 http://ftp2.fr.debian.org stable/contrib Packages
release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
origin ftp2.fr.debian.org


Dans cet exemple 500 indique la priorite assignee au depot http://ftp2.fr.debian.org stable/contrib. Les variables telles release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib serviront a completer la ligne Pin des entrees du fichier preferences et sont donc expliquees au paragraphe qui la concerne un peu plus bas.


Detaillons ligne par ligne les entrees du fichier preferences :

- Ligne Package

C'est la qu'est indique le nom du paquet etiquete ou * si l'etiquetage concerne tout un groupe de paquets defini par la ligne Pin.


- Ligne Pin

Cette ligne servira a indiquer quels paquets seront concernes par l'etiquetage de cette entree. Pour cela on se sert d'une (ou plusieures) variable(s) indiquee(s) a la ligne release du apt-cache policy, dans l'exemple precedent : release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib.

Les fichiers de configuration des depots se trouvent dans /var/lib/apt/lists/. La valeur de ces variables (v,o,a,n,...) est indiquee dans les fichiers *Release comme par exemple /var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release dont voici la partie qui nous interesse :

Code:
Origin: Debian
Label: Debian
Suite: stable
Version: 5.0.5
Codename: stable
Date: Sat, 26 Jun 2010 12:12:50 UTC
Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
Components: main contrib non-free
Description: Debian 5.0.5 Released 26 June 2010


La commande apt-cache policy n'est qu'un moyen tres accessible de synthetiser cela et de voir quelles sont les priorites qu'APT attribut a un, plusieurs ou des ensembles de paquets.


Ainsi cette entree :

Code:
   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit :

Citer:
Package: * -&gt; L'ensemble des paquets
Pin: release o=Debian,a=stable -&gt; se trouvant dans des depots dont la variable Origin (o) a pour valeur &quot;Debian&quot; et la variable Suite (a) a pour valeur &quot;stable&quot;
Pin-Priority: 900 -&gt; ont une priorite de 900


Et cette entree ci :

Code:
   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001

Se lit donc comme suit :

Citer:
Package: ardour -&gt; Le paquet ardour
Pin: release a=unstable -&gt; se trouvant dans des depots dont la variable Suite (a) a pour valeur &quot;now&quot;
Pin-Priority: 1001 -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent etre ces valeurs :

Citer:
o= correspond a Origin
dans notre exemple -&gt; Pin: release o=Debian

l= correspond a label
dans notre exemple -&gt; Pin: release l=Debian

a= correspond a Suite
dans notre exemple -&gt; Pin: release a=stable

v= correspond a Version
dans notre exemple -&gt; Pin: release v=5.0.5

c= correspond a Components
dans notre exemple -&gt; Pin: release c=contrib

n= correspond a Codename
dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieures de ces variables dans la ligne Pin. Il n'est pas forcement utile de les inclure toutes, une ou deux bien utilisees peuvent tout a fait etre suffisantes.


- Ligne Pin-Priority

C'est sur cette ligne qu'est indiquee la priorite du paquet ou groupe de paquets. Elle doit etre un entier positif ou negatif. Ces priorites sont interpretes a peu pres comme suit :

Citer:
P &gt; 1000
Cette priorite entraine l'installation du paquet meme s'il s'agit d'un retour en arriere.

990 &lt; P &lt;=1000
La version sera installee, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.

500 &lt; P &lt;=990
La version sera installee, sauf s'il existe une version appartenant a la distribution par defaut ou si la version installee est plus recente.

100 &lt; P &lt;=500
La version sera installee, sauf s'il existe une version appartenant a une autre distribution ou si la version installee est plus recente.

0 &lt; P &lt;=100
La version sera installee si aucune version du paquet n'est installee.

P &lt; 0
Cette priorite empeche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a etablir des priorites qui ne mettront pas votre systeme en danger. Dans ce qui suit, &quot;branche principale&quot; designe la branche de Debian que vous avez choisie de suivre en priorite (stable, testing ou sid), les autres depots presents dans le sources.list ne servant qu'a y piocher des paquets si besoin est.

- Garder des priorites identiques pour les depots Debian officiels d'une meme branche. C'est le comportement par defaut (quand l'on a que les depots de la branche principale dans le sources.list sans preferences). Tout manquement a cette regle casse le comportement par defaut et peut generer des resultats tres dommageables car non prevus par les devellopeurs Debian.

- Attribuer une priorite comprise entre 500 et &lt;990 pour la branche principale et la/les branche(s) comportant des paquets aux versions =&lt; a cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option -t &lt;branche&gt; pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par defaut et a donc une priorite de 990. On comprend donc aisement qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les methodes pour piocher dans les differents depots sont expliquees un peu plus bas, dans le paragraphe &quot;Comment piocher dans les differents depots du sources.list?&quot;, ce qui devrait clarifier ce point.

- Attribuer une priorite comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; a la branche principale. Ceci permet d'installer les paquets a la demande ou a aptitude de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installes a partir des ces depots.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent a jours automatiquement si une nouvelle version est placee dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorite a ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences generique du fait des dependances.

- D'un point de vue pratique, utiliser des chiffres ronds (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de depots, etc) sans avoir a decaler toutes les autres entrees dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la differences entre les differentes priorites des depots a la lecture du apt-cache policy.


- Comment piocher dans les differents depots du sources.list?

Tout d'abord, pour que le fichier preferences soit pris en compte apres une modification, il vous faut mettre a jour APT en utilisant soit la commande apt-get update, soit la commande aptitude update. Verifiez ensuite a l'aide de apt-cache policy que les priorites sont correctes.


Il y a deux manieres d'indiquer a APT d'aller piocher dans des depots differents que ceux de la branche principale (les commandes qui suivent sont valable a la fois pour apt-get et pour aptitude) :

Vous utiliserez apt-get install -t &lt;branche&gt; paquet(s) si vous voulez installer un paquet avec une version superieure a celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour present dans sid parce qu'il est plus recent, vous utiliserez cette commande :

Code:
   apt-get install -t unstable ardour


Lorsque l'on utilise l'option -t &lt;branche&gt; pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dependances sont mieux gerees.


Vous utiliserez apt-get install paquet/&lt;branche&gt; si vous voulez downgrader la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguee, vous utiliserez cette commande :

Code:
   apt-get install ardour/testing



Le probleme c'est que APT voudra remettre a niveau le paquet downgrade lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installee. Pour cela il y a deux possibilites :

Soit utiliser la commande aptitude hold paquet. Pour debloquer le paquet il suffira de lancer la commande aptitude unhold paquet.

Soit etiqueter le paquet dans le fichier preferences avec une priorite de 1001 et en renseignant la ligne Pin avec le numero de version du paquet bloque ou avec la variable release a=now.


Par exemple si je veux downgrader ardour de la version 1:2.8.11-1 presente dans sid a la version 1:2.8.9-1 presente dans testing, j'effectuerai un aptitude install ardour/testing avant d'ajouter cette entree dans le preferences :

Code:
   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numero de version a inserer dans la ligne pin, un apt-cache policy paquet vous renseignera, dans le cas de notre exemple :

Code:
# apt-cache policy ardour
ardour:
  Installé : 1:2.8.11-1
  Candidat : 1:2.8.11-1
Table de version :
*** 1:2.8.11-1 0
        500 http://ftp2.fr.debian.org sid/main Packages
        100 /var/lib/dpkg/status
      1:2.8.9-1 0
        500 http://ftp2.fr.debian.org squeeze/main Packages



Encore plus simple, vous pouvez assigner a la ligne Pin la variable de release a=now, variable que l'on pourrait expliquer par paquet(s) installe(s) maintenant.

Code:
   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entree, le paquet ardour qui est installe maintenant sera forcement installe meme s'il s'agit d'un retour en arriere, donc ne sera pas mis a jour.

Pour debloquer le paquet il suffira d'enlever son entree du fichier preferences.


N'hesitez pas a utiliser l'option de simulation -s. Par exemple faire apt-get install -s ardour/testing va simuler le downgrade du paquet ardour sans l'appliquer reellement, ca permet de verifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez reellement la commande en enlevant l'option -s. cette option fonctionne egalement avec aptitude, ou encore en combinaison avec l'option -t (par exemple apt-get install -s -t unstable ardour), aussi pour effectuer des mises a jours (par exemple aptitude safe-upgrade -s), etc... C'est une securite non negligeable.


Stable


L'interet de la branche stable est sa stabilite (etonnant non?). Donc la melanger avec les autres branches est souvent une tres mauvaise idee. Si vous avez besoin de paquets plus recents preferez les backports, la compilation, ou tout simplement utilisez une autre branche principale a la place!

Etant donne qu'il est fortement deconseille de melanger stable et les branches superieures, il est preferable de n'avoir que ses entrees dans le sources.list. Le preferences est donc inutile, sauf si vous souhaitez utiliser les depots backports. Dans ce cas, surtout n'en abusez pas. Installez uniquement les paquets des backports dont vous avez vraiment besoin.

Le sources.list adequat dans ce cas peut-etre le suivant (changez les adresses des depots stable par d'autres que vous prefereriez si vous le souhaitez) :

Code:
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://mirror.home-dn.net/debian-multimedia stable main
#deb-src http://mirror.home-dn.net/debian-multimedia stable main

# backports
deb http://www.backports.org/debian lenny-backports main contrib non-free



Les preferences des backports ont par defaut une valeur de 1. Si vous souhaitez choisir par vous meme quand installer une eventuelle nouvelle version disponible dans ces depots, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installe depuis les backports soit mis a jour automatiquement en cas de nouvelle version disponible dans ces depots, alors vous n'aurez besoin que de cette seule entree dans le fichier preferences :

Code:
Package: *
Pin: release a=lenny-backports
Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option -t :

apt-get install -t lenny-backports paquet ou aptitude install -t lenny-backports paquet.


Pour plus d'informations, reportez vous au : site des backports (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre :

Code:
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://mirror.home-dn.net/debian-multimedia stable main
#deb-src http://mirror.home-dn.net/debian-multimedia stable main


# testing
deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free

# testing security
deb http://security.debian.org/ testing/updates main contrib non-free
#deb-src http://security.debian.org/ testing/updates main contrib non-free

# testing multimedia
deb http://mirror.home-dn.net/debian-multimedia testing main
#deb-src http://mirror.home-dn.net/debian-multimedia testing main


# sid
deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free

# sid multimedia
deb http://mirror.home-dn.net/debian-multimedia sid main
#deb-src http://mirror.home-dn.net/debian-multimedia sid main


Accompagne de ce fichier preferences :

Code:
Package: *
Pin: release o=Debian,a=stable
Pin-Priority: 900

Package: *
Pin: release o=Debian,a=testing
Pin-Priority: -10

Package: *
Pin: release o=Debian,a=unstable
Pin-Priority: -10


Si vous vous contentez de faire les mises a jours et d'installer normalement des paquets, votre systeme sera exactement dans le meme etat que s'il n'avait que le depots stables sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non present dans les depots stables mais present dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.




Stable


L'interet de la branche stable est sa stabilite (etonnant non?). Donc la melanger avec les autres branches est souvent une tres mauvaise idee. Si vous avez besoin de paquets plus recents preferez les backports, la compilation, ou tout simplement utilisez une autre branche principale a la place!

Etant donne qu'il est fortement deconseille de melanger stable et les branches superieures, il est preferable de n'avoir que ses entrees dans le sources.list. Le preferences est donc inutile, sauf si vous souhaitez utiliser les depots backports. Dans ce cas, surtout n'en abusez pas. Installez uniquement les paquets des backports dont vous avez vraiment besoin.

Le sources.list adequat dans ce cas peut-etre le suivant (changez les adresses des depots stable par d'autres que vous prefereriez si vous le souhaitez) :

Code:
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://mirror.home-dn.net/debian-multimedia stable main
#deb-src http://mirror.home-dn.net/debian-multimedia stable main

# backports
deb http://www.backports.org/debian lenny-backports main contrib non-free



Les preferences des backports ont par defaut une valeur de 1. Si vous souhaitez choisir par vous meme quand installer une eventuelle nouvelle version disponible dans ces depots, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installe depuis les backports soit mis a jour automatiquement en cas de nouvelle version disponible dans ces depots, alors vous n'aurez besoin que de cette seule entree dans le fichier preferences :

Code:
Package: *
Pin: release a=lenny-backports
Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option -t :

apt-get install -t lenny-backports paquet ou aptitude install -t lenny-backports paquet.


Pour plus d'informations, reportez vous au : site des backports (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre :

Code:
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://mirror.home-dn.net/debian-multimedia stable main
#deb-src http://mirror.home-dn.net/debian-multimedia stable main


# testing
deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free

# testing security
deb http://security.debian.org/ testing/updates main contrib non-free
#deb-src http://security.debian.org/ testing/updates main contrib non-free

# testing multimedia
deb http://mirror.home-dn.net/debian-multimedia testing main
#deb-src http://mirror.home-dn.net/debian-multimedia testing main


# sid
deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free

# sid multimedia
deb http://mirror.home-dn.net/debian-multimedia sid main
#deb-src http://mirror.home-dn.net/debian-multimedia sid main


Accompagne de ce fichier preferences :

Code:
Package: *
Pin: release o=Debian,a=stable
Pin-Priority: 900

Package: *
Pin: release o=Debian,a=testing
Pin-Priority: -10

Package: *
Pin: release o=Debian,a=unstable
Pin-Priority: -10


Si vous vous contentez de faire les mises a jours et d'installer normalement des paquets, votre systeme sera exactement dans le meme etat que s'il n'avait que le depots stables sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non present dans les depots stables mais present dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.




Sid


Comme testing, sid n'est pas toujours complete d'ou l'utilite d'avoir les autres branches facilement accessibles. Cela dit il faut quand meme surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise aptitude qui propose souvent des solutions complexes.

Pour le sources.list suivant :

Code:
# lenny
deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free

# lenny security
deb http://security.debian.org/ lenny/updates main contrib non-free
#deb-src http://security.debian.org/ lenny/updates main contrib non-free

# lenny volatile
deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free

# lenny multimedia
deb http://mirror.home-dn.net/debian-multimedia lenny main
#deb-src http://mirror.home-dn.net/debian-multimedia lenny main


# squeeze
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free

# squeeze security
deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

# squeeze multimedia
deb http://mirror.home-dn.net/debian-multimedia squeeze main
#deb-src http://mirror.home-dn.net/debian-multimedia squeeze main


# sid
deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free

# sid multimedia
deb http://mirror.home-dn.net/debian-multimedia sid main
#deb-src http://mirror.home-dn.net/debian-multimedia sid main


Il n'y a pas besoin de fichier preferences puisque par defaut tous les depots ont la meme priorite, et a priorites egales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installe. Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets.

Si vous souhaitez utiliser les depots experimental, utilisez un sources.list complet comme celui presente dans le paragraphe Testing. Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables, a plus fortes raison ceux de multimedia, mais si vous tenez a ces depots alors utilisez ce fichier preferences pour eviter les problemes :

Code:
Package: *
Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
Pin-Priority: 1</text>
      <sha1>225a3bn5utd7z7fk6pmsl7lagckh4x8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1719</id>
      <parentid>1718</parentid>
      <timestamp>2010-07-27T12:48:17Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>Mise en page</comment>
      <text xml:space="preserve" bytes="26585">



== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==


L'etiquetage (ou pinning en VO) consiste a assigner a un paquet (ou a un groupe de paquets) une priorite d'installation differente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermediaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque depot present dans le sources.list se voit attribuer une priorite d'installation. Par defaut tous les depots ont la meme priorite (500 sauf exception, experimental et backports par exemple qui ont une priorite par defaut de 1), et a priorites egales c'est le numero de version des paquets qui joue, le plus recent est prioritaire.

Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus recents et qui ne viennent pas d'experimental qui ont la priorite, ce qui correspond a sid.

Le fichier de preferences sert a modifier les priorites qui sont affectees aux paquets par APT, et ce par l'intermediaire de regles s'appliquant a un, plusieurs ou un ensemble de paquets (et non a des depots, c'est un abus de language qui peut nuire a la comprehension du fonctionnement des regles). Cette methode peut etre utilisee pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer differentes branches de debian''' (par exemple sid avec testing et stable) ou bien lors de l'ajout de depots non officiels dont on veut &quot;affiner&quot; le comportement. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'etiquetage peut tres vite casser votre systeme.'''

Code:
Bien que la fonction de pinning d'APT decrite dans apt_preferences (5) soit puissante, ses effets peuvent etre difficiles a comprendre et a gerer. Vous devriez la considerer comme une Fonction Avancee.


C'est pas moi qui le dit, c'est la doc officielle... donc la premiere chose a se demander c'est ''ai je vraiment besoin d'etiqueter des paquets?''. Certains des chapitres suivants devraient vous aider a repondre a cette question, mais cette reponse dependra en tres grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'etiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire meme plusieures fois. Certaines informations sont repetees dans differents paragraphes, j'espere que ce n'est pas redondant mais que ca facilite la comprehension du sujet et evitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi a faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298|Question concernant le fichier preferences]
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240|/etc/apt/preferences et sa première non-mise à jour]
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0|Pourquoi les preferences du T&amp;A sont foireux?]
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530|mettre en blacklist des mises à jour APT]
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746|Énervant manque d'explications: fichier preferences]

Vous pouvez egalement trouver des informations sur l'etiquetage en tapant '''man apt_preferences''' dans un terminal.




== Structure du fichier /etc/apt/preferences ==


Ce fichier est constitue d'une ou plusieurs entrees separees par des lignes blanches. Un exemple d'entrees de fichier preferences:

Code:
   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entree est de la forme suivante:

Code:
   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou negatif)


Pour completer au mieux ces entrees nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

Code:
500 http://ftp2.fr.debian.org stable/contrib Packages
release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorite assignee au depot ''http://ftp2.fr.debian.org stable/contrib''. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront a completer la ligne ''Pin'' des entrees du fichier preferences et sont donc expliquees au paragraphe qui la concerne un peu plus bas.


Detaillons ligne par ligne les entrees du fichier preferences:

'''- Ligne Package'''

C'est la qu'est indique le nom du paquet etiquete ou * si l'etiquetage concerne tout un groupe de paquets defini par la ligne ''Pin''.


'''- Ligne Pin'''

Cette ligne servira a indiquer quels paquets seront concernes par l'etiquetage de cette entree. Pour cela on se sert d'une (ou plusieures) variable(s) indiquee(s) a la ligne ''release'' du ''apt-cache policy'', dans l'exemple precedent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des depots se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (v,o,a,n,...) est indiquee dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

Code:
Origin: Debian
Label: Debian
Suite: stable
Version: 5.0.5
Codename: stable
Date: Sat, 26 Jun 2010 12:12:50 UTC
Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
Components: main contrib non-free
Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen tres accessible de synthetiser cela et de voir quelles sont les priorites qu'APT attribut a un, plusieurs ou des ensembles de paquets.


Ainsi cette entree:

Code:
   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

Code:
Package: * -&gt; L'ensemble des paquets
Pin: release o=Debian,a=stable -&gt; se trouvant dans des depots dont la variable Origin (o) a pour valeur &quot;Debian&quot; et la variable Suite (a) a pour valeur &quot;stable&quot;
Pin-Priority: 900 -&gt; ont une priorite de 900


Et cette entree ci:

Code:
   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001

Se lit donc comme suit:

Code:
Package: ardour -&gt; Le paquet ardour
Pin: release a=unstable -&gt; se trouvant dans des depots dont la variable Suite (a) a pour valeur &quot;now&quot;
Pin-Priority: 1001 -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent etre ces valeurs:

Code:
o= correspond a Origin
dans notre exemple -&gt; Pin: release o=Debian

l= correspond a label
dans notre exemple -&gt; Pin: release l=Debian

a= correspond a Suite
dans notre exemple -&gt; Pin: release a=stable

v= correspond a Version
dans notre exemple -&gt; Pin: release v=5.0.5

c= correspond a Components
dans notre exemple -&gt; Pin: release c=contrib

n= correspond a Codename
dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieures de ces variables dans la ligne ''Pin''. Il n'est pas forcement utile de les inclure toutes, une ou deux bien utilisees peuvent tout a fait etre suffisantes.


'''- Ligne Pin-Priority'''

C'est sur cette ligne qu'est indiquee la priorite du paquet ou groupe de paquets. Elle doit etre un entier positif ou negatif. Ces priorites sont interpretes a peu pres comme suit:

Code:
P &gt; 1000
Cette priorite entraine l'installation du paquet meme s'il s'agit d'un retour en arriere.

990 &lt; P &lt;=1000
La version sera installee, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.

500 &lt; P &lt;=990
La version sera installee, sauf s'il existe une version appartenant a la distribution par defaut ou si la version installee est plus recente.

100 &lt; P &lt;=500
La version sera installee, sauf s'il existe une version appartenant a une autre distribution ou si la version installee est plus recente.

0 &lt; P &lt;=100
La version sera installee si aucune version du paquet n'est installee.

P &lt; 0
Cette priorite empeche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a etablir des priorites qui ne mettront pas votre systeme en danger. Dans ce qui suit, ''branche principale'' designe la branche de Debian que vous avez choisie de suivre en priorite (stable, testing ou sid), les autres depots presents dans le sources.list ne servant qu'a y piocher des paquets si besoin est.

- '''Garder des priorites identiques pour les depots Debian officiels d'une meme branche'''. C'est le comportement par defaut (quand l'on a que les depots de la branche principale dans le sources.list sans preferences). Tout manquement a cette regle casse le comportement par defaut et peut generer des resultats tres dommageables car non prevus par les devellopeurs Debian.

- '''Attribuer une priorite comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; a cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t &lt;branche&gt;'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par defaut et a donc une priorite de 990. On comprend donc aisement qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les methodes pour piocher dans les differents depots sont expliquees un peu plus bas, dans le paragraphe ''Comment piocher dans les differents depots du sources.list?'' ce qui devrait clarifier ce point.

- '''Attribuer une priorite comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; a la branche principale'''. Ceci permet d'installer les paquets a la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installes a partir des ces depots.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent a jours automatiquement si une nouvelle version est placee dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorite a ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences generique du fait des dependances.

- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de depots, etc) sans avoir a decaler toutes les autres entrees dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la differences entre les differentes priorites des depots a la lecture du ''apt-cache policy''.


'''- Comment piocher dans les differents depots du sources.list?'''

Tout d'abord, pour que le fichier preferences soit pris en compte apres une modification, il vous faut mettre a jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Verifiez ensuite a l'aide de ''apt-cache policy'' que les priorites sont correctes.


Il y a deux manieres d'indiquer a APT d'aller piocher dans des depots differents que ceux de la branche principale (les commandes qui suivent sont valable a la fois pour ''apt-get'' et pour ''aptitude''):

Vous utiliserez '''apt-get install -t &lt;branche&gt; paquet(s)''' si vous voulez installer un paquet avec une version superieure a celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour present dans sid parce qu'il est plus recent, vous utiliserez cette commande:

Code:
   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t &lt;branche&gt;'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dependances sont mieux gerees.


Vous utiliserez '''apt-get install paquet/&lt;branche&gt;''' si vous voulez downgrader la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguee, vous utiliserez cette commande :

Code:
   apt-get install ardour/testing



Le probleme c'est que APT voudra remettre a niveau le paquet downgrade lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installee. Pour cela il y a deux possibilites:

Soit utiliser la commande '''aptitude hold paquet'''. Pour debloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets a mettre a jour, les paquets que vous avez bloque par cette methode y apparaitront precedes d'un '''h'''.

Soit etiqueter le paquet dans le fichier preferences avec une '''priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloque ou avec la variable release''' a=now'''.


Par exemple si je veux downgrader ardour de la version 1:2.8.11-1 presente dans sid a la version 1:2.8.9-1 presente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entree dans le preferences :

Code:
   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numero de version a inserer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

Code:
# apt-cache policy ardour
ardour:
  Installé : 1:2.8.11-1
  Candidat : 1:2.8.11-1
Table de version :
*** 1:2.8.11-1 0
        500 http://ftp2.fr.debian.org sid/main Packages
        100 /var/lib/dpkg/status
      1:2.8.9-1 0
        500 http://ftp2.fr.debian.org squeeze/main Packages



Encore plus simple, vous pouvez assigner a la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par paquet(s) installe(s) maintenant.

Code:
   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entree, le paquet ardour qui est installe maintenant sera forcement installe meme s'il s'agit d'un retour en arriere, donc ne sera pas mis a jour.

Pour debloquer le paquet il suffira d'enlever son entree du fichier preferences.


N'hesitez pas a utiliser l'option de simulation '''-s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ca permet de verifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez reellement la commande en enlevant l'option -s. cette option fonctionne egalement avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises a jours (par exemple ''aptitude safe-upgrade -s''), etc... C'est une securite non negligeable.




== Stable ==


L'interet de la branche stable est sa stabilite (etonnant non?). Donc la melanger avec les autres branches est souvent une tres mauvaise idee. '''Si vous avez besoin de paquets plus recents preferez les depots backports, la compilation, ou tout simplement utilisez une autre branche principale a la place!'''

Etant donne qu''''il est fortement deconseille de melanger stable et les branches superieures''', il est preferable de n'avoir que ses entrees dans le sources.list. Le preferences est donc inutile, sauf eventuellemnt si vous souhaitez utiliser les depots backports. Dans ce cas, surtout n'en abusez pas. Installez uniquement les paquets des backports dont vous avez vraiment besoin.

Le sources.list adequat dans ce cas peut-etre le suivant (changez les adresses des depots stable par d'autres que vous prefereriez si vous le souhaitez):

Code:
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://mirror.home-dn.net/debian-multimedia stable main
#deb-src http://mirror.home-dn.net/debian-multimedia stable main

# backports
deb http://www.backports.org/debian lenny-backports main contrib non-free



'''Les preferences des backports ont par defaut une valeur de 1'''. Si vous souhaitez choisir par vous meme quand installer une eventuelle nouvelle version disponible dans ces depots, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installe depuis les backports soit mis a jour automatiquement en cas de nouvelle version disponible dans ces depots, alors vous n'aurez besoin que de cette seule entree dans le fichier preferences :

Code:
Package: *
Pin: release a=lenny-backports
Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

'''apt-get install -t lenny-backports paquet''' ou '''aptitude install -t lenny-backports paquet'''.


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php|site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

Code:
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://mirror.home-dn.net/debian-multimedia stable main
#deb-src http://mirror.home-dn.net/debian-multimedia stable main


# testing
deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free

# testing security
deb http://security.debian.org/ testing/updates main contrib non-free
#deb-src http://security.debian.org/ testing/updates main contrib non-free

# testing multimedia
deb http://mirror.home-dn.net/debian-multimedia testing main
#deb-src http://mirror.home-dn.net/debian-multimedia testing main


# sid
deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free

# sid multimedia
deb http://mirror.home-dn.net/debian-multimedia sid main
#deb-src http://mirror.home-dn.net/debian-multimedia sid main


Accompagne de ce fichier preferences:

Code:
Package: *
Pin: release o=Debian,a=stable
Pin-Priority: 900

Package: *
Pin: release o=Debian,a=testing
Pin-Priority: -10

Package: *
Pin: release o=Debian,a=unstable
Pin-Priority: -10


Si vous vous contentez de faire les mises a jours et d'installer normalement des paquets, votre systeme sera exactement dans le meme etat que s'il n'avait que le depots stables sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non present dans les depots stables mais present dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.




== Testing ==


Les depots testing dependent de l'arrivee de paquets en provenance de sid. Il se peut donc que ces depots ne soient pas complets ou entrainent des problemes de dependances. Installer une testing seule c'est un peu installer une version a trous de Debian puisqu'elle est tres souvent incomplete, du coup l'etiquetage est plutot recommande

En testing il vaut mieux utiliser dist-upgrade a la place de upgrade (ou les equivalents pour ''aptitude''), car de toutes façons durant le cycle de developpement le dist-upgrade sera souvent indispensable. N'hesitez pas a user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui la:

Code:
# lenny
deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free

# lenny security
deb http://security.debian.org/ lenny/updates main contrib non-free
#deb-src http://security.debian.org/ lenny/updates main contrib non-free

# lenny volatile
deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free

# lenny multimedia
deb http://mirror.home-dn.net/debian-multimedia lenny main
#deb-src http://mirror.home-dn.net/debian-multimedia lenny main


# squeeze
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free

# squeeze security
deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

# squeeze multimedia
deb http://mirror.home-dn.net/debian-multimedia squeeze main
#deb-src http://mirror.home-dn.net/debian-multimedia squeeze main


# sid
deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free

# sid multimedia
deb http://mirror.home-dn.net/debian-multimedia sid main
#deb-src http://mirror.home-dn.net/debian-multimedia sid main


# experimental
deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free

# experimental multimedia
deb http://mirror.home-dn.net/debian-multimedia experimental main
#deb-src http://mirror.home-dn.net/debian-multimedia experimental main


Avec ce fichier preferences:

Code:
Package: *
Pin: release o=Unofficial Multimedia Packages,a=testing
Pin-Priority: 900

Package: *
Pin: release o=Debian,a=testing
Pin-Priority: 900

Package: *
Pin: release o=Unofficial Multimedia Packages,a=stable
Pin-Priority: 900

Package: *
Pin: release o=Debian,a=stable
Pin-Priority: 900

Package: *
Pin: release o=volatile.debian.org,a=stable
Pin-Priority: 900

Package: *
Pin: release o=Unofficial Multimedia Packages,a=unstable
Pin-Priority: 90

Package: *
Pin: release o=Debian,a=unstable
Pin-Priority: 90

Package: *
Pin: release o=Unofficial Multimedia Packages,a=experimental
Pin-Priority: 1


Vous serez ainsi en testing par defaut, d'eventuels paquets manquants seront completes par les depots de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option -t.

Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables, a plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problemes toutes references aux depots de la branche experimental du sources.list et du fichier preferences.


Sid


Comme testing, sid n'est pas toujours complete d'ou l'utilite d'avoir les autres branches facilement accessibles. Cela dit il faut quand meme surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.

Pour le sources.list suivant:

Code:
# lenny
deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free

# lenny security
deb http://security.debian.org/ lenny/updates main contrib non-free
#deb-src http://security.debian.org/ lenny/updates main contrib non-free

# lenny volatile
deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free

# lenny multimedia
deb http://mirror.home-dn.net/debian-multimedia lenny main
#deb-src http://mirror.home-dn.net/debian-multimedia lenny main


# squeeze
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free

# squeeze security
deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

# squeeze multimedia
deb http://mirror.home-dn.net/debian-multimedia squeeze main
#deb-src http://mirror.home-dn.net/debian-multimedia squeeze main


# sid
deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free

# sid multimedia
deb http://mirror.home-dn.net/debian-multimedia sid main
#deb-src http://mirror.home-dn.net/debian-multimedia sid main


Il n'y a pas besoin de fichier preferences puisque par defaut tous les depots ont la meme priorite, et a priorites egales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installe. Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets.

Si vous souhaitez utiliser les depots experimental, utilisez un sources.list complet comme celui presente dans le paragraphe Testing. Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables, a plus fortes raison ceux de multimedia, mais si vous tenez a ces depots alors utilisez ce fichier preferences pour eviter les problemes:

Code:
Package: *
Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
Pin-Priority: 1</text>
      <sha1>sunfe3n24ojk9kxo5qy452lcattg632</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1720</id>
      <parentid>1719</parentid>
      <timestamp>2010-07-27T13:50:56Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>Mise a jour</comment>
      <text xml:space="preserve" bytes="26620">

== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==


L'etiquetage (ou pinning en VO) consiste a assigner a un paquet (ou a un groupe de paquets) une priorite d'installation differente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermediaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque depot present dans le sources.list se voit attribuer une priorite d'installation. Par defaut tous les depots ont la meme priorite (500 sauf exception, experimental et backports par exemple qui ont une priorite par defaut de 1), et a priorites egales c'est le numero de version des paquets qui joue, le plus recent est prioritaire.

Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus recents et qui ne viennent pas d'experimental qui ont la priorite, ce qui correspond a sid.

Le fichier de preferences sert a modifier les priorites qui sont affectees aux paquets par APT, et ce par l'intermediaire de regles s'appliquant a un, plusieurs ou un ensemble de paquets (et non a des depots, c'est un abus de language qui peut nuire a la comprehension du fonctionnement des regles). Cette methode peut etre utilisee pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer differentes branches de debian''' (par exemple sid avec testing et stable) ou bien lors de l'ajout de depots non officiels dont on veut &quot;affiner&quot; le comportement. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'etiquetage peut tres vite casser votre systeme.'''

Code:
Bien que la fonction de pinning d'APT decrite dans apt_preferences (5) soit puissante, ses effets peuvent etre difficiles a comprendre et a gerer. Vous devriez la considerer comme une Fonction Avancee.


C'est pas moi qui le dit, c'est la doc officielle... donc la premiere chose a se demander c'est ''ai je vraiment besoin d'etiqueter des paquets?''. Certains des chapitres suivants devraient vous aider a repondre a cette question, mais cette reponse dependra en tres grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'etiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire meme plusieures fois. Certaines informations sont repetees dans differents paragraphes, j'espere que ce n'est pas redondant mais que ca facilite la comprehension du sujet et evitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi a faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;

Vous pouvez egalement trouver des informations sur l'etiquetage en tapant '''man apt_preferences''' dans un terminal.




== Structure du fichier /etc/apt/preferences ==


Ce fichier est constitue d'une ou plusieurs entrees separees par des lignes blanches. Un exemple d'entrees de fichier preferences:

Code:
   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entree est de la forme suivante:

Code:
   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou negatif)


Pour completer au mieux ces entrees nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

Code:
500 http://ftp2.fr.debian.org stable/contrib Packages
release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorite assignee au depot ''http://ftp2.fr.debian.org stable/contrib''. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront a completer la ligne ''Pin'' des entrees du fichier preferences et sont donc expliquees au paragraphe qui la concerne un peu plus bas.


Detaillons ligne par ligne les entrees du fichier preferences:

=== Ligne Package ===

C'est la qu'est indique le nom du paquet etiquete ou * si l'etiquetage concerne tout un groupe de paquets defini par la ligne ''Pin''.


=== Ligne Pin ===

Cette ligne servira a indiquer quels paquets seront concernes par l'etiquetage de cette entree. Pour cela on se sert d'une (ou plusieures) variable(s) indiquee(s) a la ligne ''release'' du ''apt-cache policy'', dans l'exemple precedent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des depots se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (v,o,a,n,...) est indiquee dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

Code:
Origin: Debian
Label: Debian
Suite: stable
Version: 5.0.5
Codename: stable
Date: Sat, 26 Jun 2010 12:12:50 UTC
Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
Components: main contrib non-free
Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen tres accessible de synthetiser cela et de voir quelles sont les priorites qu'APT attribut a un, plusieurs ou des ensembles de paquets.


Ainsi cette entree:

Code:
   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

Code:
Package: * -&gt; L'ensemble des paquets
Pin: release o=Debian,a=stable -&gt; se trouvant dans des depots dont la variable Origin (o) a pour valeur &quot;Debian&quot; et la variable Suite (a) a pour valeur &quot;stable&quot;
Pin-Priority: 900 -&gt; ont une priorite de 900


Et cette entree ci:

Code:
   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001

Se lit donc comme suit:

Code:
Package: ardour -&gt; Le paquet ardour
Pin: release a=unstable -&gt; se trouvant dans des depots dont la variable Suite (a) a pour valeur &quot;now&quot;
Pin-Priority: 1001 -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent etre ces valeurs:

Code:
o= correspond a Origin
dans notre exemple -&gt; Pin: release o=Debian

l= correspond a label
dans notre exemple -&gt; Pin: release l=Debian

a= correspond a Suite
dans notre exemple -&gt; Pin: release a=stable

v= correspond a Version
dans notre exemple -&gt; Pin: release v=5.0.5

c= correspond a Components
dans notre exemple -&gt; Pin: release c=contrib

n= correspond a Codename
dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieures de ces variables dans la ligne ''Pin''. Il n'est pas forcement utile de les inclure toutes, une ou deux bien utilisees peuvent tout a fait etre suffisantes.


=== Ligne Pin-Priority ===

C'est sur cette ligne qu'est indiquee la priorite du paquet ou groupe de paquets. Elle doit etre un entier positif ou negatif. Ces priorites sont interpretes a peu pres comme suit:

Code:
P &gt; 1000
Cette priorite entraine l'installation du paquet meme s'il s'agit d'un retour en arriere.

990 &lt; P &lt;=1000
La version sera installee, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.

500 &lt; P &lt;=990
La version sera installee, sauf s'il existe une version appartenant a la distribution par defaut ou si la version installee est plus recente.

100 &lt; P &lt;=500
La version sera installee, sauf s'il existe une version appartenant a une autre distribution ou si la version installee est plus recente.

0 &lt; P &lt;=100
La version sera installee si aucune version du paquet n'est installee.

P &lt; 0
Cette priorite empeche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a etablir des priorites qui ne mettront pas votre systeme en danger. Dans ce qui suit, ''branche principale'' designe la branche de Debian que vous avez choisie de suivre en priorite (stable, testing ou sid), les autres depots presents dans le sources.list ne servant qu'a y piocher des paquets si besoin est.

- '''Garder des priorites identiques pour les depots Debian officiels d'une meme branche'''. C'est le comportement par defaut (quand l'on a que les depots de la branche principale dans le sources.list sans preferences). Tout manquement a cette regle casse le comportement par defaut et peut generer des resultats tres dommageables car non prevus par les devellopeurs Debian.

- '''Attribuer une priorite comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; a cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t &lt;branche&gt;'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par defaut et a donc une priorite de 990. On comprend donc aisement qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les methodes pour piocher dans les differents depots sont expliquees un peu plus bas, dans le paragraphe ''Comment piocher dans les differents depots du sources.list?'' ce qui devrait clarifier ce point.

- '''Attribuer une priorite comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; a la branche principale'''. Ceci permet d'installer les paquets a la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installes a partir des ces depots.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent a jours automatiquement si une nouvelle version est placee dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorite a ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences generique du fait des dependances.

- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de depots, etc) sans avoir a decaler toutes les autres entrees dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la differences entre les differentes priorites des depots a la lecture du ''apt-cache policy''.


'''- Comment piocher dans les differents depots du sources.list?'''

Tout d'abord, pour que le fichier preferences soit pris en compte apres une modification, il vous faut mettre a jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Verifiez ensuite a l'aide de ''apt-cache policy'' que les priorites sont correctes.


Il y a deux manieres d'indiquer a APT d'aller piocher dans des depots differents que ceux de la branche principale (les commandes qui suivent sont valable a la fois pour ''apt-get'' et pour ''aptitude''):

Vous utiliserez '''apt-get install -t &lt;branche&gt; paquet(s)''' si vous voulez installer un paquet avec une version superieure a celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour present dans sid parce qu'il est plus recent, vous utiliserez cette commande:

Code:
   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t &lt;branche&gt;'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dependances sont mieux gerees.


Vous utiliserez '''apt-get install paquet/&lt;branche&gt;''' si vous voulez downgrader la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguee, vous utiliserez cette commande :

Code:
   apt-get install ardour/testing



Le probleme c'est que APT voudra remettre a niveau le paquet downgrade lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installee. Pour cela il y a deux possibilites:

Soit utiliser la commande '''aptitude hold paquet'''. Pour debloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets a mettre a jour, les paquets que vous avez bloque par cette methode y apparaitront precedes d'un '''h'''.

Soit etiqueter le paquet dans le fichier preferences avec une '''priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloque ou avec la variable release''' a=now'''.


Par exemple si je veux downgrader ardour de la version 1:2.8.11-1 presente dans sid a la version 1:2.8.9-1 presente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entree dans le preferences :

Code:
   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numero de version a inserer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

Code:
# apt-cache policy ardour
ardour:
  Installé : 1:2.8.11-1
  Candidat : 1:2.8.11-1
Table de version :
*** 1:2.8.11-1 0
        500 http://ftp2.fr.debian.org sid/main Packages
        100 /var/lib/dpkg/status
      1:2.8.9-1 0
        500 http://ftp2.fr.debian.org squeeze/main Packages



Encore plus simple, vous pouvez assigner a la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par paquet(s) installe(s) maintenant.

Code:
   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entree, le paquet ardour qui est installe maintenant sera forcement installe meme s'il s'agit d'un retour en arriere, donc ne sera pas mis a jour.

Pour debloquer le paquet il suffira d'enlever son entree du fichier preferences.


N'hesitez pas a utiliser l'option de simulation '''-s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ca permet de verifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez reellement la commande en enlevant l'option -s. cette option fonctionne egalement avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises a jours (par exemple ''aptitude safe-upgrade -s''), etc... C'est une securite non negligeable.




== Stable ==


L'interet de la branche stable est sa stabilite (etonnant non?). Donc la melanger avec les autres branches est souvent une tres mauvaise idee. '''Si vous avez besoin de paquets plus recents preferez les depots backports, la compilation, ou tout simplement utilisez une autre branche principale a la place!'''

Etant donne qu''''il est fortement deconseille de melanger stable et les branches superieures''', il est preferable de n'avoir que ses entrees dans le sources.list. Le preferences est donc inutile, sauf eventuellemnt si vous souhaitez utiliser les depots backports. Dans ce cas, surtout n'en abusez pas. Installez uniquement les paquets des backports dont vous avez vraiment besoin.

Le sources.list adequat dans ce cas peut-etre le suivant (changez les adresses des depots stable par d'autres que vous prefereriez si vous le souhaitez):

Code:
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://mirror.home-dn.net/debian-multimedia stable main
#deb-src http://mirror.home-dn.net/debian-multimedia stable main

# backports
deb http://www.backports.org/debian lenny-backports main contrib non-free



'''Les preferences des backports ont par defaut une valeur de 1'''. Si vous souhaitez choisir par vous meme quand installer une eventuelle nouvelle version disponible dans ces depots, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installe depuis les backports soit mis a jour automatiquement en cas de nouvelle version disponible dans ces depots, alors vous n'aurez besoin que de cette seule entree dans le fichier preferences :

Code:
Package: *
Pin: release a=lenny-backports
Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

'''apt-get install -t lenny-backports paquet''' ou '''aptitude install -t lenny-backports paquet'''.


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php| site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

Code:
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://mirror.home-dn.net/debian-multimedia stable main
#deb-src http://mirror.home-dn.net/debian-multimedia stable main


# testing
deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free

# testing security
deb http://security.debian.org/ testing/updates main contrib non-free
#deb-src http://security.debian.org/ testing/updates main contrib non-free

# testing multimedia
deb http://mirror.home-dn.net/debian-multimedia testing main
#deb-src http://mirror.home-dn.net/debian-multimedia testing main


# sid
deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free

# sid multimedia
deb http://mirror.home-dn.net/debian-multimedia sid main
#deb-src http://mirror.home-dn.net/debian-multimedia sid main


Accompagne de ce fichier preferences:

Code:
Package: *
Pin: release o=Debian,a=stable
Pin-Priority: 900

Package: *
Pin: release o=Debian,a=testing
Pin-Priority: -10

Package: *
Pin: release o=Debian,a=unstable
Pin-Priority: -10


Si vous vous contentez de faire les mises a jours et d'installer normalement des paquets, votre systeme sera exactement dans le meme etat que s'il n'avait que le depots stables sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non present dans les depots stables mais present dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.




== Testing ==


Les depots testing dependent de l'arrivee de paquets en provenance de sid. Il se peut donc que ces depots ne soient pas complets ou entrainent des problemes de dependances. Installer une testing seule c'est un peu installer une version a trous de Debian puisqu'elle est tres souvent incomplete, du coup l'etiquetage est plutot recommande

En testing il vaut mieux utiliser dist-upgrade a la place de upgrade (ou les equivalents pour ''aptitude''), car de toutes façons durant le cycle de developpement le dist-upgrade sera souvent indispensable. N'hesitez pas a user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui la:

Code:
# lenny
deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free

# lenny security
deb http://security.debian.org/ lenny/updates main contrib non-free
#deb-src http://security.debian.org/ lenny/updates main contrib non-free

# lenny volatile
deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free

# lenny multimedia
deb http://mirror.home-dn.net/debian-multimedia lenny main
#deb-src http://mirror.home-dn.net/debian-multimedia lenny main


# squeeze
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free

# squeeze security
deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

# squeeze multimedia
deb http://mirror.home-dn.net/debian-multimedia squeeze main
#deb-src http://mirror.home-dn.net/debian-multimedia squeeze main


# sid
deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free

# sid multimedia
deb http://mirror.home-dn.net/debian-multimedia sid main
#deb-src http://mirror.home-dn.net/debian-multimedia sid main


# experimental
deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free

# experimental multimedia
deb http://mirror.home-dn.net/debian-multimedia experimental main
#deb-src http://mirror.home-dn.net/debian-multimedia experimental main


Avec ce fichier preferences:

Code:
Package: *
Pin: release o=Unofficial Multimedia Packages,a=testing
Pin-Priority: 900

Package: *
Pin: release o=Debian,a=testing
Pin-Priority: 900

Package: *
Pin: release o=Unofficial Multimedia Packages,a=stable
Pin-Priority: 900

Package: *
Pin: release o=Debian,a=stable
Pin-Priority: 900

Package: *
Pin: release o=volatile.debian.org,a=stable
Pin-Priority: 900

Package: *
Pin: release o=Unofficial Multimedia Packages,a=unstable
Pin-Priority: 90

Package: *
Pin: release o=Debian,a=unstable
Pin-Priority: 90

Package: *
Pin: release o=Unofficial Multimedia Packages,a=experimental
Pin-Priority: 1


Vous serez ainsi en testing par defaut, d'eventuels paquets manquants seront completes par les depots de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option -t.

Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables, a plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problemes toutes references aux depots de la branche experimental du sources.list et du fichier preferences.


== Sid ==


Comme testing, sid n'est pas toujours complete d'ou l'utilite d'avoir les autres branches facilement accessibles. Cela dit il faut quand meme surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.

Pour le sources.list suivant:

Code:
# lenny
deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free

# lenny security
deb http://security.debian.org/ lenny/updates main contrib non-free
#deb-src http://security.debian.org/ lenny/updates main contrib non-free

# lenny volatile
deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free

# lenny multimedia
deb http://mirror.home-dn.net/debian-multimedia lenny main
#deb-src http://mirror.home-dn.net/debian-multimedia lenny main


# squeeze
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free

# squeeze security
deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

# squeeze multimedia
deb http://mirror.home-dn.net/debian-multimedia squeeze main
#deb-src http://mirror.home-dn.net/debian-multimedia squeeze main


# sid
deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free

# sid multimedia
deb http://mirror.home-dn.net/debian-multimedia sid main
#deb-src http://mirror.home-dn.net/debian-multimedia sid main


Il n'y a pas besoin de fichier preferences puisque par defaut tous les depots ont la meme priorite, et a priorites egales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installe. Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets.

Si vous souhaitez utiliser les depots experimental, utilisez un sources.list complet comme celui presente dans le paragraphe Testing. Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables, a plus fortes raison ceux de multimedia, mais si vous tenez a ces depots alors utilisez ce fichier preferences pour eviter les problemes:

Code:
Package: *
Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
Pin-Priority: 1</text>
      <sha1>kwxfch0qescolala756vshxjjo12s24</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1721</id>
      <parentid>1720</parentid>
      <timestamp>2010-07-27T13:53:56Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>Mise en page</comment>
      <text xml:space="preserve" bytes="27041">&lt;br/&gt;
&lt;br/&gt;
&lt;br/&gt;
== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'etiquetage (ou pinning en VO) consiste a assigner a un paquet (ou a un groupe de paquets) une priorite d'installation differente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermediaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque depot present dans le sources.list se voit attribuer une priorite d'installation. Par defaut tous les depots ont la meme priorite (500 sauf exception, experimental et backports par exemple qui ont une priorite par defaut de 1), et a priorites egales c'est le numero de version des paquets qui joue, le plus recent est prioritaire.

Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus recents et qui ne viennent pas d'experimental qui ont la priorite, ce qui correspond a sid.

Le fichier de preferences sert a modifier les priorites qui sont affectees aux paquets par APT, et ce par l'intermediaire de regles s'appliquant a un, plusieurs ou un ensemble de paquets (et non a des depots, c'est un abus de language qui peut nuire a la comprehension du fonctionnement des regles). Cette methode peut etre utilisee pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer differentes branches de debian''' (par exemple sid avec testing et stable) ou bien lors de l'ajout de depots non officiels dont on veut &quot;affiner&quot; le comportement. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'etiquetage peut tres vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT decrite dans apt_preferences (5) soit puissante, ses effets peuvent etre difficiles a comprendre et a gerer. Vous devriez la considerer comme une Fonction Avancee.


C'est pas moi qui le dit, c'est la doc officielle... donc la premiere chose a se demander c'est ''ai je vraiment besoin d'etiqueter des paquets?''. Certains des chapitres suivants devraient vous aider a repondre a cette question, mais cette reponse dependra en tres grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'etiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire meme plusieures fois. Certaines informations sont repetees dans differents paragraphes, j'espere que ce n'est pas redondant mais que ca facilite la comprehension du sujet et evitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi a faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;

Vous pouvez egalement trouver des informations sur l'etiquetage en tapant '''man apt_preferences''' dans un terminal.




== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitue d'une ou plusieurs entrees separees par des lignes blanches. Un exemple d'entrees de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entree est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou negatif)


Pour completer au mieux ces entrees nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorite assignee au depot http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront a completer la ligne ''Pin'' des entrees du fichier preferences et sont donc expliquees au paragraphe qui la concerne un peu plus bas.


Detaillons ligne par ligne les entrees du fichier preferences:

==== Ligne Package ====
C'est la qu'est indique le nom du paquet etiquete ou * si l'etiquetage concerne tout un groupe de paquets defini par la ligne ''Pin''.


==== Ligne Pin ====
Cette ligne servira a indiquer quels paquets seront concernes par l'etiquetage de cette entree. Pour cela on se sert d'une (ou plusieures) variable(s) indiquee(s) a la ligne ''release'' du ''apt-cache policy'', dans l'exemple precedent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des depots se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (v,o,a,n,...) est indiquee dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen tres accessible de synthetiser cela et de voir quelles sont les priorites qu'APT attribut a un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: * -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable -&gt; se trouvant dans des depots dont la variable Origin (o) a pour valeur &quot;Debian&quot; et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900 -&gt; ont une priorite de 900

Et cette entree ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001

Se lit donc comme suit:

  Package: ardour -&gt; Le paquet ardour
  Pin: release a=unstable -&gt; se trouvant dans des depots dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001 -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent etre ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable

On peut donc inclure une ou plusieures de ces variables dans la ligne ''Pin''. Il n'est pas forcement utile de les inclure toutes, une ou deux bien utilisees peuvent tout a fait etre suffisantes.


==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquee la priorite du paquet ou groupe de paquets. Elle doit etre un entier positif ou negatif. Ces priorites sont interpretes a peu pres comme suit:


  P &gt; 1000
  Cette priorite entraine l'installation du paquet meme s'il s'agit d'un retour en arriere.
  
  990 &lt; P &lt;=1000
  La version sera installee, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant a la distribution par defaut ou si la version installee est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installee, sauf s'il existe une version appartenant a une autre distribution ou si la version installee est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installee si aucune version du paquet n'est installee.
  
  P &lt; 0
  Cette priorite empeche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a etablir des priorites qui ne mettront pas votre systeme en danger. Dans ce qui suit, ''branche principale'' designe la branche de Debian que vous avez choisie de suivre en priorite (stable, testing ou sid), les autres depots presents dans le sources.list ne servant qu'a y piocher des paquets si besoin est.

- '''Garder des priorites identiques pour les depots Debian officiels d'une meme branche'''. C'est le comportement par defaut (quand l'on a que les depots de la branche principale dans le sources.list sans preferences). Tout manquement a cette regle casse le comportement par defaut et peut generer des resultats tres dommageables car non prevus par les devellopeurs Debian.

- '''Attribuer une priorite comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; a cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t &lt;branche&gt;'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par defaut et a donc une priorite de 990. On comprend donc aisement qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les methodes pour piocher dans les differents depots sont expliquees un peu plus bas, dans le paragraphe ''Comment piocher dans les differents depots du sources.list?'' ce qui devrait clarifier ce point.

- '''Attribuer une priorite comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; a la branche principale'''. Ceci permet d'installer les paquets a la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installes a partir des ces depots.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent a jours automatiquement si une nouvelle version est placee dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorite a ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences generique du fait des dependances.

- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de depots, etc) sans avoir a decaler toutes les autres entrees dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la differences entre les differentes priorites des depots a la lecture du ''apt-cache policy''.


==== Comment piocher dans les differents depots du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte apres une modification, il vous faut mettre a jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Verifiez ensuite a l'aide de ''apt-cache policy'' que les priorites sont correctes.


Il y a deux manieres d'indiquer a APT d'aller piocher dans des depots differents que ceux de la branche principale (les commandes qui suivent sont valable a la fois pour ''apt-get'' et pour ''aptitude''):

- Vous utiliserez '''apt-get install -t &lt;branche&gt; paquet(s)''' si vous voulez installer un paquet avec une version superieure a celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour present dans sid parce qu'il est plus recent, vous utiliserez cette commande:

   apt-get install -t unstable ardour

Lorsque l'on utilise l'option ''-t &lt;branche&gt;'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dependances sont mieux gerees.


- Vous utiliserez '''apt-get install paquet/&lt;branche&gt;''' si vous voulez downgrader la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguee, vous utiliserez cette commande :

   apt-get install ardour/testing


Le probleme c'est que APT voudra remettre a niveau le paquet downgrade lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installee. Pour cela il y a deux possibilites:

Soit utiliser la commande '''aptitude hold paquet'''. Pour debloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets a mettre a jour, les paquets que vous avez bloque par cette methode y apparaitront precedes d'un '''h'''.

Soit etiqueter le paquet dans le fichier preferences avec une '''priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloque ou avec la variable release''' a=now'''.


Par exemple si je veux downgrader ardour de la version 1:2.8.11-1 presente dans sid a la version 1:2.8.9-1 presente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entree dans le preferences :

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numero de version a inserer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé : 1:2.8.11-1
    Candidat : 1:2.8.11-1
  Table de version :
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner a la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par paquet(s) installe(s) maintenant.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entree, le paquet ardour qui est installe maintenant sera forcement installe meme s'il s'agit d'un retour en arriere, donc ne sera pas mis a jour.

Pour debloquer le paquet il suffira d'enlever son entree du fichier preferences.


'''N'hesitez pas a simuler en utilisant l'option de simulation '''-s''''''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ca permet de verifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez reellement la commande en enlevant l'option ''-s''. cette option fonctionne egalement avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises a jours (par exemple ''aptitude safe-upgrade -s''), etc... C'est une securite non negligeable.




== Stable ==

L'interet de la branche stable est sa stabilite (etonnant non?). Donc la melanger avec les autres branches est souvent une tres mauvaise idee. '''Si vous avez besoin de paquets plus recents preferez les depots backports, la compilation, ou tout simplement utilisez une autre branche principale a la place!'''

Etant donne qu''''il est fortement deconseille de melanger stable et les branches superieures''', il est preferable de n'avoir que ses entrees dans le sources.list. Le preferences est donc inutile, sauf eventuellemnt si vous souhaitez utiliser les depots backports. Dans ce cas, surtout n'en abusez pas. Installez uniquement les paquets des backports dont vous avez vraiment besoin.

Le sources.list adequat dans ce cas peut-etre le suivant (changez les adresses des depots stable par d'autres que vous prefereriez si vous le souhaitez):

  # stable
  deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
  
  # stable security
  deb http://security.debian.org/ stable/updates main contrib non-free
  #deb-src http://security.debian.org/ stable/updates main contrib non-free
  
  # stable volatile
  deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  
  # stable multimedia
  deb http://mirror.home-dn.net/debian-multimedia stable main
  #deb-src http://mirror.home-dn.net/debian-multimedia stable main
  
  # backports
  deb http://www.backports.org/debian lenny-backports main contrib non-free


'''Les preferences des backports ont par defaut une valeur de 1'''. Si vous souhaitez choisir par vous meme quand installer une eventuelle nouvelle version disponible dans ces depots, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installe depuis les backports soit mis a jour automatiquement en cas de nouvelle version disponible dans ces depots, alors vous n'aurez besoin que de cette seule entree dans le fichier preferences :

  Package: *
  Pin: release a=lenny-backports
  Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

  apt-get install -t lenny-backports paquet
  aptitude install -t lenny-backports paquet

Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php| site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

  # stable
  deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
  
  # stable security
  deb http://security.debian.org/ stable/updates main contrib non-free
  #deb-src http://security.debian.org/ stable/updates main contrib non-free
  
  # stable volatile
  deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  
  # stable multimedia
  deb http://mirror.home-dn.net/debian-multimedia stable main
  #deb-src http://mirror.home-dn.net/debian-multimedia stable main
  
  
  # testing
  deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
  
  # testing security
  deb http://security.debian.org/ testing/updates main contrib non-free
  #deb-src http://security.debian.org/ testing/updates main contrib non-free
  
  # testing multimedia
  deb http://mirror.home-dn.net/debian-multimedia testing main
  #deb-src http://mirror.home-dn.net/debian-multimedia testing main
  
  
  # sid
  deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
  
  # sid multimedia
  deb http://mirror.home-dn.net/debian-multimedia sid main
  #deb-src http://mirror.home-dn.net/debian-multimedia sid main

Accompagne de ce fichier preferences:

  Package: *
  Pin: release o=Debian,a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Debian,a=testing
  Pin-Priority: -10
  
  Package: *
  Pin: release o=Debian,a=unstable
  Pin-Priority: -10


Si vous vous contentez de faire les mises a jours et d'installer normalement des paquets, votre systeme sera exactement dans le meme etat que s'il n'avait que le depots stables sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non present dans les depots stables mais present dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.




== Testing ==

Les depots testing dependent de l'arrivee de paquets en provenance de sid. Il se peut donc que ces depots ne soient pas complets ou entrainent des problemes de dependances. '''Installer une testing seule c'est un peu installer une version a trous de Debian puisqu'elle est tres souvent incomplete, du coup l'etiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' a la place de ''upgrade'' (ou les equivalents pour ''aptitude''), car de toutes façons durant le cycle de developpement le ''dist-upgrade'' sera souvent indispensable. N'hesitez pas a user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui la:

  # lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  
  # lenny security
  deb http://security.debian.org/ lenny/updates main contrib non-free
  #deb-src http://security.debian.org/ lenny/updates main contrib non-free
  
  # lenny volatile
  deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  
  # lenny multimedia
  deb http://mirror.home-dn.net/debian-multimedia lenny main
  #deb-src http://mirror.home-dn.net/debian-multimedia lenny main
  
  
  # squeeze
  deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  
  # squeeze security
  deb http://security.debian.org/ squeeze/updates main contrib non-free
  #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
  
  # squeeze multimedia
  deb http://mirror.home-dn.net/debian-multimedia squeeze main
  #deb-src http://mirror.home-dn.net/debian-multimedia squeeze main
  
  
  # sid
  deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
  
  # sid multimedia
  deb http://mirror.home-dn.net/debian-multimedia sid main
  #deb-src http://mirror.home-dn.net/debian-multimedia sid main
  
  
  # experimental
  deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
  
  # experimental multimedia
  deb http://mirror.home-dn.net/debian-multimedia experimental main
  #deb-src http://mirror.home-dn.net/debian-multimedia experimental main

Avec ce fichier preferences:

  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=testing
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Debian,a=testing
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Debian,a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release o=volatile.debian.org,a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=unstable
  Pin-Priority: 90
  
  Package: *
  Pin: release o=Debian,a=unstable
  Pin-Priority: 90
  
  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=experimental
  Pin-Priority: 1


Vous serez ainsi en testing par defaut, d'eventuels paquets manquants seront completes par les depots de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables, a plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problemes toutes references aux depots de la branche experimental du sources.list et du fichier preferences.'''




== Sid ==


Comme testing, sid n'est pas toujours complete d'ou l'utilite d'avoir les autres branches facilement accessibles. Cela dit il faut quand meme surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

  # lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  
  # lenny security
  deb http://security.debian.org/ lenny/updates main contrib non-free
  #deb-src http://security.debian.org/ lenny/updates main contrib non-free
  
  # lenny volatile
  deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  
  # lenny multimedia
  deb http://mirror.home-dn.net/debian-multimedia lenny main
  #deb-src http://mirror.home-dn.net/debian-multimedia lenny main
  
  
  # squeeze
  deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  
  # squeeze security
  deb http://security.debian.org/ squeeze/updates main contrib non-free
  #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
  
  # squeeze multimedia
  deb http://mirror.home-dn.net/debian-multimedia squeeze main
  #deb-src http://mirror.home-dn.net/debian-multimedia squeeze main
  
  
  # sid
  deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
  
  # sid multimedia
  deb http://mirror.home-dn.net/debian-multimedia sid main
  #deb-src http://mirror.home-dn.net/debian-multimedia sid main


'''Il n'y a pas besoin de fichier ''preferences'' puisque par defaut tous les depots ont la meme priorite''', et a priorites egales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installe. Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets.

Si vous souhaitez utiliser les depots experimental, utilisez un sources.list complet comme celui presente dans le paragraphe Testing. '''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables''', a plus fortes raison ceux de multimedia, mais si vous tenez a ces depots alors utilisez ce fichier preferences pour eviter les problemes:


  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
  Pin-Priority: 1</text>
      <sha1>p2199ccbnvk6i5xy6qrie9p1igaz769</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1722</id>
      <parentid>1721</parentid>
      <timestamp>2010-07-27T14:30:39Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>Mise en page</comment>
      <text xml:space="preserve" bytes="27002">
== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'etiquetage (ou pinning en VO) consiste a assigner a un paquet (ou a un groupe de paquets) une priorite d'installation differente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermediaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque depot present dans le sources.list se voit attribuer une priorite d'installation. Par defaut tous les depots ont la meme priorite (500 sauf exception, experimental et backports par exemple qui ont une priorite par defaut de 1), et a priorites egales c'est le numero de version des paquets qui joue, le plus recent est prioritaire.

Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus recents et qui ne viennent pas d'experimental qui ont la priorite, ce qui correspond a sid.

Le fichier de preferences sert a modifier les priorites qui sont affectees aux paquets par APT, et ce par l'intermediaire de regles s'appliquant a un, plusieurs ou un ensemble de paquets (et non a des depots, c'est un abus de language qui peut nuire a la comprehension du fonctionnement des regles). Cette methode peut etre utilisee pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer differentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de depots non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'etiquetage peut tres vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT decrite dans apt_preferences (5) soit puissante, ses effets peuvent etre difficiles a comprendre et a gerer.
 Vous devriez la considerer comme une Fonction Avancee.


C'est pas moi qui le dit, c'est la doc officielle... donc la premiere chose a se demander c'est ''ai je vraiment besoin d'etiqueter des paquets?''. Certains des chapitres suivants devraient vous aider a repondre a cette question, mais cette reponse dependra en tres grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'etiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire meme plusieures fois. Certaines informations sont repetees dans differents paragraphes, j'espere que ce n'est pas redondant mais que ca facilite la comprehension du sujet et evitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi a faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez egalement trouver des informations sur l'etiquetage en tapant '''man apt_preferences''' dans un terminal.




== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitue d'une ou plusieurs entrees separees par des lignes blanches. Un exemple d'entrees de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entree est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou negatif)


Pour completer au mieux ces entrees nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorite assignee au depot http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront a completer la ligne ''Pin'' des entrees du fichier preferences et sont donc expliquees au paragraphe qui la concerne un peu plus bas.


Detaillons ligne par ligne les entrees du fichier preferences:


==== Ligne Package ====
C'est la qu'est indique le nom du paquet etiquete ou * si l'etiquetage concerne tout un groupe de paquets defini par la ligne ''Pin''.


==== Ligne Pin ====
Cette ligne servira a indiquer quels paquets seront concernes par l'etiquetage de cette entree. Pour cela on se sert d'une (ou plusieures) variable(s) indiquee(s) a la ligne ''release'' du ''apt-cache policy'', dans l'exemple precedent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des depots se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquee dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen tres accessible de synthetiser cela et de voir quelles sont les priorites qu'APT attribut a un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: * -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable -&gt; se trouvant dans des depots dont la variable Origin (o) a pour valeur &quot;Debian&quot;
  et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900 -&gt; ont une priorite de 900


Et cette entree ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour -&gt; Le paquet ardour
  Pin: release a=unstable -&gt; se trouvant dans des depots dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001 -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent etre ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieures de ces variables dans la ligne ''Pin''. Il n'est pas forcement utile de les inclure toutes, une ou deux bien utilisees peuvent tout a fait etre suffisantes.


==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquee la priorite du paquet ou groupe de paquets. Elle doit etre un entier positif ou negatif. Ces priorites sont interpretes a peu pres comme suit:

  P &gt; 1000
  Cette priorite entraine l'installation du paquet meme s'il s'agit d'un retour en arriere.
  
  990 &lt; P &lt;=1000
  La version sera installee, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant a la distribution par defaut ou si la version installee est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installee, sauf s'il existe une version appartenant a une autre distribution ou si la version installee est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installee si aucune version du paquet n'est installee.
  
  P &lt; 0
  Cette priorite empeche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a etablir des priorites qui ne mettront pas votre systeme en danger. Dans ce qui suit, ''branche principale'' designe la branche de Debian que vous avez choisie de suivre en priorite (stable, testing ou sid), les autres depots presents dans le sources.list ne servant qu'a y piocher des paquets si besoin est.


- '''Garder des priorites identiques pour les depots Debian officiels d'une meme branche'''. C'est le comportement par defaut (quand l'on a que les depots de la branche principale dans le sources.list sans preferences). Tout manquement a cette regle casse le comportement par defaut et peut generer des resultats tres dommageables car non prevus par les devellopeurs Debian.


- '''Attribuer une priorite comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; a cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par defaut et a donc une priorite de 990. On comprend donc aisement qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les methodes pour piocher dans les differents depots sont expliquees un peu plus bas, dans le paragraphe ''Comment piocher dans les differents depots du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorite comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; a la branche principale'''. Ceci permet d'installer les paquets a la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installes a partir des ces depots.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent a jours automatiquement si une nouvelle version est placee dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorite a ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences generique du fait des dependances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de depots, etc) sans avoir a decaler toutes les autres entrees dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la differences entre les differentes priorites des depots a la lecture du ''apt-cache policy''.


==== Comment piocher dans les differents depots du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte apres une modification, il vous faut mettre a jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Verifiez ensuite a l'aide de ''apt-cache policy'' que les priorites sont correctes.


Il y a deux manieres d'indiquer a APT d'aller piocher dans des depots differents que ceux de la branche principale (les commandes qui suivent sont valable a la fois pour ''apt-get'' et pour ''aptitude''):

- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version superieure a celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour present dans sid parce qu'il est plus recent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dependances sont mieux gerees.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez downgrader la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguee, vous utiliserez cette commande:

   apt-get install ardour/testing


Le probleme c'est que APT voudra remettre a niveau le paquet downgrade lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installee. Pour cela il y a deux possibilites:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour debloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets a mettre a jour, les paquets que vous avez bloque par cette methode y apparaitront precedes d'un '''h'''.


- Soit '''etiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloque ou avec la variable release''' a=now'''.


Par exemple si je veux downgrader ardour de la version 1:2.8.11-1 presente dans sid a la version 1:2.8.9-1 presente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entree dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numero de version a inserer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner a la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par paquet(s) installe(s) maintenant.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entree, le paquet ardour qui est installe maintenant sera forcement installe meme s'il s'agit d'un retour en arriere, donc ne sera pas mis a jour. Pour debloquer le paquet il suffira d'enlever son entree du fichier preferences.


'''N'hesitez pas a simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ca permet de verifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez reellement la commande en enlevant l'option ''-s''. cette option fonctionne egalement avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises a jours (par exemple ''aptitude safe-upgrade -s''), etc... C'est une securite non negligeable.




== Stable ==

L'interet de la branche stable est sa stabilite (etonnant non?). Donc la melanger avec les autres branches est souvent une tres mauvaise idee. '''Si vous avez besoin de paquets plus recents preferez les depots backports, la compilation, ou tout simplement utilisez une autre branche principale a la place!'''

Etant donne qu''''il est fortement deconseille de melanger stable et les branches superieures''', il est preferable de n'avoir que ses entrees dans le sources.list. Le preferences est donc inutile, sauf eventuellement si vous souhaitez utiliser les depots backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adequat dans ce cas peut-etre le suivant (changez les adresses des depots stable par d'autres que vous prefereriez si vous le souhaitez):

  # stable
  deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
  
  # stable security
  deb http://security.debian.org/ stable/updates main contrib non-free
  #deb-src http://security.debian.org/ stable/updates main contrib non-free
  
  # stable volatile
  deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  
  # stable multimedia
  deb http://www.debian-multimedia.org stable main non-free
  #deb-src http://www.debian-multimedia.org stable main non-free
  
  # backports
  deb http://www.backports.org/debian lenny-backports main contrib non-free


'''Les preferences des backports ont par defaut une valeur de 1'''. Si vous souhaitez choisir par vous meme quand installer une eventuelle nouvelle version disponible dans ces depots, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installe depuis les backports soit mis a jour automatiquement en cas de nouvelle version disponible dans ces depots, alors vous n'aurez besoin que de cette seule entree dans le fichier preferences:

  Package: *
  Pin: release a=lenny-backports
  Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

  apt-get install -t lenny-backports paquet
  aptitude install -t lenny-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php| site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

  # stable
  deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
  
  # stable security
  deb http://security.debian.org/ stable/updates main contrib non-free
  #deb-src http://security.debian.org/ stable/updates main contrib non-free
  
  # stable volatile
  deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  
  # stable multimedia
  deb http://www.debian-multimedia.org stable main non-free
  #deb-src http://www.debian-multimedia.org stable main non-free
  
  
  # testing
  deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
  
  # testing security
  deb http://security.debian.org/ testing/updates main contrib non-free
  #deb-src http://security.debian.org/ testing/updates main contrib non-free
  
  # testing multimedia
  deb http://www.debian-multimedia.org testing main non-free
  #deb-src http://www.debian-multimedia.org testing main non-free
  
  
  # sid
  deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
  
  # sid multimedia
  deb http://www.debian-multimedia.org sid main non-free
  #deb-src http://www.debian-multimedia.org sid main non-free


Accompagne de ce fichier preferences:

  Package: *
  Pin: release o=Debian,a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Debian,a=testing
  Pin-Priority: -10
  
  Package: *
  Pin: release o=Debian,a=unstable
  Pin-Priority: -10


Si vous vous contentez de faire les mises a jour et d'installer normalement des paquets, votre systeme sera exactement dans le meme etat que s'il n'avait que le depots stables sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non present dans les depots stables mais present dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.




== Testing ==

Les depots testing dependent de l'arrivee de paquets en provenance de sid. Il se peut donc que ces depots ne soient pas complets ou entrainent des problemes de dependances. '''Installer une testing seule c'est un peu installer une version a trous de Debian puisqu'elle est tres souvent incomplete, du coup l'etiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' a la place de ''upgrade'' (ou les equivalents pour ''aptitude''), car de toutes façons durant le cycle de developpement le ''dist-upgrade'' sera souvent indispensable. N'hesitez pas a user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui la:

  # lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  
  # lenny security
  deb http://security.debian.org/ lenny/updates main contrib non-free
  #deb-src http://security.debian.org/ lenny/updates main contrib non-free
  
  # lenny volatile
  deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  
  # lenny multimedia
  deb http://www.debian-multimedia.org lenny main non-free
  #deb-src http://www.debian-multimedia.org lenny main non-free
  
  
  # squeeze
  deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  
  # squeeze security
  deb http://security.debian.org/ squeeze/updates main contrib non-free
  #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
  
  # squeeze multimedia
  deb http://www.debian-multimedia.org squeeze main non-free
  #deb-src http://www.debian-multimedia.org squeeze main non-free
  
  
  # sid
  deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
  
  # sid multimedia
  deb http://www.debian-multimedia.org sid main non-free
  #deb-src http://www.debian-multimedia.org sid main non-free
  
  
  # experimental
  deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
  
  # experimental multimedia
  deb http://www.debian-multimedia.org experimental main non-free
  #deb-src http://www.debian-multimedia.org experimental main non-free


Avec ce fichier preferences:

  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=testing
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Debian,a=testing
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Debian,a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release o=volatile.debian.org,a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=unstable
  Pin-Priority: 90
  
  Package: *
  Pin: release o=Debian,a=unstable
  Pin-Priority: 90
  
  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=experimental
  Pin-Priority: 1


Vous serez ainsi en testing par defaut, d'eventuels paquets manquants seront completes par les depots de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables, a plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problemes toutes references aux depots de la branche experimental du sources.list et du fichier preferences.'''




== Sid ==


Comme testing, sid n'est pas toujours complete d'ou l'utilite d'avoir les autres branches facilement accessibles. Cela dit il faut quand meme surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

  # lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  
  # lenny security
  deb http://security.debian.org/ lenny/updates main contrib non-free
  #deb-src http://security.debian.org/ lenny/updates main contrib non-free
  
  # lenny volatile
  deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  
  # lenny multimedia
  deb http://www.debian-multimedia.org lenny main non-free
  #deb-src http://www.debian-multimedia.org lenny main non-free
  
  
  # squeeze
  deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  
  # squeeze security
  deb http://security.debian.org/ squeeze/updates main contrib non-free
  #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
  
  # squeeze multimedia
  deb http://www.debian-multimedia.org squeeze main non-free
  #deb-src http://www.debian-multimedia.org squeeze main non-free
  
  
  # sid
  deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
  
  # sid multimedia
  deb http://www.debian-multimedia.org sid main non-free
  #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par defaut tous les depots ont la meme priorite''', et a priorites egales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installe. Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets.

Si vous souhaitez utiliser les depots experimental, utilisez un sources.list complet comme celui presente dans le paragraphe Testing. '''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables''', a plus fortes raison ceux de multimedia, mais si vous tenez a ces depots alors utilisez ce fichier preferences pour eviter les problemes:


  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
  Pin-Priority: 1</text>
      <sha1>3m19tef303vd9u2821a234ad094wmnz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1723</id>
      <parentid>1722</parentid>
      <timestamp>2010-07-27T14:42:26Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>Mise en page</comment>
      <text xml:space="preserve" bytes="26984">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'etiquetage (ou pinning en VO) consiste a assigner a un paquet (ou a un groupe de paquets) une priorite d'installation differente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermediaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque depot present dans le sources.list se voit attribuer une priorite d'installation. Par defaut tous les depots ont la meme priorite (500 sauf exception, experimental et backports par exemple qui ont une priorite par defaut de 1), et a priorites egales c'est le numero de version des paquets qui joue, le plus recent est prioritaire.

Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus recents et qui ne viennent pas d'experimental qui ont la priorite, ce qui correspond a sid.

Le fichier de preferences sert a modifier les priorites qui sont affectees aux paquets par APT, et ce par l'intermediaire de regles s'appliquant a un, plusieurs ou un ensemble de paquets (et non a des depots, c'est un abus de language qui peut nuire a la comprehension du fonctionnement des regles). Cette methode peut etre utilisee pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer differentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de depots non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'etiquetage peut tres vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT decrite dans apt_preferences (5) soit puissante, ses effets peuvent etre difficiles a comprendre et a gerer.
 Vous devriez la considerer comme une Fonction Avancee.


C'est pas moi qui le dit, c'est la doc officielle... donc la premiere chose a se demander c'est ''ai je vraiment besoin d'etiqueter des paquets?''. Certains des chapitres suivants devraient vous aider a repondre a cette question, mais cette reponse dependra en tres grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'etiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire meme plusieures fois. Certaines informations sont repetees dans differents paragraphes, j'espere que ce n'est pas redondant mais que ca facilite la comprehension du sujet et evitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi a faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez egalement trouver des informations sur l'etiquetage en tapant '''man apt_preferences''' dans un terminal.




== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitue d'une ou plusieurs entrees separees par des lignes blanches. Un exemple d'entrees de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entree est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou negatif)


Pour completer au mieux ces entrees nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorite assignee au depot http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront a completer la ligne ''Pin'' des entrees du fichier preferences et sont donc expliquees au paragraphe qui la concerne un peu plus bas.


Detaillons ligne par ligne les entrees du fichier preferences:


==== Ligne Package ====
C'est la qu'est indique le nom du paquet etiquete ou * si l'etiquetage concerne tout un groupe de paquets defini par la ligne ''Pin''.


==== Ligne Pin ====
Cette ligne servira a indiquer quels paquets seront concernes par l'etiquetage de cette entree. Pour cela on se sert d'une (ou plusieures) variable(s) indiquee(s) a la ligne ''release'' du ''apt-cache policy'', dans l'exemple precedent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des depots se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquee dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen tres accessible de synthetiser cela et de voir quelles sont les priorites qu'APT attribut a un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: * -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable -&gt; se trouvant dans des depots dont la variable Origin (o) a pour valeur &quot;Debian&quot;
  et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900 -&gt; ont une priorite de 900


Et cette entree ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour -&gt; Le paquet ardour
  Pin: release a=unstable -&gt; se trouvant dans des depots dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001 -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent etre ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieures de ces variables dans la ligne ''Pin''. Il n'est pas forcement utile de les inclure toutes, une ou deux bien utilisees peuvent tout a fait etre suffisantes.


==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquee la priorite du paquet ou groupe de paquets. Elle doit etre un entier positif ou negatif. Ces priorites sont interpretes a peu pres comme suit:

  P &gt; 1000
  Cette priorite entraine l'installation du paquet meme s'il s'agit d'un retour en arriere.
  
  990 &lt; P &lt;=1000
  La version sera installee, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant a la distribution par defaut ou si la version installee est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installee, sauf s'il existe une version appartenant a une autre distribution ou si la version installee est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installee si aucune version du paquet n'est installee.
  
  P &lt; 0
  Cette priorite empeche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a etablir des priorites qui ne mettront pas votre systeme en danger. Dans ce qui suit, ''branche principale'' designe la branche de Debian que vous avez choisie de suivre en priorite (stable, testing ou sid), les autres depots presents dans le sources.list ne servant qu'a y piocher des paquets si besoin est.


- '''Garder des priorites identiques pour les depots Debian officiels d'une meme branche'''. C'est le comportement par defaut (quand l'on a que les depots de la branche principale dans le sources.list sans preferences). Tout manquement a cette regle casse le comportement par defaut et peut generer des resultats tres dommageables car non prevus par les devellopeurs Debian.


- '''Attribuer une priorite comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; a cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par defaut et a donc une priorite de 990. On comprend donc aisement qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les methodes pour piocher dans les differents depots sont expliquees un peu plus bas, dans le paragraphe ''Comment piocher dans les differents depots du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorite comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; a la branche principale'''. Ceci permet d'installer les paquets a la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installes a partir des ces depots.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent a jours automatiquement si une nouvelle version est placee dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorite a ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences generique du fait des dependances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de depots, etc) sans avoir a decaler toutes les autres entrees dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la differences entre les differentes priorites des depots a la lecture du ''apt-cache policy''.


==== Comment piocher dans les differents depots du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte apres une modification, il vous faut mettre a jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Verifiez ensuite a l'aide de ''apt-cache policy'' que les priorites sont correctes.


Il y a deux manieres d'indiquer a APT d'aller piocher dans des depots differents que ceux de la branche principale (les commandes qui suivent sont valable a la fois pour ''apt-get'' et pour ''aptitude''):

- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version superieure a celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour present dans sid parce qu'il est plus recent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dependances sont mieux gerees.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez downgrader la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguee, vous utiliserez cette commande:

   apt-get install ardour/testing


Le probleme c'est que APT voudra remettre a niveau le paquet downgrade lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installee. Pour cela il y a deux possibilites:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour debloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets a mettre a jour, les paquets que vous avez bloque par cette methode y apparaitront precedes d'un '''h'''.


- Soit '''etiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloque ou avec la variable release''' a=now'''.


Par exemple si je veux downgrader ardour de la version 1:2.8.11-1 presente dans sid a la version 1:2.8.9-1 presente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entree dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numero de version a inserer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner a la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par paquet(s) installe(s) maintenant.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entree, le paquet ardour qui est installe maintenant sera forcement installe meme s'il s'agit d'un retour en arriere, donc ne sera pas mis a jour. Pour debloquer le paquet il suffira d'enlever son entree du fichier preferences.


'''N'hesitez pas a simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ca permet de verifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez reellement la commande en enlevant l'option ''-s''. cette option fonctionne egalement avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises a jours (par exemple ''aptitude safe-upgrade -s''), etc... C'est une securite non negligeable.




== Stable ==

L'interet de la branche stable est sa stabilite (etonnant non?). Donc la melanger avec les autres branches est souvent une tres mauvaise idee. '''Si vous avez besoin de paquets plus recents preferez les depots backports, la compilation, ou tout simplement utilisez une autre branche principale a la place!'''

Etant donne qu''''il est fortement deconseille de melanger stable et les branches superieures''', il est preferable de n'avoir que ses entrees dans le sources.list. Le preferences est donc inutile, sauf eventuellement si vous souhaitez utiliser les depots backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adequat dans ce cas peut-etre le suivant (changez les adresses des depots stable par d'autres que vous prefereriez si vous le souhaitez):

  # stable
  deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
  
  # stable security
  deb http://security.debian.org/ stable/updates main contrib non-free
  #deb-src http://security.debian.org/ stable/updates main contrib non-free
  
  # stable volatile
  deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  
  # stable multimedia
  deb http://www.debian-multimedia.org stable main non-free
  #deb-src http://www.debian-multimedia.org stable main non-free
  
  # backports
  deb http://www.backports.org/debian lenny-backports main contrib non-free


'''Les preferences des backports ont par defaut une valeur de 1'''. Si vous souhaitez choisir par vous meme quand installer une eventuelle nouvelle version disponible dans ces depots, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installe depuis les backports soit mis a jour automatiquement en cas de nouvelle version disponible dans ces depots, alors vous n'aurez besoin que de cette seule entree dans le fichier preferences:

  Package: *
  Pin: release a=lenny-backports
  Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

  apt-get install -t lenny-backports paquet
  aptitude install -t lenny-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php | site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

  # stable
  deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
  
  # stable security
  deb http://security.debian.org/ stable/updates main contrib non-free
  #deb-src http://security.debian.org/ stable/updates main contrib non-free
  
  # stable volatile
  deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  
  # stable multimedia
  deb http://www.debian-multimedia.org stable main non-free
  #deb-src http://www.debian-multimedia.org stable main non-free
  
  
  # testing
  deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
  
  # testing security
  deb http://security.debian.org/ testing/updates main contrib non-free
  #deb-src http://security.debian.org/ testing/updates main contrib non-free
  
  # testing multimedia
  deb http://www.debian-multimedia.org testing main non-free
  #deb-src http://www.debian-multimedia.org testing main non-free
  
  
  # sid
  deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
  
  # sid multimedia
  deb http://www.debian-multimedia.org sid main non-free
  #deb-src http://www.debian-multimedia.org sid main non-free


Accompagne de ce fichier preferences:

  Package: *
  Pin: release o=Debian,a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Debian,a=testing
  Pin-Priority: -10
  
  Package: *
  Pin: release o=Debian,a=unstable
  Pin-Priority: -10


Si vous vous contentez de faire les mises a jour et d'installer normalement des paquets, votre systeme sera exactement dans le meme etat que s'il n'avait que le depots stables sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non present dans les depots stables mais present dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.




== Testing ==

Les depots testing dependent de l'arrivee de paquets en provenance de sid. Il se peut donc que ces depots ne soient pas complets ou entrainent des problemes de dependances. '''Installer une testing seule c'est un peu installer une version a trous de Debian puisqu'elle est tres souvent incomplete, du coup l'etiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' a la place de ''upgrade'' (ou les equivalents pour ''aptitude''), car de toutes façons durant le cycle de developpement le ''dist-upgrade'' sera souvent indispensable. N'hesitez pas a user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui la:

  # lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  
  # lenny security
  deb http://security.debian.org/ lenny/updates main contrib non-free
  #deb-src http://security.debian.org/ lenny/updates main contrib non-free
  
  # lenny volatile
  deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  
  # lenny multimedia
  deb http://www.debian-multimedia.org lenny main non-free
  #deb-src http://www.debian-multimedia.org lenny main non-free
  
  
  # squeeze
  deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  
  # squeeze security
  deb http://security.debian.org/ squeeze/updates main contrib non-free
  #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
  
  # squeeze multimedia
  deb http://www.debian-multimedia.org squeeze main non-free
  #deb-src http://www.debian-multimedia.org squeeze main non-free
  
  
  # sid
  deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
  
  # sid multimedia
  deb http://www.debian-multimedia.org sid main non-free
  #deb-src http://www.debian-multimedia.org sid main non-free
  
  
  # experimental
  deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
  
  # experimental multimedia
  deb http://www.debian-multimedia.org experimental main
  #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=testing
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Debian,a=testing
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Debian,a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release o=volatile.debian.org,a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=unstable
  Pin-Priority: 90
  
  Package: *
  Pin: release o=Debian,a=unstable
  Pin-Priority: 90
  
  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=experimental
  Pin-Priority: 1


Vous serez ainsi en testing par defaut, d'eventuels paquets manquants seront completes par les depots de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables, a plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problemes toutes references aux depots de la branche experimental du sources.list et du fichier preferences.'''




== Sid ==


Comme testing, sid n'est pas toujours complete d'ou l'utilite d'avoir les autres branches facilement accessibles. Cela dit il faut quand meme surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

  # lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  
  # lenny security
  deb http://security.debian.org/ lenny/updates main contrib non-free
  #deb-src http://security.debian.org/ lenny/updates main contrib non-free
  
  # lenny volatile
  deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  
  # lenny multimedia
  deb http://www.debian-multimedia.org lenny main non-free
  #deb-src http://www.debian-multimedia.org lenny main non-free
  
  
  # squeeze
  deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  
  # squeeze security
  deb http://security.debian.org/ squeeze/updates main contrib non-free
  #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
  
  # squeeze multimedia
  deb http://www.debian-multimedia.org squeeze main non-free
  #deb-src http://www.debian-multimedia.org squeeze main non-free
  
  
  # sid
  deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
  
  # sid multimedia
  deb http://www.debian-multimedia.org sid main non-free
  #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par defaut tous les depots ont la meme priorite''', et a priorites egales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installe. Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets.

Si vous souhaitez utiliser les depots experimental, utilisez un sources.list complet comme celui presente dans le paragraphe Testing. '''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables''', a plus fortes raison ceux de multimedia, mais si vous tenez a ces depots alors utilisez ce fichier preferences pour eviter les problemes:


  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
  Pin-Priority: 1</text>
      <sha1>n4dx4mxfomyt4zvzhpekqeztmnl1i2f</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1724</id>
      <parentid>1723</parentid>
      <timestamp>2010-07-27T14:46:39Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>Mise en page</comment>
      <text xml:space="preserve" bytes="26982">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'etiquetage (ou pinning en VO) consiste a assigner a un paquet (ou a un groupe de paquets) une priorite d'installation differente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermediaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque depot present dans le sources.list se voit attribuer une priorite d'installation. Par defaut tous les depots ont la meme priorite (500 sauf exception, experimental et backports par exemple qui ont une priorite par defaut de 1), et a priorites egales c'est le numero de version des paquets qui joue, le plus recent est prioritaire.

Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus recents et qui ne viennent pas d'experimental qui ont la priorite, ce qui correspond a sid.

Le fichier de preferences sert a modifier les priorites qui sont affectees aux paquets par APT, et ce par l'intermediaire de regles s'appliquant a un, plusieurs ou un ensemble de paquets (et non a des depots, c'est un abus de language qui peut nuire a la comprehension du fonctionnement des regles). Cette methode peut etre utilisee pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer differentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de depots non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'etiquetage peut tres vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT decrite dans apt_preferences (5) soit puissante, ses effets peuvent etre difficiles a comprendre et a gerer.
 Vous devriez la considerer comme une Fonction Avancee.


C'est pas moi qui le dit, c'est la doc officielle... donc la premiere chose a se demander c'est ''ai je vraiment besoin d'etiqueter des paquets?''. Certains des chapitres suivants devraient vous aider a repondre a cette question, mais cette reponse dependra en tres grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'etiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire meme plusieures fois. Certaines informations sont repetees dans differents paragraphes, j'espere que ce n'est pas redondant mais que ca facilite la comprehension du sujet et evitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi a faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez egalement trouver des informations sur l'etiquetage en tapant '''man apt_preferences''' dans un terminal.




== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitue d'une ou plusieurs entrees separees par des lignes blanches. Un exemple d'entrees de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entree est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou negatif)


Pour completer au mieux ces entrees nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorite assignee au depot http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront a completer la ligne ''Pin'' des entrees du fichier preferences et sont donc expliquees au paragraphe qui la concerne un peu plus bas.


Detaillons ligne par ligne les entrees du fichier preferences:


==== Ligne Package ====
C'est la qu'est indique le nom du paquet etiquete ou * si l'etiquetage concerne tout un groupe de paquets defini par la ligne ''Pin''.


==== Ligne Pin ====
Cette ligne servira a indiquer quels paquets seront concernes par l'etiquetage de cette entree. Pour cela on se sert d'une (ou plusieures) variable(s) indiquee(s) a la ligne ''release'' du ''apt-cache policy'', dans l'exemple precedent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des depots se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquee dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen tres accessible de synthetiser cela et de voir quelles sont les priorites qu'APT attribut a un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: * -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable -&gt; se trouvant dans des depots dont la variable Origin (o) a pour valeur &quot;Debian&quot;
  et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900 -&gt; ont une priorite de 900


Et cette entree ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour -&gt; Le paquet ardour
  Pin: release a=unstable -&gt; se trouvant dans des depots dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001 -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent etre ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieures de ces variables dans la ligne ''Pin''. Il n'est pas forcement utile de les inclure toutes, une ou deux bien utilisees peuvent tout a fait etre suffisantes.


==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquee la priorite du paquet ou groupe de paquets. Elle doit etre un entier positif ou negatif. Ces priorites sont interpretes a peu pres comme suit:

  P &gt; 1000
  Cette priorite entraine l'installation du paquet meme s'il s'agit d'un retour en arriere.
  
  990 &lt; P &lt;=1000
  La version sera installee, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant a la distribution par defaut ou si la version installee est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installee, sauf s'il existe une version appartenant a une autre distribution ou si la version installee est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installee si aucune version du paquet n'est installee.
  
  P &lt; 0
  Cette priorite empeche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a etablir des priorites qui ne mettront pas votre systeme en danger. Dans ce qui suit, ''branche principale'' designe la branche de Debian que vous avez choisie de suivre en priorite (stable, testing ou sid), les autres depots presents dans le sources.list ne servant qu'a y piocher des paquets si besoin est.


- '''Garder des priorites identiques pour les depots Debian officiels d'une meme branche'''. C'est le comportement par defaut (quand l'on a que les depots de la branche principale dans le sources.list sans preferences). Tout manquement a cette regle casse le comportement par defaut et peut generer des resultats tres dommageables car non prevus par les devellopeurs Debian.


- '''Attribuer une priorite comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; a cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par defaut et a donc une priorite de 990. On comprend donc aisement qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les methodes pour piocher dans les differents depots sont expliquees un peu plus bas, dans le paragraphe ''Comment piocher dans les differents depots du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorite comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; a la branche principale'''. Ceci permet d'installer les paquets a la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installes a partir des ces depots.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent a jours automatiquement si une nouvelle version est placee dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorite a ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences generique du fait des dependances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de depots, etc) sans avoir a decaler toutes les autres entrees dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la differences entre les differentes priorites des depots a la lecture du ''apt-cache policy''.


==== Comment piocher dans les differents depots du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte apres une modification, il vous faut mettre a jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Verifiez ensuite a l'aide de ''apt-cache policy'' que les priorites sont correctes.


Il y a deux manieres d'indiquer a APT d'aller piocher dans des depots differents que ceux de la branche principale (les commandes qui suivent sont valable a la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version superieure a celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour present dans sid parce qu'il est plus recent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dependances sont mieux gerees.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez downgrader la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguee, vous utiliserez cette commande:

   apt-get install ardour/testing


Le probleme c'est que APT voudra remettre a niveau le paquet downgrade lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installee. Pour cela il y a deux possibilites:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour debloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets a mettre a jour, les paquets que vous avez bloque par cette methode y apparaitront precedes d'un '''h'''.


- Soit '''etiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloque ou avec la variable release''' a=now'''.


Par exemple si je veux downgrader ardour de la version 1:2.8.11-1 presente dans sid a la version 1:2.8.9-1 presente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entree dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numero de version a inserer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner a la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par paquet(s) installe(s) maintenant.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entree, le paquet ardour qui est installe maintenant sera forcement installe meme s'il s'agit d'un retour en arriere, donc ne sera pas mis a jour. Pour debloquer le paquet il suffira d'enlever son entree du fichier preferences.


'''N'hesitez pas a simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ca permet de verifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez reellement la commande en enlevant l'option ''-s''. cette option fonctionne egalement avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises a jours (par exemple ''aptitude safe-upgrade -s''), etc... C'est une securite non negligeable.

== Stable ==

L'interet de la branche stable est sa stabilite (etonnant non?). Donc la melanger avec les autres branches est souvent une tres mauvaise idee. '''Si vous avez besoin de paquets plus recents preferez les depots backports, la compilation, ou tout simplement utilisez une autre branche principale a la place!'''

Etant donne qu''''il est fortement deconseille de melanger stable et les branches superieures''', il est preferable de n'avoir que ses entrees dans le sources.list. Le preferences est donc inutile, sauf eventuellement si vous souhaitez utiliser les depots backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adequat dans ce cas peut-etre le suivant (changez les adresses des depots stable par d'autres que vous prefereriez si vous le souhaitez):

  # stable
  deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
  
  # stable security
  deb http://security.debian.org/ stable/updates main contrib non-free
  #deb-src http://security.debian.org/ stable/updates main contrib non-free
  
  # stable volatile
  deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  
  # stable multimedia
  deb http://www.debian-multimedia.org stable main non-free
  #deb-src http://www.debian-multimedia.org stable main non-free
  
  # backports
  deb http://www.backports.org/debian lenny-backports main contrib non-free


'''Les preferences des backports ont par defaut une valeur de 1'''. Si vous souhaitez choisir par vous meme quand installer une eventuelle nouvelle version disponible dans ces depots, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installe depuis les backports soit mis a jour automatiquement en cas de nouvelle version disponible dans ces depots, alors vous n'aurez besoin que de cette seule entree dans le fichier preferences:

  Package: *
  Pin: release a=lenny-backports
  Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

  apt-get install -t lenny-backports paquet
  aptitude install -t lenny-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php | site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

  # stable
  deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
  
  # stable security
  deb http://security.debian.org/ stable/updates main contrib non-free
  #deb-src http://security.debian.org/ stable/updates main contrib non-free
  
  # stable volatile
  deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  
  # stable multimedia
  deb http://www.debian-multimedia.org stable main non-free
  #deb-src http://www.debian-multimedia.org stable main non-free
  
  
  # testing
  deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
  
  # testing security
  deb http://security.debian.org/ testing/updates main contrib non-free
  #deb-src http://security.debian.org/ testing/updates main contrib non-free
  
  # testing multimedia
  deb http://www.debian-multimedia.org testing main non-free
  #deb-src http://www.debian-multimedia.org testing main non-free
  
  
  # sid
  deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
  
  # sid multimedia
  deb http://www.debian-multimedia.org sid main non-free
  #deb-src http://www.debian-multimedia.org sid main non-free


Accompagne de ce fichier preferences:

  Package: *
  Pin: release o=Debian,a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Debian,a=testing
  Pin-Priority: -10
  
  Package: *
  Pin: release o=Debian,a=unstable
  Pin-Priority: -10


Si vous vous contentez de faire les mises a jour et d'installer normalement des paquets, votre systeme sera exactement dans le meme etat que s'il n'avait que le depots stables sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non present dans les depots stables mais present dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.




== Testing ==

Les depots testing dependent de l'arrivee de paquets en provenance de sid. Il se peut donc que ces depots ne soient pas complets ou entrainent des problemes de dependances. '''Installer une testing seule c'est un peu installer une version a trous de Debian puisqu'elle est tres souvent incomplete, du coup l'etiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' a la place de ''upgrade'' (ou les equivalents pour ''aptitude''), car de toutes façons durant le cycle de developpement le ''dist-upgrade'' sera souvent indispensable. N'hesitez pas a user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui la:

  # lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  
  # lenny security
  deb http://security.debian.org/ lenny/updates main contrib non-free
  #deb-src http://security.debian.org/ lenny/updates main contrib non-free
  
  # lenny volatile
  deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  
  # lenny multimedia
  deb http://www.debian-multimedia.org lenny main non-free
  #deb-src http://www.debian-multimedia.org lenny main non-free
  
  
  # squeeze
  deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  
  # squeeze security
  deb http://security.debian.org/ squeeze/updates main contrib non-free
  #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
  
  # squeeze multimedia
  deb http://www.debian-multimedia.org squeeze main non-free
  #deb-src http://www.debian-multimedia.org squeeze main non-free
  
  
  # sid
  deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
  
  # sid multimedia
  deb http://www.debian-multimedia.org sid main non-free
  #deb-src http://www.debian-multimedia.org sid main non-free
  
  
  # experimental
  deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
  
  # experimental multimedia
  deb http://www.debian-multimedia.org experimental main
  #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=testing
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Debian,a=testing
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Debian,a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release o=volatile.debian.org,a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=unstable
  Pin-Priority: 90
  
  Package: *
  Pin: release o=Debian,a=unstable
  Pin-Priority: 90
  
  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=experimental
  Pin-Priority: 1


Vous serez ainsi en testing par defaut, d'eventuels paquets manquants seront completes par les depots de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables, a plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problemes toutes references aux depots de la branche experimental du sources.list et du fichier preferences.'''




== Sid ==


Comme testing, sid n'est pas toujours complete d'ou l'utilite d'avoir les autres branches facilement accessibles. Cela dit il faut quand meme surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

  # lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  
  # lenny security
  deb http://security.debian.org/ lenny/updates main contrib non-free
  #deb-src http://security.debian.org/ lenny/updates main contrib non-free
  
  # lenny volatile
  deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  
  # lenny multimedia
  deb http://www.debian-multimedia.org lenny main non-free
  #deb-src http://www.debian-multimedia.org lenny main non-free
  
  
  # squeeze
  deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  
  # squeeze security
  deb http://security.debian.org/ squeeze/updates main contrib non-free
  #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
  
  # squeeze multimedia
  deb http://www.debian-multimedia.org squeeze main non-free
  #deb-src http://www.debian-multimedia.org squeeze main non-free
  
  
  # sid
  deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
  
  # sid multimedia
  deb http://www.debian-multimedia.org sid main non-free
  #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par defaut tous les depots ont la meme priorite''', et a priorites egales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installe. Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets.

Si vous souhaitez utiliser les depots experimental, utilisez un sources.list complet comme celui presente dans le paragraphe Testing. '''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables''', a plus fortes raison ceux de multimedia, mais si vous tenez a ces depots alors utilisez ce fichier preferences pour eviter les problemes:


  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
  Pin-Priority: 1</text>
      <sha1>myl3natdzcw0yoz60b7jga7z5fxomck</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1725</id>
      <parentid>1724</parentid>
      <timestamp>2010-07-27T14:48:49Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>Mise en page</comment>
      <text xml:space="preserve" bytes="26977">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'etiquetage (ou pinning en VO) consiste a assigner a un paquet (ou a un groupe de paquets) une priorite d'installation differente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermediaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque depot present dans le sources.list se voit attribuer une priorite d'installation. Par defaut tous les depots ont la meme priorite (500 sauf exception, experimental et backports par exemple qui ont une priorite par defaut de 1), et a priorites egales c'est le numero de version des paquets qui joue, le plus recent est prioritaire.

Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus recents et qui ne viennent pas d'experimental qui ont la priorite, ce qui correspond a sid.

Le fichier de preferences sert a modifier les priorites qui sont affectees aux paquets par APT, et ce par l'intermediaire de regles s'appliquant a un, plusieurs ou un ensemble de paquets (et non a des depots, c'est un abus de language qui peut nuire a la comprehension du fonctionnement des regles). Cette methode peut etre utilisee pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer differentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de depots non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'etiquetage peut tres vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT decrite dans apt_preferences (5) soit puissante, ses effets peuvent etre difficiles a comprendre et a gerer.
 Vous devriez la considerer comme une Fonction Avancee.


C'est pas moi qui le dit, c'est la doc officielle... donc la premiere chose a se demander c'est ''ai je vraiment besoin d'etiqueter des paquets?''. Certains des chapitres suivants devraient vous aider a repondre a cette question, mais cette reponse dependra en tres grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'etiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire meme plusieures fois. Certaines informations sont repetees dans differents paragraphes, j'espere que ce n'est pas redondant mais que ca facilite la comprehension du sujet et evitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi a faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez egalement trouver des informations sur l'etiquetage en tapant '''man apt_preferences''' dans un terminal.




== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitue d'une ou plusieurs entrees separees par des lignes blanches. Un exemple d'entrees de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entree est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou negatif)


Pour completer au mieux ces entrees nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorite assignee au depot http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront a completer la ligne ''Pin'' des entrees du fichier preferences et sont donc expliquees au paragraphe qui la concerne un peu plus bas.


Detaillons ligne par ligne les entrees du fichier preferences:


==== Ligne Package ====
C'est la qu'est indique le nom du paquet etiquete ou * si l'etiquetage concerne tout un groupe de paquets defini par la ligne ''Pin''.


==== Ligne Pin ====
Cette ligne servira a indiquer quels paquets seront concernes par l'etiquetage de cette entree. Pour cela on se sert d'une (ou plusieures) variable(s) indiquee(s) a la ligne ''release'' du ''apt-cache policy'', dans l'exemple precedent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des depots se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquee dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen tres accessible de synthetiser cela et de voir quelles sont les priorites qu'APT attribut a un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: * -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable -&gt; se trouvant dans des depots dont la variable Origin (o) a pour valeur &quot;Debian&quot;
  et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900 -&gt; ont une priorite de 900


Et cette entree ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour -&gt; Le paquet ardour
  Pin: release a=unstable -&gt; se trouvant dans des depots dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001 -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent etre ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieures de ces variables dans la ligne ''Pin''. Il n'est pas forcement utile de les inclure toutes, une ou deux bien utilisees peuvent tout a fait etre suffisantes.


==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquee la priorite du paquet ou groupe de paquets. Elle doit etre un entier positif ou negatif. Ces priorites sont interpretes a peu pres comme suit:

  P &gt; 1000
  Cette priorite entraine l'installation du paquet meme s'il s'agit d'un retour en arriere.
  
  990 &lt; P &lt;=1000
  La version sera installee, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant a la distribution par defaut ou si la version installee est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installee, sauf s'il existe une version appartenant a une autre distribution ou si la version installee est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installee si aucune version du paquet n'est installee.
  
  P &lt; 0
  Cette priorite empeche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a etablir des priorites qui ne mettront pas votre systeme en danger. Dans ce qui suit, ''branche principale'' designe la branche de Debian que vous avez choisie de suivre en priorite (stable, testing ou sid), les autres depots presents dans le sources.list ne servant qu'a y piocher des paquets si besoin est.


- '''Garder des priorites identiques pour les depots Debian officiels d'une meme branche'''. C'est le comportement par defaut (quand l'on a que les depots de la branche principale dans le sources.list sans preferences). Tout manquement a cette regle casse le comportement par defaut et peut generer des resultats tres dommageables car non prevus par les devellopeurs Debian.


- '''Attribuer une priorite comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; a cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par defaut et a donc une priorite de 990. On comprend donc aisement qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les methodes pour piocher dans les differents depots sont expliquees un peu plus bas, dans le paragraphe ''Comment piocher dans les differents depots du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorite comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; a la branche principale'''. Ceci permet d'installer les paquets a la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installes a partir des ces depots.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent a jours automatiquement si une nouvelle version est placee dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorite a ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences generique du fait des dependances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de depots, etc) sans avoir a decaler toutes les autres entrees dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la differences entre les differentes priorites des depots a la lecture du ''apt-cache policy''.


==== Comment piocher dans les differents depots du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte apres une modification, il vous faut mettre a jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Verifiez ensuite a l'aide de ''apt-cache policy'' que les priorites sont correctes.


Il y a deux manieres d'indiquer a APT d'aller piocher dans des depots differents que ceux de la branche principale (les commandes qui suivent sont valable a la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version superieure a celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour present dans sid parce qu'il est plus recent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dependances sont mieux gerees.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez downgrader la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguee, vous utiliserez cette commande:

   apt-get install ardour/testing


Le probleme c'est que APT voudra remettre a niveau le paquet downgrade lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installee. Pour cela il y a deux possibilites:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour debloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets a mettre a jour, les paquets que vous avez bloque par cette methode y apparaitront precedes d'un '''h'''.


- Soit '''etiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloque ou avec la variable release''' a=now'''.


Par exemple si je veux downgrader ardour de la version 1:2.8.11-1 presente dans sid a la version 1:2.8.9-1 presente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entree dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numero de version a inserer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner a la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par paquet(s) installe(s) maintenant.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entree, le paquet ardour qui est installe maintenant sera forcement installe meme s'il s'agit d'un retour en arriere, donc ne sera pas mis a jour. Pour debloquer le paquet il suffira d'enlever son entree du fichier preferences.


'''N'hesitez pas a simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ca permet de verifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez reellement la commande en enlevant l'option ''-s''. cette option fonctionne egalement avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises a jours (par exemple ''aptitude safe-upgrade -s''), etc... C'est une securite non negligeable.

== Stable ==

L'interet de la branche stable est sa stabilite (etonnant non?). Donc la melanger avec les autres branches est souvent une tres mauvaise idee. '''Si vous avez besoin de paquets plus recents preferez les depots backports, la compilation, ou tout simplement utilisez une autre branche principale a la place!'''

Etant donne qu''''il est fortement deconseille de melanger stable et les branches superieures''', il est preferable de n'avoir que ses entrees dans le sources.list. Le preferences est donc inutile, sauf eventuellement si vous souhaitez utiliser les depots backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adequat dans ce cas peut-etre le suivant (changez les adresses des depots stable par d'autres que vous prefereriez si vous le souhaitez):

  # stable
  deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
  
  # stable security
  deb http://security.debian.org/ stable/updates main contrib non-free
  #deb-src http://security.debian.org/ stable/updates main contrib non-free
  
  # stable volatile
  deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  
  # stable multimedia
  deb http://www.debian-multimedia.org stable main non-free
  #deb-src http://www.debian-multimedia.org stable main non-free
  
  # backports
  deb http://www.backports.org/debian lenny-backports main contrib non-free


'''Les preferences des backports ont par defaut une valeur de 1'''. Si vous souhaitez choisir par vous meme quand installer une eventuelle nouvelle version disponible dans ces depots, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installe depuis les backports soit mis a jour automatiquement en cas de nouvelle version disponible dans ces depots, alors vous n'aurez besoin que de cette seule entree dans le fichier preferences:

  Package: *
  Pin: release a=lenny-backports
  Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

  apt-get install -t lenny-backports paquet
  aptitude install -t lenny-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

  # stable
  deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
  
  # stable security
  deb http://security.debian.org/ stable/updates main contrib non-free
  #deb-src http://security.debian.org/ stable/updates main contrib non-free
  
  # stable volatile
  deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  
  # stable multimedia
  deb http://www.debian-multimedia.org stable main non-free
  #deb-src http://www.debian-multimedia.org stable main non-free
  
  
  # testing
  deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
  
  # testing security
  deb http://security.debian.org/ testing/updates main contrib non-free
  #deb-src http://security.debian.org/ testing/updates main contrib non-free
  
  # testing multimedia
  deb http://www.debian-multimedia.org testing main non-free
  #deb-src http://www.debian-multimedia.org testing main non-free
  
  
  # sid
  deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
  
  # sid multimedia
  deb http://www.debian-multimedia.org sid main non-free
  #deb-src http://www.debian-multimedia.org sid main non-free


Accompagne de ce fichier preferences:

  Package: *
  Pin: release o=Debian,a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Debian,a=testing
  Pin-Priority: -10
  
  Package: *
  Pin: release o=Debian,a=unstable
  Pin-Priority: -10


Si vous vous contentez de faire les mises a jour et d'installer normalement des paquets, votre systeme sera exactement dans le meme etat que s'il n'avait que le depots stables sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non present dans les depots stables mais present dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les depots testing dependent de l'arrivee de paquets en provenance de sid. Il se peut donc que ces depots ne soient pas complets ou entrainent des problemes de dependances. '''Installer une testing seule c'est un peu installer une version a trous de Debian puisqu'elle est tres souvent incomplete, du coup l'etiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' a la place de ''upgrade'' (ou les equivalents pour ''aptitude''), car de toutes façons durant le cycle de developpement le ''dist-upgrade'' sera souvent indispensable. N'hesitez pas a user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui la:

  # lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  
  # lenny security
  deb http://security.debian.org/ lenny/updates main contrib non-free
  #deb-src http://security.debian.org/ lenny/updates main contrib non-free
  
  # lenny volatile
  deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  
  # lenny multimedia
  deb http://www.debian-multimedia.org lenny main non-free
  #deb-src http://www.debian-multimedia.org lenny main non-free
  
  
  # squeeze
  deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  
  # squeeze security
  deb http://security.debian.org/ squeeze/updates main contrib non-free
  #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
  
  # squeeze multimedia
  deb http://www.debian-multimedia.org squeeze main non-free
  #deb-src http://www.debian-multimedia.org squeeze main non-free
  
  
  # sid
  deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
  
  # sid multimedia
  deb http://www.debian-multimedia.org sid main non-free
  #deb-src http://www.debian-multimedia.org sid main non-free
  
  
  # experimental
  deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
  
  # experimental multimedia
  deb http://www.debian-multimedia.org experimental main
  #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=testing
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Debian,a=testing
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Debian,a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release o=volatile.debian.org,a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=unstable
  Pin-Priority: 90
  
  Package: *
  Pin: release o=Debian,a=unstable
  Pin-Priority: 90
  
  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=experimental
  Pin-Priority: 1


Vous serez ainsi en testing par defaut, d'eventuels paquets manquants seront completes par les depots de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables, a plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problemes toutes references aux depots de la branche experimental du sources.list et du fichier preferences.'''




== Sid ==


Comme testing, sid n'est pas toujours complete d'ou l'utilite d'avoir les autres branches facilement accessibles. Cela dit il faut quand meme surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

  # lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  
  # lenny security
  deb http://security.debian.org/ lenny/updates main contrib non-free
  #deb-src http://security.debian.org/ lenny/updates main contrib non-free
  
  # lenny volatile
  deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  
  # lenny multimedia
  deb http://www.debian-multimedia.org lenny main non-free
  #deb-src http://www.debian-multimedia.org lenny main non-free
  
  
  # squeeze
  deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  
  # squeeze security
  deb http://security.debian.org/ squeeze/updates main contrib non-free
  #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
  
  # squeeze multimedia
  deb http://www.debian-multimedia.org squeeze main non-free
  #deb-src http://www.debian-multimedia.org squeeze main non-free
  
  
  # sid
  deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
  
  # sid multimedia
  deb http://www.debian-multimedia.org sid main non-free
  #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par defaut tous les depots ont la meme priorite''', et a priorites egales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installe. Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets.

Si vous souhaitez utiliser les depots experimental, utilisez un sources.list complet comme celui presente dans le paragraphe Testing. '''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables''', a plus fortes raison ceux de multimedia, mais si vous tenez a ces depots alors utilisez ce fichier preferences pour eviter les problemes:


  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
  Pin-Priority: 1</text>
      <sha1>atubndr3vf3n4qborhkd7qhhpev45cq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1759</id>
      <parentid>1725</parentid>
      <timestamp>2010-07-28T15:56:02Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>erreur de ponctuation corrigee</comment>
      <text xml:space="preserve" bytes="26973">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'etiquetage (ou pinning en VO) consiste a assigner a un paquet (ou a un groupe de paquets) une priorite d'installation differente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermediaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque depot present dans le sources.list se voit attribuer une priorite d'installation. Par defaut tous les depots ont la meme priorite (500 sauf exception, experimental et backports par exemple qui ont une priorite par defaut de 1), et a priorites egales c'est le numero de version des paquets qui joue, le plus recent est prioritaire.

Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus recents et qui ne viennent pas d'experimental qui ont la priorite, ce qui correspond a sid.

Le fichier de preferences sert a modifier les priorites qui sont affectees aux paquets par APT, et ce par l'intermediaire de regles s'appliquant a un, plusieurs ou un ensemble de paquets (et non a des depots, c'est un abus de language qui peut nuire a la comprehension du fonctionnement des regles). Cette methode peut etre utilisee pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer differentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de depots non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'etiquetage peut tres vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT decrite dans apt_preferences (5) soit puissante, ses effets peuvent etre difficiles a comprendre et a gerer.
 Vous devriez la considerer comme une Fonction Avancee.


C'est pas moi qui le dit, c'est la doc officielle... donc la premiere chose a se demander c'est ''ai je vraiment besoin d'etiqueter des paquets?'' Certains des chapitres suivants devraient vous aider a repondre a cette question, mais cette reponse dependra en tres grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'etiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire meme plusieures fois. Certaines informations sont repetees dans differents paragraphes, j'espere que ce n'est pas redondant mais que ca facilite la comprehension du sujet et evitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi a faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez egalement trouver des informations sur l'etiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitue d'une ou plusieurs entrees separees par des lignes blanches. Un exemple d'entrees de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entree est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou negatif)


Pour completer au mieux ces entrees nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorite assignee au depot http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront a completer la ligne ''Pin'' des entrees du fichier preferences et sont donc expliquees au paragraphe qui la concerne un peu plus bas.


Detaillons ligne par ligne les entrees du fichier preferences:


==== Ligne Package ====
C'est la qu'est indique le nom du paquet etiquete ou * si l'etiquetage concerne tout un groupe de paquets defini par la ligne ''Pin''.


==== Ligne Pin ====
Cette ligne servira a indiquer quels paquets seront concernes par l'etiquetage de cette entree. Pour cela on se sert d'une (ou plusieures) variable(s) indiquee(s) a la ligne ''release'' du ''apt-cache policy'', dans l'exemple precedent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des depots se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquee dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen tres accessible de synthetiser cela et de voir quelles sont les priorites qu'APT attribut a un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: * -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable -&gt; se trouvant dans des depots dont la variable Origin (o) a pour valeur &quot;Debian&quot;
  et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900 -&gt; ont une priorite de 900


Et cette entree ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour -&gt; Le paquet ardour
  Pin: release a=unstable -&gt; se trouvant dans des depots dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001 -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent etre ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieures de ces variables dans la ligne ''Pin''. Il n'est pas forcement utile de les inclure toutes, une ou deux bien utilisees peuvent tout a fait etre suffisantes.


==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquee la priorite du paquet ou groupe de paquets. Elle doit etre un entier positif ou negatif. Ces priorites sont interpretes a peu pres comme suit:

  P &gt; 1000
  Cette priorite entraine l'installation du paquet meme s'il s'agit d'un retour en arriere.
  
  990 &lt; P &lt;=1000
  La version sera installee, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant a la distribution par defaut ou si la version installee est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installee, sauf s'il existe une version appartenant a une autre distribution ou si la version installee est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installee si aucune version du paquet n'est installee.
  
  P &lt; 0
  Cette priorite empeche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a etablir des priorites qui ne mettront pas votre systeme en danger. Dans ce qui suit, ''branche principale'' designe la branche de Debian que vous avez choisie de suivre en priorite (stable, testing ou sid), les autres depots presents dans le sources.list ne servant qu'a y piocher des paquets si besoin est.


- '''Garder des priorites identiques pour les depots Debian officiels d'une meme branche'''. C'est le comportement par defaut (quand l'on a que les depots de la branche principale dans le sources.list sans preferences). Tout manquement a cette regle casse le comportement par defaut et peut generer des resultats tres dommageables car non prevus par les devellopeurs Debian.


- '''Attribuer une priorite comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; a cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par defaut et a donc une priorite de 990. On comprend donc aisement qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les methodes pour piocher dans les differents depots sont expliquees un peu plus bas, dans le paragraphe ''Comment piocher dans les differents depots du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorite comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; a la branche principale'''. Ceci permet d'installer les paquets a la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installes a partir des ces depots.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent a jours automatiquement si une nouvelle version est placee dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorite a ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences generique du fait des dependances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de depots, etc) sans avoir a decaler toutes les autres entrees dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la differences entre les differentes priorites des depots a la lecture du ''apt-cache policy''.


==== Comment piocher dans les differents depots du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte apres une modification, il vous faut mettre a jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Verifiez ensuite a l'aide de ''apt-cache policy'' que les priorites sont correctes.


Il y a deux manieres d'indiquer a APT d'aller piocher dans des depots differents que ceux de la branche principale (les commandes qui suivent sont valable a la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version superieure a celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour present dans sid parce qu'il est plus recent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dependances sont mieux gerees.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez downgrader la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguee, vous utiliserez cette commande:

   apt-get install ardour/testing


Le probleme c'est que APT voudra remettre a niveau le paquet downgrade lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installee. Pour cela il y a deux possibilites:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour debloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets a mettre a jour, les paquets que vous avez bloque par cette methode y apparaitront precedes d'un '''h'''.


- Soit '''etiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloque ou avec la variable release''' a=now'''.


Par exemple si je veux downgrader ardour de la version 1:2.8.11-1 presente dans sid a la version 1:2.8.9-1 presente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entree dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numero de version a inserer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner a la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par paquet(s) installe(s) maintenant.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entree, le paquet ardour qui est installe maintenant sera forcement installe meme s'il s'agit d'un retour en arriere, donc ne sera pas mis a jour. Pour debloquer le paquet il suffira d'enlever son entree du fichier preferences.


'''N'hesitez pas a simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ca permet de verifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez reellement la commande en enlevant l'option ''-s''. cette option fonctionne egalement avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises a jours (par exemple ''aptitude safe-upgrade -s''), etc... C'est une securite non negligeable.

== Stable ==

L'interet de la branche stable est sa stabilite (etonnant non?). Donc la melanger avec les autres branches est souvent une tres mauvaise idee. '''Si vous avez besoin de paquets plus recents preferez les depots backports, la compilation, ou tout simplement utilisez une autre branche principale a la place!'''

Etant donne qu''''il est fortement deconseille de melanger stable et les branches superieures''', il est preferable de n'avoir que ses entrees dans le sources.list. Le preferences est donc inutile, sauf eventuellement si vous souhaitez utiliser les depots backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adequat dans ce cas peut-etre le suivant (changez les adresses des depots stable par d'autres que vous prefereriez si vous le souhaitez):

  # stable
  deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
  
  # stable security
  deb http://security.debian.org/ stable/updates main contrib non-free
  #deb-src http://security.debian.org/ stable/updates main contrib non-free
  
  # stable volatile
  deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  
  # stable multimedia
  deb http://www.debian-multimedia.org stable main non-free
  #deb-src http://www.debian-multimedia.org stable main non-free
  
  # backports
  deb http://www.backports.org/debian lenny-backports main contrib non-free


'''Les preferences des backports ont par defaut une valeur de 1'''. Si vous souhaitez choisir par vous meme quand installer une eventuelle nouvelle version disponible dans ces depots, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installe depuis les backports soit mis a jour automatiquement en cas de nouvelle version disponible dans ces depots, alors vous n'aurez besoin que de cette seule entree dans le fichier preferences:

  Package: *
  Pin: release a=lenny-backports
  Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

  apt-get install -t lenny-backports paquet
  aptitude install -t lenny-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

  # stable
  deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
  
  # stable security
  deb http://security.debian.org/ stable/updates main contrib non-free
  #deb-src http://security.debian.org/ stable/updates main contrib non-free
  
  # stable volatile
  deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  
  # stable multimedia
  deb http://www.debian-multimedia.org stable main non-free
  #deb-src http://www.debian-multimedia.org stable main non-free
  
  
  # testing
  deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
  
  # testing security
  deb http://security.debian.org/ testing/updates main contrib non-free
  #deb-src http://security.debian.org/ testing/updates main contrib non-free
  
  # testing multimedia
  deb http://www.debian-multimedia.org testing main non-free
  #deb-src http://www.debian-multimedia.org testing main non-free
  
  
  # sid
  deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
  
  # sid multimedia
  deb http://www.debian-multimedia.org sid main non-free
  #deb-src http://www.debian-multimedia.org sid main non-free


Accompagne de ce fichier preferences:

  Package: *
  Pin: release o=Debian,a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Debian,a=testing
  Pin-Priority: -10
  
  Package: *
  Pin: release o=Debian,a=unstable
  Pin-Priority: -10


Si vous vous contentez de faire les mises a jour et d'installer normalement des paquets, votre systeme sera exactement dans le meme etat que s'il n'avait que le depots stables sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non present dans les depots stables mais present dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les depots testing dependent de l'arrivee de paquets en provenance de sid. Il se peut donc que ces depots ne soient pas complets ou entrainent des problemes de dependances. '''Installer une testing seule c'est un peu installer une version a trous de Debian puisqu'elle est tres souvent incomplete, du coup l'etiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' a la place de ''upgrade'' (ou les equivalents pour ''aptitude''), car de toutes façons durant le cycle de developpement le ''dist-upgrade'' sera souvent indispensable. N'hesitez pas a user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui la:

  # lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  
  # lenny security
  deb http://security.debian.org/ lenny/updates main contrib non-free
  #deb-src http://security.debian.org/ lenny/updates main contrib non-free
  
  # lenny volatile
  deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  
  # lenny multimedia
  deb http://www.debian-multimedia.org lenny main non-free
  #deb-src http://www.debian-multimedia.org lenny main non-free
  
  
  # squeeze
  deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  
  # squeeze security
  deb http://security.debian.org/ squeeze/updates main contrib non-free
  #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
  
  # squeeze multimedia
  deb http://www.debian-multimedia.org squeeze main non-free
  #deb-src http://www.debian-multimedia.org squeeze main non-free
  
  
  # sid
  deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
  
  # sid multimedia
  deb http://www.debian-multimedia.org sid main non-free
  #deb-src http://www.debian-multimedia.org sid main non-free
  
  
  # experimental
  deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
  
  # experimental multimedia
  deb http://www.debian-multimedia.org experimental main
  #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=testing
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Debian,a=testing
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Debian,a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release o=volatile.debian.org,a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=unstable
  Pin-Priority: 90
  
  Package: *
  Pin: release o=Debian,a=unstable
  Pin-Priority: 90
  
  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=experimental
  Pin-Priority: 1


Vous serez ainsi en testing par defaut, d'eventuels paquets manquants seront completes par les depots de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables, a plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problemes toutes references aux depots de la branche experimental du sources.list et du fichier preferences.'''




== Sid ==


Comme testing, sid n'est pas toujours complete d'ou l'utilite d'avoir les autres branches facilement accessibles. Cela dit il faut quand meme surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

  # lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  
  # lenny security
  deb http://security.debian.org/ lenny/updates main contrib non-free
  #deb-src http://security.debian.org/ lenny/updates main contrib non-free
  
  # lenny volatile
  deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  
  # lenny multimedia
  deb http://www.debian-multimedia.org lenny main non-free
  #deb-src http://www.debian-multimedia.org lenny main non-free
  
  
  # squeeze
  deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  
  # squeeze security
  deb http://security.debian.org/ squeeze/updates main contrib non-free
  #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
  
  # squeeze multimedia
  deb http://www.debian-multimedia.org squeeze main non-free
  #deb-src http://www.debian-multimedia.org squeeze main non-free
  
  
  # sid
  deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
  
  # sid multimedia
  deb http://www.debian-multimedia.org sid main non-free
  #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par defaut tous les depots ont la meme priorite''', et a priorites egales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installe. Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets.

Si vous souhaitez utiliser les depots experimental, utilisez un sources.list complet comme celui presente dans le paragraphe Testing. '''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables''', a plus fortes raison ceux de multimedia, mais si vous tenez a ces depots alors utilisez ce fichier preferences pour eviter les problemes:


  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
  Pin-Priority: 1</text>
      <sha1>okscscs70qz30buy32c8yix7446egqm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1760</id>
      <parentid>1759</parentid>
      <timestamp>2010-07-28T16:09:22Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>mise en page</comment>
      <text xml:space="preserve" bytes="27145">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'etiquetage (ou pinning en VO) consiste a assigner a un paquet (ou a un groupe de paquets) une priorite d'installation differente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermediaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque depot present dans le sources.list se voit attribuer une priorite d'installation. Par defaut tous les depots ont la meme priorite (500 sauf exception, experimental et backports par exemple qui ont une priorite par defaut de 1), et a priorites egales c'est le numero de version des paquets qui joue, le plus recent est prioritaire.

Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus recents et qui ne viennent pas d'experimental qui ont la priorite, ce qui correspond a sid.

Le fichier de preferences sert a modifier les priorites qui sont affectees aux paquets par APT, et ce par l'intermediaire de regles s'appliquant a un, plusieurs ou un ensemble de paquets (et non a des depots, c'est un abus de language qui peut nuire a la comprehension du fonctionnement des regles). Cette methode peut etre utilisee pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer differentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de depots non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'etiquetage peut tres vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT decrite dans apt_preferences (5) soit puissante, ses effets peuvent etre difficiles a comprendre et a gerer.
 Vous devriez la considerer comme une Fonction Avancee.


C'est pas moi qui le dit, c'est la doc officielle... donc la premiere chose a se demander c'est ''ai je vraiment besoin d'etiqueter des paquets?'' Certains des chapitres suivants devraient vous aider a repondre a cette question, mais cette reponse dependra en tres grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'etiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire meme plusieures fois. Certaines informations sont repetees dans differents paragraphes, j'espere que ce n'est pas redondant mais que ca facilite la comprehension du sujet et evitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi a faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez egalement trouver des informations sur l'etiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitue d'une ou plusieurs entrees separees par des lignes blanches. Un exemple d'entrees de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entree est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou negatif)


Pour completer au mieux ces entrees nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorite assignee au depot http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront a completer la ligne ''Pin'' des entrees du fichier preferences et sont donc expliquees au paragraphe qui la concerne un peu plus bas.


Detaillons ligne par ligne les entrees du fichier preferences:


==== Ligne Package ====
C'est la qu'est indique le nom du paquet etiquete ou * si l'etiquetage concerne tout un groupe de paquets defini par la ligne ''Pin''.


==== Ligne Pin ====
Cette ligne servira a indiquer quels paquets seront concernes par l'etiquetage de cette entree. Pour cela on se sert d'une (ou plusieures) variable(s) indiquee(s) a la ligne ''release'' du ''apt-cache policy'', dans l'exemple precedent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des depots se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquee dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen tres accessible de synthetiser cela et de voir quelles sont les priorites qu'APT attribut a un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des depots dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entree ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des depots dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent etre ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieures de ces variables dans la ligne ''Pin''. Il n'est pas forcement utile de les inclure toutes, une ou deux bien utilisees peuvent tout a fait etre suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquee la priorite du paquet ou groupe de paquets. Elle doit etre un entier positif ou negatif. Ces priorites sont interpretes a peu pres comme suit:

  P &gt; 1000
  Cette priorite entraine l'installation du paquet meme s'il s'agit d'un retour en arriere.
  
  990 &lt; P &lt;=1000
  La version sera installee, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant a la distribution par defaut ou si la version installee est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installee, sauf s'il existe une version appartenant a une autre distribution ou si la version installee est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installee si aucune version du paquet n'est installee.
  
  P &lt; 0
  Cette priorite empeche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a etablir des priorites qui ne mettront pas votre systeme en danger. Dans ce qui suit, ''branche principale'' designe la branche de Debian que vous avez choisie de suivre en priorite (stable, testing ou sid), les autres depots presents dans le sources.list ne servant qu'a y piocher des paquets si besoin est.


- '''Garder des priorites identiques pour les depots Debian officiels d'une meme branche'''. C'est le comportement par defaut (quand l'on a que les depots de la branche principale dans le sources.list sans preferences). Tout manquement a cette regle casse le comportement par defaut et peut generer des resultats tres dommageables car non prevus par les devellopeurs Debian.


- '''Attribuer une priorite comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; a cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par defaut et a donc une priorite de 990. On comprend donc aisement qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les methodes pour piocher dans les differents depots sont expliquees un peu plus bas, dans le paragraphe ''Comment piocher dans les differents depots du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorite comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; a la branche principale'''. Ceci permet d'installer les paquets a la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installes a partir des ces depots.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent a jours automatiquement si une nouvelle version est placee dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorite a ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences generique du fait des dependances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de depots, etc) sans avoir a decaler toutes les autres entrees dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la differences entre les differentes priorites des depots a la lecture du ''apt-cache policy''.


==== Comment piocher dans les differents depots du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte apres une modification, il vous faut mettre a jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Verifiez ensuite a l'aide de ''apt-cache policy'' que les priorites sont correctes.


Il y a deux manieres d'indiquer a APT d'aller piocher dans des depots differents que ceux de la branche principale (les commandes qui suivent sont valable a la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version superieure a celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour present dans sid parce qu'il est plus recent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dependances sont mieux gerees.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez downgrader la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguee, vous utiliserez cette commande:

   apt-get install ardour/testing


Le probleme c'est que APT voudra remettre a niveau le paquet downgrade lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installee. Pour cela il y a deux possibilites:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour debloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets a mettre a jour, les paquets que vous avez bloque par cette methode y apparaitront precedes d'un '''h'''.


- Soit '''etiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloque ou avec la variable release''' a=now'''.


Par exemple si je veux downgrader ardour de la version 1:2.8.11-1 presente dans sid a la version 1:2.8.9-1 presente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entree dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numero de version a inserer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner a la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par paquet(s) installe(s) maintenant.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entree, le paquet ardour qui est installe maintenant sera forcement installe meme s'il s'agit d'un retour en arriere, donc ne sera pas mis a jour. Pour debloquer le paquet il suffira d'enlever son entree du fichier preferences.


'''N'hesitez pas a simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ca permet de verifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez reellement la commande en enlevant l'option ''-s''. cette option fonctionne egalement avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises a jours (par exemple ''aptitude safe-upgrade -s''), etc... C'est une securite non negligeable.

== Stable ==

L'interet de la branche stable est sa stabilite (etonnant non?). Donc la melanger avec les autres branches est souvent une tres mauvaise idee. '''Si vous avez besoin de paquets plus recents preferez les depots backports, la compilation, ou tout simplement utilisez une autre branche principale a la place!'''

Etant donne qu''''il est fortement deconseille de melanger stable et les branches superieures''', il est preferable de n'avoir que ses entrees dans le sources.list. Le preferences est donc inutile, sauf eventuellement si vous souhaitez utiliser les depots backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adequat dans ce cas peut-etre le suivant (changez les adresses des depots stable par d'autres que vous prefereriez si vous le souhaitez):

  # stable
  deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
  
  # stable security
  deb http://security.debian.org/ stable/updates main contrib non-free
  #deb-src http://security.debian.org/ stable/updates main contrib non-free
  
  # stable volatile
  deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  
  # stable multimedia
  deb http://www.debian-multimedia.org stable main non-free
  #deb-src http://www.debian-multimedia.org stable main non-free
  
  # backports
  deb http://www.backports.org/debian lenny-backports main contrib non-free


'''Les preferences des backports ont par defaut une valeur de 1'''. Si vous souhaitez choisir par vous meme quand installer une eventuelle nouvelle version disponible dans ces depots, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installe depuis les backports soit mis a jour automatiquement en cas de nouvelle version disponible dans ces depots, alors vous n'aurez besoin que de cette seule entree dans le fichier preferences:

  Package: *
  Pin: release a=lenny-backports
  Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

  apt-get install -t lenny-backports paquet
  aptitude install -t lenny-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

  # stable
  deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
  
  # stable security
  deb http://security.debian.org/ stable/updates main contrib non-free
  #deb-src http://security.debian.org/ stable/updates main contrib non-free
  
  # stable volatile
  deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  
  # stable multimedia
  deb http://www.debian-multimedia.org stable main non-free
  #deb-src http://www.debian-multimedia.org stable main non-free
  
  
  # testing
  deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
  
  # testing security
  deb http://security.debian.org/ testing/updates main contrib non-free
  #deb-src http://security.debian.org/ testing/updates main contrib non-free
  
  # testing multimedia
  deb http://www.debian-multimedia.org testing main non-free
  #deb-src http://www.debian-multimedia.org testing main non-free
  
  
  # sid
  deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
  
  # sid multimedia
  deb http://www.debian-multimedia.org sid main non-free
  #deb-src http://www.debian-multimedia.org sid main non-free


Accompagne de ce fichier preferences:

  Package: *
  Pin: release o=Debian,a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Debian,a=testing
  Pin-Priority: -10
  
  Package: *
  Pin: release o=Debian,a=unstable
  Pin-Priority: -10


Si vous vous contentez de faire les mises a jour et d'installer normalement des paquets, votre systeme sera exactement dans le meme etat que s'il n'avait que le depots stables sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non present dans les depots stables mais present dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les depots testing dependent de l'arrivee de paquets en provenance de sid. Il se peut donc que ces depots ne soient pas complets ou entrainent des problemes de dependances. '''Installer une testing seule c'est un peu installer une version a trous de Debian puisqu'elle est tres souvent incomplete, du coup l'etiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' a la place de ''upgrade'' (ou les equivalents pour ''aptitude''), car de toutes façons durant le cycle de developpement le ''dist-upgrade'' sera souvent indispensable. N'hesitez pas a user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui la:

  # lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  
  # lenny security
  deb http://security.debian.org/ lenny/updates main contrib non-free
  #deb-src http://security.debian.org/ lenny/updates main contrib non-free
  
  # lenny volatile
  deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  
  # lenny multimedia
  deb http://www.debian-multimedia.org lenny main non-free
  #deb-src http://www.debian-multimedia.org lenny main non-free
  
  
  # squeeze
  deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  
  # squeeze security
  deb http://security.debian.org/ squeeze/updates main contrib non-free
  #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
  
  # squeeze multimedia
  deb http://www.debian-multimedia.org squeeze main non-free
  #deb-src http://www.debian-multimedia.org squeeze main non-free
  
  
  # sid
  deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
  
  # sid multimedia
  deb http://www.debian-multimedia.org sid main non-free
  #deb-src http://www.debian-multimedia.org sid main non-free
  
  
  # experimental
  deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
  
  # experimental multimedia
  deb http://www.debian-multimedia.org experimental main
  #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=testing
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Debian,a=testing
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Debian,a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release o=volatile.debian.org,a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=unstable
  Pin-Priority: 90
  
  Package: *
  Pin: release o=Debian,a=unstable
  Pin-Priority: 90
  
  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=experimental
  Pin-Priority: 1


Vous serez ainsi en testing par defaut, d'eventuels paquets manquants seront completes par les depots de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables, a plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problemes toutes references aux depots de la branche experimental du sources.list et du fichier preferences.'''




== Sid ==


Comme testing, sid n'est pas toujours complete d'ou l'utilite d'avoir les autres branches facilement accessibles. Cela dit il faut quand meme surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

  # lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  
  # lenny security
  deb http://security.debian.org/ lenny/updates main contrib non-free
  #deb-src http://security.debian.org/ lenny/updates main contrib non-free
  
  # lenny volatile
  deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  
  # lenny multimedia
  deb http://www.debian-multimedia.org lenny main non-free
  #deb-src http://www.debian-multimedia.org lenny main non-free
  
  
  # squeeze
  deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  
  # squeeze security
  deb http://security.debian.org/ squeeze/updates main contrib non-free
  #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
  
  # squeeze multimedia
  deb http://www.debian-multimedia.org squeeze main non-free
  #deb-src http://www.debian-multimedia.org squeeze main non-free
  
  
  # sid
  deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
  
  # sid multimedia
  deb http://www.debian-multimedia.org sid main non-free
  #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par defaut tous les depots ont la meme priorite''', et a priorites egales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installe. Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets.

Si vous souhaitez utiliser les depots experimental, utilisez un sources.list complet comme celui presente dans le paragraphe Testing. '''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables''', a plus fortes raison ceux de multimedia, mais si vous tenez a ces depots alors utilisez ce fichier preferences pour eviter les problemes:


  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
  Pin-Priority: 1</text>
      <sha1>gudj65f8j88qa24791cqr1pm6v9lmje</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1761</id>
      <parentid>1760</parentid>
      <timestamp>2010-07-28T16:32:10Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>mise en page</comment>
      <text xml:space="preserve" bytes="27149">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'etiquetage (ou pinning en VO) consiste a assigner a un paquet (ou a un groupe de paquets) une priorite d'installation differente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermediaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque depot present dans le sources.list se voit attribuer une priorite d'installation. Par defaut tous les depots ont la meme priorite (500 sauf exception, experimental et backports par exemple qui ont une priorite par defaut de 1), et a priorites egales c'est le numero de version des paquets qui joue, le plus recent est prioritaire.

Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus recents et qui ne viennent pas d'experimental qui ont la priorite, ce qui correspond a sid.

Le fichier de preferences sert a modifier les priorites qui sont affectees aux paquets par APT, et ce par l'intermediaire de regles s'appliquant a un, plusieurs ou un ensemble de paquets (et non a des depots, c'est un abus de language qui peut nuire a la comprehension du fonctionnement des regles). Cette methode peut etre utilisee pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer differentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de depots non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'etiquetage peut tres vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT decrite dans apt_preferences (5) soit puissante, ses effets peuvent etre difficiles a comprendre et a gerer.
 Vous devriez la considerer comme une Fonction Avancee.


C'est pas moi qui le dit, c'est la doc officielle... donc la premiere chose a se demander c'est ''ai je vraiment besoin d'etiqueter des paquets?'' Certains des chapitres suivants devraient vous aider a repondre a cette question, mais cette reponse dependra en tres grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'etiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire meme plusieures fois. Certaines informations sont repetees dans differents paragraphes, j'espere que ce n'est pas redondant mais que ca facilite la comprehension du sujet et evitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi a faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez egalement trouver des informations sur l'etiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitue d'une ou plusieurs entrees separees par des lignes blanches. Un exemple d'entrees de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entree est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou negatif)


Pour completer au mieux ces entrees nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorite assignee au depot http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront a completer la ligne ''Pin'' des entrees du fichier preferences et sont donc expliquees au paragraphe qui la concerne un peu plus bas.


Detaillons ligne par ligne les entrees du fichier preferences:


==== Ligne Package ====
C'est la qu'est indique le nom du paquet etiquete ou * si l'etiquetage concerne tout un groupe de paquets defini par la ligne ''Pin''.


==== Ligne Pin ====
Cette ligne servira a indiquer quels paquets seront concernes par l'etiquetage de cette entree. Pour cela on se sert d'une (ou plusieures) variable(s) indiquee(s) a la ligne ''release'' du ''apt-cache policy'', dans l'exemple precedent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des depots se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquee dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen tres accessible de synthetiser cela et de voir quelles sont les priorites qu'APT attribut a un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des depots dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entree ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des depots dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent etre ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieures de ces variables dans la ligne ''Pin''. Il n'est pas forcement utile de les inclure toutes, une ou deux bien utilisees peuvent tout a fait etre suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquee la priorite du paquet ou groupe de paquets. Elle doit etre un entier positif ou negatif. Ces priorites sont interpretes a peu pres comme suit:

  P &gt; 1000
  Cette priorite entraine l'installation du paquet meme s'il s'agit d'un retour en arriere.
  
  990 &lt; P &lt;=1000
  La version sera installee, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant a la distribution par defaut ou si la version installee est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installee, sauf s'il existe une version appartenant a une autre distribution ou si la version installee est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installee si aucune version du paquet n'est installee.
  
  P &lt; 0
  Cette priorite empeche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a etablir des priorites qui ne mettront pas votre systeme en danger. Dans ce qui suit, ''branche principale'' designe la branche de Debian que vous avez choisie de suivre en priorite (stable, testing ou sid), les autres depots presents dans le sources.list ne servant qu'a y piocher des paquets si besoin est.


- '''Garder des priorites identiques pour les depots Debian officiels d'une meme branche'''. C'est le comportement par defaut (quand l'on a que les depots de la branche principale dans le sources.list sans preferences). Tout manquement a cette regle casse le comportement par defaut et peut generer des resultats tres dommageables car non prevus par les devellopeurs Debian.


- '''Attribuer une priorite comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; a cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par defaut et a donc une priorite de 990. On comprend donc aisement qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les methodes pour piocher dans les differents depots sont expliquees un peu plus bas, dans le paragraphe ''Comment piocher dans les differents depots du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorite comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; a la branche principale'''. Ceci permet d'installer les paquets a la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installes a partir des ces depots.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent a jours automatiquement si une nouvelle version est placee dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorite a ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences generique du fait des dependances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de depots, etc) sans avoir a decaler toutes les autres entrees dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la differences entre les differentes priorites des depots a la lecture du ''apt-cache policy''.


==== Comment piocher dans les differents depots du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte apres une modification, il vous faut mettre a jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Verifiez ensuite a l'aide de ''apt-cache policy'' que les priorites sont correctes.


Il y a deux manieres d'indiquer a APT d'aller piocher dans des depots differents que ceux de la branche principale (les commandes qui suivent sont valable a la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version superieure a celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour present dans sid parce qu'il est plus recent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dependances sont mieux gerees.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez downgrader la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguee, vous utiliserez cette commande:

   apt-get install ardour/testing


Le probleme c'est que APT voudra remettre a niveau le paquet downgrade lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installee. Pour cela il y a deux possibilites:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour debloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets a mettre a jour, les paquets que vous avez bloque par cette methode y apparaitront precedes d'un '''h'''.


- Soit '''etiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloque ou avec la variable release''' a=now'''.


Par exemple si je veux downgrader ardour de la version 1:2.8.11-1 presente dans sid a la version 1:2.8.9-1 presente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entree dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numero de version a inserer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner a la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entree, le paquet ardour qui est installe maintenant sera forcement installe meme s'il s'agit d'un retour en arriere, donc ne sera pas mis a jour. Pour debloquer le paquet il suffira d'enlever son entree du fichier preferences.


'''N'hesitez pas a simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ca permet de verifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez reellement la commande en enlevant l'option ''-s''. cette option fonctionne egalement avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises a jours (par exemple ''aptitude safe-upgrade -s''), etc... C'est une securite non negligeable.

== Stable ==

L'interet de la branche stable est sa stabilite (etonnant non?). Donc la melanger avec les autres branches est souvent une tres mauvaise idee. '''Si vous avez besoin de paquets plus recents preferez les depots backports, la compilation, ou tout simplement utilisez une autre branche principale a la place!'''

Etant donne qu''''il est fortement deconseille de melanger stable et les branches superieures''', il est preferable de n'avoir que ses entrees dans le sources.list. Le preferences est donc inutile, sauf eventuellement si vous souhaitez utiliser les depots backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adequat dans ce cas peut-etre le suivant (changez les adresses des depots stable par d'autres que vous prefereriez si vous le souhaitez):

  # stable
  deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
  
  # stable security
  deb http://security.debian.org/ stable/updates main contrib non-free
  #deb-src http://security.debian.org/ stable/updates main contrib non-free
  
  # stable volatile
  deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  
  # stable multimedia
  deb http://www.debian-multimedia.org stable main non-free
  #deb-src http://www.debian-multimedia.org stable main non-free
  
  # backports
  deb http://www.backports.org/debian lenny-backports main contrib non-free


'''Les preferences des backports ont par defaut une valeur de 1'''. Si vous souhaitez choisir par vous meme quand installer une eventuelle nouvelle version disponible dans ces depots, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installe depuis les backports soit mis a jour automatiquement en cas de nouvelle version disponible dans ces depots, alors vous n'aurez besoin que de cette seule entree dans le fichier preferences:

  Package: *
  Pin: release a=lenny-backports
  Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

  apt-get install -t lenny-backports paquet
  aptitude install -t lenny-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

  # stable
  deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
  
  # stable security
  deb http://security.debian.org/ stable/updates main contrib non-free
  #deb-src http://security.debian.org/ stable/updates main contrib non-free
  
  # stable volatile
  deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  
  # stable multimedia
  deb http://www.debian-multimedia.org stable main non-free
  #deb-src http://www.debian-multimedia.org stable main non-free
  
  
  # testing
  deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
  
  # testing security
  deb http://security.debian.org/ testing/updates main contrib non-free
  #deb-src http://security.debian.org/ testing/updates main contrib non-free
  
  # testing multimedia
  deb http://www.debian-multimedia.org testing main non-free
  #deb-src http://www.debian-multimedia.org testing main non-free
  
  
  # sid
  deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
  
  # sid multimedia
  deb http://www.debian-multimedia.org sid main non-free
  #deb-src http://www.debian-multimedia.org sid main non-free


Accompagne de ce fichier preferences:

  Package: *
  Pin: release o=Debian,a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Debian,a=testing
  Pin-Priority: -10
  
  Package: *
  Pin: release o=Debian,a=unstable
  Pin-Priority: -10


Si vous vous contentez de faire les mises a jour et d'installer normalement des paquets, votre systeme sera exactement dans le meme etat que s'il n'avait que le depots stables sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non present dans les depots stables mais present dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les depots testing dependent de l'arrivee de paquets en provenance de sid. Il se peut donc que ces depots ne soient pas complets ou entrainent des problemes de dependances. '''Installer une testing seule c'est un peu installer une version a trous de Debian puisqu'elle est tres souvent incomplete, du coup l'etiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' a la place de ''upgrade'' (ou les equivalents pour ''aptitude''), car de toutes façons durant le cycle de developpement le ''dist-upgrade'' sera souvent indispensable. N'hesitez pas a user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui la:

  # lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  
  # lenny security
  deb http://security.debian.org/ lenny/updates main contrib non-free
  #deb-src http://security.debian.org/ lenny/updates main contrib non-free
  
  # lenny volatile
  deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  
  # lenny multimedia
  deb http://www.debian-multimedia.org lenny main non-free
  #deb-src http://www.debian-multimedia.org lenny main non-free
  
  
  # squeeze
  deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  
  # squeeze security
  deb http://security.debian.org/ squeeze/updates main contrib non-free
  #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
  
  # squeeze multimedia
  deb http://www.debian-multimedia.org squeeze main non-free
  #deb-src http://www.debian-multimedia.org squeeze main non-free
  
  
  # sid
  deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
  
  # sid multimedia
  deb http://www.debian-multimedia.org sid main non-free
  #deb-src http://www.debian-multimedia.org sid main non-free
  
  
  # experimental
  deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
  
  # experimental multimedia
  deb http://www.debian-multimedia.org experimental main
  #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=testing
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Debian,a=testing
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Debian,a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release o=volatile.debian.org,a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=unstable
  Pin-Priority: 90
  
  Package: *
  Pin: release o=Debian,a=unstable
  Pin-Priority: 90
  
  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=experimental
  Pin-Priority: 1


Vous serez ainsi en testing par defaut, d'eventuels paquets manquants seront completes par les depots de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables, a plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problemes toutes references aux depots de la branche experimental du sources.list et du fichier preferences.'''




== Sid ==


Comme testing, sid n'est pas toujours complete d'ou l'utilite d'avoir les autres branches facilement accessibles. Cela dit il faut quand meme surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

  # lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  
  # lenny security
  deb http://security.debian.org/ lenny/updates main contrib non-free
  #deb-src http://security.debian.org/ lenny/updates main contrib non-free
  
  # lenny volatile
  deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  
  # lenny multimedia
  deb http://www.debian-multimedia.org lenny main non-free
  #deb-src http://www.debian-multimedia.org lenny main non-free
  
  
  # squeeze
  deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  
  # squeeze security
  deb http://security.debian.org/ squeeze/updates main contrib non-free
  #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
  
  # squeeze multimedia
  deb http://www.debian-multimedia.org squeeze main non-free
  #deb-src http://www.debian-multimedia.org squeeze main non-free
  
  
  # sid
  deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
  
  # sid multimedia
  deb http://www.debian-multimedia.org sid main non-free
  #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par defaut tous les depots ont la meme priorite''', et a priorites egales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installe. Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets.

Si vous souhaitez utiliser les depots experimental, utilisez un sources.list complet comme celui presente dans le paragraphe Testing. '''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables''', a plus fortes raison ceux de multimedia, mais si vous tenez a ces depots alors utilisez ce fichier preferences pour eviter les problemes:


  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
  Pin-Priority: 1</text>
      <sha1>7uc7a4vrdu3gfipai4grpj4vngdcau1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1762</id>
      <parentid>1761</parentid>
      <timestamp>2010-07-28T16:43:52Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>mise en page</comment>
      <text xml:space="preserve" bytes="27161">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'etiquetage (ou pinning en VO) consiste a assigner a un paquet (ou a un groupe de paquets) une priorite d'installation differente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermediaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque depot present dans le sources.list se voit attribuer une priorite d'installation. Par defaut tous les depots ont la meme priorite (500 sauf exception, experimental et backports par exemple qui ont une priorite par defaut de 1), et a priorites egales c'est le numero de version des paquets qui joue, le plus recent est prioritaire.

Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus recents et qui ne viennent pas d'experimental qui ont la priorite, ce qui correspond a sid.

Le fichier de preferences sert a modifier les priorites qui sont affectees aux paquets par APT, et ce par l'intermediaire de regles s'appliquant a un, plusieurs ou un ensemble de paquets (et non a des depots, c'est un abus de language qui peut nuire a la comprehension du fonctionnement des regles). Cette methode peut etre utilisee pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer differentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de depots non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'etiquetage peut tres vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT decrite dans apt_preferences (5) soit puissante, ses effets peuvent etre difficiles a comprendre et a gerer.
 Vous devriez la considerer comme une Fonction Avancee.


C'est pas moi qui le dit, c'est la doc officielle... donc la premiere chose a se demander c'est ''ai je vraiment besoin d'etiqueter des paquets?'' Certains des chapitres suivants devraient vous aider a repondre a cette question, mais cette reponse dependra en tres grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'etiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire meme plusieures fois. Certaines informations sont repetees dans differents paragraphes, j'espere que ce n'est pas redondant mais que ca facilite la comprehension du sujet et evitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi a faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez egalement trouver des informations sur l'etiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitue d'une ou plusieurs entrees separees par des lignes blanches. Un exemple d'entrees de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entree est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou negatif)


Pour completer au mieux ces entrees nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorite assignee au depot http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront a completer la ligne ''Pin'' des entrees du fichier preferences et sont donc expliquees au paragraphe qui la concerne un peu plus bas.


Detaillons ligne par ligne les entrees du fichier preferences:


==== Ligne Package ====
C'est la qu'est indique le nom du paquet etiquete ou * si l'etiquetage concerne tout un groupe de paquets defini par la ligne ''Pin''.


==== Ligne Pin ====
Cette ligne servira a indiquer quels paquets seront concernes par l'etiquetage de cette entree. Pour cela on se sert d'une (ou plusieures) variable(s) indiquee(s) a la ligne ''release'' du ''apt-cache policy'', dans l'exemple precedent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des depots se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquee dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen tres accessible de synthetiser cela et de voir quelles sont les priorites qu'APT attribut a un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des depots dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entree ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des depots dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent etre ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieures de ces variables dans la ligne ''Pin''. Il n'est pas forcement utile de les inclure toutes, une ou deux bien utilisees peuvent tout a fait etre suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquee la priorite du paquet ou groupe de paquets. Elle doit etre un entier positif ou negatif. Ces priorites sont interpretes a peu pres comme suit:

  P &gt; 1000
  Cette priorite entraine l'installation du paquet meme s'il s'agit d'un retour en arriere.
  
  990 &lt; P &lt;=1000
  La version sera installee, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant a la distribution par defaut ou si la version installee est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installee, sauf s'il existe une version appartenant a une autre distribution ou si la version installee est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installee si aucune version du paquet n'est installee.
  
  P &lt; 0
  Cette priorite empeche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a etablir des priorites qui ne mettront pas votre systeme en danger. Dans ce qui suit, ''branche principale'' designe la branche de Debian que vous avez choisie de suivre en priorite (stable, testing ou sid), les autres depots presents dans le sources.list ne servant qu'a y piocher des paquets si besoin est.


- '''Garder des priorites identiques pour les depots Debian officiels d'une meme branche'''. C'est le comportement par defaut (quand l'on a que les depots de la branche principale dans le sources.list sans preferences). Tout manquement a cette regle casse le comportement par defaut et peut generer des resultats tres dommageables car non prevus par les devellopeurs Debian.


- '''Attribuer une priorite comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; a cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par defaut et a donc une priorite de 990. On comprend donc aisement qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les methodes pour piocher dans les differents depots sont expliquees un peu plus bas, dans le paragraphe ''Comment piocher dans les differents depots du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorite comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; a la branche principale'''. Ceci permet d'installer les paquets a la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installes a partir des ces depots.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent a jours automatiquement si une nouvelle version est placee dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorite a ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences generique du fait des dependances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de depots, etc) sans avoir a decaler toutes les autres entrees dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la differences entre les differentes priorites des depots a la lecture du ''apt-cache policy''.


==== Comment piocher dans les differents depots du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte apres une modification, il vous faut mettre a jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Verifiez ensuite a l'aide de ''apt-cache policy'' que les priorites sont correctes.


Il y a deux manieres d'indiquer a APT d'aller piocher dans des depots differents que ceux de la branche principale (les commandes qui suivent sont valable a la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version superieure a celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour present dans sid parce qu'il est plus recent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dependances sont mieux gerees.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez downgrader la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguee, vous utiliserez cette commande:

   apt-get install ardour/testing


Le probleme c'est que APT voudra remettre a niveau le paquet downgrade lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installee. Pour cela il y a deux possibilites:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour debloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets a mettre a jour, les paquets que vous avez bloque par cette methode y apparaitront precedes d'un '''h'''.


- Soit '''etiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloque ou avec la variable release''' a=now'''.


Par exemple si je veux downgrader ardour de la ''version 1:2.8.11-1'' presente dans sid a la ''version 1:2.8.9-1'' presente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entree dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numero de version a inserer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner a la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entree, ''le paquet ardour qui est installe maintenant sera forcement installe meme s'il s'agit d'un retour en arriere'', donc ne sera pas mis a jour. Pour debloquer le paquet il suffira d'enlever son entree du fichier preferences.


'''N'hesitez pas a simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ca permet de verifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez reellement la commande en enlevant l'option ''-s''. cette option fonctionne egalement avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises a jours (par exemple ''aptitude safe-upgrade -s''), etc... C'est une securite non negligeable.

== Stable ==

L'interet de la branche stable est sa stabilite (etonnant non?). Donc la melanger avec les autres branches est souvent une tres mauvaise idee. '''Si vous avez besoin de paquets plus recents preferez les depots backports, la compilation, ou tout simplement utilisez une autre branche principale a la place!'''

Etant donne qu''''il est fortement deconseille de melanger stable et les branches superieures''', il est preferable de n'avoir que ses entrees dans le sources.list. Le preferences est donc inutile, sauf eventuellement si vous souhaitez utiliser les depots backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adequat dans ce cas peut-etre le suivant (changez les adresses des depots stable par d'autres que vous prefereriez si vous le souhaitez):

  # stable
  deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
  
  # stable security
  deb http://security.debian.org/ stable/updates main contrib non-free
  #deb-src http://security.debian.org/ stable/updates main contrib non-free
  
  # stable volatile
  deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  
  # stable multimedia
  deb http://www.debian-multimedia.org stable main non-free
  #deb-src http://www.debian-multimedia.org stable main non-free
  
  # backports
  deb http://www.backports.org/debian lenny-backports main contrib non-free


'''Les preferences des backports ont par defaut une valeur de 1'''. Si vous souhaitez choisir par vous meme quand installer une eventuelle nouvelle version disponible dans ces depots, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installe depuis les backports soit mis a jour automatiquement en cas de nouvelle version disponible dans ces depots, alors vous n'aurez besoin que de cette seule entree dans le fichier preferences:

  Package: *
  Pin: release a=lenny-backports
  Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

  apt-get install -t lenny-backports paquet
  aptitude install -t lenny-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

  # stable
  deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
  
  # stable security
  deb http://security.debian.org/ stable/updates main contrib non-free
  #deb-src http://security.debian.org/ stable/updates main contrib non-free
  
  # stable volatile
  deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  
  # stable multimedia
  deb http://www.debian-multimedia.org stable main non-free
  #deb-src http://www.debian-multimedia.org stable main non-free
  
  
  # testing
  deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
  
  # testing security
  deb http://security.debian.org/ testing/updates main contrib non-free
  #deb-src http://security.debian.org/ testing/updates main contrib non-free
  
  # testing multimedia
  deb http://www.debian-multimedia.org testing main non-free
  #deb-src http://www.debian-multimedia.org testing main non-free
  
  
  # sid
  deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
  
  # sid multimedia
  deb http://www.debian-multimedia.org sid main non-free
  #deb-src http://www.debian-multimedia.org sid main non-free


Accompagne de ce fichier preferences:

  Package: *
  Pin: release o=Debian,a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Debian,a=testing
  Pin-Priority: -10
  
  Package: *
  Pin: release o=Debian,a=unstable
  Pin-Priority: -10


Si vous vous contentez de faire les mises a jour et d'installer normalement des paquets, votre systeme sera exactement dans le meme etat que s'il n'avait que le depots stables sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non present dans les depots stables mais present dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les depots testing dependent de l'arrivee de paquets en provenance de sid. Il se peut donc que ces depots ne soient pas complets ou entrainent des problemes de dependances. '''Installer une testing seule c'est un peu installer une version a trous de Debian puisqu'elle est tres souvent incomplete, du coup l'etiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' a la place de ''upgrade'' (ou les equivalents pour ''aptitude''), car de toutes façons durant le cycle de developpement le ''dist-upgrade'' sera souvent indispensable. N'hesitez pas a user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui la:

  # lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  
  # lenny security
  deb http://security.debian.org/ lenny/updates main contrib non-free
  #deb-src http://security.debian.org/ lenny/updates main contrib non-free
  
  # lenny volatile
  deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  
  # lenny multimedia
  deb http://www.debian-multimedia.org lenny main non-free
  #deb-src http://www.debian-multimedia.org lenny main non-free
  
  
  # squeeze
  deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  
  # squeeze security
  deb http://security.debian.org/ squeeze/updates main contrib non-free
  #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
  
  # squeeze multimedia
  deb http://www.debian-multimedia.org squeeze main non-free
  #deb-src http://www.debian-multimedia.org squeeze main non-free
  
  
  # sid
  deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
  
  # sid multimedia
  deb http://www.debian-multimedia.org sid main non-free
  #deb-src http://www.debian-multimedia.org sid main non-free
  
  
  # experimental
  deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
  
  # experimental multimedia
  deb http://www.debian-multimedia.org experimental main
  #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=testing
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Debian,a=testing
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Debian,a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release o=volatile.debian.org,a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=unstable
  Pin-Priority: 90
  
  Package: *
  Pin: release o=Debian,a=unstable
  Pin-Priority: 90
  
  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=experimental
  Pin-Priority: 1


Vous serez ainsi en testing par defaut, d'eventuels paquets manquants seront completes par les depots de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables, a plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problemes toutes references aux depots de la branche experimental du sources.list et du fichier preferences.'''




== Sid ==


Comme testing, sid n'est pas toujours complete d'ou l'utilite d'avoir les autres branches facilement accessibles. Cela dit il faut quand meme surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

  # lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  
  # lenny security
  deb http://security.debian.org/ lenny/updates main contrib non-free
  #deb-src http://security.debian.org/ lenny/updates main contrib non-free
  
  # lenny volatile
  deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  
  # lenny multimedia
  deb http://www.debian-multimedia.org lenny main non-free
  #deb-src http://www.debian-multimedia.org lenny main non-free
  
  
  # squeeze
  deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  
  # squeeze security
  deb http://security.debian.org/ squeeze/updates main contrib non-free
  #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
  
  # squeeze multimedia
  deb http://www.debian-multimedia.org squeeze main non-free
  #deb-src http://www.debian-multimedia.org squeeze main non-free
  
  
  # sid
  deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
  
  # sid multimedia
  deb http://www.debian-multimedia.org sid main non-free
  #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par defaut tous les depots ont la meme priorite''', et a priorites egales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installe. Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets.

Si vous souhaitez utiliser les depots experimental, utilisez un sources.list complet comme celui presente dans le paragraphe Testing. '''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables''', a plus fortes raison ceux de multimedia, mais si vous tenez a ces depots alors utilisez ce fichier preferences pour eviter les problemes:


  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
  Pin-Priority: 1</text>
      <sha1>mtlwwvl5a1m0mpeje77vyct24dhc75n</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1763</id>
      <parentid>1762</parentid>
      <timestamp>2010-07-28T16:56:42Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>correction d'une erreur dans un fichier preferences</comment>
      <text xml:space="preserve" bytes="27135">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'etiquetage (ou pinning en VO) consiste a assigner a un paquet (ou a un groupe de paquets) une priorite d'installation differente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermediaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque depot present dans le sources.list se voit attribuer une priorite d'installation. Par defaut tous les depots ont la meme priorite (500 sauf exception, experimental et backports par exemple qui ont une priorite par defaut de 1), et a priorites egales c'est le numero de version des paquets qui joue, le plus recent est prioritaire.

Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus recents et qui ne viennent pas d'experimental qui ont la priorite, ce qui correspond a sid.

Le fichier de preferences sert a modifier les priorites qui sont affectees aux paquets par APT, et ce par l'intermediaire de regles s'appliquant a un, plusieurs ou un ensemble de paquets (et non a des depots, c'est un abus de language qui peut nuire a la comprehension du fonctionnement des regles). Cette methode peut etre utilisee pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer differentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de depots non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'etiquetage peut tres vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT decrite dans apt_preferences (5) soit puissante, ses effets peuvent etre difficiles a comprendre et a gerer.
 Vous devriez la considerer comme une Fonction Avancee.


C'est pas moi qui le dit, c'est la doc officielle... donc la premiere chose a se demander c'est ''ai je vraiment besoin d'etiqueter des paquets?'' Certains des chapitres suivants devraient vous aider a repondre a cette question, mais cette reponse dependra en tres grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'etiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire meme plusieures fois. Certaines informations sont repetees dans differents paragraphes, j'espere que ce n'est pas redondant mais que ca facilite la comprehension du sujet et evitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi a faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez egalement trouver des informations sur l'etiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitue d'une ou plusieurs entrees separees par des lignes blanches. Un exemple d'entrees de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entree est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou negatif)


Pour completer au mieux ces entrees nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorite assignee au depot http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront a completer la ligne ''Pin'' des entrees du fichier preferences et sont donc expliquees au paragraphe qui la concerne un peu plus bas.


Detaillons ligne par ligne les entrees du fichier preferences:


==== Ligne Package ====
C'est la qu'est indique le nom du paquet etiquete ou * si l'etiquetage concerne tout un groupe de paquets defini par la ligne ''Pin''.


==== Ligne Pin ====
Cette ligne servira a indiquer quels paquets seront concernes par l'etiquetage de cette entree. Pour cela on se sert d'une (ou plusieures) variable(s) indiquee(s) a la ligne ''release'' du ''apt-cache policy'', dans l'exemple precedent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des depots se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquee dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen tres accessible de synthetiser cela et de voir quelles sont les priorites qu'APT attribut a un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des depots dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entree ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des depots dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent etre ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieures de ces variables dans la ligne ''Pin''. Il n'est pas forcement utile de les inclure toutes, une ou deux bien utilisees peuvent tout a fait etre suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquee la priorite du paquet ou groupe de paquets. Elle doit etre un entier positif ou negatif. Ces priorites sont interpretes a peu pres comme suit:

  P &gt; 1000
  Cette priorite entraine l'installation du paquet meme s'il s'agit d'un retour en arriere.
  
  990 &lt; P &lt;=1000
  La version sera installee, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant a la distribution par defaut ou si la version installee est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installee, sauf s'il existe une version appartenant a une autre distribution ou si la version installee est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installee si aucune version du paquet n'est installee.
  
  P &lt; 0
  Cette priorite empeche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a etablir des priorites qui ne mettront pas votre systeme en danger. Dans ce qui suit, ''branche principale'' designe la branche de Debian que vous avez choisie de suivre en priorite (stable, testing ou sid), les autres depots presents dans le sources.list ne servant qu'a y piocher des paquets si besoin est.


- '''Garder des priorites identiques pour les depots Debian officiels d'une meme branche'''. C'est le comportement par defaut (quand l'on a que les depots de la branche principale dans le sources.list sans preferences). Tout manquement a cette regle casse le comportement par defaut et peut generer des resultats tres dommageables car non prevus par les devellopeurs Debian.


- '''Attribuer une priorite comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; a cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par defaut et a donc une priorite de 990. On comprend donc aisement qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les methodes pour piocher dans les differents depots sont expliquees un peu plus bas, dans le paragraphe ''Comment piocher dans les differents depots du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorite comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; a la branche principale'''. Ceci permet d'installer les paquets a la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installes a partir des ces depots.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent a jours automatiquement si une nouvelle version est placee dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorite a ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences generique du fait des dependances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de depots, etc) sans avoir a decaler toutes les autres entrees dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la differences entre les differentes priorites des depots a la lecture du ''apt-cache policy''.


==== Comment piocher dans les differents depots du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte apres une modification, il vous faut mettre a jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Verifiez ensuite a l'aide de ''apt-cache policy'' que les priorites sont correctes.


Il y a deux manieres d'indiquer a APT d'aller piocher dans des depots differents que ceux de la branche principale (les commandes qui suivent sont valable a la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version superieure a celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour present dans sid parce qu'il est plus recent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dependances sont mieux gerees.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez downgrader la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguee, vous utiliserez cette commande:

   apt-get install ardour/testing


Le probleme c'est que APT voudra remettre a niveau le paquet downgrade lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installee. Pour cela il y a deux possibilites:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour debloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets a mettre a jour, les paquets que vous avez bloque par cette methode y apparaitront precedes d'un '''h'''.


- Soit '''etiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloque ou avec la variable release''' a=now'''.


Par exemple si je veux downgrader ardour de la ''version 1:2.8.11-1'' presente dans sid a la ''version 1:2.8.9-1'' presente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entree dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numero de version a inserer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner a la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entree, ''le paquet ardour qui est installe maintenant sera forcement installe meme s'il s'agit d'un retour en arriere'', donc ne sera pas mis a jour. Pour debloquer le paquet il suffira d'enlever son entree du fichier preferences.


'''N'hesitez pas a simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ca permet de verifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez reellement la commande en enlevant l'option ''-s''. cette option fonctionne egalement avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises a jours (par exemple ''aptitude safe-upgrade -s''), etc... C'est une securite non negligeable.

== Stable ==

L'interet de la branche stable est sa stabilite (etonnant non?). Donc la melanger avec les autres branches est souvent une tres mauvaise idee. '''Si vous avez besoin de paquets plus recents preferez les depots backports, la compilation, ou tout simplement utilisez une autre branche principale a la place!'''

Etant donne qu''''il est fortement deconseille de melanger stable et les branches superieures''', il est preferable de n'avoir que ses entrees dans le sources.list. Le preferences est donc inutile, sauf eventuellement si vous souhaitez utiliser les depots backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adequat dans ce cas peut-etre le suivant (changez les adresses des depots stable par d'autres que vous prefereriez si vous le souhaitez):

  # stable
  deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
  
  # stable security
  deb http://security.debian.org/ stable/updates main contrib non-free
  #deb-src http://security.debian.org/ stable/updates main contrib non-free
  
  # stable volatile
  deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  
  # stable multimedia
  deb http://www.debian-multimedia.org stable main non-free
  #deb-src http://www.debian-multimedia.org stable main non-free
  
  # backports
  deb http://www.backports.org/debian lenny-backports main contrib non-free


'''Les preferences des backports ont par defaut une valeur de 1'''. Si vous souhaitez choisir par vous meme quand installer une eventuelle nouvelle version disponible dans ces depots, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installe depuis les backports soit mis a jour automatiquement en cas de nouvelle version disponible dans ces depots, alors vous n'aurez besoin que de cette seule entree dans le fichier preferences:

  Package: *
  Pin: release a=lenny-backports
  Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

  apt-get install -t lenny-backports paquet
  aptitude install -t lenny-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

  # stable
  deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
  
  # stable security
  deb http://security.debian.org/ stable/updates main contrib non-free
  #deb-src http://security.debian.org/ stable/updates main contrib non-free
  
  # stable volatile
  deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  
  # stable multimedia
  deb http://www.debian-multimedia.org stable main non-free
  #deb-src http://www.debian-multimedia.org stable main non-free
  
  
  # testing
  deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
  
  # testing security
  deb http://security.debian.org/ testing/updates main contrib non-free
  #deb-src http://security.debian.org/ testing/updates main contrib non-free
  
  # testing multimedia
  deb http://www.debian-multimedia.org testing main non-free
  #deb-src http://www.debian-multimedia.org testing main non-free
  
  
  # sid
  deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
  
  # sid multimedia
  deb http://www.debian-multimedia.org sid main non-free
  #deb-src http://www.debian-multimedia.org sid main non-free


Accompagne de ce fichier preferences:

  Package: * 
  Pin: release a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release a=testing
  Pin-Priority: -10
  
  Package: *
  Pin: release a=unstable
  Pin-Priority: -10


Si vous vous contentez de faire les mises a jour et d'installer normalement des paquets, votre systeme sera exactement dans le meme etat que s'il n'avait que le depots stables sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non present dans les depots stables mais present dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les depots testing dependent de l'arrivee de paquets en provenance de sid. Il se peut donc que ces depots ne soient pas complets ou entrainent des problemes de dependances. '''Installer une testing seule c'est un peu installer une version a trous de Debian puisqu'elle est tres souvent incomplete, du coup l'etiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' a la place de ''upgrade'' (ou les equivalents pour ''aptitude''), car de toutes façons durant le cycle de developpement le ''dist-upgrade'' sera souvent indispensable. N'hesitez pas a user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui la:

  # lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  
  # lenny security
  deb http://security.debian.org/ lenny/updates main contrib non-free
  #deb-src http://security.debian.org/ lenny/updates main contrib non-free
  
  # lenny volatile
  deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  
  # lenny multimedia
  deb http://www.debian-multimedia.org lenny main non-free
  #deb-src http://www.debian-multimedia.org lenny main non-free
  
  
  # squeeze
  deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  
  # squeeze security
  deb http://security.debian.org/ squeeze/updates main contrib non-free
  #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
  
  # squeeze multimedia
  deb http://www.debian-multimedia.org squeeze main non-free
  #deb-src http://www.debian-multimedia.org squeeze main non-free
  
  
  # sid
  deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
  
  # sid multimedia
  deb http://www.debian-multimedia.org sid main non-free
  #deb-src http://www.debian-multimedia.org sid main non-free
  
  
  # experimental
  deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
  
  # experimental multimedia
  deb http://www.debian-multimedia.org experimental main
  #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=testing
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Debian,a=testing
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Debian,a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release o=volatile.debian.org,a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=unstable
  Pin-Priority: 90
  
  Package: *
  Pin: release o=Debian,a=unstable
  Pin-Priority: 90
  
  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=experimental
  Pin-Priority: 1


Vous serez ainsi en testing par defaut, d'eventuels paquets manquants seront completes par les depots de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables, a plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problemes toutes references aux depots de la branche experimental du sources.list et du fichier preferences.'''




== Sid ==


Comme testing, sid n'est pas toujours complete d'ou l'utilite d'avoir les autres branches facilement accessibles. Cela dit il faut quand meme surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

  # lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  
  # lenny security
  deb http://security.debian.org/ lenny/updates main contrib non-free
  #deb-src http://security.debian.org/ lenny/updates main contrib non-free
  
  # lenny volatile
  deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  
  # lenny multimedia
  deb http://www.debian-multimedia.org lenny main non-free
  #deb-src http://www.debian-multimedia.org lenny main non-free
  
  
  # squeeze
  deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  
  # squeeze security
  deb http://security.debian.org/ squeeze/updates main contrib non-free
  #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
  
  # squeeze multimedia
  deb http://www.debian-multimedia.org squeeze main non-free
  #deb-src http://www.debian-multimedia.org squeeze main non-free
  
  
  # sid
  deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
  
  # sid multimedia
  deb http://www.debian-multimedia.org sid main non-free
  #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par defaut tous les depots ont la meme priorite''', et a priorites egales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installe. Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets.

Si vous souhaitez utiliser les depots experimental, utilisez un sources.list complet comme celui presente dans le paragraphe Testing. '''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables''', a plus fortes raison ceux de multimedia, mais si vous tenez a ces depots alors utilisez ce fichier preferences pour eviter les problemes:


  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
  Pin-Priority: 1</text>
      <sha1>9rnemv2ioso2o8lbpxdn34ehkcefgu4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1764</id>
      <parentid>1763</parentid>
      <timestamp>2010-07-28T17:18:48Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>simplification du preferences de Testing pour le meme resultat</comment>
      <text xml:space="preserve" bytes="26681">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'etiquetage (ou pinning en VO) consiste a assigner a un paquet (ou a un groupe de paquets) une priorite d'installation differente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermediaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque depot present dans le sources.list se voit attribuer une priorite d'installation. Par defaut tous les depots ont la meme priorite (500 sauf exception, experimental et backports par exemple qui ont une priorite par defaut de 1), et a priorites egales c'est le numero de version des paquets qui joue, le plus recent est prioritaire.

Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus recents et qui ne viennent pas d'experimental qui ont la priorite, ce qui correspond a sid.

Le fichier de preferences sert a modifier les priorites qui sont affectees aux paquets par APT, et ce par l'intermediaire de regles s'appliquant a un, plusieurs ou un ensemble de paquets (et non a des depots, c'est un abus de language qui peut nuire a la comprehension du fonctionnement des regles). Cette methode peut etre utilisee pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer differentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de depots non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'etiquetage peut tres vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT decrite dans apt_preferences (5) soit puissante, ses effets peuvent etre difficiles a comprendre et a gerer.
 Vous devriez la considerer comme une Fonction Avancee.


C'est pas moi qui le dit, c'est la doc officielle... donc la premiere chose a se demander c'est ''ai je vraiment besoin d'etiqueter des paquets?'' Certains des chapitres suivants devraient vous aider a repondre a cette question, mais cette reponse dependra en tres grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'etiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire meme plusieures fois. Certaines informations sont repetees dans differents paragraphes, j'espere que ce n'est pas redondant mais que ca facilite la comprehension du sujet et evitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi a faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez egalement trouver des informations sur l'etiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitue d'une ou plusieurs entrees separees par des lignes blanches. Un exemple d'entrees de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entree est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou negatif)


Pour completer au mieux ces entrees nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorite assignee au depot http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront a completer la ligne ''Pin'' des entrees du fichier preferences et sont donc expliquees au paragraphe qui la concerne un peu plus bas.


Detaillons ligne par ligne les entrees du fichier preferences:


==== Ligne Package ====
C'est la qu'est indique le nom du paquet etiquete ou * si l'etiquetage concerne tout un groupe de paquets defini par la ligne ''Pin''.


==== Ligne Pin ====
Cette ligne servira a indiquer quels paquets seront concernes par l'etiquetage de cette entree. Pour cela on se sert d'une (ou plusieures) variable(s) indiquee(s) a la ligne ''release'' du ''apt-cache policy'', dans l'exemple precedent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des depots se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquee dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen tres accessible de synthetiser cela et de voir quelles sont les priorites qu'APT attribut a un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des depots dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entree ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des depots dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent etre ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieures de ces variables dans la ligne ''Pin''. Il n'est pas forcement utile de les inclure toutes, une ou deux bien utilisees peuvent tout a fait etre suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquee la priorite du paquet ou groupe de paquets. Elle doit etre un entier positif ou negatif. Ces priorites sont interpretes a peu pres comme suit:

  P &gt; 1000
  Cette priorite entraine l'installation du paquet meme s'il s'agit d'un retour en arriere.
  
  990 &lt; P &lt;=1000
  La version sera installee, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant a la distribution par defaut ou si la version installee est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installee, sauf s'il existe une version appartenant a une autre distribution ou si la version installee est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installee si aucune version du paquet n'est installee.
  
  P &lt; 0
  Cette priorite empeche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a etablir des priorites qui ne mettront pas votre systeme en danger. Dans ce qui suit, ''branche principale'' designe la branche de Debian que vous avez choisie de suivre en priorite (stable, testing ou sid), les autres depots presents dans le sources.list ne servant qu'a y piocher des paquets si besoin est.


- '''Garder des priorites identiques pour les depots Debian officiels d'une meme branche'''. C'est le comportement par defaut (quand l'on a que les depots de la branche principale dans le sources.list sans preferences). Tout manquement a cette regle casse le comportement par defaut et peut generer des resultats tres dommageables car non prevus par les devellopeurs Debian.


- '''Attribuer une priorite comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; a cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par defaut et a donc une priorite de 990. On comprend donc aisement qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les methodes pour piocher dans les differents depots sont expliquees un peu plus bas, dans le paragraphe ''Comment piocher dans les differents depots du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorite comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; a la branche principale'''. Ceci permet d'installer les paquets a la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installes a partir des ces depots.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent a jours automatiquement si une nouvelle version est placee dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorite a ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences generique du fait des dependances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de depots, etc) sans avoir a decaler toutes les autres entrees dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la differences entre les differentes priorites des depots a la lecture du ''apt-cache policy''.


==== Comment piocher dans les differents depots du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte apres une modification, il vous faut mettre a jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Verifiez ensuite a l'aide de ''apt-cache policy'' que les priorites sont correctes.


Il y a deux manieres d'indiquer a APT d'aller piocher dans des depots differents que ceux de la branche principale (les commandes qui suivent sont valable a la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version superieure a celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour present dans sid parce qu'il est plus recent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dependances sont mieux gerees.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez downgrader la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguee, vous utiliserez cette commande:

   apt-get install ardour/testing


Le probleme c'est que APT voudra remettre a niveau le paquet downgrade lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installee. Pour cela il y a deux possibilites:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour debloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets a mettre a jour, les paquets que vous avez bloque par cette methode y apparaitront precedes d'un '''h'''.


- Soit '''etiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloque ou avec la variable release''' a=now'''.


Par exemple si je veux downgrader ardour de la ''version 1:2.8.11-1'' presente dans sid a la ''version 1:2.8.9-1'' presente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entree dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numero de version a inserer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner a la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entree, ''le paquet ardour qui est installe maintenant sera forcement installe meme s'il s'agit d'un retour en arriere'', donc ne sera pas mis a jour. Pour debloquer le paquet il suffira d'enlever son entree du fichier preferences.


'''N'hesitez pas a simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ca permet de verifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez reellement la commande en enlevant l'option ''-s''. cette option fonctionne egalement avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises a jours (par exemple ''aptitude safe-upgrade -s''), etc... C'est une securite non negligeable.

== Stable ==

L'interet de la branche stable est sa stabilite (etonnant non?). Donc la melanger avec les autres branches est souvent une tres mauvaise idee. '''Si vous avez besoin de paquets plus recents preferez les depots backports, la compilation, ou tout simplement utilisez une autre branche principale a la place!'''

Etant donne qu''''il est fortement deconseille de melanger stable et les branches superieures''', il est preferable de n'avoir que ses entrees dans le sources.list. Le preferences est donc inutile, sauf eventuellement si vous souhaitez utiliser les depots backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adequat dans ce cas peut-etre le suivant (changez les adresses des depots stable par d'autres que vous prefereriez si vous le souhaitez):

  # stable
  deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
  
  # stable security
  deb http://security.debian.org/ stable/updates main contrib non-free
  #deb-src http://security.debian.org/ stable/updates main contrib non-free
  
  # stable volatile
  deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  
  # stable multimedia
  deb http://www.debian-multimedia.org stable main non-free
  #deb-src http://www.debian-multimedia.org stable main non-free
  
  # backports
  deb http://www.backports.org/debian lenny-backports main contrib non-free


'''Les preferences des backports ont par defaut une valeur de 1'''. Si vous souhaitez choisir par vous meme quand installer une eventuelle nouvelle version disponible dans ces depots, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installe depuis les backports soit mis a jour automatiquement en cas de nouvelle version disponible dans ces depots, alors vous n'aurez besoin que de cette seule entree dans le fichier preferences:

  Package: *
  Pin: release a=lenny-backports
  Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

  apt-get install -t lenny-backports paquet
  aptitude install -t lenny-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

  # stable
  deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
  
  # stable security
  deb http://security.debian.org/ stable/updates main contrib non-free
  #deb-src http://security.debian.org/ stable/updates main contrib non-free
  
  # stable volatile
  deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  
  # stable multimedia
  deb http://www.debian-multimedia.org stable main non-free
  #deb-src http://www.debian-multimedia.org stable main non-free
  
  
  # testing
  deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
  
  # testing security
  deb http://security.debian.org/ testing/updates main contrib non-free
  #deb-src http://security.debian.org/ testing/updates main contrib non-free
  
  # testing multimedia
  deb http://www.debian-multimedia.org testing main non-free
  #deb-src http://www.debian-multimedia.org testing main non-free
  
  
  # sid
  deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
  
  # sid multimedia
  deb http://www.debian-multimedia.org sid main non-free
  #deb-src http://www.debian-multimedia.org sid main non-free


Accompagne de ce fichier preferences:

  Package: * 
  Pin: release a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release a=testing
  Pin-Priority: -10
  
  Package: *
  Pin: release a=unstable
  Pin-Priority: -10


Si vous vous contentez de faire les mises a jour et d'installer normalement des paquets, votre systeme sera exactement dans le meme etat que s'il n'avait que le depots stables sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non present dans les depots stables mais present dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les depots testing dependent de l'arrivee de paquets en provenance de sid. Il se peut donc que ces depots ne soient pas complets ou entrainent des problemes de dependances. '''Installer une testing seule c'est un peu installer une version a trous de Debian puisqu'elle est tres souvent incomplete, du coup l'etiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' a la place de ''upgrade'' (ou les equivalents pour ''aptitude''), car de toutes façons durant le cycle de developpement le ''dist-upgrade'' sera souvent indispensable. N'hesitez pas a user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui la:

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par defaut, d'eventuels paquets manquants seront completes par les depots de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables, a plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problemes toutes references aux depots de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complete d'ou l'utilite d'avoir les autres branches facilement accessibles. Cela dit il faut quand meme surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

  # lenny
  deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
  
  # lenny security
  deb http://security.debian.org/ lenny/updates main contrib non-free
  #deb-src http://security.debian.org/ lenny/updates main contrib non-free
  
  # lenny volatile
  deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
  
  # lenny multimedia
  deb http://www.debian-multimedia.org lenny main non-free
  #deb-src http://www.debian-multimedia.org lenny main non-free
  
  
  # squeeze
  deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
  
  # squeeze security
  deb http://security.debian.org/ squeeze/updates main contrib non-free
  #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
  
  # squeeze multimedia
  deb http://www.debian-multimedia.org squeeze main non-free
  #deb-src http://www.debian-multimedia.org squeeze main non-free
  
  
  # sid
  deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
  
  # sid multimedia
  deb http://www.debian-multimedia.org sid main non-free
  #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par defaut tous les depots ont la meme priorite''', et a priorites egales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installe. Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets.

Si vous souhaitez utiliser les depots experimental, utilisez un sources.list complet comme celui presente dans le paragraphe Testing. '''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables''', a plus fortes raison ceux de multimedia, mais si vous tenez a ces depots alors utilisez ce fichier preferences pour eviter les problemes:


  Package: *
  Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
  Pin-Priority: 1</text>
      <sha1>kxgba2tly2xdvliowwn17ii75uaqyfo</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1765</id>
      <parentid>1764</parentid>
      <timestamp>2010-07-28T17:20:44Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>mise en page</comment>
      <text xml:space="preserve" bytes="26641">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'etiquetage (ou pinning en VO) consiste a assigner a un paquet (ou a un groupe de paquets) une priorite d'installation differente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermediaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque depot present dans le sources.list se voit attribuer une priorite d'installation. Par defaut tous les depots ont la meme priorite (500 sauf exception, experimental et backports par exemple qui ont une priorite par defaut de 1), et a priorites egales c'est le numero de version des paquets qui joue, le plus recent est prioritaire.

Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus recents et qui ne viennent pas d'experimental qui ont la priorite, ce qui correspond a sid.

Le fichier de preferences sert a modifier les priorites qui sont affectees aux paquets par APT, et ce par l'intermediaire de regles s'appliquant a un, plusieurs ou un ensemble de paquets (et non a des depots, c'est un abus de language qui peut nuire a la comprehension du fonctionnement des regles). Cette methode peut etre utilisee pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer differentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de depots non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'etiquetage peut tres vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT decrite dans apt_preferences (5) soit puissante, ses effets peuvent etre difficiles a comprendre et a gerer.
 Vous devriez la considerer comme une Fonction Avancee.


C'est pas moi qui le dit, c'est la doc officielle... donc la premiere chose a se demander c'est ''ai je vraiment besoin d'etiqueter des paquets?'' Certains des chapitres suivants devraient vous aider a repondre a cette question, mais cette reponse dependra en tres grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'etiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire meme plusieures fois. Certaines informations sont repetees dans differents paragraphes, j'espere que ce n'est pas redondant mais que ca facilite la comprehension du sujet et evitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi a faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez egalement trouver des informations sur l'etiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitue d'une ou plusieurs entrees separees par des lignes blanches. Un exemple d'entrees de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entree est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou negatif)


Pour completer au mieux ces entrees nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorite assignee au depot http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront a completer la ligne ''Pin'' des entrees du fichier preferences et sont donc expliquees au paragraphe qui la concerne un peu plus bas.


Detaillons ligne par ligne les entrees du fichier preferences:


==== Ligne Package ====
C'est la qu'est indique le nom du paquet etiquete ou * si l'etiquetage concerne tout un groupe de paquets defini par la ligne ''Pin''.


==== Ligne Pin ====
Cette ligne servira a indiquer quels paquets seront concernes par l'etiquetage de cette entree. Pour cela on se sert d'une (ou plusieures) variable(s) indiquee(s) a la ligne ''release'' du ''apt-cache policy'', dans l'exemple precedent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des depots se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquee dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen tres accessible de synthetiser cela et de voir quelles sont les priorites qu'APT attribut a un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des depots dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entree ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des depots dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent etre ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieures de ces variables dans la ligne ''Pin''. Il n'est pas forcement utile de les inclure toutes, une ou deux bien utilisees peuvent tout a fait etre suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquee la priorite du paquet ou groupe de paquets. Elle doit etre un entier positif ou negatif. Ces priorites sont interpretes a peu pres comme suit:

  P &gt; 1000
  Cette priorite entraine l'installation du paquet meme s'il s'agit d'un retour en arriere.
  
  990 &lt; P &lt;=1000
  La version sera installee, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant a la distribution par defaut ou si la version installee est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installee, sauf s'il existe une version appartenant a une autre distribution ou si la version installee est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installee si aucune version du paquet n'est installee.
  
  P &lt; 0
  Cette priorite empeche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a etablir des priorites qui ne mettront pas votre systeme en danger. Dans ce qui suit, ''branche principale'' designe la branche de Debian que vous avez choisie de suivre en priorite (stable, testing ou sid), les autres depots presents dans le sources.list ne servant qu'a y piocher des paquets si besoin est.


- '''Garder des priorites identiques pour les depots Debian officiels d'une meme branche'''. C'est le comportement par defaut (quand l'on a que les depots de la branche principale dans le sources.list sans preferences). Tout manquement a cette regle casse le comportement par defaut et peut generer des resultats tres dommageables car non prevus par les devellopeurs Debian.


- '''Attribuer une priorite comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; a cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par defaut et a donc une priorite de 990. On comprend donc aisement qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les methodes pour piocher dans les differents depots sont expliquees un peu plus bas, dans le paragraphe ''Comment piocher dans les differents depots du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorite comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; a la branche principale'''. Ceci permet d'installer les paquets a la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installes a partir des ces depots.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent a jours automatiquement si une nouvelle version est placee dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorite a ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences generique du fait des dependances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de depots, etc) sans avoir a decaler toutes les autres entrees dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la differences entre les differentes priorites des depots a la lecture du ''apt-cache policy''.


==== Comment piocher dans les differents depots du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte apres une modification, il vous faut mettre a jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Verifiez ensuite a l'aide de ''apt-cache policy'' que les priorites sont correctes.


Il y a deux manieres d'indiquer a APT d'aller piocher dans des depots differents que ceux de la branche principale (les commandes qui suivent sont valable a la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version superieure a celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour present dans sid parce qu'il est plus recent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dependances sont mieux gerees.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez downgrader la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguee, vous utiliserez cette commande:

   apt-get install ardour/testing


Le probleme c'est que APT voudra remettre a niveau le paquet downgrade lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installee. Pour cela il y a deux possibilites:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour debloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets a mettre a jour, les paquets que vous avez bloque par cette methode y apparaitront precedes d'un '''h'''.


- Soit '''etiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloque ou avec la variable release''' a=now'''.


Par exemple si je veux downgrader ardour de la ''version 1:2.8.11-1'' presente dans sid a la ''version 1:2.8.9-1'' presente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entree dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numero de version a inserer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner a la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entree, ''le paquet ardour qui est installe maintenant sera forcement installe meme s'il s'agit d'un retour en arriere'', donc ne sera pas mis a jour. Pour debloquer le paquet il suffira d'enlever son entree du fichier preferences.


'''N'hesitez pas a simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ca permet de verifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez reellement la commande en enlevant l'option ''-s''. cette option fonctionne egalement avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises a jours (par exemple ''aptitude safe-upgrade -s''), etc... C'est une securite non negligeable.

== Stable ==

L'interet de la branche stable est sa stabilite (etonnant non?). Donc la melanger avec les autres branches est souvent une tres mauvaise idee. '''Si vous avez besoin de paquets plus recents preferez les depots backports, la compilation, ou tout simplement utilisez une autre branche principale a la place!'''

Etant donne qu''''il est fortement deconseille de melanger stable et les branches superieures''', il est preferable de n'avoir que ses entrees dans le sources.list. Le preferences est donc inutile, sauf eventuellement si vous souhaitez utiliser les depots backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adequat dans ce cas peut-etre le suivant (changez les adresses des depots stable par d'autres que vous prefereriez si vous le souhaitez):

  # stable
  deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
  
  # stable security
  deb http://security.debian.org/ stable/updates main contrib non-free
  #deb-src http://security.debian.org/ stable/updates main contrib non-free
  
  # stable volatile
  deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  
  # stable multimedia
  deb http://www.debian-multimedia.org stable main non-free
  #deb-src http://www.debian-multimedia.org stable main non-free
  
  # backports
  deb http://www.backports.org/debian lenny-backports main contrib non-free


'''Les preferences des backports ont par defaut une valeur de 1'''. Si vous souhaitez choisir par vous meme quand installer une eventuelle nouvelle version disponible dans ces depots, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installe depuis les backports soit mis a jour automatiquement en cas de nouvelle version disponible dans ces depots, alors vous n'aurez besoin que de cette seule entree dans le fichier preferences:

  Package: *
  Pin: release a=lenny-backports
  Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

  apt-get install -t lenny-backports paquet
  aptitude install -t lenny-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

  # stable
  deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
  
  # stable security
  deb http://security.debian.org/ stable/updates main contrib non-free
  #deb-src http://security.debian.org/ stable/updates main contrib non-free
  
  # stable volatile
  deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
  
  # stable multimedia
  deb http://www.debian-multimedia.org stable main non-free
  #deb-src http://www.debian-multimedia.org stable main non-free
  
  
  # testing
  deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
  
  # testing security
  deb http://security.debian.org/ testing/updates main contrib non-free
  #deb-src http://security.debian.org/ testing/updates main contrib non-free
  
  # testing multimedia
  deb http://www.debian-multimedia.org testing main non-free
  #deb-src http://www.debian-multimedia.org testing main non-free
  
  
  # sid
  deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
  #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
  
  # sid multimedia
  deb http://www.debian-multimedia.org sid main non-free
  #deb-src http://www.debian-multimedia.org sid main non-free


Accompagne de ce fichier preferences:

  Package: * 
  Pin: release a=stable
  Pin-Priority: 900
  
  Package: *
  Pin: release a=testing
  Pin-Priority: -10
  
  Package: *
  Pin: release a=unstable
  Pin-Priority: -10


Si vous vous contentez de faire les mises a jour et d'installer normalement des paquets, votre systeme sera exactement dans le meme etat que s'il n'avait que le depots stables sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non present dans les depots stables mais present dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les depots testing dependent de l'arrivee de paquets en provenance de sid. Il se peut donc que ces depots ne soient pas complets ou entrainent des problemes de dependances. '''Installer une testing seule c'est un peu installer une version a trous de Debian puisqu'elle est tres souvent incomplete, du coup l'etiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' a la place de ''upgrade'' (ou les equivalents pour ''aptitude''), car de toutes façons durant le cycle de developpement le ''dist-upgrade'' sera souvent indispensable. N'hesitez pas a user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui la:

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par defaut, d'eventuels paquets manquants seront completes par les depots de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables, a plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problemes toutes references aux depots de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complete d'ou l'utilite d'avoir les autres branches facilement accessibles. Cela dit il faut quand meme surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par defaut tous les depots ont la meme priorite''', et a priorites egales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installe. Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets.

Si vous souhaitez utiliser les depots experimental, utilisez un sources.list complet comme celui presente dans le paragraphe Testing. '''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables''', a plus fortes raison ceux de multimedia, mais si vous tenez a ces depots alors utilisez ce fichier preferences pour eviter les problemes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1</text>
      <sha1>3r1j6r4xwron4e2v3kmeuotjish9cn6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1766</id>
      <parentid>1765</parentid>
      <timestamp>2010-07-28T17:24:20Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>mise en page</comment>
      <text xml:space="preserve" bytes="26570">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'etiquetage (ou pinning en VO) consiste a assigner a un paquet (ou a un groupe de paquets) une priorite d'installation differente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermediaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque depot present dans le sources.list se voit attribuer une priorite d'installation. Par defaut tous les depots ont la meme priorite (500 sauf exception, experimental et backports par exemple qui ont une priorite par defaut de 1), et a priorites egales c'est le numero de version des paquets qui joue, le plus recent est prioritaire.

Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus recents et qui ne viennent pas d'experimental qui ont la priorite, ce qui correspond a sid.

Le fichier de preferences sert a modifier les priorites qui sont affectees aux paquets par APT, et ce par l'intermediaire de regles s'appliquant a un, plusieurs ou un ensemble de paquets (et non a des depots, c'est un abus de language qui peut nuire a la comprehension du fonctionnement des regles). Cette methode peut etre utilisee pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer differentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de depots non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'etiquetage peut tres vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT decrite dans apt_preferences (5) soit puissante, ses effets peuvent etre difficiles a comprendre et a gerer.
 Vous devriez la considerer comme une Fonction Avancee.


C'est pas moi qui le dit, c'est la doc officielle... donc la premiere chose a se demander c'est ''ai je vraiment besoin d'etiqueter des paquets?'' Certains des chapitres suivants devraient vous aider a repondre a cette question, mais cette reponse dependra en tres grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'etiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire meme plusieures fois. Certaines informations sont repetees dans differents paragraphes, j'espere que ce n'est pas redondant mais que ca facilite la comprehension du sujet et evitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi a faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez egalement trouver des informations sur l'etiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitue d'une ou plusieurs entrees separees par des lignes blanches. Un exemple d'entrees de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entree est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou negatif)


Pour completer au mieux ces entrees nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorite assignee au depot http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront a completer la ligne ''Pin'' des entrees du fichier preferences et sont donc expliquees au paragraphe qui la concerne un peu plus bas.


Detaillons ligne par ligne les entrees du fichier preferences:


==== Ligne Package ====
C'est la qu'est indique le nom du paquet etiquete ou * si l'etiquetage concerne tout un groupe de paquets defini par la ligne ''Pin''.


==== Ligne Pin ====
Cette ligne servira a indiquer quels paquets seront concernes par l'etiquetage de cette entree. Pour cela on se sert d'une (ou plusieures) variable(s) indiquee(s) a la ligne ''release'' du ''apt-cache policy'', dans l'exemple precedent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des depots se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquee dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen tres accessible de synthetiser cela et de voir quelles sont les priorites qu'APT attribut a un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des depots dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entree ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des depots dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent etre ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieures de ces variables dans la ligne ''Pin''. Il n'est pas forcement utile de les inclure toutes, une ou deux bien utilisees peuvent tout a fait etre suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquee la priorite du paquet ou groupe de paquets. Elle doit etre un entier positif ou negatif. Ces priorites sont interpretes a peu pres comme suit:

  P &gt; 1000
  Cette priorite entraine l'installation du paquet meme s'il s'agit d'un retour en arriere.
  
  990 &lt; P &lt;=1000
  La version sera installee, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant a la distribution par defaut ou si la version installee est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installee, sauf s'il existe une version appartenant a une autre distribution ou si la version installee est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installee si aucune version du paquet n'est installee.
  
  P &lt; 0
  Cette priorite empeche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a etablir des priorites qui ne mettront pas votre systeme en danger. Dans ce qui suit, ''branche principale'' designe la branche de Debian que vous avez choisie de suivre en priorite (stable, testing ou sid), les autres depots presents dans le sources.list ne servant qu'a y piocher des paquets si besoin est.


- '''Garder des priorites identiques pour les depots Debian officiels d'une meme branche'''. C'est le comportement par defaut (quand l'on a que les depots de la branche principale dans le sources.list sans preferences). Tout manquement a cette regle casse le comportement par defaut et peut generer des resultats tres dommageables car non prevus par les devellopeurs Debian.


- '''Attribuer une priorite comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; a cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par defaut et a donc une priorite de 990. On comprend donc aisement qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les methodes pour piocher dans les differents depots sont expliquees un peu plus bas, dans le paragraphe ''Comment piocher dans les differents depots du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorite comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; a la branche principale'''. Ceci permet d'installer les paquets a la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installes a partir des ces depots.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent a jours automatiquement si une nouvelle version est placee dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorite a ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences generique du fait des dependances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de depots, etc) sans avoir a decaler toutes les autres entrees dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la differences entre les differentes priorites des depots a la lecture du ''apt-cache policy''.


==== Comment piocher dans les differents depots du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte apres une modification, il vous faut mettre a jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Verifiez ensuite a l'aide de ''apt-cache policy'' que les priorites sont correctes.


Il y a deux manieres d'indiquer a APT d'aller piocher dans des depots differents que ceux de la branche principale (les commandes qui suivent sont valable a la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version superieure a celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour present dans sid parce qu'il est plus recent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dependances sont mieux gerees.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez downgrader la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguee, vous utiliserez cette commande:

   apt-get install ardour/testing


Le probleme c'est que APT voudra remettre a niveau le paquet downgrade lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installee. Pour cela il y a deux possibilites:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour debloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets a mettre a jour, les paquets que vous avez bloque par cette methode y apparaitront precedes d'un '''h'''.


- Soit '''etiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloque ou avec la variable release''' a=now'''.


Par exemple si je veux downgrader ardour de la ''version 1:2.8.11-1'' presente dans sid a la ''version 1:2.8.9-1'' presente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entree dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numero de version a inserer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner a la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entree, ''le paquet ardour qui est installe maintenant sera forcement installe meme s'il s'agit d'un retour en arriere'', donc ne sera pas mis a jour. Pour debloquer le paquet il suffira d'enlever son entree du fichier preferences.


'''N'hesitez pas a simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ca permet de verifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez reellement la commande en enlevant l'option ''-s''. cette option fonctionne egalement avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises a jours (par exemple ''aptitude safe-upgrade -s''), etc... C'est une securite non negligeable.

== Stable ==

L'interet de la branche stable est sa stabilite (etonnant non?). Donc la melanger avec les autres branches est souvent une tres mauvaise idee. '''Si vous avez besoin de paquets plus recents preferez les depots backports, la compilation, ou tout simplement utilisez une autre branche principale a la place!'''

Etant donne qu''''il est fortement deconseille de melanger stable et les branches superieures''', il est preferable de n'avoir que ses entrees dans le sources.list. Le preferences est donc inutile, sauf eventuellement si vous souhaitez utiliser les depots backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adequat dans ce cas peut-etre le suivant (changez les adresses des depots stable par d'autres que vous prefereriez si vous le souhaitez):

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 # backports
 deb http://www.backports.org/debian lenny-backports main contrib non-free


'''Les preferences des backports ont par defaut une valeur de 1'''. Si vous souhaitez choisir par vous meme quand installer une eventuelle nouvelle version disponible dans ces depots, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installe depuis les backports soit mis a jour automatiquement en cas de nouvelle version disponible dans ces depots, alors vous n'aurez besoin que de cette seule entree dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t lenny-backports paquet
 aptitude install -t lenny-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagne de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises a jour et d'installer normalement des paquets, votre systeme sera exactement dans le meme etat que s'il n'avait que le depots stables sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non present dans les depots stables mais present dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les depots testing dependent de l'arrivee de paquets en provenance de sid. Il se peut donc que ces depots ne soient pas complets ou entrainent des problemes de dependances. '''Installer une testing seule c'est un peu installer une version a trous de Debian puisqu'elle est tres souvent incomplete, du coup l'etiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' a la place de ''upgrade'' (ou les equivalents pour ''aptitude''), car de toutes façons durant le cycle de developpement le ''dist-upgrade'' sera souvent indispensable. N'hesitez pas a user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui la:

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par defaut, d'eventuels paquets manquants seront completes par les depots de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables, a plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problemes toutes references aux depots de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complete d'ou l'utilite d'avoir les autres branches facilement accessibles. Cela dit il faut quand meme surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par defaut tous les depots ont la meme priorite''', et a priorites egales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installe. Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets.

Si vous souhaitez utiliser les depots experimental, utilisez un sources.list complet comme celui presente dans le paragraphe Testing. '''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables''', a plus fortes raison ceux de multimedia, mais si vous tenez a ces depots alors utilisez ce fichier preferences pour eviter les problemes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1</text>
      <sha1>6nmyb1qk9u5p36ft289wo21i86fpohy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1779</id>
      <parentid>1766</parentid>
      <timestamp>2010-07-30T12:06:09Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>ajout d'un avertissement sur le sources.list et d'un lien vers la page du forum qui y est consacree</comment>
      <text xml:space="preserve" bytes="26890">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'etiquetage (ou pinning en VO) consiste a assigner a un paquet (ou a un groupe de paquets) une priorite d'installation differente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermediaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque depot present dans le sources.list se voit attribuer une priorite d'installation. Par defaut tous les depots ont la meme priorite (500 sauf exception, experimental et backports par exemple qui ont une priorite par defaut de 1), et a priorites egales c'est le numero de version des paquets qui joue, le plus recent est prioritaire.

Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus recents et qui ne viennent pas d'experimental qui ont la priorite, ce qui correspond a sid.

Le fichier de preferences sert a modifier les priorites qui sont affectees aux paquets par APT, et ce par l'intermediaire de regles s'appliquant a un, plusieurs ou un ensemble de paquets (et non a des depots, c'est un abus de language qui peut nuire a la comprehension du fonctionnement des regles). Cette methode peut etre utilisee pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer differentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de depots non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'etiquetage peut tres vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT decrite dans apt_preferences (5) soit puissante, ses effets peuvent etre difficiles a comprendre et a gerer.
 Vous devriez la considerer comme une Fonction Avancee.


C'est pas moi qui le dit, c'est la doc officielle... donc la premiere chose a se demander c'est ''ai je vraiment besoin d'etiqueter des paquets?'' Certains des chapitres suivants devraient vous aider a repondre a cette question, mais cette reponse dependra en tres grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'etiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire meme plusieures fois. Certaines informations sont repetees dans differents paragraphes, j'espere que ce n'est pas redondant mais que ca facilite la comprehension du sujet et evitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi a faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez egalement trouver des informations sur l'etiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitue d'une ou plusieurs entrees separees par des lignes blanches. Un exemple d'entrees de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entree est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou negatif)


Pour completer au mieux ces entrees nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorite assignee au depot http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront a completer la ligne ''Pin'' des entrees du fichier preferences et sont donc expliquees au paragraphe qui la concerne un peu plus bas.


Detaillons ligne par ligne les entrees du fichier preferences:


==== Ligne Package ====
C'est la qu'est indique le nom du paquet etiquete ou * si l'etiquetage concerne tout un groupe de paquets defini par la ligne ''Pin''.


==== Ligne Pin ====
Cette ligne servira a indiquer quels paquets seront concernes par l'etiquetage de cette entree. Pour cela on se sert d'une (ou plusieures) variable(s) indiquee(s) a la ligne ''release'' du ''apt-cache policy'', dans l'exemple precedent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des depots se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquee dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen tres accessible de synthetiser cela et de voir quelles sont les priorites qu'APT attribut a un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des depots dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entree ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des depots dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent etre ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieures de ces variables dans la ligne ''Pin''. Il n'est pas forcement utile de les inclure toutes, une ou deux bien utilisees peuvent tout a fait etre suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquee la priorite du paquet ou groupe de paquets. Elle doit etre un entier positif ou negatif. Ces priorites sont interpretes a peu pres comme suit:

  P &gt; 1000
  Cette priorite entraine l'installation du paquet meme s'il s'agit d'un retour en arriere.
  
  990 &lt; P &lt;=1000
  La version sera installee, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant a la distribution par defaut ou si la version installee est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installee, sauf s'il existe une version appartenant a une autre distribution ou si la version installee est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installee si aucune version du paquet n'est installee.
  
  P &lt; 0
  Cette priorite empeche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a etablir des priorites qui ne mettront pas votre systeme en danger. Dans ce qui suit, ''branche principale'' designe la branche de Debian que vous avez choisie de suivre en priorite (stable, testing ou sid), les autres depots presents dans le sources.list ne servant qu'a y piocher des paquets si besoin est.


- '''Garder des priorites identiques pour les depots Debian officiels d'une meme branche'''. C'est le comportement par defaut (quand l'on a que les depots de la branche principale dans le sources.list sans preferences). Tout manquement a cette regle casse le comportement par defaut et peut generer des resultats tres dommageables car non prevus par les devellopeurs Debian.


- '''Attribuer une priorite comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; a cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par defaut et a donc une priorite de 990. On comprend donc aisement qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les methodes pour piocher dans les differents depots sont expliquees un peu plus bas, dans le paragraphe ''Comment piocher dans les differents depots du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorite comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; a la branche principale'''. Ceci permet d'installer les paquets a la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installes a partir des ces depots.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent a jours automatiquement si une nouvelle version est placee dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorite a ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences generique du fait des dependances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de depots, etc) sans avoir a decaler toutes les autres entrees dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la differences entre les differentes priorites des depots a la lecture du ''apt-cache policy''.


==== Comment piocher dans les differents depots du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte apres une modification, il vous faut mettre a jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Verifiez ensuite a l'aide de ''apt-cache policy'' que les priorites sont correctes.


Il y a deux manieres d'indiquer a APT d'aller piocher dans des depots differents que ceux de la branche principale (les commandes qui suivent sont valable a la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version superieure a celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour present dans sid parce qu'il est plus recent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dependances sont mieux gerees.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez downgrader la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguee, vous utiliserez cette commande:

   apt-get install ardour/testing


Le probleme c'est que APT voudra remettre a niveau le paquet downgrade lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installee. Pour cela il y a deux possibilites:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour debloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets a mettre a jour, les paquets que vous avez bloque par cette methode y apparaitront precedes d'un '''h'''.


- Soit '''etiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloque ou avec la variable release''' a=now'''.


Par exemple si je veux downgrader ardour de la ''version 1:2.8.11-1'' presente dans sid a la ''version 1:2.8.9-1'' presente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entree dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numero de version a inserer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner a la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entree, ''le paquet ardour qui est installe maintenant sera forcement installe meme s'il s'agit d'un retour en arriere'', donc ne sera pas mis a jour. Pour debloquer le paquet il suffira d'enlever son entree du fichier preferences.


'''N'hesitez pas a simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ca permet de verifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez reellement la commande en enlevant l'option ''-s''. cette option fonctionne egalement avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises a jours (par exemple ''aptitude safe-upgrade -s''), etc... C'est une securite non negligeable.

== Stable ==

L'interet de la branche stable est sa stabilite (etonnant non?). Donc la melanger avec les autres branches est souvent une tres mauvaise idee. '''Si vous avez besoin de paquets plus recents preferez les depots backports, la compilation, ou tout simplement utilisez une autre branche principale a la place!'''

Etant donne qu''''il est fortement deconseille de melanger stable et les branches superieures''', il est preferable de n'avoir que ses entrees dans le sources.list. Le preferences est donc inutile, sauf eventuellement si vous souhaitez utiliser les depots backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adequat dans ce cas peut-etre celui ci:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 # backports
 deb http://www.backports.org/debian lenny-backports main contrib non-free


'''Les preferences des backports ont par defaut une valeur de 1'''. Si vous souhaitez choisir par vous meme quand installer une eventuelle nouvelle version disponible dans ces depots, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installe depuis les backports soit mis a jour automatiquement en cas de nouvelle version disponible dans ces depots, alors vous n'aurez besoin que de cette seule entree dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t lenny-backports paquet
 aptitude install -t lenny-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagne de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises a jour et d'installer normalement des paquets, votre systeme sera exactement dans le meme etat que s'il n'avait que le depots stables sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non present dans les depots stables mais present dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les depots testing dependent de l'arrivee de paquets en provenance de sid. Il se peut donc que ces depots ne soient pas complets ou entrainent des problemes de dependances. '''Installer une testing seule c'est un peu installer une version a trous de Debian puisqu'elle est tres souvent incomplete, du coup l'etiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' a la place de ''upgrade'' (ou les equivalents pour ''aptitude''), car de toutes façons durant le cycle de developpement le ''dist-upgrade'' sera souvent indispensable. N'hesitez pas a user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui la:

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par defaut, d'eventuels paquets manquants seront completes par les depots de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables, a plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problemes toutes references aux depots de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complete d'ou l'utilite d'avoir les autres branches facilement accessibles. Cela dit il faut quand meme surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par defaut tous les depots ont la meme priorite''', et a priorites egales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installe. Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets.

Si vous souhaitez utiliser les depots experimental, utilisez un sources.list complet comme celui presente dans le paragraphe Testing. '''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables''', a plus fortes raison ceux de multimedia, mais si vous tenez a ces depots alors utilisez ce fichier preferences pour eviter les problemes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1</text>
      <sha1>mt5qkap6wc6hjz3x80s8y8dv7swkj25</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1780</id>
      <parentid>1779</parentid>
      <timestamp>2010-07-30T12:07:35Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>ajout d'un avertissement sur le sources.list et d'un lien vers la page du forum qui y est consacree</comment>
      <text xml:space="preserve" bytes="27099">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'etiquetage (ou pinning en VO) consiste a assigner a un paquet (ou a un groupe de paquets) une priorite d'installation differente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermediaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque depot present dans le sources.list se voit attribuer une priorite d'installation. Par defaut tous les depots ont la meme priorite (500 sauf exception, experimental et backports par exemple qui ont une priorite par defaut de 1), et a priorites egales c'est le numero de version des paquets qui joue, le plus recent est prioritaire.

Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus recents et qui ne viennent pas d'experimental qui ont la priorite, ce qui correspond a sid.

Le fichier de preferences sert a modifier les priorites qui sont affectees aux paquets par APT, et ce par l'intermediaire de regles s'appliquant a un, plusieurs ou un ensemble de paquets (et non a des depots, c'est un abus de language qui peut nuire a la comprehension du fonctionnement des regles). Cette methode peut etre utilisee pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer differentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de depots non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'etiquetage peut tres vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT decrite dans apt_preferences (5) soit puissante, ses effets peuvent etre difficiles a comprendre et a gerer.
 Vous devriez la considerer comme une Fonction Avancee.


C'est pas moi qui le dit, c'est la doc officielle... donc la premiere chose a se demander c'est ''ai je vraiment besoin d'etiqueter des paquets?'' Certains des chapitres suivants devraient vous aider a repondre a cette question, mais cette reponse dependra en tres grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'etiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire meme plusieures fois. Certaines informations sont repetees dans differents paragraphes, j'espere que ce n'est pas redondant mais que ca facilite la comprehension du sujet et evitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi a faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez egalement trouver des informations sur l'etiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitue d'une ou plusieurs entrees separees par des lignes blanches. Un exemple d'entrees de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entree est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou negatif)


Pour completer au mieux ces entrees nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorite assignee au depot http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront a completer la ligne ''Pin'' des entrees du fichier preferences et sont donc expliquees au paragraphe qui la concerne un peu plus bas.


Detaillons ligne par ligne les entrees du fichier preferences:


==== Ligne Package ====
C'est la qu'est indique le nom du paquet etiquete ou * si l'etiquetage concerne tout un groupe de paquets defini par la ligne ''Pin''.


==== Ligne Pin ====
Cette ligne servira a indiquer quels paquets seront concernes par l'etiquetage de cette entree. Pour cela on se sert d'une (ou plusieures) variable(s) indiquee(s) a la ligne ''release'' du ''apt-cache policy'', dans l'exemple precedent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des depots se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquee dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen tres accessible de synthetiser cela et de voir quelles sont les priorites qu'APT attribut a un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des depots dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entree ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des depots dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent etre ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieures de ces variables dans la ligne ''Pin''. Il n'est pas forcement utile de les inclure toutes, une ou deux bien utilisees peuvent tout a fait etre suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquee la priorite du paquet ou groupe de paquets. Elle doit etre un entier positif ou negatif. Ces priorites sont interpretes a peu pres comme suit:

  P &gt; 1000
  Cette priorite entraine l'installation du paquet meme s'il s'agit d'un retour en arriere.
  
  990 &lt; P &lt;=1000
  La version sera installee, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant a la distribution par defaut ou si la version installee est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installee, sauf s'il existe une version appartenant a une autre distribution ou si la version installee est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installee si aucune version du paquet n'est installee.
  
  P &lt; 0
  Cette priorite empeche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a etablir des priorites qui ne mettront pas votre systeme en danger. Dans ce qui suit, ''branche principale'' designe la branche de Debian que vous avez choisie de suivre en priorite (stable, testing ou sid), les autres depots presents dans le sources.list ne servant qu'a y piocher des paquets si besoin est.


- '''Garder des priorites identiques pour les depots Debian officiels d'une meme branche'''. C'est le comportement par defaut (quand l'on a que les depots de la branche principale dans le sources.list sans preferences). Tout manquement a cette regle casse le comportement par defaut et peut generer des resultats tres dommageables car non prevus par les devellopeurs Debian.


- '''Attribuer une priorite comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; a cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par defaut et a donc une priorite de 990. On comprend donc aisement qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les methodes pour piocher dans les differents depots sont expliquees un peu plus bas, dans le paragraphe ''Comment piocher dans les differents depots du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorite comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; a la branche principale'''. Ceci permet d'installer les paquets a la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installes a partir des ces depots.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent a jours automatiquement si une nouvelle version est placee dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorite a ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences generique du fait des dependances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de depots, etc) sans avoir a decaler toutes les autres entrees dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la differences entre les differentes priorites des depots a la lecture du ''apt-cache policy''.


==== Comment piocher dans les differents depots du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte apres une modification, il vous faut mettre a jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Verifiez ensuite a l'aide de ''apt-cache policy'' que les priorites sont correctes.


Il y a deux manieres d'indiquer a APT d'aller piocher dans des depots differents que ceux de la branche principale (les commandes qui suivent sont valable a la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version superieure a celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour present dans sid parce qu'il est plus recent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dependances sont mieux gerees.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez downgrader la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguee, vous utiliserez cette commande:

   apt-get install ardour/testing


Le probleme c'est que APT voudra remettre a niveau le paquet downgrade lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installee. Pour cela il y a deux possibilites:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour debloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets a mettre a jour, les paquets que vous avez bloque par cette methode y apparaitront precedes d'un '''h'''.


- Soit '''etiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloque ou avec la variable release''' a=now'''.


Par exemple si je veux downgrader ardour de la ''version 1:2.8.11-1'' presente dans sid a la ''version 1:2.8.9-1'' presente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entree dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numero de version a inserer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner a la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entree, ''le paquet ardour qui est installe maintenant sera forcement installe meme s'il s'agit d'un retour en arriere'', donc ne sera pas mis a jour. Pour debloquer le paquet il suffira d'enlever son entree du fichier preferences.


'''N'hesitez pas a simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ca permet de verifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez reellement la commande en enlevant l'option ''-s''. cette option fonctionne egalement avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises a jours (par exemple ''aptitude safe-upgrade -s''), etc... C'est une securite non negligeable.

== Stable ==

L'interet de la branche stable est sa stabilite (etonnant non?). Donc la melanger avec les autres branches est souvent une tres mauvaise idee. '''Si vous avez besoin de paquets plus recents preferez les depots backports, la compilation, ou tout simplement utilisez une autre branche principale a la place!'''

Etant donne qu''''il est fortement deconseille de melanger stable et les branches superieures''', il est preferable de n'avoir que ses entrees dans le sources.list. Le preferences est donc inutile, sauf eventuellement si vous souhaitez utiliser les depots backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adequat dans ce cas peut-etre celui ci:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 # backports
 deb http://www.backports.org/debian lenny-backports main contrib non-free


'''Les preferences des backports ont par defaut une valeur de 1'''. Si vous souhaitez choisir par vous meme quand installer une eventuelle nouvelle version disponible dans ces depots, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installe depuis les backports soit mis a jour automatiquement en cas de nouvelle version disponible dans ces depots, alors vous n'aurez besoin que de cette seule entree dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t lenny-backports paquet
 aptitude install -t lenny-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagne de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises a jour et d'installer normalement des paquets, votre systeme sera exactement dans le meme etat que s'il n'avait que le depots stables sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non present dans les depots stables mais present dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les depots testing dependent de l'arrivee de paquets en provenance de sid. Il se peut donc que ces depots ne soient pas complets ou entrainent des problemes de dependances. '''Installer une testing seule c'est un peu installer une version a trous de Debian puisqu'elle est tres souvent incomplete, du coup l'etiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' a la place de ''upgrade'' (ou les equivalents pour ''aptitude''), car de toutes façons durant le cycle de developpement le ''dist-upgrade'' sera souvent indispensable. N'hesitez pas a user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui la:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par defaut, d'eventuels paquets manquants seront completes par les depots de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables, a plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problemes toutes references aux depots de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complete d'ou l'utilite d'avoir les autres branches facilement accessibles. Cela dit il faut quand meme surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par defaut tous les depots ont la meme priorite''', et a priorites egales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installe. Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets.

Si vous souhaitez utiliser les depots experimental, utilisez un sources.list complet comme celui presente dans le paragraphe Testing. '''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables''', a plus fortes raison ceux de multimedia, mais si vous tenez a ces depots alors utilisez ce fichier preferences pour eviter les problemes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1</text>
      <sha1>6oy7qlcd86neold1vxjqmnsp22pwpcv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1781</id>
      <parentid>1780</parentid>
      <timestamp>2010-07-30T12:09:11Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>ajout d'un avertissement sur le sources.list et d'un lien vers la page du forum qui y est consacree</comment>
      <text xml:space="preserve" bytes="27308">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'etiquetage (ou pinning en VO) consiste a assigner a un paquet (ou a un groupe de paquets) une priorite d'installation differente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermediaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque depot present dans le sources.list se voit attribuer une priorite d'installation. Par defaut tous les depots ont la meme priorite (500 sauf exception, experimental et backports par exemple qui ont une priorite par defaut de 1), et a priorites egales c'est le numero de version des paquets qui joue, le plus recent est prioritaire.

Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus recents et qui ne viennent pas d'experimental qui ont la priorite, ce qui correspond a sid.

Le fichier de preferences sert a modifier les priorites qui sont affectees aux paquets par APT, et ce par l'intermediaire de regles s'appliquant a un, plusieurs ou un ensemble de paquets (et non a des depots, c'est un abus de language qui peut nuire a la comprehension du fonctionnement des regles). Cette methode peut etre utilisee pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer differentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de depots non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'etiquetage peut tres vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT decrite dans apt_preferences (5) soit puissante, ses effets peuvent etre difficiles a comprendre et a gerer.
 Vous devriez la considerer comme une Fonction Avancee.


C'est pas moi qui le dit, c'est la doc officielle... donc la premiere chose a se demander c'est ''ai je vraiment besoin d'etiqueter des paquets?'' Certains des chapitres suivants devraient vous aider a repondre a cette question, mais cette reponse dependra en tres grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'etiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire meme plusieures fois. Certaines informations sont repetees dans differents paragraphes, j'espere que ce n'est pas redondant mais que ca facilite la comprehension du sujet et evitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi a faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez egalement trouver des informations sur l'etiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitue d'une ou plusieurs entrees separees par des lignes blanches. Un exemple d'entrees de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entree est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou negatif)


Pour completer au mieux ces entrees nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorite assignee au depot http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront a completer la ligne ''Pin'' des entrees du fichier preferences et sont donc expliquees au paragraphe qui la concerne un peu plus bas.


Detaillons ligne par ligne les entrees du fichier preferences:


==== Ligne Package ====
C'est la qu'est indique le nom du paquet etiquete ou * si l'etiquetage concerne tout un groupe de paquets defini par la ligne ''Pin''.


==== Ligne Pin ====
Cette ligne servira a indiquer quels paquets seront concernes par l'etiquetage de cette entree. Pour cela on se sert d'une (ou plusieures) variable(s) indiquee(s) a la ligne ''release'' du ''apt-cache policy'', dans l'exemple precedent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des depots se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquee dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen tres accessible de synthetiser cela et de voir quelles sont les priorites qu'APT attribut a un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des depots dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entree ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des depots dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent etre ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieures de ces variables dans la ligne ''Pin''. Il n'est pas forcement utile de les inclure toutes, une ou deux bien utilisees peuvent tout a fait etre suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquee la priorite du paquet ou groupe de paquets. Elle doit etre un entier positif ou negatif. Ces priorites sont interpretes a peu pres comme suit:

  P &gt; 1000
  Cette priorite entraine l'installation du paquet meme s'il s'agit d'un retour en arriere.
  
  990 &lt; P &lt;=1000
  La version sera installee, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant a la distribution par defaut ou si la version installee est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installee, sauf s'il existe une version appartenant a une autre distribution ou si la version installee est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installee si aucune version du paquet n'est installee.
  
  P &lt; 0
  Cette priorite empeche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a etablir des priorites qui ne mettront pas votre systeme en danger. Dans ce qui suit, ''branche principale'' designe la branche de Debian que vous avez choisie de suivre en priorite (stable, testing ou sid), les autres depots presents dans le sources.list ne servant qu'a y piocher des paquets si besoin est.


- '''Garder des priorites identiques pour les depots Debian officiels d'une meme branche'''. C'est le comportement par defaut (quand l'on a que les depots de la branche principale dans le sources.list sans preferences). Tout manquement a cette regle casse le comportement par defaut et peut generer des resultats tres dommageables car non prevus par les devellopeurs Debian.


- '''Attribuer une priorite comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; a cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par defaut et a donc une priorite de 990. On comprend donc aisement qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les methodes pour piocher dans les differents depots sont expliquees un peu plus bas, dans le paragraphe ''Comment piocher dans les differents depots du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorite comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; a la branche principale'''. Ceci permet d'installer les paquets a la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installes a partir des ces depots.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent a jours automatiquement si une nouvelle version est placee dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorite a ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences generique du fait des dependances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de depots, etc) sans avoir a decaler toutes les autres entrees dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la differences entre les differentes priorites des depots a la lecture du ''apt-cache policy''.


==== Comment piocher dans les differents depots du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte apres une modification, il vous faut mettre a jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Verifiez ensuite a l'aide de ''apt-cache policy'' que les priorites sont correctes.


Il y a deux manieres d'indiquer a APT d'aller piocher dans des depots differents que ceux de la branche principale (les commandes qui suivent sont valable a la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version superieure a celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour present dans sid parce qu'il est plus recent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dependances sont mieux gerees.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez downgrader la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguee, vous utiliserez cette commande:

   apt-get install ardour/testing


Le probleme c'est que APT voudra remettre a niveau le paquet downgrade lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installee. Pour cela il y a deux possibilites:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour debloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets a mettre a jour, les paquets que vous avez bloque par cette methode y apparaitront precedes d'un '''h'''.


- Soit '''etiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloque ou avec la variable release''' a=now'''.


Par exemple si je veux downgrader ardour de la ''version 1:2.8.11-1'' presente dans sid a la ''version 1:2.8.9-1'' presente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entree dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numero de version a inserer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner a la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entree, ''le paquet ardour qui est installe maintenant sera forcement installe meme s'il s'agit d'un retour en arriere'', donc ne sera pas mis a jour. Pour debloquer le paquet il suffira d'enlever son entree du fichier preferences.


'''N'hesitez pas a simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ca permet de verifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez reellement la commande en enlevant l'option ''-s''. cette option fonctionne egalement avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises a jours (par exemple ''aptitude safe-upgrade -s''), etc... C'est une securite non negligeable.

== Stable ==

L'interet de la branche stable est sa stabilite (etonnant non?). Donc la melanger avec les autres branches est souvent une tres mauvaise idee. '''Si vous avez besoin de paquets plus recents preferez les depots backports, la compilation, ou tout simplement utilisez une autre branche principale a la place!'''

Etant donne qu''''il est fortement deconseille de melanger stable et les branches superieures''', il est preferable de n'avoir que ses entrees dans le sources.list. Le preferences est donc inutile, sauf eventuellement si vous souhaitez utiliser les depots backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adequat dans ce cas peut-etre celui ci:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 # backports
 deb http://www.backports.org/debian lenny-backports main contrib non-free


'''Les preferences des backports ont par defaut une valeur de 1'''. Si vous souhaitez choisir par vous meme quand installer une eventuelle nouvelle version disponible dans ces depots, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installe depuis les backports soit mis a jour automatiquement en cas de nouvelle version disponible dans ces depots, alors vous n'aurez besoin que de cette seule entree dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t lenny-backports paquet
 aptitude install -t lenny-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagne de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises a jour et d'installer normalement des paquets, votre systeme sera exactement dans le meme etat que s'il n'avait que le depots stables sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non present dans les depots stables mais present dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les depots testing dependent de l'arrivee de paquets en provenance de sid. Il se peut donc que ces depots ne soient pas complets ou entrainent des problemes de dependances. '''Installer une testing seule c'est un peu installer une version a trous de Debian puisqu'elle est tres souvent incomplete, du coup l'etiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' a la place de ''upgrade'' (ou les equivalents pour ''aptitude''), car de toutes façons durant le cycle de developpement le ''dist-upgrade'' sera souvent indispensable. N'hesitez pas a user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui la:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par defaut, d'eventuels paquets manquants seront completes par les depots de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables, a plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problemes toutes references aux depots de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complete d'ou l'utilite d'avoir les autres branches facilement accessibles. Cela dit il faut quand meme surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par defaut tous les depots ont la meme priorite''', et a priorites egales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installe. Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets.

Si vous souhaitez utiliser les depots experimental, utilisez un sources.list complet comme celui presente dans le paragraphe Testing. '''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables''', a plus fortes raison ceux de multimedia, mais si vous tenez a ces depots alors utilisez ce fichier preferences pour eviter les problemes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1</text>
      <sha1>4p9dyeym9ceimpbga6yti0pet81lok7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1789</id>
      <parentid>1781</parentid>
      <timestamp>2010-07-31T06:36:58Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Ajout d'un lien</comment>
      <text xml:space="preserve" bytes="27324">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'etiquetage (ou pinning en VO) consiste a assigner a un paquet (ou a un groupe de paquets) une priorite d'installation differente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermediaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque depot present dans le [[Sources.list|sources.list]] se voit attribuer une priorite d'installation. Par defaut tous les depots ont la meme priorite (500 sauf exception, experimental et backports par exemple qui ont une priorite par defaut de 1), et a priorites egales c'est le numero de version des paquets qui joue, le plus recent est prioritaire.

Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus recents et qui ne viennent pas d'experimental qui ont la priorite, ce qui correspond a sid.

Le fichier de preferences sert a modifier les priorites qui sont affectees aux paquets par APT, et ce par l'intermediaire de regles s'appliquant a un, plusieurs ou un ensemble de paquets (et non a des depots, c'est un abus de language qui peut nuire a la comprehension du fonctionnement des regles). Cette methode peut etre utilisee pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer differentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de depots non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'etiquetage peut tres vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT decrite dans apt_preferences (5) soit puissante, ses effets peuvent etre difficiles a comprendre et a gerer.
 Vous devriez la considerer comme une Fonction Avancee.


C'est pas moi qui le dit, c'est la doc officielle... donc la premiere chose a se demander c'est ''ai je vraiment besoin d'etiqueter des paquets?'' Certains des chapitres suivants devraient vous aider a repondre a cette question, mais cette reponse dependra en tres grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'etiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire meme plusieures fois. Certaines informations sont repetees dans differents paragraphes, j'espere que ce n'est pas redondant mais que ca facilite la comprehension du sujet et evitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi a faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez egalement trouver des informations sur l'etiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitue d'une ou plusieurs entrees separees par des lignes blanches. Un exemple d'entrees de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entree est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou negatif)


Pour completer au mieux ces entrees nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorite assignee au depot http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront a completer la ligne ''Pin'' des entrees du fichier preferences et sont donc expliquees au paragraphe qui la concerne un peu plus bas.


Detaillons ligne par ligne les entrees du fichier preferences:


==== Ligne Package ====
C'est la qu'est indique le nom du paquet etiquete ou * si l'etiquetage concerne tout un groupe de paquets defini par la ligne ''Pin''.


==== Ligne Pin ====
Cette ligne servira a indiquer quels paquets seront concernes par l'etiquetage de cette entree. Pour cela on se sert d'une (ou plusieures) variable(s) indiquee(s) a la ligne ''release'' du ''apt-cache policy'', dans l'exemple precedent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des depots se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquee dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen tres accessible de synthetiser cela et de voir quelles sont les priorites qu'APT attribut a un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des depots dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entree ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des depots dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent etre ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieures de ces variables dans la ligne ''Pin''. Il n'est pas forcement utile de les inclure toutes, une ou deux bien utilisees peuvent tout a fait etre suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquee la priorite du paquet ou groupe de paquets. Elle doit etre un entier positif ou negatif. Ces priorites sont interpretes a peu pres comme suit:

  P &gt; 1000
  Cette priorite entraine l'installation du paquet meme s'il s'agit d'un retour en arriere.
  
  990 &lt; P &lt;=1000
  La version sera installee, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant a la distribution par defaut ou si la version installee est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installee, sauf s'il existe une version appartenant a une autre distribution ou si la version installee est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installee si aucune version du paquet n'est installee.
  
  P &lt; 0
  Cette priorite empeche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a etablir des priorites qui ne mettront pas votre systeme en danger. Dans ce qui suit, ''branche principale'' designe la branche de Debian que vous avez choisie de suivre en priorite (stable, testing ou sid), les autres depots presents dans le sources.list ne servant qu'a y piocher des paquets si besoin est.


- '''Garder des priorites identiques pour les depots Debian officiels d'une meme branche'''. C'est le comportement par defaut (quand l'on a que les depots de la branche principale dans le sources.list sans preferences). Tout manquement a cette regle casse le comportement par defaut et peut generer des resultats tres dommageables car non prevus par les devellopeurs Debian.


- '''Attribuer une priorite comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; a cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par defaut et a donc une priorite de 990. On comprend donc aisement qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les methodes pour piocher dans les differents depots sont expliquees un peu plus bas, dans le paragraphe ''Comment piocher dans les differents depots du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorite comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; a la branche principale'''. Ceci permet d'installer les paquets a la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installes a partir des ces depots.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent a jours automatiquement si une nouvelle version est placee dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorite a ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences generique du fait des dependances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de depots, etc) sans avoir a decaler toutes les autres entrees dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la differences entre les differentes priorites des depots a la lecture du ''apt-cache policy''.


==== Comment piocher dans les differents depots du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte apres une modification, il vous faut mettre a jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Verifiez ensuite a l'aide de ''apt-cache policy'' que les priorites sont correctes.


Il y a deux manieres d'indiquer a APT d'aller piocher dans des depots differents que ceux de la branche principale (les commandes qui suivent sont valable a la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version superieure a celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour present dans sid parce qu'il est plus recent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dependances sont mieux gerees.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez downgrader la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguee, vous utiliserez cette commande:

   apt-get install ardour/testing


Le probleme c'est que APT voudra remettre a niveau le paquet downgrade lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installee. Pour cela il y a deux possibilites:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour debloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets a mettre a jour, les paquets que vous avez bloque par cette methode y apparaitront precedes d'un '''h'''.


- Soit '''etiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloque ou avec la variable release''' a=now'''.


Par exemple si je veux downgrader ardour de la ''version 1:2.8.11-1'' presente dans sid a la ''version 1:2.8.9-1'' presente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entree dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numero de version a inserer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner a la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entree, ''le paquet ardour qui est installe maintenant sera forcement installe meme s'il s'agit d'un retour en arriere'', donc ne sera pas mis a jour. Pour debloquer le paquet il suffira d'enlever son entree du fichier preferences.


'''N'hesitez pas a simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ca permet de verifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez reellement la commande en enlevant l'option ''-s''. cette option fonctionne egalement avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises a jours (par exemple ''aptitude safe-upgrade -s''), etc... C'est une securite non negligeable.

== Stable ==

L'interet de la branche stable est sa stabilite (etonnant non?). Donc la melanger avec les autres branches est souvent une tres mauvaise idee. '''Si vous avez besoin de paquets plus recents preferez les depots backports, la compilation, ou tout simplement utilisez une autre branche principale a la place!'''

Etant donne qu''''il est fortement deconseille de melanger stable et les branches superieures''', il est preferable de n'avoir que ses entrees dans le sources.list. Le preferences est donc inutile, sauf eventuellement si vous souhaitez utiliser les depots backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adequat dans ce cas peut-etre celui ci:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 # backports
 deb http://www.backports.org/debian lenny-backports main contrib non-free


'''Les preferences des backports ont par defaut une valeur de 1'''. Si vous souhaitez choisir par vous meme quand installer une eventuelle nouvelle version disponible dans ces depots, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installe depuis les backports soit mis a jour automatiquement en cas de nouvelle version disponible dans ces depots, alors vous n'aurez besoin que de cette seule entree dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t lenny-backports paquet
 aptitude install -t lenny-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagne de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises a jour et d'installer normalement des paquets, votre systeme sera exactement dans le meme etat que s'il n'avait que le depots stables sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non present dans les depots stables mais present dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les depots testing dependent de l'arrivee de paquets en provenance de sid. Il se peut donc que ces depots ne soient pas complets ou entrainent des problemes de dependances. '''Installer une testing seule c'est un peu installer une version a trous de Debian puisqu'elle est tres souvent incomplete, du coup l'etiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' a la place de ''upgrade'' (ou les equivalents pour ''aptitude''), car de toutes façons durant le cycle de developpement le ''dist-upgrade'' sera souvent indispensable. N'hesitez pas a user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui la:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par defaut, d'eventuels paquets manquants seront completes par les depots de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables, a plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problemes toutes references aux depots de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complete d'ou l'utilite d'avoir les autres branches facilement accessibles. Cela dit il faut quand meme surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par defaut tous les depots ont la meme priorite''', et a priorites egales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installe. Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets.

Si vous souhaitez utiliser les depots experimental, utilisez un sources.list complet comme celui presente dans le paragraphe Testing. '''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables''', a plus fortes raison ceux de multimedia, mais si vous tenez a ces depots alors utilisez ce fichier preferences pour eviter les problemes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1</text>
      <sha1>8h1tizwju0gbe1l6vphse46woza3ydu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1793</id>
      <parentid>1789</parentid>
      <timestamp>2010-08-01T07:28:40Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? */</comment>
      <text xml:space="preserve" bytes="27402">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque dépôt present dans le [[Sources.list|sources.list]] se voit attribuer une priorite d'installation. Par défaut tous les dépôts ont la meme priorité (500 sauf exception, experimental et backports par exemple qui ont une priorite par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de language qui peut nuire a la compréhension du fonctionnement des règles). Cette méthode peut etre utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


C'est pas moi qui le dit, c'est la doc officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieures fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitue d'une ou plusieurs entrees separees par des lignes blanches. Un exemple d'entrees de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entree est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou negatif)


Pour completer au mieux ces entrees nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorite assignee au depot http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront a completer la ligne ''Pin'' des entrees du fichier preferences et sont donc expliquees au paragraphe qui la concerne un peu plus bas.


Detaillons ligne par ligne les entrees du fichier preferences:


==== Ligne Package ====
C'est la qu'est indique le nom du paquet etiquete ou * si l'etiquetage concerne tout un groupe de paquets defini par la ligne ''Pin''.


==== Ligne Pin ====
Cette ligne servira a indiquer quels paquets seront concernes par l'etiquetage de cette entree. Pour cela on se sert d'une (ou plusieures) variable(s) indiquee(s) a la ligne ''release'' du ''apt-cache policy'', dans l'exemple precedent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des depots se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquee dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen tres accessible de synthetiser cela et de voir quelles sont les priorites qu'APT attribut a un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des depots dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entree ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des depots dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent etre ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieures de ces variables dans la ligne ''Pin''. Il n'est pas forcement utile de les inclure toutes, une ou deux bien utilisees peuvent tout a fait etre suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquee la priorite du paquet ou groupe de paquets. Elle doit etre un entier positif ou negatif. Ces priorites sont interpretes a peu pres comme suit:

  P &gt; 1000
  Cette priorite entraine l'installation du paquet meme s'il s'agit d'un retour en arriere.
  
  990 &lt; P &lt;=1000
  La version sera installee, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant a la distribution par defaut ou si la version installee est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installee, sauf s'il existe une version appartenant a une autre distribution ou si la version installee est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installee si aucune version du paquet n'est installee.
  
  P &lt; 0
  Cette priorite empeche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a etablir des priorites qui ne mettront pas votre systeme en danger. Dans ce qui suit, ''branche principale'' designe la branche de Debian que vous avez choisie de suivre en priorite (stable, testing ou sid), les autres depots presents dans le sources.list ne servant qu'a y piocher des paquets si besoin est.


- '''Garder des priorites identiques pour les depots Debian officiels d'une meme branche'''. C'est le comportement par defaut (quand l'on a que les depots de la branche principale dans le sources.list sans preferences). Tout manquement a cette regle casse le comportement par defaut et peut generer des resultats tres dommageables car non prevus par les devellopeurs Debian.


- '''Attribuer une priorite comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; a cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par defaut et a donc une priorite de 990. On comprend donc aisement qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les methodes pour piocher dans les differents depots sont expliquees un peu plus bas, dans le paragraphe ''Comment piocher dans les differents depots du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorite comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; a la branche principale'''. Ceci permet d'installer les paquets a la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installes a partir des ces depots.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent a jours automatiquement si une nouvelle version est placee dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorite a ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences generique du fait des dependances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de depots, etc) sans avoir a decaler toutes les autres entrees dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la differences entre les differentes priorites des depots a la lecture du ''apt-cache policy''.


==== Comment piocher dans les differents depots du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte apres une modification, il vous faut mettre a jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Verifiez ensuite a l'aide de ''apt-cache policy'' que les priorites sont correctes.


Il y a deux manieres d'indiquer a APT d'aller piocher dans des depots differents que ceux de la branche principale (les commandes qui suivent sont valable a la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version superieure a celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour present dans sid parce qu'il est plus recent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dependances sont mieux gerees.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez downgrader la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguee, vous utiliserez cette commande:

   apt-get install ardour/testing


Le probleme c'est que APT voudra remettre a niveau le paquet downgrade lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installee. Pour cela il y a deux possibilites:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour debloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets a mettre a jour, les paquets que vous avez bloque par cette methode y apparaitront precedes d'un '''h'''.


- Soit '''etiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloque ou avec la variable release''' a=now'''.


Par exemple si je veux downgrader ardour de la ''version 1:2.8.11-1'' presente dans sid a la ''version 1:2.8.9-1'' presente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entree dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numero de version a inserer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner a la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entree, ''le paquet ardour qui est installe maintenant sera forcement installe meme s'il s'agit d'un retour en arriere'', donc ne sera pas mis a jour. Pour debloquer le paquet il suffira d'enlever son entree du fichier preferences.


'''N'hesitez pas a simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ca permet de verifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez reellement la commande en enlevant l'option ''-s''. cette option fonctionne egalement avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises a jours (par exemple ''aptitude safe-upgrade -s''), etc... C'est une securite non negligeable.

== Stable ==

L'interet de la branche stable est sa stabilite (etonnant non?). Donc la melanger avec les autres branches est souvent une tres mauvaise idee. '''Si vous avez besoin de paquets plus recents preferez les depots backports, la compilation, ou tout simplement utilisez une autre branche principale a la place!'''

Etant donne qu''''il est fortement deconseille de melanger stable et les branches superieures''', il est preferable de n'avoir que ses entrees dans le sources.list. Le preferences est donc inutile, sauf eventuellement si vous souhaitez utiliser les depots backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adequat dans ce cas peut-etre celui ci:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 # backports
 deb http://www.backports.org/debian lenny-backports main contrib non-free


'''Les preferences des backports ont par defaut une valeur de 1'''. Si vous souhaitez choisir par vous meme quand installer une eventuelle nouvelle version disponible dans ces depots, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installe depuis les backports soit mis a jour automatiquement en cas de nouvelle version disponible dans ces depots, alors vous n'aurez besoin que de cette seule entree dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t lenny-backports paquet
 aptitude install -t lenny-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagne de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises a jour et d'installer normalement des paquets, votre systeme sera exactement dans le meme etat que s'il n'avait que le depots stables sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non present dans les depots stables mais present dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les depots testing dependent de l'arrivee de paquets en provenance de sid. Il se peut donc que ces depots ne soient pas complets ou entrainent des problemes de dependances. '''Installer une testing seule c'est un peu installer une version a trous de Debian puisqu'elle est tres souvent incomplete, du coup l'etiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' a la place de ''upgrade'' (ou les equivalents pour ''aptitude''), car de toutes façons durant le cycle de developpement le ''dist-upgrade'' sera souvent indispensable. N'hesitez pas a user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui la:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par defaut, d'eventuels paquets manquants seront completes par les depots de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables, a plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problemes toutes references aux depots de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complete d'ou l'utilite d'avoir les autres branches facilement accessibles. Cela dit il faut quand meme surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par defaut tous les depots ont la meme priorite''', et a priorites egales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installe. Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets.

Si vous souhaitez utiliser les depots experimental, utilisez un sources.list complet comme celui presente dans le paragraphe Testing. '''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables''', a plus fortes raison ceux de multimedia, mais si vous tenez a ces depots alors utilisez ce fichier preferences pour eviter les problemes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1</text>
      <sha1>qa0uymaf40e71ari5yy3fyri4g921tm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1794</id>
      <parentid>1793</parentid>
      <timestamp>2010-08-01T07:30:34Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Ligne Package */</comment>
      <text xml:space="preserve" bytes="27406">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque dépôt present dans le [[Sources.list|sources.list]] se voit attribuer une priorite d'installation. Par défaut tous les dépôts ont la meme priorité (500 sauf exception, experimental et backports par exemple qui ont une priorite par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de language qui peut nuire a la compréhension du fonctionnement des règles). Cette méthode peut etre utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


C'est pas moi qui le dit, c'est la doc officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieures fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitue d'une ou plusieurs entrees separees par des lignes blanches. Un exemple d'entrees de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entree est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou negatif)


Pour completer au mieux ces entrees nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorite assignee au depot http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront a completer la ligne ''Pin'' des entrees du fichier preferences et sont donc expliquees au paragraphe qui la concerne un peu plus bas.


Detaillons ligne par ligne les entrees du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets defini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira a indiquer quels paquets seront concernes par l'etiquetage de cette entree. Pour cela on se sert d'une (ou plusieures) variable(s) indiquee(s) a la ligne ''release'' du ''apt-cache policy'', dans l'exemple precedent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des depots se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquee dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen tres accessible de synthetiser cela et de voir quelles sont les priorites qu'APT attribut a un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des depots dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entree ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des depots dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent etre ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieures de ces variables dans la ligne ''Pin''. Il n'est pas forcement utile de les inclure toutes, une ou deux bien utilisees peuvent tout a fait etre suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquee la priorite du paquet ou groupe de paquets. Elle doit etre un entier positif ou negatif. Ces priorites sont interpretes a peu pres comme suit:

  P &gt; 1000
  Cette priorite entraine l'installation du paquet meme s'il s'agit d'un retour en arriere.
  
  990 &lt; P &lt;=1000
  La version sera installee, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant a la distribution par defaut ou si la version installee est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installee, sauf s'il existe une version appartenant a une autre distribution ou si la version installee est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installee si aucune version du paquet n'est installee.
  
  P &lt; 0
  Cette priorite empeche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a etablir des priorites qui ne mettront pas votre systeme en danger. Dans ce qui suit, ''branche principale'' designe la branche de Debian que vous avez choisie de suivre en priorite (stable, testing ou sid), les autres depots presents dans le sources.list ne servant qu'a y piocher des paquets si besoin est.


- '''Garder des priorites identiques pour les depots Debian officiels d'une meme branche'''. C'est le comportement par defaut (quand l'on a que les depots de la branche principale dans le sources.list sans preferences). Tout manquement a cette regle casse le comportement par defaut et peut generer des resultats tres dommageables car non prevus par les devellopeurs Debian.


- '''Attribuer une priorite comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; a cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par defaut et a donc une priorite de 990. On comprend donc aisement qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les methodes pour piocher dans les differents depots sont expliquees un peu plus bas, dans le paragraphe ''Comment piocher dans les differents depots du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorite comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; a la branche principale'''. Ceci permet d'installer les paquets a la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installes a partir des ces depots.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent a jours automatiquement si une nouvelle version est placee dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorite a ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences generique du fait des dependances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de depots, etc) sans avoir a decaler toutes les autres entrees dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la differences entre les differentes priorites des depots a la lecture du ''apt-cache policy''.


==== Comment piocher dans les differents depots du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte apres une modification, il vous faut mettre a jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Verifiez ensuite a l'aide de ''apt-cache policy'' que les priorites sont correctes.


Il y a deux manieres d'indiquer a APT d'aller piocher dans des depots differents que ceux de la branche principale (les commandes qui suivent sont valable a la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version superieure a celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour present dans sid parce qu'il est plus recent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dependances sont mieux gerees.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez downgrader la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguee, vous utiliserez cette commande:

   apt-get install ardour/testing


Le probleme c'est que APT voudra remettre a niveau le paquet downgrade lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installee. Pour cela il y a deux possibilites:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour debloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets a mettre a jour, les paquets que vous avez bloque par cette methode y apparaitront precedes d'un '''h'''.


- Soit '''etiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloque ou avec la variable release''' a=now'''.


Par exemple si je veux downgrader ardour de la ''version 1:2.8.11-1'' presente dans sid a la ''version 1:2.8.9-1'' presente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entree dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numero de version a inserer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner a la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entree, ''le paquet ardour qui est installe maintenant sera forcement installe meme s'il s'agit d'un retour en arriere'', donc ne sera pas mis a jour. Pour debloquer le paquet il suffira d'enlever son entree du fichier preferences.


'''N'hesitez pas a simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ca permet de verifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez reellement la commande en enlevant l'option ''-s''. cette option fonctionne egalement avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises a jours (par exemple ''aptitude safe-upgrade -s''), etc... C'est une securite non negligeable.

== Stable ==

L'interet de la branche stable est sa stabilite (etonnant non?). Donc la melanger avec les autres branches est souvent une tres mauvaise idee. '''Si vous avez besoin de paquets plus recents preferez les depots backports, la compilation, ou tout simplement utilisez une autre branche principale a la place!'''

Etant donne qu''''il est fortement deconseille de melanger stable et les branches superieures''', il est preferable de n'avoir que ses entrees dans le sources.list. Le preferences est donc inutile, sauf eventuellement si vous souhaitez utiliser les depots backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adequat dans ce cas peut-etre celui ci:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 # backports
 deb http://www.backports.org/debian lenny-backports main contrib non-free


'''Les preferences des backports ont par defaut une valeur de 1'''. Si vous souhaitez choisir par vous meme quand installer une eventuelle nouvelle version disponible dans ces depots, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installe depuis les backports soit mis a jour automatiquement en cas de nouvelle version disponible dans ces depots, alors vous n'aurez besoin que de cette seule entree dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t lenny-backports paquet
 aptitude install -t lenny-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagne de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises a jour et d'installer normalement des paquets, votre systeme sera exactement dans le meme etat que s'il n'avait que le depots stables sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non present dans les depots stables mais present dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les depots testing dependent de l'arrivee de paquets en provenance de sid. Il se peut donc que ces depots ne soient pas complets ou entrainent des problemes de dependances. '''Installer une testing seule c'est un peu installer une version a trous de Debian puisqu'elle est tres souvent incomplete, du coup l'etiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' a la place de ''upgrade'' (ou les equivalents pour ''aptitude''), car de toutes façons durant le cycle de developpement le ''dist-upgrade'' sera souvent indispensable. N'hesitez pas a user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui la:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par defaut, d'eventuels paquets manquants seront completes par les depots de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables, a plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problemes toutes references aux depots de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complete d'ou l'utilite d'avoir les autres branches facilement accessibles. Cela dit il faut quand meme surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par defaut tous les depots ont la meme priorite''', et a priorites egales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installe. Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets.

Si vous souhaitez utiliser les depots experimental, utilisez un sources.list complet comme celui presente dans le paragraphe Testing. '''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables''', a plus fortes raison ceux de multimedia, mais si vous tenez a ces depots alors utilisez ce fichier preferences pour eviter les problemes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1</text>
      <sha1>tszgzrgsiflk4z67ckp09sq6r8jz1xa</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1795</id>
      <parentid>1794</parentid>
      <timestamp>2010-08-01T07:34:13Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <comment>/* Ligne Pin */</comment>
      <text xml:space="preserve" bytes="27423">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque dépôt present dans le [[Sources.list|sources.list]] se voit attribuer une priorite d'installation. Par défaut tous les dépôts ont la meme priorité (500 sauf exception, experimental et backports par exemple qui ont une priorite par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de language qui peut nuire a la compréhension du fonctionnement des règles). Cette méthode peut etre utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


C'est pas moi qui le dit, c'est la doc officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieures fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitue d'une ou plusieurs entrees separees par des lignes blanches. Un exemple d'entrees de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entree est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou negatif)


Pour completer au mieux ces entrees nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorite assignee au depot http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront a completer la ligne ''Pin'' des entrees du fichier preferences et sont donc expliquees au paragraphe qui la concerne un peu plus bas.


Detaillons ligne par ligne les entrees du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets defini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen tres accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des depots dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entree ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des depots dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieures de ces variables dans la ligne ''Pin''. Il n'est pas forcement utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquee la priorite du paquet ou groupe de paquets. Elle doit etre un entier positif ou negatif. Ces priorites sont interpretes a peu pres comme suit:

  P &gt; 1000
  Cette priorite entraine l'installation du paquet meme s'il s'agit d'un retour en arriere.
  
  990 &lt; P &lt;=1000
  La version sera installee, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant a la distribution par defaut ou si la version installee est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installee, sauf s'il existe une version appartenant a une autre distribution ou si la version installee est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installee si aucune version du paquet n'est installee.
  
  P &lt; 0
  Cette priorite empeche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a etablir des priorites qui ne mettront pas votre systeme en danger. Dans ce qui suit, ''branche principale'' designe la branche de Debian que vous avez choisie de suivre en priorite (stable, testing ou sid), les autres depots presents dans le sources.list ne servant qu'a y piocher des paquets si besoin est.


- '''Garder des priorites identiques pour les depots Debian officiels d'une meme branche'''. C'est le comportement par defaut (quand l'on a que les depots de la branche principale dans le sources.list sans preferences). Tout manquement a cette regle casse le comportement par defaut et peut generer des resultats tres dommageables car non prevus par les devellopeurs Debian.


- '''Attribuer une priorite comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; a cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par defaut et a donc une priorite de 990. On comprend donc aisement qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les methodes pour piocher dans les differents depots sont expliquees un peu plus bas, dans le paragraphe ''Comment piocher dans les differents depots du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorite comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; a la branche principale'''. Ceci permet d'installer les paquets a la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installes a partir des ces depots.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent a jours automatiquement si une nouvelle version est placee dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorite a ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences generique du fait des dependances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de depots, etc) sans avoir a decaler toutes les autres entrees dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la differences entre les differentes priorites des depots a la lecture du ''apt-cache policy''.


==== Comment piocher dans les differents depots du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte apres une modification, il vous faut mettre a jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Verifiez ensuite a l'aide de ''apt-cache policy'' que les priorites sont correctes.


Il y a deux manieres d'indiquer a APT d'aller piocher dans des depots differents que ceux de la branche principale (les commandes qui suivent sont valable a la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version superieure a celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour present dans sid parce qu'il est plus recent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dependances sont mieux gerees.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez downgrader la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguee, vous utiliserez cette commande:

   apt-get install ardour/testing


Le probleme c'est que APT voudra remettre a niveau le paquet downgrade lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installee. Pour cela il y a deux possibilites:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour debloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets a mettre a jour, les paquets que vous avez bloque par cette methode y apparaitront precedes d'un '''h'''.


- Soit '''etiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloque ou avec la variable release''' a=now'''.


Par exemple si je veux downgrader ardour de la ''version 1:2.8.11-1'' presente dans sid a la ''version 1:2.8.9-1'' presente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entree dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numero de version a inserer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner a la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entree, ''le paquet ardour qui est installe maintenant sera forcement installe meme s'il s'agit d'un retour en arriere'', donc ne sera pas mis a jour. Pour debloquer le paquet il suffira d'enlever son entree du fichier preferences.


'''N'hesitez pas a simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ca permet de verifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez reellement la commande en enlevant l'option ''-s''. cette option fonctionne egalement avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises a jours (par exemple ''aptitude safe-upgrade -s''), etc... C'est une securite non negligeable.

== Stable ==

L'interet de la branche stable est sa stabilite (etonnant non?). Donc la melanger avec les autres branches est souvent une tres mauvaise idee. '''Si vous avez besoin de paquets plus recents preferez les depots backports, la compilation, ou tout simplement utilisez une autre branche principale a la place!'''

Etant donne qu''''il est fortement deconseille de melanger stable et les branches superieures''', il est preferable de n'avoir que ses entrees dans le sources.list. Le preferences est donc inutile, sauf eventuellement si vous souhaitez utiliser les depots backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adequat dans ce cas peut-etre celui ci:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 # backports
 deb http://www.backports.org/debian lenny-backports main contrib non-free


'''Les preferences des backports ont par defaut une valeur de 1'''. Si vous souhaitez choisir par vous meme quand installer une eventuelle nouvelle version disponible dans ces depots, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installe depuis les backports soit mis a jour automatiquement en cas de nouvelle version disponible dans ces depots, alors vous n'aurez besoin que de cette seule entree dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t lenny-backports paquet
 aptitude install -t lenny-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagne de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises a jour et d'installer normalement des paquets, votre systeme sera exactement dans le meme etat que s'il n'avait que le depots stables sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non present dans les depots stables mais present dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les depots testing dependent de l'arrivee de paquets en provenance de sid. Il se peut donc que ces depots ne soient pas complets ou entrainent des problemes de dependances. '''Installer une testing seule c'est un peu installer une version a trous de Debian puisqu'elle est tres souvent incomplete, du coup l'etiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' a la place de ''upgrade'' (ou les equivalents pour ''aptitude''), car de toutes façons durant le cycle de developpement le ''dist-upgrade'' sera souvent indispensable. N'hesitez pas a user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui la:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par defaut, d'eventuels paquets manquants seront completes par les depots de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables, a plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problemes toutes references aux depots de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complete d'ou l'utilite d'avoir les autres branches facilement accessibles. Cela dit il faut quand meme surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par defaut tous les depots ont la meme priorite''', et a priorites egales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installe. Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets.

Si vous souhaitez utiliser les depots experimental, utilisez un sources.list complet comme celui presente dans le paragraphe Testing. '''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables''', a plus fortes raison ceux de multimedia, mais si vous tenez a ces depots alors utilisez ce fichier preferences pour eviter les problemes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1</text>
      <sha1>2ob4txlrr8bhjgrneyfpu16yey4dgxu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1796</id>
      <parentid>1795</parentid>
      <timestamp>2010-08-01T12:24:52Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Structure du fichier /etc/apt/preferences */</comment>
      <text xml:space="preserve" bytes="27586">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque dépôt present dans le [[Sources.list|sources.list]] se voit attribuer une priorite d'installation. Par défaut tous les dépôts ont la meme priorité (500 sauf exception, experimental et backports par exemple qui ont une priorite par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de language qui peut nuire a la compréhension du fonctionnement des règles). Cette méthode peut etre utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


C'est pas moi qui le dit, c'est la doc officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieures fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraine l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorite empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts presents dans le sources.list ne servant qu'a y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand l'on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. On comprend donc aisément qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les differents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.


==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte apres une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez downgrader la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguee, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet downgrade lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilites:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux downgrader ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version a insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'interet de la branche stable est sa stabilite (etonnant non?). Donc la melanger avec les autres branches est souvent une tres mauvaise idee. '''Si vous avez besoin de paquets plus recents preferez les depots backports, la compilation, ou tout simplement utilisez une autre branche principale a la place!'''

Etant donne qu''''il est fortement deconseille de melanger stable et les branches superieures''', il est preferable de n'avoir que ses entrees dans le sources.list. Le preferences est donc inutile, sauf eventuellement si vous souhaitez utiliser les depots backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adequat dans ce cas peut-etre celui ci:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 # backports
 deb http://www.backports.org/debian lenny-backports main contrib non-free


'''Les preferences des backports ont par defaut une valeur de 1'''. Si vous souhaitez choisir par vous meme quand installer une eventuelle nouvelle version disponible dans ces depots, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installe depuis les backports soit mis a jour automatiquement en cas de nouvelle version disponible dans ces depots, alors vous n'aurez besoin que de cette seule entree dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t lenny-backports paquet
 aptitude install -t lenny-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagne de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises a jour et d'installer normalement des paquets, votre systeme sera exactement dans le meme etat que s'il n'avait que le depots stables sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non present dans les depots stables mais present dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les depots testing dependent de l'arrivee de paquets en provenance de sid. Il se peut donc que ces depots ne soient pas complets ou entrainent des problemes de dependances. '''Installer une testing seule c'est un peu installer une version a trous de Debian puisqu'elle est tres souvent incomplete, du coup l'etiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' a la place de ''upgrade'' (ou les equivalents pour ''aptitude''), car de toutes façons durant le cycle de developpement le ''dist-upgrade'' sera souvent indispensable. N'hesitez pas a user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui la:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par defaut, d'eventuels paquets manquants seront completes par les depots de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables, a plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problemes toutes references aux depots de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complete d'ou l'utilite d'avoir les autres branches facilement accessibles. Cela dit il faut quand meme surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par defaut tous les depots ont la meme priorite''', et a priorites egales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installe. Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets.

Si vous souhaitez utiliser les depots experimental, utilisez un sources.list complet comme celui presente dans le paragraphe Testing. '''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables''', a plus fortes raison ceux de multimedia, mais si vous tenez a ces depots alors utilisez ce fichier preferences pour eviter les problemes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1</text>
      <sha1>3dovdg10fwk3z2s2snz7mqsk82ub778</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1797</id>
      <parentid>1796</parentid>
      <timestamp>2010-08-01T15:00:15Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Stable */</comment>
      <text xml:space="preserve" bytes="27635">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque dépôt present dans le [[Sources.list|sources.list]] se voit attribuer une priorite d'installation. Par défaut tous les dépôts ont la meme priorité (500 sauf exception, experimental et backports par exemple qui ont une priorite par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de language qui peut nuire a la compréhension du fonctionnement des règles). Cette méthode peut etre utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


C'est pas moi qui le dit, c'est la doc officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieures fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraine l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorite empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts presents dans le sources.list ne servant qu'a y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand l'on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. On comprend donc aisément qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les differents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.


==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte apres une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez downgrader la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguee, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet downgrade lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilites:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux downgrader ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version a insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseille de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 # backports
 deb http://www.backports.org/debian lenny-backports main contrib non-free


'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t lenny-backports paquet
 aptitude install -t lenny-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le mémé état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais present dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les depots testing dependent de l'arrivee de paquets en provenance de sid. Il se peut donc que ces depots ne soient pas complets ou entrainent des problemes de dependances. '''Installer une testing seule c'est un peu installer une version a trous de Debian puisqu'elle est tres souvent incomplete, du coup l'etiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' a la place de ''upgrade'' (ou les equivalents pour ''aptitude''), car de toutes façons durant le cycle de developpement le ''dist-upgrade'' sera souvent indispensable. N'hesitez pas a user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui la:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par defaut, d'eventuels paquets manquants seront completes par les depots de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables, a plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problemes toutes references aux depots de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complete d'ou l'utilite d'avoir les autres branches facilement accessibles. Cela dit il faut quand meme surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par defaut tous les depots ont la meme priorite''', et a priorites egales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installe. Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets.

Si vous souhaitez utiliser les depots experimental, utilisez un sources.list complet comme celui presente dans le paragraphe Testing. '''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables''', a plus fortes raison ceux de multimedia, mais si vous tenez a ces depots alors utilisez ce fichier preferences pour eviter les problemes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1</text>
      <sha1>gdphz25uv6x4ebmz6iodvxyxtc1q93w</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1798</id>
      <parentid>1797</parentid>
      <timestamp>2010-08-01T15:00:56Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Stable */</comment>
      <text xml:space="preserve" bytes="27637">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque dépôt present dans le [[Sources.list|sources.list]] se voit attribuer une priorite d'installation. Par défaut tous les dépôts ont la meme priorité (500 sauf exception, experimental et backports par exemple qui ont une priorite par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de language qui peut nuire a la compréhension du fonctionnement des règles). Cette méthode peut etre utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


C'est pas moi qui le dit, c'est la doc officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieures fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraine l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorite empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts presents dans le sources.list ne servant qu'a y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand l'on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. On comprend donc aisément qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les differents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.


==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte apres une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez downgrader la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguee, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet downgrade lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilites:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux downgrader ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version a insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 # backports
 deb http://www.backports.org/debian lenny-backports main contrib non-free
s

'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t lenny-backports paquet
 aptitude install -t lenny-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le mémé état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais present dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les depots testing dependent de l'arrivee de paquets en provenance de sid. Il se peut donc que ces depots ne soient pas complets ou entrainent des problemes de dependances. '''Installer une testing seule c'est un peu installer une version a trous de Debian puisqu'elle est tres souvent incomplete, du coup l'etiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' a la place de ''upgrade'' (ou les equivalents pour ''aptitude''), car de toutes façons durant le cycle de developpement le ''dist-upgrade'' sera souvent indispensable. N'hesitez pas a user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui la:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par defaut, d'eventuels paquets manquants seront completes par les depots de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables, a plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problemes toutes references aux depots de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complete d'ou l'utilite d'avoir les autres branches facilement accessibles. Cela dit il faut quand meme surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par defaut tous les depots ont la meme priorite''', et a priorites egales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installe. Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets.

Si vous souhaitez utiliser les depots experimental, utilisez un sources.list complet comme celui presente dans le paragraphe Testing. '''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables''', a plus fortes raison ceux de multimedia, mais si vous tenez a ces depots alors utilisez ce fichier preferences pour eviter les problemes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1</text>
      <sha1>p6vn0by7o9ighxoh0ygmegzmkder2ha</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1914</id>
      <parentid>1798</parentid>
      <timestamp>2010-08-10T11:05:45Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>petite correction</comment>
      <text xml:space="preserve" bytes="27635">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque dépôt present dans le [[Sources.list|sources.list]] se voit attribuer une priorite d'installation. Par défaut tous les dépôts ont la meme priorité (500 sauf exception, experimental et backports par exemple qui ont une priorite par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de language qui peut nuire a la compréhension du fonctionnement des règles). Cette méthode peut etre utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


C'est pas moi qui le dit, c'est la doc officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieures fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraine l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorite empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts presents dans le sources.list ne servant qu'a y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand l'on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. On comprend donc aisément qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les differents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.


==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte apres une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez downgrader la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguee, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet downgrade lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilites:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux downgrader ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version a insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 # backports
 deb http://www.backports.org/debian lenny-backports main contrib non-free

'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t lenny-backports paquet
 aptitude install -t lenny-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le mémé état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais present dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les depots testing dependent de l'arrivee de paquets en provenance de sid. Il se peut donc que ces depots ne soient pas complets ou entrainent des problemes de dependances. '''Installer une testing seule c'est un peu installer une version a trous de Debian puisqu'elle est tres souvent incomplete, du coup l'etiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' a la place de ''upgrade'' (ou les equivalents pour ''aptitude''), car de toutes façons durant le cycle de developpement le ''dist-upgrade'' sera souvent indispensable. N'hesitez pas a user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui la:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par defaut, d'eventuels paquets manquants seront completes par les depots de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables, a plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problemes toutes references aux depots de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complete d'ou l'utilite d'avoir les autres branches facilement accessibles. Cela dit il faut quand meme surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par defaut tous les depots ont la meme priorite''', et a priorites egales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installe. Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets.

Si vous souhaitez utiliser les depots experimental, utilisez un sources.list complet comme celui presente dans le paragraphe Testing. '''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables''', a plus fortes raison ceux de multimedia, mais si vous tenez a ces depots alors utilisez ce fichier preferences pour eviter les problemes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1</text>
      <sha1>ntjr0l42ob4kas1xtb45444j6s1r9eu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1915</id>
      <parentid>1914</parentid>
      <timestamp>2010-08-10T11:42:33Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Ligne Pin-Priority */</comment>
      <text xml:space="preserve" bytes="27637">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque dépôt present dans le [[Sources.list|sources.list]] se voit attribuer une priorite d'installation. Par défaut tous les dépôts ont la meme priorité (500 sauf exception, experimental et backports par exemple qui ont une priorite par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de language qui peut nuire a la compréhension du fonctionnement des règles). Cette méthode peut etre utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


C'est pas moi qui le dit, c'est la doc officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieures fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraine l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorite empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand l'on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. On comprend donc aisément qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte apres une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez downgrader la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguee, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet downgrade lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilites:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux downgrader ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version a insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 # backports
 deb http://www.backports.org/debian lenny-backports main contrib non-free

'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t lenny-backports paquet
 aptitude install -t lenny-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le mémé état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais present dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les depots testing dependent de l'arrivee de paquets en provenance de sid. Il se peut donc que ces depots ne soient pas complets ou entrainent des problemes de dependances. '''Installer une testing seule c'est un peu installer une version a trous de Debian puisqu'elle est tres souvent incomplete, du coup l'etiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' a la place de ''upgrade'' (ou les equivalents pour ''aptitude''), car de toutes façons durant le cycle de developpement le ''dist-upgrade'' sera souvent indispensable. N'hesitez pas a user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui la:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par defaut, d'eventuels paquets manquants seront completes par les depots de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables, a plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problemes toutes references aux depots de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complete d'ou l'utilite d'avoir les autres branches facilement accessibles. Cela dit il faut quand meme surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par defaut tous les depots ont la meme priorite''', et a priorites egales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installe. Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets.

Si vous souhaitez utiliser les depots experimental, utilisez un sources.list complet comme celui presente dans le paragraphe Testing. '''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables''', a plus fortes raison ceux de multimedia, mais si vous tenez a ces depots alors utilisez ce fichier preferences pour eviter les problemes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1</text>
      <sha1>09pdxg7swiunkulclyh04k5h4zvfb34</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1916</id>
      <parentid>1915</parentid>
      <timestamp>2010-08-10T11:45:43Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Comment piocher dans les différents dépôts du sources.list? */</comment>
      <text xml:space="preserve" bytes="27647">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque dépôt present dans le [[Sources.list|sources.list]] se voit attribuer une priorite d'installation. Par défaut tous les dépôts ont la meme priorité (500 sauf exception, experimental et backports par exemple qui ont une priorite par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de language qui peut nuire a la compréhension du fonctionnement des règles). Cette méthode peut etre utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


C'est pas moi qui le dit, c'est la doc officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieures fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraine l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorite empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand l'on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. On comprend donc aisément qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version a insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 # backports
 deb http://www.backports.org/debian lenny-backports main contrib non-free

'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t lenny-backports paquet
 aptitude install -t lenny-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le mémé état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais present dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les depots testing dependent de l'arrivee de paquets en provenance de sid. Il se peut donc que ces depots ne soient pas complets ou entrainent des problemes de dependances. '''Installer une testing seule c'est un peu installer une version a trous de Debian puisqu'elle est tres souvent incomplete, du coup l'etiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' a la place de ''upgrade'' (ou les equivalents pour ''aptitude''), car de toutes façons durant le cycle de developpement le ''dist-upgrade'' sera souvent indispensable. N'hesitez pas a user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui la:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par defaut, d'eventuels paquets manquants seront completes par les depots de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables, a plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problemes toutes references aux depots de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complete d'ou l'utilite d'avoir les autres branches facilement accessibles. Cela dit il faut quand meme surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par defaut tous les depots ont la meme priorite''', et a priorites egales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installe. Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets.

Si vous souhaitez utiliser les depots experimental, utilisez un sources.list complet comme celui presente dans le paragraphe Testing. '''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables''', a plus fortes raison ceux de multimedia, mais si vous tenez a ces depots alors utilisez ce fichier preferences pour eviter les problemes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1</text>
      <sha1>da64pxpu9jxuantbpqxn37m2pywg6cx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1917</id>
      <parentid>1916</parentid>
      <timestamp>2010-08-10T15:36:38Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Stable */</comment>
      <text xml:space="preserve" bytes="27647">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque dépôt present dans le [[Sources.list|sources.list]] se voit attribuer une priorite d'installation. Par défaut tous les dépôts ont la meme priorité (500 sauf exception, experimental et backports par exemple qui ont une priorite par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de language qui peut nuire a la compréhension du fonctionnement des règles). Cette méthode peut etre utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


C'est pas moi qui le dit, c'est la doc officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieures fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraine l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorite empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand l'on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. On comprend donc aisément qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version a insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 # backports
 deb http://www.backports.org/debian lenny-backports main contrib non-free

'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t lenny-backports paquet
 aptitude install -t lenny-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les depots testing dependent de l'arrivee de paquets en provenance de sid. Il se peut donc que ces depots ne soient pas complets ou entrainent des problemes de dependances. '''Installer une testing seule c'est un peu installer une version a trous de Debian puisqu'elle est tres souvent incomplete, du coup l'etiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' a la place de ''upgrade'' (ou les equivalents pour ''aptitude''), car de toutes façons durant le cycle de developpement le ''dist-upgrade'' sera souvent indispensable. N'hesitez pas a user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui la:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par defaut, d'eventuels paquets manquants seront completes par les depots de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables, a plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problemes toutes references aux depots de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complete d'ou l'utilite d'avoir les autres branches facilement accessibles. Cela dit il faut quand meme surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par defaut tous les depots ont la meme priorite''', et a priorites egales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installe. Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets.

Si vous souhaitez utiliser les depots experimental, utilisez un sources.list complet comme celui presente dans le paragraphe Testing. '''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables''', a plus fortes raison ceux de multimedia, mais si vous tenez a ces depots alors utilisez ce fichier preferences pour eviter les problemes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1</text>
      <sha1>akxpydjbvvxujw7ko4foc7eknlnc9p1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1918</id>
      <parentid>1917</parentid>
      <timestamp>2010-08-10T15:40:59Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Testing */</comment>
      <text xml:space="preserve" bytes="27687">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque dépôt present dans le [[Sources.list|sources.list]] se voit attribuer une priorite d'installation. Par défaut tous les dépôts ont la meme priorité (500 sauf exception, experimental et backports par exemple qui ont une priorite par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de language qui peut nuire a la compréhension du fonctionnement des règles). Cette méthode peut etre utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


C'est pas moi qui le dit, c'est la doc officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieures fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraine l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorite empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand l'on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. On comprend donc aisément qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version a insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 # backports
 deb http://www.backports.org/debian lenny-backports main contrib non-free

'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t lenny-backports paquet
 aptitude install -t lenny-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorite de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait dispensables, à plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complete d'ou l'utilite d'avoir les autres branches facilement accessibles. Cela dit il faut quand meme surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', evitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par defaut tous les depots ont la meme priorite''', et a priorites egales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installe. Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets.

Si vous souhaitez utiliser les depots experimental, utilisez un sources.list complet comme celui presente dans le paragraphe Testing. '''Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables''', a plus fortes raison ceux de multimedia, mais si vous tenez a ces depots alors utilisez ce fichier preferences pour eviter les problemes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1</text>
      <sha1>073g1l8ljl5t9cv24ab7cglnggji43j</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1919</id>
      <parentid>1918</parentid>
      <timestamp>2010-08-10T15:45:37Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Sid */</comment>
      <text xml:space="preserve" bytes="27730">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque dépôt present dans le [[Sources.list|sources.list]] se voit attribuer une priorite d'installation. Par défaut tous les dépôts ont la meme priorité (500 sauf exception, experimental et backports par exemple qui ont une priorite par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de language qui peut nuire a la compréhension du fonctionnement des règles). Cette méthode peut etre utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


C'est pas moi qui le dit, c'est la doc officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieures fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraine l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorite empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand l'on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. On comprend donc aisément qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version a insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 # backports
 deb http://www.backports.org/debian lenny-backports main contrib non-free

'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t lenny-backports paquet
 aptitude install -t lenny-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorite de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait dispensables, à plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'ou l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. '''Les dépôts experimental ont par défaut une priorité de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait dispensables''', à plus fortes raison ceux de multimedia, mais si vous tenez à ces dépôts alors utilisez ce fichier preferences pour eviter les problemes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1</text>
      <sha1>f52ci412yuxsr5zfo0j8cq0q2ydru9i</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1920</id>
      <parentid>1919</parentid>
      <timestamp>2010-08-10T15:46:46Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <comment>/* Sid */</comment>
      <text xml:space="preserve" bytes="27731">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque dépôt present dans le [[Sources.list|sources.list]] se voit attribuer une priorite d'installation. Par défaut tous les dépôts ont la meme priorité (500 sauf exception, experimental et backports par exemple qui ont une priorite par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de language qui peut nuire a la compréhension du fonctionnement des règles). Cette méthode peut etre utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


C'est pas moi qui le dit, c'est la doc officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieures fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraine l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorite empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand l'on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. On comprend donc aisément qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version a insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 # backports
 deb http://www.backports.org/debian lenny-backports main contrib non-free

'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t lenny-backports paquet
 aptitude install -t lenny-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorite de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait dispensables, à plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'ou l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. '''Les dépôts experimental ont par défaut une priorité de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait dispensables''', à plus fortes raison ceux de multimedia, mais si vous tenez à ces dépôts alors utilisez ce fichier preferences pour eviter les problèmes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1</text>
      <sha1>sxsgzvgli1hpor0u5cl5hhqq7k8wzwo</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1921</id>
      <parentid>1920</parentid>
      <timestamp>2010-08-12T08:50:35Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? */</comment>
      <text xml:space="preserve" bytes="27733">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque dépôt present dans le [[Sources.list|sources.list]] se voit attribuer une priorite d'installation. Par défaut tous les dépôts ont la meme priorité (500 sauf exception, experimental et backports par exemple qui ont une priorite par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de language qui peut nuire a la compréhension du fonctionnement des règles). Cette méthode peut etre utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


C'est pas moi qui le dit, c'est la doc officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieures fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraine l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorite empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand l'on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. On comprend donc aisément qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version a insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 # backports
 deb http://www.backports.org/debian lenny-backports main contrib non-free

'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t lenny-backports paquet
 aptitude install -t lenny-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorite de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait dispensables, à plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'ou l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. '''Les dépôts experimental ont par défaut une priorité de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait dispensables''', à plus fortes raison ceux de multimedia, mais si vous tenez à ces dépôts alors utilisez ce fichier preferences pour eviter les problèmes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1</text>
      <sha1>hucwh0f9619vphdknpmoqu5x7hzt85e</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1922</id>
      <parentid>1921</parentid>
      <timestamp>2010-08-12T08:54:10Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Stable */</comment>
      <text xml:space="preserve" bytes="27736">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque dépôt present dans le [[Sources.list|sources.list]] se voit attribuer une priorite d'installation. Par défaut tous les dépôts ont la meme priorité (500 sauf exception, experimental et backports par exemple qui ont une priorite par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de language qui peut nuire a la compréhension du fonctionnement des règles). Cette méthode peut etre utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


C'est pas moi qui le dit, c'est la doc officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieures fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraine l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorite empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand l'on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. On comprend donc aisément qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version a insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 # backports
 deb http://www.backports.org/debian lenny-backports main contrib non-free

'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t lenny-backports paquet
 aptitude install -t lenny-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorite de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait dispensables, à plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'ou l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. '''Les dépôts experimental ont par défaut une priorité de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait dispensables''', à plus fortes raison ceux de multimedia, mais si vous tenez à ces dépôts alors utilisez ce fichier preferences pour eviter les problèmes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1</text>
      <sha1>metfzipdq3whm5qzvrbtx83uejstnkf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1923</id>
      <parentid>1922</parentid>
      <timestamp>2010-08-12T08:55:49Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Stable */</comment>
      <text xml:space="preserve" bytes="27737">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque dépôt present dans le [[Sources.list|sources.list]] se voit attribuer une priorite d'installation. Par défaut tous les dépôts ont la meme priorité (500 sauf exception, experimental et backports par exemple qui ont une priorite par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de language qui peut nuire a la compréhension du fonctionnement des règles). Cette méthode peut etre utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


C'est pas moi qui le dit, c'est la doc officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieures fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraine l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorite empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand l'on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. On comprend donc aisément qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version a insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 # backports
 deb http://www.backports.org/debian lenny-backports main contrib non-free

'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t lenny-backports paquet
 aptitude install -t lenny-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorite de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait dispensables, à plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'ou l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. '''Les dépôts experimental ont par défaut une priorité de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait dispensables''', à plus fortes raison ceux de multimedia, mais si vous tenez à ces dépôts alors utilisez ce fichier preferences pour eviter les problèmes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1</text>
      <sha1>t5jrumpian1qqzxqk85c1x1gn46jo7y</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1924</id>
      <parentid>1923</parentid>
      <timestamp>2010-08-12T08:56:56Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Testing */</comment>
      <text xml:space="preserve" bytes="27739">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque dépôt present dans le [[Sources.list|sources.list]] se voit attribuer une priorite d'installation. Par défaut tous les dépôts ont la meme priorité (500 sauf exception, experimental et backports par exemple qui ont une priorite par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de language qui peut nuire a la compréhension du fonctionnement des règles). Cette méthode peut etre utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


C'est pas moi qui le dit, c'est la doc officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieures fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraine l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorite empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand l'on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. On comprend donc aisément qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version a insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 # backports
 deb http://www.backports.org/debian lenny-backports main contrib non-free

'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t lenny-backports paquet
 aptitude install -t lenny-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorite de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait dispensables, à plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'ou l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. '''Les dépôts experimental ont par défaut une priorité de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait dispensables''', à plus fortes raison ceux de multimedia, mais si vous tenez à ces dépôts alors utilisez ce fichier preferences pour eviter les problèmes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1</text>
      <sha1>jccvo06ui5og7qkxb27fdhqtlsu9qtu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1925</id>
      <parentid>1924</parentid>
      <timestamp>2010-08-12T08:57:40Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Sid */</comment>
      <text xml:space="preserve" bytes="27741">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque dépôt present dans le [[Sources.list|sources.list]] se voit attribuer une priorite d'installation. Par défaut tous les dépôts ont la meme priorité (500 sauf exception, experimental et backports par exemple qui ont une priorite par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de language qui peut nuire a la compréhension du fonctionnement des règles). Cette méthode peut etre utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


C'est pas moi qui le dit, c'est la doc officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieures fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraine l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorite empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand l'on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. On comprend donc aisément qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version a insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 # backports
 deb http://www.backports.org/debian lenny-backports main contrib non-free

'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t lenny-backports paquet
 aptitude install -t lenny-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorite de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait dispensables, à plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'ou l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. '''Les dépôts experimental ont par défaut une priorité de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait dispensables''', à plus fortes raison ceux de multimedia, mais si vous tenez à ces dépôts alors utilisez ce fichier preferences pour eviter les problèmes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1</text>
      <sha1>2ao7f67wzfinktx6b5uky5g2s6ad7jx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2046</id>
      <parentid>1925</parentid>
      <timestamp>2010-09-07T12:11:12Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>changement de l'adresse des depots backports</comment>
      <text xml:space="preserve" bytes="27737">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque dépôt present dans le [[Sources.list|sources.list]] se voit attribuer une priorite d'installation. Par défaut tous les dépôts ont la meme priorité (500 sauf exception, experimental et backports par exemple qui ont une priorite par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de language qui peut nuire a la compréhension du fonctionnement des règles). Cette méthode peut etre utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


C'est pas moi qui le dit, c'est la doc officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieures fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraine l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorite empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand l'on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. On comprend donc aisément qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version a insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 # backports
deb http://backports.debian.org/debian-backports lenny-backports main 

'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t lenny-backports paquet
 aptitude install -t lenny-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorite de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait dispensables, à plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'ou l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. '''Les dépôts experimental ont par défaut une priorité de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait dispensables''', à plus fortes raison ceux de multimedia, mais si vous tenez à ces dépôts alors utilisez ce fichier preferences pour eviter les problèmes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1</text>
      <sha1>k7rxomjt6fycvdrbw7kemgrfrcj7hyh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2047</id>
      <parentid>2046</parentid>
      <timestamp>2010-09-07T12:13:02Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>correction</comment>
      <text xml:space="preserve" bytes="27738">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque dépôt present dans le [[Sources.list|sources.list]] se voit attribuer une priorite d'installation. Par défaut tous les dépôts ont la meme priorité (500 sauf exception, experimental et backports par exemple qui ont une priorite par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de language qui peut nuire a la compréhension du fonctionnement des règles). Cette méthode peut etre utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


C'est pas moi qui le dit, c'est la doc officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieures fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraine l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorite empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand l'on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. On comprend donc aisément qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version a insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 # backports
 deb http://backports.debian.org/debian-backports lenny-backports main 

'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t lenny-backports paquet
 aptitude install -t lenny-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorite de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait dispensables, à plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'ou l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. '''Les dépôts experimental ont par défaut une priorité de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait dispensables''', à plus fortes raison ceux de multimedia, mais si vous tenez à ces dépôts alors utilisez ce fichier preferences pour eviter les problèmes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1</text>
      <sha1>d09pc4c6ezwt0zkn5lzmphxo35w7x6g</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2048</id>
      <parentid>2047</parentid>
      <timestamp>2010-09-07T12:56:38Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>ajout contrib non-free aux depots backports</comment>
      <text xml:space="preserve" bytes="27755">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque dépôt present dans le [[Sources.list|sources.list]] se voit attribuer une priorite d'installation. Par défaut tous les dépôts ont la meme priorité (500 sauf exception, experimental et backports par exemple qui ont une priorite par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de language qui peut nuire a la compréhension du fonctionnement des règles). Cette méthode peut etre utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


C'est pas moi qui le dit, c'est la doc officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieures fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraine l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorite empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand l'on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. On comprend donc aisément qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version a insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 # backports
 deb http://backports.debian.org/debian-backports lenny-backports main contrib non-free


'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t lenny-backports paquet
 aptitude install -t lenny-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorite de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait dispensables, à plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'ou l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. '''Les dépôts experimental ont par défaut une priorité de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait dispensables''', à plus fortes raison ceux de multimedia, mais si vous tenez à ces dépôts alors utilisez ce fichier preferences pour eviter les problèmes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1</text>
      <sha1>5di1s5dw5679mep87k9v3nihhxenve1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2094</id>
      <parentid>2048</parentid>
      <timestamp>2010-09-15T17:03:52Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="27775">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque dépôt present dans le [[Sources.list|sources.list]] se voit attribuer une priorite d'installation. Par défaut tous les dépôts ont la meme priorité (500 sauf exception, experimental et backports par exemple qui ont une priorite par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de language qui peut nuire a la compréhension du fonctionnement des règles). Cette méthode peut etre utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


C'est pas moi qui le dit, c'est la doc officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieures fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraine l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorite empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand l'on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. On comprend donc aisément qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version a insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 # backports
 deb http://backports.debian.org/debian-backports lenny-backports main contrib non-free


'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t lenny-backports paquet
 aptitude install -t lenny-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorite de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait dispensables, à plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'ou l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. '''Les dépôts experimental ont par défaut une priorité de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait dispensables''', à plus fortes raison ceux de multimedia, mais si vous tenez à ces dépôts alors utilisez ce fichier preferences pour eviter les problèmes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1

[[Catégorie:Apt]]</text>
      <sha1>su6fizvc482zhtq7k5okmnfyzik3g6z</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2674</id>
      <parentid>2094</parentid>
      <timestamp>2011-02-06T13:50:44Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>mise à jour pour squeeze</comment>
      <text xml:space="preserve" bytes="27789">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque dépôt present dans le [[Sources.list|sources.list]] se voit attribuer une priorite d'installation. Par défaut tous les dépôts ont la meme priorité (500 sauf exception, experimental et backports par exemple qui ont une priorite par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de language qui peut nuire a la compréhension du fonctionnement des règles). Cette méthode peut etre utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


C'est pas moi qui le dit, c'est la doc officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieures fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraine l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorite empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand l'on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. On comprend donc aisément qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version a insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # stable security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 # backports
 deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free


'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t squeeze-backports paquet
 aptitude install -t squeeze-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bete et mechant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorite de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait dispensables, à plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'ou l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. '''Les dépôts experimental ont par défaut une priorité de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait dispensables''', à plus fortes raison ceux de multimedia, mais si vous tenez à ces dépôts alors utilisez ce fichier preferences pour eviter les problèmes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1

[[Catégorie:Apt]]</text>
      <sha1>qr8q3h05lw6nistea2yb4c8ya52g96u</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2676</id>
      <parentid>2674</parentid>
      <timestamp>2011-02-06T13:55:26Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>mise à jour pour squeeze</comment>
      <text xml:space="preserve" bytes="27805">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque dépôt present dans le [[Sources.list|sources.list]] se voit attribuer une priorite d'installation. Par défaut tous les dépôts ont la meme priorité (500 sauf exception, experimental et backports par exemple qui ont une priorite par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de language qui peut nuire a la compréhension du fonctionnement des règles). Cette méthode peut etre utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


C'est pas moi qui le dit, c'est la doc officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieures fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraine l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorite empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand l'on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. On comprend donc aisément qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version a insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # stable security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 # backports
 deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free


'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t squeeze-backports paquet
 aptitude install -t squeeze-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # stable security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ wheezy main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ wheezy main contrib non-free
 
 # testing security
 deb http://security.debian.org/ wheezy/updates main contrib non-free
 #deb-src http://security.debian.org/ wheezy/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org wheezy main non-free
 #deb-src http://www.debian-multimedia.org wheezy main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorite de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait dispensables, à plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'ou l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # lenny
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
 # lenny security
 deb http://security.debian.org/ lenny/updates main contrib non-free
 #deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
 # lenny volatile
 deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
 # lenny multimedia
 deb http://www.debian-multimedia.org lenny main non-free
 #deb-src http://www.debian-multimedia.org lenny main non-free
 
 
 # squeeze
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # squeeze security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # squeeze multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. '''Les dépôts experimental ont par défaut une priorité de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait dispensables''', à plus fortes raison ceux de multimedia, mais si vous tenez à ces dépôts alors utilisez ce fichier preferences pour eviter les problèmes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1

[[Catégorie:Apt]]</text>
      <sha1>66q9gv6k7i7lhz1uz1ilfododgtaa4z</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2677</id>
      <parentid>2676</parentid>
      <timestamp>2011-02-06T13:59:03Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>mise à jour pour squeeze</comment>
      <text xml:space="preserve" bytes="27817">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque dépôt present dans le [[Sources.list|sources.list]] se voit attribuer une priorite d'installation. Par défaut tous les dépôts ont la meme priorité (500 sauf exception, experimental et backports par exemple qui ont une priorite par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de language qui peut nuire a la compréhension du fonctionnement des règles). Cette méthode peut etre utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


C'est pas moi qui le dit, c'est la doc officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieures fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraine l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorite empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand l'on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. On comprend donc aisément qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version a insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # stable security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 # backports
 deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free


'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t squeeze-backports paquet
 aptitude install -t squeeze-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # stable security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ wheezy main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ wheezy main contrib non-free
 
 # testing security
 deb http://security.debian.org/ wheezy/updates main contrib non-free
 #deb-src http://security.debian.org/ wheezy/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org wheezy main non-free
 #deb-src http://www.debian-multimedia.org wheezy main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorite de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait dispensables, à plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'ou l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. '''Les dépôts experimental ont par défaut une priorité de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait dispensables''', à plus fortes raison ceux de multimedia, mais si vous tenez à ces dépôts alors utilisez ce fichier preferences pour eviter les problèmes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1

[[Catégorie:Apt]]</text>
      <sha1>ffw90mm8uy4b7c3w83yf4fcyz1s8koi</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2678</id>
      <parentid>2677</parentid>
      <timestamp>2011-02-06T14:02:05Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>corrections</comment>
      <text xml:space="preserve" bytes="27646">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque dépôt present dans le [[Sources.list|sources.list]] se voit attribuer une priorite d'installation. Par défaut tous les dépôts ont la meme priorité (500 sauf exception, experimental et backports par exemple qui ont une priorite par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de language qui peut nuire a la compréhension du fonctionnement des règles). Cette méthode peut etre utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


C'est pas moi qui le dit, c'est la doc officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieures fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraine l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorite empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand l'on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. On comprend donc aisément qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version a insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # stable security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 # backports
 deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free


'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t squeeze-backports paquet
 aptitude install -t squeeze-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorite de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait dispensables, à plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'ou l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. '''Les dépôts experimental ont par défaut une priorité de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait dispensables''', à plus fortes raison ceux de multimedia, mais si vous tenez à ces dépôts alors utilisez ce fichier preferences pour eviter les problèmes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1

[[Catégorie:Apt]]</text>
      <sha1>rr0vn18malv0cvluja937vg43sw0pgk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2679</id>
      <parentid>2678</parentid>
      <timestamp>2011-02-06T16:27:29Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>changement pour les dépôts volatiles qui n'étaient pas corrects</comment>
      <text xml:space="preserve" bytes="27644">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque dépôt present dans le [[Sources.list|sources.list]] se voit attribuer une priorite d'installation. Par défaut tous les dépôts ont la meme priorité (500 sauf exception, experimental et backports par exemple qui ont une priorite par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de language qui peut nuire a la compréhension du fonctionnement des règles). Cette méthode peut etre utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid avec testing et stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


C'est pas moi qui le dit, c'est la doc officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie de quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieures fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évitera de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraine l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorite empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand l'on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. On comprend donc aisément qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version a insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # stable security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 # backports
 deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free


'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t squeeze-backports paquet
 aptitude install -t squeeze-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorite de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait dispensables, à plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'ou l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. '''Les dépôts experimental ont par défaut une priorité de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait dispensables''', à plus fortes raison ceux de multimedia, mais si vous tenez à ces dépôts alors utilisez ce fichier preferences pour eviter les problèmes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1

[[Catégorie:Apt]]</text>
      <sha1>cr2ql7tkrqvz89xw57z3go9sugrwfgd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2680</id>
      <parentid>2679</parentid>
      <timestamp>2011-02-06T18:57:54Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? */</comment>
      <text xml:space="preserve" bytes="27654">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque dépôt present dans le [[Sources.list|sources.list]] se voit attribuer une priorite d'installation. Par défaut tous les dépôts ont la meme priorité (500 sauf exception, experimental et backports par exemple qui ont une priorite par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de language qui peut nuire a la compréhension du fonctionnement des règles). Cette méthode peut etre utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid en restant testing ou stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


C'est pas moi qui le dit, c'est la documentation officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieurs fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évite de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraine l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorite empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand l'on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. On comprend donc aisément qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version a insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # stable security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 # backports
 deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free


'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t squeeze-backports paquet
 aptitude install -t squeeze-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorite de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait dispensables, à plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'ou l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. '''Les dépôts experimental ont par défaut une priorité de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait dispensables''', à plus fortes raison ceux de multimedia, mais si vous tenez à ces dépôts alors utilisez ce fichier preferences pour eviter les problèmes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1

[[Catégorie:Apt]]</text>
      <sha1>1yzvc7a9fwz74iwkrbp7khb84gixsqv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2681</id>
      <parentid>2680</parentid>
      <timestamp>2011-02-06T19:03:14Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Sid */</comment>
      <text xml:space="preserve" bytes="27655">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque dépôt present dans le [[Sources.list|sources.list]] se voit attribuer une priorite d'installation. Par défaut tous les dépôts ont la meme priorité (500 sauf exception, experimental et backports par exemple qui ont une priorite par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de language qui peut nuire a la compréhension du fonctionnement des règles). Cette méthode peut etre utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid en restant testing ou stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


C'est pas moi qui le dit, c'est la documentation officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieurs fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évite de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraine l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorite empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand l'on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. On comprend donc aisément qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version a insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # stable security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 # backports
 deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free


'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t squeeze-backports paquet
 aptitude install -t squeeze-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommande'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorite de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait dispensables, à plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'où l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qui se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus récent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. '''Les dépôts experimental ont par défaut une priorité de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait facultatifs''', à plus fortes raison ceux de multimedia, mais si vous tenez à ces dépôts alors utilisez ce fichier preferences pour éviter les problèmes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1

[[Catégorie:Apt]]</text>
      <sha1>tuhipvapo05e98xxvl3ifxeprc7jdwh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2682</id>
      <parentid>2681</parentid>
      <timestamp>2011-02-06T19:05:44Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Testing */</comment>
      <text xml:space="preserve" bytes="27655">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque dépôt present dans le [[Sources.list|sources.list]] se voit attribuer une priorite d'installation. Par défaut tous les dépôts ont la meme priorité (500 sauf exception, experimental et backports par exemple qui ont une priorite par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de language qui peut nuire a la compréhension du fonctionnement des règles). Cette méthode peut etre utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid en restant testing ou stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


C'est pas moi qui le dit, c'est la documentation officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieurs fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évite de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraine l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorite empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand l'on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. On comprend donc aisément qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version a insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # stable security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 # backports
 deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free


'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t squeeze-backports paquet
 aptitude install -t squeeze-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommandé'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorite de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait facultatifs, à plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'où l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qui se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus récent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. '''Les dépôts experimental ont par défaut une priorité de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait facultatifs''', à plus fortes raison ceux de multimedia, mais si vous tenez à ces dépôts alors utilisez ce fichier preferences pour éviter les problèmes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1

[[Catégorie:Apt]]</text>
      <sha1>1tvrexlodbifoqfawgnpwfabeqm9pgi</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2683</id>
      <parentid>2682</parentid>
      <timestamp>2011-02-06T19:06:45Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Testing */</comment>
      <text xml:space="preserve" bytes="27656">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque dépôt present dans le [[Sources.list|sources.list]] se voit attribuer une priorite d'installation. Par défaut tous les dépôts ont la meme priorité (500 sauf exception, experimental et backports par exemple qui ont une priorite par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de language qui peut nuire a la compréhension du fonctionnement des règles). Cette méthode peut etre utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid en restant testing ou stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


C'est pas moi qui le dit, c'est la documentation officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieurs fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évite de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraine l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorite empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand l'on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. On comprend donc aisément qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version a insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # stable security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 # backports
 deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free


'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t squeeze-backports paquet
 aptitude install -t squeeze-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommandé'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorité de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait facultatifs, à plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'où l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qui se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus récent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. '''Les dépôts experimental ont par défaut une priorité de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait facultatifs''', à plus fortes raison ceux de multimedia, mais si vous tenez à ces dépôts alors utilisez ce fichier preferences pour éviter les problèmes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1

[[Catégorie:Apt]]</text>
      <sha1>78qnreoymppl0ke9alti7fqty2pe2t5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2684</id>
      <parentid>2683</parentid>
      <timestamp>2011-02-06T19:11:17Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Comment piocher dans les différents dépôts du sources.list? */</comment>
      <text xml:space="preserve" bytes="27657">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque dépôt present dans le [[Sources.list|sources.list]] se voit attribuer une priorite d'installation. Par défaut tous les dépôts ont la meme priorité (500 sauf exception, experimental et backports par exemple qui ont une priorite par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de language qui peut nuire a la compréhension du fonctionnement des règles). Cette méthode peut etre utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid en restant testing ou stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


C'est pas moi qui le dit, c'est la documentation officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieurs fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évite de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraine l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorite empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand l'on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. On comprend donc aisément qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version à insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # stable security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 # backports
 deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free


'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t squeeze-backports paquet
 aptitude install -t squeeze-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommandé'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorité de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait facultatifs, à plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'où l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qui se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus récent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. '''Les dépôts experimental ont par défaut une priorité de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait facultatifs''', à plus fortes raison ceux de multimedia, mais si vous tenez à ces dépôts alors utilisez ce fichier preferences pour éviter les problèmes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1

[[Catégorie:Apt]]</text>
      <sha1>oben9wsarptgywhbc2500u9p6sekp9b</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2688</id>
      <parentid>2684</parentid>
      <timestamp>2011-02-08T03:36:18Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>Re-correction pour Volatile</comment>
      <text xml:space="preserve" bytes="27617">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque dépôt present dans le [[Sources.list|sources.list]] se voit attribuer une priorite d'installation. Par défaut tous les dépôts ont la meme priorité (500 sauf exception, experimental et backports par exemple qui ont une priorite par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de language qui peut nuire a la compréhension du fonctionnement des règles). Cette méthode peut etre utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid en restant testing ou stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


C'est pas moi qui le dit, c'est la documentation officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieurs fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évite de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraine l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorite empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand l'on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. On comprend donc aisément qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version à insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # stable security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # stable multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 # backports
 deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free


'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t squeeze-backports paquet
 aptitude install -t squeeze-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommandé'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorité de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait facultatifs, à plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'où l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qui se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus récent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. '''Les dépôts experimental ont par défaut une priorité de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait facultatifs''', à plus fortes raison ceux de multimedia, mais si vous tenez à ces dépôts alors utilisez ce fichier preferences pour éviter les problèmes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1

[[Catégorie:Apt]]</text>
      <sha1>4ybsrw3pjarwcm4pkknye7sv51ehicc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2689</id>
      <parentid>2688</parentid>
      <timestamp>2011-02-08T03:38:21Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>Re-correction pour Volatile</comment>
      <text xml:space="preserve" bytes="27597">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque dépôt present dans le [[Sources.list|sources.list]] se voit attribuer une priorite d'installation. Par défaut tous les dépôts ont la meme priorité (500 sauf exception, experimental et backports par exemple qui ont une priorite par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de language qui peut nuire a la compréhension du fonctionnement des règles). Cette méthode peut etre utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid en restant testing ou stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


C'est pas moi qui le dit, c'est la documentation officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieurs fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évite de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraine l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorite empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand l'on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. On comprend donc aisément qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version à insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # stable security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # stable multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 # backports
 deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free


'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t squeeze-backports paquet
 aptitude install -t squeeze-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommandé'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorité de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait facultatifs, à plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'où l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qui se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 #deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus récent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. '''Les dépôts experimental ont par défaut une priorité de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait facultatifs''', à plus fortes raison ceux de multimedia, mais si vous tenez à ces dépôts alors utilisez ce fichier preferences pour éviter les problèmes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1

[[Catégorie:Apt]]</text>
      <sha1>jd9w0dniymakfsc3vb7g5p00pjsio49</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2690</id>
      <parentid>2689</parentid>
      <timestamp>2011-02-08T03:38:59Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>Re-correction pour Volatile</comment>
      <text xml:space="preserve" bytes="27577">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi meme'''.

Chaque dépôt present dans le [[Sources.list|sources.list]] se voit attribuer une priorite d'installation. Par défaut tous les dépôts ont la meme priorité (500 sauf exception, experimental et backports par exemple qui ont une priorite par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de language qui peut nuire a la compréhension du fonctionnement des règles). Cette méthode peut etre utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid en restant testing ou stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre systeme.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


C'est pas moi qui le dit, c'est la documentation officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieurs fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évite de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraine l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorite empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand l'on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. On comprend donc aisément qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version à insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # stable security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # stable multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 # backports
 deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free


'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t squeeze-backports paquet
 aptitude install -t squeeze-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommandé'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorité de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait facultatifs, à plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'où l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qui se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus récent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. '''Les dépôts experimental ont par défaut une priorité de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait facultatifs''', à plus fortes raison ceux de multimedia, mais si vous tenez à ces dépôts alors utilisez ce fichier preferences pour éviter les problèmes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1

[[Catégorie:Apt]]</text>
      <sha1>5327pajwheu1dfqss6gpfo50kdmi4o4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2718</id>
      <parentid>2690</parentid>
      <timestamp>2011-02-21T12:16:12Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? */</comment>
      <text xml:space="preserve" bytes="27588">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi même'''.

Chaque dépôt présent dans le [[Sources.list|sources.list]] se voit attribuer une priorité d'installation. Par défaut tous les dépôts ont la même priorité (500 sauf exception, experimental et backports par exemple qui ont une priorité par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par défaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de langage qui peut nuire à la compréhension du fonctionnement des règles). Cette méthode peut être utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid en restant testing ou stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre système.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


Ce n'est pas moi qui le dit, c'est la documentation officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieurs fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évite de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraine l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente.
  
  500 &lt; P &lt;=990
  La version sera installee, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus recente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus recente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorite empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand l'on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. On comprend donc aisément qu'avoir une priorite =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version à insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # stable security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # stable multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 # backports
 deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free


'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t squeeze-backports paquet
 aptitude install -t squeeze-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommandé'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorité de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait facultatifs, à plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'où l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qui se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus récent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. '''Les dépôts experimental ont par défaut une priorité de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait facultatifs''', à plus fortes raison ceux de multimedia, mais si vous tenez à ces dépôts alors utilisez ce fichier preferences pour éviter les problèmes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1

[[Catégorie:Apt]]</text>
      <sha1>2sn9okc2qupxbhyk6032a3cs69ko428</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2719</id>
      <parentid>2718</parentid>
      <timestamp>2011-02-21T12:26:18Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Structure du fichier /etc/apt/preferences */</comment>
      <text xml:space="preserve" bytes="27604">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi même'''.

Chaque dépôt présent dans le [[Sources.list|sources.list]] se voit attribuer une priorité d'installation. Par défaut tous les dépôts ont la même priorité (500 sauf exception, experimental et backports par exemple qui ont une priorité par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par défaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de langage qui peut nuire à la compréhension du fonctionnement des règles). Cette méthode peut être utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid en restant testing ou stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre système.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


Ce n'est pas moi qui le dit, c'est la documentation officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieurs fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évite de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des résultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraîne l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, même si elle n'appartient pas à la distribution par défaut ; mais elle ne sera pas installée si la version installée est plus récente.
  
  500 &lt; P &lt;=990
  La version sera installée, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus récente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus récente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorité empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorité de 990. On comprend donc aisément qu'avoir une priorité =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces dépôts lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numéro de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version à insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer réellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # stable security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # stable multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 # backports
 deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free


'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t squeeze-backports paquet
 aptitude install -t squeeze-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommandé'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorité de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait facultatifs, à plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'où l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qui se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus récent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. '''Les dépôts experimental ont par défaut une priorité de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait facultatifs''', à plus fortes raison ceux de multimedia, mais si vous tenez à ces dépôts alors utilisez ce fichier preferences pour éviter les problèmes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1

[[Catégorie:Apt]]</text>
      <sha1>nadenlcvwzq0d5d305lupj8mly5ykzi</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2720</id>
      <parentid>2719</parentid>
      <timestamp>2011-02-21T12:30:08Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Stable */</comment>
      <text xml:space="preserve" bytes="27607">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi même'''.

Chaque dépôt présent dans le [[Sources.list|sources.list]] se voit attribuer une priorité d'installation. Par défaut tous les dépôts ont la même priorité (500 sauf exception, experimental et backports par exemple qui ont une priorité par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par défaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de langage qui peut nuire à la compréhension du fonctionnement des règles). Cette méthode peut être utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid en restant testing ou stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre système.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


Ce n'est pas moi qui le dit, c'est la documentation officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieurs fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évite de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des résultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraîne l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, même si elle n'appartient pas à la distribution par défaut ; mais elle ne sera pas installée si la version installée est plus récente.
  
  500 &lt; P &lt;=990
  La version sera installée, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus récente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus récente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorité empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorité de 990. On comprend donc aisément qu'avoir une priorité =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces dépôts lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numéro de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version à insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer réellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # stable security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # stable multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 
 # backports
 deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free


'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t squeeze-backports paquet
 aptitude install -t squeeze-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en dépit du bon sens et malgré ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommandé'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorité de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait facultatifs, à plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'où l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qui se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus récent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. '''Les dépôts experimental ont par défaut une priorité de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait facultatifs''', à plus fortes raison ceux de multimedia, mais si vous tenez à ces dépôts alors utilisez ce fichier preferences pour éviter les problèmes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1

[[Catégorie:Apt]]</text>
      <sha1>b8cep3dgvcr6gl2j3vl9d806bwrqsm6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3042</id>
      <parentid>2720</parentid>
      <timestamp>2011-06-09T12:53:58Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>suppression de multimedia dans le paragraphe stable</comment>
      <text xml:space="preserve" bytes="27027">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi même'''.

Chaque dépôt présent dans le [[Sources.list|sources.list]] se voit attribuer une priorité d'installation. Par défaut tous les dépôts ont la même priorité (500 sauf exception, experimental et backports par exemple qui ont une priorité par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par défaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de langage qui peut nuire à la compréhension du fonctionnement des règles). Cette méthode peut être utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid en restant testing ou stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre système.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


Ce n'est pas moi qui le dit, c'est la documentation officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieurs fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évite de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des résultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraîne l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, même si elle n'appartient pas à la distribution par défaut ; mais elle ne sera pas installée si la version installée est plus récente.
  
  500 &lt; P &lt;=990
  La version sera installée, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus récente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus récente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorité empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorité de 990. On comprend donc aisément qu'avoir une priorité =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces dépôts lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numéro de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version à insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer réellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # stable security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # backports
 deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free


'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t squeeze-backports paquet
 aptitude install -t squeeze-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en dépit du bon sens et malgré ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommandé'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorité de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait facultatifs, à plus fortes raison ceux de experimental multimedia, vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences.'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'où l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qui se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus récent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. '''Les dépôts experimental ont par défaut une priorité de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait facultatifs''', à plus fortes raison ceux de multimedia, mais si vous tenez à ces dépôts alors utilisez ce fichier preferences pour éviter les problèmes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1

[[Catégorie:Apt]]</text>
      <sha1>9d7bjm0z8x520b9q1z89pah2icyy3i2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3043</id>
      <parentid>3042</parentid>
      <timestamp>2011-06-09T12:54:46Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>suppression de multimedia dans le paragraphe testing</comment>
      <text xml:space="preserve" bytes="26059">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi même'''.

Chaque dépôt présent dans le [[Sources.list|sources.list]] se voit attribuer une priorité d'installation. Par défaut tous les dépôts ont la même priorité (500 sauf exception, experimental et backports par exemple qui ont une priorité par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par défaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de langage qui peut nuire à la compréhension du fonctionnement des règles). Cette méthode peut être utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid en restant testing ou stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre système.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


Ce n'est pas moi qui le dit, c'est la documentation officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieurs fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évite de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des résultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraîne l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, même si elle n'appartient pas à la distribution par défaut ; mais elle ne sera pas installée si la version installée est plus récente.
  
  500 &lt; P &lt;=990
  La version sera installée, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus récente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus récente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorité empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorité de 990. On comprend donc aisément qu'avoir une priorité =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces dépôts lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numéro de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version à insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer réellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # stable security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # backports
 deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free


'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t squeeze-backports paquet
 aptitude install -t squeeze-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en dépit du bon sens et malgré ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommandé'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorité de 1. Autant dire que les dépôts experimental sont tout à fait facultatifs'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'où l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qui se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # stable multimedia
 deb http://www.debian-multimedia.org stable main non-free
 #deb-src http://www.debian-multimedia.org stable main non-free
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus récent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. '''Les dépôts experimental ont par défaut une priorité de 1, sauf ceux des dépôts experimental multimedia qui sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait facultatifs''', à plus fortes raison ceux de multimedia, mais si vous tenez à ces dépôts alors utilisez ce fichier preferences pour éviter les problèmes:


 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
 Pin-Priority: 1

[[Catégorie:Apt]]</text>
      <sha1>s4k8d6ztptcclxci8yz6fsj5tsv2s43</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3044</id>
      <parentid>3043</parentid>
      <timestamp>2011-06-09T12:55:28Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>suppression de multimedia dans le paragraphe sid</comment>
      <text xml:space="preserve" bytes="25247">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi même'''.

Chaque dépôt présent dans le [[Sources.list|sources.list]] se voit attribuer une priorité d'installation. Par défaut tous les dépôts ont la même priorité (500 sauf exception, experimental et backports par exemple qui ont une priorité par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par défaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de langage qui peut nuire à la compréhension du fonctionnement des règles). Cette méthode peut être utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid en restant testing ou stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre système.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


Ce n'est pas moi qui le dit, c'est la documentation officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieurs fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évite de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des résultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraîne l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, même si elle n'appartient pas à la distribution par défaut ; mais elle ne sera pas installée si la version installée est plus récente.
  
  500 &lt; P &lt;=990
  La version sera installée, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus récente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus récente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorité empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorité de 990. On comprend donc aisément qu'avoir une priorité =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces dépôts lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numéro de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version à insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer réellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # stable security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # backports
 deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free


'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t squeeze-backports paquet
 aptitude install -t squeeze-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en dépit du bon sens et malgré ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommandé'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorité de 1. Autant dire que les dépôts experimental sont tout à fait facultatifs'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'où l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qui se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus récent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. '''Les dépôts experimental ont par défaut une priorité de 1. Autant dire que les dépôts experimental sont tout à fait facultatifs'''</text>
      <sha1>l73cj3sqn06vv8eyzplve7edqwfzepc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3045</id>
      <parentid>3044</parentid>
      <timestamp>2011-06-09T13:00:01Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>légère correction</comment>
      <text xml:space="preserve" bytes="25208">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi même'''.

Chaque dépôt présent dans le [[Sources.list|sources.list]] se voit attribuer une priorité d'installation. Par défaut tous les dépôts ont la même priorité (500 sauf exception, experimental et backports par exemple qui ont une priorité par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par défaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de langage qui peut nuire à la compréhension du fonctionnement des règles). Cette méthode peut être utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid en restant testing ou stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre système.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


Ce n'est pas moi qui le dit, c'est la documentation officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieurs fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évite de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des résultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraîne l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, même si elle n'appartient pas à la distribution par défaut ; mais elle ne sera pas installée si la version installée est plus récente.
  
  500 &lt; P &lt;=990
  La version sera installée, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus récente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus récente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorité empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorité de 990. On comprend donc aisément qu'avoir une priorité =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces dépôts lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numéro de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version à insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer réellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # stable security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # backports
 deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free


'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t squeeze-backports paquet
 aptitude install -t squeeze-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en dépit du bon sens et malgré ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommandé'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorité de 1 et sont tout à fait facultatifs!'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'où l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qui se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus récent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. '''Les dépôts experimental ont par défaut une priorité de 1. Autant dire que les dépôts experimental sont tout à fait facultatifs'''</text>
      <sha1>k9leju7xta1doqppr7dsxz16g3ic01o</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3046</id>
      <parentid>3045</parentid>
      <timestamp>2011-06-09T13:01:28Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>légère correction</comment>
      <text xml:space="preserve" bytes="25170">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi même'''.

Chaque dépôt présent dans le [[Sources.list|sources.list]] se voit attribuer une priorité d'installation. Par défaut tous les dépôts ont la même priorité (500 sauf exception, experimental et backports par exemple qui ont une priorité par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par défaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de langage qui peut nuire à la compréhension du fonctionnement des règles). Cette méthode peut être utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid en restant testing ou stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre système.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


Ce n'est pas moi qui le dit, c'est la documentation officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieurs fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évite de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des résultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraîne l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, même si elle n'appartient pas à la distribution par défaut ; mais elle ne sera pas installée si la version installée est plus récente.
  
  500 &lt; P &lt;=990
  La version sera installée, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus récente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus récente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorité empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorité de 990. On comprend donc aisément qu'avoir une priorité =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces dépôts lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numéro de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version à insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer réellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # stable security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # backports
 deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free


'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t squeeze-backports paquet
 aptitude install -t squeeze-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en dépit du bon sens et malgré ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommandé'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorité de 1 et sont tout à fait facultatifs!'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'où l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qui se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus récent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. 
'''Les dépôts experimental ont par défaut une priorité de 1 et sont tout à fait facultatifs!'''</text>
      <sha1>i0di8vgoj2cmb4veszsuukqadcx3zl7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3047</id>
      <parentid>3046</parentid>
      <timestamp>2011-06-09T15:35:17Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>Ajout du paragraphe multimedia</comment>
      <text xml:space="preserve" bytes="27422">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi même'''.

Chaque dépôt présent dans le [[Sources.list|sources.list]] se voit attribuer une priorité d'installation. Par défaut tous les dépôts ont la même priorité (500 sauf exception, experimental et backports par exemple qui ont une priorité par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par défaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de langage qui peut nuire à la compréhension du fonctionnement des règles). Cette méthode peut être utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid en restant testing ou stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre système.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


Ce n'est pas moi qui le dit, c'est la documentation officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieurs fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évite de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Multimédia ==

'''Les dépôts multimedia ne sont pas des dépôts officiels et peuvent troubler la stabilité de votre système'''. Si vous souhaitez les utiliser quand même, assurez vous d'avoir une bonne raison pour cela et '''attribuez leur une priorité inférieure à celles des dépôts officiels'''.

Les adresses de ces dépôts à ajouter au sources.list sont les suivantes :

Pour stable :

 # stable multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 

Pour testing :
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free


Pour sid :
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Une ou plusieures entrées de ce style dans le fichier preferences devraient éviter les problèmes :

 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=BRANCHE UTILISÉE
 Pin-Priority: 200


Ainsi si vous utilisez unstable et testing dans votre sources.list, vous obtiendrez ces entrées :

 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=unstable
 Pin-Priority: 200
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=testing
 Pin-Priority: 200


Il existe aussi des dépôts multimedia pour la branche experimental :

 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


'''Les dépôts experimental officiels ont par défaut une priorité de 1, par contre les dépôts experimental multimedia sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait facultatifs, à plus forte raison ceux de experimental multimedia. Vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences. Mais si vous souhaitez quand même utiliser les dépôts experimental multimedia, ajoutez l'entrée qui suit à votre fichier preferences :'''

 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des résultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraîne l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, même si elle n'appartient pas à la distribution par défaut ; mais elle ne sera pas installée si la version installée est plus récente.
  
  500 &lt; P &lt;=990
  La version sera installée, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus récente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus récente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorité empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorité de 990. On comprend donc aisément qu'avoir une priorité =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces dépôts lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numéro de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version à insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer réellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # stable security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # backports
 deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free


'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t squeeze-backports paquet
 aptitude install -t squeeze-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en dépit du bon sens et malgré ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommandé'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorité de 1 et sont tout à fait facultatifs!'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'où l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qui se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus récent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. 
'''Les dépôts experimental ont par défaut une priorité de 1 et sont tout à fait facultatifs!'''</text>
      <sha1>d4s7qoohyhnmv1v1gnkomb9p097ftbc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3048</id>
      <parentid>3047</parentid>
      <timestamp>2011-06-09T17:30:11Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>erreur de mise en page corrigée</comment>
      <text xml:space="preserve" bytes="27422">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi même'''.

Chaque dépôt présent dans le [[Sources.list|sources.list]] se voit attribuer une priorité d'installation. Par défaut tous les dépôts ont la même priorité (500 sauf exception, experimental et backports par exemple qui ont une priorité par défaut de 1), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par défaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de langage qui peut nuire à la compréhension du fonctionnement des règles). Cette méthode peut être utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid en restant testing ou stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre système.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


Ce n'est pas moi qui le dit, c'est la documentation officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieurs fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évite de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des résultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraîne l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, même si elle n'appartient pas à la distribution par défaut ; mais elle ne sera pas installée si la version installée est plus récente.
  
  500 &lt; P &lt;=990
  La version sera installée, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus récente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus récente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorité empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorité de 990. On comprend donc aisément qu'avoir une priorité =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces dépôts lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numéro de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version à insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer réellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # stable security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # backports
 deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free


'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t squeeze-backports paquet
 aptitude install -t squeeze-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en dépit du bon sens et malgré ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommandé'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorité de 1 et sont tout à fait facultatifs!'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'où l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qui se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus récent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. 
'''Les dépôts experimental ont par défaut une priorité de 1 et sont tout à fait facultatifs!'''

== Multimédia ==

'''Les dépôts multimedia ne sont pas des dépôts officiels et peuvent troubler la stabilité de votre système'''. Si vous souhaitez les utiliser quand même, assurez vous d'avoir une bonne raison pour cela et '''attribuez leur une priorité inférieure à celles des dépôts officiels'''.

Les adresses de ces dépôts à ajouter au sources.list sont les suivantes :

Pour stable :

 # stable multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 

Pour testing :
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free


Pour sid :
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Une ou plusieures entrées de ce style dans le fichier preferences devraient éviter les problèmes :

 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=BRANCHE UTILISÉE
 Pin-Priority: 200


Ainsi si vous utilisez unstable et testing dans votre sources.list, vous obtiendrez ces entrées :

 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=unstable
 Pin-Priority: 200
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=testing
 Pin-Priority: 200


Il existe aussi des dépôts multimedia pour la branche experimental :

 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


'''Les dépôts experimental officiels ont par défaut une priorité de 1, par contre les dépôts experimental multimedia sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait facultatifs, à plus forte raison ceux de experimental multimedia. Vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences. Mais si vous souhaitez quand même utiliser les dépôts experimental multimedia, ajoutez l'entrée qui suit à votre fichier preferences :'''

 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1</text>
      <sha1>ngsj7hcoxmunx18z8y872irgvehnswe</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3494</id>
      <parentid>3048</parentid>
      <timestamp>2011-10-24T17:03:58Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>Les dépôts backports ont une priorité de 100</comment>
      <text xml:space="preserve" bytes="27475">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi même'''.

Chaque dépôt présent dans le [[Sources.list|sources.list]] se voit attribuer une priorité d'installation. Par défaut tous les dépôts ont la même priorité (500 sauf exception, les dépôts experimental par exemple qui ont une priorité par défaut de 1, les dépôts backports qui ont une priorité de 100), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par défaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de langage qui peut nuire à la compréhension du fonctionnement des règles). Cette méthode peut être utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid en restant testing ou stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre système.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


Ce n'est pas moi qui le dit, c'est la documentation officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieurs fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évite de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des résultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraîne l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, même si elle n'appartient pas à la distribution par défaut ; mais elle ne sera pas installée si la version installée est plus récente.
  
  500 &lt; P &lt;=990
  La version sera installée, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus récente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus récente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorité empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorité de 990. On comprend donc aisément qu'avoir une priorité =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces dépôts lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numéro de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version à insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer réellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le preference est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # stable security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # backports
 deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free


'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t squeeze-backports paquet
 aptitude install -t squeeze-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en dépit du bon sens et malgré ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommandé'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorité de 1 et sont tout à fait facultatifs!'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'où l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qui se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus récent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. 
'''Les dépôts experimental ont par défaut une priorité de 1 et sont tout à fait facultatifs!'''

== Multimédia ==

'''Les dépôts multimedia ne sont pas des dépôts officiels et peuvent troubler la stabilité de votre système'''. Si vous souhaitez les utiliser quand même, assurez vous d'avoir une bonne raison pour cela et '''attribuez leur une priorité inférieure à celles des dépôts officiels'''.

Les adresses de ces dépôts à ajouter au sources.list sont les suivantes :

Pour stable :

 # stable multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 

Pour testing :
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free


Pour sid :
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Une ou plusieures entrées de ce style dans le fichier preferences devraient éviter les problèmes :

 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=BRANCHE UTILISÉE
 Pin-Priority: 200


Ainsi si vous utilisez unstable et testing dans votre sources.list, vous obtiendrez ces entrées :

 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=unstable
 Pin-Priority: 200
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=testing
 Pin-Priority: 200


Il existe aussi des dépôts multimedia pour la branche experimental :

 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


'''Les dépôts experimental officiels ont par défaut une priorité de 1, par contre les dépôts experimental multimedia sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait facultatifs, à plus forte raison ceux de experimental multimedia. Vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences. Mais si vous souhaitez quand même utiliser les dépôts experimental multimedia, ajoutez l'entrée qui suit à votre fichier preferences :'''

 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1</text>
      <sha1>1xisngera7eoib13z0noarh80nkxlpe</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3495</id>
      <parentid>3494</parentid>
      <timestamp>2011-10-24T17:06:25Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>Correction</comment>
      <text xml:space="preserve" bytes="27484">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi même'''.

Chaque dépôt présent dans le [[Sources.list|sources.list]] se voit attribuer une priorité d'installation. Par défaut tous les dépôts ont la même priorité (500 sauf exception, les dépôts experimental par exemple qui ont une priorité par défaut de 1, les dépôts backports qui ont une priorité de 100), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par défaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de langage qui peut nuire à la compréhension du fonctionnement des règles). Cette méthode peut être utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid en restant testing ou stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre système.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


Ce n'est pas moi qui le dit, c'est la documentation officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieurs fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évite de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des résultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraîne l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, même si elle n'appartient pas à la distribution par défaut ; mais elle ne sera pas installée si la version installée est plus récente.
  
  500 &lt; P &lt;=990
  La version sera installée, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus récente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus récente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorité empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorité de 990. On comprend donc aisément qu'avoir une priorité =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces dépôts lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numéro de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version à insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer réellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le fichier preferences est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # stable security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # backports
 deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free


'''Les préférences des backports ont par défaut une valeur de 1'''. Si vous souhaitez choisir par vous même quand installer une éventuelle nouvelle version disponible dans ces dépôts, vous n'avez pas besoin de preferences.
Si vous souhaitez que le paquet installé depuis les backports soit mis à jour automatiquement en cas de nouvelle version disponible dans ces dépôts, alors vous n'aurez besoin que de cette seule entrée dans le fichier preferences:

 Package: *
 Pin: release a=lenny-backports
 Pin-Priority: 200


Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t squeeze-backports paquet
 aptitude install -t squeeze-backports paquet


Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php site des backports] (en anglais)


Si en dépit du bon sens et malgré ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommandé'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorité de 1 et sont tout à fait facultatifs!'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'où l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qui se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus récent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. 
'''Les dépôts experimental ont par défaut une priorité de 1 et sont tout à fait facultatifs!'''

== Multimédia ==

'''Les dépôts multimedia ne sont pas des dépôts officiels et peuvent troubler la stabilité de votre système'''. Si vous souhaitez les utiliser quand même, assurez vous d'avoir une bonne raison pour cela et '''attribuez leur une priorité inférieure à celles des dépôts officiels'''.

Les adresses de ces dépôts à ajouter au sources.list sont les suivantes :

Pour stable :

 # stable multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 

Pour testing :
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free


Pour sid :
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Une ou plusieures entrées de ce style dans le fichier preferences devraient éviter les problèmes :

 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=BRANCHE UTILISÉE
 Pin-Priority: 200


Ainsi si vous utilisez unstable et testing dans votre sources.list, vous obtiendrez ces entrées :

 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=unstable
 Pin-Priority: 200
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=testing
 Pin-Priority: 200


Il existe aussi des dépôts multimedia pour la branche experimental :

 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


'''Les dépôts experimental officiels ont par défaut une priorité de 1, par contre les dépôts experimental multimedia sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait facultatifs, à plus forte raison ceux de experimental multimedia. Vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences. Mais si vous souhaitez quand même utiliser les dépôts experimental multimedia, ajoutez l'entrée qui suit à votre fichier preferences :'''

 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1</text>
      <sha1>9ic9sdkjabgsi5f1azib5mehvq8bhpn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3496</id>
      <parentid>3495</parentid>
      <timestamp>2011-10-24T17:09:04Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>Les dépôts backports ont une priorité de 100</comment>
      <text xml:space="preserve" bytes="27023">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi même'''.

Chaque dépôt présent dans le [[Sources.list|sources.list]] se voit attribuer une priorité d'installation. Par défaut tous les dépôts ont la même priorité (500 sauf exception, les dépôts experimental par exemple qui ont une priorité par défaut de 1, les dépôts backports qui ont une priorité de 100), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par défaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de langage qui peut nuire à la compréhension du fonctionnement des règles). Cette méthode peut être utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid en restant testing ou stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre système.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


Ce n'est pas moi qui le dit, c'est la documentation officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieurs fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évite de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des résultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraîne l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, même si elle n'appartient pas à la distribution par défaut ; mais elle ne sera pas installée si la version installée est plus récente.
  
  500 &lt; P &lt;=990
  La version sera installée, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus récente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus récente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorité empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorité de 990. On comprend donc aisément qu'avoir une priorité =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces dépôts lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numéro de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version à insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer réellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le fichier preferences est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # stable security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # backports
 deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free


'''Les préférences des backports ont par défaut une valeur de 100'''. Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t squeeze-backports paquet
 aptitude install -t squeeze-backports paquet


Pour plus d'informations, reportez vous au [http://backports-master.debian.org/ site des backports] (en anglais)


Si en dépit du bon sens et malgré ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommandé'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorité de 1 et sont tout à fait facultatifs!'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'où l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qui se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus récent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. 
'''Les dépôts experimental ont par défaut une priorité de 1 et sont tout à fait facultatifs!'''

== Multimédia ==

'''Les dépôts multimedia ne sont pas des dépôts officiels et peuvent troubler la stabilité de votre système'''. Si vous souhaitez les utiliser quand même, assurez vous d'avoir une bonne raison pour cela et '''attribuez leur une priorité inférieure à celles des dépôts officiels'''.

Les adresses de ces dépôts à ajouter au sources.list sont les suivantes :

Pour stable :

 # stable multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 

Pour testing :
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free


Pour sid :
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Une ou plusieures entrées de ce style dans le fichier preferences devraient éviter les problèmes :

 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=BRANCHE UTILISÉE
 Pin-Priority: 200


Ainsi si vous utilisez unstable et testing dans votre sources.list, vous obtiendrez ces entrées :

 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=unstable
 Pin-Priority: 200
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=testing
 Pin-Priority: 200


Il existe aussi des dépôts multimedia pour la branche experimental :

 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


'''Les dépôts experimental officiels ont par défaut une priorité de 1, par contre les dépôts experimental multimedia sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait facultatifs, à plus forte raison ceux de experimental multimedia. Vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences. Mais si vous souhaitez quand même utiliser les dépôts experimental multimedia, ajoutez l'entrée qui suit à votre fichier preferences :'''

 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1</text>
      <sha1>qiku94413kmiqpz7uh0c408heqqm080</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3497</id>
      <parentid>3496</parentid>
      <timestamp>2011-10-24T17:11:46Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>Corrections et mise en page</comment>
      <text xml:space="preserve" bytes="27011">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi même'''.

Chaque dépôt présent dans le [[Sources.list|sources.list]] se voit attribuer une priorité d'installation. Par défaut tous les dépôts ont la même priorité (500 sauf exception, les dépôts experimental par exemple qui ont une priorité par défaut de 1, les dépôts backports qui ont une priorité de 100), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par défaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de langage qui peut nuire à la compréhension du fonctionnement des règles). Cette méthode peut être utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid en restant testing ou stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre système.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


Ce n'est pas moi qui le dit, c'est la documentation officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieurs fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évite de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des résultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraîne l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, même si elle n'appartient pas à la distribution par défaut ; mais elle ne sera pas installée si la version installée est plus récente.
  
  500 &lt; P &lt;=990
  La version sera installée, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus récente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus récente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorité empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorité de 990. On comprend donc aisément qu'avoir une priorité =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces dépôts lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numéro de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version à insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer réellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le fichier preferences est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # stable security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # backports
 deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free


Les dépôts backports ont par défaut une priorité de 100.
Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t squeeze-backports paquet
 aptitude install -t squeeze-backports paquet


Pour plus d'informations, reportez vous au [http://backports-master.debian.org/ site des backports] (en anglais)


Si en dépit du bon sens et malgré ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommandé'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorité de 1 et sont tout à fait facultatifs!'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'où l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qui se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus récent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. 
'''Les dépôts experimental ont par défaut une priorité de 1 et sont tout à fait facultatifs!'''

== Multimédia ==

'''Les dépôts multimedia ne sont pas des dépôts officiels et peuvent troubler la stabilité de votre système'''. Si vous souhaitez les utiliser quand même, assurez vous d'avoir une bonne raison pour cela et '''attribuez leur une priorité inférieure à celles des dépôts officiels'''.

Les adresses de ces dépôts à ajouter au sources.list sont les suivantes :

Pour stable :

 # stable multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 

Pour testing :
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free


Pour sid :
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Une ou plusieures entrées de ce style dans le fichier preferences devraient éviter les problèmes :

 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=BRANCHE UTILISÉE
 Pin-Priority: 200


Ainsi si vous utilisez unstable et testing dans votre sources.list, vous obtiendrez ces entrées :

 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=unstable
 Pin-Priority: 200
 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=testing
 Pin-Priority: 200


Il existe aussi des dépôts multimedia pour la branche experimental :

 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


'''Les dépôts experimental officiels ont par défaut une priorité de 1, par contre les dépôts experimental multimedia sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait facultatifs, à plus forte raison ceux de experimental multimedia. Vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences. Mais si vous souhaitez quand même utiliser les dépôts experimental multimedia, ajoutez l'entrée qui suit à votre fichier preferences :'''

 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1</text>
      <sha1>9eyh9gclf0h8o8p6cezc8eqehyhks9l</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3498</id>
      <parentid>3497</parentid>
      <timestamp>2011-10-24T22:45:09Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>multimedia priorité à 100 pour correspondre avec la priorité des backports au cas où</comment>
      <text xml:space="preserve" bytes="26695">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi même'''.

Chaque dépôt présent dans le [[Sources.list|sources.list]] se voit attribuer une priorité d'installation. Par défaut tous les dépôts ont la même priorité (500 sauf exception, les dépôts experimental par exemple qui ont une priorité par défaut de 1, les dépôts backports qui ont une priorité de 100), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par défaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de langage qui peut nuire à la compréhension du fonctionnement des règles). Cette méthode peut être utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid en restant testing ou stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre système.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


Ce n'est pas moi qui le dit, c'est la documentation officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieurs fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évite de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des résultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraîne l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, même si elle n'appartient pas à la distribution par défaut ; mais elle ne sera pas installée si la version installée est plus récente.
  
  500 &lt; P &lt;=990
  La version sera installée, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus récente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus récente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorité empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorité de 990. On comprend donc aisément qu'avoir une priorité =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces dépôts lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numéro de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version à insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer réellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le fichier preferences est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # stable security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # backports
 deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free


Les dépôts backports ont par défaut une priorité de 100.
Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t squeeze-backports paquet
 aptitude install -t squeeze-backports paquet


Pour plus d'informations, reportez vous au [http://backports-master.debian.org/ site des backports] (en anglais)


Si en dépit du bon sens et malgré ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommandé'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorité de 1 et sont tout à fait facultatifs!'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'où l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qui se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus récent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. 
'''Les dépôts experimental ont par défaut une priorité de 1 et sont tout à fait facultatifs!'''

== Multimédia ==

'''Les dépôts multimedia ne sont pas des dépôts officiels et peuvent troubler la stabilité de votre système'''. Si vous souhaitez les utiliser quand même, assurez vous d'avoir une bonne raison pour cela et '''attribuez leur une priorité inférieure à celles des dépôts officiels'''.

Les adresses de ces dépôts à ajouter au sources.list sont les suivantes :

Pour stable :

 # stable multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 

Pour testing :
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free


Pour sid :
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Une entrée de ce style dans le fichier preferences devraient éviter les problèmes :

 Package: *
 Pin: release o=Unofficial Multimedia Packages
 Pin-Priority: 100


Il existe aussi des dépôts multimedia pour la branche experimental :

 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


'''Les dépôts experimental officiels ont par défaut une priorité de 1, par contre les dépôts experimental multimedia sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait facultatifs, à plus forte raison ceux de experimental multimedia. Vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences. Mais si vous souhaitez quand même utiliser les dépôts experimental multimedia, ajoutez l'entrée qui suit à votre fichier preferences :'''

 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1</text>
      <sha1>r6sfdbcjt8icb1dl91utka0j3vgd1ue</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3499</id>
      <parentid>3498</parentid>
      <timestamp>2011-10-25T07:19:37Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="26693">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi même'''.

Chaque dépôt présent dans le [[Sources.list|sources.list]] se voit attribuer une priorité d'installation. Par défaut tous les dépôts ont la même priorité (500 sauf exception, les dépôts experimental par exemple qui ont une priorité par défaut de 1, les dépôts backports qui ont une priorité de 100), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par défaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de langage qui peut nuire à la compréhension du fonctionnement des règles). Cette méthode peut être utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid en restant testing ou stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre système.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


Ce n'est pas moi qui le dit, c'est la documentation officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieurs fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évite de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des résultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond a Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond a label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond a Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond a Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond a Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond a Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraîne l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, même si elle n'appartient pas à la distribution par défaut ; mais elle ne sera pas installée si la version installée est plus récente.
  
  500 &lt; P &lt;=990
  La version sera installée, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus récente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus récente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorité empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorité de 990. On comprend donc aisément qu'avoir une priorité =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces dépôts lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numéro de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version à insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer réellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le fichier preferences est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # stable security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # backports
 deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free


Les dépôts backports ont par défaut une priorité de 100.
Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t squeeze-backports paquet
 aptitude install -t squeeze-backports paquet


Pour plus d'informations, reportez vous au [http://backports-master.debian.org/ site des backports] (en anglais)


Si en dépit du bon sens et malgré ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommandé'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorité de 1 et sont tout à fait facultatifs!'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'où l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qui se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus récent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. 
'''Les dépôts experimental ont par défaut une priorité de 1 et sont tout à fait facultatifs!'''

== Multimédia ==

'''Les dépôts multimedia ne sont pas des dépôts officiels et peuvent troubler la stabilité de votre système'''. Si vous souhaitez les utiliser quand même, assurez vous d'avoir une bonne raison pour cela et '''attribuez leur une priorité inférieure à celles des dépôts officiels'''.

Les adresses de ces dépôts à ajouter au sources.list sont les suivantes :

Pour stable :

 # stable multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 

Pour testing :
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free


Pour sid :
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Une entrée de ce style dans le fichier preferences devrait éviter les problèmes :

 Package: *
 Pin: release o=Unofficial Multimedia Packages
 Pin-Priority: 100


Il existe aussi des dépôts multimedia pour la branche experimental :

 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


'''Les dépôts experimental officiels ont par défaut une priorité de 1, par contre les dépôts experimental multimedia sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait facultatifs, à plus forte raison ceux de experimental multimedia. Vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences. Mais si vous souhaitez quand même utiliser les dépôts experimental multimedia, ajoutez l'entrée qui suit à votre fichier preferences :'''

 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1</text>
      <sha1>oa931y4t2eeep21gaq7gviv32ry9ej2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3998</id>
      <parentid>3499</parentid>
      <timestamp>2012-03-26T17:59:35Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Ligne Pin */</comment>
      <text xml:space="preserve" bytes="26699">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi même'''.

Chaque dépôt présent dans le [[Sources.list|sources.list]] se voit attribuer une priorité d'installation. Par défaut tous les dépôts ont la même priorité (500 sauf exception, les dépôts experimental par exemple qui ont une priorité par défaut de 1, les dépôts backports qui ont une priorité de 100), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par défaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de langage qui peut nuire à la compréhension du fonctionnement des règles). Cette méthode peut être utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid en restant testing ou stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre système.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


Ce n'est pas moi qui le dit, c'est la documentation officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieurs fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évite de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des résultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond à Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond à label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond à Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond à Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond à Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond à Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraîne l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, même si elle n'appartient pas à la distribution par défaut ; mais elle ne sera pas installée si la version installée est plus récente.
  
  500 &lt; P &lt;=990
  La version sera installée, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus récente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus récente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorité empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorité de 990. On comprend donc aisément qu'avoir une priorité =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces dépôts lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numéro de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version à insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer réellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le fichier preferences est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # stable security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # backports
 deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free


Les dépôts backports ont par défaut une priorité de 100.
Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t squeeze-backports paquet
 aptitude install -t squeeze-backports paquet


Pour plus d'informations, reportez vous au [http://backports-master.debian.org/ site des backports] (en anglais)


Si en dépit du bon sens et malgré ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommandé'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorité de 1 et sont tout à fait facultatifs!'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'où l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qui se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus récent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. 
'''Les dépôts experimental ont par défaut une priorité de 1 et sont tout à fait facultatifs!'''

== Multimédia ==

'''Les dépôts multimedia ne sont pas des dépôts officiels et peuvent troubler la stabilité de votre système'''. Si vous souhaitez les utiliser quand même, assurez vous d'avoir une bonne raison pour cela et '''attribuez leur une priorité inférieure à celles des dépôts officiels'''.

Les adresses de ces dépôts à ajouter au sources.list sont les suivantes :

Pour stable :

 # stable multimedia
 deb http://www.debian-multimedia.org squeeze main non-free
 #deb-src http://www.debian-multimedia.org squeeze main non-free
 

Pour testing :
 
 # testing multimedia
 deb http://www.debian-multimedia.org testing main non-free
 #deb-src http://www.debian-multimedia.org testing main non-free


Pour sid :
 
 # sid multimedia
 deb http://www.debian-multimedia.org sid main non-free
 #deb-src http://www.debian-multimedia.org sid main non-free


Une entrée de ce style dans le fichier preferences devrait éviter les problèmes :

 Package: *
 Pin: release o=Unofficial Multimedia Packages
 Pin-Priority: 100


Il existe aussi des dépôts multimedia pour la branche experimental :

 # experimental multimedia
 deb http://www.debian-multimedia.org experimental main
 #deb-src http://www.debian-multimedia.org experimental main


'''Les dépôts experimental officiels ont par défaut une priorité de 1, par contre les dépôts experimental multimedia sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait facultatifs, à plus forte raison ceux de experimental multimedia. Vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences. Mais si vous souhaitez quand même utiliser les dépôts experimental multimedia, ajoutez l'entrée qui suit à votre fichier preferences :'''

 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1</text>
      <sha1>c8egs6h6kkuty37kfpvs2a4e0pixokj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4237</id>
      <parentid>3998</parentid>
      <timestamp>2012-05-13T21:45:14Z</timestamp>
      <contributor>
        <username>Youki</username>
        <id>59</id>
      </contributor>
      <minor/>
      <comment>Changements d'adresses de dépôts, debian-multimedia devient deb-multimedia</comment>
      <text xml:space="preserve" bytes="26675">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi même'''.

Chaque dépôt présent dans le [[Sources.list|sources.list]] se voit attribuer une priorité d'installation. Par défaut tous les dépôts ont la même priorité (500 sauf exception, les dépôts experimental par exemple qui ont une priorité par défaut de 1, les dépôts backports qui ont une priorité de 100), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par défaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de langage qui peut nuire à la compréhension du fonctionnement des règles). Cette méthode peut être utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid en restant testing ou stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre système.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


Ce n'est pas moi qui le dit, c'est la documentation officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieurs fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évite de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des résultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond à Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond à label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond à Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond à Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond à Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond à Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraîne l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, même si elle n'appartient pas à la distribution par défaut ; mais elle ne sera pas installée si la version installée est plus récente.
  
  500 &lt; P &lt;=990
  La version sera installée, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus récente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus récente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorité empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorité de 990. On comprend donc aisément qu'avoir une priorité =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces dépôts lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numéro de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version à insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer réellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le fichier preferences est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # stable security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # backports
 deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free


Les dépôts backports ont par défaut une priorité de 100.
Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t squeeze-backports paquet
 aptitude install -t squeeze-backports paquet


Pour plus d'informations, reportez vous au [http://backports-master.debian.org/ site des backports] (en anglais)


Si en dépit du bon sens et malgré ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommandé'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorité de 1 et sont tout à fait facultatifs!'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'où l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qui se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus récent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. 
'''Les dépôts experimental ont par défaut une priorité de 1 et sont tout à fait facultatifs!'''

== Multimédia ==

'''Les dépôts multimedia ne sont pas des dépôts officiels et peuvent troubler la stabilité de votre système'''. Si vous souhaitez les utiliser quand même, assurez vous d'avoir une bonne raison pour cela et '''attribuez leur une priorité inférieure à celles des dépôts officiels'''.

Les adresses de ces dépôts à ajouter au sources.list sont les suivantes :

Pour stable :

 # stable multimedia
 deb http://www.deb-multimedia.org squeeze main non-free
 #deb-src http://www.deb-multimedia.org squeeze main non-free
 

Pour testing :
 
 # testing multimedia
 deb http://www.deb-multimedia.org testing main non-free
 #deb-src http://www.deb-multimedia.org testing main non-free


Pour sid :
 
 # sid multimedia
 deb http://www.deb-multimedia.org sid main non-free
 #deb-src http://www.deb-multimedia.org sid main non-free


Une entrée de ce style dans le fichier preferences devrait éviter les problèmes :

 Package: *
 Pin: release o=Unofficial Multimedia Packages
 Pin-Priority: 100


Il existe aussi des dépôts multimedia pour la branche experimental :

 # experimental multimedia
 deb http://www.deb-multimedia.org experimental main
 #deb-src http://www.deb-multimedia.org experimental main


'''Les dépôts experimental officiels ont par défaut une priorité de 1, par contre les dépôts experimental multimedia sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait facultatifs, à plus forte raison ceux de experimental multimedia. Vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences. Mais si vous souhaitez quand même utiliser les dépôts experimental multimedia, ajoutez l'entrée qui suit à votre fichier preferences :'''

 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1</text>
      <sha1>rs5t01r5ios0ntad5jzb2u7uu2ywzcx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4536</id>
      <parentid>4237</parentid>
      <timestamp>2012-10-23T12:40:45Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>/* Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? */  Mise-à-jour du lien &quot;sources.list&quot; vers le nouvel article</comment>
      <text xml:space="preserve" bytes="26693">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi même'''.

Chaque dépôt présent dans le [[Sources_de_paquets_:_les_bases|sources.list]] se voit attribuer une priorité d'installation. Par défaut tous les dépôts ont la même priorité (500 sauf exception, les dépôts experimental par exemple qui ont une priorité par défaut de 1, les dépôts backports qui ont une priorité de 100), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par défaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de langage qui peut nuire à la compréhension du fonctionnement des règles). Cette méthode peut être utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid en restant testing ou stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre système.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


Ce n'est pas moi qui le dit, c'est la documentation officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieurs fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évite de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des résultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond à Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond à label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond à Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond à Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond à Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond à Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraîne l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, même si elle n'appartient pas à la distribution par défaut ; mais elle ne sera pas installée si la version installée est plus récente.
  
  500 &lt; P &lt;=990
  La version sera installée, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus récente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus récente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorité empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorité de 990. On comprend donc aisément qu'avoir une priorité =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces dépôts lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numéro de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version à insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer réellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le fichier preferences est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # stable security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # backports
 deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free


Les dépôts backports ont par défaut une priorité de 100.
Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t squeeze-backports paquet
 aptitude install -t squeeze-backports paquet


Pour plus d'informations, reportez vous au [http://backports-master.debian.org/ site des backports] (en anglais)


Si en dépit du bon sens et malgré ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommandé'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorité de 1 et sont tout à fait facultatifs!'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'où l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qui se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus récent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. 
'''Les dépôts experimental ont par défaut une priorité de 1 et sont tout à fait facultatifs!'''

== Multimédia ==

'''Les dépôts multimedia ne sont pas des dépôts officiels et peuvent troubler la stabilité de votre système'''. Si vous souhaitez les utiliser quand même, assurez vous d'avoir une bonne raison pour cela et '''attribuez leur une priorité inférieure à celles des dépôts officiels'''.

Les adresses de ces dépôts à ajouter au sources.list sont les suivantes :

Pour stable :

 # stable multimedia
 deb http://www.deb-multimedia.org squeeze main non-free
 #deb-src http://www.deb-multimedia.org squeeze main non-free
 

Pour testing :
 
 # testing multimedia
 deb http://www.deb-multimedia.org testing main non-free
 #deb-src http://www.deb-multimedia.org testing main non-free


Pour sid :
 
 # sid multimedia
 deb http://www.deb-multimedia.org sid main non-free
 #deb-src http://www.deb-multimedia.org sid main non-free


Une entrée de ce style dans le fichier preferences devrait éviter les problèmes :

 Package: *
 Pin: release o=Unofficial Multimedia Packages
 Pin-Priority: 100


Il existe aussi des dépôts multimedia pour la branche experimental :

 # experimental multimedia
 deb http://www.deb-multimedia.org experimental main
 #deb-src http://www.deb-multimedia.org experimental main


'''Les dépôts experimental officiels ont par défaut une priorité de 1, par contre les dépôts experimental multimedia sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait facultatifs, à plus forte raison ceux de experimental multimedia. Vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences. Mais si vous souhaitez quand même utiliser les dépôts experimental multimedia, ajoutez l'entrée qui suit à votre fichier preferences :'''

 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1</text>
      <sha1>8av5gcksxhq97ct0iwgkn04hc5jjfxn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4537</id>
      <parentid>4536</parentid>
      <timestamp>2012-10-23T13:03:01Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="26693">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi même'''.

Chaque dépôt présent dans le [[Sources_de_paquets_:_les_bases|sources.list]] se voit attribué une priorité d'installation. Par défaut tous les dépôts ont la même priorité (500 sauf exception, les dépôts experimental par exemple qui ont une priorité par défaut de 1, les dépôts backports qui ont une priorité de 100), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par défaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de langage qui peut nuire à la compréhension du fonctionnement des règles). Cette méthode peut être utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid en restant testing ou stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre système.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


Ce n'est pas moi qui le dit, c'est la documentation officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieurs fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évite de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des résultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond à Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond à label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond à Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond à Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond à Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond à Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraîne l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, même si elle n'appartient pas à la distribution par défaut ; mais elle ne sera pas installée si la version installée est plus récente.
  
  500 &lt; P &lt;=990
  La version sera installée, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus récente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus récente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorité empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorité de 990. On comprend donc aisément qu'avoir une priorité =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces dépôts lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numéro de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version à insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer réellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le fichier preferences est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # stable security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # backports
 deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free


Les dépôts backports ont par défaut une priorité de 100.
Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t squeeze-backports paquet
 aptitude install -t squeeze-backports paquet


Pour plus d'informations, reportez vous au [http://backports-master.debian.org/ site des backports] (en anglais)


Si en dépit du bon sens et malgré ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommandé'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorité de 1 et sont tout à fait facultatifs!'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'où l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qui se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources.list| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus récent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. 
'''Les dépôts experimental ont par défaut une priorité de 1 et sont tout à fait facultatifs!'''

== Multimédia ==

'''Les dépôts multimedia ne sont pas des dépôts officiels et peuvent troubler la stabilité de votre système'''. Si vous souhaitez les utiliser quand même, assurez vous d'avoir une bonne raison pour cela et '''attribuez leur une priorité inférieure à celles des dépôts officiels'''.

Les adresses de ces dépôts à ajouter au sources.list sont les suivantes :

Pour stable :

 # stable multimedia
 deb http://www.deb-multimedia.org squeeze main non-free
 #deb-src http://www.deb-multimedia.org squeeze main non-free
 

Pour testing :
 
 # testing multimedia
 deb http://www.deb-multimedia.org testing main non-free
 #deb-src http://www.deb-multimedia.org testing main non-free


Pour sid :
 
 # sid multimedia
 deb http://www.deb-multimedia.org sid main non-free
 #deb-src http://www.deb-multimedia.org sid main non-free


Une entrée de ce style dans le fichier preferences devrait éviter les problèmes :

 Package: *
 Pin: release o=Unofficial Multimedia Packages
 Pin-Priority: 100


Il existe aussi des dépôts multimedia pour la branche experimental :

 # experimental multimedia
 deb http://www.deb-multimedia.org experimental main
 #deb-src http://www.deb-multimedia.org experimental main


'''Les dépôts experimental officiels ont par défaut une priorité de 1, par contre les dépôts experimental multimedia sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait facultatifs, à plus forte raison ceux de experimental multimedia. Vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences. Mais si vous souhaitez quand même utiliser les dépôts experimental multimedia, ajoutez l'entrée qui suit à votre fichier preferences :'''

 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1</text>
      <sha1>o44veg5zcaw2o595kwy0w2xeminxm6w</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5270</id>
      <parentid>4537</parentid>
      <timestamp>2013-06-10T09:18:54Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>redirection des liens vers l'article sources.list à jour</comment>
      <text xml:space="preserve" bytes="26765">== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==

L'étiquetage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi même'''.

Chaque dépôt présent dans le [[Sources_de_paquets_:_les_bases|sources.list]] se voit attribué une priorité d'installation. Par défaut tous les dépôts ont la même priorité (500 sauf exception, les dépôts experimental par exemple qui ont une priorité par défaut de 1, les dépôts backports qui ont une priorité de 100), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets. Donc par défaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de langage qui peut nuire à la compréhension du fonctionnement des règles). Cette méthode peut être utilisée pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.

En gros, '''un fichier preferences n'est utile que si l'on veut mixer différentes branches de debian''' (par exemple sid en restant testing ou stable) '''ou bien lors de l'ajout de dépôts non officiels dont on veut &quot;affiner&quot; le comportement'''. '''Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'étiquetage peut très vite casser votre système.'''

 Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
 ses effets peuvent être difficiles à comprendre et à gérer.
 Vous devriez la considérer comme une Fonction Avancée.


Ce n'est pas moi qui le dit, c'est la documentation officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'étiqueter des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'étiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieurs fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évite de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:

[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=19298| Question concernant le fichier preferences]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=20240| /etc/apt/preferences et sa première non-mise à jour]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=22883&amp;start=0| Pourquoi les preferences du T&amp;A sont foireux?]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=24530| mettre en blacklist des mises à jour APT]&lt;br/&gt;
[http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25746| Énervant manque d'explications: fichier preferences]&lt;br/&gt;


Vous pouvez également trouver des informations sur l'étiquetage en tapant '''man apt_preferences''' dans un terminal.

== Structure du fichier /etc/apt/preferences ==

Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences:

   Package: *
   Pin: release a=unstable o=Debian
   Pin-Priority: 90
   
   Package: ardour
   Pin: release a=unstable
   Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

   Package: * ou nom de paquet
   Pin: release a=,n=,v=,c=,o=,l=
   Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des résultats de ce type:

  500 http://ftp2.fr.debian.org stable/contrib Packages
  release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib
  origin ftp2.fr.debian.org


Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas.


Détaillons ligne par ligne les entrées du fichier preferences:


==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''.

==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'étiquetage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.

Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée dans les fichiers '''*Release''' comme par exemple '''/var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release''' dont voici la partie qui nous interesse:

  Origin: Debian
  Label: Debian
  Suite: stable
  Version: 5.0.5
  Codename: stable
  Date: Sat, 26 Jun 2010 12:12:50 UTC
  Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
  Components: main contrib non-free
  Description: Debian 5.0.5 Released 26 June 2010


La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets.

Ainsi cette entree:

   Package: *
   Pin: release o=Debian,a=stable
   Pin-Priority: 900


Se lit donc comme suit:

  Package: *                                 -&gt; L'ensemble des paquets
  Pin: release o=Debian,a=stable   -&gt; se trouvant dans des dépôts dont la variable Origin (o) a pour valeur &quot;Debian&quot;
                                                       et la variable Suite (a) a pour valeur &quot;stable&quot;
  Pin-Priority: 900                          -&gt; ont une priorite de 900


Et cette entrée ci:

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Se lit donc comme suit:

  Package: ardour                         -&gt; Le paquet ardour
  Pin: release a=unstable               -&gt; se trouvant dans des dépôts dont la variable Suite (a) a pour valeur &quot;now&quot;
  Pin-Priority: 1001                        -&gt; a une priorite de 1001


Voyons maintenant quelles peuvent être ces valeurs:

  o= correspond à Origin
  dans notre exemple -&gt; Pin: release o=Debian
  
  l= correspond à label
  dans notre exemple -&gt; Pin: release l=Debian
  
  a= correspond à Suite
  dans notre exemple -&gt; Pin: release a=stable
  
  v= correspond à Version
  dans notre exemple -&gt; Pin: release v=5.0.5
  
  c= correspond à Components
  dans notre exemple -&gt; Pin: release c=contrib
  
  n= correspond à Codename
  dans notre exemple -&gt; Pin: release n=stable


On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes.

==== Ligne Pin-Priority ====

C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit:

  P &gt; 1000
  Cette priorité entraîne l'installation du paquet même s'il s'agit d'un retour en arrière.
  
  990 &lt; P &lt;=1000
  La version sera installée, même si elle n'appartient pas à la distribution par défaut ; mais elle ne sera pas installée si la version installée est plus récente.
  
  500 &lt; P &lt;=990
  La version sera installée, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus récente.
  
  100 &lt; P &lt;=500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus récente.
  
  0 &lt; P &lt;=100
  La version sera installée si aucune version du paquet n'est installée.
  
  P &lt; 0
  Cette priorité empêche l'installation de la version.


Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.


- '''Attribuer une priorité comprise entre 500 et &lt;990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =&lt; à cette branche principale.

Pourquoi &lt;990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorité de 990. On comprend donc aisément qu'avoir une priorité =&gt;990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point.


- '''Attribuer une priorité comprise entre 1 et &lt;100 pour la/les branche(s) comportant des paquets aux versions &gt; à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant &quot;suivre&quot; les paquets installés à partir des ces dépôts.

Si on veut les &quot;suivre&quot;, c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces dépôts lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et &lt;500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances.


- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''.

==== Comment piocher dans les différents dépôts du sources.list? ====

Tout d'abord, pour que le fichier preferences soit pris en compte après une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes.


Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''):


- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande:

   apt-get install -t unstable ardour


Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées.


- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguée, vous utiliserez cette commande:

   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilités:


- Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''.


- Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numéro de version du paquet bloqué ou avec la variable release''' a=now'''.


Par exemple si je veux rétrograder ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences:

   Package: ardour
   Pin: version 1:2.8.9-1
   Pin-Priority: 1001


Si vous avez un doute sur le numéro de version à insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple:

  # apt-cache policy ardour
  ardour:
    Installé: 1:2.8.11-1
    Candidat: 1:2.8.11-1
  Table de version:
  *** 1:2.8.11-1 0
          500 http://ftp2.fr.debian.org sid/main Packages
          100 /var/lib/dpkg/status
        1:2.8.9-1 0
          500 http://ftp2.fr.debian.org squeeze/main Packages


Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''.

   Package: ardour
   Pin: release a=now
   Pin-Priority: 1001


Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences.


'''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer réellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable.

== Stable ==

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''

Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le fichier preferences est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.

Le sources.list adéquat dans ce cas peut-être celui ci:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources_de_paquets_:_les_bases|page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
 
 # stable security
 deb http://security.debian.org/ squeeze/updates main contrib non-free
 #deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 # backports
 deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free


Les dépôts backports ont par défaut une priorité de 100.
Pour installer un paquet depuis les backports, utilisez l'option ''-t'':

 apt-get install -t squeeze-backports paquet
 aptitude install -t squeeze-backports paquet


Pour plus d'informations, reportez vous au [http://backports-master.debian.org/ site des backports] (en anglais)


Si en dépit du bon sens et malgré ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et mechant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources_de_paquets_:_les_bases| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free


Accompagné de ce fichier preferences:

 Package: * 
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: -10
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.

== Testing ==

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'étiquetage est plutot recommandé'''.

En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 a vos besoins le sources.list qui suit.
 Cette [[Sources_de_paquets_:_les_bases| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
 
 # experimental
 deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free


Avec ce fichier preferences:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 
 Package: *
 Pin: release a=stable
 Pin-Priority: 900
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.

'''Les dépôts experimental ont par défaut une priorité de 1 et sont tout à fait facultatifs!'''

== Sid ==


Comme testing, sid n'est pas toujours complète d'où l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qui se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.


Pour le sources.list suivant:

 '''ATTENTION!''', évitez le copier/coller &quot;bête et méchant&quot; et essayez de comprendre et d'adapter 
 à vos besoins le sources.list qui suit.
 Cette [[Sources_de_paquets_:_les_bases| page]] sur le sources.list peut vous y aider.

 # stable
 deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
 
 # stable security
 deb http://security.debian.org/ stable/updates main contrib non-free
 #deb-src http://security.debian.org/ stable/updates main contrib non-free
 
 # stable volatile
 deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
 
 
 # testing
 deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 # testing security
 deb http://security.debian.org/ testing/updates main contrib non-free
 #deb-src http://security.debian.org/ testing/updates main contrib non-free
 
 
 # sid
 deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 #deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free


'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus récent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. 
'''Les dépôts experimental ont par défaut une priorité de 1 et sont tout à fait facultatifs!'''

== Multimédia ==

'''Les dépôts multimedia ne sont pas des dépôts officiels et peuvent troubler la stabilité de votre système'''. Si vous souhaitez les utiliser quand même, assurez vous d'avoir une bonne raison pour cela et '''attribuez leur une priorité inférieure à celles des dépôts officiels'''.

Les adresses de ces dépôts à ajouter au sources.list sont les suivantes :

Pour stable :

 # stable multimedia
 deb http://www.deb-multimedia.org squeeze main non-free
 #deb-src http://www.deb-multimedia.org squeeze main non-free
 

Pour testing :
 
 # testing multimedia
 deb http://www.deb-multimedia.org testing main non-free
 #deb-src http://www.deb-multimedia.org testing main non-free


Pour sid :
 
 # sid multimedia
 deb http://www.deb-multimedia.org sid main non-free
 #deb-src http://www.deb-multimedia.org sid main non-free


Une entrée de ce style dans le fichier preferences devrait éviter les problèmes :

 Package: *
 Pin: release o=Unofficial Multimedia Packages
 Pin-Priority: 100


Il existe aussi des dépôts multimedia pour la branche experimental :

 # experimental multimedia
 deb http://www.deb-multimedia.org experimental main
 #deb-src http://www.deb-multimedia.org experimental main


'''Les dépôts experimental officiels ont par défaut une priorité de 1, par contre les dépôts experimental multimedia sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait facultatifs, à plus forte raison ceux de experimental multimedia. Vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences. Mais si vous souhaitez quand même utiliser les dépôts experimental multimedia, ajoutez l'entrée qui suit à votre fichier preferences :'''

 
 Package: *
 Pin: release o=Unofficial Multimedia Packages,a=experimental
 Pin-Priority: 1</text>
      <sha1>9o0febnf7mwyrsefbuo2t145qeoqsb8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>LAMP</title>
    <ns>0</ns>
    <id>410</id>
    <revision>
      <id>1502</id>
      <timestamp>2010-05-17T11:13:23Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « [[Category:Serveurs]] »</comment>
      <text xml:space="preserve" bytes="21">[[Category:Serveurs]]</text>
      <sha1>l2nmaskv3bffsjpw0yst96acqex6l44</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1767</id>
      <parentid>1502</parentid>
      <timestamp>2010-07-29T19:41:07Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="574">== Serveur &quot;LAMP&quot; ==

Un serveur LAMP, qu'est-ce que c'est ?

'''LAMP''' est tout simplement un acronyme qui désigne un ensemble de programmes (des logiciels libres en ce qui nous concerne Debian) qui permettent de construire des serveurs de sites Web.
L'acronyme original se réfère aux logiciels suivants :

: '''L''' « Linux », le système d'exploitation ;
: '''A''' « Apache », le serveur Web ;
: '''M''' « MySQL », le serveur de base de données ;
: '''P''' « PHP » à l'origine, puis « Perl » ou « Python », les langages de script.

[[Category:Serveurs]]</text>
      <sha1>mhs95o0cwd19bbutlqhxsl87duedasa</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1873</id>
      <parentid>1767</parentid>
      <timestamp>2010-08-05T18:31:02Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Serveur &quot;LAMP&quot; */</comment>
      <text xml:space="preserve" bytes="569">== Serveur &quot;LAMP&quot; ==

Un serveur LAMP, qu'est-ce que c'est ?

'''LAMP''' est tout simplement un acronyme qui désigne un ensemble de programmes (des logiciels libres en ce qui concerne Debian) qui permettent de construire des serveurs de sites Web.
L'acronyme original se réfère aux logiciels suivants :

: '''L''' « Linux », le système d'exploitation ;
: '''A''' « Apache », le serveur Web ;
: '''M''' « MySQL », le serveur de base de données ;
: '''P''' « PHP » à l'origine, puis « Perl » ou « Python », les langages de script.

[[Category:Serveurs]]</text>
      <sha1>bxvjuh2wljssbhwbokak2b2lvtcu3x5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2474</id>
      <parentid>1873</parentid>
      <timestamp>2010-12-11T14:36:33Z</timestamp>
      <contributor>
        <username>Kna</username>
        <id>35</id>
      </contributor>
      <text xml:space="preserve" bytes="1089">== Serveur &quot;LAMP&quot; ==

Un serveur LAMP, qu'est-ce que c'est ?

'''LAMP''' est tout simplement un acronyme qui désigne un ensemble de programmes (des logiciels libres en ce qui concerne Debian) qui permettent de construire des serveurs de sites Web.
L'acronyme original se réfère aux logiciels suivants :

: '''L''' « Linux », le système d'exploitation ;
: '''A''' « Apache », le serveur Web ;
: '''M''' « MySQL », le serveur de base de données ;
: '''P''' « PHP » à l'origine, puis « Perl » ou « Python », les langages de script.

== Installation ==

Nous avons déjà un linux ! Il suffit donc d'installer apache, php et MySQL, avec tout ce qu'il faut pour qu'ils puissent intérragir entre eux :

 aptitude install apache2 libapache2-mod-php5 php5 php5-mysql mysql-server

NB : Vous pouvez aussi utiliser une architecture plus répartie, avec apache et php sur une machine et la base de données MySQL sur une autre.

== Configuration ==

Les trois composants sont indépendants, on les configure séparément :

* [[Apache]]
* [[php]]
* [[MySQL]]

[[Category:Serveurs]]</text>
      <sha1>9b6cy42rfo5igfxwf3v7qe080pk8vs1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>La commande dd</title>
    <ns>0</ns>
    <id>633</id>
    <revision>
      <id>2739</id>
      <timestamp>2011-03-08T13:09:06Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « {{sid}}   ----  {{Ébauche|La commande dd}}  La commande dd.  = Introduction: =  Extrait de la page de man de dd :  &quot;dd copie un fichier (par défaut, depuis l'entrée standa... »</comment>
      <text xml:space="preserve" bytes="5330">{{sid}} 

----

{{Ébauche|La commande dd}}

La commande dd.

= Introduction: =

Extrait de la page de man de dd :

&quot;dd copie un fichier (par défaut, depuis l'entrée standard vers la sortie standard) en permettant de sélectionner la taille de bloc, et d'effectuer des conversions.&quot;

Utilisée fréquement, la commande dd est très simple d'utilisation, très puissante et... tout aussi dangereuse.
Vérifiez toujours bien les commandes deux (trois ?) fois avant de les lancer.

&lt;span style=&quot;color:#FF0000;&quot;&gt;'''LES COMMANDES QUI SUIVENT PEUVENT ÊTRE EXTRÊMEMENT DESTRUCTIVES SI ELLES NE SONT PAS CONVENABLEMENT UTILISÉES. VOUS ÊTES PRÉVENUS!'''&lt;/span&gt;

== Syntaxe ==

La commande dd se présente généralement sous cette forme:

 dd if=&lt;source&gt; of=&lt;cible&gt; bs=&lt;taille des blocs&gt; skip= seek= conv=&lt;conversion&gt;

#source = données à copier;
#cible = endroit ou copier les données sources;
#bs = taille des blocs, de puissance 2, généralement égale à 512;
#skip = Ignorer le nombre indiqué de blocs (dont la taille est fournie par ibs) au début de la lecture;
#seek = Ignorer le nombre indiqué de blocs (dont la taille est fournie par ibs) au début de l'écriture. 
#conv = Modifier le fichier comme indiqué par l'argument conversion, qui peut prendre les valeurs suivantes (pas d'espace autour des virgules lorsque plusieurs arguments sont fournis) : 

 ascii, ebcdic, ibm, block, unblock, lcase, ucase, swab, noerror, notrunc, sync.

= Utilisation = 

== Copier une partition de disque dur sur un autre disque dur ==

Copie l'intégralité de la partition sda9 vers la partition sdb1, ne pas s'arrếter sur les erreurs de lecture.

 dd if=/dev/sda9 of=/dev/sdb1 bs=4096 conv=notrunc,noerror
 
 256000+0 enregistrements lus
 256000+0 enregistrements écrits
 1048576000 octets (1,0 GB) copiés, 30,778 s, 34,1 MB/s

notrunc = Ne pas limiter la taille du fichier de sortie.

noerror = Continuer même après des erreurs de lecture.

Remarque au sujet de l'UUID.

Copier une partition vers une autre copie aussi son UUID. Vous vous retrouvez alors avec deux partitions qui portent le même numéro...

 # blkid
 ...
 /dev/sda9: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;
 /dev/sdb1: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;

Il faut alors générer un nouveau numéro pour ne pas avoir de conflit (partition démontée...):

 # tune2fs -U random /dev/sdb1
 # blkid
 /dev/sda9: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;
 /dev/sdb1: UUID=&quot;75aa7a37-d2a2-4cf4-88f8-616067c7a684&quot; TYPE=&quot;ext2&quot;

== Cloner un disque dur en entier ==

Copie de l'intégralité (y compris le mbr) du disque sdg vers le disque sdh:

 dd if=/dev/sdg of=/dev/sdh conv=notrunc,noerror
 
 4030464+0 enregistrements lus
 4030464+0 enregistrements écrits
 2063597568 octets (2,1 GB) copiés, 1160,41 s, 1,8 MB/s

== Réaliser l'image ISO d'un CD ==

 dd if=/dev/sr0 of=/home/laurent/cd.iso bs=2048 conv=notrunc
 
 737+0 enregistrements lus
 737+0 enregistrements écrits
 1509376 octets (1,5 MB) copiés, 3,3215 s, 454 kB/s

Pour monter l'image obtenue:

 # mkdir /mnt/cd
 # mount -o loop -t iso9660 cd.iso /mnt/cd

Insertion permanente dans fstab:

 /chemin_vers_iso/cd.iso   /mnt/cd  iso9660 rw,user,noauto 0 0

== Effacer un lecteur ==

ATTENTION, COMMANDE DANGEREUSE!

Pour les paranos...
La commande suivante remplie 7 fois de suite un périphérique avec des données aléatoires.
Autant dire qu'il ne sera plus possible de récupérer quoi que ce soit sur ce périphérique...

 for n in `seq 7`; do dd if=/dev/urandom of=/dev/sdc bs=8b conv=notrunc; done
 
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 37,0691 s, 6,9 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 37,1506 s, 6,9 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,6351 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,4881 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,4908 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,5277 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,897 s, 6,9 MB/s

= Références =

[http://pwet.fr/man/linux/commandes/dd Page de man]

[http://www.softpanorama.org/Tools/dd.shtml Unix DD Command and Image Creation]

[http://www.linuxquestions.org/linux/answers/Applications_GUI_Multimedia/How_To_Do_Eveything_With_DD The real dd command]


[[Utilisateur:Lol|Lol]] 8 mars 2011 à 07:09 (CST)
Catégorie:Commandes_de_base</text>
      <sha1>gx4xx691xp9j1olulu1tz7fgkcgm0na</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2740</id>
      <parentid>2739</parentid>
      <timestamp>2011-03-08T13:15:36Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>sauvegarde MBR</comment>
      <text xml:space="preserve" bytes="5605">{{sid}} 

----

{{Ébauche|La commande dd}}

La commande dd.

= Introduction: =

Extrait de la page de man de dd :

&quot;dd copie un fichier (par défaut, depuis l'entrée standard vers la sortie standard) en permettant de sélectionner la taille de bloc, et d'effectuer des conversions.&quot;

Utilisée fréquement, la commande dd est très simple d'utilisation, très puissante et... tout aussi dangereuse.
Vérifiez toujours bien les commandes deux (trois ?) fois avant de les lancer.

&lt;span style=&quot;color:#FF0000;&quot;&gt;'''LES COMMANDES QUI SUIVENT PEUVENT ÊTRE EXTRÊMEMENT DESTRUCTIVES SI ELLES NE SONT PAS CONVENABLEMENT UTILISÉES. VOUS ÊTES PRÉVENUS!'''&lt;/span&gt;

== Syntaxe ==

La commande dd se présente généralement sous cette forme:

 dd if=&lt;source&gt; of=&lt;cible&gt; bs=&lt;taille des blocs&gt; skip= seek= conv=&lt;conversion&gt;

#source = données à copier;
#cible = endroit ou copier les données sources;
#bs = taille des blocs, de puissance 2, généralement égale à 512;
#skip = Ignorer le nombre indiqué de blocs (dont la taille est fournie par ibs) au début de la lecture;
#seek = Ignorer le nombre indiqué de blocs (dont la taille est fournie par ibs) au début de l'écriture. 
#conv = Modifier le fichier comme indiqué par l'argument conversion, qui peut prendre les valeurs suivantes (pas d'espace autour des virgules lorsque plusieurs arguments sont fournis) : 

 ascii, ebcdic, ibm, block, unblock, lcase, ucase, swab, noerror, notrunc, sync.

= Utilisation = 

== Copier une partition de disque dur sur un autre disque dur ==

Copie l'intégralité de la partition sda9 vers la partition sdb1, ne pas s'arrếter sur les erreurs de lecture.

 dd if=/dev/sda9 of=/dev/sdb1 bs=4096 conv=notrunc,noerror
 
 256000+0 enregistrements lus
 256000+0 enregistrements écrits
 1048576000 octets (1,0 GB) copiés, 30,778 s, 34,1 MB/s

notrunc = Ne pas limiter la taille du fichier de sortie.

noerror = Continuer même après des erreurs de lecture.

Remarque au sujet de l'UUID.

Copier une partition vers une autre copie aussi son UUID. Vous vous retrouvez alors avec deux partitions qui portent le même numéro...

 # blkid
 ...
 /dev/sda9: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;
 /dev/sdb1: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;

Il faut alors générer un nouveau numéro pour ne pas avoir de conflit (partition démontée...):

 # tune2fs -U random /dev/sdb1
 # blkid
 /dev/sda9: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;
 /dev/sdb1: UUID=&quot;75aa7a37-d2a2-4cf4-88f8-616067c7a684&quot; TYPE=&quot;ext2&quot;

== Cloner un disque dur en entier ==

Copie de l'intégralité (y compris le mbr) du disque sdg vers le disque sdh:

 dd if=/dev/sdg of=/dev/sdh conv=notrunc,noerror
 
 4030464+0 enregistrements lus
 4030464+0 enregistrements écrits
 2063597568 octets (2,1 GB) copiés, 1160,41 s, 1,8 MB/s

== Réaliser l'image ISO d'un CD ==

 dd if=/dev/sr0 of=/home/laurent/cd.iso bs=2048 conv=notrunc
 
 737+0 enregistrements lus
 737+0 enregistrements écrits
 1509376 octets (1,5 MB) copiés, 3,3215 s, 454 kB/s

Pour monter l'image obtenue:

 # mkdir /mnt/cd
 # mount -o loop -t iso9660 cd.iso /mnt/cd

Insertion permanente dans fstab:

 /chemin_vers_iso/cd.iso   /mnt/cd  iso9660 rw,user,noauto 0 0

== Effacer un lecteur ==

ATTENTION, COMMANDE DANGEREUSE!

Pour les paranos...
La commande suivante remplie 7 fois de suite un périphérique avec des données aléatoires.
Autant dire qu'il ne sera plus possible de récupérer quoi que ce soit sur ce périphérique...

 for n in `seq 7`; do dd if=/dev/urandom of=/dev/sdc bs=8b conv=notrunc; done
 
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 37,0691 s, 6,9 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 37,1506 s, 6,9 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,6351 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,4881 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,4908 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,5277 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,897 s, 6,9 MB/s

== Sauvegarder le MBR d'un disque dur ==

 dd if=/dev/sda of=MBR.image bs=446 count=1
 
 1+0 enregistrements lus
 1+0 enregistrements écrits
 446 octets (446 B) copiés, 3,0622e-05 s, 14,6 MB/s

Cette commande copiera les 446 premiers octets du disque dur dans un fichier.

= Références =

[http://pwet.fr/man/linux/commandes/dd Page de man]

[http://www.softpanorama.org/Tools/dd.shtml Unix DD Command and Image Creation]

[http://www.linuxquestions.org/linux/answers/Applications_GUI_Multimedia/How_To_Do_Eveything_With_DD The real dd command]


[[Utilisateur:Lol|Lol]] 8 mars 2011 à 07:09 (CST)
Catégorie:Commandes_de_base</text>
      <sha1>jq5rbzp2qpov5zpoqk1wukwu66tibgb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2741</id>
      <parentid>2740</parentid>
      <timestamp>2011-03-08T13:16:40Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Catégorie */</comment>
      <text xml:space="preserve" bytes="5609">{{sid}} 

----

{{Ébauche|La commande dd}}

La commande dd.

= Introduction: =

Extrait de la page de man de dd :

&quot;dd copie un fichier (par défaut, depuis l'entrée standard vers la sortie standard) en permettant de sélectionner la taille de bloc, et d'effectuer des conversions.&quot;

Utilisée fréquement, la commande dd est très simple d'utilisation, très puissante et... tout aussi dangereuse.
Vérifiez toujours bien les commandes deux (trois ?) fois avant de les lancer.

&lt;span style=&quot;color:#FF0000;&quot;&gt;'''LES COMMANDES QUI SUIVENT PEUVENT ÊTRE EXTRÊMEMENT DESTRUCTIVES SI ELLES NE SONT PAS CONVENABLEMENT UTILISÉES. VOUS ÊTES PRÉVENUS!'''&lt;/span&gt;

== Syntaxe ==

La commande dd se présente généralement sous cette forme:

 dd if=&lt;source&gt; of=&lt;cible&gt; bs=&lt;taille des blocs&gt; skip= seek= conv=&lt;conversion&gt;

#source = données à copier;
#cible = endroit ou copier les données sources;
#bs = taille des blocs, de puissance 2, généralement égale à 512;
#skip = Ignorer le nombre indiqué de blocs (dont la taille est fournie par ibs) au début de la lecture;
#seek = Ignorer le nombre indiqué de blocs (dont la taille est fournie par ibs) au début de l'écriture. 
#conv = Modifier le fichier comme indiqué par l'argument conversion, qui peut prendre les valeurs suivantes (pas d'espace autour des virgules lorsque plusieurs arguments sont fournis) : 

 ascii, ebcdic, ibm, block, unblock, lcase, ucase, swab, noerror, notrunc, sync.

= Utilisation = 

== Copier une partition de disque dur sur un autre disque dur ==

Copie l'intégralité de la partition sda9 vers la partition sdb1, ne pas s'arrếter sur les erreurs de lecture.

 dd if=/dev/sda9 of=/dev/sdb1 bs=4096 conv=notrunc,noerror
 
 256000+0 enregistrements lus
 256000+0 enregistrements écrits
 1048576000 octets (1,0 GB) copiés, 30,778 s, 34,1 MB/s

notrunc = Ne pas limiter la taille du fichier de sortie.

noerror = Continuer même après des erreurs de lecture.

Remarque au sujet de l'UUID.

Copier une partition vers une autre copie aussi son UUID. Vous vous retrouvez alors avec deux partitions qui portent le même numéro...

 # blkid
 ...
 /dev/sda9: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;
 /dev/sdb1: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;

Il faut alors générer un nouveau numéro pour ne pas avoir de conflit (partition démontée...):

 # tune2fs -U random /dev/sdb1
 # blkid
 /dev/sda9: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;
 /dev/sdb1: UUID=&quot;75aa7a37-d2a2-4cf4-88f8-616067c7a684&quot; TYPE=&quot;ext2&quot;

== Cloner un disque dur en entier ==

Copie de l'intégralité (y compris le mbr) du disque sdg vers le disque sdh:

 dd if=/dev/sdg of=/dev/sdh conv=notrunc,noerror
 
 4030464+0 enregistrements lus
 4030464+0 enregistrements écrits
 2063597568 octets (2,1 GB) copiés, 1160,41 s, 1,8 MB/s

== Réaliser l'image ISO d'un CD ==

 dd if=/dev/sr0 of=/home/laurent/cd.iso bs=2048 conv=notrunc
 
 737+0 enregistrements lus
 737+0 enregistrements écrits
 1509376 octets (1,5 MB) copiés, 3,3215 s, 454 kB/s

Pour monter l'image obtenue:

 # mkdir /mnt/cd
 # mount -o loop -t iso9660 cd.iso /mnt/cd

Insertion permanente dans fstab:

 /chemin_vers_iso/cd.iso   /mnt/cd  iso9660 rw,user,noauto 0 0

== Effacer un lecteur ==

ATTENTION, COMMANDE DANGEREUSE!

Pour les paranos...
La commande suivante remplie 7 fois de suite un périphérique avec des données aléatoires.
Autant dire qu'il ne sera plus possible de récupérer quoi que ce soit sur ce périphérique...

 for n in `seq 7`; do dd if=/dev/urandom of=/dev/sdc bs=8b conv=notrunc; done
 
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 37,0691 s, 6,9 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 37,1506 s, 6,9 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,6351 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,4881 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,4908 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,5277 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,897 s, 6,9 MB/s

== Sauvegarder le MBR d'un disque dur ==

 dd if=/dev/sda of=MBR.image bs=446 count=1
 
 1+0 enregistrements lus
 1+0 enregistrements écrits
 446 octets (446 B) copiés, 3,0622e-05 s, 14,6 MB/s

Cette commande copiera les 446 premiers octets du disque dur dans un fichier.

= Références =

[http://pwet.fr/man/linux/commandes/dd Page de man]

[http://www.softpanorama.org/Tools/dd.shtml Unix DD Command and Image Creation]

[http://www.linuxquestions.org/linux/answers/Applications_GUI_Multimedia/How_To_Do_Eveything_With_DD The real dd command]


[[Utilisateur:Lol|Lol]] 8 mars 2011 à 07:09 (CST)
[[Catégorie:Commandes_de_base]]</text>
      <sha1>ds4gmdazf17rjxofl115gxtoirfhfoa</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3223</id>
      <parentid>2741</parentid>
      <timestamp>2011-08-07T18:49:40Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="5593">{{Ébauche|La commande dd}}

La commande dd.

= Introduction: =

Extrait de la page de man de dd :

&quot;dd copie un fichier (par défaut, depuis l'entrée standard vers la sortie standard) en permettant de sélectionner la taille de bloc, et d'effectuer des conversions.&quot;

Utilisée fréquement, la commande dd est très simple d'utilisation, très puissante et... tout aussi dangereuse.
Vérifiez toujours bien les commandes deux (trois ?) fois avant de les lancer.

&lt;span style=&quot;color:#FF0000;&quot;&gt;'''LES COMMANDES QUI SUIVENT PEUVENT ÊTRE EXTRÊMEMENT DESTRUCTIVES SI ELLES NE SONT PAS CONVENABLEMENT UTILISÉES. VOUS ÊTES PRÉVENUS!'''&lt;/span&gt;

== Syntaxe ==

La commande dd se présente généralement sous cette forme:

 dd if=&lt;source&gt; of=&lt;cible&gt; bs=&lt;taille des blocs&gt; skip= seek= conv=&lt;conversion&gt;

#source = données à copier;
#cible = endroit ou copier les données sources;
#bs = taille des blocs, de puissance 2, généralement égale à 512;
#skip = Ignorer le nombre indiqué de blocs (dont la taille est fournie par ibs) au début de la lecture;
#seek = Ignorer le nombre indiqué de blocs (dont la taille est fournie par ibs) au début de l'écriture. 
#conv = Modifier le fichier comme indiqué par l'argument conversion, qui peut prendre les valeurs suivantes (pas d'espace autour des virgules lorsque plusieurs arguments sont fournis) : 

 ascii, ebcdic, ibm, block, unblock, lcase, ucase, swab, noerror, notrunc, sync.

= Utilisation = 

== Copier une partition de disque dur sur un autre disque dur ==

Copie l'intégralité de la partition sda9 vers la partition sdb1, ne pas s'arrếter sur les erreurs de lecture.

 dd if=/dev/sda9 of=/dev/sdb1 bs=4096 conv=notrunc,noerror
 
 256000+0 enregistrements lus
 256000+0 enregistrements écrits
 1048576000 octets (1,0 GB) copiés, 30,778 s, 34,1 MB/s

notrunc = Ne pas limiter la taille du fichier de sortie.

noerror = Continuer même après des erreurs de lecture.

Remarque au sujet de l'UUID.

Copier une partition vers une autre copie aussi son UUID. Vous vous retrouvez alors avec deux partitions qui portent le même numéro...

 # blkid
 ...
 /dev/sda9: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;
 /dev/sdb1: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;

Il faut alors générer un nouveau numéro pour ne pas avoir de conflit (partition démontée...):

 # tune2fs -U random /dev/sdb1
 # blkid
 /dev/sda9: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;
 /dev/sdb1: UUID=&quot;75aa7a37-d2a2-4cf4-88f8-616067c7a684&quot; TYPE=&quot;ext2&quot;

== Cloner un disque dur en entier ==

Copie de l'intégralité (y compris le mbr) du disque sdg vers le disque sdh:

 dd if=/dev/sdg of=/dev/sdh conv=notrunc,noerror
 
 4030464+0 enregistrements lus
 4030464+0 enregistrements écrits
 2063597568 octets (2,1 GB) copiés, 1160,41 s, 1,8 MB/s

== Réaliser l'image ISO d'un CD ==

 dd if=/dev/sr0 of=/home/laurent/cd.iso bs=2048 conv=notrunc
 
 737+0 enregistrements lus
 737+0 enregistrements écrits
 1509376 octets (1,5 MB) copiés, 3,3215 s, 454 kB/s

Pour monter l'image obtenue:

 # mkdir /mnt/cd
 # mount -o loop -t iso9660 cd.iso /mnt/cd

Insertion permanente dans fstab:

 /chemin_vers_iso/cd.iso   /mnt/cd  iso9660 rw,user,noauto 0 0

== Effacer un lecteur ==

ATTENTION, COMMANDE DANGEREUSE!

Pour les paranos...
La commande suivante remplie 7 fois de suite un périphérique avec des données aléatoires.
Autant dire qu'il ne sera plus possible de récupérer quoi que ce soit sur ce périphérique...

 for n in `seq 7`; do dd if=/dev/urandom of=/dev/sdc bs=8b conv=notrunc; done
 
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 37,0691 s, 6,9 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 37,1506 s, 6,9 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,6351 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,4881 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,4908 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,5277 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,897 s, 6,9 MB/s

== Sauvegarder le MBR d'un disque dur ==

 dd if=/dev/sda of=MBR.image bs=446 count=1
 
 1+0 enregistrements lus
 1+0 enregistrements écrits
 446 octets (446 B) copiés, 3,0622e-05 s, 14,6 MB/s

Cette commande copiera les 446 premiers octets du disque dur dans un fichier.

= Références =

[http://pwet.fr/man/linux/commandes/dd Page de man]

[http://www.softpanorama.org/Tools/dd.shtml Unix DD Command and Image Creation]

[http://www.linuxquestions.org/linux/answers/Applications_GUI_Multimedia/How_To_Do_Eveything_With_DD The real dd command]


[[Utilisateur:Lol|Lol]] 8 mars 2011 à 07:09 (CST)
[[Catégorie:Commandes_de_base]]</text>
      <sha1>t7zqcu799bl4z2dn1v2kg2usz27956l</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3865</id>
      <parentid>3223</parentid>
      <timestamp>2012-03-03T09:22:12Z</timestamp>
      <contributor>
        <username>Hulk</username>
        <id>190</id>
      </contributor>
      <comment>/* Références */</comment>
      <text xml:space="preserve" bytes="6255">{{Ébauche|La commande dd}}

La commande dd.

= Introduction: =

Extrait de la page de man de dd :

&quot;dd copie un fichier (par défaut, depuis l'entrée standard vers la sortie standard) en permettant de sélectionner la taille de bloc, et d'effectuer des conversions.&quot;

Utilisée fréquement, la commande dd est très simple d'utilisation, très puissante et... tout aussi dangereuse.
Vérifiez toujours bien les commandes deux (trois ?) fois avant de les lancer.

&lt;span style=&quot;color:#FF0000;&quot;&gt;'''LES COMMANDES QUI SUIVENT PEUVENT ÊTRE EXTRÊMEMENT DESTRUCTIVES SI ELLES NE SONT PAS CONVENABLEMENT UTILISÉES. VOUS ÊTES PRÉVENUS!'''&lt;/span&gt;

== Syntaxe ==

La commande dd se présente généralement sous cette forme:

 dd if=&lt;source&gt; of=&lt;cible&gt; bs=&lt;taille des blocs&gt; skip= seek= conv=&lt;conversion&gt;

#source = données à copier;
#cible = endroit ou copier les données sources;
#bs = taille des blocs, de puissance 2, généralement égale à 512;
#skip = Ignorer le nombre indiqué de blocs (dont la taille est fournie par ibs) au début de la lecture;
#seek = Ignorer le nombre indiqué de blocs (dont la taille est fournie par ibs) au début de l'écriture. 
#conv = Modifier le fichier comme indiqué par l'argument conversion, qui peut prendre les valeurs suivantes (pas d'espace autour des virgules lorsque plusieurs arguments sont fournis) : 

 ascii, ebcdic, ibm, block, unblock, lcase, ucase, swab, noerror, notrunc, sync.

= Utilisation = 

== Copier une partition de disque dur sur un autre disque dur ==

Copie l'intégralité de la partition sda9 vers la partition sdb1, ne pas s'arrếter sur les erreurs de lecture.

 dd if=/dev/sda9 of=/dev/sdb1 bs=4096 conv=notrunc,noerror
 
 256000+0 enregistrements lus
 256000+0 enregistrements écrits
 1048576000 octets (1,0 GB) copiés, 30,778 s, 34,1 MB/s

notrunc = Ne pas limiter la taille du fichier de sortie.

noerror = Continuer même après des erreurs de lecture.

Remarque au sujet de l'UUID.

Copier une partition vers une autre copie aussi son UUID. Vous vous retrouvez alors avec deux partitions qui portent le même numéro...

 # blkid
 ...
 /dev/sda9: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;
 /dev/sdb1: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;

Il faut alors générer un nouveau numéro pour ne pas avoir de conflit (partition démontée...):

 # tune2fs -U random /dev/sdb1
 # blkid
 /dev/sda9: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;
 /dev/sdb1: UUID=&quot;75aa7a37-d2a2-4cf4-88f8-616067c7a684&quot; TYPE=&quot;ext2&quot;

== Cloner un disque dur en entier ==

Copie de l'intégralité (y compris le mbr) du disque sdg vers le disque sdh:

 dd if=/dev/sdg of=/dev/sdh conv=notrunc,noerror
 
 4030464+0 enregistrements lus
 4030464+0 enregistrements écrits
 2063597568 octets (2,1 GB) copiés, 1160,41 s, 1,8 MB/s

== Réaliser l'image ISO d'un CD ==

 dd if=/dev/sr0 of=/home/laurent/cd.iso bs=2048 conv=notrunc
 
 737+0 enregistrements lus
 737+0 enregistrements écrits
 1509376 octets (1,5 MB) copiés, 3,3215 s, 454 kB/s

Pour monter l'image obtenue:

 # mkdir /mnt/cd
 # mount -o loop -t iso9660 cd.iso /mnt/cd

Insertion permanente dans fstab:

 /chemin_vers_iso/cd.iso   /mnt/cd  iso9660 rw,user,noauto 0 0

== Effacer un lecteur ==

ATTENTION, COMMANDE DANGEREUSE!

Pour les paranos...
La commande suivante remplie 7 fois de suite un périphérique avec des données aléatoires.
Autant dire qu'il ne sera plus possible de récupérer quoi que ce soit sur ce périphérique...

 for n in `seq 7`; do dd if=/dev/urandom of=/dev/sdc bs=8b conv=notrunc; done
 
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 37,0691 s, 6,9 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 37,1506 s, 6,9 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,6351 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,4881 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,4908 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,5277 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,897 s, 6,9 MB/s

== Sauvegarder le MBR d'un disque dur ==

 dd if=/dev/sda of=MBR.image bs=446 count=1
 
 1+0 enregistrements lus
 1+0 enregistrements écrits
 446 octets (446 B) copiés, 3,0622e-05 s, 14,6 MB/s

Cette commande copiera les 446 premiers octets du disque dur dans un fichier.

== Sauvegarder la table de partition d'un disque dur ==

 dd if=/dev/sda of=MBR_Plus_Table.image bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 7,4232e-05 s, 6,9 MB/s

Cette commande copiera les 512 premiers octets du disque dur dans un fichier.

pour restaurer la table de partition
 dd if=MBR_Plus_Table.image of=/dev/sda bs=1 count=64 skip=446 seek=446 
 64+0 enregistrements lus
 64+0 enregistrements écrits
 64 octets (64 B) copiés, 0,00132602 s, 48,3 kB/s

Cette commande copiera les 64 dernier octets (skip=446) du fichier MBR_Plus_Table.image sur du disque  dur a partir de l'octet 447 ( seek=446 ).

= Références =

[http://pwet.fr/man/linux/commandes/dd Page de man]

[http://www.softpanorama.org/Tools/dd.shtml Unix DD Command and Image Creation]

[http://www.linuxquestions.org/linux/answers/Applications_GUI_Multimedia/How_To_Do_Eveything_With_DD The real dd command]


[[Utilisateur:Lol|Lol]] 8 mars 2011 à 07:09 (CST)
[[Catégorie:Commandes_de_base]]</text>
      <sha1>p8cti80sjmwzmj9krf1ia1pglwbd5zv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3912</id>
      <parentid>3865</parentid>
      <timestamp>2012-03-09T16:30:22Z</timestamp>
      <contributor>
        <username>Hulk</username>
        <id>190</id>
      </contributor>
      <comment>/* Sauvegarder la table de partition d'un disque dur */</comment>
      <text xml:space="preserve" bytes="6799">{{Ébauche|La commande dd}}

La commande dd.

= Introduction: =

Extrait de la page de man de dd :

&quot;dd copie un fichier (par défaut, depuis l'entrée standard vers la sortie standard) en permettant de sélectionner la taille de bloc, et d'effectuer des conversions.&quot;

Utilisée fréquement, la commande dd est très simple d'utilisation, très puissante et... tout aussi dangereuse.
Vérifiez toujours bien les commandes deux (trois ?) fois avant de les lancer.

&lt;span style=&quot;color:#FF0000;&quot;&gt;'''LES COMMANDES QUI SUIVENT PEUVENT ÊTRE EXTRÊMEMENT DESTRUCTIVES SI ELLES NE SONT PAS CONVENABLEMENT UTILISÉES. VOUS ÊTES PRÉVENUS!'''&lt;/span&gt;

== Syntaxe ==

La commande dd se présente généralement sous cette forme:

 dd if=&lt;source&gt; of=&lt;cible&gt; bs=&lt;taille des blocs&gt; skip= seek= conv=&lt;conversion&gt;

#source = données à copier;
#cible = endroit ou copier les données sources;
#bs = taille des blocs, de puissance 2, généralement égale à 512;
#skip = Ignorer le nombre indiqué de blocs (dont la taille est fournie par ibs) au début de la lecture;
#seek = Ignorer le nombre indiqué de blocs (dont la taille est fournie par ibs) au début de l'écriture. 
#conv = Modifier le fichier comme indiqué par l'argument conversion, qui peut prendre les valeurs suivantes (pas d'espace autour des virgules lorsque plusieurs arguments sont fournis) : 

 ascii, ebcdic, ibm, block, unblock, lcase, ucase, swab, noerror, notrunc, sync.

= Utilisation = 

== Copier une partition de disque dur sur un autre disque dur ==

Copie l'intégralité de la partition sda9 vers la partition sdb1, ne pas s'arrếter sur les erreurs de lecture.

 dd if=/dev/sda9 of=/dev/sdb1 bs=4096 conv=notrunc,noerror
 
 256000+0 enregistrements lus
 256000+0 enregistrements écrits
 1048576000 octets (1,0 GB) copiés, 30,778 s, 34,1 MB/s

notrunc = Ne pas limiter la taille du fichier de sortie.

noerror = Continuer même après des erreurs de lecture.

Remarque au sujet de l'UUID.

Copier une partition vers une autre copie aussi son UUID. Vous vous retrouvez alors avec deux partitions qui portent le même numéro...

 # blkid
 ...
 /dev/sda9: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;
 /dev/sdb1: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;

Il faut alors générer un nouveau numéro pour ne pas avoir de conflit (partition démontée...):

 # tune2fs -U random /dev/sdb1
 # blkid
 /dev/sda9: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;
 /dev/sdb1: UUID=&quot;75aa7a37-d2a2-4cf4-88f8-616067c7a684&quot; TYPE=&quot;ext2&quot;

== Cloner un disque dur en entier ==

Copie de l'intégralité (y compris le mbr) du disque sdg vers le disque sdh:

 dd if=/dev/sdg of=/dev/sdh conv=notrunc,noerror
 
 4030464+0 enregistrements lus
 4030464+0 enregistrements écrits
 2063597568 octets (2,1 GB) copiés, 1160,41 s, 1,8 MB/s

== Réaliser l'image ISO d'un CD ==

 dd if=/dev/sr0 of=/home/laurent/cd.iso bs=2048 conv=notrunc
 
 737+0 enregistrements lus
 737+0 enregistrements écrits
 1509376 octets (1,5 MB) copiés, 3,3215 s, 454 kB/s

Pour monter l'image obtenue:

 # mkdir /mnt/cd
 # mount -o loop -t iso9660 cd.iso /mnt/cd

Insertion permanente dans fstab:

 /chemin_vers_iso/cd.iso   /mnt/cd  iso9660 rw,user,noauto 0 0

== Effacer un lecteur ==

ATTENTION, COMMANDE DANGEREUSE!

Pour les paranos...
La commande suivante remplie 7 fois de suite un périphérique avec des données aléatoires.
Autant dire qu'il ne sera plus possible de récupérer quoi que ce soit sur ce périphérique...

 for n in `seq 7`; do dd if=/dev/urandom of=/dev/sdc bs=8b conv=notrunc; done
 
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 37,0691 s, 6,9 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 37,1506 s, 6,9 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,6351 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,4881 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,4908 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,5277 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,897 s, 6,9 MB/s

== Sauvegarder le MBR d'un disque dur ==

 dd if=/dev/sda of=MBR.image bs=446 count=1
 
 1+0 enregistrements lus
 1+0 enregistrements écrits
 446 octets (446 B) copiés, 3,0622e-05 s, 14,6 MB/s

Cette commande copiera les 446 premiers octets du disque dur dans un fichier.

== Sauvegarder la table de partition d'un disque dur ==

 dd if=/dev/sda of=MBR_Plus_Table.image bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 7,4232e-05 s, 6,9 MB/s

Cette commande copiera les 512 premiers octets du disque dur dans un fichier.

pour restaurer la table de partition
 dd if=MBR_Plus_Table.image of=/dev/sda bs=1 count=64 skip=446 seek=446 
 64+0 enregistrements lus
 64+0 enregistrements écrits
 64 octets (64 B) copiés, 0,00132602 s, 48,3 kB/s

Cette commande copiera les 64 dernier octets (skip=446) du fichier MBR_Plus_Table.image sur du disque  dur a partir de l'octet 447 ( seek=446 ).

== Sauvegarder d'un disque dur ou d'une partition ==

 dd if=/dev/sdX | gzip -c &gt; /media/suportamovible/fichierimage.dd.gz 

Cette commande fait un clone du disque(partition) sdX en le compressent dans un fichier  , ce ci quelque soit l'OS ou le type de formatage des partitions .

Pour restaurer le disque ainsi sauvegarder faire:

 gzip -c -d /media/suportamovible/fichierimage.dd.gz | dd of=/dev/sdX

Cette commande décompresse (gzip -c -d) le fichier vers (|) l'entrée standard de dd qui le restaure sur le périphérique (of=/dev/sdX).

= Références =

[http://pwet.fr/man/linux/commandes/dd Page de man]

[http://www.softpanorama.org/Tools/dd.shtml Unix DD Command and Image Creation]

[http://www.linuxquestions.org/linux/answers/Applications_GUI_Multimedia/How_To_Do_Eveything_With_DD The real dd command]


[[Utilisateur:Lol|Lol]] 8 mars 2011 à 07:09 (CST)
[[Catégorie:Commandes_de_base]]</text>
      <sha1>n7nfhej3zyrrh1sobjg0349gkxa2ozd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3920</id>
      <parentid>3912</parentid>
      <timestamp>2012-03-12T12:54:01Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="6813">{{Ébauche|La commande dd}}

La commande dd.

= Introduction: =

Extrait de la page de man de dd :

&quot;dd copie un fichier (par défaut, depuis l'entrée standard vers la sortie standard) en permettant de sélectionner la taille de bloc, et d'effectuer des conversions.&quot;

Utilisée fréquement, la commande dd est très simple d'utilisation, très puissante et... tout aussi dangereuse.
Vérifiez toujours bien les commandes deux (trois ?) fois avant de les lancer.

&lt;span style=&quot;color:#FF0000;&quot;&gt;'''LES COMMANDES QUI SUIVENT PEUVENT ÊTRE EXTRÊMEMENT DESTRUCTIVES SI ELLES NE SONT PAS CONVENABLEMENT UTILISÉES. VOUS ÊTES PRÉVENUS!'''&lt;/span&gt;

== Syntaxe ==

La commande dd se présente généralement sous cette forme:

 dd if=&lt;source&gt; of=&lt;cible&gt; bs=&lt;taille des blocs&gt; skip= seek= conv=&lt;conversion&gt;

#source = données à copier;
#cible = endroit ou copier les données sources;
#bs = taille des blocs, de puissance 2, généralement égale à 512;
#skip = Ignorer le nombre indiqué de blocs (dont la taille est fournie par ibs) au début de la lecture;
#seek = Ignorer le nombre indiqué de blocs (dont la taille est fournie par ibs) au début de l'écriture. 
#conv = Modifier le fichier comme indiqué par l'argument conversion, qui peut prendre les valeurs suivantes (pas d'espace autour des virgules lorsque plusieurs arguments sont fournis) : 

 ascii, ebcdic, ibm, block, unblock, lcase, ucase, swab, noerror, notrunc, sync.

= Utilisation = 

== Copier une partition de disque dur sur un autre disque dur ==

Copie l'intégralité de la partition sda9 vers la partition sdb1, ne pas s'arrếter sur les erreurs de lecture.

 dd if=/dev/sda9 of=/dev/sdb1 bs=4096 conv=notrunc,noerror
 
 256000+0 enregistrements lus
 256000+0 enregistrements écrits
 1048576000 octets (1,0 GB) copiés, 30,778 s, 34,1 MB/s

notrunc = Ne pas limiter la taille du fichier de sortie.

noerror = Continuer même après des erreurs de lecture.

Remarque au sujet de l'UUID.

Copier une partition vers une autre copie aussi son UUID. Vous vous retrouvez alors avec deux partitions qui portent le même numéro...

 # blkid
 ...
 /dev/sda9: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;
 /dev/sdb1: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;

Il faut alors générer un nouveau numéro pour ne pas avoir de conflit (partition démontée...):

 # tune2fs -U random /dev/sdb1
 # blkid
 /dev/sda9: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;
 /dev/sdb1: UUID=&quot;75aa7a37-d2a2-4cf4-88f8-616067c7a684&quot; TYPE=&quot;ext2&quot;

== Cloner un disque dur en entier ==

Copie de l'intégralité (y compris le mbr) du disque sdg vers le disque sdh:

 dd if=/dev/sdg of=/dev/sdh conv=notrunc,noerror
 
 4030464+0 enregistrements lus
 4030464+0 enregistrements écrits
 2063597568 octets (2,1 GB) copiés, 1160,41 s, 1,8 MB/s

== Réaliser l'image ISO d'un CD ==

 dd if=/dev/sr0 of=/home/laurent/cd.iso bs=2048 conv=notrunc
 
 737+0 enregistrements lus
 737+0 enregistrements écrits
 1509376 octets (1,5 MB) copiés, 3,3215 s, 454 kB/s

Pour monter l'image obtenue:

 # mkdir /mnt/cd
 # mount -o loop -t iso9660 cd.iso /mnt/cd

Insertion permanente dans fstab:

 /chemin_vers_iso/cd.iso   /mnt/cd  iso9660 rw,user,noauto 0 0

== Effacer un lecteur ==

ATTENTION, COMMANDE DANGEREUSE!

Pour les paranos...
La commande suivante remplie 7 fois de suite un périphérique avec des données aléatoires.
Autant dire qu'il ne sera plus possible de récupérer quoi que ce soit sur ce périphérique...

 for n in `seq 7`; do dd if=/dev/urandom of=/dev/sdc bs=8b conv=notrunc; done
 
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 37,0691 s, 6,9 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 37,1506 s, 6,9 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,6351 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,4881 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,4908 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,5277 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,897 s, 6,9 MB/s

== Sauvegarder le MBR d'un disque dur ==

 dd if=/dev/sda of=MBR.image bs=446 count=1
 
 1+0 enregistrements lus
 1+0 enregistrements écrits
 446 octets (446 B) copiés, 3,0622e-05 s, 14,6 MB/s

Cette commande copiera les 446 premiers octets du disque dur dans un fichier.

== Sauvegarder la table de partition d'un disque dur ==

 dd if=/dev/sda of=MBR_Plus_Table.image bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 7,4232e-05 s, 6,9 MB/s

Cette commande copiera les 512 premiers octets du disque dur dans un fichier.

pour restaurer la table de partition
 dd if=MBR_Plus_Table.image of=/dev/sda bs=1 count=64 skip=446 seek=446 
 64+0 enregistrements lus
 64+0 enregistrements écrits
 64 octets (64 B) copiés, 0,00132602 s, 48,3 kB/s

Cette commande copiera les 64 dernier octets (skip=446) du fichier MBR_Plus_Table.image sur du disque  dur a partir de l'octet 447 ( seek=446 ).

== Sauvegarder un disque dur ou une partition dans une image compressée ==

 dd if=/dev/sdX | gzip -c &gt; /media/suportamovible/fichierimage.dd.gz 

Cette commande fait un clone du disque(partition) sdX en le compressant dans un fichier, peu importe l'OS ou le type de formatage des partitions .

Pour restaurer le disque ainsi sauvegarder faire:

 gzip -c -d /media/suportamovible/fichierimage.dd.gz | dd of=/dev/sdX

Cette commande décompresse (gzip -c -d) le fichier vers (|) l'entrée standard de dd qui le restaure sur le périphérique (of=/dev/sdX).

= Références =

[http://pwet.fr/man/linux/commandes/dd Page de man]

[http://www.softpanorama.org/Tools/dd.shtml Unix DD Command and Image Creation]

[http://www.linuxquestions.org/linux/answers/Applications_GUI_Multimedia/How_To_Do_Eveything_With_DD The real dd command]


[[Utilisateur:Lol|Lol]] 8 mars 2011 à 07:09 (CST)
[[Catégorie:Commandes_de_base]]</text>
      <sha1>r7p89i8onequbdu9nlf6dojjobthhfv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4109</id>
      <parentid>3920</parentid>
      <timestamp>2012-04-28T08:47:38Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="6842">{{Ébauche|La commande dd}}

La commande dd.

= Introduction: =

Extrait de la page de man de dd :

&quot;dd copie un fichier (par défaut, depuis l'entrée standard vers la sortie standard) en permettant de sélectionner la taille de bloc, et d'effectuer des conversions.&quot;

Utilisée fréquement, la commande dd est très simple d'utilisation, très puissante et... tout aussi dangereuse.
Vérifiez toujours bien les commandes deux (trois ?) fois avant de les lancer.

&lt;span style=&quot;color:#FF0000;&quot;&gt;'''LES COMMANDES QUI SUIVENT PEUVENT ÊTRE EXTRÊMEMENT DESTRUCTIVES SI ELLES NE SONT PAS CONVENABLEMENT UTILISÉES. VOUS ÊTES PRÉVENUS!'''&lt;/span&gt;

== Syntaxe ==

La commande dd se présente généralement sous cette forme:

 dd if=&lt;source&gt; of=&lt;cible&gt; bs=&lt;taille des blocs&gt; skip= seek= conv=&lt;conversion&gt;

#source = données à copier;
#cible = endroit ou copier les données sources;
#bs = taille des blocs, de puissance 2, généralement égale à 512;
#skip = Ignorer le nombre indiqué de blocs (dont la taille est fournie par ibs) au début de la lecture;
#seek = Ignorer le nombre indiqué de blocs (dont la taille est fournie par ibs) au début de l'écriture. 
#conv = Modifier le fichier comme indiqué par l'argument conversion, qui peut prendre les valeurs suivantes (pas d'espace autour des virgules lorsque plusieurs arguments sont fournis) : 

 ascii, ebcdic, ibm, block, unblock, lcase, ucase, swab, noerror, notrunc, sync.

= Utilisation = 

== Copier une partition de disque dur sur un autre disque dur ==

Copie l'intégralité de la partition sda9 vers la partition sdb1, ne pas s'arrếter sur les erreurs de lecture.

 dd if=/dev/sda9 of=/dev/sdb1 bs=4096 conv=notrunc,noerror
 
 256000+0 enregistrements lus
 256000+0 enregistrements écrits
 1048576000 octets (1,0 GB) copiés, 30,778 s, 34,1 MB/s

notrunc = Ne pas limiter la taille du fichier de sortie.

noerror = Continuer même après des erreurs de lecture.

Remarque au sujet de l'UUID.

Copier une partition vers une autre copie aussi son UUID. Vous vous retrouvez alors avec deux partitions qui portent le même numéro...

 # blkid
 ...
 /dev/sda9: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;
 /dev/sdb1: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;

Il faut alors générer un nouveau numéro pour ne pas avoir de conflit (partition démontée...):

 # tune2fs -U random /dev/sdb1
 # blkid
 /dev/sda9: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;
 /dev/sdb1: UUID=&quot;75aa7a37-d2a2-4cf4-88f8-616067c7a684&quot; TYPE=&quot;ext2&quot;

== Cloner un disque dur en entier ==

Copie de l'intégralité (y compris le mbr) du disque sdg vers le disque sdh:

 dd if=/dev/sdg of=/dev/sdh conv=notrunc,noerror
 
 4030464+0 enregistrements lus
 4030464+0 enregistrements écrits
 2063597568 octets (2,1 GB) copiés, 1160,41 s, 1,8 MB/s

== Réaliser l'image ISO d'un CD ==

 dd if=/dev/sr0 of=/home/laurent/cd.iso bs=2048 conv=notrunc
 
 737+0 enregistrements lus
 737+0 enregistrements écrits
 1509376 octets (1,5 MB) copiés, 3,3215 s, 454 kB/s

Pour monter l'image obtenue:

 # mkdir /mnt/cd
 # mount -o loop -t iso9660 cd.iso /mnt/cd

Insertion permanente dans fstab:

 /chemin_vers_iso/cd.iso   /mnt/cd  iso9660 rw,user,noauto 0 0

== Effacer un lecteur ==

ATTENTION, COMMANDE DANGEREUSE!

Pour les paranos...
La commande suivante remplie 7 fois de suite un périphérique avec des données aléatoires.
Autant dire qu'il ne sera plus possible de récupérer quoi que ce soit sur ce périphérique...

 for n in `seq 7`; do dd if=/dev/urandom of=/dev/sdc bs=8b conv=notrunc; done
 
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 37,0691 s, 6,9 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 37,1506 s, 6,9 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,6351 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,4881 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,4908 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,5277 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,897 s, 6,9 MB/s

== Sauvegarder le MBR d'un disque dur ==

 dd if=/dev/sda of=MBR.image bs=446 count=1
 
 1+0 enregistrements lus
 1+0 enregistrements écrits
 446 octets (446 B) copiés, 3,0622e-05 s, 14,6 MB/s

Cette commande copiera les 446 premiers octets du disque dur dans un fichier.

== Sauvegarder la table de partition d'un disque dur ==

 dd if=/dev/sda of=MBR_Plus_Table.image bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 7,4232e-05 s, 6,9 MB/s

Cette commande copiera les 512 premiers octets du disque dur dans un fichier.

pour restaurer la table de partition
 dd if=MBR_Plus_Table.image of=/dev/sda bs=1 count=64 skip=446 seek=446 
 64+0 enregistrements lus
 64+0 enregistrements écrits
 64 octets (64 B) copiés, 0,00132602 s, 48,3 kB/s

Cette commande copiera les 64 dernier octets (skip=446) du fichier MBR_Plus_Table.image sur du disque  dur a partir de l'octet 447 ( seek=446 ).

== Sauvegarder un disque dur ou une partition dans une image compressée ==

 dd if=/dev/sdX | gzip -c &gt; /media/suportamovible/fichierimage.dd.gz 

Cette commande fait un clone du disque(partition) sdX en le compressant dans un fichier, peu importe l'OS ou le type de formatage des partitions .

Pour restaurer le disque ainsi sauvegarder faire:

 gzip -c -d /media/suportamovible/fichierimage.dd.gz | dd of=/dev/sdX

Cette commande décompresse (gzip -c -d) le fichier vers (|) l'entrée standard de dd qui le restaure sur le périphérique (of=/dev/sdX).

= Références =

[http://pwet.fr/man/linux/commandes/dd Page de man]

[http://www.softpanorama.org/Tools/dd.shtml Unix DD Command and Image Creation]

[http://www.linuxquestions.org/linux/answers/Applications_GUI_Multimedia/How_To_Do_Eveything_With_DD The real dd command]


[[Utilisateur:Lol|Lol]] 8 mars 2011 à 07:09 (CST)
[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>5929d0cf577y7w7xflphttm2gyp23ev</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5169</id>
      <parentid>4109</parentid>
      <timestamp>2013-05-14T12:51:11Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <comment>/* Sauvegarder un disque dur ou une partition dans une image compressée */</comment>
      <text xml:space="preserve" bytes="7585">{{Ébauche|La commande dd}}

La commande dd.

= Introduction: =

Extrait de la page de man de dd :

&quot;dd copie un fichier (par défaut, depuis l'entrée standard vers la sortie standard) en permettant de sélectionner la taille de bloc, et d'effectuer des conversions.&quot;

Utilisée fréquement, la commande dd est très simple d'utilisation, très puissante et... tout aussi dangereuse.
Vérifiez toujours bien les commandes deux (trois ?) fois avant de les lancer.

&lt;span style=&quot;color:#FF0000;&quot;&gt;'''LES COMMANDES QUI SUIVENT PEUVENT ÊTRE EXTRÊMEMENT DESTRUCTIVES SI ELLES NE SONT PAS CONVENABLEMENT UTILISÉES. VOUS ÊTES PRÉVENUS!'''&lt;/span&gt;

== Syntaxe ==

La commande dd se présente généralement sous cette forme:

 dd if=&lt;source&gt; of=&lt;cible&gt; bs=&lt;taille des blocs&gt; skip= seek= conv=&lt;conversion&gt;

#source = données à copier;
#cible = endroit ou copier les données sources;
#bs = taille des blocs, de puissance 2, généralement égale à 512;
#skip = Ignorer le nombre indiqué de blocs (dont la taille est fournie par ibs) au début de la lecture;
#seek = Ignorer le nombre indiqué de blocs (dont la taille est fournie par ibs) au début de l'écriture. 
#conv = Modifier le fichier comme indiqué par l'argument conversion, qui peut prendre les valeurs suivantes (pas d'espace autour des virgules lorsque plusieurs arguments sont fournis) : 

 ascii, ebcdic, ibm, block, unblock, lcase, ucase, swab, noerror, notrunc, sync.

= Utilisation = 

== Copier une partition de disque dur sur un autre disque dur ==

Copie l'intégralité de la partition sda9 vers la partition sdb1, ne pas s'arrếter sur les erreurs de lecture.

 dd if=/dev/sda9 of=/dev/sdb1 bs=4096 conv=notrunc,noerror
 
 256000+0 enregistrements lus
 256000+0 enregistrements écrits
 1048576000 octets (1,0 GB) copiés, 30,778 s, 34,1 MB/s

notrunc = Ne pas limiter la taille du fichier de sortie.

noerror = Continuer même après des erreurs de lecture.

Remarque au sujet de l'UUID.

Copier une partition vers une autre copie aussi son UUID. Vous vous retrouvez alors avec deux partitions qui portent le même numéro...

 # blkid
 ...
 /dev/sda9: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;
 /dev/sdb1: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;

Il faut alors générer un nouveau numéro pour ne pas avoir de conflit (partition démontée...):

 # tune2fs -U random /dev/sdb1
 # blkid
 /dev/sda9: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;
 /dev/sdb1: UUID=&quot;75aa7a37-d2a2-4cf4-88f8-616067c7a684&quot; TYPE=&quot;ext2&quot;

== Cloner un disque dur en entier ==

Copie de l'intégralité (y compris le mbr) du disque sdg vers le disque sdh:

 dd if=/dev/sdg of=/dev/sdh conv=notrunc,noerror
 
 4030464+0 enregistrements lus
 4030464+0 enregistrements écrits
 2063597568 octets (2,1 GB) copiés, 1160,41 s, 1,8 MB/s

== Réaliser l'image ISO d'un CD ==

 dd if=/dev/sr0 of=/home/laurent/cd.iso bs=2048 conv=notrunc
 
 737+0 enregistrements lus
 737+0 enregistrements écrits
 1509376 octets (1,5 MB) copiés, 3,3215 s, 454 kB/s

Pour monter l'image obtenue:

 # mkdir /mnt/cd
 # mount -o loop -t iso9660 cd.iso /mnt/cd

Insertion permanente dans fstab:

 /chemin_vers_iso/cd.iso   /mnt/cd  iso9660 rw,user,noauto 0 0

== Effacer un lecteur ==

ATTENTION, COMMANDE DANGEREUSE!

Pour les paranos...
La commande suivante remplie 7 fois de suite un périphérique avec des données aléatoires.
Autant dire qu'il ne sera plus possible de récupérer quoi que ce soit sur ce périphérique...

 for n in `seq 7`; do dd if=/dev/urandom of=/dev/sdc bs=8b conv=notrunc; done
 
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 37,0691 s, 6,9 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 37,1506 s, 6,9 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,6351 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,4881 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,4908 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,5277 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,897 s, 6,9 MB/s

== Sauvegarder le MBR d'un disque dur ==

 dd if=/dev/sda of=MBR.image bs=446 count=1
 
 1+0 enregistrements lus
 1+0 enregistrements écrits
 446 octets (446 B) copiés, 3,0622e-05 s, 14,6 MB/s

Cette commande copiera les 446 premiers octets du disque dur dans un fichier.

== Sauvegarder la table de partition d'un disque dur ==

 dd if=/dev/sda of=MBR_Plus_Table.image bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 7,4232e-05 s, 6,9 MB/s

Cette commande copiera les 512 premiers octets du disque dur dans un fichier.

pour restaurer la table de partition
 dd if=MBR_Plus_Table.image of=/dev/sda bs=1 count=64 skip=446 seek=446 
 64+0 enregistrements lus
 64+0 enregistrements écrits
 64 octets (64 B) copiés, 0,00132602 s, 48,3 kB/s

Cette commande copiera les 64 dernier octets (skip=446) du fichier MBR_Plus_Table.image sur du disque  dur a partir de l'octet 447 ( seek=446 ).

== Sauvegarder un disque dur ou une partition dans une image compressée ==

Les commandes suivantes permettent de sauvegarder dans un fichier compressé, puis de restaurer la partition &quot;n&quot; (valeur numérique) du disque &quot;/dev/sdX&quot; (lettre alphabétique).&lt;br /&gt;
(peu importe le type de partition)

 dd if=/dev/sdXn | gzip -c &gt; /media/suportamovible/fichierimage_part_dd.gz 

Dans cette commande, le programme &quot;dd&quot; lit par blocs (de 512 octets par défaut) le contenu de la partition &quot;n&quot; du disque &quot;X&quot; (/dev/sdXn),&lt;br /&gt;
le flux de sortie du programme &quot;dd&quot; est connecté par un tube anonyme (|) au flux d'entrée du programme &quot;gzip&quot;,&lt;br /&gt;
qui va compresser ce flux retourner ce flux compressé par son flux de sortie (option &quot;c&quot;) qui est redirigé par &quot;&gt;&quot; vers le fichier &quot;/media/suportamovible/fichierimage.ddpart.gz&quot;.&lt;br /&gt;&lt;br /&gt;

Pour restaurer la partition ainsi sauvegardée faire:

 gzip -cd /media/suportamovible/fichierimage_part_dd.gz | dd of=/dev/sdXn

Dans cette commande, le programme &quot;gzip&quot; décompresse (option &quot;d&quot;) le fichier &quot;/media/suportamovible/fichierimage.ddpart.gz&quot; et renvoie le résultat par son flux de sortie (option &quot;c&quot;) qui est connecté par un tube anonyme (|) à l'entrée du programme &quot;dd&quot; dont la sortie (of=) se fera sur la partition &quot;n&quot; du périphérique &quot;/dev/sdX&quot;.

= Références =

[http://pwet.fr/man/linux/commandes/dd Page de man]

[http://www.softpanorama.org/Tools/dd.shtml Unix DD Command and Image Creation]

[http://www.linuxquestions.org/linux/answers/Applications_GUI_Multimedia/How_To_Do_Eveything_With_DD The real dd command]


[[Utilisateur:Lol|Lol]] 8 mars 2011 à 07:09 (CST)
[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>ngxh4idn4srujd0w5fg6wuv1wreu6ke</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5170</id>
      <parentid>5169</parentid>
      <timestamp>2013-05-14T13:04:25Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <comment>/* Sauvegarder un disque dur ou une partition dans une image compressée */</comment>
      <text xml:space="preserve" bytes="7566">{{Ébauche|La commande dd}}

La commande dd.

= Introduction: =

Extrait de la page de man de dd :

&quot;dd copie un fichier (par défaut, depuis l'entrée standard vers la sortie standard) en permettant de sélectionner la taille de bloc, et d'effectuer des conversions.&quot;

Utilisée fréquement, la commande dd est très simple d'utilisation, très puissante et... tout aussi dangereuse.
Vérifiez toujours bien les commandes deux (trois ?) fois avant de les lancer.

&lt;span style=&quot;color:#FF0000;&quot;&gt;'''LES COMMANDES QUI SUIVENT PEUVENT ÊTRE EXTRÊMEMENT DESTRUCTIVES SI ELLES NE SONT PAS CONVENABLEMENT UTILISÉES. VOUS ÊTES PRÉVENUS!'''&lt;/span&gt;

== Syntaxe ==

La commande dd se présente généralement sous cette forme:

 dd if=&lt;source&gt; of=&lt;cible&gt; bs=&lt;taille des blocs&gt; skip= seek= conv=&lt;conversion&gt;

#source = données à copier;
#cible = endroit ou copier les données sources;
#bs = taille des blocs, de puissance 2, généralement égale à 512;
#skip = Ignorer le nombre indiqué de blocs (dont la taille est fournie par ibs) au début de la lecture;
#seek = Ignorer le nombre indiqué de blocs (dont la taille est fournie par ibs) au début de l'écriture. 
#conv = Modifier le fichier comme indiqué par l'argument conversion, qui peut prendre les valeurs suivantes (pas d'espace autour des virgules lorsque plusieurs arguments sont fournis) : 

 ascii, ebcdic, ibm, block, unblock, lcase, ucase, swab, noerror, notrunc, sync.

= Utilisation = 

== Copier une partition de disque dur sur un autre disque dur ==

Copie l'intégralité de la partition sda9 vers la partition sdb1, ne pas s'arrếter sur les erreurs de lecture.

 dd if=/dev/sda9 of=/dev/sdb1 bs=4096 conv=notrunc,noerror
 
 256000+0 enregistrements lus
 256000+0 enregistrements écrits
 1048576000 octets (1,0 GB) copiés, 30,778 s, 34,1 MB/s

notrunc = Ne pas limiter la taille du fichier de sortie.

noerror = Continuer même après des erreurs de lecture.

Remarque au sujet de l'UUID.

Copier une partition vers une autre copie aussi son UUID. Vous vous retrouvez alors avec deux partitions qui portent le même numéro...

 # blkid
 ...
 /dev/sda9: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;
 /dev/sdb1: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;

Il faut alors générer un nouveau numéro pour ne pas avoir de conflit (partition démontée...):

 # tune2fs -U random /dev/sdb1
 # blkid
 /dev/sda9: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;
 /dev/sdb1: UUID=&quot;75aa7a37-d2a2-4cf4-88f8-616067c7a684&quot; TYPE=&quot;ext2&quot;

== Cloner un disque dur en entier ==

Copie de l'intégralité (y compris le mbr) du disque sdg vers le disque sdh:

 dd if=/dev/sdg of=/dev/sdh conv=notrunc,noerror
 
 4030464+0 enregistrements lus
 4030464+0 enregistrements écrits
 2063597568 octets (2,1 GB) copiés, 1160,41 s, 1,8 MB/s

== Réaliser l'image ISO d'un CD ==

 dd if=/dev/sr0 of=/home/laurent/cd.iso bs=2048 conv=notrunc
 
 737+0 enregistrements lus
 737+0 enregistrements écrits
 1509376 octets (1,5 MB) copiés, 3,3215 s, 454 kB/s

Pour monter l'image obtenue:

 # mkdir /mnt/cd
 # mount -o loop -t iso9660 cd.iso /mnt/cd

Insertion permanente dans fstab:

 /chemin_vers_iso/cd.iso   /mnt/cd  iso9660 rw,user,noauto 0 0

== Effacer un lecteur ==

ATTENTION, COMMANDE DANGEREUSE!

Pour les paranos...
La commande suivante remplie 7 fois de suite un périphérique avec des données aléatoires.
Autant dire qu'il ne sera plus possible de récupérer quoi que ce soit sur ce périphérique...

 for n in `seq 7`; do dd if=/dev/urandom of=/dev/sdc bs=8b conv=notrunc; done
 
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 37,0691 s, 6,9 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 37,1506 s, 6,9 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,6351 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,4881 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,4908 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,5277 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,897 s, 6,9 MB/s

== Sauvegarder le MBR d'un disque dur ==

 dd if=/dev/sda of=MBR.image bs=446 count=1
 
 1+0 enregistrements lus
 1+0 enregistrements écrits
 446 octets (446 B) copiés, 3,0622e-05 s, 14,6 MB/s

Cette commande copiera les 446 premiers octets du disque dur dans un fichier.

== Sauvegarder la table de partition d'un disque dur ==

 dd if=/dev/sda of=MBR_Plus_Table.image bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 7,4232e-05 s, 6,9 MB/s

Cette commande copiera les 512 premiers octets du disque dur dans un fichier.

pour restaurer la table de partition
 dd if=MBR_Plus_Table.image of=/dev/sda bs=1 count=64 skip=446 seek=446 
 64+0 enregistrements lus
 64+0 enregistrements écrits
 64 octets (64 B) copiés, 0,00132602 s, 48,3 kB/s

Cette commande copiera les 64 dernier octets (skip=446) du fichier MBR_Plus_Table.image sur du disque  dur a partir de l'octet 447 ( seek=446 ).

== Sauvegarder un disque dur ou une partition dans une image compressée ==

Les commandes suivantes permettent de sauvegarder dans un fichier compressé, puis de restaurer la partition &quot;n&quot; (valeur numérique) du disque &quot;/dev/sdX&quot; (lettre alphabétique).&lt;br /&gt;
(peu importe le type de partition)

 dd if=/dev/sdXn | gzip -c &gt; /media/suportamovible/fichierimage_part_dd.gz 

Dans cette commande, le programme &quot;dd&quot; lit par blocs (de 512 octets par défaut) le contenu de la partition &quot;n&quot; du disque &quot;X&quot; (/dev/sdXn),&lt;br /&gt;
le flux de sortie du programme &quot;dd&quot; est connecté par un tube anonyme (|) au flux d'entrée du programme &quot;gzip&quot;,&lt;br /&gt;
qui va retourner ce flux compressé par son flux de sortie (option &quot;c&quot;) qui est redirigé par &quot;&gt;&quot; vers le fichier &quot;/media/suportamovible/fichierimage.ddpart.gz&quot;.&lt;br /&gt;&lt;br /&gt;

Pour restaurer la partition ainsi sauvegardée faire:

 gzip -cd /media/suportamovible/fichierimage_part_dd.gz | dd of=/dev/sdXn

Dans cette commande, le programme &quot;gzip&quot; décompresse (option &quot;d&quot;) le fichier &quot;/media/suportamovible/fichierimage.ddpart.gz&quot; et renvoie le résultat par son flux de sortie (option &quot;c&quot;) qui est connecté par un tube anonyme (|) à l'entrée du programme &quot;dd&quot; dont la sortie (of=) se fera sur la partition &quot;n&quot; du périphérique &quot;/dev/sdX&quot;.

= Références =

[http://pwet.fr/man/linux/commandes/dd Page de man]

[http://www.softpanorama.org/Tools/dd.shtml Unix DD Command and Image Creation]

[http://www.linuxquestions.org/linux/answers/Applications_GUI_Multimedia/How_To_Do_Eveything_With_DD The real dd command]


[[Utilisateur:Lol|Lol]] 8 mars 2011 à 07:09 (CST)
[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>0p6qdso1ha7sj1d5hy00dl3wgscd393</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5172</id>
      <parentid>5170</parentid>
      <timestamp>2013-05-14T13:08:41Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <comment>/* Sauvegarder un disque dur ou une partition dans une image compressée */</comment>
      <text xml:space="preserve" bytes="7568">{{Ébauche|La commande dd}}

La commande dd.

= Introduction: =

Extrait de la page de man de dd :

&quot;dd copie un fichier (par défaut, depuis l'entrée standard vers la sortie standard) en permettant de sélectionner la taille de bloc, et d'effectuer des conversions.&quot;

Utilisée fréquement, la commande dd est très simple d'utilisation, très puissante et... tout aussi dangereuse.
Vérifiez toujours bien les commandes deux (trois ?) fois avant de les lancer.

&lt;span style=&quot;color:#FF0000;&quot;&gt;'''LES COMMANDES QUI SUIVENT PEUVENT ÊTRE EXTRÊMEMENT DESTRUCTIVES SI ELLES NE SONT PAS CONVENABLEMENT UTILISÉES. VOUS ÊTES PRÉVENUS!'''&lt;/span&gt;

== Syntaxe ==

La commande dd se présente généralement sous cette forme:

 dd if=&lt;source&gt; of=&lt;cible&gt; bs=&lt;taille des blocs&gt; skip= seek= conv=&lt;conversion&gt;

#source = données à copier;
#cible = endroit ou copier les données sources;
#bs = taille des blocs, de puissance 2, généralement égale à 512;
#skip = Ignorer le nombre indiqué de blocs (dont la taille est fournie par ibs) au début de la lecture;
#seek = Ignorer le nombre indiqué de blocs (dont la taille est fournie par ibs) au début de l'écriture. 
#conv = Modifier le fichier comme indiqué par l'argument conversion, qui peut prendre les valeurs suivantes (pas d'espace autour des virgules lorsque plusieurs arguments sont fournis) : 

 ascii, ebcdic, ibm, block, unblock, lcase, ucase, swab, noerror, notrunc, sync.

= Utilisation = 

== Copier une partition de disque dur sur un autre disque dur ==

Copie l'intégralité de la partition sda9 vers la partition sdb1, ne pas s'arrếter sur les erreurs de lecture.

 dd if=/dev/sda9 of=/dev/sdb1 bs=4096 conv=notrunc,noerror
 
 256000+0 enregistrements lus
 256000+0 enregistrements écrits
 1048576000 octets (1,0 GB) copiés, 30,778 s, 34,1 MB/s

notrunc = Ne pas limiter la taille du fichier de sortie.

noerror = Continuer même après des erreurs de lecture.

Remarque au sujet de l'UUID.

Copier une partition vers une autre copie aussi son UUID. Vous vous retrouvez alors avec deux partitions qui portent le même numéro...

 # blkid
 ...
 /dev/sda9: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;
 /dev/sdb1: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;

Il faut alors générer un nouveau numéro pour ne pas avoir de conflit (partition démontée...):

 # tune2fs -U random /dev/sdb1
 # blkid
 /dev/sda9: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;
 /dev/sdb1: UUID=&quot;75aa7a37-d2a2-4cf4-88f8-616067c7a684&quot; TYPE=&quot;ext2&quot;

== Cloner un disque dur en entier ==

Copie de l'intégralité (y compris le mbr) du disque sdg vers le disque sdh:

 dd if=/dev/sdg of=/dev/sdh conv=notrunc,noerror
 
 4030464+0 enregistrements lus
 4030464+0 enregistrements écrits
 2063597568 octets (2,1 GB) copiés, 1160,41 s, 1,8 MB/s

== Réaliser l'image ISO d'un CD ==

 dd if=/dev/sr0 of=/home/laurent/cd.iso bs=2048 conv=notrunc
 
 737+0 enregistrements lus
 737+0 enregistrements écrits
 1509376 octets (1,5 MB) copiés, 3,3215 s, 454 kB/s

Pour monter l'image obtenue:

 # mkdir /mnt/cd
 # mount -o loop -t iso9660 cd.iso /mnt/cd

Insertion permanente dans fstab:

 /chemin_vers_iso/cd.iso   /mnt/cd  iso9660 rw,user,noauto 0 0

== Effacer un lecteur ==

ATTENTION, COMMANDE DANGEREUSE!

Pour les paranos...
La commande suivante remplie 7 fois de suite un périphérique avec des données aléatoires.
Autant dire qu'il ne sera plus possible de récupérer quoi que ce soit sur ce périphérique...

 for n in `seq 7`; do dd if=/dev/urandom of=/dev/sdc bs=8b conv=notrunc; done
 
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 37,0691 s, 6,9 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 37,1506 s, 6,9 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,6351 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,4881 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,4908 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,5277 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,897 s, 6,9 MB/s

== Sauvegarder le MBR d'un disque dur ==

 dd if=/dev/sda of=MBR.image bs=446 count=1
 
 1+0 enregistrements lus
 1+0 enregistrements écrits
 446 octets (446 B) copiés, 3,0622e-05 s, 14,6 MB/s

Cette commande copiera les 446 premiers octets du disque dur dans un fichier.

== Sauvegarder la table de partition d'un disque dur ==

 dd if=/dev/sda of=MBR_Plus_Table.image bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 7,4232e-05 s, 6,9 MB/s

Cette commande copiera les 512 premiers octets du disque dur dans un fichier.

pour restaurer la table de partition
 dd if=MBR_Plus_Table.image of=/dev/sda bs=1 count=64 skip=446 seek=446 
 64+0 enregistrements lus
 64+0 enregistrements écrits
 64 octets (64 B) copiés, 0,00132602 s, 48,3 kB/s

Cette commande copiera les 64 dernier octets (skip=446) du fichier MBR_Plus_Table.image sur du disque  dur a partir de l'octet 447 ( seek=446 ).

== Sauvegarder un disque dur ou une partition dans une image compressée ==

Les commandes suivantes permettent de sauvegarder dans un fichier compressé, puis de restaurer la partition &quot;n&quot; (valeur numérique) du disque &quot;/dev/sdX&quot; (lettre alphabétique).&lt;br /&gt;
(peu importe le type de partition)

 dd if=/dev/sdXn | gzip -c &gt; /media/suportamovible/fichierimage_part_dd.gz 

Dans cette commande, le programme &quot;dd&quot; lit par blocs (de 512 octets par défaut) le contenu de la partition &quot;n&quot; du disque &quot;X&quot; (/dev/sdXn),&lt;br /&gt;
le flux de sortie du programme &quot;dd&quot; est connecté par un tube anonyme (|) au flux d'entrée du programme &quot;gzip&quot;,&lt;br /&gt;
qui va retourner ce flux compressé par son flux de sortie (option &quot;c&quot;) qui est redirigé par &quot;&gt;&quot; vers le fichier &quot;/media/suportamovible/fichierimage_part_dd.gz&quot;.&lt;br /&gt;&lt;br /&gt;

Pour restaurer la partition ainsi sauvegardée faire:

 gzip -cd /media/suportamovible/fichierimage_part_dd.gz | dd of=/dev/sdXn

Dans cette commande, le programme &quot;gzip&quot; décompresse (option &quot;d&quot;) le fichier &quot;/media/suportamovible/fichierimage_part_dd.gz&quot; et renvoie le résultat par son flux de sortie (option &quot;c&quot;) qui est connecté par un tube anonyme (|) à l'entrée du programme &quot;dd&quot; dont la sortie (of=) se fera sur la partition &quot;n&quot; du périphérique &quot;/dev/sdX&quot;.

= Références =

[http://pwet.fr/man/linux/commandes/dd Page de man]

[http://www.softpanorama.org/Tools/dd.shtml Unix DD Command and Image Creation]

[http://www.linuxquestions.org/linux/answers/Applications_GUI_Multimedia/How_To_Do_Eveything_With_DD The real dd command]


[[Utilisateur:Lol|Lol]] 8 mars 2011 à 07:09 (CST)
[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>c4j94arxnoikk7p7105ikfm8wvgd7pa</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5204</id>
      <parentid>5172</parentid>
      <timestamp>2013-05-19T23:40:57Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Sauvegarder un disque dur ou une partition dans une image compressée */</comment>
      <text xml:space="preserve" bytes="7864">{{Ébauche|La commande dd}}

La commande dd.

= Introduction: =

Extrait de la page de man de dd :

&quot;dd copie un fichier (par défaut, depuis l'entrée standard vers la sortie standard) en permettant de sélectionner la taille de bloc, et d'effectuer des conversions.&quot;

Utilisée fréquement, la commande dd est très simple d'utilisation, très puissante et... tout aussi dangereuse.
Vérifiez toujours bien les commandes deux (trois ?) fois avant de les lancer.

&lt;span style=&quot;color:#FF0000;&quot;&gt;'''LES COMMANDES QUI SUIVENT PEUVENT ÊTRE EXTRÊMEMENT DESTRUCTIVES SI ELLES NE SONT PAS CONVENABLEMENT UTILISÉES. VOUS ÊTES PRÉVENUS!'''&lt;/span&gt;

== Syntaxe ==

La commande dd se présente généralement sous cette forme:

 dd if=&lt;source&gt; of=&lt;cible&gt; bs=&lt;taille des blocs&gt; skip= seek= conv=&lt;conversion&gt;

#source = données à copier;
#cible = endroit ou copier les données sources;
#bs = taille des blocs, de puissance 2, généralement égale à 512;
#skip = Ignorer le nombre indiqué de blocs (dont la taille est fournie par ibs) au début de la lecture;
#seek = Ignorer le nombre indiqué de blocs (dont la taille est fournie par ibs) au début de l'écriture. 
#conv = Modifier le fichier comme indiqué par l'argument conversion, qui peut prendre les valeurs suivantes (pas d'espace autour des virgules lorsque plusieurs arguments sont fournis) : 

 ascii, ebcdic, ibm, block, unblock, lcase, ucase, swab, noerror, notrunc, sync.

= Utilisation = 

== Copier une partition de disque dur sur un autre disque dur ==

Copie l'intégralité de la partition sda9 vers la partition sdb1, ne pas s'arrếter sur les erreurs de lecture.

 dd if=/dev/sda9 of=/dev/sdb1 bs=4096 conv=notrunc,noerror
 
 256000+0 enregistrements lus
 256000+0 enregistrements écrits
 1048576000 octets (1,0 GB) copiés, 30,778 s, 34,1 MB/s

notrunc = Ne pas limiter la taille du fichier de sortie.

noerror = Continuer même après des erreurs de lecture.

Remarque au sujet de l'UUID.

Copier une partition vers une autre copie aussi son UUID. Vous vous retrouvez alors avec deux partitions qui portent le même numéro...

 # blkid
 ...
 /dev/sda9: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;
 /dev/sdb1: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;

Il faut alors générer un nouveau numéro pour ne pas avoir de conflit (partition démontée...):

 # tune2fs -U random /dev/sdb1
 # blkid
 /dev/sda9: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;
 /dev/sdb1: UUID=&quot;75aa7a37-d2a2-4cf4-88f8-616067c7a684&quot; TYPE=&quot;ext2&quot;

== Cloner un disque dur en entier ==

Copie de l'intégralité (y compris le mbr) du disque sdg vers le disque sdh:

 dd if=/dev/sdg of=/dev/sdh conv=notrunc,noerror
 
 4030464+0 enregistrements lus
 4030464+0 enregistrements écrits
 2063597568 octets (2,1 GB) copiés, 1160,41 s, 1,8 MB/s

== Réaliser l'image ISO d'un CD ==

 dd if=/dev/sr0 of=/home/laurent/cd.iso bs=2048 conv=notrunc
 
 737+0 enregistrements lus
 737+0 enregistrements écrits
 1509376 octets (1,5 MB) copiés, 3,3215 s, 454 kB/s

Pour monter l'image obtenue:

 # mkdir /mnt/cd
 # mount -o loop -t iso9660 cd.iso /mnt/cd

Insertion permanente dans fstab:

 /chemin_vers_iso/cd.iso   /mnt/cd  iso9660 rw,user,noauto 0 0

== Effacer un lecteur ==

ATTENTION, COMMANDE DANGEREUSE!

Pour les paranos...
La commande suivante remplie 7 fois de suite un périphérique avec des données aléatoires.
Autant dire qu'il ne sera plus possible de récupérer quoi que ce soit sur ce périphérique...

 for n in `seq 7`; do dd if=/dev/urandom of=/dev/sdc bs=8b conv=notrunc; done
 
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 37,0691 s, 6,9 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 37,1506 s, 6,9 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,6351 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,4881 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,4908 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,5277 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,897 s, 6,9 MB/s

== Sauvegarder le MBR d'un disque dur ==

 dd if=/dev/sda of=MBR.image bs=446 count=1
 
 1+0 enregistrements lus
 1+0 enregistrements écrits
 446 octets (446 B) copiés, 3,0622e-05 s, 14,6 MB/s

Cette commande copiera les 446 premiers octets du disque dur dans un fichier.

== Sauvegarder la table de partition d'un disque dur ==

 dd if=/dev/sda of=MBR_Plus_Table.image bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 7,4232e-05 s, 6,9 MB/s

Cette commande copiera les 512 premiers octets du disque dur dans un fichier.

pour restaurer la table de partition
 dd if=MBR_Plus_Table.image of=/dev/sda bs=1 count=64 skip=446 seek=446 
 64+0 enregistrements lus
 64+0 enregistrements écrits
 64 octets (64 B) copiés, 0,00132602 s, 48,3 kB/s

Cette commande copiera les 64 dernier octets (skip=446) du fichier MBR_Plus_Table.image sur du disque  dur a partir de l'octet 447 ( seek=446 ).

== Sauvegarder un disque dur ou une partition dans une image compressée ==

Les commandes suivantes permettent de créer un fichier (de sauvegarde) compressé, qui pourra être utilisé pour restaurer la partition &quot;n&quot; (&quot;n&quot; est une valeur numérique) du disque &quot;/dev/sdX&quot; (&quot;X&quot; est une lettre alphabétique).&lt;br /&gt;
(peu importe le type de partition)

 dd if=/dev/sdXn | gzip -c &gt; /media/suportamovible/fichierimage_part_dd.gz 

Dans cette commande, le programme &quot;dd&quot; lit par blocs (de 512 octets par défaut) le contenu de la partition &quot;n&quot; du disque &quot;X&quot; (/dev/sdXn),&lt;br /&gt;
le flux de sortie du programme &quot;dd&quot; est connecté par un tube anonyme (|) au flux d'entrée du programme &quot;gzip&quot;,&lt;br /&gt;
qui va retourner ce flux compressé par son flux de sortie (option &quot;c&quot;) qui est redirigé par &quot;&gt;&quot; vers le fichier &quot;/media/suportamovible/fichierimage_part_dd.gz&quot;.&lt;br /&gt;
Si le fichier &quot;&quot; existait avant l'exécution de la commande, il sera &quot;écrasé&quot;.&lt;br /&gt;&lt;br /&gt;

Pour restaurer la partition ainsi sauvegardée faire :

 gzip -cd /media/suportamovible/fichierimage_part_dd.gz | dd of=/dev/sdXn

Dans cette commande, le programme &quot;gzip&quot; décompresse (option &quot;d&quot;) le fichier &quot;/media/suportamovible/fichierimage_part_dd.gz&quot;&lt;br /&gt;
son flux de sortie du programme &quot;gzip&quot; (option &quot;c&quot;) est connecté à un tube anonyme (|) qui est connecté à l'entrée du programme &quot;dd&quot;&lt;br /&gt;
la sortie (of=) du programme &quot;dd&quot; se fera sur la partition &quot;n&quot; du disque &quot;X&quot;.&lt;br /&gt;
Le contenu de la partition &quot;/dev/sdXn&quot; sera écrasé et remplacé par le contenu du fichier sauvegardé par la commande précédente.

= Références =

[http://pwet.fr/man/linux/commandes/dd Page de man]

[http://www.softpanorama.org/Tools/dd.shtml Unix DD Command and Image Creation]

[http://www.linuxquestions.org/linux/answers/Applications_GUI_Multimedia/How_To_Do_Eveything_With_DD The real dd command]


[[Utilisateur:Lol|Lol]] 8 mars 2011 à 07:09 (CST)
[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>o999gvg6zmdzneof5fltw0npnmk1a14</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5205</id>
      <parentid>5204</parentid>
      <timestamp>2013-05-23T07:11:24Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Sauvegarder un disque dur ou une partition dans une image compressée */</comment>
      <text xml:space="preserve" bytes="7949">{{Ébauche|La commande dd}}

La commande dd.

= Introduction: =

Extrait de la page de man de dd :

&quot;dd copie un fichier (par défaut, depuis l'entrée standard vers la sortie standard) en permettant de sélectionner la taille de bloc, et d'effectuer des conversions.&quot;

Utilisée fréquement, la commande dd est très simple d'utilisation, très puissante et... tout aussi dangereuse.
Vérifiez toujours bien les commandes deux (trois ?) fois avant de les lancer.

&lt;span style=&quot;color:#FF0000;&quot;&gt;'''LES COMMANDES QUI SUIVENT PEUVENT ÊTRE EXTRÊMEMENT DESTRUCTIVES SI ELLES NE SONT PAS CONVENABLEMENT UTILISÉES. VOUS ÊTES PRÉVENUS!'''&lt;/span&gt;

== Syntaxe ==

La commande dd se présente généralement sous cette forme:

 dd if=&lt;source&gt; of=&lt;cible&gt; bs=&lt;taille des blocs&gt; skip= seek= conv=&lt;conversion&gt;

#source = données à copier;
#cible = endroit ou copier les données sources;
#bs = taille des blocs, de puissance 2, généralement égale à 512;
#skip = Ignorer le nombre indiqué de blocs (dont la taille est fournie par ibs) au début de la lecture;
#seek = Ignorer le nombre indiqué de blocs (dont la taille est fournie par ibs) au début de l'écriture. 
#conv = Modifier le fichier comme indiqué par l'argument conversion, qui peut prendre les valeurs suivantes (pas d'espace autour des virgules lorsque plusieurs arguments sont fournis) : 

 ascii, ebcdic, ibm, block, unblock, lcase, ucase, swab, noerror, notrunc, sync.

= Utilisation = 

== Copier une partition de disque dur sur un autre disque dur ==

Copie l'intégralité de la partition sda9 vers la partition sdb1, ne pas s'arrếter sur les erreurs de lecture.

 dd if=/dev/sda9 of=/dev/sdb1 bs=4096 conv=notrunc,noerror
 
 256000+0 enregistrements lus
 256000+0 enregistrements écrits
 1048576000 octets (1,0 GB) copiés, 30,778 s, 34,1 MB/s

notrunc = Ne pas limiter la taille du fichier de sortie.

noerror = Continuer même après des erreurs de lecture.

Remarque au sujet de l'UUID.

Copier une partition vers une autre copie aussi son UUID. Vous vous retrouvez alors avec deux partitions qui portent le même numéro...

 # blkid
 ...
 /dev/sda9: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;
 /dev/sdb1: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;

Il faut alors générer un nouveau numéro pour ne pas avoir de conflit (partition démontée...):

 # tune2fs -U random /dev/sdb1
 # blkid
 /dev/sda9: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;
 /dev/sdb1: UUID=&quot;75aa7a37-d2a2-4cf4-88f8-616067c7a684&quot; TYPE=&quot;ext2&quot;

== Cloner un disque dur en entier ==

Copie de l'intégralité (y compris le mbr) du disque sdg vers le disque sdh:

 dd if=/dev/sdg of=/dev/sdh conv=notrunc,noerror
 
 4030464+0 enregistrements lus
 4030464+0 enregistrements écrits
 2063597568 octets (2,1 GB) copiés, 1160,41 s, 1,8 MB/s

== Réaliser l'image ISO d'un CD ==

 dd if=/dev/sr0 of=/home/laurent/cd.iso bs=2048 conv=notrunc
 
 737+0 enregistrements lus
 737+0 enregistrements écrits
 1509376 octets (1,5 MB) copiés, 3,3215 s, 454 kB/s

Pour monter l'image obtenue:

 # mkdir /mnt/cd
 # mount -o loop -t iso9660 cd.iso /mnt/cd

Insertion permanente dans fstab:

 /chemin_vers_iso/cd.iso   /mnt/cd  iso9660 rw,user,noauto 0 0

== Effacer un lecteur ==

ATTENTION, COMMANDE DANGEREUSE!

Pour les paranos...
La commande suivante remplie 7 fois de suite un périphérique avec des données aléatoires.
Autant dire qu'il ne sera plus possible de récupérer quoi que ce soit sur ce périphérique...

 for n in `seq 7`; do dd if=/dev/urandom of=/dev/sdc bs=8b conv=notrunc; done
 
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 37,0691 s, 6,9 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 37,1506 s, 6,9 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,6351 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,4881 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,4908 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,5277 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,897 s, 6,9 MB/s

== Sauvegarder le MBR d'un disque dur ==

 dd if=/dev/sda of=MBR.image bs=446 count=1
 
 1+0 enregistrements lus
 1+0 enregistrements écrits
 446 octets (446 B) copiés, 3,0622e-05 s, 14,6 MB/s

Cette commande copiera les 446 premiers octets du disque dur dans un fichier.

== Sauvegarder la table de partition d'un disque dur ==

 dd if=/dev/sda of=MBR_Plus_Table.image bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 7,4232e-05 s, 6,9 MB/s

Cette commande copiera les 512 premiers octets du disque dur dans un fichier.

pour restaurer la table de partition
 dd if=MBR_Plus_Table.image of=/dev/sda bs=1 count=64 skip=446 seek=446 
 64+0 enregistrements lus
 64+0 enregistrements écrits
 64 octets (64 B) copiés, 0,00132602 s, 48,3 kB/s

Cette commande copiera les 64 dernier octets (skip=446) du fichier MBR_Plus_Table.image sur du disque  dur a partir de l'octet 447 ( seek=446 ).

== Sauvegarder un disque dur ou une partition dans une image compressée ==

La ligne de commandes suivante permet de créer un fichier compressé, qui pourra être utilisé pour restaurer la partition &quot;n&quot; (&quot;n&quot; est une valeur numérique) du disque &quot;/dev/sdX&quot; (&quot;X&quot; est une lettre alphabétique).&lt;br /&gt;
(peu importe le type de partition)

 dd if=/dev/sdXn | gzip -c &gt; /media/suportamovible/fichierimage_part_dd.gz 

Dans cette ligne de commandes, le programme &quot;dd&quot; lit par blocs (de 512 octets par défaut) le contenu de la partition &quot;n&quot; du disque &quot;X&quot; (/dev/sdXn).&lt;br /&gt;
Le flux de sortie du programme &quot;dd&quot; est connecté par un tube anonyme (|) au flux d'entrée du programme &quot;gzip&quot;.&lt;br /&gt;
&quot;gzip&quot; va compresser ce flux et le retourner par son flux de sortie (option &quot;c&quot;) qui sera redirigé par &quot;&gt;&quot; vers le fichier &quot;/media/suportamovible/fichierimage_part_dd.gz&quot;.&lt;br /&gt;
Si le fichier &quot;/media/suportamovible/fichierimage_part_dd.gz&quot; existait avant l'exécution de cette ligne de commandes, il serait &quot;écrasé&quot;.&lt;br /&gt;&lt;br /&gt;

Pour restaurer la partition ainsi sauvegardée faire :

 gzip -cd /media/suportamovible/fichierimage_part_dd.gz | dd of=/dev/sdXn

Dans cette commande, le programme &quot;gzip&quot; dé-compresse (option &quot;d&quot;) le fichier &quot;/media/suportamovible/fichierimage_part_dd.gz&quot;.&lt;br /&gt;
Le flux de sortie du programme &quot;gzip&quot; (option &quot;c&quot;) est connecté à un tube anonyme (|) qui est connecté à l'entrée du programme &quot;dd&quot;.&lt;br /&gt;
La sortie (of=) du programme &quot;dd&quot; se fera sur la partition &quot;n&quot; du disque &quot;X&quot; (/dev/sdXn),&lt;br /&gt;
et le contenu de cette partition sera écrasé et remplacé par le contenu du fichier sauvegardé par la ligne de commandes précédente.

= Références =

[http://pwet.fr/man/linux/commandes/dd Page de man]

[http://www.softpanorama.org/Tools/dd.shtml Unix DD Command and Image Creation]

[http://www.linuxquestions.org/linux/answers/Applications_GUI_Multimedia/How_To_Do_Eveything_With_DD The real dd command]


[[Utilisateur:Lol|Lol]] 8 mars 2011 à 07:09 (CST)
[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>0cuuwoi5kuib23up8coe8ggks7en80w</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5516</id>
      <parentid>5205</parentid>
      <timestamp>2013-12-25T02:46:06Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Introduction: */ démounter pour pouvoir copier</comment>
      <text xml:space="preserve" bytes="8112">{{Ébauche|La commande dd}}

La commande dd.

= Introduction: =

Extrait de la page de man de dd :

&quot;dd copie un fichier (par défaut, depuis l'entrée standard vers la sortie standard) en permettant de sélectionner la taille de bloc, et d'effectuer des conversions.&quot;

Utilisée fréquement, la commande dd est très simple d'utilisation, très puissante et... tout aussi dangereuse.
Vérifiez toujours bien les commandes deux (trois ?) fois avant de les lancer.

&lt;span style=&quot;color:#FF0000;&quot;&gt;'''LES COMMANDES QUI SUIVENT PEUVENT ÊTRE EXTRÊMEMENT DESTRUCTIVES SI ELLES NE SONT PAS CONVENABLEMENT UTILISÉES. VOUS ÊTES PRÉVENUS!'''&lt;/span&gt;

'''NOTE:''' Pour pouvoir être copiée, déplacée, agrandie ou réduite, la partition source doit au préalable être &quot;démountée&quot; du système (voir &quot;umount&quot;).

== Syntaxe ==

La commande dd se présente généralement sous cette forme:

 dd if=&lt;source&gt; of=&lt;cible&gt; bs=&lt;taille des blocs&gt; skip= seek= conv=&lt;conversion&gt;

#source = données à copier;
#cible = endroit ou copier les données sources;
#bs = taille des blocs, de puissance 2, généralement égale à 512;
#skip = Ignorer le nombre indiqué de blocs (dont la taille est fournie par ibs) au début de la lecture;
#seek = Ignorer le nombre indiqué de blocs (dont la taille est fournie par ibs) au début de l'écriture. 
#conv = Modifier le fichier comme indiqué par l'argument conversion, qui peut prendre les valeurs suivantes (pas d'espace autour des virgules lorsque plusieurs arguments sont fournis) : 

 ascii, ebcdic, ibm, block, unblock, lcase, ucase, swab, noerror, notrunc, sync.

= Utilisation = 

== Copier une partition de disque dur sur un autre disque dur ==

Copie l'intégralité de la partition sda9 vers la partition sdb1, ne pas s'arrếter sur les erreurs de lecture.

 dd if=/dev/sda9 of=/dev/sdb1 bs=4096 conv=notrunc,noerror
 
 256000+0 enregistrements lus
 256000+0 enregistrements écrits
 1048576000 octets (1,0 GB) copiés, 30,778 s, 34,1 MB/s

notrunc = Ne pas limiter la taille du fichier de sortie.

noerror = Continuer même après des erreurs de lecture.

Remarque au sujet de l'UUID.

Copier une partition vers une autre copie aussi son UUID. Vous vous retrouvez alors avec deux partitions qui portent le même numéro...

 # blkid
 ...
 /dev/sda9: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;
 /dev/sdb1: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;

Il faut alors générer un nouveau numéro pour ne pas avoir de conflit (partition démontée...):

 # tune2fs -U random /dev/sdb1
 # blkid
 /dev/sda9: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;
 /dev/sdb1: UUID=&quot;75aa7a37-d2a2-4cf4-88f8-616067c7a684&quot; TYPE=&quot;ext2&quot;

== Cloner un disque dur en entier ==

Copie de l'intégralité (y compris le mbr) du disque sdg vers le disque sdh:

 dd if=/dev/sdg of=/dev/sdh conv=notrunc,noerror
 
 4030464+0 enregistrements lus
 4030464+0 enregistrements écrits
 2063597568 octets (2,1 GB) copiés, 1160,41 s, 1,8 MB/s

== Réaliser l'image ISO d'un CD ==

 dd if=/dev/sr0 of=/home/laurent/cd.iso bs=2048 conv=notrunc
 
 737+0 enregistrements lus
 737+0 enregistrements écrits
 1509376 octets (1,5 MB) copiés, 3,3215 s, 454 kB/s

Pour monter l'image obtenue:

 # mkdir /mnt/cd
 # mount -o loop -t iso9660 cd.iso /mnt/cd

Insertion permanente dans fstab:

 /chemin_vers_iso/cd.iso   /mnt/cd  iso9660 rw,user,noauto 0 0

== Effacer un lecteur ==

ATTENTION, COMMANDE DANGEREUSE!

Pour les paranos...
La commande suivante remplie 7 fois de suite un périphérique avec des données aléatoires.
Autant dire qu'il ne sera plus possible de récupérer quoi que ce soit sur ce périphérique...

 for n in `seq 7`; do dd if=/dev/urandom of=/dev/sdc bs=8b conv=notrunc; done
 
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 37,0691 s, 6,9 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 37,1506 s, 6,9 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,6351 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,4881 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,4908 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,5277 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,897 s, 6,9 MB/s

== Sauvegarder le MBR d'un disque dur ==

 dd if=/dev/sda of=MBR.image bs=446 count=1
 
 1+0 enregistrements lus
 1+0 enregistrements écrits
 446 octets (446 B) copiés, 3,0622e-05 s, 14,6 MB/s

Cette commande copiera les 446 premiers octets du disque dur dans un fichier.

== Sauvegarder la table de partition d'un disque dur ==

 dd if=/dev/sda of=MBR_Plus_Table.image bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 7,4232e-05 s, 6,9 MB/s

Cette commande copiera les 512 premiers octets du disque dur dans un fichier.

pour restaurer la table de partition
 dd if=MBR_Plus_Table.image of=/dev/sda bs=1 count=64 skip=446 seek=446 
 64+0 enregistrements lus
 64+0 enregistrements écrits
 64 octets (64 B) copiés, 0,00132602 s, 48,3 kB/s

Cette commande copiera les 64 dernier octets (skip=446) du fichier MBR_Plus_Table.image sur du disque  dur a partir de l'octet 447 ( seek=446 ).

== Sauvegarder un disque dur ou une partition dans une image compressée ==

La ligne de commandes suivante permet de créer un fichier compressé, qui pourra être utilisé pour restaurer la partition &quot;n&quot; (&quot;n&quot; est une valeur numérique) du disque &quot;/dev/sdX&quot; (&quot;X&quot; est une lettre alphabétique).&lt;br /&gt;
(peu importe le type de partition)

 dd if=/dev/sdXn | gzip -c &gt; /media/suportamovible/fichierimage_part_dd.gz 

Dans cette ligne de commandes, le programme &quot;dd&quot; lit par blocs (de 512 octets par défaut) le contenu de la partition &quot;n&quot; du disque &quot;X&quot; (/dev/sdXn).&lt;br /&gt;
Le flux de sortie du programme &quot;dd&quot; est connecté par un tube anonyme (|) au flux d'entrée du programme &quot;gzip&quot;.&lt;br /&gt;
&quot;gzip&quot; va compresser ce flux et le retourner par son flux de sortie (option &quot;c&quot;) qui sera redirigé par &quot;&gt;&quot; vers le fichier &quot;/media/suportamovible/fichierimage_part_dd.gz&quot;.&lt;br /&gt;
Si le fichier &quot;/media/suportamovible/fichierimage_part_dd.gz&quot; existait avant l'exécution de cette ligne de commandes, il serait &quot;écrasé&quot;.&lt;br /&gt;&lt;br /&gt;

Pour restaurer la partition ainsi sauvegardée faire :

 gzip -cd /media/suportamovible/fichierimage_part_dd.gz | dd of=/dev/sdXn

Dans cette commande, le programme &quot;gzip&quot; dé-compresse (option &quot;d&quot;) le fichier &quot;/media/suportamovible/fichierimage_part_dd.gz&quot;.&lt;br /&gt;
Le flux de sortie du programme &quot;gzip&quot; (option &quot;c&quot;) est connecté à un tube anonyme (|) qui est connecté à l'entrée du programme &quot;dd&quot;.&lt;br /&gt;
La sortie (of=) du programme &quot;dd&quot; se fera sur la partition &quot;n&quot; du disque &quot;X&quot; (/dev/sdXn),&lt;br /&gt;
et le contenu de cette partition sera écrasé et remplacé par le contenu du fichier sauvegardé par la ligne de commandes précédente.

= Références =

[http://pwet.fr/man/linux/commandes/dd Page de man]

[http://www.softpanorama.org/Tools/dd.shtml Unix DD Command and Image Creation]

[http://www.linuxquestions.org/linux/answers/Applications_GUI_Multimedia/How_To_Do_Eveything_With_DD The real dd command]


[[Utilisateur:Lol|Lol]] 8 mars 2011 à 07:09 (CST)
[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>gb4hqutfostvti37phmw3g89ejfiarb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5710</id>
      <parentid>5516</parentid>
      <timestamp>2014-08-20T03:43:36Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Sauvegarder la table de partition d'un disque dur */</comment>
      <text xml:space="preserve" bytes="8127">{{Ébauche|La commande dd}}

La commande dd.

= Introduction: =

Extrait de la page de man de dd :

&quot;dd copie un fichier (par défaut, depuis l'entrée standard vers la sortie standard) en permettant de sélectionner la taille de bloc, et d'effectuer des conversions.&quot;

Utilisée fréquement, la commande dd est très simple d'utilisation, très puissante et... tout aussi dangereuse.
Vérifiez toujours bien les commandes deux (trois ?) fois avant de les lancer.

&lt;span style=&quot;color:#FF0000;&quot;&gt;'''LES COMMANDES QUI SUIVENT PEUVENT ÊTRE EXTRÊMEMENT DESTRUCTIVES SI ELLES NE SONT PAS CONVENABLEMENT UTILISÉES. VOUS ÊTES PRÉVENUS!'''&lt;/span&gt;

'''NOTE:''' Pour pouvoir être copiée, déplacée, agrandie ou réduite, la partition source doit au préalable être &quot;démountée&quot; du système (voir &quot;umount&quot;).

== Syntaxe ==

La commande dd se présente généralement sous cette forme:

 dd if=&lt;source&gt; of=&lt;cible&gt; bs=&lt;taille des blocs&gt; skip= seek= conv=&lt;conversion&gt;

#source = données à copier;
#cible = endroit ou copier les données sources;
#bs = taille des blocs, de puissance 2, généralement égale à 512;
#skip = Ignorer le nombre indiqué de blocs (dont la taille est fournie par ibs) au début de la lecture;
#seek = Ignorer le nombre indiqué de blocs (dont la taille est fournie par ibs) au début de l'écriture. 
#conv = Modifier le fichier comme indiqué par l'argument conversion, qui peut prendre les valeurs suivantes (pas d'espace autour des virgules lorsque plusieurs arguments sont fournis) : 

 ascii, ebcdic, ibm, block, unblock, lcase, ucase, swab, noerror, notrunc, sync.

= Utilisation = 

== Copier une partition de disque dur sur un autre disque dur ==

Copie l'intégralité de la partition sda9 vers la partition sdb1, ne pas s'arrếter sur les erreurs de lecture.

 dd if=/dev/sda9 of=/dev/sdb1 bs=4096 conv=notrunc,noerror
 
 256000+0 enregistrements lus
 256000+0 enregistrements écrits
 1048576000 octets (1,0 GB) copiés, 30,778 s, 34,1 MB/s

notrunc = Ne pas limiter la taille du fichier de sortie.

noerror = Continuer même après des erreurs de lecture.

Remarque au sujet de l'UUID.

Copier une partition vers une autre copie aussi son UUID. Vous vous retrouvez alors avec deux partitions qui portent le même numéro...

 # blkid
 ...
 /dev/sda9: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;
 /dev/sdb1: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;

Il faut alors générer un nouveau numéro pour ne pas avoir de conflit (partition démontée...):

 # tune2fs -U random /dev/sdb1
 # blkid
 /dev/sda9: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;
 /dev/sdb1: UUID=&quot;75aa7a37-d2a2-4cf4-88f8-616067c7a684&quot; TYPE=&quot;ext2&quot;

== Cloner un disque dur en entier ==

Copie de l'intégralité (y compris le mbr) du disque sdg vers le disque sdh:

 dd if=/dev/sdg of=/dev/sdh conv=notrunc,noerror
 
 4030464+0 enregistrements lus
 4030464+0 enregistrements écrits
 2063597568 octets (2,1 GB) copiés, 1160,41 s, 1,8 MB/s

== Réaliser l'image ISO d'un CD ==

 dd if=/dev/sr0 of=/home/laurent/cd.iso bs=2048 conv=notrunc
 
 737+0 enregistrements lus
 737+0 enregistrements écrits
 1509376 octets (1,5 MB) copiés, 3,3215 s, 454 kB/s

Pour monter l'image obtenue:

 # mkdir /mnt/cd
 # mount -o loop -t iso9660 cd.iso /mnt/cd

Insertion permanente dans fstab:

 /chemin_vers_iso/cd.iso   /mnt/cd  iso9660 rw,user,noauto 0 0

== Effacer un lecteur ==

ATTENTION, COMMANDE DANGEREUSE!

Pour les paranos...
La commande suivante remplie 7 fois de suite un périphérique avec des données aléatoires.
Autant dire qu'il ne sera plus possible de récupérer quoi que ce soit sur ce périphérique...

 for n in `seq 7`; do dd if=/dev/urandom of=/dev/sdc bs=8b conv=notrunc; done
 
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 37,0691 s, 6,9 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 37,1506 s, 6,9 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,6351 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,4881 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,4908 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,5277 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,897 s, 6,9 MB/s

== Sauvegarder le MBR d'un disque dur ==

 dd if=/dev/sda of=MBR.image bs=446 count=1
 
 1+0 enregistrements lus
 1+0 enregistrements écrits
 446 octets (446 B) copiés, 3,0622e-05 s, 14,6 MB/s

Cette commande copiera les 446 premiers octets du disque dur dans un fichier.

== Sauvegarder la table de partition d'un disque dur ==

 dd if=/dev/sda of=MBR_Plus_Table.image bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 7,4232e-05 s, 6,9 MB/s

Cette commande copiera les 512 premiers octets du disque dur dans un fichier.

pour restaurer la table de partition
 dd if=MBR_Plus_Table.image of=/dev/sda bs=1 count=64 skip=446 seek=446 
 64+0 enregistrements lus
 64+0 enregistrements écrits
 64 octets (64 B) copiés, 0,00132602 s, 48,3 kB/s

Cette commande copiera les 64 dernier octets (skip=446) du fichier '''MBR_Plus_Table.image'' sur le disque '''/dev/sda''' a partir de l'octet 447 ( seek=446 ).

== Sauvegarder un disque dur ou une partition dans une image compressée ==

La ligne de commandes suivante permet de créer un fichier compressé, qui pourra être utilisé pour restaurer la partition &quot;n&quot; (&quot;n&quot; est une valeur numérique) du disque &quot;/dev/sdX&quot; (&quot;X&quot; est une lettre alphabétique).&lt;br /&gt;
(peu importe le type de partition)

 dd if=/dev/sdXn | gzip -c &gt; /media/suportamovible/fichierimage_part_dd.gz 

Dans cette ligne de commandes, le programme &quot;dd&quot; lit par blocs (de 512 octets par défaut) le contenu de la partition &quot;n&quot; du disque &quot;X&quot; (/dev/sdXn).&lt;br /&gt;
Le flux de sortie du programme &quot;dd&quot; est connecté par un tube anonyme (|) au flux d'entrée du programme &quot;gzip&quot;.&lt;br /&gt;
&quot;gzip&quot; va compresser ce flux et le retourner par son flux de sortie (option &quot;c&quot;) qui sera redirigé par &quot;&gt;&quot; vers le fichier &quot;/media/suportamovible/fichierimage_part_dd.gz&quot;.&lt;br /&gt;
Si le fichier &quot;/media/suportamovible/fichierimage_part_dd.gz&quot; existait avant l'exécution de cette ligne de commandes, il serait &quot;écrasé&quot;.&lt;br /&gt;&lt;br /&gt;

Pour restaurer la partition ainsi sauvegardée faire :

 gzip -cd /media/suportamovible/fichierimage_part_dd.gz | dd of=/dev/sdXn

Dans cette commande, le programme &quot;gzip&quot; dé-compresse (option &quot;d&quot;) le fichier &quot;/media/suportamovible/fichierimage_part_dd.gz&quot;.&lt;br /&gt;
Le flux de sortie du programme &quot;gzip&quot; (option &quot;c&quot;) est connecté à un tube anonyme (|) qui est connecté à l'entrée du programme &quot;dd&quot;.&lt;br /&gt;
La sortie (of=) du programme &quot;dd&quot; se fera sur la partition &quot;n&quot; du disque &quot;X&quot; (/dev/sdXn),&lt;br /&gt;
et le contenu de cette partition sera écrasé et remplacé par le contenu du fichier sauvegardé par la ligne de commandes précédente.

= Références =

[http://pwet.fr/man/linux/commandes/dd Page de man]

[http://www.softpanorama.org/Tools/dd.shtml Unix DD Command and Image Creation]

[http://www.linuxquestions.org/linux/answers/Applications_GUI_Multimedia/How_To_Do_Eveything_With_DD The real dd command]


[[Utilisateur:Lol|Lol]] 8 mars 2011 à 07:09 (CST)
[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>poy2890nxu78o9e6kdm64he9cw5imiz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5711</id>
      <parentid>5710</parentid>
      <timestamp>2014-08-20T03:44:22Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <comment>/* Sauvegarder la table de partition d'un disque dur */</comment>
      <text xml:space="preserve" bytes="8128">{{Ébauche|La commande dd}}

La commande dd.

= Introduction: =

Extrait de la page de man de dd :

&quot;dd copie un fichier (par défaut, depuis l'entrée standard vers la sortie standard) en permettant de sélectionner la taille de bloc, et d'effectuer des conversions.&quot;

Utilisée fréquement, la commande dd est très simple d'utilisation, très puissante et... tout aussi dangereuse.
Vérifiez toujours bien les commandes deux (trois ?) fois avant de les lancer.

&lt;span style=&quot;color:#FF0000;&quot;&gt;'''LES COMMANDES QUI SUIVENT PEUVENT ÊTRE EXTRÊMEMENT DESTRUCTIVES SI ELLES NE SONT PAS CONVENABLEMENT UTILISÉES. VOUS ÊTES PRÉVENUS!'''&lt;/span&gt;

'''NOTE:''' Pour pouvoir être copiée, déplacée, agrandie ou réduite, la partition source doit au préalable être &quot;démountée&quot; du système (voir &quot;umount&quot;).

== Syntaxe ==

La commande dd se présente généralement sous cette forme:

 dd if=&lt;source&gt; of=&lt;cible&gt; bs=&lt;taille des blocs&gt; skip= seek= conv=&lt;conversion&gt;

#source = données à copier;
#cible = endroit ou copier les données sources;
#bs = taille des blocs, de puissance 2, généralement égale à 512;
#skip = Ignorer le nombre indiqué de blocs (dont la taille est fournie par ibs) au début de la lecture;
#seek = Ignorer le nombre indiqué de blocs (dont la taille est fournie par ibs) au début de l'écriture. 
#conv = Modifier le fichier comme indiqué par l'argument conversion, qui peut prendre les valeurs suivantes (pas d'espace autour des virgules lorsque plusieurs arguments sont fournis) : 

 ascii, ebcdic, ibm, block, unblock, lcase, ucase, swab, noerror, notrunc, sync.

= Utilisation = 

== Copier une partition de disque dur sur un autre disque dur ==

Copie l'intégralité de la partition sda9 vers la partition sdb1, ne pas s'arrếter sur les erreurs de lecture.

 dd if=/dev/sda9 of=/dev/sdb1 bs=4096 conv=notrunc,noerror
 
 256000+0 enregistrements lus
 256000+0 enregistrements écrits
 1048576000 octets (1,0 GB) copiés, 30,778 s, 34,1 MB/s

notrunc = Ne pas limiter la taille du fichier de sortie.

noerror = Continuer même après des erreurs de lecture.

Remarque au sujet de l'UUID.

Copier une partition vers une autre copie aussi son UUID. Vous vous retrouvez alors avec deux partitions qui portent le même numéro...

 # blkid
 ...
 /dev/sda9: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;
 /dev/sdb1: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;

Il faut alors générer un nouveau numéro pour ne pas avoir de conflit (partition démontée...):

 # tune2fs -U random /dev/sdb1
 # blkid
 /dev/sda9: UUID=&quot;a5355774-2e6b-45fe-8993-0f23602c1616&quot; TYPE=&quot;ext2&quot;
 /dev/sdb1: UUID=&quot;75aa7a37-d2a2-4cf4-88f8-616067c7a684&quot; TYPE=&quot;ext2&quot;

== Cloner un disque dur en entier ==

Copie de l'intégralité (y compris le mbr) du disque sdg vers le disque sdh:

 dd if=/dev/sdg of=/dev/sdh conv=notrunc,noerror
 
 4030464+0 enregistrements lus
 4030464+0 enregistrements écrits
 2063597568 octets (2,1 GB) copiés, 1160,41 s, 1,8 MB/s

== Réaliser l'image ISO d'un CD ==

 dd if=/dev/sr0 of=/home/laurent/cd.iso bs=2048 conv=notrunc
 
 737+0 enregistrements lus
 737+0 enregistrements écrits
 1509376 octets (1,5 MB) copiés, 3,3215 s, 454 kB/s

Pour monter l'image obtenue:

 # mkdir /mnt/cd
 # mount -o loop -t iso9660 cd.iso /mnt/cd

Insertion permanente dans fstab:

 /chemin_vers_iso/cd.iso   /mnt/cd  iso9660 rw,user,noauto 0 0

== Effacer un lecteur ==

ATTENTION, COMMANDE DANGEREUSE!

Pour les paranos...
La commande suivante remplie 7 fois de suite un périphérique avec des données aléatoires.
Autant dire qu'il ne sera plus possible de récupérer quoi que ce soit sur ce périphérique...

 for n in `seq 7`; do dd if=/dev/urandom of=/dev/sdc bs=8b conv=notrunc; done
 
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 37,0691 s, 6,9 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 37,1506 s, 6,9 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,6351 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,4881 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,4908 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,5277 s, 7,0 MB/s
 dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 62465+0 enregistrements lus
 62464+0 enregistrements écrits
 255852544 octets (256 MB) copiés, 36,897 s, 6,9 MB/s

== Sauvegarder le MBR d'un disque dur ==

 dd if=/dev/sda of=MBR.image bs=446 count=1
 
 1+0 enregistrements lus
 1+0 enregistrements écrits
 446 octets (446 B) copiés, 3,0622e-05 s, 14,6 MB/s

Cette commande copiera les 446 premiers octets du disque dur dans un fichier.

== Sauvegarder la table de partition d'un disque dur ==

 dd if=/dev/sda of=MBR_Plus_Table.image bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 octets (512 B) copiés, 7,4232e-05 s, 6,9 MB/s

Cette commande copiera les 512 premiers octets du disque dur dans un fichier.

pour restaurer la table de partition
 dd if=MBR_Plus_Table.image of=/dev/sda bs=1 count=64 skip=446 seek=446 
 64+0 enregistrements lus
 64+0 enregistrements écrits
 64 octets (64 B) copiés, 0,00132602 s, 48,3 kB/s

Cette commande copiera les 64 dernier octets (skip=446) du fichier '''MBR_Plus_Table.image''' sur le disque '''/dev/sda''' a partir de l'octet 447 ( seek=446 ).

== Sauvegarder un disque dur ou une partition dans une image compressée ==

La ligne de commandes suivante permet de créer un fichier compressé, qui pourra être utilisé pour restaurer la partition &quot;n&quot; (&quot;n&quot; est une valeur numérique) du disque &quot;/dev/sdX&quot; (&quot;X&quot; est une lettre alphabétique).&lt;br /&gt;
(peu importe le type de partition)

 dd if=/dev/sdXn | gzip -c &gt; /media/suportamovible/fichierimage_part_dd.gz 

Dans cette ligne de commandes, le programme &quot;dd&quot; lit par blocs (de 512 octets par défaut) le contenu de la partition &quot;n&quot; du disque &quot;X&quot; (/dev/sdXn).&lt;br /&gt;
Le flux de sortie du programme &quot;dd&quot; est connecté par un tube anonyme (|) au flux d'entrée du programme &quot;gzip&quot;.&lt;br /&gt;
&quot;gzip&quot; va compresser ce flux et le retourner par son flux de sortie (option &quot;c&quot;) qui sera redirigé par &quot;&gt;&quot; vers le fichier &quot;/media/suportamovible/fichierimage_part_dd.gz&quot;.&lt;br /&gt;
Si le fichier &quot;/media/suportamovible/fichierimage_part_dd.gz&quot; existait avant l'exécution de cette ligne de commandes, il serait &quot;écrasé&quot;.&lt;br /&gt;&lt;br /&gt;

Pour restaurer la partition ainsi sauvegardée faire :

 gzip -cd /media/suportamovible/fichierimage_part_dd.gz | dd of=/dev/sdXn

Dans cette commande, le programme &quot;gzip&quot; dé-compresse (option &quot;d&quot;) le fichier &quot;/media/suportamovible/fichierimage_part_dd.gz&quot;.&lt;br /&gt;
Le flux de sortie du programme &quot;gzip&quot; (option &quot;c&quot;) est connecté à un tube anonyme (|) qui est connecté à l'entrée du programme &quot;dd&quot;.&lt;br /&gt;
La sortie (of=) du programme &quot;dd&quot; se fera sur la partition &quot;n&quot; du disque &quot;X&quot; (/dev/sdXn),&lt;br /&gt;
et le contenu de cette partition sera écrasé et remplacé par le contenu du fichier sauvegardé par la ligne de commandes précédente.

= Références =

[http://pwet.fr/man/linux/commandes/dd Page de man]

[http://www.softpanorama.org/Tools/dd.shtml Unix DD Command and Image Creation]

[http://www.linuxquestions.org/linux/answers/Applications_GUI_Multimedia/How_To_Do_Eveything_With_DD The real dd command]


[[Utilisateur:Lol|Lol]] 8 mars 2011 à 07:09 (CST)
[[Catégorie:Commandes]]
[[Niveau de difficulté::Débutant]]</text>
      <sha1>pqbskpj9lop7f8ee9gm67c94jul7aay</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Le dépôt snapshot</title>
    <ns>0</ns>
    <id>513</id>
    <revision>
      <id>2041</id>
      <timestamp>2010-09-05T07:59:47Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « == Le dépôt snapshot ==  Très utile si vous souhaitez annuler une mise à jour qui vous pose des problèmes, nous avons depuis peu (à nouveau) à notre disposition le dé... »</comment>
      <text xml:space="preserve" bytes="2713">== Le dépôt snapshot ==

Très utile si vous souhaitez annuler une mise à jour qui vous pose des problèmes, nous avons depuis peu (à nouveau) à notre disposition le dépôt snapshot : 
http://snapshot.debian.org/

Il s'agit d'une &quot;machine à remonter le temps&quot; qui archive toutes les version des deb au fur et à mesure de leur sortie.
Il devient donc très facile de revenir en arrière...

Ces instantanés d'archives sont aussi facilement accessibles que tous les autres dépôts apt, ce qui permet de les utiliser très simplement.

Vous pouvez par exemple utiliser une testing figée à un moment donné, sans vous inquiéter des mises à jour qui pourraient apporter leur lot de bogues.

Vous venez de faire la mise à jour d'un paquet, et vous vous apercevez qu'il est bogué, comment revenir en arrière...


* Utilisation :

Allez sur 
http://snapshot.debian.org
pour trouver le paquet qui vous intéresse , et la date à laquelle il est entré dans les dépôts

Par exemple pour atp 0.7.25.3 :

 Seen in debian on 2010-02-02 03:39:17 in /pool/main/a/apt.

http://snapshot.debian.org/package/apt/ ... t_0.7.25.3
Il faut maintenant modifier son sources.list

Ajouter le dépôt snapshot, commenter le dépôt actuel, mettre à jour et réinstaller :

Explication sur la syntaxe du dépôt :

deb http://snapshot.debian.org/archive/debian/20100202T033917Z/ sid main contrib non-free

Détail :

{| class=&quot;wikitable&quot;
|-
! année !! mois !! jour !! T !! heure !! minute !! seconde !! Z
|-
| 2010 || 02 || 02 || T || 03 || 39 || 17 || Z
|}


Ajoutez le dépôt snapshot et commentez le dépôt habituel (dans /etc/apt/sources.list ou /etc/apt/sources.list.d/sources.list)

 ### ---&gt; Unstable
 #deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 deb http://snapshot.debian.org/archive/debian/20100202T033917Z/ sid main contrib non-free
 # deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free

Mettez à jour et installez le paquet tant désiré :

 # apt-get update
 # apt-get install le_paquet_a_rétrograder/unstable

Vous avez aussi la possibilité d'ajouter une préférence pour n'avoir qu'a taper :


Exemple (/etc/apt/preferences)

 Package: apt
    Pin: version 0.7.25.3
    Pin-Priority: 1001

 # apt-get install le_paquet_a_rétrograder

Remettez votre sources.list initial en commentant le dépôt snapshot et décommentant le dépôt habituel.

 # apt-get update

Si vous souhaitez conserver le paquet installé sans qu'il ne soit mis-à-jour lors d'un apt-get upgrade ou aptitude upgrade, il faut en passer par le fichier préférences (
[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]]
)</text>
      <sha1>smjq92vurcpv24ivjg5clcmkscp2mpj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2045</id>
      <parentid>2041</parentid>
      <timestamp>2010-09-06T10:30:46Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Le dépôt snapshot */</comment>
      <text xml:space="preserve" bytes="2977">== Le dépôt snapshot ==

Très utile si vous souhaitez annuler une mise à jour qui vous pose des problèmes, nous avons depuis peu (à nouveau) à notre disposition le dépôt snapshot : 
http://snapshot.debian.org/

Il s'agit d'une &quot;machine à remonter le temps&quot; qui archive toutes les version des deb au fur et à mesure de leur sortie.
Il devient donc très facile de revenir en arrière...

Ces instantanés d'archives sont aussi facilement accessibles que tous les autres dépôts apt, ce qui permet de les utiliser très simplement.

Vous pouvez par exemple utiliser une testing figée à un moment donné, sans vous inquiéter des mises à jour qui pourraient apporter leur lot de bogues.

Vous venez de faire la mise à jour d'un paquet, et vous vous apercevez qu'il est bogué, comment revenir en arrière...


* Utilisation :

Allez sur 
http://snapshot.debian.org
pour trouver le paquet qui vous intéresse , et la date à laquelle il est entré dans les dépôts

Par exemple pour atp 0.7.25.3 :

 Seen in debian on 2010-02-02 03:39:17 in /pool/main/a/apt.

http://snapshot.debian.org/package/apt/ ... t_0.7.25.3
Il faut maintenant modifier son sources.list

Ajouter le dépôt snapshot, commenter le dépôt actuel, mettre à jour et réinstaller :

Explication sur la syntaxe du dépôt :

deb http://snapshot.debian.org/archive/debian/20100202T033917Z/ sid main contrib non-free

Détail :

{| class=&quot;wikitable&quot;
|-
! année !! mois !! jour !! T !! heure !! minute !! seconde !! Z
|-
| 2010 || 02 || 02 || T || 03 || 39 || 17 || Z
|}


Ajoutez le dépôt snapshot et commentez le dépôt habituel (dans /etc/apt/sources.list ou /etc/apt/sources.list.d/sources.list)

 ### ---&gt; Unstable
 #deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 deb http://snapshot.debian.org/archive/debian/20100202T033917Z/ sid main contrib non-free
 # deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free

Mettez à jour et installez le paquet tant désiré :

 # apt-get update
 # apt-get install le_paquet_a_rétrograder/unstable

Vous avez aussi la possibilité d'ajouter une préférence pour n'avoir qu'a taper :

Exemple (/etc/apt/preferences)

 Package: apt
    Pin: version 0.7.25.3
    Pin-Priority: 1001

Ou pour mettre le dépôt entier: 
'''Attention, avec le fichier &quot;preférences&quot; suivant, c'est la totalité de votre système qui pourraît être &quot;rétrogradé&quot; en cas d' apt-get dist-upgrade'''

 Package: *
  Pin: origin snapshot.debian.org
  Pin-Priority: 1001 

 # apt-get install le_paquet_a_rétrograder

Remettez votre sources.list initial en commentant le dépôt snapshot et décommentant le dépôt habituel.

 # apt-get update

Si vous souhaitez conserver le paquet installé sans qu'il ne soit mis-à-jour lors d'un apt-get upgrade ou aptitude upgrade, il faut en passer par le fichier préférences (
[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]]
)</text>
      <sha1>48adnpjwxode2g42yqmguc5dj8y54hx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2095</id>
      <parentid>2045</parentid>
      <timestamp>2010-09-15T17:04:34Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2997">== Le dépôt snapshot ==

Très utile si vous souhaitez annuler une mise à jour qui vous pose des problèmes, nous avons depuis peu (à nouveau) à notre disposition le dépôt snapshot : 
http://snapshot.debian.org/

Il s'agit d'une &quot;machine à remonter le temps&quot; qui archive toutes les version des deb au fur et à mesure de leur sortie.
Il devient donc très facile de revenir en arrière...

Ces instantanés d'archives sont aussi facilement accessibles que tous les autres dépôts apt, ce qui permet de les utiliser très simplement.

Vous pouvez par exemple utiliser une testing figée à un moment donné, sans vous inquiéter des mises à jour qui pourraient apporter leur lot de bogues.

Vous venez de faire la mise à jour d'un paquet, et vous vous apercevez qu'il est bogué, comment revenir en arrière...


* Utilisation :

Allez sur 
http://snapshot.debian.org
pour trouver le paquet qui vous intéresse , et la date à laquelle il est entré dans les dépôts

Par exemple pour atp 0.7.25.3 :

 Seen in debian on 2010-02-02 03:39:17 in /pool/main/a/apt.

http://snapshot.debian.org/package/apt/ ... t_0.7.25.3
Il faut maintenant modifier son sources.list

Ajouter le dépôt snapshot, commenter le dépôt actuel, mettre à jour et réinstaller :

Explication sur la syntaxe du dépôt :

deb http://snapshot.debian.org/archive/debian/20100202T033917Z/ sid main contrib non-free

Détail :

{| class=&quot;wikitable&quot;
|-
! année !! mois !! jour !! T !! heure !! minute !! seconde !! Z
|-
| 2010 || 02 || 02 || T || 03 || 39 || 17 || Z
|}


Ajoutez le dépôt snapshot et commentez le dépôt habituel (dans /etc/apt/sources.list ou /etc/apt/sources.list.d/sources.list)

 ### ---&gt; Unstable
 #deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 deb http://snapshot.debian.org/archive/debian/20100202T033917Z/ sid main contrib non-free
 # deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free

Mettez à jour et installez le paquet tant désiré :

 # apt-get update
 # apt-get install le_paquet_a_rétrograder/unstable

Vous avez aussi la possibilité d'ajouter une préférence pour n'avoir qu'a taper :

Exemple (/etc/apt/preferences)

 Package: apt
    Pin: version 0.7.25.3
    Pin-Priority: 1001

Ou pour mettre le dépôt entier: 
'''Attention, avec le fichier &quot;preférences&quot; suivant, c'est la totalité de votre système qui pourraît être &quot;rétrogradé&quot; en cas d' apt-get dist-upgrade'''

 Package: *
  Pin: origin snapshot.debian.org
  Pin-Priority: 1001 

 # apt-get install le_paquet_a_rétrograder

Remettez votre sources.list initial en commentant le dépôt snapshot et décommentant le dépôt habituel.

 # apt-get update

Si vous souhaitez conserver le paquet installé sans qu'il ne soit mis-à-jour lors d'un apt-get upgrade ou aptitude upgrade, il faut en passer par le fichier préférences (
[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]]
)

[[Catégorie:Apt]]</text>
      <sha1>dv1outs9a7bn8nuw1wpl3p4h79rsejg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3450</id>
      <parentid>2095</parentid>
      <timestamp>2011-09-04T12:47:26Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>option Acquire::Check-Valid-Until=false</comment>
      <text xml:space="preserve" bytes="3463">== Le dépôt snapshot ==

Très utile si vous souhaitez annuler une mise à jour qui vous pose des problèmes, nous avons depuis peu (à nouveau) à notre disposition le dépôt snapshot : 
http://snapshot.debian.org/

Il s'agit d'une &quot;machine à remonter le temps&quot; qui archive toutes les version des deb au fur et à mesure de leur sortie.
Il devient donc très facile de revenir en arrière...

Ces instantanés d'archives sont aussi facilement accessibles que tous les autres dépôts apt, ce qui permet de les utiliser très simplement.

Vous pouvez par exemple utiliser une testing figée à un moment donné, sans vous inquiéter des mises à jour qui pourraient apporter leur lot de bogues.

Vous venez de faire la mise à jour d'un paquet, et vous vous apercevez qu'il est bogué, comment revenir en arrière...


== Utilisation ==

Allez sur 
http://snapshot.debian.org
pour trouver le paquet qui vous intéresse , et la date à laquelle il est entré dans les dépôts

Par exemple pour atp 0.7.25.3 :

 Seen in debian on 2010-02-02 03:39:17 in /pool/main/a/apt.

http://snapshot.debian.org/package/apt/ ... t_0.7.25.3
Il faut maintenant modifier son sources.list

Ajouter le dépôt snapshot, commenter le dépôt actuel, mettre à jour et réinstaller :

Explication sur la syntaxe du dépôt :

deb http://snapshot.debian.org/archive/debian/20100202T033917Z/ sid main contrib non-free

Détail :

{| class=&quot;wikitable&quot;
|-
! année !! mois !! jour !! T !! heure !! minute !! seconde !! Z
|-
| 2010 || 02 || 02 || T || 03 || 39 || 17 || Z
|}


Ajoutez le dépôt snapshot et commentez le dépôt habituel (dans /etc/apt/sources.list ou /etc/apt/sources.list.d/sources.list)

 ### ---&gt; Unstable
 #deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 deb http://snapshot.debian.org/archive/debian/20100202T033917Z/ sid main contrib non-free
 # deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free

Mettez à jour et installez le paquet tant désiré :

 # apt-get update
 # apt-get install le_paquet_a_rétrograder/unstable

Vous avez aussi la possibilité d'ajouter une préférence pour n'avoir qu'a taper :

Exemple (/etc/apt/preferences)

 Package: apt
    Pin: version 0.7.25.3
    Pin-Priority: 1001

Ou pour mettre le dépôt entier: 
'''Attention, avec le fichier &quot;preférences&quot; suivant, c'est la totalité de votre système qui pourraît être &quot;rétrogradé&quot; en cas d' apt-get dist-upgrade'''

 Package: *
  Pin: origin snapshot.debian.org
  Pin-Priority: 1001 

 # apt-get install le_paquet_a_rétrograder

Remettez votre sources.list initial en commentant le dépôt snapshot et décommentant le dépôt habituel.

 # apt-get update

Si vous souhaitez conserver le paquet installé sans qu'il ne soit mis-à-jour lors d'un apt-get upgrade ou aptitude upgrade, il faut en passer par le fichier préférences (
[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]]
)

== En cas d'erreur '''expired''' ==

Si vous recevez ce genre de message au moment de lancer aptitude update (ou apt-get update):

 E: Release file for http://snapshot.debian.org/archive/debian/20110826T074824Z/dists/sid/Release is expired
 (invalid since 2d 10h 15min 57s). Updates for this repository will not be applied.

Il suffit de lancer l'update avec l'option '''Acquire::Check-Valid-Until=false'''

 aptitude -o 'Acquire::Check-Valid-Until=false' update

[[Catégorie:Apt]]</text>
      <sha1>fddbgu0rcfc9csswbudt7sm53bxknhh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3964</id>
      <parentid>3450</parentid>
      <timestamp>2012-03-17T05:51:25Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* En cas d'erreur expired */ Message d'erreur en français</comment>
      <text xml:space="preserve" bytes="3713">== Le dépôt snapshot ==

Très utile si vous souhaitez annuler une mise à jour qui vous pose des problèmes, nous avons depuis peu (à nouveau) à notre disposition le dépôt snapshot : 
http://snapshot.debian.org/

Il s'agit d'une &quot;machine à remonter le temps&quot; qui archive toutes les version des deb au fur et à mesure de leur sortie.
Il devient donc très facile de revenir en arrière...

Ces instantanés d'archives sont aussi facilement accessibles que tous les autres dépôts apt, ce qui permet de les utiliser très simplement.

Vous pouvez par exemple utiliser une testing figée à un moment donné, sans vous inquiéter des mises à jour qui pourraient apporter leur lot de bogues.

Vous venez de faire la mise à jour d'un paquet, et vous vous apercevez qu'il est bogué, comment revenir en arrière...


== Utilisation ==

Allez sur 
http://snapshot.debian.org
pour trouver le paquet qui vous intéresse , et la date à laquelle il est entré dans les dépôts

Par exemple pour atp 0.7.25.3 :

 Seen in debian on 2010-02-02 03:39:17 in /pool/main/a/apt.

http://snapshot.debian.org/package/apt/ ... t_0.7.25.3
Il faut maintenant modifier son sources.list

Ajouter le dépôt snapshot, commenter le dépôt actuel, mettre à jour et réinstaller :

Explication sur la syntaxe du dépôt :

deb http://snapshot.debian.org/archive/debian/20100202T033917Z/ sid main contrib non-free

Détail :

{| class=&quot;wikitable&quot;
|-
! année !! mois !! jour !! T !! heure !! minute !! seconde !! Z
|-
| 2010 || 02 || 02 || T || 03 || 39 || 17 || Z
|}


Ajoutez le dépôt snapshot et commentez le dépôt habituel (dans /etc/apt/sources.list ou /etc/apt/sources.list.d/sources.list)

 ### ---&gt; Unstable
 #deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
 deb http://snapshot.debian.org/archive/debian/20100202T033917Z/ sid main contrib non-free
 # deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free

Mettez à jour et installez le paquet tant désiré :

 # apt-get update
 # apt-get install le_paquet_a_rétrograder/unstable

Vous avez aussi la possibilité d'ajouter une préférence pour n'avoir qu'a taper :

Exemple (/etc/apt/preferences)

 Package: apt
    Pin: version 0.7.25.3
    Pin-Priority: 1001

Ou pour mettre le dépôt entier: 
'''Attention, avec le fichier &quot;preférences&quot; suivant, c'est la totalité de votre système qui pourraît être &quot;rétrogradé&quot; en cas d' apt-get dist-upgrade'''

 Package: *
  Pin: origin snapshot.debian.org
  Pin-Priority: 1001 

 # apt-get install le_paquet_a_rétrograder

Remettez votre sources.list initial en commentant le dépôt snapshot et décommentant le dépôt habituel.

 # apt-get update

Si vous souhaitez conserver le paquet installé sans qu'il ne soit mis-à-jour lors d'un apt-get upgrade ou aptitude upgrade, il faut en passer par le fichier préférences (
[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]]
)

== En cas d'erreur '''expired''' ==

Si vous recevez ce genre de message au moment de lancer aptitude update (ou apt-get update):

 E: Release file for http://snapshot.debian.org/archive/debian/20110826T074824Z/dists/sid/Release is expired
 (invalid since 2d 10h 15min 57s). Updates for this repository will not be applied.

En français (pour les moteurs de recherche...)

 E: Le fichier « Release » pour http://snapshot.debian.org/archive/debi ... /InRelease a expiré
 (plus valable depuis 116d 0h 41min 58s). Les mises à jour depuis ce dépôt ne s'effectueront pas.

Il suffit de lancer l'update avec l'option '''Acquire::Check-Valid-Until=false'''

 aptitude -o 'Acquire::Check-Valid-Until=false' update

[[Catégorie:Apt]]</text>
      <sha1>a944clrvc6y3xkjy6lg4zopo7s0uzsn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Le fichier interfaces</title>
    <ns>0</ns>
    <id>213</id>
    <revision>
      <id>815</id>
      <timestamp>2010-02-03T19:04:04Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <comment>Page créée avec « {{Ébauche|le fichier '''/etc/network/interfaces'''}} Le fichier interfaces, situé dans le dossier ''/etc/network'', est un fichier qui permet de paramétrer sa connection i… »</comment>
      <text xml:space="preserve" bytes="2418">{{Ébauche|le fichier '''/etc/network/interfaces'''}}
Le fichier interfaces, situé dans le dossier ''/etc/network'', est un fichier qui permet de paramétrer sa connection internet ( wifi,ethernet,vnc,vpn,bridge...).
Pour des solutions graphiques, allez voir du côté de [[cwiid]] et [[networkmanager]].

=== syntaxe ===
Le fichier interfaces est constitué comme ceci:

 &lt;méthode de lancement&gt; &lt;interface&gt;
 iface &lt;interface&gt; inet &lt;static/dhcp&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)adress &lt;adresse ip&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)netmask &lt;masque de sous réseau&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)network &lt;ip du réseau&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)broadcast &lt;adresse de broadcast&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)gateway &lt;adresse du routeur&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[dns-nameservers &lt;serveur 1&gt; [serveur 2] [...]]&lt;/nowiki&gt;
&lt;p&gt;
'''&lt;méthode de lancement&gt;''' peut avoir les valeurs '''allow-hotplug''', qui laisse l'utilisateur démarrer soi-même sa connection avec ''ifup &lt;interface&gt;'', ou '''auto''' qui démarre la connection au démarrage.&lt;br/&gt;
'''&lt;interface&gt;''' peut ressembler, selon le pilote, à ethX, wlanX, rauX où X est un nombre.&lt;br/&gt;
'''&lt;static/dhcp&gt;''' choisit la méthode d'attribution d'ip. la méthode actuellement privilégiée est dhcp, car permet d'attribuer tous les paramètres tels que l'adresse ip, la passerelle par défaut, ...&lt;br/&gt;
'''&lt;adresse ip&gt;''' sous la forme 192.168.X.X&lt;br/&gt;
'''&lt;masque de sous réseau&gt;''' sous la forme 255.255.255.0 en général&lt;br/&gt;
'''&lt;network&gt;''' : 192.168.X.0&lt;br/&gt;
'''&lt;broadcast&gt;''': 192.168.X.255&lt;br/&gt;
'''&lt;gateway&gt;''': 192.168.X.1 en général.&lt;br/&gt;
&lt;/p&gt;
=== connaitre le nom de son interface ===

Pour connaitre le nom de prendra son interface, faites la commande:

 $ cat /etc/udev/rules.d/70-persistent-net.rules

Le nom de votre interface sera noté dans l'attribut ''NAME='' .

Après avoir correctement paramétré votre fichier interfaces, tapez la commande ( en '''root''' ):

 # ifconfig &lt;interface&gt; up

Pour vérifier si la connection est établie, tapez la commande:

 $ ping 216.239.59.104

et pour vérifier si les DNS sont actifs:
 
 $ ping google.fr

Vous pourrez ensuite naviguer sur le web avec votre navigateur favori.

Pour le wifi avec ce même fichier, allez voir du côté de [[interfaces et wpasupplicant]] en passant d'abord par la [[:Catégorie:Wifi|catégorie du wifi]].
[[Utilisateur:L0u!$|L0u!$]] 3 février 2010 à 19:04 (UTC)</text>
      <sha1>9nfscbnxw9zppnjhv0ily0a2maxb1z0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>816</id>
      <parentid>815</parentid>
      <timestamp>2010-02-03T19:04:42Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="2439">{{Ébauche|le fichier '''/etc/network/interfaces'''}}
Le fichier interfaces, situé dans le dossier ''/etc/network'', est un fichier qui permet de paramétrer sa connection internet ( wifi,ethernet,vnc,vpn,bridge...).
Pour des solutions graphiques, allez voir du côté de [[cwiid]] et [[networkmanager]].

=== syntaxe ===
Le fichier interfaces est constitué comme ceci:

 &lt;méthode de lancement&gt; &lt;interface&gt;
 iface &lt;interface&gt; inet &lt;static/dhcp&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)adress &lt;adresse ip&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)netmask &lt;masque de sous réseau&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)network &lt;ip du réseau&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)broadcast &lt;adresse de broadcast&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)gateway &lt;adresse du routeur&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[dns-nameservers &lt;serveur 1&gt; [serveur 2] [...]]&lt;/nowiki&gt;
&lt;p&gt;
'''&lt;méthode de lancement&gt;''' peut avoir les valeurs '''allow-hotplug''', qui laisse l'utilisateur démarrer soi-même sa connection avec ''ifup &lt;interface&gt;'', ou '''auto''' qui démarre la connection au démarrage.&lt;br/&gt;
'''&lt;interface&gt;''' peut ressembler, selon le pilote, à ethX, wlanX, rauX où X est un nombre.&lt;br/&gt;
'''&lt;static/dhcp&gt;''' choisit la méthode d'attribution d'ip. la méthode actuellement privilégiée est dhcp, car permet d'attribuer tous les paramètres tels que l'adresse ip, la passerelle par défaut, ...&lt;br/&gt;
'''&lt;adresse ip&gt;''' sous la forme 192.168.X.X&lt;br/&gt;
'''&lt;masque de sous réseau&gt;''' sous la forme 255.255.255.0 en général&lt;br/&gt;
'''&lt;network&gt;''' : 192.168.X.0&lt;br/&gt;
'''&lt;broadcast&gt;''': 192.168.X.255&lt;br/&gt;
'''&lt;gateway&gt;''': 192.168.X.1 en général.&lt;br/&gt;
&lt;/p&gt;
=== connaitre le nom de son interface ===

Pour connaitre le nom de prendra son interface, faites la commande:

 $ cat /etc/udev/rules.d/70-persistent-net.rules

Le nom de votre interface sera noté dans l'attribut ''NAME='' .

Après avoir correctement paramétré votre fichier interfaces, tapez la commande ( en '''root''' ):

 # ifconfig &lt;interface&gt; up

Pour vérifier si la connection est établie, tapez la commande:

 $ ping 216.239.59.104

et pour vérifier si les DNS sont actifs:
 
 $ ping google.fr

Vous pourrez ensuite naviguer sur le web avec votre navigateur favori.

Pour le wifi avec ce même fichier, allez voir du côté de [[interfaces et wpasupplicant]] en passant d'abord par la [[:Catégorie:Wifi|catégorie du wifi]].
[[Utilisateur:L0u!$|L0u!$]] 3 février 2010 à 19:04 (UTC)

[[Catégorie:????]]</text>
      <sha1>9chd9kwxaootyhtgbhp8ex7009xgt0l</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>830</id>
      <parentid>816</parentid>
      <timestamp>2010-02-04T08:53:35Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* connaitre le nom de son interface */</comment>
      <text xml:space="preserve" bytes="2438">{{Ébauche|le fichier '''/etc/network/interfaces'''}}
Le fichier interfaces, situé dans le dossier ''/etc/network'', est un fichier qui permet de paramétrer sa connection internet ( wifi,ethernet,vnc,vpn,bridge...).
Pour des solutions graphiques, allez voir du côté de [[cwiid]] et [[networkmanager]].

=== syntaxe ===
Le fichier interfaces est constitué comme ceci:

 &lt;méthode de lancement&gt; &lt;interface&gt;
 iface &lt;interface&gt; inet &lt;static/dhcp&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)adress &lt;adresse ip&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)netmask &lt;masque de sous réseau&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)network &lt;ip du réseau&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)broadcast &lt;adresse de broadcast&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)gateway &lt;adresse du routeur&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[dns-nameservers &lt;serveur 1&gt; [serveur 2] [...]]&lt;/nowiki&gt;
&lt;p&gt;
'''&lt;méthode de lancement&gt;''' peut avoir les valeurs '''allow-hotplug''', qui laisse l'utilisateur démarrer soi-même sa connection avec ''ifup &lt;interface&gt;'', ou '''auto''' qui démarre la connection au démarrage.&lt;br/&gt;
'''&lt;interface&gt;''' peut ressembler, selon le pilote, à ethX, wlanX, rauX où X est un nombre.&lt;br/&gt;
'''&lt;static/dhcp&gt;''' choisit la méthode d'attribution d'ip. la méthode actuellement privilégiée est dhcp, car permet d'attribuer tous les paramètres tels que l'adresse ip, la passerelle par défaut, ...&lt;br/&gt;
'''&lt;adresse ip&gt;''' sous la forme 192.168.X.X&lt;br/&gt;
'''&lt;masque de sous réseau&gt;''' sous la forme 255.255.255.0 en général&lt;br/&gt;
'''&lt;network&gt;''' : 192.168.X.0&lt;br/&gt;
'''&lt;broadcast&gt;''': 192.168.X.255&lt;br/&gt;
'''&lt;gateway&gt;''': 192.168.X.1 en général.&lt;br/&gt;
&lt;/p&gt;
=== connaitre le nom de son interface ===

Pour connaitre le nom de prendra son interface, faites la commande:

 $ cat /etc/udev/rules.d/70-persistent-net.rules

Le nom de votre interface sera noté dans l'attribut ''NAME='' .

Après avoir correctement paramétré votre fichier interfaces, tapez la commande ( en '''root''' ):

 # ifconfig &lt;interface&gt; up

Pour vérifier si la connexion est établie, tapez la commande:

 $ ping 216.239.59.104

et pour vérifier si les DNS sont actifs:
 
 $ ping google.fr

Vous pourrez ensuite naviguer sur le web avec votre navigateur favori.

Pour le wifi avec ce même fichier, allez voir du côté de [[interfaces et wpasupplicant]] en passant d'abord par la [[:Catégorie:Wifi|catégorie du wifi]].
[[Utilisateur:L0u!$|L0u!$]] 3 février 2010 à 19:04 (UTC)

[[Catégorie:????]]</text>
      <sha1>k66a3f2ds8bmvgkqlkz1tcrtd60tajj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>912</id>
      <parentid>830</parentid>
      <timestamp>2010-02-05T17:44:50Z</timestamp>
      <contributor>
        <username>Kna</username>
        <id>35</id>
      </contributor>
      <text xml:space="preserve" bytes="4455">{{Ébauche|le fichier '''/etc/network/interfaces'''}}
Le fichier interfaces, situé dans le dossier ''/etc/network'', est un fichier qui permet de paramétrer sa connection internet ( wifi,ethernet,vnc,vpn,bridge...).

Pour des solutions graphiques, allez voir du côté de [[wicd]] et [[networkmanager]].
Si vous optez pour une solution graphique assurez vous d'avoir seulement les lignes suivantes dans le fichier interfaces :
 auto lo
 iface lo inet loopback
Ainsi, seule la connexion à l'interface loopback sera configuré, laissant votre utilitaire graphique se charger du reste.

=== syntaxe ===
Le fichier interfaces est constitué comme ceci:

 &lt;méthode de lancement&gt; &lt;interface&gt;
 iface &lt;interface&gt; inet &lt;static/dhcp&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)address &lt;adresse ip&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)netmask &lt;masque de sous réseau&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)network &lt;ip du réseau&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)broadcast &lt;adresse de broadcast&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)gateway &lt;adresse du routeur&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)dns-nameservers &lt;serveur 1&gt; [serveur 2] [...]]&lt;/nowiki&gt;
&lt;p&gt;
'''&lt;méthode de lancement&gt;''' peut avoir les valeurs '''allow-hotplug''', qui laisse l'utilisateur démarrer soi-même sa connection avec ''ifup &lt;interface&gt;'', ou '''auto''' qui démarre la connection au démarrage.&lt;br/&gt;
'''&lt;interface&gt;''' peut ressembler, selon le pilote, à ethX, wlanX, rauX où X est un nombre.&lt;br/&gt;
'''&lt;static/dhcp&gt;''' choisit la méthode d'attribution d'ip. la méthode actuellement privilégiée est dhcp, car permet d'attribuer tous les paramètres tels que l'adresse ip, la passerelle par défaut, ...&lt;br/&gt;
'''&lt;adresse ip&gt;''' sous la forme 192.168.X.X&lt;br/&gt;
'''&lt;masque de sous réseau&gt;''' sous la forme 255.255.255.0 en général&lt;br/&gt;
'''&lt;network&gt;''' : 192.168.X.0&lt;br/&gt;
'''&lt;broadcast&gt;''': 192.168.X.255&lt;br/&gt;
'''&lt;gateway&gt;''': 192.168.X.1 en général.&lt;br/&gt;
&lt;/p&gt;
=== connaitre le nom de son interface ===

Pour connaitre le nom de prendra son interface, faites la commande:

 $ /sbin/ifconfig -a

Les interfaces sont listées dans la colonne de gauche. Les interfaces ethernet s'appellent généralement « ethX » et les interfaces WiFi s'appellent généralement « wlanX », X étant un chiffre (elles sont numérotées à partir de zéro) mais peuvent varier selon le pilote utilisé. 
Si votre interface n'apparaît pas, il manque probablement un pilote, allez sur http://kmuto.jp/debian/hcl/ pour savoir quel pilote vous devez utiliser.

Après avoir correctement paramétré votre fichier interfaces, vous pouvez activer une interface en tapant ( en '''root''' ):

 # ifup &lt;interface&gt;

et la désactiver en tapant :

 # ifdown &lt;interface&gt;

Le service '''networking''', active les interfaces notées « auto » dans le fichier interfaces au démarrage du système, et désactive toutes les interfaces à l'extinction. Vous pouvez le lancer manuellement :

 # /etc/init.d/networking (start|stop|restart)

Pour vérifier si la connexion est établie, tapez la commande:

 $ ping 216.239.59.104

et pour vérifier si les DNS sont actifs:
 
 $ ping google.fr

Si vous avez un problème de DNS, vous pouvez les enregistrer manuellement en éditant le fichier '''/etc/resolv.conf''' qui doit-être de la forme :

 nameserver &lt;adresse du DNS1&gt;
 nameserver &lt;adresse du DNS2&gt;

Vous pourrez ensuite naviguer sur le web avec votre navigateur favori.

Pour le wifi avec ce même fichier, allez voir du côté de [[interfaces et wpasupplicant]] en passant d'abord par la [[:Catégorie:Wifi|catégorie du wifi]].
[[Utilisateur:L0u!$|L0u!$]] 3 février 2010 à 19:04 (UTC)

=== Lancer des commandes lors de l'activation ou la désactivation d'une interface ===

Il est possible de rajouter des commandes qui seront lancées lorsque vous lancez '''ifup''' ou '''ifdown'''.

   pre-up &lt;commande&gt;
   post-up &lt;commande&gt;
   pre-down &lt;commande&gt;
   post-down &lt;commande&gt;

Comme leur nom l'indique, '''pre-up''' détermine la commande lancée avant l'activation de l'interface, '''post-up''' détermine la commande lancée après l'activation de l'interface. '''pre-down''' et '''post-down''' feront de même pour la désactivation.

Vous pouvez aussi mettre des scripts dans les dossiers if-pre-up.d, if-post-up.d, if-pre-down.d, if-post-down.d, situés dans /etc/network. Ces scripts seront lancés quelque soit l'interface activée ou désactivée.

=== Ressources ===

 $ man interfaces
 $ man ifup

[[Catégorie:????]]</text>
      <sha1>lt7flhekmqdeczojyg7l61foe89ezq8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>914</id>
      <parentid>912</parentid>
      <timestamp>2010-02-05T18:37:19Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="4452">{{Ébauche|le fichier '''/etc/network/interfaces'''}}
Le fichier interfaces, situé dans le dossier ''/etc/network'', est un fichier qui permet de paramétrer sa connexion internet ( wifi,ethernet,vnc,vpn,bridge...).

Pour des solutions graphiques, allez voir du côté de [[wicd]] et [[networkmanager]].
Si vous optez pour une solution graphique assurez vous d'avoir seulement les lignes suivantes dans le fichier interfaces :
 auto lo
 iface lo inet loopback
Ainsi, seule la connexion à l'interface loopback sera configuré, laissant votre utilitaire graphique se charger du reste.

=== syntaxe ===
Le fichier interfaces est constitué comme ceci:

 &lt;méthode de lancement&gt; &lt;interface&gt;
 iface &lt;interface&gt; inet &lt;static/dhcp&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)address &lt;adresse ip&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)netmask &lt;masque de sous réseau&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)network &lt;ip du réseau&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)broadcast &lt;adresse de broadcast&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)gateway &lt;adresse du routeur&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)dns-nameservers &lt;serveur 1&gt; [serveur 2] [...]]&lt;/nowiki&gt;
&lt;p&gt;
'''&lt;méthode de lancement&gt;''' peut avoir les valeurs '''allow-hotplug''', qui laisse l'utilisateur démarrer soi-même sa connexion avec ''ifup &lt;interface&gt;'', ou '''auto''' qui démarre la connexion au démarrage.&lt;br/&gt;
'''&lt;interface&gt;''' peut ressembler, selon le pilote, à ethX, wlanX, rauX où X est un nombre.&lt;br/&gt;
'''&lt;static/dhcp&gt;''' choisit la méthode d'attribution d'ip. la méthode actuellement privilégiée est dhcp, car permet d'attribuer tous les paramètres tels que l'adresse ip, la passerelle par défaut, ...&lt;br/&gt;
'''&lt;adresse ip&gt;''' sous la forme 192.168.X.X&lt;br/&gt;
'''&lt;masque de sous réseau&gt;''' sous la forme 255.255.255.0 en général&lt;br/&gt;
'''&lt;network&gt;''' : 192.168.X.0&lt;br/&gt;
'''&lt;broadcast&gt;''': 192.168.X.255&lt;br/&gt;
'''&lt;gateway&gt;''': 192.168.X.1 en général.&lt;br/&gt;
&lt;/p&gt;
=== connaitre le nom de son interface ===

Pour connaitre le nom de prendra son interface, faites la commande:

 $ /sbin/ifconfig -a

Les interfaces sont listées dans la colonne de gauche. Les interfaces ethernet s'appellent généralement « ethX » et les interfaces WiFi s'appellent généralement « wlanX », X étant un chiffre (elles sont numérotées à partir de zéro) mais peuvent varier selon le pilote utilisé. 
Si votre interface n'apparaît pas, il manque probablement un pilote, allez sur http://kmuto.jp/debian/hcl/ pour savoir quel pilote vous devez utiliser.

Après avoir correctement paramétré votre fichier interfaces, vous pouvez activer une interface en tapant ( en '''root''' ):

 # ifup &lt;interface&gt;

et la désactiver en tapant :

 # ifdown &lt;interface&gt;

Le service '''networking''', active les interfaces notées « auto » dans le fichier interfaces au démarrage du système, et désactive toutes les interfaces à l'extinction. Vous pouvez le lancer manuellement :

 # /etc/init.d/networking (start|stop|restart)

Pour vérifier si la connexion est établie, tapez la commande:

 $ ping 216.239.59.104

et pour vérifier si les DNS sont actifs:
 
 $ ping google.fr

Si vous avez un problème de DNS, vous pouvez les enregistrer manuellement en éditant le fichier '''/etc/resolv.conf''' qui doit-être de la forme :

 nameserver &lt;adresse du DNS1&gt;
 nameserver &lt;adresse du DNS2&gt;

Vous pourrez ensuite naviguer sur le web avec votre navigateur favori.

Pour le wifi avec ce même fichier, allez voir du côté de [[interfaces et wpasupplicant]] en passant d'abord par la [[:Catégorie:Wifi|catégorie du wifi]].
[[Utilisateur:L0u!$|L0u!$]] 3 février 2010 à 19:04 (UTC)

=== Lancer des commandes lors de l'activation ou la désactivation d'une interface ===

Il est possible de rajouter des commandes qui seront lancées lorsque vous lancez '''ifup''' ou '''ifdown'''.

   pre-up &lt;commande&gt;
   post-up &lt;commande&gt;
   pre-down &lt;commande&gt;
   post-down &lt;commande&gt;

Comme leur nom l'indique, '''pre-up''' détermine la commande lancée avant l'activation de l'interface, '''post-up''' détermine la commande lancée après l'activation de l'interface. '''pre-down''' et '''post-down''' feront de même pour la désactivation.

Vous pouvez aussi mettre des scripts dans les dossiers if-pre-up.d, if-post-up.d, if-pre-down.d, if-post-down.d, situés dans /etc/network. Ces scripts seront lancés quelque soit l'interface activée ou désactivée.

=== Ressources ===

 $ man interfaces
 $ man ifup

[[Catégorie:????]]</text>
      <sha1>64k4tk2zcrr6uhxipnfum7c19faoacw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>915</id>
      <parentid>914</parentid>
      <timestamp>2010-02-05T18:53:34Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <minor/>
      <comment>une ou deux précisions, choix de la catégorie &quot;réseau&quot;.</comment>
      <text xml:space="preserve" bytes="4601">{{Ébauche|le fichier '''/etc/network/interfaces'''}}
Le fichier interfaces, situé dans le dossier ''/etc/network'', est un fichier qui permet de paramétrer sa connection internet ( wifi,ethernet,vnc,vpn,bridge...).

Pour des solutions graphiques, allez voir du côté de [[wicd]] et [[networkmanager]].
Si vous optez pour une solution graphique assurez vous d'avoir seulement les lignes suivantes dans le fichier interfaces :
 auto lo
 iface lo inet loopback
Ainsi, seule la connexion à l'interface loopback sera configuré, laissant votre utilitaire graphique se charger du reste.

=== syntaxe ===
Le fichier interfaces est constitué comme ceci:

 &lt;méthode de lancement&gt; &lt;interface&gt;
 iface &lt;interface&gt; inet &lt;static/dhcp&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)address &lt;adresse ip&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)netmask &lt;masque de sous réseau&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)network &lt;ip du réseau&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)broadcast &lt;adresse de broadcast&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)gateway &lt;adresse du routeur&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)dns-nameservers &lt;serveur 1&gt; [serveur 2] [...]]&lt;/nowiki&gt;
&lt;p&gt;
'''&lt;méthode de lancement&gt;''' peut avoir les valeurs '''allow-hotplug''', qui laisse l'utilisateur démarrer soi-même sa connection avec ''ifup &lt;interface&gt;'', ou '''auto''' qui démarre la connection au démarrage.&lt;br/&gt;
'''&lt;interface&gt;''' peut ressembler, selon le pilote, à ethX, wlanX, rauX où X est un nombre.&lt;br/&gt;
'''&lt;static/dhcp&gt;''' choisit la méthode d'attribution d'ip. la méthode actuellement privilégiée est dhcp, car permet d'attribuer tous les paramètres tels que l'adresse ip, la passerelle par défaut, ...&lt;br/&gt;
'''&lt;adresse ip&gt;''' sous la forme 192.168.X.X&lt;br/&gt;
'''&lt;masque de sous réseau&gt;''' sous la forme 255.255.255.0 en général&lt;br/&gt;
'''&lt;network&gt;''' : 192.168.X.0&lt;br/&gt;
'''&lt;broadcast&gt;''': 192.168.X.255&lt;br/&gt;
'''&lt;gateway&gt;''': 192.168.X.1 en général.&lt;br/&gt;
&lt;/p&gt;
=== connaitre le nom de son interface ===

Pour connaitre le nom de prendra son interface, faites la commande:

 $ /sbin/ifconfig -a

Les interfaces sont listées dans la colonne de gauche. Les interfaces ethernet s'appellent généralement « ethX » et les interfaces WiFi s'appellent généralement « wlanX », X étant un chiffre (elles sont numérotées à partir de zéro) mais peuvent varier selon le pilote utilisé. 
Si votre interface n'apparaît pas, il manque probablement un pilote, allez sur http://kmuto.jp/debian/hcl/ pour savoir quel pilote vous devez utiliser.

Après avoir correctement paramétré votre fichier interfaces, vous pouvez activer une interface en tapant ( en '''root''' ):

 # ifup &lt;interface&gt;

et la désactiver en tapant :

 # ifdown &lt;interface&gt;

Le service '''networking''', active les interfaces notées « auto » dans le fichier interfaces au démarrage du système, et désactive toutes les interfaces à l'extinction. Vous pouvez le lancer manuellement :

 # /etc/init.d/networking (start|stop|restart)

Pour vérifier si la connexion est établie, tapez la commande:

 $ ping 216.239.59.104

et pour vérifier si les DNS sont actifs:
 
 $ ping google.fr

Si vous avez un problème de DNS, vous pouvez les enregistrer manuellement en éditant le fichier '''/etc/resolv.conf''' qui doit-être de la forme :

 nameserver &lt;adresse du DNS1&gt;
 nameserver &lt;adresse du DNS2&gt;

'''Note:'''Si le service resolvconf est activé, toute modification apportée au fichier précédent sera supprimée au prochain démarrage.

Vous pourrez ensuite naviguer sur le web avec votre navigateur favori.

Pour le wifi avec ce même fichier, allez voir du côté de [[interfaces et wpasupplicant]] en passant d'abord par la [[:Catégorie:Wifi|catégorie du wifi]].

[[Utilisateur:L0u!$|L0u!$]] 3 février 2010 à 19:04 (UTC)

=== Lancer des commandes lors de l'activation ou la désactivation d'une interface ===

Il est possible de rajouter des commandes qui seront lancées lorsque vous lancez '''ifup''' ou '''ifdown'''.

   pre-up &lt;commande&gt;
   post-up &lt;commande&gt;
   pre-down &lt;commande&gt;
   post-down &lt;commande&gt;

Comme leur nom l'indique, '''pre-up''' détermine la commande lancée avant l'activation de l'interface, '''post-up''' détermine la commande lancée après l'activation de l'interface. '''pre-down''' et '''post-down''' feront de même pour la désactivation.

Vous pouvez aussi mettre des scripts dans les dossiers if-pre-up.d, if-post-up.d, if-pre-down.d, if-post-down.d, situés dans /etc/network. Ces scripts seront lancés quelque soit l'interface activée ou désactivée.

=== Ressources ===

 $ man interfaces
 $ man ifup

[[Catégorie:Réseau]]</text>
      <sha1>1dqqwoscs4baoa1ufz78mih34yqy9ye</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>931</id>
      <parentid>915</parentid>
      <timestamp>2010-02-06T12:09:47Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <minor/>
      <comment>modification des &quot;connexion&quot;. en esperant n'en avoir pas oublié. désolé gérard :x</comment>
      <text xml:space="preserve" bytes="4598">{{Ébauche|le fichier '''/etc/network/interfaces'''}}
Le fichier interfaces, situé dans le dossier ''/etc/network'', est un fichier qui permet de paramétrer sa connexion internet ( wifi,ethernet,vnc,vpn,bridge...).

Pour des solutions graphiques, allez voir du côté de [[wicd]] et [[networkmanager]].
Si vous optez pour une solution graphique assurez vous d'avoir seulement les lignes suivantes dans le fichier interfaces :
 auto lo
 iface lo inet loopback
Ainsi, seule la connexion à l'interface loopback sera configuré, laissant votre utilitaire graphique se charger du reste.

=== syntaxe ===
Le fichier interfaces est constitué comme ceci:

 &lt;méthode de lancement&gt; &lt;interface&gt;
 iface &lt;interface&gt; inet &lt;static/dhcp&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)address &lt;adresse ip&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)netmask &lt;masque de sous réseau&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)network &lt;ip du réseau&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)broadcast &lt;adresse de broadcast&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)gateway &lt;adresse du routeur&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)dns-nameservers &lt;serveur 1&gt; [serveur 2] [...]]&lt;/nowiki&gt;
&lt;p&gt;
'''&lt;méthode de lancement&gt;''' peut avoir les valeurs '''allow-hotplug''', qui laisse l'utilisateur démarrer soi-même sa connexion avec ''ifup &lt;interface&gt;'', ou '''auto''' qui démarre la connexion au démarrage.&lt;br/&gt;
'''&lt;interface&gt;''' peut ressembler, selon le pilote, à ethX, wlanX, rauX où X est un nombre.&lt;br/&gt;
'''&lt;static/dhcp&gt;''' choisit la méthode d'attribution d'ip. la méthode actuellement privilégiée est dhcp, car permet d'attribuer tous les paramètres tels que l'adresse ip, la passerelle par défaut, ...&lt;br/&gt;
'''&lt;adresse ip&gt;''' sous la forme 192.168.X.X&lt;br/&gt;
'''&lt;masque de sous réseau&gt;''' sous la forme 255.255.255.0 en général&lt;br/&gt;
'''&lt;network&gt;''' : 192.168.X.0&lt;br/&gt;
'''&lt;broadcast&gt;''': 192.168.X.255&lt;br/&gt;
'''&lt;gateway&gt;''': 192.168.X.1 en général.&lt;br/&gt;
&lt;/p&gt;
=== connaitre le nom de son interface ===

Pour connaitre le nom de prendra son interface, faites la commande:

 $ /sbin/ifconfig -a

Les interfaces sont listées dans la colonne de gauche. Les interfaces ethernet s'appellent généralement « ethX » et les interfaces WiFi s'appellent généralement « wlanX », X étant un chiffre (elles sont numérotées à partir de zéro) mais peuvent varier selon le pilote utilisé. 
Si votre interface n'apparaît pas, il manque probablement un pilote, allez sur http://kmuto.jp/debian/hcl/ pour savoir quel pilote vous devez utiliser.

Après avoir correctement paramétré votre fichier interfaces, vous pouvez activer une interface en tapant ( en '''root''' ):

 # ifup &lt;interface&gt;

et la désactiver en tapant :

 # ifdown &lt;interface&gt;

Le service '''networking''', active les interfaces notées « auto » dans le fichier interfaces au démarrage du système, et désactive toutes les interfaces à l'extinction. Vous pouvez le lancer manuellement :

 # /etc/init.d/networking (start|stop|restart)

Pour vérifier si la connexion est établie, tapez la commande:

 $ ping 216.239.59.104

et pour vérifier si les DNS sont actifs:
 
 $ ping google.fr

Si vous avez un problème de DNS, vous pouvez les enregistrer manuellement en éditant le fichier '''/etc/resolv.conf''' qui doit-être de la forme :

 nameserver &lt;adresse du DNS1&gt;
 nameserver &lt;adresse du DNS2&gt;

'''Note:'''Si le service resolvconf est activé, toute modification apportée au fichier précédent sera supprimée au prochain démarrage.

Vous pourrez ensuite naviguer sur le web avec votre navigateur favori.

Pour le wifi avec ce même fichier, allez voir du côté de [[interfaces et wpasupplicant]] en passant d'abord par la [[:Catégorie:Wifi|catégorie du wifi]].

[[Utilisateur:L0u!$|L0u!$]] 3 février 2010 à 19:04 (UTC)

=== Lancer des commandes lors de l'activation ou la désactivation d'une interface ===

Il est possible de rajouter des commandes qui seront lancées lorsque vous lancez '''ifup''' ou '''ifdown'''.

   pre-up &lt;commande&gt;
   post-up &lt;commande&gt;
   pre-down &lt;commande&gt;
   post-down &lt;commande&gt;

Comme leur nom l'indique, '''pre-up''' détermine la commande lancée avant l'activation de l'interface, '''post-up''' détermine la commande lancée après l'activation de l'interface. '''pre-down''' et '''post-down''' feront de même pour la désactivation.

Vous pouvez aussi mettre des scripts dans les dossiers if-pre-up.d, if-post-up.d, if-pre-down.d, if-post-down.d, situés dans /etc/network. Ces scripts seront lancés quelque soit l'interface activée ou désactivée.

=== Ressources ===

 $ man interfaces
 $ man ifup

[[Catégorie:Réseau]]</text>
      <sha1>1jhbnkb84f5fs9g6a3hn0hanu685n4v</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1035</id>
      <parentid>931</parentid>
      <timestamp>2010-02-08T04:34:30Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="4606">{{Ébauche|le fichier '''/etc/network/interfaces'''}}
Le fichier interfaces, situé dans le dossier ''/etc/network'', est un fichier qui permet de paramétrer sa connexion internet ( wifi,ethernet,vnc,vpn,bridge...).

Pour des solutions graphiques, allez voir du côté de [[wicd]] et [[networkmanager]].
Si vous optez pour une solution graphique assurez vous d'avoir seulement les lignes suivantes dans le fichier interfaces :
 auto lo
 iface lo inet loopback
Ainsi, seule la connexion à l'interface loopback sera configuré, laissant votre utilitaire graphique se charger du reste.

=== syntaxe ===
Le fichier interfaces est constitué comme ceci:

 &lt;méthode de lancement&gt; &lt;interface&gt;
 iface &lt;interface&gt; inet &lt;static/dhcp&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)address &lt;adresse ip&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)netmask &lt;masque de sous réseau&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)network &lt;ip du réseau&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)broadcast &lt;adresse de broadcast&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)gateway &lt;adresse du routeur&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)dns-nameservers &lt;serveur 1&gt; [serveur 2] [...]]&lt;/nowiki&gt;
&lt;p&gt;
'''&lt;méthode de lancement&gt;''' peut avoir les valeurs '''allow-hotplug''', qui laisse l'utilisateur démarrer soi-même sa connexion avec ''ifup &lt;interface&gt;'', ou '''auto''' qui démarre la connexion au démarrage.&lt;br/&gt;
'''&lt;interface&gt;''' peut ressembler, selon le pilote, à ethX, wlanX, rauX où X est un nombre.&lt;br/&gt;
'''&lt;static/dhcp&gt;''' choisit la méthode d'attribution d'ip. la méthode actuellement privilégiée est dhcp, car permet d'attribuer tous les paramètres tels que l'adresse ip, la passerelle par défaut, ...&lt;br/&gt;
'''&lt;adresse ip&gt;''' sous la forme 192.168.X.X&lt;br/&gt;
'''&lt;masque de sous réseau&gt;''' sous la forme 255.255.255.0 en général&lt;br/&gt;
'''&lt;network&gt;''' : 192.168.X.0&lt;br/&gt;
'''&lt;broadcast&gt;''': 192.168.X.255&lt;br/&gt;
'''&lt;gateway&gt;''': 192.168.X.1 en général.&lt;br/&gt;
&lt;/p&gt;
=== connaitre le nom de son interface ===

Pour connaitre le nom de prendra son interface, faites la commande:

 $ /sbin/ifconfig -a

Les interfaces sont listées dans la colonne de gauche. Les interfaces ethernet s'appellent généralement « ethX » et les interfaces WiFi s'appellent généralement « wlanX », X étant un chiffre (elles sont numérotées à partir de zéro) mais peuvent varier selon le pilote utilisé. 
Si votre interface n'apparaît pas, il manque probablement un pilote, allez sur http://kmuto.jp/debian/hcl/ pour savoir quel pilote vous devez utiliser.

Après avoir correctement paramétré votre fichier interfaces, vous pouvez activer une interface en tapant ( en '''root''' ):

 # ifup &lt;interface&gt;

et la désactiver en tapant :

 # ifdown &lt;interface&gt;

Le service '''networking''', active les interfaces notées « auto » dans le fichier interfaces au démarrage du système, et désactive toutes les interfaces à l'extinction. Vous pouvez le lancer manuellement :

 # /etc/init.d/networking (start|stop|restart)

Pour vérifier si la connexion est établie, tapez la commande:

 $ ping 216.239.59.104

et pour vérifier si les DNS sont actifs:
 
 $ ping google.fr

Si vous avez un problème de DNS, vous pouvez les enregistrer manuellement en éditant le fichier '''/etc/resolv.conf''' qui doit-être de la forme :

 nameserver &lt;adresse du DNS1&gt;
 nameserver &lt;adresse du DNS2&gt;

'''Note:'''Si le service resolvconf est activé, toute modification apportée au fichier précédent sera supprimée au prochain démarrage.

Vous pourrez ensuite naviguer sur le web avec votre navigateur favori.

Pour le wifi avec ce même fichier, allez voir du côté de [[interfaces et wpasupplicant]] en passant d'abord par la [[:Catégorie:Wifi|catégorie du wifi]].

[[Utilisateur:L0u!$|L0u!$]] 3 février 2010 à 19:04 (UTC)

=== Lancer des commandes lors de l'activation ou la désactivation d'une interface ===

Il est possible de rajouter des commandes qui seront lancées lorsque vous lancez '''ifup''' ou '''ifdown'''.

   pre-up &lt;commande&gt;
   post-up &lt;commande&gt;
   pre-down &lt;commande&gt;
   post-down &lt;commande&gt;

Comme leur nom l'indique, '''pre-up''' détermine la commande lancée avant l'activation de l'interface, '''post-up''' détermine la commande lancée après l'activation de l'interface. '''pre-down''' et '''post-down''' feront de même pour la désactivation.

Vous pouvez aussi mettre des scripts dans les dossiers if-pre-up.d, if-post-up.d, if-pre-down.d, if-post-down.d, situés dans /etc/network. Ces scripts seront lancés quelque soit l'interface activée ou désactivée.

=== Ressources ===

 $ man interfaces
 $ man ifup

[[Catégorie:Réseau et Wifi]]</text>
      <sha1>9vguzs0jojfoflbt245zh6skv3gxcs1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1509</id>
      <parentid>1035</parentid>
      <timestamp>2010-05-17T11:19:05Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="4640">{{Ébauche|le fichier '''/etc/network/interfaces'''}}
Le fichier interfaces, situé dans le dossier ''/etc/network'', est un fichier qui permet de paramétrer sa connexion internet ( wifi,ethernet,vnc,vpn,bridge...).

Pour des solutions graphiques, allez voir du côté de [[wicd]] et [[networkmanager]].
Si vous optez pour une solution graphique assurez vous d'avoir seulement les lignes suivantes dans le fichier interfaces :
 auto lo
 iface lo inet loopback
Ainsi, seule la connexion à l'interface loopback sera configuré, laissant votre utilitaire graphique se charger du reste.

=== syntaxe ===
Le fichier interfaces est constitué comme ceci:

 &lt;méthode de lancement&gt; &lt;interface&gt;
 iface &lt;interface&gt; inet &lt;static/dhcp&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)address &lt;adresse ip&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)netmask &lt;masque de sous réseau&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)network &lt;ip du réseau&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)broadcast &lt;adresse de broadcast&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)gateway &lt;adresse du routeur&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)dns-nameservers &lt;serveur 1&gt; [serveur 2] [...]]&lt;/nowiki&gt;
&lt;p&gt;
'''&lt;méthode de lancement&gt;''' peut avoir les valeurs '''allow-hotplug''', qui laisse l'utilisateur démarrer soi-même sa connexion avec ''ifup &lt;interface&gt;'', ou '''auto''' qui démarre la connexion au démarrage.&lt;br/&gt;
'''&lt;interface&gt;''' peut ressembler, selon le pilote, à ethX, wlanX, rauX où X est un nombre.&lt;br/&gt;
'''&lt;static/dhcp&gt;''' choisit la méthode d'attribution d'ip. la méthode actuellement privilégiée est dhcp, car permet d'attribuer tous les paramètres tels que l'adresse ip, la passerelle par défaut, ...&lt;br/&gt;
'''&lt;adresse ip&gt;''' sous la forme 192.168.X.X&lt;br/&gt;
'''&lt;masque de sous réseau&gt;''' sous la forme 255.255.255.0 en général&lt;br/&gt;
'''&lt;network&gt;''' : 192.168.X.0&lt;br/&gt;
'''&lt;broadcast&gt;''': 192.168.X.255&lt;br/&gt;
'''&lt;gateway&gt;''': 192.168.X.1 en général.&lt;br/&gt;
&lt;/p&gt;
=== connaitre le nom de son interface ===

Pour connaitre le nom de prendra son interface, faites la commande:

 $ /sbin/ifconfig -a

Les interfaces sont listées dans la colonne de gauche. Les interfaces ethernet s'appellent généralement « ethX » et les interfaces WiFi s'appellent généralement « wlanX », X étant un chiffre (elles sont numérotées à partir de zéro) mais peuvent varier selon le pilote utilisé. 
Si votre interface n'apparaît pas, il manque probablement un pilote, allez sur http://kmuto.jp/debian/hcl/ pour savoir quel pilote vous devez utiliser.

Après avoir correctement paramétré votre fichier interfaces, vous pouvez activer une interface en tapant ( en '''root''' ):

 # ifup &lt;interface&gt;

et la désactiver en tapant :

 # ifdown &lt;interface&gt;

Le service '''networking''', active les interfaces notées « auto » dans le fichier interfaces au démarrage du système, et désactive toutes les interfaces à l'extinction. Vous pouvez le lancer manuellement :

 # /etc/init.d/networking (start|stop|restart)

Pour vérifier si la connexion est établie, tapez la commande:

 $ ping 216.239.59.104

et pour vérifier si les DNS sont actifs:
 
 $ ping google.fr

Si vous avez un problème de DNS, vous pouvez les enregistrer manuellement en éditant le fichier '''/etc/resolv.conf''' qui doit-être de la forme :

 nameserver &lt;adresse du DNS1&gt;
 nameserver &lt;adresse du DNS2&gt;

'''Note:'''Si le service resolvconf est activé, toute modification apportée au fichier précédent sera supprimée au prochain démarrage.

Vous pourrez ensuite naviguer sur le web avec votre navigateur favori.

Pour le wifi avec ce même fichier, allez voir du côté de [[interfaces et wpasupplicant]] en passant d'abord par la [[:Catégorie:Wifi|catégorie du wifi]].

[[Utilisateur:L0u!$|L0u!$]] 3 février 2010 à 19:04 (UTC)

=== Lancer des commandes lors de l'activation ou la désactivation d'une interface ===

Il est possible de rajouter des commandes qui seront lancées lorsque vous lancez '''ifup''' ou '''ifdown'''.

   pre-up &lt;commande&gt;
   post-up &lt;commande&gt;
   pre-down &lt;commande&gt;
   post-down &lt;commande&gt;

Comme leur nom l'indique, '''pre-up''' détermine la commande lancée avant l'activation de l'interface, '''post-up''' détermine la commande lancée après l'activation de l'interface. '''pre-down''' et '''post-down''' feront de même pour la désactivation.

Vous pouvez aussi mettre des scripts dans les dossiers if-pre-up.d, if-post-up.d, if-pre-down.d, if-post-down.d, situés dans /etc/network. Ces scripts seront lancés quelque soit l'interface activée ou désactivée.

=== Ressources ===

 $ man interfaces
 $ man ifup

[[Category:Réseau et Wifi]]
[[Category:Réseau Généralités]]</text>
      <sha1>mwm8lo7obu8v6fmxca0z79j2da8tgp2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1517</id>
      <parentid>1509</parentid>
      <timestamp>2010-05-17T11:28:40Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* connaitre le nom de son interface */</comment>
      <text xml:space="preserve" bytes="4651">{{Ébauche|le fichier '''/etc/network/interfaces'''}}
Le fichier interfaces, situé dans le dossier ''/etc/network'', est un fichier qui permet de paramétrer sa connexion internet ( wifi,ethernet,vnc,vpn,bridge...).

Pour des solutions graphiques, allez voir du côté de [[wicd]] et [[networkmanager]].
Si vous optez pour une solution graphique assurez vous d'avoir seulement les lignes suivantes dans le fichier interfaces :
 auto lo
 iface lo inet loopback
Ainsi, seule la connexion à l'interface loopback sera configuré, laissant votre utilitaire graphique se charger du reste.

=== syntaxe ===
Le fichier interfaces est constitué comme ceci:

 &lt;méthode de lancement&gt; &lt;interface&gt;
 iface &lt;interface&gt; inet &lt;static/dhcp&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)address &lt;adresse ip&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)netmask &lt;masque de sous réseau&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)network &lt;ip du réseau&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)broadcast &lt;adresse de broadcast&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)gateway &lt;adresse du routeur&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)dns-nameservers &lt;serveur 1&gt; [serveur 2] [...]]&lt;/nowiki&gt;
&lt;p&gt;
'''&lt;méthode de lancement&gt;''' peut avoir les valeurs '''allow-hotplug''', qui laisse l'utilisateur démarrer soi-même sa connexion avec ''ifup &lt;interface&gt;'', ou '''auto''' qui démarre la connexion au démarrage.&lt;br/&gt;
'''&lt;interface&gt;''' peut ressembler, selon le pilote, à ethX, wlanX, rauX où X est un nombre.&lt;br/&gt;
'''&lt;static/dhcp&gt;''' choisit la méthode d'attribution d'ip. la méthode actuellement privilégiée est dhcp, car permet d'attribuer tous les paramètres tels que l'adresse ip, la passerelle par défaut, ...&lt;br/&gt;
'''&lt;adresse ip&gt;''' sous la forme 192.168.X.X&lt;br/&gt;
'''&lt;masque de sous réseau&gt;''' sous la forme 255.255.255.0 en général&lt;br/&gt;
'''&lt;network&gt;''' : 192.168.X.0&lt;br/&gt;
'''&lt;broadcast&gt;''': 192.168.X.255&lt;br/&gt;
'''&lt;gateway&gt;''': 192.168.X.1 en général.&lt;br/&gt;
&lt;/p&gt;
=== connaitre le nom de son interface ===

Pour connaitre le nom que prendra son interface, faites la commande:

 $ /sbin/ifconfig -a

Les interfaces sont listées dans la colonne de gauche. Les interfaces ethernet s'appellent généralement « ethX » et les interfaces WiFi s'appellent généralement « wlanX », X étant un chiffre (elles sont numérotées à partir de zéro) mais peuvent varier selon le pilote utilisé. 
Si votre interface n'apparaît pas, il manque probablement un pilote, allez sur http://kmuto.jp/debian/hcl/ pour savoir quel pilote vous devez utiliser.

Après avoir correctement paramètré votre fichier interfaces, vous pouvez activer une interface en tapant ( en '''root''' ):

 # ifup &lt;interface&gt;

et la désactiver en tapant :

 # ifdown &lt;interface&gt;

Le service '''networking''', active les interfaces notées « auto » dans le fichier interfaces au démarrage du système, et désactive toutes les interfaces à l'extinction. Vous pouvez le lancer manuellement :

 # /etc/init.d/networking (start|stop|restart)

Pour vérifier si la connexion est établie, tapez la commande:

 $ ping 216.239.59.104 -c 4

et pour vérifier si les DNS sont actifs:
 
 $ ping google.fr -c 4

Si vous avez un problème de DNS, vous pouvez les enregistrer manuellement en éditant le fichier '''/etc/resolv.conf''' qui doit-être de la forme :

 nameserver &lt;adresse du DNS1&gt;
 nameserver &lt;adresse du DNS2&gt;

'''Note:'''Si le service resolvconf est activé, toute modification apportée au fichier précédent sera supprimée au prochain démarrage.

Vous pourrez ensuite naviguer sur le web avec votre navigateur favori.

Pour le wifi avec ce même fichier, allez voir du côté de [[interfaces et wpasupplicant]] en passant d'abord par la [[:Catégorie:Wifi|catégorie du wifi]].

[[Utilisateur:L0u!$|L0u!$]] 3 février 2010 à 19:04 (UTC)

=== Lancer des commandes lors de l'activation ou la désactivation d'une interface ===

Il est possible de rajouter des commandes qui seront lancées lorsque vous lancez '''ifup''' ou '''ifdown'''.

   pre-up &lt;commande&gt;
   post-up &lt;commande&gt;
   pre-down &lt;commande&gt;
   post-down &lt;commande&gt;

Comme leur nom l'indique, '''pre-up''' détermine la commande lancée avant l'activation de l'interface, '''post-up''' détermine la commande lancée après l'activation de l'interface. '''pre-down''' et '''post-down''' feront de même pour la désactivation.

Vous pouvez aussi mettre des scripts dans les dossiers if-pre-up.d, if-post-up.d, if-pre-down.d, if-post-down.d, situés dans /etc/network. Ces scripts seront lancés quelque soit l'interface activée ou désactivée.

=== Ressources ===

 $ man interfaces
 $ man ifup

[[Category:Réseau et Wifi]]
[[Category:Réseau Généralités]]</text>
      <sha1>39k5jh08fvd63nmjttyy3wcsqu66pir</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4079</id>
      <parentid>1517</parentid>
      <timestamp>2012-04-26T08:38:14Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="4622">{{Ébauche|le fichier '''/etc/network/interfaces'''}}
Le fichier interfaces, situé dans le dossier ''/etc/network'', est un fichier qui permet de paramétrer sa connexion internet ( [[Protocole::Wifi]],ethernet,vnc,vpn,bridge...).

Pour des solutions graphiques, allez voir du côté de [[wicd]] et [[networkmanager]].
Si vous optez pour une solution graphique assurez vous d'avoir seulement les lignes suivantes dans le fichier interfaces :
 auto lo
 iface lo inet loopback
Ainsi, seule la connexion à l'interface loopback sera configuré, laissant votre utilitaire graphique se charger du reste.

=== syntaxe ===
Le fichier interfaces est constitué comme ceci:

 &lt;méthode de lancement&gt; &lt;interface&gt;
 iface &lt;interface&gt; inet &lt;static/dhcp&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)address &lt;adresse ip&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)netmask &lt;masque de sous réseau&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)network &lt;ip du réseau&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)broadcast &lt;adresse de broadcast&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)gateway &lt;adresse du routeur&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)dns-nameservers &lt;serveur 1&gt; [serveur 2] [...]]&lt;/nowiki&gt;
&lt;p&gt;
'''&lt;méthode de lancement&gt;''' peut avoir les valeurs '''allow-hotplug''', qui laisse l'utilisateur démarrer soi-même sa connexion avec ''ifup &lt;interface&gt;'', ou '''auto''' qui démarre la connexion au démarrage.&lt;br/&gt;
'''&lt;interface&gt;''' peut ressembler, selon le pilote, à ethX, wlanX, rauX où X est un nombre.&lt;br/&gt;
'''&lt;static/dhcp&gt;''' choisit la méthode d'attribution d'ip. la méthode actuellement privilégiée est dhcp, car permet d'attribuer tous les paramètres tels que l'adresse ip, la passerelle par défaut, ...&lt;br/&gt;
'''&lt;adresse ip&gt;''' sous la forme 192.168.X.X&lt;br/&gt;
'''&lt;masque de sous réseau&gt;''' sous la forme 255.255.255.0 en général&lt;br/&gt;
'''&lt;network&gt;''' : 192.168.X.0&lt;br/&gt;
'''&lt;broadcast&gt;''': 192.168.X.255&lt;br/&gt;
'''&lt;gateway&gt;''': 192.168.X.1 en général.&lt;br/&gt;
&lt;/p&gt;
=== connaitre le nom de son interface ===

Pour connaitre le nom que prendra son interface, faites la commande:

 $ /sbin/ifconfig -a

Les interfaces sont listées dans la colonne de gauche. Les interfaces ethernet s'appellent généralement « ethX » et les interfaces WiFi s'appellent généralement « wlanX », X étant un chiffre (elles sont numérotées à partir de zéro) mais peuvent varier selon le pilote utilisé. 
Si votre interface n'apparaît pas, il manque probablement un pilote, allez sur http://kmuto.jp/debian/hcl/ pour savoir quel pilote vous devez utiliser.

Après avoir correctement paramètré votre fichier interfaces, vous pouvez activer une interface en tapant ( en '''root''' ):

 # ifup &lt;interface&gt;

et la désactiver en tapant :

 # ifdown &lt;interface&gt;

Le service '''networking''', active les interfaces notées « auto » dans le fichier interfaces au démarrage du système, et désactive toutes les interfaces à l'extinction. Vous pouvez le lancer manuellement :

 # /etc/init.d/networking (start|stop|restart)

Pour vérifier si la connexion est établie, tapez la commande:

 $ ping 216.239.59.104 -c 4

et pour vérifier si les DNS sont actifs:
 
 $ ping google.fr -c 4

Si vous avez un problème de DNS, vous pouvez les enregistrer manuellement en éditant le fichier '''/etc/resolv.conf''' qui doit-être de la forme :

 nameserver &lt;adresse du DNS1&gt;
 nameserver &lt;adresse du DNS2&gt;

'''Note:'''Si le service resolvconf est activé, toute modification apportée au fichier précédent sera supprimée au prochain démarrage.

Vous pourrez ensuite naviguer sur le web avec votre navigateur favori.

Pour le wifi avec ce même fichier, allez voir du côté de [[interfaces et wpasupplicant]] en passant d'abord par la [[:Catégorie:Wifi|catégorie du wifi]].

[[Utilisateur:L0u!$|L0u!$]] 3 février 2010 à 19:04 (UTC)

=== Lancer des commandes lors de l'activation ou la désactivation d'une interface ===

Il est possible de rajouter des commandes qui seront lancées lorsque vous lancez '''ifup''' ou '''ifdown'''.

   pre-up &lt;commande&gt;
   post-up &lt;commande&gt;
   pre-down &lt;commande&gt;
   post-down &lt;commande&gt;

Comme leur nom l'indique, '''pre-up''' détermine la commande lancée avant l'activation de l'interface, '''post-up''' détermine la commande lancée après l'activation de l'interface. '''pre-down''' et '''post-down''' feront de même pour la désactivation.

Vous pouvez aussi mettre des scripts dans les dossiers if-pre-up.d, if-post-up.d, if-pre-down.d, if-post-down.d, situés dans /etc/network. Ces scripts seront lancés quelque soit l'interface activée ou désactivée.

=== Ressources ===

 $ man interfaces
 $ man ifup

[[Category:Réseau]]</text>
      <sha1>5arv0qjvsqeyco5eewbs5ikskudczli</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5725</id>
      <parentid>4079</parentid>
      <timestamp>2014-08-20T04:08:03Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="4630">{{Ébauche|le fichier '''/etc/network/interfaces'''}}
Le fichier interfaces, situé dans le répertoire ''/etc/network'', est un fichier qui permet de paramétrer sa connexion internet ( [[Protocole::Wifi]],ethernet,vnc,vpn,bridge...).

Pour des solutions graphiques, allez voir du côté de [[wicd]] et [[networkmanager]].
Si vous optez pour une solution graphique assurez vous d'avoir seulement les lignes suivantes dans le fichier interfaces :
 auto lo
 iface lo inet loopback
Ainsi, seule la connexion à l'interface loopback sera configuré, laissant votre utilitaire graphique se charger du reste.

=== syntaxe ===
Le fichier interfaces est constitué comme ceci:

 &lt;méthode de lancement&gt; &lt;interface&gt;
 iface &lt;interface&gt; inet &lt;static/dhcp&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)address &lt;adresse ip&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)netmask &lt;masque de sous réseau&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)network &lt;ip du réseau&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)broadcast &lt;adresse de broadcast&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)gateway &lt;adresse du routeur&gt;]&lt;/nowiki&gt;
  &lt;nowiki&gt;[(si &lt;static&gt;:)dns-nameservers &lt;serveur 1&gt; [serveur 2] [...]]&lt;/nowiki&gt;
&lt;p&gt;
'''&lt;méthode de lancement&gt;''' peut avoir les valeurs '''allow-hotplug''', qui laisse l'utilisateur démarrer soi-même sa connexion avec ''ifup &lt;interface&gt;'', ou '''auto''' qui démarre la connexion au démarrage.&lt;br/&gt;
'''&lt;interface&gt;''' peut ressembler, selon le pilote, à ethX, wlanX, rauX où X est un nombre.&lt;br/&gt;
'''&lt;static/dhcp&gt;''' choisit la méthode d'attribution d'ip. la méthode actuellement privilégiée est dhcp, car permet d'attribuer tous les paramètres tels que l'adresse ip, la passerelle par défaut, ...&lt;br/&gt;
'''&lt;adresse ip&gt;''' sous la forme 192.168.X.X&lt;br/&gt;
'''&lt;masque de sous réseau&gt;''' sous la forme 255.255.255.0 en général&lt;br/&gt;
'''&lt;network&gt;''' : 192.168.X.0&lt;br/&gt;
'''&lt;broadcast&gt;''': 192.168.X.255&lt;br/&gt;
'''&lt;gateway&gt;''': 192.168.X.1 en général.&lt;br/&gt;
&lt;/p&gt;
=== connaitre le nom de son interface ===

Pour connaitre le nom que prendra son interface, faites la commande:

 $ /sbin/ifconfig -a

Les interfaces sont listées dans la colonne de gauche. Les interfaces ethernet s'appellent généralement « ethX » et les interfaces WiFi s'appellent généralement « wlanX », X étant un chiffre (elles sont numérotées à partir de zéro) mais peuvent varier selon le pilote utilisé. 
Si votre interface n'apparaît pas, il manque probablement un pilote, allez sur http://kmuto.jp/debian/hcl/ pour savoir quel pilote vous devez utiliser.

Après avoir correctement paramètré votre fichier interfaces, vous pouvez activer une interface en tapant ( en '''root''' ):

 # ifup &lt;interface&gt;

et la désactiver en tapant :

 # ifdown &lt;interface&gt;

Le service '''networking''', active les interfaces notées « auto » dans le fichier interfaces au démarrage du système, et désactive toutes les interfaces à l'extinction. Vous pouvez le lancer manuellement :

 # /etc/init.d/networking (start|stop|restart)

Pour vérifier si la connexion est établie, tapez la commande:

 $ ping 216.239.59.104 -c 4

et pour vérifier si les DNS sont actifs:
 
 $ ping google.fr -c 4

Si vous avez un problème de DNS, vous pouvez les enregistrer manuellement en éditant le fichier '''/etc/resolv.conf''' qui doit-être de la forme :

 nameserver &lt;adresse du DNS1&gt;
 nameserver &lt;adresse du DNS2&gt;

'''Note:'''Si le service resolvconf est activé, toute modification apportée au fichier précédent sera supprimée au prochain démarrage.

Vous pourrez ensuite naviguer sur le web avec votre navigateur favori.

Pour le wifi avec ce même fichier, allez voir du côté de [[interfaces et wpasupplicant]] en passant d'abord par la [[:Catégorie:Wifi|catégorie du wifi]].

[[Utilisateur:L0u!$|L0u!$]] 3 février 2010 à 19:04 (UTC)

=== Lancer des commandes lors de l'activation ou la désactivation d'une interface ===

Il est possible de rajouter des commandes qui seront lancées lorsque vous lancez '''ifup''' ou '''ifdown'''.

   pre-up &lt;commande&gt;
   post-up &lt;commande&gt;
   pre-down &lt;commande&gt;
   post-down &lt;commande&gt;

Comme leur nom l'indique, '''pre-up''' détermine la commande lancée avant l'activation de l'interface, '''post-up''' détermine la commande lancée après l'activation de l'interface. '''pre-down''' et '''post-down''' feront de même pour la désactivation.

Vous pouvez aussi mettre des scripts dans les répertoires if-pre-up.d, if-post-up.d, if-pre-down.d, if-post-down.d, situés dans /etc/network. Ces scripts seront lancés quelque soit l'interface activée ou désactivée.

=== Ressources ===

 $ man interfaces
 $ man ifup

[[Category:Réseau]]</text>
      <sha1>6od23h3qs0mggiaygfuvawr6nywjkk1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Le partitionnement</title>
    <ns>0</ns>
    <id>620</id>
    <revision>
      <id>2568</id>
      <timestamp>2010-12-27T07:10:04Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « &lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le par... »</comment>
      <text xml:space="preserve" bytes="10642">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===

Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.svg]]


Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.

Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à le carte mère). Les plus courantes actuellement sont:

- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg]]

- Serial ATA ou SATA (Serial Advanced Technology Attachment)[[Fichier:SATA Data Cable.jpg]]

- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg]]


=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur destinée à accueillir un système de fichiers.

Les informations sur les partitions sont conservées sur le disque lui-même dans des zones qu'on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du disque ou secteur d'amorçage (Master boot record ou MBR) qui contient également le programme d'amorçage.


Voici un exemple de partitionnement:
[[Fichier:Gparted.jpeg]]

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux


Avec l'utilitaire '''cfdisk'''
[[Fichier:Cfdisk.jpeg]]

Une partition primaire : sda1
Une partition étendue : sda2 qui contient elle même 5 lecteurs logiques (sda5 à sda9).

A savoir: Seules les partitions primaires peuvent contenir la partition d'amorçage du système d'exploitation Windows. Ce n'est pas le cas pour Debian dont le système d'ammorçage peut très bien s'installer sur une partition étendue.

=== Généralités ===

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, '''une simple partition / (plus celle d'échange) est sans doute la solution la plus simple'''.

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de le distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo peut être une bonne idée.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs, il est généralement intéressant d'avoir une grande partition distincte pour /home.

'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.'''

N'espérer pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

 /		La racine (partition root), qui contient tous les autres répertoires
 
 Répertoire	Contenu
 
 /bin		Binaires (exécutables) des commandes essentielles
 /boot		Fichiers statiques pour le programme d'amorçage
 /dev		Fichiers des pilotes de périphériques
 /etc		Configuration système propre à la machine
 /home		Répertoires personnels des utilisateurs
 /lib		Bibliothèques partagées et modules noyaux essentiels
 /media		Points de montage pour les supports amovibles
 /mnt		Point de montage pour les montages temporaires
 /proc		Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
 /root		Répertoire personnel de l'utilisateur root
 /sbin		Exécutables système essentiels
 /sys		Répertoire virtuel pour les informations système (noyaux 2.6)
 /tmp		Fichiers temporaires
 /usr		Hiérarchie secondaire
 /var		Données variables
 /srv		Données pour les services fournis par le système
 /opt		Répertoire pour d'autres logiciels&lt;/code&gt;

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter '''2 à 3 Go'''
- Pour une installation minimale vous pouvez passer avec '''30 à 40 Mo'''
- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' suffiront pour une utilisation normale.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /temp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ cat /proc/meminfo | grep MemTotal

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances.

Avec une machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2.

== Primaire et étendue ==

== Le système de fichier ==


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)</text>
      <sha1>2laxj5bpndc1rvounvbws5o2m83fugl</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2569</id>
      <parentid>2568</parentid>
      <timestamp>2010-12-27T07:16:47Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="10670">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===

Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.svg]]


Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.

Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à le carte mère). Les plus courantes actuellement sont:

- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg]]

- Serial ATA ou SATA (Serial Advanced Technology Attachment)[[Fichier:SATA Data Cable.jpg]]

- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg]]


=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur destinée à accueillir un système de fichiers.

Les informations sur les partitions sont conservées sur le disque lui-même dans des zones qu'on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du disque ou secteur d'amorçage (Master boot record ou MBR) qui contient également le programme d'amorçage.


Voici un exemple de partitionnement:
[[Fichier:Gparted.jpeg]]

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux


Avec l'utilitaire '''cfdisk'''
[[Fichier:Cfdisk.jpeg]]

Une partition primaire : sda1
Une partition étendue : sda2 qui contient elle même 5 lecteurs logiques (sda5 à sda9).

A savoir: Seules les partitions primaires peuvent contenir la partition d'amorçage du système d'exploitation Windows. Ce n'est pas le cas pour Debian dont le système d'ammorçage peut très bien s'installer sur une partition étendue.

=== Généralités ===

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, '''une simple partition / (plus celle d'échange) est sans doute la solution la plus simple'''.

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de le distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo peut être une bonne idée.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs, il est généralement intéressant d'avoir une grande partition distincte pour /home.

'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.'''

N'espérer pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

 /		La racine (partition root), qui contient tous les autres répertoires
 
 Répertoire	Contenu
 
 /bin		Binaires (exécutables) des commandes essentielles
 /boot		Fichiers statiques pour le programme d'amorçage
 /dev		Fichiers des pilotes de périphériques
 /etc		Configuration système propre à la machine
 /home		Répertoires personnels des utilisateurs
 /lib		Bibliothèques partagées et modules noyaux essentiels
 /media		Points de montage pour les supports amovibles
 /mnt		Point de montage pour les montages temporaires
 /proc		Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
 /root		Répertoire personnel de l'utilisateur root
 /sbin		Exécutables système essentiels
 /sys		Répertoire virtuel pour les informations système (noyaux 2.6)
 /tmp		Fichiers temporaires
 /usr		Hiérarchie secondaire
 /var		Données variables
 /srv		Données pour les services fournis par le système
 /opt		Répertoire pour d'autres logiciels&lt;/code&gt;

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter '''2 à 3 Go'''
- Pour une installation minimale vous pouvez passer avec '''30 à 40 Mo'''
- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' suffiront pour une utilisation normale.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /temp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ cat /proc/meminfo | grep MemTotal

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances.

Avec une machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2.

== Primaire et étendue ==

== Le système de fichier ==


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>rs7ksxafmn7rpccgr4e1zirh48uh8d3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2570</id>
      <parentid>2569</parentid>
      <timestamp>2010-12-27T07:19:15Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Primaire et étendue */</comment>
      <text xml:space="preserve" bytes="11166">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===

Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.svg]]


Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.

Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à le carte mère). Les plus courantes actuellement sont:

- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg]]

- Serial ATA ou SATA (Serial Advanced Technology Attachment)[[Fichier:SATA Data Cable.jpg]]

- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg]]


=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur destinée à accueillir un système de fichiers.

Les informations sur les partitions sont conservées sur le disque lui-même dans des zones qu'on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du disque ou secteur d'amorçage (Master boot record ou MBR) qui contient également le programme d'amorçage.


Voici un exemple de partitionnement:
[[Fichier:Gparted.jpeg]]

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux


Avec l'utilitaire '''cfdisk'''
[[Fichier:Cfdisk.jpeg]]

Une partition primaire : sda1
Une partition étendue : sda2 qui contient elle même 5 lecteurs logiques (sda5 à sda9).

A savoir: Seules les partitions primaires peuvent contenir la partition d'amorçage du système d'exploitation Windows. Ce n'est pas le cas pour Debian dont le système d'ammorçage peut très bien s'installer sur une partition étendue.

=== Généralités ===

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, '''une simple partition / (plus celle d'échange) est sans doute la solution la plus simple'''.

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de le distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo peut être une bonne idée.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs, il est généralement intéressant d'avoir une grande partition distincte pour /home.

'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.'''

N'espérer pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

 /		La racine (partition root), qui contient tous les autres répertoires
 
 Répertoire	Contenu
 
 /bin		Binaires (exécutables) des commandes essentielles
 /boot		Fichiers statiques pour le programme d'amorçage
 /dev		Fichiers des pilotes de périphériques
 /etc		Configuration système propre à la machine
 /home		Répertoires personnels des utilisateurs
 /lib		Bibliothèques partagées et modules noyaux essentiels
 /media		Points de montage pour les supports amovibles
 /mnt		Point de montage pour les montages temporaires
 /proc		Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
 /root		Répertoire personnel de l'utilisateur root
 /sbin		Exécutables système essentiels
 /sys		Répertoire virtuel pour les informations système (noyaux 2.6)
 /tmp		Fichiers temporaires
 /usr		Hiérarchie secondaire
 /var		Données variables
 /srv		Données pour les services fournis par le système
 /opt		Répertoire pour d'autres logiciels&lt;/code&gt;

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter '''2 à 3 Go'''
- Pour une installation minimale vous pouvez passer avec '''30 à 40 Mo'''
- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' suffiront pour une utilisation normale.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /temp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ cat /proc/meminfo | grep MemTotal

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances.

Avec une machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2.

== Primaire et étendue ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions primaires et une partition étendue qui elle même peut contenir 11 partitions logiques (ce qui fait quand même 14 partitions... c'est le maximum).

La limitation vient du format de la table de partition dans le MBR, le premier secteur du disque. Cette limitation saute avec le nouveau format GPT (GUID Partition Table) utilisé notamment sur les machines avec firmware EFI (Extensible Firmware Interface) en remplacement du BIOS.

== Le système de fichier ==


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>hbtp7ahj1sqyqpyetpaiu19sb6waocz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2571</id>
      <parentid>2570</parentid>
      <timestamp>2010-12-27T08:29:19Z</timestamp>
      <contributor>
        <username>Fran.b</username>
        <id>13</id>
      </contributor>
      <comment>/* Généralités */</comment>
      <text xml:space="preserve" bytes="11605">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===

Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.svg]]


Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.

Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à le carte mère). Les plus courantes actuellement sont:

- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg]]

- Serial ATA ou SATA (Serial Advanced Technology Attachment)[[Fichier:SATA Data Cable.jpg]]

- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg]]


=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur destinée à accueillir un système de fichiers.

Les informations sur les partitions sont conservées sur le disque lui-même dans des zones qu'on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du disque ou secteur d'amorçage (Master boot record ou MBR) qui contient également le programme d'amorçage.


Voici un exemple de partitionnement:
[[Fichier:Gparted.jpeg]]

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux


Avec l'utilitaire '''cfdisk'''
[[Fichier:Cfdisk.jpeg]]

Une partition primaire : sda1
Une partition étendue : sda2 qui contient elle même 5 lecteurs logiques (sda5 à sda9).

A savoir: Seules les partitions primaires peuvent contenir la partition d'amorçage du système d'exploitation Windows. Ce n'est pas le cas pour Debian dont le système d'ammorçage peut très bien s'installer sur une partition étendue.

=== Généralités ===

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, '''une simple partition / (plus celle d'échange) est sans doute la solution la plus simple'''. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système. 

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de le distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installations y déplient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.

'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.'''

N'espérer pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

 /		La racine (partition root), qui contient tous les autres répertoires
 
 Répertoire	Contenu
 
 /bin		Binaires (exécutables) des commandes essentielles
 /boot		Fichiers statiques pour le programme d'amorçage
 /dev		Fichiers des pilotes de périphériques
 /etc		Configuration système propre à la machine
 /home		Répertoires personnels des utilisateurs
 /lib		Bibliothèques partagées et modules noyaux essentiels
 /media		Points de montage pour les supports amovibles
 /mnt		Point de montage pour les montages temporaires
 /proc		Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
 /root		Répertoire personnel de l'utilisateur root
 /sbin		Exécutables système essentiels
 /sys		Répertoire virtuel pour les informations système (noyaux 2.6)
 /tmp		Fichiers temporaires
 /usr		Hiérarchie secondaire
 /var		Données variables
 /srv		Données pour les services fournis par le système
 /opt		Répertoire pour d'autres logiciels&lt;/code&gt;

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter '''2 à 3 Go'''
- Pour une installation minimale vous pouvez passer avec '''30 à 40 Mo'''
- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' suffiront pour une utilisation normale.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /temp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ cat /proc/meminfo | grep MemTotal

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances.

Avec une machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2.

== Primaire et étendue ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions primaires et une partition étendue qui elle même peut contenir 11 partitions logiques (ce qui fait quand même 14 partitions... c'est le maximum).

La limitation vient du format de la table de partition dans le MBR, le premier secteur du disque. Cette limitation saute avec le nouveau format GPT (GUID Partition Table) utilisé notamment sur les machines avec firmware EFI (Extensible Firmware Interface) en remplacement du BIOS.

== Le système de fichier ==


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>8e1u7qah34xjf2u7omh0qgkel9bbaiy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2572</id>
      <parentid>2571</parentid>
      <timestamp>2010-12-27T08:37:11Z</timestamp>
      <contributor>
        <username>Fran.b</username>
        <id>13</id>
      </contributor>
      <comment>/* La partition var */</comment>
      <text xml:space="preserve" bytes="12085">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===

Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.svg]]


Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.

Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à le carte mère). Les plus courantes actuellement sont:

- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg]]

- Serial ATA ou SATA (Serial Advanced Technology Attachment)[[Fichier:SATA Data Cable.jpg]]

- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg]]


=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur destinée à accueillir un système de fichiers.

Les informations sur les partitions sont conservées sur le disque lui-même dans des zones qu'on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du disque ou secteur d'amorçage (Master boot record ou MBR) qui contient également le programme d'amorçage.


Voici un exemple de partitionnement:
[[Fichier:Gparted.jpeg]]

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux


Avec l'utilitaire '''cfdisk'''
[[Fichier:Cfdisk.jpeg]]

Une partition primaire : sda1
Une partition étendue : sda2 qui contient elle même 5 lecteurs logiques (sda5 à sda9).

A savoir: Seules les partitions primaires peuvent contenir la partition d'amorçage du système d'exploitation Windows. Ce n'est pas le cas pour Debian dont le système d'ammorçage peut très bien s'installer sur une partition étendue.

=== Généralités ===

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, '''une simple partition / (plus celle d'échange) est sans doute la solution la plus simple'''. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système. 

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de le distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installations y déplient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.

'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.'''

N'espérer pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

 /		La racine (partition root), qui contient tous les autres répertoires
 
 Répertoire	Contenu
 
 /bin		Binaires (exécutables) des commandes essentielles
 /boot		Fichiers statiques pour le programme d'amorçage
 /dev		Fichiers des pilotes de périphériques
 /etc		Configuration système propre à la machine
 /home		Répertoires personnels des utilisateurs
 /lib		Bibliothèques partagées et modules noyaux essentiels
 /media		Points de montage pour les supports amovibles
 /mnt		Point de montage pour les montages temporaires
 /proc		Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
 /root		Répertoire personnel de l'utilisateur root
 /sbin		Exécutables système essentiels
 /sys		Répertoire virtuel pour les informations système (noyaux 2.6)
 /tmp		Fichiers temporaires
 /usr		Hiérarchie secondaire
 /var		Données variables
 /srv		Données pour les services fournis par le système
 /opt		Répertoire pour d'autres logiciels&lt;/code&gt;

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessité plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' suffiront pour une utilisation normale.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /temp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ cat /proc/meminfo | grep MemTotal

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances.

Avec une machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2.

== Primaire et étendue ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions primaires et une partition étendue qui elle même peut contenir 11 partitions logiques (ce qui fait quand même 14 partitions... c'est le maximum).

La limitation vient du format de la table de partition dans le MBR, le premier secteur du disque. Cette limitation saute avec le nouveau format GPT (GUID Partition Table) utilisé notamment sur les machines avec firmware EFI (Extensible Firmware Interface) en remplacement du BIOS.

== Le système de fichier ==


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>kmslr26br6psu6eanjcsb620wj6zpj1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2573</id>
      <parentid>2572</parentid>
      <timestamp>2010-12-27T08:38:17Z</timestamp>
      <contributor>
        <username>Fran.b</username>
        <id>13</id>
      </contributor>
      <comment>/* La partition tmp */</comment>
      <text xml:space="preserve" bytes="12090">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===

Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.svg]]


Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.

Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à le carte mère). Les plus courantes actuellement sont:

- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg]]

- Serial ATA ou SATA (Serial Advanced Technology Attachment)[[Fichier:SATA Data Cable.jpg]]

- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg]]


=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur destinée à accueillir un système de fichiers.

Les informations sur les partitions sont conservées sur le disque lui-même dans des zones qu'on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du disque ou secteur d'amorçage (Master boot record ou MBR) qui contient également le programme d'amorçage.


Voici un exemple de partitionnement:
[[Fichier:Gparted.jpeg]]

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux


Avec l'utilitaire '''cfdisk'''
[[Fichier:Cfdisk.jpeg]]

Une partition primaire : sda1
Une partition étendue : sda2 qui contient elle même 5 lecteurs logiques (sda5 à sda9).

A savoir: Seules les partitions primaires peuvent contenir la partition d'amorçage du système d'exploitation Windows. Ce n'est pas le cas pour Debian dont le système d'ammorçage peut très bien s'installer sur une partition étendue.

=== Généralités ===

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, '''une simple partition / (plus celle d'échange) est sans doute la solution la plus simple'''. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système. 

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de le distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installations y déplient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.

'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.'''

N'espérer pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

 /		La racine (partition root), qui contient tous les autres répertoires
 
 Répertoire	Contenu
 
 /bin		Binaires (exécutables) des commandes essentielles
 /boot		Fichiers statiques pour le programme d'amorçage
 /dev		Fichiers des pilotes de périphériques
 /etc		Configuration système propre à la machine
 /home		Répertoires personnels des utilisateurs
 /lib		Bibliothèques partagées et modules noyaux essentiels
 /media		Points de montage pour les supports amovibles
 /mnt		Point de montage pour les montages temporaires
 /proc		Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
 /root		Répertoire personnel de l'utilisateur root
 /sbin		Exécutables système essentiels
 /sys		Répertoire virtuel pour les informations système (noyaux 2.6)
 /tmp		Fichiers temporaires
 /usr		Hiérarchie secondaire
 /var		Données variables
 /srv		Données pour les services fournis par le système
 /opt		Répertoire pour d'autres logiciels&lt;/code&gt;

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessité plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ cat /proc/meminfo | grep MemTotal

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances.

Avec une machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2.

== Primaire et étendue ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions primaires et une partition étendue qui elle même peut contenir 11 partitions logiques (ce qui fait quand même 14 partitions... c'est le maximum).

La limitation vient du format de la table de partition dans le MBR, le premier secteur du disque. Cette limitation saute avec le nouveau format GPT (GUID Partition Table) utilisé notamment sur les machines avec firmware EFI (Extensible Firmware Interface) en remplacement du BIOS.

== Le système de fichier ==


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>qbm3sj0xcigyqexwzm7ekd2h9204ur9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2574</id>
      <parentid>2573</parentid>
      <timestamp>2010-12-27T08:42:35Z</timestamp>
      <contributor>
        <username>Fran.b</username>
        <id>13</id>
      </contributor>
      <comment>/* La partition swap */</comment>
      <text xml:space="preserve" bytes="12415">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===

Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.svg]]


Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.

Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à le carte mère). Les plus courantes actuellement sont:

- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg]]

- Serial ATA ou SATA (Serial Advanced Technology Attachment)[[Fichier:SATA Data Cable.jpg]]

- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg]]


=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur destinée à accueillir un système de fichiers.

Les informations sur les partitions sont conservées sur le disque lui-même dans des zones qu'on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du disque ou secteur d'amorçage (Master boot record ou MBR) qui contient également le programme d'amorçage.


Voici un exemple de partitionnement:
[[Fichier:Gparted.jpeg]]

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux


Avec l'utilitaire '''cfdisk'''
[[Fichier:Cfdisk.jpeg]]

Une partition primaire : sda1
Une partition étendue : sda2 qui contient elle même 5 lecteurs logiques (sda5 à sda9).

A savoir: Seules les partitions primaires peuvent contenir la partition d'amorçage du système d'exploitation Windows. Ce n'est pas le cas pour Debian dont le système d'ammorçage peut très bien s'installer sur une partition étendue.

=== Généralités ===

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, '''une simple partition / (plus celle d'échange) est sans doute la solution la plus simple'''. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système. 

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de le distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installations y déplient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.

'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.'''

N'espérer pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

 /		La racine (partition root), qui contient tous les autres répertoires
 
 Répertoire	Contenu
 
 /bin		Binaires (exécutables) des commandes essentielles
 /boot		Fichiers statiques pour le programme d'amorçage
 /dev		Fichiers des pilotes de périphériques
 /etc		Configuration système propre à la machine
 /home		Répertoires personnels des utilisateurs
 /lib		Bibliothèques partagées et modules noyaux essentiels
 /media		Points de montage pour les supports amovibles
 /mnt		Point de montage pour les montages temporaires
 /proc		Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
 /root		Répertoire personnel de l'utilisateur root
 /sbin		Exécutables système essentiels
 /sys		Répertoire virtuel pour les informations système (noyaux 2.6)
 /tmp		Fichiers temporaires
 /usr		Hiérarchie secondaire
 /var		Données variables
 /srv		Données pour les services fournis par le système
 /opt		Répertoire pour d'autres logiciels&lt;/code&gt;

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessité plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ cat /proc/meminfo | grep MemTotal

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4G de swap pour pouvoir bénéficier de l'hibernation.

== Primaire et étendue ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions primaires et une partition étendue qui elle même peut contenir 11 partitions logiques (ce qui fait quand même 14 partitions... c'est le maximum).

La limitation vient du format de la table de partition dans le MBR, le premier secteur du disque. Cette limitation saute avec le nouveau format GPT (GUID Partition Table) utilisé notamment sur les machines avec firmware EFI (Extensible Firmware Interface) en remplacement du BIOS.

== Le système de fichier ==


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>202iuvczdogucibp90qk3h7rz9ubcah</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2575</id>
      <parentid>2574</parentid>
      <timestamp>2010-12-27T09:47:30Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <minor/>
      <comment>/* La partition swap */ demoggification</comment>
      <text xml:space="preserve" bytes="12409">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===

Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.svg]]


Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.

Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à le carte mère). Les plus courantes actuellement sont:

- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg]]

- Serial ATA ou SATA (Serial Advanced Technology Attachment)[[Fichier:SATA Data Cable.jpg]]

- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg]]


=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur destinée à accueillir un système de fichiers.

Les informations sur les partitions sont conservées sur le disque lui-même dans des zones qu'on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du disque ou secteur d'amorçage (Master boot record ou MBR) qui contient également le programme d'amorçage.


Voici un exemple de partitionnement:
[[Fichier:Gparted.jpeg]]

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux


Avec l'utilitaire '''cfdisk'''
[[Fichier:Cfdisk.jpeg]]

Une partition primaire : sda1
Une partition étendue : sda2 qui contient elle même 5 lecteurs logiques (sda5 à sda9).

A savoir: Seules les partitions primaires peuvent contenir la partition d'amorçage du système d'exploitation Windows. Ce n'est pas le cas pour Debian dont le système d'ammorçage peut très bien s'installer sur une partition étendue.

=== Généralités ===

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, '''une simple partition / (plus celle d'échange) est sans doute la solution la plus simple'''. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système. 

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de le distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installations y déplient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.

'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.'''

N'espérer pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

 /		La racine (partition root), qui contient tous les autres répertoires
 
 Répertoire	Contenu
 
 /bin		Binaires (exécutables) des commandes essentielles
 /boot		Fichiers statiques pour le programme d'amorçage
 /dev		Fichiers des pilotes de périphériques
 /etc		Configuration système propre à la machine
 /home		Répertoires personnels des utilisateurs
 /lib		Bibliothèques partagées et modules noyaux essentiels
 /media		Points de montage pour les supports amovibles
 /mnt		Point de montage pour les montages temporaires
 /proc		Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
 /root		Répertoire personnel de l'utilisateur root
 /sbin		Exécutables système essentiels
 /sys		Répertoire virtuel pour les informations système (noyaux 2.6)
 /tmp		Fichiers temporaires
 /usr		Hiérarchie secondaire
 /var		Données variables
 /srv		Données pour les services fournis par le système
 /opt		Répertoire pour d'autres logiciels&lt;/code&gt;

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessité plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4G de swap pour pouvoir bénéficier de l'hibernation.

== Primaire et étendue ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions primaires et une partition étendue qui elle même peut contenir 11 partitions logiques (ce qui fait quand même 14 partitions... c'est le maximum).

La limitation vient du format de la table de partition dans le MBR, le premier secteur du disque. Cette limitation saute avec le nouveau format GPT (GUID Partition Table) utilisé notamment sur les machines avec firmware EFI (Extensible Firmware Interface) en remplacement du BIOS.

== Le système de fichier ==


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>op8u0vcvs6w0eso3eeg3l3u2613niqp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2582</id>
      <parentid>2575</parentid>
      <timestamp>2010-12-28T06:51:22Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="12420">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===

Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.svg]]


Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.

Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à le carte mère). Les plus courantes actuellement sont:

- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg]]

- Serial ATA ou SATA (Serial Advanced Technology Attachment)[[Fichier:SATA Data Cable.jpg]]

- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg]]


=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur destinée à accueillir un système de fichiers.

Les informations sur les partitions sont conservées sur le disque lui-même dans des zones qu'on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du disque ou secteur d'amorçage (Master boot record ou MBR) qui contient également le programme d'amorçage.


Voici un exemple de partitionnement:
[[Fichier:Gparted.jpeg]]

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux


Avec l'utilitaire '''cfdisk'''
[[Fichier:Cfdisk.jpeg]]

Une partition primaire : sda1
Une partition étendue : sda2 qui contient elle même 5 lecteurs logiques (sda5 à sda9).

A savoir: Seules les partitions primaires peuvent contenir la partition d'amorçage du système d'exploitation Windows. Ce n'est pas le cas pour Debian dont le système d'ammorçage peut très bien s'installer sur une partition étendue.

=== Généralités ===

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, '''une simple partition / (plus celle d'échange) est sans doute la solution la plus simple'''. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système. 

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de le distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installations y déplient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.

'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.'''

N'espérer pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

 /		La racine (partition root), qui contient tous les autres répertoires
 
 Répertoire	Contenu
 
 /bin		Binaires (exécutables) des commandes essentielles
 /boot		Fichiers statiques pour le programme d'amorçage
 /dev		Fichiers des pilotes de périphériques
 /etc		Configuration système propre à la machine
 /home		Répertoires personnels des utilisateurs
 /lib		Bibliothèques partagées et modules noyaux essentiels
 /media		Points de montage pour les supports amovibles
 /mnt		Point de montage pour les montages temporaires
 /proc		Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
 /root		Répertoire personnel de l'utilisateur root
 /sbin		Exécutables système essentiels
 /sys		Répertoire virtuel pour les informations système (noyaux 2.6)
 /tmp		Fichiers temporaires
 /usr		Hiérarchie secondaire
 /var		Données variables
 /srv		Données pour les services fournis par le système
 /opt		Répertoire pour d'autres logiciels&lt;/code&gt;

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessité plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4G de swap pour pouvoir bénéficier de l'hibernation.

== Primaire et étendue ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions primaires et une partition étendue qui elle même peut contenir 11 partitions logiques (ce qui fait quand même 14 partitions... c'est le maximum).

La limitation vient du format de la table de partition dans le MBR, le premier secteur du disque. Cette limitation saute avec le nouveau format GPT (GUID Partition Table) utilisé notamment sur les machines avec firmware EFI (Extensible Firmware Interface) en remplacement du BIOS.

== Le système de fichier ==

&gt; A faire


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>tnxnq26txn3negtms72hcj04ib0oa1i</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2583</id>
      <parentid>2582</parentid>
      <timestamp>2010-12-28T07:20:05Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Le système de fichier */</comment>
      <text xml:space="preserve" bytes="13936">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===

Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.svg]]


Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.

Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à le carte mère). Les plus courantes actuellement sont:

- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg]]

- Serial ATA ou SATA (Serial Advanced Technology Attachment)[[Fichier:SATA Data Cable.jpg]]

- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg]]


=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur destinée à accueillir un système de fichiers.

Les informations sur les partitions sont conservées sur le disque lui-même dans des zones qu'on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du disque ou secteur d'amorçage (Master boot record ou MBR) qui contient également le programme d'amorçage.


Voici un exemple de partitionnement:
[[Fichier:Gparted.jpeg]]

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux


Avec l'utilitaire '''cfdisk'''
[[Fichier:Cfdisk.jpeg]]

Une partition primaire : sda1
Une partition étendue : sda2 qui contient elle même 5 lecteurs logiques (sda5 à sda9).

A savoir: Seules les partitions primaires peuvent contenir la partition d'amorçage du système d'exploitation Windows. Ce n'est pas le cas pour Debian dont le système d'ammorçage peut très bien s'installer sur une partition étendue.

=== Généralités ===

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, '''une simple partition / (plus celle d'échange) est sans doute la solution la plus simple'''. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système. 

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de le distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installations y déplient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.

'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.'''

N'espérer pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

 /		La racine (partition root), qui contient tous les autres répertoires
 
 Répertoire	Contenu
 
 /bin		Binaires (exécutables) des commandes essentielles
 /boot		Fichiers statiques pour le programme d'amorçage
 /dev		Fichiers des pilotes de périphériques
 /etc		Configuration système propre à la machine
 /home		Répertoires personnels des utilisateurs
 /lib		Bibliothèques partagées et modules noyaux essentiels
 /media		Points de montage pour les supports amovibles
 /mnt		Point de montage pour les montages temporaires
 /proc		Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
 /root		Répertoire personnel de l'utilisateur root
 /sbin		Exécutables système essentiels
 /sys		Répertoire virtuel pour les informations système (noyaux 2.6)
 /tmp		Fichiers temporaires
 /usr		Hiérarchie secondaire
 /var		Données variables
 /srv		Données pour les services fournis par le système
 /opt		Répertoire pour d'autres logiciels&lt;/code&gt;

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessité plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4G de swap pour pouvoir bénéficier de l'hibernation.

== Primaire et étendue ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions primaires et une partition étendue qui elle même peut contenir 11 partitions logiques (ce qui fait quand même 14 partitions... c'est le maximum).

La limitation vient du format de la table de partition dans le MBR, le premier secteur du disque. Cette limitation saute avec le nouveau format GPT (GUID Partition Table) utilisé notamment sur les machines avec firmware EFI (Extensible Firmware Interface) en remplacement du BIOS.

== Le système de fichier ==

&gt; A faire

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 20 Go (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}
| Etendue
| SWAP 1 fois et demi la Ram
|- {{ligne grise}}
| Etendue
| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GO :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 3 Go
|- {{ligne grise}}
| Etendue
| SWAP 5 Go
|- {{ligne grise}}
| Etendue
| /tmp 5 Go
|- {{ligne grise}}
| Etendue
| /usr 15 Go
|- {{ligne grise}}
| Etendue
| /var 5 Go
|- {{ligne grise}}
| Etendue
| /home 317 Go
|}

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| 
|- {{ligne grise}}
| Etendue
| 
|- {{ligne grise}}
| Etendue
| 
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>gs2gf0lxj24pjgdm5m8dt4ckp1tjsid</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2584</id>
      <parentid>2583</parentid>
      <timestamp>2010-12-28T07:46:42Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Généralités */</comment>
      <text xml:space="preserve" bytes="15190">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===

Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.svg]]


Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.

Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à le carte mère). Les plus courantes actuellement sont:

- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg]]

- Serial ATA ou SATA (Serial Advanced Technology Attachment)[[Fichier:SATA Data Cable.jpg]]

- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg]]


=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur destinée à accueillir un système de fichiers.

Les informations sur les partitions sont conservées sur le disque lui-même dans des zones qu'on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du disque ou secteur d'amorçage (Master boot record ou MBR) qui contient également le programme d'amorçage.


Voici un exemple de partitionnement:
[[Fichier:Gparted.jpeg]]

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux


Avec l'utilitaire '''cfdisk'''
[[Fichier:Cfdisk.jpeg]]

Une partition primaire : sda1
Une partition étendue : sda2 qui contient elle même 5 lecteurs logiques (sda5 à sda9).

A savoir: Seules les partitions primaires peuvent contenir la partition d'amorçage du système d'exploitation Windows. Ce n'est pas le cas pour Debian dont le système d'ammorçage peut très bien s'installer sur une partition étendue.

=== Généralités ===

Pourquoi partitionner ?

Vous pourriez envisager de n'avoir qu'une seule partition contenant tout votre système...
La plupart d'entre nous choisissent de créer plus de partitions que le minimum dont Debian a besoin pour fonctionner. Pourquoi ?

Principalement pour des raison de sécurité: Si une partition est corrompue, le reste du système est toujours accessible. Il suffit généralement de restaurer une sauvegarde de la partition corrompue pour régler le problème.

Mais aussi pour séparer les partitions qui risqueraient d'être submergées de fichiers (Par exemple /var pour un serveur de mail qui serait attaqué par un &quot;spamage&quot; massif...). Le reste du système serait alors toujours opérationnel.

Au minimum il est prudent de séparer la racine &quot;/&quot; des autres partitions. En cas de corruption d'une autre partition, vous pourrez toujours amorcer Linux pour réparer le système...

La seconde difficulté (après le choix du nombre de partitions) sera de définir la taille de ces partitions... Une taille trop petite rendra rapidement votre système inutilisable. Une taille trop grande gâche de l'espace disque (qui même s'il n'est pas cher peut être utile ailleurs...)

Les remarques qui suivent sont des préconisation Debian:

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, '''une simple partition / (plus celle d'échange) est sans doute la solution la plus simple'''. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système.

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de le distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installations y déplient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.

'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.'''

N'espérer pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

 /		La racine (partition root), qui contient tous les autres répertoires
 
 Répertoire	Contenu
 
 /bin		Binaires (exécutables) des commandes essentielles
 /boot		Fichiers statiques pour le programme d'amorçage
 /dev		Fichiers des pilotes de périphériques
 /etc		Configuration système propre à la machine
 /home		Répertoires personnels des utilisateurs
 /lib		Bibliothèques partagées et modules noyaux essentiels
 /media		Points de montage pour les supports amovibles
 /mnt		Point de montage pour les montages temporaires
 /proc		Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
 /root		Répertoire personnel de l'utilisateur root
 /sbin		Exécutables système essentiels
 /sys		Répertoire virtuel pour les informations système (noyaux 2.6)
 /tmp		Fichiers temporaires
 /usr		Hiérarchie secondaire
 /var		Données variables
 /srv		Données pour les services fournis par le système
 /opt		Répertoire pour d'autres logiciels&lt;/code&gt;

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessité plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4G de swap pour pouvoir bénéficier de l'hibernation.

== Primaire et étendue ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions primaires et une partition étendue qui elle même peut contenir 11 partitions logiques (ce qui fait quand même 14 partitions... c'est le maximum).

La limitation vient du format de la table de partition dans le MBR, le premier secteur du disque. Cette limitation saute avec le nouveau format GPT (GUID Partition Table) utilisé notamment sur les machines avec firmware EFI (Extensible Firmware Interface) en remplacement du BIOS.

== Le système de fichier ==

&gt; A faire

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 20 Go (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}
| Etendue
| SWAP 1 fois et demi la Ram
|- {{ligne grise}}
| Etendue
| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GO :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 3 Go
|- {{ligne grise}}
| Etendue
| SWAP 5 Go
|- {{ligne grise}}
| Etendue
| /tmp 5 Go
|- {{ligne grise}}
| Etendue
| /usr 15 Go
|- {{ligne grise}}
| Etendue
| /var 5 Go
|- {{ligne grise}}
| Etendue
| /home 317 Go
|}

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| 
|- {{ligne grise}}
| Etendue
| 
|- {{ligne grise}}
| Etendue
| 
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>2wllhvcvy12td9i9gmx9yzy5mmblo76</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2586</id>
      <parentid>2584</parentid>
      <timestamp>2010-12-28T08:36:01Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Généralités */</comment>
      <text xml:space="preserve" bytes="15353">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===

Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.svg]]


Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.

Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à le carte mère). Les plus courantes actuellement sont:

- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg]]

- Serial ATA ou SATA (Serial Advanced Technology Attachment)[[Fichier:SATA Data Cable.jpg]]

- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg]]


=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur destinée à accueillir un système de fichiers.

Les informations sur les partitions sont conservées sur le disque lui-même dans des zones qu'on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du disque ou secteur d'amorçage (Master boot record ou MBR) qui contient également le programme d'amorçage.


Voici un exemple de partitionnement:
[[Fichier:Gparted.jpeg]]

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux


Avec l'utilitaire '''cfdisk'''
[[Fichier:Cfdisk.jpeg]]

Une partition primaire : sda1
Une partition étendue : sda2 qui contient elle même 5 lecteurs logiques (sda5 à sda9).

A savoir: Seules les partitions primaires peuvent contenir la partition d'amorçage du système d'exploitation Windows. Ce n'est pas le cas pour Debian dont le système d'ammorçage peut très bien s'installer sur une partition étendue.

=== Généralités ===

Pourquoi partitionner ?

Vous pourriez envisager de n'avoir qu'une seule partition contenant tout votre système...
La plupart d'entre nous choisissent de créer plus de partitions que le minimum dont Debian a besoin pour fonctionner. Pourquoi ?

Principalement pour des raison de sécurité: Si une partition est corrompue, le reste du système est toujours accessible. Il suffit généralement de restaurer une sauvegarde de la partition corrompue pour régler le problème.

Mais aussi pour séparer les partitions qui risqueraient d'être submergées de fichiers (Par exemple /var pour un serveur de mail qui serait attaqué par un &quot;spamage&quot; massif...). Le reste du système serait alors toujours opérationnel.


Au minimum il est prudent de séparer la racine &quot;/&quot; des autres partitions. En cas de corruption d'une autre partition, vous pourrez toujours amorcer Linux pour réparer le système...
Vous voulez en effet pouvoir être en mesure de démarrer en &quot;Single user mode&quot; pour restaurer votre station ou serveur... Ce qui exige une racine «intacte».


La seconde difficulté (après le choix du nombre de partitions) sera de définir la taille de ces partitions... Une taille trop petite rendra rapidement votre système inutilisable. Une taille trop grande gâche de l'espace disque (qui même s'il n'est pas cher peut être utile ailleurs...)


Les remarques qui suivent sont des préconisation Debian:

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, '''une simple partition / (plus celle d'échange) est sans doute la solution la plus simple'''. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système.

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de le distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installations y déplient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.

'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.'''

N'espérer pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

 /		La racine (partition root), qui contient tous les autres répertoires
 
 Répertoire	Contenu
 
 /bin		Binaires (exécutables) des commandes essentielles
 /boot		Fichiers statiques pour le programme d'amorçage
 /dev		Fichiers des pilotes de périphériques
 /etc		Configuration système propre à la machine
 /home		Répertoires personnels des utilisateurs
 /lib		Bibliothèques partagées et modules noyaux essentiels
 /media		Points de montage pour les supports amovibles
 /mnt		Point de montage pour les montages temporaires
 /proc		Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
 /root		Répertoire personnel de l'utilisateur root
 /sbin		Exécutables système essentiels
 /sys		Répertoire virtuel pour les informations système (noyaux 2.6)
 /tmp		Fichiers temporaires
 /usr		Hiérarchie secondaire
 /var		Données variables
 /srv		Données pour les services fournis par le système
 /opt		Répertoire pour d'autres logiciels&lt;/code&gt;

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessité plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4G de swap pour pouvoir bénéficier de l'hibernation.

== Primaire et étendue ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions primaires et une partition étendue qui elle même peut contenir 11 partitions logiques (ce qui fait quand même 14 partitions... c'est le maximum).

La limitation vient du format de la table de partition dans le MBR, le premier secteur du disque. Cette limitation saute avec le nouveau format GPT (GUID Partition Table) utilisé notamment sur les machines avec firmware EFI (Extensible Firmware Interface) en remplacement du BIOS.

== Le système de fichier ==

&gt; A faire

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 20 Go (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}
| Etendue
| SWAP 1 fois et demi la Ram
|- {{ligne grise}}
| Etendue
| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GO :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 3 Go
|- {{ligne grise}}
| Etendue
| SWAP 5 Go
|- {{ligne grise}}
| Etendue
| /tmp 5 Go
|- {{ligne grise}}
| Etendue
| /usr 15 Go
|- {{ligne grise}}
| Etendue
| /var 5 Go
|- {{ligne grise}}
| Etendue
| /home 317 Go
|}

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| 
|- {{ligne grise}}
| Etendue
| 
|- {{ligne grise}}
| Etendue
| 
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>cqsrah7hzj8qa3t6u1yz4bo2cdgpxka</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2587</id>
      <parentid>2586</parentid>
      <timestamp>2010-12-28T08:43:16Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Généralités */</comment>
      <text xml:space="preserve" bytes="15354">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===

Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.svg]]


Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.

Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à le carte mère). Les plus courantes actuellement sont:

- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg]]

- Serial ATA ou SATA (Serial Advanced Technology Attachment)[[Fichier:SATA Data Cable.jpg]]

- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg]]


=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur destinée à accueillir un système de fichiers.

Les informations sur les partitions sont conservées sur le disque lui-même dans des zones qu'on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du disque ou secteur d'amorçage (Master boot record ou MBR) qui contient également le programme d'amorçage.


Voici un exemple de partitionnement:
[[Fichier:Gparted.jpeg]]

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux


Avec l'utilitaire '''cfdisk'''
[[Fichier:Cfdisk.jpeg]]

Une partition primaire : sda1
Une partition étendue : sda2 qui contient elle même 5 lecteurs logiques (sda5 à sda9).

A savoir: Seules les partitions primaires peuvent contenir la partition d'amorçage du système d'exploitation Windows. Ce n'est pas le cas pour Debian dont le système d'ammorçage peut très bien s'installer sur une partition étendue.

=== Généralités ===

Pourquoi partitionner ?

Vous pourriez envisager de n'avoir qu'une seule partition contenant tout votre système...
La plupart d'entre nous choisissent de créer plus de partitions que le minimum dont Debian a besoin pour fonctionner. Pourquoi ?

Principalement pour des raison de sécurité: Si une partition est corrompue, le reste du système est toujours accessible. Il suffit généralement de restaurer une sauvegarde de la partition corrompue pour régler le problème.

Mais aussi pour séparer les partitions qui risqueraient d'être submergées de fichiers (Par exemple /var pour un serveur de mail qui serait attaqué par un &quot;spamage&quot; massif...). Le reste du système serait alors toujours opérationnel.


Au minimum il est prudent de séparer la racine &quot;/&quot; des autres partitions. En cas de corruption d'une autre partition, vous pourrez toujours amorcer Linux pour réparer le système...
Vous voulez en effet pouvoir être en mesure de démarrer en &quot;Single user mode&quot; pour restaurer votre station ou serveur... Ce qui exige une racine «intacte».


La seconde difficulté (après le choix du nombre de partitions) sera de définir la taille de ces partitions... Une taille trop petite rendra rapidement votre système inutilisable. Une taille trop grande gâche de l'espace disque (qui même s'il n'est pas cher peut être utile ailleurs...)


Les remarques qui suivent sont des préconisations Debian:

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, '''une simple partition / (plus celle d'échange) est sans doute la solution la plus simple'''. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système.

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de le distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installations y déplient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.

'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.'''

N'espérer pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

 /		La racine (partition root), qui contient tous les autres répertoires
 
 Répertoire	Contenu
 
 /bin		Binaires (exécutables) des commandes essentielles
 /boot		Fichiers statiques pour le programme d'amorçage
 /dev		Fichiers des pilotes de périphériques
 /etc		Configuration système propre à la machine
 /home		Répertoires personnels des utilisateurs
 /lib		Bibliothèques partagées et modules noyaux essentiels
 /media		Points de montage pour les supports amovibles
 /mnt		Point de montage pour les montages temporaires
 /proc		Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
 /root		Répertoire personnel de l'utilisateur root
 /sbin		Exécutables système essentiels
 /sys		Répertoire virtuel pour les informations système (noyaux 2.6)
 /tmp		Fichiers temporaires
 /usr		Hiérarchie secondaire
 /var		Données variables
 /srv		Données pour les services fournis par le système
 /opt		Répertoire pour d'autres logiciels&lt;/code&gt;

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessité plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4G de swap pour pouvoir bénéficier de l'hibernation.

== Primaire et étendue ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions primaires et une partition étendue qui elle même peut contenir 11 partitions logiques (ce qui fait quand même 14 partitions... c'est le maximum).

La limitation vient du format de la table de partition dans le MBR, le premier secteur du disque. Cette limitation saute avec le nouveau format GPT (GUID Partition Table) utilisé notamment sur les machines avec firmware EFI (Extensible Firmware Interface) en remplacement du BIOS.

== Le système de fichier ==

&gt; A faire

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 20 Go (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}
| Etendue
| SWAP 1 fois et demi la Ram
|- {{ligne grise}}
| Etendue
| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GO :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 3 Go
|- {{ligne grise}}
| Etendue
| SWAP 5 Go
|- {{ligne grise}}
| Etendue
| /tmp 5 Go
|- {{ligne grise}}
| Etendue
| /usr 15 Go
|- {{ligne grise}}
| Etendue
| /var 5 Go
|- {{ligne grise}}
| Etendue
| /home 317 Go
|}

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| 
|- {{ligne grise}}
| Etendue
| 
|- {{ligne grise}}
| Etendue
| 
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>0ia3z3mwzmdzf6vl35xnlptibsf9elo</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2588</id>
      <parentid>2587</parentid>
      <timestamp>2010-12-28T08:45:25Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Les partitions */</comment>
      <text xml:space="preserve" bytes="15273">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===

Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.svg]]


Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.

Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à le carte mère). Les plus courantes actuellement sont:

- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg]]

- Serial ATA ou SATA (Serial Advanced Technology Attachment)[[Fichier:SATA Data Cable.jpg]]

- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg]]


=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur destinée à accueillir un système de fichiers.

Les informations sur les partitions sont conservées sur le disque lui-même dans des zones qu'on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du disque ou secteur d'amorçage (Master boot record ou MBR) qui contient également le programme d'amorçage.


Voici un exemple de partitionnement:

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux

Une partition primaire : sda1

Une partition étendue : sda2 qui contient elle même 5 lecteurs logiques (sda5 à sda9).

A savoir: Seules les partitions primaires peuvent contenir la partition d'amorçage du système d'exploitation Windows. Ce n'est pas le cas pour Debian dont le système d'ammorçage peut très bien s'installer sur une partition étendue.

=== Généralités ===

Pourquoi partitionner ?

Vous pourriez envisager de n'avoir qu'une seule partition contenant tout votre système...
La plupart d'entre nous choisissent de créer plus de partitions que le minimum dont Debian a besoin pour fonctionner. Pourquoi ?

Principalement pour des raison de sécurité: Si une partition est corrompue, le reste du système est toujours accessible. Il suffit généralement de restaurer une sauvegarde de la partition corrompue pour régler le problème.

Mais aussi pour séparer les partitions qui risqueraient d'être submergées de fichiers (Par exemple /var pour un serveur de mail qui serait attaqué par un &quot;spamage&quot; massif...). Le reste du système serait alors toujours opérationnel.


Au minimum il est prudent de séparer la racine &quot;/&quot; des autres partitions. En cas de corruption d'une autre partition, vous pourrez toujours amorcer Linux pour réparer le système...
Vous voulez en effet pouvoir être en mesure de démarrer en &quot;Single user mode&quot; pour restaurer votre station ou serveur... Ce qui exige une racine «intacte».


La seconde difficulté (après le choix du nombre de partitions) sera de définir la taille de ces partitions... Une taille trop petite rendra rapidement votre système inutilisable. Une taille trop grande gâche de l'espace disque (qui même s'il n'est pas cher peut être utile ailleurs...)


Les remarques qui suivent sont des préconisations Debian:

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, '''une simple partition / (plus celle d'échange) est sans doute la solution la plus simple'''. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système.

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de le distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installations y déplient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.

'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.'''

N'espérer pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

 /		La racine (partition root), qui contient tous les autres répertoires
 
 Répertoire	Contenu
 
 /bin		Binaires (exécutables) des commandes essentielles
 /boot		Fichiers statiques pour le programme d'amorçage
 /dev		Fichiers des pilotes de périphériques
 /etc		Configuration système propre à la machine
 /home		Répertoires personnels des utilisateurs
 /lib		Bibliothèques partagées et modules noyaux essentiels
 /media		Points de montage pour les supports amovibles
 /mnt		Point de montage pour les montages temporaires
 /proc		Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
 /root		Répertoire personnel de l'utilisateur root
 /sbin		Exécutables système essentiels
 /sys		Répertoire virtuel pour les informations système (noyaux 2.6)
 /tmp		Fichiers temporaires
 /usr		Hiérarchie secondaire
 /var		Données variables
 /srv		Données pour les services fournis par le système
 /opt		Répertoire pour d'autres logiciels&lt;/code&gt;

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessité plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4G de swap pour pouvoir bénéficier de l'hibernation.

== Primaire et étendue ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions primaires et une partition étendue qui elle même peut contenir 11 partitions logiques (ce qui fait quand même 14 partitions... c'est le maximum).

La limitation vient du format de la table de partition dans le MBR, le premier secteur du disque. Cette limitation saute avec le nouveau format GPT (GUID Partition Table) utilisé notamment sur les machines avec firmware EFI (Extensible Firmware Interface) en remplacement du BIOS.

== Le système de fichier ==

&gt; A faire

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 20 Go (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}
| Etendue
| SWAP 1 fois et demi la Ram
|- {{ligne grise}}
| Etendue
| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GO :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 3 Go
|- {{ligne grise}}
| Etendue
| SWAP 5 Go
|- {{ligne grise}}
| Etendue
| /tmp 5 Go
|- {{ligne grise}}
| Etendue
| /usr 15 Go
|- {{ligne grise}}
| Etendue
| /var 5 Go
|- {{ligne grise}}
| Etendue
| /home 317 Go
|}

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| 
|- {{ligne grise}}
| Etendue
| 
|- {{ligne grise}}
| Etendue
| 
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>85djrsjojpri732qpemdlc67tj36vja</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2589</id>
      <parentid>2588</parentid>
      <timestamp>2010-12-28T08:48:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Le Disque dur */</comment>
      <text xml:space="preserve" bytes="15310">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===

Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.svg]]


Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.

Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à le carte mère). Les plus courantes actuellement sont:


- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg|80px|center]]

- Serial ATA ou SATA (Serial Advanced Technology Attachment) [[Fichier:SATA Data Cable.jpg|80px|center]]

- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg|80px|center]]

=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur destinée à accueillir un système de fichiers.

Les informations sur les partitions sont conservées sur le disque lui-même dans des zones qu'on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du disque ou secteur d'amorçage (Master boot record ou MBR) qui contient également le programme d'amorçage.


Voici un exemple de partitionnement:

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux

Une partition primaire : sda1

Une partition étendue : sda2 qui contient elle même 5 lecteurs logiques (sda5 à sda9).

A savoir: Seules les partitions primaires peuvent contenir la partition d'amorçage du système d'exploitation Windows. Ce n'est pas le cas pour Debian dont le système d'ammorçage peut très bien s'installer sur une partition étendue.

=== Généralités ===

Pourquoi partitionner ?

Vous pourriez envisager de n'avoir qu'une seule partition contenant tout votre système...
La plupart d'entre nous choisissent de créer plus de partitions que le minimum dont Debian a besoin pour fonctionner. Pourquoi ?

Principalement pour des raison de sécurité: Si une partition est corrompue, le reste du système est toujours accessible. Il suffit généralement de restaurer une sauvegarde de la partition corrompue pour régler le problème.

Mais aussi pour séparer les partitions qui risqueraient d'être submergées de fichiers (Par exemple /var pour un serveur de mail qui serait attaqué par un &quot;spamage&quot; massif...). Le reste du système serait alors toujours opérationnel.


Au minimum il est prudent de séparer la racine &quot;/&quot; des autres partitions. En cas de corruption d'une autre partition, vous pourrez toujours amorcer Linux pour réparer le système...
Vous voulez en effet pouvoir être en mesure de démarrer en &quot;Single user mode&quot; pour restaurer votre station ou serveur... Ce qui exige une racine «intacte».


La seconde difficulté (après le choix du nombre de partitions) sera de définir la taille de ces partitions... Une taille trop petite rendra rapidement votre système inutilisable. Une taille trop grande gâche de l'espace disque (qui même s'il n'est pas cher peut être utile ailleurs...)


Les remarques qui suivent sont des préconisations Debian:

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, '''une simple partition / (plus celle d'échange) est sans doute la solution la plus simple'''. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système.

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de le distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installations y déplient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.

'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.'''

N'espérer pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

 /		La racine (partition root), qui contient tous les autres répertoires
 
 Répertoire	Contenu
 
 /bin		Binaires (exécutables) des commandes essentielles
 /boot		Fichiers statiques pour le programme d'amorçage
 /dev		Fichiers des pilotes de périphériques
 /etc		Configuration système propre à la machine
 /home		Répertoires personnels des utilisateurs
 /lib		Bibliothèques partagées et modules noyaux essentiels
 /media		Points de montage pour les supports amovibles
 /mnt		Point de montage pour les montages temporaires
 /proc		Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
 /root		Répertoire personnel de l'utilisateur root
 /sbin		Exécutables système essentiels
 /sys		Répertoire virtuel pour les informations système (noyaux 2.6)
 /tmp		Fichiers temporaires
 /usr		Hiérarchie secondaire
 /var		Données variables
 /srv		Données pour les services fournis par le système
 /opt		Répertoire pour d'autres logiciels&lt;/code&gt;

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessité plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4G de swap pour pouvoir bénéficier de l'hibernation.

== Primaire et étendue ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions primaires et une partition étendue qui elle même peut contenir 11 partitions logiques (ce qui fait quand même 14 partitions... c'est le maximum).

La limitation vient du format de la table de partition dans le MBR, le premier secteur du disque. Cette limitation saute avec le nouveau format GPT (GUID Partition Table) utilisé notamment sur les machines avec firmware EFI (Extensible Firmware Interface) en remplacement du BIOS.

== Le système de fichier ==

&gt; A faire

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 20 Go (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}
| Etendue
| SWAP 1 fois et demi la Ram
|- {{ligne grise}}
| Etendue
| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GO :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 3 Go
|- {{ligne grise}}
| Etendue
| SWAP 5 Go
|- {{ligne grise}}
| Etendue
| /tmp 5 Go
|- {{ligne grise}}
| Etendue
| /usr 15 Go
|- {{ligne grise}}
| Etendue
| /var 5 Go
|- {{ligne grise}}
| Etendue
| /home 317 Go
|}

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| 
|- {{ligne grise}}
| Etendue
| 
|- {{ligne grise}}
| Etendue
| 
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>snqzvn04692r9esdmlgfaxd0bld9u17</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2590</id>
      <parentid>2589</parentid>
      <timestamp>2010-12-28T08:52:02Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Le Disque dur */</comment>
      <text xml:space="preserve" bytes="15322">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===


Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.svg|left]]




Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.



Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à le carte mère). Les plus courantes actuellement sont:



- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg|80px|right]]



- Serial ATA ou SATA (Serial Advanced Technology Attachment) [[Fichier:SATA Data Cable.jpg|80px|right]]



- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg|80px|right]]

=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur destinée à accueillir un système de fichiers.

Les informations sur les partitions sont conservées sur le disque lui-même dans des zones qu'on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du disque ou secteur d'amorçage (Master boot record ou MBR) qui contient également le programme d'amorçage.


Voici un exemple de partitionnement:

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux

Une partition primaire : sda1

Une partition étendue : sda2 qui contient elle même 5 lecteurs logiques (sda5 à sda9).

A savoir: Seules les partitions primaires peuvent contenir la partition d'amorçage du système d'exploitation Windows. Ce n'est pas le cas pour Debian dont le système d'ammorçage peut très bien s'installer sur une partition étendue.

=== Généralités ===

Pourquoi partitionner ?

Vous pourriez envisager de n'avoir qu'une seule partition contenant tout votre système...
La plupart d'entre nous choisissent de créer plus de partitions que le minimum dont Debian a besoin pour fonctionner. Pourquoi ?

Principalement pour des raison de sécurité: Si une partition est corrompue, le reste du système est toujours accessible. Il suffit généralement de restaurer une sauvegarde de la partition corrompue pour régler le problème.

Mais aussi pour séparer les partitions qui risqueraient d'être submergées de fichiers (Par exemple /var pour un serveur de mail qui serait attaqué par un &quot;spamage&quot; massif...). Le reste du système serait alors toujours opérationnel.


Au minimum il est prudent de séparer la racine &quot;/&quot; des autres partitions. En cas de corruption d'une autre partition, vous pourrez toujours amorcer Linux pour réparer le système...
Vous voulez en effet pouvoir être en mesure de démarrer en &quot;Single user mode&quot; pour restaurer votre station ou serveur... Ce qui exige une racine «intacte».


La seconde difficulté (après le choix du nombre de partitions) sera de définir la taille de ces partitions... Une taille trop petite rendra rapidement votre système inutilisable. Une taille trop grande gâche de l'espace disque (qui même s'il n'est pas cher peut être utile ailleurs...)


Les remarques qui suivent sont des préconisations Debian:

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, '''une simple partition / (plus celle d'échange) est sans doute la solution la plus simple'''. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système.

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de le distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installations y déplient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.

'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.'''

N'espérer pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

 /		La racine (partition root), qui contient tous les autres répertoires
 
 Répertoire	Contenu
 
 /bin		Binaires (exécutables) des commandes essentielles
 /boot		Fichiers statiques pour le programme d'amorçage
 /dev		Fichiers des pilotes de périphériques
 /etc		Configuration système propre à la machine
 /home		Répertoires personnels des utilisateurs
 /lib		Bibliothèques partagées et modules noyaux essentiels
 /media		Points de montage pour les supports amovibles
 /mnt		Point de montage pour les montages temporaires
 /proc		Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
 /root		Répertoire personnel de l'utilisateur root
 /sbin		Exécutables système essentiels
 /sys		Répertoire virtuel pour les informations système (noyaux 2.6)
 /tmp		Fichiers temporaires
 /usr		Hiérarchie secondaire
 /var		Données variables
 /srv		Données pour les services fournis par le système
 /opt		Répertoire pour d'autres logiciels&lt;/code&gt;

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessité plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4G de swap pour pouvoir bénéficier de l'hibernation.

== Primaire et étendue ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions primaires et une partition étendue qui elle même peut contenir 11 partitions logiques (ce qui fait quand même 14 partitions... c'est le maximum).

La limitation vient du format de la table de partition dans le MBR, le premier secteur du disque. Cette limitation saute avec le nouveau format GPT (GUID Partition Table) utilisé notamment sur les machines avec firmware EFI (Extensible Firmware Interface) en remplacement du BIOS.

== Le système de fichier ==

&gt; A faire

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 20 Go (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}
| Etendue
| SWAP 1 fois et demi la Ram
|- {{ligne grise}}
| Etendue
| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GO :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 3 Go
|- {{ligne grise}}
| Etendue
| SWAP 5 Go
|- {{ligne grise}}
| Etendue
| /tmp 5 Go
|- {{ligne grise}}
| Etendue
| /usr 15 Go
|- {{ligne grise}}
| Etendue
| /var 5 Go
|- {{ligne grise}}
| Etendue
| /home 317 Go
|}

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| 
|- {{ligne grise}}
| Etendue
| 
|- {{ligne grise}}
| Etendue
| 
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>drnnp8zp96g001f1pu0vep7g7gwysxx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2591</id>
      <parentid>2590</parentid>
      <timestamp>2010-12-28T08:53:13Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Généralités */</comment>
      <text xml:space="preserve" bytes="15328">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===


Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.svg|left]]




Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.



Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à le carte mère). Les plus courantes actuellement sont:



- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg|80px|right]]



- Serial ATA ou SATA (Serial Advanced Technology Attachment) [[Fichier:SATA Data Cable.jpg|80px|right]]



- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg|80px|right]]







=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur destinée à accueillir un système de fichiers.

Les informations sur les partitions sont conservées sur le disque lui-même dans des zones qu'on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du disque ou secteur d'amorçage (Master boot record ou MBR) qui contient également le programme d'amorçage.


Voici un exemple de partitionnement:

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux

Une partition primaire : sda1

Une partition étendue : sda2 qui contient elle même 5 lecteurs logiques (sda5 à sda9).

A savoir: Seules les partitions primaires peuvent contenir la partition d'amorçage du système d'exploitation Windows. Ce n'est pas le cas pour Debian dont le système d'ammorçage peut très bien s'installer sur une partition étendue.

=== Généralités ===

Pourquoi partitionner ?

Vous pourriez envisager de n'avoir qu'une seule partition contenant tout votre système...
La plupart d'entre nous choisissent de créer plus de partitions que le minimum dont Debian a besoin pour fonctionner. Pourquoi ?

Principalement pour des raison de sécurité: Si une partition est corrompue, le reste du système est toujours accessible. Il suffit généralement de restaurer une sauvegarde de la partition corrompue pour régler le problème.

Mais aussi pour séparer les partitions qui risqueraient d'être submergées de fichiers (Par exemple /var pour un serveur de mail qui serait attaqué par un &quot;spamage&quot; massif...). Le reste du système serait alors toujours opérationnel.


Au minimum il est prudent de séparer la racine &quot;/&quot; des autres partitions. En cas de corruption d'une autre partition, vous pourrez toujours amorcer Linux pour réparer le système...
Vous voulez en effet pouvoir être en mesure de démarrer en &quot;Single user mode&quot; pour restaurer votre station ou serveur... Ce qui exige une racine «intacte».


La seconde difficulté (après le choix du nombre de partitions) sera de définir la taille de ces partitions... Une taille trop petite rendra rapidement votre système inutilisable. Une taille trop grande gâche de l'espace disque (qui même s'il n'est pas cher peut être utile ailleurs...)


Les remarques qui suivent sont des préconisations Debian:

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, '''une simple partition / (plus celle d'échange) est sans doute la solution la plus simple'''. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système.

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de le distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installations y déplient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.

'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.'''

N'espérer pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

 /		La racine (partition root), qui contient tous les autres répertoires
 
 Répertoire	Contenu
 
 /bin		Binaires (exécutables) des commandes essentielles
 /boot		Fichiers statiques pour le programme d'amorçage
 /dev		Fichiers des pilotes de périphériques
 /etc		Configuration système propre à la machine
 /home		Répertoires personnels des utilisateurs
 /lib		Bibliothèques partagées et modules noyaux essentiels
 /media		Points de montage pour les supports amovibles
 /mnt		Point de montage pour les montages temporaires
 /proc		Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
 /root		Répertoire personnel de l'utilisateur root
 /sbin		Exécutables système essentiels
 /sys		Répertoire virtuel pour les informations système (noyaux 2.6)
 /tmp		Fichiers temporaires
 /usr		Hiérarchie secondaire
 /var		Données variables
 /srv		Données pour les services fournis par le système
 /opt		Répertoire pour d'autres logiciels&lt;/code&gt;

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessité plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4G de swap pour pouvoir bénéficier de l'hibernation.

== Primaire et étendue ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions primaires et une partition étendue qui elle même peut contenir 11 partitions logiques (ce qui fait quand même 14 partitions... c'est le maximum).

La limitation vient du format de la table de partition dans le MBR, le premier secteur du disque. Cette limitation saute avec le nouveau format GPT (GUID Partition Table) utilisé notamment sur les machines avec firmware EFI (Extensible Firmware Interface) en remplacement du BIOS.

== Le système de fichier ==

&gt; A faire

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 20 Go (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}
| Etendue
| SWAP 1 fois et demi la Ram
|- {{ligne grise}}
| Etendue
| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GO :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 3 Go
|- {{ligne grise}}
| Etendue
| SWAP 5 Go
|- {{ligne grise}}
| Etendue
| /tmp 5 Go
|- {{ligne grise}}
| Etendue
| /usr 15 Go
|- {{ligne grise}}
| Etendue
| /var 5 Go
|- {{ligne grise}}
| Etendue
| /home 317 Go
|}

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| 
|- {{ligne grise}}
| Etendue
| 
|- {{ligne grise}}
| Etendue
| 
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>lk9z2idg4pmwxnaxjkp3jf7d3lz456m</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2592</id>
      <parentid>2591</parentid>
      <timestamp>2010-12-28T09:07:47Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Le Disque dur */</comment>
      <text xml:space="preserve" bytes="15322">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===


Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.svg|left]]




Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.



Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à la carte mère). Les plus courantes actuellement sont:



- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg|80px|right]]



- Serial ATA ou SATA (Serial Advanced Technology Attachment) [[Fichier:SATA Data Cable.jpg|80px|right]]



- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg|80px|right]]

=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur destinée à accueillir un système de fichiers.

Les informations sur les partitions sont conservées sur le disque lui-même dans des zones qu'on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du disque ou secteur d'amorçage (Master boot record ou MBR) qui contient également le programme d'amorçage.


Voici un exemple de partitionnement:

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux

Une partition primaire : sda1

Une partition étendue : sda2 qui contient elle même 5 lecteurs logiques (sda5 à sda9).

A savoir: Seules les partitions primaires peuvent contenir la partition d'amorçage du système d'exploitation Windows. Ce n'est pas le cas pour Debian dont le système d'ammorçage peut très bien s'installer sur une partition étendue.

=== Généralités ===

Pourquoi partitionner ?

Vous pourriez envisager de n'avoir qu'une seule partition contenant tout votre système...
La plupart d'entre nous choisissent de créer plus de partitions que le minimum dont Debian a besoin pour fonctionner. Pourquoi ?

Principalement pour des raison de sécurité: Si une partition est corrompue, le reste du système est toujours accessible. Il suffit généralement de restaurer une sauvegarde de la partition corrompue pour régler le problème.

Mais aussi pour séparer les partitions qui risqueraient d'être submergées de fichiers (Par exemple /var pour un serveur de mail qui serait attaqué par un &quot;spamage&quot; massif...). Le reste du système serait alors toujours opérationnel.


Au minimum il est prudent de séparer la racine &quot;/&quot; des autres partitions. En cas de corruption d'une autre partition, vous pourrez toujours amorcer Linux pour réparer le système...
Vous voulez en effet pouvoir être en mesure de démarrer en &quot;Single user mode&quot; pour restaurer votre station ou serveur... Ce qui exige une racine «intacte».


La seconde difficulté (après le choix du nombre de partitions) sera de définir la taille de ces partitions... Une taille trop petite rendra rapidement votre système inutilisable. Une taille trop grande gâche de l'espace disque (qui même s'il n'est pas cher peut être utile ailleurs...)


Les remarques qui suivent sont des préconisations Debian:

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, '''une simple partition / (plus celle d'échange) est sans doute la solution la plus simple'''. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système.

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de le distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installations y déplient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.

'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.'''

N'espérer pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

 /		La racine (partition root), qui contient tous les autres répertoires
 
 Répertoire	Contenu
 
 /bin		Binaires (exécutables) des commandes essentielles
 /boot		Fichiers statiques pour le programme d'amorçage
 /dev		Fichiers des pilotes de périphériques
 /etc		Configuration système propre à la machine
 /home		Répertoires personnels des utilisateurs
 /lib		Bibliothèques partagées et modules noyaux essentiels
 /media		Points de montage pour les supports amovibles
 /mnt		Point de montage pour les montages temporaires
 /proc		Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
 /root		Répertoire personnel de l'utilisateur root
 /sbin		Exécutables système essentiels
 /sys		Répertoire virtuel pour les informations système (noyaux 2.6)
 /tmp		Fichiers temporaires
 /usr		Hiérarchie secondaire
 /var		Données variables
 /srv		Données pour les services fournis par le système
 /opt		Répertoire pour d'autres logiciels&lt;/code&gt;

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessité plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4G de swap pour pouvoir bénéficier de l'hibernation.

== Primaire et étendue ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions primaires et une partition étendue qui elle même peut contenir 11 partitions logiques (ce qui fait quand même 14 partitions... c'est le maximum).

La limitation vient du format de la table de partition dans le MBR, le premier secteur du disque. Cette limitation saute avec le nouveau format GPT (GUID Partition Table) utilisé notamment sur les machines avec firmware EFI (Extensible Firmware Interface) en remplacement du BIOS.

== Le système de fichier ==

&gt; A faire

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 20 Go (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}
| Etendue
| SWAP 1 fois et demi la Ram
|- {{ligne grise}}
| Etendue
| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GO :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 3 Go
|- {{ligne grise}}
| Etendue
| SWAP 5 Go
|- {{ligne grise}}
| Etendue
| /tmp 5 Go
|- {{ligne grise}}
| Etendue
| /usr 15 Go
|- {{ligne grise}}
| Etendue
| /var 5 Go
|- {{ligne grise}}
| Etendue
| /home 317 Go
|}

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| 
|- {{ligne grise}}
| Etendue
| 
|- {{ligne grise}}
| Etendue
| 
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>f62ixgb7zpdwielr9zapoywc45e6hge</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2593</id>
      <parentid>2592</parentid>
      <timestamp>2010-12-28T09:10:30Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Généralités */</comment>
      <text xml:space="preserve" bytes="15344">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===


Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.svg|left]]




Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.



Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à la carte mère). Les plus courantes actuellement sont:



- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg|80px|right]]



- Serial ATA ou SATA (Serial Advanced Technology Attachment) [[Fichier:SATA Data Cable.jpg|80px|right]]



- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg|80px|right]]

&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;

=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur destinée à accueillir un système de fichiers.

Les informations sur les partitions sont conservées sur le disque lui-même dans des zones qu'on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du disque ou secteur d'amorçage (Master boot record ou MBR) qui contient également le programme d'amorçage.


Voici un exemple de partitionnement:

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux

Une partition primaire : sda1

Une partition étendue : sda2 qui contient elle même 5 lecteurs logiques (sda5 à sda9).

A savoir: Seules les partitions primaires peuvent contenir la partition d'amorçage du système d'exploitation Windows. Ce n'est pas le cas pour Debian dont le système d'ammorçage peut très bien s'installer sur une partition étendue.

=== Généralités ===

Pourquoi partitionner ?

Vous pourriez envisager de n'avoir qu'une seule partition contenant tout votre système...
La plupart d'entre nous choisissent de créer plus de partitions que le minimum dont Debian a besoin pour fonctionner. Pourquoi ?

Principalement pour des raison de sécurité: Si une partition est corrompue, le reste du système est toujours accessible. Il suffit généralement de restaurer une sauvegarde de la partition corrompue pour régler le problème.

Mais aussi pour séparer les partitions qui risqueraient d'être submergées de fichiers (Par exemple /var pour un serveur de mail qui serait attaqué par un &quot;spamage&quot; massif...). Le reste du système serait alors toujours opérationnel.


Au minimum il est prudent de séparer la racine &quot;/&quot; des autres partitions. En cas de corruption d'une autre partition, vous pourrez toujours amorcer Linux pour réparer le système...
Vous voulez en effet pouvoir être en mesure de démarrer en &quot;Single user mode&quot; pour restaurer votre station ou serveur... Ce qui exige une racine «intacte».


La seconde difficulté (après le choix du nombre de partitions) sera de définir la taille de ces partitions... Une taille trop petite rendra rapidement votre système inutilisable. Une taille trop grande gâche de l'espace disque (qui même s'il n'est pas cher peut être utile ailleurs...)


Les remarques qui suivent sont des préconisations Debian:

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, '''une simple partition / (plus celle d'échange) est sans doute la solution la plus simple'''. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système.

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de le distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installations y déplient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.

'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.'''

N'espérer pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

 /		La racine (partition root), qui contient tous les autres répertoires
 
 Répertoire	Contenu
 
 /bin		Binaires (exécutables) des commandes essentielles
 /boot		Fichiers statiques pour le programme d'amorçage
 /dev		Fichiers des pilotes de périphériques
 /etc		Configuration système propre à la machine
 /home		Répertoires personnels des utilisateurs
 /lib		Bibliothèques partagées et modules noyaux essentiels
 /media		Points de montage pour les supports amovibles
 /mnt		Point de montage pour les montages temporaires
 /proc		Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
 /root		Répertoire personnel de l'utilisateur root
 /sbin		Exécutables système essentiels
 /sys		Répertoire virtuel pour les informations système (noyaux 2.6)
 /tmp		Fichiers temporaires
 /usr		Hiérarchie secondaire
 /var		Données variables
 /srv		Données pour les services fournis par le système
 /opt		Répertoire pour d'autres logiciels&lt;/code&gt;

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessité plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4G de swap pour pouvoir bénéficier de l'hibernation.

== Primaire et étendue ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions primaires et une partition étendue qui elle même peut contenir 11 partitions logiques (ce qui fait quand même 14 partitions... c'est le maximum).

La limitation vient du format de la table de partition dans le MBR, le premier secteur du disque. Cette limitation saute avec le nouveau format GPT (GUID Partition Table) utilisé notamment sur les machines avec firmware EFI (Extensible Firmware Interface) en remplacement du BIOS.

== Le système de fichier ==

&gt; A faire

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 20 Go (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}
| Etendue
| SWAP 1 fois et demi la Ram
|- {{ligne grise}}
| Etendue
| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GO :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 3 Go
|- {{ligne grise}}
| Etendue
| SWAP 5 Go
|- {{ligne grise}}
| Etendue
| /tmp 5 Go
|- {{ligne grise}}
| Etendue
| /usr 15 Go
|- {{ligne grise}}
| Etendue
| /var 5 Go
|- {{ligne grise}}
| Etendue
| /home 317 Go
|}

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| 
|- {{ligne grise}}
| Etendue
| 
|- {{ligne grise}}
| Etendue
| 
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>1bd09dd48ikjfd5e84xspqqdlq15zxm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2594</id>
      <parentid>2593</parentid>
      <timestamp>2010-12-28T09:12:12Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Les partitions */</comment>
      <text xml:space="preserve" bytes="15404">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===


Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.svg|left]]




Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.



Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à la carte mère). Les plus courantes actuellement sont:



- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg|80px|right]]



- Serial ATA ou SATA (Serial Advanced Technology Attachment) [[Fichier:SATA Data Cable.jpg|80px|right]]



- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg|80px|right]]

&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;

=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur destinée à accueillir un système de fichiers.

Les informations sur les partitions sont conservées sur le disque lui-même dans des zones qu'on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du premier disque ou secteur d'amorçage (Master boot record ou MBR) qui contient également le programme d'amorçage. Les tables des &quot;autres&quot; disques durs se nomment PBR.


Voici un exemple de partitionnement:

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux

Une partition primaire : sda1

Une partition étendue : sda2 qui contient elle même 5 lecteurs logiques (sda5 à sda9).

A savoir: Seules les partitions primaires peuvent contenir la partition d'amorçage du système d'exploitation Windows. Ce n'est pas le cas pour Debian dont le système d'amorçage peut très bien s'installer sur une partition étendue.

=== Généralités ===

Pourquoi partitionner ?

Vous pourriez envisager de n'avoir qu'une seule partition contenant tout votre système...
La plupart d'entre nous choisissent de créer plus de partitions que le minimum dont Debian a besoin pour fonctionner. Pourquoi ?

Principalement pour des raison de sécurité: Si une partition est corrompue, le reste du système est toujours accessible. Il suffit généralement de restaurer une sauvegarde de la partition corrompue pour régler le problème.

Mais aussi pour séparer les partitions qui risqueraient d'être submergées de fichiers (Par exemple /var pour un serveur de mail qui serait attaqué par un &quot;spamage&quot; massif...). Le reste du système serait alors toujours opérationnel.


Au minimum il est prudent de séparer la racine &quot;/&quot; des autres partitions. En cas de corruption d'une autre partition, vous pourrez toujours amorcer Linux pour réparer le système...
Vous voulez en effet pouvoir être en mesure de démarrer en &quot;Single user mode&quot; pour restaurer votre station ou serveur... Ce qui exige une racine «intacte».


La seconde difficulté (après le choix du nombre de partitions) sera de définir la taille de ces partitions... Une taille trop petite rendra rapidement votre système inutilisable. Une taille trop grande gâche de l'espace disque (qui même s'il n'est pas cher peut être utile ailleurs...)


Les remarques qui suivent sont des préconisations Debian:

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, '''une simple partition / (plus celle d'échange) est sans doute la solution la plus simple'''. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système.

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de le distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installations y déplient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.

'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.'''

N'espérer pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

 /		La racine (partition root), qui contient tous les autres répertoires
 
 Répertoire	Contenu
 
 /bin		Binaires (exécutables) des commandes essentielles
 /boot		Fichiers statiques pour le programme d'amorçage
 /dev		Fichiers des pilotes de périphériques
 /etc		Configuration système propre à la machine
 /home		Répertoires personnels des utilisateurs
 /lib		Bibliothèques partagées et modules noyaux essentiels
 /media		Points de montage pour les supports amovibles
 /mnt		Point de montage pour les montages temporaires
 /proc		Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
 /root		Répertoire personnel de l'utilisateur root
 /sbin		Exécutables système essentiels
 /sys		Répertoire virtuel pour les informations système (noyaux 2.6)
 /tmp		Fichiers temporaires
 /usr		Hiérarchie secondaire
 /var		Données variables
 /srv		Données pour les services fournis par le système
 /opt		Répertoire pour d'autres logiciels&lt;/code&gt;

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessité plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4G de swap pour pouvoir bénéficier de l'hibernation.

== Primaire et étendue ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions primaires et une partition étendue qui elle même peut contenir 11 partitions logiques (ce qui fait quand même 14 partitions... c'est le maximum).

La limitation vient du format de la table de partition dans le MBR, le premier secteur du disque. Cette limitation saute avec le nouveau format GPT (GUID Partition Table) utilisé notamment sur les machines avec firmware EFI (Extensible Firmware Interface) en remplacement du BIOS.

== Le système de fichier ==

&gt; A faire

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 20 Go (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}
| Etendue
| SWAP 1 fois et demi la Ram
|- {{ligne grise}}
| Etendue
| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GO :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 3 Go
|- {{ligne grise}}
| Etendue
| SWAP 5 Go
|- {{ligne grise}}
| Etendue
| /tmp 5 Go
|- {{ligne grise}}
| Etendue
| /usr 15 Go
|- {{ligne grise}}
| Etendue
| /var 5 Go
|- {{ligne grise}}
| Etendue
| /home 317 Go
|}

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| 
|- {{ligne grise}}
| Etendue
| 
|- {{ligne grise}}
| Etendue
| 
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>46t722yec8jbwqxcek7on9ntzjqq0vc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2595</id>
      <parentid>2594</parentid>
      <timestamp>2010-12-28T09:17:35Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Généralités */</comment>
      <text xml:space="preserve" bytes="15401">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===


Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.svg|left]]




Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.



Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à la carte mère). Les plus courantes actuellement sont:



- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg|80px|right]]



- Serial ATA ou SATA (Serial Advanced Technology Attachment) [[Fichier:SATA Data Cable.jpg|80px|right]]



- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg|80px|right]]

&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;

=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur destinée à accueillir un système de fichiers.

Les informations sur les partitions sont conservées sur le disque lui-même dans des zones qu'on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du premier disque ou secteur d'amorçage (Master boot record ou MBR) qui contient également le programme d'amorçage. Les tables des &quot;autres&quot; disques durs se nomment PBR.


Voici un exemple de partitionnement:

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux

Une partition primaire : sda1

Une partition étendue : sda2 qui contient elle même 5 lecteurs logiques (sda5 à sda9).

A savoir: Seules les partitions primaires peuvent contenir la partition d'amorçage du système d'exploitation Windows. Ce n'est pas le cas pour Debian dont le système d'amorçage peut très bien s'installer sur une partition étendue.

=== Généralités ===

Pourquoi partitionner ?

Vous pourriez envisager de n'avoir qu'une seule partition contenant tout votre système...
La plupart d'entre nous choisissent de créer plus de partitions que le minimum dont Debian a besoin pour fonctionner. Pourquoi ?

Principalement pour des raison de sécurité: Si une partition est corrompue, le reste du système est toujours accessible. Il suffit généralement de restaurer une sauvegarde de la partition corrompue pour régler le problème.

Mais aussi pour séparer les partitions qui risqueraient d'être submergées de fichiers (Par exemple /var pour un serveur de mail qui serait attaqué par un envoi massif...). Le reste du système serait alors toujours opérationnel.


Au minimum il est prudent de séparer la racine &quot;/&quot; des autres partitions. En cas de corruption d'une autre partition, vous pourrez toujours amorcer Linux pour réparer le système...
Vous voulez en effet pouvoir être en mesure de démarrer en &quot;Single user mode&quot; pour restaurer votre station ou serveur... Ce qui exige une racine «intacte».


La seconde difficulté (après le choix du nombre de partitions) sera de définir la taille de ces partitions... Une taille trop petite rendra rapidement votre système inutilisable. Une taille trop grande gâche de l'espace disque (qui même s'il n'est pas cher peut être utile ailleurs...)


Les remarques qui suivent sont des préconisations Debian:

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, '''une simple partition / (plus celle d'échange) est sans doute la solution la plus simple'''. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système.

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de le distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installations y déploient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes Linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.

'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.'''

N'espérez pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

 /		La racine (partition root), qui contient tous les autres répertoires
 
 Répertoire	Contenu
 
 /bin		Binaires (exécutables) des commandes essentielles
 /boot		Fichiers statiques pour le programme d'amorçage
 /dev		Fichiers des pilotes de périphériques
 /etc		Configuration système propre à la machine
 /home		Répertoires personnels des utilisateurs
 /lib		Bibliothèques partagées et modules noyaux essentiels
 /media		Points de montage pour les supports amovibles
 /mnt		Point de montage pour les montages temporaires
 /proc		Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
 /root		Répertoire personnel de l'utilisateur root
 /sbin		Exécutables système essentiels
 /sys		Répertoire virtuel pour les informations système (noyaux 2.6)
 /tmp		Fichiers temporaires
 /usr		Hiérarchie secondaire
 /var		Données variables
 /srv		Données pour les services fournis par le système
 /opt		Répertoire pour d'autres logiciels&lt;/code&gt;

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessité plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4G de swap pour pouvoir bénéficier de l'hibernation.

== Primaire et étendue ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions primaires et une partition étendue qui elle même peut contenir 11 partitions logiques (ce qui fait quand même 14 partitions... c'est le maximum).

La limitation vient du format de la table de partition dans le MBR, le premier secteur du disque. Cette limitation saute avec le nouveau format GPT (GUID Partition Table) utilisé notamment sur les machines avec firmware EFI (Extensible Firmware Interface) en remplacement du BIOS.

== Le système de fichier ==

&gt; A faire

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 20 Go (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}
| Etendue
| SWAP 1 fois et demi la Ram
|- {{ligne grise}}
| Etendue
| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GO :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 3 Go
|- {{ligne grise}}
| Etendue
| SWAP 5 Go
|- {{ligne grise}}
| Etendue
| /tmp 5 Go
|- {{ligne grise}}
| Etendue
| /usr 15 Go
|- {{ligne grise}}
| Etendue
| /var 5 Go
|- {{ligne grise}}
| Etendue
| /home 317 Go
|}

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| 
|- {{ligne grise}}
| Etendue
| 
|- {{ligne grise}}
| Etendue
| 
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>1llz1l0bvetmzkeg03yrch9fui07tce</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2596</id>
      <parentid>2595</parentid>
      <timestamp>2010-12-28T09:20:45Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* La partition var */</comment>
      <text xml:space="preserve" bytes="15402">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===


Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.svg|left]]




Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.



Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à la carte mère). Les plus courantes actuellement sont:



- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg|80px|right]]



- Serial ATA ou SATA (Serial Advanced Technology Attachment) [[Fichier:SATA Data Cable.jpg|80px|right]]



- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg|80px|right]]

&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;

=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur destinée à accueillir un système de fichiers.

Les informations sur les partitions sont conservées sur le disque lui-même dans des zones qu'on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du premier disque ou secteur d'amorçage (Master boot record ou MBR) qui contient également le programme d'amorçage. Les tables des &quot;autres&quot; disques durs se nomment PBR.


Voici un exemple de partitionnement:

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux

Une partition primaire : sda1

Une partition étendue : sda2 qui contient elle même 5 lecteurs logiques (sda5 à sda9).

A savoir: Seules les partitions primaires peuvent contenir la partition d'amorçage du système d'exploitation Windows. Ce n'est pas le cas pour Debian dont le système d'amorçage peut très bien s'installer sur une partition étendue.

=== Généralités ===

Pourquoi partitionner ?

Vous pourriez envisager de n'avoir qu'une seule partition contenant tout votre système...
La plupart d'entre nous choisissent de créer plus de partitions que le minimum dont Debian a besoin pour fonctionner. Pourquoi ?

Principalement pour des raison de sécurité: Si une partition est corrompue, le reste du système est toujours accessible. Il suffit généralement de restaurer une sauvegarde de la partition corrompue pour régler le problème.

Mais aussi pour séparer les partitions qui risqueraient d'être submergées de fichiers (Par exemple /var pour un serveur de mail qui serait attaqué par un envoi massif...). Le reste du système serait alors toujours opérationnel.


Au minimum il est prudent de séparer la racine &quot;/&quot; des autres partitions. En cas de corruption d'une autre partition, vous pourrez toujours amorcer Linux pour réparer le système...
Vous voulez en effet pouvoir être en mesure de démarrer en &quot;Single user mode&quot; pour restaurer votre station ou serveur... Ce qui exige une racine «intacte».


La seconde difficulté (après le choix du nombre de partitions) sera de définir la taille de ces partitions... Une taille trop petite rendra rapidement votre système inutilisable. Une taille trop grande gâche de l'espace disque (qui même s'il n'est pas cher peut être utile ailleurs...)


Les remarques qui suivent sont des préconisations Debian:

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, '''une simple partition / (plus celle d'échange) est sans doute la solution la plus simple'''. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système.

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de le distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installations y déploient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes Linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.

'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.'''

N'espérez pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

 /		La racine (partition root), qui contient tous les autres répertoires
 
 Répertoire	Contenu
 
 /bin		Binaires (exécutables) des commandes essentielles
 /boot		Fichiers statiques pour le programme d'amorçage
 /dev		Fichiers des pilotes de périphériques
 /etc		Configuration système propre à la machine
 /home		Répertoires personnels des utilisateurs
 /lib		Bibliothèques partagées et modules noyaux essentiels
 /media		Points de montage pour les supports amovibles
 /mnt		Point de montage pour les montages temporaires
 /proc		Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
 /root		Répertoire personnel de l'utilisateur root
 /sbin		Exécutables système essentiels
 /sys		Répertoire virtuel pour les informations système (noyaux 2.6)
 /tmp		Fichiers temporaires
 /usr		Hiérarchie secondaire
 /var		Données variables
 /srv		Données pour les services fournis par le système
 /opt		Répertoire pour d'autres logiciels&lt;/code&gt;

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessiter plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives)
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4G de swap pour pouvoir bénéficier de l'hibernation.

== Primaire et étendue ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions primaires et une partition étendue qui elle même peut contenir 11 partitions logiques (ce qui fait quand même 14 partitions... c'est le maximum).

La limitation vient du format de la table de partition dans le MBR, le premier secteur du disque. Cette limitation saute avec le nouveau format GPT (GUID Partition Table) utilisé notamment sur les machines avec firmware EFI (Extensible Firmware Interface) en remplacement du BIOS.

== Le système de fichier ==

&gt; A faire

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 20 Go (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}
| Etendue
| SWAP 1 fois et demi la Ram
|- {{ligne grise}}
| Etendue
| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GO :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 3 Go
|- {{ligne grise}}
| Etendue
| SWAP 5 Go
|- {{ligne grise}}
| Etendue
| /tmp 5 Go
|- {{ligne grise}}
| Etendue
| /usr 15 Go
|- {{ligne grise}}
| Etendue
| /var 5 Go
|- {{ligne grise}}
| Etendue
| /home 317 Go
|}

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| 
|- {{ligne grise}}
| Etendue
| 
|- {{ligne grise}}
| Etendue
| 
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>rq4pny18komjy1qau8856enlz5we9dv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2605</id>
      <parentid>2596</parentid>
      <timestamp>2010-12-28T13:02:06Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Généralités */</comment>
      <text xml:space="preserve" bytes="15529">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===


Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.svg|left]]




Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.



Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à la carte mère). Les plus courantes actuellement sont:



- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg|80px|right]]



- Serial ATA ou SATA (Serial Advanced Technology Attachment) [[Fichier:SATA Data Cable.jpg|80px|right]]



- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg|80px|right]]

&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;

=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur destinée à accueillir un système de fichiers.

Les informations sur les partitions sont conservées sur le disque lui-même dans des zones qu'on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du premier disque ou secteur d'amorçage (Master boot record ou MBR) qui contient également le programme d'amorçage. Les tables des &quot;autres&quot; disques durs se nomment PBR.


Voici un exemple de partitionnement:

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux

Une partition primaire : sda1

Une partition étendue : sda2 qui contient elle même 5 lecteurs logiques (sda5 à sda9).

A savoir: Seules les partitions primaires peuvent contenir la partition d'amorçage du système d'exploitation Windows. Ce n'est pas le cas pour Debian dont le système d'amorçage peut très bien s'installer sur une partition étendue.

=== Généralités ===

'''Pourquoi partitionner ?'''

Vous pourriez envisager de n'avoir qu'une seule partition contenant tout votre système...
La plupart d'entre nous choisissent de créer plus de partitions que le minimum dont Debian a besoin pour fonctionner. Pourquoi ?

'''Principalement pour des raison de sécurité''': Si une partition est corrompue, le reste du système est toujours accessible. Il suffit généralement de restaurer une sauvegarde de la partition corrompue pour régler le problème.

Mais aussi pour séparer les partitions qui risqueraient d'être submergées de fichiers (Par exemple /var pour un serveur de mail qui serait attaqué par un envoi massif...). Le reste du système serait alors toujours opérationnel.


Séparer les autres partitions de la racine &quot;/&quot; permet, en cas de corruption d'une autre partition, de toujours pouvoir amorcer Linux pour réparer le système...
Vous voulez en effet pouvoir être en mesure de démarrer en &quot;Single user mode&quot; pour restaurer votre station ou serveur... Ce qui exige une racine «intacte».


La seconde difficulté (après le choix du nombre de partitions) sera de définir la taille de ces partitions... Une taille trop petite rendra rapidement votre système inutilisable. Une taille trop grande gâche de l'espace disque (qui même s'il n'est pas cher peut être utile ailleurs...)


Les remarques qui suivent sont des préconisations Debian:

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, une simple partition / (plus celle d'échange) est sans doute la solution la plus simple. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système. '''Il est donc donc généralement conseillé, en plus de la partition d'échange (swap) de créer une partition / ET une partition /home'''.

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de le distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installations y déploient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes Linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.

'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.'''

N'espérez pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

 /		La racine (partition root), qui contient tous les autres répertoires
 
 Répertoire	Contenu
 
 /bin		Binaires (exécutables) des commandes essentielles
 /boot		Fichiers statiques pour le programme d'amorçage
 /dev		Fichiers des pilotes de périphériques
 /etc		Configuration système propre à la machine
 /home		Répertoires personnels des utilisateurs
 /lib		Bibliothèques partagées et modules noyaux essentiels
 /media		Points de montage pour les supports amovibles
 /mnt		Point de montage pour les montages temporaires
 /proc		Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
 /root		Répertoire personnel de l'utilisateur root
 /sbin		Exécutables système essentiels
 /sys		Répertoire virtuel pour les informations système (noyaux 2.6)
 /tmp		Fichiers temporaires
 /usr		Hiérarchie secondaire
 /var		Données variables
 /srv		Données pour les services fournis par le système
 /opt		Répertoire pour d'autres logiciels&lt;/code&gt;

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessiter plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives)
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4G de swap pour pouvoir bénéficier de l'hibernation.

== Primaire et étendue ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions primaires et une partition étendue qui elle même peut contenir 11 partitions logiques (ce qui fait quand même 14 partitions... c'est le maximum).

La limitation vient du format de la table de partition dans le MBR, le premier secteur du disque. Cette limitation saute avec le nouveau format GPT (GUID Partition Table) utilisé notamment sur les machines avec firmware EFI (Extensible Firmware Interface) en remplacement du BIOS.

== Le système de fichier ==

&gt; A faire

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 20 Go (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}
| Etendue
| SWAP 1 fois et demi la Ram
|- {{ligne grise}}
| Etendue
| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GO :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 3 Go
|- {{ligne grise}}
| Etendue
| SWAP 5 Go
|- {{ligne grise}}
| Etendue
| /tmp 5 Go
|- {{ligne grise}}
| Etendue
| /usr 15 Go
|- {{ligne grise}}
| Etendue
| /var 5 Go
|- {{ligne grise}}
| Etendue
| /home 317 Go
|}

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| 
|- {{ligne grise}}
| Etendue
| 
|- {{ligne grise}}
| Etendue
| 
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>2v2dqjwrpfslte1r4oo4ahi5nopqcs4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2606</id>
      <parentid>2605</parentid>
      <timestamp>2010-12-28T13:05:31Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Généralités */</comment>
      <text xml:space="preserve" bytes="15602">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===


Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.svg|left]]




Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.



Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à la carte mère). Les plus courantes actuellement sont:



- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg|80px|right]]



- Serial ATA ou SATA (Serial Advanced Technology Attachment) [[Fichier:SATA Data Cable.jpg|80px|right]]



- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg|80px|right]]

&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;

=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur destinée à accueillir un système de fichiers.

Les informations sur les partitions sont conservées sur le disque lui-même dans des zones qu'on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du premier disque ou secteur d'amorçage (Master boot record ou MBR) qui contient également le programme d'amorçage. Les tables des &quot;autres&quot; disques durs se nomment PBR.


Voici un exemple de partitionnement:

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux

Une partition primaire : sda1

Une partition étendue : sda2 qui contient elle même 5 lecteurs logiques (sda5 à sda9).

A savoir: Seules les partitions primaires peuvent contenir la partition d'amorçage du système d'exploitation Windows. Ce n'est pas le cas pour Debian dont le système d'amorçage peut très bien s'installer sur une partition étendue.

=== Généralités ===

'''Pourquoi partitionner ?'''

Vous pourriez envisager de n'avoir qu'une seule partition contenant tout votre système...
La plupart d'entre nous choisissent de créer plus de partitions que le minimum dont Debian a besoin pour fonctionner. Pourquoi ?

'''Principalement pour des raison de sécurité''': Si une partition est corrompue, le reste du système est toujours accessible. Il suffit généralement de restaurer une sauvegarde de la partition corrompue pour régler le problème.

Mais aussi pour séparer les partitions qui risqueraient d'être submergées de fichiers (Par exemple /var pour un serveur de mail qui serait attaqué par un envoi massif...). Le reste du système serait alors toujours opérationnel.


Séparer les autres partitions de la racine &quot;/&quot; permet, en cas de corruption d'une autre partition, de toujours pouvoir amorcer Linux pour réparer le système...
Vous voulez en effet pouvoir être en mesure de démarrer en &quot;Single user mode&quot; pour restaurer votre station ou serveur... Ce qui exige une racine «intacte».


La seconde difficulté (après le choix du nombre de partitions) sera de définir la taille de ces partitions... Une taille trop petite rendra rapidement votre système inutilisable. Une taille trop grande gâche de l'espace disque (qui même s'il n'est pas cher peut être utile ailleurs...)


Les remarques qui suivent sont des préconisations Debian:

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, une simple partition / (plus celle d'échange) est sans doute la solution la plus simple. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système. '''Il est donc donc généralement conseillé, en plus de la partition d'échange (swap) de créer une partition / ET une partition /home'''.

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de le distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installations y déploient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes Linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.


'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.''' et, dixit MisterFreeze, « de la religion de l'administrateur »... ;-)

N'espérez pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

 /		La racine (partition root), qui contient tous les autres répertoires
 
 Répertoire	Contenu
 
 /bin		Binaires (exécutables) des commandes essentielles
 /boot		Fichiers statiques pour le programme d'amorçage
 /dev		Fichiers des pilotes de périphériques
 /etc		Configuration système propre à la machine
 /home		Répertoires personnels des utilisateurs
 /lib		Bibliothèques partagées et modules noyaux essentiels
 /media		Points de montage pour les supports amovibles
 /mnt		Point de montage pour les montages temporaires
 /proc		Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
 /root		Répertoire personnel de l'utilisateur root
 /sbin		Exécutables système essentiels
 /sys		Répertoire virtuel pour les informations système (noyaux 2.6)
 /tmp		Fichiers temporaires
 /usr		Hiérarchie secondaire
 /var		Données variables
 /srv		Données pour les services fournis par le système
 /opt		Répertoire pour d'autres logiciels&lt;/code&gt;

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessiter plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives)
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4G de swap pour pouvoir bénéficier de l'hibernation.

== Primaire et étendue ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions primaires et une partition étendue qui elle même peut contenir 11 partitions logiques (ce qui fait quand même 14 partitions... c'est le maximum).

La limitation vient du format de la table de partition dans le MBR, le premier secteur du disque. Cette limitation saute avec le nouveau format GPT (GUID Partition Table) utilisé notamment sur les machines avec firmware EFI (Extensible Firmware Interface) en remplacement du BIOS.

== Le système de fichier ==

&gt; A faire

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 20 Go (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}
| Etendue
| SWAP 1 fois et demi la Ram
|- {{ligne grise}}
| Etendue
| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GO :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 3 Go
|- {{ligne grise}}
| Etendue
| SWAP 5 Go
|- {{ligne grise}}
| Etendue
| /tmp 5 Go
|- {{ligne grise}}
| Etendue
| /usr 15 Go
|- {{ligne grise}}
| Etendue
| /var 5 Go
|- {{ligne grise}}
| Etendue
| /home 317 Go
|}

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| 
|- {{ligne grise}}
| Etendue
| 
|- {{ligne grise}}
| Etendue
| 
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>aomdhpgos92z2dojej7harwv41bpnrf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2607</id>
      <parentid>2606</parentid>
      <timestamp>2010-12-28T13:35:47Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Exemples de partitionnements */</comment>
      <text xml:space="preserve" bytes="16006">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===


Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.svg|left]]




Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.



Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à la carte mère). Les plus courantes actuellement sont:



- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg|80px|right]]



- Serial ATA ou SATA (Serial Advanced Technology Attachment) [[Fichier:SATA Data Cable.jpg|80px|right]]



- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg|80px|right]]

&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;

=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur destinée à accueillir un système de fichiers.

Les informations sur les partitions sont conservées sur le disque lui-même dans des zones qu'on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du premier disque ou secteur d'amorçage (Master boot record ou MBR) qui contient également le programme d'amorçage. Les tables des &quot;autres&quot; disques durs se nomment PBR.


Voici un exemple de partitionnement:

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux

Une partition primaire : sda1

Une partition étendue : sda2 qui contient elle même 5 lecteurs logiques (sda5 à sda9).

A savoir: Seules les partitions primaires peuvent contenir la partition d'amorçage du système d'exploitation Windows. Ce n'est pas le cas pour Debian dont le système d'amorçage peut très bien s'installer sur une partition étendue.

=== Généralités ===

'''Pourquoi partitionner ?'''

Vous pourriez envisager de n'avoir qu'une seule partition contenant tout votre système...
La plupart d'entre nous choisissent de créer plus de partitions que le minimum dont Debian a besoin pour fonctionner. Pourquoi ?

'''Principalement pour des raison de sécurité''': Si une partition est corrompue, le reste du système est toujours accessible. Il suffit généralement de restaurer une sauvegarde de la partition corrompue pour régler le problème.

Mais aussi pour séparer les partitions qui risqueraient d'être submergées de fichiers (Par exemple /var pour un serveur de mail qui serait attaqué par un envoi massif...). Le reste du système serait alors toujours opérationnel.


Séparer les autres partitions de la racine &quot;/&quot; permet, en cas de corruption d'une autre partition, de toujours pouvoir amorcer Linux pour réparer le système...
Vous voulez en effet pouvoir être en mesure de démarrer en &quot;Single user mode&quot; pour restaurer votre station ou serveur... Ce qui exige une racine «intacte».


La seconde difficulté (après le choix du nombre de partitions) sera de définir la taille de ces partitions... Une taille trop petite rendra rapidement votre système inutilisable. Une taille trop grande gâche de l'espace disque (qui même s'il n'est pas cher peut être utile ailleurs...)


Les remarques qui suivent sont des préconisations Debian:

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, une simple partition / (plus celle d'échange) est sans doute la solution la plus simple. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système. '''Il est donc donc généralement conseillé, en plus de la partition d'échange (swap) de créer une partition / ET une partition /home'''.

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de le distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installations y déploient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes Linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.


'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.''' et, dixit MisterFreeze, « de la religion de l'administrateur »... ;-)

N'espérez pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

 /		La racine (partition root), qui contient tous les autres répertoires
 
 Répertoire	Contenu
 
 /bin		Binaires (exécutables) des commandes essentielles
 /boot		Fichiers statiques pour le programme d'amorçage
 /dev		Fichiers des pilotes de périphériques
 /etc		Configuration système propre à la machine
 /home		Répertoires personnels des utilisateurs
 /lib		Bibliothèques partagées et modules noyaux essentiels
 /media		Points de montage pour les supports amovibles
 /mnt		Point de montage pour les montages temporaires
 /proc		Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
 /root		Répertoire personnel de l'utilisateur root
 /sbin		Exécutables système essentiels
 /sys		Répertoire virtuel pour les informations système (noyaux 2.6)
 /tmp		Fichiers temporaires
 /usr		Hiérarchie secondaire
 /var		Données variables
 /srv		Données pour les services fournis par le système
 /opt		Répertoire pour d'autres logiciels&lt;/code&gt;

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessiter plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives)
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4G de swap pour pouvoir bénéficier de l'hibernation.

== Primaire et étendue ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions primaires et une partition étendue qui elle même peut contenir 11 partitions logiques (ce qui fait quand même 14 partitions... c'est le maximum).

La limitation vient du format de la table de partition dans le MBR, le premier secteur du disque. Cette limitation saute avec le nouveau format GPT (GUID Partition Table) utilisé notamment sur les machines avec firmware EFI (Extensible Firmware Interface) en remplacement du BIOS.

== Le système de fichier ==

&gt; A faire

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 20 GB (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}
| Etendue
| SWAP 1 fois et demi la Ram
|- {{ligne grise}}
| Etendue
| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GB :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 3 GB
|- {{ligne grise}}
| Etendue
| SWAP 5 GB
|- {{ligne grise}}
| Etendue
| /tmp 5 GB
|- {{ligne grise}}
| Etendue
| /usr 15 GB
|- {{ligne grise}}
| Etendue
| /var 5 GB
|- {{ligne grise}}
| Etendue
| /home 317 GB
|}


Pour un serveur, avec 2 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 100 GO :

(Serveur de mail, quelques bases SQL, Serveur Web, un home limité, pour quelques utilisateurs sftp)

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 350 MB
|- {{ligne grise}}
| Etendue
| /boot 50 MB
|- {{ligne grise}}
| Etendue
| /usr 10 GB
|- {{ligne grise}}
| Etendue
| /var 70 GB
|- {{ligne grise}}
| Etendue
| SWAP 4 GB
|- {{ligne grise}}
| Etendue
| /tmp 10 GB
|- {{ligne grise}}
| Etendue
| /home 5,6 GB
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>als4x4428ynewgjdtyu2e9e6a302knz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2608</id>
      <parentid>2607</parentid>
      <timestamp>2010-12-28T13:36:45Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Exemples de partitionnements */</comment>
      <text xml:space="preserve" bytes="16006">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===


Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.svg|left]]




Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.



Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à la carte mère). Les plus courantes actuellement sont:



- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg|80px|right]]



- Serial ATA ou SATA (Serial Advanced Technology Attachment) [[Fichier:SATA Data Cable.jpg|80px|right]]



- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg|80px|right]]

&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;

=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur destinée à accueillir un système de fichiers.

Les informations sur les partitions sont conservées sur le disque lui-même dans des zones qu'on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du premier disque ou secteur d'amorçage (Master boot record ou MBR) qui contient également le programme d'amorçage. Les tables des &quot;autres&quot; disques durs se nomment PBR.


Voici un exemple de partitionnement:

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux

Une partition primaire : sda1

Une partition étendue : sda2 qui contient elle même 5 lecteurs logiques (sda5 à sda9).

A savoir: Seules les partitions primaires peuvent contenir la partition d'amorçage du système d'exploitation Windows. Ce n'est pas le cas pour Debian dont le système d'amorçage peut très bien s'installer sur une partition étendue.

=== Généralités ===

'''Pourquoi partitionner ?'''

Vous pourriez envisager de n'avoir qu'une seule partition contenant tout votre système...
La plupart d'entre nous choisissent de créer plus de partitions que le minimum dont Debian a besoin pour fonctionner. Pourquoi ?

'''Principalement pour des raison de sécurité''': Si une partition est corrompue, le reste du système est toujours accessible. Il suffit généralement de restaurer une sauvegarde de la partition corrompue pour régler le problème.

Mais aussi pour séparer les partitions qui risqueraient d'être submergées de fichiers (Par exemple /var pour un serveur de mail qui serait attaqué par un envoi massif...). Le reste du système serait alors toujours opérationnel.


Séparer les autres partitions de la racine &quot;/&quot; permet, en cas de corruption d'une autre partition, de toujours pouvoir amorcer Linux pour réparer le système...
Vous voulez en effet pouvoir être en mesure de démarrer en &quot;Single user mode&quot; pour restaurer votre station ou serveur... Ce qui exige une racine «intacte».


La seconde difficulté (après le choix du nombre de partitions) sera de définir la taille de ces partitions... Une taille trop petite rendra rapidement votre système inutilisable. Une taille trop grande gâche de l'espace disque (qui même s'il n'est pas cher peut être utile ailleurs...)


Les remarques qui suivent sont des préconisations Debian:

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, une simple partition / (plus celle d'échange) est sans doute la solution la plus simple. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système. '''Il est donc donc généralement conseillé, en plus de la partition d'échange (swap) de créer une partition / ET une partition /home'''.

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de le distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installations y déploient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes Linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.


'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.''' et, dixit MisterFreeze, « de la religion de l'administrateur »... ;-)

N'espérez pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

 /		La racine (partition root), qui contient tous les autres répertoires
 
 Répertoire	Contenu
 
 /bin		Binaires (exécutables) des commandes essentielles
 /boot		Fichiers statiques pour le programme d'amorçage
 /dev		Fichiers des pilotes de périphériques
 /etc		Configuration système propre à la machine
 /home		Répertoires personnels des utilisateurs
 /lib		Bibliothèques partagées et modules noyaux essentiels
 /media		Points de montage pour les supports amovibles
 /mnt		Point de montage pour les montages temporaires
 /proc		Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
 /root		Répertoire personnel de l'utilisateur root
 /sbin		Exécutables système essentiels
 /sys		Répertoire virtuel pour les informations système (noyaux 2.6)
 /tmp		Fichiers temporaires
 /usr		Hiérarchie secondaire
 /var		Données variables
 /srv		Données pour les services fournis par le système
 /opt		Répertoire pour d'autres logiciels&lt;/code&gt;

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessiter plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives)
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4G de swap pour pouvoir bénéficier de l'hibernation.

== Primaire et étendue ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions primaires et une partition étendue qui elle même peut contenir 11 partitions logiques (ce qui fait quand même 14 partitions... c'est le maximum).

La limitation vient du format de la table de partition dans le MBR, le premier secteur du disque. Cette limitation saute avec le nouveau format GPT (GUID Partition Table) utilisé notamment sur les machines avec firmware EFI (Extensible Firmware Interface) en remplacement du BIOS.

== Le système de fichier ==

&gt; A faire

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 20 GB (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}
| Etendue
| SWAP 1 fois et demi la Ram
|- {{ligne grise}}
| Etendue
| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GB :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 3 GB
|- {{ligne grise}}
| Etendue
| SWAP 5 GB
|- {{ligne grise}}
| Etendue
| /tmp 5 GB
|- {{ligne grise}}
| Etendue
| /usr 15 GB
|- {{ligne grise}}
| Etendue
| /var 5 GB
|- {{ligne grise}}
| Etendue
| /home 317 GB
|}


Pour un serveur, avec 2 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 100 GB :

(Serveur de mail, quelques bases SQL, Serveur Web, un home limité, pour quelques utilisateurs sftp)

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 350 MB
|- {{ligne grise}}
| Etendue
| /boot 50 MB
|- {{ligne grise}}
| Etendue
| /usr 10 GB
|- {{ligne grise}}
| Etendue
| /var 70 GB
|- {{ligne grise}}
| Etendue
| SWAP 4 GB
|- {{ligne grise}}
| Etendue
| /tmp 10 GB
|- {{ligne grise}}
| Etendue
| /home 5,6 GB
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>d7yozxj88evaunan06da1hwe4cgeh2j</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2609</id>
      <parentid>2608</parentid>
      <timestamp>2010-12-28T14:08:33Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* L'organisation des répertoires */</comment>
      <text xml:space="preserve" bytes="16482">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===


Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.svg|left]]




Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.



Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à la carte mère). Les plus courantes actuellement sont:



- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg|80px|right]]



- Serial ATA ou SATA (Serial Advanced Technology Attachment) [[Fichier:SATA Data Cable.jpg|80px|right]]



- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg|80px|right]]

&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;

=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur destinée à accueillir un système de fichiers.

Les informations sur les partitions sont conservées sur le disque lui-même dans des zones qu'on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du premier disque ou secteur d'amorçage (Master boot record ou MBR) qui contient également le programme d'amorçage. Les tables des &quot;autres&quot; disques durs se nomment PBR.


Voici un exemple de partitionnement:

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux

Une partition primaire : sda1

Une partition étendue : sda2 qui contient elle même 5 lecteurs logiques (sda5 à sda9).

A savoir: Seules les partitions primaires peuvent contenir la partition d'amorçage du système d'exploitation Windows. Ce n'est pas le cas pour Debian dont le système d'amorçage peut très bien s'installer sur une partition étendue.

=== Généralités ===

'''Pourquoi partitionner ?'''

Vous pourriez envisager de n'avoir qu'une seule partition contenant tout votre système...
La plupart d'entre nous choisissent de créer plus de partitions que le minimum dont Debian a besoin pour fonctionner. Pourquoi ?

'''Principalement pour des raison de sécurité''': Si une partition est corrompue, le reste du système est toujours accessible. Il suffit généralement de restaurer une sauvegarde de la partition corrompue pour régler le problème.

Mais aussi pour séparer les partitions qui risqueraient d'être submergées de fichiers (Par exemple /var pour un serveur de mail qui serait attaqué par un envoi massif...). Le reste du système serait alors toujours opérationnel.


Séparer les autres partitions de la racine &quot;/&quot; permet, en cas de corruption d'une autre partition, de toujours pouvoir amorcer Linux pour réparer le système...
Vous voulez en effet pouvoir être en mesure de démarrer en &quot;Single user mode&quot; pour restaurer votre station ou serveur... Ce qui exige une racine «intacte».


La seconde difficulté (après le choix du nombre de partitions) sera de définir la taille de ces partitions... Une taille trop petite rendra rapidement votre système inutilisable. Une taille trop grande gâche de l'espace disque (qui même s'il n'est pas cher peut être utile ailleurs...)


Les remarques qui suivent sont des préconisations Debian:

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, une simple partition / (plus celle d'échange) est sans doute la solution la plus simple. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système. '''Il est donc donc généralement conseillé, en plus de la partition d'échange (swap) de créer une partition / ET une partition /home'''.

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de le distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installations y déploient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes Linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.


'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.''' et, dixit MisterFreeze, « de la religion de l'administrateur »... ;-)

N'espérez pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;15%&quot;| Répertoire
! Contenu
|-{{ligne grise}}
| /
| La racine (partition root), qui contient tous les autres répertoires
|}

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;15%&quot;| Répertoire
! Contenu
|-{{ligne grise}}
| /bin
| Binaires (exécutables) des commandes essentielles
|-{{ligne grise}}
| /boot
| Fichiers statiques pour le programme d'amorçage
|-{{ligne grise}}
| /dev
| Fichiers des pilotes de périphériques
|-{{ligne grise}}
| /etc
| Configuration système propre à la machine
|-{{ligne grise}}
| /home
| Répertoires personnels des utilisateurs
|-{{ligne grise}}
| /lib
| Bibliothèques partagées et modules noyaux essentiels
|-{{ligne grise}}
| /media
| Points de montage pour les supports amovibles
|-{{ligne grise}}
| /mnt
| Point de montage pour les montages temporaires
|-{{ligne grise}}
| /proc
| Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
|-{{ligne grise}}
| /root
| Répertoire personnel de l'utilisateur root
|-{{ligne grise}}
| /sbin
| Exécutables système essentiels
|-{{ligne grise}}
| /sys
| Répertoire virtuel pour les informations système (noyaux 2.6)
|-{{ligne grise}}
| /tmp
| Fichiers temporaires
|-{{ligne grise}}
| /usr
| Hiérarchie secondaire
|-{{ligne grise}}
| /var
| Données variables
|-{{ligne grise}}
| /srv
| Données pour les services fournis par le système
|-{{ligne grise}}
| /opt
| Répertoire pour d'autres logiciels
|}


Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessiter plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives)
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4G de swap pour pouvoir bénéficier de l'hibernation.

== Primaire et étendue ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions primaires et une partition étendue qui elle même peut contenir 11 partitions logiques (ce qui fait quand même 14 partitions... c'est le maximum).

La limitation vient du format de la table de partition dans le MBR, le premier secteur du disque. Cette limitation saute avec le nouveau format GPT (GUID Partition Table) utilisé notamment sur les machines avec firmware EFI (Extensible Firmware Interface) en remplacement du BIOS.

== Le système de fichier ==

&gt; A faire

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 20 GB (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}
| Etendue
| SWAP 1 fois et demi la Ram
|- {{ligne grise}}
| Etendue
| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GB :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 3 GB
|- {{ligne grise}}
| Etendue
| SWAP 5 GB
|- {{ligne grise}}
| Etendue
| /tmp 5 GB
|- {{ligne grise}}
| Etendue
| /usr 15 GB
|- {{ligne grise}}
| Etendue
| /var 5 GB
|- {{ligne grise}}
| Etendue
| /home 317 GB
|}


Pour un serveur, avec 2 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 100 GB :

(Serveur de mail, quelques bases SQL, Serveur Web, un home limité, pour quelques utilisateurs sftp)

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 350 MB
|- {{ligne grise}}
| Etendue
| /boot 50 MB
|- {{ligne grise}}
| Etendue
| /usr 10 GB
|- {{ligne grise}}
| Etendue
| /var 70 GB
|- {{ligne grise}}
| Etendue
| SWAP 4 GB
|- {{ligne grise}}
| Etendue
| /tmp 10 GB
|- {{ligne grise}}
| Etendue
| /home 5,6 GB
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>667wonkw0n8c9k3jsexdg9ux6kykte8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2612</id>
      <parentid>2609</parentid>
      <timestamp>2010-12-29T08:41:50Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Généralités */</comment>
      <text xml:space="preserve" bytes="16523">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===

&lt;br&gt;Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.jpeg|left]]&lt;br&gt;&lt;br&gt;&lt;br&gt;

Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.&lt;br&gt;&lt;br&gt;

Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à la carte mère). Les plus courantes actuellement sont:&lt;br&gt;&lt;br&gt;

- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg|80px|right]]&lt;br&gt;&lt;br&gt;

- Serial ATA ou SATA (Serial Advanced Technology Attachment) [[Fichier:SATA Data Cable.jpg|80px|right]]&lt;br&gt;&lt;br&gt;

- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg|80px|right]]

&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;

=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur destinée à accueillir un système de fichiers.

Les informations sur les partitions sont conservées sur le disque lui-même dans des zones qu'on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du premier disque ou secteur d'amorçage (Master boot record ou MBR) qui contient également le programme d'amorçage. Les tables des &quot;autres&quot; disques durs se nomment PBR.


Voici un exemple de partitionnement:

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux

Une partition primaire : sda1

Une partition étendue : sda2 qui contient elle même 5 lecteurs logiques (sda5 à sda9).

A savoir: Seules les partitions primaires peuvent contenir la partition d'amorçage du système d'exploitation Windows. Ce n'est pas le cas pour Debian dont le système d'amorçage peut très bien s'installer sur une partition étendue.

=== Généralités ===

'''Pourquoi partitionner ?'''

Vous pourriez envisager de n'avoir qu'une seule partition contenant tout votre système...
La plupart d'entre nous choisissent de créer plus de partitions que le minimum dont Debian a besoin pour fonctionner. Pourquoi ?

'''Principalement pour des raison de sécurité''': Si une partition est corrompue, le reste du système est toujours accessible. Il suffit généralement de restaurer une sauvegarde de la partition corrompue pour régler le problème.

Mais aussi pour séparer les partitions qui risqueraient d'être submergées de fichiers (Par exemple /var pour un serveur de mail qui serait attaqué par un envoi massif...). Le reste du système serait alors toujours opérationnel.


Séparer les autres partitions de la racine &quot;/&quot; permet, en cas de corruption d'une autre partition, de toujours pouvoir amorcer Linux pour réparer le système...
Vous voulez en effet pouvoir être en mesure de démarrer en &quot;Single user mode&quot; pour restaurer votre station ou serveur... Ce qui exige une racine «intacte».


La seconde difficulté (après le choix du nombre de partitions) sera de définir la taille de ces partitions... Une taille trop petite rendra rapidement votre système inutilisable. Une taille trop grande gâche de l'espace disque (qui même s'il n'est pas cher peut être utile ailleurs...)


Les remarques qui suivent sont des préconisations Debian:

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, une simple partition / (plus celle d'échange) est sans doute la solution la plus simple. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système. '''Il est donc donc généralement conseillé, en plus de la partition d'échange (swap) de créer une partition / ET une partition /home'''.

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de le distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installations y déploient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes Linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.


'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.''' et, dixit MisterFreeze, « de la religion de l'administrateur »... ;-)

N'espérez pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;15%&quot;| Répertoire
! Contenu
|-{{ligne grise}}
| /
| La racine (partition root), qui contient tous les autres répertoires
|}

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;15%&quot;| Répertoire
! Contenu
|-{{ligne grise}}
| /bin
| Binaires (exécutables) des commandes essentielles
|-{{ligne grise}}
| /boot
| Fichiers statiques pour le programme d'amorçage
|-{{ligne grise}}
| /dev
| Fichiers des pilotes de périphériques
|-{{ligne grise}}
| /etc
| Configuration système propre à la machine
|-{{ligne grise}}
| /home
| Répertoires personnels des utilisateurs
|-{{ligne grise}}
| /lib
| Bibliothèques partagées et modules noyaux essentiels
|-{{ligne grise}}
| /media
| Points de montage pour les supports amovibles
|-{{ligne grise}}
| /mnt
| Point de montage pour les montages temporaires
|-{{ligne grise}}
| /proc
| Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
|-{{ligne grise}}
| /root
| Répertoire personnel de l'utilisateur root
|-{{ligne grise}}
| /sbin
| Exécutables système essentiels
|-{{ligne grise}}
| /sys
| Répertoire virtuel pour les informations système (noyaux 2.6)
|-{{ligne grise}}
| /tmp
| Fichiers temporaires
|-{{ligne grise}}
| /usr
| Hiérarchie secondaire
|-{{ligne grise}}
| /var
| Données variables
|-{{ligne grise}}
| /srv
| Données pour les services fournis par le système
|-{{ligne grise}}
| /opt
| Répertoire pour d'autres logiciels
|}


Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessiter plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives)
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4G de swap pour pouvoir bénéficier de l'hibernation.

== Primaire et étendue ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions primaires et une partition étendue qui elle même peut contenir 11 partitions logiques (ce qui fait quand même 14 partitions... c'est le maximum).

La limitation vient du format de la table de partition dans le MBR, le premier secteur du disque. Cette limitation saute avec le nouveau format GPT (GUID Partition Table) utilisé notamment sur les machines avec firmware EFI (Extensible Firmware Interface) en remplacement du BIOS.

== Le système de fichier ==

&gt; A faire

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 20 GB (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}
| Etendue
| SWAP 1 fois et demi la Ram
|- {{ligne grise}}
| Etendue
| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GB :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 3 GB
|- {{ligne grise}}
| Etendue
| SWAP 5 GB
|- {{ligne grise}}
| Etendue
| /tmp 5 GB
|- {{ligne grise}}
| Etendue
| /usr 15 GB
|- {{ligne grise}}
| Etendue
| /var 5 GB
|- {{ligne grise}}
| Etendue
| /home 317 GB
|}


Pour un serveur, avec 2 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 100 GB :

(Serveur de mail, quelques bases SQL, Serveur Web, un home limité, pour quelques utilisateurs sftp)

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 350 MB
|- {{ligne grise}}
| Etendue
| /boot 50 MB
|- {{ligne grise}}
| Etendue
| /usr 10 GB
|- {{ligne grise}}
| Etendue
| /var 70 GB
|- {{ligne grise}}
| Etendue
| SWAP 4 GB
|- {{ligne grise}}
| Etendue
| /tmp 10 GB
|- {{ligne grise}}
| Etendue
| /home 5,6 GB
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>f3szfcon8cf2cwa1o50du9dx6040jrm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2614</id>
      <parentid>2612</parentid>
      <timestamp>2010-12-29T12:24:59Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Le système de fichier */</comment>
      <text xml:space="preserve" bytes="20586">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===

&lt;br&gt;Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.jpeg|left]]&lt;br&gt;&lt;br&gt;&lt;br&gt;

Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.&lt;br&gt;&lt;br&gt;

Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à la carte mère). Les plus courantes actuellement sont:&lt;br&gt;&lt;br&gt;

- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg|80px|right]]&lt;br&gt;&lt;br&gt;

- Serial ATA ou SATA (Serial Advanced Technology Attachment) [[Fichier:SATA Data Cable.jpg|80px|right]]&lt;br&gt;&lt;br&gt;

- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg|80px|right]]

&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;

=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur destinée à accueillir un système de fichiers.

Les informations sur les partitions sont conservées sur le disque lui-même dans des zones qu'on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du premier disque ou secteur d'amorçage (Master boot record ou MBR) qui contient également le programme d'amorçage. Les tables des &quot;autres&quot; disques durs se nomment PBR.


Voici un exemple de partitionnement:

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux

Une partition primaire : sda1

Une partition étendue : sda2 qui contient elle même 5 lecteurs logiques (sda5 à sda9).

A savoir: Seules les partitions primaires peuvent contenir la partition d'amorçage du système d'exploitation Windows. Ce n'est pas le cas pour Debian dont le système d'amorçage peut très bien s'installer sur une partition étendue.

=== Généralités ===

'''Pourquoi partitionner ?'''

Vous pourriez envisager de n'avoir qu'une seule partition contenant tout votre système...
La plupart d'entre nous choisissent de créer plus de partitions que le minimum dont Debian a besoin pour fonctionner. Pourquoi ?

'''Principalement pour des raison de sécurité''': Si une partition est corrompue, le reste du système est toujours accessible. Il suffit généralement de restaurer une sauvegarde de la partition corrompue pour régler le problème.

Mais aussi pour séparer les partitions qui risqueraient d'être submergées de fichiers (Par exemple /var pour un serveur de mail qui serait attaqué par un envoi massif...). Le reste du système serait alors toujours opérationnel.


Séparer les autres partitions de la racine &quot;/&quot; permet, en cas de corruption d'une autre partition, de toujours pouvoir amorcer Linux pour réparer le système...
Vous voulez en effet pouvoir être en mesure de démarrer en &quot;Single user mode&quot; pour restaurer votre station ou serveur... Ce qui exige une racine «intacte».


La seconde difficulté (après le choix du nombre de partitions) sera de définir la taille de ces partitions... Une taille trop petite rendra rapidement votre système inutilisable. Une taille trop grande gâche de l'espace disque (qui même s'il n'est pas cher peut être utile ailleurs...)


Les remarques qui suivent sont des préconisations Debian:

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, une simple partition / (plus celle d'échange) est sans doute la solution la plus simple. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système. '''Il est donc donc généralement conseillé, en plus de la partition d'échange (swap) de créer une partition / ET une partition /home'''.

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de le distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installations y déploient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes Linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.


'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.''' et, dixit MisterFreeze, « de la religion de l'administrateur »... ;-)

N'espérez pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;15%&quot;| Répertoire
! Contenu
|-{{ligne grise}}
| /
| La racine (partition root), qui contient tous les autres répertoires
|}

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;15%&quot;| Répertoire
! Contenu
|-{{ligne grise}}
| /bin
| Binaires (exécutables) des commandes essentielles
|-{{ligne grise}}
| /boot
| Fichiers statiques pour le programme d'amorçage
|-{{ligne grise}}
| /dev
| Fichiers des pilotes de périphériques
|-{{ligne grise}}
| /etc
| Configuration système propre à la machine
|-{{ligne grise}}
| /home
| Répertoires personnels des utilisateurs
|-{{ligne grise}}
| /lib
| Bibliothèques partagées et modules noyaux essentiels
|-{{ligne grise}}
| /media
| Points de montage pour les supports amovibles
|-{{ligne grise}}
| /mnt
| Point de montage pour les montages temporaires
|-{{ligne grise}}
| /proc
| Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
|-{{ligne grise}}
| /root
| Répertoire personnel de l'utilisateur root
|-{{ligne grise}}
| /sbin
| Exécutables système essentiels
|-{{ligne grise}}
| /sys
| Répertoire virtuel pour les informations système (noyaux 2.6)
|-{{ligne grise}}
| /tmp
| Fichiers temporaires
|-{{ligne grise}}
| /usr
| Hiérarchie secondaire
|-{{ligne grise}}
| /var
| Données variables
|-{{ligne grise}}
| /srv
| Données pour les services fournis par le système
|-{{ligne grise}}
| /opt
| Répertoire pour d'autres logiciels
|}


Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessiter plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives)
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4G de swap pour pouvoir bénéficier de l'hibernation.

== Primaire et étendue ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions primaires et une partition étendue qui elle même peut contenir 11 partitions logiques (ce qui fait quand même 14 partitions... c'est le maximum).

La limitation vient du format de la table de partition dans le MBR, le premier secteur du disque. Cette limitation saute avec le nouveau format GPT (GUID Partition Table) utilisé notamment sur les machines avec firmware EFI (Extensible Firmware Interface) en remplacement du BIOS.

== Le système de fichier ==

Le système de fichier

Un système de fichiers (file system ou filesystem en anglais) ou système de gestion de fichiers (SGF) est une façon de stocker les informations et de les organiser dans des fichiers sur les supports de stockage.

Le système de fichier proposé par défaut par l'installeur de Debian est '''Ext3''' (Extented FS version 3). Ext3 (sorti en 1999) est une évolution de '''Ext2''', le précédent système de fichiers utilisé par défaut par Debian depuis 1993.

Les Ext? sont des systèmes de fichiers batis sur la même structure mais avec des fonctionnalités rajoutés (journaux) et des algorithmes (d'allocation de blocs par exemple) différents suivant les versions.

Ext3 alloue les blocs libres juste à côté des autres blocs utilisés par le fichier, ce qui a pour effet de minimiser l'espace physique entre les blocs (limitant la fragmentation).

'''Ext4''' (sorti en 2006) est le successeur du système de fichiers ext3, principalement destiné aux systèmes basés sur GNU/Linux. Il est disponible à l'installation depuis Squeeze.

Il garde une compatibilité avec son prédécesseur et est considéré par ses propres concepteurs comme une étape intermédiaire devant mener à un vrai système de fichiers de nouvelle génération tel que Btrfs. Toutefois, Ext4 est une étape utile et non une simple solution temporaire.

Outre le fait qu'il puisse gérer les volumes d'une taille allant jusqu'à 1 024 pébioctets (1 pébioctet (Pio) = 10&lt;sup&gt;15&lt;/sup&gt; octets), la fonctionnalité majeure de ext4 est l'allocation par extent qui permettent la pré-allocation d'une zone contiguë pour un fichier, pour minimiser la fragmentation. L'option extent est active par défaut depuis le noyau Linux 2.6.23 ; avant cela, elle devait être explicitement indiquée lors du montage de la partition.

Ext2/3/4 ont un algorithme d'allocation de blocs cherchant a éviter la défragmentation, algorithme perfectionné en permanence. Cela se fait par des systèmes de préallocation puis de défragmentation à l'utilisation du disque. C'est pour cela que les outils de défragmentation n'existe pas pour ces systèmes de fichiers. La simple utilisation régulière suffit à défragmenter le système.

Ext4 est plus rapide, mais il est encore en phase de développement. Bien qu'il soit déjà beaucoup utilisé, sa stabilité n'est pas garantie. Pour un serveur et des données sensibles, choisissez de préférence Ext3.

Les partitions de type Ext? ont besoin d'une vérification périodique de l'intégrité du système de fichier, et cela peut prendre au démarrage un temps non négligeable lorsque la taille de la partition est importante. Cette vérification est conseillée et effectuée par défaut de manière régulière (définie par tune2fs). Grâce à la journalisation, les arrêts sauvages (démontage de la partition non fait proprement par le système) de disque sont moins gênants avec Ext3 et Ext4 qui ne feront pas forcément une vérification de l'intégrité du système au démarrage suivant.

Il peut être toutefois judicieux, sur un serveur de choisir Ext2 pour certaines partitions (/var/log et /tmp par exemple). En effet Ext2 permet de récupérer des fichiers (ici les logs et les fichiers temporaires) facilement, pas ses successeurs.

D'autres systèmes de fichiers peuvent être utilisés sur certaines partitions. '''xfs''' par exemple a de bonnes performances avec de nombreux petits fichiers.

Il est impossible de transformer une partition existante d'un système de fichiers à un autre (sauf parfois pour les ext? qui ont une structure commune), le choix du système de fichiers est donc définitif.

Le système de fichiers lisible par *tous* les OS même les plus anciens est FAT32 mais il est très primaire, interdit les gros fichiers et ne permet pas (ou difficilement) d'installer un linux.

Vous le voyez, tout comme le nombre de partitions et la taille des partitions, le choix du système de fichier n'est pas forcément une chose simple. Soyez prudents et faites confiance à l'installeur...

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 20 GB (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}
| Etendue
| SWAP 1 fois et demi la Ram
|- {{ligne grise}}
| Etendue
| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GB :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 3 GB
|- {{ligne grise}}
| Etendue
| SWAP 5 GB
|- {{ligne grise}}
| Etendue
| /tmp 5 GB
|- {{ligne grise}}
| Etendue
| /usr 15 GB
|- {{ligne grise}}
| Etendue
| /var 5 GB
|- {{ligne grise}}
| Etendue
| /home 317 GB
|}


Pour un serveur, avec 2 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 100 GB :

(Serveur de mail, quelques bases SQL, Serveur Web, un home limité, pour quelques utilisateurs sftp)

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 350 MB
|- {{ligne grise}}
| Etendue
| /boot 50 MB
|- {{ligne grise}}
| Etendue
| /usr 10 GB
|- {{ligne grise}}
| Etendue
| /var 70 GB
|- {{ligne grise}}
| Etendue
| SWAP 4 GB
|- {{ligne grise}}
| Etendue
| /tmp 10 GB
|- {{ligne grise}}
| Etendue
| /home 5,6 GB
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>sz0zdqbwe543qjypbxcv3bkp8lcek2a</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2615</id>
      <parentid>2614</parentid>
      <timestamp>2010-12-29T12:46:01Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Le système de fichier */</comment>
      <text xml:space="preserve" bytes="20591">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===

&lt;br&gt;Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.jpeg|left]]&lt;br&gt;&lt;br&gt;&lt;br&gt;

Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.&lt;br&gt;&lt;br&gt;

Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à la carte mère). Les plus courantes actuellement sont:&lt;br&gt;&lt;br&gt;

- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg|80px|right]]&lt;br&gt;&lt;br&gt;

- Serial ATA ou SATA (Serial Advanced Technology Attachment) [[Fichier:SATA Data Cable.jpg|80px|right]]&lt;br&gt;&lt;br&gt;

- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg|80px|right]]

&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;

=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur destinée à accueillir un système de fichiers.

Les informations sur les partitions sont conservées sur le disque lui-même dans des zones qu'on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du premier disque ou secteur d'amorçage (Master boot record ou MBR) qui contient également le programme d'amorçage. Les tables des &quot;autres&quot; disques durs se nomment PBR.


Voici un exemple de partitionnement:

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux

Une partition primaire : sda1

Une partition étendue : sda2 qui contient elle même 5 lecteurs logiques (sda5 à sda9).

A savoir: Seules les partitions primaires peuvent contenir la partition d'amorçage du système d'exploitation Windows. Ce n'est pas le cas pour Debian dont le système d'amorçage peut très bien s'installer sur une partition étendue.

=== Généralités ===

'''Pourquoi partitionner ?'''

Vous pourriez envisager de n'avoir qu'une seule partition contenant tout votre système...
La plupart d'entre nous choisissent de créer plus de partitions que le minimum dont Debian a besoin pour fonctionner. Pourquoi ?

'''Principalement pour des raison de sécurité''': Si une partition est corrompue, le reste du système est toujours accessible. Il suffit généralement de restaurer une sauvegarde de la partition corrompue pour régler le problème.

Mais aussi pour séparer les partitions qui risqueraient d'être submergées de fichiers (Par exemple /var pour un serveur de mail qui serait attaqué par un envoi massif...). Le reste du système serait alors toujours opérationnel.


Séparer les autres partitions de la racine &quot;/&quot; permet, en cas de corruption d'une autre partition, de toujours pouvoir amorcer Linux pour réparer le système...
Vous voulez en effet pouvoir être en mesure de démarrer en &quot;Single user mode&quot; pour restaurer votre station ou serveur... Ce qui exige une racine «intacte».


La seconde difficulté (après le choix du nombre de partitions) sera de définir la taille de ces partitions... Une taille trop petite rendra rapidement votre système inutilisable. Une taille trop grande gâche de l'espace disque (qui même s'il n'est pas cher peut être utile ailleurs...)


Les remarques qui suivent sont des préconisations Debian:

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, une simple partition / (plus celle d'échange) est sans doute la solution la plus simple. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système. '''Il est donc donc généralement conseillé, en plus de la partition d'échange (swap) de créer une partition / ET une partition /home'''.

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de le distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installations y déploient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes Linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.


'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.''' et, dixit MisterFreeze, « de la religion de l'administrateur »... ;-)

N'espérez pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;15%&quot;| Répertoire
! Contenu
|-{{ligne grise}}
| /
| La racine (partition root), qui contient tous les autres répertoires
|}

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;15%&quot;| Répertoire
! Contenu
|-{{ligne grise}}
| /bin
| Binaires (exécutables) des commandes essentielles
|-{{ligne grise}}
| /boot
| Fichiers statiques pour le programme d'amorçage
|-{{ligne grise}}
| /dev
| Fichiers des pilotes de périphériques
|-{{ligne grise}}
| /etc
| Configuration système propre à la machine
|-{{ligne grise}}
| /home
| Répertoires personnels des utilisateurs
|-{{ligne grise}}
| /lib
| Bibliothèques partagées et modules noyaux essentiels
|-{{ligne grise}}
| /media
| Points de montage pour les supports amovibles
|-{{ligne grise}}
| /mnt
| Point de montage pour les montages temporaires
|-{{ligne grise}}
| /proc
| Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
|-{{ligne grise}}
| /root
| Répertoire personnel de l'utilisateur root
|-{{ligne grise}}
| /sbin
| Exécutables système essentiels
|-{{ligne grise}}
| /sys
| Répertoire virtuel pour les informations système (noyaux 2.6)
|-{{ligne grise}}
| /tmp
| Fichiers temporaires
|-{{ligne grise}}
| /usr
| Hiérarchie secondaire
|-{{ligne grise}}
| /var
| Données variables
|-{{ligne grise}}
| /srv
| Données pour les services fournis par le système
|-{{ligne grise}}
| /opt
| Répertoire pour d'autres logiciels
|}


Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessiter plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives)
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4G de swap pour pouvoir bénéficier de l'hibernation.

== Primaire et étendue ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions primaires et une partition étendue qui elle même peut contenir 11 partitions logiques (ce qui fait quand même 14 partitions... c'est le maximum).

La limitation vient du format de la table de partition dans le MBR, le premier secteur du disque. Cette limitation saute avec le nouveau format GPT (GUID Partition Table) utilisé notamment sur les machines avec firmware EFI (Extensible Firmware Interface) en remplacement du BIOS.

== Le système de fichier ==

Le système de fichier

Un système de fichiers (file system ou filesystem en anglais) ou système de gestion de fichiers (SGF) est une façon de stocker les informations et de les organiser dans des fichiers sur les supports de stockage.

Le système de fichiers proposé par défaut par l'installeur de Debian est '''Ext3''' (Extented FS version 3). Ext3 (sorti en 1999) est une évolution de '''Ext2''', le précédent système de fichiers utilisé par défaut par Debian depuis 1993.

Les Ext? sont des systèmes de fichiers bâtis sur la même structure mais avec des fonctionnalités rajoutées (journaux) et des algorithmes (d'allocation de blocs par exemple) différents suivant les versions.

Ext3 alloue les blocs libres juste à côté des autres blocs utilisés par le fichier, ce qui a pour effet de minimiser l'espace physique entre les blocs (limitant la fragmentation).

'''Ext4''' (sorti en 2006) est le successeur du système de fichiers ext3, principalement destiné aux systèmes basés sur GNU/Linux. Il est disponible à l'installation depuis Squeeze.

Il garde une compatibilité avec son prédécesseur et est considéré par ses propres concepteurs comme une étape intermédiaire devant mener à un vrai système de fichiers de nouvelle génération tel que Btrfs. Toutefois, Ext4 est une étape utile et non une simple solution temporaire.

Outre le fait qu'il puisse gérer les volumes d'une taille allant jusqu'à 1 024 pébioctets (1 pébioctet (Pio) = 10&lt;sup&gt;15&lt;/sup&gt; octets), la fonctionnalité majeure de ext4 est l'allocation par extent qui permettent la pré-allocation d'une zone contigüe pour un fichier, pour minimiser la fragmentation. L'option extent est active par défaut depuis le noyau Linux 2.6.23 ; avant cela, elle devait être explicitement indiquée lors du montage de la partition.

Ext2/3/4 ont un algorithme d'allocation de blocs cherchant à éviter la fragmentation, algorithme perfectionné en permanence. Cela se fait par des systèmes de pré-allocation puis de défragmentation à l'utilisation du disque. C'est pour cela que les outils de défragmentation n'existent pas pour ces systèmes de fichiers. La simple utilisation régulière suffit à défragmenter le système.

Ext4 est plus rapide, mais il est encore en phase de développement. Bien qu'il soit déjà beaucoup utilisé, sa stabilité n'est pas garantie. Pour un serveur et des données sensibles, choisissez de préférence Ext3.

Les partitions de type Ext? ont besoin d'une vérification périodique de l'intégrité du système de fichier, et cela peut prendre au démarrage un temps non négligeable lorsque la taille de la partition est importante. Cette vérification est conseillée et effectuée par défaut de manière régulière (modifiée par tune2fs). Grâce à la journalisation, les arrêts sauvages (démontage de la partition non fait proprement par le système) de disque sont moins gênants avec Ext3 et Ext4 qui ne feront pas forcément une vérification de l'intégrité du système au démarrage suivant.

Il peut être toutefois judicieux, sur un serveur de choisir Ext2 pour certaines partitions (/var/log et /tmp par exemple). En effet Ext2 permet de récupérer des fichiers (ici les logs et les fichiers temporaires) facilement, pas ses successeurs.

D'autres systèmes de fichiers peuvent être utilisés sur certaines partitions. '''xfs''' par exemple a de bonnes performances avec de nombreux petits fichiers.

Il est impossible de transformer une partition existante d'un système de fichiers à un autre (sauf parfois pour les ext? qui ont une structure commune), le choix du système de fichiers est donc définitif.

Le système de fichiers lisible par *tous* les OS même les plus anciens est FAT32 mais il est très primaire, interdit les gros fichiers et ne permet pas (ou difficilement) d'installer un linux.

Vous le voyez, tout comme le nombre de partitions et la taille des partitions, le choix du système de fichier n'est pas forcément une chose simple. Soyez prudents et faites confiance à l'installeur...

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 20 GB (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}
| Etendue
| SWAP 1 fois et demi la Ram
|- {{ligne grise}}
| Etendue
| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GB :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 3 GB
|- {{ligne grise}}
| Etendue
| SWAP 5 GB
|- {{ligne grise}}
| Etendue
| /tmp 5 GB
|- {{ligne grise}}
| Etendue
| /usr 15 GB
|- {{ligne grise}}
| Etendue
| /var 5 GB
|- {{ligne grise}}
| Etendue
| /home 317 GB
|}


Pour un serveur, avec 2 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 100 GB :

(Serveur de mail, quelques bases SQL, Serveur Web, un home limité, pour quelques utilisateurs sftp)

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 350 MB
|- {{ligne grise}}
| Etendue
| /boot 50 MB
|- {{ligne grise}}
| Etendue
| /usr 10 GB
|- {{ligne grise}}
| Etendue
| /var 70 GB
|- {{ligne grise}}
| Etendue
| SWAP 4 GB
|- {{ligne grise}}
| Etendue
| /tmp 10 GB
|- {{ligne grise}}
| Etendue
| /home 5,6 GB
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>tkb7nu0mabc0sy60xc4fq5vn7ul0v7d</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3030</id>
      <parentid>2615</parentid>
      <timestamp>2011-06-07T05:33:35Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>lien vers article btrfs</comment>
      <text xml:space="preserve" bytes="20601">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===

&lt;br&gt;Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.jpeg|left]]&lt;br&gt;&lt;br&gt;&lt;br&gt;

Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.&lt;br&gt;&lt;br&gt;

Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à la carte mère). Les plus courantes actuellement sont:&lt;br&gt;&lt;br&gt;

- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg|80px|right]]&lt;br&gt;&lt;br&gt;

- Serial ATA ou SATA (Serial Advanced Technology Attachment) [[Fichier:SATA Data Cable.jpg|80px|right]]&lt;br&gt;&lt;br&gt;

- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg|80px|right]]

&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;

=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur destinée à accueillir un système de fichiers.

Les informations sur les partitions sont conservées sur le disque lui-même dans des zones qu'on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du premier disque ou secteur d'amorçage (Master boot record ou MBR) qui contient également le programme d'amorçage. Les tables des &quot;autres&quot; disques durs se nomment PBR.


Voici un exemple de partitionnement:

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux

Une partition primaire : sda1

Une partition étendue : sda2 qui contient elle même 5 lecteurs logiques (sda5 à sda9).

A savoir: Seules les partitions primaires peuvent contenir la partition d'amorçage du système d'exploitation Windows. Ce n'est pas le cas pour Debian dont le système d'amorçage peut très bien s'installer sur une partition étendue.

=== Généralités ===

'''Pourquoi partitionner ?'''

Vous pourriez envisager de n'avoir qu'une seule partition contenant tout votre système...
La plupart d'entre nous choisissent de créer plus de partitions que le minimum dont Debian a besoin pour fonctionner. Pourquoi ?

'''Principalement pour des raison de sécurité''': Si une partition est corrompue, le reste du système est toujours accessible. Il suffit généralement de restaurer une sauvegarde de la partition corrompue pour régler le problème.

Mais aussi pour séparer les partitions qui risqueraient d'être submergées de fichiers (Par exemple /var pour un serveur de mail qui serait attaqué par un envoi massif...). Le reste du système serait alors toujours opérationnel.


Séparer les autres partitions de la racine &quot;/&quot; permet, en cas de corruption d'une autre partition, de toujours pouvoir amorcer Linux pour réparer le système...
Vous voulez en effet pouvoir être en mesure de démarrer en &quot;Single user mode&quot; pour restaurer votre station ou serveur... Ce qui exige une racine «intacte».


La seconde difficulté (après le choix du nombre de partitions) sera de définir la taille de ces partitions... Une taille trop petite rendra rapidement votre système inutilisable. Une taille trop grande gâche de l'espace disque (qui même s'il n'est pas cher peut être utile ailleurs...)


Les remarques qui suivent sont des préconisations Debian:

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, une simple partition / (plus celle d'échange) est sans doute la solution la plus simple. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système. '''Il est donc donc généralement conseillé, en plus de la partition d'échange (swap) de créer une partition / ET une partition /home'''.

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de le distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installations y déploient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes Linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.


'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.''' et, dixit MisterFreeze, « de la religion de l'administrateur »... ;-)

N'espérez pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;15%&quot;| Répertoire
! Contenu
|-{{ligne grise}}
| /
| La racine (partition root), qui contient tous les autres répertoires
|}

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;15%&quot;| Répertoire
! Contenu
|-{{ligne grise}}
| /bin
| Binaires (exécutables) des commandes essentielles
|-{{ligne grise}}
| /boot
| Fichiers statiques pour le programme d'amorçage
|-{{ligne grise}}
| /dev
| Fichiers des pilotes de périphériques
|-{{ligne grise}}
| /etc
| Configuration système propre à la machine
|-{{ligne grise}}
| /home
| Répertoires personnels des utilisateurs
|-{{ligne grise}}
| /lib
| Bibliothèques partagées et modules noyaux essentiels
|-{{ligne grise}}
| /media
| Points de montage pour les supports amovibles
|-{{ligne grise}}
| /mnt
| Point de montage pour les montages temporaires
|-{{ligne grise}}
| /proc
| Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
|-{{ligne grise}}
| /root
| Répertoire personnel de l'utilisateur root
|-{{ligne grise}}
| /sbin
| Exécutables système essentiels
|-{{ligne grise}}
| /sys
| Répertoire virtuel pour les informations système (noyaux 2.6)
|-{{ligne grise}}
| /tmp
| Fichiers temporaires
|-{{ligne grise}}
| /usr
| Hiérarchie secondaire
|-{{ligne grise}}
| /var
| Données variables
|-{{ligne grise}}
| /srv
| Données pour les services fournis par le système
|-{{ligne grise}}
| /opt
| Répertoire pour d'autres logiciels
|}


Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessiter plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives)
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4G de swap pour pouvoir bénéficier de l'hibernation.

== Primaire et étendue ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions primaires et une partition étendue qui elle même peut contenir 11 partitions logiques (ce qui fait quand même 14 partitions... c'est le maximum).

La limitation vient du format de la table de partition dans le MBR, le premier secteur du disque. Cette limitation saute avec le nouveau format GPT (GUID Partition Table) utilisé notamment sur les machines avec firmware EFI (Extensible Firmware Interface) en remplacement du BIOS.

== Le système de fichier ==

Le système de fichier

Un système de fichiers (file system ou filesystem en anglais) ou système de gestion de fichiers (SGF) est une façon de stocker les informations et de les organiser dans des fichiers sur les supports de stockage.

Le système de fichiers proposé par défaut par l'installeur de Debian est '''Ext3''' (Extented FS version 3). Ext3 (sorti en 1999) est une évolution de '''Ext2''', le précédent système de fichiers utilisé par défaut par Debian depuis 1993.

Les Ext? sont des systèmes de fichiers bâtis sur la même structure mais avec des fonctionnalités rajoutées (journaux) et des algorithmes (d'allocation de blocs par exemple) différents suivant les versions.

Ext3 alloue les blocs libres juste à côté des autres blocs utilisés par le fichier, ce qui a pour effet de minimiser l'espace physique entre les blocs (limitant la fragmentation).

'''Ext4''' (sorti en 2006) est le successeur du système de fichiers ext3, principalement destiné aux systèmes basés sur GNU/Linux. Il est disponible à l'installation depuis Squeeze.

Il garde une compatibilité avec son prédécesseur et est considéré par ses propres concepteurs comme une étape intermédiaire devant mener à un vrai système de fichiers de nouvelle génération tel que [[Btrfs|Btrfs]]. Toutefois, Ext4 est une étape utile et non une simple solution temporaire.

Outre le fait qu'il puisse gérer les volumes d'une taille allant jusqu'à 1 024 pébioctets (1 pébioctet (Pio) = 10&lt;sup&gt;15&lt;/sup&gt; octets), la fonctionnalité majeure de ext4 est l'allocation par extent qui permettent la pré-allocation d'une zone contigüe pour un fichier, pour minimiser la fragmentation. L'option extent est active par défaut depuis le noyau Linux 2.6.23 ; avant cela, elle devait être explicitement indiquée lors du montage de la partition.

Ext2/3/4 ont un algorithme d'allocation de blocs cherchant à éviter la fragmentation, algorithme perfectionné en permanence. Cela se fait par des systèmes de pré-allocation puis de défragmentation à l'utilisation du disque. C'est pour cela que les outils de défragmentation n'existent pas pour ces systèmes de fichiers. La simple utilisation régulière suffit à défragmenter le système.

Ext4 est plus rapide, mais il est encore en phase de développement. Bien qu'il soit déjà beaucoup utilisé, sa stabilité n'est pas garantie. Pour un serveur et des données sensibles, choisissez de préférence Ext3.

Les partitions de type Ext? ont besoin d'une vérification périodique de l'intégrité du système de fichier, et cela peut prendre au démarrage un temps non négligeable lorsque la taille de la partition est importante. Cette vérification est conseillée et effectuée par défaut de manière régulière (modifiée par tune2fs). Grâce à la journalisation, les arrêts sauvages (démontage de la partition non fait proprement par le système) de disque sont moins gênants avec Ext3 et Ext4 qui ne feront pas forcément une vérification de l'intégrité du système au démarrage suivant.

Il peut être toutefois judicieux, sur un serveur de choisir Ext2 pour certaines partitions (/var/log et /tmp par exemple). En effet Ext2 permet de récupérer des fichiers (ici les logs et les fichiers temporaires) facilement, pas ses successeurs.

D'autres systèmes de fichiers peuvent être utilisés sur certaines partitions. '''xfs''' par exemple a de bonnes performances avec de nombreux petits fichiers.

Il est impossible de transformer une partition existante d'un système de fichiers à un autre (sauf parfois pour les ext? qui ont une structure commune), le choix du système de fichiers est donc définitif.

Le système de fichiers lisible par *tous* les OS même les plus anciens est FAT32 mais il est très primaire, interdit les gros fichiers et ne permet pas (ou difficilement) d'installer un linux.

Vous le voyez, tout comme le nombre de partitions et la taille des partitions, le choix du système de fichier n'est pas forcément une chose simple. Soyez prudents et faites confiance à l'installeur...

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 20 GB (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}
| Etendue
| SWAP 1 fois et demi la Ram
|- {{ligne grise}}
| Etendue
| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GB :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 3 GB
|- {{ligne grise}}
| Etendue
| SWAP 5 GB
|- {{ligne grise}}
| Etendue
| /tmp 5 GB
|- {{ligne grise}}
| Etendue
| /usr 15 GB
|- {{ligne grise}}
| Etendue
| /var 5 GB
|- {{ligne grise}}
| Etendue
| /home 317 GB
|}


Pour un serveur, avec 2 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 100 GB :

(Serveur de mail, quelques bases SQL, Serveur Web, un home limité, pour quelques utilisateurs sftp)

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 350 MB
|- {{ligne grise}}
| Etendue
| /boot 50 MB
|- {{ligne grise}}
| Etendue
| /usr 10 GB
|- {{ligne grise}}
| Etendue
| /var 70 GB
|- {{ligne grise}}
| Etendue
| SWAP 4 GB
|- {{ligne grise}}
| Etendue
| /tmp 10 GB
|- {{ligne grise}}
| Etendue
| /home 5,6 GB
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>l0ni3xp9e5yde8f9ixjtfn0s5yjtxg0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3031</id>
      <parentid>3030</parentid>
      <timestamp>2011-06-07T10:44:44Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Généralités */</comment>
      <text xml:space="preserve" bytes="20600">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===

&lt;br&gt;Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.jpeg|left]]&lt;br&gt;&lt;br&gt;&lt;br&gt;

Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.&lt;br&gt;&lt;br&gt;

Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à la carte mère). Les plus courantes actuellement sont:&lt;br&gt;&lt;br&gt;

- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg|80px|right]]&lt;br&gt;&lt;br&gt;

- Serial ATA ou SATA (Serial Advanced Technology Attachment) [[Fichier:SATA Data Cable.jpg|80px|right]]&lt;br&gt;&lt;br&gt;

- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg|80px|right]]

&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;

=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur destinée à accueillir un système de fichiers.

Les informations sur les partitions sont conservées sur le disque lui-même dans des zones qu'on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du premier disque ou secteur d'amorçage (Master boot record ou MBR) qui contient également le programme d'amorçage. Les tables des &quot;autres&quot; disques durs se nomment PBR.


Voici un exemple de partitionnement:

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux

Une partition primaire : sda1

Une partition étendue : sda2 qui contient elle même 5 lecteurs logiques (sda5 à sda9).

A savoir: Seules les partitions primaires peuvent contenir la partition d'amorçage du système d'exploitation Windows. Ce n'est pas le cas pour Debian dont le système d'amorçage peut très bien s'installer sur une partition étendue.

=== Généralités ===

'''Pourquoi partitionner ?'''

Vous pourriez envisager de n'avoir qu'une seule partition contenant tout votre système...
La plupart d'entre nous choisissent de créer plus de partitions que le minimum dont Debian a besoin pour fonctionner. Pourquoi ?

'''Principalement pour des raison de sécurité''': Si une partition est corrompue, le reste du système est toujours accessible. Il suffit généralement de restaurer une sauvegarde de la partition corrompue pour régler le problème.

Mais aussi pour séparer les partitions qui risqueraient d'être submergées de fichiers (Par exemple /var pour un serveur de mail qui serait attaqué par un envoi massif...). Le reste du système serait alors toujours opérationnel.


Séparer les autres partitions de la racine &quot;/&quot; permet, en cas de corruption d'une autre partition, de toujours pouvoir amorcer Linux pour réparer le système...
Vous voulez en effet pouvoir être en mesure de démarrer en &quot;Single user mode&quot; pour restaurer votre station ou serveur... Ce qui exige une racine «intacte».


La seconde difficulté (après le choix du nombre de partitions) sera de définir la taille de ces partitions... Une taille trop petite rendra rapidement votre système inutilisable. Une taille trop grande gâche de l'espace disque (qui même s'il n'est pas cher peut être utile ailleurs...)


Les remarques qui suivent sont des préconisations Debian:

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, une simple partition / (plus celle d'échange) est sans doute la solution la plus simple. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système. '''Il est donc donc généralement conseillé, en plus de la partition d'échange (swap) de créer une partition / ET une partition /home'''.

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de la distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installation y déploient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes Linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.


'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.''' et, dixit MisterFreeze, « de la religion de l'administrateur »... ;-)

N'espérez pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;15%&quot;| Répertoire
! Contenu
|-{{ligne grise}}
| /
| La racine (partition root), qui contient tous les autres répertoires
|}

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;15%&quot;| Répertoire
! Contenu
|-{{ligne grise}}
| /bin
| Binaires (exécutables) des commandes essentielles
|-{{ligne grise}}
| /boot
| Fichiers statiques pour le programme d'amorçage
|-{{ligne grise}}
| /dev
| Fichiers des pilotes de périphériques
|-{{ligne grise}}
| /etc
| Configuration système propre à la machine
|-{{ligne grise}}
| /home
| Répertoires personnels des utilisateurs
|-{{ligne grise}}
| /lib
| Bibliothèques partagées et modules noyaux essentiels
|-{{ligne grise}}
| /media
| Points de montage pour les supports amovibles
|-{{ligne grise}}
| /mnt
| Point de montage pour les montages temporaires
|-{{ligne grise}}
| /proc
| Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
|-{{ligne grise}}
| /root
| Répertoire personnel de l'utilisateur root
|-{{ligne grise}}
| /sbin
| Exécutables système essentiels
|-{{ligne grise}}
| /sys
| Répertoire virtuel pour les informations système (noyaux 2.6)
|-{{ligne grise}}
| /tmp
| Fichiers temporaires
|-{{ligne grise}}
| /usr
| Hiérarchie secondaire
|-{{ligne grise}}
| /var
| Données variables
|-{{ligne grise}}
| /srv
| Données pour les services fournis par le système
|-{{ligne grise}}
| /opt
| Répertoire pour d'autres logiciels
|}


Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessiter plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives)
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4G de swap pour pouvoir bénéficier de l'hibernation.

== Primaire et étendue ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions primaires et une partition étendue qui elle même peut contenir 11 partitions logiques (ce qui fait quand même 14 partitions... c'est le maximum).

La limitation vient du format de la table de partition dans le MBR, le premier secteur du disque. Cette limitation saute avec le nouveau format GPT (GUID Partition Table) utilisé notamment sur les machines avec firmware EFI (Extensible Firmware Interface) en remplacement du BIOS.

== Le système de fichier ==

Le système de fichier

Un système de fichiers (file system ou filesystem en anglais) ou système de gestion de fichiers (SGF) est une façon de stocker les informations et de les organiser dans des fichiers sur les supports de stockage.

Le système de fichiers proposé par défaut par l'installeur de Debian est '''Ext3''' (Extented FS version 3). Ext3 (sorti en 1999) est une évolution de '''Ext2''', le précédent système de fichiers utilisé par défaut par Debian depuis 1993.

Les Ext? sont des systèmes de fichiers bâtis sur la même structure mais avec des fonctionnalités rajoutées (journaux) et des algorithmes (d'allocation de blocs par exemple) différents suivant les versions.

Ext3 alloue les blocs libres juste à côté des autres blocs utilisés par le fichier, ce qui a pour effet de minimiser l'espace physique entre les blocs (limitant la fragmentation).

'''Ext4''' (sorti en 2006) est le successeur du système de fichiers ext3, principalement destiné aux systèmes basés sur GNU/Linux. Il est disponible à l'installation depuis Squeeze.

Il garde une compatibilité avec son prédécesseur et est considéré par ses propres concepteurs comme une étape intermédiaire devant mener à un vrai système de fichiers de nouvelle génération tel que [[Btrfs|Btrfs]]. Toutefois, Ext4 est une étape utile et non une simple solution temporaire.

Outre le fait qu'il puisse gérer les volumes d'une taille allant jusqu'à 1 024 pébioctets (1 pébioctet (Pio) = 10&lt;sup&gt;15&lt;/sup&gt; octets), la fonctionnalité majeure de ext4 est l'allocation par extent qui permettent la pré-allocation d'une zone contigüe pour un fichier, pour minimiser la fragmentation. L'option extent est active par défaut depuis le noyau Linux 2.6.23 ; avant cela, elle devait être explicitement indiquée lors du montage de la partition.

Ext2/3/4 ont un algorithme d'allocation de blocs cherchant à éviter la fragmentation, algorithme perfectionné en permanence. Cela se fait par des systèmes de pré-allocation puis de défragmentation à l'utilisation du disque. C'est pour cela que les outils de défragmentation n'existent pas pour ces systèmes de fichiers. La simple utilisation régulière suffit à défragmenter le système.

Ext4 est plus rapide, mais il est encore en phase de développement. Bien qu'il soit déjà beaucoup utilisé, sa stabilité n'est pas garantie. Pour un serveur et des données sensibles, choisissez de préférence Ext3.

Les partitions de type Ext? ont besoin d'une vérification périodique de l'intégrité du système de fichier, et cela peut prendre au démarrage un temps non négligeable lorsque la taille de la partition est importante. Cette vérification est conseillée et effectuée par défaut de manière régulière (modifiée par tune2fs). Grâce à la journalisation, les arrêts sauvages (démontage de la partition non fait proprement par le système) de disque sont moins gênants avec Ext3 et Ext4 qui ne feront pas forcément une vérification de l'intégrité du système au démarrage suivant.

Il peut être toutefois judicieux, sur un serveur de choisir Ext2 pour certaines partitions (/var/log et /tmp par exemple). En effet Ext2 permet de récupérer des fichiers (ici les logs et les fichiers temporaires) facilement, pas ses successeurs.

D'autres systèmes de fichiers peuvent être utilisés sur certaines partitions. '''xfs''' par exemple a de bonnes performances avec de nombreux petits fichiers.

Il est impossible de transformer une partition existante d'un système de fichiers à un autre (sauf parfois pour les ext? qui ont une structure commune), le choix du système de fichiers est donc définitif.

Le système de fichiers lisible par *tous* les OS même les plus anciens est FAT32 mais il est très primaire, interdit les gros fichiers et ne permet pas (ou difficilement) d'installer un linux.

Vous le voyez, tout comme le nombre de partitions et la taille des partitions, le choix du système de fichier n'est pas forcément une chose simple. Soyez prudents et faites confiance à l'installeur...

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 20 GB (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}
| Etendue
| SWAP 1 fois et demi la Ram
|- {{ligne grise}}
| Etendue
| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GB :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 3 GB
|- {{ligne grise}}
| Etendue
| SWAP 5 GB
|- {{ligne grise}}
| Etendue
| /tmp 5 GB
|- {{ligne grise}}
| Etendue
| /usr 15 GB
|- {{ligne grise}}
| Etendue
| /var 5 GB
|- {{ligne grise}}
| Etendue
| /home 317 GB
|}


Pour un serveur, avec 2 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 100 GB :

(Serveur de mail, quelques bases SQL, Serveur Web, un home limité, pour quelques utilisateurs sftp)

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 350 MB
|- {{ligne grise}}
| Etendue
| /boot 50 MB
|- {{ligne grise}}
| Etendue
| /usr 10 GB
|- {{ligne grise}}
| Etendue
| /var 70 GB
|- {{ligne grise}}
| Etendue
| SWAP 4 GB
|- {{ligne grise}}
| Etendue
| /tmp 10 GB
|- {{ligne grise}}
| Etendue
| /home 5,6 GB
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>i8v5g6qezll8mthq85q10qtigiy4zjn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3545</id>
      <parentid>3031</parentid>
      <timestamp>2011-11-09T07:36:31Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* L'organisation des répertoires */</comment>
      <text xml:space="preserve" bytes="20646">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===

&lt;br&gt;Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.jpeg|left]]&lt;br&gt;&lt;br&gt;&lt;br&gt;

Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.&lt;br&gt;&lt;br&gt;

Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à la carte mère). Les plus courantes actuellement sont:&lt;br&gt;&lt;br&gt;

- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg|80px|right]]&lt;br&gt;&lt;br&gt;

- Serial ATA ou SATA (Serial Advanced Technology Attachment) [[Fichier:SATA Data Cable.jpg|80px|right]]&lt;br&gt;&lt;br&gt;

- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg|80px|right]]

&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;

=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur destinée à accueillir un système de fichiers.

Les informations sur les partitions sont conservées sur le disque lui-même dans des zones qu'on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du premier disque ou secteur d'amorçage (Master boot record ou MBR) qui contient également le programme d'amorçage. Les tables des &quot;autres&quot; disques durs se nomment PBR.


Voici un exemple de partitionnement:

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux

Une partition primaire : sda1

Une partition étendue : sda2 qui contient elle même 5 lecteurs logiques (sda5 à sda9).

A savoir: Seules les partitions primaires peuvent contenir la partition d'amorçage du système d'exploitation Windows. Ce n'est pas le cas pour Debian dont le système d'amorçage peut très bien s'installer sur une partition étendue.

=== Généralités ===

'''Pourquoi partitionner ?'''

Vous pourriez envisager de n'avoir qu'une seule partition contenant tout votre système...
La plupart d'entre nous choisissent de créer plus de partitions que le minimum dont Debian a besoin pour fonctionner. Pourquoi ?

'''Principalement pour des raison de sécurité''': Si une partition est corrompue, le reste du système est toujours accessible. Il suffit généralement de restaurer une sauvegarde de la partition corrompue pour régler le problème.

Mais aussi pour séparer les partitions qui risqueraient d'être submergées de fichiers (Par exemple /var pour un serveur de mail qui serait attaqué par un envoi massif...). Le reste du système serait alors toujours opérationnel.


Séparer les autres partitions de la racine &quot;/&quot; permet, en cas de corruption d'une autre partition, de toujours pouvoir amorcer Linux pour réparer le système...
Vous voulez en effet pouvoir être en mesure de démarrer en &quot;Single user mode&quot; pour restaurer votre station ou serveur... Ce qui exige une racine «intacte».


La seconde difficulté (après le choix du nombre de partitions) sera de définir la taille de ces partitions... Une taille trop petite rendra rapidement votre système inutilisable. Une taille trop grande gâche de l'espace disque (qui même s'il n'est pas cher peut être utile ailleurs...)


Les remarques qui suivent sont des préconisations Debian:

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, une simple partition / (plus celle d'échange) est sans doute la solution la plus simple. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système. '''Il est donc donc généralement conseillé, en plus de la partition d'échange (swap) de créer une partition / ET une partition /home'''.

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de la distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installation y déploient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes Linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.


'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.''' et, dixit MisterFreeze, « de la religion de l'administrateur »... ;-)

N'espérez pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;15%&quot;| Répertoire
! Contenu
|-{{ligne grise}}
| /
| La racine (partition root), qui contient tous les autres répertoires
|}

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;15%&quot;| Répertoire
! Contenu
|-{{ligne grise}}
| /bin
| Binaires (exécutables) des commandes essentielles
|-{{ligne grise}}
| /boot
| Fichiers statiques pour le programme d'amorçage
|-{{ligne grise}}
| /dev
| Fichiers des pilotes de périphériques
|-{{ligne grise}}
| /etc
| Configuration système propre à la machine
|-{{ligne grise}}
| /home
| Répertoires personnels des utilisateurs
|-{{ligne grise}}
| /lib
| Bibliothèques partagées et modules noyaux essentiels
|-{{ligne grise}}
| /media
| Points de montage pour les supports amovibles
|-{{ligne grise}}
| /mnt
| Point de montage pour les montages temporaires
|-{{ligne grise}}
| /proc
| Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
|-{{ligne grise}}
| /root
| Répertoire personnel de l'utilisateur root
|-{{ligne grise}}
| /sbin
| Exécutables système essentiels
|-{{ligne grise}}
| /sys
| Répertoire virtuel pour les informations système (noyaux 2.6)
|-{{ligne grise}}
| /tmp
| Fichiers temporaires
|-{{ligne grise}}
| /usr
| Hiérarchie secondaire
|-{{ligne grise}}
| /var
| Données variables
|-{{ligne grise}}
| /srv
| Données pour les services fournis par le système
|-{{ligne grise}}
| /opt
| Répertoire pour d'autres logiciels
|}

Plus de détails dans [[Man_hier|$ man hier]]

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessiter plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives)
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4G de swap pour pouvoir bénéficier de l'hibernation.

== Primaire et étendue ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions primaires et une partition étendue qui elle même peut contenir 11 partitions logiques (ce qui fait quand même 14 partitions... c'est le maximum).

La limitation vient du format de la table de partition dans le MBR, le premier secteur du disque. Cette limitation saute avec le nouveau format GPT (GUID Partition Table) utilisé notamment sur les machines avec firmware EFI (Extensible Firmware Interface) en remplacement du BIOS.

== Le système de fichier ==

Le système de fichier

Un système de fichiers (file system ou filesystem en anglais) ou système de gestion de fichiers (SGF) est une façon de stocker les informations et de les organiser dans des fichiers sur les supports de stockage.

Le système de fichiers proposé par défaut par l'installeur de Debian est '''Ext3''' (Extented FS version 3). Ext3 (sorti en 1999) est une évolution de '''Ext2''', le précédent système de fichiers utilisé par défaut par Debian depuis 1993.

Les Ext? sont des systèmes de fichiers bâtis sur la même structure mais avec des fonctionnalités rajoutées (journaux) et des algorithmes (d'allocation de blocs par exemple) différents suivant les versions.

Ext3 alloue les blocs libres juste à côté des autres blocs utilisés par le fichier, ce qui a pour effet de minimiser l'espace physique entre les blocs (limitant la fragmentation).

'''Ext4''' (sorti en 2006) est le successeur du système de fichiers ext3, principalement destiné aux systèmes basés sur GNU/Linux. Il est disponible à l'installation depuis Squeeze.

Il garde une compatibilité avec son prédécesseur et est considéré par ses propres concepteurs comme une étape intermédiaire devant mener à un vrai système de fichiers de nouvelle génération tel que [[Btrfs|Btrfs]]. Toutefois, Ext4 est une étape utile et non une simple solution temporaire.

Outre le fait qu'il puisse gérer les volumes d'une taille allant jusqu'à 1 024 pébioctets (1 pébioctet (Pio) = 10&lt;sup&gt;15&lt;/sup&gt; octets), la fonctionnalité majeure de ext4 est l'allocation par extent qui permettent la pré-allocation d'une zone contigüe pour un fichier, pour minimiser la fragmentation. L'option extent est active par défaut depuis le noyau Linux 2.6.23 ; avant cela, elle devait être explicitement indiquée lors du montage de la partition.

Ext2/3/4 ont un algorithme d'allocation de blocs cherchant à éviter la fragmentation, algorithme perfectionné en permanence. Cela se fait par des systèmes de pré-allocation puis de défragmentation à l'utilisation du disque. C'est pour cela que les outils de défragmentation n'existent pas pour ces systèmes de fichiers. La simple utilisation régulière suffit à défragmenter le système.

Ext4 est plus rapide, mais il est encore en phase de développement. Bien qu'il soit déjà beaucoup utilisé, sa stabilité n'est pas garantie. Pour un serveur et des données sensibles, choisissez de préférence Ext3.

Les partitions de type Ext? ont besoin d'une vérification périodique de l'intégrité du système de fichier, et cela peut prendre au démarrage un temps non négligeable lorsque la taille de la partition est importante. Cette vérification est conseillée et effectuée par défaut de manière régulière (modifiée par tune2fs). Grâce à la journalisation, les arrêts sauvages (démontage de la partition non fait proprement par le système) de disque sont moins gênants avec Ext3 et Ext4 qui ne feront pas forcément une vérification de l'intégrité du système au démarrage suivant.

Il peut être toutefois judicieux, sur un serveur de choisir Ext2 pour certaines partitions (/var/log et /tmp par exemple). En effet Ext2 permet de récupérer des fichiers (ici les logs et les fichiers temporaires) facilement, pas ses successeurs.

D'autres systèmes de fichiers peuvent être utilisés sur certaines partitions. '''xfs''' par exemple a de bonnes performances avec de nombreux petits fichiers.

Il est impossible de transformer une partition existante d'un système de fichiers à un autre (sauf parfois pour les ext? qui ont une structure commune), le choix du système de fichiers est donc définitif.

Le système de fichiers lisible par *tous* les OS même les plus anciens est FAT32 mais il est très primaire, interdit les gros fichiers et ne permet pas (ou difficilement) d'installer un linux.

Vous le voyez, tout comme le nombre de partitions et la taille des partitions, le choix du système de fichier n'est pas forcément une chose simple. Soyez prudents et faites confiance à l'installeur...

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 20 GB (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}
| Etendue
| SWAP 1 fois et demi la Ram
|- {{ligne grise}}
| Etendue
| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GB :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 3 GB
|- {{ligne grise}}
| Etendue
| SWAP 5 GB
|- {{ligne grise}}
| Etendue
| /tmp 5 GB
|- {{ligne grise}}
| Etendue
| /usr 15 GB
|- {{ligne grise}}
| Etendue
| /var 5 GB
|- {{ligne grise}}
| Etendue
| /home 317 GB
|}


Pour un serveur, avec 2 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 100 GB :

(Serveur de mail, quelques bases SQL, Serveur Web, un home limité, pour quelques utilisateurs sftp)

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 350 MB
|- {{ligne grise}}
| Etendue
| /boot 50 MB
|- {{ligne grise}}
| Etendue
| /usr 10 GB
|- {{ligne grise}}
| Etendue
| /var 70 GB
|- {{ligne grise}}
| Etendue
| SWAP 4 GB
|- {{ligne grise}}
| Etendue
| /tmp 10 GB
|- {{ligne grise}}
| Etendue
| /home 5,6 GB
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>8kurllicv4z7xr0mrgp11cq4mstm4ej</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5493</id>
      <parentid>3545</parentid>
      <timestamp>2013-12-12T19:19:13Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <comment>/* Primaire et étendue */ correction nombre maxi partitions et cause.</comment>
      <text xml:space="preserve" bytes="21497">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===

&lt;br&gt;Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.jpeg|left]]&lt;br&gt;&lt;br&gt;&lt;br&gt;

Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.&lt;br&gt;&lt;br&gt;

Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à la carte mère). Les plus courantes actuellement sont:&lt;br&gt;&lt;br&gt;

- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg|80px|right]]&lt;br&gt;&lt;br&gt;

- Serial ATA ou SATA (Serial Advanced Technology Attachment) [[Fichier:SATA Data Cable.jpg|80px|right]]&lt;br&gt;&lt;br&gt;

- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg|80px|right]]

&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;

=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur destinée à accueillir un système de fichiers.

Les informations sur les partitions sont conservées sur le disque lui-même dans des zones qu'on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du premier disque ou secteur d'amorçage (Master boot record ou MBR) qui contient également le programme d'amorçage. Les tables des &quot;autres&quot; disques durs se nomment PBR.


Voici un exemple de partitionnement:

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux

Une partition primaire : sda1

Une partition étendue : sda2 qui contient elle même 5 lecteurs logiques (sda5 à sda9).

A savoir: Seules les partitions primaires peuvent contenir la partition d'amorçage du système d'exploitation Windows. Ce n'est pas le cas pour Debian dont le système d'amorçage peut très bien s'installer sur une partition étendue.

=== Généralités ===

'''Pourquoi partitionner ?'''

Vous pourriez envisager de n'avoir qu'une seule partition contenant tout votre système...
La plupart d'entre nous choisissent de créer plus de partitions que le minimum dont Debian a besoin pour fonctionner. Pourquoi ?

'''Principalement pour des raison de sécurité''': Si une partition est corrompue, le reste du système est toujours accessible. Il suffit généralement de restaurer une sauvegarde de la partition corrompue pour régler le problème.

Mais aussi pour séparer les partitions qui risqueraient d'être submergées de fichiers (Par exemple /var pour un serveur de mail qui serait attaqué par un envoi massif...). Le reste du système serait alors toujours opérationnel.


Séparer les autres partitions de la racine &quot;/&quot; permet, en cas de corruption d'une autre partition, de toujours pouvoir amorcer Linux pour réparer le système...
Vous voulez en effet pouvoir être en mesure de démarrer en &quot;Single user mode&quot; pour restaurer votre station ou serveur... Ce qui exige une racine «intacte».


La seconde difficulté (après le choix du nombre de partitions) sera de définir la taille de ces partitions... Une taille trop petite rendra rapidement votre système inutilisable. Une taille trop grande gâche de l'espace disque (qui même s'il n'est pas cher peut être utile ailleurs...)


Les remarques qui suivent sont des préconisations Debian:

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, une simple partition / (plus celle d'échange) est sans doute la solution la plus simple. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système. '''Il est donc donc généralement conseillé, en plus de la partition d'échange (swap) de créer une partition / ET une partition /home'''.

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de la distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installation y déploient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes Linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.


'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.''' et, dixit MisterFreeze, « de la religion de l'administrateur »... ;-)

N'espérez pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;15%&quot;| Répertoire
! Contenu
|-{{ligne grise}}
| /
| La racine (partition root), qui contient tous les autres répertoires
|}

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;15%&quot;| Répertoire
! Contenu
|-{{ligne grise}}
| /bin
| Binaires (exécutables) des commandes essentielles
|-{{ligne grise}}
| /boot
| Fichiers statiques pour le programme d'amorçage
|-{{ligne grise}}
| /dev
| Fichiers des pilotes de périphériques
|-{{ligne grise}}
| /etc
| Configuration système propre à la machine
|-{{ligne grise}}
| /home
| Répertoires personnels des utilisateurs
|-{{ligne grise}}
| /lib
| Bibliothèques partagées et modules noyaux essentiels
|-{{ligne grise}}
| /media
| Points de montage pour les supports amovibles
|-{{ligne grise}}
| /mnt
| Point de montage pour les montages temporaires
|-{{ligne grise}}
| /proc
| Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
|-{{ligne grise}}
| /root
| Répertoire personnel de l'utilisateur root
|-{{ligne grise}}
| /sbin
| Exécutables système essentiels
|-{{ligne grise}}
| /sys
| Répertoire virtuel pour les informations système (noyaux 2.6)
|-{{ligne grise}}
| /tmp
| Fichiers temporaires
|-{{ligne grise}}
| /usr
| Hiérarchie secondaire
|-{{ligne grise}}
| /var
| Données variables
|-{{ligne grise}}
| /srv
| Données pour les services fournis par le système
|-{{ligne grise}}
| /opt
| Répertoire pour d'autres logiciels
|}

Plus de détails dans [[Man_hier|$ man hier]]

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessiter plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives)
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4G de swap pour pouvoir bénéficier de l'hibernation.

== Primaires, étendue, logiques ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions '''primaires''' et une partition '''étendue''' qui est un conteneur de partitions '''logiques'''.

Pour un disque '''SCSI''', Linux limite le nombre de partitions logiques à 12 (ce qui fait quand même un total de 15 partitions utilisables). &lt;br /&gt;
Pour un disque '''IDE''', 60 partitions logiques peuvent être crées dans la partition étendue (donc 63 partitions utilisables).

Une partition logique contenant un pointeur vers le début de la partition logique suivante (chaînage), le nombre de partitions logiques pourrait donc être '''infini'''. &lt;br /&gt;
Mais, pour des raisons de nommages de périphériques (un octet pour &quot;major&quot;, &quot;minor&quot;), ce nombre maximal a dû être limité.

La limitation au nombre de 4 partitions primaires (ou 3 primaires + 1 étendue) est due au format de la table de partition contenue dans le '''M'''aster '''B'''oot '''R'''ecord (MBR), premier secteur (512 octets) du disque. &lt;br /&gt;
Cette limitation saute avec le nouveau format GPT ('''G'''UID '''P'''artition '''T'''able) utilisé notamment sur les machines avec firmware EFI ('''E'''xtensible '''F'''irmware '''I'''nterface) en surcouche du BIOS.

Voir : &lt;br /&gt;
http://www.tldp.org/HOWTO/Partition/partition-types.html#logical &lt;br /&gt;
http://www.tldp.org/HOWTO/Partition/devices.html

== Le système de fichier ==

Le système de fichier

Un système de fichiers (file system ou filesystem en anglais) ou système de gestion de fichiers (SGF) est une façon de stocker les informations et de les organiser dans des fichiers sur les supports de stockage.

Le système de fichiers proposé par défaut par l'installeur de Debian est '''Ext3''' (Extented FS version 3). Ext3 (sorti en 1999) est une évolution de '''Ext2''', le précédent système de fichiers utilisé par défaut par Debian depuis 1993.

Les Ext? sont des systèmes de fichiers bâtis sur la même structure mais avec des fonctionnalités rajoutées (journaux) et des algorithmes (d'allocation de blocs par exemple) différents suivant les versions.

Ext3 alloue les blocs libres juste à côté des autres blocs utilisés par le fichier, ce qui a pour effet de minimiser l'espace physique entre les blocs (limitant la fragmentation).

'''Ext4''' (sorti en 2006) est le successeur du système de fichiers ext3, principalement destiné aux systèmes basés sur GNU/Linux. Il est disponible à l'installation depuis Squeeze.

Il garde une compatibilité avec son prédécesseur et est considéré par ses propres concepteurs comme une étape intermédiaire devant mener à un vrai système de fichiers de nouvelle génération tel que [[Btrfs|Btrfs]]. Toutefois, Ext4 est une étape utile et non une simple solution temporaire.

Outre le fait qu'il puisse gérer les volumes d'une taille allant jusqu'à 1 024 pébioctets (1 pébioctet (Pio) = 10&lt;sup&gt;15&lt;/sup&gt; octets), la fonctionnalité majeure de ext4 est l'allocation par extent qui permettent la pré-allocation d'une zone contigüe pour un fichier, pour minimiser la fragmentation. L'option extent est active par défaut depuis le noyau Linux 2.6.23 ; avant cela, elle devait être explicitement indiquée lors du montage de la partition.

Ext2/3/4 ont un algorithme d'allocation de blocs cherchant à éviter la fragmentation, algorithme perfectionné en permanence. Cela se fait par des systèmes de pré-allocation puis de défragmentation à l'utilisation du disque. C'est pour cela que les outils de défragmentation n'existent pas pour ces systèmes de fichiers. La simple utilisation régulière suffit à défragmenter le système.

Ext4 est plus rapide, mais il est encore en phase de développement. Bien qu'il soit déjà beaucoup utilisé, sa stabilité n'est pas garantie. Pour un serveur et des données sensibles, choisissez de préférence Ext3.

Les partitions de type Ext? ont besoin d'une vérification périodique de l'intégrité du système de fichier, et cela peut prendre au démarrage un temps non négligeable lorsque la taille de la partition est importante. Cette vérification est conseillée et effectuée par défaut de manière régulière (modifiée par tune2fs). Grâce à la journalisation, les arrêts sauvages (démontage de la partition non fait proprement par le système) de disque sont moins gênants avec Ext3 et Ext4 qui ne feront pas forcément une vérification de l'intégrité du système au démarrage suivant.

Il peut être toutefois judicieux, sur un serveur de choisir Ext2 pour certaines partitions (/var/log et /tmp par exemple). En effet Ext2 permet de récupérer des fichiers (ici les logs et les fichiers temporaires) facilement, pas ses successeurs.

D'autres systèmes de fichiers peuvent être utilisés sur certaines partitions. '''xfs''' par exemple a de bonnes performances avec de nombreux petits fichiers.

Il est impossible de transformer une partition existante d'un système de fichiers à un autre (sauf parfois pour les ext? qui ont une structure commune), le choix du système de fichiers est donc définitif.

Le système de fichiers lisible par *tous* les OS même les plus anciens est FAT32 mais il est très primaire, interdit les gros fichiers et ne permet pas (ou difficilement) d'installer un linux.

Vous le voyez, tout comme le nombre de partitions et la taille des partitions, le choix du système de fichier n'est pas forcément une chose simple. Soyez prudents et faites confiance à l'installeur...

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 20 GB (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}
| Etendue
| SWAP 1 fois et demi la Ram
|- {{ligne grise}}
| Etendue
| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GB :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 3 GB
|- {{ligne grise}}
| Etendue
| SWAP 5 GB
|- {{ligne grise}}
| Etendue
| /tmp 5 GB
|- {{ligne grise}}
| Etendue
| /usr 15 GB
|- {{ligne grise}}
| Etendue
| /var 5 GB
|- {{ligne grise}}
| Etendue
| /home 317 GB
|}


Pour un serveur, avec 2 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 100 GB :

(Serveur de mail, quelques bases SQL, Serveur Web, un home limité, pour quelques utilisateurs sftp)

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 350 MB
|- {{ligne grise}}
| Etendue
| /boot 50 MB
|- {{ligne grise}}
| Etendue
| /usr 10 GB
|- {{ligne grise}}
| Etendue
| /var 70 GB
|- {{ligne grise}}
| Etendue
| SWAP 4 GB
|- {{ligne grise}}
| Etendue
| /tmp 10 GB
|- {{ligne grise}}
| Etendue
| /home 5,6 GB
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>2tjjqofl98kjwu1idg83owiw67emb5x</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5494</id>
      <parentid>5493</parentid>
      <timestamp>2013-12-14T07:29:18Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Les partitions */</comment>
      <text xml:space="preserve" bytes="21158">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===

&lt;br&gt;Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.jpeg|left]]&lt;br&gt;&lt;br&gt;&lt;br&gt;

Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.&lt;br&gt;&lt;br&gt;

Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à la carte mère). Les plus courantes actuellement sont:&lt;br&gt;&lt;br&gt;

- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg|80px|right]]&lt;br&gt;&lt;br&gt;

- Serial ATA ou SATA (Serial Advanced Technology Attachment) [[Fichier:SATA Data Cable.jpg|80px|right]]&lt;br&gt;&lt;br&gt;

- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg|80px|right]]

&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;

=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur.

Les informations sur les partitions sont conservées sur le disque lui-même dans une zone qu'on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du disque (Master Boot Record ou MBR) qui peut contenir également le programme d'amorçage.

Voici un exemple de partitionnement:

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux

Une partition primaire : sda1.

Une partition étendue : sda2 qui est un conteneur de partitions logiques.

Cinq partitions logiques : sda5 à sda9.

=== Généralités ===

'''Pourquoi partitionner ?'''

Vous pourriez envisager de n'avoir qu'une seule partition contenant tout votre système...
La plupart d'entre nous choisissent de créer plus de partitions que le minimum dont Debian a besoin pour fonctionner. Pourquoi ?

'''Principalement pour des raison de sécurité''': Si une partition est corrompue, le reste du système est toujours accessible. Il suffit généralement de restaurer une sauvegarde de la partition corrompue pour régler le problème.

Mais aussi pour séparer les partitions qui risqueraient d'être submergées de fichiers (Par exemple /var pour un serveur de mail qui serait attaqué par un envoi massif...). Le reste du système serait alors toujours opérationnel.


Séparer les autres partitions de la racine &quot;/&quot; permet, en cas de corruption d'une autre partition, de toujours pouvoir amorcer Linux pour réparer le système...
Vous voulez en effet pouvoir être en mesure de démarrer en &quot;Single user mode&quot; pour restaurer votre station ou serveur... Ce qui exige une racine «intacte».


La seconde difficulté (après le choix du nombre de partitions) sera de définir la taille de ces partitions... Une taille trop petite rendra rapidement votre système inutilisable. Une taille trop grande gâche de l'espace disque (qui même s'il n'est pas cher peut être utile ailleurs...)


Les remarques qui suivent sont des préconisations Debian:

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, une simple partition / (plus celle d'échange) est sans doute la solution la plus simple. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système. '''Il est donc donc généralement conseillé, en plus de la partition d'échange (swap) de créer une partition / ET une partition /home'''.

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de la distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installation y déploient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes Linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.


'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.''' et, dixit MisterFreeze, « de la religion de l'administrateur »... ;-)

N'espérez pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;15%&quot;| Répertoire
! Contenu
|-{{ligne grise}}
| /
| La racine (partition root), qui contient tous les autres répertoires
|}

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;15%&quot;| Répertoire
! Contenu
|-{{ligne grise}}
| /bin
| Binaires (exécutables) des commandes essentielles
|-{{ligne grise}}
| /boot
| Fichiers statiques pour le programme d'amorçage
|-{{ligne grise}}
| /dev
| Fichiers des pilotes de périphériques
|-{{ligne grise}}
| /etc
| Configuration système propre à la machine
|-{{ligne grise}}
| /home
| Répertoires personnels des utilisateurs
|-{{ligne grise}}
| /lib
| Bibliothèques partagées et modules noyaux essentiels
|-{{ligne grise}}
| /media
| Points de montage pour les supports amovibles
|-{{ligne grise}}
| /mnt
| Point de montage pour les montages temporaires
|-{{ligne grise}}
| /proc
| Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
|-{{ligne grise}}
| /root
| Répertoire personnel de l'utilisateur root
|-{{ligne grise}}
| /sbin
| Exécutables système essentiels
|-{{ligne grise}}
| /sys
| Répertoire virtuel pour les informations système (noyaux 2.6)
|-{{ligne grise}}
| /tmp
| Fichiers temporaires
|-{{ligne grise}}
| /usr
| Hiérarchie secondaire
|-{{ligne grise}}
| /var
| Données variables
|-{{ligne grise}}
| /srv
| Données pour les services fournis par le système
|-{{ligne grise}}
| /opt
| Répertoire pour d'autres logiciels
|}

Plus de détails dans [[Man_hier|$ man hier]]

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessiter plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives)
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4G de swap pour pouvoir bénéficier de l'hibernation.

== Primaires, étendue, logiques ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions '''primaires''' et une partition '''étendue''' qui est un conteneur de partitions '''logiques'''.

Pour un disque '''SCSI''', Linux limite le nombre de partitions logiques à 12 (ce qui fait quand même un total de 15 partitions utilisables). &lt;br /&gt;
Pour un disque '''IDE''', 60 partitions logiques peuvent être crées dans la partition étendue (donc 63 partitions utilisables).

Une partition logique contenant un pointeur vers le début de la partition logique suivante (chaînage), le nombre de partitions logiques pourrait donc être '''infini'''. &lt;br /&gt;
Mais, pour des raisons de nommages de périphériques (un octet pour &quot;major&quot;, &quot;minor&quot;), ce nombre maximal a dû être limité.

La limitation au nombre de 4 partitions primaires (ou 3 primaires + 1 étendue) est due au format de la table de partition contenue dans le '''M'''aster '''B'''oot '''R'''ecord (MBR), premier secteur (512 octets) du disque. &lt;br /&gt;
Cette limitation saute avec le nouveau format GPT ('''G'''UID '''P'''artition '''T'''able) utilisé notamment sur les machines avec firmware EFI ('''E'''xtensible '''F'''irmware '''I'''nterface) en surcouche du BIOS.

Voir : &lt;br /&gt;
http://www.tldp.org/HOWTO/Partition/partition-types.html#logical &lt;br /&gt;
http://www.tldp.org/HOWTO/Partition/devices.html

== Le système de fichier ==

Le système de fichier

Un système de fichiers (file system ou filesystem en anglais) ou système de gestion de fichiers (SGF) est une façon de stocker les informations et de les organiser dans des fichiers sur les supports de stockage.

Le système de fichiers proposé par défaut par l'installeur de Debian est '''Ext3''' (Extented FS version 3). Ext3 (sorti en 1999) est une évolution de '''Ext2''', le précédent système de fichiers utilisé par défaut par Debian depuis 1993.

Les Ext? sont des systèmes de fichiers bâtis sur la même structure mais avec des fonctionnalités rajoutées (journaux) et des algorithmes (d'allocation de blocs par exemple) différents suivant les versions.

Ext3 alloue les blocs libres juste à côté des autres blocs utilisés par le fichier, ce qui a pour effet de minimiser l'espace physique entre les blocs (limitant la fragmentation).

'''Ext4''' (sorti en 2006) est le successeur du système de fichiers ext3, principalement destiné aux systèmes basés sur GNU/Linux. Il est disponible à l'installation depuis Squeeze.

Il garde une compatibilité avec son prédécesseur et est considéré par ses propres concepteurs comme une étape intermédiaire devant mener à un vrai système de fichiers de nouvelle génération tel que [[Btrfs|Btrfs]]. Toutefois, Ext4 est une étape utile et non une simple solution temporaire.

Outre le fait qu'il puisse gérer les volumes d'une taille allant jusqu'à 1 024 pébioctets (1 pébioctet (Pio) = 10&lt;sup&gt;15&lt;/sup&gt; octets), la fonctionnalité majeure de ext4 est l'allocation par extent qui permettent la pré-allocation d'une zone contigüe pour un fichier, pour minimiser la fragmentation. L'option extent est active par défaut depuis le noyau Linux 2.6.23 ; avant cela, elle devait être explicitement indiquée lors du montage de la partition.

Ext2/3/4 ont un algorithme d'allocation de blocs cherchant à éviter la fragmentation, algorithme perfectionné en permanence. Cela se fait par des systèmes de pré-allocation puis de défragmentation à l'utilisation du disque. C'est pour cela que les outils de défragmentation n'existent pas pour ces systèmes de fichiers. La simple utilisation régulière suffit à défragmenter le système.

Ext4 est plus rapide, mais il est encore en phase de développement. Bien qu'il soit déjà beaucoup utilisé, sa stabilité n'est pas garantie. Pour un serveur et des données sensibles, choisissez de préférence Ext3.

Les partitions de type Ext? ont besoin d'une vérification périodique de l'intégrité du système de fichier, et cela peut prendre au démarrage un temps non négligeable lorsque la taille de la partition est importante. Cette vérification est conseillée et effectuée par défaut de manière régulière (modifiée par tune2fs). Grâce à la journalisation, les arrêts sauvages (démontage de la partition non fait proprement par le système) de disque sont moins gênants avec Ext3 et Ext4 qui ne feront pas forcément une vérification de l'intégrité du système au démarrage suivant.

Il peut être toutefois judicieux, sur un serveur de choisir Ext2 pour certaines partitions (/var/log et /tmp par exemple). En effet Ext2 permet de récupérer des fichiers (ici les logs et les fichiers temporaires) facilement, pas ses successeurs.

D'autres systèmes de fichiers peuvent être utilisés sur certaines partitions. '''xfs''' par exemple a de bonnes performances avec de nombreux petits fichiers.

Il est impossible de transformer une partition existante d'un système de fichiers à un autre (sauf parfois pour les ext? qui ont une structure commune), le choix du système de fichiers est donc définitif.

Le système de fichiers lisible par *tous* les OS même les plus anciens est FAT32 mais il est très primaire, interdit les gros fichiers et ne permet pas (ou difficilement) d'installer un linux.

Vous le voyez, tout comme le nombre de partitions et la taille des partitions, le choix du système de fichier n'est pas forcément une chose simple. Soyez prudents et faites confiance à l'installeur...

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 20 GB (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}
| Etendue
| SWAP 1 fois et demi la Ram
|- {{ligne grise}}
| Etendue
| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GB :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 3 GB
|- {{ligne grise}}
| Etendue
| SWAP 5 GB
|- {{ligne grise}}
| Etendue
| /tmp 5 GB
|- {{ligne grise}}
| Etendue
| /usr 15 GB
|- {{ligne grise}}
| Etendue
| /var 5 GB
|- {{ligne grise}}
| Etendue
| /home 317 GB
|}


Pour un serveur, avec 2 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 100 GB :

(Serveur de mail, quelques bases SQL, Serveur Web, un home limité, pour quelques utilisateurs sftp)

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur
!width=&quot;20%&quot;| Type
! Nom de la partition
|-
| Primaire
| / 350 MB
|- {{ligne grise}}
| Etendue
| /boot 50 MB
|- {{ligne grise}}
| Etendue
| /usr 10 GB
|- {{ligne grise}}
| Etendue
| /var 70 GB
|- {{ligne grise}}
| Etendue
| SWAP 4 GB
|- {{ligne grise}}
| Etendue
| /tmp 10 GB
|- {{ligne grise}}
| Etendue
| /home 5,6 GB
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>9sh6gxdi45z3tr2bkafybaoa58lffrw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5497</id>
      <parentid>5494</parentid>
      <timestamp>2013-12-14T14:55:51Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Exemples de partitionnements */ une partition étendue ne peux pas être formatée, elle ne peux que contenir des partitions logiques, et qu'elle soit primaire ou logique n'a aucune importance pour debian</comment>
      <text xml:space="preserve" bytes="20957">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===

&lt;br&gt;Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.jpeg|left]]&lt;br&gt;&lt;br&gt;&lt;br&gt;

Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.&lt;br&gt;&lt;br&gt;

Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à la carte mère). Les plus courantes actuellement sont:&lt;br&gt;&lt;br&gt;

- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg|80px|right]]&lt;br&gt;&lt;br&gt;

- Serial ATA ou SATA (Serial Advanced Technology Attachment) [[Fichier:SATA Data Cable.jpg|80px|right]]&lt;br&gt;&lt;br&gt;

- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg|80px|right]]

&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;

=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur.

Les informations sur les partitions sont conservées sur le disque lui-même dans une zone qu'on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du disque (Master Boot Record ou MBR) qui peut contenir également le programme d'amorçage.

Voici un exemple de partitionnement:

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux

Une partition primaire : sda1.

Une partition étendue : sda2 qui est un conteneur de partitions logiques.

Cinq partitions logiques : sda5 à sda9.

=== Généralités ===

'''Pourquoi partitionner ?'''

Vous pourriez envisager de n'avoir qu'une seule partition contenant tout votre système...
La plupart d'entre nous choisissent de créer plus de partitions que le minimum dont Debian a besoin pour fonctionner. Pourquoi ?

'''Principalement pour des raison de sécurité''': Si une partition est corrompue, le reste du système est toujours accessible. Il suffit généralement de restaurer une sauvegarde de la partition corrompue pour régler le problème.

Mais aussi pour séparer les partitions qui risqueraient d'être submergées de fichiers (Par exemple /var pour un serveur de mail qui serait attaqué par un envoi massif...). Le reste du système serait alors toujours opérationnel.


Séparer les autres partitions de la racine &quot;/&quot; permet, en cas de corruption d'une autre partition, de toujours pouvoir amorcer Linux pour réparer le système...
Vous voulez en effet pouvoir être en mesure de démarrer en &quot;Single user mode&quot; pour restaurer votre station ou serveur... Ce qui exige une racine «intacte».


La seconde difficulté (après le choix du nombre de partitions) sera de définir la taille de ces partitions... Une taille trop petite rendra rapidement votre système inutilisable. Une taille trop grande gâche de l'espace disque (qui même s'il n'est pas cher peut être utile ailleurs...)


Les remarques qui suivent sont des préconisations Debian:

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, une simple partition / (plus celle d'échange) est sans doute la solution la plus simple. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système. '''Il est donc donc généralement conseillé, en plus de la partition d'échange (swap) de créer une partition / ET une partition /home'''.

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de la distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installation y déploient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes Linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.


'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.''' et, dixit MisterFreeze, « de la religion de l'administrateur »... ;-)

N'espérez pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;15%&quot;| Répertoire
! Contenu
|-{{ligne grise}}
| /
| La racine (partition root), qui contient tous les autres répertoires
|}

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;15%&quot;| Répertoire
! Contenu
|-{{ligne grise}}
| /bin
| Binaires (exécutables) des commandes essentielles
|-{{ligne grise}}
| /boot
| Fichiers statiques pour le programme d'amorçage
|-{{ligne grise}}
| /dev
| Fichiers des pilotes de périphériques
|-{{ligne grise}}
| /etc
| Configuration système propre à la machine
|-{{ligne grise}}
| /home
| Répertoires personnels des utilisateurs
|-{{ligne grise}}
| /lib
| Bibliothèques partagées et modules noyaux essentiels
|-{{ligne grise}}
| /media
| Points de montage pour les supports amovibles
|-{{ligne grise}}
| /mnt
| Point de montage pour les montages temporaires
|-{{ligne grise}}
| /proc
| Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
|-{{ligne grise}}
| /root
| Répertoire personnel de l'utilisateur root
|-{{ligne grise}}
| /sbin
| Exécutables système essentiels
|-{{ligne grise}}
| /sys
| Répertoire virtuel pour les informations système (noyaux 2.6)
|-{{ligne grise}}
| /tmp
| Fichiers temporaires
|-{{ligne grise}}
| /usr
| Hiérarchie secondaire
|-{{ligne grise}}
| /var
| Données variables
|-{{ligne grise}}
| /srv
| Données pour les services fournis par le système
|-{{ligne grise}}
| /opt
| Répertoire pour d'autres logiciels
|}

Plus de détails dans [[Man_hier|$ man hier]]

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessiter plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives)
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4G de swap pour pouvoir bénéficier de l'hibernation.

== Primaires, étendue, logiques ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions '''primaires''' et une partition '''étendue''' qui est un conteneur de partitions '''logiques'''.

Pour un disque '''SCSI''', Linux limite le nombre de partitions logiques à 12 (ce qui fait quand même un total de 15 partitions utilisables). &lt;br /&gt;
Pour un disque '''IDE''', 60 partitions logiques peuvent être crées dans la partition étendue (donc 63 partitions utilisables).

Une partition logique contenant un pointeur vers le début de la partition logique suivante (chaînage), le nombre de partitions logiques pourrait donc être '''infini'''. &lt;br /&gt;
Mais, pour des raisons de nommages de périphériques (un octet pour &quot;major&quot;, &quot;minor&quot;), ce nombre maximal a dû être limité.

La limitation au nombre de 4 partitions primaires (ou 3 primaires + 1 étendue) est due au format de la table de partition contenue dans le '''M'''aster '''B'''oot '''R'''ecord (MBR), premier secteur (512 octets) du disque. &lt;br /&gt;
Cette limitation saute avec le nouveau format GPT ('''G'''UID '''P'''artition '''T'''able) utilisé notamment sur les machines avec firmware EFI ('''E'''xtensible '''F'''irmware '''I'''nterface) en surcouche du BIOS.

Voir : &lt;br /&gt;
http://www.tldp.org/HOWTO/Partition/partition-types.html#logical &lt;br /&gt;
http://www.tldp.org/HOWTO/Partition/devices.html

== Le système de fichier ==

Le système de fichier

Un système de fichiers (file system ou filesystem en anglais) ou système de gestion de fichiers (SGF) est une façon de stocker les informations et de les organiser dans des fichiers sur les supports de stockage.

Le système de fichiers proposé par défaut par l'installeur de Debian est '''Ext3''' (Extented FS version 3). Ext3 (sorti en 1999) est une évolution de '''Ext2''', le précédent système de fichiers utilisé par défaut par Debian depuis 1993.

Les Ext? sont des systèmes de fichiers bâtis sur la même structure mais avec des fonctionnalités rajoutées (journaux) et des algorithmes (d'allocation de blocs par exemple) différents suivant les versions.

Ext3 alloue les blocs libres juste à côté des autres blocs utilisés par le fichier, ce qui a pour effet de minimiser l'espace physique entre les blocs (limitant la fragmentation).

'''Ext4''' (sorti en 2006) est le successeur du système de fichiers ext3, principalement destiné aux systèmes basés sur GNU/Linux. Il est disponible à l'installation depuis Squeeze.

Il garde une compatibilité avec son prédécesseur et est considéré par ses propres concepteurs comme une étape intermédiaire devant mener à un vrai système de fichiers de nouvelle génération tel que [[Btrfs|Btrfs]]. Toutefois, Ext4 est une étape utile et non une simple solution temporaire.

Outre le fait qu'il puisse gérer les volumes d'une taille allant jusqu'à 1 024 pébioctets (1 pébioctet (Pio) = 10&lt;sup&gt;15&lt;/sup&gt; octets), la fonctionnalité majeure de ext4 est l'allocation par extent qui permettent la pré-allocation d'une zone contigüe pour un fichier, pour minimiser la fragmentation. L'option extent est active par défaut depuis le noyau Linux 2.6.23 ; avant cela, elle devait être explicitement indiquée lors du montage de la partition.

Ext2/3/4 ont un algorithme d'allocation de blocs cherchant à éviter la fragmentation, algorithme perfectionné en permanence. Cela se fait par des systèmes de pré-allocation puis de défragmentation à l'utilisation du disque. C'est pour cela que les outils de défragmentation n'existent pas pour ces systèmes de fichiers. La simple utilisation régulière suffit à défragmenter le système.

Ext4 est plus rapide, mais il est encore en phase de développement. Bien qu'il soit déjà beaucoup utilisé, sa stabilité n'est pas garantie. Pour un serveur et des données sensibles, choisissez de préférence Ext3.

Les partitions de type Ext? ont besoin d'une vérification périodique de l'intégrité du système de fichier, et cela peut prendre au démarrage un temps non négligeable lorsque la taille de la partition est importante. Cette vérification est conseillée et effectuée par défaut de manière régulière (modifiée par tune2fs). Grâce à la journalisation, les arrêts sauvages (démontage de la partition non fait proprement par le système) de disque sont moins gênants avec Ext3 et Ext4 qui ne feront pas forcément une vérification de l'intégrité du système au démarrage suivant.

Il peut être toutefois judicieux, sur un serveur de choisir Ext2 pour certaines partitions (/var/log et /tmp par exemple). En effet Ext2 permet de récupérer des fichiers (ici les logs et les fichiers temporaires) facilement, pas ses successeurs.

D'autres systèmes de fichiers peuvent être utilisés sur certaines partitions. '''xfs''' par exemple a de bonnes performances avec de nombreux petits fichiers.

Il est impossible de transformer une partition existante d'un système de fichiers à un autre (sauf parfois pour les ext? qui ont une structure commune), le choix du système de fichiers est donc définitif.

Le système de fichiers lisible par *tous* les OS même les plus anciens est FAT32 mais il est très primaire, interdit les gros fichiers et ne permet pas (ou difficilement) d'installer un linux.

Vous le voyez, tout comme le nombre de partitions et la taille des partitions, le choix du système de fichier n'est pas forcément une chose simple. Soyez prudents et faites confiance à l'installeur...

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)

! Nom de la partition
|-

| / 20 GB (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}

| SWAP 1 fois et demi la Ram
|- {{ligne grise}}

| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GB :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)

! Nom de la partition
|-

| / 3 GB
|- {{ligne grise}}

| SWAP 5 GB
|- {{ligne grise}}

| /tmp 5 GB
|- {{ligne grise}}

| /usr 15 GB
|- {{ligne grise}}

| /var 5 GB
|- {{ligne grise}}

| /home 317 GB
|}


Pour un serveur, avec 2 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 100 GB :

(Serveur de mail, quelques bases SQL, Serveur Web, un home limité, pour quelques utilisateurs sftp)

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur

! Nom de la partition
|-

| / 350 MB
|- {{ligne grise}}

| /boot 50 MB
|- {{ligne grise}}

| /usr 10 GB
|- {{ligne grise}}

| /var 70 GB
|- {{ligne grise}}

| SWAP 4 GB
|- {{ligne grise}}

| /tmp 10 GB
|- {{ligne grise}}

| /home 5,6 GB
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>0urycgg9g8kzxi9g1vziqsc4fxk43ej</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5498</id>
      <parentid>5497</parentid>
      <timestamp>2013-12-14T15:18:01Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Le système de fichier */ erreurs ext3 (extent) et ext4 (instable)</comment>
      <text xml:space="preserve" bytes="20651">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===

&lt;br&gt;Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.jpeg|left]]&lt;br&gt;&lt;br&gt;&lt;br&gt;

Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.&lt;br&gt;&lt;br&gt;

Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à la carte mère). Les plus courantes actuellement sont:&lt;br&gt;&lt;br&gt;

- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg|80px|right]]&lt;br&gt;&lt;br&gt;

- Serial ATA ou SATA (Serial Advanced Technology Attachment) [[Fichier:SATA Data Cable.jpg|80px|right]]&lt;br&gt;&lt;br&gt;

- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg|80px|right]]

&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;

=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur.

Les informations sur les partitions sont conservées sur le disque lui-même dans une zone qu'on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du disque (Master Boot Record ou MBR) qui peut contenir également le programme d'amorçage.

Voici un exemple de partitionnement:

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux

Une partition primaire : sda1.

Une partition étendue : sda2 qui est un conteneur de partitions logiques.

Cinq partitions logiques : sda5 à sda9.

=== Généralités ===

'''Pourquoi partitionner ?'''

Vous pourriez envisager de n'avoir qu'une seule partition contenant tout votre système...
La plupart d'entre nous choisissent de créer plus de partitions que le minimum dont Debian a besoin pour fonctionner. Pourquoi ?

'''Principalement pour des raison de sécurité''': Si une partition est corrompue, le reste du système est toujours accessible. Il suffit généralement de restaurer une sauvegarde de la partition corrompue pour régler le problème.

Mais aussi pour séparer les partitions qui risqueraient d'être submergées de fichiers (Par exemple /var pour un serveur de mail qui serait attaqué par un envoi massif...). Le reste du système serait alors toujours opérationnel.


Séparer les autres partitions de la racine &quot;/&quot; permet, en cas de corruption d'une autre partition, de toujours pouvoir amorcer Linux pour réparer le système...
Vous voulez en effet pouvoir être en mesure de démarrer en &quot;Single user mode&quot; pour restaurer votre station ou serveur... Ce qui exige une racine «intacte».


La seconde difficulté (après le choix du nombre de partitions) sera de définir la taille de ces partitions... Une taille trop petite rendra rapidement votre système inutilisable. Une taille trop grande gâche de l'espace disque (qui même s'il n'est pas cher peut être utile ailleurs...)


Les remarques qui suivent sont des préconisations Debian:

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, une simple partition / (plus celle d'échange) est sans doute la solution la plus simple. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système. '''Il est donc donc généralement conseillé, en plus de la partition d'échange (swap) de créer une partition / ET une partition /home'''.

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de la distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installation y déploient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes Linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.


'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.''' et, dixit MisterFreeze, « de la religion de l'administrateur »... ;-)

N'espérez pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;15%&quot;| Répertoire
! Contenu
|-{{ligne grise}}
| /
| La racine (partition root), qui contient tous les autres répertoires
|}

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;15%&quot;| Répertoire
! Contenu
|-{{ligne grise}}
| /bin
| Binaires (exécutables) des commandes essentielles
|-{{ligne grise}}
| /boot
| Fichiers statiques pour le programme d'amorçage
|-{{ligne grise}}
| /dev
| Fichiers des pilotes de périphériques
|-{{ligne grise}}
| /etc
| Configuration système propre à la machine
|-{{ligne grise}}
| /home
| Répertoires personnels des utilisateurs
|-{{ligne grise}}
| /lib
| Bibliothèques partagées et modules noyaux essentiels
|-{{ligne grise}}
| /media
| Points de montage pour les supports amovibles
|-{{ligne grise}}
| /mnt
| Point de montage pour les montages temporaires
|-{{ligne grise}}
| /proc
| Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
|-{{ligne grise}}
| /root
| Répertoire personnel de l'utilisateur root
|-{{ligne grise}}
| /sbin
| Exécutables système essentiels
|-{{ligne grise}}
| /sys
| Répertoire virtuel pour les informations système (noyaux 2.6)
|-{{ligne grise}}
| /tmp
| Fichiers temporaires
|-{{ligne grise}}
| /usr
| Hiérarchie secondaire
|-{{ligne grise}}
| /var
| Données variables
|-{{ligne grise}}
| /srv
| Données pour les services fournis par le système
|-{{ligne grise}}
| /opt
| Répertoire pour d'autres logiciels
|}

Plus de détails dans [[Man_hier|$ man hier]]

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessiter plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives)
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4G de swap pour pouvoir bénéficier de l'hibernation.

== Primaires, étendue, logiques ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions '''primaires''' et une partition '''étendue''' qui est un conteneur de partitions '''logiques'''.

Pour un disque '''SCSI''', Linux limite le nombre de partitions logiques à 12 (ce qui fait quand même un total de 15 partitions utilisables). &lt;br /&gt;
Pour un disque '''IDE''', 60 partitions logiques peuvent être crées dans la partition étendue (donc 63 partitions utilisables).

Une partition logique contenant un pointeur vers le début de la partition logique suivante (chaînage), le nombre de partitions logiques pourrait donc être '''infini'''. &lt;br /&gt;
Mais, pour des raisons de nommages de périphériques (un octet pour &quot;major&quot;, &quot;minor&quot;), ce nombre maximal a dû être limité.

La limitation au nombre de 4 partitions primaires (ou 3 primaires + 1 étendue) est due au format de la table de partition contenue dans le '''M'''aster '''B'''oot '''R'''ecord (MBR), premier secteur (512 octets) du disque. &lt;br /&gt;
Cette limitation saute avec le nouveau format GPT ('''G'''UID '''P'''artition '''T'''able) utilisé notamment sur les machines avec firmware EFI ('''E'''xtensible '''F'''irmware '''I'''nterface) en surcouche du BIOS.

Voir : &lt;br /&gt;
http://www.tldp.org/HOWTO/Partition/partition-types.html#logical &lt;br /&gt;
http://www.tldp.org/HOWTO/Partition/devices.html

== Le système de fichier ==

Le système de fichier

Un système de fichiers (file system ou filesystem en anglais) ou système de gestion de fichiers (SGF) est une façon de stocker les informations et de les organiser dans des fichiers sur les supports de stockage.

Le système de fichiers proposé par défaut par l'installeur de Debian est '''Ext3''' (Extented FS version 3). Ext3 (sorti en 1999) est une évolution de '''Ext2''', le précédent système de fichiers utilisé par défaut par Debian depuis 1993.

Les Ext? sont des systèmes de fichiers bâtis sur la même structure mais avec des fonctionnalités rajoutées (journalisation pour ext3) et des algorithmes (pré-allocation de blocs &quot;extent&quot; pour ext4) différents suivant les versions.

Ext4 alloue les blocs libres juste à côté des autres blocs utilisés par le fichier, ce qui a pour effet de minimiser l'espace physique entre les blocs (limitant la fragmentation).

'''Ext4''' (sorti en 2006) est le successeur du système de fichiers ext3, principalement destiné aux systèmes basés sur GNU/Linux. Il est disponible à l'installation depuis Squeeze.

Il garde une compatibilité avec son prédécesseur et est considéré par ses propres concepteurs comme une étape intermédiaire devant mener à un vrai système de fichiers de nouvelle génération tel que [[Btrfs|Btrfs]]. Toutefois, Ext4 est une étape utile et non une simple solution temporaire.

Outre le fait qu'il puisse gérer les volumes d'une taille allant jusqu'à un exbioctet (2&lt;sup&gt;60&lt;/sup&gt;octets), la fonctionnalité majeure de ext4 est l'allocation par &quot;extent&quot; qui permettent la pré-allocation d'une zone contigüe pour un fichier, pour minimiser la fragmentation. L'option extent est active par défaut depuis le noyau Linux 2.6.23 ; avant cela, elle devait être explicitement indiquée lors du montage de la partition.

Ext2/3/4 ont un algorithme d'allocation de blocs cherchant à éviter la fragmentation, algorithme perfectionné en permanence. C'est pour cela que les outils de défragmentation n'existent pas pour ces systèmes de fichiers. La simple utilisation régulière suffit à défragmenter le système.

Les partitions de type Ext? ont besoin d'une vérification périodique de l'intégrité du système de fichier, et cela peut prendre au démarrage un temps non négligeable lorsque la taille de la partition est importante. Cette vérification est conseillée et effectuée par défaut de manière régulière (modifiée par tune2fs). Grâce à la journalisation, les arrêts sauvages (démontage de la partition non fait proprement par le système) de disque sont moins gênants avec Ext3 et Ext4 qui ne feront pas forcément une vérification de l'intégrité du système au démarrage suivant.

Il peut être toutefois judicieux, sur un serveur de choisir Ext2 pour certaines partitions (/var/log et /tmp par exemple). En effet Ext2 permet de récupérer des fichiers (ici les logs et les fichiers temporaires) facilement, pas ses successeurs.

D'autres systèmes de fichiers peuvent être utilisés sur certaines partitions. '''xfs''' par exemple a de bonnes performances avec de nombreux petits fichiers.

Il est impossible de transformer une partition existante d'un système de fichiers à un autre (sauf parfois pour les ext? qui ont une structure commune), le choix du système de fichiers est donc définitif.

Le système de fichiers lisible par *tous* les OS même les plus anciens est FAT32 mais il est très primaire, interdit les gros fichiers et ne permet pas (ou difficilement) d'installer un linux.

Vous le voyez, tout comme le nombre de partitions et la taille des partitions, le choix du système de fichier n'est pas forcément une chose simple. Soyez prudents et faites confiance au programme d'installation debian...

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)

! Nom de la partition
|-

| / 20 GB (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}

| SWAP 1 fois et demi la Ram
|- {{ligne grise}}

| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GB :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)

! Nom de la partition
|-

| / 3 GB
|- {{ligne grise}}

| SWAP 5 GB
|- {{ligne grise}}

| /tmp 5 GB
|- {{ligne grise}}

| /usr 15 GB
|- {{ligne grise}}

| /var 5 GB
|- {{ligne grise}}

| /home 317 GB
|}


Pour un serveur, avec 2 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 100 GB :

(Serveur de mail, quelques bases SQL, Serveur Web, un home limité, pour quelques utilisateurs sftp)

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur

! Nom de la partition
|-

| / 350 MB
|- {{ligne grise}}

| /boot 50 MB
|- {{ligne grise}}

| /usr 10 GB
|- {{ligne grise}}

| /var 70 GB
|- {{ligne grise}}

| SWAP 4 GB
|- {{ligne grise}}

| /tmp 10 GB
|- {{ligne grise}}

| /home 5,6 GB
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>gatxem4m16neqt3bxqyfnjzmppevvqi</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5499</id>
      <parentid>5498</parentid>
      <timestamp>2013-12-14T15:23:34Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Le système de fichier */  MàJ : fs par defaut =&gt; ext4</comment>
      <text xml:space="preserve" bytes="20652">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===

&lt;br&gt;Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.jpeg|left]]&lt;br&gt;&lt;br&gt;&lt;br&gt;

Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.&lt;br&gt;&lt;br&gt;

Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à la carte mère). Les plus courantes actuellement sont:&lt;br&gt;&lt;br&gt;

- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg|80px|right]]&lt;br&gt;&lt;br&gt;

- Serial ATA ou SATA (Serial Advanced Technology Attachment) [[Fichier:SATA Data Cable.jpg|80px|right]]&lt;br&gt;&lt;br&gt;

- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg|80px|right]]

&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;

=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur.

Les informations sur les partitions sont conservées sur le disque lui-même dans une zone qu'on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du disque (Master Boot Record ou MBR) qui peut contenir également le programme d'amorçage.

Voici un exemple de partitionnement:

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux

Une partition primaire : sda1.

Une partition étendue : sda2 qui est un conteneur de partitions logiques.

Cinq partitions logiques : sda5 à sda9.

=== Généralités ===

'''Pourquoi partitionner ?'''

Vous pourriez envisager de n'avoir qu'une seule partition contenant tout votre système...
La plupart d'entre nous choisissent de créer plus de partitions que le minimum dont Debian a besoin pour fonctionner. Pourquoi ?

'''Principalement pour des raison de sécurité''': Si une partition est corrompue, le reste du système est toujours accessible. Il suffit généralement de restaurer une sauvegarde de la partition corrompue pour régler le problème.

Mais aussi pour séparer les partitions qui risqueraient d'être submergées de fichiers (Par exemple /var pour un serveur de mail qui serait attaqué par un envoi massif...). Le reste du système serait alors toujours opérationnel.


Séparer les autres partitions de la racine &quot;/&quot; permet, en cas de corruption d'une autre partition, de toujours pouvoir amorcer Linux pour réparer le système...
Vous voulez en effet pouvoir être en mesure de démarrer en &quot;Single user mode&quot; pour restaurer votre station ou serveur... Ce qui exige une racine «intacte».


La seconde difficulté (après le choix du nombre de partitions) sera de définir la taille de ces partitions... Une taille trop petite rendra rapidement votre système inutilisable. Une taille trop grande gâche de l'espace disque (qui même s'il n'est pas cher peut être utile ailleurs...)


Les remarques qui suivent sont des préconisations Debian:

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, une simple partition / (plus celle d'échange) est sans doute la solution la plus simple. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système. '''Il est donc donc généralement conseillé, en plus de la partition d'échange (swap) de créer une partition / ET une partition /home'''.

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de la distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installation y déploient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes Linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.


'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.''' et, dixit MisterFreeze, « de la religion de l'administrateur »... ;-)

N'espérez pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;15%&quot;| Répertoire
! Contenu
|-{{ligne grise}}
| /
| La racine (partition root), qui contient tous les autres répertoires
|}

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;15%&quot;| Répertoire
! Contenu
|-{{ligne grise}}
| /bin
| Binaires (exécutables) des commandes essentielles
|-{{ligne grise}}
| /boot
| Fichiers statiques pour le programme d'amorçage
|-{{ligne grise}}
| /dev
| Fichiers des pilotes de périphériques
|-{{ligne grise}}
| /etc
| Configuration système propre à la machine
|-{{ligne grise}}
| /home
| Répertoires personnels des utilisateurs
|-{{ligne grise}}
| /lib
| Bibliothèques partagées et modules noyaux essentiels
|-{{ligne grise}}
| /media
| Points de montage pour les supports amovibles
|-{{ligne grise}}
| /mnt
| Point de montage pour les montages temporaires
|-{{ligne grise}}
| /proc
| Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
|-{{ligne grise}}
| /root
| Répertoire personnel de l'utilisateur root
|-{{ligne grise}}
| /sbin
| Exécutables système essentiels
|-{{ligne grise}}
| /sys
| Répertoire virtuel pour les informations système (noyaux 2.6)
|-{{ligne grise}}
| /tmp
| Fichiers temporaires
|-{{ligne grise}}
| /usr
| Hiérarchie secondaire
|-{{ligne grise}}
| /var
| Données variables
|-{{ligne grise}}
| /srv
| Données pour les services fournis par le système
|-{{ligne grise}}
| /opt
| Répertoire pour d'autres logiciels
|}

Plus de détails dans [[Man_hier|$ man hier]]

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessiter plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives)
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4G de swap pour pouvoir bénéficier de l'hibernation.

== Primaires, étendue, logiques ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions '''primaires''' et une partition '''étendue''' qui est un conteneur de partitions '''logiques'''.

Pour un disque '''SCSI''', Linux limite le nombre de partitions logiques à 12 (ce qui fait quand même un total de 15 partitions utilisables). &lt;br /&gt;
Pour un disque '''IDE''', 60 partitions logiques peuvent être crées dans la partition étendue (donc 63 partitions utilisables).

Une partition logique contenant un pointeur vers le début de la partition logique suivante (chaînage), le nombre de partitions logiques pourrait donc être '''infini'''. &lt;br /&gt;
Mais, pour des raisons de nommages de périphériques (un octet pour &quot;major&quot;, &quot;minor&quot;), ce nombre maximal a dû être limité.

La limitation au nombre de 4 partitions primaires (ou 3 primaires + 1 étendue) est due au format de la table de partition contenue dans le '''M'''aster '''B'''oot '''R'''ecord (MBR), premier secteur (512 octets) du disque. &lt;br /&gt;
Cette limitation saute avec le nouveau format GPT ('''G'''UID '''P'''artition '''T'''able) utilisé notamment sur les machines avec firmware EFI ('''E'''xtensible '''F'''irmware '''I'''nterface) en surcouche du BIOS.

Voir : &lt;br /&gt;
http://www.tldp.org/HOWTO/Partition/partition-types.html#logical &lt;br /&gt;
http://www.tldp.org/HOWTO/Partition/devices.html

== Le système de fichier ==

Le système de fichier

Un système de fichiers (file system ou filesystem en anglais) ou système de gestion de fichiers (SGF) est une façon de stocker les informations et de les organiser dans des fichiers sur les supports de stockage.

Le système de fichiers proposé par défaut par l'installeur de Debian est '''Ext4''' (Extented FS version 4).

Les Ext? sont des systèmes de fichiers bâtis sur la même structure mais avec des fonctionnalités rajoutées (journalisation pour ext3) et des algorithmes (pré-allocation de blocs &quot;extent&quot; pour ext4) différents suivant les versions.

Ext3 (sorti en 1999) est une évolution de '''Ext2''', le précédent système de fichiers utilisé par défaut par Debian depuis 1993.

Ext4 alloue les blocs libres juste à côté des autres blocs utilisés par le fichier, ce qui a pour effet de minimiser l'espace physique entre les blocs (limitant la fragmentation).

'''Ext4''' (sorti en 2006) est le successeur du système de fichiers ext3, principalement destiné aux systèmes basés sur GNU/Linux. Il est disponible à l'installation depuis Squeeze.

Il garde une compatibilité avec son prédécesseur et est considéré par ses propres concepteurs comme une étape intermédiaire devant mener à un vrai système de fichiers de nouvelle génération tel que [[Btrfs|Btrfs]]. Toutefois, Ext4 est une étape utile et non une simple solution temporaire.

Outre le fait qu'il puisse gérer les volumes d'une taille allant jusqu'à un exbioctet (2&lt;sup&gt;60&lt;/sup&gt;octets), la fonctionnalité majeure de ext4 est l'allocation par &quot;extent&quot; qui permettent la pré-allocation d'une zone contigüe pour un fichier, pour minimiser la fragmentation. L'option extent est active par défaut depuis le noyau Linux 2.6.23 ; avant cela, elle devait être explicitement indiquée lors du montage de la partition.

Ext2/3/4 ont un algorithme d'allocation de blocs cherchant à éviter la fragmentation, algorithme perfectionné en permanence. C'est pour cela que les outils de défragmentation n'existent pas pour ces systèmes de fichiers. La simple utilisation régulière suffit à défragmenter le système.

Les partitions de type Ext? ont besoin d'une vérification périodique de l'intégrité du système de fichier, et cela peut prendre au démarrage un temps non négligeable lorsque la taille de la partition est importante. Cette vérification est conseillée et effectuée par défaut de manière régulière (modifiée par tune2fs). Grâce à la journalisation, les arrêts sauvages (démontage de la partition non fait proprement par le système) de disque sont moins gênants avec Ext3 et Ext4 qui ne feront pas forcément une vérification de l'intégrité du système au démarrage suivant.

Il peut être toutefois judicieux, sur un serveur de choisir Ext2 pour certaines partitions (/var/log et /tmp par exemple). En effet Ext2 permet de récupérer des fichiers (ici les logs et les fichiers temporaires) facilement, pas ses successeurs.

D'autres systèmes de fichiers peuvent être utilisés sur certaines partitions. '''xfs''' par exemple a de bonnes performances avec de nombreux petits fichiers.

Il est impossible de transformer une partition existante d'un système de fichiers à un autre (sauf parfois pour les ext? qui ont une structure commune), le choix du système de fichiers est donc définitif.

Le système de fichiers lisible par *tous* les OS même les plus anciens est FAT32 mais il est très primaire, interdit les gros fichiers et ne permet pas (ou difficilement) d'installer un linux.

Vous le voyez, tout comme le nombre de partitions et la taille des partitions, le choix du système de fichier n'est pas forcément une chose simple. Soyez prudents et faites confiance au programme d'installation Debian...

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)

! Nom de la partition
|-

| / 20 GB (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}

| SWAP 1 fois et demi la Ram
|- {{ligne grise}}

| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GB :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)

! Nom de la partition
|-

| / 3 GB
|- {{ligne grise}}

| SWAP 5 GB
|- {{ligne grise}}

| /tmp 5 GB
|- {{ligne grise}}

| /usr 15 GB
|- {{ligne grise}}

| /var 5 GB
|- {{ligne grise}}

| /home 317 GB
|}


Pour un serveur, avec 2 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 100 GB :

(Serveur de mail, quelques bases SQL, Serveur Web, un home limité, pour quelques utilisateurs sftp)

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur

! Nom de la partition
|-

| / 350 MB
|- {{ligne grise}}

| /boot 50 MB
|- {{ligne grise}}

| /usr 10 GB
|- {{ligne grise}}

| /var 70 GB
|- {{ligne grise}}

| SWAP 4 GB
|- {{ligne grise}}

| /tmp 10 GB
|- {{ligne grise}}

| /home 5,6 GB
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>eeabpjiczkg2lbon256meg9ogtexvgs</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5501</id>
      <parentid>5499</parentid>
      <timestamp>2013-12-14T23:45:22Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* L'organisation des répertoires */  suppression &quot;opt&quot; + reformulation descriptions</comment>
      <text xml:space="preserve" bytes="20741">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===

&lt;br&gt;Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.jpeg|left]]&lt;br&gt;&lt;br&gt;&lt;br&gt;

Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.&lt;br&gt;&lt;br&gt;

Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à la carte mère). Les plus courantes actuellement sont:&lt;br&gt;&lt;br&gt;

- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg|80px|right]]&lt;br&gt;&lt;br&gt;

- Serial ATA ou SATA (Serial Advanced Technology Attachment) [[Fichier:SATA Data Cable.jpg|80px|right]]&lt;br&gt;&lt;br&gt;

- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg|80px|right]]

&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;

=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur.

Les informations sur les partitions sont conservées sur le disque lui-même dans une zone qu'on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du disque (Master Boot Record ou MBR) qui peut contenir également le programme d'amorçage.

Voici un exemple de partitionnement:

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux

Une partition primaire : sda1.

Une partition étendue : sda2 qui est un conteneur de partitions logiques.

Cinq partitions logiques : sda5 à sda9.

=== Généralités ===

'''Pourquoi partitionner ?'''

Vous pourriez envisager de n'avoir qu'une seule partition contenant tout votre système...
La plupart d'entre nous choisissent de créer plus de partitions que le minimum dont Debian a besoin pour fonctionner. Pourquoi ?

'''Principalement pour des raison de sécurité''': Si une partition est corrompue, le reste du système est toujours accessible. Il suffit généralement de restaurer une sauvegarde de la partition corrompue pour régler le problème.

Mais aussi pour séparer les partitions qui risqueraient d'être submergées de fichiers (Par exemple /var pour un serveur de mail qui serait attaqué par un envoi massif...). Le reste du système serait alors toujours opérationnel.


Séparer les autres partitions de la racine &quot;/&quot; permet, en cas de corruption d'une autre partition, de toujours pouvoir amorcer Linux pour réparer le système...
Vous voulez en effet pouvoir être en mesure de démarrer en &quot;Single user mode&quot; pour restaurer votre station ou serveur... Ce qui exige une racine «intacte».


La seconde difficulté (après le choix du nombre de partitions) sera de définir la taille de ces partitions... Une taille trop petite rendra rapidement votre système inutilisable. Une taille trop grande gâche de l'espace disque (qui même s'il n'est pas cher peut être utile ailleurs...)


Les remarques qui suivent sont des préconisations Debian:

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, une simple partition / (plus celle d'échange) est sans doute la solution la plus simple. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système. '''Il est donc donc généralement conseillé, en plus de la partition d'échange (swap) de créer une partition / ET une partition /home'''.

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de la distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installation y déploient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes Linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.


'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.''' et, dixit MisterFreeze, « de la religion de l'administrateur »... ;-)

N'espérez pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;15%&quot;| Répertoire
! Contenu
|-{{ligne grise}}
| /
| La racine (partition root), qui contient tous les autres répertoires
|-{{ligne grise}}
| /bin
| Commandes utilisateur (ls, cat, cd, cp...)
|-{{ligne grise}}
| /boot
| Fichiers nécessaires au démarrage du système
|-{{ligne grise}}
| /dev
| Répertoire dans lequel &quot;mknod&quot; va créer les noeuds permettant pour l'accès aux périphériques (devices) disques, partitions, consoles, etc...
|-{{ligne grise}}
| /etc
| Fichiers de configuration (Editable Text Configuration)
|-{{ligne grise}}
| /home
| Répertoires personnels des utilisateurs
|-{{ligne grise}}
| /lib
| Bibliothèques partagées, modules noyaux, pilotes de périphériques et firmwares
|-{{ligne grise}}
| /media
| Points de montage pour les supports amovibles montés automatiquement
|-{{ligne grise}}
| /mnt
| Point de montage pour les montages temporaires manuels
|-{{ligne grise}}
| /proc
| Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
|-{{ligne grise}}
| /root
| Répertoire personnel de l'utilisateur root
|-{{ligne grise}}
| /sbin
| Commandes pour l'administration du système (ifconfig, mount, fdisk...)
|-{{ligne grise}}
| /sys
| Répertoire virtuel pour les informations système (noyaux 2.6)
|-{{ligne grise}}
| /tmp
| Fichiers temporaires
|-{{ligne grise}}
| /usr
| Hiérarchie secondaire
|-{{ligne grise}}
| /var
| Données variables
|-{{ligne grise}}
| /srv
| Données pour les services fournis par le système
|-{{ligne grise}}
|}

Plus de détails dans [[Man_hier|$ man hier]]

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessiter plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives)
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4G de swap pour pouvoir bénéficier de l'hibernation.

== Primaires, étendue, logiques ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions '''primaires''' et une partition '''étendue''' qui est un conteneur de partitions '''logiques'''.

Pour un disque '''SCSI''', Linux limite le nombre de partitions logiques à 12 (ce qui fait quand même un total de 15 partitions utilisables). &lt;br /&gt;
Pour un disque '''IDE''', 60 partitions logiques peuvent être crées dans la partition étendue (donc 63 partitions utilisables).

Une partition logique contenant un pointeur vers le début de la partition logique suivante (chaînage), le nombre de partitions logiques pourrait donc être '''infini'''. &lt;br /&gt;
Mais, pour des raisons de nommages de périphériques (un octet pour &quot;major&quot;, &quot;minor&quot;), ce nombre maximal a dû être limité.

La limitation au nombre de 4 partitions primaires (ou 3 primaires + 1 étendue) est due au format de la table de partition contenue dans le '''M'''aster '''B'''oot '''R'''ecord (MBR), premier secteur (512 octets) du disque. &lt;br /&gt;
Cette limitation saute avec le nouveau format GPT ('''G'''UID '''P'''artition '''T'''able) utilisé notamment sur les machines avec firmware EFI ('''E'''xtensible '''F'''irmware '''I'''nterface) en surcouche du BIOS.

Voir : &lt;br /&gt;
http://www.tldp.org/HOWTO/Partition/partition-types.html#logical &lt;br /&gt;
http://www.tldp.org/HOWTO/Partition/devices.html

== Le système de fichier ==

Le système de fichier

Un système de fichiers (file system ou filesystem en anglais) ou système de gestion de fichiers (SGF) est une façon de stocker les informations et de les organiser dans des fichiers sur les supports de stockage.

Le système de fichiers proposé par défaut par l'installeur de Debian est '''Ext4''' (Extented FS version 4).

Les Ext? sont des systèmes de fichiers bâtis sur la même structure mais avec des fonctionnalités rajoutées (journalisation pour ext3) et des algorithmes (pré-allocation de blocs &quot;extent&quot; pour ext4) différents suivant les versions.

Ext3 (sorti en 1999) est une évolution de '''Ext2''', le précédent système de fichiers utilisé par défaut par Debian depuis 1993.

Ext4 alloue les blocs libres juste à côté des autres blocs utilisés par le fichier, ce qui a pour effet de minimiser l'espace physique entre les blocs (limitant la fragmentation).

'''Ext4''' (sorti en 2006) est le successeur du système de fichiers ext3, principalement destiné aux systèmes basés sur GNU/Linux. Il est disponible à l'installation depuis Squeeze.

Il garde une compatibilité avec son prédécesseur et est considéré par ses propres concepteurs comme une étape intermédiaire devant mener à un vrai système de fichiers de nouvelle génération tel que [[Btrfs|Btrfs]]. Toutefois, Ext4 est une étape utile et non une simple solution temporaire.

Outre le fait qu'il puisse gérer les volumes d'une taille allant jusqu'à un exbioctet (2&lt;sup&gt;60&lt;/sup&gt;octets), la fonctionnalité majeure de ext4 est l'allocation par &quot;extent&quot; qui permettent la pré-allocation d'une zone contigüe pour un fichier, pour minimiser la fragmentation. L'option extent est active par défaut depuis le noyau Linux 2.6.23 ; avant cela, elle devait être explicitement indiquée lors du montage de la partition.

Ext2/3/4 ont un algorithme d'allocation de blocs cherchant à éviter la fragmentation, algorithme perfectionné en permanence. C'est pour cela que les outils de défragmentation n'existent pas pour ces systèmes de fichiers. La simple utilisation régulière suffit à défragmenter le système.

Les partitions de type Ext? ont besoin d'une vérification périodique de l'intégrité du système de fichier, et cela peut prendre au démarrage un temps non négligeable lorsque la taille de la partition est importante. Cette vérification est conseillée et effectuée par défaut de manière régulière (modifiée par tune2fs). Grâce à la journalisation, les arrêts sauvages (démontage de la partition non fait proprement par le système) de disque sont moins gênants avec Ext3 et Ext4 qui ne feront pas forcément une vérification de l'intégrité du système au démarrage suivant.

Il peut être toutefois judicieux, sur un serveur de choisir Ext2 pour certaines partitions (/var/log et /tmp par exemple). En effet Ext2 permet de récupérer des fichiers (ici les logs et les fichiers temporaires) facilement, pas ses successeurs.

D'autres systèmes de fichiers peuvent être utilisés sur certaines partitions. '''xfs''' par exemple a de bonnes performances avec de nombreux petits fichiers.

Il est impossible de transformer une partition existante d'un système de fichiers à un autre (sauf parfois pour les ext? qui ont une structure commune), le choix du système de fichiers est donc définitif.

Le système de fichiers lisible par *tous* les OS même les plus anciens est FAT32 mais il est très primaire, interdit les gros fichiers et ne permet pas (ou difficilement) d'installer un linux.

Vous le voyez, tout comme le nombre de partitions et la taille des partitions, le choix du système de fichier n'est pas forcément une chose simple. Soyez prudents et faites confiance au programme d'installation Debian...

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)

! Nom de la partition
|-

| / 20 GB (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}

| SWAP 1 fois et demi la Ram
|- {{ligne grise}}

| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GB :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)

! Nom de la partition
|-

| / 3 GB
|- {{ligne grise}}

| SWAP 5 GB
|- {{ligne grise}}

| /tmp 5 GB
|- {{ligne grise}}

| /usr 15 GB
|- {{ligne grise}}

| /var 5 GB
|- {{ligne grise}}

| /home 317 GB
|}


Pour un serveur, avec 2 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 100 GB :

(Serveur de mail, quelques bases SQL, Serveur Web, un home limité, pour quelques utilisateurs sftp)

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur

! Nom de la partition
|-

| / 350 MB
|- {{ligne grise}}

| /boot 50 MB
|- {{ligne grise}}

| /usr 10 GB
|- {{ligne grise}}

| /var 70 GB
|- {{ligne grise}}

| SWAP 4 GB
|- {{ligne grise}}

| /tmp 10 GB
|- {{ligne grise}}

| /home 5,6 GB
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>j8h5b8mezdveqngp84z8dq09pfuicqb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5502</id>
      <parentid>5501</parentid>
      <timestamp>2013-12-16T02:14:27Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Les partitions */ orthographe</comment>
      <text xml:space="preserve" bytes="20742">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===

&lt;br&gt;Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.jpeg|left]]&lt;br&gt;&lt;br&gt;&lt;br&gt;

Un disque dur est une mémoire de masse magnétique utilisée principalement dans les ordinateurs. C'est sur celui-ci que seront stockées l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.&lt;br&gt;&lt;br&gt;

Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à la carte mère). Les plus courantes actuellement sont:&lt;br&gt;&lt;br&gt;

- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg|80px|right]]&lt;br&gt;&lt;br&gt;

- Serial ATA ou SATA (Serial Advanced Technology Attachment) [[Fichier:SATA Data Cable.jpg|80px|right]]&lt;br&gt;&lt;br&gt;

- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg|80px|right]]

&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;

=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur.

Les informations sur les partitions sont conservées sur le disque lui-même dans une zone qu'on appelle table des partitions. La table des partitions principale est contenue dans le premier secteur du disque (Master Boot Record ou MBR) qui peut contenir également le programme d'amorçage.

Voici un exemple de partitionnement:

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux

Une partition primaire : sda1.

Une partition étendue : sda2 qui est un conteneur de partitions logiques.

Cinq partitions logiques : sda5 à sda9.

=== Généralités ===

'''Pourquoi partitionner ?'''

Vous pourriez envisager de n'avoir qu'une seule partition contenant tout votre système...
La plupart d'entre nous choisissent de créer plus de partitions que le minimum dont Debian a besoin pour fonctionner. Pourquoi ?

'''Principalement pour des raison de sécurité''': Si une partition est corrompue, le reste du système est toujours accessible. Il suffit généralement de restaurer une sauvegarde de la partition corrompue pour régler le problème.

Mais aussi pour séparer les partitions qui risqueraient d'être submergées de fichiers (Par exemple /var pour un serveur de mail qui serait attaqué par un envoi massif...). Le reste du système serait alors toujours opérationnel.


Séparer les autres partitions de la racine &quot;/&quot; permet, en cas de corruption d'une autre partition, de toujours pouvoir amorcer Linux pour réparer le système...
Vous voulez en effet pouvoir être en mesure de démarrer en &quot;Single user mode&quot; pour restaurer votre station ou serveur... Ce qui exige une racine «intacte».


La seconde difficulté (après le choix du nombre de partitions) sera de définir la taille de ces partitions... Une taille trop petite rendra rapidement votre système inutilisable. Une taille trop grande gâche de l'espace disque (qui même s'il n'est pas cher peut être utile ailleurs...)


Les remarques qui suivent sont des préconisations Debian:

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, une simple partition / (plus celle d'échange) est sans doute la solution la plus simple. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système. '''Il est donc donc généralement conseillé, en plus de la partition d'échange (swap) de créer une partition / ET une partition /home'''.

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de la distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installation y déploient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes Linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.


'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.''' et, dixit MisterFreeze, « de la religion de l'administrateur »... ;-)

N'espérez pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;15%&quot;| Répertoire
! Contenu
|-{{ligne grise}}
| /
| La racine (partition root), qui contient tous les autres répertoires
|-{{ligne grise}}
| /bin
| Commandes utilisateur (ls, cat, cd, cp...)
|-{{ligne grise}}
| /boot
| Fichiers nécessaires au démarrage du système
|-{{ligne grise}}
| /dev
| Répertoire dans lequel &quot;mknod&quot; va créer les noeuds permettant pour l'accès aux périphériques (devices) disques, partitions, consoles, etc...
|-{{ligne grise}}
| /etc
| Fichiers de configuration (Editable Text Configuration)
|-{{ligne grise}}
| /home
| Répertoires personnels des utilisateurs
|-{{ligne grise}}
| /lib
| Bibliothèques partagées, modules noyaux, pilotes de périphériques et firmwares
|-{{ligne grise}}
| /media
| Points de montage pour les supports amovibles montés automatiquement
|-{{ligne grise}}
| /mnt
| Point de montage pour les montages temporaires manuels
|-{{ligne grise}}
| /proc
| Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
|-{{ligne grise}}
| /root
| Répertoire personnel de l'utilisateur root
|-{{ligne grise}}
| /sbin
| Commandes pour l'administration du système (ifconfig, mount, fdisk...)
|-{{ligne grise}}
| /sys
| Répertoire virtuel pour les informations système (noyaux 2.6)
|-{{ligne grise}}
| /tmp
| Fichiers temporaires
|-{{ligne grise}}
| /usr
| Hiérarchie secondaire
|-{{ligne grise}}
| /var
| Données variables
|-{{ligne grise}}
| /srv
| Données pour les services fournis par le système
|-{{ligne grise}}
|}

Plus de détails dans [[Man_hier|$ man hier]]

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessiter plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives)
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4G de swap pour pouvoir bénéficier de l'hibernation.

== Primaires, étendue, logiques ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions '''primaires''' et une partition '''étendue''' qui est un conteneur de partitions '''logiques'''.

Pour un disque '''SCSI''', Linux limite le nombre de partitions logiques à 12 (ce qui fait quand même un total de 15 partitions utilisables). &lt;br /&gt;
Pour un disque '''IDE''', 60 partitions logiques peuvent être crées dans la partition étendue (donc 63 partitions utilisables).

Une partition logique contenant un pointeur vers le début de la partition logique suivante (chaînage), le nombre de partitions logiques pourrait donc être '''infini'''. &lt;br /&gt;
Mais, pour des raisons de nommages de périphériques (un octet pour &quot;major&quot;, &quot;minor&quot;), ce nombre maximal a dû être limité.

La limitation au nombre de 4 partitions primaires (ou 3 primaires + 1 étendue) est due au format de la table de partition contenue dans le '''M'''aster '''B'''oot '''R'''ecord (MBR), premier secteur (512 octets) du disque. &lt;br /&gt;
Cette limitation saute avec le nouveau format GPT ('''G'''UID '''P'''artition '''T'''able) utilisé notamment sur les machines avec firmware EFI ('''E'''xtensible '''F'''irmware '''I'''nterface) en surcouche du BIOS.

Voir : &lt;br /&gt;
http://www.tldp.org/HOWTO/Partition/partition-types.html#logical &lt;br /&gt;
http://www.tldp.org/HOWTO/Partition/devices.html

== Le système de fichier ==

Le système de fichier

Un système de fichiers (file system ou filesystem en anglais) ou système de gestion de fichiers (SGF) est une façon de stocker les informations et de les organiser dans des fichiers sur les supports de stockage.

Le système de fichiers proposé par défaut par l'installeur de Debian est '''Ext4''' (Extented FS version 4).

Les Ext? sont des systèmes de fichiers bâtis sur la même structure mais avec des fonctionnalités rajoutées (journalisation pour ext3) et des algorithmes (pré-allocation de blocs &quot;extent&quot; pour ext4) différents suivant les versions.

Ext3 (sorti en 1999) est une évolution de '''Ext2''', le précédent système de fichiers utilisé par défaut par Debian depuis 1993.

Ext4 alloue les blocs libres juste à côté des autres blocs utilisés par le fichier, ce qui a pour effet de minimiser l'espace physique entre les blocs (limitant la fragmentation).

'''Ext4''' (sorti en 2006) est le successeur du système de fichiers ext3, principalement destiné aux systèmes basés sur GNU/Linux. Il est disponible à l'installation depuis Squeeze.

Il garde une compatibilité avec son prédécesseur et est considéré par ses propres concepteurs comme une étape intermédiaire devant mener à un vrai système de fichiers de nouvelle génération tel que [[Btrfs|Btrfs]]. Toutefois, Ext4 est une étape utile et non une simple solution temporaire.

Outre le fait qu'il puisse gérer les volumes d'une taille allant jusqu'à un exbioctet (2&lt;sup&gt;60&lt;/sup&gt;octets), la fonctionnalité majeure de ext4 est l'allocation par &quot;extent&quot; qui permettent la pré-allocation d'une zone contigüe pour un fichier, pour minimiser la fragmentation. L'option extent est active par défaut depuis le noyau Linux 2.6.23 ; avant cela, elle devait être explicitement indiquée lors du montage de la partition.

Ext2/3/4 ont un algorithme d'allocation de blocs cherchant à éviter la fragmentation, algorithme perfectionné en permanence. C'est pour cela que les outils de défragmentation n'existent pas pour ces systèmes de fichiers. La simple utilisation régulière suffit à défragmenter le système.

Les partitions de type Ext? ont besoin d'une vérification périodique de l'intégrité du système de fichier, et cela peut prendre au démarrage un temps non négligeable lorsque la taille de la partition est importante. Cette vérification est conseillée et effectuée par défaut de manière régulière (modifiée par tune2fs). Grâce à la journalisation, les arrêts sauvages (démontage de la partition non fait proprement par le système) de disque sont moins gênants avec Ext3 et Ext4 qui ne feront pas forcément une vérification de l'intégrité du système au démarrage suivant.

Il peut être toutefois judicieux, sur un serveur de choisir Ext2 pour certaines partitions (/var/log et /tmp par exemple). En effet Ext2 permet de récupérer des fichiers (ici les logs et les fichiers temporaires) facilement, pas ses successeurs.

D'autres systèmes de fichiers peuvent être utilisés sur certaines partitions. '''xfs''' par exemple a de bonnes performances avec de nombreux petits fichiers.

Il est impossible de transformer une partition existante d'un système de fichiers à un autre (sauf parfois pour les ext? qui ont une structure commune), le choix du système de fichiers est donc définitif.

Le système de fichiers lisible par *tous* les OS même les plus anciens est FAT32 mais il est très primaire, interdit les gros fichiers et ne permet pas (ou difficilement) d'installer un linux.

Vous le voyez, tout comme le nombre de partitions et la taille des partitions, le choix du système de fichier n'est pas forcément une chose simple. Soyez prudents et faites confiance au programme d'installation Debian...

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)

! Nom de la partition
|-

| / 20 GB (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}

| SWAP 1 fois et demi la Ram
|- {{ligne grise}}

| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GB :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)

! Nom de la partition
|-

| / 3 GB
|- {{ligne grise}}

| SWAP 5 GB
|- {{ligne grise}}

| /tmp 5 GB
|- {{ligne grise}}

| /usr 15 GB
|- {{ligne grise}}

| /var 5 GB
|- {{ligne grise}}

| /home 317 GB
|}


Pour un serveur, avec 2 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 100 GB :

(Serveur de mail, quelques bases SQL, Serveur Web, un home limité, pour quelques utilisateurs sftp)

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur

! Nom de la partition
|-

| / 350 MB
|- {{ligne grise}}

| /boot 50 MB
|- {{ligne grise}}

| /usr 10 GB
|- {{ligne grise}}

| /var 70 GB
|- {{ligne grise}}

| SWAP 4 GB
|- {{ligne grise}}

| /tmp 10 GB
|- {{ligne grise}}

| /home 5,6 GB
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>g9t70f75zve27bfyz2t70f3pzhski58</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5503</id>
      <parentid>5502</parentid>
      <timestamp>2013-12-16T02:16:31Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Le Disque dur */ orthographe</comment>
      <text xml:space="preserve" bytes="20726">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===

&lt;br&gt;Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.jpeg|left]]&lt;br&gt;&lt;br&gt;&lt;br&gt;

Un disque dur est une mémoire de masse utilisée principalement dans les ordinateurs. C'est sur celui-ci que sera stocké l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.&lt;br&gt;&lt;br&gt;

Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à la carte mère). Les plus courantes actuellement sont:&lt;br&gt;&lt;br&gt;

- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg|80px|right]]&lt;br&gt;&lt;br&gt;

- Serial ATA ou SATA (Serial Advanced Technology Attachment) [[Fichier:SATA Data Cable.jpg|80px|right]]&lt;br&gt;&lt;br&gt;

- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg|80px|right]]

&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;

=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur.

Les informations sur les partitions sont conservées sur le disque lui-même dans une zone qu'on appelle table des partitions. La table des partitions principale est contenue dans le premier secteur du disque (Master Boot Record ou MBR) qui peut contenir également le programme d'amorçage.

Voici un exemple de partitionnement:

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux

Une partition primaire : sda1.

Une partition étendue : sda2 qui est un conteneur de partitions logiques.

Cinq partitions logiques : sda5 à sda9.

=== Généralités ===

'''Pourquoi partitionner ?'''

Vous pourriez envisager de n'avoir qu'une seule partition contenant tout votre système...
La plupart d'entre nous choisissent de créer plus de partitions que le minimum dont Debian a besoin pour fonctionner. Pourquoi ?

'''Principalement pour des raison de sécurité''': Si une partition est corrompue, le reste du système est toujours accessible. Il suffit généralement de restaurer une sauvegarde de la partition corrompue pour régler le problème.

Mais aussi pour séparer les partitions qui risqueraient d'être submergées de fichiers (Par exemple /var pour un serveur de mail qui serait attaqué par un envoi massif...). Le reste du système serait alors toujours opérationnel.


Séparer les autres partitions de la racine &quot;/&quot; permet, en cas de corruption d'une autre partition, de toujours pouvoir amorcer Linux pour réparer le système...
Vous voulez en effet pouvoir être en mesure de démarrer en &quot;Single user mode&quot; pour restaurer votre station ou serveur... Ce qui exige une racine «intacte».


La seconde difficulté (après le choix du nombre de partitions) sera de définir la taille de ces partitions... Une taille trop petite rendra rapidement votre système inutilisable. Une taille trop grande gâche de l'espace disque (qui même s'il n'est pas cher peut être utile ailleurs...)


Les remarques qui suivent sont des préconisations Debian:

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, une simple partition / (plus celle d'échange) est sans doute la solution la plus simple. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système. '''Il est donc donc généralement conseillé, en plus de la partition d'échange (swap) de créer une partition / ET une partition /home'''.

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de la distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installation y déploient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes Linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.


'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.''' et, dixit MisterFreeze, « de la religion de l'administrateur »... ;-)

N'espérez pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;15%&quot;| Répertoire
! Contenu
|-{{ligne grise}}
| /
| La racine (partition root), qui contient tous les autres répertoires
|-{{ligne grise}}
| /bin
| Commandes utilisateur (ls, cat, cd, cp...)
|-{{ligne grise}}
| /boot
| Fichiers nécessaires au démarrage du système
|-{{ligne grise}}
| /dev
| Répertoire dans lequel &quot;mknod&quot; va créer les noeuds permettant pour l'accès aux périphériques (devices) disques, partitions, consoles, etc...
|-{{ligne grise}}
| /etc
| Fichiers de configuration (Editable Text Configuration)
|-{{ligne grise}}
| /home
| Répertoires personnels des utilisateurs
|-{{ligne grise}}
| /lib
| Bibliothèques partagées, modules noyaux, pilotes de périphériques et firmwares
|-{{ligne grise}}
| /media
| Points de montage pour les supports amovibles montés automatiquement
|-{{ligne grise}}
| /mnt
| Point de montage pour les montages temporaires manuels
|-{{ligne grise}}
| /proc
| Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
|-{{ligne grise}}
| /root
| Répertoire personnel de l'utilisateur root
|-{{ligne grise}}
| /sbin
| Commandes pour l'administration du système (ifconfig, mount, fdisk...)
|-{{ligne grise}}
| /sys
| Répertoire virtuel pour les informations système (noyaux 2.6)
|-{{ligne grise}}
| /tmp
| Fichiers temporaires
|-{{ligne grise}}
| /usr
| Hiérarchie secondaire
|-{{ligne grise}}
| /var
| Données variables
|-{{ligne grise}}
| /srv
| Données pour les services fournis par le système
|-{{ligne grise}}
|}

Plus de détails dans [[Man_hier|$ man hier]]

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessiter plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives)
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou étendue.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4G de swap pour pouvoir bénéficier de l'hibernation.

== Primaires, étendue, logiques ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions '''primaires''' et une partition '''étendue''' qui est un conteneur de partitions '''logiques'''.

Pour un disque '''SCSI''', Linux limite le nombre de partitions logiques à 12 (ce qui fait quand même un total de 15 partitions utilisables). &lt;br /&gt;
Pour un disque '''IDE''', 60 partitions logiques peuvent être crées dans la partition étendue (donc 63 partitions utilisables).

Une partition logique contenant un pointeur vers le début de la partition logique suivante (chaînage), le nombre de partitions logiques pourrait donc être '''infini'''. &lt;br /&gt;
Mais, pour des raisons de nommages de périphériques (un octet pour &quot;major&quot;, &quot;minor&quot;), ce nombre maximal a dû être limité.

La limitation au nombre de 4 partitions primaires (ou 3 primaires + 1 étendue) est due au format de la table de partition contenue dans le '''M'''aster '''B'''oot '''R'''ecord (MBR), premier secteur (512 octets) du disque. &lt;br /&gt;
Cette limitation saute avec le nouveau format GPT ('''G'''UID '''P'''artition '''T'''able) utilisé notamment sur les machines avec firmware EFI ('''E'''xtensible '''F'''irmware '''I'''nterface) en surcouche du BIOS.

Voir : &lt;br /&gt;
http://www.tldp.org/HOWTO/Partition/partition-types.html#logical &lt;br /&gt;
http://www.tldp.org/HOWTO/Partition/devices.html

== Le système de fichier ==

Le système de fichier

Un système de fichiers (file system ou filesystem en anglais) ou système de gestion de fichiers (SGF) est une façon de stocker les informations et de les organiser dans des fichiers sur les supports de stockage.

Le système de fichiers proposé par défaut par l'installeur de Debian est '''Ext4''' (Extented FS version 4).

Les Ext? sont des systèmes de fichiers bâtis sur la même structure mais avec des fonctionnalités rajoutées (journalisation pour ext3) et des algorithmes (pré-allocation de blocs &quot;extent&quot; pour ext4) différents suivant les versions.

Ext3 (sorti en 1999) est une évolution de '''Ext2''', le précédent système de fichiers utilisé par défaut par Debian depuis 1993.

Ext4 alloue les blocs libres juste à côté des autres blocs utilisés par le fichier, ce qui a pour effet de minimiser l'espace physique entre les blocs (limitant la fragmentation).

'''Ext4''' (sorti en 2006) est le successeur du système de fichiers ext3, principalement destiné aux systèmes basés sur GNU/Linux. Il est disponible à l'installation depuis Squeeze.

Il garde une compatibilité avec son prédécesseur et est considéré par ses propres concepteurs comme une étape intermédiaire devant mener à un vrai système de fichiers de nouvelle génération tel que [[Btrfs|Btrfs]]. Toutefois, Ext4 est une étape utile et non une simple solution temporaire.

Outre le fait qu'il puisse gérer les volumes d'une taille allant jusqu'à un exbioctet (2&lt;sup&gt;60&lt;/sup&gt;octets), la fonctionnalité majeure de ext4 est l'allocation par &quot;extent&quot; qui permettent la pré-allocation d'une zone contigüe pour un fichier, pour minimiser la fragmentation. L'option extent est active par défaut depuis le noyau Linux 2.6.23 ; avant cela, elle devait être explicitement indiquée lors du montage de la partition.

Ext2/3/4 ont un algorithme d'allocation de blocs cherchant à éviter la fragmentation, algorithme perfectionné en permanence. C'est pour cela que les outils de défragmentation n'existent pas pour ces systèmes de fichiers. La simple utilisation régulière suffit à défragmenter le système.

Les partitions de type Ext? ont besoin d'une vérification périodique de l'intégrité du système de fichier, et cela peut prendre au démarrage un temps non négligeable lorsque la taille de la partition est importante. Cette vérification est conseillée et effectuée par défaut de manière régulière (modifiée par tune2fs). Grâce à la journalisation, les arrêts sauvages (démontage de la partition non fait proprement par le système) de disque sont moins gênants avec Ext3 et Ext4 qui ne feront pas forcément une vérification de l'intégrité du système au démarrage suivant.

Il peut être toutefois judicieux, sur un serveur de choisir Ext2 pour certaines partitions (/var/log et /tmp par exemple). En effet Ext2 permet de récupérer des fichiers (ici les logs et les fichiers temporaires) facilement, pas ses successeurs.

D'autres systèmes de fichiers peuvent être utilisés sur certaines partitions. '''xfs''' par exemple a de bonnes performances avec de nombreux petits fichiers.

Il est impossible de transformer une partition existante d'un système de fichiers à un autre (sauf parfois pour les ext? qui ont une structure commune), le choix du système de fichiers est donc définitif.

Le système de fichiers lisible par *tous* les OS même les plus anciens est FAT32 mais il est très primaire, interdit les gros fichiers et ne permet pas (ou difficilement) d'installer un linux.

Vous le voyez, tout comme le nombre de partitions et la taille des partitions, le choix du système de fichier n'est pas forcément une chose simple. Soyez prudents et faites confiance au programme d'installation Debian...

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)

! Nom de la partition
|-

| / 20 GB (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}

| SWAP 1 fois et demi la Ram
|- {{ligne grise}}

| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GB :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)

! Nom de la partition
|-

| / 3 GB
|- {{ligne grise}}

| SWAP 5 GB
|- {{ligne grise}}

| /tmp 5 GB
|- {{ligne grise}}

| /usr 15 GB
|- {{ligne grise}}

| /var 5 GB
|- {{ligne grise}}

| /home 317 GB
|}


Pour un serveur, avec 2 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 100 GB :

(Serveur de mail, quelques bases SQL, Serveur Web, un home limité, pour quelques utilisateurs sftp)

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur

! Nom de la partition
|-

| / 350 MB
|- {{ligne grise}}

| /boot 50 MB
|- {{ligne grise}}

| /usr 10 GB
|- {{ligne grise}}

| /var 70 GB
|- {{ligne grise}}

| SWAP 4 GB
|- {{ligne grise}}

| /tmp 10 GB
|- {{ligne grise}}

| /home 5,6 GB
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>nkebvc5tsu6l4bfdxs5u6up9evqsn3h</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5504</id>
      <parentid>5503</parentid>
      <timestamp>2013-12-16T02:26:32Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* La partition swap */</comment>
      <text xml:space="preserve" bytes="20727">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===

&lt;br&gt;Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.jpeg|left]]&lt;br&gt;&lt;br&gt;&lt;br&gt;

Un disque dur est une mémoire de masse utilisée principalement dans les ordinateurs. C'est sur celui-ci que sera stocké l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.&lt;br&gt;&lt;br&gt;

Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à la carte mère). Les plus courantes actuellement sont:&lt;br&gt;&lt;br&gt;

- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg|80px|right]]&lt;br&gt;&lt;br&gt;

- Serial ATA ou SATA (Serial Advanced Technology Attachment) [[Fichier:SATA Data Cable.jpg|80px|right]]&lt;br&gt;&lt;br&gt;

- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg|80px|right]]

&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;

=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur.

Les informations sur les partitions sont conservées sur le disque lui-même dans une zone qu'on appelle table des partitions. La table des partitions principale est contenue dans le premier secteur du disque (Master Boot Record ou MBR) qui peut contenir également le programme d'amorçage.

Voici un exemple de partitionnement:

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux

Une partition primaire : sda1.

Une partition étendue : sda2 qui est un conteneur de partitions logiques.

Cinq partitions logiques : sda5 à sda9.

=== Généralités ===

'''Pourquoi partitionner ?'''

Vous pourriez envisager de n'avoir qu'une seule partition contenant tout votre système...
La plupart d'entre nous choisissent de créer plus de partitions que le minimum dont Debian a besoin pour fonctionner. Pourquoi ?

'''Principalement pour des raison de sécurité''': Si une partition est corrompue, le reste du système est toujours accessible. Il suffit généralement de restaurer une sauvegarde de la partition corrompue pour régler le problème.

Mais aussi pour séparer les partitions qui risqueraient d'être submergées de fichiers (Par exemple /var pour un serveur de mail qui serait attaqué par un envoi massif...). Le reste du système serait alors toujours opérationnel.


Séparer les autres partitions de la racine &quot;/&quot; permet, en cas de corruption d'une autre partition, de toujours pouvoir amorcer Linux pour réparer le système...
Vous voulez en effet pouvoir être en mesure de démarrer en &quot;Single user mode&quot; pour restaurer votre station ou serveur... Ce qui exige une racine «intacte».


La seconde difficulté (après le choix du nombre de partitions) sera de définir la taille de ces partitions... Une taille trop petite rendra rapidement votre système inutilisable. Une taille trop grande gâche de l'espace disque (qui même s'il n'est pas cher peut être utile ailleurs...)


Les remarques qui suivent sont des préconisations Debian:

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, une simple partition / (plus celle d'échange) est sans doute la solution la plus simple. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système. '''Il est donc donc généralement conseillé, en plus de la partition d'échange (swap) de créer une partition / ET une partition /home'''.

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de la distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installation y déploient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes Linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.


'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.''' et, dixit MisterFreeze, « de la religion de l'administrateur »... ;-)

N'espérez pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;15%&quot;| Répertoire
! Contenu
|-{{ligne grise}}
| /
| La racine (partition root), qui contient tous les autres répertoires
|-{{ligne grise}}
| /bin
| Commandes utilisateur (ls, cat, cd, cp...)
|-{{ligne grise}}
| /boot
| Fichiers nécessaires au démarrage du système
|-{{ligne grise}}
| /dev
| Répertoire dans lequel &quot;mknod&quot; va créer les noeuds permettant pour l'accès aux périphériques (devices) disques, partitions, consoles, etc...
|-{{ligne grise}}
| /etc
| Fichiers de configuration (Editable Text Configuration)
|-{{ligne grise}}
| /home
| Répertoires personnels des utilisateurs
|-{{ligne grise}}
| /lib
| Bibliothèques partagées, modules noyaux, pilotes de périphériques et firmwares
|-{{ligne grise}}
| /media
| Points de montage pour les supports amovibles montés automatiquement
|-{{ligne grise}}
| /mnt
| Point de montage pour les montages temporaires manuels
|-{{ligne grise}}
| /proc
| Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
|-{{ligne grise}}
| /root
| Répertoire personnel de l'utilisateur root
|-{{ligne grise}}
| /sbin
| Commandes pour l'administration du système (ifconfig, mount, fdisk...)
|-{{ligne grise}}
| /sys
| Répertoire virtuel pour les informations système (noyaux 2.6)
|-{{ligne grise}}
| /tmp
| Fichiers temporaires
|-{{ligne grise}}
| /usr
| Hiérarchie secondaire
|-{{ligne grise}}
| /var
| Données variables
|-{{ligne grise}}
| /srv
| Données pour les services fournis par le système
|-{{ligne grise}}
|}

Plus de détails dans [[Man_hier|$ man hier]]

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessiter plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives)
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou logique.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4.2G de swap pour pouvoir bénéficier de l'hibernation.

== Primaires, étendue, logiques ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions '''primaires''' et une partition '''étendue''' qui est un conteneur de partitions '''logiques'''.

Pour un disque '''SCSI''', Linux limite le nombre de partitions logiques à 12 (ce qui fait quand même un total de 15 partitions utilisables). &lt;br /&gt;
Pour un disque '''IDE''', 60 partitions logiques peuvent être crées dans la partition étendue (donc 63 partitions utilisables).

Une partition logique contenant un pointeur vers le début de la partition logique suivante (chaînage), le nombre de partitions logiques pourrait donc être '''infini'''. &lt;br /&gt;
Mais, pour des raisons de nommages de périphériques (un octet pour &quot;major&quot;, &quot;minor&quot;), ce nombre maximal a dû être limité.

La limitation au nombre de 4 partitions primaires (ou 3 primaires + 1 étendue) est due au format de la table de partition contenue dans le '''M'''aster '''B'''oot '''R'''ecord (MBR), premier secteur (512 octets) du disque. &lt;br /&gt;
Cette limitation saute avec le nouveau format GPT ('''G'''UID '''P'''artition '''T'''able) utilisé notamment sur les machines avec firmware EFI ('''E'''xtensible '''F'''irmware '''I'''nterface) en surcouche du BIOS.

Voir : &lt;br /&gt;
http://www.tldp.org/HOWTO/Partition/partition-types.html#logical &lt;br /&gt;
http://www.tldp.org/HOWTO/Partition/devices.html

== Le système de fichier ==

Le système de fichier

Un système de fichiers (file system ou filesystem en anglais) ou système de gestion de fichiers (SGF) est une façon de stocker les informations et de les organiser dans des fichiers sur les supports de stockage.

Le système de fichiers proposé par défaut par l'installeur de Debian est '''Ext4''' (Extented FS version 4).

Les Ext? sont des systèmes de fichiers bâtis sur la même structure mais avec des fonctionnalités rajoutées (journalisation pour ext3) et des algorithmes (pré-allocation de blocs &quot;extent&quot; pour ext4) différents suivant les versions.

Ext3 (sorti en 1999) est une évolution de '''Ext2''', le précédent système de fichiers utilisé par défaut par Debian depuis 1993.

Ext4 alloue les blocs libres juste à côté des autres blocs utilisés par le fichier, ce qui a pour effet de minimiser l'espace physique entre les blocs (limitant la fragmentation).

'''Ext4''' (sorti en 2006) est le successeur du système de fichiers ext3, principalement destiné aux systèmes basés sur GNU/Linux. Il est disponible à l'installation depuis Squeeze.

Il garde une compatibilité avec son prédécesseur et est considéré par ses propres concepteurs comme une étape intermédiaire devant mener à un vrai système de fichiers de nouvelle génération tel que [[Btrfs|Btrfs]]. Toutefois, Ext4 est une étape utile et non une simple solution temporaire.

Outre le fait qu'il puisse gérer les volumes d'une taille allant jusqu'à un exbioctet (2&lt;sup&gt;60&lt;/sup&gt;octets), la fonctionnalité majeure de ext4 est l'allocation par &quot;extent&quot; qui permettent la pré-allocation d'une zone contigüe pour un fichier, pour minimiser la fragmentation. L'option extent est active par défaut depuis le noyau Linux 2.6.23 ; avant cela, elle devait être explicitement indiquée lors du montage de la partition.

Ext2/3/4 ont un algorithme d'allocation de blocs cherchant à éviter la fragmentation, algorithme perfectionné en permanence. C'est pour cela que les outils de défragmentation n'existent pas pour ces systèmes de fichiers. La simple utilisation régulière suffit à défragmenter le système.

Les partitions de type Ext? ont besoin d'une vérification périodique de l'intégrité du système de fichier, et cela peut prendre au démarrage un temps non négligeable lorsque la taille de la partition est importante. Cette vérification est conseillée et effectuée par défaut de manière régulière (modifiée par tune2fs). Grâce à la journalisation, les arrêts sauvages (démontage de la partition non fait proprement par le système) de disque sont moins gênants avec Ext3 et Ext4 qui ne feront pas forcément une vérification de l'intégrité du système au démarrage suivant.

Il peut être toutefois judicieux, sur un serveur de choisir Ext2 pour certaines partitions (/var/log et /tmp par exemple). En effet Ext2 permet de récupérer des fichiers (ici les logs et les fichiers temporaires) facilement, pas ses successeurs.

D'autres systèmes de fichiers peuvent être utilisés sur certaines partitions. '''xfs''' par exemple a de bonnes performances avec de nombreux petits fichiers.

Il est impossible de transformer une partition existante d'un système de fichiers à un autre (sauf parfois pour les ext? qui ont une structure commune), le choix du système de fichiers est donc définitif.

Le système de fichiers lisible par *tous* les OS même les plus anciens est FAT32 mais il est très primaire, interdit les gros fichiers et ne permet pas (ou difficilement) d'installer un linux.

Vous le voyez, tout comme le nombre de partitions et la taille des partitions, le choix du système de fichier n'est pas forcément une chose simple. Soyez prudents et faites confiance au programme d'installation Debian...

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)

! Nom de la partition
|-

| / 20 GB (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}

| SWAP 1 fois et demi la Ram
|- {{ligne grise}}

| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GB :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)

! Nom de la partition
|-

| / 3 GB
|- {{ligne grise}}

| SWAP 5 GB
|- {{ligne grise}}

| /tmp 5 GB
|- {{ligne grise}}

| /usr 15 GB
|- {{ligne grise}}

| /var 5 GB
|- {{ligne grise}}

| /home 317 GB
|}


Pour un serveur, avec 2 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 100 GB :

(Serveur de mail, quelques bases SQL, Serveur Web, un home limité, pour quelques utilisateurs sftp)

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur

! Nom de la partition
|-

| / 350 MB
|- {{ligne grise}}

| /boot 50 MB
|- {{ligne grise}}

| /usr 10 GB
|- {{ligne grise}}

| /var 70 GB
|- {{ligne grise}}

| SWAP 4 GB
|- {{ligne grise}}

| /tmp 10 GB
|- {{ligne grise}}

| /home 5,6 GB
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>pzta0i2avcrblv1jtjxrxj76oe4yko6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5505</id>
      <parentid>5504</parentid>
      <timestamp>2013-12-17T10:27:18Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Le système de fichier */ Mise en forme</comment>
      <text xml:space="preserve" bytes="20739">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===

&lt;br&gt;Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.jpeg|left]]&lt;br&gt;&lt;br&gt;&lt;br&gt;

Un disque dur est une mémoire de masse utilisée principalement dans les ordinateurs. C'est sur celui-ci que sera stocké l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.&lt;br&gt;&lt;br&gt;

Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à la carte mère). Les plus courantes actuellement sont:&lt;br&gt;&lt;br&gt;

- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg|80px|right]]&lt;br&gt;&lt;br&gt;

- Serial ATA ou SATA (Serial Advanced Technology Attachment) [[Fichier:SATA Data Cable.jpg|80px|right]]&lt;br&gt;&lt;br&gt;

- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg|80px|right]]

&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;

=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur.

Les informations sur les partitions sont conservées sur le disque lui-même dans une zone qu'on appelle table des partitions. La table des partitions principale est contenue dans le premier secteur du disque (Master Boot Record ou MBR) qui peut contenir également le programme d'amorçage.

Voici un exemple de partitionnement:

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux

Une partition primaire : sda1.

Une partition étendue : sda2 qui est un conteneur de partitions logiques.

Cinq partitions logiques : sda5 à sda9.

=== Généralités ===

'''Pourquoi partitionner ?'''

Vous pourriez envisager de n'avoir qu'une seule partition contenant tout votre système...
La plupart d'entre nous choisissent de créer plus de partitions que le minimum dont Debian a besoin pour fonctionner. Pourquoi ?

'''Principalement pour des raison de sécurité''': Si une partition est corrompue, le reste du système est toujours accessible. Il suffit généralement de restaurer une sauvegarde de la partition corrompue pour régler le problème.

Mais aussi pour séparer les partitions qui risqueraient d'être submergées de fichiers (Par exemple /var pour un serveur de mail qui serait attaqué par un envoi massif...). Le reste du système serait alors toujours opérationnel.


Séparer les autres partitions de la racine &quot;/&quot; permet, en cas de corruption d'une autre partition, de toujours pouvoir amorcer Linux pour réparer le système...
Vous voulez en effet pouvoir être en mesure de démarrer en &quot;Single user mode&quot; pour restaurer votre station ou serveur... Ce qui exige une racine «intacte».


La seconde difficulté (après le choix du nombre de partitions) sera de définir la taille de ces partitions... Une taille trop petite rendra rapidement votre système inutilisable. Une taille trop grande gâche de l'espace disque (qui même s'il n'est pas cher peut être utile ailleurs...)


Les remarques qui suivent sont des préconisations Debian:

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, une simple partition / (plus celle d'échange) est sans doute la solution la plus simple. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système. '''Il est donc donc généralement conseillé, en plus de la partition d'échange (swap) de créer une partition / ET une partition /home'''.

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de la distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installation y déploient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes Linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.


'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.''' et, dixit MisterFreeze, « de la religion de l'administrateur »... ;-)

N'espérez pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;15%&quot;| Répertoire
! Contenu
|-{{ligne grise}}
| /
| La racine (partition root), qui contient tous les autres répertoires
|-{{ligne grise}}
| /bin
| Commandes utilisateur (ls, cat, cd, cp...)
|-{{ligne grise}}
| /boot
| Fichiers nécessaires au démarrage du système
|-{{ligne grise}}
| /dev
| Répertoire dans lequel &quot;mknod&quot; va créer les noeuds permettant pour l'accès aux périphériques (devices) disques, partitions, consoles, etc...
|-{{ligne grise}}
| /etc
| Fichiers de configuration (Editable Text Configuration)
|-{{ligne grise}}
| /home
| Répertoires personnels des utilisateurs
|-{{ligne grise}}
| /lib
| Bibliothèques partagées, modules noyaux, pilotes de périphériques et firmwares
|-{{ligne grise}}
| /media
| Points de montage pour les supports amovibles montés automatiquement
|-{{ligne grise}}
| /mnt
| Point de montage pour les montages temporaires manuels
|-{{ligne grise}}
| /proc
| Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
|-{{ligne grise}}
| /root
| Répertoire personnel de l'utilisateur root
|-{{ligne grise}}
| /sbin
| Commandes pour l'administration du système (ifconfig, mount, fdisk...)
|-{{ligne grise}}
| /sys
| Répertoire virtuel pour les informations système (noyaux 2.6)
|-{{ligne grise}}
| /tmp
| Fichiers temporaires
|-{{ligne grise}}
| /usr
| Hiérarchie secondaire
|-{{ligne grise}}
| /var
| Données variables
|-{{ligne grise}}
| /srv
| Données pour les services fournis par le système
|-{{ligne grise}}
|}

Plus de détails dans [[Man_hier|$ man hier]]

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessiter plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives)
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou logique.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4.2G de swap pour pouvoir bénéficier de l'hibernation.

== Primaires, étendue, logiques ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions '''primaires''' et une partition '''étendue''' qui est un conteneur de partitions '''logiques'''.

Pour un disque '''SCSI''', Linux limite le nombre de partitions logiques à 12 (ce qui fait quand même un total de 15 partitions utilisables). &lt;br /&gt;
Pour un disque '''IDE''', 60 partitions logiques peuvent être crées dans la partition étendue (donc 63 partitions utilisables).

Une partition logique contenant un pointeur vers le début de la partition logique suivante (chaînage), le nombre de partitions logiques pourrait donc être '''infini'''. &lt;br /&gt;
Mais, pour des raisons de nommages de périphériques (un octet pour &quot;major&quot;, &quot;minor&quot;), ce nombre maximal a dû être limité.

La limitation au nombre de 4 partitions primaires (ou 3 primaires + 1 étendue) est due au format de la table de partition contenue dans le '''M'''aster '''B'''oot '''R'''ecord (MBR), premier secteur (512 octets) du disque. &lt;br /&gt;
Cette limitation saute avec le nouveau format GPT ('''G'''UID '''P'''artition '''T'''able) utilisé notamment sur les machines avec firmware EFI ('''E'''xtensible '''F'''irmware '''I'''nterface) en surcouche du BIOS.

Voir : &lt;br /&gt;
http://www.tldp.org/HOWTO/Partition/partition-types.html#logical &lt;br /&gt;
http://www.tldp.org/HOWTO/Partition/devices.html

== Le système de fichier ==

Le système de fichier

Un système de fichiers (file system ou filesystem en anglais) ou système de gestion de fichiers (SGF) est une façon de stocker les informations et de les organiser dans des fichiers sur les supports de stockage.

Le système de fichiers proposé par défaut par l'installeur de Debian est '''Ext4''' (Extented FS version 4).

Les Ext? sont des systèmes de fichiers bâtis sur la même structure mais avec des fonctionnalités rajoutées (journalisation pour ext3) et des algorithmes (pré-allocation de blocs &quot;extent&quot; pour ext4) différents suivant les versions.

Ext3 (sorti en 1999) est une évolution de '''Ext2''', le précédent système de fichiers utilisé par défaut par Debian depuis 1993.

Ext4 alloue les blocs libres juste à côté des autres blocs utilisés par le fichier, ce qui a pour effet de minimiser l'espace physique entre les blocs (limitant la fragmentation).

'''Ext4''' (sorti en 2006) est le successeur du système de fichiers ext3, principalement destiné aux systèmes basés sur GNU/Linux. Il est disponible à l'installation depuis Squeeze.

Il garde une compatibilité avec son prédécesseur et est considéré par ses propres concepteurs comme une étape intermédiaire devant mener à un vrai système de fichiers de nouvelle génération tel que [[Btrfs|Btrfs]]. Toutefois, Ext4 est une étape utile et non une simple solution temporaire.

Outre le fait qu'il puisse gérer les volumes d'une taille allant jusqu'à '''1 Eio''' (un exbioctet = 2⁶⁰ octets), la fonctionnalité majeure de ext4 est l'allocation par '''extent''' qui permettent la pré-allocation d'une zone contigüe pour un fichier, pour minimiser la fragmentation. L'option extent est active par défaut depuis le noyau Linux 2.6.23 ; avant cela, elle devait être explicitement indiquée lors du montage de la partition.

Ext2/3/4 ont un algorithme d'allocation de blocs cherchant à éviter la fragmentation, algorithme perfectionné en permanence. C'est pour cela que les outils de défragmentation n'existent pas pour ces systèmes de fichiers. La simple utilisation régulière suffit à défragmenter le système.

Les partitions de type Ext? ont besoin d'une vérification périodique de l'intégrité du système de fichier, et cela peut prendre au démarrage un temps non négligeable lorsque la taille de la partition est importante. Cette vérification est conseillée et effectuée par défaut de manière régulière (modifiée par tune2fs). Grâce à la journalisation, les arrêts sauvages (démontage de la partition non fait proprement par le système) de disque sont moins gênants avec Ext3 et Ext4 qui ne feront pas forcément une vérification de l'intégrité du système au démarrage suivant.

Il peut être toutefois judicieux, sur un serveur de choisir Ext2 pour certaines partitions (/var/log et /tmp par exemple). En effet Ext2 permet de récupérer des fichiers (ici les logs et les fichiers temporaires) facilement, pas ses successeurs.

D'autres systèmes de fichiers peuvent être utilisés sur certaines partitions. '''xfs''' par exemple a de bonnes performances avec de nombreux petits fichiers.

Il est impossible de transformer une partition existante d'un système de fichiers à un autre (sauf parfois pour les ext? qui ont une structure commune), le choix du système de fichiers est donc définitif.

Le système de fichiers lisible par *tous* les OS même les plus anciens est FAT32 mais il est très primaire, interdit les gros fichiers et ne permet pas (ou difficilement) d'installer un linux.

Vous le voyez, tout comme le nombre de partitions et la taille des partitions, le choix du système de fichier n'est pas forcément une chose simple. Soyez prudents et faites confiance au programme d'installation Debian...

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)

! Nom de la partition
|-

| / 20 GB (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}

| SWAP 1 fois et demi la Ram
|- {{ligne grise}}

| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GB :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)

! Nom de la partition
|-

| / 3 GB
|- {{ligne grise}}

| SWAP 5 GB
|- {{ligne grise}}

| /tmp 5 GB
|- {{ligne grise}}

| /usr 15 GB
|- {{ligne grise}}

| /var 5 GB
|- {{ligne grise}}

| /home 317 GB
|}


Pour un serveur, avec 2 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 100 GB :

(Serveur de mail, quelques bases SQL, Serveur Web, un home limité, pour quelques utilisateurs sftp)

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur

! Nom de la partition
|-

| / 350 MB
|- {{ligne grise}}

| /boot 50 MB
|- {{ligne grise}}

| /usr 10 GB
|- {{ligne grise}}

| /var 70 GB
|- {{ligne grise}}

| SWAP 4 GB
|- {{ligne grise}}

| /tmp 10 GB
|- {{ligne grise}}

| /home 5,6 GB
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>eokdm2typh6wchdba8iz61vmw9g9bdf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5519</id>
      <parentid>5505</parentid>
      <timestamp>2013-12-30T12:36:54Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* L'organisation des répertoires */ reformulation</comment>
      <text xml:space="preserve" bytes="20770">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===

&lt;br&gt;Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.jpeg|left]]&lt;br&gt;&lt;br&gt;&lt;br&gt;

Un disque dur est une mémoire de masse utilisée principalement dans les ordinateurs. C'est sur celui-ci que sera stocké l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.&lt;br&gt;&lt;br&gt;

Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à la carte mère). Les plus courantes actuellement sont:&lt;br&gt;&lt;br&gt;

- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg|80px|right]]&lt;br&gt;&lt;br&gt;

- Serial ATA ou SATA (Serial Advanced Technology Attachment) [[Fichier:SATA Data Cable.jpg|80px|right]]&lt;br&gt;&lt;br&gt;

- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg|80px|right]]

&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;

=== Les partitions ===

En micro-informatique, une partition est une partie d'un disque dur.

Les informations sur les partitions sont conservées sur le disque lui-même dans une zone qu'on appelle table des partitions. La table des partitions principale est contenue dans le premier secteur du disque (Master Boot Record ou MBR) qui peut contenir également le programme d'amorçage.

Voici un exemple de partitionnement:

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux

Une partition primaire : sda1.

Une partition étendue : sda2 qui est un conteneur de partitions logiques.

Cinq partitions logiques : sda5 à sda9.

=== Généralités ===

'''Pourquoi partitionner ?'''

Vous pourriez envisager de n'avoir qu'une seule partition contenant tout votre système...
La plupart d'entre nous choisissent de créer plus de partitions que le minimum dont Debian a besoin pour fonctionner. Pourquoi ?

'''Principalement pour des raison de sécurité''': Si une partition est corrompue, le reste du système est toujours accessible. Il suffit généralement de restaurer une sauvegarde de la partition corrompue pour régler le problème.

Mais aussi pour séparer les partitions qui risqueraient d'être submergées de fichiers (Par exemple /var pour un serveur de mail qui serait attaqué par un envoi massif...). Le reste du système serait alors toujours opérationnel.


Séparer les autres partitions de la racine &quot;/&quot; permet, en cas de corruption d'une autre partition, de toujours pouvoir amorcer Linux pour réparer le système...
Vous voulez en effet pouvoir être en mesure de démarrer en &quot;Single user mode&quot; pour restaurer votre station ou serveur... Ce qui exige une racine «intacte».


La seconde difficulté (après le choix du nombre de partitions) sera de définir la taille de ces partitions... Une taille trop petite rendra rapidement votre système inutilisable. Une taille trop grande gâche de l'espace disque (qui même s'il n'est pas cher peut être utile ailleurs...)


Les remarques qui suivent sont des préconisations Debian:

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, une simple partition / (plus celle d'échange) est sans doute la solution la plus simple. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système. '''Il est donc donc généralement conseillé, en plus de la partition d'échange (swap) de créer une partition / ET une partition /home'''.

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de la distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installation y déploient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes Linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.


'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.''' et, dixit MisterFreeze, « de la religion de l'administrateur »... ;-)

N'espérez pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;15%&quot;| Répertoire
! Contenu
|-{{ligne grise}}
| /
| La racine (partition root), qui contient tous les autres répertoires
|-{{ligne grise}}
| /bin
| Commandes utilisateur (ls, cat, cd, cp...)
|-{{ligne grise}}
| /boot
| Fichiers nécessaires au démarrage du système
|-{{ligne grise}}
| /dev
| Répertoire dans lequel &quot;mknod&quot; va créer les noeuds (fichier de périphérique) qui vont permettre l'accès aux périphériques (devices) disques, partitions, consoles, etc...
|-{{ligne grise}}
| /etc
| Fichiers de configuration (Editable Text Configuration)
|-{{ligne grise}}
| /home
| Répertoires personnels des utilisateurs
|-{{ligne grise}}
| /lib
| Bibliothèques partagées, modules noyaux, pilotes de périphériques et firmwares
|-{{ligne grise}}
| /media
| Points de montage pour les supports amovibles montés automatiquement
|-{{ligne grise}}
| /mnt
| Point de montage pour les montages temporaires manuels
|-{{ligne grise}}
| /proc
| Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
|-{{ligne grise}}
| /root
| Répertoire personnel de l'utilisateur root
|-{{ligne grise}}
| /sbin
| Commandes pour l'administration du système (ifconfig, mount, fdisk...)
|-{{ligne grise}}
| /sys
| Répertoire virtuel pour les informations système (noyaux 2.6)
|-{{ligne grise}}
| /tmp
| Fichiers temporaires
|-{{ligne grise}}
| /usr
| Hiérarchie secondaire
|-{{ligne grise}}
| /var
| Données variables
|-{{ligne grise}}
| /srv
| Données pour les services fournis par le système
|-{{ligne grise}}
|}

Plus de détails dans [[Man_hier|$ man hier]]

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessiter plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives)
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou logique.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4.2G de swap pour pouvoir bénéficier de l'hibernation.

== Primaires, étendue, logiques ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions '''primaires''' et une partition '''étendue''' qui est un conteneur de partitions '''logiques'''.

Pour un disque '''SCSI''', Linux limite le nombre de partitions logiques à 12 (ce qui fait quand même un total de 15 partitions utilisables). &lt;br /&gt;
Pour un disque '''IDE''', 60 partitions logiques peuvent être crées dans la partition étendue (donc 63 partitions utilisables).

Une partition logique contenant un pointeur vers le début de la partition logique suivante (chaînage), le nombre de partitions logiques pourrait donc être '''infini'''. &lt;br /&gt;
Mais, pour des raisons de nommages de périphériques (un octet pour &quot;major&quot;, &quot;minor&quot;), ce nombre maximal a dû être limité.

La limitation au nombre de 4 partitions primaires (ou 3 primaires + 1 étendue) est due au format de la table de partition contenue dans le '''M'''aster '''B'''oot '''R'''ecord (MBR), premier secteur (512 octets) du disque. &lt;br /&gt;
Cette limitation saute avec le nouveau format GPT ('''G'''UID '''P'''artition '''T'''able) utilisé notamment sur les machines avec firmware EFI ('''E'''xtensible '''F'''irmware '''I'''nterface) en surcouche du BIOS.

Voir : &lt;br /&gt;
http://www.tldp.org/HOWTO/Partition/partition-types.html#logical &lt;br /&gt;
http://www.tldp.org/HOWTO/Partition/devices.html

== Le système de fichier ==

Le système de fichier

Un système de fichiers (file system ou filesystem en anglais) ou système de gestion de fichiers (SGF) est une façon de stocker les informations et de les organiser dans des fichiers sur les supports de stockage.

Le système de fichiers proposé par défaut par l'installeur de Debian est '''Ext4''' (Extented FS version 4).

Les Ext? sont des systèmes de fichiers bâtis sur la même structure mais avec des fonctionnalités rajoutées (journalisation pour ext3) et des algorithmes (pré-allocation de blocs &quot;extent&quot; pour ext4) différents suivant les versions.

Ext3 (sorti en 1999) est une évolution de '''Ext2''', le précédent système de fichiers utilisé par défaut par Debian depuis 1993.

Ext4 alloue les blocs libres juste à côté des autres blocs utilisés par le fichier, ce qui a pour effet de minimiser l'espace physique entre les blocs (limitant la fragmentation).

'''Ext4''' (sorti en 2006) est le successeur du système de fichiers ext3, principalement destiné aux systèmes basés sur GNU/Linux. Il est disponible à l'installation depuis Squeeze.

Il garde une compatibilité avec son prédécesseur et est considéré par ses propres concepteurs comme une étape intermédiaire devant mener à un vrai système de fichiers de nouvelle génération tel que [[Btrfs|Btrfs]]. Toutefois, Ext4 est une étape utile et non une simple solution temporaire.

Outre le fait qu'il puisse gérer les volumes d'une taille allant jusqu'à '''1 Eio''' (un exbioctet = 2⁶⁰ octets), la fonctionnalité majeure de ext4 est l'allocation par '''extent''' qui permettent la pré-allocation d'une zone contigüe pour un fichier, pour minimiser la fragmentation. L'option extent est active par défaut depuis le noyau Linux 2.6.23 ; avant cela, elle devait être explicitement indiquée lors du montage de la partition.

Ext2/3/4 ont un algorithme d'allocation de blocs cherchant à éviter la fragmentation, algorithme perfectionné en permanence. C'est pour cela que les outils de défragmentation n'existent pas pour ces systèmes de fichiers. La simple utilisation régulière suffit à défragmenter le système.

Les partitions de type Ext? ont besoin d'une vérification périodique de l'intégrité du système de fichier, et cela peut prendre au démarrage un temps non négligeable lorsque la taille de la partition est importante. Cette vérification est conseillée et effectuée par défaut de manière régulière (modifiée par tune2fs). Grâce à la journalisation, les arrêts sauvages (démontage de la partition non fait proprement par le système) de disque sont moins gênants avec Ext3 et Ext4 qui ne feront pas forcément une vérification de l'intégrité du système au démarrage suivant.

Il peut être toutefois judicieux, sur un serveur de choisir Ext2 pour certaines partitions (/var/log et /tmp par exemple). En effet Ext2 permet de récupérer des fichiers (ici les logs et les fichiers temporaires) facilement, pas ses successeurs.

D'autres systèmes de fichiers peuvent être utilisés sur certaines partitions. '''xfs''' par exemple a de bonnes performances avec de nombreux petits fichiers.

Il est impossible de transformer une partition existante d'un système de fichiers à un autre (sauf parfois pour les ext? qui ont une structure commune), le choix du système de fichiers est donc définitif.

Le système de fichiers lisible par *tous* les OS même les plus anciens est FAT32 mais il est très primaire, interdit les gros fichiers et ne permet pas (ou difficilement) d'installer un linux.

Vous le voyez, tout comme le nombre de partitions et la taille des partitions, le choix du système de fichier n'est pas forcément une chose simple. Soyez prudents et faites confiance au programme d'installation Debian...

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)

! Nom de la partition
|-

| / 20 GB (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}

| SWAP 1 fois et demi la Ram
|- {{ligne grise}}

| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GB :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)

! Nom de la partition
|-

| / 3 GB
|- {{ligne grise}}

| SWAP 5 GB
|- {{ligne grise}}

| /tmp 5 GB
|- {{ligne grise}}

| /usr 15 GB
|- {{ligne grise}}

| /var 5 GB
|- {{ligne grise}}

| /home 317 GB
|}


Pour un serveur, avec 2 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 100 GB :

(Serveur de mail, quelques bases SQL, Serveur Web, un home limité, pour quelques utilisateurs sftp)

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur

! Nom de la partition
|-

| / 350 MB
|- {{ligne grise}}

| /boot 50 MB
|- {{ligne grise}}

| /usr 10 GB
|- {{ligne grise}}

| /var 70 GB
|- {{ligne grise}}

| SWAP 4 GB
|- {{ligne grise}}

| /tmp 10 GB
|- {{ligne grise}}

| /home 5,6 GB
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>01nwvcgkpyzylmjdgmnkx0viiu55tje</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5522</id>
      <parentid>5519</parentid>
      <timestamp>2014-01-02T23:55:17Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Les partitions */ reformulation</comment>
      <text xml:space="preserve" bytes="20832">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===

&lt;br&gt;Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.jpeg|left]]&lt;br&gt;&lt;br&gt;&lt;br&gt;

Un disque dur est une mémoire de masse utilisée principalement dans les ordinateurs. C'est sur celui-ci que sera stocké l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.&lt;br&gt;&lt;br&gt;

Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à la carte mère). Les plus courantes actuellement sont:&lt;br&gt;&lt;br&gt;

- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg|80px|right]]&lt;br&gt;&lt;br&gt;

- Serial ATA ou SATA (Serial Advanced Technology Attachment) [[Fichier:SATA Data Cable.jpg|80px|right]]&lt;br&gt;&lt;br&gt;

- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg|80px|right]]

&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;

=== Les partitions ===

En micro-informatique, une partition permet de définir un partie de l'espace disponible d'un disque dur.

Les informations sur les 4 premières partitions d'un disque sont inscrites sur le disque lui-même dans une zone qu'on appelle table des partitions. &lt;br /&gt;
La table des partitions principale est contenue dans le premier secteur du disque (Master Boot Record ou MBR) qui contient également le programme d'amorçage.

Voici un exemple de partitionnement:

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux

Une partition primaire : sda1.

Une partition étendue : sda2 qui est un conteneur de partitions logiques.

Cinq partitions logiques : sda5 à sda9.

=== Généralités ===

'''Pourquoi partitionner ?'''

Vous pourriez envisager de n'avoir qu'une seule partition contenant tout votre système...
La plupart d'entre nous choisissent de créer plus de partitions que le minimum dont Debian a besoin pour fonctionner. Pourquoi ?

'''Principalement pour des raison de sécurité''': Si une partition est corrompue, le reste du système est toujours accessible. Il suffit généralement de restaurer une sauvegarde de la partition corrompue pour régler le problème.

Mais aussi pour séparer les partitions qui risqueraient d'être submergées de fichiers (Par exemple /var pour un serveur de mail qui serait attaqué par un envoi massif...). Le reste du système serait alors toujours opérationnel.


Séparer les autres partitions de la racine &quot;/&quot; permet, en cas de corruption d'une autre partition, de toujours pouvoir amorcer Linux pour réparer le système...
Vous voulez en effet pouvoir être en mesure de démarrer en &quot;Single user mode&quot; pour restaurer votre station ou serveur... Ce qui exige une racine «intacte».


La seconde difficulté (après le choix du nombre de partitions) sera de définir la taille de ces partitions... Une taille trop petite rendra rapidement votre système inutilisable. Une taille trop grande gâche de l'espace disque (qui même s'il n'est pas cher peut être utile ailleurs...)


Les remarques qui suivent sont des préconisations Debian:

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, une simple partition / (plus celle d'échange) est sans doute la solution la plus simple. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système. '''Il est donc donc généralement conseillé, en plus de la partition d'échange (swap) de créer une partition / ET une partition /home'''.

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de la distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installation y déploient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes Linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.


'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.''' et, dixit MisterFreeze, « de la religion de l'administrateur »... ;-)

N'espérez pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;15%&quot;| Répertoire
! Contenu
|-{{ligne grise}}
| /
| La racine (partition root), qui contient tous les autres répertoires
|-{{ligne grise}}
| /bin
| Commandes utilisateur (ls, cat, cd, cp...)
|-{{ligne grise}}
| /boot
| Fichiers nécessaires au démarrage du système
|-{{ligne grise}}
| /dev
| Répertoire dans lequel &quot;mknod&quot; va créer les noeuds (fichier de périphérique) qui vont permettre l'accès aux périphériques (devices) disques, partitions, consoles, etc...
|-{{ligne grise}}
| /etc
| Fichiers de configuration (Editable Text Configuration)
|-{{ligne grise}}
| /home
| Répertoires personnels des utilisateurs
|-{{ligne grise}}
| /lib
| Bibliothèques partagées, modules noyaux, pilotes de périphériques et firmwares
|-{{ligne grise}}
| /media
| Points de montage pour les supports amovibles montés automatiquement
|-{{ligne grise}}
| /mnt
| Point de montage pour les montages temporaires manuels
|-{{ligne grise}}
| /proc
| Répertoire virtuel pour les informations système (noyaux 2.4 et 2.6)
|-{{ligne grise}}
| /root
| Répertoire personnel de l'utilisateur root
|-{{ligne grise}}
| /sbin
| Commandes pour l'administration du système (ifconfig, mount, fdisk...)
|-{{ligne grise}}
| /sys
| Répertoire virtuel pour les informations système (noyaux 2.6)
|-{{ligne grise}}
| /tmp
| Fichiers temporaires
|-{{ligne grise}}
| /usr
| Hiérarchie secondaire
|-{{ligne grise}}
| /var
| Données variables
|-{{ligne grise}}
| /srv
| Données pour les services fournis par le système
|-{{ligne grise}}
|}

Plus de détails dans [[Man_hier|$ man hier]]

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessiter plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives)
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou logique.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4.2G de swap pour pouvoir bénéficier de l'hibernation.

== Primaires, étendue, logiques ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions '''primaires''' et une partition '''étendue''' qui est un conteneur de partitions '''logiques'''.

Pour un disque '''SCSI''', Linux limite le nombre de partitions logiques à 12 (ce qui fait quand même un total de 15 partitions utilisables). &lt;br /&gt;
Pour un disque '''IDE''', 60 partitions logiques peuvent être crées dans la partition étendue (donc 63 partitions utilisables).

Une partition logique contenant un pointeur vers le début de la partition logique suivante (chaînage), le nombre de partitions logiques pourrait donc être '''infini'''. &lt;br /&gt;
Mais, pour des raisons de nommages de périphériques (un octet pour &quot;major&quot;, &quot;minor&quot;), ce nombre maximal a dû être limité.

La limitation au nombre de 4 partitions primaires (ou 3 primaires + 1 étendue) est due au format de la table de partition contenue dans le '''M'''aster '''B'''oot '''R'''ecord (MBR), premier secteur (512 octets) du disque. &lt;br /&gt;
Cette limitation saute avec le nouveau format GPT ('''G'''UID '''P'''artition '''T'''able) utilisé notamment sur les machines avec firmware EFI ('''E'''xtensible '''F'''irmware '''I'''nterface) en surcouche du BIOS.

Voir : &lt;br /&gt;
http://www.tldp.org/HOWTO/Partition/partition-types.html#logical &lt;br /&gt;
http://www.tldp.org/HOWTO/Partition/devices.html

== Le système de fichier ==

Le système de fichier

Un système de fichiers (file system ou filesystem en anglais) ou système de gestion de fichiers (SGF) est une façon de stocker les informations et de les organiser dans des fichiers sur les supports de stockage.

Le système de fichiers proposé par défaut par l'installeur de Debian est '''Ext4''' (Extented FS version 4).

Les Ext? sont des systèmes de fichiers bâtis sur la même structure mais avec des fonctionnalités rajoutées (journalisation pour ext3) et des algorithmes (pré-allocation de blocs &quot;extent&quot; pour ext4) différents suivant les versions.

Ext3 (sorti en 1999) est une évolution de '''Ext2''', le précédent système de fichiers utilisé par défaut par Debian depuis 1993.

Ext4 alloue les blocs libres juste à côté des autres blocs utilisés par le fichier, ce qui a pour effet de minimiser l'espace physique entre les blocs (limitant la fragmentation).

'''Ext4''' (sorti en 2006) est le successeur du système de fichiers ext3, principalement destiné aux systèmes basés sur GNU/Linux. Il est disponible à l'installation depuis Squeeze.

Il garde une compatibilité avec son prédécesseur et est considéré par ses propres concepteurs comme une étape intermédiaire devant mener à un vrai système de fichiers de nouvelle génération tel que [[Btrfs|Btrfs]]. Toutefois, Ext4 est une étape utile et non une simple solution temporaire.

Outre le fait qu'il puisse gérer les volumes d'une taille allant jusqu'à '''1 Eio''' (un exbioctet = 2⁶⁰ octets), la fonctionnalité majeure de ext4 est l'allocation par '''extent''' qui permettent la pré-allocation d'une zone contigüe pour un fichier, pour minimiser la fragmentation. L'option extent est active par défaut depuis le noyau Linux 2.6.23 ; avant cela, elle devait être explicitement indiquée lors du montage de la partition.

Ext2/3/4 ont un algorithme d'allocation de blocs cherchant à éviter la fragmentation, algorithme perfectionné en permanence. C'est pour cela que les outils de défragmentation n'existent pas pour ces systèmes de fichiers. La simple utilisation régulière suffit à défragmenter le système.

Les partitions de type Ext? ont besoin d'une vérification périodique de l'intégrité du système de fichier, et cela peut prendre au démarrage un temps non négligeable lorsque la taille de la partition est importante. Cette vérification est conseillée et effectuée par défaut de manière régulière (modifiée par tune2fs). Grâce à la journalisation, les arrêts sauvages (démontage de la partition non fait proprement par le système) de disque sont moins gênants avec Ext3 et Ext4 qui ne feront pas forcément une vérification de l'intégrité du système au démarrage suivant.

Il peut être toutefois judicieux, sur un serveur de choisir Ext2 pour certaines partitions (/var/log et /tmp par exemple). En effet Ext2 permet de récupérer des fichiers (ici les logs et les fichiers temporaires) facilement, pas ses successeurs.

D'autres systèmes de fichiers peuvent être utilisés sur certaines partitions. '''xfs''' par exemple a de bonnes performances avec de nombreux petits fichiers.

Il est impossible de transformer une partition existante d'un système de fichiers à un autre (sauf parfois pour les ext? qui ont une structure commune), le choix du système de fichiers est donc définitif.

Le système de fichiers lisible par *tous* les OS même les plus anciens est FAT32 mais il est très primaire, interdit les gros fichiers et ne permet pas (ou difficilement) d'installer un linux.

Vous le voyez, tout comme le nombre de partitions et la taille des partitions, le choix du système de fichier n'est pas forcément une chose simple. Soyez prudents et faites confiance au programme d'installation Debian...

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)

! Nom de la partition
|-

| / 20 GB (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}

| SWAP 1 fois et demi la Ram
|- {{ligne grise}}

| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GB :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)

! Nom de la partition
|-

| / 3 GB
|- {{ligne grise}}

| SWAP 5 GB
|- {{ligne grise}}

| /tmp 5 GB
|- {{ligne grise}}

| /usr 15 GB
|- {{ligne grise}}

| /var 5 GB
|- {{ligne grise}}

| /home 317 GB
|}


Pour un serveur, avec 2 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 100 GB :

(Serveur de mail, quelques bases SQL, Serveur Web, un home limité, pour quelques utilisateurs sftp)

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur

! Nom de la partition
|-

| / 350 MB
|- {{ligne grise}}

| /boot 50 MB
|- {{ligne grise}}

| /usr 10 GB
|- {{ligne grise}}

| /var 70 GB
|- {{ligne grise}}

| SWAP 4 GB
|- {{ligne grise}}

| /tmp 10 GB
|- {{ligne grise}}

| /home 5,6 GB
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>aqoy78mervlx3c1ta1xvxtbeinmd8fj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5523</id>
      <parentid>5522</parentid>
      <timestamp>2014-01-03T00:13:12Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* L'organisation des répertoires */nom des répertoires</comment>
      <text xml:space="preserve" bytes="21097">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===

&lt;br&gt;Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.jpeg|left]]&lt;br&gt;&lt;br&gt;&lt;br&gt;

Un disque dur est une mémoire de masse utilisée principalement dans les ordinateurs. C'est sur celui-ci que sera stocké l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.&lt;br&gt;&lt;br&gt;

Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à la carte mère). Les plus courantes actuellement sont:&lt;br&gt;&lt;br&gt;

- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg|80px|right]]&lt;br&gt;&lt;br&gt;

- Serial ATA ou SATA (Serial Advanced Technology Attachment) [[Fichier:SATA Data Cable.jpg|80px|right]]&lt;br&gt;&lt;br&gt;

- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg|80px|right]]

&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;

=== Les partitions ===

En micro-informatique, une partition permet de définir un partie de l'espace disponible d'un disque dur.

Les informations sur les 4 premières partitions d'un disque sont inscrites sur le disque lui-même dans une zone qu'on appelle table des partitions. &lt;br /&gt;
La table des partitions principale est contenue dans le premier secteur du disque (Master Boot Record ou MBR) qui contient également le programme d'amorçage.

Voici un exemple de partitionnement:

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux

Une partition primaire : sda1.

Une partition étendue : sda2 qui est un conteneur de partitions logiques.

Cinq partitions logiques : sda5 à sda9.

=== Généralités ===

'''Pourquoi partitionner ?'''

Vous pourriez envisager de n'avoir qu'une seule partition contenant tout votre système...
La plupart d'entre nous choisissent de créer plus de partitions que le minimum dont Debian a besoin pour fonctionner. Pourquoi ?

'''Principalement pour des raison de sécurité''': Si une partition est corrompue, le reste du système est toujours accessible. Il suffit généralement de restaurer une sauvegarde de la partition corrompue pour régler le problème.

Mais aussi pour séparer les partitions qui risqueraient d'être submergées de fichiers (Par exemple /var pour un serveur de mail qui serait attaqué par un envoi massif...). Le reste du système serait alors toujours opérationnel.


Séparer les autres partitions de la racine &quot;/&quot; permet, en cas de corruption d'une autre partition, de toujours pouvoir amorcer Linux pour réparer le système...
Vous voulez en effet pouvoir être en mesure de démarrer en &quot;Single user mode&quot; pour restaurer votre station ou serveur... Ce qui exige une racine «intacte».


La seconde difficulté (après le choix du nombre de partitions) sera de définir la taille de ces partitions... Une taille trop petite rendra rapidement votre système inutilisable. Une taille trop grande gâche de l'espace disque (qui même s'il n'est pas cher peut être utile ailleurs...)


Les remarques qui suivent sont des préconisations Debian:

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, une simple partition / (plus celle d'échange) est sans doute la solution la plus simple. L'inconvénient est le fait que les données personnelles ne sont pas séparées du système. '''Il est donc donc généralement conseillé, en plus de la partition d'échange (swap) de créer une partition / ET une partition /home'''.

* Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il vaut mieux placer les répertoires /usr, /var, /tmp, et /home chacun sur une partition distincte de la partition /.

* Si vous prévoyez d'installer beaucoup de programmes qui ne font pas partie de la distribution Debian, pensez à créer une partition /usr/local séparée.

* Si vous prévoyez de créer un serveur de mail, prévoyez une partition /var en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre /var/mail sur une partition distincte.

* Mettre le répertoire /tmp sur sa propre partition, par exemple 20 à 50 Mo est un minimum, sur les disques récents il peut être utile d'y mettre 1 ou 2G (des logiciels de gravure y mettent les images ISO temporaires, des logiciels d'installation y déploient tout un arbre avant de compiler, des logiciels d'édition video y mettent leur (gros) fichiers temporaires). Cette remarque vaut pour /var/tmp.

* Si vous mettez sur pied un serveur avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes Linux, il est généralement intéressant d'avoir une grande partition distincte pour /home.


'''La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.''' et, dixit MisterFreeze, « de la religion de l'administrateur »... ;-)

N'espérez pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations et d'utilisateurs...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous trouverez tout seul le bon partitionnement.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons comment s'organisent les répertoires :

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;15%&quot;| Répertoire
! Contenu
|-{{ligne grise}}
| /
| La racine (partition root), qui contient tous les autres répertoires
|-{{ligne grise}}
| /bin
| '''bin'''ires&quot; : Commandes utilisateur (ls, cat, cd, cp...)
|-{{ligne grise}}
| /boot
| Fichiers indispensables au démarrage du système
|-{{ligne grise}}
| /dev
| '''dev'''ices : (pseudo-système de fichiers). Répertoire dans lequel &quot;mknod&quot; va créer les noeuds (fichier de périphérique) qui vont permettre l'accès aux périphériques (devices) disques, partitions, consoles, etc...
|-{{ligne grise}}
| /etc
| ('''E'''ditable '''T'''ext '''C'''onfiguration : Fichiers de configuration.
|-{{ligne grise}}
| /home
| Répertoires personnels des utilisateurs
|-{{ligne grise}}
| /lib
| '''lib'''rary : Bibliothèques partagées, modules noyaux, pilotes de périphériques et firmwares
|-{{ligne grise}}
| /media
| Points de montage pour les supports amovibles montés automatiquement
|-{{ligne grise}}
| /mnt
| '''m'''ou'''nt''' : Point de montage pour les montages temporaires manuels
|-{{ligne grise}}
| /proc
| '''proc'''esses : (pseudo-système de fichiers) processus en cours (noyaux de versions supérieures à 2.4)
|-{{ligne grise}}
| /root
| Répertoire personnel de l'utilisateur root
|-{{ligne grise}}
| /sbin
| '''s'''ystem '''bin'''ary : Commandes pour l'administration du système (ifconfig, mount, fdisk...)
|-{{ligne grise}}
| /sys
| '''sys'''tem : Répertoire virtuel pour les informations système (noyaux 2.6)
|-{{ligne grise}}
| /tmp
| '''t'''e'''mp'''orary : Fichiers temporaires
|-{{ligne grise}}
| /usr
| '''us'''e'''r''' : Hiérarchie secondaire
|-{{ligne grise}}
| /var
| '''var'''iables
|-{{ligne grise}}
| /srv
| '''s'''e'''rv'''ices : Données pour les services fournis par le système
|-{{ligne grise}}
|}

Plus de détails dans [[Man_hier|$ man hier]]

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessiter plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives)
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou logique.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4.2G de swap pour pouvoir bénéficier de l'hibernation.

== Primaires, étendue, logiques ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions '''primaires''' et une partition '''étendue''' qui est un conteneur de partitions '''logiques'''.

Pour un disque '''SCSI''', Linux limite le nombre de partitions logiques à 12 (ce qui fait quand même un total de 15 partitions utilisables). &lt;br /&gt;
Pour un disque '''IDE''', 60 partitions logiques peuvent être crées dans la partition étendue (donc 63 partitions utilisables).

Une partition logique contenant un pointeur vers le début de la partition logique suivante (chaînage), le nombre de partitions logiques pourrait donc être '''infini'''. &lt;br /&gt;
Mais, pour des raisons de nommages de périphériques (un octet pour &quot;major&quot;, &quot;minor&quot;), ce nombre maximal a dû être limité.

La limitation au nombre de 4 partitions primaires (ou 3 primaires + 1 étendue) est due au format de la table de partition contenue dans le '''M'''aster '''B'''oot '''R'''ecord (MBR), premier secteur (512 octets) du disque. &lt;br /&gt;
Cette limitation saute avec le nouveau format GPT ('''G'''UID '''P'''artition '''T'''able) utilisé notamment sur les machines avec firmware EFI ('''E'''xtensible '''F'''irmware '''I'''nterface) en surcouche du BIOS.

Voir : &lt;br /&gt;
http://www.tldp.org/HOWTO/Partition/partition-types.html#logical &lt;br /&gt;
http://www.tldp.org/HOWTO/Partition/devices.html

== Le système de fichier ==

Le système de fichier

Un système de fichiers (file system ou filesystem en anglais) ou système de gestion de fichiers (SGF) est une façon de stocker les informations et de les organiser dans des fichiers sur les supports de stockage.

Le système de fichiers proposé par défaut par l'installeur de Debian est '''Ext4''' (Extented FS version 4).

Les Ext? sont des systèmes de fichiers bâtis sur la même structure mais avec des fonctionnalités rajoutées (journalisation pour ext3) et des algorithmes (pré-allocation de blocs &quot;extent&quot; pour ext4) différents suivant les versions.

Ext3 (sorti en 1999) est une évolution de '''Ext2''', le précédent système de fichiers utilisé par défaut par Debian depuis 1993.

Ext4 alloue les blocs libres juste à côté des autres blocs utilisés par le fichier, ce qui a pour effet de minimiser l'espace physique entre les blocs (limitant la fragmentation).

'''Ext4''' (sorti en 2006) est le successeur du système de fichiers ext3, principalement destiné aux systèmes basés sur GNU/Linux. Il est disponible à l'installation depuis Squeeze.

Il garde une compatibilité avec son prédécesseur et est considéré par ses propres concepteurs comme une étape intermédiaire devant mener à un vrai système de fichiers de nouvelle génération tel que [[Btrfs|Btrfs]]. Toutefois, Ext4 est une étape utile et non une simple solution temporaire.

Outre le fait qu'il puisse gérer les volumes d'une taille allant jusqu'à '''1 Eio''' (un exbioctet = 2⁶⁰ octets), la fonctionnalité majeure de ext4 est l'allocation par '''extent''' qui permettent la pré-allocation d'une zone contigüe pour un fichier, pour minimiser la fragmentation. L'option extent est active par défaut depuis le noyau Linux 2.6.23 ; avant cela, elle devait être explicitement indiquée lors du montage de la partition.

Ext2/3/4 ont un algorithme d'allocation de blocs cherchant à éviter la fragmentation, algorithme perfectionné en permanence. C'est pour cela que les outils de défragmentation n'existent pas pour ces systèmes de fichiers. La simple utilisation régulière suffit à défragmenter le système.

Les partitions de type Ext? ont besoin d'une vérification périodique de l'intégrité du système de fichier, et cela peut prendre au démarrage un temps non négligeable lorsque la taille de la partition est importante. Cette vérification est conseillée et effectuée par défaut de manière régulière (modifiée par tune2fs). Grâce à la journalisation, les arrêts sauvages (démontage de la partition non fait proprement par le système) de disque sont moins gênants avec Ext3 et Ext4 qui ne feront pas forcément une vérification de l'intégrité du système au démarrage suivant.

Il peut être toutefois judicieux, sur un serveur de choisir Ext2 pour certaines partitions (/var/log et /tmp par exemple). En effet Ext2 permet de récupérer des fichiers (ici les logs et les fichiers temporaires) facilement, pas ses successeurs.

D'autres systèmes de fichiers peuvent être utilisés sur certaines partitions. '''xfs''' par exemple a de bonnes performances avec de nombreux petits fichiers.

Il est impossible de transformer une partition existante d'un système de fichiers à un autre (sauf parfois pour les ext? qui ont une structure commune), le choix du système de fichiers est donc définitif.

Le système de fichiers lisible par *tous* les OS même les plus anciens est FAT32 mais il est très primaire, interdit les gros fichiers et ne permet pas (ou difficilement) d'installer un linux.

Vous le voyez, tout comme le nombre de partitions et la taille des partitions, le choix du système de fichier n'est pas forcément une chose simple. Soyez prudents et faites confiance au programme d'installation Debian...

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)

! Nom de la partition
|-

| / 20 GB (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}

| SWAP 1 fois et demi la Ram
|- {{ligne grise}}

| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GB :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)

! Nom de la partition
|-

| / 3 GB
|- {{ligne grise}}

| SWAP 5 GB
|- {{ligne grise}}

| /tmp 5 GB
|- {{ligne grise}}

| /usr 15 GB
|- {{ligne grise}}

| /var 5 GB
|- {{ligne grise}}

| /home 317 GB
|}


Pour un serveur, avec 2 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 100 GB :

(Serveur de mail, quelques bases SQL, Serveur Web, un home limité, pour quelques utilisateurs sftp)

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur

! Nom de la partition
|-

| / 350 MB
|- {{ligne grise}}

| /boot 50 MB
|- {{ligne grise}}

| /usr 10 GB
|- {{ligne grise}}

| /var 70 GB
|- {{ligne grise}}

| SWAP 4 GB
|- {{ligne grise}}

| /tmp 10 GB
|- {{ligne grise}}

| /home 5,6 GB
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>ssyniovnljnt7qy1f3ax0581oipk3sg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5524</id>
      <parentid>5523</parentid>
      <timestamp>2014-01-03T12:41:24Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>dépoussiérage divers</comment>
      <text xml:space="preserve" bytes="20988">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===

&lt;br&gt;Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.jpeg|left]]&lt;br&gt;&lt;br&gt;&lt;br&gt;

Un disque dur est une mémoire de masse utilisée principalement dans les ordinateurs. C'est sur celui-ci que sera stocké l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.&lt;br&gt;&lt;br&gt;

Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à la carte mère). Les plus courantes actuellement sont:&lt;br&gt;&lt;br&gt;

- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg|80px|right]]&lt;br&gt;&lt;br&gt;

- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg|80px|right]]

- Serial ATA ou SATA (Serial Advanced Technology Attachment) [[Fichier:SATA Data Cable.jpg|80px|right]]&lt;br&gt;&lt;br&gt;

&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;

=== Les partitions ===

En micro-informatique, une partition permet de définir un partie de l'espace disponible d'un disque dur.

Les informations sur les 4 premières partitions d'un disque sont inscrites sur le disque lui-même dans une zone qu'on appelle table des partitions. &lt;br /&gt;
La table des partitions principale est inscrite dans le premier secteur du disque, secteur appelé le  MBR ('''M'''aster '''B'''oot '''R'''ecord ou MBR), puisqu'il contient aussi le programme d'amorçage.

Voici un exemple de partitionnement:

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux

Une partition primaire : sda1.

Une partition étendue : sda2 qui est un conteneur de partitions logiques.

Cinq partitions logiques : sda5 à sda9, définies dans l'espace de la partition étendue sda2.

=== Généralités ===

'''Pourquoi partitionner ?'''

Vous pourriez envisager de n'avoir qu'une seule partition contenant tout votre système...
La plupart d'entre nous choisissent de créer plus de partitions que le minimum dont Debian a besoin pour fonctionner. Pourquoi ?

'''Principalement pour des raison de sécurité''': &lt;br /&gt;
Si une partition est corrompue, le reste du système peut être encore accessible. Il peut suffire simplement de restaurer une sauvegarde de la partition corrompue pour régler le problème.
Mais aussi pour séparer les partitions qui risqueraient d'être submergées de fichiers (Par exemple /var pour un serveur de mail qui serait attaqué par un envoi massif...),le reste du système serait alors toujours opérationnel.

Séparer les autres partitions de la racine &quot;/&quot; permet, en cas de corruption d'une autre partition, de toujours pouvoir amorcer Linux pour réparer le système...&lt;br /&gt;
Vous voulez en effet pouvoir être en mesure de démarrer en &quot;Single user mode&quot; pour restaurer votre station ou serveur... Ce qui exige une racine «intacte».

La seconde difficulté (après le choix du nombre de partitions) sera de définir la taille de ces partitions...&lt;br /&gt;
Une taille trop petite rendra rapidement votre système inutilisable. Une taille trop grande gâche de l'espace disque (qui même s'il n'est pas cher peut être utile ailleurs...)

Les remarques qui suivent sont des préconisations Debian:

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, une simple partition / (plus celle d'échange '''swap''' ) est sans doute la solution la plus simple à mettre en œuvre. L'inconvénient serait que les données personnelles ne sont pas séparées du système. '''Il est donc donc généralement conseillé, en plus de la partition d'échange (swap) de créer une partition racine &quot;/&quot; ET une partition &quot;/home&quot;'''.

* Pour les systèmes utilisés par plusieurs personnes (donc avec autant de comptes personnels), ou les systèmes disposants de beaucoup d'espace disque, il vaut mieux placer les répertoires &quot;/usr&quot;, &quot;/var&quot;, &quot;/tmp&quot;, et &quot;/home&quot; chacun sur une partition distincte du ou des disques. /.

* Si vous projetez d'utiliser votre machine comme serveur de mail, prévoyez une partition &quot;/var&quot; en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre &quot;/var/mail&quot; sur une partition distincte.

* Si vous mettez sur pied un serveur dont avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes Linux, il est généralement intéressant d'avoir une grande partition distincte pour &quot;/home&quot;.

'''La méthode de partitionnement varie d'une machne à l'autre, en fonction de son usage.''' et, dixit MisterFreeze, « de la religion de l'administrateur »... ;-)

N'espérez pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins qu'il vous faudra bien définir (cahier des charges) avant toute chose.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations, d'utilisateurs, de machnes, de services, etc...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous êtes le seul à savoir ce que vous attendez de votre machine.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons ce que Linux s'attend à trouver dans l'arborescence standard des répertoires ('''F'''ilesystem '''H'''ierarchy '''S'''tandard) :

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;15%&quot;| Répertoire
! Contenu
|-{{ligne grise}}
| /
| La racine (partition root), qui contient tous les autres répertoires
|-{{ligne grise}}
| /bin
| '''bin'''ires&quot; : Commandes utilisateur (ls, cat, cd, cp...)
|-{{ligne grise}}
| /boot
| Fichiers indispensables au démarrage du système
|-{{ligne grise}}
| /dev
| '''dev'''ices : (pseudo-système de fichiers). Répertoire dans lequel &quot;mknod&quot; va créer les noeuds (fichier de périphérique) qui vont permettre l'accès aux périphériques (devices) disques, partitions, consoles, etc...
|-{{ligne grise}}
| /etc
| ('''E'''ditable '''T'''ext '''C'''onfiguration : Fichiers de configuration.
|-{{ligne grise}}
| /home
| Répertoires personnels des utilisateurs
|-{{ligne grise}}
| /lib
| '''lib'''rary : Bibliothèques partagées, modules noyaux, pilotes de périphériques et firmwares
|-{{ligne grise}}
| /media
| Points de montage pour les supports amovibles montés automatiquement
|-{{ligne grise}}
| /mnt
| '''m'''ou'''nt''' : Point de montage pour les montages temporaires manuels
|-{{ligne grise}}
| /proc
| '''proc'''esses : (pseudo-système de fichiers) processus en cours (noyaux de versions supérieures à 2.4)
|-{{ligne grise}}
| /root
| Répertoire personnel de l'utilisateur root
|-{{ligne grise}}
| /sbin
| '''s'''ystem '''bin'''ary : Commandes pour l'administration du système (ifconfig, mount, fdisk...)
|-{{ligne grise}}
| /sys
| '''sys'''tem : Répertoire virtuel pour les informations système (noyaux 2.6)
|-{{ligne grise}}
| /tmp
| '''t'''e'''mp'''orary : Fichiers temporaires
|-{{ligne grise}}
| /usr
| '''us'''e'''r''' : Hiérarchie secondaire
|-{{ligne grise}}
| /var
| '''var'''iables
|-{{ligne grise}}
| /srv
| '''s'''e'''rv'''ices : Données pour les services fournis par le système
|-{{ligne grise}}
|}

Plus de détails dans [[Man_hier|$ man hier]]

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessiter plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives)
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou logique.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4.2G de swap pour pouvoir bénéficier de l'hibernation.

== Primaires, étendue, logiques ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions '''primaires''' et une partition '''étendue''' qui est un conteneur de partitions '''logiques'''.

Pour un disque '''SCSI''', Linux limite le nombre de partitions logiques à 12 (ce qui fait quand même un total de 15 partitions utilisables). &lt;br /&gt;
Pour un disque '''IDE''', 60 partitions logiques peuvent être crées dans la partition étendue (donc 63 partitions utilisables).

Une partition logique contenant un pointeur vers le début de la partition logique suivante (chaînage), le nombre de partitions logiques pourrait donc être '''infini'''. &lt;br /&gt;
Mais, pour des raisons de nommages de périphériques (un octet pour &quot;major&quot;, &quot;minor&quot;), ce nombre maximal a dû être limité.

La limitation au nombre de 4 partitions primaires (ou 3 primaires + 1 étendue) est due au format de la table de partition contenue dans le '''M'''aster '''B'''oot '''R'''ecord (MBR), premier secteur (512 octets) du disque. &lt;br /&gt;
Cette limitation saute avec le nouveau format GPT ('''G'''UID '''P'''artition '''T'''able) utilisé notamment sur les machines avec firmware EFI ('''E'''xtensible '''F'''irmware '''I'''nterface) en surcouche du BIOS.

Voir : &lt;br /&gt;
http://www.tldp.org/HOWTO/Partition/partition-types.html#logical &lt;br /&gt;
http://www.tldp.org/HOWTO/Partition/devices.html

== Le système de fichier ==

Le système de fichier

Un système de fichiers (file system ou filesystem en anglais) ou système de gestion de fichiers (SGF) est une façon de stocker les informations et de les organiser dans des fichiers sur les supports de stockage.

Le système de fichiers proposé par défaut par l'installeur de Debian est '''Ext4''' (Extented FS version 4).

Les Ext? sont des systèmes de fichiers bâtis sur la même structure mais avec des fonctionnalités rajoutées (journalisation pour ext3) et des algorithmes (pré-allocation de blocs &quot;extent&quot; pour ext4) différents suivant les versions.

Ext3 (sorti en 1999) est une évolution de '''Ext2''', le précédent système de fichiers utilisé par défaut par Debian depuis 1993.

Ext4 alloue les blocs libres juste à côté des autres blocs utilisés par le fichier, ce qui a pour effet de minimiser l'espace physique entre les blocs (limitant la fragmentation).

'''Ext4''' (sorti en 2006) est le successeur du système de fichiers ext3, principalement destiné aux systèmes basés sur GNU/Linux. Il est disponible à l'installation depuis Squeeze.

Il garde une compatibilité avec son prédécesseur et est considéré par ses propres concepteurs comme une étape intermédiaire devant mener à un vrai système de fichiers de nouvelle génération tel que [[Btrfs|Btrfs]]. Toutefois, Ext4 est une étape utile et non une simple solution temporaire.

Outre le fait qu'il puisse gérer les volumes d'une taille allant jusqu'à '''1 Eio''' (un exbioctet = 2⁶⁰ octets), la fonctionnalité majeure de ext4 est l'allocation par '''extent''' qui permettent la pré-allocation d'une zone contigüe pour un fichier, pour minimiser la fragmentation. L'option extent est active par défaut depuis le noyau Linux 2.6.23 ; avant cela, elle devait être explicitement indiquée lors du montage de la partition.

Ext2/3/4 ont un algorithme d'allocation de blocs cherchant à éviter la fragmentation, algorithme perfectionné en permanence. C'est pour cela que les outils de défragmentation n'existent pas pour ces systèmes de fichiers. La simple utilisation régulière suffit à défragmenter le système.

Les partitions de type Ext? ont besoin d'une vérification périodique de l'intégrité du système de fichier, et cela peut prendre au démarrage un temps non négligeable lorsque la taille de la partition est importante. Cette vérification est conseillée et effectuée par défaut de manière régulière (modifiée par tune2fs). Grâce à la journalisation, les arrêts sauvages (démontage de la partition non fait proprement par le système) de disque sont moins gênants avec Ext3 et Ext4 qui ne feront pas forcément une vérification de l'intégrité du système au démarrage suivant.

Il peut être toutefois judicieux, sur un serveur de choisir Ext2 pour certaines partitions (/var/log et /tmp par exemple). En effet Ext2 permet de récupérer des fichiers (ici les logs et les fichiers temporaires) facilement, pas ses successeurs.

D'autres systèmes de fichiers peuvent être utilisés sur certaines partitions. '''xfs''' par exemple a de bonnes performances avec de nombreux petits fichiers.

Il est impossible de transformer une partition existante d'un système de fichiers à un autre (sauf parfois pour les ext? qui ont une structure commune), le choix du système de fichiers est donc définitif.

Le système de fichiers lisible par *tous* les OS même les plus anciens est FAT32 mais il est très primaire, interdit les gros fichiers et ne permet pas (ou difficilement) d'installer un linux.

Vous le voyez, tout comme le nombre de partitions et la taille des partitions, le choix du système de fichier n'est pas forcément une chose simple. Soyez prudents et faites confiance au programme d'installation Debian...

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)

! Nom de la partition
|-

| / 20 GB (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}

| SWAP 1 fois et demi la Ram
|- {{ligne grise}}

| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GB :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)

! Nom de la partition
|-

| / 3 GB
|- {{ligne grise}}

| SWAP 5 GB
|- {{ligne grise}}

| /tmp 5 GB
|- {{ligne grise}}

| /usr 15 GB
|- {{ligne grise}}

| /var 5 GB
|- {{ligne grise}}

| /home 317 GB
|}


Pour un serveur, avec 2 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 100 GB :

(Serveur de mail, quelques bases SQL, Serveur Web, un home limité, pour quelques utilisateurs sftp)

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur

! Nom de la partition
|-

| / 350 MB
|- {{ligne grise}}

| /boot 50 MB
|- {{ligne grise}}

| /usr 10 GB
|- {{ligne grise}}

| /var 70 GB
|- {{ligne grise}}

| SWAP 4 GB
|- {{ligne grise}}

| /tmp 10 GB
|- {{ligne grise}}

| /home 5,6 GB
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>pz41ssq5mr0008epc3o3h78mz3r9beq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5897</id>
      <parentid>5524</parentid>
      <timestamp>2014-11-01T06:35:16Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* L'organisation des répertoires */</comment>
      <text xml:space="preserve" bytes="21603">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|Le partitionnement}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;


La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===

&lt;br&gt;Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.jpeg|left]]&lt;br&gt;&lt;br&gt;&lt;br&gt;

Un disque dur est une mémoire de masse utilisée principalement dans les ordinateurs. C'est sur celui-ci que sera stocké l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.&lt;br&gt;&lt;br&gt;

Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à la carte mère). Les plus courantes actuellement sont:&lt;br&gt;&lt;br&gt;

- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg|80px|right]]&lt;br&gt;&lt;br&gt;

- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg|80px|right]]

- Serial ATA ou SATA (Serial Advanced Technology Attachment) [[Fichier:SATA Data Cable.jpg|80px|right]]&lt;br&gt;&lt;br&gt;

&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;

=== Les partitions ===

En micro-informatique, une partition permet de définir un partie de l'espace disponible d'un disque dur.

Les informations sur les 4 premières partitions d'un disque sont inscrites sur le disque lui-même dans une zone qu'on appelle table des partitions. &lt;br /&gt;
La table des partitions principale est inscrite dans le premier secteur du disque, secteur appelé le  MBR ('''M'''aster '''B'''oot '''R'''ecord ou MBR), puisqu'il contient aussi le programme d'amorçage.

Voici un exemple de partitionnement:

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux

Une partition primaire : sda1.

Une partition étendue : sda2 qui est un conteneur de partitions logiques.

Cinq partitions logiques : sda5 à sda9, définies dans l'espace de la partition étendue sda2.

=== Généralités ===

'''Pourquoi partitionner ?'''

Vous pourriez envisager de n'avoir qu'une seule partition contenant tout votre système...
La plupart d'entre nous choisissent de créer plus de partitions que le minimum dont Debian a besoin pour fonctionner. Pourquoi ?

'''Principalement pour des raison de sécurité''': &lt;br /&gt;
Si une partition est corrompue, le reste du système peut être encore accessible. Il peut suffire simplement de restaurer une sauvegarde de la partition corrompue pour régler le problème.
Mais aussi pour séparer les partitions qui risqueraient d'être submergées de fichiers (Par exemple /var pour un serveur de mail qui serait attaqué par un envoi massif...),le reste du système serait alors toujours opérationnel.

Séparer les autres partitions de la racine &quot;/&quot; permet, en cas de corruption d'une autre partition, de toujours pouvoir amorcer Linux pour réparer le système...&lt;br /&gt;
Vous voulez en effet pouvoir être en mesure de démarrer en &quot;Single user mode&quot; pour restaurer votre station ou serveur... Ce qui exige une racine «intacte».

La seconde difficulté (après le choix du nombre de partitions) sera de définir la taille de ces partitions...&lt;br /&gt;
Une taille trop petite rendra rapidement votre système inutilisable. Une taille trop grande gâche de l'espace disque (qui même s'il n'est pas cher peut être utile ailleurs...)

Les remarques qui suivent sont des préconisations Debian:

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, une simple partition / (plus celle d'échange '''swap''' ) est sans doute la solution la plus simple à mettre en œuvre. L'inconvénient serait que les données personnelles ne sont pas séparées du système. '''Il est donc donc généralement conseillé, en plus de la partition d'échange (swap) de créer une partition racine &quot;/&quot; ET une partition &quot;/home&quot;'''.

* Pour les systèmes utilisés par plusieurs personnes (donc avec autant de comptes personnels), ou les systèmes disposants de beaucoup d'espace disque, il vaut mieux placer les répertoires &quot;/usr&quot;, &quot;/var&quot;, &quot;/tmp&quot;, et &quot;/home&quot; chacun sur une partition distincte du ou des disques. /.

* Si vous projetez d'utiliser votre machine comme serveur de mail, prévoyez une partition &quot;/var&quot; en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre &quot;/var/mail&quot; sur une partition distincte.

* Si vous mettez sur pied un serveur dont avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes Linux, il est généralement intéressant d'avoir une grande partition distincte pour &quot;/home&quot;.

'''La méthode de partitionnement varie d'une machne à l'autre, en fonction de son usage.''' et, dixit MisterFreeze, « de la religion de l'administrateur »... ;-)

N'espérez pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins qu'il vous faudra bien définir (cahier des charges) avant toute chose.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations, d'utilisateurs, de machnes, de services, etc...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous êtes le seul à savoir ce que vous attendez de votre machine.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons ce que Linux s'attend à trouver dans l'arborescence standard des répertoires ('''F'''ilesystem '''H'''ierarchy '''S'''tandard) :&lt;br /&gt;
Plus de détails dans [[Man_hier|$ man hier]]

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;15%&quot;| Répertoire
! Contenu
|-{{ligne grise}}
| /
| Racine (root), à laquelle seront attachés (par la commande '''mount''') tous les autres sous-répertoires.
|-{{ligne grise}}
| /bin
| '''bin'''aires : Commandes nécessaires et accessibles en mode mono-utilisateur (ls, cat, cd, cp, …)
|-{{ligne grise}}
| /boot
| Fichiers indispensables au démarrage (boot) du système.
|-{{ligne grise}}
| /dev
| '''dev'''ices : (pseudo-système de fichiers) Dans lequel la commande '''mknod''' va créer les noeuds (fichier de périphérique) qui vont permettre l'accès aux périphériques (devices) disques, partitions, consoles, etc.
|-{{ligne grise}}
| /etc
| '''E'''ditable '''T'''ext '''C'''onfiguration : Fichiers de configuration.
|-{{ligne grise}}
| /home
| Répertoire dans lequel seront créés les répertoires personnels des utilisateurs.
|-{{ligne grise}}
| /lib
| '''lib'''rary : Répertoire des fichiers de type bibliothèque partagée, modules noyaux, pilotes de périphériques et firmwares.
|-{{ligne grise}}
| /media
| Répertoire dans lequel seront automatiquement créés les points de montage pour les systèmes de fichiers des supports amovibles.
|-{{ligne grise}}
| /mnt
| '''m'''ou'''nt''' : Répertoire dans lequel pourront être créés des sous-répertoires qui serviront de point de montage pour des systèmes de fichiers temporaires.
|-{{ligne grise}}
| /proc
| '''proc'''esses : (pseudo-système de fichiers) fichiers correspondants aux processus en cours (noyaux de versions supérieures à 2.4)
|-{{ligne grise}}
| /root
| Répertoire personnel de l'utilisateur root
|-{{ligne grise}}
| /sbin
| '''s'''ystem '''bin'''ary : Commandes pour l'administration du système (ifconfig, mount, fdisk, …)
|-{{ligne grise}}
| /sys
| '''sys'''tem : (pseudo-système de fichiers) utilisé pour les informations système (noyaux 2.6).
|-{{ligne grise}}
| /tmp
| '''t'''e'''mp'''orary : Fichiers temporaires
|-{{ligne grise}}
| /usr
| '''U'''NIX '''S'''ystem '''R'''esources : Ce répertoire est généralement monté depuis une partition séparée. Il ne devrait contenir que des données partageables, en lecture seule, afin d'être monté par plusieurs machines utilisant Linux.
|-{{ligne grise}}
| /var
| '''var'''iables : fichiers '''log''', mails, etc.
|-{{ligne grise}}
| /srv
| '''s'''e'''rv'''ices : Données pour les services fournis par le système.
|-{{ligne grise}}
|}

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessiter plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives)
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou logique.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4.2G de swap pour pouvoir bénéficier de l'hibernation.

== Primaires, étendue, logiques ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions '''primaires''' et une partition '''étendue''' qui est un conteneur de partitions '''logiques'''.

Pour un disque '''SCSI''', Linux limite le nombre de partitions logiques à 12 (ce qui fait quand même un total de 15 partitions utilisables). &lt;br /&gt;
Pour un disque '''IDE''', 60 partitions logiques peuvent être crées dans la partition étendue (donc 63 partitions utilisables).

Une partition logique contenant un pointeur vers le début de la partition logique suivante (chaînage), le nombre de partitions logiques pourrait donc être '''infini'''. &lt;br /&gt;
Mais, pour des raisons de nommages de périphériques (un octet pour &quot;major&quot;, &quot;minor&quot;), ce nombre maximal a dû être limité.

La limitation au nombre de 4 partitions primaires (ou 3 primaires + 1 étendue) est due au format de la table de partition contenue dans le '''M'''aster '''B'''oot '''R'''ecord (MBR), premier secteur (512 octets) du disque. &lt;br /&gt;
Cette limitation saute avec le nouveau format GPT ('''G'''UID '''P'''artition '''T'''able) utilisé notamment sur les machines avec firmware EFI ('''E'''xtensible '''F'''irmware '''I'''nterface) en surcouche du BIOS.

Voir : &lt;br /&gt;
http://www.tldp.org/HOWTO/Partition/partition-types.html#logical &lt;br /&gt;
http://www.tldp.org/HOWTO/Partition/devices.html

== Le système de fichier ==

Le système de fichier

Un système de fichiers (file system ou filesystem en anglais) ou système de gestion de fichiers (SGF) est une façon de stocker les informations et de les organiser dans des fichiers sur les supports de stockage.

Le système de fichiers proposé par défaut par l'installeur de Debian est '''Ext4''' (Extented FS version 4).

Les Ext? sont des systèmes de fichiers bâtis sur la même structure mais avec des fonctionnalités rajoutées (journalisation pour ext3) et des algorithmes (pré-allocation de blocs &quot;extent&quot; pour ext4) différents suivant les versions.

Ext3 (sorti en 1999) est une évolution de '''Ext2''', le précédent système de fichiers utilisé par défaut par Debian depuis 1993.

Ext4 alloue les blocs libres juste à côté des autres blocs utilisés par le fichier, ce qui a pour effet de minimiser l'espace physique entre les blocs (limitant la fragmentation).

'''Ext4''' (sorti en 2006) est le successeur du système de fichiers ext3, principalement destiné aux systèmes basés sur GNU/Linux. Il est disponible à l'installation depuis Squeeze.

Il garde une compatibilité avec son prédécesseur et est considéré par ses propres concepteurs comme une étape intermédiaire devant mener à un vrai système de fichiers de nouvelle génération tel que [[Btrfs|Btrfs]]. Toutefois, Ext4 est une étape utile et non une simple solution temporaire.

Outre le fait qu'il puisse gérer les volumes d'une taille allant jusqu'à '''1 Eio''' (un exbioctet = 2⁶⁰ octets), la fonctionnalité majeure de ext4 est l'allocation par '''extent''' qui permettent la pré-allocation d'une zone contigüe pour un fichier, pour minimiser la fragmentation. L'option extent est active par défaut depuis le noyau Linux 2.6.23 ; avant cela, elle devait être explicitement indiquée lors du montage de la partition.

Ext2/3/4 ont un algorithme d'allocation de blocs cherchant à éviter la fragmentation, algorithme perfectionné en permanence. C'est pour cela que les outils de défragmentation n'existent pas pour ces systèmes de fichiers. La simple utilisation régulière suffit à défragmenter le système.

Les partitions de type Ext? ont besoin d'une vérification périodique de l'intégrité du système de fichier, et cela peut prendre au démarrage un temps non négligeable lorsque la taille de la partition est importante. Cette vérification est conseillée et effectuée par défaut de manière régulière (modifiée par tune2fs). Grâce à la journalisation, les arrêts sauvages (démontage de la partition non fait proprement par le système) de disque sont moins gênants avec Ext3 et Ext4 qui ne feront pas forcément une vérification de l'intégrité du système au démarrage suivant.

Il peut être toutefois judicieux, sur un serveur de choisir Ext2 pour certaines partitions (/var/log et /tmp par exemple). En effet Ext2 permet de récupérer des fichiers (ici les logs et les fichiers temporaires) facilement, pas ses successeurs.

D'autres systèmes de fichiers peuvent être utilisés sur certaines partitions. '''xfs''' par exemple a de bonnes performances avec de nombreux petits fichiers.

Il est impossible de transformer une partition existante d'un système de fichiers à un autre (sauf parfois pour les ext? qui ont une structure commune), le choix du système de fichiers est donc définitif.

Le système de fichiers lisible par *tous* les OS même les plus anciens est FAT32 mais il est très primaire, interdit les gros fichiers et ne permet pas (ou difficilement) d'installer un linux.

Vous le voyez, tout comme le nombre de partitions et la taille des partitions, le choix du système de fichier n'est pas forcément une chose simple. Soyez prudents et faites confiance au programme d'installation Debian...

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)

! Nom de la partition
|-

| / 20 GB (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}

| SWAP 1 fois et demi la Ram
|- {{ligne grise}}

| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GB :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)

! Nom de la partition
|-

| / 3 GB
|- {{ligne grise}}

| SWAP 5 GB
|- {{ligne grise}}

| /tmp 5 GB
|- {{ligne grise}}

| /usr 15 GB
|- {{ligne grise}}

| /var 5 GB
|- {{ligne grise}}

| /home 317 GB
|}


Pour un serveur, avec 2 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 100 GB :

(Serveur de mail, quelques bases SQL, Serveur Web, un home limité, pour quelques utilisateurs sftp)

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur

! Nom de la partition
|-

| / 350 MB
|- {{ligne grise}}

| /boot 50 MB
|- {{ligne grise}}

| /usr 10 GB
|- {{ligne grise}}

| /var 70 GB
|- {{ligne grise}}

| SWAP 4 GB
|- {{ligne grise}}

| /tmp 10 GB
|- {{ligne grise}}

| /home 5,6 GB
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>1485iyprfqan99ok925dewf6woonnuh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5898</id>
      <parentid>5897</parentid>
      <timestamp>2014-11-02T19:44:19Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>Suppression du bandeau &quot;ébauche&quot;, cet article commence a être bien complet</comment>
      <text xml:space="preserve" bytes="21307">La question rituelle, et inévitable, lorsqu'on installe Debian, c'est comment organiser mes partitions...

== Généralités ==

=== Le Disque dur ===

&lt;br&gt;Il faut bien commencer par ça...
[[Fichier:Hard drive-fr.jpeg|left]]&lt;br&gt;&lt;br&gt;&lt;br&gt;

Un disque dur est une mémoire de masse utilisée principalement dans les ordinateurs. C'est sur celui-ci que sera stocké l'ensemble des fichiers de votre ordinateur.
Pièce maîtresse, le disque dur mérite toute votre attention.&lt;br&gt;&lt;br&gt;

Les disque durs peuvent disposer de différentes interfaces (qui permettent de connecter le disque dur à la carte mère). Les plus courantes actuellement sont:&lt;br&gt;&lt;br&gt;

- IDE (Integrated Drive Electronics) ou PATA (Parallel Advanced Technology Attachment)[[Fichier:Ata 20070127 003.jpeg|80px|right]]&lt;br&gt;&lt;br&gt;

- SCSI (Small Computer System Interface)[[Fichier:Nappescsi21.jpeg|80px|right]]

- Serial ATA ou SATA (Serial Advanced Technology Attachment) [[Fichier:SATA Data Cable.jpg|80px|right]]&lt;br&gt;&lt;br&gt;

&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;

=== Les partitions ===

En micro-informatique, une partition permet de définir un partie de l'espace disponible d'un disque dur.

Les informations sur les 4 premières partitions d'un disque sont inscrites sur le disque lui-même dans une zone qu'on appelle table des partitions. &lt;br /&gt;
La table des partitions principale est inscrite dans le premier secteur du disque, secteur appelé le  MBR ('''M'''aster '''B'''oot '''R'''ecord ou MBR), puisqu'il contient aussi le programme d'amorçage.

Voici un exemple de partitionnement:

 # fdisk -l
 
 Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
 255 heads, 63 sectors/track, 243201 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0002bdf9
 
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1        6374    51199123+  83  Linux
 /dev/sda2            6375      243201  1902312877+   5  Extended
 /dev/sda5            6375       12748    51199123+  83  Linux
 /dev/sda6           12749       19122    51199123+  83  Linux
 /dev/sda7           19123       20142     8193118+  82  Linux swap / Solaris
 /dev/sda8           20143      115754   768003358+  83  Linux
 /dev/sda9          115755      243201  1023716352   83  Linux

Une partition primaire : sda1.

Une partition étendue : sda2 qui est un conteneur de partitions logiques.

Cinq partitions logiques : sda5 à sda9, définies dans l'espace de la partition étendue sda2.

=== Généralités ===

'''Pourquoi partitionner ?'''

Vous pourriez envisager de n'avoir qu'une seule partition contenant tout votre système...
La plupart d'entre nous choisissent de créer plus de partitions que le minimum dont Debian a besoin pour fonctionner. Pourquoi ?

'''Principalement pour des raison de sécurité''': &lt;br /&gt;
Si une partition est corrompue, le reste du système peut être encore accessible. Il peut suffire simplement de restaurer une sauvegarde de la partition corrompue pour régler le problème.
Mais aussi pour séparer les partitions qui risqueraient d'être submergées de fichiers (Par exemple /var pour un serveur de mail qui serait attaqué par un envoi massif...),le reste du système serait alors toujours opérationnel.

Séparer les autres partitions de la racine &quot;/&quot; permet, en cas de corruption d'une autre partition, de toujours pouvoir amorcer Linux pour réparer le système...&lt;br /&gt;
Vous voulez en effet pouvoir être en mesure de démarrer en &quot;Single user mode&quot; pour restaurer votre station ou serveur... Ce qui exige une racine «intacte».

La seconde difficulté (après le choix du nombre de partitions) sera de définir la taille de ces partitions...&lt;br /&gt;
Une taille trop petite rendra rapidement votre système inutilisable. Une taille trop grande gâche de l'espace disque (qui même s'il n'est pas cher peut être utile ailleurs...)

Les remarques qui suivent sont des préconisations Debian:

* Pour les nouveaux utilisateurs, les machines Debian personnelles ou familiales, et autres systèmes mono-utilisateur, une simple partition / (plus celle d'échange '''swap''' ) est sans doute la solution la plus simple à mettre en œuvre. L'inconvénient serait que les données personnelles ne sont pas séparées du système. '''Il est donc donc généralement conseillé, en plus de la partition d'échange (swap) de créer une partition racine &quot;/&quot; ET une partition &quot;/home&quot;'''.

* Pour les systèmes utilisés par plusieurs personnes (donc avec autant de comptes personnels), ou les systèmes disposants de beaucoup d'espace disque, il vaut mieux placer les répertoires &quot;/usr&quot;, &quot;/var&quot;, &quot;/tmp&quot;, et &quot;/home&quot; chacun sur une partition distincte du ou des disques. /.

* Si vous projetez d'utiliser votre machine comme serveur de mail, prévoyez une partition &quot;/var&quot; en conséquence (à moins que vous ne stockiez les courriers dans un autre répertoire - vous pourriez par exemple avoir besoin de mettre &quot;/var/mail&quot; sur une partition distincte.

* Si vous mettez sur pied un serveur dont avec beaucoup d'utilisateurs ou si vous avez plusieurs systèmes Linux, il est généralement intéressant d'avoir une grande partition distincte pour &quot;/home&quot;.

'''La méthode de partitionnement varie d'une machne à l'autre, en fonction de son usage.''' et, dixit MisterFreeze, « de la religion de l'administrateur »... ;-)

N'espérez pas obtenir une aide claire et nette sur le partitionnement, vous êtes seul face à ce choix, qui doit se faire en fonction de votre matériel et de vos besoins qu'il vous faudra bien définir (cahier des charges) avant toute chose.

Il n'y a malheureusement pas de recette miracle... Il existe autant de façon de choisir son partitionnement que d'utilisations, d'utilisateurs, de machnes, de services, etc...

Définissez au préalable clairement votre cahier des charges, l'utilisation que vous ferez de votre système, vous êtes le seul à savoir ce que vous attendez de votre machine.

== Définir son partitionnement ==

=== L'organisation des répertoires ===

Tout d'abord voyons ce que Linux s'attend à trouver dans l'arborescence standard des répertoires ('''F'''ilesystem '''H'''ierarchy '''S'''tandard) :&lt;br /&gt;
Plus de détails dans [[Man_hier|$ man hier]]

{| class=&quot;wikitable&quot; width=&quot;50%&quot;
! width=&quot;15%&quot;| Répertoire
! Contenu
|-{{ligne grise}}
| /
| Racine (root), à laquelle seront attachés (par la commande '''mount''') tous les autres sous-répertoires.
|-{{ligne grise}}
| /bin
| '''bin'''aires : Commandes nécessaires et accessibles en mode mono-utilisateur (ls, cat, cd, cp, …)
|-{{ligne grise}}
| /boot
| Fichiers indispensables au démarrage (boot) du système.
|-{{ligne grise}}
| /dev
| '''dev'''ices : (pseudo-système de fichiers) Dans lequel la commande '''mknod''' va créer les noeuds (fichier de périphérique) qui vont permettre l'accès aux périphériques (devices) disques, partitions, consoles, etc.
|-{{ligne grise}}
| /etc
| '''E'''ditable '''T'''ext '''C'''onfiguration : Fichiers de configuration.
|-{{ligne grise}}
| /home
| Répertoire dans lequel seront créés les répertoires personnels des utilisateurs.
|-{{ligne grise}}
| /lib
| '''lib'''rary : Répertoire des fichiers de type bibliothèque partagée, modules noyaux, pilotes de périphériques et firmwares.
|-{{ligne grise}}
| /media
| Répertoire dans lequel seront automatiquement créés les points de montage pour les systèmes de fichiers des supports amovibles.
|-{{ligne grise}}
| /mnt
| '''m'''ou'''nt''' : Répertoire dans lequel pourront être créés des sous-répertoires qui serviront de point de montage pour des systèmes de fichiers temporaires.
|-{{ligne grise}}
| /proc
| '''proc'''esses : (pseudo-système de fichiers) fichiers correspondants aux processus en cours (noyaux de versions supérieures à 2.4)
|-{{ligne grise}}
| /root
| Répertoire personnel de l'utilisateur root
|-{{ligne grise}}
| /sbin
| '''s'''ystem '''bin'''ary : Commandes pour l'administration du système (ifconfig, mount, fdisk, …)
|-{{ligne grise}}
| /sys
| '''sys'''tem : (pseudo-système de fichiers) utilisé pour les informations système (noyaux 2.6).
|-{{ligne grise}}
| /tmp
| '''t'''e'''mp'''orary : Fichiers temporaires
|-{{ligne grise}}
| /usr
| '''U'''NIX '''S'''ystem '''R'''esources : Ce répertoire est généralement monté depuis une partition séparée. Il ne devrait contenir que des données partageables, en lecture seule, afin d'être monté par plusieurs machines utilisant Linux.
|-{{ligne grise}}
| /var
| '''var'''iables : fichiers '''log''', mails, etc.
|-{{ligne grise}}
| /srv
| '''s'''e'''rv'''ices : Données pour les services fournis par le système.
|-{{ligne grise}}
|}

Ce qu'il faut savoir :

=== La partition racine ===

* La partition racine / doit toujours IMPERATIVEMENT contenir les répertoires : /etc, /bin, /sbin, /lib et /dev, faute de quoi vous seriez dans l'impossibilité de démarrer le système.

Debian préconise '''150 à 250 Mo;'''

=== La partition usr ===

* Le répertoire /usr contient (entre autre) les programmes des utilisateurs (/usr/bin), les bibliothèques (/usr/lib), la documentation (/usr/share/doc).

Vous devriez disposer d'au moins 500 Mo d'espace disque. Si vous voulez installer plus de paquets, vous devriez augmenter l'espace disque attribué à ce répertoire.

Pour installer un poste de travail ou un serveur « généreux », '''4 à 6 Go sont nécessaires d'après Debian;'''

=== La partition var ===

* Le répertoire /var contient toutes les données variables (les messages électroniques, les sites web, le cache du système des paquets, etc.).  La place nécessaire dépend de l'usage que vous faites de votre ordinateur. La plupart du temps, la dimension de cette partiton sera dictée par les outils de gestion des paquets qui prennent beaucoup de place.

- Pour une installation complète compter au moins '''2 à 3 Go''', une utilisation en serveur peut nécessiter plusieurs dizaines de G.

- Pour une installation minimale vous pouvez passer avec '''50 à 100 Mo''' (juste de quoi contenir les paquets téléchargés)

- Vous pouvez commencer par une installation minimale, puis installer petit à petit les paquets, auquel cas, vous pouvez vous contenter de '''300 à 500 Mo'''
- C'est dans cette partition que sont mis
 * Les paquets Debian téléchargés (/var/cache/apt/archives)
 * La base apt (/var/lib/dpkg)
 * Les bases de données (sous /var/lib)
 * Les mails (/var/mail)
 * Certains fichiers temporaires (/var/tmp)
 * Les douilles UNIX de la plupart des processus (/var/run) ainsi que des fichiers de fonctionnement

=== La partition tmp ===

* Le répertoire /tmp : quand un programme crée des données temporaires, elles seront généralement placées dans /tmp. '''40 à 100 Mo''' peuvent suffir pour une utilisation standard.

Certaines applications, gestionnaires d'archives, outils pour créer des CD/DVD, logiciels multimedia, se servent de /tmp pour stocker provisoirement des images. Si vous comptez utiliser ces programmes, il faut en tenir compte et augmenter en conséquence /tmp. Pour certains cette partition va '''jusqu’à 10 Go''' et plus.

=== La partition home ===

* Le répertoire /home : chaque utilisateur mettra ses données dans un sous-répertoire de ce répertoire. La place nécessaire dépend du nombre d'utilisateurs sur le système, et du genre de fichiers qu'ils devront stocker. Généralement la plus grande place (ou l'espace restant) est réservée à cette partition.

Il est possible de supprimer la réservation de 5% pour root sur /home, cette partition faisant plusieurs centaines de G, cela représente souvent plusieurs Go perdus pour rien. Il faut alors préparer la partition avant l'installation avec la commande suivante :

 # tune2fs -m 0 /dev/sdxy

=== La partition swap ===

En ce qui concerne la taille de la partition d'échange (swap), les avis sont partagés...

Selon certain: SWAP taille = celle de la mémoire vive ( $ cat /proc/meminfo | grep MemTotal ), augmentée de 0,5 Gb ; partition primaire ou logique.

Il est habituel d'avoir au moins une SWAP environ égale à la quantité de mémoire vive :

 $ grep MemTotal /proc/meminfo

Bien sûr, il y a des exceptions à cette règle. Si vous essayez de résoudre simultanément 10 000 équations sur une machine avec 256 Mo de RAM, vous pourriez avoir besoin d'un gigaoctet (ou plus) d'échange.

Certains, disposant de plus de 6/8 Go de RAM ne créent pas de Swap. Celle-ci serait, pour une utilisation &quot;classique&quot;, inutile.

Sur les architectures 32 bits (i386, m68k, SPARC 32 bits et PowerPC), la taille maximale d'une partition d'échange est de 2 Go. Cela devrait suffire pour presque tous les systèmes. De toute façon, si vos besoins en espace d'échange sont aussi importants, vous devriez probablement essayer de disperser les partitions d'échange sur des disques différents (appelés aussi « spindles ») et, si possible, sur des canaux IDE ou SCSI différents. Le noyau équilibrera l'utilisation de l'espace d'échange entre les différentes partitions, afin d'obtenir de meilleures performances. Il est également possible de créer des fichiers SWAP à la demande ou pour corriger un swap insuffisant à l'origine. L'hibernation ne peut se faire que sur une seule partition swap.

Avec une (vieille) machine possédant 32 Mo de RAM et un disque IDE de 1.7 Go sur /dev/hda, on pourrait créer une partition de 500 Mo pour un système sur /dev/hda1, une partition d'échange de 32 Mo sur /dev/hda3 et une partition Linux d'environ 1,2 Go sur /dev/hda2. Pour un portable récent avec un disque dur de 320G et 4G de RAM, prévoir 4.2G de swap pour pouvoir bénéficier de l'hibernation.

== Primaires, étendue, logiques ==

Vous êtes limités à 4 partitions primaires, ou 3 partitions '''primaires''' et une partition '''étendue''' qui est un conteneur de partitions '''logiques'''.

Pour un disque '''SCSI''', Linux limite le nombre de partitions logiques à 12 (ce qui fait quand même un total de 15 partitions utilisables). &lt;br /&gt;
Pour un disque '''IDE''', 60 partitions logiques peuvent être crées dans la partition étendue (donc 63 partitions utilisables).

Une partition logique contenant un pointeur vers le début de la partition logique suivante (chaînage), le nombre de partitions logiques pourrait donc être '''infini'''. &lt;br /&gt;
Mais, pour des raisons de nommages de périphériques (un octet pour &quot;major&quot;, &quot;minor&quot;), ce nombre maximal a dû être limité.

La limitation au nombre de 4 partitions primaires (ou 3 primaires + 1 étendue) est due au format de la table de partition contenue dans le '''M'''aster '''B'''oot '''R'''ecord (MBR), premier secteur (512 octets) du disque. &lt;br /&gt;
Cette limitation saute avec le nouveau format GPT ('''G'''UID '''P'''artition '''T'''able) utilisé notamment sur les machines avec firmware EFI ('''E'''xtensible '''F'''irmware '''I'''nterface) en surcouche du BIOS.

Voir : &lt;br /&gt;
http://www.tldp.org/HOWTO/Partition/partition-types.html#logical &lt;br /&gt;
http://www.tldp.org/HOWTO/Partition/devices.html

== Le système de fichier ==

Le système de fichier

Un système de fichiers (file system ou filesystem en anglais) ou système de gestion de fichiers (SGF) est une façon de stocker les informations et de les organiser dans des fichiers sur les supports de stockage.

Le système de fichiers proposé par défaut par l'installeur de Debian est '''Ext4''' (Extented FS version 4).

Les Ext? sont des systèmes de fichiers bâtis sur la même structure mais avec des fonctionnalités rajoutées (journalisation pour ext3) et des algorithmes (pré-allocation de blocs &quot;extent&quot; pour ext4) différents suivant les versions.

Ext3 (sorti en 1999) est une évolution de '''Ext2''', le précédent système de fichiers utilisé par défaut par Debian depuis 1993.

Ext4 alloue les blocs libres juste à côté des autres blocs utilisés par le fichier, ce qui a pour effet de minimiser l'espace physique entre les blocs (limitant la fragmentation).

'''Ext4''' (sorti en 2006) est le successeur du système de fichiers ext3, principalement destiné aux systèmes basés sur GNU/Linux. Il est disponible à l'installation depuis Squeeze.

Il garde une compatibilité avec son prédécesseur et est considéré par ses propres concepteurs comme une étape intermédiaire devant mener à un vrai système de fichiers de nouvelle génération tel que [[Btrfs|Btrfs]]. Toutefois, Ext4 est une étape utile et non une simple solution temporaire.

Outre le fait qu'il puisse gérer les volumes d'une taille allant jusqu'à '''1 Eio''' (un exbioctet = 2⁶⁰ octets), la fonctionnalité majeure de ext4 est l'allocation par '''extent''' qui permettent la pré-allocation d'une zone contigüe pour un fichier, pour minimiser la fragmentation. L'option extent est active par défaut depuis le noyau Linux 2.6.23 ; avant cela, elle devait être explicitement indiquée lors du montage de la partition.

Ext2/3/4 ont un algorithme d'allocation de blocs cherchant à éviter la fragmentation, algorithme perfectionné en permanence. C'est pour cela que les outils de défragmentation n'existent pas pour ces systèmes de fichiers. La simple utilisation régulière suffit à défragmenter le système.

Les partitions de type Ext? ont besoin d'une vérification périodique de l'intégrité du système de fichier, et cela peut prendre au démarrage un temps non négligeable lorsque la taille de la partition est importante. Cette vérification est conseillée et effectuée par défaut de manière régulière (modifiée par tune2fs). Grâce à la journalisation, les arrêts sauvages (démontage de la partition non fait proprement par le système) de disque sont moins gênants avec Ext3 et Ext4 qui ne feront pas forcément une vérification de l'intégrité du système au démarrage suivant.

Il peut être toutefois judicieux, sur un serveur de choisir Ext2 pour certaines partitions (/var/log et /tmp par exemple). En effet Ext2 permet de récupérer des fichiers (ici les logs et les fichiers temporaires) facilement, pas ses successeurs.

D'autres systèmes de fichiers peuvent être utilisés sur certaines partitions. '''xfs''' par exemple a de bonnes performances avec de nombreux petits fichiers.

Il est impossible de transformer une partition existante d'un système de fichiers à un autre (sauf parfois pour les ext? qui ont une structure commune), le choix du système de fichiers est donc définitif.

Le système de fichiers lisible par *tous* les OS même les plus anciens est FAT32 mais il est très primaire, interdit les gros fichiers et ne permet pas (ou difficilement) d'installer un linux.

Vous le voyez, tout comme le nombre de partitions et la taille des partitions, le choix du système de fichier n'est pas forcément une chose simple. Soyez prudents et faites confiance au programme d'installation Debian...

== Exemples de partitionnements ==

Si vous choisissez le partitionnement assisté de l'installeur Debian, vous aurez trois choix:

* Tout dans une seule partition (''recommandé pour les débutants'')
* Partition /home séparée
* Partitions /home, /usr, /var et /tmp séparées

'''Même si vous êtes débutant, nous recommandons à l'unanimité de mettre /home dans une partition séparée'''.

En effet en cas de réinstallation &quot;forcée&quot; vos documents et réglages personnels ne seront pas perdus... Il suffira de réinstaller Debian SANS FORMATER votre partition /home.

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (simple)

! Nom de la partition
|-

| / 20 GB (Il est possible de descendre jusqu’à 5)
|- {{ligne grise}}

| SWAP 1 fois et demi la Ram
|- {{ligne grise}}

| Le reste en /home
|}


Pour une machine moderne, avec 4 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 350 GB :

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Station de travail (plus compliqué)

! Nom de la partition
|-

| / 3 GB
|- {{ligne grise}}

| SWAP 5 GB
|- {{ligne grise}}

| /tmp 5 GB
|- {{ligne grise}}

| /usr 15 GB
|- {{ligne grise}}

| /var 5 GB
|- {{ligne grise}}

| /home 317 GB
|}


Pour un serveur, avec 2 Gb de mémoire vive et sur laquelle le DD interne a une capacité de 100 GB :

(Serveur de mail, quelques bases SQL, Serveur Web, un home limité, pour quelques utilisateurs sftp)

{| class=&quot;wikitable centre&quot; width=&quot;50%&quot;
|+ Serveur

! Nom de la partition
|-

| / 350 MB
|- {{ligne grise}}

| /boot 50 MB
|- {{ligne grise}}

| /usr 10 GB
|- {{ligne grise}}

| /var 70 GB
|- {{ligne grise}}

| SWAP 4 GB
|- {{ligne grise}}

| /tmp 10 GB
|- {{ligne grise}}

| /home 5,6 GB
|}


[http://www.debian-fr.org/comment-partitionner-ses-diques-durs-t29476.html Discussion forum: comment partitionner ses diques durs]

[http://www.debian-fr.org/partitionnement-dd-pour-station-bureau-t29485.html Discussion forum: partitionnement dd pour station bureau]

[http://www.debian.org/releases/stable/i386/apc.html.fr Debian.org: Annexe C. Partitionnement pour Debian]

[http://fr.wikipedia.org/wiki/Partition_de_disque_dur Wikipedia: Partition de disque dur]

[http://fr.wikipedia.org/wiki/Disque_dur  Wikipedia: Disque dur]]

[[Utilisateur:Lol|Lol]] 27 décembre 2010 à 01:10 (CST)
[[Catégorie:Installation]]</text>
      <sha1>1bfkiqakyl020d19p4usiamu285h85y</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Les Modules</title>
    <ns>0</ns>
    <id>7</id>
    <revision>
      <id>17</id>
      <timestamp>2010-01-21T14:25:37Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <comment>Page créée avec « Sur la page [http://www.tldp.org/LDP/lkmpg/2.4/html/book1.htm de tldp.org qui explique le fonctionnement des modules] on peut lire  What exactly is a kernel module? Modules a… »</comment>
      <text xml:space="preserve" bytes="3974">Sur la page [http://www.tldp.org/LDP/lkmpg/2.4/html/book1.htm de tldp.org qui explique le fonctionnement des modules] on peut lire
 What exactly is a kernel module? Modules are pieces of code that can be loaded and unloaded into the kernel upon demand. 
 They extend the functionality of the kernel without the need to reboot the system. 
 For example, one type of module is the device driver, which allows the kernel to access hardware connected to the system.
 Without modules, we would have to build monolithic kernels and add new functionality directly into the kernel image.
 Besides having larger kernels, this has the disadvantage of requiring us to rebuild and reboot the kernel every time we want new functionality.

Pour les non anglicistes : un module de noyau est un bout de code exécutable que l'on branche en cas de besoin sur le noyau pour lui ajouter une fonctionnalité. Ces fonctionnalités concernent le plus souvent la gestion d'un composant matériel, mais on trouve aussi des fonctionnalités de cryptage, ou d'optimisation, par exemple.

Pourquoi :
Historiquement, les modules ont été introduits pour éviter de construire d'énormes noyaux contenant d'énormes parties de code inutilisé le plus souvent. Par ailleurs, une autre contrainte a guidé l'allègement de ce noyau, c'était de faire tenir l'ensemble des éléments minimaux pour démarrer dans une disquette 1.44 Mo. 
Du coup, les modules nécessaires au boot - et seulement ceux-là - sont regroupés dans un filesystem compressé (on appelle ça un initrd), qui est monté sur /initrd au moment du boot. C'est pour ça que le composant de décompression (cramfs sous debian) est un des seuls qui doive être forcément intégré au noyau, car il doit être disponible AVANT les autres modules critiques, afin de pouvoir décompresser depuis le noyau l'initrd.

Au delà de ces conditions initiales, le détachement de ces bouts de code du noyau a permis de faire une économie de ressources mêmoire. Seuls les modules effectivement utilisés par un périphérique restent chargés, les autres se déchargeant automatiquement quand ils ne trouvent aucun périphérique à gèrer. Par ailleurs, ces modules étant dans des pages mêmoire séparées peuvent donc être swappés, contrairement au noyau qui reste en permanence en mêmoire.
Finalement, la multiplication des périphèriques connectables à chaud a donné une justification supplémentaire à cette logique &quot;just in time&quot;.

Ou :
la configuration (= le .config) qui a servi à compiler le noyau est dans /boot/config-&lt;version&gt;
Les modules eux-mêmes sont dans /lib/modules/&lt;version&gt;

Comment :
Manipulation des modules :
 liste : lsmod
 insertion : modprobe &lt;nom de module ou chemin absolu du module&gt;
 Déchargement : rmmod &lt;nom de module&gt;

Pour info, si noyau &lt; 2.4 les modules sont des .o, aprés, ce sont des .ko, pour les différencier des .o traditionnels linkables...

Le fichier /lib/modules/&lt;version de noyau&gt;/modules.dep, génèré par la commande &quot;depmod -a&quot;, contient la liste des modules, et de comment les uns dépendent des autres. On peut l'ajuster manuellement, pour y déclarer des modules qui ne sont pas dans l'arborescence /lib/modules/&lt;version de noyau&gt;/, Mais attention, les modifications sont facilement écrasées par depmod.

Configuration :
Pour tous noyaux, /etc/modules contient la liste des modules que l'on veut charger automatiquement au boot.

Les modules acceptent parfois des arguments que l'on peut connatre avec 'modinfo &lt;nom module&gt; :
* pour les noyaux 2.4, on peut préciser ces éléments dans /etc/modutils. Le fichier modules.conf généré automatiquement par 'update-modules' (du paquet modutils), contient la concatenation du contenu de ce dernier répertoire.
* sous 2.6, /etc/modprobe.d et modprobe.conf, et le paquet module-init-tools jouent le même rôle respectif que les 3 précédents.

Ce document a été écrit par Mattotop sur forum.debian-fr.org

[[Category:Kernel]]</text>
      <sha1>huk397kikdq8pqwskm9ryhzg5d4tflr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>942</id>
      <parentid>17</parentid>
      <timestamp>2010-02-07T01:16:44Z</timestamp>
      <contributor>
        <username>Kna</username>
        <id>35</id>
      </contributor>
      <comment>Quelques mots sur module-assistant</comment>
      <text xml:space="preserve" bytes="5539">= Les modules =

Sur la page [http://www.tldp.org/LDP/lkmpg/2.4/html/book1.htm de tldp.org qui explique le fonctionnement des modules] on peut lire
 What exactly is a kernel module? Modules are pieces of code that can be loaded and unloaded into the kernel upon demand. 
 They extend the functionality of the kernel without the need to reboot the system. 
 For example, one type of module is the device driver, which allows the kernel to access hardware connected to the system.
 Without modules, we would have to build monolithic kernels and add new functionality directly into the kernel image.
 Besides having larger kernels, this has the disadvantage of requiring us to rebuild and reboot the kernel every time we want new functionality.

Pour les non anglicistes : un module de noyau est un bout de code exécutable que l'on branche en cas de besoin sur le noyau pour lui ajouter une fonctionnalité. Ces fonctionnalités concernent le plus souvent la gestion d'un composant matériel, mais on trouve aussi des fonctionnalités de cryptage, ou d'optimisation, par exemple.

Pourquoi :
Historiquement, les modules ont été introduits pour éviter de construire d'énormes noyaux contenant d'énormes parties de code inutilisé le plus souvent. Par ailleurs, une autre contrainte a guidé l'allègement de ce noyau, c'était de faire tenir l'ensemble des éléments minimaux pour démarrer dans une disquette 1.44 Mo. 
Du coup, les modules nécessaires au boot - et seulement ceux-là - sont regroupés dans un filesystem compressé (on appelle ça un initrd), qui est monté sur /initrd au moment du boot. C'est pour ça que le composant de décompression (cramfs sous debian) est un des seuls qui doive être forcément intégré au noyau, car il doit être disponible AVANT les autres modules critiques, afin de pouvoir décompresser depuis le noyau l'initrd.

Au delà de ces conditions initiales, le détachement de ces bouts de code du noyau a permis de faire une économie de ressources mêmoire. Seuls les modules effectivement utilisés par un périphérique restent chargés, les autres se déchargeant automatiquement quand ils ne trouvent aucun périphérique à gèrer. Par ailleurs, ces modules étant dans des pages mêmoire séparées peuvent donc être swappés, contrairement au noyau qui reste en permanence en mêmoire.
Finalement, la multiplication des périphèriques connectables à chaud a donné une justification supplémentaire à cette logique &quot;just in time&quot;.

Ou :
la configuration (= le .config) qui a servi à compiler le noyau est dans /boot/config-&lt;version&gt;
Les modules eux-mêmes sont dans /lib/modules/&lt;version&gt;

Comment :
Manipulation des modules :
 liste : lsmod
 insertion : modprobe &lt;nom de module ou chemin absolu du module&gt;
 Déchargement : rmmod &lt;nom de module&gt;

Pour info, si noyau &lt; 2.4 les modules sont des .o, aprés, ce sont des .ko, pour les différencier des .o traditionnels linkables...

Le fichier /lib/modules/&lt;version de noyau&gt;/modules.dep, génèré par la commande &quot;depmod -a&quot;, contient la liste des modules, et de comment les uns dépendent des autres. On peut l'ajuster manuellement, pour y déclarer des modules qui ne sont pas dans l'arborescence /lib/modules/&lt;version de noyau&gt;/, Mais attention, les modifications sont facilement écrasées par depmod.

Configuration :
Pour tous noyaux, /etc/modules contient la liste des modules que l'on veut charger automatiquement au boot.

Les modules acceptent parfois des arguments que l'on peut connatre avec 'modinfo &lt;nom module&gt; :
* pour les noyaux 2.4, on peut préciser ces éléments dans /etc/modutils. Le fichier modules.conf généré automatiquement par 'update-modules' (du paquet modutils), contient la concatenation du contenu de ce dernier répertoire.
* sous 2.6, /etc/modprobe.d et modprobe.conf, et le paquet module-init-tools jouent le même rôle respectif que les 3 précédents.

Ce document a été écrit par Mattotop sur forum.debian-fr.org

= Module-assistant =

module-assistant est un programme permettant de construire les modules non fournis avec le noyau (exotiques ou propriétaires). Par exemple, le module pour ndiswrapper, le pilote propriétaire pour les cartes nvidia ou des modules pour la virtualisation (kqemu, virtualbox).

Parfois, le module est fourni sous forme de paquet précompilé, généralement noté nom_du_pilote-module-version_du_noyau. Un module de la sorte est utilisable si vous avez un noyau de même version. Pour connaitre votre version du noyau, tapez :

 $ uname -r

Si la version correspond, il vous suffit d'installer le paquet en question. S'il n'existe pas de paquet pour votre version du noyau (ou s'il n'en existe pas du tout). Il vous faudra le compiler à partir des sources. La démarche est sensiblement la même pour tous les paquets.

On commence par installer les sources

 # aptitude install nom_du_pilote-sources

On s'assure d'avoir un fichier d'index à jour :

 # m-a update

On installe le nécessaire pour compiler :

 # m-a prepare

On nettoie les répertoires de construction des paquets :

 # m-a clean nom_du_module

On peut enfin construire le paquet :

 # m-a build nom_du_module

Un paquet est alors créé dans /usr/src, vous pouvez l'installer avec '''dpkg''' ou bien en lançant :
 
 # m-a install nom_du_module

'''Notes :''' 

* Vous pouvez construire et installer le paquet en une seule commande :

 # m-a a-i nom_du_module

* La liste des paquets disponibles pour la construction peut être obtenue par :

 # m-a list


[[Category:Kernel]]</text>
      <sha1>sj2q8gzqtfeiju6bya3x4tm2391nspr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2348</id>
      <parentid>942</parentid>
      <timestamp>2010-11-21T13:00:56Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="5547">= Les modules =

Sur la page [http://www.tldp.org/LDP/lkmpg/2.4/html/book1.htm de tldp.org qui explique le fonctionnement des modules] on peut lire
 What exactly is a kernel module? Modules are pieces of code that can be loaded and unloaded into the kernel upon demand. 
 They extend the functionality of the kernel without the need to reboot the system. 
 For example, one type of module is the device driver, which allows the kernel to access hardware connected to the system.
 Without modules, we would have to build monolithic kernels and add new functionality directly into the kernel image.
 Besides having larger kernels, this has the disadvantage of requiring us to rebuild and reboot the kernel every time we want new functionality.

Pour les non anglicistes : un module de noyau est un bout de code exécutable que l'on branche en cas de besoin sur le noyau pour lui ajouter une fonctionnalité. Ces fonctionnalités concernent le plus souvent la gestion d'un composant matériel, mais on trouve aussi des fonctionnalités de cryptage, ou d'optimisation, par exemple.

Pourquoi :
Historiquement, les modules ont été introduits pour éviter de construire d'énormes noyaux contenant d'énormes parties de code inutilisé le plus souvent. Par ailleurs, une autre contrainte a guidé l'allègement de ce noyau, c'était de faire tenir l'ensemble des éléments minimaux pour démarrer dans une disquette 1.44 Mo. 
Du coup, les modules nécessaires au boot - et seulement ceux-là - sont regroupés dans un filesystem compressé (on appelle ça un initrd), qui est monté sur /initrd au moment du boot. C'est pour ça que le composant de décompression (cramfs sous debian) est un des seuls qui doive être forcément intégré au noyau, car il doit être disponible AVANT les autres modules critiques, afin de pouvoir décompresser depuis le noyau l'initrd.

Au delà de ces conditions initiales, le détachement de ces bouts de code du noyau a permis de faire une économie de ressources mêmoire. Seuls les modules effectivement utilisés par un périphérique restent chargés, les autres se déchargeant automatiquement quand ils ne trouvent aucun périphérique à gèrer. Par ailleurs, ces modules étant dans des pages mêmoire séparées peuvent donc être swappés, contrairement au noyau qui reste en permanence en mêmoire.
Finalement, la multiplication des périphèriques connectables à chaud a donné une justification supplémentaire à cette logique &quot;just in time&quot;.

Ou :
la configuration (= le .config) qui a servi à compiler le noyau est dans /boot/config-&lt;version&gt;
Les modules eux-mêmes sont dans /lib/modules/&lt;version&gt;

Comment :
Manipulation des modules :
 liste : lsmod
 insertion : modprobe &lt;nom de module ou chemin absolu du module&gt;
 Déchargement : rmmod &lt;nom de module&gt;

Pour info, si noyau &lt; 2.4 les modules sont des .o, aprés, ce sont des .ko, pour les différencier des .o traditionnels linkables...

Le fichier /lib/modules/&lt;version de noyau&gt;/modules.dep, génèré par la commande &quot;depmod -a&quot;, contient la liste des modules, et de comment les uns dépendent des autres. On peut l'ajuster manuellement, pour y déclarer des modules qui ne sont pas dans l'arborescence /lib/modules/&lt;version de noyau&gt;/, Mais attention, les modifications sont facilement écrasées par depmod.

Configuration :
Pour tous noyaux, /etc/modules contient la liste des modules que l'on veut charger automatiquement au boot.

Les modules acceptent parfois des arguments que l'on peut connatre avec 'modinfo &lt;nom module&gt; :
* pour les noyaux 2.4, on peut préciser ces éléments dans /etc/modutils. Le fichier modules.conf généré automatiquement par 'update-modules' (du paquet modutils), contient la concatenation du contenu de ce dernier répertoire.
* sous 2.6, /etc/modprobe.d et modprobe.conf, et le paquet module-init-tools jouent le même rôle respectif que les 3 précédents.

Ce document a été écrit par Mattotop sur forum.debian-fr.org

= Module-assistant =

module-assistant est un programme permettant de construire les modules non fournis avec le noyau (exotiques ou propriétaires). Par exemple, le module pour ndiswrapper, le pilote propriétaire pour les cartes nvidia ou des modules pour la virtualisation (kqemu, virtualbox).

Parfois, le module est fourni sous forme de paquet précompilé, généralement noté nom_du_pilote-module-version_du_noyau. Un module de la sorte est utilisable si vous avez un noyau de même version. Pour connaitre votre version du noyau, tapez :

 $ uname -r

Si la version correspond, il vous suffit d'installer le paquet en question. S'il n'existe pas de paquet pour votre version du noyau (ou s'il n'en existe pas du tout). Il vous faudra le compiler à partir des sources. La démarche est sensiblement la même pour tous les paquets.

On commence par installer les sources

 # aptitude install nom_du_pilote-sources

On s'assure d'avoir un fichier d'index à jour :

 # m-a update

On installe le nécessaire pour compiler :

 # m-a prepare

On nettoie les répertoires de construction des paquets :

 # m-a clean nom_du_module

On peut enfin construire le paquet :

 # m-a build nom_du_module

Un paquet est alors créé dans /usr/src, vous pouvez l'installer avec '''dpkg''' ou bien en lançant :
 
 # m-a install nom_du_module

'''Notes :''' 

* Vous pouvez construire et installer le paquet en une seule commande :

 # m-a a-i nom_du_module

* La liste des paquets disponibles pour la construction peut être obtenue par :

 # m-a list


[[Category:Kernel (Noyau)]]</text>
      <sha1>erzpl221qe13vkwe7imk42ux39pd9xt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Les Trucs et astuces</title>
    <ns>0</ns>
    <id>1137</id>
    <revision>
      <id>4686</id>
      <timestamp>2012-10-30T11:07:48Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « &lt;u&gt;'''Trucs et astuces'''&lt;/u&gt;  {| width=&quot;100%&quot; | colspan=&quot;3&quot; |'''T&amp;A Divers''' |- | width=&quot;33%&quot; |•&amp;nbsp;[[UUID|Fixer le renommage des partitions avec l'UUID ]] | width=&quot;... »</comment>
      <text xml:space="preserve" bytes="1280">&lt;u&gt;'''Trucs et astuces'''&lt;/u&gt;

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''T&amp;A Divers'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[UUID|Fixer le renommage des partitions avec l'UUID ]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Virtualisation_:_Conversion_VDI_vers_Qcow|Virtualisation: Conversion VDI vers Qcow]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Accélérer_la_synchro_ntp_au_démarrage|Accélérer la synchronisation ntp au démarrage]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[X2x|Lier deux écrans X distants avec X2x]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt_%2B_Segmentation_faulty_tree|Apt: Segmentation faulty tree]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Voir_les_logs_en_direct|Voir les logs en direct]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Changer_le_mot_de_passe_mysql|Changer le mot de passe mysql]]
| width=&quot;33%&quot; |•&amp;nbsp; [[Partition-pleine|Au secours ma partition est pleine]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |T&amp;A Pour les portables
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Portables_Gestion_de_l'énergie|Gestion de l'énergie]]
| width=&quot;33%&quot; | •&amp;nbsp;[[Remontage_automatique_des_disques_durs_externes_après_coupure_de_courant|Remontage automatique des disques durs externes]]
|
|}

----

{{Modèle:Accueil}}

[[Catégorie:Trucs_et_Astuces_divers]]
[[Catégorie:Truc_et_Astuces_pour_les_portables]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>6xcb922n8hvzrs4yww2x7cmp82cqrh2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4711</id>
      <parentid>4686</parentid>
      <timestamp>2012-11-01T07:25:57Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1375">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Trucs et astuces'''&lt;/u&gt;

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''T&amp;A Divers'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[UUID|Fixer le renommage des partitions avec l'UUID ]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Virtualisation_:_Conversion_VDI_vers_Qcow|Virtualisation: Conversion VDI vers Qcow]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Accélérer_la_synchro_ntp_au_démarrage|Accélérer la synchronisation ntp au démarrage]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[X2x|Lier deux écrans X distants avec X2x]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt_%2B_Segmentation_faulty_tree|Apt: Segmentation faulty tree]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Voir_les_logs_en_direct|Voir les logs en direct]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Changer_le_mot_de_passe_mysql|Changer le mot de passe mysql]]
| width=&quot;33%&quot; |•&amp;nbsp; [[Partition-pleine|Au secours ma partition est pleine]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |T&amp;A Pour les portables
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Portables_Gestion_de_l'énergie|Gestion de l'énergie]]
| width=&quot;33%&quot; | •&amp;nbsp;[[Remontage_automatique_des_disques_durs_externes_après_coupure_de_courant|Remontage automatique des disques durs externes]]
|
|}

----

{{Modèle:Accueil}}

[[Catégorie:Trucs_et_Astuces_divers]]
[[Catégorie:Truc_et_Astuces_pour_les_portables]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>0oykfyy50ftr8idvg7mzqvvjpx3735z</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5055</id>
      <parentid>4711</parentid>
      <timestamp>2013-03-16T12:26:18Z</timestamp>
      <contributor>
        <username>Agentsteel</username>
        <id>260</id>
      </contributor>
      <minor/>
      <comment>création lien vers nouvelle page &quot;astuces diverses en ligne de commande&quot;</comment>
      <text xml:space="preserve" bytes="1478">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Trucs et astuces'''&lt;/u&gt;

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''T&amp;A Divers'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[UUID|Fixer le renommage des partitions avec l'UUID ]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Virtualisation_:_Conversion_VDI_vers_Qcow|Virtualisation: Conversion VDI vers Qcow]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Accélérer_la_synchro_ntp_au_démarrage|Accélérer la synchronisation ntp au démarrage]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[X2x|Lier deux écrans X distants avec X2x]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt_%2B_Segmentation_faulty_tree|Apt: Segmentation faulty tree]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Voir_les_logs_en_direct|Voir les logs en direct]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Changer_le_mot_de_passe_mysql|Changer le mot de passe mysql]]
| width=&quot;33%&quot; |•&amp;nbsp; [[Partition-pleine|Au secours ma partition est pleine]]
| width=&quot;33%&quot; |•&amp;nbsp; [[Astuces_diverses_en_ligne_de_commande|Astuces diverses en ligne de commande]]
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |T&amp;A Pour les portables
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Portables_Gestion_de_l'énergie|Gestion de l'énergie]]
| width=&quot;33%&quot; | •&amp;nbsp;[[Remontage_automatique_des_disques_durs_externes_après_coupure_de_courant|Remontage automatique des disques durs externes]]
|
|}

----

{{Modèle:Accueil}}

[[Catégorie:Trucs_et_Astuces_divers]]
[[Catégorie:Truc_et_Astuces_pour_les_portables]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>8qpaoddfuprrsywm25a7blx9hz5ric1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5148</id>
      <parentid>5055</parentid>
      <timestamp>2013-05-13T14:06:54Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <text xml:space="preserve" bytes="1569">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Trucs et astuces'''&lt;/u&gt;

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''T&amp;A Divers'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[UUID|Fixer le renommage des partitions avec l'UUID ]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Virtualisation_:_Conversion_VDI_vers_Qcow|Virtualisation: Conversion VDI vers Qcow]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Accélérer_la_synchro_ntp_au_démarrage|Accélérer la synchronisation ntp au démarrage]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[X2x|Lier deux écrans X distants avec X2x]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt_%2B_Segmentation_faulty_tree|Apt: Segmentation faulty tree]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Voir_les_logs_en_direct|Voir les logs en direct]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Changer_le_mot_de_passe_mysql|Changer le mot de passe mysql]]
| width=&quot;33%&quot; |•&amp;nbsp; [[Partition-pleine|Au secours ma partition est pleine]]
| width=&quot;33%&quot; |•&amp;nbsp; [[Astuces_diverses_en_ligne_de_commande|Astuces diverses en ligne de commande]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Multiposte|Avoir 2 postes de travail avec un seul matériel]]
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |T&amp;A Pour les portables
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Portables_Gestion_de_l'énergie|Gestion de l'énergie]]
| width=&quot;33%&quot; | •&amp;nbsp;[[Remontage_automatique_des_disques_durs_externes_après_coupure_de_courant|Remontage automatique des disques durs externes]]
|
|}

----

{{Modèle:Accueil}}

[[Catégorie:Trucs_et_Astuces_divers]]
[[Catégorie:Truc_et_Astuces_pour_les_portables]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>7c7o1lnhv3iuie5xd29et05swll3sl1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5350</id>
      <parentid>5148</parentid>
      <timestamp>2013-08-13T06:59:18Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Tester sans risque avec AUFS</comment>
      <text xml:space="preserve" bytes="1645">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Trucs et astuces'''&lt;/u&gt;

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''T&amp;A Divers'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[UUID|Fixer le renommage des partitions avec l'UUID ]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Virtualisation_:_Conversion_VDI_vers_Qcow|Virtualisation: Conversion VDI vers Qcow]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Accélérer_la_synchro_ntp_au_démarrage|Accélérer la synchronisation ntp au démarrage]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[X2x|Lier deux écrans X distants avec X2x]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt_%2B_Segmentation_faulty_tree|Apt: Segmentation faulty tree]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Voir_les_logs_en_direct|Voir les logs en direct]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Changer_le_mot_de_passe_mysql|Changer le mot de passe mysql]]
| width=&quot;33%&quot; |•&amp;nbsp; [[Partition-pleine|Au secours ma partition est pleine]]
| width=&quot;33%&quot; |•&amp;nbsp; [[Astuces_diverses_en_ligne_de_commande|Astuces diverses en ligne de commande]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Multiposte|Avoir 2 postes de travail avec un seul matériel]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Tester_sans_risque|Tester sans risque avec AUFS]]
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |T&amp;A Pour les portables
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Portables_Gestion_de_l'énergie|Gestion de l'énergie]]
| width=&quot;33%&quot; | •&amp;nbsp;[[Remontage_automatique_des_disques_durs_externes_après_coupure_de_courant|Remontage automatique des disques durs externes]]
|
|}

----

{{Modèle:Accueil}}

[[Catégorie:Trucs_et_Astuces_divers]]
[[Catégorie:Truc_et_Astuces_pour_les_portables]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>rha16wt4kg9evt78t1t8w05wsfuilfb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Libapache2-mod-evasive</title>
    <ns>0</ns>
    <id>858</id>
    <revision>
      <id>3535</id>
      <timestamp>2011-11-02T09:02:34Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « == mod_evasive? Qu'est-ce c'est? ==  '''mod_evasive''' est un module pour Apache permettant d'éviter les &quot;manœuvres évasives&quot;: déni de service, attaque DDoS HTTP, ou enco... »</comment>
      <text xml:space="preserve" bytes="8394">== mod_evasive? Qu'est-ce c'est? ==

'''mod_evasive''' est un module pour Apache permettant d'éviter les &quot;manœuvres évasives&quot;: déni de service, attaque DDoS HTTP, ou encore une attaque par force brute.

Il est également conçu pour être un outil de détection, et peut être facilement configuré pour dialoguer avec ipchains, les firewalls, routeurs, etc.

La détection est réalisée par la création d'une table dynamique interne de hachage, et permet de détecter les action suivantes:

- Demander la même page plusieurs fois par seconde

- Faire plus de 50 requêtes simultanées par seconde

- ...

Les demandes légitimes sont rarement bloquées même pour un utilisateur qui rechargera une page à plusieurs reprises.

== Installation ==

 # apt-get install libapache2-mod-evasive

Il est en principe automatiquement chargé, mais pour vérifier, vous pouvez lancer les commandes suivantes:

 # a2enmod mod-evasive
 Module mod-evasive already enabled

&lt;code&gt;
# apachectl -M
Loaded Modules:
 ...
 evasive20_module (shared)
 ...
Syntax OK
&lt;/code&gt;

== Configuration basique de Mod_evasive ==

Le fichier /usr/share/doc/libapache2-mod-evasive/README.gz contient un exemple de configuration basique:

APACHE v2.0
-----------
&lt;IfModule mod_evasive20.c&gt;
    DOSHashTableSize    3097
    DOSPageCount        2
    DOSSiteCount        50
    DOSPageInterval     1
    DOSSiteInterval     1
    DOSBlockingPeriod   10
&lt;/IfModule&gt;

Vous pouvez ajouter les directives suivantes (à adapter...)

    DOSEmailNotify      you@yourdomain.com
    DOSSystemCommand    &quot;su - someuser -c '/sbin/... %s ...'&quot;
    DOSLogDir           &quot;/var/lock/mod_evasive&quot;

Quelques explications:

#''DOSHashTableSize'' Taille de la table hash. Plus elle est grande, plus le traitement est rapide, mais plus ça consomme de ressources...
#''DOSPageCount'' définie le nombre de fois ou une page peut être appelée par la même adresse IP avant que celle-ci soit bloquée.
#''DOSSiteCount'' définie le nombre de fois ou un site peut être demandé par la même adresse IP avant que celle-ci soit bloquée.
#''DOSPageInterval'' détermine un interval en seconde qui autorise l’affichage de la même page avant un bloquage.
#''DOSSiteInterval'' détermine un interval en seconde qui autorise l’affichage de d’un même site avant un bloquage.
#''DOSBlockingPeriod'' détermine la durée de bloquage.
#''DOSEmailNotify'' permet qu’un email soit envoyé à chaque bloquage d’adresses IP.
#''DOSSystemCommand'' permet de définir une commande bien précise en cas d’attaque (bannissement de l’adresse IP dans IPTables par exemple).&lt;code&gt;DOSSystemCommand &quot;/sbin/iptables -I INPUT -s %s -j DROP&quot;&lt;/code&gt;Ou encore&lt;code&gt;DOSSystemCommand &quot;/sbin/iptables -I INPUT -p tcp --dport 80 -s %s -j DROP&quot;&lt;/code&gt;
#''DOSLogDir'' détermine le chemin ou seront stockés les logs d’attaques.
#''DOSWhiteLt'' définie une liste blanche d’adresse IP.


Il faut mettre en place le dossier qui va stocker les adresses IP blacklistées :

 mkdir -p /var/lock/mod_evasive
 chown -R www-data:www-data /var/lock/mod_evasive

Et on relance le serveur Apache:

 /etc/init.d/apache2 restart

== test ==

&lt;code&gt;
# cd /usr/share/doc/libapache2-mod-evasive/examples
# perl test.pl
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
&lt;/code&gt;

L'IP est bien bloquée:

 # cat /var/log/syslog | grep evasive
 Nov  2 11:03:35 nas mod_evasive[13422]: Blacklisting address 127.0.0.1: possible DoS attack.

 # ls /var/lock/mod_evasive/
 dos-127.0.0.1

Recommençons en mettant l'IP en liste blanche (DOSWhitelist)

 # rm /var/lock/mod_evasive/*

 # nano /etc/apache2/apache2.conf
 ...
 &lt;IfModule mod_evasive20.c&gt;
 ...
    DOSWhitelist 127.0.0.1
    DOSWhitelist 127.0.0.*
 &lt;/IfModule&gt;
 ...

 # service apache2 restart
 Restarting web server: apache2 ... waiting .

&lt;code&gt;
# perl test.pl
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
&lt;/code&gt;

 # ls /var/lock/mod_evasive/
 #

== crontab ==

Pour finir, on peut mettre en place la crontab suivante pour puger le dossier de blacklist de temps en temps (commande pas encore testée):

 # Menage mod_evasive
 00 5 * * * www-data find /var/lock/mod_evasive -mtime +1 -type f -exec rm -f '{}' \;

== Sources ==

* {{fr}} [http://www.majorxtrem.be/2009/05/17/installation-du-mod-evasive-sur-apache-22-pour-contrer-des-attaques-dos/]
* {{fr}} [http://acidborg.wordpress.com/2009/06/25/installation-configuration-of-mod_evasive-in-ubuntu-server-9-04/]
* {{fr}} [http://www.tux-planet.fr/mod_evasive-un-module-anti-dos-pour-apache/]
* {{fr}} [http://wiki.goldzoneweb.info/evasive]

----
[[Utilisateur:Lol|Lol]] 2 novembre 2011 à 04:02 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>ml1kfz36459hj7on0gwbij956jfvx2m</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3537</id>
      <parentid>3535</parentid>
      <timestamp>2011-11-02T10:04:45Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* crontab */</comment>
      <text xml:space="preserve" bytes="8395">== mod_evasive? Qu'est-ce c'est? ==

'''mod_evasive''' est un module pour Apache permettant d'éviter les &quot;manœuvres évasives&quot;: déni de service, attaque DDoS HTTP, ou encore une attaque par force brute.

Il est également conçu pour être un outil de détection, et peut être facilement configuré pour dialoguer avec ipchains, les firewalls, routeurs, etc.

La détection est réalisée par la création d'une table dynamique interne de hachage, et permet de détecter les action suivantes:

- Demander la même page plusieurs fois par seconde

- Faire plus de 50 requêtes simultanées par seconde

- ...

Les demandes légitimes sont rarement bloquées même pour un utilisateur qui rechargera une page à plusieurs reprises.

== Installation ==

 # apt-get install libapache2-mod-evasive

Il est en principe automatiquement chargé, mais pour vérifier, vous pouvez lancer les commandes suivantes:

 # a2enmod mod-evasive
 Module mod-evasive already enabled

&lt;code&gt;
# apachectl -M
Loaded Modules:
 ...
 evasive20_module (shared)
 ...
Syntax OK
&lt;/code&gt;

== Configuration basique de Mod_evasive ==

Le fichier /usr/share/doc/libapache2-mod-evasive/README.gz contient un exemple de configuration basique:

APACHE v2.0
-----------
&lt;IfModule mod_evasive20.c&gt;
    DOSHashTableSize    3097
    DOSPageCount        2
    DOSSiteCount        50
    DOSPageInterval     1
    DOSSiteInterval     1
    DOSBlockingPeriod   10
&lt;/IfModule&gt;

Vous pouvez ajouter les directives suivantes (à adapter...)

    DOSEmailNotify      you@yourdomain.com
    DOSSystemCommand    &quot;su - someuser -c '/sbin/... %s ...'&quot;
    DOSLogDir           &quot;/var/lock/mod_evasive&quot;

Quelques explications:

#''DOSHashTableSize'' Taille de la table hash. Plus elle est grande, plus le traitement est rapide, mais plus ça consomme de ressources...
#''DOSPageCount'' définie le nombre de fois ou une page peut être appelée par la même adresse IP avant que celle-ci soit bloquée.
#''DOSSiteCount'' définie le nombre de fois ou un site peut être demandé par la même adresse IP avant que celle-ci soit bloquée.
#''DOSPageInterval'' détermine un interval en seconde qui autorise l’affichage de la même page avant un bloquage.
#''DOSSiteInterval'' détermine un interval en seconde qui autorise l’affichage de d’un même site avant un bloquage.
#''DOSBlockingPeriod'' détermine la durée de bloquage.
#''DOSEmailNotify'' permet qu’un email soit envoyé à chaque bloquage d’adresses IP.
#''DOSSystemCommand'' permet de définir une commande bien précise en cas d’attaque (bannissement de l’adresse IP dans IPTables par exemple).&lt;code&gt;DOSSystemCommand &quot;/sbin/iptables -I INPUT -s %s -j DROP&quot;&lt;/code&gt;Ou encore&lt;code&gt;DOSSystemCommand &quot;/sbin/iptables -I INPUT -p tcp --dport 80 -s %s -j DROP&quot;&lt;/code&gt;
#''DOSLogDir'' détermine le chemin ou seront stockés les logs d’attaques.
#''DOSWhiteLt'' définie une liste blanche d’adresse IP.


Il faut mettre en place le dossier qui va stocker les adresses IP blacklistées :

 mkdir -p /var/lock/mod_evasive
 chown -R www-data:www-data /var/lock/mod_evasive

Et on relance le serveur Apache:

 /etc/init.d/apache2 restart

== test ==

&lt;code&gt;
# cd /usr/share/doc/libapache2-mod-evasive/examples
# perl test.pl
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
&lt;/code&gt;

L'IP est bien bloquée:

 # cat /var/log/syslog | grep evasive
 Nov  2 11:03:35 nas mod_evasive[13422]: Blacklisting address 127.0.0.1: possible DoS attack.

 # ls /var/lock/mod_evasive/
 dos-127.0.0.1

Recommençons en mettant l'IP en liste blanche (DOSWhitelist)

 # rm /var/lock/mod_evasive/*

 # nano /etc/apache2/apache2.conf
 ...
 &lt;IfModule mod_evasive20.c&gt;
 ...
    DOSWhitelist 127.0.0.1
    DOSWhitelist 127.0.0.*
 &lt;/IfModule&gt;
 ...

 # service apache2 restart
 Restarting web server: apache2 ... waiting .

&lt;code&gt;
# perl test.pl
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
&lt;/code&gt;

 # ls /var/lock/mod_evasive/
 #

== crontab ==

Pour finir, on peut mettre en place la crontab suivante pour purger le dossier de blacklist de temps en temps (commande pas encore testée):

 # Menage mod_evasive
 00 5 * * * www-data find /var/lock/mod_evasive -mtime +1 -type f -exec rm -f '{}' \;

== Sources ==

* {{fr}} [http://www.majorxtrem.be/2009/05/17/installation-du-mod-evasive-sur-apache-22-pour-contrer-des-attaques-dos/]
* {{fr}} [http://acidborg.wordpress.com/2009/06/25/installation-configuration-of-mod_evasive-in-ubuntu-server-9-04/]
* {{fr}} [http://www.tux-planet.fr/mod_evasive-un-module-anti-dos-pour-apache/]
* {{fr}} [http://wiki.goldzoneweb.info/evasive]

----
[[Utilisateur:Lol|Lol]] 2 novembre 2011 à 04:02 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>3xnumi8k4su2cyefvsiy61ihreisblm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3538</id>
      <parentid>3537</parentid>
      <timestamp>2011-11-02T10:08:52Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Configuration basique de Mod_evasive */</comment>
      <text xml:space="preserve" bytes="8400">== mod_evasive? Qu'est-ce c'est? ==

'''mod_evasive''' est un module pour Apache permettant d'éviter les &quot;manœuvres évasives&quot;: déni de service, attaque DDoS HTTP, ou encore une attaque par force brute.

Il est également conçu pour être un outil de détection, et peut être facilement configuré pour dialoguer avec ipchains, les firewalls, routeurs, etc.

La détection est réalisée par la création d'une table dynamique interne de hachage, et permet de détecter les action suivantes:

- Demander la même page plusieurs fois par seconde

- Faire plus de 50 requêtes simultanées par seconde

- ...

Les demandes légitimes sont rarement bloquées même pour un utilisateur qui rechargera une page à plusieurs reprises.

== Installation ==

 # apt-get install libapache2-mod-evasive

Il est en principe automatiquement chargé, mais pour vérifier, vous pouvez lancer les commandes suivantes:

 # a2enmod mod-evasive
 Module mod-evasive already enabled

&lt;code&gt;
# apachectl -M
Loaded Modules:
 ...
 evasive20_module (shared)
 ...
Syntax OK
&lt;/code&gt;

== Configuration basique de Mod_evasive ==

Le fichier /usr/share/doc/libapache2-mod-evasive/README.gz contient un exemple de configuration basique:

APACHE v2.0
-----------
&lt;IfModule mod_evasive20.c&gt;
    DOSHashTableSize    3097
    DOSPageCount        2
    DOSSiteCount        50
    DOSPageInterval     1
    DOSSiteInterval     1
    DOSBlockingPeriod   10
&lt;/IfModule&gt;

Vous pouvez ajouter les directives suivantes (à adapter...)

    DOSEmailNotify      you@yourdomain.com
    DOSSystemCommand    &quot;su - someuser -c '/sbin/... %s ...'&quot;
    DOSLogDir           &quot;/var/lock/mod_evasive&quot;

Quelques explications:

#''DOSHashTableSize'' Taille de la table hash. Plus elle est grande, plus le traitement est rapide, mais plus ça consomme de ressources...
#''DOSPageCount'' définit le nombre de fois ou une page peut être appelée par la même adresse IP avant que celle-ci ne soit bloquée.
#''DOSSiteCount'' définit le nombre de fois ou un site peut être demandé par la même adresse IP avant que celle-ci ne soit bloquée.
#''DOSPageInterval'' détermine un intervalle en secondes qui autorise l’affichage de la même page avant un blocage.
#''DOSSiteInterval'' détermine un intervalle en secondes qui autorise l’affichage d’un même site avant un blocage.
#''DOSBlockingPeriod'' détermine la durée de blocage.
#''DOSEmailNotify'' permet qu’un email soit envoyé à chaque blocage d’adresses IP.
#''DOSSystemCommand'' permet de définir une commande bien précise en cas d’attaque (bannissement de l’adresse IP dans IPTables par exemple).&lt;code&gt;DOSSystemCommand &quot;/sbin/iptables -I INPUT -s %s -j DROP&quot;&lt;/code&gt;Ou encore&lt;code&gt;DOSSystemCommand &quot;/sbin/iptables -I INPUT -p tcp --dport 80 -s %s -j DROP&quot;&lt;/code&gt;
#''DOSLogDir'' détermine le chemin ou seront stockés les logs d’attaques.
#''DOSWhiteLt'' définie une liste blanche d’adresse IP.


Il faut mettre en place le dossier qui va stocker les adresses IP blacklistées :

 mkdir -p /var/lock/mod_evasive
 chown -R www-data:www-data /var/lock/mod_evasive

Et on relance le serveur Apache:

 /etc/init.d/apache2 restart

== test ==

&lt;code&gt;
# cd /usr/share/doc/libapache2-mod-evasive/examples
# perl test.pl
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
&lt;/code&gt;

L'IP est bien bloquée:

 # cat /var/log/syslog | grep evasive
 Nov  2 11:03:35 nas mod_evasive[13422]: Blacklisting address 127.0.0.1: possible DoS attack.

 # ls /var/lock/mod_evasive/
 dos-127.0.0.1

Recommençons en mettant l'IP en liste blanche (DOSWhitelist)

 # rm /var/lock/mod_evasive/*

 # nano /etc/apache2/apache2.conf
 ...
 &lt;IfModule mod_evasive20.c&gt;
 ...
    DOSWhitelist 127.0.0.1
    DOSWhitelist 127.0.0.*
 &lt;/IfModule&gt;
 ...

 # service apache2 restart
 Restarting web server: apache2 ... waiting .

&lt;code&gt;
# perl test.pl
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
&lt;/code&gt;

 # ls /var/lock/mod_evasive/
 #

== crontab ==

Pour finir, on peut mettre en place la crontab suivante pour purger le dossier de blacklist de temps en temps (commande pas encore testée):

 # Menage mod_evasive
 00 5 * * * www-data find /var/lock/mod_evasive -mtime +1 -type f -exec rm -f '{}' \;

== Sources ==

* {{fr}} [http://www.majorxtrem.be/2009/05/17/installation-du-mod-evasive-sur-apache-22-pour-contrer-des-attaques-dos/]
* {{fr}} [http://acidborg.wordpress.com/2009/06/25/installation-configuration-of-mod_evasive-in-ubuntu-server-9-04/]
* {{fr}} [http://www.tux-planet.fr/mod_evasive-un-module-anti-dos-pour-apache/]
* {{fr}} [http://wiki.goldzoneweb.info/evasive]

----
[[Utilisateur:Lol|Lol]] 2 novembre 2011 à 04:02 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>27it0tzijn7rqqu7zan39i4dkre2kl3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4280</id>
      <parentid>3538</parentid>
      <timestamp>2012-05-28T05:56:27Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Configuration basique de Mod_evasive */ Remarques...</comment>
      <text xml:space="preserve" bytes="9208">== mod_evasive? Qu'est-ce c'est? ==

'''mod_evasive''' est un module pour Apache permettant d'éviter les &quot;manœuvres évasives&quot;: déni de service, attaque DDoS HTTP, ou encore une attaque par force brute.

Il est également conçu pour être un outil de détection, et peut être facilement configuré pour dialoguer avec ipchains, les firewalls, routeurs, etc.

La détection est réalisée par la création d'une table dynamique interne de hachage, et permet de détecter les action suivantes:

- Demander la même page plusieurs fois par seconde

- Faire plus de 50 requêtes simultanées par seconde

- ...

Les demandes légitimes sont rarement bloquées même pour un utilisateur qui rechargera une page à plusieurs reprises.

== Installation ==

 # apt-get install libapache2-mod-evasive

Il est en principe automatiquement chargé, mais pour vérifier, vous pouvez lancer les commandes suivantes:

 # a2enmod mod-evasive
 Module mod-evasive already enabled

&lt;code&gt;
# apachectl -M
Loaded Modules:
 ...
 evasive20_module (shared)
 ...
Syntax OK
&lt;/code&gt;

== Configuration basique de Mod_evasive ==

Le fichier /usr/share/doc/libapache2-mod-evasive/README.gz contient un exemple de configuration basique:

APACHE v2.0
-----------
&lt;IfModule mod_evasive20.c&gt;
    DOSHashTableSize    3097
    DOSPageCount        2
    DOSSiteCount        50
    DOSPageInterval     1
    DOSSiteInterval     1
    DOSBlockingPeriod   10
&lt;/IfModule&gt;

Vous pouvez ajouter les directives suivantes (à adapter...)

    DOSEmailNotify      you@yourdomain.com
    DOSSystemCommand    &quot;su - someuser -c '/sbin/... %s ...'&quot;
    DOSLogDir           &quot;/var/lock/mod_evasive&quot;

Quelques explications:

#''DOSHashTableSize'' Taille de la table hash. Plus elle est grande, plus le traitement est rapide, mais plus ça consomme de ressources...
#''DOSPageCount'' définit le nombre de fois ou une page peut être appelée par la même adresse IP avant que celle-ci ne soit bloquée.
#''DOSSiteCount'' définit le nombre de fois ou un site peut être demandé par la même adresse IP avant que celle-ci ne soit bloquée.
#''DOSPageInterval'' détermine un intervalle en secondes qui autorise l’affichage de la même page avant un blocage.
#''DOSSiteInterval'' détermine un intervalle en secondes qui autorise l’affichage d’un même site avant un blocage.
#''DOSBlockingPeriod'' détermine la durée de blocage.
#''DOSEmailNotify'' permet qu’un email soit envoyé à chaque blocage d’adresses IP.
#''DOSSystemCommand'' permet de définir une commande bien précise en cas d’attaque (bannissement de l’adresse IP dans IPTables par exemple).&lt;code&gt;DOSSystemCommand &quot;/sbin/iptables -I INPUT -s %s -j DROP&quot;&lt;/code&gt;Ou encore&lt;code&gt;DOSSystemCommand &quot;/sbin/iptables -I INPUT -p tcp --dport 80 -s %s -j DROP&quot;&lt;/code&gt; '''Vous pouvez passer n'importe quelle commande du moment que www-data est autorisé à le faire. A ce sujet, plutôt que d'autoriser www-data à manipuler Iptables, utilisez fail2ban...''' Voir ci-dessous le lien.
#''DOSLogDir'' détermine le chemin ou seront stockés les logs d’attaques.
#''DOSWhiteLt'' définie une liste blanche d’adresse IP.


Il faut mettre en place le dossier qui va stocker les adresses IP blacklistées :

 mkdir -p /var/lock/mod_evasive
 chown -R www-data:www-data /var/lock/mod_evasive

Et on relance le serveur Apache:

 /etc/init.d/apache2 restart

=== Remarques sur DOSEmailNotify ===

Pour que la commande fonctionne, il faut créer un lien symbolique de /usr/sbin/mail vers /bin/mail

En effet, le module cherche l'exécutable /bin/mail; Or celui-ci n'est pas à cet endroit...

 ln -s /usr/bin/mail /bin/mail

=== Remarque sur Iptables ===

Pour que le ban par mod-evasive fonctionne, il faut que www-data ait le droit de modifier iptables. Or, cela peut s'avérer TRèS DANGEREUX...

Il est donc conseillé de se servir à la place de fail2ban qui prendra le relais...

[[Fail2ban#Fail2ban_avec_mod-evasive| Fail2ban avec mod-evasive]]

== test ==

&lt;code&gt;
# cd /usr/share/doc/libapache2-mod-evasive/examples
# perl test.pl
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
&lt;/code&gt;

L'IP est bien bloquée:

 # cat /var/log/syslog | grep evasive
 Nov  2 11:03:35 nas mod_evasive[13422]: Blacklisting address 127.0.0.1: possible DoS attack.

 # ls /var/lock/mod_evasive/
 dos-127.0.0.1

Recommençons en mettant l'IP en liste blanche (DOSWhitelist)

 # rm /var/lock/mod_evasive/*

 # nano /etc/apache2/apache2.conf
 ...
 &lt;IfModule mod_evasive20.c&gt;
 ...
    DOSWhitelist 127.0.0.1
    DOSWhitelist 127.0.0.*
 &lt;/IfModule&gt;
 ...

 # service apache2 restart
 Restarting web server: apache2 ... waiting .

&lt;code&gt;
# perl test.pl
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
&lt;/code&gt;

 # ls /var/lock/mod_evasive/
 #

== crontab ==

Pour finir, on peut mettre en place la crontab suivante pour purger le dossier de blacklist de temps en temps (commande pas encore testée):

 # Menage mod_evasive
 00 5 * * * www-data find /var/lock/mod_evasive -mtime +1 -type f -exec rm -f '{}' \;

== Sources ==

* {{fr}} [http://www.majorxtrem.be/2009/05/17/installation-du-mod-evasive-sur-apache-22-pour-contrer-des-attaques-dos/]
* {{fr}} [http://acidborg.wordpress.com/2009/06/25/installation-configuration-of-mod_evasive-in-ubuntu-server-9-04/]
* {{fr}} [http://www.tux-planet.fr/mod_evasive-un-module-anti-dos-pour-apache/]
* {{fr}} [http://wiki.goldzoneweb.info/evasive]

----
[[Utilisateur:Lol|Lol]] 2 novembre 2011 à 04:02 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>ceahbpjq99ptpr4kq2amctkxkz6rg2b</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4281</id>
      <parentid>4280</parentid>
      <timestamp>2012-05-28T05:57:23Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Remarques sur DOSEmailNotify */</comment>
      <text xml:space="preserve" bytes="9207">== mod_evasive? Qu'est-ce c'est? ==

'''mod_evasive''' est un module pour Apache permettant d'éviter les &quot;manœuvres évasives&quot;: déni de service, attaque DDoS HTTP, ou encore une attaque par force brute.

Il est également conçu pour être un outil de détection, et peut être facilement configuré pour dialoguer avec ipchains, les firewalls, routeurs, etc.

La détection est réalisée par la création d'une table dynamique interne de hachage, et permet de détecter les action suivantes:

- Demander la même page plusieurs fois par seconde

- Faire plus de 50 requêtes simultanées par seconde

- ...

Les demandes légitimes sont rarement bloquées même pour un utilisateur qui rechargera une page à plusieurs reprises.

== Installation ==

 # apt-get install libapache2-mod-evasive

Il est en principe automatiquement chargé, mais pour vérifier, vous pouvez lancer les commandes suivantes:

 # a2enmod mod-evasive
 Module mod-evasive already enabled

&lt;code&gt;
# apachectl -M
Loaded Modules:
 ...
 evasive20_module (shared)
 ...
Syntax OK
&lt;/code&gt;

== Configuration basique de Mod_evasive ==

Le fichier /usr/share/doc/libapache2-mod-evasive/README.gz contient un exemple de configuration basique:

APACHE v2.0
-----------
&lt;IfModule mod_evasive20.c&gt;
    DOSHashTableSize    3097
    DOSPageCount        2
    DOSSiteCount        50
    DOSPageInterval     1
    DOSSiteInterval     1
    DOSBlockingPeriod   10
&lt;/IfModule&gt;

Vous pouvez ajouter les directives suivantes (à adapter...)

    DOSEmailNotify      you@yourdomain.com
    DOSSystemCommand    &quot;su - someuser -c '/sbin/... %s ...'&quot;
    DOSLogDir           &quot;/var/lock/mod_evasive&quot;

Quelques explications:

#''DOSHashTableSize'' Taille de la table hash. Plus elle est grande, plus le traitement est rapide, mais plus ça consomme de ressources...
#''DOSPageCount'' définit le nombre de fois ou une page peut être appelée par la même adresse IP avant que celle-ci ne soit bloquée.
#''DOSSiteCount'' définit le nombre de fois ou un site peut être demandé par la même adresse IP avant que celle-ci ne soit bloquée.
#''DOSPageInterval'' détermine un intervalle en secondes qui autorise l’affichage de la même page avant un blocage.
#''DOSSiteInterval'' détermine un intervalle en secondes qui autorise l’affichage d’un même site avant un blocage.
#''DOSBlockingPeriod'' détermine la durée de blocage.
#''DOSEmailNotify'' permet qu’un email soit envoyé à chaque blocage d’adresses IP.
#''DOSSystemCommand'' permet de définir une commande bien précise en cas d’attaque (bannissement de l’adresse IP dans IPTables par exemple).&lt;code&gt;DOSSystemCommand &quot;/sbin/iptables -I INPUT -s %s -j DROP&quot;&lt;/code&gt;Ou encore&lt;code&gt;DOSSystemCommand &quot;/sbin/iptables -I INPUT -p tcp --dport 80 -s %s -j DROP&quot;&lt;/code&gt; '''Vous pouvez passer n'importe quelle commande du moment que www-data est autorisé à le faire. A ce sujet, plutôt que d'autoriser www-data à manipuler Iptables, utilisez fail2ban...''' Voir ci-dessous le lien.
#''DOSLogDir'' détermine le chemin ou seront stockés les logs d’attaques.
#''DOSWhiteLt'' définie une liste blanche d’adresse IP.


Il faut mettre en place le dossier qui va stocker les adresses IP blacklistées :

 mkdir -p /var/lock/mod_evasive
 chown -R www-data:www-data /var/lock/mod_evasive

Et on relance le serveur Apache:

 /etc/init.d/apache2 restart

=== Remarque sur DOSEmailNotify ===

Pour que la commande fonctionne, il faut créer un lien symbolique de /usr/sbin/mail vers /bin/mail

En effet, le module cherche l'exécutable /bin/mail; Or celui-ci n'est pas à cet endroit...

 ln -s /usr/bin/mail /bin/mail

=== Remarque sur Iptables ===

Pour que le ban par mod-evasive fonctionne, il faut que www-data ait le droit de modifier iptables. Or, cela peut s'avérer TRèS DANGEREUX...

Il est donc conseillé de se servir à la place de fail2ban qui prendra le relais...

[[Fail2ban#Fail2ban_avec_mod-evasive| Fail2ban avec mod-evasive]]

== test ==

&lt;code&gt;
# cd /usr/share/doc/libapache2-mod-evasive/examples
# perl test.pl
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
&lt;/code&gt;

L'IP est bien bloquée:

 # cat /var/log/syslog | grep evasive
 Nov  2 11:03:35 nas mod_evasive[13422]: Blacklisting address 127.0.0.1: possible DoS attack.

 # ls /var/lock/mod_evasive/
 dos-127.0.0.1

Recommençons en mettant l'IP en liste blanche (DOSWhitelist)

 # rm /var/lock/mod_evasive/*

 # nano /etc/apache2/apache2.conf
 ...
 &lt;IfModule mod_evasive20.c&gt;
 ...
    DOSWhitelist 127.0.0.1
    DOSWhitelist 127.0.0.*
 &lt;/IfModule&gt;
 ...

 # service apache2 restart
 Restarting web server: apache2 ... waiting .

&lt;code&gt;
# perl test.pl
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
&lt;/code&gt;

 # ls /var/lock/mod_evasive/
 #

== crontab ==

Pour finir, on peut mettre en place la crontab suivante pour purger le dossier de blacklist de temps en temps (commande pas encore testée):

 # Menage mod_evasive
 00 5 * * * www-data find /var/lock/mod_evasive -mtime +1 -type f -exec rm -f '{}' \;

== Sources ==

* {{fr}} [http://www.majorxtrem.be/2009/05/17/installation-du-mod-evasive-sur-apache-22-pour-contrer-des-attaques-dos/]
* {{fr}} [http://acidborg.wordpress.com/2009/06/25/installation-configuration-of-mod_evasive-in-ubuntu-server-9-04/]
* {{fr}} [http://www.tux-planet.fr/mod_evasive-un-module-anti-dos-pour-apache/]
* {{fr}} [http://wiki.goldzoneweb.info/evasive]

----
[[Utilisateur:Lol|Lol]] 2 novembre 2011 à 04:02 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>12f1cdu50gitqvtas7i3ygj8ahn0f6q</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4282</id>
      <parentid>4281</parentid>
      <timestamp>2012-05-28T07:26:11Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Configuration basique de Mod_evasive */</comment>
      <text xml:space="preserve" bytes="9221">== mod_evasive? Qu'est-ce c'est? ==

'''mod_evasive''' est un module pour Apache permettant d'éviter les &quot;manœuvres évasives&quot;: déni de service, attaque DDoS HTTP, ou encore une attaque par force brute.

Il est également conçu pour être un outil de détection, et peut être facilement configuré pour dialoguer avec ipchains, les firewalls, routeurs, etc.

La détection est réalisée par la création d'une table dynamique interne de hachage, et permet de détecter les action suivantes:

- Demander la même page plusieurs fois par seconde

- Faire plus de 50 requêtes simultanées par seconde

- ...

Les demandes légitimes sont rarement bloquées même pour un utilisateur qui rechargera une page à plusieurs reprises.

== Installation ==

 # apt-get install libapache2-mod-evasive

Il est en principe automatiquement chargé, mais pour vérifier, vous pouvez lancer les commandes suivantes:

 # a2enmod mod-evasive
 Module mod-evasive already enabled

&lt;code&gt;
# apachectl -M
Loaded Modules:
 ...
 evasive20_module (shared)
 ...
Syntax OK
&lt;/code&gt;

== Configuration basique de Mod_evasive ==

Le fichier /usr/share/doc/libapache2-mod-evasive/README.gz contient un exemple de configuration basique:

APACHE v2.0
-----------
&lt;IfModule mod_evasive20.c&gt;
    DOSHashTableSize    3097
    DOSPageCount        2
    DOSSiteCount        50
    DOSPageInterval     1
    DOSSiteInterval     1
    DOSBlockingPeriod   10
&lt;/IfModule&gt;

Vous pouvez ajouter les directives suivantes (à adapter...)

    DOSEmailNotify      you@yourdomain.com
    DOSSystemCommand    &quot;su - someuser -c '/sbin/... %s ...'&quot;
    DOSLogDir           &quot;/var/lock/mod_evasive&quot;

Quelques explications:

#''DOSHashTableSize'' Taille de la table hash. Plus elle est grande, plus le traitement est rapide, mais plus ça consomme de ressources...
#''DOSPageCount'' définit le nombre de fois ou une page peut être appelée par la même adresse IP avant que celle-ci ne soit bloquée.
#''DOSSiteCount'' définit le nombre de fois ou un site peut être demandé par la même adresse IP avant que celle-ci ne soit bloquée.
#''DOSPageInterval'' détermine un intervalle en secondes qui autorise l’affichage de la même page avant un blocage.
#''DOSSiteInterval'' détermine un intervalle en secondes qui autorise l’affichage d’un même site avant un blocage.
#''DOSBlockingPeriod'' détermine la durée de blocage (en secondes).
#''DOSEmailNotify'' permet qu’un email soit envoyé à chaque blocage d’adresses IP.
#''DOSSystemCommand'' permet de définir une commande bien précise en cas d’attaque (bannissement de l’adresse IP dans IPTables par exemple).&lt;code&gt;DOSSystemCommand &quot;/sbin/iptables -I INPUT -s %s -j DROP&quot;&lt;/code&gt;Ou encore&lt;code&gt;DOSSystemCommand &quot;/sbin/iptables -I INPUT -p tcp --dport 80 -s %s -j DROP&quot;&lt;/code&gt; '''Vous pouvez passer n'importe quelle commande du moment que www-data est autorisé à le faire. A ce sujet, plutôt que d'autoriser www-data à manipuler Iptables, utilisez fail2ban...''' Voir ci-dessous le lien.
#''DOSLogDir'' détermine le chemin ou seront stockés les logs d’attaques.
#''DOSWhiteLt'' définie une liste blanche d’adresse IP.


Il faut mettre en place le dossier qui va stocker les adresses IP blacklistées :

 mkdir -p /var/lock/mod_evasive
 chown -R www-data:www-data /var/lock/mod_evasive

Et on relance le serveur Apache:

 /etc/init.d/apache2 restart

=== Remarque sur DOSEmailNotify ===

Pour que la commande fonctionne, il faut créer un lien symbolique de /usr/sbin/mail vers /bin/mail

En effet, le module cherche l'exécutable /bin/mail; Or celui-ci n'est pas à cet endroit...

 ln -s /usr/bin/mail /bin/mail

=== Remarque sur Iptables ===

Pour que le ban par mod-evasive fonctionne, il faut que www-data ait le droit de modifier iptables. Or, cela peut s'avérer TRèS DANGEREUX...

Il est donc conseillé de se servir à la place de fail2ban qui prendra le relais...

[[Fail2ban#Fail2ban_avec_mod-evasive| Fail2ban avec mod-evasive]]

== test ==

&lt;code&gt;
# cd /usr/share/doc/libapache2-mod-evasive/examples
# perl test.pl
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
&lt;/code&gt;

L'IP est bien bloquée:

 # cat /var/log/syslog | grep evasive
 Nov  2 11:03:35 nas mod_evasive[13422]: Blacklisting address 127.0.0.1: possible DoS attack.

 # ls /var/lock/mod_evasive/
 dos-127.0.0.1

Recommençons en mettant l'IP en liste blanche (DOSWhitelist)

 # rm /var/lock/mod_evasive/*

 # nano /etc/apache2/apache2.conf
 ...
 &lt;IfModule mod_evasive20.c&gt;
 ...
    DOSWhitelist 127.0.0.1
    DOSWhitelist 127.0.0.*
 &lt;/IfModule&gt;
 ...

 # service apache2 restart
 Restarting web server: apache2 ... waiting .

&lt;code&gt;
# perl test.pl
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
&lt;/code&gt;

 # ls /var/lock/mod_evasive/
 #

== crontab ==

Pour finir, on peut mettre en place la crontab suivante pour purger le dossier de blacklist de temps en temps (commande pas encore testée):

 # Menage mod_evasive
 00 5 * * * www-data find /var/lock/mod_evasive -mtime +1 -type f -exec rm -f '{}' \;

== Sources ==

* {{fr}} [http://www.majorxtrem.be/2009/05/17/installation-du-mod-evasive-sur-apache-22-pour-contrer-des-attaques-dos/]
* {{fr}} [http://acidborg.wordpress.com/2009/06/25/installation-configuration-of-mod_evasive-in-ubuntu-server-9-04/]
* {{fr}} [http://www.tux-planet.fr/mod_evasive-un-module-anti-dos-pour-apache/]
* {{fr}} [http://wiki.goldzoneweb.info/evasive]

----
[[Utilisateur:Lol|Lol]] 2 novembre 2011 à 04:02 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>cjpng7ffui5p8o1anrjh3wb6bzblt9a</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4291</id>
      <parentid>4282</parentid>
      <timestamp>2012-05-29T04:07:08Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Configuration basique de Mod_evasive */</comment>
      <text xml:space="preserve" bytes="9225">== mod_evasive? Qu'est-ce c'est? ==

'''mod_evasive''' est un module pour Apache permettant d'éviter les &quot;manœuvres évasives&quot;: déni de service, attaque DDoS HTTP, ou encore une attaque par force brute.

Il est également conçu pour être un outil de détection, et peut être facilement configuré pour dialoguer avec ipchains, les firewalls, routeurs, etc.

La détection est réalisée par la création d'une table dynamique interne de hachage, et permet de détecter les action suivantes:

- Demander la même page plusieurs fois par seconde

- Faire plus de 50 requêtes simultanées par seconde

- ...

Les demandes légitimes sont rarement bloquées même pour un utilisateur qui rechargera une page à plusieurs reprises.

== Installation ==

 # apt-get install libapache2-mod-evasive

Il est en principe automatiquement chargé, mais pour vérifier, vous pouvez lancer les commandes suivantes:

 # a2enmod mod-evasive
 Module mod-evasive already enabled

&lt;code&gt;
# apachectl -M
Loaded Modules:
 ...
 evasive20_module (shared)
 ...
Syntax OK
&lt;/code&gt;

== Configuration basique de Mod_evasive ==

Le fichier /usr/share/doc/libapache2-mod-evasive/README.gz contient un exemple de configuration basique:

&lt;pre&gt;
APACHE v2.0
-----------
&lt;IfModule mod_evasive20.c&gt;
    DOSHashTableSize    3097
    DOSPageCount        2
    DOSSiteCount        50
    DOSPageInterval     1
    DOSSiteInterval     1
    DOSBlockingPeriod   10
&lt;/IfModule&gt;
&lt;/pre&gt;

Vous pouvez ajouter les directives suivantes (à adapter...)

 DOSEmailNotify      you@yourdomain.com
 DOSSystemCommand    &quot;su - someuser -c '/sbin/... %s ...'&quot;
 DOSLogDir           &quot;/var/lock/mod_evasive&quot;

Quelques explications:

#''DOSHashTableSize'' Taille de la table hash. Plus elle est grande, plus le traitement est rapide, mais plus ça consomme de ressources...
#''DOSPageCount'' définit le nombre de fois ou une page peut être appelée par la même adresse IP avant que celle-ci ne soit bloquée.
#''DOSSiteCount'' définit le nombre de fois ou un site peut être demandé par la même adresse IP avant que celle-ci ne soit bloquée.
#''DOSPageInterval'' détermine un intervalle en secondes qui autorise l’affichage de la même page avant un blocage.
#''DOSSiteInterval'' détermine un intervalle en secondes qui autorise l’affichage d’un même site avant un blocage.
#''DOSBlockingPeriod'' détermine la durée de blocage (en secondes).
#''DOSEmailNotify'' permet qu’un email soit envoyé à chaque blocage d’adresses IP.
#''DOSSystemCommand'' permet de définir une commande bien précise en cas d’attaque (bannissement de l’adresse IP dans IPTables par exemple).&lt;code&gt;DOSSystemCommand &quot;/sbin/iptables -I INPUT -s %s -j DROP&quot;&lt;/code&gt;Ou encore&lt;code&gt;DOSSystemCommand &quot;/sbin/iptables -I INPUT -p tcp --dport 80 -s %s -j DROP&quot;&lt;/code&gt; '''Vous pouvez passer n'importe quelle commande du moment que www-data est autorisé à le faire. A ce sujet, plutôt que d'autoriser www-data à manipuler Iptables, utilisez fail2ban...''' Voir ci-dessous le lien.
#''DOSLogDir'' détermine le chemin ou seront stockés les logs d’attaques.
#''DOSWhiteLt'' définie une liste blanche d’adresse IP.


Il faut mettre en place le dossier qui va stocker les adresses IP blacklistées :

 mkdir -p /var/lock/mod_evasive
 chown -R www-data:www-data /var/lock/mod_evasive

Et on relance le serveur Apache:

 /etc/init.d/apache2 restart

=== Remarque sur DOSEmailNotify ===

Pour que la commande fonctionne, il faut créer un lien symbolique de /usr/sbin/mail vers /bin/mail

En effet, le module cherche l'exécutable /bin/mail; Or celui-ci n'est pas à cet endroit...

 ln -s /usr/bin/mail /bin/mail

=== Remarque sur Iptables ===

Pour que le ban par mod-evasive fonctionne, il faut que www-data ait le droit de modifier iptables. Or, cela peut s'avérer TRèS DANGEREUX...

Il est donc conseillé de se servir à la place de fail2ban qui prendra le relais...

[[Fail2ban#Fail2ban_avec_mod-evasive| Fail2ban avec mod-evasive]]

== test ==

&lt;code&gt;
# cd /usr/share/doc/libapache2-mod-evasive/examples
# perl test.pl
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
&lt;/code&gt;

L'IP est bien bloquée:

 # cat /var/log/syslog | grep evasive
 Nov  2 11:03:35 nas mod_evasive[13422]: Blacklisting address 127.0.0.1: possible DoS attack.

 # ls /var/lock/mod_evasive/
 dos-127.0.0.1

Recommençons en mettant l'IP en liste blanche (DOSWhitelist)

 # rm /var/lock/mod_evasive/*

 # nano /etc/apache2/apache2.conf
 ...
 &lt;IfModule mod_evasive20.c&gt;
 ...
    DOSWhitelist 127.0.0.1
    DOSWhitelist 127.0.0.*
 &lt;/IfModule&gt;
 ...

 # service apache2 restart
 Restarting web server: apache2 ... waiting .

&lt;code&gt;
# perl test.pl
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
&lt;/code&gt;

 # ls /var/lock/mod_evasive/
 #

== crontab ==

Pour finir, on peut mettre en place la crontab suivante pour purger le dossier de blacklist de temps en temps (commande pas encore testée):

 # Menage mod_evasive
 00 5 * * * www-data find /var/lock/mod_evasive -mtime +1 -type f -exec rm -f '{}' \;

== Sources ==

* {{fr}} [http://www.majorxtrem.be/2009/05/17/installation-du-mod-evasive-sur-apache-22-pour-contrer-des-attaques-dos/]
* {{fr}} [http://acidborg.wordpress.com/2009/06/25/installation-configuration-of-mod_evasive-in-ubuntu-server-9-04/]
* {{fr}} [http://www.tux-planet.fr/mod_evasive-un-module-anti-dos-pour-apache/]
* {{fr}} [http://wiki.goldzoneweb.info/evasive]

----
[[Utilisateur:Lol|Lol]] 2 novembre 2011 à 04:02 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>tuv0hnfneugcpnuaiasvw1eyobc84l1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Liens GNU/Linux Free Software OpenSource</title>
    <ns>0</ns>
    <id>277</id>
    <revision>
      <id>1192</id>
      <timestamp>2010-03-29T06:28:59Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « {{Ébauche|es liens concernant GNU/Linus, la Free Software et l'Open Source}}  Sur cette page sont centralisés tous les liens concernant GNU/Linus, la Free Software et l'Ope… »</comment>
      <text xml:space="preserve" bytes="9558">{{Ébauche|es liens concernant GNU/Linus, la Free Software et l'Open Source}}

Sur cette page sont centralisés tous les liens concernant GNU/Linus, la Free Software et l'Open Source !

== Divers ==

* Recherche ciblée GNU/Linux sur Google :
:[http://www.google.fr/linux Google Search For GNU/Linux]

* GNU/Linux, généralités :
:[http://www.trustonme.net/ Trustonme]
:[http://lea-linux.org/ Léa / GNU/Linux]
:[http://www.linuxfrench.net/ LinuxFrench.Net]
:[http://linuxreviews.org/ Linux Reviews]

* GNU/Linux, distributions :
:[http://distrowatch.com/ DistroWatch.com: Put the fun back into computing. Use Linux, BSD.]
:[http://www.frozentech.com/content/livecd.php The LiveCD List]

== Debian ==

* GNU/Linux, distributions Debian (en anglais)
:[http://www.debian.org/ Debian]
:[http://wiki.debian.org/ Debian Wiki]
:[http://www.debian-administration.org/ Debian GNU-Linux System Administration Resources]
:[http://www.debian.org/doc/ Debian Documentation]
:[http://www.debian.org/doc/user-manuals Debian Users Manuals]
:[http://www.debian.org/doc/manuals/debian-faq/index.en.html The Debian GNU/Linux FAQ]
::Lien mort &gt; :[http://cafecomputer.com/guide/users-guide.en.html Debian Desktop User's Guide]
:[http://www.togaware.com/linux/survivor/ Debian GNU/Linux Desktop Survival Guide]
:[http://qref.sourceforge.net/ Debian Reference]
:[http://www.debian.org/distrib/packages#search_packages Debian Packages]

* GNU/Linux, distributions Debian (en français)
:[http://www.debian.org/index.fr.html Debian Le système d'exploitation universel]
:[http://www.debian-fr.org/ Debian]
:[http://forum.debian-fr.org/ Debian - Forum]
:[http://debianworld.org/ Debianworld.org]
:[http://planet-fr.debian.net/ Planet Debian-FR]
:[http://www.debian.org/doc/manuals/debian-faq/index.fr.html La FAQ Debian GNU/Linux]
:[http://www.michauko.org/docs/debian_testing/index.html Dossier d'installation Debian testing]
:[http://formation-debian.via.ecp.fr/ Formation Debian GNU/Linux]
::Lien mort &gt; :[http://qref.sourceforge.net/Debian/reference/reference.fr.html Guide de référence pour Debian]
:[http://www.debian.org/distrib/packages.fr.html#search_packages Debian Paquets]

* GNU/Linux, distributions Debian (Howto's)
::Lien mort &gt; :[http://wiki.serios.net/wiki/Debian_Java_JRE/JDK_installation Debian Java JRE/JDK installation - SeriosWiki]

* GNU/Linux, distributions Debian : Howto Nvidia
::Lien Déplacé &gt; :[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.txt Simple instructions on how to install nVidia drivers for X11 on Debian]
:[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.html Simple instructions on how to install nVidia drivers for X11 on Debian]
::Lien mort &gt; :[http://home.comcast.net/~andrex/Debian-nVidia/index.html Debian-nVidia HOWTO]
:[http://www.linux-wizard.net/howto.php?section=3&amp;key=nvidia#agp Debian - HowTo - Nvidia]

* GNU/Linux, distributions Debian : Howto Matériel
:[http://kmuto.jp/debian/hcl/ Vérifiez la compatibilité de votre matériel]
:[http://www.ibiblio.org/pub/linux/docs/HOWTO/translations/fr/html-1page/Webcam-HOWTO.html Guide pratique des webcams]
:[http://mxhaard.free.fr/download.html Pilotes Webcam]
:[http://www.linux-usb.org/USB-guide/book1.html Usb sous Linux]
:[http://fr.tldp.org/HOWTO/lecture/Hardware-HOWTO.html liste de l'ensemble du matériel réputé compatible ou non avec Linux]
:[http://fasterdata.es.net/TCP-tuning//linux.html Linux TCP Tuning]

== Autres Distributions Linux ==

* GNU/Linux - Sidux
:[http://sidux.com/ Site de Sidux - en Anglais]
:[http://manual.sidux.com/fr/welcome-fr.htm Manuel de Sidux en français]

* GNU/Linux - Ubuntu (en anglais)
:[http://www.ubuntulinux.org/ Ubuntu]
:[http://www.ubuntuforums.org/ Ubuntu Official Community &amp; Forums]
:[http://www.ubuntuguide.org/ Unofficial Ubuntu Starter Guide]
:[http://packages.ubuntu.com/ Ubuntu packages]

* GNU/Linux - Ubuntu (en français)
:[http://www.ubuntu-fr.org/ Ubuntu-fr.org]
:[http://forum.ubuntu-fr.org/ Ubuntu-fr.org Forum]
:[http://yekubuntu.free.fr/index.php yeK-Ubuntu]
 
* GNU/Linux - Arch
:[http://archlinuxfr.org/ Arch Linux [FR]
:[http://www.archlinux.org/ Arch Linux [EN]

* GNU/Linux - Mandriva
:[http://www.mandrivalinux.com/en-us/ Mandriva Linux]
:[http://distrowatch.com/table.php?distribution=mandrake DistroWatch.com: Mandriva Linux]
:[http://mandrivausers.org/ MandrakeUsers]
:[http://rpm.pbone.net/ RPM pbone.net]
 
* GNU/Linux - OpenSUSE
:[http://www.opensuse.org/ OpenSUSE]

== GNU/Linux, Dépôts ==

* GNU/Linux, Dépôts (logiciels)
:[http://apt-get.org/ Unofficial APT repositories]
:[http://sourceforge.net/ SourceForge.net]
:[http://freshmeat.net/ freshmeat.net: Welcome to freshmeat.net]
:[http://linuxappfinder.com/ Linux App Finder]
:[http://www.gnu.org/software/ GNU - Free Software Foundation (FSF)]
:[http://www.framasoft.net/ Framasoft - Logiciels Libres]
:[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]

* GNU/Linux, Dépôts (logiciels équivalences)
:[http://wiki.linuxquestions.org/wiki/Linux_software_equivalent_to_Windows_software Linux software equivalent to Windows software - LinuxQuestions.org Wiki]
:[http://www.linuxrsp.ru/win-lin-soft/table-eng.html The table of equivalents / replacements / analogs of Windows software in Linux. ]

* GNU/Linux, Dépôts (Jeux)
:[http://www.icculus.org/lgfaq/gamelist.php Linux Gamers Game List]
::Lien mort &gt; :[http://wiki.frimouvy.org/wakka.php?wiki=JeuxLinux FriWikiWiki:JeuxLinux]
:[http://forum.hardware.fr/hardwarefr/JeuxVideo/Topic-Unik-Jeux-Linux-Quake-IV-Binaire-dispo-sujet-90039-1.htm#t0 Jeux Linux ]

== GNU/Linux, Howtos et Tutos ==

* GNU/Linux, Howtos et trucs
:[http://www.linux-tips.net/ Linux Minis HowTo]
:[http://www.brunolinux.com/ Tips for Linux Explorers]
:[http://forum.zebulon.fr/index.php?showtopic=17977 Zebulon.fr - Quelques liens pour débuter sous linux]
:[http://beronono.com/wiki-debian/index.php?title=Accueil Le Wiki de forum.debian-fr.org]
:[http://tldp.org/ The Linux Documentation Project]
:[http://jp.barralis.com/linux-man/ Projet de traduction des &quot;man&quot; en français]

* GNU/Linux, Howtos et trucs sur le bash
:[http://www.ukuug.org/events/linux2003/papers/bash_tips/ Bash Tips &amp; Tricks]
:[http://www.cavecanen.org/linux/bashtips.php Pedro's web stuff]
::Lien mort &gt; :[http://enterprise.linux.com/enterprise/04/11/16/1753219.shtml?tid=47&amp;tid=89 Linux.com | CLI Magic: Colorize your prompt]
 
* GNU/Linux, Tutos, Guide de l'utilisateur
:[http://www.delafond.org/survielinux/ Guide de Survie du Débutant sous Linux]
::Lien mort &gt; :[http://www.icon.co.za/~psheer/book/index.html.gz Rute User's Tutorial and Exposition]
::Lien mort &gt; :[http://www.comptechdoc.org/os/linux/usersguide/index.html Linux User's Guide]
:[http://www.linux-tutorial.info/ Linux Knowledge Base and Tutorial]
 
* GNU/Linux, Programmation
::Lien mort &gt; :[http://howtos.linux.com/guides/abs-guide/index.shtml Linux.com - Advanced Bash-Scripting Guide]
:[http://linuxreviews.org/beginner/abs-guide/ Advanced Bash-Scripting Guide]
:[http://www.freeos.com/guides/lsst/ Linux Shell Scripting Tutorial - A Beginner s handbook]
:[http://www.tuxfiles.org/linuxhelp/cli.html tuXfiles - Linux command line tutorials for newbies]
 
* GNU/Linux, Applications : Gnome
:[http://www.gnome.org/ GNOME: The Free Software Desktop Project]
:[http://www.gnomefr.org/ GNOME-FR (Pays Francophones)]
:[http://www.gnu.org/software/ Software - GNU Project - Free Software Foundation (FSF)]
:[http://www.gnomedesktop.org/ FootNotes | GNOME Desktop News]
:[http://www.gnomejournal.org/ The GNOME Journal]
:[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]
:[http://art.gnome.org/ GNOME Art - Artwork &amp; Themes]
:[http://www.gnome-look.org/ GNOME-Look.org]

== Free Software et Open Source ==

* GNU/Linux, Free Software et Open Source
:[http://www.framasoft.net/ Framasoft - Logiciels Libres]
:[http://en.wikipedia.org/wiki/Portal:Free_software - Portal:Free software - Wikipedia, the free encyclopedia]
:[http://www.fsfeurope.org/index.fr.html FSF Europe - Free Software Foundation Europe]
:[http://solutions.journaldunet.com/dossiers/libre/sommaire.shtml JDN - Dossier Logiciels libres/Open Source]
:[http://www.logiciellibre.net/ LogicielLibre.Net - Premiere ressource francophone sur l'economie des logiciels libres / Open Source]
:[http://www.progilibre.com/ Progilibre.com | La communauté des applications professionnelles en open source]
:[http://www.aful.org/ AFUL]
:[http://www.generation-libre.com/ Generation Libre]
:[http://lelogiciellibre.net/ Le Logiciel Libre : découvrir, télécharger des logiciels libres]
:[http://www.jesuislibre.org/ Je Suis Libre]
:[http://www.openstickers.com/ Open source &quot;goodies&quot;]

* GNU/Linux, Open Source : Formats, Brevets, DRM et Cie
:[http://formats-ouverts.org/ Pour les formats ouverts !]
::Lien mort &gt; :[http://swpat.ffii.org/vreji/pikta/index.fr.html Musé d'Horreurs des Brevets Logiciels Européens]
:[http://stopdrm.info/ StopDRM!]

* GNU/Linux, Free Software et Open Source : Définitions
:[http://www.gnu.org/philosophy/free-sw.fr.html Qu'est-ce qu'un «Logiciel Libre»?]
:[http://www.fsfeurope.org/documents/freesoftware.fr.html FSF Europe - Qu'est-ce que le Logiciel Libre ?]
:[http://fr.wikipedia.org/wiki/Logiciel_libre Logiciel libre - Wikipédia]
:[http://www.livretdulibre.org/ Livret du Libre]
:[http://solutions.journaldunet.com/0605/060517-qr-terminologie-open-source.shtml La terminologie de l'Open Source en 7 questions]

--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 06:28 (UTC)

[[Catégorie:Documentation externe]]</text>
      <sha1>7f5b8q2ykayo0hcqb6w28v9oscoifcx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1194</id>
      <parentid>1192</parentid>
      <timestamp>2010-03-29T07:02:23Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Divers */</comment>
      <text xml:space="preserve" bytes="9975">{{Ébauche|es liens concernant GNU/Linus, la Free Software et l'Open Source}}

Sur cette page sont centralisés tous les liens concernant GNU/Linus, la Free Software et l'Open Source !

== Divers ==

* Recherche ciblée GNU/Linux sur Google :
:[http://www.google.fr/linux Recherche Google ciblée GNU/Linux]
:[http://www.google.com/cse/home?cx=003036737311975801323:yeiooiloi7c Recherche sur forum.debian-fr.org] ou [http://www.google.com/cse/home?cx=003880180303252368328:fw-yrta3-zw Recherche sur forum.debian-fr.org]
:[http://www.google.com/cse/home?cx=015801379623395497354:gw8g39yyvum&amp;hl=fr Recherche ciblée Debian]
:[http://www.google.fr/cse/home?cx=009677488958975547791:vzjkzembgbc Recherche Debian &amp; Ubuntu]

* GNU/Linux, généralités :
:[http://www.trustonme.net/ Trustonme]
:[http://lea-linux.org/ Léa / GNU/Linux]
:[http://www.linuxfrench.net/ LinuxFrench.Net]
:[http://linuxreviews.org/ Linux Reviews]

* GNU/Linux, distributions :
:[http://distrowatch.com/ DistroWatch.com: Put the fun back into computing. Use Linux, BSD.]
:[http://www.frozentech.com/content/livecd.php The LiveCD List]

== Debian ==

* GNU/Linux, distributions Debian (en anglais)
:[http://www.debian.org/ Debian]
:[http://wiki.debian.org/ Debian Wiki]
:[http://www.debian-administration.org/ Debian GNU-Linux System Administration Resources]
:[http://www.debian.org/doc/ Debian Documentation]
:[http://www.debian.org/doc/user-manuals Debian Users Manuals]
:[http://www.debian.org/doc/manuals/debian-faq/index.en.html The Debian GNU/Linux FAQ]
::Lien mort &gt; :[http://cafecomputer.com/guide/users-guide.en.html Debian Desktop User's Guide]
:[http://www.togaware.com/linux/survivor/ Debian GNU/Linux Desktop Survival Guide]
:[http://qref.sourceforge.net/ Debian Reference]
:[http://www.debian.org/distrib/packages#search_packages Debian Packages]

* GNU/Linux, distributions Debian (en français)
:[http://www.debian.org/index.fr.html Debian Le système d'exploitation universel]
:[http://www.debian-fr.org/ Debian]
:[http://forum.debian-fr.org/ Debian - Forum]
:[http://debianworld.org/ Debianworld.org]
:[http://planet-fr.debian.net/ Planet Debian-FR]
:[http://www.debian.org/doc/manuals/debian-faq/index.fr.html La FAQ Debian GNU/Linux]
:[http://www.michauko.org/docs/debian_testing/index.html Dossier d'installation Debian testing]
:[http://formation-debian.via.ecp.fr/ Formation Debian GNU/Linux]
::Lien mort &gt; :[http://qref.sourceforge.net/Debian/reference/reference.fr.html Guide de référence pour Debian]
:[http://www.debian.org/distrib/packages.fr.html#search_packages Debian Paquets]

* GNU/Linux, distributions Debian (Howto's)
::Lien mort &gt; :[http://wiki.serios.net/wiki/Debian_Java_JRE/JDK_installation Debian Java JRE/JDK installation - SeriosWiki]

* GNU/Linux, distributions Debian : Howto Nvidia
::Lien Déplacé &gt; :[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.txt Simple instructions on how to install nVidia drivers for X11 on Debian]
:[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.html Simple instructions on how to install nVidia drivers for X11 on Debian]
::Lien mort &gt; :[http://home.comcast.net/~andrex/Debian-nVidia/index.html Debian-nVidia HOWTO]
:[http://www.linux-wizard.net/howto.php?section=3&amp;key=nvidia#agp Debian - HowTo - Nvidia]

* GNU/Linux, distributions Debian : Howto Matériel
:[http://kmuto.jp/debian/hcl/ Vérifiez la compatibilité de votre matériel]
:[http://www.ibiblio.org/pub/linux/docs/HOWTO/translations/fr/html-1page/Webcam-HOWTO.html Guide pratique des webcams]
:[http://mxhaard.free.fr/download.html Pilotes Webcam]
:[http://www.linux-usb.org/USB-guide/book1.html Usb sous Linux]
:[http://fr.tldp.org/HOWTO/lecture/Hardware-HOWTO.html liste de l'ensemble du matériel réputé compatible ou non avec Linux]
:[http://fasterdata.es.net/TCP-tuning//linux.html Linux TCP Tuning]

== Autres Distributions Linux ==

* GNU/Linux - Sidux
:[http://sidux.com/ Site de Sidux - en Anglais]
:[http://manual.sidux.com/fr/welcome-fr.htm Manuel de Sidux en français]

* GNU/Linux - Ubuntu (en anglais)
:[http://www.ubuntulinux.org/ Ubuntu]
:[http://www.ubuntuforums.org/ Ubuntu Official Community &amp; Forums]
:[http://www.ubuntuguide.org/ Unofficial Ubuntu Starter Guide]
:[http://packages.ubuntu.com/ Ubuntu packages]

* GNU/Linux - Ubuntu (en français)
:[http://www.ubuntu-fr.org/ Ubuntu-fr.org]
:[http://forum.ubuntu-fr.org/ Ubuntu-fr.org Forum]
:[http://yekubuntu.free.fr/index.php yeK-Ubuntu]
 
* GNU/Linux - Arch
:[http://archlinuxfr.org/ Arch Linux [FR]
:[http://www.archlinux.org/ Arch Linux [EN]

* GNU/Linux - Mandriva
:[http://www.mandrivalinux.com/en-us/ Mandriva Linux]
:[http://distrowatch.com/table.php?distribution=mandrake DistroWatch.com: Mandriva Linux]
:[http://mandrivausers.org/ MandrakeUsers]
:[http://rpm.pbone.net/ RPM pbone.net]
 
* GNU/Linux - OpenSUSE
:[http://www.opensuse.org/ OpenSUSE]

== GNU/Linux, Dépôts ==

* GNU/Linux, Dépôts (logiciels)
:[http://apt-get.org/ Unofficial APT repositories]
:[http://sourceforge.net/ SourceForge.net]
:[http://freshmeat.net/ freshmeat.net: Welcome to freshmeat.net]
:[http://linuxappfinder.com/ Linux App Finder]
:[http://www.gnu.org/software/ GNU - Free Software Foundation (FSF)]
:[http://www.framasoft.net/ Framasoft - Logiciels Libres]
:[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]

* GNU/Linux, Dépôts (logiciels équivalences)
:[http://wiki.linuxquestions.org/wiki/Linux_software_equivalent_to_Windows_software Linux software equivalent to Windows software - LinuxQuestions.org Wiki]
:[http://www.linuxrsp.ru/win-lin-soft/table-eng.html The table of equivalents / replacements / analogs of Windows software in Linux. ]

* GNU/Linux, Dépôts (Jeux)
:[http://www.icculus.org/lgfaq/gamelist.php Linux Gamers Game List]
::Lien mort &gt; :[http://wiki.frimouvy.org/wakka.php?wiki=JeuxLinux FriWikiWiki:JeuxLinux]
:[http://forum.hardware.fr/hardwarefr/JeuxVideo/Topic-Unik-Jeux-Linux-Quake-IV-Binaire-dispo-sujet-90039-1.htm#t0 Jeux Linux ]

== GNU/Linux, Howtos et Tutos ==

* GNU/Linux, Howtos et trucs
:[http://www.linux-tips.net/ Linux Minis HowTo]
:[http://www.brunolinux.com/ Tips for Linux Explorers]
:[http://forum.zebulon.fr/index.php?showtopic=17977 Zebulon.fr - Quelques liens pour débuter sous linux]
:[http://beronono.com/wiki-debian/index.php?title=Accueil Le Wiki de forum.debian-fr.org]
:[http://tldp.org/ The Linux Documentation Project]
:[http://jp.barralis.com/linux-man/ Projet de traduction des &quot;man&quot; en français]

* GNU/Linux, Howtos et trucs sur le bash
:[http://www.ukuug.org/events/linux2003/papers/bash_tips/ Bash Tips &amp; Tricks]
:[http://www.cavecanen.org/linux/bashtips.php Pedro's web stuff]
::Lien mort &gt; :[http://enterprise.linux.com/enterprise/04/11/16/1753219.shtml?tid=47&amp;tid=89 Linux.com | CLI Magic: Colorize your prompt]
 
* GNU/Linux, Tutos, Guide de l'utilisateur
:[http://www.delafond.org/survielinux/ Guide de Survie du Débutant sous Linux]
::Lien mort &gt; :[http://www.icon.co.za/~psheer/book/index.html.gz Rute User's Tutorial and Exposition]
::Lien mort &gt; :[http://www.comptechdoc.org/os/linux/usersguide/index.html Linux User's Guide]
:[http://www.linux-tutorial.info/ Linux Knowledge Base and Tutorial]
 
* GNU/Linux, Programmation
::Lien mort &gt; :[http://howtos.linux.com/guides/abs-guide/index.shtml Linux.com - Advanced Bash-Scripting Guide]
:[http://linuxreviews.org/beginner/abs-guide/ Advanced Bash-Scripting Guide]
:[http://www.freeos.com/guides/lsst/ Linux Shell Scripting Tutorial - A Beginner s handbook]
:[http://www.tuxfiles.org/linuxhelp/cli.html tuXfiles - Linux command line tutorials for newbies]
 
* GNU/Linux, Applications : Gnome
:[http://www.gnome.org/ GNOME: The Free Software Desktop Project]
:[http://www.gnomefr.org/ GNOME-FR (Pays Francophones)]
:[http://www.gnu.org/software/ Software - GNU Project - Free Software Foundation (FSF)]
:[http://www.gnomedesktop.org/ FootNotes | GNOME Desktop News]
:[http://www.gnomejournal.org/ The GNOME Journal]
:[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]
:[http://art.gnome.org/ GNOME Art - Artwork &amp; Themes]
:[http://www.gnome-look.org/ GNOME-Look.org]

== Free Software et Open Source ==

* GNU/Linux, Free Software et Open Source
:[http://www.framasoft.net/ Framasoft - Logiciels Libres]
:[http://en.wikipedia.org/wiki/Portal:Free_software - Portal:Free software - Wikipedia, the free encyclopedia]
:[http://www.fsfeurope.org/index.fr.html FSF Europe - Free Software Foundation Europe]
:[http://solutions.journaldunet.com/dossiers/libre/sommaire.shtml JDN - Dossier Logiciels libres/Open Source]
:[http://www.logiciellibre.net/ LogicielLibre.Net - Premiere ressource francophone sur l'economie des logiciels libres / Open Source]
:[http://www.progilibre.com/ Progilibre.com | La communauté des applications professionnelles en open source]
:[http://www.aful.org/ AFUL]
:[http://www.generation-libre.com/ Generation Libre]
:[http://lelogiciellibre.net/ Le Logiciel Libre : découvrir, télécharger des logiciels libres]
:[http://www.jesuislibre.org/ Je Suis Libre]
:[http://www.openstickers.com/ Open source &quot;goodies&quot;]

* GNU/Linux, Open Source : Formats, Brevets, DRM et Cie
:[http://formats-ouverts.org/ Pour les formats ouverts !]
::Lien mort &gt; :[http://swpat.ffii.org/vreji/pikta/index.fr.html Musé d'Horreurs des Brevets Logiciels Européens]
:[http://stopdrm.info/ StopDRM!]

* GNU/Linux, Free Software et Open Source : Définitions
:[http://www.gnu.org/philosophy/free-sw.fr.html Qu'est-ce qu'un «Logiciel Libre»?]
:[http://www.fsfeurope.org/documents/freesoftware.fr.html FSF Europe - Qu'est-ce que le Logiciel Libre ?]
:[http://fr.wikipedia.org/wiki/Logiciel_libre Logiciel libre - Wikipédia]
:[http://www.livretdulibre.org/ Livret du Libre]
:[http://solutions.journaldunet.com/0605/060517-qr-terminologie-open-source.shtml La terminologie de l'Open Source en 7 questions]

--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 06:28 (UTC)

[[Catégorie:Documentation externe]]</text>
      <sha1>ohrhyaxqbpw37725yp2ja4ljl4a7ugh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1195</id>
      <parentid>1194</parentid>
      <timestamp>2010-03-29T07:11:03Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Divers */</comment>
      <text xml:space="preserve" bytes="10095">{{Ébauche|es liens concernant GNU/Linus, la Free Software et l'Open Source}}

Sur cette page sont centralisés tous les liens concernant GNU/Linus, la Free Software et l'Open Source !

== Divers ==

* Recherche ciblée GNU/Linux sur Google :
:[http://www.google.fr/linux Recherche Google ciblée GNU/Linux]
:[http://www.google.com/cse/home?cx=003036737311975801323:yeiooiloi7c Recherche sur forum.debian-fr.org] ou [http://www.google.com/cse/home?cx=003880180303252368328:fw-yrta3-zw Recherche sur forum.debian-fr.org]
:[http://www.google.com/cse/home?cx=015801379623395497354:gw8g39yyvum&amp;hl=fr Recherche ciblée Debian]
:[http://www.google.fr/cse/home?cx=009677488958975547791:vzjkzembgbc Recherche Debian &amp; Ubuntu]

* GNU/Linux, généralités :
:[http://www.trustonme.net/ Trustonme - Site d'entraide orienté Linux et logiciels libres]
:[http://lea-linux.org/ Léa-Linux - Site d’aide collaboratif pour le système d’exploitation GNU/Linux]
:[http://www.linuxfrench.net/ LinuxFrench.Net]
:[http://linuxreviews.org/ Linux Reviews]

* GNU/Linux, distributions :
:[http://distrowatch.com/ DistroWatch.com: Put the fun back into computing. Use Linux, BSD.]
:[http://www.frozentech.com/content/livecd.php The LiveCD List]

== Debian ==

* GNU/Linux, distributions Debian (en anglais)
:[http://www.debian.org/ Debian]
:[http://wiki.debian.org/ Debian Wiki]
:[http://www.debian-administration.org/ Debian GNU-Linux System Administration Resources]
:[http://www.debian.org/doc/ Debian Documentation]
:[http://www.debian.org/doc/user-manuals Debian Users Manuals]
:[http://www.debian.org/doc/manuals/debian-faq/index.en.html The Debian GNU/Linux FAQ]
::Lien mort &gt; :[http://cafecomputer.com/guide/users-guide.en.html Debian Desktop User's Guide]
:[http://www.togaware.com/linux/survivor/ Debian GNU/Linux Desktop Survival Guide]
:[http://qref.sourceforge.net/ Debian Reference]
:[http://www.debian.org/distrib/packages#search_packages Debian Packages]

* GNU/Linux, distributions Debian (en français)
:[http://www.debian.org/index.fr.html Debian Le système d'exploitation universel]
:[http://www.debian-fr.org/ Debian]
:[http://forum.debian-fr.org/ Debian - Forum]
:[http://debianworld.org/ Debianworld.org]
:[http://planet-fr.debian.net/ Planet Debian-FR]
:[http://www.debian.org/doc/manuals/debian-faq/index.fr.html La FAQ Debian GNU/Linux]
:[http://www.michauko.org/docs/debian_testing/index.html Dossier d'installation Debian testing]
:[http://formation-debian.via.ecp.fr/ Formation Debian GNU/Linux]
::Lien mort &gt; :[http://qref.sourceforge.net/Debian/reference/reference.fr.html Guide de référence pour Debian]
:[http://www.debian.org/distrib/packages.fr.html#search_packages Debian Paquets]

* GNU/Linux, distributions Debian (Howto's)
::Lien mort &gt; :[http://wiki.serios.net/wiki/Debian_Java_JRE/JDK_installation Debian Java JRE/JDK installation - SeriosWiki]

* GNU/Linux, distributions Debian : Howto Nvidia
::Lien Déplacé &gt; :[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.txt Simple instructions on how to install nVidia drivers for X11 on Debian]
:[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.html Simple instructions on how to install nVidia drivers for X11 on Debian]
::Lien mort &gt; :[http://home.comcast.net/~andrex/Debian-nVidia/index.html Debian-nVidia HOWTO]
:[http://www.linux-wizard.net/howto.php?section=3&amp;key=nvidia#agp Debian - HowTo - Nvidia]

* GNU/Linux, distributions Debian : Howto Matériel
:[http://kmuto.jp/debian/hcl/ Vérifiez la compatibilité de votre matériel]
:[http://www.ibiblio.org/pub/linux/docs/HOWTO/translations/fr/html-1page/Webcam-HOWTO.html Guide pratique des webcams]
:[http://mxhaard.free.fr/download.html Pilotes Webcam]
:[http://www.linux-usb.org/USB-guide/book1.html Usb sous Linux]
:[http://fr.tldp.org/HOWTO/lecture/Hardware-HOWTO.html liste de l'ensemble du matériel réputé compatible ou non avec Linux]
:[http://fasterdata.es.net/TCP-tuning//linux.html Linux TCP Tuning]

== Autres Distributions Linux ==

* GNU/Linux - Sidux
:[http://sidux.com/ Site de Sidux - en Anglais]
:[http://manual.sidux.com/fr/welcome-fr.htm Manuel de Sidux en français]

* GNU/Linux - Ubuntu (en anglais)
:[http://www.ubuntulinux.org/ Ubuntu]
:[http://www.ubuntuforums.org/ Ubuntu Official Community &amp; Forums]
:[http://www.ubuntuguide.org/ Unofficial Ubuntu Starter Guide]
:[http://packages.ubuntu.com/ Ubuntu packages]

* GNU/Linux - Ubuntu (en français)
:[http://www.ubuntu-fr.org/ Ubuntu-fr.org]
:[http://forum.ubuntu-fr.org/ Ubuntu-fr.org Forum]
:[http://yekubuntu.free.fr/index.php yeK-Ubuntu]
 
* GNU/Linux - Arch
:[http://archlinuxfr.org/ Arch Linux [FR]
:[http://www.archlinux.org/ Arch Linux [EN]

* GNU/Linux - Mandriva
:[http://www.mandrivalinux.com/en-us/ Mandriva Linux]
:[http://distrowatch.com/table.php?distribution=mandrake DistroWatch.com: Mandriva Linux]
:[http://mandrivausers.org/ MandrakeUsers]
:[http://rpm.pbone.net/ RPM pbone.net]
 
* GNU/Linux - OpenSUSE
:[http://www.opensuse.org/ OpenSUSE]

== GNU/Linux, Dépôts ==

* GNU/Linux, Dépôts (logiciels)
:[http://apt-get.org/ Unofficial APT repositories]
:[http://sourceforge.net/ SourceForge.net]
:[http://freshmeat.net/ freshmeat.net: Welcome to freshmeat.net]
:[http://linuxappfinder.com/ Linux App Finder]
:[http://www.gnu.org/software/ GNU - Free Software Foundation (FSF)]
:[http://www.framasoft.net/ Framasoft - Logiciels Libres]
:[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]

* GNU/Linux, Dépôts (logiciels équivalences)
:[http://wiki.linuxquestions.org/wiki/Linux_software_equivalent_to_Windows_software Linux software equivalent to Windows software - LinuxQuestions.org Wiki]
:[http://www.linuxrsp.ru/win-lin-soft/table-eng.html The table of equivalents / replacements / analogs of Windows software in Linux. ]

* GNU/Linux, Dépôts (Jeux)
:[http://www.icculus.org/lgfaq/gamelist.php Linux Gamers Game List]
::Lien mort &gt; :[http://wiki.frimouvy.org/wakka.php?wiki=JeuxLinux FriWikiWiki:JeuxLinux]
:[http://forum.hardware.fr/hardwarefr/JeuxVideo/Topic-Unik-Jeux-Linux-Quake-IV-Binaire-dispo-sujet-90039-1.htm#t0 Jeux Linux ]

== GNU/Linux, Howtos et Tutos ==

* GNU/Linux, Howtos et trucs
:[http://www.linux-tips.net/ Linux Minis HowTo]
:[http://www.brunolinux.com/ Tips for Linux Explorers]
:[http://forum.zebulon.fr/index.php?showtopic=17977 Zebulon.fr - Quelques liens pour débuter sous linux]
:[http://beronono.com/wiki-debian/index.php?title=Accueil Le Wiki de forum.debian-fr.org]
:[http://tldp.org/ The Linux Documentation Project]
:[http://jp.barralis.com/linux-man/ Projet de traduction des &quot;man&quot; en français]

* GNU/Linux, Howtos et trucs sur le bash
:[http://www.ukuug.org/events/linux2003/papers/bash_tips/ Bash Tips &amp; Tricks]
:[http://www.cavecanen.org/linux/bashtips.php Pedro's web stuff]
::Lien mort &gt; :[http://enterprise.linux.com/enterprise/04/11/16/1753219.shtml?tid=47&amp;tid=89 Linux.com | CLI Magic: Colorize your prompt]
 
* GNU/Linux, Tutos, Guide de l'utilisateur
:[http://www.delafond.org/survielinux/ Guide de Survie du Débutant sous Linux]
::Lien mort &gt; :[http://www.icon.co.za/~psheer/book/index.html.gz Rute User's Tutorial and Exposition]
::Lien mort &gt; :[http://www.comptechdoc.org/os/linux/usersguide/index.html Linux User's Guide]
:[http://www.linux-tutorial.info/ Linux Knowledge Base and Tutorial]
 
* GNU/Linux, Programmation
::Lien mort &gt; :[http://howtos.linux.com/guides/abs-guide/index.shtml Linux.com - Advanced Bash-Scripting Guide]
:[http://linuxreviews.org/beginner/abs-guide/ Advanced Bash-Scripting Guide]
:[http://www.freeos.com/guides/lsst/ Linux Shell Scripting Tutorial - A Beginner s handbook]
:[http://www.tuxfiles.org/linuxhelp/cli.html tuXfiles - Linux command line tutorials for newbies]
 
* GNU/Linux, Applications : Gnome
:[http://www.gnome.org/ GNOME: The Free Software Desktop Project]
:[http://www.gnomefr.org/ GNOME-FR (Pays Francophones)]
:[http://www.gnu.org/software/ Software - GNU Project - Free Software Foundation (FSF)]
:[http://www.gnomedesktop.org/ FootNotes | GNOME Desktop News]
:[http://www.gnomejournal.org/ The GNOME Journal]
:[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]
:[http://art.gnome.org/ GNOME Art - Artwork &amp; Themes]
:[http://www.gnome-look.org/ GNOME-Look.org]

== Free Software et Open Source ==

* GNU/Linux, Free Software et Open Source
:[http://www.framasoft.net/ Framasoft - Logiciels Libres]
:[http://en.wikipedia.org/wiki/Portal:Free_software - Portal:Free software - Wikipedia, the free encyclopedia]
:[http://www.fsfeurope.org/index.fr.html FSF Europe - Free Software Foundation Europe]
:[http://solutions.journaldunet.com/dossiers/libre/sommaire.shtml JDN - Dossier Logiciels libres/Open Source]
:[http://www.logiciellibre.net/ LogicielLibre.Net - Premiere ressource francophone sur l'economie des logiciels libres / Open Source]
:[http://www.progilibre.com/ Progilibre.com | La communauté des applications professionnelles en open source]
:[http://www.aful.org/ AFUL]
:[http://www.generation-libre.com/ Generation Libre]
:[http://lelogiciellibre.net/ Le Logiciel Libre : découvrir, télécharger des logiciels libres]
:[http://www.jesuislibre.org/ Je Suis Libre]
:[http://www.openstickers.com/ Open source &quot;goodies&quot;]

* GNU/Linux, Open Source : Formats, Brevets, DRM et Cie
:[http://formats-ouverts.org/ Pour les formats ouverts !]
::Lien mort &gt; :[http://swpat.ffii.org/vreji/pikta/index.fr.html Musé d'Horreurs des Brevets Logiciels Européens]
:[http://stopdrm.info/ StopDRM!]

* GNU/Linux, Free Software et Open Source : Définitions
:[http://www.gnu.org/philosophy/free-sw.fr.html Qu'est-ce qu'un «Logiciel Libre»?]
:[http://www.fsfeurope.org/documents/freesoftware.fr.html FSF Europe - Qu'est-ce que le Logiciel Libre ?]
:[http://fr.wikipedia.org/wiki/Logiciel_libre Logiciel libre - Wikipédia]
:[http://www.livretdulibre.org/ Livret du Libre]
:[http://solutions.journaldunet.com/0605/060517-qr-terminologie-open-source.shtml La terminologie de l'Open Source en 7 questions]

--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 06:28 (UTC)

[[Catégorie:Documentation externe]]</text>
      <sha1>06q74b6t1otby8aj9ezjlv6azu3q9ii</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1196</id>
      <parentid>1195</parentid>
      <timestamp>2010-03-29T08:27:06Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Debian */</comment>
      <text xml:space="preserve" bytes="10219">{{Ébauche|es liens concernant GNU/Linus, la Free Software et l'Open Source}}

Sur cette page sont centralisés tous les liens concernant GNU/Linus, la Free Software et l'Open Source !

== Divers ==

* Recherche ciblée GNU/Linux sur Google :
:[http://www.google.fr/linux Recherche Google ciblée GNU/Linux]
:[http://www.google.com/cse/home?cx=003036737311975801323:yeiooiloi7c Recherche sur forum.debian-fr.org] ou [http://www.google.com/cse/home?cx=003880180303252368328:fw-yrta3-zw Recherche sur forum.debian-fr.org]
:[http://www.google.com/cse/home?cx=015801379623395497354:gw8g39yyvum&amp;hl=fr Recherche ciblée Debian]
:[http://www.google.fr/cse/home?cx=009677488958975547791:vzjkzembgbc Recherche Debian &amp; Ubuntu]

* GNU/Linux, généralités :
:[http://www.trustonme.net/ Trustonme - Site d'entraide orienté Linux et logiciels libres]
:[http://lea-linux.org/ Léa-Linux - Site d’aide collaboratif pour le système d’exploitation GNU/Linux]
:[http://www.linuxfrench.net/ LinuxFrench.Net]
:[http://linuxreviews.org/ Linux Reviews]

* GNU/Linux, distributions :
:[http://distrowatch.com/ DistroWatch.com: Put the fun back into computing. Use Linux, BSD.]
:[http://www.frozentech.com/content/livecd.php The LiveCD List]

== Debian ==

* GNU/Linux, distributions Debian (en anglais)
:[http://www.debian.org/ Debian]
:[http://wiki.debian.org/ Debian Wiki]
:[http://www.debian-administration.org/ Debian GNU-Linux System Administration Resources]
:[http://www.debian.org/doc/ Debian Documentation]
:[http://www.debian.org/doc/user-manuals Debian Users Manuals]
:[http://www.debian.org/doc/manuals/debian-faq/index.en.html The Debian GNU/Linux FAQ]
::Lien mort &gt; :[http://cafecomputer.com/guide/users-guide.en.html Debian Desktop User's Guide]
:[http://www.togaware.com/linux/survivor/ Debian GNU/Linux Desktop Survival Guide]
:[http://qref.sourceforge.net/ Guide de référence Debian]
:[http://www.debian.org/distrib/packages#search_packages Rechercher un paquet Debian]

* GNU/Linux, distributions Debian (en français)
:[http://www.debian.org/index.fr.html Debian Le système d'exploitation universel]
::Lien qui renvoi sur forum.debian-fr.org &gt; :[http://www.debian-fr.org/ Debian]
:[http://forum.debian-fr.org/ &quot;LE&quot; &quot;forum.debian-fr.org&quot;]
:[http://debianworld.org/ Debianworld.org encore un site sur Debian !]
:[http://planet-fr.debian.net/ Planet Debian-FR]
:[http://www.debian.org/doc/manuals/debian-faq/index.fr.html La FAQ Debian GNU/Linux]
:[http://www.michauko.org/docs/debian_testing/index.html Dossier d'installation Debian testing]
:[http://formation-debian.via.ecp.fr/ Formation Debian GNU/Linux]
::Lien mort &gt; :[http://qref.sourceforge.net/Debian/reference/reference.fr.html Guide de référence pour Debian]
::Lien doublon &gt; :[http://www.debian.org/distrib/packages.fr.html#search_packages Debian Paquets]

* GNU/Linux, distributions Debian (Howto's)
::Lien mort &gt; :[http://wiki.serios.net/wiki/Debian_Java_JRE/JDK_installation Debian Java JRE/JDK installation - SeriosWiki]

* GNU/Linux, distributions Debian : Howto Nvidia
::Lien Déplacé &gt; :[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.txt Simple instructions on how to install nVidia drivers for X11 on Debian]
:[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.html Simple instructions on how to install nVidia drivers for X11 on Debian]
::Lien mort &gt; :[http://home.comcast.net/~andrex/Debian-nVidia/index.html Debian-nVidia HOWTO]
:[http://www.linux-wizard.net/howto.php?section=3&amp;key=nvidia#agp Debian - HowTo - Nvidia]

* GNU/Linux, distributions Debian : Howto Matériel
:[http://kmuto.jp/debian/hcl/ Vérifiez la compatibilité de votre matériel]
:[http://www.ibiblio.org/pub/linux/docs/HOWTO/translations/fr/html-1page/Webcam-HOWTO.html Guide pratique des webcams]
:[http://mxhaard.free.fr/download.html Pilotes Webcam]
:[http://www.linux-usb.org/USB-guide/book1.html Usb sous Linux]
:[http://fr.tldp.org/HOWTO/lecture/Hardware-HOWTO.html liste de l'ensemble du matériel réputé compatible ou non avec Linux]
:[http://fasterdata.es.net/TCP-tuning//linux.html Linux TCP Tuning]

== Autres Distributions Linux ==

* GNU/Linux - Sidux
:[http://sidux.com/ Site de Sidux - en Anglais]
:[http://manual.sidux.com/fr/welcome-fr.htm Manuel de Sidux en français]

* GNU/Linux - Ubuntu (en anglais)
:[http://www.ubuntulinux.org/ Ubuntu]
:[http://www.ubuntuforums.org/ Ubuntu Official Community &amp; Forums]
:[http://www.ubuntuguide.org/ Unofficial Ubuntu Starter Guide]
:[http://packages.ubuntu.com/ Ubuntu packages]

* GNU/Linux - Ubuntu (en français)
:[http://www.ubuntu-fr.org/ Ubuntu-fr.org]
:[http://forum.ubuntu-fr.org/ Ubuntu-fr.org Forum]
:[http://yekubuntu.free.fr/index.php yeK-Ubuntu]
 
* GNU/Linux - Arch
:[http://archlinuxfr.org/ Arch Linux [FR]
:[http://www.archlinux.org/ Arch Linux [EN]

* GNU/Linux - Mandriva
:[http://www.mandrivalinux.com/en-us/ Mandriva Linux]
:[http://distrowatch.com/table.php?distribution=mandrake DistroWatch.com: Mandriva Linux]
:[http://mandrivausers.org/ MandrakeUsers]
:[http://rpm.pbone.net/ RPM pbone.net]
 
* GNU/Linux - OpenSUSE
:[http://www.opensuse.org/ OpenSUSE]

== GNU/Linux, Dépôts ==

* GNU/Linux, Dépôts (logiciels)
:[http://apt-get.org/ Unofficial APT repositories]
:[http://sourceforge.net/ SourceForge.net]
:[http://freshmeat.net/ freshmeat.net: Welcome to freshmeat.net]
:[http://linuxappfinder.com/ Linux App Finder]
:[http://www.gnu.org/software/ GNU - Free Software Foundation (FSF)]
:[http://www.framasoft.net/ Framasoft - Logiciels Libres]
:[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]

* GNU/Linux, Dépôts (logiciels équivalences)
:[http://wiki.linuxquestions.org/wiki/Linux_software_equivalent_to_Windows_software Linux software equivalent to Windows software - LinuxQuestions.org Wiki]
:[http://www.linuxrsp.ru/win-lin-soft/table-eng.html The table of equivalents / replacements / analogs of Windows software in Linux. ]

* GNU/Linux, Dépôts (Jeux)
:[http://www.icculus.org/lgfaq/gamelist.php Linux Gamers Game List]
::Lien mort &gt; :[http://wiki.frimouvy.org/wakka.php?wiki=JeuxLinux FriWikiWiki:JeuxLinux]
:[http://forum.hardware.fr/hardwarefr/JeuxVideo/Topic-Unik-Jeux-Linux-Quake-IV-Binaire-dispo-sujet-90039-1.htm#t0 Jeux Linux ]

== GNU/Linux, Howtos et Tutos ==

* GNU/Linux, Howtos et trucs
:[http://www.linux-tips.net/ Linux Minis HowTo]
:[http://www.brunolinux.com/ Tips for Linux Explorers]
:[http://forum.zebulon.fr/index.php?showtopic=17977 Zebulon.fr - Quelques liens pour débuter sous linux]
:[http://beronono.com/wiki-debian/index.php?title=Accueil Le Wiki de forum.debian-fr.org]
:[http://tldp.org/ The Linux Documentation Project]
:[http://jp.barralis.com/linux-man/ Projet de traduction des &quot;man&quot; en français]

* GNU/Linux, Howtos et trucs sur le bash
:[http://www.ukuug.org/events/linux2003/papers/bash_tips/ Bash Tips &amp; Tricks]
:[http://www.cavecanen.org/linux/bashtips.php Pedro's web stuff]
::Lien mort &gt; :[http://enterprise.linux.com/enterprise/04/11/16/1753219.shtml?tid=47&amp;tid=89 Linux.com | CLI Magic: Colorize your prompt]
 
* GNU/Linux, Tutos, Guide de l'utilisateur
:[http://www.delafond.org/survielinux/ Guide de Survie du Débutant sous Linux]
::Lien mort &gt; :[http://www.icon.co.za/~psheer/book/index.html.gz Rute User's Tutorial and Exposition]
::Lien mort &gt; :[http://www.comptechdoc.org/os/linux/usersguide/index.html Linux User's Guide]
:[http://www.linux-tutorial.info/ Linux Knowledge Base and Tutorial]
 
* GNU/Linux, Programmation
::Lien mort &gt; :[http://howtos.linux.com/guides/abs-guide/index.shtml Linux.com - Advanced Bash-Scripting Guide]
:[http://linuxreviews.org/beginner/abs-guide/ Advanced Bash-Scripting Guide]
:[http://www.freeos.com/guides/lsst/ Linux Shell Scripting Tutorial - A Beginner s handbook]
:[http://www.tuxfiles.org/linuxhelp/cli.html tuXfiles - Linux command line tutorials for newbies]
 
* GNU/Linux, Applications : Gnome
:[http://www.gnome.org/ GNOME: The Free Software Desktop Project]
:[http://www.gnomefr.org/ GNOME-FR (Pays Francophones)]
:[http://www.gnu.org/software/ Software - GNU Project - Free Software Foundation (FSF)]
:[http://www.gnomedesktop.org/ FootNotes | GNOME Desktop News]
:[http://www.gnomejournal.org/ The GNOME Journal]
:[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]
:[http://art.gnome.org/ GNOME Art - Artwork &amp; Themes]
:[http://www.gnome-look.org/ GNOME-Look.org]

== Free Software et Open Source ==

* GNU/Linux, Free Software et Open Source
:[http://www.framasoft.net/ Framasoft - Logiciels Libres]
:[http://en.wikipedia.org/wiki/Portal:Free_software - Portal:Free software - Wikipedia, the free encyclopedia]
:[http://www.fsfeurope.org/index.fr.html FSF Europe - Free Software Foundation Europe]
:[http://solutions.journaldunet.com/dossiers/libre/sommaire.shtml JDN - Dossier Logiciels libres/Open Source]
:[http://www.logiciellibre.net/ LogicielLibre.Net - Premiere ressource francophone sur l'economie des logiciels libres / Open Source]
:[http://www.progilibre.com/ Progilibre.com | La communauté des applications professionnelles en open source]
:[http://www.aful.org/ AFUL]
:[http://www.generation-libre.com/ Generation Libre]
:[http://lelogiciellibre.net/ Le Logiciel Libre : découvrir, télécharger des logiciels libres]
:[http://www.jesuislibre.org/ Je Suis Libre]
:[http://www.openstickers.com/ Open source &quot;goodies&quot;]

* GNU/Linux, Open Source : Formats, Brevets, DRM et Cie
:[http://formats-ouverts.org/ Pour les formats ouverts !]
::Lien mort &gt; :[http://swpat.ffii.org/vreji/pikta/index.fr.html Musé d'Horreurs des Brevets Logiciels Européens]
:[http://stopdrm.info/ StopDRM!]

* GNU/Linux, Free Software et Open Source : Définitions
:[http://www.gnu.org/philosophy/free-sw.fr.html Qu'est-ce qu'un «Logiciel Libre»?]
:[http://www.fsfeurope.org/documents/freesoftware.fr.html FSF Europe - Qu'est-ce que le Logiciel Libre ?]
:[http://fr.wikipedia.org/wiki/Logiciel_libre Logiciel libre - Wikipédia]
:[http://www.livretdulibre.org/ Livret du Libre]
:[http://solutions.journaldunet.com/0605/060517-qr-terminologie-open-source.shtml La terminologie de l'Open Source en 7 questions]

--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 06:28 (UTC)

[[Catégorie:Documentation externe]]</text>
      <sha1>aswxoukyh36k0qjmy8ydikx81239us9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1197</id>
      <parentid>1196</parentid>
      <timestamp>2010-03-29T08:36:50Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Autres Distributions Linux */</comment>
      <text xml:space="preserve" bytes="10269">{{Ébauche|es liens concernant GNU/Linus, la Free Software et l'Open Source}}

Sur cette page sont centralisés tous les liens concernant GNU/Linus, la Free Software et l'Open Source !

== Divers ==

* Recherche ciblée GNU/Linux sur Google :
:[http://www.google.fr/linux Recherche Google ciblée GNU/Linux]
:[http://www.google.com/cse/home?cx=003036737311975801323:yeiooiloi7c Recherche sur forum.debian-fr.org] ou [http://www.google.com/cse/home?cx=003880180303252368328:fw-yrta3-zw Recherche sur forum.debian-fr.org]
:[http://www.google.com/cse/home?cx=015801379623395497354:gw8g39yyvum&amp;hl=fr Recherche ciblée Debian]
:[http://www.google.fr/cse/home?cx=009677488958975547791:vzjkzembgbc Recherche Debian &amp; Ubuntu]

* GNU/Linux, généralités :
:[http://www.trustonme.net/ Trustonme - Site d'entraide orienté Linux et logiciels libres]
:[http://lea-linux.org/ Léa-Linux - Site d’aide collaboratif pour le système d’exploitation GNU/Linux]
:[http://www.linuxfrench.net/ LinuxFrench.Net]
:[http://linuxreviews.org/ Linux Reviews]

* GNU/Linux, distributions :
:[http://distrowatch.com/ DistroWatch.com: Put the fun back into computing. Use Linux, BSD.]
:[http://www.frozentech.com/content/livecd.php The LiveCD List]

== Debian ==

* GNU/Linux, distributions Debian (en anglais)
:[http://www.debian.org/ Debian]
:[http://wiki.debian.org/ Debian Wiki]
:[http://www.debian-administration.org/ Debian GNU-Linux System Administration Resources]
:[http://www.debian.org/doc/ Debian Documentation]
:[http://www.debian.org/doc/user-manuals Debian Users Manuals]
:[http://www.debian.org/doc/manuals/debian-faq/index.en.html The Debian GNU/Linux FAQ]
::Lien mort &gt; :[http://cafecomputer.com/guide/users-guide.en.html Debian Desktop User's Guide]
:[http://www.togaware.com/linux/survivor/ Debian GNU/Linux Desktop Survival Guide]
:[http://qref.sourceforge.net/ Guide de référence Debian]
:[http://www.debian.org/distrib/packages#search_packages Rechercher un paquet Debian]

* GNU/Linux, distributions Debian (en français)
:[http://www.debian.org/index.fr.html Debian Le système d'exploitation universel]
::Lien qui renvoi sur forum.debian-fr.org &gt; :[http://www.debian-fr.org/ Debian]
:[http://forum.debian-fr.org/ &quot;LE&quot; &quot;forum.debian-fr.org&quot;]
:[http://debianworld.org/ Debianworld.org encore un site sur Debian !]
:[http://planet-fr.debian.net/ Planet Debian-FR]
:[http://www.debian.org/doc/manuals/debian-faq/index.fr.html La FAQ Debian GNU/Linux]
:[http://www.michauko.org/docs/debian_testing/index.html Dossier d'installation Debian testing]
:[http://formation-debian.via.ecp.fr/ Formation Debian GNU/Linux]
::Lien mort &gt; :[http://qref.sourceforge.net/Debian/reference/reference.fr.html Guide de référence pour Debian]
::Lien doublon &gt; :[http://www.debian.org/distrib/packages.fr.html#search_packages Debian Paquets]

* GNU/Linux, distributions Debian (Howto's)
::Lien mort &gt; :[http://wiki.serios.net/wiki/Debian_Java_JRE/JDK_installation Debian Java JRE/JDK installation - SeriosWiki]

* GNU/Linux, distributions Debian : Howto Nvidia
::Lien Déplacé &gt; :[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.txt Simple instructions on how to install nVidia drivers for X11 on Debian]
:[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.html Simple instructions on how to install nVidia drivers for X11 on Debian]
::Lien mort &gt; :[http://home.comcast.net/~andrex/Debian-nVidia/index.html Debian-nVidia HOWTO]
:[http://www.linux-wizard.net/howto.php?section=3&amp;key=nvidia#agp Debian - HowTo - Nvidia]

* GNU/Linux, distributions Debian : Howto Matériel
:[http://kmuto.jp/debian/hcl/ Vérifiez la compatibilité de votre matériel]
:[http://www.ibiblio.org/pub/linux/docs/HOWTO/translations/fr/html-1page/Webcam-HOWTO.html Guide pratique des webcams]
:[http://mxhaard.free.fr/download.html Pilotes Webcam]
:[http://www.linux-usb.org/USB-guide/book1.html Usb sous Linux]
:[http://fr.tldp.org/HOWTO/lecture/Hardware-HOWTO.html liste de l'ensemble du matériel réputé compatible ou non avec Linux]
:[http://fasterdata.es.net/TCP-tuning//linux.html Linux TCP Tuning]

== Autres Distributions Linux ==

* GNU/Linux - Sidux
:[http://sidux.com/ Site de Sidux - en Anglais]
:[http://manual.sidux.com/fr/welcome-fr.htm Manuel de Sidux en français]

* GNU/Linux - Ubuntu (en anglais)
:[http://www.ubuntulinux.org/ Ubuntu]
:[http://www.ubuntuforums.org/ Ubuntu Official Community &amp; Forums]
:[http://www.ubuntuguide.org/ Unofficial Ubuntu Starter Guide]
:[http://packages.ubuntu.com/ Ubuntu packages]

* GNU/Linux - Ubuntu (en français)
:[http://www.ubuntu-fr.org/ Ubuntu-fr.org]
:[http://forum.ubuntu-fr.org/ Ubuntu-fr.org Forum]
:[http://yekubuntu.free.fr/index.php yeK-Ubuntu Ce site n'est plus maintenu depuis Ubuntu 7.10...]
 
* GNU/Linux - Arch
:[http://archlinuxfr.org/ Arch Linux [FR]
:[http://www.archlinux.org/ Arch Linux [EN]

* GNU/Linux - Mandriva
:[http://www.mandrivalinux.com/en-us/ Mandriva Linux]
:[http://distrowatch.com/table.php?distribution=mandrake DistroWatch.com: Mandriva Linux]
:[http://mandrivausers.org/ MandrakeUsers]
:[http://rpm.pbone.net/ RPM pbone.net]
 
* GNU/Linux - OpenSUSE
:[http://www.opensuse.org/ OpenSUSE]

== GNU/Linux, Dépôts ==

* GNU/Linux, Dépôts (logiciels)
:[http://apt-get.org/ Unofficial APT repositories]
:[http://sourceforge.net/ SourceForge.net]
:[http://freshmeat.net/ freshmeat.net: Welcome to freshmeat.net]
:[http://linuxappfinder.com/ Linux App Finder]
:[http://www.gnu.org/software/ GNU - Free Software Foundation (FSF)]
:[http://www.framasoft.net/ Framasoft - Logiciels Libres]
:[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]

* GNU/Linux, Dépôts (logiciels équivalences)
:[http://wiki.linuxquestions.org/wiki/Linux_software_equivalent_to_Windows_software Linux software equivalent to Windows software - LinuxQuestions.org Wiki]
:[http://www.linuxrsp.ru/win-lin-soft/table-eng.html The table of equivalents / replacements / analogs of Windows software in Linux. ]

* GNU/Linux, Dépôts (Jeux)
:[http://www.icculus.org/lgfaq/gamelist.php Linux Gamers Game List]
::Lien mort &gt; :[http://wiki.frimouvy.org/wakka.php?wiki=JeuxLinux FriWikiWiki:JeuxLinux]
:[http://forum.hardware.fr/hardwarefr/JeuxVideo/Topic-Unik-Jeux-Linux-Quake-IV-Binaire-dispo-sujet-90039-1.htm#t0 Jeux Linux ]

== GNU/Linux, Howtos et Tutos ==

* GNU/Linux, Howtos et trucs
:[http://www.linux-tips.net/ Linux Minis HowTo]
:[http://www.brunolinux.com/ Tips for Linux Explorers]
:[http://forum.zebulon.fr/index.php?showtopic=17977 Zebulon.fr - Quelques liens pour débuter sous linux]
:[http://beronono.com/wiki-debian/index.php?title=Accueil Le Wiki de forum.debian-fr.org]
:[http://tldp.org/ The Linux Documentation Project]
:[http://jp.barralis.com/linux-man/ Projet de traduction des &quot;man&quot; en français]

* GNU/Linux, Howtos et trucs sur le bash
:[http://www.ukuug.org/events/linux2003/papers/bash_tips/ Bash Tips &amp; Tricks]
:[http://www.cavecanen.org/linux/bashtips.php Pedro's web stuff]
::Lien mort &gt; :[http://enterprise.linux.com/enterprise/04/11/16/1753219.shtml?tid=47&amp;tid=89 Linux.com | CLI Magic: Colorize your prompt]
 
* GNU/Linux, Tutos, Guide de l'utilisateur
:[http://www.delafond.org/survielinux/ Guide de Survie du Débutant sous Linux]
::Lien mort &gt; :[http://www.icon.co.za/~psheer/book/index.html.gz Rute User's Tutorial and Exposition]
::Lien mort &gt; :[http://www.comptechdoc.org/os/linux/usersguide/index.html Linux User's Guide]
:[http://www.linux-tutorial.info/ Linux Knowledge Base and Tutorial]
 
* GNU/Linux, Programmation
::Lien mort &gt; :[http://howtos.linux.com/guides/abs-guide/index.shtml Linux.com - Advanced Bash-Scripting Guide]
:[http://linuxreviews.org/beginner/abs-guide/ Advanced Bash-Scripting Guide]
:[http://www.freeos.com/guides/lsst/ Linux Shell Scripting Tutorial - A Beginner s handbook]
:[http://www.tuxfiles.org/linuxhelp/cli.html tuXfiles - Linux command line tutorials for newbies]
 
* GNU/Linux, Applications : Gnome
:[http://www.gnome.org/ GNOME: The Free Software Desktop Project]
:[http://www.gnomefr.org/ GNOME-FR (Pays Francophones)]
:[http://www.gnu.org/software/ Software - GNU Project - Free Software Foundation (FSF)]
:[http://www.gnomedesktop.org/ FootNotes | GNOME Desktop News]
:[http://www.gnomejournal.org/ The GNOME Journal]
:[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]
:[http://art.gnome.org/ GNOME Art - Artwork &amp; Themes]
:[http://www.gnome-look.org/ GNOME-Look.org]

== Free Software et Open Source ==

* GNU/Linux, Free Software et Open Source
:[http://www.framasoft.net/ Framasoft - Logiciels Libres]
:[http://en.wikipedia.org/wiki/Portal:Free_software - Portal:Free software - Wikipedia, the free encyclopedia]
:[http://www.fsfeurope.org/index.fr.html FSF Europe - Free Software Foundation Europe]
:[http://solutions.journaldunet.com/dossiers/libre/sommaire.shtml JDN - Dossier Logiciels libres/Open Source]
:[http://www.logiciellibre.net/ LogicielLibre.Net - Premiere ressource francophone sur l'economie des logiciels libres / Open Source]
:[http://www.progilibre.com/ Progilibre.com | La communauté des applications professionnelles en open source]
:[http://www.aful.org/ AFUL]
:[http://www.generation-libre.com/ Generation Libre]
:[http://lelogiciellibre.net/ Le Logiciel Libre : découvrir, télécharger des logiciels libres]
:[http://www.jesuislibre.org/ Je Suis Libre]
:[http://www.openstickers.com/ Open source &quot;goodies&quot;]

* GNU/Linux, Open Source : Formats, Brevets, DRM et Cie
:[http://formats-ouverts.org/ Pour les formats ouverts !]
::Lien mort &gt; :[http://swpat.ffii.org/vreji/pikta/index.fr.html Musé d'Horreurs des Brevets Logiciels Européens]
:[http://stopdrm.info/ StopDRM!]

* GNU/Linux, Free Software et Open Source : Définitions
:[http://www.gnu.org/philosophy/free-sw.fr.html Qu'est-ce qu'un «Logiciel Libre»?]
:[http://www.fsfeurope.org/documents/freesoftware.fr.html FSF Europe - Qu'est-ce que le Logiciel Libre ?]
:[http://fr.wikipedia.org/wiki/Logiciel_libre Logiciel libre - Wikipédia]
:[http://www.livretdulibre.org/ Livret du Libre]
:[http://solutions.journaldunet.com/0605/060517-qr-terminologie-open-source.shtml La terminologie de l'Open Source en 7 questions]

--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 06:28 (UTC)

[[Catégorie:Documentation externe]]</text>
      <sha1>knpqutm31sdo1lkpuv6uk8v4lv8op07</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1198</id>
      <parentid>1197</parentid>
      <timestamp>2010-03-29T08:37:44Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Autres Distributions Linux */</comment>
      <text xml:space="preserve" bytes="10269">{{Ébauche|es liens concernant GNU/Linus, la Free Software et l'Open Source}}

Sur cette page sont centralisés tous les liens concernant GNU/Linus, la Free Software et l'Open Source !

== Divers ==

* Recherche ciblée GNU/Linux sur Google :
:[http://www.google.fr/linux Recherche Google ciblée GNU/Linux]
:[http://www.google.com/cse/home?cx=003036737311975801323:yeiooiloi7c Recherche sur forum.debian-fr.org] ou [http://www.google.com/cse/home?cx=003880180303252368328:fw-yrta3-zw Recherche sur forum.debian-fr.org]
:[http://www.google.com/cse/home?cx=015801379623395497354:gw8g39yyvum&amp;hl=fr Recherche ciblée Debian]
:[http://www.google.fr/cse/home?cx=009677488958975547791:vzjkzembgbc Recherche Debian &amp; Ubuntu]

* GNU/Linux, généralités :
:[http://www.trustonme.net/ Trustonme - Site d'entraide orienté Linux et logiciels libres]
:[http://lea-linux.org/ Léa-Linux - Site d’aide collaboratif pour le système d’exploitation GNU/Linux]
:[http://www.linuxfrench.net/ LinuxFrench.Net]
:[http://linuxreviews.org/ Linux Reviews]

* GNU/Linux, distributions :
:[http://distrowatch.com/ DistroWatch.com: Put the fun back into computing. Use Linux, BSD.]
:[http://www.frozentech.com/content/livecd.php The LiveCD List]

== Debian ==

* GNU/Linux, distributions Debian (en anglais)
:[http://www.debian.org/ Debian]
:[http://wiki.debian.org/ Debian Wiki]
:[http://www.debian-administration.org/ Debian GNU-Linux System Administration Resources]
:[http://www.debian.org/doc/ Debian Documentation]
:[http://www.debian.org/doc/user-manuals Debian Users Manuals]
:[http://www.debian.org/doc/manuals/debian-faq/index.en.html The Debian GNU/Linux FAQ]
::Lien mort &gt; :[http://cafecomputer.com/guide/users-guide.en.html Debian Desktop User's Guide]
:[http://www.togaware.com/linux/survivor/ Debian GNU/Linux Desktop Survival Guide]
:[http://qref.sourceforge.net/ Guide de référence Debian]
:[http://www.debian.org/distrib/packages#search_packages Rechercher un paquet Debian]

* GNU/Linux, distributions Debian (en français)
:[http://www.debian.org/index.fr.html Debian Le système d'exploitation universel]
::Lien qui renvoi sur forum.debian-fr.org &gt; :[http://www.debian-fr.org/ Debian]
:[http://forum.debian-fr.org/ &quot;LE&quot; &quot;forum.debian-fr.org&quot;]
:[http://debianworld.org/ Debianworld.org encore un site sur Debian !]
:[http://planet-fr.debian.net/ Planet Debian-FR]
:[http://www.debian.org/doc/manuals/debian-faq/index.fr.html La FAQ Debian GNU/Linux]
:[http://www.michauko.org/docs/debian_testing/index.html Dossier d'installation Debian testing]
:[http://formation-debian.via.ecp.fr/ Formation Debian GNU/Linux]
::Lien mort &gt; :[http://qref.sourceforge.net/Debian/reference/reference.fr.html Guide de référence pour Debian]
::Lien doublon &gt; :[http://www.debian.org/distrib/packages.fr.html#search_packages Debian Paquets]

* GNU/Linux, distributions Debian (Howto's)
::Lien mort &gt; :[http://wiki.serios.net/wiki/Debian_Java_JRE/JDK_installation Debian Java JRE/JDK installation - SeriosWiki]

* GNU/Linux, distributions Debian : Howto Nvidia
::Lien Déplacé &gt; :[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.txt Simple instructions on how to install nVidia drivers for X11 on Debian]
:[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.html Simple instructions on how to install nVidia drivers for X11 on Debian]
::Lien mort &gt; :[http://home.comcast.net/~andrex/Debian-nVidia/index.html Debian-nVidia HOWTO]
:[http://www.linux-wizard.net/howto.php?section=3&amp;key=nvidia#agp Debian - HowTo - Nvidia]

* GNU/Linux, distributions Debian : Howto Matériel
:[http://kmuto.jp/debian/hcl/ Vérifiez la compatibilité de votre matériel]
:[http://www.ibiblio.org/pub/linux/docs/HOWTO/translations/fr/html-1page/Webcam-HOWTO.html Guide pratique des webcams]
:[http://mxhaard.free.fr/download.html Pilotes Webcam]
:[http://www.linux-usb.org/USB-guide/book1.html Usb sous Linux]
:[http://fr.tldp.org/HOWTO/lecture/Hardware-HOWTO.html liste de l'ensemble du matériel réputé compatible ou non avec Linux]
:[http://fasterdata.es.net/TCP-tuning//linux.html Linux TCP Tuning]

== Autres Distributions Linux ==

* GNU/Linux - Sidux
:[http://sidux.com/ Site de Sidux - en Anglais]
:[http://manual.sidux.com/fr/welcome-fr.htm Manuel de Sidux en français]

* GNU/Linux - Ubuntu (en anglais)
:[http://www.ubuntulinux.org/ Ubuntu]
:[http://www.ubuntuforums.org/ Ubuntu Official Community &amp; Forums]
:[http://www.ubuntuguide.org/ Unofficial Ubuntu Starter Guide]
:[http://packages.ubuntu.com/ Ubuntu packages]

* GNU/Linux - Ubuntu (en français)
:[http://www.ubuntu-fr.org/ Ubuntu-fr.org]
:[http://forum.ubuntu-fr.org/ Ubuntu-fr.org Forum]
:Ce site n'est plus maintenu depuis Ubuntu 7.10... [http://yekubuntu.free.fr/index.php yeK-Ubuntu]
 
* GNU/Linux - Arch
:[http://archlinuxfr.org/ Arch Linux [FR]
:[http://www.archlinux.org/ Arch Linux [EN]

* GNU/Linux - Mandriva
:[http://www.mandrivalinux.com/en-us/ Mandriva Linux]
:[http://distrowatch.com/table.php?distribution=mandrake DistroWatch.com: Mandriva Linux]
:[http://mandrivausers.org/ MandrakeUsers]
:[http://rpm.pbone.net/ RPM pbone.net]
 
* GNU/Linux - OpenSUSE
:[http://www.opensuse.org/ OpenSUSE]

== GNU/Linux, Dépôts ==

* GNU/Linux, Dépôts (logiciels)
:[http://apt-get.org/ Unofficial APT repositories]
:[http://sourceforge.net/ SourceForge.net]
:[http://freshmeat.net/ freshmeat.net: Welcome to freshmeat.net]
:[http://linuxappfinder.com/ Linux App Finder]
:[http://www.gnu.org/software/ GNU - Free Software Foundation (FSF)]
:[http://www.framasoft.net/ Framasoft - Logiciels Libres]
:[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]

* GNU/Linux, Dépôts (logiciels équivalences)
:[http://wiki.linuxquestions.org/wiki/Linux_software_equivalent_to_Windows_software Linux software equivalent to Windows software - LinuxQuestions.org Wiki]
:[http://www.linuxrsp.ru/win-lin-soft/table-eng.html The table of equivalents / replacements / analogs of Windows software in Linux. ]

* GNU/Linux, Dépôts (Jeux)
:[http://www.icculus.org/lgfaq/gamelist.php Linux Gamers Game List]
::Lien mort &gt; :[http://wiki.frimouvy.org/wakka.php?wiki=JeuxLinux FriWikiWiki:JeuxLinux]
:[http://forum.hardware.fr/hardwarefr/JeuxVideo/Topic-Unik-Jeux-Linux-Quake-IV-Binaire-dispo-sujet-90039-1.htm#t0 Jeux Linux ]

== GNU/Linux, Howtos et Tutos ==

* GNU/Linux, Howtos et trucs
:[http://www.linux-tips.net/ Linux Minis HowTo]
:[http://www.brunolinux.com/ Tips for Linux Explorers]
:[http://forum.zebulon.fr/index.php?showtopic=17977 Zebulon.fr - Quelques liens pour débuter sous linux]
:[http://beronono.com/wiki-debian/index.php?title=Accueil Le Wiki de forum.debian-fr.org]
:[http://tldp.org/ The Linux Documentation Project]
:[http://jp.barralis.com/linux-man/ Projet de traduction des &quot;man&quot; en français]

* GNU/Linux, Howtos et trucs sur le bash
:[http://www.ukuug.org/events/linux2003/papers/bash_tips/ Bash Tips &amp; Tricks]
:[http://www.cavecanen.org/linux/bashtips.php Pedro's web stuff]
::Lien mort &gt; :[http://enterprise.linux.com/enterprise/04/11/16/1753219.shtml?tid=47&amp;tid=89 Linux.com | CLI Magic: Colorize your prompt]
 
* GNU/Linux, Tutos, Guide de l'utilisateur
:[http://www.delafond.org/survielinux/ Guide de Survie du Débutant sous Linux]
::Lien mort &gt; :[http://www.icon.co.za/~psheer/book/index.html.gz Rute User's Tutorial and Exposition]
::Lien mort &gt; :[http://www.comptechdoc.org/os/linux/usersguide/index.html Linux User's Guide]
:[http://www.linux-tutorial.info/ Linux Knowledge Base and Tutorial]
 
* GNU/Linux, Programmation
::Lien mort &gt; :[http://howtos.linux.com/guides/abs-guide/index.shtml Linux.com - Advanced Bash-Scripting Guide]
:[http://linuxreviews.org/beginner/abs-guide/ Advanced Bash-Scripting Guide]
:[http://www.freeos.com/guides/lsst/ Linux Shell Scripting Tutorial - A Beginner s handbook]
:[http://www.tuxfiles.org/linuxhelp/cli.html tuXfiles - Linux command line tutorials for newbies]
 
* GNU/Linux, Applications : Gnome
:[http://www.gnome.org/ GNOME: The Free Software Desktop Project]
:[http://www.gnomefr.org/ GNOME-FR (Pays Francophones)]
:[http://www.gnu.org/software/ Software - GNU Project - Free Software Foundation (FSF)]
:[http://www.gnomedesktop.org/ FootNotes | GNOME Desktop News]
:[http://www.gnomejournal.org/ The GNOME Journal]
:[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]
:[http://art.gnome.org/ GNOME Art - Artwork &amp; Themes]
:[http://www.gnome-look.org/ GNOME-Look.org]

== Free Software et Open Source ==

* GNU/Linux, Free Software et Open Source
:[http://www.framasoft.net/ Framasoft - Logiciels Libres]
:[http://en.wikipedia.org/wiki/Portal:Free_software - Portal:Free software - Wikipedia, the free encyclopedia]
:[http://www.fsfeurope.org/index.fr.html FSF Europe - Free Software Foundation Europe]
:[http://solutions.journaldunet.com/dossiers/libre/sommaire.shtml JDN - Dossier Logiciels libres/Open Source]
:[http://www.logiciellibre.net/ LogicielLibre.Net - Premiere ressource francophone sur l'economie des logiciels libres / Open Source]
:[http://www.progilibre.com/ Progilibre.com | La communauté des applications professionnelles en open source]
:[http://www.aful.org/ AFUL]
:[http://www.generation-libre.com/ Generation Libre]
:[http://lelogiciellibre.net/ Le Logiciel Libre : découvrir, télécharger des logiciels libres]
:[http://www.jesuislibre.org/ Je Suis Libre]
:[http://www.openstickers.com/ Open source &quot;goodies&quot;]

* GNU/Linux, Open Source : Formats, Brevets, DRM et Cie
:[http://formats-ouverts.org/ Pour les formats ouverts !]
::Lien mort &gt; :[http://swpat.ffii.org/vreji/pikta/index.fr.html Musé d'Horreurs des Brevets Logiciels Européens]
:[http://stopdrm.info/ StopDRM!]

* GNU/Linux, Free Software et Open Source : Définitions
:[http://www.gnu.org/philosophy/free-sw.fr.html Qu'est-ce qu'un «Logiciel Libre»?]
:[http://www.fsfeurope.org/documents/freesoftware.fr.html FSF Europe - Qu'est-ce que le Logiciel Libre ?]
:[http://fr.wikipedia.org/wiki/Logiciel_libre Logiciel libre - Wikipédia]
:[http://www.livretdulibre.org/ Livret du Libre]
:[http://solutions.journaldunet.com/0605/060517-qr-terminologie-open-source.shtml La terminologie de l'Open Source en 7 questions]

--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 06:28 (UTC)

[[Catégorie:Documentation externe]]</text>
      <sha1>gcqkf5tput31xijvj112znq80myncns</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1199</id>
      <parentid>1198</parentid>
      <timestamp>2010-03-29T08:39:05Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* GNU/Linux, Dépôts */</comment>
      <text xml:space="preserve" bytes="10305">{{Ébauche|es liens concernant GNU/Linus, la Free Software et l'Open Source}}

Sur cette page sont centralisés tous les liens concernant GNU/Linus, la Free Software et l'Open Source !

== Divers ==

* Recherche ciblée GNU/Linux sur Google :
:[http://www.google.fr/linux Recherche Google ciblée GNU/Linux]
:[http://www.google.com/cse/home?cx=003036737311975801323:yeiooiloi7c Recherche sur forum.debian-fr.org] ou [http://www.google.com/cse/home?cx=003880180303252368328:fw-yrta3-zw Recherche sur forum.debian-fr.org]
:[http://www.google.com/cse/home?cx=015801379623395497354:gw8g39yyvum&amp;hl=fr Recherche ciblée Debian]
:[http://www.google.fr/cse/home?cx=009677488958975547791:vzjkzembgbc Recherche Debian &amp; Ubuntu]

* GNU/Linux, généralités :
:[http://www.trustonme.net/ Trustonme - Site d'entraide orienté Linux et logiciels libres]
:[http://lea-linux.org/ Léa-Linux - Site d’aide collaboratif pour le système d’exploitation GNU/Linux]
:[http://www.linuxfrench.net/ LinuxFrench.Net]
:[http://linuxreviews.org/ Linux Reviews]

* GNU/Linux, distributions :
:[http://distrowatch.com/ DistroWatch.com: Put the fun back into computing. Use Linux, BSD.]
:[http://www.frozentech.com/content/livecd.php The LiveCD List]

== Debian ==

* GNU/Linux, distributions Debian (en anglais)
:[http://www.debian.org/ Debian]
:[http://wiki.debian.org/ Debian Wiki]
:[http://www.debian-administration.org/ Debian GNU-Linux System Administration Resources]
:[http://www.debian.org/doc/ Debian Documentation]
:[http://www.debian.org/doc/user-manuals Debian Users Manuals]
:[http://www.debian.org/doc/manuals/debian-faq/index.en.html The Debian GNU/Linux FAQ]
::Lien mort &gt; :[http://cafecomputer.com/guide/users-guide.en.html Debian Desktop User's Guide]
:[http://www.togaware.com/linux/survivor/ Debian GNU/Linux Desktop Survival Guide]
:[http://qref.sourceforge.net/ Guide de référence Debian]
:[http://www.debian.org/distrib/packages#search_packages Rechercher un paquet Debian]

* GNU/Linux, distributions Debian (en français)
:[http://www.debian.org/index.fr.html Debian Le système d'exploitation universel]
::Lien qui renvoi sur forum.debian-fr.org &gt; :[http://www.debian-fr.org/ Debian]
:[http://forum.debian-fr.org/ &quot;LE&quot; &quot;forum.debian-fr.org&quot;]
:[http://debianworld.org/ Debianworld.org encore un site sur Debian !]
:[http://planet-fr.debian.net/ Planet Debian-FR]
:[http://www.debian.org/doc/manuals/debian-faq/index.fr.html La FAQ Debian GNU/Linux]
:[http://www.michauko.org/docs/debian_testing/index.html Dossier d'installation Debian testing]
:[http://formation-debian.via.ecp.fr/ Formation Debian GNU/Linux]
::Lien mort &gt; :[http://qref.sourceforge.net/Debian/reference/reference.fr.html Guide de référence pour Debian]
::Lien doublon &gt; :[http://www.debian.org/distrib/packages.fr.html#search_packages Debian Paquets]

* GNU/Linux, distributions Debian (Howto's)
::Lien mort &gt; :[http://wiki.serios.net/wiki/Debian_Java_JRE/JDK_installation Debian Java JRE/JDK installation - SeriosWiki]

* GNU/Linux, distributions Debian : Howto Nvidia
::Lien Déplacé &gt; :[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.txt Simple instructions on how to install nVidia drivers for X11 on Debian]
:[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.html Simple instructions on how to install nVidia drivers for X11 on Debian]
::Lien mort &gt; :[http://home.comcast.net/~andrex/Debian-nVidia/index.html Debian-nVidia HOWTO]
:[http://www.linux-wizard.net/howto.php?section=3&amp;key=nvidia#agp Debian - HowTo - Nvidia]

* GNU/Linux, distributions Debian : Howto Matériel
:[http://kmuto.jp/debian/hcl/ Vérifiez la compatibilité de votre matériel]
:[http://www.ibiblio.org/pub/linux/docs/HOWTO/translations/fr/html-1page/Webcam-HOWTO.html Guide pratique des webcams]
:[http://mxhaard.free.fr/download.html Pilotes Webcam]
:[http://www.linux-usb.org/USB-guide/book1.html Usb sous Linux]
:[http://fr.tldp.org/HOWTO/lecture/Hardware-HOWTO.html liste de l'ensemble du matériel réputé compatible ou non avec Linux]
:[http://fasterdata.es.net/TCP-tuning//linux.html Linux TCP Tuning]

== Autres Distributions Linux ==

* GNU/Linux - Sidux
:[http://sidux.com/ Site de Sidux - en Anglais]
:[http://manual.sidux.com/fr/welcome-fr.htm Manuel de Sidux en français]

* GNU/Linux - Ubuntu (en anglais)
:[http://www.ubuntulinux.org/ Ubuntu]
:[http://www.ubuntuforums.org/ Ubuntu Official Community &amp; Forums]
:[http://www.ubuntuguide.org/ Unofficial Ubuntu Starter Guide]
:[http://packages.ubuntu.com/ Ubuntu packages]

* GNU/Linux - Ubuntu (en français)
:[http://www.ubuntu-fr.org/ Ubuntu-fr.org]
:[http://forum.ubuntu-fr.org/ Ubuntu-fr.org Forum]
:Ce site n'est plus maintenu depuis Ubuntu 7.10... [http://yekubuntu.free.fr/index.php yeK-Ubuntu]
 
* GNU/Linux - Arch
:[http://archlinuxfr.org/ Arch Linux [FR]
:[http://www.archlinux.org/ Arch Linux [EN]

* GNU/Linux - Mandriva
:[http://www.mandrivalinux.com/en-us/ Mandriva Linux]
:[http://distrowatch.com/table.php?distribution=mandrake DistroWatch.com: Mandriva Linux]
:[http://mandrivausers.org/ MandrakeUsers]
:[http://rpm.pbone.net/ RPM pbone.net]
 
* GNU/Linux - OpenSUSE
:[http://www.opensuse.org/ OpenSUSE]

== GNU/Linux, Dépôts ==

* GNU/Linux, Dépôts (logiciels)
:[http://apt-get.org/ Unofficial APT repositories]
:[http://sourceforge.net/ SourceForge.net]
:[http://freshmeat.net/ freshmeat.net: Welcome to freshmeat.net]
:[http://linuxappfinder.com/ Linux App Finder &quot;catalogue de programmes GNU/Linux&quot;]
:[http://www.gnu.org/software/ GNU - Free Software Foundation (FSF)]
:[http://www.framasoft.net/ Framasoft - Logiciels Libres]
:[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]

* GNU/Linux, Dépôts (logiciels équivalences)
:[http://wiki.linuxquestions.org/wiki/Linux_software_equivalent_to_Windows_software Linux software equivalent to Windows software - LinuxQuestions.org Wiki]
:[http://www.linuxrsp.ru/win-lin-soft/table-eng.html The table of equivalents / replacements / analogs of Windows software in Linux. ]

* GNU/Linux, Dépôts (Jeux)
:[http://www.icculus.org/lgfaq/gamelist.php Linux Gamers Game List]
::Lien mort &gt; :[http://wiki.frimouvy.org/wakka.php?wiki=JeuxLinux FriWikiWiki:JeuxLinux]
:[http://forum.hardware.fr/hardwarefr/JeuxVideo/Topic-Unik-Jeux-Linux-Quake-IV-Binaire-dispo-sujet-90039-1.htm#t0 Jeux Linux ]

== GNU/Linux, Howtos et Tutos ==

* GNU/Linux, Howtos et trucs
:[http://www.linux-tips.net/ Linux Minis HowTo]
:[http://www.brunolinux.com/ Tips for Linux Explorers]
:[http://forum.zebulon.fr/index.php?showtopic=17977 Zebulon.fr - Quelques liens pour débuter sous linux]
:[http://beronono.com/wiki-debian/index.php?title=Accueil Le Wiki de forum.debian-fr.org]
:[http://tldp.org/ The Linux Documentation Project]
:[http://jp.barralis.com/linux-man/ Projet de traduction des &quot;man&quot; en français]

* GNU/Linux, Howtos et trucs sur le bash
:[http://www.ukuug.org/events/linux2003/papers/bash_tips/ Bash Tips &amp; Tricks]
:[http://www.cavecanen.org/linux/bashtips.php Pedro's web stuff]
::Lien mort &gt; :[http://enterprise.linux.com/enterprise/04/11/16/1753219.shtml?tid=47&amp;tid=89 Linux.com | CLI Magic: Colorize your prompt]
 
* GNU/Linux, Tutos, Guide de l'utilisateur
:[http://www.delafond.org/survielinux/ Guide de Survie du Débutant sous Linux]
::Lien mort &gt; :[http://www.icon.co.za/~psheer/book/index.html.gz Rute User's Tutorial and Exposition]
::Lien mort &gt; :[http://www.comptechdoc.org/os/linux/usersguide/index.html Linux User's Guide]
:[http://www.linux-tutorial.info/ Linux Knowledge Base and Tutorial]
 
* GNU/Linux, Programmation
::Lien mort &gt; :[http://howtos.linux.com/guides/abs-guide/index.shtml Linux.com - Advanced Bash-Scripting Guide]
:[http://linuxreviews.org/beginner/abs-guide/ Advanced Bash-Scripting Guide]
:[http://www.freeos.com/guides/lsst/ Linux Shell Scripting Tutorial - A Beginner s handbook]
:[http://www.tuxfiles.org/linuxhelp/cli.html tuXfiles - Linux command line tutorials for newbies]
 
* GNU/Linux, Applications : Gnome
:[http://www.gnome.org/ GNOME: The Free Software Desktop Project]
:[http://www.gnomefr.org/ GNOME-FR (Pays Francophones)]
:[http://www.gnu.org/software/ Software - GNU Project - Free Software Foundation (FSF)]
:[http://www.gnomedesktop.org/ FootNotes | GNOME Desktop News]
:[http://www.gnomejournal.org/ The GNOME Journal]
:[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]
:[http://art.gnome.org/ GNOME Art - Artwork &amp; Themes]
:[http://www.gnome-look.org/ GNOME-Look.org]

== Free Software et Open Source ==

* GNU/Linux, Free Software et Open Source
:[http://www.framasoft.net/ Framasoft - Logiciels Libres]
:[http://en.wikipedia.org/wiki/Portal:Free_software - Portal:Free software - Wikipedia, the free encyclopedia]
:[http://www.fsfeurope.org/index.fr.html FSF Europe - Free Software Foundation Europe]
:[http://solutions.journaldunet.com/dossiers/libre/sommaire.shtml JDN - Dossier Logiciels libres/Open Source]
:[http://www.logiciellibre.net/ LogicielLibre.Net - Premiere ressource francophone sur l'economie des logiciels libres / Open Source]
:[http://www.progilibre.com/ Progilibre.com | La communauté des applications professionnelles en open source]
:[http://www.aful.org/ AFUL]
:[http://www.generation-libre.com/ Generation Libre]
:[http://lelogiciellibre.net/ Le Logiciel Libre : découvrir, télécharger des logiciels libres]
:[http://www.jesuislibre.org/ Je Suis Libre]
:[http://www.openstickers.com/ Open source &quot;goodies&quot;]

* GNU/Linux, Open Source : Formats, Brevets, DRM et Cie
:[http://formats-ouverts.org/ Pour les formats ouverts !]
::Lien mort &gt; :[http://swpat.ffii.org/vreji/pikta/index.fr.html Musé d'Horreurs des Brevets Logiciels Européens]
:[http://stopdrm.info/ StopDRM!]

* GNU/Linux, Free Software et Open Source : Définitions
:[http://www.gnu.org/philosophy/free-sw.fr.html Qu'est-ce qu'un «Logiciel Libre»?]
:[http://www.fsfeurope.org/documents/freesoftware.fr.html FSF Europe - Qu'est-ce que le Logiciel Libre ?]
:[http://fr.wikipedia.org/wiki/Logiciel_libre Logiciel libre - Wikipédia]
:[http://www.livretdulibre.org/ Livret du Libre]
:[http://solutions.journaldunet.com/0605/060517-qr-terminologie-open-source.shtml La terminologie de l'Open Source en 7 questions]

--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 06:28 (UTC)

[[Catégorie:Documentation externe]]</text>
      <sha1>2slrhs50efnq44bx05lakyckalwpv99</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1210</id>
      <parentid>1199</parentid>
      <timestamp>2010-03-29T12:16:55Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Free Software et Open Source */</comment>
      <text xml:space="preserve" bytes="10805">{{Ébauche|es liens concernant GNU/Linus, la Free Software et l'Open Source}}

Sur cette page sont centralisés tous les liens concernant GNU/Linus, la Free Software et l'Open Source !

== Divers ==

* Recherche ciblée GNU/Linux sur Google :
:[http://www.google.fr/linux Recherche Google ciblée GNU/Linux]
:[http://www.google.com/cse/home?cx=003036737311975801323:yeiooiloi7c Recherche sur forum.debian-fr.org] ou [http://www.google.com/cse/home?cx=003880180303252368328:fw-yrta3-zw Recherche sur forum.debian-fr.org]
:[http://www.google.com/cse/home?cx=015801379623395497354:gw8g39yyvum&amp;hl=fr Recherche ciblée Debian]
:[http://www.google.fr/cse/home?cx=009677488958975547791:vzjkzembgbc Recherche Debian &amp; Ubuntu]

* GNU/Linux, généralités :
:[http://www.trustonme.net/ Trustonme - Site d'entraide orienté Linux et logiciels libres]
:[http://lea-linux.org/ Léa-Linux - Site d’aide collaboratif pour le système d’exploitation GNU/Linux]
:[http://www.linuxfrench.net/ LinuxFrench.Net]
:[http://linuxreviews.org/ Linux Reviews]

* GNU/Linux, distributions :
:[http://distrowatch.com/ DistroWatch.com: Put the fun back into computing. Use Linux, BSD.]
:[http://www.frozentech.com/content/livecd.php The LiveCD List]

== Debian ==

* GNU/Linux, distributions Debian (en anglais)
:[http://www.debian.org/ Debian]
:[http://wiki.debian.org/ Debian Wiki]
:[http://www.debian-administration.org/ Debian GNU-Linux System Administration Resources]
:[http://www.debian.org/doc/ Debian Documentation]
:[http://www.debian.org/doc/user-manuals Debian Users Manuals]
:[http://www.debian.org/doc/manuals/debian-faq/index.en.html The Debian GNU/Linux FAQ]
::Lien mort &gt; :[http://cafecomputer.com/guide/users-guide.en.html Debian Desktop User's Guide]
:[http://www.togaware.com/linux/survivor/ Debian GNU/Linux Desktop Survival Guide]
:[http://qref.sourceforge.net/ Guide de référence Debian]
:[http://www.debian.org/distrib/packages#search_packages Rechercher un paquet Debian]

* GNU/Linux, distributions Debian (en français)
:[http://www.debian.org/index.fr.html Debian Le système d'exploitation universel]
::Lien qui renvoi sur forum.debian-fr.org &gt; :[http://www.debian-fr.org/ Debian]
:[http://forum.debian-fr.org/ &quot;LE&quot; &quot;forum.debian-fr.org&quot;]
:[http://debianworld.org/ Debianworld.org encore un site sur Debian !]
:[http://planet-fr.debian.net/ Planet Debian-FR]
:[http://www.debian.org/doc/manuals/debian-faq/index.fr.html La FAQ Debian GNU/Linux]
:[http://www.michauko.org/docs/debian_testing/index.html Dossier d'installation Debian testing]
:[http://formation-debian.via.ecp.fr/ Formation Debian GNU/Linux]
::Lien mort &gt; :[http://qref.sourceforge.net/Debian/reference/reference.fr.html Guide de référence pour Debian]
::Lien doublon &gt; :[http://www.debian.org/distrib/packages.fr.html#search_packages Debian Paquets]

* GNU/Linux, distributions Debian (Howto's)
::Lien mort &gt; :[http://wiki.serios.net/wiki/Debian_Java_JRE/JDK_installation Debian Java JRE/JDK installation - SeriosWiki]

* GNU/Linux, distributions Debian : Howto Nvidia
::Lien Déplacé &gt; :[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.txt Simple instructions on how to install nVidia drivers for X11 on Debian]
:[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.html Simple instructions on how to install nVidia drivers for X11 on Debian]
::Lien mort &gt; :[http://home.comcast.net/~andrex/Debian-nVidia/index.html Debian-nVidia HOWTO]
:[http://www.linux-wizard.net/howto.php?section=3&amp;key=nvidia#agp Debian - HowTo - Nvidia]

* GNU/Linux, distributions Debian : Howto Matériel
:[http://kmuto.jp/debian/hcl/ Vérifiez la compatibilité de votre matériel]
:[http://www.ibiblio.org/pub/linux/docs/HOWTO/translations/fr/html-1page/Webcam-HOWTO.html Guide pratique des webcams]
:[http://mxhaard.free.fr/download.html Pilotes Webcam]
:[http://www.linux-usb.org/USB-guide/book1.html Usb sous Linux]
:[http://fr.tldp.org/HOWTO/lecture/Hardware-HOWTO.html liste de l'ensemble du matériel réputé compatible ou non avec Linux]
:[http://fasterdata.es.net/TCP-tuning//linux.html Linux TCP Tuning]

== Autres Distributions Linux ==

* GNU/Linux - Sidux
:[http://sidux.com/ Site de Sidux - en Anglais]
:[http://manual.sidux.com/fr/welcome-fr.htm Manuel de Sidux en français]

* GNU/Linux - Ubuntu (en anglais)
:[http://www.ubuntulinux.org/ Ubuntu]
:[http://www.ubuntuforums.org/ Ubuntu Official Community &amp; Forums]
:[http://www.ubuntuguide.org/ Unofficial Ubuntu Starter Guide]
:[http://packages.ubuntu.com/ Ubuntu packages]

* GNU/Linux - Ubuntu (en français)
:[http://www.ubuntu-fr.org/ Ubuntu-fr.org]
:[http://forum.ubuntu-fr.org/ Ubuntu-fr.org Forum]
:Ce site n'est plus maintenu depuis Ubuntu 7.10... [http://yekubuntu.free.fr/index.php yeK-Ubuntu]
 
* GNU/Linux - Arch
:[http://archlinuxfr.org/ Arch Linux [FR]
:[http://www.archlinux.org/ Arch Linux [EN]

* GNU/Linux - Mandriva
:[http://www.mandrivalinux.com/en-us/ Mandriva Linux]
:[http://distrowatch.com/table.php?distribution=mandrake DistroWatch.com: Mandriva Linux]
:[http://mandrivausers.org/ MandrakeUsers]
:[http://rpm.pbone.net/ RPM pbone.net]
 
* GNU/Linux - OpenSUSE
:[http://www.opensuse.org/ OpenSUSE]

== GNU/Linux, Dépôts ==

* GNU/Linux, Dépôts (logiciels)
:[http://apt-get.org/ Unofficial APT repositories]
:[http://sourceforge.net/ SourceForge.net]
:[http://freshmeat.net/ freshmeat.net: Welcome to freshmeat.net]
:[http://linuxappfinder.com/ Linux App Finder &quot;catalogue de programmes GNU/Linux&quot;]
:[http://www.gnu.org/software/ GNU - Free Software Foundation (FSF)]
:[http://www.framasoft.net/ Framasoft - Logiciels Libres]
:[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]

* GNU/Linux, Dépôts (logiciels équivalences)
:[http://wiki.linuxquestions.org/wiki/Linux_software_equivalent_to_Windows_software Linux software equivalent to Windows software - LinuxQuestions.org Wiki]
:[http://www.linuxrsp.ru/win-lin-soft/table-eng.html The table of equivalents / replacements / analogs of Windows software in Linux. ]

* GNU/Linux, Dépôts (Jeux)
:[http://www.icculus.org/lgfaq/gamelist.php Linux Gamers Game List]
::Lien mort &gt; :[http://wiki.frimouvy.org/wakka.php?wiki=JeuxLinux FriWikiWiki:JeuxLinux]
:[http://forum.hardware.fr/hardwarefr/JeuxVideo/Topic-Unik-Jeux-Linux-Quake-IV-Binaire-dispo-sujet-90039-1.htm#t0 Jeux Linux ]

== GNU/Linux, Howtos et Tutos ==

* GNU/Linux, Howtos et trucs
:[http://www.linux-tips.net/ Linux Minis HowTo]
:[http://www.brunolinux.com/ Tips for Linux Explorers]
:[http://forum.zebulon.fr/index.php?showtopic=17977 Zebulon.fr - Quelques liens pour débuter sous linux]
:[http://beronono.com/wiki-debian/index.php?title=Accueil Le Wiki de forum.debian-fr.org]
:[http://tldp.org/ The Linux Documentation Project]
:[http://jp.barralis.com/linux-man/ Projet de traduction des &quot;man&quot; en français]

* GNU/Linux, Howtos et trucs sur le bash
:[http://www.ukuug.org/events/linux2003/papers/bash_tips/ Bash Tips &amp; Tricks]
:[http://www.cavecanen.org/linux/bashtips.php Pedro's web stuff]
::Lien mort &gt; :[http://enterprise.linux.com/enterprise/04/11/16/1753219.shtml?tid=47&amp;tid=89 Linux.com | CLI Magic: Colorize your prompt]
 
* GNU/Linux, Tutos, Guide de l'utilisateur
:[http://www.delafond.org/survielinux/ Guide de Survie du Débutant sous Linux]
::Lien mort &gt; :[http://www.icon.co.za/~psheer/book/index.html.gz Rute User's Tutorial and Exposition]
::Lien mort &gt; :[http://www.comptechdoc.org/os/linux/usersguide/index.html Linux User's Guide]
:[http://www.linux-tutorial.info/ Linux Knowledge Base and Tutorial]
 
* GNU/Linux, Programmation
::Lien mort &gt; :[http://howtos.linux.com/guides/abs-guide/index.shtml Linux.com - Advanced Bash-Scripting Guide]
:[http://linuxreviews.org/beginner/abs-guide/ Advanced Bash-Scripting Guide]
:[http://www.freeos.com/guides/lsst/ Linux Shell Scripting Tutorial - A Beginner s handbook]
:[http://www.tuxfiles.org/linuxhelp/cli.html tuXfiles - Linux command line tutorials for newbies]
 
* GNU/Linux, Applications : Gnome
:[http://www.gnome.org/ GNOME: The Free Software Desktop Project]
:[http://www.gnomefr.org/ GNOME-FR (Pays Francophones)]
:[http://www.gnu.org/software/ Software - GNU Project - Free Software Foundation (FSF)]
:[http://www.gnomedesktop.org/ FootNotes | GNOME Desktop News]
:[http://www.gnomejournal.org/ The GNOME Journal]
:[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]
:[http://art.gnome.org/ GNOME Art - Artwork &amp; Themes]
:[http://www.gnome-look.org/ GNOME-Look.org]

== Free Software et Open Source ==

* GNU/Linux, Free Software et Open Source
:[http://www.framasoft.net/ Framasoft - Réseau de sites web collaboratifs, vise à diffuser le logiciel libre] / [http://www.framasoft.net/article3338.html Framasoft : Qu’est-ce qu’un logiciel libre ?]
:[http://en.wikipedia.org/wiki/Portal:Free_software Wikipedia the free encyclopedia : Portal:Free software (anglais)]
:[http://www.fsfeurope.org/index.fr.html FSF Europe - Free Software Foundation Europe (Multilingue)]
:[http://solutions.journaldunet.com/dossiers/libre/sommaire.shtml Le Journal du Net : Dossier Logiciels libres/Open Source]
:[http://www.logiciellibre.net/ LogicielLibre.Net - Premiere ressource francophone sur l'economie des logiciels libres / Open Source]
:[http://www.progilibre.com/ Progilibre.com | La communauté des applications professionnelles en open source]
:[http://www.aful.org/ AFUL (Association Francophone des Utilisateurs de Logiciels Libres)]
:[http://www.generation-libre.com/ Generation Libre - Site d'informations et d'entraide sur les logiciels libres ]
:[http://lelogiciellibre.net/ Le Logiciel Libre : découvrir, télécharger des logiciels libres]
:[http://www.jesuislibre.org/ Je Suis Libre (Ce site permet de faire sortir de l'ombre tous les développeurs qui conçoivent des projets dans le monde du libre)]
:[http://www.openstickers.com/ Open source &quot;goodies&quot; (anglais)]

* GNU/Linux, Open Source : Formats, Brevets, DRM et Cie
:[http://formats-ouverts.org/ Pour les formats ouverts !]
::Lien mort &gt; :[http://swpat.ffii.org/vreji/pikta/index.fr.html Musé d'Horreurs des Brevets Logiciels Européens]
:[http://stopdrm.info/ StopDRM!]

* GNU/Linux, Free Software et Open Source : Définitions
:[http://www.gnu.org/philosophy/free-sw.fr.html Le projet GNU : Définition d'un logiciel libre]
:[http://www.fsfeurope.org/documents/freesoftware.fr.html FSF Europe - Qu'est-ce que le Logiciel Libre ?]
:[http://fr.wikipedia.org/wiki/Logiciel_libre Logiciel libre - Wikipédia]
:[http://www.livretdulibre.org/ Livret du Libre (Le Livret du Libre est une introduction au Libre)]
:[http://solutions.journaldunet.com/0605/060517-qr-terminologie-open-source.shtml La terminologie de l'Open Source en 7 questions]

--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 06:28 (UTC)

[[Catégorie:Documentation externe]]</text>
      <sha1>h9txbjztrkm6nesymp6jtclgogvgmsh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1211</id>
      <parentid>1210</parentid>
      <timestamp>2010-03-29T12:36:31Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="10878">{{Ébauche|es liens concernant GNU/Linus, la Free Software et l'Open Source}}

Sur cette page sont centralisés tous les liens concernant GNU/Linus, la Free Software et l'Open Source !

== Divers ==

* Recherche ciblée GNU/Linux sur Google :
:[http://www.google.fr/linux Recherche Google ciblée GNU/Linux]
:[http://www.google.com/cse/home?cx=003036737311975801323:yeiooiloi7c Recherche sur forum.debian-fr.org] ou [http://www.google.com/cse/home?cx=003880180303252368328:fw-yrta3-zw Recherche sur forum.debian-fr.org]
:[http://www.google.com/cse/home?cx=015801379623395497354:gw8g39yyvum&amp;hl=fr Recherche ciblée Debian]
:[http://www.google.fr/cse/home?cx=009677488958975547791:vzjkzembgbc Recherche Debian &amp; Ubuntu]

* GNU/Linux, généralités :
:[http://www.trustonme.net/ Trustonme - Site d'entraide orienté Linux et logiciels libres]
:[http://lea-linux.org/ Léa-Linux - Site d’aide collaboratif pour le système d’exploitation GNU/Linux]
:[http://www.linuxfrench.net/ LinuxFrench.Net]
:[http://linuxreviews.org/ Linux Reviews]

* GNU/Linux, distributions :
:[http://distrowatch.com/ DistroWatch.com: Put the fun back into computing. Use Linux, BSD.]
:[http://www.frozentech.com/content/livecd.php The LiveCD List]

== Debian ==

* GNU/Linux, distributions Debian (en anglais)
:[http://www.debian.org/ Debian]
:[http://wiki.debian.org/ Debian Wiki]
:[http://www.debian-administration.org/ Debian GNU-Linux System Administration Resources]
:[http://www.debian.org/doc/ Debian Documentation]
:[http://www.debian.org/doc/user-manuals Debian Users Manuals]
:[http://www.debian.org/doc/manuals/debian-faq/index.en.html The Debian GNU/Linux FAQ]

:[http://www.togaware.com/linux/survivor/ Debian GNU/Linux Desktop Survival Guide]
:[http://qref.sourceforge.net/ Guide de référence Debian]
:[http://www.debian.org/distrib/packages#search_packages Rechercher un paquet Debian]

* GNU/Linux, distributions Debian (en français)
:[http://www.debian.org/index.fr.html Debian Le système d'exploitation universel]
:[http://forum.debian-fr.org/ &quot;LE&quot; &quot;forum.debian-fr.org&quot;]
:[http://debianworld.org/ Debianworld.org encore un site sur Debian !]
:[http://planet-fr.debian.net/ Planet Debian-FR]
:[http://www.debian.org/doc/manuals/debian-faq/index.fr.html La FAQ Debian GNU/Linux]
:[http://www.michauko.org/docs/debian_testing/index.html Dossier d'installation Debian testing]
:[http://formation-debian.via.ecp.fr/ Formation Debian GNU/Linux]

* GNU/Linux, distributions Debian : Howto Nvidia
:[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.html Simple instructions on how to install nVidia drivers for X11 on Debian]
:[http://www.linux-wizard.net/howto.php?section=3&amp;key=nvidia#agp Debian - HowTo - Nvidia]

* GNU/Linux, distributions Debian : Howto Matériel
:[http://kmuto.jp/debian/hcl/ Vérifiez la compatibilité de votre matériel]
:[http://www.ibiblio.org/pub/linux/docs/HOWTO/translations/fr/html-1page/Webcam-HOWTO.html Guide pratique des webcams]
:[http://mxhaard.free.fr/download.html Pilotes Webcam]
:[http://www.linux-usb.org/USB-guide/book1.html Usb sous Linux]
:[http://fr.tldp.org/HOWTO/lecture/Hardware-HOWTO.html liste de l'ensemble du matériel réputé compatible ou non avec Linux]
:[http://fasterdata.es.net/TCP-tuning//linux.html Linux TCP Tuning]

== Autres Distributions Linux ==

* GNU/Linux - Sidux
:[http://sidux.com/ Site de Sidux - en Anglais]
:[http://manual.sidux.com/fr/welcome-fr.htm Manuel de Sidux en français]

* GNU/Linux - Ubuntu (en anglais)
:[http://www.ubuntulinux.org/ Ubuntu]
:[http://www.ubuntuforums.org/ Ubuntu Official Community &amp; Forums]
:[http://www.ubuntuguide.org/ Unofficial Ubuntu Starter Guide]
:[http://packages.ubuntu.com/ Ubuntu packages]

* GNU/Linux - Ubuntu (en français)
:[http://www.ubuntu-fr.org/ Ubuntu-fr.org]
:[http://forum.ubuntu-fr.org/ Ubuntu-fr.org Forum]
:Ce site n'est plus maintenu depuis Ubuntu 7.10... [http://yekubuntu.free.fr/index.php yeK-Ubuntu]
 
* GNU/Linux - Arch
:[http://archlinuxfr.org/ Arch Linux [FR]
:[http://www.archlinux.org/ Arch Linux [EN]

* GNU/Linux - Mandriva
:[http://www.mandrivalinux.com/en-us/ Mandriva Linux]
:[http://distrowatch.com/table.php?distribution=mandrake DistroWatch.com: Mandriva Linux]
:[http://mandrivausers.org/ MandrakeUsers]
:[http://rpm.pbone.net/ RPM pbone.net]
 
* GNU/Linux - OpenSUSE
:[http://www.opensuse.org/ OpenSUSE]

== GNU/Linux, Dépôts ==

* GNU/Linux, Dépôts (logiciels)
:[http://apt-get.org/ Unofficial APT repositories]
:[http://sourceforge.net/ SourceForge.net]
:[http://freshmeat.net/ freshmeat.net: Welcome to freshmeat.net]
:[http://linuxappfinder.com/ Linux App Finder &quot;catalogue de programmes GNU/Linux&quot;]
:[http://www.gnu.org/software/ GNU - Free Software Foundation (FSF)]
:[http://www.framasoft.net/ Framasoft - Logiciels Libres]
:[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]

* GNU/Linux, Dépôts (logiciels équivalences)
:[http://wiki.linuxquestions.org/wiki/Linux_software_equivalent_to_Windows_software Linux software equivalent to Windows software - LinuxQuestions.org Wiki]
:[http://www.linuxrsp.ru/win-lin-soft/table-eng.html The table of equivalents / replacements / analogs of Windows software in Linux. ]

* GNU/Linux, Dépôts (Jeux)
:[http://www.icculus.org/lgfaq/gamelist.php Linux Gamers Game List]
:[http://forum.hardware.fr/hardwarefr/JeuxVideo/Topic-Unik-Jeux-Linux-Quake-IV-Binaire-dispo-sujet-90039-1.htm#t0 Jeux Linux ]

== GNU/Linux, Howtos et Tutos ==

* GNU/Linux, Howtos et trucs
:[http://www.linux-tips.net/ Linux Minis HowTo]
:[http://www.brunolinux.com/ Tips for Linux Explorers]
:[http://forum.zebulon.fr/index.php?showtopic=17977 Zebulon.fr - Quelques liens pour débuter sous linux]
:[http://beronono.com/wiki-debian/index.php?title=Accueil Le Wiki de forum.debian-fr.org]
:[http://tldp.org/ The Linux Documentation Project]
:[http://jp.barralis.com/linux-man/ Projet de traduction des &quot;man&quot; en français]

* GNU/Linux, Howtos et trucs sur le bash
:[http://www.ukuug.org/events/linux2003/papers/bash_tips/ Bash Tips &amp; Tricks]
:[http://www.cavecanen.org/linux/bashtips.php Pedro's web stuff]
 
* GNU/Linux, Tutos, Guide de l'utilisateur
:[http://www.delafond.org/survielinux/ Guide de Survie du Débutant sous Linux]
:Ce document date de novembre 2000... :[http://www.comptechdoc.org/os/linux/usersguide/ Linux User's Guide (anglais)]
:[http://www.linux-tutorial.info/ Linux Knowledge Base and Tutorial]
 
* GNU/Linux, Programmation
:[http://linuxreviews.org/beginner/abs-guide/ Advanced Bash-Scripting Guide]
:[http://www.freeos.com/guides/lsst/ Linux Shell Scripting Tutorial - A Beginner s handbook]
:[http://www.tuxfiles.org/linuxhelp/cli.html tuXfiles - Linux command line tutorials for newbies]
 
* GNU/Linux, Applications : Gnome
:[http://www.gnome.org/ GNOME: The Free Software Desktop Project]
:[http://www.gnomefr.org/ GNOME-FR (Pays Francophones)]
:[http://www.gnu.org/software/ Software - GNU Project - Free Software Foundation (FSF)]
:[http://www.gnomedesktop.org/ FootNotes | GNOME Desktop News]
:[http://www.gnomejournal.org/ The GNOME Journal]
:[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]
:[http://art.gnome.org/ GNOME Art - Artwork &amp; Themes]
:[http://www.gnome-look.org/ GNOME-Look.org]

== Free Software et Open Source ==

* GNU/Linux, Free Software et Open Source
:[http://www.framasoft.net/ Framasoft - Réseau de sites web collaboratifs, vise à diffuser le logiciel libre] / [http://www.framasoft.net/article3338.html Framasoft : Qu’est-ce qu’un logiciel libre ?]
:[http://en.wikipedia.org/wiki/Portal:Free_software Wikipedia the free encyclopedia : Portal:Free software (anglais)]
:[http://www.fsfeurope.org/index.fr.html FSF Europe - Free Software Foundation Europe (Multilingue)]
:[http://solutions.journaldunet.com/dossiers/libre/sommaire.shtml Le Journal du Net : Dossier Logiciels libres/Open Source]
:[http://www.logiciellibre.net/ LogicielLibre.Net - Premiere ressource francophone sur l'economie des logiciels libres / Open Source]
:[http://www.progilibre.com/ Progilibre.com | La communauté des applications professionnelles en open source]
:[http://www.aful.org/ AFUL (Association Francophone des Utilisateurs de Logiciels Libres)]
:[http://www.generation-libre.com/ Generation Libre - Site d'informations et d'entraide sur les logiciels libres ]
:[http://lelogiciellibre.net/ Le Logiciel Libre : découvrir, télécharger des logiciels libres]
:[http://www.jesuislibre.org/ Je Suis Libre (Ce site permet de faire sortir de l'ombre tous les développeurs qui conçoivent des projets dans le monde du libre)]
:[http://www.openstickers.com/ Open source &quot;goodies&quot; (anglais)]

* GNU/Linux, Open Source : Formats, Brevets, DRM et Cie
:[http://formats-ouverts.org/ Pour les formats ouverts !]
:[http://stopdrm.info/ StopDRM!]

* GNU/Linux, Free Software et Open Source : Définitions
:[http://www.gnu.org/philosophy/free-sw.fr.html Le projet GNU : Définition d'un logiciel libre]
:[http://www.fsfeurope.org/documents/freesoftware.fr.html FSF Europe - Qu'est-ce que le Logiciel Libre ?]
:[http://fr.wikipedia.org/wiki/Logiciel_libre Logiciel libre - Wikipédia]
:[http://www.livretdulibre.org/ Livret du Libre (Le Livret du Libre est une introduction au Libre)]
:[http://solutions.journaldunet.com/0605/060517-qr-terminologie-open-source.shtml La terminologie de l'Open Source en 7 questions]

== Retiré de la liste initiale (A effacer) ==

::Lien mort &gt; :[http://cafecomputer.com/guide/users-guide.en.html Debian Desktop User's Guide]
::Lien mort &gt; :[http://qref.sourceforge.net/Debian/reference/reference.fr.html Guide de référence pour Debian]
::Lien doublon &gt; :[http://www.debian.org/distrib/packages.fr.html#search_packages Debian Paquets]
* GNU/Linux, distributions Debian (Howto's)
::Lien mort &gt; :[http://wiki.serios.net/wiki/Debian_Java_JRE/JDK_installation Debian Java JRE/JDK installation - SeriosWiki]
::Lien qui renvoi sur forum.debian-fr.org &gt; :[http://www.debian-fr.org/ Debian]
::Lien Déplacé &gt; :[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.txt Simple instructions on how to install nVidia drivers for X11 on Debian]
::Lien mort &gt; :[http://enterprise.linux.com/enterprise/04/11/16/1753219.shtml?tid=47&amp;tid=89 Linux.com | CLI Magic: Colorize your prompt]
::Lien mort &gt; :[http://home.comcast.net/~andrex/Debian-nVidia/index.html Debian-nVidia HOWTO]
::Lien mort &gt; :[http://wiki.frimouvy.org/wakka.php?wiki=JeuxLinux FriWikiWiki:JeuxLinux]
::Lien mort &gt; :[http://www.icon.co.za/~psheer/book/index.html.gz Rute User's Tutorial and Exposition]
::Lien mort &gt; :[http://howtos.linux.com/guides/abs-guide/index.shtml Linux.com - Advanced Bash-Scripting Guide]
::Lien mort &gt; :[http://swpat.ffii.org/vreji/pikta/index.fr.html Musé d'Horreurs des Brevets Logiciels Européens]

--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 06:28 (UTC)

[[Catégorie:Documentation externe]]</text>
      <sha1>d46rcusp20gbbd99cuva2eo9libvkdc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1212</id>
      <parentid>1211</parentid>
      <timestamp>2010-03-29T13:14:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Divers */</comment>
      <text xml:space="preserve" bytes="10978">{{Ébauche|es liens concernant GNU/Linus, la Free Software et l'Open Source}}

Sur cette page sont centralisés tous les liens concernant GNU/Linus, la Free Software et l'Open Source !

== Divers ==

* Recherches ciblée GNU/Linux sur Google :
:[http://www.google.fr/linux Recherche Google ciblée GNU/Linux]
:[http://www.google.com/cse/home?cx=003036737311975801323:yeiooiloi7c Recherche sur forum.debian-fr.org] ou [http://www.google.com/cse/home?cx=003880180303252368328:fw-yrta3-zw Recherche sur forum.debian-fr.org]
:[http://www.google.com/cse/home?cx=015801379623395497354:gw8g39yyvum&amp;hl=fr Recherche ciblée Debian]
:[http://www.google.fr/cse/home?cx=009677488958975547791:vzjkzembgbc Recherche Debian &amp; Ubuntu]

* GNU/Linux, généralités :
:[http://www.trustonme.net/ Trustonme - Site d'entraide orienté Linux et logiciels libres]
:[http://lea-linux.org/ Léa-Linux - Site d’aide collaboratif pour le système d’exploitation GNU/Linux]
:Ce site ne semble plus mis à jour depuis longtemps... [http://www.linuxfrench.net/ LinuxFrench.Net]
:[http://linuxreviews.org/ Linux Reviews (Nouvelles, tutos, Howto) - Site en anglais]

* GNU/Linux, distributions :
:[http://distrowatch.com/ DistroWatch.com: Put the fun back into computing. Use Linux, BSD.]
:[http://www.frozentech.com/content/livecd.php The LiveCD List]

== Debian ==

* GNU/Linux, distributions Debian (en anglais)
:[http://www.debian.org/ Debian]
:[http://wiki.debian.org/ Debian Wiki]
:[http://www.debian-administration.org/ Debian GNU-Linux System Administration Resources]
:[http://www.debian.org/doc/ Debian Documentation]
:[http://www.debian.org/doc/user-manuals Debian Users Manuals]
:[http://www.debian.org/doc/manuals/debian-faq/index.en.html The Debian GNU/Linux FAQ]

:[http://www.togaware.com/linux/survivor/ Debian GNU/Linux Desktop Survival Guide]
:[http://qref.sourceforge.net/ Guide de référence Debian]
:[http://www.debian.org/distrib/packages#search_packages Rechercher un paquet Debian]

* GNU/Linux, distributions Debian (en français)
:[http://www.debian.org/index.fr.html Debian Le système d'exploitation universel]
:[http://forum.debian-fr.org/ &quot;LE&quot; &quot;forum.debian-fr.org&quot;]
:[http://debianworld.org/ Debianworld.org encore un site sur Debian !]
:[http://planet-fr.debian.net/ Planet Debian-FR]
:[http://www.debian.org/doc/manuals/debian-faq/index.fr.html La FAQ Debian GNU/Linux]
:[http://www.michauko.org/docs/debian_testing/index.html Dossier d'installation Debian testing]
:[http://formation-debian.via.ecp.fr/ Formation Debian GNU/Linux]

* GNU/Linux, distributions Debian : Howto Nvidia
:[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.html Simple instructions on how to install nVidia drivers for X11 on Debian]
:[http://www.linux-wizard.net/howto.php?section=3&amp;key=nvidia#agp Debian - HowTo - Nvidia]

* GNU/Linux, distributions Debian : Howto Matériel
:[http://kmuto.jp/debian/hcl/ Vérifiez la compatibilité de votre matériel]
:[http://www.ibiblio.org/pub/linux/docs/HOWTO/translations/fr/html-1page/Webcam-HOWTO.html Guide pratique des webcams]
:[http://mxhaard.free.fr/download.html Pilotes Webcam]
:[http://www.linux-usb.org/USB-guide/book1.html Usb sous Linux]
:[http://fr.tldp.org/HOWTO/lecture/Hardware-HOWTO.html liste de l'ensemble du matériel réputé compatible ou non avec Linux]
:[http://fasterdata.es.net/TCP-tuning//linux.html Linux TCP Tuning]

== Autres Distributions Linux ==

* GNU/Linux - Sidux
:[http://sidux.com/ Site de Sidux - en Anglais]
:[http://manual.sidux.com/fr/welcome-fr.htm Manuel de Sidux en français]

* GNU/Linux - Ubuntu (en anglais)
:[http://www.ubuntulinux.org/ Ubuntu]
:[http://www.ubuntuforums.org/ Ubuntu Official Community &amp; Forums]
:[http://www.ubuntuguide.org/ Unofficial Ubuntu Starter Guide]
:[http://packages.ubuntu.com/ Ubuntu packages]

* GNU/Linux - Ubuntu (en français)
:[http://www.ubuntu-fr.org/ Ubuntu-fr.org]
:[http://forum.ubuntu-fr.org/ Ubuntu-fr.org Forum]
:Ce site n'est plus maintenu depuis Ubuntu 7.10... [http://yekubuntu.free.fr/index.php yeK-Ubuntu]
 
* GNU/Linux - Arch
:[http://archlinuxfr.org/ Arch Linux [FR]
:[http://www.archlinux.org/ Arch Linux [EN]

* GNU/Linux - Mandriva
:[http://www.mandrivalinux.com/en-us/ Mandriva Linux]
:[http://distrowatch.com/table.php?distribution=mandrake DistroWatch.com: Mandriva Linux]
:[http://mandrivausers.org/ MandrakeUsers]
:[http://rpm.pbone.net/ RPM pbone.net]
 
* GNU/Linux - OpenSUSE
:[http://www.opensuse.org/ OpenSUSE]

== GNU/Linux, Dépôts ==

* GNU/Linux, Dépôts (logiciels)
:[http://apt-get.org/ Unofficial APT repositories]
:[http://sourceforge.net/ SourceForge.net]
:[http://freshmeat.net/ freshmeat.net: Welcome to freshmeat.net]
:[http://linuxappfinder.com/ Linux App Finder &quot;catalogue de programmes GNU/Linux&quot;]
:[http://www.gnu.org/software/ GNU - Free Software Foundation (FSF)]
:[http://www.framasoft.net/ Framasoft - Logiciels Libres]
:[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]

* GNU/Linux, Dépôts (logiciels équivalences)
:[http://wiki.linuxquestions.org/wiki/Linux_software_equivalent_to_Windows_software Linux software equivalent to Windows software - LinuxQuestions.org Wiki]
:[http://www.linuxrsp.ru/win-lin-soft/table-eng.html The table of equivalents / replacements / analogs of Windows software in Linux. ]

* GNU/Linux, Dépôts (Jeux)
:[http://www.icculus.org/lgfaq/gamelist.php Linux Gamers Game List]
:[http://forum.hardware.fr/hardwarefr/JeuxVideo/Topic-Unik-Jeux-Linux-Quake-IV-Binaire-dispo-sujet-90039-1.htm#t0 Jeux Linux ]

== GNU/Linux, Howtos et Tutos ==

* GNU/Linux, Howtos et trucs
:[http://www.linux-tips.net/ Linux Minis HowTo]
:[http://www.brunolinux.com/ Tips for Linux Explorers]
:[http://forum.zebulon.fr/index.php?showtopic=17977 Zebulon.fr - Quelques liens pour débuter sous linux]
:[http://beronono.com/wiki-debian/index.php?title=Accueil Le Wiki de forum.debian-fr.org]
:[http://tldp.org/ The Linux Documentation Project]
:[http://jp.barralis.com/linux-man/ Projet de traduction des &quot;man&quot; en français]

* GNU/Linux, Howtos et trucs sur le bash
:[http://www.ukuug.org/events/linux2003/papers/bash_tips/ Bash Tips &amp; Tricks]
:[http://www.cavecanen.org/linux/bashtips.php Pedro's web stuff]
 
* GNU/Linux, Tutos, Guide de l'utilisateur
:[http://www.delafond.org/survielinux/ Guide de Survie du Débutant sous Linux]
:Ce document date de novembre 2000... :[http://www.comptechdoc.org/os/linux/usersguide/ Linux User's Guide (anglais)]
:[http://www.linux-tutorial.info/ Linux Knowledge Base and Tutorial]
 
* GNU/Linux, Programmation
:[http://linuxreviews.org/beginner/abs-guide/ Advanced Bash-Scripting Guide]
:[http://www.freeos.com/guides/lsst/ Linux Shell Scripting Tutorial - A Beginner s handbook]
:[http://www.tuxfiles.org/linuxhelp/cli.html tuXfiles - Linux command line tutorials for newbies]
 
* GNU/Linux, Applications : Gnome
:[http://www.gnome.org/ GNOME: The Free Software Desktop Project]
:[http://www.gnomefr.org/ GNOME-FR (Pays Francophones)]
:[http://www.gnu.org/software/ Software - GNU Project - Free Software Foundation (FSF)]
:[http://www.gnomedesktop.org/ FootNotes | GNOME Desktop News]
:[http://www.gnomejournal.org/ The GNOME Journal]
:[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]
:[http://art.gnome.org/ GNOME Art - Artwork &amp; Themes]
:[http://www.gnome-look.org/ GNOME-Look.org]

== Free Software et Open Source ==

* GNU/Linux, Free Software et Open Source
:[http://www.framasoft.net/ Framasoft - Réseau de sites web collaboratifs, vise à diffuser le logiciel libre] / [http://www.framasoft.net/article3338.html Framasoft : Qu’est-ce qu’un logiciel libre ?]
:[http://en.wikipedia.org/wiki/Portal:Free_software Wikipedia the free encyclopedia : Portal:Free software (anglais)]
:[http://www.fsfeurope.org/index.fr.html FSF Europe - Free Software Foundation Europe (Multilingue)]
:[http://solutions.journaldunet.com/dossiers/libre/sommaire.shtml Le Journal du Net : Dossier Logiciels libres/Open Source]
:[http://www.logiciellibre.net/ LogicielLibre.Net - Premiere ressource francophone sur l'economie des logiciels libres / Open Source]
:[http://www.progilibre.com/ Progilibre.com | La communauté des applications professionnelles en open source]
:[http://www.aful.org/ AFUL (Association Francophone des Utilisateurs de Logiciels Libres)]
:[http://www.generation-libre.com/ Generation Libre - Site d'informations et d'entraide sur les logiciels libres ]
:[http://lelogiciellibre.net/ Le Logiciel Libre : découvrir, télécharger des logiciels libres]
:[http://www.jesuislibre.org/ Je Suis Libre (Ce site permet de faire sortir de l'ombre tous les développeurs qui conçoivent des projets dans le monde du libre)]
:[http://www.openstickers.com/ Open source &quot;goodies&quot; (anglais)]

* GNU/Linux, Open Source : Formats, Brevets, DRM et Cie
:[http://formats-ouverts.org/ Pour les formats ouverts !]
:[http://stopdrm.info/ StopDRM!]

* GNU/Linux, Free Software et Open Source : Définitions
:[http://www.gnu.org/philosophy/free-sw.fr.html Le projet GNU : Définition d'un logiciel libre]
:[http://www.fsfeurope.org/documents/freesoftware.fr.html FSF Europe - Qu'est-ce que le Logiciel Libre ?]
:[http://fr.wikipedia.org/wiki/Logiciel_libre Logiciel libre - Wikipédia]
:[http://www.livretdulibre.org/ Livret du Libre (Le Livret du Libre est une introduction au Libre)]
:[http://solutions.journaldunet.com/0605/060517-qr-terminologie-open-source.shtml La terminologie de l'Open Source en 7 questions]

== Retiré de la liste initiale (A effacer) ==

::Lien mort &gt; :[http://cafecomputer.com/guide/users-guide.en.html Debian Desktop User's Guide]
::Lien mort &gt; :[http://qref.sourceforge.net/Debian/reference/reference.fr.html Guide de référence pour Debian]
::Lien doublon &gt; :[http://www.debian.org/distrib/packages.fr.html#search_packages Debian Paquets]
* GNU/Linux, distributions Debian (Howto's)
::Lien mort &gt; :[http://wiki.serios.net/wiki/Debian_Java_JRE/JDK_installation Debian Java JRE/JDK installation - SeriosWiki]
::Lien qui renvoi sur forum.debian-fr.org &gt; :[http://www.debian-fr.org/ Debian]
::Lien Déplacé &gt; :[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.txt Simple instructions on how to install nVidia drivers for X11 on Debian]
::Lien mort &gt; :[http://enterprise.linux.com/enterprise/04/11/16/1753219.shtml?tid=47&amp;tid=89 Linux.com | CLI Magic: Colorize your prompt]
::Lien mort &gt; :[http://home.comcast.net/~andrex/Debian-nVidia/index.html Debian-nVidia HOWTO]
::Lien mort &gt; :[http://wiki.frimouvy.org/wakka.php?wiki=JeuxLinux FriWikiWiki:JeuxLinux]
::Lien mort &gt; :[http://www.icon.co.za/~psheer/book/index.html.gz Rute User's Tutorial and Exposition]
::Lien mort &gt; :[http://howtos.linux.com/guides/abs-guide/index.shtml Linux.com - Advanced Bash-Scripting Guide]
::Lien mort &gt; :[http://swpat.ffii.org/vreji/pikta/index.fr.html Musé d'Horreurs des Brevets Logiciels Européens]

--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 06:28 (UTC)

[[Catégorie:Documentation externe]]</text>
      <sha1>je0ddyebdlxrcqoy4vaq1qptzqe7s20</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1213</id>
      <parentid>1212</parentid>
      <timestamp>2010-03-29T13:15:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="10978">{{Ébauche|es liens concernant GNU/Linux, la Free Software et l'Open Source}}

Sur cette page sont centralisés tous les liens concernant GNU/Linus, la Free Software et l'Open Source !

== Divers ==

* Recherches ciblée GNU/Linux sur Google :
:[http://www.google.fr/linux Recherche Google ciblée GNU/Linux]
:[http://www.google.com/cse/home?cx=003036737311975801323:yeiooiloi7c Recherche sur forum.debian-fr.org] ou [http://www.google.com/cse/home?cx=003880180303252368328:fw-yrta3-zw Recherche sur forum.debian-fr.org]
:[http://www.google.com/cse/home?cx=015801379623395497354:gw8g39yyvum&amp;hl=fr Recherche ciblée Debian]
:[http://www.google.fr/cse/home?cx=009677488958975547791:vzjkzembgbc Recherche Debian &amp; Ubuntu]

* GNU/Linux, généralités :
:[http://www.trustonme.net/ Trustonme - Site d'entraide orienté Linux et logiciels libres]
:[http://lea-linux.org/ Léa-Linux - Site d’aide collaboratif pour le système d’exploitation GNU/Linux]
:Ce site ne semble plus mis à jour depuis longtemps... [http://www.linuxfrench.net/ LinuxFrench.Net]
:[http://linuxreviews.org/ Linux Reviews (Nouvelles, tutos, Howto) - Site en anglais]

* GNU/Linux, distributions :
:[http://distrowatch.com/ DistroWatch.com: Put the fun back into computing. Use Linux, BSD.]
:[http://www.frozentech.com/content/livecd.php The LiveCD List]

== Debian ==

* GNU/Linux, distributions Debian (en anglais)
:[http://www.debian.org/ Debian]
:[http://wiki.debian.org/ Debian Wiki]
:[http://www.debian-administration.org/ Debian GNU-Linux System Administration Resources]
:[http://www.debian.org/doc/ Debian Documentation]
:[http://www.debian.org/doc/user-manuals Debian Users Manuals]
:[http://www.debian.org/doc/manuals/debian-faq/index.en.html The Debian GNU/Linux FAQ]

:[http://www.togaware.com/linux/survivor/ Debian GNU/Linux Desktop Survival Guide]
:[http://qref.sourceforge.net/ Guide de référence Debian]
:[http://www.debian.org/distrib/packages#search_packages Rechercher un paquet Debian]

* GNU/Linux, distributions Debian (en français)
:[http://www.debian.org/index.fr.html Debian Le système d'exploitation universel]
:[http://forum.debian-fr.org/ &quot;LE&quot; &quot;forum.debian-fr.org&quot;]
:[http://debianworld.org/ Debianworld.org encore un site sur Debian !]
:[http://planet-fr.debian.net/ Planet Debian-FR]
:[http://www.debian.org/doc/manuals/debian-faq/index.fr.html La FAQ Debian GNU/Linux]
:[http://www.michauko.org/docs/debian_testing/index.html Dossier d'installation Debian testing]
:[http://formation-debian.via.ecp.fr/ Formation Debian GNU/Linux]

* GNU/Linux, distributions Debian : Howto Nvidia
:[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.html Simple instructions on how to install nVidia drivers for X11 on Debian]
:[http://www.linux-wizard.net/howto.php?section=3&amp;key=nvidia#agp Debian - HowTo - Nvidia]

* GNU/Linux, distributions Debian : Howto Matériel
:[http://kmuto.jp/debian/hcl/ Vérifiez la compatibilité de votre matériel]
:[http://www.ibiblio.org/pub/linux/docs/HOWTO/translations/fr/html-1page/Webcam-HOWTO.html Guide pratique des webcams]
:[http://mxhaard.free.fr/download.html Pilotes Webcam]
:[http://www.linux-usb.org/USB-guide/book1.html Usb sous Linux]
:[http://fr.tldp.org/HOWTO/lecture/Hardware-HOWTO.html liste de l'ensemble du matériel réputé compatible ou non avec Linux]
:[http://fasterdata.es.net/TCP-tuning//linux.html Linux TCP Tuning]

== Autres Distributions Linux ==

* GNU/Linux - Sidux
:[http://sidux.com/ Site de Sidux - en Anglais]
:[http://manual.sidux.com/fr/welcome-fr.htm Manuel de Sidux en français]

* GNU/Linux - Ubuntu (en anglais)
:[http://www.ubuntulinux.org/ Ubuntu]
:[http://www.ubuntuforums.org/ Ubuntu Official Community &amp; Forums]
:[http://www.ubuntuguide.org/ Unofficial Ubuntu Starter Guide]
:[http://packages.ubuntu.com/ Ubuntu packages]

* GNU/Linux - Ubuntu (en français)
:[http://www.ubuntu-fr.org/ Ubuntu-fr.org]
:[http://forum.ubuntu-fr.org/ Ubuntu-fr.org Forum]
:Ce site n'est plus maintenu depuis Ubuntu 7.10... [http://yekubuntu.free.fr/index.php yeK-Ubuntu]
 
* GNU/Linux - Arch
:[http://archlinuxfr.org/ Arch Linux [FR]
:[http://www.archlinux.org/ Arch Linux [EN]

* GNU/Linux - Mandriva
:[http://www.mandrivalinux.com/en-us/ Mandriva Linux]
:[http://distrowatch.com/table.php?distribution=mandrake DistroWatch.com: Mandriva Linux]
:[http://mandrivausers.org/ MandrakeUsers]
:[http://rpm.pbone.net/ RPM pbone.net]
 
* GNU/Linux - OpenSUSE
:[http://www.opensuse.org/ OpenSUSE]

== GNU/Linux, Dépôts ==

* GNU/Linux, Dépôts (logiciels)
:[http://apt-get.org/ Unofficial APT repositories]
:[http://sourceforge.net/ SourceForge.net]
:[http://freshmeat.net/ freshmeat.net: Welcome to freshmeat.net]
:[http://linuxappfinder.com/ Linux App Finder &quot;catalogue de programmes GNU/Linux&quot;]
:[http://www.gnu.org/software/ GNU - Free Software Foundation (FSF)]
:[http://www.framasoft.net/ Framasoft - Logiciels Libres]
:[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]

* GNU/Linux, Dépôts (logiciels équivalences)
:[http://wiki.linuxquestions.org/wiki/Linux_software_equivalent_to_Windows_software Linux software equivalent to Windows software - LinuxQuestions.org Wiki]
:[http://www.linuxrsp.ru/win-lin-soft/table-eng.html The table of equivalents / replacements / analogs of Windows software in Linux. ]

* GNU/Linux, Dépôts (Jeux)
:[http://www.icculus.org/lgfaq/gamelist.php Linux Gamers Game List]
:[http://forum.hardware.fr/hardwarefr/JeuxVideo/Topic-Unik-Jeux-Linux-Quake-IV-Binaire-dispo-sujet-90039-1.htm#t0 Jeux Linux ]

== GNU/Linux, Howtos et Tutos ==

* GNU/Linux, Howtos et trucs
:[http://www.linux-tips.net/ Linux Minis HowTo]
:[http://www.brunolinux.com/ Tips for Linux Explorers]
:[http://forum.zebulon.fr/index.php?showtopic=17977 Zebulon.fr - Quelques liens pour débuter sous linux]
:[http://beronono.com/wiki-debian/index.php?title=Accueil Le Wiki de forum.debian-fr.org]
:[http://tldp.org/ The Linux Documentation Project]
:[http://jp.barralis.com/linux-man/ Projet de traduction des &quot;man&quot; en français]

* GNU/Linux, Howtos et trucs sur le bash
:[http://www.ukuug.org/events/linux2003/papers/bash_tips/ Bash Tips &amp; Tricks]
:[http://www.cavecanen.org/linux/bashtips.php Pedro's web stuff]
 
* GNU/Linux, Tutos, Guide de l'utilisateur
:[http://www.delafond.org/survielinux/ Guide de Survie du Débutant sous Linux]
:Ce document date de novembre 2000... :[http://www.comptechdoc.org/os/linux/usersguide/ Linux User's Guide (anglais)]
:[http://www.linux-tutorial.info/ Linux Knowledge Base and Tutorial]
 
* GNU/Linux, Programmation
:[http://linuxreviews.org/beginner/abs-guide/ Advanced Bash-Scripting Guide]
:[http://www.freeos.com/guides/lsst/ Linux Shell Scripting Tutorial - A Beginner s handbook]
:[http://www.tuxfiles.org/linuxhelp/cli.html tuXfiles - Linux command line tutorials for newbies]
 
* GNU/Linux, Applications : Gnome
:[http://www.gnome.org/ GNOME: The Free Software Desktop Project]
:[http://www.gnomefr.org/ GNOME-FR (Pays Francophones)]
:[http://www.gnu.org/software/ Software - GNU Project - Free Software Foundation (FSF)]
:[http://www.gnomedesktop.org/ FootNotes | GNOME Desktop News]
:[http://www.gnomejournal.org/ The GNOME Journal]
:[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]
:[http://art.gnome.org/ GNOME Art - Artwork &amp; Themes]
:[http://www.gnome-look.org/ GNOME-Look.org]

== Free Software et Open Source ==

* GNU/Linux, Free Software et Open Source
:[http://www.framasoft.net/ Framasoft - Réseau de sites web collaboratifs, vise à diffuser le logiciel libre] / [http://www.framasoft.net/article3338.html Framasoft : Qu’est-ce qu’un logiciel libre ?]
:[http://en.wikipedia.org/wiki/Portal:Free_software Wikipedia the free encyclopedia : Portal:Free software (anglais)]
:[http://www.fsfeurope.org/index.fr.html FSF Europe - Free Software Foundation Europe (Multilingue)]
:[http://solutions.journaldunet.com/dossiers/libre/sommaire.shtml Le Journal du Net : Dossier Logiciels libres/Open Source]
:[http://www.logiciellibre.net/ LogicielLibre.Net - Premiere ressource francophone sur l'economie des logiciels libres / Open Source]
:[http://www.progilibre.com/ Progilibre.com | La communauté des applications professionnelles en open source]
:[http://www.aful.org/ AFUL (Association Francophone des Utilisateurs de Logiciels Libres)]
:[http://www.generation-libre.com/ Generation Libre - Site d'informations et d'entraide sur les logiciels libres ]
:[http://lelogiciellibre.net/ Le Logiciel Libre : découvrir, télécharger des logiciels libres]
:[http://www.jesuislibre.org/ Je Suis Libre (Ce site permet de faire sortir de l'ombre tous les développeurs qui conçoivent des projets dans le monde du libre)]
:[http://www.openstickers.com/ Open source &quot;goodies&quot; (anglais)]

* GNU/Linux, Open Source : Formats, Brevets, DRM et Cie
:[http://formats-ouverts.org/ Pour les formats ouverts !]
:[http://stopdrm.info/ StopDRM!]

* GNU/Linux, Free Software et Open Source : Définitions
:[http://www.gnu.org/philosophy/free-sw.fr.html Le projet GNU : Définition d'un logiciel libre]
:[http://www.fsfeurope.org/documents/freesoftware.fr.html FSF Europe - Qu'est-ce que le Logiciel Libre ?]
:[http://fr.wikipedia.org/wiki/Logiciel_libre Logiciel libre - Wikipédia]
:[http://www.livretdulibre.org/ Livret du Libre (Le Livret du Libre est une introduction au Libre)]
:[http://solutions.journaldunet.com/0605/060517-qr-terminologie-open-source.shtml La terminologie de l'Open Source en 7 questions]

== Retiré de la liste initiale (A effacer) ==

::Lien mort &gt; :[http://cafecomputer.com/guide/users-guide.en.html Debian Desktop User's Guide]
::Lien mort &gt; :[http://qref.sourceforge.net/Debian/reference/reference.fr.html Guide de référence pour Debian]
::Lien doublon &gt; :[http://www.debian.org/distrib/packages.fr.html#search_packages Debian Paquets]
* GNU/Linux, distributions Debian (Howto's)
::Lien mort &gt; :[http://wiki.serios.net/wiki/Debian_Java_JRE/JDK_installation Debian Java JRE/JDK installation - SeriosWiki]
::Lien qui renvoi sur forum.debian-fr.org &gt; :[http://www.debian-fr.org/ Debian]
::Lien Déplacé &gt; :[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.txt Simple instructions on how to install nVidia drivers for X11 on Debian]
::Lien mort &gt; :[http://enterprise.linux.com/enterprise/04/11/16/1753219.shtml?tid=47&amp;tid=89 Linux.com | CLI Magic: Colorize your prompt]
::Lien mort &gt; :[http://home.comcast.net/~andrex/Debian-nVidia/index.html Debian-nVidia HOWTO]
::Lien mort &gt; :[http://wiki.frimouvy.org/wakka.php?wiki=JeuxLinux FriWikiWiki:JeuxLinux]
::Lien mort &gt; :[http://www.icon.co.za/~psheer/book/index.html.gz Rute User's Tutorial and Exposition]
::Lien mort &gt; :[http://howtos.linux.com/guides/abs-guide/index.shtml Linux.com - Advanced Bash-Scripting Guide]
::Lien mort &gt; :[http://swpat.ffii.org/vreji/pikta/index.fr.html Musé d'Horreurs des Brevets Logiciels Européens]

--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 06:28 (UTC)

[[Catégorie:Documentation externe]]</text>
      <sha1>klrfl5vegqdpvngme1edqiybs7vti3k</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1214</id>
      <parentid>1213</parentid>
      <timestamp>2010-03-29T19:54:02Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <minor/>
      <comment>bouh la faute sur le mot &quot;linux&quot;</comment>
      <text xml:space="preserve" bytes="10978">{{Ébauche|es liens concernant GNU/Linux, la Free Software et l'Open Source}}

Sur cette page sont centralisés tous les liens concernant GNU/Linux, la Free Software et l'Open Source !

== Divers ==

* Recherches ciblée GNU/Linux sur Google :
:[http://www.google.fr/linux Recherche Google ciblée GNU/Linux]
:[http://www.google.com/cse/home?cx=003036737311975801323:yeiooiloi7c Recherche sur forum.debian-fr.org] ou [http://www.google.com/cse/home?cx=003880180303252368328:fw-yrta3-zw Recherche sur forum.debian-fr.org]
:[http://www.google.com/cse/home?cx=015801379623395497354:gw8g39yyvum&amp;hl=fr Recherche ciblée Debian]
:[http://www.google.fr/cse/home?cx=009677488958975547791:vzjkzembgbc Recherche Debian &amp; Ubuntu]

* GNU/Linux, généralités :
:[http://www.trustonme.net/ Trustonme - Site d'entraide orienté Linux et logiciels libres]
:[http://lea-linux.org/ Léa-Linux - Site d’aide collaboratif pour le système d’exploitation GNU/Linux]
:Ce site ne semble plus mis à jour depuis longtemps... [http://www.linuxfrench.net/ LinuxFrench.Net]
:[http://linuxreviews.org/ Linux Reviews (Nouvelles, tutos, Howto) - Site en anglais]

* GNU/Linux, distributions :
:[http://distrowatch.com/ DistroWatch.com: Put the fun back into computing. Use Linux, BSD.]
:[http://www.frozentech.com/content/livecd.php The LiveCD List]

== Debian ==

* GNU/Linux, distributions Debian (en anglais)
:[http://www.debian.org/ Debian]
:[http://wiki.debian.org/ Debian Wiki]
:[http://www.debian-administration.org/ Debian GNU-Linux System Administration Resources]
:[http://www.debian.org/doc/ Debian Documentation]
:[http://www.debian.org/doc/user-manuals Debian Users Manuals]
:[http://www.debian.org/doc/manuals/debian-faq/index.en.html The Debian GNU/Linux FAQ]

:[http://www.togaware.com/linux/survivor/ Debian GNU/Linux Desktop Survival Guide]
:[http://qref.sourceforge.net/ Guide de référence Debian]
:[http://www.debian.org/distrib/packages#search_packages Rechercher un paquet Debian]

* GNU/Linux, distributions Debian (en français)
:[http://www.debian.org/index.fr.html Debian Le système d'exploitation universel]
:[http://forum.debian-fr.org/ &quot;LE&quot; &quot;forum.debian-fr.org&quot;]
:[http://debianworld.org/ Debianworld.org encore un site sur Debian !]
:[http://planet-fr.debian.net/ Planet Debian-FR]
:[http://www.debian.org/doc/manuals/debian-faq/index.fr.html La FAQ Debian GNU/Linux]
:[http://www.michauko.org/docs/debian_testing/index.html Dossier d'installation Debian testing]
:[http://formation-debian.via.ecp.fr/ Formation Debian GNU/Linux]

* GNU/Linux, distributions Debian : Howto Nvidia
:[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.html Simple instructions on how to install nVidia drivers for X11 on Debian]
:[http://www.linux-wizard.net/howto.php?section=3&amp;key=nvidia#agp Debian - HowTo - Nvidia]

* GNU/Linux, distributions Debian : Howto Matériel
:[http://kmuto.jp/debian/hcl/ Vérifiez la compatibilité de votre matériel]
:[http://www.ibiblio.org/pub/linux/docs/HOWTO/translations/fr/html-1page/Webcam-HOWTO.html Guide pratique des webcams]
:[http://mxhaard.free.fr/download.html Pilotes Webcam]
:[http://www.linux-usb.org/USB-guide/book1.html Usb sous Linux]
:[http://fr.tldp.org/HOWTO/lecture/Hardware-HOWTO.html liste de l'ensemble du matériel réputé compatible ou non avec Linux]
:[http://fasterdata.es.net/TCP-tuning//linux.html Linux TCP Tuning]

== Autres Distributions Linux ==

* GNU/Linux - Sidux
:[http://sidux.com/ Site de Sidux - en Anglais]
:[http://manual.sidux.com/fr/welcome-fr.htm Manuel de Sidux en français]

* GNU/Linux - Ubuntu (en anglais)
:[http://www.ubuntulinux.org/ Ubuntu]
:[http://www.ubuntuforums.org/ Ubuntu Official Community &amp; Forums]
:[http://www.ubuntuguide.org/ Unofficial Ubuntu Starter Guide]
:[http://packages.ubuntu.com/ Ubuntu packages]

* GNU/Linux - Ubuntu (en français)
:[http://www.ubuntu-fr.org/ Ubuntu-fr.org]
:[http://forum.ubuntu-fr.org/ Ubuntu-fr.org Forum]
:Ce site n'est plus maintenu depuis Ubuntu 7.10... [http://yekubuntu.free.fr/index.php yeK-Ubuntu]
 
* GNU/Linux - Arch
:[http://archlinuxfr.org/ Arch Linux [FR]
:[http://www.archlinux.org/ Arch Linux [EN]

* GNU/Linux - Mandriva
:[http://www.mandrivalinux.com/en-us/ Mandriva Linux]
:[http://distrowatch.com/table.php?distribution=mandrake DistroWatch.com: Mandriva Linux]
:[http://mandrivausers.org/ MandrakeUsers]
:[http://rpm.pbone.net/ RPM pbone.net]
 
* GNU/Linux - OpenSUSE
:[http://www.opensuse.org/ OpenSUSE]

== GNU/Linux, Dépôts ==

* GNU/Linux, Dépôts (logiciels)
:[http://apt-get.org/ Unofficial APT repositories]
:[http://sourceforge.net/ SourceForge.net]
:[http://freshmeat.net/ freshmeat.net: Welcome to freshmeat.net]
:[http://linuxappfinder.com/ Linux App Finder &quot;catalogue de programmes GNU/Linux&quot;]
:[http://www.gnu.org/software/ GNU - Free Software Foundation (FSF)]
:[http://www.framasoft.net/ Framasoft - Logiciels Libres]
:[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]

* GNU/Linux, Dépôts (logiciels équivalences)
:[http://wiki.linuxquestions.org/wiki/Linux_software_equivalent_to_Windows_software Linux software equivalent to Windows software - LinuxQuestions.org Wiki]
:[http://www.linuxrsp.ru/win-lin-soft/table-eng.html The table of equivalents / replacements / analogs of Windows software in Linux. ]

* GNU/Linux, Dépôts (Jeux)
:[http://www.icculus.org/lgfaq/gamelist.php Linux Gamers Game List]
:[http://forum.hardware.fr/hardwarefr/JeuxVideo/Topic-Unik-Jeux-Linux-Quake-IV-Binaire-dispo-sujet-90039-1.htm#t0 Jeux Linux ]

== GNU/Linux, Howtos et Tutos ==

* GNU/Linux, Howtos et trucs
:[http://www.linux-tips.net/ Linux Minis HowTo]
:[http://www.brunolinux.com/ Tips for Linux Explorers]
:[http://forum.zebulon.fr/index.php?showtopic=17977 Zebulon.fr - Quelques liens pour débuter sous linux]
:[http://beronono.com/wiki-debian/index.php?title=Accueil Le Wiki de forum.debian-fr.org]
:[http://tldp.org/ The Linux Documentation Project]
:[http://jp.barralis.com/linux-man/ Projet de traduction des &quot;man&quot; en français]

* GNU/Linux, Howtos et trucs sur le bash
:[http://www.ukuug.org/events/linux2003/papers/bash_tips/ Bash Tips &amp; Tricks]
:[http://www.cavecanen.org/linux/bashtips.php Pedro's web stuff]
 
* GNU/Linux, Tutos, Guide de l'utilisateur
:[http://www.delafond.org/survielinux/ Guide de Survie du Débutant sous Linux]
:Ce document date de novembre 2000... :[http://www.comptechdoc.org/os/linux/usersguide/ Linux User's Guide (anglais)]
:[http://www.linux-tutorial.info/ Linux Knowledge Base and Tutorial]
 
* GNU/Linux, Programmation
:[http://linuxreviews.org/beginner/abs-guide/ Advanced Bash-Scripting Guide]
:[http://www.freeos.com/guides/lsst/ Linux Shell Scripting Tutorial - A Beginner s handbook]
:[http://www.tuxfiles.org/linuxhelp/cli.html tuXfiles - Linux command line tutorials for newbies]
 
* GNU/Linux, Applications : Gnome
:[http://www.gnome.org/ GNOME: The Free Software Desktop Project]
:[http://www.gnomefr.org/ GNOME-FR (Pays Francophones)]
:[http://www.gnu.org/software/ Software - GNU Project - Free Software Foundation (FSF)]
:[http://www.gnomedesktop.org/ FootNotes | GNOME Desktop News]
:[http://www.gnomejournal.org/ The GNOME Journal]
:[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]
:[http://art.gnome.org/ GNOME Art - Artwork &amp; Themes]
:[http://www.gnome-look.org/ GNOME-Look.org]

== Free Software et Open Source ==

* GNU/Linux, Free Software et Open Source
:[http://www.framasoft.net/ Framasoft - Réseau de sites web collaboratifs, vise à diffuser le logiciel libre] / [http://www.framasoft.net/article3338.html Framasoft : Qu’est-ce qu’un logiciel libre ?]
:[http://en.wikipedia.org/wiki/Portal:Free_software Wikipedia the free encyclopedia : Portal:Free software (anglais)]
:[http://www.fsfeurope.org/index.fr.html FSF Europe - Free Software Foundation Europe (Multilingue)]
:[http://solutions.journaldunet.com/dossiers/libre/sommaire.shtml Le Journal du Net : Dossier Logiciels libres/Open Source]
:[http://www.logiciellibre.net/ LogicielLibre.Net - Premiere ressource francophone sur l'economie des logiciels libres / Open Source]
:[http://www.progilibre.com/ Progilibre.com | La communauté des applications professionnelles en open source]
:[http://www.aful.org/ AFUL (Association Francophone des Utilisateurs de Logiciels Libres)]
:[http://www.generation-libre.com/ Generation Libre - Site d'informations et d'entraide sur les logiciels libres ]
:[http://lelogiciellibre.net/ Le Logiciel Libre : découvrir, télécharger des logiciels libres]
:[http://www.jesuislibre.org/ Je Suis Libre (Ce site permet de faire sortir de l'ombre tous les développeurs qui conçoivent des projets dans le monde du libre)]
:[http://www.openstickers.com/ Open source &quot;goodies&quot; (anglais)]

* GNU/Linux, Open Source : Formats, Brevets, DRM et Cie
:[http://formats-ouverts.org/ Pour les formats ouverts !]
:[http://stopdrm.info/ StopDRM!]

* GNU/Linux, Free Software et Open Source : Définitions
:[http://www.gnu.org/philosophy/free-sw.fr.html Le projet GNU : Définition d'un logiciel libre]
:[http://www.fsfeurope.org/documents/freesoftware.fr.html FSF Europe - Qu'est-ce que le Logiciel Libre ?]
:[http://fr.wikipedia.org/wiki/Logiciel_libre Logiciel libre - Wikipédia]
:[http://www.livretdulibre.org/ Livret du Libre (Le Livret du Libre est une introduction au Libre)]
:[http://solutions.journaldunet.com/0605/060517-qr-terminologie-open-source.shtml La terminologie de l'Open Source en 7 questions]

== Retiré de la liste initiale (A effacer) ==

::Lien mort &gt; :[http://cafecomputer.com/guide/users-guide.en.html Debian Desktop User's Guide]
::Lien mort &gt; :[http://qref.sourceforge.net/Debian/reference/reference.fr.html Guide de référence pour Debian]
::Lien doublon &gt; :[http://www.debian.org/distrib/packages.fr.html#search_packages Debian Paquets]
* GNU/Linux, distributions Debian (Howto's)
::Lien mort &gt; :[http://wiki.serios.net/wiki/Debian_Java_JRE/JDK_installation Debian Java JRE/JDK installation - SeriosWiki]
::Lien qui renvoi sur forum.debian-fr.org &gt; :[http://www.debian-fr.org/ Debian]
::Lien Déplacé &gt; :[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.txt Simple instructions on how to install nVidia drivers for X11 on Debian]
::Lien mort &gt; :[http://enterprise.linux.com/enterprise/04/11/16/1753219.shtml?tid=47&amp;tid=89 Linux.com | CLI Magic: Colorize your prompt]
::Lien mort &gt; :[http://home.comcast.net/~andrex/Debian-nVidia/index.html Debian-nVidia HOWTO]
::Lien mort &gt; :[http://wiki.frimouvy.org/wakka.php?wiki=JeuxLinux FriWikiWiki:JeuxLinux]
::Lien mort &gt; :[http://www.icon.co.za/~psheer/book/index.html.gz Rute User's Tutorial and Exposition]
::Lien mort &gt; :[http://howtos.linux.com/guides/abs-guide/index.shtml Linux.com - Advanced Bash-Scripting Guide]
::Lien mort &gt; :[http://swpat.ffii.org/vreji/pikta/index.fr.html Musé d'Horreurs des Brevets Logiciels Européens]

--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 06:28 (UTC)

[[Catégorie:Documentation externe]]</text>
      <sha1>pf50mjbxtuc1j3gcqwya3dm32gcn3kh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1215</id>
      <parentid>1214</parentid>
      <timestamp>2010-03-30T05:01:48Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="11289">{{Ébauche|es liens concernant GNU/Linux, la Free Software et l'Open Source}}

Sur cette page sont centralisés tous les liens concernant GNU/Linux, la Free Software et l'Open Source !

== Divers ==

* Recherches ciblée GNU/Linux sur Google :
:[http://www.google.fr/linux Recherche Google ciblée GNU/Linux]
:[http://www.google.com/cse/home?cx=003036737311975801323:yeiooiloi7c Recherche sur forum.debian-fr.org] ou [http://www.google.com/cse/home?cx=003880180303252368328:fw-yrta3-zw Recherche sur forum.debian-fr.org]
:[http://www.google.com/cse/home?cx=015801379623395497354:gw8g39yyvum&amp;hl=fr Recherche ciblée Debian]
:[http://www.google.fr/cse/home?cx=009677488958975547791:vzjkzembgbc Recherche Debian &amp; Ubuntu]

* GNU/Linux, généralités :
:[http://www.trustonme.net/ Trustonme - Site d'entraide orienté Linux et logiciels libres]
:[http://lea-linux.org/ Léa-Linux - Site d’aide collaboratif pour le système d’exploitation GNU/Linux]
:Ce site ne semble plus mis à jour depuis longtemps... [http://www.linuxfrench.net/ LinuxFrench.Net]
:[http://linuxreviews.org/ Linux Reviews (Nouvelles, tutos, Howto) - Site en anglais]

* GNU/Linux, distributions :
:[http://distrowatch.com/ DistroWatch.com: Put the fun back into computing. Use Linux, BSD.]
:[http://www.frozentech.com/content/livecd.php The LiveCD List]

== Debian ==

* GNU/Linux, distributions Debian (en anglais)
:[http://www.debian.org/ Debian]
:[http://wiki.debian.org/ Debian Wiki]
:[http://www.debian-administration.org/ Debian GNU-Linux System Administration Resources]
:[http://www.debian.org/doc/ Debian Documentation]
:[http://www.debian.org/doc/user-manuals Debian Users Manuals]
:[http://www.debian.org/doc/manuals/debian-faq/index.en.html The Debian GNU/Linux FAQ]

:[http://www.togaware.com/linux/survivor/ Debian GNU/Linux Desktop Survival Guide]
:[http://qref.sourceforge.net/ Guide de référence Debian]
:[http://www.debian.org/distrib/packages#search_packages Rechercher un paquet Debian]

* GNU/Linux, distributions Debian (en français)
:[http://www.debian.org/index.fr.html Debian Le système d'exploitation universel]
:[http://forum.debian-fr.org/ &quot;LE&quot; &quot;forum.debian-fr.org&quot;]
:[http://debianworld.org/ Debianworld.org encore un site sur Debian !]
:[http://planet-fr.debian.net/ Planet Debian-FR]
:[http://www.debian.org/doc/manuals/debian-faq/index.fr.html La FAQ Debian GNU/Linux]
:[http://www.michauko.org/docs/debian_testing/index.html Dossier d'installation Debian testing]
:[http://formation-debian.via.ecp.fr/ Formation Debian GNU/Linux]

* GNU/Linux, distributions Debian : Howto Nvidia
:[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.html Simple instructions on how to install nVidia drivers for X11 on Debian]
:[http://www.linux-wizard.net/howto.php?section=3&amp;key=nvidia#agp Debian - HowTo - Nvidia]

* GNU/Linux, distributions Debian : Howto Matériel
:[http://kmuto.jp/debian/hcl/ Vérifiez la compatibilité de votre matériel]
:[http://www.ibiblio.org/pub/linux/docs/HOWTO/translations/fr/html-1page/Webcam-HOWTO.html Guide pratique des webcams]
:[http://mxhaard.free.fr/download.html Pilotes Webcam]
:[http://www.linux-usb.org/USB-guide/book1.html Usb sous Linux]
:[http://fr.tldp.org/HOWTO/lecture/Hardware-HOWTO.html liste de l'ensemble du matériel réputé compatible ou non avec Linux]
:[http://fasterdata.es.net/TCP-tuning//linux.html Linux TCP Tuning]

== Autres Distributions Linux ==

* GNU/Linux - Knoppix
:[http://knoppix.fr/ une distribution GNU/Linux basée sur Debian]
:[http://www.knoppix.net/ Knoppix is a Live Linux CD / Live DVD based on Debian GNU/Linux]

* GNU/Linux - Sidux
:[http://manual.sidux.com/fr/welcome-fr.htm Manuel de Sidux en français]
:[http://sidux.com/ Site de Sidux - What is sidux? - Debian Hot &amp; Spicy!]

* GNU/Linux - Ubuntu (en anglais)
:[http://www.ubuntulinux.org/ Ubuntu]
:[http://www.ubuntuforums.org/ Ubuntu Official Community &amp; Forums]
:[http://www.ubuntuguide.org/ Unofficial Ubuntu Starter Guide]
:[http://packages.ubuntu.com/ Ubuntu packages]

* GNU/Linux - Ubuntu (en français)
:[http://www.ubuntu-fr.org/ Ubuntu-fr.org]
:[http://forum.ubuntu-fr.org/ Ubuntu-fr.org Forum]
:Ce site n'est plus maintenu depuis Ubuntu 7.10... [http://yekubuntu.free.fr/index.php yeK-Ubuntu]
 
* GNU/Linux - Arch
:[http://archlinuxfr.org/ Arch Linux [FR]
:[http://www.archlinux.org/ Arch Linux [EN]

* GNU/Linux - Mandriva
:[http://www.mandrivalinux.com/en-us/ Mandriva Linux]
:[http://distrowatch.com/table.php?distribution=mandrake DistroWatch.com: Mandriva Linux]
:[http://mandrivausers.org/ MandrakeUsers]
:[http://rpm.pbone.net/ RPM pbone.net]
 
* GNU/Linux - OpenSUSE
:[http://www.opensuse.org/ OpenSUSE]

== GNU/Linux, Dépôts ==

* GNU/Linux, Dépôts (logiciels)
:[http://apt-get.org/ Unofficial APT repositories]
:[http://sourceforge.net/ SourceForge.net]
:[http://freshmeat.net/ freshmeat.net: Welcome to freshmeat.net]
:[http://linuxappfinder.com/ Linux App Finder &quot;catalogue de programmes GNU/Linux&quot;]
:[http://www.gnu.org/software/ GNU - Free Software Foundation (FSF)]
:[http://www.framasoft.net/ Framasoft - Logiciels Libres]
:[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]

* GNU/Linux, Dépôts (logiciels équivalences)
:[http://wiki.linuxquestions.org/wiki/Linux_software_equivalent_to_Windows_software Linux software equivalent to Windows software - LinuxQuestions.org Wiki]
:[http://www.linuxrsp.ru/win-lin-soft/table-eng.html The table of equivalents / replacements / analogs of Windows software in Linux. ]

* GNU/Linux, Dépôts (Jeux)
:[http://www.icculus.org/lgfaq/gamelist.php Linux Gamers Game List]
:[http://forum.hardware.fr/hardwarefr/JeuxVideo/Topic-Unik-Jeux-Linux-Quake-IV-Binaire-dispo-sujet-90039-1.htm#t0 Jeux Linux ]

== GNU/Linux, Howtos et Tutos ==

* GNU/Linux, Howtos et trucs
:[http://www.linux-tips.net/ Linux Minis HowTo]
:[http://www.brunolinux.com/ Tips for Linux Explorers]
:[http://forum.zebulon.fr/index.php?showtopic=17977 Zebulon.fr - Quelques liens pour débuter sous linux]
:[http://beronono.com/wiki-debian/index.php?title=Accueil Le Wiki de forum.debian-fr.org]
:[http://tldp.org/ The Linux Documentation Project] et [http://tldp.org/HOWTO/Francophones-HOWTO.html Le Francophones-HOWTO : Linux &amp; la langue française]
:[http://jp.barralis.com/linux-man/ Projet de traduction des &quot;man&quot; en français]

* GNU/Linux, Howtos et trucs sur le bash
:[http://www.ukuug.org/events/linux2003/papers/bash_tips/ Bash Tips &amp; Tricks]
:[http://www.cavecanen.org/linux/bashtips.php Pedro's web stuff]
 
* GNU/Linux, Tutos, Guide de l'utilisateur
:[http://www.delafond.org/survielinux/ Guide de Survie du Débutant sous Linux]
:Ce document date de novembre 2000... :[http://www.comptechdoc.org/os/linux/usersguide/ Linux User's Guide (anglais)]
:[http://www.linux-tutorial.info/ Linux Knowledge Base and Tutorial]
 
* GNU/Linux, Programmation
:[http://linuxreviews.org/beginner/abs-guide/ Advanced Bash-Scripting Guide]
:[http://www.freeos.com/guides/lsst/ Linux Shell Scripting Tutorial - A Beginner s handbook]
:[http://www.tuxfiles.org/linuxhelp/cli.html tuXfiles - Linux command line tutorials for newbies]
 
* GNU/Linux, Applications : Gnome
:[http://www.gnome.org/ GNOME: The Free Software Desktop Project]
:[http://www.gnomefr.org/ GNOME-FR (Pays Francophones)]
:[http://www.gnu.org/software/ Software - GNU Project - Free Software Foundation (FSF)]
:[http://www.gnomedesktop.org/ FootNotes | GNOME Desktop News]
:[http://www.gnomejournal.org/ The GNOME Journal]
:[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]
:[http://art.gnome.org/ GNOME Art - Artwork &amp; Themes]
:[http://www.gnome-look.org/ GNOME-Look.org]

== Free Software et Open Source ==

* GNU/Linux, Free Software et Open Source
:[http://www.framasoft.net/ Framasoft - Réseau de sites web collaboratifs, vise à diffuser le logiciel libre] / [http://www.framasoft.net/article3338.html Framasoft : Qu’est-ce qu’un logiciel libre ?]
:[http://en.wikipedia.org/wiki/Portal:Free_software Wikipedia the free encyclopedia : Portal:Free software (anglais)]
:[http://www.fsfeurope.org/index.fr.html FSF Europe - Free Software Foundation Europe (Multilingue)]
:[http://solutions.journaldunet.com/dossiers/libre/sommaire.shtml Le Journal du Net : Dossier Logiciels libres/Open Source]
:[http://www.logiciellibre.net/ LogicielLibre.Net - Premiere ressource francophone sur l'economie des logiciels libres / Open Source]
:[http://www.progilibre.com/ Progilibre.com | La communauté des applications professionnelles en open source]
:[http://www.aful.org/ AFUL (Association Francophone des Utilisateurs de Logiciels Libres)]
:[http://www.generation-libre.com/ Generation Libre - Site d'informations et d'entraide sur les logiciels libres ]
:[http://lelogiciellibre.net/ Le Logiciel Libre : découvrir, télécharger des logiciels libres]
:[http://www.jesuislibre.org/ Je Suis Libre (Ce site permet de faire sortir de l'ombre tous les développeurs qui conçoivent des projets dans le monde du libre)]
:[http://www.openstickers.com/ Open source &quot;goodies&quot; (anglais)]

* GNU/Linux, Open Source : Formats, Brevets, DRM et Cie
:[http://formats-ouverts.org/ Pour les formats ouverts !]
:[http://stopdrm.info/ StopDRM!]

* GNU/Linux, Free Software et Open Source : Définitions
:[http://www.gnu.org/philosophy/free-sw.fr.html Le projet GNU : Définition d'un logiciel libre]
:[http://www.fsfeurope.org/documents/freesoftware.fr.html FSF Europe - Qu'est-ce que le Logiciel Libre ?]
:[http://fr.wikipedia.org/wiki/Logiciel_libre Logiciel libre - Wikipédia]
:[http://www.livretdulibre.org/ Livret du Libre (Le Livret du Libre est une introduction au Libre)]
:[http://solutions.journaldunet.com/0605/060517-qr-terminologie-open-source.shtml La terminologie de l'Open Source en 7 questions]

== Retiré de la liste initiale (A effacer) ==

::Lien mort &gt; :[http://cafecomputer.com/guide/users-guide.en.html Debian Desktop User's Guide]
::Lien mort &gt; :[http://qref.sourceforge.net/Debian/reference/reference.fr.html Guide de référence pour Debian]
::Lien doublon &gt; :[http://www.debian.org/distrib/packages.fr.html#search_packages Debian Paquets]
* GNU/Linux, distributions Debian (Howto's)
::Lien mort &gt; :[http://wiki.serios.net/wiki/Debian_Java_JRE/JDK_installation Debian Java JRE/JDK installation - SeriosWiki]
::Lien qui renvoi sur forum.debian-fr.org &gt; :[http://www.debian-fr.org/ Debian]
::Lien Déplacé &gt; :[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.txt Simple instructions on how to install nVidia drivers for X11 on Debian]
::Lien mort &gt; :[http://enterprise.linux.com/enterprise/04/11/16/1753219.shtml?tid=47&amp;tid=89 Linux.com | CLI Magic: Colorize your prompt]
::Lien mort &gt; :[http://home.comcast.net/~andrex/Debian-nVidia/index.html Debian-nVidia HOWTO]
::Lien mort &gt; :[http://wiki.frimouvy.org/wakka.php?wiki=JeuxLinux FriWikiWiki:JeuxLinux]
::Lien mort &gt; :[http://www.icon.co.za/~psheer/book/index.html.gz Rute User's Tutorial and Exposition]
::Lien mort &gt; :[http://howtos.linux.com/guides/abs-guide/index.shtml Linux.com - Advanced Bash-Scripting Guide]
::Lien mort &gt; :[http://swpat.ffii.org/vreji/pikta/index.fr.html Musé d'Horreurs des Brevets Logiciels Européens]

--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 06:28 (UTC)

[[Catégorie:Documentation externe]]</text>
      <sha1>htpacuckhmn9eotcnmc6j9245jzf1yy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1216</id>
      <parentid>1215</parentid>
      <timestamp>2010-03-30T06:02:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Divers */</comment>
      <text xml:space="preserve" bytes="11304">{{Ébauche|es liens concernant GNU/Linux, la Free Software et l'Open Source}}

Sur cette page sont centralisés tous les liens concernant GNU/Linux, la Free Software et l'Open Source !

== Divers ==

=== Recherches ciblée GNU/Linux sur Google :===
:[http://www.google.fr/linux Recherche Google ciblée GNU/Linux]
:[http://www.google.com/cse/home?cx=003036737311975801323:yeiooiloi7c Recherche sur forum.debian-fr.org] ou [http://www.google.com/cse/home?cx=003880180303252368328:fw-yrta3-zw Recherche sur forum.debian-fr.org]
:[http://www.google.com/cse/home?cx=015801379623395497354:gw8g39yyvum&amp;hl=fr Recherche ciblée Debian]
:[http://www.google.fr/cse/home?cx=009677488958975547791:vzjkzembgbc Recherche Debian &amp; Ubuntu]

=== GNU/Linux, généralités :===
:[http://www.trustonme.net/ Trustonme - Site d'entraide orienté Linux et logiciels libres]
:[http://lea-linux.org/ Léa-Linux - Site d’aide collaboratif pour le système d’exploitation GNU/Linux]
:Ce site ne semble plus mis à jour depuis longtemps... [http://www.linuxfrench.net/ LinuxFrench.Net]
:[http://linuxreviews.org/ Linux Reviews (Nouvelles, tutos, Howto) - Site en anglais]

=== GNU/Linux, distributions :===
:[http://distrowatch.com/ DistroWatch.com: Put the fun back into computing. Use Linux, BSD.]
:[http://www.frozentech.com/content/livecd.php The LiveCD List]

== Debian ==

* GNU/Linux, distributions Debian (en anglais)
:[http://www.debian.org/ Debian]
:[http://wiki.debian.org/ Debian Wiki]
:[http://www.debian-administration.org/ Debian GNU-Linux System Administration Resources]
:[http://www.debian.org/doc/ Debian Documentation]
:[http://www.debian.org/doc/user-manuals Debian Users Manuals]
:[http://www.debian.org/doc/manuals/debian-faq/index.en.html The Debian GNU/Linux FAQ]

:[http://www.togaware.com/linux/survivor/ Debian GNU/Linux Desktop Survival Guide]
:[http://qref.sourceforge.net/ Guide de référence Debian]
:[http://www.debian.org/distrib/packages#search_packages Rechercher un paquet Debian]

* GNU/Linux, distributions Debian (en français)
:[http://www.debian.org/index.fr.html Debian Le système d'exploitation universel]
:[http://forum.debian-fr.org/ &quot;LE&quot; &quot;forum.debian-fr.org&quot;]
:[http://debianworld.org/ Debianworld.org encore un site sur Debian !]
:[http://planet-fr.debian.net/ Planet Debian-FR]
:[http://www.debian.org/doc/manuals/debian-faq/index.fr.html La FAQ Debian GNU/Linux]
:[http://www.michauko.org/docs/debian_testing/index.html Dossier d'installation Debian testing]
:[http://formation-debian.via.ecp.fr/ Formation Debian GNU/Linux]

* GNU/Linux, distributions Debian : Howto Nvidia
:[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.html Simple instructions on how to install nVidia drivers for X11 on Debian]
:[http://www.linux-wizard.net/howto.php?section=3&amp;key=nvidia#agp Debian - HowTo - Nvidia]

* GNU/Linux, distributions Debian : Howto Matériel
:[http://kmuto.jp/debian/hcl/ Vérifiez la compatibilité de votre matériel]
:[http://www.ibiblio.org/pub/linux/docs/HOWTO/translations/fr/html-1page/Webcam-HOWTO.html Guide pratique des webcams]
:[http://mxhaard.free.fr/download.html Pilotes Webcam]
:[http://www.linux-usb.org/USB-guide/book1.html Usb sous Linux]
:[http://fr.tldp.org/HOWTO/lecture/Hardware-HOWTO.html liste de l'ensemble du matériel réputé compatible ou non avec Linux]
:[http://fasterdata.es.net/TCP-tuning//linux.html Linux TCP Tuning]

== Autres Distributions Linux ==

* GNU/Linux - Knoppix
:[http://knoppix.fr/ une distribution GNU/Linux basée sur Debian]
:[http://www.knoppix.net/ Knoppix is a Live Linux CD / Live DVD based on Debian GNU/Linux]

* GNU/Linux - Sidux
:[http://manual.sidux.com/fr/welcome-fr.htm Manuel de Sidux en français]
:[http://sidux.com/ Site de Sidux - What is sidux? - Debian Hot &amp; Spicy!]

* GNU/Linux - Ubuntu (en anglais)
:[http://www.ubuntulinux.org/ Ubuntu]
:[http://www.ubuntuforums.org/ Ubuntu Official Community &amp; Forums]
:[http://www.ubuntuguide.org/ Unofficial Ubuntu Starter Guide]
:[http://packages.ubuntu.com/ Ubuntu packages]

* GNU/Linux - Ubuntu (en français)
:[http://www.ubuntu-fr.org/ Ubuntu-fr.org]
:[http://forum.ubuntu-fr.org/ Ubuntu-fr.org Forum]
:Ce site n'est plus maintenu depuis Ubuntu 7.10... [http://yekubuntu.free.fr/index.php yeK-Ubuntu]
 
* GNU/Linux - Arch
:[http://archlinuxfr.org/ Arch Linux [FR]
:[http://www.archlinux.org/ Arch Linux [EN]

* GNU/Linux - Mandriva
:[http://www.mandrivalinux.com/en-us/ Mandriva Linux]
:[http://distrowatch.com/table.php?distribution=mandrake DistroWatch.com: Mandriva Linux]
:[http://mandrivausers.org/ MandrakeUsers]
:[http://rpm.pbone.net/ RPM pbone.net]
 
* GNU/Linux - OpenSUSE
:[http://www.opensuse.org/ OpenSUSE]

== GNU/Linux, Dépôts ==

* GNU/Linux, Dépôts (logiciels)
:[http://apt-get.org/ Unofficial APT repositories]
:[http://sourceforge.net/ SourceForge.net]
:[http://freshmeat.net/ freshmeat.net: Welcome to freshmeat.net]
:[http://linuxappfinder.com/ Linux App Finder &quot;catalogue de programmes GNU/Linux&quot;]
:[http://www.gnu.org/software/ GNU - Free Software Foundation (FSF)]
:[http://www.framasoft.net/ Framasoft - Logiciels Libres]
:[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]

* GNU/Linux, Dépôts (logiciels équivalences)
:[http://wiki.linuxquestions.org/wiki/Linux_software_equivalent_to_Windows_software Linux software equivalent to Windows software - LinuxQuestions.org Wiki]
:[http://www.linuxrsp.ru/win-lin-soft/table-eng.html The table of equivalents / replacements / analogs of Windows software in Linux. ]

* GNU/Linux, Dépôts (Jeux)
:[http://www.icculus.org/lgfaq/gamelist.php Linux Gamers Game List]
:[http://forum.hardware.fr/hardwarefr/JeuxVideo/Topic-Unik-Jeux-Linux-Quake-IV-Binaire-dispo-sujet-90039-1.htm#t0 Jeux Linux ]

== GNU/Linux, Howtos et Tutos ==

* GNU/Linux, Howtos et trucs
:[http://www.linux-tips.net/ Linux Minis HowTo]
:[http://www.brunolinux.com/ Tips for Linux Explorers]
:[http://forum.zebulon.fr/index.php?showtopic=17977 Zebulon.fr - Quelques liens pour débuter sous linux]
:[http://beronono.com/wiki-debian/index.php?title=Accueil Le Wiki de forum.debian-fr.org]
:[http://tldp.org/ The Linux Documentation Project] et [http://tldp.org/HOWTO/Francophones-HOWTO.html Le Francophones-HOWTO : Linux &amp; la langue française]
:[http://jp.barralis.com/linux-man/ Projet de traduction des &quot;man&quot; en français]

* GNU/Linux, Howtos et trucs sur le bash
:[http://www.ukuug.org/events/linux2003/papers/bash_tips/ Bash Tips &amp; Tricks]
:[http://www.cavecanen.org/linux/bashtips.php Pedro's web stuff]
 
* GNU/Linux, Tutos, Guide de l'utilisateur
:[http://www.delafond.org/survielinux/ Guide de Survie du Débutant sous Linux]
:Ce document date de novembre 2000... :[http://www.comptechdoc.org/os/linux/usersguide/ Linux User's Guide (anglais)]
:[http://www.linux-tutorial.info/ Linux Knowledge Base and Tutorial]
 
* GNU/Linux, Programmation
:[http://linuxreviews.org/beginner/abs-guide/ Advanced Bash-Scripting Guide]
:[http://www.freeos.com/guides/lsst/ Linux Shell Scripting Tutorial - A Beginner s handbook]
:[http://www.tuxfiles.org/linuxhelp/cli.html tuXfiles - Linux command line tutorials for newbies]
 
* GNU/Linux, Applications : Gnome
:[http://www.gnome.org/ GNOME: The Free Software Desktop Project]
:[http://www.gnomefr.org/ GNOME-FR (Pays Francophones)]
:[http://www.gnu.org/software/ Software - GNU Project - Free Software Foundation (FSF)]
:[http://www.gnomedesktop.org/ FootNotes | GNOME Desktop News]
:[http://www.gnomejournal.org/ The GNOME Journal]
:[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]
:[http://art.gnome.org/ GNOME Art - Artwork &amp; Themes]
:[http://www.gnome-look.org/ GNOME-Look.org]

== Free Software et Open Source ==

* GNU/Linux, Free Software et Open Source
:[http://www.framasoft.net/ Framasoft - Réseau de sites web collaboratifs, vise à diffuser le logiciel libre] / [http://www.framasoft.net/article3338.html Framasoft : Qu’est-ce qu’un logiciel libre ?]
:[http://en.wikipedia.org/wiki/Portal:Free_software Wikipedia the free encyclopedia : Portal:Free software (anglais)]
:[http://www.fsfeurope.org/index.fr.html FSF Europe - Free Software Foundation Europe (Multilingue)]
:[http://solutions.journaldunet.com/dossiers/libre/sommaire.shtml Le Journal du Net : Dossier Logiciels libres/Open Source]
:[http://www.logiciellibre.net/ LogicielLibre.Net - Premiere ressource francophone sur l'economie des logiciels libres / Open Source]
:[http://www.progilibre.com/ Progilibre.com | La communauté des applications professionnelles en open source]
:[http://www.aful.org/ AFUL (Association Francophone des Utilisateurs de Logiciels Libres)]
:[http://www.generation-libre.com/ Generation Libre - Site d'informations et d'entraide sur les logiciels libres ]
:[http://lelogiciellibre.net/ Le Logiciel Libre : découvrir, télécharger des logiciels libres]
:[http://www.jesuislibre.org/ Je Suis Libre (Ce site permet de faire sortir de l'ombre tous les développeurs qui conçoivent des projets dans le monde du libre)]
:[http://www.openstickers.com/ Open source &quot;goodies&quot; (anglais)]

* GNU/Linux, Open Source : Formats, Brevets, DRM et Cie
:[http://formats-ouverts.org/ Pour les formats ouverts !]
:[http://stopdrm.info/ StopDRM!]

* GNU/Linux, Free Software et Open Source : Définitions
:[http://www.gnu.org/philosophy/free-sw.fr.html Le projet GNU : Définition d'un logiciel libre]
:[http://www.fsfeurope.org/documents/freesoftware.fr.html FSF Europe - Qu'est-ce que le Logiciel Libre ?]
:[http://fr.wikipedia.org/wiki/Logiciel_libre Logiciel libre - Wikipédia]
:[http://www.livretdulibre.org/ Livret du Libre (Le Livret du Libre est une introduction au Libre)]
:[http://solutions.journaldunet.com/0605/060517-qr-terminologie-open-source.shtml La terminologie de l'Open Source en 7 questions]

== Retiré de la liste initiale (A effacer) ==

::Lien mort &gt; :[http://cafecomputer.com/guide/users-guide.en.html Debian Desktop User's Guide]
::Lien mort &gt; :[http://qref.sourceforge.net/Debian/reference/reference.fr.html Guide de référence pour Debian]
::Lien doublon &gt; :[http://www.debian.org/distrib/packages.fr.html#search_packages Debian Paquets]
* GNU/Linux, distributions Debian (Howto's)
::Lien mort &gt; :[http://wiki.serios.net/wiki/Debian_Java_JRE/JDK_installation Debian Java JRE/JDK installation - SeriosWiki]
::Lien qui renvoi sur forum.debian-fr.org &gt; :[http://www.debian-fr.org/ Debian]
::Lien Déplacé &gt; :[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.txt Simple instructions on how to install nVidia drivers for X11 on Debian]
::Lien mort &gt; :[http://enterprise.linux.com/enterprise/04/11/16/1753219.shtml?tid=47&amp;tid=89 Linux.com | CLI Magic: Colorize your prompt]
::Lien mort &gt; :[http://home.comcast.net/~andrex/Debian-nVidia/index.html Debian-nVidia HOWTO]
::Lien mort &gt; :[http://wiki.frimouvy.org/wakka.php?wiki=JeuxLinux FriWikiWiki:JeuxLinux]
::Lien mort &gt; :[http://www.icon.co.za/~psheer/book/index.html.gz Rute User's Tutorial and Exposition]
::Lien mort &gt; :[http://howtos.linux.com/guides/abs-guide/index.shtml Linux.com - Advanced Bash-Scripting Guide]
::Lien mort &gt; :[http://swpat.ffii.org/vreji/pikta/index.fr.html Musé d'Horreurs des Brevets Logiciels Européens]

--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 06:28 (UTC)

[[Catégorie:Documentation externe]]</text>
      <sha1>hsojadqdumz9gem0zy9xzhurzifenaq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1217</id>
      <parentid>1216</parentid>
      <timestamp>2010-03-30T06:15:41Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="12340">{{Ébauche|es liens concernant GNU/Linux, la Free Software et l'Open Source}}

Sur cette page sont centralisés tous les liens concernant GNU/Linux, la Free Software et l'Open Source !

== Divers ==

=== Recherches ciblée GNU/Linux sur Google :===
:•&amp;nbsp;[http://www.google.fr/linux Recherche Google ciblée GNU/Linux]
:•&amp;nbsp;[http://www.google.com/cse/home?cx=003036737311975801323:yeiooiloi7c Recherche sur forum.debian-fr.org] ou •&amp;nbsp;[http://www.google.com/cse/home?cx=003880180303252368328:fw-yrta3-zw Recherche sur forum.debian-fr.org]
:•&amp;nbsp;[http://www.google.com/cse/home?cx=015801379623395497354:gw8g39yyvum&amp;hl=fr Recherche ciblée Debian]
:•&amp;nbsp;[http://www.google.fr/cse/home?cx=009677488958975547791:vzjkzembgbc Recherche Debian &amp; Ubuntu]

=== GNU/Linux, généralités :===
:•&amp;nbsp;[http://www.trustonme.net/ Trustonme - Site d'entraide orienté Linux et logiciels libres]
:•&amp;nbsp;[http://lea-linux.org/ Léa-Linux - Site d’aide collaboratif pour le système d’exploitation GNU/Linux]
:•&amp;nbsp;Ce site ne semble plus mis à jour depuis longtemps... [http://www.linuxfrench.net/ LinuxFrench.Net]
:•&amp;nbsp;[http://linuxreviews.org/ Linux Reviews (Nouvelles, tutos, Howto) - Site en anglais]

=== GNU/Linux, distributions :===
:•&amp;nbsp;[http://distrowatch.com/ DistroWatch.com: Put the fun back into computing. Use Linux, BSD.]
:•&amp;nbsp;[http://www.frozentech.com/content/livecd.php The LiveCD List]

== Debian ==

=== GNU/Linux, distributions Debian (en anglais)===
:•&amp;nbsp;[http://www.debian.org/ Debian]
:•&amp;nbsp;[http://wiki.debian.org/ Debian Wiki]
:•&amp;nbsp;[http://www.debian-administration.org/ Debian GNU-Linux System Administration Resources]
:•&amp;nbsp;[http://www.debian.org/doc/ Debian Documentation]
:•&amp;nbsp;[http://www.debian.org/doc/user-manuals Debian Users Manuals]
:•&amp;nbsp;[http://www.debian.org/doc/manuals/debian-faq/index.en.html The Debian GNU/Linux FAQ]

:•&amp;nbsp;[http://www.togaware.com/linux/survivor/ Debian GNU/Linux Desktop Survival Guide]
:•&amp;nbsp;[http://qref.sourceforge.net/ Guide de référence Debian]
:•&amp;nbsp;[http://www.debian.org/distrib/packages#search_packages Rechercher un paquet Debian]

=== GNU/Linux, distributions Debian (en français)===
:•&amp;nbsp;[http://www.debian.org/index.fr.html Debian Le système d'exploitation universel]
:•&amp;nbsp;[http://forum.debian-fr.org/ &quot;LE&quot; &quot;forum.debian-fr.org&quot;]
:•&amp;nbsp;[http://debianworld.org/ Debianworld.org encore un site sur Debian !]
:•&amp;nbsp;[http://planet-fr.debian.net/ Planet Debian-FR]
:•&amp;nbsp;[http://www.debian.org/doc/manuals/debian-faq/index.fr.html La FAQ Debian GNU/Linux]
:•&amp;nbsp;[http://www.michauko.org/docs/debian_testing/index.html Dossier d'installation Debian testing]
:•&amp;nbsp;[http://formation-debian.via.ecp.fr/ Formation Debian GNU/Linux]

=== GNU/Linux, distributions Debian : Howto Nvidia===
:•&amp;nbsp;[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.html Simple instructions on how to install nVidia drivers for X11 on Debian]
:•&amp;nbsp;[http://www.linux-wizard.net/howto.php?section=3&amp;key=nvidia#agp Debian - HowTo - Nvidia]

=== GNU/Linux, distributions Debian : Howto Matériel===
:•&amp;nbsp;[http://kmuto.jp/debian/hcl/ Vérifiez la compatibilité de votre matériel]
:•&amp;nbsp;[http://www.ibiblio.org/pub/linux/docs/HOWTO/translations/fr/html-1page/Webcam-HOWTO.html Guide pratique des webcams]
:•&amp;nbsp;[http://mxhaard.free.fr/download.html Pilotes Webcam]
:•&amp;nbsp;[http://www.linux-usb.org/USB-guide/book1.html Usb sous Linux]
:•&amp;nbsp;[http://fr.tldp.org/HOWTO/lecture/Hardware-HOWTO.html liste de l'ensemble du matériel réputé compatible ou non avec Linux]
:•&amp;nbsp;[http://fasterdata.es.net/TCP-tuning//linux.html Linux TCP Tuning]

== Autres Distributions Linux ==

=== GNU/Linux - Knoppix===
:•&amp;nbsp;[http://knoppix.fr/ une distribution GNU/Linux basée sur Debian]
:•&amp;nbsp;[http://www.knoppix.net/ Knoppix is a Live Linux CD / Live DVD based on Debian GNU/Linux]

=== GNU/Linux - Sidux===
:•&amp;nbsp;[http://manual.sidux.com/fr/welcome-fr.htm Manuel de Sidux en français]
:•&amp;nbsp;[http://sidux.com/ Site de Sidux - What is sidux? - Debian Hot &amp; Spicy!]

=== GNU/Linux - Ubuntu (en anglais)===
:•&amp;nbsp;[http://www.ubuntulinux.org/ Ubuntu]
:•&amp;nbsp;[http://www.ubuntuforums.org/ Ubuntu Official Community &amp; Forums]
:•&amp;nbsp;[http://www.ubuntuguide.org/ Unofficial Ubuntu Starter Guide]
:•&amp;nbsp;[http://packages.ubuntu.com/ Ubuntu packages]

=== GNU/Linux - Ubuntu (en français)===
:•&amp;nbsp;[http://www.ubuntu-fr.org/ Ubuntu-fr.org]
:•&amp;nbsp;[http://forum.ubuntu-fr.org/ Ubuntu-fr.org Forum]
:Ce site n'est plus maintenu depuis Ubuntu 7.10... •&amp;nbsp;[http://yekubuntu.free.fr/index.php yeK-Ubuntu]
 
=== GNU/Linux - Arch===
:•&amp;nbsp;[http://archlinuxfr.org/ Arch Linux [FR]
:•&amp;nbsp;[http://www.archlinux.org/ Arch Linux [EN]

=== GNU/Linux - Mandriva===
:•&amp;nbsp;[http://www.mandrivalinux.com/en-us/ Mandriva Linux]
:•&amp;nbsp;[http://distrowatch.com/table.php?distribution=mandrake DistroWatch.com: Mandriva Linux]
:•&amp;nbsp;[http://mandrivausers.org/ MandrakeUsers]
:•&amp;nbsp;[http://rpm.pbone.net/ RPM pbone.net]
 
=== GNU/Linux - OpenSUSE===
:•&amp;nbsp;[http://www.opensuse.org/ OpenSUSE]

== GNU/Linux, Dépôts ==

=== GNU/Linux, Dépôts (logiciels)===
:•&amp;nbsp;[http://apt-get.org/ Unofficial APT repositories]
:•&amp;nbsp;[http://sourceforge.net/ SourceForge.net]
:•&amp;nbsp;[http://freshmeat.net/ freshmeat.net: Welcome to freshmeat.net]
:•&amp;nbsp;[http://linuxappfinder.com/ Linux App Finder &quot;catalogue de programmes GNU/Linux&quot;]
:•&amp;nbsp;[http://www.gnu.org/software/ GNU - Free Software Foundation (FSF)]
:•&amp;nbsp;[http://www.framasoft.net/ Framasoft - Logiciels Libres]
:•&amp;nbsp;[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]

=== GNU/Linux, Dépôts (logiciels équivalences)===
:[http://wiki.linuxquestions.org/wiki/Linux_software_equivalent_to_Windows_software Linux software equivalent to Windows software - LinuxQuestions.org Wiki]
:[http://www.linuxrsp.ru/win-lin-soft/table-eng.html The table of equivalents / replacements / analogs of Windows software in Linux. ]

=== GNU/Linux, Dépôts (Jeux)===
:•&amp;nbsp;[http://www.icculus.org/lgfaq/gamelist.php Linux Gamers Game List]
:•&amp;nbsp;[http://forum.hardware.fr/hardwarefr/JeuxVideo/Topic-Unik-Jeux-Linux-Quake-IV-Binaire-dispo-sujet-90039-1.htm#t0 Jeux Linux ]

== GNU/Linux, Howtos et Tutos ==

=== GNU/Linux, Howtos et trucs===
:•&amp;nbsp;[http://www.linux-tips.net/ Linux Minis HowTo]
:•&amp;nbsp;[http://www.brunolinux.com/ Tips for Linux Explorers]
:•&amp;nbsp;[http://forum.zebulon.fr/index.php?showtopic=17977 Zebulon.fr - Quelques liens pour débuter sous linux]
:•&amp;nbsp;[http://beronono.com/wiki-debian/index.php?title=Accueil Le Wiki de forum.debian-fr.org]
:•&amp;nbsp;[http://tldp.org/ The Linux Documentation Project] et •&amp;nbsp;[http://tldp.org/HOWTO/Francophones-HOWTO.html Le Francophones-HOWTO : Linux &amp; la langue française]
:•&amp;nbsp;[http://jp.barralis.com/linux-man/ Projet de traduction des &quot;man&quot; en français]

=== GNU/Linux, Howtos et trucs sur le bash===
:•&amp;nbsp;[http://www.ukuug.org/events/linux2003/papers/bash_tips/ Bash Tips &amp; Tricks]
:•&amp;nbsp;[http://www.cavecanen.org/linux/bashtips.php Pedro's web stuff]
 
=== GNU/Linux, Tutos, Guide de l'utilisateur===
:•&amp;nbsp;[http://www.delafond.org/survielinux/ Guide de Survie du Débutant sous Linux]
:Ce document date de novembre 2000... •&amp;nbsp;[http://www.comptechdoc.org/os/linux/usersguide/ Linux User's Guide (anglais)]
:•&amp;nbsp;[http://www.linux-tutorial.info/ Linux Knowledge Base and Tutorial]
 
=== GNU/Linux, Programmation===
:•&amp;nbsp;[http://linuxreviews.org/beginner/abs-guide/ Advanced Bash-Scripting Guide]
:•&amp;nbsp;[http://www.freeos.com/guides/lsst/ Linux Shell Scripting Tutorial - A Beginner s handbook]
:•&amp;nbsp;[http://www.tuxfiles.org/linuxhelp/cli.html tuXfiles - Linux command line tutorials for newbies]
 
=== GNU/Linux, Applications : Gnome===
:•&amp;nbsp;[http://www.gnome.org/ GNOME: The Free Software Desktop Project]
:•&amp;nbsp;[http://www.gnomefr.org/ GNOME-FR (Pays Francophones)]
:•&amp;nbsp;[http://www.gnu.org/software/ Software - GNU Project - Free Software Foundation (FSF)]
:•&amp;nbsp;[http://www.gnomedesktop.org/ FootNotes | GNOME Desktop News]
:•&amp;nbsp;[http://www.gnomejournal.org/ The GNOME Journal]
:•&amp;nbsp;[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]
:•&amp;nbsp;[http://art.gnome.org/ GNOME Art - Artwork &amp; Themes]
:•&amp;nbsp;[http://www.gnome-look.org/ GNOME-Look.org]

== Free Software et Open Source ==

=== GNU/Linux, Free Software et Open Source===
:•&amp;nbsp;[http://www.framasoft.net/ Framasoft - Réseau de sites web collaboratifs, vise à diffuser le logiciel libre] / [http://www.framasoft.net/article3338.html Framasoft : Qu’est-ce qu’un logiciel libre ?]
:•&amp;nbsp;[http://en.wikipedia.org/wiki/Portal:Free_software Wikipedia the free encyclopedia : Portal:Free software (anglais)]
:•&amp;nbsp;[http://www.fsfeurope.org/index.fr.html FSF Europe - Free Software Foundation Europe (Multilingue)]
:•&amp;nbsp;[http://solutions.journaldunet.com/dossiers/libre/sommaire.shtml Le Journal du Net : Dossier Logiciels libres/Open Source]
:•&amp;nbsp;[http://www.logiciellibre.net/ LogicielLibre.Net - Premiere ressource francophone sur l'economie des logiciels libres / Open Source]
:•&amp;nbsp;[http://www.progilibre.com/ Progilibre.com | La communauté des applications professionnelles en open source]
:•&amp;nbsp;[http://www.aful.org/ AFUL (Association Francophone des Utilisateurs de Logiciels Libres)]
:•&amp;nbsp;[http://www.generation-libre.com/ Generation Libre - Site d'informations et d'entraide sur les logiciels libres ]
:•&amp;nbsp;[http://lelogiciellibre.net/ Le Logiciel Libre : découvrir, télécharger des logiciels libres]
:•&amp;nbsp;[http://www.jesuislibre.org/ Je Suis Libre (Ce site permet de faire sortir de l'ombre tous les développeurs qui conçoivent des projets dans le monde du libre)]
:•&amp;nbsp;[http://www.openstickers.com/ Open source &quot;goodies&quot; (anglais)]

=== GNU/Linux, Open Source : Formats, Brevets, DRM et Cie===
:•&amp;nbsp;[http://formats-ouverts.org/ Pour les formats ouverts !]
:•&amp;nbsp;[http://stopdrm.info/ StopDRM!]

=== GNU/Linux, Free Software et Open Source : Définitions===
:•&amp;nbsp;[http://www.gnu.org/philosophy/free-sw.fr.html Le projet GNU : Définition d'un logiciel libre]
:•&amp;nbsp;[http://www.fsfeurope.org/documents/freesoftware.fr.html FSF Europe - Qu'est-ce que le Logiciel Libre ?]
:•&amp;nbsp;[http://fr.wikipedia.org/wiki/Logiciel_libre Logiciel libre - Wikipédia]
:•&amp;nbsp;[http://www.livretdulibre.org/ Livret du Libre (Le Livret du Libre est une introduction au Libre)]
:•&amp;nbsp;[http://solutions.journaldunet.com/0605/060517-qr-terminologie-open-source.shtml La terminologie de l'Open Source en 7 questions]

== Retiré de la liste initiale (A effacer) ==

::Lien mort &gt; :[http://cafecomputer.com/guide/users-guide.en.html Debian Desktop User's Guide]
::Lien mort &gt; :[http://qref.sourceforge.net/Debian/reference/reference.fr.html Guide de référence pour Debian]
::Lien doublon &gt; :[http://www.debian.org/distrib/packages.fr.html#search_packages Debian Paquets]
* GNU/Linux, distributions Debian (Howto's)
::Lien mort &gt; :[http://wiki.serios.net/wiki/Debian_Java_JRE/JDK_installation Debian Java JRE/JDK installation - SeriosWiki]
::Lien qui renvoi sur forum.debian-fr.org &gt; :[http://www.debian-fr.org/ Debian]
::Lien Déplacé &gt; :[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.txt Simple instructions on how to install nVidia drivers for X11 on Debian]
::Lien mort &gt; :[http://enterprise.linux.com/enterprise/04/11/16/1753219.shtml?tid=47&amp;tid=89 Linux.com | CLI Magic: Colorize your prompt]
::Lien mort &gt; :[http://home.comcast.net/~andrex/Debian-nVidia/index.html Debian-nVidia HOWTO]
::Lien mort &gt; :[http://wiki.frimouvy.org/wakka.php?wiki=JeuxLinux FriWikiWiki:JeuxLinux]
::Lien mort &gt; :[http://www.icon.co.za/~psheer/book/index.html.gz Rute User's Tutorial and Exposition]
::Lien mort &gt; :[http://howtos.linux.com/guides/abs-guide/index.shtml Linux.com - Advanced Bash-Scripting Guide]
::Lien mort &gt; :[http://swpat.ffii.org/vreji/pikta/index.fr.html Musé d'Horreurs des Brevets Logiciels Européens]

--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 06:28 (UTC)

[[Catégorie:Documentation externe]]</text>
      <sha1>nor9ftnfkpi253jbvweid1nfjug9ut7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1218</id>
      <parentid>1217</parentid>
      <timestamp>2010-03-30T06:21:54Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* GNU/Linux, généralités : */</comment>
      <text xml:space="preserve" bytes="12340">{{Ébauche|es liens concernant GNU/Linux, la Free Software et l'Open Source}}

Sur cette page sont centralisés tous les liens concernant GNU/Linux, la Free Software et l'Open Source !

== Divers ==

=== Recherches ciblée GNU/Linux sur Google :===
:•&amp;nbsp;[http://www.google.fr/linux Recherche Google ciblée GNU/Linux]
:•&amp;nbsp;[http://www.google.com/cse/home?cx=003036737311975801323:yeiooiloi7c Recherche sur forum.debian-fr.org] ou •&amp;nbsp;[http://www.google.com/cse/home?cx=003880180303252368328:fw-yrta3-zw Recherche sur forum.debian-fr.org]
:•&amp;nbsp;[http://www.google.com/cse/home?cx=015801379623395497354:gw8g39yyvum&amp;hl=fr Recherche ciblée Debian]
:•&amp;nbsp;[http://www.google.fr/cse/home?cx=009677488958975547791:vzjkzembgbc Recherche Debian &amp; Ubuntu]

=== GNU/Linux, généralités :===
:•&amp;nbsp;[http://www.trustonme.net/ Trustonme - Site d'entraide orienté Linux et logiciels libres]
:•&amp;nbsp;[http://lea-linux.org/ Léa-Linux - Site d’aide collaboratif pour le système d’exploitation GNU/Linux]
:Ce site ne semble plus mis à jour depuis longtemps... •&amp;nbsp;[http://www.linuxfrench.net/ LinuxFrench.Net]
:•&amp;nbsp;[http://linuxreviews.org/ Linux Reviews (Nouvelles, tutos, Howto) - Site en anglais]

=== GNU/Linux, distributions :===
:•&amp;nbsp;[http://distrowatch.com/ DistroWatch.com: Put the fun back into computing. Use Linux, BSD.]
:•&amp;nbsp;[http://www.frozentech.com/content/livecd.php The LiveCD List]

== Debian ==

=== GNU/Linux, distributions Debian (en anglais)===
:•&amp;nbsp;[http://www.debian.org/ Debian]
:•&amp;nbsp;[http://wiki.debian.org/ Debian Wiki]
:•&amp;nbsp;[http://www.debian-administration.org/ Debian GNU-Linux System Administration Resources]
:•&amp;nbsp;[http://www.debian.org/doc/ Debian Documentation]
:•&amp;nbsp;[http://www.debian.org/doc/user-manuals Debian Users Manuals]
:•&amp;nbsp;[http://www.debian.org/doc/manuals/debian-faq/index.en.html The Debian GNU/Linux FAQ]

:•&amp;nbsp;[http://www.togaware.com/linux/survivor/ Debian GNU/Linux Desktop Survival Guide]
:•&amp;nbsp;[http://qref.sourceforge.net/ Guide de référence Debian]
:•&amp;nbsp;[http://www.debian.org/distrib/packages#search_packages Rechercher un paquet Debian]

=== GNU/Linux, distributions Debian (en français)===
:•&amp;nbsp;[http://www.debian.org/index.fr.html Debian Le système d'exploitation universel]
:•&amp;nbsp;[http://forum.debian-fr.org/ &quot;LE&quot; &quot;forum.debian-fr.org&quot;]
:•&amp;nbsp;[http://debianworld.org/ Debianworld.org encore un site sur Debian !]
:•&amp;nbsp;[http://planet-fr.debian.net/ Planet Debian-FR]
:•&amp;nbsp;[http://www.debian.org/doc/manuals/debian-faq/index.fr.html La FAQ Debian GNU/Linux]
:•&amp;nbsp;[http://www.michauko.org/docs/debian_testing/index.html Dossier d'installation Debian testing]
:•&amp;nbsp;[http://formation-debian.via.ecp.fr/ Formation Debian GNU/Linux]

=== GNU/Linux, distributions Debian : Howto Nvidia===
:•&amp;nbsp;[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.html Simple instructions on how to install nVidia drivers for X11 on Debian]
:•&amp;nbsp;[http://www.linux-wizard.net/howto.php?section=3&amp;key=nvidia#agp Debian - HowTo - Nvidia]

=== GNU/Linux, distributions Debian : Howto Matériel===
:•&amp;nbsp;[http://kmuto.jp/debian/hcl/ Vérifiez la compatibilité de votre matériel]
:•&amp;nbsp;[http://www.ibiblio.org/pub/linux/docs/HOWTO/translations/fr/html-1page/Webcam-HOWTO.html Guide pratique des webcams]
:•&amp;nbsp;[http://mxhaard.free.fr/download.html Pilotes Webcam]
:•&amp;nbsp;[http://www.linux-usb.org/USB-guide/book1.html Usb sous Linux]
:•&amp;nbsp;[http://fr.tldp.org/HOWTO/lecture/Hardware-HOWTO.html liste de l'ensemble du matériel réputé compatible ou non avec Linux]
:•&amp;nbsp;[http://fasterdata.es.net/TCP-tuning//linux.html Linux TCP Tuning]

== Autres Distributions Linux ==

=== GNU/Linux - Knoppix===
:•&amp;nbsp;[http://knoppix.fr/ une distribution GNU/Linux basée sur Debian]
:•&amp;nbsp;[http://www.knoppix.net/ Knoppix is a Live Linux CD / Live DVD based on Debian GNU/Linux]

=== GNU/Linux - Sidux===
:•&amp;nbsp;[http://manual.sidux.com/fr/welcome-fr.htm Manuel de Sidux en français]
:•&amp;nbsp;[http://sidux.com/ Site de Sidux - What is sidux? - Debian Hot &amp; Spicy!]

=== GNU/Linux - Ubuntu (en anglais)===
:•&amp;nbsp;[http://www.ubuntulinux.org/ Ubuntu]
:•&amp;nbsp;[http://www.ubuntuforums.org/ Ubuntu Official Community &amp; Forums]
:•&amp;nbsp;[http://www.ubuntuguide.org/ Unofficial Ubuntu Starter Guide]
:•&amp;nbsp;[http://packages.ubuntu.com/ Ubuntu packages]

=== GNU/Linux - Ubuntu (en français)===
:•&amp;nbsp;[http://www.ubuntu-fr.org/ Ubuntu-fr.org]
:•&amp;nbsp;[http://forum.ubuntu-fr.org/ Ubuntu-fr.org Forum]
:Ce site n'est plus maintenu depuis Ubuntu 7.10... •&amp;nbsp;[http://yekubuntu.free.fr/index.php yeK-Ubuntu]
 
=== GNU/Linux - Arch===
:•&amp;nbsp;[http://archlinuxfr.org/ Arch Linux [FR]
:•&amp;nbsp;[http://www.archlinux.org/ Arch Linux [EN]

=== GNU/Linux - Mandriva===
:•&amp;nbsp;[http://www.mandrivalinux.com/en-us/ Mandriva Linux]
:•&amp;nbsp;[http://distrowatch.com/table.php?distribution=mandrake DistroWatch.com: Mandriva Linux]
:•&amp;nbsp;[http://mandrivausers.org/ MandrakeUsers]
:•&amp;nbsp;[http://rpm.pbone.net/ RPM pbone.net]
 
=== GNU/Linux - OpenSUSE===
:•&amp;nbsp;[http://www.opensuse.org/ OpenSUSE]

== GNU/Linux, Dépôts ==

=== GNU/Linux, Dépôts (logiciels)===
:•&amp;nbsp;[http://apt-get.org/ Unofficial APT repositories]
:•&amp;nbsp;[http://sourceforge.net/ SourceForge.net]
:•&amp;nbsp;[http://freshmeat.net/ freshmeat.net: Welcome to freshmeat.net]
:•&amp;nbsp;[http://linuxappfinder.com/ Linux App Finder &quot;catalogue de programmes GNU/Linux&quot;]
:•&amp;nbsp;[http://www.gnu.org/software/ GNU - Free Software Foundation (FSF)]
:•&amp;nbsp;[http://www.framasoft.net/ Framasoft - Logiciels Libres]
:•&amp;nbsp;[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]

=== GNU/Linux, Dépôts (logiciels équivalences)===
:[http://wiki.linuxquestions.org/wiki/Linux_software_equivalent_to_Windows_software Linux software equivalent to Windows software - LinuxQuestions.org Wiki]
:[http://www.linuxrsp.ru/win-lin-soft/table-eng.html The table of equivalents / replacements / analogs of Windows software in Linux. ]

=== GNU/Linux, Dépôts (Jeux)===
:•&amp;nbsp;[http://www.icculus.org/lgfaq/gamelist.php Linux Gamers Game List]
:•&amp;nbsp;[http://forum.hardware.fr/hardwarefr/JeuxVideo/Topic-Unik-Jeux-Linux-Quake-IV-Binaire-dispo-sujet-90039-1.htm#t0 Jeux Linux ]

== GNU/Linux, Howtos et Tutos ==

=== GNU/Linux, Howtos et trucs===
:•&amp;nbsp;[http://www.linux-tips.net/ Linux Minis HowTo]
:•&amp;nbsp;[http://www.brunolinux.com/ Tips for Linux Explorers]
:•&amp;nbsp;[http://forum.zebulon.fr/index.php?showtopic=17977 Zebulon.fr - Quelques liens pour débuter sous linux]
:•&amp;nbsp;[http://beronono.com/wiki-debian/index.php?title=Accueil Le Wiki de forum.debian-fr.org]
:•&amp;nbsp;[http://tldp.org/ The Linux Documentation Project] et •&amp;nbsp;[http://tldp.org/HOWTO/Francophones-HOWTO.html Le Francophones-HOWTO : Linux &amp; la langue française]
:•&amp;nbsp;[http://jp.barralis.com/linux-man/ Projet de traduction des &quot;man&quot; en français]

=== GNU/Linux, Howtos et trucs sur le bash===
:•&amp;nbsp;[http://www.ukuug.org/events/linux2003/papers/bash_tips/ Bash Tips &amp; Tricks]
:•&amp;nbsp;[http://www.cavecanen.org/linux/bashtips.php Pedro's web stuff]
 
=== GNU/Linux, Tutos, Guide de l'utilisateur===
:•&amp;nbsp;[http://www.delafond.org/survielinux/ Guide de Survie du Débutant sous Linux]
:Ce document date de novembre 2000... •&amp;nbsp;[http://www.comptechdoc.org/os/linux/usersguide/ Linux User's Guide (anglais)]
:•&amp;nbsp;[http://www.linux-tutorial.info/ Linux Knowledge Base and Tutorial]
 
=== GNU/Linux, Programmation===
:•&amp;nbsp;[http://linuxreviews.org/beginner/abs-guide/ Advanced Bash-Scripting Guide]
:•&amp;nbsp;[http://www.freeos.com/guides/lsst/ Linux Shell Scripting Tutorial - A Beginner s handbook]
:•&amp;nbsp;[http://www.tuxfiles.org/linuxhelp/cli.html tuXfiles - Linux command line tutorials for newbies]
 
=== GNU/Linux, Applications : Gnome===
:•&amp;nbsp;[http://www.gnome.org/ GNOME: The Free Software Desktop Project]
:•&amp;nbsp;[http://www.gnomefr.org/ GNOME-FR (Pays Francophones)]
:•&amp;nbsp;[http://www.gnu.org/software/ Software - GNU Project - Free Software Foundation (FSF)]
:•&amp;nbsp;[http://www.gnomedesktop.org/ FootNotes | GNOME Desktop News]
:•&amp;nbsp;[http://www.gnomejournal.org/ The GNOME Journal]
:•&amp;nbsp;[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]
:•&amp;nbsp;[http://art.gnome.org/ GNOME Art - Artwork &amp; Themes]
:•&amp;nbsp;[http://www.gnome-look.org/ GNOME-Look.org]

== Free Software et Open Source ==

=== GNU/Linux, Free Software et Open Source===
:•&amp;nbsp;[http://www.framasoft.net/ Framasoft - Réseau de sites web collaboratifs, vise à diffuser le logiciel libre] / [http://www.framasoft.net/article3338.html Framasoft : Qu’est-ce qu’un logiciel libre ?]
:•&amp;nbsp;[http://en.wikipedia.org/wiki/Portal:Free_software Wikipedia the free encyclopedia : Portal:Free software (anglais)]
:•&amp;nbsp;[http://www.fsfeurope.org/index.fr.html FSF Europe - Free Software Foundation Europe (Multilingue)]
:•&amp;nbsp;[http://solutions.journaldunet.com/dossiers/libre/sommaire.shtml Le Journal du Net : Dossier Logiciels libres/Open Source]
:•&amp;nbsp;[http://www.logiciellibre.net/ LogicielLibre.Net - Premiere ressource francophone sur l'economie des logiciels libres / Open Source]
:•&amp;nbsp;[http://www.progilibre.com/ Progilibre.com | La communauté des applications professionnelles en open source]
:•&amp;nbsp;[http://www.aful.org/ AFUL (Association Francophone des Utilisateurs de Logiciels Libres)]
:•&amp;nbsp;[http://www.generation-libre.com/ Generation Libre - Site d'informations et d'entraide sur les logiciels libres ]
:•&amp;nbsp;[http://lelogiciellibre.net/ Le Logiciel Libre : découvrir, télécharger des logiciels libres]
:•&amp;nbsp;[http://www.jesuislibre.org/ Je Suis Libre (Ce site permet de faire sortir de l'ombre tous les développeurs qui conçoivent des projets dans le monde du libre)]
:•&amp;nbsp;[http://www.openstickers.com/ Open source &quot;goodies&quot; (anglais)]

=== GNU/Linux, Open Source : Formats, Brevets, DRM et Cie===
:•&amp;nbsp;[http://formats-ouverts.org/ Pour les formats ouverts !]
:•&amp;nbsp;[http://stopdrm.info/ StopDRM!]

=== GNU/Linux, Free Software et Open Source : Définitions===
:•&amp;nbsp;[http://www.gnu.org/philosophy/free-sw.fr.html Le projet GNU : Définition d'un logiciel libre]
:•&amp;nbsp;[http://www.fsfeurope.org/documents/freesoftware.fr.html FSF Europe - Qu'est-ce que le Logiciel Libre ?]
:•&amp;nbsp;[http://fr.wikipedia.org/wiki/Logiciel_libre Logiciel libre - Wikipédia]
:•&amp;nbsp;[http://www.livretdulibre.org/ Livret du Libre (Le Livret du Libre est une introduction au Libre)]
:•&amp;nbsp;[http://solutions.journaldunet.com/0605/060517-qr-terminologie-open-source.shtml La terminologie de l'Open Source en 7 questions]

== Retiré de la liste initiale (A effacer) ==

::Lien mort &gt; :[http://cafecomputer.com/guide/users-guide.en.html Debian Desktop User's Guide]
::Lien mort &gt; :[http://qref.sourceforge.net/Debian/reference/reference.fr.html Guide de référence pour Debian]
::Lien doublon &gt; :[http://www.debian.org/distrib/packages.fr.html#search_packages Debian Paquets]
* GNU/Linux, distributions Debian (Howto's)
::Lien mort &gt; :[http://wiki.serios.net/wiki/Debian_Java_JRE/JDK_installation Debian Java JRE/JDK installation - SeriosWiki]
::Lien qui renvoi sur forum.debian-fr.org &gt; :[http://www.debian-fr.org/ Debian]
::Lien Déplacé &gt; :[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.txt Simple instructions on how to install nVidia drivers for X11 on Debian]
::Lien mort &gt; :[http://enterprise.linux.com/enterprise/04/11/16/1753219.shtml?tid=47&amp;tid=89 Linux.com | CLI Magic: Colorize your prompt]
::Lien mort &gt; :[http://home.comcast.net/~andrex/Debian-nVidia/index.html Debian-nVidia HOWTO]
::Lien mort &gt; :[http://wiki.frimouvy.org/wakka.php?wiki=JeuxLinux FriWikiWiki:JeuxLinux]
::Lien mort &gt; :[http://www.icon.co.za/~psheer/book/index.html.gz Rute User's Tutorial and Exposition]
::Lien mort &gt; :[http://howtos.linux.com/guides/abs-guide/index.shtml Linux.com - Advanced Bash-Scripting Guide]
::Lien mort &gt; :[http://swpat.ffii.org/vreji/pikta/index.fr.html Musé d'Horreurs des Brevets Logiciels Européens]

--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 06:28 (UTC)

[[Catégorie:Documentation externe]]</text>
      <sha1>4habqt7ree7h11cd5ofmq92jbuw64mv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1219</id>
      <parentid>1218</parentid>
      <timestamp>2010-03-30T06:39:42Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Autres Distributions Linux */</comment>
      <text xml:space="preserve" bytes="12636">{{Ébauche|es liens concernant GNU/Linux, la Free Software et l'Open Source}}

Sur cette page sont centralisés tous les liens concernant GNU/Linux, la Free Software et l'Open Source !

== Divers ==

=== Recherches ciblée GNU/Linux sur Google :===
:•&amp;nbsp;[http://www.google.fr/linux Recherche Google ciblée GNU/Linux]
:•&amp;nbsp;[http://www.google.com/cse/home?cx=003036737311975801323:yeiooiloi7c Recherche sur forum.debian-fr.org] ou •&amp;nbsp;[http://www.google.com/cse/home?cx=003880180303252368328:fw-yrta3-zw Recherche sur forum.debian-fr.org]
:•&amp;nbsp;[http://www.google.com/cse/home?cx=015801379623395497354:gw8g39yyvum&amp;hl=fr Recherche ciblée Debian]
:•&amp;nbsp;[http://www.google.fr/cse/home?cx=009677488958975547791:vzjkzembgbc Recherche Debian &amp; Ubuntu]

=== GNU/Linux, généralités :===
:•&amp;nbsp;[http://www.trustonme.net/ Trustonme - Site d'entraide orienté Linux et logiciels libres]
:•&amp;nbsp;[http://lea-linux.org/ Léa-Linux - Site d’aide collaboratif pour le système d’exploitation GNU/Linux]
:Ce site ne semble plus mis à jour depuis longtemps... •&amp;nbsp;[http://www.linuxfrench.net/ LinuxFrench.Net]
:•&amp;nbsp;[http://linuxreviews.org/ Linux Reviews (Nouvelles, tutos, Howto) - Site en anglais]

=== GNU/Linux, distributions :===
:•&amp;nbsp;[http://distrowatch.com/ DistroWatch.com: Put the fun back into computing. Use Linux, BSD.]
:•&amp;nbsp;[http://www.frozentech.com/content/livecd.php The LiveCD List]

== Debian ==

=== GNU/Linux, distributions Debian (en anglais)===
:•&amp;nbsp;[http://www.debian.org/ Debian]
:•&amp;nbsp;[http://wiki.debian.org/ Debian Wiki]
:•&amp;nbsp;[http://www.debian-administration.org/ Debian GNU-Linux System Administration Resources]
:•&amp;nbsp;[http://www.debian.org/doc/ Debian Documentation]
:•&amp;nbsp;[http://www.debian.org/doc/user-manuals Debian Users Manuals]
:•&amp;nbsp;[http://www.debian.org/doc/manuals/debian-faq/index.en.html The Debian GNU/Linux FAQ]

:•&amp;nbsp;[http://www.togaware.com/linux/survivor/ Debian GNU/Linux Desktop Survival Guide]
:•&amp;nbsp;[http://qref.sourceforge.net/ Guide de référence Debian]
:•&amp;nbsp;[http://www.debian.org/distrib/packages#search_packages Rechercher un paquet Debian]

=== GNU/Linux, distributions Debian (en français)===
:•&amp;nbsp;[http://www.debian.org/index.fr.html Debian Le système d'exploitation universel]
:•&amp;nbsp;[http://forum.debian-fr.org/ &quot;LE&quot; &quot;forum.debian-fr.org&quot;]
:•&amp;nbsp;[http://debianworld.org/ Debianworld.org encore un site sur Debian !]
:•&amp;nbsp;[http://planet-fr.debian.net/ Planet Debian-FR]
:•&amp;nbsp;[http://www.debian.org/doc/manuals/debian-faq/index.fr.html La FAQ Debian GNU/Linux]
:•&amp;nbsp;[http://www.michauko.org/docs/debian_testing/index.html Dossier d'installation Debian testing]
:•&amp;nbsp;[http://formation-debian.via.ecp.fr/ Formation Debian GNU/Linux]

=== GNU/Linux, distributions Debian : Howto Nvidia===
:•&amp;nbsp;[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.html Simple instructions on how to install nVidia drivers for X11 on Debian]
:•&amp;nbsp;[http://www.linux-wizard.net/howto.php?section=3&amp;key=nvidia#agp Debian - HowTo - Nvidia]

=== GNU/Linux, distributions Debian : Howto Matériel===
:•&amp;nbsp;[http://kmuto.jp/debian/hcl/ Vérifiez la compatibilité de votre matériel]
:•&amp;nbsp;[http://www.ibiblio.org/pub/linux/docs/HOWTO/translations/fr/html-1page/Webcam-HOWTO.html Guide pratique des webcams]
:•&amp;nbsp;[http://mxhaard.free.fr/download.html Pilotes Webcam]
:•&amp;nbsp;[http://www.linux-usb.org/USB-guide/book1.html Usb sous Linux]
:•&amp;nbsp;[http://fr.tldp.org/HOWTO/lecture/Hardware-HOWTO.html liste de l'ensemble du matériel réputé compatible ou non avec Linux]
:•&amp;nbsp;[http://fasterdata.es.net/TCP-tuning//linux.html Linux TCP Tuning]

== Autres Distributions Linux ==

=== GNU/Linux - Knoppix===
:•&amp;nbsp;[http://knoppix.fr/ une distribution GNU/Linux basée sur Debian]
:•&amp;nbsp;[http://www.knoppix.net/ Knoppix is a Live Linux CD / Live DVD based on Debian GNU/Linux]

=== GNU/Linux - Sidux===
:•&amp;nbsp;[http://manual.sidux.com/fr/welcome-fr.htm Manuel de Sidux en français]
:•&amp;nbsp;[http://sidux.com/ Site de Sidux - What is sidux? - Debian Hot &amp; Spicy!]

=== GNU/Linux - Ubuntu (en anglais)===
:•&amp;nbsp;[http://www.ubuntulinux.org/ Ubuntu]
:•&amp;nbsp;[http://www.ubuntuforums.org/ Ubuntu Official Community &amp; Forums]
:•&amp;nbsp;[http://www.ubuntuguide.org/ Unofficial Ubuntu Starter Guide]
:•&amp;nbsp;[http://packages.ubuntu.com/ Ubuntu packages]

=== GNU/Linux - Ubuntu (en français)===
:•&amp;nbsp;[http://www.ubuntu-fr.org/ Ubuntu-fr.org]
:•&amp;nbsp;[http://forum.ubuntu-fr.org/ Ubuntu-fr.org Forum]
:Ce site n'est plus maintenu depuis Ubuntu 7.10... •&amp;nbsp;[http://yekubuntu.free.fr/index.php yeK-Ubuntu]
 
=== GNU/Linux - Arch===
:•&amp;nbsp;[http://archlinuxfr.org/ Arch Linux [FR]
:•&amp;nbsp;[http://www.archlinux.org/ Arch Linux [EN]

=== GNU/Linux - Mandriva===
:•&amp;nbsp;[http://www.mandrivalinux.com/en-us/ Mandriva Linux]
:•&amp;nbsp;[http://distrowatch.com/table.php?distribution=mandrake DistroWatch.com: Mandriva Linux]
:•&amp;nbsp;[http://mandrivausers.org/ MandrakeUsers]
:•&amp;nbsp;[http://rpm.pbone.net/ RPM pbone.net]
 
=== GNU/Linux - OpenSUSE===
:•&amp;nbsp;[http://www.opensuse.org/ OpenSUSE]

=== GNU/Linux - Utilitaires===
:•&amp;nbsp;[http://www.supergrubdisk.org/ Super Grub Disk. PC Boot specialised Disk.]
:•&amp;nbsp;[http://trinityhome.org/ Trinity Rescue Kit or TRK is a free live Linux distribution]
:•&amp;nbsp;[http://www.sysresccd.org/ SystemRescueCd is a Linux system rescue disk]

== GNU/Linux, Dépôts ==

=== GNU/Linux, Dépôts (logiciels)===
:•&amp;nbsp;[http://apt-get.org/ Unofficial APT repositories]
:•&amp;nbsp;[http://sourceforge.net/ SourceForge.net]
:•&amp;nbsp;[http://freshmeat.net/ freshmeat.net: Welcome to freshmeat.net]
:•&amp;nbsp;[http://linuxappfinder.com/ Linux App Finder &quot;catalogue de programmes GNU/Linux&quot;]
:•&amp;nbsp;[http://www.gnu.org/software/ GNU - Free Software Foundation (FSF)]
:•&amp;nbsp;[http://www.framasoft.net/ Framasoft - Logiciels Libres]
:•&amp;nbsp;[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]

=== GNU/Linux, Dépôts (logiciels équivalences)===
:[http://wiki.linuxquestions.org/wiki/Linux_software_equivalent_to_Windows_software Linux software equivalent to Windows software - LinuxQuestions.org Wiki]
:[http://www.linuxrsp.ru/win-lin-soft/table-eng.html The table of equivalents / replacements / analogs of Windows software in Linux. ]

=== GNU/Linux, Dépôts (Jeux)===
:•&amp;nbsp;[http://www.icculus.org/lgfaq/gamelist.php Linux Gamers Game List]
:•&amp;nbsp;[http://forum.hardware.fr/hardwarefr/JeuxVideo/Topic-Unik-Jeux-Linux-Quake-IV-Binaire-dispo-sujet-90039-1.htm#t0 Jeux Linux ]

== GNU/Linux, Howtos et Tutos ==

=== GNU/Linux, Howtos et trucs===
:•&amp;nbsp;[http://www.linux-tips.net/ Linux Minis HowTo]
:•&amp;nbsp;[http://www.brunolinux.com/ Tips for Linux Explorers]
:•&amp;nbsp;[http://forum.zebulon.fr/index.php?showtopic=17977 Zebulon.fr - Quelques liens pour débuter sous linux]
:•&amp;nbsp;[http://beronono.com/wiki-debian/index.php?title=Accueil Le Wiki de forum.debian-fr.org]
:•&amp;nbsp;[http://tldp.org/ The Linux Documentation Project] et •&amp;nbsp;[http://tldp.org/HOWTO/Francophones-HOWTO.html Le Francophones-HOWTO : Linux &amp; la langue française]
:•&amp;nbsp;[http://jp.barralis.com/linux-man/ Projet de traduction des &quot;man&quot; en français]

=== GNU/Linux, Howtos et trucs sur le bash===
:•&amp;nbsp;[http://www.ukuug.org/events/linux2003/papers/bash_tips/ Bash Tips &amp; Tricks]
:•&amp;nbsp;[http://www.cavecanen.org/linux/bashtips.php Pedro's web stuff]
 
=== GNU/Linux, Tutos, Guide de l'utilisateur===
:•&amp;nbsp;[http://www.delafond.org/survielinux/ Guide de Survie du Débutant sous Linux]
:Ce document date de novembre 2000... •&amp;nbsp;[http://www.comptechdoc.org/os/linux/usersguide/ Linux User's Guide (anglais)]
:•&amp;nbsp;[http://www.linux-tutorial.info/ Linux Knowledge Base and Tutorial]
 
=== GNU/Linux, Programmation===
:•&amp;nbsp;[http://linuxreviews.org/beginner/abs-guide/ Advanced Bash-Scripting Guide]
:•&amp;nbsp;[http://www.freeos.com/guides/lsst/ Linux Shell Scripting Tutorial - A Beginner s handbook]
:•&amp;nbsp;[http://www.tuxfiles.org/linuxhelp/cli.html tuXfiles - Linux command line tutorials for newbies]
 
=== GNU/Linux, Applications : Gnome===
:•&amp;nbsp;[http://www.gnome.org/ GNOME: The Free Software Desktop Project]
:•&amp;nbsp;[http://www.gnomefr.org/ GNOME-FR (Pays Francophones)]
:•&amp;nbsp;[http://www.gnu.org/software/ Software - GNU Project - Free Software Foundation (FSF)]
:•&amp;nbsp;[http://www.gnomedesktop.org/ FootNotes | GNOME Desktop News]
:•&amp;nbsp;[http://www.gnomejournal.org/ The GNOME Journal]
:•&amp;nbsp;[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]
:•&amp;nbsp;[http://art.gnome.org/ GNOME Art - Artwork &amp; Themes]
:•&amp;nbsp;[http://www.gnome-look.org/ GNOME-Look.org]

== Free Software et Open Source ==

=== GNU/Linux, Free Software et Open Source===
:•&amp;nbsp;[http://www.framasoft.net/ Framasoft - Réseau de sites web collaboratifs, vise à diffuser le logiciel libre] / [http://www.framasoft.net/article3338.html Framasoft : Qu’est-ce qu’un logiciel libre ?]
:•&amp;nbsp;[http://en.wikipedia.org/wiki/Portal:Free_software Wikipedia the free encyclopedia : Portal:Free software (anglais)]
:•&amp;nbsp;[http://www.fsfeurope.org/index.fr.html FSF Europe - Free Software Foundation Europe (Multilingue)]
:•&amp;nbsp;[http://solutions.journaldunet.com/dossiers/libre/sommaire.shtml Le Journal du Net : Dossier Logiciels libres/Open Source]
:•&amp;nbsp;[http://www.logiciellibre.net/ LogicielLibre.Net - Premiere ressource francophone sur l'economie des logiciels libres / Open Source]
:•&amp;nbsp;[http://www.progilibre.com/ Progilibre.com | La communauté des applications professionnelles en open source]
:•&amp;nbsp;[http://www.aful.org/ AFUL (Association Francophone des Utilisateurs de Logiciels Libres)]
:•&amp;nbsp;[http://www.generation-libre.com/ Generation Libre - Site d'informations et d'entraide sur les logiciels libres ]
:•&amp;nbsp;[http://lelogiciellibre.net/ Le Logiciel Libre : découvrir, télécharger des logiciels libres]
:•&amp;nbsp;[http://www.jesuislibre.org/ Je Suis Libre (Ce site permet de faire sortir de l'ombre tous les développeurs qui conçoivent des projets dans le monde du libre)]
:•&amp;nbsp;[http://www.openstickers.com/ Open source &quot;goodies&quot; (anglais)]

=== GNU/Linux, Open Source : Formats, Brevets, DRM et Cie===
:•&amp;nbsp;[http://formats-ouverts.org/ Pour les formats ouverts !]
:•&amp;nbsp;[http://stopdrm.info/ StopDRM!]

=== GNU/Linux, Free Software et Open Source : Définitions===
:•&amp;nbsp;[http://www.gnu.org/philosophy/free-sw.fr.html Le projet GNU : Définition d'un logiciel libre]
:•&amp;nbsp;[http://www.fsfeurope.org/documents/freesoftware.fr.html FSF Europe - Qu'est-ce que le Logiciel Libre ?]
:•&amp;nbsp;[http://fr.wikipedia.org/wiki/Logiciel_libre Logiciel libre - Wikipédia]
:•&amp;nbsp;[http://www.livretdulibre.org/ Livret du Libre (Le Livret du Libre est une introduction au Libre)]
:•&amp;nbsp;[http://solutions.journaldunet.com/0605/060517-qr-terminologie-open-source.shtml La terminologie de l'Open Source en 7 questions]

== Retiré de la liste initiale (A effacer) ==

::Lien mort &gt; :[http://cafecomputer.com/guide/users-guide.en.html Debian Desktop User's Guide]
::Lien mort &gt; :[http://qref.sourceforge.net/Debian/reference/reference.fr.html Guide de référence pour Debian]
::Lien doublon &gt; :[http://www.debian.org/distrib/packages.fr.html#search_packages Debian Paquets]
* GNU/Linux, distributions Debian (Howto's)
::Lien mort &gt; :[http://wiki.serios.net/wiki/Debian_Java_JRE/JDK_installation Debian Java JRE/JDK installation - SeriosWiki]
::Lien qui renvoi sur forum.debian-fr.org &gt; :[http://www.debian-fr.org/ Debian]
::Lien Déplacé &gt; :[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.txt Simple instructions on how to install nVidia drivers for X11 on Debian]
::Lien mort &gt; :[http://enterprise.linux.com/enterprise/04/11/16/1753219.shtml?tid=47&amp;tid=89 Linux.com | CLI Magic: Colorize your prompt]
::Lien mort &gt; :[http://home.comcast.net/~andrex/Debian-nVidia/index.html Debian-nVidia HOWTO]
::Lien mort &gt; :[http://wiki.frimouvy.org/wakka.php?wiki=JeuxLinux FriWikiWiki:JeuxLinux]
::Lien mort &gt; :[http://www.icon.co.za/~psheer/book/index.html.gz Rute User's Tutorial and Exposition]
::Lien mort &gt; :[http://howtos.linux.com/guides/abs-guide/index.shtml Linux.com - Advanced Bash-Scripting Guide]
::Lien mort &gt; :[http://swpat.ffii.org/vreji/pikta/index.fr.html Musé d'Horreurs des Brevets Logiciels Européens]

--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 06:28 (UTC)

[[Catégorie:Documentation externe]]</text>
      <sha1>ne66rgklg1hdo1s62iogqtuspj0e6zk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1222</id>
      <parentid>1219</parentid>
      <timestamp>2010-03-30T08:07:44Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="12626">{{Ébauche|les liens GNU/Linux, la Free Software et l'Open Source}}

Sur cette page sont centralisés tous les liens concernant GNU/Linux, la Free Software et l'Open Source !

== Divers ==

=== Recherches ciblée GNU/Linux sur Google :===
:•&amp;nbsp;[http://www.google.fr/linux Recherche Google ciblée GNU/Linux]
:•&amp;nbsp;[http://www.google.com/cse/home?cx=003036737311975801323:yeiooiloi7c Recherche sur forum.debian-fr.org] ou •&amp;nbsp;[http://www.google.com/cse/home?cx=003880180303252368328:fw-yrta3-zw Recherche sur forum.debian-fr.org]
:•&amp;nbsp;[http://www.google.com/cse/home?cx=015801379623395497354:gw8g39yyvum&amp;hl=fr Recherche ciblée Debian]
:•&amp;nbsp;[http://www.google.fr/cse/home?cx=009677488958975547791:vzjkzembgbc Recherche Debian &amp; Ubuntu]

=== GNU/Linux, généralités :===
:•&amp;nbsp;[http://www.trustonme.net/ Trustonme - Site d'entraide orienté Linux et logiciels libres]
:•&amp;nbsp;[http://lea-linux.org/ Léa-Linux - Site d’aide collaboratif pour le système d’exploitation GNU/Linux]
:Ce site ne semble plus mis à jour depuis longtemps... •&amp;nbsp;[http://www.linuxfrench.net/ LinuxFrench.Net]
:•&amp;nbsp;[http://linuxreviews.org/ Linux Reviews (Nouvelles, tutos, Howto) - Site en anglais]

=== GNU/Linux, distributions :===
:•&amp;nbsp;[http://distrowatch.com/ DistroWatch.com: Put the fun back into computing. Use Linux, BSD.]
:•&amp;nbsp;[http://www.frozentech.com/content/livecd.php The LiveCD List]

== Debian ==

=== GNU/Linux, distributions Debian (en anglais)===
:•&amp;nbsp;[http://www.debian.org/ Debian]
:•&amp;nbsp;[http://wiki.debian.org/ Debian Wiki]
:•&amp;nbsp;[http://www.debian-administration.org/ Debian GNU-Linux System Administration Resources]
:•&amp;nbsp;[http://www.debian.org/doc/ Debian Documentation]
:•&amp;nbsp;[http://www.debian.org/doc/user-manuals Debian Users Manuals]
:•&amp;nbsp;[http://www.debian.org/doc/manuals/debian-faq/index.en.html The Debian GNU/Linux FAQ]

:•&amp;nbsp;[http://www.togaware.com/linux/survivor/ Debian GNU/Linux Desktop Survival Guide]
:•&amp;nbsp;[http://qref.sourceforge.net/ Guide de référence Debian]
:•&amp;nbsp;[http://www.debian.org/distrib/packages#search_packages Rechercher un paquet Debian]

=== GNU/Linux, distributions Debian (en français)===
:•&amp;nbsp;[http://www.debian.org/index.fr.html Debian Le système d'exploitation universel]
:•&amp;nbsp;[http://forum.debian-fr.org/ &quot;LE&quot; &quot;forum.debian-fr.org&quot;]
:•&amp;nbsp;[http://debianworld.org/ Debianworld.org encore un site sur Debian !]
:•&amp;nbsp;[http://planet-fr.debian.net/ Planet Debian-FR]
:•&amp;nbsp;[http://www.debian.org/doc/manuals/debian-faq/index.fr.html La FAQ Debian GNU/Linux]
:•&amp;nbsp;[http://www.michauko.org/docs/debian_testing/index.html Dossier d'installation Debian testing]
:•&amp;nbsp;[http://formation-debian.via.ecp.fr/ Formation Debian GNU/Linux]

=== GNU/Linux, distributions Debian : Howto Nvidia===
:•&amp;nbsp;[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.html Simple instructions on how to install nVidia drivers for X11 on Debian]
:•&amp;nbsp;[http://www.linux-wizard.net/howto.php?section=3&amp;key=nvidia#agp Debian - HowTo - Nvidia]

=== GNU/Linux, distributions Debian : Howto Matériel===
:•&amp;nbsp;[http://kmuto.jp/debian/hcl/ Vérifiez la compatibilité de votre matériel]
:•&amp;nbsp;[http://www.ibiblio.org/pub/linux/docs/HOWTO/translations/fr/html-1page/Webcam-HOWTO.html Guide pratique des webcams]
:•&amp;nbsp;[http://mxhaard.free.fr/download.html Pilotes Webcam]
:•&amp;nbsp;[http://www.linux-usb.org/USB-guide/book1.html Usb sous Linux]
:•&amp;nbsp;[http://fr.tldp.org/HOWTO/lecture/Hardware-HOWTO.html liste de l'ensemble du matériel réputé compatible ou non avec Linux]
:•&amp;nbsp;[http://fasterdata.es.net/TCP-tuning//linux.html Linux TCP Tuning]

== Autres Distributions Linux ==

=== GNU/Linux - Knoppix===
:•&amp;nbsp;[http://knoppix.fr/ une distribution GNU/Linux basée sur Debian]
:•&amp;nbsp;[http://www.knoppix.net/ Knoppix is a Live Linux CD / Live DVD based on Debian GNU/Linux]

=== GNU/Linux - Sidux===
:•&amp;nbsp;[http://manual.sidux.com/fr/welcome-fr.htm Manuel de Sidux en français]
:•&amp;nbsp;[http://sidux.com/ Site de Sidux - What is sidux? - Debian Hot &amp; Spicy!]

=== GNU/Linux - Ubuntu (en anglais)===
:•&amp;nbsp;[http://www.ubuntulinux.org/ Ubuntu]
:•&amp;nbsp;[http://www.ubuntuforums.org/ Ubuntu Official Community &amp; Forums]
:•&amp;nbsp;[http://www.ubuntuguide.org/ Unofficial Ubuntu Starter Guide]
:•&amp;nbsp;[http://packages.ubuntu.com/ Ubuntu packages]

=== GNU/Linux - Ubuntu (en français)===
:•&amp;nbsp;[http://www.ubuntu-fr.org/ Ubuntu-fr.org]
:•&amp;nbsp;[http://forum.ubuntu-fr.org/ Ubuntu-fr.org Forum]
:Ce site n'est plus maintenu depuis Ubuntu 7.10... •&amp;nbsp;[http://yekubuntu.free.fr/index.php yeK-Ubuntu]
 
=== GNU/Linux - Arch===
:•&amp;nbsp;[http://archlinuxfr.org/ Arch Linux [FR]
:•&amp;nbsp;[http://www.archlinux.org/ Arch Linux [EN]

=== GNU/Linux - Mandriva===
:•&amp;nbsp;[http://www.mandrivalinux.com/en-us/ Mandriva Linux]
:•&amp;nbsp;[http://distrowatch.com/table.php?distribution=mandrake DistroWatch.com: Mandriva Linux]
:•&amp;nbsp;[http://mandrivausers.org/ MandrakeUsers]
:•&amp;nbsp;[http://rpm.pbone.net/ RPM pbone.net]
 
=== GNU/Linux - OpenSUSE===
:•&amp;nbsp;[http://www.opensuse.org/ OpenSUSE]

=== GNU/Linux - Utilitaires===
:•&amp;nbsp;[http://www.supergrubdisk.org/ Super Grub Disk. PC Boot specialised Disk.]
:•&amp;nbsp;[http://trinityhome.org/ Trinity Rescue Kit or TRK is a free live Linux distribution]
:•&amp;nbsp;[http://www.sysresccd.org/ SystemRescueCd is a Linux system rescue disk]

== GNU/Linux, Dépôts ==

=== GNU/Linux, Dépôts (logiciels)===
:•&amp;nbsp;[http://apt-get.org/ Unofficial APT repositories]
:•&amp;nbsp;[http://sourceforge.net/ SourceForge.net]
:•&amp;nbsp;[http://freshmeat.net/ freshmeat.net: Welcome to freshmeat.net]
:•&amp;nbsp;[http://linuxappfinder.com/ Linux App Finder &quot;catalogue de programmes GNU/Linux&quot;]
:•&amp;nbsp;[http://www.gnu.org/software/ GNU - Free Software Foundation (FSF)]
:•&amp;nbsp;[http://www.framasoft.net/ Framasoft - Logiciels Libres]
:•&amp;nbsp;[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]

=== GNU/Linux, Dépôts (logiciels équivalences)===
:[http://wiki.linuxquestions.org/wiki/Linux_software_equivalent_to_Windows_software Linux software equivalent to Windows software - LinuxQuestions.org Wiki]
:[http://www.linuxrsp.ru/win-lin-soft/table-eng.html The table of equivalents / replacements / analogs of Windows software in Linux. ]

=== GNU/Linux, Dépôts (Jeux)===
:•&amp;nbsp;[http://www.icculus.org/lgfaq/gamelist.php Linux Gamers Game List]
:•&amp;nbsp;[http://forum.hardware.fr/hardwarefr/JeuxVideo/Topic-Unik-Jeux-Linux-Quake-IV-Binaire-dispo-sujet-90039-1.htm#t0 Jeux Linux ]

== GNU/Linux, Howtos et Tutos ==

=== GNU/Linux, Howtos et trucs===
:•&amp;nbsp;[http://www.linux-tips.net/ Linux Minis HowTo]
:•&amp;nbsp;[http://www.brunolinux.com/ Tips for Linux Explorers]
:•&amp;nbsp;[http://forum.zebulon.fr/index.php?showtopic=17977 Zebulon.fr - Quelques liens pour débuter sous linux]
:•&amp;nbsp;[http://beronono.com/wiki-debian/index.php?title=Accueil Le Wiki de forum.debian-fr.org]
:•&amp;nbsp;[http://tldp.org/ The Linux Documentation Project] et •&amp;nbsp;[http://tldp.org/HOWTO/Francophones-HOWTO.html Le Francophones-HOWTO : Linux &amp; la langue française]
:•&amp;nbsp;[http://jp.barralis.com/linux-man/ Projet de traduction des &quot;man&quot; en français]

=== GNU/Linux, Howtos et trucs sur le bash===
:•&amp;nbsp;[http://www.ukuug.org/events/linux2003/papers/bash_tips/ Bash Tips &amp; Tricks]
:•&amp;nbsp;[http://www.cavecanen.org/linux/bashtips.php Pedro's web stuff]
 
=== GNU/Linux, Tutos, Guide de l'utilisateur===
:•&amp;nbsp;[http://www.delafond.org/survielinux/ Guide de Survie du Débutant sous Linux]
:Ce document date de novembre 2000... •&amp;nbsp;[http://www.comptechdoc.org/os/linux/usersguide/ Linux User's Guide (anglais)]
:•&amp;nbsp;[http://www.linux-tutorial.info/ Linux Knowledge Base and Tutorial]
 
=== GNU/Linux, Programmation===
:•&amp;nbsp;[http://linuxreviews.org/beginner/abs-guide/ Advanced Bash-Scripting Guide]
:•&amp;nbsp;[http://www.freeos.com/guides/lsst/ Linux Shell Scripting Tutorial - A Beginner s handbook]
:•&amp;nbsp;[http://www.tuxfiles.org/linuxhelp/cli.html tuXfiles - Linux command line tutorials for newbies]
 
=== GNU/Linux, Applications : Gnome===
:•&amp;nbsp;[http://www.gnome.org/ GNOME: The Free Software Desktop Project]
:•&amp;nbsp;[http://www.gnomefr.org/ GNOME-FR (Pays Francophones)]
:•&amp;nbsp;[http://www.gnu.org/software/ Software - GNU Project - Free Software Foundation (FSF)]
:•&amp;nbsp;[http://www.gnomedesktop.org/ FootNotes | GNOME Desktop News]
:•&amp;nbsp;[http://www.gnomejournal.org/ The GNOME Journal]
:•&amp;nbsp;[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]
:•&amp;nbsp;[http://art.gnome.org/ GNOME Art - Artwork &amp; Themes]
:•&amp;nbsp;[http://www.gnome-look.org/ GNOME-Look.org]

== Free Software et Open Source ==

=== GNU/Linux, Free Software et Open Source===
:•&amp;nbsp;[http://www.framasoft.net/ Framasoft - Réseau de sites web collaboratifs, vise à diffuser le logiciel libre] / [http://www.framasoft.net/article3338.html Framasoft : Qu’est-ce qu’un logiciel libre ?]
:•&amp;nbsp;[http://en.wikipedia.org/wiki/Portal:Free_software Wikipedia the free encyclopedia : Portal:Free software (anglais)]
:•&amp;nbsp;[http://www.fsfeurope.org/index.fr.html FSF Europe - Free Software Foundation Europe (Multilingue)]
:•&amp;nbsp;[http://solutions.journaldunet.com/dossiers/libre/sommaire.shtml Le Journal du Net : Dossier Logiciels libres/Open Source]
:•&amp;nbsp;[http://www.logiciellibre.net/ LogicielLibre.Net - Premiere ressource francophone sur l'economie des logiciels libres / Open Source]
:•&amp;nbsp;[http://www.progilibre.com/ Progilibre.com | La communauté des applications professionnelles en open source]
:•&amp;nbsp;[http://www.aful.org/ AFUL (Association Francophone des Utilisateurs de Logiciels Libres)]
:•&amp;nbsp;[http://www.generation-libre.com/ Generation Libre - Site d'informations et d'entraide sur les logiciels libres ]
:•&amp;nbsp;[http://lelogiciellibre.net/ Le Logiciel Libre : découvrir, télécharger des logiciels libres]
:•&amp;nbsp;[http://www.jesuislibre.org/ Je Suis Libre (Ce site permet de faire sortir de l'ombre tous les développeurs qui conçoivent des projets dans le monde du libre)]
:•&amp;nbsp;[http://www.openstickers.com/ Open source &quot;goodies&quot; (anglais)]

=== GNU/Linux, Open Source : Formats, Brevets, DRM et Cie===
:•&amp;nbsp;[http://formats-ouverts.org/ Pour les formats ouverts !]
:•&amp;nbsp;[http://stopdrm.info/ StopDRM!]

=== GNU/Linux, Free Software et Open Source : Définitions===
:•&amp;nbsp;[http://www.gnu.org/philosophy/free-sw.fr.html Le projet GNU : Définition d'un logiciel libre]
:•&amp;nbsp;[http://www.fsfeurope.org/documents/freesoftware.fr.html FSF Europe - Qu'est-ce que le Logiciel Libre ?]
:•&amp;nbsp;[http://fr.wikipedia.org/wiki/Logiciel_libre Logiciel libre - Wikipédia]
:•&amp;nbsp;[http://www.livretdulibre.org/ Livret du Libre (Le Livret du Libre est une introduction au Libre)]
:•&amp;nbsp;[http://solutions.journaldunet.com/0605/060517-qr-terminologie-open-source.shtml La terminologie de l'Open Source en 7 questions]

== Retiré de la liste initiale (A effacer) ==

::Lien mort &gt; :[http://cafecomputer.com/guide/users-guide.en.html Debian Desktop User's Guide]
::Lien mort &gt; :[http://qref.sourceforge.net/Debian/reference/reference.fr.html Guide de référence pour Debian]
::Lien doublon &gt; :[http://www.debian.org/distrib/packages.fr.html#search_packages Debian Paquets]
* GNU/Linux, distributions Debian (Howto's)
::Lien mort &gt; :[http://wiki.serios.net/wiki/Debian_Java_JRE/JDK_installation Debian Java JRE/JDK installation - SeriosWiki]
::Lien qui renvoi sur forum.debian-fr.org &gt; :[http://www.debian-fr.org/ Debian]
::Lien Déplacé &gt; :[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.txt Simple instructions on how to install nVidia drivers for X11 on Debian]
::Lien mort &gt; :[http://enterprise.linux.com/enterprise/04/11/16/1753219.shtml?tid=47&amp;tid=89 Linux.com | CLI Magic: Colorize your prompt]
::Lien mort &gt; :[http://home.comcast.net/~andrex/Debian-nVidia/index.html Debian-nVidia HOWTO]
::Lien mort &gt; :[http://wiki.frimouvy.org/wakka.php?wiki=JeuxLinux FriWikiWiki:JeuxLinux]
::Lien mort &gt; :[http://www.icon.co.za/~psheer/book/index.html.gz Rute User's Tutorial and Exposition]
::Lien mort &gt; :[http://howtos.linux.com/guides/abs-guide/index.shtml Linux.com - Advanced Bash-Scripting Guide]
::Lien mort &gt; :[http://swpat.ffii.org/vreji/pikta/index.fr.html Musé d'Horreurs des Brevets Logiciels Européens]

--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 06:28 (UTC)

[[Catégorie:Documentation externe]]</text>
      <sha1>jh3sxllakmpzy12yhhk6jxqvmwnyj9i</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1245</id>
      <parentid>1222</parentid>
      <timestamp>2010-04-01T13:30:46Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* GNU/Linux, Howtos et trucs */</comment>
      <text xml:space="preserve" bytes="12694">{{Ébauche|les liens GNU/Linux, la Free Software et l'Open Source}}

Sur cette page sont centralisés tous les liens concernant GNU/Linux, la Free Software et l'Open Source !

== Divers ==

=== Recherches ciblée GNU/Linux sur Google :===
:•&amp;nbsp;[http://www.google.fr/linux Recherche Google ciblée GNU/Linux]
:•&amp;nbsp;[http://www.google.com/cse/home?cx=003036737311975801323:yeiooiloi7c Recherche sur forum.debian-fr.org] ou •&amp;nbsp;[http://www.google.com/cse/home?cx=003880180303252368328:fw-yrta3-zw Recherche sur forum.debian-fr.org]
:•&amp;nbsp;[http://www.google.com/cse/home?cx=015801379623395497354:gw8g39yyvum&amp;hl=fr Recherche ciblée Debian]
:•&amp;nbsp;[http://www.google.fr/cse/home?cx=009677488958975547791:vzjkzembgbc Recherche Debian &amp; Ubuntu]

=== GNU/Linux, généralités :===
:•&amp;nbsp;[http://www.trustonme.net/ Trustonme - Site d'entraide orienté Linux et logiciels libres]
:•&amp;nbsp;[http://lea-linux.org/ Léa-Linux - Site d’aide collaboratif pour le système d’exploitation GNU/Linux]
:Ce site ne semble plus mis à jour depuis longtemps... •&amp;nbsp;[http://www.linuxfrench.net/ LinuxFrench.Net]
:•&amp;nbsp;[http://linuxreviews.org/ Linux Reviews (Nouvelles, tutos, Howto) - Site en anglais]

=== GNU/Linux, distributions :===
:•&amp;nbsp;[http://distrowatch.com/ DistroWatch.com: Put the fun back into computing. Use Linux, BSD.]
:•&amp;nbsp;[http://www.frozentech.com/content/livecd.php The LiveCD List]

== Debian ==

=== GNU/Linux, distributions Debian (en anglais)===
:•&amp;nbsp;[http://www.debian.org/ Debian]
:•&amp;nbsp;[http://wiki.debian.org/ Debian Wiki]
:•&amp;nbsp;[http://www.debian-administration.org/ Debian GNU-Linux System Administration Resources]
:•&amp;nbsp;[http://www.debian.org/doc/ Debian Documentation]
:•&amp;nbsp;[http://www.debian.org/doc/user-manuals Debian Users Manuals]
:•&amp;nbsp;[http://www.debian.org/doc/manuals/debian-faq/index.en.html The Debian GNU/Linux FAQ]

:•&amp;nbsp;[http://www.togaware.com/linux/survivor/ Debian GNU/Linux Desktop Survival Guide]
:•&amp;nbsp;[http://qref.sourceforge.net/ Guide de référence Debian]
:•&amp;nbsp;[http://www.debian.org/distrib/packages#search_packages Rechercher un paquet Debian]

=== GNU/Linux, distributions Debian (en français)===
:•&amp;nbsp;[http://www.debian.org/index.fr.html Debian Le système d'exploitation universel]
:•&amp;nbsp;[http://forum.debian-fr.org/ &quot;LE&quot; &quot;forum.debian-fr.org&quot;]
:•&amp;nbsp;[http://debianworld.org/ Debianworld.org encore un site sur Debian !]
:•&amp;nbsp;[http://planet-fr.debian.net/ Planet Debian-FR]
:•&amp;nbsp;[http://www.debian.org/doc/manuals/debian-faq/index.fr.html La FAQ Debian GNU/Linux]
:•&amp;nbsp;[http://www.michauko.org/docs/debian_testing/index.html Dossier d'installation Debian testing]
:•&amp;nbsp;[http://formation-debian.via.ecp.fr/ Formation Debian GNU/Linux]

=== GNU/Linux, distributions Debian : Howto Nvidia===
:•&amp;nbsp;[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.html Simple instructions on how to install nVidia drivers for X11 on Debian]
:•&amp;nbsp;[http://www.linux-wizard.net/howto.php?section=3&amp;key=nvidia#agp Debian - HowTo - Nvidia]

=== GNU/Linux, distributions Debian : Howto Matériel===
:•&amp;nbsp;[http://kmuto.jp/debian/hcl/ Vérifiez la compatibilité de votre matériel]
:•&amp;nbsp;[http://www.ibiblio.org/pub/linux/docs/HOWTO/translations/fr/html-1page/Webcam-HOWTO.html Guide pratique des webcams]
:•&amp;nbsp;[http://mxhaard.free.fr/download.html Pilotes Webcam]
:•&amp;nbsp;[http://www.linux-usb.org/USB-guide/book1.html Usb sous Linux]
:•&amp;nbsp;[http://fr.tldp.org/HOWTO/lecture/Hardware-HOWTO.html liste de l'ensemble du matériel réputé compatible ou non avec Linux]
:•&amp;nbsp;[http://fasterdata.es.net/TCP-tuning//linux.html Linux TCP Tuning]

== Autres Distributions Linux ==

=== GNU/Linux - Knoppix===
:•&amp;nbsp;[http://knoppix.fr/ une distribution GNU/Linux basée sur Debian]
:•&amp;nbsp;[http://www.knoppix.net/ Knoppix is a Live Linux CD / Live DVD based on Debian GNU/Linux]

=== GNU/Linux - Sidux===
:•&amp;nbsp;[http://manual.sidux.com/fr/welcome-fr.htm Manuel de Sidux en français]
:•&amp;nbsp;[http://sidux.com/ Site de Sidux - What is sidux? - Debian Hot &amp; Spicy!]

=== GNU/Linux - Ubuntu (en anglais)===
:•&amp;nbsp;[http://www.ubuntulinux.org/ Ubuntu]
:•&amp;nbsp;[http://www.ubuntuforums.org/ Ubuntu Official Community &amp; Forums]
:•&amp;nbsp;[http://www.ubuntuguide.org/ Unofficial Ubuntu Starter Guide]
:•&amp;nbsp;[http://packages.ubuntu.com/ Ubuntu packages]

=== GNU/Linux - Ubuntu (en français)===
:•&amp;nbsp;[http://www.ubuntu-fr.org/ Ubuntu-fr.org]
:•&amp;nbsp;[http://forum.ubuntu-fr.org/ Ubuntu-fr.org Forum]
:Ce site n'est plus maintenu depuis Ubuntu 7.10... •&amp;nbsp;[http://yekubuntu.free.fr/index.php yeK-Ubuntu]
 
=== GNU/Linux - Arch===
:•&amp;nbsp;[http://archlinuxfr.org/ Arch Linux [FR]
:•&amp;nbsp;[http://www.archlinux.org/ Arch Linux [EN]

=== GNU/Linux - Mandriva===
:•&amp;nbsp;[http://www.mandrivalinux.com/en-us/ Mandriva Linux]
:•&amp;nbsp;[http://distrowatch.com/table.php?distribution=mandrake DistroWatch.com: Mandriva Linux]
:•&amp;nbsp;[http://mandrivausers.org/ MandrakeUsers]
:•&amp;nbsp;[http://rpm.pbone.net/ RPM pbone.net]
 
=== GNU/Linux - OpenSUSE===
:•&amp;nbsp;[http://www.opensuse.org/ OpenSUSE]

=== GNU/Linux - Utilitaires===
:•&amp;nbsp;[http://www.supergrubdisk.org/ Super Grub Disk. PC Boot specialised Disk.]
:•&amp;nbsp;[http://trinityhome.org/ Trinity Rescue Kit or TRK is a free live Linux distribution]
:•&amp;nbsp;[http://www.sysresccd.org/ SystemRescueCd is a Linux system rescue disk]

== GNU/Linux, Dépôts ==

=== GNU/Linux, Dépôts (logiciels)===
:•&amp;nbsp;[http://apt-get.org/ Unofficial APT repositories]
:•&amp;nbsp;[http://sourceforge.net/ SourceForge.net]
:•&amp;nbsp;[http://freshmeat.net/ freshmeat.net: Welcome to freshmeat.net]
:•&amp;nbsp;[http://linuxappfinder.com/ Linux App Finder &quot;catalogue de programmes GNU/Linux&quot;]
:•&amp;nbsp;[http://www.gnu.org/software/ GNU - Free Software Foundation (FSF)]
:•&amp;nbsp;[http://www.framasoft.net/ Framasoft - Logiciels Libres]
:•&amp;nbsp;[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]

=== GNU/Linux, Dépôts (logiciels équivalences)===
:[http://wiki.linuxquestions.org/wiki/Linux_software_equivalent_to_Windows_software Linux software equivalent to Windows software - LinuxQuestions.org Wiki]
:[http://www.linuxrsp.ru/win-lin-soft/table-eng.html The table of equivalents / replacements / analogs of Windows software in Linux. ]

=== GNU/Linux, Dépôts (Jeux)===
:•&amp;nbsp;[http://www.icculus.org/lgfaq/gamelist.php Linux Gamers Game List]
:•&amp;nbsp;[http://forum.hardware.fr/hardwarefr/JeuxVideo/Topic-Unik-Jeux-Linux-Quake-IV-Binaire-dispo-sujet-90039-1.htm#t0 Jeux Linux ]

== GNU/Linux, Howtos et Tutos ==

=== GNU/Linux, Howtos et trucs===
:•&amp;nbsp;[http://www.linux-tips.net/ Linux Minis HowTo]
:•&amp;nbsp;[http://www.brunolinux.com/ Tips for Linux Explorers]
:•&amp;nbsp;[http://forum.zebulon.fr/index.php?showtopic=17977 Zebulon.fr - Quelques liens pour débuter sous linux]
:•&amp;nbsp;[http://beronono.com/wiki-debian/index.php?title=Accueil Le Wiki de forum.debian-fr.org]
:•&amp;nbsp;[http://tldp.org/ The Linux Documentation Project] et •&amp;nbsp;[http://tldp.org/HOWTO/Francophones-HOWTO.html Le Francophones-HOWTO : Linux &amp; la langue française]
:•&amp;nbsp;[http://jp.barralis.com/linux-man/ Projet de traduction des &quot;man&quot; en français]
:•&amp;nbsp;[http://debian-facile.org/wiki/ Le Wiki de Debian-facile]

=== GNU/Linux, Howtos et trucs sur le bash===
:•&amp;nbsp;[http://www.ukuug.org/events/linux2003/papers/bash_tips/ Bash Tips &amp; Tricks]
:•&amp;nbsp;[http://www.cavecanen.org/linux/bashtips.php Pedro's web stuff]
 
=== GNU/Linux, Tutos, Guide de l'utilisateur===
:•&amp;nbsp;[http://www.delafond.org/survielinux/ Guide de Survie du Débutant sous Linux]
:Ce document date de novembre 2000... •&amp;nbsp;[http://www.comptechdoc.org/os/linux/usersguide/ Linux User's Guide (anglais)]
:•&amp;nbsp;[http://www.linux-tutorial.info/ Linux Knowledge Base and Tutorial]
 
=== GNU/Linux, Programmation===
:•&amp;nbsp;[http://linuxreviews.org/beginner/abs-guide/ Advanced Bash-Scripting Guide]
:•&amp;nbsp;[http://www.freeos.com/guides/lsst/ Linux Shell Scripting Tutorial - A Beginner s handbook]
:•&amp;nbsp;[http://www.tuxfiles.org/linuxhelp/cli.html tuXfiles - Linux command line tutorials for newbies]
 
=== GNU/Linux, Applications : Gnome===
:•&amp;nbsp;[http://www.gnome.org/ GNOME: The Free Software Desktop Project]
:•&amp;nbsp;[http://www.gnomefr.org/ GNOME-FR (Pays Francophones)]
:•&amp;nbsp;[http://www.gnu.org/software/ Software - GNU Project - Free Software Foundation (FSF)]
:•&amp;nbsp;[http://www.gnomedesktop.org/ FootNotes | GNOME Desktop News]
:•&amp;nbsp;[http://www.gnomejournal.org/ The GNOME Journal]
:•&amp;nbsp;[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]
:•&amp;nbsp;[http://art.gnome.org/ GNOME Art - Artwork &amp; Themes]
:•&amp;nbsp;[http://www.gnome-look.org/ GNOME-Look.org]

== Free Software et Open Source ==

=== GNU/Linux, Free Software et Open Source===
:•&amp;nbsp;[http://www.framasoft.net/ Framasoft - Réseau de sites web collaboratifs, vise à diffuser le logiciel libre] / [http://www.framasoft.net/article3338.html Framasoft : Qu’est-ce qu’un logiciel libre ?]
:•&amp;nbsp;[http://en.wikipedia.org/wiki/Portal:Free_software Wikipedia the free encyclopedia : Portal:Free software (anglais)]
:•&amp;nbsp;[http://www.fsfeurope.org/index.fr.html FSF Europe - Free Software Foundation Europe (Multilingue)]
:•&amp;nbsp;[http://solutions.journaldunet.com/dossiers/libre/sommaire.shtml Le Journal du Net : Dossier Logiciels libres/Open Source]
:•&amp;nbsp;[http://www.logiciellibre.net/ LogicielLibre.Net - Premiere ressource francophone sur l'economie des logiciels libres / Open Source]
:•&amp;nbsp;[http://www.progilibre.com/ Progilibre.com | La communauté des applications professionnelles en open source]
:•&amp;nbsp;[http://www.aful.org/ AFUL (Association Francophone des Utilisateurs de Logiciels Libres)]
:•&amp;nbsp;[http://www.generation-libre.com/ Generation Libre - Site d'informations et d'entraide sur les logiciels libres ]
:•&amp;nbsp;[http://lelogiciellibre.net/ Le Logiciel Libre : découvrir, télécharger des logiciels libres]
:•&amp;nbsp;[http://www.jesuislibre.org/ Je Suis Libre (Ce site permet de faire sortir de l'ombre tous les développeurs qui conçoivent des projets dans le monde du libre)]
:•&amp;nbsp;[http://www.openstickers.com/ Open source &quot;goodies&quot; (anglais)]

=== GNU/Linux, Open Source : Formats, Brevets, DRM et Cie===
:•&amp;nbsp;[http://formats-ouverts.org/ Pour les formats ouverts !]
:•&amp;nbsp;[http://stopdrm.info/ StopDRM!]

=== GNU/Linux, Free Software et Open Source : Définitions===
:•&amp;nbsp;[http://www.gnu.org/philosophy/free-sw.fr.html Le projet GNU : Définition d'un logiciel libre]
:•&amp;nbsp;[http://www.fsfeurope.org/documents/freesoftware.fr.html FSF Europe - Qu'est-ce que le Logiciel Libre ?]
:•&amp;nbsp;[http://fr.wikipedia.org/wiki/Logiciel_libre Logiciel libre - Wikipédia]
:•&amp;nbsp;[http://www.livretdulibre.org/ Livret du Libre (Le Livret du Libre est une introduction au Libre)]
:•&amp;nbsp;[http://solutions.journaldunet.com/0605/060517-qr-terminologie-open-source.shtml La terminologie de l'Open Source en 7 questions]

== Retiré de la liste initiale (A effacer) ==

::Lien mort &gt; :[http://cafecomputer.com/guide/users-guide.en.html Debian Desktop User's Guide]
::Lien mort &gt; :[http://qref.sourceforge.net/Debian/reference/reference.fr.html Guide de référence pour Debian]
::Lien doublon &gt; :[http://www.debian.org/distrib/packages.fr.html#search_packages Debian Paquets]
* GNU/Linux, distributions Debian (Howto's)
::Lien mort &gt; :[http://wiki.serios.net/wiki/Debian_Java_JRE/JDK_installation Debian Java JRE/JDK installation - SeriosWiki]
::Lien qui renvoi sur forum.debian-fr.org &gt; :[http://www.debian-fr.org/ Debian]
::Lien Déplacé &gt; :[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.txt Simple instructions on how to install nVidia drivers for X11 on Debian]
::Lien mort &gt; :[http://enterprise.linux.com/enterprise/04/11/16/1753219.shtml?tid=47&amp;tid=89 Linux.com | CLI Magic: Colorize your prompt]
::Lien mort &gt; :[http://home.comcast.net/~andrex/Debian-nVidia/index.html Debian-nVidia HOWTO]
::Lien mort &gt; :[http://wiki.frimouvy.org/wakka.php?wiki=JeuxLinux FriWikiWiki:JeuxLinux]
::Lien mort &gt; :[http://www.icon.co.za/~psheer/book/index.html.gz Rute User's Tutorial and Exposition]
::Lien mort &gt; :[http://howtos.linux.com/guides/abs-guide/index.shtml Linux.com - Advanced Bash-Scripting Guide]
::Lien mort &gt; :[http://swpat.ffii.org/vreji/pikta/index.fr.html Musé d'Horreurs des Brevets Logiciels Européens]

--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 06:28 (UTC)

[[Catégorie:Documentation externe]]</text>
      <sha1>4h9ag4n8a21wo84yjjrl9ndnrhdoepg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1246</id>
      <parentid>1245</parentid>
      <timestamp>2010-04-01T13:55:17Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Retiré de la liste initiale (A effacer) */</comment>
      <text xml:space="preserve" bytes="11284">{{Ébauche|les liens GNU/Linux, la Free Software et l'Open Source}}

Sur cette page sont centralisés tous les liens concernant GNU/Linux, la Free Software et l'Open Source !

== Divers ==

=== Recherches ciblée GNU/Linux sur Google :===
:•&amp;nbsp;[http://www.google.fr/linux Recherche Google ciblée GNU/Linux]
:•&amp;nbsp;[http://www.google.com/cse/home?cx=003036737311975801323:yeiooiloi7c Recherche sur forum.debian-fr.org] ou •&amp;nbsp;[http://www.google.com/cse/home?cx=003880180303252368328:fw-yrta3-zw Recherche sur forum.debian-fr.org]
:•&amp;nbsp;[http://www.google.com/cse/home?cx=015801379623395497354:gw8g39yyvum&amp;hl=fr Recherche ciblée Debian]
:•&amp;nbsp;[http://www.google.fr/cse/home?cx=009677488958975547791:vzjkzembgbc Recherche Debian &amp; Ubuntu]

=== GNU/Linux, généralités :===
:•&amp;nbsp;[http://www.trustonme.net/ Trustonme - Site d'entraide orienté Linux et logiciels libres]
:•&amp;nbsp;[http://lea-linux.org/ Léa-Linux - Site d’aide collaboratif pour le système d’exploitation GNU/Linux]
:Ce site ne semble plus mis à jour depuis longtemps... •&amp;nbsp;[http://www.linuxfrench.net/ LinuxFrench.Net]
:•&amp;nbsp;[http://linuxreviews.org/ Linux Reviews (Nouvelles, tutos, Howto) - Site en anglais]

=== GNU/Linux, distributions :===
:•&amp;nbsp;[http://distrowatch.com/ DistroWatch.com: Put the fun back into computing. Use Linux, BSD.]
:•&amp;nbsp;[http://www.frozentech.com/content/livecd.php The LiveCD List]

== Debian ==

=== GNU/Linux, distributions Debian (en anglais)===
:•&amp;nbsp;[http://www.debian.org/ Debian]
:•&amp;nbsp;[http://wiki.debian.org/ Debian Wiki]
:•&amp;nbsp;[http://www.debian-administration.org/ Debian GNU-Linux System Administration Resources]
:•&amp;nbsp;[http://www.debian.org/doc/ Debian Documentation]
:•&amp;nbsp;[http://www.debian.org/doc/user-manuals Debian Users Manuals]
:•&amp;nbsp;[http://www.debian.org/doc/manuals/debian-faq/index.en.html The Debian GNU/Linux FAQ]

:•&amp;nbsp;[http://www.togaware.com/linux/survivor/ Debian GNU/Linux Desktop Survival Guide]
:•&amp;nbsp;[http://qref.sourceforge.net/ Guide de référence Debian]
:•&amp;nbsp;[http://www.debian.org/distrib/packages#search_packages Rechercher un paquet Debian]

=== GNU/Linux, distributions Debian (en français)===
:•&amp;nbsp;[http://www.debian.org/index.fr.html Debian Le système d'exploitation universel]
:•&amp;nbsp;[http://forum.debian-fr.org/ &quot;LE&quot; &quot;forum.debian-fr.org&quot;]
:•&amp;nbsp;[http://debianworld.org/ Debianworld.org encore un site sur Debian !]
:•&amp;nbsp;[http://planet-fr.debian.net/ Planet Debian-FR]
:•&amp;nbsp;[http://www.debian.org/doc/manuals/debian-faq/index.fr.html La FAQ Debian GNU/Linux]
:•&amp;nbsp;[http://www.michauko.org/docs/debian_testing/index.html Dossier d'installation Debian testing]
:•&amp;nbsp;[http://formation-debian.via.ecp.fr/ Formation Debian GNU/Linux]

=== GNU/Linux, distributions Debian : Howto Nvidia===
:•&amp;nbsp;[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.html Simple instructions on how to install nVidia drivers for X11 on Debian]
:•&amp;nbsp;[http://www.linux-wizard.net/howto.php?section=3&amp;key=nvidia#agp Debian - HowTo - Nvidia]

=== GNU/Linux, distributions Debian : Howto Matériel===
:•&amp;nbsp;[http://kmuto.jp/debian/hcl/ Vérifiez la compatibilité de votre matériel]
:•&amp;nbsp;[http://www.ibiblio.org/pub/linux/docs/HOWTO/translations/fr/html-1page/Webcam-HOWTO.html Guide pratique des webcams]
:•&amp;nbsp;[http://mxhaard.free.fr/download.html Pilotes Webcam]
:•&amp;nbsp;[http://www.linux-usb.org/USB-guide/book1.html Usb sous Linux]
:•&amp;nbsp;[http://fr.tldp.org/HOWTO/lecture/Hardware-HOWTO.html liste de l'ensemble du matériel réputé compatible ou non avec Linux]
:•&amp;nbsp;[http://fasterdata.es.net/TCP-tuning//linux.html Linux TCP Tuning]

== Autres Distributions Linux ==

=== GNU/Linux - Knoppix===
:•&amp;nbsp;[http://knoppix.fr/ une distribution GNU/Linux basée sur Debian]
:•&amp;nbsp;[http://www.knoppix.net/ Knoppix is a Live Linux CD / Live DVD based on Debian GNU/Linux]

=== GNU/Linux - Sidux===
:•&amp;nbsp;[http://manual.sidux.com/fr/welcome-fr.htm Manuel de Sidux en français]
:•&amp;nbsp;[http://sidux.com/ Site de Sidux - What is sidux? - Debian Hot &amp; Spicy!]

=== GNU/Linux - Ubuntu (en anglais)===
:•&amp;nbsp;[http://www.ubuntulinux.org/ Ubuntu]
:•&amp;nbsp;[http://www.ubuntuforums.org/ Ubuntu Official Community &amp; Forums]
:•&amp;nbsp;[http://www.ubuntuguide.org/ Unofficial Ubuntu Starter Guide]
:•&amp;nbsp;[http://packages.ubuntu.com/ Ubuntu packages]

=== GNU/Linux - Ubuntu (en français)===
:•&amp;nbsp;[http://www.ubuntu-fr.org/ Ubuntu-fr.org]
:•&amp;nbsp;[http://forum.ubuntu-fr.org/ Ubuntu-fr.org Forum]
:Ce site n'est plus maintenu depuis Ubuntu 7.10... •&amp;nbsp;[http://yekubuntu.free.fr/index.php yeK-Ubuntu]
 
=== GNU/Linux - Arch===
:•&amp;nbsp;[http://archlinuxfr.org/ Arch Linux [FR]
:•&amp;nbsp;[http://www.archlinux.org/ Arch Linux [EN]

=== GNU/Linux - Mandriva===
:•&amp;nbsp;[http://www.mandrivalinux.com/en-us/ Mandriva Linux]
:•&amp;nbsp;[http://distrowatch.com/table.php?distribution=mandrake DistroWatch.com: Mandriva Linux]
:•&amp;nbsp;[http://mandrivausers.org/ MandrakeUsers]
:•&amp;nbsp;[http://rpm.pbone.net/ RPM pbone.net]
 
=== GNU/Linux - OpenSUSE===
:•&amp;nbsp;[http://www.opensuse.org/ OpenSUSE]

=== GNU/Linux - Utilitaires===
:•&amp;nbsp;[http://www.supergrubdisk.org/ Super Grub Disk. PC Boot specialised Disk.]
:•&amp;nbsp;[http://trinityhome.org/ Trinity Rescue Kit or TRK is a free live Linux distribution]
:•&amp;nbsp;[http://www.sysresccd.org/ SystemRescueCd is a Linux system rescue disk]

== GNU/Linux, Dépôts ==

=== GNU/Linux, Dépôts (logiciels)===
:•&amp;nbsp;[http://apt-get.org/ Unofficial APT repositories]
:•&amp;nbsp;[http://sourceforge.net/ SourceForge.net]
:•&amp;nbsp;[http://freshmeat.net/ freshmeat.net: Welcome to freshmeat.net]
:•&amp;nbsp;[http://linuxappfinder.com/ Linux App Finder &quot;catalogue de programmes GNU/Linux&quot;]
:•&amp;nbsp;[http://www.gnu.org/software/ GNU - Free Software Foundation (FSF)]
:•&amp;nbsp;[http://www.framasoft.net/ Framasoft - Logiciels Libres]
:•&amp;nbsp;[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]

=== GNU/Linux, Dépôts (logiciels équivalences)===
:[http://wiki.linuxquestions.org/wiki/Linux_software_equivalent_to_Windows_software Linux software equivalent to Windows software - LinuxQuestions.org Wiki]
:[http://www.linuxrsp.ru/win-lin-soft/table-eng.html The table of equivalents / replacements / analogs of Windows software in Linux. ]

=== GNU/Linux, Dépôts (Jeux)===
:•&amp;nbsp;[http://www.icculus.org/lgfaq/gamelist.php Linux Gamers Game List]
:•&amp;nbsp;[http://forum.hardware.fr/hardwarefr/JeuxVideo/Topic-Unik-Jeux-Linux-Quake-IV-Binaire-dispo-sujet-90039-1.htm#t0 Jeux Linux ]

== GNU/Linux, Howtos et Tutos ==

=== GNU/Linux, Howtos et trucs===
:•&amp;nbsp;[http://www.linux-tips.net/ Linux Minis HowTo]
:•&amp;nbsp;[http://www.brunolinux.com/ Tips for Linux Explorers]
:•&amp;nbsp;[http://forum.zebulon.fr/index.php?showtopic=17977 Zebulon.fr - Quelques liens pour débuter sous linux]
:•&amp;nbsp;[http://beronono.com/wiki-debian/index.php?title=Accueil Le Wiki de forum.debian-fr.org]
:•&amp;nbsp;[http://tldp.org/ The Linux Documentation Project] et •&amp;nbsp;[http://tldp.org/HOWTO/Francophones-HOWTO.html Le Francophones-HOWTO : Linux &amp; la langue française]
:•&amp;nbsp;[http://jp.barralis.com/linux-man/ Projet de traduction des &quot;man&quot; en français]
:•&amp;nbsp;[http://debian-facile.org/wiki/ Le Wiki de Debian-facile]

=== GNU/Linux, Howtos et trucs sur le bash===
:•&amp;nbsp;[http://www.ukuug.org/events/linux2003/papers/bash_tips/ Bash Tips &amp; Tricks]
:•&amp;nbsp;[http://www.cavecanen.org/linux/bashtips.php Pedro's web stuff]
 
=== GNU/Linux, Tutos, Guide de l'utilisateur===
:•&amp;nbsp;[http://www.delafond.org/survielinux/ Guide de Survie du Débutant sous Linux]
:Ce document date de novembre 2000... •&amp;nbsp;[http://www.comptechdoc.org/os/linux/usersguide/ Linux User's Guide (anglais)]
:•&amp;nbsp;[http://www.linux-tutorial.info/ Linux Knowledge Base and Tutorial]
 
=== GNU/Linux, Programmation===
:•&amp;nbsp;[http://linuxreviews.org/beginner/abs-guide/ Advanced Bash-Scripting Guide]
:•&amp;nbsp;[http://www.freeos.com/guides/lsst/ Linux Shell Scripting Tutorial - A Beginner s handbook]
:•&amp;nbsp;[http://www.tuxfiles.org/linuxhelp/cli.html tuXfiles - Linux command line tutorials for newbies]
 
=== GNU/Linux, Applications : Gnome===
:•&amp;nbsp;[http://www.gnome.org/ GNOME: The Free Software Desktop Project]
:•&amp;nbsp;[http://www.gnomefr.org/ GNOME-FR (Pays Francophones)]
:•&amp;nbsp;[http://www.gnu.org/software/ Software - GNU Project - Free Software Foundation (FSF)]
:•&amp;nbsp;[http://www.gnomedesktop.org/ FootNotes | GNOME Desktop News]
:•&amp;nbsp;[http://www.gnomejournal.org/ The GNOME Journal]
:•&amp;nbsp;[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]
:•&amp;nbsp;[http://art.gnome.org/ GNOME Art - Artwork &amp; Themes]
:•&amp;nbsp;[http://www.gnome-look.org/ GNOME-Look.org]

== Free Software et Open Source ==

=== GNU/Linux, Free Software et Open Source===
:•&amp;nbsp;[http://www.framasoft.net/ Framasoft - Réseau de sites web collaboratifs, vise à diffuser le logiciel libre] / [http://www.framasoft.net/article3338.html Framasoft : Qu’est-ce qu’un logiciel libre ?]
:•&amp;nbsp;[http://en.wikipedia.org/wiki/Portal:Free_software Wikipedia the free encyclopedia : Portal:Free software (anglais)]
:•&amp;nbsp;[http://www.fsfeurope.org/index.fr.html FSF Europe - Free Software Foundation Europe (Multilingue)]
:•&amp;nbsp;[http://solutions.journaldunet.com/dossiers/libre/sommaire.shtml Le Journal du Net : Dossier Logiciels libres/Open Source]
:•&amp;nbsp;[http://www.logiciellibre.net/ LogicielLibre.Net - Premiere ressource francophone sur l'economie des logiciels libres / Open Source]
:•&amp;nbsp;[http://www.progilibre.com/ Progilibre.com | La communauté des applications professionnelles en open source]
:•&amp;nbsp;[http://www.aful.org/ AFUL (Association Francophone des Utilisateurs de Logiciels Libres)]
:•&amp;nbsp;[http://www.generation-libre.com/ Generation Libre - Site d'informations et d'entraide sur les logiciels libres ]
:•&amp;nbsp;[http://lelogiciellibre.net/ Le Logiciel Libre : découvrir, télécharger des logiciels libres]
:•&amp;nbsp;[http://www.jesuislibre.org/ Je Suis Libre (Ce site permet de faire sortir de l'ombre tous les développeurs qui conçoivent des projets dans le monde du libre)]
:•&amp;nbsp;[http://www.openstickers.com/ Open source &quot;goodies&quot; (anglais)]

=== GNU/Linux, Open Source : Formats, Brevets, DRM et Cie===
:•&amp;nbsp;[http://formats-ouverts.org/ Pour les formats ouverts !]
:•&amp;nbsp;[http://stopdrm.info/ StopDRM!]

=== GNU/Linux, Free Software et Open Source : Définitions===
:•&amp;nbsp;[http://www.gnu.org/philosophy/free-sw.fr.html Le projet GNU : Définition d'un logiciel libre]
:•&amp;nbsp;[http://www.fsfeurope.org/documents/freesoftware.fr.html FSF Europe - Qu'est-ce que le Logiciel Libre ?]
:•&amp;nbsp;[http://fr.wikipedia.org/wiki/Logiciel_libre Logiciel libre - Wikipédia]
:•&amp;nbsp;[http://www.livretdulibre.org/ Livret du Libre (Le Livret du Libre est une introduction au Libre)]
:•&amp;nbsp;[http://solutions.journaldunet.com/0605/060517-qr-terminologie-open-source.shtml La terminologie de l'Open Source en 7 questions]


--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 06:28 (UTC)

[[Catégorie:Documentation externe]]</text>
      <sha1>lmaawy2xf253ll6qp3hfxiiza5vobz8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1251</id>
      <parentid>1246</parentid>
      <timestamp>2010-04-01T14:21:03Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* GNU/Linux, généralités : */</comment>
      <text xml:space="preserve" bytes="11422">{{Ébauche|les liens GNU/Linux, la Free Software et l'Open Source}}

Sur cette page sont centralisés tous les liens concernant GNU/Linux, la Free Software et l'Open Source !

== Divers ==

=== Recherches ciblée GNU/Linux sur Google :===
:•&amp;nbsp;[http://www.google.fr/linux Recherche Google ciblée GNU/Linux]
:•&amp;nbsp;[http://www.google.com/cse/home?cx=003036737311975801323:yeiooiloi7c Recherche sur forum.debian-fr.org] ou •&amp;nbsp;[http://www.google.com/cse/home?cx=003880180303252368328:fw-yrta3-zw Recherche sur forum.debian-fr.org]
:•&amp;nbsp;[http://www.google.com/cse/home?cx=015801379623395497354:gw8g39yyvum&amp;hl=fr Recherche ciblée Debian]
:•&amp;nbsp;[http://www.google.fr/cse/home?cx=009677488958975547791:vzjkzembgbc Recherche Debian &amp; Ubuntu]

=== GNU/Linux, généralités :===
:•&amp;nbsp;[http://www.trustonme.net/ Trustonme - Site d'entraide orienté Linux et logiciels libres]
:•&amp;nbsp;[http://lea-linux.org/ Léa-Linux - Site d’aide collaboratif pour le système d’exploitation GNU/Linux]
:Ce site ne semble plus mis à jour depuis longtemps... •&amp;nbsp;[http://www.linuxfrench.net/ LinuxFrench.Net]
:•&amp;nbsp;[http://linuxreviews.org/ Linux Reviews (Nouvelles, tutos, Howto) - Site en anglais]
:•&amp;nbsp;[http://www.quebecos.com/ Quebecos.com (Des nouvelles fraîches, des tutos, un howto, un wiki, un forum...) - Site francophone]

=== GNU/Linux, distributions :===
:•&amp;nbsp;[http://distrowatch.com/ DistroWatch.com: Put the fun back into computing. Use Linux, BSD.]
:•&amp;nbsp;[http://www.frozentech.com/content/livecd.php The LiveCD List]

== Debian ==

=== GNU/Linux, distributions Debian (en anglais)===
:•&amp;nbsp;[http://www.debian.org/ Debian]
:•&amp;nbsp;[http://wiki.debian.org/ Debian Wiki]
:•&amp;nbsp;[http://www.debian-administration.org/ Debian GNU-Linux System Administration Resources]
:•&amp;nbsp;[http://www.debian.org/doc/ Debian Documentation]
:•&amp;nbsp;[http://www.debian.org/doc/user-manuals Debian Users Manuals]
:•&amp;nbsp;[http://www.debian.org/doc/manuals/debian-faq/index.en.html The Debian GNU/Linux FAQ]

:•&amp;nbsp;[http://www.togaware.com/linux/survivor/ Debian GNU/Linux Desktop Survival Guide]
:•&amp;nbsp;[http://qref.sourceforge.net/ Guide de référence Debian]
:•&amp;nbsp;[http://www.debian.org/distrib/packages#search_packages Rechercher un paquet Debian]

=== GNU/Linux, distributions Debian (en français)===
:•&amp;nbsp;[http://www.debian.org/index.fr.html Debian Le système d'exploitation universel]
:•&amp;nbsp;[http://forum.debian-fr.org/ &quot;LE&quot; &quot;forum.debian-fr.org&quot;]
:•&amp;nbsp;[http://debianworld.org/ Debianworld.org encore un site sur Debian !]
:•&amp;nbsp;[http://planet-fr.debian.net/ Planet Debian-FR]
:•&amp;nbsp;[http://www.debian.org/doc/manuals/debian-faq/index.fr.html La FAQ Debian GNU/Linux]
:•&amp;nbsp;[http://www.michauko.org/docs/debian_testing/index.html Dossier d'installation Debian testing]
:•&amp;nbsp;[http://formation-debian.via.ecp.fr/ Formation Debian GNU/Linux]

=== GNU/Linux, distributions Debian : Howto Nvidia===
:•&amp;nbsp;[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.html Simple instructions on how to install nVidia drivers for X11 on Debian]
:•&amp;nbsp;[http://www.linux-wizard.net/howto.php?section=3&amp;key=nvidia#agp Debian - HowTo - Nvidia]

=== GNU/Linux, distributions Debian : Howto Matériel===
:•&amp;nbsp;[http://kmuto.jp/debian/hcl/ Vérifiez la compatibilité de votre matériel]
:•&amp;nbsp;[http://www.ibiblio.org/pub/linux/docs/HOWTO/translations/fr/html-1page/Webcam-HOWTO.html Guide pratique des webcams]
:•&amp;nbsp;[http://mxhaard.free.fr/download.html Pilotes Webcam]
:•&amp;nbsp;[http://www.linux-usb.org/USB-guide/book1.html Usb sous Linux]
:•&amp;nbsp;[http://fr.tldp.org/HOWTO/lecture/Hardware-HOWTO.html liste de l'ensemble du matériel réputé compatible ou non avec Linux]
:•&amp;nbsp;[http://fasterdata.es.net/TCP-tuning//linux.html Linux TCP Tuning]

== Autres Distributions Linux ==

=== GNU/Linux - Knoppix===
:•&amp;nbsp;[http://knoppix.fr/ une distribution GNU/Linux basée sur Debian]
:•&amp;nbsp;[http://www.knoppix.net/ Knoppix is a Live Linux CD / Live DVD based on Debian GNU/Linux]

=== GNU/Linux - Sidux===
:•&amp;nbsp;[http://manual.sidux.com/fr/welcome-fr.htm Manuel de Sidux en français]
:•&amp;nbsp;[http://sidux.com/ Site de Sidux - What is sidux? - Debian Hot &amp; Spicy!]

=== GNU/Linux - Ubuntu (en anglais)===
:•&amp;nbsp;[http://www.ubuntulinux.org/ Ubuntu]
:•&amp;nbsp;[http://www.ubuntuforums.org/ Ubuntu Official Community &amp; Forums]
:•&amp;nbsp;[http://www.ubuntuguide.org/ Unofficial Ubuntu Starter Guide]
:•&amp;nbsp;[http://packages.ubuntu.com/ Ubuntu packages]

=== GNU/Linux - Ubuntu (en français)===
:•&amp;nbsp;[http://www.ubuntu-fr.org/ Ubuntu-fr.org]
:•&amp;nbsp;[http://forum.ubuntu-fr.org/ Ubuntu-fr.org Forum]
:Ce site n'est plus maintenu depuis Ubuntu 7.10... •&amp;nbsp;[http://yekubuntu.free.fr/index.php yeK-Ubuntu]
 
=== GNU/Linux - Arch===
:•&amp;nbsp;[http://archlinuxfr.org/ Arch Linux [FR]
:•&amp;nbsp;[http://www.archlinux.org/ Arch Linux [EN]

=== GNU/Linux - Mandriva===
:•&amp;nbsp;[http://www.mandrivalinux.com/en-us/ Mandriva Linux]
:•&amp;nbsp;[http://distrowatch.com/table.php?distribution=mandrake DistroWatch.com: Mandriva Linux]
:•&amp;nbsp;[http://mandrivausers.org/ MandrakeUsers]
:•&amp;nbsp;[http://rpm.pbone.net/ RPM pbone.net]
 
=== GNU/Linux - OpenSUSE===
:•&amp;nbsp;[http://www.opensuse.org/ OpenSUSE]

=== GNU/Linux - Utilitaires===
:•&amp;nbsp;[http://www.supergrubdisk.org/ Super Grub Disk. PC Boot specialised Disk.]
:•&amp;nbsp;[http://trinityhome.org/ Trinity Rescue Kit or TRK is a free live Linux distribution]
:•&amp;nbsp;[http://www.sysresccd.org/ SystemRescueCd is a Linux system rescue disk]

== GNU/Linux, Dépôts ==

=== GNU/Linux, Dépôts (logiciels)===
:•&amp;nbsp;[http://apt-get.org/ Unofficial APT repositories]
:•&amp;nbsp;[http://sourceforge.net/ SourceForge.net]
:•&amp;nbsp;[http://freshmeat.net/ freshmeat.net: Welcome to freshmeat.net]
:•&amp;nbsp;[http://linuxappfinder.com/ Linux App Finder &quot;catalogue de programmes GNU/Linux&quot;]
:•&amp;nbsp;[http://www.gnu.org/software/ GNU - Free Software Foundation (FSF)]
:•&amp;nbsp;[http://www.framasoft.net/ Framasoft - Logiciels Libres]
:•&amp;nbsp;[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]

=== GNU/Linux, Dépôts (logiciels équivalences)===
:[http://wiki.linuxquestions.org/wiki/Linux_software_equivalent_to_Windows_software Linux software equivalent to Windows software - LinuxQuestions.org Wiki]
:[http://www.linuxrsp.ru/win-lin-soft/table-eng.html The table of equivalents / replacements / analogs of Windows software in Linux. ]

=== GNU/Linux, Dépôts (Jeux)===
:•&amp;nbsp;[http://www.icculus.org/lgfaq/gamelist.php Linux Gamers Game List]
:•&amp;nbsp;[http://forum.hardware.fr/hardwarefr/JeuxVideo/Topic-Unik-Jeux-Linux-Quake-IV-Binaire-dispo-sujet-90039-1.htm#t0 Jeux Linux ]

== GNU/Linux, Howtos et Tutos ==

=== GNU/Linux, Howtos et trucs===
:•&amp;nbsp;[http://www.linux-tips.net/ Linux Minis HowTo]
:•&amp;nbsp;[http://www.brunolinux.com/ Tips for Linux Explorers]
:•&amp;nbsp;[http://forum.zebulon.fr/index.php?showtopic=17977 Zebulon.fr - Quelques liens pour débuter sous linux]
:•&amp;nbsp;[http://beronono.com/wiki-debian/index.php?title=Accueil Le Wiki de forum.debian-fr.org]
:•&amp;nbsp;[http://tldp.org/ The Linux Documentation Project] et •&amp;nbsp;[http://tldp.org/HOWTO/Francophones-HOWTO.html Le Francophones-HOWTO : Linux &amp; la langue française]
:•&amp;nbsp;[http://jp.barralis.com/linux-man/ Projet de traduction des &quot;man&quot; en français]
:•&amp;nbsp;[http://debian-facile.org/wiki/ Le Wiki de Debian-facile]

=== GNU/Linux, Howtos et trucs sur le bash===
:•&amp;nbsp;[http://www.ukuug.org/events/linux2003/papers/bash_tips/ Bash Tips &amp; Tricks]
:•&amp;nbsp;[http://www.cavecanen.org/linux/bashtips.php Pedro's web stuff]
 
=== GNU/Linux, Tutos, Guide de l'utilisateur===
:•&amp;nbsp;[http://www.delafond.org/survielinux/ Guide de Survie du Débutant sous Linux]
:Ce document date de novembre 2000... •&amp;nbsp;[http://www.comptechdoc.org/os/linux/usersguide/ Linux User's Guide (anglais)]
:•&amp;nbsp;[http://www.linux-tutorial.info/ Linux Knowledge Base and Tutorial]
 
=== GNU/Linux, Programmation===
:•&amp;nbsp;[http://linuxreviews.org/beginner/abs-guide/ Advanced Bash-Scripting Guide]
:•&amp;nbsp;[http://www.freeos.com/guides/lsst/ Linux Shell Scripting Tutorial - A Beginner s handbook]
:•&amp;nbsp;[http://www.tuxfiles.org/linuxhelp/cli.html tuXfiles - Linux command line tutorials for newbies]
 
=== GNU/Linux, Applications : Gnome===
:•&amp;nbsp;[http://www.gnome.org/ GNOME: The Free Software Desktop Project]
:•&amp;nbsp;[http://www.gnomefr.org/ GNOME-FR (Pays Francophones)]
:•&amp;nbsp;[http://www.gnu.org/software/ Software - GNU Project - Free Software Foundation (FSF)]
:•&amp;nbsp;[http://www.gnomedesktop.org/ FootNotes | GNOME Desktop News]
:•&amp;nbsp;[http://www.gnomejournal.org/ The GNOME Journal]
:•&amp;nbsp;[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]
:•&amp;nbsp;[http://art.gnome.org/ GNOME Art - Artwork &amp; Themes]
:•&amp;nbsp;[http://www.gnome-look.org/ GNOME-Look.org]

== Free Software et Open Source ==

=== GNU/Linux, Free Software et Open Source===
:•&amp;nbsp;[http://www.framasoft.net/ Framasoft - Réseau de sites web collaboratifs, vise à diffuser le logiciel libre] / [http://www.framasoft.net/article3338.html Framasoft : Qu’est-ce qu’un logiciel libre ?]
:•&amp;nbsp;[http://en.wikipedia.org/wiki/Portal:Free_software Wikipedia the free encyclopedia : Portal:Free software (anglais)]
:•&amp;nbsp;[http://www.fsfeurope.org/index.fr.html FSF Europe - Free Software Foundation Europe (Multilingue)]
:•&amp;nbsp;[http://solutions.journaldunet.com/dossiers/libre/sommaire.shtml Le Journal du Net : Dossier Logiciels libres/Open Source]
:•&amp;nbsp;[http://www.logiciellibre.net/ LogicielLibre.Net - Premiere ressource francophone sur l'economie des logiciels libres / Open Source]
:•&amp;nbsp;[http://www.progilibre.com/ Progilibre.com | La communauté des applications professionnelles en open source]
:•&amp;nbsp;[http://www.aful.org/ AFUL (Association Francophone des Utilisateurs de Logiciels Libres)]
:•&amp;nbsp;[http://www.generation-libre.com/ Generation Libre - Site d'informations et d'entraide sur les logiciels libres ]
:•&amp;nbsp;[http://lelogiciellibre.net/ Le Logiciel Libre : découvrir, télécharger des logiciels libres]
:•&amp;nbsp;[http://www.jesuislibre.org/ Je Suis Libre (Ce site permet de faire sortir de l'ombre tous les développeurs qui conçoivent des projets dans le monde du libre)]
:•&amp;nbsp;[http://www.openstickers.com/ Open source &quot;goodies&quot; (anglais)]

=== GNU/Linux, Open Source : Formats, Brevets, DRM et Cie===
:•&amp;nbsp;[http://formats-ouverts.org/ Pour les formats ouverts !]
:•&amp;nbsp;[http://stopdrm.info/ StopDRM!]

=== GNU/Linux, Free Software et Open Source : Définitions===
:•&amp;nbsp;[http://www.gnu.org/philosophy/free-sw.fr.html Le projet GNU : Définition d'un logiciel libre]
:•&amp;nbsp;[http://www.fsfeurope.org/documents/freesoftware.fr.html FSF Europe - Qu'est-ce que le Logiciel Libre ?]
:•&amp;nbsp;[http://fr.wikipedia.org/wiki/Logiciel_libre Logiciel libre - Wikipédia]
:•&amp;nbsp;[http://www.livretdulibre.org/ Livret du Libre (Le Livret du Libre est une introduction au Libre)]
:•&amp;nbsp;[http://solutions.journaldunet.com/0605/060517-qr-terminologie-open-source.shtml La terminologie de l'Open Source en 7 questions]


--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 06:28 (UTC)

[[Catégorie:Documentation externe]]</text>
      <sha1>oy2ofaimnbevwrp88j64woubtjnkmaf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1253</id>
      <parentid>1251</parentid>
      <timestamp>2010-04-02T06:04:19Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="11630">{{Ébauche|les liens GNU/Linux, la Free Software et l'Open Source}}

Sur cette page sont centralisés tous les liens concernant GNU/Linux, la Free Software et l'Open Source !

== Divers ==

=== Recherches ciblée GNU/Linux sur Google :===
:•&amp;nbsp;[http://www.google.fr/linux Recherche Google ciblée GNU/Linux]
:•&amp;nbsp;[http://www.google.com/cse/home?cx=003036737311975801323:yeiooiloi7c Recherche sur forum.debian-fr.org] ou •&amp;nbsp;[http://www.google.com/cse/home?cx=003880180303252368328:fw-yrta3-zw Recherche sur forum.debian-fr.org]
:•&amp;nbsp;[http://www.google.com/cse/home?cx=015801379623395497354:gw8g39yyvum&amp;hl=fr Recherche ciblée Debian]
:•&amp;nbsp;[http://www.google.fr/cse/home?cx=009677488958975547791:vzjkzembgbc Recherche Debian &amp; Ubuntu]

=== GNU/Linux, généralités :===
:•&amp;nbsp;[http://www.trustonme.net/ Trustonme - Site d'entraide orienté Linux et logiciels libres]
:•&amp;nbsp;[http://lea-linux.org/ Léa-Linux - Site d’aide collaboratif pour le système d’exploitation GNU/Linux]
:Ce site ne semble plus mis à jour depuis longtemps... •&amp;nbsp;[http://www.linuxfrench.net/ LinuxFrench.Net]
:•&amp;nbsp;[http://linuxreviews.org/ Linux Reviews (Nouvelles, tutos, Howto) - Site en anglais]
:•&amp;nbsp;[http://www.quebecos.com/ Quebecos.com (Des nouvelles fraîches, des tutos, un howto, un wiki, un forum...) - Site francophone]

=== GNU/Linux, distributions :===
:•&amp;nbsp;[http://distrowatch.com/ DistroWatch.com: Put the fun back into computing. Use Linux, BSD.]
:•&amp;nbsp;[http://www.frozentech.com/content/livecd.php The LiveCD List]

== Debian ==

=== GNU/Linux, distributions Debian (en anglais)===
:•&amp;nbsp;[http://www.debian.org/ Debian]
:•&amp;nbsp;[http://wiki.debian.org/ Debian Wiki]
:•&amp;nbsp;[http://www.debian-administration.org/ Debian GNU-Linux System Administration Resources]
:•&amp;nbsp;[http://www.debian.org/doc/ Debian Documentation]
:•&amp;nbsp;[http://www.debian.org/doc/user-manuals Debian Users Manuals]
:•&amp;nbsp;[http://www.debian.org/doc/manuals/debian-faq/index.en.html The Debian GNU/Linux FAQ]

:•&amp;nbsp;[http://www.togaware.com/linux/survivor/ Debian GNU/Linux Desktop Survival Guide]
:•&amp;nbsp;[http://qref.sourceforge.net/ Guide de référence Debian]
:•&amp;nbsp;[http://www.debian.org/distrib/packages#search_packages Rechercher un paquet Debian]

=== GNU/Linux, distributions Debian (en français)===
:•&amp;nbsp;[http://www.debian.org/index.fr.html Debian Le système d'exploitation universel]
:•&amp;nbsp;[http://forum.debian-fr.org/ &quot;LE&quot; &quot;forum.debian-fr.org&quot;]
:•&amp;nbsp;[http://debianworld.org/ Debianworld.org encore un site sur Debian !]
:•&amp;nbsp;[http://planet-fr.debian.net/ Planet Debian-FR]
:•&amp;nbsp;[http://www.debian.org/doc/manuals/debian-faq/index.fr.html La FAQ Debian GNU/Linux]
:•&amp;nbsp;[http://www.michauko.org/docs/debian_testing/index.html Dossier d'installation Debian testing]
:•&amp;nbsp;[http://formation-debian.via.ecp.fr/ Formation Debian GNU/Linux]

=== GNU/Linux, distributions Debian : Howto Nvidia===
:•&amp;nbsp;[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.html Simple instructions on how to install nVidia drivers for X11 on Debian]
:•&amp;nbsp;[http://www.linux-wizard.net/howto.php?section=3&amp;key=nvidia#agp Debian - HowTo - Nvidia]

=== GNU/Linux, distributions Debian : Howto Matériel===
:•&amp;nbsp;[http://kmuto.jp/debian/hcl/ Vérifiez la compatibilité de votre matériel]
:•&amp;nbsp;[http://www.ibiblio.org/pub/linux/docs/HOWTO/translations/fr/html-1page/Webcam-HOWTO.html Guide pratique des webcams]
:•&amp;nbsp;[http://mxhaard.free.fr/download.html Pilotes Webcam]
:•&amp;nbsp;[http://www.linux-usb.org/USB-guide/book1.html Usb sous Linux]
:•&amp;nbsp;[http://fr.tldp.org/HOWTO/lecture/Hardware-HOWTO.html liste de l'ensemble du matériel réputé compatible ou non avec Linux]
:•&amp;nbsp;[http://fasterdata.es.net/TCP-tuning//linux.html Linux TCP Tuning]

== Autres Distributions Linux ==

=== GNU/Linux - Knoppix===
:•&amp;nbsp;[http://knoppix.fr/ une distribution GNU/Linux basée sur Debian]
:•&amp;nbsp;[http://www.knoppix.net/ Knoppix is a Live Linux CD / Live DVD based on Debian GNU/Linux]

=== GNU/Linux - Sidux===
:•&amp;nbsp;[http://manual.sidux.com/fr/welcome-fr.htm Manuel de Sidux en français]
:•&amp;nbsp;[http://sidux.com/ Site de Sidux - What is sidux? - Debian Hot &amp; Spicy!]

=== GNU/Linux - Ubuntu (en anglais)===
:•&amp;nbsp;[http://www.ubuntulinux.org/ Ubuntu]
:•&amp;nbsp;[http://www.ubuntuforums.org/ Ubuntu Official Community &amp; Forums]
:•&amp;nbsp;[http://www.ubuntuguide.org/ Unofficial Ubuntu Starter Guide]
:•&amp;nbsp;[http://packages.ubuntu.com/ Ubuntu packages]

=== GNU/Linux - Ubuntu (en français)===
:•&amp;nbsp;[http://www.ubuntu-fr.org/ Ubuntu-fr.org]
:•&amp;nbsp;[http://forum.ubuntu-fr.org/ Ubuntu-fr.org Forum]
:Ce site n'est plus maintenu depuis Ubuntu 7.10... •&amp;nbsp;[http://yekubuntu.free.fr/index.php yeK-Ubuntu]
 
=== GNU/Linux - Arch===
:•&amp;nbsp;[http://archlinuxfr.org/ Arch Linux [FR]
:•&amp;nbsp;[http://www.archlinux.org/ Arch Linux [EN]

=== GNU/Linux - Mandriva===
:•&amp;nbsp;[http://www.mandrivalinux.com/en-us/ Mandriva Linux]
:•&amp;nbsp;[http://distrowatch.com/table.php?distribution=mandrake DistroWatch.com: Mandriva Linux]
:•&amp;nbsp;[http://mandrivausers.org/ MandrakeUsers]
:•&amp;nbsp;[http://rpm.pbone.net/ RPM pbone.net]
 
=== GNU/Linux - OpenSUSE===
:•&amp;nbsp;[http://www.opensuse.org/ OpenSUSE]

=== GNU/Linux - Utilitaires===
:•&amp;nbsp;[http://www.supergrubdisk.org/ Super Grub Disk. PC Boot specialised Disk.]
:•&amp;nbsp;[http://trinityhome.org/ Trinity Rescue Kit or TRK is a free live Linux distribution]
:•&amp;nbsp;[http://www.sysresccd.org/ SystemRescueCd is a Linux system rescue disk]

== GNU/Linux, Dépôts ==

=== GNU/Linux, Dépôts (logiciels)===
:•&amp;nbsp;[http://apt-get.org/ Unofficial APT repositories]
:•&amp;nbsp;[http://sourceforge.net/ SourceForge.net]
:•&amp;nbsp;[http://freshmeat.net/ freshmeat.net: Welcome to freshmeat.net]
:•&amp;nbsp;[http://linuxappfinder.com/ Linux App Finder &quot;catalogue de programmes GNU/Linux&quot;]
:•&amp;nbsp;[http://www.gnu.org/software/ GNU - Free Software Foundation (FSF)]
:•&amp;nbsp;[http://www.framasoft.net/ Framasoft - Logiciels Libres]
:•&amp;nbsp;[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]

=== GNU/Linux, Dépôts (logiciels équivalences)===
:[http://wiki.linuxquestions.org/wiki/Linux_software_equivalent_to_Windows_software Linux software equivalent to Windows software - LinuxQuestions.org Wiki]
:[http://www.linuxrsp.ru/win-lin-soft/table-eng.html The table of equivalents / replacements / analogs of Windows software in Linux. ]

=== GNU/Linux, Dépôts (Jeux)===
:•&amp;nbsp;[http://www.icculus.org/lgfaq/gamelist.php Linux Gamers Game List]
:•&amp;nbsp;[http://forum.hardware.fr/hardwarefr/JeuxVideo/Topic-Unik-Jeux-Linux-Quake-IV-Binaire-dispo-sujet-90039-1.htm#t0 Jeux Linux ]

== GNU/Linux, Howtos et Tutos ==

=== GNU/Linux, Howtos et trucs===
:•&amp;nbsp;[http://www.linux-tips.net/ Linux Minis HowTo]
:•&amp;nbsp;[http://www.brunolinux.com/ Tips for Linux Explorers]
:•&amp;nbsp;[http://forum.zebulon.fr/index.php?showtopic=17977 Zebulon.fr - Quelques liens pour débuter sous linux]
:•&amp;nbsp;[http://beronono.com/wiki-debian/index.php?title=Accueil Le Wiki de forum.debian-fr.org]
:•&amp;nbsp;[http://tldp.org/ The Linux Documentation Project] et •&amp;nbsp;[http://tldp.org/HOWTO/Francophones-HOWTO.html Le Francophones-HOWTO : Linux &amp; la langue française]
:•&amp;nbsp;[http://jp.barralis.com/linux-man/ Projet de traduction des &quot;man&quot; en français]
:•&amp;nbsp;[http://debian-facile.org/wiki/ Le Wiki de Debian-facile]

=== GNU/Linux, Howtos et trucs sur le bash===
:•&amp;nbsp;[http://www.ukuug.org/events/linux2003/papers/bash_tips/ Bash Tips &amp; Tricks]
:•&amp;nbsp;[http://www.cavecanen.org/linux/bashtips.php Pedro's web stuff]
 
=== GNU/Linux, Tutos, Guide de l'utilisateur===
:•&amp;nbsp;[http://www.delafond.org/survielinux/ Guide de Survie du Débutant sous Linux]
:Ce document date de novembre 2000... •&amp;nbsp;[http://www.comptechdoc.org/os/linux/usersguide/ Linux User's Guide (anglais)]
:•&amp;nbsp;[http://www.linux-tutorial.info/ Linux Knowledge Base and Tutorial]
 
=== GNU/Linux, Programmation===
:•&amp;nbsp;[http://linuxreviews.org/beginner/abs-guide/ Advanced Bash-Scripting Guide]
:•&amp;nbsp;[http://www.freeos.com/guides/lsst/ Linux Shell Scripting Tutorial - A Beginner s handbook]
:•&amp;nbsp;[http://www.tuxfiles.org/linuxhelp/cli.html tuXfiles - Linux command line tutorials for newbies]
 
=== GNU/Linux, Applications : Gnome===
:•&amp;nbsp;[http://www.gnome.org/ GNOME: The Free Software Desktop Project]
:•&amp;nbsp;[http://www.gnomefr.org/ GNOME-FR (Pays Francophones)]
:•&amp;nbsp;[http://www.gnu.org/software/ Software - GNU Project - Free Software Foundation (FSF)]
:•&amp;nbsp;[http://www.gnomedesktop.org/ FootNotes | GNOME Desktop News]
:•&amp;nbsp;[http://www.gnomejournal.org/ The GNOME Journal]
:•&amp;nbsp;[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]
:•&amp;nbsp;[http://art.gnome.org/ GNOME Art - Artwork &amp; Themes]
:•&amp;nbsp;[http://www.gnome-look.org/ GNOME-Look.org]

=== GNU/Linux, Applications : KDE===
:•&amp;nbsp;[http://fr.kde.org/ KDE est une équipe technologique internationale qui crée des logiciels libres]
:•&amp;nbsp;[http://dot.kde.org/ Nouvelles de KDE (anglais)]

== Free Software et Open Source ==

=== GNU/Linux, Free Software et Open Source===
:•&amp;nbsp;[http://www.framasoft.net/ Framasoft - Réseau de sites web collaboratifs, vise à diffuser le logiciel libre] / [http://www.framasoft.net/article3338.html Framasoft : Qu’est-ce qu’un logiciel libre ?]
:•&amp;nbsp;[http://en.wikipedia.org/wiki/Portal:Free_software Wikipedia the free encyclopedia : Portal:Free software (anglais)]
:•&amp;nbsp;[http://www.fsfeurope.org/index.fr.html FSF Europe - Free Software Foundation Europe (Multilingue)]
:•&amp;nbsp;[http://solutions.journaldunet.com/dossiers/libre/sommaire.shtml Le Journal du Net : Dossier Logiciels libres/Open Source]
:•&amp;nbsp;[http://www.logiciellibre.net/ LogicielLibre.Net - Premiere ressource francophone sur l'economie des logiciels libres / Open Source]
:•&amp;nbsp;[http://www.progilibre.com/ Progilibre.com | La communauté des applications professionnelles en open source]
:•&amp;nbsp;[http://www.aful.org/ AFUL (Association Francophone des Utilisateurs de Logiciels Libres)]
:•&amp;nbsp;[http://www.generation-libre.com/ Generation Libre - Site d'informations et d'entraide sur les logiciels libres ]
:•&amp;nbsp;[http://lelogiciellibre.net/ Le Logiciel Libre : découvrir, télécharger des logiciels libres]
:•&amp;nbsp;[http://www.jesuislibre.org/ Je Suis Libre (Ce site permet de faire sortir de l'ombre tous les développeurs qui conçoivent des projets dans le monde du libre)]
:•&amp;nbsp;[http://www.openstickers.com/ Open source &quot;goodies&quot; (anglais)]

=== GNU/Linux, Open Source : Formats, Brevets, DRM et Cie===
:•&amp;nbsp;[http://formats-ouverts.org/ Pour les formats ouverts !]
:•&amp;nbsp;[http://stopdrm.info/ StopDRM!]

=== GNU/Linux, Free Software et Open Source : Définitions===
:•&amp;nbsp;[http://www.gnu.org/philosophy/free-sw.fr.html Le projet GNU : Définition d'un logiciel libre]
:•&amp;nbsp;[http://www.fsfeurope.org/documents/freesoftware.fr.html FSF Europe - Qu'est-ce que le Logiciel Libre ?]
:•&amp;nbsp;[http://fr.wikipedia.org/wiki/Logiciel_libre Logiciel libre - Wikipédia]
:•&amp;nbsp;[http://www.livretdulibre.org/ Livret du Libre (Le Livret du Libre est une introduction au Libre)]
:•&amp;nbsp;[http://solutions.journaldunet.com/0605/060517-qr-terminologie-open-source.shtml La terminologie de l'Open Source en 7 questions]


--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 06:28 (UTC)

[[Catégorie:Documentation externe]]</text>
      <sha1>l8igavs50u9olksbzt69duhobtrxkmm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1356</id>
      <parentid>1253</parentid>
      <timestamp>2010-04-02T20:12:08Z</timestamp>
      <contributor>
        <username>Ginkgo biloba</username>
        <id>22</id>
      </contributor>
      <minor/>
      <comment>/* GNU/Linux - Arch */</comment>
      <text xml:space="preserve" bytes="11784">{{Ébauche|les liens GNU/Linux, la Free Software et l'Open Source}}

Sur cette page sont centralisés tous les liens concernant GNU/Linux, la Free Software et l'Open Source !

== Divers ==

=== Recherches ciblée GNU/Linux sur Google :===
:•&amp;nbsp;[http://www.google.fr/linux Recherche Google ciblée GNU/Linux]
:•&amp;nbsp;[http://www.google.com/cse/home?cx=003036737311975801323:yeiooiloi7c Recherche sur forum.debian-fr.org] ou •&amp;nbsp;[http://www.google.com/cse/home?cx=003880180303252368328:fw-yrta3-zw Recherche sur forum.debian-fr.org]
:•&amp;nbsp;[http://www.google.com/cse/home?cx=015801379623395497354:gw8g39yyvum&amp;hl=fr Recherche ciblée Debian]
:•&amp;nbsp;[http://www.google.fr/cse/home?cx=009677488958975547791:vzjkzembgbc Recherche Debian &amp; Ubuntu]

=== GNU/Linux, généralités :===
:•&amp;nbsp;[http://www.trustonme.net/ Trustonme - Site d'entraide orienté Linux et logiciels libres]
:•&amp;nbsp;[http://lea-linux.org/ Léa-Linux - Site d’aide collaboratif pour le système d’exploitation GNU/Linux]
:Ce site ne semble plus mis à jour depuis longtemps... •&amp;nbsp;[http://www.linuxfrench.net/ LinuxFrench.Net]
:•&amp;nbsp;[http://linuxreviews.org/ Linux Reviews (Nouvelles, tutos, Howto) - Site en anglais]
:•&amp;nbsp;[http://www.quebecos.com/ Quebecos.com (Des nouvelles fraîches, des tutos, un howto, un wiki, un forum...) - Site francophone]

=== GNU/Linux, distributions :===
:•&amp;nbsp;[http://distrowatch.com/ DistroWatch.com: Put the fun back into computing. Use Linux, BSD.]
:•&amp;nbsp;[http://www.frozentech.com/content/livecd.php The LiveCD List]

== Debian ==

=== GNU/Linux, distributions Debian (en anglais)===
:•&amp;nbsp;[http://www.debian.org/ Debian]
:•&amp;nbsp;[http://wiki.debian.org/ Debian Wiki]
:•&amp;nbsp;[http://www.debian-administration.org/ Debian GNU-Linux System Administration Resources]
:•&amp;nbsp;[http://www.debian.org/doc/ Debian Documentation]
:•&amp;nbsp;[http://www.debian.org/doc/user-manuals Debian Users Manuals]
:•&amp;nbsp;[http://www.debian.org/doc/manuals/debian-faq/index.en.html The Debian GNU/Linux FAQ]

:•&amp;nbsp;[http://www.togaware.com/linux/survivor/ Debian GNU/Linux Desktop Survival Guide]
:•&amp;nbsp;[http://qref.sourceforge.net/ Guide de référence Debian]
:•&amp;nbsp;[http://www.debian.org/distrib/packages#search_packages Rechercher un paquet Debian]

=== GNU/Linux, distributions Debian (en français)===
:•&amp;nbsp;[http://www.debian.org/index.fr.html Debian Le système d'exploitation universel]
:•&amp;nbsp;[http://forum.debian-fr.org/ &quot;LE&quot; &quot;forum.debian-fr.org&quot;]
:•&amp;nbsp;[http://debianworld.org/ Debianworld.org encore un site sur Debian !]
:•&amp;nbsp;[http://planet-fr.debian.net/ Planet Debian-FR]
:•&amp;nbsp;[http://www.debian.org/doc/manuals/debian-faq/index.fr.html La FAQ Debian GNU/Linux]
:•&amp;nbsp;[http://www.michauko.org/docs/debian_testing/index.html Dossier d'installation Debian testing]
:•&amp;nbsp;[http://formation-debian.via.ecp.fr/ Formation Debian GNU/Linux]

=== GNU/Linux, distributions Debian : Howto Nvidia===
:•&amp;nbsp;[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.html Simple instructions on how to install nVidia drivers for X11 on Debian]
:•&amp;nbsp;[http://www.linux-wizard.net/howto.php?section=3&amp;key=nvidia#agp Debian - HowTo - Nvidia]

=== GNU/Linux, distributions Debian : Howto Matériel===
:•&amp;nbsp;[http://kmuto.jp/debian/hcl/ Vérifiez la compatibilité de votre matériel]
:•&amp;nbsp;[http://www.ibiblio.org/pub/linux/docs/HOWTO/translations/fr/html-1page/Webcam-HOWTO.html Guide pratique des webcams]
:•&amp;nbsp;[http://mxhaard.free.fr/download.html Pilotes Webcam]
:•&amp;nbsp;[http://www.linux-usb.org/USB-guide/book1.html Usb sous Linux]
:•&amp;nbsp;[http://fr.tldp.org/HOWTO/lecture/Hardware-HOWTO.html liste de l'ensemble du matériel réputé compatible ou non avec Linux]
:•&amp;nbsp;[http://fasterdata.es.net/TCP-tuning//linux.html Linux TCP Tuning]

== Autres Distributions Linux ==

=== GNU/Linux - Knoppix===
:•&amp;nbsp;[http://knoppix.fr/ une distribution GNU/Linux basée sur Debian]
:•&amp;nbsp;[http://www.knoppix.net/ Knoppix is a Live Linux CD / Live DVD based on Debian GNU/Linux]

=== GNU/Linux - Sidux===
:•&amp;nbsp;[http://manual.sidux.com/fr/welcome-fr.htm Manuel de Sidux en français]
:•&amp;nbsp;[http://sidux.com/ Site de Sidux - What is sidux? - Debian Hot &amp; Spicy!]

=== GNU/Linux - Ubuntu (en anglais)===
:•&amp;nbsp;[http://www.ubuntulinux.org/ Ubuntu]
:•&amp;nbsp;[http://www.ubuntuforums.org/ Ubuntu Official Community &amp; Forums]
:•&amp;nbsp;[http://www.ubuntuguide.org/ Unofficial Ubuntu Starter Guide]
:•&amp;nbsp;[http://packages.ubuntu.com/ Ubuntu packages]

=== GNU/Linux - Ubuntu (en français)===
:•&amp;nbsp;[http://www.ubuntu-fr.org/ Ubuntu-fr.org]
:•&amp;nbsp;[http://forum.ubuntu-fr.org/ Ubuntu-fr.org Forum]
:Ce site n'est plus maintenu depuis Ubuntu 7.10... •&amp;nbsp;[http://yekubuntu.free.fr/index.php yeK-Ubuntu]
 
=== GNU/Linux - Arch===
:•&amp;nbsp;[http://archlinuxfr.org/ Arch Linux [FR]      :  le lien pointe sur une page sans rapport avec arch linux, et indique &quot;Le nom de domaine archlinuxfr.org est mis en vente par son propriétaire. &quot;
:•&amp;nbsp;[http://www.archlinux.org/ Arch Linux [EN]

=== GNU/Linux - Mandriva===
:•&amp;nbsp;[http://www.mandrivalinux.com/en-us/ Mandriva Linux]
:•&amp;nbsp;[http://distrowatch.com/table.php?distribution=mandrake DistroWatch.com: Mandriva Linux]
:•&amp;nbsp;[http://mandrivausers.org/ MandrakeUsers]
:•&amp;nbsp;[http://rpm.pbone.net/ RPM pbone.net]
 
=== GNU/Linux - OpenSUSE===
:•&amp;nbsp;[http://www.opensuse.org/ OpenSUSE]

=== GNU/Linux - Utilitaires===
:•&amp;nbsp;[http://www.supergrubdisk.org/ Super Grub Disk. PC Boot specialised Disk.]
:•&amp;nbsp;[http://trinityhome.org/ Trinity Rescue Kit or TRK is a free live Linux distribution]
:•&amp;nbsp;[http://www.sysresccd.org/ SystemRescueCd is a Linux system rescue disk]

== GNU/Linux, Dépôts ==

=== GNU/Linux, Dépôts (logiciels)===
:•&amp;nbsp;[http://apt-get.org/ Unofficial APT repositories]
:•&amp;nbsp;[http://sourceforge.net/ SourceForge.net]
:•&amp;nbsp;[http://freshmeat.net/ freshmeat.net: Welcome to freshmeat.net]
:•&amp;nbsp;[http://linuxappfinder.com/ Linux App Finder &quot;catalogue de programmes GNU/Linux&quot;]
:•&amp;nbsp;[http://www.gnu.org/software/ GNU - Free Software Foundation (FSF)]
:•&amp;nbsp;[http://www.framasoft.net/ Framasoft - Logiciels Libres]
:•&amp;nbsp;[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]

=== GNU/Linux, Dépôts (logiciels équivalences)===
:[http://wiki.linuxquestions.org/wiki/Linux_software_equivalent_to_Windows_software Linux software equivalent to Windows software - LinuxQuestions.org Wiki]
:[http://www.linuxrsp.ru/win-lin-soft/table-eng.html The table of equivalents / replacements / analogs of Windows software in Linux. ]

=== GNU/Linux, Dépôts (Jeux)===
:•&amp;nbsp;[http://www.icculus.org/lgfaq/gamelist.php Linux Gamers Game List]
:•&amp;nbsp;[http://forum.hardware.fr/hardwarefr/JeuxVideo/Topic-Unik-Jeux-Linux-Quake-IV-Binaire-dispo-sujet-90039-1.htm#t0 Jeux Linux ]

== GNU/Linux, Howtos et Tutos ==

=== GNU/Linux, Howtos et trucs===
:•&amp;nbsp;[http://www.linux-tips.net/ Linux Minis HowTo]
:•&amp;nbsp;[http://www.brunolinux.com/ Tips for Linux Explorers]
:•&amp;nbsp;[http://forum.zebulon.fr/index.php?showtopic=17977 Zebulon.fr - Quelques liens pour débuter sous linux]
:•&amp;nbsp;[http://beronono.com/wiki-debian/index.php?title=Accueil Le Wiki de forum.debian-fr.org]
:•&amp;nbsp;[http://tldp.org/ The Linux Documentation Project] et •&amp;nbsp;[http://tldp.org/HOWTO/Francophones-HOWTO.html Le Francophones-HOWTO : Linux &amp; la langue française]
:•&amp;nbsp;[http://jp.barralis.com/linux-man/ Projet de traduction des &quot;man&quot; en français]
:•&amp;nbsp;[http://debian-facile.org/wiki/ Le Wiki de Debian-facile]

=== GNU/Linux, Howtos et trucs sur le bash===
:•&amp;nbsp;[http://www.ukuug.org/events/linux2003/papers/bash_tips/ Bash Tips &amp; Tricks]
:•&amp;nbsp;[http://www.cavecanen.org/linux/bashtips.php Pedro's web stuff]
 
=== GNU/Linux, Tutos, Guide de l'utilisateur===
:•&amp;nbsp;[http://www.delafond.org/survielinux/ Guide de Survie du Débutant sous Linux]
:Ce document date de novembre 2000... •&amp;nbsp;[http://www.comptechdoc.org/os/linux/usersguide/ Linux User's Guide (anglais)]
:•&amp;nbsp;[http://www.linux-tutorial.info/ Linux Knowledge Base and Tutorial]
 
=== GNU/Linux, Programmation===
:•&amp;nbsp;[http://linuxreviews.org/beginner/abs-guide/ Advanced Bash-Scripting Guide]
:•&amp;nbsp;[http://www.freeos.com/guides/lsst/ Linux Shell Scripting Tutorial - A Beginner s handbook]
:•&amp;nbsp;[http://www.tuxfiles.org/linuxhelp/cli.html tuXfiles - Linux command line tutorials for newbies]
 
=== GNU/Linux, Applications : Gnome===
:•&amp;nbsp;[http://www.gnome.org/ GNOME: The Free Software Desktop Project]
:•&amp;nbsp;[http://www.gnomefr.org/ GNOME-FR (Pays Francophones)]
:•&amp;nbsp;[http://www.gnu.org/software/ Software - GNU Project - Free Software Foundation (FSF)]
:•&amp;nbsp;[http://www.gnomedesktop.org/ FootNotes | GNOME Desktop News]
:•&amp;nbsp;[http://www.gnomejournal.org/ The GNOME Journal]
:•&amp;nbsp;[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]
:•&amp;nbsp;[http://art.gnome.org/ GNOME Art - Artwork &amp; Themes]
:•&amp;nbsp;[http://www.gnome-look.org/ GNOME-Look.org]

=== GNU/Linux, Applications : KDE===
:•&amp;nbsp;[http://fr.kde.org/ KDE est une équipe technologique internationale qui crée des logiciels libres]
:•&amp;nbsp;[http://dot.kde.org/ Nouvelles de KDE (anglais)]

== Free Software et Open Source ==

=== GNU/Linux, Free Software et Open Source===
:•&amp;nbsp;[http://www.framasoft.net/ Framasoft - Réseau de sites web collaboratifs, vise à diffuser le logiciel libre] / [http://www.framasoft.net/article3338.html Framasoft : Qu’est-ce qu’un logiciel libre ?]
:•&amp;nbsp;[http://en.wikipedia.org/wiki/Portal:Free_software Wikipedia the free encyclopedia : Portal:Free software (anglais)]
:•&amp;nbsp;[http://www.fsfeurope.org/index.fr.html FSF Europe - Free Software Foundation Europe (Multilingue)]
:•&amp;nbsp;[http://solutions.journaldunet.com/dossiers/libre/sommaire.shtml Le Journal du Net : Dossier Logiciels libres/Open Source]
:•&amp;nbsp;[http://www.logiciellibre.net/ LogicielLibre.Net - Premiere ressource francophone sur l'economie des logiciels libres / Open Source]
:•&amp;nbsp;[http://www.progilibre.com/ Progilibre.com | La communauté des applications professionnelles en open source]
:•&amp;nbsp;[http://www.aful.org/ AFUL (Association Francophone des Utilisateurs de Logiciels Libres)]
:•&amp;nbsp;[http://www.generation-libre.com/ Generation Libre - Site d'informations et d'entraide sur les logiciels libres ]
:•&amp;nbsp;[http://lelogiciellibre.net/ Le Logiciel Libre : découvrir, télécharger des logiciels libres]
:•&amp;nbsp;[http://www.jesuislibre.org/ Je Suis Libre (Ce site permet de faire sortir de l'ombre tous les développeurs qui conçoivent des projets dans le monde du libre)]
:•&amp;nbsp;[http://www.openstickers.com/ Open source &quot;goodies&quot; (anglais)]

=== GNU/Linux, Open Source : Formats, Brevets, DRM et Cie===
:•&amp;nbsp;[http://formats-ouverts.org/ Pour les formats ouverts !]
:•&amp;nbsp;[http://stopdrm.info/ StopDRM!]

=== GNU/Linux, Free Software et Open Source : Définitions===
:•&amp;nbsp;[http://www.gnu.org/philosophy/free-sw.fr.html Le projet GNU : Définition d'un logiciel libre]
:•&amp;nbsp;[http://www.fsfeurope.org/documents/freesoftware.fr.html FSF Europe - Qu'est-ce que le Logiciel Libre ?]
:•&amp;nbsp;[http://fr.wikipedia.org/wiki/Logiciel_libre Logiciel libre - Wikipédia]
:•&amp;nbsp;[http://www.livretdulibre.org/ Livret du Libre (Le Livret du Libre est une introduction au Libre)]
:•&amp;nbsp;[http://solutions.journaldunet.com/0605/060517-qr-terminologie-open-source.shtml La terminologie de l'Open Source en 7 questions]


--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 06:28 (UTC)

[[Catégorie:Documentation externe]]</text>
      <sha1>llifbzoap9n083uhljyb9ddu7w3l9ft</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1357</id>
      <parentid>1356</parentid>
      <timestamp>2010-04-03T03:27:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="11829">{{Ébauche|les liens GNU/Linux, la Free Software et l'Open Source}}

Sur cette page sont centralisés tous les liens concernant GNU/Linux, la Free Software et l'Open Source !

== Divers ==

=== Recherches ciblée GNU/Linux sur Google : ===
:•&amp;nbsp;[http://www.google.fr/linux Recherche Google ciblée GNU/Linux]
:•&amp;nbsp;[http://www.google.com/cse/home?cx=003036737311975801323:yeiooiloi7c Recherche sur forum.debian-fr.org] ou •&amp;nbsp;[http://www.google.com/cse/home?cx=003880180303252368328:fw-yrta3-zw Recherche sur forum.debian-fr.org]
:•&amp;nbsp;[http://www.google.com/cse/home?cx=015801379623395497354:gw8g39yyvum&amp;hl=fr Recherche ciblée Debian]
:•&amp;nbsp;[http://www.google.fr/cse/home?cx=009677488958975547791:vzjkzembgbc Recherche Debian &amp; Ubuntu]

=== GNU/Linux, généralités : ===
:•&amp;nbsp;[http://www.trustonme.net/ Trustonme - Site d'entraide orienté Linux et logiciels libres]
:•&amp;nbsp;[http://lea-linux.org/ Léa-Linux - Site d’aide collaboratif pour le système d’exploitation GNU/Linux]
:Ce site ne semble plus mis à jour depuis longtemps... •&amp;nbsp;[http://www.linuxfrench.net/ LinuxFrench.Net]
:•&amp;nbsp;[http://linuxreviews.org/ Linux Reviews (Nouvelles, tutos, Howto) - Site en anglais]
:•&amp;nbsp;[http://www.quebecos.com/ Quebecos.com (Des nouvelles fraîches, des tutos, un howto, un wiki, un forum...) - Site francophone]

=== GNU/Linux, distributions : ===
:•&amp;nbsp;[http://distrowatch.com/ DistroWatch.com: Put the fun back into computing. Use Linux, BSD.]
:•&amp;nbsp;[http://www.frozentech.com/content/livecd.php The LiveCD List]

== Debian ==

=== GNU/Linux, distributions Debian (en anglais) ===
:•&amp;nbsp;[http://www.debian.org/ Debian]
:•&amp;nbsp;[http://wiki.debian.org/ Debian Wiki]
:•&amp;nbsp;[http://www.debian-administration.org/ Debian GNU-Linux System Administration Resources]
:•&amp;nbsp;[http://www.debian.org/doc/ Debian Documentation]
:•&amp;nbsp;[http://www.debian.org/doc/user-manuals Debian Users Manuals]
:•&amp;nbsp;[http://www.debian.org/doc/manuals/debian-faq/index.en.html The Debian GNU/Linux FAQ]

:•&amp;nbsp;[http://www.togaware.com/linux/survivor/ Debian GNU/Linux Desktop Survival Guide]
:•&amp;nbsp;[http://qref.sourceforge.net/ Guide de référence Debian]
:•&amp;nbsp;[http://www.debian.org/distrib/packages#search_packages Rechercher un paquet Debian]

=== GNU/Linux, distributions Debian (en français) ===
:•&amp;nbsp;[http://www.debian.org/index.fr.html Debian Le système d'exploitation universel]
:•&amp;nbsp;[http://forum.debian-fr.org/ &quot;LE&quot; &quot;forum.debian-fr.org&quot;]
:•&amp;nbsp;[http://debianworld.org/ Debianworld.org encore un site sur Debian !]
:•&amp;nbsp;[http://planet-fr.debian.net/ Planet Debian-FR]
:•&amp;nbsp;[http://www.debian.org/doc/manuals/debian-faq/index.fr.html La FAQ Debian GNU/Linux]
:•&amp;nbsp;[http://www.michauko.org/docs/debian_testing/index.html Dossier d'installation Debian testing]
:•&amp;nbsp;[http://formation-debian.via.ecp.fr/ Formation Debian GNU/Linux]

=== GNU/Linux, distributions Debian : Howto Nvidia ===
:•&amp;nbsp;[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.html Simple instructions on how to install nVidia drivers for X11 on Debian]
:•&amp;nbsp;[http://www.linux-wizard.net/howto.php?section=3&amp;key=nvidia#agp Debian - HowTo - Nvidia]

=== GNU/Linux, distributions Debian : Howto Matériel ===
:•&amp;nbsp;[http://kmuto.jp/debian/hcl/ Vérifiez la compatibilité de votre matériel]
:•&amp;nbsp;[http://www.ibiblio.org/pub/linux/docs/HOWTO/translations/fr/html-1page/Webcam-HOWTO.html Guide pratique des webcams]
:•&amp;nbsp;[http://mxhaard.free.fr/download.html Pilotes Webcam]
:•&amp;nbsp;[http://www.linux-usb.org/USB-guide/book1.html Usb sous Linux]
:•&amp;nbsp;[http://fr.tldp.org/HOWTO/lecture/Hardware-HOWTO.html liste de l'ensemble du matériel réputé compatible ou non avec Linux]
:•&amp;nbsp;[http://fasterdata.es.net/TCP-tuning//linux.html Linux TCP Tuning]

== Autres Distributions Linux ==

=== GNU/Linux - Knoppix===
:•&amp;nbsp;[http://knoppix.fr/ une distribution GNU/Linux basée sur Debian]
:•&amp;nbsp;[http://www.knoppix.net/ Knoppix is a Live Linux CD / Live DVD based on Debian GNU/Linux]

=== GNU/Linux - Sidux ===
:•&amp;nbsp;[http://manual.sidux.com/fr/welcome-fr.htm Manuel de Sidux en français]
:•&amp;nbsp;[http://sidux.com/ Site de Sidux - What is sidux? - Debian Hot &amp; Spicy!]

=== GNU/Linux - Ubuntu (en anglais) ===
:•&amp;nbsp;[http://www.ubuntulinux.org/ Ubuntu]
:•&amp;nbsp;[http://www.ubuntuforums.org/ Ubuntu Official Community &amp; Forums]
:•&amp;nbsp;[http://www.ubuntuguide.org/ Unofficial Ubuntu Starter Guide]
:•&amp;nbsp;[http://packages.ubuntu.com/ Ubuntu packages]

=== GNU/Linux - Ubuntu (en français) ===
:•&amp;nbsp;[http://www.ubuntu-fr.org/ Ubuntu-fr.org]
:•&amp;nbsp;[http://forum.ubuntu-fr.org/ Ubuntu-fr.org Forum]
:Ce site n'est plus maintenu depuis Ubuntu 7.10... •&amp;nbsp;[http://yekubuntu.free.fr/index.php yeK-Ubuntu]
 
=== GNU/Linux - Arch ===
:•&amp;nbsp;[http://www.archlinux.org/ Arch Linux [EN]

=== GNU/Linux - Mandriva ===
:•&amp;nbsp;[http://www.mandrivalinux.com/en-us/ Mandriva Linux]
:•&amp;nbsp;[http://distrowatch.com/table.php?distribution=mandrake DistroWatch.com: Mandriva Linux]
:•&amp;nbsp;[http://mandrivausers.org/ MandrakeUsers]
:•&amp;nbsp;[http://rpm.pbone.net/ RPM pbone.net]
 
=== GNU/Linux - OpenSUSE ===
:•&amp;nbsp;[http://www.opensuse.org/ OpenSUSE]

=== GNU/Linux - Utilitaires ===
:•&amp;nbsp;[http://www.supergrubdisk.org/ Super Grub Disk. PC Boot specialised Disk.]
:•&amp;nbsp;[http://trinityhome.org/ Trinity Rescue Kit or TRK is a free live Linux distribution]
:•&amp;nbsp;[http://www.sysresccd.org/ SystemRescueCd is a Linux system rescue disk]

== GNU/Linux, Dépôts ==

=== GNU/Linux, Dépôts (logiciels) ===
:•&amp;nbsp;[http://apt-get.org/ Unofficial APT repositories]
:•&amp;nbsp;[http://sourceforge.net/ SourceForge.net]
:•&amp;nbsp;[http://freshmeat.net/ freshmeat.net: Welcome to freshmeat.net]
:•&amp;nbsp;[http://linuxappfinder.com/ Linux App Finder &quot;catalogue de programmes GNU/Linux&quot;]
:•&amp;nbsp;[http://www.gnu.org/software/ GNU - Free Software Foundation (FSF)]
:•&amp;nbsp;[http://www.framasoft.net/ Framasoft - Logiciels Libres]
:•&amp;nbsp;[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]

=== GNU/Linux, Dépôts (logiciels équivalences) ===
:[http://wiki.linuxquestions.org/wiki/Linux_software_equivalent_to_Windows_software Linux software equivalent to Windows software - LinuxQuestions.org Wiki]
:[http://www.linuxrsp.ru/win-lin-soft/table-eng.html The table of equivalents / replacements / analogs of Windows software in Linux. ]

=== GNU/Linux, Dépôts (Jeux) ===
:•&amp;nbsp;[http://www.icculus.org/lgfaq/gamelist.php Linux Gamers Game List]
:•&amp;nbsp;[http://forum.hardware.fr/hardwarefr/JeuxVideo/Topic-Unik-Jeux-Linux-Quake-IV-Binaire-dispo-sujet-90039-1.htm#t0 Jeux Linux ]

== GNU/Linux, Howtos et Tutos ==

=== GNU/Linux, Howtos et trucs ===
:•&amp;nbsp;[http://www.linux-tips.net/ Linux Minis HowTo]
:•&amp;nbsp;[http://www.brunolinux.com/ Tips for Linux Explorers]
:•&amp;nbsp;[http://forum.zebulon.fr/index.php?showtopic=17977 Zebulon.fr - Quelques liens pour débuter sous linux]
:•&amp;nbsp;[http://beronono.com/wiki-debian/index.php?title=Accueil Le Wiki de forum.debian-fr.org]
:•&amp;nbsp;[http://tldp.org/ The Linux Documentation Project] et •&amp;nbsp;[http://tldp.org/HOWTO/Francophones-HOWTO.html Le Francophones-HOWTO : Linux &amp; la langue française]
:•&amp;nbsp;[http://jp.barralis.com/linux-man/ Projet de traduction des &quot;man&quot; en français]
:•&amp;nbsp;[http://debian-facile.org/wiki/ Le Wiki de Debian-facile]

=== GNU/Linux, Howtos et trucs sur le bash ===
:•&amp;nbsp;[http://www.ukuug.org/events/linux2003/papers/bash_tips/ Bash Tips &amp; Tricks]
:•&amp;nbsp;[http://www.cavecanen.org/linux/bashtips.php Pedro's web stuff]
 
=== GNU/Linux, Tutos, Guide de l'utilisateur ===
:•&amp;nbsp;[http://www.delafond.org/survielinux/ Guide de Survie du Débutant sous Linux]
:Ce document date de novembre 2000... •&amp;nbsp;[http://www.comptechdoc.org/os/linux/usersguide/ Linux User's Guide (anglais)]
:•&amp;nbsp;[http://www.linux-tutorial.info/ Linux Knowledge Base and Tutorial]
 
=== GNU/Linux, Programmation ===
:•&amp;nbsp;[http://linuxreviews.org/beginner/abs-guide/ Advanced Bash-Scripting Guide]
:•&amp;nbsp;[http://www.freeos.com/guides/lsst/ Linux Shell Scripting Tutorial - A Beginner s handbook]
:•&amp;nbsp;[http://www.tuxfiles.org/linuxhelp/cli.html tuXfiles - Linux command line tutorials for newbies]
 
=== GNU/Linux, Applications : Gnome ===
:•&amp;nbsp;[http://www.gnome.org/ GNOME: The Free Software Desktop Project]
:•&amp;nbsp;[http://www.gnomefr.org/ GNOME-FR (Pays Francophones)]
:•&amp;nbsp;[http://www.gnu.org/software/ Software - GNU Project - Free Software Foundation (FSF)]
:•&amp;nbsp;[http://www.gnomedesktop.org/ FootNotes | GNOME Desktop News]
:•&amp;nbsp;[http://www.gnomejournal.org/ The GNOME Journal]
:•&amp;nbsp;[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]
:•&amp;nbsp;[http://art.gnome.org/ GNOME Art - Artwork &amp; Themes]
:•&amp;nbsp;[http://www.gnome-look.org/ GNOME-Look.org]

=== GNU/Linux, Applications : KDE ===
:•&amp;nbsp;[http://fr.kde.org/ KDE est une équipe technologique internationale qui crée des logiciels libres]
:•&amp;nbsp;[http://dot.kde.org/ Nouvelles de KDE (anglais)]

== Free Software et Open Source ==

=== GNU/Linux, Free Software et Open Source ===
:•&amp;nbsp;[http://www.framasoft.net/ Framasoft - Réseau de sites web collaboratifs, vise à diffuser le logiciel libre] / [http://www.framasoft.net/article3338.html Framasoft : Qu’est-ce qu’un logiciel libre ?]
:•&amp;nbsp;[http://en.wikipedia.org/wiki/Portal:Free_software Wikipedia the free encyclopedia : Portal:Free software (anglais)]
:•&amp;nbsp;[http://www.fsfeurope.org/index.fr.html FSF Europe - Free Software Foundation Europe (Multilingue)]
:•&amp;nbsp;[http://solutions.journaldunet.com/dossiers/libre/sommaire.shtml Le Journal du Net : Dossier Logiciels libres/Open Source]
:•&amp;nbsp;[http://www.logiciellibre.net/ LogicielLibre.Net - Premiere ressource francophone sur l'economie des logiciels libres / Open Source]
:•&amp;nbsp;[http://www.progilibre.com/ Progilibre.com | La communauté des applications professionnelles en open source]
:•&amp;nbsp;[http://www.aful.org/ AFUL (Association Francophone des Utilisateurs de Logiciels Libres)]
:•&amp;nbsp;[http://www.generation-libre.com/ Generation Libre - Site d'informations et d'entraide sur les logiciels libres ]
:•&amp;nbsp;[http://lelogiciellibre.net/ Le Logiciel Libre : découvrir, télécharger des logiciels libres]
:•&amp;nbsp;[http://www.jesuislibre.org/ Je Suis Libre (Ce site permet de faire sortir de l'ombre tous les développeurs qui conçoivent des projets dans le monde du libre)]
:•&amp;nbsp;[http://www.openstickers.com/ Open source &quot;goodies&quot; (anglais)]

=== GNU/Linux, Open Source : Formats, Brevets, DRM et Cie ===
:•&amp;nbsp;[http://formats-ouverts.org/ Pour les formats ouverts !]
:•&amp;nbsp;[http://stopdrm.info/ StopDRM!]

=== GNU/Linux, Free Software et Open Source : Définitions ===
:•&amp;nbsp;[http://www.gnu.org/philosophy/free-sw.fr.html Le projet GNU : Définition d'un logiciel libre]
:•&amp;nbsp;[http://www.fsfeurope.org/documents/freesoftware.fr.html FSF Europe - Qu'est-ce que le Logiciel Libre ?]
:•&amp;nbsp;[http://fr.wikipedia.org/wiki/Logiciel_libre Logiciel libre - Wikipédia]
:•&amp;nbsp;[http://www.livretdulibre.org/ Livret du Libre (Le Livret du Libre est une introduction au Libre)]
:•&amp;nbsp;[http://solutions.journaldunet.com/0605/060517-qr-terminologie-open-source.shtml La terminologie de l'Open Source en 7 questions]

=== A enlever ===
:•&amp;nbsp;[http://archlinuxfr.org/ Arch Linux [FR]      :  le lien pointe sur une page sans rapport avec arch linux, et indique &quot;Le nom de domaine archlinuxfr.org est mis en vente par son propriétaire. &quot;


--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 06:28 (UTC)

[[Catégorie:Documentation externe]]</text>
      <sha1>r2ssnxl7p63foktevrtmhx4t6ilanu4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2029</id>
      <parentid>1357</parentid>
      <timestamp>2010-08-25T08:01:41Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* GNU/Linux, Dépôts */</comment>
      <text xml:space="preserve" bytes="12073">{{Ébauche|les liens GNU/Linux, la Free Software et l'Open Source}}

Sur cette page sont centralisés tous les liens concernant GNU/Linux, la Free Software et l'Open Source !

== Divers ==

=== Recherches ciblée GNU/Linux sur Google : ===
:•&amp;nbsp;[http://www.google.fr/linux Recherche Google ciblée GNU/Linux]
:•&amp;nbsp;[http://www.google.com/cse/home?cx=003036737311975801323:yeiooiloi7c Recherche sur forum.debian-fr.org] ou •&amp;nbsp;[http://www.google.com/cse/home?cx=003880180303252368328:fw-yrta3-zw Recherche sur forum.debian-fr.org]
:•&amp;nbsp;[http://www.google.com/cse/home?cx=015801379623395497354:gw8g39yyvum&amp;hl=fr Recherche ciblée Debian]
:•&amp;nbsp;[http://www.google.fr/cse/home?cx=009677488958975547791:vzjkzembgbc Recherche Debian &amp; Ubuntu]

=== GNU/Linux, généralités : ===
:•&amp;nbsp;[http://www.trustonme.net/ Trustonme - Site d'entraide orienté Linux et logiciels libres]
:•&amp;nbsp;[http://lea-linux.org/ Léa-Linux - Site d’aide collaboratif pour le système d’exploitation GNU/Linux]
:Ce site ne semble plus mis à jour depuis longtemps... •&amp;nbsp;[http://www.linuxfrench.net/ LinuxFrench.Net]
:•&amp;nbsp;[http://linuxreviews.org/ Linux Reviews (Nouvelles, tutos, Howto) - Site en anglais]
:•&amp;nbsp;[http://www.quebecos.com/ Quebecos.com (Des nouvelles fraîches, des tutos, un howto, un wiki, un forum...) - Site francophone]

=== GNU/Linux, distributions : ===
:•&amp;nbsp;[http://distrowatch.com/ DistroWatch.com: Put the fun back into computing. Use Linux, BSD.]
:•&amp;nbsp;[http://www.frozentech.com/content/livecd.php The LiveCD List]

== Debian ==

=== GNU/Linux, distributions Debian (en anglais) ===
:•&amp;nbsp;[http://www.debian.org/ Debian]
:•&amp;nbsp;[http://wiki.debian.org/ Debian Wiki]
:•&amp;nbsp;[http://www.debian-administration.org/ Debian GNU-Linux System Administration Resources]
:•&amp;nbsp;[http://www.debian.org/doc/ Debian Documentation]
:•&amp;nbsp;[http://www.debian.org/doc/user-manuals Debian Users Manuals]
:•&amp;nbsp;[http://www.debian.org/doc/manuals/debian-faq/index.en.html The Debian GNU/Linux FAQ]

:•&amp;nbsp;[http://www.togaware.com/linux/survivor/ Debian GNU/Linux Desktop Survival Guide]
:•&amp;nbsp;[http://qref.sourceforge.net/ Guide de référence Debian]
:•&amp;nbsp;[http://www.debian.org/distrib/packages#search_packages Rechercher un paquet Debian]

=== GNU/Linux, distributions Debian (en français) ===
:•&amp;nbsp;[http://www.debian.org/index.fr.html Debian Le système d'exploitation universel]
:•&amp;nbsp;[http://forum.debian-fr.org/ &quot;LE&quot; &quot;forum.debian-fr.org&quot;]
:•&amp;nbsp;[http://debianworld.org/ Debianworld.org encore un site sur Debian !]
:•&amp;nbsp;[http://planet-fr.debian.net/ Planet Debian-FR]
:•&amp;nbsp;[http://www.debian.org/doc/manuals/debian-faq/index.fr.html La FAQ Debian GNU/Linux]
:•&amp;nbsp;[http://www.michauko.org/docs/debian_testing/index.html Dossier d'installation Debian testing]
:•&amp;nbsp;[http://formation-debian.via.ecp.fr/ Formation Debian GNU/Linux]

=== GNU/Linux, distributions Debian : Howto Nvidia ===
:•&amp;nbsp;[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.html Simple instructions on how to install nVidia drivers for X11 on Debian]
:•&amp;nbsp;[http://www.linux-wizard.net/howto.php?section=3&amp;key=nvidia#agp Debian - HowTo - Nvidia]

=== GNU/Linux, distributions Debian : Howto Matériel ===
:•&amp;nbsp;[http://kmuto.jp/debian/hcl/ Vérifiez la compatibilité de votre matériel]
:•&amp;nbsp;[http://www.ibiblio.org/pub/linux/docs/HOWTO/translations/fr/html-1page/Webcam-HOWTO.html Guide pratique des webcams]
:•&amp;nbsp;[http://mxhaard.free.fr/download.html Pilotes Webcam]
:•&amp;nbsp;[http://www.linux-usb.org/USB-guide/book1.html Usb sous Linux]
:•&amp;nbsp;[http://fr.tldp.org/HOWTO/lecture/Hardware-HOWTO.html liste de l'ensemble du matériel réputé compatible ou non avec Linux]
:•&amp;nbsp;[http://fasterdata.es.net/TCP-tuning//linux.html Linux TCP Tuning]

== Autres Distributions Linux ==

=== GNU/Linux - Knoppix===
:•&amp;nbsp;[http://knoppix.fr/ une distribution GNU/Linux basée sur Debian]
:•&amp;nbsp;[http://www.knoppix.net/ Knoppix is a Live Linux CD / Live DVD based on Debian GNU/Linux]

=== GNU/Linux - Sidux ===
:•&amp;nbsp;[http://manual.sidux.com/fr/welcome-fr.htm Manuel de Sidux en français]
:•&amp;nbsp;[http://sidux.com/ Site de Sidux - What is sidux? - Debian Hot &amp; Spicy!]

=== GNU/Linux - Ubuntu (en anglais) ===
:•&amp;nbsp;[http://www.ubuntulinux.org/ Ubuntu]
:•&amp;nbsp;[http://www.ubuntuforums.org/ Ubuntu Official Community &amp; Forums]
:•&amp;nbsp;[http://www.ubuntuguide.org/ Unofficial Ubuntu Starter Guide]
:•&amp;nbsp;[http://packages.ubuntu.com/ Ubuntu packages]

=== GNU/Linux - Ubuntu (en français) ===
:•&amp;nbsp;[http://www.ubuntu-fr.org/ Ubuntu-fr.org]
:•&amp;nbsp;[http://forum.ubuntu-fr.org/ Ubuntu-fr.org Forum]
:Ce site n'est plus maintenu depuis Ubuntu 7.10... •&amp;nbsp;[http://yekubuntu.free.fr/index.php yeK-Ubuntu]
 
=== GNU/Linux - Arch ===
:•&amp;nbsp;[http://www.archlinux.org/ Arch Linux [EN]

=== GNU/Linux - Mandriva ===
:•&amp;nbsp;[http://www.mandrivalinux.com/en-us/ Mandriva Linux]
:•&amp;nbsp;[http://distrowatch.com/table.php?distribution=mandrake DistroWatch.com: Mandriva Linux]
:•&amp;nbsp;[http://mandrivausers.org/ MandrakeUsers]
:•&amp;nbsp;[http://rpm.pbone.net/ RPM pbone.net]
 
=== GNU/Linux - OpenSUSE ===
:•&amp;nbsp;[http://www.opensuse.org/ OpenSUSE]

=== GNU/Linux - Utilitaires ===
:•&amp;nbsp;[http://www.supergrubdisk.org/ Super Grub Disk. PC Boot specialised Disk.]
:•&amp;nbsp;[http://trinityhome.org/ Trinity Rescue Kit or TRK is a free live Linux distribution]
:•&amp;nbsp;[http://www.sysresccd.org/ SystemRescueCd is a Linux system rescue disk]

== GNU/Linux, Dépôts ==
=== Debia/Snapshots ===

[http://snapshot.debian.org/ snapshot.debian.org]

Le dépôt &quot;snapshot&quot; permet l'accès aux anciens paquets en fonction des dates et des numéros de version. Il se compose de tous les paquets Debian passés et actuels.
=== GNU/Linux, Dépôts (logiciels) ===
:•&amp;nbsp;[http://apt-get.org/ Unofficial APT repositories]
:•&amp;nbsp;[http://sourceforge.net/ SourceForge.net]
:•&amp;nbsp;[http://freshmeat.net/ freshmeat.net: Welcome to freshmeat.net]
:•&amp;nbsp;[http://linuxappfinder.com/ Linux App Finder &quot;catalogue de programmes GNU/Linux&quot;]
:•&amp;nbsp;[http://www.gnu.org/software/ GNU - Free Software Foundation (FSF)]
:•&amp;nbsp;[http://www.framasoft.net/ Framasoft - Logiciels Libres]
:•&amp;nbsp;[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]

=== GNU/Linux, Dépôts (logiciels équivalences) ===
:[http://wiki.linuxquestions.org/wiki/Linux_software_equivalent_to_Windows_software Linux software equivalent to Windows software - LinuxQuestions.org Wiki]
:[http://www.linuxrsp.ru/win-lin-soft/table-eng.html The table of equivalents / replacements / analogs of Windows software in Linux. ]

=== GNU/Linux, Dépôts (Jeux) ===
:•&amp;nbsp;[http://www.icculus.org/lgfaq/gamelist.php Linux Gamers Game List]
:•&amp;nbsp;[http://forum.hardware.fr/hardwarefr/JeuxVideo/Topic-Unik-Jeux-Linux-Quake-IV-Binaire-dispo-sujet-90039-1.htm#t0 Jeux Linux ]

== GNU/Linux, Howtos et Tutos ==

=== GNU/Linux, Howtos et trucs ===
:•&amp;nbsp;[http://www.linux-tips.net/ Linux Minis HowTo]
:•&amp;nbsp;[http://www.brunolinux.com/ Tips for Linux Explorers]
:•&amp;nbsp;[http://forum.zebulon.fr/index.php?showtopic=17977 Zebulon.fr - Quelques liens pour débuter sous linux]
:•&amp;nbsp;[http://beronono.com/wiki-debian/index.php?title=Accueil Le Wiki de forum.debian-fr.org]
:•&amp;nbsp;[http://tldp.org/ The Linux Documentation Project] et •&amp;nbsp;[http://tldp.org/HOWTO/Francophones-HOWTO.html Le Francophones-HOWTO : Linux &amp; la langue française]
:•&amp;nbsp;[http://jp.barralis.com/linux-man/ Projet de traduction des &quot;man&quot; en français]
:•&amp;nbsp;[http://debian-facile.org/wiki/ Le Wiki de Debian-facile]

=== GNU/Linux, Howtos et trucs sur le bash ===
:•&amp;nbsp;[http://www.ukuug.org/events/linux2003/papers/bash_tips/ Bash Tips &amp; Tricks]
:•&amp;nbsp;[http://www.cavecanen.org/linux/bashtips.php Pedro's web stuff]
 
=== GNU/Linux, Tutos, Guide de l'utilisateur ===
:•&amp;nbsp;[http://www.delafond.org/survielinux/ Guide de Survie du Débutant sous Linux]
:Ce document date de novembre 2000... •&amp;nbsp;[http://www.comptechdoc.org/os/linux/usersguide/ Linux User's Guide (anglais)]
:•&amp;nbsp;[http://www.linux-tutorial.info/ Linux Knowledge Base and Tutorial]
 
=== GNU/Linux, Programmation ===
:•&amp;nbsp;[http://linuxreviews.org/beginner/abs-guide/ Advanced Bash-Scripting Guide]
:•&amp;nbsp;[http://www.freeos.com/guides/lsst/ Linux Shell Scripting Tutorial - A Beginner s handbook]
:•&amp;nbsp;[http://www.tuxfiles.org/linuxhelp/cli.html tuXfiles - Linux command line tutorials for newbies]
 
=== GNU/Linux, Applications : Gnome ===
:•&amp;nbsp;[http://www.gnome.org/ GNOME: The Free Software Desktop Project]
:•&amp;nbsp;[http://www.gnomefr.org/ GNOME-FR (Pays Francophones)]
:•&amp;nbsp;[http://www.gnu.org/software/ Software - GNU Project - Free Software Foundation (FSF)]
:•&amp;nbsp;[http://www.gnomedesktop.org/ FootNotes | GNOME Desktop News]
:•&amp;nbsp;[http://www.gnomejournal.org/ The GNOME Journal]
:•&amp;nbsp;[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]
:•&amp;nbsp;[http://art.gnome.org/ GNOME Art - Artwork &amp; Themes]
:•&amp;nbsp;[http://www.gnome-look.org/ GNOME-Look.org]

=== GNU/Linux, Applications : KDE ===
:•&amp;nbsp;[http://fr.kde.org/ KDE est une équipe technologique internationale qui crée des logiciels libres]
:•&amp;nbsp;[http://dot.kde.org/ Nouvelles de KDE (anglais)]

== Free Software et Open Source ==

=== GNU/Linux, Free Software et Open Source ===
:•&amp;nbsp;[http://www.framasoft.net/ Framasoft - Réseau de sites web collaboratifs, vise à diffuser le logiciel libre] / [http://www.framasoft.net/article3338.html Framasoft : Qu’est-ce qu’un logiciel libre ?]
:•&amp;nbsp;[http://en.wikipedia.org/wiki/Portal:Free_software Wikipedia the free encyclopedia : Portal:Free software (anglais)]
:•&amp;nbsp;[http://www.fsfeurope.org/index.fr.html FSF Europe - Free Software Foundation Europe (Multilingue)]
:•&amp;nbsp;[http://solutions.journaldunet.com/dossiers/libre/sommaire.shtml Le Journal du Net : Dossier Logiciels libres/Open Source]
:•&amp;nbsp;[http://www.logiciellibre.net/ LogicielLibre.Net - Premiere ressource francophone sur l'economie des logiciels libres / Open Source]
:•&amp;nbsp;[http://www.progilibre.com/ Progilibre.com | La communauté des applications professionnelles en open source]
:•&amp;nbsp;[http://www.aful.org/ AFUL (Association Francophone des Utilisateurs de Logiciels Libres)]
:•&amp;nbsp;[http://www.generation-libre.com/ Generation Libre - Site d'informations et d'entraide sur les logiciels libres ]
:•&amp;nbsp;[http://lelogiciellibre.net/ Le Logiciel Libre : découvrir, télécharger des logiciels libres]
:•&amp;nbsp;[http://www.jesuislibre.org/ Je Suis Libre (Ce site permet de faire sortir de l'ombre tous les développeurs qui conçoivent des projets dans le monde du libre)]
:•&amp;nbsp;[http://www.openstickers.com/ Open source &quot;goodies&quot; (anglais)]

=== GNU/Linux, Open Source : Formats, Brevets, DRM et Cie ===
:•&amp;nbsp;[http://formats-ouverts.org/ Pour les formats ouverts !]
:•&amp;nbsp;[http://stopdrm.info/ StopDRM!]

=== GNU/Linux, Free Software et Open Source : Définitions ===
:•&amp;nbsp;[http://www.gnu.org/philosophy/free-sw.fr.html Le projet GNU : Définition d'un logiciel libre]
:•&amp;nbsp;[http://www.fsfeurope.org/documents/freesoftware.fr.html FSF Europe - Qu'est-ce que le Logiciel Libre ?]
:•&amp;nbsp;[http://fr.wikipedia.org/wiki/Logiciel_libre Logiciel libre - Wikipédia]
:•&amp;nbsp;[http://www.livretdulibre.org/ Livret du Libre (Le Livret du Libre est une introduction au Libre)]
:•&amp;nbsp;[http://solutions.journaldunet.com/0605/060517-qr-terminologie-open-source.shtml La terminologie de l'Open Source en 7 questions]

=== A enlever ===
:•&amp;nbsp;[http://archlinuxfr.org/ Arch Linux [FR]      :  le lien pointe sur une page sans rapport avec arch linux, et indique &quot;Le nom de domaine archlinuxfr.org est mis en vente par son propriétaire. &quot;


--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 06:28 (UTC)

[[Catégorie:Documentation externe]]</text>
      <sha1>s0bmu73g8utdrwq8gctsidttdyy1dz5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2030</id>
      <parentid>2029</parentid>
      <timestamp>2010-08-25T08:02:02Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Debia/Snapshots */</comment>
      <text xml:space="preserve" bytes="12075">{{Ébauche|les liens GNU/Linux, la Free Software et l'Open Source}}

Sur cette page sont centralisés tous les liens concernant GNU/Linux, la Free Software et l'Open Source !

== Divers ==

=== Recherches ciblée GNU/Linux sur Google : ===
:•&amp;nbsp;[http://www.google.fr/linux Recherche Google ciblée GNU/Linux]
:•&amp;nbsp;[http://www.google.com/cse/home?cx=003036737311975801323:yeiooiloi7c Recherche sur forum.debian-fr.org] ou •&amp;nbsp;[http://www.google.com/cse/home?cx=003880180303252368328:fw-yrta3-zw Recherche sur forum.debian-fr.org]
:•&amp;nbsp;[http://www.google.com/cse/home?cx=015801379623395497354:gw8g39yyvum&amp;hl=fr Recherche ciblée Debian]
:•&amp;nbsp;[http://www.google.fr/cse/home?cx=009677488958975547791:vzjkzembgbc Recherche Debian &amp; Ubuntu]

=== GNU/Linux, généralités : ===
:•&amp;nbsp;[http://www.trustonme.net/ Trustonme - Site d'entraide orienté Linux et logiciels libres]
:•&amp;nbsp;[http://lea-linux.org/ Léa-Linux - Site d’aide collaboratif pour le système d’exploitation GNU/Linux]
:Ce site ne semble plus mis à jour depuis longtemps... •&amp;nbsp;[http://www.linuxfrench.net/ LinuxFrench.Net]
:•&amp;nbsp;[http://linuxreviews.org/ Linux Reviews (Nouvelles, tutos, Howto) - Site en anglais]
:•&amp;nbsp;[http://www.quebecos.com/ Quebecos.com (Des nouvelles fraîches, des tutos, un howto, un wiki, un forum...) - Site francophone]

=== GNU/Linux, distributions : ===
:•&amp;nbsp;[http://distrowatch.com/ DistroWatch.com: Put the fun back into computing. Use Linux, BSD.]
:•&amp;nbsp;[http://www.frozentech.com/content/livecd.php The LiveCD List]

== Debian ==

=== GNU/Linux, distributions Debian (en anglais) ===
:•&amp;nbsp;[http://www.debian.org/ Debian]
:•&amp;nbsp;[http://wiki.debian.org/ Debian Wiki]
:•&amp;nbsp;[http://www.debian-administration.org/ Debian GNU-Linux System Administration Resources]
:•&amp;nbsp;[http://www.debian.org/doc/ Debian Documentation]
:•&amp;nbsp;[http://www.debian.org/doc/user-manuals Debian Users Manuals]
:•&amp;nbsp;[http://www.debian.org/doc/manuals/debian-faq/index.en.html The Debian GNU/Linux FAQ]

:•&amp;nbsp;[http://www.togaware.com/linux/survivor/ Debian GNU/Linux Desktop Survival Guide]
:•&amp;nbsp;[http://qref.sourceforge.net/ Guide de référence Debian]
:•&amp;nbsp;[http://www.debian.org/distrib/packages#search_packages Rechercher un paquet Debian]

=== GNU/Linux, distributions Debian (en français) ===
:•&amp;nbsp;[http://www.debian.org/index.fr.html Debian Le système d'exploitation universel]
:•&amp;nbsp;[http://forum.debian-fr.org/ &quot;LE&quot; &quot;forum.debian-fr.org&quot;]
:•&amp;nbsp;[http://debianworld.org/ Debianworld.org encore un site sur Debian !]
:•&amp;nbsp;[http://planet-fr.debian.net/ Planet Debian-FR]
:•&amp;nbsp;[http://www.debian.org/doc/manuals/debian-faq/index.fr.html La FAQ Debian GNU/Linux]
:•&amp;nbsp;[http://www.michauko.org/docs/debian_testing/index.html Dossier d'installation Debian testing]
:•&amp;nbsp;[http://formation-debian.via.ecp.fr/ Formation Debian GNU/Linux]

=== GNU/Linux, distributions Debian : Howto Nvidia ===
:•&amp;nbsp;[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.html Simple instructions on how to install nVidia drivers for X11 on Debian]
:•&amp;nbsp;[http://www.linux-wizard.net/howto.php?section=3&amp;key=nvidia#agp Debian - HowTo - Nvidia]

=== GNU/Linux, distributions Debian : Howto Matériel ===
:•&amp;nbsp;[http://kmuto.jp/debian/hcl/ Vérifiez la compatibilité de votre matériel]
:•&amp;nbsp;[http://www.ibiblio.org/pub/linux/docs/HOWTO/translations/fr/html-1page/Webcam-HOWTO.html Guide pratique des webcams]
:•&amp;nbsp;[http://mxhaard.free.fr/download.html Pilotes Webcam]
:•&amp;nbsp;[http://www.linux-usb.org/USB-guide/book1.html Usb sous Linux]
:•&amp;nbsp;[http://fr.tldp.org/HOWTO/lecture/Hardware-HOWTO.html liste de l'ensemble du matériel réputé compatible ou non avec Linux]
:•&amp;nbsp;[http://fasterdata.es.net/TCP-tuning//linux.html Linux TCP Tuning]

== Autres Distributions Linux ==

=== GNU/Linux - Knoppix===
:•&amp;nbsp;[http://knoppix.fr/ une distribution GNU/Linux basée sur Debian]
:•&amp;nbsp;[http://www.knoppix.net/ Knoppix is a Live Linux CD / Live DVD based on Debian GNU/Linux]

=== GNU/Linux - Sidux ===
:•&amp;nbsp;[http://manual.sidux.com/fr/welcome-fr.htm Manuel de Sidux en français]
:•&amp;nbsp;[http://sidux.com/ Site de Sidux - What is sidux? - Debian Hot &amp; Spicy!]

=== GNU/Linux - Ubuntu (en anglais) ===
:•&amp;nbsp;[http://www.ubuntulinux.org/ Ubuntu]
:•&amp;nbsp;[http://www.ubuntuforums.org/ Ubuntu Official Community &amp; Forums]
:•&amp;nbsp;[http://www.ubuntuguide.org/ Unofficial Ubuntu Starter Guide]
:•&amp;nbsp;[http://packages.ubuntu.com/ Ubuntu packages]

=== GNU/Linux - Ubuntu (en français) ===
:•&amp;nbsp;[http://www.ubuntu-fr.org/ Ubuntu-fr.org]
:•&amp;nbsp;[http://forum.ubuntu-fr.org/ Ubuntu-fr.org Forum]
:Ce site n'est plus maintenu depuis Ubuntu 7.10... •&amp;nbsp;[http://yekubuntu.free.fr/index.php yeK-Ubuntu]
 
=== GNU/Linux - Arch ===
:•&amp;nbsp;[http://www.archlinux.org/ Arch Linux [EN]

=== GNU/Linux - Mandriva ===
:•&amp;nbsp;[http://www.mandrivalinux.com/en-us/ Mandriva Linux]
:•&amp;nbsp;[http://distrowatch.com/table.php?distribution=mandrake DistroWatch.com: Mandriva Linux]
:•&amp;nbsp;[http://mandrivausers.org/ MandrakeUsers]
:•&amp;nbsp;[http://rpm.pbone.net/ RPM pbone.net]
 
=== GNU/Linux - OpenSUSE ===
:•&amp;nbsp;[http://www.opensuse.org/ OpenSUSE]

=== GNU/Linux - Utilitaires ===
:•&amp;nbsp;[http://www.supergrubdisk.org/ Super Grub Disk. PC Boot specialised Disk.]
:•&amp;nbsp;[http://trinityhome.org/ Trinity Rescue Kit or TRK is a free live Linux distribution]
:•&amp;nbsp;[http://www.sysresccd.org/ SystemRescueCd is a Linux system rescue disk]

== GNU/Linux, Dépôts ==
=== Debian/Snapshots ===

[http://snapshot.debian.org/ snapshot.debian.org]

Le dépôt &quot;snapshot&quot; permet l'accès aux anciens paquets en fonction des dates et des numéros de version. Il se compose de tous les paquets Debian passés et actuels.

=== GNU/Linux, Dépôts (logiciels) ===
:•&amp;nbsp;[http://apt-get.org/ Unofficial APT repositories]
:•&amp;nbsp;[http://sourceforge.net/ SourceForge.net]
:•&amp;nbsp;[http://freshmeat.net/ freshmeat.net: Welcome to freshmeat.net]
:•&amp;nbsp;[http://linuxappfinder.com/ Linux App Finder &quot;catalogue de programmes GNU/Linux&quot;]
:•&amp;nbsp;[http://www.gnu.org/software/ GNU - Free Software Foundation (FSF)]
:•&amp;nbsp;[http://www.framasoft.net/ Framasoft - Logiciels Libres]
:•&amp;nbsp;[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]

=== GNU/Linux, Dépôts (logiciels équivalences) ===
:[http://wiki.linuxquestions.org/wiki/Linux_software_equivalent_to_Windows_software Linux software equivalent to Windows software - LinuxQuestions.org Wiki]
:[http://www.linuxrsp.ru/win-lin-soft/table-eng.html The table of equivalents / replacements / analogs of Windows software in Linux. ]

=== GNU/Linux, Dépôts (Jeux) ===
:•&amp;nbsp;[http://www.icculus.org/lgfaq/gamelist.php Linux Gamers Game List]
:•&amp;nbsp;[http://forum.hardware.fr/hardwarefr/JeuxVideo/Topic-Unik-Jeux-Linux-Quake-IV-Binaire-dispo-sujet-90039-1.htm#t0 Jeux Linux ]

== GNU/Linux, Howtos et Tutos ==

=== GNU/Linux, Howtos et trucs ===
:•&amp;nbsp;[http://www.linux-tips.net/ Linux Minis HowTo]
:•&amp;nbsp;[http://www.brunolinux.com/ Tips for Linux Explorers]
:•&amp;nbsp;[http://forum.zebulon.fr/index.php?showtopic=17977 Zebulon.fr - Quelques liens pour débuter sous linux]
:•&amp;nbsp;[http://beronono.com/wiki-debian/index.php?title=Accueil Le Wiki de forum.debian-fr.org]
:•&amp;nbsp;[http://tldp.org/ The Linux Documentation Project] et •&amp;nbsp;[http://tldp.org/HOWTO/Francophones-HOWTO.html Le Francophones-HOWTO : Linux &amp; la langue française]
:•&amp;nbsp;[http://jp.barralis.com/linux-man/ Projet de traduction des &quot;man&quot; en français]
:•&amp;nbsp;[http://debian-facile.org/wiki/ Le Wiki de Debian-facile]

=== GNU/Linux, Howtos et trucs sur le bash ===
:•&amp;nbsp;[http://www.ukuug.org/events/linux2003/papers/bash_tips/ Bash Tips &amp; Tricks]
:•&amp;nbsp;[http://www.cavecanen.org/linux/bashtips.php Pedro's web stuff]
 
=== GNU/Linux, Tutos, Guide de l'utilisateur ===
:•&amp;nbsp;[http://www.delafond.org/survielinux/ Guide de Survie du Débutant sous Linux]
:Ce document date de novembre 2000... •&amp;nbsp;[http://www.comptechdoc.org/os/linux/usersguide/ Linux User's Guide (anglais)]
:•&amp;nbsp;[http://www.linux-tutorial.info/ Linux Knowledge Base and Tutorial]
 
=== GNU/Linux, Programmation ===
:•&amp;nbsp;[http://linuxreviews.org/beginner/abs-guide/ Advanced Bash-Scripting Guide]
:•&amp;nbsp;[http://www.freeos.com/guides/lsst/ Linux Shell Scripting Tutorial - A Beginner s handbook]
:•&amp;nbsp;[http://www.tuxfiles.org/linuxhelp/cli.html tuXfiles - Linux command line tutorials for newbies]
 
=== GNU/Linux, Applications : Gnome ===
:•&amp;nbsp;[http://www.gnome.org/ GNOME: The Free Software Desktop Project]
:•&amp;nbsp;[http://www.gnomefr.org/ GNOME-FR (Pays Francophones)]
:•&amp;nbsp;[http://www.gnu.org/software/ Software - GNU Project - Free Software Foundation (FSF)]
:•&amp;nbsp;[http://www.gnomedesktop.org/ FootNotes | GNOME Desktop News]
:•&amp;nbsp;[http://www.gnomejournal.org/ The GNOME Journal]
:•&amp;nbsp;[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]
:•&amp;nbsp;[http://art.gnome.org/ GNOME Art - Artwork &amp; Themes]
:•&amp;nbsp;[http://www.gnome-look.org/ GNOME-Look.org]

=== GNU/Linux, Applications : KDE ===
:•&amp;nbsp;[http://fr.kde.org/ KDE est une équipe technologique internationale qui crée des logiciels libres]
:•&amp;nbsp;[http://dot.kde.org/ Nouvelles de KDE (anglais)]

== Free Software et Open Source ==

=== GNU/Linux, Free Software et Open Source ===
:•&amp;nbsp;[http://www.framasoft.net/ Framasoft - Réseau de sites web collaboratifs, vise à diffuser le logiciel libre] / [http://www.framasoft.net/article3338.html Framasoft : Qu’est-ce qu’un logiciel libre ?]
:•&amp;nbsp;[http://en.wikipedia.org/wiki/Portal:Free_software Wikipedia the free encyclopedia : Portal:Free software (anglais)]
:•&amp;nbsp;[http://www.fsfeurope.org/index.fr.html FSF Europe - Free Software Foundation Europe (Multilingue)]
:•&amp;nbsp;[http://solutions.journaldunet.com/dossiers/libre/sommaire.shtml Le Journal du Net : Dossier Logiciels libres/Open Source]
:•&amp;nbsp;[http://www.logiciellibre.net/ LogicielLibre.Net - Premiere ressource francophone sur l'economie des logiciels libres / Open Source]
:•&amp;nbsp;[http://www.progilibre.com/ Progilibre.com | La communauté des applications professionnelles en open source]
:•&amp;nbsp;[http://www.aful.org/ AFUL (Association Francophone des Utilisateurs de Logiciels Libres)]
:•&amp;nbsp;[http://www.generation-libre.com/ Generation Libre - Site d'informations et d'entraide sur les logiciels libres ]
:•&amp;nbsp;[http://lelogiciellibre.net/ Le Logiciel Libre : découvrir, télécharger des logiciels libres]
:•&amp;nbsp;[http://www.jesuislibre.org/ Je Suis Libre (Ce site permet de faire sortir de l'ombre tous les développeurs qui conçoivent des projets dans le monde du libre)]
:•&amp;nbsp;[http://www.openstickers.com/ Open source &quot;goodies&quot; (anglais)]

=== GNU/Linux, Open Source : Formats, Brevets, DRM et Cie ===
:•&amp;nbsp;[http://formats-ouverts.org/ Pour les formats ouverts !]
:•&amp;nbsp;[http://stopdrm.info/ StopDRM!]

=== GNU/Linux, Free Software et Open Source : Définitions ===
:•&amp;nbsp;[http://www.gnu.org/philosophy/free-sw.fr.html Le projet GNU : Définition d'un logiciel libre]
:•&amp;nbsp;[http://www.fsfeurope.org/documents/freesoftware.fr.html FSF Europe - Qu'est-ce que le Logiciel Libre ?]
:•&amp;nbsp;[http://fr.wikipedia.org/wiki/Logiciel_libre Logiciel libre - Wikipédia]
:•&amp;nbsp;[http://www.livretdulibre.org/ Livret du Libre (Le Livret du Libre est une introduction au Libre)]
:•&amp;nbsp;[http://solutions.journaldunet.com/0605/060517-qr-terminologie-open-source.shtml La terminologie de l'Open Source en 7 questions]

=== A enlever ===
:•&amp;nbsp;[http://archlinuxfr.org/ Arch Linux [FR]      :  le lien pointe sur une page sans rapport avec arch linux, et indique &quot;Le nom de domaine archlinuxfr.org est mis en vente par son propriétaire. &quot;


--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 06:28 (UTC)

[[Catégorie:Documentation externe]]</text>
      <sha1>mbot5mqyyyvekodc8usnquwgi6brgi1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2600</id>
      <parentid>2030</parentid>
      <timestamp>2010-12-28T10:19:30Z</timestamp>
      <contributor>
        <username>Tophe</username>
        <id>26</id>
      </contributor>
      <text xml:space="preserve" bytes="12092">{{Ébauche|les liens GNU/Linux, la Free Software et l'Open Source}}

Sur cette page sont centralisés tous les liens concernant GNU/Linux, la Free Software et l'Open Source !

== Divers ==

=== Recherches ciblée GNU/Linux sur Google : ===
:•&amp;nbsp;[http://www.google.fr/linux Recherche Google ciblée GNU/Linux]
:•&amp;nbsp;[http://www.google.com/cse/home?cx=003036737311975801323:yeiooiloi7c Recherche sur forum.debian-fr.org] ou •&amp;nbsp;[http://www.google.com/cse/home?cx=003880180303252368328:fw-yrta3-zw Recherche sur forum.debian-fr.org]
:•&amp;nbsp;[http://www.google.com/cse/home?cx=015801379623395497354:gw8g39yyvum&amp;hl=fr Recherche ciblée Debian]
:•&amp;nbsp;[http://www.google.fr/cse/home?cx=009677488958975547791:vzjkzembgbc Recherche Debian &amp; Ubuntu]

=== GNU/Linux, généralités : ===
:•&amp;nbsp;[http://www.trustonme.net/ Trustonme - Site d'entraide orienté Linux et logiciels libres]
:•&amp;nbsp;[http://lea-linux.org/ Léa-Linux - Site d’aide collaboratif pour le système d’exploitation GNU/Linux]
:Ce site ne semble plus mis à jour depuis longtemps... •&amp;nbsp;[http://www.linuxfrench.net/ LinuxFrench.Net]
:•&amp;nbsp;[http://linuxreviews.org/ Linux Reviews (Nouvelles, tutos, Howto) - Site en anglais]
:•&amp;nbsp;[http://www.quebecos.com/ Quebecos.com (Des nouvelles fraîches, des tutos, un howto, un wiki, un forum...) - Site francophone]

=== GNU/Linux, distributions : ===
:•&amp;nbsp;[http://distrowatch.com/ DistroWatch.com: Put the fun back into computing. Use Linux, BSD.]
:•&amp;nbsp;[http://www.frozentech.com/content/livecd.php The LiveCD List]

== Debian ==

=== GNU/Linux, distributions Debian (en anglais) ===
:•&amp;nbsp;[http://www.debian.org/ Debian]
:•&amp;nbsp;[http://wiki.debian.org/ Debian Wiki]
:•&amp;nbsp;[http://www.debian-administration.org/ Debian GNU-Linux System Administration Resources]
:•&amp;nbsp;[http://www.debian.org/doc/ Debian Documentation]
:•&amp;nbsp;[http://www.debian.org/doc/user-manuals Debian Users Manuals]
:•&amp;nbsp;[http://www.debian.org/doc/manuals/debian-faq/index.en.html The Debian GNU/Linux FAQ]

:•&amp;nbsp;[http://www.togaware.com/linux/survivor/ Debian GNU/Linux Desktop Survival Guide]
:•&amp;nbsp;[http://qref.sourceforge.net/ Guide de référence Debian]
:•&amp;nbsp;[http://www.debian.org/distrib/packages#search_packages Rechercher un paquet Debian]

=== GNU/Linux, distributions Debian (en français) ===
:•&amp;nbsp;[http://www.debian.org/index.fr.html Debian Le système d'exploitation universel]
:•&amp;nbsp;[http://forum.debian-fr.org/ &quot;LE&quot; &quot;forum.debian-fr.org&quot;]
:•&amp;nbsp;[http://debianworld.org/ Debianworld.org encore un site sur Debian !]
:•&amp;nbsp;[http://planet-fr.debian.net/ Planet Debian-FR]
:•&amp;nbsp;[http://www.debian.org/doc/manuals/debian-faq/index.fr.html La FAQ Debian GNU/Linux]
:•&amp;nbsp;[http://www.michauko.org/docs/debian_testing/index.html Dossier d'installation Debian testing]
:•&amp;nbsp;[http://formation-debian.via.ecp.fr/ Formation Debian GNU/Linux]

=== GNU/Linux, distributions Debian : Howto Nvidia ===
:•&amp;nbsp;[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.html Simple instructions on how to install nVidia drivers for X11 on Debian]
:•&amp;nbsp;[http://www.linux-wizard.net/howto.php?section=3&amp;key=nvidia#agp Debian - HowTo - Nvidia]

=== GNU/Linux, distributions Debian : Howto Matériel ===
:•&amp;nbsp;[http://kmuto.jp/debian/hcl/ Vérifiez la compatibilité de votre matériel]
:•&amp;nbsp;[http://www.ibiblio.org/pub/linux/docs/HOWTO/translations/fr/html-1page/Webcam-HOWTO.html Guide pratique des webcams]
:•&amp;nbsp;[http://mxhaard.free.fr/download.html Pilotes Webcam]
:•&amp;nbsp;[http://www.linux-usb.org/USB-guide/book1.html Usb sous Linux]
:•&amp;nbsp;[http://fr.tldp.org/HOWTO/lecture/Hardware-HOWTO.html liste de l'ensemble du matériel réputé compatible ou non avec Linux]
:•&amp;nbsp;[http://fasterdata.es.net/TCP-tuning//linux.html Linux TCP Tuning]

== Autres Distributions Linux ==

=== GNU/Linux - Knoppix===
:•&amp;nbsp;[http://knoppix.fr/ une distribution GNU/Linux basée sur Debian]
:•&amp;nbsp;[http://www.knoppix.net/ Knoppix is a Live Linux CD / Live DVD based on Debian GNU/Linux]

=== GNU/Linux - Aptosid ===
:•&amp;nbsp;[http://manual.aptosid.com/fr/welcome-fr.htm Manuel de Aptosid en français]
:•&amp;nbsp;[http://www.aptosid.com/ Site de Aptosid - What is Aptosid ? - Debian Hot &amp; Spicy!]

=== GNU/Linux - Ubuntu (en anglais) ===
:•&amp;nbsp;[http://www.ubuntulinux.org/ Ubuntu]
:•&amp;nbsp;[http://www.ubuntuforums.org/ Ubuntu Official Community &amp; Forums]
:•&amp;nbsp;[http://www.ubuntuguide.org/ Unofficial Ubuntu Starter Guide]
:•&amp;nbsp;[http://packages.ubuntu.com/ Ubuntu packages]

=== GNU/Linux - Ubuntu (en français) ===
:•&amp;nbsp;[http://www.ubuntu-fr.org/ Ubuntu-fr.org]
:•&amp;nbsp;[http://forum.ubuntu-fr.org/ Ubuntu-fr.org Forum]
:Ce site n'est plus maintenu depuis Ubuntu 7.10... •&amp;nbsp;[http://yekubuntu.free.fr/index.php yeK-Ubuntu]
 
=== GNU/Linux - Arch ===
:•&amp;nbsp;[http://www.archlinux.org/ Arch Linux [EN]

=== GNU/Linux - Mandriva ===
:•&amp;nbsp;[http://www.mandrivalinux.com/en-us/ Mandriva Linux]
:•&amp;nbsp;[http://distrowatch.com/table.php?distribution=mandrake DistroWatch.com: Mandriva Linux]
:•&amp;nbsp;[http://mandrivausers.org/ MandrakeUsers]
:•&amp;nbsp;[http://rpm.pbone.net/ RPM pbone.net]
 
=== GNU/Linux - OpenSUSE ===
:•&amp;nbsp;[http://www.opensuse.org/ OpenSUSE]

=== GNU/Linux - Utilitaires ===
:•&amp;nbsp;[http://www.supergrubdisk.org/ Super Grub Disk. PC Boot specialised Disk.]
:•&amp;nbsp;[http://trinityhome.org/ Trinity Rescue Kit or TRK is a free live Linux distribution]
:•&amp;nbsp;[http://www.sysresccd.org/ SystemRescueCd is a Linux system rescue disk]

== GNU/Linux, Dépôts ==
=== Debian/Snapshots ===

[http://snapshot.debian.org/ snapshot.debian.org]

Le dépôt &quot;snapshot&quot; permet l'accès aux anciens paquets en fonction des dates et des numéros de version. Il se compose de tous les paquets Debian passés et actuels.

=== GNU/Linux, Dépôts (logiciels) ===
:•&amp;nbsp;[http://apt-get.org/ Unofficial APT repositories]
:•&amp;nbsp;[http://sourceforge.net/ SourceForge.net]
:•&amp;nbsp;[http://freshmeat.net/ freshmeat.net: Welcome to freshmeat.net]
:•&amp;nbsp;[http://linuxappfinder.com/ Linux App Finder &quot;catalogue de programmes GNU/Linux&quot;]
:•&amp;nbsp;[http://www.gnu.org/software/ GNU - Free Software Foundation (FSF)]
:•&amp;nbsp;[http://www.framasoft.net/ Framasoft - Logiciels Libres]
:•&amp;nbsp;[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]

=== GNU/Linux, Dépôts (logiciels équivalences) ===
:[http://wiki.linuxquestions.org/wiki/Linux_software_equivalent_to_Windows_software Linux software equivalent to Windows software - LinuxQuestions.org Wiki]
:[http://www.linuxrsp.ru/win-lin-soft/table-eng.html The table of equivalents / replacements / analogs of Windows software in Linux. ]

=== GNU/Linux, Dépôts (Jeux) ===
:•&amp;nbsp;[http://www.icculus.org/lgfaq/gamelist.php Linux Gamers Game List]
:•&amp;nbsp;[http://forum.hardware.fr/hardwarefr/JeuxVideo/Topic-Unik-Jeux-Linux-Quake-IV-Binaire-dispo-sujet-90039-1.htm#t0 Jeux Linux ]

== GNU/Linux, Howtos et Tutos ==

=== GNU/Linux, Howtos et trucs ===
:•&amp;nbsp;[http://www.linux-tips.net/ Linux Minis HowTo]
:•&amp;nbsp;[http://www.brunolinux.com/ Tips for Linux Explorers]
:•&amp;nbsp;[http://forum.zebulon.fr/index.php?showtopic=17977 Zebulon.fr - Quelques liens pour débuter sous linux]
:•&amp;nbsp;[http://beronono.com/wiki-debian/index.php?title=Accueil Le Wiki de forum.debian-fr.org]
:•&amp;nbsp;[http://tldp.org/ The Linux Documentation Project] et •&amp;nbsp;[http://tldp.org/HOWTO/Francophones-HOWTO.html Le Francophones-HOWTO : Linux &amp; la langue française]
:•&amp;nbsp;[http://jp.barralis.com/linux-man/ Projet de traduction des &quot;man&quot; en français]
:•&amp;nbsp;[http://debian-facile.org/wiki/ Le Wiki de Debian-facile]

=== GNU/Linux, Howtos et trucs sur le bash ===
:•&amp;nbsp;[http://www.ukuug.org/events/linux2003/papers/bash_tips/ Bash Tips &amp; Tricks]
:•&amp;nbsp;[http://www.cavecanen.org/linux/bashtips.php Pedro's web stuff]
 
=== GNU/Linux, Tutos, Guide de l'utilisateur ===
:•&amp;nbsp;[http://www.delafond.org/survielinux/ Guide de Survie du Débutant sous Linux]
:Ce document date de novembre 2000... •&amp;nbsp;[http://www.comptechdoc.org/os/linux/usersguide/ Linux User's Guide (anglais)]
:•&amp;nbsp;[http://www.linux-tutorial.info/ Linux Knowledge Base and Tutorial]
 
=== GNU/Linux, Programmation ===
:•&amp;nbsp;[http://linuxreviews.org/beginner/abs-guide/ Advanced Bash-Scripting Guide]
:•&amp;nbsp;[http://www.freeos.com/guides/lsst/ Linux Shell Scripting Tutorial - A Beginner s handbook]
:•&amp;nbsp;[http://www.tuxfiles.org/linuxhelp/cli.html tuXfiles - Linux command line tutorials for newbies]
 
=== GNU/Linux, Applications : Gnome ===
:•&amp;nbsp;[http://www.gnome.org/ GNOME: The Free Software Desktop Project]
:•&amp;nbsp;[http://www.gnomefr.org/ GNOME-FR (Pays Francophones)]
:•&amp;nbsp;[http://www.gnu.org/software/ Software - GNU Project - Free Software Foundation (FSF)]
:•&amp;nbsp;[http://www.gnomedesktop.org/ FootNotes | GNOME Desktop News]
:•&amp;nbsp;[http://www.gnomejournal.org/ The GNOME Journal]
:•&amp;nbsp;[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]
:•&amp;nbsp;[http://art.gnome.org/ GNOME Art - Artwork &amp; Themes]
:•&amp;nbsp;[http://www.gnome-look.org/ GNOME-Look.org]

=== GNU/Linux, Applications : KDE ===
:•&amp;nbsp;[http://fr.kde.org/ KDE est une équipe technologique internationale qui crée des logiciels libres]
:•&amp;nbsp;[http://dot.kde.org/ Nouvelles de KDE (anglais)]

== Free Software et Open Source ==

=== GNU/Linux, Free Software et Open Source ===
:•&amp;nbsp;[http://www.framasoft.net/ Framasoft - Réseau de sites web collaboratifs, vise à diffuser le logiciel libre] / [http://www.framasoft.net/article3338.html Framasoft : Qu’est-ce qu’un logiciel libre ?]
:•&amp;nbsp;[http://en.wikipedia.org/wiki/Portal:Free_software Wikipedia the free encyclopedia : Portal:Free software (anglais)]
:•&amp;nbsp;[http://www.fsfeurope.org/index.fr.html FSF Europe - Free Software Foundation Europe (Multilingue)]
:•&amp;nbsp;[http://solutions.journaldunet.com/dossiers/libre/sommaire.shtml Le Journal du Net : Dossier Logiciels libres/Open Source]
:•&amp;nbsp;[http://www.logiciellibre.net/ LogicielLibre.Net - Premiere ressource francophone sur l'economie des logiciels libres / Open Source]
:•&amp;nbsp;[http://www.progilibre.com/ Progilibre.com | La communauté des applications professionnelles en open source]
:•&amp;nbsp;[http://www.aful.org/ AFUL (Association Francophone des Utilisateurs de Logiciels Libres)]
:•&amp;nbsp;[http://www.generation-libre.com/ Generation Libre - Site d'informations et d'entraide sur les logiciels libres ]
:•&amp;nbsp;[http://lelogiciellibre.net/ Le Logiciel Libre : découvrir, télécharger des logiciels libres]
:•&amp;nbsp;[http://www.jesuislibre.org/ Je Suis Libre (Ce site permet de faire sortir de l'ombre tous les développeurs qui conçoivent des projets dans le monde du libre)]
:•&amp;nbsp;[http://www.openstickers.com/ Open source &quot;goodies&quot; (anglais)]

=== GNU/Linux, Open Source : Formats, Brevets, DRM et Cie ===
:•&amp;nbsp;[http://formats-ouverts.org/ Pour les formats ouverts !]
:•&amp;nbsp;[http://stopdrm.info/ StopDRM!]

=== GNU/Linux, Free Software et Open Source : Définitions ===
:•&amp;nbsp;[http://www.gnu.org/philosophy/free-sw.fr.html Le projet GNU : Définition d'un logiciel libre]
:•&amp;nbsp;[http://www.fsfeurope.org/documents/freesoftware.fr.html FSF Europe - Qu'est-ce que le Logiciel Libre ?]
:•&amp;nbsp;[http://fr.wikipedia.org/wiki/Logiciel_libre Logiciel libre - Wikipédia]
:•&amp;nbsp;[http://www.livretdulibre.org/ Livret du Libre (Le Livret du Libre est une introduction au Libre)]
:•&amp;nbsp;[http://solutions.journaldunet.com/0605/060517-qr-terminologie-open-source.shtml La terminologie de l'Open Source en 7 questions]

=== A enlever ===
:•&amp;nbsp;[http://archlinuxfr.org/ Arch Linux [FR]      :  le lien pointe sur une page sans rapport avec arch linux, et indique &quot;Le nom de domaine archlinuxfr.org est mis en vente par son propriétaire. &quot;


--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 06:28 (UTC)

[[Catégorie:Documentation externe]]</text>
      <sha1>dg1qzxle5euvog46qoe7os2809rj1dt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2601</id>
      <parentid>2600</parentid>
      <timestamp>2010-12-28T10:23:22Z</timestamp>
      <contributor>
        <username>Tophe</username>
        <id>26</id>
      </contributor>
      <text xml:space="preserve" bytes="12171">{{Ébauche|les liens GNU/Linux, la Free Software et l'Open Source}}

Sur cette page sont centralisés tous les liens concernant GNU/Linux, la Free Software et l'Open Source !

== Divers ==

=== Recherches ciblée GNU/Linux sur Google : ===
:•&amp;nbsp;[http://www.google.fr/linux Recherche Google ciblée GNU/Linux]
:•&amp;nbsp;[http://www.google.com/cse/home?cx=003036737311975801323:yeiooiloi7c Recherche sur forum.debian-fr.org] ou •&amp;nbsp;[http://www.google.com/cse/home?cx=003880180303252368328:fw-yrta3-zw Recherche sur forum.debian-fr.org]
:•&amp;nbsp;[http://www.google.com/cse/home?cx=015801379623395497354:gw8g39yyvum&amp;hl=fr Recherche ciblée Debian]
:•&amp;nbsp;[http://www.google.fr/cse/home?cx=009677488958975547791:vzjkzembgbc Recherche Debian &amp; Ubuntu]

=== GNU/Linux, généralités : ===
:•&amp;nbsp;[http://www.trustonme.net/ Trustonme - Site d'entraide orienté Linux et logiciels libres]
:•&amp;nbsp;[http://lea-linux.org/ Léa-Linux - Site d’aide collaboratif pour le système d’exploitation GNU/Linux]
:Ce site ne semble plus mis à jour depuis longtemps... •&amp;nbsp;[http://www.linuxfrench.net/ LinuxFrench.Net]
:•&amp;nbsp;[http://linuxreviews.org/ Linux Reviews (Nouvelles, tutos, Howto) - Site en anglais]
:•&amp;nbsp;[http://www.quebecos.com/ Quebecos.com (Des nouvelles fraîches, des tutos, un howto, un wiki, un forum...) - Site francophone]

=== GNU/Linux, distributions : ===
:•&amp;nbsp;[http://distrowatch.com/ DistroWatch.com: Put the fun back into computing. Use Linux, BSD.]
:•&amp;nbsp;[http://www.frozentech.com/content/livecd.php The LiveCD List]

== Debian ==

=== GNU/Linux, distributions Debian (en anglais) ===
:•&amp;nbsp;[http://www.debian.org/ Debian]
:•&amp;nbsp;[http://wiki.debian.org/ Debian Wiki]
:•&amp;nbsp;[http://www.debian-administration.org/ Debian GNU-Linux System Administration Resources]
:•&amp;nbsp;[http://www.debian.org/doc/ Debian Documentation]
:•&amp;nbsp;[http://www.debian.org/doc/user-manuals Debian Users Manuals]
:•&amp;nbsp;[http://www.debian.org/doc/manuals/debian-faq/index.en.html The Debian GNU/Linux FAQ]

:•&amp;nbsp;[http://www.togaware.com/linux/survivor/ Debian GNU/Linux Desktop Survival Guide]
:•&amp;nbsp;[http://qref.sourceforge.net/ Guide de référence Debian]
:•&amp;nbsp;[http://www.debian.org/distrib/packages#search_packages Rechercher un paquet Debian]

=== GNU/Linux, distributions Debian (en français) ===
:•&amp;nbsp;[http://www.debian.org/index.fr.html Debian Le système d'exploitation universel]
:•&amp;nbsp;[http://forum.debian-fr.org/ &quot;LE&quot; &quot;forum.debian-fr.org&quot;]
:•&amp;nbsp;[http://debianworld.org/ Debianworld.org encore un site sur Debian !]
:•&amp;nbsp;[http://planet-fr.debian.net/ Planet Debian-FR]
:•&amp;nbsp;[http://www.debian.org/doc/manuals/debian-faq/index.fr.html La FAQ Debian GNU/Linux]
:•&amp;nbsp;[http://www.michauko.org/docs/debian_testing/index.html Dossier d'installation Debian testing]
:•&amp;nbsp;[http://formation-debian.via.ecp.fr/ Formation Debian GNU/Linux]

=== GNU/Linux, distributions Debian : Howto Nvidia ===
:•&amp;nbsp;[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.html Simple instructions on how to install nVidia drivers for X11 on Debian]
:•&amp;nbsp;[http://www.linux-wizard.net/howto.php?section=3&amp;key=nvidia#agp Debian - HowTo - Nvidia]

=== GNU/Linux, distributions Debian : Howto Matériel ===
:•&amp;nbsp;[http://kmuto.jp/debian/hcl/ Vérifiez la compatibilité de votre matériel]
:•&amp;nbsp;[http://www.ibiblio.org/pub/linux/docs/HOWTO/translations/fr/html-1page/Webcam-HOWTO.html Guide pratique des webcams]
:•&amp;nbsp;[http://mxhaard.free.fr/download.html Pilotes Webcam]
:•&amp;nbsp;[http://www.linux-usb.org/USB-guide/book1.html Usb sous Linux]
:•&amp;nbsp;[http://fr.tldp.org/HOWTO/lecture/Hardware-HOWTO.html liste de l'ensemble du matériel réputé compatible ou non avec Linux]
:•&amp;nbsp;[http://fasterdata.es.net/TCP-tuning//linux.html Linux TCP Tuning]

== Autres Distributions Linux ==

=== GNU/Linux - Knoppix===
:•&amp;nbsp;[http://knoppix.fr/ une distribution GNU/Linux basée sur Debian]
:•&amp;nbsp;[http://www.knoppix.net/ Knoppix is a Live Linux CD / Live DVD based on Debian GNU/Linux]

=== GNU/Linux - Aptosid ===
:•&amp;nbsp;[http://manual.aptosid.com/fr/welcome-fr.htm Manuel de Aptosid en français]
:•&amp;nbsp;[http://www.aptosid.com/ Site de Aptosid - What is Aptosid ? - Debian Hot &amp; Spicy!]
:•&amp;nbsp;[http://www.aptosid-fr.org/forum/ Forum d'aide Aptosid en français]

=== GNU/Linux - Ubuntu (en anglais) ===
:•&amp;nbsp;[http://www.ubuntulinux.org/ Ubuntu]
:•&amp;nbsp;[http://www.ubuntuforums.org/ Ubuntu Official Community &amp; Forums]
:•&amp;nbsp;[http://www.ubuntuguide.org/ Unofficial Ubuntu Starter Guide]
:•&amp;nbsp;[http://packages.ubuntu.com/ Ubuntu packages]

=== GNU/Linux - Ubuntu (en français) ===
:•&amp;nbsp;[http://www.ubuntu-fr.org/ Ubuntu-fr.org]
:•&amp;nbsp;[http://forum.ubuntu-fr.org/ Ubuntu-fr.org Forum]
:Ce site n'est plus maintenu depuis Ubuntu 7.10... •&amp;nbsp;[http://yekubuntu.free.fr/index.php yeK-Ubuntu]
 
=== GNU/Linux - Arch ===
:•&amp;nbsp;[http://www.archlinux.org/ Arch Linux [EN]

=== GNU/Linux - Mandriva ===
:•&amp;nbsp;[http://www.mandrivalinux.com/en-us/ Mandriva Linux]
:•&amp;nbsp;[http://distrowatch.com/table.php?distribution=mandrake DistroWatch.com: Mandriva Linux]
:•&amp;nbsp;[http://mandrivausers.org/ MandrakeUsers]
:•&amp;nbsp;[http://rpm.pbone.net/ RPM pbone.net]
 
=== GNU/Linux - OpenSUSE ===
:•&amp;nbsp;[http://www.opensuse.org/ OpenSUSE]

=== GNU/Linux - Utilitaires ===
:•&amp;nbsp;[http://www.supergrubdisk.org/ Super Grub Disk. PC Boot specialised Disk.]
:•&amp;nbsp;[http://trinityhome.org/ Trinity Rescue Kit or TRK is a free live Linux distribution]
:•&amp;nbsp;[http://www.sysresccd.org/ SystemRescueCd is a Linux system rescue disk]

== GNU/Linux, Dépôts ==
=== Debian/Snapshots ===

[http://snapshot.debian.org/ snapshot.debian.org]

Le dépôt &quot;snapshot&quot; permet l'accès aux anciens paquets en fonction des dates et des numéros de version. Il se compose de tous les paquets Debian passés et actuels.

=== GNU/Linux, Dépôts (logiciels) ===
:•&amp;nbsp;[http://apt-get.org/ Unofficial APT repositories]
:•&amp;nbsp;[http://sourceforge.net/ SourceForge.net]
:•&amp;nbsp;[http://freshmeat.net/ freshmeat.net: Welcome to freshmeat.net]
:•&amp;nbsp;[http://linuxappfinder.com/ Linux App Finder &quot;catalogue de programmes GNU/Linux&quot;]
:•&amp;nbsp;[http://www.gnu.org/software/ GNU - Free Software Foundation (FSF)]
:•&amp;nbsp;[http://www.framasoft.net/ Framasoft - Logiciels Libres]
:•&amp;nbsp;[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]

=== GNU/Linux, Dépôts (logiciels équivalences) ===
:[http://wiki.linuxquestions.org/wiki/Linux_software_equivalent_to_Windows_software Linux software equivalent to Windows software - LinuxQuestions.org Wiki]
:[http://www.linuxrsp.ru/win-lin-soft/table-eng.html The table of equivalents / replacements / analogs of Windows software in Linux. ]

=== GNU/Linux, Dépôts (Jeux) ===
:•&amp;nbsp;[http://www.icculus.org/lgfaq/gamelist.php Linux Gamers Game List]
:•&amp;nbsp;[http://forum.hardware.fr/hardwarefr/JeuxVideo/Topic-Unik-Jeux-Linux-Quake-IV-Binaire-dispo-sujet-90039-1.htm#t0 Jeux Linux ]

== GNU/Linux, Howtos et Tutos ==

=== GNU/Linux, Howtos et trucs ===
:•&amp;nbsp;[http://www.linux-tips.net/ Linux Minis HowTo]
:•&amp;nbsp;[http://www.brunolinux.com/ Tips for Linux Explorers]
:•&amp;nbsp;[http://forum.zebulon.fr/index.php?showtopic=17977 Zebulon.fr - Quelques liens pour débuter sous linux]
:•&amp;nbsp;[http://beronono.com/wiki-debian/index.php?title=Accueil Le Wiki de forum.debian-fr.org]
:•&amp;nbsp;[http://tldp.org/ The Linux Documentation Project] et •&amp;nbsp;[http://tldp.org/HOWTO/Francophones-HOWTO.html Le Francophones-HOWTO : Linux &amp; la langue française]
:•&amp;nbsp;[http://jp.barralis.com/linux-man/ Projet de traduction des &quot;man&quot; en français]
:•&amp;nbsp;[http://debian-facile.org/wiki/ Le Wiki de Debian-facile]

=== GNU/Linux, Howtos et trucs sur le bash ===
:•&amp;nbsp;[http://www.ukuug.org/events/linux2003/papers/bash_tips/ Bash Tips &amp; Tricks]
:•&amp;nbsp;[http://www.cavecanen.org/linux/bashtips.php Pedro's web stuff]
 
=== GNU/Linux, Tutos, Guide de l'utilisateur ===
:•&amp;nbsp;[http://www.delafond.org/survielinux/ Guide de Survie du Débutant sous Linux]
:Ce document date de novembre 2000... •&amp;nbsp;[http://www.comptechdoc.org/os/linux/usersguide/ Linux User's Guide (anglais)]
:•&amp;nbsp;[http://www.linux-tutorial.info/ Linux Knowledge Base and Tutorial]
 
=== GNU/Linux, Programmation ===
:•&amp;nbsp;[http://linuxreviews.org/beginner/abs-guide/ Advanced Bash-Scripting Guide]
:•&amp;nbsp;[http://www.freeos.com/guides/lsst/ Linux Shell Scripting Tutorial - A Beginner s handbook]
:•&amp;nbsp;[http://www.tuxfiles.org/linuxhelp/cli.html tuXfiles - Linux command line tutorials for newbies]
 
=== GNU/Linux, Applications : Gnome ===
:•&amp;nbsp;[http://www.gnome.org/ GNOME: The Free Software Desktop Project]
:•&amp;nbsp;[http://www.gnomefr.org/ GNOME-FR (Pays Francophones)]
:•&amp;nbsp;[http://www.gnu.org/software/ Software - GNU Project - Free Software Foundation (FSF)]
:•&amp;nbsp;[http://www.gnomedesktop.org/ FootNotes | GNOME Desktop News]
:•&amp;nbsp;[http://www.gnomejournal.org/ The GNOME Journal]
:•&amp;nbsp;[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]
:•&amp;nbsp;[http://art.gnome.org/ GNOME Art - Artwork &amp; Themes]
:•&amp;nbsp;[http://www.gnome-look.org/ GNOME-Look.org]

=== GNU/Linux, Applications : KDE ===
:•&amp;nbsp;[http://fr.kde.org/ KDE est une équipe technologique internationale qui crée des logiciels libres]
:•&amp;nbsp;[http://dot.kde.org/ Nouvelles de KDE (anglais)]

== Free Software et Open Source ==

=== GNU/Linux, Free Software et Open Source ===
:•&amp;nbsp;[http://www.framasoft.net/ Framasoft - Réseau de sites web collaboratifs, vise à diffuser le logiciel libre] / [http://www.framasoft.net/article3338.html Framasoft : Qu’est-ce qu’un logiciel libre ?]
:•&amp;nbsp;[http://en.wikipedia.org/wiki/Portal:Free_software Wikipedia the free encyclopedia : Portal:Free software (anglais)]
:•&amp;nbsp;[http://www.fsfeurope.org/index.fr.html FSF Europe - Free Software Foundation Europe (Multilingue)]
:•&amp;nbsp;[http://solutions.journaldunet.com/dossiers/libre/sommaire.shtml Le Journal du Net : Dossier Logiciels libres/Open Source]
:•&amp;nbsp;[http://www.logiciellibre.net/ LogicielLibre.Net - Premiere ressource francophone sur l'economie des logiciels libres / Open Source]
:•&amp;nbsp;[http://www.progilibre.com/ Progilibre.com | La communauté des applications professionnelles en open source]
:•&amp;nbsp;[http://www.aful.org/ AFUL (Association Francophone des Utilisateurs de Logiciels Libres)]
:•&amp;nbsp;[http://www.generation-libre.com/ Generation Libre - Site d'informations et d'entraide sur les logiciels libres ]
:•&amp;nbsp;[http://lelogiciellibre.net/ Le Logiciel Libre : découvrir, télécharger des logiciels libres]
:•&amp;nbsp;[http://www.jesuislibre.org/ Je Suis Libre (Ce site permet de faire sortir de l'ombre tous les développeurs qui conçoivent des projets dans le monde du libre)]
:•&amp;nbsp;[http://www.openstickers.com/ Open source &quot;goodies&quot; (anglais)]

=== GNU/Linux, Open Source : Formats, Brevets, DRM et Cie ===
:•&amp;nbsp;[http://formats-ouverts.org/ Pour les formats ouverts !]
:•&amp;nbsp;[http://stopdrm.info/ StopDRM!]

=== GNU/Linux, Free Software et Open Source : Définitions ===
:•&amp;nbsp;[http://www.gnu.org/philosophy/free-sw.fr.html Le projet GNU : Définition d'un logiciel libre]
:•&amp;nbsp;[http://www.fsfeurope.org/documents/freesoftware.fr.html FSF Europe - Qu'est-ce que le Logiciel Libre ?]
:•&amp;nbsp;[http://fr.wikipedia.org/wiki/Logiciel_libre Logiciel libre - Wikipédia]
:•&amp;nbsp;[http://www.livretdulibre.org/ Livret du Libre (Le Livret du Libre est une introduction au Libre)]
:•&amp;nbsp;[http://solutions.journaldunet.com/0605/060517-qr-terminologie-open-source.shtml La terminologie de l'Open Source en 7 questions]

=== A enlever ===
:•&amp;nbsp;[http://archlinuxfr.org/ Arch Linux [FR]      :  le lien pointe sur une page sans rapport avec arch linux, et indique &quot;Le nom de domaine archlinuxfr.org est mis en vente par son propriétaire. &quot;


--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 06:28 (UTC)

[[Catégorie:Documentation externe]]</text>
      <sha1>t0zg2wzm0wqw64wjj4283u0wrq4eo76</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2603</id>
      <parentid>2601</parentid>
      <timestamp>2010-12-28T10:34:49Z</timestamp>
      <contributor>
        <username>Tophe</username>
        <id>26</id>
      </contributor>
      <text xml:space="preserve" bytes="12250">{{Ébauche|les liens GNU/Linux, la Free Software et l'Open Source}}

Sur cette page sont centralisés tous les liens concernant GNU/Linux, la Free Software et l'Open Source !

== Divers ==

=== Recherches ciblée GNU/Linux sur Google : ===
:•&amp;nbsp;[http://www.google.fr/linux Recherche Google ciblée GNU/Linux]
:•&amp;nbsp;[http://www.google.com/cse/home?cx=003036737311975801323:yeiooiloi7c Recherche sur forum.debian-fr.org] ou •&amp;nbsp;[http://www.google.com/cse/home?cx=003880180303252368328:fw-yrta3-zw Recherche sur forum.debian-fr.org]
:•&amp;nbsp;[http://www.google.com/cse/home?cx=015801379623395497354:gw8g39yyvum&amp;hl=fr Recherche ciblée Debian]
:•&amp;nbsp;[http://www.google.fr/cse/home?cx=009677488958975547791:vzjkzembgbc Recherche Debian &amp; Ubuntu]

=== GNU/Linux, généralités : ===
:•&amp;nbsp;[http://www.trustonme.net/ Trustonme - Site d'entraide orienté Linux et logiciels libres]
:•&amp;nbsp;[http://lea-linux.org/ Léa-Linux - Site d’aide collaboratif pour le système d’exploitation GNU/Linux]
:Ce site ne semble plus mis à jour depuis longtemps... •&amp;nbsp;[http://www.linuxfrench.net/ LinuxFrench.Net]
:•&amp;nbsp;[http://linuxreviews.org/ Linux Reviews (Nouvelles, tutos, Howto) - Site en anglais]
:•&amp;nbsp;[http://www.quebecos.com/ Quebecos.com (Des nouvelles fraîches, des tutos, un howto, un wiki, un forum...) - Site francophone]

=== GNU/Linux, distributions : ===
:•&amp;nbsp;[http://distrowatch.com/ DistroWatch.com: Put the fun back into computing. Use Linux, BSD.]
:•&amp;nbsp;[http://www.frozentech.com/content/livecd.php The LiveCD List]

== Debian ==

=== GNU/Linux, distributions Debian (en anglais) ===
:•&amp;nbsp;[http://www.debian.org/ Debian]
:•&amp;nbsp;[http://wiki.debian.org/ Debian Wiki]
:•&amp;nbsp;[http://www.debian-administration.org/ Debian GNU-Linux System Administration Resources]
:•&amp;nbsp;[http://www.debian.org/doc/ Debian Documentation]
:•&amp;nbsp;[http://www.debian.org/doc/user-manuals Debian Users Manuals]
:•&amp;nbsp;[http://www.debian.org/doc/manuals/debian-faq/index.en.html The Debian GNU/Linux FAQ]

:•&amp;nbsp;[http://www.togaware.com/linux/survivor/ Debian GNU/Linux Desktop Survival Guide]
:•&amp;nbsp;[http://qref.sourceforge.net/ Guide de référence Debian]
:•&amp;nbsp;[http://www.debian.org/distrib/packages#search_packages Rechercher un paquet Debian]

=== GNU/Linux, distributions Debian (en français) ===
:•&amp;nbsp;[http://www.debian.org/index.fr.html Debian Le système d'exploitation universel]
:•&amp;nbsp;[http://forum.debian-fr.org/ &quot;LE&quot; &quot;forum.debian-fr.org&quot;]
:•&amp;nbsp;[http://debianworld.org/ Debianworld.org encore un site sur Debian !]
:•&amp;nbsp;[http://planet-fr.debian.net/ Planet Debian-FR]
:•&amp;nbsp;[http://www.debian.org/doc/manuals/debian-faq/index.fr.html La FAQ Debian GNU/Linux]
:•&amp;nbsp;[http://www.michauko.org/docs/debian_testing/index.html Dossier d'installation Debian testing]
:•&amp;nbsp;[http://formation-debian.via.ecp.fr/ Formation Debian GNU/Linux]

=== GNU/Linux, distributions Debian : Howto Nvidia ===
:•&amp;nbsp;[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.html Simple instructions on how to install nVidia drivers for X11 on Debian]
:•&amp;nbsp;[http://www.linux-wizard.net/howto.php?section=3&amp;key=nvidia#agp Debian - HowTo - Nvidia]

=== GNU/Linux, distributions Debian : Howto Matériel ===
:•&amp;nbsp;[http://kmuto.jp/debian/hcl/ Vérifiez la compatibilité de votre matériel]
:•&amp;nbsp;[http://www.ibiblio.org/pub/linux/docs/HOWTO/translations/fr/html-1page/Webcam-HOWTO.html Guide pratique des webcams]
:•&amp;nbsp;[http://mxhaard.free.fr/download.html Pilotes Webcam]
:•&amp;nbsp;[http://www.linux-usb.org/USB-guide/book1.html Usb sous Linux]
:•&amp;nbsp;[http://fr.tldp.org/HOWTO/lecture/Hardware-HOWTO.html liste de l'ensemble du matériel réputé compatible ou non avec Linux]
:•&amp;nbsp;[http://fasterdata.es.net/TCP-tuning//linux.html Linux TCP Tuning]

== Autres Distributions Linux ==

=== GNU/Linux - Knoppix===
:•&amp;nbsp;[http://knoppix.fr/ une distribution GNU/Linux basée sur Debian]
:•&amp;nbsp;[http://www.knoppix.net/ Knoppix is a Live Linux CD / Live DVD based on Debian GNU/Linux]

=== GNU/Linux - Aptosid ===
:•&amp;nbsp;[http://manual.aptosid.com/fr/welcome-fr.htm Manuel de Aptosid en français]
:•&amp;nbsp;[http://www.aptosid.com/ Site de Aptosid - What is Aptosid ? - Debian Hot &amp; Spicy!]
:•&amp;nbsp;[http://www.aptosid-fr.org/forum/ Forum d'aide Aptosid en français]
:Aptosid remplace désormais Sidux - •&amp;nbsp;[http://www.sidux.com Sidux.com]

=== GNU/Linux - Ubuntu (en anglais) ===
:•&amp;nbsp;[http://www.ubuntulinux.org/ Ubuntu]
:•&amp;nbsp;[http://www.ubuntuforums.org/ Ubuntu Official Community &amp; Forums]
:•&amp;nbsp;[http://www.ubuntuguide.org/ Unofficial Ubuntu Starter Guide]
:•&amp;nbsp;[http://packages.ubuntu.com/ Ubuntu packages]

=== GNU/Linux - Ubuntu (en français) ===
:•&amp;nbsp;[http://www.ubuntu-fr.org/ Ubuntu-fr.org]
:•&amp;nbsp;[http://forum.ubuntu-fr.org/ Ubuntu-fr.org Forum]
:Ce site n'est plus maintenu depuis Ubuntu 7.10... •&amp;nbsp;[http://yekubuntu.free.fr/index.php yeK-Ubuntu]
 
=== GNU/Linux - Arch ===
:•&amp;nbsp;[http://www.archlinux.org/ Arch Linux [EN]

=== GNU/Linux - Mandriva ===
:•&amp;nbsp;[http://www.mandrivalinux.com/en-us/ Mandriva Linux]
:•&amp;nbsp;[http://distrowatch.com/table.php?distribution=mandrake DistroWatch.com: Mandriva Linux]
:•&amp;nbsp;[http://mandrivausers.org/ MandrakeUsers]
:•&amp;nbsp;[http://rpm.pbone.net/ RPM pbone.net]
 
=== GNU/Linux - OpenSUSE ===
:•&amp;nbsp;[http://www.opensuse.org/ OpenSUSE]

=== GNU/Linux - Utilitaires ===
:•&amp;nbsp;[http://www.supergrubdisk.org/ Super Grub Disk. PC Boot specialised Disk.]
:•&amp;nbsp;[http://trinityhome.org/ Trinity Rescue Kit or TRK is a free live Linux distribution]
:•&amp;nbsp;[http://www.sysresccd.org/ SystemRescueCd is a Linux system rescue disk]

== GNU/Linux, Dépôts ==
=== Debian/Snapshots ===

[http://snapshot.debian.org/ snapshot.debian.org]

Le dépôt &quot;snapshot&quot; permet l'accès aux anciens paquets en fonction des dates et des numéros de version. Il se compose de tous les paquets Debian passés et actuels.

=== GNU/Linux, Dépôts (logiciels) ===
:•&amp;nbsp;[http://apt-get.org/ Unofficial APT repositories]
:•&amp;nbsp;[http://sourceforge.net/ SourceForge.net]
:•&amp;nbsp;[http://freshmeat.net/ freshmeat.net: Welcome to freshmeat.net]
:•&amp;nbsp;[http://linuxappfinder.com/ Linux App Finder &quot;catalogue de programmes GNU/Linux&quot;]
:•&amp;nbsp;[http://www.gnu.org/software/ GNU - Free Software Foundation (FSF)]
:•&amp;nbsp;[http://www.framasoft.net/ Framasoft - Logiciels Libres]
:•&amp;nbsp;[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]

=== GNU/Linux, Dépôts (logiciels équivalences) ===
:[http://wiki.linuxquestions.org/wiki/Linux_software_equivalent_to_Windows_software Linux software equivalent to Windows software - LinuxQuestions.org Wiki]
:[http://www.linuxrsp.ru/win-lin-soft/table-eng.html The table of equivalents / replacements / analogs of Windows software in Linux. ]

=== GNU/Linux, Dépôts (Jeux) ===
:•&amp;nbsp;[http://www.icculus.org/lgfaq/gamelist.php Linux Gamers Game List]
:•&amp;nbsp;[http://forum.hardware.fr/hardwarefr/JeuxVideo/Topic-Unik-Jeux-Linux-Quake-IV-Binaire-dispo-sujet-90039-1.htm#t0 Jeux Linux ]

== GNU/Linux, Howtos et Tutos ==

=== GNU/Linux, Howtos et trucs ===
:•&amp;nbsp;[http://www.linux-tips.net/ Linux Minis HowTo]
:•&amp;nbsp;[http://www.brunolinux.com/ Tips for Linux Explorers]
:•&amp;nbsp;[http://forum.zebulon.fr/index.php?showtopic=17977 Zebulon.fr - Quelques liens pour débuter sous linux]
:•&amp;nbsp;[http://beronono.com/wiki-debian/index.php?title=Accueil Le Wiki de forum.debian-fr.org]
:•&amp;nbsp;[http://tldp.org/ The Linux Documentation Project] et •&amp;nbsp;[http://tldp.org/HOWTO/Francophones-HOWTO.html Le Francophones-HOWTO : Linux &amp; la langue française]
:•&amp;nbsp;[http://jp.barralis.com/linux-man/ Projet de traduction des &quot;man&quot; en français]
:•&amp;nbsp;[http://debian-facile.org/wiki/ Le Wiki de Debian-facile]

=== GNU/Linux, Howtos et trucs sur le bash ===
:•&amp;nbsp;[http://www.ukuug.org/events/linux2003/papers/bash_tips/ Bash Tips &amp; Tricks]
:•&amp;nbsp;[http://www.cavecanen.org/linux/bashtips.php Pedro's web stuff]
 
=== GNU/Linux, Tutos, Guide de l'utilisateur ===
:•&amp;nbsp;[http://www.delafond.org/survielinux/ Guide de Survie du Débutant sous Linux]
:Ce document date de novembre 2000... •&amp;nbsp;[http://www.comptechdoc.org/os/linux/usersguide/ Linux User's Guide (anglais)]
:•&amp;nbsp;[http://www.linux-tutorial.info/ Linux Knowledge Base and Tutorial]
 
=== GNU/Linux, Programmation ===
:•&amp;nbsp;[http://linuxreviews.org/beginner/abs-guide/ Advanced Bash-Scripting Guide]
:•&amp;nbsp;[http://www.freeos.com/guides/lsst/ Linux Shell Scripting Tutorial - A Beginner s handbook]
:•&amp;nbsp;[http://www.tuxfiles.org/linuxhelp/cli.html tuXfiles - Linux command line tutorials for newbies]
 
=== GNU/Linux, Applications : Gnome ===
:•&amp;nbsp;[http://www.gnome.org/ GNOME: The Free Software Desktop Project]
:•&amp;nbsp;[http://www.gnomefr.org/ GNOME-FR (Pays Francophones)]
:•&amp;nbsp;[http://www.gnu.org/software/ Software - GNU Project - Free Software Foundation (FSF)]
:•&amp;nbsp;[http://www.gnomedesktop.org/ FootNotes | GNOME Desktop News]
:•&amp;nbsp;[http://www.gnomejournal.org/ The GNOME Journal]
:•&amp;nbsp;[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]
:•&amp;nbsp;[http://art.gnome.org/ GNOME Art - Artwork &amp; Themes]
:•&amp;nbsp;[http://www.gnome-look.org/ GNOME-Look.org]

=== GNU/Linux, Applications : KDE ===
:•&amp;nbsp;[http://fr.kde.org/ KDE est une équipe technologique internationale qui crée des logiciels libres]
:•&amp;nbsp;[http://dot.kde.org/ Nouvelles de KDE (anglais)]

== Free Software et Open Source ==

=== GNU/Linux, Free Software et Open Source ===
:•&amp;nbsp;[http://www.framasoft.net/ Framasoft - Réseau de sites web collaboratifs, vise à diffuser le logiciel libre] / [http://www.framasoft.net/article3338.html Framasoft : Qu’est-ce qu’un logiciel libre ?]
:•&amp;nbsp;[http://en.wikipedia.org/wiki/Portal:Free_software Wikipedia the free encyclopedia : Portal:Free software (anglais)]
:•&amp;nbsp;[http://www.fsfeurope.org/index.fr.html FSF Europe - Free Software Foundation Europe (Multilingue)]
:•&amp;nbsp;[http://solutions.journaldunet.com/dossiers/libre/sommaire.shtml Le Journal du Net : Dossier Logiciels libres/Open Source]
:•&amp;nbsp;[http://www.logiciellibre.net/ LogicielLibre.Net - Premiere ressource francophone sur l'economie des logiciels libres / Open Source]
:•&amp;nbsp;[http://www.progilibre.com/ Progilibre.com | La communauté des applications professionnelles en open source]
:•&amp;nbsp;[http://www.aful.org/ AFUL (Association Francophone des Utilisateurs de Logiciels Libres)]
:•&amp;nbsp;[http://www.generation-libre.com/ Generation Libre - Site d'informations et d'entraide sur les logiciels libres ]
:•&amp;nbsp;[http://lelogiciellibre.net/ Le Logiciel Libre : découvrir, télécharger des logiciels libres]
:•&amp;nbsp;[http://www.jesuislibre.org/ Je Suis Libre (Ce site permet de faire sortir de l'ombre tous les développeurs qui conçoivent des projets dans le monde du libre)]
:•&amp;nbsp;[http://www.openstickers.com/ Open source &quot;goodies&quot; (anglais)]

=== GNU/Linux, Open Source : Formats, Brevets, DRM et Cie ===
:•&amp;nbsp;[http://formats-ouverts.org/ Pour les formats ouverts !]
:•&amp;nbsp;[http://stopdrm.info/ StopDRM!]

=== GNU/Linux, Free Software et Open Source : Définitions ===
:•&amp;nbsp;[http://www.gnu.org/philosophy/free-sw.fr.html Le projet GNU : Définition d'un logiciel libre]
:•&amp;nbsp;[http://www.fsfeurope.org/documents/freesoftware.fr.html FSF Europe - Qu'est-ce que le Logiciel Libre ?]
:•&amp;nbsp;[http://fr.wikipedia.org/wiki/Logiciel_libre Logiciel libre - Wikipédia]
:•&amp;nbsp;[http://www.livretdulibre.org/ Livret du Libre (Le Livret du Libre est une introduction au Libre)]
:•&amp;nbsp;[http://solutions.journaldunet.com/0605/060517-qr-terminologie-open-source.shtml La terminologie de l'Open Source en 7 questions]

=== A enlever ===
:•&amp;nbsp;[http://archlinuxfr.org/ Arch Linux [FR]      :  le lien pointe sur une page sans rapport avec arch linux, et indique &quot;Le nom de domaine archlinuxfr.org est mis en vente par son propriétaire. &quot;


--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 06:28 (UTC)

[[Catégorie:Documentation externe]]</text>
      <sha1>c0l05ch7xhbb7jecjgerwga2a25r9jz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5050</id>
      <parentid>2603</parentid>
      <timestamp>2013-03-08T06:02:35Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="12327">{{Ébauche|les liens GNU/Linux, la Free Software et l'Open Source}}

Sur cette page sont centralisés tous les liens concernant GNU/Linux, la Free Software et l'Open Source !

== Divers ==

=== Annuaires ===
:•&amp;nbsp;[http://www.annuaire-libre.org/ Annuaire Libre]

=== Recherches ciblée GNU/Linux sur Google : ===
:•&amp;nbsp;[http://www.google.fr/linux Recherche Google ciblée GNU/Linux]
:•&amp;nbsp;[http://www.google.com/cse/home?cx=003036737311975801323:yeiooiloi7c Recherche sur forum.debian-fr.org] ou •&amp;nbsp;[http://www.google.com/cse/home?cx=003880180303252368328:fw-yrta3-zw Recherche sur forum.debian-fr.org]
:•&amp;nbsp;[http://www.google.com/cse/home?cx=015801379623395497354:gw8g39yyvum&amp;hl=fr Recherche ciblée Debian]
:•&amp;nbsp;[http://www.google.fr/cse/home?cx=009677488958975547791:vzjkzembgbc Recherche Debian &amp; Ubuntu]

=== GNU/Linux, généralités : ===
:•&amp;nbsp;[http://www.trustonme.net/ Trustonme - Site d'entraide orienté Linux et logiciels libres]
:•&amp;nbsp;[http://lea-linux.org/ Léa-Linux - Site d’aide collaboratif pour le système d’exploitation GNU/Linux]
:Ce site ne semble plus mis à jour depuis longtemps... •&amp;nbsp;[http://www.linuxfrench.net/ LinuxFrench.Net]
:•&amp;nbsp;[http://linuxreviews.org/ Linux Reviews (Nouvelles, tutos, Howto) - Site en anglais]
:•&amp;nbsp;[http://www.quebecos.com/ Quebecos.com (Des nouvelles fraîches, des tutos, un howto, un wiki, un forum...) - Site francophone]

=== GNU/Linux, distributions : ===
:•&amp;nbsp;[http://distrowatch.com/ DistroWatch.com: Put the fun back into computing. Use Linux, BSD.]
:•&amp;nbsp;[http://www.frozentech.com/content/livecd.php The LiveCD List]

== Debian ==

=== GNU/Linux, distributions Debian (en anglais) ===
:•&amp;nbsp;[http://www.debian.org/ Debian]
:•&amp;nbsp;[http://wiki.debian.org/ Debian Wiki]
:•&amp;nbsp;[http://www.debian-administration.org/ Debian GNU-Linux System Administration Resources]
:•&amp;nbsp;[http://www.debian.org/doc/ Debian Documentation]
:•&amp;nbsp;[http://www.debian.org/doc/user-manuals Debian Users Manuals]
:•&amp;nbsp;[http://www.debian.org/doc/manuals/debian-faq/index.en.html The Debian GNU/Linux FAQ]

:•&amp;nbsp;[http://www.togaware.com/linux/survivor/ Debian GNU/Linux Desktop Survival Guide]
:•&amp;nbsp;[http://qref.sourceforge.net/ Guide de référence Debian]
:•&amp;nbsp;[http://www.debian.org/distrib/packages#search_packages Rechercher un paquet Debian]

=== GNU/Linux, distributions Debian (en français) ===
:•&amp;nbsp;[http://www.debian.org/index.fr.html Debian Le système d'exploitation universel]
:•&amp;nbsp;[http://forum.debian-fr.org/ &quot;LE&quot; &quot;forum.debian-fr.org&quot;]
:•&amp;nbsp;[http://debianworld.org/ Debianworld.org encore un site sur Debian !]
:•&amp;nbsp;[http://planet-fr.debian.net/ Planet Debian-FR]
:•&amp;nbsp;[http://www.debian.org/doc/manuals/debian-faq/index.fr.html La FAQ Debian GNU/Linux]
:•&amp;nbsp;[http://www.michauko.org/docs/debian_testing/index.html Dossier d'installation Debian testing]
:•&amp;nbsp;[http://formation-debian.via.ecp.fr/ Formation Debian GNU/Linux]

=== GNU/Linux, distributions Debian : Howto Nvidia ===
:•&amp;nbsp;[http://tinyplanet.ca/~lsorense/debian/debian-nvidia-dri-howto.html Simple instructions on how to install nVidia drivers for X11 on Debian]
:•&amp;nbsp;[http://www.linux-wizard.net/howto.php?section=3&amp;key=nvidia#agp Debian - HowTo - Nvidia]

=== GNU/Linux, distributions Debian : Howto Matériel ===
:•&amp;nbsp;[http://kmuto.jp/debian/hcl/ Vérifiez la compatibilité de votre matériel]
:•&amp;nbsp;[http://www.ibiblio.org/pub/linux/docs/HOWTO/translations/fr/html-1page/Webcam-HOWTO.html Guide pratique des webcams]
:•&amp;nbsp;[http://mxhaard.free.fr/download.html Pilotes Webcam]
:•&amp;nbsp;[http://www.linux-usb.org/USB-guide/book1.html Usb sous Linux]
:•&amp;nbsp;[http://fr.tldp.org/HOWTO/lecture/Hardware-HOWTO.html liste de l'ensemble du matériel réputé compatible ou non avec Linux]
:•&amp;nbsp;[http://fasterdata.es.net/TCP-tuning//linux.html Linux TCP Tuning]

== Autres Distributions Linux ==

=== GNU/Linux - Knoppix===
:•&amp;nbsp;[http://knoppix.fr/ une distribution GNU/Linux basée sur Debian]
:•&amp;nbsp;[http://www.knoppix.net/ Knoppix is a Live Linux CD / Live DVD based on Debian GNU/Linux]

=== GNU/Linux - Aptosid ===
:•&amp;nbsp;[http://manual.aptosid.com/fr/welcome-fr.htm Manuel de Aptosid en français]
:•&amp;nbsp;[http://www.aptosid.com/ Site de Aptosid - What is Aptosid ? - Debian Hot &amp; Spicy!]
:•&amp;nbsp;[http://www.aptosid-fr.org/forum/ Forum d'aide Aptosid en français]
:Aptosid remplace désormais Sidux - •&amp;nbsp;[http://www.sidux.com Sidux.com]

=== GNU/Linux - Ubuntu (en anglais) ===
:•&amp;nbsp;[http://www.ubuntulinux.org/ Ubuntu]
:•&amp;nbsp;[http://www.ubuntuforums.org/ Ubuntu Official Community &amp; Forums]
:•&amp;nbsp;[http://www.ubuntuguide.org/ Unofficial Ubuntu Starter Guide]
:•&amp;nbsp;[http://packages.ubuntu.com/ Ubuntu packages]

=== GNU/Linux - Ubuntu (en français) ===
:•&amp;nbsp;[http://www.ubuntu-fr.org/ Ubuntu-fr.org]
:•&amp;nbsp;[http://forum.ubuntu-fr.org/ Ubuntu-fr.org Forum]
:Ce site n'est plus maintenu depuis Ubuntu 7.10... •&amp;nbsp;[http://yekubuntu.free.fr/index.php yeK-Ubuntu]
 
=== GNU/Linux - Arch ===
:•&amp;nbsp;[http://www.archlinux.org/ Arch Linux [EN]

=== GNU/Linux - Mandriva ===
:•&amp;nbsp;[http://www.mandrivalinux.com/en-us/ Mandriva Linux]
:•&amp;nbsp;[http://distrowatch.com/table.php?distribution=mandrake DistroWatch.com: Mandriva Linux]
:•&amp;nbsp;[http://mandrivausers.org/ MandrakeUsers]
:•&amp;nbsp;[http://rpm.pbone.net/ RPM pbone.net]
 
=== GNU/Linux - OpenSUSE ===
:•&amp;nbsp;[http://www.opensuse.org/ OpenSUSE]

=== GNU/Linux - Utilitaires ===
:•&amp;nbsp;[http://www.supergrubdisk.org/ Super Grub Disk. PC Boot specialised Disk.]
:•&amp;nbsp;[http://trinityhome.org/ Trinity Rescue Kit or TRK is a free live Linux distribution]
:•&amp;nbsp;[http://www.sysresccd.org/ SystemRescueCd is a Linux system rescue disk]

== GNU/Linux, Dépôts ==
=== Debian/Snapshots ===

[http://snapshot.debian.org/ snapshot.debian.org]

Le dépôt &quot;snapshot&quot; permet l'accès aux anciens paquets en fonction des dates et des numéros de version. Il se compose de tous les paquets Debian passés et actuels.

=== GNU/Linux, Dépôts (logiciels) ===
:•&amp;nbsp;[http://apt-get.org/ Unofficial APT repositories]
:•&amp;nbsp;[http://sourceforge.net/ SourceForge.net]
:•&amp;nbsp;[http://freshmeat.net/ freshmeat.net: Welcome to freshmeat.net]
:•&amp;nbsp;[http://linuxappfinder.com/ Linux App Finder &quot;catalogue de programmes GNU/Linux&quot;]
:•&amp;nbsp;[http://www.gnu.org/software/ GNU - Free Software Foundation (FSF)]
:•&amp;nbsp;[http://www.framasoft.net/ Framasoft - Logiciels Libres]
:•&amp;nbsp;[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]

=== GNU/Linux, Dépôts (logiciels équivalences) ===
:[http://wiki.linuxquestions.org/wiki/Linux_software_equivalent_to_Windows_software Linux software equivalent to Windows software - LinuxQuestions.org Wiki]
:[http://www.linuxrsp.ru/win-lin-soft/table-eng.html The table of equivalents / replacements / analogs of Windows software in Linux. ]

=== GNU/Linux, Dépôts (Jeux) ===
:•&amp;nbsp;[http://www.icculus.org/lgfaq/gamelist.php Linux Gamers Game List]
:•&amp;nbsp;[http://forum.hardware.fr/hardwarefr/JeuxVideo/Topic-Unik-Jeux-Linux-Quake-IV-Binaire-dispo-sujet-90039-1.htm#t0 Jeux Linux ]

== GNU/Linux, Howtos et Tutos ==

=== GNU/Linux, Howtos et trucs ===
:•&amp;nbsp;[http://www.linux-tips.net/ Linux Minis HowTo]
:•&amp;nbsp;[http://www.brunolinux.com/ Tips for Linux Explorers]
:•&amp;nbsp;[http://forum.zebulon.fr/index.php?showtopic=17977 Zebulon.fr - Quelques liens pour débuter sous linux]
:•&amp;nbsp;[http://beronono.com/wiki-debian/index.php?title=Accueil Le Wiki de forum.debian-fr.org]
:•&amp;nbsp;[http://tldp.org/ The Linux Documentation Project] et •&amp;nbsp;[http://tldp.org/HOWTO/Francophones-HOWTO.html Le Francophones-HOWTO : Linux &amp; la langue française]
:•&amp;nbsp;[http://jp.barralis.com/linux-man/ Projet de traduction des &quot;man&quot; en français]
:•&amp;nbsp;[http://debian-facile.org/wiki/ Le Wiki de Debian-facile]

=== GNU/Linux, Howtos et trucs sur le bash ===
:•&amp;nbsp;[http://www.ukuug.org/events/linux2003/papers/bash_tips/ Bash Tips &amp; Tricks]
:•&amp;nbsp;[http://www.cavecanen.org/linux/bashtips.php Pedro's web stuff]
 
=== GNU/Linux, Tutos, Guide de l'utilisateur ===
:•&amp;nbsp;[http://www.delafond.org/survielinux/ Guide de Survie du Débutant sous Linux]
:Ce document date de novembre 2000... •&amp;nbsp;[http://www.comptechdoc.org/os/linux/usersguide/ Linux User's Guide (anglais)]
:•&amp;nbsp;[http://www.linux-tutorial.info/ Linux Knowledge Base and Tutorial]
 
=== GNU/Linux, Programmation ===
:•&amp;nbsp;[http://linuxreviews.org/beginner/abs-guide/ Advanced Bash-Scripting Guide]
:•&amp;nbsp;[http://www.freeos.com/guides/lsst/ Linux Shell Scripting Tutorial - A Beginner s handbook]
:•&amp;nbsp;[http://www.tuxfiles.org/linuxhelp/cli.html tuXfiles - Linux command line tutorials for newbies]
 
=== GNU/Linux, Applications : Gnome ===
:•&amp;nbsp;[http://www.gnome.org/ GNOME: The Free Software Desktop Project]
:•&amp;nbsp;[http://www.gnomefr.org/ GNOME-FR (Pays Francophones)]
:•&amp;nbsp;[http://www.gnu.org/software/ Software - GNU Project - Free Software Foundation (FSF)]
:•&amp;nbsp;[http://www.gnomedesktop.org/ FootNotes | GNOME Desktop News]
:•&amp;nbsp;[http://www.gnomejournal.org/ The GNOME Journal]
:•&amp;nbsp;[http://www.gnomefiles.org/ GnomeFiles - GNOME/GTK+ Software Repository]
:•&amp;nbsp;[http://art.gnome.org/ GNOME Art - Artwork &amp; Themes]
:•&amp;nbsp;[http://www.gnome-look.org/ GNOME-Look.org]

=== GNU/Linux, Applications : KDE ===
:•&amp;nbsp;[http://fr.kde.org/ KDE est une équipe technologique internationale qui crée des logiciels libres]
:•&amp;nbsp;[http://dot.kde.org/ Nouvelles de KDE (anglais)]

== Free Software et Open Source ==

=== GNU/Linux, Free Software et Open Source ===
:•&amp;nbsp;[http://www.framasoft.net/ Framasoft - Réseau de sites web collaboratifs, vise à diffuser le logiciel libre] / [http://www.framasoft.net/article3338.html Framasoft : Qu’est-ce qu’un logiciel libre ?]
:•&amp;nbsp;[http://en.wikipedia.org/wiki/Portal:Free_software Wikipedia the free encyclopedia : Portal:Free software (anglais)]
:•&amp;nbsp;[http://www.fsfeurope.org/index.fr.html FSF Europe - Free Software Foundation Europe (Multilingue)]
:•&amp;nbsp;[http://solutions.journaldunet.com/dossiers/libre/sommaire.shtml Le Journal du Net : Dossier Logiciels libres/Open Source]
:•&amp;nbsp;[http://www.logiciellibre.net/ LogicielLibre.Net - Premiere ressource francophone sur l'economie des logiciels libres / Open Source]
:•&amp;nbsp;[http://www.progilibre.com/ Progilibre.com | La communauté des applications professionnelles en open source]
:•&amp;nbsp;[http://www.aful.org/ AFUL (Association Francophone des Utilisateurs de Logiciels Libres)]
:•&amp;nbsp;[http://www.generation-libre.com/ Generation Libre - Site d'informations et d'entraide sur les logiciels libres ]
:•&amp;nbsp;[http://lelogiciellibre.net/ Le Logiciel Libre : découvrir, télécharger des logiciels libres]
:•&amp;nbsp;[http://www.jesuislibre.org/ Je Suis Libre (Ce site permet de faire sortir de l'ombre tous les développeurs qui conçoivent des projets dans le monde du libre)]
:•&amp;nbsp;[http://www.openstickers.com/ Open source &quot;goodies&quot; (anglais)]

=== GNU/Linux, Open Source : Formats, Brevets, DRM et Cie ===
:•&amp;nbsp;[http://formats-ouverts.org/ Pour les formats ouverts !]
:•&amp;nbsp;[http://stopdrm.info/ StopDRM!]

=== GNU/Linux, Free Software et Open Source : Définitions ===
:•&amp;nbsp;[http://www.gnu.org/philosophy/free-sw.fr.html Le projet GNU : Définition d'un logiciel libre]
:•&amp;nbsp;[http://www.fsfeurope.org/documents/freesoftware.fr.html FSF Europe - Qu'est-ce que le Logiciel Libre ?]
:•&amp;nbsp;[http://fr.wikipedia.org/wiki/Logiciel_libre Logiciel libre - Wikipédia]
:•&amp;nbsp;[http://www.livretdulibre.org/ Livret du Libre (Le Livret du Libre est une introduction au Libre)]
:•&amp;nbsp;[http://solutions.journaldunet.com/0605/060517-qr-terminologie-open-source.shtml La terminologie de l'Open Source en 7 questions]

=== A enlever ===
:•&amp;nbsp;[http://archlinuxfr.org/ Arch Linux [FR]      :  le lien pointe sur une page sans rapport avec arch linux, et indique &quot;Le nom de domaine archlinuxfr.org est mis en vente par son propriétaire. &quot;


--[[Utilisateur:Lol|Lol]] 29 mars 2010 à 06:28 (UTC)

[[Catégorie:Documentation externe]]</text>
      <sha1>somqw3maue9p6vqmsj7z7pklqsrj9hq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Liste de logiciels peer to peer</title>
    <ns>0</ns>
    <id>1049</id>
    <revision>
      <id>4409</id>
      <timestamp>2012-08-18T19:17:22Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>Page créée avec « = Liste =  Reprendre en partie ce qui est sur cette page: http://doc.ubuntu-fr.org/p2p  == Présents dans les dépots ==  * amule * rtorrent * nicotine * museekd * transmi... »</comment>
      <text xml:space="preserve" bytes="244">= Liste =

Reprendre en partie ce qui est sur cette page: http://doc.ubuntu-fr.org/p2p

== Présents dans les dépots ==

* amule
* rtorrent
* nicotine
* museekd
* transmission
* 

== Non présents dans les dépots ==

* i2p
* freenet
* tribler</text>
      <sha1>83bd2498wa1fvxzatz8hoe65h75n9id</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4410</id>
      <parentid>4409</parentid>
      <timestamp>2012-08-18T19:21:54Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Présents dans les dépots */</comment>
      <text xml:space="preserve" bytes="363">= Liste =

Reprendre en partie ce qui est sur cette page: http://doc.ubuntu-fr.org/p2p

== Présents dans les dépots ==

* amule
* rtorrent
* nicotine
* museekd
* transmission
* ktorrent
* bittorrent
* ctorrent
* deluge
* mldonkey
* qbittorrent


=== Outils associés ===
* mktorrent
* torrentflux

== Non présents dans les dépots ==

* i2p
* freenet
* tribler</text>
      <sha1>k41pc0agxe2sfh0hnrxuhnngcyqoibm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4411</id>
      <parentid>4410</parentid>
      <timestamp>2012-08-18T19:22:39Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Non présents dans les dépots */</comment>
      <text xml:space="preserve" bytes="419">= Liste =

Reprendre en partie ce qui est sur cette page: http://doc.ubuntu-fr.org/p2p

== Présents dans les dépots ==

* amule
* rtorrent
* nicotine
* museekd
* transmission
* ktorrent
* bittorrent
* ctorrent
* deluge
* mldonkey
* qbittorrent


=== Outils associés ===
* mktorrent
* torrentflux

== Non présents dans les dépots ==

* i2p
* freenet
* tribler

= Le P2P, c'est aussi ... =

* debtorrent et apt-p2p
*</text>
      <sha1>falurdbyfuafnoo02xcndgtf2nii5k9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4412</id>
      <parentid>4411</parentid>
      <timestamp>2012-08-18T19:24:55Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <text xml:space="preserve" bytes="486">= Liste =

Reprendre en partie ce qui est sur cette page: http://doc.ubuntu-fr.org/p2p

== Présents dans les dépots ==

=== BitTorrent ===
* bittorrent
* ctorrent
* deluge
* transmission
* ktorrent
* mldonkey
* qbittorrent
* rtorrent

=== eMule / Kademlia ===
* amule

=== Autres réseaux ===
* nicotine
* museekd

=== Outils associés ===
* mktorrent
* torrentflux

== Non présents dans les dépots ==
* i2p
* freenet
* tribler

= Le P2P, c'est aussi ... =
* debtorrent et apt-p2p
*</text>
      <sha1>jw160563xfjlykjvm9dlg8e3ol4y1vn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4413</id>
      <parentid>4412</parentid>
      <timestamp>2012-08-18T19:26:42Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Autres réseaux */</comment>
      <text xml:space="preserve" bytes="494">= Liste =

Reprendre en partie ce qui est sur cette page: http://doc.ubuntu-fr.org/p2p

== Présents dans les dépots ==

=== BitTorrent ===
* bittorrent
* ctorrent
* deluge
* transmission
* ktorrent
* mldonkey
* qbittorrent
* rtorrent

=== eMule / Kademlia ===
* amule

=== Autres réseaux ===
* nicotine
* museekd, museeq

=== Outils associés ===
* mktorrent
* torrentflux

== Non présents dans les dépots ==
* i2p
* freenet
* tribler

= Le P2P, c'est aussi ... =
* debtorrent et apt-p2p
*</text>
      <sha1>agwcsd8n7gp8gmf5vyhja71lrgc5xv0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4417</id>
      <parentid>4413</parentid>
      <timestamp>2012-08-18T19:54:05Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Non présents dans les dépots */</comment>
      <text xml:space="preserve" bytes="558">= Liste =

Reprendre en partie ce qui est sur cette page: http://doc.ubuntu-fr.org/p2p

== Présents dans les dépots ==

=== BitTorrent ===
* bittorrent
* ctorrent
* deluge
* transmission
* ktorrent
* mldonkey
* qbittorrent
* rtorrent

=== eMule / Kademlia ===
* amule

=== Autres réseaux ===
* nicotine
* museekd, museeq

=== Outils associés ===
* mktorrent
* torrentflux

== Non présents dans les dépots ==
* i2p
* iMule ( .deb ici: http://www.imule.i2p.tin0.de/download.php )
* freenet
* tribler

= Le P2P, c'est aussi ... =
* debtorrent et apt-p2p
*</text>
      <sha1>7b37alw70zc20ignpmpexab9sywaf47</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4418</id>
      <parentid>4417</parentid>
      <timestamp>2012-08-18T21:48:22Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Non présents dans les dépots */</comment>
      <text xml:space="preserve" bytes="670">= Liste =

Reprendre en partie ce qui est sur cette page: http://doc.ubuntu-fr.org/p2p

== Présents dans les dépots ==

=== BitTorrent ===
* bittorrent
* ctorrent
* deluge
* transmission
* ktorrent
* mldonkey
* qbittorrent
* rtorrent

=== eMule / Kademlia ===
* amule

=== Autres réseaux ===
* nicotine
* museekd, museeq

=== Outils associés ===
* mktorrent
* torrentflux

== Non présents dans les dépots ==
* i2p
* iMule, deb ici: http://www.imule.i2p.tin0.de/download.php
* freenet
* tribler
* calyspo (anciennement kommute), .deb uniquement en i386 ici: http://calypso.sourceforge.net/downloads.html#debian

= Le P2P, c'est aussi ... =
* debtorrent et apt-p2p
*</text>
      <sha1>pd6f3232lsfu2v81jsau9bzza615uyc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4419</id>
      <parentid>4418</parentid>
      <timestamp>2012-08-18T21:50:01Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Non présents dans les dépots */</comment>
      <text xml:space="preserve" bytes="767">= Liste =

Reprendre en partie ce qui est sur cette page: http://doc.ubuntu-fr.org/p2p

== Présents dans les dépots ==

=== BitTorrent ===
* bittorrent
* ctorrent
* deluge
* transmission
* ktorrent
* mldonkey
* qbittorrent
* rtorrent

=== eMule / Kademlia ===
* amule

=== Autres réseaux ===
* nicotine
* museekd, museeq

=== Outils associés ===
* mktorrent
* torrentflux

== Non présents dans les dépots ==
* i2p
* iMule, deb ici: http://www.imule.i2p.tin0.de/download.php
* stealthnet, nécessite .NET, archive linux dispo là: http://www.stealthnet.de/fr_download.php
* freenet
* tribler
* calyspo (anciennement kommute), .deb uniquement en i386 ici: http://calypso.sourceforge.net/downloads.html#debian

= Le P2P, c'est aussi ... =
* debtorrent et apt-p2p
*</text>
      <sha1>qzf0ixqw011rg4u7pjtut3r1u18taz0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4420</id>
      <parentid>4419</parentid>
      <timestamp>2012-08-18T21:56:56Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Non présents dans les dépots */</comment>
      <text xml:space="preserve" bytes="865">= Liste =

Reprendre en partie ce qui est sur cette page: http://doc.ubuntu-fr.org/p2p

== Présents dans les dépots ==

=== BitTorrent ===
* bittorrent
* ctorrent
* deluge
* transmission
* ktorrent
* mldonkey
* qbittorrent
* rtorrent

=== eMule / Kademlia ===
* amule

=== Autres réseaux ===
* nicotine
* museekd, museeq

=== Outils associés ===
* mktorrent
* torrentflux

== Non présents dans les dépots ==
* i2p, deb ici: http://www.i2p2.de/debian.html
* iMule, deb ici: http://www.imule.i2p.tin0.de/download.php
* stealthnet, nécessite .NET, archive linux dispo là: http://www.stealthnet.de/fr_download.php
* freenet, nécessite JAVA, dispo ici: https://freenetproject.org/
* calyspo (anciennement kommute), .deb uniquement en i386 ici: http://calypso.sourceforge.net/downloads.html#debian
* tribler

= Le P2P, c'est aussi ... =
* debtorrent et apt-p2p
*</text>
      <sha1>35tizrri2cf55o74fh3h8yean5c7hic</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4421</id>
      <parentid>4420</parentid>
      <timestamp>2012-08-18T22:07:15Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Non présents dans les dépots */</comment>
      <text xml:space="preserve" bytes="953">= Liste =

Reprendre en partie ce qui est sur cette page: http://doc.ubuntu-fr.org/p2p

== Présents dans les dépots ==

=== BitTorrent ===
* bittorrent
* ctorrent
* deluge
* transmission
* ktorrent
* mldonkey
* qbittorrent
* rtorrent

=== eMule / Kademlia ===
* amule

=== Autres réseaux ===
* nicotine
* museekd, museeq

=== Outils associés ===
* mktorrent
* torrentflux

== Non présents dans les dépots ==
* i2p, deb ici: http://www.i2p2.de/debian.html
* iMule, deb ici: http://www.imule.i2p.tin0.de/download.php
* stealthnet, nécessite .NET, archive linux dispo là: http://www.stealthnet.de/fr_download.php
* freenet, nécessite JAVA, dispo ici: https://freenetproject.org/
* calyspo (anciennement kommute), .deb uniquement en i386 ici: http://calypso.sourceforge.net/downloads.html#debian
* retroshare, .deb uniquement en i386: http://retroshare.sourceforge.net/downloads.html
* tribler

= Le P2P, c'est aussi ... =
* debtorrent et apt-p2p
*</text>
      <sha1>isrh9dbyx70u9o6gn0m2z638touewf4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4422</id>
      <parentid>4421</parentid>
      <timestamp>2012-08-18T22:55:50Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Non présents dans les dépots */</comment>
      <text xml:space="preserve" bytes="1099">= Liste =

Reprendre en partie ce qui est sur cette page: http://doc.ubuntu-fr.org/p2p

== Présents dans les dépots ==

=== BitTorrent ===
* bittorrent
* ctorrent
* deluge
* transmission
* ktorrent
* mldonkey
* qbittorrent
* rtorrent

=== eMule / Kademlia ===
* amule

=== Autres réseaux ===
* nicotine
* museekd, museeq

=== Outils associés ===
* mktorrent
* torrentflux

== Non présents dans les dépots ==
* i2p, deb ici: http://www.i2p2.de/debian.html
* iMule, deb ici: http://www.imule.i2p.tin0.de/download.php
* stealthnet, nécessite .NET, archive linux dispo là: http://www.stealthnet.de/fr_download.php
* freenet, nécessite JAVA, dispo ici: https://freenetproject.org/
* calyspo (anciennement kommute), .deb uniquement en i386 ici: http://calypso.sourceforge.net/downloads.html#debian
* retroshare, .deb uniquement en i386: http://retroshare.sourceforge.net/downloads.html
* alliancep2p, un .jar (nécessite JAVA) à trouver ici: http://www.alliancep2p.com/
* tribler, le paquet Ubuntu fontionne: http://www.tribler.org/Download

= Le P2P, c'est aussi ... =
* debtorrent et apt-p2p
*</text>
      <sha1>h18dlj8k5bwy3d3eohf0z07c4rah799</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4423</id>
      <parentid>4422</parentid>
      <timestamp>2012-08-19T15:05:17Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Liste */</comment>
      <text xml:space="preserve" bytes="1101">= Liste =

Reprendre en partie ce qui est sur cette page: http://doc.ubuntu-fr.org/p2p

== Présents dans les dépôts ==

=== BitTorrent ===
* bittorrent
* ctorrent
* deluge
* transmission
* ktorrent
* mldonkey
* qbittorrent
* rtorrent

=== eMule / Kademlia ===
* amule

=== Autres réseaux ===
* nicotine
* museekd, museeq

=== Outils associés ===
* mktorrent
* torrentflux

== Non présents dans les dépôts ==
* i2p, deb ici: http://www.i2p2.de/debian.html
* iMule, deb ici: http://www.imule.i2p.tin0.de/download.php
* stealthnet, nécessite .NET, archive linux dispo là: http://www.stealthnet.de/fr_download.php
* freenet, nécessite JAVA, dispo ici: https://freenetproject.org/
* calyspo (anciennement kommute), .deb uniquement en i386 ici: http://calypso.sourceforge.net/downloads.html#debian
* retroshare, .deb uniquement en i386: http://retroshare.sourceforge.net/downloads.html
* alliancep2p, un .jar (nécessite JAVA) à trouver ici: http://www.alliancep2p.com/
* tribler, le paquet Ubuntu fontionne: http://www.tribler.org/Download

= Le P2P, c'est aussi ... =
* debtorrent et apt-p2p
*</text>
      <sha1>ch9xwwupwi6mg20wathrghk7ahg2tet</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5122</id>
      <parentid>4423</parentid>
      <timestamp>2013-05-04T12:31:29Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <text xml:space="preserve" bytes="1687">= Liste =

Reprendre en partie ce qui est sur cette page: http://doc.ubuntu-fr.org/p2p

== Présents dans les dépôts ==

=== BitTorrent ===
* bittorrent, le client officiel
* ctorrent
* deluge, client populaire écrit en GTK/Python
* transmission, client utilisé en environnement Gnome
* ktorrent, client utilisé en environnement KDE
* mldonkey, client multi-protocoles
* qbittorrent, client écrit en QT4/Python, intégre une fonction de recherche privilégiant le réseau DHT/les trackers publics
* rtorrent, client souvent utilisé sur les serveurs «headless», parfois conjointement à rutorrent pour un accès web (type Seedbox)

=== eMule / Kademlia ===
* amule, se connectant aux serveurs eDonkey, et au réseau Kad

=== SoulSeek ===
Soulseek est un réseau dédié essentiellement à la musique.
* nicotine+
* museekd, museeq

=== Outils associés ===
* mktorrent
* torrentflux

== Non présents dans les dépôts ==
* i2p, deb ici: http://www.i2p2.de/debian.html
* iMule, deb ici: http://www.imule.i2p.tin0.de/download.php
* stealthnet, nécessite .NET, archive linux dispo là: http://www.stealthnet.de/fr_download.php
* freenet, nécessite JAVA, dispo ici: https://freenetproject.org/
* calyspo (anciennement kommute), .deb uniquement en i386 ici: http://calypso.sourceforge.net/downloads.html#debian
* retroshare, .deb uniquement en i386: http://retroshare.sourceforge.net/downloads.html
* alliancep2p, un .jar (nécessite JAVA) à trouver ici: http://www.alliancep2p.com/
* tribler, le paquet Ubuntu fontionne: http://www.tribler.org/Download

= Le P2P, c'est aussi ... =
* debtorrent et apt-p2p
* [[Seeks]], un «moteur de recherche» décentralisé, sous licence AGPL</text>
      <sha1>fn2ecikt40mbf56qts10kywmzqhjges</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5123</id>
      <parentid>5122</parentid>
      <timestamp>2013-05-04T12:32:20Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <text xml:space="preserve" bytes="1685">= Liste =

Reprendre en partie ce qui est sur cette page: http://doc.ubuntu-fr.org/p2p

== Présents dans les dépôts ==

=== BitTorrent ===
* bittorrent, le client officiel
* ctorrent
* deluge, client populaire écrit en GTK/Python
* transmission, client utilisé en environnement Gnome
* ktorrent, client utilisé en environnement KDE
* mldonkey, client multi-protocoles
* qbittorrent, client écrit en QT4/Python, intégre une fonction de recherche privilégiant le réseau DHT/les trackers publics
* rtorrent, client souvent utilisé sur les serveurs «headless», parfois conjointement à rutorrent pour un accès web (type Seedbox)

== Outils associés ==
* mktorrent
* torrentflux

=== eMule / Kademlia ===
* amule, se connectant aux serveurs eDonkey, et au réseau Kad

=== SoulSeek ===
Soulseek est un réseau dédié essentiellement à la musique.
* nicotine+
* museekd, museeq

== Non présents dans les dépôts ==
* i2p, deb ici: http://www.i2p2.de/debian.html
* iMule, deb ici: http://www.imule.i2p.tin0.de/download.php
* stealthnet, nécessite .NET, archive linux dispo là: http://www.stealthnet.de/fr_download.php
* freenet, nécessite JAVA, dispo ici: https://freenetproject.org/
* calyspo (anciennement kommute), .deb uniquement en i386 ici: http://calypso.sourceforge.net/downloads.html#debian
* retroshare, .deb uniquement en i386: http://retroshare.sourceforge.net/downloads.html
* alliancep2p, un .jar (nécessite JAVA) à trouver ici: http://www.alliancep2p.com/
* tribler, le paquet Ubuntu fontionne: http://www.tribler.org/Download

= Le P2P, c'est aussi ... =
* debtorrent et apt-p2p
* [[Seeks]], un «moteur de recherche» décentralisé, sous licence AGPL</text>
      <sha1>7dl7iaifj2xh4c1ysunqlkojf3rj2cv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5124</id>
      <parentid>5123</parentid>
      <timestamp>2013-05-04T12:32:41Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Outils associés */</comment>
      <text xml:space="preserve" bytes="1689">= Liste =

Reprendre en partie ce qui est sur cette page: http://doc.ubuntu-fr.org/p2p

== Présents dans les dépôts ==

=== BitTorrent ===
* bittorrent, le client officiel
* ctorrent
* deluge, client populaire écrit en GTK/Python
* transmission, client utilisé en environnement Gnome
* ktorrent, client utilisé en environnement KDE
* mldonkey, client multi-protocoles
* qbittorrent, client écrit en QT4/Python, intégre une fonction de recherche privilégiant le réseau DHT/les trackers publics
* rtorrent, client souvent utilisé sur les serveurs «headless», parfois conjointement à rutorrent pour un accès web (type Seedbox)

==== Outils associés ====
* mktorrent
* torrentflux

=== eMule / Kademlia ===
* amule, se connectant aux serveurs eDonkey, et au réseau Kad

=== SoulSeek ===
Soulseek est un réseau dédié essentiellement à la musique.
* nicotine+
* museekd, museeq

== Non présents dans les dépôts ==
* i2p, deb ici: http://www.i2p2.de/debian.html
* iMule, deb ici: http://www.imule.i2p.tin0.de/download.php
* stealthnet, nécessite .NET, archive linux dispo là: http://www.stealthnet.de/fr_download.php
* freenet, nécessite JAVA, dispo ici: https://freenetproject.org/
* calyspo (anciennement kommute), .deb uniquement en i386 ici: http://calypso.sourceforge.net/downloads.html#debian
* retroshare, .deb uniquement en i386: http://retroshare.sourceforge.net/downloads.html
* alliancep2p, un .jar (nécessite JAVA) à trouver ici: http://www.alliancep2p.com/
* tribler, le paquet Ubuntu fontionne: http://www.tribler.org/Download

= Le P2P, c'est aussi ... =
* debtorrent et apt-p2p
* [[Seeks]], un «moteur de recherche» décentralisé, sous licence AGPL</text>
      <sha1>hpxllwa2dchux3cl7e6uhlken6r0aci</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5500</id>
      <parentid>5124</parentid>
      <timestamp>2013-12-14T16:19:08Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Non présents dans les dépôts */</comment>
      <text xml:space="preserve" bytes="1672">= Liste =

Reprendre en partie ce qui est sur cette page: http://doc.ubuntu-fr.org/p2p

== Présents dans les dépôts ==

=== BitTorrent ===
* bittorrent, le client officiel
* ctorrent
* deluge, client populaire écrit en GTK/Python
* transmission, client utilisé en environnement Gnome
* ktorrent, client utilisé en environnement KDE
* mldonkey, client multi-protocoles
* qbittorrent, client écrit en QT4/Python, intégre une fonction de recherche privilégiant le réseau DHT/les trackers publics
* rtorrent, client souvent utilisé sur les serveurs «headless», parfois conjointement à rutorrent pour un accès web (type Seedbox)

==== Outils associés ====
* mktorrent
* torrentflux

=== eMule / Kademlia ===
* amule, se connectant aux serveurs eDonkey, et au réseau Kad

=== SoulSeek ===
Soulseek est un réseau dédié essentiellement à la musique.
* nicotine+
* museekd, museeq

== Non présents dans les dépôts ==
* i2p, deb ici: http://www.i2p2.de/debian.html
* iMule, deb ici: http://www.imule.i2p.tin0.de/download.php
* stealthnet, nécessite .NET, archive linux dispo là: http://www.stealthnet.de/fr_download.php
* freenet, nécessite JAVA, dispo ici: https://freenetproject.org/
* calyspo (anciennement kommute), .deb uniquement en i386 ici: http://calypso.sourceforge.net/downloads.html#debian
* retroshare deb ici: http://retroshare.sourceforge.net/downloads.html
* alliancep2p, un .jar (nécessite JAVA) à trouver ici: http://www.alliancep2p.com/
* tribler, le paquet Ubuntu fontionne: http://www.tribler.org/Download

= Le P2P, c'est aussi ... =
* debtorrent et apt-p2p
* [[Seeks]], un «moteur de recherche» décentralisé, sous licence AGPL</text>
      <sha1>lghdc7a33i0o8d6yd4mvj9j5v6m7jel</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Logiciels</title>
    <ns>0</ns>
    <id>1146</id>
    <revision>
      <id>4697</id>
      <timestamp>2012-10-30T15:05:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « {{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}} {{Template: Social}} ----  &lt;u&gt;'''Logiciels'''&lt;/u&gt;  {| width=&quot;100%&quot; | colspan=&quot;3&quot; |'''Les paquets''' |- ... »</comment>
      <text xml:space="preserve" bytes="3518">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Logiciels'''&lt;/u&gt;

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Les paquets'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt-listbugs|apt-listbugs]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Sources_de_paquets_:_les_bases|Sources de paquets : les bases (sources.list)]]
| width=&quot;33%&quot; |•&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Aptitude|Aptitude]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[DPKG|DPKG]]
|
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Grub'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Les gestionnaires de fenêtres'''
|-
| colspan=&quot;3&quot; |''Les flottants''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Openbox]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Fluxbox]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Pekwm]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Fvwm]]
| width=&quot;33%&quot; |•&amp;nbsp;[[WindowMaker]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Enlightenment]] 
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |''Les tillings''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Dwm]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Wmii]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Awesome]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Xmonad]] 
|
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Multimédia'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[CD audio|CD Audio]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Flash|Les &quot;plugins&quot; Gnash et Flash]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Bureautique'''
|-
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Divers'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Généalogie|Généalogie]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Ssh|Installation et configuration de ssh]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Generation_mots_de_passe|Les générateurs de mots de passe]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Interfaces_graphiques_Rsync|Interfaces graphiques Rsync]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Smartmontools|Connaître l'état de ses disques durs avec Smartmontools]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Meilleurs_logiciels_pour_console|Sélection des meilleurs logiciels pour console]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Init|Gestion des services au boot]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Clipperz|Installer Clipperz - Gestionnaire de mot de passes en ligne - sur une Debian Squeeze]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_TrueCrypt_Squeeze|Installation de TrueCrypt sur une Squeeze]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_phpBB-3.0.11|Installation d'un forum phpBB]]
|
|
|}

----

{{Modèle:Accueil}}

[[Catégorie:Paquets]]
[[Catégorie:Grub]]
[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Flottants]]
[[Catégorie:Tillings]]
[[Catégorie:Multimédia]]
[[Catégorie Bureautique]]
[[Catégorie:Logiciels_Divers]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>kqqcoas0r4kbias2jy1y86xhpfbcvjs</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4704</id>
      <parentid>4697</parentid>
      <timestamp>2012-10-31T13:08:28Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="3611">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Logiciels'''&lt;/u&gt;

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Les paquets'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt-listbugs|apt-listbugs]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Sources_de_paquets_:_les_bases|Sources de paquets : les bases (sources.list)]]
| width=&quot;33%&quot; |•&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Aptitude|Aptitude]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[DPKG|DPKG]]
|
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Grub'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Les gestionnaires de fenêtres'''
|-
| colspan=&quot;3&quot; |''Les flottants''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Openbox]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Fluxbox]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Pekwm]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Fvwm]]
| width=&quot;33%&quot; |•&amp;nbsp;[[WindowMaker]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Enlightenment]] 
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |''Les tillings''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Dwm]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Wmii]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Awesome]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Xmonad]] 
|
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Multimédia'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[CD audio|CD Audio]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Flash|Les &quot;plugins&quot; Gnash et Flash]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Bureautique'''
|-
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Divers'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Généalogie|Généalogie]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Ssh|Installation et configuration de ssh]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Generation_mots_de_passe|Les générateurs de mots de passe]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Interfaces_graphiques_Rsync|Interfaces graphiques Rsync]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Smartmontools|Connaître l'état de ses disques durs avec Smartmontools]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Meilleurs_logiciels_pour_console|Sélection des meilleurs logiciels pour console]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Init|Gestion des services au boot]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Clipperz|Installer Clipperz - Gestionnaire de mot de passes en ligne - sur une Debian Squeeze]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_TrueCrypt_Squeeze|Installation de TrueCrypt sur une Squeeze]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_phpBB-3.0.11|Installation d'un forum phpBB]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Liste_de_logiciels_peer_to_peer|Liste de logiciels de Peer to peer]]
|
|}

----

{{Modèle:Accueil}}

[[Catégorie:Paquets]]
[[Catégorie:Grub]]
[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Flottants]]
[[Catégorie:Tillings]]
[[Catégorie:Multimédia]]
[[Catégorie Bureautique]]
[[Catégorie:Logiciels_Divers]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>66zl0az237r3ysldyk9dei3dj9oo3x3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4705</id>
      <parentid>4704</parentid>
      <timestamp>2012-10-31T13:11:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="3673">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Logiciels'''&lt;/u&gt;

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Les paquets'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt-listbugs|apt-listbugs]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Sources_de_paquets_:_les_bases|Sources de paquets : les bases (sources.list)]]
| width=&quot;33%&quot; |•&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Aptitude|Aptitude]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[DPKG|DPKG]]
|
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Grub'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Les gestionnaires de fenêtres'''
|-
| colspan=&quot;3&quot; |''Les flottants''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Openbox]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Fluxbox]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Pekwm]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Fvwm]]
| width=&quot;33%&quot; |•&amp;nbsp;[[WindowMaker]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Enlightenment]] 
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |''Les tillings''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Dwm]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Wmii]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Awesome]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Xmonad]] 
|
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Multimédia'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[CD audio|CD Audio]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Flash|Les &quot;plugins&quot; Gnash et Flash]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Bureautique'''
|-
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Divers'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Généalogie|Généalogie]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Ssh|Installation et configuration de ssh]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Generation_mots_de_passe|Les générateurs de mots de passe]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Interfaces_graphiques_Rsync|Interfaces graphiques Rsync]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Smartmontools|Connaître l'état de ses disques durs avec Smartmontools]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Meilleurs_logiciels_pour_console|Sélection des meilleurs logiciels pour console]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Init|Gestion des services au boot]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Clipperz|Installer Clipperz - Gestionnaire de mot de passes en ligne - sur une Debian Squeeze]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_TrueCrypt_Squeeze|Installation de TrueCrypt sur une Squeeze]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_phpBB-3.0.11|Installation d'un forum phpBB]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Liste_de_logiciels_peer_to_peer|Liste de logiciels de Peer to peer]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Seeks|Installer et configurer Seeks]]
|}

----

{{Modèle:Accueil}}

[[Catégorie:Paquets]]
[[Catégorie:Grub]]
[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Flottants]]
[[Catégorie:Tillings]]
[[Catégorie:Multimédia]]
[[Catégorie Bureautique]]
[[Catégorie:Logiciels_Divers]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>9anjazsfm2ililuqzgf6kedu137q0oq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4722</id>
      <parentid>4705</parentid>
      <timestamp>2012-11-01T13:29:40Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>Ajout d'un &quot;:&quot; manquant dans les catégories</comment>
      <text xml:space="preserve" bytes="3673">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Logiciels'''&lt;/u&gt;

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Les paquets'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt-listbugs|apt-listbugs]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Sources_de_paquets_:_les_bases|Sources de paquets : les bases (sources.list)]]
| width=&quot;33%&quot; |•&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Aptitude|Aptitude]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[DPKG|DPKG]]
|
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Grub'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Les gestionnaires de fenêtres'''
|-
| colspan=&quot;3&quot; |''Les flottants''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Openbox]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Fluxbox]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Pekwm]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Fvwm]]
| width=&quot;33%&quot; |•&amp;nbsp;[[WindowMaker]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Enlightenment]] 
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |''Les tillings''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Dwm]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Wmii]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Awesome]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Xmonad]] 
|
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Multimédia'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[CD audio|CD Audio]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Flash|Les &quot;plugins&quot; Gnash et Flash]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Bureautique'''
|-
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Divers'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Généalogie|Généalogie]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Ssh|Installation et configuration de ssh]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Generation_mots_de_passe|Les générateurs de mots de passe]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Interfaces_graphiques_Rsync|Interfaces graphiques Rsync]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Smartmontools|Connaître l'état de ses disques durs avec Smartmontools]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Meilleurs_logiciels_pour_console|Sélection des meilleurs logiciels pour console]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Init|Gestion des services au boot]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Clipperz|Installer Clipperz - Gestionnaire de mot de passes en ligne - sur une Debian Squeeze]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_TrueCrypt_Squeeze|Installation de TrueCrypt sur une Squeeze]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_phpBB-3.0.11|Installation d'un forum phpBB]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Liste_de_logiciels_peer_to_peer|Liste de logiciels de Peer to peer]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Seeks|Installer et configurer Seeks]]
|}

----

{{Modèle:Accueil}}

[[Catégorie:Paquets]]
[[Catégorie:Grub]]
[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Flottants]]
[[Catégorie:Tillings]]
[[Catégorie:Multimédia]]
[[Catégorie:Bureautique]]
[[Catégorie:Logiciels_Divers]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>0krj949ppnarcomkm9sdn6svysl38j6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4736</id>
      <parentid>4722</parentid>
      <timestamp>2012-11-08T08:51:02Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3758">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Logiciels'''&lt;/u&gt;

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Les paquets'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt-listbugs|apt-listbugs]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Sources_de_paquets_:_les_bases|Sources de paquets : les bases (sources.list)]]
| width=&quot;33%&quot; |•&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Aptitude|Aptitude]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[DPKG|DPKG]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt-p2p|Télécharger et partager ses paquets avec Apt-p2p]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Grub'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Les gestionnaires de fenêtres'''
|-
| colspan=&quot;3&quot; |''Les flottants''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Openbox]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Fluxbox]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Pekwm]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Fvwm]]
| width=&quot;33%&quot; |•&amp;nbsp;[[WindowMaker]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Enlightenment]] 
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |''Les tillings''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Dwm]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Wmii]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Awesome]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Xmonad]] 
|
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Multimédia'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[CD audio|CD Audio]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Flash|Les &quot;plugins&quot; Gnash et Flash]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Bureautique'''
|-
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Divers'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Généalogie|Généalogie]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Ssh|Installation et configuration de ssh]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Generation_mots_de_passe|Les générateurs de mots de passe]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Interfaces_graphiques_Rsync|Interfaces graphiques Rsync]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Smartmontools|Connaître l'état de ses disques durs avec Smartmontools]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Meilleurs_logiciels_pour_console|Sélection des meilleurs logiciels pour console]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Init|Gestion des services au boot]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Clipperz|Installer Clipperz - Gestionnaire de mot de passes en ligne - sur une Debian Squeeze]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_TrueCrypt_Squeeze|Installation de TrueCrypt sur une Squeeze]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_phpBB-3.0.11|Installation d'un forum phpBB]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Liste_de_logiciels_peer_to_peer|Liste de logiciels de Peer to peer]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Seeks|Installer et configurer Seeks]]
|}

----

{{Modèle:Accueil}}

[[Catégorie:Paquets]]
[[Catégorie:Grub]]
[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Flottants]]
[[Catégorie:Tillings]]
[[Catégorie:Multimédia]]
[[Catégorie:Bureautique]]
[[Catégorie:Logiciels_Divers]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>e59k5ici4znnb00yel66pu6d5e5otr6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4799</id>
      <parentid>4736</parentid>
      <timestamp>2012-12-07T11:20:25Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>+ &quot;édition/encodage de videos&quot;</comment>
      <text xml:space="preserve" bytes="3828">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Logiciels'''&lt;/u&gt;

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Les paquets'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt-listbugs|apt-listbugs]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Sources_de_paquets_:_les_bases|Sources de paquets : les bases (sources.list)]]
| width=&quot;33%&quot; |•&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Aptitude|Aptitude]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[DPKG|DPKG]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt-p2p|Télécharger et partager ses paquets avec Apt-p2p]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Grub'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Les gestionnaires de fenêtres'''
|-
| colspan=&quot;3&quot; |''Les flottants''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Openbox]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Fluxbox]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Pekwm]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Fvwm]]
| width=&quot;33%&quot; |•&amp;nbsp;[[WindowMaker]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Enlightenment]] 
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |''Les tillings''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Dwm]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Wmii]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Awesome]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Xmonad]] 
|
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Multimédia'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[CD audio|CD Audio]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Flash|Les &quot;plugins&quot; Gnash et Flash]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Edition Video|Edition de videos, encodage]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Bureautique'''
|-
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Divers'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Généalogie|Généalogie]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Ssh|Installation et configuration de ssh]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Generation_mots_de_passe|Les générateurs de mots de passe]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Interfaces_graphiques_Rsync|Interfaces graphiques Rsync]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Smartmontools|Connaître l'état de ses disques durs avec Smartmontools]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Meilleurs_logiciels_pour_console|Sélection des meilleurs logiciels pour console]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Init|Gestion des services au boot]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Clipperz|Installer Clipperz - Gestionnaire de mot de passes en ligne - sur une Debian Squeeze]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_TrueCrypt_Squeeze|Installation de TrueCrypt sur une Squeeze]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_phpBB-3.0.11|Installation d'un forum phpBB]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Liste_de_logiciels_peer_to_peer|Liste de logiciels de Peer to peer]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Seeks|Installer et configurer Seeks]]
|}

----

{{Modèle:Accueil}}

[[Catégorie:Paquets]]
[[Catégorie:Grub]]
[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Flottants]]
[[Catégorie:Tillings]]
[[Catégorie:Multimédia]]
[[Catégorie:Bureautique]]
[[Catégorie:Logiciels_Divers]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>mnlshrrb1np7jni5wxjl1za69pypwep</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4802</id>
      <parentid>4799</parentid>
      <timestamp>2012-12-07T13:13:03Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>La dernière modification du texte (par [[Spécial:Contributions/Zbf|Zbf]]) ont été rejetées et la version 4736 a été restaurée : Il vaudrait mieux attendre que la page &quot;Edition Video&quot; soit suffisamment complète avant de l'ajouter au sommaire.</comment>
      <text xml:space="preserve" bytes="3758">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Logiciels'''&lt;/u&gt;

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Les paquets'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt-listbugs|apt-listbugs]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Sources_de_paquets_:_les_bases|Sources de paquets : les bases (sources.list)]]
| width=&quot;33%&quot; |•&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Aptitude|Aptitude]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[DPKG|DPKG]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt-p2p|Télécharger et partager ses paquets avec Apt-p2p]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Grub'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Les gestionnaires de fenêtres'''
|-
| colspan=&quot;3&quot; |''Les flottants''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Openbox]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Fluxbox]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Pekwm]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Fvwm]]
| width=&quot;33%&quot; |•&amp;nbsp;[[WindowMaker]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Enlightenment]] 
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |''Les tillings''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Dwm]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Wmii]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Awesome]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Xmonad]] 
|
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Multimédia'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[CD audio|CD Audio]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Flash|Les &quot;plugins&quot; Gnash et Flash]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Bureautique'''
|-
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Divers'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Généalogie|Généalogie]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Ssh|Installation et configuration de ssh]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Generation_mots_de_passe|Les générateurs de mots de passe]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Interfaces_graphiques_Rsync|Interfaces graphiques Rsync]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Smartmontools|Connaître l'état de ses disques durs avec Smartmontools]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Meilleurs_logiciels_pour_console|Sélection des meilleurs logiciels pour console]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Init|Gestion des services au boot]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Clipperz|Installer Clipperz - Gestionnaire de mot de passes en ligne - sur une Debian Squeeze]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_TrueCrypt_Squeeze|Installation de TrueCrypt sur une Squeeze]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_phpBB-3.0.11|Installation d'un forum phpBB]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Liste_de_logiciels_peer_to_peer|Liste de logiciels de Peer to peer]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Seeks|Installer et configurer Seeks]]
|}

----

{{Modèle:Accueil}}

[[Catégorie:Paquets]]
[[Catégorie:Grub]]
[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Flottants]]
[[Catégorie:Tillings]]
[[Catégorie:Multimédia]]
[[Catégorie:Bureautique]]
[[Catégorie:Logiciels_Divers]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>e59k5ici4znnb00yel66pu6d5e5otr6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4810</id>
      <parentid>4802</parentid>
      <timestamp>2012-12-08T16:28:26Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>Annulation des modifications 4802 de [[Special:Contributions/Vv222|Vv222]] ([[User talk:Vv222|discussion]]) : supprimer des pages du sommaire pour leur manque de contenu n'était pas une bonne idée</comment>
      <text xml:space="preserve" bytes="3828">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Logiciels'''&lt;/u&gt;

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Les paquets'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt-listbugs|apt-listbugs]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Sources_de_paquets_:_les_bases|Sources de paquets : les bases (sources.list)]]
| width=&quot;33%&quot; |•&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Aptitude|Aptitude]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[DPKG|DPKG]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt-p2p|Télécharger et partager ses paquets avec Apt-p2p]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Grub'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Les gestionnaires de fenêtres'''
|-
| colspan=&quot;3&quot; |''Les flottants''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Openbox]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Fluxbox]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Pekwm]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Fvwm]]
| width=&quot;33%&quot; |•&amp;nbsp;[[WindowMaker]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Enlightenment]] 
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |''Les tillings''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Dwm]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Wmii]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Awesome]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Xmonad]] 
|
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Multimédia'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[CD audio|CD Audio]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Flash|Les &quot;plugins&quot; Gnash et Flash]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Edition Video|Edition de videos, encodage]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Bureautique'''
|-
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Divers'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Généalogie|Généalogie]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Ssh|Installation et configuration de ssh]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Generation_mots_de_passe|Les générateurs de mots de passe]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Interfaces_graphiques_Rsync|Interfaces graphiques Rsync]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Smartmontools|Connaître l'état de ses disques durs avec Smartmontools]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Meilleurs_logiciels_pour_console|Sélection des meilleurs logiciels pour console]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Init|Gestion des services au boot]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Clipperz|Installer Clipperz - Gestionnaire de mot de passes en ligne - sur une Debian Squeeze]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_TrueCrypt_Squeeze|Installation de TrueCrypt sur une Squeeze]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_phpBB-3.0.11|Installation d'un forum phpBB]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Liste_de_logiciels_peer_to_peer|Liste de logiciels de Peer to peer]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Seeks|Installer et configurer Seeks]]
|}

----

{{Modèle:Accueil}}

[[Catégorie:Paquets]]
[[Catégorie:Grub]]
[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Flottants]]
[[Catégorie:Tillings]]
[[Catégorie:Multimédia]]
[[Catégorie:Bureautique]]
[[Catégorie:Logiciels_Divers]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>mnlshrrb1np7jni5wxjl1za69pypwep</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4835</id>
      <parentid>4810</parentid>
      <timestamp>2012-12-15T11:37:52Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="3941">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Logiciels'''&lt;/u&gt;

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Les paquets'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt-listbugs|apt-listbugs]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Sources_de_paquets_:_les_bases|Sources de paquets : les bases (sources.list)]]
| width=&quot;33%&quot; |•&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Aptitude|Aptitude]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[DPKG|DPKG]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt-p2p|Télécharger et partager ses paquets avec Apt-p2p]]
| width=&quot;33%&quot; |•&amp;nbsp;[[chroot-i386-dev|Monter un environnement de compilation i386 sur un système en amd64]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Grub'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Les gestionnaires de fenêtres'''
|-
| colspan=&quot;3&quot; |''Les flottants''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Openbox]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Fluxbox]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Pekwm]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Fvwm]]
| width=&quot;33%&quot; |•&amp;nbsp;[[WindowMaker]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Enlightenment]] 
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |''Les tillings''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Dwm]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Wmii]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Awesome]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Xmonad]] 
|
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Multimédia'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[CD audio|CD Audio]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Flash|Les &quot;plugins&quot; Gnash et Flash]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Edition Video|Edition de videos, encodage]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Bureautique'''
|-
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Divers'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Généalogie|Généalogie]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Ssh|Installation et configuration de ssh]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Generation_mots_de_passe|Les générateurs de mots de passe]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Interfaces_graphiques_Rsync|Interfaces graphiques Rsync]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Smartmontools|Connaître l'état de ses disques durs avec Smartmontools]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Meilleurs_logiciels_pour_console|Sélection des meilleurs logiciels pour console]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Init|Gestion des services au boot]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Clipperz|Installer Clipperz - Gestionnaire de mot de passes en ligne - sur une Debian Squeeze]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_TrueCrypt_Squeeze|Installation de TrueCrypt sur une Squeeze]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_phpBB-3.0.11|Installation d'un forum phpBB]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Liste_de_logiciels_peer_to_peer|Liste de logiciels de Peer to peer]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Seeks|Installer et configurer Seeks]]
|}

----

{{Modèle:Accueil}}

[[Catégorie:Paquets]]
[[Catégorie:Grub]]
[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Flottants]]
[[Catégorie:Tillings]]
[[Catégorie:Multimédia]]
[[Catégorie:Bureautique]]
[[Catégorie:Logiciels_Divers]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>3dt2yukquzlz07iedct80fthcwrnuhi</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5043</id>
      <parentid>4835</parentid>
      <timestamp>2013-03-03T14:19:09Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>extraction/création de DVD</comment>
      <text xml:space="preserve" bytes="4026">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Logiciels'''&lt;/u&gt;

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Les paquets'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt-listbugs|apt-listbugs]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Sources_de_paquets_:_les_bases|Sources de paquets : les bases (sources.list)]]
| width=&quot;33%&quot; |•&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Aptitude|Aptitude]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[DPKG|DPKG]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt-p2p|Télécharger et partager ses paquets avec Apt-p2p]]
| width=&quot;33%&quot; |•&amp;nbsp;[[chroot-i386-dev|Monter un environnement de compilation i386 sur un système en amd64]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Grub'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Les gestionnaires de fenêtres'''
|-
| colspan=&quot;3&quot; |''Les flottants''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Openbox]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Fluxbox]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Pekwm]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Fvwm]]
| width=&quot;33%&quot; |•&amp;nbsp;[[WindowMaker]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Enlightenment]] 
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |''Les tillings''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Dwm]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Wmii]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Awesome]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Xmonad]] 
|
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Multimédia'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[CD audio|CD Audio]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Flash|Les &quot;plugins&quot; Gnash et Flash]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Edition Video|Edition de videos, encodage]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[DVD_edition|Edition de DVD, extraction et création]]
|
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Bureautique'''
|-
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Divers'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Généalogie|Généalogie]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Ssh|Installation et configuration de ssh]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Generation_mots_de_passe|Les générateurs de mots de passe]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Interfaces_graphiques_Rsync|Interfaces graphiques Rsync]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Smartmontools|Connaître l'état de ses disques durs avec Smartmontools]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Meilleurs_logiciels_pour_console|Sélection des meilleurs logiciels pour console]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Init|Gestion des services au boot]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Clipperz|Installer Clipperz - Gestionnaire de mot de passes en ligne - sur une Debian Squeeze]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_TrueCrypt_Squeeze|Installation de TrueCrypt sur une Squeeze]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_phpBB-3.0.11|Installation d'un forum phpBB]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Liste_de_logiciels_peer_to_peer|Liste de logiciels de Peer to peer]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Seeks|Installer et configurer Seeks]]
|}

----

{{Modèle:Accueil}}

[[Catégorie:Paquets]]
[[Catégorie:Grub]]
[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Flottants]]
[[Catégorie:Tillings]]
[[Catégorie:Multimédia]]
[[Catégorie:Bureautique]]
[[Catégorie:Logiciels_Divers]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>dvmu0uhjv3i1vjb1ybbgmd5zhhi4x3d</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5098</id>
      <parentid>5043</parentid>
      <timestamp>2013-04-17T05:23:54Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="4141">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Logiciels'''&lt;/u&gt;

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Les paquets'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt-listbugs|apt-listbugs]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Sources_de_paquets_:_les_bases|Sources de paquets : les bases (sources.list)]]
| width=&quot;33%&quot; |•&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Aptitude|Aptitude]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[DPKG|DPKG]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt-p2p|Télécharger et partager ses paquets avec Apt-p2p]]
| width=&quot;33%&quot; |•&amp;nbsp;[[chroot-i386-dev|Monter un environnement de compilation i386 sur un système en amd64]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Grub'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Les gestionnaires de fenêtres'''
|-
| colspan=&quot;3&quot; |''Les flottants''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Openbox]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Fluxbox]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Pekwm]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Fvwm]]
| width=&quot;33%&quot; |•&amp;nbsp;[[WindowMaker]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Enlightenment]] 
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |''Les tillings''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Dwm]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Wmii]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Awesome]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Xmonad]] 
|
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Multimédia'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[CD audio|CD Audio]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Flash|Les &quot;plugins&quot; Gnash et Flash]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Edition Video|Edition de videos, encodage]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[DVD_edition|Edition de DVD, extraction et création]]
|
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Bureautique'''
|-
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Divers'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Généalogie|Généalogie]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Ssh|Installation et configuration de ssh]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Generation_mots_de_passe|Les générateurs de mots de passe]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Interfaces_graphiques_Rsync|Interfaces graphiques Rsync]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Smartmontools|Connaître l'état de ses disques durs avec Smartmontools]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Meilleurs_logiciels_pour_console|Sélection des meilleurs logiciels pour console]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Init|Gestion des services au boot]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Clipperz|Installer Clipperz - Gestionnaire de mot de passes en ligne - sur une Debian Squeeze]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_TrueCrypt_Squeeze|Installation de TrueCrypt sur une Squeeze]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_phpBB-3.0.11|Installation d'un forum phpBB]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Liste_de_logiciels_peer_to_peer|Liste de logiciels de Peer to peer]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Seeks|Installer et configurer Seeks]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Multiposte|Multiposte (Multiseat)]]
| width=&quot;33%&quot; |•&amp;nbsp;
| width=&quot;33%&quot; |•&amp;nbsp;
|}

----

{{Modèle:Accueil}}

[[Catégorie:Paquets]]
[[Catégorie:Grub]]
[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Flottants]]
[[Catégorie:Tillings]]
[[Catégorie:Multimédia]]
[[Catégorie:Bureautique]]
[[Catégorie:Logiciels_Divers]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>dk9058dblrsawotkgdoqriddt94nd3l</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5218</id>
      <parentid>5098</parentid>
      <timestamp>2013-05-27T21:32:59Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="4098">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Logiciels'''&lt;/u&gt;

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Les paquets'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt-listbugs|apt-listbugs]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Sources_de_paquets_:_les_bases|Sources de paquets : les bases (sources.list)]]
| width=&quot;33%&quot; |•&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Aptitude|Aptitude]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[DPKG|DPKG]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt-p2p|Télécharger et partager ses paquets avec Apt-p2p]]
| width=&quot;33%&quot; |•&amp;nbsp;[[chroot-i386-dev|Monter un environnement de compilation i386 sur un système en amd64]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Grub'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Les gestionnaires de fenêtres'''
|-
| colspan=&quot;3&quot; |''Les flottants''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Openbox]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Fluxbox]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Pekwm]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Fvwm]]
| width=&quot;33%&quot; |•&amp;nbsp;[[WindowMaker]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Enlightenment]] 
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |''Les tillings''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Dwm]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Wmii]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Awesome]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Xmonad]] 
|
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Multimédia'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[CD audio|CD Audio]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Flash|Les &quot;plugins&quot; Gnash et Flash]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Edition Video|Edition de videos, encodage]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[DVD_edition|Edition de DVD, extraction et création]]
|
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Bureautique'''
|-
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Divers'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Généalogie|Généalogie]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Ssh|Installation et configuration de ssh]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Generation_mots_de_passe|Les générateurs de mots de passe]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Interfaces_graphiques_Rsync|Interfaces graphiques Rsync]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Smartmontools|Connaître l'état de ses disques durs avec Smartmontools]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Meilleurs_logiciels_pour_console|Sélection des meilleurs logiciels pour console]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Init|Gestion des services au boot]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Clipperz|Installer Clipperz - Gestionnaire de mot de passes en ligne - sur une Debian Squeeze]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_TrueCrypt_Squeeze|Installation de TrueCrypt sur une Squeeze/Wheezy]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_phpBB-3.0.11|Installation d'un forum phpBB]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Liste_de_logiciels_peer_to_peer|Liste de logiciels de Peer to peer]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Seeks|Installer et configurer Seeks]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Multiposte|Multiposte (Multiseat)]]
|}

----

{{Modèle:Accueil}}

[[Catégorie:Paquets]]
[[Catégorie:Grub]]
[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Flottants]]
[[Catégorie:Tillings]]
[[Catégorie:Multimédia]]
[[Catégorie:Bureautique]]
[[Catégorie:Logiciels_Divers]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>m7tlvrnxjk9iv453ecpjyspphph6xic</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5413</id>
      <parentid>5218</parentid>
      <timestamp>2013-10-02T08:27:02Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <minor/>
      <comment>Renommage de section pour être un peu plus clair</comment>
      <text xml:space="preserve" bytes="4153">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Logiciels'''&lt;/u&gt;

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Les paquets'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt-listbugs|apt-listbugs]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Sources_de_paquets_:_les_bases|Sources de paquets : les bases (sources.list)]]
| width=&quot;33%&quot; |•&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Aptitude|Aptitude]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[DPKG|DPKG]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Apt-p2p|Télécharger et partager ses paquets avec Apt-p2p]]
| width=&quot;33%&quot; |•&amp;nbsp;[[chroot-i386-dev|Monter un environnement de compilation i386 sur un système en amd64]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Grub'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Les Environnements graphiques'''
|-
| colspan=&quot;3&quot; |''Gestionnaires de fenêtres flottants''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Openbox]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Fluxbox]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Pekwm]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Fvwm]]
| width=&quot;33%&quot; |•&amp;nbsp;[[WindowMaker]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Enlightenment]] 
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |''Gestionnaires de fenêtres « tillings »''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Dwm]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Wmii]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Awesome]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Xmonad]] 
|
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Multimédia'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[CD audio|CD Audio]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Flash|Les &quot;plugins&quot; Gnash et Flash]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Edition Video|Edition de videos, encodage]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[DVD_edition|Edition de DVD, extraction et création]]
|
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Bureautique'''
|-
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Divers'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Généalogie|Généalogie]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Ssh|Installation et configuration de ssh]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Generation_mots_de_passe|Les générateurs de mots de passe]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Interfaces_graphiques_Rsync|Interfaces graphiques Rsync]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Smartmontools|Connaître l'état de ses disques durs avec Smartmontools]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Meilleurs_logiciels_pour_console|Sélection des meilleurs logiciels pour console]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Init|Gestion des services au boot]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Clipperz|Installer Clipperz - Gestionnaire de mot de passes en ligne - sur une Debian Squeeze]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_TrueCrypt_Squeeze|Installation de TrueCrypt sur une Squeeze/Wheezy]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_phpBB-3.0.11|Installation d'un forum phpBB]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Liste_de_logiciels_peer_to_peer|Liste de logiciels de Peer to peer]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Seeks|Installer et configurer Seeks]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Multiposte|Multiposte (Multiseat)]]
|}

----

{{Modèle:Accueil}}

[[Catégorie:Paquets]]
[[Catégorie:Grub]]
[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Flottants]]
[[Catégorie:Tillings]]
[[Catégorie:Multimédia]]
[[Catégorie:Bureautique]]
[[Catégorie:Logiciels_Divers]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>6nndelydrourdjoksddiu5wcengvj8z</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Logwatch</title>
    <ns>0</ns>
    <id>719</id>
    <revision>
      <id>3187</id>
      <timestamp>2011-08-05T08:57:49Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « Logwatch est un utilitaire permettant de surveiller les journaux système et de créer des rapports. Ces rapports comprennent les tentatives de connexion infructueuses, les t... »</comment>
      <text xml:space="preserve" bytes="2583">Logwatch est un utilitaire permettant de surveiller les journaux système et de créer des rapports. Ces rapports comprennent les tentatives de connexion infructueuses, les tentatives de connexion réussie, l'espace de stockage utilisé/disponible, les erreurs de kernel,  etc.

== Mettre son système à jour ==

Ce n'est pas mauvais de le rappeler encore une fois, un système à jour est plus sécurisé!

 apt-get update
 apt-get upgrade

== Installez Logwatch ==

Passer la commande suivante pour installer logwatch:

 apt-get install logwatch

Par défaut Logwatch installe Postfix si vous n'avez pas de service SMTP installé.
Lorsque ce sera demandé, sélectionnez la configuration &quot;Internet Site&quot;.

Si vous préférez Exim, (re)installez-le au préalable.

== Configurez Logwatch ==

Une fois installé vous aurez à faire une configuration minimale de logwatch.

Les options sont nombreuses, je vous encourage à lire le man

 nano /usr/share/logwatch/default.conf/logwatch.conf

 Output = mail
 Format = text
 MailTo = root (ou tout autre adresse fonctionnelle)
 MailFrom = logwatch@votredomaine.org (ou tout autre adresse fonctionnelle)

A l'heure ou j'écrit, il manque au paquet logwatch 7.3.6.cvs20090906-1squeeze1 les fichiers pour le format html. Ne choisissez donc ce format pas pour l'instant!

== Vérifiez le fonctionnement ==

Tapez la commande suivante pour tester l'installation

 logwatch

Allez vérifier ensuite vos mails pour vous assurer qu'il est bien arrivé. Vérifiez votre boite à spam si nécessaire...

Vous devriez recevoir un mail du système:

&lt;code&gt;
 ################### Logwatch 7.3.6 (05/19/07) #################### 
        Processing Initiated: Fri Aug  5 11:16:24 2011
        Date Range Processed: yesterday
                              ( 2011-Aug-04 )
                              Period is day.
        Detail Level of Output: 0
        Type of Output/Format: mail / text
        Logfiles for Host: vanille.zehome.org
  ################################################################## 
&lt;/code&gt;

== Cron ==

Vérifiez que la tâche cron est bien activée
Vous devriez avoir une tâche journalière automatiquement crée:

&lt;code&gt;
root@vanille:~# cat /etc/cron.daily/00logwatch
#!/bin/bash

#Check if removed-but-not-purged
test -x /usr/share/logwatch/scripts/logwatch.pl || exit 0

#execute
/usr/sbin/logwatch --output mail

#Note: It's possible to force the recipient in above command
#Just pass --mailto address@a.com instead of --output mail
&lt;/code&gt;

[[Utilisateur:Lol|Lol]] 5 août 2011 à 03:57 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>fk8j6ovp2dtfo2oduru7t4k7k3iyp0n</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3192</id>
      <parentid>3187</parentid>
      <timestamp>2011-08-05T09:20:06Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Cron */</comment>
      <text xml:space="preserve" bytes="2585">Logwatch est un utilitaire permettant de surveiller les journaux système et de créer des rapports. Ces rapports comprennent les tentatives de connexion infructueuses, les tentatives de connexion réussie, l'espace de stockage utilisé/disponible, les erreurs de kernel,  etc.

== Mettre son système à jour ==

Ce n'est pas mauvais de le rappeler encore une fois, un système à jour est plus sécurisé!

 apt-get update
 apt-get upgrade

== Installez Logwatch ==

Passer la commande suivante pour installer logwatch:

 apt-get install logwatch

Par défaut Logwatch installe Postfix si vous n'avez pas de service SMTP installé.
Lorsque ce sera demandé, sélectionnez la configuration &quot;Internet Site&quot;.

Si vous préférez Exim, (re)installez-le au préalable.

== Configurez Logwatch ==

Une fois installé vous aurez à faire une configuration minimale de logwatch.

Les options sont nombreuses, je vous encourage à lire le man

 nano /usr/share/logwatch/default.conf/logwatch.conf

 Output = mail
 Format = text
 MailTo = root (ou tout autre adresse fonctionnelle)
 MailFrom = logwatch@votredomaine.org (ou tout autre adresse fonctionnelle)

A l'heure ou j'écrit, il manque au paquet logwatch 7.3.6.cvs20090906-1squeeze1 les fichiers pour le format html. Ne choisissez donc ce format pas pour l'instant!

== Vérifiez le fonctionnement ==

Tapez la commande suivante pour tester l'installation

 logwatch

Allez vérifier ensuite vos mails pour vous assurer qu'il est bien arrivé. Vérifiez votre boite à spam si nécessaire...

Vous devriez recevoir un mail du système:

&lt;code&gt;
 ################### Logwatch 7.3.6 (05/19/07) #################### 
        Processing Initiated: Fri Aug  5 11:16:24 2011
        Date Range Processed: yesterday
                              ( 2011-Aug-04 )
                              Period is day.
        Detail Level of Output: 0
        Type of Output/Format: mail / text
        Logfiles for Host: vanille.zehome.org
  ################################################################## 
&lt;/code&gt;

== Cron ==

Vérifiez que la tâche cron est bien activée
Vous devriez avoir une tâche journalière automatiquement créée:

&lt;code&gt;
root@vanille:~# cat /etc/cron.daily/00logwatch
#!/bin/bash

#Check if removed-but-not-purged
test -x /usr/share/logwatch/scripts/logwatch.pl || exit 0

#execute
/usr/sbin/logwatch --output mail

#Note: It's possible to force the recipient in above command
#Just pass --mailto address@a.com instead of --output mail
&lt;/code&gt;

[[Utilisateur:Lol|Lol]] 5 août 2011 à 03:57 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>4nr8msvbnhokxor2do7thr0q4b7of9e</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3210</id>
      <parentid>3192</parentid>
      <timestamp>2011-08-07T13:04:22Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <comment>/* Configurez Logwatch */</comment>
      <text xml:space="preserve" bytes="2697">Logwatch est un utilitaire permettant de surveiller les journaux système et de créer des rapports. Ces rapports comprennent les tentatives de connexion infructueuses, les tentatives de connexion réussie, l'espace de stockage utilisé/disponible, les erreurs de kernel,  etc.

== Mettre son système à jour ==

Ce n'est pas mauvais de le rappeler encore une fois, un système à jour est plus sécurisé!

 apt-get update
 apt-get upgrade

== Installez Logwatch ==

Passer la commande suivante pour installer logwatch:

 apt-get install logwatch

Par défaut Logwatch installe Postfix si vous n'avez pas de service SMTP installé.
Lorsque ce sera demandé, sélectionnez la configuration &quot;Internet Site&quot;.

Si vous préférez Exim, (re)installez-le au préalable.

== Configurez Logwatch ==

Une fois installé vous aurez à faire une configuration minimale de logwatch.

Les options sont nombreuses, je vous encourage à lire le man

 nano /usr/share/logwatch/default.conf/logwatch.conf

 Output = mail
 Format = text
 MailTo = root (ou tout autre adresse fonctionnelle)
 MailFrom = logwatch@votredomaine.org (ou tout autre adresse fonctionnelle)

A l'heure ou j'écrit, le paquet logwatch 7.3.6.cvs20090906-1squeeze1 [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=584681 contient un bug] (pas trop gênant...): il manque les fichiers pour le format html.
Ne choisissez donc ce format pas pour l'instant!
 Format = html

== Vérifiez le fonctionnement ==

Tapez la commande suivante pour tester l'installation

 logwatch

Allez vérifier ensuite vos mails pour vous assurer qu'il est bien arrivé. Vérifiez votre boite à spam si nécessaire...

Vous devriez recevoir un mail du système:

&lt;code&gt;
 ################### Logwatch 7.3.6 (05/19/07) #################### 
        Processing Initiated: Fri Aug  5 11:16:24 2011
        Date Range Processed: yesterday
                              ( 2011-Aug-04 )
                              Period is day.
        Detail Level of Output: 0
        Type of Output/Format: mail / text
        Logfiles for Host: vanille.zehome.org
  ################################################################## 
&lt;/code&gt;

== Cron ==

Vérifiez que la tâche cron est bien activée
Vous devriez avoir une tâche journalière automatiquement créée:

&lt;code&gt;
root@vanille:~# cat /etc/cron.daily/00logwatch
#!/bin/bash

#Check if removed-but-not-purged
test -x /usr/share/logwatch/scripts/logwatch.pl || exit 0

#execute
/usr/sbin/logwatch --output mail

#Note: It's possible to force the recipient in above command
#Just pass --mailto address@a.com instead of --output mail
&lt;/code&gt;

[[Utilisateur:Lol|Lol]] 5 août 2011 à 03:57 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>s19cwgh3acs4nqria5nydxv8jbqs5lh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3211</id>
      <parentid>3210</parentid>
      <timestamp>2011-08-07T13:16:01Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <comment>/* Configurez Logwatch */</comment>
      <text xml:space="preserve" bytes="4950">Logwatch est un utilitaire permettant de surveiller les journaux système et de créer des rapports. Ces rapports comprennent les tentatives de connexion infructueuses, les tentatives de connexion réussie, l'espace de stockage utilisé/disponible, les erreurs de kernel,  etc.

== Mettre son système à jour ==

Ce n'est pas mauvais de le rappeler encore une fois, un système à jour est plus sécurisé!

 apt-get update
 apt-get upgrade

== Installez Logwatch ==

Passer la commande suivante pour installer logwatch:

 apt-get install logwatch

Par défaut Logwatch installe Postfix si vous n'avez pas de service SMTP installé.
Lorsque ce sera demandé, sélectionnez la configuration &quot;Internet Site&quot;.

Si vous préférez Exim, (re)installez-le au préalable.

== Configurez Logwatch ==

Une fois installé vous aurez à faire une configuration minimale de logwatch.

Les options sont nombreuses, je vous encourage à lire le man

 nano /usr/share/logwatch/default.conf/logwatch.conf

 Output = mail
 Format = text
 MailTo = root (ou tout autre adresse fonctionnelle)
 MailFrom = logwatch@votredomaine.org (ou tout autre adresse fonctionnelle)

=== Le format html ===

A l'heure ou j'écrit, le paquet logwatch 7.3.6.cvs20090906-1squeeze1 [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=584681 contient un bug] (pas trop gênant...): il manque les fichiers pour le format html.

Vous pouvez tout de même facilement utiliser le format html.
Il suffit de créer les fichiers suivants:

 nano /usr/share/logwatch/default.conf/html/footer.html
&lt;code&gt;
&lt;!-- Start footer.html --&gt;
&lt;div class=\&quot;copyright\&quot;&gt;
&lt;hr&gt;
&lt;p&gt;Logwatch &amp;copy;Copyright 2002-2006 Kirk Bauer&lt;/p&gt;
&lt;p&gt;
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the &quot;Software&quot;), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
&lt;/p&gt;
&lt;p&gt;
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
&lt;/p&gt;
&lt;p&gt;
THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
&lt;/p&gt;&lt;/div&gt;
&lt;/body&gt;&lt;/html&gt;
&lt;/code&gt;

 nano /usr/share/logwatch/default.conf/html/header.html
&lt;code&gt;
&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/REC-html40/loose.dtd&quot;&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Logwatch  $Version  ( $VDate )&lt;/title&gt;
&lt;meta name=&quot;generator&quot; content=&quot;Logwatch  $Version ( $VDate )&quot;&gt;
&lt;style type=&quot;text/css&quot;&gt;
  h1 {color: gray; border-bottom: 3px double silver}
  h2,h3 {color: gray; border-bottom: 1px solid silver}
  .ref {padding-left: 1%}
  .service {padding-left: 1%; font-family: Monospace}
  .return_link {border-top: 1px; border-bottom: 1px;
  padding: 1%; margin-top: 1%; margin-bottom: 1%;}
  .copyright {color: black; border-top: 1px solid grey;
  border-bottom: 1px solid grey;
  padding: 1%; margin-top: 1%; margin-bottom: 1%;}
&lt;/style&gt;
&lt;/head&gt;
&lt;body style=&quot;width:90%; margin-left: 5%; margin-right: 5%&quot; bgcolor=&quot;#FFFFFF&quot;&gt;
&lt;hr&gt;
&lt;!-- End header.html --&gt;
&lt;/code&gt;

Et de remplacer
 Format = text
par
 Format = html

== Vérifiez le fonctionnement ==

Tapez la commande suivante pour tester l'installation

 logwatch

Allez vérifier ensuite vos mails pour vous assurer qu'il est bien arrivé. Vérifiez votre boite à spam si nécessaire...

Vous devriez recevoir un mail du système:

&lt;code&gt;
 ################### Logwatch 7.3.6 (05/19/07) #################### 
        Processing Initiated: Fri Aug  5 11:16:24 2011
        Date Range Processed: yesterday
                              ( 2011-Aug-04 )
                              Period is day.
        Detail Level of Output: 0
        Type of Output/Format: mail / text
        Logfiles for Host: vanille.zehome.org
  ################################################################## 
&lt;/code&gt;

== Cron ==

Vérifiez que la tâche cron est bien activée
Vous devriez avoir une tâche journalière automatiquement créée:

&lt;code&gt;
root@vanille:~# cat /etc/cron.daily/00logwatch
#!/bin/bash

#Check if removed-but-not-purged
test -x /usr/share/logwatch/scripts/logwatch.pl || exit 0

#execute
/usr/sbin/logwatch --output mail

#Note: It's possible to force the recipient in above command
#Just pass --mailto address@a.com instead of --output mail
&lt;/code&gt;

[[Utilisateur:Lol|Lol]] 5 août 2011 à 03:57 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>q6ivfp9elmqspz8t7rt846kk8elrk4y</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3212</id>
      <parentid>3211</parentid>
      <timestamp>2011-08-07T13:16:45Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <comment>/* Le format html */</comment>
      <text xml:space="preserve" bytes="5034">Logwatch est un utilitaire permettant de surveiller les journaux système et de créer des rapports. Ces rapports comprennent les tentatives de connexion infructueuses, les tentatives de connexion réussie, l'espace de stockage utilisé/disponible, les erreurs de kernel,  etc.

== Mettre son système à jour ==

Ce n'est pas mauvais de le rappeler encore une fois, un système à jour est plus sécurisé!

 apt-get update
 apt-get upgrade

== Installez Logwatch ==

Passer la commande suivante pour installer logwatch:

 apt-get install logwatch

Par défaut Logwatch installe Postfix si vous n'avez pas de service SMTP installé.
Lorsque ce sera demandé, sélectionnez la configuration &quot;Internet Site&quot;.

Si vous préférez Exim, (re)installez-le au préalable.

== Configurez Logwatch ==

Une fois installé vous aurez à faire une configuration minimale de logwatch.

Les options sont nombreuses, je vous encourage à lire le man

 nano /usr/share/logwatch/default.conf/logwatch.conf

 Output = mail
 Format = text
 MailTo = root (ou tout autre adresse fonctionnelle)
 MailFrom = logwatch@votredomaine.org (ou tout autre adresse fonctionnelle)

=== Le format html ===

A l'heure ou j'écrit, le paquet logwatch 7.3.6.cvs20090906-1squeeze1 [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=584681 contient un bug] (pas trop gênant...): il manque les fichiers pour le format html.

Vous pouvez tout de même facilement utiliser le format html.
Il suffit de créer les fichiers suivants:

 nano /usr/share/logwatch/default.conf/html/footer.html
&lt;code&gt;
&lt;!-- Start footer.html --&gt;
&lt;div class=\&quot;copyright\&quot;&gt;
&lt;hr&gt;
&lt;p&gt;Logwatch &amp;copy;Copyright 2002-2006 Kirk Bauer&lt;/p&gt;
&lt;p&gt;
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the &quot;Software&quot;), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
&lt;/p&gt;
&lt;p&gt;
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
&lt;/p&gt;
&lt;p&gt;
THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
&lt;/p&gt;&lt;/div&gt;
&lt;/body&gt;&lt;/html&gt;
&lt;/code&gt;

 nano /usr/share/logwatch/default.conf/html/header.html
&lt;code&gt;
&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/REC-html40/loose.dtd&quot;&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Logwatch  $Version  ( $VDate )&lt;/title&gt;
&lt;meta name=&quot;generator&quot; content=&quot;Logwatch  $Version ( $VDate )&quot;&gt;
&lt;style type=&quot;text/css&quot;&gt;
  h1 {color: gray; border-bottom: 3px double silver}
  h2,h3 {color: gray; border-bottom: 1px solid silver}
  .ref {padding-left: 1%}
  .service {padding-left: 1%; font-family: Monospace}
  .return_link {border-top: 1px; border-bottom: 1px;
  padding: 1%; margin-top: 1%; margin-bottom: 1%;}
  .copyright {color: black; border-top: 1px solid grey;
  border-bottom: 1px solid grey;
  padding: 1%; margin-top: 1%; margin-bottom: 1%;}
&lt;/style&gt;
&lt;/head&gt;
&lt;body style=&quot;width:90%; margin-left: 5%; margin-right: 5%&quot; bgcolor=&quot;#FFFFFF&quot;&gt;
&lt;hr&gt;
&lt;!-- End header.html --&gt;
&lt;/code&gt;

Et de remplacer
 Format = text
par
 Format = html

* [https://www.debian-fr.org/logwatch-et-html-t34658.html discussion sur le forum]

== Vérifiez le fonctionnement ==

Tapez la commande suivante pour tester l'installation

 logwatch

Allez vérifier ensuite vos mails pour vous assurer qu'il est bien arrivé. Vérifiez votre boite à spam si nécessaire...

Vous devriez recevoir un mail du système:

&lt;code&gt;
 ################### Logwatch 7.3.6 (05/19/07) #################### 
        Processing Initiated: Fri Aug  5 11:16:24 2011
        Date Range Processed: yesterday
                              ( 2011-Aug-04 )
                              Period is day.
        Detail Level of Output: 0
        Type of Output/Format: mail / text
        Logfiles for Host: vanille.zehome.org
  ################################################################## 
&lt;/code&gt;

== Cron ==

Vérifiez que la tâche cron est bien activée
Vous devriez avoir une tâche journalière automatiquement créée:

&lt;code&gt;
root@vanille:~# cat /etc/cron.daily/00logwatch
#!/bin/bash

#Check if removed-but-not-purged
test -x /usr/share/logwatch/scripts/logwatch.pl || exit 0

#execute
/usr/sbin/logwatch --output mail

#Note: It's possible to force the recipient in above command
#Just pass --mailto address@a.com instead of --output mail
&lt;/code&gt;

[[Utilisateur:Lol|Lol]] 5 août 2011 à 03:57 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>44aoei9enpe8uvi5d8s2lninrt7q5o5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3214</id>
      <parentid>3212</parentid>
      <timestamp>2011-08-07T13:25:36Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Vérifiez le fonctionnement */</comment>
      <text xml:space="preserve" bytes="5113">Logwatch est un utilitaire permettant de surveiller les journaux système et de créer des rapports. Ces rapports comprennent les tentatives de connexion infructueuses, les tentatives de connexion réussie, l'espace de stockage utilisé/disponible, les erreurs de kernel,  etc.

== Mettre son système à jour ==

Ce n'est pas mauvais de le rappeler encore une fois, un système à jour est plus sécurisé!

 apt-get update
 apt-get upgrade

== Installez Logwatch ==

Passer la commande suivante pour installer logwatch:

 apt-get install logwatch

Par défaut Logwatch installe Postfix si vous n'avez pas de service SMTP installé.
Lorsque ce sera demandé, sélectionnez la configuration &quot;Internet Site&quot;.

Si vous préférez Exim, (re)installez-le au préalable.

== Configurez Logwatch ==

Une fois installé vous aurez à faire une configuration minimale de logwatch.

Les options sont nombreuses, je vous encourage à lire le man

 nano /usr/share/logwatch/default.conf/logwatch.conf

 Output = mail
 Format = text
 MailTo = root (ou tout autre adresse fonctionnelle)
 MailFrom = logwatch@votredomaine.org (ou tout autre adresse fonctionnelle)

=== Le format html ===

A l'heure ou j'écrit, le paquet logwatch 7.3.6.cvs20090906-1squeeze1 [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=584681 contient un bug] (pas trop gênant...): il manque les fichiers pour le format html.

Vous pouvez tout de même facilement utiliser le format html.
Il suffit de créer les fichiers suivants:

 nano /usr/share/logwatch/default.conf/html/footer.html
&lt;code&gt;
&lt;!-- Start footer.html --&gt;
&lt;div class=\&quot;copyright\&quot;&gt;
&lt;hr&gt;
&lt;p&gt;Logwatch &amp;copy;Copyright 2002-2006 Kirk Bauer&lt;/p&gt;
&lt;p&gt;
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the &quot;Software&quot;), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
&lt;/p&gt;
&lt;p&gt;
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
&lt;/p&gt;
&lt;p&gt;
THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
&lt;/p&gt;&lt;/div&gt;
&lt;/body&gt;&lt;/html&gt;
&lt;/code&gt;

 nano /usr/share/logwatch/default.conf/html/header.html
&lt;code&gt;
&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/REC-html40/loose.dtd&quot;&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Logwatch  $Version  ( $VDate )&lt;/title&gt;
&lt;meta name=&quot;generator&quot; content=&quot;Logwatch  $Version ( $VDate )&quot;&gt;
&lt;style type=&quot;text/css&quot;&gt;
  h1 {color: gray; border-bottom: 3px double silver}
  h2,h3 {color: gray; border-bottom: 1px solid silver}
  .ref {padding-left: 1%}
  .service {padding-left: 1%; font-family: Monospace}
  .return_link {border-top: 1px; border-bottom: 1px;
  padding: 1%; margin-top: 1%; margin-bottom: 1%;}
  .copyright {color: black; border-top: 1px solid grey;
  border-bottom: 1px solid grey;
  padding: 1%; margin-top: 1%; margin-bottom: 1%;}
&lt;/style&gt;
&lt;/head&gt;
&lt;body style=&quot;width:90%; margin-left: 5%; margin-right: 5%&quot; bgcolor=&quot;#FFFFFF&quot;&gt;
&lt;hr&gt;
&lt;!-- End header.html --&gt;
&lt;/code&gt;

Et de remplacer
 Format = text
par
 Format = html

* [https://www.debian-fr.org/logwatch-et-html-t34658.html discussion sur le forum]

== Vérifiez le fonctionnement ==

Tapez la commande suivante pour tester l'installation

 logwatch

Allez vérifier ensuite vos mails pour vous assurer qu'il est bien arrivé. Vérifiez votre boite à spam si nécessaire...

Vous devriez recevoir un mail du système:

&lt;code&gt;
 ################### Logwatch 7.3.6 (05/19/07) #################### 
        Processing Initiated: Fri Aug  5 11:16:24 2011
        Date Range Processed: yesterday
                              ( 2011-Aug-04 )
                              Period is day.
        Detail Level of Output: 0
        Type of Output/Format: mail / text
        Logfiles for Host: vanille.zehome.org
  ################################################################## 
&lt;/code&gt;

[[Fichier:Logwatch01.jpeg|240px|left|thumb||Ou un beau mail au format HTML.]]

== Cron ==

Vérifiez que la tâche cron est bien activée
Vous devriez avoir une tâche journalière automatiquement créée:

&lt;code&gt;
root@vanille:~# cat /etc/cron.daily/00logwatch
#!/bin/bash

#Check if removed-but-not-purged
test -x /usr/share/logwatch/scripts/logwatch.pl || exit 0

#execute
/usr/sbin/logwatch --output mail

#Note: It's possible to force the recipient in above command
#Just pass --mailto address@a.com instead of --output mail
&lt;/code&gt;

[[Utilisateur:Lol|Lol]] 5 août 2011 à 03:57 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>lakxeb7ji8ezr4daaguw41bcv2hlw3z</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3215</id>
      <parentid>3214</parentid>
      <timestamp>2011-08-07T13:27:57Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="5128">Logwatch est un utilitaire permettant de surveiller les journaux système et de créer des rapports. Ces rapports comprennent les tentatives de connexion infructueuses, les tentatives de connexion réussie, l'espace de stockage utilisé/disponible, les erreurs de kernel,  etc.

== Mettre son système à jour ==

Ce n'est pas mauvais de le rappeler encore une fois, un système à jour est plus sécurisé!

 apt-get update
 apt-get upgrade

== Installez Logwatch ==

Passer la commande suivante pour installer logwatch:

 apt-get install logwatch

Par défaut Logwatch installe Postfix si vous n'avez pas de service SMTP installé.
Lorsque ce sera demandé, sélectionnez la configuration &quot;Internet Site&quot;.

Si vous préférez Exim, (re)installez-le au préalable.

== Configurez Logwatch ==

Une fois installé vous aurez à faire une configuration minimale de logwatch.

Les options sont nombreuses, je vous encourage à lire le man

 nano /usr/share/logwatch/default.conf/logwatch.conf

 Output = mail
 Format = text
 MailTo = root (ou tout autre adresse fonctionnelle)
 MailFrom = logwatch@votredomaine.org (ou tout autre adresse fonctionnelle)

=== Le format html ===

A l'heure ou j'écrit, le paquet logwatch 7.3.6.cvs20090906-1squeeze1 [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=584681 contient un bug] (pas trop gênant...): il manque les fichiers pour le format html.

Vous pouvez tout de même facilement utiliser le format html.
Il suffit de créer les fichiers suivants:

 nano /usr/share/logwatch/default.conf/html/footer.html
&lt;code&gt;
&lt;!-- Start footer.html --&gt;
&lt;div class=\&quot;copyright\&quot;&gt;
&lt;hr&gt;
&lt;p&gt;Logwatch &amp;copy;Copyright 2002-2006 Kirk Bauer&lt;/p&gt;
&lt;p&gt;
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the &quot;Software&quot;), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
&lt;/p&gt;
&lt;p&gt;
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
&lt;/p&gt;
&lt;p&gt;
THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
&lt;/p&gt;&lt;/div&gt;
&lt;/body&gt;&lt;/html&gt;
&lt;/code&gt;

 nano /usr/share/logwatch/default.conf/html/header.html
&lt;code&gt;
&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/REC-html40/loose.dtd&quot;&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Logwatch  $Version  ( $VDate )&lt;/title&gt;
&lt;meta name=&quot;generator&quot; content=&quot;Logwatch  $Version ( $VDate )&quot;&gt;
&lt;style type=&quot;text/css&quot;&gt;
  h1 {color: gray; border-bottom: 3px double silver}
  h2,h3 {color: gray; border-bottom: 1px solid silver}
  .ref {padding-left: 1%}
  .service {padding-left: 1%; font-family: Monospace}
  .return_link {border-top: 1px; border-bottom: 1px;
  padding: 1%; margin-top: 1%; margin-bottom: 1%;}
  .copyright {color: black; border-top: 1px solid grey;
  border-bottom: 1px solid grey;
  padding: 1%; margin-top: 1%; margin-bottom: 1%;}
&lt;/style&gt;
&lt;/head&gt;
&lt;body style=&quot;width:90%; margin-left: 5%; margin-right: 5%&quot; bgcolor=&quot;#FFFFFF&quot;&gt;
&lt;hr&gt;
&lt;!-- End header.html --&gt;
&lt;/code&gt;

Et de remplacer
 Format = text
par
 Format = html

* [https://www.debian-fr.org/logwatch-et-html-t34658.html discussion sur le forum]

== Vérifiez le fonctionnement ==

Tapez la commande suivante pour tester l'installation

 logwatch

Allez vérifier ensuite vos mails pour vous assurer qu'il est bien arrivé. Vérifiez votre boite à spam si nécessaire...

Vous devriez recevoir un mail du système:

&lt;code&gt;
 ################### Logwatch 7.3.6 (05/19/07) #################### 
        Processing Initiated: Fri Aug  5 11:16:24 2011
        Date Range Processed: yesterday
                              ( 2011-Aug-04 )
                              Period is day.
        Detail Level of Output: 0
        Type of Output/Format: mail / text
        Logfiles for Host: vanille.zehome.org
  ################################################################## 
&lt;/code&gt;

[[Fichier:Logwatch01.jpeg|240px|left|thumb||Ou un beau mail au format HTML.]]
















== Cron ==

Vérifiez que la tâche cron est bien activée
Vous devriez avoir une tâche journalière automatiquement créée:

&lt;code&gt;
root@vanille:~# cat /etc/cron.daily/00logwatch
#!/bin/bash

#Check if removed-but-not-purged
test -x /usr/share/logwatch/scripts/logwatch.pl || exit 0

#execute
/usr/sbin/logwatch --output mail

#Note: It's possible to force the recipient in above command
#Just pass --mailto address@a.com instead of --output mail
&lt;/code&gt;

[[Utilisateur:Lol|Lol]] 5 août 2011 à 03:57 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>ln5k1xr6rqq5vzfg5if94jquca0rwxr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Man hier</title>
    <ns>0</ns>
    <id>859</id>
    <revision>
      <id>3544</id>
      <timestamp>2011-11-09T07:35:06Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « HIER(7) Manuel du programmeur Linux  NOM        hier - Description de la hiérarchie du système de fichiers  DESCRIPTION         Un système Linux typique contient, entre au... »</comment>
      <text xml:space="preserve" bytes="17332">HIER(7)
Manuel du programmeur Linux

NOM
       hier - Description de la hiérarchie du système de fichiers

DESCRIPTION

       Un système Linux typique contient, entre autres, les répertoires suivants :

       /      Le répertoire racine (root). Le point de départ de toute l'arborescence.

       /bin   Ce répertoire contient les programmes exécutables nécessaires en mode mono-utilisateur pour démarrer ou réparer le système.

       /boot  Contient les fichiers statiques utilisés par le chargeur du système. Ce répertoire ne contient que les fichiers nécessaires
              pour le chargeur. Les fichiers de configuration pour l'installation du chargeur doivent résider dans /sbin et /etc.

       /dev   Fichiers spéciaux ou fichiers se rapportant à des périphériques physiques. Consultez mknod(1).

       /etc   Contient les fichiers de configuration spécifiques à la machine. Certains ensembles de programmes  volumineux,  comme  X11,
              peuvent  disposer  de  leurs  propres  sous-répertoires  dans  /etc.  Les fichiers de configuration relatifs au site entier
              devraient se trouver dans /usr/etc. Néanmoins, les programmes doivent toujours les chercher dans /etc et  l'on  peut  avoir
              des liens en direction des fichiers de /usr/etc.

       /etc/opt
              Fichiers de configuration spécifiques à l'hôte, pour les applications installées dans /opt.

       /etc/sgml
              Ce répertoire contient les fichiers de configuration pour SGML et XML (facultatif).

       /etc/skel
              Quand  un  nouveau compte utilisateur est créé, les fichiers de ce répertoire sont habituellement copiés dans le répertoire
              personnel du nouveau compte.

       /etc/X11
              Fichiers de configuration pour le système X-Window.

       /home  Sur les machines offrant des répertoires personnels pour les utilisateurs, ils sont généralement placés sous ce répertoire,
              directement ou avec une arborescence définie par l'administration locale.

       /lib   Ce  répertoire  doit contenir les bibliothèques partagées nécessaires pour démarrer le système et utiliser les commandes de
              la partition racine.

       /media Contient des points de montage pour les périphériques amovibles comme les CD, les DVD, ou les clés USB.

       /mnt   Point de montage pour un système de  fichiers  monté  temporairement.  Dans  certaines  distributions,  /mnt  contient  des
              sous-répertoires censés être utilisés comme points de montages temporaires pour plusieurs systèmes de fichiers.

       /opt   Ce répertoire peut contenir les paquetages additionnels.

       /proc  est le point de montage pour le système de fichiers proc, qui fournit des informations sur les processus en cours et sur le
              noyau. Ce pseudo-système de fichiers est décrit dans proc(5).

       /root  Ce répertoire est habituellement celui personnel de l'utilisateur root.

       /sbin  Comme /bin, ce répertoire contient les commandes nécessaires au démarrage du système, mais qui ne sont  pas  exécutées  par
              des utilisateurs normaux.

       /srv   Ce répertoire contient les données spécifiques du site qui sont servies par ce système.

       /tmp   Ce  répertoire  sert à contenir des fichiers temporaires que l'on peut détruire régulièrement, par un script périodique, ou
              au démarrage du système.

       /usr   Ce répertoire est généralement monté depuis une partition séparée. Il ne devrait contenir que des données partageables,  en
              lecture seule, afin d'être monté par plusieurs machines utilisant Linux.

       /usr/X11R6
              Le système X-Window, version 11 release 6.

       /usr/X11R6/bin
              Les  exécutables  appartenant  au système X-Window. Souvent il existe un lien symbolique depuis /usr/bin/X11 vers ce réper‐
              toire.

       /usr/X11R6/lib
              Les fichiers de données associés au système X-Window.

       /usr/X11R6/lib/X11
              Ce répertoire contient divers fichiers nécessaire pour exécuter X. Il y a souvent un lien  symbolique  depuis  /usr/lib/X11
              pointant sur ce répertoire.

       /usr/X11R6/include/X11
              contient  les  fichiers  d'en-tête nécessaires pour compiler des programmes utilisant X11. Il existe souvent un lien symbo‐
              lique depuis /usr/include/X11 vers ce répertoire.

       /usr/bin
              Il s'agit du répertoire principal pour les programmes exécutables. La plupart des programmes nécessaires aux  utilisateurs,
              et  pas  indispensables pour démarrer ou réparer le système sont placés ici, à l'exception des programmes installés unique‐
              ment sur cette machine.

       /usr/bin/X11
              est un emplacement tradition pour les exécutables X11.  Sous  Linux  il  s'agit  généralement  d'un  lien  symbolique  vers
              /usr/X11R6/bin.

       /usr/dict
              Remplacé par /usr/share/dict.

       /usr/doc
              Remplacé par /usr/share/doc.

       /usr/etc
              Les  fichiers de configuration à partager entre plusieurs machines d'un site donné peuvent être stockés dans ce répertoire.
              Néanmoins, les programmes devraient toujours faire référence aux fichiers dans /etc. On construit alors  des  liens  symbo‐
              liques depuis /etc vers les fichiers appropriés de /usr/etc.

       /usr/games
              Fichiers exécutables des jeux et programmes éducatifs (facultatif).

       /usr/include
              Fichiers d'en-tête pour le compilateur C.

       /usr/include/X11
              Fichiers   d'en-tête  pour  le  compilateur  C  et  le  système  X-Window.  C'est  généralement  un  lien  symbolique  vers
              /usr/X11R6/include/X11.

       /usr/include/asm
              Les  fichiers  d'en-tête   déclarant   des   fonctions   en   assembleur.   Il   s'agit   généralement   d'un   lien   vers
              /usr/src/linux/include/asm.

       /usr/include/linux
              Contient  les  informations  qui  peuvent  changer  suivant  la  version  de  noyau.  C'est souvent un lien symbolique vers
              /usr/src/linux/include/linux, qui permet d'accéder aux informations spécifique à la version en cours du noyau.

              Notez qu'il faut placer ici les fichiers d'en-tête corrects pour la bibliothèque C. Toutefois les sources du noyau Linux ne
              sont pas prévues pour être utilisées dans les programmes utilisateurs, et ne connaissent pas la bibliothèque C utilisée. Il
              est probable que des problèmes se produiront si on laisse /usr/include/asm ou  /usr/include/linux  pointer  vers  n'importe
              quelle  version  des  sources  du noyau. Les systèmes Debian ne fonctionnent pas ainsi, et utilisent les en-têtes provenant
              d'une version bien connue du noyau, fournir dans le paquetage libc*-dev.

       /usr/include/g++
              Les fichiers d'en-tête utilisés avec le compilateur GNU C++.

       /usr/lib
              Contient les bibliothèques, y compris les bibliothèques dynamiques, ainsi que quelques exécutables qu'on n'invoque normale‐
              ment pas directement. Des applications complexes peuvent disposer de leurs propres sous-répertoires ici.

       /usr/lib/X11
              L'emplacement habituel pour les fichiers de données associés aux programmes X11, ainsi que les fichiers de configuration du
              système X lui-même. Sous Linux, il s'agit souvent d'un lien symbolique vers /usr/X11R6/lib/X11.

       /usr/lib/gcc-lib
              contient des fichiers de bibliothèques associés au compilateur GNU C, gcc(1).

       /usr/lib/groff
              Fichiers pour le système de mise en forme de documents GNU groff.

       /usr/lib/uucp
              Fichiers pour uucp(1).

       /usr/local
              Emplacement habituel pour les programmes spécifiques à la machine ou au site.

       /usr/local/bin
              Contient les programmes exécutables spécifiques au site.

       /usr/local/doc
              Contient la documentation locale.

       /usr/local/etc
              Contient les fichiers de configuration de programmes installés localement.

       /usr/local/games
              Fichiers exécutables des jeux installé localement.

       /usr/local/lib
              Contient les fichiers associés aux programmes installés localement.

       /usr/local/include
              Fichiers d'en-tête personnalisés pour le compilateur C.
       /usr/lib/X11
              L'emplacement habituel pour les fichiers de données associés aux programmes X11, ainsi que les fichiers de configuration du
              système X lui-même. Sous Linux, il s'agit souvent d'un lien symbolique vers /usr/X11R6/lib/X11.

       /usr/local/info
              Pages d'informations associées aux programmes installés localement.

       /usr/local/man
              Pages de manuel des applications installées localement.

       /usr/local/sbin
              Programmes d'administration installés localement.

       /usr/local/share
              Données des applications installées localement, qui peuvent être partagées  entre  différentes  architectures  fonctionnant
              avec le même OS.

       /usr/local/src
              Fichiers sources des applications développées ou installées localement.

       /usr/man
              Remplacé par /usr/share/man.

       /usr/sbin
              contient  les programmes d'administration du système qui ne sont pas indispensables pour le démarrage, pour monter /usr, ou
              pour les réparations du système de fichiers.

       /usr/share
              contient des sous-répertoires avec les données des applications, susceptibles d'être partagées entre différentes  architec‐
              tures  avec  le même système d'exploitation. On trouve souvent ici des choses qui se trouvaient auparavant dans /usr/doc ou
              /usr/lib ou encore /usr/man.

       /usr/share/dict
              Ce répertoire regroupe les fichiers contenant les listes de mots utilisées par les vérificateurs orthographiques  (N.d.T. :
              on peut y trouver des sous-répertoires en fonction de la langue utilisée).

       /usr/share/doc
              Documentation à propos des programmes installés.

       /usr/share/games
              Données statiques pour les jeux de /usr/games.

       /usr/share/info
              Pages de la commande info.

       /usr/share/locale
              Informations pour l'internationalisation.

       /usr/share/man
              Les pages de manuel sont placées dans des sous-répertoires en fonction de la section.

       /usr/share/man/&lt;locale&gt;/man[1-9]
              Ces  répertoires contiennent les pages de manuel des localisations indiquées sous forme de code source. Les systèmes n'uti‐
              lisant qu'une seule langue pour toutes les pages de manuel peuvent ignorer la chaîne &lt;locale&gt;.

       /usr/share/misc
              Données diverses partageables entre différentes architectures pour le même système d'exploitation.

       /usr/share/nls
              Catalogues de messages pour la prise en charge de l'internationalisation.

       /usr/share/sgml
              Fichiers pour SGML et XML.

       /usr/share/terminfo
              Base de données pour terminfo.

       /usr/share/tmac
              Macros troff non distribuées avec groff.

       /usr/share/zoneinfo
              Fichiers d'information sur les fuseaux horaires.

       /usr/src
              Fichiers sources de différentes parties du système, inclus à titre de référence dans certains paquetages. Ne pas placer ici
              de  projets personnels, car les fichiers se trouvant dans /usr doivent être considérés comme uniquement accessibles en lec‐
              ture, sauf durant l'installation de nouveaux logiciels.

       /usr/src/linux
              Emplacement traditionnel des sources du noyau. Ceci est important sur les systèmes où /usr/include/linux est un lien symbo‐
              lique pointant dans ce répertoire. Si on doit construire un nouveau noyau, il vaut mieux utiliser un autre répertoire.

       /usr/tmp
              Obsolète,  ce doit être un lien symbolique vers /var/tmp, Présent pour des raisons de compatibilité, ne devrait jamais être
              utilisé.

       /var   Ce répertoire contient des fichiers qui peuvent changer régulièrement comme  les  fichiers  des  files  d'attente,  ou  les
              fichiers de journalisation.

       /var/adm
              Ce répertoire est maintenant remplacé par /var/log et devrait donc être un lien symbolique vers ce dernier.

       /var/backups
              Réservé pour des raisons historiques.

       /var/cache
              Données de cache de divers programmes.

       /var/catman/cat[1-9] ou /var/cache/man/cat[1-9]
              Ces  répertoires  contiennent  les  pages  de  manuel préformatées des sections correspondantes. L'utilisation des pages de
              manuel préformatées tombe en désuétude.

       /var/cron
              Réservé pour des raisons historiques.

       /var/lib
              Données variables pour divers programmes.

       /var/local
              Données variables pour /usr/local.

&lt;code&gt;
       /var/lock
              Les fichiers de verrouillage sont placés dans ce répertoire. La convention de noms pour  ces  fichiers  est  LCK..&lt;périphé-
              rique&gt;  où  &lt;périphérique&gt; est le nom du périphérique dans le système de fichiers. Le format utilisé est celui des fichiers
              de verrouillage HDU UUCP, c'est-à-dire ils  contiennent  un  PID  sous  forme  de  nombre  décimal,  au  format  ASCII,  de
              10 chiffres, suivi d'un caractère de Retour-Chariot.&lt;/code&gt;

       /var/log
              Divers fichiers de journalisation.

       /var/opt
              Données variables pour /opt.

       /var/mail
              Boîtes à lettres des utilisateurs. Remplace /var/spool/mail.

       /var/msgs
              Réservé pour des raisons historiques.

       /var/preserve
              Réservé pour des raisons historiques.

       /var/run
              Fichiers  de  variables à l'exécution, comme les fichiers de verrouillage contenant le PID, ainsi que la journalisation des
              connexions (utmp). Ces fichiers sont normalement effacés lors du démarrage.

       /var/spool
              Contient les fichiers spool ou files pour divers programmes.

       /var/spool/at
              Contient les jobs programmés pour at(1).

       /var/spool/cron
              Contient les tâches programmés pour cron(8).

       /var/spool/lpd
              Contient les fichiers en attente d'impression.

       /var/spool/mail
              Remplacé par /var/mail.

       /var/spool/mqueue
              Courriers en attente d'émission.

       /var/spool/news
              Répertoire de fichiers en attente pour les news.

       /var/spool/rwho
              Fichier en attente pour rwhod(8).

       /var/spool/smail
              Contient les fichiers en attente pour le programme smail(1) de distribution du courrier.

       /var/spool/uucp
              contient les fichiers en attente pour uucp(1).

       /var/tmp
              Comme /tmp, ce répertoire contient des fichiers temporaires stockés pour une durée indéterminée.

       /var/yp
              Base de données pour NIS.

CONFORMITÉ
       Standard du système de fichiers Linux, FHS version 2.2 &lt;http://www.pathname.com/fhs/&gt;.

BOGUES
       Cette liste n'est pas exhaustive, certains systèmes peuvent être configurés différemment.

VOIR AUSSI
       find(1), ln(1), proc(5), mount(8)

       The Linux Filesystem Hierarchy Standard.

COLOPHON
       Cette page fait partie de la publication 3.27 du projet man-pages Linux. Une description du projet et des instructions pour signa‐
       ler des anomalies peuvent être trouvées à l'adresse &lt;URL:http://www.kernel.org/doc/man-pages/&gt;.

TRADUCTION
       Depuis  2010, cette traduction est maintenue à l'aide de l'outil po4a &lt;URL:http://po4a.alioth.debian.org/&gt; par l'équipe de traduc‐
       tion francophone au sein du projet perkamon &lt;URL:http://perkamon.alioth.debian.org/&gt;.
 
       Christophe Blaess &lt;URL:http://www.blaess.fr/christophe/&gt; (1996-2003), Alain Portal  &lt;URL:http://manpagesfr.free.fr/&gt;  (2003-2006).
       Julien Cristau et l'équipe francophone de traduction de Debian (2006-2009).
 
       Veuillez signaler toute erreur de traduction en écrivant à &lt;debian-l10n-french@lists.debian.org&gt; ou par un rapport de bogue sur le
       paquet manpages-fr.
 
       Vous  pouvez  toujours  avoir  accès  à  la  version  anglaise  de  ce  document  en  utilisant  la  commande  « man -L  C   &lt;sec‐
       tion&gt; &lt;page_de_man&gt; ».

Linux                                                          30 mars 2009                                                       HIER(7)</text>
      <sha1>621d0jriw0rboual675sls8exwasccz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Manchot vs pingouin</title>
    <ns>0</ns>
    <id>926</id>
    <revision>
      <id>3852</id>
      <timestamp>2012-02-26T10:56:00Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « == Manchot VS Pingouin ==  Erreur commune très fréquente: Confondre [http://fr.wikipedia.org/wiki/Pingouin Pingouin] et [http://fr.wikipedia.org/wiki/Manchot Manchot].  ... »</comment>
      <text xml:space="preserve" bytes="447">== Manchot VS Pingouin ==

Erreur commune très fréquente: Confondre [http://fr.wikipedia.org/wiki/Pingouin Pingouin] et [http://fr.wikipedia.org/wiki/Manchot Manchot].

Le pingouin est un petit oiseau, il vole...

http://pix.isalo.org/upload/img/1330252927.jpg

Le manchot est lui aussi un oiseau, beaucoup plus gros, mais il ne vole pas...

http://pix.isalo.org/upload/img/1330252896.jpg

[[Utilisateur:Lol|Lol]] 26 février 2012 à 11:56 (CET)</text>
      <sha1>bakc7uwyyiczbhoxmot2ki0s6vy4n8z</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3854</id>
      <parentid>3852</parentid>
      <timestamp>2012-02-26T15:12:58Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>[[Catégorie:Divers]]</comment>
      <text xml:space="preserve" bytes="469">== Manchot VS Pingouin ==

Erreur commune très fréquente: Confondre [http://fr.wikipedia.org/wiki/Pingouin Pingouin] et [http://fr.wikipedia.org/wiki/Manchot Manchot].

Le pingouin est un petit oiseau, il vole...

http://pix.isalo.org/upload/img/1330252927.jpg

Le manchot est lui aussi un oiseau, beaucoup plus gros, mais il ne vole pas...

http://pix.isalo.org/upload/img/1330252896.jpg

[[Utilisateur:Lol|Lol]] 26 février 2012 à 11:56 (CET)
[[Catégorie:Divers]]</text>
      <sha1>go3ank7oy4dkrxkvcn12jz9u1vx61lc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Manuel d'installation</title>
    <ns>0</ns>
    <id>52</id>
    <revision>
      <id>150</id>
      <timestamp>2010-01-23T12:37:19Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <comment>Page créée avec « {{sid}}  Projet d'un manuel d'installation. Modifications et améliorations bienvenues.  == Préparer un espace de stockage ==  * Disque dur. ** Organiser ses partitions prim… »</comment>
      <text xml:space="preserve" bytes="8289">{{sid}}

Projet d'un manuel d'installation. Modifications et améliorations bienvenues.

== Préparer un espace de stockage ==

* Disque dur.
** Organiser ses partitions primaires, étendues, logiques.
** Espace disque minimum, comment réduire la taille d'une partition d'un système existant pour libérer de la place.

* Stockage externe USB (clé USB, disque dur externe)
** Partitionnement, espace minimum.
** Installation classique ou live.

* Live CD.
** Réinscriptible, un live CD permet de conserver ses données d'une session à l'autre.

== Quel fichier télécharger ==

Télécharger les fichiers d'installation de debian qui correspondent à ses besoins.

=== Architecture matérielle ===

Les fichiers à télécharger sont différents pour chaque type de processeur.

* alpha : Pour les processeurs [http://fr.wikipedia.org/wiki/DEC_Alpha DEC Alpha].

* amd64 : Pour les processeurs [http://fr.wikipedia.org/wiki/AMD64 AMD64], aussi appelés [http://fr.wikipedia.org/wiki/Intel_64 Intel 64], [http://fr.wikipedia.org/wiki/X64 x64] ou encore [http://fr.wikipedia.org/wiki/X86-64 x86-64]. La grande majorité des ordinateurs personnels vendus aujourd'hui sont de ce type.

* arm : Pour les processeurs de la famille [http://fr.wikipedia.org/wiki/Architecture_ARM ARM]

* armel

* hppa

* i386 : Pour les processeurs compatibles [http://fr.wikipedia.org/wiki/X86 Intel x86]. La grande majorité des ordinateurs personnels sont de ce type.

* ia64

* mips

* mipsel

* powerpc

* sparc

* s390

=== Méthode d'installation ===

* DVD (&quot;DVD&quot; : 4,4 Go).
* CD (&quot;CD&quot; : 650 Mo).
* Clé USB (&quot;netinst&quot; : 180 Mo; &quot;businesscard&quot; : 40 Mo).
* Depuis un deuxième ordinateur relié par ethernet (&quot;mini&quot; : 10 Mo).
* Depuis son propre disque dur.

== Manuels de Debian ==

Manuels disponibles sur debian.org :

* [http://d-i.alioth.debian.org/manual/fr.i386/index.html Installation]

* [http://www.debian.org/doc/manuals/debian-reference/index.fr.html Référence]

* [http://qref.sourceforge.net/ Référence (qref.sourceforge.net)]

* [http://www.debian.org/doc/manuals/securing-debian-howto/index.fr.html Sécurisation]

* [http://www.debian.org/doc/manuals/debian-faq/index.fr.html Faq]

* [http://www.debian.org/releases/stable/i386/release-notes/ Notes de publication]

* [http://www.debian.org/doc/manuals/fr/debian-fr-howto/index.fr.html Utiliser et configurer Debian pour le français]

== Installation de Debian ==

Trucs et astuces sur l'installation de Debian :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1684 Installer Debian 3.1] (ghostintheshell)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2195 Installation et Sécurisation de sa Debian (part1)] (stonfi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2221 Eléments d'optimisation du partitionnement] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7139 Install debian à partir du disque dur] (transpil)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7487 (Howto) Installation de Debian Etch] (d2_racing)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=10462 Comment grub peut sauver le monde] (MisterFreez)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13009 Installer directement Debian sid, mode graphique, et lilo] (talogue)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=12674 Booter sur USB lorsque le BIOS ne le permet pas] (AnatomicJC)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14885 Créer votre live-cd/usb grace à live-helper] (yoshi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14626 (Débutant) Installation et config. d'un système graphique] (Dendrond)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7825 (How-To)Dual boot Vista Debian] (Anoyzthen)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=17111 installation debian:] (panthere)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14673 Installation chroot 32 bits transparent] (fran.b)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=19772 Script: Aide à la création pour une installation automatisée] (mistermat)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=21021 Comment j'ai testé l'ext4 sans conversion de partition] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=22056 installer debian sid en ext4 à partir de linux] (h2osiden)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23421 mount et fstab pour les nuls] (kna)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 Installer une Lenny avec debootstrap et chroot] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23255 Installation de Debian depuis clé usb (ultra-simple)] (nanard)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23693 Installation de Debian par le réseau avec PXE] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24454 Installation via clé USB et sans réseau d'une Debian testing] (Knucky)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=18898 Créer sa clé USB live lenny personnalisée] (seb-ksl)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 Installer une Lenny avec debootstrap et chroot] (lol)

=== Liens externes ===

Liens externes sur l'installation de Debian :

* [http://giminik.developpez.com/articles/debian-gnu-linux/os-installation/ giminik.developpez.com]

* [http://www.coagul.org/ www.coagul.org]

* [http://www.michauko.org/docs/debian_testing/ www.michauko.org]

* [http://wiki.debian.org/fr/DebianReleases Les différentes versions de Debian]

* [http://wiki.debian.org/fr/DebianInstall Obtenir Debian]

* [http://wiki.debian.org/fr/DebianNetworkInstall Installation par le réseau]

* [http://wiki.debian.org/fr/FromWindowsToDebian Passer de Windows à Debian]

* [http://wiki.debian.org/InstallFAQ Faq]

* [http://wiki.debian.org/fr/LennyIllustratedInstall Guide d'installation illustré]

* [http://www.osnews.com/story/2016 Installation de Debian 3.0 très détaillée]

== Juste après l'installation ==

Trucs et astuces sur la configuration de Debian juste après l'installation :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1856 Ajouter des résolutions biscornues dans son xorg.conf] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2751 Créer et redimensionner ses partitions après installation] (Damsss)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13225 (Clavier) Personnaliser son clavier] (ripat) 

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=20845 Debian deblobé facile] (cantor)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1806 (Discussion) Recompilation de son kernel] (Ashgenesis)

* [http://ashgenesis.developpez.com/linux/kernel-debian/ (Discussion) Recompilation de son kernel] (Ashgenesis)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=18271 Fixer le nommage vos partitions avec l'UUID] (kna)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24799 Choisir le nom d'un périphérique lors de son branchement] (L0u!$)

== Installation de logiciels ==

Trucs et astuces sur l'installation de logiciels :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659 Sources.list au carré ou minimaliste [MàJ 17/02/09]] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=2821 Vos logiciels préférés] (avision)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1728 Comment rester en stable tout en ayant les derniers noyaux] (Ashgenesis)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2966 Comment trouver les bons modules Debian selon votre config ?] (Korben Dallas)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13757 Gestion du fichier preferences (ébauche)] (fran.b)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1969 atp/dpkg mémo] (stonfi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1957 KDE configuration pas à pas] (gwadboy)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2224 Gestion des Paquets .deb sous Debian avec dpkg et apt-get] (dexmon)

=== Liens externes ===

Sites pour la recherche d'un logiciel :

* [http://www.debian.org/distrib/packages#view Tous la paquets officiels de Debian]

* [http://linuxappfinder.com/ linuxappfinder.com]

* [http://sourceforge.net/ sourceforge.net]

* [http://freshmeat.net/ freshmeat.net]

* [http://www.gnomefiles.org/ gnomefiles.org : logiciels GTK+]

* [http://www.gnu.org/software/ gnu.org/software/]

* [http://www.framasoft.net/ framasoft.net]</text>
      <sha1>i28u40dc8hskeny22kf539f94h0vo9k</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>154</id>
      <parentid>150</parentid>
      <timestamp>2010-01-23T12:40:20Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <text xml:space="preserve" bytes="8361">{{sid}}

Projet d'un manuel d'installation. Modifications et améliorations bienvenues.

== Préparer un espace de stockage ==

* Disque dur.
** Organiser ses partitions primaires, étendues, logiques.
** Espace disque minimum, comment réduire la taille d'une partition d'un système existant pour libérer de la place.

* Stockage externe USB (clé USB, disque dur externe)
** Partitionnement, espace minimum.
** Installation classique ou live.

* Live CD.
** Réinscriptible, un live CD permet de conserver ses données d'une session à l'autre.

== Quel fichier télécharger ==

Télécharger les fichiers d'installation de debian qui correspondent à ses besoins.

=== Architecture matérielle ===

Les fichiers à télécharger sont différents pour chaque type de processeur.

* alpha : Pour les processeurs [http://fr.wikipedia.org/wiki/DEC_Alpha DEC Alpha].

* amd64 : Pour les processeurs [http://fr.wikipedia.org/wiki/AMD64 AMD64], aussi appelés [http://fr.wikipedia.org/wiki/Intel_64 Intel 64], [http://fr.wikipedia.org/wiki/X64 x64] ou encore [http://fr.wikipedia.org/wiki/X86-64 x86-64]. La grande majorité des ordinateurs personnels vendus aujourd'hui sont de ce type.

* arm : Pour les processeurs de la famille [http://fr.wikipedia.org/wiki/Architecture_ARM ARM]

* armel

* hppa

* i386 : Pour les processeurs compatibles [http://fr.wikipedia.org/wiki/X86 Intel x86]. La grande majorité des ordinateurs personnels sont de ce type.

* ia64

* mips

* mipsel

* powerpc

* sparc

* s390

=== Méthode d'installation ===

* DVD (&quot;DVD&quot; : 4,4 Go).
* CD (&quot;CD&quot; : 650 Mo).
* Clé USB (&quot;netinst&quot; : 180 Mo; &quot;businesscard&quot; : 40 Mo).
* Depuis un deuxième ordinateur relié par ethernet (&quot;mini&quot; : 10 Mo).
* Depuis son propre disque dur.

== Manuels de Debian ==

Manuels disponibles sur debian.org :

* [http://d-i.alioth.debian.org/manual/fr.i386/index.html Installation]

* [http://www.debian.org/doc/manuals/debian-reference/index.fr.html Référence]

* [http://qref.sourceforge.net/ Référence (qref.sourceforge.net)]

* [http://www.debian.org/doc/manuals/securing-debian-howto/index.fr.html Sécurisation]

* [http://www.debian.org/doc/manuals/debian-faq/index.fr.html Faq]

* [http://www.debian.org/releases/stable/i386/release-notes/ Notes de publication]

* [http://www.debian.org/doc/manuals/fr/debian-fr-howto/index.fr.html Utiliser et configurer Debian pour le français]

== Installation de Debian ==

Trucs et astuces sur l'installation de Debian :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1684 Installer Debian 3.1] (ghostintheshell)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2195 Installation et Sécurisation de sa Debian (part1)] (stonfi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2221 Eléments d'optimisation du partitionnement] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7139 Install debian à partir du disque dur] (transpil)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7487 (Howto) Installation de Debian Etch] (d2_racing)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=10462 Comment grub peut sauver le monde] (MisterFreez)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13009 Installer directement Debian sid, mode graphique, et lilo] (talogue)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=12674 Booter sur USB lorsque le BIOS ne le permet pas] (AnatomicJC)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14885 Créer votre live-cd/usb grace à live-helper] (yoshi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14626 (Débutant) Installation et config. d'un système graphique] (Dendrond)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7825 (How-To)Dual boot Vista Debian] (Anoyzthen)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=17111 installation debian:] (panthere)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14673 Installation chroot 32 bits transparent] (fran.b)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=19772 Script: Aide à la création pour une installation automatisée] (mistermat)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=21021 Comment j'ai testé l'ext4 sans conversion de partition] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=22056 installer debian sid en ext4 à partir de linux] (h2osiden)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23421 mount et fstab pour les nuls] (kna)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 Installer une Lenny avec debootstrap et chroot] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23255 Installation de Debian depuis clé usb (ultra-simple)] (nanard)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23693 Installation de Debian par le réseau avec PXE] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24454 Installation via clé USB et sans réseau d'une Debian testing] (Knucky)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=18898 Créer sa clé USB live lenny personnalisée] (seb-ksl)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 Installer une Lenny avec debootstrap et chroot] (lol)

=== Liens externes ===

Liens externes sur l'installation de Debian :

* [http://giminik.developpez.com/articles/debian-gnu-linux/os-installation/ giminik.developpez.com]

* [http://www.coagul.org/ www.coagul.org]

* [http://www.michauko.org/docs/debian_testing/ www.michauko.org]

* [http://wiki.debian.org/fr/DebianReleases Les différentes versions de Debian]

* [http://wiki.debian.org/fr/DebianInstall Obtenir Debian]

* [http://wiki.debian.org/fr/DebianNetworkInstall Installation par le réseau]

* [http://wiki.debian.org/fr/FromWindowsToDebian Passer de Windows à Debian]

* [http://wiki.debian.org/InstallFAQ Faq]

* [http://wiki.debian.org/fr/LennyIllustratedInstall Guide d'installation illustré]

* [http://www.osnews.com/story/2016 Installation de Debian 3.0 très détaillée]

== Juste après l'installation ==

Trucs et astuces sur la configuration de Debian juste après l'installation :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1856 Ajouter des résolutions biscornues dans son xorg.conf] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2751 Créer et redimensionner ses partitions après installation] (Damsss)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13225 (Clavier) Personnaliser son clavier] (ripat) 

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=20845 Debian deblobé facile] (cantor)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1806 (Discussion) Recompilation de son kernel] (Ashgenesis)

* [http://ashgenesis.developpez.com/linux/kernel-debian/ (Discussion) Recompilation de son kernel] (Ashgenesis)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=18271 Fixer le nommage vos partitions avec l'UUID] (kna)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24799 Choisir le nom d'un périphérique lors de son branchement] (L0u!$)

== Installation de logiciels ==

Trucs et astuces sur l'installation de logiciels :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659 Sources.list au carré ou minimaliste [MàJ 17/02/09]] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=2821 Vos logiciels préférés] (avision)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1728 Comment rester en stable tout en ayant les derniers noyaux] (Ashgenesis)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2966 Comment trouver les bons modules Debian selon votre config ?] (Korben Dallas)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13757 Gestion du fichier preferences (ébauche)] (fran.b)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1969 atp/dpkg mémo] (stonfi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1957 KDE configuration pas à pas] (gwadboy)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2224 Gestion des Paquets .deb sous Debian avec dpkg et apt-get] (dexmon)

=== Liens externes ===

Sites pour la recherche d'un logiciel :

* [http://www.debian.org/distrib/packages#view Tous la paquets officiels de Debian]

* [http://linuxappfinder.com/ linuxappfinder.com]

* [http://sourceforge.net/ sourceforge.net]

* [http://freshmeat.net/ freshmeat.net]

* [http://www.gnomefiles.org/ gnomefiles.org : logiciels GTK+]

* [http://www.gnu.org/software/ gnu.org/software/]

* [http://www.framasoft.net/ framasoft.net]

[[Utilisateur:Woj]]

[[Catégorie:Manuel]]
[[Catégorie:Installation]]</text>
      <sha1>eb2wtmsbqs6pd52afz2gto8z0x8s129</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>155</id>
      <parentid>154</parentid>
      <timestamp>2010-01-23T12:41:27Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <text xml:space="preserve" bytes="8365">{{sid}}

Projet d'un manuel d'installation. Modifications et améliorations bienvenues.

== Préparer un espace de stockage ==

* Disque dur.
** Organiser ses partitions primaires, étendues, logiques.
** Espace disque minimum, comment réduire la taille d'une partition d'un système existant pour libérer de la place.

* Stockage externe USB (clé USB, disque dur externe)
** Partitionnement, espace minimum.
** Installation classique ou live.

* Live CD.
** Réinscriptible, un live CD permet de conserver ses données d'une session à l'autre.

== Quel fichier télécharger ==

Télécharger les fichiers d'installation de debian qui correspondent à ses besoins.

=== Architecture matérielle ===

Les fichiers à télécharger sont différents pour chaque type de processeur.

* alpha : Pour les processeurs [http://fr.wikipedia.org/wiki/DEC_Alpha DEC Alpha].

* amd64 : Pour les processeurs [http://fr.wikipedia.org/wiki/AMD64 AMD64], aussi appelés [http://fr.wikipedia.org/wiki/Intel_64 Intel 64], [http://fr.wikipedia.org/wiki/X64 x64] ou encore [http://fr.wikipedia.org/wiki/X86-64 x86-64]. La grande majorité des ordinateurs personnels vendus aujourd'hui sont de ce type.

* arm : Pour les processeurs de la famille [http://fr.wikipedia.org/wiki/Architecture_ARM ARM]

* armel

* hppa

* i386 : Pour les processeurs compatibles [http://fr.wikipedia.org/wiki/X86 Intel x86]. La grande majorité des ordinateurs personnels sont de ce type.

* ia64

* mips

* mipsel

* powerpc

* sparc

* s390

=== Méthode d'installation ===

* DVD (&quot;DVD&quot; : 4,4 Go).
* CD (&quot;CD&quot; : 650 Mo).
* Clé USB (&quot;netinst&quot; : 180 Mo; &quot;businesscard&quot; : 40 Mo).
* Depuis un deuxième ordinateur relié par ethernet (&quot;mini&quot; : 10 Mo).
* Depuis son propre disque dur.

== Manuels de Debian ==

Manuels disponibles sur debian.org :

* [http://d-i.alioth.debian.org/manual/fr.i386/index.html Installation]

* [http://www.debian.org/doc/manuals/debian-reference/index.fr.html Référence]

* [http://qref.sourceforge.net/ Référence (qref.sourceforge.net)]

* [http://www.debian.org/doc/manuals/securing-debian-howto/index.fr.html Sécurisation]

* [http://www.debian.org/doc/manuals/debian-faq/index.fr.html Faq]

* [http://www.debian.org/releases/stable/i386/release-notes/ Notes de publication]

* [http://www.debian.org/doc/manuals/fr/debian-fr-howto/index.fr.html Utiliser et configurer Debian pour le français]

== Installation de Debian ==

Trucs et astuces sur l'installation de Debian :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1684 Installer Debian 3.1] (ghostintheshell)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2195 Installation et Sécurisation de sa Debian (part1)] (stonfi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2221 Eléments d'optimisation du partitionnement] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7139 Install debian à partir du disque dur] (transpil)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7487 (Howto) Installation de Debian Etch] (d2_racing)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=10462 Comment grub peut sauver le monde] (MisterFreez)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13009 Installer directement Debian sid, mode graphique, et lilo] (talogue)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=12674 Booter sur USB lorsque le BIOS ne le permet pas] (AnatomicJC)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14885 Créer votre live-cd/usb grace à live-helper] (yoshi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14626 (Débutant) Installation et config. d'un système graphique] (Dendrond)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7825 (How-To)Dual boot Vista Debian] (Anoyzthen)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=17111 installation debian:] (panthere)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14673 Installation chroot 32 bits transparent] (fran.b)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=19772 Script: Aide à la création pour une installation automatisée] (mistermat)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=21021 Comment j'ai testé l'ext4 sans conversion de partition] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=22056 installer debian sid en ext4 à partir de linux] (h2osiden)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23421 mount et fstab pour les nuls] (kna)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 Installer une Lenny avec debootstrap et chroot] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23255 Installation de Debian depuis clé usb (ultra-simple)] (nanard)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23693 Installation de Debian par le réseau avec PXE] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24454 Installation via clé USB et sans réseau d'une Debian testing] (Knucky)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=18898 Créer sa clé USB live lenny personnalisée] (seb-ksl)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 Installer une Lenny avec debootstrap et chroot] (lol)

=== Liens externes ===

Liens externes sur l'installation de Debian :

* [http://giminik.developpez.com/articles/debian-gnu-linux/os-installation/ giminik.developpez.com]

* [http://www.coagul.org/ www.coagul.org]

* [http://www.michauko.org/docs/debian_testing/ www.michauko.org]

* [http://wiki.debian.org/fr/DebianReleases Les différentes versions de Debian]

* [http://wiki.debian.org/fr/DebianInstall Obtenir Debian]

* [http://wiki.debian.org/fr/DebianNetworkInstall Installation par le réseau]

* [http://wiki.debian.org/fr/FromWindowsToDebian Passer de Windows à Debian]

* [http://wiki.debian.org/InstallFAQ Faq]

* [http://wiki.debian.org/fr/LennyIllustratedInstall Guide d'installation illustré]

* [http://www.osnews.com/story/2016 Installation de Debian 3.0 très détaillée]

== Juste après l'installation ==

Trucs et astuces sur la configuration de Debian juste après l'installation :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1856 Ajouter des résolutions biscornues dans son xorg.conf] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2751 Créer et redimensionner ses partitions après installation] (Damsss)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13225 (Clavier) Personnaliser son clavier] (ripat) 

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=20845 Debian deblobé facile] (cantor)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1806 (Discussion) Recompilation de son kernel] (Ashgenesis)

* [http://ashgenesis.developpez.com/linux/kernel-debian/ (Discussion) Recompilation de son kernel] (Ashgenesis)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=18271 Fixer le nommage vos partitions avec l'UUID] (kna)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24799 Choisir le nom d'un périphérique lors de son branchement] (L0u!$)

== Installation de logiciels ==

Trucs et astuces sur l'installation de logiciels :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659 Sources.list au carré ou minimaliste [MàJ 17/02/09]] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=2821 Vos logiciels préférés] (avision)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1728 Comment rester en stable tout en ayant les derniers noyaux] (Ashgenesis)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2966 Comment trouver les bons modules Debian selon votre config ?] (Korben Dallas)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13757 Gestion du fichier preferences (ébauche)] (fran.b)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1969 atp/dpkg mémo] (stonfi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1957 KDE configuration pas à pas] (gwadboy)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2224 Gestion des Paquets .deb sous Debian avec dpkg et apt-get] (dexmon)

=== Liens externes ===

Sites pour la recherche d'un logiciel :

* [http://www.debian.org/distrib/packages#view Tous la paquets officiels de Debian]

* [http://linuxappfinder.com/ linuxappfinder.com]

* [http://sourceforge.net/ sourceforge.net]

* [http://freshmeat.net/ freshmeat.net]

* [http://www.gnomefiles.org/ gnomefiles.org : logiciels GTK+]

* [http://www.gnu.org/software/ gnu.org/software/]

* [http://www.framasoft.net/ framasoft.net]

[[Utilisateur:Woj|Woj]]

[[Catégorie:Manuel]]
[[Catégorie:Installation]]</text>
      <sha1>lcjzofiqpf69mi1gqgr4yme6z3vtgct</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>230</id>
      <parentid>155</parentid>
      <timestamp>2010-01-24T13:01:03Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Architecture matérielle */</comment>
      <text xml:space="preserve" bytes="8424">{{sid}}

Projet d'un manuel d'installation. Modifications et améliorations bienvenues.

== Préparer un espace de stockage ==

* Disque dur.
** Organiser ses partitions primaires, étendues, logiques.
** Espace disque minimum, comment réduire la taille d'une partition d'un système existant pour libérer de la place.

* Stockage externe USB (clé USB, disque dur externe)
** Partitionnement, espace minimum.
** Installation classique ou live.

* Live CD.
** Réinscriptible, un live CD permet de conserver ses données d'une session à l'autre.

== Quel fichier télécharger ==

Télécharger les fichiers d'installation de debian qui correspondent à ses besoins.

=== Architecture matérielle ===

Les fichiers à télécharger sont différents pour chaque type de processeur.

* alpha : Pour les processeurs [http://fr.wikipedia.org/wiki/DEC_Alpha DEC Alpha].

* amd64 : Pour les processeurs [http://fr.wikipedia.org/wiki/AMD64 AMD64], aussi appelés [http://fr.wikipedia.org/wiki/Intel_64 Intel 64], [http://fr.wikipedia.org/wiki/X64 x64] ou encore [http://fr.wikipedia.org/wiki/X86-64 x86-64]. La grande majorité des ordinateurs personnels vendus aujourd'hui sont de ce type.

* arm : Pour les processeurs de la famille [http://fr.wikipedia.org/wiki/Architecture_ARM ARM]

* armel

* hppa

* i386 : Pour les processeurs compatibles [http://fr.wikipedia.org/wiki/X86 Intel x86]. La grande majorité des ordinateurs personnels sont de ce type.

* ia64 : Pour les processeurs Itanium (intel) exclusivement

* mips

* mipsel

* powerpc : Mac

* sparc

* s390

=== Méthode d'installation ===

* DVD (&quot;DVD&quot; : 4,4 Go).
* CD (&quot;CD&quot; : 650 Mo).
* Clé USB (&quot;netinst&quot; : 180 Mo; &quot;businesscard&quot; : 40 Mo).
* Depuis un deuxième ordinateur relié par ethernet (&quot;mini&quot; : 10 Mo).
* Depuis son propre disque dur.

== Manuels de Debian ==

Manuels disponibles sur debian.org :

* [http://d-i.alioth.debian.org/manual/fr.i386/index.html Installation]

* [http://www.debian.org/doc/manuals/debian-reference/index.fr.html Référence]

* [http://qref.sourceforge.net/ Référence (qref.sourceforge.net)]

* [http://www.debian.org/doc/manuals/securing-debian-howto/index.fr.html Sécurisation]

* [http://www.debian.org/doc/manuals/debian-faq/index.fr.html Faq]

* [http://www.debian.org/releases/stable/i386/release-notes/ Notes de publication]

* [http://www.debian.org/doc/manuals/fr/debian-fr-howto/index.fr.html Utiliser et configurer Debian pour le français]

== Installation de Debian ==

Trucs et astuces sur l'installation de Debian :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1684 Installer Debian 3.1] (ghostintheshell)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2195 Installation et Sécurisation de sa Debian (part1)] (stonfi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2221 Eléments d'optimisation du partitionnement] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7139 Install debian à partir du disque dur] (transpil)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7487 (Howto) Installation de Debian Etch] (d2_racing)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=10462 Comment grub peut sauver le monde] (MisterFreez)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13009 Installer directement Debian sid, mode graphique, et lilo] (talogue)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=12674 Booter sur USB lorsque le BIOS ne le permet pas] (AnatomicJC)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14885 Créer votre live-cd/usb grace à live-helper] (yoshi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14626 (Débutant) Installation et config. d'un système graphique] (Dendrond)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7825 (How-To)Dual boot Vista Debian] (Anoyzthen)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=17111 installation debian:] (panthere)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14673 Installation chroot 32 bits transparent] (fran.b)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=19772 Script: Aide à la création pour une installation automatisée] (mistermat)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=21021 Comment j'ai testé l'ext4 sans conversion de partition] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=22056 installer debian sid en ext4 à partir de linux] (h2osiden)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23421 mount et fstab pour les nuls] (kna)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 Installer une Lenny avec debootstrap et chroot] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23255 Installation de Debian depuis clé usb (ultra-simple)] (nanard)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23693 Installation de Debian par le réseau avec PXE] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24454 Installation via clé USB et sans réseau d'une Debian testing] (Knucky)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=18898 Créer sa clé USB live lenny personnalisée] (seb-ksl)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 Installer une Lenny avec debootstrap et chroot] (lol)

=== Liens externes ===

Liens externes sur l'installation de Debian :

* [http://giminik.developpez.com/articles/debian-gnu-linux/os-installation/ giminik.developpez.com]

* [http://www.coagul.org/ www.coagul.org]

* [http://www.michauko.org/docs/debian_testing/ www.michauko.org]

* [http://wiki.debian.org/fr/DebianReleases Les différentes versions de Debian]

* [http://wiki.debian.org/fr/DebianInstall Obtenir Debian]

* [http://wiki.debian.org/fr/DebianNetworkInstall Installation par le réseau]

* [http://wiki.debian.org/fr/FromWindowsToDebian Passer de Windows à Debian]

* [http://wiki.debian.org/InstallFAQ Faq]

* [http://wiki.debian.org/fr/LennyIllustratedInstall Guide d'installation illustré]

* [http://www.osnews.com/story/2016 Installation de Debian 3.0 très détaillée]

== Juste après l'installation ==

Trucs et astuces sur la configuration de Debian juste après l'installation :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1856 Ajouter des résolutions biscornues dans son xorg.conf] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2751 Créer et redimensionner ses partitions après installation] (Damsss)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13225 (Clavier) Personnaliser son clavier] (ripat) 

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=20845 Debian deblobé facile] (cantor)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1806 (Discussion) Recompilation de son kernel] (Ashgenesis)

* [http://ashgenesis.developpez.com/linux/kernel-debian/ (Discussion) Recompilation de son kernel] (Ashgenesis)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=18271 Fixer le nommage vos partitions avec l'UUID] (kna)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24799 Choisir le nom d'un périphérique lors de son branchement] (L0u!$)

== Installation de logiciels ==

Trucs et astuces sur l'installation de logiciels :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659 Sources.list au carré ou minimaliste [MàJ 17/02/09]] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=2821 Vos logiciels préférés] (avision)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1728 Comment rester en stable tout en ayant les derniers noyaux] (Ashgenesis)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2966 Comment trouver les bons modules Debian selon votre config ?] (Korben Dallas)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13757 Gestion du fichier preferences (ébauche)] (fran.b)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1969 atp/dpkg mémo] (stonfi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1957 KDE configuration pas à pas] (gwadboy)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2224 Gestion des Paquets .deb sous Debian avec dpkg et apt-get] (dexmon)

=== Liens externes ===

Sites pour la recherche d'un logiciel :

* [http://www.debian.org/distrib/packages#view Tous la paquets officiels de Debian]

* [http://linuxappfinder.com/ linuxappfinder.com]

* [http://sourceforge.net/ sourceforge.net]

* [http://freshmeat.net/ freshmeat.net]

* [http://www.gnomefiles.org/ gnomefiles.org : logiciels GTK+]

* [http://www.gnu.org/software/ gnu.org/software/]

* [http://www.framasoft.net/ framasoft.net]

[[Utilisateur:Woj|Woj]]

[[Catégorie:Manuel]]
[[Catégorie:Installation]]</text>
      <sha1>sxn0r5rg6yp4vlux7ygc10o63c5vmki</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>231</id>
      <parentid>230</parentid>
      <timestamp>2010-01-24T13:02:16Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Préparer un espace de stockage */</comment>
      <text xml:space="preserve" bytes="8432">{{sid}}

Projet d'un manuel d'installation. Modifications et améliorations bienvenues.

== Préparer un espace de stockage ==

* Disque dur.
** Organiser ses partitions primaires, primaire étendue, logiques.
** Espace disque minimum, comment réduire la taille d'une partition d'un système existant pour libérer de la place.

* Stockage externe USB (clé USB, disque dur externe)
** Partitionnement, espace minimum.
** Installation classique ou live.

* Live CD.
** Réinscriptible, un live CD permet de conserver ses données d'une session à l'autre.

== Quel fichier télécharger ==

Télécharger les fichiers d'installation de debian qui correspondent à ses besoins.

=== Architecture matérielle ===

Les fichiers à télécharger sont différents pour chaque type de processeur.

* alpha : Pour les processeurs [http://fr.wikipedia.org/wiki/DEC_Alpha DEC Alpha].

* amd64 : Pour les processeurs [http://fr.wikipedia.org/wiki/AMD64 AMD64], aussi appelés [http://fr.wikipedia.org/wiki/Intel_64 Intel 64], [http://fr.wikipedia.org/wiki/X64 x64] ou encore [http://fr.wikipedia.org/wiki/X86-64 x86-64]. La grande majorité des ordinateurs personnels vendus aujourd'hui sont de ce type.

* arm : Pour les processeurs de la famille [http://fr.wikipedia.org/wiki/Architecture_ARM ARM]

* armel

* hppa

* i386 : Pour les processeurs compatibles [http://fr.wikipedia.org/wiki/X86 Intel x86]. La grande majorité des ordinateurs personnels sont de ce type.

* ia64 : Pour les processeurs Itanium (intel) exclusivement

* mips

* mipsel

* powerpc : Mac

* sparc

* s390

=== Méthode d'installation ===

* DVD (&quot;DVD&quot; : 4,4 Go).
* CD (&quot;CD&quot; : 650 Mo).
* Clé USB (&quot;netinst&quot; : 180 Mo; &quot;businesscard&quot; : 40 Mo).
* Depuis un deuxième ordinateur relié par ethernet (&quot;mini&quot; : 10 Mo).
* Depuis son propre disque dur.

== Manuels de Debian ==

Manuels disponibles sur debian.org :

* [http://d-i.alioth.debian.org/manual/fr.i386/index.html Installation]

* [http://www.debian.org/doc/manuals/debian-reference/index.fr.html Référence]

* [http://qref.sourceforge.net/ Référence (qref.sourceforge.net)]

* [http://www.debian.org/doc/manuals/securing-debian-howto/index.fr.html Sécurisation]

* [http://www.debian.org/doc/manuals/debian-faq/index.fr.html Faq]

* [http://www.debian.org/releases/stable/i386/release-notes/ Notes de publication]

* [http://www.debian.org/doc/manuals/fr/debian-fr-howto/index.fr.html Utiliser et configurer Debian pour le français]

== Installation de Debian ==

Trucs et astuces sur l'installation de Debian :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1684 Installer Debian 3.1] (ghostintheshell)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2195 Installation et Sécurisation de sa Debian (part1)] (stonfi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2221 Eléments d'optimisation du partitionnement] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7139 Install debian à partir du disque dur] (transpil)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7487 (Howto) Installation de Debian Etch] (d2_racing)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=10462 Comment grub peut sauver le monde] (MisterFreez)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13009 Installer directement Debian sid, mode graphique, et lilo] (talogue)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=12674 Booter sur USB lorsque le BIOS ne le permet pas] (AnatomicJC)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14885 Créer votre live-cd/usb grace à live-helper] (yoshi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14626 (Débutant) Installation et config. d'un système graphique] (Dendrond)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7825 (How-To)Dual boot Vista Debian] (Anoyzthen)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=17111 installation debian:] (panthere)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14673 Installation chroot 32 bits transparent] (fran.b)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=19772 Script: Aide à la création pour une installation automatisée] (mistermat)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=21021 Comment j'ai testé l'ext4 sans conversion de partition] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=22056 installer debian sid en ext4 à partir de linux] (h2osiden)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23421 mount et fstab pour les nuls] (kna)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 Installer une Lenny avec debootstrap et chroot] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23255 Installation de Debian depuis clé usb (ultra-simple)] (nanard)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23693 Installation de Debian par le réseau avec PXE] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24454 Installation via clé USB et sans réseau d'une Debian testing] (Knucky)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=18898 Créer sa clé USB live lenny personnalisée] (seb-ksl)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 Installer une Lenny avec debootstrap et chroot] (lol)

=== Liens externes ===

Liens externes sur l'installation de Debian :

* [http://giminik.developpez.com/articles/debian-gnu-linux/os-installation/ giminik.developpez.com]

* [http://www.coagul.org/ www.coagul.org]

* [http://www.michauko.org/docs/debian_testing/ www.michauko.org]

* [http://wiki.debian.org/fr/DebianReleases Les différentes versions de Debian]

* [http://wiki.debian.org/fr/DebianInstall Obtenir Debian]

* [http://wiki.debian.org/fr/DebianNetworkInstall Installation par le réseau]

* [http://wiki.debian.org/fr/FromWindowsToDebian Passer de Windows à Debian]

* [http://wiki.debian.org/InstallFAQ Faq]

* [http://wiki.debian.org/fr/LennyIllustratedInstall Guide d'installation illustré]

* [http://www.osnews.com/story/2016 Installation de Debian 3.0 très détaillée]

== Juste après l'installation ==

Trucs et astuces sur la configuration de Debian juste après l'installation :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1856 Ajouter des résolutions biscornues dans son xorg.conf] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2751 Créer et redimensionner ses partitions après installation] (Damsss)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13225 (Clavier) Personnaliser son clavier] (ripat) 

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=20845 Debian deblobé facile] (cantor)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1806 (Discussion) Recompilation de son kernel] (Ashgenesis)

* [http://ashgenesis.developpez.com/linux/kernel-debian/ (Discussion) Recompilation de son kernel] (Ashgenesis)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=18271 Fixer le nommage vos partitions avec l'UUID] (kna)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24799 Choisir le nom d'un périphérique lors de son branchement] (L0u!$)

== Installation de logiciels ==

Trucs et astuces sur l'installation de logiciels :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659 Sources.list au carré ou minimaliste [MàJ 17/02/09]] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=2821 Vos logiciels préférés] (avision)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1728 Comment rester en stable tout en ayant les derniers noyaux] (Ashgenesis)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2966 Comment trouver les bons modules Debian selon votre config ?] (Korben Dallas)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13757 Gestion du fichier preferences (ébauche)] (fran.b)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1969 atp/dpkg mémo] (stonfi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1957 KDE configuration pas à pas] (gwadboy)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2224 Gestion des Paquets .deb sous Debian avec dpkg et apt-get] (dexmon)

=== Liens externes ===

Sites pour la recherche d'un logiciel :

* [http://www.debian.org/distrib/packages#view Tous la paquets officiels de Debian]

* [http://linuxappfinder.com/ linuxappfinder.com]

* [http://sourceforge.net/ sourceforge.net]

* [http://freshmeat.net/ freshmeat.net]

* [http://www.gnomefiles.org/ gnomefiles.org : logiciels GTK+]

* [http://www.gnu.org/software/ gnu.org/software/]

* [http://www.framasoft.net/ framasoft.net]

[[Utilisateur:Woj|Woj]]

[[Catégorie:Manuel]]
[[Catégorie:Installation]]</text>
      <sha1>pgi8ahpn3zwqttfgwpiemnzq0akujij</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>771</id>
      <parentid>231</parentid>
      <timestamp>2010-02-02T19:03:51Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="8472">{{sid}}

Projet d'un manuel d'installation. Modifications et améliorations bienvenues.

== Préparer un espace de stockage ==

* Disque dur.
** Organiser ses partitions primaires, primaire étendue, logiques.
** Espace disque minimum, comment réduire la taille d'une partition d'un système existant pour libérer de la place.

* Stockage externe [[Glossaire#USB|USB]] (clé USB, disque dur externe)
** Partitionnement, espace minimum.
** Installation classique ou live.

* [[Glossaire#Live CD|Live CD]].
** Réinscriptible, un live CD permet de conserver ses données d'une session à l'autre.

== Quel fichier télécharger ==

Télécharger les fichiers d'installation de debian qui correspondent à ses besoins.

=== Architecture matérielle ===

Les fichiers à télécharger sont différents pour chaque type de processeur.

* alpha : Pour les processeurs [http://fr.wikipedia.org/wiki/DEC_Alpha DEC Alpha].

* amd64 : Pour les processeurs [http://fr.wikipedia.org/wiki/AMD64 AMD64], aussi appelés [http://fr.wikipedia.org/wiki/Intel_64 Intel 64], [http://fr.wikipedia.org/wiki/X64 x64] ou encore [http://fr.wikipedia.org/wiki/X86-64 x86-64]. La grande majorité des ordinateurs personnels vendus aujourd'hui sont de ce type.

* arm : Pour les processeurs de la famille [http://fr.wikipedia.org/wiki/Architecture_ARM ARM]

* armel

* hppa

* i386 : Pour les processeurs compatibles [http://fr.wikipedia.org/wiki/X86 Intel x86]. La grande majorité des ordinateurs personnels sont de ce type.

* ia64 : Pour les processeurs Itanium (intel) exclusivement

* mips

* mipsel

* powerpc : Mac

* sparc

* s390

=== Méthode d'installation ===

* DVD (&quot;DVD&quot; : 4,4 Go).
* CD (&quot;CD&quot; : 650 Mo).
* Clé USB (&quot;netinst&quot; : 180 Mo; &quot;businesscard&quot; : 40 Mo).
* Depuis un deuxième ordinateur relié par ethernet (&quot;mini&quot; : 10 Mo).
* Depuis son propre disque dur.

== Manuels de Debian ==

Manuels disponibles sur debian.org :

* [http://d-i.alioth.debian.org/manual/fr.i386/index.html Installation]

* [http://www.debian.org/doc/manuals/debian-reference/index.fr.html Référence]

* [http://qref.sourceforge.net/ Référence (qref.sourceforge.net)]

* [http://www.debian.org/doc/manuals/securing-debian-howto/index.fr.html Sécurisation]

* [http://www.debian.org/doc/manuals/debian-faq/index.fr.html Faq]

* [http://www.debian.org/releases/stable/i386/release-notes/ Notes de publication]

* [http://www.debian.org/doc/manuals/fr/debian-fr-howto/index.fr.html Utiliser et configurer Debian pour le français]

== Installation de Debian ==

Trucs et astuces sur l'installation de Debian :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1684 Installer Debian 3.1] (ghostintheshell)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2195 Installation et Sécurisation de sa Debian (part1)] (stonfi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2221 Eléments d'optimisation du partitionnement] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7139 Install debian à partir du disque dur] (transpil)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7487 (Howto) Installation de Debian Etch] (d2_racing)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=10462 Comment grub peut sauver le monde] (MisterFreez)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13009 Installer directement Debian sid, mode graphique, et lilo] (talogue)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=12674 Booter sur USB lorsque le BIOS ne le permet pas] (AnatomicJC)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14885 Créer votre live-cd/usb grace à live-helper] (yoshi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14626 (Débutant) Installation et config. d'un système graphique] (Dendrond)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7825 (How-To)Dual boot Vista Debian] (Anoyzthen)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=17111 installation debian:] (panthere)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14673 Installation chroot 32 bits transparent] (fran.b)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=19772 Script: Aide à la création pour une installation automatisée] (mistermat)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=21021 Comment j'ai testé l'ext4 sans conversion de partition] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=22056 installer debian sid en ext4 à partir de linux] (h2osiden)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23421 mount et fstab pour les nuls] (kna)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 Installer une Lenny avec debootstrap et chroot] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23255 Installation de Debian depuis clé usb (ultra-simple)] (nanard)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23693 Installation de Debian par le réseau avec PXE] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24454 Installation via clé USB et sans réseau d'une Debian testing] (Knucky)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=18898 Créer sa clé USB live lenny personnalisée] (seb-ksl)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 Installer une Lenny avec debootstrap et chroot] (lol)

=== Liens externes ===

Liens externes sur l'installation de Debian :

* [http://giminik.developpez.com/articles/debian-gnu-linux/os-installation/ giminik.developpez.com]

* [http://www.coagul.org/ www.coagul.org]

* [http://www.michauko.org/docs/debian_testing/ www.michauko.org]

* [http://wiki.debian.org/fr/DebianReleases Les différentes versions de Debian]

* [http://wiki.debian.org/fr/DebianInstall Obtenir Debian]

* [http://wiki.debian.org/fr/DebianNetworkInstall Installation par le réseau]

* [http://wiki.debian.org/fr/FromWindowsToDebian Passer de Windows à Debian]

* [http://wiki.debian.org/InstallFAQ Faq]

* [http://wiki.debian.org/fr/LennyIllustratedInstall Guide d'installation illustré]

* [http://www.osnews.com/story/2016 Installation de Debian 3.0 très détaillée]

== Juste après l'installation ==

Trucs et astuces sur la configuration de Debian juste après l'installation :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1856 Ajouter des résolutions biscornues dans son xorg.conf] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2751 Créer et redimensionner ses partitions après installation] (Damsss)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13225 (Clavier) Personnaliser son clavier] (ripat) 

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=20845 Debian deblobé facile] (cantor)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1806 (Discussion) Recompilation de son kernel] (Ashgenesis)

* [http://ashgenesis.developpez.com/linux/kernel-debian/ (Discussion) Recompilation de son kernel] (Ashgenesis)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=18271 Fixer le nommage vos partitions avec l'UUID] (kna)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24799 Choisir le nom d'un périphérique lors de son branchement] (L0u!$)

== Installation de logiciels ==

Trucs et astuces sur l'installation de logiciels :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659 Sources.list au carré ou minimaliste [MàJ 17/02/09]] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=2821 Vos logiciels préférés] (avision)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1728 Comment rester en stable tout en ayant les derniers noyaux] (Ashgenesis)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2966 Comment trouver les bons modules Debian selon votre config ?] (Korben Dallas)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13757 Gestion du fichier preferences (ébauche)] (fran.b)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1969 atp/dpkg mémo] (stonfi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1957 KDE configuration pas à pas] (gwadboy)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2224 Gestion des Paquets .deb sous Debian avec dpkg et apt-get] (dexmon)

=== Liens externes ===

Sites pour la recherche d'un logiciel :

* [http://www.debian.org/distrib/packages#view Tous la paquets officiels de Debian]

* [http://linuxappfinder.com/ linuxappfinder.com]

* [http://sourceforge.net/ sourceforge.net]

* [http://freshmeat.net/ freshmeat.net]

* [http://www.gnomefiles.org/ gnomefiles.org : logiciels GTK+]

* [http://www.gnu.org/software/ gnu.org/software/]

* [http://www.framasoft.net/ framasoft.net]

[[Utilisateur:Woj|Woj]]

[[Catégorie:Manuel]]
[[Catégorie:Installation]]</text>
      <sha1>dvotjpl9qn8mzc94qcgtmtwkbrlcz5i</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>773</id>
      <parentid>771</parentid>
      <timestamp>2010-02-02T19:25:36Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="8490">{{sid}}

Projet d'un manuel d'installation. Modifications et améliorations bienvenues.

== Préparer un espace de stockage ==

* Disque dur.
** Organiser ses partitions primaires, primaire étendue, logiques.
** Espace disque minimum, comment réduire la taille d'une partition d'un système existant pour libérer de la place.

* Stockage externe [[Glossaire#USB|USB]] (clé USB, disque dur externe)
** Partitionnement, espace minimum.
** Installation classique ou live.

* [[Glossaire#Live CD|Live CD]].
** Réinscriptible, un live CD permet de conserver ses données d'une session à l'autre.

== Quel fichier télécharger ==

Télécharger les fichiers d'installation de debian qui correspondent à ses besoins.

=== Architecture matérielle ===

Les fichiers à télécharger sont différents pour chaque type de processeur.

* alpha : Pour les processeurs [http://fr.wikipedia.org/wiki/DEC_Alpha DEC Alpha].

* amd64 : Pour les processeurs [http://fr.wikipedia.org/wiki/AMD64 AMD64], aussi appelés [http://fr.wikipedia.org/wiki/Intel_64 Intel 64], [http://fr.wikipedia.org/wiki/X64 x64] ou encore [http://fr.wikipedia.org/wiki/X86-64 x86-64]. La grande majorité des ordinateurs personnels vendus aujourd'hui sont de ce type.

* arm : Pour les processeurs de la famille [http://fr.wikipedia.org/wiki/Architecture_ARM ARM]

* armel

* hppa

* i386 : Pour les processeurs compatibles [http://fr.wikipedia.org/wiki/X86 Intel x86]. La grande majorité des ordinateurs personnels sont de ce type.

* ia64 : Pour les processeurs Itanium (intel) exclusivement

* mips

* mipsel

* powerpc : Mac

* sparc

* s390

=== Méthode d'installation ===

* [[Glossaire#DVD|DVD]] (&quot;DVD&quot; : 4,4 Go).
* CD (&quot;CD&quot; : 650 Mo).
* Clé USB (&quot;netinst&quot; : 180 Mo; &quot;businesscard&quot; : 40 Mo).
* Depuis un deuxième ordinateur relié par ethernet (&quot;mini&quot; : 10 Mo).
* Depuis son propre disque dur.

== Manuels de Debian ==

Manuels disponibles sur debian.org :

* [http://d-i.alioth.debian.org/manual/fr.i386/index.html Installation]

* [http://www.debian.org/doc/manuals/debian-reference/index.fr.html Référence]

* [http://qref.sourceforge.net/ Référence (qref.sourceforge.net)]

* [http://www.debian.org/doc/manuals/securing-debian-howto/index.fr.html Sécurisation]

* [http://www.debian.org/doc/manuals/debian-faq/index.fr.html Faq]

* [http://www.debian.org/releases/stable/i386/release-notes/ Notes de publication]

* [http://www.debian.org/doc/manuals/fr/debian-fr-howto/index.fr.html Utiliser et configurer Debian pour le français]

== Installation de Debian ==

Trucs et astuces sur l'installation de Debian :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1684 Installer Debian 3.1] (ghostintheshell)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2195 Installation et Sécurisation de sa Debian (part1)] (stonfi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2221 Eléments d'optimisation du partitionnement] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7139 Install debian à partir du disque dur] (transpil)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7487 (Howto) Installation de Debian Etch] (d2_racing)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=10462 Comment grub peut sauver le monde] (MisterFreez)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13009 Installer directement Debian sid, mode graphique, et lilo] (talogue)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=12674 Booter sur USB lorsque le BIOS ne le permet pas] (AnatomicJC)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14885 Créer votre live-cd/usb grace à live-helper] (yoshi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14626 (Débutant) Installation et config. d'un système graphique] (Dendrond)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7825 (How-To)Dual boot Vista Debian] (Anoyzthen)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=17111 installation debian:] (panthere)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14673 Installation chroot 32 bits transparent] (fran.b)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=19772 Script: Aide à la création pour une installation automatisée] (mistermat)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=21021 Comment j'ai testé l'ext4 sans conversion de partition] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=22056 installer debian sid en ext4 à partir de linux] (h2osiden)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23421 mount et fstab pour les nuls] (kna)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 Installer une Lenny avec debootstrap et chroot] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23255 Installation de Debian depuis clé usb (ultra-simple)] (nanard)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23693 Installation de Debian par le réseau avec PXE] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24454 Installation via clé USB et sans réseau d'une Debian testing] (Knucky)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=18898 Créer sa clé USB live lenny personnalisée] (seb-ksl)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 Installer une Lenny avec debootstrap et chroot] (lol)

=== Liens externes ===

Liens externes sur l'installation de Debian :

* [http://giminik.developpez.com/articles/debian-gnu-linux/os-installation/ giminik.developpez.com]

* [http://www.coagul.org/ www.coagul.org]

* [http://www.michauko.org/docs/debian_testing/ www.michauko.org]

* [http://wiki.debian.org/fr/DebianReleases Les différentes versions de Debian]

* [http://wiki.debian.org/fr/DebianInstall Obtenir Debian]

* [http://wiki.debian.org/fr/DebianNetworkInstall Installation par le réseau]

* [http://wiki.debian.org/fr/FromWindowsToDebian Passer de Windows à Debian]

* [http://wiki.debian.org/InstallFAQ Faq]

* [http://wiki.debian.org/fr/LennyIllustratedInstall Guide d'installation illustré]

* [http://www.osnews.com/story/2016 Installation de Debian 3.0 très détaillée]

== Juste après l'installation ==

Trucs et astuces sur la configuration de Debian juste après l'installation :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1856 Ajouter des résolutions biscornues dans son xorg.conf] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2751 Créer et redimensionner ses partitions après installation] (Damsss)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13225 (Clavier) Personnaliser son clavier] (ripat) 

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=20845 Debian deblobé facile] (cantor)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1806 (Discussion) Recompilation de son kernel] (Ashgenesis)

* [http://ashgenesis.developpez.com/linux/kernel-debian/ (Discussion) Recompilation de son kernel] (Ashgenesis)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=18271 Fixer le nommage vos partitions avec l'UUID] (kna)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24799 Choisir le nom d'un périphérique lors de son branchement] (L0u!$)

== Installation de logiciels ==

Trucs et astuces sur l'installation de logiciels :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659 Sources.list au carré ou minimaliste [MàJ 17/02/09]] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=2821 Vos logiciels préférés] (avision)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1728 Comment rester en stable tout en ayant les derniers noyaux] (Ashgenesis)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2966 Comment trouver les bons modules Debian selon votre config ?] (Korben Dallas)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13757 Gestion du fichier preferences (ébauche)] (fran.b)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1969 atp/dpkg mémo] (stonfi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1957 KDE configuration pas à pas] (gwadboy)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2224 Gestion des Paquets .deb sous Debian avec dpkg et apt-get] (dexmon)

=== Liens externes ===

Sites pour la recherche d'un logiciel :

* [http://www.debian.org/distrib/packages#view Tous la paquets officiels de Debian]

* [http://linuxappfinder.com/ linuxappfinder.com]

* [http://sourceforge.net/ sourceforge.net]

* [http://freshmeat.net/ freshmeat.net]

* [http://www.gnomefiles.org/ gnomefiles.org : logiciels GTK+]

* [http://www.gnu.org/software/ gnu.org/software/]

* [http://www.framasoft.net/ framasoft.net]

[[Utilisateur:Woj|Woj]]

[[Catégorie:Manuel]]
[[Catégorie:Installation]]</text>
      <sha1>moak76sm7op8ori2ydxickp2c4tungc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1127</id>
      <parentid>773</parentid>
      <timestamp>2010-03-11T19:31:53Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <text xml:space="preserve" bytes="8723">{{sid}}

Projet d'un manuel d'installation. Modifications et améliorations bienvenues.

== Préparer un espace de stockage ==

* Disque dur.
** Organiser ses partitions primaires, primaire étendue, logiques.
** Espace disque minimum, comment réduire la taille d'une partition d'un système existant pour libérer de la place.

* Stockage externe [[Glossaire#USB|USB]] (clé USB, disque dur externe)
** Partitionnement, espace minimum.
** Installation classique ou live.

* [[Glossaire#Live CD|Live CD]].
** Devrait être gravé sur un réinscriptible (RW), un live CD permet de ne pas installer le système sur l'ordinateur hôte et pour certains de conserver ses données d'une session à l'autre.

== Quel fichier télécharger ==

Télécharger les fichiers d'installation de Debian qui correspondent à ses besoins.

=== Architecture matérielle ===

Les fichiers à télécharger sont différents pour chaque type de processeur.

* alpha : Pour les processeurs [http://fr.wikipedia.org/wiki/DEC_Alpha DEC Alpha].

* amd64 : Pour les processeurs [http://fr.wikipedia.org/wiki/AMD64 AMD64], aussi appelés [http://fr.wikipedia.org/wiki/Intel_64 Intel 64], [http://fr.wikipedia.org/wiki/X64 x64] ou encore [http://fr.wikipedia.org/wiki/X86-64 x86-64]. La grande majorité des ordinateurs personnels vendus aujourd'hui sont de ce type.

* arm : Pour les processeurs de la famille [http://fr.wikipedia.org/wiki/Architecture_ARM ARM]

* armel

* hppa

* i386 : Pour les processeurs compatibles [http://fr.wikipedia.org/wiki/X86 Intel x86]. La grande majorité des ordinateurs personnels sont de ce type.

* ia64 : Pour les processeurs Itanium (intel) exclusivement

* mips

* mipsel

* powerpc : Mac

* sparc

* s390

=== Méthode d'installation ===

* [[Glossaire#DVD|DVD]] (&quot;DVD&quot; : 4,4 Go).
* CD (&quot;CD&quot; : 650 Mo).
* Clé USB (&quot;netinst&quot; : 180 Mo; &quot;businesscard&quot; : 40 Mo).
* Depuis un deuxième ordinateur relié par ethernet (&quot;mini&quot; : 10 Mo).
* Depuis son propre disque dur.

== Manuels de Debian ==

Manuels disponibles sur debian.org :

* [http://d-i.alioth.debian.org/manual/fr.i386/index.html Installation]

* [http://www.debian.org/doc/manuals/debian-reference/index.fr.html Référence]

* [http://qref.sourceforge.net/ Référence (qref.sourceforge.net)]

* [http://www.debian.org/doc/manuals/securing-debian-howto/index.fr.html Sécurisation]

* [http://www.debian.org/doc/manuals/debian-faq/index.fr.html Faq]

* [http://www.debian.org/releases/stable/i386/release-notes/ Notes de publication]

* [http://www.debian.org/doc/manuals/fr/debian-fr-howto/index.fr.html Utiliser et configurer Debian pour le français]

== Installation de Debian ==

Trucs et astuces sur l'installation de Debian :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1684 Installer Debian 3.1] (ghostintheshell)
    *  Live CD.
          o Réinscriptible, un live CD permet de conserver ses données d'une session à l'autre. 

[modifier] 
* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2195 Installation et Sécurisation de sa Debian (part1)] (stonfi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2221 Eléments d'optimisation du partitionnement] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7139 Install debian à partir du disque dur] (transpil)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7487 (Howto) Installation de Debian Etch] (d2_racing)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=10462 Comment grub peut sauver le monde] (MisterFreez)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13009 Installer directement Debian sid, mode graphique, et lilo] (talogue)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=12674 Booter sur USB lorsque le BIOS ne le permet pas] (AnatomicJC)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14885 Créer votre live-cd/usb grace à live-helper] (yoshi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14626 (Débutant) Installation et config. d'un système graphique] (Dendrond)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7825 (How-To)Dual boot Vista Debian] (Anoyzthen)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=17111 installation debian:] (panthere)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14673 Installation chroot 32 bits transparent] (fran.b)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=19772 Script: Aide à la création pour une installation automatisée] (mistermat)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=21021 Comment j'ai testé l'ext4 sans conversion de partition] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=22056 installer debian sid en ext4 à partir de linux] (h2osiden)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23421 mount et fstab pour les nuls] (kna)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 Installer une Lenny avec debootstrap et chroot] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23255 Installation de Debian depuis clé usb (ultra-simple)] (nanard)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23693 Installation de Debian par le réseau avec PXE] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24454 Installation via clé USB et sans réseau d'une Debian testing] (Knucky)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=18898 Créer sa clé USB live lenny personnalisée] (seb-ksl)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 Installer une Lenny avec debootstrap et chroot] (lol)

=== Liens externes ===

Liens externes sur l'installation de Debian :

* [http://giminik.developpez.com/articles/debian-gnu-linux/os-installation/ giminik.developpez.com]

* [http://www.coagul.org/ www.coagul.org]

* [http://www.michauko.org/docs/debian_testing/ www.michauko.org]

* [http://wiki.debian.org/fr/DebianReleases Les différentes versions de Debian]

* [http://wiki.debian.org/fr/DebianInstall Obtenir Debian]

* [http://wiki.debian.org/fr/DebianNetworkInstall Installation par le réseau]

* [http://wiki.debian.org/fr/FromWindowsToDebian Passer de Windows à Debian]

* [http://wiki.debian.org/InstallFAQ Faq]

* [http://wiki.debian.org/fr/LennyIllustratedInstall Guide d'installation illustré]

* [http://www.osnews.com/story/2016 Installation de Debian 3.0 très détaillée]

== Juste après l'installation ==

Trucs et astuces sur la configuration de Debian juste après l'installation :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1856 Ajouter des résolutions biscornues dans son xorg.conf] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2751 Créer et redimensionner ses partitions après installation] (Damsss)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13225 (Clavier) Personnaliser son clavier] (ripat) 

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=20845 Debian deblobé facile] (cantor)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1806 (Discussion) Recompilation de son kernel] (Ashgenesis)

* [http://ashgenesis.developpez.com/linux/kernel-debian/ (Discussion) Recompilation de son kernel] (Ashgenesis)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=18271 Fixer le nommage vos partitions avec l'UUID] (kna)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24799 Choisir le nom d'un périphérique lors de son branchement] (L0u!$)

== Installation de logiciels ==

Trucs et astuces sur l'installation de logiciels :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659 Sources.list au carré ou minimaliste [MàJ 17/02/09]] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=2821 Vos logiciels préférés] (avision)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1728 Comment rester en stable tout en ayant les derniers noyaux] (Ashgenesis)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2966 Comment trouver les bons modules Debian selon votre config ?] (Korben Dallas)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13757 Gestion du fichier preferences (ébauche)] (fran.b)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1969 atp/dpkg mémo] (stonfi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1957 KDE configuration pas à pas] (gwadboy)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2224 Gestion des Paquets .deb sous Debian avec dpkg et apt-get] (dexmon)

=== Liens externes ===

Sites pour la recherche d'un logiciel :

* [http://www.debian.org/distrib/packages#view Tous la paquets officiels de Debian]

* [http://linuxappfinder.com/ linuxappfinder.com]

* [http://sourceforge.net/ sourceforge.net]

* [http://freshmeat.net/ freshmeat.net]

* [http://www.gnomefiles.org/ gnomefiles.org : logiciels GTK+]

* [http://www.gnu.org/software/ gnu.org/software/]

* [http://www.framasoft.net/ framasoft.net]

[[Utilisateur:Woj|Woj]]

[[Catégorie:Manuel]]
[[Catégorie:Installation]]</text>
      <sha1>i4fsggnf7scexgab0glr11dsf6a11in</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1614</id>
      <parentid>1127</parentid>
      <timestamp>2010-07-05T07:56:20Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="8767">#REDIRECT [[isalo:Manuel_d%27installation]]
{{sid}}

Projet d'un manuel d'installation. Modifications et améliorations bienvenues.

== Préparer un espace de stockage ==

* Disque dur.
** Organiser ses partitions primaires, primaire étendue, logiques.
** Espace disque minimum, comment réduire la taille d'une partition d'un système existant pour libérer de la place.

* Stockage externe [[Glossaire#USB|USB]] (clé USB, disque dur externe)
** Partitionnement, espace minimum.
** Installation classique ou live.

* [[Glossaire#Live CD|Live CD]].
** Devrait être gravé sur un réinscriptible (RW), un live CD permet de ne pas installer le système sur l'ordinateur hôte et pour certains de conserver ses données d'une session à l'autre.

== Quel fichier télécharger ==

Télécharger les fichiers d'installation de Debian qui correspondent à ses besoins.

=== Architecture matérielle ===

Les fichiers à télécharger sont différents pour chaque type de processeur.

* alpha : Pour les processeurs [http://fr.wikipedia.org/wiki/DEC_Alpha DEC Alpha].

* amd64 : Pour les processeurs [http://fr.wikipedia.org/wiki/AMD64 AMD64], aussi appelés [http://fr.wikipedia.org/wiki/Intel_64 Intel 64], [http://fr.wikipedia.org/wiki/X64 x64] ou encore [http://fr.wikipedia.org/wiki/X86-64 x86-64]. La grande majorité des ordinateurs personnels vendus aujourd'hui sont de ce type.

* arm : Pour les processeurs de la famille [http://fr.wikipedia.org/wiki/Architecture_ARM ARM]

* armel

* hppa

* i386 : Pour les processeurs compatibles [http://fr.wikipedia.org/wiki/X86 Intel x86]. La grande majorité des ordinateurs personnels sont de ce type.

* ia64 : Pour les processeurs Itanium (intel) exclusivement

* mips

* mipsel

* powerpc : Mac

* sparc

* s390

=== Méthode d'installation ===

* [[Glossaire#DVD|DVD]] (&quot;DVD&quot; : 4,4 Go).
* CD (&quot;CD&quot; : 650 Mo).
* Clé USB (&quot;netinst&quot; : 180 Mo; &quot;businesscard&quot; : 40 Mo).
* Depuis un deuxième ordinateur relié par ethernet (&quot;mini&quot; : 10 Mo).
* Depuis son propre disque dur.

== Manuels de Debian ==

Manuels disponibles sur debian.org :

* [http://d-i.alioth.debian.org/manual/fr.i386/index.html Installation]

* [http://www.debian.org/doc/manuals/debian-reference/index.fr.html Référence]

* [http://qref.sourceforge.net/ Référence (qref.sourceforge.net)]

* [http://www.debian.org/doc/manuals/securing-debian-howto/index.fr.html Sécurisation]

* [http://www.debian.org/doc/manuals/debian-faq/index.fr.html Faq]

* [http://www.debian.org/releases/stable/i386/release-notes/ Notes de publication]

* [http://www.debian.org/doc/manuals/fr/debian-fr-howto/index.fr.html Utiliser et configurer Debian pour le français]

== Installation de Debian ==

Trucs et astuces sur l'installation de Debian :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1684 Installer Debian 3.1] (ghostintheshell)
    *  Live CD.
          o Réinscriptible, un live CD permet de conserver ses données d'une session à l'autre. 

[modifier] 
* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2195 Installation et Sécurisation de sa Debian (part1)] (stonfi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2221 Eléments d'optimisation du partitionnement] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7139 Install debian à partir du disque dur] (transpil)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7487 (Howto) Installation de Debian Etch] (d2_racing)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=10462 Comment grub peut sauver le monde] (MisterFreez)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13009 Installer directement Debian sid, mode graphique, et lilo] (talogue)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=12674 Booter sur USB lorsque le BIOS ne le permet pas] (AnatomicJC)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14885 Créer votre live-cd/usb grace à live-helper] (yoshi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14626 (Débutant) Installation et config. d'un système graphique] (Dendrond)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7825 (How-To)Dual boot Vista Debian] (Anoyzthen)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=17111 installation debian:] (panthere)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14673 Installation chroot 32 bits transparent] (fran.b)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=19772 Script: Aide à la création pour une installation automatisée] (mistermat)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=21021 Comment j'ai testé l'ext4 sans conversion de partition] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=22056 installer debian sid en ext4 à partir de linux] (h2osiden)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23421 mount et fstab pour les nuls] (kna)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 Installer une Lenny avec debootstrap et chroot] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23255 Installation de Debian depuis clé usb (ultra-simple)] (nanard)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23693 Installation de Debian par le réseau avec PXE] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24454 Installation via clé USB et sans réseau d'une Debian testing] (Knucky)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=18898 Créer sa clé USB live lenny personnalisée] (seb-ksl)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 Installer une Lenny avec debootstrap et chroot] (lol)

=== Liens externes ===

Liens externes sur l'installation de Debian :

* [http://giminik.developpez.com/articles/debian-gnu-linux/os-installation/ giminik.developpez.com]

* [http://www.coagul.org/ www.coagul.org]

* [http://www.michauko.org/docs/debian_testing/ www.michauko.org]

* [http://wiki.debian.org/fr/DebianReleases Les différentes versions de Debian]

* [http://wiki.debian.org/fr/DebianInstall Obtenir Debian]

* [http://wiki.debian.org/fr/DebianNetworkInstall Installation par le réseau]

* [http://wiki.debian.org/fr/FromWindowsToDebian Passer de Windows à Debian]

* [http://wiki.debian.org/InstallFAQ Faq]

* [http://wiki.debian.org/fr/LennyIllustratedInstall Guide d'installation illustré]

* [http://www.osnews.com/story/2016 Installation de Debian 3.0 très détaillée]

== Juste après l'installation ==

Trucs et astuces sur la configuration de Debian juste après l'installation :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1856 Ajouter des résolutions biscornues dans son xorg.conf] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2751 Créer et redimensionner ses partitions après installation] (Damsss)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13225 (Clavier) Personnaliser son clavier] (ripat) 

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=20845 Debian deblobé facile] (cantor)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1806 (Discussion) Recompilation de son kernel] (Ashgenesis)

* [http://ashgenesis.developpez.com/linux/kernel-debian/ (Discussion) Recompilation de son kernel] (Ashgenesis)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=18271 Fixer le nommage vos partitions avec l'UUID] (kna)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24799 Choisir le nom d'un périphérique lors de son branchement] (L0u!$)

== Installation de logiciels ==

Trucs et astuces sur l'installation de logiciels :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659 Sources.list au carré ou minimaliste [MàJ 17/02/09]] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=2821 Vos logiciels préférés] (avision)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1728 Comment rester en stable tout en ayant les derniers noyaux] (Ashgenesis)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2966 Comment trouver les bons modules Debian selon votre config ?] (Korben Dallas)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13757 Gestion du fichier preferences (ébauche)] (fran.b)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1969 atp/dpkg mémo] (stonfi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1957 KDE configuration pas à pas] (gwadboy)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2224 Gestion des Paquets .deb sous Debian avec dpkg et apt-get] (dexmon)

=== Liens externes ===

Sites pour la recherche d'un logiciel :

* [http://www.debian.org/distrib/packages#view Tous la paquets officiels de Debian]

* [http://linuxappfinder.com/ linuxappfinder.com]

* [http://sourceforge.net/ sourceforge.net]

* [http://freshmeat.net/ freshmeat.net]

* [http://www.gnomefiles.org/ gnomefiles.org : logiciels GTK+]

* [http://www.gnu.org/software/ gnu.org/software/]

* [http://www.framasoft.net/ framasoft.net]

[[Utilisateur:Woj|Woj]]

[[Catégorie:Manuel]]
[[Catégorie:Installation]]</text>
      <sha1>7zaab6qy95rxsb61stwmfgld480j2yn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1678</id>
      <parentid>1614</parentid>
      <timestamp>2010-07-06T09:22:13Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Annulation des modifications 1614 de [[Special:Contributions/Lol|Lol]] ([[User talk:Lol|discussion]])</comment>
      <text xml:space="preserve" bytes="8723">{{sid}}

Projet d'un manuel d'installation. Modifications et améliorations bienvenues.

== Préparer un espace de stockage ==

* Disque dur.
** Organiser ses partitions primaires, primaire étendue, logiques.
** Espace disque minimum, comment réduire la taille d'une partition d'un système existant pour libérer de la place.

* Stockage externe [[Glossaire#USB|USB]] (clé USB, disque dur externe)
** Partitionnement, espace minimum.
** Installation classique ou live.

* [[Glossaire#Live CD|Live CD]].
** Devrait être gravé sur un réinscriptible (RW), un live CD permet de ne pas installer le système sur l'ordinateur hôte et pour certains de conserver ses données d'une session à l'autre.

== Quel fichier télécharger ==

Télécharger les fichiers d'installation de Debian qui correspondent à ses besoins.

=== Architecture matérielle ===

Les fichiers à télécharger sont différents pour chaque type de processeur.

* alpha : Pour les processeurs [http://fr.wikipedia.org/wiki/DEC_Alpha DEC Alpha].

* amd64 : Pour les processeurs [http://fr.wikipedia.org/wiki/AMD64 AMD64], aussi appelés [http://fr.wikipedia.org/wiki/Intel_64 Intel 64], [http://fr.wikipedia.org/wiki/X64 x64] ou encore [http://fr.wikipedia.org/wiki/X86-64 x86-64]. La grande majorité des ordinateurs personnels vendus aujourd'hui sont de ce type.

* arm : Pour les processeurs de la famille [http://fr.wikipedia.org/wiki/Architecture_ARM ARM]

* armel

* hppa

* i386 : Pour les processeurs compatibles [http://fr.wikipedia.org/wiki/X86 Intel x86]. La grande majorité des ordinateurs personnels sont de ce type.

* ia64 : Pour les processeurs Itanium (intel) exclusivement

* mips

* mipsel

* powerpc : Mac

* sparc

* s390

=== Méthode d'installation ===

* [[Glossaire#DVD|DVD]] (&quot;DVD&quot; : 4,4 Go).
* CD (&quot;CD&quot; : 650 Mo).
* Clé USB (&quot;netinst&quot; : 180 Mo; &quot;businesscard&quot; : 40 Mo).
* Depuis un deuxième ordinateur relié par ethernet (&quot;mini&quot; : 10 Mo).
* Depuis son propre disque dur.

== Manuels de Debian ==

Manuels disponibles sur debian.org :

* [http://d-i.alioth.debian.org/manual/fr.i386/index.html Installation]

* [http://www.debian.org/doc/manuals/debian-reference/index.fr.html Référence]

* [http://qref.sourceforge.net/ Référence (qref.sourceforge.net)]

* [http://www.debian.org/doc/manuals/securing-debian-howto/index.fr.html Sécurisation]

* [http://www.debian.org/doc/manuals/debian-faq/index.fr.html Faq]

* [http://www.debian.org/releases/stable/i386/release-notes/ Notes de publication]

* [http://www.debian.org/doc/manuals/fr/debian-fr-howto/index.fr.html Utiliser et configurer Debian pour le français]

== Installation de Debian ==

Trucs et astuces sur l'installation de Debian :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1684 Installer Debian 3.1] (ghostintheshell)
    *  Live CD.
          o Réinscriptible, un live CD permet de conserver ses données d'une session à l'autre. 

[modifier] 
* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2195 Installation et Sécurisation de sa Debian (part1)] (stonfi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2221 Eléments d'optimisation du partitionnement] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7139 Install debian à partir du disque dur] (transpil)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7487 (Howto) Installation de Debian Etch] (d2_racing)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=10462 Comment grub peut sauver le monde] (MisterFreez)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13009 Installer directement Debian sid, mode graphique, et lilo] (talogue)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=12674 Booter sur USB lorsque le BIOS ne le permet pas] (AnatomicJC)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14885 Créer votre live-cd/usb grace à live-helper] (yoshi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14626 (Débutant) Installation et config. d'un système graphique] (Dendrond)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7825 (How-To)Dual boot Vista Debian] (Anoyzthen)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=17111 installation debian:] (panthere)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14673 Installation chroot 32 bits transparent] (fran.b)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=19772 Script: Aide à la création pour une installation automatisée] (mistermat)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=21021 Comment j'ai testé l'ext4 sans conversion de partition] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=22056 installer debian sid en ext4 à partir de linux] (h2osiden)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23421 mount et fstab pour les nuls] (kna)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 Installer une Lenny avec debootstrap et chroot] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23255 Installation de Debian depuis clé usb (ultra-simple)] (nanard)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23693 Installation de Debian par le réseau avec PXE] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24454 Installation via clé USB et sans réseau d'une Debian testing] (Knucky)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=18898 Créer sa clé USB live lenny personnalisée] (seb-ksl)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 Installer une Lenny avec debootstrap et chroot] (lol)

=== Liens externes ===

Liens externes sur l'installation de Debian :

* [http://giminik.developpez.com/articles/debian-gnu-linux/os-installation/ giminik.developpez.com]

* [http://www.coagul.org/ www.coagul.org]

* [http://www.michauko.org/docs/debian_testing/ www.michauko.org]

* [http://wiki.debian.org/fr/DebianReleases Les différentes versions de Debian]

* [http://wiki.debian.org/fr/DebianInstall Obtenir Debian]

* [http://wiki.debian.org/fr/DebianNetworkInstall Installation par le réseau]

* [http://wiki.debian.org/fr/FromWindowsToDebian Passer de Windows à Debian]

* [http://wiki.debian.org/InstallFAQ Faq]

* [http://wiki.debian.org/fr/LennyIllustratedInstall Guide d'installation illustré]

* [http://www.osnews.com/story/2016 Installation de Debian 3.0 très détaillée]

== Juste après l'installation ==

Trucs et astuces sur la configuration de Debian juste après l'installation :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1856 Ajouter des résolutions biscornues dans son xorg.conf] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2751 Créer et redimensionner ses partitions après installation] (Damsss)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13225 (Clavier) Personnaliser son clavier] (ripat) 

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=20845 Debian deblobé facile] (cantor)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1806 (Discussion) Recompilation de son kernel] (Ashgenesis)

* [http://ashgenesis.developpez.com/linux/kernel-debian/ (Discussion) Recompilation de son kernel] (Ashgenesis)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=18271 Fixer le nommage vos partitions avec l'UUID] (kna)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24799 Choisir le nom d'un périphérique lors de son branchement] (L0u!$)

== Installation de logiciels ==

Trucs et astuces sur l'installation de logiciels :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659 Sources.list au carré ou minimaliste [MàJ 17/02/09]] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=2821 Vos logiciels préférés] (avision)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1728 Comment rester en stable tout en ayant les derniers noyaux] (Ashgenesis)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2966 Comment trouver les bons modules Debian selon votre config ?] (Korben Dallas)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13757 Gestion du fichier preferences (ébauche)] (fran.b)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1969 atp/dpkg mémo] (stonfi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1957 KDE configuration pas à pas] (gwadboy)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2224 Gestion des Paquets .deb sous Debian avec dpkg et apt-get] (dexmon)

=== Liens externes ===

Sites pour la recherche d'un logiciel :

* [http://www.debian.org/distrib/packages#view Tous la paquets officiels de Debian]

* [http://linuxappfinder.com/ linuxappfinder.com]

* [http://sourceforge.net/ sourceforge.net]

* [http://freshmeat.net/ freshmeat.net]

* [http://www.gnomefiles.org/ gnomefiles.org : logiciels GTK+]

* [http://www.gnu.org/software/ gnu.org/software/]

* [http://www.framasoft.net/ framasoft.net]

[[Utilisateur:Woj|Woj]]

[[Catégorie:Manuel]]
[[Catégorie:Installation]]</text>
      <sha1>i4fsggnf7scexgab0glr11dsf6a11in</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2064</id>
      <parentid>1678</parentid>
      <timestamp>2010-09-10T08:47:32Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Installation de Debian */</comment>
      <text xml:space="preserve" bytes="8737">{{sid}}

Projet d'un manuel d'installation. Modifications et améliorations bienvenues.

== Préparer un espace de stockage ==

* Disque dur.
** Organiser ses partitions primaires, primaire étendue, logiques.
** Espace disque minimum, comment réduire la taille d'une partition d'un système existant pour libérer de la place.

* Stockage externe [[Glossaire#USB|USB]] (clé USB, disque dur externe)
** Partitionnement, espace minimum.
** Installation classique ou live.

* [[Glossaire#Live CD|Live CD]].
** Devrait être gravé sur un réinscriptible (RW), un live CD permet de ne pas installer le système sur l'ordinateur hôte et pour certains de conserver ses données d'une session à l'autre.

== Quel fichier télécharger ==

Télécharger les fichiers d'installation de Debian qui correspondent à ses besoins.

=== Architecture matérielle ===

Les fichiers à télécharger sont différents pour chaque type de processeur.

* alpha : Pour les processeurs [http://fr.wikipedia.org/wiki/DEC_Alpha DEC Alpha].

* amd64 : Pour les processeurs [http://fr.wikipedia.org/wiki/AMD64 AMD64], aussi appelés [http://fr.wikipedia.org/wiki/Intel_64 Intel 64], [http://fr.wikipedia.org/wiki/X64 x64] ou encore [http://fr.wikipedia.org/wiki/X86-64 x86-64]. La grande majorité des ordinateurs personnels vendus aujourd'hui sont de ce type.

* arm : Pour les processeurs de la famille [http://fr.wikipedia.org/wiki/Architecture_ARM ARM]

* armel

* hppa

* i386 : Pour les processeurs compatibles [http://fr.wikipedia.org/wiki/X86 Intel x86]. La grande majorité des ordinateurs personnels sont de ce type.

* ia64 : Pour les processeurs Itanium (intel) exclusivement

* mips

* mipsel

* powerpc : Mac

* sparc

* s390

=== Méthode d'installation ===

* [[Glossaire#DVD|DVD]] (&quot;DVD&quot; : 4,4 Go).
* CD (&quot;CD&quot; : 650 Mo).
* Clé USB (&quot;netinst&quot; : 180 Mo; &quot;businesscard&quot; : 40 Mo).
* Depuis un deuxième ordinateur relié par ethernet (&quot;mini&quot; : 10 Mo).
* Depuis son propre disque dur.

== Manuels de Debian ==

Manuels disponibles sur debian.org :

* [http://d-i.alioth.debian.org/manual/fr.i386/index.html Installation]

* [http://www.debian.org/doc/manuals/debian-reference/index.fr.html Référence]

* [http://qref.sourceforge.net/ Référence (qref.sourceforge.net)]

* [http://www.debian.org/doc/manuals/securing-debian-howto/index.fr.html Sécurisation]

* [http://www.debian.org/doc/manuals/debian-faq/index.fr.html Faq]

* [http://www.debian.org/releases/stable/i386/release-notes/ Notes de publication]

* [http://www.debian.org/doc/manuals/fr/debian-fr-howto/index.fr.html Utiliser et configurer Debian pour le français]

== Installation de Debian ==

Trucs et astuces sur l'installation de Debian :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1684 Installer Debian 3.1] (ghostintheshell)
    *  Live CD.
          o Réinscriptible, un live CD permet de conserver ses données d'une session à l'autre. 

[modifier] 
* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2195 Installation et Sécurisation de sa Debian (part1)] (stonfi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2221 Eléments d'optimisation du partitionnement] (mattotop) Février 2006

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7139 Install debian à partir du disque dur] (transpil)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7487 (Howto) Installation de Debian Etch] (d2_racing)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=10462 Comment grub peut sauver le monde] (MisterFreez)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13009 Installer directement Debian sid, mode graphique, et lilo] (talogue)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=12674 Booter sur USB lorsque le BIOS ne le permet pas] (AnatomicJC)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14885 Créer votre live-cd/usb grace à live-helper] (yoshi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14626 (Débutant) Installation et config. d'un système graphique] (Dendrond)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7825 (How-To)Dual boot Vista Debian] (Anoyzthen)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=17111 installation debian:] (panthere)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14673 Installation chroot 32 bits transparent] (fran.b)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=19772 Script: Aide à la création pour une installation automatisée] (mistermat)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=21021 Comment j'ai testé l'ext4 sans conversion de partition] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=22056 installer debian sid en ext4 à partir de linux] (h2osiden)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23421 mount et fstab pour les nuls] (kna)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 Installer une Lenny avec debootstrap et chroot] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23255 Installation de Debian depuis clé usb (ultra-simple)] (nanard)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23693 Installation de Debian par le réseau avec PXE] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24454 Installation via clé USB et sans réseau d'une Debian testing] (Knucky)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=18898 Créer sa clé USB live lenny personnalisée] (seb-ksl)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 Installer une Lenny avec debootstrap et chroot] (lol)

=== Liens externes ===

Liens externes sur l'installation de Debian :

* [http://giminik.developpez.com/articles/debian-gnu-linux/os-installation/ giminik.developpez.com]

* [http://www.coagul.org/ www.coagul.org]

* [http://www.michauko.org/docs/debian_testing/ www.michauko.org]

* [http://wiki.debian.org/fr/DebianReleases Les différentes versions de Debian]

* [http://wiki.debian.org/fr/DebianInstall Obtenir Debian]

* [http://wiki.debian.org/fr/DebianNetworkInstall Installation par le réseau]

* [http://wiki.debian.org/fr/FromWindowsToDebian Passer de Windows à Debian]

* [http://wiki.debian.org/InstallFAQ Faq]

* [http://wiki.debian.org/fr/LennyIllustratedInstall Guide d'installation illustré]

* [http://www.osnews.com/story/2016 Installation de Debian 3.0 très détaillée]

== Juste après l'installation ==

Trucs et astuces sur la configuration de Debian juste après l'installation :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1856 Ajouter des résolutions biscornues dans son xorg.conf] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2751 Créer et redimensionner ses partitions après installation] (Damsss)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13225 (Clavier) Personnaliser son clavier] (ripat) 

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=20845 Debian deblobé facile] (cantor)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1806 (Discussion) Recompilation de son kernel] (Ashgenesis)

* [http://ashgenesis.developpez.com/linux/kernel-debian/ (Discussion) Recompilation de son kernel] (Ashgenesis)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=18271 Fixer le nommage vos partitions avec l'UUID] (kna)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24799 Choisir le nom d'un périphérique lors de son branchement] (L0u!$)

== Installation de logiciels ==

Trucs et astuces sur l'installation de logiciels :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659 Sources.list au carré ou minimaliste [MàJ 17/02/09]] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=2821 Vos logiciels préférés] (avision)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1728 Comment rester en stable tout en ayant les derniers noyaux] (Ashgenesis)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2966 Comment trouver les bons modules Debian selon votre config ?] (Korben Dallas)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13757 Gestion du fichier preferences (ébauche)] (fran.b)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1969 atp/dpkg mémo] (stonfi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1957 KDE configuration pas à pas] (gwadboy)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2224 Gestion des Paquets .deb sous Debian avec dpkg et apt-get] (dexmon)

=== Liens externes ===

Sites pour la recherche d'un logiciel :

* [http://www.debian.org/distrib/packages#view Tous la paquets officiels de Debian]

* [http://linuxappfinder.com/ linuxappfinder.com]

* [http://sourceforge.net/ sourceforge.net]

* [http://freshmeat.net/ freshmeat.net]

* [http://www.gnomefiles.org/ gnomefiles.org : logiciels GTK+]

* [http://www.gnu.org/software/ gnu.org/software/]

* [http://www.framasoft.net/ framasoft.net]

[[Utilisateur:Woj|Woj]]

[[Catégorie:Manuel]]
[[Catégorie:Installation]]</text>
      <sha1>lxsl2wwa6tlezeq4kql5ox528czu4ad</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2065</id>
      <parentid>2064</parentid>
      <timestamp>2010-09-10T08:48:16Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Installation de Debian */</comment>
      <text xml:space="preserve" bytes="8750">{{sid}}

Projet d'un manuel d'installation. Modifications et améliorations bienvenues.

== Préparer un espace de stockage ==

* Disque dur.
** Organiser ses partitions primaires, primaire étendue, logiques.
** Espace disque minimum, comment réduire la taille d'une partition d'un système existant pour libérer de la place.

* Stockage externe [[Glossaire#USB|USB]] (clé USB, disque dur externe)
** Partitionnement, espace minimum.
** Installation classique ou live.

* [[Glossaire#Live CD|Live CD]].
** Devrait être gravé sur un réinscriptible (RW), un live CD permet de ne pas installer le système sur l'ordinateur hôte et pour certains de conserver ses données d'une session à l'autre.

== Quel fichier télécharger ==

Télécharger les fichiers d'installation de Debian qui correspondent à ses besoins.

=== Architecture matérielle ===

Les fichiers à télécharger sont différents pour chaque type de processeur.

* alpha : Pour les processeurs [http://fr.wikipedia.org/wiki/DEC_Alpha DEC Alpha].

* amd64 : Pour les processeurs [http://fr.wikipedia.org/wiki/AMD64 AMD64], aussi appelés [http://fr.wikipedia.org/wiki/Intel_64 Intel 64], [http://fr.wikipedia.org/wiki/X64 x64] ou encore [http://fr.wikipedia.org/wiki/X86-64 x86-64]. La grande majorité des ordinateurs personnels vendus aujourd'hui sont de ce type.

* arm : Pour les processeurs de la famille [http://fr.wikipedia.org/wiki/Architecture_ARM ARM]

* armel

* hppa

* i386 : Pour les processeurs compatibles [http://fr.wikipedia.org/wiki/X86 Intel x86]. La grande majorité des ordinateurs personnels sont de ce type.

* ia64 : Pour les processeurs Itanium (intel) exclusivement

* mips

* mipsel

* powerpc : Mac

* sparc

* s390

=== Méthode d'installation ===

* [[Glossaire#DVD|DVD]] (&quot;DVD&quot; : 4,4 Go).
* CD (&quot;CD&quot; : 650 Mo).
* Clé USB (&quot;netinst&quot; : 180 Mo; &quot;businesscard&quot; : 40 Mo).
* Depuis un deuxième ordinateur relié par ethernet (&quot;mini&quot; : 10 Mo).
* Depuis son propre disque dur.

== Manuels de Debian ==

Manuels disponibles sur debian.org :

* [http://d-i.alioth.debian.org/manual/fr.i386/index.html Installation]

* [http://www.debian.org/doc/manuals/debian-reference/index.fr.html Référence]

* [http://qref.sourceforge.net/ Référence (qref.sourceforge.net)]

* [http://www.debian.org/doc/manuals/securing-debian-howto/index.fr.html Sécurisation]

* [http://www.debian.org/doc/manuals/debian-faq/index.fr.html Faq]

* [http://www.debian.org/releases/stable/i386/release-notes/ Notes de publication]

* [http://www.debian.org/doc/manuals/fr/debian-fr-howto/index.fr.html Utiliser et configurer Debian pour le français]

== Installation de Debian ==

Trucs et astuces sur l'installation de Debian :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1684 Installer Debian 3.1] (ghostintheshell)
    *  Live CD.
          o Réinscriptible, un live CD permet de conserver ses données d'une session à l'autre. 

[modifier] 
* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2195 Installation et Sécurisation de sa Debian (part1)] (stonfi) Janvier 2006

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2221 Eléments d'optimisation du partitionnement] (mattotop) Février 2006

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7139 Install debian à partir du disque dur] (transpil)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7487 (Howto) Installation de Debian Etch] (d2_racing)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=10462 Comment grub peut sauver le monde] (MisterFreez)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13009 Installer directement Debian sid, mode graphique, et lilo] (talogue)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=12674 Booter sur USB lorsque le BIOS ne le permet pas] (AnatomicJC)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14885 Créer votre live-cd/usb grace à live-helper] (yoshi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14626 (Débutant) Installation et config. d'un système graphique] (Dendrond)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7825 (How-To)Dual boot Vista Debian] (Anoyzthen)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=17111 installation debian:] (panthere)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14673 Installation chroot 32 bits transparent] (fran.b)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=19772 Script: Aide à la création pour une installation automatisée] (mistermat)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=21021 Comment j'ai testé l'ext4 sans conversion de partition] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=22056 installer debian sid en ext4 à partir de linux] (h2osiden)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23421 mount et fstab pour les nuls] (kna)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 Installer une Lenny avec debootstrap et chroot] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23255 Installation de Debian depuis clé usb (ultra-simple)] (nanard)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23693 Installation de Debian par le réseau avec PXE] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24454 Installation via clé USB et sans réseau d'une Debian testing] (Knucky)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=18898 Créer sa clé USB live lenny personnalisée] (seb-ksl)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 Installer une Lenny avec debootstrap et chroot] (lol)

=== Liens externes ===

Liens externes sur l'installation de Debian :

* [http://giminik.developpez.com/articles/debian-gnu-linux/os-installation/ giminik.developpez.com]

* [http://www.coagul.org/ www.coagul.org]

* [http://www.michauko.org/docs/debian_testing/ www.michauko.org]

* [http://wiki.debian.org/fr/DebianReleases Les différentes versions de Debian]

* [http://wiki.debian.org/fr/DebianInstall Obtenir Debian]

* [http://wiki.debian.org/fr/DebianNetworkInstall Installation par le réseau]

* [http://wiki.debian.org/fr/FromWindowsToDebian Passer de Windows à Debian]

* [http://wiki.debian.org/InstallFAQ Faq]

* [http://wiki.debian.org/fr/LennyIllustratedInstall Guide d'installation illustré]

* [http://www.osnews.com/story/2016 Installation de Debian 3.0 très détaillée]

== Juste après l'installation ==

Trucs et astuces sur la configuration de Debian juste après l'installation :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1856 Ajouter des résolutions biscornues dans son xorg.conf] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2751 Créer et redimensionner ses partitions après installation] (Damsss)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13225 (Clavier) Personnaliser son clavier] (ripat) 

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=20845 Debian deblobé facile] (cantor)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1806 (Discussion) Recompilation de son kernel] (Ashgenesis)

* [http://ashgenesis.developpez.com/linux/kernel-debian/ (Discussion) Recompilation de son kernel] (Ashgenesis)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=18271 Fixer le nommage vos partitions avec l'UUID] (kna)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24799 Choisir le nom d'un périphérique lors de son branchement] (L0u!$)

== Installation de logiciels ==

Trucs et astuces sur l'installation de logiciels :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659 Sources.list au carré ou minimaliste [MàJ 17/02/09]] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=2821 Vos logiciels préférés] (avision)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1728 Comment rester en stable tout en ayant les derniers noyaux] (Ashgenesis)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2966 Comment trouver les bons modules Debian selon votre config ?] (Korben Dallas)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13757 Gestion du fichier preferences (ébauche)] (fran.b)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1969 atp/dpkg mémo] (stonfi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1957 KDE configuration pas à pas] (gwadboy)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2224 Gestion des Paquets .deb sous Debian avec dpkg et apt-get] (dexmon)

=== Liens externes ===

Sites pour la recherche d'un logiciel :

* [http://www.debian.org/distrib/packages#view Tous la paquets officiels de Debian]

* [http://linuxappfinder.com/ linuxappfinder.com]

* [http://sourceforge.net/ sourceforge.net]

* [http://freshmeat.net/ freshmeat.net]

* [http://www.gnomefiles.org/ gnomefiles.org : logiciels GTK+]

* [http://www.gnu.org/software/ gnu.org/software/]

* [http://www.framasoft.net/ framasoft.net]

[[Utilisateur:Woj|Woj]]

[[Catégorie:Manuel]]
[[Catégorie:Installation]]</text>
      <sha1>cfvjk1d3ffl7l3gaf42b4gnkgo9fyqy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2066</id>
      <parentid>2065</parentid>
      <timestamp>2010-09-10T08:51:12Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Liens externes */</comment>
      <text xml:space="preserve" bytes="8751">{{sid}}

Projet d'un manuel d'installation. Modifications et améliorations bienvenues.

== Préparer un espace de stockage ==

* Disque dur.
** Organiser ses partitions primaires, primaire étendue, logiques.
** Espace disque minimum, comment réduire la taille d'une partition d'un système existant pour libérer de la place.

* Stockage externe [[Glossaire#USB|USB]] (clé USB, disque dur externe)
** Partitionnement, espace minimum.
** Installation classique ou live.

* [[Glossaire#Live CD|Live CD]].
** Devrait être gravé sur un réinscriptible (RW), un live CD permet de ne pas installer le système sur l'ordinateur hôte et pour certains de conserver ses données d'une session à l'autre.

== Quel fichier télécharger ==

Télécharger les fichiers d'installation de Debian qui correspondent à ses besoins.

=== Architecture matérielle ===

Les fichiers à télécharger sont différents pour chaque type de processeur.

* alpha : Pour les processeurs [http://fr.wikipedia.org/wiki/DEC_Alpha DEC Alpha].

* amd64 : Pour les processeurs [http://fr.wikipedia.org/wiki/AMD64 AMD64], aussi appelés [http://fr.wikipedia.org/wiki/Intel_64 Intel 64], [http://fr.wikipedia.org/wiki/X64 x64] ou encore [http://fr.wikipedia.org/wiki/X86-64 x86-64]. La grande majorité des ordinateurs personnels vendus aujourd'hui sont de ce type.

* arm : Pour les processeurs de la famille [http://fr.wikipedia.org/wiki/Architecture_ARM ARM]

* armel

* hppa

* i386 : Pour les processeurs compatibles [http://fr.wikipedia.org/wiki/X86 Intel x86]. La grande majorité des ordinateurs personnels sont de ce type.

* ia64 : Pour les processeurs Itanium (intel) exclusivement

* mips

* mipsel

* powerpc : Mac

* sparc

* s390

=== Méthode d'installation ===

* [[Glossaire#DVD|DVD]] (&quot;DVD&quot; : 4,4 Go).
* CD (&quot;CD&quot; : 650 Mo).
* Clé USB (&quot;netinst&quot; : 180 Mo; &quot;businesscard&quot; : 40 Mo).
* Depuis un deuxième ordinateur relié par ethernet (&quot;mini&quot; : 10 Mo).
* Depuis son propre disque dur.

== Manuels de Debian ==

Manuels disponibles sur debian.org :

* [http://d-i.alioth.debian.org/manual/fr.i386/index.html Installation]

* [http://www.debian.org/doc/manuals/debian-reference/index.fr.html Référence]

* [http://qref.sourceforge.net/ Référence (qref.sourceforge.net)]

* [http://www.debian.org/doc/manuals/securing-debian-howto/index.fr.html Sécurisation]

* [http://www.debian.org/doc/manuals/debian-faq/index.fr.html Faq]

* [http://www.debian.org/releases/stable/i386/release-notes/ Notes de publication]

* [http://www.debian.org/doc/manuals/fr/debian-fr-howto/index.fr.html Utiliser et configurer Debian pour le français]

== Installation de Debian ==

Trucs et astuces sur l'installation de Debian :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1684 Installer Debian 3.1] (ghostintheshell)
    *  Live CD.
          o Réinscriptible, un live CD permet de conserver ses données d'une session à l'autre. 

[modifier] 
* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2195 Installation et Sécurisation de sa Debian (part1)] (stonfi) Janvier 2006

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2221 Eléments d'optimisation du partitionnement] (mattotop) Février 2006

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7139 Install debian à partir du disque dur] (transpil)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7487 (Howto) Installation de Debian Etch] (d2_racing)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=10462 Comment grub peut sauver le monde] (MisterFreez)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13009 Installer directement Debian sid, mode graphique, et lilo] (talogue)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=12674 Booter sur USB lorsque le BIOS ne le permet pas] (AnatomicJC)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14885 Créer votre live-cd/usb grace à live-helper] (yoshi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14626 (Débutant) Installation et config. d'un système graphique] (Dendrond)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7825 (How-To)Dual boot Vista Debian] (Anoyzthen)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=17111 installation debian:] (panthere)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14673 Installation chroot 32 bits transparent] (fran.b)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=19772 Script: Aide à la création pour une installation automatisée] (mistermat)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=21021 Comment j'ai testé l'ext4 sans conversion de partition] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=22056 installer debian sid en ext4 à partir de linux] (h2osiden)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23421 mount et fstab pour les nuls] (kna)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 Installer une Lenny avec debootstrap et chroot] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23255 Installation de Debian depuis clé usb (ultra-simple)] (nanard)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23693 Installation de Debian par le réseau avec PXE] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24454 Installation via clé USB et sans réseau d'une Debian testing] (Knucky)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=18898 Créer sa clé USB live lenny personnalisée] (seb-ksl)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 Installer une Lenny avec debootstrap et chroot] (lol)

=== Liens externes ===

Liens externes sur l'installation de Debian :

* [http://giminik.developpez.com/articles/debian-gnu-linux/os-installation/ giminik.developpez.com]

* [http://www.coagul.org/ www.coagul.org]

* [http://www.michauko.org/docs/debian_testing/ www.michauko.org]

* [http://wiki.debian.org/fr/DebianReleases Les différentes versions de Debian]

* [http://wiki.debian.org/fr/DebianInstall Obtenir Debian]

* [http://wiki.debian.org/fr/DebianNetworkInstall Installation par le réseau]

* [http://wiki.debian.org/fr/FromWindowsToDebian Passer de Windows à Debian]

* [http://wiki.debian.org/InstallFAQ Faq]

* [http://wiki.debian.org/fr/LennyIllustratedInstall Guide d'installation illustré]

* [http://www.osnews.com/story/2016 Installation de Debian 3.0 très détaillée]

== Juste après l'installation ==

Trucs et astuces sur la configuration de Debian juste après l'installation :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1856 Ajouter des résolutions biscornues dans son xorg.conf] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2751 Créer et redimensionner ses partitions après installation] (Damsss)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13225 (Clavier) Personnaliser son clavier] (ripat) 

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=20845 Debian deblobé facile] (cantor)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1806 (Discussion) Recompilation de son kernel] (Ashgenesis)

* [http://ashgenesis.developpez.com/linux/kernel-debian/ (Discussion) Recompilation de son kernel] (Ashgenesis)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=18271 Fixer le nommage vos partitions avec l'UUID] (kna)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24799 Choisir le nom d'un périphérique lors de son branchement] (L0u!$)

== Installation de logiciels ==

Trucs et astuces sur l'installation de logiciels :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659 Sources.list au carré ou minimaliste [MàJ 17/02/09]] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=2821 Vos logiciels préférés] (avision)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1728 Comment rester en stable tout en ayant les derniers noyaux] (Ashgenesis)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2966 Comment trouver les bons modules Debian selon votre config ?] (Korben Dallas)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13757 Gestion du fichier preferences (ébauche)] (fran.b)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1969 atp/dpkg mémo] (stonfi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1957 KDE configuration pas à pas] (gwadboy)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2224 Gestion des Paquets .deb sous Debian avec dpkg et apt-get] (dexmon)

=== Liens externes ===

Sites pour la recherche d'un logiciel :

* [http://www.debian.org/distrib/packages#view Tous les paquets officiels de Debian]

* [http://linuxappfinder.com/ linuxappfinder.com]

* [http://sourceforge.net/ sourceforge.net]

* [http://freshmeat.net/ freshmeat.net]

* [http://www.gnomefiles.org/ gnomefiles.org : logiciels GTK+]

* [http://www.gnu.org/software/ gnu.org/software/]

* [http://www.framasoft.net/ framasoft.net]

[[Utilisateur:Woj|Woj]]

[[Catégorie:Manuel]]
[[Catégorie:Installation]]</text>
      <sha1>ltc454pkdiurip23k2l3zgvu0wsy1x4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4379</id>
      <parentid>2066</parentid>
      <timestamp>2012-08-01T08:05:29Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Liens externes */</comment>
      <text xml:space="preserve" bytes="8726">{{sid}}

Projet d'un manuel d'installation. Modifications et améliorations bienvenues.

== Préparer un espace de stockage ==

* Disque dur.
** Organiser ses partitions primaires, primaire étendue, logiques.
** Espace disque minimum, comment réduire la taille d'une partition d'un système existant pour libérer de la place.

* Stockage externe [[Glossaire#USB|USB]] (clé USB, disque dur externe)
** Partitionnement, espace minimum.
** Installation classique ou live.

* [[Glossaire#Live CD|Live CD]].
** Devrait être gravé sur un réinscriptible (RW), un live CD permet de ne pas installer le système sur l'ordinateur hôte et pour certains de conserver ses données d'une session à l'autre.

== Quel fichier télécharger ==

Télécharger les fichiers d'installation de Debian qui correspondent à ses besoins.

=== Architecture matérielle ===

Les fichiers à télécharger sont différents pour chaque type de processeur.

* alpha : Pour les processeurs [http://fr.wikipedia.org/wiki/DEC_Alpha DEC Alpha].

* amd64 : Pour les processeurs [http://fr.wikipedia.org/wiki/AMD64 AMD64], aussi appelés [http://fr.wikipedia.org/wiki/Intel_64 Intel 64], [http://fr.wikipedia.org/wiki/X64 x64] ou encore [http://fr.wikipedia.org/wiki/X86-64 x86-64]. La grande majorité des ordinateurs personnels vendus aujourd'hui sont de ce type.

* arm : Pour les processeurs de la famille [http://fr.wikipedia.org/wiki/Architecture_ARM ARM]

* armel

* hppa

* i386 : Pour les processeurs compatibles [http://fr.wikipedia.org/wiki/X86 Intel x86]. La grande majorité des ordinateurs personnels sont de ce type.

* ia64 : Pour les processeurs Itanium (intel) exclusivement

* mips

* mipsel

* powerpc : Mac

* sparc

* s390

=== Méthode d'installation ===

* [[Glossaire#DVD|DVD]] (&quot;DVD&quot; : 4,4 Go).
* CD (&quot;CD&quot; : 650 Mo).
* Clé USB (&quot;netinst&quot; : 180 Mo; &quot;businesscard&quot; : 40 Mo).
* Depuis un deuxième ordinateur relié par ethernet (&quot;mini&quot; : 10 Mo).
* Depuis son propre disque dur.

== Manuels de Debian ==

Manuels disponibles sur debian.org :

* [http://d-i.alioth.debian.org/manual/fr.i386/index.html Installation]

* [http://www.debian.org/doc/manuals/debian-reference/index.fr.html Référence]

* [http://qref.sourceforge.net/ Référence (qref.sourceforge.net)]

* [http://www.debian.org/doc/manuals/securing-debian-howto/index.fr.html Sécurisation]

* [http://www.debian.org/doc/manuals/debian-faq/index.fr.html Faq]

* [http://www.debian.org/releases/stable/i386/release-notes/ Notes de publication]

* [http://www.debian.org/doc/manuals/fr/debian-fr-howto/index.fr.html Utiliser et configurer Debian pour le français]

== Installation de Debian ==

Trucs et astuces sur l'installation de Debian :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1684 Installer Debian 3.1] (ghostintheshell)
    *  Live CD.
          o Réinscriptible, un live CD permet de conserver ses données d'une session à l'autre. 

[modifier] 
* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2195 Installation et Sécurisation de sa Debian (part1)] (stonfi) Janvier 2006

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2221 Eléments d'optimisation du partitionnement] (mattotop) Février 2006

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7139 Install debian à partir du disque dur] (transpil)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7487 (Howto) Installation de Debian Etch] (d2_racing)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=10462 Comment grub peut sauver le monde] (MisterFreez)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13009 Installer directement Debian sid, mode graphique, et lilo] (talogue)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=12674 Booter sur USB lorsque le BIOS ne le permet pas] (AnatomicJC)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14885 Créer votre live-cd/usb grace à live-helper] (yoshi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14626 (Débutant) Installation et config. d'un système graphique] (Dendrond)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7825 (How-To)Dual boot Vista Debian] (Anoyzthen)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=17111 installation debian:] (panthere)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14673 Installation chroot 32 bits transparent] (fran.b)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=19772 Script: Aide à la création pour une installation automatisée] (mistermat)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=21021 Comment j'ai testé l'ext4 sans conversion de partition] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=22056 installer debian sid en ext4 à partir de linux] (h2osiden)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23421 mount et fstab pour les nuls] (kna)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 Installer une Lenny avec debootstrap et chroot] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23255 Installation de Debian depuis clé usb (ultra-simple)] (nanard)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23693 Installation de Debian par le réseau avec PXE] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24454 Installation via clé USB et sans réseau d'une Debian testing] (Knucky)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=18898 Créer sa clé USB live lenny personnalisée] (seb-ksl)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 Installer une Lenny avec debootstrap et chroot] (lol)

=== Liens externes ===

Liens externes sur l'installation de Debian :

* [http://giminik.developpez.com/articles/debian-gnu-linux/os-installation/ giminik.developpez.com]

* [http://www.coagul.org/ www.coagul.org]

* [http://www.michauko.org/docs/debian_testing/ www.michauko.org]

* [http://wiki.debian.org/fr/DebianReleases Les différentes versions de Debian]

* [http://wiki.debian.org/fr/DebianInstall Obtenir Debian]

* [http://wiki.debian.org/fr/DebianNetworkInstall Installation par le réseau]

* [http://wiki.debian.org/fr/FromWindowsToDebian Passer de Windows à Debian]

* [http://wiki.debian.org/InstallFAQ Faq]

* [http://wiki.debian.org/fr/LennyIllustratedInstall Guide d'installation illustré]

* [http://www.osnews.com/story/2016 Installation de Debian 3.0 très détaillée]

== Juste après l'installation ==

Trucs et astuces sur la configuration de Debian juste après l'installation :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1856 Ajouter des résolutions biscornues dans son xorg.conf] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2751 Créer et redimensionner ses partitions après installation] (Damsss)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13225 (Clavier) Personnaliser son clavier] (ripat) 

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=20845 Debian deblobé facile] (cantor)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1806 (Discussion) Recompilation de son kernel] (Ashgenesis)

* [http://ashgenesis.developpez.com/linux/kernel-debian/ (Discussion) Recompilation de son kernel] (Ashgenesis)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=18271 Fixer le nommage vos partitions avec l'UUID] (kna)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24799 Choisir le nom d'un périphérique lors de son branchement] (L0u!$)

== Installation de logiciels ==

Trucs et astuces sur l'installation de logiciels :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=5659 Sources.list au carré ou minimaliste [MàJ 17/02/09]] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=2821 Vos logiciels préférés] (avision)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1728 Comment rester en stable tout en ayant les derniers noyaux] (Ashgenesis)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2966 Comment trouver les bons modules Debian selon votre config ?] (Korben Dallas)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13757 Gestion du fichier preferences (ébauche)] (fran.b)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1969 atp/dpkg mémo] (stonfi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1957 KDE configuration pas à pas] (gwadboy)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2224 Gestion des Paquets .deb sous Debian avec dpkg et apt-get] (dexmon)

=== Liens externes ===

Sites pour la recherche d'un logiciel :

* [http://www.debian.org/distrib/packages#view Tous les paquets officiels de Debian]

* [http://linuxappfinder.com/ linuxappfinder.com]

* [http://sourceforge.net/ sourceforge.net]

* [http://freshmeat.net/ freshmeat.net]

* [http://www.gnomefiles.org/ gnomefiles.org : logiciels GTK+]

* [http://www.gnu.org/software/ gnu.org/software/]

* [http://www.framasoft.net/ framasoft.net]

[[Catégorie:Manuel]]
[[Catégorie:Installation]]</text>
      <sha1>ltdx9kg1s2mrk6yf3nlejajuqljapa9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4380</id>
      <parentid>4379</parentid>
      <timestamp>2012-08-01T08:08:59Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Installation de logiciels */</comment>
      <text xml:space="preserve" bytes="8821">{{sid}}

Projet d'un manuel d'installation. Modifications et améliorations bienvenues.

== Préparer un espace de stockage ==

* Disque dur.
** Organiser ses partitions primaires, primaire étendue, logiques.
** Espace disque minimum, comment réduire la taille d'une partition d'un système existant pour libérer de la place.

* Stockage externe [[Glossaire#USB|USB]] (clé USB, disque dur externe)
** Partitionnement, espace minimum.
** Installation classique ou live.

* [[Glossaire#Live CD|Live CD]].
** Devrait être gravé sur un réinscriptible (RW), un live CD permet de ne pas installer le système sur l'ordinateur hôte et pour certains de conserver ses données d'une session à l'autre.

== Quel fichier télécharger ==

Télécharger les fichiers d'installation de Debian qui correspondent à ses besoins.

=== Architecture matérielle ===

Les fichiers à télécharger sont différents pour chaque type de processeur.

* alpha : Pour les processeurs [http://fr.wikipedia.org/wiki/DEC_Alpha DEC Alpha].

* amd64 : Pour les processeurs [http://fr.wikipedia.org/wiki/AMD64 AMD64], aussi appelés [http://fr.wikipedia.org/wiki/Intel_64 Intel 64], [http://fr.wikipedia.org/wiki/X64 x64] ou encore [http://fr.wikipedia.org/wiki/X86-64 x86-64]. La grande majorité des ordinateurs personnels vendus aujourd'hui sont de ce type.

* arm : Pour les processeurs de la famille [http://fr.wikipedia.org/wiki/Architecture_ARM ARM]

* armel

* hppa

* i386 : Pour les processeurs compatibles [http://fr.wikipedia.org/wiki/X86 Intel x86]. La grande majorité des ordinateurs personnels sont de ce type.

* ia64 : Pour les processeurs Itanium (intel) exclusivement

* mips

* mipsel

* powerpc : Mac

* sparc

* s390

=== Méthode d'installation ===

* [[Glossaire#DVD|DVD]] (&quot;DVD&quot; : 4,4 Go).
* CD (&quot;CD&quot; : 650 Mo).
* Clé USB (&quot;netinst&quot; : 180 Mo; &quot;businesscard&quot; : 40 Mo).
* Depuis un deuxième ordinateur relié par ethernet (&quot;mini&quot; : 10 Mo).
* Depuis son propre disque dur.

== Manuels de Debian ==

Manuels disponibles sur debian.org :

* [http://d-i.alioth.debian.org/manual/fr.i386/index.html Installation]

* [http://www.debian.org/doc/manuals/debian-reference/index.fr.html Référence]

* [http://qref.sourceforge.net/ Référence (qref.sourceforge.net)]

* [http://www.debian.org/doc/manuals/securing-debian-howto/index.fr.html Sécurisation]

* [http://www.debian.org/doc/manuals/debian-faq/index.fr.html Faq]

* [http://www.debian.org/releases/stable/i386/release-notes/ Notes de publication]

* [http://www.debian.org/doc/manuals/fr/debian-fr-howto/index.fr.html Utiliser et configurer Debian pour le français]

== Installation de Debian ==

Trucs et astuces sur l'installation de Debian :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1684 Installer Debian 3.1] (ghostintheshell)
    *  Live CD.
          o Réinscriptible, un live CD permet de conserver ses données d'une session à l'autre. 

[modifier] 
* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2195 Installation et Sécurisation de sa Debian (part1)] (stonfi) Janvier 2006

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2221 Eléments d'optimisation du partitionnement] (mattotop) Février 2006

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7139 Install debian à partir du disque dur] (transpil)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7487 (Howto) Installation de Debian Etch] (d2_racing)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=10462 Comment grub peut sauver le monde] (MisterFreez)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13009 Installer directement Debian sid, mode graphique, et lilo] (talogue)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=12674 Booter sur USB lorsque le BIOS ne le permet pas] (AnatomicJC)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14885 Créer votre live-cd/usb grace à live-helper] (yoshi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14626 (Débutant) Installation et config. d'un système graphique] (Dendrond)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7825 (How-To)Dual boot Vista Debian] (Anoyzthen)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=17111 installation debian:] (panthere)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14673 Installation chroot 32 bits transparent] (fran.b)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=19772 Script: Aide à la création pour une installation automatisée] (mistermat)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=21021 Comment j'ai testé l'ext4 sans conversion de partition] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=22056 installer debian sid en ext4 à partir de linux] (h2osiden)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23421 mount et fstab pour les nuls] (kna)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 Installer une Lenny avec debootstrap et chroot] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23255 Installation de Debian depuis clé usb (ultra-simple)] (nanard)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23693 Installation de Debian par le réseau avec PXE] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24454 Installation via clé USB et sans réseau d'une Debian testing] (Knucky)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=18898 Créer sa clé USB live lenny personnalisée] (seb-ksl)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 Installer une Lenny avec debootstrap et chroot] (lol)

=== Liens externes ===

Liens externes sur l'installation de Debian :

* [http://giminik.developpez.com/articles/debian-gnu-linux/os-installation/ giminik.developpez.com]

* [http://www.coagul.org/ www.coagul.org]

* [http://www.michauko.org/docs/debian_testing/ www.michauko.org]

* [http://wiki.debian.org/fr/DebianReleases Les différentes versions de Debian]

* [http://wiki.debian.org/fr/DebianInstall Obtenir Debian]

* [http://wiki.debian.org/fr/DebianNetworkInstall Installation par le réseau]

* [http://wiki.debian.org/fr/FromWindowsToDebian Passer de Windows à Debian]

* [http://wiki.debian.org/InstallFAQ Faq]

* [http://wiki.debian.org/fr/LennyIllustratedInstall Guide d'installation illustré]

* [http://www.osnews.com/story/2016 Installation de Debian 3.0 très détaillée]

== Juste après l'installation ==

Trucs et astuces sur la configuration de Debian juste après l'installation :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1856 Ajouter des résolutions biscornues dans son xorg.conf] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2751 Créer et redimensionner ses partitions après installation] (Damsss)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13225 (Clavier) Personnaliser son clavier] (ripat) 

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=20845 Debian deblobé facile] (cantor)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1806 (Discussion) Recompilation de son kernel] (Ashgenesis)

* [http://ashgenesis.developpez.com/linux/kernel-debian/ (Discussion) Recompilation de son kernel] (Ashgenesis)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=18271 Fixer le nommage vos partitions avec l'UUID] (kna)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24799 Choisir le nom d'un périphérique lors de son branchement] (L0u!$)

== Installation de logiciels ==

Trucs et astuces sur l'installation de logiciels :

*  http://www.debian-fr.org/sources-de-paquets-les-bases-t39329.html Sources de paquets : les bases (sources.list) 	

vv222
	

1
	

1030
	

20 Juin 2012, 01:00

ricardo Voir le dernier message
Aucun message non lu 	

* [http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=2821 Vos logiciels préférés] (avision)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1728 Comment rester en stable tout en ayant les derniers noyaux] (Ashgenesis)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2966 Comment trouver les bons modules Debian selon votre config ?] (Korben Dallas)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13757 Gestion du fichier preferences (ébauche)] (fran.b)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1969 atp/dpkg mémo] (stonfi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1957 KDE configuration pas à pas] (gwadboy)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2224 Gestion des Paquets .deb sous Debian avec dpkg et apt-get] (dexmon)

=== Liens externes ===

Sites pour la recherche d'un logiciel :

* [http://www.debian.org/distrib/packages#view Tous les paquets officiels de Debian]

* [http://linuxappfinder.com/ linuxappfinder.com]

* [http://sourceforge.net/ sourceforge.net]

* [http://freshmeat.net/ freshmeat.net]

* [http://www.gnomefiles.org/ gnomefiles.org : logiciels GTK+]

* [http://www.gnu.org/software/ gnu.org/software/]

* [http://www.framasoft.net/ framasoft.net]

[[Catégorie:Manuel]]
[[Catégorie:Installation]]</text>
      <sha1>fxytems6e5ktcukwrxlekjuhlesyzut</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4381</id>
      <parentid>4380</parentid>
      <timestamp>2012-08-01T08:09:57Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <comment>/* Installation de logiciels */</comment>
      <text xml:space="preserve" bytes="8722">{{sid}}

Projet d'un manuel d'installation. Modifications et améliorations bienvenues.

== Préparer un espace de stockage ==

* Disque dur.
** Organiser ses partitions primaires, primaire étendue, logiques.
** Espace disque minimum, comment réduire la taille d'une partition d'un système existant pour libérer de la place.

* Stockage externe [[Glossaire#USB|USB]] (clé USB, disque dur externe)
** Partitionnement, espace minimum.
** Installation classique ou live.

* [[Glossaire#Live CD|Live CD]].
** Devrait être gravé sur un réinscriptible (RW), un live CD permet de ne pas installer le système sur l'ordinateur hôte et pour certains de conserver ses données d'une session à l'autre.

== Quel fichier télécharger ==

Télécharger les fichiers d'installation de Debian qui correspondent à ses besoins.

=== Architecture matérielle ===

Les fichiers à télécharger sont différents pour chaque type de processeur.

* alpha : Pour les processeurs [http://fr.wikipedia.org/wiki/DEC_Alpha DEC Alpha].

* amd64 : Pour les processeurs [http://fr.wikipedia.org/wiki/AMD64 AMD64], aussi appelés [http://fr.wikipedia.org/wiki/Intel_64 Intel 64], [http://fr.wikipedia.org/wiki/X64 x64] ou encore [http://fr.wikipedia.org/wiki/X86-64 x86-64]. La grande majorité des ordinateurs personnels vendus aujourd'hui sont de ce type.

* arm : Pour les processeurs de la famille [http://fr.wikipedia.org/wiki/Architecture_ARM ARM]

* armel

* hppa

* i386 : Pour les processeurs compatibles [http://fr.wikipedia.org/wiki/X86 Intel x86]. La grande majorité des ordinateurs personnels sont de ce type.

* ia64 : Pour les processeurs Itanium (intel) exclusivement

* mips

* mipsel

* powerpc : Mac

* sparc

* s390

=== Méthode d'installation ===

* [[Glossaire#DVD|DVD]] (&quot;DVD&quot; : 4,4 Go).
* CD (&quot;CD&quot; : 650 Mo).
* Clé USB (&quot;netinst&quot; : 180 Mo; &quot;businesscard&quot; : 40 Mo).
* Depuis un deuxième ordinateur relié par ethernet (&quot;mini&quot; : 10 Mo).
* Depuis son propre disque dur.

== Manuels de Debian ==

Manuels disponibles sur debian.org :

* [http://d-i.alioth.debian.org/manual/fr.i386/index.html Installation]

* [http://www.debian.org/doc/manuals/debian-reference/index.fr.html Référence]

* [http://qref.sourceforge.net/ Référence (qref.sourceforge.net)]

* [http://www.debian.org/doc/manuals/securing-debian-howto/index.fr.html Sécurisation]

* [http://www.debian.org/doc/manuals/debian-faq/index.fr.html Faq]

* [http://www.debian.org/releases/stable/i386/release-notes/ Notes de publication]

* [http://www.debian.org/doc/manuals/fr/debian-fr-howto/index.fr.html Utiliser et configurer Debian pour le français]

== Installation de Debian ==

Trucs et astuces sur l'installation de Debian :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1684 Installer Debian 3.1] (ghostintheshell)
    *  Live CD.
          o Réinscriptible, un live CD permet de conserver ses données d'une session à l'autre. 

[modifier] 
* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2195 Installation et Sécurisation de sa Debian (part1)] (stonfi) Janvier 2006

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2221 Eléments d'optimisation du partitionnement] (mattotop) Février 2006

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7139 Install debian à partir du disque dur] (transpil)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7487 (Howto) Installation de Debian Etch] (d2_racing)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=10462 Comment grub peut sauver le monde] (MisterFreez)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13009 Installer directement Debian sid, mode graphique, et lilo] (talogue)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=12674 Booter sur USB lorsque le BIOS ne le permet pas] (AnatomicJC)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14885 Créer votre live-cd/usb grace à live-helper] (yoshi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14626 (Débutant) Installation et config. d'un système graphique] (Dendrond)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=7825 (How-To)Dual boot Vista Debian] (Anoyzthen)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=17111 installation debian:] (panthere)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=14673 Installation chroot 32 bits transparent] (fran.b)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=19772 Script: Aide à la création pour une installation automatisée] (mistermat)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=21021 Comment j'ai testé l'ext4 sans conversion de partition] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=22056 installer debian sid en ext4 à partir de linux] (h2osiden)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23421 mount et fstab pour les nuls] (kna)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 Installer une Lenny avec debootstrap et chroot] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23255 Installation de Debian depuis clé usb (ultra-simple)] (nanard)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23693 Installation de Debian par le réseau avec PXE] (lol)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24454 Installation via clé USB et sans réseau d'une Debian testing] (Knucky)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=18898 Créer sa clé USB live lenny personnalisée] (seb-ksl)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=23531 Installer une Lenny avec debootstrap et chroot] (lol)

=== Liens externes ===

Liens externes sur l'installation de Debian :

* [http://giminik.developpez.com/articles/debian-gnu-linux/os-installation/ giminik.developpez.com]

* [http://www.coagul.org/ www.coagul.org]

* [http://www.michauko.org/docs/debian_testing/ www.michauko.org]

* [http://wiki.debian.org/fr/DebianReleases Les différentes versions de Debian]

* [http://wiki.debian.org/fr/DebianInstall Obtenir Debian]

* [http://wiki.debian.org/fr/DebianNetworkInstall Installation par le réseau]

* [http://wiki.debian.org/fr/FromWindowsToDebian Passer de Windows à Debian]

* [http://wiki.debian.org/InstallFAQ Faq]

* [http://wiki.debian.org/fr/LennyIllustratedInstall Guide d'installation illustré]

* [http://www.osnews.com/story/2016 Installation de Debian 3.0 très détaillée]

== Juste après l'installation ==

Trucs et astuces sur la configuration de Debian juste après l'installation :

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1856 Ajouter des résolutions biscornues dans son xorg.conf] (mattotop)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2751 Créer et redimensionner ses partitions après installation] (Damsss)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13225 (Clavier) Personnaliser son clavier] (ripat) 

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=20845 Debian deblobé facile] (cantor)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1806 (Discussion) Recompilation de son kernel] (Ashgenesis)

* [http://ashgenesis.developpez.com/linux/kernel-debian/ (Discussion) Recompilation de son kernel] (Ashgenesis)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=18271 Fixer le nommage vos partitions avec l'UUID] (kna)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=24799 Choisir le nom d'un périphérique lors de son branchement] (L0u!$)

== Installation de logiciels ==

Trucs et astuces sur l'installation de logiciels :

*  http://www.debian-fr.org/sources-de-paquets-les-bases-t39329.html Sources de paquets : les bases (sources.list) 	

* [http://forum.debian-fr.org/viewtopic.php?f=1&amp;t=2821 Vos logiciels préférés] (avision)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1728 Comment rester en stable tout en ayant les derniers noyaux] (Ashgenesis)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2966 Comment trouver les bons modules Debian selon votre config ?] (Korben Dallas)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=13757 Gestion du fichier preferences (ébauche)] (fran.b)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1969 atp/dpkg mémo] (stonfi)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=1957 KDE configuration pas à pas] (gwadboy)

* [http://forum.debian-fr.org/viewtopic.php?f=8&amp;t=2224 Gestion des Paquets .deb sous Debian avec dpkg et apt-get] (dexmon)

=== Liens externes ===

Sites pour la recherche d'un logiciel :

* [http://www.debian.org/distrib/packages#view Tous les paquets officiels de Debian]

* [http://linuxappfinder.com/ linuxappfinder.com]

* [http://sourceforge.net/ sourceforge.net]

* [http://freshmeat.net/ freshmeat.net]

* [http://www.gnomefiles.org/ gnomefiles.org : logiciels GTK+]

* [http://www.gnu.org/software/ gnu.org/software/]

* [http://www.framasoft.net/ framasoft.net]

[[Catégorie:Manuel]]
[[Catégorie:Installation]]</text>
      <sha1>3ff7na67t52jmbxgms7oms0pmk7fe9a</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Manuel de sécurité</title>
    <ns>0</ns>
    <id>735</id>
    <revision>
      <id>3246</id>
      <timestamp>2011-08-10T08:24:24Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « '''Manuel de sécurisation'''  Nous allons essayer de présenter ici d'une manière simple la façon de sécuriser une machine sous Debian. La tâche est complexe et ne pourr... »</comment>
      <text xml:space="preserve" bytes="5111">'''Manuel de sécurisation'''

Nous allons essayer de présenter ici d'une manière simple la façon de sécuriser une machine sous Debian.
La tâche est complexe et ne pourra pas être exhaustive...

== Sécuriser la machine physique ==

La première chose à étudier est la sécurisation de votre machine physique!
A moins d'être enfermée dans un coffre fort, n'importe qui peut y accéder. Le clavier est une porte d'entrée...

Empêchez le système de démarrer sur le lecteur de CD/DVD. Avec un live CD n'importe qui est capable de modifier votre mot de passe root...

Mettez un mot de passe à votre bios pour empêcher qu'on active le démarrage sur le CD/DVD

Si c'est possible prévoyez un système anti-intrusion à votre boitier. Il existe en effet un jumper sur presque toutes les carte mères qui permet de remettre le bios (et donc le mot de passe) à zéro...

== Les mots de passe ==

=== Le mot de passe root ===

Inutile de préciser que le mot de passe root doit être très &quot;fort&quot;
Ce mot de passe devrait contenir:

Des lettres majuscules;
Des lettres minuscules;
Des nombres;
Des caractère &quot;spéciaux&quot; (lettre avec accent, tiret, point virgule...)

Ne pas être un mot d'un dictionnaire (français et etranger), ne pas être une date de naissance, etc.

Une bonne approche est d'utiliser un programme de génération de mots de passe.
Debian fournit les paquets makepasswd, apg et pwgen qui contiennent des programmes (dont le nom est le même que celui du paquet) qui peuvent être utilisés dans ce but.

* [[Makepasswd]] génère des mots de passe vraiment aléatoires avec un accent sur la sécurité plus que la présence dans un dictionnaire;
* [[pwgen]] essaie de créer des mots de passe sans signification, mais prononçables (bien sûr, cela dépend de votre langue maternelle);
* [[Apg]] dispose d'algorithmes pour les deux (il y a une version client/serveur pour ce programme, mais elle n'est pas incluse dans le paquet Debian).

=== Activez les mots de passe masqués ===

À la fin de l'installation, il vous sera demandé si les mots de passe masqués doivent être activés. Répondez oui à cette question ; ainsi les mots de passe seront stockés dans le fichier /etc/shadow.

Seul l'utilisateur root et le groupe shadow peuvent lire ce fichier, ainsi aucun utilisateur ne sera en mesure de récupérer une copie de ce fichier afin de le passer par un programme craqueur de mots de passe.

Vous pouvez basculer entre les mots de passe masqués et les mots de passes normaux à n'importe quel moment en utilisant shadowconfig.

== Alerte login Root ==

Il est possible, en éditant le fichier /root/.bashrc qui est exécuté au démarrage d'une sesion root de recevoir un e-mail de notification lorsqu'un login est effectué.

 # nano /root/.bashrc

Ajoutez la ligne (en modifiant l'adresse e-mail de destination) :

 echo 'Accès Shell Root le ' `date` `who` | mail -s `hostname` Shell Root de `who | cut -d&quot;(&quot; -f2 | cut -d&quot;)&quot; -f1` root@zehome.org

== Limitez les services et les programmes ==

Il est inutile d'avoir des services et/ou programmes inutilisés, faites la chasse à tout ce qui ne sert pas sur votre machine.
Si vous n'utilisez pas les services portmap, nfs et inetd (dans le cas d'un serveur web vous n'en avez pas besoin) :

Voici par exemple ce que vous pourriez retirer:

 # /etc/init.d/portmap stop
 # /etc/init.d/nfs-common stop
 # update-rc.d -f portmap remove
 # update-rc.d -f nfs-common remove
 # update-rc.d -f inetd remove
 # apt-get remove portmap
 # apt-get remove ppp

== Mettre son système à jour ==

Ce n'est pas mauvais de le rappeler encore une fois, un système à jour est plus sécurisé!

 apt-get update
 apt-get dist-upgrade

ou

 aptitude safe-upgrade

== [[Sauvegardes_généralités|Prévoyez des sauvegardes]] ==

== [[Root-su-sudo|Configuration de Sudo]] ==

== [[Netfilter/Iptables_introduction|iptables]] ==

== Les programmes permettant de se protéger ==

=== [[surveillance|surveillance]] ===

=== [[Logwatch|logwatch]] ===

=== [[Rkhunter|rkhunter]] ===

=== [[Chkrootkit|Chkrootkit]] ===

=== [[Fail2ban|fail2ban]] ===

== Sécurisation des services ==

=== [[Ssh|Sécurisation de ssh]] ===

=== [[Sécuriser_apache|apache]] ===

=== [[Sécuriser_son_serveur_mail|serveur mail]] ===

=== [[Sécuriser_son_serveur_ftp|ftp]] ===

== LIENS EXTERNES ==

* {{fr}} [http://www.debian.org/doc/manuals/securing-debian-howto/index.fr.html Manuel de sécurisation de Debian]
* {{en}} [http://www.debian.org/security/ Annonces de sécurité Debian]
* [http://www.debian-fr.org/outil-de-surveillance-serveur-t32718.html Sur le Forum: Outil de surveillance serveur]
* [http://www.debian-fr.org/je-suis-pirate-a-l-aide-t24068.html Sur le Forum: Je suis piraté ... à l'aide !]
* [http://www.debian-fr.org/securite-serveur-que-surveiller-t30452.html Sur le Forum: Sécurité serveur : que surveiller ?]
* [http://www.debian-fr.org/consulter-les-logs-quoi-ou-que-rechercher-t27590.html Sur le Forum: Consulter les logs : quoi, où, que rechercher.]

[[Utilisateur:Lol|Lol]] 10 août 2011 à 03:24 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>enakughja08709adl2gbofrvnvccebq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3248</id>
      <parentid>3246</parentid>
      <timestamp>2011-08-10T09:12:16Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <minor/>
      <comment>/* Alerte login Root */ remplacement nano -&gt; editor pour être plus générique</comment>
      <text xml:space="preserve" bytes="5113">'''Manuel de sécurisation'''

Nous allons essayer de présenter ici d'une manière simple la façon de sécuriser une machine sous Debian.
La tâche est complexe et ne pourra pas être exhaustive...

== Sécuriser la machine physique ==

La première chose à étudier est la sécurisation de votre machine physique!
A moins d'être enfermée dans un coffre fort, n'importe qui peut y accéder. Le clavier est une porte d'entrée...

Empêchez le système de démarrer sur le lecteur de CD/DVD. Avec un live CD n'importe qui est capable de modifier votre mot de passe root...

Mettez un mot de passe à votre bios pour empêcher qu'on active le démarrage sur le CD/DVD

Si c'est possible prévoyez un système anti-intrusion à votre boitier. Il existe en effet un jumper sur presque toutes les carte mères qui permet de remettre le bios (et donc le mot de passe) à zéro...

== Les mots de passe ==

=== Le mot de passe root ===

Inutile de préciser que le mot de passe root doit être très &quot;fort&quot;
Ce mot de passe devrait contenir:

Des lettres majuscules;
Des lettres minuscules;
Des nombres;
Des caractère &quot;spéciaux&quot; (lettre avec accent, tiret, point virgule...)

Ne pas être un mot d'un dictionnaire (français et etranger), ne pas être une date de naissance, etc.

Une bonne approche est d'utiliser un programme de génération de mots de passe.
Debian fournit les paquets makepasswd, apg et pwgen qui contiennent des programmes (dont le nom est le même que celui du paquet) qui peuvent être utilisés dans ce but.

* [[Makepasswd]] génère des mots de passe vraiment aléatoires avec un accent sur la sécurité plus que la présence dans un dictionnaire;
* [[pwgen]] essaie de créer des mots de passe sans signification, mais prononçables (bien sûr, cela dépend de votre langue maternelle);
* [[Apg]] dispose d'algorithmes pour les deux (il y a une version client/serveur pour ce programme, mais elle n'est pas incluse dans le paquet Debian).

=== Activez les mots de passe masqués ===

À la fin de l'installation, il vous sera demandé si les mots de passe masqués doivent être activés. Répondez oui à cette question ; ainsi les mots de passe seront stockés dans le fichier /etc/shadow.

Seul l'utilisateur root et le groupe shadow peuvent lire ce fichier, ainsi aucun utilisateur ne sera en mesure de récupérer une copie de ce fichier afin de le passer par un programme craqueur de mots de passe.

Vous pouvez basculer entre les mots de passe masqués et les mots de passes normaux à n'importe quel moment en utilisant shadowconfig.

== Alerte login Root ==

Il est possible, en éditant le fichier /root/.bashrc qui est exécuté au démarrage d'une sesion root de recevoir un e-mail de notification lorsqu'un login est effectué.

 # editor /root/.bashrc

Ajoutez la ligne (en modifiant l'adresse e-mail de destination) :

 echo 'Accès Shell Root le ' `date` `who` | mail -s `hostname` Shell Root de `who | cut -d&quot;(&quot; -f2 | cut -d&quot;)&quot; -f1` root@zehome.org

== Limitez les services et les programmes ==

Il est inutile d'avoir des services et/ou programmes inutilisés, faites la chasse à tout ce qui ne sert pas sur votre machine.
Si vous n'utilisez pas les services portmap, nfs et inetd (dans le cas d'un serveur web vous n'en avez pas besoin) :

Voici par exemple ce que vous pourriez retirer:

 # /etc/init.d/portmap stop
 # /etc/init.d/nfs-common stop
 # update-rc.d -f portmap remove
 # update-rc.d -f nfs-common remove
 # update-rc.d -f inetd remove
 # apt-get remove portmap
 # apt-get remove ppp

== Mettre son système à jour ==

Ce n'est pas mauvais de le rappeler encore une fois, un système à jour est plus sécurisé!

 apt-get update
 apt-get dist-upgrade

ou

 aptitude safe-upgrade

== [[Sauvegardes_généralités|Prévoyez des sauvegardes]] ==

== [[Root-su-sudo|Configuration de Sudo]] ==

== [[Netfilter/Iptables_introduction|iptables]] ==

== Les programmes permettant de se protéger ==

=== [[surveillance|surveillance]] ===

=== [[Logwatch|logwatch]] ===

=== [[Rkhunter|rkhunter]] ===

=== [[Chkrootkit|Chkrootkit]] ===

=== [[Fail2ban|fail2ban]] ===

== Sécurisation des services ==

=== [[Ssh|Sécurisation de ssh]] ===

=== [[Sécuriser_apache|apache]] ===

=== [[Sécuriser_son_serveur_mail|serveur mail]] ===

=== [[Sécuriser_son_serveur_ftp|ftp]] ===

== LIENS EXTERNES ==

* {{fr}} [http://www.debian.org/doc/manuals/securing-debian-howto/index.fr.html Manuel de sécurisation de Debian]
* {{en}} [http://www.debian.org/security/ Annonces de sécurité Debian]
* [http://www.debian-fr.org/outil-de-surveillance-serveur-t32718.html Sur le Forum: Outil de surveillance serveur]
* [http://www.debian-fr.org/je-suis-pirate-a-l-aide-t24068.html Sur le Forum: Je suis piraté ... à l'aide !]
* [http://www.debian-fr.org/securite-serveur-que-surveiller-t30452.html Sur le Forum: Sécurité serveur : que surveiller ?]
* [http://www.debian-fr.org/consulter-les-logs-quoi-ou-que-rechercher-t27590.html Sur le Forum: Consulter les logs : quoi, où, que rechercher.]

[[Utilisateur:Lol|Lol]] 10 août 2011 à 03:24 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>s77i51qr5hjcox2q0yigpsfqh5yjaif</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3268</id>
      <parentid>3248</parentid>
      <timestamp>2011-08-12T05:26:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Le mot de passe root */</comment>
      <text xml:space="preserve" bytes="5188">'''Manuel de sécurisation'''

Nous allons essayer de présenter ici d'une manière simple la façon de sécuriser une machine sous Debian.
La tâche est complexe et ne pourra pas être exhaustive...

== Sécuriser la machine physique ==

La première chose à étudier est la sécurisation de votre machine physique!
A moins d'être enfermée dans un coffre fort, n'importe qui peut y accéder. Le clavier est une porte d'entrée...

Empêchez le système de démarrer sur le lecteur de CD/DVD. Avec un live CD n'importe qui est capable de modifier votre mot de passe root...

Mettez un mot de passe à votre bios pour empêcher qu'on active le démarrage sur le CD/DVD

Si c'est possible prévoyez un système anti-intrusion à votre boitier. Il existe en effet un jumper sur presque toutes les carte mères qui permet de remettre le bios (et donc le mot de passe) à zéro...

== Les mots de passe ==

=== Le mot de passe root ===

Inutile de préciser que le mot de passe root doit être très &quot;fort&quot;
Ce mot de passe devrait contenir:

Des lettres majuscules;
Des lettres minuscules;
Des nombres;
Des caractère &quot;spéciaux&quot; (lettre avec accent, tiret, point virgule...)

Ne pas être un mot d'un dictionnaire (français et etranger), ne pas être une date de naissance, etc.

Une bonne approche est d'utiliser un programme de génération de mots de passe.
Debian fournit les paquets makepasswd, apg et pwgen qui contiennent des programmes (dont le nom est le même que celui du paquet) qui peuvent être utilisés dans ce but.

* [[Generation_mots_de_passe#Makepasswd]] génère des mots de passe vraiment aléatoires avec un accent sur la sécurité plus que la présence dans un dictionnaire;
* [[Generation_mots_de_passe#Pwgen]] essaie de créer des mots de passe sans signification, mais prononçables (bien sûr, cela dépend de votre langue maternelle);
* [[Generation_mots_de_passe#Apg]] dispose d'algorithmes pour les deux (il y a une version client/serveur pour ce programme, mais elle n'est pas incluse dans le paquet Debian).

=== Activez les mots de passe masqués ===

À la fin de l'installation, il vous sera demandé si les mots de passe masqués doivent être activés. Répondez oui à cette question ; ainsi les mots de passe seront stockés dans le fichier /etc/shadow.

Seul l'utilisateur root et le groupe shadow peuvent lire ce fichier, ainsi aucun utilisateur ne sera en mesure de récupérer une copie de ce fichier afin de le passer par un programme craqueur de mots de passe.

Vous pouvez basculer entre les mots de passe masqués et les mots de passes normaux à n'importe quel moment en utilisant shadowconfig.

== Alerte login Root ==

Il est possible, en éditant le fichier /root/.bashrc qui est exécuté au démarrage d'une sesion root de recevoir un e-mail de notification lorsqu'un login est effectué.

 # editor /root/.bashrc

Ajoutez la ligne (en modifiant l'adresse e-mail de destination) :

 echo 'Accès Shell Root le ' `date` `who` | mail -s `hostname` Shell Root de `who | cut -d&quot;(&quot; -f2 | cut -d&quot;)&quot; -f1` root@zehome.org

== Limitez les services et les programmes ==

Il est inutile d'avoir des services et/ou programmes inutilisés, faites la chasse à tout ce qui ne sert pas sur votre machine.
Si vous n'utilisez pas les services portmap, nfs et inetd (dans le cas d'un serveur web vous n'en avez pas besoin) :

Voici par exemple ce que vous pourriez retirer:

 # /etc/init.d/portmap stop
 # /etc/init.d/nfs-common stop
 # update-rc.d -f portmap remove
 # update-rc.d -f nfs-common remove
 # update-rc.d -f inetd remove
 # apt-get remove portmap
 # apt-get remove ppp

== Mettre son système à jour ==

Ce n'est pas mauvais de le rappeler encore une fois, un système à jour est plus sécurisé!

 apt-get update
 apt-get dist-upgrade

ou

 aptitude safe-upgrade

== [[Sauvegardes_généralités|Prévoyez des sauvegardes]] ==

== [[Root-su-sudo|Configuration de Sudo]] ==

== [[Netfilter/Iptables_introduction|iptables]] ==

== Les programmes permettant de se protéger ==

=== [[surveillance|surveillance]] ===

=== [[Logwatch|logwatch]] ===

=== [[Rkhunter|rkhunter]] ===

=== [[Chkrootkit|Chkrootkit]] ===

=== [[Fail2ban|fail2ban]] ===

== Sécurisation des services ==

=== [[Ssh|Sécurisation de ssh]] ===

=== [[Sécuriser_apache|apache]] ===

=== [[Sécuriser_son_serveur_mail|serveur mail]] ===

=== [[Sécuriser_son_serveur_ftp|ftp]] ===

== LIENS EXTERNES ==

* {{fr}} [http://www.debian.org/doc/manuals/securing-debian-howto/index.fr.html Manuel de sécurisation de Debian]
* {{en}} [http://www.debian.org/security/ Annonces de sécurité Debian]
* [http://www.debian-fr.org/outil-de-surveillance-serveur-t32718.html Sur le Forum: Outil de surveillance serveur]
* [http://www.debian-fr.org/je-suis-pirate-a-l-aide-t24068.html Sur le Forum: Je suis piraté ... à l'aide !]
* [http://www.debian-fr.org/securite-serveur-que-surveiller-t30452.html Sur le Forum: Sécurité serveur : que surveiller ?]
* [http://www.debian-fr.org/consulter-les-logs-quoi-ou-que-rechercher-t27590.html Sur le Forum: Consulter les logs : quoi, où, que rechercher.]

[[Utilisateur:Lol|Lol]] 10 août 2011 à 03:24 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>2yvbb8zok6x7j5tghazry5fgcfo9jdh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3269</id>
      <parentid>3268</parentid>
      <timestamp>2011-08-12T05:27:16Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Le mot de passe root */</comment>
      <text xml:space="preserve" bytes="5209">'''Manuel de sécurisation'''

Nous allons essayer de présenter ici d'une manière simple la façon de sécuriser une machine sous Debian.
La tâche est complexe et ne pourra pas être exhaustive...

== Sécuriser la machine physique ==

La première chose à étudier est la sécurisation de votre machine physique!
A moins d'être enfermée dans un coffre fort, n'importe qui peut y accéder. Le clavier est une porte d'entrée...

Empêchez le système de démarrer sur le lecteur de CD/DVD. Avec un live CD n'importe qui est capable de modifier votre mot de passe root...

Mettez un mot de passe à votre bios pour empêcher qu'on active le démarrage sur le CD/DVD

Si c'est possible prévoyez un système anti-intrusion à votre boitier. Il existe en effet un jumper sur presque toutes les carte mères qui permet de remettre le bios (et donc le mot de passe) à zéro...

== Les mots de passe ==

=== Le mot de passe root ===

Inutile de préciser que le mot de passe root doit être très &quot;fort&quot;
Ce mot de passe devrait contenir:

Des lettres majuscules;
Des lettres minuscules;
Des nombres;
Des caractère &quot;spéciaux&quot; (lettre avec accent, tiret, point virgule...)

Ne pas être un mot d'un dictionnaire (français et etranger), ne pas être une date de naissance, etc.

Une bonne approche est d'utiliser un programme de génération de mots de passe.
Debian fournit les paquets makepasswd, apg et pwgen qui contiennent des programmes (dont le nom est le même que celui du paquet) qui peuvent être utilisés dans ce but.

* [[Generation_mots_de_passe#Makepasswd|Makepasswd]] génère des mots de passe vraiment aléatoires avec un accent sur la sécurité plus que la présence dans un dictionnaire;
* [[Generation_mots_de_passe#Pwgen|Pwgen]] essaie de créer des mots de passe sans signification, mais prononçables (bien sûr, cela dépend de votre langue maternelle);
* [[Generation_mots_de_passe#Apg|Apg]] dispose d'algorithmes pour les deux (il y a une version client/serveur pour ce programme, mais elle n'est pas incluse dans le paquet Debian).

=== Activez les mots de passe masqués ===

À la fin de l'installation, il vous sera demandé si les mots de passe masqués doivent être activés. Répondez oui à cette question ; ainsi les mots de passe seront stockés dans le fichier /etc/shadow.

Seul l'utilisateur root et le groupe shadow peuvent lire ce fichier, ainsi aucun utilisateur ne sera en mesure de récupérer une copie de ce fichier afin de le passer par un programme craqueur de mots de passe.

Vous pouvez basculer entre les mots de passe masqués et les mots de passes normaux à n'importe quel moment en utilisant shadowconfig.

== Alerte login Root ==

Il est possible, en éditant le fichier /root/.bashrc qui est exécuté au démarrage d'une sesion root de recevoir un e-mail de notification lorsqu'un login est effectué.

 # editor /root/.bashrc

Ajoutez la ligne (en modifiant l'adresse e-mail de destination) :

 echo 'Accès Shell Root le ' `date` `who` | mail -s `hostname` Shell Root de `who | cut -d&quot;(&quot; -f2 | cut -d&quot;)&quot; -f1` root@zehome.org

== Limitez les services et les programmes ==

Il est inutile d'avoir des services et/ou programmes inutilisés, faites la chasse à tout ce qui ne sert pas sur votre machine.
Si vous n'utilisez pas les services portmap, nfs et inetd (dans le cas d'un serveur web vous n'en avez pas besoin) :

Voici par exemple ce que vous pourriez retirer:

 # /etc/init.d/portmap stop
 # /etc/init.d/nfs-common stop
 # update-rc.d -f portmap remove
 # update-rc.d -f nfs-common remove
 # update-rc.d -f inetd remove
 # apt-get remove portmap
 # apt-get remove ppp

== Mettre son système à jour ==

Ce n'est pas mauvais de le rappeler encore une fois, un système à jour est plus sécurisé!

 apt-get update
 apt-get dist-upgrade

ou

 aptitude safe-upgrade

== [[Sauvegardes_généralités|Prévoyez des sauvegardes]] ==

== [[Root-su-sudo|Configuration de Sudo]] ==

== [[Netfilter/Iptables_introduction|iptables]] ==

== Les programmes permettant de se protéger ==

=== [[surveillance|surveillance]] ===

=== [[Logwatch|logwatch]] ===

=== [[Rkhunter|rkhunter]] ===

=== [[Chkrootkit|Chkrootkit]] ===

=== [[Fail2ban|fail2ban]] ===

== Sécurisation des services ==

=== [[Ssh|Sécurisation de ssh]] ===

=== [[Sécuriser_apache|apache]] ===

=== [[Sécuriser_son_serveur_mail|serveur mail]] ===

=== [[Sécuriser_son_serveur_ftp|ftp]] ===

== LIENS EXTERNES ==

* {{fr}} [http://www.debian.org/doc/manuals/securing-debian-howto/index.fr.html Manuel de sécurisation de Debian]
* {{en}} [http://www.debian.org/security/ Annonces de sécurité Debian]
* [http://www.debian-fr.org/outil-de-surveillance-serveur-t32718.html Sur le Forum: Outil de surveillance serveur]
* [http://www.debian-fr.org/je-suis-pirate-a-l-aide-t24068.html Sur le Forum: Je suis piraté ... à l'aide !]
* [http://www.debian-fr.org/securite-serveur-que-surveiller-t30452.html Sur le Forum: Sécurité serveur : que surveiller ?]
* [http://www.debian-fr.org/consulter-les-logs-quoi-ou-que-rechercher-t27590.html Sur le Forum: Consulter les logs : quoi, où, que rechercher.]

[[Utilisateur:Lol|Lol]] 10 août 2011 à 03:24 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>m9rrk8sl5wo91cswfmlawot7rh31wfv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3399</id>
      <parentid>3269</parentid>
      <timestamp>2011-08-27T12:18:12Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Sécurisation des services */ Sécuriser_Apache2</comment>
      <text xml:space="preserve" bytes="5222">'''Manuel de sécurisation'''

Nous allons essayer de présenter ici d'une manière simple la façon de sécuriser une machine sous Debian.
La tâche est complexe et ne pourra pas être exhaustive...

== Sécuriser la machine physique ==

La première chose à étudier est la sécurisation de votre machine physique!
A moins d'être enfermée dans un coffre fort, n'importe qui peut y accéder. Le clavier est une porte d'entrée...

Empêchez le système de démarrer sur le lecteur de CD/DVD. Avec un live CD n'importe qui est capable de modifier votre mot de passe root...

Mettez un mot de passe à votre bios pour empêcher qu'on active le démarrage sur le CD/DVD

Si c'est possible prévoyez un système anti-intrusion à votre boitier. Il existe en effet un jumper sur presque toutes les carte mères qui permet de remettre le bios (et donc le mot de passe) à zéro...

== Les mots de passe ==

=== Le mot de passe root ===

Inutile de préciser que le mot de passe root doit être très &quot;fort&quot;
Ce mot de passe devrait contenir:

Des lettres majuscules;
Des lettres minuscules;
Des nombres;
Des caractère &quot;spéciaux&quot; (lettre avec accent, tiret, point virgule...)

Ne pas être un mot d'un dictionnaire (français et etranger), ne pas être une date de naissance, etc.

Une bonne approche est d'utiliser un programme de génération de mots de passe.
Debian fournit les paquets makepasswd, apg et pwgen qui contiennent des programmes (dont le nom est le même que celui du paquet) qui peuvent être utilisés dans ce but.

* [[Generation_mots_de_passe#Makepasswd|Makepasswd]] génère des mots de passe vraiment aléatoires avec un accent sur la sécurité plus que la présence dans un dictionnaire;
* [[Generation_mots_de_passe#Pwgen|Pwgen]] essaie de créer des mots de passe sans signification, mais prononçables (bien sûr, cela dépend de votre langue maternelle);
* [[Generation_mots_de_passe#Apg|Apg]] dispose d'algorithmes pour les deux (il y a une version client/serveur pour ce programme, mais elle n'est pas incluse dans le paquet Debian).

=== Activez les mots de passe masqués ===

À la fin de l'installation, il vous sera demandé si les mots de passe masqués doivent être activés. Répondez oui à cette question ; ainsi les mots de passe seront stockés dans le fichier /etc/shadow.

Seul l'utilisateur root et le groupe shadow peuvent lire ce fichier, ainsi aucun utilisateur ne sera en mesure de récupérer une copie de ce fichier afin de le passer par un programme craqueur de mots de passe.

Vous pouvez basculer entre les mots de passe masqués et les mots de passes normaux à n'importe quel moment en utilisant shadowconfig.

== Alerte login Root ==

Il est possible, en éditant le fichier /root/.bashrc qui est exécuté au démarrage d'une sesion root de recevoir un e-mail de notification lorsqu'un login est effectué.

 # editor /root/.bashrc

Ajoutez la ligne (en modifiant l'adresse e-mail de destination) :

 echo 'Accès Shell Root le ' `date` `who` | mail -s `hostname` Shell Root de `who | cut -d&quot;(&quot; -f2 | cut -d&quot;)&quot; -f1` root@zehome.org

== Limitez les services et les programmes ==

Il est inutile d'avoir des services et/ou programmes inutilisés, faites la chasse à tout ce qui ne sert pas sur votre machine.
Si vous n'utilisez pas les services portmap, nfs et inetd (dans le cas d'un serveur web vous n'en avez pas besoin) :

Voici par exemple ce que vous pourriez retirer:

 # /etc/init.d/portmap stop
 # /etc/init.d/nfs-common stop
 # update-rc.d -f portmap remove
 # update-rc.d -f nfs-common remove
 # update-rc.d -f inetd remove
 # apt-get remove portmap
 # apt-get remove ppp

== Mettre son système à jour ==

Ce n'est pas mauvais de le rappeler encore une fois, un système à jour est plus sécurisé!

 apt-get update
 apt-get dist-upgrade

ou

 aptitude safe-upgrade

== [[Sauvegardes_généralités|Prévoyez des sauvegardes]] ==

== [[Root-su-sudo|Configuration de Sudo]] ==

== [[Netfilter/Iptables_introduction|iptables]] ==

== Les programmes permettant de se protéger ==

=== [[surveillance|surveillance]] ===

=== [[Logwatch|logwatch]] ===

=== [[Rkhunter|rkhunter]] ===

=== [[Chkrootkit|Chkrootkit]] ===

=== [[Fail2ban|fail2ban]] ===

== Sécurisation des services ==

=== [[Ssh|Sécurisation de ssh]] ===

=== [[Sécuriser_Apache2|Sécuriser Apache2]] ===

=== [[Sécuriser_son_serveur_mail|serveur mail]] ===

=== [[Sécuriser_son_serveur_ftp|ftp]] ===

== LIENS EXTERNES ==

* {{fr}} [http://www.debian.org/doc/manuals/securing-debian-howto/index.fr.html Manuel de sécurisation de Debian]
* {{en}} [http://www.debian.org/security/ Annonces de sécurité Debian]
* [http://www.debian-fr.org/outil-de-surveillance-serveur-t32718.html Sur le Forum: Outil de surveillance serveur]
* [http://www.debian-fr.org/je-suis-pirate-a-l-aide-t24068.html Sur le Forum: Je suis piraté ... à l'aide !]
* [http://www.debian-fr.org/securite-serveur-que-surveiller-t30452.html Sur le Forum: Sécurité serveur : que surveiller ?]
* [http://www.debian-fr.org/consulter-les-logs-quoi-ou-que-rechercher-t27590.html Sur le Forum: Consulter les logs : quoi, où, que rechercher.]

[[Utilisateur:Lol|Lol]] 10 août 2011 à 03:24 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>saifiwhz5irisc2h67lmweopauhwxs3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3546</id>
      <parentid>3399</parentid>
      <timestamp>2011-11-13T14:46:35Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Alerte login ssh */</comment>
      <text xml:space="preserve" bytes="5401">'''Manuel de sécurisation'''

Nous allons essayer de présenter ici d'une manière simple la façon de sécuriser une machine sous Debian.
La tâche est complexe et ne pourra pas être exhaustive...

== Sécuriser la machine physique ==

La première chose à étudier est la sécurisation de votre machine physique!
A moins d'être enfermée dans un coffre fort, n'importe qui peut y accéder. Le clavier est une porte d'entrée...

Empêchez le système de démarrer sur le lecteur de CD/DVD. Avec un live CD n'importe qui est capable de modifier votre mot de passe root...

Mettez un mot de passe à votre bios pour empêcher qu'on active le démarrage sur le CD/DVD

Si c'est possible prévoyez un système anti-intrusion à votre boitier. Il existe en effet un jumper sur presque toutes les carte mères qui permet de remettre le bios (et donc le mot de passe) à zéro...

== Les mots de passe ==

=== Le mot de passe root ===

Inutile de préciser que le mot de passe root doit être très &quot;fort&quot;
Ce mot de passe devrait contenir:

Des lettres majuscules;
Des lettres minuscules;
Des nombres;
Des caractère &quot;spéciaux&quot; (lettre avec accent, tiret, point virgule...)

Ne pas être un mot d'un dictionnaire (français et etranger), ne pas être une date de naissance, etc.

Une bonne approche est d'utiliser un programme de génération de mots de passe.
Debian fournit les paquets makepasswd, apg et pwgen qui contiennent des programmes (dont le nom est le même que celui du paquet) qui peuvent être utilisés dans ce but.

* [[Generation_mots_de_passe#Makepasswd|Makepasswd]] génère des mots de passe vraiment aléatoires avec un accent sur la sécurité plus que la présence dans un dictionnaire;
* [[Generation_mots_de_passe#Pwgen|Pwgen]] essaie de créer des mots de passe sans signification, mais prononçables (bien sûr, cela dépend de votre langue maternelle);
* [[Generation_mots_de_passe#Apg|Apg]] dispose d'algorithmes pour les deux (il y a une version client/serveur pour ce programme, mais elle n'est pas incluse dans le paquet Debian).

=== Activez les mots de passe masqués ===

À la fin de l'installation, il vous sera demandé si les mots de passe masqués doivent être activés. Répondez oui à cette question ; ainsi les mots de passe seront stockés dans le fichier /etc/shadow.

Seul l'utilisateur root et le groupe shadow peuvent lire ce fichier, ainsi aucun utilisateur ne sera en mesure de récupérer une copie de ce fichier afin de le passer par un programme craqueur de mots de passe.

Vous pouvez basculer entre les mots de passe masqués et les mots de passes normaux à n'importe quel moment en utilisant shadowconfig.

== Alerte login SSH ==

Il est possible, en en créant le fichier /etc/ssh/sshrc qui est exécuté au démarrage d'une session ssh de recevoir un e-mail de notification lorsqu'un login est effectué.

 # editor /etc/ssh/sshrc
&lt;code&gt;
#!/bin/sh
# source: http://blog.uggy.org/post/2009/06/05/...

if [ $(id -u) -ne 0 ]; then exit 0; fi

DATE=`date &quot;+%d.%m.%Y--%Hh%Mm&quot;`
IP=`echo $SSH_CONNECTION | awk '{print $1}'`
REVERSE=`dig -x $IP +short`

echo &quot;Connexion de $USER sur $HOSTNAME

IP: $IP
ReverseDNS: $REVERSE
Date: $DATE

&quot; | mail -s &quot;Connexion de $USER sur $HOSTNAME&quot; utilisateur@domaine.ltd
&lt;/code&gt;

== Limitez les services et les programmes ==

Il est inutile d'avoir des services et/ou programmes inutilisés, faites la chasse à tout ce qui ne sert pas sur votre machine.
Si vous n'utilisez pas les services portmap, nfs et inetd (dans le cas d'un serveur web vous n'en avez pas besoin) :

Voici par exemple ce que vous pourriez retirer:

 # /etc/init.d/portmap stop
 # /etc/init.d/nfs-common stop
 # update-rc.d -f portmap remove
 # update-rc.d -f nfs-common remove
 # update-rc.d -f inetd remove
 # apt-get remove portmap
 # apt-get remove ppp

== Mettre son système à jour ==

Ce n'est pas mauvais de le rappeler encore une fois, un système à jour est plus sécurisé!

 apt-get update
 apt-get dist-upgrade

ou

 aptitude safe-upgrade

== [[Sauvegardes_généralités|Prévoyez des sauvegardes]] ==

== [[Root-su-sudo|Configuration de Sudo]] ==

== [[Netfilter/Iptables_introduction|iptables]] ==

== Les programmes permettant de se protéger ==

=== [[surveillance|surveillance]] ===

=== [[Logwatch|logwatch]] ===

=== [[Rkhunter|rkhunter]] ===

=== [[Chkrootkit|Chkrootkit]] ===

=== [[Fail2ban|fail2ban]] ===

== Sécurisation des services ==

=== [[Ssh|Sécurisation de ssh]] ===

=== [[Sécuriser_Apache2|Sécuriser Apache2]] ===

=== [[Sécuriser_son_serveur_mail|serveur mail]] ===

=== [[Sécuriser_son_serveur_ftp|ftp]] ===

== LIENS EXTERNES ==

* {{fr}} [http://www.debian.org/doc/manuals/securing-debian-howto/index.fr.html Manuel de sécurisation de Debian]
* {{en}} [http://www.debian.org/security/ Annonces de sécurité Debian]
* [http://www.debian-fr.org/outil-de-surveillance-serveur-t32718.html Sur le Forum: Outil de surveillance serveur]
* [http://www.debian-fr.org/je-suis-pirate-a-l-aide-t24068.html Sur le Forum: Je suis piraté ... à l'aide !]
* [http://www.debian-fr.org/securite-serveur-que-surveiller-t30452.html Sur le Forum: Sécurité serveur : que surveiller ?]
* [http://www.debian-fr.org/consulter-les-logs-quoi-ou-que-rechercher-t27590.html Sur le Forum: Consulter les logs : quoi, où, que rechercher.]

[[Utilisateur:Lol|Lol]] 10 août 2011 à 03:24 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>ntkk9rdfjrwg8ut72m11nqzupf5gfln</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4233</id>
      <parentid>3546</parentid>
      <timestamp>2012-05-12T11:52:48Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Alerte login SSH */</comment>
      <text xml:space="preserve" bytes="5398">'''Manuel de sécurisation'''

Nous allons essayer de présenter ici d'une manière simple la façon de sécuriser une machine sous Debian.
La tâche est complexe et ne pourra pas être exhaustive...

== Sécuriser la machine physique ==

La première chose à étudier est la sécurisation de votre machine physique!
A moins d'être enfermée dans un coffre fort, n'importe qui peut y accéder. Le clavier est une porte d'entrée...

Empêchez le système de démarrer sur le lecteur de CD/DVD. Avec un live CD n'importe qui est capable de modifier votre mot de passe root...

Mettez un mot de passe à votre bios pour empêcher qu'on active le démarrage sur le CD/DVD

Si c'est possible prévoyez un système anti-intrusion à votre boitier. Il existe en effet un jumper sur presque toutes les carte mères qui permet de remettre le bios (et donc le mot de passe) à zéro...

== Les mots de passe ==

=== Le mot de passe root ===

Inutile de préciser que le mot de passe root doit être très &quot;fort&quot;
Ce mot de passe devrait contenir:

Des lettres majuscules;
Des lettres minuscules;
Des nombres;
Des caractère &quot;spéciaux&quot; (lettre avec accent, tiret, point virgule...)

Ne pas être un mot d'un dictionnaire (français et etranger), ne pas être une date de naissance, etc.

Une bonne approche est d'utiliser un programme de génération de mots de passe.
Debian fournit les paquets makepasswd, apg et pwgen qui contiennent des programmes (dont le nom est le même que celui du paquet) qui peuvent être utilisés dans ce but.

* [[Generation_mots_de_passe#Makepasswd|Makepasswd]] génère des mots de passe vraiment aléatoires avec un accent sur la sécurité plus que la présence dans un dictionnaire;
* [[Generation_mots_de_passe#Pwgen|Pwgen]] essaie de créer des mots de passe sans signification, mais prononçables (bien sûr, cela dépend de votre langue maternelle);
* [[Generation_mots_de_passe#Apg|Apg]] dispose d'algorithmes pour les deux (il y a une version client/serveur pour ce programme, mais elle n'est pas incluse dans le paquet Debian).

=== Activez les mots de passe masqués ===

À la fin de l'installation, il vous sera demandé si les mots de passe masqués doivent être activés. Répondez oui à cette question ; ainsi les mots de passe seront stockés dans le fichier /etc/shadow.

Seul l'utilisateur root et le groupe shadow peuvent lire ce fichier, ainsi aucun utilisateur ne sera en mesure de récupérer une copie de ce fichier afin de le passer par un programme craqueur de mots de passe.

Vous pouvez basculer entre les mots de passe masqués et les mots de passes normaux à n'importe quel moment en utilisant shadowconfig.

== Alerte login SSH ==

Il est possible, en créant le fichier /etc/ssh/sshrc qui est exécuté au démarrage d'une session ssh de recevoir un e-mail de notification lorsqu'un login est effectué.

 # editor /etc/ssh/sshrc
&lt;code&gt;
#!/bin/sh
# source: http://blog.uggy.org/post/2009/06/05/...

if [ $(id -u) -ne 0 ]; then exit 0; fi

DATE=`date &quot;+%d.%m.%Y--%Hh%Mm&quot;`
IP=`echo $SSH_CONNECTION | awk '{print $1}'`
REVERSE=`dig -x $IP +short`

echo &quot;Connexion de $USER sur $HOSTNAME

IP: $IP
ReverseDNS: $REVERSE
Date: $DATE

&quot; | mail -s &quot;Connexion de $USER sur $HOSTNAME&quot; utilisateur@domaine.ltd
&lt;/code&gt;

== Limitez les services et les programmes ==

Il est inutile d'avoir des services et/ou programmes inutilisés, faites la chasse à tout ce qui ne sert pas sur votre machine.
Si vous n'utilisez pas les services portmap, nfs et inetd (dans le cas d'un serveur web vous n'en avez pas besoin) :

Voici par exemple ce que vous pourriez retirer:

 # /etc/init.d/portmap stop
 # /etc/init.d/nfs-common stop
 # update-rc.d -f portmap remove
 # update-rc.d -f nfs-common remove
 # update-rc.d -f inetd remove
 # apt-get remove portmap
 # apt-get remove ppp

== Mettre son système à jour ==

Ce n'est pas mauvais de le rappeler encore une fois, un système à jour est plus sécurisé!

 apt-get update
 apt-get dist-upgrade

ou

 aptitude safe-upgrade

== [[Sauvegardes_généralités|Prévoyez des sauvegardes]] ==

== [[Root-su-sudo|Configuration de Sudo]] ==

== [[Netfilter/Iptables_introduction|iptables]] ==

== Les programmes permettant de se protéger ==

=== [[surveillance|surveillance]] ===

=== [[Logwatch|logwatch]] ===

=== [[Rkhunter|rkhunter]] ===

=== [[Chkrootkit|Chkrootkit]] ===

=== [[Fail2ban|fail2ban]] ===

== Sécurisation des services ==

=== [[Ssh|Sécurisation de ssh]] ===

=== [[Sécuriser_Apache2|Sécuriser Apache2]] ===

=== [[Sécuriser_son_serveur_mail|serveur mail]] ===

=== [[Sécuriser_son_serveur_ftp|ftp]] ===

== LIENS EXTERNES ==

* {{fr}} [http://www.debian.org/doc/manuals/securing-debian-howto/index.fr.html Manuel de sécurisation de Debian]
* {{en}} [http://www.debian.org/security/ Annonces de sécurité Debian]
* [http://www.debian-fr.org/outil-de-surveillance-serveur-t32718.html Sur le Forum: Outil de surveillance serveur]
* [http://www.debian-fr.org/je-suis-pirate-a-l-aide-t24068.html Sur le Forum: Je suis piraté ... à l'aide !]
* [http://www.debian-fr.org/securite-serveur-que-surveiller-t30452.html Sur le Forum: Sécurité serveur : que surveiller ?]
* [http://www.debian-fr.org/consulter-les-logs-quoi-ou-que-rechercher-t27590.html Sur le Forum: Consulter les logs : quoi, où, que rechercher.]

[[Utilisateur:Lol|Lol]] 10 août 2011 à 03:24 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>fkr5p71f157blj7rzm0hvlvt5heeibm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4241</id>
      <parentid>4233</parentid>
      <timestamp>2012-05-15T06:25:47Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Alerte login SSH */</comment>
      <text xml:space="preserve" bytes="5481">'''Manuel de sécurisation'''

Nous allons essayer de présenter ici d'une manière simple la façon de sécuriser une machine sous Debian.
La tâche est complexe et ne pourra pas être exhaustive...

== Sécuriser la machine physique ==

La première chose à étudier est la sécurisation de votre machine physique!
A moins d'être enfermée dans un coffre fort, n'importe qui peut y accéder. Le clavier est une porte d'entrée...

Empêchez le système de démarrer sur le lecteur de CD/DVD. Avec un live CD n'importe qui est capable de modifier votre mot de passe root...

Mettez un mot de passe à votre bios pour empêcher qu'on active le démarrage sur le CD/DVD

Si c'est possible prévoyez un système anti-intrusion à votre boitier. Il existe en effet un jumper sur presque toutes les carte mères qui permet de remettre le bios (et donc le mot de passe) à zéro...

== Les mots de passe ==

=== Le mot de passe root ===

Inutile de préciser que le mot de passe root doit être très &quot;fort&quot;
Ce mot de passe devrait contenir:

Des lettres majuscules;
Des lettres minuscules;
Des nombres;
Des caractère &quot;spéciaux&quot; (lettre avec accent, tiret, point virgule...)

Ne pas être un mot d'un dictionnaire (français et etranger), ne pas être une date de naissance, etc.

Une bonne approche est d'utiliser un programme de génération de mots de passe.
Debian fournit les paquets makepasswd, apg et pwgen qui contiennent des programmes (dont le nom est le même que celui du paquet) qui peuvent être utilisés dans ce but.

* [[Generation_mots_de_passe#Makepasswd|Makepasswd]] génère des mots de passe vraiment aléatoires avec un accent sur la sécurité plus que la présence dans un dictionnaire;
* [[Generation_mots_de_passe#Pwgen|Pwgen]] essaie de créer des mots de passe sans signification, mais prononçables (bien sûr, cela dépend de votre langue maternelle);
* [[Generation_mots_de_passe#Apg|Apg]] dispose d'algorithmes pour les deux (il y a une version client/serveur pour ce programme, mais elle n'est pas incluse dans le paquet Debian).

=== Activez les mots de passe masqués ===

À la fin de l'installation, il vous sera demandé si les mots de passe masqués doivent être activés. Répondez oui à cette question ; ainsi les mots de passe seront stockés dans le fichier /etc/shadow.

Seul l'utilisateur root et le groupe shadow peuvent lire ce fichier, ainsi aucun utilisateur ne sera en mesure de récupérer une copie de ce fichier afin de le passer par un programme craqueur de mots de passe.

Vous pouvez basculer entre les mots de passe masqués et les mots de passes normaux à n'importe quel moment en utilisant shadowconfig.

== Alerte login SSH ==

Il est possible, en créant le fichier /etc/ssh/sshrc qui est exécuté au démarrage d'une session ssh de recevoir un e-mail de notification lorsqu'un login est effectué.

 # editor /etc/ssh/sshrc
&lt;code&gt;
#!/bin/sh
# source: http://blog.uggy.org/post/2009/06/05/...

if [ $(id -u) -ne 0 ]; then exit 0; fi

DATE=`date &quot;+%d.%m.%Y--%Hh%Mm&quot;`
IP=`echo $SSH_CONNECTION | awk '{print $1}'`
REVERSE=`dig -x $IP +short`

echo &quot;Connexion de $USER sur $HOSTNAME

IP: $IP
ReverseDNS: $REVERSE
Date: $DATE

&quot; | mail -s &quot;Connexion de $USER sur $HOSTNAME&quot; utilisateur@domaine.ltd
&lt;/code&gt;

Assurez-vous que le fichier n'est lisible que par root:
 chmod 600 /etc/ssh/sshrc

== Limitez les services et les programmes ==

Il est inutile d'avoir des services et/ou programmes inutilisés, faites la chasse à tout ce qui ne sert pas sur votre machine.
Si vous n'utilisez pas les services portmap, nfs et inetd (dans le cas d'un serveur web vous n'en avez pas besoin) :

Voici par exemple ce que vous pourriez retirer:

 # /etc/init.d/portmap stop
 # /etc/init.d/nfs-common stop
 # update-rc.d -f portmap remove
 # update-rc.d -f nfs-common remove
 # update-rc.d -f inetd remove
 # apt-get remove portmap
 # apt-get remove ppp

== Mettre son système à jour ==

Ce n'est pas mauvais de le rappeler encore une fois, un système à jour est plus sécurisé!

 apt-get update
 apt-get dist-upgrade

ou

 aptitude safe-upgrade

== [[Sauvegardes_généralités|Prévoyez des sauvegardes]] ==

== [[Root-su-sudo|Configuration de Sudo]] ==

== [[Netfilter/Iptables_introduction|iptables]] ==

== Les programmes permettant de se protéger ==

=== [[surveillance|surveillance]] ===

=== [[Logwatch|logwatch]] ===

=== [[Rkhunter|rkhunter]] ===

=== [[Chkrootkit|Chkrootkit]] ===

=== [[Fail2ban|fail2ban]] ===

== Sécurisation des services ==

=== [[Ssh|Sécurisation de ssh]] ===

=== [[Sécuriser_Apache2|Sécuriser Apache2]] ===

=== [[Sécuriser_son_serveur_mail|serveur mail]] ===

=== [[Sécuriser_son_serveur_ftp|ftp]] ===

== LIENS EXTERNES ==

* {{fr}} [http://www.debian.org/doc/manuals/securing-debian-howto/index.fr.html Manuel de sécurisation de Debian]
* {{en}} [http://www.debian.org/security/ Annonces de sécurité Debian]
* [http://www.debian-fr.org/outil-de-surveillance-serveur-t32718.html Sur le Forum: Outil de surveillance serveur]
* [http://www.debian-fr.org/je-suis-pirate-a-l-aide-t24068.html Sur le Forum: Je suis piraté ... à l'aide !]
* [http://www.debian-fr.org/securite-serveur-que-surveiller-t30452.html Sur le Forum: Sécurité serveur : que surveiller ?]
* [http://www.debian-fr.org/consulter-les-logs-quoi-ou-que-rechercher-t27590.html Sur le Forum: Consulter les logs : quoi, où, que rechercher.]

[[Utilisateur:Lol|Lol]] 10 août 2011 à 03:24 (CDT)
[[Catégorie:Sécurité]]</text>
      <sha1>lokdwwztc9iu2d72w6kw3jcwnob6i8e</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Materiel et Pilotes</title>
    <ns>0</ns>
    <id>1142</id>
    <revision>
      <id>4691</id>
      <timestamp>2012-10-30T11:29:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « &lt;u&gt;'''Matériel et Pilotes'''&lt;/u&gt;  {| width=&quot;100%&quot; | width=&quot;33%&quot; |•&amp;nbsp;[[identification matériel-pilotes|Outil Debian GNU/Linux d'identification matériel-pilotes]] |... »</comment>
      <text xml:space="preserve" bytes="1954">&lt;u&gt;'''Matériel et Pilotes'''&lt;/u&gt;

{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[identification matériel-pilotes|Outil Debian GNU/Linux d'identification matériel-pilotes]]
|
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Carte Vidéo'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Nvidia_et_Ati_pour_les_fainéants|Installation des pilotes Nvidia et Ati pour les fainéants]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Contrôleur audio'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Diagnostiquer_un_problème_alsa|Diagnostiquer un problème alsa]]
|
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Réseau'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Utilisation_de_ndiswrapper|Utilisation de ndiswrapper]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Désactiver_l'IPv6|Désactiver l'IPv6]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Imprimantes et Scanners'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Xerox_WorkCentre_5225_5230|Installer une xerox 5225]]
|
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Supports de données'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Ntfs|Ntfs]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Raid logiciel (mdadm) | Raid logiciel (mdadm)]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Matériels et Drivers Divers'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Wacom_bamboo_pen%26touch|Installation d'une tablette Wacom Bamboo Pen&amp;Touch]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Images_pour_firmwares_non_reconnus|Images pour firmwares non reconnus]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Cartes_vidéos_siliconmotion|Cartes vidéos siliconmotion]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Toshiba_Satellite_C670D|Installer Debian sur un Toshiba Satellite C670D]]
|
|
|}

----

{{Modèle:Accueil}}

[[Catégorie:Carte Vidéo]]
[[Catégorie:Controleur audio]]
[[Catégorie:Réseau]]
[[Catégorie:Gestion de l'alimentation]]
[[Catégorie:Imprimantes et Scanners]]
[[Catégorie:Supports de données]]
[[Catégorie:Matériel_et_Drivers_Divers‎]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>kzwmwo8u70op0jr48mp3b9p4op9on8d</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4716</id>
      <parentid>4691</parentid>
      <timestamp>2012-11-01T07:27:15Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2049">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Matériel et Pilotes'''&lt;/u&gt;

{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[identification matériel-pilotes|Outil Debian GNU/Linux d'identification matériel-pilotes]]
|
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Carte Vidéo'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Nvidia_et_Ati_pour_les_fainéants|Installation des pilotes Nvidia et Ati pour les fainéants]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Contrôleur audio'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Diagnostiquer_un_problème_alsa|Diagnostiquer un problème alsa]]
|
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Réseau'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Utilisation_de_ndiswrapper|Utilisation de ndiswrapper]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Désactiver_l'IPv6|Désactiver l'IPv6]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Imprimantes et Scanners'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Xerox_WorkCentre_5225_5230|Installer une xerox 5225]]
|
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Supports de données'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Ntfs|Ntfs]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Raid logiciel (mdadm) | Raid logiciel (mdadm)]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Matériels et Drivers Divers'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Wacom_bamboo_pen%26touch|Installation d'une tablette Wacom Bamboo Pen&amp;Touch]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Images_pour_firmwares_non_reconnus|Images pour firmwares non reconnus]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Cartes_vidéos_siliconmotion|Cartes vidéos siliconmotion]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Toshiba_Satellite_C670D|Installer Debian sur un Toshiba Satellite C670D]]
|
|
|}

----

{{Modèle:Accueil}}

[[Catégorie:Carte Vidéo]]
[[Catégorie:Controleur audio]]
[[Catégorie:Réseau]]
[[Catégorie:Gestion de l'alimentation]]
[[Catégorie:Imprimantes et Scanners]]
[[Catégorie:Supports de données]]
[[Catégorie:Matériel_et_Drivers_Divers‎]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>plzs21xchwa8yeb8g0h3k6e9365lwle</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4877</id>
      <parentid>4716</parentid>
      <timestamp>2013-01-14T18:02:05Z</timestamp>
      <contributor>
        <username>PengouinPdt</username>
        <id>249</id>
      </contributor>
      <minor/>
      <comment>ajout du lien vers imprimante epson</comment>
      <text xml:space="preserve" bytes="2147">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Matériel et Pilotes'''&lt;/u&gt;

{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[identification matériel-pilotes|Outil Debian GNU/Linux d'identification matériel-pilotes]]
|
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Carte Vidéo'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Nvidia_et_Ati_pour_les_fainéants|Installation des pilotes Nvidia et Ati pour les fainéants]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Contrôleur audio'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Diagnostiquer_un_problème_alsa|Diagnostiquer un problème alsa]]
|
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Réseau'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Utilisation_de_ndiswrapper|Utilisation de ndiswrapper]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Désactiver_l'IPv6|Désactiver l'IPv6]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Imprimantes et Scanners'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Gestion_Epson_par_depot|Gestion des imprimantes EPSON par depôt debian]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Xerox_WorkCentre_5225_5230|Installer une xerox 5225]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Supports de données'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Ntfs|Ntfs]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Raid logiciel (mdadm) | Raid logiciel (mdadm)]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Matériels et Drivers Divers'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Wacom_bamboo_pen%26touch|Installation d'une tablette Wacom Bamboo Pen&amp;Touch]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Images_pour_firmwares_non_reconnus|Images pour firmwares non reconnus]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Cartes_vidéos_siliconmotion|Cartes vidéos siliconmotion]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Toshiba_Satellite_C670D|Installer Debian sur un Toshiba Satellite C670D]]
|
|
|}

----

{{Modèle:Accueil}}

[[Catégorie:Carte Vidéo]]
[[Catégorie:Controleur audio]]
[[Catégorie:Réseau]]
[[Catégorie:Gestion de l'alimentation]]
[[Catégorie:Imprimantes et Scanners]]
[[Catégorie:Supports de données]]
[[Catégorie:Matériel_et_Drivers_Divers‎]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>m45ovw4mr3vymhafoi6nbb233x3f9xz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4880</id>
      <parentid>4877</parentid>
      <timestamp>2013-01-14T19:07:58Z</timestamp>
      <contributor>
        <username>PengouinPdt</username>
        <id>249</id>
      </contributor>
      <minor/>
      <comment>ajout du lien vers nvidia optimus bumblebee</comment>
      <text xml:space="preserve" bytes="2267">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Matériel et Pilotes'''&lt;/u&gt;

{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[identification matériel-pilotes|Outil Debian GNU/Linux d'identification matériel-pilotes]]
|
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Carte Vidéo'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Nvidia_et_Ati_pour_les_fainéants|Installation des pilotes Nvidia et Ati pour les fainéants]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Nvidia_Optimus_Bumblebee|Utiliser la technologie Optimus de nVidia grâce au projet Bumblebee]]
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Contrôleur audio'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Diagnostiquer_un_problème_alsa|Diagnostiquer un problème alsa]]
|
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Réseau'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Utilisation_de_ndiswrapper|Utilisation de ndiswrapper]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Désactiver_l'IPv6|Désactiver l'IPv6]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Imprimantes et Scanners'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Gestion_Epson_par_depot|Gestion des imprimantes EPSON par depôt debian]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Xerox_WorkCentre_5225_5230|Installer une xerox 5225]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Supports de données'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Ntfs|Ntfs]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Raid logiciel (mdadm) | Raid logiciel (mdadm)]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Matériels et Drivers Divers'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Wacom_bamboo_pen%26touch|Installation d'une tablette Wacom Bamboo Pen&amp;Touch]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Images_pour_firmwares_non_reconnus|Images pour firmwares non reconnus]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Cartes_vidéos_siliconmotion|Cartes vidéos siliconmotion]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Toshiba_Satellite_C670D|Installer Debian sur un Toshiba Satellite C670D]]
|
|
|}

----

{{Modèle:Accueil}}

[[Catégorie:Carte Vidéo]]
[[Catégorie:Controleur audio]]
[[Catégorie:Réseau]]
[[Catégorie:Gestion de l'alimentation]]
[[Catégorie:Imprimantes et Scanners]]
[[Catégorie:Supports de données]]
[[Catégorie:Matériel_et_Drivers_Divers‎]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>gt1rfwd2bptyiydfthrsxa8or9kp813</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4882</id>
      <parentid>4880</parentid>
      <timestamp>2013-01-15T13:49:54Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="2267">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Matériel et Pilotes'''&lt;/u&gt;

{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[identification matériel-pilotes|Outil Debian GNU/Linux d'identification matériel-pilotes]]
|
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Carte Vidéo'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Nvidia_et_Ati_pour_les_fainéants|Installation des pilotes Nvidia et Ati pour les fainéants]]
| width=&quot;33%&quot; |•&amp;nbsp;[[NVidia_Optimus_Bumblebee|Utiliser la technologie Optimus de nVidia grâce au projet Bumblebee]]
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Contrôleur audio'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Diagnostiquer_un_problème_alsa|Diagnostiquer un problème alsa]]
|
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Réseau'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Utilisation_de_ndiswrapper|Utilisation de ndiswrapper]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Désactiver_l'IPv6|Désactiver l'IPv6]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Imprimantes et Scanners'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Gestion_Epson_par_depot|Gestion des imprimantes EPSON par depôt debian]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Xerox_WorkCentre_5225_5230|Installer une xerox 5225]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Supports de données'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Ntfs|Ntfs]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Raid logiciel (mdadm) | Raid logiciel (mdadm)]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Matériels et Drivers Divers'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Wacom_bamboo_pen%26touch|Installation d'une tablette Wacom Bamboo Pen&amp;Touch]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Images_pour_firmwares_non_reconnus|Images pour firmwares non reconnus]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Cartes_vidéos_siliconmotion|Cartes vidéos siliconmotion]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Toshiba_Satellite_C670D|Installer Debian sur un Toshiba Satellite C670D]]
|
|
|}

----

{{Modèle:Accueil}}

[[Catégorie:Carte Vidéo]]
[[Catégorie:Controleur audio]]
[[Catégorie:Réseau]]
[[Catégorie:Gestion de l'alimentation]]
[[Catégorie:Imprimantes et Scanners]]
[[Catégorie:Supports de données]]
[[Catégorie:Matériel_et_Drivers_Divers‎]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>m39a2bbwfkgc86tzpdicj7w21ncdxb4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5035</id>
      <parentid>4882</parentid>
      <timestamp>2013-02-23T21:19:55Z</timestamp>
      <contributor>
        <username>PengouinPdt</username>
        <id>249</id>
      </contributor>
      <text xml:space="preserve" bytes="2346">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Matériel et Pilotes'''&lt;/u&gt;

{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[identification matériel-pilotes|Outil Debian GNU/Linux d'identification matériel-pilotes]]
|
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Carte Vidéo'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Nvidia_et_Ati_pour_les_fainéants|Installation des pilotes Nvidia et Ati pour les fainéants]]
| width=&quot;33%&quot; |•&amp;nbsp;[[NVidia_Optimus_Bumblebee|Utiliser la technologie Optimus de nVidia grâce au projet Bumblebee]]
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Contrôleur audio'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Diagnostiquer_un_problème_alsa|Diagnostiquer un problème alsa]]
|
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Réseau'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Utilisation_de_ndiswrapper|Utilisation de ndiswrapper]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Désactiver_l'IPv6|Désactiver l'IPv6]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Imprimantes et Scanners'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Gestion_Epson_par_depot|Gestion des imprimantes EPSON par depôt debian]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Xerox_WorkCentre_5225_5230|Installer une xerox 5225]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Supports de données'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Ntfs|Ntfs]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Raid logiciel (mdadm) | Raid logiciel (mdadm)]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Matériels et Drivers Divers'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Wacom_bamboo_pen%26touch|Installation d'une tablette Wacom Bamboo Pen&amp;Touch]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Images_pour_firmwares_non_reconnus|Images pour firmwares non reconnus]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Cartes_vidéos_siliconmotion|Cartes vidéos siliconmotion]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Touchpad_ALPS|Installation du Touchpad ALPS]]
|
|
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Toshiba_Satellite_C670D|Installer Debian sur un Toshiba Satellite C670D]]
|
|
|}

----

{{Modèle:Accueil}}

[[Catégorie:Carte Vidéo]]
[[Catégorie:Controleur audio]]
[[Catégorie:Réseau]]
[[Catégorie:Gestion de l'alimentation]]
[[Catégorie:Imprimantes et Scanners]]
[[Catégorie:Supports de données]]
[[Catégorie:Matériel_et_Drivers_Divers‎]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>5otecw92cbj7r7s8fl3cvr4k0nplue5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5586</id>
      <parentid>5035</parentid>
      <timestamp>2014-04-09T07:51:35Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <text xml:space="preserve" bytes="2400">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Matériel et Pilotes'''&lt;/u&gt;

{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[identification matériel-pilotes|Outil Debian GNU/Linux d'identification matériel-pilotes]]
|
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Carte Vidéo'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Nvidia_et_Ati_pour_les_fainéants|Installation des pilotes Nvidia et Ati pour les fainéants]]
| width=&quot;33%&quot; |•&amp;nbsp;[[NVidia_Optimus_Bumblebee|Utiliser la technologie Optimus de nVidia grâce au projet Bumblebee]]
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Contrôleur audio'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Diagnostiquer_un_problème_alsa|Diagnostiquer un problème alsa]]
|
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Réseau'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Utilisation_de_ndiswrapper|Utilisation de ndiswrapper]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Désactiver_l'IPv6|Désactiver l'IPv6]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Imprimantes et Scanners'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Gestion_Epson_par_depot|Gestion des imprimantes EPSON par depôt debian]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Xerox_WorkCentre_5225_5230|Installer une xerox 5225]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Supports de données'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Ntfs|Ntfs]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Raid logiciel (mdadm) | Raid logiciel (mdadm)]]
|
|}

{| width=&quot;100%&quot;
| colspan=&quot;3&quot; |'''Matériels et Drivers Divers'''
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Wacom_bamboo_pen%26touch|Installation d'une tablette Wacom Bamboo Pen&amp;Touch]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Images_pour_firmwares_non_reconnus|Images pour firmwares non reconnus]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Cartes_vidéos_siliconmotion|Cartes vidéos siliconmotion]]
|-
| width=&quot;33%&quot; |•&amp;nbsp;[[Touchpad_ALPS|Installation du Touchpad ALPS]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Toshiba_Satellite_C670D|Installer Debian sur un Toshiba Satellite C670D]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Mini_Serveur|Mini serveurs]]
|-
| 
|
|
|}

----

{{Modèle:Accueil}}

[[Catégorie:Carte Vidéo]]
[[Catégorie:Controleur audio]]
[[Catégorie:Réseau]]
[[Catégorie:Gestion de l'alimentation]]
[[Catégorie:Imprimantes et Scanners]]
[[Catégorie:Supports de données]]
[[Catégorie:Matériel_et_Drivers_Divers‎]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>lo5xkrlv4s6pm7ml5lwi5mwp4v578v4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Mcabber</title>
    <ns>0</ns>
    <id>1264</id>
    <revision>
      <id>5249</id>
      <timestamp>2013-06-07T08:23:28Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <comment>Page créée avec « = Mcabber =  [http://mcabber.org Mcabber] est un client de messagerie instantanée pour le protocole [http://xmpp.org XMPP], que vous connaissez peut-être mieux sous le t... »</comment>
      <text xml:space="preserve" bytes="12312">= Mcabber =

[http://mcabber.org Mcabber] est un client de messagerie instantanée pour le protocole [http://xmpp.org XMPP], que vous connaissez peut-être mieux sous le terme [http://jabberfr.org Jabber].

Il se démarque des autres par son utilisation en console, ce qui le rend d'une extrême légèreté, sans pour autant lui retirer ses fonctionnalités.

Si vous utilisez principalement la messagerie instantanée pour envoyer/recevoir des messages, et que vous n'avez pas besoin des fonctions video/audio de XMPP, alors mcabber sera une solution très efficace pour vous!

[[Images/mcabber1.png|[[Image:/Images/mcabber1.jpg|aperçu mcabber]]]] [[Images/mcabber2.png|[[Image:/Images/mcabber2.jpg|aperçu mcabber]]]]

[TOC]

== Installation ==

Accrochez vos ceintures, pour installer mcabber, il faut lancer cette commande :

&lt;pre&gt;apt-get install mcabber&lt;/pre&gt;
== Utilisation ==

La fenêtre se présente divisée en deux : à gauche la liste des contacts, que l'on appellera le ''roster'', à droite la fenêtre de discussion.

&lt;pre&gt;|-----------------------------------------|
| [status]       |                        |
|--- Groupe 1    |                        |
|[a] contact@jab |                        |
|[o] contact2@ja |                        |
|[_] contact3@ja |                        |
|                |                        |
|                |                        |
|                |                        |
|                |                        |
|                |                        |
|                |                        |
|----------------|------------------------|
| Informations                            |
| diverses...                             |
| salon, statut,...                       |
|-----------------------------------------|
| Là où vous écrivez                      |
|-----------------------------------------|&lt;/pre&gt;
Dans le roster, on peut connaître le statut des contacts d'après le symbole entre &lt;tt&gt;[ ]&lt;/tt&gt;. Voici leurs signification :

* o : En ligne (online)
* f : Prêt à discuter (free)
* d : Ne pas déranger (do not disturb)
* n : Indisponible (not avaiable)
* a : Absent (away)
* _ : Déconnecté
* ? : Status inconnu
* x : Salon de discuttion où vous ne participez pas
* C : Salon de discuttion où vous participez

Il existe un contact particulier : &lt;tt&gt;[status]&lt;/tt&gt;. Ce dernier vous donne toutes les indications de mcabber, lorsque vous demandez de l'aide avec /help par exemple...

Pour sélectionner un contact à qui parler, vous pouvez vous déplacer dans le roster avec les touches ⇟(PGDWN) et ⇞(PGUP).

Pour voir les anciens messages, on peut se déplacer dans l'historique avec ctrl-p et ctrl-n.

Pour écrire à un contact, tapez simplement votre message puis Entrée.

Enfin, sachez que mcabber donne accès à de nombreuses fonctionnalités via des commandes commençant par un &lt;tt&gt;/&lt;/tt&gt;. Rassurez-vous, pas besoin de toutes les retenir! Il suffira de taper &lt;tt&gt;/help&lt;/tt&gt; pour avoir une liste des commandes disponibles. Ensuite, taper &lt;tt&gt;/help commande&lt;/tt&gt; vous donnera des explications sur l'utilisation de cette commande. Par exemple, si on tape &lt;tt&gt;/help move&lt;/tt&gt;, on obtient dans le contact &lt;tt&gt;[status]&lt;/tt&gt;

&lt;pre&gt;/MOVE [groupname]
06-07 08:56:01  Déplace le contact sélectionné vers le groupe
                spécifié. Si aucun groupe n'est donné, le contact
                est déplacé vers le groupe par défaut. Si le groupe
                &amp;quot;groupname&amp;quot; n'existe pas, il est créé.
06-07 08:56:01  Astuce : si le mode discussion (chatmode) est
                activé, vous pouvez utiliser &amp;quot;/roster alternate&amp;quot;
                pour vous positionner sur le contact que vous venez
                de déplacer.&lt;/pre&gt;
Voyons quelques unes de ces commandes les plus utiles.

''Astuce'' : Tapez &amp;quot;Tab&amp;quot;, et la commande sera auto-complétée.

=== Commande /add ===

Cette commande permet d'ajouter un contact.

&lt;pre&gt;/add contact@jabber.ru Surnom&lt;/pre&gt;
=== Commande /authorization ===

Cette commande vous permet d'autoriser un contact à vous voir ou non, demander son statut...

Sélectionnez un contact, puis selon ce que vous voulez :

&lt;pre&gt;/authorization allow
/authorization cancel
/authorization request&lt;/pre&gt;
Plus de détails en lançant cette commande &lt;tt&gt;/help authorization&lt;/tt&gt;

=== Commande /buffer ===

Cette commande vous permet de manipuler l'historique du texte tapé. Par exemple pour chercher du texte :

&lt;pre&gt;/buffer search_backward textecherché&lt;/pre&gt;
Pour enregistrer dans un fichier l'historique :

&lt;pre&gt;/buffer save nom_du_fichier&lt;/pre&gt;
Toujours plus de détails avec &lt;tt&gt;/help buffer&lt;/tt&gt;

===  Commande /del ===

Supprimer un contact. Et oui, c'est brutal aussi mcabber! :)

=== Commande /move ===

Cette commande permet de déplacer le contact sélectionné dans un groupe. Un groupe inexistant sera alors créé.

&lt;pre&gt;/move Salons&lt;/pre&gt;
=== Commande /room ===

Cette commande permet de gérer les salons. Elle contient de très nombreuses fonctionnalités, je vous conseille donc de taper &lt;tt&gt;\help room&lt;/tt&gt;. Voici quelques exemples :

Rejoindre un salon (pseudo et motdepasse facultatifs):

&lt;pre&gt;/room join salon@jabberfr.org pseudo motdepasse&lt;/pre&gt;
Ajouter aux marques-page et rejoindre automatiquement le salon sélectionné :

&lt;pre&gt;/room bookmark +autojoin&lt;/pre&gt;
== Configuration ==

La configuration de mcabber se réalise dans le fichier &lt;tt&gt;~/.mcabberrc&lt;/tt&gt;. Copions le fichier exemple fourni avec debian :

&lt;pre&gt;gunzip -c /usr/share/doc/mcabber/examples/mcabberrc.example.gz &amp;gt; ~/.mcabberrc&lt;/pre&gt;
On se retrouve avec un fichier contenant la configuration par défaut. Remarquez qu'il est très bien commenté. Nous détaillerons ici les options essentielles, mais vous pouvez peaufiner la configuration de vous-même.

=== Compte et mot de passe. ===

Pour définir son compte et mot de passe jabber :

&lt;pre&gt;# Please provide your Jabber (XMPP) identifier:
set jid = moua@jabber.fr
set password = supermegamotdepasse&lt;/pre&gt;
=== Multi-compte ===

&lt;blockquote&gt;J'ai plusieurs compte moi! Comment je fais?
&lt;/blockquote&gt;
Pas de panique! Il va juste falloir créer un fichier de configuration par compte. Par exemple : - .mcabberrc_jabberfr - .mcabberrc_gmail

Dans chacun d'entre eux vous préciser vos identifiants/mots de passe relatifs au compte. Et maintenant, pour utiliser le compte gmail, vous lancez la commande :

&lt;pre&gt;mcabber -f ~/.mcabberrc_gmail&lt;/pre&gt;
L'option &lt;tt&gt;-f&lt;/tt&gt; permet simplement de préciser à mcabber quel fichier de configuration utiliser.

=== Pseudonyme ===

Pour avoir son bon pseudonyme dans les salons :

&lt;pre&gt;# the jid variable can be used.
set nickname = &amp;quot;MonPseudoQuiDechire&amp;quot;&lt;/pre&gt;
=== Interface dans la langue de Victor Hugo ===

&lt;pre&gt;set lang = fr&lt;/pre&gt;
=== Correction orthographique et encodage ===

Pour n'avoir aucun soucis d'affichage des caractères, on préférera l'UTF-8 :

&lt;pre&gt;set spell_enable = 1
set spell_lang = fr_FR
set spell_encoding = UTF-8&lt;/pre&gt;
=== Qui afficher dans le roster? ===

On peut choisir le statut des contacts à afficher dans le roster. Par exemple, je ne veux afficher que les contacts en lignes &lt;tt&gt;o&lt;/tt&gt;, et disponibles pour discuter &lt;tt&gt;f&lt;/tt&gt; :

&lt;pre&gt;set roster_display_filter = of&lt;/pre&gt;
Rappelons la signification de ces lettres :

* o : En ligne (online)
* f : Prêt à discuter (free)
* d : Ne pas déranger (do not disturb)
* n : Indisponible (not avaiable)
* a : Absent (away)
* _ : Déconnecté

=== Enregistrement des discussions ===

&lt;pre&gt;set logging = 1
set load_logs = 1
set logging_dir = ~/.mcabber/histo/
set logging_ignore_status = 1&lt;/pre&gt;
===  Modules ===

Mcabber peut être étendu par des [http://wiki.mcabber.com/index.php/Modules modules]. Pour préciser le répertoire où ils sont enregistrés :

&lt;pre&gt;set modules_dir = /usr/lib/mcabber/&lt;/pre&gt;
Pour charger un module:

&lt;pre&gt;module load nomdumodule&lt;/pre&gt;
=== Temps avant d'être considéré &amp;quot;parti&amp;quot; ===

Changez le temps avant que votre statut soit automatiquement &amp;quot;away&amp;quot;

&lt;pre&gt;set autoaway = 180&lt;/pre&gt;
=== Changer les messages de statut ===

&lt;pre&gt;set message_avail     = Disponible
set message_free      = Prêt à discuter
set message_dnd       = Occupé à autre chose
set message_notavail  = Indisponible
set message_away      = Parti&lt;/pre&gt;
=== Fond transparent ===

Pour que le fond de mcabber soit transparent, précisez ceci dans les couleurs :

&lt;pre&gt;set color_background   = default&lt;/pre&gt;
===  Définir ses propres commandes ===

Vous pouvez vous créer vos propres raccourcis en indiquant vos commandes. Par exemple :

&lt;pre&gt;alias me = say /me&lt;/pre&gt;
===  Raccourcis clavier ===

Définissez vos propres raccourcis claviers avec &lt;tt&gt;bind keycode action&lt;/tt&gt;. Pour connaître le code d'une touche ou combinaison de touche, tapez la simplement dans mcabber. Si elle n'est attribuée à aucun raccourci, alors le code correspondant apparaîtra dans la barre de status. Quelques exemples :

&lt;pre&gt;# F5 (269) affiche/cache les contacts déconnectés
bind 269 = roster toggle_offline
# F12 (276) affiche/cache le roster
bind 276 = roster toggle
# alt-shift-k Monte dans le roster
bind M75 = roster up 
# alt-shift-j descend dans le roster
bind M74 = roster down &lt;/pre&gt;
=== Gestion des évènements ===

Lorsqu'un évènement survient (connexion d'un contact, nouveau message), mcabber peut lancer un script quelconque. Pour cela, on ajoute cette option :

&lt;pre&gt;set events_command = ~/.mcabber/eventcmd&lt;/pre&gt;
C'est donc le script &lt;tt&gt;eventcmd&lt;/tt&gt; placé dans &lt;tt&gt;~/.mcabber&lt;/tt&gt; qui sera exécuté. Un exemple de ce script est situé ici : &lt;tt&gt;/usr/share/doc/mcabber/examples/contrib/events/eventcmd&lt;/tt&gt;.

Cette solution est très pratique pour avoir des notifications par exemple.

=== Raccourcis d'urls ===

Le principe est le même qu'au paragraphe précédent : lorsqu'un message est reçu, on lance un script. Ce dernier est situé ici : &lt;tt&gt;/usr/share/doc/mcabber/examples/contrib/events/eventcmd.pastebin&lt;/tt&gt;.

=== Lancer une commande à un moment donné (hooks) ===

Le système de &amp;quot;hooks&amp;quot; permet de lancer une action lorsqu'un évènement survient.

Pour lancer une commande lorsque vous vous connectez, par exemple mettre votre statut à &amp;quot;ne pas déranger&amp;quot;:

&lt;pre&gt;set hook-post-connect = status dnd&lt;/pre&gt;
Et lorsque vous vous déconnectez, pour dire au-revoir à foo@bar :

&lt;pre&gt;set hook-pre-disconnect = say_to foo@bar Goodbye!&lt;/pre&gt;
=== Gérer mcabber à distance ===

Sans être dans la fenêtre de mcabber, vous pouvez quand même le contrôler. Cela peut être utile sur un serveur éventuellement. Utilisez alors le système de &amp;quot;fifo&amp;quot; :

&lt;pre&gt;set fifo_name = ~/.mcabber/mcabber.fifo
set fifo_hide_commands = 0
set fifo_ignore = 0&lt;/pre&gt;
Et envoyez ensuite vos commandes dans le fichier fifo &lt;tt&gt;echo commande &amp;gt;&amp;gt; ~/.mcabber/mcabber.fifo&lt;/tt&gt;

== IRC ==

Non, mcabber n'est pas un client IRC. Cependant, certains serveurs jabbers proposent des passerelles vers le protocole IRC. Si votre adresse jabber le permet, alors vous pouvez rejoindre un salon de cette façon :

&lt;pre&gt;/room join #salon%irc.freenode.net@irc.jabberfr.org&lt;/pre&gt;
Décomposons cette ligne : - /room join : commande mcabber pour rejoindre un salon - #salon : nom du salon IRC - %irc.freenode.net : le serveur IRC est sur irc.freenode.net. ''Il est important d'utiliser un &lt;tt&gt;%&lt;/tt&gt; (spécifique à jabber)'' - @irc.jabberfr.org : C'est la passerelle IRC de votre compte jabber. L'exemple utilise celui de jabberfr:

Des informations sur le transport sont [http://wiki.jabberfr.org/w/index.php?title=index.php&amp;title=Passerelles#Comment_utiliser_la_passerelle_IRC.E2.80.AF.3F disponibles ici]

Oui mais problème, sur IRC, on utilise des commandes du type &amp;quot;/commande&amp;quot;. Comment faire pour que mcabber ne croit pas que c'est une commande pour lui?

Tout bêtement, il faut ajouter devant &lt;tt&gt;/say&lt;/tt&gt;. Par exemple :

&lt;pre&gt;/say /me&lt;/pre&gt;
Ou encore

&lt;pre&gt;/say /nick monnouveaupseudo&lt;/pre&gt;
Ajouter des alias dans le fichier de configuration de mcabber s'avère alors très utile.

== Pour aller plus loin... ==

* &lt;tt&gt;man mcabber&lt;/tt&gt;
* [http://mcabber.org Site officiel]
* [http://mcabber.com/files/mcabber_guide.pdf Guide officiel]
* [http://yeuxdelibad.net/Logiciels-libres/Tutoriels/Mcabber.html Dernière version du document]</text>
      <sha1>i9p192zqymw1h62eanj7s613i4hoc4l</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5250</id>
      <parentid>5249</parentid>
      <timestamp>2013-06-07T08:24:03Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <comment>/* Pour aller plus loin... */</comment>
      <text xml:space="preserve" bytes="12310">= Mcabber =

[http://mcabber.org Mcabber] est un client de messagerie instantanée pour le protocole [http://xmpp.org XMPP], que vous connaissez peut-être mieux sous le terme [http://jabberfr.org Jabber].

Il se démarque des autres par son utilisation en console, ce qui le rend d'une extrême légèreté, sans pour autant lui retirer ses fonctionnalités.

Si vous utilisez principalement la messagerie instantanée pour envoyer/recevoir des messages, et que vous n'avez pas besoin des fonctions video/audio de XMPP, alors mcabber sera une solution très efficace pour vous!

[[Images/mcabber1.png|[[Image:/Images/mcabber1.jpg|aperçu mcabber]]]] [[Images/mcabber2.png|[[Image:/Images/mcabber2.jpg|aperçu mcabber]]]]

[TOC]

== Installation ==

Accrochez vos ceintures, pour installer mcabber, il faut lancer cette commande :

&lt;pre&gt;apt-get install mcabber&lt;/pre&gt;
== Utilisation ==

La fenêtre se présente divisée en deux : à gauche la liste des contacts, que l'on appellera le ''roster'', à droite la fenêtre de discussion.

&lt;pre&gt;|-----------------------------------------|
| [status]       |                        |
|--- Groupe 1    |                        |
|[a] contact@jab |                        |
|[o] contact2@ja |                        |
|[_] contact3@ja |                        |
|                |                        |
|                |                        |
|                |                        |
|                |                        |
|                |                        |
|                |                        |
|----------------|------------------------|
| Informations                            |
| diverses...                             |
| salon, statut,...                       |
|-----------------------------------------|
| Là où vous écrivez                      |
|-----------------------------------------|&lt;/pre&gt;
Dans le roster, on peut connaître le statut des contacts d'après le symbole entre &lt;tt&gt;[ ]&lt;/tt&gt;. Voici leurs signification :

* o : En ligne (online)
* f : Prêt à discuter (free)
* d : Ne pas déranger (do not disturb)
* n : Indisponible (not avaiable)
* a : Absent (away)
* _ : Déconnecté
* ? : Status inconnu
* x : Salon de discuttion où vous ne participez pas
* C : Salon de discuttion où vous participez

Il existe un contact particulier : &lt;tt&gt;[status]&lt;/tt&gt;. Ce dernier vous donne toutes les indications de mcabber, lorsque vous demandez de l'aide avec /help par exemple...

Pour sélectionner un contact à qui parler, vous pouvez vous déplacer dans le roster avec les touches ⇟(PGDWN) et ⇞(PGUP).

Pour voir les anciens messages, on peut se déplacer dans l'historique avec ctrl-p et ctrl-n.

Pour écrire à un contact, tapez simplement votre message puis Entrée.

Enfin, sachez que mcabber donne accès à de nombreuses fonctionnalités via des commandes commençant par un &lt;tt&gt;/&lt;/tt&gt;. Rassurez-vous, pas besoin de toutes les retenir! Il suffira de taper &lt;tt&gt;/help&lt;/tt&gt; pour avoir une liste des commandes disponibles. Ensuite, taper &lt;tt&gt;/help commande&lt;/tt&gt; vous donnera des explications sur l'utilisation de cette commande. Par exemple, si on tape &lt;tt&gt;/help move&lt;/tt&gt;, on obtient dans le contact &lt;tt&gt;[status]&lt;/tt&gt;

&lt;pre&gt;/MOVE [groupname]
06-07 08:56:01  Déplace le contact sélectionné vers le groupe
                spécifié. Si aucun groupe n'est donné, le contact
                est déplacé vers le groupe par défaut. Si le groupe
                &amp;quot;groupname&amp;quot; n'existe pas, il est créé.
06-07 08:56:01  Astuce : si le mode discussion (chatmode) est
                activé, vous pouvez utiliser &amp;quot;/roster alternate&amp;quot;
                pour vous positionner sur le contact que vous venez
                de déplacer.&lt;/pre&gt;
Voyons quelques unes de ces commandes les plus utiles.

''Astuce'' : Tapez &amp;quot;Tab&amp;quot;, et la commande sera auto-complétée.

=== Commande /add ===

Cette commande permet d'ajouter un contact.

&lt;pre&gt;/add contact@jabber.ru Surnom&lt;/pre&gt;
=== Commande /authorization ===

Cette commande vous permet d'autoriser un contact à vous voir ou non, demander son statut...

Sélectionnez un contact, puis selon ce que vous voulez :

&lt;pre&gt;/authorization allow
/authorization cancel
/authorization request&lt;/pre&gt;
Plus de détails en lançant cette commande &lt;tt&gt;/help authorization&lt;/tt&gt;

=== Commande /buffer ===

Cette commande vous permet de manipuler l'historique du texte tapé. Par exemple pour chercher du texte :

&lt;pre&gt;/buffer search_backward textecherché&lt;/pre&gt;
Pour enregistrer dans un fichier l'historique :

&lt;pre&gt;/buffer save nom_du_fichier&lt;/pre&gt;
Toujours plus de détails avec &lt;tt&gt;/help buffer&lt;/tt&gt;

===  Commande /del ===

Supprimer un contact. Et oui, c'est brutal aussi mcabber! :)

=== Commande /move ===

Cette commande permet de déplacer le contact sélectionné dans un groupe. Un groupe inexistant sera alors créé.

&lt;pre&gt;/move Salons&lt;/pre&gt;
=== Commande /room ===

Cette commande permet de gérer les salons. Elle contient de très nombreuses fonctionnalités, je vous conseille donc de taper &lt;tt&gt;\help room&lt;/tt&gt;. Voici quelques exemples :

Rejoindre un salon (pseudo et motdepasse facultatifs):

&lt;pre&gt;/room join salon@jabberfr.org pseudo motdepasse&lt;/pre&gt;
Ajouter aux marques-page et rejoindre automatiquement le salon sélectionné :

&lt;pre&gt;/room bookmark +autojoin&lt;/pre&gt;
== Configuration ==

La configuration de mcabber se réalise dans le fichier &lt;tt&gt;~/.mcabberrc&lt;/tt&gt;. Copions le fichier exemple fourni avec debian :

&lt;pre&gt;gunzip -c /usr/share/doc/mcabber/examples/mcabberrc.example.gz &amp;gt; ~/.mcabberrc&lt;/pre&gt;
On se retrouve avec un fichier contenant la configuration par défaut. Remarquez qu'il est très bien commenté. Nous détaillerons ici les options essentielles, mais vous pouvez peaufiner la configuration de vous-même.

=== Compte et mot de passe. ===

Pour définir son compte et mot de passe jabber :

&lt;pre&gt;# Please provide your Jabber (XMPP) identifier:
set jid = moua@jabber.fr
set password = supermegamotdepasse&lt;/pre&gt;
=== Multi-compte ===

&lt;blockquote&gt;J'ai plusieurs compte moi! Comment je fais?
&lt;/blockquote&gt;
Pas de panique! Il va juste falloir créer un fichier de configuration par compte. Par exemple : - .mcabberrc_jabberfr - .mcabberrc_gmail

Dans chacun d'entre eux vous préciser vos identifiants/mots de passe relatifs au compte. Et maintenant, pour utiliser le compte gmail, vous lancez la commande :

&lt;pre&gt;mcabber -f ~/.mcabberrc_gmail&lt;/pre&gt;
L'option &lt;tt&gt;-f&lt;/tt&gt; permet simplement de préciser à mcabber quel fichier de configuration utiliser.

=== Pseudonyme ===

Pour avoir son bon pseudonyme dans les salons :

&lt;pre&gt;# the jid variable can be used.
set nickname = &amp;quot;MonPseudoQuiDechire&amp;quot;&lt;/pre&gt;
=== Interface dans la langue de Victor Hugo ===

&lt;pre&gt;set lang = fr&lt;/pre&gt;
=== Correction orthographique et encodage ===

Pour n'avoir aucun soucis d'affichage des caractères, on préférera l'UTF-8 :

&lt;pre&gt;set spell_enable = 1
set spell_lang = fr_FR
set spell_encoding = UTF-8&lt;/pre&gt;
=== Qui afficher dans le roster? ===

On peut choisir le statut des contacts à afficher dans le roster. Par exemple, je ne veux afficher que les contacts en lignes &lt;tt&gt;o&lt;/tt&gt;, et disponibles pour discuter &lt;tt&gt;f&lt;/tt&gt; :

&lt;pre&gt;set roster_display_filter = of&lt;/pre&gt;
Rappelons la signification de ces lettres :

* o : En ligne (online)
* f : Prêt à discuter (free)
* d : Ne pas déranger (do not disturb)
* n : Indisponible (not avaiable)
* a : Absent (away)
* _ : Déconnecté

=== Enregistrement des discussions ===

&lt;pre&gt;set logging = 1
set load_logs = 1
set logging_dir = ~/.mcabber/histo/
set logging_ignore_status = 1&lt;/pre&gt;
===  Modules ===

Mcabber peut être étendu par des [http://wiki.mcabber.com/index.php/Modules modules]. Pour préciser le répertoire où ils sont enregistrés :

&lt;pre&gt;set modules_dir = /usr/lib/mcabber/&lt;/pre&gt;
Pour charger un module:

&lt;pre&gt;module load nomdumodule&lt;/pre&gt;
=== Temps avant d'être considéré &amp;quot;parti&amp;quot; ===

Changez le temps avant que votre statut soit automatiquement &amp;quot;away&amp;quot;

&lt;pre&gt;set autoaway = 180&lt;/pre&gt;
=== Changer les messages de statut ===

&lt;pre&gt;set message_avail     = Disponible
set message_free      = Prêt à discuter
set message_dnd       = Occupé à autre chose
set message_notavail  = Indisponible
set message_away      = Parti&lt;/pre&gt;
=== Fond transparent ===

Pour que le fond de mcabber soit transparent, précisez ceci dans les couleurs :

&lt;pre&gt;set color_background   = default&lt;/pre&gt;
===  Définir ses propres commandes ===

Vous pouvez vous créer vos propres raccourcis en indiquant vos commandes. Par exemple :

&lt;pre&gt;alias me = say /me&lt;/pre&gt;
===  Raccourcis clavier ===

Définissez vos propres raccourcis claviers avec &lt;tt&gt;bind keycode action&lt;/tt&gt;. Pour connaître le code d'une touche ou combinaison de touche, tapez la simplement dans mcabber. Si elle n'est attribuée à aucun raccourci, alors le code correspondant apparaîtra dans la barre de status. Quelques exemples :

&lt;pre&gt;# F5 (269) affiche/cache les contacts déconnectés
bind 269 = roster toggle_offline
# F12 (276) affiche/cache le roster
bind 276 = roster toggle
# alt-shift-k Monte dans le roster
bind M75 = roster up 
# alt-shift-j descend dans le roster
bind M74 = roster down &lt;/pre&gt;
=== Gestion des évènements ===

Lorsqu'un évènement survient (connexion d'un contact, nouveau message), mcabber peut lancer un script quelconque. Pour cela, on ajoute cette option :

&lt;pre&gt;set events_command = ~/.mcabber/eventcmd&lt;/pre&gt;
C'est donc le script &lt;tt&gt;eventcmd&lt;/tt&gt; placé dans &lt;tt&gt;~/.mcabber&lt;/tt&gt; qui sera exécuté. Un exemple de ce script est situé ici : &lt;tt&gt;/usr/share/doc/mcabber/examples/contrib/events/eventcmd&lt;/tt&gt;.

Cette solution est très pratique pour avoir des notifications par exemple.

=== Raccourcis d'urls ===

Le principe est le même qu'au paragraphe précédent : lorsqu'un message est reçu, on lance un script. Ce dernier est situé ici : &lt;tt&gt;/usr/share/doc/mcabber/examples/contrib/events/eventcmd.pastebin&lt;/tt&gt;.

=== Lancer une commande à un moment donné (hooks) ===

Le système de &amp;quot;hooks&amp;quot; permet de lancer une action lorsqu'un évènement survient.

Pour lancer une commande lorsque vous vous connectez, par exemple mettre votre statut à &amp;quot;ne pas déranger&amp;quot;:

&lt;pre&gt;set hook-post-connect = status dnd&lt;/pre&gt;
Et lorsque vous vous déconnectez, pour dire au-revoir à foo@bar :

&lt;pre&gt;set hook-pre-disconnect = say_to foo@bar Goodbye!&lt;/pre&gt;
=== Gérer mcabber à distance ===

Sans être dans la fenêtre de mcabber, vous pouvez quand même le contrôler. Cela peut être utile sur un serveur éventuellement. Utilisez alors le système de &amp;quot;fifo&amp;quot; :

&lt;pre&gt;set fifo_name = ~/.mcabber/mcabber.fifo
set fifo_hide_commands = 0
set fifo_ignore = 0&lt;/pre&gt;
Et envoyez ensuite vos commandes dans le fichier fifo &lt;tt&gt;echo commande &amp;gt;&amp;gt; ~/.mcabber/mcabber.fifo&lt;/tt&gt;

== IRC ==

Non, mcabber n'est pas un client IRC. Cependant, certains serveurs jabbers proposent des passerelles vers le protocole IRC. Si votre adresse jabber le permet, alors vous pouvez rejoindre un salon de cette façon :

&lt;pre&gt;/room join #salon%irc.freenode.net@irc.jabberfr.org&lt;/pre&gt;
Décomposons cette ligne : - /room join : commande mcabber pour rejoindre un salon - #salon : nom du salon IRC - %irc.freenode.net : le serveur IRC est sur irc.freenode.net. ''Il est important d'utiliser un &lt;tt&gt;%&lt;/tt&gt; (spécifique à jabber)'' - @irc.jabberfr.org : C'est la passerelle IRC de votre compte jabber. L'exemple utilise celui de jabberfr:

Des informations sur le transport sont [http://wiki.jabberfr.org/w/index.php?title=index.php&amp;title=Passerelles#Comment_utiliser_la_passerelle_IRC.E2.80.AF.3F disponibles ici]

Oui mais problème, sur IRC, on utilise des commandes du type &amp;quot;/commande&amp;quot;. Comment faire pour que mcabber ne croit pas que c'est une commande pour lui?

Tout bêtement, il faut ajouter devant &lt;tt&gt;/say&lt;/tt&gt;. Par exemple :

&lt;pre&gt;/say /me&lt;/pre&gt;
Ou encore

&lt;pre&gt;/say /nick monnouveaupseudo&lt;/pre&gt;
Ajouter des alias dans le fichier de configuration de mcabber s'avère alors très utile.

== Pour aller plus loin... ==

* &lt;tt&gt;man mcabber&lt;/tt&gt;
* [http://mcabber.org Site officiel]
* [http://mcabber.com/files/mcabber_guide.pdf Guide officiel]
* [http://yeuxdelibad.net/Logiciel-libre/Tutoriels/Mcabber.html Dernière version du document]</text>
      <sha1>t6f3kwq8r44l366q4ceejzrxx5hl1dh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5252</id>
      <parentid>5250</parentid>
      <timestamp>2013-06-08T13:26:48Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <comment>/* Gérer mcabber à distance */</comment>
      <text xml:space="preserve" bytes="12329">= Mcabber =

[http://mcabber.org Mcabber] est un client de messagerie instantanée pour le protocole [http://xmpp.org XMPP], que vous connaissez peut-être mieux sous le terme [http://jabberfr.org Jabber].

Il se démarque des autres par son utilisation en console, ce qui le rend d'une extrême légèreté, sans pour autant lui retirer ses fonctionnalités.

Si vous utilisez principalement la messagerie instantanée pour envoyer/recevoir des messages, et que vous n'avez pas besoin des fonctions video/audio de XMPP, alors mcabber sera une solution très efficace pour vous!

[[Images/mcabber1.png|[[Image:/Images/mcabber1.jpg|aperçu mcabber]]]] [[Images/mcabber2.png|[[Image:/Images/mcabber2.jpg|aperçu mcabber]]]]

[TOC]

== Installation ==

Accrochez vos ceintures, pour installer mcabber, il faut lancer cette commande :

&lt;pre&gt;apt-get install mcabber&lt;/pre&gt;
== Utilisation ==

La fenêtre se présente divisée en deux : à gauche la liste des contacts, que l'on appellera le ''roster'', à droite la fenêtre de discussion.

&lt;pre&gt;|-----------------------------------------|
| [status]       |                        |
|--- Groupe 1    |                        |
|[a] contact@jab |                        |
|[o] contact2@ja |                        |
|[_] contact3@ja |                        |
|                |                        |
|                |                        |
|                |                        |
|                |                        |
|                |                        |
|                |                        |
|----------------|------------------------|
| Informations                            |
| diverses...                             |
| salon, statut,...                       |
|-----------------------------------------|
| Là où vous écrivez                      |
|-----------------------------------------|&lt;/pre&gt;
Dans le roster, on peut connaître le statut des contacts d'après le symbole entre &lt;tt&gt;[ ]&lt;/tt&gt;. Voici leurs signification :

* o : En ligne (online)
* f : Prêt à discuter (free)
* d : Ne pas déranger (do not disturb)
* n : Indisponible (not avaiable)
* a : Absent (away)
* _ : Déconnecté
* ? : Status inconnu
* x : Salon de discuttion où vous ne participez pas
* C : Salon de discuttion où vous participez

Il existe un contact particulier : &lt;tt&gt;[status]&lt;/tt&gt;. Ce dernier vous donne toutes les indications de mcabber, lorsque vous demandez de l'aide avec /help par exemple...

Pour sélectionner un contact à qui parler, vous pouvez vous déplacer dans le roster avec les touches ⇟(PGDWN) et ⇞(PGUP).

Pour voir les anciens messages, on peut se déplacer dans l'historique avec ctrl-p et ctrl-n.

Pour écrire à un contact, tapez simplement votre message puis Entrée.

Enfin, sachez que mcabber donne accès à de nombreuses fonctionnalités via des commandes commençant par un &lt;tt&gt;/&lt;/tt&gt;. Rassurez-vous, pas besoin de toutes les retenir! Il suffira de taper &lt;tt&gt;/help&lt;/tt&gt; pour avoir une liste des commandes disponibles. Ensuite, taper &lt;tt&gt;/help commande&lt;/tt&gt; vous donnera des explications sur l'utilisation de cette commande. Par exemple, si on tape &lt;tt&gt;/help move&lt;/tt&gt;, on obtient dans le contact &lt;tt&gt;[status]&lt;/tt&gt;

&lt;pre&gt;/MOVE [groupname]
06-07 08:56:01  Déplace le contact sélectionné vers le groupe
                spécifié. Si aucun groupe n'est donné, le contact
                est déplacé vers le groupe par défaut. Si le groupe
                &amp;quot;groupname&amp;quot; n'existe pas, il est créé.
06-07 08:56:01  Astuce : si le mode discussion (chatmode) est
                activé, vous pouvez utiliser &amp;quot;/roster alternate&amp;quot;
                pour vous positionner sur le contact que vous venez
                de déplacer.&lt;/pre&gt;
Voyons quelques unes de ces commandes les plus utiles.

''Astuce'' : Tapez &amp;quot;Tab&amp;quot;, et la commande sera auto-complétée.

=== Commande /add ===

Cette commande permet d'ajouter un contact.

&lt;pre&gt;/add contact@jabber.ru Surnom&lt;/pre&gt;
=== Commande /authorization ===

Cette commande vous permet d'autoriser un contact à vous voir ou non, demander son statut...

Sélectionnez un contact, puis selon ce que vous voulez :

&lt;pre&gt;/authorization allow
/authorization cancel
/authorization request&lt;/pre&gt;
Plus de détails en lançant cette commande &lt;tt&gt;/help authorization&lt;/tt&gt;

=== Commande /buffer ===

Cette commande vous permet de manipuler l'historique du texte tapé. Par exemple pour chercher du texte :

&lt;pre&gt;/buffer search_backward textecherché&lt;/pre&gt;
Pour enregistrer dans un fichier l'historique :

&lt;pre&gt;/buffer save nom_du_fichier&lt;/pre&gt;
Toujours plus de détails avec &lt;tt&gt;/help buffer&lt;/tt&gt;

===  Commande /del ===

Supprimer un contact. Et oui, c'est brutal aussi mcabber! :)

=== Commande /move ===

Cette commande permet de déplacer le contact sélectionné dans un groupe. Un groupe inexistant sera alors créé.

&lt;pre&gt;/move Salons&lt;/pre&gt;
=== Commande /room ===

Cette commande permet de gérer les salons. Elle contient de très nombreuses fonctionnalités, je vous conseille donc de taper &lt;tt&gt;\help room&lt;/tt&gt;. Voici quelques exemples :

Rejoindre un salon (pseudo et motdepasse facultatifs):

&lt;pre&gt;/room join salon@jabberfr.org pseudo motdepasse&lt;/pre&gt;
Ajouter aux marques-page et rejoindre automatiquement le salon sélectionné :

&lt;pre&gt;/room bookmark +autojoin&lt;/pre&gt;
== Configuration ==

La configuration de mcabber se réalise dans le fichier &lt;tt&gt;~/.mcabberrc&lt;/tt&gt;. Copions le fichier exemple fourni avec debian :

&lt;pre&gt;gunzip -c /usr/share/doc/mcabber/examples/mcabberrc.example.gz &amp;gt; ~/.mcabberrc&lt;/pre&gt;
On se retrouve avec un fichier contenant la configuration par défaut. Remarquez qu'il est très bien commenté. Nous détaillerons ici les options essentielles, mais vous pouvez peaufiner la configuration de vous-même.

=== Compte et mot de passe. ===

Pour définir son compte et mot de passe jabber :

&lt;pre&gt;# Please provide your Jabber (XMPP) identifier:
set jid = moua@jabber.fr
set password = supermegamotdepasse&lt;/pre&gt;
=== Multi-compte ===

&lt;blockquote&gt;J'ai plusieurs compte moi! Comment je fais?
&lt;/blockquote&gt;
Pas de panique! Il va juste falloir créer un fichier de configuration par compte. Par exemple : - .mcabberrc_jabberfr - .mcabberrc_gmail

Dans chacun d'entre eux vous préciser vos identifiants/mots de passe relatifs au compte. Et maintenant, pour utiliser le compte gmail, vous lancez la commande :

&lt;pre&gt;mcabber -f ~/.mcabberrc_gmail&lt;/pre&gt;
L'option &lt;tt&gt;-f&lt;/tt&gt; permet simplement de préciser à mcabber quel fichier de configuration utiliser.

=== Pseudonyme ===

Pour avoir son bon pseudonyme dans les salons :

&lt;pre&gt;# the jid variable can be used.
set nickname = &amp;quot;MonPseudoQuiDechire&amp;quot;&lt;/pre&gt;
=== Interface dans la langue de Victor Hugo ===

&lt;pre&gt;set lang = fr&lt;/pre&gt;
=== Correction orthographique et encodage ===

Pour n'avoir aucun soucis d'affichage des caractères, on préférera l'UTF-8 :

&lt;pre&gt;set spell_enable = 1
set spell_lang = fr_FR
set spell_encoding = UTF-8&lt;/pre&gt;
=== Qui afficher dans le roster? ===

On peut choisir le statut des contacts à afficher dans le roster. Par exemple, je ne veux afficher que les contacts en lignes &lt;tt&gt;o&lt;/tt&gt;, et disponibles pour discuter &lt;tt&gt;f&lt;/tt&gt; :

&lt;pre&gt;set roster_display_filter = of&lt;/pre&gt;
Rappelons la signification de ces lettres :

* o : En ligne (online)
* f : Prêt à discuter (free)
* d : Ne pas déranger (do not disturb)
* n : Indisponible (not avaiable)
* a : Absent (away)
* _ : Déconnecté

=== Enregistrement des discussions ===

&lt;pre&gt;set logging = 1
set load_logs = 1
set logging_dir = ~/.mcabber/histo/
set logging_ignore_status = 1&lt;/pre&gt;
===  Modules ===

Mcabber peut être étendu par des [http://wiki.mcabber.com/index.php/Modules modules]. Pour préciser le répertoire où ils sont enregistrés :

&lt;pre&gt;set modules_dir = /usr/lib/mcabber/&lt;/pre&gt;
Pour charger un module:

&lt;pre&gt;module load nomdumodule&lt;/pre&gt;
=== Temps avant d'être considéré &amp;quot;parti&amp;quot; ===

Changez le temps avant que votre statut soit automatiquement &amp;quot;away&amp;quot;

&lt;pre&gt;set autoaway = 180&lt;/pre&gt;
=== Changer les messages de statut ===

&lt;pre&gt;set message_avail     = Disponible
set message_free      = Prêt à discuter
set message_dnd       = Occupé à autre chose
set message_notavail  = Indisponible
set message_away      = Parti&lt;/pre&gt;
=== Fond transparent ===

Pour que le fond de mcabber soit transparent, précisez ceci dans les couleurs :

&lt;pre&gt;set color_background   = default&lt;/pre&gt;
===  Définir ses propres commandes ===

Vous pouvez vous créer vos propres raccourcis en indiquant vos commandes. Par exemple :

&lt;pre&gt;alias me = say /me&lt;/pre&gt;
===  Raccourcis clavier ===

Définissez vos propres raccourcis claviers avec &lt;tt&gt;bind keycode action&lt;/tt&gt;. Pour connaître le code d'une touche ou combinaison de touche, tapez la simplement dans mcabber. Si elle n'est attribuée à aucun raccourci, alors le code correspondant apparaîtra dans la barre de status. Quelques exemples :

&lt;pre&gt;# F5 (269) affiche/cache les contacts déconnectés
bind 269 = roster toggle_offline
# F12 (276) affiche/cache le roster
bind 276 = roster toggle
# alt-shift-k Monte dans le roster
bind M75 = roster up 
# alt-shift-j descend dans le roster
bind M74 = roster down &lt;/pre&gt;
=== Gestion des évènements ===

Lorsqu'un évènement survient (connexion d'un contact, nouveau message), mcabber peut lancer un script quelconque. Pour cela, on ajoute cette option :

&lt;pre&gt;set events_command = ~/.mcabber/eventcmd&lt;/pre&gt;
C'est donc le script &lt;tt&gt;eventcmd&lt;/tt&gt; placé dans &lt;tt&gt;~/.mcabber&lt;/tt&gt; qui sera exécuté. Un exemple de ce script est situé ici : &lt;tt&gt;/usr/share/doc/mcabber/examples/contrib/events/eventcmd&lt;/tt&gt;.

Cette solution est très pratique pour avoir des notifications par exemple.

=== Raccourcis d'urls ===

Le principe est le même qu'au paragraphe précédent : lorsqu'un message est reçu, on lance un script. Ce dernier est situé ici : &lt;tt&gt;/usr/share/doc/mcabber/examples/contrib/events/eventcmd.pastebin&lt;/tt&gt;.

=== Lancer une commande à un moment donné (hooks) ===

Le système de &amp;quot;hooks&amp;quot; permet de lancer une action lorsqu'un évènement survient.

Pour lancer une commande lorsque vous vous connectez, par exemple mettre votre statut à &amp;quot;ne pas déranger&amp;quot;:

&lt;pre&gt;set hook-post-connect = status dnd&lt;/pre&gt;
Et lorsque vous vous déconnectez, pour dire au-revoir à foo@bar :

&lt;pre&gt;set hook-pre-disconnect = say_to foo@bar Goodbye!&lt;/pre&gt;
=== Gérer mcabber à distance ou via des scripts ===

Sans être dans la fenêtre de mcabber, vous pouvez quand même le contrôler. Cela peut être utile sur un serveur éventuellement. Utilisez alors le système de &amp;quot;fifo&amp;quot; :

&lt;pre&gt;set fifo_name = ~/.mcabber/mcabber.fifo
set fifo_hide_commands = 0
set fifo_ignore = 0&lt;/pre&gt;
Et envoyez ensuite vos commandes dans le fichier fifo &lt;tt&gt;echo commande &amp;gt;&amp;gt; ~/.mcabber/mcabber.fifo&lt;/tt&gt;

== IRC ==

Non, mcabber n'est pas un client IRC. Cependant, certains serveurs jabbers proposent des passerelles vers le protocole IRC. Si votre adresse jabber le permet, alors vous pouvez rejoindre un salon de cette façon :

&lt;pre&gt;/room join #salon%irc.freenode.net@irc.jabberfr.org&lt;/pre&gt;
Décomposons cette ligne : - /room join : commande mcabber pour rejoindre un salon - #salon : nom du salon IRC - %irc.freenode.net : le serveur IRC est sur irc.freenode.net. ''Il est important d'utiliser un &lt;tt&gt;%&lt;/tt&gt; (spécifique à jabber)'' - @irc.jabberfr.org : C'est la passerelle IRC de votre compte jabber. L'exemple utilise celui de jabberfr:

Des informations sur le transport sont [http://wiki.jabberfr.org/w/index.php?title=index.php&amp;title=Passerelles#Comment_utiliser_la_passerelle_IRC.E2.80.AF.3F disponibles ici]

Oui mais problème, sur IRC, on utilise des commandes du type &amp;quot;/commande&amp;quot;. Comment faire pour que mcabber ne croit pas que c'est une commande pour lui?

Tout bêtement, il faut ajouter devant &lt;tt&gt;/say&lt;/tt&gt;. Par exemple :

&lt;pre&gt;/say /me&lt;/pre&gt;
Ou encore

&lt;pre&gt;/say /nick monnouveaupseudo&lt;/pre&gt;
Ajouter des alias dans le fichier de configuration de mcabber s'avère alors très utile.

== Pour aller plus loin... ==

* &lt;tt&gt;man mcabber&lt;/tt&gt;
* [http://mcabber.org Site officiel]
* [http://mcabber.com/files/mcabber_guide.pdf Guide officiel]
* [http://yeuxdelibad.net/Logiciel-libre/Tutoriels/Mcabber.html Dernière version du document]</text>
      <sha1>is2xanmd9mfiuh6v64v2frlskvsg4jg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5286</id>
      <parentid>5252</parentid>
      <timestamp>2013-06-15T18:37:59Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="12329">= Mcabber =

[http://mcabber.com Mcabber] est un client de messagerie instantanée pour le protocole [http://xmpp.org XMPP], que vous connaissez peut-être mieux sous le terme [http://jabberfr.org Jabber].

Il se démarque des autres par son utilisation en console, ce qui le rend d'une extrême légèreté, sans pour autant lui retirer ses fonctionnalités.

Si vous utilisez principalement la messagerie instantanée pour envoyer/recevoir des messages, et que vous n'avez pas besoin des fonctions video/audio de XMPP, alors mcabber sera une solution très efficace pour vous!

[[Images/mcabber1.png|[[Image:/Images/mcabber1.jpg|aperçu mcabber]]]] [[Images/mcabber2.png|[[Image:/Images/mcabber2.jpg|aperçu mcabber]]]]

[TOC]

== Installation ==

Accrochez vos ceintures, pour installer mcabber, il faut lancer cette commande :

&lt;pre&gt;apt-get install mcabber&lt;/pre&gt;
== Utilisation ==

La fenêtre se présente divisée en deux : à gauche la liste des contacts, que l'on appellera le ''roster'', à droite la fenêtre de discussion.

&lt;pre&gt;|-----------------------------------------|
| [status]       |                        |
|--- Groupe 1    |                        |
|[a] contact@jab |                        |
|[o] contact2@ja |                        |
|[_] contact3@ja |                        |
|                |                        |
|                |                        |
|                |                        |
|                |                        |
|                |                        |
|                |                        |
|----------------|------------------------|
| Informations                            |
| diverses...                             |
| salon, statut,...                       |
|-----------------------------------------|
| Là où vous écrivez                      |
|-----------------------------------------|&lt;/pre&gt;
Dans le roster, on peut connaître le statut des contacts d'après le symbole entre &lt;tt&gt;[ ]&lt;/tt&gt;. Voici leurs signification :

* o : En ligne (online)
* f : Prêt à discuter (free)
* d : Ne pas déranger (do not disturb)
* n : Indisponible (not avaiable)
* a : Absent (away)
* _ : Déconnecté
* ? : Status inconnu
* x : Salon de discuttion où vous ne participez pas
* C : Salon de discuttion où vous participez

Il existe un contact particulier : &lt;tt&gt;[status]&lt;/tt&gt;. Ce dernier vous donne toutes les indications de mcabber, lorsque vous demandez de l'aide avec /help par exemple...

Pour sélectionner un contact à qui parler, vous pouvez vous déplacer dans le roster avec les touches ⇟(PGDWN) et ⇞(PGUP).

Pour voir les anciens messages, on peut se déplacer dans l'historique avec ctrl-p et ctrl-n.

Pour écrire à un contact, tapez simplement votre message puis Entrée.

Enfin, sachez que mcabber donne accès à de nombreuses fonctionnalités via des commandes commençant par un &lt;tt&gt;/&lt;/tt&gt;. Rassurez-vous, pas besoin de toutes les retenir! Il suffira de taper &lt;tt&gt;/help&lt;/tt&gt; pour avoir une liste des commandes disponibles. Ensuite, taper &lt;tt&gt;/help commande&lt;/tt&gt; vous donnera des explications sur l'utilisation de cette commande. Par exemple, si on tape &lt;tt&gt;/help move&lt;/tt&gt;, on obtient dans le contact &lt;tt&gt;[status]&lt;/tt&gt;

&lt;pre&gt;/MOVE [groupname]
06-07 08:56:01  Déplace le contact sélectionné vers le groupe
                spécifié. Si aucun groupe n'est donné, le contact
                est déplacé vers le groupe par défaut. Si le groupe
                &amp;quot;groupname&amp;quot; n'existe pas, il est créé.
06-07 08:56:01  Astuce : si le mode discussion (chatmode) est
                activé, vous pouvez utiliser &amp;quot;/roster alternate&amp;quot;
                pour vous positionner sur le contact que vous venez
                de déplacer.&lt;/pre&gt;
Voyons quelques unes de ces commandes les plus utiles.

''Astuce'' : Tapez &amp;quot;Tab&amp;quot;, et la commande sera auto-complétée.

=== Commande /add ===

Cette commande permet d'ajouter un contact.

&lt;pre&gt;/add contact@jabber.ru Surnom&lt;/pre&gt;
=== Commande /authorization ===

Cette commande vous permet d'autoriser un contact à vous voir ou non, demander son statut...

Sélectionnez un contact, puis selon ce que vous voulez :

&lt;pre&gt;/authorization allow
/authorization cancel
/authorization request&lt;/pre&gt;
Plus de détails en lançant cette commande &lt;tt&gt;/help authorization&lt;/tt&gt;

=== Commande /buffer ===

Cette commande vous permet de manipuler l'historique du texte tapé. Par exemple pour chercher du texte :

&lt;pre&gt;/buffer search_backward textecherché&lt;/pre&gt;
Pour enregistrer dans un fichier l'historique :

&lt;pre&gt;/buffer save nom_du_fichier&lt;/pre&gt;
Toujours plus de détails avec &lt;tt&gt;/help buffer&lt;/tt&gt;

===  Commande /del ===

Supprimer un contact. Et oui, c'est brutal aussi mcabber! :)

=== Commande /move ===

Cette commande permet de déplacer le contact sélectionné dans un groupe. Un groupe inexistant sera alors créé.

&lt;pre&gt;/move Salons&lt;/pre&gt;
=== Commande /room ===

Cette commande permet de gérer les salons. Elle contient de très nombreuses fonctionnalités, je vous conseille donc de taper &lt;tt&gt;\help room&lt;/tt&gt;. Voici quelques exemples :

Rejoindre un salon (pseudo et motdepasse facultatifs):

&lt;pre&gt;/room join salon@jabberfr.org pseudo motdepasse&lt;/pre&gt;
Ajouter aux marques-page et rejoindre automatiquement le salon sélectionné :

&lt;pre&gt;/room bookmark +autojoin&lt;/pre&gt;
== Configuration ==

La configuration de mcabber se réalise dans le fichier &lt;tt&gt;~/.mcabberrc&lt;/tt&gt;. Copions le fichier exemple fourni avec debian :

&lt;pre&gt;gunzip -c /usr/share/doc/mcabber/examples/mcabberrc.example.gz &amp;gt; ~/.mcabberrc&lt;/pre&gt;
On se retrouve avec un fichier contenant la configuration par défaut. Remarquez qu'il est très bien commenté. Nous détaillerons ici les options essentielles, mais vous pouvez peaufiner la configuration de vous-même.

=== Compte et mot de passe. ===

Pour définir son compte et mot de passe jabber :

&lt;pre&gt;# Please provide your Jabber (XMPP) identifier:
set jid = moua@jabber.fr
set password = supermegamotdepasse&lt;/pre&gt;
=== Multi-compte ===

&lt;blockquote&gt;J'ai plusieurs compte moi! Comment je fais?
&lt;/blockquote&gt;
Pas de panique! Il va juste falloir créer un fichier de configuration par compte. Par exemple : - .mcabberrc_jabberfr - .mcabberrc_gmail

Dans chacun d'entre eux vous préciser vos identifiants/mots de passe relatifs au compte. Et maintenant, pour utiliser le compte gmail, vous lancez la commande :

&lt;pre&gt;mcabber -f ~/.mcabberrc_gmail&lt;/pre&gt;
L'option &lt;tt&gt;-f&lt;/tt&gt; permet simplement de préciser à mcabber quel fichier de configuration utiliser.

=== Pseudonyme ===

Pour avoir son bon pseudonyme dans les salons :

&lt;pre&gt;# the jid variable can be used.
set nickname = &amp;quot;MonPseudoQuiDechire&amp;quot;&lt;/pre&gt;
=== Interface dans la langue de Victor Hugo ===

&lt;pre&gt;set lang = fr&lt;/pre&gt;
=== Correction orthographique et encodage ===

Pour n'avoir aucun soucis d'affichage des caractères, on préférera l'UTF-8 :

&lt;pre&gt;set spell_enable = 1
set spell_lang = fr_FR
set spell_encoding = UTF-8&lt;/pre&gt;
=== Qui afficher dans le roster? ===

On peut choisir le statut des contacts à afficher dans le roster. Par exemple, je ne veux afficher que les contacts en lignes &lt;tt&gt;o&lt;/tt&gt;, et disponibles pour discuter &lt;tt&gt;f&lt;/tt&gt; :

&lt;pre&gt;set roster_display_filter = of&lt;/pre&gt;
Rappelons la signification de ces lettres :

* o : En ligne (online)
* f : Prêt à discuter (free)
* d : Ne pas déranger (do not disturb)
* n : Indisponible (not avaiable)
* a : Absent (away)
* _ : Déconnecté

=== Enregistrement des discussions ===

&lt;pre&gt;set logging = 1
set load_logs = 1
set logging_dir = ~/.mcabber/histo/
set logging_ignore_status = 1&lt;/pre&gt;
===  Modules ===

Mcabber peut être étendu par des [http://wiki.mcabber.com/index.php/Modules modules]. Pour préciser le répertoire où ils sont enregistrés :

&lt;pre&gt;set modules_dir = /usr/lib/mcabber/&lt;/pre&gt;
Pour charger un module:

&lt;pre&gt;module load nomdumodule&lt;/pre&gt;
=== Temps avant d'être considéré &amp;quot;parti&amp;quot; ===

Changez le temps avant que votre statut soit automatiquement &amp;quot;away&amp;quot;

&lt;pre&gt;set autoaway = 180&lt;/pre&gt;
=== Changer les messages de statut ===

&lt;pre&gt;set message_avail     = Disponible
set message_free      = Prêt à discuter
set message_dnd       = Occupé à autre chose
set message_notavail  = Indisponible
set message_away      = Parti&lt;/pre&gt;
=== Fond transparent ===

Pour que le fond de mcabber soit transparent, précisez ceci dans les couleurs :

&lt;pre&gt;set color_background   = default&lt;/pre&gt;
===  Définir ses propres commandes ===

Vous pouvez vous créer vos propres raccourcis en indiquant vos commandes. Par exemple :

&lt;pre&gt;alias me = say /me&lt;/pre&gt;
===  Raccourcis clavier ===

Définissez vos propres raccourcis claviers avec &lt;tt&gt;bind keycode action&lt;/tt&gt;. Pour connaître le code d'une touche ou combinaison de touche, tapez la simplement dans mcabber. Si elle n'est attribuée à aucun raccourci, alors le code correspondant apparaîtra dans la barre de status. Quelques exemples :

&lt;pre&gt;# F5 (269) affiche/cache les contacts déconnectés
bind 269 = roster toggle_offline
# F12 (276) affiche/cache le roster
bind 276 = roster toggle
# alt-shift-k Monte dans le roster
bind M75 = roster up 
# alt-shift-j descend dans le roster
bind M74 = roster down &lt;/pre&gt;
=== Gestion des évènements ===

Lorsqu'un évènement survient (connexion d'un contact, nouveau message), mcabber peut lancer un script quelconque. Pour cela, on ajoute cette option :

&lt;pre&gt;set events_command = ~/.mcabber/eventcmd&lt;/pre&gt;
C'est donc le script &lt;tt&gt;eventcmd&lt;/tt&gt; placé dans &lt;tt&gt;~/.mcabber&lt;/tt&gt; qui sera exécuté. Un exemple de ce script est situé ici : &lt;tt&gt;/usr/share/doc/mcabber/examples/contrib/events/eventcmd&lt;/tt&gt;.

Cette solution est très pratique pour avoir des notifications par exemple.

=== Raccourcis d'urls ===

Le principe est le même qu'au paragraphe précédent : lorsqu'un message est reçu, on lance un script. Ce dernier est situé ici : &lt;tt&gt;/usr/share/doc/mcabber/examples/contrib/events/eventcmd.pastebin&lt;/tt&gt;.

=== Lancer une commande à un moment donné (hooks) ===

Le système de &amp;quot;hooks&amp;quot; permet de lancer une action lorsqu'un évènement survient.

Pour lancer une commande lorsque vous vous connectez, par exemple mettre votre statut à &amp;quot;ne pas déranger&amp;quot;:

&lt;pre&gt;set hook-post-connect = status dnd&lt;/pre&gt;
Et lorsque vous vous déconnectez, pour dire au-revoir à foo@bar :

&lt;pre&gt;set hook-pre-disconnect = say_to foo@bar Goodbye!&lt;/pre&gt;
=== Gérer mcabber à distance ou via des scripts ===

Sans être dans la fenêtre de mcabber, vous pouvez quand même le contrôler. Cela peut être utile sur un serveur éventuellement. Utilisez alors le système de &amp;quot;fifo&amp;quot; :

&lt;pre&gt;set fifo_name = ~/.mcabber/mcabber.fifo
set fifo_hide_commands = 0
set fifo_ignore = 0&lt;/pre&gt;
Et envoyez ensuite vos commandes dans le fichier fifo &lt;tt&gt;echo commande &amp;gt;&amp;gt; ~/.mcabber/mcabber.fifo&lt;/tt&gt;

== IRC ==

Non, mcabber n'est pas un client IRC. Cependant, certains serveurs jabbers proposent des passerelles vers le protocole IRC. Si votre adresse jabber le permet, alors vous pouvez rejoindre un salon de cette façon :

&lt;pre&gt;/room join #salon%irc.freenode.net@irc.jabberfr.org&lt;/pre&gt;
Décomposons cette ligne : - /room join : commande mcabber pour rejoindre un salon - #salon : nom du salon IRC - %irc.freenode.net : le serveur IRC est sur irc.freenode.net. ''Il est important d'utiliser un &lt;tt&gt;%&lt;/tt&gt; (spécifique à jabber)'' - @irc.jabberfr.org : C'est la passerelle IRC de votre compte jabber. L'exemple utilise celui de jabberfr:

Des informations sur le transport sont [http://wiki.jabberfr.org/w/index.php?title=index.php&amp;title=Passerelles#Comment_utiliser_la_passerelle_IRC.E2.80.AF.3F disponibles ici]

Oui mais problème, sur IRC, on utilise des commandes du type &amp;quot;/commande&amp;quot;. Comment faire pour que mcabber ne croit pas que c'est une commande pour lui?

Tout bêtement, il faut ajouter devant &lt;tt&gt;/say&lt;/tt&gt;. Par exemple :

&lt;pre&gt;/say /me&lt;/pre&gt;
Ou encore

&lt;pre&gt;/say /nick monnouveaupseudo&lt;/pre&gt;
Ajouter des alias dans le fichier de configuration de mcabber s'avère alors très utile.

== Pour aller plus loin... ==

* &lt;tt&gt;man mcabber&lt;/tt&gt;
* [http://mcabber.org Site officiel]
* [http://mcabber.com/files/mcabber_guide.pdf Guide officiel]
* [http://yeuxdelibad.net/Logiciel-libre/Tutoriels/Mcabber.html Dernière version du document]</text>
      <sha1>e3y2f3wog04nr4iv1klanjdy7mji2vn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>MediaWiki:Copyright</title>
    <ns>8</ns>
    <id>962</id>
    <revision>
      <id>3940</id>
      <timestamp>2012-03-14T08:44:56Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « Contenu disponible sous [http://creativecommons.org/licenses/by-sa/3.0/ Creative Commons Attribution-ShareAlike 3.0 Unported License] »</comment>
      <text xml:space="preserve" bytes="133">Contenu disponible sous [http://creativecommons.org/licenses/by-sa/3.0/ Creative Commons Attribution-ShareAlike 3.0 Unported License]</text>
      <sha1>2ji2o4mefxnnu12dbo35mnr88ihadz9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3941</id>
      <parentid>3940</parentid>
      <timestamp>2012-03-14T08:45:49Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="26">Contenu disponible sous $1</text>
      <sha1>8ym5zb33lriwyqu7pibkr5cg92xzsrw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>MediaWiki:Sidebar</title>
    <ns>8</ns>
    <id>103</id>
    <revision>
      <id>435</id>
      <timestamp>2010-01-28T07:25:12Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « * navigation ** mainpage|mainpage-description ** Spécial:AWCforum|Le Forum Interne ** portal-url|portal ** currentevents-url|currentevents ** recentchanges-url|recentchanges… »</comment>
      <text xml:space="preserve" bytes="251">* navigation
** mainpage|mainpage-description
** Spécial:AWCforum|Le Forum Interne
** portal-url|portal
** currentevents-url|currentevents
** recentchanges-url|recentchanges
** randompage-url|randompage
** helppage|help
* SEARCH
* TOOLBOX
* LANGUAGES</text>
      <sha1>97v9el536lpwyhfluiswrldubvxm2b5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>436</id>
      <parentid>435</parentid>
      <timestamp>2010-01-28T07:27:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="310">* navigation
** mainpage|mainpage-description
** Spécial:AWCforum|Le Forum Interne
** portal-url|portal
** currentevents-url|currentevents
** recentchanges-url|recentchanges
** randompage-url|randompage
** http://www.forum.debian-fr.org|Le &quot;forum.debian-fr.org&quot;
** helppage|help
* SEARCH
* TOOLBOX
* LANGUAGES</text>
      <sha1>okhepxas48pwc3g4jsr9lrjgefn8mzq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>437</id>
      <parentid>436</parentid>
      <timestamp>2010-01-28T07:28:26Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="301">* navigation
** mainpage|mainpage-description
** Spécial:AWCforum|Le Forum Interne
** portal-url|portal
** currentevents-url|currentevents
** recentchanges-url|recentchanges
** randompage-url|randompage
** http://forum.debian-fr.org|forum.debian-fr.org
** helppage|help
* SEARCH
* TOOLBOX
* LANGUAGES</text>
      <sha1>690oqmth2wlv28zsry30lczsrpk87pn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1048</id>
      <parentid>437</parentid>
      <timestamp>2010-02-08T12:22:54Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="344">* navigation
** mainpage|mainpage-description
** Projet_Accueil|Projet de page d'accueil
** Spécial:AWCforum|Le Forum Interne
** portal-url|portal
** currentevents-url|currentevents
** recentchanges-url|recentchanges
** randompage-url|randompage
** http://forum.debian-fr.org|forum.debian-fr.org
** helppage|help
* SEARCH
* TOOLBOX
* LANGUAGES</text>
      <sha1>qa3fccjl2ma5h084rju2jqmjxqpqr8y</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1162</id>
      <parentid>1048</parentid>
      <timestamp>2010-03-23T14:07:54Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="301">* navigation
** mainpage|mainpage-description
** Spécial:AWCforum|Le Forum Interne
** portal-url|portal
** currentevents-url|currentevents
** recentchanges-url|recentchanges
** randompage-url|randompage
** http://forum.debian-fr.org|forum.debian-fr.org
** helppage|help
* SEARCH
* TOOLBOX
* LANGUAGES</text>
      <sha1>690oqmth2wlv28zsry30lczsrpk87pn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1883</id>
      <parentid>1162</parentid>
      <timestamp>2010-08-06T13:24:32Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Ajout livre d'or</comment>
      <text xml:space="preserve" bytes="337">* navigation
** mainpage|mainpage-description
** Spécial:AWCforum|Le Forum Interne
** portal-url|portal
** currentevents-url|currentevents
** recentchanges-url|recentchanges
** randompage-url|randompage
** http://forum.debian-fr.org|forum.debian-fr.org
** Spécial:Guestbook|Le livre d'or
** helppage|help
* SEARCH
* TOOLBOX
* LANGUAGES</text>
      <sha1>n5urxgfdkrwh953olx5hmmma0se1egn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1956</id>
      <parentid>1883</parentid>
      <timestamp>2010-08-18T13:39:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="390">* navigation
** mainpage|mainpage-description
** Spécial:AWCforum|Le Forum Interne
** portal-url|portal
** currentevents-url|currentevents
** recentchanges-url|recentchanges
** randompage-url|randompage
** http://forum.debian-fr.org|forum.debian-fr.org
** Spécial:Guestbook|Le livre d'or
** helppage|help
* SEARCH
* TOOLBOX
** Special:MultipleUpload|Téléversements multiples
* LANGUAGES</text>
      <sha1>ac1wmgsxyhl4k6aseejfo24sak69soh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1963</id>
      <parentid>1956</parentid>
      <timestamp>2010-08-19T04:19:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="427">* navigation
** mainpage|mainpage-description
** Spécial:AWCforum|Le Forum Interne
** portal-url|portal
** currentevents-url|currentevents
** recentchanges-url|recentchanges
** randompage-url|randompage
** http://forum.debian-fr.org|forum.debian-fr.org
** Spécial:Guestbook|Le livre d'or
** helppage|help
* SEARCH
* TOOLBOX
** Special:MultipleUpload|Téléversements multiples
* LANGUAGES
* Forum Interne
** Spécial:AWCforum</text>
      <sha1>p0qberj87mhfb6z4r1171qyb3uvj4ef</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1964</id>
      <parentid>1963</parentid>
      <timestamp>2010-08-19T04:23:05Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="444">* navigation
** mainpage|mainpage-description
** Spécial:AWCforum|Le Forum Interne
** portal-url|portal
** currentevents-url|currentevents
** recentchanges-url|recentchanges
** randompage-url|randompage
** http://forum.debian-fr.org|forum.debian-fr.org
** Spécial:Guestbook|Le livre d'or
** helppage|help
* SEARCH
* TOOLBOX
** Special:MultipleUpload|Téléversements multiples
* LANGUAGES
* Forum Interne
** Le Forum interne|Spécial:AWCforum</text>
      <sha1>r0rjtuxhknbvq4gvtit0wayaa6iq7v1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1965</id>
      <parentid>1964</parentid>
      <timestamp>2010-08-19T04:28:23Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="523">* navigation
** mainpage|mainpage-description
** Spécial:AWCforum|Le Forum Interne
** portal-url|portal
** currentevents-url|currentevents
** recentchanges-url|recentchanges
** randompage-url|randompage
** http://forum.debian-fr.org|forum.debian-fr.org
** Spécial:Guestbook|Le livre d'or
** helppage|help
* SEARCH
* TOOLBOX
** Special:MultipleUpload|Téléversements multiples
* LANGUAGES

* new heading
** portal-url|portal
** http://www.mediawiki.org|MediaWiki home
* Forum Interne
** Le Forum interne|Spécial:AWCforum</text>
      <sha1>pz007a7pfvbcmrcz9mkjgvi1ggz0whf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1966</id>
      <parentid>1965</parentid>
      <timestamp>2010-08-19T04:32:15Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="524">* navigation
** mainpage|mainpage-description
** Spécial:AWCforum|Le Forum Interne
** portal-url|portal
** currentevents-url|currentevents
** recentchanges-url|recentchanges
** randompage-url|randompage
** http://forum.debian-fr.org|forum.debian-fr.org
** Spécial:Guestbook|Le livre d'or
** helppage|help
* SEARCH
* TOOLBOX
** Special:MultipleUpload|Téléversements multiples
* LANGUAGES
* new heading
** portal-url|portal
** http://www.mediawiki.org|MediaWiki home
* Forum Interne
** Le Forum interne | Spécial:AWCforum</text>
      <sha1>szkvhcb4onjydzti5x4cjitu9kzalfc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1967</id>
      <parentid>1966</parentid>
      <timestamp>2010-08-19T04:33:45Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="446">* navigation
** mainpage|mainpage-description
** Spécial:AWCforum|Le Forum Interne
** portal-url|portal
** currentevents-url|currentevents
** recentchanges-url|recentchanges
** randompage-url|randompage
** http://forum.debian-fr.org|forum.debian-fr.org
** Spécial:Guestbook|Le livre d'or
** helppage|help
* SEARCH
* TOOLBOX
** Special:MultipleUpload|Téléversements multiples
* LANGUAGES
* Forum Interne
** Le Forum interne | Spécial:AWCforum</text>
      <sha1>5k509y421gdefl7x363xurdpgtivs8i</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1968</id>
      <parentid>1967</parentid>
      <timestamp>2010-08-19T04:37:31Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="390">* navigation
** mainpage|mainpage-description
** Spécial:AWCforum|Le Forum Interne
** portal-url|portal
** currentevents-url|currentevents
** recentchanges-url|recentchanges
** randompage-url|randompage
** http://forum.debian-fr.org|forum.debian-fr.org
** Spécial:Guestbook|Le livre d'or
** helppage|help
* SEARCH
* TOOLBOX
** Special:MultipleUpload|Téléversements multiples
* LANGUAGES</text>
      <sha1>ac1wmgsxyhl4k6aseejfo24sak69soh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2303</id>
      <parentid>1968</parentid>
      <timestamp>2010-11-17T15:02:30Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="415">* navigation
** mainpage|mainpage-description
** Spécial:AWCforum|Le Forum Interne
** portal-url|portal
** currentevents-url|currentevents
** recentchanges-url|recentchanges
** randompage-url|randompage
** http://forum.debian-fr.org|forum.debian-fr.org
** Spécial:Guestbook|Le livre d'or
** Sondages|Les Sondages
** helppage|help
* SEARCH
* TOOLBOX
** Special:MultipleUpload|Téléversements multiples
* LANGUAGES</text>
      <sha1>fjha3f9topt00quxfshvbg0h5p1263t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2304</id>
      <parentid>2303</parentid>
      <timestamp>2010-11-17T15:02:59Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="415">* navigation
** mainpage|mainpage-description
** Spécial:AWCforum|Le Forum Interne
** portal-url|portal
** currentevents-url|currentevents
** recentchanges-url|recentchanges
** randompage-url|randompage
** http://forum.debian-fr.org|forum.debian-fr.org
** Spécial:Guestbook|Le livre d'or
** Sondages|Les sondages
** helppage|help
* SEARCH
* TOOLBOX
** Special:MultipleUpload|Téléversements multiples
* LANGUAGES</text>
      <sha1>1p05179pcd9vappc7c6r7rf9cqnix6a</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2383</id>
      <parentid>2304</parentid>
      <timestamp>2010-11-24T06:55:10Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="460">* navigation
** mainpage|mainpage-description
** Spécial:AWCforum|Le Forum Interne
** portal-url|portal
** currentevents-url|currentevents
** recentchanges-url|recentchanges
** Arborescence|Arborescence des catégories
** randompage-url|randompage
** http://forum.debian-fr.org|forum.debian-fr.org
** Spécial:Guestbook|Le livre d'or
** Sondages|Les sondages
** helppage|help
* SEARCH
* TOOLBOX
** Special:MultipleUpload|Téléversements multiples
* LANGUAGES</text>
      <sha1>exbdl3l8qub2kezsvv1kh2aeal3xg1b</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2384</id>
      <parentid>2383</parentid>
      <timestamp>2010-11-24T07:07:27Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="460">* navigation
** mainpage|mainpage-description
** Spécial:AWCforum|Le Forum Interne
** portal-url|portal
** currentevents-url|currentevents
** recentchanges-url|recentchanges
** Arborescence|Arborescence des catégories
** randompage-url|randompage
** Spécial:Guestbook|Le livre d'or
** Sondages|Les sondages
** helppage|help
** http://forum.debian-fr.org|forum.debian-fr.org
* SEARCH
* TOOLBOX
** Special:MultipleUpload|Téléversements multiples
* LANGUAGES</text>
      <sha1>twa4zl9j86z5pje3fcwswre422nvefu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2385</id>
      <parentid>2384</parentid>
      <timestamp>2010-11-24T08:10:40Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="410">* navigation
** mainpage|mainpage-description
** Spécial:AWCforum|Le Forum Interne
** portal-url|portal
** currentevents-url|currentevents
** recentchanges-url|recentchanges
** Arborescence|Arborescence des catégories
** randompage-url|randompage
** Spécial:Guestbook|Le livre d'or
** Sondages|Les sondages
** helppage|help
* SEARCH
* TOOLBOX
** Special:MultipleUpload|Téléversements multiples
* LANGUAGES</text>
      <sha1>pzw9n90hhpk15ivkjkw98oclqc03krz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2517</id>
      <parentid>2385</parentid>
      <timestamp>2010-12-17T15:08:14Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="464">* navigation
** mainpage|mainpage-description
** Spécial:AWCforum|Le Forum Interne
** portal-url|portal
** currentevents-url|currentevents
** recentchanges-url|recentchanges
** Arborescence|Arborescence des catégories
** randompage-url|randompage
** Spécial:Guestbook|Le livre d'or
** Sondages|Les sondages
** [http://pastebin.isalo.org/ Le &quot;pastebin&quot; du Wiki]
** helppage|help
* SEARCH
* TOOLBOX
** Special:MultipleUpload|Téléversements multiples
* LANGUAGES</text>
      <sha1>2nisg744hpk2qsbexu59bvf9ek6v15l</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2518</id>
      <parentid>2517</parentid>
      <timestamp>2010-12-17T15:20:14Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="464">* navigation
** mainpage|mainpage-description
** Spécial:AWCforum|Le Forum Interne
** portal-url|portal
** currentevents-url|currentevents
** recentchanges-url|recentchanges
** Arborescence|Arborescence des catégories
** randompage-url|randompage
** [http://pastebin.isalo.org/ Le &quot;pastebin&quot; du Wiki]
** Spécial:Guestbook|Le livre d'or
** Sondages|Les sondages
** helppage|help
* SEARCH
* TOOLBOX
** Special:MultipleUpload|Téléversements multiples
* LANGUAGES</text>
      <sha1>tt89xjho4qthz70ql8gf921675nbrtb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2519</id>
      <parentid>2518</parentid>
      <timestamp>2010-12-17T15:26:52Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="465">* navigation
** mainpage|mainpage-description
** Spécial:AWCforum|Le Forum Interne
** portal-url|portal
** currentevents-url|currentevents
** recentchanges-url|recentchanges
** Arborescence|Arborescence des catégories
** randompage-url|randompage
** Spécial:Guestbook|Le livre d'or
** Sondages|Les sondages
** helppage|help
** [http://pastebin.isalo.org/ Le &quot;pastebin&quot; du Wiki]

* SEARCH
* TOOLBOX
** Special:MultipleUpload|Téléversements multiples
* LANGUAGES</text>
      <sha1>eurrud6lgqy29gamjsusp15vf9i1s8u</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2521</id>
      <parentid>2519</parentid>
      <timestamp>2010-12-18T15:44:45Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="463">* navigation
** mainpage|mainpage-description
** Spécial:AWCforum|Le Forum Interne
** portal-url|portal
** currentevents-url|currentevents
** recentchanges-url|recentchanges
** Arborescence|Arborescence des catégories
** randompage-url|randompage
** Spécial:Guestbook|Le livre d'or
** Sondages|Les sondages
** helppage|help
** [http://pastebin.isalo.org/ Le pastebin du Wiki]

* SEARCH
* TOOLBOX
** Special:MultipleUpload|Téléversements multiples
* LANGUAGES</text>
      <sha1>lxj3efnmmoi1m5wzw3mj0g9827hgju7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2523</id>
      <parentid>2521</parentid>
      <timestamp>2010-12-19T16:02:27Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="462">* navigation
** mainpage|mainpage-description
** Spécial:AWCforum|Le Forum Interne
** portal-url|portal
** currentevents-url|currentevents
** recentchanges-url|recentchanges
** Arborescence|Arborescence des catégories
** randompage-url|randompage
** Spécial:Guestbook|Le livre d'or
** Sondages|Les sondages
** helppage|help
** [http://pastebin.isalo.org/ Le pastebin du Wiki]
* SEARCH
* TOOLBOX
** Special:MultipleUpload|Téléversements multiples
* LANGUAGES</text>
      <sha1>0uvc98iiw0ovkkd6y93leg541v2ut92</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2524</id>
      <parentid>2523</parentid>
      <timestamp>2010-12-19T16:03:16Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="514">* navigation
** mainpage|mainpage-description
** Spécial:AWCforum|Le Forum Interne
** portal-url|portal
** currentevents-url|currentevents
** recentchanges-url|recentchanges
** Arborescence|Arborescence des catégories
** randompage-url|randompage
** Spécial:Guestbook|Le livre d'or
** Sondages|Les sondages
** helppage|help
** [http://pastebin.isalo.org/ Le pastebin du Wiki]
* SEARCH
* TOOLBOX
** Special:MultipleUpload|Téléversements multiples
** [http://pastebin.isalo.org/ Le pastebin du Wiki]
* LANGUAGES</text>
      <sha1>3o8g5686fhgam37efrandvykca3c5ac</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2525</id>
      <parentid>2524</parentid>
      <timestamp>2010-12-19T16:20:34Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="460">* navigation
** mainpage|mainpage-description
** Spécial:AWCforum|Le Forum Interne
** portal-url|portal
** currentevents-url|currentevents
** recentchanges-url|recentchanges
** Arborescence|Arborescence des catégories
** randompage-url|randompage
** Spécial:Guestbook|Le livre d'or
** Sondages|Les sondages
** helppage|help
** http://pastebin.isalo.org/|Le pastebin du Wiki
* SEARCH
* TOOLBOX
** Special:MultipleUpload|Téléversements multiples
* LANGUAGES</text>
      <sha1>7wgsiwaeys1ro5i45lbetz26syxa872</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2526</id>
      <parentid>2525</parentid>
      <timestamp>2010-12-19T16:22:12Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="524">* navigation
** mainpage|mainpage-description
** Spécial:AWCforum|Le Forum Interne
** portal-url|portal
** currentevents-url|currentevents
** recentchanges-url|recentchanges
** Arborescence|Arborescence des catégories
** randompage-url|randompage
** Spécial:Guestbook|Le livre d'or
** Sondages|Les sondages
** helppage|help

* Services
** http://pastebin.isalo.org/|Le pastebin du Wiki
** http://gallery.isalo.org/|Hébergement d'images

* SEARCH
* TOOLBOX
** Special:MultipleUpload|Téléversements multiples
* LANGUAGES</text>
      <sha1>npm50yqjulrpkohcrq4dd8grf3jvhpr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2527</id>
      <parentid>2526</parentid>
      <timestamp>2010-12-19T18:08:16Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="540">* navigation
** mainpage|mainpage-description
** Spécial:AWCforum|Le Forum Interne
** portal-url|portal
** currentevents-url|currentevents
** recentchanges-url|recentchanges
** Arborescence|Arborescence des catégories
** randompage-url|randompage
** Spécial:Guestbook|Le livre d'or
** Sondages|Les sondages
** helppage|help

* Services
** http://pastebin.isalo.org/|Le pastebin du Wiki
** http://gallery.isalo.org/index.php/Public|Hébergement d'images

* SEARCH
* TOOLBOX
** Special:MultipleUpload|Téléversements multiples
* LANGUAGES</text>
      <sha1>7xye1fnini2mup817ewkxl7vjzfae4c</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2655</id>
      <parentid>2527</parentid>
      <timestamp>2010-12-31T12:14:43Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="520">* navigation
** mainpage|mainpage-description
** Spécial:AWCforum|Le Forum Interne
** portal-url|portal
** currentevents-url|currentevents
** recentchanges-url|recentchanges
** Arborescence|Arborescence des catégories
** randompage-url|randompage
** Spécial:Guestbook|Le livre d'or
** Sondages|Les sondages
** helppage|help

* Services
** http://pastebin.isalo.org/|Le pastebin du Wiki
** http://pix.isalo.org/|Hébergement d'images

* SEARCH
* TOOLBOX
** Special:MultipleUpload|Téléversements multiples
* LANGUAGES</text>
      <sha1>r2p7amktlx7orr0metfxyerz8jpmkrm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2899</id>
      <parentid>2655</parentid>
      <timestamp>2011-04-14T14:47:16Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="517">* navigation
** mainpage|mainpage-description
** Spécial:AWCforum|Le Forum Interne
** portal-url|portal
** currentevents-url|currentevents
** recentchanges-url|recentchanges
** Arborescence|Arborescence des catégories
** randompage-url|randompage
** Spécial:Guestbook|Le livre d'or
** Sondages|Les sondages
** helppage|help

* Services
** http://paste.isalo.org/|Le pastebin du Wiki
** http://pix.isalo.org/|Hébergement d'images

* SEARCH
* TOOLBOX
** Special:MultipleUpload|Téléversements multiples
* LANGUAGES</text>
      <sha1>mkqnpnpsm91bfelu8ciqyr36tes8s4r</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3138</id>
      <parentid>2899</parentid>
      <timestamp>2011-07-31T06:25:05Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Ajout lien: Pour nous contacter</comment>
      <text xml:space="preserve" bytes="557">* navigation
** mainpage|mainpage-description
** Spécial:AWCforum|Le Forum Interne
** portal-url|portal
** currentevents-url|currentevents
** recentchanges-url|recentchanges
** Arborescence|Arborescence des catégories
** randompage-url|randompage
** Spécial:Guestbook|Le livre d'or
** Sondages|Les sondages
** Spécial:Contact|Pour nous contacter
** helppage|help

* Services
** http://paste.isalo.org/|Le pastebin du Wiki
** http://pix.isalo.org/|Hébergement d'images

* SEARCH
* TOOLBOX
** Special:MultipleUpload|Téléversements multiples
* LANGUAGES</text>
      <sha1>3qtedufxef9gnp4w98f9qhfckgtv4ol</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4631</id>
      <parentid>3138</parentid>
      <timestamp>2012-10-29T07:40:56Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <text xml:space="preserve" bytes="571">* navigation
** mainpage|mainpage-description
** Spécial:AWCforum|Le Forum Interne
** portal-url|portal
** currentevents-url|Modèle:DernièresNouvelles
** recentchanges-url|recentchanges
** Arborescence|Arborescence des catégories
** randompage-url|randompage
** Spécial:Guestbook|Le livre d'or
** Sondages|Les sondages
** Spécial:Contact|Pour nous contacter
** helppage|help

* Services
** http://paste.isalo.org/|Le pastebin du Wiki
** http://pix.isalo.org/|Hébergement d'images

* SEARCH
* TOOLBOX
** Special:MultipleUpload|Téléversements multiples
* LANGUAGES</text>
      <sha1>krm5bv7d08a1vy56i8f9g6layvuqhsz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4632</id>
      <parentid>4631</parentid>
      <timestamp>2012-10-29T07:41:36Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <text xml:space="preserve" bytes="565">* navigation
** mainpage|mainpage-description
** Spécial:AWCforum|Le Forum Interne
** portal-url|portal
** Modèle:DernièresNouvelles|Actualités
** recentchanges-url|recentchanges
** Arborescence|Arborescence des catégories
** randompage-url|randompage
** Spécial:Guestbook|Le livre d'or
** Sondages|Les sondages
** Spécial:Contact|Pour nous contacter
** helppage|help

* Services
** http://paste.isalo.org/|Le pastebin du Wiki
** http://pix.isalo.org/|Hébergement d'images

* SEARCH
* TOOLBOX
** Special:MultipleUpload|Téléversements multiples
* LANGUAGES</text>
      <sha1>dw0e69cpgwntj48blykn685qo6jglg9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5058</id>
      <parentid>4632</parentid>
      <timestamp>2013-03-20T18:03:49Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="618">* navigation
** mainpage|mainpage-description
** Spécial:AWCforum|Le Forum Interne
** portal-url|portal
** Modèle:DernièresNouvelles|Actualités
** recentchanges-url|recentchanges
** Arborescence|Arborescence des catégories
** randompage-url|randompage
** Spécial:Guestbook|Le livre d'or
** Sondages|Les sondages
** Spécial:Contact|Pour nous contacter
** helppage|help

* Services
** http://www.annuairelibre.org/|L'annuaire du libre
** http://paste.isalo.org/|Le pastebin du Wiki
** http://pix.isalo.org/|Hébergement d'images

* SEARCH
* TOOLBOX
** Special:MultipleUpload|Téléversements multiples
* LANGUAGES</text>
      <sha1>dpsx7q2qrx0n7ic9ad2537hjvp8bhcb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5593</id>
      <parentid>5058</parentid>
      <timestamp>2014-04-22T16:29:04Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="580">* navigation
** mainpage|mainpage-description
** portal-url|portal
** Modèle:DernièresNouvelles|Actualités
** recentchanges-url|recentchanges
** Arborescence|Arborescence des catégories
** randompage-url|randompage
** Spécial:Guestbook|Le livre d'or
** Sondages|Les sondages
** Spécial:Contact|Pour nous contacter
** helppage|help

* Services
** http://www.annuairelibre.org/|L'annuaire du libre
** http://paste.isalo.org/|Le pastebin du Wiki
** http://pix.isalo.org/|Hébergement d'images

* SEARCH
* TOOLBOX
** Special:MultipleUpload|Téléversements multiples
* LANGUAGES</text>
      <sha1>p0bd3romewxoe0mweaq8xdtc7ga6d26</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Meilleurs logiciels pour console</title>
    <ns>0</ns>
    <id>846</id>
    <revision>
      <id>3445</id>
      <timestamp>2011-09-01T14:30:37Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <comment>Page créée avec « = Administration = * foremost: application pour récupérer des données « post mortem » * iptraf: Surveiller son réseau  = Outils = * mc (Midnight Commander): midnight co... »</comment>
      <text xml:space="preserve" bytes="2422">= Administration =
* foremost: application pour récupérer des données « post mortem »
* iptraf: Surveiller son réseau

= Outils =
* mc (Midnight Commander): midnight commander - un puissant gestionnaire de fichiers
* htop: Outil interactif de visualisation de processus
* unaccent: Remplacez des lettres accentuées par leur équivalent non accentué
* detox: Remplacez les caractères problématiques dans les noms de fichier
* bwm-ng, iftop: Afficher l'état de la bande passante pour les interfaces réseau
* xclip : Gérer le presse-papier
* sselp : Affiche le presse-papier (paquet suckless-tools)
* rsync : Pour vos sauvegardes
* wkhtmltopdf : Outil en console permettant de convertir une page web au format pdf
* urlview : Affiche les urls contenues dans un fichier


= shells =
* zsh: Interpréteur de commandes doté de nombreuses fonctions

= Graphique =
* scrot: Utilitaire de capture d'écran en ligne de commande
* imagemagick: Manipulation d'images
* caca-utils : Plusieurs outils pour voir des images en console, comme cacaview, ou img2txt
* fbi : pour voir les images

= Mail =
* mutt: Outil de lecture de courriel en mode texte, gérant MIME, GPG, PGP et les fils de discussion
* alpine: Text-based email client, friendly for novices but powerful

= Son =
* ncmpcpp: ncurses-based client for the Music Player Daemon (MPD)
* alsamixer: gérer le volume sonore

= Web =
* lynx: Text-mode WWW Browser
* links: Web browser running in text mode
* w3m: Navigateur en mode texte à la vim

= Net =
* finch: text-based multi-protocol instant messaging client
* irssi: Client IRC en mode console
* nmap: utilitaire pour l'exploration de réseau et l'audit de sécurité.
* ncftp: Un client de FTP facile à utiliser et bien présenté
* mcabber : Client jabber en console
* lftp : Client ftp
* cclive, clive, get-glash-videos : Pour télécharger les videos flash
* rtorrent : Client bittorrent

= Editeurs =
* emacs: GNU Emacs est un éditeur de texte extensible et auto-documenté
* vim: Vi IMproved - éditeur vi amélioré

= Jeux = 
* gnugo : jeu de go
* crawl : roguelike
* nethack : roguelike

= Divers =
* screen: Multiplexeur d'écran avec une émulation de terminal VT100/ANSI
* dvtm : Gestionnaire de fenêtres en mode console, où les fenêtres sont les consoles.


= Voir aussi =
* http://www.debian-fr.org/les-meilleurs-logiciels-console-t21796.html

[[Category:Logiciels]]
[[Category:Console]]</text>
      <sha1>kj9zij49y4if42fyhgmrnj3ugw187j7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3447</id>
      <parentid>3445</parentid>
      <timestamp>2011-09-02T05:56:38Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2432">= Administration =
* foremost: application pour récupérer des données « post mortem »
* iptraf: Surveiller son réseau

= Outils =
* mc (Midnight Commander): midnight commander - un puissant gestionnaire de fichiers
* htop: Outil interactif de visualisation de processus
* unaccent: Remplacez des lettres accentuées par leur équivalent non accentué
* detox: Remplacez les caractères problématiques dans les noms de fichier
* bwm-ng, iftop: Afficher l'état de la bande passante pour les interfaces réseau
* xclip : Gérer le presse-papier
* sselp : Affiche le presse-papier (paquet suckless-tools)
* [[rsync|rsync : Pour vos sauvegardes]]
* wkhtmltopdf : Outil en console permettant de convertir une page web au format pdf
* urlview : Affiche les urls contenues dans un fichier


= shells =
* zsh: Interpréteur de commandes doté de nombreuses fonctions

= Graphique =
* scrot: Utilitaire de capture d'écran en ligne de commande
* imagemagick: Manipulation d'images
* caca-utils : Plusieurs outils pour voir des images en console, comme cacaview, ou img2txt
* fbi : pour voir les images

= Mail =
* mutt: Outil de lecture de courriel en mode texte, gérant MIME, GPG, PGP et les fils de discussion
* alpine: Text-based email client, friendly for novices but powerful

= Son =
* ncmpcpp: ncurses-based client for the Music Player Daemon (MPD)
* alsamixer: gérer le volume sonore

= Web =
* lynx: Text-mode WWW Browser
* links: Web browser running in text mode
* w3m: Navigateur en mode texte à la vim

= Net =
* finch: text-based multi-protocol instant messaging client
* irssi: Client IRC en mode console
* nmap: utilitaire pour l'exploration de réseau et l'audit de sécurité.
* ncftp: Un client de FTP facile à utiliser et bien présenté
* mcabber : Client jabber en console
* lftp : Client ftp
* cclive, clive, get-glash-videos : Pour télécharger les videos flash
* rtorrent : Client bittorrent

= Editeurs =
* emacs: GNU Emacs est un éditeur de texte extensible et auto-documenté
* vim: Vi IMproved - éditeur vi amélioré

= Jeux = 
* gnugo : jeu de go
* crawl : roguelike
* nethack : roguelike

= Divers =
* screen: Multiplexeur d'écran avec une émulation de terminal VT100/ANSI
* dvtm : Gestionnaire de fenêtres en mode console, où les fenêtres sont les consoles.


= Voir aussi =
* http://www.debian-fr.org/les-meilleurs-logiciels-console-t21796.html

[[Category:Logiciels]]
[[Category:Console]]</text>
      <sha1>k2bpppjxvlkkmsflh607mxhco2xt4pc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3489</id>
      <parentid>3447</parentid>
      <timestamp>2011-10-15T20:31:53Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="2479">= Administration =
* foremost: application pour récupérer des données « post mortem »
* iptraf: Surveiller son réseau

= Outils =
* mc (Midnight Commander): midnight commander - un puissant gestionnaire de fichiers
* htop: Outil interactif de visualisation de processus
* unaccent: Remplacez des lettres accentuées par leur équivalent non accentué
* detox: Remplacez les caractères problématiques dans les noms de fichier
* bwm-ng, iftop: Afficher l'état de la bande passante pour les interfaces réseau
* xclip : Gérer le presse-papier
* sselp : Affiche le presse-papier (paquet suckless-tools)
* [[rsync|rsync : Pour vos sauvegardes]]
* wkhtmltopdf : Outil en console permettant de convertir une page web au format pdf
* urlview : Affiche les urls contenues dans un fichier


= shells =
* zsh: Interpréteur de commandes doté de nombreuses fonctions

= Graphique =
* scrot: Utilitaire de capture d'écran en ligne de commande
* imagemagick: Manipulation d'images
* caca-utils : Plusieurs outils pour voir des images en console, comme cacaview, ou img2txt
* fbi : pour voir les images

= Mail =
* mutt: Outil de lecture de courriel en mode texte, gérant MIME, GPG, PGP et les fils de discussion
* alpine: Text-based email client, friendly for novices but powerful

= Son =
* ncmpcpp: ncurses-based client for the Music Player Daemon (MPD)
* alsamixer: gérer le volume sonore

= Web =
* lynx: Text-mode WWW Browser
* links: Web browser running in text mode
* w3m: Navigateur en mode texte à la vim

= Net =
* finch: text-based multi-protocol instant messaging client
* irssi: Client IRC en mode console
* nmap: utilitaire pour l'exploration de réseau et l'audit de sécurité.
* ncftp: Un client de FTP facile à utiliser et bien présenté
* mcabber : Client jabber en console
* lftp : Client ftp
* cclive, clive, get-glash-videos : Pour télécharger les videos flash
* rtorrent : Client bittorrent

= Lexteur de flux RSS =
* canto
* newsbeuter


= Editeurs =
* emacs: GNU Emacs est un éditeur de texte extensible et auto-documenté
* vim: Vi IMproved - éditeur vi amélioré

= Jeux = 
* gnugo : jeu de go
* crawl : roguelike
* nethack : roguelike

= Divers =
* screen: Multiplexeur d'écran avec une émulation de terminal VT100/ANSI
* dvtm : Gestionnaire de fenêtres en mode console, où les fenêtres sont les consoles.


= Voir aussi =
* http://www.debian-fr.org/les-meilleurs-logiciels-console-t21796.html

[[Category:Logiciels]]
[[Category:Console]]</text>
      <sha1>ik30h8o72dx90yuuqfgagxo641po2hs</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3919</id>
      <parentid>3489</parentid>
      <timestamp>2012-03-10T20:03:00Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <comment>/* Outils */</comment>
      <text xml:space="preserve" bytes="2535">= Administration =
* foremost: application pour récupérer des données « post mortem »
* iptraf: Surveiller son réseau

= Outils =
* mc (Midnight Commander): midnight commander - un puissant gestionnaire de fichiers
* ranger : Un gestionnaire de fichier pratique à la vim
* htop: Outil interactif de visualisation de processus
* unaccent: Remplacez des lettres accentuées par leur équivalent non accentué
* detox: Remplacez les caractères problématiques dans les noms de fichier
* bwm-ng, iftop: Afficher l'état de la bande passante pour les interfaces réseau
* xclip : Gérer le presse-papier
* sselp : Affiche le presse-papier (paquet suckless-tools)
* [[rsync|rsync : Pour vos sauvegardes]]
* wkhtmltopdf : Outil en console permettant de convertir une page web au format pdf
* urlview : Affiche les urls contenues dans un fichier

= shells =
* zsh: Interpréteur de commandes doté de nombreuses fonctions

= Graphique =
* scrot: Utilitaire de capture d'écran en ligne de commande
* imagemagick: Manipulation d'images
* caca-utils : Plusieurs outils pour voir des images en console, comme cacaview, ou img2txt
* fbi : pour voir les images

= Mail =
* mutt: Outil de lecture de courriel en mode texte, gérant MIME, GPG, PGP et les fils de discussion
* alpine: Text-based email client, friendly for novices but powerful

= Son =
* ncmpcpp: ncurses-based client for the Music Player Daemon (MPD)
* alsamixer: gérer le volume sonore

= Web =
* lynx: Text-mode WWW Browser
* links: Web browser running in text mode
* w3m: Navigateur en mode texte à la vim

= Net =
* finch: text-based multi-protocol instant messaging client
* irssi: Client IRC en mode console
* nmap: utilitaire pour l'exploration de réseau et l'audit de sécurité.
* ncftp: Un client de FTP facile à utiliser et bien présenté
* mcabber : Client jabber en console
* lftp : Client ftp
* cclive, clive, get-glash-videos : Pour télécharger les videos flash
* rtorrent : Client bittorrent

= Lexteur de flux RSS =
* canto
* newsbeuter


= Editeurs =
* emacs: GNU Emacs est un éditeur de texte extensible et auto-documenté
* vim: Vi IMproved - éditeur vi amélioré

= Jeux = 
* gnugo : jeu de go
* crawl : roguelike
* nethack : roguelike

= Divers =
* screen: Multiplexeur d'écran avec une émulation de terminal VT100/ANSI
* dvtm : Gestionnaire de fenêtres en mode console, où les fenêtres sont les consoles.


= Voir aussi =
* http://www.debian-fr.org/les-meilleurs-logiciels-console-t21796.html

[[Category:Logiciels]]
[[Category:Console]]</text>
      <sha1>a0qbaeh7yvmawyi00l9nh7l0h6rf716</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3956</id>
      <parentid>3919</parentid>
      <timestamp>2012-03-16T16:38:51Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <comment>/* Outils */</comment>
      <text xml:space="preserve" bytes="2546">= Administration =
* foremost: application pour récupérer des données « post mortem »
* iptraf: Surveiller son réseau

= Outils =
* mc (Midnight Commander): midnight commander - un puissant gestionnaire de fichiers
* [[ranger|ranger : Un gestionnaire de fichier pratique à la vim]]
* htop: Outil interactif de visualisation de processus
* unaccent: Remplacez des lettres accentuées par leur équivalent non accentué
* detox: Remplacez les caractères problématiques dans les noms de fichier
* bwm-ng, iftop: Afficher l'état de la bande passante pour les interfaces réseau
* xclip : Gérer le presse-papier
* sselp : Affiche le presse-papier (paquet suckless-tools)
* [[rsync|rsync : Pour vos sauvegardes]]
* wkhtmltopdf : Outil en console permettant de convertir une page web au format pdf
* urlview : Affiche les urls contenues dans un fichier

= shells =
* zsh: Interpréteur de commandes doté de nombreuses fonctions

= Graphique =
* scrot: Utilitaire de capture d'écran en ligne de commande
* imagemagick: Manipulation d'images
* caca-utils : Plusieurs outils pour voir des images en console, comme cacaview, ou img2txt
* fbi : pour voir les images

= Mail =
* mutt: Outil de lecture de courriel en mode texte, gérant MIME, GPG, PGP et les fils de discussion
* alpine: Text-based email client, friendly for novices but powerful

= Son =
* ncmpcpp: ncurses-based client for the Music Player Daemon (MPD)
* alsamixer: gérer le volume sonore

= Web =
* lynx: Text-mode WWW Browser
* links: Web browser running in text mode
* w3m: Navigateur en mode texte à la vim

= Net =
* finch: text-based multi-protocol instant messaging client
* irssi: Client IRC en mode console
* nmap: utilitaire pour l'exploration de réseau et l'audit de sécurité.
* ncftp: Un client de FTP facile à utiliser et bien présenté
* mcabber : Client jabber en console
* lftp : Client ftp
* cclive, clive, get-glash-videos : Pour télécharger les videos flash
* rtorrent : Client bittorrent

= Lexteur de flux RSS =
* canto
* newsbeuter


= Editeurs =
* emacs: GNU Emacs est un éditeur de texte extensible et auto-documenté
* vim: Vi IMproved - éditeur vi amélioré

= Jeux = 
* gnugo : jeu de go
* crawl : roguelike
* nethack : roguelike

= Divers =
* screen: Multiplexeur d'écran avec une émulation de terminal VT100/ANSI
* dvtm : Gestionnaire de fenêtres en mode console, où les fenêtres sont les consoles.


= Voir aussi =
* http://www.debian-fr.org/les-meilleurs-logiciels-console-t21796.html

[[Category:Logiciels]]
[[Category:Console]]</text>
      <sha1>ifmlv621n3uow1re6tcbls4nciz3eap</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4946</id>
      <parentid>3956</parentid>
      <timestamp>2013-01-31T15:20:27Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="2681">= Administration =
* foremost: application pour récupérer des données « post mortem »
* iptraf: Surveiller son réseau

= Outils =
* mc (Midnight Commander): midnight commander - un puissant gestionnaire de fichiers
* [[ranger|ranger : Un gestionnaire de fichier pratique à la vim]]
* htop: Outil interactif de visualisation de processus
* unaccent: Remplacez des lettres accentuées par leur équivalent non accentué
* detox: Remplacez les caractères problématiques dans les noms de fichier
* bwm-ng, iftop: Afficher l'état de la bande passante pour les interfaces réseau
* xclip : Gérer le presse-papier
* sselp : Affiche le presse-papier (paquet suckless-tools)
* [[rsync|rsync : Pour vos sauvegardes]]
* wkhtmltopdf : Outil en console permettant de convertir une page web au format pdf
* urlview : Affiche les urls contenues dans un fichier

= shells =
* zsh: Interpréteur de commandes doté de nombreuses fonctions

= Graphique =
* scrot: Utilitaire de capture d'écran en ligne de commande
* imagemagick: Manipulation d'images
* caca-utils : Plusieurs outils pour voir des images en console, comme cacaview, ou img2txt
* fbi : pour voir les images
* optipng : optimise les png en réduisant leur taille mais pas leur qualité
* jpegoptim : même chose que optipng, mais pour les jpg

= Mail =
* mutt: Outil de lecture de courriel en mode texte, gérant MIME, GPG, PGP et les fils de discussion
* alpine: Text-based email client, friendly for novices but powerful

= Son =
* ncmpcpp: ncurses-based client for the Music Player Daemon (MPD)
* alsamixer: gérer le volume sonore

= Web =
* lynx: Text-mode WWW Browser
* links: Web browser running in text mode
* w3m: Navigateur en mode texte à la vim

= Net =
* finch: text-based multi-protocol instant messaging client
* irssi: Client IRC en mode console
* nmap: utilitaire pour l'exploration de réseau et l'audit de sécurité.
* ncftp: Un client de FTP facile à utiliser et bien présenté
* mcabber : Client jabber en console
* lftp : Client ftp
* cclive, clive, get-glash-videos : Pour télécharger les videos flash
* rtorrent : Client bittorrent

= Lexteur de flux RSS =
* canto
* newsbeuter


= Editeurs =
* emacs: GNU Emacs est un éditeur de texte extensible et auto-documenté
* vim: Vi IMproved - éditeur vi amélioré

= Jeux = 
* gnugo : jeu de go
* crawl : roguelike
* nethack : roguelike

= Divers =
* screen: Multiplexeur d'écran avec une émulation de terminal VT100/ANSI
* dvtm : Gestionnaire de fenêtres en mode console, où les fenêtres sont les consoles.


= Voir aussi =
* http://www.debian-fr.org/les-meilleurs-logiciels-console-t21796.html

[[Category:Logiciels]]
[[Category:Console]]</text>
      <sha1>m3yy42p561pzhi6aa0veo6qst2v2j08</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4950</id>
      <parentid>4946</parentid>
      <timestamp>2013-02-02T19:24:20Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>/* Graphique */</comment>
      <text xml:space="preserve" bytes="2795">= Administration =
* foremost: application pour récupérer des données « post mortem »
* iptraf: Surveiller son réseau

= Outils =
* mc (Midnight Commander): midnight commander - un puissant gestionnaire de fichiers
* [[ranger|ranger : Un gestionnaire de fichier pratique à la vim]]
* htop: Outil interactif de visualisation de processus
* unaccent: Remplacez des lettres accentuées par leur équivalent non accentué
* detox: Remplacez les caractères problématiques dans les noms de fichier
* bwm-ng, iftop: Afficher l'état de la bande passante pour les interfaces réseau
* xclip : Gérer le presse-papier
* sselp : Affiche le presse-papier (paquet suckless-tools)
* [[rsync|rsync : Pour vos sauvegardes]]
* wkhtmltopdf : Outil en console permettant de convertir une page web au format pdf
* urlview : Affiche les urls contenues dans un fichier

= shells =
* zsh: Interpréteur de commandes doté de nombreuses fonctions

= Graphique =
* scrot : utilitaire de capture d'écran en ligne de commande
* imagemagick : manipulation d'images (conversions, transformations, etc.)
* caca-utils : plusieurs outils pour voir des images en console, comme cacaview ou img2txt
* fbi : affiche des images dans les [[Glossaire#Terminal|tty]] via le framebuffer
* optipng : optimise les png en réduisant leur taille mais pas leur qualité
* jpegoptim : optimise les jpg en réduisant leur taille mais pas leur qualité

= Mail =
* mutt: Outil de lecture de courriel en mode texte, gérant MIME, GPG, PGP et les fils de discussion
* alpine: Text-based email client, friendly for novices but powerful

= Son =
* ncmpcpp: ncurses-based client for the Music Player Daemon (MPD)
* alsamixer: gérer le volume sonore

= Web =
* lynx: Text-mode WWW Browser
* links: Web browser running in text mode
* w3m: Navigateur en mode texte à la vim

= Net =
* finch: text-based multi-protocol instant messaging client
* irssi: Client IRC en mode console
* nmap: utilitaire pour l'exploration de réseau et l'audit de sécurité.
* ncftp: Un client de FTP facile à utiliser et bien présenté
* mcabber : Client jabber en console
* lftp : Client ftp
* cclive, clive, get-glash-videos : Pour télécharger les videos flash
* rtorrent : Client bittorrent

= Lexteur de flux RSS =
* canto
* newsbeuter


= Editeurs =
* emacs: GNU Emacs est un éditeur de texte extensible et auto-documenté
* vim: Vi IMproved - éditeur vi amélioré

= Jeux = 
* gnugo : jeu de go
* crawl : roguelike
* nethack : roguelike

= Divers =
* screen: Multiplexeur d'écran avec une émulation de terminal VT100/ANSI
* dvtm : Gestionnaire de fenêtres en mode console, où les fenêtres sont les consoles.


= Voir aussi =
* http://www.debian-fr.org/les-meilleurs-logiciels-console-t21796.html

[[Category:Logiciels]]
[[Category:Console]]</text>
      <sha1>1ha57v16a4zhw1nfmb6l8ltdho9d4j4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4951</id>
      <parentid>4950</parentid>
      <timestamp>2013-02-02T19:26:00Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>/* Graphique */</comment>
      <text xml:space="preserve" bytes="2836">= Administration =
* foremost: application pour récupérer des données « post mortem »
* iptraf: Surveiller son réseau

= Outils =
* mc (Midnight Commander): midnight commander - un puissant gestionnaire de fichiers
* [[ranger|ranger : Un gestionnaire de fichier pratique à la vim]]
* htop: Outil interactif de visualisation de processus
* unaccent: Remplacez des lettres accentuées par leur équivalent non accentué
* detox: Remplacez les caractères problématiques dans les noms de fichier
* bwm-ng, iftop: Afficher l'état de la bande passante pour les interfaces réseau
* xclip : Gérer le presse-papier
* sselp : Affiche le presse-papier (paquet suckless-tools)
* [[rsync|rsync : Pour vos sauvegardes]]
* wkhtmltopdf : Outil en console permettant de convertir une page web au format pdf
* urlview : Affiche les urls contenues dans un fichier

= shells =
* zsh: Interpréteur de commandes doté de nombreuses fonctions

= Graphique =
* scrot : utilitaire de capture d'écran en ligne de commande
* imagemagick : manipulation d'images (conversions, transformations, etc.)
* caca-utils : plusieurs outils pour voir des images en console, comme cacaview ou img2txt
* fbi : affiche des images dans les [[Glossaire#Terminal|tty]] via le framebuffer (ne nécessite pas de serveur graphique)
* optipng : optimise les png en réduisant leur taille mais pas leur qualité
* jpegoptim : optimise les jpg en réduisant leur taille mais pas leur qualité

= Mail =
* mutt: Outil de lecture de courriel en mode texte, gérant MIME, GPG, PGP et les fils de discussion
* alpine: Text-based email client, friendly for novices but powerful

= Son =
* ncmpcpp: ncurses-based client for the Music Player Daemon (MPD)
* alsamixer: gérer le volume sonore

= Web =
* lynx: Text-mode WWW Browser
* links: Web browser running in text mode
* w3m: Navigateur en mode texte à la vim

= Net =
* finch: text-based multi-protocol instant messaging client
* irssi: Client IRC en mode console
* nmap: utilitaire pour l'exploration de réseau et l'audit de sécurité.
* ncftp: Un client de FTP facile à utiliser et bien présenté
* mcabber : Client jabber en console
* lftp : Client ftp
* cclive, clive, get-glash-videos : Pour télécharger les videos flash
* rtorrent : Client bittorrent

= Lexteur de flux RSS =
* canto
* newsbeuter


= Editeurs =
* emacs: GNU Emacs est un éditeur de texte extensible et auto-documenté
* vim: Vi IMproved - éditeur vi amélioré

= Jeux = 
* gnugo : jeu de go
* crawl : roguelike
* nethack : roguelike

= Divers =
* screen: Multiplexeur d'écran avec une émulation de terminal VT100/ANSI
* dvtm : Gestionnaire de fenêtres en mode console, où les fenêtres sont les consoles.


= Voir aussi =
* http://www.debian-fr.org/les-meilleurs-logiciels-console-t21796.html

[[Category:Logiciels]]
[[Category:Console]]</text>
      <sha1>p0ui56bkw02ae18jo9dn6nz46gfpxtk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4952</id>
      <parentid>4951</parentid>
      <timestamp>2013-02-02T19:28:48Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>/* Son */</comment>
      <text xml:space="preserve" bytes="2964">= Administration =
* foremost: application pour récupérer des données « post mortem »
* iptraf: Surveiller son réseau

= Outils =
* mc (Midnight Commander): midnight commander - un puissant gestionnaire de fichiers
* [[ranger|ranger : Un gestionnaire de fichier pratique à la vim]]
* htop: Outil interactif de visualisation de processus
* unaccent: Remplacez des lettres accentuées par leur équivalent non accentué
* detox: Remplacez les caractères problématiques dans les noms de fichier
* bwm-ng, iftop: Afficher l'état de la bande passante pour les interfaces réseau
* xclip : Gérer le presse-papier
* sselp : Affiche le presse-papier (paquet suckless-tools)
* [[rsync|rsync : Pour vos sauvegardes]]
* wkhtmltopdf : Outil en console permettant de convertir une page web au format pdf
* urlview : Affiche les urls contenues dans un fichier

= shells =
* zsh: Interpréteur de commandes doté de nombreuses fonctions

= Graphique =
* scrot : utilitaire de capture d'écran en ligne de commande
* imagemagick : manipulation d'images (conversions, transformations, etc.)
* caca-utils : plusieurs outils pour voir des images en console, comme cacaview ou img2txt
* fbi : affiche des images dans les [[Glossaire#Terminal|tty]] via le framebuffer (ne nécessite pas de serveur graphique)
* optipng : optimise les png en réduisant leur taille mais pas leur qualité
* jpegoptim : optimise les jpg en réduisant leur taille mais pas leur qualité

= Mail =
* mutt: Outil de lecture de courriel en mode texte, gérant MIME, GPG, PGP et les fils de discussion
* alpine: Text-based email client, friendly for novices but powerful

= Son =
* ncmpc / ncmpcpp : clients pour MPD (Music Player Daemon) avec une interface ncurses (écrits respectivement en C et en C++)
* alsamixer : gère le volume sonore des différents canaux utilisés par ALSA via une interface ncurses

= Web =
* lynx: Text-mode WWW Browser
* links: Web browser running in text mode
* w3m: Navigateur en mode texte à la vim

= Net =
* finch: text-based multi-protocol instant messaging client
* irssi: Client IRC en mode console
* nmap: utilitaire pour l'exploration de réseau et l'audit de sécurité.
* ncftp: Un client de FTP facile à utiliser et bien présenté
* mcabber : Client jabber en console
* lftp : Client ftp
* cclive, clive, get-glash-videos : Pour télécharger les videos flash
* rtorrent : Client bittorrent

= Lexteur de flux RSS =
* canto
* newsbeuter


= Editeurs =
* emacs: GNU Emacs est un éditeur de texte extensible et auto-documenté
* vim: Vi IMproved - éditeur vi amélioré

= Jeux = 
* gnugo : jeu de go
* crawl : roguelike
* nethack : roguelike

= Divers =
* screen: Multiplexeur d'écran avec une émulation de terminal VT100/ANSI
* dvtm : Gestionnaire de fenêtres en mode console, où les fenêtres sont les consoles.


= Voir aussi =
* http://www.debian-fr.org/les-meilleurs-logiciels-console-t21796.html

[[Category:Logiciels]]
[[Category:Console]]</text>
      <sha1>bzitdm3p6jq9q4uuwadqtjf2zxf36mf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4953</id>
      <parentid>4952</parentid>
      <timestamp>2013-02-02T19:31:28Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>/* Web */</comment>
      <text xml:space="preserve" bytes="3010">= Administration =
* foremost: application pour récupérer des données « post mortem »
* iptraf: Surveiller son réseau

= Outils =
* mc (Midnight Commander): midnight commander - un puissant gestionnaire de fichiers
* [[ranger|ranger : Un gestionnaire de fichier pratique à la vim]]
* htop: Outil interactif de visualisation de processus
* unaccent: Remplacez des lettres accentuées par leur équivalent non accentué
* detox: Remplacez les caractères problématiques dans les noms de fichier
* bwm-ng, iftop: Afficher l'état de la bande passante pour les interfaces réseau
* xclip : Gérer le presse-papier
* sselp : Affiche le presse-papier (paquet suckless-tools)
* [[rsync|rsync : Pour vos sauvegardes]]
* wkhtmltopdf : Outil en console permettant de convertir une page web au format pdf
* urlview : Affiche les urls contenues dans un fichier

= shells =
* zsh: Interpréteur de commandes doté de nombreuses fonctions

= Graphique =
* scrot : utilitaire de capture d'écran en ligne de commande
* imagemagick : manipulation d'images (conversions, transformations, etc.)
* caca-utils : plusieurs outils pour voir des images en console, comme cacaview ou img2txt
* fbi : affiche des images dans les [[Glossaire#Terminal|tty]] via le framebuffer (ne nécessite pas de serveur graphique)
* optipng : optimise les png en réduisant leur taille mais pas leur qualité
* jpegoptim : optimise les jpg en réduisant leur taille mais pas leur qualité

= Mail =
* mutt: Outil de lecture de courriel en mode texte, gérant MIME, GPG, PGP et les fils de discussion
* alpine: Text-based email client, friendly for novices but powerful

= Son =
* ncmpc / ncmpcpp : clients pour MPD (Music Player Daemon) avec une interface ncurses (écrits respectivement en C et en C++)
* alsamixer : gère le volume sonore des différents canaux utilisés par ALSA via une interface ncurses

= Web =
* lynx-cur / links : navigateurs Web en console
* links2 : navigateur Web en console gérant l'affichage des images
* w3m : navigateur Web en console à la vim

= Net =
* finch: text-based multi-protocol instant messaging client
* irssi: Client IRC en mode console
* nmap: utilitaire pour l'exploration de réseau et l'audit de sécurité.
* ncftp: Un client de FTP facile à utiliser et bien présenté
* mcabber : Client jabber en console
* lftp : Client ftp
* cclive, clive, get-glash-videos : Pour télécharger les videos flash
* rtorrent : Client bittorrent

= Lexteur de flux RSS =
* canto
* newsbeuter


= Editeurs =
* emacs: GNU Emacs est un éditeur de texte extensible et auto-documenté
* vim: Vi IMproved - éditeur vi amélioré

= Jeux = 
* gnugo : jeu de go
* crawl : roguelike
* nethack : roguelike

= Divers =
* screen: Multiplexeur d'écran avec une émulation de terminal VT100/ANSI
* dvtm : Gestionnaire de fenêtres en mode console, où les fenêtres sont les consoles.


= Voir aussi =
* http://www.debian-fr.org/les-meilleurs-logiciels-console-t21796.html

[[Category:Logiciels]]
[[Category:Console]]</text>
      <sha1>cd1zwthp962i3wd09p6all9igaxzg82</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4954</id>
      <parentid>4953</parentid>
      <timestamp>2013-02-02T19:37:15Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>/* Net */</comment>
      <text xml:space="preserve" bytes="3258">= Administration =
* foremost: application pour récupérer des données « post mortem »
* iptraf: Surveiller son réseau

= Outils =
* mc (Midnight Commander): midnight commander - un puissant gestionnaire de fichiers
* [[ranger|ranger : Un gestionnaire de fichier pratique à la vim]]
* htop: Outil interactif de visualisation de processus
* unaccent: Remplacez des lettres accentuées par leur équivalent non accentué
* detox: Remplacez les caractères problématiques dans les noms de fichier
* bwm-ng, iftop: Afficher l'état de la bande passante pour les interfaces réseau
* xclip : Gérer le presse-papier
* sselp : Affiche le presse-papier (paquet suckless-tools)
* [[rsync|rsync : Pour vos sauvegardes]]
* wkhtmltopdf : Outil en console permettant de convertir une page web au format pdf
* urlview : Affiche les urls contenues dans un fichier

= shells =
* zsh: Interpréteur de commandes doté de nombreuses fonctions

= Graphique =
* scrot : utilitaire de capture d'écran en ligne de commande
* imagemagick : manipulation d'images (conversions, transformations, etc.)
* caca-utils : plusieurs outils pour voir des images en console, comme cacaview ou img2txt
* fbi : affiche des images dans les [[Glossaire#Terminal|tty]] via le framebuffer (ne nécessite pas de serveur graphique)
* optipng : optimise les png en réduisant leur taille mais pas leur qualité
* jpegoptim : optimise les jpg en réduisant leur taille mais pas leur qualité

= Mail =
* mutt: Outil de lecture de courriel en mode texte, gérant MIME, GPG, PGP et les fils de discussion
* alpine: Text-based email client, friendly for novices but powerful

= Son =
* ncmpc / ncmpcpp : clients pour MPD (Music Player Daemon) avec une interface ncurses (écrits respectivement en C et en C++)
* alsamixer : gère le volume sonore des différents canaux utilisés par ALSA via une interface ncurses

= Web =
* lynx-cur / links : navigateurs Web en console
* links2 : navigateur Web en console gérant l'affichage des images
* w3m : navigateur Web en console à la vim

= Net =
* finch / centerim / centerim-utf8 : clients de messagerie instantanée multi-protocoles
* irssi : client IRC
* nmap : utilitaire pour l'exploration de réseau et l'audit de sécurité.
* ncftp : client de FTP facile à utiliser et bien présenté
* mcabber : client jabber
* lftp : client ftp
* cclive / clive / get-glash-videos : téléchargent les vidéos en Flash
* rtorrent : client BitTorrent avec une interface ncurses
* transmission-daemon / transmission-cli / transmission-remote-cli : client BitTorrent sur un modèle client/serveur (respectivement le serveur, un client en ligne de commande et un client avec une interface ncurses)

= Lexteur de flux RSS =
* canto
* newsbeuter


= Editeurs =
* emacs: GNU Emacs est un éditeur de texte extensible et auto-documenté
* vim: Vi IMproved - éditeur vi amélioré

= Jeux = 
* gnugo : jeu de go
* crawl : roguelike
* nethack : roguelike

= Divers =
* screen: Multiplexeur d'écran avec une émulation de terminal VT100/ANSI
* dvtm : Gestionnaire de fenêtres en mode console, où les fenêtres sont les consoles.


= Voir aussi =
* http://www.debian-fr.org/les-meilleurs-logiciels-console-t21796.html

[[Category:Logiciels]]
[[Category:Console]]</text>
      <sha1>iebrb4j8czq3qzr11vq12gcyv4w9prb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4979</id>
      <parentid>4954</parentid>
      <timestamp>2013-02-18T20:08:32Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="3270">= Administration =
* foremost: application pour récupérer des données « post mortem »
* iptraf: Surveiller son réseau

= Outils =
* mc (Midnight Commander): midnight commander - un puissant gestionnaire de fichiers
* [[ranger|ranger : Un gestionnaire de fichier pratique à la vim]]
* htop: Outil interactif de visualisation de processus
* unaccent: Remplacez des lettres accentuées par leur équivalent non accentué
* detox: Remplacez les caractères problématiques dans les noms de fichier
* bwm-ng, iftop: Afficher l'état de la bande passante pour les interfaces réseau
* xclip : Gérer le presse-papier
* sselp : Affiche le presse-papier (paquet suckless-tools)
* [[rsync|rsync : Pour vos sauvegardes]]
* wkhtmltopdf : Outil en console permettant de convertir une page web au format pdf
* urlview : Affiche les urls contenues dans un fichier

= shells =
* zsh: Interpréteur de commandes doté de nombreuses fonctions

= Graphique =
* scrot : utilitaire de capture d'écran en ligne de commande
* imagemagick : manipulation d'images (conversions, transformations, etc.)
* caca-utils : plusieurs outils pour voir des images en console, comme cacaview ou img2txt
* fbi : affiche des images dans les [[Glossaire#Terminal|tty]] via le framebuffer (ne nécessite pas de serveur graphique)
* optipng : optimise les png en réduisant leur taille mais pas leur qualité
* jpegoptim : optimise les jpg en réduisant leur taille mais pas leur qualité

= Mail =
* mutt: Outil de lecture de courriel en mode texte, gérant MIME, GPG, PGP et les fils de discussion
* alpine: Text-based email client, friendly for novices but powerful

= Son =
* ncmpc / ncmpcpp : clients pour MPD (Music Player Daemon) avec une interface ncurses (écrits respectivement en C et en C++)
* alsamixer : gère le volume sonore des différents canaux utilisés par ALSA via une interface ncurses

= Web =
* lynx-cur / links : navigateurs Web en console
* links2 : navigateur Web en console gérant l'affichage des images
* w3m : navigateur Web en console à la vim

= Net =
* finch / centerim / centerim-utf8 : clients de messagerie instantanée multi-protocoles
* irssi : client IRC
* nmap : utilitaire pour l'exploration de réseau et l'audit de sécurité.
* ncftp : client de FTP facile à utiliser et bien présenté
* mcabber : client jabber
* lftp : client ftp
* cclive / clive / get-glash-videos : téléchargent les vidéos en Flash
* rtorrent : client BitTorrent avec une interface ncurses
* transmission-daemon / transmission-cli / transmission-remote-cli : client BitTorrent sur un modèle client/serveur (respectivement le serveur, un client en ligne de commande et un client avec une interface ncurses)

= Lecteur de flux RSS =
* canto
* newsbeuter
* rss2email


= Editeurs =
* emacs: GNU Emacs est un éditeur de texte extensible et auto-documenté
* vim: Vi IMproved - éditeur vi amélioré

= Jeux = 
* gnugo : jeu de go
* crawl : roguelike
* nethack : roguelike

= Divers =
* screen: Multiplexeur d'écran avec une émulation de terminal VT100/ANSI
* dvtm : Gestionnaire de fenêtres en mode console, où les fenêtres sont les consoles.


= Voir aussi =
* http://www.debian-fr.org/les-meilleurs-logiciels-console-t21796.html

[[Category:Logiciels]]
[[Category:Console]]</text>
      <sha1>j3ciw1q5sjx46o0q67k4nwp17t1vapi</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5251</id>
      <parentid>4979</parentid>
      <timestamp>2013-06-08T13:26:22Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <comment>/* Net */</comment>
      <text xml:space="preserve" bytes="3282">= Administration =
* foremost: application pour récupérer des données « post mortem »
* iptraf: Surveiller son réseau

= Outils =
* mc (Midnight Commander): midnight commander - un puissant gestionnaire de fichiers
* [[ranger|ranger : Un gestionnaire de fichier pratique à la vim]]
* htop: Outil interactif de visualisation de processus
* unaccent: Remplacez des lettres accentuées par leur équivalent non accentué
* detox: Remplacez les caractères problématiques dans les noms de fichier
* bwm-ng, iftop: Afficher l'état de la bande passante pour les interfaces réseau
* xclip : Gérer le presse-papier
* sselp : Affiche le presse-papier (paquet suckless-tools)
* [[rsync|rsync : Pour vos sauvegardes]]
* wkhtmltopdf : Outil en console permettant de convertir une page web au format pdf
* urlview : Affiche les urls contenues dans un fichier

= shells =
* zsh: Interpréteur de commandes doté de nombreuses fonctions

= Graphique =
* scrot : utilitaire de capture d'écran en ligne de commande
* imagemagick : manipulation d'images (conversions, transformations, etc.)
* caca-utils : plusieurs outils pour voir des images en console, comme cacaview ou img2txt
* fbi : affiche des images dans les [[Glossaire#Terminal|tty]] via le framebuffer (ne nécessite pas de serveur graphique)
* optipng : optimise les png en réduisant leur taille mais pas leur qualité
* jpegoptim : optimise les jpg en réduisant leur taille mais pas leur qualité

= Mail =
* mutt: Outil de lecture de courriel en mode texte, gérant MIME, GPG, PGP et les fils de discussion
* alpine: Text-based email client, friendly for novices but powerful

= Son =
* ncmpc / ncmpcpp : clients pour MPD (Music Player Daemon) avec une interface ncurses (écrits respectivement en C et en C++)
* alsamixer : gère le volume sonore des différents canaux utilisés par ALSA via une interface ncurses

= Web =
* lynx-cur / links : navigateurs Web en console
* links2 : navigateur Web en console gérant l'affichage des images
* w3m : navigateur Web en console à la vim

= Net =
* finch / centerim / centerim-utf8 : clients de messagerie instantanée multi-protocoles
* irssi : client IRC
* nmap : utilitaire pour l'exploration de réseau et l'audit de sécurité.
* ncftp : client de FTP facile à utiliser et bien présenté
* [[mcabber | mcabber : client xmpp]]
* lftp : client ftp
* cclive / clive / get-glash-videos : téléchargent les vidéos en Flash
* rtorrent : client BitTorrent avec une interface ncurses
* transmission-daemon / transmission-cli / transmission-remote-cli : client BitTorrent sur un modèle client/serveur (respectivement le serveur, un client en ligne de commande et un client avec une interface ncurses)

= Lecteur de flux RSS =
* canto
* newsbeuter
* rss2email


= Editeurs =
* emacs: GNU Emacs est un éditeur de texte extensible et auto-documenté
* vim: Vi IMproved - éditeur vi amélioré

= Jeux = 
* gnugo : jeu de go
* crawl : roguelike
* nethack : roguelike

= Divers =
* screen: Multiplexeur d'écran avec une émulation de terminal VT100/ANSI
* dvtm : Gestionnaire de fenêtres en mode console, où les fenêtres sont les consoles.


= Voir aussi =
* http://www.debian-fr.org/les-meilleurs-logiciels-console-t21796.html

[[Category:Logiciels]]
[[Category:Console]]</text>
      <sha1>s4mia8d688966euuk0jq0gzamh5xudj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Migration Ubuntu vers Sid</title>
    <ns>0</ns>
    <id>1250</id>
    <revision>
      <id>5125</id>
      <timestamp>2013-05-05T15:35:13Z</timestamp>
      <contributor>
        <username>PengouinPdt</username>
        <id>249</id>
      </contributor>
      <comment>Création de la page &quot;Migration Ubuntu vers Sid&quot;</comment>
      <text xml:space="preserve" bytes="4939">Un petit tutoriel pour expliquer comment migrer de Ubuntu vers (Apto)Sid ''- ou plutôt quelques explications pour dresser le cadre de migration, dans ses grandes lignes.''

La migration s'est faite à partir de Xubuntu ''(12.10 ; au moment de la faire, c'est-à-dire vers mi-décembre 2012)'', vers l'[http://aptosid.com/index.php?module=Content&amp;func=view&amp;pid=2 Aptosid Xfce] ''(Thanatos)'' - ''architecture 64 bits, toutes les deux''. 

'''''Note :''' Mis-à-part deux, trois détails, les principes de cette migration devrait être valable, depuis toute mouture de *buntu, vers toute autre mouture de la Debian Sid.
''

'''IL EST IMPÉRATIF DE SAUVEGARDER TOUS VOS FICHIERS IMPORTANTS, AVANT !!!'''


== Principes d'Installation ==

'''Note : Sachez qu'il existe un [http://manual.aptosid.com/fr/welcome-fr.htm manuel assez complet relatif à Aptosid], en français.'''

Avec le LiveCD dans votre lecteur CD, démarrez votre station puis une fois dans la session graphique, cliquez sur l'Installeur fourni.

Concernant le formatage des différentes partitions faite avec Ubuntu, formatez-les ''('''EXT4''' à ce jour)'' sauf la partition /home ''(si vous avez eu la bonne idée de la créer - dans le cas où vous n'en aviez pas, je vous invite instamment à recréer votre partitionnement en veillant à en créer une !)''

=== L'installateur pose problème ===

Aptosid refuse, avec l'installeur, de créer un utilisateur qui se trouve déjà dans la partition /home. Donc, on en créé un nouveau tout simplement.

Une fois l'installation terminée, redémarrez votre ordinateur, entrez dans votre session 'user_aptosid', utilisez le &quot;Terminal administrateur&quot; ''(dans le menu &quot;Accessoires&quot;)'', puis ajouter un nouvel utilisateur, où 'user_ubuntu' est le nom de votre session à l'époque d'Ubuntu, avec la commande :

  adduser user_ubuntu

La commande ne cherchera pas à créer de répertoire /home, relatif, puisqu'il existe déjà, mais vous demandera de taper puis confirmer un mot-de-passe.

Déconnectez-vous de votre compte 'user_aptosid', pour vous connectez avec votre 'user_ubuntu'.

=== Home chiffré ===

Si comme moi, lors de votre installation ubuntu, vous aviez demandé de chiffrer votre répertoire personnel, il vous faut installer l'outil 'ecryptfs-utils' ... autrement vous ne pourrez ni rentrer dans votre session 'user_ubuntu', ni accédez à tous les fichiers qu'il y a dans votre compte 'user_ubuntu'.

'''Il vaut mieux le faire avant de lancer l'installeur Aptosid, dans le &quot;Terminal administrateur&quot; que propose le LiveCD.'''

  apt-get install ecryptfs-utils

Une fois, Aptosid installée, dans votre session 'user_aptosid', il vous faudra vous servir du &quot;Terminal Administrateur&quot; pour lancer l'équivalent des commandes suivantes - autrement, vous ne pourriez pas rentrer dans votre session 'user_ubuntu' :

  chown -R user_ubuntu:user_ubuntu /home/user_ubuntu
  chown -R user_ubuntu:user_ubuntu /home/.ecryptfs/user_ubuntu

Ceci étant fait, déconnectez-vous de votre session 'user_aptosid', pour vous connectez à votre 'user_ubuntu'.

== Principes de configuration ==

=== Supprimez l'utilisateur aptosid ===

Une fois que vous avez vérifié que vous pouvez vous connecter à votre session 'user_ubuntu', pensez à supprimer le compte 'user_aptosid' qui ne sert plus à rien.

  deluser user_aptosid --remove-home

=== Gestion administrateur ===

À la différence d'Ubuntu, normalement vous ne gérez pas les commandes d'administration à coup de 'sudo ...' mais, avec le compte root créé lors de l'installation. Le plus facile étant l'usage du &quot;Terminal Administrateur&quot; ... sinon, avec n'importe quel mode console, ainsi :

  su -

Dans les deux cas, de toute façon, il vous sera demandé le mot-de-passe relatif au compte root. Une fois, vos modifications systèmes effectuées, pensez très fortement à fermer votre terminal console.

'''''Note :''' Bien sûr, vous pouvez très bien configuré votre 'user_ubuntu' en installant l'outil sudo, et en donnant à celui-ci les droits d'usage - sachez que ce n'est pas l'usage recommandé !''

=== Gestion de l'outil Apt ===

À la différence d'Ubuntu, vous n'avez pas la gestion des dépôts PPA, mais l'outil Apt se comporte exactement pareil, et la surcouche utilisateur graphique nommée 'Synaptic' en fait de même ! 

À la différence d'Ubuntu, les sources lists se gèrent principalement par fichier relatif aux dépôts à gérer. Tout se passe dans le répertoire /etc/apt/sources.list.d/ - un fichier.list par dépôt - mais bien sûr, vous pouvez gérer vos sources à partir du fichier central /etc/apt/sources.list. Lisez-le [http://manual.aptosid.com/fr/sys-admin-apt-fr.htm#apt-cook manuel fourni] ...

À la différence d'Ubuntu, il est important de faire les mises-à-jours système, selon un protocol bien précis. Pour faire au plus court, lisez-le [http://manual.aptosid.com/fr/sys-admin-apt-fr.htm#du-st manuel fourni] ...</text>
      <sha1>kxt5q9r27l7o1apkczoy26d0izi8y2v</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5127</id>
      <parentid>5125</parentid>
      <timestamp>2013-05-05T17:10:42Z</timestamp>
      <contributor>
        <username>PengouinPdt</username>
        <id>249</id>
      </contributor>
      <comment>/* L'installateur pose problème */</comment>
      <text xml:space="preserve" bytes="4869">Un petit tutoriel pour expliquer comment migrer de Ubuntu vers (Apto)Sid ''- ou plutôt quelques explications pour dresser le cadre de migration, dans ses grandes lignes.''

La migration s'est faite à partir de Xubuntu ''(12.10 ; au moment de la faire, c'est-à-dire vers mi-décembre 2012)'', vers l'[http://aptosid.com/index.php?module=Content&amp;func=view&amp;pid=2 Aptosid Xfce] ''(Thanatos)'' - ''architecture 64 bits, toutes les deux''. 

'''''Note :''' Mis-à-part deux, trois détails, les principes de cette migration devrait être valable, depuis toute mouture de *buntu, vers toute autre mouture de la Debian Sid.
''

'''IL EST IMPÉRATIF DE SAUVEGARDER TOUS VOS FICHIERS IMPORTANTS, AVANT !!!'''


== Principes d'Installation ==

'''Note : Sachez qu'il existe un [http://manual.aptosid.com/fr/welcome-fr.htm manuel assez complet relatif à Aptosid], en français.'''

Avec le LiveCD dans votre lecteur CD, démarrez votre station puis une fois dans la session graphique, cliquez sur l'Installeur fourni.

Concernant le formatage des différentes partitions faite avec Ubuntu, formatez-les ''('''EXT4''' à ce jour)'' sauf la partition /home ''(si vous avez eu la bonne idée de la créer - dans le cas où vous n'en aviez pas, je vous invite instamment à recréer votre partitionnement en veillant à en créer une !)''

=== L'installateur pose problème ===

Aptosid refuse, avec l'installeur, de créer un utilisateur qui se trouve déjà dans la partition /home. Donc, on en créé un nouveau tout simplement.

Une fois l'installation terminée, redémarrez votre ordinateur, choisissez le mode rescue, pour supprimer l'utilisateur 'user_aptosid' et créer l'utilisateur relatif à votre session Ubuntu :

  userdel -r user_aptosid
  adduser user_ubuntu

La commande ne cherchera pas à créer de répertoire /home, relatif, puisqu'il existe déjà, mais vous demandera de taper puis confirmer un mot-de-passe.

'''''Note :''' l'avantage est de créer l'utilisateur 'user_ubuntu' et de récupèrer l'UID correspondant.''

=== Home chiffré ===

Si comme moi, lors de votre installation ubuntu, vous aviez demandé de chiffrer votre répertoire personnel, il vous faut installer l'outil 'ecryptfs-utils' ... autrement vous ne pourrez ni rentrer dans votre session 'user_ubuntu', ni accédez à tous les fichiers qu'il y a dans votre compte 'user_ubuntu'.

'''Il vaut mieux le faire avant de lancer l'installeur Aptosid, dans le &quot;Terminal administrateur&quot; que propose le LiveCD.'''

  apt-get install ecryptfs-utils

Une fois, Aptosid installée, dans votre session 'user_aptosid', il vous faudra vous servir du &quot;Terminal Administrateur&quot; pour lancer l'équivalent des commandes suivantes - autrement, vous ne pourriez pas rentrer dans votre session 'user_ubuntu' :

  chown -R user_ubuntu:user_ubuntu /home/user_ubuntu
  chown -R user_ubuntu:user_ubuntu /home/.ecryptfs/user_ubuntu

Ceci étant fait, déconnectez-vous de votre session 'user_aptosid', pour vous connectez à votre 'user_ubuntu'.

== Principes de configuration ==

=== Supprimez l'utilisateur aptosid ===

Une fois que vous avez vérifié que vous pouvez vous connecter à votre session 'user_ubuntu', pensez à supprimer le compte 'user_aptosid' qui ne sert plus à rien.

  deluser user_aptosid --remove-home

=== Gestion administrateur ===

À la différence d'Ubuntu, normalement vous ne gérez pas les commandes d'administration à coup de 'sudo ...' mais, avec le compte root créé lors de l'installation. Le plus facile étant l'usage du &quot;Terminal Administrateur&quot; ... sinon, avec n'importe quel mode console, ainsi :

  su -

Dans les deux cas, de toute façon, il vous sera demandé le mot-de-passe relatif au compte root. Une fois, vos modifications systèmes effectuées, pensez très fortement à fermer votre terminal console.

'''''Note :''' Bien sûr, vous pouvez très bien configuré votre 'user_ubuntu' en installant l'outil sudo, et en donnant à celui-ci les droits d'usage - sachez que ce n'est pas l'usage recommandé !''

=== Gestion de l'outil Apt ===

À la différence d'Ubuntu, vous n'avez pas la gestion des dépôts PPA, mais l'outil Apt se comporte exactement pareil, et la surcouche utilisateur graphique nommée 'Synaptic' en fait de même ! 

À la différence d'Ubuntu, les sources lists se gèrent principalement par fichier relatif aux dépôts à gérer. Tout se passe dans le répertoire /etc/apt/sources.list.d/ - un fichier.list par dépôt - mais bien sûr, vous pouvez gérer vos sources à partir du fichier central /etc/apt/sources.list. Lisez-le [http://manual.aptosid.com/fr/sys-admin-apt-fr.htm#apt-cook manuel fourni] ...

À la différence d'Ubuntu, il est important de faire les mises-à-jours système, selon un protocol bien précis. Pour faire au plus court, lisez-le [http://manual.aptosid.com/fr/sys-admin-apt-fr.htm#du-st manuel fourni] ...</text>
      <sha1>8aloov1i83301m2pkdtcyt6dk73g6zs</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5128</id>
      <parentid>5127</parentid>
      <timestamp>2013-05-05T17:15:27Z</timestamp>
      <contributor>
        <username>PengouinPdt</username>
        <id>249</id>
      </contributor>
      <comment>/* Home chiffré */</comment>
      <text xml:space="preserve" bytes="4788">Un petit tutoriel pour expliquer comment migrer de Ubuntu vers (Apto)Sid ''- ou plutôt quelques explications pour dresser le cadre de migration, dans ses grandes lignes.''

La migration s'est faite à partir de Xubuntu ''(12.10 ; au moment de la faire, c'est-à-dire vers mi-décembre 2012)'', vers l'[http://aptosid.com/index.php?module=Content&amp;func=view&amp;pid=2 Aptosid Xfce] ''(Thanatos)'' - ''architecture 64 bits, toutes les deux''. 

'''''Note :''' Mis-à-part deux, trois détails, les principes de cette migration devrait être valable, depuis toute mouture de *buntu, vers toute autre mouture de la Debian Sid.
''

'''IL EST IMPÉRATIF DE SAUVEGARDER TOUS VOS FICHIERS IMPORTANTS, AVANT !!!'''


== Principes d'Installation ==

'''Note : Sachez qu'il existe un [http://manual.aptosid.com/fr/welcome-fr.htm manuel assez complet relatif à Aptosid], en français.'''

Avec le LiveCD dans votre lecteur CD, démarrez votre station puis une fois dans la session graphique, cliquez sur l'Installeur fourni.

Concernant le formatage des différentes partitions faite avec Ubuntu, formatez-les ''('''EXT4''' à ce jour)'' sauf la partition /home ''(si vous avez eu la bonne idée de la créer - dans le cas où vous n'en aviez pas, je vous invite instamment à recréer votre partitionnement en veillant à en créer une !)''

=== L'installateur pose problème ===

Aptosid refuse, avec l'installeur, de créer un utilisateur qui se trouve déjà dans la partition /home. Donc, on en créé un nouveau tout simplement.

Une fois l'installation terminée, redémarrez votre ordinateur, choisissez le mode rescue, pour supprimer l'utilisateur 'user_aptosid' et créer l'utilisateur relatif à votre session Ubuntu :

  userdel -r user_aptosid
  adduser user_ubuntu

La commande ne cherchera pas à créer de répertoire /home, relatif, puisqu'il existe déjà, mais vous demandera de taper puis confirmer un mot-de-passe.

'''''Note :''' l'avantage est de créer l'utilisateur 'user_ubuntu' et de récupèrer l'UID correspondant.''

=== Home chiffré ===

Si comme moi, lors de votre installation ubuntu, vous aviez demandé de chiffrer votre répertoire personnel, il vous faut installer l'outil 'ecryptfs-utils' ... autrement vous ne pourrez ni rentrer dans votre session 'user_ubuntu', ni accédez à tous les fichiers qu'il y a dans votre compte 'user_ubuntu'.

'''Il vaut mieux le faire avant de lancer l'installeur Aptosid, dans le &quot;Terminal administrateur&quot; que propose le LiveCD.'''

  apt-get install ecryptfs-utils

=== Problème de connexion à votre session ===

Une fois Aptosid installée, si vous n'arrivez pas du tout à vous connecter à votre session 'user_ubuntu', en tant que root, n'hésitez pas à attribuer à nouveau les droits corrects relatifs  :

  chown -R user_ubuntu:user_ubuntu /home/user_ubuntu

et si votre home est chiffré :

  chown -R user_ubuntu:user_ubuntu /home/.ecryptfs/user_ubuntu

== Principes de configuration ==

=== Supprimez l'utilisateur aptosid ===

Une fois que vous avez vérifié que vous pouvez vous connecter à votre session 'user_ubuntu', pensez à supprimer le compte 'user_aptosid' qui ne sert plus à rien.

  deluser user_aptosid --remove-home

=== Gestion administrateur ===

À la différence d'Ubuntu, normalement vous ne gérez pas les commandes d'administration à coup de 'sudo ...' mais, avec le compte root créé lors de l'installation. Le plus facile étant l'usage du &quot;Terminal Administrateur&quot; ... sinon, avec n'importe quel mode console, ainsi :

  su -

Dans les deux cas, de toute façon, il vous sera demandé le mot-de-passe relatif au compte root. Une fois, vos modifications systèmes effectuées, pensez très fortement à fermer votre terminal console.

'''''Note :''' Bien sûr, vous pouvez très bien configuré votre 'user_ubuntu' en installant l'outil sudo, et en donnant à celui-ci les droits d'usage - sachez que ce n'est pas l'usage recommandé !''

=== Gestion de l'outil Apt ===

À la différence d'Ubuntu, vous n'avez pas la gestion des dépôts PPA, mais l'outil Apt se comporte exactement pareil, et la surcouche utilisateur graphique nommée 'Synaptic' en fait de même ! 

À la différence d'Ubuntu, les sources lists se gèrent principalement par fichier relatif aux dépôts à gérer. Tout se passe dans le répertoire /etc/apt/sources.list.d/ - un fichier.list par dépôt - mais bien sûr, vous pouvez gérer vos sources à partir du fichier central /etc/apt/sources.list. Lisez-le [http://manual.aptosid.com/fr/sys-admin-apt-fr.htm#apt-cook manuel fourni] ...

À la différence d'Ubuntu, il est important de faire les mises-à-jours système, selon un protocol bien précis. Pour faire au plus court, lisez-le [http://manual.aptosid.com/fr/sys-admin-apt-fr.htm#du-st manuel fourni] ...</text>
      <sha1>4wbrp73cmdvzzngu2ilblkmoyy4wzjk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5129</id>
      <parentid>5128</parentid>
      <timestamp>2013-05-05T17:16:25Z</timestamp>
      <contributor>
        <username>PengouinPdt</username>
        <id>249</id>
      </contributor>
      <comment>/* Home chiffré */</comment>
      <text xml:space="preserve" bytes="4777">Un petit tutoriel pour expliquer comment migrer de Ubuntu vers (Apto)Sid ''- ou plutôt quelques explications pour dresser le cadre de migration, dans ses grandes lignes.''

La migration s'est faite à partir de Xubuntu ''(12.10 ; au moment de la faire, c'est-à-dire vers mi-décembre 2012)'', vers l'[http://aptosid.com/index.php?module=Content&amp;func=view&amp;pid=2 Aptosid Xfce] ''(Thanatos)'' - ''architecture 64 bits, toutes les deux''. 

'''''Note :''' Mis-à-part deux, trois détails, les principes de cette migration devrait être valable, depuis toute mouture de *buntu, vers toute autre mouture de la Debian Sid.
''

'''IL EST IMPÉRATIF DE SAUVEGARDER TOUS VOS FICHIERS IMPORTANTS, AVANT !!!'''


== Principes d'Installation ==

'''Note : Sachez qu'il existe un [http://manual.aptosid.com/fr/welcome-fr.htm manuel assez complet relatif à Aptosid], en français.'''

Avec le LiveCD dans votre lecteur CD, démarrez votre station puis une fois dans la session graphique, cliquez sur l'Installeur fourni.

Concernant le formatage des différentes partitions faite avec Ubuntu, formatez-les ''('''EXT4''' à ce jour)'' sauf la partition /home ''(si vous avez eu la bonne idée de la créer - dans le cas où vous n'en aviez pas, je vous invite instamment à recréer votre partitionnement en veillant à en créer une !)''

=== L'installateur pose problème ===

Aptosid refuse, avec l'installeur, de créer un utilisateur qui se trouve déjà dans la partition /home. Donc, on en créé un nouveau tout simplement.

Une fois l'installation terminée, redémarrez votre ordinateur, choisissez le mode rescue, pour supprimer l'utilisateur 'user_aptosid' et créer l'utilisateur relatif à votre session Ubuntu :

  userdel -r user_aptosid
  adduser user_ubuntu

La commande ne cherchera pas à créer de répertoire /home, relatif, puisqu'il existe déjà, mais vous demandera de taper puis confirmer un mot-de-passe.

'''''Note :''' l'avantage est de créer l'utilisateur 'user_ubuntu' et de récupèrer l'UID correspondant.''

=== Home chiffré ===

Si lors de votre installation ubuntu, vous aviez demandé de chiffrer votre répertoire personnel, il vous faut installer l'outil 'ecryptfs-utils' ... autrement vous ne pourrez ni rentrer dans votre session 'user_ubuntu', ni accédez à tous les fichiers qu'il y a dans votre compte 'user_ubuntu'.

'''Il vaut mieux le faire avant de lancer l'installeur Aptosid, dans le &quot;Terminal administrateur&quot; que propose le LiveCD.'''

  apt-get install ecryptfs-utils

=== Problème de connexion à votre session ===

Une fois Aptosid installée, si vous n'arrivez pas du tout à vous connecter à votre session 'user_ubuntu', en tant que root, n'hésitez pas à attribuer à nouveau les droits corrects relatifs  :

  chown -R user_ubuntu:user_ubuntu /home/user_ubuntu

et si votre home est chiffré :

  chown -R user_ubuntu:user_ubuntu /home/.ecryptfs/user_ubuntu

== Principes de configuration ==

=== Supprimez l'utilisateur aptosid ===

Une fois que vous avez vérifié que vous pouvez vous connecter à votre session 'user_ubuntu', pensez à supprimer le compte 'user_aptosid' qui ne sert plus à rien.

  deluser user_aptosid --remove-home

=== Gestion administrateur ===

À la différence d'Ubuntu, normalement vous ne gérez pas les commandes d'administration à coup de 'sudo ...' mais, avec le compte root créé lors de l'installation. Le plus facile étant l'usage du &quot;Terminal Administrateur&quot; ... sinon, avec n'importe quel mode console, ainsi :

  su -

Dans les deux cas, de toute façon, il vous sera demandé le mot-de-passe relatif au compte root. Une fois, vos modifications systèmes effectuées, pensez très fortement à fermer votre terminal console.

'''''Note :''' Bien sûr, vous pouvez très bien configuré votre 'user_ubuntu' en installant l'outil sudo, et en donnant à celui-ci les droits d'usage - sachez que ce n'est pas l'usage recommandé !''

=== Gestion de l'outil Apt ===

À la différence d'Ubuntu, vous n'avez pas la gestion des dépôts PPA, mais l'outil Apt se comporte exactement pareil, et la surcouche utilisateur graphique nommée 'Synaptic' en fait de même ! 

À la différence d'Ubuntu, les sources lists se gèrent principalement par fichier relatif aux dépôts à gérer. Tout se passe dans le répertoire /etc/apt/sources.list.d/ - un fichier.list par dépôt - mais bien sûr, vous pouvez gérer vos sources à partir du fichier central /etc/apt/sources.list. Lisez-le [http://manual.aptosid.com/fr/sys-admin-apt-fr.htm#apt-cook manuel fourni] ...

À la différence d'Ubuntu, il est important de faire les mises-à-jours système, selon un protocol bien précis. Pour faire au plus court, lisez-le [http://manual.aptosid.com/fr/sys-admin-apt-fr.htm#du-st manuel fourni] ...</text>
      <sha1>9c44bbzi7x714chq5iymfirqt7jt8j6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5130</id>
      <parentid>5129</parentid>
      <timestamp>2013-05-05T17:17:33Z</timestamp>
      <contributor>
        <username>PengouinPdt</username>
        <id>249</id>
      </contributor>
      <text xml:space="preserve" bytes="4572">Un petit tutoriel pour expliquer comment migrer de Ubuntu vers (Apto)Sid ''- ou plutôt quelques explications pour dresser le cadre de migration, dans ses grandes lignes.''

La migration s'est faite à partir de Xubuntu ''(12.10 ; au moment de la faire, c'est-à-dire vers mi-décembre 2012)'', vers l'[http://aptosid.com/index.php?module=Content&amp;func=view&amp;pid=2 Aptosid Xfce] ''(Thanatos)'' - ''architecture 64 bits, toutes les deux''. 

'''''Note :''' Mis-à-part deux, trois détails, les principes de cette migration devrait être valable, depuis toute mouture de *buntu, vers toute autre mouture de la Debian Sid.
''

'''IL EST IMPÉRATIF DE SAUVEGARDER TOUS VOS FICHIERS IMPORTANTS, AVANT !!!'''


== Principes d'Installation ==

'''Note : Sachez qu'il existe un [http://manual.aptosid.com/fr/welcome-fr.htm manuel assez complet relatif à Aptosid], en français.'''

Avec le LiveCD dans votre lecteur CD, démarrez votre station puis une fois dans la session graphique, cliquez sur l'Installeur fourni.

Concernant le formatage des différentes partitions faite avec Ubuntu, formatez-les ''('''EXT4''' à ce jour)'' sauf la partition /home ''(si vous avez eu la bonne idée de la créer - dans le cas où vous n'en aviez pas, je vous invite instamment à recréer votre partitionnement en veillant à en créer une !)''

=== L'installateur pose problème ===

Aptosid refuse, avec l'installeur, de créer un utilisateur qui se trouve déjà dans la partition /home. Donc, on en créé un nouveau tout simplement.

Une fois l'installation terminée, redémarrez votre ordinateur, choisissez le mode rescue, pour supprimer l'utilisateur 'user_aptosid' et créer l'utilisateur relatif à votre session Ubuntu :

  userdel -r user_aptosid # ou 'deluser user_aptosid --remove-home'
  adduser user_ubuntu

La commande ne cherchera pas à créer de répertoire /home, relatif, puisqu'il existe déjà, mais vous demandera de taper puis confirmer un mot-de-passe.

'''''Note :''' l'avantage est de créer l'utilisateur 'user_ubuntu' et de récupèrer l'UID correspondant.''

=== Home chiffré ===

Si lors de votre installation ubuntu, vous aviez demandé de chiffrer votre répertoire personnel, il vous faut installer l'outil 'ecryptfs-utils' ... autrement vous ne pourrez ni rentrer dans votre session 'user_ubuntu', ni accédez à tous les fichiers qu'il y a dans votre compte 'user_ubuntu'.

'''Il vaut mieux le faire avant de lancer l'installeur Aptosid, dans le &quot;Terminal administrateur&quot; que propose le LiveCD.'''

  apt-get install ecryptfs-utils

=== Problème de connexion à votre session ===

Une fois Aptosid installée, si vous n'arrivez pas du tout à vous connecter à votre session 'user_ubuntu', en tant que root, n'hésitez pas à attribuer à nouveau les droits corrects relatifs  :

  chown -R user_ubuntu:user_ubuntu /home/user_ubuntu

et si votre home est chiffré :

  chown -R user_ubuntu:user_ubuntu /home/.ecryptfs/user_ubuntu

== Principes de configuration ==

=== Gestion administrateur ===

À la différence d'Ubuntu, normalement vous ne gérez pas les commandes d'administration à coup de 'sudo ...' mais, avec le compte root créé lors de l'installation. Le plus facile étant l'usage du &quot;Terminal Administrateur&quot; ... sinon, avec n'importe quel mode console, ainsi :

  su -

Dans les deux cas, de toute façon, il vous sera demandé le mot-de-passe relatif au compte root. Une fois, vos modifications systèmes effectuées, pensez très fortement à fermer votre terminal console.

'''''Note :''' Bien sûr, vous pouvez très bien configuré votre 'user_ubuntu' en installant l'outil sudo, et en donnant à celui-ci les droits d'usage - sachez que ce n'est pas l'usage recommandé !''

=== Gestion de l'outil Apt ===

À la différence d'Ubuntu, vous n'avez pas la gestion des dépôts PPA, mais l'outil Apt se comporte exactement pareil, et la surcouche utilisateur graphique nommée 'Synaptic' en fait de même ! 

À la différence d'Ubuntu, les sources lists se gèrent principalement par fichier relatif aux dépôts à gérer. Tout se passe dans le répertoire /etc/apt/sources.list.d/ - un fichier.list par dépôt - mais bien sûr, vous pouvez gérer vos sources à partir du fichier central /etc/apt/sources.list. Lisez-le [http://manual.aptosid.com/fr/sys-admin-apt-fr.htm#apt-cook manuel fourni] ...

À la différence d'Ubuntu, il est important de faire les mises-à-jours système, selon un protocol bien précis. Pour faire au plus court, lisez-le [http://manual.aptosid.com/fr/sys-admin-apt-fr.htm#du-st manuel fourni] ...</text>
      <sha1>ihmnrhrt2pxkt4kmh97acnumfehaar4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5131</id>
      <parentid>5130</parentid>
      <timestamp>2013-05-05T17:25:14Z</timestamp>
      <contributor>
        <username>PengouinPdt</username>
        <id>249</id>
      </contributor>
      <text xml:space="preserve" bytes="4881">Un petit tutoriel pour expliquer comment migrer de Ubuntu vers (Apto)Sid ''- ou plutôt quelques explications pour dresser le cadre de migration, dans ses grandes lignes.''

La migration s'est faite à partir de Xubuntu ''(12.10 ; au moment de la faire, c'est-à-dire vers mi-décembre 2012)'', vers l'[http://aptosid.com/index.php?module=Content&amp;func=view&amp;pid=2 Aptosid Xfce] ''(Thanatos)'' - ''architecture 64 bits, toutes les deux''. 

'''''Note :''' Mis-à-part deux, trois détails, les principes de cette migration devrait être valable, depuis toute mouture de *buntu, vers toute autre mouture de la Debian Sid.
''

'''IL EST IMPÉRATIF DE SAUVEGARDER TOUS VOS FICHIERS IMPORTANTS, AVANT !!!'''


== Principes d'Installation ==

'''Note : Sachez qu'il existe un [http://manual.aptosid.com/fr/welcome-fr.htm manuel assez complet relatif à Aptosid], en français.'''

Avec le LiveCD dans votre lecteur CD, démarrez votre station puis une fois dans la session graphique, cliquez sur l'Installeur fourni.

Concernant le formatage des différentes partitions faite avec Ubuntu, formatez-les ''('''EXT4''' à ce jour)'' sauf la partition /home ''(si vous avez eu la bonne idée de la créer - dans le cas où vous n'en aviez pas, je vous invite instamment à recréer votre partitionnement en veillant à en créer une !)''

=== L'installateur pose problème ===

Aptosid refuse, avec l'installeur, de créer un utilisateur qui se trouve déjà dans la partition /home. Donc, on en créé un nouveau tout simplement.

==== Gestion de l'utilisateur user_ubuntu ====

Une fois l'installation terminée, redémarrez votre ordinateur, choisissez le mode rescue, pour supprimer l'utilisateur 'user_aptosid' et créer l'utilisateur relatif à votre session Ubuntu :

  userdel -r user_aptosid # ou 'deluser user_aptosid --remove-home'
  adduser user_ubuntu


'''''Note :''' La commande ne cherchera pas à créer de répertoire /home, relatif, puisqu'il existe déjà, mais vous demandera de taper puis confirmer un mot-de-passe. Elle a aussi l'avantage est de créer l'utilisateur 'user_ubuntu' et de récupérer l'UID correspondant.''

=== Home chiffré ===

Si lors de votre installation ubuntu, vous aviez demandé de chiffrer votre répertoire personnel, il vous faut installer l'outil 'ecryptfs-utils' ... autrement vous ne pourrez ni rentrer dans votre session 'user_ubuntu', ni accédez à tous les fichiers qu'il y a dans votre compte 'user_ubuntu'.

'''Il vaut mieux le faire avant de lancer l'installeur Aptosid, dans le &quot;Terminal administrateur&quot; que propose le LiveCD.'''

  apt-get install ecryptfs-utils

=== Problème de connexion à votre session ===

Une fois Aptosid installée, si vous n'arrivez pas du tout à vous connecter à votre session 'user_ubuntu', en tant que root, n'hésitez pas à attribuer à nouveau les droits corrects relatifs  :

  chown -R user_ubuntu:user_ubuntu /home/user_ubuntu

et si votre home est chiffré :

  chown -R user_ubuntu:user_ubuntu /home/.ecryptfs/user_ubuntu

'''''Note :''' Ce problème de connexion ne devrait pas se présenter à moins que vous n'ayez pas gérer correctement la [[#Gestion_de_l.27utilisateur_user_ubuntu|création de l'utilisateur 'user_ubuntu']] ...'' 

== Principes de configuration ==

=== Gestion administrateur ===

À la différence d'Ubuntu, normalement vous ne gérez pas les commandes d'administration à coup de 'sudo ...' mais, avec le compte root créé lors de l'installation. Le plus facile étant l'usage du &quot;Terminal Administrateur&quot; ''(dans le menu &quot;Accessoires&quot;)'' ... sinon, avec n'importe quel mode console, ainsi :

  su -

Dans les deux cas, de toute façon, il vous sera demandé le mot-de-passe relatif au compte root. Une fois, vos modifications systèmes effectuées, pensez très fortement à fermer votre terminal console.

'''''Note :''' Bien sûr, vous pouvez très bien configuré votre 'user_ubuntu' en installant l'outil sudo, et en donnant à celui-ci les droits d'usage - sachez que ce n'est pas l'usage recommandé !''

=== Gestion de l'outil Apt ===

À la différence d'Ubuntu, vous n'avez pas la gestion des dépôts PPA, mais l'outil Apt se comporte exactement pareil, et la surcouche utilisateur graphique nommée 'Synaptic' en fait de même ! 

À la différence d'Ubuntu, les sources lists se gèrent principalement par fichier relatif aux dépôts à gérer. Tout se passe dans le répertoire /etc/apt/sources.list.d/ - un fichier.list par dépôt - mais bien sûr, vous pouvez gérer vos sources à partir du fichier central /etc/apt/sources.list. Lisez-le [http://manual.aptosid.com/fr/sys-admin-apt-fr.htm#apt-cook manuel fourni] ...

À la différence d'Ubuntu, il est important de faire les mises-à-jours système, selon un protocol bien précis. Pour faire au plus court, lisez-le [http://manual.aptosid.com/fr/sys-admin-apt-fr.htm#du-st manuel fourni] ...</text>
      <sha1>nfkstshfu4whkfodnyaadndwtealjso</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Mini Serveur</title>
    <ns>0</ns>
    <id>1327</id>
    <revision>
      <id>5587</id>
      <timestamp>2014-04-09T08:12:19Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>Page créée avec « L'objectif de cette page est de compulser les informations du fil [https://www.debian-fr.org/mini-serveurs-t47492.html Mini serveurs] pour les rendre plus faciles à lire ... »</comment>
      <text xml:space="preserve" bytes="1493">L'objectif de cette page est de compulser les informations du fil [https://www.debian-fr.org/mini-serveurs-t47492.html Mini serveurs] pour les rendre plus faciles à lire :

{| class=&quot;wikitable&quot;
! Nom
! Marque
! Architecture
! CPU
! Mémoire
! Ports
! Prix
! Avantages
! Inconvénient
|-----
| FIT PC1 || FitPC || x86 || Geode 500MHz || 256Mio (soudée) || 2 eth, pas de WIFI, 2USB || - € || Obsolète. RAM Soudée || Solide, Marche sans interruption depuis 2008. 2 interfaces Ethernet ||
|-----
| FIT Slim || FitPC || x86 || Geode 500MHz || 512Mio (soudée) || eth, WIFI, 2USB || - € || Obsolète || Aucun ||
|-----
| FIT PC2 || FitPC || x86 || Intel ATOM 1,6Ghz || 1Gio (soudée) || 2 eth, WIFI, 2USB || - € || Ram soudée, wifi broadcom un peu pénible. Un peu cher || interfaceS réseau : idéal pour routeur. disque facilement extractible ||
|-----
| Raspberry Pi modèle B || Raspberry Pi || ARM || ARM11 700MHz || 512Mio (soudée) || eth, pas WIFI, 2USB, HDMI || - € || Si besoin de stockage volumineux (&gt; à la capacité d'une carte SD), nécessite un disque dur externe alimenté sur secteur. || très faible consommation et encombrement ||
|-----
| RADXA || RADXA || ARM || ARM Cortex-A9 quad core @ 1.6Ghz || 2Gio DDR3 (soudée) || eth, WIFI, 2USB, HDMI || - € || - || - ||
|-----
| D945GSEJT || Intel || x86 || Atom 1,6GHz || 2Gio SODDR2 (soudée) || eth, WIFI, 3USB, DVI, VGA, 2 SATA || - € || taille, fanless, alimentation 12V || 32bits, pas d'Intel Vt-x ||
|-----
|}</text>
      <sha1>kp17anan5nqyy6qqrb62s9qygkzuja7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5588</id>
      <parentid>5587</parentid>
      <timestamp>2014-04-09T08:13:22Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <text xml:space="preserve" bytes="1475">L'objectif de cette page est de compulser les informations du fil [https://www.debian-fr.org/mini-serveurs-t47492.html Mini serveurs] pour les rendre plus faciles à lire :

{| class=&quot;wikitable&quot;
! Nom
! Marque
! Architecture
! CPU
! Mémoire
! Ports
! Prix
! Avantages
! Inconvénient
|-----
| FIT PC1 || FitPC || x86 || Geode 500MHz || 256Mio (soudée) || 2 eth, pas de WIFI, 2USB || - € || Obsolète. RAM Soudée || Solide, Marche sans interruption depuis 2008. 2 interfaces Ethernet
|-----
| FIT Slim || FitPC || x86 || Geode 500MHz || 512Mio (soudée) || eth, WIFI, 2USB || - € || Obsolète || Aucun
|-----
| FIT PC2 || FitPC || x86 || Intel ATOM 1,6Ghz || 1Gio (soudée) || 2 eth, WIFI, 2USB || - € || Ram soudée, wifi broadcom un peu pénible. Un peu cher || interfaceS réseau : idéal pour routeur. disque facilement extractible
|-----
| Raspberry Pi modèle B || Raspberry Pi || ARM || ARM11 700MHz || 512Mio (soudée) || eth, pas WIFI, 2USB, HDMI || - € || Si besoin de stockage volumineux (&gt; à la capacité d'une carte SD), nécessite un disque dur externe alimenté sur secteur. || très faible consommation et encombrement
|-----
| RADXA || RADXA || ARM || ARM Cortex-A9 quad core @ 1.6Ghz || 2Gio DDR3 (soudée) || eth, WIFI, 2USB, HDMI || - € || - || -
|-----
| D945GSEJT || Intel || x86 || Atom 1,6GHz || 2Gio SODDR2 (soudée) || eth, WIFI, 3USB, DVI, VGA, 2 SATA || - € || taille, fanless, alimentation 12V || 32bits, pas d'Intel Vt-x
|-----
|}</text>
      <sha1>jfyjabtbmfak2nsrcprkrldx2g35og1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5589</id>
      <parentid>5588</parentid>
      <timestamp>2014-04-09T10:04:03Z</timestamp>
      <contributor>
        <username>Fran.b</username>
        <id>13</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1486">L'objectif de cette page est de compulser les informations du fil [https://www.debian-fr.org/mini-serveurs-t47492.html Mini serveurs] pour les rendre plus faciles à lire :

{| class=&quot;wikitable&quot;
! Nom
! Marque
! Architecture
! CPU
! Mémoire
! Ports
! Prix
! Avantages
! Inconvénient
|-----
| FIT PC1 || FitPC || x86 || Geode 500MHz || 256Mio (soudée) || 2 eth, pas de WIFI, 2USB ||~ 300 € || Obsolète. RAM Soudée || Solide, Marche sans interruption depuis 2008. 2 interfaces Ethernet
|-----
| FIT Slim || FitPC || x86 || Geode 500MHz || 512Mio (soudée) || eth, WIFI, 2USB || ~ 300 € || Obsolète || Aucun
|-----
| FIT PC2 || FitPC || x86 || Intel ATOM 1,6Ghz || 1Gio (soudée) || 2 eth, WIFI, 2USB || ~ 350 € || Ram soudée, wifi broadcom un peu pénible. Un peu cher || interfaceS réseau : idéal pour routeur. disque facilement extractible
|-----
| Raspberry Pi modèle B || Raspberry Pi || ARM || ARM11 700MHz || 512Mio (soudée) || eth, pas WIFI, 2USB, HDMI || - € || Si besoin de stockage volumineux (&gt; à la capacité d'une carte SD), nécessite un disque dur externe alimenté sur secteur. || très faible consommation et encombrement
|-----
| RADXA || RADXA || ARM || ARM Cortex-A9 quad core @ 1.6Ghz || 2Gio DDR3 (soudée) || eth, WIFI, 2USB, HDMI || - € || - || -
|-----
| D945GSEJT || Intel || x86 || Atom 1,6GHz || 2Gio SODDR2 (soudée) || eth, WIFI, 3USB, DVI, VGA, 2 SATA || - € || taille, fanless, alimentation 12V || 32bits, pas d'Intel Vt-x
|-----
|}</text>
      <sha1>sli7fgi8g5fwuryjpzm0vyfjtn1vm2f</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5590</id>
      <parentid>5589</parentid>
      <timestamp>2014-04-09T11:02:36Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <text xml:space="preserve" bytes="1476">L'objectif de cette page est de compulser les informations du fil [https://www.debian-fr.org/mini-serveurs-t47492.html Mini serveurs] pour les rendre plus faciles à lire :

{| class=&quot;wikitable&quot;
! Nom
! Marque
! Architecture
! CPU
! Mémoire
! Ports
! Prix
! Inconvénient
! Avantages
|-----
| FIT PC1 || FitPC || x86 || Geode 500MHz || 256Mio (soudée) || 2 eth, pas de WIFI, 2USB ||~ 300 € || Obsolète. RAM Soudée || Solide, Marche sans interruption depuis 2008. 2 interfaces Ethernet
|-----
| FIT Slim || FitPC || x86 || Geode 500MHz || 512Mio (soudée) || eth, WIFI, 2USB || ~ 300 € || Obsolète || Aucun
|-----
| FIT PC2 || FitPC || x86 || Intel ATOM 1,6Ghz || 1Gio (soudée) || 2 eth, WIFI, 2USB || ~ 350 € || Ram soudée, wifi broadcom un peu pénible. Un peu cher || interfaceS réseau : idéal pour routeur. disque facilement extractible
|-----
| Raspberry Pi modèle B || Raspberry Pi || ARM || ARM11 700MHz || 512Mio (soudée) || eth, pas WIFI, 2USB, HDMI || - € || Si besoin de stockage volumineux (&gt; à la capacité d'une carte SD), nécessite un disque dur externe alimenté sur secteur. || très faible consommation et encombrement
|-----
| RADXA || RADXA || ARM || ARM Cortex-A9 quad core @ 1.6Ghz || 2Gio DDR3 (soudée) || eth, WIFI, 2USB, HDMI || - € || - || -
|-----
| D945GSEJT || Intel || x86 || Atom 1,6GHz || 2Gio SODDR2 || eth, WIFI, 3USB, DVI, VGA, 2 SATA || - € || taille, fanless, alimentation 12V || 32bits, pas d'Intel Vt-x
|-----
|}</text>
      <sha1>rhcdd1c05fo6zxhweiiuziubs0dtop2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5591</id>
      <parentid>5590</parentid>
      <timestamp>2014-04-09T11:03:28Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <text xml:space="preserve" bytes="1469">L'objectif de cette page est de compulser les informations du fil [https://www.debian-fr.org/mini-serveurs-t47492.html Mini serveurs] pour les rendre plus faciles à lire :

{| class=&quot;wikitable&quot;
! Nom
! Marque
! Archi
! CPU
! Mémoire
! Ports
! Prix
! Inconvénient
! Avantages
|-----
| FIT PC1 || FitPC || x86 || Geode 500MHz || 256Mio (soudée) || 2 eth, pas de WIFI, 2USB ||~ 300 € || Obsolète. RAM Soudée || Solide, Marche sans interruption depuis 2008. 2 interfaces Ethernet
|-----
| FIT Slim || FitPC || x86 || Geode 500MHz || 512Mio (soudée) || eth, WIFI, 2USB || ~ 300 € || Obsolète || Aucun
|-----
| FIT PC2 || FitPC || x86 || Intel ATOM 1,6Ghz || 1Gio (soudée) || 2 eth, WIFI, 2USB || ~ 350 € || Ram soudée, wifi broadcom un peu pénible. Un peu cher || interfaceS réseau : idéal pour routeur. disque facilement extractible
|-----
| Raspberry Pi modèle B || Raspberry Pi || ARM || ARM11 700MHz || 512Mio (soudée) || eth, pas WIFI, 2USB, HDMI || - € || Si besoin de stockage volumineux (&gt; à la capacité d'une carte SD), nécessite un disque dur externe alimenté sur secteur. || très faible consommation et encombrement
|-----
| RADXA || RADXA || ARM || ARM Cortex-A9 quad core @ 1.6Ghz || 2Gio DDR3 (soudée) || eth, WIFI, 2USB, HDMI || - € || - || -
|-----
| D945GSEJT || Intel || x86 || Atom 1,6GHz || 2Gio SODDR2 || eth, WIFI, 3USB, DVI, VGA, 2 SATA || - € || taille, fanless, alimentation 12V || 32bits, pas d'Intel Vt-x
|-----
|}</text>
      <sha1>q0pou7je1u15s4qduxpt35q83t5u5wy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Mise à niveau (upgrade) de Etch à Lenny</title>
    <ns>0</ns>
    <id>384</id>
    <revision>
      <id>1366</id>
      <timestamp>2010-04-09T13:55:11Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « {{sid}}  Comment passer de Etch à Lenny  Attention : Ce Document est basé sur l'upgrade d'une machine de bureau, pas d'un serveur !  Cette question n'est bien évidemment p… »</comment>
      <text xml:space="preserve" bytes="20277">{{sid}}

Comment passer de Etch à Lenny

Attention : Ce Document est basé sur l'upgrade d'une machine de bureau, pas d'un serveur !

Cette question n'est bien évidemment plus d'actualité, presque tout le monde est déjà sous Lenny.
Mais pour les retardataires, et en vue du passage de squeeze en stable, il faut se réveiller !

Je part du principe que vous n’avez pas installé de pilotes propriétaires pour vos cartes graphiques.
Le changement de noyau ferait planter votre serveur X.
Modifiez votre xorg.conf afin d'utiliser des pilotes Debian avant cet upgrade, a moins que vous ne vous ne les réinstalliez juste après.

Votre machine doit être à jour avant de vous lancer

 # aptitude upgrade

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition ou se trouve /var pour le stockage des paquets téléchargés.

Pour connaître l’espace libre de votre partition racine :

 $ df -h /
 Sys. de fich.         Tail. Occ. Disp. %Occ. Monté sur
 /dev/hda1              23G  2,6G   20G  12% /

Si vous disposez de plus de 50% d’espace libre vous pouvez passer au chapitre suivant. Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Modifiez votre sources.list et ajoutez Lenny (il suffit de copier coller les lignes avec Etch et de mettre Lenny à la place.)

 # nano /etc/apt/sources.list
 
 ###### Debian Main Repos
 deb http://ftp.fr.debian.org/debian/ etch main contrib non-free
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free 
 
 ###### Debian Security &amp; Update Repos
 deb http://security.debian.org/ etch/updates main contrib non-free
 deb http://ftp.fr.debian.org/debian/ etch-proposed-updates main contrib non-free
 deb http://security.debian.org/ lenny/updates main contrib non-free
 deb http://ftp.fr.debian.org/debian/ lenny-proposed-updates main contrib non-free
 
 #### Debian Backports
 deb http://www.backports.org/debian/ etch-backports main contrib
 deb http://www.backports.org/debian/ lenny-backports main contrib non-free
 
 #### Debian Multimedia
 deb http://www.debian-multimedia.org/ etch main contrib
 deb http://www.debian-multimedia.org/ lenny main contrib non-free

Maintenant faites un update pour mettre à jour la liste des paquets :

 # aptitude update

 Quelques erreurs risques d'arriver...

 W: GPG error: http://www.debian-multimedia.org

# Des problèmes de clés GPG [[Erreur_lors_d'un_update:_NO_PUBKEY]]
 # apt-get install debian-backports-keyring
 # apt-get install debian-multimedia-keyring

 E: Dynamic MMap ran out of room

# Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]]
 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaite l'update, il ne doit pas y avoir d'erreurs

 # aptitude update
 
  234ko téléchargés en 1m7s (3466o/s)
 Lecture des listes de paquets... Fait

IMPORTANT : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

Lancez l'upgrade

 # apt-get dist-upgrade                             
 Lecture des listes de paquets... Fait                       
 Construction de l'arbre des dépendances... Fait             
 Calcul de la mise à jour... Fait                            
 Les paquets suivants seront ENLEVÉS :                       
   dbus-1-utils gimp gimp-print gnome-themes-extras libdiscover1 libgssapi2 libnl1-pre6 libopal-2.2.0
   libpci2 libpt-plugins-alsa libpt-plugins-v4l libsasl2 libstlport4.6c2 libvte4                     
   xserver-xorg-video-newport                                                                        
 Les NOUVEAUX paquets suivants seront installés :                                                    
   bsd-mailx bsh-gcj cheese cpp-4.3 cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk
   cupsddk-drivers dbus-x11 discover discover-data djvulibre-desktop dmz-cursor-theme                   
   epiphany-browser-data epiphany-gecko fastjar freetds-common gcc-4.3-base gcj-4.3-base gdebi-core     
   ghostscript ghostscript-x gij-4.3 gnome-mount gnome-network-admin gnome-settings-daemon gnuchess     
   grub-common gstreamer0.10-tools gstreamer0.10-x gtkhtml3.14 guile-1.8-libs hal-info java-common      
   java-gcj-compat java-gcj-compat-headless libamrnb3 libamrwb3 libasyncns0 libavahi-compat-libdnssd1   
   libavahi-core5 libavahi-gobject0 libavahi-ui0 libavcodec51 libavformat52 libavutil49 libbcel-java    
   libbind9-40 libblas3gf libbluetooth2 libcairomm-1.0-1 libcamel1.2-11 libcap2 libcdio7 libct4 libcups2
   libcurl3-gnutls libcwidget3 libdatrie0 libdb4.5 libdb4.6 libdevmapper1.02.1 libdirac0                
   libdirectfb-1.0-0 libdirectfb-extra libdiscover2 libdjvulibre21 libdns45 libebook1.2-9 libecal1.2-7  
   libedata-cal1.2-6 libedataserver1.2-9 libedataserverui1.2-8 libeel2-2.20 libegroupwise1.2-13 libelfg0
   libepc-1.0-1 libepc-ui-1.0-1 libept0 libexchange-storage1.2-3 libexempi3 libfaac0 libfaad0 libffi5   
   libflac8 libfreebob0 libgail18 libgalago3 libgcj9-0 libgcj9-0-awt libgcj9-jar libgd2-noxpm libgda3-3 
   libgda3-common libgdata-google1.2-1 libgdata1.2-1 libgfortran3 libggz2 libggzcore9 libggzmod4        
   libgmp3c2 libgmyth0 libgnomekbd-common libgnomekbd2 libgnomekbdui2 libgnutls26 libgpgme11 libgpm2    
   libgpod3 libgraphviz4 libgs8 libgssglue1 libgtk-vnc-1.0-0 libgtkhtml3.14-19 libgtksourceview2.0-0    
   libgtksourceview2.0-common libgucharmap6 libgweather-common libgweather1 libhsqldb-java-gcj          
   libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libicu38      
   libilmbase6 libisc45 libisccc40 libisccfg40 libiw29 libjack0 libjasper1 libjaxp1.3-java-gcj          
   libkeyutils1 liblapack3gf libldap-2.4-2 liblog4j1.2-java libltdl3 liblua5.1-0 liblwres40 liblzo2-2   
   libmagick10 libmalaga7 libmozjs1d libmp3lame0 libmpcdec3 libmpfr1ldbl libmtp7 libmx4j-java           
   libmysqlclient15off libnautilus-burn4 libneon27 libnet-dbus-perl libnl1 libnss3-1d liboobs-1-4       
   libopal-2.2 libopenexr6 libparted1.8-10 libpci3 libpcsclite1 libperl5.10 libpisync1 libpixman-1-0    
   libpoppler-glib3 libpoppler3 libpostproc51 libpt-1.10.10 libpt-1.10.10-plugins-alsa                  
   libpt-1.10.10-plugins-v4l libpth20 libpulse0 librarian0 libregexp-java libsane-extras                
   libschroedinger-1.0-0 libservlet2.4-java libslab0 libsmbios2 libsnmp15 libsoup2.4-1 libspectre1      
   libspeexdsp1 libsplashy1 libsqlite3-0 libssh2-1 libstlport4.6ldbl libsuitesparse-3.1.0               
   libswfdec-0.6-90 libtalloc1 libthai-data libthai0 libtimedate-perl libtotem-plparser10               
   libtrackerclient0 libts-0.0-0 liburi-perl libustr-1.0-1 libvoikko1 libvte9 libwavpack1 libwbclient0  
   libwnck22 libwpg-0.1-1 libwps-0.1-1 libwww-perl libx264-65 libx86-1 libxalan2-java-gcj libxapian15   
   libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xlib0 libxcb-xv0 libxcb1         
   libxcomposite1 libxerces2-java-gcj libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins
   libxine1-plugins libxine1-x libxklavier12 libxml-parser-perl libxml-twig-perl libxvidcore4            
   linux-image-2.6.26-2-686 lp-solve lzma mysql-common netcat-traditional openoffice.org-base-core       
   openoffice.org-filter-mobiledev openoffice.org-officebean openoffice.org-report-builder-bin           
   openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-writer2latex                 
   openprinting-ppds openssl-blacklist oss-compat pkg-config pm-utils python-dbus python-eggtrayicon     
   python-elementtree python-gdata python-gobject python-gtkhtml2 python-gtkmozembed                     
   python-gtksourceview2 python-imaging python-notify python-sepolgen python-software-properties         
   python2.5 python2.5-minimal seahorse software-properties-gtk ssl-cert swfdec-gnome totem-common       
   totem-gstreamer totem-plugins ttf-dejavu-core ttf-dejavu-extra ttf-liberation unattended-upgrades     
   update-manager-core update-notifier-common vinagre x11-apps x11-session-utils x11-utils x11-xfs-utils 
   x11-xkb-utils x11-xserver-utils xauth xinit xserver-xorg-video-intel xserver-xorg-video-mach64        
   xserver-xorg-video-openchrome xserver-xorg-video-r128 xserver-xorg-video-radeon                       
   xserver-xorg-video-radeonhd xulrunner-1.9 xulrunner-1.9-gnome-support                                 
 Les paquets suivants seront mis à jour :                                                                
   acpi acpid adduser alacarte alsa-base alsa-utils anacron apt apt-utils aptitude at avahi-daemon       
   base-files base-passwd bash bc bind9-host binutils bittorrent bluez-gnome bsdmainutils bsdutils bsh   
   bug-buddy busybox bzip2 ca-certificates capplets-data cdrdao console-common console-data console-tools
   coreutils cpio cpp cpp-4.1 cpufrequtils cron cupsys cupsys-bsd cupsys-client cupsys-common            
   cupsys-driver-gutenprint dbus dc debconf debconf-i18n debianutils defoma deskbar-applet desktop-base  
   desktop-file-utils dhcdbd dhcp3-client dhcp3-common dictionaries-common diff discover1 discover1-data 
   dmidecode dnsutils doc-debian doc-linux-text docbook-xml dpkg dpkg-dev dselect dvd+rw-tools e2fslibs  
   e2fsprogs ed eject ekiga eog epiphany-browser epiphany-extensions evince evolution evolution-common   
   evolution-data-server evolution-data-server-common evolution-exchange evolution-plugins               
   evolution-webcal exim4 exim4-base exim4-config exim4-daemon-light fast-user-switch-applet file        
   file-roller findutils finger fontconfig fontconfig-config foomatic-db foomatic-db-engine              
   foomatic-db-gutenprint foomatic-db-hpijs foomatic-filters foomatic-filters-ppds foomatic-gui ftp      
   gcalctool gcc-3.4-base gcc-4.1-base gconf-editor gconf2 gconf2-common gdb gdebi gdm gedit gedit-common
   genisoimage gettext-base gij gimp-data gksu gnome-about gnome-applets gnome-applets-data              
   gnome-backgrounds gnome-btdownload gnome-cards-data gnome-control-center gnome-core gnome-desktop-data
   gnome-desktop-environment gnome-doc-utils gnome-games gnome-games-data gnome-icon-theme gnome-keyring 
   gnome-keyring-manager gnome-media gnome-media-common gnome-menus gnome-mime-data                      
   gnome-netstatus-applet gnome-nettool gnome-panel gnome-panel-data gnome-power-manager                 
   gnome-screensaver gnome-session gnome-system-monitor gnome-system-tools gnome-terminal                
   gnome-terminal-data gnome-themes gnome-user-guide gnome-utils gnome-volume-manager gnomebaker gnupg   
   gparted gpgv grep groff-base grub gs-common gs-esp gsfonts gstreamer0.10-alsa gstreamer0.10-esd       
   gstreamer0.10-ffmpeg gstreamer0.10-gnomevfs gstreamer0.10-plugins-base gstreamer0.10-plugins-good     
   gstreamer0.10-plugins-ugly gtk2-engines gtk2-engines-pixbuf gtkhtml3.8 gucharmap guile-1.6-libs gzip  
   hal hibernate hicolor-icon-theme hostname hotkey-setup hpijs hpijs-ppds hplip hplip-data iamerican    
   ibritish icedax iceweasel iceweasel-gnome-support iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint
   info initramfs-tools initscripts installation-report iproute iptables iputils-arping iputils-ping     
   iso-codes ispell kde-i18n-fr kdelibs-data kdelibs4c2a klibc-utils klogd language-env laptop-detect    
   less liba52-0.7.4 libaa1 libacl1 libao2 libapm1 libart-2.0-2 libarts1c2a libartsc0 libasound2         
   libaspell15 libatk1.0-0 libatm1 libattr1 libaudio2 libaudiofile0 libauthen-pam-perl libavahi-client3  
   libavahi-common-data libavahi-common3 libavahi-glib1 libavahi-qt3-1 libblkid1 libbonobo2-0            
   libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i686 libcaca0             
   libcairo-perl libcairo2 libcdparanoia0 libcomerr2 libconsole libcpufreq0 libcroco3 libcucul0          
   libcupsimage2 libcupsys2 libcurl3 libdaemon0 libdb4.2 libdbus-1-3 libdbus-glib-1-2 libdmx1 libdrm2    
   libdv4 libdvdread3 libedata-book1.2-2 libedit2 libeel2-data libenchant1c2a libevent1 libexif12        
   libexpat1 libfam0 libfontconfig1 libfontenc1 libfreetype6 libfs6 libg2c0 libgail-common libgc1c2      
   libgcc1 libgcj-bc libgcj-common libgconf2-4 libgcrypt11 libgda2-3 libgda2-common libgdl-1-0           
   libgdl-1-common libgimp2.0 libgksu2-0 libgksuui1.0-1 libgl1-mesa-dri libgl1-mesa-glx libglade2-0      
   libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgnome-desktop-2 libgnome-keyring0        
   libgnome-media0 libgnome-menu2 libgnome-pilot2 libgnome-window-settings1 libgnome2-0                  
   libgnome2-canvas-perl libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0            
   libgnomecanvas2-common libgnomecups1.0-1 libgnomeprint2.2-0 libgnomeprint2.2-data libgnomeprintui2.2-0
   libgnomeprintui2.2-common libgnomeui-0 libgnomeui-common libgnomevfs2-0 libgnomevfs2-bin              
   libgnomevfs2-common libgnomevfs2-extra libgpg-error0 libgphoto2-2 libgphoto2-port0 libgsf-1-114       
   libgsf-1-common libgsm1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0   
   libgtk2.0-bin libgtk2.0-common libgtkhtml2-0 libgtkhtml3.8-15 libgtkmm-2.4-1c2a                       
   libgtksourceview-common libgtksourceview1.0-0 libgtkspell0 libgtop2-7 libgtop2-common libguile-ltdl-1 
   libgutenprint2 libgutenprintui2-1 libhal-storage1 libhal1 libhsqldb-java libice6 libidl0 libidn11     
   libieee1284-3 libio-pty-perl libjack0.100.0-0 libjaxp1.3-java libjline-java libjpeg62 libklibc        
   libkpathsea4 libkrb53 liblcms1 liblircclient0 liblocale-gettext-perl liblockfile1 liblua50 liblualib50
   libmad0 libmagic1 libmdbtools libmetacity0 libmodplug0c2 libmozjs0d libmpeg2-4 libmusicbrainz4c2a     
   libnautilus-extension1 libncurses5 libncursesw5 libnet-ssleay-perl libnewt0.52 libnfsidmap2           
   libnm-glib0 libnm-util0 libnotify1 libnspr4-0d libnss-mdns libogg0 liboil0.3 liborbit2 libosp5        
   libpam-modules libpam-runtime libpam0g libpanel-applet2-0 libpango1.0-0 libpango1.0-common libpaper1  
   libpcre3 libpisock9 libpng12-0 libpopt0 libportaudio0 libqt3-mt libqthreads-12 libraw1394-8           
   libreadline5 librpcsecgss3 librsvg2-2 librsvg2-common libsane libsasl2-2 libscrollkeeper0             
   libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsemanage1 libsensors3 libsepol1 libservlet2.3-java
   libsexy2 libshout3 libsidplay1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 libsmbclient libsndfile1   
   libsnmp-base libsoup2.2-8 libspeex1 libss2 libssl0.9.8 libstartup-notification0 libstdc++6 libsvga1   
   libsysfs2 libtag1c2a libtasn1-3 libtasn1-3-bin libtext-charwidth-perl libtext-iconv-perl              
   libtext-wrapi18n-perl libtheora0 libtiff4 libusb-0.1-4 libuuid1 libvisual-0.4-0 libvolume-id0         
   libvorbis0a libvorbisenc2 libvorbisfile3 libvte-common libwmf0.2-7 libwnck-common libwpd8c2a libwrap0 
   libx11-6 libx11-data libxalan2-java libxau6 libxaw7 libxcursor1 libxdamage1 libxdmcp6 libxerces2-java 
   libxext6 libxfixes3 libxfont1 libxft2 libxi6 libxine1 libxinerama1 libxkbfile1 libxml2 libxml2-utils  
   libxmu6 libxmuu1 libxp6 libxpm4 libxrandr2 libxrender1 libxres1 libxslt1.1 libxss1 libxt6 libxtrap6   
   libxtst6 libxul-common libxul0d libxv1 libxvmc1 libxxf86dga1 libxxf86misc1 libxxf86vm1 liferea
   liferea-xulrunner linux-image-2.6-686 linux-sound-base locales login logrotate lsb-base lsb-release
   lsof m4 mailx make makedev man-db manpages manpages-fr manpages-fr-dev manpages-fr-extra mawk mc menu
   menu-xdg metacity metacity-common mime-support mkisofs mktemp module-init-tools mount mpack mtools
   mtr-tiny mutt myspell-en-us myspell-fr-gut nano nautilus nautilus-cd-burner nautilus-data ncurses-base
   ncurses-bin ncurses-term net-tools netbase netcat network-manager network-manager-gnome nfs-common
   nfs-kernel-server notification-daemon ntp openbsd-inetd openoffice.org openoffice.org-base
   openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw
   openoffice.org-evolution openoffice.org-gcj openoffice.org-gnome openoffice.org-gtk
   openoffice.org-help-en-us openoffice.org-help-fr openoffice.org-impress openoffice.org-java-common
   openoffice.org-l10n-fr openoffice.org-math openoffice.org-thesaurus-en-us openoffice.org-writer
   openssh-blacklist openssh-client openssh-server openssl passwd patch pciutils perl perl-base
   perl-modules pidentd pmount policycoreutils poppler-utils portmap powermgmt-base printconf procps
   psmisc python python-apt python-cairo python-central python-foomatic python-glade2 python-gmenu
   python-gnome2 python-gnome2-desktop python-gnome2-extras python-gtk2 python-ipy python-libxml2
   python-minimal python-newt python-numeric python-pyorbit python-qt3 python-selinux python-semanage
   python-sip4 python-support python-uno python-vte python2.4 python2.4-minimal rdesktop readline-common
   reportbug rhythmbox scrollkeeper sed shared-mime-info sharutils sound-juicer strace sudo svgalibg1
   synaptic sysklogd system-tools-backends sysv-rc sysvinit sysvinit-utils tar tasksel tasksel-data tcpd
   telnet texinfo time totem totem-mozilla totem-xine traceroute tsclient ttf-dejavu ttf-opensymbol twm
   type-handling tzdata ucf udev unzip update-inetd update-manager update-notifier usbutils uswsusp
   util-linux vbetool vim-common vim-tiny vino w3m wamerican wfrench wget whiptail whois wodim
   wpasupplicant x11-common xbase-clients xdg-utils xfonts-100dpi xfonts-75dpi xfonts-base
   xfonts-encodings xfonts-utils xkb-data xml-core xorg xresprobe xsane xsane-common xserver-xorg
   xserver-xorg-core xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd
   xserver-xorg-input-mouse xserver-xorg-input-synaptics xserver-xorg-input-wacom xserver-xorg-video-all
   xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati xserver-xorg-video-chips
   xserver-xorg-video-cirrus xserver-xorg-video-cyrix xserver-xorg-video-dummy xserver-xorg-video-fbdev
   xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-i740 xserver-xorg-video-i810
   xserver-xorg-video-imstt xserver-xorg-video-mga xserver-xorg-video-neomagic xserver-xorg-video-nsc
   xserver-xorg-video-nv xserver-xorg-video-rendition xserver-xorg-video-s3 xserver-xorg-video-s3virge
   xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis
   xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident
   xserver-xorg-video-tseng xserver-xorg-video-v4l xserver-xorg-video-vesa xserver-xorg-video-vga
   xserver-xorg-video-via xserver-xorg-video-vmware xserver-xorg-video-voodoo xsltproc xterm
   xulrunner-gnome-support xutils xutils-dev yelp zenity zlib1g
 729 mis à jour, 294 nouvellement installés, 15 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 869Mo dans les archives.
 Après dépaquetage, 647Mo d'espace disque supplémentaires seront utilisés.
 Souhaitez-vous continuer [O/n] ?

En fonction de votre connexion ça peut prendre des plombes...
Un conseil, si vous n'êtes pas sur de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

 # apt-get -d upgrade

Puis

 # apt-get dist-upgrade

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut

[[Image:Capture150.jpeg]]

[[Image:Capture151.jpeg]]

[[Image:Capture153.jpeg]]

[[Image:Capture154.jpeg]]

[[Image:Capture156.jpeg]]

[[Image:Capture158.jpeg]]

[[Image:Capture159.jpeg]]

[[Image:Capture160.jpeg]]

[[Image:Capture161.jpeg]]

Sans le téléchargement des fichiers, comptez environ 50 minutes pour l'upgrade.

 # reboot

 $ uname -a
 Linux lenny2 2.6.26-2-686 #1 SMP Thu Mar 11 23:19:46 UTC 2010 i686 GNU/Linux

A venir... Upgrade de Lenny à Squeeze !

----
--[[Utilisateur:Lol|Lol]] 9 avril 2010 à 13:55 (UTC)</text>
      <sha1>4o6qyro66jqypzxi6zaqszemyjqxdx5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1376</id>
      <parentid>1366</parentid>
      <timestamp>2010-04-09T14:18:45Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="20280">{{sid}}

Comment passer de Etch à Lenny

Attention : Ce Document est basé sur l'upgrade d'une machine de bureau, pas d'un serveur !

Cette question n'est bien évidemment plus d'actualité, presque tout le monde est déjà sous Lenny.
Mais pour les retardataires, et en vue du passage de squeeze en stable, il faut se réveiller !

Je part du principe que vous n’avez pas installé de pilotes propriétaires pour vos cartes graphiques.
Le changement de noyau ferait planter votre serveur X.
Modifiez votre xorg.conf afin d'utiliser des pilotes Debian avant cet upgrade, a moins que vous ne vous ne les réinstalliez juste après.

Votre machine doit être à jour avant de vous lancer

 # aptitude upgrade

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition ou se trouve /var pour le stockage des paquets téléchargés.

Pour connaître l’espace libre de votre partition racine :

 $ df -h /
 Sys. de fich.         Tail. Occ. Disp. %Occ. Monté sur
 /dev/hda1              23G  2,6G   20G  12% /

Si vous disposez de plus de 50% d’espace libre vous pouvez passer au chapitre suivant. Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Modifiez votre sources.list et ajoutez Lenny (il suffit de copier coller les lignes avec Etch et de mettre Lenny à la place.)

 # nano /etc/apt/sources.list
 
 ###### Debian Main Repos
 deb http://ftp.fr.debian.org/debian/ etch main contrib non-free
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free 
 
 ###### Debian Security &amp; Update Repos
 deb http://security.debian.org/ etch/updates main contrib non-free
 deb http://ftp.fr.debian.org/debian/ etch-proposed-updates main contrib non-free
 deb http://security.debian.org/ lenny/updates main contrib non-free
 deb http://ftp.fr.debian.org/debian/ lenny-proposed-updates main contrib non-free
 
 #### Debian Backports
 deb http://www.backports.org/debian/ etch-backports main contrib
 deb http://www.backports.org/debian/ lenny-backports main contrib non-free
 
 #### Debian Multimedia
 deb http://www.debian-multimedia.org/ etch main contrib
 deb http://www.debian-multimedia.org/ lenny main contrib non-free

Maintenant faites un update pour mettre à jour la liste des paquets :

 # aptitude update

 Quelques erreurs risques d'arriver...

 W: GPG error: http://www.debian-multimedia.org

# Des problèmes de clés GPG [[Erreur_lors_d'un_update:_NO_PUBKEY]]
 # apt-get install debian-backports-keyring
 # apt-get install debian-multimedia-keyring

 E: Dynamic MMap ran out of room

# Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]]
 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaite l'update, il ne doit pas y avoir d'erreurs

 # aptitude update
 
  234ko téléchargés en 1m7s (3466o/s)
 Lecture des listes de paquets... Fait

IMPORTANT : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

Lancez l'upgrade

 # apt-get dist-upgrade                             
 Lecture des listes de paquets... Fait                       
 Construction de l'arbre des dépendances... Fait             
 Calcul de la mise à jour... Fait                            
 Les paquets suivants seront ENLEVÉS :                       
   dbus-1-utils gimp gimp-print gnome-themes-extras libdiscover1 libgssapi2 libnl1-pre6 libopal-2.2.0
   libpci2 libpt-plugins-alsa libpt-plugins-v4l libsasl2 libstlport4.6c2 libvte4                     
   xserver-xorg-video-newport                                                                        
 Les NOUVEAUX paquets suivants seront installés :                                                    
   bsd-mailx bsh-gcj cheese cpp-4.3 cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk
   cupsddk-drivers dbus-x11 discover discover-data djvulibre-desktop dmz-cursor-theme                   
   epiphany-browser-data epiphany-gecko fastjar freetds-common gcc-4.3-base gcj-4.3-base gdebi-core     
   ghostscript ghostscript-x gij-4.3 gnome-mount gnome-network-admin gnome-settings-daemon gnuchess     
   grub-common gstreamer0.10-tools gstreamer0.10-x gtkhtml3.14 guile-1.8-libs hal-info java-common      
   java-gcj-compat java-gcj-compat-headless libamrnb3 libamrwb3 libasyncns0 libavahi-compat-libdnssd1   
   libavahi-core5 libavahi-gobject0 libavahi-ui0 libavcodec51 libavformat52 libavutil49 libbcel-java    
   libbind9-40 libblas3gf libbluetooth2 libcairomm-1.0-1 libcamel1.2-11 libcap2 libcdio7 libct4 libcups2
   libcurl3-gnutls libcwidget3 libdatrie0 libdb4.5 libdb4.6 libdevmapper1.02.1 libdirac0                
   libdirectfb-1.0-0 libdirectfb-extra libdiscover2 libdjvulibre21 libdns45 libebook1.2-9 libecal1.2-7  
   libedata-cal1.2-6 libedataserver1.2-9 libedataserverui1.2-8 libeel2-2.20 libegroupwise1.2-13 libelfg0
   libepc-1.0-1 libepc-ui-1.0-1 libept0 libexchange-storage1.2-3 libexempi3 libfaac0 libfaad0 libffi5   
   libflac8 libfreebob0 libgail18 libgalago3 libgcj9-0 libgcj9-0-awt libgcj9-jar libgd2-noxpm libgda3-3 
   libgda3-common libgdata-google1.2-1 libgdata1.2-1 libgfortran3 libggz2 libggzcore9 libggzmod4        
   libgmp3c2 libgmyth0 libgnomekbd-common libgnomekbd2 libgnomekbdui2 libgnutls26 libgpgme11 libgpm2    
   libgpod3 libgraphviz4 libgs8 libgssglue1 libgtk-vnc-1.0-0 libgtkhtml3.14-19 libgtksourceview2.0-0    
   libgtksourceview2.0-common libgucharmap6 libgweather-common libgweather1 libhsqldb-java-gcj          
   libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libicu38      
   libilmbase6 libisc45 libisccc40 libisccfg40 libiw29 libjack0 libjasper1 libjaxp1.3-java-gcj          
   libkeyutils1 liblapack3gf libldap-2.4-2 liblog4j1.2-java libltdl3 liblua5.1-0 liblwres40 liblzo2-2   
   libmagick10 libmalaga7 libmozjs1d libmp3lame0 libmpcdec3 libmpfr1ldbl libmtp7 libmx4j-java           
   libmysqlclient15off libnautilus-burn4 libneon27 libnet-dbus-perl libnl1 libnss3-1d liboobs-1-4       
   libopal-2.2 libopenexr6 libparted1.8-10 libpci3 libpcsclite1 libperl5.10 libpisync1 libpixman-1-0    
   libpoppler-glib3 libpoppler3 libpostproc51 libpt-1.10.10 libpt-1.10.10-plugins-alsa                  
   libpt-1.10.10-plugins-v4l libpth20 libpulse0 librarian0 libregexp-java libsane-extras                
   libschroedinger-1.0-0 libservlet2.4-java libslab0 libsmbios2 libsnmp15 libsoup2.4-1 libspectre1      
   libspeexdsp1 libsplashy1 libsqlite3-0 libssh2-1 libstlport4.6ldbl libsuitesparse-3.1.0               
   libswfdec-0.6-90 libtalloc1 libthai-data libthai0 libtimedate-perl libtotem-plparser10               
   libtrackerclient0 libts-0.0-0 liburi-perl libustr-1.0-1 libvoikko1 libvte9 libwavpack1 libwbclient0  
   libwnck22 libwpg-0.1-1 libwps-0.1-1 libwww-perl libx264-65 libx86-1 libxalan2-java-gcj libxapian15   
   libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xlib0 libxcb-xv0 libxcb1         
   libxcomposite1 libxerces2-java-gcj libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins
   libxine1-plugins libxine1-x libxklavier12 libxml-parser-perl libxml-twig-perl libxvidcore4            
   linux-image-2.6.26-2-686 lp-solve lzma mysql-common netcat-traditional openoffice.org-base-core       
   openoffice.org-filter-mobiledev openoffice.org-officebean openoffice.org-report-builder-bin           
   openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-writer2latex                 
   openprinting-ppds openssl-blacklist oss-compat pkg-config pm-utils python-dbus python-eggtrayicon     
   python-elementtree python-gdata python-gobject python-gtkhtml2 python-gtkmozembed                     
   python-gtksourceview2 python-imaging python-notify python-sepolgen python-software-properties         
   python2.5 python2.5-minimal seahorse software-properties-gtk ssl-cert swfdec-gnome totem-common       
   totem-gstreamer totem-plugins ttf-dejavu-core ttf-dejavu-extra ttf-liberation unattended-upgrades     
   update-manager-core update-notifier-common vinagre x11-apps x11-session-utils x11-utils x11-xfs-utils 
   x11-xkb-utils x11-xserver-utils xauth xinit xserver-xorg-video-intel xserver-xorg-video-mach64        
   xserver-xorg-video-openchrome xserver-xorg-video-r128 xserver-xorg-video-radeon                       
   xserver-xorg-video-radeonhd xulrunner-1.9 xulrunner-1.9-gnome-support                                 
 Les paquets suivants seront mis à jour :                                                                
   acpi acpid adduser alacarte alsa-base alsa-utils anacron apt apt-utils aptitude at avahi-daemon       
   base-files base-passwd bash bc bind9-host binutils bittorrent bluez-gnome bsdmainutils bsdutils bsh   
   bug-buddy busybox bzip2 ca-certificates capplets-data cdrdao console-common console-data console-tools
   coreutils cpio cpp cpp-4.1 cpufrequtils cron cupsys cupsys-bsd cupsys-client cupsys-common            
   cupsys-driver-gutenprint dbus dc debconf debconf-i18n debianutils defoma deskbar-applet desktop-base  
   desktop-file-utils dhcdbd dhcp3-client dhcp3-common dictionaries-common diff discover1 discover1-data 
   dmidecode dnsutils doc-debian doc-linux-text docbook-xml dpkg dpkg-dev dselect dvd+rw-tools e2fslibs  
   e2fsprogs ed eject ekiga eog epiphany-browser epiphany-extensions evince evolution evolution-common   
   evolution-data-server evolution-data-server-common evolution-exchange evolution-plugins               
   evolution-webcal exim4 exim4-base exim4-config exim4-daemon-light fast-user-switch-applet file        
   file-roller findutils finger fontconfig fontconfig-config foomatic-db foomatic-db-engine              
   foomatic-db-gutenprint foomatic-db-hpijs foomatic-filters foomatic-filters-ppds foomatic-gui ftp      
   gcalctool gcc-3.4-base gcc-4.1-base gconf-editor gconf2 gconf2-common gdb gdebi gdm gedit gedit-common
   genisoimage gettext-base gij gimp-data gksu gnome-about gnome-applets gnome-applets-data              
   gnome-backgrounds gnome-btdownload gnome-cards-data gnome-control-center gnome-core gnome-desktop-data
   gnome-desktop-environment gnome-doc-utils gnome-games gnome-games-data gnome-icon-theme gnome-keyring 
   gnome-keyring-manager gnome-media gnome-media-common gnome-menus gnome-mime-data                      
   gnome-netstatus-applet gnome-nettool gnome-panel gnome-panel-data gnome-power-manager                 
   gnome-screensaver gnome-session gnome-system-monitor gnome-system-tools gnome-terminal                
   gnome-terminal-data gnome-themes gnome-user-guide gnome-utils gnome-volume-manager gnomebaker gnupg   
   gparted gpgv grep groff-base grub gs-common gs-esp gsfonts gstreamer0.10-alsa gstreamer0.10-esd       
   gstreamer0.10-ffmpeg gstreamer0.10-gnomevfs gstreamer0.10-plugins-base gstreamer0.10-plugins-good     
   gstreamer0.10-plugins-ugly gtk2-engines gtk2-engines-pixbuf gtkhtml3.8 gucharmap guile-1.6-libs gzip  
   hal hibernate hicolor-icon-theme hostname hotkey-setup hpijs hpijs-ppds hplip hplip-data iamerican    
   ibritish icedax iceweasel iceweasel-gnome-support iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint
   info initramfs-tools initscripts installation-report iproute iptables iputils-arping iputils-ping     
   iso-codes ispell kde-i18n-fr kdelibs-data kdelibs4c2a klibc-utils klogd language-env laptop-detect    
   less liba52-0.7.4 libaa1 libacl1 libao2 libapm1 libart-2.0-2 libarts1c2a libartsc0 libasound2         
   libaspell15 libatk1.0-0 libatm1 libattr1 libaudio2 libaudiofile0 libauthen-pam-perl libavahi-client3  
   libavahi-common-data libavahi-common3 libavahi-glib1 libavahi-qt3-1 libblkid1 libbonobo2-0            
   libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i686 libcaca0             
   libcairo-perl libcairo2 libcdparanoia0 libcomerr2 libconsole libcpufreq0 libcroco3 libcucul0          
   libcupsimage2 libcupsys2 libcurl3 libdaemon0 libdb4.2 libdbus-1-3 libdbus-glib-1-2 libdmx1 libdrm2    
   libdv4 libdvdread3 libedata-book1.2-2 libedit2 libeel2-data libenchant1c2a libevent1 libexif12        
   libexpat1 libfam0 libfontconfig1 libfontenc1 libfreetype6 libfs6 libg2c0 libgail-common libgc1c2      
   libgcc1 libgcj-bc libgcj-common libgconf2-4 libgcrypt11 libgda2-3 libgda2-common libgdl-1-0           
   libgdl-1-common libgimp2.0 libgksu2-0 libgksuui1.0-1 libgl1-mesa-dri libgl1-mesa-glx libglade2-0      
   libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgnome-desktop-2 libgnome-keyring0        
   libgnome-media0 libgnome-menu2 libgnome-pilot2 libgnome-window-settings1 libgnome2-0                  
   libgnome2-canvas-perl libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0            
   libgnomecanvas2-common libgnomecups1.0-1 libgnomeprint2.2-0 libgnomeprint2.2-data libgnomeprintui2.2-0
   libgnomeprintui2.2-common libgnomeui-0 libgnomeui-common libgnomevfs2-0 libgnomevfs2-bin              
   libgnomevfs2-common libgnomevfs2-extra libgpg-error0 libgphoto2-2 libgphoto2-port0 libgsf-1-114       
   libgsf-1-common libgsm1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0   
   libgtk2.0-bin libgtk2.0-common libgtkhtml2-0 libgtkhtml3.8-15 libgtkmm-2.4-1c2a                       
   libgtksourceview-common libgtksourceview1.0-0 libgtkspell0 libgtop2-7 libgtop2-common libguile-ltdl-1 
   libgutenprint2 libgutenprintui2-1 libhal-storage1 libhal1 libhsqldb-java libice6 libidl0 libidn11     
   libieee1284-3 libio-pty-perl libjack0.100.0-0 libjaxp1.3-java libjline-java libjpeg62 libklibc        
   libkpathsea4 libkrb53 liblcms1 liblircclient0 liblocale-gettext-perl liblockfile1 liblua50 liblualib50
   libmad0 libmagic1 libmdbtools libmetacity0 libmodplug0c2 libmozjs0d libmpeg2-4 libmusicbrainz4c2a     
   libnautilus-extension1 libncurses5 libncursesw5 libnet-ssleay-perl libnewt0.52 libnfsidmap2           
   libnm-glib0 libnm-util0 libnotify1 libnspr4-0d libnss-mdns libogg0 liboil0.3 liborbit2 libosp5        
   libpam-modules libpam-runtime libpam0g libpanel-applet2-0 libpango1.0-0 libpango1.0-common libpaper1  
   libpcre3 libpisock9 libpng12-0 libpopt0 libportaudio0 libqt3-mt libqthreads-12 libraw1394-8           
   libreadline5 librpcsecgss3 librsvg2-2 librsvg2-common libsane libsasl2-2 libscrollkeeper0             
   libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsemanage1 libsensors3 libsepol1 libservlet2.3-java
   libsexy2 libshout3 libsidplay1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 libsmbclient libsndfile1   
   libsnmp-base libsoup2.2-8 libspeex1 libss2 libssl0.9.8 libstartup-notification0 libstdc++6 libsvga1   
   libsysfs2 libtag1c2a libtasn1-3 libtasn1-3-bin libtext-charwidth-perl libtext-iconv-perl              
   libtext-wrapi18n-perl libtheora0 libtiff4 libusb-0.1-4 libuuid1 libvisual-0.4-0 libvolume-id0         
   libvorbis0a libvorbisenc2 libvorbisfile3 libvte-common libwmf0.2-7 libwnck-common libwpd8c2a libwrap0 
   libx11-6 libx11-data libxalan2-java libxau6 libxaw7 libxcursor1 libxdamage1 libxdmcp6 libxerces2-java 
   libxext6 libxfixes3 libxfont1 libxft2 libxi6 libxine1 libxinerama1 libxkbfile1 libxml2 libxml2-utils  
   libxmu6 libxmuu1 libxp6 libxpm4 libxrandr2 libxrender1 libxres1 libxslt1.1 libxss1 libxt6 libxtrap6   
   libxtst6 libxul-common libxul0d libxv1 libxvmc1 libxxf86dga1 libxxf86misc1 libxxf86vm1 liferea
   liferea-xulrunner linux-image-2.6-686 linux-sound-base locales login logrotate lsb-base lsb-release
   lsof m4 mailx make makedev man-db manpages manpages-fr manpages-fr-dev manpages-fr-extra mawk mc menu
   menu-xdg metacity metacity-common mime-support mkisofs mktemp module-init-tools mount mpack mtools
   mtr-tiny mutt myspell-en-us myspell-fr-gut nano nautilus nautilus-cd-burner nautilus-data ncurses-base
   ncurses-bin ncurses-term net-tools netbase netcat network-manager network-manager-gnome nfs-common
   nfs-kernel-server notification-daemon ntp openbsd-inetd openoffice.org openoffice.org-base
   openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw
   openoffice.org-evolution openoffice.org-gcj openoffice.org-gnome openoffice.org-gtk
   openoffice.org-help-en-us openoffice.org-help-fr openoffice.org-impress openoffice.org-java-common
   openoffice.org-l10n-fr openoffice.org-math openoffice.org-thesaurus-en-us openoffice.org-writer
   openssh-blacklist openssh-client openssh-server openssl passwd patch pciutils perl perl-base
   perl-modules pidentd pmount policycoreutils poppler-utils portmap powermgmt-base printconf procps
   psmisc python python-apt python-cairo python-central python-foomatic python-glade2 python-gmenu
   python-gnome2 python-gnome2-desktop python-gnome2-extras python-gtk2 python-ipy python-libxml2
   python-minimal python-newt python-numeric python-pyorbit python-qt3 python-selinux python-semanage
   python-sip4 python-support python-uno python-vte python2.4 python2.4-minimal rdesktop readline-common
   reportbug rhythmbox scrollkeeper sed shared-mime-info sharutils sound-juicer strace sudo svgalibg1
   synaptic sysklogd system-tools-backends sysv-rc sysvinit sysvinit-utils tar tasksel tasksel-data tcpd
   telnet texinfo time totem totem-mozilla totem-xine traceroute tsclient ttf-dejavu ttf-opensymbol twm
   type-handling tzdata ucf udev unzip update-inetd update-manager update-notifier usbutils uswsusp
   util-linux vbetool vim-common vim-tiny vino w3m wamerican wfrench wget whiptail whois wodim
   wpasupplicant x11-common xbase-clients xdg-utils xfonts-100dpi xfonts-75dpi xfonts-base
   xfonts-encodings xfonts-utils xkb-data xml-core xorg xresprobe xsane xsane-common xserver-xorg
   xserver-xorg-core xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd
   xserver-xorg-input-mouse xserver-xorg-input-synaptics xserver-xorg-input-wacom xserver-xorg-video-all
   xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati xserver-xorg-video-chips
   xserver-xorg-video-cirrus xserver-xorg-video-cyrix xserver-xorg-video-dummy xserver-xorg-video-fbdev
   xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-i740 xserver-xorg-video-i810
   xserver-xorg-video-imstt xserver-xorg-video-mga xserver-xorg-video-neomagic xserver-xorg-video-nsc
   xserver-xorg-video-nv xserver-xorg-video-rendition xserver-xorg-video-s3 xserver-xorg-video-s3virge
   xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis
   xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident
   xserver-xorg-video-tseng xserver-xorg-video-v4l xserver-xorg-video-vesa xserver-xorg-video-vga
   xserver-xorg-video-via xserver-xorg-video-vmware xserver-xorg-video-voodoo xsltproc xterm
   xulrunner-gnome-support xutils xutils-dev yelp zenity zlib1g
 729 mis à jour, 294 nouvellement installés, 15 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 869Mo dans les archives.
 Après dépaquetage, 647Mo d'espace disque supplémentaires seront utilisés.
 Souhaitez-vous continuer [O/n] ?

En fonction de votre connexion ça peut prendre des plombes...
Un conseil, si vous n'êtes pas sur de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

 # apt-get -d upgrade

Puis

 # apt-get dist-upgrade

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut

[[Image:Capture150.jpeg]]

[[Image:Capture151.jpeg]]

[[Image:Capture153.jpeg]]

[[Image:Capture154.jpeg]]

[[Image:Capture156.jpeg]]

[[Image:Capture158.jpeg]]

[[Image:Capture159.jpeg]]

[[Image:Capture160.jpeg]]

[[Image:Capture161.jpeg]]

Sans le téléchargement des fichiers, comptez environ 50 minutes pour l'upgrade.

 # reboot

 $ uname -a
 Linux compta2 2 2.6.26-2-686 #1 SMP Thu Mar 11 23:19:46 UTC 2010 i686 GNU/Linux

A venir... Upgrade de Lenny à Squeeze !

----
--[[Utilisateur:Lol|Lol]] 9 avril 2010 à 13:55 (UTC)</text>
      <sha1>5vass1ifs7j8713hzulatzbx3n7836g</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1381</id>
      <parentid>1376</parentid>
      <timestamp>2010-04-10T09:14:25Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="20278">{{sid}}

Comment passer de Etch à Lenny

Attention : Ce Document est basé sur l'upgrade d'une machine de bureau, pas d'un serveur !

Cette question n'est bien évidemment plus d'actualité, presque tout le monde est déjà sous Lenny.
Mais pour les retardataires, et en vue du passage de squeeze en stable, il faut se réveiller !

Je part du principe que vous n’avez pas installé de pilotes propriétaires pour vos cartes graphiques.
Le changement de noyau ferait planter votre serveur X.
Modifiez votre xorg.conf afin d'utiliser des pilotes Debian avant cet upgrade, a moins que vous ne vous ne les réinstalliez juste après.

Votre machine doit être à jour avant de vous lancer

 # aptitude upgrade

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition ou se trouve /var pour le stockage des paquets téléchargés.

Pour connaître l’espace libre de votre partition racine :

 $ df -h /
 Sys. de fich.         Tail. Occ. Disp. %Occ. Monté sur
 /dev/hda1              23G  2,6G   20G  12% /

Si vous disposez de plus de 50% d’espace libre vous pouvez passer au chapitre suivant. Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Modifiez votre sources.list et ajoutez Lenny (il suffit de copier coller les lignes avec Etch et de mettre Lenny à la place.)

 # nano /etc/apt/sources.list
 
 ###### Debian Main Repos
 deb http://ftp.fr.debian.org/debian/ etch main contrib non-free
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free 
 
 ###### Debian Security &amp; Update Repos
 deb http://security.debian.org/ etch/updates main contrib non-free
 deb http://ftp.fr.debian.org/debian/ etch-proposed-updates main contrib non-free
 deb http://security.debian.org/ lenny/updates main contrib non-free
 deb http://ftp.fr.debian.org/debian/ lenny-proposed-updates main contrib non-free
 
 #### Debian Backports
 deb http://www.backports.org/debian/ etch-backports main contrib
 deb http://www.backports.org/debian/ lenny-backports main contrib non-free
 
 #### Debian Multimedia
 deb http://www.debian-multimedia.org/ etch main contrib
 deb http://www.debian-multimedia.org/ lenny main contrib non-free

Maintenant faites un update pour mettre à jour la liste des paquets :

 # aptitude update

 Quelques erreurs risques d'arriver...

 W: GPG error: http://www.debian-multimedia.org

# Des problèmes de clés GPG [[Erreur_lors_d'un_update:_NO_PUBKEY]]
 # apt-get install debian-backports-keyring
 # apt-get install debian-multimedia-keyring

 E: Dynamic MMap ran out of room

# Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]]
 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaite l'update, il ne doit pas y avoir d'erreurs

 # aptitude update
 
  234ko téléchargés en 1m7s (3466o/s)
 Lecture des listes de paquets... Fait

IMPORTANT : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

Lancez l'upgrade

 # apt-get dist-upgrade                             
 Lecture des listes de paquets... Fait                       
 Construction de l'arbre des dépendances... Fait             
 Calcul de la mise à jour... Fait                            
 Les paquets suivants seront ENLEVÉS :                       
   dbus-1-utils gimp gimp-print gnome-themes-extras libdiscover1 libgssapi2 libnl1-pre6 libopal-2.2.0
   libpci2 libpt-plugins-alsa libpt-plugins-v4l libsasl2 libstlport4.6c2 libvte4                     
   xserver-xorg-video-newport                                                                        
 Les NOUVEAUX paquets suivants seront installés :                                                    
   bsd-mailx bsh-gcj cheese cpp-4.3 cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk
   cupsddk-drivers dbus-x11 discover discover-data djvulibre-desktop dmz-cursor-theme                   
   epiphany-browser-data epiphany-gecko fastjar freetds-common gcc-4.3-base gcj-4.3-base gdebi-core     
   ghostscript ghostscript-x gij-4.3 gnome-mount gnome-network-admin gnome-settings-daemon gnuchess     
   grub-common gstreamer0.10-tools gstreamer0.10-x gtkhtml3.14 guile-1.8-libs hal-info java-common      
   java-gcj-compat java-gcj-compat-headless libamrnb3 libamrwb3 libasyncns0 libavahi-compat-libdnssd1   
   libavahi-core5 libavahi-gobject0 libavahi-ui0 libavcodec51 libavformat52 libavutil49 libbcel-java    
   libbind9-40 libblas3gf libbluetooth2 libcairomm-1.0-1 libcamel1.2-11 libcap2 libcdio7 libct4 libcups2
   libcurl3-gnutls libcwidget3 libdatrie0 libdb4.5 libdb4.6 libdevmapper1.02.1 libdirac0                
   libdirectfb-1.0-0 libdirectfb-extra libdiscover2 libdjvulibre21 libdns45 libebook1.2-9 libecal1.2-7  
   libedata-cal1.2-6 libedataserver1.2-9 libedataserverui1.2-8 libeel2-2.20 libegroupwise1.2-13 libelfg0
   libepc-1.0-1 libepc-ui-1.0-1 libept0 libexchange-storage1.2-3 libexempi3 libfaac0 libfaad0 libffi5   
   libflac8 libfreebob0 libgail18 libgalago3 libgcj9-0 libgcj9-0-awt libgcj9-jar libgd2-noxpm libgda3-3 
   libgda3-common libgdata-google1.2-1 libgdata1.2-1 libgfortran3 libggz2 libggzcore9 libggzmod4        
   libgmp3c2 libgmyth0 libgnomekbd-common libgnomekbd2 libgnomekbdui2 libgnutls26 libgpgme11 libgpm2    
   libgpod3 libgraphviz4 libgs8 libgssglue1 libgtk-vnc-1.0-0 libgtkhtml3.14-19 libgtksourceview2.0-0    
   libgtksourceview2.0-common libgucharmap6 libgweather-common libgweather1 libhsqldb-java-gcj          
   libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libicu38      
   libilmbase6 libisc45 libisccc40 libisccfg40 libiw29 libjack0 libjasper1 libjaxp1.3-java-gcj          
   libkeyutils1 liblapack3gf libldap-2.4-2 liblog4j1.2-java libltdl3 liblua5.1-0 liblwres40 liblzo2-2   
   libmagick10 libmalaga7 libmozjs1d libmp3lame0 libmpcdec3 libmpfr1ldbl libmtp7 libmx4j-java           
   libmysqlclient15off libnautilus-burn4 libneon27 libnet-dbus-perl libnl1 libnss3-1d liboobs-1-4       
   libopal-2.2 libopenexr6 libparted1.8-10 libpci3 libpcsclite1 libperl5.10 libpisync1 libpixman-1-0    
   libpoppler-glib3 libpoppler3 libpostproc51 libpt-1.10.10 libpt-1.10.10-plugins-alsa                  
   libpt-1.10.10-plugins-v4l libpth20 libpulse0 librarian0 libregexp-java libsane-extras                
   libschroedinger-1.0-0 libservlet2.4-java libslab0 libsmbios2 libsnmp15 libsoup2.4-1 libspectre1      
   libspeexdsp1 libsplashy1 libsqlite3-0 libssh2-1 libstlport4.6ldbl libsuitesparse-3.1.0               
   libswfdec-0.6-90 libtalloc1 libthai-data libthai0 libtimedate-perl libtotem-plparser10               
   libtrackerclient0 libts-0.0-0 liburi-perl libustr-1.0-1 libvoikko1 libvte9 libwavpack1 libwbclient0  
   libwnck22 libwpg-0.1-1 libwps-0.1-1 libwww-perl libx264-65 libx86-1 libxalan2-java-gcj libxapian15   
   libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xlib0 libxcb-xv0 libxcb1         
   libxcomposite1 libxerces2-java-gcj libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins
   libxine1-plugins libxine1-x libxklavier12 libxml-parser-perl libxml-twig-perl libxvidcore4            
   linux-image-2.6.26-2-686 lp-solve lzma mysql-common netcat-traditional openoffice.org-base-core       
   openoffice.org-filter-mobiledev openoffice.org-officebean openoffice.org-report-builder-bin           
   openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-writer2latex                 
   openprinting-ppds openssl-blacklist oss-compat pkg-config pm-utils python-dbus python-eggtrayicon     
   python-elementtree python-gdata python-gobject python-gtkhtml2 python-gtkmozembed                     
   python-gtksourceview2 python-imaging python-notify python-sepolgen python-software-properties         
   python2.5 python2.5-minimal seahorse software-properties-gtk ssl-cert swfdec-gnome totem-common       
   totem-gstreamer totem-plugins ttf-dejavu-core ttf-dejavu-extra ttf-liberation unattended-upgrades     
   update-manager-core update-notifier-common vinagre x11-apps x11-session-utils x11-utils x11-xfs-utils 
   x11-xkb-utils x11-xserver-utils xauth xinit xserver-xorg-video-intel xserver-xorg-video-mach64        
   xserver-xorg-video-openchrome xserver-xorg-video-r128 xserver-xorg-video-radeon                       
   xserver-xorg-video-radeonhd xulrunner-1.9 xulrunner-1.9-gnome-support                                 
 Les paquets suivants seront mis à jour :                                                                
   acpi acpid adduser alacarte alsa-base alsa-utils anacron apt apt-utils aptitude at avahi-daemon       
   base-files base-passwd bash bc bind9-host binutils bittorrent bluez-gnome bsdmainutils bsdutils bsh   
   bug-buddy busybox bzip2 ca-certificates capplets-data cdrdao console-common console-data console-tools
   coreutils cpio cpp cpp-4.1 cpufrequtils cron cupsys cupsys-bsd cupsys-client cupsys-common            
   cupsys-driver-gutenprint dbus dc debconf debconf-i18n debianutils defoma deskbar-applet desktop-base  
   desktop-file-utils dhcdbd dhcp3-client dhcp3-common dictionaries-common diff discover1 discover1-data 
   dmidecode dnsutils doc-debian doc-linux-text docbook-xml dpkg dpkg-dev dselect dvd+rw-tools e2fslibs  
   e2fsprogs ed eject ekiga eog epiphany-browser epiphany-extensions evince evolution evolution-common   
   evolution-data-server evolution-data-server-common evolution-exchange evolution-plugins               
   evolution-webcal exim4 exim4-base exim4-config exim4-daemon-light fast-user-switch-applet file        
   file-roller findutils finger fontconfig fontconfig-config foomatic-db foomatic-db-engine              
   foomatic-db-gutenprint foomatic-db-hpijs foomatic-filters foomatic-filters-ppds foomatic-gui ftp      
   gcalctool gcc-3.4-base gcc-4.1-base gconf-editor gconf2 gconf2-common gdb gdebi gdm gedit gedit-common
   genisoimage gettext-base gij gimp-data gksu gnome-about gnome-applets gnome-applets-data              
   gnome-backgrounds gnome-btdownload gnome-cards-data gnome-control-center gnome-core gnome-desktop-data
   gnome-desktop-environment gnome-doc-utils gnome-games gnome-games-data gnome-icon-theme gnome-keyring 
   gnome-keyring-manager gnome-media gnome-media-common gnome-menus gnome-mime-data                      
   gnome-netstatus-applet gnome-nettool gnome-panel gnome-panel-data gnome-power-manager                 
   gnome-screensaver gnome-session gnome-system-monitor gnome-system-tools gnome-terminal                
   gnome-terminal-data gnome-themes gnome-user-guide gnome-utils gnome-volume-manager gnomebaker gnupg   
   gparted gpgv grep groff-base grub gs-common gs-esp gsfonts gstreamer0.10-alsa gstreamer0.10-esd       
   gstreamer0.10-ffmpeg gstreamer0.10-gnomevfs gstreamer0.10-plugins-base gstreamer0.10-plugins-good     
   gstreamer0.10-plugins-ugly gtk2-engines gtk2-engines-pixbuf gtkhtml3.8 gucharmap guile-1.6-libs gzip  
   hal hibernate hicolor-icon-theme hostname hotkey-setup hpijs hpijs-ppds hplip hplip-data iamerican    
   ibritish icedax iceweasel iceweasel-gnome-support iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint
   info initramfs-tools initscripts installation-report iproute iptables iputils-arping iputils-ping     
   iso-codes ispell kde-i18n-fr kdelibs-data kdelibs4c2a klibc-utils klogd language-env laptop-detect    
   less liba52-0.7.4 libaa1 libacl1 libao2 libapm1 libart-2.0-2 libarts1c2a libartsc0 libasound2         
   libaspell15 libatk1.0-0 libatm1 libattr1 libaudio2 libaudiofile0 libauthen-pam-perl libavahi-client3  
   libavahi-common-data libavahi-common3 libavahi-glib1 libavahi-qt3-1 libblkid1 libbonobo2-0            
   libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i686 libcaca0             
   libcairo-perl libcairo2 libcdparanoia0 libcomerr2 libconsole libcpufreq0 libcroco3 libcucul0          
   libcupsimage2 libcupsys2 libcurl3 libdaemon0 libdb4.2 libdbus-1-3 libdbus-glib-1-2 libdmx1 libdrm2    
   libdv4 libdvdread3 libedata-book1.2-2 libedit2 libeel2-data libenchant1c2a libevent1 libexif12        
   libexpat1 libfam0 libfontconfig1 libfontenc1 libfreetype6 libfs6 libg2c0 libgail-common libgc1c2      
   libgcc1 libgcj-bc libgcj-common libgconf2-4 libgcrypt11 libgda2-3 libgda2-common libgdl-1-0           
   libgdl-1-common libgimp2.0 libgksu2-0 libgksuui1.0-1 libgl1-mesa-dri libgl1-mesa-glx libglade2-0      
   libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgnome-desktop-2 libgnome-keyring0        
   libgnome-media0 libgnome-menu2 libgnome-pilot2 libgnome-window-settings1 libgnome2-0                  
   libgnome2-canvas-perl libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0            
   libgnomecanvas2-common libgnomecups1.0-1 libgnomeprint2.2-0 libgnomeprint2.2-data libgnomeprintui2.2-0
   libgnomeprintui2.2-common libgnomeui-0 libgnomeui-common libgnomevfs2-0 libgnomevfs2-bin              
   libgnomevfs2-common libgnomevfs2-extra libgpg-error0 libgphoto2-2 libgphoto2-port0 libgsf-1-114       
   libgsf-1-common libgsm1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0   
   libgtk2.0-bin libgtk2.0-common libgtkhtml2-0 libgtkhtml3.8-15 libgtkmm-2.4-1c2a                       
   libgtksourceview-common libgtksourceview1.0-0 libgtkspell0 libgtop2-7 libgtop2-common libguile-ltdl-1 
   libgutenprint2 libgutenprintui2-1 libhal-storage1 libhal1 libhsqldb-java libice6 libidl0 libidn11     
   libieee1284-3 libio-pty-perl libjack0.100.0-0 libjaxp1.3-java libjline-java libjpeg62 libklibc        
   libkpathsea4 libkrb53 liblcms1 liblircclient0 liblocale-gettext-perl liblockfile1 liblua50 liblualib50
   libmad0 libmagic1 libmdbtools libmetacity0 libmodplug0c2 libmozjs0d libmpeg2-4 libmusicbrainz4c2a     
   libnautilus-extension1 libncurses5 libncursesw5 libnet-ssleay-perl libnewt0.52 libnfsidmap2           
   libnm-glib0 libnm-util0 libnotify1 libnspr4-0d libnss-mdns libogg0 liboil0.3 liborbit2 libosp5        
   libpam-modules libpam-runtime libpam0g libpanel-applet2-0 libpango1.0-0 libpango1.0-common libpaper1  
   libpcre3 libpisock9 libpng12-0 libpopt0 libportaudio0 libqt3-mt libqthreads-12 libraw1394-8           
   libreadline5 librpcsecgss3 librsvg2-2 librsvg2-common libsane libsasl2-2 libscrollkeeper0             
   libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsemanage1 libsensors3 libsepol1 libservlet2.3-java
   libsexy2 libshout3 libsidplay1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 libsmbclient libsndfile1   
   libsnmp-base libsoup2.2-8 libspeex1 libss2 libssl0.9.8 libstartup-notification0 libstdc++6 libsvga1   
   libsysfs2 libtag1c2a libtasn1-3 libtasn1-3-bin libtext-charwidth-perl libtext-iconv-perl              
   libtext-wrapi18n-perl libtheora0 libtiff4 libusb-0.1-4 libuuid1 libvisual-0.4-0 libvolume-id0         
   libvorbis0a libvorbisenc2 libvorbisfile3 libvte-common libwmf0.2-7 libwnck-common libwpd8c2a libwrap0 
   libx11-6 libx11-data libxalan2-java libxau6 libxaw7 libxcursor1 libxdamage1 libxdmcp6 libxerces2-java 
   libxext6 libxfixes3 libxfont1 libxft2 libxi6 libxine1 libxinerama1 libxkbfile1 libxml2 libxml2-utils  
   libxmu6 libxmuu1 libxp6 libxpm4 libxrandr2 libxrender1 libxres1 libxslt1.1 libxss1 libxt6 libxtrap6   
   libxtst6 libxul-common libxul0d libxv1 libxvmc1 libxxf86dga1 libxxf86misc1 libxxf86vm1 liferea
   liferea-xulrunner linux-image-2.6-686 linux-sound-base locales login logrotate lsb-base lsb-release
   lsof m4 mailx make makedev man-db manpages manpages-fr manpages-fr-dev manpages-fr-extra mawk mc menu
   menu-xdg metacity metacity-common mime-support mkisofs mktemp module-init-tools mount mpack mtools
   mtr-tiny mutt myspell-en-us myspell-fr-gut nano nautilus nautilus-cd-burner nautilus-data ncurses-base
   ncurses-bin ncurses-term net-tools netbase netcat network-manager network-manager-gnome nfs-common
   nfs-kernel-server notification-daemon ntp openbsd-inetd openoffice.org openoffice.org-base
   openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw
   openoffice.org-evolution openoffice.org-gcj openoffice.org-gnome openoffice.org-gtk
   openoffice.org-help-en-us openoffice.org-help-fr openoffice.org-impress openoffice.org-java-common
   openoffice.org-l10n-fr openoffice.org-math openoffice.org-thesaurus-en-us openoffice.org-writer
   openssh-blacklist openssh-client openssh-server openssl passwd patch pciutils perl perl-base
   perl-modules pidentd pmount policycoreutils poppler-utils portmap powermgmt-base printconf procps
   psmisc python python-apt python-cairo python-central python-foomatic python-glade2 python-gmenu
   python-gnome2 python-gnome2-desktop python-gnome2-extras python-gtk2 python-ipy python-libxml2
   python-minimal python-newt python-numeric python-pyorbit python-qt3 python-selinux python-semanage
   python-sip4 python-support python-uno python-vte python2.4 python2.4-minimal rdesktop readline-common
   reportbug rhythmbox scrollkeeper sed shared-mime-info sharutils sound-juicer strace sudo svgalibg1
   synaptic sysklogd system-tools-backends sysv-rc sysvinit sysvinit-utils tar tasksel tasksel-data tcpd
   telnet texinfo time totem totem-mozilla totem-xine traceroute tsclient ttf-dejavu ttf-opensymbol twm
   type-handling tzdata ucf udev unzip update-inetd update-manager update-notifier usbutils uswsusp
   util-linux vbetool vim-common vim-tiny vino w3m wamerican wfrench wget whiptail whois wodim
   wpasupplicant x11-common xbase-clients xdg-utils xfonts-100dpi xfonts-75dpi xfonts-base
   xfonts-encodings xfonts-utils xkb-data xml-core xorg xresprobe xsane xsane-common xserver-xorg
   xserver-xorg-core xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd
   xserver-xorg-input-mouse xserver-xorg-input-synaptics xserver-xorg-input-wacom xserver-xorg-video-all
   xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati xserver-xorg-video-chips
   xserver-xorg-video-cirrus xserver-xorg-video-cyrix xserver-xorg-video-dummy xserver-xorg-video-fbdev
   xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-i740 xserver-xorg-video-i810
   xserver-xorg-video-imstt xserver-xorg-video-mga xserver-xorg-video-neomagic xserver-xorg-video-nsc
   xserver-xorg-video-nv xserver-xorg-video-rendition xserver-xorg-video-s3 xserver-xorg-video-s3virge
   xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis
   xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident
   xserver-xorg-video-tseng xserver-xorg-video-v4l xserver-xorg-video-vesa xserver-xorg-video-vga
   xserver-xorg-video-via xserver-xorg-video-vmware xserver-xorg-video-voodoo xsltproc xterm
   xulrunner-gnome-support xutils xutils-dev yelp zenity zlib1g
 729 mis à jour, 294 nouvellement installés, 15 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 869Mo dans les archives.
 Après dépaquetage, 647Mo d'espace disque supplémentaires seront utilisés.
 Souhaitez-vous continuer [O/n] ?

En fonction de votre connexion ça peut prendre des plombes...
Un conseil, si vous n'êtes pas sur de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

 # apt-get -d upgrade

Puis

 # apt-get dist-upgrade

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut

[[Image:Capture150.jpeg]]

[[Image:Capture151.jpeg]]

[[Image:Capture153.jpeg]]

[[Image:Capture154.jpeg]]

[[Image:Capture156.jpeg]]

[[Image:Capture158.jpeg]]

[[Image:Capture159.jpeg]]

[[Image:Capture160.jpeg]]

[[Image:Capture161.jpeg]]

Sans le téléchargement des fichiers, comptez environ 50 minutes pour l'upgrade.

 # reboot

 $ uname -a
 Linux compta2 2.6.26-2-686 #1 SMP Thu Mar 11 23:19:46 UTC 2010 i686 GNU/Linux

A venir... Upgrade de Lenny à Squeeze !

----
--[[Utilisateur:Lol|Lol]] 9 avril 2010 à 13:55 (UTC)</text>
      <sha1>8qmibjy87zbuvy4ejykovi6tyoem340</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1389</id>
      <parentid>1381</parentid>
      <timestamp>2010-04-13T09:31:45Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="20301">{{sid}}

Comment passer de Etch à Lenny

Attention : Ce Document est basé sur l'upgrade d'une machine de bureau, pas d'un serveur !

Cette question n'est bien évidemment plus d'actualité, presque tout le monde est déjà sous Lenny.
Mais pour les retardataires, et en vue du passage de squeeze en stable, il faut se réveiller !

Je part du principe que vous n’avez pas installé de pilotes propriétaires pour vos cartes graphiques.
Le changement de noyau ferait planter votre serveur X.
Modifiez votre xorg.conf afin d'utiliser des pilotes Debian avant cet upgrade, a moins que vous ne les réinstalliez juste après.

Votre machine doit être à jour avant de vous lancer

 # aptitude upgrade

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition ou se trouve /var pour le stockage des paquets téléchargés.

Pour connaître l’espace libre de votre partition racine :

 $ df -h /
 Sys. de fich.         Tail. Occ. Disp. %Occ. Monté sur
 /dev/hda1              23G  2,6G   20G  12% /

Si vous disposez de plus de 50% d’espace libre vous pouvez passer au chapitre suivant. Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Modifiez votre sources.list et ajoutez Lenny (il suffit de copier coller les lignes avec Etch et de mettre Lenny à la place.)

 # nano /etc/apt/sources.list
 
 ###### Debian Main Repos
 deb http://ftp.fr.debian.org/debian/ etch main contrib non-free
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free 
 
 ###### Debian Security &amp; Update Repos
 deb http://security.debian.org/ etch/updates main contrib non-free
 deb http://ftp.fr.debian.org/debian/ etch-proposed-updates main contrib non-free
 deb http://security.debian.org/ lenny/updates main contrib non-free
 deb http://ftp.fr.debian.org/debian/ lenny-proposed-updates main contrib non-free
 
 #### Debian Backports
 deb http://www.backports.org/debian/ etch-backports main contrib
 deb http://www.backports.org/debian/ lenny-backports main contrib non-free
 
 #### Debian Multimedia
 deb http://www.debian-multimedia.org/ etch main contrib
 deb http://www.debian-multimedia.org/ lenny main contrib non-free

Maintenant faites un update pour mettre à jour la liste des paquets :

 # aptitude update

 Quelques erreurs risques d'arriver...

 W: GPG error: http://www.debian-multimedia.org

# Des problèmes de clés GPG [[Erreur_lors_d'un_update:_NO_PUBKEY]]
 # apt-get install debian-backports-keyring
 # apt-get install debian-multimedia-keyring

 E: Dynamic MMap ran out of room

# Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]]
 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaite l'update, il ne doit pas y avoir d'erreurs

 # aptitude update
 
  234ko téléchargés en 1m7s (3466o/s)
 Lecture des listes de paquets... Fait

IMPORTANT : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

Lancez l'upgrade

 # apt-get dist-upgrade                             
 Lecture des listes de paquets... Fait                       
 Construction de l'arbre des dépendances... Fait             
 Calcul de la mise à jour... Fait                            
 Les paquets suivants seront ENLEVÉS :                       
   dbus-1-utils gimp gimp-print gnome-themes-extras libdiscover1 libgssapi2 libnl1-pre6 libopal-2.2.0
   libpci2 libpt-plugins-alsa libpt-plugins-v4l libsasl2 libstlport4.6c2 libvte4                     
   xserver-xorg-video-newport                                                                        
 Les NOUVEAUX paquets suivants seront installés :                                                    
   bsd-mailx bsh-gcj cheese cpp-4.3 cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk
   cupsddk-drivers dbus-x11 discover discover-data djvulibre-desktop dmz-cursor-theme                   
   epiphany-browser-data epiphany-gecko fastjar freetds-common gcc-4.3-base gcj-4.3-base gdebi-core     
   ghostscript ghostscript-x gij-4.3 gnome-mount gnome-network-admin gnome-settings-daemon gnuchess     
   grub-common gstreamer0.10-tools gstreamer0.10-x gtkhtml3.14 guile-1.8-libs hal-info java-common      
   java-gcj-compat java-gcj-compat-headless libamrnb3 libamrwb3 libasyncns0 libavahi-compat-libdnssd1   
   libavahi-core5 libavahi-gobject0 libavahi-ui0 libavcodec51 libavformat52 libavutil49 libbcel-java    
   libbind9-40 libblas3gf libbluetooth2 libcairomm-1.0-1 libcamel1.2-11 libcap2 libcdio7 libct4 libcups2
   libcurl3-gnutls libcwidget3 libdatrie0 libdb4.5 libdb4.6 libdevmapper1.02.1 libdirac0                
   libdirectfb-1.0-0 libdirectfb-extra libdiscover2 libdjvulibre21 libdns45 libebook1.2-9 libecal1.2-7  
   libedata-cal1.2-6 libedataserver1.2-9 libedataserverui1.2-8 libeel2-2.20 libegroupwise1.2-13 libelfg0
   libepc-1.0-1 libepc-ui-1.0-1 libept0 libexchange-storage1.2-3 libexempi3 libfaac0 libfaad0 libffi5   
   libflac8 libfreebob0 libgail18 libgalago3 libgcj9-0 libgcj9-0-awt libgcj9-jar libgd2-noxpm libgda3-3 
   libgda3-common libgdata-google1.2-1 libgdata1.2-1 libgfortran3 libggz2 libggzcore9 libggzmod4        
   libgmp3c2 libgmyth0 libgnomekbd-common libgnomekbd2 libgnomekbdui2 libgnutls26 libgpgme11 libgpm2    
   libgpod3 libgraphviz4 libgs8 libgssglue1 libgtk-vnc-1.0-0 libgtkhtml3.14-19 libgtksourceview2.0-0    
   libgtksourceview2.0-common libgucharmap6 libgweather-common libgweather1 libhsqldb-java-gcj          
   libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libicu38      
   libilmbase6 libisc45 libisccc40 libisccfg40 libiw29 libjack0 libjasper1 libjaxp1.3-java-gcj          
   libkeyutils1 liblapack3gf libldap-2.4-2 liblog4j1.2-java libltdl3 liblua5.1-0 liblwres40 liblzo2-2   
   libmagick10 libmalaga7 libmozjs1d libmp3lame0 libmpcdec3 libmpfr1ldbl libmtp7 libmx4j-java           
   libmysqlclient15off libnautilus-burn4 libneon27 libnet-dbus-perl libnl1 libnss3-1d liboobs-1-4       
   libopal-2.2 libopenexr6 libparted1.8-10 libpci3 libpcsclite1 libperl5.10 libpisync1 libpixman-1-0    
   libpoppler-glib3 libpoppler3 libpostproc51 libpt-1.10.10 libpt-1.10.10-plugins-alsa                  
   libpt-1.10.10-plugins-v4l libpth20 libpulse0 librarian0 libregexp-java libsane-extras                
   libschroedinger-1.0-0 libservlet2.4-java libslab0 libsmbios2 libsnmp15 libsoup2.4-1 libspectre1      
   libspeexdsp1 libsplashy1 libsqlite3-0 libssh2-1 libstlport4.6ldbl libsuitesparse-3.1.0               
   libswfdec-0.6-90 libtalloc1 libthai-data libthai0 libtimedate-perl libtotem-plparser10               
   libtrackerclient0 libts-0.0-0 liburi-perl libustr-1.0-1 libvoikko1 libvte9 libwavpack1 libwbclient0 ome/gerard 
   libwnck22 libwpg-0.1-1 libwps-0.1-1 libwww-perl libx264-65 libx86-1 libxalan2-java-gcj libxapian15   
   libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xlib0 libxcb-xv0 libxcb1         
   libxcomposite1 libxerces2-java-gcj libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins
   libxine1-plugins libxine1-x libxklavier12 libxml-parser-perl libxml-twig-perl libxvidcore4            
   linux-image-2.6.26-2-686 lp-solve lzma mysql-common netcat-traditional openoffice.org-base-core       
   openoffice.org-filter-mobiledev openoffice.org-officebean openoffice.org-report-builder-bin           
   openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-writer2latex                 
   openprinting-ppds openssl-blacklist oss-compat pkg-config pm-utils python-dbus python-eggtrayicon     
   python-elementtree python-gdata python-gobject python-gtkhtml2 python-gtkmozembed                     
   python-gtksourceview2 python-imaging python-notify python-sepolgen python-software-properties         
   python2.5 python2.5-minimal seahorse software-properties-gtk ssl-cert swfdec-gnome totem-common       
   totem-gstreamer totem-plugins ttf-dejavu-core ttf-dejavu-extra ttf-liberation unattended-upgrades     
   update-manager-core update-notifier-common vinagre x11-apps x11-session-utils x11-utils x11-xfs-utils 
   x11-xkb-utils x11-xserver-utils xauth xinit xserver-xorg-video-intel xserver-xorg-video-mach64        
   xserver-xorg-video-openchrome xserver-xorg-video-r128 xserver-xorg-video-radeon                       
   xserver-xorg-video-radeonhd xulrunner-1.9 xulrunner-1.9-gnome-support                                 
 Les paquets suivants seront mis à jour :                                                                
   acpi acpid adduser alacarte alsa-base alsa-utils anacron apt apt-utils aptitude at avahi-daemon       
   base-files base-passwd bash bc bind9-host binutils bittorrent bluez-gnome bsdmainutils bsdutils bsh   
   bug-buddy busybox bzip2 ca-certificates capplets-data cdrdao console-common console-data console-tools
   coreutils cpio cpp cpp-4.1 cpufrequtils cron cupsys cupsys-bsd cupsys-client cupsys-common            
   cupsys-driver-gutenprint dbus dc debconf debconf-i18n debianutils defoma deskbar-applet desktop-base  
   desktop-file-utils dhcdbd dhcp3-client dhcp3-common dictionaries-common diff discover1 discover1-data 
   dmidecode dnsutils doc-debian doc-linux-text docbook-xml dpkg dpkg-dev dselect dvd+rw-tools e2fslibs  
   e2fsprogs ed eject ekiga eog epiphany-browser epiphany-extensions evince evolution evolution-common   
   evolution-data-server evolution-data-server-common evolution-exchange evolution-plugins               
   evolution-webcal exim4 exim4-base exim4-config exim4-daemon-light fast-user-switch-applet file        
   file-roller findutils finger fontconfig fontconfig-config foomatic-db foomatic-db-engine              
   foomatic-db-gutenprint foomatic-db-hpijs foomatic-filters foomatic-filters-ppds foomatic-gui ftp      
   gcalctool gcc-3.4-base gcc-4.1-base gconf-editor gconf2 gconf2-common gdb gdebi gdm gedit gedit-common
   genisoimage gettext-base gij gimp-data gksu gnome-about gnome-applets gnome-applets-data              
   gnome-backgrounds gnome-btdownload gnome-cards-data gnome-control-center gnome-core gnome-desktop-data
   gnome-desktop-environment gnome-doc-utils gnome-games gnome-games-data gnome-icon-theme gnome-keyring 
   gnome-keyring-manager gnome-media gnome-media-common gnome-menus gnome-mime-data                      
   gnome-netstatus-applet gnome-nettool gnome-panel gnome-panel-data gnome-power-manager                 
   gnome-screensaver gnome-session gnome-system-monitor gnome-system-tools gnome-terminal                
   gnome-terminal-data gnome-themes gnome-user-guide gnome-utils gnome-volume-manager gnomebaker gnupg   
   gparted gpgv grep groff-base grub gs-common gs-esp gsfonts gstreamer0.10-alsa gstreamer0.10-esd       
   gstreamer0.10-ffmpeg gstreamer0.10-gnomevfs gstreamer0.10-plugins-base gstreamer0.10-plugins-good     
   gstreamer0.10-plugins-ugly gtk2-engines gtk2-engines-pixbuf gtkhtml3.8 gucharmap guile-1.6-libs gzip  
   hal hibernate hicolor-icon-theme hostname hotkey-setup hpijs hpijs-ppds hplip hplip-data iamerican    
   ibritish icedax iceweasel iceweasel-gnome-support iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint
   info initramfs-tools initscripts installation-report iproute iptables iputils-arping iputils-ping     
   iso-codes ispell kde-i18n-fr kdelibs-data kdelibs4c2a klibc-utils klogd language-env laptop-detect    
   less liba52-0.7.4 libaa1 libacl1 libao2 libapm1 libart-2.0-2 libarts1c2a libartsc0 libasound2         
   libaspell15 libatk1.0-0 libatm1 libattr1 libaudio2 libaudiofile0 libauthen-pam-perl libavahi-client3  
   libavahi-common-data libavahi-common3 libavahi-glib1 libavahi-qt3-1 libblkid1 libbonobo2-0            
   libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i686 libcaca0             
   libcairo-perl libcairo2 libcdparanoia0 libcomerr2 libconsole libcpufreq0 libcroco3 libcucul0          
   libcupsimage2 libcupsys2 libcurl3 libdaemon0 libdb4.2 libdbus-1-3 libdbus-glib-1-2 libdmx1 libdrm2    
   libdv4 libdvdread3 libedata-book1.2-2 libedit2 libeel2-data libenchant1c2a libevent1 libexif12        
   libexpat1 libfam0 libfontconfig1 libfontenc1 libfreetype6 libfs6 libg2c0 libgail-common libgc1c2      
   libgcc1 libgcj-bc libgcj-common libgconf2-4 libgcrypt11 libgda2-3 libgda2-common libgdl-1-0           
   libgdl-1-common libgimp2.0 libgksu2-0 libgksuui1.0-1 libgl1-mesa-dri libgl1-mesa-glx libglade2-0      
   libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgnome-desktop-2 libgnome-keyring0        
   libgnome-media0 libgnome-menu2 libgnome-pilot2 libgnome-window-settings1 libgnome2-0                  
   libgnome2-canvas-perl libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0            
   libgnomecanvas2-common libgnomecups1.0-1 libgnomeprint2.2-0 libgnomeprint2.2-data libgnomeprintui2.2-0
   libgnomeprintui2.2-common libgnomeui-0 libgnomeui-common libgnomevfs2-0 libgnomevfs2-bin              
   libgnomevfs2-common libgnomevfs2-extra libgpg-error0 libgphoto2-2 libgphoto2-port0 libgsf-1-114       
   libgsf-1-common libgsm1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0   
   libgtk2.0-bin libgtk2.0-common libgtkhtml2-0 libgtkhtml3.8-15 libgtkmm-2.4-1c2a                       
   libgtksourceview-common libgtksourceview1.0-0 libgtkspell0 libgtop2-7 libgtop2-common libguile-ltdl-1 
   libgutenprint2 libgutenprintui2-1 libhal-storage1 libhal1 libhsqldb-java libice6 libidl0 libidn11     
   libieee1284-3 libio-pty-perl libjack0.100.0-0 libjaxp1.3-java libjline-java libjpeg62 libklibc        
   libkpathsea4 libkrb53 liblcms1 liblircclient0 liblocale-gettext-perl liblockfile1 liblua50 liblualib50
   libmad0 libmagic1 libmdbtools libmetacity0 libmodplug0c2 libmozjs0d libmpeg2-4 libmusicbrainz4c2a     
   libnautilus-extension1 libncurses5 libncursesw5 libnet-ssleay-perl libnewt0.52 libnfsidmap2           
   libnm-glib0 libnm-util0 libnotify1 libnspr4-0d libnss-mdns libogg0 liboil0.3 liborbit2 libosp5        
   libpam-modules libpam-runtime libpam0g libpanel-applet2-0 libpango1.0-0 libpango1.0-common libpaper1  
   libpcre3 libpisock9 libpng12-0 libpopt0 libportaudio0 libqt3-mt libqthreads-12 libraw1394-8       ome/gerard    
   libreadline5 librpcsecgss3 librsvg2-2 librsvg2-common libsane libsasl2-2 libscrollkeeper0             
   libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsemanage1 libsensors3 libsepol1 libservlet2.3-java
   libsexy2 libshout3 libsidplay1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 libsmbclient libsndfile1   
   libsnmp-base libsoup2.2-8 libspeex1 libss2 libssl0.9.8 libstartup-notification0 libstdc++6 libsvga1   
   libsysfs2 libtag1c2a libtasn1-3 libtasn1-3-bin libtext-charwidth-perl libtext-iconv-perl              
   libtext-wrapi18n-perl libtheora0 libtiff4 libusb-0.1-4 libuuid1 libvisual-0.4-0 libvolume-id0         
   libvorbis0a libvorbisenc2 libvorbisfile3 libvte-common libwmf0.2-7 libwnck-common libwpd8c2a libwrap0 
   libx11-6 libx11-data libxalan2-java libxau6 libxaw7 libxcursor1 libxdamage1 libxdmcp6 libxerces2-java 
   libxext6 libxfixes3 libxfont1 libxft2 libxi6 libxine1 libxinerama1 libxkbfile1 libxml2 libxml2-utils  
   libxmu6 libxmuu1 libxp6 libxpm4 libxrandr2 libxrender1 libxres1 libxslt1.1 libxss1 libxt6 libxtrap6   
   libxtst6 libxul-common libxul0d libxv1 libxvmc1 libxxf86dga1 libxxf86misc1 libxxf86vm1 liferea
   liferea-xulrunner linux-image-2.6-686 linux-sound-base locales login logrotate lsb-base lsb-release
   lsof m4 mailx make makedev man-db manpages manpages-fr manpages-fr-dev manpages-fr-extra mawk mc menu
   menu-xdg metacity metacity-common mime-support mkisofs mktemp module-init-tools mount mpack mtools
   mtr-tiny mutt myspell-en-us myspell-fr-gut nano nautilus nautilus-cd-burner nautilus-data ncurses-base
   ncurses-bin ncurses-term net-tools netbase netcat network-manager network-manager-gnome nfs-common
   nfs-kernel-server notification-daemon ntp openbsd-inetd openoffice.org openoffice.org-base
   openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw
   openoffice.org-evolution openoffice.org-gcj openoffice.org-gnome openoffice.org-gtk
   openoffice.org-help-en-us openoffice.org-help-fr openoffice.org-impress openoffice.org-java-common
   openoffice.org-l10n-fr openoffice.org-math openoffice.org-thesaurus-en-us openoffice.org-writer
   openssh-blacklist openssh-client openssh-server openssl passwd patch pciutils perl perl-base
   perl-modules pidentd pmount policycoreutils poppler-utils portmap powermgmt-base printconf procps
   psmisc python python-apt python-cairo python-central python-foomatic python-glade2 python-gmenu
   python-gnome2 python-gnome2-desktop python-gnome2-extras python-gtk2 python-ipy python-libxml2
   python-minimal python-newt python-numeric python-pyorbit python-qt3 python-selinux python-semanage
   python-sip4 python-support python-uno python-vte python2.4 python2.4-minimal rdesktop readline-common
   reportbug rhythmbox scrollkeeper sed shared-mime-info sharutils sound-juicer strace sudo svgalibg1
   synaptic sysklogd system-tools-backends sysv-rc sysvinit sysvinit-utils tar tasksel tasksel-data tcpd
   telnet texinfo time totem totem-mozilla totem-xine traceroute tsclient ttf-dejavu ttf-opensymbol twm
   type-handling tzdata ucf udev unzip update-inetd update-manager update-notifier usbutils uswsusp
   util-linux vbetool vim-common vim-tiny vino w3m wamerican wfrench wget whiptail whois wodim
   wpasupplicant x11-common xbase-clients xdg-utils xfonts-100dpi xfonts-75dpi xfonts-baseome/gerard
   xfonts-encodings xfonts-utils xkb-data xml-core xorg xresprobe xsane xsane-common xserver-xorg
   xserver-xorg-core xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd
   xserver-xorg-input-mouse xserver-xorg-input-synaptics xserver-xorg-input-wacom xserver-xorg-video-all
   xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati xserver-xorg-video-chips
   xserver-xorg-video-cirrus xserver-xorg-video-cyrix xserver-xorg-video-dummy xserver-xorg-video-fbdev
   xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-i740 xserver-xorg-video-i810
   xserver-xorg-video-imstt xserver-xorg-video-mga xserver-xorg-video-neomagic xserver-xorg-video-nsc
   xserver-xorg-video-nv xserver-xorg-video-rendition xserver-xorg-video-s3 xserver-xorg-video-s3virge
   xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis
   xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident
   xserver-xorg-video-tseng xserver-xorg-video-v4l xserver-xorg-video-vesa xserver-xorg-video-vga
   xserver-xorg-video-via xserver-xorg-video-vmware xserver-xorg-video-voodoo xsltproc xterm
   xulrunner-gnome-support xutils xutils-dev yelp zenity zlib1g
 729 mis à jour, 294 nouvellement installés, 15 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 869Mo dans les archives.
 Après dépaquetage, 647Mo d'espace disque supplémentaires seront utilisés.
 Souhaitez-vous continuer [O/n] ?

En fonction de votre connexion ça peut prendre des plombes...
Un conseil, si vous n'êtes pas sûr de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

 # apt-get -d upgrade

Puis

 # apt-get dist-upgrade

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut

[[Image:Capture150.jpeg]]

[[Image:Capture151.jpeg]]

[[Image:Capture153.jpeg]]

[[Image:Capture154.jpeg]]

[[Image:Capture156.jpeg]]

[[Image:Capture158.jpeg]]

[[Image:Capture159.jpeg]]

[[Image:Capture160.jpeg]]

[[Image:Capture161.jpeg]]

Sans le téléchargement des fichiers, comptez environ 50 minutes pour l'upgrade.

 # reboot

 $ uname -a
 Linux compta2 2.6.26-2-686 #1 SMP Thu Mar 11 23:19:46 UTC 2010 i686 GNU/Linux

A venir... Upgrade de Lenny à Squeeze !

----
--[[Utilisateur:Lol|Lol]] 9 avril 2010 à 13:55 (UTC)</text>
      <sha1>r6h64bfo3uqyxwuvw6fjwscvqpaqj8k</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1393</id>
      <parentid>1389</parentid>
      <timestamp>2010-04-13T16:46:35Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="20291">{{sid}}

Comment passer de Etch à Lenny

Attention : Ce Document est basé sur l'upgrade d'une machine de bureau, pas d'un serveur !

Cette question n'est bien évidemment plus d'actualité, presque tout le monde est déjà sous Lenny.
Mais pour les retardataires, et en vue du passage de squeeze en stable, il faut se réveiller !

Je part du principe que vous n’avez pas installé de pilotes propriétaires pour vos cartes graphiques.
Le changement de noyau ferait planter votre serveur X.
Modifiez votre xorg.conf afin d'utiliser des pilotes Debian avant cet upgrade, a moins que vous ne les réinstalliez juste après.

Votre machine doit être à jour avant de vous lancer

 # aptitude upgrade

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition ou se trouve /var pour le stockage des paquets téléchargés.

Pour connaître l’espace libre de votre partition racine :

 $ df -h /
 Sys. de fich.         Tail. Occ. Disp. %Occ. Monté sur
 /dev/hda1              23G  2,6G   20G  12% /

Si vous disposez de plus de 50% d’espace libre vous pouvez passer au chapitre suivant. Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Modifiez votre sources.list et ajoutez Lenny (il suffit de copier coller les lignes avec Etch et de mettre Lenny à la place.)

 # nano /etc/apt/sources.list
 
 ###### Debian Main Repos
 deb http://ftp.fr.debian.org/debian/ etch main contrib non-free
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free 
 
 ###### Debian Security &amp; Update Repos
 deb http://security.debian.org/ etch/updates main contrib non-free
 deb http://ftp.fr.debian.org/debian/ etch-proposed-updates main contrib non-free
 deb http://security.debian.org/ lenny/updates main contrib non-free
 deb http://ftp.fr.debian.org/debian/ lenny-proposed-updates main contrib non-free
 
 #### Debian Backports
 deb http://www.backports.org/debian/ etch-backports main contrib
 deb http://www.backports.org/debian/ lenny-backports main contrib non-free
 
 #### Debian Multimedia
 deb http://www.debian-multimedia.org/ etch main contrib
 deb http://www.debian-multimedia.org/ lenny main contrib non-free

Maintenant faites un update pour mettre à jour la liste des paquets :

 # aptitude update

 Quelques erreurs risques d'arriver...

 W: GPG error: http://www.debian-multimedia.org

# Des problèmes de clés GPG [[Erreur_lors_d'un_update:_NO_PUBKEY]]
 # apt-get install debian-backports-keyring
 # apt-get install debian-multimedia-keyring

 E: Dynamic MMap ran out of room

# Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]]
 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaite l'update, il ne doit pas y avoir d'erreurs

 # aptitude update
 
  234ko téléchargés en 1m7s (3466o/s)
 Lecture des listes de paquets... Fait

IMPORTANT : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

Lancez l'upgrade

 # apt-get dist-upgrade                             
 Lecture des listes de paquets... Fait                       
 Construction de l'arbre des dépendances... Fait             
 Calcul de la mise à jour... Fait                            
 Les paquets suivants seront ENLEVÉS :                       
   dbus-1-utils gimp gimp-print gnome-themes-extras libdiscover1 libgssapi2 libnl1-pre6 libopal-2.2.0
   libpci2 libpt-plugins-alsa libpt-plugins-v4l libsasl2 libstlport4.6c2 libvte4                     
   xserver-xorg-video-newport                                                                        
 Les NOUVEAUX paquets suivants seront installés :                                                    
   bsd-mailx bsh-gcj cheese cpp-4.3 cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk
   cupsddk-drivers dbus-x11 discover discover-data djvulibre-desktop dmz-cursor-theme                   
   epiphany-browser-data epiphany-gecko fastjar freetds-common gcc-4.3-base gcj-4.3-base gdebi-core     
   ghostscript ghostscript-x gij-4.3 gnome-mount gnome-network-admin gnome-settings-daemon gnuchess     
   grub-common gstreamer0.10-tools gstreamer0.10-x gtkhtml3.14 guile-1.8-libs hal-info java-common      
   java-gcj-compat java-gcj-compat-headless libamrnb3 libamrwb3 libasyncns0 libavahi-compat-libdnssd1   
   libavahi-core5 libavahi-gobject0 libavahi-ui0 libavcodec51 libavformat52 libavutil49 libbcel-java    
   libbind9-40 libblas3gf libbluetooth2 libcairomm-1.0-1 libcamel1.2-11 libcap2 libcdio7 libct4 libcups2
   libcurl3-gnutls libcwidget3 libdatrie0 libdb4.5 libdb4.6 libdevmapper1.02.1 libdirac0                
   libdirectfb-1.0-0 libdirectfb-extra libdiscover2 libdjvulibre21 libdns45 libebook1.2-9 libecal1.2-7  
   libedata-cal1.2-6 libedataserver1.2-9 libedataserverui1.2-8 libeel2-2.20 libegroupwise1.2-13 libelfg0
   libepc-1.0-1 libepc-ui-1.0-1 libept0 libexchange-storage1.2-3 libexempi3 libfaac0 libfaad0 libffi5   
   libflac8 libfreebob0 libgail18 libgalago3 libgcj9-0 libgcj9-0-awt libgcj9-jar libgd2-noxpm libgda3-3 
   libgda3-common libgdata-google1.2-1 libgdata1.2-1 libgfortran3 libggz2 libggzcore9 libggzmod4        
   libgmp3c2 libgmyth0 libgnomekbd-common libgnomekbd2 libgnomekbdui2 libgnutls26 libgpgme11 libgpm2    
   libgpod3 libgraphviz4 libgs8 libgssglue1 libgtk-vnc-1.0-0 libgtkhtml3.14-19 libgtksourceview2.0-0    
   libgtksourceview2.0-common libgucharmap6 libgweather-common libgweather1 libhsqldb-java-gcj          
   libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libicu38      
   libilmbase6 libisc45 libisccc40 libisccfg40 libiw29 libjack0 libjasper1 libjaxp1.3-java-gcj          
   libkeyutils1 liblapack3gf libldap-2.4-2 liblog4j1.2-java libltdl3 liblua5.1-0 liblwres40 liblzo2-2   
   libmagick10 libmalaga7 libmozjs1d libmp3lame0 libmpcdec3 libmpfr1ldbl libmtp7 libmx4j-java           
   libmysqlclient15off libnautilus-burn4 libneon27 libnet-dbus-perl libnl1 libnss3-1d liboobs-1-4       
   libopal-2.2 libopenexr6 libparted1.8-10 libpci3 libpcsclite1 libperl5.10 libpisync1 libpixman-1-0    
   libpoppler-glib3 libpoppler3 libpostproc51 libpt-1.10.10 libpt-1.10.10-plugins-alsa                  
   libpt-1.10.10-plugins-v4l libpth20 libpulse0 librarian0 libregexp-java libsane-extras                
   libschroedinger-1.0-0 libservlet2.4-java libslab0 libsmbios2 libsnmp15 libsoup2.4-1 libspectre1      
   libspeexdsp1 libsplashy1 libsqlite3-0 libssh2-1 libstlport4.6ldbl libsuitesparse-3.1.0               
   libswfdec-0.6-90 libtalloc1 libthai-data libthai0 libtimedate-perl libtotem-plparser10               
   libtrackerclient0 libts-0.0-0 liburi-perl libustr-1.0-1 libvoikko1 libvte9 libwavpack1 libwbclient0  
   libwnck22 libwpg-0.1-1 libwps-0.1-1 libwww-perl libx264-65 libx86-1 libxalan2-java-gcj libxapian15   
   libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xlib0 libxcb-xv0 libxcb1         
   libxcomposite1 libxerces2-java-gcj libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins
   libxine1-plugins libxine1-x libxklavier12 libxml-parser-perl libxml-twig-perl libxvidcore4            
   linux-image-2.6.26-2-686 lp-solve lzma mysql-common netcat-traditional openoffice.org-base-core       
   openoffice.org-filter-mobiledev openoffice.org-officebean openoffice.org-report-builder-bin           
   openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-writer2latex                 
   openprinting-ppds openssl-blacklist oss-compat pkg-config pm-utils python-dbus python-eggtrayicon     
   python-elementtree python-gdata python-gobject python-gtkhtml2 python-gtkmozembed                     
   python-gtksourceview2 python-imaging python-notify python-sepolgen python-software-properties         
   python2.5 python2.5-minimal seahorse software-properties-gtk ssl-cert swfdec-gnome totem-common       
   totem-gstreamer totem-plugins ttf-dejavu-core ttf-dejavu-extra ttf-liberation unattended-upgrades     
   update-manager-core update-notifier-common vinagre x11-apps x11-session-utils x11-utils x11-xfs-utils 
   x11-xkb-utils x11-xserver-utils xauth xinit xserver-xorg-video-intel xserver-xorg-video-mach64        
   xserver-xorg-video-openchrome xserver-xorg-video-r128 xserver-xorg-video-radeon                       
   xserver-xorg-video-radeonhd xulrunner-1.9 xulrunner-1.9-gnome-support                                 
 Les paquets suivants seront mis à jour :                                                                
   acpi acpid adduser alacarte alsa-base alsa-utils anacron apt apt-utils aptitude at avahi-daemon       
   base-files base-passwd bash bc bind9-host binutils bittorrent bluez-gnome bsdmainutils bsdutils bsh   
   bug-buddy busybox bzip2 ca-certificates capplets-data cdrdao console-common console-data console-tools
   coreutils cpio cpp cpp-4.1 cpufrequtils cron cupsys cupsys-bsd cupsys-client cupsys-common            
   cupsys-driver-gutenprint dbus dc debconf debconf-i18n debianutils defoma deskbar-applet desktop-base  
   desktop-file-utils dhcdbd dhcp3-client dhcp3-common dictionaries-common diff discover1 discover1-data 
   dmidecode dnsutils doc-debian doc-linux-text docbook-xml dpkg dpkg-dev dselect dvd+rw-tools e2fslibs  
   e2fsprogs ed eject ekiga eog epiphany-browser epiphany-extensions evince evolution evolution-common   
   evolution-data-server evolution-data-server-common evolution-exchange evolution-plugins               
   evolution-webcal exim4 exim4-base exim4-config exim4-daemon-light fast-user-switch-applet file        
   file-roller findutils finger fontconfig fontconfig-config foomatic-db foomatic-db-engine              
   foomatic-db-gutenprint foomatic-db-hpijs foomatic-filters foomatic-filters-ppds foomatic-gui ftp      
   gcalctool gcc-3.4-base gcc-4.1-base gconf-editor gconf2 gconf2-common gdb gdebi gdm gedit gedit-common
   genisoimage gettext-base gij gimp-data gksu gnome-about gnome-applets gnome-applets-data              
   gnome-backgrounds gnome-btdownload gnome-cards-data gnome-control-center gnome-core gnome-desktop-data
   gnome-desktop-environment gnome-doc-utils gnome-games gnome-games-data gnome-icon-theme gnome-keyring 
   gnome-keyring-manager gnome-media gnome-media-common gnome-menus gnome-mime-data                      
   gnome-netstatus-applet gnome-nettool gnome-panel gnome-panel-data gnome-power-manager                 
   gnome-screensaver gnome-session gnome-system-monitor gnome-system-tools gnome-terminal                
   gnome-terminal-data gnome-themes gnome-user-guide gnome-utils gnome-volume-manager gnomebaker gnupg   
   gparted gpgv grep groff-base grub gs-common gs-esp gsfonts gstreamer0.10-alsa gstreamer0.10-esd       
   gstreamer0.10-ffmpeg gstreamer0.10-gnomevfs gstreamer0.10-plugins-base gstreamer0.10-plugins-good     
   gstreamer0.10-plugins-ugly gtk2-engines gtk2-engines-pixbuf gtkhtml3.8 gucharmap guile-1.6-libs gzip  
   hal hibernate hicolor-icon-theme hostname hotkey-setup hpijs hpijs-ppds hplip hplip-data iamerican    
   ibritish icedax iceweasel iceweasel-gnome-support iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint
   info initramfs-tools initscripts installation-report iproute iptables iputils-arping iputils-ping     
   iso-codes ispell kde-i18n-fr kdelibs-data kdelibs4c2a klibc-utils klogd language-env laptop-detect    
   less liba52-0.7.4 libaa1 libacl1 libao2 libapm1 libart-2.0-2 libarts1c2a libartsc0 libasound2         
   libaspell15 libatk1.0-0 libatm1 libattr1 libaudio2 libaudiofile0 libauthen-pam-perl libavahi-client3  
   libavahi-common-data libavahi-common3 libavahi-glib1 libavahi-qt3-1 libblkid1 libbonobo2-0            
   libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i686 libcaca0             
   libcairo-perl libcairo2 libcdparanoia0 libcomerr2 libconsole libcpufreq0 libcroco3 libcucul0          
   libcupsimage2 libcupsys2 libcurl3 libdaemon0 libdb4.2 libdbus-1-3 libdbus-glib-1-2 libdmx1 libdrm2    
   libdv4 libdvdread3 libedata-book1.2-2 libedit2 libeel2-data libenchant1c2a libevent1 libexif12        
   libexpat1 libfam0 libfontconfig1 libfontenc1 libfreetype6 libfs6 libg2c0 libgail-common libgc1c2      
   libgcc1 libgcj-bc libgcj-common libgconf2-4 libgcrypt11 libgda2-3 libgda2-common libgdl-1-0           
   libgdl-1-common libgimp2.0 libgksu2-0 libgksuui1.0-1 libgl1-mesa-dri libgl1-mesa-glx libglade2-0      
   libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgnome-desktop-2 libgnome-keyring0        
   libgnome-media0 libgnome-menu2 libgnome-pilot2 libgnome-window-settings1 libgnome2-0                  
   libgnome2-canvas-perl libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0            
   libgnomecanvas2-common libgnomecups1.0-1 libgnomeprint2.2-0 libgnomeprint2.2-data libgnomeprintui2.2-0
   libgnomeprintui2.2-common libgnomeui-0 libgnomeui-common libgnomevfs2-0 libgnomevfs2-bin              
   libgnomevfs2-common libgnomevfs2-extra libgpg-error0 libgphoto2-2 libgphoto2-port0 libgsf-1-114       
   libgsf-1-common libgsm1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0   
   libgtk2.0-bin libgtk2.0-common libgtkhtml2-0 libgtkhtml3.8-15 libgtkmm-2.4-1c2a                       
   libgtksourceview-common libgtksourceview1.0-0 libgtkspell0 libgtop2-7 libgtop2-common libguile-ltdl-1 
   libgutenprint2 libgutenprintui2-1 libhal-storage1 libhal1 libhsqldb-java libice6 libidl0 libidn11     
   libieee1284-3 libio-pty-perl libjack0.100.0-0 libjaxp1.3-java libjline-java libjpeg62 libklibc        
   libkpathsea4 libkrb53 liblcms1 liblircclient0 liblocale-gettext-perl liblockfile1 liblua50 liblualib50
   libmad0 libmagic1 libmdbtools libmetacity0 libmodplug0c2 libmozjs0d libmpeg2-4 libmusicbrainz4c2a     
   libnautilus-extension1 libncurses5 libncursesw5 libnet-ssleay-perl libnewt0.52 libnfsidmap2           
   libnm-glib0 libnm-util0 libnotify1 libnspr4-0d libnss-mdns libogg0 liboil0.3 liborbit2 libosp5        
   libpam-modules libpam-runtime libpam0g libpanel-applet2-0 libpango1.0-0 libpango1.0-common libpaper1  
   libpcre3 libpisock9 libpng12-0 libpopt0 libportaudio0 libqt3-mt libqthreads-12 libraw1394-8       ome/gerard    
   libreadline5 librpcsecgss3 librsvg2-2 librsvg2-common libsane libsasl2-2 libscrollkeeper0             
   libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsemanage1 libsensors3 libsepol1 libservlet2.3-java
   libsexy2 libshout3 libsidplay1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 libsmbclient libsndfile1   
   libsnmp-base libsoup2.2-8 libspeex1 libss2 libssl0.9.8 libstartup-notification0 libstdc++6 libsvga1   
   libsysfs2 libtag1c2a libtasn1-3 libtasn1-3-bin libtext-charwidth-perl libtext-iconv-perl              
   libtext-wrapi18n-perl libtheora0 libtiff4 libusb-0.1-4 libuuid1 libvisual-0.4-0 libvolume-id0         
   libvorbis0a libvorbisenc2 libvorbisfile3 libvte-common libwmf0.2-7 libwnck-common libwpd8c2a libwrap0 
   libx11-6 libx11-data libxalan2-java libxau6 libxaw7 libxcursor1 libxdamage1 libxdmcp6 libxerces2-java 
   libxext6 libxfixes3 libxfont1 libxft2 libxi6 libxine1 libxinerama1 libxkbfile1 libxml2 libxml2-utils  
   libxmu6 libxmuu1 libxp6 libxpm4 libxrandr2 libxrender1 libxres1 libxslt1.1 libxss1 libxt6 libxtrap6   
   libxtst6 libxul-common libxul0d libxv1 libxvmc1 libxxf86dga1 libxxf86misc1 libxxf86vm1 liferea
   liferea-xulrunner linux-image-2.6-686 linux-sound-base locales login logrotate lsb-base lsb-release
   lsof m4 mailx make makedev man-db manpages manpages-fr manpages-fr-dev manpages-fr-extra mawk mc menu
   menu-xdg metacity metacity-common mime-support mkisofs mktemp module-init-tools mount mpack mtools
   mtr-tiny mutt myspell-en-us myspell-fr-gut nano nautilus nautilus-cd-burner nautilus-data ncurses-base
   ncurses-bin ncurses-term net-tools netbase netcat network-manager network-manager-gnome nfs-common
   nfs-kernel-server notification-daemon ntp openbsd-inetd openoffice.org openoffice.org-base
   openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw
   openoffice.org-evolution openoffice.org-gcj openoffice.org-gnome openoffice.org-gtk
   openoffice.org-help-en-us openoffice.org-help-fr openoffice.org-impress openoffice.org-java-common
   openoffice.org-l10n-fr openoffice.org-math openoffice.org-thesaurus-en-us openoffice.org-writer
   openssh-blacklist openssh-client openssh-server openssl passwd patch pciutils perl perl-base
   perl-modules pidentd pmount policycoreutils poppler-utils portmap powermgmt-base printconf procps
   psmisc python python-apt python-cairo python-central python-foomatic python-glade2 python-gmenu
   python-gnome2 python-gnome2-desktop python-gnome2-extras python-gtk2 python-ipy python-libxml2
   python-minimal python-newt python-numeric python-pyorbit python-qt3 python-selinux python-semanage
   python-sip4 python-support python-uno python-vte python2.4 python2.4-minimal rdesktop readline-common
   reportbug rhythmbox scrollkeeper sed shared-mime-info sharutils sound-juicer strace sudo svgalibg1
   synaptic sysklogd system-tools-backends sysv-rc sysvinit sysvinit-utils tar tasksel tasksel-data tcpd
   telnet texinfo time totem totem-mozilla totem-xine traceroute tsclient ttf-dejavu ttf-opensymbol twm
   type-handling tzdata ucf udev unzip update-inetd update-manager update-notifier usbutils uswsusp
   util-linux vbetool vim-common vim-tiny vino w3m wamerican wfrench wget whiptail whois wodim
   wpasupplicant x11-common xbase-clients xdg-utils xfonts-100dpi xfonts-75dpi xfonts-baseome/gerard
   xfonts-encodings xfonts-utils xkb-data xml-core xorg xresprobe xsane xsane-common xserver-xorg
   xserver-xorg-core xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd
   xserver-xorg-input-mouse xserver-xorg-input-synaptics xserver-xorg-input-wacom xserver-xorg-video-all
   xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati xserver-xorg-video-chips
   xserver-xorg-video-cirrus xserver-xorg-video-cyrix xserver-xorg-video-dummy xserver-xorg-video-fbdev
   xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-i740 xserver-xorg-video-i810
   xserver-xorg-video-imstt xserver-xorg-video-mga xserver-xorg-video-neomagic xserver-xorg-video-nsc
   xserver-xorg-video-nv xserver-xorg-video-rendition xserver-xorg-video-s3 xserver-xorg-video-s3virge
   xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis
   xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident
   xserver-xorg-video-tseng xserver-xorg-video-v4l xserver-xorg-video-vesa xserver-xorg-video-vga
   xserver-xorg-video-via xserver-xorg-video-vmware xserver-xorg-video-voodoo xsltproc xterm
   xulrunner-gnome-support xutils xutils-dev yelp zenity zlib1g
 729 mis à jour, 294 nouvellement installés, 15 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 869Mo dans les archives.
 Après dépaquetage, 647Mo d'espace disque supplémentaires seront utilisés.
 Souhaitez-vous continuer [O/n] ?

En fonction de votre connexion ça peut prendre des plombes...
Un conseil, si vous n'êtes pas sûr de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

 # apt-get -d upgrade

Puis

 # apt-get dist-upgrade

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut

[[Image:Capture150.jpeg]]

[[Image:Capture151.jpeg]]

[[Image:Capture153.jpeg]]

[[Image:Capture154.jpeg]]

[[Image:Capture156.jpeg]]

[[Image:Capture158.jpeg]]

[[Image:Capture159.jpeg]]

[[Image:Capture160.jpeg]]

[[Image:Capture161.jpeg]]

Sans le téléchargement des fichiers, comptez environ 50 minutes pour l'upgrade.

 # reboot

 $ uname -a
 Linux compta2 2.6.26-2-686 #1 SMP Thu Mar 11 23:19:46 UTC 2010 i686 GNU/Linux

A venir... Upgrade de Lenny à Squeeze !

----
--[[Utilisateur:Lol|Lol]] 9 avril 2010 à 13:55 (UTC)</text>
      <sha1>nqs7rb0edw7xb1qz6qm1d049ph6pb8h</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1394</id>
      <parentid>1393</parentid>
      <timestamp>2010-04-13T19:02:30Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="20262">{{sid}}

Comment passer de Etch à Lenny

Attention : Ce Document est basé sur l'upgrade d'une machine de bureau, pas d'un serveur !

Cette question n'est bien évidemment plus d'actualité, presque tout le monde est déjà sous Lenny.
Mais pour les retardataires, et en vue du passage de squeeze en stable, il faut se réveiller !

Je part du principe que vous n’avez pas installé de pilotes propriétaires pour vos cartes graphiques.
Le changement de noyau ferait planter votre serveur X.
Modifiez votre xorg.conf afin d'utiliser des pilotes Debian avant cet upgrade, a moins que vous ne les réinstalliez juste après.

Votre machine doit être à jour avant de vous lancer

 # aptitude upgrade

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition ou se trouve /var pour le stockage des paquets téléchargés.

Pour connaître l’espace libre de votre partition racine :

 $ df -h /
 Sys. de fich.         Tail. Occ. Disp. %Occ. Monté sur
 /dev/hda1              23G  2,6G   20G  12% /

Si vous disposez de plus de 50% d’espace libre vous pouvez passer au chapitre suivant. Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Modifiez votre sources.list et ajoutez Lenny (il suffit de copier coller les lignes avec Etch et de mettre Lenny à la place.)

 # nano /etc/apt/sources.list
 
 ###### Debian Main Repos
 deb http://ftp.fr.debian.org/debian/ etch main contrib non-free
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free 
 
 ###### Debian Security &amp; Update Repos
 deb http://security.debian.org/ etch/updates main contrib non-free
 deb http://ftp.fr.debian.org/debian/ etch-proposed-updates main contrib non-free
 deb http://security.debian.org/ lenny/updates main contrib non-free
 deb http://ftp.fr.debian.org/debian/ lenny-proposed-updates main contrib non-free
 
 #### Debian Backports
 deb http://www.backports.org/debian/ etch-backports main contrib
 deb http://www.backports.org/debian/ lenny-backports main contrib non-free
 
 #### Debian Multimedia
 deb http://www.debian-multimedia.org/ etch main contrib
 deb http://www.debian-multimedia.org/ lenny main contrib non-free

Maintenant faites un update pour mettre à jour la liste des paquets :

 # aptitude update

 Quelques erreurs risques d'arriver...

 W: GPG error: http://www.debian-multimedia.org

# Des problèmes de clés GPG [[Erreur_lors_d'un_update:_NO_PUBKEY]]
 # apt-get install debian-backports-keyring
 # apt-get install debian-multimedia-keyring

 E: Dynamic MMap ran out of room

# Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]]
 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaite l'update, il ne doit pas y avoir d'erreurs

 # aptitude update
 
  234ko téléchargés en 1m7s (3466o/s)
 Lecture des listes de paquets... Fait

IMPORTANT : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

Lancez l'upgrade

 # apt-get dist-upgrade                             
 Lecture des listes de paquets... Fait                       
 Construction de l'arbre des dépendances... Fait             
 Calcul de la mise à jour... Fait                            
 Les paquets suivants seront ENLEVÉS :                       
   dbus-1-utils gimp gimp-print gnome-themes-extras libdiscover1 libgssapi2 libnl1-pre6 libopal-2.2.0
   libpci2 libpt-plugins-alsa libpt-plugins-v4l libsasl2 libstlport4.6c2 libvte4                     
   xserver-xorg-video-newport                                                                        
 Les NOUVEAUX paquets suivants seront installés :                                                    
   bsd-mailx bsh-gcj cheese cpp-4.3 cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk
   cupsddk-drivers dbus-x11 discover discover-data djvulibre-desktop dmz-cursor-theme                   
   epiphany-browser-data epiphany-gecko fastjar freetds-common gcc-4.3-base gcj-4.3-base gdebi-core     
   ghostscript ghostscript-x gij-4.3 gnome-mount gnome-network-admin gnome-settings-daemon gnuchess     
   grub-common gstreamer0.10-tools gstreamer0.10-x gtkhtml3.14 guile-1.8-libs hal-info java-common      
   java-gcj-compat java-gcj-compat-headless libamrnb3 libamrwb3 libasyncns0 libavahi-compat-libdnssd1   
   libavahi-core5 libavahi-gobject0 libavahi-ui0 libavcodec51 libavformat52 libavutil49 libbcel-java    
   libbind9-40 libblas3gf libbluetooth2 libcairomm-1.0-1 libcamel1.2-11 libcap2 libcdio7 libct4 libcups2
   libcurl3-gnutls libcwidget3 libdatrie0 libdb4.5 libdb4.6 libdevmapper1.02.1 libdirac0                
   libdirectfb-1.0-0 libdirectfb-extra libdiscover2 libdjvulibre21 libdns45 libebook1.2-9 libecal1.2-7  
   libedata-cal1.2-6 libedataserver1.2-9 libedataserverui1.2-8 libeel2-2.20 libegroupwise1.2-13 libelfg0
   libepc-1.0-1 libepc-ui-1.0-1 libept0 libexchange-storage1.2-3 libexempi3 libfaac0 libfaad0 libffi5   
   libflac8 libfreebob0 libgail18 libgalago3 libgcj9-0 libgcj9-0-awt libgcj9-jar libgd2-noxpm libgda3-3 
   libgda3-common libgdata-google1.2-1 libgdata1.2-1 libgfortran3 libggz2 libggzcore9 libggzmod4        
   libgmp3c2 libgmyth0 libgnomekbd-common libgnomekbd2 libgnomekbdui2 libgnutls26 libgpgme11 libgpm2    
   libgpod3 libgraphviz4 libgs8 libgssglue1 libgtk-vnc-1.0-0 libgtkhtml3.14-19 libgtksourceview2.0-0    
   libgtksourceview2.0-common libgucharmap6 libgweather-common libgweather1 libhsqldb-java-gcj          
   libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libicu38      
   libilmbase6 libisc45 libisccc40 libisccfg40 libiw29 libjack0 libjasper1 libjaxp1.3-java-gcj          
   libkeyutils1 liblapack3gf libldap-2.4-2 liblog4j1.2-java libltdl3 liblua5.1-0 liblwres40 liblzo2-2   
   libmagick10 libmalaga7 libmozjs1d libmp3lame0 libmpcdec3 libmpfr1ldbl libmtp7 libmx4j-java           
   libmysqlclient15off libnautilus-burn4 libneon27 libnet-dbus-perl libnl1 libnss3-1d liboobs-1-4       
   libopal-2.2 libopenexr6 libparted1.8-10 libpci3 libpcsclite1 libperl5.10 libpisync1 libpixman-1-0    
   libpoppler-glib3 libpoppler3 libpostproc51 libpt-1.10.10 libpt-1.10.10-plugins-alsa                  
   libpt-1.10.10-plugins-v4l libpth20 libpulse0 librarian0 libregexp-java libsane-extras                
   libschroedinger-1.0-0 libservlet2.4-java libslab0 libsmbios2 libsnmp15 libsoup2.4-1 libspectre1      
   libspeexdsp1 libsplashy1 libsqlite3-0 libssh2-1 libstlport4.6ldbl libsuitesparse-3.1.0               
   libswfdec-0.6-90 libtalloc1 libthai-data libthai0 libtimedate-perl libtotem-plparser10               
   libtrackerclient0 libts-0.0-0 liburi-perl libustr-1.0-1 libvoikko1 libvte9 libwavpack1 libwbclient0  
   libwnck22 libwpg-0.1-1 libwps-0.1-1 libwww-perl libx264-65 libx86-1 libxalan2-java-gcj libxapian15   
   libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xlib0 libxcb-xv0 libxcb1         
   libxcomposite1 libxerces2-java-gcj libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins
   libxine1-plugins libxine1-x libxklavier12 libxml-parser-perl libxml-twig-perl libxvidcore4            
   linux-image-2.6.26-2-686 lp-solve lzma mysql-common netcat-traditional openoffice.org-base-core       
   openoffice.org-filter-mobiledev openoffice.org-officebean openoffice.org-report-builder-bin           
   openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-writer2latex                 
   openprinting-ppds openssl-blacklist oss-compat pkg-config pm-utils python-dbus python-eggtrayicon     
   python-elementtree python-gdata python-gobject python-gtkhtml2 python-gtkmozembed                     
   python-gtksourceview2 python-imaging python-notify python-sepolgen python-software-properties         
   python2.5 python2.5-minimal seahorse software-properties-gtk ssl-cert swfdec-gnome totem-common       
   totem-gstreamer totem-plugins ttf-dejavu-core ttf-dejavu-extra ttf-liberation unattended-upgrades     
   update-manager-core update-notifier-common vinagre x11-apps x11-session-utils x11-utils x11-xfs-utils 
   x11-xkb-utils x11-xserver-utils xauth xinit xserver-xorg-video-intel xserver-xorg-video-mach64        
   xserver-xorg-video-openchrome xserver-xorg-video-r128 xserver-xorg-video-radeon                       
   xserver-xorg-video-radeonhd xulrunner-1.9 xulrunner-1.9-gnome-support                                 
 Les paquets suivants seront mis à jour :                                                                
   acpi acpid adduser alacarte alsa-base alsa-utils anacron apt apt-utils aptitude at avahi-daemon       
   base-files base-passwd bash bc bind9-host binutils bittorrent bluez-gnome bsdmainutils bsdutils bsh   
   bug-buddy busybox bzip2 ca-certificates capplets-data cdrdao console-common console-data console-tools
   coreutils cpio cpp cpp-4.1 cpufrequtils cron cupsys cupsys-bsd cupsys-client cupsys-common            
   cupsys-driver-gutenprint dbus dc debconf debconf-i18n debianutils defoma deskbar-applet desktop-base  
   desktop-file-utils dhcdbd dhcp3-client dhcp3-common dictionaries-common diff discover1 discover1-data 
   dmidecode dnsutils doc-debian doc-linux-text docbook-xml dpkg dpkg-dev dselect dvd+rw-tools e2fslibs  
   e2fsprogs ed eject ekiga eog epiphany-browser epiphany-extensions evince evolution evolution-common   
   evolution-data-server evolution-data-server-common evolution-exchange evolution-plugins               
   evolution-webcal exim4 exim4-base exim4-config exim4-daemon-light fast-user-switch-applet file        
   file-roller findutils finger fontconfig fontconfig-config foomatic-db foomatic-db-engine              
   foomatic-db-gutenprint foomatic-db-hpijs foomatic-filters foomatic-filters-ppds foomatic-gui ftp      
   gcalctool gcc-3.4-base gcc-4.1-base gconf-editor gconf2 gconf2-common gdb gdebi gdm gedit gedit-common
   genisoimage gettext-base gij gimp-data gksu gnome-about gnome-applets gnome-applets-data              
   gnome-backgrounds gnome-btdownload gnome-cards-data gnome-control-center gnome-core gnome-desktop-data
   gnome-desktop-environment gnome-doc-utils gnome-games gnome-games-data gnome-icon-theme gnome-keyring 
   gnome-keyring-manager gnome-media gnome-media-common gnome-menus gnome-mime-data                      
   gnome-netstatus-applet gnome-nettool gnome-panel gnome-panel-data gnome-power-manager                 
   gnome-screensaver gnome-session gnome-system-monitor gnome-system-tools gnome-terminal                
   gnome-terminal-data gnome-themes gnome-user-guide gnome-utils gnome-volume-manager gnomebaker gnupg   
   gparted gpgv grep groff-base grub gs-common gs-esp gsfonts gstreamer0.10-alsa gstreamer0.10-esd       
   gstreamer0.10-ffmpeg gstreamer0.10-gnomevfs gstreamer0.10-plugins-base gstreamer0.10-plugins-good     
   gstreamer0.10-plugins-ugly gtk2-engines gtk2-engines-pixbuf gtkhtml3.8 gucharmap guile-1.6-libs gzip  
   hal hibernate hicolor-icon-theme hostname hotkey-setup hpijs hpijs-ppds hplip hplip-data iamerican    
   ibritish icedax iceweasel iceweasel-gnome-support iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint
   info initramfs-tools initscripts installation-report iproute iptables iputils-arping iputils-ping     
   iso-codes ispell kde-i18n-fr kdelibs-data kdelibs4c2a klibc-utils klogd language-env laptop-detect    
   less liba52-0.7.4 libaa1 libacl1 libao2 libapm1 libart-2.0-2 libarts1c2a libartsc0 libasound2         
   libaspell15 libatk1.0-0 libatm1 libattr1 libaudio2 libaudiofile0 libauthen-pam-perl libavahi-client3  
   libavahi-common-data libavahi-common3 libavahi-glib1 libavahi-qt3-1 libblkid1 libbonobo2-0            
   libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i686 libcaca0             
   libcairo-perl libcairo2 libcdparanoia0 libcomerr2 libconsole libcpufreq0 libcroco3 libcucul0          
   libcupsimage2 libcupsys2 libcurl3 libdaemon0 libdb4.2 libdbus-1-3 libdbus-glib-1-2 libdmx1 libdrm2    
   libdv4 libdvdread3 libedata-book1.2-2 libedit2 libeel2-data libenchant1c2a libevent1 libexif12        
   libexpat1 libfam0 libfontconfig1 libfontenc1 libfreetype6 libfs6 libg2c0 libgail-common libgc1c2      
   libgcc1 libgcj-bc libgcj-common libgconf2-4 libgcrypt11 libgda2-3 libgda2-common libgdl-1-0           
   libgdl-1-common libgimp2.0 libgksu2-0 libgksuui1.0-1 libgl1-mesa-dri libgl1-mesa-glx libglade2-0      
   libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgnome-desktop-2 libgnome-keyring0        
   libgnome-media0 libgnome-menu2 libgnome-pilot2 libgnome-window-settings1 libgnome2-0                  
   libgnome2-canvas-perl libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0            
   libgnomecanvas2-common libgnomecups1.0-1 libgnomeprint2.2-0 libgnomeprint2.2-data libgnomeprintui2.2-0
   libgnomeprintui2.2-common libgnomeui-0 libgnomeui-common libgnomevfs2-0 libgnomevfs2-bin              
   libgnomevfs2-common libgnomevfs2-extra libgpg-error0 libgphoto2-2 libgphoto2-port0 libgsf-1-114       
   libgsf-1-common libgsm1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0   
   libgtk2.0-bin libgtk2.0-common libgtkhtml2-0 libgtkhtml3.8-15 libgtkmm-2.4-1c2a                       
   libgtksourceview-common libgtksourceview1.0-0 libgtkspell0 libgtop2-7 libgtop2-common libguile-ltdl-1 
   libgutenprint2 libgutenprintui2-1 libhal-storage1 libhal1 libhsqldb-java libice6 libidl0 libidn11     
   libieee1284-3 libio-pty-perl libjack0.100.0-0 libjaxp1.3-java libjline-java libjpeg62 libklibc        
   libkpathsea4 libkrb53 liblcms1 liblircclient0 liblocale-gettext-perl liblockfile1 liblua50 liblualib50
   libmad0 libmagic1 libmdbtools libmetacity0 libmodplug0c2 libmozjs0d libmpeg2-4 libmusicbrainz4c2a     
   libnautilus-extension1 libncurses5 libncursesw5 libnet-ssleay-perl libnewt0.52 libnfsidmap2           
   libnm-glib0 libnm-util0 libnotify1 libnspr4-0d libnss-mdns libogg0 liboil0.3 liborbit2 libosp5        
   libpam-modules libpam-runtime libpam0g libpanel-applet2-0 libpango1.0-0 libpango1.0-common libpaper1  
   libpcre3 libpisock9 libpng12-0 libpopt0 libportaudio0 libqt3-mt libqthreads-12 libraw1394-8 
   libreadline5 librpcsecgss3 librsvg2-2 librsvg2-common libsane libsasl2-2 libscrollkeeper0             
   libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsemanage1 libsensors3 libsepol1 libservlet2.3-java
   libsexy2 libshout3 libsidplay1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 libsmbclient libsndfile1   
   libsnmp-base libsoup2.2-8 libspeex1 libss2 libssl0.9.8 libstartup-notification0 libstdc++6 libsvga1   
   libsysfs2 libtag1c2a libtasn1-3 libtasn1-3-bin libtext-charwidth-perl libtext-iconv-perl              
   libtext-wrapi18n-perl libtheora0 libtiff4 libusb-0.1-4 libuuid1 libvisual-0.4-0 libvolume-id0         
   libvorbis0a libvorbisenc2 libvorbisfile3 libvte-common libwmf0.2-7 libwnck-common libwpd8c2a libwrap0 
   libx11-6 libx11-data libxalan2-java libxau6 libxaw7 libxcursor1 libxdamage1 libxdmcp6 libxerces2-java 
   libxext6 libxfixes3 libxfont1 libxft2 libxi6 libxine1 libxinerama1 libxkbfile1 libxml2 libxml2-utils  
   libxmu6 libxmuu1 libxp6 libxpm4 libxrandr2 libxrender1 libxres1 libxslt1.1 libxss1 libxt6 libxtrap6   
   libxtst6 libxul-common libxul0d libxv1 libxvmc1 libxxf86dga1 libxxf86misc1 libxxf86vm1 liferea
   liferea-xulrunner linux-image-2.6-686 linux-sound-base locales login logrotate lsb-base lsb-release
   lsof m4 mailx make makedev man-db manpages manpages-fr manpages-fr-dev manpages-fr-extra mawk mc menu
   menu-xdg metacity metacity-common mime-support mkisofs mktemp module-init-tools mount mpack mtools
   mtr-tiny mutt myspell-en-us myspell-fr-gut nano nautilus nautilus-cd-burner nautilus-data ncurses-base
   ncurses-bin ncurses-term net-tools netbase netcat network-manager network-manager-gnome nfs-common
   nfs-kernel-server notification-daemon ntp openbsd-inetd openoffice.org openoffice.org-base
   openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw
   openoffice.org-evolution openoffice.org-gcj openoffice.org-gnome openoffice.org-gtk
   openoffice.org-help-en-us openoffice.org-help-fr openoffice.org-impress openoffice.org-java-common
   openoffice.org-l10n-fr openoffice.org-math openoffice.org-thesaurus-en-us openoffice.org-writer
   openssh-blacklist openssh-client openssh-server openssl passwd patch pciutils perl perl-base
   perl-modules pidentd pmount policycoreutils poppler-utils portmap powermgmt-base printconf procps
   psmisc python python-apt python-cairo python-central python-foomatic python-glade2 python-gmenu
   python-gnome2 python-gnome2-desktop python-gnome2-extras python-gtk2 python-ipy python-libxml2
   python-minimal python-newt python-numeric python-pyorbit python-qt3 python-selinux python-semanage
   python-sip4 python-support python-uno python-vte python2.4 python2.4-minimal rdesktop readline-common
   reportbug rhythmbox scrollkeeper sed shared-mime-info sharutils sound-juicer strace sudo svgalibg1
   synaptic sysklogd system-tools-backends sysv-rc sysvinit sysvinit-utils tar tasksel tasksel-data tcpd
   telnet texinfo time totem totem-mozilla totem-xine traceroute tsclient ttf-dejavu ttf-opensymbol twm
   type-handling tzdata ucf udev unzip update-inetd update-manager update-notifier usbutils uswsusp
   util-linux vbetool vim-common vim-tiny vino w3m wamerican wfrench wget whiptail whois wodim
   wpasupplicant x11-common xbase-clients xdg-utils xfonts-100dpi xfonts-75dpi xfonts-base 
   xfonts-encodings xfonts-utils xkb-data xml-core xorg xresprobe xsane xsane-common xserver-xorg
   xserver-xorg-core xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd
   xserver-xorg-input-mouse xserver-xorg-input-synaptics xserver-xorg-input-wacom xserver-xorg-video-all
   xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati xserver-xorg-video-chips
   xserver-xorg-video-cirrus xserver-xorg-video-cyrix xserver-xorg-video-dummy xserver-xorg-video-fbdev
   xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-i740 xserver-xorg-video-i810
   xserver-xorg-video-imstt xserver-xorg-video-mga xserver-xorg-video-neomagic xserver-xorg-video-nsc
   xserver-xorg-video-nv xserver-xorg-video-rendition xserver-xorg-video-s3 xserver-xorg-video-s3virge
   xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis
   xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident
   xserver-xorg-video-tseng xserver-xorg-video-v4l xserver-xorg-video-vesa xserver-xorg-video-vga
   xserver-xorg-video-via xserver-xorg-video-vmware xserver-xorg-video-voodoo xsltproc xterm
   xulrunner-gnome-support xutils xutils-dev yelp zenity zlib1g
 729 mis à jour, 294 nouvellement installés, 15 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 869Mo dans les archives.
 Après dépaquetage, 647Mo d'espace disque supplémentaires seront utilisés.
 Souhaitez-vous continuer [O/n] ?

En fonction de votre connexion ça peut prendre des plombes...
Un conseil, si vous n'êtes pas sûr de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

 # apt-get -d upgrade

Puis

 # apt-get dist-upgrade

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut

[[Image:Capture150.jpeg]]

[[Image:Capture151.jpeg]]

[[Image:Capture153.jpeg]]

[[Image:Capture154.jpeg]]

[[Image:Capture156.jpeg]]

[[Image:Capture158.jpeg]]

[[Image:Capture159.jpeg]]

[[Image:Capture160.jpeg]]

[[Image:Capture161.jpeg]]

Sans le téléchargement des fichiers, comptez environ 50 minutes pour l'upgrade.

 # reboot

 $ uname -a
 Linux compta2 2.6.26-2-686 #1 SMP Thu Mar 11 23:19:46 UTC 2010 i686 GNU/Linux

A venir... Upgrade de Lenny à Squeeze !

----
--[[Utilisateur:Lol|Lol]] 9 avril 2010 à 13:55 (UTC)</text>
      <sha1>hw9866e0h0fzufs2nhpvjtu5cyr8trk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1639</id>
      <parentid>1394</parentid>
      <timestamp>2010-07-05T08:41:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="20311">#REDIRECT [[isalo:Upgrade_de_Etch_%C3%A0_Lenny]]
{{sid}}

Comment passer de Etch à Lenny

Attention : Ce Document est basé sur l'upgrade d'une machine de bureau, pas d'un serveur !

Cette question n'est bien évidemment plus d'actualité, presque tout le monde est déjà sous Lenny.
Mais pour les retardataires, et en vue du passage de squeeze en stable, il faut se réveiller !

Je part du principe que vous n’avez pas installé de pilotes propriétaires pour vos cartes graphiques.
Le changement de noyau ferait planter votre serveur X.
Modifiez votre xorg.conf afin d'utiliser des pilotes Debian avant cet upgrade, a moins que vous ne les réinstalliez juste après.

Votre machine doit être à jour avant de vous lancer

 # aptitude upgrade

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition ou se trouve /var pour le stockage des paquets téléchargés.

Pour connaître l’espace libre de votre partition racine :

 $ df -h /
 Sys. de fich.         Tail. Occ. Disp. %Occ. Monté sur
 /dev/hda1              23G  2,6G   20G  12% /

Si vous disposez de plus de 50% d’espace libre vous pouvez passer au chapitre suivant. Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Modifiez votre sources.list et ajoutez Lenny (il suffit de copier coller les lignes avec Etch et de mettre Lenny à la place.)

 # nano /etc/apt/sources.list
 
 ###### Debian Main Repos
 deb http://ftp.fr.debian.org/debian/ etch main contrib non-free
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free 
 
 ###### Debian Security &amp; Update Repos
 deb http://security.debian.org/ etch/updates main contrib non-free
 deb http://ftp.fr.debian.org/debian/ etch-proposed-updates main contrib non-free
 deb http://security.debian.org/ lenny/updates main contrib non-free
 deb http://ftp.fr.debian.org/debian/ lenny-proposed-updates main contrib non-free
 
 #### Debian Backports
 deb http://www.backports.org/debian/ etch-backports main contrib
 deb http://www.backports.org/debian/ lenny-backports main contrib non-free
 
 #### Debian Multimedia
 deb http://www.debian-multimedia.org/ etch main contrib
 deb http://www.debian-multimedia.org/ lenny main contrib non-free

Maintenant faites un update pour mettre à jour la liste des paquets :

 # aptitude update

 Quelques erreurs risques d'arriver...

 W: GPG error: http://www.debian-multimedia.org

# Des problèmes de clés GPG [[Erreur_lors_d'un_update:_NO_PUBKEY]]
 # apt-get install debian-backports-keyring
 # apt-get install debian-multimedia-keyring

 E: Dynamic MMap ran out of room

# Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]]
 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaite l'update, il ne doit pas y avoir d'erreurs

 # aptitude update
 
  234ko téléchargés en 1m7s (3466o/s)
 Lecture des listes de paquets... Fait

IMPORTANT : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

Lancez l'upgrade

 # apt-get dist-upgrade                             
 Lecture des listes de paquets... Fait                       
 Construction de l'arbre des dépendances... Fait             
 Calcul de la mise à jour... Fait                            
 Les paquets suivants seront ENLEVÉS :                       
   dbus-1-utils gimp gimp-print gnome-themes-extras libdiscover1 libgssapi2 libnl1-pre6 libopal-2.2.0
   libpci2 libpt-plugins-alsa libpt-plugins-v4l libsasl2 libstlport4.6c2 libvte4                     
   xserver-xorg-video-newport                                                                        
 Les NOUVEAUX paquets suivants seront installés :                                                    
   bsd-mailx bsh-gcj cheese cpp-4.3 cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk
   cupsddk-drivers dbus-x11 discover discover-data djvulibre-desktop dmz-cursor-theme                   
   epiphany-browser-data epiphany-gecko fastjar freetds-common gcc-4.3-base gcj-4.3-base gdebi-core     
   ghostscript ghostscript-x gij-4.3 gnome-mount gnome-network-admin gnome-settings-daemon gnuchess     
   grub-common gstreamer0.10-tools gstreamer0.10-x gtkhtml3.14 guile-1.8-libs hal-info java-common      
   java-gcj-compat java-gcj-compat-headless libamrnb3 libamrwb3 libasyncns0 libavahi-compat-libdnssd1   
   libavahi-core5 libavahi-gobject0 libavahi-ui0 libavcodec51 libavformat52 libavutil49 libbcel-java    
   libbind9-40 libblas3gf libbluetooth2 libcairomm-1.0-1 libcamel1.2-11 libcap2 libcdio7 libct4 libcups2
   libcurl3-gnutls libcwidget3 libdatrie0 libdb4.5 libdb4.6 libdevmapper1.02.1 libdirac0                
   libdirectfb-1.0-0 libdirectfb-extra libdiscover2 libdjvulibre21 libdns45 libebook1.2-9 libecal1.2-7  
   libedata-cal1.2-6 libedataserver1.2-9 libedataserverui1.2-8 libeel2-2.20 libegroupwise1.2-13 libelfg0
   libepc-1.0-1 libepc-ui-1.0-1 libept0 libexchange-storage1.2-3 libexempi3 libfaac0 libfaad0 libffi5   
   libflac8 libfreebob0 libgail18 libgalago3 libgcj9-0 libgcj9-0-awt libgcj9-jar libgd2-noxpm libgda3-3 
   libgda3-common libgdata-google1.2-1 libgdata1.2-1 libgfortran3 libggz2 libggzcore9 libggzmod4        
   libgmp3c2 libgmyth0 libgnomekbd-common libgnomekbd2 libgnomekbdui2 libgnutls26 libgpgme11 libgpm2    
   libgpod3 libgraphviz4 libgs8 libgssglue1 libgtk-vnc-1.0-0 libgtkhtml3.14-19 libgtksourceview2.0-0    
   libgtksourceview2.0-common libgucharmap6 libgweather-common libgweather1 libhsqldb-java-gcj          
   libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libicu38      
   libilmbase6 libisc45 libisccc40 libisccfg40 libiw29 libjack0 libjasper1 libjaxp1.3-java-gcj          
   libkeyutils1 liblapack3gf libldap-2.4-2 liblog4j1.2-java libltdl3 liblua5.1-0 liblwres40 liblzo2-2   
   libmagick10 libmalaga7 libmozjs1d libmp3lame0 libmpcdec3 libmpfr1ldbl libmtp7 libmx4j-java           
   libmysqlclient15off libnautilus-burn4 libneon27 libnet-dbus-perl libnl1 libnss3-1d liboobs-1-4       
   libopal-2.2 libopenexr6 libparted1.8-10 libpci3 libpcsclite1 libperl5.10 libpisync1 libpixman-1-0    
   libpoppler-glib3 libpoppler3 libpostproc51 libpt-1.10.10 libpt-1.10.10-plugins-alsa                  
   libpt-1.10.10-plugins-v4l libpth20 libpulse0 librarian0 libregexp-java libsane-extras                
   libschroedinger-1.0-0 libservlet2.4-java libslab0 libsmbios2 libsnmp15 libsoup2.4-1 libspectre1      
   libspeexdsp1 libsplashy1 libsqlite3-0 libssh2-1 libstlport4.6ldbl libsuitesparse-3.1.0               
   libswfdec-0.6-90 libtalloc1 libthai-data libthai0 libtimedate-perl libtotem-plparser10               
   libtrackerclient0 libts-0.0-0 liburi-perl libustr-1.0-1 libvoikko1 libvte9 libwavpack1 libwbclient0  
   libwnck22 libwpg-0.1-1 libwps-0.1-1 libwww-perl libx264-65 libx86-1 libxalan2-java-gcj libxapian15   
   libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xlib0 libxcb-xv0 libxcb1         
   libxcomposite1 libxerces2-java-gcj libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins
   libxine1-plugins libxine1-x libxklavier12 libxml-parser-perl libxml-twig-perl libxvidcore4            
   linux-image-2.6.26-2-686 lp-solve lzma mysql-common netcat-traditional openoffice.org-base-core       
   openoffice.org-filter-mobiledev openoffice.org-officebean openoffice.org-report-builder-bin           
   openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-writer2latex                 
   openprinting-ppds openssl-blacklist oss-compat pkg-config pm-utils python-dbus python-eggtrayicon     
   python-elementtree python-gdata python-gobject python-gtkhtml2 python-gtkmozembed                     
   python-gtksourceview2 python-imaging python-notify python-sepolgen python-software-properties         
   python2.5 python2.5-minimal seahorse software-properties-gtk ssl-cert swfdec-gnome totem-common       
   totem-gstreamer totem-plugins ttf-dejavu-core ttf-dejavu-extra ttf-liberation unattended-upgrades     
   update-manager-core update-notifier-common vinagre x11-apps x11-session-utils x11-utils x11-xfs-utils 
   x11-xkb-utils x11-xserver-utils xauth xinit xserver-xorg-video-intel xserver-xorg-video-mach64        
   xserver-xorg-video-openchrome xserver-xorg-video-r128 xserver-xorg-video-radeon                       
   xserver-xorg-video-radeonhd xulrunner-1.9 xulrunner-1.9-gnome-support                                 
 Les paquets suivants seront mis à jour :                                                                
   acpi acpid adduser alacarte alsa-base alsa-utils anacron apt apt-utils aptitude at avahi-daemon       
   base-files base-passwd bash bc bind9-host binutils bittorrent bluez-gnome bsdmainutils bsdutils bsh   
   bug-buddy busybox bzip2 ca-certificates capplets-data cdrdao console-common console-data console-tools
   coreutils cpio cpp cpp-4.1 cpufrequtils cron cupsys cupsys-bsd cupsys-client cupsys-common            
   cupsys-driver-gutenprint dbus dc debconf debconf-i18n debianutils defoma deskbar-applet desktop-base  
   desktop-file-utils dhcdbd dhcp3-client dhcp3-common dictionaries-common diff discover1 discover1-data 
   dmidecode dnsutils doc-debian doc-linux-text docbook-xml dpkg dpkg-dev dselect dvd+rw-tools e2fslibs  
   e2fsprogs ed eject ekiga eog epiphany-browser epiphany-extensions evince evolution evolution-common   
   evolution-data-server evolution-data-server-common evolution-exchange evolution-plugins               
   evolution-webcal exim4 exim4-base exim4-config exim4-daemon-light fast-user-switch-applet file        
   file-roller findutils finger fontconfig fontconfig-config foomatic-db foomatic-db-engine              
   foomatic-db-gutenprint foomatic-db-hpijs foomatic-filters foomatic-filters-ppds foomatic-gui ftp      
   gcalctool gcc-3.4-base gcc-4.1-base gconf-editor gconf2 gconf2-common gdb gdebi gdm gedit gedit-common
   genisoimage gettext-base gij gimp-data gksu gnome-about gnome-applets gnome-applets-data              
   gnome-backgrounds gnome-btdownload gnome-cards-data gnome-control-center gnome-core gnome-desktop-data
   gnome-desktop-environment gnome-doc-utils gnome-games gnome-games-data gnome-icon-theme gnome-keyring 
   gnome-keyring-manager gnome-media gnome-media-common gnome-menus gnome-mime-data                      
   gnome-netstatus-applet gnome-nettool gnome-panel gnome-panel-data gnome-power-manager                 
   gnome-screensaver gnome-session gnome-system-monitor gnome-system-tools gnome-terminal                
   gnome-terminal-data gnome-themes gnome-user-guide gnome-utils gnome-volume-manager gnomebaker gnupg   
   gparted gpgv grep groff-base grub gs-common gs-esp gsfonts gstreamer0.10-alsa gstreamer0.10-esd       
   gstreamer0.10-ffmpeg gstreamer0.10-gnomevfs gstreamer0.10-plugins-base gstreamer0.10-plugins-good     
   gstreamer0.10-plugins-ugly gtk2-engines gtk2-engines-pixbuf gtkhtml3.8 gucharmap guile-1.6-libs gzip  
   hal hibernate hicolor-icon-theme hostname hotkey-setup hpijs hpijs-ppds hplip hplip-data iamerican    
   ibritish icedax iceweasel iceweasel-gnome-support iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint
   info initramfs-tools initscripts installation-report iproute iptables iputils-arping iputils-ping     
   iso-codes ispell kde-i18n-fr kdelibs-data kdelibs4c2a klibc-utils klogd language-env laptop-detect    
   less liba52-0.7.4 libaa1 libacl1 libao2 libapm1 libart-2.0-2 libarts1c2a libartsc0 libasound2         
   libaspell15 libatk1.0-0 libatm1 libattr1 libaudio2 libaudiofile0 libauthen-pam-perl libavahi-client3  
   libavahi-common-data libavahi-common3 libavahi-glib1 libavahi-qt3-1 libblkid1 libbonobo2-0            
   libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i686 libcaca0             
   libcairo-perl libcairo2 libcdparanoia0 libcomerr2 libconsole libcpufreq0 libcroco3 libcucul0          
   libcupsimage2 libcupsys2 libcurl3 libdaemon0 libdb4.2 libdbus-1-3 libdbus-glib-1-2 libdmx1 libdrm2    
   libdv4 libdvdread3 libedata-book1.2-2 libedit2 libeel2-data libenchant1c2a libevent1 libexif12        
   libexpat1 libfam0 libfontconfig1 libfontenc1 libfreetype6 libfs6 libg2c0 libgail-common libgc1c2      
   libgcc1 libgcj-bc libgcj-common libgconf2-4 libgcrypt11 libgda2-3 libgda2-common libgdl-1-0           
   libgdl-1-common libgimp2.0 libgksu2-0 libgksuui1.0-1 libgl1-mesa-dri libgl1-mesa-glx libglade2-0      
   libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgnome-desktop-2 libgnome-keyring0        
   libgnome-media0 libgnome-menu2 libgnome-pilot2 libgnome-window-settings1 libgnome2-0                  
   libgnome2-canvas-perl libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0            
   libgnomecanvas2-common libgnomecups1.0-1 libgnomeprint2.2-0 libgnomeprint2.2-data libgnomeprintui2.2-0
   libgnomeprintui2.2-common libgnomeui-0 libgnomeui-common libgnomevfs2-0 libgnomevfs2-bin              
   libgnomevfs2-common libgnomevfs2-extra libgpg-error0 libgphoto2-2 libgphoto2-port0 libgsf-1-114       
   libgsf-1-common libgsm1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0   
   libgtk2.0-bin libgtk2.0-common libgtkhtml2-0 libgtkhtml3.8-15 libgtkmm-2.4-1c2a                       
   libgtksourceview-common libgtksourceview1.0-0 libgtkspell0 libgtop2-7 libgtop2-common libguile-ltdl-1 
   libgutenprint2 libgutenprintui2-1 libhal-storage1 libhal1 libhsqldb-java libice6 libidl0 libidn11     
   libieee1284-3 libio-pty-perl libjack0.100.0-0 libjaxp1.3-java libjline-java libjpeg62 libklibc        
   libkpathsea4 libkrb53 liblcms1 liblircclient0 liblocale-gettext-perl liblockfile1 liblua50 liblualib50
   libmad0 libmagic1 libmdbtools libmetacity0 libmodplug0c2 libmozjs0d libmpeg2-4 libmusicbrainz4c2a     
   libnautilus-extension1 libncurses5 libncursesw5 libnet-ssleay-perl libnewt0.52 libnfsidmap2           
   libnm-glib0 libnm-util0 libnotify1 libnspr4-0d libnss-mdns libogg0 liboil0.3 liborbit2 libosp5        
   libpam-modules libpam-runtime libpam0g libpanel-applet2-0 libpango1.0-0 libpango1.0-common libpaper1  
   libpcre3 libpisock9 libpng12-0 libpopt0 libportaudio0 libqt3-mt libqthreads-12 libraw1394-8 
   libreadline5 librpcsecgss3 librsvg2-2 librsvg2-common libsane libsasl2-2 libscrollkeeper0             
   libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsemanage1 libsensors3 libsepol1 libservlet2.3-java
   libsexy2 libshout3 libsidplay1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 libsmbclient libsndfile1   
   libsnmp-base libsoup2.2-8 libspeex1 libss2 libssl0.9.8 libstartup-notification0 libstdc++6 libsvga1   
   libsysfs2 libtag1c2a libtasn1-3 libtasn1-3-bin libtext-charwidth-perl libtext-iconv-perl              
   libtext-wrapi18n-perl libtheora0 libtiff4 libusb-0.1-4 libuuid1 libvisual-0.4-0 libvolume-id0         
   libvorbis0a libvorbisenc2 libvorbisfile3 libvte-common libwmf0.2-7 libwnck-common libwpd8c2a libwrap0 
   libx11-6 libx11-data libxalan2-java libxau6 libxaw7 libxcursor1 libxdamage1 libxdmcp6 libxerces2-java 
   libxext6 libxfixes3 libxfont1 libxft2 libxi6 libxine1 libxinerama1 libxkbfile1 libxml2 libxml2-utils  
   libxmu6 libxmuu1 libxp6 libxpm4 libxrandr2 libxrender1 libxres1 libxslt1.1 libxss1 libxt6 libxtrap6   
   libxtst6 libxul-common libxul0d libxv1 libxvmc1 libxxf86dga1 libxxf86misc1 libxxf86vm1 liferea
   liferea-xulrunner linux-image-2.6-686 linux-sound-base locales login logrotate lsb-base lsb-release
   lsof m4 mailx make makedev man-db manpages manpages-fr manpages-fr-dev manpages-fr-extra mawk mc menu
   menu-xdg metacity metacity-common mime-support mkisofs mktemp module-init-tools mount mpack mtools
   mtr-tiny mutt myspell-en-us myspell-fr-gut nano nautilus nautilus-cd-burner nautilus-data ncurses-base
   ncurses-bin ncurses-term net-tools netbase netcat network-manager network-manager-gnome nfs-common
   nfs-kernel-server notification-daemon ntp openbsd-inetd openoffice.org openoffice.org-base
   openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw
   openoffice.org-evolution openoffice.org-gcj openoffice.org-gnome openoffice.org-gtk
   openoffice.org-help-en-us openoffice.org-help-fr openoffice.org-impress openoffice.org-java-common
   openoffice.org-l10n-fr openoffice.org-math openoffice.org-thesaurus-en-us openoffice.org-writer
   openssh-blacklist openssh-client openssh-server openssl passwd patch pciutils perl perl-base
   perl-modules pidentd pmount policycoreutils poppler-utils portmap powermgmt-base printconf procps
   psmisc python python-apt python-cairo python-central python-foomatic python-glade2 python-gmenu
   python-gnome2 python-gnome2-desktop python-gnome2-extras python-gtk2 python-ipy python-libxml2
   python-minimal python-newt python-numeric python-pyorbit python-qt3 python-selinux python-semanage
   python-sip4 python-support python-uno python-vte python2.4 python2.4-minimal rdesktop readline-common
   reportbug rhythmbox scrollkeeper sed shared-mime-info sharutils sound-juicer strace sudo svgalibg1
   synaptic sysklogd system-tools-backends sysv-rc sysvinit sysvinit-utils tar tasksel tasksel-data tcpd
   telnet texinfo time totem totem-mozilla totem-xine traceroute tsclient ttf-dejavu ttf-opensymbol twm
   type-handling tzdata ucf udev unzip update-inetd update-manager update-notifier usbutils uswsusp
   util-linux vbetool vim-common vim-tiny vino w3m wamerican wfrench wget whiptail whois wodim
   wpasupplicant x11-common xbase-clients xdg-utils xfonts-100dpi xfonts-75dpi xfonts-base 
   xfonts-encodings xfonts-utils xkb-data xml-core xorg xresprobe xsane xsane-common xserver-xorg
   xserver-xorg-core xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd
   xserver-xorg-input-mouse xserver-xorg-input-synaptics xserver-xorg-input-wacom xserver-xorg-video-all
   xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati xserver-xorg-video-chips
   xserver-xorg-video-cirrus xserver-xorg-video-cyrix xserver-xorg-video-dummy xserver-xorg-video-fbdev
   xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-i740 xserver-xorg-video-i810
   xserver-xorg-video-imstt xserver-xorg-video-mga xserver-xorg-video-neomagic xserver-xorg-video-nsc
   xserver-xorg-video-nv xserver-xorg-video-rendition xserver-xorg-video-s3 xserver-xorg-video-s3virge
   xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis
   xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident
   xserver-xorg-video-tseng xserver-xorg-video-v4l xserver-xorg-video-vesa xserver-xorg-video-vga
   xserver-xorg-video-via xserver-xorg-video-vmware xserver-xorg-video-voodoo xsltproc xterm
   xulrunner-gnome-support xutils xutils-dev yelp zenity zlib1g
 729 mis à jour, 294 nouvellement installés, 15 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 869Mo dans les archives.
 Après dépaquetage, 647Mo d'espace disque supplémentaires seront utilisés.
 Souhaitez-vous continuer [O/n] ?

En fonction de votre connexion ça peut prendre des plombes...
Un conseil, si vous n'êtes pas sûr de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

 # apt-get -d upgrade

Puis

 # apt-get dist-upgrade

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut

[[Image:Capture150.jpeg]]

[[Image:Capture151.jpeg]]

[[Image:Capture153.jpeg]]

[[Image:Capture154.jpeg]]

[[Image:Capture156.jpeg]]

[[Image:Capture158.jpeg]]

[[Image:Capture159.jpeg]]

[[Image:Capture160.jpeg]]

[[Image:Capture161.jpeg]]

Sans le téléchargement des fichiers, comptez environ 50 minutes pour l'upgrade.

 # reboot

 $ uname -a
 Linux compta2 2.6.26-2-686 #1 SMP Thu Mar 11 23:19:46 UTC 2010 i686 GNU/Linux

A venir... Upgrade de Lenny à Squeeze !

----
--[[Utilisateur:Lol|Lol]] 9 avril 2010 à 13:55 (UTC)</text>
      <sha1>ih4b1qmwrdiaq9h033c110g38demj6n</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1645</id>
      <parentid>1639</parentid>
      <timestamp>2010-07-06T09:13:54Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Annulation des modifications 1639 de [[Special:Contributions/Lol|Lol]] ([[User talk:Lol|discussion]])</comment>
      <text xml:space="preserve" bytes="20262">{{sid}}

Comment passer de Etch à Lenny

Attention : Ce Document est basé sur l'upgrade d'une machine de bureau, pas d'un serveur !

Cette question n'est bien évidemment plus d'actualité, presque tout le monde est déjà sous Lenny.
Mais pour les retardataires, et en vue du passage de squeeze en stable, il faut se réveiller !

Je part du principe que vous n’avez pas installé de pilotes propriétaires pour vos cartes graphiques.
Le changement de noyau ferait planter votre serveur X.
Modifiez votre xorg.conf afin d'utiliser des pilotes Debian avant cet upgrade, a moins que vous ne les réinstalliez juste après.

Votre machine doit être à jour avant de vous lancer

 # aptitude upgrade

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition ou se trouve /var pour le stockage des paquets téléchargés.

Pour connaître l’espace libre de votre partition racine :

 $ df -h /
 Sys. de fich.         Tail. Occ. Disp. %Occ. Monté sur
 /dev/hda1              23G  2,6G   20G  12% /

Si vous disposez de plus de 50% d’espace libre vous pouvez passer au chapitre suivant. Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Modifiez votre sources.list et ajoutez Lenny (il suffit de copier coller les lignes avec Etch et de mettre Lenny à la place.)

 # nano /etc/apt/sources.list
 
 ###### Debian Main Repos
 deb http://ftp.fr.debian.org/debian/ etch main contrib non-free
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free 
 
 ###### Debian Security &amp; Update Repos
 deb http://security.debian.org/ etch/updates main contrib non-free
 deb http://ftp.fr.debian.org/debian/ etch-proposed-updates main contrib non-free
 deb http://security.debian.org/ lenny/updates main contrib non-free
 deb http://ftp.fr.debian.org/debian/ lenny-proposed-updates main contrib non-free
 
 #### Debian Backports
 deb http://www.backports.org/debian/ etch-backports main contrib
 deb http://www.backports.org/debian/ lenny-backports main contrib non-free
 
 #### Debian Multimedia
 deb http://www.debian-multimedia.org/ etch main contrib
 deb http://www.debian-multimedia.org/ lenny main contrib non-free

Maintenant faites un update pour mettre à jour la liste des paquets :

 # aptitude update

 Quelques erreurs risques d'arriver...

 W: GPG error: http://www.debian-multimedia.org

# Des problèmes de clés GPG [[Erreur_lors_d'un_update:_NO_PUBKEY]]
 # apt-get install debian-backports-keyring
 # apt-get install debian-multimedia-keyring

 E: Dynamic MMap ran out of room

# Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]]
 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaite l'update, il ne doit pas y avoir d'erreurs

 # aptitude update
 
  234ko téléchargés en 1m7s (3466o/s)
 Lecture des listes de paquets... Fait

IMPORTANT : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

Lancez l'upgrade

 # apt-get dist-upgrade                             
 Lecture des listes de paquets... Fait                       
 Construction de l'arbre des dépendances... Fait             
 Calcul de la mise à jour... Fait                            
 Les paquets suivants seront ENLEVÉS :                       
   dbus-1-utils gimp gimp-print gnome-themes-extras libdiscover1 libgssapi2 libnl1-pre6 libopal-2.2.0
   libpci2 libpt-plugins-alsa libpt-plugins-v4l libsasl2 libstlport4.6c2 libvte4                     
   xserver-xorg-video-newport                                                                        
 Les NOUVEAUX paquets suivants seront installés :                                                    
   bsd-mailx bsh-gcj cheese cpp-4.3 cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk
   cupsddk-drivers dbus-x11 discover discover-data djvulibre-desktop dmz-cursor-theme                   
   epiphany-browser-data epiphany-gecko fastjar freetds-common gcc-4.3-base gcj-4.3-base gdebi-core     
   ghostscript ghostscript-x gij-4.3 gnome-mount gnome-network-admin gnome-settings-daemon gnuchess     
   grub-common gstreamer0.10-tools gstreamer0.10-x gtkhtml3.14 guile-1.8-libs hal-info java-common      
   java-gcj-compat java-gcj-compat-headless libamrnb3 libamrwb3 libasyncns0 libavahi-compat-libdnssd1   
   libavahi-core5 libavahi-gobject0 libavahi-ui0 libavcodec51 libavformat52 libavutil49 libbcel-java    
   libbind9-40 libblas3gf libbluetooth2 libcairomm-1.0-1 libcamel1.2-11 libcap2 libcdio7 libct4 libcups2
   libcurl3-gnutls libcwidget3 libdatrie0 libdb4.5 libdb4.6 libdevmapper1.02.1 libdirac0                
   libdirectfb-1.0-0 libdirectfb-extra libdiscover2 libdjvulibre21 libdns45 libebook1.2-9 libecal1.2-7  
   libedata-cal1.2-6 libedataserver1.2-9 libedataserverui1.2-8 libeel2-2.20 libegroupwise1.2-13 libelfg0
   libepc-1.0-1 libepc-ui-1.0-1 libept0 libexchange-storage1.2-3 libexempi3 libfaac0 libfaad0 libffi5   
   libflac8 libfreebob0 libgail18 libgalago3 libgcj9-0 libgcj9-0-awt libgcj9-jar libgd2-noxpm libgda3-3 
   libgda3-common libgdata-google1.2-1 libgdata1.2-1 libgfortran3 libggz2 libggzcore9 libggzmod4        
   libgmp3c2 libgmyth0 libgnomekbd-common libgnomekbd2 libgnomekbdui2 libgnutls26 libgpgme11 libgpm2    
   libgpod3 libgraphviz4 libgs8 libgssglue1 libgtk-vnc-1.0-0 libgtkhtml3.14-19 libgtksourceview2.0-0    
   libgtksourceview2.0-common libgucharmap6 libgweather-common libgweather1 libhsqldb-java-gcj          
   libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libicu38      
   libilmbase6 libisc45 libisccc40 libisccfg40 libiw29 libjack0 libjasper1 libjaxp1.3-java-gcj          
   libkeyutils1 liblapack3gf libldap-2.4-2 liblog4j1.2-java libltdl3 liblua5.1-0 liblwres40 liblzo2-2   
   libmagick10 libmalaga7 libmozjs1d libmp3lame0 libmpcdec3 libmpfr1ldbl libmtp7 libmx4j-java           
   libmysqlclient15off libnautilus-burn4 libneon27 libnet-dbus-perl libnl1 libnss3-1d liboobs-1-4       
   libopal-2.2 libopenexr6 libparted1.8-10 libpci3 libpcsclite1 libperl5.10 libpisync1 libpixman-1-0    
   libpoppler-glib3 libpoppler3 libpostproc51 libpt-1.10.10 libpt-1.10.10-plugins-alsa                  
   libpt-1.10.10-plugins-v4l libpth20 libpulse0 librarian0 libregexp-java libsane-extras                
   libschroedinger-1.0-0 libservlet2.4-java libslab0 libsmbios2 libsnmp15 libsoup2.4-1 libspectre1      
   libspeexdsp1 libsplashy1 libsqlite3-0 libssh2-1 libstlport4.6ldbl libsuitesparse-3.1.0               
   libswfdec-0.6-90 libtalloc1 libthai-data libthai0 libtimedate-perl libtotem-plparser10               
   libtrackerclient0 libts-0.0-0 liburi-perl libustr-1.0-1 libvoikko1 libvte9 libwavpack1 libwbclient0  
   libwnck22 libwpg-0.1-1 libwps-0.1-1 libwww-perl libx264-65 libx86-1 libxalan2-java-gcj libxapian15   
   libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xlib0 libxcb-xv0 libxcb1         
   libxcomposite1 libxerces2-java-gcj libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins
   libxine1-plugins libxine1-x libxklavier12 libxml-parser-perl libxml-twig-perl libxvidcore4            
   linux-image-2.6.26-2-686 lp-solve lzma mysql-common netcat-traditional openoffice.org-base-core       
   openoffice.org-filter-mobiledev openoffice.org-officebean openoffice.org-report-builder-bin           
   openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-writer2latex                 
   openprinting-ppds openssl-blacklist oss-compat pkg-config pm-utils python-dbus python-eggtrayicon     
   python-elementtree python-gdata python-gobject python-gtkhtml2 python-gtkmozembed                     
   python-gtksourceview2 python-imaging python-notify python-sepolgen python-software-properties         
   python2.5 python2.5-minimal seahorse software-properties-gtk ssl-cert swfdec-gnome totem-common       
   totem-gstreamer totem-plugins ttf-dejavu-core ttf-dejavu-extra ttf-liberation unattended-upgrades     
   update-manager-core update-notifier-common vinagre x11-apps x11-session-utils x11-utils x11-xfs-utils 
   x11-xkb-utils x11-xserver-utils xauth xinit xserver-xorg-video-intel xserver-xorg-video-mach64        
   xserver-xorg-video-openchrome xserver-xorg-video-r128 xserver-xorg-video-radeon                       
   xserver-xorg-video-radeonhd xulrunner-1.9 xulrunner-1.9-gnome-support                                 
 Les paquets suivants seront mis à jour :                                                                
   acpi acpid adduser alacarte alsa-base alsa-utils anacron apt apt-utils aptitude at avahi-daemon       
   base-files base-passwd bash bc bind9-host binutils bittorrent bluez-gnome bsdmainutils bsdutils bsh   
   bug-buddy busybox bzip2 ca-certificates capplets-data cdrdao console-common console-data console-tools
   coreutils cpio cpp cpp-4.1 cpufrequtils cron cupsys cupsys-bsd cupsys-client cupsys-common            
   cupsys-driver-gutenprint dbus dc debconf debconf-i18n debianutils defoma deskbar-applet desktop-base  
   desktop-file-utils dhcdbd dhcp3-client dhcp3-common dictionaries-common diff discover1 discover1-data 
   dmidecode dnsutils doc-debian doc-linux-text docbook-xml dpkg dpkg-dev dselect dvd+rw-tools e2fslibs  
   e2fsprogs ed eject ekiga eog epiphany-browser epiphany-extensions evince evolution evolution-common   
   evolution-data-server evolution-data-server-common evolution-exchange evolution-plugins               
   evolution-webcal exim4 exim4-base exim4-config exim4-daemon-light fast-user-switch-applet file        
   file-roller findutils finger fontconfig fontconfig-config foomatic-db foomatic-db-engine              
   foomatic-db-gutenprint foomatic-db-hpijs foomatic-filters foomatic-filters-ppds foomatic-gui ftp      
   gcalctool gcc-3.4-base gcc-4.1-base gconf-editor gconf2 gconf2-common gdb gdebi gdm gedit gedit-common
   genisoimage gettext-base gij gimp-data gksu gnome-about gnome-applets gnome-applets-data              
   gnome-backgrounds gnome-btdownload gnome-cards-data gnome-control-center gnome-core gnome-desktop-data
   gnome-desktop-environment gnome-doc-utils gnome-games gnome-games-data gnome-icon-theme gnome-keyring 
   gnome-keyring-manager gnome-media gnome-media-common gnome-menus gnome-mime-data                      
   gnome-netstatus-applet gnome-nettool gnome-panel gnome-panel-data gnome-power-manager                 
   gnome-screensaver gnome-session gnome-system-monitor gnome-system-tools gnome-terminal                
   gnome-terminal-data gnome-themes gnome-user-guide gnome-utils gnome-volume-manager gnomebaker gnupg   
   gparted gpgv grep groff-base grub gs-common gs-esp gsfonts gstreamer0.10-alsa gstreamer0.10-esd       
   gstreamer0.10-ffmpeg gstreamer0.10-gnomevfs gstreamer0.10-plugins-base gstreamer0.10-plugins-good     
   gstreamer0.10-plugins-ugly gtk2-engines gtk2-engines-pixbuf gtkhtml3.8 gucharmap guile-1.6-libs gzip  
   hal hibernate hicolor-icon-theme hostname hotkey-setup hpijs hpijs-ppds hplip hplip-data iamerican    
   ibritish icedax iceweasel iceweasel-gnome-support iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint
   info initramfs-tools initscripts installation-report iproute iptables iputils-arping iputils-ping     
   iso-codes ispell kde-i18n-fr kdelibs-data kdelibs4c2a klibc-utils klogd language-env laptop-detect    
   less liba52-0.7.4 libaa1 libacl1 libao2 libapm1 libart-2.0-2 libarts1c2a libartsc0 libasound2         
   libaspell15 libatk1.0-0 libatm1 libattr1 libaudio2 libaudiofile0 libauthen-pam-perl libavahi-client3  
   libavahi-common-data libavahi-common3 libavahi-glib1 libavahi-qt3-1 libblkid1 libbonobo2-0            
   libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i686 libcaca0             
   libcairo-perl libcairo2 libcdparanoia0 libcomerr2 libconsole libcpufreq0 libcroco3 libcucul0          
   libcupsimage2 libcupsys2 libcurl3 libdaemon0 libdb4.2 libdbus-1-3 libdbus-glib-1-2 libdmx1 libdrm2    
   libdv4 libdvdread3 libedata-book1.2-2 libedit2 libeel2-data libenchant1c2a libevent1 libexif12        
   libexpat1 libfam0 libfontconfig1 libfontenc1 libfreetype6 libfs6 libg2c0 libgail-common libgc1c2      
   libgcc1 libgcj-bc libgcj-common libgconf2-4 libgcrypt11 libgda2-3 libgda2-common libgdl-1-0           
   libgdl-1-common libgimp2.0 libgksu2-0 libgksuui1.0-1 libgl1-mesa-dri libgl1-mesa-glx libglade2-0      
   libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgnome-desktop-2 libgnome-keyring0        
   libgnome-media0 libgnome-menu2 libgnome-pilot2 libgnome-window-settings1 libgnome2-0                  
   libgnome2-canvas-perl libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0            
   libgnomecanvas2-common libgnomecups1.0-1 libgnomeprint2.2-0 libgnomeprint2.2-data libgnomeprintui2.2-0
   libgnomeprintui2.2-common libgnomeui-0 libgnomeui-common libgnomevfs2-0 libgnomevfs2-bin              
   libgnomevfs2-common libgnomevfs2-extra libgpg-error0 libgphoto2-2 libgphoto2-port0 libgsf-1-114       
   libgsf-1-common libgsm1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0   
   libgtk2.0-bin libgtk2.0-common libgtkhtml2-0 libgtkhtml3.8-15 libgtkmm-2.4-1c2a                       
   libgtksourceview-common libgtksourceview1.0-0 libgtkspell0 libgtop2-7 libgtop2-common libguile-ltdl-1 
   libgutenprint2 libgutenprintui2-1 libhal-storage1 libhal1 libhsqldb-java libice6 libidl0 libidn11     
   libieee1284-3 libio-pty-perl libjack0.100.0-0 libjaxp1.3-java libjline-java libjpeg62 libklibc        
   libkpathsea4 libkrb53 liblcms1 liblircclient0 liblocale-gettext-perl liblockfile1 liblua50 liblualib50
   libmad0 libmagic1 libmdbtools libmetacity0 libmodplug0c2 libmozjs0d libmpeg2-4 libmusicbrainz4c2a     
   libnautilus-extension1 libncurses5 libncursesw5 libnet-ssleay-perl libnewt0.52 libnfsidmap2           
   libnm-glib0 libnm-util0 libnotify1 libnspr4-0d libnss-mdns libogg0 liboil0.3 liborbit2 libosp5        
   libpam-modules libpam-runtime libpam0g libpanel-applet2-0 libpango1.0-0 libpango1.0-common libpaper1  
   libpcre3 libpisock9 libpng12-0 libpopt0 libportaudio0 libqt3-mt libqthreads-12 libraw1394-8 
   libreadline5 librpcsecgss3 librsvg2-2 librsvg2-common libsane libsasl2-2 libscrollkeeper0             
   libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsemanage1 libsensors3 libsepol1 libservlet2.3-java
   libsexy2 libshout3 libsidplay1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 libsmbclient libsndfile1   
   libsnmp-base libsoup2.2-8 libspeex1 libss2 libssl0.9.8 libstartup-notification0 libstdc++6 libsvga1   
   libsysfs2 libtag1c2a libtasn1-3 libtasn1-3-bin libtext-charwidth-perl libtext-iconv-perl              
   libtext-wrapi18n-perl libtheora0 libtiff4 libusb-0.1-4 libuuid1 libvisual-0.4-0 libvolume-id0         
   libvorbis0a libvorbisenc2 libvorbisfile3 libvte-common libwmf0.2-7 libwnck-common libwpd8c2a libwrap0 
   libx11-6 libx11-data libxalan2-java libxau6 libxaw7 libxcursor1 libxdamage1 libxdmcp6 libxerces2-java 
   libxext6 libxfixes3 libxfont1 libxft2 libxi6 libxine1 libxinerama1 libxkbfile1 libxml2 libxml2-utils  
   libxmu6 libxmuu1 libxp6 libxpm4 libxrandr2 libxrender1 libxres1 libxslt1.1 libxss1 libxt6 libxtrap6   
   libxtst6 libxul-common libxul0d libxv1 libxvmc1 libxxf86dga1 libxxf86misc1 libxxf86vm1 liferea
   liferea-xulrunner linux-image-2.6-686 linux-sound-base locales login logrotate lsb-base lsb-release
   lsof m4 mailx make makedev man-db manpages manpages-fr manpages-fr-dev manpages-fr-extra mawk mc menu
   menu-xdg metacity metacity-common mime-support mkisofs mktemp module-init-tools mount mpack mtools
   mtr-tiny mutt myspell-en-us myspell-fr-gut nano nautilus nautilus-cd-burner nautilus-data ncurses-base
   ncurses-bin ncurses-term net-tools netbase netcat network-manager network-manager-gnome nfs-common
   nfs-kernel-server notification-daemon ntp openbsd-inetd openoffice.org openoffice.org-base
   openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw
   openoffice.org-evolution openoffice.org-gcj openoffice.org-gnome openoffice.org-gtk
   openoffice.org-help-en-us openoffice.org-help-fr openoffice.org-impress openoffice.org-java-common
   openoffice.org-l10n-fr openoffice.org-math openoffice.org-thesaurus-en-us openoffice.org-writer
   openssh-blacklist openssh-client openssh-server openssl passwd patch pciutils perl perl-base
   perl-modules pidentd pmount policycoreutils poppler-utils portmap powermgmt-base printconf procps
   psmisc python python-apt python-cairo python-central python-foomatic python-glade2 python-gmenu
   python-gnome2 python-gnome2-desktop python-gnome2-extras python-gtk2 python-ipy python-libxml2
   python-minimal python-newt python-numeric python-pyorbit python-qt3 python-selinux python-semanage
   python-sip4 python-support python-uno python-vte python2.4 python2.4-minimal rdesktop readline-common
   reportbug rhythmbox scrollkeeper sed shared-mime-info sharutils sound-juicer strace sudo svgalibg1
   synaptic sysklogd system-tools-backends sysv-rc sysvinit sysvinit-utils tar tasksel tasksel-data tcpd
   telnet texinfo time totem totem-mozilla totem-xine traceroute tsclient ttf-dejavu ttf-opensymbol twm
   type-handling tzdata ucf udev unzip update-inetd update-manager update-notifier usbutils uswsusp
   util-linux vbetool vim-common vim-tiny vino w3m wamerican wfrench wget whiptail whois wodim
   wpasupplicant x11-common xbase-clients xdg-utils xfonts-100dpi xfonts-75dpi xfonts-base 
   xfonts-encodings xfonts-utils xkb-data xml-core xorg xresprobe xsane xsane-common xserver-xorg
   xserver-xorg-core xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd
   xserver-xorg-input-mouse xserver-xorg-input-synaptics xserver-xorg-input-wacom xserver-xorg-video-all
   xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati xserver-xorg-video-chips
   xserver-xorg-video-cirrus xserver-xorg-video-cyrix xserver-xorg-video-dummy xserver-xorg-video-fbdev
   xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-i740 xserver-xorg-video-i810
   xserver-xorg-video-imstt xserver-xorg-video-mga xserver-xorg-video-neomagic xserver-xorg-video-nsc
   xserver-xorg-video-nv xserver-xorg-video-rendition xserver-xorg-video-s3 xserver-xorg-video-s3virge
   xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis
   xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident
   xserver-xorg-video-tseng xserver-xorg-video-v4l xserver-xorg-video-vesa xserver-xorg-video-vga
   xserver-xorg-video-via xserver-xorg-video-vmware xserver-xorg-video-voodoo xsltproc xterm
   xulrunner-gnome-support xutils xutils-dev yelp zenity zlib1g
 729 mis à jour, 294 nouvellement installés, 15 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 869Mo dans les archives.
 Après dépaquetage, 647Mo d'espace disque supplémentaires seront utilisés.
 Souhaitez-vous continuer [O/n] ?

En fonction de votre connexion ça peut prendre des plombes...
Un conseil, si vous n'êtes pas sûr de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

 # apt-get -d upgrade

Puis

 # apt-get dist-upgrade

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut

[[Image:Capture150.jpeg]]

[[Image:Capture151.jpeg]]

[[Image:Capture153.jpeg]]

[[Image:Capture154.jpeg]]

[[Image:Capture156.jpeg]]

[[Image:Capture158.jpeg]]

[[Image:Capture159.jpeg]]

[[Image:Capture160.jpeg]]

[[Image:Capture161.jpeg]]

Sans le téléchargement des fichiers, comptez environ 50 minutes pour l'upgrade.

 # reboot

 $ uname -a
 Linux compta2 2.6.26-2-686 #1 SMP Thu Mar 11 23:19:46 UTC 2010 i686 GNU/Linux

A venir... Upgrade de Lenny à Squeeze !

----
--[[Utilisateur:Lol|Lol]] 9 avril 2010 à 13:55 (UTC)</text>
      <sha1>hw9866e0h0fzufs2nhpvjtu5cyr8trk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2097</id>
      <parentid>1645</parentid>
      <timestamp>2010-09-15T17:06:08Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="20291">{{sid}}

Comment passer de Etch à Lenny

Attention : Ce Document est basé sur l'upgrade d'une machine de bureau, pas d'un serveur !

Cette question n'est bien évidemment plus d'actualité, presque tout le monde est déjà sous Lenny.
Mais pour les retardataires, et en vue du passage de squeeze en stable, il faut se réveiller !

Je part du principe que vous n’avez pas installé de pilotes propriétaires pour vos cartes graphiques.
Le changement de noyau ferait planter votre serveur X.
Modifiez votre xorg.conf afin d'utiliser des pilotes Debian avant cet upgrade, a moins que vous ne les réinstalliez juste après.

Votre machine doit être à jour avant de vous lancer

 # aptitude upgrade

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition ou se trouve /var pour le stockage des paquets téléchargés.

Pour connaître l’espace libre de votre partition racine :

 $ df -h /
 Sys. de fich.         Tail. Occ. Disp. %Occ. Monté sur
 /dev/hda1              23G  2,6G   20G  12% /

Si vous disposez de plus de 50% d’espace libre vous pouvez passer au chapitre suivant. Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Modifiez votre sources.list et ajoutez Lenny (il suffit de copier coller les lignes avec Etch et de mettre Lenny à la place.)

 # nano /etc/apt/sources.list
 
 ###### Debian Main Repos
 deb http://ftp.fr.debian.org/debian/ etch main contrib non-free
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free 
 
 ###### Debian Security &amp; Update Repos
 deb http://security.debian.org/ etch/updates main contrib non-free
 deb http://ftp.fr.debian.org/debian/ etch-proposed-updates main contrib non-free
 deb http://security.debian.org/ lenny/updates main contrib non-free
 deb http://ftp.fr.debian.org/debian/ lenny-proposed-updates main contrib non-free
 
 #### Debian Backports
 deb http://www.backports.org/debian/ etch-backports main contrib
 deb http://www.backports.org/debian/ lenny-backports main contrib non-free
 
 #### Debian Multimedia
 deb http://www.debian-multimedia.org/ etch main contrib
 deb http://www.debian-multimedia.org/ lenny main contrib non-free

Maintenant faites un update pour mettre à jour la liste des paquets :

 # aptitude update

 Quelques erreurs risques d'arriver...

 W: GPG error: http://www.debian-multimedia.org

# Des problèmes de clés GPG [[Erreur_lors_d'un_update:_NO_PUBKEY]]
 # apt-get install debian-backports-keyring
 # apt-get install debian-multimedia-keyring

 E: Dynamic MMap ran out of room

# Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]]
 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaite l'update, il ne doit pas y avoir d'erreurs

 # aptitude update
 
  234ko téléchargés en 1m7s (3466o/s)
 Lecture des listes de paquets... Fait

IMPORTANT : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

Lancez l'upgrade

 # apt-get dist-upgrade                             
 Lecture des listes de paquets... Fait                       
 Construction de l'arbre des dépendances... Fait             
 Calcul de la mise à jour... Fait                            
 Les paquets suivants seront ENLEVÉS :                       
   dbus-1-utils gimp gimp-print gnome-themes-extras libdiscover1 libgssapi2 libnl1-pre6 libopal-2.2.0
   libpci2 libpt-plugins-alsa libpt-plugins-v4l libsasl2 libstlport4.6c2 libvte4                     
   xserver-xorg-video-newport                                                                        
 Les NOUVEAUX paquets suivants seront installés :                                                    
   bsd-mailx bsh-gcj cheese cpp-4.3 cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk
   cupsddk-drivers dbus-x11 discover discover-data djvulibre-desktop dmz-cursor-theme                   
   epiphany-browser-data epiphany-gecko fastjar freetds-common gcc-4.3-base gcj-4.3-base gdebi-core     
   ghostscript ghostscript-x gij-4.3 gnome-mount gnome-network-admin gnome-settings-daemon gnuchess     
   grub-common gstreamer0.10-tools gstreamer0.10-x gtkhtml3.14 guile-1.8-libs hal-info java-common      
   java-gcj-compat java-gcj-compat-headless libamrnb3 libamrwb3 libasyncns0 libavahi-compat-libdnssd1   
   libavahi-core5 libavahi-gobject0 libavahi-ui0 libavcodec51 libavformat52 libavutil49 libbcel-java    
   libbind9-40 libblas3gf libbluetooth2 libcairomm-1.0-1 libcamel1.2-11 libcap2 libcdio7 libct4 libcups2
   libcurl3-gnutls libcwidget3 libdatrie0 libdb4.5 libdb4.6 libdevmapper1.02.1 libdirac0                
   libdirectfb-1.0-0 libdirectfb-extra libdiscover2 libdjvulibre21 libdns45 libebook1.2-9 libecal1.2-7  
   libedata-cal1.2-6 libedataserver1.2-9 libedataserverui1.2-8 libeel2-2.20 libegroupwise1.2-13 libelfg0
   libepc-1.0-1 libepc-ui-1.0-1 libept0 libexchange-storage1.2-3 libexempi3 libfaac0 libfaad0 libffi5   
   libflac8 libfreebob0 libgail18 libgalago3 libgcj9-0 libgcj9-0-awt libgcj9-jar libgd2-noxpm libgda3-3 
   libgda3-common libgdata-google1.2-1 libgdata1.2-1 libgfortran3 libggz2 libggzcore9 libggzmod4        
   libgmp3c2 libgmyth0 libgnomekbd-common libgnomekbd2 libgnomekbdui2 libgnutls26 libgpgme11 libgpm2    
   libgpod3 libgraphviz4 libgs8 libgssglue1 libgtk-vnc-1.0-0 libgtkhtml3.14-19 libgtksourceview2.0-0    
   libgtksourceview2.0-common libgucharmap6 libgweather-common libgweather1 libhsqldb-java-gcj          
   libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libicu38      
   libilmbase6 libisc45 libisccc40 libisccfg40 libiw29 libjack0 libjasper1 libjaxp1.3-java-gcj          
   libkeyutils1 liblapack3gf libldap-2.4-2 liblog4j1.2-java libltdl3 liblua5.1-0 liblwres40 liblzo2-2   
   libmagick10 libmalaga7 libmozjs1d libmp3lame0 libmpcdec3 libmpfr1ldbl libmtp7 libmx4j-java           
   libmysqlclient15off libnautilus-burn4 libneon27 libnet-dbus-perl libnl1 libnss3-1d liboobs-1-4       
   libopal-2.2 libopenexr6 libparted1.8-10 libpci3 libpcsclite1 libperl5.10 libpisync1 libpixman-1-0    
   libpoppler-glib3 libpoppler3 libpostproc51 libpt-1.10.10 libpt-1.10.10-plugins-alsa                  
   libpt-1.10.10-plugins-v4l libpth20 libpulse0 librarian0 libregexp-java libsane-extras                
   libschroedinger-1.0-0 libservlet2.4-java libslab0 libsmbios2 libsnmp15 libsoup2.4-1 libspectre1      
   libspeexdsp1 libsplashy1 libsqlite3-0 libssh2-1 libstlport4.6ldbl libsuitesparse-3.1.0               
   libswfdec-0.6-90 libtalloc1 libthai-data libthai0 libtimedate-perl libtotem-plparser10               
   libtrackerclient0 libts-0.0-0 liburi-perl libustr-1.0-1 libvoikko1 libvte9 libwavpack1 libwbclient0  
   libwnck22 libwpg-0.1-1 libwps-0.1-1 libwww-perl libx264-65 libx86-1 libxalan2-java-gcj libxapian15   
   libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xlib0 libxcb-xv0 libxcb1         
   libxcomposite1 libxerces2-java-gcj libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins
   libxine1-plugins libxine1-x libxklavier12 libxml-parser-perl libxml-twig-perl libxvidcore4            
   linux-image-2.6.26-2-686 lp-solve lzma mysql-common netcat-traditional openoffice.org-base-core       
   openoffice.org-filter-mobiledev openoffice.org-officebean openoffice.org-report-builder-bin           
   openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-writer2latex                 
   openprinting-ppds openssl-blacklist oss-compat pkg-config pm-utils python-dbus python-eggtrayicon     
   python-elementtree python-gdata python-gobject python-gtkhtml2 python-gtkmozembed                     
   python-gtksourceview2 python-imaging python-notify python-sepolgen python-software-properties         
   python2.5 python2.5-minimal seahorse software-properties-gtk ssl-cert swfdec-gnome totem-common       
   totem-gstreamer totem-plugins ttf-dejavu-core ttf-dejavu-extra ttf-liberation unattended-upgrades     
   update-manager-core update-notifier-common vinagre x11-apps x11-session-utils x11-utils x11-xfs-utils 
   x11-xkb-utils x11-xserver-utils xauth xinit xserver-xorg-video-intel xserver-xorg-video-mach64        
   xserver-xorg-video-openchrome xserver-xorg-video-r128 xserver-xorg-video-radeon                       
   xserver-xorg-video-radeonhd xulrunner-1.9 xulrunner-1.9-gnome-support                                 
 Les paquets suivants seront mis à jour :                                                                
   acpi acpid adduser alacarte alsa-base alsa-utils anacron apt apt-utils aptitude at avahi-daemon       
   base-files base-passwd bash bc bind9-host binutils bittorrent bluez-gnome bsdmainutils bsdutils bsh   
   bug-buddy busybox bzip2 ca-certificates capplets-data cdrdao console-common console-data console-tools
   coreutils cpio cpp cpp-4.1 cpufrequtils cron cupsys cupsys-bsd cupsys-client cupsys-common            
   cupsys-driver-gutenprint dbus dc debconf debconf-i18n debianutils defoma deskbar-applet desktop-base  
   desktop-file-utils dhcdbd dhcp3-client dhcp3-common dictionaries-common diff discover1 discover1-data 
   dmidecode dnsutils doc-debian doc-linux-text docbook-xml dpkg dpkg-dev dselect dvd+rw-tools e2fslibs  
   e2fsprogs ed eject ekiga eog epiphany-browser epiphany-extensions evince evolution evolution-common   
   evolution-data-server evolution-data-server-common evolution-exchange evolution-plugins               
   evolution-webcal exim4 exim4-base exim4-config exim4-daemon-light fast-user-switch-applet file        
   file-roller findutils finger fontconfig fontconfig-config foomatic-db foomatic-db-engine              
   foomatic-db-gutenprint foomatic-db-hpijs foomatic-filters foomatic-filters-ppds foomatic-gui ftp      
   gcalctool gcc-3.4-base gcc-4.1-base gconf-editor gconf2 gconf2-common gdb gdebi gdm gedit gedit-common
   genisoimage gettext-base gij gimp-data gksu gnome-about gnome-applets gnome-applets-data              
   gnome-backgrounds gnome-btdownload gnome-cards-data gnome-control-center gnome-core gnome-desktop-data
   gnome-desktop-environment gnome-doc-utils gnome-games gnome-games-data gnome-icon-theme gnome-keyring 
   gnome-keyring-manager gnome-media gnome-media-common gnome-menus gnome-mime-data                      
   gnome-netstatus-applet gnome-nettool gnome-panel gnome-panel-data gnome-power-manager                 
   gnome-screensaver gnome-session gnome-system-monitor gnome-system-tools gnome-terminal                
   gnome-terminal-data gnome-themes gnome-user-guide gnome-utils gnome-volume-manager gnomebaker gnupg   
   gparted gpgv grep groff-base grub gs-common gs-esp gsfonts gstreamer0.10-alsa gstreamer0.10-esd       
   gstreamer0.10-ffmpeg gstreamer0.10-gnomevfs gstreamer0.10-plugins-base gstreamer0.10-plugins-good     
   gstreamer0.10-plugins-ugly gtk2-engines gtk2-engines-pixbuf gtkhtml3.8 gucharmap guile-1.6-libs gzip  
   hal hibernate hicolor-icon-theme hostname hotkey-setup hpijs hpijs-ppds hplip hplip-data iamerican    
   ibritish icedax iceweasel iceweasel-gnome-support iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint
   info initramfs-tools initscripts installation-report iproute iptables iputils-arping iputils-ping     
   iso-codes ispell kde-i18n-fr kdelibs-data kdelibs4c2a klibc-utils klogd language-env laptop-detect    
   less liba52-0.7.4 libaa1 libacl1 libao2 libapm1 libart-2.0-2 libarts1c2a libartsc0 libasound2         
   libaspell15 libatk1.0-0 libatm1 libattr1 libaudio2 libaudiofile0 libauthen-pam-perl libavahi-client3  
   libavahi-common-data libavahi-common3 libavahi-glib1 libavahi-qt3-1 libblkid1 libbonobo2-0            
   libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i686 libcaca0             
   libcairo-perl libcairo2 libcdparanoia0 libcomerr2 libconsole libcpufreq0 libcroco3 libcucul0          
   libcupsimage2 libcupsys2 libcurl3 libdaemon0 libdb4.2 libdbus-1-3 libdbus-glib-1-2 libdmx1 libdrm2    
   libdv4 libdvdread3 libedata-book1.2-2 libedit2 libeel2-data libenchant1c2a libevent1 libexif12        
   libexpat1 libfam0 libfontconfig1 libfontenc1 libfreetype6 libfs6 libg2c0 libgail-common libgc1c2      
   libgcc1 libgcj-bc libgcj-common libgconf2-4 libgcrypt11 libgda2-3 libgda2-common libgdl-1-0           
   libgdl-1-common libgimp2.0 libgksu2-0 libgksuui1.0-1 libgl1-mesa-dri libgl1-mesa-glx libglade2-0      
   libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgnome-desktop-2 libgnome-keyring0        
   libgnome-media0 libgnome-menu2 libgnome-pilot2 libgnome-window-settings1 libgnome2-0                  
   libgnome2-canvas-perl libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0            
   libgnomecanvas2-common libgnomecups1.0-1 libgnomeprint2.2-0 libgnomeprint2.2-data libgnomeprintui2.2-0
   libgnomeprintui2.2-common libgnomeui-0 libgnomeui-common libgnomevfs2-0 libgnomevfs2-bin              
   libgnomevfs2-common libgnomevfs2-extra libgpg-error0 libgphoto2-2 libgphoto2-port0 libgsf-1-114       
   libgsf-1-common libgsm1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0   
   libgtk2.0-bin libgtk2.0-common libgtkhtml2-0 libgtkhtml3.8-15 libgtkmm-2.4-1c2a                       
   libgtksourceview-common libgtksourceview1.0-0 libgtkspell0 libgtop2-7 libgtop2-common libguile-ltdl-1 
   libgutenprint2 libgutenprintui2-1 libhal-storage1 libhal1 libhsqldb-java libice6 libidl0 libidn11     
   libieee1284-3 libio-pty-perl libjack0.100.0-0 libjaxp1.3-java libjline-java libjpeg62 libklibc        
   libkpathsea4 libkrb53 liblcms1 liblircclient0 liblocale-gettext-perl liblockfile1 liblua50 liblualib50
   libmad0 libmagic1 libmdbtools libmetacity0 libmodplug0c2 libmozjs0d libmpeg2-4 libmusicbrainz4c2a     
   libnautilus-extension1 libncurses5 libncursesw5 libnet-ssleay-perl libnewt0.52 libnfsidmap2           
   libnm-glib0 libnm-util0 libnotify1 libnspr4-0d libnss-mdns libogg0 liboil0.3 liborbit2 libosp5        
   libpam-modules libpam-runtime libpam0g libpanel-applet2-0 libpango1.0-0 libpango1.0-common libpaper1  
   libpcre3 libpisock9 libpng12-0 libpopt0 libportaudio0 libqt3-mt libqthreads-12 libraw1394-8 
   libreadline5 librpcsecgss3 librsvg2-2 librsvg2-common libsane libsasl2-2 libscrollkeeper0             
   libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsemanage1 libsensors3 libsepol1 libservlet2.3-java
   libsexy2 libshout3 libsidplay1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 libsmbclient libsndfile1   
   libsnmp-base libsoup2.2-8 libspeex1 libss2 libssl0.9.8 libstartup-notification0 libstdc++6 libsvga1   
   libsysfs2 libtag1c2a libtasn1-3 libtasn1-3-bin libtext-charwidth-perl libtext-iconv-perl              
   libtext-wrapi18n-perl libtheora0 libtiff4 libusb-0.1-4 libuuid1 libvisual-0.4-0 libvolume-id0         
   libvorbis0a libvorbisenc2 libvorbisfile3 libvte-common libwmf0.2-7 libwnck-common libwpd8c2a libwrap0 
   libx11-6 libx11-data libxalan2-java libxau6 libxaw7 libxcursor1 libxdamage1 libxdmcp6 libxerces2-java 
   libxext6 libxfixes3 libxfont1 libxft2 libxi6 libxine1 libxinerama1 libxkbfile1 libxml2 libxml2-utils  
   libxmu6 libxmuu1 libxp6 libxpm4 libxrandr2 libxrender1 libxres1 libxslt1.1 libxss1 libxt6 libxtrap6   
   libxtst6 libxul-common libxul0d libxv1 libxvmc1 libxxf86dga1 libxxf86misc1 libxxf86vm1 liferea
   liferea-xulrunner linux-image-2.6-686 linux-sound-base locales login logrotate lsb-base lsb-release
   lsof m4 mailx make makedev man-db manpages manpages-fr manpages-fr-dev manpages-fr-extra mawk mc menu
   menu-xdg metacity metacity-common mime-support mkisofs mktemp module-init-tools mount mpack mtools
   mtr-tiny mutt myspell-en-us myspell-fr-gut nano nautilus nautilus-cd-burner nautilus-data ncurses-base
   ncurses-bin ncurses-term net-tools netbase netcat network-manager network-manager-gnome nfs-common
   nfs-kernel-server notification-daemon ntp openbsd-inetd openoffice.org openoffice.org-base
   openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw
   openoffice.org-evolution openoffice.org-gcj openoffice.org-gnome openoffice.org-gtk
   openoffice.org-help-en-us openoffice.org-help-fr openoffice.org-impress openoffice.org-java-common
   openoffice.org-l10n-fr openoffice.org-math openoffice.org-thesaurus-en-us openoffice.org-writer
   openssh-blacklist openssh-client openssh-server openssl passwd patch pciutils perl perl-base
   perl-modules pidentd pmount policycoreutils poppler-utils portmap powermgmt-base printconf procps
   psmisc python python-apt python-cairo python-central python-foomatic python-glade2 python-gmenu
   python-gnome2 python-gnome2-desktop python-gnome2-extras python-gtk2 python-ipy python-libxml2
   python-minimal python-newt python-numeric python-pyorbit python-qt3 python-selinux python-semanage
   python-sip4 python-support python-uno python-vte python2.4 python2.4-minimal rdesktop readline-common
   reportbug rhythmbox scrollkeeper sed shared-mime-info sharutils sound-juicer strace sudo svgalibg1
   synaptic sysklogd system-tools-backends sysv-rc sysvinit sysvinit-utils tar tasksel tasksel-data tcpd
   telnet texinfo time totem totem-mozilla totem-xine traceroute tsclient ttf-dejavu ttf-opensymbol twm
   type-handling tzdata ucf udev unzip update-inetd update-manager update-notifier usbutils uswsusp
   util-linux vbetool vim-common vim-tiny vino w3m wamerican wfrench wget whiptail whois wodim
   wpasupplicant x11-common xbase-clients xdg-utils xfonts-100dpi xfonts-75dpi xfonts-base 
   xfonts-encodings xfonts-utils xkb-data xml-core xorg xresprobe xsane xsane-common xserver-xorg
   xserver-xorg-core xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd
   xserver-xorg-input-mouse xserver-xorg-input-synaptics xserver-xorg-input-wacom xserver-xorg-video-all
   xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati xserver-xorg-video-chips
   xserver-xorg-video-cirrus xserver-xorg-video-cyrix xserver-xorg-video-dummy xserver-xorg-video-fbdev
   xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-i740 xserver-xorg-video-i810
   xserver-xorg-video-imstt xserver-xorg-video-mga xserver-xorg-video-neomagic xserver-xorg-video-nsc
   xserver-xorg-video-nv xserver-xorg-video-rendition xserver-xorg-video-s3 xserver-xorg-video-s3virge
   xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis
   xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident
   xserver-xorg-video-tseng xserver-xorg-video-v4l xserver-xorg-video-vesa xserver-xorg-video-vga
   xserver-xorg-video-via xserver-xorg-video-vmware xserver-xorg-video-voodoo xsltproc xterm
   xulrunner-gnome-support xutils xutils-dev yelp zenity zlib1g
 729 mis à jour, 294 nouvellement installés, 15 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 869Mo dans les archives.
 Après dépaquetage, 647Mo d'espace disque supplémentaires seront utilisés.
 Souhaitez-vous continuer [O/n] ?

En fonction de votre connexion ça peut prendre des plombes...
Un conseil, si vous n'êtes pas sûr de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

 # apt-get -d upgrade

Puis

 # apt-get dist-upgrade

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut

[[Image:Capture150.jpeg]]

[[Image:Capture151.jpeg]]

[[Image:Capture153.jpeg]]

[[Image:Capture154.jpeg]]

[[Image:Capture156.jpeg]]

[[Image:Capture158.jpeg]]

[[Image:Capture159.jpeg]]

[[Image:Capture160.jpeg]]

[[Image:Capture161.jpeg]]

Sans le téléchargement des fichiers, comptez environ 50 minutes pour l'upgrade.

 # reboot

 $ uname -a
 Linux compta2 2.6.26-2-686 #1 SMP Thu Mar 11 23:19:46 UTC 2010 i686 GNU/Linux

A venir... Upgrade de Lenny à Squeeze !

----
--[[Utilisateur:Lol|Lol]] 9 avril 2010 à 13:55 (UTC)

[[Catégorie:Installation]]</text>
      <sha1>hoxtnmnxguh6ufbj7xio1n2c3pn8afg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2753</id>
      <parentid>2097</parentid>
      <timestamp>2011-03-26T13:24:35Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>a renommé [[Upgrade de Etch à Lenny]] en [[Mise à niveau (upgrade) de Etch à Lenny]] : Harmonisation titre</comment>
      <text xml:space="preserve" bytes="20291">{{sid}}

Comment passer de Etch à Lenny

Attention : Ce Document est basé sur l'upgrade d'une machine de bureau, pas d'un serveur !

Cette question n'est bien évidemment plus d'actualité, presque tout le monde est déjà sous Lenny.
Mais pour les retardataires, et en vue du passage de squeeze en stable, il faut se réveiller !

Je part du principe que vous n’avez pas installé de pilotes propriétaires pour vos cartes graphiques.
Le changement de noyau ferait planter votre serveur X.
Modifiez votre xorg.conf afin d'utiliser des pilotes Debian avant cet upgrade, a moins que vous ne les réinstalliez juste après.

Votre machine doit être à jour avant de vous lancer

 # aptitude upgrade

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition ou se trouve /var pour le stockage des paquets téléchargés.

Pour connaître l’espace libre de votre partition racine :

 $ df -h /
 Sys. de fich.         Tail. Occ. Disp. %Occ. Monté sur
 /dev/hda1              23G  2,6G   20G  12% /

Si vous disposez de plus de 50% d’espace libre vous pouvez passer au chapitre suivant. Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Modifiez votre sources.list et ajoutez Lenny (il suffit de copier coller les lignes avec Etch et de mettre Lenny à la place.)

 # nano /etc/apt/sources.list
 
 ###### Debian Main Repos
 deb http://ftp.fr.debian.org/debian/ etch main contrib non-free
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free 
 
 ###### Debian Security &amp; Update Repos
 deb http://security.debian.org/ etch/updates main contrib non-free
 deb http://ftp.fr.debian.org/debian/ etch-proposed-updates main contrib non-free
 deb http://security.debian.org/ lenny/updates main contrib non-free
 deb http://ftp.fr.debian.org/debian/ lenny-proposed-updates main contrib non-free
 
 #### Debian Backports
 deb http://www.backports.org/debian/ etch-backports main contrib
 deb http://www.backports.org/debian/ lenny-backports main contrib non-free
 
 #### Debian Multimedia
 deb http://www.debian-multimedia.org/ etch main contrib
 deb http://www.debian-multimedia.org/ lenny main contrib non-free

Maintenant faites un update pour mettre à jour la liste des paquets :

 # aptitude update

 Quelques erreurs risques d'arriver...

 W: GPG error: http://www.debian-multimedia.org

# Des problèmes de clés GPG [[Erreur_lors_d'un_update:_NO_PUBKEY]]
 # apt-get install debian-backports-keyring
 # apt-get install debian-multimedia-keyring

 E: Dynamic MMap ran out of room

# Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]]
 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaite l'update, il ne doit pas y avoir d'erreurs

 # aptitude update
 
  234ko téléchargés en 1m7s (3466o/s)
 Lecture des listes de paquets... Fait

IMPORTANT : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

Lancez l'upgrade

 # apt-get dist-upgrade                             
 Lecture des listes de paquets... Fait                       
 Construction de l'arbre des dépendances... Fait             
 Calcul de la mise à jour... Fait                            
 Les paquets suivants seront ENLEVÉS :                       
   dbus-1-utils gimp gimp-print gnome-themes-extras libdiscover1 libgssapi2 libnl1-pre6 libopal-2.2.0
   libpci2 libpt-plugins-alsa libpt-plugins-v4l libsasl2 libstlport4.6c2 libvte4                     
   xserver-xorg-video-newport                                                                        
 Les NOUVEAUX paquets suivants seront installés :                                                    
   bsd-mailx bsh-gcj cheese cpp-4.3 cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk
   cupsddk-drivers dbus-x11 discover discover-data djvulibre-desktop dmz-cursor-theme                   
   epiphany-browser-data epiphany-gecko fastjar freetds-common gcc-4.3-base gcj-4.3-base gdebi-core     
   ghostscript ghostscript-x gij-4.3 gnome-mount gnome-network-admin gnome-settings-daemon gnuchess     
   grub-common gstreamer0.10-tools gstreamer0.10-x gtkhtml3.14 guile-1.8-libs hal-info java-common      
   java-gcj-compat java-gcj-compat-headless libamrnb3 libamrwb3 libasyncns0 libavahi-compat-libdnssd1   
   libavahi-core5 libavahi-gobject0 libavahi-ui0 libavcodec51 libavformat52 libavutil49 libbcel-java    
   libbind9-40 libblas3gf libbluetooth2 libcairomm-1.0-1 libcamel1.2-11 libcap2 libcdio7 libct4 libcups2
   libcurl3-gnutls libcwidget3 libdatrie0 libdb4.5 libdb4.6 libdevmapper1.02.1 libdirac0                
   libdirectfb-1.0-0 libdirectfb-extra libdiscover2 libdjvulibre21 libdns45 libebook1.2-9 libecal1.2-7  
   libedata-cal1.2-6 libedataserver1.2-9 libedataserverui1.2-8 libeel2-2.20 libegroupwise1.2-13 libelfg0
   libepc-1.0-1 libepc-ui-1.0-1 libept0 libexchange-storage1.2-3 libexempi3 libfaac0 libfaad0 libffi5   
   libflac8 libfreebob0 libgail18 libgalago3 libgcj9-0 libgcj9-0-awt libgcj9-jar libgd2-noxpm libgda3-3 
   libgda3-common libgdata-google1.2-1 libgdata1.2-1 libgfortran3 libggz2 libggzcore9 libggzmod4        
   libgmp3c2 libgmyth0 libgnomekbd-common libgnomekbd2 libgnomekbdui2 libgnutls26 libgpgme11 libgpm2    
   libgpod3 libgraphviz4 libgs8 libgssglue1 libgtk-vnc-1.0-0 libgtkhtml3.14-19 libgtksourceview2.0-0    
   libgtksourceview2.0-common libgucharmap6 libgweather-common libgweather1 libhsqldb-java-gcj          
   libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libicu38      
   libilmbase6 libisc45 libisccc40 libisccfg40 libiw29 libjack0 libjasper1 libjaxp1.3-java-gcj          
   libkeyutils1 liblapack3gf libldap-2.4-2 liblog4j1.2-java libltdl3 liblua5.1-0 liblwres40 liblzo2-2   
   libmagick10 libmalaga7 libmozjs1d libmp3lame0 libmpcdec3 libmpfr1ldbl libmtp7 libmx4j-java           
   libmysqlclient15off libnautilus-burn4 libneon27 libnet-dbus-perl libnl1 libnss3-1d liboobs-1-4       
   libopal-2.2 libopenexr6 libparted1.8-10 libpci3 libpcsclite1 libperl5.10 libpisync1 libpixman-1-0    
   libpoppler-glib3 libpoppler3 libpostproc51 libpt-1.10.10 libpt-1.10.10-plugins-alsa                  
   libpt-1.10.10-plugins-v4l libpth20 libpulse0 librarian0 libregexp-java libsane-extras                
   libschroedinger-1.0-0 libservlet2.4-java libslab0 libsmbios2 libsnmp15 libsoup2.4-1 libspectre1      
   libspeexdsp1 libsplashy1 libsqlite3-0 libssh2-1 libstlport4.6ldbl libsuitesparse-3.1.0               
   libswfdec-0.6-90 libtalloc1 libthai-data libthai0 libtimedate-perl libtotem-plparser10               
   libtrackerclient0 libts-0.0-0 liburi-perl libustr-1.0-1 libvoikko1 libvte9 libwavpack1 libwbclient0  
   libwnck22 libwpg-0.1-1 libwps-0.1-1 libwww-perl libx264-65 libx86-1 libxalan2-java-gcj libxapian15   
   libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xlib0 libxcb-xv0 libxcb1         
   libxcomposite1 libxerces2-java-gcj libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins
   libxine1-plugins libxine1-x libxklavier12 libxml-parser-perl libxml-twig-perl libxvidcore4            
   linux-image-2.6.26-2-686 lp-solve lzma mysql-common netcat-traditional openoffice.org-base-core       
   openoffice.org-filter-mobiledev openoffice.org-officebean openoffice.org-report-builder-bin           
   openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-writer2latex                 
   openprinting-ppds openssl-blacklist oss-compat pkg-config pm-utils python-dbus python-eggtrayicon     
   python-elementtree python-gdata python-gobject python-gtkhtml2 python-gtkmozembed                     
   python-gtksourceview2 python-imaging python-notify python-sepolgen python-software-properties         
   python2.5 python2.5-minimal seahorse software-properties-gtk ssl-cert swfdec-gnome totem-common       
   totem-gstreamer totem-plugins ttf-dejavu-core ttf-dejavu-extra ttf-liberation unattended-upgrades     
   update-manager-core update-notifier-common vinagre x11-apps x11-session-utils x11-utils x11-xfs-utils 
   x11-xkb-utils x11-xserver-utils xauth xinit xserver-xorg-video-intel xserver-xorg-video-mach64        
   xserver-xorg-video-openchrome xserver-xorg-video-r128 xserver-xorg-video-radeon                       
   xserver-xorg-video-radeonhd xulrunner-1.9 xulrunner-1.9-gnome-support                                 
 Les paquets suivants seront mis à jour :                                                                
   acpi acpid adduser alacarte alsa-base alsa-utils anacron apt apt-utils aptitude at avahi-daemon       
   base-files base-passwd bash bc bind9-host binutils bittorrent bluez-gnome bsdmainutils bsdutils bsh   
   bug-buddy busybox bzip2 ca-certificates capplets-data cdrdao console-common console-data console-tools
   coreutils cpio cpp cpp-4.1 cpufrequtils cron cupsys cupsys-bsd cupsys-client cupsys-common            
   cupsys-driver-gutenprint dbus dc debconf debconf-i18n debianutils defoma deskbar-applet desktop-base  
   desktop-file-utils dhcdbd dhcp3-client dhcp3-common dictionaries-common diff discover1 discover1-data 
   dmidecode dnsutils doc-debian doc-linux-text docbook-xml dpkg dpkg-dev dselect dvd+rw-tools e2fslibs  
   e2fsprogs ed eject ekiga eog epiphany-browser epiphany-extensions evince evolution evolution-common   
   evolution-data-server evolution-data-server-common evolution-exchange evolution-plugins               
   evolution-webcal exim4 exim4-base exim4-config exim4-daemon-light fast-user-switch-applet file        
   file-roller findutils finger fontconfig fontconfig-config foomatic-db foomatic-db-engine              
   foomatic-db-gutenprint foomatic-db-hpijs foomatic-filters foomatic-filters-ppds foomatic-gui ftp      
   gcalctool gcc-3.4-base gcc-4.1-base gconf-editor gconf2 gconf2-common gdb gdebi gdm gedit gedit-common
   genisoimage gettext-base gij gimp-data gksu gnome-about gnome-applets gnome-applets-data              
   gnome-backgrounds gnome-btdownload gnome-cards-data gnome-control-center gnome-core gnome-desktop-data
   gnome-desktop-environment gnome-doc-utils gnome-games gnome-games-data gnome-icon-theme gnome-keyring 
   gnome-keyring-manager gnome-media gnome-media-common gnome-menus gnome-mime-data                      
   gnome-netstatus-applet gnome-nettool gnome-panel gnome-panel-data gnome-power-manager                 
   gnome-screensaver gnome-session gnome-system-monitor gnome-system-tools gnome-terminal                
   gnome-terminal-data gnome-themes gnome-user-guide gnome-utils gnome-volume-manager gnomebaker gnupg   
   gparted gpgv grep groff-base grub gs-common gs-esp gsfonts gstreamer0.10-alsa gstreamer0.10-esd       
   gstreamer0.10-ffmpeg gstreamer0.10-gnomevfs gstreamer0.10-plugins-base gstreamer0.10-plugins-good     
   gstreamer0.10-plugins-ugly gtk2-engines gtk2-engines-pixbuf gtkhtml3.8 gucharmap guile-1.6-libs gzip  
   hal hibernate hicolor-icon-theme hostname hotkey-setup hpijs hpijs-ppds hplip hplip-data iamerican    
   ibritish icedax iceweasel iceweasel-gnome-support iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint
   info initramfs-tools initscripts installation-report iproute iptables iputils-arping iputils-ping     
   iso-codes ispell kde-i18n-fr kdelibs-data kdelibs4c2a klibc-utils klogd language-env laptop-detect    
   less liba52-0.7.4 libaa1 libacl1 libao2 libapm1 libart-2.0-2 libarts1c2a libartsc0 libasound2         
   libaspell15 libatk1.0-0 libatm1 libattr1 libaudio2 libaudiofile0 libauthen-pam-perl libavahi-client3  
   libavahi-common-data libavahi-common3 libavahi-glib1 libavahi-qt3-1 libblkid1 libbonobo2-0            
   libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i686 libcaca0             
   libcairo-perl libcairo2 libcdparanoia0 libcomerr2 libconsole libcpufreq0 libcroco3 libcucul0          
   libcupsimage2 libcupsys2 libcurl3 libdaemon0 libdb4.2 libdbus-1-3 libdbus-glib-1-2 libdmx1 libdrm2    
   libdv4 libdvdread3 libedata-book1.2-2 libedit2 libeel2-data libenchant1c2a libevent1 libexif12        
   libexpat1 libfam0 libfontconfig1 libfontenc1 libfreetype6 libfs6 libg2c0 libgail-common libgc1c2      
   libgcc1 libgcj-bc libgcj-common libgconf2-4 libgcrypt11 libgda2-3 libgda2-common libgdl-1-0           
   libgdl-1-common libgimp2.0 libgksu2-0 libgksuui1.0-1 libgl1-mesa-dri libgl1-mesa-glx libglade2-0      
   libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgnome-desktop-2 libgnome-keyring0        
   libgnome-media0 libgnome-menu2 libgnome-pilot2 libgnome-window-settings1 libgnome2-0                  
   libgnome2-canvas-perl libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0            
   libgnomecanvas2-common libgnomecups1.0-1 libgnomeprint2.2-0 libgnomeprint2.2-data libgnomeprintui2.2-0
   libgnomeprintui2.2-common libgnomeui-0 libgnomeui-common libgnomevfs2-0 libgnomevfs2-bin              
   libgnomevfs2-common libgnomevfs2-extra libgpg-error0 libgphoto2-2 libgphoto2-port0 libgsf-1-114       
   libgsf-1-common libgsm1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0   
   libgtk2.0-bin libgtk2.0-common libgtkhtml2-0 libgtkhtml3.8-15 libgtkmm-2.4-1c2a                       
   libgtksourceview-common libgtksourceview1.0-0 libgtkspell0 libgtop2-7 libgtop2-common libguile-ltdl-1 
   libgutenprint2 libgutenprintui2-1 libhal-storage1 libhal1 libhsqldb-java libice6 libidl0 libidn11     
   libieee1284-3 libio-pty-perl libjack0.100.0-0 libjaxp1.3-java libjline-java libjpeg62 libklibc        
   libkpathsea4 libkrb53 liblcms1 liblircclient0 liblocale-gettext-perl liblockfile1 liblua50 liblualib50
   libmad0 libmagic1 libmdbtools libmetacity0 libmodplug0c2 libmozjs0d libmpeg2-4 libmusicbrainz4c2a     
   libnautilus-extension1 libncurses5 libncursesw5 libnet-ssleay-perl libnewt0.52 libnfsidmap2           
   libnm-glib0 libnm-util0 libnotify1 libnspr4-0d libnss-mdns libogg0 liboil0.3 liborbit2 libosp5        
   libpam-modules libpam-runtime libpam0g libpanel-applet2-0 libpango1.0-0 libpango1.0-common libpaper1  
   libpcre3 libpisock9 libpng12-0 libpopt0 libportaudio0 libqt3-mt libqthreads-12 libraw1394-8 
   libreadline5 librpcsecgss3 librsvg2-2 librsvg2-common libsane libsasl2-2 libscrollkeeper0             
   libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsemanage1 libsensors3 libsepol1 libservlet2.3-java
   libsexy2 libshout3 libsidplay1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 libsmbclient libsndfile1   
   libsnmp-base libsoup2.2-8 libspeex1 libss2 libssl0.9.8 libstartup-notification0 libstdc++6 libsvga1   
   libsysfs2 libtag1c2a libtasn1-3 libtasn1-3-bin libtext-charwidth-perl libtext-iconv-perl              
   libtext-wrapi18n-perl libtheora0 libtiff4 libusb-0.1-4 libuuid1 libvisual-0.4-0 libvolume-id0         
   libvorbis0a libvorbisenc2 libvorbisfile3 libvte-common libwmf0.2-7 libwnck-common libwpd8c2a libwrap0 
   libx11-6 libx11-data libxalan2-java libxau6 libxaw7 libxcursor1 libxdamage1 libxdmcp6 libxerces2-java 
   libxext6 libxfixes3 libxfont1 libxft2 libxi6 libxine1 libxinerama1 libxkbfile1 libxml2 libxml2-utils  
   libxmu6 libxmuu1 libxp6 libxpm4 libxrandr2 libxrender1 libxres1 libxslt1.1 libxss1 libxt6 libxtrap6   
   libxtst6 libxul-common libxul0d libxv1 libxvmc1 libxxf86dga1 libxxf86misc1 libxxf86vm1 liferea
   liferea-xulrunner linux-image-2.6-686 linux-sound-base locales login logrotate lsb-base lsb-release
   lsof m4 mailx make makedev man-db manpages manpages-fr manpages-fr-dev manpages-fr-extra mawk mc menu
   menu-xdg metacity metacity-common mime-support mkisofs mktemp module-init-tools mount mpack mtools
   mtr-tiny mutt myspell-en-us myspell-fr-gut nano nautilus nautilus-cd-burner nautilus-data ncurses-base
   ncurses-bin ncurses-term net-tools netbase netcat network-manager network-manager-gnome nfs-common
   nfs-kernel-server notification-daemon ntp openbsd-inetd openoffice.org openoffice.org-base
   openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw
   openoffice.org-evolution openoffice.org-gcj openoffice.org-gnome openoffice.org-gtk
   openoffice.org-help-en-us openoffice.org-help-fr openoffice.org-impress openoffice.org-java-common
   openoffice.org-l10n-fr openoffice.org-math openoffice.org-thesaurus-en-us openoffice.org-writer
   openssh-blacklist openssh-client openssh-server openssl passwd patch pciutils perl perl-base
   perl-modules pidentd pmount policycoreutils poppler-utils portmap powermgmt-base printconf procps
   psmisc python python-apt python-cairo python-central python-foomatic python-glade2 python-gmenu
   python-gnome2 python-gnome2-desktop python-gnome2-extras python-gtk2 python-ipy python-libxml2
   python-minimal python-newt python-numeric python-pyorbit python-qt3 python-selinux python-semanage
   python-sip4 python-support python-uno python-vte python2.4 python2.4-minimal rdesktop readline-common
   reportbug rhythmbox scrollkeeper sed shared-mime-info sharutils sound-juicer strace sudo svgalibg1
   synaptic sysklogd system-tools-backends sysv-rc sysvinit sysvinit-utils tar tasksel tasksel-data tcpd
   telnet texinfo time totem totem-mozilla totem-xine traceroute tsclient ttf-dejavu ttf-opensymbol twm
   type-handling tzdata ucf udev unzip update-inetd update-manager update-notifier usbutils uswsusp
   util-linux vbetool vim-common vim-tiny vino w3m wamerican wfrench wget whiptail whois wodim
   wpasupplicant x11-common xbase-clients xdg-utils xfonts-100dpi xfonts-75dpi xfonts-base 
   xfonts-encodings xfonts-utils xkb-data xml-core xorg xresprobe xsane xsane-common xserver-xorg
   xserver-xorg-core xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd
   xserver-xorg-input-mouse xserver-xorg-input-synaptics xserver-xorg-input-wacom xserver-xorg-video-all
   xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati xserver-xorg-video-chips
   xserver-xorg-video-cirrus xserver-xorg-video-cyrix xserver-xorg-video-dummy xserver-xorg-video-fbdev
   xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-i740 xserver-xorg-video-i810
   xserver-xorg-video-imstt xserver-xorg-video-mga xserver-xorg-video-neomagic xserver-xorg-video-nsc
   xserver-xorg-video-nv xserver-xorg-video-rendition xserver-xorg-video-s3 xserver-xorg-video-s3virge
   xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis
   xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident
   xserver-xorg-video-tseng xserver-xorg-video-v4l xserver-xorg-video-vesa xserver-xorg-video-vga
   xserver-xorg-video-via xserver-xorg-video-vmware xserver-xorg-video-voodoo xsltproc xterm
   xulrunner-gnome-support xutils xutils-dev yelp zenity zlib1g
 729 mis à jour, 294 nouvellement installés, 15 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 869Mo dans les archives.
 Après dépaquetage, 647Mo d'espace disque supplémentaires seront utilisés.
 Souhaitez-vous continuer [O/n] ?

En fonction de votre connexion ça peut prendre des plombes...
Un conseil, si vous n'êtes pas sûr de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

 # apt-get -d upgrade

Puis

 # apt-get dist-upgrade

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut

[[Image:Capture150.jpeg]]

[[Image:Capture151.jpeg]]

[[Image:Capture153.jpeg]]

[[Image:Capture154.jpeg]]

[[Image:Capture156.jpeg]]

[[Image:Capture158.jpeg]]

[[Image:Capture159.jpeg]]

[[Image:Capture160.jpeg]]

[[Image:Capture161.jpeg]]

Sans le téléchargement des fichiers, comptez environ 50 minutes pour l'upgrade.

 # reboot

 $ uname -a
 Linux compta2 2.6.26-2-686 #1 SMP Thu Mar 11 23:19:46 UTC 2010 i686 GNU/Linux

A venir... Upgrade de Lenny à Squeeze !

----
--[[Utilisateur:Lol|Lol]] 9 avril 2010 à 13:55 (UTC)

[[Catégorie:Installation]]</text>
      <sha1>hoxtnmnxguh6ufbj7xio1n2c3pn8afg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2756</id>
      <parentid>2753</parentid>
      <timestamp>2011-03-26T13:32:57Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="20295">{{sid}}

Comment passer de Etch à Lenny

Attention : Ce Document est basé sur l'upgrade d'une machine de bureau, pas d'un serveur !

Cette question n'est bien évidemment plus d'actualité, presque tout le monde est déjà sous Lenny.
Mais pour les retardataires, et en vue du passage de squeeze en stable, il faut se réveiller !

Je part du principe que vous n’avez pas installé de pilotes propriétaires pour vos cartes graphiques.
Le changement de noyau ferait planter votre serveur X.
Modifiez votre xorg.conf afin d'utiliser des pilotes Debian avant cet upgrade, à moins que vous ne les réinstalliez juste après.

Votre machine doit être à jour avant de vous lancer

 # aptitude upgrade

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition où se trouve /var pour le stockage des paquets téléchargés.

Pour connaître l’espace libre de votre partition racine :

 $ df -h /
 Sys. de fich.         Tail. Occ. Disp. %Occ. Monté sur
 /dev/hda1              23G  2,6G   20G  12% /

Si vous disposez de plus de 50% d’espace libre vous pouvez passer au chapitre suivant. Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Modifiez votre sources.list et ajoutez Lenny (il suffit de copier coller les lignes avec Etch et de mettre Lenny à la place.)

 # nano /etc/apt/sources.list
 
 ###### Debian Main Repos
 deb http://ftp.fr.debian.org/debian/ etch main contrib non-free
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free 
 
 ###### Debian Security &amp; Update Repos
 deb http://security.debian.org/ etch/updates main contrib non-free
 deb http://ftp.fr.debian.org/debian/ etch-proposed-updates main contrib non-free
 deb http://security.debian.org/ lenny/updates main contrib non-free
 deb http://ftp.fr.debian.org/debian/ lenny-proposed-updates main contrib non-free
 
 #### Debian Backports
 deb http://www.backports.org/debian/ etch-backports main contrib
 deb http://www.backports.org/debian/ lenny-backports main contrib non-free
 
 #### Debian Multimedia
 deb http://www.debian-multimedia.org/ etch main contrib
 deb http://www.debian-multimedia.org/ lenny main contrib non-free

Maintenant faites un update pour mettre à jour la liste des paquets :

 # aptitude update

 Quelques erreurs risquent d'arriver...

 W: GPG error: http://www.debian-multimedia.org

# Des problèmes de clés GPG [[Erreur_lors_d'un_update:_NO_PUBKEY]]
 # apt-get install debian-backports-keyring
 # apt-get install debian-multimedia-keyring

 E: Dynamic MMap ran out of room

# Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]]
 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaites l'update, il ne doit pas y avoir d'erreurs

 # aptitude update
 
  234ko téléchargés en 1m7s (3466o/s)
 Lecture des listes de paquets... Fait

IMPORTANT : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

Lancez l'upgrade

 # apt-get dist-upgrade                             
 Lecture des listes de paquets... Fait                       
 Construction de l'arbre des dépendances... Fait             
 Calcul de la mise à jour... Fait                            
 Les paquets suivants seront ENLEVÉS :                       
   dbus-1-utils gimp gimp-print gnome-themes-extras libdiscover1 libgssapi2 libnl1-pre6 libopal-2.2.0
   libpci2 libpt-plugins-alsa libpt-plugins-v4l libsasl2 libstlport4.6c2 libvte4                     
   xserver-xorg-video-newport                                                                        
 Les NOUVEAUX paquets suivants seront installés :                                                    
   bsd-mailx bsh-gcj cheese cpp-4.3 cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk
   cupsddk-drivers dbus-x11 discover discover-data djvulibre-desktop dmz-cursor-theme                   
   epiphany-browser-data epiphany-gecko fastjar freetds-common gcc-4.3-base gcj-4.3-base gdebi-core     
   ghostscript ghostscript-x gij-4.3 gnome-mount gnome-network-admin gnome-settings-daemon gnuchess     
   grub-common gstreamer0.10-tools gstreamer0.10-x gtkhtml3.14 guile-1.8-libs hal-info java-common      
   java-gcj-compat java-gcj-compat-headless libamrnb3 libamrwb3 libasyncns0 libavahi-compat-libdnssd1   
   libavahi-core5 libavahi-gobject0 libavahi-ui0 libavcodec51 libavformat52 libavutil49 libbcel-java    
   libbind9-40 libblas3gf libbluetooth2 libcairomm-1.0-1 libcamel1.2-11 libcap2 libcdio7 libct4 libcups2
   libcurl3-gnutls libcwidget3 libdatrie0 libdb4.5 libdb4.6 libdevmapper1.02.1 libdirac0                
   libdirectfb-1.0-0 libdirectfb-extra libdiscover2 libdjvulibre21 libdns45 libebook1.2-9 libecal1.2-7  
   libedata-cal1.2-6 libedataserver1.2-9 libedataserverui1.2-8 libeel2-2.20 libegroupwise1.2-13 libelfg0
   libepc-1.0-1 libepc-ui-1.0-1 libept0 libexchange-storage1.2-3 libexempi3 libfaac0 libfaad0 libffi5   
   libflac8 libfreebob0 libgail18 libgalago3 libgcj9-0 libgcj9-0-awt libgcj9-jar libgd2-noxpm libgda3-3 
   libgda3-common libgdata-google1.2-1 libgdata1.2-1 libgfortran3 libggz2 libggzcore9 libggzmod4        
   libgmp3c2 libgmyth0 libgnomekbd-common libgnomekbd2 libgnomekbdui2 libgnutls26 libgpgme11 libgpm2    
   libgpod3 libgraphviz4 libgs8 libgssglue1 libgtk-vnc-1.0-0 libgtkhtml3.14-19 libgtksourceview2.0-0    
   libgtksourceview2.0-common libgucharmap6 libgweather-common libgweather1 libhsqldb-java-gcj          
   libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libicu38      
   libilmbase6 libisc45 libisccc40 libisccfg40 libiw29 libjack0 libjasper1 libjaxp1.3-java-gcj          
   libkeyutils1 liblapack3gf libldap-2.4-2 liblog4j1.2-java libltdl3 liblua5.1-0 liblwres40 liblzo2-2   
   libmagick10 libmalaga7 libmozjs1d libmp3lame0 libmpcdec3 libmpfr1ldbl libmtp7 libmx4j-java           
   libmysqlclient15off libnautilus-burn4 libneon27 libnet-dbus-perl libnl1 libnss3-1d liboobs-1-4       
   libopal-2.2 libopenexr6 libparted1.8-10 libpci3 libpcsclite1 libperl5.10 libpisync1 libpixman-1-0    
   libpoppler-glib3 libpoppler3 libpostproc51 libpt-1.10.10 libpt-1.10.10-plugins-alsa                  
   libpt-1.10.10-plugins-v4l libpth20 libpulse0 librarian0 libregexp-java libsane-extras                
   libschroedinger-1.0-0 libservlet2.4-java libslab0 libsmbios2 libsnmp15 libsoup2.4-1 libspectre1      
   libspeexdsp1 libsplashy1 libsqlite3-0 libssh2-1 libstlport4.6ldbl libsuitesparse-3.1.0               
   libswfdec-0.6-90 libtalloc1 libthai-data libthai0 libtimedate-perl libtotem-plparser10               
   libtrackerclient0 libts-0.0-0 liburi-perl libustr-1.0-1 libvoikko1 libvte9 libwavpack1 libwbclient0  
   libwnck22 libwpg-0.1-1 libwps-0.1-1 libwww-perl libx264-65 libx86-1 libxalan2-java-gcj libxapian15   
   libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xlib0 libxcb-xv0 libxcb1         
   libxcomposite1 libxerces2-java-gcj libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins
   libxine1-plugins libxine1-x libxklavier12 libxml-parser-perl libxml-twig-perl libxvidcore4            
   linux-image-2.6.26-2-686 lp-solve lzma mysql-common netcat-traditional openoffice.org-base-core       
   openoffice.org-filter-mobiledev openoffice.org-officebean openoffice.org-report-builder-bin           
   openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-writer2latex                 
   openprinting-ppds openssl-blacklist oss-compat pkg-config pm-utils python-dbus python-eggtrayicon     
   python-elementtree python-gdata python-gobject python-gtkhtml2 python-gtkmozembed                     
   python-gtksourceview2 python-imaging python-notify python-sepolgen python-software-properties         
   python2.5 python2.5-minimal seahorse software-properties-gtk ssl-cert swfdec-gnome totem-common       
   totem-gstreamer totem-plugins ttf-dejavu-core ttf-dejavu-extra ttf-liberation unattended-upgrades     
   update-manager-core update-notifier-common vinagre x11-apps x11-session-utils x11-utils x11-xfs-utils 
   x11-xkb-utils x11-xserver-utils xauth xinit xserver-xorg-video-intel xserver-xorg-video-mach64        
   xserver-xorg-video-openchrome xserver-xorg-video-r128 xserver-xorg-video-radeon                       
   xserver-xorg-video-radeonhd xulrunner-1.9 xulrunner-1.9-gnome-support                                 
 Les paquets suivants seront mis à jour :                                                                
   acpi acpid adduser alacarte alsa-base alsa-utils anacron apt apt-utils aptitude at avahi-daemon       
   base-files base-passwd bash bc bind9-host binutils bittorrent bluez-gnome bsdmainutils bsdutils bsh   
   bug-buddy busybox bzip2 ca-certificates capplets-data cdrdao console-common console-data console-tools
   coreutils cpio cpp cpp-4.1 cpufrequtils cron cupsys cupsys-bsd cupsys-client cupsys-common            
   cupsys-driver-gutenprint dbus dc debconf debconf-i18n debianutils defoma deskbar-applet desktop-base  
   desktop-file-utils dhcdbd dhcp3-client dhcp3-common dictionaries-common diff discover1 discover1-data 
   dmidecode dnsutils doc-debian doc-linux-text docbook-xml dpkg dpkg-dev dselect dvd+rw-tools e2fslibs  
   e2fsprogs ed eject ekiga eog epiphany-browser epiphany-extensions evince evolution evolution-common   
   evolution-data-server evolution-data-server-common evolution-exchange evolution-plugins               
   evolution-webcal exim4 exim4-base exim4-config exim4-daemon-light fast-user-switch-applet file        
   file-roller findutils finger fontconfig fontconfig-config foomatic-db foomatic-db-engine              
   foomatic-db-gutenprint foomatic-db-hpijs foomatic-filters foomatic-filters-ppds foomatic-gui ftp      
   gcalctool gcc-3.4-base gcc-4.1-base gconf-editor gconf2 gconf2-common gdb gdebi gdm gedit gedit-common
   genisoimage gettext-base gij gimp-data gksu gnome-about gnome-applets gnome-applets-data              
   gnome-backgrounds gnome-btdownload gnome-cards-data gnome-control-center gnome-core gnome-desktop-data
   gnome-desktop-environment gnome-doc-utils gnome-games gnome-games-data gnome-icon-theme gnome-keyring 
   gnome-keyring-manager gnome-media gnome-media-common gnome-menus gnome-mime-data                      
   gnome-netstatus-applet gnome-nettool gnome-panel gnome-panel-data gnome-power-manager                 
   gnome-screensaver gnome-session gnome-system-monitor gnome-system-tools gnome-terminal                
   gnome-terminal-data gnome-themes gnome-user-guide gnome-utils gnome-volume-manager gnomebaker gnupg   
   gparted gpgv grep groff-base grub gs-common gs-esp gsfonts gstreamer0.10-alsa gstreamer0.10-esd       
   gstreamer0.10-ffmpeg gstreamer0.10-gnomevfs gstreamer0.10-plugins-base gstreamer0.10-plugins-good     
   gstreamer0.10-plugins-ugly gtk2-engines gtk2-engines-pixbuf gtkhtml3.8 gucharmap guile-1.6-libs gzip  
   hal hibernate hicolor-icon-theme hostname hotkey-setup hpijs hpijs-ppds hplip hplip-data iamerican    
   ibritish icedax iceweasel iceweasel-gnome-support iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint
   info initramfs-tools initscripts installation-report iproute iptables iputils-arping iputils-ping     
   iso-codes ispell kde-i18n-fr kdelibs-data kdelibs4c2a klibc-utils klogd language-env laptop-detect    
   less liba52-0.7.4 libaa1 libacl1 libao2 libapm1 libart-2.0-2 libarts1c2a libartsc0 libasound2         
   libaspell15 libatk1.0-0 libatm1 libattr1 libaudio2 libaudiofile0 libauthen-pam-perl libavahi-client3  
   libavahi-common-data libavahi-common3 libavahi-glib1 libavahi-qt3-1 libblkid1 libbonobo2-0            
   libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i686 libcaca0             
   libcairo-perl libcairo2 libcdparanoia0 libcomerr2 libconsole libcpufreq0 libcroco3 libcucul0          
   libcupsimage2 libcupsys2 libcurl3 libdaemon0 libdb4.2 libdbus-1-3 libdbus-glib-1-2 libdmx1 libdrm2    
   libdv4 libdvdread3 libedata-book1.2-2 libedit2 libeel2-data libenchant1c2a libevent1 libexif12        
   libexpat1 libfam0 libfontconfig1 libfontenc1 libfreetype6 libfs6 libg2c0 libgail-common libgc1c2      
   libgcc1 libgcj-bc libgcj-common libgconf2-4 libgcrypt11 libgda2-3 libgda2-common libgdl-1-0           
   libgdl-1-common libgimp2.0 libgksu2-0 libgksuui1.0-1 libgl1-mesa-dri libgl1-mesa-glx libglade2-0      
   libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgnome-desktop-2 libgnome-keyring0        
   libgnome-media0 libgnome-menu2 libgnome-pilot2 libgnome-window-settings1 libgnome2-0                  
   libgnome2-canvas-perl libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0            
   libgnomecanvas2-common libgnomecups1.0-1 libgnomeprint2.2-0 libgnomeprint2.2-data libgnomeprintui2.2-0
   libgnomeprintui2.2-common libgnomeui-0 libgnomeui-common libgnomevfs2-0 libgnomevfs2-bin              
   libgnomevfs2-common libgnomevfs2-extra libgpg-error0 libgphoto2-2 libgphoto2-port0 libgsf-1-114       
   libgsf-1-common libgsm1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0   
   libgtk2.0-bin libgtk2.0-common libgtkhtml2-0 libgtkhtml3.8-15 libgtkmm-2.4-1c2a                       
   libgtksourceview-common libgtksourceview1.0-0 libgtkspell0 libgtop2-7 libgtop2-common libguile-ltdl-1 
   libgutenprint2 libgutenprintui2-1 libhal-storage1 libhal1 libhsqldb-java libice6 libidl0 libidn11     
   libieee1284-3 libio-pty-perl libjack0.100.0-0 libjaxp1.3-java libjline-java libjpeg62 libklibc        
   libkpathsea4 libkrb53 liblcms1 liblircclient0 liblocale-gettext-perl liblockfile1 liblua50 liblualib50
   libmad0 libmagic1 libmdbtools libmetacity0 libmodplug0c2 libmozjs0d libmpeg2-4 libmusicbrainz4c2a     
   libnautilus-extension1 libncurses5 libncursesw5 libnet-ssleay-perl libnewt0.52 libnfsidmap2           
   libnm-glib0 libnm-util0 libnotify1 libnspr4-0d libnss-mdns libogg0 liboil0.3 liborbit2 libosp5        
   libpam-modules libpam-runtime libpam0g libpanel-applet2-0 libpango1.0-0 libpango1.0-common libpaper1  
   libpcre3 libpisock9 libpng12-0 libpopt0 libportaudio0 libqt3-mt libqthreads-12 libraw1394-8 
   libreadline5 librpcsecgss3 librsvg2-2 librsvg2-common libsane libsasl2-2 libscrollkeeper0             
   libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsemanage1 libsensors3 libsepol1 libservlet2.3-java
   libsexy2 libshout3 libsidplay1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 libsmbclient libsndfile1   
   libsnmp-base libsoup2.2-8 libspeex1 libss2 libssl0.9.8 libstartup-notification0 libstdc++6 libsvga1   
   libsysfs2 libtag1c2a libtasn1-3 libtasn1-3-bin libtext-charwidth-perl libtext-iconv-perl              
   libtext-wrapi18n-perl libtheora0 libtiff4 libusb-0.1-4 libuuid1 libvisual-0.4-0 libvolume-id0         
   libvorbis0a libvorbisenc2 libvorbisfile3 libvte-common libwmf0.2-7 libwnck-common libwpd8c2a libwrap0 
   libx11-6 libx11-data libxalan2-java libxau6 libxaw7 libxcursor1 libxdamage1 libxdmcp6 libxerces2-java 
   libxext6 libxfixes3 libxfont1 libxft2 libxi6 libxine1 libxinerama1 libxkbfile1 libxml2 libxml2-utils  
   libxmu6 libxmuu1 libxp6 libxpm4 libxrandr2 libxrender1 libxres1 libxslt1.1 libxss1 libxt6 libxtrap6   
   libxtst6 libxul-common libxul0d libxv1 libxvmc1 libxxf86dga1 libxxf86misc1 libxxf86vm1 liferea
   liferea-xulrunner linux-image-2.6-686 linux-sound-base locales login logrotate lsb-base lsb-release
   lsof m4 mailx make makedev man-db manpages manpages-fr manpages-fr-dev manpages-fr-extra mawk mc menu
   menu-xdg metacity metacity-common mime-support mkisofs mktemp module-init-tools mount mpack mtools
   mtr-tiny mutt myspell-en-us myspell-fr-gut nano nautilus nautilus-cd-burner nautilus-data ncurses-base
   ncurses-bin ncurses-term net-tools netbase netcat network-manager network-manager-gnome nfs-common
   nfs-kernel-server notification-daemon ntp openbsd-inetd openoffice.org openoffice.org-base
   openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw
   openoffice.org-evolution openoffice.org-gcj openoffice.org-gnome openoffice.org-gtk
   openoffice.org-help-en-us openoffice.org-help-fr openoffice.org-impress openoffice.org-java-common
   openoffice.org-l10n-fr openoffice.org-math openoffice.org-thesaurus-en-us openoffice.org-writer
   openssh-blacklist openssh-client openssh-server openssl passwd patch pciutils perl perl-base
   perl-modules pidentd pmount policycoreutils poppler-utils portmap powermgmt-base printconf procps
   psmisc python python-apt python-cairo python-central python-foomatic python-glade2 python-gmenu
   python-gnome2 python-gnome2-desktop python-gnome2-extras python-gtk2 python-ipy python-libxml2
   python-minimal python-newt python-numeric python-pyorbit python-qt3 python-selinux python-semanage
   python-sip4 python-support python-uno python-vte python2.4 python2.4-minimal rdesktop readline-common
   reportbug rhythmbox scrollkeeper sed shared-mime-info sharutils sound-juicer strace sudo svgalibg1
   synaptic sysklogd system-tools-backends sysv-rc sysvinit sysvinit-utils tar tasksel tasksel-data tcpd
   telnet texinfo time totem totem-mozilla totem-xine traceroute tsclient ttf-dejavu ttf-opensymbol twm
   type-handling tzdata ucf udev unzip update-inetd update-manager update-notifier usbutils uswsusp
   util-linux vbetool vim-common vim-tiny vino w3m wamerican wfrench wget whiptail whois wodim
   wpasupplicant x11-common xbase-clients xdg-utils xfonts-100dpi xfonts-75dpi xfonts-base 
   xfonts-encodings xfonts-utils xkb-data xml-core xorg xresprobe xsane xsane-common xserver-xorg
   xserver-xorg-core xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd
   xserver-xorg-input-mouse xserver-xorg-input-synaptics xserver-xorg-input-wacom xserver-xorg-video-all
   xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati xserver-xorg-video-chips
   xserver-xorg-video-cirrus xserver-xorg-video-cyrix xserver-xorg-video-dummy xserver-xorg-video-fbdev
   xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-i740 xserver-xorg-video-i810
   xserver-xorg-video-imstt xserver-xorg-video-mga xserver-xorg-video-neomagic xserver-xorg-video-nsc
   xserver-xorg-video-nv xserver-xorg-video-rendition xserver-xorg-video-s3 xserver-xorg-video-s3virge
   xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis
   xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident
   xserver-xorg-video-tseng xserver-xorg-video-v4l xserver-xorg-video-vesa xserver-xorg-video-vga
   xserver-xorg-video-via xserver-xorg-video-vmware xserver-xorg-video-voodoo xsltproc xterm
   xulrunner-gnome-support xutils xutils-dev yelp zenity zlib1g
 729 mis à jour, 294 nouvellement installés, 15 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 869Mo dans les archives.
 Après dépaquetage, 647Mo d'espace disque supplémentaires seront utilisés.
 Souhaitez-vous continuer [O/n] ?

En fonction de votre connexion ça peut prendre des plombes...
Un conseil, si vous n'êtes pas sûr de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

 # apt-get -d upgrade

Puis

 # apt-get dist-upgrade

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut

[[Image:Capture150.jpeg]]

[[Image:Capture151.jpeg]]

[[Image:Capture153.jpeg]]

[[Image:Capture154.jpeg]]

[[Image:Capture156.jpeg]]

[[Image:Capture158.jpeg]]

[[Image:Capture159.jpeg]]

[[Image:Capture160.jpeg]]

[[Image:Capture161.jpeg]]

Sans le téléchargement des fichiers, comptez environ 50 minutes pour l'upgrade.

 # reboot

 $ uname -a
 Linux compta2 2.6.26-2-686 #1 SMP Thu Mar 11 23:19:46 UTC 2010 i686 GNU/Linux

A venir... Upgrade de Lenny à Squeeze !

----
--[[Utilisateur:Lol|Lol]] 9 avril 2010 à 13:55 (UTC)

[[Catégorie:Installation]]</text>
      <sha1>o7qalxwypu4nputumh3dn48aeq20sff</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3221</id>
      <parentid>2756</parentid>
      <timestamp>2011-08-07T18:45:16Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="20286">Comment passer de Etch à Lenny

Attention : Ce Document est basé sur l'upgrade d'une machine de bureau, pas d'un serveur !

Cette question n'est bien évidemment plus d'actualité, presque tout le monde est déjà sous Lenny.
Mais pour les retardataires, et en vue du passage de squeeze en stable, il faut se réveiller !

Je part du principe que vous n’avez pas installé de pilotes propriétaires pour vos cartes graphiques.
Le changement de noyau ferait planter votre serveur X.
Modifiez votre xorg.conf afin d'utiliser des pilotes Debian avant cet upgrade, à moins que vous ne les réinstalliez juste après.

Votre machine doit être à jour avant de vous lancer

 # aptitude upgrade

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition où se trouve /var pour le stockage des paquets téléchargés.

Pour connaître l’espace libre de votre partition racine :

 $ df -h /
 Sys. de fich.         Tail. Occ. Disp. %Occ. Monté sur
 /dev/hda1              23G  2,6G   20G  12% /

Si vous disposez de plus de 50% d’espace libre vous pouvez passer au chapitre suivant. Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Modifiez votre sources.list et ajoutez Lenny (il suffit de copier coller les lignes avec Etch et de mettre Lenny à la place.)

 # nano /etc/apt/sources.list
 
 ###### Debian Main Repos
 deb http://ftp.fr.debian.org/debian/ etch main contrib non-free
 deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free 
 
 ###### Debian Security &amp; Update Repos
 deb http://security.debian.org/ etch/updates main contrib non-free
 deb http://ftp.fr.debian.org/debian/ etch-proposed-updates main contrib non-free
 deb http://security.debian.org/ lenny/updates main contrib non-free
 deb http://ftp.fr.debian.org/debian/ lenny-proposed-updates main contrib non-free
 
 #### Debian Backports
 deb http://www.backports.org/debian/ etch-backports main contrib
 deb http://www.backports.org/debian/ lenny-backports main contrib non-free
 
 #### Debian Multimedia
 deb http://www.debian-multimedia.org/ etch main contrib
 deb http://www.debian-multimedia.org/ lenny main contrib non-free

Maintenant faites un update pour mettre à jour la liste des paquets :

 # aptitude update

 Quelques erreurs risquent d'arriver...

 W: GPG error: http://www.debian-multimedia.org

# Des problèmes de clés GPG [[Erreur_lors_d'un_update:_NO_PUBKEY]]
 # apt-get install debian-backports-keyring
 # apt-get install debian-multimedia-keyring

 E: Dynamic MMap ran out of room

# Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]]
 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaites l'update, il ne doit pas y avoir d'erreurs

 # aptitude update
 
  234ko téléchargés en 1m7s (3466o/s)
 Lecture des listes de paquets... Fait

IMPORTANT : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

Lancez l'upgrade

 # apt-get dist-upgrade                             
 Lecture des listes de paquets... Fait                       
 Construction de l'arbre des dépendances... Fait             
 Calcul de la mise à jour... Fait                            
 Les paquets suivants seront ENLEVÉS :                       
   dbus-1-utils gimp gimp-print gnome-themes-extras libdiscover1 libgssapi2 libnl1-pre6 libopal-2.2.0
   libpci2 libpt-plugins-alsa libpt-plugins-v4l libsasl2 libstlport4.6c2 libvte4                     
   xserver-xorg-video-newport                                                                        
 Les NOUVEAUX paquets suivants seront installés :                                                    
   bsd-mailx bsh-gcj cheese cpp-4.3 cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk
   cupsddk-drivers dbus-x11 discover discover-data djvulibre-desktop dmz-cursor-theme                   
   epiphany-browser-data epiphany-gecko fastjar freetds-common gcc-4.3-base gcj-4.3-base gdebi-core     
   ghostscript ghostscript-x gij-4.3 gnome-mount gnome-network-admin gnome-settings-daemon gnuchess     
   grub-common gstreamer0.10-tools gstreamer0.10-x gtkhtml3.14 guile-1.8-libs hal-info java-common      
   java-gcj-compat java-gcj-compat-headless libamrnb3 libamrwb3 libasyncns0 libavahi-compat-libdnssd1   
   libavahi-core5 libavahi-gobject0 libavahi-ui0 libavcodec51 libavformat52 libavutil49 libbcel-java    
   libbind9-40 libblas3gf libbluetooth2 libcairomm-1.0-1 libcamel1.2-11 libcap2 libcdio7 libct4 libcups2
   libcurl3-gnutls libcwidget3 libdatrie0 libdb4.5 libdb4.6 libdevmapper1.02.1 libdirac0                
   libdirectfb-1.0-0 libdirectfb-extra libdiscover2 libdjvulibre21 libdns45 libebook1.2-9 libecal1.2-7  
   libedata-cal1.2-6 libedataserver1.2-9 libedataserverui1.2-8 libeel2-2.20 libegroupwise1.2-13 libelfg0
   libepc-1.0-1 libepc-ui-1.0-1 libept0 libexchange-storage1.2-3 libexempi3 libfaac0 libfaad0 libffi5   
   libflac8 libfreebob0 libgail18 libgalago3 libgcj9-0 libgcj9-0-awt libgcj9-jar libgd2-noxpm libgda3-3 
   libgda3-common libgdata-google1.2-1 libgdata1.2-1 libgfortran3 libggz2 libggzcore9 libggzmod4        
   libgmp3c2 libgmyth0 libgnomekbd-common libgnomekbd2 libgnomekbdui2 libgnutls26 libgpgme11 libgpm2    
   libgpod3 libgraphviz4 libgs8 libgssglue1 libgtk-vnc-1.0-0 libgtkhtml3.14-19 libgtksourceview2.0-0    
   libgtksourceview2.0-common libgucharmap6 libgweather-common libgweather1 libhsqldb-java-gcj          
   libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libicu38      
   libilmbase6 libisc45 libisccc40 libisccfg40 libiw29 libjack0 libjasper1 libjaxp1.3-java-gcj          
   libkeyutils1 liblapack3gf libldap-2.4-2 liblog4j1.2-java libltdl3 liblua5.1-0 liblwres40 liblzo2-2   
   libmagick10 libmalaga7 libmozjs1d libmp3lame0 libmpcdec3 libmpfr1ldbl libmtp7 libmx4j-java           
   libmysqlclient15off libnautilus-burn4 libneon27 libnet-dbus-perl libnl1 libnss3-1d liboobs-1-4       
   libopal-2.2 libopenexr6 libparted1.8-10 libpci3 libpcsclite1 libperl5.10 libpisync1 libpixman-1-0    
   libpoppler-glib3 libpoppler3 libpostproc51 libpt-1.10.10 libpt-1.10.10-plugins-alsa                  
   libpt-1.10.10-plugins-v4l libpth20 libpulse0 librarian0 libregexp-java libsane-extras                
   libschroedinger-1.0-0 libservlet2.4-java libslab0 libsmbios2 libsnmp15 libsoup2.4-1 libspectre1      
   libspeexdsp1 libsplashy1 libsqlite3-0 libssh2-1 libstlport4.6ldbl libsuitesparse-3.1.0               
   libswfdec-0.6-90 libtalloc1 libthai-data libthai0 libtimedate-perl libtotem-plparser10               
   libtrackerclient0 libts-0.0-0 liburi-perl libustr-1.0-1 libvoikko1 libvte9 libwavpack1 libwbclient0  
   libwnck22 libwpg-0.1-1 libwps-0.1-1 libwww-perl libx264-65 libx86-1 libxalan2-java-gcj libxapian15   
   libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xlib0 libxcb-xv0 libxcb1         
   libxcomposite1 libxerces2-java-gcj libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins
   libxine1-plugins libxine1-x libxklavier12 libxml-parser-perl libxml-twig-perl libxvidcore4            
   linux-image-2.6.26-2-686 lp-solve lzma mysql-common netcat-traditional openoffice.org-base-core       
   openoffice.org-filter-mobiledev openoffice.org-officebean openoffice.org-report-builder-bin           
   openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-writer2latex                 
   openprinting-ppds openssl-blacklist oss-compat pkg-config pm-utils python-dbus python-eggtrayicon     
   python-elementtree python-gdata python-gobject python-gtkhtml2 python-gtkmozembed                     
   python-gtksourceview2 python-imaging python-notify python-sepolgen python-software-properties         
   python2.5 python2.5-minimal seahorse software-properties-gtk ssl-cert swfdec-gnome totem-common       
   totem-gstreamer totem-plugins ttf-dejavu-core ttf-dejavu-extra ttf-liberation unattended-upgrades     
   update-manager-core update-notifier-common vinagre x11-apps x11-session-utils x11-utils x11-xfs-utils 
   x11-xkb-utils x11-xserver-utils xauth xinit xserver-xorg-video-intel xserver-xorg-video-mach64        
   xserver-xorg-video-openchrome xserver-xorg-video-r128 xserver-xorg-video-radeon                       
   xserver-xorg-video-radeonhd xulrunner-1.9 xulrunner-1.9-gnome-support                                 
 Les paquets suivants seront mis à jour :                                                                
   acpi acpid adduser alacarte alsa-base alsa-utils anacron apt apt-utils aptitude at avahi-daemon       
   base-files base-passwd bash bc bind9-host binutils bittorrent bluez-gnome bsdmainutils bsdutils bsh   
   bug-buddy busybox bzip2 ca-certificates capplets-data cdrdao console-common console-data console-tools
   coreutils cpio cpp cpp-4.1 cpufrequtils cron cupsys cupsys-bsd cupsys-client cupsys-common            
   cupsys-driver-gutenprint dbus dc debconf debconf-i18n debianutils defoma deskbar-applet desktop-base  
   desktop-file-utils dhcdbd dhcp3-client dhcp3-common dictionaries-common diff discover1 discover1-data 
   dmidecode dnsutils doc-debian doc-linux-text docbook-xml dpkg dpkg-dev dselect dvd+rw-tools e2fslibs  
   e2fsprogs ed eject ekiga eog epiphany-browser epiphany-extensions evince evolution evolution-common   
   evolution-data-server evolution-data-server-common evolution-exchange evolution-plugins               
   evolution-webcal exim4 exim4-base exim4-config exim4-daemon-light fast-user-switch-applet file        
   file-roller findutils finger fontconfig fontconfig-config foomatic-db foomatic-db-engine              
   foomatic-db-gutenprint foomatic-db-hpijs foomatic-filters foomatic-filters-ppds foomatic-gui ftp      
   gcalctool gcc-3.4-base gcc-4.1-base gconf-editor gconf2 gconf2-common gdb gdebi gdm gedit gedit-common
   genisoimage gettext-base gij gimp-data gksu gnome-about gnome-applets gnome-applets-data              
   gnome-backgrounds gnome-btdownload gnome-cards-data gnome-control-center gnome-core gnome-desktop-data
   gnome-desktop-environment gnome-doc-utils gnome-games gnome-games-data gnome-icon-theme gnome-keyring 
   gnome-keyring-manager gnome-media gnome-media-common gnome-menus gnome-mime-data                      
   gnome-netstatus-applet gnome-nettool gnome-panel gnome-panel-data gnome-power-manager                 
   gnome-screensaver gnome-session gnome-system-monitor gnome-system-tools gnome-terminal                
   gnome-terminal-data gnome-themes gnome-user-guide gnome-utils gnome-volume-manager gnomebaker gnupg   
   gparted gpgv grep groff-base grub gs-common gs-esp gsfonts gstreamer0.10-alsa gstreamer0.10-esd       
   gstreamer0.10-ffmpeg gstreamer0.10-gnomevfs gstreamer0.10-plugins-base gstreamer0.10-plugins-good     
   gstreamer0.10-plugins-ugly gtk2-engines gtk2-engines-pixbuf gtkhtml3.8 gucharmap guile-1.6-libs gzip  
   hal hibernate hicolor-icon-theme hostname hotkey-setup hpijs hpijs-ppds hplip hplip-data iamerican    
   ibritish icedax iceweasel iceweasel-gnome-support iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint
   info initramfs-tools initscripts installation-report iproute iptables iputils-arping iputils-ping     
   iso-codes ispell kde-i18n-fr kdelibs-data kdelibs4c2a klibc-utils klogd language-env laptop-detect    
   less liba52-0.7.4 libaa1 libacl1 libao2 libapm1 libart-2.0-2 libarts1c2a libartsc0 libasound2         
   libaspell15 libatk1.0-0 libatm1 libattr1 libaudio2 libaudiofile0 libauthen-pam-perl libavahi-client3  
   libavahi-common-data libavahi-common3 libavahi-glib1 libavahi-qt3-1 libblkid1 libbonobo2-0            
   libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i686 libcaca0             
   libcairo-perl libcairo2 libcdparanoia0 libcomerr2 libconsole libcpufreq0 libcroco3 libcucul0          
   libcupsimage2 libcupsys2 libcurl3 libdaemon0 libdb4.2 libdbus-1-3 libdbus-glib-1-2 libdmx1 libdrm2    
   libdv4 libdvdread3 libedata-book1.2-2 libedit2 libeel2-data libenchant1c2a libevent1 libexif12        
   libexpat1 libfam0 libfontconfig1 libfontenc1 libfreetype6 libfs6 libg2c0 libgail-common libgc1c2      
   libgcc1 libgcj-bc libgcj-common libgconf2-4 libgcrypt11 libgda2-3 libgda2-common libgdl-1-0           
   libgdl-1-common libgimp2.0 libgksu2-0 libgksuui1.0-1 libgl1-mesa-dri libgl1-mesa-glx libglade2-0      
   libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgnome-desktop-2 libgnome-keyring0        
   libgnome-media0 libgnome-menu2 libgnome-pilot2 libgnome-window-settings1 libgnome2-0                  
   libgnome2-canvas-perl libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0            
   libgnomecanvas2-common libgnomecups1.0-1 libgnomeprint2.2-0 libgnomeprint2.2-data libgnomeprintui2.2-0
   libgnomeprintui2.2-common libgnomeui-0 libgnomeui-common libgnomevfs2-0 libgnomevfs2-bin              
   libgnomevfs2-common libgnomevfs2-extra libgpg-error0 libgphoto2-2 libgphoto2-port0 libgsf-1-114       
   libgsf-1-common libgsm1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0   
   libgtk2.0-bin libgtk2.0-common libgtkhtml2-0 libgtkhtml3.8-15 libgtkmm-2.4-1c2a                       
   libgtksourceview-common libgtksourceview1.0-0 libgtkspell0 libgtop2-7 libgtop2-common libguile-ltdl-1 
   libgutenprint2 libgutenprintui2-1 libhal-storage1 libhal1 libhsqldb-java libice6 libidl0 libidn11     
   libieee1284-3 libio-pty-perl libjack0.100.0-0 libjaxp1.3-java libjline-java libjpeg62 libklibc        
   libkpathsea4 libkrb53 liblcms1 liblircclient0 liblocale-gettext-perl liblockfile1 liblua50 liblualib50
   libmad0 libmagic1 libmdbtools libmetacity0 libmodplug0c2 libmozjs0d libmpeg2-4 libmusicbrainz4c2a     
   libnautilus-extension1 libncurses5 libncursesw5 libnet-ssleay-perl libnewt0.52 libnfsidmap2           
   libnm-glib0 libnm-util0 libnotify1 libnspr4-0d libnss-mdns libogg0 liboil0.3 liborbit2 libosp5        
   libpam-modules libpam-runtime libpam0g libpanel-applet2-0 libpango1.0-0 libpango1.0-common libpaper1  
   libpcre3 libpisock9 libpng12-0 libpopt0 libportaudio0 libqt3-mt libqthreads-12 libraw1394-8 
   libreadline5 librpcsecgss3 librsvg2-2 librsvg2-common libsane libsasl2-2 libscrollkeeper0             
   libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsemanage1 libsensors3 libsepol1 libservlet2.3-java
   libsexy2 libshout3 libsidplay1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 libsmbclient libsndfile1   
   libsnmp-base libsoup2.2-8 libspeex1 libss2 libssl0.9.8 libstartup-notification0 libstdc++6 libsvga1   
   libsysfs2 libtag1c2a libtasn1-3 libtasn1-3-bin libtext-charwidth-perl libtext-iconv-perl              
   libtext-wrapi18n-perl libtheora0 libtiff4 libusb-0.1-4 libuuid1 libvisual-0.4-0 libvolume-id0         
   libvorbis0a libvorbisenc2 libvorbisfile3 libvte-common libwmf0.2-7 libwnck-common libwpd8c2a libwrap0 
   libx11-6 libx11-data libxalan2-java libxau6 libxaw7 libxcursor1 libxdamage1 libxdmcp6 libxerces2-java 
   libxext6 libxfixes3 libxfont1 libxft2 libxi6 libxine1 libxinerama1 libxkbfile1 libxml2 libxml2-utils  
   libxmu6 libxmuu1 libxp6 libxpm4 libxrandr2 libxrender1 libxres1 libxslt1.1 libxss1 libxt6 libxtrap6   
   libxtst6 libxul-common libxul0d libxv1 libxvmc1 libxxf86dga1 libxxf86misc1 libxxf86vm1 liferea
   liferea-xulrunner linux-image-2.6-686 linux-sound-base locales login logrotate lsb-base lsb-release
   lsof m4 mailx make makedev man-db manpages manpages-fr manpages-fr-dev manpages-fr-extra mawk mc menu
   menu-xdg metacity metacity-common mime-support mkisofs mktemp module-init-tools mount mpack mtools
   mtr-tiny mutt myspell-en-us myspell-fr-gut nano nautilus nautilus-cd-burner nautilus-data ncurses-base
   ncurses-bin ncurses-term net-tools netbase netcat network-manager network-manager-gnome nfs-common
   nfs-kernel-server notification-daemon ntp openbsd-inetd openoffice.org openoffice.org-base
   openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw
   openoffice.org-evolution openoffice.org-gcj openoffice.org-gnome openoffice.org-gtk
   openoffice.org-help-en-us openoffice.org-help-fr openoffice.org-impress openoffice.org-java-common
   openoffice.org-l10n-fr openoffice.org-math openoffice.org-thesaurus-en-us openoffice.org-writer
   openssh-blacklist openssh-client openssh-server openssl passwd patch pciutils perl perl-base
   perl-modules pidentd pmount policycoreutils poppler-utils portmap powermgmt-base printconf procps
   psmisc python python-apt python-cairo python-central python-foomatic python-glade2 python-gmenu
   python-gnome2 python-gnome2-desktop python-gnome2-extras python-gtk2 python-ipy python-libxml2
   python-minimal python-newt python-numeric python-pyorbit python-qt3 python-selinux python-semanage
   python-sip4 python-support python-uno python-vte python2.4 python2.4-minimal rdesktop readline-common
   reportbug rhythmbox scrollkeeper sed shared-mime-info sharutils sound-juicer strace sudo svgalibg1
   synaptic sysklogd system-tools-backends sysv-rc sysvinit sysvinit-utils tar tasksel tasksel-data tcpd
   telnet texinfo time totem totem-mozilla totem-xine traceroute tsclient ttf-dejavu ttf-opensymbol twm
   type-handling tzdata ucf udev unzip update-inetd update-manager update-notifier usbutils uswsusp
   util-linux vbetool vim-common vim-tiny vino w3m wamerican wfrench wget whiptail whois wodim
   wpasupplicant x11-common xbase-clients xdg-utils xfonts-100dpi xfonts-75dpi xfonts-base 
   xfonts-encodings xfonts-utils xkb-data xml-core xorg xresprobe xsane xsane-common xserver-xorg
   xserver-xorg-core xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd
   xserver-xorg-input-mouse xserver-xorg-input-synaptics xserver-xorg-input-wacom xserver-xorg-video-all
   xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati xserver-xorg-video-chips
   xserver-xorg-video-cirrus xserver-xorg-video-cyrix xserver-xorg-video-dummy xserver-xorg-video-fbdev
   xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-i740 xserver-xorg-video-i810
   xserver-xorg-video-imstt xserver-xorg-video-mga xserver-xorg-video-neomagic xserver-xorg-video-nsc
   xserver-xorg-video-nv xserver-xorg-video-rendition xserver-xorg-video-s3 xserver-xorg-video-s3virge
   xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis
   xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident
   xserver-xorg-video-tseng xserver-xorg-video-v4l xserver-xorg-video-vesa xserver-xorg-video-vga
   xserver-xorg-video-via xserver-xorg-video-vmware xserver-xorg-video-voodoo xsltproc xterm
   xulrunner-gnome-support xutils xutils-dev yelp zenity zlib1g
 729 mis à jour, 294 nouvellement installés, 15 à enlever et 0 non mis à jour.
 Il est nécessaire de prendre 869Mo dans les archives.
 Après dépaquetage, 647Mo d'espace disque supplémentaires seront utilisés.
 Souhaitez-vous continuer [O/n] ?

En fonction de votre connexion ça peut prendre des plombes...
Un conseil, si vous n'êtes pas sûr de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

 # apt-get -d upgrade

Puis

 # apt-get dist-upgrade

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut

[[Image:Capture150.jpeg]]

[[Image:Capture151.jpeg]]

[[Image:Capture153.jpeg]]

[[Image:Capture154.jpeg]]

[[Image:Capture156.jpeg]]

[[Image:Capture158.jpeg]]

[[Image:Capture159.jpeg]]

[[Image:Capture160.jpeg]]

[[Image:Capture161.jpeg]]

Sans le téléchargement des fichiers, comptez environ 50 minutes pour l'upgrade.

 # reboot

 $ uname -a
 Linux compta2 2.6.26-2-686 #1 SMP Thu Mar 11 23:19:46 UTC 2010 i686 GNU/Linux

A venir... Upgrade de Lenny à Squeeze !

----
--[[Utilisateur:Lol|Lol]] 9 avril 2010 à 13:55 (UTC)

[[Catégorie:Installation]]</text>
      <sha1>aa81aoqu73k1wzp9kmwvrzs85wvxj4y</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Mise à niveau (upgrade) de Lenny à Squeeze</title>
    <ns>0</ns>
    <id>584</id>
    <revision>
      <id>2407</id>
      <timestamp>2010-11-25T12:55:23Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « {{sid}}  La mise à niveau de Lenny à Squeeze se précise, nous allons faire ici un rapide résumé des opérations nécessaires à la réussite de cette mise à niveau (upg... »</comment>
      <text xml:space="preserve" bytes="31402">{{sid}}

La mise à niveau de Lenny à Squeeze se précise, nous allons faire ici un rapide résumé des opérations nécessaires à la réussite de cette mise à niveau (upgrade).
LVM est installé sur la machine que nous allons mettre à niveau afin de tester le plus de possibilités.

Avant toute chose, je souhaite faire quelques précisions :
Chaque configuration est propre à chacun, en fonction de ses goûts, de son matériel et de ses connaissances.
Un guide universel n'existe donc pas.

Prévoyez aussi d'avoir du temps devant vous, et d'être au calme.

Nous choisirons d'utiliser aptitude au lieu de apt-get, il est en effet plus exigeant concernant les dépendances, votre mise à niveau sera plus &quot;propre&quot;.

J'ai choisi une Lenny avec toutes les options de tasksel activées afin de faire un tour d'horizon le plus vaste possible des problèmes qui pourraient survenir.
L'environnement graphique est Xfce.

[[Fichier:Snapshot3.jpeg]]

== Pré-requis ==

=== Une bonne sauvegarde ===

Vous n'avez AUCUNE garanties que la mise à niveau se passe bien, alors, quel que soit la méthode que vous emploierez, une sauvegarde est le minimum que vous puissiez faire avant de vous lancer dans l'aventure..

Avec dd, dump ou simplement cp SAUVEGARDEZ !

=== Un système à jour! ===

Le fichier sources.list précédent la mise à niveau :

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org stable main non-free
#deb-src http://www.debian-multimedia.org stable main non-free

# backports
deb http://backports.debian.org/debian-backports lenny-backports main contrib non-free
&lt;/code&gt;

 # aptitude update
 # aptitude safe-upgrade
 # aptitude full-upgrade

=== De l'espace! ===

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition ou se trouve /var pour le stockage des paquets téléchargés.

Pour info une mise à jour &quot;lourde&quot; se soldera par le téléchargement d'environ 1Go...

Pour connaître l’espace libre de votre partition racine :

 $ df -H
 Sys. de fich.          Tail.  Occ.  Disp. %Occ. Monté sur
 '''/dev/dm-0              338M   123M   198M  39% /'''
 tmpfs                  262M      0   262M   0% /lib/init/rw
 udev                    11M   689k   9,8M   7% /dev
 tmpfs                  262M      0   262M   0% /dev/shm
 /dev/hda1              239M    20M   207M   9% /boot
 /dev/dm-5              3,7G    75M   3,4G   3% /home
 /dev/dm-4              317M    11M   290M   4% /tmp
 /dev/dm-1              3,7G   1,7G   1,8G  50% /usr
 '''/dev/hdb1              5,3G   1,1G   4,0G  21% /var'''
 /dev/dm-2              1,8G   876M   818M  52% /media/dm-2

'''Si vous disposez de plus de 50% d’espace libre vous pouvez passer à l'étape suivant'''.

Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Si cela ne suffit toujours pas, il faut envisager d'ajouter un disque à votre système, ou de procéder à un upgrade par étapes successives (en mettant à jour les paquets progressivements et en nettoyant à chaque étape)

=== Les pilotes de la carte Graphique ===

Afin de ne pas avoir de mauvaise surprise avec le serveur X, modifiez votre xorg.conf afin d'utiliser des pilotes Debian.

Eventuellement utilisez les pilotes &quot;vesa&quot;

Dans votre fichier /etc/X11/xorg.conf

&lt;code&gt;
Section &quot;Device&quot;
    Identifier     &quot;Device0&quot;
    Driver         &quot;vesa&quot;
EndSection
&lt;/code&gt;

Si vous êtes sur de vous, n'en faites rien, mais prévoyez une réinstallation des pilotes avant le premier redémarrage.

=== Le fichier sources.list ===

Créons un nouveau sources.list que nous placerons dans /etc/apt/sources.list.d
Nous prenons dors et déjà la bonne habitude d'utiliser ce dossier qui est devenu celui par défaut pour mettre les fichiers contenant les dépôts.

 # nano /etc/apt/sources.list.d/sources.list

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free

# stable security
deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

## stable volatile
## Il n'y a pas de dépôt volatile pour squeeze pour l'instant
## deb http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free
## deb-src http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org squeeze main non-free
#deb-src http://www.debian-multimedia.org squeeze main non-free

# backports
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
&lt;/code&gt;

== Préparation de la mise à niveau ==

Maintenant que nous sommes prêts, nous pouvons lancer l'upgrade :

Mise à jour de la liste des paquets :

 # aptitude update

=== Si vous avez des problèmes de clefs ===

 W: GPG error: http://www.debian-multimedia.org

 # aptitude install debian-backports-keyring
 # aptitude install debian-multimedia-keyring

=== Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]] ===

 E: Dynamic MMap ran out of room

 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaite l'update, il ne doit pas y avoir d'erreurs

 # aptitude update

=== Problèmes de dépendances ===

Vous ne pourrez pas faire le passege de Lenny à Squeeze tant que subsisteront des problèmes de dépendances...

Voici deux exemples de problèmes de dépendances, et la manière de le régler :

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  xfce4-mixer-oss: Est en conflit avec: xfce4-mixer-alsa mais 4.4.2-3 est installé.
  foomatic-db: Est en conflit avec: foomatic-db-hpijs mais 20080211-1 est installé.
  xfce4-mixer-alsa: Est en conflit avec: xfce4-mixer-oss mais 4.4.2-3 doit être installé.

# aptitude install foomatic-db xfce4-mixer-alsa
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Lecture des descriptions de tâches... Fait  
Les NOUVEAUX paquets suivants vont être installés : 
  libopenjpeg2{a} libpoppler5{a} min12xxw{a} pnm2ppa{a} 
Les paquets suivants seront ENLEVÉS : 
  foomatic-db-hpijs{a} 
Les paquets suivants seront mis à jour : 
  fontconfig-config foomatic-db foomatic-db-engine foomatic-filters libfontconfig1 libjpeg62 libxml2 poppler-utils 
8 paquets mis à jour, 4 nouvellement installés, 1 à enlever et 728 non mis à jour.
Il est nécessaire de télécharger 4722ko d'archives. Après dépaquetage, 18,2Mo seront libérés.
Voulez-vous continuer ? [Y/n/?] o
...
État actuel : 728 mises à jour restantes [-8].
&lt;/code&gt;

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  libatlas3gf-base: Est en conflit avec: libblas3gf (&lt; 1.2-5) mais 1.2-2 est installé et a été conservé
                    Est en conflit avec: liblapack3gf (&lt; 3.2.1-4) mais 3.1.1-1 est installé et a été conservé
  rarian-compat: Est en conflit avec: scrollkeeper (&lt; 0.4) mais 0.3.14-16 est installé et a été conservé
&lt;/code&gt;
# aptitude install libatlas3gf-base scrollkeeper
...
Les actions suivantes permettront de résoudre ces dépendances :

Mettre à jour les paquets suivants :
libblas3gf [1.2-2 (stable, now) -&gt; 1.2-8 (testing)]
liblapack3gf [3.1.1-1 (stable, now) -&gt; 3.2.1-8 (testing)]

Le score est de 70

Accepter cette solution ? [Y/n/q/?] y
...
État actuel : 725 mises à jour restantes [-3].
&lt;/code&gt;

En cas de doute n'hésitez pas à demander un avis : [http://forum.debian-fr.org/]

=== stopper le serveur X ===

'''IMPORTANT''' : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

== Lancez la mise à niveau ==

&lt;code&gt;
# aptitude safe-upgrade
...
Les paquets suivants ont été conservés : 
  apt apt-utils aptitude synaptic 
Les NOUVEAUX paquets suivants vont être installés : 
  acpi-fakekey{a} apache2.2-bin{a} aumix{a} aumix-common{a} bluez{a} bluez-alsa{a} bluez-cups{a} bluez-gstreamer{a} 
  browser-plugin-gnash{a} cifs-utils{a} consolekit{a} cpp-4.4{a} cracklib-runtime{a} cups-ppdc{a} dash{a} db4.8-util{a} 
  diffutils{a} dosfstools{a} firmware-linux-free{a} freepats{a} fuse-utils{a} gcc-4.4-base{a} gcj-4.4-base{a} 
  gcj-4.4-jre-lib{a} geoip-database{a} ghostscript-cups{a} gnash{a} gnash-common{a} gnupg-curl{a} grub-pc{a} 
  gstreamer0.10-ffmpeg{a} gstreamer0.10-fluendo-mp3{a} gstreamer0.10-plugins-bad{a} gstreamer0.10-plugins-base{a} gvfs{a} 
  hplip-cups{a} insserv{a} install-info{a} isc-dhcp-client{a} isc-dhcp-common{a} iso-codes{a} keyboard-configuration{a} 
  libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libass4{a} libatasmart4{a} libaudit0{a} libavahi-core7{a} libavcodec52{a} 
  libavformat52{a} libavutil50{a} libbabl-0.0-0{a} libbind9-60{a} libbluetooth3{a} libboost-date-time1.42.0{a} 
  libboost-thread1.42.0{a} libbsd0{a} libburn4{a} libc-bin{a} libc-client2007e{a} libcap-ng0{a} libcdaudio1{a} libcdio10{a} 
  libcdparanoia0{a} libcelt0-0{a} libck-connector0{a} libcolamd2.7.1{a} libcommons-beanutils-java{a} 
  libcommons-collections3-java{a} libcommons-compress-java{a} libcommons-digester-java{a} libcommons-logging-java{a} 
  libcrack2{a} libcupscgi1{a} libcupsdriver1{a} libcupsmime1{a} libcupsppdc1{a} libdatrie1{a} libdb-je-java{a} libdb4.7{a} 
  libdb4.7-java{a} libdb4.7-java-gcj{a} libdb4.8{a} libdc1394-22{a} libdca0{a} libdirac-encoder0{a} libdirectfb-1.2-9{a} 
  libdns66{a} libdrm-intel1{a} libdrm-nouveau1{a} libdrm-radeon1{a} libdvdnav4{a} libdvdread4{a} libeggdbus-1-0{a} libenca0{a} 
  libenchant1c2a{a} libevent-1.4-2{a} libexempi3{a} libexo-common{a} libfaad2{a} libfftw3-3{a} libfile-copy-recursive-perl{a} 
  libflite1{a} libfont-freetype-perl{a} libfuse2{a} libgcj10{a} libgcr0{a} libgdu0{a} libgegl-0.0-0{a} libgeoip1{a} libgif4{a} 
  libgme0{a} libgomp1{a} libgp11-0{a} libgpgme11{a} libgraphicsmagick3{a} libgraphite3{a} libgssapi-krb5-2{a} libgtkglext1{a} 
  libgudev-1.0-0{a} libhpmud0{a} libicu44{a} libicu4j-java{a} libiptcdata0{a} libisc60{a} libisccc60{a} libisccfg60{a} 
  libiso9660-7{a} libisofs6{a} libiw30{a} libjbig2dec0{a} libjpeg-progs{a} libjpeg8{a} libjtidy-java{a} libk5crypto3{a} 
  libkate1{a} libkrb5-3{a} libkrb5support0{a} libltdl7{a} liblucene2-java{a} liblwres60{a} liblzma2{a} libmimic0{a} libmms0{a} 
  libmodplug1{a} libmozjs2d{a} libmpcdec6{a} libmpfr4{a} libmusicbrainz4c2a{a} libmythes-1.2-0{a} libneon27-gnutls{a} 
  libnetaddr-ip-perl{a} libnfnetlink0{a} libnl1{a} libntfs-3g75{a} libntfs10{a} libofa0{a} libonig2{a} libopencore-amrnb0{a} 
  libopencore-amrwb0{a} libopenraw1{a} liborc-0.4-0{a} libossp-uuid16{a} libpam-ck-connector{a} libpam-cracklib{a} 
  libpango-perl{a} libpangomm-1.4-1{a} libparted0debian1{a} libpciaccess0{a} libpolkit-agent-1-0{a} libpolkit-backend-1-0{a} 
  libpolkit-gobject-1-0{a} libpoppler-glib4{a} libpth20{a} libpython2.6{a} libqdbm14{a} libraptor1{a} librasqal2{a} 
  libraw1394-11{a} librdf0{a} libreadline6{a} librtmp0{a} libsane-hpaio{a} libsasl2-modules{a} libservlet2.5-java{a} 
  libsexy2{a} libsgutils2-2{a} libslv2-9{a} libsndfile1{a} libsoundtouch1c2{a} libswscale0{a} libtag1-vanilla{a} libtalloc2{a} 
  libtextcat-data-utf8{a} libtokyocabinet8{a} libudev0{a} libunique-1.0-0{a} libusb-1.0-0{a} libutempter0{a} libuuid-perl{a} 
  libv4l-0{a} libva1{a} libvcdinfo0{a} libvisual-0.4-0{a} libvisual-0.4-plugins{a} libvpx0{a} libwebkit-1.0-2{a} 
  libwebkit-1.0-common{a} libwildmidi1{a} libwnck-common{a} libwnck22{a} libx11-xcb1{a} libx264-104{a} libxcb-atom1{a} 
  libxcb-aux0{a} libxcb-dri2-0{a} libxcb-event1{a} libxfce4menu-0.1-0{a} libxfce4util-bin{a} libxfce4util-common{a} 
  libxfconf-0-2{a} libxklavier16{a} libxml-parser-perl{a} libxres1{a} libzbar0{a} linux-base{a} linux-image-2.6.32-5-amd64{a} 
  lockfile-progs{a} lsb-release{a} mtools{a} ntfsprogs{a} os-prober{a} oss-compat{a} php5-cli{a} php5-suhosin{a} 
  policykit-1{a} policykit-1-gnome{a} postgresql-8.4{a} postgresql-client-8.4{a} postgresql-contrib-8.4{a} 
  postgresql-doc-8.4{a} python-cups{a} python-gconf{a} python-numpy{a} python-pexpect{a} python-reportbug{a} python-webkit{a} 
  python2.6{a} python2.6-minimal{a} ristretto{a} samba-common-bin{a} sane-utils{a} sensible-utils{a} squeeze{a} 
  tango-icon-theme{a} thunar-archive-plugin{a} thunar-volman{a} tsconf{a} ttf-freefont{a} ttf-lyx{a} ttf-sil-gentium{a} 
  ttf-sil-gentium-basic{a} udisks{a} uno-libs3{a} unzip{a} ure{a} x-ttcidfont-conf{a} xdg-user-dirs{a} xfburn{a} 
  xfce-keyboard-shortcuts{a} xfce4-appfinder{a} xfce4-clipman{a} xfce4-datetime-plugin{a} xfce4-dict{a} xfce4-notes{a} 
  xfce4-notifyd{a} xfce4-places-plugin{a} xfce4-power-manager{a} xfce4-power-manager-data{a} xfce4-screenshooter{a} 
  xfce4-settings{a} xfce4-taskmanager{a} xfce4-timer-plugin{a} xfce4-xkb-plugin{a} xfconf{a} xfonts-mathml{a} xinput{a} xli{a} 
  xorg-docs-core{a} xscreensaver{a} xscreensaver-data{a} xserver-common{a} xserver-xorg-video-nouveau{a} xulrunner-1.9.1{a} 
  xz-utils{a} 
Les paquets suivants seront ENLEVÉS : 
  bluez-utils{u} cpp-4.3{u} cupsddk-drivers{u} djvulibre-desktop{u} finger{u} gs-common{u} liba52-0.7.4{u} libamrnb3{u} 
  libamrwb3{u} libaudio2{u} libavahi-compat-libdnssd1{u} libavahi-core5{u} libavc1394-0{u} libavcodec51{u} libbind9-50{u} 
  libbluetooth2{u} libc-client2007b{u} libcap1{u} libcucul0{u} libcupsys2{u} libcurl3{u} libdatrie0{u} libdirac0{u} 
  libdjvulibre21{u} libfaad0{u} libfreebob0{u} libgail-common{u} libgraphviz4{u} libgtkhtml2-0{u} libicu38{u} libiec61883-0{u} 
  libisccc50{u} libisccfg50{u} libiw29{u} libjaxp1.3-java-gcj{u} libltdl3{u} liblwres50{u} libmagick10{u} libmodplug0c2{u} 
  libmozjs1d{u} libmpcdec3{u} libmpfr1ldbl{u} libmysqlclient15off{u} libneon27{u} libntfs-3g31{u} libossp-uuid15{u} 
  libparted1.8-10{u} libpoppler-glib3{u} libpoppler3{u} libqt3-mt{u} libraw1394-8{u} libsensors3{u} libservlet2.4-java{u} 
  libsmbios-bin{u} libsmbios2{u} libssh2-1{u} libsuitesparse-3.1.0{u} libswfdec-0.6-90{u} libtalloc1{u} libvolume-id0{u} 
  libx264-65{u} libxalan2-java{u} libxalan2-java-gcj{u} libxcb-xlib0{u} libxerces2-java{u} libxerces2-java-gcj{u} 
  libxfce4mcs-client3{u} libxfce4mcs-manager3{u} libxtrap6{u} libxxf86misc1{u} mysql-common{u} openoffice.org-writer2latex{u} 
  openssl-blacklist{u} postgresql-8.3{u} postgresql-client-8.3{u} postgresql-contrib-8.3{u} postgresql-doc-8.3{u} 
  python-gtkhtml2{u} python-numeric{u} svgalibg1{u} xfce4-icon-theme{u} xfce4-mcs-manager{u} xfce4-mcs-plugins{u} 
  xfce4-minicmd-plugin{u} xfce4-screenshooter-plugin{u} xserver-xorg-video-cyrix{u} xserver-xorg-video-v4l{u} 
  xserver-xorg-video-vga{u} xulrunner-1.9{u} 
Les paquets suivants seront mis à jour : 
  a2ps acpi acpi-support acpi-support-base acpid adduser alsa-base alsa-utils anacron analog apache2 apache2-doc 
  apache2-mpm-prefork apache2-utils apache2.2-common apmd aspell aspell-fr at avahi-autoipd avahi-daemon base-files 
  base-passwd bash bash-completion bc bind9 bind9-doc bind9-host bind9utils bluetooth bsd-mailx bsdmainutils bsdutils bsh 
  bsh-gcj busybox ca-certificates console-common console-data console-setup console-terminus console-tools coreutils cpio cpp 
  cpufrequtils cron cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk dbus dbus-x11 dc debconf debconf-i18n 
  debian-archive-keyring debian-faq debianutils deborphan defoma desktop-base desktop-file-utils dhcp3-client dhcp3-common 
  dialog dictionaries-common diff disk-manager dmidecode dmsetup dnsutils doc-debian docbook-xml dpkg e2fslibs e2fsprogs ed 
  eject esound-common exim4 exim4-base exim4-config exim4-daemon-light exo-utils fastjar file findutils fontconfig foo2zjs 
  foomatic-db-gutenprint foomatic-filters-ppds foomatic-gui fortune-mod fortunes-min ftp gcc-4.3-base gconf2 gconf2-common gdm 
  gettext-base ghostscript gimp gimp-data gksu gnome-keyring gnupg gparted gpgv grep groff-base grub grub-common gsfonts 
  gtk2-engines-xfce gzip hal hal-info hdparm hibernate hicolor-icon-theme hostname hpijs hplip hplip-data iamerican ibritish 
  iceweasel iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint info initramfs-tools initscripts installation-report iproute 
  iptables iputils-ping ispell java-common kerneloops klibc-utils laptop-detect less libaa1 libacl1 libapache2-mod-perl2 
  libapache2-mod-php5 libapache2-mod-python libapm1 libapr1 libaprutil1 libart-2.0-2 libasound2 libaspell15 libatk1.0-0 
  libattr1 libaudiofile0 libavahi-client3 libavahi-common-data libavahi-common3 libavahi-glib1 libavutil49 libbcel-java 
  libblkid1 libbonobo2-0 libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i386 libcaca0 
  libcairo-perl libcairo2 libcairomm-1.0-1 libcap2 libcomerr2 libconsole libcpufreq0 libcroco3 libcups2 libcupsimage2 
  libcurl3-gnutls libcwidget3 libdaemon0 libdb4.6 libdbus-1-3 libdbus-glib-1-2 libdevel-symdump-perl libdevmapper1.02.1 
  libdigest-hmac-perl libdigest-sha1-perl libdirectfb-extra libdmx1 libdrm2 libedit2 libesd0 libexif12 libexo-0.3-0 libexpat1 
  libfaac0 libfam0 libffi5 libflac8 libfontenc1 libfreetype6 libfs6 libgail18 libgc1c2 libgcc1 libgcj-bc libgcj-common 
  libgconf2-4 libgcrypt11 libgd2-noxpm libgdbm3 libgfortran3 libgimp2.0 libgksu2-0 libgl1-mesa-dri libgl1-mesa-glx libglade2-0 
  libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgmp3c2 libgnome-keyring0 libgnome2-0 libgnome2-canvas-perl 
  libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0 libgnomecanvas2-common libgnomeui-0 libgnomeui-common 
  libgnomevfs2-0 libgnomevfs2-common libgnomevfs2-extra libgnutls26 libgpg-error0 libgphoto2-2 libgphoto2-port0 libgpm2 libgs8 
  libgsf-1-114 libgsf-1-common libgsm1 libgssglue1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0 
  libgtk2.0-common libgtkmm-2.4-1c2a libgtop2-7 libgtop2-common libgutenprint2 libhal-storage1 libhal1 libhsqldb-java 
  libhsqldb-java-gcj libhtml-parser-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libice6 libidl0 libidn11 libieee1284-3 
  libijs-0.35 libilmbase6 libjack0 libjasper1 libjaxp1.3-java libjline-java libkeyutils1 libklibc libkrb53 liblcms1 
  libldap-2.4-2 liblocale-gettext-perl liblockfile1 liblog4j1.2-java liblzo2-2 libmad0 libmagic1 libmng1 libmp3lame0 
  libmx4j-java libncurses5 libncursesw5 libnet-dns-perl libnewt0.52 libnfsidmap2 libnotify1 libnspr4-0d libnss-mdns libnss3-1d 
  libogg0 liboil0.3 libopenexr6 liborbit2 libpam-modules libpam-runtime libpam0g libpango1.0-0 libpango1.0-common libpaper1 
  libpci3 libpcre3 libpcsclite1 libperl5.10 libpixman-1-0 libpng12-0 libpopt0 libpostproc51 libpq5 libpulse0 libreadline5 
  librecode0 libregexp-java librpcsecgss3 librsvg2-2 librsvg2-common libsane libsane-extras libsasl2-2 libschroedinger-1.0-0 
  libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsensors4 libsepol1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 
  libsmbclient libsnmp-base libsnmp15 libsocket6-perl libsoup2.4-1 libsqlite3-0 libss2 libssl0.9.8 libstartup-notification0 
  libstdc++6 libsvga1 libsysfs2 libtag1c2a libtagc0 libtasn1-3 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl 
  libthai-data libthai0 libtheora0 libthunar-vfs-1-2 libtiff4 libts-0.0-0 liburi-perl libusb-0.1-4 libuuid1 libvorbis0a 
  libvorbisenc2 libvte-common libvte9 libwavpack1 libwbclient0 libwmf0.2-7 libwpg-0.1-1 libwrap0 libwww-perl libx11-6 
  libx11-data libx86-1 libxau6 libxaw7 libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xv0 libxcb1 
  libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfce4util4 libxfcegui4-4 libxfixes3 libxfont1 libxft2 libxi6 
  libxine1 libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins libxine1-plugins libxine1-x libxinerama1 
  libxkbfile1 libxmu6 libxmuu1 libxpm4 libxrandr2 libxrender1 libxslt1.1 libxss1 libxt6 libxtst6 libxv1 libxvidcore4 libxvmc1 
  libxxf86dga1 libxxf86vm1 linux-image-2.6-amd64 linux-sound-base locales login logrotate lp-solve lsb-base lsof lvm2 lwresd 
  m4 mailagent makedev man-db manpages manpages-fr manpages-fr-extra mawk mc menu mime-support mktemp mlocate mlock 
  module-init-tools mount mousepad mutt myspell-en-us myspell-fr-gut nano ncurses-base ncurses-bin ncurses-term net-tools 
  netatalk netbase nfs-common nfs-kernel-server ntfs-3g nvclock openbsd-inetd openoffice.org openoffice.org-base 
  openoffice.org-base-core openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw 
  openoffice.org-filter-mobiledev openoffice.org-gcj openoffice.org-gtk openoffice.org-help-en-us openoffice.org-help-fr 
  openoffice.org-impress openoffice.org-java-common openoffice.org-l10n-fr openoffice.org-math openoffice.org-officebean 
  openoffice.org-report-builder-bin openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-thesaurus-en-us 
  openoffice.org-writer openprinting-ppds openssh-client openssh-server openssl orage passwd patch pciutils pcmciautils perl 
  perl-base perl-modules php5-common pm-utils popularity-contest portmap postgresql postgresql-client postgresql-client-common 
  postgresql-common postgresql-contrib postgresql-doc powermgmt-base powertop printconf procmail procps psmisc psutils python 
  python-cairo python-central python-dbus python-foomatic python-glade2 python-gnome2 python-gobject python-gtk2 
  python-imaging python-ipy python-minimal python-pyorbit python-support python2.5 python2.5-minimal qpopper radeontool 
  readline-common reportbug rsyslog sa-exim samba samba-common samba-doc sed sgml-base sgml-data shared-mime-info 
  smartmontools smbclient smbfs spamassassin spamc ssl-cert sudo swat swfdec-mozilla sysv-rc sysvinit sysvinit-utils tar 
  tasksel tasksel-data tcpd texinfo thunar thunar-data thunar-media-tags-plugin time toshset traceroute ttf-dejavu 
  ttf-dejavu-core ttf-dejavu-extra ttf-liberation ttf-opensymbol tzdata ucf udev update-inetd usbutils util-linux uw-imapd 
  vbetool vim-common vim-tiny w3m wamerican wfrench wget whiptail whois winbind wireless-tools wpasupplicant x11-apps 
  x11-common x11-session-utils x11-utils x11-xfs-utils x11-xkb-utils x11-xserver-utils xauth xbitmaps xdg-utils xfce4 
  xfce4-battery-plugin xfce4-clipman-plugin xfce4-cpufreq-plugin xfce4-cpugraph-plugin xfce4-diskperf-plugin 
  xfce4-fsguard-plugin xfce4-genmon-plugin xfce4-goodies xfce4-mailwatch-plugin xfce4-mixer xfce4-mount-plugin 
  xfce4-netload-plugin xfce4-notes-plugin xfce4-panel xfce4-quicklauncher-plugin xfce4-sensors-plugin xfce4-session 
  xfce4-smartbookmark-plugin xfce4-systemload-plugin xfce4-terminal xfce4-utils xfce4-verve-plugin xfce4-wavelan-plugin 
  xfce4-weather-plugin xfdesktop4 xfdesktop4-data xfonts-100dpi xfonts-75dpi xfonts-base xfonts-encodings xfonts-intl-european 
  xfonts-scalable xfonts-utils xfprint4 xfwm4 xinit xkb-data xml-core xorg xsane xsane-common xserver-xorg xserver-xorg-core 
  xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd xserver-xorg-input-mouse xserver-xorg-input-synaptics 
  xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati 
  xserver-xorg-video-chips xserver-xorg-video-cirrus xserver-xorg-video-dummy xserver-xorg-video-fbdev 
  xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-intel xserver-xorg-video-mach64 xserver-xorg-video-mga 
  xserver-xorg-video-neomagic xserver-xorg-video-nv xserver-xorg-video-openchrome xserver-xorg-video-r128 
  xserver-xorg-video-radeon xserver-xorg-video-radeonhd xserver-xorg-video-rendition xserver-xorg-video-s3 
  xserver-xorg-video-s3virge xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis 
  xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident xserver-xorg-video-tseng 
  xserver-xorg-video-vesa xserver-xorg-video-vmware xserver-xorg-video-voodoo xterm zlib1g 
Les paquets suivants sont RECOMMANDÉS mais ne seront pas installés :
  bzip2 gamin gcc gdm-themes hddtemp libapache2-reload-perl libatk1.0-data libatm1 libbsd-resource-perl libc6-dev libfribidi0 
  libglib2.0-data libgtk2.0-bin libhtml-format-perl libio-socket-inet6-perl liblog4j1.2-java-gcj libmail-spf-perl 
  libmailtools-perl libnss-lwres libpam-gnome-keyring libpaper-utils lm-sensors make nmap openoffice.org-emailmerge 
  openoffice.org-filter-binfilter pconf-detect rc re2c uuid-runtime wdiff xfwm4-themes xnest xserver-xephyr zenity 
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] 
&lt;/code&gt;

En fonction de votre connexion ça peut prendre très longtemps, et être interrompu (à 500KB/s une demi-heure à 50 KB/s c'est plusieurs heures...).
Un conseil, si vous n'êtes pas sûr de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

&lt;code&gt;
# aptitude -d safe-upgrade
...
 762Mo téléchargés en 1h9min37s (182ko/s)                                                          
Lecture des listes de paquets... Fait             
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait
&lt;/code&gt;

Puis

&lt;code&gt;
# aptitude safe-upgrade
...
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 0o/762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] y
&lt;/code&gt;

=== Déroulement ===

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut

[[Fichier:Snapshot4.jpeg]]

[[Fichier:Snapshot5.jpeg]]

[[Fichier:Snapshot6.jpeg]]

[[Fichier:Snapshot7.jpeg]]

[[Fichier:Snapshot9.jpeg]]

[[Fichier:Snapshot11.jpeg]]

[[Fichier:Snapshot13.jpeg]]

[[Fichier:Snapshot14.jpeg]]

[[Fichier:Snapshot15.jpeg]]

[[Fichier:Snapshot16.jpeg]]

[[Fichier:Snapshot17.jpeg]]

Vous partirez d'une Lenny configurée, et donc de nombreux fichiers de configuration auront été modifiés par vos soins.
Il est judicieux de ne pas écraser vos configurations avec les fichiers par défauts proposés par les &quot;mainteneurs&quot; des paquets.
Vous aurez tout le loisir de regarder les modifications proposées, et ce qu'elles apportent, en regardant dans /usr/share/doc ou dans les contenus de vos deb téléchargés (dans /var/apt/archives)

[[Fichier:Snapshot18.jpeg]]

Sans le téléchargement des fichiers, comptez un peu plus d'une heure pour la mise à niveau

=== finalisation ===

Le safe-upgrade devrait se terminer par ceci :

&lt;code&gt;
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 4 mises à jour restantes [-721].
&lt;/code&gt;

Vous pouvez maintenant lancer un &quot;full-upgrade&quot;

&lt;code&gt;
# aptitude full-upgrade

...

4 paquets mis à jour, 13 nouvellement installés, 2 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 12,1Mo d'archives. Après dépaquetage, 14,3Mo seront utilisés.
Les paquets suivants ont des dépendances non satisfaites :
  libept0: Dépend: libapt-pkg-libc6.7-6-4.6 qui est un paquet virtuel
Les actions suivantes permettront de résoudre ces dépendances :

Supprimer les paquets suivants :
libept0

Le score est de 115

Accepter cette solution ? [Y/n/q/?]y

...

Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 0 mise à jour restante [-4].
&lt;/code&gt;

Si tout s'est bien passé, il ne vous reste plus qu'a redémarrer le machine :

 # reboot

=== Grub2 ===

Si vous étiez sous Grub-legacy vous aurez certainement fait la bascule vers Grub2.

La première &quot;surprise&quot; qui vous attend donc (sauf si vous avez lu ce guide avant...) c'est le menu suivant :

[[Fichier:Snapshot19.jpeg]]

Si vous appuyez sur entrée, cvous serez conduit vers le menu de Grub2.
Cette étape permet de vérifier que Grub2 est bien installé, et de le tester.

[[Fichier:Snapshot20.jpeg]]

Si cela fonctionne, une des premières choses à faire sera de confirmer l'installation de Grub2 en tapant dans une console la commande suivante :

 # upgrade-from-grub-legacy

=== LVM ===

Problème rencontré lors de la mise à niveau avec LVM...
Le système s'est mélangé les pédales dans l'attribution des partitions.
Résultat :

[[Fichier:Snapshot21.jpeg]]

Voici ou se situe le problème :

&lt;code&gt;
$ vdir /dev/l2s/
total 0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 home -&gt; ../dm-5
lrwxrwxrwx 1 root root 7 25 nov.  18:28 root -&gt; ../dm-0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 swap_1 -&gt; ../dm-1
lrwxrwxrwx 1 root root 7 25 nov.  18:28 tmp -&gt; ../dm-4
lrwxrwxrwx 1 root root 7 25 nov.  18:28 usr -&gt; ../dm-2
lrwxrwxrwx 1 root root 7 25 nov.  18:28 var -&gt; ../dm-3
&lt;/code&gt;
&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
# /dev/hda1	/boot	ext2	defaults	0	2
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-1	/usr	ext3	defaults	0	2
# /dev/hdb1	/var	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-3	none	swap	sw	0	0
# /dev/hdc	/media/cdrom0	udf,iso9660	user,noauto	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

Je ne sais pour quelle raison LVM à changé la numérotation des partitions... /usr est passé en dm-1 alors qu'il devrait être en dm-2 et la swap en dm-3 alors quelle devrait être en dm-1
Il suffit de modifier le fichier /etc/fstab pour qu'il reflète à nouveau correctement vos partitions, et le tour est joué :

&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-2	/usr	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-1	none	swap	sw	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

== Bienvenu sur Squeeze ==

 laurent@lenny2squeeze:~$ uname -a
 Linux lenny2squeeze 2.6.32-5-amd64 #1 SMP Sat Oct 30 14:18:21 UTC 2010 x86_64 GNU/Linux

[[Fichier:Snapshot25.jpeg]]

A venir... Upgrade de Squeeze à ????

----
[[Utilisateur:Lol|Lol]] 25 novembre 2010 à 15:55 (EAT)
[[Catégorie:Installation]]</text>
      <sha1>9x6jd2qlan6pqg31y6lvw4vn3wzssnb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2408</id>
      <parentid>2407</parentid>
      <timestamp>2010-11-25T13:20:07Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Problèmes de dépendances */</comment>
      <text xml:space="preserve" bytes="31406">{{sid}}

La mise à niveau de Lenny à Squeeze se précise, nous allons faire ici un rapide résumé des opérations nécessaires à la réussite de cette mise à niveau (upgrade).
LVM est installé sur la machine que nous allons mettre à niveau afin de tester le plus de possibilités.

Avant toute chose, je souhaite faire quelques précisions :
Chaque configuration est propre à chacun, en fonction de ses goûts, de son matériel et de ses connaissances.
Un guide universel n'existe donc pas.

Prévoyez aussi d'avoir du temps devant vous, et d'être au calme.

Nous choisirons d'utiliser aptitude au lieu de apt-get, il est en effet plus exigeant concernant les dépendances, votre mise à niveau sera plus &quot;propre&quot;.

J'ai choisi une Lenny avec toutes les options de tasksel activées afin de faire un tour d'horizon le plus vaste possible des problèmes qui pourraient survenir.
L'environnement graphique est Xfce.

[[Fichier:Snapshot3.jpeg]]

== Pré-requis ==

=== Une bonne sauvegarde ===

Vous n'avez AUCUNE garanties que la mise à niveau se passe bien, alors, quel que soit la méthode que vous emploierez, une sauvegarde est le minimum que vous puissiez faire avant de vous lancer dans l'aventure..

Avec dd, dump ou simplement cp SAUVEGARDEZ !

=== Un système à jour! ===

Le fichier sources.list précédent la mise à niveau :

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org stable main non-free
#deb-src http://www.debian-multimedia.org stable main non-free

# backports
deb http://backports.debian.org/debian-backports lenny-backports main contrib non-free
&lt;/code&gt;

 # aptitude update
 # aptitude safe-upgrade
 # aptitude full-upgrade

=== De l'espace! ===

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition ou se trouve /var pour le stockage des paquets téléchargés.

Pour info une mise à jour &quot;lourde&quot; se soldera par le téléchargement d'environ 1Go...

Pour connaître l’espace libre de votre partition racine :

 $ df -H
 Sys. de fich.          Tail.  Occ.  Disp. %Occ. Monté sur
 '''/dev/dm-0              338M   123M   198M  39% /'''
 tmpfs                  262M      0   262M   0% /lib/init/rw
 udev                    11M   689k   9,8M   7% /dev
 tmpfs                  262M      0   262M   0% /dev/shm
 /dev/hda1              239M    20M   207M   9% /boot
 /dev/dm-5              3,7G    75M   3,4G   3% /home
 /dev/dm-4              317M    11M   290M   4% /tmp
 /dev/dm-1              3,7G   1,7G   1,8G  50% /usr
 '''/dev/hdb1              5,3G   1,1G   4,0G  21% /var'''
 /dev/dm-2              1,8G   876M   818M  52% /media/dm-2

'''Si vous disposez de plus de 50% d’espace libre vous pouvez passer à l'étape suivant'''.

Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Si cela ne suffit toujours pas, il faut envisager d'ajouter un disque à votre système, ou de procéder à un upgrade par étapes successives (en mettant à jour les paquets progressivements et en nettoyant à chaque étape)

=== Les pilotes de la carte Graphique ===

Afin de ne pas avoir de mauvaise surprise avec le serveur X, modifiez votre xorg.conf afin d'utiliser des pilotes Debian.

Eventuellement utilisez les pilotes &quot;vesa&quot;

Dans votre fichier /etc/X11/xorg.conf

&lt;code&gt;
Section &quot;Device&quot;
    Identifier     &quot;Device0&quot;
    Driver         &quot;vesa&quot;
EndSection
&lt;/code&gt;

Si vous êtes sur de vous, n'en faites rien, mais prévoyez une réinstallation des pilotes avant le premier redémarrage.

=== Le fichier sources.list ===

Créons un nouveau sources.list que nous placerons dans /etc/apt/sources.list.d
Nous prenons dors et déjà la bonne habitude d'utiliser ce dossier qui est devenu celui par défaut pour mettre les fichiers contenant les dépôts.

 # nano /etc/apt/sources.list.d/sources.list

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free

# stable security
deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

## stable volatile
## Il n'y a pas de dépôt volatile pour squeeze pour l'instant
## deb http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free
## deb-src http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org squeeze main non-free
#deb-src http://www.debian-multimedia.org squeeze main non-free

# backports
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
&lt;/code&gt;

== Préparation de la mise à niveau ==

Maintenant que nous sommes prêts, nous pouvons lancer l'upgrade :

Mise à jour de la liste des paquets :

 # aptitude update

=== Si vous avez des problèmes de clefs ===

 W: GPG error: http://www.debian-multimedia.org

 # aptitude install debian-backports-keyring
 # aptitude install debian-multimedia-keyring

=== Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]] ===

 E: Dynamic MMap ran out of room

 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaite l'update, il ne doit pas y avoir d'erreurs

 # aptitude update

=== Problèmes de dépendances ===

Vous ne pourrez pas faire le passege de Lenny à Squeeze tant que subsisteront des problèmes de dépendances...

Voici deux exemples de problèmes de dépendances, et la manière de le régler :

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  xfce4-mixer-oss: Est en conflit avec: xfce4-mixer-alsa mais 4.4.2-3 est installé.
  foomatic-db: Est en conflit avec: foomatic-db-hpijs mais 20080211-1 est installé.
  xfce4-mixer-alsa: Est en conflit avec: xfce4-mixer-oss mais 4.4.2-3 doit être installé.

# aptitude install foomatic-db xfce4-mixer-alsa
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Lecture des descriptions de tâches... Fait  
Les NOUVEAUX paquets suivants vont être installés : 
  libopenjpeg2{a} libpoppler5{a} min12xxw{a} pnm2ppa{a} 
Les paquets suivants seront ENLEVÉS : 
  foomatic-db-hpijs{a} 
Les paquets suivants seront mis à jour : 
  fontconfig-config foomatic-db foomatic-db-engine foomatic-filters libfontconfig1 libjpeg62 libxml2 poppler-utils 
8 paquets mis à jour, 4 nouvellement installés, 1 à enlever et 728 non mis à jour.
Il est nécessaire de télécharger 4722ko d'archives. Après dépaquetage, 18,2Mo seront libérés.
Voulez-vous continuer ? [Y/n/?] o
...
État actuel : 728 mises à jour restantes [-8].
&lt;/code&gt;

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  libatlas3gf-base: Est en conflit avec: libblas3gf (&lt; 1.2-5) mais 1.2-2 est installé et a été conservé
                    Est en conflit avec: liblapack3gf (&lt; 3.2.1-4) mais 3.1.1-1 est installé et a été conservé
  rarian-compat: Est en conflit avec: scrollkeeper (&lt; 0.4) mais 0.3.14-16 est installé et a été conservé

# aptitude install libatlas3gf-base scrollkeeper
...
Les actions suivantes permettront de résoudre ces dépendances :

Mettre à jour les paquets suivants :
libblas3gf [1.2-2 (stable, now) -&gt; 1.2-8 (testing)]
liblapack3gf [3.1.1-1 (stable, now) -&gt; 3.2.1-8 (testing)]

Le score est de 70

Accepter cette solution ? [Y/n/q/?] y
...
État actuel : 725 mises à jour restantes [-3].
&lt;/code&gt;

En cas de doute n'hésitez pas à demander un avis [http://forum.debian-fr.org/ sur le forum]

=== stopper le serveur X ===

'''IMPORTANT''' : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

== Lancez la mise à niveau ==

&lt;code&gt;
# aptitude safe-upgrade
...
Les paquets suivants ont été conservés : 
  apt apt-utils aptitude synaptic 
Les NOUVEAUX paquets suivants vont être installés : 
  acpi-fakekey{a} apache2.2-bin{a} aumix{a} aumix-common{a} bluez{a} bluez-alsa{a} bluez-cups{a} bluez-gstreamer{a} 
  browser-plugin-gnash{a} cifs-utils{a} consolekit{a} cpp-4.4{a} cracklib-runtime{a} cups-ppdc{a} dash{a} db4.8-util{a} 
  diffutils{a} dosfstools{a} firmware-linux-free{a} freepats{a} fuse-utils{a} gcc-4.4-base{a} gcj-4.4-base{a} 
  gcj-4.4-jre-lib{a} geoip-database{a} ghostscript-cups{a} gnash{a} gnash-common{a} gnupg-curl{a} grub-pc{a} 
  gstreamer0.10-ffmpeg{a} gstreamer0.10-fluendo-mp3{a} gstreamer0.10-plugins-bad{a} gstreamer0.10-plugins-base{a} gvfs{a} 
  hplip-cups{a} insserv{a} install-info{a} isc-dhcp-client{a} isc-dhcp-common{a} iso-codes{a} keyboard-configuration{a} 
  libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libass4{a} libatasmart4{a} libaudit0{a} libavahi-core7{a} libavcodec52{a} 
  libavformat52{a} libavutil50{a} libbabl-0.0-0{a} libbind9-60{a} libbluetooth3{a} libboost-date-time1.42.0{a} 
  libboost-thread1.42.0{a} libbsd0{a} libburn4{a} libc-bin{a} libc-client2007e{a} libcap-ng0{a} libcdaudio1{a} libcdio10{a} 
  libcdparanoia0{a} libcelt0-0{a} libck-connector0{a} libcolamd2.7.1{a} libcommons-beanutils-java{a} 
  libcommons-collections3-java{a} libcommons-compress-java{a} libcommons-digester-java{a} libcommons-logging-java{a} 
  libcrack2{a} libcupscgi1{a} libcupsdriver1{a} libcupsmime1{a} libcupsppdc1{a} libdatrie1{a} libdb-je-java{a} libdb4.7{a} 
  libdb4.7-java{a} libdb4.7-java-gcj{a} libdb4.8{a} libdc1394-22{a} libdca0{a} libdirac-encoder0{a} libdirectfb-1.2-9{a} 
  libdns66{a} libdrm-intel1{a} libdrm-nouveau1{a} libdrm-radeon1{a} libdvdnav4{a} libdvdread4{a} libeggdbus-1-0{a} libenca0{a} 
  libenchant1c2a{a} libevent-1.4-2{a} libexempi3{a} libexo-common{a} libfaad2{a} libfftw3-3{a} libfile-copy-recursive-perl{a} 
  libflite1{a} libfont-freetype-perl{a} libfuse2{a} libgcj10{a} libgcr0{a} libgdu0{a} libgegl-0.0-0{a} libgeoip1{a} libgif4{a} 
  libgme0{a} libgomp1{a} libgp11-0{a} libgpgme11{a} libgraphicsmagick3{a} libgraphite3{a} libgssapi-krb5-2{a} libgtkglext1{a} 
  libgudev-1.0-0{a} libhpmud0{a} libicu44{a} libicu4j-java{a} libiptcdata0{a} libisc60{a} libisccc60{a} libisccfg60{a} 
  libiso9660-7{a} libisofs6{a} libiw30{a} libjbig2dec0{a} libjpeg-progs{a} libjpeg8{a} libjtidy-java{a} libk5crypto3{a} 
  libkate1{a} libkrb5-3{a} libkrb5support0{a} libltdl7{a} liblucene2-java{a} liblwres60{a} liblzma2{a} libmimic0{a} libmms0{a} 
  libmodplug1{a} libmozjs2d{a} libmpcdec6{a} libmpfr4{a} libmusicbrainz4c2a{a} libmythes-1.2-0{a} libneon27-gnutls{a} 
  libnetaddr-ip-perl{a} libnfnetlink0{a} libnl1{a} libntfs-3g75{a} libntfs10{a} libofa0{a} libonig2{a} libopencore-amrnb0{a} 
  libopencore-amrwb0{a} libopenraw1{a} liborc-0.4-0{a} libossp-uuid16{a} libpam-ck-connector{a} libpam-cracklib{a} 
  libpango-perl{a} libpangomm-1.4-1{a} libparted0debian1{a} libpciaccess0{a} libpolkit-agent-1-0{a} libpolkit-backend-1-0{a} 
  libpolkit-gobject-1-0{a} libpoppler-glib4{a} libpth20{a} libpython2.6{a} libqdbm14{a} libraptor1{a} librasqal2{a} 
  libraw1394-11{a} librdf0{a} libreadline6{a} librtmp0{a} libsane-hpaio{a} libsasl2-modules{a} libservlet2.5-java{a} 
  libsexy2{a} libsgutils2-2{a} libslv2-9{a} libsndfile1{a} libsoundtouch1c2{a} libswscale0{a} libtag1-vanilla{a} libtalloc2{a} 
  libtextcat-data-utf8{a} libtokyocabinet8{a} libudev0{a} libunique-1.0-0{a} libusb-1.0-0{a} libutempter0{a} libuuid-perl{a} 
  libv4l-0{a} libva1{a} libvcdinfo0{a} libvisual-0.4-0{a} libvisual-0.4-plugins{a} libvpx0{a} libwebkit-1.0-2{a} 
  libwebkit-1.0-common{a} libwildmidi1{a} libwnck-common{a} libwnck22{a} libx11-xcb1{a} libx264-104{a} libxcb-atom1{a} 
  libxcb-aux0{a} libxcb-dri2-0{a} libxcb-event1{a} libxfce4menu-0.1-0{a} libxfce4util-bin{a} libxfce4util-common{a} 
  libxfconf-0-2{a} libxklavier16{a} libxml-parser-perl{a} libxres1{a} libzbar0{a} linux-base{a} linux-image-2.6.32-5-amd64{a} 
  lockfile-progs{a} lsb-release{a} mtools{a} ntfsprogs{a} os-prober{a} oss-compat{a} php5-cli{a} php5-suhosin{a} 
  policykit-1{a} policykit-1-gnome{a} postgresql-8.4{a} postgresql-client-8.4{a} postgresql-contrib-8.4{a} 
  postgresql-doc-8.4{a} python-cups{a} python-gconf{a} python-numpy{a} python-pexpect{a} python-reportbug{a} python-webkit{a} 
  python2.6{a} python2.6-minimal{a} ristretto{a} samba-common-bin{a} sane-utils{a} sensible-utils{a} squeeze{a} 
  tango-icon-theme{a} thunar-archive-plugin{a} thunar-volman{a} tsconf{a} ttf-freefont{a} ttf-lyx{a} ttf-sil-gentium{a} 
  ttf-sil-gentium-basic{a} udisks{a} uno-libs3{a} unzip{a} ure{a} x-ttcidfont-conf{a} xdg-user-dirs{a} xfburn{a} 
  xfce-keyboard-shortcuts{a} xfce4-appfinder{a} xfce4-clipman{a} xfce4-datetime-plugin{a} xfce4-dict{a} xfce4-notes{a} 
  xfce4-notifyd{a} xfce4-places-plugin{a} xfce4-power-manager{a} xfce4-power-manager-data{a} xfce4-screenshooter{a} 
  xfce4-settings{a} xfce4-taskmanager{a} xfce4-timer-plugin{a} xfce4-xkb-plugin{a} xfconf{a} xfonts-mathml{a} xinput{a} xli{a} 
  xorg-docs-core{a} xscreensaver{a} xscreensaver-data{a} xserver-common{a} xserver-xorg-video-nouveau{a} xulrunner-1.9.1{a} 
  xz-utils{a} 
Les paquets suivants seront ENLEVÉS : 
  bluez-utils{u} cpp-4.3{u} cupsddk-drivers{u} djvulibre-desktop{u} finger{u} gs-common{u} liba52-0.7.4{u} libamrnb3{u} 
  libamrwb3{u} libaudio2{u} libavahi-compat-libdnssd1{u} libavahi-core5{u} libavc1394-0{u} libavcodec51{u} libbind9-50{u} 
  libbluetooth2{u} libc-client2007b{u} libcap1{u} libcucul0{u} libcupsys2{u} libcurl3{u} libdatrie0{u} libdirac0{u} 
  libdjvulibre21{u} libfaad0{u} libfreebob0{u} libgail-common{u} libgraphviz4{u} libgtkhtml2-0{u} libicu38{u} libiec61883-0{u} 
  libisccc50{u} libisccfg50{u} libiw29{u} libjaxp1.3-java-gcj{u} libltdl3{u} liblwres50{u} libmagick10{u} libmodplug0c2{u} 
  libmozjs1d{u} libmpcdec3{u} libmpfr1ldbl{u} libmysqlclient15off{u} libneon27{u} libntfs-3g31{u} libossp-uuid15{u} 
  libparted1.8-10{u} libpoppler-glib3{u} libpoppler3{u} libqt3-mt{u} libraw1394-8{u} libsensors3{u} libservlet2.4-java{u} 
  libsmbios-bin{u} libsmbios2{u} libssh2-1{u} libsuitesparse-3.1.0{u} libswfdec-0.6-90{u} libtalloc1{u} libvolume-id0{u} 
  libx264-65{u} libxalan2-java{u} libxalan2-java-gcj{u} libxcb-xlib0{u} libxerces2-java{u} libxerces2-java-gcj{u} 
  libxfce4mcs-client3{u} libxfce4mcs-manager3{u} libxtrap6{u} libxxf86misc1{u} mysql-common{u} openoffice.org-writer2latex{u} 
  openssl-blacklist{u} postgresql-8.3{u} postgresql-client-8.3{u} postgresql-contrib-8.3{u} postgresql-doc-8.3{u} 
  python-gtkhtml2{u} python-numeric{u} svgalibg1{u} xfce4-icon-theme{u} xfce4-mcs-manager{u} xfce4-mcs-plugins{u} 
  xfce4-minicmd-plugin{u} xfce4-screenshooter-plugin{u} xserver-xorg-video-cyrix{u} xserver-xorg-video-v4l{u} 
  xserver-xorg-video-vga{u} xulrunner-1.9{u} 
Les paquets suivants seront mis à jour : 
  a2ps acpi acpi-support acpi-support-base acpid adduser alsa-base alsa-utils anacron analog apache2 apache2-doc 
  apache2-mpm-prefork apache2-utils apache2.2-common apmd aspell aspell-fr at avahi-autoipd avahi-daemon base-files 
  base-passwd bash bash-completion bc bind9 bind9-doc bind9-host bind9utils bluetooth bsd-mailx bsdmainutils bsdutils bsh 
  bsh-gcj busybox ca-certificates console-common console-data console-setup console-terminus console-tools coreutils cpio cpp 
  cpufrequtils cron cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk dbus dbus-x11 dc debconf debconf-i18n 
  debian-archive-keyring debian-faq debianutils deborphan defoma desktop-base desktop-file-utils dhcp3-client dhcp3-common 
  dialog dictionaries-common diff disk-manager dmidecode dmsetup dnsutils doc-debian docbook-xml dpkg e2fslibs e2fsprogs ed 
  eject esound-common exim4 exim4-base exim4-config exim4-daemon-light exo-utils fastjar file findutils fontconfig foo2zjs 
  foomatic-db-gutenprint foomatic-filters-ppds foomatic-gui fortune-mod fortunes-min ftp gcc-4.3-base gconf2 gconf2-common gdm 
  gettext-base ghostscript gimp gimp-data gksu gnome-keyring gnupg gparted gpgv grep groff-base grub grub-common gsfonts 
  gtk2-engines-xfce gzip hal hal-info hdparm hibernate hicolor-icon-theme hostname hpijs hplip hplip-data iamerican ibritish 
  iceweasel iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint info initramfs-tools initscripts installation-report iproute 
  iptables iputils-ping ispell java-common kerneloops klibc-utils laptop-detect less libaa1 libacl1 libapache2-mod-perl2 
  libapache2-mod-php5 libapache2-mod-python libapm1 libapr1 libaprutil1 libart-2.0-2 libasound2 libaspell15 libatk1.0-0 
  libattr1 libaudiofile0 libavahi-client3 libavahi-common-data libavahi-common3 libavahi-glib1 libavutil49 libbcel-java 
  libblkid1 libbonobo2-0 libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i386 libcaca0 
  libcairo-perl libcairo2 libcairomm-1.0-1 libcap2 libcomerr2 libconsole libcpufreq0 libcroco3 libcups2 libcupsimage2 
  libcurl3-gnutls libcwidget3 libdaemon0 libdb4.6 libdbus-1-3 libdbus-glib-1-2 libdevel-symdump-perl libdevmapper1.02.1 
  libdigest-hmac-perl libdigest-sha1-perl libdirectfb-extra libdmx1 libdrm2 libedit2 libesd0 libexif12 libexo-0.3-0 libexpat1 
  libfaac0 libfam0 libffi5 libflac8 libfontenc1 libfreetype6 libfs6 libgail18 libgc1c2 libgcc1 libgcj-bc libgcj-common 
  libgconf2-4 libgcrypt11 libgd2-noxpm libgdbm3 libgfortran3 libgimp2.0 libgksu2-0 libgl1-mesa-dri libgl1-mesa-glx libglade2-0 
  libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgmp3c2 libgnome-keyring0 libgnome2-0 libgnome2-canvas-perl 
  libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0 libgnomecanvas2-common libgnomeui-0 libgnomeui-common 
  libgnomevfs2-0 libgnomevfs2-common libgnomevfs2-extra libgnutls26 libgpg-error0 libgphoto2-2 libgphoto2-port0 libgpm2 libgs8 
  libgsf-1-114 libgsf-1-common libgsm1 libgssglue1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0 
  libgtk2.0-common libgtkmm-2.4-1c2a libgtop2-7 libgtop2-common libgutenprint2 libhal-storage1 libhal1 libhsqldb-java 
  libhsqldb-java-gcj libhtml-parser-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libice6 libidl0 libidn11 libieee1284-3 
  libijs-0.35 libilmbase6 libjack0 libjasper1 libjaxp1.3-java libjline-java libkeyutils1 libklibc libkrb53 liblcms1 
  libldap-2.4-2 liblocale-gettext-perl liblockfile1 liblog4j1.2-java liblzo2-2 libmad0 libmagic1 libmng1 libmp3lame0 
  libmx4j-java libncurses5 libncursesw5 libnet-dns-perl libnewt0.52 libnfsidmap2 libnotify1 libnspr4-0d libnss-mdns libnss3-1d 
  libogg0 liboil0.3 libopenexr6 liborbit2 libpam-modules libpam-runtime libpam0g libpango1.0-0 libpango1.0-common libpaper1 
  libpci3 libpcre3 libpcsclite1 libperl5.10 libpixman-1-0 libpng12-0 libpopt0 libpostproc51 libpq5 libpulse0 libreadline5 
  librecode0 libregexp-java librpcsecgss3 librsvg2-2 librsvg2-common libsane libsane-extras libsasl2-2 libschroedinger-1.0-0 
  libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsensors4 libsepol1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 
  libsmbclient libsnmp-base libsnmp15 libsocket6-perl libsoup2.4-1 libsqlite3-0 libss2 libssl0.9.8 libstartup-notification0 
  libstdc++6 libsvga1 libsysfs2 libtag1c2a libtagc0 libtasn1-3 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl 
  libthai-data libthai0 libtheora0 libthunar-vfs-1-2 libtiff4 libts-0.0-0 liburi-perl libusb-0.1-4 libuuid1 libvorbis0a 
  libvorbisenc2 libvte-common libvte9 libwavpack1 libwbclient0 libwmf0.2-7 libwpg-0.1-1 libwrap0 libwww-perl libx11-6 
  libx11-data libx86-1 libxau6 libxaw7 libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xv0 libxcb1 
  libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfce4util4 libxfcegui4-4 libxfixes3 libxfont1 libxft2 libxi6 
  libxine1 libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins libxine1-plugins libxine1-x libxinerama1 
  libxkbfile1 libxmu6 libxmuu1 libxpm4 libxrandr2 libxrender1 libxslt1.1 libxss1 libxt6 libxtst6 libxv1 libxvidcore4 libxvmc1 
  libxxf86dga1 libxxf86vm1 linux-image-2.6-amd64 linux-sound-base locales login logrotate lp-solve lsb-base lsof lvm2 lwresd 
  m4 mailagent makedev man-db manpages manpages-fr manpages-fr-extra mawk mc menu mime-support mktemp mlocate mlock 
  module-init-tools mount mousepad mutt myspell-en-us myspell-fr-gut nano ncurses-base ncurses-bin ncurses-term net-tools 
  netatalk netbase nfs-common nfs-kernel-server ntfs-3g nvclock openbsd-inetd openoffice.org openoffice.org-base 
  openoffice.org-base-core openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw 
  openoffice.org-filter-mobiledev openoffice.org-gcj openoffice.org-gtk openoffice.org-help-en-us openoffice.org-help-fr 
  openoffice.org-impress openoffice.org-java-common openoffice.org-l10n-fr openoffice.org-math openoffice.org-officebean 
  openoffice.org-report-builder-bin openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-thesaurus-en-us 
  openoffice.org-writer openprinting-ppds openssh-client openssh-server openssl orage passwd patch pciutils pcmciautils perl 
  perl-base perl-modules php5-common pm-utils popularity-contest portmap postgresql postgresql-client postgresql-client-common 
  postgresql-common postgresql-contrib postgresql-doc powermgmt-base powertop printconf procmail procps psmisc psutils python 
  python-cairo python-central python-dbus python-foomatic python-glade2 python-gnome2 python-gobject python-gtk2 
  python-imaging python-ipy python-minimal python-pyorbit python-support python2.5 python2.5-minimal qpopper radeontool 
  readline-common reportbug rsyslog sa-exim samba samba-common samba-doc sed sgml-base sgml-data shared-mime-info 
  smartmontools smbclient smbfs spamassassin spamc ssl-cert sudo swat swfdec-mozilla sysv-rc sysvinit sysvinit-utils tar 
  tasksel tasksel-data tcpd texinfo thunar thunar-data thunar-media-tags-plugin time toshset traceroute ttf-dejavu 
  ttf-dejavu-core ttf-dejavu-extra ttf-liberation ttf-opensymbol tzdata ucf udev update-inetd usbutils util-linux uw-imapd 
  vbetool vim-common vim-tiny w3m wamerican wfrench wget whiptail whois winbind wireless-tools wpasupplicant x11-apps 
  x11-common x11-session-utils x11-utils x11-xfs-utils x11-xkb-utils x11-xserver-utils xauth xbitmaps xdg-utils xfce4 
  xfce4-battery-plugin xfce4-clipman-plugin xfce4-cpufreq-plugin xfce4-cpugraph-plugin xfce4-diskperf-plugin 
  xfce4-fsguard-plugin xfce4-genmon-plugin xfce4-goodies xfce4-mailwatch-plugin xfce4-mixer xfce4-mount-plugin 
  xfce4-netload-plugin xfce4-notes-plugin xfce4-panel xfce4-quicklauncher-plugin xfce4-sensors-plugin xfce4-session 
  xfce4-smartbookmark-plugin xfce4-systemload-plugin xfce4-terminal xfce4-utils xfce4-verve-plugin xfce4-wavelan-plugin 
  xfce4-weather-plugin xfdesktop4 xfdesktop4-data xfonts-100dpi xfonts-75dpi xfonts-base xfonts-encodings xfonts-intl-european 
  xfonts-scalable xfonts-utils xfprint4 xfwm4 xinit xkb-data xml-core xorg xsane xsane-common xserver-xorg xserver-xorg-core 
  xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd xserver-xorg-input-mouse xserver-xorg-input-synaptics 
  xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati 
  xserver-xorg-video-chips xserver-xorg-video-cirrus xserver-xorg-video-dummy xserver-xorg-video-fbdev 
  xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-intel xserver-xorg-video-mach64 xserver-xorg-video-mga 
  xserver-xorg-video-neomagic xserver-xorg-video-nv xserver-xorg-video-openchrome xserver-xorg-video-r128 
  xserver-xorg-video-radeon xserver-xorg-video-radeonhd xserver-xorg-video-rendition xserver-xorg-video-s3 
  xserver-xorg-video-s3virge xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis 
  xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident xserver-xorg-video-tseng 
  xserver-xorg-video-vesa xserver-xorg-video-vmware xserver-xorg-video-voodoo xterm zlib1g 
Les paquets suivants sont RECOMMANDÉS mais ne seront pas installés :
  bzip2 gamin gcc gdm-themes hddtemp libapache2-reload-perl libatk1.0-data libatm1 libbsd-resource-perl libc6-dev libfribidi0 
  libglib2.0-data libgtk2.0-bin libhtml-format-perl libio-socket-inet6-perl liblog4j1.2-java-gcj libmail-spf-perl 
  libmailtools-perl libnss-lwres libpam-gnome-keyring libpaper-utils lm-sensors make nmap openoffice.org-emailmerge 
  openoffice.org-filter-binfilter pconf-detect rc re2c uuid-runtime wdiff xfwm4-themes xnest xserver-xephyr zenity 
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] 
&lt;/code&gt;

En fonction de votre connexion ça peut prendre très longtemps, et être interrompu (à 500KB/s une demi-heure à 50 KB/s c'est plusieurs heures...).
Un conseil, si vous n'êtes pas sûr de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

&lt;code&gt;
# aptitude -d safe-upgrade
...
 762Mo téléchargés en 1h9min37s (182ko/s)                                                          
Lecture des listes de paquets... Fait             
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait
&lt;/code&gt;

Puis

&lt;code&gt;
# aptitude safe-upgrade
...
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 0o/762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] y
&lt;/code&gt;

=== Déroulement ===

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut

[[Fichier:Snapshot4.jpeg]]

[[Fichier:Snapshot5.jpeg]]

[[Fichier:Snapshot6.jpeg]]

[[Fichier:Snapshot7.jpeg]]

[[Fichier:Snapshot9.jpeg]]

[[Fichier:Snapshot11.jpeg]]

[[Fichier:Snapshot13.jpeg]]

[[Fichier:Snapshot14.jpeg]]

[[Fichier:Snapshot15.jpeg]]

[[Fichier:Snapshot16.jpeg]]

[[Fichier:Snapshot17.jpeg]]

Vous partirez d'une Lenny configurée, et donc de nombreux fichiers de configuration auront été modifiés par vos soins.
Il est judicieux de ne pas écraser vos configurations avec les fichiers par défauts proposés par les &quot;mainteneurs&quot; des paquets.
Vous aurez tout le loisir de regarder les modifications proposées, et ce qu'elles apportent, en regardant dans /usr/share/doc ou dans les contenus de vos deb téléchargés (dans /var/apt/archives)

[[Fichier:Snapshot18.jpeg]]

Sans le téléchargement des fichiers, comptez un peu plus d'une heure pour la mise à niveau

=== finalisation ===

Le safe-upgrade devrait se terminer par ceci :

&lt;code&gt;
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 4 mises à jour restantes [-721].
&lt;/code&gt;

Vous pouvez maintenant lancer un &quot;full-upgrade&quot;

&lt;code&gt;
# aptitude full-upgrade

...

4 paquets mis à jour, 13 nouvellement installés, 2 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 12,1Mo d'archives. Après dépaquetage, 14,3Mo seront utilisés.
Les paquets suivants ont des dépendances non satisfaites :
  libept0: Dépend: libapt-pkg-libc6.7-6-4.6 qui est un paquet virtuel
Les actions suivantes permettront de résoudre ces dépendances :

Supprimer les paquets suivants :
libept0

Le score est de 115

Accepter cette solution ? [Y/n/q/?]y

...

Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 0 mise à jour restante [-4].
&lt;/code&gt;

Si tout s'est bien passé, il ne vous reste plus qu'a redémarrer le machine :

 # reboot

=== Grub2 ===

Si vous étiez sous Grub-legacy vous aurez certainement fait la bascule vers Grub2.

La première &quot;surprise&quot; qui vous attend donc (sauf si vous avez lu ce guide avant...) c'est le menu suivant :

[[Fichier:Snapshot19.jpeg]]

Si vous appuyez sur entrée, cvous serez conduit vers le menu de Grub2.
Cette étape permet de vérifier que Grub2 est bien installé, et de le tester.

[[Fichier:Snapshot20.jpeg]]

Si cela fonctionne, une des premières choses à faire sera de confirmer l'installation de Grub2 en tapant dans une console la commande suivante :

 # upgrade-from-grub-legacy

=== LVM ===

Problème rencontré lors de la mise à niveau avec LVM...
Le système s'est mélangé les pédales dans l'attribution des partitions.
Résultat :

[[Fichier:Snapshot21.jpeg]]

Voici ou se situe le problème :

&lt;code&gt;
$ vdir /dev/l2s/
total 0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 home -&gt; ../dm-5
lrwxrwxrwx 1 root root 7 25 nov.  18:28 root -&gt; ../dm-0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 swap_1 -&gt; ../dm-1
lrwxrwxrwx 1 root root 7 25 nov.  18:28 tmp -&gt; ../dm-4
lrwxrwxrwx 1 root root 7 25 nov.  18:28 usr -&gt; ../dm-2
lrwxrwxrwx 1 root root 7 25 nov.  18:28 var -&gt; ../dm-3
&lt;/code&gt;
&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
# /dev/hda1	/boot	ext2	defaults	0	2
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-1	/usr	ext3	defaults	0	2
# /dev/hdb1	/var	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-3	none	swap	sw	0	0
# /dev/hdc	/media/cdrom0	udf,iso9660	user,noauto	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

Je ne sais pour quelle raison LVM à changé la numérotation des partitions... /usr est passé en dm-1 alors qu'il devrait être en dm-2 et la swap en dm-3 alors quelle devrait être en dm-1
Il suffit de modifier le fichier /etc/fstab pour qu'il reflète à nouveau correctement vos partitions, et le tour est joué :

&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-2	/usr	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-1	none	swap	sw	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

== Bienvenu sur Squeeze ==

 laurent@lenny2squeeze:~$ uname -a
 Linux lenny2squeeze 2.6.32-5-amd64 #1 SMP Sat Oct 30 14:18:21 UTC 2010 x86_64 GNU/Linux

[[Fichier:Snapshot25.jpeg]]

A venir... Upgrade de Squeeze à ????

----
[[Utilisateur:Lol|Lol]] 25 novembre 2010 à 15:55 (EAT)
[[Catégorie:Installation]]</text>
      <sha1>dkineeezjl69td3fkmifnheb1wdm1kb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2409</id>
      <parentid>2408</parentid>
      <timestamp>2010-11-25T13:20:28Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Problèmes de dépendances */</comment>
      <text xml:space="preserve" bytes="31406">{{sid}}

La mise à niveau de Lenny à Squeeze se précise, nous allons faire ici un rapide résumé des opérations nécessaires à la réussite de cette mise à niveau (upgrade).
LVM est installé sur la machine que nous allons mettre à niveau afin de tester le plus de possibilités.

Avant toute chose, je souhaite faire quelques précisions :
Chaque configuration est propre à chacun, en fonction de ses goûts, de son matériel et de ses connaissances.
Un guide universel n'existe donc pas.

Prévoyez aussi d'avoir du temps devant vous, et d'être au calme.

Nous choisirons d'utiliser aptitude au lieu de apt-get, il est en effet plus exigeant concernant les dépendances, votre mise à niveau sera plus &quot;propre&quot;.

J'ai choisi une Lenny avec toutes les options de tasksel activées afin de faire un tour d'horizon le plus vaste possible des problèmes qui pourraient survenir.
L'environnement graphique est Xfce.

[[Fichier:Snapshot3.jpeg]]

== Pré-requis ==

=== Une bonne sauvegarde ===

Vous n'avez AUCUNE garanties que la mise à niveau se passe bien, alors, quel que soit la méthode que vous emploierez, une sauvegarde est le minimum que vous puissiez faire avant de vous lancer dans l'aventure..

Avec dd, dump ou simplement cp SAUVEGARDEZ !

=== Un système à jour! ===

Le fichier sources.list précédent la mise à niveau :

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org stable main non-free
#deb-src http://www.debian-multimedia.org stable main non-free

# backports
deb http://backports.debian.org/debian-backports lenny-backports main contrib non-free
&lt;/code&gt;

 # aptitude update
 # aptitude safe-upgrade
 # aptitude full-upgrade

=== De l'espace! ===

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition ou se trouve /var pour le stockage des paquets téléchargés.

Pour info une mise à jour &quot;lourde&quot; se soldera par le téléchargement d'environ 1Go...

Pour connaître l’espace libre de votre partition racine :

 $ df -H
 Sys. de fich.          Tail.  Occ.  Disp. %Occ. Monté sur
 '''/dev/dm-0              338M   123M   198M  39% /'''
 tmpfs                  262M      0   262M   0% /lib/init/rw
 udev                    11M   689k   9,8M   7% /dev
 tmpfs                  262M      0   262M   0% /dev/shm
 /dev/hda1              239M    20M   207M   9% /boot
 /dev/dm-5              3,7G    75M   3,4G   3% /home
 /dev/dm-4              317M    11M   290M   4% /tmp
 /dev/dm-1              3,7G   1,7G   1,8G  50% /usr
 '''/dev/hdb1              5,3G   1,1G   4,0G  21% /var'''
 /dev/dm-2              1,8G   876M   818M  52% /media/dm-2

'''Si vous disposez de plus de 50% d’espace libre vous pouvez passer à l'étape suivant'''.

Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Si cela ne suffit toujours pas, il faut envisager d'ajouter un disque à votre système, ou de procéder à un upgrade par étapes successives (en mettant à jour les paquets progressivements et en nettoyant à chaque étape)

=== Les pilotes de la carte Graphique ===

Afin de ne pas avoir de mauvaise surprise avec le serveur X, modifiez votre xorg.conf afin d'utiliser des pilotes Debian.

Eventuellement utilisez les pilotes &quot;vesa&quot;

Dans votre fichier /etc/X11/xorg.conf

&lt;code&gt;
Section &quot;Device&quot;
    Identifier     &quot;Device0&quot;
    Driver         &quot;vesa&quot;
EndSection
&lt;/code&gt;

Si vous êtes sur de vous, n'en faites rien, mais prévoyez une réinstallation des pilotes avant le premier redémarrage.

=== Le fichier sources.list ===

Créons un nouveau sources.list que nous placerons dans /etc/apt/sources.list.d
Nous prenons dors et déjà la bonne habitude d'utiliser ce dossier qui est devenu celui par défaut pour mettre les fichiers contenant les dépôts.

 # nano /etc/apt/sources.list.d/sources.list

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free

# stable security
deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

## stable volatile
## Il n'y a pas de dépôt volatile pour squeeze pour l'instant
## deb http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free
## deb-src http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org squeeze main non-free
#deb-src http://www.debian-multimedia.org squeeze main non-free

# backports
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
&lt;/code&gt;

== Préparation de la mise à niveau ==

Maintenant que nous sommes prêts, nous pouvons lancer l'upgrade :

Mise à jour de la liste des paquets :

 # aptitude update

=== Si vous avez des problèmes de clefs ===

 W: GPG error: http://www.debian-multimedia.org

 # aptitude install debian-backports-keyring
 # aptitude install debian-multimedia-keyring

=== Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]] ===

 E: Dynamic MMap ran out of room

 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaite l'update, il ne doit pas y avoir d'erreurs

 # aptitude update

=== Problèmes de dépendances ===

Vous ne pourrez pas faire le passage de Lenny à Squeeze tant que subsisteront des problèmes de dépendances...

Voici deux exemples de problèmes de dépendances, et la manière de le régler :

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  xfce4-mixer-oss: Est en conflit avec: xfce4-mixer-alsa mais 4.4.2-3 est installé.
  foomatic-db: Est en conflit avec: foomatic-db-hpijs mais 20080211-1 est installé.
  xfce4-mixer-alsa: Est en conflit avec: xfce4-mixer-oss mais 4.4.2-3 doit être installé.

# aptitude install foomatic-db xfce4-mixer-alsa
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Lecture des descriptions de tâches... Fait  
Les NOUVEAUX paquets suivants vont être installés : 
  libopenjpeg2{a} libpoppler5{a} min12xxw{a} pnm2ppa{a} 
Les paquets suivants seront ENLEVÉS : 
  foomatic-db-hpijs{a} 
Les paquets suivants seront mis à jour : 
  fontconfig-config foomatic-db foomatic-db-engine foomatic-filters libfontconfig1 libjpeg62 libxml2 poppler-utils 
8 paquets mis à jour, 4 nouvellement installés, 1 à enlever et 728 non mis à jour.
Il est nécessaire de télécharger 4722ko d'archives. Après dépaquetage, 18,2Mo seront libérés.
Voulez-vous continuer ? [Y/n/?] o
...
État actuel : 728 mises à jour restantes [-8].
&lt;/code&gt;

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  libatlas3gf-base: Est en conflit avec: libblas3gf (&lt; 1.2-5) mais 1.2-2 est installé et a été conservé
                    Est en conflit avec: liblapack3gf (&lt; 3.2.1-4) mais 3.1.1-1 est installé et a été conservé
  rarian-compat: Est en conflit avec: scrollkeeper (&lt; 0.4) mais 0.3.14-16 est installé et a été conservé

# aptitude install libatlas3gf-base scrollkeeper
...
Les actions suivantes permettront de résoudre ces dépendances :

Mettre à jour les paquets suivants :
libblas3gf [1.2-2 (stable, now) -&gt; 1.2-8 (testing)]
liblapack3gf [3.1.1-1 (stable, now) -&gt; 3.2.1-8 (testing)]

Le score est de 70

Accepter cette solution ? [Y/n/q/?] y
...
État actuel : 725 mises à jour restantes [-3].
&lt;/code&gt;

En cas de doute n'hésitez pas à demander un avis [http://forum.debian-fr.org/ sur le forum]

=== stopper le serveur X ===

'''IMPORTANT''' : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

== Lancez la mise à niveau ==

&lt;code&gt;
# aptitude safe-upgrade
...
Les paquets suivants ont été conservés : 
  apt apt-utils aptitude synaptic 
Les NOUVEAUX paquets suivants vont être installés : 
  acpi-fakekey{a} apache2.2-bin{a} aumix{a} aumix-common{a} bluez{a} bluez-alsa{a} bluez-cups{a} bluez-gstreamer{a} 
  browser-plugin-gnash{a} cifs-utils{a} consolekit{a} cpp-4.4{a} cracklib-runtime{a} cups-ppdc{a} dash{a} db4.8-util{a} 
  diffutils{a} dosfstools{a} firmware-linux-free{a} freepats{a} fuse-utils{a} gcc-4.4-base{a} gcj-4.4-base{a} 
  gcj-4.4-jre-lib{a} geoip-database{a} ghostscript-cups{a} gnash{a} gnash-common{a} gnupg-curl{a} grub-pc{a} 
  gstreamer0.10-ffmpeg{a} gstreamer0.10-fluendo-mp3{a} gstreamer0.10-plugins-bad{a} gstreamer0.10-plugins-base{a} gvfs{a} 
  hplip-cups{a} insserv{a} install-info{a} isc-dhcp-client{a} isc-dhcp-common{a} iso-codes{a} keyboard-configuration{a} 
  libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libass4{a} libatasmart4{a} libaudit0{a} libavahi-core7{a} libavcodec52{a} 
  libavformat52{a} libavutil50{a} libbabl-0.0-0{a} libbind9-60{a} libbluetooth3{a} libboost-date-time1.42.0{a} 
  libboost-thread1.42.0{a} libbsd0{a} libburn4{a} libc-bin{a} libc-client2007e{a} libcap-ng0{a} libcdaudio1{a} libcdio10{a} 
  libcdparanoia0{a} libcelt0-0{a} libck-connector0{a} libcolamd2.7.1{a} libcommons-beanutils-java{a} 
  libcommons-collections3-java{a} libcommons-compress-java{a} libcommons-digester-java{a} libcommons-logging-java{a} 
  libcrack2{a} libcupscgi1{a} libcupsdriver1{a} libcupsmime1{a} libcupsppdc1{a} libdatrie1{a} libdb-je-java{a} libdb4.7{a} 
  libdb4.7-java{a} libdb4.7-java-gcj{a} libdb4.8{a} libdc1394-22{a} libdca0{a} libdirac-encoder0{a} libdirectfb-1.2-9{a} 
  libdns66{a} libdrm-intel1{a} libdrm-nouveau1{a} libdrm-radeon1{a} libdvdnav4{a} libdvdread4{a} libeggdbus-1-0{a} libenca0{a} 
  libenchant1c2a{a} libevent-1.4-2{a} libexempi3{a} libexo-common{a} libfaad2{a} libfftw3-3{a} libfile-copy-recursive-perl{a} 
  libflite1{a} libfont-freetype-perl{a} libfuse2{a} libgcj10{a} libgcr0{a} libgdu0{a} libgegl-0.0-0{a} libgeoip1{a} libgif4{a} 
  libgme0{a} libgomp1{a} libgp11-0{a} libgpgme11{a} libgraphicsmagick3{a} libgraphite3{a} libgssapi-krb5-2{a} libgtkglext1{a} 
  libgudev-1.0-0{a} libhpmud0{a} libicu44{a} libicu4j-java{a} libiptcdata0{a} libisc60{a} libisccc60{a} libisccfg60{a} 
  libiso9660-7{a} libisofs6{a} libiw30{a} libjbig2dec0{a} libjpeg-progs{a} libjpeg8{a} libjtidy-java{a} libk5crypto3{a} 
  libkate1{a} libkrb5-3{a} libkrb5support0{a} libltdl7{a} liblucene2-java{a} liblwres60{a} liblzma2{a} libmimic0{a} libmms0{a} 
  libmodplug1{a} libmozjs2d{a} libmpcdec6{a} libmpfr4{a} libmusicbrainz4c2a{a} libmythes-1.2-0{a} libneon27-gnutls{a} 
  libnetaddr-ip-perl{a} libnfnetlink0{a} libnl1{a} libntfs-3g75{a} libntfs10{a} libofa0{a} libonig2{a} libopencore-amrnb0{a} 
  libopencore-amrwb0{a} libopenraw1{a} liborc-0.4-0{a} libossp-uuid16{a} libpam-ck-connector{a} libpam-cracklib{a} 
  libpango-perl{a} libpangomm-1.4-1{a} libparted0debian1{a} libpciaccess0{a} libpolkit-agent-1-0{a} libpolkit-backend-1-0{a} 
  libpolkit-gobject-1-0{a} libpoppler-glib4{a} libpth20{a} libpython2.6{a} libqdbm14{a} libraptor1{a} librasqal2{a} 
  libraw1394-11{a} librdf0{a} libreadline6{a} librtmp0{a} libsane-hpaio{a} libsasl2-modules{a} libservlet2.5-java{a} 
  libsexy2{a} libsgutils2-2{a} libslv2-9{a} libsndfile1{a} libsoundtouch1c2{a} libswscale0{a} libtag1-vanilla{a} libtalloc2{a} 
  libtextcat-data-utf8{a} libtokyocabinet8{a} libudev0{a} libunique-1.0-0{a} libusb-1.0-0{a} libutempter0{a} libuuid-perl{a} 
  libv4l-0{a} libva1{a} libvcdinfo0{a} libvisual-0.4-0{a} libvisual-0.4-plugins{a} libvpx0{a} libwebkit-1.0-2{a} 
  libwebkit-1.0-common{a} libwildmidi1{a} libwnck-common{a} libwnck22{a} libx11-xcb1{a} libx264-104{a} libxcb-atom1{a} 
  libxcb-aux0{a} libxcb-dri2-0{a} libxcb-event1{a} libxfce4menu-0.1-0{a} libxfce4util-bin{a} libxfce4util-common{a} 
  libxfconf-0-2{a} libxklavier16{a} libxml-parser-perl{a} libxres1{a} libzbar0{a} linux-base{a} linux-image-2.6.32-5-amd64{a} 
  lockfile-progs{a} lsb-release{a} mtools{a} ntfsprogs{a} os-prober{a} oss-compat{a} php5-cli{a} php5-suhosin{a} 
  policykit-1{a} policykit-1-gnome{a} postgresql-8.4{a} postgresql-client-8.4{a} postgresql-contrib-8.4{a} 
  postgresql-doc-8.4{a} python-cups{a} python-gconf{a} python-numpy{a} python-pexpect{a} python-reportbug{a} python-webkit{a} 
  python2.6{a} python2.6-minimal{a} ristretto{a} samba-common-bin{a} sane-utils{a} sensible-utils{a} squeeze{a} 
  tango-icon-theme{a} thunar-archive-plugin{a} thunar-volman{a} tsconf{a} ttf-freefont{a} ttf-lyx{a} ttf-sil-gentium{a} 
  ttf-sil-gentium-basic{a} udisks{a} uno-libs3{a} unzip{a} ure{a} x-ttcidfont-conf{a} xdg-user-dirs{a} xfburn{a} 
  xfce-keyboard-shortcuts{a} xfce4-appfinder{a} xfce4-clipman{a} xfce4-datetime-plugin{a} xfce4-dict{a} xfce4-notes{a} 
  xfce4-notifyd{a} xfce4-places-plugin{a} xfce4-power-manager{a} xfce4-power-manager-data{a} xfce4-screenshooter{a} 
  xfce4-settings{a} xfce4-taskmanager{a} xfce4-timer-plugin{a} xfce4-xkb-plugin{a} xfconf{a} xfonts-mathml{a} xinput{a} xli{a} 
  xorg-docs-core{a} xscreensaver{a} xscreensaver-data{a} xserver-common{a} xserver-xorg-video-nouveau{a} xulrunner-1.9.1{a} 
  xz-utils{a} 
Les paquets suivants seront ENLEVÉS : 
  bluez-utils{u} cpp-4.3{u} cupsddk-drivers{u} djvulibre-desktop{u} finger{u} gs-common{u} liba52-0.7.4{u} libamrnb3{u} 
  libamrwb3{u} libaudio2{u} libavahi-compat-libdnssd1{u} libavahi-core5{u} libavc1394-0{u} libavcodec51{u} libbind9-50{u} 
  libbluetooth2{u} libc-client2007b{u} libcap1{u} libcucul0{u} libcupsys2{u} libcurl3{u} libdatrie0{u} libdirac0{u} 
  libdjvulibre21{u} libfaad0{u} libfreebob0{u} libgail-common{u} libgraphviz4{u} libgtkhtml2-0{u} libicu38{u} libiec61883-0{u} 
  libisccc50{u} libisccfg50{u} libiw29{u} libjaxp1.3-java-gcj{u} libltdl3{u} liblwres50{u} libmagick10{u} libmodplug0c2{u} 
  libmozjs1d{u} libmpcdec3{u} libmpfr1ldbl{u} libmysqlclient15off{u} libneon27{u} libntfs-3g31{u} libossp-uuid15{u} 
  libparted1.8-10{u} libpoppler-glib3{u} libpoppler3{u} libqt3-mt{u} libraw1394-8{u} libsensors3{u} libservlet2.4-java{u} 
  libsmbios-bin{u} libsmbios2{u} libssh2-1{u} libsuitesparse-3.1.0{u} libswfdec-0.6-90{u} libtalloc1{u} libvolume-id0{u} 
  libx264-65{u} libxalan2-java{u} libxalan2-java-gcj{u} libxcb-xlib0{u} libxerces2-java{u} libxerces2-java-gcj{u} 
  libxfce4mcs-client3{u} libxfce4mcs-manager3{u} libxtrap6{u} libxxf86misc1{u} mysql-common{u} openoffice.org-writer2latex{u} 
  openssl-blacklist{u} postgresql-8.3{u} postgresql-client-8.3{u} postgresql-contrib-8.3{u} postgresql-doc-8.3{u} 
  python-gtkhtml2{u} python-numeric{u} svgalibg1{u} xfce4-icon-theme{u} xfce4-mcs-manager{u} xfce4-mcs-plugins{u} 
  xfce4-minicmd-plugin{u} xfce4-screenshooter-plugin{u} xserver-xorg-video-cyrix{u} xserver-xorg-video-v4l{u} 
  xserver-xorg-video-vga{u} xulrunner-1.9{u} 
Les paquets suivants seront mis à jour : 
  a2ps acpi acpi-support acpi-support-base acpid adduser alsa-base alsa-utils anacron analog apache2 apache2-doc 
  apache2-mpm-prefork apache2-utils apache2.2-common apmd aspell aspell-fr at avahi-autoipd avahi-daemon base-files 
  base-passwd bash bash-completion bc bind9 bind9-doc bind9-host bind9utils bluetooth bsd-mailx bsdmainutils bsdutils bsh 
  bsh-gcj busybox ca-certificates console-common console-data console-setup console-terminus console-tools coreutils cpio cpp 
  cpufrequtils cron cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk dbus dbus-x11 dc debconf debconf-i18n 
  debian-archive-keyring debian-faq debianutils deborphan defoma desktop-base desktop-file-utils dhcp3-client dhcp3-common 
  dialog dictionaries-common diff disk-manager dmidecode dmsetup dnsutils doc-debian docbook-xml dpkg e2fslibs e2fsprogs ed 
  eject esound-common exim4 exim4-base exim4-config exim4-daemon-light exo-utils fastjar file findutils fontconfig foo2zjs 
  foomatic-db-gutenprint foomatic-filters-ppds foomatic-gui fortune-mod fortunes-min ftp gcc-4.3-base gconf2 gconf2-common gdm 
  gettext-base ghostscript gimp gimp-data gksu gnome-keyring gnupg gparted gpgv grep groff-base grub grub-common gsfonts 
  gtk2-engines-xfce gzip hal hal-info hdparm hibernate hicolor-icon-theme hostname hpijs hplip hplip-data iamerican ibritish 
  iceweasel iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint info initramfs-tools initscripts installation-report iproute 
  iptables iputils-ping ispell java-common kerneloops klibc-utils laptop-detect less libaa1 libacl1 libapache2-mod-perl2 
  libapache2-mod-php5 libapache2-mod-python libapm1 libapr1 libaprutil1 libart-2.0-2 libasound2 libaspell15 libatk1.0-0 
  libattr1 libaudiofile0 libavahi-client3 libavahi-common-data libavahi-common3 libavahi-glib1 libavutil49 libbcel-java 
  libblkid1 libbonobo2-0 libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i386 libcaca0 
  libcairo-perl libcairo2 libcairomm-1.0-1 libcap2 libcomerr2 libconsole libcpufreq0 libcroco3 libcups2 libcupsimage2 
  libcurl3-gnutls libcwidget3 libdaemon0 libdb4.6 libdbus-1-3 libdbus-glib-1-2 libdevel-symdump-perl libdevmapper1.02.1 
  libdigest-hmac-perl libdigest-sha1-perl libdirectfb-extra libdmx1 libdrm2 libedit2 libesd0 libexif12 libexo-0.3-0 libexpat1 
  libfaac0 libfam0 libffi5 libflac8 libfontenc1 libfreetype6 libfs6 libgail18 libgc1c2 libgcc1 libgcj-bc libgcj-common 
  libgconf2-4 libgcrypt11 libgd2-noxpm libgdbm3 libgfortran3 libgimp2.0 libgksu2-0 libgl1-mesa-dri libgl1-mesa-glx libglade2-0 
  libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgmp3c2 libgnome-keyring0 libgnome2-0 libgnome2-canvas-perl 
  libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0 libgnomecanvas2-common libgnomeui-0 libgnomeui-common 
  libgnomevfs2-0 libgnomevfs2-common libgnomevfs2-extra libgnutls26 libgpg-error0 libgphoto2-2 libgphoto2-port0 libgpm2 libgs8 
  libgsf-1-114 libgsf-1-common libgsm1 libgssglue1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0 
  libgtk2.0-common libgtkmm-2.4-1c2a libgtop2-7 libgtop2-common libgutenprint2 libhal-storage1 libhal1 libhsqldb-java 
  libhsqldb-java-gcj libhtml-parser-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libice6 libidl0 libidn11 libieee1284-3 
  libijs-0.35 libilmbase6 libjack0 libjasper1 libjaxp1.3-java libjline-java libkeyutils1 libklibc libkrb53 liblcms1 
  libldap-2.4-2 liblocale-gettext-perl liblockfile1 liblog4j1.2-java liblzo2-2 libmad0 libmagic1 libmng1 libmp3lame0 
  libmx4j-java libncurses5 libncursesw5 libnet-dns-perl libnewt0.52 libnfsidmap2 libnotify1 libnspr4-0d libnss-mdns libnss3-1d 
  libogg0 liboil0.3 libopenexr6 liborbit2 libpam-modules libpam-runtime libpam0g libpango1.0-0 libpango1.0-common libpaper1 
  libpci3 libpcre3 libpcsclite1 libperl5.10 libpixman-1-0 libpng12-0 libpopt0 libpostproc51 libpq5 libpulse0 libreadline5 
  librecode0 libregexp-java librpcsecgss3 librsvg2-2 librsvg2-common libsane libsane-extras libsasl2-2 libschroedinger-1.0-0 
  libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsensors4 libsepol1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 
  libsmbclient libsnmp-base libsnmp15 libsocket6-perl libsoup2.4-1 libsqlite3-0 libss2 libssl0.9.8 libstartup-notification0 
  libstdc++6 libsvga1 libsysfs2 libtag1c2a libtagc0 libtasn1-3 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl 
  libthai-data libthai0 libtheora0 libthunar-vfs-1-2 libtiff4 libts-0.0-0 liburi-perl libusb-0.1-4 libuuid1 libvorbis0a 
  libvorbisenc2 libvte-common libvte9 libwavpack1 libwbclient0 libwmf0.2-7 libwpg-0.1-1 libwrap0 libwww-perl libx11-6 
  libx11-data libx86-1 libxau6 libxaw7 libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xv0 libxcb1 
  libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfce4util4 libxfcegui4-4 libxfixes3 libxfont1 libxft2 libxi6 
  libxine1 libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins libxine1-plugins libxine1-x libxinerama1 
  libxkbfile1 libxmu6 libxmuu1 libxpm4 libxrandr2 libxrender1 libxslt1.1 libxss1 libxt6 libxtst6 libxv1 libxvidcore4 libxvmc1 
  libxxf86dga1 libxxf86vm1 linux-image-2.6-amd64 linux-sound-base locales login logrotate lp-solve lsb-base lsof lvm2 lwresd 
  m4 mailagent makedev man-db manpages manpages-fr manpages-fr-extra mawk mc menu mime-support mktemp mlocate mlock 
  module-init-tools mount mousepad mutt myspell-en-us myspell-fr-gut nano ncurses-base ncurses-bin ncurses-term net-tools 
  netatalk netbase nfs-common nfs-kernel-server ntfs-3g nvclock openbsd-inetd openoffice.org openoffice.org-base 
  openoffice.org-base-core openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw 
  openoffice.org-filter-mobiledev openoffice.org-gcj openoffice.org-gtk openoffice.org-help-en-us openoffice.org-help-fr 
  openoffice.org-impress openoffice.org-java-common openoffice.org-l10n-fr openoffice.org-math openoffice.org-officebean 
  openoffice.org-report-builder-bin openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-thesaurus-en-us 
  openoffice.org-writer openprinting-ppds openssh-client openssh-server openssl orage passwd patch pciutils pcmciautils perl 
  perl-base perl-modules php5-common pm-utils popularity-contest portmap postgresql postgresql-client postgresql-client-common 
  postgresql-common postgresql-contrib postgresql-doc powermgmt-base powertop printconf procmail procps psmisc psutils python 
  python-cairo python-central python-dbus python-foomatic python-glade2 python-gnome2 python-gobject python-gtk2 
  python-imaging python-ipy python-minimal python-pyorbit python-support python2.5 python2.5-minimal qpopper radeontool 
  readline-common reportbug rsyslog sa-exim samba samba-common samba-doc sed sgml-base sgml-data shared-mime-info 
  smartmontools smbclient smbfs spamassassin spamc ssl-cert sudo swat swfdec-mozilla sysv-rc sysvinit sysvinit-utils tar 
  tasksel tasksel-data tcpd texinfo thunar thunar-data thunar-media-tags-plugin time toshset traceroute ttf-dejavu 
  ttf-dejavu-core ttf-dejavu-extra ttf-liberation ttf-opensymbol tzdata ucf udev update-inetd usbutils util-linux uw-imapd 
  vbetool vim-common vim-tiny w3m wamerican wfrench wget whiptail whois winbind wireless-tools wpasupplicant x11-apps 
  x11-common x11-session-utils x11-utils x11-xfs-utils x11-xkb-utils x11-xserver-utils xauth xbitmaps xdg-utils xfce4 
  xfce4-battery-plugin xfce4-clipman-plugin xfce4-cpufreq-plugin xfce4-cpugraph-plugin xfce4-diskperf-plugin 
  xfce4-fsguard-plugin xfce4-genmon-plugin xfce4-goodies xfce4-mailwatch-plugin xfce4-mixer xfce4-mount-plugin 
  xfce4-netload-plugin xfce4-notes-plugin xfce4-panel xfce4-quicklauncher-plugin xfce4-sensors-plugin xfce4-session 
  xfce4-smartbookmark-plugin xfce4-systemload-plugin xfce4-terminal xfce4-utils xfce4-verve-plugin xfce4-wavelan-plugin 
  xfce4-weather-plugin xfdesktop4 xfdesktop4-data xfonts-100dpi xfonts-75dpi xfonts-base xfonts-encodings xfonts-intl-european 
  xfonts-scalable xfonts-utils xfprint4 xfwm4 xinit xkb-data xml-core xorg xsane xsane-common xserver-xorg xserver-xorg-core 
  xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd xserver-xorg-input-mouse xserver-xorg-input-synaptics 
  xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati 
  xserver-xorg-video-chips xserver-xorg-video-cirrus xserver-xorg-video-dummy xserver-xorg-video-fbdev 
  xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-intel xserver-xorg-video-mach64 xserver-xorg-video-mga 
  xserver-xorg-video-neomagic xserver-xorg-video-nv xserver-xorg-video-openchrome xserver-xorg-video-r128 
  xserver-xorg-video-radeon xserver-xorg-video-radeonhd xserver-xorg-video-rendition xserver-xorg-video-s3 
  xserver-xorg-video-s3virge xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis 
  xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident xserver-xorg-video-tseng 
  xserver-xorg-video-vesa xserver-xorg-video-vmware xserver-xorg-video-voodoo xterm zlib1g 
Les paquets suivants sont RECOMMANDÉS mais ne seront pas installés :
  bzip2 gamin gcc gdm-themes hddtemp libapache2-reload-perl libatk1.0-data libatm1 libbsd-resource-perl libc6-dev libfribidi0 
  libglib2.0-data libgtk2.0-bin libhtml-format-perl libio-socket-inet6-perl liblog4j1.2-java-gcj libmail-spf-perl 
  libmailtools-perl libnss-lwres libpam-gnome-keyring libpaper-utils lm-sensors make nmap openoffice.org-emailmerge 
  openoffice.org-filter-binfilter pconf-detect rc re2c uuid-runtime wdiff xfwm4-themes xnest xserver-xephyr zenity 
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] 
&lt;/code&gt;

En fonction de votre connexion ça peut prendre très longtemps, et être interrompu (à 500KB/s une demi-heure à 50 KB/s c'est plusieurs heures...).
Un conseil, si vous n'êtes pas sûr de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

&lt;code&gt;
# aptitude -d safe-upgrade
...
 762Mo téléchargés en 1h9min37s (182ko/s)                                                          
Lecture des listes de paquets... Fait             
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait
&lt;/code&gt;

Puis

&lt;code&gt;
# aptitude safe-upgrade
...
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 0o/762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] y
&lt;/code&gt;

=== Déroulement ===

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut

[[Fichier:Snapshot4.jpeg]]

[[Fichier:Snapshot5.jpeg]]

[[Fichier:Snapshot6.jpeg]]

[[Fichier:Snapshot7.jpeg]]

[[Fichier:Snapshot9.jpeg]]

[[Fichier:Snapshot11.jpeg]]

[[Fichier:Snapshot13.jpeg]]

[[Fichier:Snapshot14.jpeg]]

[[Fichier:Snapshot15.jpeg]]

[[Fichier:Snapshot16.jpeg]]

[[Fichier:Snapshot17.jpeg]]

Vous partirez d'une Lenny configurée, et donc de nombreux fichiers de configuration auront été modifiés par vos soins.
Il est judicieux de ne pas écraser vos configurations avec les fichiers par défauts proposés par les &quot;mainteneurs&quot; des paquets.
Vous aurez tout le loisir de regarder les modifications proposées, et ce qu'elles apportent, en regardant dans /usr/share/doc ou dans les contenus de vos deb téléchargés (dans /var/apt/archives)

[[Fichier:Snapshot18.jpeg]]

Sans le téléchargement des fichiers, comptez un peu plus d'une heure pour la mise à niveau

=== finalisation ===

Le safe-upgrade devrait se terminer par ceci :

&lt;code&gt;
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 4 mises à jour restantes [-721].
&lt;/code&gt;

Vous pouvez maintenant lancer un &quot;full-upgrade&quot;

&lt;code&gt;
# aptitude full-upgrade

...

4 paquets mis à jour, 13 nouvellement installés, 2 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 12,1Mo d'archives. Après dépaquetage, 14,3Mo seront utilisés.
Les paquets suivants ont des dépendances non satisfaites :
  libept0: Dépend: libapt-pkg-libc6.7-6-4.6 qui est un paquet virtuel
Les actions suivantes permettront de résoudre ces dépendances :

Supprimer les paquets suivants :
libept0

Le score est de 115

Accepter cette solution ? [Y/n/q/?]y

...

Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 0 mise à jour restante [-4].
&lt;/code&gt;

Si tout s'est bien passé, il ne vous reste plus qu'a redémarrer le machine :

 # reboot

=== Grub2 ===

Si vous étiez sous Grub-legacy vous aurez certainement fait la bascule vers Grub2.

La première &quot;surprise&quot; qui vous attend donc (sauf si vous avez lu ce guide avant...) c'est le menu suivant :

[[Fichier:Snapshot19.jpeg]]

Si vous appuyez sur entrée, cvous serez conduit vers le menu de Grub2.
Cette étape permet de vérifier que Grub2 est bien installé, et de le tester.

[[Fichier:Snapshot20.jpeg]]

Si cela fonctionne, une des premières choses à faire sera de confirmer l'installation de Grub2 en tapant dans une console la commande suivante :

 # upgrade-from-grub-legacy

=== LVM ===

Problème rencontré lors de la mise à niveau avec LVM...
Le système s'est mélangé les pédales dans l'attribution des partitions.
Résultat :

[[Fichier:Snapshot21.jpeg]]

Voici ou se situe le problème :

&lt;code&gt;
$ vdir /dev/l2s/
total 0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 home -&gt; ../dm-5
lrwxrwxrwx 1 root root 7 25 nov.  18:28 root -&gt; ../dm-0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 swap_1 -&gt; ../dm-1
lrwxrwxrwx 1 root root 7 25 nov.  18:28 tmp -&gt; ../dm-4
lrwxrwxrwx 1 root root 7 25 nov.  18:28 usr -&gt; ../dm-2
lrwxrwxrwx 1 root root 7 25 nov.  18:28 var -&gt; ../dm-3
&lt;/code&gt;
&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
# /dev/hda1	/boot	ext2	defaults	0	2
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-1	/usr	ext3	defaults	0	2
# /dev/hdb1	/var	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-3	none	swap	sw	0	0
# /dev/hdc	/media/cdrom0	udf,iso9660	user,noauto	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

Je ne sais pour quelle raison LVM à changé la numérotation des partitions... /usr est passé en dm-1 alors qu'il devrait être en dm-2 et la swap en dm-3 alors quelle devrait être en dm-1
Il suffit de modifier le fichier /etc/fstab pour qu'il reflète à nouveau correctement vos partitions, et le tour est joué :

&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-2	/usr	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-1	none	swap	sw	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

== Bienvenu sur Squeeze ==

 laurent@lenny2squeeze:~$ uname -a
 Linux lenny2squeeze 2.6.32-5-amd64 #1 SMP Sat Oct 30 14:18:21 UTC 2010 x86_64 GNU/Linux

[[Fichier:Snapshot25.jpeg]]

A venir... Upgrade de Squeeze à ????

----
[[Utilisateur:Lol|Lol]] 25 novembre 2010 à 15:55 (EAT)
[[Catégorie:Installation]]</text>
      <sha1>7k1l9wrywck2zjkw9d4whhppstymgui</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2410</id>
      <parentid>2409</parentid>
      <timestamp>2010-11-25T13:22:03Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Déroulement */</comment>
      <text xml:space="preserve" bytes="31492">{{sid}}

La mise à niveau de Lenny à Squeeze se précise, nous allons faire ici un rapide résumé des opérations nécessaires à la réussite de cette mise à niveau (upgrade).
LVM est installé sur la machine que nous allons mettre à niveau afin de tester le plus de possibilités.

Avant toute chose, je souhaite faire quelques précisions :
Chaque configuration est propre à chacun, en fonction de ses goûts, de son matériel et de ses connaissances.
Un guide universel n'existe donc pas.

Prévoyez aussi d'avoir du temps devant vous, et d'être au calme.

Nous choisirons d'utiliser aptitude au lieu de apt-get, il est en effet plus exigeant concernant les dépendances, votre mise à niveau sera plus &quot;propre&quot;.

J'ai choisi une Lenny avec toutes les options de tasksel activées afin de faire un tour d'horizon le plus vaste possible des problèmes qui pourraient survenir.
L'environnement graphique est Xfce.

[[Fichier:Snapshot3.jpeg]]

== Pré-requis ==

=== Une bonne sauvegarde ===

Vous n'avez AUCUNE garanties que la mise à niveau se passe bien, alors, quel que soit la méthode que vous emploierez, une sauvegarde est le minimum que vous puissiez faire avant de vous lancer dans l'aventure..

Avec dd, dump ou simplement cp SAUVEGARDEZ !

=== Un système à jour! ===

Le fichier sources.list précédent la mise à niveau :

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org stable main non-free
#deb-src http://www.debian-multimedia.org stable main non-free

# backports
deb http://backports.debian.org/debian-backports lenny-backports main contrib non-free
&lt;/code&gt;

 # aptitude update
 # aptitude safe-upgrade
 # aptitude full-upgrade

=== De l'espace! ===

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition ou se trouve /var pour le stockage des paquets téléchargés.

Pour info une mise à jour &quot;lourde&quot; se soldera par le téléchargement d'environ 1Go...

Pour connaître l’espace libre de votre partition racine :

 $ df -H
 Sys. de fich.          Tail.  Occ.  Disp. %Occ. Monté sur
 '''/dev/dm-0              338M   123M   198M  39% /'''
 tmpfs                  262M      0   262M   0% /lib/init/rw
 udev                    11M   689k   9,8M   7% /dev
 tmpfs                  262M      0   262M   0% /dev/shm
 /dev/hda1              239M    20M   207M   9% /boot
 /dev/dm-5              3,7G    75M   3,4G   3% /home
 /dev/dm-4              317M    11M   290M   4% /tmp
 /dev/dm-1              3,7G   1,7G   1,8G  50% /usr
 '''/dev/hdb1              5,3G   1,1G   4,0G  21% /var'''
 /dev/dm-2              1,8G   876M   818M  52% /media/dm-2

'''Si vous disposez de plus de 50% d’espace libre vous pouvez passer à l'étape suivant'''.

Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Si cela ne suffit toujours pas, il faut envisager d'ajouter un disque à votre système, ou de procéder à un upgrade par étapes successives (en mettant à jour les paquets progressivements et en nettoyant à chaque étape)

=== Les pilotes de la carte Graphique ===

Afin de ne pas avoir de mauvaise surprise avec le serveur X, modifiez votre xorg.conf afin d'utiliser des pilotes Debian.

Eventuellement utilisez les pilotes &quot;vesa&quot;

Dans votre fichier /etc/X11/xorg.conf

&lt;code&gt;
Section &quot;Device&quot;
    Identifier     &quot;Device0&quot;
    Driver         &quot;vesa&quot;
EndSection
&lt;/code&gt;

Si vous êtes sur de vous, n'en faites rien, mais prévoyez une réinstallation des pilotes avant le premier redémarrage.

=== Le fichier sources.list ===

Créons un nouveau sources.list que nous placerons dans /etc/apt/sources.list.d
Nous prenons dors et déjà la bonne habitude d'utiliser ce dossier qui est devenu celui par défaut pour mettre les fichiers contenant les dépôts.

 # nano /etc/apt/sources.list.d/sources.list

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free

# stable security
deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

## stable volatile
## Il n'y a pas de dépôt volatile pour squeeze pour l'instant
## deb http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free
## deb-src http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org squeeze main non-free
#deb-src http://www.debian-multimedia.org squeeze main non-free

# backports
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
&lt;/code&gt;

== Préparation de la mise à niveau ==

Maintenant que nous sommes prêts, nous pouvons lancer l'upgrade :

Mise à jour de la liste des paquets :

 # aptitude update

=== Si vous avez des problèmes de clefs ===

 W: GPG error: http://www.debian-multimedia.org

 # aptitude install debian-backports-keyring
 # aptitude install debian-multimedia-keyring

=== Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]] ===

 E: Dynamic MMap ran out of room

 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaite l'update, il ne doit pas y avoir d'erreurs

 # aptitude update

=== Problèmes de dépendances ===

Vous ne pourrez pas faire le passage de Lenny à Squeeze tant que subsisteront des problèmes de dépendances...

Voici deux exemples de problèmes de dépendances, et la manière de le régler :

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  xfce4-mixer-oss: Est en conflit avec: xfce4-mixer-alsa mais 4.4.2-3 est installé.
  foomatic-db: Est en conflit avec: foomatic-db-hpijs mais 20080211-1 est installé.
  xfce4-mixer-alsa: Est en conflit avec: xfce4-mixer-oss mais 4.4.2-3 doit être installé.

# aptitude install foomatic-db xfce4-mixer-alsa
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Lecture des descriptions de tâches... Fait  
Les NOUVEAUX paquets suivants vont être installés : 
  libopenjpeg2{a} libpoppler5{a} min12xxw{a} pnm2ppa{a} 
Les paquets suivants seront ENLEVÉS : 
  foomatic-db-hpijs{a} 
Les paquets suivants seront mis à jour : 
  fontconfig-config foomatic-db foomatic-db-engine foomatic-filters libfontconfig1 libjpeg62 libxml2 poppler-utils 
8 paquets mis à jour, 4 nouvellement installés, 1 à enlever et 728 non mis à jour.
Il est nécessaire de télécharger 4722ko d'archives. Après dépaquetage, 18,2Mo seront libérés.
Voulez-vous continuer ? [Y/n/?] o
...
État actuel : 728 mises à jour restantes [-8].
&lt;/code&gt;

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  libatlas3gf-base: Est en conflit avec: libblas3gf (&lt; 1.2-5) mais 1.2-2 est installé et a été conservé
                    Est en conflit avec: liblapack3gf (&lt; 3.2.1-4) mais 3.1.1-1 est installé et a été conservé
  rarian-compat: Est en conflit avec: scrollkeeper (&lt; 0.4) mais 0.3.14-16 est installé et a été conservé

# aptitude install libatlas3gf-base scrollkeeper
...
Les actions suivantes permettront de résoudre ces dépendances :

Mettre à jour les paquets suivants :
libblas3gf [1.2-2 (stable, now) -&gt; 1.2-8 (testing)]
liblapack3gf [3.1.1-1 (stable, now) -&gt; 3.2.1-8 (testing)]

Le score est de 70

Accepter cette solution ? [Y/n/q/?] y
...
État actuel : 725 mises à jour restantes [-3].
&lt;/code&gt;

En cas de doute n'hésitez pas à demander un avis [http://forum.debian-fr.org/ sur le forum]

=== stopper le serveur X ===

'''IMPORTANT''' : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

== Lancez la mise à niveau ==

&lt;code&gt;
# aptitude safe-upgrade
...
Les paquets suivants ont été conservés : 
  apt apt-utils aptitude synaptic 
Les NOUVEAUX paquets suivants vont être installés : 
  acpi-fakekey{a} apache2.2-bin{a} aumix{a} aumix-common{a} bluez{a} bluez-alsa{a} bluez-cups{a} bluez-gstreamer{a} 
  browser-plugin-gnash{a} cifs-utils{a} consolekit{a} cpp-4.4{a} cracklib-runtime{a} cups-ppdc{a} dash{a} db4.8-util{a} 
  diffutils{a} dosfstools{a} firmware-linux-free{a} freepats{a} fuse-utils{a} gcc-4.4-base{a} gcj-4.4-base{a} 
  gcj-4.4-jre-lib{a} geoip-database{a} ghostscript-cups{a} gnash{a} gnash-common{a} gnupg-curl{a} grub-pc{a} 
  gstreamer0.10-ffmpeg{a} gstreamer0.10-fluendo-mp3{a} gstreamer0.10-plugins-bad{a} gstreamer0.10-plugins-base{a} gvfs{a} 
  hplip-cups{a} insserv{a} install-info{a} isc-dhcp-client{a} isc-dhcp-common{a} iso-codes{a} keyboard-configuration{a} 
  libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libass4{a} libatasmart4{a} libaudit0{a} libavahi-core7{a} libavcodec52{a} 
  libavformat52{a} libavutil50{a} libbabl-0.0-0{a} libbind9-60{a} libbluetooth3{a} libboost-date-time1.42.0{a} 
  libboost-thread1.42.0{a} libbsd0{a} libburn4{a} libc-bin{a} libc-client2007e{a} libcap-ng0{a} libcdaudio1{a} libcdio10{a} 
  libcdparanoia0{a} libcelt0-0{a} libck-connector0{a} libcolamd2.7.1{a} libcommons-beanutils-java{a} 
  libcommons-collections3-java{a} libcommons-compress-java{a} libcommons-digester-java{a} libcommons-logging-java{a} 
  libcrack2{a} libcupscgi1{a} libcupsdriver1{a} libcupsmime1{a} libcupsppdc1{a} libdatrie1{a} libdb-je-java{a} libdb4.7{a} 
  libdb4.7-java{a} libdb4.7-java-gcj{a} libdb4.8{a} libdc1394-22{a} libdca0{a} libdirac-encoder0{a} libdirectfb-1.2-9{a} 
  libdns66{a} libdrm-intel1{a} libdrm-nouveau1{a} libdrm-radeon1{a} libdvdnav4{a} libdvdread4{a} libeggdbus-1-0{a} libenca0{a} 
  libenchant1c2a{a} libevent-1.4-2{a} libexempi3{a} libexo-common{a} libfaad2{a} libfftw3-3{a} libfile-copy-recursive-perl{a} 
  libflite1{a} libfont-freetype-perl{a} libfuse2{a} libgcj10{a} libgcr0{a} libgdu0{a} libgegl-0.0-0{a} libgeoip1{a} libgif4{a} 
  libgme0{a} libgomp1{a} libgp11-0{a} libgpgme11{a} libgraphicsmagick3{a} libgraphite3{a} libgssapi-krb5-2{a} libgtkglext1{a} 
  libgudev-1.0-0{a} libhpmud0{a} libicu44{a} libicu4j-java{a} libiptcdata0{a} libisc60{a} libisccc60{a} libisccfg60{a} 
  libiso9660-7{a} libisofs6{a} libiw30{a} libjbig2dec0{a} libjpeg-progs{a} libjpeg8{a} libjtidy-java{a} libk5crypto3{a} 
  libkate1{a} libkrb5-3{a} libkrb5support0{a} libltdl7{a} liblucene2-java{a} liblwres60{a} liblzma2{a} libmimic0{a} libmms0{a} 
  libmodplug1{a} libmozjs2d{a} libmpcdec6{a} libmpfr4{a} libmusicbrainz4c2a{a} libmythes-1.2-0{a} libneon27-gnutls{a} 
  libnetaddr-ip-perl{a} libnfnetlink0{a} libnl1{a} libntfs-3g75{a} libntfs10{a} libofa0{a} libonig2{a} libopencore-amrnb0{a} 
  libopencore-amrwb0{a} libopenraw1{a} liborc-0.4-0{a} libossp-uuid16{a} libpam-ck-connector{a} libpam-cracklib{a} 
  libpango-perl{a} libpangomm-1.4-1{a} libparted0debian1{a} libpciaccess0{a} libpolkit-agent-1-0{a} libpolkit-backend-1-0{a} 
  libpolkit-gobject-1-0{a} libpoppler-glib4{a} libpth20{a} libpython2.6{a} libqdbm14{a} libraptor1{a} librasqal2{a} 
  libraw1394-11{a} librdf0{a} libreadline6{a} librtmp0{a} libsane-hpaio{a} libsasl2-modules{a} libservlet2.5-java{a} 
  libsexy2{a} libsgutils2-2{a} libslv2-9{a} libsndfile1{a} libsoundtouch1c2{a} libswscale0{a} libtag1-vanilla{a} libtalloc2{a} 
  libtextcat-data-utf8{a} libtokyocabinet8{a} libudev0{a} libunique-1.0-0{a} libusb-1.0-0{a} libutempter0{a} libuuid-perl{a} 
  libv4l-0{a} libva1{a} libvcdinfo0{a} libvisual-0.4-0{a} libvisual-0.4-plugins{a} libvpx0{a} libwebkit-1.0-2{a} 
  libwebkit-1.0-common{a} libwildmidi1{a} libwnck-common{a} libwnck22{a} libx11-xcb1{a} libx264-104{a} libxcb-atom1{a} 
  libxcb-aux0{a} libxcb-dri2-0{a} libxcb-event1{a} libxfce4menu-0.1-0{a} libxfce4util-bin{a} libxfce4util-common{a} 
  libxfconf-0-2{a} libxklavier16{a} libxml-parser-perl{a} libxres1{a} libzbar0{a} linux-base{a} linux-image-2.6.32-5-amd64{a} 
  lockfile-progs{a} lsb-release{a} mtools{a} ntfsprogs{a} os-prober{a} oss-compat{a} php5-cli{a} php5-suhosin{a} 
  policykit-1{a} policykit-1-gnome{a} postgresql-8.4{a} postgresql-client-8.4{a} postgresql-contrib-8.4{a} 
  postgresql-doc-8.4{a} python-cups{a} python-gconf{a} python-numpy{a} python-pexpect{a} python-reportbug{a} python-webkit{a} 
  python2.6{a} python2.6-minimal{a} ristretto{a} samba-common-bin{a} sane-utils{a} sensible-utils{a} squeeze{a} 
  tango-icon-theme{a} thunar-archive-plugin{a} thunar-volman{a} tsconf{a} ttf-freefont{a} ttf-lyx{a} ttf-sil-gentium{a} 
  ttf-sil-gentium-basic{a} udisks{a} uno-libs3{a} unzip{a} ure{a} x-ttcidfont-conf{a} xdg-user-dirs{a} xfburn{a} 
  xfce-keyboard-shortcuts{a} xfce4-appfinder{a} xfce4-clipman{a} xfce4-datetime-plugin{a} xfce4-dict{a} xfce4-notes{a} 
  xfce4-notifyd{a} xfce4-places-plugin{a} xfce4-power-manager{a} xfce4-power-manager-data{a} xfce4-screenshooter{a} 
  xfce4-settings{a} xfce4-taskmanager{a} xfce4-timer-plugin{a} xfce4-xkb-plugin{a} xfconf{a} xfonts-mathml{a} xinput{a} xli{a} 
  xorg-docs-core{a} xscreensaver{a} xscreensaver-data{a} xserver-common{a} xserver-xorg-video-nouveau{a} xulrunner-1.9.1{a} 
  xz-utils{a} 
Les paquets suivants seront ENLEVÉS : 
  bluez-utils{u} cpp-4.3{u} cupsddk-drivers{u} djvulibre-desktop{u} finger{u} gs-common{u} liba52-0.7.4{u} libamrnb3{u} 
  libamrwb3{u} libaudio2{u} libavahi-compat-libdnssd1{u} libavahi-core5{u} libavc1394-0{u} libavcodec51{u} libbind9-50{u} 
  libbluetooth2{u} libc-client2007b{u} libcap1{u} libcucul0{u} libcupsys2{u} libcurl3{u} libdatrie0{u} libdirac0{u} 
  libdjvulibre21{u} libfaad0{u} libfreebob0{u} libgail-common{u} libgraphviz4{u} libgtkhtml2-0{u} libicu38{u} libiec61883-0{u} 
  libisccc50{u} libisccfg50{u} libiw29{u} libjaxp1.3-java-gcj{u} libltdl3{u} liblwres50{u} libmagick10{u} libmodplug0c2{u} 
  libmozjs1d{u} libmpcdec3{u} libmpfr1ldbl{u} libmysqlclient15off{u} libneon27{u} libntfs-3g31{u} libossp-uuid15{u} 
  libparted1.8-10{u} libpoppler-glib3{u} libpoppler3{u} libqt3-mt{u} libraw1394-8{u} libsensors3{u} libservlet2.4-java{u} 
  libsmbios-bin{u} libsmbios2{u} libssh2-1{u} libsuitesparse-3.1.0{u} libswfdec-0.6-90{u} libtalloc1{u} libvolume-id0{u} 
  libx264-65{u} libxalan2-java{u} libxalan2-java-gcj{u} libxcb-xlib0{u} libxerces2-java{u} libxerces2-java-gcj{u} 
  libxfce4mcs-client3{u} libxfce4mcs-manager3{u} libxtrap6{u} libxxf86misc1{u} mysql-common{u} openoffice.org-writer2latex{u} 
  openssl-blacklist{u} postgresql-8.3{u} postgresql-client-8.3{u} postgresql-contrib-8.3{u} postgresql-doc-8.3{u} 
  python-gtkhtml2{u} python-numeric{u} svgalibg1{u} xfce4-icon-theme{u} xfce4-mcs-manager{u} xfce4-mcs-plugins{u} 
  xfce4-minicmd-plugin{u} xfce4-screenshooter-plugin{u} xserver-xorg-video-cyrix{u} xserver-xorg-video-v4l{u} 
  xserver-xorg-video-vga{u} xulrunner-1.9{u} 
Les paquets suivants seront mis à jour : 
  a2ps acpi acpi-support acpi-support-base acpid adduser alsa-base alsa-utils anacron analog apache2 apache2-doc 
  apache2-mpm-prefork apache2-utils apache2.2-common apmd aspell aspell-fr at avahi-autoipd avahi-daemon base-files 
  base-passwd bash bash-completion bc bind9 bind9-doc bind9-host bind9utils bluetooth bsd-mailx bsdmainutils bsdutils bsh 
  bsh-gcj busybox ca-certificates console-common console-data console-setup console-terminus console-tools coreutils cpio cpp 
  cpufrequtils cron cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk dbus dbus-x11 dc debconf debconf-i18n 
  debian-archive-keyring debian-faq debianutils deborphan defoma desktop-base desktop-file-utils dhcp3-client dhcp3-common 
  dialog dictionaries-common diff disk-manager dmidecode dmsetup dnsutils doc-debian docbook-xml dpkg e2fslibs e2fsprogs ed 
  eject esound-common exim4 exim4-base exim4-config exim4-daemon-light exo-utils fastjar file findutils fontconfig foo2zjs 
  foomatic-db-gutenprint foomatic-filters-ppds foomatic-gui fortune-mod fortunes-min ftp gcc-4.3-base gconf2 gconf2-common gdm 
  gettext-base ghostscript gimp gimp-data gksu gnome-keyring gnupg gparted gpgv grep groff-base grub grub-common gsfonts 
  gtk2-engines-xfce gzip hal hal-info hdparm hibernate hicolor-icon-theme hostname hpijs hplip hplip-data iamerican ibritish 
  iceweasel iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint info initramfs-tools initscripts installation-report iproute 
  iptables iputils-ping ispell java-common kerneloops klibc-utils laptop-detect less libaa1 libacl1 libapache2-mod-perl2 
  libapache2-mod-php5 libapache2-mod-python libapm1 libapr1 libaprutil1 libart-2.0-2 libasound2 libaspell15 libatk1.0-0 
  libattr1 libaudiofile0 libavahi-client3 libavahi-common-data libavahi-common3 libavahi-glib1 libavutil49 libbcel-java 
  libblkid1 libbonobo2-0 libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i386 libcaca0 
  libcairo-perl libcairo2 libcairomm-1.0-1 libcap2 libcomerr2 libconsole libcpufreq0 libcroco3 libcups2 libcupsimage2 
  libcurl3-gnutls libcwidget3 libdaemon0 libdb4.6 libdbus-1-3 libdbus-glib-1-2 libdevel-symdump-perl libdevmapper1.02.1 
  libdigest-hmac-perl libdigest-sha1-perl libdirectfb-extra libdmx1 libdrm2 libedit2 libesd0 libexif12 libexo-0.3-0 libexpat1 
  libfaac0 libfam0 libffi5 libflac8 libfontenc1 libfreetype6 libfs6 libgail18 libgc1c2 libgcc1 libgcj-bc libgcj-common 
  libgconf2-4 libgcrypt11 libgd2-noxpm libgdbm3 libgfortran3 libgimp2.0 libgksu2-0 libgl1-mesa-dri libgl1-mesa-glx libglade2-0 
  libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgmp3c2 libgnome-keyring0 libgnome2-0 libgnome2-canvas-perl 
  libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0 libgnomecanvas2-common libgnomeui-0 libgnomeui-common 
  libgnomevfs2-0 libgnomevfs2-common libgnomevfs2-extra libgnutls26 libgpg-error0 libgphoto2-2 libgphoto2-port0 libgpm2 libgs8 
  libgsf-1-114 libgsf-1-common libgsm1 libgssglue1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0 
  libgtk2.0-common libgtkmm-2.4-1c2a libgtop2-7 libgtop2-common libgutenprint2 libhal-storage1 libhal1 libhsqldb-java 
  libhsqldb-java-gcj libhtml-parser-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libice6 libidl0 libidn11 libieee1284-3 
  libijs-0.35 libilmbase6 libjack0 libjasper1 libjaxp1.3-java libjline-java libkeyutils1 libklibc libkrb53 liblcms1 
  libldap-2.4-2 liblocale-gettext-perl liblockfile1 liblog4j1.2-java liblzo2-2 libmad0 libmagic1 libmng1 libmp3lame0 
  libmx4j-java libncurses5 libncursesw5 libnet-dns-perl libnewt0.52 libnfsidmap2 libnotify1 libnspr4-0d libnss-mdns libnss3-1d 
  libogg0 liboil0.3 libopenexr6 liborbit2 libpam-modules libpam-runtime libpam0g libpango1.0-0 libpango1.0-common libpaper1 
  libpci3 libpcre3 libpcsclite1 libperl5.10 libpixman-1-0 libpng12-0 libpopt0 libpostproc51 libpq5 libpulse0 libreadline5 
  librecode0 libregexp-java librpcsecgss3 librsvg2-2 librsvg2-common libsane libsane-extras libsasl2-2 libschroedinger-1.0-0 
  libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsensors4 libsepol1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 
  libsmbclient libsnmp-base libsnmp15 libsocket6-perl libsoup2.4-1 libsqlite3-0 libss2 libssl0.9.8 libstartup-notification0 
  libstdc++6 libsvga1 libsysfs2 libtag1c2a libtagc0 libtasn1-3 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl 
  libthai-data libthai0 libtheora0 libthunar-vfs-1-2 libtiff4 libts-0.0-0 liburi-perl libusb-0.1-4 libuuid1 libvorbis0a 
  libvorbisenc2 libvte-common libvte9 libwavpack1 libwbclient0 libwmf0.2-7 libwpg-0.1-1 libwrap0 libwww-perl libx11-6 
  libx11-data libx86-1 libxau6 libxaw7 libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xv0 libxcb1 
  libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfce4util4 libxfcegui4-4 libxfixes3 libxfont1 libxft2 libxi6 
  libxine1 libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins libxine1-plugins libxine1-x libxinerama1 
  libxkbfile1 libxmu6 libxmuu1 libxpm4 libxrandr2 libxrender1 libxslt1.1 libxss1 libxt6 libxtst6 libxv1 libxvidcore4 libxvmc1 
  libxxf86dga1 libxxf86vm1 linux-image-2.6-amd64 linux-sound-base locales login logrotate lp-solve lsb-base lsof lvm2 lwresd 
  m4 mailagent makedev man-db manpages manpages-fr manpages-fr-extra mawk mc menu mime-support mktemp mlocate mlock 
  module-init-tools mount mousepad mutt myspell-en-us myspell-fr-gut nano ncurses-base ncurses-bin ncurses-term net-tools 
  netatalk netbase nfs-common nfs-kernel-server ntfs-3g nvclock openbsd-inetd openoffice.org openoffice.org-base 
  openoffice.org-base-core openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw 
  openoffice.org-filter-mobiledev openoffice.org-gcj openoffice.org-gtk openoffice.org-help-en-us openoffice.org-help-fr 
  openoffice.org-impress openoffice.org-java-common openoffice.org-l10n-fr openoffice.org-math openoffice.org-officebean 
  openoffice.org-report-builder-bin openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-thesaurus-en-us 
  openoffice.org-writer openprinting-ppds openssh-client openssh-server openssl orage passwd patch pciutils pcmciautils perl 
  perl-base perl-modules php5-common pm-utils popularity-contest portmap postgresql postgresql-client postgresql-client-common 
  postgresql-common postgresql-contrib postgresql-doc powermgmt-base powertop printconf procmail procps psmisc psutils python 
  python-cairo python-central python-dbus python-foomatic python-glade2 python-gnome2 python-gobject python-gtk2 
  python-imaging python-ipy python-minimal python-pyorbit python-support python2.5 python2.5-minimal qpopper radeontool 
  readline-common reportbug rsyslog sa-exim samba samba-common samba-doc sed sgml-base sgml-data shared-mime-info 
  smartmontools smbclient smbfs spamassassin spamc ssl-cert sudo swat swfdec-mozilla sysv-rc sysvinit sysvinit-utils tar 
  tasksel tasksel-data tcpd texinfo thunar thunar-data thunar-media-tags-plugin time toshset traceroute ttf-dejavu 
  ttf-dejavu-core ttf-dejavu-extra ttf-liberation ttf-opensymbol tzdata ucf udev update-inetd usbutils util-linux uw-imapd 
  vbetool vim-common vim-tiny w3m wamerican wfrench wget whiptail whois winbind wireless-tools wpasupplicant x11-apps 
  x11-common x11-session-utils x11-utils x11-xfs-utils x11-xkb-utils x11-xserver-utils xauth xbitmaps xdg-utils xfce4 
  xfce4-battery-plugin xfce4-clipman-plugin xfce4-cpufreq-plugin xfce4-cpugraph-plugin xfce4-diskperf-plugin 
  xfce4-fsguard-plugin xfce4-genmon-plugin xfce4-goodies xfce4-mailwatch-plugin xfce4-mixer xfce4-mount-plugin 
  xfce4-netload-plugin xfce4-notes-plugin xfce4-panel xfce4-quicklauncher-plugin xfce4-sensors-plugin xfce4-session 
  xfce4-smartbookmark-plugin xfce4-systemload-plugin xfce4-terminal xfce4-utils xfce4-verve-plugin xfce4-wavelan-plugin 
  xfce4-weather-plugin xfdesktop4 xfdesktop4-data xfonts-100dpi xfonts-75dpi xfonts-base xfonts-encodings xfonts-intl-european 
  xfonts-scalable xfonts-utils xfprint4 xfwm4 xinit xkb-data xml-core xorg xsane xsane-common xserver-xorg xserver-xorg-core 
  xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd xserver-xorg-input-mouse xserver-xorg-input-synaptics 
  xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati 
  xserver-xorg-video-chips xserver-xorg-video-cirrus xserver-xorg-video-dummy xserver-xorg-video-fbdev 
  xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-intel xserver-xorg-video-mach64 xserver-xorg-video-mga 
  xserver-xorg-video-neomagic xserver-xorg-video-nv xserver-xorg-video-openchrome xserver-xorg-video-r128 
  xserver-xorg-video-radeon xserver-xorg-video-radeonhd xserver-xorg-video-rendition xserver-xorg-video-s3 
  xserver-xorg-video-s3virge xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis 
  xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident xserver-xorg-video-tseng 
  xserver-xorg-video-vesa xserver-xorg-video-vmware xserver-xorg-video-voodoo xterm zlib1g 
Les paquets suivants sont RECOMMANDÉS mais ne seront pas installés :
  bzip2 gamin gcc gdm-themes hddtemp libapache2-reload-perl libatk1.0-data libatm1 libbsd-resource-perl libc6-dev libfribidi0 
  libglib2.0-data libgtk2.0-bin libhtml-format-perl libio-socket-inet6-perl liblog4j1.2-java-gcj libmail-spf-perl 
  libmailtools-perl libnss-lwres libpam-gnome-keyring libpaper-utils lm-sensors make nmap openoffice.org-emailmerge 
  openoffice.org-filter-binfilter pconf-detect rc re2c uuid-runtime wdiff xfwm4-themes xnest xserver-xephyr zenity 
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] 
&lt;/code&gt;

En fonction de votre connexion ça peut prendre très longtemps, et être interrompu (à 500KB/s une demi-heure à 50 KB/s c'est plusieurs heures...).
Un conseil, si vous n'êtes pas sûr de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

&lt;code&gt;
# aptitude -d safe-upgrade
...
 762Mo téléchargés en 1h9min37s (182ko/s)                                                          
Lecture des listes de paquets... Fait             
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait
&lt;/code&gt;

Puis

&lt;code&gt;
# aptitude safe-upgrade
...
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 0o/762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] y
&lt;/code&gt;

=== Déroulement ===

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut, mais prenez le temps de lire tous les messages, et si nécessaire, prenez des notes.

[[Fichier:Snapshot4.jpeg]]

[[Fichier:Snapshot5.jpeg]]

[[Fichier:Snapshot6.jpeg]]

[[Fichier:Snapshot7.jpeg]]

[[Fichier:Snapshot9.jpeg]]

[[Fichier:Snapshot11.jpeg]]

[[Fichier:Snapshot13.jpeg]]

[[Fichier:Snapshot14.jpeg]]

[[Fichier:Snapshot15.jpeg]]

[[Fichier:Snapshot16.jpeg]]

[[Fichier:Snapshot17.jpeg]]

Vous partirez d'une Lenny configurée, et donc de nombreux fichiers de configuration auront été modifiés par vos soins.
Il est judicieux de ne pas écraser vos configurations avec les fichiers par défauts proposés par les &quot;mainteneurs&quot; des paquets.
Vous aurez tout le loisir de regarder les modifications proposées, et ce qu'elles apportent, en regardant dans /usr/share/doc ou dans les contenus de vos deb téléchargés (dans /var/apt/archives)

[[Fichier:Snapshot18.jpeg]]

Sans le téléchargement des fichiers, comptez un peu plus d'une heure pour la mise à niveau

=== finalisation ===

Le safe-upgrade devrait se terminer par ceci :

&lt;code&gt;
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 4 mises à jour restantes [-721].
&lt;/code&gt;

Vous pouvez maintenant lancer un &quot;full-upgrade&quot;

&lt;code&gt;
# aptitude full-upgrade

...

4 paquets mis à jour, 13 nouvellement installés, 2 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 12,1Mo d'archives. Après dépaquetage, 14,3Mo seront utilisés.
Les paquets suivants ont des dépendances non satisfaites :
  libept0: Dépend: libapt-pkg-libc6.7-6-4.6 qui est un paquet virtuel
Les actions suivantes permettront de résoudre ces dépendances :

Supprimer les paquets suivants :
libept0

Le score est de 115

Accepter cette solution ? [Y/n/q/?]y

...

Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 0 mise à jour restante [-4].
&lt;/code&gt;

Si tout s'est bien passé, il ne vous reste plus qu'a redémarrer le machine :

 # reboot

=== Grub2 ===

Si vous étiez sous Grub-legacy vous aurez certainement fait la bascule vers Grub2.

La première &quot;surprise&quot; qui vous attend donc (sauf si vous avez lu ce guide avant...) c'est le menu suivant :

[[Fichier:Snapshot19.jpeg]]

Si vous appuyez sur entrée, cvous serez conduit vers le menu de Grub2.
Cette étape permet de vérifier que Grub2 est bien installé, et de le tester.

[[Fichier:Snapshot20.jpeg]]

Si cela fonctionne, une des premières choses à faire sera de confirmer l'installation de Grub2 en tapant dans une console la commande suivante :

 # upgrade-from-grub-legacy

=== LVM ===

Problème rencontré lors de la mise à niveau avec LVM...
Le système s'est mélangé les pédales dans l'attribution des partitions.
Résultat :

[[Fichier:Snapshot21.jpeg]]

Voici ou se situe le problème :

&lt;code&gt;
$ vdir /dev/l2s/
total 0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 home -&gt; ../dm-5
lrwxrwxrwx 1 root root 7 25 nov.  18:28 root -&gt; ../dm-0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 swap_1 -&gt; ../dm-1
lrwxrwxrwx 1 root root 7 25 nov.  18:28 tmp -&gt; ../dm-4
lrwxrwxrwx 1 root root 7 25 nov.  18:28 usr -&gt; ../dm-2
lrwxrwxrwx 1 root root 7 25 nov.  18:28 var -&gt; ../dm-3
&lt;/code&gt;
&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
# /dev/hda1	/boot	ext2	defaults	0	2
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-1	/usr	ext3	defaults	0	2
# /dev/hdb1	/var	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-3	none	swap	sw	0	0
# /dev/hdc	/media/cdrom0	udf,iso9660	user,noauto	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

Je ne sais pour quelle raison LVM à changé la numérotation des partitions... /usr est passé en dm-1 alors qu'il devrait être en dm-2 et la swap en dm-3 alors quelle devrait être en dm-1
Il suffit de modifier le fichier /etc/fstab pour qu'il reflète à nouveau correctement vos partitions, et le tour est joué :

&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-2	/usr	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-1	none	swap	sw	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

== Bienvenu sur Squeeze ==

 laurent@lenny2squeeze:~$ uname -a
 Linux lenny2squeeze 2.6.32-5-amd64 #1 SMP Sat Oct 30 14:18:21 UTC 2010 x86_64 GNU/Linux

[[Fichier:Snapshot25.jpeg]]

A venir... Upgrade de Squeeze à ????

----
[[Utilisateur:Lol|Lol]] 25 novembre 2010 à 15:55 (EAT)
[[Catégorie:Installation]]</text>
      <sha1>9vej2o9nu4m1ah4stslpa4u7lp8sjwo</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2411</id>
      <parentid>2410</parentid>
      <timestamp>2010-11-25T13:23:12Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* finalisation */</comment>
      <text xml:space="preserve" bytes="31492">{{sid}}

La mise à niveau de Lenny à Squeeze se précise, nous allons faire ici un rapide résumé des opérations nécessaires à la réussite de cette mise à niveau (upgrade).
LVM est installé sur la machine que nous allons mettre à niveau afin de tester le plus de possibilités.

Avant toute chose, je souhaite faire quelques précisions :
Chaque configuration est propre à chacun, en fonction de ses goûts, de son matériel et de ses connaissances.
Un guide universel n'existe donc pas.

Prévoyez aussi d'avoir du temps devant vous, et d'être au calme.

Nous choisirons d'utiliser aptitude au lieu de apt-get, il est en effet plus exigeant concernant les dépendances, votre mise à niveau sera plus &quot;propre&quot;.

J'ai choisi une Lenny avec toutes les options de tasksel activées afin de faire un tour d'horizon le plus vaste possible des problèmes qui pourraient survenir.
L'environnement graphique est Xfce.

[[Fichier:Snapshot3.jpeg]]

== Pré-requis ==

=== Une bonne sauvegarde ===

Vous n'avez AUCUNE garanties que la mise à niveau se passe bien, alors, quel que soit la méthode que vous emploierez, une sauvegarde est le minimum que vous puissiez faire avant de vous lancer dans l'aventure..

Avec dd, dump ou simplement cp SAUVEGARDEZ !

=== Un système à jour! ===

Le fichier sources.list précédent la mise à niveau :

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org stable main non-free
#deb-src http://www.debian-multimedia.org stable main non-free

# backports
deb http://backports.debian.org/debian-backports lenny-backports main contrib non-free
&lt;/code&gt;

 # aptitude update
 # aptitude safe-upgrade
 # aptitude full-upgrade

=== De l'espace! ===

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition ou se trouve /var pour le stockage des paquets téléchargés.

Pour info une mise à jour &quot;lourde&quot; se soldera par le téléchargement d'environ 1Go...

Pour connaître l’espace libre de votre partition racine :

 $ df -H
 Sys. de fich.          Tail.  Occ.  Disp. %Occ. Monté sur
 '''/dev/dm-0              338M   123M   198M  39% /'''
 tmpfs                  262M      0   262M   0% /lib/init/rw
 udev                    11M   689k   9,8M   7% /dev
 tmpfs                  262M      0   262M   0% /dev/shm
 /dev/hda1              239M    20M   207M   9% /boot
 /dev/dm-5              3,7G    75M   3,4G   3% /home
 /dev/dm-4              317M    11M   290M   4% /tmp
 /dev/dm-1              3,7G   1,7G   1,8G  50% /usr
 '''/dev/hdb1              5,3G   1,1G   4,0G  21% /var'''
 /dev/dm-2              1,8G   876M   818M  52% /media/dm-2

'''Si vous disposez de plus de 50% d’espace libre vous pouvez passer à l'étape suivant'''.

Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Si cela ne suffit toujours pas, il faut envisager d'ajouter un disque à votre système, ou de procéder à un upgrade par étapes successives (en mettant à jour les paquets progressivements et en nettoyant à chaque étape)

=== Les pilotes de la carte Graphique ===

Afin de ne pas avoir de mauvaise surprise avec le serveur X, modifiez votre xorg.conf afin d'utiliser des pilotes Debian.

Eventuellement utilisez les pilotes &quot;vesa&quot;

Dans votre fichier /etc/X11/xorg.conf

&lt;code&gt;
Section &quot;Device&quot;
    Identifier     &quot;Device0&quot;
    Driver         &quot;vesa&quot;
EndSection
&lt;/code&gt;

Si vous êtes sur de vous, n'en faites rien, mais prévoyez une réinstallation des pilotes avant le premier redémarrage.

=== Le fichier sources.list ===

Créons un nouveau sources.list que nous placerons dans /etc/apt/sources.list.d
Nous prenons dors et déjà la bonne habitude d'utiliser ce dossier qui est devenu celui par défaut pour mettre les fichiers contenant les dépôts.

 # nano /etc/apt/sources.list.d/sources.list

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free

# stable security
deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

## stable volatile
## Il n'y a pas de dépôt volatile pour squeeze pour l'instant
## deb http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free
## deb-src http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org squeeze main non-free
#deb-src http://www.debian-multimedia.org squeeze main non-free

# backports
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
&lt;/code&gt;

== Préparation de la mise à niveau ==

Maintenant que nous sommes prêts, nous pouvons lancer l'upgrade :

Mise à jour de la liste des paquets :

 # aptitude update

=== Si vous avez des problèmes de clefs ===

 W: GPG error: http://www.debian-multimedia.org

 # aptitude install debian-backports-keyring
 # aptitude install debian-multimedia-keyring

=== Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]] ===

 E: Dynamic MMap ran out of room

 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaite l'update, il ne doit pas y avoir d'erreurs

 # aptitude update

=== Problèmes de dépendances ===

Vous ne pourrez pas faire le passage de Lenny à Squeeze tant que subsisteront des problèmes de dépendances...

Voici deux exemples de problèmes de dépendances, et la manière de le régler :

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  xfce4-mixer-oss: Est en conflit avec: xfce4-mixer-alsa mais 4.4.2-3 est installé.
  foomatic-db: Est en conflit avec: foomatic-db-hpijs mais 20080211-1 est installé.
  xfce4-mixer-alsa: Est en conflit avec: xfce4-mixer-oss mais 4.4.2-3 doit être installé.

# aptitude install foomatic-db xfce4-mixer-alsa
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Lecture des descriptions de tâches... Fait  
Les NOUVEAUX paquets suivants vont être installés : 
  libopenjpeg2{a} libpoppler5{a} min12xxw{a} pnm2ppa{a} 
Les paquets suivants seront ENLEVÉS : 
  foomatic-db-hpijs{a} 
Les paquets suivants seront mis à jour : 
  fontconfig-config foomatic-db foomatic-db-engine foomatic-filters libfontconfig1 libjpeg62 libxml2 poppler-utils 
8 paquets mis à jour, 4 nouvellement installés, 1 à enlever et 728 non mis à jour.
Il est nécessaire de télécharger 4722ko d'archives. Après dépaquetage, 18,2Mo seront libérés.
Voulez-vous continuer ? [Y/n/?] o
...
État actuel : 728 mises à jour restantes [-8].
&lt;/code&gt;

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  libatlas3gf-base: Est en conflit avec: libblas3gf (&lt; 1.2-5) mais 1.2-2 est installé et a été conservé
                    Est en conflit avec: liblapack3gf (&lt; 3.2.1-4) mais 3.1.1-1 est installé et a été conservé
  rarian-compat: Est en conflit avec: scrollkeeper (&lt; 0.4) mais 0.3.14-16 est installé et a été conservé

# aptitude install libatlas3gf-base scrollkeeper
...
Les actions suivantes permettront de résoudre ces dépendances :

Mettre à jour les paquets suivants :
libblas3gf [1.2-2 (stable, now) -&gt; 1.2-8 (testing)]
liblapack3gf [3.1.1-1 (stable, now) -&gt; 3.2.1-8 (testing)]

Le score est de 70

Accepter cette solution ? [Y/n/q/?] y
...
État actuel : 725 mises à jour restantes [-3].
&lt;/code&gt;

En cas de doute n'hésitez pas à demander un avis [http://forum.debian-fr.org/ sur le forum]

=== stopper le serveur X ===

'''IMPORTANT''' : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

== Lancez la mise à niveau ==

&lt;code&gt;
# aptitude safe-upgrade
...
Les paquets suivants ont été conservés : 
  apt apt-utils aptitude synaptic 
Les NOUVEAUX paquets suivants vont être installés : 
  acpi-fakekey{a} apache2.2-bin{a} aumix{a} aumix-common{a} bluez{a} bluez-alsa{a} bluez-cups{a} bluez-gstreamer{a} 
  browser-plugin-gnash{a} cifs-utils{a} consolekit{a} cpp-4.4{a} cracklib-runtime{a} cups-ppdc{a} dash{a} db4.8-util{a} 
  diffutils{a} dosfstools{a} firmware-linux-free{a} freepats{a} fuse-utils{a} gcc-4.4-base{a} gcj-4.4-base{a} 
  gcj-4.4-jre-lib{a} geoip-database{a} ghostscript-cups{a} gnash{a} gnash-common{a} gnupg-curl{a} grub-pc{a} 
  gstreamer0.10-ffmpeg{a} gstreamer0.10-fluendo-mp3{a} gstreamer0.10-plugins-bad{a} gstreamer0.10-plugins-base{a} gvfs{a} 
  hplip-cups{a} insserv{a} install-info{a} isc-dhcp-client{a} isc-dhcp-common{a} iso-codes{a} keyboard-configuration{a} 
  libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libass4{a} libatasmart4{a} libaudit0{a} libavahi-core7{a} libavcodec52{a} 
  libavformat52{a} libavutil50{a} libbabl-0.0-0{a} libbind9-60{a} libbluetooth3{a} libboost-date-time1.42.0{a} 
  libboost-thread1.42.0{a} libbsd0{a} libburn4{a} libc-bin{a} libc-client2007e{a} libcap-ng0{a} libcdaudio1{a} libcdio10{a} 
  libcdparanoia0{a} libcelt0-0{a} libck-connector0{a} libcolamd2.7.1{a} libcommons-beanutils-java{a} 
  libcommons-collections3-java{a} libcommons-compress-java{a} libcommons-digester-java{a} libcommons-logging-java{a} 
  libcrack2{a} libcupscgi1{a} libcupsdriver1{a} libcupsmime1{a} libcupsppdc1{a} libdatrie1{a} libdb-je-java{a} libdb4.7{a} 
  libdb4.7-java{a} libdb4.7-java-gcj{a} libdb4.8{a} libdc1394-22{a} libdca0{a} libdirac-encoder0{a} libdirectfb-1.2-9{a} 
  libdns66{a} libdrm-intel1{a} libdrm-nouveau1{a} libdrm-radeon1{a} libdvdnav4{a} libdvdread4{a} libeggdbus-1-0{a} libenca0{a} 
  libenchant1c2a{a} libevent-1.4-2{a} libexempi3{a} libexo-common{a} libfaad2{a} libfftw3-3{a} libfile-copy-recursive-perl{a} 
  libflite1{a} libfont-freetype-perl{a} libfuse2{a} libgcj10{a} libgcr0{a} libgdu0{a} libgegl-0.0-0{a} libgeoip1{a} libgif4{a} 
  libgme0{a} libgomp1{a} libgp11-0{a} libgpgme11{a} libgraphicsmagick3{a} libgraphite3{a} libgssapi-krb5-2{a} libgtkglext1{a} 
  libgudev-1.0-0{a} libhpmud0{a} libicu44{a} libicu4j-java{a} libiptcdata0{a} libisc60{a} libisccc60{a} libisccfg60{a} 
  libiso9660-7{a} libisofs6{a} libiw30{a} libjbig2dec0{a} libjpeg-progs{a} libjpeg8{a} libjtidy-java{a} libk5crypto3{a} 
  libkate1{a} libkrb5-3{a} libkrb5support0{a} libltdl7{a} liblucene2-java{a} liblwres60{a} liblzma2{a} libmimic0{a} libmms0{a} 
  libmodplug1{a} libmozjs2d{a} libmpcdec6{a} libmpfr4{a} libmusicbrainz4c2a{a} libmythes-1.2-0{a} libneon27-gnutls{a} 
  libnetaddr-ip-perl{a} libnfnetlink0{a} libnl1{a} libntfs-3g75{a} libntfs10{a} libofa0{a} libonig2{a} libopencore-amrnb0{a} 
  libopencore-amrwb0{a} libopenraw1{a} liborc-0.4-0{a} libossp-uuid16{a} libpam-ck-connector{a} libpam-cracklib{a} 
  libpango-perl{a} libpangomm-1.4-1{a} libparted0debian1{a} libpciaccess0{a} libpolkit-agent-1-0{a} libpolkit-backend-1-0{a} 
  libpolkit-gobject-1-0{a} libpoppler-glib4{a} libpth20{a} libpython2.6{a} libqdbm14{a} libraptor1{a} librasqal2{a} 
  libraw1394-11{a} librdf0{a} libreadline6{a} librtmp0{a} libsane-hpaio{a} libsasl2-modules{a} libservlet2.5-java{a} 
  libsexy2{a} libsgutils2-2{a} libslv2-9{a} libsndfile1{a} libsoundtouch1c2{a} libswscale0{a} libtag1-vanilla{a} libtalloc2{a} 
  libtextcat-data-utf8{a} libtokyocabinet8{a} libudev0{a} libunique-1.0-0{a} libusb-1.0-0{a} libutempter0{a} libuuid-perl{a} 
  libv4l-0{a} libva1{a} libvcdinfo0{a} libvisual-0.4-0{a} libvisual-0.4-plugins{a} libvpx0{a} libwebkit-1.0-2{a} 
  libwebkit-1.0-common{a} libwildmidi1{a} libwnck-common{a} libwnck22{a} libx11-xcb1{a} libx264-104{a} libxcb-atom1{a} 
  libxcb-aux0{a} libxcb-dri2-0{a} libxcb-event1{a} libxfce4menu-0.1-0{a} libxfce4util-bin{a} libxfce4util-common{a} 
  libxfconf-0-2{a} libxklavier16{a} libxml-parser-perl{a} libxres1{a} libzbar0{a} linux-base{a} linux-image-2.6.32-5-amd64{a} 
  lockfile-progs{a} lsb-release{a} mtools{a} ntfsprogs{a} os-prober{a} oss-compat{a} php5-cli{a} php5-suhosin{a} 
  policykit-1{a} policykit-1-gnome{a} postgresql-8.4{a} postgresql-client-8.4{a} postgresql-contrib-8.4{a} 
  postgresql-doc-8.4{a} python-cups{a} python-gconf{a} python-numpy{a} python-pexpect{a} python-reportbug{a} python-webkit{a} 
  python2.6{a} python2.6-minimal{a} ristretto{a} samba-common-bin{a} sane-utils{a} sensible-utils{a} squeeze{a} 
  tango-icon-theme{a} thunar-archive-plugin{a} thunar-volman{a} tsconf{a} ttf-freefont{a} ttf-lyx{a} ttf-sil-gentium{a} 
  ttf-sil-gentium-basic{a} udisks{a} uno-libs3{a} unzip{a} ure{a} x-ttcidfont-conf{a} xdg-user-dirs{a} xfburn{a} 
  xfce-keyboard-shortcuts{a} xfce4-appfinder{a} xfce4-clipman{a} xfce4-datetime-plugin{a} xfce4-dict{a} xfce4-notes{a} 
  xfce4-notifyd{a} xfce4-places-plugin{a} xfce4-power-manager{a} xfce4-power-manager-data{a} xfce4-screenshooter{a} 
  xfce4-settings{a} xfce4-taskmanager{a} xfce4-timer-plugin{a} xfce4-xkb-plugin{a} xfconf{a} xfonts-mathml{a} xinput{a} xli{a} 
  xorg-docs-core{a} xscreensaver{a} xscreensaver-data{a} xserver-common{a} xserver-xorg-video-nouveau{a} xulrunner-1.9.1{a} 
  xz-utils{a} 
Les paquets suivants seront ENLEVÉS : 
  bluez-utils{u} cpp-4.3{u} cupsddk-drivers{u} djvulibre-desktop{u} finger{u} gs-common{u} liba52-0.7.4{u} libamrnb3{u} 
  libamrwb3{u} libaudio2{u} libavahi-compat-libdnssd1{u} libavahi-core5{u} libavc1394-0{u} libavcodec51{u} libbind9-50{u} 
  libbluetooth2{u} libc-client2007b{u} libcap1{u} libcucul0{u} libcupsys2{u} libcurl3{u} libdatrie0{u} libdirac0{u} 
  libdjvulibre21{u} libfaad0{u} libfreebob0{u} libgail-common{u} libgraphviz4{u} libgtkhtml2-0{u} libicu38{u} libiec61883-0{u} 
  libisccc50{u} libisccfg50{u} libiw29{u} libjaxp1.3-java-gcj{u} libltdl3{u} liblwres50{u} libmagick10{u} libmodplug0c2{u} 
  libmozjs1d{u} libmpcdec3{u} libmpfr1ldbl{u} libmysqlclient15off{u} libneon27{u} libntfs-3g31{u} libossp-uuid15{u} 
  libparted1.8-10{u} libpoppler-glib3{u} libpoppler3{u} libqt3-mt{u} libraw1394-8{u} libsensors3{u} libservlet2.4-java{u} 
  libsmbios-bin{u} libsmbios2{u} libssh2-1{u} libsuitesparse-3.1.0{u} libswfdec-0.6-90{u} libtalloc1{u} libvolume-id0{u} 
  libx264-65{u} libxalan2-java{u} libxalan2-java-gcj{u} libxcb-xlib0{u} libxerces2-java{u} libxerces2-java-gcj{u} 
  libxfce4mcs-client3{u} libxfce4mcs-manager3{u} libxtrap6{u} libxxf86misc1{u} mysql-common{u} openoffice.org-writer2latex{u} 
  openssl-blacklist{u} postgresql-8.3{u} postgresql-client-8.3{u} postgresql-contrib-8.3{u} postgresql-doc-8.3{u} 
  python-gtkhtml2{u} python-numeric{u} svgalibg1{u} xfce4-icon-theme{u} xfce4-mcs-manager{u} xfce4-mcs-plugins{u} 
  xfce4-minicmd-plugin{u} xfce4-screenshooter-plugin{u} xserver-xorg-video-cyrix{u} xserver-xorg-video-v4l{u} 
  xserver-xorg-video-vga{u} xulrunner-1.9{u} 
Les paquets suivants seront mis à jour : 
  a2ps acpi acpi-support acpi-support-base acpid adduser alsa-base alsa-utils anacron analog apache2 apache2-doc 
  apache2-mpm-prefork apache2-utils apache2.2-common apmd aspell aspell-fr at avahi-autoipd avahi-daemon base-files 
  base-passwd bash bash-completion bc bind9 bind9-doc bind9-host bind9utils bluetooth bsd-mailx bsdmainutils bsdutils bsh 
  bsh-gcj busybox ca-certificates console-common console-data console-setup console-terminus console-tools coreutils cpio cpp 
  cpufrequtils cron cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk dbus dbus-x11 dc debconf debconf-i18n 
  debian-archive-keyring debian-faq debianutils deborphan defoma desktop-base desktop-file-utils dhcp3-client dhcp3-common 
  dialog dictionaries-common diff disk-manager dmidecode dmsetup dnsutils doc-debian docbook-xml dpkg e2fslibs e2fsprogs ed 
  eject esound-common exim4 exim4-base exim4-config exim4-daemon-light exo-utils fastjar file findutils fontconfig foo2zjs 
  foomatic-db-gutenprint foomatic-filters-ppds foomatic-gui fortune-mod fortunes-min ftp gcc-4.3-base gconf2 gconf2-common gdm 
  gettext-base ghostscript gimp gimp-data gksu gnome-keyring gnupg gparted gpgv grep groff-base grub grub-common gsfonts 
  gtk2-engines-xfce gzip hal hal-info hdparm hibernate hicolor-icon-theme hostname hpijs hplip hplip-data iamerican ibritish 
  iceweasel iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint info initramfs-tools initscripts installation-report iproute 
  iptables iputils-ping ispell java-common kerneloops klibc-utils laptop-detect less libaa1 libacl1 libapache2-mod-perl2 
  libapache2-mod-php5 libapache2-mod-python libapm1 libapr1 libaprutil1 libart-2.0-2 libasound2 libaspell15 libatk1.0-0 
  libattr1 libaudiofile0 libavahi-client3 libavahi-common-data libavahi-common3 libavahi-glib1 libavutil49 libbcel-java 
  libblkid1 libbonobo2-0 libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i386 libcaca0 
  libcairo-perl libcairo2 libcairomm-1.0-1 libcap2 libcomerr2 libconsole libcpufreq0 libcroco3 libcups2 libcupsimage2 
  libcurl3-gnutls libcwidget3 libdaemon0 libdb4.6 libdbus-1-3 libdbus-glib-1-2 libdevel-symdump-perl libdevmapper1.02.1 
  libdigest-hmac-perl libdigest-sha1-perl libdirectfb-extra libdmx1 libdrm2 libedit2 libesd0 libexif12 libexo-0.3-0 libexpat1 
  libfaac0 libfam0 libffi5 libflac8 libfontenc1 libfreetype6 libfs6 libgail18 libgc1c2 libgcc1 libgcj-bc libgcj-common 
  libgconf2-4 libgcrypt11 libgd2-noxpm libgdbm3 libgfortran3 libgimp2.0 libgksu2-0 libgl1-mesa-dri libgl1-mesa-glx libglade2-0 
  libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgmp3c2 libgnome-keyring0 libgnome2-0 libgnome2-canvas-perl 
  libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0 libgnomecanvas2-common libgnomeui-0 libgnomeui-common 
  libgnomevfs2-0 libgnomevfs2-common libgnomevfs2-extra libgnutls26 libgpg-error0 libgphoto2-2 libgphoto2-port0 libgpm2 libgs8 
  libgsf-1-114 libgsf-1-common libgsm1 libgssglue1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0 
  libgtk2.0-common libgtkmm-2.4-1c2a libgtop2-7 libgtop2-common libgutenprint2 libhal-storage1 libhal1 libhsqldb-java 
  libhsqldb-java-gcj libhtml-parser-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libice6 libidl0 libidn11 libieee1284-3 
  libijs-0.35 libilmbase6 libjack0 libjasper1 libjaxp1.3-java libjline-java libkeyutils1 libklibc libkrb53 liblcms1 
  libldap-2.4-2 liblocale-gettext-perl liblockfile1 liblog4j1.2-java liblzo2-2 libmad0 libmagic1 libmng1 libmp3lame0 
  libmx4j-java libncurses5 libncursesw5 libnet-dns-perl libnewt0.52 libnfsidmap2 libnotify1 libnspr4-0d libnss-mdns libnss3-1d 
  libogg0 liboil0.3 libopenexr6 liborbit2 libpam-modules libpam-runtime libpam0g libpango1.0-0 libpango1.0-common libpaper1 
  libpci3 libpcre3 libpcsclite1 libperl5.10 libpixman-1-0 libpng12-0 libpopt0 libpostproc51 libpq5 libpulse0 libreadline5 
  librecode0 libregexp-java librpcsecgss3 librsvg2-2 librsvg2-common libsane libsane-extras libsasl2-2 libschroedinger-1.0-0 
  libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsensors4 libsepol1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 
  libsmbclient libsnmp-base libsnmp15 libsocket6-perl libsoup2.4-1 libsqlite3-0 libss2 libssl0.9.8 libstartup-notification0 
  libstdc++6 libsvga1 libsysfs2 libtag1c2a libtagc0 libtasn1-3 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl 
  libthai-data libthai0 libtheora0 libthunar-vfs-1-2 libtiff4 libts-0.0-0 liburi-perl libusb-0.1-4 libuuid1 libvorbis0a 
  libvorbisenc2 libvte-common libvte9 libwavpack1 libwbclient0 libwmf0.2-7 libwpg-0.1-1 libwrap0 libwww-perl libx11-6 
  libx11-data libx86-1 libxau6 libxaw7 libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xv0 libxcb1 
  libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfce4util4 libxfcegui4-4 libxfixes3 libxfont1 libxft2 libxi6 
  libxine1 libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins libxine1-plugins libxine1-x libxinerama1 
  libxkbfile1 libxmu6 libxmuu1 libxpm4 libxrandr2 libxrender1 libxslt1.1 libxss1 libxt6 libxtst6 libxv1 libxvidcore4 libxvmc1 
  libxxf86dga1 libxxf86vm1 linux-image-2.6-amd64 linux-sound-base locales login logrotate lp-solve lsb-base lsof lvm2 lwresd 
  m4 mailagent makedev man-db manpages manpages-fr manpages-fr-extra mawk mc menu mime-support mktemp mlocate mlock 
  module-init-tools mount mousepad mutt myspell-en-us myspell-fr-gut nano ncurses-base ncurses-bin ncurses-term net-tools 
  netatalk netbase nfs-common nfs-kernel-server ntfs-3g nvclock openbsd-inetd openoffice.org openoffice.org-base 
  openoffice.org-base-core openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw 
  openoffice.org-filter-mobiledev openoffice.org-gcj openoffice.org-gtk openoffice.org-help-en-us openoffice.org-help-fr 
  openoffice.org-impress openoffice.org-java-common openoffice.org-l10n-fr openoffice.org-math openoffice.org-officebean 
  openoffice.org-report-builder-bin openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-thesaurus-en-us 
  openoffice.org-writer openprinting-ppds openssh-client openssh-server openssl orage passwd patch pciutils pcmciautils perl 
  perl-base perl-modules php5-common pm-utils popularity-contest portmap postgresql postgresql-client postgresql-client-common 
  postgresql-common postgresql-contrib postgresql-doc powermgmt-base powertop printconf procmail procps psmisc psutils python 
  python-cairo python-central python-dbus python-foomatic python-glade2 python-gnome2 python-gobject python-gtk2 
  python-imaging python-ipy python-minimal python-pyorbit python-support python2.5 python2.5-minimal qpopper radeontool 
  readline-common reportbug rsyslog sa-exim samba samba-common samba-doc sed sgml-base sgml-data shared-mime-info 
  smartmontools smbclient smbfs spamassassin spamc ssl-cert sudo swat swfdec-mozilla sysv-rc sysvinit sysvinit-utils tar 
  tasksel tasksel-data tcpd texinfo thunar thunar-data thunar-media-tags-plugin time toshset traceroute ttf-dejavu 
  ttf-dejavu-core ttf-dejavu-extra ttf-liberation ttf-opensymbol tzdata ucf udev update-inetd usbutils util-linux uw-imapd 
  vbetool vim-common vim-tiny w3m wamerican wfrench wget whiptail whois winbind wireless-tools wpasupplicant x11-apps 
  x11-common x11-session-utils x11-utils x11-xfs-utils x11-xkb-utils x11-xserver-utils xauth xbitmaps xdg-utils xfce4 
  xfce4-battery-plugin xfce4-clipman-plugin xfce4-cpufreq-plugin xfce4-cpugraph-plugin xfce4-diskperf-plugin 
  xfce4-fsguard-plugin xfce4-genmon-plugin xfce4-goodies xfce4-mailwatch-plugin xfce4-mixer xfce4-mount-plugin 
  xfce4-netload-plugin xfce4-notes-plugin xfce4-panel xfce4-quicklauncher-plugin xfce4-sensors-plugin xfce4-session 
  xfce4-smartbookmark-plugin xfce4-systemload-plugin xfce4-terminal xfce4-utils xfce4-verve-plugin xfce4-wavelan-plugin 
  xfce4-weather-plugin xfdesktop4 xfdesktop4-data xfonts-100dpi xfonts-75dpi xfonts-base xfonts-encodings xfonts-intl-european 
  xfonts-scalable xfonts-utils xfprint4 xfwm4 xinit xkb-data xml-core xorg xsane xsane-common xserver-xorg xserver-xorg-core 
  xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd xserver-xorg-input-mouse xserver-xorg-input-synaptics 
  xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati 
  xserver-xorg-video-chips xserver-xorg-video-cirrus xserver-xorg-video-dummy xserver-xorg-video-fbdev 
  xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-intel xserver-xorg-video-mach64 xserver-xorg-video-mga 
  xserver-xorg-video-neomagic xserver-xorg-video-nv xserver-xorg-video-openchrome xserver-xorg-video-r128 
  xserver-xorg-video-radeon xserver-xorg-video-radeonhd xserver-xorg-video-rendition xserver-xorg-video-s3 
  xserver-xorg-video-s3virge xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis 
  xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident xserver-xorg-video-tseng 
  xserver-xorg-video-vesa xserver-xorg-video-vmware xserver-xorg-video-voodoo xterm zlib1g 
Les paquets suivants sont RECOMMANDÉS mais ne seront pas installés :
  bzip2 gamin gcc gdm-themes hddtemp libapache2-reload-perl libatk1.0-data libatm1 libbsd-resource-perl libc6-dev libfribidi0 
  libglib2.0-data libgtk2.0-bin libhtml-format-perl libio-socket-inet6-perl liblog4j1.2-java-gcj libmail-spf-perl 
  libmailtools-perl libnss-lwres libpam-gnome-keyring libpaper-utils lm-sensors make nmap openoffice.org-emailmerge 
  openoffice.org-filter-binfilter pconf-detect rc re2c uuid-runtime wdiff xfwm4-themes xnest xserver-xephyr zenity 
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] 
&lt;/code&gt;

En fonction de votre connexion ça peut prendre très longtemps, et être interrompu (à 500KB/s une demi-heure à 50 KB/s c'est plusieurs heures...).
Un conseil, si vous n'êtes pas sûr de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

&lt;code&gt;
# aptitude -d safe-upgrade
...
 762Mo téléchargés en 1h9min37s (182ko/s)                                                          
Lecture des listes de paquets... Fait             
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait
&lt;/code&gt;

Puis

&lt;code&gt;
# aptitude safe-upgrade
...
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 0o/762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] y
&lt;/code&gt;

=== Déroulement ===

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut, mais prenez le temps de lire tous les messages, et si nécessaire, prenez des notes.

[[Fichier:Snapshot4.jpeg]]

[[Fichier:Snapshot5.jpeg]]

[[Fichier:Snapshot6.jpeg]]

[[Fichier:Snapshot7.jpeg]]

[[Fichier:Snapshot9.jpeg]]

[[Fichier:Snapshot11.jpeg]]

[[Fichier:Snapshot13.jpeg]]

[[Fichier:Snapshot14.jpeg]]

[[Fichier:Snapshot15.jpeg]]

[[Fichier:Snapshot16.jpeg]]

[[Fichier:Snapshot17.jpeg]]

Vous partirez d'une Lenny configurée, et donc de nombreux fichiers de configuration auront été modifiés par vos soins.
Il est judicieux de ne pas écraser vos configurations avec les fichiers par défauts proposés par les &quot;mainteneurs&quot; des paquets.
Vous aurez tout le loisir de regarder les modifications proposées, et ce qu'elles apportent, en regardant dans /usr/share/doc ou dans les contenus de vos deb téléchargés (dans /var/apt/archives)

[[Fichier:Snapshot18.jpeg]]

Sans le téléchargement des fichiers, comptez un peu plus d'une heure pour la mise à niveau

=== finalisation ===

Le safe-upgrade devrait se terminer par ceci :

&lt;code&gt;
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 4 mises à jour restantes [-721].
&lt;/code&gt;

Vous pouvez maintenant lancer un &quot;full-upgrade&quot;

&lt;code&gt;
# aptitude full-upgrade

...

4 paquets mis à jour, 13 nouvellement installés, 2 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 12,1Mo d'archives. Après dépaquetage, 14,3Mo seront utilisés.
Les paquets suivants ont des dépendances non satisfaites :
  libept0: Dépend: libapt-pkg-libc6.7-6-4.6 qui est un paquet virtuel
Les actions suivantes permettront de résoudre ces dépendances :

Supprimer les paquets suivants :
libept0

Le score est de 115

Accepter cette solution ? [Y/n/q/?]y

...

Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 0 mise à jour restante [-4].
&lt;/code&gt;

Si tout s'est bien passé, il ne vous reste plus qu'a redémarrer la machine :

 # reboot

=== Grub2 ===

Si vous étiez sous Grub-legacy vous aurez certainement fait la bascule vers Grub2.

La première &quot;surprise&quot; qui vous attend donc (sauf si vous avez lu ce guide avant...) c'est le menu suivant :

[[Fichier:Snapshot19.jpeg]]

Si vous appuyez sur entrée, cvous serez conduit vers le menu de Grub2.
Cette étape permet de vérifier que Grub2 est bien installé, et de le tester.

[[Fichier:Snapshot20.jpeg]]

Si cela fonctionne, une des premières choses à faire sera de confirmer l'installation de Grub2 en tapant dans une console la commande suivante :

 # upgrade-from-grub-legacy

=== LVM ===

Problème rencontré lors de la mise à niveau avec LVM...
Le système s'est mélangé les pédales dans l'attribution des partitions.
Résultat :

[[Fichier:Snapshot21.jpeg]]

Voici ou se situe le problème :

&lt;code&gt;
$ vdir /dev/l2s/
total 0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 home -&gt; ../dm-5
lrwxrwxrwx 1 root root 7 25 nov.  18:28 root -&gt; ../dm-0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 swap_1 -&gt; ../dm-1
lrwxrwxrwx 1 root root 7 25 nov.  18:28 tmp -&gt; ../dm-4
lrwxrwxrwx 1 root root 7 25 nov.  18:28 usr -&gt; ../dm-2
lrwxrwxrwx 1 root root 7 25 nov.  18:28 var -&gt; ../dm-3
&lt;/code&gt;
&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
# /dev/hda1	/boot	ext2	defaults	0	2
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-1	/usr	ext3	defaults	0	2
# /dev/hdb1	/var	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-3	none	swap	sw	0	0
# /dev/hdc	/media/cdrom0	udf,iso9660	user,noauto	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

Je ne sais pour quelle raison LVM à changé la numérotation des partitions... /usr est passé en dm-1 alors qu'il devrait être en dm-2 et la swap en dm-3 alors quelle devrait être en dm-1
Il suffit de modifier le fichier /etc/fstab pour qu'il reflète à nouveau correctement vos partitions, et le tour est joué :

&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-2	/usr	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-1	none	swap	sw	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

== Bienvenu sur Squeeze ==

 laurent@lenny2squeeze:~$ uname -a
 Linux lenny2squeeze 2.6.32-5-amd64 #1 SMP Sat Oct 30 14:18:21 UTC 2010 x86_64 GNU/Linux

[[Fichier:Snapshot25.jpeg]]

A venir... Upgrade de Squeeze à ????

----
[[Utilisateur:Lol|Lol]] 25 novembre 2010 à 15:55 (EAT)
[[Catégorie:Installation]]</text>
      <sha1>msvbfe74ofegfpui6s1ekbc2va39lat</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2412</id>
      <parentid>2411</parentid>
      <timestamp>2010-11-25T13:24:23Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* LVM */</comment>
      <text xml:space="preserve" bytes="31485">{{sid}}

La mise à niveau de Lenny à Squeeze se précise, nous allons faire ici un rapide résumé des opérations nécessaires à la réussite de cette mise à niveau (upgrade).
LVM est installé sur la machine que nous allons mettre à niveau afin de tester le plus de possibilités.

Avant toute chose, je souhaite faire quelques précisions :
Chaque configuration est propre à chacun, en fonction de ses goûts, de son matériel et de ses connaissances.
Un guide universel n'existe donc pas.

Prévoyez aussi d'avoir du temps devant vous, et d'être au calme.

Nous choisirons d'utiliser aptitude au lieu de apt-get, il est en effet plus exigeant concernant les dépendances, votre mise à niveau sera plus &quot;propre&quot;.

J'ai choisi une Lenny avec toutes les options de tasksel activées afin de faire un tour d'horizon le plus vaste possible des problèmes qui pourraient survenir.
L'environnement graphique est Xfce.

[[Fichier:Snapshot3.jpeg]]

== Pré-requis ==

=== Une bonne sauvegarde ===

Vous n'avez AUCUNE garanties que la mise à niveau se passe bien, alors, quel que soit la méthode que vous emploierez, une sauvegarde est le minimum que vous puissiez faire avant de vous lancer dans l'aventure..

Avec dd, dump ou simplement cp SAUVEGARDEZ !

=== Un système à jour! ===

Le fichier sources.list précédent la mise à niveau :

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org stable main non-free
#deb-src http://www.debian-multimedia.org stable main non-free

# backports
deb http://backports.debian.org/debian-backports lenny-backports main contrib non-free
&lt;/code&gt;

 # aptitude update
 # aptitude safe-upgrade
 # aptitude full-upgrade

=== De l'espace! ===

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition ou se trouve /var pour le stockage des paquets téléchargés.

Pour info une mise à jour &quot;lourde&quot; se soldera par le téléchargement d'environ 1Go...

Pour connaître l’espace libre de votre partition racine :

 $ df -H
 Sys. de fich.          Tail.  Occ.  Disp. %Occ. Monté sur
 '''/dev/dm-0              338M   123M   198M  39% /'''
 tmpfs                  262M      0   262M   0% /lib/init/rw
 udev                    11M   689k   9,8M   7% /dev
 tmpfs                  262M      0   262M   0% /dev/shm
 /dev/hda1              239M    20M   207M   9% /boot
 /dev/dm-5              3,7G    75M   3,4G   3% /home
 /dev/dm-4              317M    11M   290M   4% /tmp
 /dev/dm-1              3,7G   1,7G   1,8G  50% /usr
 '''/dev/hdb1              5,3G   1,1G   4,0G  21% /var'''
 /dev/dm-2              1,8G   876M   818M  52% /media/dm-2

'''Si vous disposez de plus de 50% d’espace libre vous pouvez passer à l'étape suivant'''.

Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Si cela ne suffit toujours pas, il faut envisager d'ajouter un disque à votre système, ou de procéder à un upgrade par étapes successives (en mettant à jour les paquets progressivements et en nettoyant à chaque étape)

=== Les pilotes de la carte Graphique ===

Afin de ne pas avoir de mauvaise surprise avec le serveur X, modifiez votre xorg.conf afin d'utiliser des pilotes Debian.

Eventuellement utilisez les pilotes &quot;vesa&quot;

Dans votre fichier /etc/X11/xorg.conf

&lt;code&gt;
Section &quot;Device&quot;
    Identifier     &quot;Device0&quot;
    Driver         &quot;vesa&quot;
EndSection
&lt;/code&gt;

Si vous êtes sur de vous, n'en faites rien, mais prévoyez une réinstallation des pilotes avant le premier redémarrage.

=== Le fichier sources.list ===

Créons un nouveau sources.list que nous placerons dans /etc/apt/sources.list.d
Nous prenons dors et déjà la bonne habitude d'utiliser ce dossier qui est devenu celui par défaut pour mettre les fichiers contenant les dépôts.

 # nano /etc/apt/sources.list.d/sources.list

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free

# stable security
deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

## stable volatile
## Il n'y a pas de dépôt volatile pour squeeze pour l'instant
## deb http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free
## deb-src http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org squeeze main non-free
#deb-src http://www.debian-multimedia.org squeeze main non-free

# backports
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
&lt;/code&gt;

== Préparation de la mise à niveau ==

Maintenant que nous sommes prêts, nous pouvons lancer l'upgrade :

Mise à jour de la liste des paquets :

 # aptitude update

=== Si vous avez des problèmes de clefs ===

 W: GPG error: http://www.debian-multimedia.org

 # aptitude install debian-backports-keyring
 # aptitude install debian-multimedia-keyring

=== Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]] ===

 E: Dynamic MMap ran out of room

 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaite l'update, il ne doit pas y avoir d'erreurs

 # aptitude update

=== Problèmes de dépendances ===

Vous ne pourrez pas faire le passage de Lenny à Squeeze tant que subsisteront des problèmes de dépendances...

Voici deux exemples de problèmes de dépendances, et la manière de le régler :

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  xfce4-mixer-oss: Est en conflit avec: xfce4-mixer-alsa mais 4.4.2-3 est installé.
  foomatic-db: Est en conflit avec: foomatic-db-hpijs mais 20080211-1 est installé.
  xfce4-mixer-alsa: Est en conflit avec: xfce4-mixer-oss mais 4.4.2-3 doit être installé.

# aptitude install foomatic-db xfce4-mixer-alsa
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Lecture des descriptions de tâches... Fait  
Les NOUVEAUX paquets suivants vont être installés : 
  libopenjpeg2{a} libpoppler5{a} min12xxw{a} pnm2ppa{a} 
Les paquets suivants seront ENLEVÉS : 
  foomatic-db-hpijs{a} 
Les paquets suivants seront mis à jour : 
  fontconfig-config foomatic-db foomatic-db-engine foomatic-filters libfontconfig1 libjpeg62 libxml2 poppler-utils 
8 paquets mis à jour, 4 nouvellement installés, 1 à enlever et 728 non mis à jour.
Il est nécessaire de télécharger 4722ko d'archives. Après dépaquetage, 18,2Mo seront libérés.
Voulez-vous continuer ? [Y/n/?] o
...
État actuel : 728 mises à jour restantes [-8].
&lt;/code&gt;

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  libatlas3gf-base: Est en conflit avec: libblas3gf (&lt; 1.2-5) mais 1.2-2 est installé et a été conservé
                    Est en conflit avec: liblapack3gf (&lt; 3.2.1-4) mais 3.1.1-1 est installé et a été conservé
  rarian-compat: Est en conflit avec: scrollkeeper (&lt; 0.4) mais 0.3.14-16 est installé et a été conservé

# aptitude install libatlas3gf-base scrollkeeper
...
Les actions suivantes permettront de résoudre ces dépendances :

Mettre à jour les paquets suivants :
libblas3gf [1.2-2 (stable, now) -&gt; 1.2-8 (testing)]
liblapack3gf [3.1.1-1 (stable, now) -&gt; 3.2.1-8 (testing)]

Le score est de 70

Accepter cette solution ? [Y/n/q/?] y
...
État actuel : 725 mises à jour restantes [-3].
&lt;/code&gt;

En cas de doute n'hésitez pas à demander un avis [http://forum.debian-fr.org/ sur le forum]

=== stopper le serveur X ===

'''IMPORTANT''' : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

== Lancez la mise à niveau ==

&lt;code&gt;
# aptitude safe-upgrade
...
Les paquets suivants ont été conservés : 
  apt apt-utils aptitude synaptic 
Les NOUVEAUX paquets suivants vont être installés : 
  acpi-fakekey{a} apache2.2-bin{a} aumix{a} aumix-common{a} bluez{a} bluez-alsa{a} bluez-cups{a} bluez-gstreamer{a} 
  browser-plugin-gnash{a} cifs-utils{a} consolekit{a} cpp-4.4{a} cracklib-runtime{a} cups-ppdc{a} dash{a} db4.8-util{a} 
  diffutils{a} dosfstools{a} firmware-linux-free{a} freepats{a} fuse-utils{a} gcc-4.4-base{a} gcj-4.4-base{a} 
  gcj-4.4-jre-lib{a} geoip-database{a} ghostscript-cups{a} gnash{a} gnash-common{a} gnupg-curl{a} grub-pc{a} 
  gstreamer0.10-ffmpeg{a} gstreamer0.10-fluendo-mp3{a} gstreamer0.10-plugins-bad{a} gstreamer0.10-plugins-base{a} gvfs{a} 
  hplip-cups{a} insserv{a} install-info{a} isc-dhcp-client{a} isc-dhcp-common{a} iso-codes{a} keyboard-configuration{a} 
  libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libass4{a} libatasmart4{a} libaudit0{a} libavahi-core7{a} libavcodec52{a} 
  libavformat52{a} libavutil50{a} libbabl-0.0-0{a} libbind9-60{a} libbluetooth3{a} libboost-date-time1.42.0{a} 
  libboost-thread1.42.0{a} libbsd0{a} libburn4{a} libc-bin{a} libc-client2007e{a} libcap-ng0{a} libcdaudio1{a} libcdio10{a} 
  libcdparanoia0{a} libcelt0-0{a} libck-connector0{a} libcolamd2.7.1{a} libcommons-beanutils-java{a} 
  libcommons-collections3-java{a} libcommons-compress-java{a} libcommons-digester-java{a} libcommons-logging-java{a} 
  libcrack2{a} libcupscgi1{a} libcupsdriver1{a} libcupsmime1{a} libcupsppdc1{a} libdatrie1{a} libdb-je-java{a} libdb4.7{a} 
  libdb4.7-java{a} libdb4.7-java-gcj{a} libdb4.8{a} libdc1394-22{a} libdca0{a} libdirac-encoder0{a} libdirectfb-1.2-9{a} 
  libdns66{a} libdrm-intel1{a} libdrm-nouveau1{a} libdrm-radeon1{a} libdvdnav4{a} libdvdread4{a} libeggdbus-1-0{a} libenca0{a} 
  libenchant1c2a{a} libevent-1.4-2{a} libexempi3{a} libexo-common{a} libfaad2{a} libfftw3-3{a} libfile-copy-recursive-perl{a} 
  libflite1{a} libfont-freetype-perl{a} libfuse2{a} libgcj10{a} libgcr0{a} libgdu0{a} libgegl-0.0-0{a} libgeoip1{a} libgif4{a} 
  libgme0{a} libgomp1{a} libgp11-0{a} libgpgme11{a} libgraphicsmagick3{a} libgraphite3{a} libgssapi-krb5-2{a} libgtkglext1{a} 
  libgudev-1.0-0{a} libhpmud0{a} libicu44{a} libicu4j-java{a} libiptcdata0{a} libisc60{a} libisccc60{a} libisccfg60{a} 
  libiso9660-7{a} libisofs6{a} libiw30{a} libjbig2dec0{a} libjpeg-progs{a} libjpeg8{a} libjtidy-java{a} libk5crypto3{a} 
  libkate1{a} libkrb5-3{a} libkrb5support0{a} libltdl7{a} liblucene2-java{a} liblwres60{a} liblzma2{a} libmimic0{a} libmms0{a} 
  libmodplug1{a} libmozjs2d{a} libmpcdec6{a} libmpfr4{a} libmusicbrainz4c2a{a} libmythes-1.2-0{a} libneon27-gnutls{a} 
  libnetaddr-ip-perl{a} libnfnetlink0{a} libnl1{a} libntfs-3g75{a} libntfs10{a} libofa0{a} libonig2{a} libopencore-amrnb0{a} 
  libopencore-amrwb0{a} libopenraw1{a} liborc-0.4-0{a} libossp-uuid16{a} libpam-ck-connector{a} libpam-cracklib{a} 
  libpango-perl{a} libpangomm-1.4-1{a} libparted0debian1{a} libpciaccess0{a} libpolkit-agent-1-0{a} libpolkit-backend-1-0{a} 
  libpolkit-gobject-1-0{a} libpoppler-glib4{a} libpth20{a} libpython2.6{a} libqdbm14{a} libraptor1{a} librasqal2{a} 
  libraw1394-11{a} librdf0{a} libreadline6{a} librtmp0{a} libsane-hpaio{a} libsasl2-modules{a} libservlet2.5-java{a} 
  libsexy2{a} libsgutils2-2{a} libslv2-9{a} libsndfile1{a} libsoundtouch1c2{a} libswscale0{a} libtag1-vanilla{a} libtalloc2{a} 
  libtextcat-data-utf8{a} libtokyocabinet8{a} libudev0{a} libunique-1.0-0{a} libusb-1.0-0{a} libutempter0{a} libuuid-perl{a} 
  libv4l-0{a} libva1{a} libvcdinfo0{a} libvisual-0.4-0{a} libvisual-0.4-plugins{a} libvpx0{a} libwebkit-1.0-2{a} 
  libwebkit-1.0-common{a} libwildmidi1{a} libwnck-common{a} libwnck22{a} libx11-xcb1{a} libx264-104{a} libxcb-atom1{a} 
  libxcb-aux0{a} libxcb-dri2-0{a} libxcb-event1{a} libxfce4menu-0.1-0{a} libxfce4util-bin{a} libxfce4util-common{a} 
  libxfconf-0-2{a} libxklavier16{a} libxml-parser-perl{a} libxres1{a} libzbar0{a} linux-base{a} linux-image-2.6.32-5-amd64{a} 
  lockfile-progs{a} lsb-release{a} mtools{a} ntfsprogs{a} os-prober{a} oss-compat{a} php5-cli{a} php5-suhosin{a} 
  policykit-1{a} policykit-1-gnome{a} postgresql-8.4{a} postgresql-client-8.4{a} postgresql-contrib-8.4{a} 
  postgresql-doc-8.4{a} python-cups{a} python-gconf{a} python-numpy{a} python-pexpect{a} python-reportbug{a} python-webkit{a} 
  python2.6{a} python2.6-minimal{a} ristretto{a} samba-common-bin{a} sane-utils{a} sensible-utils{a} squeeze{a} 
  tango-icon-theme{a} thunar-archive-plugin{a} thunar-volman{a} tsconf{a} ttf-freefont{a} ttf-lyx{a} ttf-sil-gentium{a} 
  ttf-sil-gentium-basic{a} udisks{a} uno-libs3{a} unzip{a} ure{a} x-ttcidfont-conf{a} xdg-user-dirs{a} xfburn{a} 
  xfce-keyboard-shortcuts{a} xfce4-appfinder{a} xfce4-clipman{a} xfce4-datetime-plugin{a} xfce4-dict{a} xfce4-notes{a} 
  xfce4-notifyd{a} xfce4-places-plugin{a} xfce4-power-manager{a} xfce4-power-manager-data{a} xfce4-screenshooter{a} 
  xfce4-settings{a} xfce4-taskmanager{a} xfce4-timer-plugin{a} xfce4-xkb-plugin{a} xfconf{a} xfonts-mathml{a} xinput{a} xli{a} 
  xorg-docs-core{a} xscreensaver{a} xscreensaver-data{a} xserver-common{a} xserver-xorg-video-nouveau{a} xulrunner-1.9.1{a} 
  xz-utils{a} 
Les paquets suivants seront ENLEVÉS : 
  bluez-utils{u} cpp-4.3{u} cupsddk-drivers{u} djvulibre-desktop{u} finger{u} gs-common{u} liba52-0.7.4{u} libamrnb3{u} 
  libamrwb3{u} libaudio2{u} libavahi-compat-libdnssd1{u} libavahi-core5{u} libavc1394-0{u} libavcodec51{u} libbind9-50{u} 
  libbluetooth2{u} libc-client2007b{u} libcap1{u} libcucul0{u} libcupsys2{u} libcurl3{u} libdatrie0{u} libdirac0{u} 
  libdjvulibre21{u} libfaad0{u} libfreebob0{u} libgail-common{u} libgraphviz4{u} libgtkhtml2-0{u} libicu38{u} libiec61883-0{u} 
  libisccc50{u} libisccfg50{u} libiw29{u} libjaxp1.3-java-gcj{u} libltdl3{u} liblwres50{u} libmagick10{u} libmodplug0c2{u} 
  libmozjs1d{u} libmpcdec3{u} libmpfr1ldbl{u} libmysqlclient15off{u} libneon27{u} libntfs-3g31{u} libossp-uuid15{u} 
  libparted1.8-10{u} libpoppler-glib3{u} libpoppler3{u} libqt3-mt{u} libraw1394-8{u} libsensors3{u} libservlet2.4-java{u} 
  libsmbios-bin{u} libsmbios2{u} libssh2-1{u} libsuitesparse-3.1.0{u} libswfdec-0.6-90{u} libtalloc1{u} libvolume-id0{u} 
  libx264-65{u} libxalan2-java{u} libxalan2-java-gcj{u} libxcb-xlib0{u} libxerces2-java{u} libxerces2-java-gcj{u} 
  libxfce4mcs-client3{u} libxfce4mcs-manager3{u} libxtrap6{u} libxxf86misc1{u} mysql-common{u} openoffice.org-writer2latex{u} 
  openssl-blacklist{u} postgresql-8.3{u} postgresql-client-8.3{u} postgresql-contrib-8.3{u} postgresql-doc-8.3{u} 
  python-gtkhtml2{u} python-numeric{u} svgalibg1{u} xfce4-icon-theme{u} xfce4-mcs-manager{u} xfce4-mcs-plugins{u} 
  xfce4-minicmd-plugin{u} xfce4-screenshooter-plugin{u} xserver-xorg-video-cyrix{u} xserver-xorg-video-v4l{u} 
  xserver-xorg-video-vga{u} xulrunner-1.9{u} 
Les paquets suivants seront mis à jour : 
  a2ps acpi acpi-support acpi-support-base acpid adduser alsa-base alsa-utils anacron analog apache2 apache2-doc 
  apache2-mpm-prefork apache2-utils apache2.2-common apmd aspell aspell-fr at avahi-autoipd avahi-daemon base-files 
  base-passwd bash bash-completion bc bind9 bind9-doc bind9-host bind9utils bluetooth bsd-mailx bsdmainutils bsdutils bsh 
  bsh-gcj busybox ca-certificates console-common console-data console-setup console-terminus console-tools coreutils cpio cpp 
  cpufrequtils cron cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk dbus dbus-x11 dc debconf debconf-i18n 
  debian-archive-keyring debian-faq debianutils deborphan defoma desktop-base desktop-file-utils dhcp3-client dhcp3-common 
  dialog dictionaries-common diff disk-manager dmidecode dmsetup dnsutils doc-debian docbook-xml dpkg e2fslibs e2fsprogs ed 
  eject esound-common exim4 exim4-base exim4-config exim4-daemon-light exo-utils fastjar file findutils fontconfig foo2zjs 
  foomatic-db-gutenprint foomatic-filters-ppds foomatic-gui fortune-mod fortunes-min ftp gcc-4.3-base gconf2 gconf2-common gdm 
  gettext-base ghostscript gimp gimp-data gksu gnome-keyring gnupg gparted gpgv grep groff-base grub grub-common gsfonts 
  gtk2-engines-xfce gzip hal hal-info hdparm hibernate hicolor-icon-theme hostname hpijs hplip hplip-data iamerican ibritish 
  iceweasel iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint info initramfs-tools initscripts installation-report iproute 
  iptables iputils-ping ispell java-common kerneloops klibc-utils laptop-detect less libaa1 libacl1 libapache2-mod-perl2 
  libapache2-mod-php5 libapache2-mod-python libapm1 libapr1 libaprutil1 libart-2.0-2 libasound2 libaspell15 libatk1.0-0 
  libattr1 libaudiofile0 libavahi-client3 libavahi-common-data libavahi-common3 libavahi-glib1 libavutil49 libbcel-java 
  libblkid1 libbonobo2-0 libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i386 libcaca0 
  libcairo-perl libcairo2 libcairomm-1.0-1 libcap2 libcomerr2 libconsole libcpufreq0 libcroco3 libcups2 libcupsimage2 
  libcurl3-gnutls libcwidget3 libdaemon0 libdb4.6 libdbus-1-3 libdbus-glib-1-2 libdevel-symdump-perl libdevmapper1.02.1 
  libdigest-hmac-perl libdigest-sha1-perl libdirectfb-extra libdmx1 libdrm2 libedit2 libesd0 libexif12 libexo-0.3-0 libexpat1 
  libfaac0 libfam0 libffi5 libflac8 libfontenc1 libfreetype6 libfs6 libgail18 libgc1c2 libgcc1 libgcj-bc libgcj-common 
  libgconf2-4 libgcrypt11 libgd2-noxpm libgdbm3 libgfortran3 libgimp2.0 libgksu2-0 libgl1-mesa-dri libgl1-mesa-glx libglade2-0 
  libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgmp3c2 libgnome-keyring0 libgnome2-0 libgnome2-canvas-perl 
  libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0 libgnomecanvas2-common libgnomeui-0 libgnomeui-common 
  libgnomevfs2-0 libgnomevfs2-common libgnomevfs2-extra libgnutls26 libgpg-error0 libgphoto2-2 libgphoto2-port0 libgpm2 libgs8 
  libgsf-1-114 libgsf-1-common libgsm1 libgssglue1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0 
  libgtk2.0-common libgtkmm-2.4-1c2a libgtop2-7 libgtop2-common libgutenprint2 libhal-storage1 libhal1 libhsqldb-java 
  libhsqldb-java-gcj libhtml-parser-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libice6 libidl0 libidn11 libieee1284-3 
  libijs-0.35 libilmbase6 libjack0 libjasper1 libjaxp1.3-java libjline-java libkeyutils1 libklibc libkrb53 liblcms1 
  libldap-2.4-2 liblocale-gettext-perl liblockfile1 liblog4j1.2-java liblzo2-2 libmad0 libmagic1 libmng1 libmp3lame0 
  libmx4j-java libncurses5 libncursesw5 libnet-dns-perl libnewt0.52 libnfsidmap2 libnotify1 libnspr4-0d libnss-mdns libnss3-1d 
  libogg0 liboil0.3 libopenexr6 liborbit2 libpam-modules libpam-runtime libpam0g libpango1.0-0 libpango1.0-common libpaper1 
  libpci3 libpcre3 libpcsclite1 libperl5.10 libpixman-1-0 libpng12-0 libpopt0 libpostproc51 libpq5 libpulse0 libreadline5 
  librecode0 libregexp-java librpcsecgss3 librsvg2-2 librsvg2-common libsane libsane-extras libsasl2-2 libschroedinger-1.0-0 
  libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsensors4 libsepol1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 
  libsmbclient libsnmp-base libsnmp15 libsocket6-perl libsoup2.4-1 libsqlite3-0 libss2 libssl0.9.8 libstartup-notification0 
  libstdc++6 libsvga1 libsysfs2 libtag1c2a libtagc0 libtasn1-3 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl 
  libthai-data libthai0 libtheora0 libthunar-vfs-1-2 libtiff4 libts-0.0-0 liburi-perl libusb-0.1-4 libuuid1 libvorbis0a 
  libvorbisenc2 libvte-common libvte9 libwavpack1 libwbclient0 libwmf0.2-7 libwpg-0.1-1 libwrap0 libwww-perl libx11-6 
  libx11-data libx86-1 libxau6 libxaw7 libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xv0 libxcb1 
  libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfce4util4 libxfcegui4-4 libxfixes3 libxfont1 libxft2 libxi6 
  libxine1 libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins libxine1-plugins libxine1-x libxinerama1 
  libxkbfile1 libxmu6 libxmuu1 libxpm4 libxrandr2 libxrender1 libxslt1.1 libxss1 libxt6 libxtst6 libxv1 libxvidcore4 libxvmc1 
  libxxf86dga1 libxxf86vm1 linux-image-2.6-amd64 linux-sound-base locales login logrotate lp-solve lsb-base lsof lvm2 lwresd 
  m4 mailagent makedev man-db manpages manpages-fr manpages-fr-extra mawk mc menu mime-support mktemp mlocate mlock 
  module-init-tools mount mousepad mutt myspell-en-us myspell-fr-gut nano ncurses-base ncurses-bin ncurses-term net-tools 
  netatalk netbase nfs-common nfs-kernel-server ntfs-3g nvclock openbsd-inetd openoffice.org openoffice.org-base 
  openoffice.org-base-core openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw 
  openoffice.org-filter-mobiledev openoffice.org-gcj openoffice.org-gtk openoffice.org-help-en-us openoffice.org-help-fr 
  openoffice.org-impress openoffice.org-java-common openoffice.org-l10n-fr openoffice.org-math openoffice.org-officebean 
  openoffice.org-report-builder-bin openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-thesaurus-en-us 
  openoffice.org-writer openprinting-ppds openssh-client openssh-server openssl orage passwd patch pciutils pcmciautils perl 
  perl-base perl-modules php5-common pm-utils popularity-contest portmap postgresql postgresql-client postgresql-client-common 
  postgresql-common postgresql-contrib postgresql-doc powermgmt-base powertop printconf procmail procps psmisc psutils python 
  python-cairo python-central python-dbus python-foomatic python-glade2 python-gnome2 python-gobject python-gtk2 
  python-imaging python-ipy python-minimal python-pyorbit python-support python2.5 python2.5-minimal qpopper radeontool 
  readline-common reportbug rsyslog sa-exim samba samba-common samba-doc sed sgml-base sgml-data shared-mime-info 
  smartmontools smbclient smbfs spamassassin spamc ssl-cert sudo swat swfdec-mozilla sysv-rc sysvinit sysvinit-utils tar 
  tasksel tasksel-data tcpd texinfo thunar thunar-data thunar-media-tags-plugin time toshset traceroute ttf-dejavu 
  ttf-dejavu-core ttf-dejavu-extra ttf-liberation ttf-opensymbol tzdata ucf udev update-inetd usbutils util-linux uw-imapd 
  vbetool vim-common vim-tiny w3m wamerican wfrench wget whiptail whois winbind wireless-tools wpasupplicant x11-apps 
  x11-common x11-session-utils x11-utils x11-xfs-utils x11-xkb-utils x11-xserver-utils xauth xbitmaps xdg-utils xfce4 
  xfce4-battery-plugin xfce4-clipman-plugin xfce4-cpufreq-plugin xfce4-cpugraph-plugin xfce4-diskperf-plugin 
  xfce4-fsguard-plugin xfce4-genmon-plugin xfce4-goodies xfce4-mailwatch-plugin xfce4-mixer xfce4-mount-plugin 
  xfce4-netload-plugin xfce4-notes-plugin xfce4-panel xfce4-quicklauncher-plugin xfce4-sensors-plugin xfce4-session 
  xfce4-smartbookmark-plugin xfce4-systemload-plugin xfce4-terminal xfce4-utils xfce4-verve-plugin xfce4-wavelan-plugin 
  xfce4-weather-plugin xfdesktop4 xfdesktop4-data xfonts-100dpi xfonts-75dpi xfonts-base xfonts-encodings xfonts-intl-european 
  xfonts-scalable xfonts-utils xfprint4 xfwm4 xinit xkb-data xml-core xorg xsane xsane-common xserver-xorg xserver-xorg-core 
  xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd xserver-xorg-input-mouse xserver-xorg-input-synaptics 
  xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati 
  xserver-xorg-video-chips xserver-xorg-video-cirrus xserver-xorg-video-dummy xserver-xorg-video-fbdev 
  xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-intel xserver-xorg-video-mach64 xserver-xorg-video-mga 
  xserver-xorg-video-neomagic xserver-xorg-video-nv xserver-xorg-video-openchrome xserver-xorg-video-r128 
  xserver-xorg-video-radeon xserver-xorg-video-radeonhd xserver-xorg-video-rendition xserver-xorg-video-s3 
  xserver-xorg-video-s3virge xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis 
  xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident xserver-xorg-video-tseng 
  xserver-xorg-video-vesa xserver-xorg-video-vmware xserver-xorg-video-voodoo xterm zlib1g 
Les paquets suivants sont RECOMMANDÉS mais ne seront pas installés :
  bzip2 gamin gcc gdm-themes hddtemp libapache2-reload-perl libatk1.0-data libatm1 libbsd-resource-perl libc6-dev libfribidi0 
  libglib2.0-data libgtk2.0-bin libhtml-format-perl libio-socket-inet6-perl liblog4j1.2-java-gcj libmail-spf-perl 
  libmailtools-perl libnss-lwres libpam-gnome-keyring libpaper-utils lm-sensors make nmap openoffice.org-emailmerge 
  openoffice.org-filter-binfilter pconf-detect rc re2c uuid-runtime wdiff xfwm4-themes xnest xserver-xephyr zenity 
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] 
&lt;/code&gt;

En fonction de votre connexion ça peut prendre très longtemps, et être interrompu (à 500KB/s une demi-heure à 50 KB/s c'est plusieurs heures...).
Un conseil, si vous n'êtes pas sûr de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

&lt;code&gt;
# aptitude -d safe-upgrade
...
 762Mo téléchargés en 1h9min37s (182ko/s)                                                          
Lecture des listes de paquets... Fait             
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait
&lt;/code&gt;

Puis

&lt;code&gt;
# aptitude safe-upgrade
...
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 0o/762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] y
&lt;/code&gt;

=== Déroulement ===

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut, mais prenez le temps de lire tous les messages, et si nécessaire, prenez des notes.

[[Fichier:Snapshot4.jpeg]]

[[Fichier:Snapshot5.jpeg]]

[[Fichier:Snapshot6.jpeg]]

[[Fichier:Snapshot7.jpeg]]

[[Fichier:Snapshot9.jpeg]]

[[Fichier:Snapshot11.jpeg]]

[[Fichier:Snapshot13.jpeg]]

[[Fichier:Snapshot14.jpeg]]

[[Fichier:Snapshot15.jpeg]]

[[Fichier:Snapshot16.jpeg]]

[[Fichier:Snapshot17.jpeg]]

Vous partirez d'une Lenny configurée, et donc de nombreux fichiers de configuration auront été modifiés par vos soins.
Il est judicieux de ne pas écraser vos configurations avec les fichiers par défauts proposés par les &quot;mainteneurs&quot; des paquets.
Vous aurez tout le loisir de regarder les modifications proposées, et ce qu'elles apportent, en regardant dans /usr/share/doc ou dans les contenus de vos deb téléchargés (dans /var/apt/archives)

[[Fichier:Snapshot18.jpeg]]

Sans le téléchargement des fichiers, comptez un peu plus d'une heure pour la mise à niveau

=== finalisation ===

Le safe-upgrade devrait se terminer par ceci :

&lt;code&gt;
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 4 mises à jour restantes [-721].
&lt;/code&gt;

Vous pouvez maintenant lancer un &quot;full-upgrade&quot;

&lt;code&gt;
# aptitude full-upgrade

...

4 paquets mis à jour, 13 nouvellement installés, 2 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 12,1Mo d'archives. Après dépaquetage, 14,3Mo seront utilisés.
Les paquets suivants ont des dépendances non satisfaites :
  libept0: Dépend: libapt-pkg-libc6.7-6-4.6 qui est un paquet virtuel
Les actions suivantes permettront de résoudre ces dépendances :

Supprimer les paquets suivants :
libept0

Le score est de 115

Accepter cette solution ? [Y/n/q/?]y

...

Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 0 mise à jour restante [-4].
&lt;/code&gt;

Si tout s'est bien passé, il ne vous reste plus qu'a redémarrer la machine :

 # reboot

=== Grub2 ===

Si vous étiez sous Grub-legacy vous aurez certainement fait la bascule vers Grub2.

La première &quot;surprise&quot; qui vous attend donc (sauf si vous avez lu ce guide avant...) c'est le menu suivant :

[[Fichier:Snapshot19.jpeg]]

Si vous appuyez sur entrée, cvous serez conduit vers le menu de Grub2.
Cette étape permet de vérifier que Grub2 est bien installé, et de le tester.

[[Fichier:Snapshot20.jpeg]]

Si cela fonctionne, une des premières choses à faire sera de confirmer l'installation de Grub2 en tapant dans une console la commande suivante :

 # upgrade-from-grub-legacy

=== LVM ===

Problème rencontré lors de la mise à niveau avec LVM...
Le système s'est mélangé les pédales dans l'attribution des partitions.
Résultat :

[[Fichier:Snapshot21.jpeg]]

Voici ou se situe le problème :

&lt;code&gt;
$ vdir /dev/l2s/
total 0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 home -&gt; ../dm-5
lrwxrwxrwx 1 root root 7 25 nov.  18:28 root -&gt; ../dm-0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 swap_1 -&gt; ../dm-1
lrwxrwxrwx 1 root root 7 25 nov.  18:28 tmp -&gt; ../dm-4
lrwxrwxrwx 1 root root 7 25 nov.  18:28 usr -&gt; ../dm-2
lrwxrwxrwx 1 root root 7 25 nov.  18:28 var -&gt; ../dm-3
&lt;/code&gt;
&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
# /dev/hda1	/boot	ext2	defaults	0	2
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-1	/usr	ext3	defaults	0	2
# /dev/hdb1	/var	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-3	none	swap	sw	0	0
# /dev/hdc	/media/cdrom0	udf,iso9660	user,noauto	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

Je ne sais pour quelle raison LVM à changé la numérotation des partitions... /usr est passé en dm-1 alors qu'il était en dm-2 et la swap en dm-3 alors qu'elle était être en dm-1
Il suffit de modifier le fichier /etc/fstab pour qu'il reflète à nouveau correctement vos partitions, et le tour est joué :

&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-2	/usr	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-1	none	swap	sw	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

== Bienvenu sur Squeeze ==

 laurent@lenny2squeeze:~$ uname -a
 Linux lenny2squeeze 2.6.32-5-amd64 #1 SMP Sat Oct 30 14:18:21 UTC 2010 x86_64 GNU/Linux

[[Fichier:Snapshot25.jpeg]]

A venir... Upgrade de Squeeze à ????

----
[[Utilisateur:Lol|Lol]] 25 novembre 2010 à 15:55 (EAT)
[[Catégorie:Installation]]</text>
      <sha1>nuglf9nurb7f5fmjysqlueoe7ddcv4d</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2414</id>
      <parentid>2412</parentid>
      <timestamp>2010-11-25T13:54:01Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* De l'espace! */</comment>
      <text xml:space="preserve" bytes="31485">{{sid}}

La mise à niveau de Lenny à Squeeze se précise, nous allons faire ici un rapide résumé des opérations nécessaires à la réussite de cette mise à niveau (upgrade).
LVM est installé sur la machine que nous allons mettre à niveau afin de tester le plus de possibilités.

Avant toute chose, je souhaite faire quelques précisions :
Chaque configuration est propre à chacun, en fonction de ses goûts, de son matériel et de ses connaissances.
Un guide universel n'existe donc pas.

Prévoyez aussi d'avoir du temps devant vous, et d'être au calme.

Nous choisirons d'utiliser aptitude au lieu de apt-get, il est en effet plus exigeant concernant les dépendances, votre mise à niveau sera plus &quot;propre&quot;.

J'ai choisi une Lenny avec toutes les options de tasksel activées afin de faire un tour d'horizon le plus vaste possible des problèmes qui pourraient survenir.
L'environnement graphique est Xfce.

[[Fichier:Snapshot3.jpeg]]

== Pré-requis ==

=== Une bonne sauvegarde ===

Vous n'avez AUCUNE garanties que la mise à niveau se passe bien, alors, quel que soit la méthode que vous emploierez, une sauvegarde est le minimum que vous puissiez faire avant de vous lancer dans l'aventure..

Avec dd, dump ou simplement cp SAUVEGARDEZ !

=== Un système à jour! ===

Le fichier sources.list précédent la mise à niveau :

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org stable main non-free
#deb-src http://www.debian-multimedia.org stable main non-free

# backports
deb http://backports.debian.org/debian-backports lenny-backports main contrib non-free
&lt;/code&gt;

 # aptitude update
 # aptitude safe-upgrade
 # aptitude full-upgrade

=== De l'espace! ===

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition où se trouve /var pour le stockage des paquets téléchargés.

Pour info une mise à jour &quot;lourde&quot; se soldera par le téléchargement d'environ 1Go...

Pour connaitre l’espace libre de votre partition racine :

 $ df -H
 Sys. de fich.          Tail.  Occ.  Disp. %Occ. Monté sur
 '''/dev/dm-0              338M   123M   198M  39% /'''
 tmpfs                  262M      0   262M   0% /lib/init/rw
 udev                    11M   689k   9,8M   7% /dev
 tmpfs                  262M      0   262M   0% /dev/shm
 /dev/hda1              239M    20M   207M   9% /boot
 /dev/dm-5              3,7G    75M   3,4G   3% /home
 /dev/dm-4              317M    11M   290M   4% /tmp
 /dev/dm-1              3,7G   1,7G   1,8G  50% /usr
 '''/dev/hdb1              5,3G   1,1G   4,0G  21% /var'''
 /dev/dm-2              1,8G   876M   818M  52% /media/dm-2

'''Si vous disposez de plus de 50% d’espace libre vous pouvez passer à l'étape suivante'''.

Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Si cela ne suffit toujours pas, il faut envisager d'ajouter un disque à votre système, ou de procéder à un upgrade par étapes successives (en mettant à jour les paquets progressivement et en nettoyant à chaque étape)

=== Les pilotes de la carte Graphique ===

Afin de ne pas avoir de mauvaise surprise avec le serveur X, modifiez votre xorg.conf afin d'utiliser des pilotes Debian.

Eventuellement utilisez les pilotes &quot;vesa&quot;

Dans votre fichier /etc/X11/xorg.conf

&lt;code&gt;
Section &quot;Device&quot;
    Identifier     &quot;Device0&quot;
    Driver         &quot;vesa&quot;
EndSection
&lt;/code&gt;

Si vous êtes sur de vous, n'en faites rien, mais prévoyez une réinstallation des pilotes avant le premier redémarrage.

=== Le fichier sources.list ===

Créons un nouveau sources.list que nous placerons dans /etc/apt/sources.list.d
Nous prenons dors et déjà la bonne habitude d'utiliser ce dossier qui est devenu celui par défaut pour mettre les fichiers contenant les dépôts.

 # nano /etc/apt/sources.list.d/sources.list

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free

# stable security
deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

## stable volatile
## Il n'y a pas de dépôt volatile pour squeeze pour l'instant
## deb http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free
## deb-src http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org squeeze main non-free
#deb-src http://www.debian-multimedia.org squeeze main non-free

# backports
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
&lt;/code&gt;

== Préparation de la mise à niveau ==

Maintenant que nous sommes prêts, nous pouvons lancer l'upgrade :

Mise à jour de la liste des paquets :

 # aptitude update

=== Si vous avez des problèmes de clefs ===

 W: GPG error: http://www.debian-multimedia.org

 # aptitude install debian-backports-keyring
 # aptitude install debian-multimedia-keyring

=== Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]] ===

 E: Dynamic MMap ran out of room

 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaite l'update, il ne doit pas y avoir d'erreurs

 # aptitude update

=== Problèmes de dépendances ===

Vous ne pourrez pas faire le passage de Lenny à Squeeze tant que subsisteront des problèmes de dépendances...

Voici deux exemples de problèmes de dépendances, et la manière de le régler :

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  xfce4-mixer-oss: Est en conflit avec: xfce4-mixer-alsa mais 4.4.2-3 est installé.
  foomatic-db: Est en conflit avec: foomatic-db-hpijs mais 20080211-1 est installé.
  xfce4-mixer-alsa: Est en conflit avec: xfce4-mixer-oss mais 4.4.2-3 doit être installé.

# aptitude install foomatic-db xfce4-mixer-alsa
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Lecture des descriptions de tâches... Fait  
Les NOUVEAUX paquets suivants vont être installés : 
  libopenjpeg2{a} libpoppler5{a} min12xxw{a} pnm2ppa{a} 
Les paquets suivants seront ENLEVÉS : 
  foomatic-db-hpijs{a} 
Les paquets suivants seront mis à jour : 
  fontconfig-config foomatic-db foomatic-db-engine foomatic-filters libfontconfig1 libjpeg62 libxml2 poppler-utils 
8 paquets mis à jour, 4 nouvellement installés, 1 à enlever et 728 non mis à jour.
Il est nécessaire de télécharger 4722ko d'archives. Après dépaquetage, 18,2Mo seront libérés.
Voulez-vous continuer ? [Y/n/?] o
...
État actuel : 728 mises à jour restantes [-8].
&lt;/code&gt;

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  libatlas3gf-base: Est en conflit avec: libblas3gf (&lt; 1.2-5) mais 1.2-2 est installé et a été conservé
                    Est en conflit avec: liblapack3gf (&lt; 3.2.1-4) mais 3.1.1-1 est installé et a été conservé
  rarian-compat: Est en conflit avec: scrollkeeper (&lt; 0.4) mais 0.3.14-16 est installé et a été conservé

# aptitude install libatlas3gf-base scrollkeeper
...
Les actions suivantes permettront de résoudre ces dépendances :

Mettre à jour les paquets suivants :
libblas3gf [1.2-2 (stable, now) -&gt; 1.2-8 (testing)]
liblapack3gf [3.1.1-1 (stable, now) -&gt; 3.2.1-8 (testing)]

Le score est de 70

Accepter cette solution ? [Y/n/q/?] y
...
État actuel : 725 mises à jour restantes [-3].
&lt;/code&gt;

En cas de doute n'hésitez pas à demander un avis [http://forum.debian-fr.org/ sur le forum]

=== stopper le serveur X ===

'''IMPORTANT''' : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

== Lancez la mise à niveau ==

&lt;code&gt;
# aptitude safe-upgrade
...
Les paquets suivants ont été conservés : 
  apt apt-utils aptitude synaptic 
Les NOUVEAUX paquets suivants vont être installés : 
  acpi-fakekey{a} apache2.2-bin{a} aumix{a} aumix-common{a} bluez{a} bluez-alsa{a} bluez-cups{a} bluez-gstreamer{a} 
  browser-plugin-gnash{a} cifs-utils{a} consolekit{a} cpp-4.4{a} cracklib-runtime{a} cups-ppdc{a} dash{a} db4.8-util{a} 
  diffutils{a} dosfstools{a} firmware-linux-free{a} freepats{a} fuse-utils{a} gcc-4.4-base{a} gcj-4.4-base{a} 
  gcj-4.4-jre-lib{a} geoip-database{a} ghostscript-cups{a} gnash{a} gnash-common{a} gnupg-curl{a} grub-pc{a} 
  gstreamer0.10-ffmpeg{a} gstreamer0.10-fluendo-mp3{a} gstreamer0.10-plugins-bad{a} gstreamer0.10-plugins-base{a} gvfs{a} 
  hplip-cups{a} insserv{a} install-info{a} isc-dhcp-client{a} isc-dhcp-common{a} iso-codes{a} keyboard-configuration{a} 
  libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libass4{a} libatasmart4{a} libaudit0{a} libavahi-core7{a} libavcodec52{a} 
  libavformat52{a} libavutil50{a} libbabl-0.0-0{a} libbind9-60{a} libbluetooth3{a} libboost-date-time1.42.0{a} 
  libboost-thread1.42.0{a} libbsd0{a} libburn4{a} libc-bin{a} libc-client2007e{a} libcap-ng0{a} libcdaudio1{a} libcdio10{a} 
  libcdparanoia0{a} libcelt0-0{a} libck-connector0{a} libcolamd2.7.1{a} libcommons-beanutils-java{a} 
  libcommons-collections3-java{a} libcommons-compress-java{a} libcommons-digester-java{a} libcommons-logging-java{a} 
  libcrack2{a} libcupscgi1{a} libcupsdriver1{a} libcupsmime1{a} libcupsppdc1{a} libdatrie1{a} libdb-je-java{a} libdb4.7{a} 
  libdb4.7-java{a} libdb4.7-java-gcj{a} libdb4.8{a} libdc1394-22{a} libdca0{a} libdirac-encoder0{a} libdirectfb-1.2-9{a} 
  libdns66{a} libdrm-intel1{a} libdrm-nouveau1{a} libdrm-radeon1{a} libdvdnav4{a} libdvdread4{a} libeggdbus-1-0{a} libenca0{a} 
  libenchant1c2a{a} libevent-1.4-2{a} libexempi3{a} libexo-common{a} libfaad2{a} libfftw3-3{a} libfile-copy-recursive-perl{a} 
  libflite1{a} libfont-freetype-perl{a} libfuse2{a} libgcj10{a} libgcr0{a} libgdu0{a} libgegl-0.0-0{a} libgeoip1{a} libgif4{a} 
  libgme0{a} libgomp1{a} libgp11-0{a} libgpgme11{a} libgraphicsmagick3{a} libgraphite3{a} libgssapi-krb5-2{a} libgtkglext1{a} 
  libgudev-1.0-0{a} libhpmud0{a} libicu44{a} libicu4j-java{a} libiptcdata0{a} libisc60{a} libisccc60{a} libisccfg60{a} 
  libiso9660-7{a} libisofs6{a} libiw30{a} libjbig2dec0{a} libjpeg-progs{a} libjpeg8{a} libjtidy-java{a} libk5crypto3{a} 
  libkate1{a} libkrb5-3{a} libkrb5support0{a} libltdl7{a} liblucene2-java{a} liblwres60{a} liblzma2{a} libmimic0{a} libmms0{a} 
  libmodplug1{a} libmozjs2d{a} libmpcdec6{a} libmpfr4{a} libmusicbrainz4c2a{a} libmythes-1.2-0{a} libneon27-gnutls{a} 
  libnetaddr-ip-perl{a} libnfnetlink0{a} libnl1{a} libntfs-3g75{a} libntfs10{a} libofa0{a} libonig2{a} libopencore-amrnb0{a} 
  libopencore-amrwb0{a} libopenraw1{a} liborc-0.4-0{a} libossp-uuid16{a} libpam-ck-connector{a} libpam-cracklib{a} 
  libpango-perl{a} libpangomm-1.4-1{a} libparted0debian1{a} libpciaccess0{a} libpolkit-agent-1-0{a} libpolkit-backend-1-0{a} 
  libpolkit-gobject-1-0{a} libpoppler-glib4{a} libpth20{a} libpython2.6{a} libqdbm14{a} libraptor1{a} librasqal2{a} 
  libraw1394-11{a} librdf0{a} libreadline6{a} librtmp0{a} libsane-hpaio{a} libsasl2-modules{a} libservlet2.5-java{a} 
  libsexy2{a} libsgutils2-2{a} libslv2-9{a} libsndfile1{a} libsoundtouch1c2{a} libswscale0{a} libtag1-vanilla{a} libtalloc2{a} 
  libtextcat-data-utf8{a} libtokyocabinet8{a} libudev0{a} libunique-1.0-0{a} libusb-1.0-0{a} libutempter0{a} libuuid-perl{a} 
  libv4l-0{a} libva1{a} libvcdinfo0{a} libvisual-0.4-0{a} libvisual-0.4-plugins{a} libvpx0{a} libwebkit-1.0-2{a} 
  libwebkit-1.0-common{a} libwildmidi1{a} libwnck-common{a} libwnck22{a} libx11-xcb1{a} libx264-104{a} libxcb-atom1{a} 
  libxcb-aux0{a} libxcb-dri2-0{a} libxcb-event1{a} libxfce4menu-0.1-0{a} libxfce4util-bin{a} libxfce4util-common{a} 
  libxfconf-0-2{a} libxklavier16{a} libxml-parser-perl{a} libxres1{a} libzbar0{a} linux-base{a} linux-image-2.6.32-5-amd64{a} 
  lockfile-progs{a} lsb-release{a} mtools{a} ntfsprogs{a} os-prober{a} oss-compat{a} php5-cli{a} php5-suhosin{a} 
  policykit-1{a} policykit-1-gnome{a} postgresql-8.4{a} postgresql-client-8.4{a} postgresql-contrib-8.4{a} 
  postgresql-doc-8.4{a} python-cups{a} python-gconf{a} python-numpy{a} python-pexpect{a} python-reportbug{a} python-webkit{a} 
  python2.6{a} python2.6-minimal{a} ristretto{a} samba-common-bin{a} sane-utils{a} sensible-utils{a} squeeze{a} 
  tango-icon-theme{a} thunar-archive-plugin{a} thunar-volman{a} tsconf{a} ttf-freefont{a} ttf-lyx{a} ttf-sil-gentium{a} 
  ttf-sil-gentium-basic{a} udisks{a} uno-libs3{a} unzip{a} ure{a} x-ttcidfont-conf{a} xdg-user-dirs{a} xfburn{a} 
  xfce-keyboard-shortcuts{a} xfce4-appfinder{a} xfce4-clipman{a} xfce4-datetime-plugin{a} xfce4-dict{a} xfce4-notes{a} 
  xfce4-notifyd{a} xfce4-places-plugin{a} xfce4-power-manager{a} xfce4-power-manager-data{a} xfce4-screenshooter{a} 
  xfce4-settings{a} xfce4-taskmanager{a} xfce4-timer-plugin{a} xfce4-xkb-plugin{a} xfconf{a} xfonts-mathml{a} xinput{a} xli{a} 
  xorg-docs-core{a} xscreensaver{a} xscreensaver-data{a} xserver-common{a} xserver-xorg-video-nouveau{a} xulrunner-1.9.1{a} 
  xz-utils{a} 
Les paquets suivants seront ENLEVÉS : 
  bluez-utils{u} cpp-4.3{u} cupsddk-drivers{u} djvulibre-desktop{u} finger{u} gs-common{u} liba52-0.7.4{u} libamrnb3{u} 
  libamrwb3{u} libaudio2{u} libavahi-compat-libdnssd1{u} libavahi-core5{u} libavc1394-0{u} libavcodec51{u} libbind9-50{u} 
  libbluetooth2{u} libc-client2007b{u} libcap1{u} libcucul0{u} libcupsys2{u} libcurl3{u} libdatrie0{u} libdirac0{u} 
  libdjvulibre21{u} libfaad0{u} libfreebob0{u} libgail-common{u} libgraphviz4{u} libgtkhtml2-0{u} libicu38{u} libiec61883-0{u} 
  libisccc50{u} libisccfg50{u} libiw29{u} libjaxp1.3-java-gcj{u} libltdl3{u} liblwres50{u} libmagick10{u} libmodplug0c2{u} 
  libmozjs1d{u} libmpcdec3{u} libmpfr1ldbl{u} libmysqlclient15off{u} libneon27{u} libntfs-3g31{u} libossp-uuid15{u} 
  libparted1.8-10{u} libpoppler-glib3{u} libpoppler3{u} libqt3-mt{u} libraw1394-8{u} libsensors3{u} libservlet2.4-java{u} 
  libsmbios-bin{u} libsmbios2{u} libssh2-1{u} libsuitesparse-3.1.0{u} libswfdec-0.6-90{u} libtalloc1{u} libvolume-id0{u} 
  libx264-65{u} libxalan2-java{u} libxalan2-java-gcj{u} libxcb-xlib0{u} libxerces2-java{u} libxerces2-java-gcj{u} 
  libxfce4mcs-client3{u} libxfce4mcs-manager3{u} libxtrap6{u} libxxf86misc1{u} mysql-common{u} openoffice.org-writer2latex{u} 
  openssl-blacklist{u} postgresql-8.3{u} postgresql-client-8.3{u} postgresql-contrib-8.3{u} postgresql-doc-8.3{u} 
  python-gtkhtml2{u} python-numeric{u} svgalibg1{u} xfce4-icon-theme{u} xfce4-mcs-manager{u} xfce4-mcs-plugins{u} 
  xfce4-minicmd-plugin{u} xfce4-screenshooter-plugin{u} xserver-xorg-video-cyrix{u} xserver-xorg-video-v4l{u} 
  xserver-xorg-video-vga{u} xulrunner-1.9{u} 
Les paquets suivants seront mis à jour : 
  a2ps acpi acpi-support acpi-support-base acpid adduser alsa-base alsa-utils anacron analog apache2 apache2-doc 
  apache2-mpm-prefork apache2-utils apache2.2-common apmd aspell aspell-fr at avahi-autoipd avahi-daemon base-files 
  base-passwd bash bash-completion bc bind9 bind9-doc bind9-host bind9utils bluetooth bsd-mailx bsdmainutils bsdutils bsh 
  bsh-gcj busybox ca-certificates console-common console-data console-setup console-terminus console-tools coreutils cpio cpp 
  cpufrequtils cron cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk dbus dbus-x11 dc debconf debconf-i18n 
  debian-archive-keyring debian-faq debianutils deborphan defoma desktop-base desktop-file-utils dhcp3-client dhcp3-common 
  dialog dictionaries-common diff disk-manager dmidecode dmsetup dnsutils doc-debian docbook-xml dpkg e2fslibs e2fsprogs ed 
  eject esound-common exim4 exim4-base exim4-config exim4-daemon-light exo-utils fastjar file findutils fontconfig foo2zjs 
  foomatic-db-gutenprint foomatic-filters-ppds foomatic-gui fortune-mod fortunes-min ftp gcc-4.3-base gconf2 gconf2-common gdm 
  gettext-base ghostscript gimp gimp-data gksu gnome-keyring gnupg gparted gpgv grep groff-base grub grub-common gsfonts 
  gtk2-engines-xfce gzip hal hal-info hdparm hibernate hicolor-icon-theme hostname hpijs hplip hplip-data iamerican ibritish 
  iceweasel iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint info initramfs-tools initscripts installation-report iproute 
  iptables iputils-ping ispell java-common kerneloops klibc-utils laptop-detect less libaa1 libacl1 libapache2-mod-perl2 
  libapache2-mod-php5 libapache2-mod-python libapm1 libapr1 libaprutil1 libart-2.0-2 libasound2 libaspell15 libatk1.0-0 
  libattr1 libaudiofile0 libavahi-client3 libavahi-common-data libavahi-common3 libavahi-glib1 libavutil49 libbcel-java 
  libblkid1 libbonobo2-0 libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i386 libcaca0 
  libcairo-perl libcairo2 libcairomm-1.0-1 libcap2 libcomerr2 libconsole libcpufreq0 libcroco3 libcups2 libcupsimage2 
  libcurl3-gnutls libcwidget3 libdaemon0 libdb4.6 libdbus-1-3 libdbus-glib-1-2 libdevel-symdump-perl libdevmapper1.02.1 
  libdigest-hmac-perl libdigest-sha1-perl libdirectfb-extra libdmx1 libdrm2 libedit2 libesd0 libexif12 libexo-0.3-0 libexpat1 
  libfaac0 libfam0 libffi5 libflac8 libfontenc1 libfreetype6 libfs6 libgail18 libgc1c2 libgcc1 libgcj-bc libgcj-common 
  libgconf2-4 libgcrypt11 libgd2-noxpm libgdbm3 libgfortran3 libgimp2.0 libgksu2-0 libgl1-mesa-dri libgl1-mesa-glx libglade2-0 
  libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgmp3c2 libgnome-keyring0 libgnome2-0 libgnome2-canvas-perl 
  libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0 libgnomecanvas2-common libgnomeui-0 libgnomeui-common 
  libgnomevfs2-0 libgnomevfs2-common libgnomevfs2-extra libgnutls26 libgpg-error0 libgphoto2-2 libgphoto2-port0 libgpm2 libgs8 
  libgsf-1-114 libgsf-1-common libgsm1 libgssglue1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0 
  libgtk2.0-common libgtkmm-2.4-1c2a libgtop2-7 libgtop2-common libgutenprint2 libhal-storage1 libhal1 libhsqldb-java 
  libhsqldb-java-gcj libhtml-parser-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libice6 libidl0 libidn11 libieee1284-3 
  libijs-0.35 libilmbase6 libjack0 libjasper1 libjaxp1.3-java libjline-java libkeyutils1 libklibc libkrb53 liblcms1 
  libldap-2.4-2 liblocale-gettext-perl liblockfile1 liblog4j1.2-java liblzo2-2 libmad0 libmagic1 libmng1 libmp3lame0 
  libmx4j-java libncurses5 libncursesw5 libnet-dns-perl libnewt0.52 libnfsidmap2 libnotify1 libnspr4-0d libnss-mdns libnss3-1d 
  libogg0 liboil0.3 libopenexr6 liborbit2 libpam-modules libpam-runtime libpam0g libpango1.0-0 libpango1.0-common libpaper1 
  libpci3 libpcre3 libpcsclite1 libperl5.10 libpixman-1-0 libpng12-0 libpopt0 libpostproc51 libpq5 libpulse0 libreadline5 
  librecode0 libregexp-java librpcsecgss3 librsvg2-2 librsvg2-common libsane libsane-extras libsasl2-2 libschroedinger-1.0-0 
  libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsensors4 libsepol1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 
  libsmbclient libsnmp-base libsnmp15 libsocket6-perl libsoup2.4-1 libsqlite3-0 libss2 libssl0.9.8 libstartup-notification0 
  libstdc++6 libsvga1 libsysfs2 libtag1c2a libtagc0 libtasn1-3 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl 
  libthai-data libthai0 libtheora0 libthunar-vfs-1-2 libtiff4 libts-0.0-0 liburi-perl libusb-0.1-4 libuuid1 libvorbis0a 
  libvorbisenc2 libvte-common libvte9 libwavpack1 libwbclient0 libwmf0.2-7 libwpg-0.1-1 libwrap0 libwww-perl libx11-6 
  libx11-data libx86-1 libxau6 libxaw7 libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xv0 libxcb1 
  libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfce4util4 libxfcegui4-4 libxfixes3 libxfont1 libxft2 libxi6 
  libxine1 libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins libxine1-plugins libxine1-x libxinerama1 
  libxkbfile1 libxmu6 libxmuu1 libxpm4 libxrandr2 libxrender1 libxslt1.1 libxss1 libxt6 libxtst6 libxv1 libxvidcore4 libxvmc1 
  libxxf86dga1 libxxf86vm1 linux-image-2.6-amd64 linux-sound-base locales login logrotate lp-solve lsb-base lsof lvm2 lwresd 
  m4 mailagent makedev man-db manpages manpages-fr manpages-fr-extra mawk mc menu mime-support mktemp mlocate mlock 
  module-init-tools mount mousepad mutt myspell-en-us myspell-fr-gut nano ncurses-base ncurses-bin ncurses-term net-tools 
  netatalk netbase nfs-common nfs-kernel-server ntfs-3g nvclock openbsd-inetd openoffice.org openoffice.org-base 
  openoffice.org-base-core openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw 
  openoffice.org-filter-mobiledev openoffice.org-gcj openoffice.org-gtk openoffice.org-help-en-us openoffice.org-help-fr 
  openoffice.org-impress openoffice.org-java-common openoffice.org-l10n-fr openoffice.org-math openoffice.org-officebean 
  openoffice.org-report-builder-bin openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-thesaurus-en-us 
  openoffice.org-writer openprinting-ppds openssh-client openssh-server openssl orage passwd patch pciutils pcmciautils perl 
  perl-base perl-modules php5-common pm-utils popularity-contest portmap postgresql postgresql-client postgresql-client-common 
  postgresql-common postgresql-contrib postgresql-doc powermgmt-base powertop printconf procmail procps psmisc psutils python 
  python-cairo python-central python-dbus python-foomatic python-glade2 python-gnome2 python-gobject python-gtk2 
  python-imaging python-ipy python-minimal python-pyorbit python-support python2.5 python2.5-minimal qpopper radeontool 
  readline-common reportbug rsyslog sa-exim samba samba-common samba-doc sed sgml-base sgml-data shared-mime-info 
  smartmontools smbclient smbfs spamassassin spamc ssl-cert sudo swat swfdec-mozilla sysv-rc sysvinit sysvinit-utils tar 
  tasksel tasksel-data tcpd texinfo thunar thunar-data thunar-media-tags-plugin time toshset traceroute ttf-dejavu 
  ttf-dejavu-core ttf-dejavu-extra ttf-liberation ttf-opensymbol tzdata ucf udev update-inetd usbutils util-linux uw-imapd 
  vbetool vim-common vim-tiny w3m wamerican wfrench wget whiptail whois winbind wireless-tools wpasupplicant x11-apps 
  x11-common x11-session-utils x11-utils x11-xfs-utils x11-xkb-utils x11-xserver-utils xauth xbitmaps xdg-utils xfce4 
  xfce4-battery-plugin xfce4-clipman-plugin xfce4-cpufreq-plugin xfce4-cpugraph-plugin xfce4-diskperf-plugin 
  xfce4-fsguard-plugin xfce4-genmon-plugin xfce4-goodies xfce4-mailwatch-plugin xfce4-mixer xfce4-mount-plugin 
  xfce4-netload-plugin xfce4-notes-plugin xfce4-panel xfce4-quicklauncher-plugin xfce4-sensors-plugin xfce4-session 
  xfce4-smartbookmark-plugin xfce4-systemload-plugin xfce4-terminal xfce4-utils xfce4-verve-plugin xfce4-wavelan-plugin 
  xfce4-weather-plugin xfdesktop4 xfdesktop4-data xfonts-100dpi xfonts-75dpi xfonts-base xfonts-encodings xfonts-intl-european 
  xfonts-scalable xfonts-utils xfprint4 xfwm4 xinit xkb-data xml-core xorg xsane xsane-common xserver-xorg xserver-xorg-core 
  xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd xserver-xorg-input-mouse xserver-xorg-input-synaptics 
  xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati 
  xserver-xorg-video-chips xserver-xorg-video-cirrus xserver-xorg-video-dummy xserver-xorg-video-fbdev 
  xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-intel xserver-xorg-video-mach64 xserver-xorg-video-mga 
  xserver-xorg-video-neomagic xserver-xorg-video-nv xserver-xorg-video-openchrome xserver-xorg-video-r128 
  xserver-xorg-video-radeon xserver-xorg-video-radeonhd xserver-xorg-video-rendition xserver-xorg-video-s3 
  xserver-xorg-video-s3virge xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis 
  xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident xserver-xorg-video-tseng 
  xserver-xorg-video-vesa xserver-xorg-video-vmware xserver-xorg-video-voodoo xterm zlib1g 
Les paquets suivants sont RECOMMANDÉS mais ne seront pas installés :
  bzip2 gamin gcc gdm-themes hddtemp libapache2-reload-perl libatk1.0-data libatm1 libbsd-resource-perl libc6-dev libfribidi0 
  libglib2.0-data libgtk2.0-bin libhtml-format-perl libio-socket-inet6-perl liblog4j1.2-java-gcj libmail-spf-perl 
  libmailtools-perl libnss-lwres libpam-gnome-keyring libpaper-utils lm-sensors make nmap openoffice.org-emailmerge 
  openoffice.org-filter-binfilter pconf-detect rc re2c uuid-runtime wdiff xfwm4-themes xnest xserver-xephyr zenity 
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] 
&lt;/code&gt;

En fonction de votre connexion ça peut prendre très longtemps, et être interrompu (à 500KB/s une demi-heure à 50 KB/s c'est plusieurs heures...).
Un conseil, si vous n'êtes pas sûr de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

&lt;code&gt;
# aptitude -d safe-upgrade
...
 762Mo téléchargés en 1h9min37s (182ko/s)                                                          
Lecture des listes de paquets... Fait             
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait
&lt;/code&gt;

Puis

&lt;code&gt;
# aptitude safe-upgrade
...
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 0o/762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] y
&lt;/code&gt;

=== Déroulement ===

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut, mais prenez le temps de lire tous les messages, et si nécessaire, prenez des notes.

[[Fichier:Snapshot4.jpeg]]

[[Fichier:Snapshot5.jpeg]]

[[Fichier:Snapshot6.jpeg]]

[[Fichier:Snapshot7.jpeg]]

[[Fichier:Snapshot9.jpeg]]

[[Fichier:Snapshot11.jpeg]]

[[Fichier:Snapshot13.jpeg]]

[[Fichier:Snapshot14.jpeg]]

[[Fichier:Snapshot15.jpeg]]

[[Fichier:Snapshot16.jpeg]]

[[Fichier:Snapshot17.jpeg]]

Vous partirez d'une Lenny configurée, et donc de nombreux fichiers de configuration auront été modifiés par vos soins.
Il est judicieux de ne pas écraser vos configurations avec les fichiers par défauts proposés par les &quot;mainteneurs&quot; des paquets.
Vous aurez tout le loisir de regarder les modifications proposées, et ce qu'elles apportent, en regardant dans /usr/share/doc ou dans les contenus de vos deb téléchargés (dans /var/apt/archives)

[[Fichier:Snapshot18.jpeg]]

Sans le téléchargement des fichiers, comptez un peu plus d'une heure pour la mise à niveau

=== finalisation ===

Le safe-upgrade devrait se terminer par ceci :

&lt;code&gt;
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 4 mises à jour restantes [-721].
&lt;/code&gt;

Vous pouvez maintenant lancer un &quot;full-upgrade&quot;

&lt;code&gt;
# aptitude full-upgrade

...

4 paquets mis à jour, 13 nouvellement installés, 2 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 12,1Mo d'archives. Après dépaquetage, 14,3Mo seront utilisés.
Les paquets suivants ont des dépendances non satisfaites :
  libept0: Dépend: libapt-pkg-libc6.7-6-4.6 qui est un paquet virtuel
Les actions suivantes permettront de résoudre ces dépendances :

Supprimer les paquets suivants :
libept0

Le score est de 115

Accepter cette solution ? [Y/n/q/?]y

...

Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 0 mise à jour restante [-4].
&lt;/code&gt;

Si tout s'est bien passé, il ne vous reste plus qu'a redémarrer la machine :

 # reboot

=== Grub2 ===

Si vous étiez sous Grub-legacy vous aurez certainement fait la bascule vers Grub2.

La première &quot;surprise&quot; qui vous attend donc (sauf si vous avez lu ce guide avant...) c'est le menu suivant :

[[Fichier:Snapshot19.jpeg]]

Si vous appuyez sur entrée, cvous serez conduit vers le menu de Grub2.
Cette étape permet de vérifier que Grub2 est bien installé, et de le tester.

[[Fichier:Snapshot20.jpeg]]

Si cela fonctionne, une des premières choses à faire sera de confirmer l'installation de Grub2 en tapant dans une console la commande suivante :

 # upgrade-from-grub-legacy

=== LVM ===

Problème rencontré lors de la mise à niveau avec LVM...
Le système s'est mélangé les pédales dans l'attribution des partitions.
Résultat :

[[Fichier:Snapshot21.jpeg]]

Voici ou se situe le problème :

&lt;code&gt;
$ vdir /dev/l2s/
total 0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 home -&gt; ../dm-5
lrwxrwxrwx 1 root root 7 25 nov.  18:28 root -&gt; ../dm-0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 swap_1 -&gt; ../dm-1
lrwxrwxrwx 1 root root 7 25 nov.  18:28 tmp -&gt; ../dm-4
lrwxrwxrwx 1 root root 7 25 nov.  18:28 usr -&gt; ../dm-2
lrwxrwxrwx 1 root root 7 25 nov.  18:28 var -&gt; ../dm-3
&lt;/code&gt;
&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
# /dev/hda1	/boot	ext2	defaults	0	2
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-1	/usr	ext3	defaults	0	2
# /dev/hdb1	/var	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-3	none	swap	sw	0	0
# /dev/hdc	/media/cdrom0	udf,iso9660	user,noauto	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

Je ne sais pour quelle raison LVM à changé la numérotation des partitions... /usr est passé en dm-1 alors qu'il était en dm-2 et la swap en dm-3 alors qu'elle était être en dm-1
Il suffit de modifier le fichier /etc/fstab pour qu'il reflète à nouveau correctement vos partitions, et le tour est joué :

&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-2	/usr	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-1	none	swap	sw	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

== Bienvenu sur Squeeze ==

 laurent@lenny2squeeze:~$ uname -a
 Linux lenny2squeeze 2.6.32-5-amd64 #1 SMP Sat Oct 30 14:18:21 UTC 2010 x86_64 GNU/Linux

[[Fichier:Snapshot25.jpeg]]

A venir... Upgrade de Squeeze à ????

----
[[Utilisateur:Lol|Lol]] 25 novembre 2010 à 15:55 (EAT)
[[Catégorie:Installation]]</text>
      <sha1>kbzyjgtv2u4m5xida6hcpfahqs6x2m3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2415</id>
      <parentid>2414</parentid>
      <timestamp>2010-11-25T13:57:16Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Le fichier sources.list */</comment>
      <text xml:space="preserve" bytes="31486">{{sid}}

La mise à niveau de Lenny à Squeeze se précise, nous allons faire ici un rapide résumé des opérations nécessaires à la réussite de cette mise à niveau (upgrade).
LVM est installé sur la machine que nous allons mettre à niveau afin de tester le plus de possibilités.

Avant toute chose, je souhaite faire quelques précisions :
Chaque configuration est propre à chacun, en fonction de ses goûts, de son matériel et de ses connaissances.
Un guide universel n'existe donc pas.

Prévoyez aussi d'avoir du temps devant vous, et d'être au calme.

Nous choisirons d'utiliser aptitude au lieu de apt-get, il est en effet plus exigeant concernant les dépendances, votre mise à niveau sera plus &quot;propre&quot;.

J'ai choisi une Lenny avec toutes les options de tasksel activées afin de faire un tour d'horizon le plus vaste possible des problèmes qui pourraient survenir.
L'environnement graphique est Xfce.

[[Fichier:Snapshot3.jpeg]]

== Pré-requis ==

=== Une bonne sauvegarde ===

Vous n'avez AUCUNE garanties que la mise à niveau se passe bien, alors, quel que soit la méthode que vous emploierez, une sauvegarde est le minimum que vous puissiez faire avant de vous lancer dans l'aventure..

Avec dd, dump ou simplement cp SAUVEGARDEZ !

=== Un système à jour! ===

Le fichier sources.list précédent la mise à niveau :

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org stable main non-free
#deb-src http://www.debian-multimedia.org stable main non-free

# backports
deb http://backports.debian.org/debian-backports lenny-backports main contrib non-free
&lt;/code&gt;

 # aptitude update
 # aptitude safe-upgrade
 # aptitude full-upgrade

=== De l'espace! ===

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition où se trouve /var pour le stockage des paquets téléchargés.

Pour info une mise à jour &quot;lourde&quot; se soldera par le téléchargement d'environ 1Go...

Pour connaitre l’espace libre de votre partition racine :

 $ df -H
 Sys. de fich.          Tail.  Occ.  Disp. %Occ. Monté sur
 '''/dev/dm-0              338M   123M   198M  39% /'''
 tmpfs                  262M      0   262M   0% /lib/init/rw
 udev                    11M   689k   9,8M   7% /dev
 tmpfs                  262M      0   262M   0% /dev/shm
 /dev/hda1              239M    20M   207M   9% /boot
 /dev/dm-5              3,7G    75M   3,4G   3% /home
 /dev/dm-4              317M    11M   290M   4% /tmp
 /dev/dm-1              3,7G   1,7G   1,8G  50% /usr
 '''/dev/hdb1              5,3G   1,1G   4,0G  21% /var'''
 /dev/dm-2              1,8G   876M   818M  52% /media/dm-2

'''Si vous disposez de plus de 50% d’espace libre vous pouvez passer à l'étape suivante'''.

Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Si cela ne suffit toujours pas, il faut envisager d'ajouter un disque à votre système, ou de procéder à un upgrade par étapes successives (en mettant à jour les paquets progressivement et en nettoyant à chaque étape)

=== Les pilotes de la carte Graphique ===

Afin de ne pas avoir de mauvaise surprise avec le serveur X, modifiez votre xorg.conf afin d'utiliser des pilotes Debian.

Eventuellement utilisez les pilotes &quot;vesa&quot;

Dans votre fichier /etc/X11/xorg.conf

&lt;code&gt;
Section &quot;Device&quot;
    Identifier     &quot;Device0&quot;
    Driver         &quot;vesa&quot;
EndSection
&lt;/code&gt;

Si vous êtes sur de vous, n'en faites rien, mais prévoyez une réinstallation des pilotes avant le premier redémarrage.

=== Le fichier sources.list ===

Créons un nouveau sources.list que nous placerons dans /etc/apt/sources.list.d
Nous prenons dores et déjà la bonne habitude d'utiliser ce dossier qui est devenu celui par défaut pour mettre les fichiers contenant les dépôts.

 # nano /etc/apt/sources.list.d/sources.list

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free

# stable security
deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

## stable volatile
## Il n'y a pas de dépôt volatile pour squeeze pour l'instant
## deb http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free
## deb-src http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org squeeze main non-free
#deb-src http://www.debian-multimedia.org squeeze main non-free

# backports
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
&lt;/code&gt;

== Préparation de la mise à niveau ==

Maintenant que nous sommes prêts, nous pouvons lancer l'upgrade :

Mise à jour de la liste des paquets :

 # aptitude update

=== Si vous avez des problèmes de clefs ===

 W: GPG error: http://www.debian-multimedia.org

 # aptitude install debian-backports-keyring
 # aptitude install debian-multimedia-keyring

=== Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]] ===

 E: Dynamic MMap ran out of room

 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaite l'update, il ne doit pas y avoir d'erreurs

 # aptitude update

=== Problèmes de dépendances ===

Vous ne pourrez pas faire le passage de Lenny à Squeeze tant que subsisteront des problèmes de dépendances...

Voici deux exemples de problèmes de dépendances, et la manière de le régler :

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  xfce4-mixer-oss: Est en conflit avec: xfce4-mixer-alsa mais 4.4.2-3 est installé.
  foomatic-db: Est en conflit avec: foomatic-db-hpijs mais 20080211-1 est installé.
  xfce4-mixer-alsa: Est en conflit avec: xfce4-mixer-oss mais 4.4.2-3 doit être installé.

# aptitude install foomatic-db xfce4-mixer-alsa
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Lecture des descriptions de tâches... Fait  
Les NOUVEAUX paquets suivants vont être installés : 
  libopenjpeg2{a} libpoppler5{a} min12xxw{a} pnm2ppa{a} 
Les paquets suivants seront ENLEVÉS : 
  foomatic-db-hpijs{a} 
Les paquets suivants seront mis à jour : 
  fontconfig-config foomatic-db foomatic-db-engine foomatic-filters libfontconfig1 libjpeg62 libxml2 poppler-utils 
8 paquets mis à jour, 4 nouvellement installés, 1 à enlever et 728 non mis à jour.
Il est nécessaire de télécharger 4722ko d'archives. Après dépaquetage, 18,2Mo seront libérés.
Voulez-vous continuer ? [Y/n/?] o
...
État actuel : 728 mises à jour restantes [-8].
&lt;/code&gt;

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  libatlas3gf-base: Est en conflit avec: libblas3gf (&lt; 1.2-5) mais 1.2-2 est installé et a été conservé
                    Est en conflit avec: liblapack3gf (&lt; 3.2.1-4) mais 3.1.1-1 est installé et a été conservé
  rarian-compat: Est en conflit avec: scrollkeeper (&lt; 0.4) mais 0.3.14-16 est installé et a été conservé

# aptitude install libatlas3gf-base scrollkeeper
...
Les actions suivantes permettront de résoudre ces dépendances :

Mettre à jour les paquets suivants :
libblas3gf [1.2-2 (stable, now) -&gt; 1.2-8 (testing)]
liblapack3gf [3.1.1-1 (stable, now) -&gt; 3.2.1-8 (testing)]

Le score est de 70

Accepter cette solution ? [Y/n/q/?] y
...
État actuel : 725 mises à jour restantes [-3].
&lt;/code&gt;

En cas de doute n'hésitez pas à demander un avis [http://forum.debian-fr.org/ sur le forum]

=== stopper le serveur X ===

'''IMPORTANT''' : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

== Lancez la mise à niveau ==

&lt;code&gt;
# aptitude safe-upgrade
...
Les paquets suivants ont été conservés : 
  apt apt-utils aptitude synaptic 
Les NOUVEAUX paquets suivants vont être installés : 
  acpi-fakekey{a} apache2.2-bin{a} aumix{a} aumix-common{a} bluez{a} bluez-alsa{a} bluez-cups{a} bluez-gstreamer{a} 
  browser-plugin-gnash{a} cifs-utils{a} consolekit{a} cpp-4.4{a} cracklib-runtime{a} cups-ppdc{a} dash{a} db4.8-util{a} 
  diffutils{a} dosfstools{a} firmware-linux-free{a} freepats{a} fuse-utils{a} gcc-4.4-base{a} gcj-4.4-base{a} 
  gcj-4.4-jre-lib{a} geoip-database{a} ghostscript-cups{a} gnash{a} gnash-common{a} gnupg-curl{a} grub-pc{a} 
  gstreamer0.10-ffmpeg{a} gstreamer0.10-fluendo-mp3{a} gstreamer0.10-plugins-bad{a} gstreamer0.10-plugins-base{a} gvfs{a} 
  hplip-cups{a} insserv{a} install-info{a} isc-dhcp-client{a} isc-dhcp-common{a} iso-codes{a} keyboard-configuration{a} 
  libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libass4{a} libatasmart4{a} libaudit0{a} libavahi-core7{a} libavcodec52{a} 
  libavformat52{a} libavutil50{a} libbabl-0.0-0{a} libbind9-60{a} libbluetooth3{a} libboost-date-time1.42.0{a} 
  libboost-thread1.42.0{a} libbsd0{a} libburn4{a} libc-bin{a} libc-client2007e{a} libcap-ng0{a} libcdaudio1{a} libcdio10{a} 
  libcdparanoia0{a} libcelt0-0{a} libck-connector0{a} libcolamd2.7.1{a} libcommons-beanutils-java{a} 
  libcommons-collections3-java{a} libcommons-compress-java{a} libcommons-digester-java{a} libcommons-logging-java{a} 
  libcrack2{a} libcupscgi1{a} libcupsdriver1{a} libcupsmime1{a} libcupsppdc1{a} libdatrie1{a} libdb-je-java{a} libdb4.7{a} 
  libdb4.7-java{a} libdb4.7-java-gcj{a} libdb4.8{a} libdc1394-22{a} libdca0{a} libdirac-encoder0{a} libdirectfb-1.2-9{a} 
  libdns66{a} libdrm-intel1{a} libdrm-nouveau1{a} libdrm-radeon1{a} libdvdnav4{a} libdvdread4{a} libeggdbus-1-0{a} libenca0{a} 
  libenchant1c2a{a} libevent-1.4-2{a} libexempi3{a} libexo-common{a} libfaad2{a} libfftw3-3{a} libfile-copy-recursive-perl{a} 
  libflite1{a} libfont-freetype-perl{a} libfuse2{a} libgcj10{a} libgcr0{a} libgdu0{a} libgegl-0.0-0{a} libgeoip1{a} libgif4{a} 
  libgme0{a} libgomp1{a} libgp11-0{a} libgpgme11{a} libgraphicsmagick3{a} libgraphite3{a} libgssapi-krb5-2{a} libgtkglext1{a} 
  libgudev-1.0-0{a} libhpmud0{a} libicu44{a} libicu4j-java{a} libiptcdata0{a} libisc60{a} libisccc60{a} libisccfg60{a} 
  libiso9660-7{a} libisofs6{a} libiw30{a} libjbig2dec0{a} libjpeg-progs{a} libjpeg8{a} libjtidy-java{a} libk5crypto3{a} 
  libkate1{a} libkrb5-3{a} libkrb5support0{a} libltdl7{a} liblucene2-java{a} liblwres60{a} liblzma2{a} libmimic0{a} libmms0{a} 
  libmodplug1{a} libmozjs2d{a} libmpcdec6{a} libmpfr4{a} libmusicbrainz4c2a{a} libmythes-1.2-0{a} libneon27-gnutls{a} 
  libnetaddr-ip-perl{a} libnfnetlink0{a} libnl1{a} libntfs-3g75{a} libntfs10{a} libofa0{a} libonig2{a} libopencore-amrnb0{a} 
  libopencore-amrwb0{a} libopenraw1{a} liborc-0.4-0{a} libossp-uuid16{a} libpam-ck-connector{a} libpam-cracklib{a} 
  libpango-perl{a} libpangomm-1.4-1{a} libparted0debian1{a} libpciaccess0{a} libpolkit-agent-1-0{a} libpolkit-backend-1-0{a} 
  libpolkit-gobject-1-0{a} libpoppler-glib4{a} libpth20{a} libpython2.6{a} libqdbm14{a} libraptor1{a} librasqal2{a} 
  libraw1394-11{a} librdf0{a} libreadline6{a} librtmp0{a} libsane-hpaio{a} libsasl2-modules{a} libservlet2.5-java{a} 
  libsexy2{a} libsgutils2-2{a} libslv2-9{a} libsndfile1{a} libsoundtouch1c2{a} libswscale0{a} libtag1-vanilla{a} libtalloc2{a} 
  libtextcat-data-utf8{a} libtokyocabinet8{a} libudev0{a} libunique-1.0-0{a} libusb-1.0-0{a} libutempter0{a} libuuid-perl{a} 
  libv4l-0{a} libva1{a} libvcdinfo0{a} libvisual-0.4-0{a} libvisual-0.4-plugins{a} libvpx0{a} libwebkit-1.0-2{a} 
  libwebkit-1.0-common{a} libwildmidi1{a} libwnck-common{a} libwnck22{a} libx11-xcb1{a} libx264-104{a} libxcb-atom1{a} 
  libxcb-aux0{a} libxcb-dri2-0{a} libxcb-event1{a} libxfce4menu-0.1-0{a} libxfce4util-bin{a} libxfce4util-common{a} 
  libxfconf-0-2{a} libxklavier16{a} libxml-parser-perl{a} libxres1{a} libzbar0{a} linux-base{a} linux-image-2.6.32-5-amd64{a} 
  lockfile-progs{a} lsb-release{a} mtools{a} ntfsprogs{a} os-prober{a} oss-compat{a} php5-cli{a} php5-suhosin{a} 
  policykit-1{a} policykit-1-gnome{a} postgresql-8.4{a} postgresql-client-8.4{a} postgresql-contrib-8.4{a} 
  postgresql-doc-8.4{a} python-cups{a} python-gconf{a} python-numpy{a} python-pexpect{a} python-reportbug{a} python-webkit{a} 
  python2.6{a} python2.6-minimal{a} ristretto{a} samba-common-bin{a} sane-utils{a} sensible-utils{a} squeeze{a} 
  tango-icon-theme{a} thunar-archive-plugin{a} thunar-volman{a} tsconf{a} ttf-freefont{a} ttf-lyx{a} ttf-sil-gentium{a} 
  ttf-sil-gentium-basic{a} udisks{a} uno-libs3{a} unzip{a} ure{a} x-ttcidfont-conf{a} xdg-user-dirs{a} xfburn{a} 
  xfce-keyboard-shortcuts{a} xfce4-appfinder{a} xfce4-clipman{a} xfce4-datetime-plugin{a} xfce4-dict{a} xfce4-notes{a} 
  xfce4-notifyd{a} xfce4-places-plugin{a} xfce4-power-manager{a} xfce4-power-manager-data{a} xfce4-screenshooter{a} 
  xfce4-settings{a} xfce4-taskmanager{a} xfce4-timer-plugin{a} xfce4-xkb-plugin{a} xfconf{a} xfonts-mathml{a} xinput{a} xli{a} 
  xorg-docs-core{a} xscreensaver{a} xscreensaver-data{a} xserver-common{a} xserver-xorg-video-nouveau{a} xulrunner-1.9.1{a} 
  xz-utils{a} 
Les paquets suivants seront ENLEVÉS : 
  bluez-utils{u} cpp-4.3{u} cupsddk-drivers{u} djvulibre-desktop{u} finger{u} gs-common{u} liba52-0.7.4{u} libamrnb3{u} 
  libamrwb3{u} libaudio2{u} libavahi-compat-libdnssd1{u} libavahi-core5{u} libavc1394-0{u} libavcodec51{u} libbind9-50{u} 
  libbluetooth2{u} libc-client2007b{u} libcap1{u} libcucul0{u} libcupsys2{u} libcurl3{u} libdatrie0{u} libdirac0{u} 
  libdjvulibre21{u} libfaad0{u} libfreebob0{u} libgail-common{u} libgraphviz4{u} libgtkhtml2-0{u} libicu38{u} libiec61883-0{u} 
  libisccc50{u} libisccfg50{u} libiw29{u} libjaxp1.3-java-gcj{u} libltdl3{u} liblwres50{u} libmagick10{u} libmodplug0c2{u} 
  libmozjs1d{u} libmpcdec3{u} libmpfr1ldbl{u} libmysqlclient15off{u} libneon27{u} libntfs-3g31{u} libossp-uuid15{u} 
  libparted1.8-10{u} libpoppler-glib3{u} libpoppler3{u} libqt3-mt{u} libraw1394-8{u} libsensors3{u} libservlet2.4-java{u} 
  libsmbios-bin{u} libsmbios2{u} libssh2-1{u} libsuitesparse-3.1.0{u} libswfdec-0.6-90{u} libtalloc1{u} libvolume-id0{u} 
  libx264-65{u} libxalan2-java{u} libxalan2-java-gcj{u} libxcb-xlib0{u} libxerces2-java{u} libxerces2-java-gcj{u} 
  libxfce4mcs-client3{u} libxfce4mcs-manager3{u} libxtrap6{u} libxxf86misc1{u} mysql-common{u} openoffice.org-writer2latex{u} 
  openssl-blacklist{u} postgresql-8.3{u} postgresql-client-8.3{u} postgresql-contrib-8.3{u} postgresql-doc-8.3{u} 
  python-gtkhtml2{u} python-numeric{u} svgalibg1{u} xfce4-icon-theme{u} xfce4-mcs-manager{u} xfce4-mcs-plugins{u} 
  xfce4-minicmd-plugin{u} xfce4-screenshooter-plugin{u} xserver-xorg-video-cyrix{u} xserver-xorg-video-v4l{u} 
  xserver-xorg-video-vga{u} xulrunner-1.9{u} 
Les paquets suivants seront mis à jour : 
  a2ps acpi acpi-support acpi-support-base acpid adduser alsa-base alsa-utils anacron analog apache2 apache2-doc 
  apache2-mpm-prefork apache2-utils apache2.2-common apmd aspell aspell-fr at avahi-autoipd avahi-daemon base-files 
  base-passwd bash bash-completion bc bind9 bind9-doc bind9-host bind9utils bluetooth bsd-mailx bsdmainutils bsdutils bsh 
  bsh-gcj busybox ca-certificates console-common console-data console-setup console-terminus console-tools coreutils cpio cpp 
  cpufrequtils cron cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk dbus dbus-x11 dc debconf debconf-i18n 
  debian-archive-keyring debian-faq debianutils deborphan defoma desktop-base desktop-file-utils dhcp3-client dhcp3-common 
  dialog dictionaries-common diff disk-manager dmidecode dmsetup dnsutils doc-debian docbook-xml dpkg e2fslibs e2fsprogs ed 
  eject esound-common exim4 exim4-base exim4-config exim4-daemon-light exo-utils fastjar file findutils fontconfig foo2zjs 
  foomatic-db-gutenprint foomatic-filters-ppds foomatic-gui fortune-mod fortunes-min ftp gcc-4.3-base gconf2 gconf2-common gdm 
  gettext-base ghostscript gimp gimp-data gksu gnome-keyring gnupg gparted gpgv grep groff-base grub grub-common gsfonts 
  gtk2-engines-xfce gzip hal hal-info hdparm hibernate hicolor-icon-theme hostname hpijs hplip hplip-data iamerican ibritish 
  iceweasel iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint info initramfs-tools initscripts installation-report iproute 
  iptables iputils-ping ispell java-common kerneloops klibc-utils laptop-detect less libaa1 libacl1 libapache2-mod-perl2 
  libapache2-mod-php5 libapache2-mod-python libapm1 libapr1 libaprutil1 libart-2.0-2 libasound2 libaspell15 libatk1.0-0 
  libattr1 libaudiofile0 libavahi-client3 libavahi-common-data libavahi-common3 libavahi-glib1 libavutil49 libbcel-java 
  libblkid1 libbonobo2-0 libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i386 libcaca0 
  libcairo-perl libcairo2 libcairomm-1.0-1 libcap2 libcomerr2 libconsole libcpufreq0 libcroco3 libcups2 libcupsimage2 
  libcurl3-gnutls libcwidget3 libdaemon0 libdb4.6 libdbus-1-3 libdbus-glib-1-2 libdevel-symdump-perl libdevmapper1.02.1 
  libdigest-hmac-perl libdigest-sha1-perl libdirectfb-extra libdmx1 libdrm2 libedit2 libesd0 libexif12 libexo-0.3-0 libexpat1 
  libfaac0 libfam0 libffi5 libflac8 libfontenc1 libfreetype6 libfs6 libgail18 libgc1c2 libgcc1 libgcj-bc libgcj-common 
  libgconf2-4 libgcrypt11 libgd2-noxpm libgdbm3 libgfortran3 libgimp2.0 libgksu2-0 libgl1-mesa-dri libgl1-mesa-glx libglade2-0 
  libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgmp3c2 libgnome-keyring0 libgnome2-0 libgnome2-canvas-perl 
  libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0 libgnomecanvas2-common libgnomeui-0 libgnomeui-common 
  libgnomevfs2-0 libgnomevfs2-common libgnomevfs2-extra libgnutls26 libgpg-error0 libgphoto2-2 libgphoto2-port0 libgpm2 libgs8 
  libgsf-1-114 libgsf-1-common libgsm1 libgssglue1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0 
  libgtk2.0-common libgtkmm-2.4-1c2a libgtop2-7 libgtop2-common libgutenprint2 libhal-storage1 libhal1 libhsqldb-java 
  libhsqldb-java-gcj libhtml-parser-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libice6 libidl0 libidn11 libieee1284-3 
  libijs-0.35 libilmbase6 libjack0 libjasper1 libjaxp1.3-java libjline-java libkeyutils1 libklibc libkrb53 liblcms1 
  libldap-2.4-2 liblocale-gettext-perl liblockfile1 liblog4j1.2-java liblzo2-2 libmad0 libmagic1 libmng1 libmp3lame0 
  libmx4j-java libncurses5 libncursesw5 libnet-dns-perl libnewt0.52 libnfsidmap2 libnotify1 libnspr4-0d libnss-mdns libnss3-1d 
  libogg0 liboil0.3 libopenexr6 liborbit2 libpam-modules libpam-runtime libpam0g libpango1.0-0 libpango1.0-common libpaper1 
  libpci3 libpcre3 libpcsclite1 libperl5.10 libpixman-1-0 libpng12-0 libpopt0 libpostproc51 libpq5 libpulse0 libreadline5 
  librecode0 libregexp-java librpcsecgss3 librsvg2-2 librsvg2-common libsane libsane-extras libsasl2-2 libschroedinger-1.0-0 
  libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsensors4 libsepol1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 
  libsmbclient libsnmp-base libsnmp15 libsocket6-perl libsoup2.4-1 libsqlite3-0 libss2 libssl0.9.8 libstartup-notification0 
  libstdc++6 libsvga1 libsysfs2 libtag1c2a libtagc0 libtasn1-3 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl 
  libthai-data libthai0 libtheora0 libthunar-vfs-1-2 libtiff4 libts-0.0-0 liburi-perl libusb-0.1-4 libuuid1 libvorbis0a 
  libvorbisenc2 libvte-common libvte9 libwavpack1 libwbclient0 libwmf0.2-7 libwpg-0.1-1 libwrap0 libwww-perl libx11-6 
  libx11-data libx86-1 libxau6 libxaw7 libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xv0 libxcb1 
  libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfce4util4 libxfcegui4-4 libxfixes3 libxfont1 libxft2 libxi6 
  libxine1 libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins libxine1-plugins libxine1-x libxinerama1 
  libxkbfile1 libxmu6 libxmuu1 libxpm4 libxrandr2 libxrender1 libxslt1.1 libxss1 libxt6 libxtst6 libxv1 libxvidcore4 libxvmc1 
  libxxf86dga1 libxxf86vm1 linux-image-2.6-amd64 linux-sound-base locales login logrotate lp-solve lsb-base lsof lvm2 lwresd 
  m4 mailagent makedev man-db manpages manpages-fr manpages-fr-extra mawk mc menu mime-support mktemp mlocate mlock 
  module-init-tools mount mousepad mutt myspell-en-us myspell-fr-gut nano ncurses-base ncurses-bin ncurses-term net-tools 
  netatalk netbase nfs-common nfs-kernel-server ntfs-3g nvclock openbsd-inetd openoffice.org openoffice.org-base 
  openoffice.org-base-core openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw 
  openoffice.org-filter-mobiledev openoffice.org-gcj openoffice.org-gtk openoffice.org-help-en-us openoffice.org-help-fr 
  openoffice.org-impress openoffice.org-java-common openoffice.org-l10n-fr openoffice.org-math openoffice.org-officebean 
  openoffice.org-report-builder-bin openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-thesaurus-en-us 
  openoffice.org-writer openprinting-ppds openssh-client openssh-server openssl orage passwd patch pciutils pcmciautils perl 
  perl-base perl-modules php5-common pm-utils popularity-contest portmap postgresql postgresql-client postgresql-client-common 
  postgresql-common postgresql-contrib postgresql-doc powermgmt-base powertop printconf procmail procps psmisc psutils python 
  python-cairo python-central python-dbus python-foomatic python-glade2 python-gnome2 python-gobject python-gtk2 
  python-imaging python-ipy python-minimal python-pyorbit python-support python2.5 python2.5-minimal qpopper radeontool 
  readline-common reportbug rsyslog sa-exim samba samba-common samba-doc sed sgml-base sgml-data shared-mime-info 
  smartmontools smbclient smbfs spamassassin spamc ssl-cert sudo swat swfdec-mozilla sysv-rc sysvinit sysvinit-utils tar 
  tasksel tasksel-data tcpd texinfo thunar thunar-data thunar-media-tags-plugin time toshset traceroute ttf-dejavu 
  ttf-dejavu-core ttf-dejavu-extra ttf-liberation ttf-opensymbol tzdata ucf udev update-inetd usbutils util-linux uw-imapd 
  vbetool vim-common vim-tiny w3m wamerican wfrench wget whiptail whois winbind wireless-tools wpasupplicant x11-apps 
  x11-common x11-session-utils x11-utils x11-xfs-utils x11-xkb-utils x11-xserver-utils xauth xbitmaps xdg-utils xfce4 
  xfce4-battery-plugin xfce4-clipman-plugin xfce4-cpufreq-plugin xfce4-cpugraph-plugin xfce4-diskperf-plugin 
  xfce4-fsguard-plugin xfce4-genmon-plugin xfce4-goodies xfce4-mailwatch-plugin xfce4-mixer xfce4-mount-plugin 
  xfce4-netload-plugin xfce4-notes-plugin xfce4-panel xfce4-quicklauncher-plugin xfce4-sensors-plugin xfce4-session 
  xfce4-smartbookmark-plugin xfce4-systemload-plugin xfce4-terminal xfce4-utils xfce4-verve-plugin xfce4-wavelan-plugin 
  xfce4-weather-plugin xfdesktop4 xfdesktop4-data xfonts-100dpi xfonts-75dpi xfonts-base xfonts-encodings xfonts-intl-european 
  xfonts-scalable xfonts-utils xfprint4 xfwm4 xinit xkb-data xml-core xorg xsane xsane-common xserver-xorg xserver-xorg-core 
  xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd xserver-xorg-input-mouse xserver-xorg-input-synaptics 
  xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati 
  xserver-xorg-video-chips xserver-xorg-video-cirrus xserver-xorg-video-dummy xserver-xorg-video-fbdev 
  xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-intel xserver-xorg-video-mach64 xserver-xorg-video-mga 
  xserver-xorg-video-neomagic xserver-xorg-video-nv xserver-xorg-video-openchrome xserver-xorg-video-r128 
  xserver-xorg-video-radeon xserver-xorg-video-radeonhd xserver-xorg-video-rendition xserver-xorg-video-s3 
  xserver-xorg-video-s3virge xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis 
  xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident xserver-xorg-video-tseng 
  xserver-xorg-video-vesa xserver-xorg-video-vmware xserver-xorg-video-voodoo xterm zlib1g 
Les paquets suivants sont RECOMMANDÉS mais ne seront pas installés :
  bzip2 gamin gcc gdm-themes hddtemp libapache2-reload-perl libatk1.0-data libatm1 libbsd-resource-perl libc6-dev libfribidi0 
  libglib2.0-data libgtk2.0-bin libhtml-format-perl libio-socket-inet6-perl liblog4j1.2-java-gcj libmail-spf-perl 
  libmailtools-perl libnss-lwres libpam-gnome-keyring libpaper-utils lm-sensors make nmap openoffice.org-emailmerge 
  openoffice.org-filter-binfilter pconf-detect rc re2c uuid-runtime wdiff xfwm4-themes xnest xserver-xephyr zenity 
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] 
&lt;/code&gt;

En fonction de votre connexion ça peut prendre très longtemps, et être interrompu (à 500KB/s une demi-heure à 50 KB/s c'est plusieurs heures...).
Un conseil, si vous n'êtes pas sûr de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

&lt;code&gt;
# aptitude -d safe-upgrade
...
 762Mo téléchargés en 1h9min37s (182ko/s)                                                          
Lecture des listes de paquets... Fait             
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait
&lt;/code&gt;

Puis

&lt;code&gt;
# aptitude safe-upgrade
...
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 0o/762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] y
&lt;/code&gt;

=== Déroulement ===

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut, mais prenez le temps de lire tous les messages, et si nécessaire, prenez des notes.

[[Fichier:Snapshot4.jpeg]]

[[Fichier:Snapshot5.jpeg]]

[[Fichier:Snapshot6.jpeg]]

[[Fichier:Snapshot7.jpeg]]

[[Fichier:Snapshot9.jpeg]]

[[Fichier:Snapshot11.jpeg]]

[[Fichier:Snapshot13.jpeg]]

[[Fichier:Snapshot14.jpeg]]

[[Fichier:Snapshot15.jpeg]]

[[Fichier:Snapshot16.jpeg]]

[[Fichier:Snapshot17.jpeg]]

Vous partirez d'une Lenny configurée, et donc de nombreux fichiers de configuration auront été modifiés par vos soins.
Il est judicieux de ne pas écraser vos configurations avec les fichiers par défauts proposés par les &quot;mainteneurs&quot; des paquets.
Vous aurez tout le loisir de regarder les modifications proposées, et ce qu'elles apportent, en regardant dans /usr/share/doc ou dans les contenus de vos deb téléchargés (dans /var/apt/archives)

[[Fichier:Snapshot18.jpeg]]

Sans le téléchargement des fichiers, comptez un peu plus d'une heure pour la mise à niveau

=== finalisation ===

Le safe-upgrade devrait se terminer par ceci :

&lt;code&gt;
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 4 mises à jour restantes [-721].
&lt;/code&gt;

Vous pouvez maintenant lancer un &quot;full-upgrade&quot;

&lt;code&gt;
# aptitude full-upgrade

...

4 paquets mis à jour, 13 nouvellement installés, 2 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 12,1Mo d'archives. Après dépaquetage, 14,3Mo seront utilisés.
Les paquets suivants ont des dépendances non satisfaites :
  libept0: Dépend: libapt-pkg-libc6.7-6-4.6 qui est un paquet virtuel
Les actions suivantes permettront de résoudre ces dépendances :

Supprimer les paquets suivants :
libept0

Le score est de 115

Accepter cette solution ? [Y/n/q/?]y

...

Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 0 mise à jour restante [-4].
&lt;/code&gt;

Si tout s'est bien passé, il ne vous reste plus qu'a redémarrer la machine :

 # reboot

=== Grub2 ===

Si vous étiez sous Grub-legacy vous aurez certainement fait la bascule vers Grub2.

La première &quot;surprise&quot; qui vous attend donc (sauf si vous avez lu ce guide avant...) c'est le menu suivant :

[[Fichier:Snapshot19.jpeg]]

Si vous appuyez sur entrée, cvous serez conduit vers le menu de Grub2.
Cette étape permet de vérifier que Grub2 est bien installé, et de le tester.

[[Fichier:Snapshot20.jpeg]]

Si cela fonctionne, une des premières choses à faire sera de confirmer l'installation de Grub2 en tapant dans une console la commande suivante :

 # upgrade-from-grub-legacy

=== LVM ===

Problème rencontré lors de la mise à niveau avec LVM...
Le système s'est mélangé les pédales dans l'attribution des partitions.
Résultat :

[[Fichier:Snapshot21.jpeg]]

Voici ou se situe le problème :

&lt;code&gt;
$ vdir /dev/l2s/
total 0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 home -&gt; ../dm-5
lrwxrwxrwx 1 root root 7 25 nov.  18:28 root -&gt; ../dm-0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 swap_1 -&gt; ../dm-1
lrwxrwxrwx 1 root root 7 25 nov.  18:28 tmp -&gt; ../dm-4
lrwxrwxrwx 1 root root 7 25 nov.  18:28 usr -&gt; ../dm-2
lrwxrwxrwx 1 root root 7 25 nov.  18:28 var -&gt; ../dm-3
&lt;/code&gt;
&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
# /dev/hda1	/boot	ext2	defaults	0	2
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-1	/usr	ext3	defaults	0	2
# /dev/hdb1	/var	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-3	none	swap	sw	0	0
# /dev/hdc	/media/cdrom0	udf,iso9660	user,noauto	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

Je ne sais pour quelle raison LVM à changé la numérotation des partitions... /usr est passé en dm-1 alors qu'il était en dm-2 et la swap en dm-3 alors qu'elle était être en dm-1
Il suffit de modifier le fichier /etc/fstab pour qu'il reflète à nouveau correctement vos partitions, et le tour est joué :

&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-2	/usr	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-1	none	swap	sw	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

== Bienvenu sur Squeeze ==

 laurent@lenny2squeeze:~$ uname -a
 Linux lenny2squeeze 2.6.32-5-amd64 #1 SMP Sat Oct 30 14:18:21 UTC 2010 x86_64 GNU/Linux

[[Fichier:Snapshot25.jpeg]]

A venir... Upgrade de Squeeze à ????

----
[[Utilisateur:Lol|Lol]] 25 novembre 2010 à 15:55 (EAT)
[[Catégorie:Installation]]</text>
      <sha1>g7a7swsbzjh02wzl59qgeplvjvsg8dd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2416</id>
      <parentid>2415</parentid>
      <timestamp>2010-11-25T14:14:31Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Une bonne sauvegarde */</comment>
      <text xml:space="preserve" bytes="31485">{{sid}}

La mise à niveau de Lenny à Squeeze se précise, nous allons faire ici un rapide résumé des opérations nécessaires à la réussite de cette mise à niveau (upgrade).
LVM est installé sur la machine que nous allons mettre à niveau afin de tester le plus de possibilités.

Avant toute chose, je souhaite faire quelques précisions :
Chaque configuration est propre à chacun, en fonction de ses goûts, de son matériel et de ses connaissances.
Un guide universel n'existe donc pas.

Prévoyez aussi d'avoir du temps devant vous, et d'être au calme.

Nous choisirons d'utiliser aptitude au lieu de apt-get, il est en effet plus exigeant concernant les dépendances, votre mise à niveau sera plus &quot;propre&quot;.

J'ai choisi une Lenny avec toutes les options de tasksel activées afin de faire un tour d'horizon le plus vaste possible des problèmes qui pourraient survenir.
L'environnement graphique est Xfce.

[[Fichier:Snapshot3.jpeg]]

== Pré-requis ==

=== Une bonne sauvegarde ===

Vous n'avez AUCUNE garantie que la mise à niveau se passe bien, alors, quel que soit la méthode que vous emploierez, une sauvegarde est le minimum que vous puissiez faire avant de vous lancer dans l'aventure..

Avec dd, dump ou simplement cp SAUVEGARDEZ !

=== Un système à jour! ===

Le fichier sources.list précédent la mise à niveau :

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org stable main non-free
#deb-src http://www.debian-multimedia.org stable main non-free

# backports
deb http://backports.debian.org/debian-backports lenny-backports main contrib non-free
&lt;/code&gt;

 # aptitude update
 # aptitude safe-upgrade
 # aptitude full-upgrade

=== De l'espace! ===

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition où se trouve /var pour le stockage des paquets téléchargés.

Pour info une mise à jour &quot;lourde&quot; se soldera par le téléchargement d'environ 1Go...

Pour connaitre l’espace libre de votre partition racine :

 $ df -H
 Sys. de fich.          Tail.  Occ.  Disp. %Occ. Monté sur
 '''/dev/dm-0              338M   123M   198M  39% /'''
 tmpfs                  262M      0   262M   0% /lib/init/rw
 udev                    11M   689k   9,8M   7% /dev
 tmpfs                  262M      0   262M   0% /dev/shm
 /dev/hda1              239M    20M   207M   9% /boot
 /dev/dm-5              3,7G    75M   3,4G   3% /home
 /dev/dm-4              317M    11M   290M   4% /tmp
 /dev/dm-1              3,7G   1,7G   1,8G  50% /usr
 '''/dev/hdb1              5,3G   1,1G   4,0G  21% /var'''
 /dev/dm-2              1,8G   876M   818M  52% /media/dm-2

'''Si vous disposez de plus de 50% d’espace libre vous pouvez passer à l'étape suivante'''.

Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Si cela ne suffit toujours pas, il faut envisager d'ajouter un disque à votre système, ou de procéder à un upgrade par étapes successives (en mettant à jour les paquets progressivement et en nettoyant à chaque étape)

=== Les pilotes de la carte Graphique ===

Afin de ne pas avoir de mauvaise surprise avec le serveur X, modifiez votre xorg.conf afin d'utiliser des pilotes Debian.

Eventuellement utilisez les pilotes &quot;vesa&quot;

Dans votre fichier /etc/X11/xorg.conf

&lt;code&gt;
Section &quot;Device&quot;
    Identifier     &quot;Device0&quot;
    Driver         &quot;vesa&quot;
EndSection
&lt;/code&gt;

Si vous êtes sur de vous, n'en faites rien, mais prévoyez une réinstallation des pilotes avant le premier redémarrage.

=== Le fichier sources.list ===

Créons un nouveau sources.list que nous placerons dans /etc/apt/sources.list.d
Nous prenons dores et déjà la bonne habitude d'utiliser ce dossier qui est devenu celui par défaut pour mettre les fichiers contenant les dépôts.

 # nano /etc/apt/sources.list.d/sources.list

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free

# stable security
deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

## stable volatile
## Il n'y a pas de dépôt volatile pour squeeze pour l'instant
## deb http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free
## deb-src http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org squeeze main non-free
#deb-src http://www.debian-multimedia.org squeeze main non-free

# backports
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
&lt;/code&gt;

== Préparation de la mise à niveau ==

Maintenant que nous sommes prêts, nous pouvons lancer l'upgrade :

Mise à jour de la liste des paquets :

 # aptitude update

=== Si vous avez des problèmes de clefs ===

 W: GPG error: http://www.debian-multimedia.org

 # aptitude install debian-backports-keyring
 # aptitude install debian-multimedia-keyring

=== Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]] ===

 E: Dynamic MMap ran out of room

 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaite l'update, il ne doit pas y avoir d'erreurs

 # aptitude update

=== Problèmes de dépendances ===

Vous ne pourrez pas faire le passage de Lenny à Squeeze tant que subsisteront des problèmes de dépendances...

Voici deux exemples de problèmes de dépendances, et la manière de le régler :

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  xfce4-mixer-oss: Est en conflit avec: xfce4-mixer-alsa mais 4.4.2-3 est installé.
  foomatic-db: Est en conflit avec: foomatic-db-hpijs mais 20080211-1 est installé.
  xfce4-mixer-alsa: Est en conflit avec: xfce4-mixer-oss mais 4.4.2-3 doit être installé.

# aptitude install foomatic-db xfce4-mixer-alsa
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Lecture des descriptions de tâches... Fait  
Les NOUVEAUX paquets suivants vont être installés : 
  libopenjpeg2{a} libpoppler5{a} min12xxw{a} pnm2ppa{a} 
Les paquets suivants seront ENLEVÉS : 
  foomatic-db-hpijs{a} 
Les paquets suivants seront mis à jour : 
  fontconfig-config foomatic-db foomatic-db-engine foomatic-filters libfontconfig1 libjpeg62 libxml2 poppler-utils 
8 paquets mis à jour, 4 nouvellement installés, 1 à enlever et 728 non mis à jour.
Il est nécessaire de télécharger 4722ko d'archives. Après dépaquetage, 18,2Mo seront libérés.
Voulez-vous continuer ? [Y/n/?] o
...
État actuel : 728 mises à jour restantes [-8].
&lt;/code&gt;

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  libatlas3gf-base: Est en conflit avec: libblas3gf (&lt; 1.2-5) mais 1.2-2 est installé et a été conservé
                    Est en conflit avec: liblapack3gf (&lt; 3.2.1-4) mais 3.1.1-1 est installé et a été conservé
  rarian-compat: Est en conflit avec: scrollkeeper (&lt; 0.4) mais 0.3.14-16 est installé et a été conservé

# aptitude install libatlas3gf-base scrollkeeper
...
Les actions suivantes permettront de résoudre ces dépendances :

Mettre à jour les paquets suivants :
libblas3gf [1.2-2 (stable, now) -&gt; 1.2-8 (testing)]
liblapack3gf [3.1.1-1 (stable, now) -&gt; 3.2.1-8 (testing)]

Le score est de 70

Accepter cette solution ? [Y/n/q/?] y
...
État actuel : 725 mises à jour restantes [-3].
&lt;/code&gt;

En cas de doute n'hésitez pas à demander un avis [http://forum.debian-fr.org/ sur le forum]

=== stopper le serveur X ===

'''IMPORTANT''' : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

== Lancez la mise à niveau ==

&lt;code&gt;
# aptitude safe-upgrade
...
Les paquets suivants ont été conservés : 
  apt apt-utils aptitude synaptic 
Les NOUVEAUX paquets suivants vont être installés : 
  acpi-fakekey{a} apache2.2-bin{a} aumix{a} aumix-common{a} bluez{a} bluez-alsa{a} bluez-cups{a} bluez-gstreamer{a} 
  browser-plugin-gnash{a} cifs-utils{a} consolekit{a} cpp-4.4{a} cracklib-runtime{a} cups-ppdc{a} dash{a} db4.8-util{a} 
  diffutils{a} dosfstools{a} firmware-linux-free{a} freepats{a} fuse-utils{a} gcc-4.4-base{a} gcj-4.4-base{a} 
  gcj-4.4-jre-lib{a} geoip-database{a} ghostscript-cups{a} gnash{a} gnash-common{a} gnupg-curl{a} grub-pc{a} 
  gstreamer0.10-ffmpeg{a} gstreamer0.10-fluendo-mp3{a} gstreamer0.10-plugins-bad{a} gstreamer0.10-plugins-base{a} gvfs{a} 
  hplip-cups{a} insserv{a} install-info{a} isc-dhcp-client{a} isc-dhcp-common{a} iso-codes{a} keyboard-configuration{a} 
  libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libass4{a} libatasmart4{a} libaudit0{a} libavahi-core7{a} libavcodec52{a} 
  libavformat52{a} libavutil50{a} libbabl-0.0-0{a} libbind9-60{a} libbluetooth3{a} libboost-date-time1.42.0{a} 
  libboost-thread1.42.0{a} libbsd0{a} libburn4{a} libc-bin{a} libc-client2007e{a} libcap-ng0{a} libcdaudio1{a} libcdio10{a} 
  libcdparanoia0{a} libcelt0-0{a} libck-connector0{a} libcolamd2.7.1{a} libcommons-beanutils-java{a} 
  libcommons-collections3-java{a} libcommons-compress-java{a} libcommons-digester-java{a} libcommons-logging-java{a} 
  libcrack2{a} libcupscgi1{a} libcupsdriver1{a} libcupsmime1{a} libcupsppdc1{a} libdatrie1{a} libdb-je-java{a} libdb4.7{a} 
  libdb4.7-java{a} libdb4.7-java-gcj{a} libdb4.8{a} libdc1394-22{a} libdca0{a} libdirac-encoder0{a} libdirectfb-1.2-9{a} 
  libdns66{a} libdrm-intel1{a} libdrm-nouveau1{a} libdrm-radeon1{a} libdvdnav4{a} libdvdread4{a} libeggdbus-1-0{a} libenca0{a} 
  libenchant1c2a{a} libevent-1.4-2{a} libexempi3{a} libexo-common{a} libfaad2{a} libfftw3-3{a} libfile-copy-recursive-perl{a} 
  libflite1{a} libfont-freetype-perl{a} libfuse2{a} libgcj10{a} libgcr0{a} libgdu0{a} libgegl-0.0-0{a} libgeoip1{a} libgif4{a} 
  libgme0{a} libgomp1{a} libgp11-0{a} libgpgme11{a} libgraphicsmagick3{a} libgraphite3{a} libgssapi-krb5-2{a} libgtkglext1{a} 
  libgudev-1.0-0{a} libhpmud0{a} libicu44{a} libicu4j-java{a} libiptcdata0{a} libisc60{a} libisccc60{a} libisccfg60{a} 
  libiso9660-7{a} libisofs6{a} libiw30{a} libjbig2dec0{a} libjpeg-progs{a} libjpeg8{a} libjtidy-java{a} libk5crypto3{a} 
  libkate1{a} libkrb5-3{a} libkrb5support0{a} libltdl7{a} liblucene2-java{a} liblwres60{a} liblzma2{a} libmimic0{a} libmms0{a} 
  libmodplug1{a} libmozjs2d{a} libmpcdec6{a} libmpfr4{a} libmusicbrainz4c2a{a} libmythes-1.2-0{a} libneon27-gnutls{a} 
  libnetaddr-ip-perl{a} libnfnetlink0{a} libnl1{a} libntfs-3g75{a} libntfs10{a} libofa0{a} libonig2{a} libopencore-amrnb0{a} 
  libopencore-amrwb0{a} libopenraw1{a} liborc-0.4-0{a} libossp-uuid16{a} libpam-ck-connector{a} libpam-cracklib{a} 
  libpango-perl{a} libpangomm-1.4-1{a} libparted0debian1{a} libpciaccess0{a} libpolkit-agent-1-0{a} libpolkit-backend-1-0{a} 
  libpolkit-gobject-1-0{a} libpoppler-glib4{a} libpth20{a} libpython2.6{a} libqdbm14{a} libraptor1{a} librasqal2{a} 
  libraw1394-11{a} librdf0{a} libreadline6{a} librtmp0{a} libsane-hpaio{a} libsasl2-modules{a} libservlet2.5-java{a} 
  libsexy2{a} libsgutils2-2{a} libslv2-9{a} libsndfile1{a} libsoundtouch1c2{a} libswscale0{a} libtag1-vanilla{a} libtalloc2{a} 
  libtextcat-data-utf8{a} libtokyocabinet8{a} libudev0{a} libunique-1.0-0{a} libusb-1.0-0{a} libutempter0{a} libuuid-perl{a} 
  libv4l-0{a} libva1{a} libvcdinfo0{a} libvisual-0.4-0{a} libvisual-0.4-plugins{a} libvpx0{a} libwebkit-1.0-2{a} 
  libwebkit-1.0-common{a} libwildmidi1{a} libwnck-common{a} libwnck22{a} libx11-xcb1{a} libx264-104{a} libxcb-atom1{a} 
  libxcb-aux0{a} libxcb-dri2-0{a} libxcb-event1{a} libxfce4menu-0.1-0{a} libxfce4util-bin{a} libxfce4util-common{a} 
  libxfconf-0-2{a} libxklavier16{a} libxml-parser-perl{a} libxres1{a} libzbar0{a} linux-base{a} linux-image-2.6.32-5-amd64{a} 
  lockfile-progs{a} lsb-release{a} mtools{a} ntfsprogs{a} os-prober{a} oss-compat{a} php5-cli{a} php5-suhosin{a} 
  policykit-1{a} policykit-1-gnome{a} postgresql-8.4{a} postgresql-client-8.4{a} postgresql-contrib-8.4{a} 
  postgresql-doc-8.4{a} python-cups{a} python-gconf{a} python-numpy{a} python-pexpect{a} python-reportbug{a} python-webkit{a} 
  python2.6{a} python2.6-minimal{a} ristretto{a} samba-common-bin{a} sane-utils{a} sensible-utils{a} squeeze{a} 
  tango-icon-theme{a} thunar-archive-plugin{a} thunar-volman{a} tsconf{a} ttf-freefont{a} ttf-lyx{a} ttf-sil-gentium{a} 
  ttf-sil-gentium-basic{a} udisks{a} uno-libs3{a} unzip{a} ure{a} x-ttcidfont-conf{a} xdg-user-dirs{a} xfburn{a} 
  xfce-keyboard-shortcuts{a} xfce4-appfinder{a} xfce4-clipman{a} xfce4-datetime-plugin{a} xfce4-dict{a} xfce4-notes{a} 
  xfce4-notifyd{a} xfce4-places-plugin{a} xfce4-power-manager{a} xfce4-power-manager-data{a} xfce4-screenshooter{a} 
  xfce4-settings{a} xfce4-taskmanager{a} xfce4-timer-plugin{a} xfce4-xkb-plugin{a} xfconf{a} xfonts-mathml{a} xinput{a} xli{a} 
  xorg-docs-core{a} xscreensaver{a} xscreensaver-data{a} xserver-common{a} xserver-xorg-video-nouveau{a} xulrunner-1.9.1{a} 
  xz-utils{a} 
Les paquets suivants seront ENLEVÉS : 
  bluez-utils{u} cpp-4.3{u} cupsddk-drivers{u} djvulibre-desktop{u} finger{u} gs-common{u} liba52-0.7.4{u} libamrnb3{u} 
  libamrwb3{u} libaudio2{u} libavahi-compat-libdnssd1{u} libavahi-core5{u} libavc1394-0{u} libavcodec51{u} libbind9-50{u} 
  libbluetooth2{u} libc-client2007b{u} libcap1{u} libcucul0{u} libcupsys2{u} libcurl3{u} libdatrie0{u} libdirac0{u} 
  libdjvulibre21{u} libfaad0{u} libfreebob0{u} libgail-common{u} libgraphviz4{u} libgtkhtml2-0{u} libicu38{u} libiec61883-0{u} 
  libisccc50{u} libisccfg50{u} libiw29{u} libjaxp1.3-java-gcj{u} libltdl3{u} liblwres50{u} libmagick10{u} libmodplug0c2{u} 
  libmozjs1d{u} libmpcdec3{u} libmpfr1ldbl{u} libmysqlclient15off{u} libneon27{u} libntfs-3g31{u} libossp-uuid15{u} 
  libparted1.8-10{u} libpoppler-glib3{u} libpoppler3{u} libqt3-mt{u} libraw1394-8{u} libsensors3{u} libservlet2.4-java{u} 
  libsmbios-bin{u} libsmbios2{u} libssh2-1{u} libsuitesparse-3.1.0{u} libswfdec-0.6-90{u} libtalloc1{u} libvolume-id0{u} 
  libx264-65{u} libxalan2-java{u} libxalan2-java-gcj{u} libxcb-xlib0{u} libxerces2-java{u} libxerces2-java-gcj{u} 
  libxfce4mcs-client3{u} libxfce4mcs-manager3{u} libxtrap6{u} libxxf86misc1{u} mysql-common{u} openoffice.org-writer2latex{u} 
  openssl-blacklist{u} postgresql-8.3{u} postgresql-client-8.3{u} postgresql-contrib-8.3{u} postgresql-doc-8.3{u} 
  python-gtkhtml2{u} python-numeric{u} svgalibg1{u} xfce4-icon-theme{u} xfce4-mcs-manager{u} xfce4-mcs-plugins{u} 
  xfce4-minicmd-plugin{u} xfce4-screenshooter-plugin{u} xserver-xorg-video-cyrix{u} xserver-xorg-video-v4l{u} 
  xserver-xorg-video-vga{u} xulrunner-1.9{u} 
Les paquets suivants seront mis à jour : 
  a2ps acpi acpi-support acpi-support-base acpid adduser alsa-base alsa-utils anacron analog apache2 apache2-doc 
  apache2-mpm-prefork apache2-utils apache2.2-common apmd aspell aspell-fr at avahi-autoipd avahi-daemon base-files 
  base-passwd bash bash-completion bc bind9 bind9-doc bind9-host bind9utils bluetooth bsd-mailx bsdmainutils bsdutils bsh 
  bsh-gcj busybox ca-certificates console-common console-data console-setup console-terminus console-tools coreutils cpio cpp 
  cpufrequtils cron cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk dbus dbus-x11 dc debconf debconf-i18n 
  debian-archive-keyring debian-faq debianutils deborphan defoma desktop-base desktop-file-utils dhcp3-client dhcp3-common 
  dialog dictionaries-common diff disk-manager dmidecode dmsetup dnsutils doc-debian docbook-xml dpkg e2fslibs e2fsprogs ed 
  eject esound-common exim4 exim4-base exim4-config exim4-daemon-light exo-utils fastjar file findutils fontconfig foo2zjs 
  foomatic-db-gutenprint foomatic-filters-ppds foomatic-gui fortune-mod fortunes-min ftp gcc-4.3-base gconf2 gconf2-common gdm 
  gettext-base ghostscript gimp gimp-data gksu gnome-keyring gnupg gparted gpgv grep groff-base grub grub-common gsfonts 
  gtk2-engines-xfce gzip hal hal-info hdparm hibernate hicolor-icon-theme hostname hpijs hplip hplip-data iamerican ibritish 
  iceweasel iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint info initramfs-tools initscripts installation-report iproute 
  iptables iputils-ping ispell java-common kerneloops klibc-utils laptop-detect less libaa1 libacl1 libapache2-mod-perl2 
  libapache2-mod-php5 libapache2-mod-python libapm1 libapr1 libaprutil1 libart-2.0-2 libasound2 libaspell15 libatk1.0-0 
  libattr1 libaudiofile0 libavahi-client3 libavahi-common-data libavahi-common3 libavahi-glib1 libavutil49 libbcel-java 
  libblkid1 libbonobo2-0 libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i386 libcaca0 
  libcairo-perl libcairo2 libcairomm-1.0-1 libcap2 libcomerr2 libconsole libcpufreq0 libcroco3 libcups2 libcupsimage2 
  libcurl3-gnutls libcwidget3 libdaemon0 libdb4.6 libdbus-1-3 libdbus-glib-1-2 libdevel-symdump-perl libdevmapper1.02.1 
  libdigest-hmac-perl libdigest-sha1-perl libdirectfb-extra libdmx1 libdrm2 libedit2 libesd0 libexif12 libexo-0.3-0 libexpat1 
  libfaac0 libfam0 libffi5 libflac8 libfontenc1 libfreetype6 libfs6 libgail18 libgc1c2 libgcc1 libgcj-bc libgcj-common 
  libgconf2-4 libgcrypt11 libgd2-noxpm libgdbm3 libgfortran3 libgimp2.0 libgksu2-0 libgl1-mesa-dri libgl1-mesa-glx libglade2-0 
  libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgmp3c2 libgnome-keyring0 libgnome2-0 libgnome2-canvas-perl 
  libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0 libgnomecanvas2-common libgnomeui-0 libgnomeui-common 
  libgnomevfs2-0 libgnomevfs2-common libgnomevfs2-extra libgnutls26 libgpg-error0 libgphoto2-2 libgphoto2-port0 libgpm2 libgs8 
  libgsf-1-114 libgsf-1-common libgsm1 libgssglue1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0 
  libgtk2.0-common libgtkmm-2.4-1c2a libgtop2-7 libgtop2-common libgutenprint2 libhal-storage1 libhal1 libhsqldb-java 
  libhsqldb-java-gcj libhtml-parser-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libice6 libidl0 libidn11 libieee1284-3 
  libijs-0.35 libilmbase6 libjack0 libjasper1 libjaxp1.3-java libjline-java libkeyutils1 libklibc libkrb53 liblcms1 
  libldap-2.4-2 liblocale-gettext-perl liblockfile1 liblog4j1.2-java liblzo2-2 libmad0 libmagic1 libmng1 libmp3lame0 
  libmx4j-java libncurses5 libncursesw5 libnet-dns-perl libnewt0.52 libnfsidmap2 libnotify1 libnspr4-0d libnss-mdns libnss3-1d 
  libogg0 liboil0.3 libopenexr6 liborbit2 libpam-modules libpam-runtime libpam0g libpango1.0-0 libpango1.0-common libpaper1 
  libpci3 libpcre3 libpcsclite1 libperl5.10 libpixman-1-0 libpng12-0 libpopt0 libpostproc51 libpq5 libpulse0 libreadline5 
  librecode0 libregexp-java librpcsecgss3 librsvg2-2 librsvg2-common libsane libsane-extras libsasl2-2 libschroedinger-1.0-0 
  libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsensors4 libsepol1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 
  libsmbclient libsnmp-base libsnmp15 libsocket6-perl libsoup2.4-1 libsqlite3-0 libss2 libssl0.9.8 libstartup-notification0 
  libstdc++6 libsvga1 libsysfs2 libtag1c2a libtagc0 libtasn1-3 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl 
  libthai-data libthai0 libtheora0 libthunar-vfs-1-2 libtiff4 libts-0.0-0 liburi-perl libusb-0.1-4 libuuid1 libvorbis0a 
  libvorbisenc2 libvte-common libvte9 libwavpack1 libwbclient0 libwmf0.2-7 libwpg-0.1-1 libwrap0 libwww-perl libx11-6 
  libx11-data libx86-1 libxau6 libxaw7 libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xv0 libxcb1 
  libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfce4util4 libxfcegui4-4 libxfixes3 libxfont1 libxft2 libxi6 
  libxine1 libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins libxine1-plugins libxine1-x libxinerama1 
  libxkbfile1 libxmu6 libxmuu1 libxpm4 libxrandr2 libxrender1 libxslt1.1 libxss1 libxt6 libxtst6 libxv1 libxvidcore4 libxvmc1 
  libxxf86dga1 libxxf86vm1 linux-image-2.6-amd64 linux-sound-base locales login logrotate lp-solve lsb-base lsof lvm2 lwresd 
  m4 mailagent makedev man-db manpages manpages-fr manpages-fr-extra mawk mc menu mime-support mktemp mlocate mlock 
  module-init-tools mount mousepad mutt myspell-en-us myspell-fr-gut nano ncurses-base ncurses-bin ncurses-term net-tools 
  netatalk netbase nfs-common nfs-kernel-server ntfs-3g nvclock openbsd-inetd openoffice.org openoffice.org-base 
  openoffice.org-base-core openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw 
  openoffice.org-filter-mobiledev openoffice.org-gcj openoffice.org-gtk openoffice.org-help-en-us openoffice.org-help-fr 
  openoffice.org-impress openoffice.org-java-common openoffice.org-l10n-fr openoffice.org-math openoffice.org-officebean 
  openoffice.org-report-builder-bin openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-thesaurus-en-us 
  openoffice.org-writer openprinting-ppds openssh-client openssh-server openssl orage passwd patch pciutils pcmciautils perl 
  perl-base perl-modules php5-common pm-utils popularity-contest portmap postgresql postgresql-client postgresql-client-common 
  postgresql-common postgresql-contrib postgresql-doc powermgmt-base powertop printconf procmail procps psmisc psutils python 
  python-cairo python-central python-dbus python-foomatic python-glade2 python-gnome2 python-gobject python-gtk2 
  python-imaging python-ipy python-minimal python-pyorbit python-support python2.5 python2.5-minimal qpopper radeontool 
  readline-common reportbug rsyslog sa-exim samba samba-common samba-doc sed sgml-base sgml-data shared-mime-info 
  smartmontools smbclient smbfs spamassassin spamc ssl-cert sudo swat swfdec-mozilla sysv-rc sysvinit sysvinit-utils tar 
  tasksel tasksel-data tcpd texinfo thunar thunar-data thunar-media-tags-plugin time toshset traceroute ttf-dejavu 
  ttf-dejavu-core ttf-dejavu-extra ttf-liberation ttf-opensymbol tzdata ucf udev update-inetd usbutils util-linux uw-imapd 
  vbetool vim-common vim-tiny w3m wamerican wfrench wget whiptail whois winbind wireless-tools wpasupplicant x11-apps 
  x11-common x11-session-utils x11-utils x11-xfs-utils x11-xkb-utils x11-xserver-utils xauth xbitmaps xdg-utils xfce4 
  xfce4-battery-plugin xfce4-clipman-plugin xfce4-cpufreq-plugin xfce4-cpugraph-plugin xfce4-diskperf-plugin 
  xfce4-fsguard-plugin xfce4-genmon-plugin xfce4-goodies xfce4-mailwatch-plugin xfce4-mixer xfce4-mount-plugin 
  xfce4-netload-plugin xfce4-notes-plugin xfce4-panel xfce4-quicklauncher-plugin xfce4-sensors-plugin xfce4-session 
  xfce4-smartbookmark-plugin xfce4-systemload-plugin xfce4-terminal xfce4-utils xfce4-verve-plugin xfce4-wavelan-plugin 
  xfce4-weather-plugin xfdesktop4 xfdesktop4-data xfonts-100dpi xfonts-75dpi xfonts-base xfonts-encodings xfonts-intl-european 
  xfonts-scalable xfonts-utils xfprint4 xfwm4 xinit xkb-data xml-core xorg xsane xsane-common xserver-xorg xserver-xorg-core 
  xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd xserver-xorg-input-mouse xserver-xorg-input-synaptics 
  xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati 
  xserver-xorg-video-chips xserver-xorg-video-cirrus xserver-xorg-video-dummy xserver-xorg-video-fbdev 
  xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-intel xserver-xorg-video-mach64 xserver-xorg-video-mga 
  xserver-xorg-video-neomagic xserver-xorg-video-nv xserver-xorg-video-openchrome xserver-xorg-video-r128 
  xserver-xorg-video-radeon xserver-xorg-video-radeonhd xserver-xorg-video-rendition xserver-xorg-video-s3 
  xserver-xorg-video-s3virge xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis 
  xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident xserver-xorg-video-tseng 
  xserver-xorg-video-vesa xserver-xorg-video-vmware xserver-xorg-video-voodoo xterm zlib1g 
Les paquets suivants sont RECOMMANDÉS mais ne seront pas installés :
  bzip2 gamin gcc gdm-themes hddtemp libapache2-reload-perl libatk1.0-data libatm1 libbsd-resource-perl libc6-dev libfribidi0 
  libglib2.0-data libgtk2.0-bin libhtml-format-perl libio-socket-inet6-perl liblog4j1.2-java-gcj libmail-spf-perl 
  libmailtools-perl libnss-lwres libpam-gnome-keyring libpaper-utils lm-sensors make nmap openoffice.org-emailmerge 
  openoffice.org-filter-binfilter pconf-detect rc re2c uuid-runtime wdiff xfwm4-themes xnest xserver-xephyr zenity 
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] 
&lt;/code&gt;

En fonction de votre connexion ça peut prendre très longtemps, et être interrompu (à 500KB/s une demi-heure à 50 KB/s c'est plusieurs heures...).
Un conseil, si vous n'êtes pas sûr de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

&lt;code&gt;
# aptitude -d safe-upgrade
...
 762Mo téléchargés en 1h9min37s (182ko/s)                                                          
Lecture des listes de paquets... Fait             
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait
&lt;/code&gt;

Puis

&lt;code&gt;
# aptitude safe-upgrade
...
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 0o/762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] y
&lt;/code&gt;

=== Déroulement ===

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut, mais prenez le temps de lire tous les messages, et si nécessaire, prenez des notes.

[[Fichier:Snapshot4.jpeg]]

[[Fichier:Snapshot5.jpeg]]

[[Fichier:Snapshot6.jpeg]]

[[Fichier:Snapshot7.jpeg]]

[[Fichier:Snapshot9.jpeg]]

[[Fichier:Snapshot11.jpeg]]

[[Fichier:Snapshot13.jpeg]]

[[Fichier:Snapshot14.jpeg]]

[[Fichier:Snapshot15.jpeg]]

[[Fichier:Snapshot16.jpeg]]

[[Fichier:Snapshot17.jpeg]]

Vous partirez d'une Lenny configurée, et donc de nombreux fichiers de configuration auront été modifiés par vos soins.
Il est judicieux de ne pas écraser vos configurations avec les fichiers par défauts proposés par les &quot;mainteneurs&quot; des paquets.
Vous aurez tout le loisir de regarder les modifications proposées, et ce qu'elles apportent, en regardant dans /usr/share/doc ou dans les contenus de vos deb téléchargés (dans /var/apt/archives)

[[Fichier:Snapshot18.jpeg]]

Sans le téléchargement des fichiers, comptez un peu plus d'une heure pour la mise à niveau

=== finalisation ===

Le safe-upgrade devrait se terminer par ceci :

&lt;code&gt;
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 4 mises à jour restantes [-721].
&lt;/code&gt;

Vous pouvez maintenant lancer un &quot;full-upgrade&quot;

&lt;code&gt;
# aptitude full-upgrade

...

4 paquets mis à jour, 13 nouvellement installés, 2 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 12,1Mo d'archives. Après dépaquetage, 14,3Mo seront utilisés.
Les paquets suivants ont des dépendances non satisfaites :
  libept0: Dépend: libapt-pkg-libc6.7-6-4.6 qui est un paquet virtuel
Les actions suivantes permettront de résoudre ces dépendances :

Supprimer les paquets suivants :
libept0

Le score est de 115

Accepter cette solution ? [Y/n/q/?]y

...

Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 0 mise à jour restante [-4].
&lt;/code&gt;

Si tout s'est bien passé, il ne vous reste plus qu'a redémarrer la machine :

 # reboot

=== Grub2 ===

Si vous étiez sous Grub-legacy vous aurez certainement fait la bascule vers Grub2.

La première &quot;surprise&quot; qui vous attend donc (sauf si vous avez lu ce guide avant...) c'est le menu suivant :

[[Fichier:Snapshot19.jpeg]]

Si vous appuyez sur entrée, cvous serez conduit vers le menu de Grub2.
Cette étape permet de vérifier que Grub2 est bien installé, et de le tester.

[[Fichier:Snapshot20.jpeg]]

Si cela fonctionne, une des premières choses à faire sera de confirmer l'installation de Grub2 en tapant dans une console la commande suivante :

 # upgrade-from-grub-legacy

=== LVM ===

Problème rencontré lors de la mise à niveau avec LVM...
Le système s'est mélangé les pédales dans l'attribution des partitions.
Résultat :

[[Fichier:Snapshot21.jpeg]]

Voici ou se situe le problème :

&lt;code&gt;
$ vdir /dev/l2s/
total 0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 home -&gt; ../dm-5
lrwxrwxrwx 1 root root 7 25 nov.  18:28 root -&gt; ../dm-0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 swap_1 -&gt; ../dm-1
lrwxrwxrwx 1 root root 7 25 nov.  18:28 tmp -&gt; ../dm-4
lrwxrwxrwx 1 root root 7 25 nov.  18:28 usr -&gt; ../dm-2
lrwxrwxrwx 1 root root 7 25 nov.  18:28 var -&gt; ../dm-3
&lt;/code&gt;
&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
# /dev/hda1	/boot	ext2	defaults	0	2
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-1	/usr	ext3	defaults	0	2
# /dev/hdb1	/var	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-3	none	swap	sw	0	0
# /dev/hdc	/media/cdrom0	udf,iso9660	user,noauto	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

Je ne sais pour quelle raison LVM à changé la numérotation des partitions... /usr est passé en dm-1 alors qu'il était en dm-2 et la swap en dm-3 alors qu'elle était être en dm-1
Il suffit de modifier le fichier /etc/fstab pour qu'il reflète à nouveau correctement vos partitions, et le tour est joué :

&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-2	/usr	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-1	none	swap	sw	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

== Bienvenu sur Squeeze ==

 laurent@lenny2squeeze:~$ uname -a
 Linux lenny2squeeze 2.6.32-5-amd64 #1 SMP Sat Oct 30 14:18:21 UTC 2010 x86_64 GNU/Linux

[[Fichier:Snapshot25.jpeg]]

A venir... Upgrade de Squeeze à ????

----
[[Utilisateur:Lol|Lol]] 25 novembre 2010 à 15:55 (EAT)
[[Catégorie:Installation]]</text>
      <sha1>1c6gn5v92gmlx6icav9770zbmpnieyq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2417</id>
      <parentid>2416</parentid>
      <timestamp>2010-11-25T14:16:12Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Problèmes de dépendances */</comment>
      <text xml:space="preserve" bytes="31486">{{sid}}

La mise à niveau de Lenny à Squeeze se précise, nous allons faire ici un rapide résumé des opérations nécessaires à la réussite de cette mise à niveau (upgrade).
LVM est installé sur la machine que nous allons mettre à niveau afin de tester le plus de possibilités.

Avant toute chose, je souhaite faire quelques précisions :
Chaque configuration est propre à chacun, en fonction de ses goûts, de son matériel et de ses connaissances.
Un guide universel n'existe donc pas.

Prévoyez aussi d'avoir du temps devant vous, et d'être au calme.

Nous choisirons d'utiliser aptitude au lieu de apt-get, il est en effet plus exigeant concernant les dépendances, votre mise à niveau sera plus &quot;propre&quot;.

J'ai choisi une Lenny avec toutes les options de tasksel activées afin de faire un tour d'horizon le plus vaste possible des problèmes qui pourraient survenir.
L'environnement graphique est Xfce.

[[Fichier:Snapshot3.jpeg]]

== Pré-requis ==

=== Une bonne sauvegarde ===

Vous n'avez AUCUNE garantie que la mise à niveau se passe bien, alors, quel que soit la méthode que vous emploierez, une sauvegarde est le minimum que vous puissiez faire avant de vous lancer dans l'aventure..

Avec dd, dump ou simplement cp SAUVEGARDEZ !

=== Un système à jour! ===

Le fichier sources.list précédent la mise à niveau :

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org stable main non-free
#deb-src http://www.debian-multimedia.org stable main non-free

# backports
deb http://backports.debian.org/debian-backports lenny-backports main contrib non-free
&lt;/code&gt;

 # aptitude update
 # aptitude safe-upgrade
 # aptitude full-upgrade

=== De l'espace! ===

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition où se trouve /var pour le stockage des paquets téléchargés.

Pour info une mise à jour &quot;lourde&quot; se soldera par le téléchargement d'environ 1Go...

Pour connaitre l’espace libre de votre partition racine :

 $ df -H
 Sys. de fich.          Tail.  Occ.  Disp. %Occ. Monté sur
 '''/dev/dm-0              338M   123M   198M  39% /'''
 tmpfs                  262M      0   262M   0% /lib/init/rw
 udev                    11M   689k   9,8M   7% /dev
 tmpfs                  262M      0   262M   0% /dev/shm
 /dev/hda1              239M    20M   207M   9% /boot
 /dev/dm-5              3,7G    75M   3,4G   3% /home
 /dev/dm-4              317M    11M   290M   4% /tmp
 /dev/dm-1              3,7G   1,7G   1,8G  50% /usr
 '''/dev/hdb1              5,3G   1,1G   4,0G  21% /var'''
 /dev/dm-2              1,8G   876M   818M  52% /media/dm-2

'''Si vous disposez de plus de 50% d’espace libre vous pouvez passer à l'étape suivante'''.

Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Si cela ne suffit toujours pas, il faut envisager d'ajouter un disque à votre système, ou de procéder à un upgrade par étapes successives (en mettant à jour les paquets progressivement et en nettoyant à chaque étape)

=== Les pilotes de la carte Graphique ===

Afin de ne pas avoir de mauvaise surprise avec le serveur X, modifiez votre xorg.conf afin d'utiliser des pilotes Debian.

Eventuellement utilisez les pilotes &quot;vesa&quot;

Dans votre fichier /etc/X11/xorg.conf

&lt;code&gt;
Section &quot;Device&quot;
    Identifier     &quot;Device0&quot;
    Driver         &quot;vesa&quot;
EndSection
&lt;/code&gt;

Si vous êtes sur de vous, n'en faites rien, mais prévoyez une réinstallation des pilotes avant le premier redémarrage.

=== Le fichier sources.list ===

Créons un nouveau sources.list que nous placerons dans /etc/apt/sources.list.d
Nous prenons dores et déjà la bonne habitude d'utiliser ce dossier qui est devenu celui par défaut pour mettre les fichiers contenant les dépôts.

 # nano /etc/apt/sources.list.d/sources.list

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free

# stable security
deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

## stable volatile
## Il n'y a pas de dépôt volatile pour squeeze pour l'instant
## deb http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free
## deb-src http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org squeeze main non-free
#deb-src http://www.debian-multimedia.org squeeze main non-free

# backports
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
&lt;/code&gt;

== Préparation de la mise à niveau ==

Maintenant que nous sommes prêts, nous pouvons lancer l'upgrade :

Mise à jour de la liste des paquets :

 # aptitude update

=== Si vous avez des problèmes de clefs ===

 W: GPG error: http://www.debian-multimedia.org

 # aptitude install debian-backports-keyring
 # aptitude install debian-multimedia-keyring

=== Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]] ===

 E: Dynamic MMap ran out of room

 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaite l'update, il ne doit pas y avoir d'erreurs

 # aptitude update

=== Problèmes de dépendances ===

Vous ne pourrez pas faire le passage de Lenny à Squeeze tant que subsisteront des problèmes de dépendances...

Voici deux exemples de problèmes de dépendances, et la manière de les régler :

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  xfce4-mixer-oss: Est en conflit avec: xfce4-mixer-alsa mais 4.4.2-3 est installé.
  foomatic-db: Est en conflit avec: foomatic-db-hpijs mais 20080211-1 est installé.
  xfce4-mixer-alsa: Est en conflit avec: xfce4-mixer-oss mais 4.4.2-3 doit être installé.

# aptitude install foomatic-db xfce4-mixer-alsa
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Lecture des descriptions de tâches... Fait  
Les NOUVEAUX paquets suivants vont être installés : 
  libopenjpeg2{a} libpoppler5{a} min12xxw{a} pnm2ppa{a} 
Les paquets suivants seront ENLEVÉS : 
  foomatic-db-hpijs{a} 
Les paquets suivants seront mis à jour : 
  fontconfig-config foomatic-db foomatic-db-engine foomatic-filters libfontconfig1 libjpeg62 libxml2 poppler-utils 
8 paquets mis à jour, 4 nouvellement installés, 1 à enlever et 728 non mis à jour.
Il est nécessaire de télécharger 4722ko d'archives. Après dépaquetage, 18,2Mo seront libérés.
Voulez-vous continuer ? [Y/n/?] o
...
État actuel : 728 mises à jour restantes [-8].
&lt;/code&gt;

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  libatlas3gf-base: Est en conflit avec: libblas3gf (&lt; 1.2-5) mais 1.2-2 est installé et a été conservé
                    Est en conflit avec: liblapack3gf (&lt; 3.2.1-4) mais 3.1.1-1 est installé et a été conservé
  rarian-compat: Est en conflit avec: scrollkeeper (&lt; 0.4) mais 0.3.14-16 est installé et a été conservé

# aptitude install libatlas3gf-base scrollkeeper
...
Les actions suivantes permettront de résoudre ces dépendances :

Mettre à jour les paquets suivants :
libblas3gf [1.2-2 (stable, now) -&gt; 1.2-8 (testing)]
liblapack3gf [3.1.1-1 (stable, now) -&gt; 3.2.1-8 (testing)]

Le score est de 70

Accepter cette solution ? [Y/n/q/?] y
...
État actuel : 725 mises à jour restantes [-3].
&lt;/code&gt;

En cas de doute n'hésitez pas à demander un avis [http://forum.debian-fr.org/ sur le forum]

=== stopper le serveur X ===

'''IMPORTANT''' : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

== Lancez la mise à niveau ==

&lt;code&gt;
# aptitude safe-upgrade
...
Les paquets suivants ont été conservés : 
  apt apt-utils aptitude synaptic 
Les NOUVEAUX paquets suivants vont être installés : 
  acpi-fakekey{a} apache2.2-bin{a} aumix{a} aumix-common{a} bluez{a} bluez-alsa{a} bluez-cups{a} bluez-gstreamer{a} 
  browser-plugin-gnash{a} cifs-utils{a} consolekit{a} cpp-4.4{a} cracklib-runtime{a} cups-ppdc{a} dash{a} db4.8-util{a} 
  diffutils{a} dosfstools{a} firmware-linux-free{a} freepats{a} fuse-utils{a} gcc-4.4-base{a} gcj-4.4-base{a} 
  gcj-4.4-jre-lib{a} geoip-database{a} ghostscript-cups{a} gnash{a} gnash-common{a} gnupg-curl{a} grub-pc{a} 
  gstreamer0.10-ffmpeg{a} gstreamer0.10-fluendo-mp3{a} gstreamer0.10-plugins-bad{a} gstreamer0.10-plugins-base{a} gvfs{a} 
  hplip-cups{a} insserv{a} install-info{a} isc-dhcp-client{a} isc-dhcp-common{a} iso-codes{a} keyboard-configuration{a} 
  libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libass4{a} libatasmart4{a} libaudit0{a} libavahi-core7{a} libavcodec52{a} 
  libavformat52{a} libavutil50{a} libbabl-0.0-0{a} libbind9-60{a} libbluetooth3{a} libboost-date-time1.42.0{a} 
  libboost-thread1.42.0{a} libbsd0{a} libburn4{a} libc-bin{a} libc-client2007e{a} libcap-ng0{a} libcdaudio1{a} libcdio10{a} 
  libcdparanoia0{a} libcelt0-0{a} libck-connector0{a} libcolamd2.7.1{a} libcommons-beanutils-java{a} 
  libcommons-collections3-java{a} libcommons-compress-java{a} libcommons-digester-java{a} libcommons-logging-java{a} 
  libcrack2{a} libcupscgi1{a} libcupsdriver1{a} libcupsmime1{a} libcupsppdc1{a} libdatrie1{a} libdb-je-java{a} libdb4.7{a} 
  libdb4.7-java{a} libdb4.7-java-gcj{a} libdb4.8{a} libdc1394-22{a} libdca0{a} libdirac-encoder0{a} libdirectfb-1.2-9{a} 
  libdns66{a} libdrm-intel1{a} libdrm-nouveau1{a} libdrm-radeon1{a} libdvdnav4{a} libdvdread4{a} libeggdbus-1-0{a} libenca0{a} 
  libenchant1c2a{a} libevent-1.4-2{a} libexempi3{a} libexo-common{a} libfaad2{a} libfftw3-3{a} libfile-copy-recursive-perl{a} 
  libflite1{a} libfont-freetype-perl{a} libfuse2{a} libgcj10{a} libgcr0{a} libgdu0{a} libgegl-0.0-0{a} libgeoip1{a} libgif4{a} 
  libgme0{a} libgomp1{a} libgp11-0{a} libgpgme11{a} libgraphicsmagick3{a} libgraphite3{a} libgssapi-krb5-2{a} libgtkglext1{a} 
  libgudev-1.0-0{a} libhpmud0{a} libicu44{a} libicu4j-java{a} libiptcdata0{a} libisc60{a} libisccc60{a} libisccfg60{a} 
  libiso9660-7{a} libisofs6{a} libiw30{a} libjbig2dec0{a} libjpeg-progs{a} libjpeg8{a} libjtidy-java{a} libk5crypto3{a} 
  libkate1{a} libkrb5-3{a} libkrb5support0{a} libltdl7{a} liblucene2-java{a} liblwres60{a} liblzma2{a} libmimic0{a} libmms0{a} 
  libmodplug1{a} libmozjs2d{a} libmpcdec6{a} libmpfr4{a} libmusicbrainz4c2a{a} libmythes-1.2-0{a} libneon27-gnutls{a} 
  libnetaddr-ip-perl{a} libnfnetlink0{a} libnl1{a} libntfs-3g75{a} libntfs10{a} libofa0{a} libonig2{a} libopencore-amrnb0{a} 
  libopencore-amrwb0{a} libopenraw1{a} liborc-0.4-0{a} libossp-uuid16{a} libpam-ck-connector{a} libpam-cracklib{a} 
  libpango-perl{a} libpangomm-1.4-1{a} libparted0debian1{a} libpciaccess0{a} libpolkit-agent-1-0{a} libpolkit-backend-1-0{a} 
  libpolkit-gobject-1-0{a} libpoppler-glib4{a} libpth20{a} libpython2.6{a} libqdbm14{a} libraptor1{a} librasqal2{a} 
  libraw1394-11{a} librdf0{a} libreadline6{a} librtmp0{a} libsane-hpaio{a} libsasl2-modules{a} libservlet2.5-java{a} 
  libsexy2{a} libsgutils2-2{a} libslv2-9{a} libsndfile1{a} libsoundtouch1c2{a} libswscale0{a} libtag1-vanilla{a} libtalloc2{a} 
  libtextcat-data-utf8{a} libtokyocabinet8{a} libudev0{a} libunique-1.0-0{a} libusb-1.0-0{a} libutempter0{a} libuuid-perl{a} 
  libv4l-0{a} libva1{a} libvcdinfo0{a} libvisual-0.4-0{a} libvisual-0.4-plugins{a} libvpx0{a} libwebkit-1.0-2{a} 
  libwebkit-1.0-common{a} libwildmidi1{a} libwnck-common{a} libwnck22{a} libx11-xcb1{a} libx264-104{a} libxcb-atom1{a} 
  libxcb-aux0{a} libxcb-dri2-0{a} libxcb-event1{a} libxfce4menu-0.1-0{a} libxfce4util-bin{a} libxfce4util-common{a} 
  libxfconf-0-2{a} libxklavier16{a} libxml-parser-perl{a} libxres1{a} libzbar0{a} linux-base{a} linux-image-2.6.32-5-amd64{a} 
  lockfile-progs{a} lsb-release{a} mtools{a} ntfsprogs{a} os-prober{a} oss-compat{a} php5-cli{a} php5-suhosin{a} 
  policykit-1{a} policykit-1-gnome{a} postgresql-8.4{a} postgresql-client-8.4{a} postgresql-contrib-8.4{a} 
  postgresql-doc-8.4{a} python-cups{a} python-gconf{a} python-numpy{a} python-pexpect{a} python-reportbug{a} python-webkit{a} 
  python2.6{a} python2.6-minimal{a} ristretto{a} samba-common-bin{a} sane-utils{a} sensible-utils{a} squeeze{a} 
  tango-icon-theme{a} thunar-archive-plugin{a} thunar-volman{a} tsconf{a} ttf-freefont{a} ttf-lyx{a} ttf-sil-gentium{a} 
  ttf-sil-gentium-basic{a} udisks{a} uno-libs3{a} unzip{a} ure{a} x-ttcidfont-conf{a} xdg-user-dirs{a} xfburn{a} 
  xfce-keyboard-shortcuts{a} xfce4-appfinder{a} xfce4-clipman{a} xfce4-datetime-plugin{a} xfce4-dict{a} xfce4-notes{a} 
  xfce4-notifyd{a} xfce4-places-plugin{a} xfce4-power-manager{a} xfce4-power-manager-data{a} xfce4-screenshooter{a} 
  xfce4-settings{a} xfce4-taskmanager{a} xfce4-timer-plugin{a} xfce4-xkb-plugin{a} xfconf{a} xfonts-mathml{a} xinput{a} xli{a} 
  xorg-docs-core{a} xscreensaver{a} xscreensaver-data{a} xserver-common{a} xserver-xorg-video-nouveau{a} xulrunner-1.9.1{a} 
  xz-utils{a} 
Les paquets suivants seront ENLEVÉS : 
  bluez-utils{u} cpp-4.3{u} cupsddk-drivers{u} djvulibre-desktop{u} finger{u} gs-common{u} liba52-0.7.4{u} libamrnb3{u} 
  libamrwb3{u} libaudio2{u} libavahi-compat-libdnssd1{u} libavahi-core5{u} libavc1394-0{u} libavcodec51{u} libbind9-50{u} 
  libbluetooth2{u} libc-client2007b{u} libcap1{u} libcucul0{u} libcupsys2{u} libcurl3{u} libdatrie0{u} libdirac0{u} 
  libdjvulibre21{u} libfaad0{u} libfreebob0{u} libgail-common{u} libgraphviz4{u} libgtkhtml2-0{u} libicu38{u} libiec61883-0{u} 
  libisccc50{u} libisccfg50{u} libiw29{u} libjaxp1.3-java-gcj{u} libltdl3{u} liblwres50{u} libmagick10{u} libmodplug0c2{u} 
  libmozjs1d{u} libmpcdec3{u} libmpfr1ldbl{u} libmysqlclient15off{u} libneon27{u} libntfs-3g31{u} libossp-uuid15{u} 
  libparted1.8-10{u} libpoppler-glib3{u} libpoppler3{u} libqt3-mt{u} libraw1394-8{u} libsensors3{u} libservlet2.4-java{u} 
  libsmbios-bin{u} libsmbios2{u} libssh2-1{u} libsuitesparse-3.1.0{u} libswfdec-0.6-90{u} libtalloc1{u} libvolume-id0{u} 
  libx264-65{u} libxalan2-java{u} libxalan2-java-gcj{u} libxcb-xlib0{u} libxerces2-java{u} libxerces2-java-gcj{u} 
  libxfce4mcs-client3{u} libxfce4mcs-manager3{u} libxtrap6{u} libxxf86misc1{u} mysql-common{u} openoffice.org-writer2latex{u} 
  openssl-blacklist{u} postgresql-8.3{u} postgresql-client-8.3{u} postgresql-contrib-8.3{u} postgresql-doc-8.3{u} 
  python-gtkhtml2{u} python-numeric{u} svgalibg1{u} xfce4-icon-theme{u} xfce4-mcs-manager{u} xfce4-mcs-plugins{u} 
  xfce4-minicmd-plugin{u} xfce4-screenshooter-plugin{u} xserver-xorg-video-cyrix{u} xserver-xorg-video-v4l{u} 
  xserver-xorg-video-vga{u} xulrunner-1.9{u} 
Les paquets suivants seront mis à jour : 
  a2ps acpi acpi-support acpi-support-base acpid adduser alsa-base alsa-utils anacron analog apache2 apache2-doc 
  apache2-mpm-prefork apache2-utils apache2.2-common apmd aspell aspell-fr at avahi-autoipd avahi-daemon base-files 
  base-passwd bash bash-completion bc bind9 bind9-doc bind9-host bind9utils bluetooth bsd-mailx bsdmainutils bsdutils bsh 
  bsh-gcj busybox ca-certificates console-common console-data console-setup console-terminus console-tools coreutils cpio cpp 
  cpufrequtils cron cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk dbus dbus-x11 dc debconf debconf-i18n 
  debian-archive-keyring debian-faq debianutils deborphan defoma desktop-base desktop-file-utils dhcp3-client dhcp3-common 
  dialog dictionaries-common diff disk-manager dmidecode dmsetup dnsutils doc-debian docbook-xml dpkg e2fslibs e2fsprogs ed 
  eject esound-common exim4 exim4-base exim4-config exim4-daemon-light exo-utils fastjar file findutils fontconfig foo2zjs 
  foomatic-db-gutenprint foomatic-filters-ppds foomatic-gui fortune-mod fortunes-min ftp gcc-4.3-base gconf2 gconf2-common gdm 
  gettext-base ghostscript gimp gimp-data gksu gnome-keyring gnupg gparted gpgv grep groff-base grub grub-common gsfonts 
  gtk2-engines-xfce gzip hal hal-info hdparm hibernate hicolor-icon-theme hostname hpijs hplip hplip-data iamerican ibritish 
  iceweasel iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint info initramfs-tools initscripts installation-report iproute 
  iptables iputils-ping ispell java-common kerneloops klibc-utils laptop-detect less libaa1 libacl1 libapache2-mod-perl2 
  libapache2-mod-php5 libapache2-mod-python libapm1 libapr1 libaprutil1 libart-2.0-2 libasound2 libaspell15 libatk1.0-0 
  libattr1 libaudiofile0 libavahi-client3 libavahi-common-data libavahi-common3 libavahi-glib1 libavutil49 libbcel-java 
  libblkid1 libbonobo2-0 libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i386 libcaca0 
  libcairo-perl libcairo2 libcairomm-1.0-1 libcap2 libcomerr2 libconsole libcpufreq0 libcroco3 libcups2 libcupsimage2 
  libcurl3-gnutls libcwidget3 libdaemon0 libdb4.6 libdbus-1-3 libdbus-glib-1-2 libdevel-symdump-perl libdevmapper1.02.1 
  libdigest-hmac-perl libdigest-sha1-perl libdirectfb-extra libdmx1 libdrm2 libedit2 libesd0 libexif12 libexo-0.3-0 libexpat1 
  libfaac0 libfam0 libffi5 libflac8 libfontenc1 libfreetype6 libfs6 libgail18 libgc1c2 libgcc1 libgcj-bc libgcj-common 
  libgconf2-4 libgcrypt11 libgd2-noxpm libgdbm3 libgfortran3 libgimp2.0 libgksu2-0 libgl1-mesa-dri libgl1-mesa-glx libglade2-0 
  libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgmp3c2 libgnome-keyring0 libgnome2-0 libgnome2-canvas-perl 
  libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0 libgnomecanvas2-common libgnomeui-0 libgnomeui-common 
  libgnomevfs2-0 libgnomevfs2-common libgnomevfs2-extra libgnutls26 libgpg-error0 libgphoto2-2 libgphoto2-port0 libgpm2 libgs8 
  libgsf-1-114 libgsf-1-common libgsm1 libgssglue1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0 
  libgtk2.0-common libgtkmm-2.4-1c2a libgtop2-7 libgtop2-common libgutenprint2 libhal-storage1 libhal1 libhsqldb-java 
  libhsqldb-java-gcj libhtml-parser-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libice6 libidl0 libidn11 libieee1284-3 
  libijs-0.35 libilmbase6 libjack0 libjasper1 libjaxp1.3-java libjline-java libkeyutils1 libklibc libkrb53 liblcms1 
  libldap-2.4-2 liblocale-gettext-perl liblockfile1 liblog4j1.2-java liblzo2-2 libmad0 libmagic1 libmng1 libmp3lame0 
  libmx4j-java libncurses5 libncursesw5 libnet-dns-perl libnewt0.52 libnfsidmap2 libnotify1 libnspr4-0d libnss-mdns libnss3-1d 
  libogg0 liboil0.3 libopenexr6 liborbit2 libpam-modules libpam-runtime libpam0g libpango1.0-0 libpango1.0-common libpaper1 
  libpci3 libpcre3 libpcsclite1 libperl5.10 libpixman-1-0 libpng12-0 libpopt0 libpostproc51 libpq5 libpulse0 libreadline5 
  librecode0 libregexp-java librpcsecgss3 librsvg2-2 librsvg2-common libsane libsane-extras libsasl2-2 libschroedinger-1.0-0 
  libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsensors4 libsepol1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 
  libsmbclient libsnmp-base libsnmp15 libsocket6-perl libsoup2.4-1 libsqlite3-0 libss2 libssl0.9.8 libstartup-notification0 
  libstdc++6 libsvga1 libsysfs2 libtag1c2a libtagc0 libtasn1-3 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl 
  libthai-data libthai0 libtheora0 libthunar-vfs-1-2 libtiff4 libts-0.0-0 liburi-perl libusb-0.1-4 libuuid1 libvorbis0a 
  libvorbisenc2 libvte-common libvte9 libwavpack1 libwbclient0 libwmf0.2-7 libwpg-0.1-1 libwrap0 libwww-perl libx11-6 
  libx11-data libx86-1 libxau6 libxaw7 libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xv0 libxcb1 
  libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfce4util4 libxfcegui4-4 libxfixes3 libxfont1 libxft2 libxi6 
  libxine1 libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins libxine1-plugins libxine1-x libxinerama1 
  libxkbfile1 libxmu6 libxmuu1 libxpm4 libxrandr2 libxrender1 libxslt1.1 libxss1 libxt6 libxtst6 libxv1 libxvidcore4 libxvmc1 
  libxxf86dga1 libxxf86vm1 linux-image-2.6-amd64 linux-sound-base locales login logrotate lp-solve lsb-base lsof lvm2 lwresd 
  m4 mailagent makedev man-db manpages manpages-fr manpages-fr-extra mawk mc menu mime-support mktemp mlocate mlock 
  module-init-tools mount mousepad mutt myspell-en-us myspell-fr-gut nano ncurses-base ncurses-bin ncurses-term net-tools 
  netatalk netbase nfs-common nfs-kernel-server ntfs-3g nvclock openbsd-inetd openoffice.org openoffice.org-base 
  openoffice.org-base-core openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw 
  openoffice.org-filter-mobiledev openoffice.org-gcj openoffice.org-gtk openoffice.org-help-en-us openoffice.org-help-fr 
  openoffice.org-impress openoffice.org-java-common openoffice.org-l10n-fr openoffice.org-math openoffice.org-officebean 
  openoffice.org-report-builder-bin openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-thesaurus-en-us 
  openoffice.org-writer openprinting-ppds openssh-client openssh-server openssl orage passwd patch pciutils pcmciautils perl 
  perl-base perl-modules php5-common pm-utils popularity-contest portmap postgresql postgresql-client postgresql-client-common 
  postgresql-common postgresql-contrib postgresql-doc powermgmt-base powertop printconf procmail procps psmisc psutils python 
  python-cairo python-central python-dbus python-foomatic python-glade2 python-gnome2 python-gobject python-gtk2 
  python-imaging python-ipy python-minimal python-pyorbit python-support python2.5 python2.5-minimal qpopper radeontool 
  readline-common reportbug rsyslog sa-exim samba samba-common samba-doc sed sgml-base sgml-data shared-mime-info 
  smartmontools smbclient smbfs spamassassin spamc ssl-cert sudo swat swfdec-mozilla sysv-rc sysvinit sysvinit-utils tar 
  tasksel tasksel-data tcpd texinfo thunar thunar-data thunar-media-tags-plugin time toshset traceroute ttf-dejavu 
  ttf-dejavu-core ttf-dejavu-extra ttf-liberation ttf-opensymbol tzdata ucf udev update-inetd usbutils util-linux uw-imapd 
  vbetool vim-common vim-tiny w3m wamerican wfrench wget whiptail whois winbind wireless-tools wpasupplicant x11-apps 
  x11-common x11-session-utils x11-utils x11-xfs-utils x11-xkb-utils x11-xserver-utils xauth xbitmaps xdg-utils xfce4 
  xfce4-battery-plugin xfce4-clipman-plugin xfce4-cpufreq-plugin xfce4-cpugraph-plugin xfce4-diskperf-plugin 
  xfce4-fsguard-plugin xfce4-genmon-plugin xfce4-goodies xfce4-mailwatch-plugin xfce4-mixer xfce4-mount-plugin 
  xfce4-netload-plugin xfce4-notes-plugin xfce4-panel xfce4-quicklauncher-plugin xfce4-sensors-plugin xfce4-session 
  xfce4-smartbookmark-plugin xfce4-systemload-plugin xfce4-terminal xfce4-utils xfce4-verve-plugin xfce4-wavelan-plugin 
  xfce4-weather-plugin xfdesktop4 xfdesktop4-data xfonts-100dpi xfonts-75dpi xfonts-base xfonts-encodings xfonts-intl-european 
  xfonts-scalable xfonts-utils xfprint4 xfwm4 xinit xkb-data xml-core xorg xsane xsane-common xserver-xorg xserver-xorg-core 
  xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd xserver-xorg-input-mouse xserver-xorg-input-synaptics 
  xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati 
  xserver-xorg-video-chips xserver-xorg-video-cirrus xserver-xorg-video-dummy xserver-xorg-video-fbdev 
  xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-intel xserver-xorg-video-mach64 xserver-xorg-video-mga 
  xserver-xorg-video-neomagic xserver-xorg-video-nv xserver-xorg-video-openchrome xserver-xorg-video-r128 
  xserver-xorg-video-radeon xserver-xorg-video-radeonhd xserver-xorg-video-rendition xserver-xorg-video-s3 
  xserver-xorg-video-s3virge xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis 
  xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident xserver-xorg-video-tseng 
  xserver-xorg-video-vesa xserver-xorg-video-vmware xserver-xorg-video-voodoo xterm zlib1g 
Les paquets suivants sont RECOMMANDÉS mais ne seront pas installés :
  bzip2 gamin gcc gdm-themes hddtemp libapache2-reload-perl libatk1.0-data libatm1 libbsd-resource-perl libc6-dev libfribidi0 
  libglib2.0-data libgtk2.0-bin libhtml-format-perl libio-socket-inet6-perl liblog4j1.2-java-gcj libmail-spf-perl 
  libmailtools-perl libnss-lwres libpam-gnome-keyring libpaper-utils lm-sensors make nmap openoffice.org-emailmerge 
  openoffice.org-filter-binfilter pconf-detect rc re2c uuid-runtime wdiff xfwm4-themes xnest xserver-xephyr zenity 
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] 
&lt;/code&gt;

En fonction de votre connexion ça peut prendre très longtemps, et être interrompu (à 500KB/s une demi-heure à 50 KB/s c'est plusieurs heures...).
Un conseil, si vous n'êtes pas sûr de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

&lt;code&gt;
# aptitude -d safe-upgrade
...
 762Mo téléchargés en 1h9min37s (182ko/s)                                                          
Lecture des listes de paquets... Fait             
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait
&lt;/code&gt;

Puis

&lt;code&gt;
# aptitude safe-upgrade
...
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 0o/762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] y
&lt;/code&gt;

=== Déroulement ===

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut, mais prenez le temps de lire tous les messages, et si nécessaire, prenez des notes.

[[Fichier:Snapshot4.jpeg]]

[[Fichier:Snapshot5.jpeg]]

[[Fichier:Snapshot6.jpeg]]

[[Fichier:Snapshot7.jpeg]]

[[Fichier:Snapshot9.jpeg]]

[[Fichier:Snapshot11.jpeg]]

[[Fichier:Snapshot13.jpeg]]

[[Fichier:Snapshot14.jpeg]]

[[Fichier:Snapshot15.jpeg]]

[[Fichier:Snapshot16.jpeg]]

[[Fichier:Snapshot17.jpeg]]

Vous partirez d'une Lenny configurée, et donc de nombreux fichiers de configuration auront été modifiés par vos soins.
Il est judicieux de ne pas écraser vos configurations avec les fichiers par défauts proposés par les &quot;mainteneurs&quot; des paquets.
Vous aurez tout le loisir de regarder les modifications proposées, et ce qu'elles apportent, en regardant dans /usr/share/doc ou dans les contenus de vos deb téléchargés (dans /var/apt/archives)

[[Fichier:Snapshot18.jpeg]]

Sans le téléchargement des fichiers, comptez un peu plus d'une heure pour la mise à niveau

=== finalisation ===

Le safe-upgrade devrait se terminer par ceci :

&lt;code&gt;
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 4 mises à jour restantes [-721].
&lt;/code&gt;

Vous pouvez maintenant lancer un &quot;full-upgrade&quot;

&lt;code&gt;
# aptitude full-upgrade

...

4 paquets mis à jour, 13 nouvellement installés, 2 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 12,1Mo d'archives. Après dépaquetage, 14,3Mo seront utilisés.
Les paquets suivants ont des dépendances non satisfaites :
  libept0: Dépend: libapt-pkg-libc6.7-6-4.6 qui est un paquet virtuel
Les actions suivantes permettront de résoudre ces dépendances :

Supprimer les paquets suivants :
libept0

Le score est de 115

Accepter cette solution ? [Y/n/q/?]y

...

Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 0 mise à jour restante [-4].
&lt;/code&gt;

Si tout s'est bien passé, il ne vous reste plus qu'a redémarrer la machine :

 # reboot

=== Grub2 ===

Si vous étiez sous Grub-legacy vous aurez certainement fait la bascule vers Grub2.

La première &quot;surprise&quot; qui vous attend donc (sauf si vous avez lu ce guide avant...) c'est le menu suivant :

[[Fichier:Snapshot19.jpeg]]

Si vous appuyez sur entrée, cvous serez conduit vers le menu de Grub2.
Cette étape permet de vérifier que Grub2 est bien installé, et de le tester.

[[Fichier:Snapshot20.jpeg]]

Si cela fonctionne, une des premières choses à faire sera de confirmer l'installation de Grub2 en tapant dans une console la commande suivante :

 # upgrade-from-grub-legacy

=== LVM ===

Problème rencontré lors de la mise à niveau avec LVM...
Le système s'est mélangé les pédales dans l'attribution des partitions.
Résultat :

[[Fichier:Snapshot21.jpeg]]

Voici ou se situe le problème :

&lt;code&gt;
$ vdir /dev/l2s/
total 0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 home -&gt; ../dm-5
lrwxrwxrwx 1 root root 7 25 nov.  18:28 root -&gt; ../dm-0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 swap_1 -&gt; ../dm-1
lrwxrwxrwx 1 root root 7 25 nov.  18:28 tmp -&gt; ../dm-4
lrwxrwxrwx 1 root root 7 25 nov.  18:28 usr -&gt; ../dm-2
lrwxrwxrwx 1 root root 7 25 nov.  18:28 var -&gt; ../dm-3
&lt;/code&gt;
&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
# /dev/hda1	/boot	ext2	defaults	0	2
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-1	/usr	ext3	defaults	0	2
# /dev/hdb1	/var	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-3	none	swap	sw	0	0
# /dev/hdc	/media/cdrom0	udf,iso9660	user,noauto	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

Je ne sais pour quelle raison LVM à changé la numérotation des partitions... /usr est passé en dm-1 alors qu'il était en dm-2 et la swap en dm-3 alors qu'elle était être en dm-1
Il suffit de modifier le fichier /etc/fstab pour qu'il reflète à nouveau correctement vos partitions, et le tour est joué :

&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-2	/usr	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-1	none	swap	sw	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

== Bienvenu sur Squeeze ==

 laurent@lenny2squeeze:~$ uname -a
 Linux lenny2squeeze 2.6.32-5-amd64 #1 SMP Sat Oct 30 14:18:21 UTC 2010 x86_64 GNU/Linux

[[Fichier:Snapshot25.jpeg]]

A venir... Upgrade de Squeeze à ????

----
[[Utilisateur:Lol|Lol]] 25 novembre 2010 à 15:55 (EAT)
[[Catégorie:Installation]]</text>
      <sha1>d9g4940hogv0cfcypffqc7fpw32h8t1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2418</id>
      <parentid>2417</parentid>
      <timestamp>2010-11-25T14:19:15Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Déroulement */</comment>
      <text xml:space="preserve" bytes="31485">{{sid}}

La mise à niveau de Lenny à Squeeze se précise, nous allons faire ici un rapide résumé des opérations nécessaires à la réussite de cette mise à niveau (upgrade).
LVM est installé sur la machine que nous allons mettre à niveau afin de tester le plus de possibilités.

Avant toute chose, je souhaite faire quelques précisions :
Chaque configuration est propre à chacun, en fonction de ses goûts, de son matériel et de ses connaissances.
Un guide universel n'existe donc pas.

Prévoyez aussi d'avoir du temps devant vous, et d'être au calme.

Nous choisirons d'utiliser aptitude au lieu de apt-get, il est en effet plus exigeant concernant les dépendances, votre mise à niveau sera plus &quot;propre&quot;.

J'ai choisi une Lenny avec toutes les options de tasksel activées afin de faire un tour d'horizon le plus vaste possible des problèmes qui pourraient survenir.
L'environnement graphique est Xfce.

[[Fichier:Snapshot3.jpeg]]

== Pré-requis ==

=== Une bonne sauvegarde ===

Vous n'avez AUCUNE garantie que la mise à niveau se passe bien, alors, quel que soit la méthode que vous emploierez, une sauvegarde est le minimum que vous puissiez faire avant de vous lancer dans l'aventure..

Avec dd, dump ou simplement cp SAUVEGARDEZ !

=== Un système à jour! ===

Le fichier sources.list précédent la mise à niveau :

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org stable main non-free
#deb-src http://www.debian-multimedia.org stable main non-free

# backports
deb http://backports.debian.org/debian-backports lenny-backports main contrib non-free
&lt;/code&gt;

 # aptitude update
 # aptitude safe-upgrade
 # aptitude full-upgrade

=== De l'espace! ===

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition où se trouve /var pour le stockage des paquets téléchargés.

Pour info une mise à jour &quot;lourde&quot; se soldera par le téléchargement d'environ 1Go...

Pour connaitre l’espace libre de votre partition racine :

 $ df -H
 Sys. de fich.          Tail.  Occ.  Disp. %Occ. Monté sur
 '''/dev/dm-0              338M   123M   198M  39% /'''
 tmpfs                  262M      0   262M   0% /lib/init/rw
 udev                    11M   689k   9,8M   7% /dev
 tmpfs                  262M      0   262M   0% /dev/shm
 /dev/hda1              239M    20M   207M   9% /boot
 /dev/dm-5              3,7G    75M   3,4G   3% /home
 /dev/dm-4              317M    11M   290M   4% /tmp
 /dev/dm-1              3,7G   1,7G   1,8G  50% /usr
 '''/dev/hdb1              5,3G   1,1G   4,0G  21% /var'''
 /dev/dm-2              1,8G   876M   818M  52% /media/dm-2

'''Si vous disposez de plus de 50% d’espace libre vous pouvez passer à l'étape suivante'''.

Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Si cela ne suffit toujours pas, il faut envisager d'ajouter un disque à votre système, ou de procéder à un upgrade par étapes successives (en mettant à jour les paquets progressivement et en nettoyant à chaque étape)

=== Les pilotes de la carte Graphique ===

Afin de ne pas avoir de mauvaise surprise avec le serveur X, modifiez votre xorg.conf afin d'utiliser des pilotes Debian.

Eventuellement utilisez les pilotes &quot;vesa&quot;

Dans votre fichier /etc/X11/xorg.conf

&lt;code&gt;
Section &quot;Device&quot;
    Identifier     &quot;Device0&quot;
    Driver         &quot;vesa&quot;
EndSection
&lt;/code&gt;

Si vous êtes sur de vous, n'en faites rien, mais prévoyez une réinstallation des pilotes avant le premier redémarrage.

=== Le fichier sources.list ===

Créons un nouveau sources.list que nous placerons dans /etc/apt/sources.list.d
Nous prenons dores et déjà la bonne habitude d'utiliser ce dossier qui est devenu celui par défaut pour mettre les fichiers contenant les dépôts.

 # nano /etc/apt/sources.list.d/sources.list

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free

# stable security
deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

## stable volatile
## Il n'y a pas de dépôt volatile pour squeeze pour l'instant
## deb http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free
## deb-src http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org squeeze main non-free
#deb-src http://www.debian-multimedia.org squeeze main non-free

# backports
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
&lt;/code&gt;

== Préparation de la mise à niveau ==

Maintenant que nous sommes prêts, nous pouvons lancer l'upgrade :

Mise à jour de la liste des paquets :

 # aptitude update

=== Si vous avez des problèmes de clefs ===

 W: GPG error: http://www.debian-multimedia.org

 # aptitude install debian-backports-keyring
 # aptitude install debian-multimedia-keyring

=== Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]] ===

 E: Dynamic MMap ran out of room

 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaite l'update, il ne doit pas y avoir d'erreurs

 # aptitude update

=== Problèmes de dépendances ===

Vous ne pourrez pas faire le passage de Lenny à Squeeze tant que subsisteront des problèmes de dépendances...

Voici deux exemples de problèmes de dépendances, et la manière de les régler :

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  xfce4-mixer-oss: Est en conflit avec: xfce4-mixer-alsa mais 4.4.2-3 est installé.
  foomatic-db: Est en conflit avec: foomatic-db-hpijs mais 20080211-1 est installé.
  xfce4-mixer-alsa: Est en conflit avec: xfce4-mixer-oss mais 4.4.2-3 doit être installé.

# aptitude install foomatic-db xfce4-mixer-alsa
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Lecture des descriptions de tâches... Fait  
Les NOUVEAUX paquets suivants vont être installés : 
  libopenjpeg2{a} libpoppler5{a} min12xxw{a} pnm2ppa{a} 
Les paquets suivants seront ENLEVÉS : 
  foomatic-db-hpijs{a} 
Les paquets suivants seront mis à jour : 
  fontconfig-config foomatic-db foomatic-db-engine foomatic-filters libfontconfig1 libjpeg62 libxml2 poppler-utils 
8 paquets mis à jour, 4 nouvellement installés, 1 à enlever et 728 non mis à jour.
Il est nécessaire de télécharger 4722ko d'archives. Après dépaquetage, 18,2Mo seront libérés.
Voulez-vous continuer ? [Y/n/?] o
...
État actuel : 728 mises à jour restantes [-8].
&lt;/code&gt;

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  libatlas3gf-base: Est en conflit avec: libblas3gf (&lt; 1.2-5) mais 1.2-2 est installé et a été conservé
                    Est en conflit avec: liblapack3gf (&lt; 3.2.1-4) mais 3.1.1-1 est installé et a été conservé
  rarian-compat: Est en conflit avec: scrollkeeper (&lt; 0.4) mais 0.3.14-16 est installé et a été conservé

# aptitude install libatlas3gf-base scrollkeeper
...
Les actions suivantes permettront de résoudre ces dépendances :

Mettre à jour les paquets suivants :
libblas3gf [1.2-2 (stable, now) -&gt; 1.2-8 (testing)]
liblapack3gf [3.1.1-1 (stable, now) -&gt; 3.2.1-8 (testing)]

Le score est de 70

Accepter cette solution ? [Y/n/q/?] y
...
État actuel : 725 mises à jour restantes [-3].
&lt;/code&gt;

En cas de doute n'hésitez pas à demander un avis [http://forum.debian-fr.org/ sur le forum]

=== stopper le serveur X ===

'''IMPORTANT''' : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

== Lancez la mise à niveau ==

&lt;code&gt;
# aptitude safe-upgrade
...
Les paquets suivants ont été conservés : 
  apt apt-utils aptitude synaptic 
Les NOUVEAUX paquets suivants vont être installés : 
  acpi-fakekey{a} apache2.2-bin{a} aumix{a} aumix-common{a} bluez{a} bluez-alsa{a} bluez-cups{a} bluez-gstreamer{a} 
  browser-plugin-gnash{a} cifs-utils{a} consolekit{a} cpp-4.4{a} cracklib-runtime{a} cups-ppdc{a} dash{a} db4.8-util{a} 
  diffutils{a} dosfstools{a} firmware-linux-free{a} freepats{a} fuse-utils{a} gcc-4.4-base{a} gcj-4.4-base{a} 
  gcj-4.4-jre-lib{a} geoip-database{a} ghostscript-cups{a} gnash{a} gnash-common{a} gnupg-curl{a} grub-pc{a} 
  gstreamer0.10-ffmpeg{a} gstreamer0.10-fluendo-mp3{a} gstreamer0.10-plugins-bad{a} gstreamer0.10-plugins-base{a} gvfs{a} 
  hplip-cups{a} insserv{a} install-info{a} isc-dhcp-client{a} isc-dhcp-common{a} iso-codes{a} keyboard-configuration{a} 
  libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libass4{a} libatasmart4{a} libaudit0{a} libavahi-core7{a} libavcodec52{a} 
  libavformat52{a} libavutil50{a} libbabl-0.0-0{a} libbind9-60{a} libbluetooth3{a} libboost-date-time1.42.0{a} 
  libboost-thread1.42.0{a} libbsd0{a} libburn4{a} libc-bin{a} libc-client2007e{a} libcap-ng0{a} libcdaudio1{a} libcdio10{a} 
  libcdparanoia0{a} libcelt0-0{a} libck-connector0{a} libcolamd2.7.1{a} libcommons-beanutils-java{a} 
  libcommons-collections3-java{a} libcommons-compress-java{a} libcommons-digester-java{a} libcommons-logging-java{a} 
  libcrack2{a} libcupscgi1{a} libcupsdriver1{a} libcupsmime1{a} libcupsppdc1{a} libdatrie1{a} libdb-je-java{a} libdb4.7{a} 
  libdb4.7-java{a} libdb4.7-java-gcj{a} libdb4.8{a} libdc1394-22{a} libdca0{a} libdirac-encoder0{a} libdirectfb-1.2-9{a} 
  libdns66{a} libdrm-intel1{a} libdrm-nouveau1{a} libdrm-radeon1{a} libdvdnav4{a} libdvdread4{a} libeggdbus-1-0{a} libenca0{a} 
  libenchant1c2a{a} libevent-1.4-2{a} libexempi3{a} libexo-common{a} libfaad2{a} libfftw3-3{a} libfile-copy-recursive-perl{a} 
  libflite1{a} libfont-freetype-perl{a} libfuse2{a} libgcj10{a} libgcr0{a} libgdu0{a} libgegl-0.0-0{a} libgeoip1{a} libgif4{a} 
  libgme0{a} libgomp1{a} libgp11-0{a} libgpgme11{a} libgraphicsmagick3{a} libgraphite3{a} libgssapi-krb5-2{a} libgtkglext1{a} 
  libgudev-1.0-0{a} libhpmud0{a} libicu44{a} libicu4j-java{a} libiptcdata0{a} libisc60{a} libisccc60{a} libisccfg60{a} 
  libiso9660-7{a} libisofs6{a} libiw30{a} libjbig2dec0{a} libjpeg-progs{a} libjpeg8{a} libjtidy-java{a} libk5crypto3{a} 
  libkate1{a} libkrb5-3{a} libkrb5support0{a} libltdl7{a} liblucene2-java{a} liblwres60{a} liblzma2{a} libmimic0{a} libmms0{a} 
  libmodplug1{a} libmozjs2d{a} libmpcdec6{a} libmpfr4{a} libmusicbrainz4c2a{a} libmythes-1.2-0{a} libneon27-gnutls{a} 
  libnetaddr-ip-perl{a} libnfnetlink0{a} libnl1{a} libntfs-3g75{a} libntfs10{a} libofa0{a} libonig2{a} libopencore-amrnb0{a} 
  libopencore-amrwb0{a} libopenraw1{a} liborc-0.4-0{a} libossp-uuid16{a} libpam-ck-connector{a} libpam-cracklib{a} 
  libpango-perl{a} libpangomm-1.4-1{a} libparted0debian1{a} libpciaccess0{a} libpolkit-agent-1-0{a} libpolkit-backend-1-0{a} 
  libpolkit-gobject-1-0{a} libpoppler-glib4{a} libpth20{a} libpython2.6{a} libqdbm14{a} libraptor1{a} librasqal2{a} 
  libraw1394-11{a} librdf0{a} libreadline6{a} librtmp0{a} libsane-hpaio{a} libsasl2-modules{a} libservlet2.5-java{a} 
  libsexy2{a} libsgutils2-2{a} libslv2-9{a} libsndfile1{a} libsoundtouch1c2{a} libswscale0{a} libtag1-vanilla{a} libtalloc2{a} 
  libtextcat-data-utf8{a} libtokyocabinet8{a} libudev0{a} libunique-1.0-0{a} libusb-1.0-0{a} libutempter0{a} libuuid-perl{a} 
  libv4l-0{a} libva1{a} libvcdinfo0{a} libvisual-0.4-0{a} libvisual-0.4-plugins{a} libvpx0{a} libwebkit-1.0-2{a} 
  libwebkit-1.0-common{a} libwildmidi1{a} libwnck-common{a} libwnck22{a} libx11-xcb1{a} libx264-104{a} libxcb-atom1{a} 
  libxcb-aux0{a} libxcb-dri2-0{a} libxcb-event1{a} libxfce4menu-0.1-0{a} libxfce4util-bin{a} libxfce4util-common{a} 
  libxfconf-0-2{a} libxklavier16{a} libxml-parser-perl{a} libxres1{a} libzbar0{a} linux-base{a} linux-image-2.6.32-5-amd64{a} 
  lockfile-progs{a} lsb-release{a} mtools{a} ntfsprogs{a} os-prober{a} oss-compat{a} php5-cli{a} php5-suhosin{a} 
  policykit-1{a} policykit-1-gnome{a} postgresql-8.4{a} postgresql-client-8.4{a} postgresql-contrib-8.4{a} 
  postgresql-doc-8.4{a} python-cups{a} python-gconf{a} python-numpy{a} python-pexpect{a} python-reportbug{a} python-webkit{a} 
  python2.6{a} python2.6-minimal{a} ristretto{a} samba-common-bin{a} sane-utils{a} sensible-utils{a} squeeze{a} 
  tango-icon-theme{a} thunar-archive-plugin{a} thunar-volman{a} tsconf{a} ttf-freefont{a} ttf-lyx{a} ttf-sil-gentium{a} 
  ttf-sil-gentium-basic{a} udisks{a} uno-libs3{a} unzip{a} ure{a} x-ttcidfont-conf{a} xdg-user-dirs{a} xfburn{a} 
  xfce-keyboard-shortcuts{a} xfce4-appfinder{a} xfce4-clipman{a} xfce4-datetime-plugin{a} xfce4-dict{a} xfce4-notes{a} 
  xfce4-notifyd{a} xfce4-places-plugin{a} xfce4-power-manager{a} xfce4-power-manager-data{a} xfce4-screenshooter{a} 
  xfce4-settings{a} xfce4-taskmanager{a} xfce4-timer-plugin{a} xfce4-xkb-plugin{a} xfconf{a} xfonts-mathml{a} xinput{a} xli{a} 
  xorg-docs-core{a} xscreensaver{a} xscreensaver-data{a} xserver-common{a} xserver-xorg-video-nouveau{a} xulrunner-1.9.1{a} 
  xz-utils{a} 
Les paquets suivants seront ENLEVÉS : 
  bluez-utils{u} cpp-4.3{u} cupsddk-drivers{u} djvulibre-desktop{u} finger{u} gs-common{u} liba52-0.7.4{u} libamrnb3{u} 
  libamrwb3{u} libaudio2{u} libavahi-compat-libdnssd1{u} libavahi-core5{u} libavc1394-0{u} libavcodec51{u} libbind9-50{u} 
  libbluetooth2{u} libc-client2007b{u} libcap1{u} libcucul0{u} libcupsys2{u} libcurl3{u} libdatrie0{u} libdirac0{u} 
  libdjvulibre21{u} libfaad0{u} libfreebob0{u} libgail-common{u} libgraphviz4{u} libgtkhtml2-0{u} libicu38{u} libiec61883-0{u} 
  libisccc50{u} libisccfg50{u} libiw29{u} libjaxp1.3-java-gcj{u} libltdl3{u} liblwres50{u} libmagick10{u} libmodplug0c2{u} 
  libmozjs1d{u} libmpcdec3{u} libmpfr1ldbl{u} libmysqlclient15off{u} libneon27{u} libntfs-3g31{u} libossp-uuid15{u} 
  libparted1.8-10{u} libpoppler-glib3{u} libpoppler3{u} libqt3-mt{u} libraw1394-8{u} libsensors3{u} libservlet2.4-java{u} 
  libsmbios-bin{u} libsmbios2{u} libssh2-1{u} libsuitesparse-3.1.0{u} libswfdec-0.6-90{u} libtalloc1{u} libvolume-id0{u} 
  libx264-65{u} libxalan2-java{u} libxalan2-java-gcj{u} libxcb-xlib0{u} libxerces2-java{u} libxerces2-java-gcj{u} 
  libxfce4mcs-client3{u} libxfce4mcs-manager3{u} libxtrap6{u} libxxf86misc1{u} mysql-common{u} openoffice.org-writer2latex{u} 
  openssl-blacklist{u} postgresql-8.3{u} postgresql-client-8.3{u} postgresql-contrib-8.3{u} postgresql-doc-8.3{u} 
  python-gtkhtml2{u} python-numeric{u} svgalibg1{u} xfce4-icon-theme{u} xfce4-mcs-manager{u} xfce4-mcs-plugins{u} 
  xfce4-minicmd-plugin{u} xfce4-screenshooter-plugin{u} xserver-xorg-video-cyrix{u} xserver-xorg-video-v4l{u} 
  xserver-xorg-video-vga{u} xulrunner-1.9{u} 
Les paquets suivants seront mis à jour : 
  a2ps acpi acpi-support acpi-support-base acpid adduser alsa-base alsa-utils anacron analog apache2 apache2-doc 
  apache2-mpm-prefork apache2-utils apache2.2-common apmd aspell aspell-fr at avahi-autoipd avahi-daemon base-files 
  base-passwd bash bash-completion bc bind9 bind9-doc bind9-host bind9utils bluetooth bsd-mailx bsdmainutils bsdutils bsh 
  bsh-gcj busybox ca-certificates console-common console-data console-setup console-terminus console-tools coreutils cpio cpp 
  cpufrequtils cron cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk dbus dbus-x11 dc debconf debconf-i18n 
  debian-archive-keyring debian-faq debianutils deborphan defoma desktop-base desktop-file-utils dhcp3-client dhcp3-common 
  dialog dictionaries-common diff disk-manager dmidecode dmsetup dnsutils doc-debian docbook-xml dpkg e2fslibs e2fsprogs ed 
  eject esound-common exim4 exim4-base exim4-config exim4-daemon-light exo-utils fastjar file findutils fontconfig foo2zjs 
  foomatic-db-gutenprint foomatic-filters-ppds foomatic-gui fortune-mod fortunes-min ftp gcc-4.3-base gconf2 gconf2-common gdm 
  gettext-base ghostscript gimp gimp-data gksu gnome-keyring gnupg gparted gpgv grep groff-base grub grub-common gsfonts 
  gtk2-engines-xfce gzip hal hal-info hdparm hibernate hicolor-icon-theme hostname hpijs hplip hplip-data iamerican ibritish 
  iceweasel iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint info initramfs-tools initscripts installation-report iproute 
  iptables iputils-ping ispell java-common kerneloops klibc-utils laptop-detect less libaa1 libacl1 libapache2-mod-perl2 
  libapache2-mod-php5 libapache2-mod-python libapm1 libapr1 libaprutil1 libart-2.0-2 libasound2 libaspell15 libatk1.0-0 
  libattr1 libaudiofile0 libavahi-client3 libavahi-common-data libavahi-common3 libavahi-glib1 libavutil49 libbcel-java 
  libblkid1 libbonobo2-0 libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i386 libcaca0 
  libcairo-perl libcairo2 libcairomm-1.0-1 libcap2 libcomerr2 libconsole libcpufreq0 libcroco3 libcups2 libcupsimage2 
  libcurl3-gnutls libcwidget3 libdaemon0 libdb4.6 libdbus-1-3 libdbus-glib-1-2 libdevel-symdump-perl libdevmapper1.02.1 
  libdigest-hmac-perl libdigest-sha1-perl libdirectfb-extra libdmx1 libdrm2 libedit2 libesd0 libexif12 libexo-0.3-0 libexpat1 
  libfaac0 libfam0 libffi5 libflac8 libfontenc1 libfreetype6 libfs6 libgail18 libgc1c2 libgcc1 libgcj-bc libgcj-common 
  libgconf2-4 libgcrypt11 libgd2-noxpm libgdbm3 libgfortran3 libgimp2.0 libgksu2-0 libgl1-mesa-dri libgl1-mesa-glx libglade2-0 
  libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgmp3c2 libgnome-keyring0 libgnome2-0 libgnome2-canvas-perl 
  libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0 libgnomecanvas2-common libgnomeui-0 libgnomeui-common 
  libgnomevfs2-0 libgnomevfs2-common libgnomevfs2-extra libgnutls26 libgpg-error0 libgphoto2-2 libgphoto2-port0 libgpm2 libgs8 
  libgsf-1-114 libgsf-1-common libgsm1 libgssglue1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0 
  libgtk2.0-common libgtkmm-2.4-1c2a libgtop2-7 libgtop2-common libgutenprint2 libhal-storage1 libhal1 libhsqldb-java 
  libhsqldb-java-gcj libhtml-parser-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libice6 libidl0 libidn11 libieee1284-3 
  libijs-0.35 libilmbase6 libjack0 libjasper1 libjaxp1.3-java libjline-java libkeyutils1 libklibc libkrb53 liblcms1 
  libldap-2.4-2 liblocale-gettext-perl liblockfile1 liblog4j1.2-java liblzo2-2 libmad0 libmagic1 libmng1 libmp3lame0 
  libmx4j-java libncurses5 libncursesw5 libnet-dns-perl libnewt0.52 libnfsidmap2 libnotify1 libnspr4-0d libnss-mdns libnss3-1d 
  libogg0 liboil0.3 libopenexr6 liborbit2 libpam-modules libpam-runtime libpam0g libpango1.0-0 libpango1.0-common libpaper1 
  libpci3 libpcre3 libpcsclite1 libperl5.10 libpixman-1-0 libpng12-0 libpopt0 libpostproc51 libpq5 libpulse0 libreadline5 
  librecode0 libregexp-java librpcsecgss3 librsvg2-2 librsvg2-common libsane libsane-extras libsasl2-2 libschroedinger-1.0-0 
  libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsensors4 libsepol1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 
  libsmbclient libsnmp-base libsnmp15 libsocket6-perl libsoup2.4-1 libsqlite3-0 libss2 libssl0.9.8 libstartup-notification0 
  libstdc++6 libsvga1 libsysfs2 libtag1c2a libtagc0 libtasn1-3 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl 
  libthai-data libthai0 libtheora0 libthunar-vfs-1-2 libtiff4 libts-0.0-0 liburi-perl libusb-0.1-4 libuuid1 libvorbis0a 
  libvorbisenc2 libvte-common libvte9 libwavpack1 libwbclient0 libwmf0.2-7 libwpg-0.1-1 libwrap0 libwww-perl libx11-6 
  libx11-data libx86-1 libxau6 libxaw7 libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xv0 libxcb1 
  libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfce4util4 libxfcegui4-4 libxfixes3 libxfont1 libxft2 libxi6 
  libxine1 libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins libxine1-plugins libxine1-x libxinerama1 
  libxkbfile1 libxmu6 libxmuu1 libxpm4 libxrandr2 libxrender1 libxslt1.1 libxss1 libxt6 libxtst6 libxv1 libxvidcore4 libxvmc1 
  libxxf86dga1 libxxf86vm1 linux-image-2.6-amd64 linux-sound-base locales login logrotate lp-solve lsb-base lsof lvm2 lwresd 
  m4 mailagent makedev man-db manpages manpages-fr manpages-fr-extra mawk mc menu mime-support mktemp mlocate mlock 
  module-init-tools mount mousepad mutt myspell-en-us myspell-fr-gut nano ncurses-base ncurses-bin ncurses-term net-tools 
  netatalk netbase nfs-common nfs-kernel-server ntfs-3g nvclock openbsd-inetd openoffice.org openoffice.org-base 
  openoffice.org-base-core openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw 
  openoffice.org-filter-mobiledev openoffice.org-gcj openoffice.org-gtk openoffice.org-help-en-us openoffice.org-help-fr 
  openoffice.org-impress openoffice.org-java-common openoffice.org-l10n-fr openoffice.org-math openoffice.org-officebean 
  openoffice.org-report-builder-bin openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-thesaurus-en-us 
  openoffice.org-writer openprinting-ppds openssh-client openssh-server openssl orage passwd patch pciutils pcmciautils perl 
  perl-base perl-modules php5-common pm-utils popularity-contest portmap postgresql postgresql-client postgresql-client-common 
  postgresql-common postgresql-contrib postgresql-doc powermgmt-base powertop printconf procmail procps psmisc psutils python 
  python-cairo python-central python-dbus python-foomatic python-glade2 python-gnome2 python-gobject python-gtk2 
  python-imaging python-ipy python-minimal python-pyorbit python-support python2.5 python2.5-minimal qpopper radeontool 
  readline-common reportbug rsyslog sa-exim samba samba-common samba-doc sed sgml-base sgml-data shared-mime-info 
  smartmontools smbclient smbfs spamassassin spamc ssl-cert sudo swat swfdec-mozilla sysv-rc sysvinit sysvinit-utils tar 
  tasksel tasksel-data tcpd texinfo thunar thunar-data thunar-media-tags-plugin time toshset traceroute ttf-dejavu 
  ttf-dejavu-core ttf-dejavu-extra ttf-liberation ttf-opensymbol tzdata ucf udev update-inetd usbutils util-linux uw-imapd 
  vbetool vim-common vim-tiny w3m wamerican wfrench wget whiptail whois winbind wireless-tools wpasupplicant x11-apps 
  x11-common x11-session-utils x11-utils x11-xfs-utils x11-xkb-utils x11-xserver-utils xauth xbitmaps xdg-utils xfce4 
  xfce4-battery-plugin xfce4-clipman-plugin xfce4-cpufreq-plugin xfce4-cpugraph-plugin xfce4-diskperf-plugin 
  xfce4-fsguard-plugin xfce4-genmon-plugin xfce4-goodies xfce4-mailwatch-plugin xfce4-mixer xfce4-mount-plugin 
  xfce4-netload-plugin xfce4-notes-plugin xfce4-panel xfce4-quicklauncher-plugin xfce4-sensors-plugin xfce4-session 
  xfce4-smartbookmark-plugin xfce4-systemload-plugin xfce4-terminal xfce4-utils xfce4-verve-plugin xfce4-wavelan-plugin 
  xfce4-weather-plugin xfdesktop4 xfdesktop4-data xfonts-100dpi xfonts-75dpi xfonts-base xfonts-encodings xfonts-intl-european 
  xfonts-scalable xfonts-utils xfprint4 xfwm4 xinit xkb-data xml-core xorg xsane xsane-common xserver-xorg xserver-xorg-core 
  xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd xserver-xorg-input-mouse xserver-xorg-input-synaptics 
  xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati 
  xserver-xorg-video-chips xserver-xorg-video-cirrus xserver-xorg-video-dummy xserver-xorg-video-fbdev 
  xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-intel xserver-xorg-video-mach64 xserver-xorg-video-mga 
  xserver-xorg-video-neomagic xserver-xorg-video-nv xserver-xorg-video-openchrome xserver-xorg-video-r128 
  xserver-xorg-video-radeon xserver-xorg-video-radeonhd xserver-xorg-video-rendition xserver-xorg-video-s3 
  xserver-xorg-video-s3virge xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis 
  xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident xserver-xorg-video-tseng 
  xserver-xorg-video-vesa xserver-xorg-video-vmware xserver-xorg-video-voodoo xterm zlib1g 
Les paquets suivants sont RECOMMANDÉS mais ne seront pas installés :
  bzip2 gamin gcc gdm-themes hddtemp libapache2-reload-perl libatk1.0-data libatm1 libbsd-resource-perl libc6-dev libfribidi0 
  libglib2.0-data libgtk2.0-bin libhtml-format-perl libio-socket-inet6-perl liblog4j1.2-java-gcj libmail-spf-perl 
  libmailtools-perl libnss-lwres libpam-gnome-keyring libpaper-utils lm-sensors make nmap openoffice.org-emailmerge 
  openoffice.org-filter-binfilter pconf-detect rc re2c uuid-runtime wdiff xfwm4-themes xnest xserver-xephyr zenity 
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] 
&lt;/code&gt;

En fonction de votre connexion ça peut prendre très longtemps, et être interrompu (à 500KB/s une demi-heure à 50 KB/s c'est plusieurs heures...).
Un conseil, si vous n'êtes pas sûr de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

&lt;code&gt;
# aptitude -d safe-upgrade
...
 762Mo téléchargés en 1h9min37s (182ko/s)                                                          
Lecture des listes de paquets... Fait             
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait
&lt;/code&gt;

Puis

&lt;code&gt;
# aptitude safe-upgrade
...
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 0o/762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] y
&lt;/code&gt;

=== Déroulement ===

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut, mais prenez le temps de lire tous les messages, et si nécessaire, prenez des notes.

[[Fichier:Snapshot4.jpeg]]

[[Fichier:Snapshot5.jpeg]]

[[Fichier:Snapshot6.jpeg]]

[[Fichier:Snapshot7.jpeg]]

[[Fichier:Snapshot9.jpeg]]

[[Fichier:Snapshot11.jpeg]]

[[Fichier:Snapshot13.jpeg]]

[[Fichier:Snapshot14.jpeg]]

[[Fichier:Snapshot15.jpeg]]

[[Fichier:Snapshot16.jpeg]]

[[Fichier:Snapshot17.jpeg]]

Vous partirez d'une Lenny configurée, et donc de nombreux fichiers de configuration auront été modifiés par vos soins.
Il est judicieux de ne pas écraser vos configurations avec les fichiers par défaut proposés par les &quot;mainteneurs&quot; des paquets.
Vous aurez tout le loisir de regarder les modifications proposées, et ce qu'elles apportent, en regardant dans /usr/share/doc ou dans les contenus de vos deb téléchargés (dans /var/apt/archives)

[[Fichier:Snapshot18.jpeg]]

Sans le téléchargement des fichiers, comptez un peu plus d'une heure pour la mise à niveau

=== finalisation ===

Le safe-upgrade devrait se terminer par ceci :

&lt;code&gt;
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 4 mises à jour restantes [-721].
&lt;/code&gt;

Vous pouvez maintenant lancer un &quot;full-upgrade&quot;

&lt;code&gt;
# aptitude full-upgrade

...

4 paquets mis à jour, 13 nouvellement installés, 2 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 12,1Mo d'archives. Après dépaquetage, 14,3Mo seront utilisés.
Les paquets suivants ont des dépendances non satisfaites :
  libept0: Dépend: libapt-pkg-libc6.7-6-4.6 qui est un paquet virtuel
Les actions suivantes permettront de résoudre ces dépendances :

Supprimer les paquets suivants :
libept0

Le score est de 115

Accepter cette solution ? [Y/n/q/?]y

...

Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 0 mise à jour restante [-4].
&lt;/code&gt;

Si tout s'est bien passé, il ne vous reste plus qu'a redémarrer la machine :

 # reboot

=== Grub2 ===

Si vous étiez sous Grub-legacy vous aurez certainement fait la bascule vers Grub2.

La première &quot;surprise&quot; qui vous attend donc (sauf si vous avez lu ce guide avant...) c'est le menu suivant :

[[Fichier:Snapshot19.jpeg]]

Si vous appuyez sur entrée, cvous serez conduit vers le menu de Grub2.
Cette étape permet de vérifier que Grub2 est bien installé, et de le tester.

[[Fichier:Snapshot20.jpeg]]

Si cela fonctionne, une des premières choses à faire sera de confirmer l'installation de Grub2 en tapant dans une console la commande suivante :

 # upgrade-from-grub-legacy

=== LVM ===

Problème rencontré lors de la mise à niveau avec LVM...
Le système s'est mélangé les pédales dans l'attribution des partitions.
Résultat :

[[Fichier:Snapshot21.jpeg]]

Voici ou se situe le problème :

&lt;code&gt;
$ vdir /dev/l2s/
total 0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 home -&gt; ../dm-5
lrwxrwxrwx 1 root root 7 25 nov.  18:28 root -&gt; ../dm-0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 swap_1 -&gt; ../dm-1
lrwxrwxrwx 1 root root 7 25 nov.  18:28 tmp -&gt; ../dm-4
lrwxrwxrwx 1 root root 7 25 nov.  18:28 usr -&gt; ../dm-2
lrwxrwxrwx 1 root root 7 25 nov.  18:28 var -&gt; ../dm-3
&lt;/code&gt;
&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
# /dev/hda1	/boot	ext2	defaults	0	2
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-1	/usr	ext3	defaults	0	2
# /dev/hdb1	/var	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-3	none	swap	sw	0	0
# /dev/hdc	/media/cdrom0	udf,iso9660	user,noauto	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

Je ne sais pour quelle raison LVM à changé la numérotation des partitions... /usr est passé en dm-1 alors qu'il était en dm-2 et la swap en dm-3 alors qu'elle était être en dm-1
Il suffit de modifier le fichier /etc/fstab pour qu'il reflète à nouveau correctement vos partitions, et le tour est joué :

&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-2	/usr	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-1	none	swap	sw	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

== Bienvenu sur Squeeze ==

 laurent@lenny2squeeze:~$ uname -a
 Linux lenny2squeeze 2.6.32-5-amd64 #1 SMP Sat Oct 30 14:18:21 UTC 2010 x86_64 GNU/Linux

[[Fichier:Snapshot25.jpeg]]

A venir... Upgrade de Squeeze à ????

----
[[Utilisateur:Lol|Lol]] 25 novembre 2010 à 15:55 (EAT)
[[Catégorie:Installation]]</text>
      <sha1>j8bz956nbdcylubmaop60ll7hs81cka</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2419</id>
      <parentid>2418</parentid>
      <timestamp>2010-11-25T14:21:09Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Grub2 */</comment>
      <text xml:space="preserve" bytes="31484">{{sid}}

La mise à niveau de Lenny à Squeeze se précise, nous allons faire ici un rapide résumé des opérations nécessaires à la réussite de cette mise à niveau (upgrade).
LVM est installé sur la machine que nous allons mettre à niveau afin de tester le plus de possibilités.

Avant toute chose, je souhaite faire quelques précisions :
Chaque configuration est propre à chacun, en fonction de ses goûts, de son matériel et de ses connaissances.
Un guide universel n'existe donc pas.

Prévoyez aussi d'avoir du temps devant vous, et d'être au calme.

Nous choisirons d'utiliser aptitude au lieu de apt-get, il est en effet plus exigeant concernant les dépendances, votre mise à niveau sera plus &quot;propre&quot;.

J'ai choisi une Lenny avec toutes les options de tasksel activées afin de faire un tour d'horizon le plus vaste possible des problèmes qui pourraient survenir.
L'environnement graphique est Xfce.

[[Fichier:Snapshot3.jpeg]]

== Pré-requis ==

=== Une bonne sauvegarde ===

Vous n'avez AUCUNE garantie que la mise à niveau se passe bien, alors, quel que soit la méthode que vous emploierez, une sauvegarde est le minimum que vous puissiez faire avant de vous lancer dans l'aventure..

Avec dd, dump ou simplement cp SAUVEGARDEZ !

=== Un système à jour! ===

Le fichier sources.list précédent la mise à niveau :

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org stable main non-free
#deb-src http://www.debian-multimedia.org stable main non-free

# backports
deb http://backports.debian.org/debian-backports lenny-backports main contrib non-free
&lt;/code&gt;

 # aptitude update
 # aptitude safe-upgrade
 # aptitude full-upgrade

=== De l'espace! ===

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition où se trouve /var pour le stockage des paquets téléchargés.

Pour info une mise à jour &quot;lourde&quot; se soldera par le téléchargement d'environ 1Go...

Pour connaitre l’espace libre de votre partition racine :

 $ df -H
 Sys. de fich.          Tail.  Occ.  Disp. %Occ. Monté sur
 '''/dev/dm-0              338M   123M   198M  39% /'''
 tmpfs                  262M      0   262M   0% /lib/init/rw
 udev                    11M   689k   9,8M   7% /dev
 tmpfs                  262M      0   262M   0% /dev/shm
 /dev/hda1              239M    20M   207M   9% /boot
 /dev/dm-5              3,7G    75M   3,4G   3% /home
 /dev/dm-4              317M    11M   290M   4% /tmp
 /dev/dm-1              3,7G   1,7G   1,8G  50% /usr
 '''/dev/hdb1              5,3G   1,1G   4,0G  21% /var'''
 /dev/dm-2              1,8G   876M   818M  52% /media/dm-2

'''Si vous disposez de plus de 50% d’espace libre vous pouvez passer à l'étape suivante'''.

Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Si cela ne suffit toujours pas, il faut envisager d'ajouter un disque à votre système, ou de procéder à un upgrade par étapes successives (en mettant à jour les paquets progressivement et en nettoyant à chaque étape)

=== Les pilotes de la carte Graphique ===

Afin de ne pas avoir de mauvaise surprise avec le serveur X, modifiez votre xorg.conf afin d'utiliser des pilotes Debian.

Eventuellement utilisez les pilotes &quot;vesa&quot;

Dans votre fichier /etc/X11/xorg.conf

&lt;code&gt;
Section &quot;Device&quot;
    Identifier     &quot;Device0&quot;
    Driver         &quot;vesa&quot;
EndSection
&lt;/code&gt;

Si vous êtes sur de vous, n'en faites rien, mais prévoyez une réinstallation des pilotes avant le premier redémarrage.

=== Le fichier sources.list ===

Créons un nouveau sources.list que nous placerons dans /etc/apt/sources.list.d
Nous prenons dores et déjà la bonne habitude d'utiliser ce dossier qui est devenu celui par défaut pour mettre les fichiers contenant les dépôts.

 # nano /etc/apt/sources.list.d/sources.list

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free

# stable security
deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

## stable volatile
## Il n'y a pas de dépôt volatile pour squeeze pour l'instant
## deb http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free
## deb-src http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org squeeze main non-free
#deb-src http://www.debian-multimedia.org squeeze main non-free

# backports
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
&lt;/code&gt;

== Préparation de la mise à niveau ==

Maintenant que nous sommes prêts, nous pouvons lancer l'upgrade :

Mise à jour de la liste des paquets :

 # aptitude update

=== Si vous avez des problèmes de clefs ===

 W: GPG error: http://www.debian-multimedia.org

 # aptitude install debian-backports-keyring
 # aptitude install debian-multimedia-keyring

=== Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]] ===

 E: Dynamic MMap ran out of room

 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaite l'update, il ne doit pas y avoir d'erreurs

 # aptitude update

=== Problèmes de dépendances ===

Vous ne pourrez pas faire le passage de Lenny à Squeeze tant que subsisteront des problèmes de dépendances...

Voici deux exemples de problèmes de dépendances, et la manière de les régler :

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  xfce4-mixer-oss: Est en conflit avec: xfce4-mixer-alsa mais 4.4.2-3 est installé.
  foomatic-db: Est en conflit avec: foomatic-db-hpijs mais 20080211-1 est installé.
  xfce4-mixer-alsa: Est en conflit avec: xfce4-mixer-oss mais 4.4.2-3 doit être installé.

# aptitude install foomatic-db xfce4-mixer-alsa
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Lecture des descriptions de tâches... Fait  
Les NOUVEAUX paquets suivants vont être installés : 
  libopenjpeg2{a} libpoppler5{a} min12xxw{a} pnm2ppa{a} 
Les paquets suivants seront ENLEVÉS : 
  foomatic-db-hpijs{a} 
Les paquets suivants seront mis à jour : 
  fontconfig-config foomatic-db foomatic-db-engine foomatic-filters libfontconfig1 libjpeg62 libxml2 poppler-utils 
8 paquets mis à jour, 4 nouvellement installés, 1 à enlever et 728 non mis à jour.
Il est nécessaire de télécharger 4722ko d'archives. Après dépaquetage, 18,2Mo seront libérés.
Voulez-vous continuer ? [Y/n/?] o
...
État actuel : 728 mises à jour restantes [-8].
&lt;/code&gt;

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  libatlas3gf-base: Est en conflit avec: libblas3gf (&lt; 1.2-5) mais 1.2-2 est installé et a été conservé
                    Est en conflit avec: liblapack3gf (&lt; 3.2.1-4) mais 3.1.1-1 est installé et a été conservé
  rarian-compat: Est en conflit avec: scrollkeeper (&lt; 0.4) mais 0.3.14-16 est installé et a été conservé

# aptitude install libatlas3gf-base scrollkeeper
...
Les actions suivantes permettront de résoudre ces dépendances :

Mettre à jour les paquets suivants :
libblas3gf [1.2-2 (stable, now) -&gt; 1.2-8 (testing)]
liblapack3gf [3.1.1-1 (stable, now) -&gt; 3.2.1-8 (testing)]

Le score est de 70

Accepter cette solution ? [Y/n/q/?] y
...
État actuel : 725 mises à jour restantes [-3].
&lt;/code&gt;

En cas de doute n'hésitez pas à demander un avis [http://forum.debian-fr.org/ sur le forum]

=== stopper le serveur X ===

'''IMPORTANT''' : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

== Lancez la mise à niveau ==

&lt;code&gt;
# aptitude safe-upgrade
...
Les paquets suivants ont été conservés : 
  apt apt-utils aptitude synaptic 
Les NOUVEAUX paquets suivants vont être installés : 
  acpi-fakekey{a} apache2.2-bin{a} aumix{a} aumix-common{a} bluez{a} bluez-alsa{a} bluez-cups{a} bluez-gstreamer{a} 
  browser-plugin-gnash{a} cifs-utils{a} consolekit{a} cpp-4.4{a} cracklib-runtime{a} cups-ppdc{a} dash{a} db4.8-util{a} 
  diffutils{a} dosfstools{a} firmware-linux-free{a} freepats{a} fuse-utils{a} gcc-4.4-base{a} gcj-4.4-base{a} 
  gcj-4.4-jre-lib{a} geoip-database{a} ghostscript-cups{a} gnash{a} gnash-common{a} gnupg-curl{a} grub-pc{a} 
  gstreamer0.10-ffmpeg{a} gstreamer0.10-fluendo-mp3{a} gstreamer0.10-plugins-bad{a} gstreamer0.10-plugins-base{a} gvfs{a} 
  hplip-cups{a} insserv{a} install-info{a} isc-dhcp-client{a} isc-dhcp-common{a} iso-codes{a} keyboard-configuration{a} 
  libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libass4{a} libatasmart4{a} libaudit0{a} libavahi-core7{a} libavcodec52{a} 
  libavformat52{a} libavutil50{a} libbabl-0.0-0{a} libbind9-60{a} libbluetooth3{a} libboost-date-time1.42.0{a} 
  libboost-thread1.42.0{a} libbsd0{a} libburn4{a} libc-bin{a} libc-client2007e{a} libcap-ng0{a} libcdaudio1{a} libcdio10{a} 
  libcdparanoia0{a} libcelt0-0{a} libck-connector0{a} libcolamd2.7.1{a} libcommons-beanutils-java{a} 
  libcommons-collections3-java{a} libcommons-compress-java{a} libcommons-digester-java{a} libcommons-logging-java{a} 
  libcrack2{a} libcupscgi1{a} libcupsdriver1{a} libcupsmime1{a} libcupsppdc1{a} libdatrie1{a} libdb-je-java{a} libdb4.7{a} 
  libdb4.7-java{a} libdb4.7-java-gcj{a} libdb4.8{a} libdc1394-22{a} libdca0{a} libdirac-encoder0{a} libdirectfb-1.2-9{a} 
  libdns66{a} libdrm-intel1{a} libdrm-nouveau1{a} libdrm-radeon1{a} libdvdnav4{a} libdvdread4{a} libeggdbus-1-0{a} libenca0{a} 
  libenchant1c2a{a} libevent-1.4-2{a} libexempi3{a} libexo-common{a} libfaad2{a} libfftw3-3{a} libfile-copy-recursive-perl{a} 
  libflite1{a} libfont-freetype-perl{a} libfuse2{a} libgcj10{a} libgcr0{a} libgdu0{a} libgegl-0.0-0{a} libgeoip1{a} libgif4{a} 
  libgme0{a} libgomp1{a} libgp11-0{a} libgpgme11{a} libgraphicsmagick3{a} libgraphite3{a} libgssapi-krb5-2{a} libgtkglext1{a} 
  libgudev-1.0-0{a} libhpmud0{a} libicu44{a} libicu4j-java{a} libiptcdata0{a} libisc60{a} libisccc60{a} libisccfg60{a} 
  libiso9660-7{a} libisofs6{a} libiw30{a} libjbig2dec0{a} libjpeg-progs{a} libjpeg8{a} libjtidy-java{a} libk5crypto3{a} 
  libkate1{a} libkrb5-3{a} libkrb5support0{a} libltdl7{a} liblucene2-java{a} liblwres60{a} liblzma2{a} libmimic0{a} libmms0{a} 
  libmodplug1{a} libmozjs2d{a} libmpcdec6{a} libmpfr4{a} libmusicbrainz4c2a{a} libmythes-1.2-0{a} libneon27-gnutls{a} 
  libnetaddr-ip-perl{a} libnfnetlink0{a} libnl1{a} libntfs-3g75{a} libntfs10{a} libofa0{a} libonig2{a} libopencore-amrnb0{a} 
  libopencore-amrwb0{a} libopenraw1{a} liborc-0.4-0{a} libossp-uuid16{a} libpam-ck-connector{a} libpam-cracklib{a} 
  libpango-perl{a} libpangomm-1.4-1{a} libparted0debian1{a} libpciaccess0{a} libpolkit-agent-1-0{a} libpolkit-backend-1-0{a} 
  libpolkit-gobject-1-0{a} libpoppler-glib4{a} libpth20{a} libpython2.6{a} libqdbm14{a} libraptor1{a} librasqal2{a} 
  libraw1394-11{a} librdf0{a} libreadline6{a} librtmp0{a} libsane-hpaio{a} libsasl2-modules{a} libservlet2.5-java{a} 
  libsexy2{a} libsgutils2-2{a} libslv2-9{a} libsndfile1{a} libsoundtouch1c2{a} libswscale0{a} libtag1-vanilla{a} libtalloc2{a} 
  libtextcat-data-utf8{a} libtokyocabinet8{a} libudev0{a} libunique-1.0-0{a} libusb-1.0-0{a} libutempter0{a} libuuid-perl{a} 
  libv4l-0{a} libva1{a} libvcdinfo0{a} libvisual-0.4-0{a} libvisual-0.4-plugins{a} libvpx0{a} libwebkit-1.0-2{a} 
  libwebkit-1.0-common{a} libwildmidi1{a} libwnck-common{a} libwnck22{a} libx11-xcb1{a} libx264-104{a} libxcb-atom1{a} 
  libxcb-aux0{a} libxcb-dri2-0{a} libxcb-event1{a} libxfce4menu-0.1-0{a} libxfce4util-bin{a} libxfce4util-common{a} 
  libxfconf-0-2{a} libxklavier16{a} libxml-parser-perl{a} libxres1{a} libzbar0{a} linux-base{a} linux-image-2.6.32-5-amd64{a} 
  lockfile-progs{a} lsb-release{a} mtools{a} ntfsprogs{a} os-prober{a} oss-compat{a} php5-cli{a} php5-suhosin{a} 
  policykit-1{a} policykit-1-gnome{a} postgresql-8.4{a} postgresql-client-8.4{a} postgresql-contrib-8.4{a} 
  postgresql-doc-8.4{a} python-cups{a} python-gconf{a} python-numpy{a} python-pexpect{a} python-reportbug{a} python-webkit{a} 
  python2.6{a} python2.6-minimal{a} ristretto{a} samba-common-bin{a} sane-utils{a} sensible-utils{a} squeeze{a} 
  tango-icon-theme{a} thunar-archive-plugin{a} thunar-volman{a} tsconf{a} ttf-freefont{a} ttf-lyx{a} ttf-sil-gentium{a} 
  ttf-sil-gentium-basic{a} udisks{a} uno-libs3{a} unzip{a} ure{a} x-ttcidfont-conf{a} xdg-user-dirs{a} xfburn{a} 
  xfce-keyboard-shortcuts{a} xfce4-appfinder{a} xfce4-clipman{a} xfce4-datetime-plugin{a} xfce4-dict{a} xfce4-notes{a} 
  xfce4-notifyd{a} xfce4-places-plugin{a} xfce4-power-manager{a} xfce4-power-manager-data{a} xfce4-screenshooter{a} 
  xfce4-settings{a} xfce4-taskmanager{a} xfce4-timer-plugin{a} xfce4-xkb-plugin{a} xfconf{a} xfonts-mathml{a} xinput{a} xli{a} 
  xorg-docs-core{a} xscreensaver{a} xscreensaver-data{a} xserver-common{a} xserver-xorg-video-nouveau{a} xulrunner-1.9.1{a} 
  xz-utils{a} 
Les paquets suivants seront ENLEVÉS : 
  bluez-utils{u} cpp-4.3{u} cupsddk-drivers{u} djvulibre-desktop{u} finger{u} gs-common{u} liba52-0.7.4{u} libamrnb3{u} 
  libamrwb3{u} libaudio2{u} libavahi-compat-libdnssd1{u} libavahi-core5{u} libavc1394-0{u} libavcodec51{u} libbind9-50{u} 
  libbluetooth2{u} libc-client2007b{u} libcap1{u} libcucul0{u} libcupsys2{u} libcurl3{u} libdatrie0{u} libdirac0{u} 
  libdjvulibre21{u} libfaad0{u} libfreebob0{u} libgail-common{u} libgraphviz4{u} libgtkhtml2-0{u} libicu38{u} libiec61883-0{u} 
  libisccc50{u} libisccfg50{u} libiw29{u} libjaxp1.3-java-gcj{u} libltdl3{u} liblwres50{u} libmagick10{u} libmodplug0c2{u} 
  libmozjs1d{u} libmpcdec3{u} libmpfr1ldbl{u} libmysqlclient15off{u} libneon27{u} libntfs-3g31{u} libossp-uuid15{u} 
  libparted1.8-10{u} libpoppler-glib3{u} libpoppler3{u} libqt3-mt{u} libraw1394-8{u} libsensors3{u} libservlet2.4-java{u} 
  libsmbios-bin{u} libsmbios2{u} libssh2-1{u} libsuitesparse-3.1.0{u} libswfdec-0.6-90{u} libtalloc1{u} libvolume-id0{u} 
  libx264-65{u} libxalan2-java{u} libxalan2-java-gcj{u} libxcb-xlib0{u} libxerces2-java{u} libxerces2-java-gcj{u} 
  libxfce4mcs-client3{u} libxfce4mcs-manager3{u} libxtrap6{u} libxxf86misc1{u} mysql-common{u} openoffice.org-writer2latex{u} 
  openssl-blacklist{u} postgresql-8.3{u} postgresql-client-8.3{u} postgresql-contrib-8.3{u} postgresql-doc-8.3{u} 
  python-gtkhtml2{u} python-numeric{u} svgalibg1{u} xfce4-icon-theme{u} xfce4-mcs-manager{u} xfce4-mcs-plugins{u} 
  xfce4-minicmd-plugin{u} xfce4-screenshooter-plugin{u} xserver-xorg-video-cyrix{u} xserver-xorg-video-v4l{u} 
  xserver-xorg-video-vga{u} xulrunner-1.9{u} 
Les paquets suivants seront mis à jour : 
  a2ps acpi acpi-support acpi-support-base acpid adduser alsa-base alsa-utils anacron analog apache2 apache2-doc 
  apache2-mpm-prefork apache2-utils apache2.2-common apmd aspell aspell-fr at avahi-autoipd avahi-daemon base-files 
  base-passwd bash bash-completion bc bind9 bind9-doc bind9-host bind9utils bluetooth bsd-mailx bsdmainutils bsdutils bsh 
  bsh-gcj busybox ca-certificates console-common console-data console-setup console-terminus console-tools coreutils cpio cpp 
  cpufrequtils cron cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk dbus dbus-x11 dc debconf debconf-i18n 
  debian-archive-keyring debian-faq debianutils deborphan defoma desktop-base desktop-file-utils dhcp3-client dhcp3-common 
  dialog dictionaries-common diff disk-manager dmidecode dmsetup dnsutils doc-debian docbook-xml dpkg e2fslibs e2fsprogs ed 
  eject esound-common exim4 exim4-base exim4-config exim4-daemon-light exo-utils fastjar file findutils fontconfig foo2zjs 
  foomatic-db-gutenprint foomatic-filters-ppds foomatic-gui fortune-mod fortunes-min ftp gcc-4.3-base gconf2 gconf2-common gdm 
  gettext-base ghostscript gimp gimp-data gksu gnome-keyring gnupg gparted gpgv grep groff-base grub grub-common gsfonts 
  gtk2-engines-xfce gzip hal hal-info hdparm hibernate hicolor-icon-theme hostname hpijs hplip hplip-data iamerican ibritish 
  iceweasel iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint info initramfs-tools initscripts installation-report iproute 
  iptables iputils-ping ispell java-common kerneloops klibc-utils laptop-detect less libaa1 libacl1 libapache2-mod-perl2 
  libapache2-mod-php5 libapache2-mod-python libapm1 libapr1 libaprutil1 libart-2.0-2 libasound2 libaspell15 libatk1.0-0 
  libattr1 libaudiofile0 libavahi-client3 libavahi-common-data libavahi-common3 libavahi-glib1 libavutil49 libbcel-java 
  libblkid1 libbonobo2-0 libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i386 libcaca0 
  libcairo-perl libcairo2 libcairomm-1.0-1 libcap2 libcomerr2 libconsole libcpufreq0 libcroco3 libcups2 libcupsimage2 
  libcurl3-gnutls libcwidget3 libdaemon0 libdb4.6 libdbus-1-3 libdbus-glib-1-2 libdevel-symdump-perl libdevmapper1.02.1 
  libdigest-hmac-perl libdigest-sha1-perl libdirectfb-extra libdmx1 libdrm2 libedit2 libesd0 libexif12 libexo-0.3-0 libexpat1 
  libfaac0 libfam0 libffi5 libflac8 libfontenc1 libfreetype6 libfs6 libgail18 libgc1c2 libgcc1 libgcj-bc libgcj-common 
  libgconf2-4 libgcrypt11 libgd2-noxpm libgdbm3 libgfortran3 libgimp2.0 libgksu2-0 libgl1-mesa-dri libgl1-mesa-glx libglade2-0 
  libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgmp3c2 libgnome-keyring0 libgnome2-0 libgnome2-canvas-perl 
  libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0 libgnomecanvas2-common libgnomeui-0 libgnomeui-common 
  libgnomevfs2-0 libgnomevfs2-common libgnomevfs2-extra libgnutls26 libgpg-error0 libgphoto2-2 libgphoto2-port0 libgpm2 libgs8 
  libgsf-1-114 libgsf-1-common libgsm1 libgssglue1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0 
  libgtk2.0-common libgtkmm-2.4-1c2a libgtop2-7 libgtop2-common libgutenprint2 libhal-storage1 libhal1 libhsqldb-java 
  libhsqldb-java-gcj libhtml-parser-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libice6 libidl0 libidn11 libieee1284-3 
  libijs-0.35 libilmbase6 libjack0 libjasper1 libjaxp1.3-java libjline-java libkeyutils1 libklibc libkrb53 liblcms1 
  libldap-2.4-2 liblocale-gettext-perl liblockfile1 liblog4j1.2-java liblzo2-2 libmad0 libmagic1 libmng1 libmp3lame0 
  libmx4j-java libncurses5 libncursesw5 libnet-dns-perl libnewt0.52 libnfsidmap2 libnotify1 libnspr4-0d libnss-mdns libnss3-1d 
  libogg0 liboil0.3 libopenexr6 liborbit2 libpam-modules libpam-runtime libpam0g libpango1.0-0 libpango1.0-common libpaper1 
  libpci3 libpcre3 libpcsclite1 libperl5.10 libpixman-1-0 libpng12-0 libpopt0 libpostproc51 libpq5 libpulse0 libreadline5 
  librecode0 libregexp-java librpcsecgss3 librsvg2-2 librsvg2-common libsane libsane-extras libsasl2-2 libschroedinger-1.0-0 
  libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsensors4 libsepol1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 
  libsmbclient libsnmp-base libsnmp15 libsocket6-perl libsoup2.4-1 libsqlite3-0 libss2 libssl0.9.8 libstartup-notification0 
  libstdc++6 libsvga1 libsysfs2 libtag1c2a libtagc0 libtasn1-3 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl 
  libthai-data libthai0 libtheora0 libthunar-vfs-1-2 libtiff4 libts-0.0-0 liburi-perl libusb-0.1-4 libuuid1 libvorbis0a 
  libvorbisenc2 libvte-common libvte9 libwavpack1 libwbclient0 libwmf0.2-7 libwpg-0.1-1 libwrap0 libwww-perl libx11-6 
  libx11-data libx86-1 libxau6 libxaw7 libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xv0 libxcb1 
  libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfce4util4 libxfcegui4-4 libxfixes3 libxfont1 libxft2 libxi6 
  libxine1 libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins libxine1-plugins libxine1-x libxinerama1 
  libxkbfile1 libxmu6 libxmuu1 libxpm4 libxrandr2 libxrender1 libxslt1.1 libxss1 libxt6 libxtst6 libxv1 libxvidcore4 libxvmc1 
  libxxf86dga1 libxxf86vm1 linux-image-2.6-amd64 linux-sound-base locales login logrotate lp-solve lsb-base lsof lvm2 lwresd 
  m4 mailagent makedev man-db manpages manpages-fr manpages-fr-extra mawk mc menu mime-support mktemp mlocate mlock 
  module-init-tools mount mousepad mutt myspell-en-us myspell-fr-gut nano ncurses-base ncurses-bin ncurses-term net-tools 
  netatalk netbase nfs-common nfs-kernel-server ntfs-3g nvclock openbsd-inetd openoffice.org openoffice.org-base 
  openoffice.org-base-core openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw 
  openoffice.org-filter-mobiledev openoffice.org-gcj openoffice.org-gtk openoffice.org-help-en-us openoffice.org-help-fr 
  openoffice.org-impress openoffice.org-java-common openoffice.org-l10n-fr openoffice.org-math openoffice.org-officebean 
  openoffice.org-report-builder-bin openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-thesaurus-en-us 
  openoffice.org-writer openprinting-ppds openssh-client openssh-server openssl orage passwd patch pciutils pcmciautils perl 
  perl-base perl-modules php5-common pm-utils popularity-contest portmap postgresql postgresql-client postgresql-client-common 
  postgresql-common postgresql-contrib postgresql-doc powermgmt-base powertop printconf procmail procps psmisc psutils python 
  python-cairo python-central python-dbus python-foomatic python-glade2 python-gnome2 python-gobject python-gtk2 
  python-imaging python-ipy python-minimal python-pyorbit python-support python2.5 python2.5-minimal qpopper radeontool 
  readline-common reportbug rsyslog sa-exim samba samba-common samba-doc sed sgml-base sgml-data shared-mime-info 
  smartmontools smbclient smbfs spamassassin spamc ssl-cert sudo swat swfdec-mozilla sysv-rc sysvinit sysvinit-utils tar 
  tasksel tasksel-data tcpd texinfo thunar thunar-data thunar-media-tags-plugin time toshset traceroute ttf-dejavu 
  ttf-dejavu-core ttf-dejavu-extra ttf-liberation ttf-opensymbol tzdata ucf udev update-inetd usbutils util-linux uw-imapd 
  vbetool vim-common vim-tiny w3m wamerican wfrench wget whiptail whois winbind wireless-tools wpasupplicant x11-apps 
  x11-common x11-session-utils x11-utils x11-xfs-utils x11-xkb-utils x11-xserver-utils xauth xbitmaps xdg-utils xfce4 
  xfce4-battery-plugin xfce4-clipman-plugin xfce4-cpufreq-plugin xfce4-cpugraph-plugin xfce4-diskperf-plugin 
  xfce4-fsguard-plugin xfce4-genmon-plugin xfce4-goodies xfce4-mailwatch-plugin xfce4-mixer xfce4-mount-plugin 
  xfce4-netload-plugin xfce4-notes-plugin xfce4-panel xfce4-quicklauncher-plugin xfce4-sensors-plugin xfce4-session 
  xfce4-smartbookmark-plugin xfce4-systemload-plugin xfce4-terminal xfce4-utils xfce4-verve-plugin xfce4-wavelan-plugin 
  xfce4-weather-plugin xfdesktop4 xfdesktop4-data xfonts-100dpi xfonts-75dpi xfonts-base xfonts-encodings xfonts-intl-european 
  xfonts-scalable xfonts-utils xfprint4 xfwm4 xinit xkb-data xml-core xorg xsane xsane-common xserver-xorg xserver-xorg-core 
  xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd xserver-xorg-input-mouse xserver-xorg-input-synaptics 
  xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati 
  xserver-xorg-video-chips xserver-xorg-video-cirrus xserver-xorg-video-dummy xserver-xorg-video-fbdev 
  xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-intel xserver-xorg-video-mach64 xserver-xorg-video-mga 
  xserver-xorg-video-neomagic xserver-xorg-video-nv xserver-xorg-video-openchrome xserver-xorg-video-r128 
  xserver-xorg-video-radeon xserver-xorg-video-radeonhd xserver-xorg-video-rendition xserver-xorg-video-s3 
  xserver-xorg-video-s3virge xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis 
  xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident xserver-xorg-video-tseng 
  xserver-xorg-video-vesa xserver-xorg-video-vmware xserver-xorg-video-voodoo xterm zlib1g 
Les paquets suivants sont RECOMMANDÉS mais ne seront pas installés :
  bzip2 gamin gcc gdm-themes hddtemp libapache2-reload-perl libatk1.0-data libatm1 libbsd-resource-perl libc6-dev libfribidi0 
  libglib2.0-data libgtk2.0-bin libhtml-format-perl libio-socket-inet6-perl liblog4j1.2-java-gcj libmail-spf-perl 
  libmailtools-perl libnss-lwres libpam-gnome-keyring libpaper-utils lm-sensors make nmap openoffice.org-emailmerge 
  openoffice.org-filter-binfilter pconf-detect rc re2c uuid-runtime wdiff xfwm4-themes xnest xserver-xephyr zenity 
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] 
&lt;/code&gt;

En fonction de votre connexion ça peut prendre très longtemps, et être interrompu (à 500KB/s une demi-heure à 50 KB/s c'est plusieurs heures...).
Un conseil, si vous n'êtes pas sûr de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

&lt;code&gt;
# aptitude -d safe-upgrade
...
 762Mo téléchargés en 1h9min37s (182ko/s)                                                          
Lecture des listes de paquets... Fait             
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait
&lt;/code&gt;

Puis

&lt;code&gt;
# aptitude safe-upgrade
...
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 0o/762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] y
&lt;/code&gt;

=== Déroulement ===

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut, mais prenez le temps de lire tous les messages, et si nécessaire, prenez des notes.

[[Fichier:Snapshot4.jpeg]]

[[Fichier:Snapshot5.jpeg]]

[[Fichier:Snapshot6.jpeg]]

[[Fichier:Snapshot7.jpeg]]

[[Fichier:Snapshot9.jpeg]]

[[Fichier:Snapshot11.jpeg]]

[[Fichier:Snapshot13.jpeg]]

[[Fichier:Snapshot14.jpeg]]

[[Fichier:Snapshot15.jpeg]]

[[Fichier:Snapshot16.jpeg]]

[[Fichier:Snapshot17.jpeg]]

Vous partirez d'une Lenny configurée, et donc de nombreux fichiers de configuration auront été modifiés par vos soins.
Il est judicieux de ne pas écraser vos configurations avec les fichiers par défaut proposés par les &quot;mainteneurs&quot; des paquets.
Vous aurez tout le loisir de regarder les modifications proposées, et ce qu'elles apportent, en regardant dans /usr/share/doc ou dans les contenus de vos deb téléchargés (dans /var/apt/archives)

[[Fichier:Snapshot18.jpeg]]

Sans le téléchargement des fichiers, comptez un peu plus d'une heure pour la mise à niveau

=== finalisation ===

Le safe-upgrade devrait se terminer par ceci :

&lt;code&gt;
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 4 mises à jour restantes [-721].
&lt;/code&gt;

Vous pouvez maintenant lancer un &quot;full-upgrade&quot;

&lt;code&gt;
# aptitude full-upgrade

...

4 paquets mis à jour, 13 nouvellement installés, 2 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 12,1Mo d'archives. Après dépaquetage, 14,3Mo seront utilisés.
Les paquets suivants ont des dépendances non satisfaites :
  libept0: Dépend: libapt-pkg-libc6.7-6-4.6 qui est un paquet virtuel
Les actions suivantes permettront de résoudre ces dépendances :

Supprimer les paquets suivants :
libept0

Le score est de 115

Accepter cette solution ? [Y/n/q/?]y

...

Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 0 mise à jour restante [-4].
&lt;/code&gt;

Si tout s'est bien passé, il ne vous reste plus qu'a redémarrer la machine :

 # reboot

=== Grub2 ===

Si vous étiez sous Grub-legacy vous aurez certainement fait la bascule vers Grub2.

La première &quot;surprise&quot; qui vous attend donc (sauf si vous avez lu ce guide avant...) c'est le menu suivant :

[[Fichier:Snapshot19.jpeg]]

Si vous appuyez sur entrée, vous serez conduit vers le menu de Grub2.
Cette étape permet de vérifier que Grub2 est bien installé, et de le tester.

[[Fichier:Snapshot20.jpeg]]

Si cela fonctionne, une des premières choses à faire sera de confirmer l'installation de Grub2 en tapant dans une console la commande suivante :

 # upgrade-from-grub-legacy

=== LVM ===

Problème rencontré lors de la mise à niveau avec LVM...
Le système s'est mélangé les pédales dans l'attribution des partitions.
Résultat :

[[Fichier:Snapshot21.jpeg]]

Voici ou se situe le problème :

&lt;code&gt;
$ vdir /dev/l2s/
total 0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 home -&gt; ../dm-5
lrwxrwxrwx 1 root root 7 25 nov.  18:28 root -&gt; ../dm-0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 swap_1 -&gt; ../dm-1
lrwxrwxrwx 1 root root 7 25 nov.  18:28 tmp -&gt; ../dm-4
lrwxrwxrwx 1 root root 7 25 nov.  18:28 usr -&gt; ../dm-2
lrwxrwxrwx 1 root root 7 25 nov.  18:28 var -&gt; ../dm-3
&lt;/code&gt;
&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
# /dev/hda1	/boot	ext2	defaults	0	2
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-1	/usr	ext3	defaults	0	2
# /dev/hdb1	/var	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-3	none	swap	sw	0	0
# /dev/hdc	/media/cdrom0	udf,iso9660	user,noauto	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

Je ne sais pour quelle raison LVM à changé la numérotation des partitions... /usr est passé en dm-1 alors qu'il était en dm-2 et la swap en dm-3 alors qu'elle était être en dm-1
Il suffit de modifier le fichier /etc/fstab pour qu'il reflète à nouveau correctement vos partitions, et le tour est joué :

&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-2	/usr	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-1	none	swap	sw	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

== Bienvenu sur Squeeze ==

 laurent@lenny2squeeze:~$ uname -a
 Linux lenny2squeeze 2.6.32-5-amd64 #1 SMP Sat Oct 30 14:18:21 UTC 2010 x86_64 GNU/Linux

[[Fichier:Snapshot25.jpeg]]

A venir... Upgrade de Squeeze à ????

----
[[Utilisateur:Lol|Lol]] 25 novembre 2010 à 15:55 (EAT)
[[Catégorie:Installation]]</text>
      <sha1>drbxdgt7db4ng0m43gk1qbskcigsirn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2428</id>
      <parentid>2419</parentid>
      <timestamp>2010-11-26T07:30:54Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* stopper le serveur X */</comment>
      <text xml:space="preserve" bytes="31658">{{sid}}

La mise à niveau de Lenny à Squeeze se précise, nous allons faire ici un rapide résumé des opérations nécessaires à la réussite de cette mise à niveau (upgrade).
LVM est installé sur la machine que nous allons mettre à niveau afin de tester le plus de possibilités.

Avant toute chose, je souhaite faire quelques précisions :
Chaque configuration est propre à chacun, en fonction de ses goûts, de son matériel et de ses connaissances.
Un guide universel n'existe donc pas.

Prévoyez aussi d'avoir du temps devant vous, et d'être au calme.

Nous choisirons d'utiliser aptitude au lieu de apt-get, il est en effet plus exigeant concernant les dépendances, votre mise à niveau sera plus &quot;propre&quot;.

J'ai choisi une Lenny avec toutes les options de tasksel activées afin de faire un tour d'horizon le plus vaste possible des problèmes qui pourraient survenir.
L'environnement graphique est Xfce.

[[Fichier:Snapshot3.jpeg]]

== Pré-requis ==

=== Une bonne sauvegarde ===

Vous n'avez AUCUNE garantie que la mise à niveau se passe bien, alors, quel que soit la méthode que vous emploierez, une sauvegarde est le minimum que vous puissiez faire avant de vous lancer dans l'aventure..

Avec dd, dump ou simplement cp SAUVEGARDEZ !

=== Un système à jour! ===

Le fichier sources.list précédent la mise à niveau :

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org stable main non-free
#deb-src http://www.debian-multimedia.org stable main non-free

# backports
deb http://backports.debian.org/debian-backports lenny-backports main contrib non-free
&lt;/code&gt;

 # aptitude update
 # aptitude safe-upgrade
 # aptitude full-upgrade

=== De l'espace! ===

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition où se trouve /var pour le stockage des paquets téléchargés.

Pour info une mise à jour &quot;lourde&quot; se soldera par le téléchargement d'environ 1Go...

Pour connaitre l’espace libre de votre partition racine :

 $ df -H
 Sys. de fich.          Tail.  Occ.  Disp. %Occ. Monté sur
 '''/dev/dm-0              338M   123M   198M  39% /'''
 tmpfs                  262M      0   262M   0% /lib/init/rw
 udev                    11M   689k   9,8M   7% /dev
 tmpfs                  262M      0   262M   0% /dev/shm
 /dev/hda1              239M    20M   207M   9% /boot
 /dev/dm-5              3,7G    75M   3,4G   3% /home
 /dev/dm-4              317M    11M   290M   4% /tmp
 /dev/dm-1              3,7G   1,7G   1,8G  50% /usr
 '''/dev/hdb1              5,3G   1,1G   4,0G  21% /var'''
 /dev/dm-2              1,8G   876M   818M  52% /media/dm-2

'''Si vous disposez de plus de 50% d’espace libre vous pouvez passer à l'étape suivante'''.

Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Si cela ne suffit toujours pas, il faut envisager d'ajouter un disque à votre système, ou de procéder à un upgrade par étapes successives (en mettant à jour les paquets progressivement et en nettoyant à chaque étape)

=== Les pilotes de la carte Graphique ===

Afin de ne pas avoir de mauvaise surprise avec le serveur X, modifiez votre xorg.conf afin d'utiliser des pilotes Debian.

Eventuellement utilisez les pilotes &quot;vesa&quot;

Dans votre fichier /etc/X11/xorg.conf

&lt;code&gt;
Section &quot;Device&quot;
    Identifier     &quot;Device0&quot;
    Driver         &quot;vesa&quot;
EndSection
&lt;/code&gt;

Si vous êtes sur de vous, n'en faites rien, mais prévoyez une réinstallation des pilotes avant le premier redémarrage.

=== Le fichier sources.list ===

Créons un nouveau sources.list que nous placerons dans /etc/apt/sources.list.d
Nous prenons dores et déjà la bonne habitude d'utiliser ce dossier qui est devenu celui par défaut pour mettre les fichiers contenant les dépôts.

 # nano /etc/apt/sources.list.d/sources.list

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free

# stable security
deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

## stable volatile
## Il n'y a pas de dépôt volatile pour squeeze pour l'instant
## deb http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free
## deb-src http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org squeeze main non-free
#deb-src http://www.debian-multimedia.org squeeze main non-free

# backports
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
&lt;/code&gt;

== Préparation de la mise à niveau ==

Maintenant que nous sommes prêts, nous pouvons lancer l'upgrade :

Mise à jour de la liste des paquets :

 # aptitude update

=== Si vous avez des problèmes de clefs ===

 W: GPG error: http://www.debian-multimedia.org

 # aptitude install debian-backports-keyring
 # aptitude install debian-multimedia-keyring

=== Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]] ===

 E: Dynamic MMap ran out of room

 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaite l'update, il ne doit pas y avoir d'erreurs

 # aptitude update

=== Problèmes de dépendances ===

Vous ne pourrez pas faire le passage de Lenny à Squeeze tant que subsisteront des problèmes de dépendances...

Voici deux exemples de problèmes de dépendances, et la manière de les régler :

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  xfce4-mixer-oss: Est en conflit avec: xfce4-mixer-alsa mais 4.4.2-3 est installé.
  foomatic-db: Est en conflit avec: foomatic-db-hpijs mais 20080211-1 est installé.
  xfce4-mixer-alsa: Est en conflit avec: xfce4-mixer-oss mais 4.4.2-3 doit être installé.

# aptitude install foomatic-db xfce4-mixer-alsa
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Lecture des descriptions de tâches... Fait  
Les NOUVEAUX paquets suivants vont être installés : 
  libopenjpeg2{a} libpoppler5{a} min12xxw{a} pnm2ppa{a} 
Les paquets suivants seront ENLEVÉS : 
  foomatic-db-hpijs{a} 
Les paquets suivants seront mis à jour : 
  fontconfig-config foomatic-db foomatic-db-engine foomatic-filters libfontconfig1 libjpeg62 libxml2 poppler-utils 
8 paquets mis à jour, 4 nouvellement installés, 1 à enlever et 728 non mis à jour.
Il est nécessaire de télécharger 4722ko d'archives. Après dépaquetage, 18,2Mo seront libérés.
Voulez-vous continuer ? [Y/n/?] o
...
État actuel : 728 mises à jour restantes [-8].
&lt;/code&gt;

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  libatlas3gf-base: Est en conflit avec: libblas3gf (&lt; 1.2-5) mais 1.2-2 est installé et a été conservé
                    Est en conflit avec: liblapack3gf (&lt; 3.2.1-4) mais 3.1.1-1 est installé et a été conservé
  rarian-compat: Est en conflit avec: scrollkeeper (&lt; 0.4) mais 0.3.14-16 est installé et a été conservé

# aptitude install libatlas3gf-base scrollkeeper
...
Les actions suivantes permettront de résoudre ces dépendances :

Mettre à jour les paquets suivants :
libblas3gf [1.2-2 (stable, now) -&gt; 1.2-8 (testing)]
liblapack3gf [3.1.1-1 (stable, now) -&gt; 3.2.1-8 (testing)]

Le score est de 70

Accepter cette solution ? [Y/n/q/?] y
...
État actuel : 725 mises à jour restantes [-3].
&lt;/code&gt;

En cas de doute n'hésitez pas à demander un avis [http://forum.debian-fr.org/ sur le forum]

=== stopper le serveur X ===

'''IMPORTANT''' : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

Si vous faites votre mise à niveau avec le serveur X lancé, vous risquez [http://www.debian-fr.org/upgrade-lenny-squeeze-gnome-minimaliste-t30744.html cette mésaventure]

== Lancez la mise à niveau ==

&lt;code&gt;
# aptitude safe-upgrade
...
Les paquets suivants ont été conservés : 
  apt apt-utils aptitude synaptic 
Les NOUVEAUX paquets suivants vont être installés : 
  acpi-fakekey{a} apache2.2-bin{a} aumix{a} aumix-common{a} bluez{a} bluez-alsa{a} bluez-cups{a} bluez-gstreamer{a} 
  browser-plugin-gnash{a} cifs-utils{a} consolekit{a} cpp-4.4{a} cracklib-runtime{a} cups-ppdc{a} dash{a} db4.8-util{a} 
  diffutils{a} dosfstools{a} firmware-linux-free{a} freepats{a} fuse-utils{a} gcc-4.4-base{a} gcj-4.4-base{a} 
  gcj-4.4-jre-lib{a} geoip-database{a} ghostscript-cups{a} gnash{a} gnash-common{a} gnupg-curl{a} grub-pc{a} 
  gstreamer0.10-ffmpeg{a} gstreamer0.10-fluendo-mp3{a} gstreamer0.10-plugins-bad{a} gstreamer0.10-plugins-base{a} gvfs{a} 
  hplip-cups{a} insserv{a} install-info{a} isc-dhcp-client{a} isc-dhcp-common{a} iso-codes{a} keyboard-configuration{a} 
  libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libass4{a} libatasmart4{a} libaudit0{a} libavahi-core7{a} libavcodec52{a} 
  libavformat52{a} libavutil50{a} libbabl-0.0-0{a} libbind9-60{a} libbluetooth3{a} libboost-date-time1.42.0{a} 
  libboost-thread1.42.0{a} libbsd0{a} libburn4{a} libc-bin{a} libc-client2007e{a} libcap-ng0{a} libcdaudio1{a} libcdio10{a} 
  libcdparanoia0{a} libcelt0-0{a} libck-connector0{a} libcolamd2.7.1{a} libcommons-beanutils-java{a} 
  libcommons-collections3-java{a} libcommons-compress-java{a} libcommons-digester-java{a} libcommons-logging-java{a} 
  libcrack2{a} libcupscgi1{a} libcupsdriver1{a} libcupsmime1{a} libcupsppdc1{a} libdatrie1{a} libdb-je-java{a} libdb4.7{a} 
  libdb4.7-java{a} libdb4.7-java-gcj{a} libdb4.8{a} libdc1394-22{a} libdca0{a} libdirac-encoder0{a} libdirectfb-1.2-9{a} 
  libdns66{a} libdrm-intel1{a} libdrm-nouveau1{a} libdrm-radeon1{a} libdvdnav4{a} libdvdread4{a} libeggdbus-1-0{a} libenca0{a} 
  libenchant1c2a{a} libevent-1.4-2{a} libexempi3{a} libexo-common{a} libfaad2{a} libfftw3-3{a} libfile-copy-recursive-perl{a} 
  libflite1{a} libfont-freetype-perl{a} libfuse2{a} libgcj10{a} libgcr0{a} libgdu0{a} libgegl-0.0-0{a} libgeoip1{a} libgif4{a} 
  libgme0{a} libgomp1{a} libgp11-0{a} libgpgme11{a} libgraphicsmagick3{a} libgraphite3{a} libgssapi-krb5-2{a} libgtkglext1{a} 
  libgudev-1.0-0{a} libhpmud0{a} libicu44{a} libicu4j-java{a} libiptcdata0{a} libisc60{a} libisccc60{a} libisccfg60{a} 
  libiso9660-7{a} libisofs6{a} libiw30{a} libjbig2dec0{a} libjpeg-progs{a} libjpeg8{a} libjtidy-java{a} libk5crypto3{a} 
  libkate1{a} libkrb5-3{a} libkrb5support0{a} libltdl7{a} liblucene2-java{a} liblwres60{a} liblzma2{a} libmimic0{a} libmms0{a} 
  libmodplug1{a} libmozjs2d{a} libmpcdec6{a} libmpfr4{a} libmusicbrainz4c2a{a} libmythes-1.2-0{a} libneon27-gnutls{a} 
  libnetaddr-ip-perl{a} libnfnetlink0{a} libnl1{a} libntfs-3g75{a} libntfs10{a} libofa0{a} libonig2{a} libopencore-amrnb0{a} 
  libopencore-amrwb0{a} libopenraw1{a} liborc-0.4-0{a} libossp-uuid16{a} libpam-ck-connector{a} libpam-cracklib{a} 
  libpango-perl{a} libpangomm-1.4-1{a} libparted0debian1{a} libpciaccess0{a} libpolkit-agent-1-0{a} libpolkit-backend-1-0{a} 
  libpolkit-gobject-1-0{a} libpoppler-glib4{a} libpth20{a} libpython2.6{a} libqdbm14{a} libraptor1{a} librasqal2{a} 
  libraw1394-11{a} librdf0{a} libreadline6{a} librtmp0{a} libsane-hpaio{a} libsasl2-modules{a} libservlet2.5-java{a} 
  libsexy2{a} libsgutils2-2{a} libslv2-9{a} libsndfile1{a} libsoundtouch1c2{a} libswscale0{a} libtag1-vanilla{a} libtalloc2{a} 
  libtextcat-data-utf8{a} libtokyocabinet8{a} libudev0{a} libunique-1.0-0{a} libusb-1.0-0{a} libutempter0{a} libuuid-perl{a} 
  libv4l-0{a} libva1{a} libvcdinfo0{a} libvisual-0.4-0{a} libvisual-0.4-plugins{a} libvpx0{a} libwebkit-1.0-2{a} 
  libwebkit-1.0-common{a} libwildmidi1{a} libwnck-common{a} libwnck22{a} libx11-xcb1{a} libx264-104{a} libxcb-atom1{a} 
  libxcb-aux0{a} libxcb-dri2-0{a} libxcb-event1{a} libxfce4menu-0.1-0{a} libxfce4util-bin{a} libxfce4util-common{a} 
  libxfconf-0-2{a} libxklavier16{a} libxml-parser-perl{a} libxres1{a} libzbar0{a} linux-base{a} linux-image-2.6.32-5-amd64{a} 
  lockfile-progs{a} lsb-release{a} mtools{a} ntfsprogs{a} os-prober{a} oss-compat{a} php5-cli{a} php5-suhosin{a} 
  policykit-1{a} policykit-1-gnome{a} postgresql-8.4{a} postgresql-client-8.4{a} postgresql-contrib-8.4{a} 
  postgresql-doc-8.4{a} python-cups{a} python-gconf{a} python-numpy{a} python-pexpect{a} python-reportbug{a} python-webkit{a} 
  python2.6{a} python2.6-minimal{a} ristretto{a} samba-common-bin{a} sane-utils{a} sensible-utils{a} squeeze{a} 
  tango-icon-theme{a} thunar-archive-plugin{a} thunar-volman{a} tsconf{a} ttf-freefont{a} ttf-lyx{a} ttf-sil-gentium{a} 
  ttf-sil-gentium-basic{a} udisks{a} uno-libs3{a} unzip{a} ure{a} x-ttcidfont-conf{a} xdg-user-dirs{a} xfburn{a} 
  xfce-keyboard-shortcuts{a} xfce4-appfinder{a} xfce4-clipman{a} xfce4-datetime-plugin{a} xfce4-dict{a} xfce4-notes{a} 
  xfce4-notifyd{a} xfce4-places-plugin{a} xfce4-power-manager{a} xfce4-power-manager-data{a} xfce4-screenshooter{a} 
  xfce4-settings{a} xfce4-taskmanager{a} xfce4-timer-plugin{a} xfce4-xkb-plugin{a} xfconf{a} xfonts-mathml{a} xinput{a} xli{a} 
  xorg-docs-core{a} xscreensaver{a} xscreensaver-data{a} xserver-common{a} xserver-xorg-video-nouveau{a} xulrunner-1.9.1{a} 
  xz-utils{a} 
Les paquets suivants seront ENLEVÉS : 
  bluez-utils{u} cpp-4.3{u} cupsddk-drivers{u} djvulibre-desktop{u} finger{u} gs-common{u} liba52-0.7.4{u} libamrnb3{u} 
  libamrwb3{u} libaudio2{u} libavahi-compat-libdnssd1{u} libavahi-core5{u} libavc1394-0{u} libavcodec51{u} libbind9-50{u} 
  libbluetooth2{u} libc-client2007b{u} libcap1{u} libcucul0{u} libcupsys2{u} libcurl3{u} libdatrie0{u} libdirac0{u} 
  libdjvulibre21{u} libfaad0{u} libfreebob0{u} libgail-common{u} libgraphviz4{u} libgtkhtml2-0{u} libicu38{u} libiec61883-0{u} 
  libisccc50{u} libisccfg50{u} libiw29{u} libjaxp1.3-java-gcj{u} libltdl3{u} liblwres50{u} libmagick10{u} libmodplug0c2{u} 
  libmozjs1d{u} libmpcdec3{u} libmpfr1ldbl{u} libmysqlclient15off{u} libneon27{u} libntfs-3g31{u} libossp-uuid15{u} 
  libparted1.8-10{u} libpoppler-glib3{u} libpoppler3{u} libqt3-mt{u} libraw1394-8{u} libsensors3{u} libservlet2.4-java{u} 
  libsmbios-bin{u} libsmbios2{u} libssh2-1{u} libsuitesparse-3.1.0{u} libswfdec-0.6-90{u} libtalloc1{u} libvolume-id0{u} 
  libx264-65{u} libxalan2-java{u} libxalan2-java-gcj{u} libxcb-xlib0{u} libxerces2-java{u} libxerces2-java-gcj{u} 
  libxfce4mcs-client3{u} libxfce4mcs-manager3{u} libxtrap6{u} libxxf86misc1{u} mysql-common{u} openoffice.org-writer2latex{u} 
  openssl-blacklist{u} postgresql-8.3{u} postgresql-client-8.3{u} postgresql-contrib-8.3{u} postgresql-doc-8.3{u} 
  python-gtkhtml2{u} python-numeric{u} svgalibg1{u} xfce4-icon-theme{u} xfce4-mcs-manager{u} xfce4-mcs-plugins{u} 
  xfce4-minicmd-plugin{u} xfce4-screenshooter-plugin{u} xserver-xorg-video-cyrix{u} xserver-xorg-video-v4l{u} 
  xserver-xorg-video-vga{u} xulrunner-1.9{u} 
Les paquets suivants seront mis à jour : 
  a2ps acpi acpi-support acpi-support-base acpid adduser alsa-base alsa-utils anacron analog apache2 apache2-doc 
  apache2-mpm-prefork apache2-utils apache2.2-common apmd aspell aspell-fr at avahi-autoipd avahi-daemon base-files 
  base-passwd bash bash-completion bc bind9 bind9-doc bind9-host bind9utils bluetooth bsd-mailx bsdmainutils bsdutils bsh 
  bsh-gcj busybox ca-certificates console-common console-data console-setup console-terminus console-tools coreutils cpio cpp 
  cpufrequtils cron cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk dbus dbus-x11 dc debconf debconf-i18n 
  debian-archive-keyring debian-faq debianutils deborphan defoma desktop-base desktop-file-utils dhcp3-client dhcp3-common 
  dialog dictionaries-common diff disk-manager dmidecode dmsetup dnsutils doc-debian docbook-xml dpkg e2fslibs e2fsprogs ed 
  eject esound-common exim4 exim4-base exim4-config exim4-daemon-light exo-utils fastjar file findutils fontconfig foo2zjs 
  foomatic-db-gutenprint foomatic-filters-ppds foomatic-gui fortune-mod fortunes-min ftp gcc-4.3-base gconf2 gconf2-common gdm 
  gettext-base ghostscript gimp gimp-data gksu gnome-keyring gnupg gparted gpgv grep groff-base grub grub-common gsfonts 
  gtk2-engines-xfce gzip hal hal-info hdparm hibernate hicolor-icon-theme hostname hpijs hplip hplip-data iamerican ibritish 
  iceweasel iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint info initramfs-tools initscripts installation-report iproute 
  iptables iputils-ping ispell java-common kerneloops klibc-utils laptop-detect less libaa1 libacl1 libapache2-mod-perl2 
  libapache2-mod-php5 libapache2-mod-python libapm1 libapr1 libaprutil1 libart-2.0-2 libasound2 libaspell15 libatk1.0-0 
  libattr1 libaudiofile0 libavahi-client3 libavahi-common-data libavahi-common3 libavahi-glib1 libavutil49 libbcel-java 
  libblkid1 libbonobo2-0 libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i386 libcaca0 
  libcairo-perl libcairo2 libcairomm-1.0-1 libcap2 libcomerr2 libconsole libcpufreq0 libcroco3 libcups2 libcupsimage2 
  libcurl3-gnutls libcwidget3 libdaemon0 libdb4.6 libdbus-1-3 libdbus-glib-1-2 libdevel-symdump-perl libdevmapper1.02.1 
  libdigest-hmac-perl libdigest-sha1-perl libdirectfb-extra libdmx1 libdrm2 libedit2 libesd0 libexif12 libexo-0.3-0 libexpat1 
  libfaac0 libfam0 libffi5 libflac8 libfontenc1 libfreetype6 libfs6 libgail18 libgc1c2 libgcc1 libgcj-bc libgcj-common 
  libgconf2-4 libgcrypt11 libgd2-noxpm libgdbm3 libgfortran3 libgimp2.0 libgksu2-0 libgl1-mesa-dri libgl1-mesa-glx libglade2-0 
  libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgmp3c2 libgnome-keyring0 libgnome2-0 libgnome2-canvas-perl 
  libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0 libgnomecanvas2-common libgnomeui-0 libgnomeui-common 
  libgnomevfs2-0 libgnomevfs2-common libgnomevfs2-extra libgnutls26 libgpg-error0 libgphoto2-2 libgphoto2-port0 libgpm2 libgs8 
  libgsf-1-114 libgsf-1-common libgsm1 libgssglue1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0 
  libgtk2.0-common libgtkmm-2.4-1c2a libgtop2-7 libgtop2-common libgutenprint2 libhal-storage1 libhal1 libhsqldb-java 
  libhsqldb-java-gcj libhtml-parser-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libice6 libidl0 libidn11 libieee1284-3 
  libijs-0.35 libilmbase6 libjack0 libjasper1 libjaxp1.3-java libjline-java libkeyutils1 libklibc libkrb53 liblcms1 
  libldap-2.4-2 liblocale-gettext-perl liblockfile1 liblog4j1.2-java liblzo2-2 libmad0 libmagic1 libmng1 libmp3lame0 
  libmx4j-java libncurses5 libncursesw5 libnet-dns-perl libnewt0.52 libnfsidmap2 libnotify1 libnspr4-0d libnss-mdns libnss3-1d 
  libogg0 liboil0.3 libopenexr6 liborbit2 libpam-modules libpam-runtime libpam0g libpango1.0-0 libpango1.0-common libpaper1 
  libpci3 libpcre3 libpcsclite1 libperl5.10 libpixman-1-0 libpng12-0 libpopt0 libpostproc51 libpq5 libpulse0 libreadline5 
  librecode0 libregexp-java librpcsecgss3 librsvg2-2 librsvg2-common libsane libsane-extras libsasl2-2 libschroedinger-1.0-0 
  libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsensors4 libsepol1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 
  libsmbclient libsnmp-base libsnmp15 libsocket6-perl libsoup2.4-1 libsqlite3-0 libss2 libssl0.9.8 libstartup-notification0 
  libstdc++6 libsvga1 libsysfs2 libtag1c2a libtagc0 libtasn1-3 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl 
  libthai-data libthai0 libtheora0 libthunar-vfs-1-2 libtiff4 libts-0.0-0 liburi-perl libusb-0.1-4 libuuid1 libvorbis0a 
  libvorbisenc2 libvte-common libvte9 libwavpack1 libwbclient0 libwmf0.2-7 libwpg-0.1-1 libwrap0 libwww-perl libx11-6 
  libx11-data libx86-1 libxau6 libxaw7 libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xv0 libxcb1 
  libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfce4util4 libxfcegui4-4 libxfixes3 libxfont1 libxft2 libxi6 
  libxine1 libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins libxine1-plugins libxine1-x libxinerama1 
  libxkbfile1 libxmu6 libxmuu1 libxpm4 libxrandr2 libxrender1 libxslt1.1 libxss1 libxt6 libxtst6 libxv1 libxvidcore4 libxvmc1 
  libxxf86dga1 libxxf86vm1 linux-image-2.6-amd64 linux-sound-base locales login logrotate lp-solve lsb-base lsof lvm2 lwresd 
  m4 mailagent makedev man-db manpages manpages-fr manpages-fr-extra mawk mc menu mime-support mktemp mlocate mlock 
  module-init-tools mount mousepad mutt myspell-en-us myspell-fr-gut nano ncurses-base ncurses-bin ncurses-term net-tools 
  netatalk netbase nfs-common nfs-kernel-server ntfs-3g nvclock openbsd-inetd openoffice.org openoffice.org-base 
  openoffice.org-base-core openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw 
  openoffice.org-filter-mobiledev openoffice.org-gcj openoffice.org-gtk openoffice.org-help-en-us openoffice.org-help-fr 
  openoffice.org-impress openoffice.org-java-common openoffice.org-l10n-fr openoffice.org-math openoffice.org-officebean 
  openoffice.org-report-builder-bin openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-thesaurus-en-us 
  openoffice.org-writer openprinting-ppds openssh-client openssh-server openssl orage passwd patch pciutils pcmciautils perl 
  perl-base perl-modules php5-common pm-utils popularity-contest portmap postgresql postgresql-client postgresql-client-common 
  postgresql-common postgresql-contrib postgresql-doc powermgmt-base powertop printconf procmail procps psmisc psutils python 
  python-cairo python-central python-dbus python-foomatic python-glade2 python-gnome2 python-gobject python-gtk2 
  python-imaging python-ipy python-minimal python-pyorbit python-support python2.5 python2.5-minimal qpopper radeontool 
  readline-common reportbug rsyslog sa-exim samba samba-common samba-doc sed sgml-base sgml-data shared-mime-info 
  smartmontools smbclient smbfs spamassassin spamc ssl-cert sudo swat swfdec-mozilla sysv-rc sysvinit sysvinit-utils tar 
  tasksel tasksel-data tcpd texinfo thunar thunar-data thunar-media-tags-plugin time toshset traceroute ttf-dejavu 
  ttf-dejavu-core ttf-dejavu-extra ttf-liberation ttf-opensymbol tzdata ucf udev update-inetd usbutils util-linux uw-imapd 
  vbetool vim-common vim-tiny w3m wamerican wfrench wget whiptail whois winbind wireless-tools wpasupplicant x11-apps 
  x11-common x11-session-utils x11-utils x11-xfs-utils x11-xkb-utils x11-xserver-utils xauth xbitmaps xdg-utils xfce4 
  xfce4-battery-plugin xfce4-clipman-plugin xfce4-cpufreq-plugin xfce4-cpugraph-plugin xfce4-diskperf-plugin 
  xfce4-fsguard-plugin xfce4-genmon-plugin xfce4-goodies xfce4-mailwatch-plugin xfce4-mixer xfce4-mount-plugin 
  xfce4-netload-plugin xfce4-notes-plugin xfce4-panel xfce4-quicklauncher-plugin xfce4-sensors-plugin xfce4-session 
  xfce4-smartbookmark-plugin xfce4-systemload-plugin xfce4-terminal xfce4-utils xfce4-verve-plugin xfce4-wavelan-plugin 
  xfce4-weather-plugin xfdesktop4 xfdesktop4-data xfonts-100dpi xfonts-75dpi xfonts-base xfonts-encodings xfonts-intl-european 
  xfonts-scalable xfonts-utils xfprint4 xfwm4 xinit xkb-data xml-core xorg xsane xsane-common xserver-xorg xserver-xorg-core 
  xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd xserver-xorg-input-mouse xserver-xorg-input-synaptics 
  xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati 
  xserver-xorg-video-chips xserver-xorg-video-cirrus xserver-xorg-video-dummy xserver-xorg-video-fbdev 
  xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-intel xserver-xorg-video-mach64 xserver-xorg-video-mga 
  xserver-xorg-video-neomagic xserver-xorg-video-nv xserver-xorg-video-openchrome xserver-xorg-video-r128 
  xserver-xorg-video-radeon xserver-xorg-video-radeonhd xserver-xorg-video-rendition xserver-xorg-video-s3 
  xserver-xorg-video-s3virge xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis 
  xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident xserver-xorg-video-tseng 
  xserver-xorg-video-vesa xserver-xorg-video-vmware xserver-xorg-video-voodoo xterm zlib1g 
Les paquets suivants sont RECOMMANDÉS mais ne seront pas installés :
  bzip2 gamin gcc gdm-themes hddtemp libapache2-reload-perl libatk1.0-data libatm1 libbsd-resource-perl libc6-dev libfribidi0 
  libglib2.0-data libgtk2.0-bin libhtml-format-perl libio-socket-inet6-perl liblog4j1.2-java-gcj libmail-spf-perl 
  libmailtools-perl libnss-lwres libpam-gnome-keyring libpaper-utils lm-sensors make nmap openoffice.org-emailmerge 
  openoffice.org-filter-binfilter pconf-detect rc re2c uuid-runtime wdiff xfwm4-themes xnest xserver-xephyr zenity 
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] 
&lt;/code&gt;

En fonction de votre connexion ça peut prendre très longtemps, et être interrompu (à 500KB/s une demi-heure à 50 KB/s c'est plusieurs heures...).
Un conseil, si vous n'êtes pas sûr de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

&lt;code&gt;
# aptitude -d safe-upgrade
...
 762Mo téléchargés en 1h9min37s (182ko/s)                                                          
Lecture des listes de paquets... Fait             
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait
&lt;/code&gt;

Puis

&lt;code&gt;
# aptitude safe-upgrade
...
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 0o/762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] y
&lt;/code&gt;

=== Déroulement ===

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut, mais prenez le temps de lire tous les messages, et si nécessaire, prenez des notes.

[[Fichier:Snapshot4.jpeg]]

[[Fichier:Snapshot5.jpeg]]

[[Fichier:Snapshot6.jpeg]]

[[Fichier:Snapshot7.jpeg]]

[[Fichier:Snapshot9.jpeg]]

[[Fichier:Snapshot11.jpeg]]

[[Fichier:Snapshot13.jpeg]]

[[Fichier:Snapshot14.jpeg]]

[[Fichier:Snapshot15.jpeg]]

[[Fichier:Snapshot16.jpeg]]

[[Fichier:Snapshot17.jpeg]]

Vous partirez d'une Lenny configurée, et donc de nombreux fichiers de configuration auront été modifiés par vos soins.
Il est judicieux de ne pas écraser vos configurations avec les fichiers par défaut proposés par les &quot;mainteneurs&quot; des paquets.
Vous aurez tout le loisir de regarder les modifications proposées, et ce qu'elles apportent, en regardant dans /usr/share/doc ou dans les contenus de vos deb téléchargés (dans /var/apt/archives)

[[Fichier:Snapshot18.jpeg]]

Sans le téléchargement des fichiers, comptez un peu plus d'une heure pour la mise à niveau

=== finalisation ===

Le safe-upgrade devrait se terminer par ceci :

&lt;code&gt;
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 4 mises à jour restantes [-721].
&lt;/code&gt;

Vous pouvez maintenant lancer un &quot;full-upgrade&quot;

&lt;code&gt;
# aptitude full-upgrade

...

4 paquets mis à jour, 13 nouvellement installés, 2 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 12,1Mo d'archives. Après dépaquetage, 14,3Mo seront utilisés.
Les paquets suivants ont des dépendances non satisfaites :
  libept0: Dépend: libapt-pkg-libc6.7-6-4.6 qui est un paquet virtuel
Les actions suivantes permettront de résoudre ces dépendances :

Supprimer les paquets suivants :
libept0

Le score est de 115

Accepter cette solution ? [Y/n/q/?]y

...

Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 0 mise à jour restante [-4].
&lt;/code&gt;

Si tout s'est bien passé, il ne vous reste plus qu'a redémarrer la machine :

 # reboot

=== Grub2 ===

Si vous étiez sous Grub-legacy vous aurez certainement fait la bascule vers Grub2.

La première &quot;surprise&quot; qui vous attend donc (sauf si vous avez lu ce guide avant...) c'est le menu suivant :

[[Fichier:Snapshot19.jpeg]]

Si vous appuyez sur entrée, vous serez conduit vers le menu de Grub2.
Cette étape permet de vérifier que Grub2 est bien installé, et de le tester.

[[Fichier:Snapshot20.jpeg]]

Si cela fonctionne, une des premières choses à faire sera de confirmer l'installation de Grub2 en tapant dans une console la commande suivante :

 # upgrade-from-grub-legacy

=== LVM ===

Problème rencontré lors de la mise à niveau avec LVM...
Le système s'est mélangé les pédales dans l'attribution des partitions.
Résultat :

[[Fichier:Snapshot21.jpeg]]

Voici ou se situe le problème :

&lt;code&gt;
$ vdir /dev/l2s/
total 0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 home -&gt; ../dm-5
lrwxrwxrwx 1 root root 7 25 nov.  18:28 root -&gt; ../dm-0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 swap_1 -&gt; ../dm-1
lrwxrwxrwx 1 root root 7 25 nov.  18:28 tmp -&gt; ../dm-4
lrwxrwxrwx 1 root root 7 25 nov.  18:28 usr -&gt; ../dm-2
lrwxrwxrwx 1 root root 7 25 nov.  18:28 var -&gt; ../dm-3
&lt;/code&gt;
&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
# /dev/hda1	/boot	ext2	defaults	0	2
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-1	/usr	ext3	defaults	0	2
# /dev/hdb1	/var	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-3	none	swap	sw	0	0
# /dev/hdc	/media/cdrom0	udf,iso9660	user,noauto	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

Je ne sais pour quelle raison LVM à changé la numérotation des partitions... /usr est passé en dm-1 alors qu'il était en dm-2 et la swap en dm-3 alors qu'elle était être en dm-1
Il suffit de modifier le fichier /etc/fstab pour qu'il reflète à nouveau correctement vos partitions, et le tour est joué :

&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-2	/usr	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-1	none	swap	sw	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

== Bienvenu sur Squeeze ==

 laurent@lenny2squeeze:~$ uname -a
 Linux lenny2squeeze 2.6.32-5-amd64 #1 SMP Sat Oct 30 14:18:21 UTC 2010 x86_64 GNU/Linux

[[Fichier:Snapshot25.jpeg]]

A venir... Upgrade de Squeeze à ????

----
[[Utilisateur:Lol|Lol]] 25 novembre 2010 à 15:55 (EAT)
[[Catégorie:Installation]]</text>
      <sha1>fe5ht3l0taw6u99sil33fzgd3t91958</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2429</id>
      <parentid>2428</parentid>
      <timestamp>2010-11-26T07:44:00Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* finalisation */</comment>
      <text xml:space="preserve" bytes="31667">{{sid}}

La mise à niveau de Lenny à Squeeze se précise, nous allons faire ici un rapide résumé des opérations nécessaires à la réussite de cette mise à niveau (upgrade).
LVM est installé sur la machine que nous allons mettre à niveau afin de tester le plus de possibilités.

Avant toute chose, je souhaite faire quelques précisions :
Chaque configuration est propre à chacun, en fonction de ses goûts, de son matériel et de ses connaissances.
Un guide universel n'existe donc pas.

Prévoyez aussi d'avoir du temps devant vous, et d'être au calme.

Nous choisirons d'utiliser aptitude au lieu de apt-get, il est en effet plus exigeant concernant les dépendances, votre mise à niveau sera plus &quot;propre&quot;.

J'ai choisi une Lenny avec toutes les options de tasksel activées afin de faire un tour d'horizon le plus vaste possible des problèmes qui pourraient survenir.
L'environnement graphique est Xfce.

[[Fichier:Snapshot3.jpeg]]

== Pré-requis ==

=== Une bonne sauvegarde ===

Vous n'avez AUCUNE garantie que la mise à niveau se passe bien, alors, quel que soit la méthode que vous emploierez, une sauvegarde est le minimum que vous puissiez faire avant de vous lancer dans l'aventure..

Avec dd, dump ou simplement cp SAUVEGARDEZ !

=== Un système à jour! ===

Le fichier sources.list précédent la mise à niveau :

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org stable main non-free
#deb-src http://www.debian-multimedia.org stable main non-free

# backports
deb http://backports.debian.org/debian-backports lenny-backports main contrib non-free
&lt;/code&gt;

 # aptitude update
 # aptitude safe-upgrade
 # aptitude full-upgrade

=== De l'espace! ===

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition où se trouve /var pour le stockage des paquets téléchargés.

Pour info une mise à jour &quot;lourde&quot; se soldera par le téléchargement d'environ 1Go...

Pour connaitre l’espace libre de votre partition racine :

 $ df -H
 Sys. de fich.          Tail.  Occ.  Disp. %Occ. Monté sur
 '''/dev/dm-0              338M   123M   198M  39% /'''
 tmpfs                  262M      0   262M   0% /lib/init/rw
 udev                    11M   689k   9,8M   7% /dev
 tmpfs                  262M      0   262M   0% /dev/shm
 /dev/hda1              239M    20M   207M   9% /boot
 /dev/dm-5              3,7G    75M   3,4G   3% /home
 /dev/dm-4              317M    11M   290M   4% /tmp
 /dev/dm-1              3,7G   1,7G   1,8G  50% /usr
 '''/dev/hdb1              5,3G   1,1G   4,0G  21% /var'''
 /dev/dm-2              1,8G   876M   818M  52% /media/dm-2

'''Si vous disposez de plus de 50% d’espace libre vous pouvez passer à l'étape suivante'''.

Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Si cela ne suffit toujours pas, il faut envisager d'ajouter un disque à votre système, ou de procéder à un upgrade par étapes successives (en mettant à jour les paquets progressivement et en nettoyant à chaque étape)

=== Les pilotes de la carte Graphique ===

Afin de ne pas avoir de mauvaise surprise avec le serveur X, modifiez votre xorg.conf afin d'utiliser des pilotes Debian.

Eventuellement utilisez les pilotes &quot;vesa&quot;

Dans votre fichier /etc/X11/xorg.conf

&lt;code&gt;
Section &quot;Device&quot;
    Identifier     &quot;Device0&quot;
    Driver         &quot;vesa&quot;
EndSection
&lt;/code&gt;

Si vous êtes sur de vous, n'en faites rien, mais prévoyez une réinstallation des pilotes avant le premier redémarrage.

=== Le fichier sources.list ===

Créons un nouveau sources.list que nous placerons dans /etc/apt/sources.list.d
Nous prenons dores et déjà la bonne habitude d'utiliser ce dossier qui est devenu celui par défaut pour mettre les fichiers contenant les dépôts.

 # nano /etc/apt/sources.list.d/sources.list

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free

# stable security
deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

## stable volatile
## Il n'y a pas de dépôt volatile pour squeeze pour l'instant
## deb http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free
## deb-src http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org squeeze main non-free
#deb-src http://www.debian-multimedia.org squeeze main non-free

# backports
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
&lt;/code&gt;

== Préparation de la mise à niveau ==

Maintenant que nous sommes prêts, nous pouvons lancer l'upgrade :

Mise à jour de la liste des paquets :

 # aptitude update

=== Si vous avez des problèmes de clefs ===

 W: GPG error: http://www.debian-multimedia.org

 # aptitude install debian-backports-keyring
 # aptitude install debian-multimedia-keyring

=== Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]] ===

 E: Dynamic MMap ran out of room

 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaite l'update, il ne doit pas y avoir d'erreurs

 # aptitude update

=== Problèmes de dépendances ===

Vous ne pourrez pas faire le passage de Lenny à Squeeze tant que subsisteront des problèmes de dépendances...

Voici deux exemples de problèmes de dépendances, et la manière de les régler :

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  xfce4-mixer-oss: Est en conflit avec: xfce4-mixer-alsa mais 4.4.2-3 est installé.
  foomatic-db: Est en conflit avec: foomatic-db-hpijs mais 20080211-1 est installé.
  xfce4-mixer-alsa: Est en conflit avec: xfce4-mixer-oss mais 4.4.2-3 doit être installé.

# aptitude install foomatic-db xfce4-mixer-alsa
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Lecture des descriptions de tâches... Fait  
Les NOUVEAUX paquets suivants vont être installés : 
  libopenjpeg2{a} libpoppler5{a} min12xxw{a} pnm2ppa{a} 
Les paquets suivants seront ENLEVÉS : 
  foomatic-db-hpijs{a} 
Les paquets suivants seront mis à jour : 
  fontconfig-config foomatic-db foomatic-db-engine foomatic-filters libfontconfig1 libjpeg62 libxml2 poppler-utils 
8 paquets mis à jour, 4 nouvellement installés, 1 à enlever et 728 non mis à jour.
Il est nécessaire de télécharger 4722ko d'archives. Après dépaquetage, 18,2Mo seront libérés.
Voulez-vous continuer ? [Y/n/?] o
...
État actuel : 728 mises à jour restantes [-8].
&lt;/code&gt;

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  libatlas3gf-base: Est en conflit avec: libblas3gf (&lt; 1.2-5) mais 1.2-2 est installé et a été conservé
                    Est en conflit avec: liblapack3gf (&lt; 3.2.1-4) mais 3.1.1-1 est installé et a été conservé
  rarian-compat: Est en conflit avec: scrollkeeper (&lt; 0.4) mais 0.3.14-16 est installé et a été conservé

# aptitude install libatlas3gf-base scrollkeeper
...
Les actions suivantes permettront de résoudre ces dépendances :

Mettre à jour les paquets suivants :
libblas3gf [1.2-2 (stable, now) -&gt; 1.2-8 (testing)]
liblapack3gf [3.1.1-1 (stable, now) -&gt; 3.2.1-8 (testing)]

Le score est de 70

Accepter cette solution ? [Y/n/q/?] y
...
État actuel : 725 mises à jour restantes [-3].
&lt;/code&gt;

En cas de doute n'hésitez pas à demander un avis [http://forum.debian-fr.org/ sur le forum]

=== stopper le serveur X ===

'''IMPORTANT''' : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

Si vous faites votre mise à niveau avec le serveur X lancé, vous risquez [http://www.debian-fr.org/upgrade-lenny-squeeze-gnome-minimaliste-t30744.html cette mésaventure]

== Lancez la mise à niveau ==

&lt;code&gt;
# aptitude safe-upgrade
...
Les paquets suivants ont été conservés : 
  apt apt-utils aptitude synaptic 
Les NOUVEAUX paquets suivants vont être installés : 
  acpi-fakekey{a} apache2.2-bin{a} aumix{a} aumix-common{a} bluez{a} bluez-alsa{a} bluez-cups{a} bluez-gstreamer{a} 
  browser-plugin-gnash{a} cifs-utils{a} consolekit{a} cpp-4.4{a} cracklib-runtime{a} cups-ppdc{a} dash{a} db4.8-util{a} 
  diffutils{a} dosfstools{a} firmware-linux-free{a} freepats{a} fuse-utils{a} gcc-4.4-base{a} gcj-4.4-base{a} 
  gcj-4.4-jre-lib{a} geoip-database{a} ghostscript-cups{a} gnash{a} gnash-common{a} gnupg-curl{a} grub-pc{a} 
  gstreamer0.10-ffmpeg{a} gstreamer0.10-fluendo-mp3{a} gstreamer0.10-plugins-bad{a} gstreamer0.10-plugins-base{a} gvfs{a} 
  hplip-cups{a} insserv{a} install-info{a} isc-dhcp-client{a} isc-dhcp-common{a} iso-codes{a} keyboard-configuration{a} 
  libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libass4{a} libatasmart4{a} libaudit0{a} libavahi-core7{a} libavcodec52{a} 
  libavformat52{a} libavutil50{a} libbabl-0.0-0{a} libbind9-60{a} libbluetooth3{a} libboost-date-time1.42.0{a} 
  libboost-thread1.42.0{a} libbsd0{a} libburn4{a} libc-bin{a} libc-client2007e{a} libcap-ng0{a} libcdaudio1{a} libcdio10{a} 
  libcdparanoia0{a} libcelt0-0{a} libck-connector0{a} libcolamd2.7.1{a} libcommons-beanutils-java{a} 
  libcommons-collections3-java{a} libcommons-compress-java{a} libcommons-digester-java{a} libcommons-logging-java{a} 
  libcrack2{a} libcupscgi1{a} libcupsdriver1{a} libcupsmime1{a} libcupsppdc1{a} libdatrie1{a} libdb-je-java{a} libdb4.7{a} 
  libdb4.7-java{a} libdb4.7-java-gcj{a} libdb4.8{a} libdc1394-22{a} libdca0{a} libdirac-encoder0{a} libdirectfb-1.2-9{a} 
  libdns66{a} libdrm-intel1{a} libdrm-nouveau1{a} libdrm-radeon1{a} libdvdnav4{a} libdvdread4{a} libeggdbus-1-0{a} libenca0{a} 
  libenchant1c2a{a} libevent-1.4-2{a} libexempi3{a} libexo-common{a} libfaad2{a} libfftw3-3{a} libfile-copy-recursive-perl{a} 
  libflite1{a} libfont-freetype-perl{a} libfuse2{a} libgcj10{a} libgcr0{a} libgdu0{a} libgegl-0.0-0{a} libgeoip1{a} libgif4{a} 
  libgme0{a} libgomp1{a} libgp11-0{a} libgpgme11{a} libgraphicsmagick3{a} libgraphite3{a} libgssapi-krb5-2{a} libgtkglext1{a} 
  libgudev-1.0-0{a} libhpmud0{a} libicu44{a} libicu4j-java{a} libiptcdata0{a} libisc60{a} libisccc60{a} libisccfg60{a} 
  libiso9660-7{a} libisofs6{a} libiw30{a} libjbig2dec0{a} libjpeg-progs{a} libjpeg8{a} libjtidy-java{a} libk5crypto3{a} 
  libkate1{a} libkrb5-3{a} libkrb5support0{a} libltdl7{a} liblucene2-java{a} liblwres60{a} liblzma2{a} libmimic0{a} libmms0{a} 
  libmodplug1{a} libmozjs2d{a} libmpcdec6{a} libmpfr4{a} libmusicbrainz4c2a{a} libmythes-1.2-0{a} libneon27-gnutls{a} 
  libnetaddr-ip-perl{a} libnfnetlink0{a} libnl1{a} libntfs-3g75{a} libntfs10{a} libofa0{a} libonig2{a} libopencore-amrnb0{a} 
  libopencore-amrwb0{a} libopenraw1{a} liborc-0.4-0{a} libossp-uuid16{a} libpam-ck-connector{a} libpam-cracklib{a} 
  libpango-perl{a} libpangomm-1.4-1{a} libparted0debian1{a} libpciaccess0{a} libpolkit-agent-1-0{a} libpolkit-backend-1-0{a} 
  libpolkit-gobject-1-0{a} libpoppler-glib4{a} libpth20{a} libpython2.6{a} libqdbm14{a} libraptor1{a} librasqal2{a} 
  libraw1394-11{a} librdf0{a} libreadline6{a} librtmp0{a} libsane-hpaio{a} libsasl2-modules{a} libservlet2.5-java{a} 
  libsexy2{a} libsgutils2-2{a} libslv2-9{a} libsndfile1{a} libsoundtouch1c2{a} libswscale0{a} libtag1-vanilla{a} libtalloc2{a} 
  libtextcat-data-utf8{a} libtokyocabinet8{a} libudev0{a} libunique-1.0-0{a} libusb-1.0-0{a} libutempter0{a} libuuid-perl{a} 
  libv4l-0{a} libva1{a} libvcdinfo0{a} libvisual-0.4-0{a} libvisual-0.4-plugins{a} libvpx0{a} libwebkit-1.0-2{a} 
  libwebkit-1.0-common{a} libwildmidi1{a} libwnck-common{a} libwnck22{a} libx11-xcb1{a} libx264-104{a} libxcb-atom1{a} 
  libxcb-aux0{a} libxcb-dri2-0{a} libxcb-event1{a} libxfce4menu-0.1-0{a} libxfce4util-bin{a} libxfce4util-common{a} 
  libxfconf-0-2{a} libxklavier16{a} libxml-parser-perl{a} libxres1{a} libzbar0{a} linux-base{a} linux-image-2.6.32-5-amd64{a} 
  lockfile-progs{a} lsb-release{a} mtools{a} ntfsprogs{a} os-prober{a} oss-compat{a} php5-cli{a} php5-suhosin{a} 
  policykit-1{a} policykit-1-gnome{a} postgresql-8.4{a} postgresql-client-8.4{a} postgresql-contrib-8.4{a} 
  postgresql-doc-8.4{a} python-cups{a} python-gconf{a} python-numpy{a} python-pexpect{a} python-reportbug{a} python-webkit{a} 
  python2.6{a} python2.6-minimal{a} ristretto{a} samba-common-bin{a} sane-utils{a} sensible-utils{a} squeeze{a} 
  tango-icon-theme{a} thunar-archive-plugin{a} thunar-volman{a} tsconf{a} ttf-freefont{a} ttf-lyx{a} ttf-sil-gentium{a} 
  ttf-sil-gentium-basic{a} udisks{a} uno-libs3{a} unzip{a} ure{a} x-ttcidfont-conf{a} xdg-user-dirs{a} xfburn{a} 
  xfce-keyboard-shortcuts{a} xfce4-appfinder{a} xfce4-clipman{a} xfce4-datetime-plugin{a} xfce4-dict{a} xfce4-notes{a} 
  xfce4-notifyd{a} xfce4-places-plugin{a} xfce4-power-manager{a} xfce4-power-manager-data{a} xfce4-screenshooter{a} 
  xfce4-settings{a} xfce4-taskmanager{a} xfce4-timer-plugin{a} xfce4-xkb-plugin{a} xfconf{a} xfonts-mathml{a} xinput{a} xli{a} 
  xorg-docs-core{a} xscreensaver{a} xscreensaver-data{a} xserver-common{a} xserver-xorg-video-nouveau{a} xulrunner-1.9.1{a} 
  xz-utils{a} 
Les paquets suivants seront ENLEVÉS : 
  bluez-utils{u} cpp-4.3{u} cupsddk-drivers{u} djvulibre-desktop{u} finger{u} gs-common{u} liba52-0.7.4{u} libamrnb3{u} 
  libamrwb3{u} libaudio2{u} libavahi-compat-libdnssd1{u} libavahi-core5{u} libavc1394-0{u} libavcodec51{u} libbind9-50{u} 
  libbluetooth2{u} libc-client2007b{u} libcap1{u} libcucul0{u} libcupsys2{u} libcurl3{u} libdatrie0{u} libdirac0{u} 
  libdjvulibre21{u} libfaad0{u} libfreebob0{u} libgail-common{u} libgraphviz4{u} libgtkhtml2-0{u} libicu38{u} libiec61883-0{u} 
  libisccc50{u} libisccfg50{u} libiw29{u} libjaxp1.3-java-gcj{u} libltdl3{u} liblwres50{u} libmagick10{u} libmodplug0c2{u} 
  libmozjs1d{u} libmpcdec3{u} libmpfr1ldbl{u} libmysqlclient15off{u} libneon27{u} libntfs-3g31{u} libossp-uuid15{u} 
  libparted1.8-10{u} libpoppler-glib3{u} libpoppler3{u} libqt3-mt{u} libraw1394-8{u} libsensors3{u} libservlet2.4-java{u} 
  libsmbios-bin{u} libsmbios2{u} libssh2-1{u} libsuitesparse-3.1.0{u} libswfdec-0.6-90{u} libtalloc1{u} libvolume-id0{u} 
  libx264-65{u} libxalan2-java{u} libxalan2-java-gcj{u} libxcb-xlib0{u} libxerces2-java{u} libxerces2-java-gcj{u} 
  libxfce4mcs-client3{u} libxfce4mcs-manager3{u} libxtrap6{u} libxxf86misc1{u} mysql-common{u} openoffice.org-writer2latex{u} 
  openssl-blacklist{u} postgresql-8.3{u} postgresql-client-8.3{u} postgresql-contrib-8.3{u} postgresql-doc-8.3{u} 
  python-gtkhtml2{u} python-numeric{u} svgalibg1{u} xfce4-icon-theme{u} xfce4-mcs-manager{u} xfce4-mcs-plugins{u} 
  xfce4-minicmd-plugin{u} xfce4-screenshooter-plugin{u} xserver-xorg-video-cyrix{u} xserver-xorg-video-v4l{u} 
  xserver-xorg-video-vga{u} xulrunner-1.9{u} 
Les paquets suivants seront mis à jour : 
  a2ps acpi acpi-support acpi-support-base acpid adduser alsa-base alsa-utils anacron analog apache2 apache2-doc 
  apache2-mpm-prefork apache2-utils apache2.2-common apmd aspell aspell-fr at avahi-autoipd avahi-daemon base-files 
  base-passwd bash bash-completion bc bind9 bind9-doc bind9-host bind9utils bluetooth bsd-mailx bsdmainutils bsdutils bsh 
  bsh-gcj busybox ca-certificates console-common console-data console-setup console-terminus console-tools coreutils cpio cpp 
  cpufrequtils cron cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk dbus dbus-x11 dc debconf debconf-i18n 
  debian-archive-keyring debian-faq debianutils deborphan defoma desktop-base desktop-file-utils dhcp3-client dhcp3-common 
  dialog dictionaries-common diff disk-manager dmidecode dmsetup dnsutils doc-debian docbook-xml dpkg e2fslibs e2fsprogs ed 
  eject esound-common exim4 exim4-base exim4-config exim4-daemon-light exo-utils fastjar file findutils fontconfig foo2zjs 
  foomatic-db-gutenprint foomatic-filters-ppds foomatic-gui fortune-mod fortunes-min ftp gcc-4.3-base gconf2 gconf2-common gdm 
  gettext-base ghostscript gimp gimp-data gksu gnome-keyring gnupg gparted gpgv grep groff-base grub grub-common gsfonts 
  gtk2-engines-xfce gzip hal hal-info hdparm hibernate hicolor-icon-theme hostname hpijs hplip hplip-data iamerican ibritish 
  iceweasel iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint info initramfs-tools initscripts installation-report iproute 
  iptables iputils-ping ispell java-common kerneloops klibc-utils laptop-detect less libaa1 libacl1 libapache2-mod-perl2 
  libapache2-mod-php5 libapache2-mod-python libapm1 libapr1 libaprutil1 libart-2.0-2 libasound2 libaspell15 libatk1.0-0 
  libattr1 libaudiofile0 libavahi-client3 libavahi-common-data libavahi-common3 libavahi-glib1 libavutil49 libbcel-java 
  libblkid1 libbonobo2-0 libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i386 libcaca0 
  libcairo-perl libcairo2 libcairomm-1.0-1 libcap2 libcomerr2 libconsole libcpufreq0 libcroco3 libcups2 libcupsimage2 
  libcurl3-gnutls libcwidget3 libdaemon0 libdb4.6 libdbus-1-3 libdbus-glib-1-2 libdevel-symdump-perl libdevmapper1.02.1 
  libdigest-hmac-perl libdigest-sha1-perl libdirectfb-extra libdmx1 libdrm2 libedit2 libesd0 libexif12 libexo-0.3-0 libexpat1 
  libfaac0 libfam0 libffi5 libflac8 libfontenc1 libfreetype6 libfs6 libgail18 libgc1c2 libgcc1 libgcj-bc libgcj-common 
  libgconf2-4 libgcrypt11 libgd2-noxpm libgdbm3 libgfortran3 libgimp2.0 libgksu2-0 libgl1-mesa-dri libgl1-mesa-glx libglade2-0 
  libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgmp3c2 libgnome-keyring0 libgnome2-0 libgnome2-canvas-perl 
  libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0 libgnomecanvas2-common libgnomeui-0 libgnomeui-common 
  libgnomevfs2-0 libgnomevfs2-common libgnomevfs2-extra libgnutls26 libgpg-error0 libgphoto2-2 libgphoto2-port0 libgpm2 libgs8 
  libgsf-1-114 libgsf-1-common libgsm1 libgssglue1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0 
  libgtk2.0-common libgtkmm-2.4-1c2a libgtop2-7 libgtop2-common libgutenprint2 libhal-storage1 libhal1 libhsqldb-java 
  libhsqldb-java-gcj libhtml-parser-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libice6 libidl0 libidn11 libieee1284-3 
  libijs-0.35 libilmbase6 libjack0 libjasper1 libjaxp1.3-java libjline-java libkeyutils1 libklibc libkrb53 liblcms1 
  libldap-2.4-2 liblocale-gettext-perl liblockfile1 liblog4j1.2-java liblzo2-2 libmad0 libmagic1 libmng1 libmp3lame0 
  libmx4j-java libncurses5 libncursesw5 libnet-dns-perl libnewt0.52 libnfsidmap2 libnotify1 libnspr4-0d libnss-mdns libnss3-1d 
  libogg0 liboil0.3 libopenexr6 liborbit2 libpam-modules libpam-runtime libpam0g libpango1.0-0 libpango1.0-common libpaper1 
  libpci3 libpcre3 libpcsclite1 libperl5.10 libpixman-1-0 libpng12-0 libpopt0 libpostproc51 libpq5 libpulse0 libreadline5 
  librecode0 libregexp-java librpcsecgss3 librsvg2-2 librsvg2-common libsane libsane-extras libsasl2-2 libschroedinger-1.0-0 
  libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsensors4 libsepol1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 
  libsmbclient libsnmp-base libsnmp15 libsocket6-perl libsoup2.4-1 libsqlite3-0 libss2 libssl0.9.8 libstartup-notification0 
  libstdc++6 libsvga1 libsysfs2 libtag1c2a libtagc0 libtasn1-3 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl 
  libthai-data libthai0 libtheora0 libthunar-vfs-1-2 libtiff4 libts-0.0-0 liburi-perl libusb-0.1-4 libuuid1 libvorbis0a 
  libvorbisenc2 libvte-common libvte9 libwavpack1 libwbclient0 libwmf0.2-7 libwpg-0.1-1 libwrap0 libwww-perl libx11-6 
  libx11-data libx86-1 libxau6 libxaw7 libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xv0 libxcb1 
  libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfce4util4 libxfcegui4-4 libxfixes3 libxfont1 libxft2 libxi6 
  libxine1 libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins libxine1-plugins libxine1-x libxinerama1 
  libxkbfile1 libxmu6 libxmuu1 libxpm4 libxrandr2 libxrender1 libxslt1.1 libxss1 libxt6 libxtst6 libxv1 libxvidcore4 libxvmc1 
  libxxf86dga1 libxxf86vm1 linux-image-2.6-amd64 linux-sound-base locales login logrotate lp-solve lsb-base lsof lvm2 lwresd 
  m4 mailagent makedev man-db manpages manpages-fr manpages-fr-extra mawk mc menu mime-support mktemp mlocate mlock 
  module-init-tools mount mousepad mutt myspell-en-us myspell-fr-gut nano ncurses-base ncurses-bin ncurses-term net-tools 
  netatalk netbase nfs-common nfs-kernel-server ntfs-3g nvclock openbsd-inetd openoffice.org openoffice.org-base 
  openoffice.org-base-core openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw 
  openoffice.org-filter-mobiledev openoffice.org-gcj openoffice.org-gtk openoffice.org-help-en-us openoffice.org-help-fr 
  openoffice.org-impress openoffice.org-java-common openoffice.org-l10n-fr openoffice.org-math openoffice.org-officebean 
  openoffice.org-report-builder-bin openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-thesaurus-en-us 
  openoffice.org-writer openprinting-ppds openssh-client openssh-server openssl orage passwd patch pciutils pcmciautils perl 
  perl-base perl-modules php5-common pm-utils popularity-contest portmap postgresql postgresql-client postgresql-client-common 
  postgresql-common postgresql-contrib postgresql-doc powermgmt-base powertop printconf procmail procps psmisc psutils python 
  python-cairo python-central python-dbus python-foomatic python-glade2 python-gnome2 python-gobject python-gtk2 
  python-imaging python-ipy python-minimal python-pyorbit python-support python2.5 python2.5-minimal qpopper radeontool 
  readline-common reportbug rsyslog sa-exim samba samba-common samba-doc sed sgml-base sgml-data shared-mime-info 
  smartmontools smbclient smbfs spamassassin spamc ssl-cert sudo swat swfdec-mozilla sysv-rc sysvinit sysvinit-utils tar 
  tasksel tasksel-data tcpd texinfo thunar thunar-data thunar-media-tags-plugin time toshset traceroute ttf-dejavu 
  ttf-dejavu-core ttf-dejavu-extra ttf-liberation ttf-opensymbol tzdata ucf udev update-inetd usbutils util-linux uw-imapd 
  vbetool vim-common vim-tiny w3m wamerican wfrench wget whiptail whois winbind wireless-tools wpasupplicant x11-apps 
  x11-common x11-session-utils x11-utils x11-xfs-utils x11-xkb-utils x11-xserver-utils xauth xbitmaps xdg-utils xfce4 
  xfce4-battery-plugin xfce4-clipman-plugin xfce4-cpufreq-plugin xfce4-cpugraph-plugin xfce4-diskperf-plugin 
  xfce4-fsguard-plugin xfce4-genmon-plugin xfce4-goodies xfce4-mailwatch-plugin xfce4-mixer xfce4-mount-plugin 
  xfce4-netload-plugin xfce4-notes-plugin xfce4-panel xfce4-quicklauncher-plugin xfce4-sensors-plugin xfce4-session 
  xfce4-smartbookmark-plugin xfce4-systemload-plugin xfce4-terminal xfce4-utils xfce4-verve-plugin xfce4-wavelan-plugin 
  xfce4-weather-plugin xfdesktop4 xfdesktop4-data xfonts-100dpi xfonts-75dpi xfonts-base xfonts-encodings xfonts-intl-european 
  xfonts-scalable xfonts-utils xfprint4 xfwm4 xinit xkb-data xml-core xorg xsane xsane-common xserver-xorg xserver-xorg-core 
  xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd xserver-xorg-input-mouse xserver-xorg-input-synaptics 
  xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati 
  xserver-xorg-video-chips xserver-xorg-video-cirrus xserver-xorg-video-dummy xserver-xorg-video-fbdev 
  xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-intel xserver-xorg-video-mach64 xserver-xorg-video-mga 
  xserver-xorg-video-neomagic xserver-xorg-video-nv xserver-xorg-video-openchrome xserver-xorg-video-r128 
  xserver-xorg-video-radeon xserver-xorg-video-radeonhd xserver-xorg-video-rendition xserver-xorg-video-s3 
  xserver-xorg-video-s3virge xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis 
  xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident xserver-xorg-video-tseng 
  xserver-xorg-video-vesa xserver-xorg-video-vmware xserver-xorg-video-voodoo xterm zlib1g 
Les paquets suivants sont RECOMMANDÉS mais ne seront pas installés :
  bzip2 gamin gcc gdm-themes hddtemp libapache2-reload-perl libatk1.0-data libatm1 libbsd-resource-perl libc6-dev libfribidi0 
  libglib2.0-data libgtk2.0-bin libhtml-format-perl libio-socket-inet6-perl liblog4j1.2-java-gcj libmail-spf-perl 
  libmailtools-perl libnss-lwres libpam-gnome-keyring libpaper-utils lm-sensors make nmap openoffice.org-emailmerge 
  openoffice.org-filter-binfilter pconf-detect rc re2c uuid-runtime wdiff xfwm4-themes xnest xserver-xephyr zenity 
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] 
&lt;/code&gt;

En fonction de votre connexion ça peut prendre très longtemps, et être interrompu (à 500KB/s une demi-heure à 50 KB/s c'est plusieurs heures...).
Un conseil, si vous n'êtes pas sûr de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

&lt;code&gt;
# aptitude -d safe-upgrade
...
 762Mo téléchargés en 1h9min37s (182ko/s)                                                          
Lecture des listes de paquets... Fait             
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait
&lt;/code&gt;

Puis

&lt;code&gt;
# aptitude safe-upgrade
...
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 0o/762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] y
&lt;/code&gt;

=== Déroulement ===

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut, mais prenez le temps de lire tous les messages, et si nécessaire, prenez des notes.

[[Fichier:Snapshot4.jpeg]]

[[Fichier:Snapshot5.jpeg]]

[[Fichier:Snapshot6.jpeg]]

[[Fichier:Snapshot7.jpeg]]

[[Fichier:Snapshot9.jpeg]]

[[Fichier:Snapshot11.jpeg]]

[[Fichier:Snapshot13.jpeg]]

[[Fichier:Snapshot14.jpeg]]

[[Fichier:Snapshot15.jpeg]]

[[Fichier:Snapshot16.jpeg]]

[[Fichier:Snapshot17.jpeg]]

Vous partirez d'une Lenny configurée, et donc de nombreux fichiers de configuration auront été modifiés par vos soins.
Il est judicieux de ne pas écraser vos configurations avec les fichiers par défaut proposés par les &quot;mainteneurs&quot; des paquets.
Vous aurez tout le loisir de regarder les modifications proposées, et ce qu'elles apportent, en regardant dans /usr/share/doc ou dans les contenus de vos deb téléchargés (dans /var/apt/archives)

[[Fichier:Snapshot18.jpeg]]

Sans le téléchargement des fichiers, comptez un peu plus d'une heure pour la mise à niveau

=== finalisation ===

Le safe-upgrade devrait se terminer par ceci :

&lt;code&gt;
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 4 mises à jour restantes [-721].
&lt;/code&gt;

Vous pouvez maintenant lancer un &quot;full-upgrade&quot;

&lt;code&gt;
# aptitude full-upgrade

...

4 paquets mis à jour, 13 nouvellement installés, 2 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 12,1Mo d'archives. Après dépaquetage, 14,3Mo seront utilisés.
Les paquets suivants ont des dépendances non satisfaites :
  libept0: Dépend: libapt-pkg-libc6.7-6-4.6 qui est un paquet virtuel
Les actions suivantes permettront de résoudre ces dépendances :

Supprimer les paquets suivants :
libept0

Le score est de 115

Accepter cette solution ? [Y/n/q/?]y

...

Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 0 mise à jour restante [-4].
&lt;/code&gt;

Si tout s'est bien passé, il ne vous reste plus qu'a redémarrer la machine :

 # shutdown -r now

=== Grub2 ===

Si vous étiez sous Grub-legacy vous aurez certainement fait la bascule vers Grub2.

La première &quot;surprise&quot; qui vous attend donc (sauf si vous avez lu ce guide avant...) c'est le menu suivant :

[[Fichier:Snapshot19.jpeg]]

Si vous appuyez sur entrée, vous serez conduit vers le menu de Grub2.
Cette étape permet de vérifier que Grub2 est bien installé, et de le tester.

[[Fichier:Snapshot20.jpeg]]

Si cela fonctionne, une des premières choses à faire sera de confirmer l'installation de Grub2 en tapant dans une console la commande suivante :

 # upgrade-from-grub-legacy

=== LVM ===

Problème rencontré lors de la mise à niveau avec LVM...
Le système s'est mélangé les pédales dans l'attribution des partitions.
Résultat :

[[Fichier:Snapshot21.jpeg]]

Voici ou se situe le problème :

&lt;code&gt;
$ vdir /dev/l2s/
total 0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 home -&gt; ../dm-5
lrwxrwxrwx 1 root root 7 25 nov.  18:28 root -&gt; ../dm-0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 swap_1 -&gt; ../dm-1
lrwxrwxrwx 1 root root 7 25 nov.  18:28 tmp -&gt; ../dm-4
lrwxrwxrwx 1 root root 7 25 nov.  18:28 usr -&gt; ../dm-2
lrwxrwxrwx 1 root root 7 25 nov.  18:28 var -&gt; ../dm-3
&lt;/code&gt;
&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
# /dev/hda1	/boot	ext2	defaults	0	2
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-1	/usr	ext3	defaults	0	2
# /dev/hdb1	/var	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-3	none	swap	sw	0	0
# /dev/hdc	/media/cdrom0	udf,iso9660	user,noauto	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

Je ne sais pour quelle raison LVM à changé la numérotation des partitions... /usr est passé en dm-1 alors qu'il était en dm-2 et la swap en dm-3 alors qu'elle était être en dm-1
Il suffit de modifier le fichier /etc/fstab pour qu'il reflète à nouveau correctement vos partitions, et le tour est joué :

&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-2	/usr	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-1	none	swap	sw	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

== Bienvenu sur Squeeze ==

 laurent@lenny2squeeze:~$ uname -a
 Linux lenny2squeeze 2.6.32-5-amd64 #1 SMP Sat Oct 30 14:18:21 UTC 2010 x86_64 GNU/Linux

[[Fichier:Snapshot25.jpeg]]

A venir... Upgrade de Squeeze à ????

----
[[Utilisateur:Lol|Lol]] 25 novembre 2010 à 15:55 (EAT)
[[Catégorie:Installation]]</text>
      <sha1>ablpha0g4g8mfjfxb0cd35nmzcy1hyb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2430</id>
      <parentid>2429</parentid>
      <timestamp>2010-11-26T07:49:42Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Déroulement */</comment>
      <text xml:space="preserve" bytes="31668">{{sid}}

La mise à niveau de Lenny à Squeeze se précise, nous allons faire ici un rapide résumé des opérations nécessaires à la réussite de cette mise à niveau (upgrade).
LVM est installé sur la machine que nous allons mettre à niveau afin de tester le plus de possibilités.

Avant toute chose, je souhaite faire quelques précisions :
Chaque configuration est propre à chacun, en fonction de ses goûts, de son matériel et de ses connaissances.
Un guide universel n'existe donc pas.

Prévoyez aussi d'avoir du temps devant vous, et d'être au calme.

Nous choisirons d'utiliser aptitude au lieu de apt-get, il est en effet plus exigeant concernant les dépendances, votre mise à niveau sera plus &quot;propre&quot;.

J'ai choisi une Lenny avec toutes les options de tasksel activées afin de faire un tour d'horizon le plus vaste possible des problèmes qui pourraient survenir.
L'environnement graphique est Xfce.

[[Fichier:Snapshot3.jpeg]]

== Pré-requis ==

=== Une bonne sauvegarde ===

Vous n'avez AUCUNE garantie que la mise à niveau se passe bien, alors, quel que soit la méthode que vous emploierez, une sauvegarde est le minimum que vous puissiez faire avant de vous lancer dans l'aventure..

Avec dd, dump ou simplement cp SAUVEGARDEZ !

=== Un système à jour! ===

Le fichier sources.list précédent la mise à niveau :

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org stable main non-free
#deb-src http://www.debian-multimedia.org stable main non-free

# backports
deb http://backports.debian.org/debian-backports lenny-backports main contrib non-free
&lt;/code&gt;

 # aptitude update
 # aptitude safe-upgrade
 # aptitude full-upgrade

=== De l'espace! ===

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition où se trouve /var pour le stockage des paquets téléchargés.

Pour info une mise à jour &quot;lourde&quot; se soldera par le téléchargement d'environ 1Go...

Pour connaitre l’espace libre de votre partition racine :

 $ df -H
 Sys. de fich.          Tail.  Occ.  Disp. %Occ. Monté sur
 '''/dev/dm-0              338M   123M   198M  39% /'''
 tmpfs                  262M      0   262M   0% /lib/init/rw
 udev                    11M   689k   9,8M   7% /dev
 tmpfs                  262M      0   262M   0% /dev/shm
 /dev/hda1              239M    20M   207M   9% /boot
 /dev/dm-5              3,7G    75M   3,4G   3% /home
 /dev/dm-4              317M    11M   290M   4% /tmp
 /dev/dm-1              3,7G   1,7G   1,8G  50% /usr
 '''/dev/hdb1              5,3G   1,1G   4,0G  21% /var'''
 /dev/dm-2              1,8G   876M   818M  52% /media/dm-2

'''Si vous disposez de plus de 50% d’espace libre vous pouvez passer à l'étape suivante'''.

Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Si cela ne suffit toujours pas, il faut envisager d'ajouter un disque à votre système, ou de procéder à un upgrade par étapes successives (en mettant à jour les paquets progressivement et en nettoyant à chaque étape)

=== Les pilotes de la carte Graphique ===

Afin de ne pas avoir de mauvaise surprise avec le serveur X, modifiez votre xorg.conf afin d'utiliser des pilotes Debian.

Eventuellement utilisez les pilotes &quot;vesa&quot;

Dans votre fichier /etc/X11/xorg.conf

&lt;code&gt;
Section &quot;Device&quot;
    Identifier     &quot;Device0&quot;
    Driver         &quot;vesa&quot;
EndSection
&lt;/code&gt;

Si vous êtes sur de vous, n'en faites rien, mais prévoyez une réinstallation des pilotes avant le premier redémarrage.

=== Le fichier sources.list ===

Créons un nouveau sources.list que nous placerons dans /etc/apt/sources.list.d
Nous prenons dores et déjà la bonne habitude d'utiliser ce dossier qui est devenu celui par défaut pour mettre les fichiers contenant les dépôts.

 # nano /etc/apt/sources.list.d/sources.list

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free

# stable security
deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

## stable volatile
## Il n'y a pas de dépôt volatile pour squeeze pour l'instant
## deb http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free
## deb-src http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org squeeze main non-free
#deb-src http://www.debian-multimedia.org squeeze main non-free

# backports
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
&lt;/code&gt;

== Préparation de la mise à niveau ==

Maintenant que nous sommes prêts, nous pouvons lancer l'upgrade :

Mise à jour de la liste des paquets :

 # aptitude update

=== Si vous avez des problèmes de clefs ===

 W: GPG error: http://www.debian-multimedia.org

 # aptitude install debian-backports-keyring
 # aptitude install debian-multimedia-keyring

=== Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]] ===

 E: Dynamic MMap ran out of room

 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaite l'update, il ne doit pas y avoir d'erreurs

 # aptitude update

=== Problèmes de dépendances ===

Vous ne pourrez pas faire le passage de Lenny à Squeeze tant que subsisteront des problèmes de dépendances...

Voici deux exemples de problèmes de dépendances, et la manière de les régler :

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  xfce4-mixer-oss: Est en conflit avec: xfce4-mixer-alsa mais 4.4.2-3 est installé.
  foomatic-db: Est en conflit avec: foomatic-db-hpijs mais 20080211-1 est installé.
  xfce4-mixer-alsa: Est en conflit avec: xfce4-mixer-oss mais 4.4.2-3 doit être installé.

# aptitude install foomatic-db xfce4-mixer-alsa
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Lecture des descriptions de tâches... Fait  
Les NOUVEAUX paquets suivants vont être installés : 
  libopenjpeg2{a} libpoppler5{a} min12xxw{a} pnm2ppa{a} 
Les paquets suivants seront ENLEVÉS : 
  foomatic-db-hpijs{a} 
Les paquets suivants seront mis à jour : 
  fontconfig-config foomatic-db foomatic-db-engine foomatic-filters libfontconfig1 libjpeg62 libxml2 poppler-utils 
8 paquets mis à jour, 4 nouvellement installés, 1 à enlever et 728 non mis à jour.
Il est nécessaire de télécharger 4722ko d'archives. Après dépaquetage, 18,2Mo seront libérés.
Voulez-vous continuer ? [Y/n/?] o
...
État actuel : 728 mises à jour restantes [-8].
&lt;/code&gt;

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  libatlas3gf-base: Est en conflit avec: libblas3gf (&lt; 1.2-5) mais 1.2-2 est installé et a été conservé
                    Est en conflit avec: liblapack3gf (&lt; 3.2.1-4) mais 3.1.1-1 est installé et a été conservé
  rarian-compat: Est en conflit avec: scrollkeeper (&lt; 0.4) mais 0.3.14-16 est installé et a été conservé

# aptitude install libatlas3gf-base scrollkeeper
...
Les actions suivantes permettront de résoudre ces dépendances :

Mettre à jour les paquets suivants :
libblas3gf [1.2-2 (stable, now) -&gt; 1.2-8 (testing)]
liblapack3gf [3.1.1-1 (stable, now) -&gt; 3.2.1-8 (testing)]

Le score est de 70

Accepter cette solution ? [Y/n/q/?] y
...
État actuel : 725 mises à jour restantes [-3].
&lt;/code&gt;

En cas de doute n'hésitez pas à demander un avis [http://forum.debian-fr.org/ sur le forum]

=== stopper le serveur X ===

'''IMPORTANT''' : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

Si vous faites votre mise à niveau avec le serveur X lancé, vous risquez [http://www.debian-fr.org/upgrade-lenny-squeeze-gnome-minimaliste-t30744.html cette mésaventure]

== Lancez la mise à niveau ==

&lt;code&gt;
# aptitude safe-upgrade
...
Les paquets suivants ont été conservés : 
  apt apt-utils aptitude synaptic 
Les NOUVEAUX paquets suivants vont être installés : 
  acpi-fakekey{a} apache2.2-bin{a} aumix{a} aumix-common{a} bluez{a} bluez-alsa{a} bluez-cups{a} bluez-gstreamer{a} 
  browser-plugin-gnash{a} cifs-utils{a} consolekit{a} cpp-4.4{a} cracklib-runtime{a} cups-ppdc{a} dash{a} db4.8-util{a} 
  diffutils{a} dosfstools{a} firmware-linux-free{a} freepats{a} fuse-utils{a} gcc-4.4-base{a} gcj-4.4-base{a} 
  gcj-4.4-jre-lib{a} geoip-database{a} ghostscript-cups{a} gnash{a} gnash-common{a} gnupg-curl{a} grub-pc{a} 
  gstreamer0.10-ffmpeg{a} gstreamer0.10-fluendo-mp3{a} gstreamer0.10-plugins-bad{a} gstreamer0.10-plugins-base{a} gvfs{a} 
  hplip-cups{a} insserv{a} install-info{a} isc-dhcp-client{a} isc-dhcp-common{a} iso-codes{a} keyboard-configuration{a} 
  libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libass4{a} libatasmart4{a} libaudit0{a} libavahi-core7{a} libavcodec52{a} 
  libavformat52{a} libavutil50{a} libbabl-0.0-0{a} libbind9-60{a} libbluetooth3{a} libboost-date-time1.42.0{a} 
  libboost-thread1.42.0{a} libbsd0{a} libburn4{a} libc-bin{a} libc-client2007e{a} libcap-ng0{a} libcdaudio1{a} libcdio10{a} 
  libcdparanoia0{a} libcelt0-0{a} libck-connector0{a} libcolamd2.7.1{a} libcommons-beanutils-java{a} 
  libcommons-collections3-java{a} libcommons-compress-java{a} libcommons-digester-java{a} libcommons-logging-java{a} 
  libcrack2{a} libcupscgi1{a} libcupsdriver1{a} libcupsmime1{a} libcupsppdc1{a} libdatrie1{a} libdb-je-java{a} libdb4.7{a} 
  libdb4.7-java{a} libdb4.7-java-gcj{a} libdb4.8{a} libdc1394-22{a} libdca0{a} libdirac-encoder0{a} libdirectfb-1.2-9{a} 
  libdns66{a} libdrm-intel1{a} libdrm-nouveau1{a} libdrm-radeon1{a} libdvdnav4{a} libdvdread4{a} libeggdbus-1-0{a} libenca0{a} 
  libenchant1c2a{a} libevent-1.4-2{a} libexempi3{a} libexo-common{a} libfaad2{a} libfftw3-3{a} libfile-copy-recursive-perl{a} 
  libflite1{a} libfont-freetype-perl{a} libfuse2{a} libgcj10{a} libgcr0{a} libgdu0{a} libgegl-0.0-0{a} libgeoip1{a} libgif4{a} 
  libgme0{a} libgomp1{a} libgp11-0{a} libgpgme11{a} libgraphicsmagick3{a} libgraphite3{a} libgssapi-krb5-2{a} libgtkglext1{a} 
  libgudev-1.0-0{a} libhpmud0{a} libicu44{a} libicu4j-java{a} libiptcdata0{a} libisc60{a} libisccc60{a} libisccfg60{a} 
  libiso9660-7{a} libisofs6{a} libiw30{a} libjbig2dec0{a} libjpeg-progs{a} libjpeg8{a} libjtidy-java{a} libk5crypto3{a} 
  libkate1{a} libkrb5-3{a} libkrb5support0{a} libltdl7{a} liblucene2-java{a} liblwres60{a} liblzma2{a} libmimic0{a} libmms0{a} 
  libmodplug1{a} libmozjs2d{a} libmpcdec6{a} libmpfr4{a} libmusicbrainz4c2a{a} libmythes-1.2-0{a} libneon27-gnutls{a} 
  libnetaddr-ip-perl{a} libnfnetlink0{a} libnl1{a} libntfs-3g75{a} libntfs10{a} libofa0{a} libonig2{a} libopencore-amrnb0{a} 
  libopencore-amrwb0{a} libopenraw1{a} liborc-0.4-0{a} libossp-uuid16{a} libpam-ck-connector{a} libpam-cracklib{a} 
  libpango-perl{a} libpangomm-1.4-1{a} libparted0debian1{a} libpciaccess0{a} libpolkit-agent-1-0{a} libpolkit-backend-1-0{a} 
  libpolkit-gobject-1-0{a} libpoppler-glib4{a} libpth20{a} libpython2.6{a} libqdbm14{a} libraptor1{a} librasqal2{a} 
  libraw1394-11{a} librdf0{a} libreadline6{a} librtmp0{a} libsane-hpaio{a} libsasl2-modules{a} libservlet2.5-java{a} 
  libsexy2{a} libsgutils2-2{a} libslv2-9{a} libsndfile1{a} libsoundtouch1c2{a} libswscale0{a} libtag1-vanilla{a} libtalloc2{a} 
  libtextcat-data-utf8{a} libtokyocabinet8{a} libudev0{a} libunique-1.0-0{a} libusb-1.0-0{a} libutempter0{a} libuuid-perl{a} 
  libv4l-0{a} libva1{a} libvcdinfo0{a} libvisual-0.4-0{a} libvisual-0.4-plugins{a} libvpx0{a} libwebkit-1.0-2{a} 
  libwebkit-1.0-common{a} libwildmidi1{a} libwnck-common{a} libwnck22{a} libx11-xcb1{a} libx264-104{a} libxcb-atom1{a} 
  libxcb-aux0{a} libxcb-dri2-0{a} libxcb-event1{a} libxfce4menu-0.1-0{a} libxfce4util-bin{a} libxfce4util-common{a} 
  libxfconf-0-2{a} libxklavier16{a} libxml-parser-perl{a} libxres1{a} libzbar0{a} linux-base{a} linux-image-2.6.32-5-amd64{a} 
  lockfile-progs{a} lsb-release{a} mtools{a} ntfsprogs{a} os-prober{a} oss-compat{a} php5-cli{a} php5-suhosin{a} 
  policykit-1{a} policykit-1-gnome{a} postgresql-8.4{a} postgresql-client-8.4{a} postgresql-contrib-8.4{a} 
  postgresql-doc-8.4{a} python-cups{a} python-gconf{a} python-numpy{a} python-pexpect{a} python-reportbug{a} python-webkit{a} 
  python2.6{a} python2.6-minimal{a} ristretto{a} samba-common-bin{a} sane-utils{a} sensible-utils{a} squeeze{a} 
  tango-icon-theme{a} thunar-archive-plugin{a} thunar-volman{a} tsconf{a} ttf-freefont{a} ttf-lyx{a} ttf-sil-gentium{a} 
  ttf-sil-gentium-basic{a} udisks{a} uno-libs3{a} unzip{a} ure{a} x-ttcidfont-conf{a} xdg-user-dirs{a} xfburn{a} 
  xfce-keyboard-shortcuts{a} xfce4-appfinder{a} xfce4-clipman{a} xfce4-datetime-plugin{a} xfce4-dict{a} xfce4-notes{a} 
  xfce4-notifyd{a} xfce4-places-plugin{a} xfce4-power-manager{a} xfce4-power-manager-data{a} xfce4-screenshooter{a} 
  xfce4-settings{a} xfce4-taskmanager{a} xfce4-timer-plugin{a} xfce4-xkb-plugin{a} xfconf{a} xfonts-mathml{a} xinput{a} xli{a} 
  xorg-docs-core{a} xscreensaver{a} xscreensaver-data{a} xserver-common{a} xserver-xorg-video-nouveau{a} xulrunner-1.9.1{a} 
  xz-utils{a} 
Les paquets suivants seront ENLEVÉS : 
  bluez-utils{u} cpp-4.3{u} cupsddk-drivers{u} djvulibre-desktop{u} finger{u} gs-common{u} liba52-0.7.4{u} libamrnb3{u} 
  libamrwb3{u} libaudio2{u} libavahi-compat-libdnssd1{u} libavahi-core5{u} libavc1394-0{u} libavcodec51{u} libbind9-50{u} 
  libbluetooth2{u} libc-client2007b{u} libcap1{u} libcucul0{u} libcupsys2{u} libcurl3{u} libdatrie0{u} libdirac0{u} 
  libdjvulibre21{u} libfaad0{u} libfreebob0{u} libgail-common{u} libgraphviz4{u} libgtkhtml2-0{u} libicu38{u} libiec61883-0{u} 
  libisccc50{u} libisccfg50{u} libiw29{u} libjaxp1.3-java-gcj{u} libltdl3{u} liblwres50{u} libmagick10{u} libmodplug0c2{u} 
  libmozjs1d{u} libmpcdec3{u} libmpfr1ldbl{u} libmysqlclient15off{u} libneon27{u} libntfs-3g31{u} libossp-uuid15{u} 
  libparted1.8-10{u} libpoppler-glib3{u} libpoppler3{u} libqt3-mt{u} libraw1394-8{u} libsensors3{u} libservlet2.4-java{u} 
  libsmbios-bin{u} libsmbios2{u} libssh2-1{u} libsuitesparse-3.1.0{u} libswfdec-0.6-90{u} libtalloc1{u} libvolume-id0{u} 
  libx264-65{u} libxalan2-java{u} libxalan2-java-gcj{u} libxcb-xlib0{u} libxerces2-java{u} libxerces2-java-gcj{u} 
  libxfce4mcs-client3{u} libxfce4mcs-manager3{u} libxtrap6{u} libxxf86misc1{u} mysql-common{u} openoffice.org-writer2latex{u} 
  openssl-blacklist{u} postgresql-8.3{u} postgresql-client-8.3{u} postgresql-contrib-8.3{u} postgresql-doc-8.3{u} 
  python-gtkhtml2{u} python-numeric{u} svgalibg1{u} xfce4-icon-theme{u} xfce4-mcs-manager{u} xfce4-mcs-plugins{u} 
  xfce4-minicmd-plugin{u} xfce4-screenshooter-plugin{u} xserver-xorg-video-cyrix{u} xserver-xorg-video-v4l{u} 
  xserver-xorg-video-vga{u} xulrunner-1.9{u} 
Les paquets suivants seront mis à jour : 
  a2ps acpi acpi-support acpi-support-base acpid adduser alsa-base alsa-utils anacron analog apache2 apache2-doc 
  apache2-mpm-prefork apache2-utils apache2.2-common apmd aspell aspell-fr at avahi-autoipd avahi-daemon base-files 
  base-passwd bash bash-completion bc bind9 bind9-doc bind9-host bind9utils bluetooth bsd-mailx bsdmainutils bsdutils bsh 
  bsh-gcj busybox ca-certificates console-common console-data console-setup console-terminus console-tools coreutils cpio cpp 
  cpufrequtils cron cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk dbus dbus-x11 dc debconf debconf-i18n 
  debian-archive-keyring debian-faq debianutils deborphan defoma desktop-base desktop-file-utils dhcp3-client dhcp3-common 
  dialog dictionaries-common diff disk-manager dmidecode dmsetup dnsutils doc-debian docbook-xml dpkg e2fslibs e2fsprogs ed 
  eject esound-common exim4 exim4-base exim4-config exim4-daemon-light exo-utils fastjar file findutils fontconfig foo2zjs 
  foomatic-db-gutenprint foomatic-filters-ppds foomatic-gui fortune-mod fortunes-min ftp gcc-4.3-base gconf2 gconf2-common gdm 
  gettext-base ghostscript gimp gimp-data gksu gnome-keyring gnupg gparted gpgv grep groff-base grub grub-common gsfonts 
  gtk2-engines-xfce gzip hal hal-info hdparm hibernate hicolor-icon-theme hostname hpijs hplip hplip-data iamerican ibritish 
  iceweasel iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint info initramfs-tools initscripts installation-report iproute 
  iptables iputils-ping ispell java-common kerneloops klibc-utils laptop-detect less libaa1 libacl1 libapache2-mod-perl2 
  libapache2-mod-php5 libapache2-mod-python libapm1 libapr1 libaprutil1 libart-2.0-2 libasound2 libaspell15 libatk1.0-0 
  libattr1 libaudiofile0 libavahi-client3 libavahi-common-data libavahi-common3 libavahi-glib1 libavutil49 libbcel-java 
  libblkid1 libbonobo2-0 libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i386 libcaca0 
  libcairo-perl libcairo2 libcairomm-1.0-1 libcap2 libcomerr2 libconsole libcpufreq0 libcroco3 libcups2 libcupsimage2 
  libcurl3-gnutls libcwidget3 libdaemon0 libdb4.6 libdbus-1-3 libdbus-glib-1-2 libdevel-symdump-perl libdevmapper1.02.1 
  libdigest-hmac-perl libdigest-sha1-perl libdirectfb-extra libdmx1 libdrm2 libedit2 libesd0 libexif12 libexo-0.3-0 libexpat1 
  libfaac0 libfam0 libffi5 libflac8 libfontenc1 libfreetype6 libfs6 libgail18 libgc1c2 libgcc1 libgcj-bc libgcj-common 
  libgconf2-4 libgcrypt11 libgd2-noxpm libgdbm3 libgfortran3 libgimp2.0 libgksu2-0 libgl1-mesa-dri libgl1-mesa-glx libglade2-0 
  libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgmp3c2 libgnome-keyring0 libgnome2-0 libgnome2-canvas-perl 
  libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0 libgnomecanvas2-common libgnomeui-0 libgnomeui-common 
  libgnomevfs2-0 libgnomevfs2-common libgnomevfs2-extra libgnutls26 libgpg-error0 libgphoto2-2 libgphoto2-port0 libgpm2 libgs8 
  libgsf-1-114 libgsf-1-common libgsm1 libgssglue1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0 
  libgtk2.0-common libgtkmm-2.4-1c2a libgtop2-7 libgtop2-common libgutenprint2 libhal-storage1 libhal1 libhsqldb-java 
  libhsqldb-java-gcj libhtml-parser-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libice6 libidl0 libidn11 libieee1284-3 
  libijs-0.35 libilmbase6 libjack0 libjasper1 libjaxp1.3-java libjline-java libkeyutils1 libklibc libkrb53 liblcms1 
  libldap-2.4-2 liblocale-gettext-perl liblockfile1 liblog4j1.2-java liblzo2-2 libmad0 libmagic1 libmng1 libmp3lame0 
  libmx4j-java libncurses5 libncursesw5 libnet-dns-perl libnewt0.52 libnfsidmap2 libnotify1 libnspr4-0d libnss-mdns libnss3-1d 
  libogg0 liboil0.3 libopenexr6 liborbit2 libpam-modules libpam-runtime libpam0g libpango1.0-0 libpango1.0-common libpaper1 
  libpci3 libpcre3 libpcsclite1 libperl5.10 libpixman-1-0 libpng12-0 libpopt0 libpostproc51 libpq5 libpulse0 libreadline5 
  librecode0 libregexp-java librpcsecgss3 librsvg2-2 librsvg2-common libsane libsane-extras libsasl2-2 libschroedinger-1.0-0 
  libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsensors4 libsepol1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 
  libsmbclient libsnmp-base libsnmp15 libsocket6-perl libsoup2.4-1 libsqlite3-0 libss2 libssl0.9.8 libstartup-notification0 
  libstdc++6 libsvga1 libsysfs2 libtag1c2a libtagc0 libtasn1-3 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl 
  libthai-data libthai0 libtheora0 libthunar-vfs-1-2 libtiff4 libts-0.0-0 liburi-perl libusb-0.1-4 libuuid1 libvorbis0a 
  libvorbisenc2 libvte-common libvte9 libwavpack1 libwbclient0 libwmf0.2-7 libwpg-0.1-1 libwrap0 libwww-perl libx11-6 
  libx11-data libx86-1 libxau6 libxaw7 libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xv0 libxcb1 
  libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfce4util4 libxfcegui4-4 libxfixes3 libxfont1 libxft2 libxi6 
  libxine1 libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins libxine1-plugins libxine1-x libxinerama1 
  libxkbfile1 libxmu6 libxmuu1 libxpm4 libxrandr2 libxrender1 libxslt1.1 libxss1 libxt6 libxtst6 libxv1 libxvidcore4 libxvmc1 
  libxxf86dga1 libxxf86vm1 linux-image-2.6-amd64 linux-sound-base locales login logrotate lp-solve lsb-base lsof lvm2 lwresd 
  m4 mailagent makedev man-db manpages manpages-fr manpages-fr-extra mawk mc menu mime-support mktemp mlocate mlock 
  module-init-tools mount mousepad mutt myspell-en-us myspell-fr-gut nano ncurses-base ncurses-bin ncurses-term net-tools 
  netatalk netbase nfs-common nfs-kernel-server ntfs-3g nvclock openbsd-inetd openoffice.org openoffice.org-base 
  openoffice.org-base-core openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw 
  openoffice.org-filter-mobiledev openoffice.org-gcj openoffice.org-gtk openoffice.org-help-en-us openoffice.org-help-fr 
  openoffice.org-impress openoffice.org-java-common openoffice.org-l10n-fr openoffice.org-math openoffice.org-officebean 
  openoffice.org-report-builder-bin openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-thesaurus-en-us 
  openoffice.org-writer openprinting-ppds openssh-client openssh-server openssl orage passwd patch pciutils pcmciautils perl 
  perl-base perl-modules php5-common pm-utils popularity-contest portmap postgresql postgresql-client postgresql-client-common 
  postgresql-common postgresql-contrib postgresql-doc powermgmt-base powertop printconf procmail procps psmisc psutils python 
  python-cairo python-central python-dbus python-foomatic python-glade2 python-gnome2 python-gobject python-gtk2 
  python-imaging python-ipy python-minimal python-pyorbit python-support python2.5 python2.5-minimal qpopper radeontool 
  readline-common reportbug rsyslog sa-exim samba samba-common samba-doc sed sgml-base sgml-data shared-mime-info 
  smartmontools smbclient smbfs spamassassin spamc ssl-cert sudo swat swfdec-mozilla sysv-rc sysvinit sysvinit-utils tar 
  tasksel tasksel-data tcpd texinfo thunar thunar-data thunar-media-tags-plugin time toshset traceroute ttf-dejavu 
  ttf-dejavu-core ttf-dejavu-extra ttf-liberation ttf-opensymbol tzdata ucf udev update-inetd usbutils util-linux uw-imapd 
  vbetool vim-common vim-tiny w3m wamerican wfrench wget whiptail whois winbind wireless-tools wpasupplicant x11-apps 
  x11-common x11-session-utils x11-utils x11-xfs-utils x11-xkb-utils x11-xserver-utils xauth xbitmaps xdg-utils xfce4 
  xfce4-battery-plugin xfce4-clipman-plugin xfce4-cpufreq-plugin xfce4-cpugraph-plugin xfce4-diskperf-plugin 
  xfce4-fsguard-plugin xfce4-genmon-plugin xfce4-goodies xfce4-mailwatch-plugin xfce4-mixer xfce4-mount-plugin 
  xfce4-netload-plugin xfce4-notes-plugin xfce4-panel xfce4-quicklauncher-plugin xfce4-sensors-plugin xfce4-session 
  xfce4-smartbookmark-plugin xfce4-systemload-plugin xfce4-terminal xfce4-utils xfce4-verve-plugin xfce4-wavelan-plugin 
  xfce4-weather-plugin xfdesktop4 xfdesktop4-data xfonts-100dpi xfonts-75dpi xfonts-base xfonts-encodings xfonts-intl-european 
  xfonts-scalable xfonts-utils xfprint4 xfwm4 xinit xkb-data xml-core xorg xsane xsane-common xserver-xorg xserver-xorg-core 
  xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd xserver-xorg-input-mouse xserver-xorg-input-synaptics 
  xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati 
  xserver-xorg-video-chips xserver-xorg-video-cirrus xserver-xorg-video-dummy xserver-xorg-video-fbdev 
  xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-intel xserver-xorg-video-mach64 xserver-xorg-video-mga 
  xserver-xorg-video-neomagic xserver-xorg-video-nv xserver-xorg-video-openchrome xserver-xorg-video-r128 
  xserver-xorg-video-radeon xserver-xorg-video-radeonhd xserver-xorg-video-rendition xserver-xorg-video-s3 
  xserver-xorg-video-s3virge xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis 
  xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident xserver-xorg-video-tseng 
  xserver-xorg-video-vesa xserver-xorg-video-vmware xserver-xorg-video-voodoo xterm zlib1g 
Les paquets suivants sont RECOMMANDÉS mais ne seront pas installés :
  bzip2 gamin gcc gdm-themes hddtemp libapache2-reload-perl libatk1.0-data libatm1 libbsd-resource-perl libc6-dev libfribidi0 
  libglib2.0-data libgtk2.0-bin libhtml-format-perl libio-socket-inet6-perl liblog4j1.2-java-gcj libmail-spf-perl 
  libmailtools-perl libnss-lwres libpam-gnome-keyring libpaper-utils lm-sensors make nmap openoffice.org-emailmerge 
  openoffice.org-filter-binfilter pconf-detect rc re2c uuid-runtime wdiff xfwm4-themes xnest xserver-xephyr zenity 
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] 
&lt;/code&gt;

En fonction de votre connexion ça peut prendre très longtemps, et être interrompu (à 500KB/s une demi-heure à 50 KB/s c'est plusieurs heures...).
Un conseil, si vous n'êtes pas sûr de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

&lt;code&gt;
# aptitude -d safe-upgrade
...
 762Mo téléchargés en 1h9min37s (182ko/s)                                                          
Lecture des listes de paquets... Fait             
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait
&lt;/code&gt;

Puis

&lt;code&gt;
# aptitude safe-upgrade
...
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 0o/762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] y
&lt;/code&gt;

=== Déroulement ===

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut, mais prenez le temps de lire tous les messages, et si nécessaire, prenez des notes.

Sans le téléchargement des fichiers, comptez un peu plus d'une heure pour la mise à niveau.

[[Fichier:Snapshot4.jpeg]]

[[Fichier:Snapshot5.jpeg]]

[[Fichier:Snapshot6.jpeg]]

[[Fichier:Snapshot7.jpeg]]

[[Fichier:Snapshot9.jpeg]]

[[Fichier:Snapshot11.jpeg]]

[[Fichier:Snapshot13.jpeg]]

[[Fichier:Snapshot14.jpeg]]

[[Fichier:Snapshot15.jpeg]]

[[Fichier:Snapshot16.jpeg]]

[[Fichier:Snapshot17.jpeg]]

Vous partirez d'une Lenny configurée, et donc de nombreux fichiers de configuration auront été modifiés par vos soins.
Il est judicieux de ne pas écraser vos configurations avec les fichiers par défaut proposés par les &quot;mainteneurs&quot; des paquets.
Vous aurez tout le loisir de regarder les modifications proposées, et ce qu'elles apportent, en regardant dans /usr/share/doc ou dans les contenus de vos deb téléchargés (dans /var/apt/archives)

[[Fichier:Snapshot18.jpeg]]

=== finalisation ===

Le safe-upgrade devrait se terminer par ceci :

&lt;code&gt;
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 4 mises à jour restantes [-721].
&lt;/code&gt;

Vous pouvez maintenant lancer un &quot;full-upgrade&quot;

&lt;code&gt;
# aptitude full-upgrade

...

4 paquets mis à jour, 13 nouvellement installés, 2 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 12,1Mo d'archives. Après dépaquetage, 14,3Mo seront utilisés.
Les paquets suivants ont des dépendances non satisfaites :
  libept0: Dépend: libapt-pkg-libc6.7-6-4.6 qui est un paquet virtuel
Les actions suivantes permettront de résoudre ces dépendances :

Supprimer les paquets suivants :
libept0

Le score est de 115

Accepter cette solution ? [Y/n/q/?]y

...

Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 0 mise à jour restante [-4].
&lt;/code&gt;

Si tout s'est bien passé, il ne vous reste plus qu'a redémarrer la machine :

 # shutdown -r now

=== Grub2 ===

Si vous étiez sous Grub-legacy vous aurez certainement fait la bascule vers Grub2.

La première &quot;surprise&quot; qui vous attend donc (sauf si vous avez lu ce guide avant...) c'est le menu suivant :

[[Fichier:Snapshot19.jpeg]]

Si vous appuyez sur entrée, vous serez conduit vers le menu de Grub2.
Cette étape permet de vérifier que Grub2 est bien installé, et de le tester.

[[Fichier:Snapshot20.jpeg]]

Si cela fonctionne, une des premières choses à faire sera de confirmer l'installation de Grub2 en tapant dans une console la commande suivante :

 # upgrade-from-grub-legacy

=== LVM ===

Problème rencontré lors de la mise à niveau avec LVM...
Le système s'est mélangé les pédales dans l'attribution des partitions.
Résultat :

[[Fichier:Snapshot21.jpeg]]

Voici ou se situe le problème :

&lt;code&gt;
$ vdir /dev/l2s/
total 0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 home -&gt; ../dm-5
lrwxrwxrwx 1 root root 7 25 nov.  18:28 root -&gt; ../dm-0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 swap_1 -&gt; ../dm-1
lrwxrwxrwx 1 root root 7 25 nov.  18:28 tmp -&gt; ../dm-4
lrwxrwxrwx 1 root root 7 25 nov.  18:28 usr -&gt; ../dm-2
lrwxrwxrwx 1 root root 7 25 nov.  18:28 var -&gt; ../dm-3
&lt;/code&gt;
&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
# /dev/hda1	/boot	ext2	defaults	0	2
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-1	/usr	ext3	defaults	0	2
# /dev/hdb1	/var	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-3	none	swap	sw	0	0
# /dev/hdc	/media/cdrom0	udf,iso9660	user,noauto	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

Je ne sais pour quelle raison LVM à changé la numérotation des partitions... /usr est passé en dm-1 alors qu'il était en dm-2 et la swap en dm-3 alors qu'elle était être en dm-1
Il suffit de modifier le fichier /etc/fstab pour qu'il reflète à nouveau correctement vos partitions, et le tour est joué :

&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-2	/usr	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-1	none	swap	sw	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

== Bienvenu sur Squeeze ==

 laurent@lenny2squeeze:~$ uname -a
 Linux lenny2squeeze 2.6.32-5-amd64 #1 SMP Sat Oct 30 14:18:21 UTC 2010 x86_64 GNU/Linux

[[Fichier:Snapshot25.jpeg]]

A venir... Upgrade de Squeeze à ????

----
[[Utilisateur:Lol|Lol]] 25 novembre 2010 à 15:55 (EAT)
[[Catégorie:Installation]]</text>
      <sha1>f1mrfew88nmelhasam0vjs960l9mo9p</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2685</id>
      <parentid>2430</parentid>
      <timestamp>2011-02-07T11:45:47Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Le fichier sources.list */ modification dépôt volatile</comment>
      <text xml:space="preserve" bytes="31653">{{sid}}

La mise à niveau de Lenny à Squeeze se précise, nous allons faire ici un rapide résumé des opérations nécessaires à la réussite de cette mise à niveau (upgrade).
LVM est installé sur la machine que nous allons mettre à niveau afin de tester le plus de possibilités.

Avant toute chose, je souhaite faire quelques précisions :
Chaque configuration est propre à chacun, en fonction de ses goûts, de son matériel et de ses connaissances.
Un guide universel n'existe donc pas.

Prévoyez aussi d'avoir du temps devant vous, et d'être au calme.

Nous choisirons d'utiliser aptitude au lieu de apt-get, il est en effet plus exigeant concernant les dépendances, votre mise à niveau sera plus &quot;propre&quot;.

J'ai choisi une Lenny avec toutes les options de tasksel activées afin de faire un tour d'horizon le plus vaste possible des problèmes qui pourraient survenir.
L'environnement graphique est Xfce.

[[Fichier:Snapshot3.jpeg]]

== Pré-requis ==

=== Une bonne sauvegarde ===

Vous n'avez AUCUNE garantie que la mise à niveau se passe bien, alors, quel que soit la méthode que vous emploierez, une sauvegarde est le minimum que vous puissiez faire avant de vous lancer dans l'aventure..

Avec dd, dump ou simplement cp SAUVEGARDEZ !

=== Un système à jour! ===

Le fichier sources.list précédent la mise à niveau :

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org stable main non-free
#deb-src http://www.debian-multimedia.org stable main non-free

# backports
deb http://backports.debian.org/debian-backports lenny-backports main contrib non-free
&lt;/code&gt;

 # aptitude update
 # aptitude safe-upgrade
 # aptitude full-upgrade

=== De l'espace! ===

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition où se trouve /var pour le stockage des paquets téléchargés.

Pour info une mise à jour &quot;lourde&quot; se soldera par le téléchargement d'environ 1Go...

Pour connaitre l’espace libre de votre partition racine :

 $ df -H
 Sys. de fich.          Tail.  Occ.  Disp. %Occ. Monté sur
 '''/dev/dm-0              338M   123M   198M  39% /'''
 tmpfs                  262M      0   262M   0% /lib/init/rw
 udev                    11M   689k   9,8M   7% /dev
 tmpfs                  262M      0   262M   0% /dev/shm
 /dev/hda1              239M    20M   207M   9% /boot
 /dev/dm-5              3,7G    75M   3,4G   3% /home
 /dev/dm-4              317M    11M   290M   4% /tmp
 /dev/dm-1              3,7G   1,7G   1,8G  50% /usr
 '''/dev/hdb1              5,3G   1,1G   4,0G  21% /var'''
 /dev/dm-2              1,8G   876M   818M  52% /media/dm-2

'''Si vous disposez de plus de 50% d’espace libre vous pouvez passer à l'étape suivante'''.

Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Si cela ne suffit toujours pas, il faut envisager d'ajouter un disque à votre système, ou de procéder à un upgrade par étapes successives (en mettant à jour les paquets progressivement et en nettoyant à chaque étape)

=== Les pilotes de la carte Graphique ===

Afin de ne pas avoir de mauvaise surprise avec le serveur X, modifiez votre xorg.conf afin d'utiliser des pilotes Debian.

Eventuellement utilisez les pilotes &quot;vesa&quot;

Dans votre fichier /etc/X11/xorg.conf

&lt;code&gt;
Section &quot;Device&quot;
    Identifier     &quot;Device0&quot;
    Driver         &quot;vesa&quot;
EndSection
&lt;/code&gt;

Si vous êtes sur de vous, n'en faites rien, mais prévoyez une réinstallation des pilotes avant le premier redémarrage.

=== Le fichier sources.list ===

Créons un nouveau sources.list que nous placerons dans /etc/apt/sources.list.d
Nous prenons dores et déjà la bonne habitude d'utiliser ce dossier qui est devenu celui par défaut pour mettre les fichiers contenant les dépôts.

 # nano /etc/apt/sources.list.d/sources.list

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free

# stable security
deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

## stable volatile
## Le dépôt volatile à changé, il est désormais sous &quot;squeeze-updates&quot;
deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib

# stable multimedia
deb http://www.debian-multimedia.org squeeze main non-free
#deb-src http://www.debian-multimedia.org squeeze main non-free

# backports
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
&lt;/code&gt;

== Préparation de la mise à niveau ==

Maintenant que nous sommes prêts, nous pouvons lancer l'upgrade :

Mise à jour de la liste des paquets :

 # aptitude update

=== Si vous avez des problèmes de clefs ===

 W: GPG error: http://www.debian-multimedia.org

 # aptitude install debian-backports-keyring
 # aptitude install debian-multimedia-keyring

=== Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]] ===

 E: Dynamic MMap ran out of room

 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaite l'update, il ne doit pas y avoir d'erreurs

 # aptitude update

=== Problèmes de dépendances ===

Vous ne pourrez pas faire le passage de Lenny à Squeeze tant que subsisteront des problèmes de dépendances...

Voici deux exemples de problèmes de dépendances, et la manière de les régler :

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  xfce4-mixer-oss: Est en conflit avec: xfce4-mixer-alsa mais 4.4.2-3 est installé.
  foomatic-db: Est en conflit avec: foomatic-db-hpijs mais 20080211-1 est installé.
  xfce4-mixer-alsa: Est en conflit avec: xfce4-mixer-oss mais 4.4.2-3 doit être installé.

# aptitude install foomatic-db xfce4-mixer-alsa
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Lecture des descriptions de tâches... Fait  
Les NOUVEAUX paquets suivants vont être installés : 
  libopenjpeg2{a} libpoppler5{a} min12xxw{a} pnm2ppa{a} 
Les paquets suivants seront ENLEVÉS : 
  foomatic-db-hpijs{a} 
Les paquets suivants seront mis à jour : 
  fontconfig-config foomatic-db foomatic-db-engine foomatic-filters libfontconfig1 libjpeg62 libxml2 poppler-utils 
8 paquets mis à jour, 4 nouvellement installés, 1 à enlever et 728 non mis à jour.
Il est nécessaire de télécharger 4722ko d'archives. Après dépaquetage, 18,2Mo seront libérés.
Voulez-vous continuer ? [Y/n/?] o
...
État actuel : 728 mises à jour restantes [-8].
&lt;/code&gt;

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  libatlas3gf-base: Est en conflit avec: libblas3gf (&lt; 1.2-5) mais 1.2-2 est installé et a été conservé
                    Est en conflit avec: liblapack3gf (&lt; 3.2.1-4) mais 3.1.1-1 est installé et a été conservé
  rarian-compat: Est en conflit avec: scrollkeeper (&lt; 0.4) mais 0.3.14-16 est installé et a été conservé

# aptitude install libatlas3gf-base scrollkeeper
...
Les actions suivantes permettront de résoudre ces dépendances :

Mettre à jour les paquets suivants :
libblas3gf [1.2-2 (stable, now) -&gt; 1.2-8 (testing)]
liblapack3gf [3.1.1-1 (stable, now) -&gt; 3.2.1-8 (testing)]

Le score est de 70

Accepter cette solution ? [Y/n/q/?] y
...
État actuel : 725 mises à jour restantes [-3].
&lt;/code&gt;

En cas de doute n'hésitez pas à demander un avis [http://forum.debian-fr.org/ sur le forum]

=== stopper le serveur X ===

'''IMPORTANT''' : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

Si vous faites votre mise à niveau avec le serveur X lancé, vous risquez [http://www.debian-fr.org/upgrade-lenny-squeeze-gnome-minimaliste-t30744.html cette mésaventure]

== Lancez la mise à niveau ==

&lt;code&gt;
# aptitude safe-upgrade
...
Les paquets suivants ont été conservés : 
  apt apt-utils aptitude synaptic 
Les NOUVEAUX paquets suivants vont être installés : 
  acpi-fakekey{a} apache2.2-bin{a} aumix{a} aumix-common{a} bluez{a} bluez-alsa{a} bluez-cups{a} bluez-gstreamer{a} 
  browser-plugin-gnash{a} cifs-utils{a} consolekit{a} cpp-4.4{a} cracklib-runtime{a} cups-ppdc{a} dash{a} db4.8-util{a} 
  diffutils{a} dosfstools{a} firmware-linux-free{a} freepats{a} fuse-utils{a} gcc-4.4-base{a} gcj-4.4-base{a} 
  gcj-4.4-jre-lib{a} geoip-database{a} ghostscript-cups{a} gnash{a} gnash-common{a} gnupg-curl{a} grub-pc{a} 
  gstreamer0.10-ffmpeg{a} gstreamer0.10-fluendo-mp3{a} gstreamer0.10-plugins-bad{a} gstreamer0.10-plugins-base{a} gvfs{a} 
  hplip-cups{a} insserv{a} install-info{a} isc-dhcp-client{a} isc-dhcp-common{a} iso-codes{a} keyboard-configuration{a} 
  libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libass4{a} libatasmart4{a} libaudit0{a} libavahi-core7{a} libavcodec52{a} 
  libavformat52{a} libavutil50{a} libbabl-0.0-0{a} libbind9-60{a} libbluetooth3{a} libboost-date-time1.42.0{a} 
  libboost-thread1.42.0{a} libbsd0{a} libburn4{a} libc-bin{a} libc-client2007e{a} libcap-ng0{a} libcdaudio1{a} libcdio10{a} 
  libcdparanoia0{a} libcelt0-0{a} libck-connector0{a} libcolamd2.7.1{a} libcommons-beanutils-java{a} 
  libcommons-collections3-java{a} libcommons-compress-java{a} libcommons-digester-java{a} libcommons-logging-java{a} 
  libcrack2{a} libcupscgi1{a} libcupsdriver1{a} libcupsmime1{a} libcupsppdc1{a} libdatrie1{a} libdb-je-java{a} libdb4.7{a} 
  libdb4.7-java{a} libdb4.7-java-gcj{a} libdb4.8{a} libdc1394-22{a} libdca0{a} libdirac-encoder0{a} libdirectfb-1.2-9{a} 
  libdns66{a} libdrm-intel1{a} libdrm-nouveau1{a} libdrm-radeon1{a} libdvdnav4{a} libdvdread4{a} libeggdbus-1-0{a} libenca0{a} 
  libenchant1c2a{a} libevent-1.4-2{a} libexempi3{a} libexo-common{a} libfaad2{a} libfftw3-3{a} libfile-copy-recursive-perl{a} 
  libflite1{a} libfont-freetype-perl{a} libfuse2{a} libgcj10{a} libgcr0{a} libgdu0{a} libgegl-0.0-0{a} libgeoip1{a} libgif4{a} 
  libgme0{a} libgomp1{a} libgp11-0{a} libgpgme11{a} libgraphicsmagick3{a} libgraphite3{a} libgssapi-krb5-2{a} libgtkglext1{a} 
  libgudev-1.0-0{a} libhpmud0{a} libicu44{a} libicu4j-java{a} libiptcdata0{a} libisc60{a} libisccc60{a} libisccfg60{a} 
  libiso9660-7{a} libisofs6{a} libiw30{a} libjbig2dec0{a} libjpeg-progs{a} libjpeg8{a} libjtidy-java{a} libk5crypto3{a} 
  libkate1{a} libkrb5-3{a} libkrb5support0{a} libltdl7{a} liblucene2-java{a} liblwres60{a} liblzma2{a} libmimic0{a} libmms0{a} 
  libmodplug1{a} libmozjs2d{a} libmpcdec6{a} libmpfr4{a} libmusicbrainz4c2a{a} libmythes-1.2-0{a} libneon27-gnutls{a} 
  libnetaddr-ip-perl{a} libnfnetlink0{a} libnl1{a} libntfs-3g75{a} libntfs10{a} libofa0{a} libonig2{a} libopencore-amrnb0{a} 
  libopencore-amrwb0{a} libopenraw1{a} liborc-0.4-0{a} libossp-uuid16{a} libpam-ck-connector{a} libpam-cracklib{a} 
  libpango-perl{a} libpangomm-1.4-1{a} libparted0debian1{a} libpciaccess0{a} libpolkit-agent-1-0{a} libpolkit-backend-1-0{a} 
  libpolkit-gobject-1-0{a} libpoppler-glib4{a} libpth20{a} libpython2.6{a} libqdbm14{a} libraptor1{a} librasqal2{a} 
  libraw1394-11{a} librdf0{a} libreadline6{a} librtmp0{a} libsane-hpaio{a} libsasl2-modules{a} libservlet2.5-java{a} 
  libsexy2{a} libsgutils2-2{a} libslv2-9{a} libsndfile1{a} libsoundtouch1c2{a} libswscale0{a} libtag1-vanilla{a} libtalloc2{a} 
  libtextcat-data-utf8{a} libtokyocabinet8{a} libudev0{a} libunique-1.0-0{a} libusb-1.0-0{a} libutempter0{a} libuuid-perl{a} 
  libv4l-0{a} libva1{a} libvcdinfo0{a} libvisual-0.4-0{a} libvisual-0.4-plugins{a} libvpx0{a} libwebkit-1.0-2{a} 
  libwebkit-1.0-common{a} libwildmidi1{a} libwnck-common{a} libwnck22{a} libx11-xcb1{a} libx264-104{a} libxcb-atom1{a} 
  libxcb-aux0{a} libxcb-dri2-0{a} libxcb-event1{a} libxfce4menu-0.1-0{a} libxfce4util-bin{a} libxfce4util-common{a} 
  libxfconf-0-2{a} libxklavier16{a} libxml-parser-perl{a} libxres1{a} libzbar0{a} linux-base{a} linux-image-2.6.32-5-amd64{a} 
  lockfile-progs{a} lsb-release{a} mtools{a} ntfsprogs{a} os-prober{a} oss-compat{a} php5-cli{a} php5-suhosin{a} 
  policykit-1{a} policykit-1-gnome{a} postgresql-8.4{a} postgresql-client-8.4{a} postgresql-contrib-8.4{a} 
  postgresql-doc-8.4{a} python-cups{a} python-gconf{a} python-numpy{a} python-pexpect{a} python-reportbug{a} python-webkit{a} 
  python2.6{a} python2.6-minimal{a} ristretto{a} samba-common-bin{a} sane-utils{a} sensible-utils{a} squeeze{a} 
  tango-icon-theme{a} thunar-archive-plugin{a} thunar-volman{a} tsconf{a} ttf-freefont{a} ttf-lyx{a} ttf-sil-gentium{a} 
  ttf-sil-gentium-basic{a} udisks{a} uno-libs3{a} unzip{a} ure{a} x-ttcidfont-conf{a} xdg-user-dirs{a} xfburn{a} 
  xfce-keyboard-shortcuts{a} xfce4-appfinder{a} xfce4-clipman{a} xfce4-datetime-plugin{a} xfce4-dict{a} xfce4-notes{a} 
  xfce4-notifyd{a} xfce4-places-plugin{a} xfce4-power-manager{a} xfce4-power-manager-data{a} xfce4-screenshooter{a} 
  xfce4-settings{a} xfce4-taskmanager{a} xfce4-timer-plugin{a} xfce4-xkb-plugin{a} xfconf{a} xfonts-mathml{a} xinput{a} xli{a} 
  xorg-docs-core{a} xscreensaver{a} xscreensaver-data{a} xserver-common{a} xserver-xorg-video-nouveau{a} xulrunner-1.9.1{a} 
  xz-utils{a} 
Les paquets suivants seront ENLEVÉS : 
  bluez-utils{u} cpp-4.3{u} cupsddk-drivers{u} djvulibre-desktop{u} finger{u} gs-common{u} liba52-0.7.4{u} libamrnb3{u} 
  libamrwb3{u} libaudio2{u} libavahi-compat-libdnssd1{u} libavahi-core5{u} libavc1394-0{u} libavcodec51{u} libbind9-50{u} 
  libbluetooth2{u} libc-client2007b{u} libcap1{u} libcucul0{u} libcupsys2{u} libcurl3{u} libdatrie0{u} libdirac0{u} 
  libdjvulibre21{u} libfaad0{u} libfreebob0{u} libgail-common{u} libgraphviz4{u} libgtkhtml2-0{u} libicu38{u} libiec61883-0{u} 
  libisccc50{u} libisccfg50{u} libiw29{u} libjaxp1.3-java-gcj{u} libltdl3{u} liblwres50{u} libmagick10{u} libmodplug0c2{u} 
  libmozjs1d{u} libmpcdec3{u} libmpfr1ldbl{u} libmysqlclient15off{u} libneon27{u} libntfs-3g31{u} libossp-uuid15{u} 
  libparted1.8-10{u} libpoppler-glib3{u} libpoppler3{u} libqt3-mt{u} libraw1394-8{u} libsensors3{u} libservlet2.4-java{u} 
  libsmbios-bin{u} libsmbios2{u} libssh2-1{u} libsuitesparse-3.1.0{u} libswfdec-0.6-90{u} libtalloc1{u} libvolume-id0{u} 
  libx264-65{u} libxalan2-java{u} libxalan2-java-gcj{u} libxcb-xlib0{u} libxerces2-java{u} libxerces2-java-gcj{u} 
  libxfce4mcs-client3{u} libxfce4mcs-manager3{u} libxtrap6{u} libxxf86misc1{u} mysql-common{u} openoffice.org-writer2latex{u} 
  openssl-blacklist{u} postgresql-8.3{u} postgresql-client-8.3{u} postgresql-contrib-8.3{u} postgresql-doc-8.3{u} 
  python-gtkhtml2{u} python-numeric{u} svgalibg1{u} xfce4-icon-theme{u} xfce4-mcs-manager{u} xfce4-mcs-plugins{u} 
  xfce4-minicmd-plugin{u} xfce4-screenshooter-plugin{u} xserver-xorg-video-cyrix{u} xserver-xorg-video-v4l{u} 
  xserver-xorg-video-vga{u} xulrunner-1.9{u} 
Les paquets suivants seront mis à jour : 
  a2ps acpi acpi-support acpi-support-base acpid adduser alsa-base alsa-utils anacron analog apache2 apache2-doc 
  apache2-mpm-prefork apache2-utils apache2.2-common apmd aspell aspell-fr at avahi-autoipd avahi-daemon base-files 
  base-passwd bash bash-completion bc bind9 bind9-doc bind9-host bind9utils bluetooth bsd-mailx bsdmainutils bsdutils bsh 
  bsh-gcj busybox ca-certificates console-common console-data console-setup console-terminus console-tools coreutils cpio cpp 
  cpufrequtils cron cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk dbus dbus-x11 dc debconf debconf-i18n 
  debian-archive-keyring debian-faq debianutils deborphan defoma desktop-base desktop-file-utils dhcp3-client dhcp3-common 
  dialog dictionaries-common diff disk-manager dmidecode dmsetup dnsutils doc-debian docbook-xml dpkg e2fslibs e2fsprogs ed 
  eject esound-common exim4 exim4-base exim4-config exim4-daemon-light exo-utils fastjar file findutils fontconfig foo2zjs 
  foomatic-db-gutenprint foomatic-filters-ppds foomatic-gui fortune-mod fortunes-min ftp gcc-4.3-base gconf2 gconf2-common gdm 
  gettext-base ghostscript gimp gimp-data gksu gnome-keyring gnupg gparted gpgv grep groff-base grub grub-common gsfonts 
  gtk2-engines-xfce gzip hal hal-info hdparm hibernate hicolor-icon-theme hostname hpijs hplip hplip-data iamerican ibritish 
  iceweasel iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint info initramfs-tools initscripts installation-report iproute 
  iptables iputils-ping ispell java-common kerneloops klibc-utils laptop-detect less libaa1 libacl1 libapache2-mod-perl2 
  libapache2-mod-php5 libapache2-mod-python libapm1 libapr1 libaprutil1 libart-2.0-2 libasound2 libaspell15 libatk1.0-0 
  libattr1 libaudiofile0 libavahi-client3 libavahi-common-data libavahi-common3 libavahi-glib1 libavutil49 libbcel-java 
  libblkid1 libbonobo2-0 libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i386 libcaca0 
  libcairo-perl libcairo2 libcairomm-1.0-1 libcap2 libcomerr2 libconsole libcpufreq0 libcroco3 libcups2 libcupsimage2 
  libcurl3-gnutls libcwidget3 libdaemon0 libdb4.6 libdbus-1-3 libdbus-glib-1-2 libdevel-symdump-perl libdevmapper1.02.1 
  libdigest-hmac-perl libdigest-sha1-perl libdirectfb-extra libdmx1 libdrm2 libedit2 libesd0 libexif12 libexo-0.3-0 libexpat1 
  libfaac0 libfam0 libffi5 libflac8 libfontenc1 libfreetype6 libfs6 libgail18 libgc1c2 libgcc1 libgcj-bc libgcj-common 
  libgconf2-4 libgcrypt11 libgd2-noxpm libgdbm3 libgfortran3 libgimp2.0 libgksu2-0 libgl1-mesa-dri libgl1-mesa-glx libglade2-0 
  libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgmp3c2 libgnome-keyring0 libgnome2-0 libgnome2-canvas-perl 
  libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0 libgnomecanvas2-common libgnomeui-0 libgnomeui-common 
  libgnomevfs2-0 libgnomevfs2-common libgnomevfs2-extra libgnutls26 libgpg-error0 libgphoto2-2 libgphoto2-port0 libgpm2 libgs8 
  libgsf-1-114 libgsf-1-common libgsm1 libgssglue1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0 
  libgtk2.0-common libgtkmm-2.4-1c2a libgtop2-7 libgtop2-common libgutenprint2 libhal-storage1 libhal1 libhsqldb-java 
  libhsqldb-java-gcj libhtml-parser-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libice6 libidl0 libidn11 libieee1284-3 
  libijs-0.35 libilmbase6 libjack0 libjasper1 libjaxp1.3-java libjline-java libkeyutils1 libklibc libkrb53 liblcms1 
  libldap-2.4-2 liblocale-gettext-perl liblockfile1 liblog4j1.2-java liblzo2-2 libmad0 libmagic1 libmng1 libmp3lame0 
  libmx4j-java libncurses5 libncursesw5 libnet-dns-perl libnewt0.52 libnfsidmap2 libnotify1 libnspr4-0d libnss-mdns libnss3-1d 
  libogg0 liboil0.3 libopenexr6 liborbit2 libpam-modules libpam-runtime libpam0g libpango1.0-0 libpango1.0-common libpaper1 
  libpci3 libpcre3 libpcsclite1 libperl5.10 libpixman-1-0 libpng12-0 libpopt0 libpostproc51 libpq5 libpulse0 libreadline5 
  librecode0 libregexp-java librpcsecgss3 librsvg2-2 librsvg2-common libsane libsane-extras libsasl2-2 libschroedinger-1.0-0 
  libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsensors4 libsepol1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 
  libsmbclient libsnmp-base libsnmp15 libsocket6-perl libsoup2.4-1 libsqlite3-0 libss2 libssl0.9.8 libstartup-notification0 
  libstdc++6 libsvga1 libsysfs2 libtag1c2a libtagc0 libtasn1-3 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl 
  libthai-data libthai0 libtheora0 libthunar-vfs-1-2 libtiff4 libts-0.0-0 liburi-perl libusb-0.1-4 libuuid1 libvorbis0a 
  libvorbisenc2 libvte-common libvte9 libwavpack1 libwbclient0 libwmf0.2-7 libwpg-0.1-1 libwrap0 libwww-perl libx11-6 
  libx11-data libx86-1 libxau6 libxaw7 libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xv0 libxcb1 
  libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfce4util4 libxfcegui4-4 libxfixes3 libxfont1 libxft2 libxi6 
  libxine1 libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins libxine1-plugins libxine1-x libxinerama1 
  libxkbfile1 libxmu6 libxmuu1 libxpm4 libxrandr2 libxrender1 libxslt1.1 libxss1 libxt6 libxtst6 libxv1 libxvidcore4 libxvmc1 
  libxxf86dga1 libxxf86vm1 linux-image-2.6-amd64 linux-sound-base locales login logrotate lp-solve lsb-base lsof lvm2 lwresd 
  m4 mailagent makedev man-db manpages manpages-fr manpages-fr-extra mawk mc menu mime-support mktemp mlocate mlock 
  module-init-tools mount mousepad mutt myspell-en-us myspell-fr-gut nano ncurses-base ncurses-bin ncurses-term net-tools 
  netatalk netbase nfs-common nfs-kernel-server ntfs-3g nvclock openbsd-inetd openoffice.org openoffice.org-base 
  openoffice.org-base-core openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw 
  openoffice.org-filter-mobiledev openoffice.org-gcj openoffice.org-gtk openoffice.org-help-en-us openoffice.org-help-fr 
  openoffice.org-impress openoffice.org-java-common openoffice.org-l10n-fr openoffice.org-math openoffice.org-officebean 
  openoffice.org-report-builder-bin openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-thesaurus-en-us 
  openoffice.org-writer openprinting-ppds openssh-client openssh-server openssl orage passwd patch pciutils pcmciautils perl 
  perl-base perl-modules php5-common pm-utils popularity-contest portmap postgresql postgresql-client postgresql-client-common 
  postgresql-common postgresql-contrib postgresql-doc powermgmt-base powertop printconf procmail procps psmisc psutils python 
  python-cairo python-central python-dbus python-foomatic python-glade2 python-gnome2 python-gobject python-gtk2 
  python-imaging python-ipy python-minimal python-pyorbit python-support python2.5 python2.5-minimal qpopper radeontool 
  readline-common reportbug rsyslog sa-exim samba samba-common samba-doc sed sgml-base sgml-data shared-mime-info 
  smartmontools smbclient smbfs spamassassin spamc ssl-cert sudo swat swfdec-mozilla sysv-rc sysvinit sysvinit-utils tar 
  tasksel tasksel-data tcpd texinfo thunar thunar-data thunar-media-tags-plugin time toshset traceroute ttf-dejavu 
  ttf-dejavu-core ttf-dejavu-extra ttf-liberation ttf-opensymbol tzdata ucf udev update-inetd usbutils util-linux uw-imapd 
  vbetool vim-common vim-tiny w3m wamerican wfrench wget whiptail whois winbind wireless-tools wpasupplicant x11-apps 
  x11-common x11-session-utils x11-utils x11-xfs-utils x11-xkb-utils x11-xserver-utils xauth xbitmaps xdg-utils xfce4 
  xfce4-battery-plugin xfce4-clipman-plugin xfce4-cpufreq-plugin xfce4-cpugraph-plugin xfce4-diskperf-plugin 
  xfce4-fsguard-plugin xfce4-genmon-plugin xfce4-goodies xfce4-mailwatch-plugin xfce4-mixer xfce4-mount-plugin 
  xfce4-netload-plugin xfce4-notes-plugin xfce4-panel xfce4-quicklauncher-plugin xfce4-sensors-plugin xfce4-session 
  xfce4-smartbookmark-plugin xfce4-systemload-plugin xfce4-terminal xfce4-utils xfce4-verve-plugin xfce4-wavelan-plugin 
  xfce4-weather-plugin xfdesktop4 xfdesktop4-data xfonts-100dpi xfonts-75dpi xfonts-base xfonts-encodings xfonts-intl-european 
  xfonts-scalable xfonts-utils xfprint4 xfwm4 xinit xkb-data xml-core xorg xsane xsane-common xserver-xorg xserver-xorg-core 
  xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd xserver-xorg-input-mouse xserver-xorg-input-synaptics 
  xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati 
  xserver-xorg-video-chips xserver-xorg-video-cirrus xserver-xorg-video-dummy xserver-xorg-video-fbdev 
  xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-intel xserver-xorg-video-mach64 xserver-xorg-video-mga 
  xserver-xorg-video-neomagic xserver-xorg-video-nv xserver-xorg-video-openchrome xserver-xorg-video-r128 
  xserver-xorg-video-radeon xserver-xorg-video-radeonhd xserver-xorg-video-rendition xserver-xorg-video-s3 
  xserver-xorg-video-s3virge xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis 
  xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident xserver-xorg-video-tseng 
  xserver-xorg-video-vesa xserver-xorg-video-vmware xserver-xorg-video-voodoo xterm zlib1g 
Les paquets suivants sont RECOMMANDÉS mais ne seront pas installés :
  bzip2 gamin gcc gdm-themes hddtemp libapache2-reload-perl libatk1.0-data libatm1 libbsd-resource-perl libc6-dev libfribidi0 
  libglib2.0-data libgtk2.0-bin libhtml-format-perl libio-socket-inet6-perl liblog4j1.2-java-gcj libmail-spf-perl 
  libmailtools-perl libnss-lwres libpam-gnome-keyring libpaper-utils lm-sensors make nmap openoffice.org-emailmerge 
  openoffice.org-filter-binfilter pconf-detect rc re2c uuid-runtime wdiff xfwm4-themes xnest xserver-xephyr zenity 
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] 
&lt;/code&gt;

En fonction de votre connexion ça peut prendre très longtemps, et être interrompu (à 500KB/s une demi-heure à 50 KB/s c'est plusieurs heures...).
Un conseil, si vous n'êtes pas sûr de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

&lt;code&gt;
# aptitude -d safe-upgrade
...
 762Mo téléchargés en 1h9min37s (182ko/s)                                                          
Lecture des listes de paquets... Fait             
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait
&lt;/code&gt;

Puis

&lt;code&gt;
# aptitude safe-upgrade
...
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 0o/762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] y
&lt;/code&gt;

=== Déroulement ===

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut, mais prenez le temps de lire tous les messages, et si nécessaire, prenez des notes.

Sans le téléchargement des fichiers, comptez un peu plus d'une heure pour la mise à niveau.

[[Fichier:Snapshot4.jpeg]]

[[Fichier:Snapshot5.jpeg]]

[[Fichier:Snapshot6.jpeg]]

[[Fichier:Snapshot7.jpeg]]

[[Fichier:Snapshot9.jpeg]]

[[Fichier:Snapshot11.jpeg]]

[[Fichier:Snapshot13.jpeg]]

[[Fichier:Snapshot14.jpeg]]

[[Fichier:Snapshot15.jpeg]]

[[Fichier:Snapshot16.jpeg]]

[[Fichier:Snapshot17.jpeg]]

Vous partirez d'une Lenny configurée, et donc de nombreux fichiers de configuration auront été modifiés par vos soins.
Il est judicieux de ne pas écraser vos configurations avec les fichiers par défaut proposés par les &quot;mainteneurs&quot; des paquets.
Vous aurez tout le loisir de regarder les modifications proposées, et ce qu'elles apportent, en regardant dans /usr/share/doc ou dans les contenus de vos deb téléchargés (dans /var/apt/archives)

[[Fichier:Snapshot18.jpeg]]

=== finalisation ===

Le safe-upgrade devrait se terminer par ceci :

&lt;code&gt;
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 4 mises à jour restantes [-721].
&lt;/code&gt;

Vous pouvez maintenant lancer un &quot;full-upgrade&quot;

&lt;code&gt;
# aptitude full-upgrade

...

4 paquets mis à jour, 13 nouvellement installés, 2 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 12,1Mo d'archives. Après dépaquetage, 14,3Mo seront utilisés.
Les paquets suivants ont des dépendances non satisfaites :
  libept0: Dépend: libapt-pkg-libc6.7-6-4.6 qui est un paquet virtuel
Les actions suivantes permettront de résoudre ces dépendances :

Supprimer les paquets suivants :
libept0

Le score est de 115

Accepter cette solution ? [Y/n/q/?]y

...

Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 0 mise à jour restante [-4].
&lt;/code&gt;

Si tout s'est bien passé, il ne vous reste plus qu'a redémarrer la machine :

 # shutdown -r now

=== Grub2 ===

Si vous étiez sous Grub-legacy vous aurez certainement fait la bascule vers Grub2.

La première &quot;surprise&quot; qui vous attend donc (sauf si vous avez lu ce guide avant...) c'est le menu suivant :

[[Fichier:Snapshot19.jpeg]]

Si vous appuyez sur entrée, vous serez conduit vers le menu de Grub2.
Cette étape permet de vérifier que Grub2 est bien installé, et de le tester.

[[Fichier:Snapshot20.jpeg]]

Si cela fonctionne, une des premières choses à faire sera de confirmer l'installation de Grub2 en tapant dans une console la commande suivante :

 # upgrade-from-grub-legacy

=== LVM ===

Problème rencontré lors de la mise à niveau avec LVM...
Le système s'est mélangé les pédales dans l'attribution des partitions.
Résultat :

[[Fichier:Snapshot21.jpeg]]

Voici ou se situe le problème :

&lt;code&gt;
$ vdir /dev/l2s/
total 0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 home -&gt; ../dm-5
lrwxrwxrwx 1 root root 7 25 nov.  18:28 root -&gt; ../dm-0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 swap_1 -&gt; ../dm-1
lrwxrwxrwx 1 root root 7 25 nov.  18:28 tmp -&gt; ../dm-4
lrwxrwxrwx 1 root root 7 25 nov.  18:28 usr -&gt; ../dm-2
lrwxrwxrwx 1 root root 7 25 nov.  18:28 var -&gt; ../dm-3
&lt;/code&gt;
&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
# /dev/hda1	/boot	ext2	defaults	0	2
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-1	/usr	ext3	defaults	0	2
# /dev/hdb1	/var	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-3	none	swap	sw	0	0
# /dev/hdc	/media/cdrom0	udf,iso9660	user,noauto	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

Je ne sais pour quelle raison LVM à changé la numérotation des partitions... /usr est passé en dm-1 alors qu'il était en dm-2 et la swap en dm-3 alors qu'elle était être en dm-1
Il suffit de modifier le fichier /etc/fstab pour qu'il reflète à nouveau correctement vos partitions, et le tour est joué :

&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-2	/usr	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-1	none	swap	sw	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

== Bienvenu sur Squeeze ==

 laurent@lenny2squeeze:~$ uname -a
 Linux lenny2squeeze 2.6.32-5-amd64 #1 SMP Sat Oct 30 14:18:21 UTC 2010 x86_64 GNU/Linux

[[Fichier:Snapshot25.jpeg]]

A venir... Upgrade de Squeeze à ????

----
[[Utilisateur:Lol|Lol]] 25 novembre 2010 à 15:55 (EAT)
[[Catégorie:Installation]]</text>
      <sha1>8e8ca496a3vn41of3t45bdck5ho8aol</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2691</id>
      <parentid>2685</parentid>
      <timestamp>2011-02-08T06:22:24Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Avertissement apt-get</comment>
      <text xml:space="preserve" bytes="31974">{{sid}}

La mise à niveau de Lenny à Squeeze se précise, nous allons faire ici un rapide résumé des opérations nécessaires à la réussite de cette mise à niveau (upgrade).
LVM est installé sur la machine que nous allons mettre à niveau afin de tester le plus de possibilités.

Avant toute chose, je souhaite faire quelques précisions :
Chaque configuration est propre à chacun, en fonction de ses goûts, de son matériel et de ses connaissances.
Un guide universel n'existe donc pas.

Prévoyez aussi d'avoir du temps devant vous, et d'être au calme.

Nous choisirons d'utiliser aptitude au lieu de apt-get, il est en effet plus exigeant concernant les dépendances, votre mise à niveau sera plus &quot;propre&quot;.

J'ai choisi une Lenny avec toutes les options de tasksel activées afin de faire un tour d'horizon le plus vaste possible des problèmes qui pourraient survenir.
L'environnement graphique est Xfce.

[[Fichier:Snapshot3.jpeg]]

== Pré-requis ==

=== Une bonne sauvegarde ===

Vous n'avez AUCUNE garantie que la mise à niveau se passe bien, alors, quel que soit la méthode que vous emploierez, une sauvegarde est le minimum que vous puissiez faire avant de vous lancer dans l'aventure..

Avec dd, dump ou simplement cp SAUVEGARDEZ !

=== Un système à jour! ===

Le fichier sources.list précédent la mise à niveau :

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org stable main non-free
#deb-src http://www.debian-multimedia.org stable main non-free

# backports
deb http://backports.debian.org/debian-backports lenny-backports main contrib non-free
&lt;/code&gt;

 # aptitude update
 # aptitude safe-upgrade
 # aptitude full-upgrade

=== De l'espace! ===

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition où se trouve /var pour le stockage des paquets téléchargés.

Pour info une mise à jour &quot;lourde&quot; se soldera par le téléchargement d'environ 1Go...

Pour connaitre l’espace libre de votre partition racine :

 $ df -H
 Sys. de fich.          Tail.  Occ.  Disp. %Occ. Monté sur
 '''/dev/dm-0              338M   123M   198M  39% /'''
 tmpfs                  262M      0   262M   0% /lib/init/rw
 udev                    11M   689k   9,8M   7% /dev
 tmpfs                  262M      0   262M   0% /dev/shm
 /dev/hda1              239M    20M   207M   9% /boot
 /dev/dm-5              3,7G    75M   3,4G   3% /home
 /dev/dm-4              317M    11M   290M   4% /tmp
 /dev/dm-1              3,7G   1,7G   1,8G  50% /usr
 '''/dev/hdb1              5,3G   1,1G   4,0G  21% /var'''
 /dev/dm-2              1,8G   876M   818M  52% /media/dm-2

'''Si vous disposez de plus de 50% d’espace libre vous pouvez passer à l'étape suivante'''.

Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Si cela ne suffit toujours pas, il faut envisager d'ajouter un disque à votre système, ou de procéder à un upgrade par étapes successives (en mettant à jour les paquets progressivement et en nettoyant à chaque étape)

=== Les pilotes de la carte Graphique ===

Afin de ne pas avoir de mauvaise surprise avec le serveur X, modifiez votre xorg.conf afin d'utiliser des pilotes Debian.

Eventuellement utilisez les pilotes &quot;vesa&quot;

Dans votre fichier /etc/X11/xorg.conf

&lt;code&gt;
Section &quot;Device&quot;
    Identifier     &quot;Device0&quot;
    Driver         &quot;vesa&quot;
EndSection
&lt;/code&gt;

Si vous êtes sur de vous, n'en faites rien, mais prévoyez une réinstallation des pilotes avant le premier redémarrage.

=== Le fichier sources.list ===

Créons un nouveau sources.list que nous placerons dans /etc/apt/sources.list.d
Nous prenons dores et déjà la bonne habitude d'utiliser ce dossier qui est devenu celui par défaut pour mettre les fichiers contenant les dépôts.

 # nano /etc/apt/sources.list.d/sources.list

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free

# stable security
deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

## stable volatile
## Le dépôt volatile à changé, il est désormais sous &quot;squeeze-updates&quot;
deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib

# stable multimedia
deb http://www.debian-multimedia.org squeeze main non-free
#deb-src http://www.debian-multimedia.org squeeze main non-free

# backports
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
&lt;/code&gt;

== Préparation de la mise à niveau ==

Maintenant que nous sommes prêts, nous pouvons lancer l'upgrade :

Mise à jour de la liste des paquets :

 # aptitude update

=== Si vous avez des problèmes de clefs ===

 W: GPG error: http://www.debian-multimedia.org

 # aptitude install debian-backports-keyring
 # aptitude install debian-multimedia-keyring

=== Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]] ===

 E: Dynamic MMap ran out of room

 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaite l'update, il ne doit pas y avoir d'erreurs

 # aptitude update

=== Problèmes de dépendances ===

Vous ne pourrez pas faire le passage de Lenny à Squeeze tant que subsisteront des problèmes de dépendances...

Voici deux exemples de problèmes de dépendances, et la manière de les régler :

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  xfce4-mixer-oss: Est en conflit avec: xfce4-mixer-alsa mais 4.4.2-3 est installé.
  foomatic-db: Est en conflit avec: foomatic-db-hpijs mais 20080211-1 est installé.
  xfce4-mixer-alsa: Est en conflit avec: xfce4-mixer-oss mais 4.4.2-3 doit être installé.

# aptitude install foomatic-db xfce4-mixer-alsa
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Lecture des descriptions de tâches... Fait  
Les NOUVEAUX paquets suivants vont être installés : 
  libopenjpeg2{a} libpoppler5{a} min12xxw{a} pnm2ppa{a} 
Les paquets suivants seront ENLEVÉS : 
  foomatic-db-hpijs{a} 
Les paquets suivants seront mis à jour : 
  fontconfig-config foomatic-db foomatic-db-engine foomatic-filters libfontconfig1 libjpeg62 libxml2 poppler-utils 
8 paquets mis à jour, 4 nouvellement installés, 1 à enlever et 728 non mis à jour.
Il est nécessaire de télécharger 4722ko d'archives. Après dépaquetage, 18,2Mo seront libérés.
Voulez-vous continuer ? [Y/n/?] o
...
État actuel : 728 mises à jour restantes [-8].
&lt;/code&gt;

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  libatlas3gf-base: Est en conflit avec: libblas3gf (&lt; 1.2-5) mais 1.2-2 est installé et a été conservé
                    Est en conflit avec: liblapack3gf (&lt; 3.2.1-4) mais 3.1.1-1 est installé et a été conservé
  rarian-compat: Est en conflit avec: scrollkeeper (&lt; 0.4) mais 0.3.14-16 est installé et a été conservé

# aptitude install libatlas3gf-base scrollkeeper
...
Les actions suivantes permettront de résoudre ces dépendances :

Mettre à jour les paquets suivants :
libblas3gf [1.2-2 (stable, now) -&gt; 1.2-8 (testing)]
liblapack3gf [3.1.1-1 (stable, now) -&gt; 3.2.1-8 (testing)]

Le score est de 70

Accepter cette solution ? [Y/n/q/?] y
...
État actuel : 725 mises à jour restantes [-3].
&lt;/code&gt;

En cas de doute n'hésitez pas à demander un avis [http://forum.debian-fr.org/ sur le forum]

=== stopper le serveur X ===

'''IMPORTANT''' : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

Si vous faites votre mise à niveau avec le serveur X lancé, vous risquez [http://www.debian-fr.org/upgrade-lenny-squeeze-gnome-minimaliste-t30744.html cette mésaventure]

== Lancez la mise à niveau ==

'''Attention''', Debian recommande désormais d'utiliser apt-get à la place de aptitude pour la mise à niveau : http://www.debian.org/releases/squeeze/i386/release-notes/ch-upgrading.en.html#upgradingpackages

Ce tuto ayant été réalisé avant cette préconisation, il n'est pas à jour concernant ce point précis.

&lt;code&gt;
# aptitude safe-upgrade
...
Les paquets suivants ont été conservés : 
  apt apt-utils aptitude synaptic 
Les NOUVEAUX paquets suivants vont être installés : 
  acpi-fakekey{a} apache2.2-bin{a} aumix{a} aumix-common{a} bluez{a} bluez-alsa{a} bluez-cups{a} bluez-gstreamer{a} 
  browser-plugin-gnash{a} cifs-utils{a} consolekit{a} cpp-4.4{a} cracklib-runtime{a} cups-ppdc{a} dash{a} db4.8-util{a} 
  diffutils{a} dosfstools{a} firmware-linux-free{a} freepats{a} fuse-utils{a} gcc-4.4-base{a} gcj-4.4-base{a} 
  gcj-4.4-jre-lib{a} geoip-database{a} ghostscript-cups{a} gnash{a} gnash-common{a} gnupg-curl{a} grub-pc{a} 
  gstreamer0.10-ffmpeg{a} gstreamer0.10-fluendo-mp3{a} gstreamer0.10-plugins-bad{a} gstreamer0.10-plugins-base{a} gvfs{a} 
  hplip-cups{a} insserv{a} install-info{a} isc-dhcp-client{a} isc-dhcp-common{a} iso-codes{a} keyboard-configuration{a} 
  libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libass4{a} libatasmart4{a} libaudit0{a} libavahi-core7{a} libavcodec52{a} 
  libavformat52{a} libavutil50{a} libbabl-0.0-0{a} libbind9-60{a} libbluetooth3{a} libboost-date-time1.42.0{a} 
  libboost-thread1.42.0{a} libbsd0{a} libburn4{a} libc-bin{a} libc-client2007e{a} libcap-ng0{a} libcdaudio1{a} libcdio10{a} 
  libcdparanoia0{a} libcelt0-0{a} libck-connector0{a} libcolamd2.7.1{a} libcommons-beanutils-java{a} 
  libcommons-collections3-java{a} libcommons-compress-java{a} libcommons-digester-java{a} libcommons-logging-java{a} 
  libcrack2{a} libcupscgi1{a} libcupsdriver1{a} libcupsmime1{a} libcupsppdc1{a} libdatrie1{a} libdb-je-java{a} libdb4.7{a} 
  libdb4.7-java{a} libdb4.7-java-gcj{a} libdb4.8{a} libdc1394-22{a} libdca0{a} libdirac-encoder0{a} libdirectfb-1.2-9{a} 
  libdns66{a} libdrm-intel1{a} libdrm-nouveau1{a} libdrm-radeon1{a} libdvdnav4{a} libdvdread4{a} libeggdbus-1-0{a} libenca0{a} 
  libenchant1c2a{a} libevent-1.4-2{a} libexempi3{a} libexo-common{a} libfaad2{a} libfftw3-3{a} libfile-copy-recursive-perl{a} 
  libflite1{a} libfont-freetype-perl{a} libfuse2{a} libgcj10{a} libgcr0{a} libgdu0{a} libgegl-0.0-0{a} libgeoip1{a} libgif4{a} 
  libgme0{a} libgomp1{a} libgp11-0{a} libgpgme11{a} libgraphicsmagick3{a} libgraphite3{a} libgssapi-krb5-2{a} libgtkglext1{a} 
  libgudev-1.0-0{a} libhpmud0{a} libicu44{a} libicu4j-java{a} libiptcdata0{a} libisc60{a} libisccc60{a} libisccfg60{a} 
  libiso9660-7{a} libisofs6{a} libiw30{a} libjbig2dec0{a} libjpeg-progs{a} libjpeg8{a} libjtidy-java{a} libk5crypto3{a} 
  libkate1{a} libkrb5-3{a} libkrb5support0{a} libltdl7{a} liblucene2-java{a} liblwres60{a} liblzma2{a} libmimic0{a} libmms0{a} 
  libmodplug1{a} libmozjs2d{a} libmpcdec6{a} libmpfr4{a} libmusicbrainz4c2a{a} libmythes-1.2-0{a} libneon27-gnutls{a} 
  libnetaddr-ip-perl{a} libnfnetlink0{a} libnl1{a} libntfs-3g75{a} libntfs10{a} libofa0{a} libonig2{a} libopencore-amrnb0{a} 
  libopencore-amrwb0{a} libopenraw1{a} liborc-0.4-0{a} libossp-uuid16{a} libpam-ck-connector{a} libpam-cracklib{a} 
  libpango-perl{a} libpangomm-1.4-1{a} libparted0debian1{a} libpciaccess0{a} libpolkit-agent-1-0{a} libpolkit-backend-1-0{a} 
  libpolkit-gobject-1-0{a} libpoppler-glib4{a} libpth20{a} libpython2.6{a} libqdbm14{a} libraptor1{a} librasqal2{a} 
  libraw1394-11{a} librdf0{a} libreadline6{a} librtmp0{a} libsane-hpaio{a} libsasl2-modules{a} libservlet2.5-java{a} 
  libsexy2{a} libsgutils2-2{a} libslv2-9{a} libsndfile1{a} libsoundtouch1c2{a} libswscale0{a} libtag1-vanilla{a} libtalloc2{a} 
  libtextcat-data-utf8{a} libtokyocabinet8{a} libudev0{a} libunique-1.0-0{a} libusb-1.0-0{a} libutempter0{a} libuuid-perl{a} 
  libv4l-0{a} libva1{a} libvcdinfo0{a} libvisual-0.4-0{a} libvisual-0.4-plugins{a} libvpx0{a} libwebkit-1.0-2{a} 
  libwebkit-1.0-common{a} libwildmidi1{a} libwnck-common{a} libwnck22{a} libx11-xcb1{a} libx264-104{a} libxcb-atom1{a} 
  libxcb-aux0{a} libxcb-dri2-0{a} libxcb-event1{a} libxfce4menu-0.1-0{a} libxfce4util-bin{a} libxfce4util-common{a} 
  libxfconf-0-2{a} libxklavier16{a} libxml-parser-perl{a} libxres1{a} libzbar0{a} linux-base{a} linux-image-2.6.32-5-amd64{a} 
  lockfile-progs{a} lsb-release{a} mtools{a} ntfsprogs{a} os-prober{a} oss-compat{a} php5-cli{a} php5-suhosin{a} 
  policykit-1{a} policykit-1-gnome{a} postgresql-8.4{a} postgresql-client-8.4{a} postgresql-contrib-8.4{a} 
  postgresql-doc-8.4{a} python-cups{a} python-gconf{a} python-numpy{a} python-pexpect{a} python-reportbug{a} python-webkit{a} 
  python2.6{a} python2.6-minimal{a} ristretto{a} samba-common-bin{a} sane-utils{a} sensible-utils{a} squeeze{a} 
  tango-icon-theme{a} thunar-archive-plugin{a} thunar-volman{a} tsconf{a} ttf-freefont{a} ttf-lyx{a} ttf-sil-gentium{a} 
  ttf-sil-gentium-basic{a} udisks{a} uno-libs3{a} unzip{a} ure{a} x-ttcidfont-conf{a} xdg-user-dirs{a} xfburn{a} 
  xfce-keyboard-shortcuts{a} xfce4-appfinder{a} xfce4-clipman{a} xfce4-datetime-plugin{a} xfce4-dict{a} xfce4-notes{a} 
  xfce4-notifyd{a} xfce4-places-plugin{a} xfce4-power-manager{a} xfce4-power-manager-data{a} xfce4-screenshooter{a} 
  xfce4-settings{a} xfce4-taskmanager{a} xfce4-timer-plugin{a} xfce4-xkb-plugin{a} xfconf{a} xfonts-mathml{a} xinput{a} xli{a} 
  xorg-docs-core{a} xscreensaver{a} xscreensaver-data{a} xserver-common{a} xserver-xorg-video-nouveau{a} xulrunner-1.9.1{a} 
  xz-utils{a} 
Les paquets suivants seront ENLEVÉS : 
  bluez-utils{u} cpp-4.3{u} cupsddk-drivers{u} djvulibre-desktop{u} finger{u} gs-common{u} liba52-0.7.4{u} libamrnb3{u} 
  libamrwb3{u} libaudio2{u} libavahi-compat-libdnssd1{u} libavahi-core5{u} libavc1394-0{u} libavcodec51{u} libbind9-50{u} 
  libbluetooth2{u} libc-client2007b{u} libcap1{u} libcucul0{u} libcupsys2{u} libcurl3{u} libdatrie0{u} libdirac0{u} 
  libdjvulibre21{u} libfaad0{u} libfreebob0{u} libgail-common{u} libgraphviz4{u} libgtkhtml2-0{u} libicu38{u} libiec61883-0{u} 
  libisccc50{u} libisccfg50{u} libiw29{u} libjaxp1.3-java-gcj{u} libltdl3{u} liblwres50{u} libmagick10{u} libmodplug0c2{u} 
  libmozjs1d{u} libmpcdec3{u} libmpfr1ldbl{u} libmysqlclient15off{u} libneon27{u} libntfs-3g31{u} libossp-uuid15{u} 
  libparted1.8-10{u} libpoppler-glib3{u} libpoppler3{u} libqt3-mt{u} libraw1394-8{u} libsensors3{u} libservlet2.4-java{u} 
  libsmbios-bin{u} libsmbios2{u} libssh2-1{u} libsuitesparse-3.1.0{u} libswfdec-0.6-90{u} libtalloc1{u} libvolume-id0{u} 
  libx264-65{u} libxalan2-java{u} libxalan2-java-gcj{u} libxcb-xlib0{u} libxerces2-java{u} libxerces2-java-gcj{u} 
  libxfce4mcs-client3{u} libxfce4mcs-manager3{u} libxtrap6{u} libxxf86misc1{u} mysql-common{u} openoffice.org-writer2latex{u} 
  openssl-blacklist{u} postgresql-8.3{u} postgresql-client-8.3{u} postgresql-contrib-8.3{u} postgresql-doc-8.3{u} 
  python-gtkhtml2{u} python-numeric{u} svgalibg1{u} xfce4-icon-theme{u} xfce4-mcs-manager{u} xfce4-mcs-plugins{u} 
  xfce4-minicmd-plugin{u} xfce4-screenshooter-plugin{u} xserver-xorg-video-cyrix{u} xserver-xorg-video-v4l{u} 
  xserver-xorg-video-vga{u} xulrunner-1.9{u} 
Les paquets suivants seront mis à jour : 
  a2ps acpi acpi-support acpi-support-base acpid adduser alsa-base alsa-utils anacron analog apache2 apache2-doc 
  apache2-mpm-prefork apache2-utils apache2.2-common apmd aspell aspell-fr at avahi-autoipd avahi-daemon base-files 
  base-passwd bash bash-completion bc bind9 bind9-doc bind9-host bind9utils bluetooth bsd-mailx bsdmainutils bsdutils bsh 
  bsh-gcj busybox ca-certificates console-common console-data console-setup console-terminus console-tools coreutils cpio cpp 
  cpufrequtils cron cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk dbus dbus-x11 dc debconf debconf-i18n 
  debian-archive-keyring debian-faq debianutils deborphan defoma desktop-base desktop-file-utils dhcp3-client dhcp3-common 
  dialog dictionaries-common diff disk-manager dmidecode dmsetup dnsutils doc-debian docbook-xml dpkg e2fslibs e2fsprogs ed 
  eject esound-common exim4 exim4-base exim4-config exim4-daemon-light exo-utils fastjar file findutils fontconfig foo2zjs 
  foomatic-db-gutenprint foomatic-filters-ppds foomatic-gui fortune-mod fortunes-min ftp gcc-4.3-base gconf2 gconf2-common gdm 
  gettext-base ghostscript gimp gimp-data gksu gnome-keyring gnupg gparted gpgv grep groff-base grub grub-common gsfonts 
  gtk2-engines-xfce gzip hal hal-info hdparm hibernate hicolor-icon-theme hostname hpijs hplip hplip-data iamerican ibritish 
  iceweasel iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint info initramfs-tools initscripts installation-report iproute 
  iptables iputils-ping ispell java-common kerneloops klibc-utils laptop-detect less libaa1 libacl1 libapache2-mod-perl2 
  libapache2-mod-php5 libapache2-mod-python libapm1 libapr1 libaprutil1 libart-2.0-2 libasound2 libaspell15 libatk1.0-0 
  libattr1 libaudiofile0 libavahi-client3 libavahi-common-data libavahi-common3 libavahi-glib1 libavutil49 libbcel-java 
  libblkid1 libbonobo2-0 libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i386 libcaca0 
  libcairo-perl libcairo2 libcairomm-1.0-1 libcap2 libcomerr2 libconsole libcpufreq0 libcroco3 libcups2 libcupsimage2 
  libcurl3-gnutls libcwidget3 libdaemon0 libdb4.6 libdbus-1-3 libdbus-glib-1-2 libdevel-symdump-perl libdevmapper1.02.1 
  libdigest-hmac-perl libdigest-sha1-perl libdirectfb-extra libdmx1 libdrm2 libedit2 libesd0 libexif12 libexo-0.3-0 libexpat1 
  libfaac0 libfam0 libffi5 libflac8 libfontenc1 libfreetype6 libfs6 libgail18 libgc1c2 libgcc1 libgcj-bc libgcj-common 
  libgconf2-4 libgcrypt11 libgd2-noxpm libgdbm3 libgfortran3 libgimp2.0 libgksu2-0 libgl1-mesa-dri libgl1-mesa-glx libglade2-0 
  libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgmp3c2 libgnome-keyring0 libgnome2-0 libgnome2-canvas-perl 
  libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0 libgnomecanvas2-common libgnomeui-0 libgnomeui-common 
  libgnomevfs2-0 libgnomevfs2-common libgnomevfs2-extra libgnutls26 libgpg-error0 libgphoto2-2 libgphoto2-port0 libgpm2 libgs8 
  libgsf-1-114 libgsf-1-common libgsm1 libgssglue1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0 
  libgtk2.0-common libgtkmm-2.4-1c2a libgtop2-7 libgtop2-common libgutenprint2 libhal-storage1 libhal1 libhsqldb-java 
  libhsqldb-java-gcj libhtml-parser-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libice6 libidl0 libidn11 libieee1284-3 
  libijs-0.35 libilmbase6 libjack0 libjasper1 libjaxp1.3-java libjline-java libkeyutils1 libklibc libkrb53 liblcms1 
  libldap-2.4-2 liblocale-gettext-perl liblockfile1 liblog4j1.2-java liblzo2-2 libmad0 libmagic1 libmng1 libmp3lame0 
  libmx4j-java libncurses5 libncursesw5 libnet-dns-perl libnewt0.52 libnfsidmap2 libnotify1 libnspr4-0d libnss-mdns libnss3-1d 
  libogg0 liboil0.3 libopenexr6 liborbit2 libpam-modules libpam-runtime libpam0g libpango1.0-0 libpango1.0-common libpaper1 
  libpci3 libpcre3 libpcsclite1 libperl5.10 libpixman-1-0 libpng12-0 libpopt0 libpostproc51 libpq5 libpulse0 libreadline5 
  librecode0 libregexp-java librpcsecgss3 librsvg2-2 librsvg2-common libsane libsane-extras libsasl2-2 libschroedinger-1.0-0 
  libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsensors4 libsepol1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 
  libsmbclient libsnmp-base libsnmp15 libsocket6-perl libsoup2.4-1 libsqlite3-0 libss2 libssl0.9.8 libstartup-notification0 
  libstdc++6 libsvga1 libsysfs2 libtag1c2a libtagc0 libtasn1-3 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl 
  libthai-data libthai0 libtheora0 libthunar-vfs-1-2 libtiff4 libts-0.0-0 liburi-perl libusb-0.1-4 libuuid1 libvorbis0a 
  libvorbisenc2 libvte-common libvte9 libwavpack1 libwbclient0 libwmf0.2-7 libwpg-0.1-1 libwrap0 libwww-perl libx11-6 
  libx11-data libx86-1 libxau6 libxaw7 libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xv0 libxcb1 
  libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfce4util4 libxfcegui4-4 libxfixes3 libxfont1 libxft2 libxi6 
  libxine1 libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins libxine1-plugins libxine1-x libxinerama1 
  libxkbfile1 libxmu6 libxmuu1 libxpm4 libxrandr2 libxrender1 libxslt1.1 libxss1 libxt6 libxtst6 libxv1 libxvidcore4 libxvmc1 
  libxxf86dga1 libxxf86vm1 linux-image-2.6-amd64 linux-sound-base locales login logrotate lp-solve lsb-base lsof lvm2 lwresd 
  m4 mailagent makedev man-db manpages manpages-fr manpages-fr-extra mawk mc menu mime-support mktemp mlocate mlock 
  module-init-tools mount mousepad mutt myspell-en-us myspell-fr-gut nano ncurses-base ncurses-bin ncurses-term net-tools 
  netatalk netbase nfs-common nfs-kernel-server ntfs-3g nvclock openbsd-inetd openoffice.org openoffice.org-base 
  openoffice.org-base-core openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw 
  openoffice.org-filter-mobiledev openoffice.org-gcj openoffice.org-gtk openoffice.org-help-en-us openoffice.org-help-fr 
  openoffice.org-impress openoffice.org-java-common openoffice.org-l10n-fr openoffice.org-math openoffice.org-officebean 
  openoffice.org-report-builder-bin openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-thesaurus-en-us 
  openoffice.org-writer openprinting-ppds openssh-client openssh-server openssl orage passwd patch pciutils pcmciautils perl 
  perl-base perl-modules php5-common pm-utils popularity-contest portmap postgresql postgresql-client postgresql-client-common 
  postgresql-common postgresql-contrib postgresql-doc powermgmt-base powertop printconf procmail procps psmisc psutils python 
  python-cairo python-central python-dbus python-foomatic python-glade2 python-gnome2 python-gobject python-gtk2 
  python-imaging python-ipy python-minimal python-pyorbit python-support python2.5 python2.5-minimal qpopper radeontool 
  readline-common reportbug rsyslog sa-exim samba samba-common samba-doc sed sgml-base sgml-data shared-mime-info 
  smartmontools smbclient smbfs spamassassin spamc ssl-cert sudo swat swfdec-mozilla sysv-rc sysvinit sysvinit-utils tar 
  tasksel tasksel-data tcpd texinfo thunar thunar-data thunar-media-tags-plugin time toshset traceroute ttf-dejavu 
  ttf-dejavu-core ttf-dejavu-extra ttf-liberation ttf-opensymbol tzdata ucf udev update-inetd usbutils util-linux uw-imapd 
  vbetool vim-common vim-tiny w3m wamerican wfrench wget whiptail whois winbind wireless-tools wpasupplicant x11-apps 
  x11-common x11-session-utils x11-utils x11-xfs-utils x11-xkb-utils x11-xserver-utils xauth xbitmaps xdg-utils xfce4 
  xfce4-battery-plugin xfce4-clipman-plugin xfce4-cpufreq-plugin xfce4-cpugraph-plugin xfce4-diskperf-plugin 
  xfce4-fsguard-plugin xfce4-genmon-plugin xfce4-goodies xfce4-mailwatch-plugin xfce4-mixer xfce4-mount-plugin 
  xfce4-netload-plugin xfce4-notes-plugin xfce4-panel xfce4-quicklauncher-plugin xfce4-sensors-plugin xfce4-session 
  xfce4-smartbookmark-plugin xfce4-systemload-plugin xfce4-terminal xfce4-utils xfce4-verve-plugin xfce4-wavelan-plugin 
  xfce4-weather-plugin xfdesktop4 xfdesktop4-data xfonts-100dpi xfonts-75dpi xfonts-base xfonts-encodings xfonts-intl-european 
  xfonts-scalable xfonts-utils xfprint4 xfwm4 xinit xkb-data xml-core xorg xsane xsane-common xserver-xorg xserver-xorg-core 
  xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd xserver-xorg-input-mouse xserver-xorg-input-synaptics 
  xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati 
  xserver-xorg-video-chips xserver-xorg-video-cirrus xserver-xorg-video-dummy xserver-xorg-video-fbdev 
  xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-intel xserver-xorg-video-mach64 xserver-xorg-video-mga 
  xserver-xorg-video-neomagic xserver-xorg-video-nv xserver-xorg-video-openchrome xserver-xorg-video-r128 
  xserver-xorg-video-radeon xserver-xorg-video-radeonhd xserver-xorg-video-rendition xserver-xorg-video-s3 
  xserver-xorg-video-s3virge xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis 
  xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident xserver-xorg-video-tseng 
  xserver-xorg-video-vesa xserver-xorg-video-vmware xserver-xorg-video-voodoo xterm zlib1g 
Les paquets suivants sont RECOMMANDÉS mais ne seront pas installés :
  bzip2 gamin gcc gdm-themes hddtemp libapache2-reload-perl libatk1.0-data libatm1 libbsd-resource-perl libc6-dev libfribidi0 
  libglib2.0-data libgtk2.0-bin libhtml-format-perl libio-socket-inet6-perl liblog4j1.2-java-gcj libmail-spf-perl 
  libmailtools-perl libnss-lwres libpam-gnome-keyring libpaper-utils lm-sensors make nmap openoffice.org-emailmerge 
  openoffice.org-filter-binfilter pconf-detect rc re2c uuid-runtime wdiff xfwm4-themes xnest xserver-xephyr zenity 
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] 
&lt;/code&gt;

En fonction de votre connexion ça peut prendre très longtemps, et être interrompu (à 500KB/s une demi-heure à 50 KB/s c'est plusieurs heures...).
Un conseil, si vous n'êtes pas sûr de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

&lt;code&gt;
# aptitude -d safe-upgrade
...
 762Mo téléchargés en 1h9min37s (182ko/s)                                                          
Lecture des listes de paquets... Fait             
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait
&lt;/code&gt;

Puis

&lt;code&gt;
# aptitude safe-upgrade
...
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 0o/762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] y
&lt;/code&gt;

=== Déroulement ===

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut, mais prenez le temps de lire tous les messages, et si nécessaire, prenez des notes.

Sans le téléchargement des fichiers, comptez un peu plus d'une heure pour la mise à niveau.

[[Fichier:Snapshot4.jpeg]]

[[Fichier:Snapshot5.jpeg]]

[[Fichier:Snapshot6.jpeg]]

[[Fichier:Snapshot7.jpeg]]

[[Fichier:Snapshot9.jpeg]]

[[Fichier:Snapshot11.jpeg]]

[[Fichier:Snapshot13.jpeg]]

[[Fichier:Snapshot14.jpeg]]

[[Fichier:Snapshot15.jpeg]]

[[Fichier:Snapshot16.jpeg]]

[[Fichier:Snapshot17.jpeg]]

Vous partirez d'une Lenny configurée, et donc de nombreux fichiers de configuration auront été modifiés par vos soins.
Il est judicieux de ne pas écraser vos configurations avec les fichiers par défaut proposés par les &quot;mainteneurs&quot; des paquets.
Vous aurez tout le loisir de regarder les modifications proposées, et ce qu'elles apportent, en regardant dans /usr/share/doc ou dans les contenus de vos deb téléchargés (dans /var/apt/archives)

[[Fichier:Snapshot18.jpeg]]

=== finalisation ===

Le safe-upgrade devrait se terminer par ceci :

&lt;code&gt;
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 4 mises à jour restantes [-721].
&lt;/code&gt;

Vous pouvez maintenant lancer un &quot;full-upgrade&quot;

&lt;code&gt;
# aptitude full-upgrade

...

4 paquets mis à jour, 13 nouvellement installés, 2 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 12,1Mo d'archives. Après dépaquetage, 14,3Mo seront utilisés.
Les paquets suivants ont des dépendances non satisfaites :
  libept0: Dépend: libapt-pkg-libc6.7-6-4.6 qui est un paquet virtuel
Les actions suivantes permettront de résoudre ces dépendances :

Supprimer les paquets suivants :
libept0

Le score est de 115

Accepter cette solution ? [Y/n/q/?]y

...

Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 0 mise à jour restante [-4].
&lt;/code&gt;

Si tout s'est bien passé, il ne vous reste plus qu'a redémarrer la machine :

 # shutdown -r now

=== Grub2 ===

Si vous étiez sous Grub-legacy vous aurez certainement fait la bascule vers Grub2.

La première &quot;surprise&quot; qui vous attend donc (sauf si vous avez lu ce guide avant...) c'est le menu suivant :

[[Fichier:Snapshot19.jpeg]]

Si vous appuyez sur entrée, vous serez conduit vers le menu de Grub2.
Cette étape permet de vérifier que Grub2 est bien installé, et de le tester.

[[Fichier:Snapshot20.jpeg]]

Si cela fonctionne, une des premières choses à faire sera de confirmer l'installation de Grub2 en tapant dans une console la commande suivante :

 # upgrade-from-grub-legacy

=== LVM ===

Problème rencontré lors de la mise à niveau avec LVM...
Le système s'est mélangé les pédales dans l'attribution des partitions.
Résultat :

[[Fichier:Snapshot21.jpeg]]

Voici ou se situe le problème :

&lt;code&gt;
$ vdir /dev/l2s/
total 0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 home -&gt; ../dm-5
lrwxrwxrwx 1 root root 7 25 nov.  18:28 root -&gt; ../dm-0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 swap_1 -&gt; ../dm-1
lrwxrwxrwx 1 root root 7 25 nov.  18:28 tmp -&gt; ../dm-4
lrwxrwxrwx 1 root root 7 25 nov.  18:28 usr -&gt; ../dm-2
lrwxrwxrwx 1 root root 7 25 nov.  18:28 var -&gt; ../dm-3
&lt;/code&gt;
&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
# /dev/hda1	/boot	ext2	defaults	0	2
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-1	/usr	ext3	defaults	0	2
# /dev/hdb1	/var	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-3	none	swap	sw	0	0
# /dev/hdc	/media/cdrom0	udf,iso9660	user,noauto	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

Je ne sais pour quelle raison LVM à changé la numérotation des partitions... /usr est passé en dm-1 alors qu'il était en dm-2 et la swap en dm-3 alors qu'elle était être en dm-1
Il suffit de modifier le fichier /etc/fstab pour qu'il reflète à nouveau correctement vos partitions, et le tour est joué :

&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-2	/usr	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-1	none	swap	sw	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

== Bienvenu sur Squeeze ==

 laurent@lenny2squeeze:~$ uname -a
 Linux lenny2squeeze 2.6.32-5-amd64 #1 SMP Sat Oct 30 14:18:21 UTC 2010 x86_64 GNU/Linux

[[Fichier:Snapshot25.jpeg]]

A venir... Upgrade de Squeeze à ????

----
[[Utilisateur:Lol|Lol]] 25 novembre 2010 à 15:55 (EAT)
[[Catégorie:Installation]]</text>
      <sha1>3fv2t6rz9hl3lilq2i0saaz8ylo3ffc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2695</id>
      <parentid>2691</parentid>
      <timestamp>2011-02-09T05:54:11Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Lancez la mise à niveau */ Udev et Noyau</comment>
      <text xml:space="preserve" bytes="32467">{{sid}}

La mise à niveau de Lenny à Squeeze se précise, nous allons faire ici un rapide résumé des opérations nécessaires à la réussite de cette mise à niveau (upgrade).
LVM est installé sur la machine que nous allons mettre à niveau afin de tester le plus de possibilités.

Avant toute chose, je souhaite faire quelques précisions :
Chaque configuration est propre à chacun, en fonction de ses goûts, de son matériel et de ses connaissances.
Un guide universel n'existe donc pas.

Prévoyez aussi d'avoir du temps devant vous, et d'être au calme.

Nous choisirons d'utiliser aptitude au lieu de apt-get, il est en effet plus exigeant concernant les dépendances, votre mise à niveau sera plus &quot;propre&quot;.

J'ai choisi une Lenny avec toutes les options de tasksel activées afin de faire un tour d'horizon le plus vaste possible des problèmes qui pourraient survenir.
L'environnement graphique est Xfce.

[[Fichier:Snapshot3.jpeg]]

== Pré-requis ==

=== Une bonne sauvegarde ===

Vous n'avez AUCUNE garantie que la mise à niveau se passe bien, alors, quel que soit la méthode que vous emploierez, une sauvegarde est le minimum que vous puissiez faire avant de vous lancer dans l'aventure..

Avec dd, dump ou simplement cp SAUVEGARDEZ !

=== Un système à jour! ===

Le fichier sources.list précédent la mise à niveau :

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org stable main non-free
#deb-src http://www.debian-multimedia.org stable main non-free

# backports
deb http://backports.debian.org/debian-backports lenny-backports main contrib non-free
&lt;/code&gt;

 # aptitude update
 # aptitude safe-upgrade
 # aptitude full-upgrade

=== De l'espace! ===

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition où se trouve /var pour le stockage des paquets téléchargés.

Pour info une mise à jour &quot;lourde&quot; se soldera par le téléchargement d'environ 1Go...

Pour connaitre l’espace libre de votre partition racine :

 $ df -H
 Sys. de fich.          Tail.  Occ.  Disp. %Occ. Monté sur
 '''/dev/dm-0              338M   123M   198M  39% /'''
 tmpfs                  262M      0   262M   0% /lib/init/rw
 udev                    11M   689k   9,8M   7% /dev
 tmpfs                  262M      0   262M   0% /dev/shm
 /dev/hda1              239M    20M   207M   9% /boot
 /dev/dm-5              3,7G    75M   3,4G   3% /home
 /dev/dm-4              317M    11M   290M   4% /tmp
 /dev/dm-1              3,7G   1,7G   1,8G  50% /usr
 '''/dev/hdb1              5,3G   1,1G   4,0G  21% /var'''
 /dev/dm-2              1,8G   876M   818M  52% /media/dm-2

'''Si vous disposez de plus de 50% d’espace libre vous pouvez passer à l'étape suivante'''.

Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Si cela ne suffit toujours pas, il faut envisager d'ajouter un disque à votre système, ou de procéder à un upgrade par étapes successives (en mettant à jour les paquets progressivement et en nettoyant à chaque étape)

=== Les pilotes de la carte Graphique ===

Afin de ne pas avoir de mauvaise surprise avec le serveur X, modifiez votre xorg.conf afin d'utiliser des pilotes Debian.

Eventuellement utilisez les pilotes &quot;vesa&quot;

Dans votre fichier /etc/X11/xorg.conf

&lt;code&gt;
Section &quot;Device&quot;
    Identifier     &quot;Device0&quot;
    Driver         &quot;vesa&quot;
EndSection
&lt;/code&gt;

Si vous êtes sur de vous, n'en faites rien, mais prévoyez une réinstallation des pilotes avant le premier redémarrage.

=== Le fichier sources.list ===

Créons un nouveau sources.list que nous placerons dans /etc/apt/sources.list.d
Nous prenons dores et déjà la bonne habitude d'utiliser ce dossier qui est devenu celui par défaut pour mettre les fichiers contenant les dépôts.

 # nano /etc/apt/sources.list.d/sources.list

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free

# stable security
deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

## stable volatile
## Le dépôt volatile à changé, il est désormais sous &quot;squeeze-updates&quot;
deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib

# stable multimedia
deb http://www.debian-multimedia.org squeeze main non-free
#deb-src http://www.debian-multimedia.org squeeze main non-free

# backports
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
&lt;/code&gt;

== Préparation de la mise à niveau ==

Maintenant que nous sommes prêts, nous pouvons lancer l'upgrade :

Mise à jour de la liste des paquets :

 # aptitude update

=== Si vous avez des problèmes de clefs ===

 W: GPG error: http://www.debian-multimedia.org

 # aptitude install debian-backports-keyring
 # aptitude install debian-multimedia-keyring

=== Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]] ===

 E: Dynamic MMap ran out of room

 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaite l'update, il ne doit pas y avoir d'erreurs

 # aptitude update

=== Problèmes de dépendances ===

Vous ne pourrez pas faire le passage de Lenny à Squeeze tant que subsisteront des problèmes de dépendances...

Voici deux exemples de problèmes de dépendances, et la manière de les régler :

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  xfce4-mixer-oss: Est en conflit avec: xfce4-mixer-alsa mais 4.4.2-3 est installé.
  foomatic-db: Est en conflit avec: foomatic-db-hpijs mais 20080211-1 est installé.
  xfce4-mixer-alsa: Est en conflit avec: xfce4-mixer-oss mais 4.4.2-3 doit être installé.

# aptitude install foomatic-db xfce4-mixer-alsa
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Lecture des descriptions de tâches... Fait  
Les NOUVEAUX paquets suivants vont être installés : 
  libopenjpeg2{a} libpoppler5{a} min12xxw{a} pnm2ppa{a} 
Les paquets suivants seront ENLEVÉS : 
  foomatic-db-hpijs{a} 
Les paquets suivants seront mis à jour : 
  fontconfig-config foomatic-db foomatic-db-engine foomatic-filters libfontconfig1 libjpeg62 libxml2 poppler-utils 
8 paquets mis à jour, 4 nouvellement installés, 1 à enlever et 728 non mis à jour.
Il est nécessaire de télécharger 4722ko d'archives. Après dépaquetage, 18,2Mo seront libérés.
Voulez-vous continuer ? [Y/n/?] o
...
État actuel : 728 mises à jour restantes [-8].
&lt;/code&gt;

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  libatlas3gf-base: Est en conflit avec: libblas3gf (&lt; 1.2-5) mais 1.2-2 est installé et a été conservé
                    Est en conflit avec: liblapack3gf (&lt; 3.2.1-4) mais 3.1.1-1 est installé et a été conservé
  rarian-compat: Est en conflit avec: scrollkeeper (&lt; 0.4) mais 0.3.14-16 est installé et a été conservé

# aptitude install libatlas3gf-base scrollkeeper
...
Les actions suivantes permettront de résoudre ces dépendances :

Mettre à jour les paquets suivants :
libblas3gf [1.2-2 (stable, now) -&gt; 1.2-8 (testing)]
liblapack3gf [3.1.1-1 (stable, now) -&gt; 3.2.1-8 (testing)]

Le score est de 70

Accepter cette solution ? [Y/n/q/?] y
...
État actuel : 725 mises à jour restantes [-3].
&lt;/code&gt;

En cas de doute n'hésitez pas à demander un avis [http://forum.debian-fr.org/ sur le forum]

=== stopper le serveur X ===

'''IMPORTANT''' : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

Si vous faites votre mise à niveau avec le serveur X lancé, vous risquez [http://www.debian-fr.org/upgrade-lenny-squeeze-gnome-minimaliste-t30744.html cette mésaventure]

== Lancez la mise à niveau ==

'''Attention''', Debian recommande désormais d'utiliser apt-get à la place de aptitude pour la mise à niveau : http://www.debian.org/releases/squeeze/i386/release-notes/ch-upgrading.en.html#upgradingpackages

Ce tuto ayant été réalisé avant cette préconisation, il n'est pas à jour concernant ce point précis.

=== A propos de Udev et du Noyau ===

Il est TRèS fortement recommandé de mettre à jour le noyau et udev avant de se lancer dans la mise à niveau. En effet, le noyau Lenny est incompatible avec la version de udev qui se trouve dans squeeze.

# apt-get install linux-image-2.6 (ou linux-image-2.6-amd64)
# apt-get install udev

Vous devez maintenant redémarrer le système pour être sur le noyau Squeeze (2.6.32)
Vous pouvez maintenant lancer la mise à niveau :

=== Mise à niveau ===

&lt;code&gt;
# aptitude safe-upgrade
...
Les paquets suivants ont été conservés : 
  apt apt-utils aptitude synaptic 
Les NOUVEAUX paquets suivants vont être installés : 
  acpi-fakekey{a} apache2.2-bin{a} aumix{a} aumix-common{a} bluez{a} bluez-alsa{a} bluez-cups{a} bluez-gstreamer{a} 
  browser-plugin-gnash{a} cifs-utils{a} consolekit{a} cpp-4.4{a} cracklib-runtime{a} cups-ppdc{a} dash{a} db4.8-util{a} 
  diffutils{a} dosfstools{a} firmware-linux-free{a} freepats{a} fuse-utils{a} gcc-4.4-base{a} gcj-4.4-base{a} 
  gcj-4.4-jre-lib{a} geoip-database{a} ghostscript-cups{a} gnash{a} gnash-common{a} gnupg-curl{a} grub-pc{a} 
  gstreamer0.10-ffmpeg{a} gstreamer0.10-fluendo-mp3{a} gstreamer0.10-plugins-bad{a} gstreamer0.10-plugins-base{a} gvfs{a} 
  hplip-cups{a} insserv{a} install-info{a} isc-dhcp-client{a} isc-dhcp-common{a} iso-codes{a} keyboard-configuration{a} 
  libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libass4{a} libatasmart4{a} libaudit0{a} libavahi-core7{a} libavcodec52{a} 
  libavformat52{a} libavutil50{a} libbabl-0.0-0{a} libbind9-60{a} libbluetooth3{a} libboost-date-time1.42.0{a} 
  libboost-thread1.42.0{a} libbsd0{a} libburn4{a} libc-bin{a} libc-client2007e{a} libcap-ng0{a} libcdaudio1{a} libcdio10{a} 
  libcdparanoia0{a} libcelt0-0{a} libck-connector0{a} libcolamd2.7.1{a} libcommons-beanutils-java{a} 
  libcommons-collections3-java{a} libcommons-compress-java{a} libcommons-digester-java{a} libcommons-logging-java{a} 
  libcrack2{a} libcupscgi1{a} libcupsdriver1{a} libcupsmime1{a} libcupsppdc1{a} libdatrie1{a} libdb-je-java{a} libdb4.7{a} 
  libdb4.7-java{a} libdb4.7-java-gcj{a} libdb4.8{a} libdc1394-22{a} libdca0{a} libdirac-encoder0{a} libdirectfb-1.2-9{a} 
  libdns66{a} libdrm-intel1{a} libdrm-nouveau1{a} libdrm-radeon1{a} libdvdnav4{a} libdvdread4{a} libeggdbus-1-0{a} libenca0{a} 
  libenchant1c2a{a} libevent-1.4-2{a} libexempi3{a} libexo-common{a} libfaad2{a} libfftw3-3{a} libfile-copy-recursive-perl{a} 
  libflite1{a} libfont-freetype-perl{a} libfuse2{a} libgcj10{a} libgcr0{a} libgdu0{a} libgegl-0.0-0{a} libgeoip1{a} libgif4{a} 
  libgme0{a} libgomp1{a} libgp11-0{a} libgpgme11{a} libgraphicsmagick3{a} libgraphite3{a} libgssapi-krb5-2{a} libgtkglext1{a} 
  libgudev-1.0-0{a} libhpmud0{a} libicu44{a} libicu4j-java{a} libiptcdata0{a} libisc60{a} libisccc60{a} libisccfg60{a} 
  libiso9660-7{a} libisofs6{a} libiw30{a} libjbig2dec0{a} libjpeg-progs{a} libjpeg8{a} libjtidy-java{a} libk5crypto3{a} 
  libkate1{a} libkrb5-3{a} libkrb5support0{a} libltdl7{a} liblucene2-java{a} liblwres60{a} liblzma2{a} libmimic0{a} libmms0{a} 
  libmodplug1{a} libmozjs2d{a} libmpcdec6{a} libmpfr4{a} libmusicbrainz4c2a{a} libmythes-1.2-0{a} libneon27-gnutls{a} 
  libnetaddr-ip-perl{a} libnfnetlink0{a} libnl1{a} libntfs-3g75{a} libntfs10{a} libofa0{a} libonig2{a} libopencore-amrnb0{a} 
  libopencore-amrwb0{a} libopenraw1{a} liborc-0.4-0{a} libossp-uuid16{a} libpam-ck-connector{a} libpam-cracklib{a} 
  libpango-perl{a} libpangomm-1.4-1{a} libparted0debian1{a} libpciaccess0{a} libpolkit-agent-1-0{a} libpolkit-backend-1-0{a} 
  libpolkit-gobject-1-0{a} libpoppler-glib4{a} libpth20{a} libpython2.6{a} libqdbm14{a} libraptor1{a} librasqal2{a} 
  libraw1394-11{a} librdf0{a} libreadline6{a} librtmp0{a} libsane-hpaio{a} libsasl2-modules{a} libservlet2.5-java{a} 
  libsexy2{a} libsgutils2-2{a} libslv2-9{a} libsndfile1{a} libsoundtouch1c2{a} libswscale0{a} libtag1-vanilla{a} libtalloc2{a} 
  libtextcat-data-utf8{a} libtokyocabinet8{a} libudev0{a} libunique-1.0-0{a} libusb-1.0-0{a} libutempter0{a} libuuid-perl{a} 
  libv4l-0{a} libva1{a} libvcdinfo0{a} libvisual-0.4-0{a} libvisual-0.4-plugins{a} libvpx0{a} libwebkit-1.0-2{a} 
  libwebkit-1.0-common{a} libwildmidi1{a} libwnck-common{a} libwnck22{a} libx11-xcb1{a} libx264-104{a} libxcb-atom1{a} 
  libxcb-aux0{a} libxcb-dri2-0{a} libxcb-event1{a} libxfce4menu-0.1-0{a} libxfce4util-bin{a} libxfce4util-common{a} 
  libxfconf-0-2{a} libxklavier16{a} libxml-parser-perl{a} libxres1{a} libzbar0{a} linux-base{a} linux-image-2.6.32-5-amd64{a} 
  lockfile-progs{a} lsb-release{a} mtools{a} ntfsprogs{a} os-prober{a} oss-compat{a} php5-cli{a} php5-suhosin{a} 
  policykit-1{a} policykit-1-gnome{a} postgresql-8.4{a} postgresql-client-8.4{a} postgresql-contrib-8.4{a} 
  postgresql-doc-8.4{a} python-cups{a} python-gconf{a} python-numpy{a} python-pexpect{a} python-reportbug{a} python-webkit{a} 
  python2.6{a} python2.6-minimal{a} ristretto{a} samba-common-bin{a} sane-utils{a} sensible-utils{a} squeeze{a} 
  tango-icon-theme{a} thunar-archive-plugin{a} thunar-volman{a} tsconf{a} ttf-freefont{a} ttf-lyx{a} ttf-sil-gentium{a} 
  ttf-sil-gentium-basic{a} udisks{a} uno-libs3{a} unzip{a} ure{a} x-ttcidfont-conf{a} xdg-user-dirs{a} xfburn{a} 
  xfce-keyboard-shortcuts{a} xfce4-appfinder{a} xfce4-clipman{a} xfce4-datetime-plugin{a} xfce4-dict{a} xfce4-notes{a} 
  xfce4-notifyd{a} xfce4-places-plugin{a} xfce4-power-manager{a} xfce4-power-manager-data{a} xfce4-screenshooter{a} 
  xfce4-settings{a} xfce4-taskmanager{a} xfce4-timer-plugin{a} xfce4-xkb-plugin{a} xfconf{a} xfonts-mathml{a} xinput{a} xli{a} 
  xorg-docs-core{a} xscreensaver{a} xscreensaver-data{a} xserver-common{a} xserver-xorg-video-nouveau{a} xulrunner-1.9.1{a} 
  xz-utils{a} 
Les paquets suivants seront ENLEVÉS : 
  bluez-utils{u} cpp-4.3{u} cupsddk-drivers{u} djvulibre-desktop{u} finger{u} gs-common{u} liba52-0.7.4{u} libamrnb3{u} 
  libamrwb3{u} libaudio2{u} libavahi-compat-libdnssd1{u} libavahi-core5{u} libavc1394-0{u} libavcodec51{u} libbind9-50{u} 
  libbluetooth2{u} libc-client2007b{u} libcap1{u} libcucul0{u} libcupsys2{u} libcurl3{u} libdatrie0{u} libdirac0{u} 
  libdjvulibre21{u} libfaad0{u} libfreebob0{u} libgail-common{u} libgraphviz4{u} libgtkhtml2-0{u} libicu38{u} libiec61883-0{u} 
  libisccc50{u} libisccfg50{u} libiw29{u} libjaxp1.3-java-gcj{u} libltdl3{u} liblwres50{u} libmagick10{u} libmodplug0c2{u} 
  libmozjs1d{u} libmpcdec3{u} libmpfr1ldbl{u} libmysqlclient15off{u} libneon27{u} libntfs-3g31{u} libossp-uuid15{u} 
  libparted1.8-10{u} libpoppler-glib3{u} libpoppler3{u} libqt3-mt{u} libraw1394-8{u} libsensors3{u} libservlet2.4-java{u} 
  libsmbios-bin{u} libsmbios2{u} libssh2-1{u} libsuitesparse-3.1.0{u} libswfdec-0.6-90{u} libtalloc1{u} libvolume-id0{u} 
  libx264-65{u} libxalan2-java{u} libxalan2-java-gcj{u} libxcb-xlib0{u} libxerces2-java{u} libxerces2-java-gcj{u} 
  libxfce4mcs-client3{u} libxfce4mcs-manager3{u} libxtrap6{u} libxxf86misc1{u} mysql-common{u} openoffice.org-writer2latex{u} 
  openssl-blacklist{u} postgresql-8.3{u} postgresql-client-8.3{u} postgresql-contrib-8.3{u} postgresql-doc-8.3{u} 
  python-gtkhtml2{u} python-numeric{u} svgalibg1{u} xfce4-icon-theme{u} xfce4-mcs-manager{u} xfce4-mcs-plugins{u} 
  xfce4-minicmd-plugin{u} xfce4-screenshooter-plugin{u} xserver-xorg-video-cyrix{u} xserver-xorg-video-v4l{u} 
  xserver-xorg-video-vga{u} xulrunner-1.9{u} 
Les paquets suivants seront mis à jour : 
  a2ps acpi acpi-support acpi-support-base acpid adduser alsa-base alsa-utils anacron analog apache2 apache2-doc 
  apache2-mpm-prefork apache2-utils apache2.2-common apmd aspell aspell-fr at avahi-autoipd avahi-daemon base-files 
  base-passwd bash bash-completion bc bind9 bind9-doc bind9-host bind9utils bluetooth bsd-mailx bsdmainutils bsdutils bsh 
  bsh-gcj busybox ca-certificates console-common console-data console-setup console-terminus console-tools coreutils cpio cpp 
  cpufrequtils cron cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk dbus dbus-x11 dc debconf debconf-i18n 
  debian-archive-keyring debian-faq debianutils deborphan defoma desktop-base desktop-file-utils dhcp3-client dhcp3-common 
  dialog dictionaries-common diff disk-manager dmidecode dmsetup dnsutils doc-debian docbook-xml dpkg e2fslibs e2fsprogs ed 
  eject esound-common exim4 exim4-base exim4-config exim4-daemon-light exo-utils fastjar file findutils fontconfig foo2zjs 
  foomatic-db-gutenprint foomatic-filters-ppds foomatic-gui fortune-mod fortunes-min ftp gcc-4.3-base gconf2 gconf2-common gdm 
  gettext-base ghostscript gimp gimp-data gksu gnome-keyring gnupg gparted gpgv grep groff-base grub grub-common gsfonts 
  gtk2-engines-xfce gzip hal hal-info hdparm hibernate hicolor-icon-theme hostname hpijs hplip hplip-data iamerican ibritish 
  iceweasel iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint info initramfs-tools initscripts installation-report iproute 
  iptables iputils-ping ispell java-common kerneloops klibc-utils laptop-detect less libaa1 libacl1 libapache2-mod-perl2 
  libapache2-mod-php5 libapache2-mod-python libapm1 libapr1 libaprutil1 libart-2.0-2 libasound2 libaspell15 libatk1.0-0 
  libattr1 libaudiofile0 libavahi-client3 libavahi-common-data libavahi-common3 libavahi-glib1 libavutil49 libbcel-java 
  libblkid1 libbonobo2-0 libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i386 libcaca0 
  libcairo-perl libcairo2 libcairomm-1.0-1 libcap2 libcomerr2 libconsole libcpufreq0 libcroco3 libcups2 libcupsimage2 
  libcurl3-gnutls libcwidget3 libdaemon0 libdb4.6 libdbus-1-3 libdbus-glib-1-2 libdevel-symdump-perl libdevmapper1.02.1 
  libdigest-hmac-perl libdigest-sha1-perl libdirectfb-extra libdmx1 libdrm2 libedit2 libesd0 libexif12 libexo-0.3-0 libexpat1 
  libfaac0 libfam0 libffi5 libflac8 libfontenc1 libfreetype6 libfs6 libgail18 libgc1c2 libgcc1 libgcj-bc libgcj-common 
  libgconf2-4 libgcrypt11 libgd2-noxpm libgdbm3 libgfortran3 libgimp2.0 libgksu2-0 libgl1-mesa-dri libgl1-mesa-glx libglade2-0 
  libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgmp3c2 libgnome-keyring0 libgnome2-0 libgnome2-canvas-perl 
  libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0 libgnomecanvas2-common libgnomeui-0 libgnomeui-common 
  libgnomevfs2-0 libgnomevfs2-common libgnomevfs2-extra libgnutls26 libgpg-error0 libgphoto2-2 libgphoto2-port0 libgpm2 libgs8 
  libgsf-1-114 libgsf-1-common libgsm1 libgssglue1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0 
  libgtk2.0-common libgtkmm-2.4-1c2a libgtop2-7 libgtop2-common libgutenprint2 libhal-storage1 libhal1 libhsqldb-java 
  libhsqldb-java-gcj libhtml-parser-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libice6 libidl0 libidn11 libieee1284-3 
  libijs-0.35 libilmbase6 libjack0 libjasper1 libjaxp1.3-java libjline-java libkeyutils1 libklibc libkrb53 liblcms1 
  libldap-2.4-2 liblocale-gettext-perl liblockfile1 liblog4j1.2-java liblzo2-2 libmad0 libmagic1 libmng1 libmp3lame0 
  libmx4j-java libncurses5 libncursesw5 libnet-dns-perl libnewt0.52 libnfsidmap2 libnotify1 libnspr4-0d libnss-mdns libnss3-1d 
  libogg0 liboil0.3 libopenexr6 liborbit2 libpam-modules libpam-runtime libpam0g libpango1.0-0 libpango1.0-common libpaper1 
  libpci3 libpcre3 libpcsclite1 libperl5.10 libpixman-1-0 libpng12-0 libpopt0 libpostproc51 libpq5 libpulse0 libreadline5 
  librecode0 libregexp-java librpcsecgss3 librsvg2-2 librsvg2-common libsane libsane-extras libsasl2-2 libschroedinger-1.0-0 
  libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsensors4 libsepol1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 
  libsmbclient libsnmp-base libsnmp15 libsocket6-perl libsoup2.4-1 libsqlite3-0 libss2 libssl0.9.8 libstartup-notification0 
  libstdc++6 libsvga1 libsysfs2 libtag1c2a libtagc0 libtasn1-3 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl 
  libthai-data libthai0 libtheora0 libthunar-vfs-1-2 libtiff4 libts-0.0-0 liburi-perl libusb-0.1-4 libuuid1 libvorbis0a 
  libvorbisenc2 libvte-common libvte9 libwavpack1 libwbclient0 libwmf0.2-7 libwpg-0.1-1 libwrap0 libwww-perl libx11-6 
  libx11-data libx86-1 libxau6 libxaw7 libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xv0 libxcb1 
  libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfce4util4 libxfcegui4-4 libxfixes3 libxfont1 libxft2 libxi6 
  libxine1 libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins libxine1-plugins libxine1-x libxinerama1 
  libxkbfile1 libxmu6 libxmuu1 libxpm4 libxrandr2 libxrender1 libxslt1.1 libxss1 libxt6 libxtst6 libxv1 libxvidcore4 libxvmc1 
  libxxf86dga1 libxxf86vm1 linux-image-2.6-amd64 linux-sound-base locales login logrotate lp-solve lsb-base lsof lvm2 lwresd 
  m4 mailagent makedev man-db manpages manpages-fr manpages-fr-extra mawk mc menu mime-support mktemp mlocate mlock 
  module-init-tools mount mousepad mutt myspell-en-us myspell-fr-gut nano ncurses-base ncurses-bin ncurses-term net-tools 
  netatalk netbase nfs-common nfs-kernel-server ntfs-3g nvclock openbsd-inetd openoffice.org openoffice.org-base 
  openoffice.org-base-core openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw 
  openoffice.org-filter-mobiledev openoffice.org-gcj openoffice.org-gtk openoffice.org-help-en-us openoffice.org-help-fr 
  openoffice.org-impress openoffice.org-java-common openoffice.org-l10n-fr openoffice.org-math openoffice.org-officebean 
  openoffice.org-report-builder-bin openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-thesaurus-en-us 
  openoffice.org-writer openprinting-ppds openssh-client openssh-server openssl orage passwd patch pciutils pcmciautils perl 
  perl-base perl-modules php5-common pm-utils popularity-contest portmap postgresql postgresql-client postgresql-client-common 
  postgresql-common postgresql-contrib postgresql-doc powermgmt-base powertop printconf procmail procps psmisc psutils python 
  python-cairo python-central python-dbus python-foomatic python-glade2 python-gnome2 python-gobject python-gtk2 
  python-imaging python-ipy python-minimal python-pyorbit python-support python2.5 python2.5-minimal qpopper radeontool 
  readline-common reportbug rsyslog sa-exim samba samba-common samba-doc sed sgml-base sgml-data shared-mime-info 
  smartmontools smbclient smbfs spamassassin spamc ssl-cert sudo swat swfdec-mozilla sysv-rc sysvinit sysvinit-utils tar 
  tasksel tasksel-data tcpd texinfo thunar thunar-data thunar-media-tags-plugin time toshset traceroute ttf-dejavu 
  ttf-dejavu-core ttf-dejavu-extra ttf-liberation ttf-opensymbol tzdata ucf udev update-inetd usbutils util-linux uw-imapd 
  vbetool vim-common vim-tiny w3m wamerican wfrench wget whiptail whois winbind wireless-tools wpasupplicant x11-apps 
  x11-common x11-session-utils x11-utils x11-xfs-utils x11-xkb-utils x11-xserver-utils xauth xbitmaps xdg-utils xfce4 
  xfce4-battery-plugin xfce4-clipman-plugin xfce4-cpufreq-plugin xfce4-cpugraph-plugin xfce4-diskperf-plugin 
  xfce4-fsguard-plugin xfce4-genmon-plugin xfce4-goodies xfce4-mailwatch-plugin xfce4-mixer xfce4-mount-plugin 
  xfce4-netload-plugin xfce4-notes-plugin xfce4-panel xfce4-quicklauncher-plugin xfce4-sensors-plugin xfce4-session 
  xfce4-smartbookmark-plugin xfce4-systemload-plugin xfce4-terminal xfce4-utils xfce4-verve-plugin xfce4-wavelan-plugin 
  xfce4-weather-plugin xfdesktop4 xfdesktop4-data xfonts-100dpi xfonts-75dpi xfonts-base xfonts-encodings xfonts-intl-european 
  xfonts-scalable xfonts-utils xfprint4 xfwm4 xinit xkb-data xml-core xorg xsane xsane-common xserver-xorg xserver-xorg-core 
  xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd xserver-xorg-input-mouse xserver-xorg-input-synaptics 
  xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati 
  xserver-xorg-video-chips xserver-xorg-video-cirrus xserver-xorg-video-dummy xserver-xorg-video-fbdev 
  xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-intel xserver-xorg-video-mach64 xserver-xorg-video-mga 
  xserver-xorg-video-neomagic xserver-xorg-video-nv xserver-xorg-video-openchrome xserver-xorg-video-r128 
  xserver-xorg-video-radeon xserver-xorg-video-radeonhd xserver-xorg-video-rendition xserver-xorg-video-s3 
  xserver-xorg-video-s3virge xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis 
  xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident xserver-xorg-video-tseng 
  xserver-xorg-video-vesa xserver-xorg-video-vmware xserver-xorg-video-voodoo xterm zlib1g 
Les paquets suivants sont RECOMMANDÉS mais ne seront pas installés :
  bzip2 gamin gcc gdm-themes hddtemp libapache2-reload-perl libatk1.0-data libatm1 libbsd-resource-perl libc6-dev libfribidi0 
  libglib2.0-data libgtk2.0-bin libhtml-format-perl libio-socket-inet6-perl liblog4j1.2-java-gcj libmail-spf-perl 
  libmailtools-perl libnss-lwres libpam-gnome-keyring libpaper-utils lm-sensors make nmap openoffice.org-emailmerge 
  openoffice.org-filter-binfilter pconf-detect rc re2c uuid-runtime wdiff xfwm4-themes xnest xserver-xephyr zenity 
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] 
&lt;/code&gt;

En fonction de votre connexion ça peut prendre très longtemps, et être interrompu (à 500KB/s une demi-heure à 50 KB/s c'est plusieurs heures...).
Un conseil, si vous n'êtes pas sûr de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

&lt;code&gt;
# aptitude -d safe-upgrade
...
 762Mo téléchargés en 1h9min37s (182ko/s)                                                          
Lecture des listes de paquets... Fait             
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait
&lt;/code&gt;

Puis

&lt;code&gt;
# aptitude safe-upgrade
...
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 0o/762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] y
&lt;/code&gt;

=== Déroulement ===

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut, mais prenez le temps de lire tous les messages, et si nécessaire, prenez des notes.

Sans le téléchargement des fichiers, comptez un peu plus d'une heure pour la mise à niveau.

[[Fichier:Snapshot4.jpeg]]

[[Fichier:Snapshot5.jpeg]]

[[Fichier:Snapshot6.jpeg]]

[[Fichier:Snapshot7.jpeg]]

[[Fichier:Snapshot9.jpeg]]

[[Fichier:Snapshot11.jpeg]]

[[Fichier:Snapshot13.jpeg]]

[[Fichier:Snapshot14.jpeg]]

[[Fichier:Snapshot15.jpeg]]

[[Fichier:Snapshot16.jpeg]]

[[Fichier:Snapshot17.jpeg]]

Vous partirez d'une Lenny configurée, et donc de nombreux fichiers de configuration auront été modifiés par vos soins.
Il est judicieux de ne pas écraser vos configurations avec les fichiers par défaut proposés par les &quot;mainteneurs&quot; des paquets.
Vous aurez tout le loisir de regarder les modifications proposées, et ce qu'elles apportent, en regardant dans /usr/share/doc ou dans les contenus de vos deb téléchargés (dans /var/apt/archives)

[[Fichier:Snapshot18.jpeg]]

=== finalisation ===

Le safe-upgrade devrait se terminer par ceci :

&lt;code&gt;
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 4 mises à jour restantes [-721].
&lt;/code&gt;

Vous pouvez maintenant lancer un &quot;full-upgrade&quot;

&lt;code&gt;
# aptitude full-upgrade

...

4 paquets mis à jour, 13 nouvellement installés, 2 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 12,1Mo d'archives. Après dépaquetage, 14,3Mo seront utilisés.
Les paquets suivants ont des dépendances non satisfaites :
  libept0: Dépend: libapt-pkg-libc6.7-6-4.6 qui est un paquet virtuel
Les actions suivantes permettront de résoudre ces dépendances :

Supprimer les paquets suivants :
libept0

Le score est de 115

Accepter cette solution ? [Y/n/q/?]y

...

Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 0 mise à jour restante [-4].
&lt;/code&gt;

Si tout s'est bien passé, il ne vous reste plus qu'a redémarrer la machine :

 # shutdown -r now

=== Grub2 ===

Si vous étiez sous Grub-legacy vous aurez certainement fait la bascule vers Grub2.

La première &quot;surprise&quot; qui vous attend donc (sauf si vous avez lu ce guide avant...) c'est le menu suivant :

[[Fichier:Snapshot19.jpeg]]

Si vous appuyez sur entrée, vous serez conduit vers le menu de Grub2.
Cette étape permet de vérifier que Grub2 est bien installé, et de le tester.

[[Fichier:Snapshot20.jpeg]]

Si cela fonctionne, une des premières choses à faire sera de confirmer l'installation de Grub2 en tapant dans une console la commande suivante :

 # upgrade-from-grub-legacy

=== LVM ===

Problème rencontré lors de la mise à niveau avec LVM...
Le système s'est mélangé les pédales dans l'attribution des partitions.
Résultat :

[[Fichier:Snapshot21.jpeg]]

Voici ou se situe le problème :

&lt;code&gt;
$ vdir /dev/l2s/
total 0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 home -&gt; ../dm-5
lrwxrwxrwx 1 root root 7 25 nov.  18:28 root -&gt; ../dm-0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 swap_1 -&gt; ../dm-1
lrwxrwxrwx 1 root root 7 25 nov.  18:28 tmp -&gt; ../dm-4
lrwxrwxrwx 1 root root 7 25 nov.  18:28 usr -&gt; ../dm-2
lrwxrwxrwx 1 root root 7 25 nov.  18:28 var -&gt; ../dm-3
&lt;/code&gt;
&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
# /dev/hda1	/boot	ext2	defaults	0	2
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-1	/usr	ext3	defaults	0	2
# /dev/hdb1	/var	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-3	none	swap	sw	0	0
# /dev/hdc	/media/cdrom0	udf,iso9660	user,noauto	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

Je ne sais pour quelle raison LVM à changé la numérotation des partitions... /usr est passé en dm-1 alors qu'il était en dm-2 et la swap en dm-3 alors qu'elle était être en dm-1
Il suffit de modifier le fichier /etc/fstab pour qu'il reflète à nouveau correctement vos partitions, et le tour est joué :

&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-2	/usr	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-1	none	swap	sw	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

== Bienvenu sur Squeeze ==

 laurent@lenny2squeeze:~$ uname -a
 Linux lenny2squeeze 2.6.32-5-amd64 #1 SMP Sat Oct 30 14:18:21 UTC 2010 x86_64 GNU/Linux

[[Fichier:Snapshot25.jpeg]]

A venir... Upgrade de Squeeze à ????

----
[[Utilisateur:Lol|Lol]] 25 novembre 2010 à 15:55 (EAT)
[[Catégorie:Installation]]</text>
      <sha1>bvyh56r3kvzvepmz9d5lc15zoc53pj5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2696</id>
      <parentid>2695</parentid>
      <timestamp>2011-02-09T05:54:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* A propos de Udev et du Noyau */</comment>
      <text xml:space="preserve" bytes="32469">{{sid}}

La mise à niveau de Lenny à Squeeze se précise, nous allons faire ici un rapide résumé des opérations nécessaires à la réussite de cette mise à niveau (upgrade).
LVM est installé sur la machine que nous allons mettre à niveau afin de tester le plus de possibilités.

Avant toute chose, je souhaite faire quelques précisions :
Chaque configuration est propre à chacun, en fonction de ses goûts, de son matériel et de ses connaissances.
Un guide universel n'existe donc pas.

Prévoyez aussi d'avoir du temps devant vous, et d'être au calme.

Nous choisirons d'utiliser aptitude au lieu de apt-get, il est en effet plus exigeant concernant les dépendances, votre mise à niveau sera plus &quot;propre&quot;.

J'ai choisi une Lenny avec toutes les options de tasksel activées afin de faire un tour d'horizon le plus vaste possible des problèmes qui pourraient survenir.
L'environnement graphique est Xfce.

[[Fichier:Snapshot3.jpeg]]

== Pré-requis ==

=== Une bonne sauvegarde ===

Vous n'avez AUCUNE garantie que la mise à niveau se passe bien, alors, quel que soit la méthode que vous emploierez, une sauvegarde est le minimum que vous puissiez faire avant de vous lancer dans l'aventure..

Avec dd, dump ou simplement cp SAUVEGARDEZ !

=== Un système à jour! ===

Le fichier sources.list précédent la mise à niveau :

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org stable main non-free
#deb-src http://www.debian-multimedia.org stable main non-free

# backports
deb http://backports.debian.org/debian-backports lenny-backports main contrib non-free
&lt;/code&gt;

 # aptitude update
 # aptitude safe-upgrade
 # aptitude full-upgrade

=== De l'espace! ===

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition où se trouve /var pour le stockage des paquets téléchargés.

Pour info une mise à jour &quot;lourde&quot; se soldera par le téléchargement d'environ 1Go...

Pour connaitre l’espace libre de votre partition racine :

 $ df -H
 Sys. de fich.          Tail.  Occ.  Disp. %Occ. Monté sur
 '''/dev/dm-0              338M   123M   198M  39% /'''
 tmpfs                  262M      0   262M   0% /lib/init/rw
 udev                    11M   689k   9,8M   7% /dev
 tmpfs                  262M      0   262M   0% /dev/shm
 /dev/hda1              239M    20M   207M   9% /boot
 /dev/dm-5              3,7G    75M   3,4G   3% /home
 /dev/dm-4              317M    11M   290M   4% /tmp
 /dev/dm-1              3,7G   1,7G   1,8G  50% /usr
 '''/dev/hdb1              5,3G   1,1G   4,0G  21% /var'''
 /dev/dm-2              1,8G   876M   818M  52% /media/dm-2

'''Si vous disposez de plus de 50% d’espace libre vous pouvez passer à l'étape suivante'''.

Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Si cela ne suffit toujours pas, il faut envisager d'ajouter un disque à votre système, ou de procéder à un upgrade par étapes successives (en mettant à jour les paquets progressivement et en nettoyant à chaque étape)

=== Les pilotes de la carte Graphique ===

Afin de ne pas avoir de mauvaise surprise avec le serveur X, modifiez votre xorg.conf afin d'utiliser des pilotes Debian.

Eventuellement utilisez les pilotes &quot;vesa&quot;

Dans votre fichier /etc/X11/xorg.conf

&lt;code&gt;
Section &quot;Device&quot;
    Identifier     &quot;Device0&quot;
    Driver         &quot;vesa&quot;
EndSection
&lt;/code&gt;

Si vous êtes sur de vous, n'en faites rien, mais prévoyez une réinstallation des pilotes avant le premier redémarrage.

=== Le fichier sources.list ===

Créons un nouveau sources.list que nous placerons dans /etc/apt/sources.list.d
Nous prenons dores et déjà la bonne habitude d'utiliser ce dossier qui est devenu celui par défaut pour mettre les fichiers contenant les dépôts.

 # nano /etc/apt/sources.list.d/sources.list

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free

# stable security
deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

## stable volatile
## Le dépôt volatile à changé, il est désormais sous &quot;squeeze-updates&quot;
deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib

# stable multimedia
deb http://www.debian-multimedia.org squeeze main non-free
#deb-src http://www.debian-multimedia.org squeeze main non-free

# backports
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
&lt;/code&gt;

== Préparation de la mise à niveau ==

Maintenant que nous sommes prêts, nous pouvons lancer l'upgrade :

Mise à jour de la liste des paquets :

 # aptitude update

=== Si vous avez des problèmes de clefs ===

 W: GPG error: http://www.debian-multimedia.org

 # aptitude install debian-backports-keyring
 # aptitude install debian-multimedia-keyring

=== Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]] ===

 E: Dynamic MMap ran out of room

 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaite l'update, il ne doit pas y avoir d'erreurs

 # aptitude update

=== Problèmes de dépendances ===

Vous ne pourrez pas faire le passage de Lenny à Squeeze tant que subsisteront des problèmes de dépendances...

Voici deux exemples de problèmes de dépendances, et la manière de les régler :

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  xfce4-mixer-oss: Est en conflit avec: xfce4-mixer-alsa mais 4.4.2-3 est installé.
  foomatic-db: Est en conflit avec: foomatic-db-hpijs mais 20080211-1 est installé.
  xfce4-mixer-alsa: Est en conflit avec: xfce4-mixer-oss mais 4.4.2-3 doit être installé.

# aptitude install foomatic-db xfce4-mixer-alsa
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Lecture des descriptions de tâches... Fait  
Les NOUVEAUX paquets suivants vont être installés : 
  libopenjpeg2{a} libpoppler5{a} min12xxw{a} pnm2ppa{a} 
Les paquets suivants seront ENLEVÉS : 
  foomatic-db-hpijs{a} 
Les paquets suivants seront mis à jour : 
  fontconfig-config foomatic-db foomatic-db-engine foomatic-filters libfontconfig1 libjpeg62 libxml2 poppler-utils 
8 paquets mis à jour, 4 nouvellement installés, 1 à enlever et 728 non mis à jour.
Il est nécessaire de télécharger 4722ko d'archives. Après dépaquetage, 18,2Mo seront libérés.
Voulez-vous continuer ? [Y/n/?] o
...
État actuel : 728 mises à jour restantes [-8].
&lt;/code&gt;

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  libatlas3gf-base: Est en conflit avec: libblas3gf (&lt; 1.2-5) mais 1.2-2 est installé et a été conservé
                    Est en conflit avec: liblapack3gf (&lt; 3.2.1-4) mais 3.1.1-1 est installé et a été conservé
  rarian-compat: Est en conflit avec: scrollkeeper (&lt; 0.4) mais 0.3.14-16 est installé et a été conservé

# aptitude install libatlas3gf-base scrollkeeper
...
Les actions suivantes permettront de résoudre ces dépendances :

Mettre à jour les paquets suivants :
libblas3gf [1.2-2 (stable, now) -&gt; 1.2-8 (testing)]
liblapack3gf [3.1.1-1 (stable, now) -&gt; 3.2.1-8 (testing)]

Le score est de 70

Accepter cette solution ? [Y/n/q/?] y
...
État actuel : 725 mises à jour restantes [-3].
&lt;/code&gt;

En cas de doute n'hésitez pas à demander un avis [http://forum.debian-fr.org/ sur le forum]

=== stopper le serveur X ===

'''IMPORTANT''' : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

Si vous faites votre mise à niveau avec le serveur X lancé, vous risquez [http://www.debian-fr.org/upgrade-lenny-squeeze-gnome-minimaliste-t30744.html cette mésaventure]

== Lancez la mise à niveau ==

'''Attention''', Debian recommande désormais d'utiliser apt-get à la place de aptitude pour la mise à niveau : http://www.debian.org/releases/squeeze/i386/release-notes/ch-upgrading.en.html#upgradingpackages

Ce tuto ayant été réalisé avant cette préconisation, il n'est pas à jour concernant ce point précis.

=== A propos de Udev et du Noyau ===

Il est TRèS fortement recommandé de mettre à jour le noyau et udev avant de se lancer dans la mise à niveau. En effet, le noyau Lenny est incompatible avec la version de udev qui se trouve dans squeeze.

 # apt-get install linux-image-2.6 (ou linux-image-2.6-amd64)
 # apt-get install udev

Vous devez maintenant redémarrer le système pour être sur le noyau Squeeze (2.6.32)
Vous pouvez maintenant lancer la mise à niveau :

=== Mise à niveau ===

&lt;code&gt;
# aptitude safe-upgrade
...
Les paquets suivants ont été conservés : 
  apt apt-utils aptitude synaptic 
Les NOUVEAUX paquets suivants vont être installés : 
  acpi-fakekey{a} apache2.2-bin{a} aumix{a} aumix-common{a} bluez{a} bluez-alsa{a} bluez-cups{a} bluez-gstreamer{a} 
  browser-plugin-gnash{a} cifs-utils{a} consolekit{a} cpp-4.4{a} cracklib-runtime{a} cups-ppdc{a} dash{a} db4.8-util{a} 
  diffutils{a} dosfstools{a} firmware-linux-free{a} freepats{a} fuse-utils{a} gcc-4.4-base{a} gcj-4.4-base{a} 
  gcj-4.4-jre-lib{a} geoip-database{a} ghostscript-cups{a} gnash{a} gnash-common{a} gnupg-curl{a} grub-pc{a} 
  gstreamer0.10-ffmpeg{a} gstreamer0.10-fluendo-mp3{a} gstreamer0.10-plugins-bad{a} gstreamer0.10-plugins-base{a} gvfs{a} 
  hplip-cups{a} insserv{a} install-info{a} isc-dhcp-client{a} isc-dhcp-common{a} iso-codes{a} keyboard-configuration{a} 
  libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libass4{a} libatasmart4{a} libaudit0{a} libavahi-core7{a} libavcodec52{a} 
  libavformat52{a} libavutil50{a} libbabl-0.0-0{a} libbind9-60{a} libbluetooth3{a} libboost-date-time1.42.0{a} 
  libboost-thread1.42.0{a} libbsd0{a} libburn4{a} libc-bin{a} libc-client2007e{a} libcap-ng0{a} libcdaudio1{a} libcdio10{a} 
  libcdparanoia0{a} libcelt0-0{a} libck-connector0{a} libcolamd2.7.1{a} libcommons-beanutils-java{a} 
  libcommons-collections3-java{a} libcommons-compress-java{a} libcommons-digester-java{a} libcommons-logging-java{a} 
  libcrack2{a} libcupscgi1{a} libcupsdriver1{a} libcupsmime1{a} libcupsppdc1{a} libdatrie1{a} libdb-je-java{a} libdb4.7{a} 
  libdb4.7-java{a} libdb4.7-java-gcj{a} libdb4.8{a} libdc1394-22{a} libdca0{a} libdirac-encoder0{a} libdirectfb-1.2-9{a} 
  libdns66{a} libdrm-intel1{a} libdrm-nouveau1{a} libdrm-radeon1{a} libdvdnav4{a} libdvdread4{a} libeggdbus-1-0{a} libenca0{a} 
  libenchant1c2a{a} libevent-1.4-2{a} libexempi3{a} libexo-common{a} libfaad2{a} libfftw3-3{a} libfile-copy-recursive-perl{a} 
  libflite1{a} libfont-freetype-perl{a} libfuse2{a} libgcj10{a} libgcr0{a} libgdu0{a} libgegl-0.0-0{a} libgeoip1{a} libgif4{a} 
  libgme0{a} libgomp1{a} libgp11-0{a} libgpgme11{a} libgraphicsmagick3{a} libgraphite3{a} libgssapi-krb5-2{a} libgtkglext1{a} 
  libgudev-1.0-0{a} libhpmud0{a} libicu44{a} libicu4j-java{a} libiptcdata0{a} libisc60{a} libisccc60{a} libisccfg60{a} 
  libiso9660-7{a} libisofs6{a} libiw30{a} libjbig2dec0{a} libjpeg-progs{a} libjpeg8{a} libjtidy-java{a} libk5crypto3{a} 
  libkate1{a} libkrb5-3{a} libkrb5support0{a} libltdl7{a} liblucene2-java{a} liblwres60{a} liblzma2{a} libmimic0{a} libmms0{a} 
  libmodplug1{a} libmozjs2d{a} libmpcdec6{a} libmpfr4{a} libmusicbrainz4c2a{a} libmythes-1.2-0{a} libneon27-gnutls{a} 
  libnetaddr-ip-perl{a} libnfnetlink0{a} libnl1{a} libntfs-3g75{a} libntfs10{a} libofa0{a} libonig2{a} libopencore-amrnb0{a} 
  libopencore-amrwb0{a} libopenraw1{a} liborc-0.4-0{a} libossp-uuid16{a} libpam-ck-connector{a} libpam-cracklib{a} 
  libpango-perl{a} libpangomm-1.4-1{a} libparted0debian1{a} libpciaccess0{a} libpolkit-agent-1-0{a} libpolkit-backend-1-0{a} 
  libpolkit-gobject-1-0{a} libpoppler-glib4{a} libpth20{a} libpython2.6{a} libqdbm14{a} libraptor1{a} librasqal2{a} 
  libraw1394-11{a} librdf0{a} libreadline6{a} librtmp0{a} libsane-hpaio{a} libsasl2-modules{a} libservlet2.5-java{a} 
  libsexy2{a} libsgutils2-2{a} libslv2-9{a} libsndfile1{a} libsoundtouch1c2{a} libswscale0{a} libtag1-vanilla{a} libtalloc2{a} 
  libtextcat-data-utf8{a} libtokyocabinet8{a} libudev0{a} libunique-1.0-0{a} libusb-1.0-0{a} libutempter0{a} libuuid-perl{a} 
  libv4l-0{a} libva1{a} libvcdinfo0{a} libvisual-0.4-0{a} libvisual-0.4-plugins{a} libvpx0{a} libwebkit-1.0-2{a} 
  libwebkit-1.0-common{a} libwildmidi1{a} libwnck-common{a} libwnck22{a} libx11-xcb1{a} libx264-104{a} libxcb-atom1{a} 
  libxcb-aux0{a} libxcb-dri2-0{a} libxcb-event1{a} libxfce4menu-0.1-0{a} libxfce4util-bin{a} libxfce4util-common{a} 
  libxfconf-0-2{a} libxklavier16{a} libxml-parser-perl{a} libxres1{a} libzbar0{a} linux-base{a} linux-image-2.6.32-5-amd64{a} 
  lockfile-progs{a} lsb-release{a} mtools{a} ntfsprogs{a} os-prober{a} oss-compat{a} php5-cli{a} php5-suhosin{a} 
  policykit-1{a} policykit-1-gnome{a} postgresql-8.4{a} postgresql-client-8.4{a} postgresql-contrib-8.4{a} 
  postgresql-doc-8.4{a} python-cups{a} python-gconf{a} python-numpy{a} python-pexpect{a} python-reportbug{a} python-webkit{a} 
  python2.6{a} python2.6-minimal{a} ristretto{a} samba-common-bin{a} sane-utils{a} sensible-utils{a} squeeze{a} 
  tango-icon-theme{a} thunar-archive-plugin{a} thunar-volman{a} tsconf{a} ttf-freefont{a} ttf-lyx{a} ttf-sil-gentium{a} 
  ttf-sil-gentium-basic{a} udisks{a} uno-libs3{a} unzip{a} ure{a} x-ttcidfont-conf{a} xdg-user-dirs{a} xfburn{a} 
  xfce-keyboard-shortcuts{a} xfce4-appfinder{a} xfce4-clipman{a} xfce4-datetime-plugin{a} xfce4-dict{a} xfce4-notes{a} 
  xfce4-notifyd{a} xfce4-places-plugin{a} xfce4-power-manager{a} xfce4-power-manager-data{a} xfce4-screenshooter{a} 
  xfce4-settings{a} xfce4-taskmanager{a} xfce4-timer-plugin{a} xfce4-xkb-plugin{a} xfconf{a} xfonts-mathml{a} xinput{a} xli{a} 
  xorg-docs-core{a} xscreensaver{a} xscreensaver-data{a} xserver-common{a} xserver-xorg-video-nouveau{a} xulrunner-1.9.1{a} 
  xz-utils{a} 
Les paquets suivants seront ENLEVÉS : 
  bluez-utils{u} cpp-4.3{u} cupsddk-drivers{u} djvulibre-desktop{u} finger{u} gs-common{u} liba52-0.7.4{u} libamrnb3{u} 
  libamrwb3{u} libaudio2{u} libavahi-compat-libdnssd1{u} libavahi-core5{u} libavc1394-0{u} libavcodec51{u} libbind9-50{u} 
  libbluetooth2{u} libc-client2007b{u} libcap1{u} libcucul0{u} libcupsys2{u} libcurl3{u} libdatrie0{u} libdirac0{u} 
  libdjvulibre21{u} libfaad0{u} libfreebob0{u} libgail-common{u} libgraphviz4{u} libgtkhtml2-0{u} libicu38{u} libiec61883-0{u} 
  libisccc50{u} libisccfg50{u} libiw29{u} libjaxp1.3-java-gcj{u} libltdl3{u} liblwres50{u} libmagick10{u} libmodplug0c2{u} 
  libmozjs1d{u} libmpcdec3{u} libmpfr1ldbl{u} libmysqlclient15off{u} libneon27{u} libntfs-3g31{u} libossp-uuid15{u} 
  libparted1.8-10{u} libpoppler-glib3{u} libpoppler3{u} libqt3-mt{u} libraw1394-8{u} libsensors3{u} libservlet2.4-java{u} 
  libsmbios-bin{u} libsmbios2{u} libssh2-1{u} libsuitesparse-3.1.0{u} libswfdec-0.6-90{u} libtalloc1{u} libvolume-id0{u} 
  libx264-65{u} libxalan2-java{u} libxalan2-java-gcj{u} libxcb-xlib0{u} libxerces2-java{u} libxerces2-java-gcj{u} 
  libxfce4mcs-client3{u} libxfce4mcs-manager3{u} libxtrap6{u} libxxf86misc1{u} mysql-common{u} openoffice.org-writer2latex{u} 
  openssl-blacklist{u} postgresql-8.3{u} postgresql-client-8.3{u} postgresql-contrib-8.3{u} postgresql-doc-8.3{u} 
  python-gtkhtml2{u} python-numeric{u} svgalibg1{u} xfce4-icon-theme{u} xfce4-mcs-manager{u} xfce4-mcs-plugins{u} 
  xfce4-minicmd-plugin{u} xfce4-screenshooter-plugin{u} xserver-xorg-video-cyrix{u} xserver-xorg-video-v4l{u} 
  xserver-xorg-video-vga{u} xulrunner-1.9{u} 
Les paquets suivants seront mis à jour : 
  a2ps acpi acpi-support acpi-support-base acpid adduser alsa-base alsa-utils anacron analog apache2 apache2-doc 
  apache2-mpm-prefork apache2-utils apache2.2-common apmd aspell aspell-fr at avahi-autoipd avahi-daemon base-files 
  base-passwd bash bash-completion bc bind9 bind9-doc bind9-host bind9utils bluetooth bsd-mailx bsdmainutils bsdutils bsh 
  bsh-gcj busybox ca-certificates console-common console-data console-setup console-terminus console-tools coreutils cpio cpp 
  cpufrequtils cron cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk dbus dbus-x11 dc debconf debconf-i18n 
  debian-archive-keyring debian-faq debianutils deborphan defoma desktop-base desktop-file-utils dhcp3-client dhcp3-common 
  dialog dictionaries-common diff disk-manager dmidecode dmsetup dnsutils doc-debian docbook-xml dpkg e2fslibs e2fsprogs ed 
  eject esound-common exim4 exim4-base exim4-config exim4-daemon-light exo-utils fastjar file findutils fontconfig foo2zjs 
  foomatic-db-gutenprint foomatic-filters-ppds foomatic-gui fortune-mod fortunes-min ftp gcc-4.3-base gconf2 gconf2-common gdm 
  gettext-base ghostscript gimp gimp-data gksu gnome-keyring gnupg gparted gpgv grep groff-base grub grub-common gsfonts 
  gtk2-engines-xfce gzip hal hal-info hdparm hibernate hicolor-icon-theme hostname hpijs hplip hplip-data iamerican ibritish 
  iceweasel iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint info initramfs-tools initscripts installation-report iproute 
  iptables iputils-ping ispell java-common kerneloops klibc-utils laptop-detect less libaa1 libacl1 libapache2-mod-perl2 
  libapache2-mod-php5 libapache2-mod-python libapm1 libapr1 libaprutil1 libart-2.0-2 libasound2 libaspell15 libatk1.0-0 
  libattr1 libaudiofile0 libavahi-client3 libavahi-common-data libavahi-common3 libavahi-glib1 libavutil49 libbcel-java 
  libblkid1 libbonobo2-0 libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i386 libcaca0 
  libcairo-perl libcairo2 libcairomm-1.0-1 libcap2 libcomerr2 libconsole libcpufreq0 libcroco3 libcups2 libcupsimage2 
  libcurl3-gnutls libcwidget3 libdaemon0 libdb4.6 libdbus-1-3 libdbus-glib-1-2 libdevel-symdump-perl libdevmapper1.02.1 
  libdigest-hmac-perl libdigest-sha1-perl libdirectfb-extra libdmx1 libdrm2 libedit2 libesd0 libexif12 libexo-0.3-0 libexpat1 
  libfaac0 libfam0 libffi5 libflac8 libfontenc1 libfreetype6 libfs6 libgail18 libgc1c2 libgcc1 libgcj-bc libgcj-common 
  libgconf2-4 libgcrypt11 libgd2-noxpm libgdbm3 libgfortran3 libgimp2.0 libgksu2-0 libgl1-mesa-dri libgl1-mesa-glx libglade2-0 
  libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgmp3c2 libgnome-keyring0 libgnome2-0 libgnome2-canvas-perl 
  libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0 libgnomecanvas2-common libgnomeui-0 libgnomeui-common 
  libgnomevfs2-0 libgnomevfs2-common libgnomevfs2-extra libgnutls26 libgpg-error0 libgphoto2-2 libgphoto2-port0 libgpm2 libgs8 
  libgsf-1-114 libgsf-1-common libgsm1 libgssglue1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0 
  libgtk2.0-common libgtkmm-2.4-1c2a libgtop2-7 libgtop2-common libgutenprint2 libhal-storage1 libhal1 libhsqldb-java 
  libhsqldb-java-gcj libhtml-parser-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libice6 libidl0 libidn11 libieee1284-3 
  libijs-0.35 libilmbase6 libjack0 libjasper1 libjaxp1.3-java libjline-java libkeyutils1 libklibc libkrb53 liblcms1 
  libldap-2.4-2 liblocale-gettext-perl liblockfile1 liblog4j1.2-java liblzo2-2 libmad0 libmagic1 libmng1 libmp3lame0 
  libmx4j-java libncurses5 libncursesw5 libnet-dns-perl libnewt0.52 libnfsidmap2 libnotify1 libnspr4-0d libnss-mdns libnss3-1d 
  libogg0 liboil0.3 libopenexr6 liborbit2 libpam-modules libpam-runtime libpam0g libpango1.0-0 libpango1.0-common libpaper1 
  libpci3 libpcre3 libpcsclite1 libperl5.10 libpixman-1-0 libpng12-0 libpopt0 libpostproc51 libpq5 libpulse0 libreadline5 
  librecode0 libregexp-java librpcsecgss3 librsvg2-2 librsvg2-common libsane libsane-extras libsasl2-2 libschroedinger-1.0-0 
  libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsensors4 libsepol1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 
  libsmbclient libsnmp-base libsnmp15 libsocket6-perl libsoup2.4-1 libsqlite3-0 libss2 libssl0.9.8 libstartup-notification0 
  libstdc++6 libsvga1 libsysfs2 libtag1c2a libtagc0 libtasn1-3 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl 
  libthai-data libthai0 libtheora0 libthunar-vfs-1-2 libtiff4 libts-0.0-0 liburi-perl libusb-0.1-4 libuuid1 libvorbis0a 
  libvorbisenc2 libvte-common libvte9 libwavpack1 libwbclient0 libwmf0.2-7 libwpg-0.1-1 libwrap0 libwww-perl libx11-6 
  libx11-data libx86-1 libxau6 libxaw7 libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xv0 libxcb1 
  libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfce4util4 libxfcegui4-4 libxfixes3 libxfont1 libxft2 libxi6 
  libxine1 libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins libxine1-plugins libxine1-x libxinerama1 
  libxkbfile1 libxmu6 libxmuu1 libxpm4 libxrandr2 libxrender1 libxslt1.1 libxss1 libxt6 libxtst6 libxv1 libxvidcore4 libxvmc1 
  libxxf86dga1 libxxf86vm1 linux-image-2.6-amd64 linux-sound-base locales login logrotate lp-solve lsb-base lsof lvm2 lwresd 
  m4 mailagent makedev man-db manpages manpages-fr manpages-fr-extra mawk mc menu mime-support mktemp mlocate mlock 
  module-init-tools mount mousepad mutt myspell-en-us myspell-fr-gut nano ncurses-base ncurses-bin ncurses-term net-tools 
  netatalk netbase nfs-common nfs-kernel-server ntfs-3g nvclock openbsd-inetd openoffice.org openoffice.org-base 
  openoffice.org-base-core openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw 
  openoffice.org-filter-mobiledev openoffice.org-gcj openoffice.org-gtk openoffice.org-help-en-us openoffice.org-help-fr 
  openoffice.org-impress openoffice.org-java-common openoffice.org-l10n-fr openoffice.org-math openoffice.org-officebean 
  openoffice.org-report-builder-bin openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-thesaurus-en-us 
  openoffice.org-writer openprinting-ppds openssh-client openssh-server openssl orage passwd patch pciutils pcmciautils perl 
  perl-base perl-modules php5-common pm-utils popularity-contest portmap postgresql postgresql-client postgresql-client-common 
  postgresql-common postgresql-contrib postgresql-doc powermgmt-base powertop printconf procmail procps psmisc psutils python 
  python-cairo python-central python-dbus python-foomatic python-glade2 python-gnome2 python-gobject python-gtk2 
  python-imaging python-ipy python-minimal python-pyorbit python-support python2.5 python2.5-minimal qpopper radeontool 
  readline-common reportbug rsyslog sa-exim samba samba-common samba-doc sed sgml-base sgml-data shared-mime-info 
  smartmontools smbclient smbfs spamassassin spamc ssl-cert sudo swat swfdec-mozilla sysv-rc sysvinit sysvinit-utils tar 
  tasksel tasksel-data tcpd texinfo thunar thunar-data thunar-media-tags-plugin time toshset traceroute ttf-dejavu 
  ttf-dejavu-core ttf-dejavu-extra ttf-liberation ttf-opensymbol tzdata ucf udev update-inetd usbutils util-linux uw-imapd 
  vbetool vim-common vim-tiny w3m wamerican wfrench wget whiptail whois winbind wireless-tools wpasupplicant x11-apps 
  x11-common x11-session-utils x11-utils x11-xfs-utils x11-xkb-utils x11-xserver-utils xauth xbitmaps xdg-utils xfce4 
  xfce4-battery-plugin xfce4-clipman-plugin xfce4-cpufreq-plugin xfce4-cpugraph-plugin xfce4-diskperf-plugin 
  xfce4-fsguard-plugin xfce4-genmon-plugin xfce4-goodies xfce4-mailwatch-plugin xfce4-mixer xfce4-mount-plugin 
  xfce4-netload-plugin xfce4-notes-plugin xfce4-panel xfce4-quicklauncher-plugin xfce4-sensors-plugin xfce4-session 
  xfce4-smartbookmark-plugin xfce4-systemload-plugin xfce4-terminal xfce4-utils xfce4-verve-plugin xfce4-wavelan-plugin 
  xfce4-weather-plugin xfdesktop4 xfdesktop4-data xfonts-100dpi xfonts-75dpi xfonts-base xfonts-encodings xfonts-intl-european 
  xfonts-scalable xfonts-utils xfprint4 xfwm4 xinit xkb-data xml-core xorg xsane xsane-common xserver-xorg xserver-xorg-core 
  xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd xserver-xorg-input-mouse xserver-xorg-input-synaptics 
  xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati 
  xserver-xorg-video-chips xserver-xorg-video-cirrus xserver-xorg-video-dummy xserver-xorg-video-fbdev 
  xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-intel xserver-xorg-video-mach64 xserver-xorg-video-mga 
  xserver-xorg-video-neomagic xserver-xorg-video-nv xserver-xorg-video-openchrome xserver-xorg-video-r128 
  xserver-xorg-video-radeon xserver-xorg-video-radeonhd xserver-xorg-video-rendition xserver-xorg-video-s3 
  xserver-xorg-video-s3virge xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis 
  xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident xserver-xorg-video-tseng 
  xserver-xorg-video-vesa xserver-xorg-video-vmware xserver-xorg-video-voodoo xterm zlib1g 
Les paquets suivants sont RECOMMANDÉS mais ne seront pas installés :
  bzip2 gamin gcc gdm-themes hddtemp libapache2-reload-perl libatk1.0-data libatm1 libbsd-resource-perl libc6-dev libfribidi0 
  libglib2.0-data libgtk2.0-bin libhtml-format-perl libio-socket-inet6-perl liblog4j1.2-java-gcj libmail-spf-perl 
  libmailtools-perl libnss-lwres libpam-gnome-keyring libpaper-utils lm-sensors make nmap openoffice.org-emailmerge 
  openoffice.org-filter-binfilter pconf-detect rc re2c uuid-runtime wdiff xfwm4-themes xnest xserver-xephyr zenity 
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] 
&lt;/code&gt;

En fonction de votre connexion ça peut prendre très longtemps, et être interrompu (à 500KB/s une demi-heure à 50 KB/s c'est plusieurs heures...).
Un conseil, si vous n'êtes pas sûr de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

&lt;code&gt;
# aptitude -d safe-upgrade
...
 762Mo téléchargés en 1h9min37s (182ko/s)                                                          
Lecture des listes de paquets... Fait             
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait
&lt;/code&gt;

Puis

&lt;code&gt;
# aptitude safe-upgrade
...
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 0o/762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] y
&lt;/code&gt;

=== Déroulement ===

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut, mais prenez le temps de lire tous les messages, et si nécessaire, prenez des notes.

Sans le téléchargement des fichiers, comptez un peu plus d'une heure pour la mise à niveau.

[[Fichier:Snapshot4.jpeg]]

[[Fichier:Snapshot5.jpeg]]

[[Fichier:Snapshot6.jpeg]]

[[Fichier:Snapshot7.jpeg]]

[[Fichier:Snapshot9.jpeg]]

[[Fichier:Snapshot11.jpeg]]

[[Fichier:Snapshot13.jpeg]]

[[Fichier:Snapshot14.jpeg]]

[[Fichier:Snapshot15.jpeg]]

[[Fichier:Snapshot16.jpeg]]

[[Fichier:Snapshot17.jpeg]]

Vous partirez d'une Lenny configurée, et donc de nombreux fichiers de configuration auront été modifiés par vos soins.
Il est judicieux de ne pas écraser vos configurations avec les fichiers par défaut proposés par les &quot;mainteneurs&quot; des paquets.
Vous aurez tout le loisir de regarder les modifications proposées, et ce qu'elles apportent, en regardant dans /usr/share/doc ou dans les contenus de vos deb téléchargés (dans /var/apt/archives)

[[Fichier:Snapshot18.jpeg]]

=== finalisation ===

Le safe-upgrade devrait se terminer par ceci :

&lt;code&gt;
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 4 mises à jour restantes [-721].
&lt;/code&gt;

Vous pouvez maintenant lancer un &quot;full-upgrade&quot;

&lt;code&gt;
# aptitude full-upgrade

...

4 paquets mis à jour, 13 nouvellement installés, 2 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 12,1Mo d'archives. Après dépaquetage, 14,3Mo seront utilisés.
Les paquets suivants ont des dépendances non satisfaites :
  libept0: Dépend: libapt-pkg-libc6.7-6-4.6 qui est un paquet virtuel
Les actions suivantes permettront de résoudre ces dépendances :

Supprimer les paquets suivants :
libept0

Le score est de 115

Accepter cette solution ? [Y/n/q/?]y

...

Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 0 mise à jour restante [-4].
&lt;/code&gt;

Si tout s'est bien passé, il ne vous reste plus qu'a redémarrer la machine :

 # shutdown -r now

=== Grub2 ===

Si vous étiez sous Grub-legacy vous aurez certainement fait la bascule vers Grub2.

La première &quot;surprise&quot; qui vous attend donc (sauf si vous avez lu ce guide avant...) c'est le menu suivant :

[[Fichier:Snapshot19.jpeg]]

Si vous appuyez sur entrée, vous serez conduit vers le menu de Grub2.
Cette étape permet de vérifier que Grub2 est bien installé, et de le tester.

[[Fichier:Snapshot20.jpeg]]

Si cela fonctionne, une des premières choses à faire sera de confirmer l'installation de Grub2 en tapant dans une console la commande suivante :

 # upgrade-from-grub-legacy

=== LVM ===

Problème rencontré lors de la mise à niveau avec LVM...
Le système s'est mélangé les pédales dans l'attribution des partitions.
Résultat :

[[Fichier:Snapshot21.jpeg]]

Voici ou se situe le problème :

&lt;code&gt;
$ vdir /dev/l2s/
total 0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 home -&gt; ../dm-5
lrwxrwxrwx 1 root root 7 25 nov.  18:28 root -&gt; ../dm-0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 swap_1 -&gt; ../dm-1
lrwxrwxrwx 1 root root 7 25 nov.  18:28 tmp -&gt; ../dm-4
lrwxrwxrwx 1 root root 7 25 nov.  18:28 usr -&gt; ../dm-2
lrwxrwxrwx 1 root root 7 25 nov.  18:28 var -&gt; ../dm-3
&lt;/code&gt;
&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
# /dev/hda1	/boot	ext2	defaults	0	2
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-1	/usr	ext3	defaults	0	2
# /dev/hdb1	/var	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-3	none	swap	sw	0	0
# /dev/hdc	/media/cdrom0	udf,iso9660	user,noauto	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

Je ne sais pour quelle raison LVM à changé la numérotation des partitions... /usr est passé en dm-1 alors qu'il était en dm-2 et la swap en dm-3 alors qu'elle était être en dm-1
Il suffit de modifier le fichier /etc/fstab pour qu'il reflète à nouveau correctement vos partitions, et le tour est joué :

&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-2	/usr	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-1	none	swap	sw	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

== Bienvenu sur Squeeze ==

 laurent@lenny2squeeze:~$ uname -a
 Linux lenny2squeeze 2.6.32-5-amd64 #1 SMP Sat Oct 30 14:18:21 UTC 2010 x86_64 GNU/Linux

[[Fichier:Snapshot25.jpeg]]

A venir... Upgrade de Squeeze à ????

----
[[Utilisateur:Lol|Lol]] 25 novembre 2010 à 15:55 (EAT)
[[Catégorie:Installation]]</text>
      <sha1>lk43mee9vldl6o98aqs840ygl8mkb80</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2697</id>
      <parentid>2696</parentid>
      <timestamp>2011-02-09T07:42:06Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="32470">{{sid}}

La mise à niveau de Lenny à Squeeze se précise, nous allons faire ici un rapide résumé des opérations nécessaires à la réussite de cette mise à niveau (upgrade).
LVM est installé sur la machine que nous allons mettre à niveau afin de tester le plus de possibilités.

Avant toute chose, je souhaite faire quelques précisions :
Chaque configuration est propre à chacun, en fonction de ses goûts, de son matériel et de ses connaissances.
Un guide universel n'existe donc pas.

Prévoyez aussi d'avoir du temps devant vous, et d'être au calme.

Nous choisirons d'utiliser aptitude au lieu de apt-get, il est en effet plus exigeant concernant les dépendances, votre mise à niveau sera plus &quot;propre&quot;.

J'ai choisi une Lenny avec toutes les options de tasksel activées afin de faire un tour d'horizon le plus vaste possible des problèmes qui pourraient survenir.
L'environnement graphique est Xfce.

[[Fichier:Snapshot3.jpeg]]

== Pré-requis ==

=== Une bonne sauvegarde ===

Vous n'avez AUCUNE garantie que la mise à niveau se passe bien, alors, quel que soit la méthode que vous emploierez, une sauvegarde est le minimum que vous puissiez faire avant de vous lancer dans l'aventure..

Avec dd, dump ou simplement cp SAUVEGARDEZ !

=== Un système à jour! ===

Le fichier sources.list précédent la mise à niveau :

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org stable main non-free
#deb-src http://www.debian-multimedia.org stable main non-free

# backports
deb http://backports.debian.org/debian-backports lenny-backports main contrib non-free
&lt;/code&gt;

 # aptitude update
 # aptitude safe-upgrade
 # aptitude full-upgrade

=== De l'espace! ===

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition où se trouve /var pour le stockage des paquets téléchargés.

Pour info une mise à jour &quot;lourde&quot; se soldera par le téléchargement d'environ 1Go...

Pour connaitre l’espace libre de votre partition racine :

 $ df -H
 Sys. de fich.          Tail.  Occ.  Disp. %Occ. Monté sur
 '''/dev/dm-0              338M   123M   198M  39% /'''
 tmpfs                  262M      0   262M   0% /lib/init/rw
 udev                    11M   689k   9,8M   7% /dev
 tmpfs                  262M      0   262M   0% /dev/shm
 /dev/hda1              239M    20M   207M   9% /boot
 /dev/dm-5              3,7G    75M   3,4G   3% /home
 /dev/dm-4              317M    11M   290M   4% /tmp
 /dev/dm-1              3,7G   1,7G   1,8G  50% /usr
 '''/dev/hdb1              5,3G   1,1G   4,0G  21% /var'''
 /dev/dm-2              1,8G   876M   818M  52% /media/dm-2

'''Si vous disposez de plus de 50% d’espace libre vous pouvez passer à l'étape suivante'''.

Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Si cela ne suffit toujours pas, il faut envisager d'ajouter un disque à votre système, ou de procéder à un upgrade par étapes successives (en mettant à jour les paquets progressivement et en nettoyant à chaque étape)

=== Les pilotes de la carte Graphique ===

Afin de ne pas avoir de mauvaise surprise avec le serveur X, modifiez votre xorg.conf afin d'utiliser des pilotes Debian.

Eventuellement utilisez les pilotes &quot;vesa&quot;

Dans votre fichier /etc/X11/xorg.conf

&lt;code&gt;
Section &quot;Device&quot;
    Identifier     &quot;Device0&quot;
    Driver         &quot;vesa&quot;
EndSection
&lt;/code&gt;

Si vous êtes sûr de vous, n'en faites rien, mais prévoyez une réinstallation des pilotes avant le premier redémarrage.

=== Le fichier sources.list ===

Créons un nouveau sources.list que nous placerons dans /etc/apt/sources.list.d
Nous prenons dores et déjà la bonne habitude d'utiliser ce dossier qui est devenu celui par défaut pour mettre les fichiers contenant les dépôts.

 # nano /etc/apt/sources.list.d/sources.list

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free

# stable security
deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

## stable volatile
## Le dépôt volatile à changé, il est désormais sous &quot;squeeze-updates&quot;
deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib

# stable multimedia
deb http://www.debian-multimedia.org squeeze main non-free
#deb-src http://www.debian-multimedia.org squeeze main non-free

# backports
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
&lt;/code&gt;

== Préparation de la mise à niveau ==

Maintenant que nous sommes prêts, nous pouvons lancer l'upgrade :

Mise à jour de la liste des paquets :

 # aptitude update

=== Si vous avez des problèmes de clefs ===

 W: GPG error: http://www.debian-multimedia.org

 # aptitude install debian-backports-keyring
 # aptitude install debian-multimedia-keyring

=== Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]] ===

 E: Dynamic MMap ran out of room

 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaite l'update, il ne doit pas y avoir d'erreurs

 # aptitude update

=== Problèmes de dépendances ===

Vous ne pourrez pas faire le passage de Lenny à Squeeze tant que subsisteront des problèmes de dépendances...

Voici deux exemples de problèmes de dépendances, et la manière de les régler :

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  xfce4-mixer-oss: Est en conflit avec: xfce4-mixer-alsa mais 4.4.2-3 est installé.
  foomatic-db: Est en conflit avec: foomatic-db-hpijs mais 20080211-1 est installé.
  xfce4-mixer-alsa: Est en conflit avec: xfce4-mixer-oss mais 4.4.2-3 doit être installé.

# aptitude install foomatic-db xfce4-mixer-alsa
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Lecture des descriptions de tâches... Fait  
Les NOUVEAUX paquets suivants vont être installés : 
  libopenjpeg2{a} libpoppler5{a} min12xxw{a} pnm2ppa{a} 
Les paquets suivants seront ENLEVÉS : 
  foomatic-db-hpijs{a} 
Les paquets suivants seront mis à jour : 
  fontconfig-config foomatic-db foomatic-db-engine foomatic-filters libfontconfig1 libjpeg62 libxml2 poppler-utils 
8 paquets mis à jour, 4 nouvellement installés, 1 à enlever et 728 non mis à jour.
Il est nécessaire de télécharger 4722ko d'archives. Après dépaquetage, 18,2Mo seront libérés.
Voulez-vous continuer ? [Y/n/?] o
...
État actuel : 728 mises à jour restantes [-8].
&lt;/code&gt;

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  libatlas3gf-base: Est en conflit avec: libblas3gf (&lt; 1.2-5) mais 1.2-2 est installé et a été conservé
                    Est en conflit avec: liblapack3gf (&lt; 3.2.1-4) mais 3.1.1-1 est installé et a été conservé
  rarian-compat: Est en conflit avec: scrollkeeper (&lt; 0.4) mais 0.3.14-16 est installé et a été conservé

# aptitude install libatlas3gf-base scrollkeeper
...
Les actions suivantes permettront de résoudre ces dépendances :

Mettre à jour les paquets suivants :
libblas3gf [1.2-2 (stable, now) -&gt; 1.2-8 (testing)]
liblapack3gf [3.1.1-1 (stable, now) -&gt; 3.2.1-8 (testing)]

Le score est de 70

Accepter cette solution ? [Y/n/q/?] y
...
État actuel : 725 mises à jour restantes [-3].
&lt;/code&gt;

En cas de doute n'hésitez pas à demander un avis [http://forum.debian-fr.org/ sur le forum]

=== stopper le serveur X ===

'''IMPORTANT''' : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

Si vous faites votre mise à niveau avec le serveur X lancé, vous risquez [http://www.debian-fr.org/upgrade-lenny-squeeze-gnome-minimaliste-t30744.html cette mésaventure]

== Lancez la mise à niveau ==

'''Attention''', Debian recommande désormais d'utiliser apt-get à la place de aptitude pour la mise à niveau : http://www.debian.org/releases/squeeze/i386/release-notes/ch-upgrading.en.html#upgradingpackages

Ce tuto ayant été réalisé avant cette préconisation, il n'est pas à jour concernant ce point précis.

=== A propos de Udev et du Noyau ===

Il est TRèS fortement recommandé de mettre à jour le noyau et udev avant de se lancer dans la mise à niveau. En effet, le noyau Lenny est incompatible avec la version de udev qui se trouve dans squeeze.

 # apt-get install linux-image-2.6 (ou linux-image-2.6-amd64)
 # apt-get install udev

Vous devez maintenant redémarrer le système pour être sur le noyau Squeeze (2.6.32)
Vous pouvez maintenant lancer la mise à niveau :

=== Mise à niveau ===

&lt;code&gt;
# aptitude safe-upgrade
...
Les paquets suivants ont été conservés : 
  apt apt-utils aptitude synaptic 
Les NOUVEAUX paquets suivants vont être installés : 
  acpi-fakekey{a} apache2.2-bin{a} aumix{a} aumix-common{a} bluez{a} bluez-alsa{a} bluez-cups{a} bluez-gstreamer{a} 
  browser-plugin-gnash{a} cifs-utils{a} consolekit{a} cpp-4.4{a} cracklib-runtime{a} cups-ppdc{a} dash{a} db4.8-util{a} 
  diffutils{a} dosfstools{a} firmware-linux-free{a} freepats{a} fuse-utils{a} gcc-4.4-base{a} gcj-4.4-base{a} 
  gcj-4.4-jre-lib{a} geoip-database{a} ghostscript-cups{a} gnash{a} gnash-common{a} gnupg-curl{a} grub-pc{a} 
  gstreamer0.10-ffmpeg{a} gstreamer0.10-fluendo-mp3{a} gstreamer0.10-plugins-bad{a} gstreamer0.10-plugins-base{a} gvfs{a} 
  hplip-cups{a} insserv{a} install-info{a} isc-dhcp-client{a} isc-dhcp-common{a} iso-codes{a} keyboard-configuration{a} 
  libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libass4{a} libatasmart4{a} libaudit0{a} libavahi-core7{a} libavcodec52{a} 
  libavformat52{a} libavutil50{a} libbabl-0.0-0{a} libbind9-60{a} libbluetooth3{a} libboost-date-time1.42.0{a} 
  libboost-thread1.42.0{a} libbsd0{a} libburn4{a} libc-bin{a} libc-client2007e{a} libcap-ng0{a} libcdaudio1{a} libcdio10{a} 
  libcdparanoia0{a} libcelt0-0{a} libck-connector0{a} libcolamd2.7.1{a} libcommons-beanutils-java{a} 
  libcommons-collections3-java{a} libcommons-compress-java{a} libcommons-digester-java{a} libcommons-logging-java{a} 
  libcrack2{a} libcupscgi1{a} libcupsdriver1{a} libcupsmime1{a} libcupsppdc1{a} libdatrie1{a} libdb-je-java{a} libdb4.7{a} 
  libdb4.7-java{a} libdb4.7-java-gcj{a} libdb4.8{a} libdc1394-22{a} libdca0{a} libdirac-encoder0{a} libdirectfb-1.2-9{a} 
  libdns66{a} libdrm-intel1{a} libdrm-nouveau1{a} libdrm-radeon1{a} libdvdnav4{a} libdvdread4{a} libeggdbus-1-0{a} libenca0{a} 
  libenchant1c2a{a} libevent-1.4-2{a} libexempi3{a} libexo-common{a} libfaad2{a} libfftw3-3{a} libfile-copy-recursive-perl{a} 
  libflite1{a} libfont-freetype-perl{a} libfuse2{a} libgcj10{a} libgcr0{a} libgdu0{a} libgegl-0.0-0{a} libgeoip1{a} libgif4{a} 
  libgme0{a} libgomp1{a} libgp11-0{a} libgpgme11{a} libgraphicsmagick3{a} libgraphite3{a} libgssapi-krb5-2{a} libgtkglext1{a} 
  libgudev-1.0-0{a} libhpmud0{a} libicu44{a} libicu4j-java{a} libiptcdata0{a} libisc60{a} libisccc60{a} libisccfg60{a} 
  libiso9660-7{a} libisofs6{a} libiw30{a} libjbig2dec0{a} libjpeg-progs{a} libjpeg8{a} libjtidy-java{a} libk5crypto3{a} 
  libkate1{a} libkrb5-3{a} libkrb5support0{a} libltdl7{a} liblucene2-java{a} liblwres60{a} liblzma2{a} libmimic0{a} libmms0{a} 
  libmodplug1{a} libmozjs2d{a} libmpcdec6{a} libmpfr4{a} libmusicbrainz4c2a{a} libmythes-1.2-0{a} libneon27-gnutls{a} 
  libnetaddr-ip-perl{a} libnfnetlink0{a} libnl1{a} libntfs-3g75{a} libntfs10{a} libofa0{a} libonig2{a} libopencore-amrnb0{a} 
  libopencore-amrwb0{a} libopenraw1{a} liborc-0.4-0{a} libossp-uuid16{a} libpam-ck-connector{a} libpam-cracklib{a} 
  libpango-perl{a} libpangomm-1.4-1{a} libparted0debian1{a} libpciaccess0{a} libpolkit-agent-1-0{a} libpolkit-backend-1-0{a} 
  libpolkit-gobject-1-0{a} libpoppler-glib4{a} libpth20{a} libpython2.6{a} libqdbm14{a} libraptor1{a} librasqal2{a} 
  libraw1394-11{a} librdf0{a} libreadline6{a} librtmp0{a} libsane-hpaio{a} libsasl2-modules{a} libservlet2.5-java{a} 
  libsexy2{a} libsgutils2-2{a} libslv2-9{a} libsndfile1{a} libsoundtouch1c2{a} libswscale0{a} libtag1-vanilla{a} libtalloc2{a} 
  libtextcat-data-utf8{a} libtokyocabinet8{a} libudev0{a} libunique-1.0-0{a} libusb-1.0-0{a} libutempter0{a} libuuid-perl{a} 
  libv4l-0{a} libva1{a} libvcdinfo0{a} libvisual-0.4-0{a} libvisual-0.4-plugins{a} libvpx0{a} libwebkit-1.0-2{a} 
  libwebkit-1.0-common{a} libwildmidi1{a} libwnck-common{a} libwnck22{a} libx11-xcb1{a} libx264-104{a} libxcb-atom1{a} 
  libxcb-aux0{a} libxcb-dri2-0{a} libxcb-event1{a} libxfce4menu-0.1-0{a} libxfce4util-bin{a} libxfce4util-common{a} 
  libxfconf-0-2{a} libxklavier16{a} libxml-parser-perl{a} libxres1{a} libzbar0{a} linux-base{a} linux-image-2.6.32-5-amd64{a} 
  lockfile-progs{a} lsb-release{a} mtools{a} ntfsprogs{a} os-prober{a} oss-compat{a} php5-cli{a} php5-suhosin{a} 
  policykit-1{a} policykit-1-gnome{a} postgresql-8.4{a} postgresql-client-8.4{a} postgresql-contrib-8.4{a} 
  postgresql-doc-8.4{a} python-cups{a} python-gconf{a} python-numpy{a} python-pexpect{a} python-reportbug{a} python-webkit{a} 
  python2.6{a} python2.6-minimal{a} ristretto{a} samba-common-bin{a} sane-utils{a} sensible-utils{a} squeeze{a} 
  tango-icon-theme{a} thunar-archive-plugin{a} thunar-volman{a} tsconf{a} ttf-freefont{a} ttf-lyx{a} ttf-sil-gentium{a} 
  ttf-sil-gentium-basic{a} udisks{a} uno-libs3{a} unzip{a} ure{a} x-ttcidfont-conf{a} xdg-user-dirs{a} xfburn{a} 
  xfce-keyboard-shortcuts{a} xfce4-appfinder{a} xfce4-clipman{a} xfce4-datetime-plugin{a} xfce4-dict{a} xfce4-notes{a} 
  xfce4-notifyd{a} xfce4-places-plugin{a} xfce4-power-manager{a} xfce4-power-manager-data{a} xfce4-screenshooter{a} 
  xfce4-settings{a} xfce4-taskmanager{a} xfce4-timer-plugin{a} xfce4-xkb-plugin{a} xfconf{a} xfonts-mathml{a} xinput{a} xli{a} 
  xorg-docs-core{a} xscreensaver{a} xscreensaver-data{a} xserver-common{a} xserver-xorg-video-nouveau{a} xulrunner-1.9.1{a} 
  xz-utils{a} 
Les paquets suivants seront ENLEVÉS : 
  bluez-utils{u} cpp-4.3{u} cupsddk-drivers{u} djvulibre-desktop{u} finger{u} gs-common{u} liba52-0.7.4{u} libamrnb3{u} 
  libamrwb3{u} libaudio2{u} libavahi-compat-libdnssd1{u} libavahi-core5{u} libavc1394-0{u} libavcodec51{u} libbind9-50{u} 
  libbluetooth2{u} libc-client2007b{u} libcap1{u} libcucul0{u} libcupsys2{u} libcurl3{u} libdatrie0{u} libdirac0{u} 
  libdjvulibre21{u} libfaad0{u} libfreebob0{u} libgail-common{u} libgraphviz4{u} libgtkhtml2-0{u} libicu38{u} libiec61883-0{u} 
  libisccc50{u} libisccfg50{u} libiw29{u} libjaxp1.3-java-gcj{u} libltdl3{u} liblwres50{u} libmagick10{u} libmodplug0c2{u} 
  libmozjs1d{u} libmpcdec3{u} libmpfr1ldbl{u} libmysqlclient15off{u} libneon27{u} libntfs-3g31{u} libossp-uuid15{u} 
  libparted1.8-10{u} libpoppler-glib3{u} libpoppler3{u} libqt3-mt{u} libraw1394-8{u} libsensors3{u} libservlet2.4-java{u} 
  libsmbios-bin{u} libsmbios2{u} libssh2-1{u} libsuitesparse-3.1.0{u} libswfdec-0.6-90{u} libtalloc1{u} libvolume-id0{u} 
  libx264-65{u} libxalan2-java{u} libxalan2-java-gcj{u} libxcb-xlib0{u} libxerces2-java{u} libxerces2-java-gcj{u} 
  libxfce4mcs-client3{u} libxfce4mcs-manager3{u} libxtrap6{u} libxxf86misc1{u} mysql-common{u} openoffice.org-writer2latex{u} 
  openssl-blacklist{u} postgresql-8.3{u} postgresql-client-8.3{u} postgresql-contrib-8.3{u} postgresql-doc-8.3{u} 
  python-gtkhtml2{u} python-numeric{u} svgalibg1{u} xfce4-icon-theme{u} xfce4-mcs-manager{u} xfce4-mcs-plugins{u} 
  xfce4-minicmd-plugin{u} xfce4-screenshooter-plugin{u} xserver-xorg-video-cyrix{u} xserver-xorg-video-v4l{u} 
  xserver-xorg-video-vga{u} xulrunner-1.9{u} 
Les paquets suivants seront mis à jour : 
  a2ps acpi acpi-support acpi-support-base acpid adduser alsa-base alsa-utils anacron analog apache2 apache2-doc 
  apache2-mpm-prefork apache2-utils apache2.2-common apmd aspell aspell-fr at avahi-autoipd avahi-daemon base-files 
  base-passwd bash bash-completion bc bind9 bind9-doc bind9-host bind9utils bluetooth bsd-mailx bsdmainutils bsdutils bsh 
  bsh-gcj busybox ca-certificates console-common console-data console-setup console-terminus console-tools coreutils cpio cpp 
  cpufrequtils cron cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk dbus dbus-x11 dc debconf debconf-i18n 
  debian-archive-keyring debian-faq debianutils deborphan defoma desktop-base desktop-file-utils dhcp3-client dhcp3-common 
  dialog dictionaries-common diff disk-manager dmidecode dmsetup dnsutils doc-debian docbook-xml dpkg e2fslibs e2fsprogs ed 
  eject esound-common exim4 exim4-base exim4-config exim4-daemon-light exo-utils fastjar file findutils fontconfig foo2zjs 
  foomatic-db-gutenprint foomatic-filters-ppds foomatic-gui fortune-mod fortunes-min ftp gcc-4.3-base gconf2 gconf2-common gdm 
  gettext-base ghostscript gimp gimp-data gksu gnome-keyring gnupg gparted gpgv grep groff-base grub grub-common gsfonts 
  gtk2-engines-xfce gzip hal hal-info hdparm hibernate hicolor-icon-theme hostname hpijs hplip hplip-data iamerican ibritish 
  iceweasel iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint info initramfs-tools initscripts installation-report iproute 
  iptables iputils-ping ispell java-common kerneloops klibc-utils laptop-detect less libaa1 libacl1 libapache2-mod-perl2 
  libapache2-mod-php5 libapache2-mod-python libapm1 libapr1 libaprutil1 libart-2.0-2 libasound2 libaspell15 libatk1.0-0 
  libattr1 libaudiofile0 libavahi-client3 libavahi-common-data libavahi-common3 libavahi-glib1 libavutil49 libbcel-java 
  libblkid1 libbonobo2-0 libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i386 libcaca0 
  libcairo-perl libcairo2 libcairomm-1.0-1 libcap2 libcomerr2 libconsole libcpufreq0 libcroco3 libcups2 libcupsimage2 
  libcurl3-gnutls libcwidget3 libdaemon0 libdb4.6 libdbus-1-3 libdbus-glib-1-2 libdevel-symdump-perl libdevmapper1.02.1 
  libdigest-hmac-perl libdigest-sha1-perl libdirectfb-extra libdmx1 libdrm2 libedit2 libesd0 libexif12 libexo-0.3-0 libexpat1 
  libfaac0 libfam0 libffi5 libflac8 libfontenc1 libfreetype6 libfs6 libgail18 libgc1c2 libgcc1 libgcj-bc libgcj-common 
  libgconf2-4 libgcrypt11 libgd2-noxpm libgdbm3 libgfortran3 libgimp2.0 libgksu2-0 libgl1-mesa-dri libgl1-mesa-glx libglade2-0 
  libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgmp3c2 libgnome-keyring0 libgnome2-0 libgnome2-canvas-perl 
  libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0 libgnomecanvas2-common libgnomeui-0 libgnomeui-common 
  libgnomevfs2-0 libgnomevfs2-common libgnomevfs2-extra libgnutls26 libgpg-error0 libgphoto2-2 libgphoto2-port0 libgpm2 libgs8 
  libgsf-1-114 libgsf-1-common libgsm1 libgssglue1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0 
  libgtk2.0-common libgtkmm-2.4-1c2a libgtop2-7 libgtop2-common libgutenprint2 libhal-storage1 libhal1 libhsqldb-java 
  libhsqldb-java-gcj libhtml-parser-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libice6 libidl0 libidn11 libieee1284-3 
  libijs-0.35 libilmbase6 libjack0 libjasper1 libjaxp1.3-java libjline-java libkeyutils1 libklibc libkrb53 liblcms1 
  libldap-2.4-2 liblocale-gettext-perl liblockfile1 liblog4j1.2-java liblzo2-2 libmad0 libmagic1 libmng1 libmp3lame0 
  libmx4j-java libncurses5 libncursesw5 libnet-dns-perl libnewt0.52 libnfsidmap2 libnotify1 libnspr4-0d libnss-mdns libnss3-1d 
  libogg0 liboil0.3 libopenexr6 liborbit2 libpam-modules libpam-runtime libpam0g libpango1.0-0 libpango1.0-common libpaper1 
  libpci3 libpcre3 libpcsclite1 libperl5.10 libpixman-1-0 libpng12-0 libpopt0 libpostproc51 libpq5 libpulse0 libreadline5 
  librecode0 libregexp-java librpcsecgss3 librsvg2-2 librsvg2-common libsane libsane-extras libsasl2-2 libschroedinger-1.0-0 
  libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsensors4 libsepol1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 
  libsmbclient libsnmp-base libsnmp15 libsocket6-perl libsoup2.4-1 libsqlite3-0 libss2 libssl0.9.8 libstartup-notification0 
  libstdc++6 libsvga1 libsysfs2 libtag1c2a libtagc0 libtasn1-3 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl 
  libthai-data libthai0 libtheora0 libthunar-vfs-1-2 libtiff4 libts-0.0-0 liburi-perl libusb-0.1-4 libuuid1 libvorbis0a 
  libvorbisenc2 libvte-common libvte9 libwavpack1 libwbclient0 libwmf0.2-7 libwpg-0.1-1 libwrap0 libwww-perl libx11-6 
  libx11-data libx86-1 libxau6 libxaw7 libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xv0 libxcb1 
  libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfce4util4 libxfcegui4-4 libxfixes3 libxfont1 libxft2 libxi6 
  libxine1 libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins libxine1-plugins libxine1-x libxinerama1 
  libxkbfile1 libxmu6 libxmuu1 libxpm4 libxrandr2 libxrender1 libxslt1.1 libxss1 libxt6 libxtst6 libxv1 libxvidcore4 libxvmc1 
  libxxf86dga1 libxxf86vm1 linux-image-2.6-amd64 linux-sound-base locales login logrotate lp-solve lsb-base lsof lvm2 lwresd 
  m4 mailagent makedev man-db manpages manpages-fr manpages-fr-extra mawk mc menu mime-support mktemp mlocate mlock 
  module-init-tools mount mousepad mutt myspell-en-us myspell-fr-gut nano ncurses-base ncurses-bin ncurses-term net-tools 
  netatalk netbase nfs-common nfs-kernel-server ntfs-3g nvclock openbsd-inetd openoffice.org openoffice.org-base 
  openoffice.org-base-core openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw 
  openoffice.org-filter-mobiledev openoffice.org-gcj openoffice.org-gtk openoffice.org-help-en-us openoffice.org-help-fr 
  openoffice.org-impress openoffice.org-java-common openoffice.org-l10n-fr openoffice.org-math openoffice.org-officebean 
  openoffice.org-report-builder-bin openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-thesaurus-en-us 
  openoffice.org-writer openprinting-ppds openssh-client openssh-server openssl orage passwd patch pciutils pcmciautils perl 
  perl-base perl-modules php5-common pm-utils popularity-contest portmap postgresql postgresql-client postgresql-client-common 
  postgresql-common postgresql-contrib postgresql-doc powermgmt-base powertop printconf procmail procps psmisc psutils python 
  python-cairo python-central python-dbus python-foomatic python-glade2 python-gnome2 python-gobject python-gtk2 
  python-imaging python-ipy python-minimal python-pyorbit python-support python2.5 python2.5-minimal qpopper radeontool 
  readline-common reportbug rsyslog sa-exim samba samba-common samba-doc sed sgml-base sgml-data shared-mime-info 
  smartmontools smbclient smbfs spamassassin spamc ssl-cert sudo swat swfdec-mozilla sysv-rc sysvinit sysvinit-utils tar 
  tasksel tasksel-data tcpd texinfo thunar thunar-data thunar-media-tags-plugin time toshset traceroute ttf-dejavu 
  ttf-dejavu-core ttf-dejavu-extra ttf-liberation ttf-opensymbol tzdata ucf udev update-inetd usbutils util-linux uw-imapd 
  vbetool vim-common vim-tiny w3m wamerican wfrench wget whiptail whois winbind wireless-tools wpasupplicant x11-apps 
  x11-common x11-session-utils x11-utils x11-xfs-utils x11-xkb-utils x11-xserver-utils xauth xbitmaps xdg-utils xfce4 
  xfce4-battery-plugin xfce4-clipman-plugin xfce4-cpufreq-plugin xfce4-cpugraph-plugin xfce4-diskperf-plugin 
  xfce4-fsguard-plugin xfce4-genmon-plugin xfce4-goodies xfce4-mailwatch-plugin xfce4-mixer xfce4-mount-plugin 
  xfce4-netload-plugin xfce4-notes-plugin xfce4-panel xfce4-quicklauncher-plugin xfce4-sensors-plugin xfce4-session 
  xfce4-smartbookmark-plugin xfce4-systemload-plugin xfce4-terminal xfce4-utils xfce4-verve-plugin xfce4-wavelan-plugin 
  xfce4-weather-plugin xfdesktop4 xfdesktop4-data xfonts-100dpi xfonts-75dpi xfonts-base xfonts-encodings xfonts-intl-european 
  xfonts-scalable xfonts-utils xfprint4 xfwm4 xinit xkb-data xml-core xorg xsane xsane-common xserver-xorg xserver-xorg-core 
  xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd xserver-xorg-input-mouse xserver-xorg-input-synaptics 
  xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati 
  xserver-xorg-video-chips xserver-xorg-video-cirrus xserver-xorg-video-dummy xserver-xorg-video-fbdev 
  xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-intel xserver-xorg-video-mach64 xserver-xorg-video-mga 
  xserver-xorg-video-neomagic xserver-xorg-video-nv xserver-xorg-video-openchrome xserver-xorg-video-r128 
  xserver-xorg-video-radeon xserver-xorg-video-radeonhd xserver-xorg-video-rendition xserver-xorg-video-s3 
  xserver-xorg-video-s3virge xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis 
  xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident xserver-xorg-video-tseng 
  xserver-xorg-video-vesa xserver-xorg-video-vmware xserver-xorg-video-voodoo xterm zlib1g 
Les paquets suivants sont RECOMMANDÉS mais ne seront pas installés :
  bzip2 gamin gcc gdm-themes hddtemp libapache2-reload-perl libatk1.0-data libatm1 libbsd-resource-perl libc6-dev libfribidi0 
  libglib2.0-data libgtk2.0-bin libhtml-format-perl libio-socket-inet6-perl liblog4j1.2-java-gcj libmail-spf-perl 
  libmailtools-perl libnss-lwres libpam-gnome-keyring libpaper-utils lm-sensors make nmap openoffice.org-emailmerge 
  openoffice.org-filter-binfilter pconf-detect rc re2c uuid-runtime wdiff xfwm4-themes xnest xserver-xephyr zenity 
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] 
&lt;/code&gt;

En fonction de votre connexion ça peut prendre très longtemps, et être interrompu (à 500KB/s une demi-heure à 50 KB/s c'est plusieurs heures...).
Un conseil, si vous n'êtes pas sûr de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

&lt;code&gt;
# aptitude -d safe-upgrade
...
 762Mo téléchargés en 1h9min37s (182ko/s)                                                          
Lecture des listes de paquets... Fait             
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait
&lt;/code&gt;

Puis

&lt;code&gt;
# aptitude safe-upgrade
...
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 0o/762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] y
&lt;/code&gt;

=== Déroulement ===

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut, mais prenez le temps de lire tous les messages, et si nécessaire, prenez des notes.

Sans le téléchargement des fichiers, comptez un peu plus d'une heure pour la mise à niveau.

[[Fichier:Snapshot4.jpeg]]

[[Fichier:Snapshot5.jpeg]]

[[Fichier:Snapshot6.jpeg]]

[[Fichier:Snapshot7.jpeg]]

[[Fichier:Snapshot9.jpeg]]

[[Fichier:Snapshot11.jpeg]]

[[Fichier:Snapshot13.jpeg]]

[[Fichier:Snapshot14.jpeg]]

[[Fichier:Snapshot15.jpeg]]

[[Fichier:Snapshot16.jpeg]]

[[Fichier:Snapshot17.jpeg]]

Vous partirez d'une Lenny configurée, et donc de nombreux fichiers de configuration auront été modifiés par vos soins.
Il est judicieux de ne pas écraser vos configurations avec les fichiers par défaut proposés par les &quot;mainteneurs&quot; des paquets.
Vous aurez tout le loisir de regarder les modifications proposées, et ce qu'elles apportent, en regardant dans /usr/share/doc ou dans les contenus de vos deb téléchargés (dans /var/apt/archives)

[[Fichier:Snapshot18.jpeg]]

=== finalisation ===

Le safe-upgrade devrait se terminer par ceci :

&lt;code&gt;
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 4 mises à jour restantes [-721].
&lt;/code&gt;

Vous pouvez maintenant lancer un &quot;full-upgrade&quot;

&lt;code&gt;
# aptitude full-upgrade

...

4 paquets mis à jour, 13 nouvellement installés, 2 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 12,1Mo d'archives. Après dépaquetage, 14,3Mo seront utilisés.
Les paquets suivants ont des dépendances non satisfaites :
  libept0: Dépend: libapt-pkg-libc6.7-6-4.6 qui est un paquet virtuel
Les actions suivantes permettront de résoudre ces dépendances :

Supprimer les paquets suivants :
libept0

Le score est de 115

Accepter cette solution ? [Y/n/q/?]y

...

Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 0 mise à jour restante [-4].
&lt;/code&gt;

Si tout s'est bien passé, il ne vous reste plus qu'a redémarrer la machine :

 # shutdown -r now

=== Grub2 ===

Si vous étiez sous Grub-legacy vous aurez certainement fait la bascule vers Grub2.

La première &quot;surprise&quot; qui vous attend donc (sauf si vous avez lu ce guide avant...) c'est le menu suivant :

[[Fichier:Snapshot19.jpeg]]

Si vous appuyez sur entrée, vous serez conduit vers le menu de Grub2.
Cette étape permet de vérifier que Grub2 est bien installé, et de le tester.

[[Fichier:Snapshot20.jpeg]]

Si cela fonctionne, une des premières choses à faire sera de confirmer l'installation de Grub2 en tapant dans une console la commande suivante :

 # upgrade-from-grub-legacy

=== LVM ===

Problème rencontré lors de la mise à niveau avec LVM...
Le système s'est mélangé les pédales dans l'attribution des partitions.
Résultat :

[[Fichier:Snapshot21.jpeg]]

Voici ou se situe le problème :

&lt;code&gt;
$ vdir /dev/l2s/
total 0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 home -&gt; ../dm-5
lrwxrwxrwx 1 root root 7 25 nov.  18:28 root -&gt; ../dm-0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 swap_1 -&gt; ../dm-1
lrwxrwxrwx 1 root root 7 25 nov.  18:28 tmp -&gt; ../dm-4
lrwxrwxrwx 1 root root 7 25 nov.  18:28 usr -&gt; ../dm-2
lrwxrwxrwx 1 root root 7 25 nov.  18:28 var -&gt; ../dm-3
&lt;/code&gt;
&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
# /dev/hda1	/boot	ext2	defaults	0	2
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-1	/usr	ext3	defaults	0	2
# /dev/hdb1	/var	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-3	none	swap	sw	0	0
# /dev/hdc	/media/cdrom0	udf,iso9660	user,noauto	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

Je ne sais pour quelle raison LVM à changé la numérotation des partitions... /usr est passé en dm-1 alors qu'il était en dm-2 et la swap en dm-3 alors qu'elle était être en dm-1
Il suffit de modifier le fichier /etc/fstab pour qu'il reflète à nouveau correctement vos partitions, et le tour est joué :

&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-2	/usr	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-1	none	swap	sw	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

== Bienvenu sur Squeeze ==

 laurent@lenny2squeeze:~$ uname -a
 Linux lenny2squeeze 2.6.32-5-amd64 #1 SMP Sat Oct 30 14:18:21 UTC 2010 x86_64 GNU/Linux

[[Fichier:Snapshot25.jpeg]]

A venir... Upgrade de Squeeze à ????

----
[[Utilisateur:Lol|Lol]] 25 novembre 2010 à 15:55 (EAT)
[[Catégorie:Installation]]</text>
      <sha1>7a88v8gboozyuw69s2wvlzla2afz7s0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2698</id>
      <parentid>2697</parentid>
      <timestamp>2011-02-09T12:09:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Mise à niveau */</comment>
      <text xml:space="preserve" bytes="32649">{{sid}}

La mise à niveau de Lenny à Squeeze se précise, nous allons faire ici un rapide résumé des opérations nécessaires à la réussite de cette mise à niveau (upgrade).
LVM est installé sur la machine que nous allons mettre à niveau afin de tester le plus de possibilités.

Avant toute chose, je souhaite faire quelques précisions :
Chaque configuration est propre à chacun, en fonction de ses goûts, de son matériel et de ses connaissances.
Un guide universel n'existe donc pas.

Prévoyez aussi d'avoir du temps devant vous, et d'être au calme.

Nous choisirons d'utiliser aptitude au lieu de apt-get, il est en effet plus exigeant concernant les dépendances, votre mise à niveau sera plus &quot;propre&quot;.

J'ai choisi une Lenny avec toutes les options de tasksel activées afin de faire un tour d'horizon le plus vaste possible des problèmes qui pourraient survenir.
L'environnement graphique est Xfce.

[[Fichier:Snapshot3.jpeg]]

== Pré-requis ==

=== Une bonne sauvegarde ===

Vous n'avez AUCUNE garantie que la mise à niveau se passe bien, alors, quel que soit la méthode que vous emploierez, une sauvegarde est le minimum que vous puissiez faire avant de vous lancer dans l'aventure..

Avec dd, dump ou simplement cp SAUVEGARDEZ !

=== Un système à jour! ===

Le fichier sources.list précédent la mise à niveau :

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org stable main non-free
#deb-src http://www.debian-multimedia.org stable main non-free

# backports
deb http://backports.debian.org/debian-backports lenny-backports main contrib non-free
&lt;/code&gt;

 # aptitude update
 # aptitude safe-upgrade
 # aptitude full-upgrade

=== De l'espace! ===

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition où se trouve /var pour le stockage des paquets téléchargés.

Pour info une mise à jour &quot;lourde&quot; se soldera par le téléchargement d'environ 1Go...

Pour connaitre l’espace libre de votre partition racine :

 $ df -H
 Sys. de fich.          Tail.  Occ.  Disp. %Occ. Monté sur
 '''/dev/dm-0              338M   123M   198M  39% /'''
 tmpfs                  262M      0   262M   0% /lib/init/rw
 udev                    11M   689k   9,8M   7% /dev
 tmpfs                  262M      0   262M   0% /dev/shm
 /dev/hda1              239M    20M   207M   9% /boot
 /dev/dm-5              3,7G    75M   3,4G   3% /home
 /dev/dm-4              317M    11M   290M   4% /tmp
 /dev/dm-1              3,7G   1,7G   1,8G  50% /usr
 '''/dev/hdb1              5,3G   1,1G   4,0G  21% /var'''
 /dev/dm-2              1,8G   876M   818M  52% /media/dm-2

'''Si vous disposez de plus de 50% d’espace libre vous pouvez passer à l'étape suivante'''.

Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Si cela ne suffit toujours pas, il faut envisager d'ajouter un disque à votre système, ou de procéder à un upgrade par étapes successives (en mettant à jour les paquets progressivement et en nettoyant à chaque étape)

=== Les pilotes de la carte Graphique ===

Afin de ne pas avoir de mauvaise surprise avec le serveur X, modifiez votre xorg.conf afin d'utiliser des pilotes Debian.

Eventuellement utilisez les pilotes &quot;vesa&quot;

Dans votre fichier /etc/X11/xorg.conf

&lt;code&gt;
Section &quot;Device&quot;
    Identifier     &quot;Device0&quot;
    Driver         &quot;vesa&quot;
EndSection
&lt;/code&gt;

Si vous êtes sûr de vous, n'en faites rien, mais prévoyez une réinstallation des pilotes avant le premier redémarrage.

=== Le fichier sources.list ===

Créons un nouveau sources.list que nous placerons dans /etc/apt/sources.list.d
Nous prenons dores et déjà la bonne habitude d'utiliser ce dossier qui est devenu celui par défaut pour mettre les fichiers contenant les dépôts.

 # nano /etc/apt/sources.list.d/sources.list

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free

# stable security
deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

## stable volatile
## Le dépôt volatile à changé, il est désormais sous &quot;squeeze-updates&quot;
deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib

# stable multimedia
deb http://www.debian-multimedia.org squeeze main non-free
#deb-src http://www.debian-multimedia.org squeeze main non-free

# backports
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
&lt;/code&gt;

== Préparation de la mise à niveau ==

Maintenant que nous sommes prêts, nous pouvons lancer l'upgrade :

Mise à jour de la liste des paquets :

 # aptitude update

=== Si vous avez des problèmes de clefs ===

 W: GPG error: http://www.debian-multimedia.org

 # aptitude install debian-backports-keyring
 # aptitude install debian-multimedia-keyring

=== Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]] ===

 E: Dynamic MMap ran out of room

 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaite l'update, il ne doit pas y avoir d'erreurs

 # aptitude update

=== Problèmes de dépendances ===

Vous ne pourrez pas faire le passage de Lenny à Squeeze tant que subsisteront des problèmes de dépendances...

Voici deux exemples de problèmes de dépendances, et la manière de les régler :

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  xfce4-mixer-oss: Est en conflit avec: xfce4-mixer-alsa mais 4.4.2-3 est installé.
  foomatic-db: Est en conflit avec: foomatic-db-hpijs mais 20080211-1 est installé.
  xfce4-mixer-alsa: Est en conflit avec: xfce4-mixer-oss mais 4.4.2-3 doit être installé.

# aptitude install foomatic-db xfce4-mixer-alsa
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Lecture des descriptions de tâches... Fait  
Les NOUVEAUX paquets suivants vont être installés : 
  libopenjpeg2{a} libpoppler5{a} min12xxw{a} pnm2ppa{a} 
Les paquets suivants seront ENLEVÉS : 
  foomatic-db-hpijs{a} 
Les paquets suivants seront mis à jour : 
  fontconfig-config foomatic-db foomatic-db-engine foomatic-filters libfontconfig1 libjpeg62 libxml2 poppler-utils 
8 paquets mis à jour, 4 nouvellement installés, 1 à enlever et 728 non mis à jour.
Il est nécessaire de télécharger 4722ko d'archives. Après dépaquetage, 18,2Mo seront libérés.
Voulez-vous continuer ? [Y/n/?] o
...
État actuel : 728 mises à jour restantes [-8].
&lt;/code&gt;

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  libatlas3gf-base: Est en conflit avec: libblas3gf (&lt; 1.2-5) mais 1.2-2 est installé et a été conservé
                    Est en conflit avec: liblapack3gf (&lt; 3.2.1-4) mais 3.1.1-1 est installé et a été conservé
  rarian-compat: Est en conflit avec: scrollkeeper (&lt; 0.4) mais 0.3.14-16 est installé et a été conservé

# aptitude install libatlas3gf-base scrollkeeper
...
Les actions suivantes permettront de résoudre ces dépendances :

Mettre à jour les paquets suivants :
libblas3gf [1.2-2 (stable, now) -&gt; 1.2-8 (testing)]
liblapack3gf [3.1.1-1 (stable, now) -&gt; 3.2.1-8 (testing)]

Le score est de 70

Accepter cette solution ? [Y/n/q/?] y
...
État actuel : 725 mises à jour restantes [-3].
&lt;/code&gt;

En cas de doute n'hésitez pas à demander un avis [http://forum.debian-fr.org/ sur le forum]

=== stopper le serveur X ===

'''IMPORTANT''' : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

Si vous faites votre mise à niveau avec le serveur X lancé, vous risquez [http://www.debian-fr.org/upgrade-lenny-squeeze-gnome-minimaliste-t30744.html cette mésaventure]

== Lancez la mise à niveau ==

'''Attention''', Debian recommande désormais d'utiliser apt-get à la place de aptitude pour la mise à niveau : http://www.debian.org/releases/squeeze/i386/release-notes/ch-upgrading.en.html#upgradingpackages

Ce tuto ayant été réalisé avant cette préconisation, il n'est pas à jour concernant ce point précis.

=== A propos de Udev et du Noyau ===

Il est TRèS fortement recommandé de mettre à jour le noyau et udev avant de se lancer dans la mise à niveau. En effet, le noyau Lenny est incompatible avec la version de udev qui se trouve dans squeeze.

 # apt-get install linux-image-2.6 (ou linux-image-2.6-amd64)
 # apt-get install udev

Vous devez maintenant redémarrer le système pour être sur le noyau Squeeze (2.6.32)
Vous pouvez maintenant lancer la mise à niveau :

=== Mise à niveau ===

'''Rappel''': Plutôt que aptitude, utilisez apt-get pour la mise à niveau.

 # apt-get upgrade
 # apt-get dist-upgrade

&lt;code&gt;
# aptitude safe-upgrade (apt-get upgrade)
...
Les paquets suivants ont été conservés : 
  apt apt-utils aptitude synaptic 
Les NOUVEAUX paquets suivants vont être installés : 
  acpi-fakekey{a} apache2.2-bin{a} aumix{a} aumix-common{a} bluez{a} bluez-alsa{a} bluez-cups{a} bluez-gstreamer{a} 
  browser-plugin-gnash{a} cifs-utils{a} consolekit{a} cpp-4.4{a} cracklib-runtime{a} cups-ppdc{a} dash{a} db4.8-util{a} 
  diffutils{a} dosfstools{a} firmware-linux-free{a} freepats{a} fuse-utils{a} gcc-4.4-base{a} gcj-4.4-base{a} 
  gcj-4.4-jre-lib{a} geoip-database{a} ghostscript-cups{a} gnash{a} gnash-common{a} gnupg-curl{a} grub-pc{a} 
  gstreamer0.10-ffmpeg{a} gstreamer0.10-fluendo-mp3{a} gstreamer0.10-plugins-bad{a} gstreamer0.10-plugins-base{a} gvfs{a} 
  hplip-cups{a} insserv{a} install-info{a} isc-dhcp-client{a} isc-dhcp-common{a} iso-codes{a} keyboard-configuration{a} 
  libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libass4{a} libatasmart4{a} libaudit0{a} libavahi-core7{a} libavcodec52{a} 
  libavformat52{a} libavutil50{a} libbabl-0.0-0{a} libbind9-60{a} libbluetooth3{a} libboost-date-time1.42.0{a} 
  libboost-thread1.42.0{a} libbsd0{a} libburn4{a} libc-bin{a} libc-client2007e{a} libcap-ng0{a} libcdaudio1{a} libcdio10{a} 
  libcdparanoia0{a} libcelt0-0{a} libck-connector0{a} libcolamd2.7.1{a} libcommons-beanutils-java{a} 
  libcommons-collections3-java{a} libcommons-compress-java{a} libcommons-digester-java{a} libcommons-logging-java{a} 
  libcrack2{a} libcupscgi1{a} libcupsdriver1{a} libcupsmime1{a} libcupsppdc1{a} libdatrie1{a} libdb-je-java{a} libdb4.7{a} 
  libdb4.7-java{a} libdb4.7-java-gcj{a} libdb4.8{a} libdc1394-22{a} libdca0{a} libdirac-encoder0{a} libdirectfb-1.2-9{a} 
  libdns66{a} libdrm-intel1{a} libdrm-nouveau1{a} libdrm-radeon1{a} libdvdnav4{a} libdvdread4{a} libeggdbus-1-0{a} libenca0{a} 
  libenchant1c2a{a} libevent-1.4-2{a} libexempi3{a} libexo-common{a} libfaad2{a} libfftw3-3{a} libfile-copy-recursive-perl{a} 
  libflite1{a} libfont-freetype-perl{a} libfuse2{a} libgcj10{a} libgcr0{a} libgdu0{a} libgegl-0.0-0{a} libgeoip1{a} libgif4{a} 
  libgme0{a} libgomp1{a} libgp11-0{a} libgpgme11{a} libgraphicsmagick3{a} libgraphite3{a} libgssapi-krb5-2{a} libgtkglext1{a} 
  libgudev-1.0-0{a} libhpmud0{a} libicu44{a} libicu4j-java{a} libiptcdata0{a} libisc60{a} libisccc60{a} libisccfg60{a} 
  libiso9660-7{a} libisofs6{a} libiw30{a} libjbig2dec0{a} libjpeg-progs{a} libjpeg8{a} libjtidy-java{a} libk5crypto3{a} 
  libkate1{a} libkrb5-3{a} libkrb5support0{a} libltdl7{a} liblucene2-java{a} liblwres60{a} liblzma2{a} libmimic0{a} libmms0{a} 
  libmodplug1{a} libmozjs2d{a} libmpcdec6{a} libmpfr4{a} libmusicbrainz4c2a{a} libmythes-1.2-0{a} libneon27-gnutls{a} 
  libnetaddr-ip-perl{a} libnfnetlink0{a} libnl1{a} libntfs-3g75{a} libntfs10{a} libofa0{a} libonig2{a} libopencore-amrnb0{a} 
  libopencore-amrwb0{a} libopenraw1{a} liborc-0.4-0{a} libossp-uuid16{a} libpam-ck-connector{a} libpam-cracklib{a} 
  libpango-perl{a} libpangomm-1.4-1{a} libparted0debian1{a} libpciaccess0{a} libpolkit-agent-1-0{a} libpolkit-backend-1-0{a} 
  libpolkit-gobject-1-0{a} libpoppler-glib4{a} libpth20{a} libpython2.6{a} libqdbm14{a} libraptor1{a} librasqal2{a} 
  libraw1394-11{a} librdf0{a} libreadline6{a} librtmp0{a} libsane-hpaio{a} libsasl2-modules{a} libservlet2.5-java{a} 
  libsexy2{a} libsgutils2-2{a} libslv2-9{a} libsndfile1{a} libsoundtouch1c2{a} libswscale0{a} libtag1-vanilla{a} libtalloc2{a} 
  libtextcat-data-utf8{a} libtokyocabinet8{a} libudev0{a} libunique-1.0-0{a} libusb-1.0-0{a} libutempter0{a} libuuid-perl{a} 
  libv4l-0{a} libva1{a} libvcdinfo0{a} libvisual-0.4-0{a} libvisual-0.4-plugins{a} libvpx0{a} libwebkit-1.0-2{a} 
  libwebkit-1.0-common{a} libwildmidi1{a} libwnck-common{a} libwnck22{a} libx11-xcb1{a} libx264-104{a} libxcb-atom1{a} 
  libxcb-aux0{a} libxcb-dri2-0{a} libxcb-event1{a} libxfce4menu-0.1-0{a} libxfce4util-bin{a} libxfce4util-common{a} 
  libxfconf-0-2{a} libxklavier16{a} libxml-parser-perl{a} libxres1{a} libzbar0{a} linux-base{a} linux-image-2.6.32-5-amd64{a} 
  lockfile-progs{a} lsb-release{a} mtools{a} ntfsprogs{a} os-prober{a} oss-compat{a} php5-cli{a} php5-suhosin{a} 
  policykit-1{a} policykit-1-gnome{a} postgresql-8.4{a} postgresql-client-8.4{a} postgresql-contrib-8.4{a} 
  postgresql-doc-8.4{a} python-cups{a} python-gconf{a} python-numpy{a} python-pexpect{a} python-reportbug{a} python-webkit{a} 
  python2.6{a} python2.6-minimal{a} ristretto{a} samba-common-bin{a} sane-utils{a} sensible-utils{a} squeeze{a} 
  tango-icon-theme{a} thunar-archive-plugin{a} thunar-volman{a} tsconf{a} ttf-freefont{a} ttf-lyx{a} ttf-sil-gentium{a} 
  ttf-sil-gentium-basic{a} udisks{a} uno-libs3{a} unzip{a} ure{a} x-ttcidfont-conf{a} xdg-user-dirs{a} xfburn{a} 
  xfce-keyboard-shortcuts{a} xfce4-appfinder{a} xfce4-clipman{a} xfce4-datetime-plugin{a} xfce4-dict{a} xfce4-notes{a} 
  xfce4-notifyd{a} xfce4-places-plugin{a} xfce4-power-manager{a} xfce4-power-manager-data{a} xfce4-screenshooter{a} 
  xfce4-settings{a} xfce4-taskmanager{a} xfce4-timer-plugin{a} xfce4-xkb-plugin{a} xfconf{a} xfonts-mathml{a} xinput{a} xli{a} 
  xorg-docs-core{a} xscreensaver{a} xscreensaver-data{a} xserver-common{a} xserver-xorg-video-nouveau{a} xulrunner-1.9.1{a} 
  xz-utils{a} 
Les paquets suivants seront ENLEVÉS : 
  bluez-utils{u} cpp-4.3{u} cupsddk-drivers{u} djvulibre-desktop{u} finger{u} gs-common{u} liba52-0.7.4{u} libamrnb3{u} 
  libamrwb3{u} libaudio2{u} libavahi-compat-libdnssd1{u} libavahi-core5{u} libavc1394-0{u} libavcodec51{u} libbind9-50{u} 
  libbluetooth2{u} libc-client2007b{u} libcap1{u} libcucul0{u} libcupsys2{u} libcurl3{u} libdatrie0{u} libdirac0{u} 
  libdjvulibre21{u} libfaad0{u} libfreebob0{u} libgail-common{u} libgraphviz4{u} libgtkhtml2-0{u} libicu38{u} libiec61883-0{u} 
  libisccc50{u} libisccfg50{u} libiw29{u} libjaxp1.3-java-gcj{u} libltdl3{u} liblwres50{u} libmagick10{u} libmodplug0c2{u} 
  libmozjs1d{u} libmpcdec3{u} libmpfr1ldbl{u} libmysqlclient15off{u} libneon27{u} libntfs-3g31{u} libossp-uuid15{u} 
  libparted1.8-10{u} libpoppler-glib3{u} libpoppler3{u} libqt3-mt{u} libraw1394-8{u} libsensors3{u} libservlet2.4-java{u} 
  libsmbios-bin{u} libsmbios2{u} libssh2-1{u} libsuitesparse-3.1.0{u} libswfdec-0.6-90{u} libtalloc1{u} libvolume-id0{u} 
  libx264-65{u} libxalan2-java{u} libxalan2-java-gcj{u} libxcb-xlib0{u} libxerces2-java{u} libxerces2-java-gcj{u} 
  libxfce4mcs-client3{u} libxfce4mcs-manager3{u} libxtrap6{u} libxxf86misc1{u} mysql-common{u} openoffice.org-writer2latex{u} 
  openssl-blacklist{u} postgresql-8.3{u} postgresql-client-8.3{u} postgresql-contrib-8.3{u} postgresql-doc-8.3{u} 
  python-gtkhtml2{u} python-numeric{u} svgalibg1{u} xfce4-icon-theme{u} xfce4-mcs-manager{u} xfce4-mcs-plugins{u} 
  xfce4-minicmd-plugin{u} xfce4-screenshooter-plugin{u} xserver-xorg-video-cyrix{u} xserver-xorg-video-v4l{u} 
  xserver-xorg-video-vga{u} xulrunner-1.9{u} 
Les paquets suivants seront mis à jour : 
  a2ps acpi acpi-support acpi-support-base acpid adduser alsa-base alsa-utils anacron analog apache2 apache2-doc 
  apache2-mpm-prefork apache2-utils apache2.2-common apmd aspell aspell-fr at avahi-autoipd avahi-daemon base-files 
  base-passwd bash bash-completion bc bind9 bind9-doc bind9-host bind9utils bluetooth bsd-mailx bsdmainutils bsdutils bsh 
  bsh-gcj busybox ca-certificates console-common console-data console-setup console-terminus console-tools coreutils cpio cpp 
  cpufrequtils cron cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk dbus dbus-x11 dc debconf debconf-i18n 
  debian-archive-keyring debian-faq debianutils deborphan defoma desktop-base desktop-file-utils dhcp3-client dhcp3-common 
  dialog dictionaries-common diff disk-manager dmidecode dmsetup dnsutils doc-debian docbook-xml dpkg e2fslibs e2fsprogs ed 
  eject esound-common exim4 exim4-base exim4-config exim4-daemon-light exo-utils fastjar file findutils fontconfig foo2zjs 
  foomatic-db-gutenprint foomatic-filters-ppds foomatic-gui fortune-mod fortunes-min ftp gcc-4.3-base gconf2 gconf2-common gdm 
  gettext-base ghostscript gimp gimp-data gksu gnome-keyring gnupg gparted gpgv grep groff-base grub grub-common gsfonts 
  gtk2-engines-xfce gzip hal hal-info hdparm hibernate hicolor-icon-theme hostname hpijs hplip hplip-data iamerican ibritish 
  iceweasel iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint info initramfs-tools initscripts installation-report iproute 
  iptables iputils-ping ispell java-common kerneloops klibc-utils laptop-detect less libaa1 libacl1 libapache2-mod-perl2 
  libapache2-mod-php5 libapache2-mod-python libapm1 libapr1 libaprutil1 libart-2.0-2 libasound2 libaspell15 libatk1.0-0 
  libattr1 libaudiofile0 libavahi-client3 libavahi-common-data libavahi-common3 libavahi-glib1 libavutil49 libbcel-java 
  libblkid1 libbonobo2-0 libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i386 libcaca0 
  libcairo-perl libcairo2 libcairomm-1.0-1 libcap2 libcomerr2 libconsole libcpufreq0 libcroco3 libcups2 libcupsimage2 
  libcurl3-gnutls libcwidget3 libdaemon0 libdb4.6 libdbus-1-3 libdbus-glib-1-2 libdevel-symdump-perl libdevmapper1.02.1 
  libdigest-hmac-perl libdigest-sha1-perl libdirectfb-extra libdmx1 libdrm2 libedit2 libesd0 libexif12 libexo-0.3-0 libexpat1 
  libfaac0 libfam0 libffi5 libflac8 libfontenc1 libfreetype6 libfs6 libgail18 libgc1c2 libgcc1 libgcj-bc libgcj-common 
  libgconf2-4 libgcrypt11 libgd2-noxpm libgdbm3 libgfortran3 libgimp2.0 libgksu2-0 libgl1-mesa-dri libgl1-mesa-glx libglade2-0 
  libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgmp3c2 libgnome-keyring0 libgnome2-0 libgnome2-canvas-perl 
  libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0 libgnomecanvas2-common libgnomeui-0 libgnomeui-common 
  libgnomevfs2-0 libgnomevfs2-common libgnomevfs2-extra libgnutls26 libgpg-error0 libgphoto2-2 libgphoto2-port0 libgpm2 libgs8 
  libgsf-1-114 libgsf-1-common libgsm1 libgssglue1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0 
  libgtk2.0-common libgtkmm-2.4-1c2a libgtop2-7 libgtop2-common libgutenprint2 libhal-storage1 libhal1 libhsqldb-java 
  libhsqldb-java-gcj libhtml-parser-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libice6 libidl0 libidn11 libieee1284-3 
  libijs-0.35 libilmbase6 libjack0 libjasper1 libjaxp1.3-java libjline-java libkeyutils1 libklibc libkrb53 liblcms1 
  libldap-2.4-2 liblocale-gettext-perl liblockfile1 liblog4j1.2-java liblzo2-2 libmad0 libmagic1 libmng1 libmp3lame0 
  libmx4j-java libncurses5 libncursesw5 libnet-dns-perl libnewt0.52 libnfsidmap2 libnotify1 libnspr4-0d libnss-mdns libnss3-1d 
  libogg0 liboil0.3 libopenexr6 liborbit2 libpam-modules libpam-runtime libpam0g libpango1.0-0 libpango1.0-common libpaper1 
  libpci3 libpcre3 libpcsclite1 libperl5.10 libpixman-1-0 libpng12-0 libpopt0 libpostproc51 libpq5 libpulse0 libreadline5 
  librecode0 libregexp-java librpcsecgss3 librsvg2-2 librsvg2-common libsane libsane-extras libsasl2-2 libschroedinger-1.0-0 
  libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsensors4 libsepol1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 
  libsmbclient libsnmp-base libsnmp15 libsocket6-perl libsoup2.4-1 libsqlite3-0 libss2 libssl0.9.8 libstartup-notification0 
  libstdc++6 libsvga1 libsysfs2 libtag1c2a libtagc0 libtasn1-3 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl 
  libthai-data libthai0 libtheora0 libthunar-vfs-1-2 libtiff4 libts-0.0-0 liburi-perl libusb-0.1-4 libuuid1 libvorbis0a 
  libvorbisenc2 libvte-common libvte9 libwavpack1 libwbclient0 libwmf0.2-7 libwpg-0.1-1 libwrap0 libwww-perl libx11-6 
  libx11-data libx86-1 libxau6 libxaw7 libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xv0 libxcb1 
  libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfce4util4 libxfcegui4-4 libxfixes3 libxfont1 libxft2 libxi6 
  libxine1 libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins libxine1-plugins libxine1-x libxinerama1 
  libxkbfile1 libxmu6 libxmuu1 libxpm4 libxrandr2 libxrender1 libxslt1.1 libxss1 libxt6 libxtst6 libxv1 libxvidcore4 libxvmc1 
  libxxf86dga1 libxxf86vm1 linux-image-2.6-amd64 linux-sound-base locales login logrotate lp-solve lsb-base lsof lvm2 lwresd 
  m4 mailagent makedev man-db manpages manpages-fr manpages-fr-extra mawk mc menu mime-support mktemp mlocate mlock 
  module-init-tools mount mousepad mutt myspell-en-us myspell-fr-gut nano ncurses-base ncurses-bin ncurses-term net-tools 
  netatalk netbase nfs-common nfs-kernel-server ntfs-3g nvclock openbsd-inetd openoffice.org openoffice.org-base 
  openoffice.org-base-core openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw 
  openoffice.org-filter-mobiledev openoffice.org-gcj openoffice.org-gtk openoffice.org-help-en-us openoffice.org-help-fr 
  openoffice.org-impress openoffice.org-java-common openoffice.org-l10n-fr openoffice.org-math openoffice.org-officebean 
  openoffice.org-report-builder-bin openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-thesaurus-en-us 
  openoffice.org-writer openprinting-ppds openssh-client openssh-server openssl orage passwd patch pciutils pcmciautils perl 
  perl-base perl-modules php5-common pm-utils popularity-contest portmap postgresql postgresql-client postgresql-client-common 
  postgresql-common postgresql-contrib postgresql-doc powermgmt-base powertop printconf procmail procps psmisc psutils python 
  python-cairo python-central python-dbus python-foomatic python-glade2 python-gnome2 python-gobject python-gtk2 
  python-imaging python-ipy python-minimal python-pyorbit python-support python2.5 python2.5-minimal qpopper radeontool 
  readline-common reportbug rsyslog sa-exim samba samba-common samba-doc sed sgml-base sgml-data shared-mime-info 
  smartmontools smbclient smbfs spamassassin spamc ssl-cert sudo swat swfdec-mozilla sysv-rc sysvinit sysvinit-utils tar 
  tasksel tasksel-data tcpd texinfo thunar thunar-data thunar-media-tags-plugin time toshset traceroute ttf-dejavu 
  ttf-dejavu-core ttf-dejavu-extra ttf-liberation ttf-opensymbol tzdata ucf udev update-inetd usbutils util-linux uw-imapd 
  vbetool vim-common vim-tiny w3m wamerican wfrench wget whiptail whois winbind wireless-tools wpasupplicant x11-apps 
  x11-common x11-session-utils x11-utils x11-xfs-utils x11-xkb-utils x11-xserver-utils xauth xbitmaps xdg-utils xfce4 
  xfce4-battery-plugin xfce4-clipman-plugin xfce4-cpufreq-plugin xfce4-cpugraph-plugin xfce4-diskperf-plugin 
  xfce4-fsguard-plugin xfce4-genmon-plugin xfce4-goodies xfce4-mailwatch-plugin xfce4-mixer xfce4-mount-plugin 
  xfce4-netload-plugin xfce4-notes-plugin xfce4-panel xfce4-quicklauncher-plugin xfce4-sensors-plugin xfce4-session 
  xfce4-smartbookmark-plugin xfce4-systemload-plugin xfce4-terminal xfce4-utils xfce4-verve-plugin xfce4-wavelan-plugin 
  xfce4-weather-plugin xfdesktop4 xfdesktop4-data xfonts-100dpi xfonts-75dpi xfonts-base xfonts-encodings xfonts-intl-european 
  xfonts-scalable xfonts-utils xfprint4 xfwm4 xinit xkb-data xml-core xorg xsane xsane-common xserver-xorg xserver-xorg-core 
  xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd xserver-xorg-input-mouse xserver-xorg-input-synaptics 
  xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati 
  xserver-xorg-video-chips xserver-xorg-video-cirrus xserver-xorg-video-dummy xserver-xorg-video-fbdev 
  xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-intel xserver-xorg-video-mach64 xserver-xorg-video-mga 
  xserver-xorg-video-neomagic xserver-xorg-video-nv xserver-xorg-video-openchrome xserver-xorg-video-r128 
  xserver-xorg-video-radeon xserver-xorg-video-radeonhd xserver-xorg-video-rendition xserver-xorg-video-s3 
  xserver-xorg-video-s3virge xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis 
  xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident xserver-xorg-video-tseng 
  xserver-xorg-video-vesa xserver-xorg-video-vmware xserver-xorg-video-voodoo xterm zlib1g 
Les paquets suivants sont RECOMMANDÉS mais ne seront pas installés :
  bzip2 gamin gcc gdm-themes hddtemp libapache2-reload-perl libatk1.0-data libatm1 libbsd-resource-perl libc6-dev libfribidi0 
  libglib2.0-data libgtk2.0-bin libhtml-format-perl libio-socket-inet6-perl liblog4j1.2-java-gcj libmail-spf-perl 
  libmailtools-perl libnss-lwres libpam-gnome-keyring libpaper-utils lm-sensors make nmap openoffice.org-emailmerge 
  openoffice.org-filter-binfilter pconf-detect rc re2c uuid-runtime wdiff xfwm4-themes xnest xserver-xephyr zenity 
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] 
&lt;/code&gt;

En fonction de votre connexion ça peut prendre très longtemps, et être interrompu (à 500KB/s une demi-heure à 50 KB/s c'est plusieurs heures...).
Un conseil, si vous n'êtes pas sûr de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

&lt;code&gt;
# aptitude -d safe-upgrade (apt-get -d upgrade)
...
 762Mo téléchargés en 1h9min37s (182ko/s)                                                          
Lecture des listes de paquets... Fait             
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait
&lt;/code&gt;

Puis

&lt;code&gt;
# aptitude safe-upgrade (apt-get upgrade)
...
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 0o/762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] y
&lt;/code&gt;

=== Déroulement ===

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut, mais prenez le temps de lire tous les messages, et si nécessaire, prenez des notes.

Sans le téléchargement des fichiers, comptez un peu plus d'une heure pour la mise à niveau.

[[Fichier:Snapshot4.jpeg]]

[[Fichier:Snapshot5.jpeg]]

[[Fichier:Snapshot6.jpeg]]

[[Fichier:Snapshot7.jpeg]]

[[Fichier:Snapshot9.jpeg]]

[[Fichier:Snapshot11.jpeg]]

[[Fichier:Snapshot13.jpeg]]

[[Fichier:Snapshot14.jpeg]]

[[Fichier:Snapshot15.jpeg]]

[[Fichier:Snapshot16.jpeg]]

[[Fichier:Snapshot17.jpeg]]

Vous partirez d'une Lenny configurée, et donc de nombreux fichiers de configuration auront été modifiés par vos soins.
Il est judicieux de ne pas écraser vos configurations avec les fichiers par défaut proposés par les &quot;mainteneurs&quot; des paquets.
Vous aurez tout le loisir de regarder les modifications proposées, et ce qu'elles apportent, en regardant dans /usr/share/doc ou dans les contenus de vos deb téléchargés (dans /var/apt/archives)

[[Fichier:Snapshot18.jpeg]]

=== finalisation ===

Le safe-upgrade devrait se terminer par ceci :

&lt;code&gt;
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 4 mises à jour restantes [-721].
&lt;/code&gt;

Vous pouvez maintenant lancer un &quot;full-upgrade&quot;

&lt;code&gt;
# aptitude full-upgrade

...

4 paquets mis à jour, 13 nouvellement installés, 2 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 12,1Mo d'archives. Après dépaquetage, 14,3Mo seront utilisés.
Les paquets suivants ont des dépendances non satisfaites :
  libept0: Dépend: libapt-pkg-libc6.7-6-4.6 qui est un paquet virtuel
Les actions suivantes permettront de résoudre ces dépendances :

Supprimer les paquets suivants :
libept0

Le score est de 115

Accepter cette solution ? [Y/n/q/?]y

...

Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 0 mise à jour restante [-4].
&lt;/code&gt;

Si tout s'est bien passé, il ne vous reste plus qu'a redémarrer la machine :

 # shutdown -r now

=== Grub2 ===

Si vous étiez sous Grub-legacy vous aurez certainement fait la bascule vers Grub2.

La première &quot;surprise&quot; qui vous attend donc (sauf si vous avez lu ce guide avant...) c'est le menu suivant :

[[Fichier:Snapshot19.jpeg]]

Si vous appuyez sur entrée, vous serez conduit vers le menu de Grub2.
Cette étape permet de vérifier que Grub2 est bien installé, et de le tester.

[[Fichier:Snapshot20.jpeg]]

Si cela fonctionne, une des premières choses à faire sera de confirmer l'installation de Grub2 en tapant dans une console la commande suivante :

 # upgrade-from-grub-legacy

=== LVM ===

Problème rencontré lors de la mise à niveau avec LVM...
Le système s'est mélangé les pédales dans l'attribution des partitions.
Résultat :

[[Fichier:Snapshot21.jpeg]]

Voici ou se situe le problème :

&lt;code&gt;
$ vdir /dev/l2s/
total 0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 home -&gt; ../dm-5
lrwxrwxrwx 1 root root 7 25 nov.  18:28 root -&gt; ../dm-0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 swap_1 -&gt; ../dm-1
lrwxrwxrwx 1 root root 7 25 nov.  18:28 tmp -&gt; ../dm-4
lrwxrwxrwx 1 root root 7 25 nov.  18:28 usr -&gt; ../dm-2
lrwxrwxrwx 1 root root 7 25 nov.  18:28 var -&gt; ../dm-3
&lt;/code&gt;
&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
# /dev/hda1	/boot	ext2	defaults	0	2
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-1	/usr	ext3	defaults	0	2
# /dev/hdb1	/var	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-3	none	swap	sw	0	0
# /dev/hdc	/media/cdrom0	udf,iso9660	user,noauto	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

Je ne sais pour quelle raison LVM à changé la numérotation des partitions... /usr est passé en dm-1 alors qu'il était en dm-2 et la swap en dm-3 alors qu'elle était être en dm-1
Il suffit de modifier le fichier /etc/fstab pour qu'il reflète à nouveau correctement vos partitions, et le tour est joué :

&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-2	/usr	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-1	none	swap	sw	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

== Bienvenu sur Squeeze ==

 laurent@lenny2squeeze:~$ uname -a
 Linux lenny2squeeze 2.6.32-5-amd64 #1 SMP Sat Oct 30 14:18:21 UTC 2010 x86_64 GNU/Linux

[[Fichier:Snapshot25.jpeg]]

A venir... Upgrade de Squeeze à ????

----
[[Utilisateur:Lol|Lol]] 25 novembre 2010 à 15:55 (EAT)
[[Catégorie:Installation]]</text>
      <sha1>mog4ie0q8qg263vvt1gy4sb8d1rvqvs</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2699</id>
      <parentid>2698</parentid>
      <timestamp>2011-02-09T12:10:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* finalisation */</comment>
      <text xml:space="preserve" bytes="32671">{{sid}}

La mise à niveau de Lenny à Squeeze se précise, nous allons faire ici un rapide résumé des opérations nécessaires à la réussite de cette mise à niveau (upgrade).
LVM est installé sur la machine que nous allons mettre à niveau afin de tester le plus de possibilités.

Avant toute chose, je souhaite faire quelques précisions :
Chaque configuration est propre à chacun, en fonction de ses goûts, de son matériel et de ses connaissances.
Un guide universel n'existe donc pas.

Prévoyez aussi d'avoir du temps devant vous, et d'être au calme.

Nous choisirons d'utiliser aptitude au lieu de apt-get, il est en effet plus exigeant concernant les dépendances, votre mise à niveau sera plus &quot;propre&quot;.

J'ai choisi une Lenny avec toutes les options de tasksel activées afin de faire un tour d'horizon le plus vaste possible des problèmes qui pourraient survenir.
L'environnement graphique est Xfce.

[[Fichier:Snapshot3.jpeg]]

== Pré-requis ==

=== Une bonne sauvegarde ===

Vous n'avez AUCUNE garantie que la mise à niveau se passe bien, alors, quel que soit la méthode que vous emploierez, une sauvegarde est le minimum que vous puissiez faire avant de vous lancer dans l'aventure..

Avec dd, dump ou simplement cp SAUVEGARDEZ !

=== Un système à jour! ===

Le fichier sources.list précédent la mise à niveau :

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org stable main non-free
#deb-src http://www.debian-multimedia.org stable main non-free

# backports
deb http://backports.debian.org/debian-backports lenny-backports main contrib non-free
&lt;/code&gt;

 # aptitude update
 # aptitude safe-upgrade
 # aptitude full-upgrade

=== De l'espace! ===

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition où se trouve /var pour le stockage des paquets téléchargés.

Pour info une mise à jour &quot;lourde&quot; se soldera par le téléchargement d'environ 1Go...

Pour connaitre l’espace libre de votre partition racine :

 $ df -H
 Sys. de fich.          Tail.  Occ.  Disp. %Occ. Monté sur
 '''/dev/dm-0              338M   123M   198M  39% /'''
 tmpfs                  262M      0   262M   0% /lib/init/rw
 udev                    11M   689k   9,8M   7% /dev
 tmpfs                  262M      0   262M   0% /dev/shm
 /dev/hda1              239M    20M   207M   9% /boot
 /dev/dm-5              3,7G    75M   3,4G   3% /home
 /dev/dm-4              317M    11M   290M   4% /tmp
 /dev/dm-1              3,7G   1,7G   1,8G  50% /usr
 '''/dev/hdb1              5,3G   1,1G   4,0G  21% /var'''
 /dev/dm-2              1,8G   876M   818M  52% /media/dm-2

'''Si vous disposez de plus de 50% d’espace libre vous pouvez passer à l'étape suivante'''.

Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Si cela ne suffit toujours pas, il faut envisager d'ajouter un disque à votre système, ou de procéder à un upgrade par étapes successives (en mettant à jour les paquets progressivement et en nettoyant à chaque étape)

=== Les pilotes de la carte Graphique ===

Afin de ne pas avoir de mauvaise surprise avec le serveur X, modifiez votre xorg.conf afin d'utiliser des pilotes Debian.

Eventuellement utilisez les pilotes &quot;vesa&quot;

Dans votre fichier /etc/X11/xorg.conf

&lt;code&gt;
Section &quot;Device&quot;
    Identifier     &quot;Device0&quot;
    Driver         &quot;vesa&quot;
EndSection
&lt;/code&gt;

Si vous êtes sûr de vous, n'en faites rien, mais prévoyez une réinstallation des pilotes avant le premier redémarrage.

=== Le fichier sources.list ===

Créons un nouveau sources.list que nous placerons dans /etc/apt/sources.list.d
Nous prenons dores et déjà la bonne habitude d'utiliser ce dossier qui est devenu celui par défaut pour mettre les fichiers contenant les dépôts.

 # nano /etc/apt/sources.list.d/sources.list

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free

# stable security
deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

## stable volatile
## Le dépôt volatile à changé, il est désormais sous &quot;squeeze-updates&quot;
deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib

# stable multimedia
deb http://www.debian-multimedia.org squeeze main non-free
#deb-src http://www.debian-multimedia.org squeeze main non-free

# backports
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
&lt;/code&gt;

== Préparation de la mise à niveau ==

Maintenant que nous sommes prêts, nous pouvons lancer l'upgrade :

Mise à jour de la liste des paquets :

 # aptitude update

=== Si vous avez des problèmes de clefs ===

 W: GPG error: http://www.debian-multimedia.org

 # aptitude install debian-backports-keyring
 # aptitude install debian-multimedia-keyring

=== Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]] ===

 E: Dynamic MMap ran out of room

 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaite l'update, il ne doit pas y avoir d'erreurs

 # aptitude update

=== Problèmes de dépendances ===

Vous ne pourrez pas faire le passage de Lenny à Squeeze tant que subsisteront des problèmes de dépendances...

Voici deux exemples de problèmes de dépendances, et la manière de les régler :

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  xfce4-mixer-oss: Est en conflit avec: xfce4-mixer-alsa mais 4.4.2-3 est installé.
  foomatic-db: Est en conflit avec: foomatic-db-hpijs mais 20080211-1 est installé.
  xfce4-mixer-alsa: Est en conflit avec: xfce4-mixer-oss mais 4.4.2-3 doit être installé.

# aptitude install foomatic-db xfce4-mixer-alsa
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Lecture des descriptions de tâches... Fait  
Les NOUVEAUX paquets suivants vont être installés : 
  libopenjpeg2{a} libpoppler5{a} min12xxw{a} pnm2ppa{a} 
Les paquets suivants seront ENLEVÉS : 
  foomatic-db-hpijs{a} 
Les paquets suivants seront mis à jour : 
  fontconfig-config foomatic-db foomatic-db-engine foomatic-filters libfontconfig1 libjpeg62 libxml2 poppler-utils 
8 paquets mis à jour, 4 nouvellement installés, 1 à enlever et 728 non mis à jour.
Il est nécessaire de télécharger 4722ko d'archives. Après dépaquetage, 18,2Mo seront libérés.
Voulez-vous continuer ? [Y/n/?] o
...
État actuel : 728 mises à jour restantes [-8].
&lt;/code&gt;

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  libatlas3gf-base: Est en conflit avec: libblas3gf (&lt; 1.2-5) mais 1.2-2 est installé et a été conservé
                    Est en conflit avec: liblapack3gf (&lt; 3.2.1-4) mais 3.1.1-1 est installé et a été conservé
  rarian-compat: Est en conflit avec: scrollkeeper (&lt; 0.4) mais 0.3.14-16 est installé et a été conservé

# aptitude install libatlas3gf-base scrollkeeper
...
Les actions suivantes permettront de résoudre ces dépendances :

Mettre à jour les paquets suivants :
libblas3gf [1.2-2 (stable, now) -&gt; 1.2-8 (testing)]
liblapack3gf [3.1.1-1 (stable, now) -&gt; 3.2.1-8 (testing)]

Le score est de 70

Accepter cette solution ? [Y/n/q/?] y
...
État actuel : 725 mises à jour restantes [-3].
&lt;/code&gt;

En cas de doute n'hésitez pas à demander un avis [http://forum.debian-fr.org/ sur le forum]

=== stopper le serveur X ===

'''IMPORTANT''' : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

Si vous faites votre mise à niveau avec le serveur X lancé, vous risquez [http://www.debian-fr.org/upgrade-lenny-squeeze-gnome-minimaliste-t30744.html cette mésaventure]

== Lancez la mise à niveau ==

'''Attention''', Debian recommande désormais d'utiliser apt-get à la place de aptitude pour la mise à niveau : http://www.debian.org/releases/squeeze/i386/release-notes/ch-upgrading.en.html#upgradingpackages

Ce tuto ayant été réalisé avant cette préconisation, il n'est pas à jour concernant ce point précis.

=== A propos de Udev et du Noyau ===

Il est TRèS fortement recommandé de mettre à jour le noyau et udev avant de se lancer dans la mise à niveau. En effet, le noyau Lenny est incompatible avec la version de udev qui se trouve dans squeeze.

 # apt-get install linux-image-2.6 (ou linux-image-2.6-amd64)
 # apt-get install udev

Vous devez maintenant redémarrer le système pour être sur le noyau Squeeze (2.6.32)
Vous pouvez maintenant lancer la mise à niveau :

=== Mise à niveau ===

'''Rappel''': Plutôt que aptitude, utilisez apt-get pour la mise à niveau.

 # apt-get upgrade
 # apt-get dist-upgrade

&lt;code&gt;
# aptitude safe-upgrade (apt-get upgrade)
...
Les paquets suivants ont été conservés : 
  apt apt-utils aptitude synaptic 
Les NOUVEAUX paquets suivants vont être installés : 
  acpi-fakekey{a} apache2.2-bin{a} aumix{a} aumix-common{a} bluez{a} bluez-alsa{a} bluez-cups{a} bluez-gstreamer{a} 
  browser-plugin-gnash{a} cifs-utils{a} consolekit{a} cpp-4.4{a} cracklib-runtime{a} cups-ppdc{a} dash{a} db4.8-util{a} 
  diffutils{a} dosfstools{a} firmware-linux-free{a} freepats{a} fuse-utils{a} gcc-4.4-base{a} gcj-4.4-base{a} 
  gcj-4.4-jre-lib{a} geoip-database{a} ghostscript-cups{a} gnash{a} gnash-common{a} gnupg-curl{a} grub-pc{a} 
  gstreamer0.10-ffmpeg{a} gstreamer0.10-fluendo-mp3{a} gstreamer0.10-plugins-bad{a} gstreamer0.10-plugins-base{a} gvfs{a} 
  hplip-cups{a} insserv{a} install-info{a} isc-dhcp-client{a} isc-dhcp-common{a} iso-codes{a} keyboard-configuration{a} 
  libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libass4{a} libatasmart4{a} libaudit0{a} libavahi-core7{a} libavcodec52{a} 
  libavformat52{a} libavutil50{a} libbabl-0.0-0{a} libbind9-60{a} libbluetooth3{a} libboost-date-time1.42.0{a} 
  libboost-thread1.42.0{a} libbsd0{a} libburn4{a} libc-bin{a} libc-client2007e{a} libcap-ng0{a} libcdaudio1{a} libcdio10{a} 
  libcdparanoia0{a} libcelt0-0{a} libck-connector0{a} libcolamd2.7.1{a} libcommons-beanutils-java{a} 
  libcommons-collections3-java{a} libcommons-compress-java{a} libcommons-digester-java{a} libcommons-logging-java{a} 
  libcrack2{a} libcupscgi1{a} libcupsdriver1{a} libcupsmime1{a} libcupsppdc1{a} libdatrie1{a} libdb-je-java{a} libdb4.7{a} 
  libdb4.7-java{a} libdb4.7-java-gcj{a} libdb4.8{a} libdc1394-22{a} libdca0{a} libdirac-encoder0{a} libdirectfb-1.2-9{a} 
  libdns66{a} libdrm-intel1{a} libdrm-nouveau1{a} libdrm-radeon1{a} libdvdnav4{a} libdvdread4{a} libeggdbus-1-0{a} libenca0{a} 
  libenchant1c2a{a} libevent-1.4-2{a} libexempi3{a} libexo-common{a} libfaad2{a} libfftw3-3{a} libfile-copy-recursive-perl{a} 
  libflite1{a} libfont-freetype-perl{a} libfuse2{a} libgcj10{a} libgcr0{a} libgdu0{a} libgegl-0.0-0{a} libgeoip1{a} libgif4{a} 
  libgme0{a} libgomp1{a} libgp11-0{a} libgpgme11{a} libgraphicsmagick3{a} libgraphite3{a} libgssapi-krb5-2{a} libgtkglext1{a} 
  libgudev-1.0-0{a} libhpmud0{a} libicu44{a} libicu4j-java{a} libiptcdata0{a} libisc60{a} libisccc60{a} libisccfg60{a} 
  libiso9660-7{a} libisofs6{a} libiw30{a} libjbig2dec0{a} libjpeg-progs{a} libjpeg8{a} libjtidy-java{a} libk5crypto3{a} 
  libkate1{a} libkrb5-3{a} libkrb5support0{a} libltdl7{a} liblucene2-java{a} liblwres60{a} liblzma2{a} libmimic0{a} libmms0{a} 
  libmodplug1{a} libmozjs2d{a} libmpcdec6{a} libmpfr4{a} libmusicbrainz4c2a{a} libmythes-1.2-0{a} libneon27-gnutls{a} 
  libnetaddr-ip-perl{a} libnfnetlink0{a} libnl1{a} libntfs-3g75{a} libntfs10{a} libofa0{a} libonig2{a} libopencore-amrnb0{a} 
  libopencore-amrwb0{a} libopenraw1{a} liborc-0.4-0{a} libossp-uuid16{a} libpam-ck-connector{a} libpam-cracklib{a} 
  libpango-perl{a} libpangomm-1.4-1{a} libparted0debian1{a} libpciaccess0{a} libpolkit-agent-1-0{a} libpolkit-backend-1-0{a} 
  libpolkit-gobject-1-0{a} libpoppler-glib4{a} libpth20{a} libpython2.6{a} libqdbm14{a} libraptor1{a} librasqal2{a} 
  libraw1394-11{a} librdf0{a} libreadline6{a} librtmp0{a} libsane-hpaio{a} libsasl2-modules{a} libservlet2.5-java{a} 
  libsexy2{a} libsgutils2-2{a} libslv2-9{a} libsndfile1{a} libsoundtouch1c2{a} libswscale0{a} libtag1-vanilla{a} libtalloc2{a} 
  libtextcat-data-utf8{a} libtokyocabinet8{a} libudev0{a} libunique-1.0-0{a} libusb-1.0-0{a} libutempter0{a} libuuid-perl{a} 
  libv4l-0{a} libva1{a} libvcdinfo0{a} libvisual-0.4-0{a} libvisual-0.4-plugins{a} libvpx0{a} libwebkit-1.0-2{a} 
  libwebkit-1.0-common{a} libwildmidi1{a} libwnck-common{a} libwnck22{a} libx11-xcb1{a} libx264-104{a} libxcb-atom1{a} 
  libxcb-aux0{a} libxcb-dri2-0{a} libxcb-event1{a} libxfce4menu-0.1-0{a} libxfce4util-bin{a} libxfce4util-common{a} 
  libxfconf-0-2{a} libxklavier16{a} libxml-parser-perl{a} libxres1{a} libzbar0{a} linux-base{a} linux-image-2.6.32-5-amd64{a} 
  lockfile-progs{a} lsb-release{a} mtools{a} ntfsprogs{a} os-prober{a} oss-compat{a} php5-cli{a} php5-suhosin{a} 
  policykit-1{a} policykit-1-gnome{a} postgresql-8.4{a} postgresql-client-8.4{a} postgresql-contrib-8.4{a} 
  postgresql-doc-8.4{a} python-cups{a} python-gconf{a} python-numpy{a} python-pexpect{a} python-reportbug{a} python-webkit{a} 
  python2.6{a} python2.6-minimal{a} ristretto{a} samba-common-bin{a} sane-utils{a} sensible-utils{a} squeeze{a} 
  tango-icon-theme{a} thunar-archive-plugin{a} thunar-volman{a} tsconf{a} ttf-freefont{a} ttf-lyx{a} ttf-sil-gentium{a} 
  ttf-sil-gentium-basic{a} udisks{a} uno-libs3{a} unzip{a} ure{a} x-ttcidfont-conf{a} xdg-user-dirs{a} xfburn{a} 
  xfce-keyboard-shortcuts{a} xfce4-appfinder{a} xfce4-clipman{a} xfce4-datetime-plugin{a} xfce4-dict{a} xfce4-notes{a} 
  xfce4-notifyd{a} xfce4-places-plugin{a} xfce4-power-manager{a} xfce4-power-manager-data{a} xfce4-screenshooter{a} 
  xfce4-settings{a} xfce4-taskmanager{a} xfce4-timer-plugin{a} xfce4-xkb-plugin{a} xfconf{a} xfonts-mathml{a} xinput{a} xli{a} 
  xorg-docs-core{a} xscreensaver{a} xscreensaver-data{a} xserver-common{a} xserver-xorg-video-nouveau{a} xulrunner-1.9.1{a} 
  xz-utils{a} 
Les paquets suivants seront ENLEVÉS : 
  bluez-utils{u} cpp-4.3{u} cupsddk-drivers{u} djvulibre-desktop{u} finger{u} gs-common{u} liba52-0.7.4{u} libamrnb3{u} 
  libamrwb3{u} libaudio2{u} libavahi-compat-libdnssd1{u} libavahi-core5{u} libavc1394-0{u} libavcodec51{u} libbind9-50{u} 
  libbluetooth2{u} libc-client2007b{u} libcap1{u} libcucul0{u} libcupsys2{u} libcurl3{u} libdatrie0{u} libdirac0{u} 
  libdjvulibre21{u} libfaad0{u} libfreebob0{u} libgail-common{u} libgraphviz4{u} libgtkhtml2-0{u} libicu38{u} libiec61883-0{u} 
  libisccc50{u} libisccfg50{u} libiw29{u} libjaxp1.3-java-gcj{u} libltdl3{u} liblwres50{u} libmagick10{u} libmodplug0c2{u} 
  libmozjs1d{u} libmpcdec3{u} libmpfr1ldbl{u} libmysqlclient15off{u} libneon27{u} libntfs-3g31{u} libossp-uuid15{u} 
  libparted1.8-10{u} libpoppler-glib3{u} libpoppler3{u} libqt3-mt{u} libraw1394-8{u} libsensors3{u} libservlet2.4-java{u} 
  libsmbios-bin{u} libsmbios2{u} libssh2-1{u} libsuitesparse-3.1.0{u} libswfdec-0.6-90{u} libtalloc1{u} libvolume-id0{u} 
  libx264-65{u} libxalan2-java{u} libxalan2-java-gcj{u} libxcb-xlib0{u} libxerces2-java{u} libxerces2-java-gcj{u} 
  libxfce4mcs-client3{u} libxfce4mcs-manager3{u} libxtrap6{u} libxxf86misc1{u} mysql-common{u} openoffice.org-writer2latex{u} 
  openssl-blacklist{u} postgresql-8.3{u} postgresql-client-8.3{u} postgresql-contrib-8.3{u} postgresql-doc-8.3{u} 
  python-gtkhtml2{u} python-numeric{u} svgalibg1{u} xfce4-icon-theme{u} xfce4-mcs-manager{u} xfce4-mcs-plugins{u} 
  xfce4-minicmd-plugin{u} xfce4-screenshooter-plugin{u} xserver-xorg-video-cyrix{u} xserver-xorg-video-v4l{u} 
  xserver-xorg-video-vga{u} xulrunner-1.9{u} 
Les paquets suivants seront mis à jour : 
  a2ps acpi acpi-support acpi-support-base acpid adduser alsa-base alsa-utils anacron analog apache2 apache2-doc 
  apache2-mpm-prefork apache2-utils apache2.2-common apmd aspell aspell-fr at avahi-autoipd avahi-daemon base-files 
  base-passwd bash bash-completion bc bind9 bind9-doc bind9-host bind9utils bluetooth bsd-mailx bsdmainutils bsdutils bsh 
  bsh-gcj busybox ca-certificates console-common console-data console-setup console-terminus console-tools coreutils cpio cpp 
  cpufrequtils cron cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk dbus dbus-x11 dc debconf debconf-i18n 
  debian-archive-keyring debian-faq debianutils deborphan defoma desktop-base desktop-file-utils dhcp3-client dhcp3-common 
  dialog dictionaries-common diff disk-manager dmidecode dmsetup dnsutils doc-debian docbook-xml dpkg e2fslibs e2fsprogs ed 
  eject esound-common exim4 exim4-base exim4-config exim4-daemon-light exo-utils fastjar file findutils fontconfig foo2zjs 
  foomatic-db-gutenprint foomatic-filters-ppds foomatic-gui fortune-mod fortunes-min ftp gcc-4.3-base gconf2 gconf2-common gdm 
  gettext-base ghostscript gimp gimp-data gksu gnome-keyring gnupg gparted gpgv grep groff-base grub grub-common gsfonts 
  gtk2-engines-xfce gzip hal hal-info hdparm hibernate hicolor-icon-theme hostname hpijs hplip hplip-data iamerican ibritish 
  iceweasel iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint info initramfs-tools initscripts installation-report iproute 
  iptables iputils-ping ispell java-common kerneloops klibc-utils laptop-detect less libaa1 libacl1 libapache2-mod-perl2 
  libapache2-mod-php5 libapache2-mod-python libapm1 libapr1 libaprutil1 libart-2.0-2 libasound2 libaspell15 libatk1.0-0 
  libattr1 libaudiofile0 libavahi-client3 libavahi-common-data libavahi-common3 libavahi-glib1 libavutil49 libbcel-java 
  libblkid1 libbonobo2-0 libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i386 libcaca0 
  libcairo-perl libcairo2 libcairomm-1.0-1 libcap2 libcomerr2 libconsole libcpufreq0 libcroco3 libcups2 libcupsimage2 
  libcurl3-gnutls libcwidget3 libdaemon0 libdb4.6 libdbus-1-3 libdbus-glib-1-2 libdevel-symdump-perl libdevmapper1.02.1 
  libdigest-hmac-perl libdigest-sha1-perl libdirectfb-extra libdmx1 libdrm2 libedit2 libesd0 libexif12 libexo-0.3-0 libexpat1 
  libfaac0 libfam0 libffi5 libflac8 libfontenc1 libfreetype6 libfs6 libgail18 libgc1c2 libgcc1 libgcj-bc libgcj-common 
  libgconf2-4 libgcrypt11 libgd2-noxpm libgdbm3 libgfortran3 libgimp2.0 libgksu2-0 libgl1-mesa-dri libgl1-mesa-glx libglade2-0 
  libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgmp3c2 libgnome-keyring0 libgnome2-0 libgnome2-canvas-perl 
  libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0 libgnomecanvas2-common libgnomeui-0 libgnomeui-common 
  libgnomevfs2-0 libgnomevfs2-common libgnomevfs2-extra libgnutls26 libgpg-error0 libgphoto2-2 libgphoto2-port0 libgpm2 libgs8 
  libgsf-1-114 libgsf-1-common libgsm1 libgssglue1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0 
  libgtk2.0-common libgtkmm-2.4-1c2a libgtop2-7 libgtop2-common libgutenprint2 libhal-storage1 libhal1 libhsqldb-java 
  libhsqldb-java-gcj libhtml-parser-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libice6 libidl0 libidn11 libieee1284-3 
  libijs-0.35 libilmbase6 libjack0 libjasper1 libjaxp1.3-java libjline-java libkeyutils1 libklibc libkrb53 liblcms1 
  libldap-2.4-2 liblocale-gettext-perl liblockfile1 liblog4j1.2-java liblzo2-2 libmad0 libmagic1 libmng1 libmp3lame0 
  libmx4j-java libncurses5 libncursesw5 libnet-dns-perl libnewt0.52 libnfsidmap2 libnotify1 libnspr4-0d libnss-mdns libnss3-1d 
  libogg0 liboil0.3 libopenexr6 liborbit2 libpam-modules libpam-runtime libpam0g libpango1.0-0 libpango1.0-common libpaper1 
  libpci3 libpcre3 libpcsclite1 libperl5.10 libpixman-1-0 libpng12-0 libpopt0 libpostproc51 libpq5 libpulse0 libreadline5 
  librecode0 libregexp-java librpcsecgss3 librsvg2-2 librsvg2-common libsane libsane-extras libsasl2-2 libschroedinger-1.0-0 
  libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsensors4 libsepol1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 
  libsmbclient libsnmp-base libsnmp15 libsocket6-perl libsoup2.4-1 libsqlite3-0 libss2 libssl0.9.8 libstartup-notification0 
  libstdc++6 libsvga1 libsysfs2 libtag1c2a libtagc0 libtasn1-3 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl 
  libthai-data libthai0 libtheora0 libthunar-vfs-1-2 libtiff4 libts-0.0-0 liburi-perl libusb-0.1-4 libuuid1 libvorbis0a 
  libvorbisenc2 libvte-common libvte9 libwavpack1 libwbclient0 libwmf0.2-7 libwpg-0.1-1 libwrap0 libwww-perl libx11-6 
  libx11-data libx86-1 libxau6 libxaw7 libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xv0 libxcb1 
  libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfce4util4 libxfcegui4-4 libxfixes3 libxfont1 libxft2 libxi6 
  libxine1 libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins libxine1-plugins libxine1-x libxinerama1 
  libxkbfile1 libxmu6 libxmuu1 libxpm4 libxrandr2 libxrender1 libxslt1.1 libxss1 libxt6 libxtst6 libxv1 libxvidcore4 libxvmc1 
  libxxf86dga1 libxxf86vm1 linux-image-2.6-amd64 linux-sound-base locales login logrotate lp-solve lsb-base lsof lvm2 lwresd 
  m4 mailagent makedev man-db manpages manpages-fr manpages-fr-extra mawk mc menu mime-support mktemp mlocate mlock 
  module-init-tools mount mousepad mutt myspell-en-us myspell-fr-gut nano ncurses-base ncurses-bin ncurses-term net-tools 
  netatalk netbase nfs-common nfs-kernel-server ntfs-3g nvclock openbsd-inetd openoffice.org openoffice.org-base 
  openoffice.org-base-core openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw 
  openoffice.org-filter-mobiledev openoffice.org-gcj openoffice.org-gtk openoffice.org-help-en-us openoffice.org-help-fr 
  openoffice.org-impress openoffice.org-java-common openoffice.org-l10n-fr openoffice.org-math openoffice.org-officebean 
  openoffice.org-report-builder-bin openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-thesaurus-en-us 
  openoffice.org-writer openprinting-ppds openssh-client openssh-server openssl orage passwd patch pciutils pcmciautils perl 
  perl-base perl-modules php5-common pm-utils popularity-contest portmap postgresql postgresql-client postgresql-client-common 
  postgresql-common postgresql-contrib postgresql-doc powermgmt-base powertop printconf procmail procps psmisc psutils python 
  python-cairo python-central python-dbus python-foomatic python-glade2 python-gnome2 python-gobject python-gtk2 
  python-imaging python-ipy python-minimal python-pyorbit python-support python2.5 python2.5-minimal qpopper radeontool 
  readline-common reportbug rsyslog sa-exim samba samba-common samba-doc sed sgml-base sgml-data shared-mime-info 
  smartmontools smbclient smbfs spamassassin spamc ssl-cert sudo swat swfdec-mozilla sysv-rc sysvinit sysvinit-utils tar 
  tasksel tasksel-data tcpd texinfo thunar thunar-data thunar-media-tags-plugin time toshset traceroute ttf-dejavu 
  ttf-dejavu-core ttf-dejavu-extra ttf-liberation ttf-opensymbol tzdata ucf udev update-inetd usbutils util-linux uw-imapd 
  vbetool vim-common vim-tiny w3m wamerican wfrench wget whiptail whois winbind wireless-tools wpasupplicant x11-apps 
  x11-common x11-session-utils x11-utils x11-xfs-utils x11-xkb-utils x11-xserver-utils xauth xbitmaps xdg-utils xfce4 
  xfce4-battery-plugin xfce4-clipman-plugin xfce4-cpufreq-plugin xfce4-cpugraph-plugin xfce4-diskperf-plugin 
  xfce4-fsguard-plugin xfce4-genmon-plugin xfce4-goodies xfce4-mailwatch-plugin xfce4-mixer xfce4-mount-plugin 
  xfce4-netload-plugin xfce4-notes-plugin xfce4-panel xfce4-quicklauncher-plugin xfce4-sensors-plugin xfce4-session 
  xfce4-smartbookmark-plugin xfce4-systemload-plugin xfce4-terminal xfce4-utils xfce4-verve-plugin xfce4-wavelan-plugin 
  xfce4-weather-plugin xfdesktop4 xfdesktop4-data xfonts-100dpi xfonts-75dpi xfonts-base xfonts-encodings xfonts-intl-european 
  xfonts-scalable xfonts-utils xfprint4 xfwm4 xinit xkb-data xml-core xorg xsane xsane-common xserver-xorg xserver-xorg-core 
  xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd xserver-xorg-input-mouse xserver-xorg-input-synaptics 
  xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati 
  xserver-xorg-video-chips xserver-xorg-video-cirrus xserver-xorg-video-dummy xserver-xorg-video-fbdev 
  xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-intel xserver-xorg-video-mach64 xserver-xorg-video-mga 
  xserver-xorg-video-neomagic xserver-xorg-video-nv xserver-xorg-video-openchrome xserver-xorg-video-r128 
  xserver-xorg-video-radeon xserver-xorg-video-radeonhd xserver-xorg-video-rendition xserver-xorg-video-s3 
  xserver-xorg-video-s3virge xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis 
  xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident xserver-xorg-video-tseng 
  xserver-xorg-video-vesa xserver-xorg-video-vmware xserver-xorg-video-voodoo xterm zlib1g 
Les paquets suivants sont RECOMMANDÉS mais ne seront pas installés :
  bzip2 gamin gcc gdm-themes hddtemp libapache2-reload-perl libatk1.0-data libatm1 libbsd-resource-perl libc6-dev libfribidi0 
  libglib2.0-data libgtk2.0-bin libhtml-format-perl libio-socket-inet6-perl liblog4j1.2-java-gcj libmail-spf-perl 
  libmailtools-perl libnss-lwres libpam-gnome-keyring libpaper-utils lm-sensors make nmap openoffice.org-emailmerge 
  openoffice.org-filter-binfilter pconf-detect rc re2c uuid-runtime wdiff xfwm4-themes xnest xserver-xephyr zenity 
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] 
&lt;/code&gt;

En fonction de votre connexion ça peut prendre très longtemps, et être interrompu (à 500KB/s une demi-heure à 50 KB/s c'est plusieurs heures...).
Un conseil, si vous n'êtes pas sûr de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

&lt;code&gt;
# aptitude -d safe-upgrade (apt-get -d upgrade)
...
 762Mo téléchargés en 1h9min37s (182ko/s)                                                          
Lecture des listes de paquets... Fait             
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait
&lt;/code&gt;

Puis

&lt;code&gt;
# aptitude safe-upgrade (apt-get upgrade)
...
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 0o/762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] y
&lt;/code&gt;

=== Déroulement ===

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut, mais prenez le temps de lire tous les messages, et si nécessaire, prenez des notes.

Sans le téléchargement des fichiers, comptez un peu plus d'une heure pour la mise à niveau.

[[Fichier:Snapshot4.jpeg]]

[[Fichier:Snapshot5.jpeg]]

[[Fichier:Snapshot6.jpeg]]

[[Fichier:Snapshot7.jpeg]]

[[Fichier:Snapshot9.jpeg]]

[[Fichier:Snapshot11.jpeg]]

[[Fichier:Snapshot13.jpeg]]

[[Fichier:Snapshot14.jpeg]]

[[Fichier:Snapshot15.jpeg]]

[[Fichier:Snapshot16.jpeg]]

[[Fichier:Snapshot17.jpeg]]

Vous partirez d'une Lenny configurée, et donc de nombreux fichiers de configuration auront été modifiés par vos soins.
Il est judicieux de ne pas écraser vos configurations avec les fichiers par défaut proposés par les &quot;mainteneurs&quot; des paquets.
Vous aurez tout le loisir de regarder les modifications proposées, et ce qu'elles apportent, en regardant dans /usr/share/doc ou dans les contenus de vos deb téléchargés (dans /var/apt/archives)

[[Fichier:Snapshot18.jpeg]]

=== finalisation ===

Le safe-upgrade devrait se terminer par ceci :

&lt;code&gt;
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 4 mises à jour restantes [-721].
&lt;/code&gt;

Vous pouvez maintenant lancer un &quot;full-upgrade&quot;

&lt;code&gt;
# aptitude full-upgrade (apt-get dist-uprade)

...

4 paquets mis à jour, 13 nouvellement installés, 2 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 12,1Mo d'archives. Après dépaquetage, 14,3Mo seront utilisés.
Les paquets suivants ont des dépendances non satisfaites :
  libept0: Dépend: libapt-pkg-libc6.7-6-4.6 qui est un paquet virtuel
Les actions suivantes permettront de résoudre ces dépendances :

Supprimer les paquets suivants :
libept0

Le score est de 115

Accepter cette solution ? [Y/n/q/?]y

...

Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 0 mise à jour restante [-4].
&lt;/code&gt;

Si tout s'est bien passé, il ne vous reste plus qu'a redémarrer la machine :

 # shutdown -r now

=== Grub2 ===

Si vous étiez sous Grub-legacy vous aurez certainement fait la bascule vers Grub2.

La première &quot;surprise&quot; qui vous attend donc (sauf si vous avez lu ce guide avant...) c'est le menu suivant :

[[Fichier:Snapshot19.jpeg]]

Si vous appuyez sur entrée, vous serez conduit vers le menu de Grub2.
Cette étape permet de vérifier que Grub2 est bien installé, et de le tester.

[[Fichier:Snapshot20.jpeg]]

Si cela fonctionne, une des premières choses à faire sera de confirmer l'installation de Grub2 en tapant dans une console la commande suivante :

 # upgrade-from-grub-legacy

=== LVM ===

Problème rencontré lors de la mise à niveau avec LVM...
Le système s'est mélangé les pédales dans l'attribution des partitions.
Résultat :

[[Fichier:Snapshot21.jpeg]]

Voici ou se situe le problème :

&lt;code&gt;
$ vdir /dev/l2s/
total 0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 home -&gt; ../dm-5
lrwxrwxrwx 1 root root 7 25 nov.  18:28 root -&gt; ../dm-0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 swap_1 -&gt; ../dm-1
lrwxrwxrwx 1 root root 7 25 nov.  18:28 tmp -&gt; ../dm-4
lrwxrwxrwx 1 root root 7 25 nov.  18:28 usr -&gt; ../dm-2
lrwxrwxrwx 1 root root 7 25 nov.  18:28 var -&gt; ../dm-3
&lt;/code&gt;
&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
# /dev/hda1	/boot	ext2	defaults	0	2
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-1	/usr	ext3	defaults	0	2
# /dev/hdb1	/var	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-3	none	swap	sw	0	0
# /dev/hdc	/media/cdrom0	udf,iso9660	user,noauto	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

Je ne sais pour quelle raison LVM à changé la numérotation des partitions... /usr est passé en dm-1 alors qu'il était en dm-2 et la swap en dm-3 alors qu'elle était être en dm-1
Il suffit de modifier le fichier /etc/fstab pour qu'il reflète à nouveau correctement vos partitions, et le tour est joué :

&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-2	/usr	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-1	none	swap	sw	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

== Bienvenu sur Squeeze ==

 laurent@lenny2squeeze:~$ uname -a
 Linux lenny2squeeze 2.6.32-5-amd64 #1 SMP Sat Oct 30 14:18:21 UTC 2010 x86_64 GNU/Linux

[[Fichier:Snapshot25.jpeg]]

A venir... Upgrade de Squeeze à ????

----
[[Utilisateur:Lol|Lol]] 25 novembre 2010 à 15:55 (EAT)
[[Catégorie:Installation]]</text>
      <sha1>cxz5597hl5fprmcw14h58nc5vufyx2s</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2701</id>
      <parentid>2699</parentid>
      <timestamp>2011-02-12T06:38:01Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="33345">{{sid}}

La mise à niveau de Lenny à Squeeze se précise, nous allons faire ici un rapide résumé des opérations nécessaires à la réussite de cette mise à niveau (upgrade).
LVM est installé sur la machine que nous allons mettre à niveau afin de tester le plus de possibilités.

Avant toute chose, je souhaite faire quelques précisions :
Chaque configuration est propre à chacun, en fonction de ses goûts, de son matériel et de ses connaissances.
Un guide universel n'existe donc pas.

Prévoyez aussi d'avoir du temps devant vous, et d'être au calme.

Nous choisirons d'utiliser aptitude au lieu de apt-get, il est en effet plus exigeant concernant les dépendances, votre mise à niveau sera plus &quot;propre&quot;.

'''Remarque''': Le choix ci-dessus n'est plus tout à fait vrai... En effet, Debian préconise maintenant apt-get pour la mise à niveau de Lenny à Squeeze.

http://www.debian.org/releases/squeeze/i386/release-notes/ch-upgrading.en.html#upgradingpackages
La méthode recommandée pour mettre à niveau Debian GNU/Linux est d'utiliser l'outil de gestion des paquets apt-get.
Dans les versions précédentes, aptitude était recommandé, mais les versions récentes de apt-get fournissent des fonctionnalités équivalentes et ont également montré plus de cohérente dans la mise à niveau.

Aptitude reste tout a fait valable pour la mise à jour de Lenny ou de Squeeze.

J'ai choisi une Lenny avec toutes les options de tasksel activées afin de faire un tour d'horizon le plus vaste possible des problèmes qui pourraient survenir.
L'environnement graphique est Xfce.

[[Fichier:Snapshot3.jpeg]]

== Pré-requis ==

=== Une bonne sauvegarde ===

Vous n'avez AUCUNE garantie que la mise à niveau se passe bien, alors, quel que soit la méthode que vous emploierez, une sauvegarde est le minimum que vous puissiez faire avant de vous lancer dans l'aventure..

Avec dd, dump ou simplement cp SAUVEGARDEZ !

=== Un système à jour! ===

Le fichier sources.list précédent la mise à niveau :

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org stable main non-free
#deb-src http://www.debian-multimedia.org stable main non-free

# backports
deb http://backports.debian.org/debian-backports lenny-backports main contrib non-free
&lt;/code&gt;

 # aptitude update
 # aptitude safe-upgrade
 # aptitude full-upgrade

=== De l'espace! ===

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition où se trouve /var pour le stockage des paquets téléchargés.

Pour info une mise à jour &quot;lourde&quot; se soldera par le téléchargement d'environ 1Go...

Pour connaitre l’espace libre de votre partition racine :

 $ df -H
 Sys. de fich.          Tail.  Occ.  Disp. %Occ. Monté sur
 '''/dev/dm-0              338M   123M   198M  39% /'''
 tmpfs                  262M      0   262M   0% /lib/init/rw
 udev                    11M   689k   9,8M   7% /dev
 tmpfs                  262M      0   262M   0% /dev/shm
 /dev/hda1              239M    20M   207M   9% /boot
 /dev/dm-5              3,7G    75M   3,4G   3% /home
 /dev/dm-4              317M    11M   290M   4% /tmp
 /dev/dm-1              3,7G   1,7G   1,8G  50% /usr
 '''/dev/hdb1              5,3G   1,1G   4,0G  21% /var'''
 /dev/dm-2              1,8G   876M   818M  52% /media/dm-2

'''Si vous disposez de plus de 50% d’espace libre vous pouvez passer à l'étape suivante'''.

Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Si cela ne suffit toujours pas, il faut envisager d'ajouter un disque à votre système, ou de procéder à un upgrade par étapes successives (en mettant à jour les paquets progressivement et en nettoyant à chaque étape)

=== Les pilotes de la carte Graphique ===

Afin de ne pas avoir de mauvaise surprise avec le serveur X, modifiez votre xorg.conf afin d'utiliser des pilotes Debian.

Eventuellement utilisez les pilotes &quot;vesa&quot;

Dans votre fichier /etc/X11/xorg.conf

&lt;code&gt;
Section &quot;Device&quot;
    Identifier     &quot;Device0&quot;
    Driver         &quot;vesa&quot;
EndSection
&lt;/code&gt;

Si vous êtes sûr de vous, n'en faites rien, mais prévoyez une réinstallation des pilotes avant le premier redémarrage.

=== Le fichier sources.list ===

Créons un nouveau sources.list que nous placerons dans /etc/apt/sources.list.d
Nous prenons dores et déjà la bonne habitude d'utiliser ce dossier qui est devenu celui par défaut pour mettre les fichiers contenant les dépôts.

 # nano /etc/apt/sources.list.d/sources.list

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free

# stable security
deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

## stable volatile
## Le dépôt volatile à changé, il est désormais sous &quot;squeeze-updates&quot;
deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib

# stable multimedia
deb http://www.debian-multimedia.org squeeze main non-free
#deb-src http://www.debian-multimedia.org squeeze main non-free

# backports
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
&lt;/code&gt;

== Préparation de la mise à niveau ==

Maintenant que nous sommes prêts, nous pouvons lancer l'upgrade :

Mise à jour de la liste des paquets :

 # aptitude update

=== Si vous avez des problèmes de clefs ===

 W: GPG error: http://www.debian-multimedia.org

 # aptitude install debian-backports-keyring
 # aptitude install debian-multimedia-keyring

=== Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]] ===

 E: Dynamic MMap ran out of room

 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaite l'update, il ne doit pas y avoir d'erreurs

 # aptitude update

=== Problèmes de dépendances ===

Vous ne pourrez pas faire le passage de Lenny à Squeeze tant que subsisteront des problèmes de dépendances...

Voici deux exemples de problèmes de dépendances, et la manière de les régler :

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  xfce4-mixer-oss: Est en conflit avec: xfce4-mixer-alsa mais 4.4.2-3 est installé.
  foomatic-db: Est en conflit avec: foomatic-db-hpijs mais 20080211-1 est installé.
  xfce4-mixer-alsa: Est en conflit avec: xfce4-mixer-oss mais 4.4.2-3 doit être installé.

# aptitude install foomatic-db xfce4-mixer-alsa
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Lecture des descriptions de tâches... Fait  
Les NOUVEAUX paquets suivants vont être installés : 
  libopenjpeg2{a} libpoppler5{a} min12xxw{a} pnm2ppa{a} 
Les paquets suivants seront ENLEVÉS : 
  foomatic-db-hpijs{a} 
Les paquets suivants seront mis à jour : 
  fontconfig-config foomatic-db foomatic-db-engine foomatic-filters libfontconfig1 libjpeg62 libxml2 poppler-utils 
8 paquets mis à jour, 4 nouvellement installés, 1 à enlever et 728 non mis à jour.
Il est nécessaire de télécharger 4722ko d'archives. Après dépaquetage, 18,2Mo seront libérés.
Voulez-vous continuer ? [Y/n/?] o
...
État actuel : 728 mises à jour restantes [-8].
&lt;/code&gt;

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  libatlas3gf-base: Est en conflit avec: libblas3gf (&lt; 1.2-5) mais 1.2-2 est installé et a été conservé
                    Est en conflit avec: liblapack3gf (&lt; 3.2.1-4) mais 3.1.1-1 est installé et a été conservé
  rarian-compat: Est en conflit avec: scrollkeeper (&lt; 0.4) mais 0.3.14-16 est installé et a été conservé

# aptitude install libatlas3gf-base scrollkeeper
...
Les actions suivantes permettront de résoudre ces dépendances :

Mettre à jour les paquets suivants :
libblas3gf [1.2-2 (stable, now) -&gt; 1.2-8 (testing)]
liblapack3gf [3.1.1-1 (stable, now) -&gt; 3.2.1-8 (testing)]

Le score est de 70

Accepter cette solution ? [Y/n/q/?] y
...
État actuel : 725 mises à jour restantes [-3].
&lt;/code&gt;

En cas de doute n'hésitez pas à demander un avis [http://forum.debian-fr.org/ sur le forum]

=== stopper le serveur X ===

'''IMPORTANT''' : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

Si vous faites votre mise à niveau avec le serveur X lancé, vous risquez [http://www.debian-fr.org/upgrade-lenny-squeeze-gnome-minimaliste-t30744.html cette mésaventure]

== Lancez la mise à niveau ==

'''Attention''', Debian recommande désormais d'utiliser apt-get à la place de aptitude pour la mise à niveau : http://www.debian.org/releases/squeeze/i386/release-notes/ch-upgrading.en.html#upgradingpackages

Ce tuto ayant été réalisé avant cette préconisation, il n'est pas à jour concernant ce point précis.

=== A propos de Udev et du Noyau ===

Il est TRèS fortement recommandé de mettre à jour le noyau et udev avant de se lancer dans la mise à niveau. En effet, le noyau Lenny est incompatible avec la version de udev qui se trouve dans squeeze.

 # apt-get install linux-image-2.6 (ou linux-image-2.6-amd64)
 # apt-get install udev

Vous devez maintenant redémarrer le système pour être sur le noyau Squeeze (2.6.32)
Vous pouvez maintenant lancer la mise à niveau :

=== Mise à niveau ===

'''Rappel''': Plutôt que aptitude, utilisez apt-get pour la mise à niveau.

 # apt-get upgrade
 # apt-get dist-upgrade

&lt;code&gt;
# aptitude safe-upgrade (apt-get upgrade)
...
Les paquets suivants ont été conservés : 
  apt apt-utils aptitude synaptic 
Les NOUVEAUX paquets suivants vont être installés : 
  acpi-fakekey{a} apache2.2-bin{a} aumix{a} aumix-common{a} bluez{a} bluez-alsa{a} bluez-cups{a} bluez-gstreamer{a} 
  browser-plugin-gnash{a} cifs-utils{a} consolekit{a} cpp-4.4{a} cracklib-runtime{a} cups-ppdc{a} dash{a} db4.8-util{a} 
  diffutils{a} dosfstools{a} firmware-linux-free{a} freepats{a} fuse-utils{a} gcc-4.4-base{a} gcj-4.4-base{a} 
  gcj-4.4-jre-lib{a} geoip-database{a} ghostscript-cups{a} gnash{a} gnash-common{a} gnupg-curl{a} grub-pc{a} 
  gstreamer0.10-ffmpeg{a} gstreamer0.10-fluendo-mp3{a} gstreamer0.10-plugins-bad{a} gstreamer0.10-plugins-base{a} gvfs{a} 
  hplip-cups{a} insserv{a} install-info{a} isc-dhcp-client{a} isc-dhcp-common{a} iso-codes{a} keyboard-configuration{a} 
  libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libass4{a} libatasmart4{a} libaudit0{a} libavahi-core7{a} libavcodec52{a} 
  libavformat52{a} libavutil50{a} libbabl-0.0-0{a} libbind9-60{a} libbluetooth3{a} libboost-date-time1.42.0{a} 
  libboost-thread1.42.0{a} libbsd0{a} libburn4{a} libc-bin{a} libc-client2007e{a} libcap-ng0{a} libcdaudio1{a} libcdio10{a} 
  libcdparanoia0{a} libcelt0-0{a} libck-connector0{a} libcolamd2.7.1{a} libcommons-beanutils-java{a} 
  libcommons-collections3-java{a} libcommons-compress-java{a} libcommons-digester-java{a} libcommons-logging-java{a} 
  libcrack2{a} libcupscgi1{a} libcupsdriver1{a} libcupsmime1{a} libcupsppdc1{a} libdatrie1{a} libdb-je-java{a} libdb4.7{a} 
  libdb4.7-java{a} libdb4.7-java-gcj{a} libdb4.8{a} libdc1394-22{a} libdca0{a} libdirac-encoder0{a} libdirectfb-1.2-9{a} 
  libdns66{a} libdrm-intel1{a} libdrm-nouveau1{a} libdrm-radeon1{a} libdvdnav4{a} libdvdread4{a} libeggdbus-1-0{a} libenca0{a} 
  libenchant1c2a{a} libevent-1.4-2{a} libexempi3{a} libexo-common{a} libfaad2{a} libfftw3-3{a} libfile-copy-recursive-perl{a} 
  libflite1{a} libfont-freetype-perl{a} libfuse2{a} libgcj10{a} libgcr0{a} libgdu0{a} libgegl-0.0-0{a} libgeoip1{a} libgif4{a} 
  libgme0{a} libgomp1{a} libgp11-0{a} libgpgme11{a} libgraphicsmagick3{a} libgraphite3{a} libgssapi-krb5-2{a} libgtkglext1{a} 
  libgudev-1.0-0{a} libhpmud0{a} libicu44{a} libicu4j-java{a} libiptcdata0{a} libisc60{a} libisccc60{a} libisccfg60{a} 
  libiso9660-7{a} libisofs6{a} libiw30{a} libjbig2dec0{a} libjpeg-progs{a} libjpeg8{a} libjtidy-java{a} libk5crypto3{a} 
  libkate1{a} libkrb5-3{a} libkrb5support0{a} libltdl7{a} liblucene2-java{a} liblwres60{a} liblzma2{a} libmimic0{a} libmms0{a} 
  libmodplug1{a} libmozjs2d{a} libmpcdec6{a} libmpfr4{a} libmusicbrainz4c2a{a} libmythes-1.2-0{a} libneon27-gnutls{a} 
  libnetaddr-ip-perl{a} libnfnetlink0{a} libnl1{a} libntfs-3g75{a} libntfs10{a} libofa0{a} libonig2{a} libopencore-amrnb0{a} 
  libopencore-amrwb0{a} libopenraw1{a} liborc-0.4-0{a} libossp-uuid16{a} libpam-ck-connector{a} libpam-cracklib{a} 
  libpango-perl{a} libpangomm-1.4-1{a} libparted0debian1{a} libpciaccess0{a} libpolkit-agent-1-0{a} libpolkit-backend-1-0{a} 
  libpolkit-gobject-1-0{a} libpoppler-glib4{a} libpth20{a} libpython2.6{a} libqdbm14{a} libraptor1{a} librasqal2{a} 
  libraw1394-11{a} librdf0{a} libreadline6{a} librtmp0{a} libsane-hpaio{a} libsasl2-modules{a} libservlet2.5-java{a} 
  libsexy2{a} libsgutils2-2{a} libslv2-9{a} libsndfile1{a} libsoundtouch1c2{a} libswscale0{a} libtag1-vanilla{a} libtalloc2{a} 
  libtextcat-data-utf8{a} libtokyocabinet8{a} libudev0{a} libunique-1.0-0{a} libusb-1.0-0{a} libutempter0{a} libuuid-perl{a} 
  libv4l-0{a} libva1{a} libvcdinfo0{a} libvisual-0.4-0{a} libvisual-0.4-plugins{a} libvpx0{a} libwebkit-1.0-2{a} 
  libwebkit-1.0-common{a} libwildmidi1{a} libwnck-common{a} libwnck22{a} libx11-xcb1{a} libx264-104{a} libxcb-atom1{a} 
  libxcb-aux0{a} libxcb-dri2-0{a} libxcb-event1{a} libxfce4menu-0.1-0{a} libxfce4util-bin{a} libxfce4util-common{a} 
  libxfconf-0-2{a} libxklavier16{a} libxml-parser-perl{a} libxres1{a} libzbar0{a} linux-base{a} linux-image-2.6.32-5-amd64{a} 
  lockfile-progs{a} lsb-release{a} mtools{a} ntfsprogs{a} os-prober{a} oss-compat{a} php5-cli{a} php5-suhosin{a} 
  policykit-1{a} policykit-1-gnome{a} postgresql-8.4{a} postgresql-client-8.4{a} postgresql-contrib-8.4{a} 
  postgresql-doc-8.4{a} python-cups{a} python-gconf{a} python-numpy{a} python-pexpect{a} python-reportbug{a} python-webkit{a} 
  python2.6{a} python2.6-minimal{a} ristretto{a} samba-common-bin{a} sane-utils{a} sensible-utils{a} squeeze{a} 
  tango-icon-theme{a} thunar-archive-plugin{a} thunar-volman{a} tsconf{a} ttf-freefont{a} ttf-lyx{a} ttf-sil-gentium{a} 
  ttf-sil-gentium-basic{a} udisks{a} uno-libs3{a} unzip{a} ure{a} x-ttcidfont-conf{a} xdg-user-dirs{a} xfburn{a} 
  xfce-keyboard-shortcuts{a} xfce4-appfinder{a} xfce4-clipman{a} xfce4-datetime-plugin{a} xfce4-dict{a} xfce4-notes{a} 
  xfce4-notifyd{a} xfce4-places-plugin{a} xfce4-power-manager{a} xfce4-power-manager-data{a} xfce4-screenshooter{a} 
  xfce4-settings{a} xfce4-taskmanager{a} xfce4-timer-plugin{a} xfce4-xkb-plugin{a} xfconf{a} xfonts-mathml{a} xinput{a} xli{a} 
  xorg-docs-core{a} xscreensaver{a} xscreensaver-data{a} xserver-common{a} xserver-xorg-video-nouveau{a} xulrunner-1.9.1{a} 
  xz-utils{a} 
Les paquets suivants seront ENLEVÉS : 
  bluez-utils{u} cpp-4.3{u} cupsddk-drivers{u} djvulibre-desktop{u} finger{u} gs-common{u} liba52-0.7.4{u} libamrnb3{u} 
  libamrwb3{u} libaudio2{u} libavahi-compat-libdnssd1{u} libavahi-core5{u} libavc1394-0{u} libavcodec51{u} libbind9-50{u} 
  libbluetooth2{u} libc-client2007b{u} libcap1{u} libcucul0{u} libcupsys2{u} libcurl3{u} libdatrie0{u} libdirac0{u} 
  libdjvulibre21{u} libfaad0{u} libfreebob0{u} libgail-common{u} libgraphviz4{u} libgtkhtml2-0{u} libicu38{u} libiec61883-0{u} 
  libisccc50{u} libisccfg50{u} libiw29{u} libjaxp1.3-java-gcj{u} libltdl3{u} liblwres50{u} libmagick10{u} libmodplug0c2{u} 
  libmozjs1d{u} libmpcdec3{u} libmpfr1ldbl{u} libmysqlclient15off{u} libneon27{u} libntfs-3g31{u} libossp-uuid15{u} 
  libparted1.8-10{u} libpoppler-glib3{u} libpoppler3{u} libqt3-mt{u} libraw1394-8{u} libsensors3{u} libservlet2.4-java{u} 
  libsmbios-bin{u} libsmbios2{u} libssh2-1{u} libsuitesparse-3.1.0{u} libswfdec-0.6-90{u} libtalloc1{u} libvolume-id0{u} 
  libx264-65{u} libxalan2-java{u} libxalan2-java-gcj{u} libxcb-xlib0{u} libxerces2-java{u} libxerces2-java-gcj{u} 
  libxfce4mcs-client3{u} libxfce4mcs-manager3{u} libxtrap6{u} libxxf86misc1{u} mysql-common{u} openoffice.org-writer2latex{u} 
  openssl-blacklist{u} postgresql-8.3{u} postgresql-client-8.3{u} postgresql-contrib-8.3{u} postgresql-doc-8.3{u} 
  python-gtkhtml2{u} python-numeric{u} svgalibg1{u} xfce4-icon-theme{u} xfce4-mcs-manager{u} xfce4-mcs-plugins{u} 
  xfce4-minicmd-plugin{u} xfce4-screenshooter-plugin{u} xserver-xorg-video-cyrix{u} xserver-xorg-video-v4l{u} 
  xserver-xorg-video-vga{u} xulrunner-1.9{u} 
Les paquets suivants seront mis à jour : 
  a2ps acpi acpi-support acpi-support-base acpid adduser alsa-base alsa-utils anacron analog apache2 apache2-doc 
  apache2-mpm-prefork apache2-utils apache2.2-common apmd aspell aspell-fr at avahi-autoipd avahi-daemon base-files 
  base-passwd bash bash-completion bc bind9 bind9-doc bind9-host bind9utils bluetooth bsd-mailx bsdmainutils bsdutils bsh 
  bsh-gcj busybox ca-certificates console-common console-data console-setup console-terminus console-tools coreutils cpio cpp 
  cpufrequtils cron cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk dbus dbus-x11 dc debconf debconf-i18n 
  debian-archive-keyring debian-faq debianutils deborphan defoma desktop-base desktop-file-utils dhcp3-client dhcp3-common 
  dialog dictionaries-common diff disk-manager dmidecode dmsetup dnsutils doc-debian docbook-xml dpkg e2fslibs e2fsprogs ed 
  eject esound-common exim4 exim4-base exim4-config exim4-daemon-light exo-utils fastjar file findutils fontconfig foo2zjs 
  foomatic-db-gutenprint foomatic-filters-ppds foomatic-gui fortune-mod fortunes-min ftp gcc-4.3-base gconf2 gconf2-common gdm 
  gettext-base ghostscript gimp gimp-data gksu gnome-keyring gnupg gparted gpgv grep groff-base grub grub-common gsfonts 
  gtk2-engines-xfce gzip hal hal-info hdparm hibernate hicolor-icon-theme hostname hpijs hplip hplip-data iamerican ibritish 
  iceweasel iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint info initramfs-tools initscripts installation-report iproute 
  iptables iputils-ping ispell java-common kerneloops klibc-utils laptop-detect less libaa1 libacl1 libapache2-mod-perl2 
  libapache2-mod-php5 libapache2-mod-python libapm1 libapr1 libaprutil1 libart-2.0-2 libasound2 libaspell15 libatk1.0-0 
  libattr1 libaudiofile0 libavahi-client3 libavahi-common-data libavahi-common3 libavahi-glib1 libavutil49 libbcel-java 
  libblkid1 libbonobo2-0 libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i386 libcaca0 
  libcairo-perl libcairo2 libcairomm-1.0-1 libcap2 libcomerr2 libconsole libcpufreq0 libcroco3 libcups2 libcupsimage2 
  libcurl3-gnutls libcwidget3 libdaemon0 libdb4.6 libdbus-1-3 libdbus-glib-1-2 libdevel-symdump-perl libdevmapper1.02.1 
  libdigest-hmac-perl libdigest-sha1-perl libdirectfb-extra libdmx1 libdrm2 libedit2 libesd0 libexif12 libexo-0.3-0 libexpat1 
  libfaac0 libfam0 libffi5 libflac8 libfontenc1 libfreetype6 libfs6 libgail18 libgc1c2 libgcc1 libgcj-bc libgcj-common 
  libgconf2-4 libgcrypt11 libgd2-noxpm libgdbm3 libgfortran3 libgimp2.0 libgksu2-0 libgl1-mesa-dri libgl1-mesa-glx libglade2-0 
  libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgmp3c2 libgnome-keyring0 libgnome2-0 libgnome2-canvas-perl 
  libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0 libgnomecanvas2-common libgnomeui-0 libgnomeui-common 
  libgnomevfs2-0 libgnomevfs2-common libgnomevfs2-extra libgnutls26 libgpg-error0 libgphoto2-2 libgphoto2-port0 libgpm2 libgs8 
  libgsf-1-114 libgsf-1-common libgsm1 libgssglue1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0 
  libgtk2.0-common libgtkmm-2.4-1c2a libgtop2-7 libgtop2-common libgutenprint2 libhal-storage1 libhal1 libhsqldb-java 
  libhsqldb-java-gcj libhtml-parser-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libice6 libidl0 libidn11 libieee1284-3 
  libijs-0.35 libilmbase6 libjack0 libjasper1 libjaxp1.3-java libjline-java libkeyutils1 libklibc libkrb53 liblcms1 
  libldap-2.4-2 liblocale-gettext-perl liblockfile1 liblog4j1.2-java liblzo2-2 libmad0 libmagic1 libmng1 libmp3lame0 
  libmx4j-java libncurses5 libncursesw5 libnet-dns-perl libnewt0.52 libnfsidmap2 libnotify1 libnspr4-0d libnss-mdns libnss3-1d 
  libogg0 liboil0.3 libopenexr6 liborbit2 libpam-modules libpam-runtime libpam0g libpango1.0-0 libpango1.0-common libpaper1 
  libpci3 libpcre3 libpcsclite1 libperl5.10 libpixman-1-0 libpng12-0 libpopt0 libpostproc51 libpq5 libpulse0 libreadline5 
  librecode0 libregexp-java librpcsecgss3 librsvg2-2 librsvg2-common libsane libsane-extras libsasl2-2 libschroedinger-1.0-0 
  libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsensors4 libsepol1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 
  libsmbclient libsnmp-base libsnmp15 libsocket6-perl libsoup2.4-1 libsqlite3-0 libss2 libssl0.9.8 libstartup-notification0 
  libstdc++6 libsvga1 libsysfs2 libtag1c2a libtagc0 libtasn1-3 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl 
  libthai-data libthai0 libtheora0 libthunar-vfs-1-2 libtiff4 libts-0.0-0 liburi-perl libusb-0.1-4 libuuid1 libvorbis0a 
  libvorbisenc2 libvte-common libvte9 libwavpack1 libwbclient0 libwmf0.2-7 libwpg-0.1-1 libwrap0 libwww-perl libx11-6 
  libx11-data libx86-1 libxau6 libxaw7 libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xv0 libxcb1 
  libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfce4util4 libxfcegui4-4 libxfixes3 libxfont1 libxft2 libxi6 
  libxine1 libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins libxine1-plugins libxine1-x libxinerama1 
  libxkbfile1 libxmu6 libxmuu1 libxpm4 libxrandr2 libxrender1 libxslt1.1 libxss1 libxt6 libxtst6 libxv1 libxvidcore4 libxvmc1 
  libxxf86dga1 libxxf86vm1 linux-image-2.6-amd64 linux-sound-base locales login logrotate lp-solve lsb-base lsof lvm2 lwresd 
  m4 mailagent makedev man-db manpages manpages-fr manpages-fr-extra mawk mc menu mime-support mktemp mlocate mlock 
  module-init-tools mount mousepad mutt myspell-en-us myspell-fr-gut nano ncurses-base ncurses-bin ncurses-term net-tools 
  netatalk netbase nfs-common nfs-kernel-server ntfs-3g nvclock openbsd-inetd openoffice.org openoffice.org-base 
  openoffice.org-base-core openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw 
  openoffice.org-filter-mobiledev openoffice.org-gcj openoffice.org-gtk openoffice.org-help-en-us openoffice.org-help-fr 
  openoffice.org-impress openoffice.org-java-common openoffice.org-l10n-fr openoffice.org-math openoffice.org-officebean 
  openoffice.org-report-builder-bin openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-thesaurus-en-us 
  openoffice.org-writer openprinting-ppds openssh-client openssh-server openssl orage passwd patch pciutils pcmciautils perl 
  perl-base perl-modules php5-common pm-utils popularity-contest portmap postgresql postgresql-client postgresql-client-common 
  postgresql-common postgresql-contrib postgresql-doc powermgmt-base powertop printconf procmail procps psmisc psutils python 
  python-cairo python-central python-dbus python-foomatic python-glade2 python-gnome2 python-gobject python-gtk2 
  python-imaging python-ipy python-minimal python-pyorbit python-support python2.5 python2.5-minimal qpopper radeontool 
  readline-common reportbug rsyslog sa-exim samba samba-common samba-doc sed sgml-base sgml-data shared-mime-info 
  smartmontools smbclient smbfs spamassassin spamc ssl-cert sudo swat swfdec-mozilla sysv-rc sysvinit sysvinit-utils tar 
  tasksel tasksel-data tcpd texinfo thunar thunar-data thunar-media-tags-plugin time toshset traceroute ttf-dejavu 
  ttf-dejavu-core ttf-dejavu-extra ttf-liberation ttf-opensymbol tzdata ucf udev update-inetd usbutils util-linux uw-imapd 
  vbetool vim-common vim-tiny w3m wamerican wfrench wget whiptail whois winbind wireless-tools wpasupplicant x11-apps 
  x11-common x11-session-utils x11-utils x11-xfs-utils x11-xkb-utils x11-xserver-utils xauth xbitmaps xdg-utils xfce4 
  xfce4-battery-plugin xfce4-clipman-plugin xfce4-cpufreq-plugin xfce4-cpugraph-plugin xfce4-diskperf-plugin 
  xfce4-fsguard-plugin xfce4-genmon-plugin xfce4-goodies xfce4-mailwatch-plugin xfce4-mixer xfce4-mount-plugin 
  xfce4-netload-plugin xfce4-notes-plugin xfce4-panel xfce4-quicklauncher-plugin xfce4-sensors-plugin xfce4-session 
  xfce4-smartbookmark-plugin xfce4-systemload-plugin xfce4-terminal xfce4-utils xfce4-verve-plugin xfce4-wavelan-plugin 
  xfce4-weather-plugin xfdesktop4 xfdesktop4-data xfonts-100dpi xfonts-75dpi xfonts-base xfonts-encodings xfonts-intl-european 
  xfonts-scalable xfonts-utils xfprint4 xfwm4 xinit xkb-data xml-core xorg xsane xsane-common xserver-xorg xserver-xorg-core 
  xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd xserver-xorg-input-mouse xserver-xorg-input-synaptics 
  xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati 
  xserver-xorg-video-chips xserver-xorg-video-cirrus xserver-xorg-video-dummy xserver-xorg-video-fbdev 
  xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-intel xserver-xorg-video-mach64 xserver-xorg-video-mga 
  xserver-xorg-video-neomagic xserver-xorg-video-nv xserver-xorg-video-openchrome xserver-xorg-video-r128 
  xserver-xorg-video-radeon xserver-xorg-video-radeonhd xserver-xorg-video-rendition xserver-xorg-video-s3 
  xserver-xorg-video-s3virge xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis 
  xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident xserver-xorg-video-tseng 
  xserver-xorg-video-vesa xserver-xorg-video-vmware xserver-xorg-video-voodoo xterm zlib1g 
Les paquets suivants sont RECOMMANDÉS mais ne seront pas installés :
  bzip2 gamin gcc gdm-themes hddtemp libapache2-reload-perl libatk1.0-data libatm1 libbsd-resource-perl libc6-dev libfribidi0 
  libglib2.0-data libgtk2.0-bin libhtml-format-perl libio-socket-inet6-perl liblog4j1.2-java-gcj libmail-spf-perl 
  libmailtools-perl libnss-lwres libpam-gnome-keyring libpaper-utils lm-sensors make nmap openoffice.org-emailmerge 
  openoffice.org-filter-binfilter pconf-detect rc re2c uuid-runtime wdiff xfwm4-themes xnest xserver-xephyr zenity 
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] 
&lt;/code&gt;

En fonction de votre connexion ça peut prendre très longtemps, et être interrompu (à 500KB/s une demi-heure à 50 KB/s c'est plusieurs heures...).
Un conseil, si vous n'êtes pas sûr de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

&lt;code&gt;
# aptitude -d safe-upgrade (apt-get -d upgrade)
...
 762Mo téléchargés en 1h9min37s (182ko/s)                                                          
Lecture des listes de paquets... Fait             
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait
&lt;/code&gt;

Puis

&lt;code&gt;
# aptitude safe-upgrade (apt-get upgrade)
...
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 0o/762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] y
&lt;/code&gt;

=== Déroulement ===

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut, mais prenez le temps de lire tous les messages, et si nécessaire, prenez des notes.

Sans le téléchargement des fichiers, comptez un peu plus d'une heure pour la mise à niveau.

[[Fichier:Snapshot4.jpeg]]

[[Fichier:Snapshot5.jpeg]]

[[Fichier:Snapshot6.jpeg]]

[[Fichier:Snapshot7.jpeg]]

[[Fichier:Snapshot9.jpeg]]

[[Fichier:Snapshot11.jpeg]]

[[Fichier:Snapshot13.jpeg]]

[[Fichier:Snapshot14.jpeg]]

[[Fichier:Snapshot15.jpeg]]

[[Fichier:Snapshot16.jpeg]]

[[Fichier:Snapshot17.jpeg]]

Vous partirez d'une Lenny configurée, et donc de nombreux fichiers de configuration auront été modifiés par vos soins.
Il est judicieux de ne pas écraser vos configurations avec les fichiers par défaut proposés par les &quot;mainteneurs&quot; des paquets.
Vous aurez tout le loisir de regarder les modifications proposées, et ce qu'elles apportent, en regardant dans /usr/share/doc ou dans les contenus de vos deb téléchargés (dans /var/apt/archives)

[[Fichier:Snapshot18.jpeg]]

=== finalisation ===

Le safe-upgrade devrait se terminer par ceci :

&lt;code&gt;
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 4 mises à jour restantes [-721].
&lt;/code&gt;

Vous pouvez maintenant lancer un &quot;full-upgrade&quot;

&lt;code&gt;
# aptitude full-upgrade (apt-get dist-uprade)

...

4 paquets mis à jour, 13 nouvellement installés, 2 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 12,1Mo d'archives. Après dépaquetage, 14,3Mo seront utilisés.
Les paquets suivants ont des dépendances non satisfaites :
  libept0: Dépend: libapt-pkg-libc6.7-6-4.6 qui est un paquet virtuel
Les actions suivantes permettront de résoudre ces dépendances :

Supprimer les paquets suivants :
libept0

Le score est de 115

Accepter cette solution ? [Y/n/q/?]y

...

Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 0 mise à jour restante [-4].
&lt;/code&gt;

Si tout s'est bien passé, il ne vous reste plus qu'a redémarrer la machine :

 # shutdown -r now

=== Grub2 ===

Si vous étiez sous Grub-legacy vous aurez certainement fait la bascule vers Grub2.

La première &quot;surprise&quot; qui vous attend donc (sauf si vous avez lu ce guide avant...) c'est le menu suivant :

[[Fichier:Snapshot19.jpeg]]

Si vous appuyez sur entrée, vous serez conduit vers le menu de Grub2.
Cette étape permet de vérifier que Grub2 est bien installé, et de le tester.

[[Fichier:Snapshot20.jpeg]]

Si cela fonctionne, une des premières choses à faire sera de confirmer l'installation de Grub2 en tapant dans une console la commande suivante :

 # upgrade-from-grub-legacy

=== LVM ===

Problème rencontré lors de la mise à niveau avec LVM...
Le système s'est mélangé les pédales dans l'attribution des partitions.
Résultat :

[[Fichier:Snapshot21.jpeg]]

Voici ou se situe le problème :

&lt;code&gt;
$ vdir /dev/l2s/
total 0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 home -&gt; ../dm-5
lrwxrwxrwx 1 root root 7 25 nov.  18:28 root -&gt; ../dm-0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 swap_1 -&gt; ../dm-1
lrwxrwxrwx 1 root root 7 25 nov.  18:28 tmp -&gt; ../dm-4
lrwxrwxrwx 1 root root 7 25 nov.  18:28 usr -&gt; ../dm-2
lrwxrwxrwx 1 root root 7 25 nov.  18:28 var -&gt; ../dm-3
&lt;/code&gt;
&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
# /dev/hda1	/boot	ext2	defaults	0	2
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-1	/usr	ext3	defaults	0	2
# /dev/hdb1	/var	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-3	none	swap	sw	0	0
# /dev/hdc	/media/cdrom0	udf,iso9660	user,noauto	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

Je ne sais pour quelle raison LVM à changé la numérotation des partitions... /usr est passé en dm-1 alors qu'il était en dm-2 et la swap en dm-3 alors qu'elle était être en dm-1
Il suffit de modifier le fichier /etc/fstab pour qu'il reflète à nouveau correctement vos partitions, et le tour est joué :

&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-2	/usr	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-1	none	swap	sw	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

== Bienvenu sur Squeeze ==

 laurent@lenny2squeeze:~$ uname -a
 Linux lenny2squeeze 2.6.32-5-amd64 #1 SMP Sat Oct 30 14:18:21 UTC 2010 x86_64 GNU/Linux

[[Fichier:Snapshot25.jpeg]]

A venir... Upgrade de Squeeze à ????

----
[[Utilisateur:Lol|Lol]] 25 novembre 2010 à 15:55 (EAT)
[[Catégorie:Installation]]</text>
      <sha1>jdy97h1vdygj6dslie6mr1s9qaz5bga</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2702</id>
      <parentid>2701</parentid>
      <timestamp>2011-02-12T07:42:19Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="33347">{{sid}}

La mise à niveau de Lenny à Squeeze se précise, nous allons faire ici un rapide résumé des opérations nécessaires à la réussite de cette mise à niveau (upgrade).
LVM est installé sur la machine que nous allons mettre à niveau afin de tester le plus de possibilités.

Avant toute chose, je souhaite faire quelques précisions :
Chaque configuration est propre à chacun, en fonction de ses goûts, de son matériel et de ses connaissances.
Un guide universel n'existe donc pas.

Prévoyez aussi d'avoir du temps devant vous, et d'être au calme.

Nous choisirons d'utiliser aptitude au lieu de apt-get, il est en effet plus exigeant concernant les dépendances, votre mise à niveau sera plus &quot;propre&quot;.

'''Remarque''': Le choix ci-dessus n'est plus tout à fait vrai... En effet, Debian préconise maintenant apt-get pour la mise à niveau de Lenny à Squeeze.

http://www.debian.org/releases/squeeze/i386/release-notes/ch-upgrading.en.html#upgradingpackages
La méthode recommandée pour mettre à niveau Debian GNU/Linux est d'utiliser l'outil de gestion des paquets apt-get.
Dans les versions précédentes, aptitude était recommandé, mais les versions récentes de apt-get fournissent des fonctionnalités équivalentes et ont également montré plus de cohérence dans la mise à niveau.

Aptitude reste tout a fait valable pour la mise à jour de Lenny ou de Squeeze.

J'ai choisi une Lenny avec toutes les options de tasksel activées afin de faire un tour d'horizon le plus vaste possible des problèmes qui pourraient survenir.
L'environnement graphique est Xfce.

[[Fichier:Snapshot3.jpeg]]

== Pré-requis ==

=== Une bonne sauvegarde ===

Vous n'avez AUCUNE garantie que la mise à niveau se passe bien, alors, quelle que soit la méthode que vous emploierez, une sauvegarde est le minimum que vous puissiez faire avant de vous lancer dans l'aventure..

Avec dd, dump ou simplement cp SAUVEGARDEZ !

=== Un système à jour! ===

Le fichier sources.list précédent la mise à niveau :

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org stable main non-free
#deb-src http://www.debian-multimedia.org stable main non-free

# backports
deb http://backports.debian.org/debian-backports lenny-backports main contrib non-free
&lt;/code&gt;

 # aptitude update
 # aptitude safe-upgrade
 # aptitude full-upgrade

=== De l'espace! ===

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition où se trouve /var pour le stockage des paquets téléchargés.

Pour info une mise à jour &quot;lourde&quot; se soldera par le téléchargement d'environ 1Go...

Pour connaitre l’espace libre de votre partition racine :

 $ df -H
 Sys. de fich.          Tail.  Occ.  Disp. %Occ. Monté sur
 '''/dev/dm-0              338M   123M   198M  39% /'''
 tmpfs                  262M      0   262M   0% /lib/init/rw
 udev                    11M   689k   9,8M   7% /dev
 tmpfs                  262M      0   262M   0% /dev/shm
 /dev/hda1              239M    20M   207M   9% /boot
 /dev/dm-5              3,7G    75M   3,4G   3% /home
 /dev/dm-4              317M    11M   290M   4% /tmp
 /dev/dm-1              3,7G   1,7G   1,8G  50% /usr
 '''/dev/hdb1              5,3G   1,1G   4,0G  21% /var'''
 /dev/dm-2              1,8G   876M   818M  52% /media/dm-2

'''Si vous disposez de plus de 50% d’espace libre vous pouvez passer à l'étape suivante'''.

Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Si cela ne suffit toujours pas, il faut envisager d'ajouter un disque à votre système, ou de procéder à un upgrade par étapes successives (en mettant à jour les paquets progressivement et en nettoyant à chaque étape)

=== Les pilotes de la carte Graphique ===

Afin de ne pas avoir de mauvaise surprise avec le serveur X, modifiez votre xorg.conf afin d'utiliser des pilotes Debian.

Eventuellement utilisez les pilotes &quot;vesa&quot;

Dans votre fichier /etc/X11/xorg.conf

&lt;code&gt;
Section &quot;Device&quot;
    Identifier     &quot;Device0&quot;
    Driver         &quot;vesa&quot;
EndSection
&lt;/code&gt;

Si vous êtes sûr de vous, n'en faites rien, mais prévoyez une réinstallation des pilotes avant le premier redémarrage.

=== Le fichier sources.list ===

Créons un nouveau sources.list que nous placerons dans /etc/apt/sources.list.d
Nous prenons dores et déjà la bonne habitude d'utiliser ce dossier qui est devenu celui par défaut pour mettre les fichiers contenant les dépôts.

 # nano /etc/apt/sources.list.d/sources.list

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free

# stable security
deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

## stable volatile
## Le dépôt volatile à changé, il est désormais sous &quot;squeeze-updates&quot;
deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib

# stable multimedia
deb http://www.debian-multimedia.org squeeze main non-free
#deb-src http://www.debian-multimedia.org squeeze main non-free

# backports
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
&lt;/code&gt;

== Préparation de la mise à niveau ==

Maintenant que nous sommes prêts, nous pouvons lancer l'upgrade :

Mise à jour de la liste des paquets :

 # aptitude update

=== Si vous avez des problèmes de clefs ===

 W: GPG error: http://www.debian-multimedia.org

 # aptitude install debian-backports-keyring
 # aptitude install debian-multimedia-keyring

=== Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]] ===

 E: Dynamic MMap ran out of room

 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaite l'update, il ne doit pas y avoir d'erreurs

 # aptitude update

=== Problèmes de dépendances ===

Vous ne pourrez pas faire le passage de Lenny à Squeeze tant que subsisteront des problèmes de dépendances...

Voici deux exemples de problèmes de dépendances, et la manière de les régler :

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  xfce4-mixer-oss: Est en conflit avec: xfce4-mixer-alsa mais 4.4.2-3 est installé.
  foomatic-db: Est en conflit avec: foomatic-db-hpijs mais 20080211-1 est installé.
  xfce4-mixer-alsa: Est en conflit avec: xfce4-mixer-oss mais 4.4.2-3 doit être installé.

# aptitude install foomatic-db xfce4-mixer-alsa
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Lecture des descriptions de tâches... Fait  
Les NOUVEAUX paquets suivants vont être installés : 
  libopenjpeg2{a} libpoppler5{a} min12xxw{a} pnm2ppa{a} 
Les paquets suivants seront ENLEVÉS : 
  foomatic-db-hpijs{a} 
Les paquets suivants seront mis à jour : 
  fontconfig-config foomatic-db foomatic-db-engine foomatic-filters libfontconfig1 libjpeg62 libxml2 poppler-utils 
8 paquets mis à jour, 4 nouvellement installés, 1 à enlever et 728 non mis à jour.
Il est nécessaire de télécharger 4722ko d'archives. Après dépaquetage, 18,2Mo seront libérés.
Voulez-vous continuer ? [Y/n/?] o
...
État actuel : 728 mises à jour restantes [-8].
&lt;/code&gt;

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  libatlas3gf-base: Est en conflit avec: libblas3gf (&lt; 1.2-5) mais 1.2-2 est installé et a été conservé
                    Est en conflit avec: liblapack3gf (&lt; 3.2.1-4) mais 3.1.1-1 est installé et a été conservé
  rarian-compat: Est en conflit avec: scrollkeeper (&lt; 0.4) mais 0.3.14-16 est installé et a été conservé

# aptitude install libatlas3gf-base scrollkeeper
...
Les actions suivantes permettront de résoudre ces dépendances :

Mettre à jour les paquets suivants :
libblas3gf [1.2-2 (stable, now) -&gt; 1.2-8 (testing)]
liblapack3gf [3.1.1-1 (stable, now) -&gt; 3.2.1-8 (testing)]

Le score est de 70

Accepter cette solution ? [Y/n/q/?] y
...
État actuel : 725 mises à jour restantes [-3].
&lt;/code&gt;

En cas de doute n'hésitez pas à demander un avis [http://forum.debian-fr.org/ sur le forum]

=== stopper le serveur X ===

'''IMPORTANT''' : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

Si vous faites votre mise à niveau avec le serveur X lancé, vous risquez [http://www.debian-fr.org/upgrade-lenny-squeeze-gnome-minimaliste-t30744.html cette mésaventure]

== Lancez la mise à niveau ==

'''Attention''', Debian recommande désormais d'utiliser apt-get à la place de aptitude pour la mise à niveau : http://www.debian.org/releases/squeeze/i386/release-notes/ch-upgrading.en.html#upgradingpackages

Ce tuto ayant été réalisé avant cette préconisation, il n'est pas à jour concernant ce point précis.

=== A propos de Udev et du Noyau ===

Il est TRèS fortement recommandé de mettre à jour le noyau et udev avant de se lancer dans la mise à niveau. En effet, le noyau Lenny est incompatible avec la version de udev qui se trouve dans squeeze.

 # apt-get install linux-image-2.6 (ou linux-image-2.6-amd64)
 # apt-get install udev

Vous devez maintenant redémarrer le système pour être sur le noyau Squeeze (2.6.32)
Vous pouvez maintenant lancer la mise à niveau :

=== Mise à niveau ===

'''Rappel''': Plutôt que aptitude, utilisez apt-get pour la mise à niveau.

 # apt-get upgrade
 # apt-get dist-upgrade

&lt;code&gt;
# aptitude safe-upgrade (apt-get upgrade)
...
Les paquets suivants ont été conservés : 
  apt apt-utils aptitude synaptic 
Les NOUVEAUX paquets suivants vont être installés : 
  acpi-fakekey{a} apache2.2-bin{a} aumix{a} aumix-common{a} bluez{a} bluez-alsa{a} bluez-cups{a} bluez-gstreamer{a} 
  browser-plugin-gnash{a} cifs-utils{a} consolekit{a} cpp-4.4{a} cracklib-runtime{a} cups-ppdc{a} dash{a} db4.8-util{a} 
  diffutils{a} dosfstools{a} firmware-linux-free{a} freepats{a} fuse-utils{a} gcc-4.4-base{a} gcj-4.4-base{a} 
  gcj-4.4-jre-lib{a} geoip-database{a} ghostscript-cups{a} gnash{a} gnash-common{a} gnupg-curl{a} grub-pc{a} 
  gstreamer0.10-ffmpeg{a} gstreamer0.10-fluendo-mp3{a} gstreamer0.10-plugins-bad{a} gstreamer0.10-plugins-base{a} gvfs{a} 
  hplip-cups{a} insserv{a} install-info{a} isc-dhcp-client{a} isc-dhcp-common{a} iso-codes{a} keyboard-configuration{a} 
  libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libass4{a} libatasmart4{a} libaudit0{a} libavahi-core7{a} libavcodec52{a} 
  libavformat52{a} libavutil50{a} libbabl-0.0-0{a} libbind9-60{a} libbluetooth3{a} libboost-date-time1.42.0{a} 
  libboost-thread1.42.0{a} libbsd0{a} libburn4{a} libc-bin{a} libc-client2007e{a} libcap-ng0{a} libcdaudio1{a} libcdio10{a} 
  libcdparanoia0{a} libcelt0-0{a} libck-connector0{a} libcolamd2.7.1{a} libcommons-beanutils-java{a} 
  libcommons-collections3-java{a} libcommons-compress-java{a} libcommons-digester-java{a} libcommons-logging-java{a} 
  libcrack2{a} libcupscgi1{a} libcupsdriver1{a} libcupsmime1{a} libcupsppdc1{a} libdatrie1{a} libdb-je-java{a} libdb4.7{a} 
  libdb4.7-java{a} libdb4.7-java-gcj{a} libdb4.8{a} libdc1394-22{a} libdca0{a} libdirac-encoder0{a} libdirectfb-1.2-9{a} 
  libdns66{a} libdrm-intel1{a} libdrm-nouveau1{a} libdrm-radeon1{a} libdvdnav4{a} libdvdread4{a} libeggdbus-1-0{a} libenca0{a} 
  libenchant1c2a{a} libevent-1.4-2{a} libexempi3{a} libexo-common{a} libfaad2{a} libfftw3-3{a} libfile-copy-recursive-perl{a} 
  libflite1{a} libfont-freetype-perl{a} libfuse2{a} libgcj10{a} libgcr0{a} libgdu0{a} libgegl-0.0-0{a} libgeoip1{a} libgif4{a} 
  libgme0{a} libgomp1{a} libgp11-0{a} libgpgme11{a} libgraphicsmagick3{a} libgraphite3{a} libgssapi-krb5-2{a} libgtkglext1{a} 
  libgudev-1.0-0{a} libhpmud0{a} libicu44{a} libicu4j-java{a} libiptcdata0{a} libisc60{a} libisccc60{a} libisccfg60{a} 
  libiso9660-7{a} libisofs6{a} libiw30{a} libjbig2dec0{a} libjpeg-progs{a} libjpeg8{a} libjtidy-java{a} libk5crypto3{a} 
  libkate1{a} libkrb5-3{a} libkrb5support0{a} libltdl7{a} liblucene2-java{a} liblwres60{a} liblzma2{a} libmimic0{a} libmms0{a} 
  libmodplug1{a} libmozjs2d{a} libmpcdec6{a} libmpfr4{a} libmusicbrainz4c2a{a} libmythes-1.2-0{a} libneon27-gnutls{a} 
  libnetaddr-ip-perl{a} libnfnetlink0{a} libnl1{a} libntfs-3g75{a} libntfs10{a} libofa0{a} libonig2{a} libopencore-amrnb0{a} 
  libopencore-amrwb0{a} libopenraw1{a} liborc-0.4-0{a} libossp-uuid16{a} libpam-ck-connector{a} libpam-cracklib{a} 
  libpango-perl{a} libpangomm-1.4-1{a} libparted0debian1{a} libpciaccess0{a} libpolkit-agent-1-0{a} libpolkit-backend-1-0{a} 
  libpolkit-gobject-1-0{a} libpoppler-glib4{a} libpth20{a} libpython2.6{a} libqdbm14{a} libraptor1{a} librasqal2{a} 
  libraw1394-11{a} librdf0{a} libreadline6{a} librtmp0{a} libsane-hpaio{a} libsasl2-modules{a} libservlet2.5-java{a} 
  libsexy2{a} libsgutils2-2{a} libslv2-9{a} libsndfile1{a} libsoundtouch1c2{a} libswscale0{a} libtag1-vanilla{a} libtalloc2{a} 
  libtextcat-data-utf8{a} libtokyocabinet8{a} libudev0{a} libunique-1.0-0{a} libusb-1.0-0{a} libutempter0{a} libuuid-perl{a} 
  libv4l-0{a} libva1{a} libvcdinfo0{a} libvisual-0.4-0{a} libvisual-0.4-plugins{a} libvpx0{a} libwebkit-1.0-2{a} 
  libwebkit-1.0-common{a} libwildmidi1{a} libwnck-common{a} libwnck22{a} libx11-xcb1{a} libx264-104{a} libxcb-atom1{a} 
  libxcb-aux0{a} libxcb-dri2-0{a} libxcb-event1{a} libxfce4menu-0.1-0{a} libxfce4util-bin{a} libxfce4util-common{a} 
  libxfconf-0-2{a} libxklavier16{a} libxml-parser-perl{a} libxres1{a} libzbar0{a} linux-base{a} linux-image-2.6.32-5-amd64{a} 
  lockfile-progs{a} lsb-release{a} mtools{a} ntfsprogs{a} os-prober{a} oss-compat{a} php5-cli{a} php5-suhosin{a} 
  policykit-1{a} policykit-1-gnome{a} postgresql-8.4{a} postgresql-client-8.4{a} postgresql-contrib-8.4{a} 
  postgresql-doc-8.4{a} python-cups{a} python-gconf{a} python-numpy{a} python-pexpect{a} python-reportbug{a} python-webkit{a} 
  python2.6{a} python2.6-minimal{a} ristretto{a} samba-common-bin{a} sane-utils{a} sensible-utils{a} squeeze{a} 
  tango-icon-theme{a} thunar-archive-plugin{a} thunar-volman{a} tsconf{a} ttf-freefont{a} ttf-lyx{a} ttf-sil-gentium{a} 
  ttf-sil-gentium-basic{a} udisks{a} uno-libs3{a} unzip{a} ure{a} x-ttcidfont-conf{a} xdg-user-dirs{a} xfburn{a} 
  xfce-keyboard-shortcuts{a} xfce4-appfinder{a} xfce4-clipman{a} xfce4-datetime-plugin{a} xfce4-dict{a} xfce4-notes{a} 
  xfce4-notifyd{a} xfce4-places-plugin{a} xfce4-power-manager{a} xfce4-power-manager-data{a} xfce4-screenshooter{a} 
  xfce4-settings{a} xfce4-taskmanager{a} xfce4-timer-plugin{a} xfce4-xkb-plugin{a} xfconf{a} xfonts-mathml{a} xinput{a} xli{a} 
  xorg-docs-core{a} xscreensaver{a} xscreensaver-data{a} xserver-common{a} xserver-xorg-video-nouveau{a} xulrunner-1.9.1{a} 
  xz-utils{a} 
Les paquets suivants seront ENLEVÉS : 
  bluez-utils{u} cpp-4.3{u} cupsddk-drivers{u} djvulibre-desktop{u} finger{u} gs-common{u} liba52-0.7.4{u} libamrnb3{u} 
  libamrwb3{u} libaudio2{u} libavahi-compat-libdnssd1{u} libavahi-core5{u} libavc1394-0{u} libavcodec51{u} libbind9-50{u} 
  libbluetooth2{u} libc-client2007b{u} libcap1{u} libcucul0{u} libcupsys2{u} libcurl3{u} libdatrie0{u} libdirac0{u} 
  libdjvulibre21{u} libfaad0{u} libfreebob0{u} libgail-common{u} libgraphviz4{u} libgtkhtml2-0{u} libicu38{u} libiec61883-0{u} 
  libisccc50{u} libisccfg50{u} libiw29{u} libjaxp1.3-java-gcj{u} libltdl3{u} liblwres50{u} libmagick10{u} libmodplug0c2{u} 
  libmozjs1d{u} libmpcdec3{u} libmpfr1ldbl{u} libmysqlclient15off{u} libneon27{u} libntfs-3g31{u} libossp-uuid15{u} 
  libparted1.8-10{u} libpoppler-glib3{u} libpoppler3{u} libqt3-mt{u} libraw1394-8{u} libsensors3{u} libservlet2.4-java{u} 
  libsmbios-bin{u} libsmbios2{u} libssh2-1{u} libsuitesparse-3.1.0{u} libswfdec-0.6-90{u} libtalloc1{u} libvolume-id0{u} 
  libx264-65{u} libxalan2-java{u} libxalan2-java-gcj{u} libxcb-xlib0{u} libxerces2-java{u} libxerces2-java-gcj{u} 
  libxfce4mcs-client3{u} libxfce4mcs-manager3{u} libxtrap6{u} libxxf86misc1{u} mysql-common{u} openoffice.org-writer2latex{u} 
  openssl-blacklist{u} postgresql-8.3{u} postgresql-client-8.3{u} postgresql-contrib-8.3{u} postgresql-doc-8.3{u} 
  python-gtkhtml2{u} python-numeric{u} svgalibg1{u} xfce4-icon-theme{u} xfce4-mcs-manager{u} xfce4-mcs-plugins{u} 
  xfce4-minicmd-plugin{u} xfce4-screenshooter-plugin{u} xserver-xorg-video-cyrix{u} xserver-xorg-video-v4l{u} 
  xserver-xorg-video-vga{u} xulrunner-1.9{u} 
Les paquets suivants seront mis à jour : 
  a2ps acpi acpi-support acpi-support-base acpid adduser alsa-base alsa-utils anacron analog apache2 apache2-doc 
  apache2-mpm-prefork apache2-utils apache2.2-common apmd aspell aspell-fr at avahi-autoipd avahi-daemon base-files 
  base-passwd bash bash-completion bc bind9 bind9-doc bind9-host bind9utils bluetooth bsd-mailx bsdmainutils bsdutils bsh 
  bsh-gcj busybox ca-certificates console-common console-data console-setup console-terminus console-tools coreutils cpio cpp 
  cpufrequtils cron cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk dbus dbus-x11 dc debconf debconf-i18n 
  debian-archive-keyring debian-faq debianutils deborphan defoma desktop-base desktop-file-utils dhcp3-client dhcp3-common 
  dialog dictionaries-common diff disk-manager dmidecode dmsetup dnsutils doc-debian docbook-xml dpkg e2fslibs e2fsprogs ed 
  eject esound-common exim4 exim4-base exim4-config exim4-daemon-light exo-utils fastjar file findutils fontconfig foo2zjs 
  foomatic-db-gutenprint foomatic-filters-ppds foomatic-gui fortune-mod fortunes-min ftp gcc-4.3-base gconf2 gconf2-common gdm 
  gettext-base ghostscript gimp gimp-data gksu gnome-keyring gnupg gparted gpgv grep groff-base grub grub-common gsfonts 
  gtk2-engines-xfce gzip hal hal-info hdparm hibernate hicolor-icon-theme hostname hpijs hplip hplip-data iamerican ibritish 
  iceweasel iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint info initramfs-tools initscripts installation-report iproute 
  iptables iputils-ping ispell java-common kerneloops klibc-utils laptop-detect less libaa1 libacl1 libapache2-mod-perl2 
  libapache2-mod-php5 libapache2-mod-python libapm1 libapr1 libaprutil1 libart-2.0-2 libasound2 libaspell15 libatk1.0-0 
  libattr1 libaudiofile0 libavahi-client3 libavahi-common-data libavahi-common3 libavahi-glib1 libavutil49 libbcel-java 
  libblkid1 libbonobo2-0 libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i386 libcaca0 
  libcairo-perl libcairo2 libcairomm-1.0-1 libcap2 libcomerr2 libconsole libcpufreq0 libcroco3 libcups2 libcupsimage2 
  libcurl3-gnutls libcwidget3 libdaemon0 libdb4.6 libdbus-1-3 libdbus-glib-1-2 libdevel-symdump-perl libdevmapper1.02.1 
  libdigest-hmac-perl libdigest-sha1-perl libdirectfb-extra libdmx1 libdrm2 libedit2 libesd0 libexif12 libexo-0.3-0 libexpat1 
  libfaac0 libfam0 libffi5 libflac8 libfontenc1 libfreetype6 libfs6 libgail18 libgc1c2 libgcc1 libgcj-bc libgcj-common 
  libgconf2-4 libgcrypt11 libgd2-noxpm libgdbm3 libgfortran3 libgimp2.0 libgksu2-0 libgl1-mesa-dri libgl1-mesa-glx libglade2-0 
  libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgmp3c2 libgnome-keyring0 libgnome2-0 libgnome2-canvas-perl 
  libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0 libgnomecanvas2-common libgnomeui-0 libgnomeui-common 
  libgnomevfs2-0 libgnomevfs2-common libgnomevfs2-extra libgnutls26 libgpg-error0 libgphoto2-2 libgphoto2-port0 libgpm2 libgs8 
  libgsf-1-114 libgsf-1-common libgsm1 libgssglue1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0 
  libgtk2.0-common libgtkmm-2.4-1c2a libgtop2-7 libgtop2-common libgutenprint2 libhal-storage1 libhal1 libhsqldb-java 
  libhsqldb-java-gcj libhtml-parser-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libice6 libidl0 libidn11 libieee1284-3 
  libijs-0.35 libilmbase6 libjack0 libjasper1 libjaxp1.3-java libjline-java libkeyutils1 libklibc libkrb53 liblcms1 
  libldap-2.4-2 liblocale-gettext-perl liblockfile1 liblog4j1.2-java liblzo2-2 libmad0 libmagic1 libmng1 libmp3lame0 
  libmx4j-java libncurses5 libncursesw5 libnet-dns-perl libnewt0.52 libnfsidmap2 libnotify1 libnspr4-0d libnss-mdns libnss3-1d 
  libogg0 liboil0.3 libopenexr6 liborbit2 libpam-modules libpam-runtime libpam0g libpango1.0-0 libpango1.0-common libpaper1 
  libpci3 libpcre3 libpcsclite1 libperl5.10 libpixman-1-0 libpng12-0 libpopt0 libpostproc51 libpq5 libpulse0 libreadline5 
  librecode0 libregexp-java librpcsecgss3 librsvg2-2 librsvg2-common libsane libsane-extras libsasl2-2 libschroedinger-1.0-0 
  libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsensors4 libsepol1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 
  libsmbclient libsnmp-base libsnmp15 libsocket6-perl libsoup2.4-1 libsqlite3-0 libss2 libssl0.9.8 libstartup-notification0 
  libstdc++6 libsvga1 libsysfs2 libtag1c2a libtagc0 libtasn1-3 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl 
  libthai-data libthai0 libtheora0 libthunar-vfs-1-2 libtiff4 libts-0.0-0 liburi-perl libusb-0.1-4 libuuid1 libvorbis0a 
  libvorbisenc2 libvte-common libvte9 libwavpack1 libwbclient0 libwmf0.2-7 libwpg-0.1-1 libwrap0 libwww-perl libx11-6 
  libx11-data libx86-1 libxau6 libxaw7 libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xv0 libxcb1 
  libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfce4util4 libxfcegui4-4 libxfixes3 libxfont1 libxft2 libxi6 
  libxine1 libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins libxine1-plugins libxine1-x libxinerama1 
  libxkbfile1 libxmu6 libxmuu1 libxpm4 libxrandr2 libxrender1 libxslt1.1 libxss1 libxt6 libxtst6 libxv1 libxvidcore4 libxvmc1 
  libxxf86dga1 libxxf86vm1 linux-image-2.6-amd64 linux-sound-base locales login logrotate lp-solve lsb-base lsof lvm2 lwresd 
  m4 mailagent makedev man-db manpages manpages-fr manpages-fr-extra mawk mc menu mime-support mktemp mlocate mlock 
  module-init-tools mount mousepad mutt myspell-en-us myspell-fr-gut nano ncurses-base ncurses-bin ncurses-term net-tools 
  netatalk netbase nfs-common nfs-kernel-server ntfs-3g nvclock openbsd-inetd openoffice.org openoffice.org-base 
  openoffice.org-base-core openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw 
  openoffice.org-filter-mobiledev openoffice.org-gcj openoffice.org-gtk openoffice.org-help-en-us openoffice.org-help-fr 
  openoffice.org-impress openoffice.org-java-common openoffice.org-l10n-fr openoffice.org-math openoffice.org-officebean 
  openoffice.org-report-builder-bin openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-thesaurus-en-us 
  openoffice.org-writer openprinting-ppds openssh-client openssh-server openssl orage passwd patch pciutils pcmciautils perl 
  perl-base perl-modules php5-common pm-utils popularity-contest portmap postgresql postgresql-client postgresql-client-common 
  postgresql-common postgresql-contrib postgresql-doc powermgmt-base powertop printconf procmail procps psmisc psutils python 
  python-cairo python-central python-dbus python-foomatic python-glade2 python-gnome2 python-gobject python-gtk2 
  python-imaging python-ipy python-minimal python-pyorbit python-support python2.5 python2.5-minimal qpopper radeontool 
  readline-common reportbug rsyslog sa-exim samba samba-common samba-doc sed sgml-base sgml-data shared-mime-info 
  smartmontools smbclient smbfs spamassassin spamc ssl-cert sudo swat swfdec-mozilla sysv-rc sysvinit sysvinit-utils tar 
  tasksel tasksel-data tcpd texinfo thunar thunar-data thunar-media-tags-plugin time toshset traceroute ttf-dejavu 
  ttf-dejavu-core ttf-dejavu-extra ttf-liberation ttf-opensymbol tzdata ucf udev update-inetd usbutils util-linux uw-imapd 
  vbetool vim-common vim-tiny w3m wamerican wfrench wget whiptail whois winbind wireless-tools wpasupplicant x11-apps 
  x11-common x11-session-utils x11-utils x11-xfs-utils x11-xkb-utils x11-xserver-utils xauth xbitmaps xdg-utils xfce4 
  xfce4-battery-plugin xfce4-clipman-plugin xfce4-cpufreq-plugin xfce4-cpugraph-plugin xfce4-diskperf-plugin 
  xfce4-fsguard-plugin xfce4-genmon-plugin xfce4-goodies xfce4-mailwatch-plugin xfce4-mixer xfce4-mount-plugin 
  xfce4-netload-plugin xfce4-notes-plugin xfce4-panel xfce4-quicklauncher-plugin xfce4-sensors-plugin xfce4-session 
  xfce4-smartbookmark-plugin xfce4-systemload-plugin xfce4-terminal xfce4-utils xfce4-verve-plugin xfce4-wavelan-plugin 
  xfce4-weather-plugin xfdesktop4 xfdesktop4-data xfonts-100dpi xfonts-75dpi xfonts-base xfonts-encodings xfonts-intl-european 
  xfonts-scalable xfonts-utils xfprint4 xfwm4 xinit xkb-data xml-core xorg xsane xsane-common xserver-xorg xserver-xorg-core 
  xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd xserver-xorg-input-mouse xserver-xorg-input-synaptics 
  xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati 
  xserver-xorg-video-chips xserver-xorg-video-cirrus xserver-xorg-video-dummy xserver-xorg-video-fbdev 
  xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-intel xserver-xorg-video-mach64 xserver-xorg-video-mga 
  xserver-xorg-video-neomagic xserver-xorg-video-nv xserver-xorg-video-openchrome xserver-xorg-video-r128 
  xserver-xorg-video-radeon xserver-xorg-video-radeonhd xserver-xorg-video-rendition xserver-xorg-video-s3 
  xserver-xorg-video-s3virge xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis 
  xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident xserver-xorg-video-tseng 
  xserver-xorg-video-vesa xserver-xorg-video-vmware xserver-xorg-video-voodoo xterm zlib1g 
Les paquets suivants sont RECOMMANDÉS mais ne seront pas installés :
  bzip2 gamin gcc gdm-themes hddtemp libapache2-reload-perl libatk1.0-data libatm1 libbsd-resource-perl libc6-dev libfribidi0 
  libglib2.0-data libgtk2.0-bin libhtml-format-perl libio-socket-inet6-perl liblog4j1.2-java-gcj libmail-spf-perl 
  libmailtools-perl libnss-lwres libpam-gnome-keyring libpaper-utils lm-sensors make nmap openoffice.org-emailmerge 
  openoffice.org-filter-binfilter pconf-detect rc re2c uuid-runtime wdiff xfwm4-themes xnest xserver-xephyr zenity 
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] 
&lt;/code&gt;

En fonction de votre connexion ça peut prendre très longtemps, et être interrompu (à 500KB/s une demi-heure à 50 KB/s c'est plusieurs heures...).
Un conseil, si vous n'êtes pas sûr de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

&lt;code&gt;
# aptitude -d safe-upgrade (apt-get -d upgrade)
...
 762Mo téléchargés en 1h9min37s (182ko/s)                                                          
Lecture des listes de paquets... Fait             
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait
&lt;/code&gt;

Puis

&lt;code&gt;
# aptitude safe-upgrade (apt-get upgrade)
...
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 0o/762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] y
&lt;/code&gt;

=== Déroulement ===

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut, mais prenez le temps de lire tous les messages, et si nécessaire, prenez des notes.

Sans le téléchargement des fichiers, comptez un peu plus d'une heure pour la mise à niveau.

[[Fichier:Snapshot4.jpeg]]

[[Fichier:Snapshot5.jpeg]]

[[Fichier:Snapshot6.jpeg]]

[[Fichier:Snapshot7.jpeg]]

[[Fichier:Snapshot9.jpeg]]

[[Fichier:Snapshot11.jpeg]]

[[Fichier:Snapshot13.jpeg]]

[[Fichier:Snapshot14.jpeg]]

[[Fichier:Snapshot15.jpeg]]

[[Fichier:Snapshot16.jpeg]]

[[Fichier:Snapshot17.jpeg]]

Vous partirez d'une Lenny configurée, et donc de nombreux fichiers de configuration auront été modifiés par vos soins.
Il est judicieux de ne pas écraser vos configurations avec les fichiers par défaut proposés par les &quot;mainteneurs&quot; des paquets.
Vous aurez tout le loisir de regarder les modifications proposées, et ce qu'elles apportent, en regardant dans /usr/share/doc ou dans les contenus de vos deb téléchargés (dans /var/apt/archives)

[[Fichier:Snapshot18.jpeg]]

=== finalisation ===

Le safe-upgrade devrait se terminer par ceci :

&lt;code&gt;
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 4 mises à jour restantes [-721].
&lt;/code&gt;

Vous pouvez maintenant lancer un &quot;full-upgrade&quot;

&lt;code&gt;
# aptitude full-upgrade (apt-get dist-uprade)

...

4 paquets mis à jour, 13 nouvellement installés, 2 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 12,1Mo d'archives. Après dépaquetage, 14,3Mo seront utilisés.
Les paquets suivants ont des dépendances non satisfaites :
  libept0: Dépend: libapt-pkg-libc6.7-6-4.6 qui est un paquet virtuel
Les actions suivantes permettront de résoudre ces dépendances :

Supprimer les paquets suivants :
libept0

Le score est de 115

Accepter cette solution ? [Y/n/q/?]y

...

Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 0 mise à jour restante [-4].
&lt;/code&gt;

Si tout s'est bien passé, il ne vous reste plus qu'a redémarrer la machine :

 # shutdown -r now

=== Grub2 ===

Si vous étiez sous Grub-legacy vous aurez certainement fait la bascule vers Grub2.

La première &quot;surprise&quot; qui vous attend donc (sauf si vous avez lu ce guide avant...) c'est le menu suivant :

[[Fichier:Snapshot19.jpeg]]

Si vous appuyez sur entrée, vous serez conduit vers le menu de Grub2.
Cette étape permet de vérifier que Grub2 est bien installé, et de le tester.

[[Fichier:Snapshot20.jpeg]]

Si cela fonctionne, une des premières choses à faire sera de confirmer l'installation de Grub2 en tapant dans une console la commande suivante :

 # upgrade-from-grub-legacy

=== LVM ===

Problème rencontré lors de la mise à niveau avec LVM...
Le système s'est mélangé les pédales dans l'attribution des partitions.
Résultat :

[[Fichier:Snapshot21.jpeg]]

Voici ou se situe le problème :

&lt;code&gt;
$ vdir /dev/l2s/
total 0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 home -&gt; ../dm-5
lrwxrwxrwx 1 root root 7 25 nov.  18:28 root -&gt; ../dm-0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 swap_1 -&gt; ../dm-1
lrwxrwxrwx 1 root root 7 25 nov.  18:28 tmp -&gt; ../dm-4
lrwxrwxrwx 1 root root 7 25 nov.  18:28 usr -&gt; ../dm-2
lrwxrwxrwx 1 root root 7 25 nov.  18:28 var -&gt; ../dm-3
&lt;/code&gt;
&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
# /dev/hda1	/boot	ext2	defaults	0	2
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-1	/usr	ext3	defaults	0	2
# /dev/hdb1	/var	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-3	none	swap	sw	0	0
# /dev/hdc	/media/cdrom0	udf,iso9660	user,noauto	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

Je ne sais pour quelle raison LVM à changé la numérotation des partitions... /usr est passé en dm-1 alors qu'il était en dm-2 et la swap en dm-3 alors qu'elle était être en dm-1
Il suffit de modifier le fichier /etc/fstab pour qu'il reflète à nouveau correctement vos partitions, et le tour est joué :

&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-2	/usr	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-1	none	swap	sw	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

== Bienvenu sur Squeeze ==

 laurent@lenny2squeeze:~$ uname -a
 Linux lenny2squeeze 2.6.32-5-amd64 #1 SMP Sat Oct 30 14:18:21 UTC 2010 x86_64 GNU/Linux

[[Fichier:Snapshot25.jpeg]]

A venir... Upgrade de Squeeze à ????

----
[[Utilisateur:Lol|Lol]] 25 novembre 2010 à 15:55 (EAT)
[[Catégorie:Installation]]</text>
      <sha1>2p56rjouj8zr18g6qru0aaf37bxfi11</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2751</id>
      <parentid>2702</parentid>
      <timestamp>2011-03-26T06:04:19Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* A propos de Udev et du Noyau */</comment>
      <text xml:space="preserve" bytes="33351">{{sid}}

La mise à niveau de Lenny à Squeeze se précise, nous allons faire ici un rapide résumé des opérations nécessaires à la réussite de cette mise à niveau (upgrade).
LVM est installé sur la machine que nous allons mettre à niveau afin de tester le plus de possibilités.

Avant toute chose, je souhaite faire quelques précisions :
Chaque configuration est propre à chacun, en fonction de ses goûts, de son matériel et de ses connaissances.
Un guide universel n'existe donc pas.

Prévoyez aussi d'avoir du temps devant vous, et d'être au calme.

Nous choisirons d'utiliser aptitude au lieu de apt-get, il est en effet plus exigeant concernant les dépendances, votre mise à niveau sera plus &quot;propre&quot;.

'''Remarque''': Le choix ci-dessus n'est plus tout à fait vrai... En effet, Debian préconise maintenant apt-get pour la mise à niveau de Lenny à Squeeze.

http://www.debian.org/releases/squeeze/i386/release-notes/ch-upgrading.en.html#upgradingpackages
La méthode recommandée pour mettre à niveau Debian GNU/Linux est d'utiliser l'outil de gestion des paquets apt-get.
Dans les versions précédentes, aptitude était recommandé, mais les versions récentes de apt-get fournissent des fonctionnalités équivalentes et ont également montré plus de cohérence dans la mise à niveau.

Aptitude reste tout a fait valable pour la mise à jour de Lenny ou de Squeeze.

J'ai choisi une Lenny avec toutes les options de tasksel activées afin de faire un tour d'horizon le plus vaste possible des problèmes qui pourraient survenir.
L'environnement graphique est Xfce.

[[Fichier:Snapshot3.jpeg]]

== Pré-requis ==

=== Une bonne sauvegarde ===

Vous n'avez AUCUNE garantie que la mise à niveau se passe bien, alors, quelle que soit la méthode que vous emploierez, une sauvegarde est le minimum que vous puissiez faire avant de vous lancer dans l'aventure..

Avec dd, dump ou simplement cp SAUVEGARDEZ !

=== Un système à jour! ===

Le fichier sources.list précédent la mise à niveau :

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org stable main non-free
#deb-src http://www.debian-multimedia.org stable main non-free

# backports
deb http://backports.debian.org/debian-backports lenny-backports main contrib non-free
&lt;/code&gt;

 # aptitude update
 # aptitude safe-upgrade
 # aptitude full-upgrade

=== De l'espace! ===

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition où se trouve /var pour le stockage des paquets téléchargés.

Pour info une mise à jour &quot;lourde&quot; se soldera par le téléchargement d'environ 1Go...

Pour connaitre l’espace libre de votre partition racine :

 $ df -H
 Sys. de fich.          Tail.  Occ.  Disp. %Occ. Monté sur
 '''/dev/dm-0              338M   123M   198M  39% /'''
 tmpfs                  262M      0   262M   0% /lib/init/rw
 udev                    11M   689k   9,8M   7% /dev
 tmpfs                  262M      0   262M   0% /dev/shm
 /dev/hda1              239M    20M   207M   9% /boot
 /dev/dm-5              3,7G    75M   3,4G   3% /home
 /dev/dm-4              317M    11M   290M   4% /tmp
 /dev/dm-1              3,7G   1,7G   1,8G  50% /usr
 '''/dev/hdb1              5,3G   1,1G   4,0G  21% /var'''
 /dev/dm-2              1,8G   876M   818M  52% /media/dm-2

'''Si vous disposez de plus de 50% d’espace libre vous pouvez passer à l'étape suivante'''.

Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Si cela ne suffit toujours pas, il faut envisager d'ajouter un disque à votre système, ou de procéder à un upgrade par étapes successives (en mettant à jour les paquets progressivement et en nettoyant à chaque étape)

=== Les pilotes de la carte Graphique ===

Afin de ne pas avoir de mauvaise surprise avec le serveur X, modifiez votre xorg.conf afin d'utiliser des pilotes Debian.

Eventuellement utilisez les pilotes &quot;vesa&quot;

Dans votre fichier /etc/X11/xorg.conf

&lt;code&gt;
Section &quot;Device&quot;
    Identifier     &quot;Device0&quot;
    Driver         &quot;vesa&quot;
EndSection
&lt;/code&gt;

Si vous êtes sûr de vous, n'en faites rien, mais prévoyez une réinstallation des pilotes avant le premier redémarrage.

=== Le fichier sources.list ===

Créons un nouveau sources.list que nous placerons dans /etc/apt/sources.list.d
Nous prenons dores et déjà la bonne habitude d'utiliser ce dossier qui est devenu celui par défaut pour mettre les fichiers contenant les dépôts.

 # nano /etc/apt/sources.list.d/sources.list

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free

# stable security
deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

## stable volatile
## Le dépôt volatile à changé, il est désormais sous &quot;squeeze-updates&quot;
deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib

# stable multimedia
deb http://www.debian-multimedia.org squeeze main non-free
#deb-src http://www.debian-multimedia.org squeeze main non-free

# backports
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
&lt;/code&gt;

== Préparation de la mise à niveau ==

Maintenant que nous sommes prêts, nous pouvons lancer l'upgrade :

Mise à jour de la liste des paquets :

 # aptitude update

=== Si vous avez des problèmes de clefs ===

 W: GPG error: http://www.debian-multimedia.org

 # aptitude install debian-backports-keyring
 # aptitude install debian-multimedia-keyring

=== Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]] ===

 E: Dynamic MMap ran out of room

 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaite l'update, il ne doit pas y avoir d'erreurs

 # aptitude update

=== Problèmes de dépendances ===

Vous ne pourrez pas faire le passage de Lenny à Squeeze tant que subsisteront des problèmes de dépendances...

Voici deux exemples de problèmes de dépendances, et la manière de les régler :

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  xfce4-mixer-oss: Est en conflit avec: xfce4-mixer-alsa mais 4.4.2-3 est installé.
  foomatic-db: Est en conflit avec: foomatic-db-hpijs mais 20080211-1 est installé.
  xfce4-mixer-alsa: Est en conflit avec: xfce4-mixer-oss mais 4.4.2-3 doit être installé.

# aptitude install foomatic-db xfce4-mixer-alsa
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Lecture des descriptions de tâches... Fait  
Les NOUVEAUX paquets suivants vont être installés : 
  libopenjpeg2{a} libpoppler5{a} min12xxw{a} pnm2ppa{a} 
Les paquets suivants seront ENLEVÉS : 
  foomatic-db-hpijs{a} 
Les paquets suivants seront mis à jour : 
  fontconfig-config foomatic-db foomatic-db-engine foomatic-filters libfontconfig1 libjpeg62 libxml2 poppler-utils 
8 paquets mis à jour, 4 nouvellement installés, 1 à enlever et 728 non mis à jour.
Il est nécessaire de télécharger 4722ko d'archives. Après dépaquetage, 18,2Mo seront libérés.
Voulez-vous continuer ? [Y/n/?] o
...
État actuel : 728 mises à jour restantes [-8].
&lt;/code&gt;

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  libatlas3gf-base: Est en conflit avec: libblas3gf (&lt; 1.2-5) mais 1.2-2 est installé et a été conservé
                    Est en conflit avec: liblapack3gf (&lt; 3.2.1-4) mais 3.1.1-1 est installé et a été conservé
  rarian-compat: Est en conflit avec: scrollkeeper (&lt; 0.4) mais 0.3.14-16 est installé et a été conservé

# aptitude install libatlas3gf-base scrollkeeper
...
Les actions suivantes permettront de résoudre ces dépendances :

Mettre à jour les paquets suivants :
libblas3gf [1.2-2 (stable, now) -&gt; 1.2-8 (testing)]
liblapack3gf [3.1.1-1 (stable, now) -&gt; 3.2.1-8 (testing)]

Le score est de 70

Accepter cette solution ? [Y/n/q/?] y
...
État actuel : 725 mises à jour restantes [-3].
&lt;/code&gt;

En cas de doute n'hésitez pas à demander un avis [http://forum.debian-fr.org/ sur le forum]

=== stopper le serveur X ===

'''IMPORTANT''' : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

Si vous faites votre mise à niveau avec le serveur X lancé, vous risquez [http://www.debian-fr.org/upgrade-lenny-squeeze-gnome-minimaliste-t30744.html cette mésaventure]

== Lancez la mise à niveau ==

'''Attention''', Debian recommande désormais d'utiliser apt-get à la place de aptitude pour la mise à niveau : http://www.debian.org/releases/squeeze/i386/release-notes/ch-upgrading.en.html#upgradingpackages

Ce tuto ayant été réalisé avant cette préconisation, il n'est pas à jour concernant ce point précis.

=== A propos de Udev et du Noyau ===

Il est TRèS fortement recommandé de mettre à jour le noyau et udev avant de se lancer dans la mise à niveau. En effet, le noyau Lenny est incompatible avec la version de udev qui se trouve dans squeeze.

 # apt-get install linux-image-2.6-686 (ou linux-image-2.6-amd64)
 # apt-get install udev

Vous devez maintenant redémarrer le système pour être sur le noyau Squeeze (2.6.32)
Vous pouvez maintenant lancer la mise à niveau :

=== Mise à niveau ===

'''Rappel''': Plutôt que aptitude, utilisez apt-get pour la mise à niveau.

 # apt-get upgrade
 # apt-get dist-upgrade

&lt;code&gt;
# aptitude safe-upgrade (apt-get upgrade)
...
Les paquets suivants ont été conservés : 
  apt apt-utils aptitude synaptic 
Les NOUVEAUX paquets suivants vont être installés : 
  acpi-fakekey{a} apache2.2-bin{a} aumix{a} aumix-common{a} bluez{a} bluez-alsa{a} bluez-cups{a} bluez-gstreamer{a} 
  browser-plugin-gnash{a} cifs-utils{a} consolekit{a} cpp-4.4{a} cracklib-runtime{a} cups-ppdc{a} dash{a} db4.8-util{a} 
  diffutils{a} dosfstools{a} firmware-linux-free{a} freepats{a} fuse-utils{a} gcc-4.4-base{a} gcj-4.4-base{a} 
  gcj-4.4-jre-lib{a} geoip-database{a} ghostscript-cups{a} gnash{a} gnash-common{a} gnupg-curl{a} grub-pc{a} 
  gstreamer0.10-ffmpeg{a} gstreamer0.10-fluendo-mp3{a} gstreamer0.10-plugins-bad{a} gstreamer0.10-plugins-base{a} gvfs{a} 
  hplip-cups{a} insserv{a} install-info{a} isc-dhcp-client{a} isc-dhcp-common{a} iso-codes{a} keyboard-configuration{a} 
  libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libass4{a} libatasmart4{a} libaudit0{a} libavahi-core7{a} libavcodec52{a} 
  libavformat52{a} libavutil50{a} libbabl-0.0-0{a} libbind9-60{a} libbluetooth3{a} libboost-date-time1.42.0{a} 
  libboost-thread1.42.0{a} libbsd0{a} libburn4{a} libc-bin{a} libc-client2007e{a} libcap-ng0{a} libcdaudio1{a} libcdio10{a} 
  libcdparanoia0{a} libcelt0-0{a} libck-connector0{a} libcolamd2.7.1{a} libcommons-beanutils-java{a} 
  libcommons-collections3-java{a} libcommons-compress-java{a} libcommons-digester-java{a} libcommons-logging-java{a} 
  libcrack2{a} libcupscgi1{a} libcupsdriver1{a} libcupsmime1{a} libcupsppdc1{a} libdatrie1{a} libdb-je-java{a} libdb4.7{a} 
  libdb4.7-java{a} libdb4.7-java-gcj{a} libdb4.8{a} libdc1394-22{a} libdca0{a} libdirac-encoder0{a} libdirectfb-1.2-9{a} 
  libdns66{a} libdrm-intel1{a} libdrm-nouveau1{a} libdrm-radeon1{a} libdvdnav4{a} libdvdread4{a} libeggdbus-1-0{a} libenca0{a} 
  libenchant1c2a{a} libevent-1.4-2{a} libexempi3{a} libexo-common{a} libfaad2{a} libfftw3-3{a} libfile-copy-recursive-perl{a} 
  libflite1{a} libfont-freetype-perl{a} libfuse2{a} libgcj10{a} libgcr0{a} libgdu0{a} libgegl-0.0-0{a} libgeoip1{a} libgif4{a} 
  libgme0{a} libgomp1{a} libgp11-0{a} libgpgme11{a} libgraphicsmagick3{a} libgraphite3{a} libgssapi-krb5-2{a} libgtkglext1{a} 
  libgudev-1.0-0{a} libhpmud0{a} libicu44{a} libicu4j-java{a} libiptcdata0{a} libisc60{a} libisccc60{a} libisccfg60{a} 
  libiso9660-7{a} libisofs6{a} libiw30{a} libjbig2dec0{a} libjpeg-progs{a} libjpeg8{a} libjtidy-java{a} libk5crypto3{a} 
  libkate1{a} libkrb5-3{a} libkrb5support0{a} libltdl7{a} liblucene2-java{a} liblwres60{a} liblzma2{a} libmimic0{a} libmms0{a} 
  libmodplug1{a} libmozjs2d{a} libmpcdec6{a} libmpfr4{a} libmusicbrainz4c2a{a} libmythes-1.2-0{a} libneon27-gnutls{a} 
  libnetaddr-ip-perl{a} libnfnetlink0{a} libnl1{a} libntfs-3g75{a} libntfs10{a} libofa0{a} libonig2{a} libopencore-amrnb0{a} 
  libopencore-amrwb0{a} libopenraw1{a} liborc-0.4-0{a} libossp-uuid16{a} libpam-ck-connector{a} libpam-cracklib{a} 
  libpango-perl{a} libpangomm-1.4-1{a} libparted0debian1{a} libpciaccess0{a} libpolkit-agent-1-0{a} libpolkit-backend-1-0{a} 
  libpolkit-gobject-1-0{a} libpoppler-glib4{a} libpth20{a} libpython2.6{a} libqdbm14{a} libraptor1{a} librasqal2{a} 
  libraw1394-11{a} librdf0{a} libreadline6{a} librtmp0{a} libsane-hpaio{a} libsasl2-modules{a} libservlet2.5-java{a} 
  libsexy2{a} libsgutils2-2{a} libslv2-9{a} libsndfile1{a} libsoundtouch1c2{a} libswscale0{a} libtag1-vanilla{a} libtalloc2{a} 
  libtextcat-data-utf8{a} libtokyocabinet8{a} libudev0{a} libunique-1.0-0{a} libusb-1.0-0{a} libutempter0{a} libuuid-perl{a} 
  libv4l-0{a} libva1{a} libvcdinfo0{a} libvisual-0.4-0{a} libvisual-0.4-plugins{a} libvpx0{a} libwebkit-1.0-2{a} 
  libwebkit-1.0-common{a} libwildmidi1{a} libwnck-common{a} libwnck22{a} libx11-xcb1{a} libx264-104{a} libxcb-atom1{a} 
  libxcb-aux0{a} libxcb-dri2-0{a} libxcb-event1{a} libxfce4menu-0.1-0{a} libxfce4util-bin{a} libxfce4util-common{a} 
  libxfconf-0-2{a} libxklavier16{a} libxml-parser-perl{a} libxres1{a} libzbar0{a} linux-base{a} linux-image-2.6.32-5-amd64{a} 
  lockfile-progs{a} lsb-release{a} mtools{a} ntfsprogs{a} os-prober{a} oss-compat{a} php5-cli{a} php5-suhosin{a} 
  policykit-1{a} policykit-1-gnome{a} postgresql-8.4{a} postgresql-client-8.4{a} postgresql-contrib-8.4{a} 
  postgresql-doc-8.4{a} python-cups{a} python-gconf{a} python-numpy{a} python-pexpect{a} python-reportbug{a} python-webkit{a} 
  python2.6{a} python2.6-minimal{a} ristretto{a} samba-common-bin{a} sane-utils{a} sensible-utils{a} squeeze{a} 
  tango-icon-theme{a} thunar-archive-plugin{a} thunar-volman{a} tsconf{a} ttf-freefont{a} ttf-lyx{a} ttf-sil-gentium{a} 
  ttf-sil-gentium-basic{a} udisks{a} uno-libs3{a} unzip{a} ure{a} x-ttcidfont-conf{a} xdg-user-dirs{a} xfburn{a} 
  xfce-keyboard-shortcuts{a} xfce4-appfinder{a} xfce4-clipman{a} xfce4-datetime-plugin{a} xfce4-dict{a} xfce4-notes{a} 
  xfce4-notifyd{a} xfce4-places-plugin{a} xfce4-power-manager{a} xfce4-power-manager-data{a} xfce4-screenshooter{a} 
  xfce4-settings{a} xfce4-taskmanager{a} xfce4-timer-plugin{a} xfce4-xkb-plugin{a} xfconf{a} xfonts-mathml{a} xinput{a} xli{a} 
  xorg-docs-core{a} xscreensaver{a} xscreensaver-data{a} xserver-common{a} xserver-xorg-video-nouveau{a} xulrunner-1.9.1{a} 
  xz-utils{a} 
Les paquets suivants seront ENLEVÉS : 
  bluez-utils{u} cpp-4.3{u} cupsddk-drivers{u} djvulibre-desktop{u} finger{u} gs-common{u} liba52-0.7.4{u} libamrnb3{u} 
  libamrwb3{u} libaudio2{u} libavahi-compat-libdnssd1{u} libavahi-core5{u} libavc1394-0{u} libavcodec51{u} libbind9-50{u} 
  libbluetooth2{u} libc-client2007b{u} libcap1{u} libcucul0{u} libcupsys2{u} libcurl3{u} libdatrie0{u} libdirac0{u} 
  libdjvulibre21{u} libfaad0{u} libfreebob0{u} libgail-common{u} libgraphviz4{u} libgtkhtml2-0{u} libicu38{u} libiec61883-0{u} 
  libisccc50{u} libisccfg50{u} libiw29{u} libjaxp1.3-java-gcj{u} libltdl3{u} liblwres50{u} libmagick10{u} libmodplug0c2{u} 
  libmozjs1d{u} libmpcdec3{u} libmpfr1ldbl{u} libmysqlclient15off{u} libneon27{u} libntfs-3g31{u} libossp-uuid15{u} 
  libparted1.8-10{u} libpoppler-glib3{u} libpoppler3{u} libqt3-mt{u} libraw1394-8{u} libsensors3{u} libservlet2.4-java{u} 
  libsmbios-bin{u} libsmbios2{u} libssh2-1{u} libsuitesparse-3.1.0{u} libswfdec-0.6-90{u} libtalloc1{u} libvolume-id0{u} 
  libx264-65{u} libxalan2-java{u} libxalan2-java-gcj{u} libxcb-xlib0{u} libxerces2-java{u} libxerces2-java-gcj{u} 
  libxfce4mcs-client3{u} libxfce4mcs-manager3{u} libxtrap6{u} libxxf86misc1{u} mysql-common{u} openoffice.org-writer2latex{u} 
  openssl-blacklist{u} postgresql-8.3{u} postgresql-client-8.3{u} postgresql-contrib-8.3{u} postgresql-doc-8.3{u} 
  python-gtkhtml2{u} python-numeric{u} svgalibg1{u} xfce4-icon-theme{u} xfce4-mcs-manager{u} xfce4-mcs-plugins{u} 
  xfce4-minicmd-plugin{u} xfce4-screenshooter-plugin{u} xserver-xorg-video-cyrix{u} xserver-xorg-video-v4l{u} 
  xserver-xorg-video-vga{u} xulrunner-1.9{u} 
Les paquets suivants seront mis à jour : 
  a2ps acpi acpi-support acpi-support-base acpid adduser alsa-base alsa-utils anacron analog apache2 apache2-doc 
  apache2-mpm-prefork apache2-utils apache2.2-common apmd aspell aspell-fr at avahi-autoipd avahi-daemon base-files 
  base-passwd bash bash-completion bc bind9 bind9-doc bind9-host bind9utils bluetooth bsd-mailx bsdmainutils bsdutils bsh 
  bsh-gcj busybox ca-certificates console-common console-data console-setup console-terminus console-tools coreutils cpio cpp 
  cpufrequtils cron cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk dbus dbus-x11 dc debconf debconf-i18n 
  debian-archive-keyring debian-faq debianutils deborphan defoma desktop-base desktop-file-utils dhcp3-client dhcp3-common 
  dialog dictionaries-common diff disk-manager dmidecode dmsetup dnsutils doc-debian docbook-xml dpkg e2fslibs e2fsprogs ed 
  eject esound-common exim4 exim4-base exim4-config exim4-daemon-light exo-utils fastjar file findutils fontconfig foo2zjs 
  foomatic-db-gutenprint foomatic-filters-ppds foomatic-gui fortune-mod fortunes-min ftp gcc-4.3-base gconf2 gconf2-common gdm 
  gettext-base ghostscript gimp gimp-data gksu gnome-keyring gnupg gparted gpgv grep groff-base grub grub-common gsfonts 
  gtk2-engines-xfce gzip hal hal-info hdparm hibernate hicolor-icon-theme hostname hpijs hplip hplip-data iamerican ibritish 
  iceweasel iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint info initramfs-tools initscripts installation-report iproute 
  iptables iputils-ping ispell java-common kerneloops klibc-utils laptop-detect less libaa1 libacl1 libapache2-mod-perl2 
  libapache2-mod-php5 libapache2-mod-python libapm1 libapr1 libaprutil1 libart-2.0-2 libasound2 libaspell15 libatk1.0-0 
  libattr1 libaudiofile0 libavahi-client3 libavahi-common-data libavahi-common3 libavahi-glib1 libavutil49 libbcel-java 
  libblkid1 libbonobo2-0 libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i386 libcaca0 
  libcairo-perl libcairo2 libcairomm-1.0-1 libcap2 libcomerr2 libconsole libcpufreq0 libcroco3 libcups2 libcupsimage2 
  libcurl3-gnutls libcwidget3 libdaemon0 libdb4.6 libdbus-1-3 libdbus-glib-1-2 libdevel-symdump-perl libdevmapper1.02.1 
  libdigest-hmac-perl libdigest-sha1-perl libdirectfb-extra libdmx1 libdrm2 libedit2 libesd0 libexif12 libexo-0.3-0 libexpat1 
  libfaac0 libfam0 libffi5 libflac8 libfontenc1 libfreetype6 libfs6 libgail18 libgc1c2 libgcc1 libgcj-bc libgcj-common 
  libgconf2-4 libgcrypt11 libgd2-noxpm libgdbm3 libgfortran3 libgimp2.0 libgksu2-0 libgl1-mesa-dri libgl1-mesa-glx libglade2-0 
  libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgmp3c2 libgnome-keyring0 libgnome2-0 libgnome2-canvas-perl 
  libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0 libgnomecanvas2-common libgnomeui-0 libgnomeui-common 
  libgnomevfs2-0 libgnomevfs2-common libgnomevfs2-extra libgnutls26 libgpg-error0 libgphoto2-2 libgphoto2-port0 libgpm2 libgs8 
  libgsf-1-114 libgsf-1-common libgsm1 libgssglue1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0 
  libgtk2.0-common libgtkmm-2.4-1c2a libgtop2-7 libgtop2-common libgutenprint2 libhal-storage1 libhal1 libhsqldb-java 
  libhsqldb-java-gcj libhtml-parser-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libice6 libidl0 libidn11 libieee1284-3 
  libijs-0.35 libilmbase6 libjack0 libjasper1 libjaxp1.3-java libjline-java libkeyutils1 libklibc libkrb53 liblcms1 
  libldap-2.4-2 liblocale-gettext-perl liblockfile1 liblog4j1.2-java liblzo2-2 libmad0 libmagic1 libmng1 libmp3lame0 
  libmx4j-java libncurses5 libncursesw5 libnet-dns-perl libnewt0.52 libnfsidmap2 libnotify1 libnspr4-0d libnss-mdns libnss3-1d 
  libogg0 liboil0.3 libopenexr6 liborbit2 libpam-modules libpam-runtime libpam0g libpango1.0-0 libpango1.0-common libpaper1 
  libpci3 libpcre3 libpcsclite1 libperl5.10 libpixman-1-0 libpng12-0 libpopt0 libpostproc51 libpq5 libpulse0 libreadline5 
  librecode0 libregexp-java librpcsecgss3 librsvg2-2 librsvg2-common libsane libsane-extras libsasl2-2 libschroedinger-1.0-0 
  libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsensors4 libsepol1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 
  libsmbclient libsnmp-base libsnmp15 libsocket6-perl libsoup2.4-1 libsqlite3-0 libss2 libssl0.9.8 libstartup-notification0 
  libstdc++6 libsvga1 libsysfs2 libtag1c2a libtagc0 libtasn1-3 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl 
  libthai-data libthai0 libtheora0 libthunar-vfs-1-2 libtiff4 libts-0.0-0 liburi-perl libusb-0.1-4 libuuid1 libvorbis0a 
  libvorbisenc2 libvte-common libvte9 libwavpack1 libwbclient0 libwmf0.2-7 libwpg-0.1-1 libwrap0 libwww-perl libx11-6 
  libx11-data libx86-1 libxau6 libxaw7 libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xv0 libxcb1 
  libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfce4util4 libxfcegui4-4 libxfixes3 libxfont1 libxft2 libxi6 
  libxine1 libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins libxine1-plugins libxine1-x libxinerama1 
  libxkbfile1 libxmu6 libxmuu1 libxpm4 libxrandr2 libxrender1 libxslt1.1 libxss1 libxt6 libxtst6 libxv1 libxvidcore4 libxvmc1 
  libxxf86dga1 libxxf86vm1 linux-image-2.6-amd64 linux-sound-base locales login logrotate lp-solve lsb-base lsof lvm2 lwresd 
  m4 mailagent makedev man-db manpages manpages-fr manpages-fr-extra mawk mc menu mime-support mktemp mlocate mlock 
  module-init-tools mount mousepad mutt myspell-en-us myspell-fr-gut nano ncurses-base ncurses-bin ncurses-term net-tools 
  netatalk netbase nfs-common nfs-kernel-server ntfs-3g nvclock openbsd-inetd openoffice.org openoffice.org-base 
  openoffice.org-base-core openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw 
  openoffice.org-filter-mobiledev openoffice.org-gcj openoffice.org-gtk openoffice.org-help-en-us openoffice.org-help-fr 
  openoffice.org-impress openoffice.org-java-common openoffice.org-l10n-fr openoffice.org-math openoffice.org-officebean 
  openoffice.org-report-builder-bin openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-thesaurus-en-us 
  openoffice.org-writer openprinting-ppds openssh-client openssh-server openssl orage passwd patch pciutils pcmciautils perl 
  perl-base perl-modules php5-common pm-utils popularity-contest portmap postgresql postgresql-client postgresql-client-common 
  postgresql-common postgresql-contrib postgresql-doc powermgmt-base powertop printconf procmail procps psmisc psutils python 
  python-cairo python-central python-dbus python-foomatic python-glade2 python-gnome2 python-gobject python-gtk2 
  python-imaging python-ipy python-minimal python-pyorbit python-support python2.5 python2.5-minimal qpopper radeontool 
  readline-common reportbug rsyslog sa-exim samba samba-common samba-doc sed sgml-base sgml-data shared-mime-info 
  smartmontools smbclient smbfs spamassassin spamc ssl-cert sudo swat swfdec-mozilla sysv-rc sysvinit sysvinit-utils tar 
  tasksel tasksel-data tcpd texinfo thunar thunar-data thunar-media-tags-plugin time toshset traceroute ttf-dejavu 
  ttf-dejavu-core ttf-dejavu-extra ttf-liberation ttf-opensymbol tzdata ucf udev update-inetd usbutils util-linux uw-imapd 
  vbetool vim-common vim-tiny w3m wamerican wfrench wget whiptail whois winbind wireless-tools wpasupplicant x11-apps 
  x11-common x11-session-utils x11-utils x11-xfs-utils x11-xkb-utils x11-xserver-utils xauth xbitmaps xdg-utils xfce4 
  xfce4-battery-plugin xfce4-clipman-plugin xfce4-cpufreq-plugin xfce4-cpugraph-plugin xfce4-diskperf-plugin 
  xfce4-fsguard-plugin xfce4-genmon-plugin xfce4-goodies xfce4-mailwatch-plugin xfce4-mixer xfce4-mount-plugin 
  xfce4-netload-plugin xfce4-notes-plugin xfce4-panel xfce4-quicklauncher-plugin xfce4-sensors-plugin xfce4-session 
  xfce4-smartbookmark-plugin xfce4-systemload-plugin xfce4-terminal xfce4-utils xfce4-verve-plugin xfce4-wavelan-plugin 
  xfce4-weather-plugin xfdesktop4 xfdesktop4-data xfonts-100dpi xfonts-75dpi xfonts-base xfonts-encodings xfonts-intl-european 
  xfonts-scalable xfonts-utils xfprint4 xfwm4 xinit xkb-data xml-core xorg xsane xsane-common xserver-xorg xserver-xorg-core 
  xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd xserver-xorg-input-mouse xserver-xorg-input-synaptics 
  xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati 
  xserver-xorg-video-chips xserver-xorg-video-cirrus xserver-xorg-video-dummy xserver-xorg-video-fbdev 
  xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-intel xserver-xorg-video-mach64 xserver-xorg-video-mga 
  xserver-xorg-video-neomagic xserver-xorg-video-nv xserver-xorg-video-openchrome xserver-xorg-video-r128 
  xserver-xorg-video-radeon xserver-xorg-video-radeonhd xserver-xorg-video-rendition xserver-xorg-video-s3 
  xserver-xorg-video-s3virge xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis 
  xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident xserver-xorg-video-tseng 
  xserver-xorg-video-vesa xserver-xorg-video-vmware xserver-xorg-video-voodoo xterm zlib1g 
Les paquets suivants sont RECOMMANDÉS mais ne seront pas installés :
  bzip2 gamin gcc gdm-themes hddtemp libapache2-reload-perl libatk1.0-data libatm1 libbsd-resource-perl libc6-dev libfribidi0 
  libglib2.0-data libgtk2.0-bin libhtml-format-perl libio-socket-inet6-perl liblog4j1.2-java-gcj libmail-spf-perl 
  libmailtools-perl libnss-lwres libpam-gnome-keyring libpaper-utils lm-sensors make nmap openoffice.org-emailmerge 
  openoffice.org-filter-binfilter pconf-detect rc re2c uuid-runtime wdiff xfwm4-themes xnest xserver-xephyr zenity 
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] 
&lt;/code&gt;

En fonction de votre connexion ça peut prendre très longtemps, et être interrompu (à 500KB/s une demi-heure à 50 KB/s c'est plusieurs heures...).
Un conseil, si vous n'êtes pas sûr de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

&lt;code&gt;
# aptitude -d safe-upgrade (apt-get -d upgrade)
...
 762Mo téléchargés en 1h9min37s (182ko/s)                                                          
Lecture des listes de paquets... Fait             
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait
&lt;/code&gt;

Puis

&lt;code&gt;
# aptitude safe-upgrade (apt-get upgrade)
...
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 0o/762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] y
&lt;/code&gt;

=== Déroulement ===

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut, mais prenez le temps de lire tous les messages, et si nécessaire, prenez des notes.

Sans le téléchargement des fichiers, comptez un peu plus d'une heure pour la mise à niveau.

[[Fichier:Snapshot4.jpeg]]

[[Fichier:Snapshot5.jpeg]]

[[Fichier:Snapshot6.jpeg]]

[[Fichier:Snapshot7.jpeg]]

[[Fichier:Snapshot9.jpeg]]

[[Fichier:Snapshot11.jpeg]]

[[Fichier:Snapshot13.jpeg]]

[[Fichier:Snapshot14.jpeg]]

[[Fichier:Snapshot15.jpeg]]

[[Fichier:Snapshot16.jpeg]]

[[Fichier:Snapshot17.jpeg]]

Vous partirez d'une Lenny configurée, et donc de nombreux fichiers de configuration auront été modifiés par vos soins.
Il est judicieux de ne pas écraser vos configurations avec les fichiers par défaut proposés par les &quot;mainteneurs&quot; des paquets.
Vous aurez tout le loisir de regarder les modifications proposées, et ce qu'elles apportent, en regardant dans /usr/share/doc ou dans les contenus de vos deb téléchargés (dans /var/apt/archives)

[[Fichier:Snapshot18.jpeg]]

=== finalisation ===

Le safe-upgrade devrait se terminer par ceci :

&lt;code&gt;
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 4 mises à jour restantes [-721].
&lt;/code&gt;

Vous pouvez maintenant lancer un &quot;full-upgrade&quot;

&lt;code&gt;
# aptitude full-upgrade (apt-get dist-uprade)

...

4 paquets mis à jour, 13 nouvellement installés, 2 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 12,1Mo d'archives. Après dépaquetage, 14,3Mo seront utilisés.
Les paquets suivants ont des dépendances non satisfaites :
  libept0: Dépend: libapt-pkg-libc6.7-6-4.6 qui est un paquet virtuel
Les actions suivantes permettront de résoudre ces dépendances :

Supprimer les paquets suivants :
libept0

Le score est de 115

Accepter cette solution ? [Y/n/q/?]y

...

Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 0 mise à jour restante [-4].
&lt;/code&gt;

Si tout s'est bien passé, il ne vous reste plus qu'a redémarrer la machine :

 # shutdown -r now

=== Grub2 ===

Si vous étiez sous Grub-legacy vous aurez certainement fait la bascule vers Grub2.

La première &quot;surprise&quot; qui vous attend donc (sauf si vous avez lu ce guide avant...) c'est le menu suivant :

[[Fichier:Snapshot19.jpeg]]

Si vous appuyez sur entrée, vous serez conduit vers le menu de Grub2.
Cette étape permet de vérifier que Grub2 est bien installé, et de le tester.

[[Fichier:Snapshot20.jpeg]]

Si cela fonctionne, une des premières choses à faire sera de confirmer l'installation de Grub2 en tapant dans une console la commande suivante :

 # upgrade-from-grub-legacy

=== LVM ===

Problème rencontré lors de la mise à niveau avec LVM...
Le système s'est mélangé les pédales dans l'attribution des partitions.
Résultat :

[[Fichier:Snapshot21.jpeg]]

Voici ou se situe le problème :

&lt;code&gt;
$ vdir /dev/l2s/
total 0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 home -&gt; ../dm-5
lrwxrwxrwx 1 root root 7 25 nov.  18:28 root -&gt; ../dm-0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 swap_1 -&gt; ../dm-1
lrwxrwxrwx 1 root root 7 25 nov.  18:28 tmp -&gt; ../dm-4
lrwxrwxrwx 1 root root 7 25 nov.  18:28 usr -&gt; ../dm-2
lrwxrwxrwx 1 root root 7 25 nov.  18:28 var -&gt; ../dm-3
&lt;/code&gt;
&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
# /dev/hda1	/boot	ext2	defaults	0	2
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-1	/usr	ext3	defaults	0	2
# /dev/hdb1	/var	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-3	none	swap	sw	0	0
# /dev/hdc	/media/cdrom0	udf,iso9660	user,noauto	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

Je ne sais pour quelle raison LVM à changé la numérotation des partitions... /usr est passé en dm-1 alors qu'il était en dm-2 et la swap en dm-3 alors qu'elle était être en dm-1
Il suffit de modifier le fichier /etc/fstab pour qu'il reflète à nouveau correctement vos partitions, et le tour est joué :

&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-2	/usr	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-1	none	swap	sw	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

== Bienvenu sur Squeeze ==

 laurent@lenny2squeeze:~$ uname -a
 Linux lenny2squeeze 2.6.32-5-amd64 #1 SMP Sat Oct 30 14:18:21 UTC 2010 x86_64 GNU/Linux

[[Fichier:Snapshot25.jpeg]]

A venir... Upgrade de Squeeze à ????

----
[[Utilisateur:Lol|Lol]] 25 novembre 2010 à 15:55 (EAT)
[[Catégorie:Installation]]</text>
      <sha1>q7gffrlsrkkfkywbm7rkkaa8t4vgcgc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2752</id>
      <parentid>2751</parentid>
      <timestamp>2011-03-26T06:06:43Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="33342">La mise à niveau de Lenny à Squeeze se précise, nous allons faire ici un rapide résumé des opérations nécessaires à la réussite de cette mise à niveau (upgrade).
LVM est installé sur la machine que nous allons mettre à niveau afin de tester le plus de possibilités.

Avant toute chose, je souhaite faire quelques précisions :
Chaque configuration est propre à chacun, en fonction de ses goûts, de son matériel et de ses connaissances.
Un guide universel n'existe donc pas.

Prévoyez aussi d'avoir du temps devant vous, et d'être au calme.

Nous choisirons d'utiliser aptitude au lieu de apt-get, il est en effet plus exigeant concernant les dépendances, votre mise à niveau sera plus &quot;propre&quot;.

'''Remarque''': Le choix ci-dessus n'est plus tout à fait vrai... En effet, Debian préconise maintenant apt-get pour la mise à niveau de Lenny à Squeeze.

http://www.debian.org/releases/squeeze/i386/release-notes/ch-upgrading.en.html#upgradingpackages
La méthode recommandée pour mettre à niveau Debian GNU/Linux est d'utiliser l'outil de gestion des paquets apt-get.
Dans les versions précédentes, aptitude était recommandé, mais les versions récentes de apt-get fournissent des fonctionnalités équivalentes et ont également montré plus de cohérence dans la mise à niveau.

Aptitude reste tout a fait valable pour la mise à jour de Lenny ou de Squeeze.

J'ai choisi une Lenny avec toutes les options de tasksel activées afin de faire un tour d'horizon le plus vaste possible des problèmes qui pourraient survenir.
L'environnement graphique est Xfce.

[[Fichier:Snapshot3.jpeg]]

== Pré-requis ==

=== Une bonne sauvegarde ===

Vous n'avez AUCUNE garantie que la mise à niveau se passe bien, alors, quelle que soit la méthode que vous emploierez, une sauvegarde est le minimum que vous puissiez faire avant de vous lancer dans l'aventure..

Avec dd, dump ou simplement cp SAUVEGARDEZ !

=== Un système à jour! ===

Le fichier sources.list précédent la mise à niveau :

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org stable main non-free
#deb-src http://www.debian-multimedia.org stable main non-free

# backports
deb http://backports.debian.org/debian-backports lenny-backports main contrib non-free
&lt;/code&gt;

 # aptitude update
 # aptitude safe-upgrade
 # aptitude full-upgrade

=== De l'espace! ===

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition où se trouve /var pour le stockage des paquets téléchargés.

Pour info une mise à jour &quot;lourde&quot; se soldera par le téléchargement d'environ 1Go...

Pour connaitre l’espace libre de votre partition racine :

 $ df -H
 Sys. de fich.          Tail.  Occ.  Disp. %Occ. Monté sur
 '''/dev/dm-0              338M   123M   198M  39% /'''
 tmpfs                  262M      0   262M   0% /lib/init/rw
 udev                    11M   689k   9,8M   7% /dev
 tmpfs                  262M      0   262M   0% /dev/shm
 /dev/hda1              239M    20M   207M   9% /boot
 /dev/dm-5              3,7G    75M   3,4G   3% /home
 /dev/dm-4              317M    11M   290M   4% /tmp
 /dev/dm-1              3,7G   1,7G   1,8G  50% /usr
 '''/dev/hdb1              5,3G   1,1G   4,0G  21% /var'''
 /dev/dm-2              1,8G   876M   818M  52% /media/dm-2

'''Si vous disposez de plus de 50% d’espace libre vous pouvez passer à l'étape suivante'''.

Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Si cela ne suffit toujours pas, il faut envisager d'ajouter un disque à votre système, ou de procéder à un upgrade par étapes successives (en mettant à jour les paquets progressivement et en nettoyant à chaque étape)

=== Les pilotes de la carte Graphique ===

Afin de ne pas avoir de mauvaise surprise avec le serveur X, modifiez votre xorg.conf afin d'utiliser des pilotes Debian.

Eventuellement utilisez les pilotes &quot;vesa&quot;

Dans votre fichier /etc/X11/xorg.conf

&lt;code&gt;
Section &quot;Device&quot;
    Identifier     &quot;Device0&quot;
    Driver         &quot;vesa&quot;
EndSection
&lt;/code&gt;

Si vous êtes sûr de vous, n'en faites rien, mais prévoyez une réinstallation des pilotes avant le premier redémarrage.

=== Le fichier sources.list ===

Créons un nouveau sources.list que nous placerons dans /etc/apt/sources.list.d
Nous prenons dores et déjà la bonne habitude d'utiliser ce dossier qui est devenu celui par défaut pour mettre les fichiers contenant les dépôts.

 # nano /etc/apt/sources.list.d/sources.list

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free

# stable security
deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

## stable volatile
## Le dépôt volatile à changé, il est désormais sous &quot;squeeze-updates&quot;
deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib

# stable multimedia
deb http://www.debian-multimedia.org squeeze main non-free
#deb-src http://www.debian-multimedia.org squeeze main non-free

# backports
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
&lt;/code&gt;

== Préparation de la mise à niveau ==

Maintenant que nous sommes prêts, nous pouvons lancer l'upgrade :

Mise à jour de la liste des paquets :

 # aptitude update

=== Si vous avez des problèmes de clefs ===

 W: GPG error: http://www.debian-multimedia.org

 # aptitude install debian-backports-keyring
 # aptitude install debian-multimedia-keyring

=== Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]] ===

 E: Dynamic MMap ran out of room

 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaite l'update, il ne doit pas y avoir d'erreurs

 # aptitude update

=== Problèmes de dépendances ===

Vous ne pourrez pas faire le passage de Lenny à Squeeze tant que subsisteront des problèmes de dépendances...

Voici deux exemples de problèmes de dépendances, et la manière de les régler :

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  xfce4-mixer-oss: Est en conflit avec: xfce4-mixer-alsa mais 4.4.2-3 est installé.
  foomatic-db: Est en conflit avec: foomatic-db-hpijs mais 20080211-1 est installé.
  xfce4-mixer-alsa: Est en conflit avec: xfce4-mixer-oss mais 4.4.2-3 doit être installé.

# aptitude install foomatic-db xfce4-mixer-alsa
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Lecture des descriptions de tâches... Fait  
Les NOUVEAUX paquets suivants vont être installés : 
  libopenjpeg2{a} libpoppler5{a} min12xxw{a} pnm2ppa{a} 
Les paquets suivants seront ENLEVÉS : 
  foomatic-db-hpijs{a} 
Les paquets suivants seront mis à jour : 
  fontconfig-config foomatic-db foomatic-db-engine foomatic-filters libfontconfig1 libjpeg62 libxml2 poppler-utils 
8 paquets mis à jour, 4 nouvellement installés, 1 à enlever et 728 non mis à jour.
Il est nécessaire de télécharger 4722ko d'archives. Après dépaquetage, 18,2Mo seront libérés.
Voulez-vous continuer ? [Y/n/?] o
...
État actuel : 728 mises à jour restantes [-8].
&lt;/code&gt;

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  libatlas3gf-base: Est en conflit avec: libblas3gf (&lt; 1.2-5) mais 1.2-2 est installé et a été conservé
                    Est en conflit avec: liblapack3gf (&lt; 3.2.1-4) mais 3.1.1-1 est installé et a été conservé
  rarian-compat: Est en conflit avec: scrollkeeper (&lt; 0.4) mais 0.3.14-16 est installé et a été conservé

# aptitude install libatlas3gf-base scrollkeeper
...
Les actions suivantes permettront de résoudre ces dépendances :

Mettre à jour les paquets suivants :
libblas3gf [1.2-2 (stable, now) -&gt; 1.2-8 (testing)]
liblapack3gf [3.1.1-1 (stable, now) -&gt; 3.2.1-8 (testing)]

Le score est de 70

Accepter cette solution ? [Y/n/q/?] y
...
État actuel : 725 mises à jour restantes [-3].
&lt;/code&gt;

En cas de doute n'hésitez pas à demander un avis [http://forum.debian-fr.org/ sur le forum]

=== stopper le serveur X ===

'''IMPORTANT''' : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

Si vous faites votre mise à niveau avec le serveur X lancé, vous risquez [http://www.debian-fr.org/upgrade-lenny-squeeze-gnome-minimaliste-t30744.html cette mésaventure]

== Lancez la mise à niveau ==

'''Attention''', Debian recommande désormais d'utiliser apt-get à la place de aptitude pour la mise à niveau : http://www.debian.org/releases/squeeze/i386/release-notes/ch-upgrading.en.html#upgradingpackages

Ce tuto ayant été réalisé avant cette préconisation, il n'est pas à jour concernant ce point précis.

=== A propos de Udev et du Noyau ===

Il est TRèS fortement recommandé de mettre à jour le noyau et udev avant de se lancer dans la mise à niveau. En effet, le noyau Lenny est incompatible avec la version de udev qui se trouve dans squeeze.

 # apt-get install linux-image-2.6-686 (ou linux-image-2.6-amd64)
 # apt-get install udev

Vous devez maintenant redémarrer le système pour être sur le noyau Squeeze (2.6.32)
Vous pouvez maintenant lancer la mise à niveau :

=== Mise à niveau ===

'''Rappel''': Plutôt que aptitude, utilisez apt-get pour la mise à niveau.

 # apt-get upgrade
 # apt-get dist-upgrade

&lt;code&gt;
# aptitude safe-upgrade (apt-get upgrade)
...
Les paquets suivants ont été conservés : 
  apt apt-utils aptitude synaptic 
Les NOUVEAUX paquets suivants vont être installés : 
  acpi-fakekey{a} apache2.2-bin{a} aumix{a} aumix-common{a} bluez{a} bluez-alsa{a} bluez-cups{a} bluez-gstreamer{a} 
  browser-plugin-gnash{a} cifs-utils{a} consolekit{a} cpp-4.4{a} cracklib-runtime{a} cups-ppdc{a} dash{a} db4.8-util{a} 
  diffutils{a} dosfstools{a} firmware-linux-free{a} freepats{a} fuse-utils{a} gcc-4.4-base{a} gcj-4.4-base{a} 
  gcj-4.4-jre-lib{a} geoip-database{a} ghostscript-cups{a} gnash{a} gnash-common{a} gnupg-curl{a} grub-pc{a} 
  gstreamer0.10-ffmpeg{a} gstreamer0.10-fluendo-mp3{a} gstreamer0.10-plugins-bad{a} gstreamer0.10-plugins-base{a} gvfs{a} 
  hplip-cups{a} insserv{a} install-info{a} isc-dhcp-client{a} isc-dhcp-common{a} iso-codes{a} keyboard-configuration{a} 
  libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libass4{a} libatasmart4{a} libaudit0{a} libavahi-core7{a} libavcodec52{a} 
  libavformat52{a} libavutil50{a} libbabl-0.0-0{a} libbind9-60{a} libbluetooth3{a} libboost-date-time1.42.0{a} 
  libboost-thread1.42.0{a} libbsd0{a} libburn4{a} libc-bin{a} libc-client2007e{a} libcap-ng0{a} libcdaudio1{a} libcdio10{a} 
  libcdparanoia0{a} libcelt0-0{a} libck-connector0{a} libcolamd2.7.1{a} libcommons-beanutils-java{a} 
  libcommons-collections3-java{a} libcommons-compress-java{a} libcommons-digester-java{a} libcommons-logging-java{a} 
  libcrack2{a} libcupscgi1{a} libcupsdriver1{a} libcupsmime1{a} libcupsppdc1{a} libdatrie1{a} libdb-je-java{a} libdb4.7{a} 
  libdb4.7-java{a} libdb4.7-java-gcj{a} libdb4.8{a} libdc1394-22{a} libdca0{a} libdirac-encoder0{a} libdirectfb-1.2-9{a} 
  libdns66{a} libdrm-intel1{a} libdrm-nouveau1{a} libdrm-radeon1{a} libdvdnav4{a} libdvdread4{a} libeggdbus-1-0{a} libenca0{a} 
  libenchant1c2a{a} libevent-1.4-2{a} libexempi3{a} libexo-common{a} libfaad2{a} libfftw3-3{a} libfile-copy-recursive-perl{a} 
  libflite1{a} libfont-freetype-perl{a} libfuse2{a} libgcj10{a} libgcr0{a} libgdu0{a} libgegl-0.0-0{a} libgeoip1{a} libgif4{a} 
  libgme0{a} libgomp1{a} libgp11-0{a} libgpgme11{a} libgraphicsmagick3{a} libgraphite3{a} libgssapi-krb5-2{a} libgtkglext1{a} 
  libgudev-1.0-0{a} libhpmud0{a} libicu44{a} libicu4j-java{a} libiptcdata0{a} libisc60{a} libisccc60{a} libisccfg60{a} 
  libiso9660-7{a} libisofs6{a} libiw30{a} libjbig2dec0{a} libjpeg-progs{a} libjpeg8{a} libjtidy-java{a} libk5crypto3{a} 
  libkate1{a} libkrb5-3{a} libkrb5support0{a} libltdl7{a} liblucene2-java{a} liblwres60{a} liblzma2{a} libmimic0{a} libmms0{a} 
  libmodplug1{a} libmozjs2d{a} libmpcdec6{a} libmpfr4{a} libmusicbrainz4c2a{a} libmythes-1.2-0{a} libneon27-gnutls{a} 
  libnetaddr-ip-perl{a} libnfnetlink0{a} libnl1{a} libntfs-3g75{a} libntfs10{a} libofa0{a} libonig2{a} libopencore-amrnb0{a} 
  libopencore-amrwb0{a} libopenraw1{a} liborc-0.4-0{a} libossp-uuid16{a} libpam-ck-connector{a} libpam-cracklib{a} 
  libpango-perl{a} libpangomm-1.4-1{a} libparted0debian1{a} libpciaccess0{a} libpolkit-agent-1-0{a} libpolkit-backend-1-0{a} 
  libpolkit-gobject-1-0{a} libpoppler-glib4{a} libpth20{a} libpython2.6{a} libqdbm14{a} libraptor1{a} librasqal2{a} 
  libraw1394-11{a} librdf0{a} libreadline6{a} librtmp0{a} libsane-hpaio{a} libsasl2-modules{a} libservlet2.5-java{a} 
  libsexy2{a} libsgutils2-2{a} libslv2-9{a} libsndfile1{a} libsoundtouch1c2{a} libswscale0{a} libtag1-vanilla{a} libtalloc2{a} 
  libtextcat-data-utf8{a} libtokyocabinet8{a} libudev0{a} libunique-1.0-0{a} libusb-1.0-0{a} libutempter0{a} libuuid-perl{a} 
  libv4l-0{a} libva1{a} libvcdinfo0{a} libvisual-0.4-0{a} libvisual-0.4-plugins{a} libvpx0{a} libwebkit-1.0-2{a} 
  libwebkit-1.0-common{a} libwildmidi1{a} libwnck-common{a} libwnck22{a} libx11-xcb1{a} libx264-104{a} libxcb-atom1{a} 
  libxcb-aux0{a} libxcb-dri2-0{a} libxcb-event1{a} libxfce4menu-0.1-0{a} libxfce4util-bin{a} libxfce4util-common{a} 
  libxfconf-0-2{a} libxklavier16{a} libxml-parser-perl{a} libxres1{a} libzbar0{a} linux-base{a} linux-image-2.6.32-5-amd64{a} 
  lockfile-progs{a} lsb-release{a} mtools{a} ntfsprogs{a} os-prober{a} oss-compat{a} php5-cli{a} php5-suhosin{a} 
  policykit-1{a} policykit-1-gnome{a} postgresql-8.4{a} postgresql-client-8.4{a} postgresql-contrib-8.4{a} 
  postgresql-doc-8.4{a} python-cups{a} python-gconf{a} python-numpy{a} python-pexpect{a} python-reportbug{a} python-webkit{a} 
  python2.6{a} python2.6-minimal{a} ristretto{a} samba-common-bin{a} sane-utils{a} sensible-utils{a} squeeze{a} 
  tango-icon-theme{a} thunar-archive-plugin{a} thunar-volman{a} tsconf{a} ttf-freefont{a} ttf-lyx{a} ttf-sil-gentium{a} 
  ttf-sil-gentium-basic{a} udisks{a} uno-libs3{a} unzip{a} ure{a} x-ttcidfont-conf{a} xdg-user-dirs{a} xfburn{a} 
  xfce-keyboard-shortcuts{a} xfce4-appfinder{a} xfce4-clipman{a} xfce4-datetime-plugin{a} xfce4-dict{a} xfce4-notes{a} 
  xfce4-notifyd{a} xfce4-places-plugin{a} xfce4-power-manager{a} xfce4-power-manager-data{a} xfce4-screenshooter{a} 
  xfce4-settings{a} xfce4-taskmanager{a} xfce4-timer-plugin{a} xfce4-xkb-plugin{a} xfconf{a} xfonts-mathml{a} xinput{a} xli{a} 
  xorg-docs-core{a} xscreensaver{a} xscreensaver-data{a} xserver-common{a} xserver-xorg-video-nouveau{a} xulrunner-1.9.1{a} 
  xz-utils{a} 
Les paquets suivants seront ENLEVÉS : 
  bluez-utils{u} cpp-4.3{u} cupsddk-drivers{u} djvulibre-desktop{u} finger{u} gs-common{u} liba52-0.7.4{u} libamrnb3{u} 
  libamrwb3{u} libaudio2{u} libavahi-compat-libdnssd1{u} libavahi-core5{u} libavc1394-0{u} libavcodec51{u} libbind9-50{u} 
  libbluetooth2{u} libc-client2007b{u} libcap1{u} libcucul0{u} libcupsys2{u} libcurl3{u} libdatrie0{u} libdirac0{u} 
  libdjvulibre21{u} libfaad0{u} libfreebob0{u} libgail-common{u} libgraphviz4{u} libgtkhtml2-0{u} libicu38{u} libiec61883-0{u} 
  libisccc50{u} libisccfg50{u} libiw29{u} libjaxp1.3-java-gcj{u} libltdl3{u} liblwres50{u} libmagick10{u} libmodplug0c2{u} 
  libmozjs1d{u} libmpcdec3{u} libmpfr1ldbl{u} libmysqlclient15off{u} libneon27{u} libntfs-3g31{u} libossp-uuid15{u} 
  libparted1.8-10{u} libpoppler-glib3{u} libpoppler3{u} libqt3-mt{u} libraw1394-8{u} libsensors3{u} libservlet2.4-java{u} 
  libsmbios-bin{u} libsmbios2{u} libssh2-1{u} libsuitesparse-3.1.0{u} libswfdec-0.6-90{u} libtalloc1{u} libvolume-id0{u} 
  libx264-65{u} libxalan2-java{u} libxalan2-java-gcj{u} libxcb-xlib0{u} libxerces2-java{u} libxerces2-java-gcj{u} 
  libxfce4mcs-client3{u} libxfce4mcs-manager3{u} libxtrap6{u} libxxf86misc1{u} mysql-common{u} openoffice.org-writer2latex{u} 
  openssl-blacklist{u} postgresql-8.3{u} postgresql-client-8.3{u} postgresql-contrib-8.3{u} postgresql-doc-8.3{u} 
  python-gtkhtml2{u} python-numeric{u} svgalibg1{u} xfce4-icon-theme{u} xfce4-mcs-manager{u} xfce4-mcs-plugins{u} 
  xfce4-minicmd-plugin{u} xfce4-screenshooter-plugin{u} xserver-xorg-video-cyrix{u} xserver-xorg-video-v4l{u} 
  xserver-xorg-video-vga{u} xulrunner-1.9{u} 
Les paquets suivants seront mis à jour : 
  a2ps acpi acpi-support acpi-support-base acpid adduser alsa-base alsa-utils anacron analog apache2 apache2-doc 
  apache2-mpm-prefork apache2-utils apache2.2-common apmd aspell aspell-fr at avahi-autoipd avahi-daemon base-files 
  base-passwd bash bash-completion bc bind9 bind9-doc bind9-host bind9utils bluetooth bsd-mailx bsdmainutils bsdutils bsh 
  bsh-gcj busybox ca-certificates console-common console-data console-setup console-terminus console-tools coreutils cpio cpp 
  cpufrequtils cron cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk dbus dbus-x11 dc debconf debconf-i18n 
  debian-archive-keyring debian-faq debianutils deborphan defoma desktop-base desktop-file-utils dhcp3-client dhcp3-common 
  dialog dictionaries-common diff disk-manager dmidecode dmsetup dnsutils doc-debian docbook-xml dpkg e2fslibs e2fsprogs ed 
  eject esound-common exim4 exim4-base exim4-config exim4-daemon-light exo-utils fastjar file findutils fontconfig foo2zjs 
  foomatic-db-gutenprint foomatic-filters-ppds foomatic-gui fortune-mod fortunes-min ftp gcc-4.3-base gconf2 gconf2-common gdm 
  gettext-base ghostscript gimp gimp-data gksu gnome-keyring gnupg gparted gpgv grep groff-base grub grub-common gsfonts 
  gtk2-engines-xfce gzip hal hal-info hdparm hibernate hicolor-icon-theme hostname hpijs hplip hplip-data iamerican ibritish 
  iceweasel iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint info initramfs-tools initscripts installation-report iproute 
  iptables iputils-ping ispell java-common kerneloops klibc-utils laptop-detect less libaa1 libacl1 libapache2-mod-perl2 
  libapache2-mod-php5 libapache2-mod-python libapm1 libapr1 libaprutil1 libart-2.0-2 libasound2 libaspell15 libatk1.0-0 
  libattr1 libaudiofile0 libavahi-client3 libavahi-common-data libavahi-common3 libavahi-glib1 libavutil49 libbcel-java 
  libblkid1 libbonobo2-0 libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i386 libcaca0 
  libcairo-perl libcairo2 libcairomm-1.0-1 libcap2 libcomerr2 libconsole libcpufreq0 libcroco3 libcups2 libcupsimage2 
  libcurl3-gnutls libcwidget3 libdaemon0 libdb4.6 libdbus-1-3 libdbus-glib-1-2 libdevel-symdump-perl libdevmapper1.02.1 
  libdigest-hmac-perl libdigest-sha1-perl libdirectfb-extra libdmx1 libdrm2 libedit2 libesd0 libexif12 libexo-0.3-0 libexpat1 
  libfaac0 libfam0 libffi5 libflac8 libfontenc1 libfreetype6 libfs6 libgail18 libgc1c2 libgcc1 libgcj-bc libgcj-common 
  libgconf2-4 libgcrypt11 libgd2-noxpm libgdbm3 libgfortran3 libgimp2.0 libgksu2-0 libgl1-mesa-dri libgl1-mesa-glx libglade2-0 
  libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgmp3c2 libgnome-keyring0 libgnome2-0 libgnome2-canvas-perl 
  libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0 libgnomecanvas2-common libgnomeui-0 libgnomeui-common 
  libgnomevfs2-0 libgnomevfs2-common libgnomevfs2-extra libgnutls26 libgpg-error0 libgphoto2-2 libgphoto2-port0 libgpm2 libgs8 
  libgsf-1-114 libgsf-1-common libgsm1 libgssglue1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0 
  libgtk2.0-common libgtkmm-2.4-1c2a libgtop2-7 libgtop2-common libgutenprint2 libhal-storage1 libhal1 libhsqldb-java 
  libhsqldb-java-gcj libhtml-parser-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libice6 libidl0 libidn11 libieee1284-3 
  libijs-0.35 libilmbase6 libjack0 libjasper1 libjaxp1.3-java libjline-java libkeyutils1 libklibc libkrb53 liblcms1 
  libldap-2.4-2 liblocale-gettext-perl liblockfile1 liblog4j1.2-java liblzo2-2 libmad0 libmagic1 libmng1 libmp3lame0 
  libmx4j-java libncurses5 libncursesw5 libnet-dns-perl libnewt0.52 libnfsidmap2 libnotify1 libnspr4-0d libnss-mdns libnss3-1d 
  libogg0 liboil0.3 libopenexr6 liborbit2 libpam-modules libpam-runtime libpam0g libpango1.0-0 libpango1.0-common libpaper1 
  libpci3 libpcre3 libpcsclite1 libperl5.10 libpixman-1-0 libpng12-0 libpopt0 libpostproc51 libpq5 libpulse0 libreadline5 
  librecode0 libregexp-java librpcsecgss3 librsvg2-2 librsvg2-common libsane libsane-extras libsasl2-2 libschroedinger-1.0-0 
  libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsensors4 libsepol1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 
  libsmbclient libsnmp-base libsnmp15 libsocket6-perl libsoup2.4-1 libsqlite3-0 libss2 libssl0.9.8 libstartup-notification0 
  libstdc++6 libsvga1 libsysfs2 libtag1c2a libtagc0 libtasn1-3 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl 
  libthai-data libthai0 libtheora0 libthunar-vfs-1-2 libtiff4 libts-0.0-0 liburi-perl libusb-0.1-4 libuuid1 libvorbis0a 
  libvorbisenc2 libvte-common libvte9 libwavpack1 libwbclient0 libwmf0.2-7 libwpg-0.1-1 libwrap0 libwww-perl libx11-6 
  libx11-data libx86-1 libxau6 libxaw7 libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xv0 libxcb1 
  libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfce4util4 libxfcegui4-4 libxfixes3 libxfont1 libxft2 libxi6 
  libxine1 libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins libxine1-plugins libxine1-x libxinerama1 
  libxkbfile1 libxmu6 libxmuu1 libxpm4 libxrandr2 libxrender1 libxslt1.1 libxss1 libxt6 libxtst6 libxv1 libxvidcore4 libxvmc1 
  libxxf86dga1 libxxf86vm1 linux-image-2.6-amd64 linux-sound-base locales login logrotate lp-solve lsb-base lsof lvm2 lwresd 
  m4 mailagent makedev man-db manpages manpages-fr manpages-fr-extra mawk mc menu mime-support mktemp mlocate mlock 
  module-init-tools mount mousepad mutt myspell-en-us myspell-fr-gut nano ncurses-base ncurses-bin ncurses-term net-tools 
  netatalk netbase nfs-common nfs-kernel-server ntfs-3g nvclock openbsd-inetd openoffice.org openoffice.org-base 
  openoffice.org-base-core openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw 
  openoffice.org-filter-mobiledev openoffice.org-gcj openoffice.org-gtk openoffice.org-help-en-us openoffice.org-help-fr 
  openoffice.org-impress openoffice.org-java-common openoffice.org-l10n-fr openoffice.org-math openoffice.org-officebean 
  openoffice.org-report-builder-bin openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-thesaurus-en-us 
  openoffice.org-writer openprinting-ppds openssh-client openssh-server openssl orage passwd patch pciutils pcmciautils perl 
  perl-base perl-modules php5-common pm-utils popularity-contest portmap postgresql postgresql-client postgresql-client-common 
  postgresql-common postgresql-contrib postgresql-doc powermgmt-base powertop printconf procmail procps psmisc psutils python 
  python-cairo python-central python-dbus python-foomatic python-glade2 python-gnome2 python-gobject python-gtk2 
  python-imaging python-ipy python-minimal python-pyorbit python-support python2.5 python2.5-minimal qpopper radeontool 
  readline-common reportbug rsyslog sa-exim samba samba-common samba-doc sed sgml-base sgml-data shared-mime-info 
  smartmontools smbclient smbfs spamassassin spamc ssl-cert sudo swat swfdec-mozilla sysv-rc sysvinit sysvinit-utils tar 
  tasksel tasksel-data tcpd texinfo thunar thunar-data thunar-media-tags-plugin time toshset traceroute ttf-dejavu 
  ttf-dejavu-core ttf-dejavu-extra ttf-liberation ttf-opensymbol tzdata ucf udev update-inetd usbutils util-linux uw-imapd 
  vbetool vim-common vim-tiny w3m wamerican wfrench wget whiptail whois winbind wireless-tools wpasupplicant x11-apps 
  x11-common x11-session-utils x11-utils x11-xfs-utils x11-xkb-utils x11-xserver-utils xauth xbitmaps xdg-utils xfce4 
  xfce4-battery-plugin xfce4-clipman-plugin xfce4-cpufreq-plugin xfce4-cpugraph-plugin xfce4-diskperf-plugin 
  xfce4-fsguard-plugin xfce4-genmon-plugin xfce4-goodies xfce4-mailwatch-plugin xfce4-mixer xfce4-mount-plugin 
  xfce4-netload-plugin xfce4-notes-plugin xfce4-panel xfce4-quicklauncher-plugin xfce4-sensors-plugin xfce4-session 
  xfce4-smartbookmark-plugin xfce4-systemload-plugin xfce4-terminal xfce4-utils xfce4-verve-plugin xfce4-wavelan-plugin 
  xfce4-weather-plugin xfdesktop4 xfdesktop4-data xfonts-100dpi xfonts-75dpi xfonts-base xfonts-encodings xfonts-intl-european 
  xfonts-scalable xfonts-utils xfprint4 xfwm4 xinit xkb-data xml-core xorg xsane xsane-common xserver-xorg xserver-xorg-core 
  xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd xserver-xorg-input-mouse xserver-xorg-input-synaptics 
  xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati 
  xserver-xorg-video-chips xserver-xorg-video-cirrus xserver-xorg-video-dummy xserver-xorg-video-fbdev 
  xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-intel xserver-xorg-video-mach64 xserver-xorg-video-mga 
  xserver-xorg-video-neomagic xserver-xorg-video-nv xserver-xorg-video-openchrome xserver-xorg-video-r128 
  xserver-xorg-video-radeon xserver-xorg-video-radeonhd xserver-xorg-video-rendition xserver-xorg-video-s3 
  xserver-xorg-video-s3virge xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis 
  xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident xserver-xorg-video-tseng 
  xserver-xorg-video-vesa xserver-xorg-video-vmware xserver-xorg-video-voodoo xterm zlib1g 
Les paquets suivants sont RECOMMANDÉS mais ne seront pas installés :
  bzip2 gamin gcc gdm-themes hddtemp libapache2-reload-perl libatk1.0-data libatm1 libbsd-resource-perl libc6-dev libfribidi0 
  libglib2.0-data libgtk2.0-bin libhtml-format-perl libio-socket-inet6-perl liblog4j1.2-java-gcj libmail-spf-perl 
  libmailtools-perl libnss-lwres libpam-gnome-keyring libpaper-utils lm-sensors make nmap openoffice.org-emailmerge 
  openoffice.org-filter-binfilter pconf-detect rc re2c uuid-runtime wdiff xfwm4-themes xnest xserver-xephyr zenity 
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] 
&lt;/code&gt;

En fonction de votre connexion ça peut prendre très longtemps, et être interrompu (à 500KB/s une demi-heure à 50 KB/s c'est plusieurs heures...).
Un conseil, si vous n'êtes pas sûr de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

&lt;code&gt;
# aptitude -d safe-upgrade (apt-get -d upgrade)
...
 762Mo téléchargés en 1h9min37s (182ko/s)                                                          
Lecture des listes de paquets... Fait             
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait
&lt;/code&gt;

Puis

&lt;code&gt;
# aptitude safe-upgrade (apt-get upgrade)
...
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 0o/762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] y
&lt;/code&gt;

=== Déroulement ===

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut, mais prenez le temps de lire tous les messages, et si nécessaire, prenez des notes.

Sans le téléchargement des fichiers, comptez un peu plus d'une heure pour la mise à niveau.

[[Fichier:Snapshot4.jpeg]]

[[Fichier:Snapshot5.jpeg]]

[[Fichier:Snapshot6.jpeg]]

[[Fichier:Snapshot7.jpeg]]

[[Fichier:Snapshot9.jpeg]]

[[Fichier:Snapshot11.jpeg]]

[[Fichier:Snapshot13.jpeg]]

[[Fichier:Snapshot14.jpeg]]

[[Fichier:Snapshot15.jpeg]]

[[Fichier:Snapshot16.jpeg]]

[[Fichier:Snapshot17.jpeg]]

Vous partirez d'une Lenny configurée, et donc de nombreux fichiers de configuration auront été modifiés par vos soins.
Il est judicieux de ne pas écraser vos configurations avec les fichiers par défaut proposés par les &quot;mainteneurs&quot; des paquets.
Vous aurez tout le loisir de regarder les modifications proposées, et ce qu'elles apportent, en regardant dans /usr/share/doc ou dans les contenus de vos deb téléchargés (dans /var/apt/archives)

[[Fichier:Snapshot18.jpeg]]

=== finalisation ===

Le safe-upgrade devrait se terminer par ceci :

&lt;code&gt;
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 4 mises à jour restantes [-721].
&lt;/code&gt;

Vous pouvez maintenant lancer un &quot;full-upgrade&quot;

&lt;code&gt;
# aptitude full-upgrade (apt-get dist-uprade)

...

4 paquets mis à jour, 13 nouvellement installés, 2 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 12,1Mo d'archives. Après dépaquetage, 14,3Mo seront utilisés.
Les paquets suivants ont des dépendances non satisfaites :
  libept0: Dépend: libapt-pkg-libc6.7-6-4.6 qui est un paquet virtuel
Les actions suivantes permettront de résoudre ces dépendances :

Supprimer les paquets suivants :
libept0

Le score est de 115

Accepter cette solution ? [Y/n/q/?]y

...

Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 0 mise à jour restante [-4].
&lt;/code&gt;

Si tout s'est bien passé, il ne vous reste plus qu'a redémarrer la machine :

 # shutdown -r now

=== Grub2 ===

Si vous étiez sous Grub-legacy vous aurez certainement fait la bascule vers Grub2.

La première &quot;surprise&quot; qui vous attend donc (sauf si vous avez lu ce guide avant...) c'est le menu suivant :

[[Fichier:Snapshot19.jpeg]]

Si vous appuyez sur entrée, vous serez conduit vers le menu de Grub2.
Cette étape permet de vérifier que Grub2 est bien installé, et de le tester.

[[Fichier:Snapshot20.jpeg]]

Si cela fonctionne, une des premières choses à faire sera de confirmer l'installation de Grub2 en tapant dans une console la commande suivante :

 # upgrade-from-grub-legacy

=== LVM ===

Problème rencontré lors de la mise à niveau avec LVM...
Le système s'est mélangé les pédales dans l'attribution des partitions.
Résultat :

[[Fichier:Snapshot21.jpeg]]

Voici ou se situe le problème :

&lt;code&gt;
$ vdir /dev/l2s/
total 0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 home -&gt; ../dm-5
lrwxrwxrwx 1 root root 7 25 nov.  18:28 root -&gt; ../dm-0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 swap_1 -&gt; ../dm-1
lrwxrwxrwx 1 root root 7 25 nov.  18:28 tmp -&gt; ../dm-4
lrwxrwxrwx 1 root root 7 25 nov.  18:28 usr -&gt; ../dm-2
lrwxrwxrwx 1 root root 7 25 nov.  18:28 var -&gt; ../dm-3
&lt;/code&gt;
&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
# /dev/hda1	/boot	ext2	defaults	0	2
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-1	/usr	ext3	defaults	0	2
# /dev/hdb1	/var	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-3	none	swap	sw	0	0
# /dev/hdc	/media/cdrom0	udf,iso9660	user,noauto	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

Je ne sais pour quelle raison LVM à changé la numérotation des partitions... /usr est passé en dm-1 alors qu'il était en dm-2 et la swap en dm-3 alors qu'elle était être en dm-1
Il suffit de modifier le fichier /etc/fstab pour qu'il reflète à nouveau correctement vos partitions, et le tour est joué :

&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-2	/usr	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-1	none	swap	sw	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

== Bienvenu sur Squeeze ==

 laurent@lenny2squeeze:~$ uname -a
 Linux lenny2squeeze 2.6.32-5-amd64 #1 SMP Sat Oct 30 14:18:21 UTC 2010 x86_64 GNU/Linux

[[Fichier:Snapshot25.jpeg]]

A venir... Upgrade de Squeeze à ????

----
[[Utilisateur:Lol|Lol]] 25 novembre 2010 à 15:55 (EAT)
[[Catégorie:Installation]]</text>
      <sha1>7gm6a78gxs3pwf3nir6ygti4q0to87z</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2757</id>
      <parentid>2752</parentid>
      <timestamp>2011-03-26T13:39:02Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* LVM */</comment>
      <text xml:space="preserve" bytes="33343">La mise à niveau de Lenny à Squeeze se précise, nous allons faire ici un rapide résumé des opérations nécessaires à la réussite de cette mise à niveau (upgrade).
LVM est installé sur la machine que nous allons mettre à niveau afin de tester le plus de possibilités.

Avant toute chose, je souhaite faire quelques précisions :
Chaque configuration est propre à chacun, en fonction de ses goûts, de son matériel et de ses connaissances.
Un guide universel n'existe donc pas.

Prévoyez aussi d'avoir du temps devant vous, et d'être au calme.

Nous choisirons d'utiliser aptitude au lieu de apt-get, il est en effet plus exigeant concernant les dépendances, votre mise à niveau sera plus &quot;propre&quot;.

'''Remarque''': Le choix ci-dessus n'est plus tout à fait vrai... En effet, Debian préconise maintenant apt-get pour la mise à niveau de Lenny à Squeeze.

http://www.debian.org/releases/squeeze/i386/release-notes/ch-upgrading.en.html#upgradingpackages
La méthode recommandée pour mettre à niveau Debian GNU/Linux est d'utiliser l'outil de gestion des paquets apt-get.
Dans les versions précédentes, aptitude était recommandé, mais les versions récentes de apt-get fournissent des fonctionnalités équivalentes et ont également montré plus de cohérence dans la mise à niveau.

Aptitude reste tout a fait valable pour la mise à jour de Lenny ou de Squeeze.

J'ai choisi une Lenny avec toutes les options de tasksel activées afin de faire un tour d'horizon le plus vaste possible des problèmes qui pourraient survenir.
L'environnement graphique est Xfce.

[[Fichier:Snapshot3.jpeg]]

== Pré-requis ==

=== Une bonne sauvegarde ===

Vous n'avez AUCUNE garantie que la mise à niveau se passe bien, alors, quelle que soit la méthode que vous emploierez, une sauvegarde est le minimum que vous puissiez faire avant de vous lancer dans l'aventure..

Avec dd, dump ou simplement cp SAUVEGARDEZ !

=== Un système à jour! ===

Le fichier sources.list précédent la mise à niveau :

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org stable main non-free
#deb-src http://www.debian-multimedia.org stable main non-free

# backports
deb http://backports.debian.org/debian-backports lenny-backports main contrib non-free
&lt;/code&gt;

 # aptitude update
 # aptitude safe-upgrade
 # aptitude full-upgrade

=== De l'espace! ===

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition où se trouve /var pour le stockage des paquets téléchargés.

Pour info une mise à jour &quot;lourde&quot; se soldera par le téléchargement d'environ 1Go...

Pour connaitre l’espace libre de votre partition racine :

 $ df -H
 Sys. de fich.          Tail.  Occ.  Disp. %Occ. Monté sur
 '''/dev/dm-0              338M   123M   198M  39% /'''
 tmpfs                  262M      0   262M   0% /lib/init/rw
 udev                    11M   689k   9,8M   7% /dev
 tmpfs                  262M      0   262M   0% /dev/shm
 /dev/hda1              239M    20M   207M   9% /boot
 /dev/dm-5              3,7G    75M   3,4G   3% /home
 /dev/dm-4              317M    11M   290M   4% /tmp
 /dev/dm-1              3,7G   1,7G   1,8G  50% /usr
 '''/dev/hdb1              5,3G   1,1G   4,0G  21% /var'''
 /dev/dm-2              1,8G   876M   818M  52% /media/dm-2

'''Si vous disposez de plus de 50% d’espace libre vous pouvez passer à l'étape suivante'''.

Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Si cela ne suffit toujours pas, il faut envisager d'ajouter un disque à votre système, ou de procéder à un upgrade par étapes successives (en mettant à jour les paquets progressivement et en nettoyant à chaque étape)

=== Les pilotes de la carte Graphique ===

Afin de ne pas avoir de mauvaise surprise avec le serveur X, modifiez votre xorg.conf afin d'utiliser des pilotes Debian.

Eventuellement utilisez les pilotes &quot;vesa&quot;

Dans votre fichier /etc/X11/xorg.conf

&lt;code&gt;
Section &quot;Device&quot;
    Identifier     &quot;Device0&quot;
    Driver         &quot;vesa&quot;
EndSection
&lt;/code&gt;

Si vous êtes sûr de vous, n'en faites rien, mais prévoyez une réinstallation des pilotes avant le premier redémarrage.

=== Le fichier sources.list ===

Créons un nouveau sources.list que nous placerons dans /etc/apt/sources.list.d
Nous prenons dores et déjà la bonne habitude d'utiliser ce dossier qui est devenu celui par défaut pour mettre les fichiers contenant les dépôts.

 # nano /etc/apt/sources.list.d/sources.list

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free

# stable security
deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

## stable volatile
## Le dépôt volatile à changé, il est désormais sous &quot;squeeze-updates&quot;
deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib

# stable multimedia
deb http://www.debian-multimedia.org squeeze main non-free
#deb-src http://www.debian-multimedia.org squeeze main non-free

# backports
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
&lt;/code&gt;

== Préparation de la mise à niveau ==

Maintenant que nous sommes prêts, nous pouvons lancer l'upgrade :

Mise à jour de la liste des paquets :

 # aptitude update

=== Si vous avez des problèmes de clefs ===

 W: GPG error: http://www.debian-multimedia.org

 # aptitude install debian-backports-keyring
 # aptitude install debian-multimedia-keyring

=== Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]] ===

 E: Dynamic MMap ran out of room

 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaite l'update, il ne doit pas y avoir d'erreurs

 # aptitude update

=== Problèmes de dépendances ===

Vous ne pourrez pas faire le passage de Lenny à Squeeze tant que subsisteront des problèmes de dépendances...

Voici deux exemples de problèmes de dépendances, et la manière de les régler :

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  xfce4-mixer-oss: Est en conflit avec: xfce4-mixer-alsa mais 4.4.2-3 est installé.
  foomatic-db: Est en conflit avec: foomatic-db-hpijs mais 20080211-1 est installé.
  xfce4-mixer-alsa: Est en conflit avec: xfce4-mixer-oss mais 4.4.2-3 doit être installé.

# aptitude install foomatic-db xfce4-mixer-alsa
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Lecture des descriptions de tâches... Fait  
Les NOUVEAUX paquets suivants vont être installés : 
  libopenjpeg2{a} libpoppler5{a} min12xxw{a} pnm2ppa{a} 
Les paquets suivants seront ENLEVÉS : 
  foomatic-db-hpijs{a} 
Les paquets suivants seront mis à jour : 
  fontconfig-config foomatic-db foomatic-db-engine foomatic-filters libfontconfig1 libjpeg62 libxml2 poppler-utils 
8 paquets mis à jour, 4 nouvellement installés, 1 à enlever et 728 non mis à jour.
Il est nécessaire de télécharger 4722ko d'archives. Après dépaquetage, 18,2Mo seront libérés.
Voulez-vous continuer ? [Y/n/?] o
...
État actuel : 728 mises à jour restantes [-8].
&lt;/code&gt;

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  libatlas3gf-base: Est en conflit avec: libblas3gf (&lt; 1.2-5) mais 1.2-2 est installé et a été conservé
                    Est en conflit avec: liblapack3gf (&lt; 3.2.1-4) mais 3.1.1-1 est installé et a été conservé
  rarian-compat: Est en conflit avec: scrollkeeper (&lt; 0.4) mais 0.3.14-16 est installé et a été conservé

# aptitude install libatlas3gf-base scrollkeeper
...
Les actions suivantes permettront de résoudre ces dépendances :

Mettre à jour les paquets suivants :
libblas3gf [1.2-2 (stable, now) -&gt; 1.2-8 (testing)]
liblapack3gf [3.1.1-1 (stable, now) -&gt; 3.2.1-8 (testing)]

Le score est de 70

Accepter cette solution ? [Y/n/q/?] y
...
État actuel : 725 mises à jour restantes [-3].
&lt;/code&gt;

En cas de doute n'hésitez pas à demander un avis [http://forum.debian-fr.org/ sur le forum]

=== stopper le serveur X ===

'''IMPORTANT''' : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

Si vous faites votre mise à niveau avec le serveur X lancé, vous risquez [http://www.debian-fr.org/upgrade-lenny-squeeze-gnome-minimaliste-t30744.html cette mésaventure]

== Lancez la mise à niveau ==

'''Attention''', Debian recommande désormais d'utiliser apt-get à la place de aptitude pour la mise à niveau : http://www.debian.org/releases/squeeze/i386/release-notes/ch-upgrading.en.html#upgradingpackages

Ce tuto ayant été réalisé avant cette préconisation, il n'est pas à jour concernant ce point précis.

=== A propos de Udev et du Noyau ===

Il est TRèS fortement recommandé de mettre à jour le noyau et udev avant de se lancer dans la mise à niveau. En effet, le noyau Lenny est incompatible avec la version de udev qui se trouve dans squeeze.

 # apt-get install linux-image-2.6-686 (ou linux-image-2.6-amd64)
 # apt-get install udev

Vous devez maintenant redémarrer le système pour être sur le noyau Squeeze (2.6.32)
Vous pouvez maintenant lancer la mise à niveau :

=== Mise à niveau ===

'''Rappel''': Plutôt que aptitude, utilisez apt-get pour la mise à niveau.

 # apt-get upgrade
 # apt-get dist-upgrade

&lt;code&gt;
# aptitude safe-upgrade (apt-get upgrade)
...
Les paquets suivants ont été conservés : 
  apt apt-utils aptitude synaptic 
Les NOUVEAUX paquets suivants vont être installés : 
  acpi-fakekey{a} apache2.2-bin{a} aumix{a} aumix-common{a} bluez{a} bluez-alsa{a} bluez-cups{a} bluez-gstreamer{a} 
  browser-plugin-gnash{a} cifs-utils{a} consolekit{a} cpp-4.4{a} cracklib-runtime{a} cups-ppdc{a} dash{a} db4.8-util{a} 
  diffutils{a} dosfstools{a} firmware-linux-free{a} freepats{a} fuse-utils{a} gcc-4.4-base{a} gcj-4.4-base{a} 
  gcj-4.4-jre-lib{a} geoip-database{a} ghostscript-cups{a} gnash{a} gnash-common{a} gnupg-curl{a} grub-pc{a} 
  gstreamer0.10-ffmpeg{a} gstreamer0.10-fluendo-mp3{a} gstreamer0.10-plugins-bad{a} gstreamer0.10-plugins-base{a} gvfs{a} 
  hplip-cups{a} insserv{a} install-info{a} isc-dhcp-client{a} isc-dhcp-common{a} iso-codes{a} keyboard-configuration{a} 
  libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libass4{a} libatasmart4{a} libaudit0{a} libavahi-core7{a} libavcodec52{a} 
  libavformat52{a} libavutil50{a} libbabl-0.0-0{a} libbind9-60{a} libbluetooth3{a} libboost-date-time1.42.0{a} 
  libboost-thread1.42.0{a} libbsd0{a} libburn4{a} libc-bin{a} libc-client2007e{a} libcap-ng0{a} libcdaudio1{a} libcdio10{a} 
  libcdparanoia0{a} libcelt0-0{a} libck-connector0{a} libcolamd2.7.1{a} libcommons-beanutils-java{a} 
  libcommons-collections3-java{a} libcommons-compress-java{a} libcommons-digester-java{a} libcommons-logging-java{a} 
  libcrack2{a} libcupscgi1{a} libcupsdriver1{a} libcupsmime1{a} libcupsppdc1{a} libdatrie1{a} libdb-je-java{a} libdb4.7{a} 
  libdb4.7-java{a} libdb4.7-java-gcj{a} libdb4.8{a} libdc1394-22{a} libdca0{a} libdirac-encoder0{a} libdirectfb-1.2-9{a} 
  libdns66{a} libdrm-intel1{a} libdrm-nouveau1{a} libdrm-radeon1{a} libdvdnav4{a} libdvdread4{a} libeggdbus-1-0{a} libenca0{a} 
  libenchant1c2a{a} libevent-1.4-2{a} libexempi3{a} libexo-common{a} libfaad2{a} libfftw3-3{a} libfile-copy-recursive-perl{a} 
  libflite1{a} libfont-freetype-perl{a} libfuse2{a} libgcj10{a} libgcr0{a} libgdu0{a} libgegl-0.0-0{a} libgeoip1{a} libgif4{a} 
  libgme0{a} libgomp1{a} libgp11-0{a} libgpgme11{a} libgraphicsmagick3{a} libgraphite3{a} libgssapi-krb5-2{a} libgtkglext1{a} 
  libgudev-1.0-0{a} libhpmud0{a} libicu44{a} libicu4j-java{a} libiptcdata0{a} libisc60{a} libisccc60{a} libisccfg60{a} 
  libiso9660-7{a} libisofs6{a} libiw30{a} libjbig2dec0{a} libjpeg-progs{a} libjpeg8{a} libjtidy-java{a} libk5crypto3{a} 
  libkate1{a} libkrb5-3{a} libkrb5support0{a} libltdl7{a} liblucene2-java{a} liblwres60{a} liblzma2{a} libmimic0{a} libmms0{a} 
  libmodplug1{a} libmozjs2d{a} libmpcdec6{a} libmpfr4{a} libmusicbrainz4c2a{a} libmythes-1.2-0{a} libneon27-gnutls{a} 
  libnetaddr-ip-perl{a} libnfnetlink0{a} libnl1{a} libntfs-3g75{a} libntfs10{a} libofa0{a} libonig2{a} libopencore-amrnb0{a} 
  libopencore-amrwb0{a} libopenraw1{a} liborc-0.4-0{a} libossp-uuid16{a} libpam-ck-connector{a} libpam-cracklib{a} 
  libpango-perl{a} libpangomm-1.4-1{a} libparted0debian1{a} libpciaccess0{a} libpolkit-agent-1-0{a} libpolkit-backend-1-0{a} 
  libpolkit-gobject-1-0{a} libpoppler-glib4{a} libpth20{a} libpython2.6{a} libqdbm14{a} libraptor1{a} librasqal2{a} 
  libraw1394-11{a} librdf0{a} libreadline6{a} librtmp0{a} libsane-hpaio{a} libsasl2-modules{a} libservlet2.5-java{a} 
  libsexy2{a} libsgutils2-2{a} libslv2-9{a} libsndfile1{a} libsoundtouch1c2{a} libswscale0{a} libtag1-vanilla{a} libtalloc2{a} 
  libtextcat-data-utf8{a} libtokyocabinet8{a} libudev0{a} libunique-1.0-0{a} libusb-1.0-0{a} libutempter0{a} libuuid-perl{a} 
  libv4l-0{a} libva1{a} libvcdinfo0{a} libvisual-0.4-0{a} libvisual-0.4-plugins{a} libvpx0{a} libwebkit-1.0-2{a} 
  libwebkit-1.0-common{a} libwildmidi1{a} libwnck-common{a} libwnck22{a} libx11-xcb1{a} libx264-104{a} libxcb-atom1{a} 
  libxcb-aux0{a} libxcb-dri2-0{a} libxcb-event1{a} libxfce4menu-0.1-0{a} libxfce4util-bin{a} libxfce4util-common{a} 
  libxfconf-0-2{a} libxklavier16{a} libxml-parser-perl{a} libxres1{a} libzbar0{a} linux-base{a} linux-image-2.6.32-5-amd64{a} 
  lockfile-progs{a} lsb-release{a} mtools{a} ntfsprogs{a} os-prober{a} oss-compat{a} php5-cli{a} php5-suhosin{a} 
  policykit-1{a} policykit-1-gnome{a} postgresql-8.4{a} postgresql-client-8.4{a} postgresql-contrib-8.4{a} 
  postgresql-doc-8.4{a} python-cups{a} python-gconf{a} python-numpy{a} python-pexpect{a} python-reportbug{a} python-webkit{a} 
  python2.6{a} python2.6-minimal{a} ristretto{a} samba-common-bin{a} sane-utils{a} sensible-utils{a} squeeze{a} 
  tango-icon-theme{a} thunar-archive-plugin{a} thunar-volman{a} tsconf{a} ttf-freefont{a} ttf-lyx{a} ttf-sil-gentium{a} 
  ttf-sil-gentium-basic{a} udisks{a} uno-libs3{a} unzip{a} ure{a} x-ttcidfont-conf{a} xdg-user-dirs{a} xfburn{a} 
  xfce-keyboard-shortcuts{a} xfce4-appfinder{a} xfce4-clipman{a} xfce4-datetime-plugin{a} xfce4-dict{a} xfce4-notes{a} 
  xfce4-notifyd{a} xfce4-places-plugin{a} xfce4-power-manager{a} xfce4-power-manager-data{a} xfce4-screenshooter{a} 
  xfce4-settings{a} xfce4-taskmanager{a} xfce4-timer-plugin{a} xfce4-xkb-plugin{a} xfconf{a} xfonts-mathml{a} xinput{a} xli{a} 
  xorg-docs-core{a} xscreensaver{a} xscreensaver-data{a} xserver-common{a} xserver-xorg-video-nouveau{a} xulrunner-1.9.1{a} 
  xz-utils{a} 
Les paquets suivants seront ENLEVÉS : 
  bluez-utils{u} cpp-4.3{u} cupsddk-drivers{u} djvulibre-desktop{u} finger{u} gs-common{u} liba52-0.7.4{u} libamrnb3{u} 
  libamrwb3{u} libaudio2{u} libavahi-compat-libdnssd1{u} libavahi-core5{u} libavc1394-0{u} libavcodec51{u} libbind9-50{u} 
  libbluetooth2{u} libc-client2007b{u} libcap1{u} libcucul0{u} libcupsys2{u} libcurl3{u} libdatrie0{u} libdirac0{u} 
  libdjvulibre21{u} libfaad0{u} libfreebob0{u} libgail-common{u} libgraphviz4{u} libgtkhtml2-0{u} libicu38{u} libiec61883-0{u} 
  libisccc50{u} libisccfg50{u} libiw29{u} libjaxp1.3-java-gcj{u} libltdl3{u} liblwres50{u} libmagick10{u} libmodplug0c2{u} 
  libmozjs1d{u} libmpcdec3{u} libmpfr1ldbl{u} libmysqlclient15off{u} libneon27{u} libntfs-3g31{u} libossp-uuid15{u} 
  libparted1.8-10{u} libpoppler-glib3{u} libpoppler3{u} libqt3-mt{u} libraw1394-8{u} libsensors3{u} libservlet2.4-java{u} 
  libsmbios-bin{u} libsmbios2{u} libssh2-1{u} libsuitesparse-3.1.0{u} libswfdec-0.6-90{u} libtalloc1{u} libvolume-id0{u} 
  libx264-65{u} libxalan2-java{u} libxalan2-java-gcj{u} libxcb-xlib0{u} libxerces2-java{u} libxerces2-java-gcj{u} 
  libxfce4mcs-client3{u} libxfce4mcs-manager3{u} libxtrap6{u} libxxf86misc1{u} mysql-common{u} openoffice.org-writer2latex{u} 
  openssl-blacklist{u} postgresql-8.3{u} postgresql-client-8.3{u} postgresql-contrib-8.3{u} postgresql-doc-8.3{u} 
  python-gtkhtml2{u} python-numeric{u} svgalibg1{u} xfce4-icon-theme{u} xfce4-mcs-manager{u} xfce4-mcs-plugins{u} 
  xfce4-minicmd-plugin{u} xfce4-screenshooter-plugin{u} xserver-xorg-video-cyrix{u} xserver-xorg-video-v4l{u} 
  xserver-xorg-video-vga{u} xulrunner-1.9{u} 
Les paquets suivants seront mis à jour : 
  a2ps acpi acpi-support acpi-support-base acpid adduser alsa-base alsa-utils anacron analog apache2 apache2-doc 
  apache2-mpm-prefork apache2-utils apache2.2-common apmd aspell aspell-fr at avahi-autoipd avahi-daemon base-files 
  base-passwd bash bash-completion bc bind9 bind9-doc bind9-host bind9utils bluetooth bsd-mailx bsdmainutils bsdutils bsh 
  bsh-gcj busybox ca-certificates console-common console-data console-setup console-terminus console-tools coreutils cpio cpp 
  cpufrequtils cron cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk dbus dbus-x11 dc debconf debconf-i18n 
  debian-archive-keyring debian-faq debianutils deborphan defoma desktop-base desktop-file-utils dhcp3-client dhcp3-common 
  dialog dictionaries-common diff disk-manager dmidecode dmsetup dnsutils doc-debian docbook-xml dpkg e2fslibs e2fsprogs ed 
  eject esound-common exim4 exim4-base exim4-config exim4-daemon-light exo-utils fastjar file findutils fontconfig foo2zjs 
  foomatic-db-gutenprint foomatic-filters-ppds foomatic-gui fortune-mod fortunes-min ftp gcc-4.3-base gconf2 gconf2-common gdm 
  gettext-base ghostscript gimp gimp-data gksu gnome-keyring gnupg gparted gpgv grep groff-base grub grub-common gsfonts 
  gtk2-engines-xfce gzip hal hal-info hdparm hibernate hicolor-icon-theme hostname hpijs hplip hplip-data iamerican ibritish 
  iceweasel iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint info initramfs-tools initscripts installation-report iproute 
  iptables iputils-ping ispell java-common kerneloops klibc-utils laptop-detect less libaa1 libacl1 libapache2-mod-perl2 
  libapache2-mod-php5 libapache2-mod-python libapm1 libapr1 libaprutil1 libart-2.0-2 libasound2 libaspell15 libatk1.0-0 
  libattr1 libaudiofile0 libavahi-client3 libavahi-common-data libavahi-common3 libavahi-glib1 libavutil49 libbcel-java 
  libblkid1 libbonobo2-0 libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i386 libcaca0 
  libcairo-perl libcairo2 libcairomm-1.0-1 libcap2 libcomerr2 libconsole libcpufreq0 libcroco3 libcups2 libcupsimage2 
  libcurl3-gnutls libcwidget3 libdaemon0 libdb4.6 libdbus-1-3 libdbus-glib-1-2 libdevel-symdump-perl libdevmapper1.02.1 
  libdigest-hmac-perl libdigest-sha1-perl libdirectfb-extra libdmx1 libdrm2 libedit2 libesd0 libexif12 libexo-0.3-0 libexpat1 
  libfaac0 libfam0 libffi5 libflac8 libfontenc1 libfreetype6 libfs6 libgail18 libgc1c2 libgcc1 libgcj-bc libgcj-common 
  libgconf2-4 libgcrypt11 libgd2-noxpm libgdbm3 libgfortran3 libgimp2.0 libgksu2-0 libgl1-mesa-dri libgl1-mesa-glx libglade2-0 
  libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgmp3c2 libgnome-keyring0 libgnome2-0 libgnome2-canvas-perl 
  libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0 libgnomecanvas2-common libgnomeui-0 libgnomeui-common 
  libgnomevfs2-0 libgnomevfs2-common libgnomevfs2-extra libgnutls26 libgpg-error0 libgphoto2-2 libgphoto2-port0 libgpm2 libgs8 
  libgsf-1-114 libgsf-1-common libgsm1 libgssglue1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0 
  libgtk2.0-common libgtkmm-2.4-1c2a libgtop2-7 libgtop2-common libgutenprint2 libhal-storage1 libhal1 libhsqldb-java 
  libhsqldb-java-gcj libhtml-parser-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libice6 libidl0 libidn11 libieee1284-3 
  libijs-0.35 libilmbase6 libjack0 libjasper1 libjaxp1.3-java libjline-java libkeyutils1 libklibc libkrb53 liblcms1 
  libldap-2.4-2 liblocale-gettext-perl liblockfile1 liblog4j1.2-java liblzo2-2 libmad0 libmagic1 libmng1 libmp3lame0 
  libmx4j-java libncurses5 libncursesw5 libnet-dns-perl libnewt0.52 libnfsidmap2 libnotify1 libnspr4-0d libnss-mdns libnss3-1d 
  libogg0 liboil0.3 libopenexr6 liborbit2 libpam-modules libpam-runtime libpam0g libpango1.0-0 libpango1.0-common libpaper1 
  libpci3 libpcre3 libpcsclite1 libperl5.10 libpixman-1-0 libpng12-0 libpopt0 libpostproc51 libpq5 libpulse0 libreadline5 
  librecode0 libregexp-java librpcsecgss3 librsvg2-2 librsvg2-common libsane libsane-extras libsasl2-2 libschroedinger-1.0-0 
  libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsensors4 libsepol1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 
  libsmbclient libsnmp-base libsnmp15 libsocket6-perl libsoup2.4-1 libsqlite3-0 libss2 libssl0.9.8 libstartup-notification0 
  libstdc++6 libsvga1 libsysfs2 libtag1c2a libtagc0 libtasn1-3 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl 
  libthai-data libthai0 libtheora0 libthunar-vfs-1-2 libtiff4 libts-0.0-0 liburi-perl libusb-0.1-4 libuuid1 libvorbis0a 
  libvorbisenc2 libvte-common libvte9 libwavpack1 libwbclient0 libwmf0.2-7 libwpg-0.1-1 libwrap0 libwww-perl libx11-6 
  libx11-data libx86-1 libxau6 libxaw7 libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xv0 libxcb1 
  libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfce4util4 libxfcegui4-4 libxfixes3 libxfont1 libxft2 libxi6 
  libxine1 libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins libxine1-plugins libxine1-x libxinerama1 
  libxkbfile1 libxmu6 libxmuu1 libxpm4 libxrandr2 libxrender1 libxslt1.1 libxss1 libxt6 libxtst6 libxv1 libxvidcore4 libxvmc1 
  libxxf86dga1 libxxf86vm1 linux-image-2.6-amd64 linux-sound-base locales login logrotate lp-solve lsb-base lsof lvm2 lwresd 
  m4 mailagent makedev man-db manpages manpages-fr manpages-fr-extra mawk mc menu mime-support mktemp mlocate mlock 
  module-init-tools mount mousepad mutt myspell-en-us myspell-fr-gut nano ncurses-base ncurses-bin ncurses-term net-tools 
  netatalk netbase nfs-common nfs-kernel-server ntfs-3g nvclock openbsd-inetd openoffice.org openoffice.org-base 
  openoffice.org-base-core openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw 
  openoffice.org-filter-mobiledev openoffice.org-gcj openoffice.org-gtk openoffice.org-help-en-us openoffice.org-help-fr 
  openoffice.org-impress openoffice.org-java-common openoffice.org-l10n-fr openoffice.org-math openoffice.org-officebean 
  openoffice.org-report-builder-bin openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-thesaurus-en-us 
  openoffice.org-writer openprinting-ppds openssh-client openssh-server openssl orage passwd patch pciutils pcmciautils perl 
  perl-base perl-modules php5-common pm-utils popularity-contest portmap postgresql postgresql-client postgresql-client-common 
  postgresql-common postgresql-contrib postgresql-doc powermgmt-base powertop printconf procmail procps psmisc psutils python 
  python-cairo python-central python-dbus python-foomatic python-glade2 python-gnome2 python-gobject python-gtk2 
  python-imaging python-ipy python-minimal python-pyorbit python-support python2.5 python2.5-minimal qpopper radeontool 
  readline-common reportbug rsyslog sa-exim samba samba-common samba-doc sed sgml-base sgml-data shared-mime-info 
  smartmontools smbclient smbfs spamassassin spamc ssl-cert sudo swat swfdec-mozilla sysv-rc sysvinit sysvinit-utils tar 
  tasksel tasksel-data tcpd texinfo thunar thunar-data thunar-media-tags-plugin time toshset traceroute ttf-dejavu 
  ttf-dejavu-core ttf-dejavu-extra ttf-liberation ttf-opensymbol tzdata ucf udev update-inetd usbutils util-linux uw-imapd 
  vbetool vim-common vim-tiny w3m wamerican wfrench wget whiptail whois winbind wireless-tools wpasupplicant x11-apps 
  x11-common x11-session-utils x11-utils x11-xfs-utils x11-xkb-utils x11-xserver-utils xauth xbitmaps xdg-utils xfce4 
  xfce4-battery-plugin xfce4-clipman-plugin xfce4-cpufreq-plugin xfce4-cpugraph-plugin xfce4-diskperf-plugin 
  xfce4-fsguard-plugin xfce4-genmon-plugin xfce4-goodies xfce4-mailwatch-plugin xfce4-mixer xfce4-mount-plugin 
  xfce4-netload-plugin xfce4-notes-plugin xfce4-panel xfce4-quicklauncher-plugin xfce4-sensors-plugin xfce4-session 
  xfce4-smartbookmark-plugin xfce4-systemload-plugin xfce4-terminal xfce4-utils xfce4-verve-plugin xfce4-wavelan-plugin 
  xfce4-weather-plugin xfdesktop4 xfdesktop4-data xfonts-100dpi xfonts-75dpi xfonts-base xfonts-encodings xfonts-intl-european 
  xfonts-scalable xfonts-utils xfprint4 xfwm4 xinit xkb-data xml-core xorg xsane xsane-common xserver-xorg xserver-xorg-core 
  xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd xserver-xorg-input-mouse xserver-xorg-input-synaptics 
  xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati 
  xserver-xorg-video-chips xserver-xorg-video-cirrus xserver-xorg-video-dummy xserver-xorg-video-fbdev 
  xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-intel xserver-xorg-video-mach64 xserver-xorg-video-mga 
  xserver-xorg-video-neomagic xserver-xorg-video-nv xserver-xorg-video-openchrome xserver-xorg-video-r128 
  xserver-xorg-video-radeon xserver-xorg-video-radeonhd xserver-xorg-video-rendition xserver-xorg-video-s3 
  xserver-xorg-video-s3virge xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis 
  xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident xserver-xorg-video-tseng 
  xserver-xorg-video-vesa xserver-xorg-video-vmware xserver-xorg-video-voodoo xterm zlib1g 
Les paquets suivants sont RECOMMANDÉS mais ne seront pas installés :
  bzip2 gamin gcc gdm-themes hddtemp libapache2-reload-perl libatk1.0-data libatm1 libbsd-resource-perl libc6-dev libfribidi0 
  libglib2.0-data libgtk2.0-bin libhtml-format-perl libio-socket-inet6-perl liblog4j1.2-java-gcj libmail-spf-perl 
  libmailtools-perl libnss-lwres libpam-gnome-keyring libpaper-utils lm-sensors make nmap openoffice.org-emailmerge 
  openoffice.org-filter-binfilter pconf-detect rc re2c uuid-runtime wdiff xfwm4-themes xnest xserver-xephyr zenity 
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] 
&lt;/code&gt;

En fonction de votre connexion ça peut prendre très longtemps, et être interrompu (à 500KB/s une demi-heure à 50 KB/s c'est plusieurs heures...).
Un conseil, si vous n'êtes pas sûr de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

&lt;code&gt;
# aptitude -d safe-upgrade (apt-get -d upgrade)
...
 762Mo téléchargés en 1h9min37s (182ko/s)                                                          
Lecture des listes de paquets... Fait             
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait
&lt;/code&gt;

Puis

&lt;code&gt;
# aptitude safe-upgrade (apt-get upgrade)
...
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 0o/762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] y
&lt;/code&gt;

=== Déroulement ===

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut, mais prenez le temps de lire tous les messages, et si nécessaire, prenez des notes.

Sans le téléchargement des fichiers, comptez un peu plus d'une heure pour la mise à niveau.

[[Fichier:Snapshot4.jpeg]]

[[Fichier:Snapshot5.jpeg]]

[[Fichier:Snapshot6.jpeg]]

[[Fichier:Snapshot7.jpeg]]

[[Fichier:Snapshot9.jpeg]]

[[Fichier:Snapshot11.jpeg]]

[[Fichier:Snapshot13.jpeg]]

[[Fichier:Snapshot14.jpeg]]

[[Fichier:Snapshot15.jpeg]]

[[Fichier:Snapshot16.jpeg]]

[[Fichier:Snapshot17.jpeg]]

Vous partirez d'une Lenny configurée, et donc de nombreux fichiers de configuration auront été modifiés par vos soins.
Il est judicieux de ne pas écraser vos configurations avec les fichiers par défaut proposés par les &quot;mainteneurs&quot; des paquets.
Vous aurez tout le loisir de regarder les modifications proposées, et ce qu'elles apportent, en regardant dans /usr/share/doc ou dans les contenus de vos deb téléchargés (dans /var/apt/archives)

[[Fichier:Snapshot18.jpeg]]

=== finalisation ===

Le safe-upgrade devrait se terminer par ceci :

&lt;code&gt;
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 4 mises à jour restantes [-721].
&lt;/code&gt;

Vous pouvez maintenant lancer un &quot;full-upgrade&quot;

&lt;code&gt;
# aptitude full-upgrade (apt-get dist-uprade)

...

4 paquets mis à jour, 13 nouvellement installés, 2 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 12,1Mo d'archives. Après dépaquetage, 14,3Mo seront utilisés.
Les paquets suivants ont des dépendances non satisfaites :
  libept0: Dépend: libapt-pkg-libc6.7-6-4.6 qui est un paquet virtuel
Les actions suivantes permettront de résoudre ces dépendances :

Supprimer les paquets suivants :
libept0

Le score est de 115

Accepter cette solution ? [Y/n/q/?]y

...

Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 0 mise à jour restante [-4].
&lt;/code&gt;

Si tout s'est bien passé, il ne vous reste plus qu'a redémarrer la machine :

 # shutdown -r now

=== Grub2 ===

Si vous étiez sous Grub-legacy vous aurez certainement fait la bascule vers Grub2.

La première &quot;surprise&quot; qui vous attend donc (sauf si vous avez lu ce guide avant...) c'est le menu suivant :

[[Fichier:Snapshot19.jpeg]]

Si vous appuyez sur entrée, vous serez conduit vers le menu de Grub2.
Cette étape permet de vérifier que Grub2 est bien installé, et de le tester.

[[Fichier:Snapshot20.jpeg]]

Si cela fonctionne, une des premières choses à faire sera de confirmer l'installation de Grub2 en tapant dans une console la commande suivante :

 # upgrade-from-grub-legacy

=== LVM ===

Problème rencontré lors de la mise à niveau avec LVM...
Le système s'est mélangé les pédales dans l'attribution des partitions.
Résultat :

[[Fichier:Snapshot21.jpeg]]

Voici où se situe le problème :

&lt;code&gt;
$ vdir /dev/l2s/
total 0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 home -&gt; ../dm-5
lrwxrwxrwx 1 root root 7 25 nov.  18:28 root -&gt; ../dm-0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 swap_1 -&gt; ../dm-1
lrwxrwxrwx 1 root root 7 25 nov.  18:28 tmp -&gt; ../dm-4
lrwxrwxrwx 1 root root 7 25 nov.  18:28 usr -&gt; ../dm-2
lrwxrwxrwx 1 root root 7 25 nov.  18:28 var -&gt; ../dm-3
&lt;/code&gt;
&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
# /dev/hda1	/boot	ext2	defaults	0	2
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-1	/usr	ext3	defaults	0	2
# /dev/hdb1	/var	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-3	none	swap	sw	0	0
# /dev/hdc	/media/cdrom0	udf,iso9660	user,noauto	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

Je ne sais pour quelle raison LVM à changé la numérotation des partitions... /usr est passé en dm-1 alors qu'il était en dm-2 et la swap en dm-3 alors qu'elle était être en dm-1
Il suffit de modifier le fichier /etc/fstab pour qu'il reflète à nouveau correctement vos partitions, et le tour est joué :

&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-2	/usr	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-1	none	swap	sw	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

== Bienvenu sur Squeeze ==

 laurent@lenny2squeeze:~$ uname -a
 Linux lenny2squeeze 2.6.32-5-amd64 #1 SMP Sat Oct 30 14:18:21 UTC 2010 x86_64 GNU/Linux

[[Fichier:Snapshot25.jpeg]]

A venir... Upgrade de Squeeze à ????

----
[[Utilisateur:Lol|Lol]] 25 novembre 2010 à 15:55 (EAT)
[[Catégorie:Installation]]</text>
      <sha1>q10v96lcuy08i1oxo3l6mffudbd8c0u</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4396</id>
      <parentid>2757</parentid>
      <timestamp>2012-08-15T06:20:54Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* finalisation */</comment>
      <text xml:space="preserve" bytes="33344">La mise à niveau de Lenny à Squeeze se précise, nous allons faire ici un rapide résumé des opérations nécessaires à la réussite de cette mise à niveau (upgrade).
LVM est installé sur la machine que nous allons mettre à niveau afin de tester le plus de possibilités.

Avant toute chose, je souhaite faire quelques précisions :
Chaque configuration est propre à chacun, en fonction de ses goûts, de son matériel et de ses connaissances.
Un guide universel n'existe donc pas.

Prévoyez aussi d'avoir du temps devant vous, et d'être au calme.

Nous choisirons d'utiliser aptitude au lieu de apt-get, il est en effet plus exigeant concernant les dépendances, votre mise à niveau sera plus &quot;propre&quot;.

'''Remarque''': Le choix ci-dessus n'est plus tout à fait vrai... En effet, Debian préconise maintenant apt-get pour la mise à niveau de Lenny à Squeeze.

http://www.debian.org/releases/squeeze/i386/release-notes/ch-upgrading.en.html#upgradingpackages
La méthode recommandée pour mettre à niveau Debian GNU/Linux est d'utiliser l'outil de gestion des paquets apt-get.
Dans les versions précédentes, aptitude était recommandé, mais les versions récentes de apt-get fournissent des fonctionnalités équivalentes et ont également montré plus de cohérence dans la mise à niveau.

Aptitude reste tout a fait valable pour la mise à jour de Lenny ou de Squeeze.

J'ai choisi une Lenny avec toutes les options de tasksel activées afin de faire un tour d'horizon le plus vaste possible des problèmes qui pourraient survenir.
L'environnement graphique est Xfce.

[[Fichier:Snapshot3.jpeg]]

== Pré-requis ==

=== Une bonne sauvegarde ===

Vous n'avez AUCUNE garantie que la mise à niveau se passe bien, alors, quelle que soit la méthode que vous emploierez, une sauvegarde est le minimum que vous puissiez faire avant de vous lancer dans l'aventure..

Avec dd, dump ou simplement cp SAUVEGARDEZ !

=== Un système à jour! ===

Le fichier sources.list précédent la mise à niveau :

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org stable main non-free
#deb-src http://www.debian-multimedia.org stable main non-free

# backports
deb http://backports.debian.org/debian-backports lenny-backports main contrib non-free
&lt;/code&gt;

 # aptitude update
 # aptitude safe-upgrade
 # aptitude full-upgrade

=== De l'espace! ===

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition où se trouve /var pour le stockage des paquets téléchargés.

Pour info une mise à jour &quot;lourde&quot; se soldera par le téléchargement d'environ 1Go...

Pour connaitre l’espace libre de votre partition racine :

 $ df -H
 Sys. de fich.          Tail.  Occ.  Disp. %Occ. Monté sur
 '''/dev/dm-0              338M   123M   198M  39% /'''
 tmpfs                  262M      0   262M   0% /lib/init/rw
 udev                    11M   689k   9,8M   7% /dev
 tmpfs                  262M      0   262M   0% /dev/shm
 /dev/hda1              239M    20M   207M   9% /boot
 /dev/dm-5              3,7G    75M   3,4G   3% /home
 /dev/dm-4              317M    11M   290M   4% /tmp
 /dev/dm-1              3,7G   1,7G   1,8G  50% /usr
 '''/dev/hdb1              5,3G   1,1G   4,0G  21% /var'''
 /dev/dm-2              1,8G   876M   818M  52% /media/dm-2

'''Si vous disposez de plus de 50% d’espace libre vous pouvez passer à l'étape suivante'''.

Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Si cela ne suffit toujours pas, il faut envisager d'ajouter un disque à votre système, ou de procéder à un upgrade par étapes successives (en mettant à jour les paquets progressivement et en nettoyant à chaque étape)

=== Les pilotes de la carte Graphique ===

Afin de ne pas avoir de mauvaise surprise avec le serveur X, modifiez votre xorg.conf afin d'utiliser des pilotes Debian.

Eventuellement utilisez les pilotes &quot;vesa&quot;

Dans votre fichier /etc/X11/xorg.conf

&lt;code&gt;
Section &quot;Device&quot;
    Identifier     &quot;Device0&quot;
    Driver         &quot;vesa&quot;
EndSection
&lt;/code&gt;

Si vous êtes sûr de vous, n'en faites rien, mais prévoyez une réinstallation des pilotes avant le premier redémarrage.

=== Le fichier sources.list ===

Créons un nouveau sources.list que nous placerons dans /etc/apt/sources.list.d
Nous prenons dores et déjà la bonne habitude d'utiliser ce dossier qui est devenu celui par défaut pour mettre les fichiers contenant les dépôts.

 # nano /etc/apt/sources.list.d/sources.list

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free

# stable security
deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

## stable volatile
## Le dépôt volatile à changé, il est désormais sous &quot;squeeze-updates&quot;
deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib

# stable multimedia
deb http://www.debian-multimedia.org squeeze main non-free
#deb-src http://www.debian-multimedia.org squeeze main non-free

# backports
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
&lt;/code&gt;

== Préparation de la mise à niveau ==

Maintenant que nous sommes prêts, nous pouvons lancer l'upgrade :

Mise à jour de la liste des paquets :

 # aptitude update

=== Si vous avez des problèmes de clefs ===

 W: GPG error: http://www.debian-multimedia.org

 # aptitude install debian-backports-keyring
 # aptitude install debian-multimedia-keyring

=== Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]] ===

 E: Dynamic MMap ran out of room

 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaite l'update, il ne doit pas y avoir d'erreurs

 # aptitude update

=== Problèmes de dépendances ===

Vous ne pourrez pas faire le passage de Lenny à Squeeze tant que subsisteront des problèmes de dépendances...

Voici deux exemples de problèmes de dépendances, et la manière de les régler :

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  xfce4-mixer-oss: Est en conflit avec: xfce4-mixer-alsa mais 4.4.2-3 est installé.
  foomatic-db: Est en conflit avec: foomatic-db-hpijs mais 20080211-1 est installé.
  xfce4-mixer-alsa: Est en conflit avec: xfce4-mixer-oss mais 4.4.2-3 doit être installé.

# aptitude install foomatic-db xfce4-mixer-alsa
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Lecture des descriptions de tâches... Fait  
Les NOUVEAUX paquets suivants vont être installés : 
  libopenjpeg2{a} libpoppler5{a} min12xxw{a} pnm2ppa{a} 
Les paquets suivants seront ENLEVÉS : 
  foomatic-db-hpijs{a} 
Les paquets suivants seront mis à jour : 
  fontconfig-config foomatic-db foomatic-db-engine foomatic-filters libfontconfig1 libjpeg62 libxml2 poppler-utils 
8 paquets mis à jour, 4 nouvellement installés, 1 à enlever et 728 non mis à jour.
Il est nécessaire de télécharger 4722ko d'archives. Après dépaquetage, 18,2Mo seront libérés.
Voulez-vous continuer ? [Y/n/?] o
...
État actuel : 728 mises à jour restantes [-8].
&lt;/code&gt;

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  libatlas3gf-base: Est en conflit avec: libblas3gf (&lt; 1.2-5) mais 1.2-2 est installé et a été conservé
                    Est en conflit avec: liblapack3gf (&lt; 3.2.1-4) mais 3.1.1-1 est installé et a été conservé
  rarian-compat: Est en conflit avec: scrollkeeper (&lt; 0.4) mais 0.3.14-16 est installé et a été conservé

# aptitude install libatlas3gf-base scrollkeeper
...
Les actions suivantes permettront de résoudre ces dépendances :

Mettre à jour les paquets suivants :
libblas3gf [1.2-2 (stable, now) -&gt; 1.2-8 (testing)]
liblapack3gf [3.1.1-1 (stable, now) -&gt; 3.2.1-8 (testing)]

Le score est de 70

Accepter cette solution ? [Y/n/q/?] y
...
État actuel : 725 mises à jour restantes [-3].
&lt;/code&gt;

En cas de doute n'hésitez pas à demander un avis [http://forum.debian-fr.org/ sur le forum]

=== stopper le serveur X ===

'''IMPORTANT''' : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

Si vous faites votre mise à niveau avec le serveur X lancé, vous risquez [http://www.debian-fr.org/upgrade-lenny-squeeze-gnome-minimaliste-t30744.html cette mésaventure]

== Lancez la mise à niveau ==

'''Attention''', Debian recommande désormais d'utiliser apt-get à la place de aptitude pour la mise à niveau : http://www.debian.org/releases/squeeze/i386/release-notes/ch-upgrading.en.html#upgradingpackages

Ce tuto ayant été réalisé avant cette préconisation, il n'est pas à jour concernant ce point précis.

=== A propos de Udev et du Noyau ===

Il est TRèS fortement recommandé de mettre à jour le noyau et udev avant de se lancer dans la mise à niveau. En effet, le noyau Lenny est incompatible avec la version de udev qui se trouve dans squeeze.

 # apt-get install linux-image-2.6-686 (ou linux-image-2.6-amd64)
 # apt-get install udev

Vous devez maintenant redémarrer le système pour être sur le noyau Squeeze (2.6.32)
Vous pouvez maintenant lancer la mise à niveau :

=== Mise à niveau ===

'''Rappel''': Plutôt que aptitude, utilisez apt-get pour la mise à niveau.

 # apt-get upgrade
 # apt-get dist-upgrade

&lt;code&gt;
# aptitude safe-upgrade (apt-get upgrade)
...
Les paquets suivants ont été conservés : 
  apt apt-utils aptitude synaptic 
Les NOUVEAUX paquets suivants vont être installés : 
  acpi-fakekey{a} apache2.2-bin{a} aumix{a} aumix-common{a} bluez{a} bluez-alsa{a} bluez-cups{a} bluez-gstreamer{a} 
  browser-plugin-gnash{a} cifs-utils{a} consolekit{a} cpp-4.4{a} cracklib-runtime{a} cups-ppdc{a} dash{a} db4.8-util{a} 
  diffutils{a} dosfstools{a} firmware-linux-free{a} freepats{a} fuse-utils{a} gcc-4.4-base{a} gcj-4.4-base{a} 
  gcj-4.4-jre-lib{a} geoip-database{a} ghostscript-cups{a} gnash{a} gnash-common{a} gnupg-curl{a} grub-pc{a} 
  gstreamer0.10-ffmpeg{a} gstreamer0.10-fluendo-mp3{a} gstreamer0.10-plugins-bad{a} gstreamer0.10-plugins-base{a} gvfs{a} 
  hplip-cups{a} insserv{a} install-info{a} isc-dhcp-client{a} isc-dhcp-common{a} iso-codes{a} keyboard-configuration{a} 
  libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libass4{a} libatasmart4{a} libaudit0{a} libavahi-core7{a} libavcodec52{a} 
  libavformat52{a} libavutil50{a} libbabl-0.0-0{a} libbind9-60{a} libbluetooth3{a} libboost-date-time1.42.0{a} 
  libboost-thread1.42.0{a} libbsd0{a} libburn4{a} libc-bin{a} libc-client2007e{a} libcap-ng0{a} libcdaudio1{a} libcdio10{a} 
  libcdparanoia0{a} libcelt0-0{a} libck-connector0{a} libcolamd2.7.1{a} libcommons-beanutils-java{a} 
  libcommons-collections3-java{a} libcommons-compress-java{a} libcommons-digester-java{a} libcommons-logging-java{a} 
  libcrack2{a} libcupscgi1{a} libcupsdriver1{a} libcupsmime1{a} libcupsppdc1{a} libdatrie1{a} libdb-je-java{a} libdb4.7{a} 
  libdb4.7-java{a} libdb4.7-java-gcj{a} libdb4.8{a} libdc1394-22{a} libdca0{a} libdirac-encoder0{a} libdirectfb-1.2-9{a} 
  libdns66{a} libdrm-intel1{a} libdrm-nouveau1{a} libdrm-radeon1{a} libdvdnav4{a} libdvdread4{a} libeggdbus-1-0{a} libenca0{a} 
  libenchant1c2a{a} libevent-1.4-2{a} libexempi3{a} libexo-common{a} libfaad2{a} libfftw3-3{a} libfile-copy-recursive-perl{a} 
  libflite1{a} libfont-freetype-perl{a} libfuse2{a} libgcj10{a} libgcr0{a} libgdu0{a} libgegl-0.0-0{a} libgeoip1{a} libgif4{a} 
  libgme0{a} libgomp1{a} libgp11-0{a} libgpgme11{a} libgraphicsmagick3{a} libgraphite3{a} libgssapi-krb5-2{a} libgtkglext1{a} 
  libgudev-1.0-0{a} libhpmud0{a} libicu44{a} libicu4j-java{a} libiptcdata0{a} libisc60{a} libisccc60{a} libisccfg60{a} 
  libiso9660-7{a} libisofs6{a} libiw30{a} libjbig2dec0{a} libjpeg-progs{a} libjpeg8{a} libjtidy-java{a} libk5crypto3{a} 
  libkate1{a} libkrb5-3{a} libkrb5support0{a} libltdl7{a} liblucene2-java{a} liblwres60{a} liblzma2{a} libmimic0{a} libmms0{a} 
  libmodplug1{a} libmozjs2d{a} libmpcdec6{a} libmpfr4{a} libmusicbrainz4c2a{a} libmythes-1.2-0{a} libneon27-gnutls{a} 
  libnetaddr-ip-perl{a} libnfnetlink0{a} libnl1{a} libntfs-3g75{a} libntfs10{a} libofa0{a} libonig2{a} libopencore-amrnb0{a} 
  libopencore-amrwb0{a} libopenraw1{a} liborc-0.4-0{a} libossp-uuid16{a} libpam-ck-connector{a} libpam-cracklib{a} 
  libpango-perl{a} libpangomm-1.4-1{a} libparted0debian1{a} libpciaccess0{a} libpolkit-agent-1-0{a} libpolkit-backend-1-0{a} 
  libpolkit-gobject-1-0{a} libpoppler-glib4{a} libpth20{a} libpython2.6{a} libqdbm14{a} libraptor1{a} librasqal2{a} 
  libraw1394-11{a} librdf0{a} libreadline6{a} librtmp0{a} libsane-hpaio{a} libsasl2-modules{a} libservlet2.5-java{a} 
  libsexy2{a} libsgutils2-2{a} libslv2-9{a} libsndfile1{a} libsoundtouch1c2{a} libswscale0{a} libtag1-vanilla{a} libtalloc2{a} 
  libtextcat-data-utf8{a} libtokyocabinet8{a} libudev0{a} libunique-1.0-0{a} libusb-1.0-0{a} libutempter0{a} libuuid-perl{a} 
  libv4l-0{a} libva1{a} libvcdinfo0{a} libvisual-0.4-0{a} libvisual-0.4-plugins{a} libvpx0{a} libwebkit-1.0-2{a} 
  libwebkit-1.0-common{a} libwildmidi1{a} libwnck-common{a} libwnck22{a} libx11-xcb1{a} libx264-104{a} libxcb-atom1{a} 
  libxcb-aux0{a} libxcb-dri2-0{a} libxcb-event1{a} libxfce4menu-0.1-0{a} libxfce4util-bin{a} libxfce4util-common{a} 
  libxfconf-0-2{a} libxklavier16{a} libxml-parser-perl{a} libxres1{a} libzbar0{a} linux-base{a} linux-image-2.6.32-5-amd64{a} 
  lockfile-progs{a} lsb-release{a} mtools{a} ntfsprogs{a} os-prober{a} oss-compat{a} php5-cli{a} php5-suhosin{a} 
  policykit-1{a} policykit-1-gnome{a} postgresql-8.4{a} postgresql-client-8.4{a} postgresql-contrib-8.4{a} 
  postgresql-doc-8.4{a} python-cups{a} python-gconf{a} python-numpy{a} python-pexpect{a} python-reportbug{a} python-webkit{a} 
  python2.6{a} python2.6-minimal{a} ristretto{a} samba-common-bin{a} sane-utils{a} sensible-utils{a} squeeze{a} 
  tango-icon-theme{a} thunar-archive-plugin{a} thunar-volman{a} tsconf{a} ttf-freefont{a} ttf-lyx{a} ttf-sil-gentium{a} 
  ttf-sil-gentium-basic{a} udisks{a} uno-libs3{a} unzip{a} ure{a} x-ttcidfont-conf{a} xdg-user-dirs{a} xfburn{a} 
  xfce-keyboard-shortcuts{a} xfce4-appfinder{a} xfce4-clipman{a} xfce4-datetime-plugin{a} xfce4-dict{a} xfce4-notes{a} 
  xfce4-notifyd{a} xfce4-places-plugin{a} xfce4-power-manager{a} xfce4-power-manager-data{a} xfce4-screenshooter{a} 
  xfce4-settings{a} xfce4-taskmanager{a} xfce4-timer-plugin{a} xfce4-xkb-plugin{a} xfconf{a} xfonts-mathml{a} xinput{a} xli{a} 
  xorg-docs-core{a} xscreensaver{a} xscreensaver-data{a} xserver-common{a} xserver-xorg-video-nouveau{a} xulrunner-1.9.1{a} 
  xz-utils{a} 
Les paquets suivants seront ENLEVÉS : 
  bluez-utils{u} cpp-4.3{u} cupsddk-drivers{u} djvulibre-desktop{u} finger{u} gs-common{u} liba52-0.7.4{u} libamrnb3{u} 
  libamrwb3{u} libaudio2{u} libavahi-compat-libdnssd1{u} libavahi-core5{u} libavc1394-0{u} libavcodec51{u} libbind9-50{u} 
  libbluetooth2{u} libc-client2007b{u} libcap1{u} libcucul0{u} libcupsys2{u} libcurl3{u} libdatrie0{u} libdirac0{u} 
  libdjvulibre21{u} libfaad0{u} libfreebob0{u} libgail-common{u} libgraphviz4{u} libgtkhtml2-0{u} libicu38{u} libiec61883-0{u} 
  libisccc50{u} libisccfg50{u} libiw29{u} libjaxp1.3-java-gcj{u} libltdl3{u} liblwres50{u} libmagick10{u} libmodplug0c2{u} 
  libmozjs1d{u} libmpcdec3{u} libmpfr1ldbl{u} libmysqlclient15off{u} libneon27{u} libntfs-3g31{u} libossp-uuid15{u} 
  libparted1.8-10{u} libpoppler-glib3{u} libpoppler3{u} libqt3-mt{u} libraw1394-8{u} libsensors3{u} libservlet2.4-java{u} 
  libsmbios-bin{u} libsmbios2{u} libssh2-1{u} libsuitesparse-3.1.0{u} libswfdec-0.6-90{u} libtalloc1{u} libvolume-id0{u} 
  libx264-65{u} libxalan2-java{u} libxalan2-java-gcj{u} libxcb-xlib0{u} libxerces2-java{u} libxerces2-java-gcj{u} 
  libxfce4mcs-client3{u} libxfce4mcs-manager3{u} libxtrap6{u} libxxf86misc1{u} mysql-common{u} openoffice.org-writer2latex{u} 
  openssl-blacklist{u} postgresql-8.3{u} postgresql-client-8.3{u} postgresql-contrib-8.3{u} postgresql-doc-8.3{u} 
  python-gtkhtml2{u} python-numeric{u} svgalibg1{u} xfce4-icon-theme{u} xfce4-mcs-manager{u} xfce4-mcs-plugins{u} 
  xfce4-minicmd-plugin{u} xfce4-screenshooter-plugin{u} xserver-xorg-video-cyrix{u} xserver-xorg-video-v4l{u} 
  xserver-xorg-video-vga{u} xulrunner-1.9{u} 
Les paquets suivants seront mis à jour : 
  a2ps acpi acpi-support acpi-support-base acpid adduser alsa-base alsa-utils anacron analog apache2 apache2-doc 
  apache2-mpm-prefork apache2-utils apache2.2-common apmd aspell aspell-fr at avahi-autoipd avahi-daemon base-files 
  base-passwd bash bash-completion bc bind9 bind9-doc bind9-host bind9utils bluetooth bsd-mailx bsdmainutils bsdutils bsh 
  bsh-gcj busybox ca-certificates console-common console-data console-setup console-terminus console-tools coreutils cpio cpp 
  cpufrequtils cron cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk dbus dbus-x11 dc debconf debconf-i18n 
  debian-archive-keyring debian-faq debianutils deborphan defoma desktop-base desktop-file-utils dhcp3-client dhcp3-common 
  dialog dictionaries-common diff disk-manager dmidecode dmsetup dnsutils doc-debian docbook-xml dpkg e2fslibs e2fsprogs ed 
  eject esound-common exim4 exim4-base exim4-config exim4-daemon-light exo-utils fastjar file findutils fontconfig foo2zjs 
  foomatic-db-gutenprint foomatic-filters-ppds foomatic-gui fortune-mod fortunes-min ftp gcc-4.3-base gconf2 gconf2-common gdm 
  gettext-base ghostscript gimp gimp-data gksu gnome-keyring gnupg gparted gpgv grep groff-base grub grub-common gsfonts 
  gtk2-engines-xfce gzip hal hal-info hdparm hibernate hicolor-icon-theme hostname hpijs hplip hplip-data iamerican ibritish 
  iceweasel iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint info initramfs-tools initscripts installation-report iproute 
  iptables iputils-ping ispell java-common kerneloops klibc-utils laptop-detect less libaa1 libacl1 libapache2-mod-perl2 
  libapache2-mod-php5 libapache2-mod-python libapm1 libapr1 libaprutil1 libart-2.0-2 libasound2 libaspell15 libatk1.0-0 
  libattr1 libaudiofile0 libavahi-client3 libavahi-common-data libavahi-common3 libavahi-glib1 libavutil49 libbcel-java 
  libblkid1 libbonobo2-0 libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i386 libcaca0 
  libcairo-perl libcairo2 libcairomm-1.0-1 libcap2 libcomerr2 libconsole libcpufreq0 libcroco3 libcups2 libcupsimage2 
  libcurl3-gnutls libcwidget3 libdaemon0 libdb4.6 libdbus-1-3 libdbus-glib-1-2 libdevel-symdump-perl libdevmapper1.02.1 
  libdigest-hmac-perl libdigest-sha1-perl libdirectfb-extra libdmx1 libdrm2 libedit2 libesd0 libexif12 libexo-0.3-0 libexpat1 
  libfaac0 libfam0 libffi5 libflac8 libfontenc1 libfreetype6 libfs6 libgail18 libgc1c2 libgcc1 libgcj-bc libgcj-common 
  libgconf2-4 libgcrypt11 libgd2-noxpm libgdbm3 libgfortran3 libgimp2.0 libgksu2-0 libgl1-mesa-dri libgl1-mesa-glx libglade2-0 
  libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgmp3c2 libgnome-keyring0 libgnome2-0 libgnome2-canvas-perl 
  libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0 libgnomecanvas2-common libgnomeui-0 libgnomeui-common 
  libgnomevfs2-0 libgnomevfs2-common libgnomevfs2-extra libgnutls26 libgpg-error0 libgphoto2-2 libgphoto2-port0 libgpm2 libgs8 
  libgsf-1-114 libgsf-1-common libgsm1 libgssglue1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0 
  libgtk2.0-common libgtkmm-2.4-1c2a libgtop2-7 libgtop2-common libgutenprint2 libhal-storage1 libhal1 libhsqldb-java 
  libhsqldb-java-gcj libhtml-parser-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libice6 libidl0 libidn11 libieee1284-3 
  libijs-0.35 libilmbase6 libjack0 libjasper1 libjaxp1.3-java libjline-java libkeyutils1 libklibc libkrb53 liblcms1 
  libldap-2.4-2 liblocale-gettext-perl liblockfile1 liblog4j1.2-java liblzo2-2 libmad0 libmagic1 libmng1 libmp3lame0 
  libmx4j-java libncurses5 libncursesw5 libnet-dns-perl libnewt0.52 libnfsidmap2 libnotify1 libnspr4-0d libnss-mdns libnss3-1d 
  libogg0 liboil0.3 libopenexr6 liborbit2 libpam-modules libpam-runtime libpam0g libpango1.0-0 libpango1.0-common libpaper1 
  libpci3 libpcre3 libpcsclite1 libperl5.10 libpixman-1-0 libpng12-0 libpopt0 libpostproc51 libpq5 libpulse0 libreadline5 
  librecode0 libregexp-java librpcsecgss3 librsvg2-2 librsvg2-common libsane libsane-extras libsasl2-2 libschroedinger-1.0-0 
  libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsensors4 libsepol1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 
  libsmbclient libsnmp-base libsnmp15 libsocket6-perl libsoup2.4-1 libsqlite3-0 libss2 libssl0.9.8 libstartup-notification0 
  libstdc++6 libsvga1 libsysfs2 libtag1c2a libtagc0 libtasn1-3 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl 
  libthai-data libthai0 libtheora0 libthunar-vfs-1-2 libtiff4 libts-0.0-0 liburi-perl libusb-0.1-4 libuuid1 libvorbis0a 
  libvorbisenc2 libvte-common libvte9 libwavpack1 libwbclient0 libwmf0.2-7 libwpg-0.1-1 libwrap0 libwww-perl libx11-6 
  libx11-data libx86-1 libxau6 libxaw7 libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xv0 libxcb1 
  libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfce4util4 libxfcegui4-4 libxfixes3 libxfont1 libxft2 libxi6 
  libxine1 libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins libxine1-plugins libxine1-x libxinerama1 
  libxkbfile1 libxmu6 libxmuu1 libxpm4 libxrandr2 libxrender1 libxslt1.1 libxss1 libxt6 libxtst6 libxv1 libxvidcore4 libxvmc1 
  libxxf86dga1 libxxf86vm1 linux-image-2.6-amd64 linux-sound-base locales login logrotate lp-solve lsb-base lsof lvm2 lwresd 
  m4 mailagent makedev man-db manpages manpages-fr manpages-fr-extra mawk mc menu mime-support mktemp mlocate mlock 
  module-init-tools mount mousepad mutt myspell-en-us myspell-fr-gut nano ncurses-base ncurses-bin ncurses-term net-tools 
  netatalk netbase nfs-common nfs-kernel-server ntfs-3g nvclock openbsd-inetd openoffice.org openoffice.org-base 
  openoffice.org-base-core openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw 
  openoffice.org-filter-mobiledev openoffice.org-gcj openoffice.org-gtk openoffice.org-help-en-us openoffice.org-help-fr 
  openoffice.org-impress openoffice.org-java-common openoffice.org-l10n-fr openoffice.org-math openoffice.org-officebean 
  openoffice.org-report-builder-bin openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-thesaurus-en-us 
  openoffice.org-writer openprinting-ppds openssh-client openssh-server openssl orage passwd patch pciutils pcmciautils perl 
  perl-base perl-modules php5-common pm-utils popularity-contest portmap postgresql postgresql-client postgresql-client-common 
  postgresql-common postgresql-contrib postgresql-doc powermgmt-base powertop printconf procmail procps psmisc psutils python 
  python-cairo python-central python-dbus python-foomatic python-glade2 python-gnome2 python-gobject python-gtk2 
  python-imaging python-ipy python-minimal python-pyorbit python-support python2.5 python2.5-minimal qpopper radeontool 
  readline-common reportbug rsyslog sa-exim samba samba-common samba-doc sed sgml-base sgml-data shared-mime-info 
  smartmontools smbclient smbfs spamassassin spamc ssl-cert sudo swat swfdec-mozilla sysv-rc sysvinit sysvinit-utils tar 
  tasksel tasksel-data tcpd texinfo thunar thunar-data thunar-media-tags-plugin time toshset traceroute ttf-dejavu 
  ttf-dejavu-core ttf-dejavu-extra ttf-liberation ttf-opensymbol tzdata ucf udev update-inetd usbutils util-linux uw-imapd 
  vbetool vim-common vim-tiny w3m wamerican wfrench wget whiptail whois winbind wireless-tools wpasupplicant x11-apps 
  x11-common x11-session-utils x11-utils x11-xfs-utils x11-xkb-utils x11-xserver-utils xauth xbitmaps xdg-utils xfce4 
  xfce4-battery-plugin xfce4-clipman-plugin xfce4-cpufreq-plugin xfce4-cpugraph-plugin xfce4-diskperf-plugin 
  xfce4-fsguard-plugin xfce4-genmon-plugin xfce4-goodies xfce4-mailwatch-plugin xfce4-mixer xfce4-mount-plugin 
  xfce4-netload-plugin xfce4-notes-plugin xfce4-panel xfce4-quicklauncher-plugin xfce4-sensors-plugin xfce4-session 
  xfce4-smartbookmark-plugin xfce4-systemload-plugin xfce4-terminal xfce4-utils xfce4-verve-plugin xfce4-wavelan-plugin 
  xfce4-weather-plugin xfdesktop4 xfdesktop4-data xfonts-100dpi xfonts-75dpi xfonts-base xfonts-encodings xfonts-intl-european 
  xfonts-scalable xfonts-utils xfprint4 xfwm4 xinit xkb-data xml-core xorg xsane xsane-common xserver-xorg xserver-xorg-core 
  xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd xserver-xorg-input-mouse xserver-xorg-input-synaptics 
  xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati 
  xserver-xorg-video-chips xserver-xorg-video-cirrus xserver-xorg-video-dummy xserver-xorg-video-fbdev 
  xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-intel xserver-xorg-video-mach64 xserver-xorg-video-mga 
  xserver-xorg-video-neomagic xserver-xorg-video-nv xserver-xorg-video-openchrome xserver-xorg-video-r128 
  xserver-xorg-video-radeon xserver-xorg-video-radeonhd xserver-xorg-video-rendition xserver-xorg-video-s3 
  xserver-xorg-video-s3virge xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis 
  xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident xserver-xorg-video-tseng 
  xserver-xorg-video-vesa xserver-xorg-video-vmware xserver-xorg-video-voodoo xterm zlib1g 
Les paquets suivants sont RECOMMANDÉS mais ne seront pas installés :
  bzip2 gamin gcc gdm-themes hddtemp libapache2-reload-perl libatk1.0-data libatm1 libbsd-resource-perl libc6-dev libfribidi0 
  libglib2.0-data libgtk2.0-bin libhtml-format-perl libio-socket-inet6-perl liblog4j1.2-java-gcj libmail-spf-perl 
  libmailtools-perl libnss-lwres libpam-gnome-keyring libpaper-utils lm-sensors make nmap openoffice.org-emailmerge 
  openoffice.org-filter-binfilter pconf-detect rc re2c uuid-runtime wdiff xfwm4-themes xnest xserver-xephyr zenity 
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] 
&lt;/code&gt;

En fonction de votre connexion ça peut prendre très longtemps, et être interrompu (à 500KB/s une demi-heure à 50 KB/s c'est plusieurs heures...).
Un conseil, si vous n'êtes pas sûr de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

&lt;code&gt;
# aptitude -d safe-upgrade (apt-get -d upgrade)
...
 762Mo téléchargés en 1h9min37s (182ko/s)                                                          
Lecture des listes de paquets... Fait             
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait
&lt;/code&gt;

Puis

&lt;code&gt;
# aptitude safe-upgrade (apt-get upgrade)
...
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 0o/762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] y
&lt;/code&gt;

=== Déroulement ===

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut, mais prenez le temps de lire tous les messages, et si nécessaire, prenez des notes.

Sans le téléchargement des fichiers, comptez un peu plus d'une heure pour la mise à niveau.

[[Fichier:Snapshot4.jpeg]]

[[Fichier:Snapshot5.jpeg]]

[[Fichier:Snapshot6.jpeg]]

[[Fichier:Snapshot7.jpeg]]

[[Fichier:Snapshot9.jpeg]]

[[Fichier:Snapshot11.jpeg]]

[[Fichier:Snapshot13.jpeg]]

[[Fichier:Snapshot14.jpeg]]

[[Fichier:Snapshot15.jpeg]]

[[Fichier:Snapshot16.jpeg]]

[[Fichier:Snapshot17.jpeg]]

Vous partirez d'une Lenny configurée, et donc de nombreux fichiers de configuration auront été modifiés par vos soins.
Il est judicieux de ne pas écraser vos configurations avec les fichiers par défaut proposés par les &quot;mainteneurs&quot; des paquets.
Vous aurez tout le loisir de regarder les modifications proposées, et ce qu'elles apportent, en regardant dans /usr/share/doc ou dans les contenus de vos deb téléchargés (dans /var/apt/archives)

[[Fichier:Snapshot18.jpeg]]

=== finalisation ===

Le safe-upgrade devrait se terminer par ceci :

&lt;code&gt;
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 4 mises à jour restantes [-721].
&lt;/code&gt;

Vous pouvez maintenant lancer un &quot;full-upgrade&quot;

&lt;code&gt;
# aptitude full-upgrade (apt-get dist-upgrade)

...

4 paquets mis à jour, 13 nouvellement installés, 2 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 12,1Mo d'archives. Après dépaquetage, 14,3Mo seront utilisés.
Les paquets suivants ont des dépendances non satisfaites :
  libept0: Dépend: libapt-pkg-libc6.7-6-4.6 qui est un paquet virtuel
Les actions suivantes permettront de résoudre ces dépendances :

Supprimer les paquets suivants :
libept0

Le score est de 115

Accepter cette solution ? [Y/n/q/?]y

...

Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 0 mise à jour restante [-4].
&lt;/code&gt;

Si tout s'est bien passé, il ne vous reste plus qu'a redémarrer la machine :

 # shutdown -r now

=== Grub2 ===

Si vous étiez sous Grub-legacy vous aurez certainement fait la bascule vers Grub2.

La première &quot;surprise&quot; qui vous attend donc (sauf si vous avez lu ce guide avant...) c'est le menu suivant :

[[Fichier:Snapshot19.jpeg]]

Si vous appuyez sur entrée, vous serez conduit vers le menu de Grub2.
Cette étape permet de vérifier que Grub2 est bien installé, et de le tester.

[[Fichier:Snapshot20.jpeg]]

Si cela fonctionne, une des premières choses à faire sera de confirmer l'installation de Grub2 en tapant dans une console la commande suivante :

 # upgrade-from-grub-legacy

=== LVM ===

Problème rencontré lors de la mise à niveau avec LVM...
Le système s'est mélangé les pédales dans l'attribution des partitions.
Résultat :

[[Fichier:Snapshot21.jpeg]]

Voici où se situe le problème :

&lt;code&gt;
$ vdir /dev/l2s/
total 0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 home -&gt; ../dm-5
lrwxrwxrwx 1 root root 7 25 nov.  18:28 root -&gt; ../dm-0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 swap_1 -&gt; ../dm-1
lrwxrwxrwx 1 root root 7 25 nov.  18:28 tmp -&gt; ../dm-4
lrwxrwxrwx 1 root root 7 25 nov.  18:28 usr -&gt; ../dm-2
lrwxrwxrwx 1 root root 7 25 nov.  18:28 var -&gt; ../dm-3
&lt;/code&gt;
&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
# /dev/hda1	/boot	ext2	defaults	0	2
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-1	/usr	ext3	defaults	0	2
# /dev/hdb1	/var	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-3	none	swap	sw	0	0
# /dev/hdc	/media/cdrom0	udf,iso9660	user,noauto	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

Je ne sais pour quelle raison LVM à changé la numérotation des partitions... /usr est passé en dm-1 alors qu'il était en dm-2 et la swap en dm-3 alors qu'elle était être en dm-1
Il suffit de modifier le fichier /etc/fstab pour qu'il reflète à nouveau correctement vos partitions, et le tour est joué :

&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-2	/usr	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-1	none	swap	sw	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

== Bienvenu sur Squeeze ==

 laurent@lenny2squeeze:~$ uname -a
 Linux lenny2squeeze 2.6.32-5-amd64 #1 SMP Sat Oct 30 14:18:21 UTC 2010 x86_64 GNU/Linux

[[Fichier:Snapshot25.jpeg]]

A venir... Upgrade de Squeeze à ????

----
[[Utilisateur:Lol|Lol]] 25 novembre 2010 à 15:55 (EAT)
[[Catégorie:Installation]]</text>
      <sha1>88ebr1q7jh3in8ut0jkwmqo0ny970ni</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5721</id>
      <parentid>4396</parentid>
      <timestamp>2014-08-20T04:03:17Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Le fichier sources.list */ chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="33348">La mise à niveau de Lenny à Squeeze se précise, nous allons faire ici un rapide résumé des opérations nécessaires à la réussite de cette mise à niveau (upgrade).
LVM est installé sur la machine que nous allons mettre à niveau afin de tester le plus de possibilités.

Avant toute chose, je souhaite faire quelques précisions :
Chaque configuration est propre à chacun, en fonction de ses goûts, de son matériel et de ses connaissances.
Un guide universel n'existe donc pas.

Prévoyez aussi d'avoir du temps devant vous, et d'être au calme.

Nous choisirons d'utiliser aptitude au lieu de apt-get, il est en effet plus exigeant concernant les dépendances, votre mise à niveau sera plus &quot;propre&quot;.

'''Remarque''': Le choix ci-dessus n'est plus tout à fait vrai... En effet, Debian préconise maintenant apt-get pour la mise à niveau de Lenny à Squeeze.

http://www.debian.org/releases/squeeze/i386/release-notes/ch-upgrading.en.html#upgradingpackages
La méthode recommandée pour mettre à niveau Debian GNU/Linux est d'utiliser l'outil de gestion des paquets apt-get.
Dans les versions précédentes, aptitude était recommandé, mais les versions récentes de apt-get fournissent des fonctionnalités équivalentes et ont également montré plus de cohérence dans la mise à niveau.

Aptitude reste tout a fait valable pour la mise à jour de Lenny ou de Squeeze.

J'ai choisi une Lenny avec toutes les options de tasksel activées afin de faire un tour d'horizon le plus vaste possible des problèmes qui pourraient survenir.
L'environnement graphique est Xfce.

[[Fichier:Snapshot3.jpeg]]

== Pré-requis ==

=== Une bonne sauvegarde ===

Vous n'avez AUCUNE garantie que la mise à niveau se passe bien, alors, quelle que soit la méthode que vous emploierez, une sauvegarde est le minimum que vous puissiez faire avant de vous lancer dans l'aventure..

Avec dd, dump ou simplement cp SAUVEGARDEZ !

=== Un système à jour! ===

Le fichier sources.list précédent la mise à niveau :

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

# stable security
deb http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free

# stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
#deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free

# stable multimedia
deb http://www.debian-multimedia.org stable main non-free
#deb-src http://www.debian-multimedia.org stable main non-free

# backports
deb http://backports.debian.org/debian-backports lenny-backports main contrib non-free
&lt;/code&gt;

 # aptitude update
 # aptitude safe-upgrade
 # aptitude full-upgrade

=== De l'espace! ===

La mise à jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/).
Ainsi que sur la partition où se trouve /var pour le stockage des paquets téléchargés.

Pour info une mise à jour &quot;lourde&quot; se soldera par le téléchargement d'environ 1Go...

Pour connaitre l’espace libre de votre partition racine :

 $ df -H
 Sys. de fich.          Tail.  Occ.  Disp. %Occ. Monté sur
 '''/dev/dm-0              338M   123M   198M  39% /'''
 tmpfs                  262M      0   262M   0% /lib/init/rw
 udev                    11M   689k   9,8M   7% /dev
 tmpfs                  262M      0   262M   0% /dev/shm
 /dev/hda1              239M    20M   207M   9% /boot
 /dev/dm-5              3,7G    75M   3,4G   3% /home
 /dev/dm-4              317M    11M   290M   4% /tmp
 /dev/dm-1              3,7G   1,7G   1,8G  50% /usr
 '''/dev/hdb1              5,3G   1,1G   4,0G  21% /var'''
 /dev/dm-2              1,8G   876M   818M  52% /media/dm-2

'''Si vous disposez de plus de 50% d’espace libre vous pouvez passer à l'étape suivante'''.

Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Si cela ne suffit toujours pas, il faut envisager d'ajouter un disque à votre système, ou de procéder à un upgrade par étapes successives (en mettant à jour les paquets progressivement et en nettoyant à chaque étape)

=== Les pilotes de la carte Graphique ===

Afin de ne pas avoir de mauvaise surprise avec le serveur X, modifiez votre xorg.conf afin d'utiliser des pilotes Debian.

Eventuellement utilisez les pilotes &quot;vesa&quot;

Dans votre fichier /etc/X11/xorg.conf

&lt;code&gt;
Section &quot;Device&quot;
    Identifier     &quot;Device0&quot;
    Driver         &quot;vesa&quot;
EndSection
&lt;/code&gt;

Si vous êtes sûr de vous, n'en faites rien, mais prévoyez une réinstallation des pilotes avant le premier redémarrage.

=== Le fichier sources.list ===

Créons un nouveau sources.list que nous placerons dans /etc/apt/sources.list.d
Nous prenons dores et déjà la bonne habitude d'utiliser ce répertoire qui est devenu celui par défaut pour mettre les fichiers contenant les dépôts.

 # nano /etc/apt/sources.list.d/sources.list

&lt;code&gt;
# stable
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free

# stable security
deb http://security.debian.org/ squeeze/updates main contrib non-free
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free

## stable volatile
## Le dépôt volatile à changé, il est désormais sous &quot;squeeze-updates&quot;
deb http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main non-free contrib

# stable multimedia
deb http://www.debian-multimedia.org squeeze main non-free
#deb-src http://www.debian-multimedia.org squeeze main non-free

# backports
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
&lt;/code&gt;

== Préparation de la mise à niveau ==

Maintenant que nous sommes prêts, nous pouvons lancer l'upgrade :

Mise à jour de la liste des paquets :

 # aptitude update

=== Si vous avez des problèmes de clefs ===

 W: GPG error: http://www.debian-multimedia.org

 # aptitude install debian-backports-keyring
 # aptitude install debian-multimedia-keyring

=== Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]] ===

 E: Dynamic MMap ran out of room

 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Refaite l'update, il ne doit pas y avoir d'erreurs

 # aptitude update

=== Problèmes de dépendances ===

Vous ne pourrez pas faire le passage de Lenny à Squeeze tant que subsisteront des problèmes de dépendances...

Voici deux exemples de problèmes de dépendances, et la manière de les régler :

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  xfce4-mixer-oss: Est en conflit avec: xfce4-mixer-alsa mais 4.4.2-3 est installé.
  foomatic-db: Est en conflit avec: foomatic-db-hpijs mais 20080211-1 est installé.
  xfce4-mixer-alsa: Est en conflit avec: xfce4-mixer-oss mais 4.4.2-3 doit être installé.

# aptitude install foomatic-db xfce4-mixer-alsa
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Lecture des descriptions de tâches... Fait  
Les NOUVEAUX paquets suivants vont être installés : 
  libopenjpeg2{a} libpoppler5{a} min12xxw{a} pnm2ppa{a} 
Les paquets suivants seront ENLEVÉS : 
  foomatic-db-hpijs{a} 
Les paquets suivants seront mis à jour : 
  fontconfig-config foomatic-db foomatic-db-engine foomatic-filters libfontconfig1 libjpeg62 libxml2 poppler-utils 
8 paquets mis à jour, 4 nouvellement installés, 1 à enlever et 728 non mis à jour.
Il est nécessaire de télécharger 4722ko d'archives. Après dépaquetage, 18,2Mo seront libérés.
Voulez-vous continuer ? [Y/n/?] o
...
État actuel : 728 mises à jour restantes [-8].
&lt;/code&gt;

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  libatlas3gf-base: Est en conflit avec: libblas3gf (&lt; 1.2-5) mais 1.2-2 est installé et a été conservé
                    Est en conflit avec: liblapack3gf (&lt; 3.2.1-4) mais 3.1.1-1 est installé et a été conservé
  rarian-compat: Est en conflit avec: scrollkeeper (&lt; 0.4) mais 0.3.14-16 est installé et a été conservé

# aptitude install libatlas3gf-base scrollkeeper
...
Les actions suivantes permettront de résoudre ces dépendances :

Mettre à jour les paquets suivants :
libblas3gf [1.2-2 (stable, now) -&gt; 1.2-8 (testing)]
liblapack3gf [3.1.1-1 (stable, now) -&gt; 3.2.1-8 (testing)]

Le score est de 70

Accepter cette solution ? [Y/n/q/?] y
...
État actuel : 725 mises à jour restantes [-3].
&lt;/code&gt;

En cas de doute n'hésitez pas à demander un avis [http://forum.debian-fr.org/ sur le forum]

=== stopper le serveur X ===

'''IMPORTANT''' : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # /etc/init.d/gdm stop

Si vous faites votre mise à niveau avec le serveur X lancé, vous risquez [http://www.debian-fr.org/upgrade-lenny-squeeze-gnome-minimaliste-t30744.html cette mésaventure]

== Lancez la mise à niveau ==

'''Attention''', Debian recommande désormais d'utiliser apt-get à la place de aptitude pour la mise à niveau : http://www.debian.org/releases/squeeze/i386/release-notes/ch-upgrading.en.html#upgradingpackages

Ce tuto ayant été réalisé avant cette préconisation, il n'est pas à jour concernant ce point précis.

=== A propos de Udev et du Noyau ===

Il est TRèS fortement recommandé de mettre à jour le noyau et udev avant de se lancer dans la mise à niveau. En effet, le noyau Lenny est incompatible avec la version de udev qui se trouve dans squeeze.

 # apt-get install linux-image-2.6-686 (ou linux-image-2.6-amd64)
 # apt-get install udev

Vous devez maintenant redémarrer le système pour être sur le noyau Squeeze (2.6.32)
Vous pouvez maintenant lancer la mise à niveau :

=== Mise à niveau ===

'''Rappel''': Plutôt que aptitude, utilisez apt-get pour la mise à niveau.

 # apt-get upgrade
 # apt-get dist-upgrade

&lt;code&gt;
# aptitude safe-upgrade (apt-get upgrade)
...
Les paquets suivants ont été conservés : 
  apt apt-utils aptitude synaptic 
Les NOUVEAUX paquets suivants vont être installés : 
  acpi-fakekey{a} apache2.2-bin{a} aumix{a} aumix-common{a} bluez{a} bluez-alsa{a} bluez-cups{a} bluez-gstreamer{a} 
  browser-plugin-gnash{a} cifs-utils{a} consolekit{a} cpp-4.4{a} cracklib-runtime{a} cups-ppdc{a} dash{a} db4.8-util{a} 
  diffutils{a} dosfstools{a} firmware-linux-free{a} freepats{a} fuse-utils{a} gcc-4.4-base{a} gcj-4.4-base{a} 
  gcj-4.4-jre-lib{a} geoip-database{a} ghostscript-cups{a} gnash{a} gnash-common{a} gnupg-curl{a} grub-pc{a} 
  gstreamer0.10-ffmpeg{a} gstreamer0.10-fluendo-mp3{a} gstreamer0.10-plugins-bad{a} gstreamer0.10-plugins-base{a} gvfs{a} 
  hplip-cups{a} insserv{a} install-info{a} isc-dhcp-client{a} isc-dhcp-common{a} iso-codes{a} keyboard-configuration{a} 
  libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libass4{a} libatasmart4{a} libaudit0{a} libavahi-core7{a} libavcodec52{a} 
  libavformat52{a} libavutil50{a} libbabl-0.0-0{a} libbind9-60{a} libbluetooth3{a} libboost-date-time1.42.0{a} 
  libboost-thread1.42.0{a} libbsd0{a} libburn4{a} libc-bin{a} libc-client2007e{a} libcap-ng0{a} libcdaudio1{a} libcdio10{a} 
  libcdparanoia0{a} libcelt0-0{a} libck-connector0{a} libcolamd2.7.1{a} libcommons-beanutils-java{a} 
  libcommons-collections3-java{a} libcommons-compress-java{a} libcommons-digester-java{a} libcommons-logging-java{a} 
  libcrack2{a} libcupscgi1{a} libcupsdriver1{a} libcupsmime1{a} libcupsppdc1{a} libdatrie1{a} libdb-je-java{a} libdb4.7{a} 
  libdb4.7-java{a} libdb4.7-java-gcj{a} libdb4.8{a} libdc1394-22{a} libdca0{a} libdirac-encoder0{a} libdirectfb-1.2-9{a} 
  libdns66{a} libdrm-intel1{a} libdrm-nouveau1{a} libdrm-radeon1{a} libdvdnav4{a} libdvdread4{a} libeggdbus-1-0{a} libenca0{a} 
  libenchant1c2a{a} libevent-1.4-2{a} libexempi3{a} libexo-common{a} libfaad2{a} libfftw3-3{a} libfile-copy-recursive-perl{a} 
  libflite1{a} libfont-freetype-perl{a} libfuse2{a} libgcj10{a} libgcr0{a} libgdu0{a} libgegl-0.0-0{a} libgeoip1{a} libgif4{a} 
  libgme0{a} libgomp1{a} libgp11-0{a} libgpgme11{a} libgraphicsmagick3{a} libgraphite3{a} libgssapi-krb5-2{a} libgtkglext1{a} 
  libgudev-1.0-0{a} libhpmud0{a} libicu44{a} libicu4j-java{a} libiptcdata0{a} libisc60{a} libisccc60{a} libisccfg60{a} 
  libiso9660-7{a} libisofs6{a} libiw30{a} libjbig2dec0{a} libjpeg-progs{a} libjpeg8{a} libjtidy-java{a} libk5crypto3{a} 
  libkate1{a} libkrb5-3{a} libkrb5support0{a} libltdl7{a} liblucene2-java{a} liblwres60{a} liblzma2{a} libmimic0{a} libmms0{a} 
  libmodplug1{a} libmozjs2d{a} libmpcdec6{a} libmpfr4{a} libmusicbrainz4c2a{a} libmythes-1.2-0{a} libneon27-gnutls{a} 
  libnetaddr-ip-perl{a} libnfnetlink0{a} libnl1{a} libntfs-3g75{a} libntfs10{a} libofa0{a} libonig2{a} libopencore-amrnb0{a} 
  libopencore-amrwb0{a} libopenraw1{a} liborc-0.4-0{a} libossp-uuid16{a} libpam-ck-connector{a} libpam-cracklib{a} 
  libpango-perl{a} libpangomm-1.4-1{a} libparted0debian1{a} libpciaccess0{a} libpolkit-agent-1-0{a} libpolkit-backend-1-0{a} 
  libpolkit-gobject-1-0{a} libpoppler-glib4{a} libpth20{a} libpython2.6{a} libqdbm14{a} libraptor1{a} librasqal2{a} 
  libraw1394-11{a} librdf0{a} libreadline6{a} librtmp0{a} libsane-hpaio{a} libsasl2-modules{a} libservlet2.5-java{a} 
  libsexy2{a} libsgutils2-2{a} libslv2-9{a} libsndfile1{a} libsoundtouch1c2{a} libswscale0{a} libtag1-vanilla{a} libtalloc2{a} 
  libtextcat-data-utf8{a} libtokyocabinet8{a} libudev0{a} libunique-1.0-0{a} libusb-1.0-0{a} libutempter0{a} libuuid-perl{a} 
  libv4l-0{a} libva1{a} libvcdinfo0{a} libvisual-0.4-0{a} libvisual-0.4-plugins{a} libvpx0{a} libwebkit-1.0-2{a} 
  libwebkit-1.0-common{a} libwildmidi1{a} libwnck-common{a} libwnck22{a} libx11-xcb1{a} libx264-104{a} libxcb-atom1{a} 
  libxcb-aux0{a} libxcb-dri2-0{a} libxcb-event1{a} libxfce4menu-0.1-0{a} libxfce4util-bin{a} libxfce4util-common{a} 
  libxfconf-0-2{a} libxklavier16{a} libxml-parser-perl{a} libxres1{a} libzbar0{a} linux-base{a} linux-image-2.6.32-5-amd64{a} 
  lockfile-progs{a} lsb-release{a} mtools{a} ntfsprogs{a} os-prober{a} oss-compat{a} php5-cli{a} php5-suhosin{a} 
  policykit-1{a} policykit-1-gnome{a} postgresql-8.4{a} postgresql-client-8.4{a} postgresql-contrib-8.4{a} 
  postgresql-doc-8.4{a} python-cups{a} python-gconf{a} python-numpy{a} python-pexpect{a} python-reportbug{a} python-webkit{a} 
  python2.6{a} python2.6-minimal{a} ristretto{a} samba-common-bin{a} sane-utils{a} sensible-utils{a} squeeze{a} 
  tango-icon-theme{a} thunar-archive-plugin{a} thunar-volman{a} tsconf{a} ttf-freefont{a} ttf-lyx{a} ttf-sil-gentium{a} 
  ttf-sil-gentium-basic{a} udisks{a} uno-libs3{a} unzip{a} ure{a} x-ttcidfont-conf{a} xdg-user-dirs{a} xfburn{a} 
  xfce-keyboard-shortcuts{a} xfce4-appfinder{a} xfce4-clipman{a} xfce4-datetime-plugin{a} xfce4-dict{a} xfce4-notes{a} 
  xfce4-notifyd{a} xfce4-places-plugin{a} xfce4-power-manager{a} xfce4-power-manager-data{a} xfce4-screenshooter{a} 
  xfce4-settings{a} xfce4-taskmanager{a} xfce4-timer-plugin{a} xfce4-xkb-plugin{a} xfconf{a} xfonts-mathml{a} xinput{a} xli{a} 
  xorg-docs-core{a} xscreensaver{a} xscreensaver-data{a} xserver-common{a} xserver-xorg-video-nouveau{a} xulrunner-1.9.1{a} 
  xz-utils{a} 
Les paquets suivants seront ENLEVÉS : 
  bluez-utils{u} cpp-4.3{u} cupsddk-drivers{u} djvulibre-desktop{u} finger{u} gs-common{u} liba52-0.7.4{u} libamrnb3{u} 
  libamrwb3{u} libaudio2{u} libavahi-compat-libdnssd1{u} libavahi-core5{u} libavc1394-0{u} libavcodec51{u} libbind9-50{u} 
  libbluetooth2{u} libc-client2007b{u} libcap1{u} libcucul0{u} libcupsys2{u} libcurl3{u} libdatrie0{u} libdirac0{u} 
  libdjvulibre21{u} libfaad0{u} libfreebob0{u} libgail-common{u} libgraphviz4{u} libgtkhtml2-0{u} libicu38{u} libiec61883-0{u} 
  libisccc50{u} libisccfg50{u} libiw29{u} libjaxp1.3-java-gcj{u} libltdl3{u} liblwres50{u} libmagick10{u} libmodplug0c2{u} 
  libmozjs1d{u} libmpcdec3{u} libmpfr1ldbl{u} libmysqlclient15off{u} libneon27{u} libntfs-3g31{u} libossp-uuid15{u} 
  libparted1.8-10{u} libpoppler-glib3{u} libpoppler3{u} libqt3-mt{u} libraw1394-8{u} libsensors3{u} libservlet2.4-java{u} 
  libsmbios-bin{u} libsmbios2{u} libssh2-1{u} libsuitesparse-3.1.0{u} libswfdec-0.6-90{u} libtalloc1{u} libvolume-id0{u} 
  libx264-65{u} libxalan2-java{u} libxalan2-java-gcj{u} libxcb-xlib0{u} libxerces2-java{u} libxerces2-java-gcj{u} 
  libxfce4mcs-client3{u} libxfce4mcs-manager3{u} libxtrap6{u} libxxf86misc1{u} mysql-common{u} openoffice.org-writer2latex{u} 
  openssl-blacklist{u} postgresql-8.3{u} postgresql-client-8.3{u} postgresql-contrib-8.3{u} postgresql-doc-8.3{u} 
  python-gtkhtml2{u} python-numeric{u} svgalibg1{u} xfce4-icon-theme{u} xfce4-mcs-manager{u} xfce4-mcs-plugins{u} 
  xfce4-minicmd-plugin{u} xfce4-screenshooter-plugin{u} xserver-xorg-video-cyrix{u} xserver-xorg-video-v4l{u} 
  xserver-xorg-video-vga{u} xulrunner-1.9{u} 
Les paquets suivants seront mis à jour : 
  a2ps acpi acpi-support acpi-support-base acpid adduser alsa-base alsa-utils anacron analog apache2 apache2-doc 
  apache2-mpm-prefork apache2-utils apache2.2-common apmd aspell aspell-fr at avahi-autoipd avahi-daemon base-files 
  base-passwd bash bash-completion bc bind9 bind9-doc bind9-host bind9utils bluetooth bsd-mailx bsdmainutils bsdutils bsh 
  bsh-gcj busybox ca-certificates console-common console-data console-setup console-terminus console-tools coreutils cpio cpp 
  cpufrequtils cron cups cups-bsd cups-client cups-common cups-driver-gutenprint cupsddk dbus dbus-x11 dc debconf debconf-i18n 
  debian-archive-keyring debian-faq debianutils deborphan defoma desktop-base desktop-file-utils dhcp3-client dhcp3-common 
  dialog dictionaries-common diff disk-manager dmidecode dmsetup dnsutils doc-debian docbook-xml dpkg e2fslibs e2fsprogs ed 
  eject esound-common exim4 exim4-base exim4-config exim4-daemon-light exo-utils fastjar file findutils fontconfig foo2zjs 
  foomatic-db-gutenprint foomatic-filters-ppds foomatic-gui fortune-mod fortunes-min ftp gcc-4.3-base gconf2 gconf2-common gdm 
  gettext-base ghostscript gimp gimp-data gksu gnome-keyring gnupg gparted gpgv grep groff-base grub grub-common gsfonts 
  gtk2-engines-xfce gzip hal hal-info hdparm hibernate hicolor-icon-theme hostname hpijs hplip hplip-data iamerican ibritish 
  iceweasel iceweasel-l10n-fr ifrench-gut ifupdown ijsgutenprint info initramfs-tools initscripts installation-report iproute 
  iptables iputils-ping ispell java-common kerneloops klibc-utils laptop-detect less libaa1 libacl1 libapache2-mod-perl2 
  libapache2-mod-php5 libapache2-mod-python libapm1 libapr1 libaprutil1 libart-2.0-2 libasound2 libaspell15 libatk1.0-0 
  libattr1 libaudiofile0 libavahi-client3 libavahi-common-data libavahi-common3 libavahi-glib1 libavutil49 libbcel-java 
  libblkid1 libbonobo2-0 libbonobo2-common libbonoboui2-0 libbonoboui2-common libbz2-1.0 libc6 libc6-i386 libcaca0 
  libcairo-perl libcairo2 libcairomm-1.0-1 libcap2 libcomerr2 libconsole libcpufreq0 libcroco3 libcups2 libcupsimage2 
  libcurl3-gnutls libcwidget3 libdaemon0 libdb4.6 libdbus-1-3 libdbus-glib-1-2 libdevel-symdump-perl libdevmapper1.02.1 
  libdigest-hmac-perl libdigest-sha1-perl libdirectfb-extra libdmx1 libdrm2 libedit2 libesd0 libexif12 libexo-0.3-0 libexpat1 
  libfaac0 libfam0 libffi5 libflac8 libfontenc1 libfreetype6 libfs6 libgail18 libgc1c2 libgcc1 libgcj-bc libgcj-common 
  libgconf2-4 libgcrypt11 libgd2-noxpm libgdbm3 libgfortran3 libgimp2.0 libgksu2-0 libgl1-mesa-dri libgl1-mesa-glx libglade2-0 
  libglib-perl libglib2.0-0 libglibmm-2.4-1c2a libglu1-mesa libgmp3c2 libgnome-keyring0 libgnome2-0 libgnome2-canvas-perl 
  libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0 libgnomecanvas2-common libgnomeui-0 libgnomeui-common 
  libgnomevfs2-0 libgnomevfs2-common libgnomevfs2-extra libgnutls26 libgpg-error0 libgphoto2-2 libgphoto2-port0 libgpm2 libgs8 
  libgsf-1-114 libgsf-1-common libgsm1 libgssglue1 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl libgtk2.0-0 
  libgtk2.0-common libgtkmm-2.4-1c2a libgtop2-7 libgtop2-common libgutenprint2 libhal-storage1 libhal1 libhsqldb-java 
  libhsqldb-java-gcj libhtml-parser-perl libhtml-tree-perl libhunspell-1.2-0 libhyphen0 libice6 libidl0 libidn11 libieee1284-3 
  libijs-0.35 libilmbase6 libjack0 libjasper1 libjaxp1.3-java libjline-java libkeyutils1 libklibc libkrb53 liblcms1 
  libldap-2.4-2 liblocale-gettext-perl liblockfile1 liblog4j1.2-java liblzo2-2 libmad0 libmagic1 libmng1 libmp3lame0 
  libmx4j-java libncurses5 libncursesw5 libnet-dns-perl libnewt0.52 libnfsidmap2 libnotify1 libnspr4-0d libnss-mdns libnss3-1d 
  libogg0 liboil0.3 libopenexr6 liborbit2 libpam-modules libpam-runtime libpam0g libpango1.0-0 libpango1.0-common libpaper1 
  libpci3 libpcre3 libpcsclite1 libperl5.10 libpixman-1-0 libpng12-0 libpopt0 libpostproc51 libpq5 libpulse0 libreadline5 
  librecode0 libregexp-java librpcsecgss3 librsvg2-2 librsvg2-common libsane libsane-extras libsasl2-2 libschroedinger-1.0-0 
  libsdl1.2debian libsdl1.2debian-alsa libselinux1 libsensors4 libsepol1 libsigc++-2.0-0c2a libslang2 libslp1 libsm6 
  libsmbclient libsnmp-base libsnmp15 libsocket6-perl libsoup2.4-1 libsqlite3-0 libss2 libssl0.9.8 libstartup-notification0 
  libstdc++6 libsvga1 libsysfs2 libtag1c2a libtagc0 libtasn1-3 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl 
  libthai-data libthai0 libtheora0 libthunar-vfs-1-2 libtiff4 libts-0.0-0 liburi-perl libusb-0.1-4 libuuid1 libvorbis0a 
  libvorbisenc2 libvte-common libvte9 libwavpack1 libwbclient0 libwmf0.2-7 libwpg-0.1-1 libwrap0 libwww-perl libx11-6 
  libx11-data libx86-1 libxau6 libxaw7 libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xv0 libxcb1 
  libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfce4util4 libxfcegui4-4 libxfixes3 libxfont1 libxft2 libxi6 
  libxine1 libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins libxine1-plugins libxine1-x libxinerama1 
  libxkbfile1 libxmu6 libxmuu1 libxpm4 libxrandr2 libxrender1 libxslt1.1 libxss1 libxt6 libxtst6 libxv1 libxvidcore4 libxvmc1 
  libxxf86dga1 libxxf86vm1 linux-image-2.6-amd64 linux-sound-base locales login logrotate lp-solve lsb-base lsof lvm2 lwresd 
  m4 mailagent makedev man-db manpages manpages-fr manpages-fr-extra mawk mc menu mime-support mktemp mlocate mlock 
  module-init-tools mount mousepad mutt myspell-en-us myspell-fr-gut nano ncurses-base ncurses-bin ncurses-term net-tools 
  netatalk netbase nfs-common nfs-kernel-server ntfs-3g nvclock openbsd-inetd openoffice.org openoffice.org-base 
  openoffice.org-base-core openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw 
  openoffice.org-filter-mobiledev openoffice.org-gcj openoffice.org-gtk openoffice.org-help-en-us openoffice.org-help-fr 
  openoffice.org-impress openoffice.org-java-common openoffice.org-l10n-fr openoffice.org-math openoffice.org-officebean 
  openoffice.org-report-builder-bin openoffice.org-style-andromeda openoffice.org-style-tango openoffice.org-thesaurus-en-us 
  openoffice.org-writer openprinting-ppds openssh-client openssh-server openssl orage passwd patch pciutils pcmciautils perl 
  perl-base perl-modules php5-common pm-utils popularity-contest portmap postgresql postgresql-client postgresql-client-common 
  postgresql-common postgresql-contrib postgresql-doc powermgmt-base powertop printconf procmail procps psmisc psutils python 
  python-cairo python-central python-dbus python-foomatic python-glade2 python-gnome2 python-gobject python-gtk2 
  python-imaging python-ipy python-minimal python-pyorbit python-support python2.5 python2.5-minimal qpopper radeontool 
  readline-common reportbug rsyslog sa-exim samba samba-common samba-doc sed sgml-base sgml-data shared-mime-info 
  smartmontools smbclient smbfs spamassassin spamc ssl-cert sudo swat swfdec-mozilla sysv-rc sysvinit sysvinit-utils tar 
  tasksel tasksel-data tcpd texinfo thunar thunar-data thunar-media-tags-plugin time toshset traceroute ttf-dejavu 
  ttf-dejavu-core ttf-dejavu-extra ttf-liberation ttf-opensymbol tzdata ucf udev update-inetd usbutils util-linux uw-imapd 
  vbetool vim-common vim-tiny w3m wamerican wfrench wget whiptail whois winbind wireless-tools wpasupplicant x11-apps 
  x11-common x11-session-utils x11-utils x11-xfs-utils x11-xkb-utils x11-xserver-utils xauth xbitmaps xdg-utils xfce4 
  xfce4-battery-plugin xfce4-clipman-plugin xfce4-cpufreq-plugin xfce4-cpugraph-plugin xfce4-diskperf-plugin 
  xfce4-fsguard-plugin xfce4-genmon-plugin xfce4-goodies xfce4-mailwatch-plugin xfce4-mixer xfce4-mount-plugin 
  xfce4-netload-plugin xfce4-notes-plugin xfce4-panel xfce4-quicklauncher-plugin xfce4-sensors-plugin xfce4-session 
  xfce4-smartbookmark-plugin xfce4-systemload-plugin xfce4-terminal xfce4-utils xfce4-verve-plugin xfce4-wavelan-plugin 
  xfce4-weather-plugin xfdesktop4 xfdesktop4-data xfonts-100dpi xfonts-75dpi xfonts-base xfonts-encodings xfonts-intl-european 
  xfonts-scalable xfonts-utils xfprint4 xfwm4 xinit xkb-data xml-core xorg xsane xsane-common xserver-xorg xserver-xorg-core 
  xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd xserver-xorg-input-mouse xserver-xorg-input-synaptics 
  xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati 
  xserver-xorg-video-chips xserver-xorg-video-cirrus xserver-xorg-video-dummy xserver-xorg-video-fbdev 
  xserver-xorg-video-glint xserver-xorg-video-i128 xserver-xorg-video-intel xserver-xorg-video-mach64 xserver-xorg-video-mga 
  xserver-xorg-video-neomagic xserver-xorg-video-nv xserver-xorg-video-openchrome xserver-xorg-video-r128 
  xserver-xorg-video-radeon xserver-xorg-video-radeonhd xserver-xorg-video-rendition xserver-xorg-video-s3 
  xserver-xorg-video-s3virge xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis 
  xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-tga xserver-xorg-video-trident xserver-xorg-video-tseng 
  xserver-xorg-video-vesa xserver-xorg-video-vmware xserver-xorg-video-voodoo xterm zlib1g 
Les paquets suivants sont RECOMMANDÉS mais ne seront pas installés :
  bzip2 gamin gcc gdm-themes hddtemp libapache2-reload-perl libatk1.0-data libatm1 libbsd-resource-perl libc6-dev libfribidi0 
  libglib2.0-data libgtk2.0-bin libhtml-format-perl libio-socket-inet6-perl liblog4j1.2-java-gcj libmail-spf-perl 
  libmailtools-perl libnss-lwres libpam-gnome-keyring libpaper-utils lm-sensors make nmap openoffice.org-emailmerge 
  openoffice.org-filter-binfilter pconf-detect rc re2c uuid-runtime wdiff xfwm4-themes xnest xserver-xephyr zenity 
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] 
&lt;/code&gt;

En fonction de votre connexion ça peut prendre très longtemps, et être interrompu (à 500KB/s une demi-heure à 50 KB/s c'est plusieurs heures...).
Un conseil, si vous n'êtes pas sûr de votre connexion, et si vous ne voulez pas que l'upgrade plante en cours de route pour un pb de réseau, téléchargez d'abord les paquets sur votre machine...

&lt;code&gt;
# aptitude -d safe-upgrade (apt-get -d upgrade)
...
 762Mo téléchargés en 1h9min37s (182ko/s)                                                          
Lecture des listes de paquets... Fait             
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait
&lt;/code&gt;

Puis

&lt;code&gt;
# aptitude safe-upgrade (apt-get upgrade)
...
690 paquets mis à jour, 295 nouvellement installés, 89 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 0o/762Mo d'archives. Après dépaquetage, 636Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] y
&lt;/code&gt;

=== Déroulement ===

Vous aurez à répondre à quelques questions (fichiers de configuration et de scripts qui pourraient être modifiés)
Dans le doute choisissez les options par défaut, mais prenez le temps de lire tous les messages, et si nécessaire, prenez des notes.

Sans le téléchargement des fichiers, comptez un peu plus d'une heure pour la mise à niveau.

[[Fichier:Snapshot4.jpeg]]

[[Fichier:Snapshot5.jpeg]]

[[Fichier:Snapshot6.jpeg]]

[[Fichier:Snapshot7.jpeg]]

[[Fichier:Snapshot9.jpeg]]

[[Fichier:Snapshot11.jpeg]]

[[Fichier:Snapshot13.jpeg]]

[[Fichier:Snapshot14.jpeg]]

[[Fichier:Snapshot15.jpeg]]

[[Fichier:Snapshot16.jpeg]]

[[Fichier:Snapshot17.jpeg]]

Vous partirez d'une Lenny configurée, et donc de nombreux fichiers de configuration auront été modifiés par vos soins.
Il est judicieux de ne pas écraser vos configurations avec les fichiers par défaut proposés par les &quot;mainteneurs&quot; des paquets.
Vous aurez tout le loisir de regarder les modifications proposées, et ce qu'elles apportent, en regardant dans /usr/share/doc ou dans les contenus de vos deb téléchargés (dans /var/apt/archives)

[[Fichier:Snapshot18.jpeg]]

=== finalisation ===

Le safe-upgrade devrait se terminer par ceci :

&lt;code&gt;
Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 4 mises à jour restantes [-721].
&lt;/code&gt;

Vous pouvez maintenant lancer un &quot;full-upgrade&quot;

&lt;code&gt;
# aptitude full-upgrade (apt-get dist-upgrade)

...

4 paquets mis à jour, 13 nouvellement installés, 2 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 12,1Mo d'archives. Après dépaquetage, 14,3Mo seront utilisés.
Les paquets suivants ont des dépendances non satisfaites :
  libept0: Dépend: libapt-pkg-libc6.7-6-4.6 qui est un paquet virtuel
Les actions suivantes permettront de résoudre ces dépendances :

Supprimer les paquets suivants :
libept0

Le score est de 115

Accepter cette solution ? [Y/n/q/?]y

...

Écriture de l'information d'état étendu... Fait
Lecture des descriptions de tâches... Fait       

État actuel : 0 mise à jour restante [-4].
&lt;/code&gt;

Si tout s'est bien passé, il ne vous reste plus qu'a redémarrer la machine :

 # shutdown -r now

=== Grub2 ===

Si vous étiez sous Grub-legacy vous aurez certainement fait la bascule vers Grub2.

La première &quot;surprise&quot; qui vous attend donc (sauf si vous avez lu ce guide avant...) c'est le menu suivant :

[[Fichier:Snapshot19.jpeg]]

Si vous appuyez sur entrée, vous serez conduit vers le menu de Grub2.
Cette étape permet de vérifier que Grub2 est bien installé, et de le tester.

[[Fichier:Snapshot20.jpeg]]

Si cela fonctionne, une des premières choses à faire sera de confirmer l'installation de Grub2 en tapant dans une console la commande suivante :

 # upgrade-from-grub-legacy

=== LVM ===

Problème rencontré lors de la mise à niveau avec LVM...
Le système s'est mélangé les pédales dans l'attribution des partitions.
Résultat :

[[Fichier:Snapshot21.jpeg]]

Voici où se situe le problème :

&lt;code&gt;
$ vdir /dev/l2s/
total 0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 home -&gt; ../dm-5
lrwxrwxrwx 1 root root 7 25 nov.  18:28 root -&gt; ../dm-0
lrwxrwxrwx 1 root root 7 25 nov.  18:28 swap_1 -&gt; ../dm-1
lrwxrwxrwx 1 root root 7 25 nov.  18:28 tmp -&gt; ../dm-4
lrwxrwxrwx 1 root root 7 25 nov.  18:28 usr -&gt; ../dm-2
lrwxrwxrwx 1 root root 7 25 nov.  18:28 var -&gt; ../dm-3
&lt;/code&gt;
&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
# /dev/hda1	/boot	ext2	defaults	0	2
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-1	/usr	ext3	defaults	0	2
# /dev/hdb1	/var	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-3	none	swap	sw	0	0
# /dev/hdc	/media/cdrom0	udf,iso9660	user,noauto	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

Je ne sais pour quelle raison LVM à changé la numérotation des partitions... /usr est passé en dm-1 alors qu'il était en dm-2 et la swap en dm-3 alors qu'elle était être en dm-1
Il suffit de modifier le fichier /etc/fstab pour qu'il reflète à nouveau correctement vos partitions, et le tour est joué :

&lt;code&gt;
$ cat /etc/fstab
proc	/proc	proc	defaults	0	0
/dev/dm-0	/	ext3	errors=remount-ro	0	1
UUID=30b68103-dc94-4975-8db2-920e29b9b565	/boot	ext2	defaults	0	2
/dev/dm-5	/home	ext3	defaults	0	2
/dev/dm-4	/tmp	ext3	defaults	0	2
/dev/dm-2	/usr	ext3	defaults	0	2
UUID=74dc1a68-8fa3-4b08-a6d0-585692cd4f7c	/var	ext3	defaults	0	2
/dev/dm-1	none	swap	sw	0	0
/dev/cdrom	/media/cdrom0	udf,iso9660	user,noauto	0	0
&lt;/code&gt;

== Bienvenu sur Squeeze ==

 laurent@lenny2squeeze:~$ uname -a
 Linux lenny2squeeze 2.6.32-5-amd64 #1 SMP Sat Oct 30 14:18:21 UTC 2010 x86_64 GNU/Linux

[[Fichier:Snapshot25.jpeg]]

A venir... Upgrade de Squeeze à ????

----
[[Utilisateur:Lol|Lol]] 25 novembre 2010 à 15:55 (EAT)
[[Catégorie:Installation]]</text>
      <sha1>doayx0wn1pvx5g51n3kvyecseebm4t4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Mise à niveau de Squeeze vers Wheezy</title>
    <ns>0</ns>
    <id>1343</id>
    <revision>
      <id>5800</id>
      <timestamp>2014-09-06T02:43:42Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>Page créée avec « Cet article a pour but de vous guider lors de la mise-à-jour de Debian 6 « Squeeze » vers Debian 7 « Wheezy ».  Prévoyez avant toute chose d’avoir du temps dev... »</comment>
      <text xml:space="preserve" bytes="10498">Cet article a pour but de vous guider lors de la mise-à-jour de Debian 6 « Squeeze » vers Debian 7 « Wheezy ».

Prévoyez avant toute chose d’avoir du temps devant vous, et d’être au calme.

L’outil de référence de ce guide sera apt-get, mais il peut probablement être adapté de façon à utiliser aptitude.

https://www.debian.org/releases/wheezy/amd64/release-notes/ch-upgrading.fr.html#upgradingpackages

J’ai choisi une Squeeze avec toutes les options de tasksel activées afin de faire un tour d’horizon le plus vaste possible des problèmes qui pourraient survenir.
L’environnement graphique est GNOME (environnement par défaut pour Squeeze et Wheezy).

[[Fichier:Squeeze-tasksel.png]]

== Pré-requis ==

=== Une bonne sauvegarde ===

Vous n’avez AUCUNE garantie que la mise à niveau se passe bien, alors, quelle que soit la méthode que vous emploierez, une sauvegarde est le minimum que vous puissiez faire avant de vous lancer dans l'aventure..

Avec dd, dump ou simplement cp SAUVEGARDEZ !

=== Un système à jour ! ===

Le fichier sources.list précédant la mise à niveau :

&lt;code&gt;
# Debian Squeeze
deb http://ftp.fr.debian.org/debian/ squeeze main
deb http://security.debian.org/ squeeze/updates main
deb http://ftp.fr.debian.org/debian/ squeeze-updates main
&lt;/code&gt;

 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

=== De l’espace ! ===

La mise-à-jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/), ainsi que sur la partition où se trouve /var pour le stockage des paquets téléchargés.

Pour info une mise-à-jour &quot;lourde&quot; se soldera par le téléchargement d'environ 1Go…

Pour connaître l’espace libre de votre partition racine :

 $ df -H
 Sys. de fichiers	Taille	Uti.		Disp.	Uti%	Monté sur
 '''/dev/sda1		19G		3,6G	15G		20%		/'''
 tmpfs			502M	0		502M	0%		/lib/init/rw
 udev			500M	120K	500M	1%		/dev
 tmpfs			502M	0		502M	0%		/dev/shm
 /dev/sr0			4,4G	4,4G	0		100%	/media/cdrom0

'''Si vous disposez de plus de 50 % d’espace libre vous pouvez passer à l’étape suivante'''.

Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Si cela ne suffit toujours pas, il faut envisager d’ajouter un disque à votre système, ou de procéder à une mise-à-jour par étapes successives (en mettant à jour les paquets progressivement et en nettoyant à chaque étape)

=== Les pilotes de la carte graphique ===

Afin de ne pas avoir de mauvaise surprise avec le serveur X, modifiez le cas échéant votre xorg.conf afin d'utiliser des pilotes libres fournis par Debian plutôt que les pilotes propriétaires.

Eventuellement utilisez les pilotes &quot;vesa&quot;

Dans votre fichier /etc/X11/xorg.conf

&lt;code&gt;
Section &quot;Device&quot;
    Identifier     &quot;Device0&quot;
    Driver         &quot;vesa&quot;
EndSection
&lt;/code&gt;

Si vous êtes sûr de vous, n’en faites rien, mais prévoyez une réinstallation des pilotes avant le premier redémarrage.

=== Le fichier sources.list ===

Créons un nouveau sources.list que nous placerons dans /etc/apt/sources.list.d
Nous prenons dores et déjà la bonne habitude d'utiliser ce répertoire qui est devenu celui par défaut pour mettre les fichiers contenant les dépôts.

Modifions le fichier sources.list pour y ajouter les dépôts de Wheezy.
Il n’est pas encore utile d’en effacer les dépôts de Squeeze, mieux vaut pour ça attendre d’avoir terminé la mise-à-jour.

 # nano /etc/apt/sources.list

&lt;code&gt;
# Debian Squeeze
deb http://ftp.fr.debian.org/debian/ squeeze main
deb http://security.debian.org/ squeeze/updates main
deb http://ftp.fr.debian.org/debian/ squeeze-updates main

# Debian Wheezy
deb http://ftp.fr.debian.org/debian/ wheezy main
deb http://security.debian.org/ wheezy/updates main
deb http://ftp.fr.debian.org/debian/ wheezy-updates main
&lt;/code&gt;

== Préparation de la mise à niveau ==

Maintenant que nous sommes prêts, nous pouvons lancer la mise-à-jour :

Mise-à-jour de la liste des paquets :

 # apt-get update

=== Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]] ===

 E: Dynamic MMap ran out of room

 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Relancez la mise-à-jour, il ne devrait plus y avoir d'erreurs.

 # apt-get update

=== Problèmes de dépendances ===

Vous ne pourrez pas faire le passage de Squeeze à Wheezy tant que subsisteront des problèmes de dépendances…

Voici deux exemples de problèmes de dépendances, et la manière de les régler :

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  xfce4-mixer-oss: Est en conflit avec: xfce4-mixer-alsa mais 4.4.2-3 est installé.
  foomatic-db: Est en conflit avec: foomatic-db-hpijs mais 20080211-1 est installé.
  xfce4-mixer-alsa: Est en conflit avec: xfce4-mixer-oss mais 4.4.2-3 doit être installé.

# aptitude install foomatic-db xfce4-mixer-alsa
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Lecture des descriptions de tâches... Fait  
Les NOUVEAUX paquets suivants vont être installés : 
  libopenjpeg2{a} libpoppler5{a} min12xxw{a} pnm2ppa{a} 
Les paquets suivants seront ENLEVÉS : 
  foomatic-db-hpijs{a} 
Les paquets suivants seront mis à jour : 
  fontconfig-config foomatic-db foomatic-db-engine foomatic-filters libfontconfig1 libjpeg62 libxml2 poppler-utils 
8 paquets mis à jour, 4 nouvellement installés, 1 à enlever et 728 non mis à jour.
Il est nécessaire de télécharger 4722ko d'archives. Après dépaquetage, 18,2Mo seront libérés.
Voulez-vous continuer ? [Y/n/?] o
...
État actuel : 728 mises à jour restantes [-8].
&lt;/code&gt;

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  libatlas3gf-base: Est en conflit avec: libblas3gf (&lt; 1.2-5) mais 1.2-2 est installé et a été conservé
                    Est en conflit avec: liblapack3gf (&lt; 3.2.1-4) mais 3.1.1-1 est installé et a été conservé
  rarian-compat: Est en conflit avec: scrollkeeper (&lt; 0.4) mais 0.3.14-16 est installé et a été conservé

# aptitude install libatlas3gf-base scrollkeeper
...
Les actions suivantes permettront de résoudre ces dépendances :

Mettre à jour les paquets suivants :
libblas3gf [1.2-2 (stable, now) -&gt; 1.2-8 (testing)]
liblapack3gf [3.1.1-1 (stable, now) -&gt; 3.2.1-8 (testing)]

Le score est de 70

Accepter cette solution ? [Y/n/q/?] y
...
État actuel : 725 mises à jour restantes [-3].
&lt;/code&gt;

En cas de doute n'hésitez pas à demander un avis [https://www.debian-fr.org/ sur le forum].

=== stopper le serveur X ===

'''IMPORTANT''' : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # service gdm3 stop

Si vous faites votre mise à niveau avec le serveur X lancé, vous risquez [https://www.debian-fr.org/upgrade-lenny-squeeze-gnome-minimaliste-t30744.html cette mésaventure]

== Lancez la mise à niveau ==

=== A propos de udev et du noyau ===

Lors de la mise-à-jour de Lenny vers Squeeze il était fortement recommandé de mettre à jour le noyau et udev avant de se lancer dans la mise à niveau du reste du système.
Ce problème ne se pose plus lors de la mise-à-jour de Squeeze vers Wheezy.

=== Mise à niveau ===

 # apt-get upgrade
 # apt-get dist-upgrade

En fonction de votre connexion ça peut prendre très longtemps, et être interrompu si votre connexion n’est pas stable (comptez environ 1 Go de paquets à télécharger pour un environnement GNOME complet).

Un conseil si vous n’êtes pas sûr de votre connexion, et si vous ne voulez pas que la mise-à-jour soit interrompue en cours de route pour un problème de réseau : téléchargez d'abord les paquets sur votre machine en lançant au préalable les deux commandes précédentes avec l’option '-d'.

Une fois la totalité des paquets téléchargés, vous pouvez relancer les commandes de mise-à-jour sans l’option '-d' pour effectuer la mise-à-jour réelle.

=== Déroulement ===

Vous aurez à répondre à quelques questions (au sujet de fichiers de configuration et de scripts qui ont pu être modifiés depuis leur installation).
Dans le doute choisissez les options par défaut, mais prenez le temps de lire tous les messages, et si nécessaire prenez des notes.

Sans le téléchargement des fichiers, comptez environ une heure pour la mise à niveau (ça peut être beaucoup plus rapide sur une machine récente, mais mieux vaut prévoir large).

[[Fichier:Squeeze2wheezy-1.png]]

[[Fichier:Squeeze2wheezy-2.png]]

[[Fichier:Squeeze2wheezy-3.png]]

Vous partirez d’une Squeeze configurée, et donc de nombreux fichiers de configuration auront été modifiés par vos soins.
Il est judicieux de ne pas écraser vos configurations avec les fichiers par défaut proposés par les &quot;mainteneurs&quot; des paquets.
Vous aurez tout le loisir de regarder les modifications proposées, et ce qu’elles apportent, en regardant sous /usr/share/doc ou dans les contenus de vos deb téléchargés (sous /var/cache/apt/archives).

=== « Impossible de faire une configuration immédiate » ===

Dans certains cas, la commande 'apt-get dist-upgrade' peut échouer après le téléchargement des paquets avec : 

 E: Impossible d'effectuer la configuration immédiate de « paquet ». Veuillez consulter la page de manuel apt.conf(5) et notamment la section à propos de APT::Immediate-Configure, pour plus d'informations.

Si vous rencontrez cette erreur, lancez la commande suivante pour pouvoir continuer la mise-à-jour :

 apt-get dist-upgrade -o APT::Immediate-Configure=0

Si tout s'est bien passé, il ne vous reste plus qu'a redémarrer la machine :

 # shutdown -r now

== Bienvenu sur Wheezy ==

 dave@HAL9000VM:~$ uname -a
 Linux HAL9000VM 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u3 x86_64 GNU/Linux

[[Fichier:Wheezy-gdm3.png]]

-----

[https://www.debian.org/releases/wheezy/amd64/release-notes/ch-upgrading.fr.html source sur debian.org : Mises à niveau depuis Debian 6.0 (Squeeze)]

[[Mise_à_niveau_(upgrade)_de_Lenny_à_Squeeze|source interne : Mise à niveau (upgrade) de Lenny à Squeeze]]

-----

Création de l’article :

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 6 septembre 2014 à 04:43 (CEST)

[[Catégorie:Installation]]</text>
      <sha1>te2qoui6bwx7k9s6rw3adywcghfbtuc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5802</id>
      <parentid>5800</parentid>
      <timestamp>2014-09-06T02:49:04Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="10492">Cet article a pour but de vous guider lors de la mise-à-jour de Debian 6 « Squeeze » vers Debian 7 « Wheezy ».

Prévoyez avant toute chose d’avoir du temps devant vous, et d’être au calme.

L’outil de référence de ce guide sera apt-get, mais il peut probablement être adapté de façon à utiliser aptitude.

https://www.debian.org/releases/wheezy/amd64/release-notes/ch-upgrading.fr.html#upgradingpackages

J’ai choisi une Squeeze avec toutes les options de tasksel activées afin de faire un tour d’horizon le plus vaste possible des problèmes qui pourraient survenir.
L’environnement graphique est GNOME (environnement par défaut pour Squeeze et Wheezy).

[[Fichier:Squeeze-tasksel.png]]

== Pré-requis ==

=== Une bonne sauvegarde ===

Vous n’avez AUCUNE garantie que la mise à niveau se passe bien, alors, quelle que soit la méthode que vous emploierez, une sauvegarde est le minimum que vous puissiez faire avant de vous lancer dans l'aventure..

Avec dd, dump ou simplement cp SAUVEGARDEZ !

=== Un système à jour ! ===

Le fichier sources.list précédant la mise à niveau :

&lt;code&gt;
# Debian Squeeze
deb http://ftp.fr.debian.org/debian/ squeeze main
deb http://security.debian.org/ squeeze/updates main
deb http://ftp.fr.debian.org/debian/ squeeze-updates main
&lt;/code&gt;

 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

=== De l’espace ! ===

La mise-à-jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/), ainsi que sur la partition où se trouve /var pour le stockage des paquets téléchargés.

Pour info une mise-à-jour &quot;lourde&quot; se soldera par le téléchargement d'environ 1Go…

Pour connaître l’espace libre de votre partition racine :

 $ df -H
 Sys. de fichiers	Taille	Uti.		Disp.	Uti%	Monté sur
 '''/dev/sda1		19G		3,6G	15G		20%		/'''
 tmpfs			502M	0		502M	0%		/lib/init/rw
 udev			500M	120K	500M	1%		/dev
 tmpfs			502M	0		502M	0%		/dev/shm
 /dev/sr0			4,4G	4,4G	0		100%	/media/cdrom0

'''Si vous disposez de plus de 50 % d’espace libre vous pouvez passer à l’étape suivante'''.

Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Si cela ne suffit toujours pas, il faut envisager d’ajouter un disque à votre système, ou de procéder à une mise-à-jour par étapes successives (en mettant à jour les paquets progressivement et en nettoyant à chaque étape)

=== Les pilotes de la carte graphique ===

Afin de ne pas avoir de mauvaise surprise avec le serveur X, modifiez le cas échéant votre xorg.conf afin d'utiliser des pilotes libres fournis par Debian plutôt que les pilotes propriétaires.

Eventuellement utilisez les pilotes &quot;vesa&quot;

Dans votre fichier /etc/X11/xorg.conf

&lt;code&gt;
Section &quot;Device&quot;
    Identifier     &quot;Device0&quot;
    Driver         &quot;vesa&quot;
EndSection
&lt;/code&gt;

Si vous êtes sûr de vous, n’en faites rien, mais prévoyez une réinstallation des pilotes avant le premier redémarrage.

=== Le fichier sources.list ===

Créons un nouveau sources.list que nous placerons dans /etc/apt/sources.list.d
Nous prenons dores et déjà la bonne habitude d'utiliser ce répertoire qui est devenu celui par défaut pour mettre les fichiers contenant les dépôts.

Modifions le fichier sources.list pour y ajouter les dépôts de Wheezy.
Il n’est pas encore utile d’en effacer les dépôts de Squeeze, mieux vaut pour ça attendre d’avoir terminé la mise-à-jour.

 # nano /etc/apt/sources.list

&lt;code&gt;
# Debian Squeeze
deb http://ftp.fr.debian.org/debian/ squeeze main
deb http://security.debian.org/ squeeze/updates main
deb http://ftp.fr.debian.org/debian/ squeeze-updates main

# Debian Wheezy
deb http://ftp.fr.debian.org/debian/ wheezy main
deb http://security.debian.org/ wheezy/updates main
deb http://ftp.fr.debian.org/debian/ wheezy-updates main
&lt;/code&gt;

== Préparation de la mise à niveau ==

Maintenant que nous sommes prêts, nous pouvons lancer la mise-à-jour :

Mise-à-jour de la liste des paquets :

 # apt-get update

=== Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]] ===

 E: Dynamic MMap ran out of room

 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Relancez la mise-à-jour, il ne devrait plus y avoir d'erreurs.

 # apt-get update

=== Problèmes de dépendances ===

Vous ne pourrez pas faire le passage de Squeeze à Wheezy tant que subsisteront des problèmes de dépendances…

Voici deux exemples de problèmes de dépendances, et la manière de les régler :

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  xfce4-mixer-oss: Est en conflit avec: xfce4-mixer-alsa mais 4.4.2-3 est installé.
  foomatic-db: Est en conflit avec: foomatic-db-hpijs mais 20080211-1 est installé.
  xfce4-mixer-alsa: Est en conflit avec: xfce4-mixer-oss mais 4.4.2-3 doit être installé.

# aptitude install foomatic-db xfce4-mixer-alsa
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Lecture des descriptions de tâches... Fait  
Les NOUVEAUX paquets suivants vont être installés : 
  libopenjpeg2{a} libpoppler5{a} min12xxw{a} pnm2ppa{a} 
Les paquets suivants seront ENLEVÉS : 
  foomatic-db-hpijs{a} 
Les paquets suivants seront mis à jour : 
  fontconfig-config foomatic-db foomatic-db-engine foomatic-filters libfontconfig1 libjpeg62 libxml2 poppler-utils 
8 paquets mis à jour, 4 nouvellement installés, 1 à enlever et 728 non mis à jour.
Il est nécessaire de télécharger 4722ko d'archives. Après dépaquetage, 18,2Mo seront libérés.
Voulez-vous continuer ? [Y/n/?] o
...
État actuel : 728 mises à jour restantes [-8].
&lt;/code&gt;

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  libatlas3gf-base: Est en conflit avec: libblas3gf (&lt; 1.2-5) mais 1.2-2 est installé et a été conservé
                    Est en conflit avec: liblapack3gf (&lt; 3.2.1-4) mais 3.1.1-1 est installé et a été conservé
  rarian-compat: Est en conflit avec: scrollkeeper (&lt; 0.4) mais 0.3.14-16 est installé et a été conservé

# aptitude install libatlas3gf-base scrollkeeper
...
Les actions suivantes permettront de résoudre ces dépendances :

Mettre à jour les paquets suivants :
libblas3gf [1.2-2 (stable, now) -&gt; 1.2-8 (testing)]
liblapack3gf [3.1.1-1 (stable, now) -&gt; 3.2.1-8 (testing)]

Le score est de 70

Accepter cette solution ? [Y/n/q/?] y
...
État actuel : 725 mises à jour restantes [-3].
&lt;/code&gt;

En cas de doute n'hésitez pas à demander un avis [https://www.debian-fr.org/ sur le forum].

=== stopper le serveur X ===

'''IMPORTANT''' : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # service gdm3 stop

Si vous faites votre mise à niveau avec le serveur X lancé, vous risquez [https://www.debian-fr.org/upgrade-lenny-squeeze-gnome-minimaliste-t30744.html cette mésaventure]

== Lancez la mise à niveau ==

=== A propos de udev et du noyau ===

Lors de la mise-à-jour de Lenny vers Squeeze il était fortement recommandé de mettre à jour le noyau et udev avant de se lancer dans la mise à niveau du reste du système.
Ce problème ne se pose plus lors de la mise-à-jour de Squeeze vers Wheezy.

=== Mise à niveau ===

 # apt-get upgrade
 # apt-get dist-upgrade

En fonction de votre connexion ça peut prendre très longtemps, et être interrompu si votre connexion n’est pas stable (comptez environ 1 Go de paquets à télécharger pour un environnement GNOME complet).

Un conseil si vous n’êtes pas sûr de votre connexion, et si vous ne voulez pas que la mise-à-jour soit interrompue en cours de route pour un problème de réseau : téléchargez d'abord les paquets sur votre machine en lançant au préalable les deux commandes précédentes avec l’option '-d'.

Une fois la totalité des paquets téléchargés, vous pouvez relancer les commandes de mise-à-jour sans l’option '-d' pour effectuer la mise-à-jour réelle.

=== « Impossible de faire une configuration immédiate » ===

Dans certains cas, la commande 'apt-get dist-upgrade' peut échouer après le téléchargement des paquets avec : 

 E: Impossible d'effectuer la configuration immédiate de « paquet ». Veuillez consulter la page de manuel apt.conf(5) et notamment la section à propos de APT::Immediate-Configure, pour plus d'informations.

Si vous rencontrez cette erreur, lancez la commande suivante pour pouvoir continuer la mise-à-jour :

 apt-get dist-upgrade -o APT::Immediate-Configure=0

=== Déroulement ===

Vous aurez à répondre à quelques questions (au sujet de fichiers de configuration et de scripts qui ont pu être modifiés depuis leur installation).
Dans le doute choisissez les options par défaut, mais prenez le temps de lire tous les messages, et si nécessaire prenez des notes.

Sans le téléchargement des fichiers, comptez environ une heure pour la mise à niveau (ça peut être beaucoup plus rapide sur une machine récente, mais mieux vaut prévoir large).

[[Fichier:Squeeze2wheezy-1.png]]

[[Fichier:Squeeze2wheezy-2.png]]

[[Fichier:Squeeze2wheezy-3.png]]

Vous partirez d’une Squeeze configurée, et donc de nombreux fichiers de configuration auront été modifiés par vos soins.
Il est judicieux de ne pas écraser vos configurations avec les fichiers par défaut proposés par les &quot;mainteneurs&quot; des paquets.
Vous aurez tout le loisir de regarder les modifications proposées, et ce qu’elles apportent, en regardant sous /usr/share/doc ou dans les contenus de vos deb téléchargés (sous /var/cache/apt/archives).

Si tout s'est bien passé, il ne vous reste plus qu'a redémarrer la machine :

 # shutdown -r now

== Bienvenu sur Wheezy ==

 dave@HAL9000VM:~$ uname -a
 Linux HAL9000VM 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u3 x86_64 GNU/Linux

[[Fichier:Wheezy-gdm3.png]]

-----

[https://www.debian.org/releases/wheezy/amd64/release-notes/ch-upgrading.fr.html source sur debian.org : Mises à niveau depuis Debian 6.0 (Squeeze)]

[[Mise_à_niveau_(upgrade)_de_Lenny_à_Squeeze|source interne : Mise à niveau (upgrade) de Lenny à Squeeze]]

-----

Création de l’article :

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 6 septembre 2014 à 04:43 (CEST)

[[Catégorie:Installation]]</text>
      <sha1>a0saz6olqgwjxcjrseci6nuorznj6va</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5803</id>
      <parentid>5802</parentid>
      <timestamp>2014-09-06T03:15:48Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="10738">Cet article a pour but de vous guider lors de la mise-à-jour de Debian 6 « Squeeze » vers Debian 7 « Wheezy ».

Prévoyez avant toute chose d’avoir du temps devant vous, et d’être au calme.

L’outil de référence de ce guide sera apt-get, mais il peut probablement être adapté de façon à utiliser aptitude.

https://www.debian.org/releases/wheezy/amd64/release-notes/ch-upgrading.fr.html#upgradingpackages

J’ai choisi une Squeeze avec toutes les options de tasksel activées afin de faire un tour d’horizon le plus vaste possible des problèmes qui pourraient survenir.
L’environnement graphique est GNOME (environnement par défaut pour Squeeze et Wheezy).

[[Fichier:Squeeze-tasksel.png]]

== Pré-requis ==

=== Une bonne sauvegarde ===

Vous n’avez AUCUNE garantie que la mise à niveau se passe bien, alors, quelle que soit la méthode que vous emploierez, une sauvegarde est le minimum que vous puissiez faire avant de vous lancer dans l'aventure..

Avec dd, dump ou simplement cp SAUVEGARDEZ !

=== Un système à jour ! ===

Le fichier sources.list précédant la mise à niveau :

&lt;code&gt;
# Debian Squeeze
deb http://ftp.fr.debian.org/debian/ squeeze main
deb http://security.debian.org/ squeeze/updates main
deb http://ftp.fr.debian.org/debian/ squeeze-updates main
&lt;/code&gt;

 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

=== De l’espace ! ===

La mise-à-jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/), ainsi que sur la partition où se trouve /var pour le stockage des paquets téléchargés.

Pour info une mise-à-jour &quot;lourde&quot; se soldera par le téléchargement d'environ 1Go…

Pour connaître l’espace libre de votre partition racine :

 $ df -H
 Sys. de fichiers	Taille	Uti.		Disp.	Uti%	Monté sur
 '''/dev/sda1		19G		3,6G	15G		20%		/'''
 tmpfs			502M	0		502M	0%		/lib/init/rw
 udev			500M	120K	500M	1%		/dev
 tmpfs			502M	0		502M	0%		/dev/shm
 /dev/sr0			4,4G	4,4G	0		100%	/media/cdrom0

'''Si vous disposez de plus de 50 % d’espace libre vous pouvez passer à l’étape suivante'''.

Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Si cela ne suffit toujours pas, il faut envisager d’ajouter un disque à votre système, ou de procéder à une mise-à-jour par étapes successives (en mettant à jour les paquets progressivement et en nettoyant à chaque étape)

=== Les pilotes de la carte graphique ===

Afin de ne pas avoir de mauvaise surprise avec le serveur X, modifiez le cas échéant votre xorg.conf afin d'utiliser des pilotes libres fournis par Debian plutôt que les pilotes propriétaires.

Eventuellement utilisez les pilotes &quot;vesa&quot;

Dans votre fichier /etc/X11/xorg.conf

&lt;code&gt;
Section &quot;Device&quot;
    Identifier     &quot;Device0&quot;
    Driver         &quot;vesa&quot;
EndSection
&lt;/code&gt;

Si vous êtes sûr de vous, n’en faites rien, mais prévoyez une réinstallation des pilotes avant le premier redémarrage.

=== Le fichier sources.list ===

Créons un nouveau sources.list que nous placerons dans /etc/apt/sources.list.d
Nous prenons dores et déjà la bonne habitude d'utiliser ce répertoire qui est devenu celui par défaut pour mettre les fichiers contenant les dépôts.

Modifions le fichier sources.list pour y ajouter les dépôts de Wheezy.
Il n’est pas encore utile d’en effacer les dépôts de Squeeze, mieux vaut pour ça attendre d’avoir terminé la mise-à-jour.

 # nano /etc/apt/sources.list

&lt;code&gt;
# Debian Squeeze
deb http://ftp.fr.debian.org/debian/ squeeze main
deb http://security.debian.org/ squeeze/updates main
deb http://ftp.fr.debian.org/debian/ squeeze-updates main

# Debian Wheezy
deb http://ftp.fr.debian.org/debian/ wheezy main
deb http://security.debian.org/ wheezy/updates main
deb http://ftp.fr.debian.org/debian/ wheezy-updates main
&lt;/code&gt;

== Préparation de la mise à niveau ==

Maintenant que nous sommes prêts, nous pouvons lancer la mise-à-jour :

Mise-à-jour de la liste des paquets :

 # apt-get update

=== Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]] ===

 E: Dynamic MMap ran out of room

 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Relancez la mise-à-jour, il ne devrait plus y avoir d'erreurs.

 # apt-get update

=== Problèmes de dépendances ===

Vous ne pourrez pas faire le passage de Squeeze à Wheezy tant que subsisteront des problèmes de dépendances…

Voici deux exemples de problèmes de dépendances, et la manière de les régler :

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  xfce4-mixer-oss: Est en conflit avec: xfce4-mixer-alsa mais 4.4.2-3 est installé.
  foomatic-db: Est en conflit avec: foomatic-db-hpijs mais 20080211-1 est installé.
  xfce4-mixer-alsa: Est en conflit avec: xfce4-mixer-oss mais 4.4.2-3 doit être installé.

# aptitude install foomatic-db xfce4-mixer-alsa
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Lecture des descriptions de tâches... Fait  
Les NOUVEAUX paquets suivants vont être installés : 
  libopenjpeg2{a} libpoppler5{a} min12xxw{a} pnm2ppa{a} 
Les paquets suivants seront ENLEVÉS : 
  foomatic-db-hpijs{a} 
Les paquets suivants seront mis à jour : 
  fontconfig-config foomatic-db foomatic-db-engine foomatic-filters libfontconfig1 libjpeg62 libxml2 poppler-utils 
8 paquets mis à jour, 4 nouvellement installés, 1 à enlever et 728 non mis à jour.
Il est nécessaire de télécharger 4722ko d'archives. Après dépaquetage, 18,2Mo seront libérés.
Voulez-vous continuer ? [Y/n/?] o
...
État actuel : 728 mises à jour restantes [-8].
&lt;/code&gt;

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  libatlas3gf-base: Est en conflit avec: libblas3gf (&lt; 1.2-5) mais 1.2-2 est installé et a été conservé
                    Est en conflit avec: liblapack3gf (&lt; 3.2.1-4) mais 3.1.1-1 est installé et a été conservé
  rarian-compat: Est en conflit avec: scrollkeeper (&lt; 0.4) mais 0.3.14-16 est installé et a été conservé

# aptitude install libatlas3gf-base scrollkeeper
...
Les actions suivantes permettront de résoudre ces dépendances :

Mettre à jour les paquets suivants :
libblas3gf [1.2-2 (stable, now) -&gt; 1.2-8 (testing)]
liblapack3gf [3.1.1-1 (stable, now) -&gt; 3.2.1-8 (testing)]

Le score est de 70

Accepter cette solution ? [Y/n/q/?] y
...
État actuel : 725 mises à jour restantes [-3].
&lt;/code&gt;

En cas de doute n'hésitez pas à demander un avis [https://www.debian-fr.org/ sur le forum].

=== stopper le serveur X ===

'''IMPORTANT''' : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # service gdm3 stop

Si vous faites votre mise à niveau avec le serveur X lancé, vous risquez [https://www.debian-fr.org/upgrade-lenny-squeeze-gnome-minimaliste-t30744.html cette mésaventure]

== Lancez la mise à niveau ==

=== A propos de udev et du noyau ===

Lors de la mise-à-jour de Lenny vers Squeeze il était fortement recommandé de mettre à jour le noyau et udev avant de se lancer dans la mise à niveau du reste du système.
Ce problème ne se pose plus lors de la mise-à-jour de Squeeze vers Wheezy.

=== Mise à niveau ===

 # apt-get upgrade
 # apt-get dist-upgrade

En fonction de votre connexion ça peut prendre très longtemps, et être interrompu si votre connexion n’est pas stable (comptez environ 1 Go de paquets à télécharger pour un environnement GNOME complet).

Un conseil si vous n’êtes pas sûr de votre connexion, et si vous ne voulez pas que la mise-à-jour soit interrompue en cours de route pour un problème de réseau : téléchargez d'abord les paquets sur votre machine en lançant au préalable les deux commandes précédentes avec l’option '-d'.

Une fois la totalité des paquets téléchargés, vous pouvez relancer les commandes de mise-à-jour sans l’option '-d' pour effectuer la mise-à-jour réelle.

=== « Impossible de faire une configuration immédiate » ===

Dans certains cas, la commande 'apt-get dist-upgrade' peut échouer après le téléchargement des paquets avec : 

 E: Impossible d'effectuer la configuration immédiate de « paquet ». Veuillez consulter la page de manuel apt.conf(5) et notamment la section à propos de APT::Immediate-Configure, pour plus d'informations.

Si vous rencontrez cette erreur, lancez la commande suivante pour pouvoir continuer la mise-à-jour :

 apt-get dist-upgrade -o APT::Immediate-Configure=0

=== Déroulement ===

Vous aurez à répondre à quelques questions (au sujet de fichiers de configuration et de scripts qui ont pu être modifiés depuis leur installation).
Dans le doute choisissez les options par défaut, mais prenez le temps de lire tous les messages, et si nécessaire prenez des notes.

Sans le téléchargement des fichiers, comptez environ une heure pour la mise à niveau (ça peut être beaucoup plus rapide sur une machine récente, mais mieux vaut prévoir large).

[[Fichier:Squeeze2wheezy-1.png]]

[[Fichier:Squeeze2wheezy-2.png]]

[[Fichier:Squeeze2wheezy-3.png]]

Vous partirez d’une Squeeze configurée, et donc de nombreux fichiers de configuration auront été modifiés par vos soins.
Il est judicieux de ne pas écraser vos configurations avec les fichiers par défaut proposés par les &quot;mainteneurs&quot; des paquets.
Vous aurez tout le loisir de regarder les modifications proposées, et ce qu’elles apportent, en regardant sous /usr/share/doc ou dans les contenus de vos deb téléchargés (sous /var/cache/apt/archives).

Si tout s'est bien passé, il ne vous reste plus qu'a redémarrer la machine :

 # shutdown -r now

== Bienvenue sur Wheezy ==

 dave@HAL9000VM:~$ uname -a
 Linux HAL9000VM 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u3 x86_64 GNU/Linux

[[Fichier:Wheezy-gdm3.png]]

Après avoir vérifié que votre système tourne bien en Wheezy, c’est le moment de le nettoyer de ses paquets obsolètes :

 # apt-get autoremove --purge

Profitez-en aussi pour enlever les entrées &quot;squeeze&quot; de votre fichier sources.list.

-----

[https://www.debian.org/releases/wheezy/amd64/release-notes/ch-upgrading.fr.html source sur debian.org : Mises à niveau depuis Debian 6.0 (Squeeze)]

[[Mise_à_niveau_(upgrade)_de_Lenny_à_Squeeze|source interne : Mise à niveau (upgrade) de Lenny à Squeeze]]

-----

Création de l’article :

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 6 septembre 2014 à 04:43 (CEST)

[[Catégorie:Installation]]</text>
      <sha1>8glvaxomzkis080779vcvlv1yvllehb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5804</id>
      <parentid>5803</parentid>
      <timestamp>2014-09-06T07:39:33Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* De l’espace ! */ formatage retour &quot;df -H&quot;</comment>
      <text xml:space="preserve" bytes="10727">Cet article a pour but de vous guider lors de la mise-à-jour de Debian 6 « Squeeze » vers Debian 7 « Wheezy ».

Prévoyez avant toute chose d’avoir du temps devant vous, et d’être au calme.

L’outil de référence de ce guide sera apt-get, mais il peut probablement être adapté de façon à utiliser aptitude.

https://www.debian.org/releases/wheezy/amd64/release-notes/ch-upgrading.fr.html#upgradingpackages

J’ai choisi une Squeeze avec toutes les options de tasksel activées afin de faire un tour d’horizon le plus vaste possible des problèmes qui pourraient survenir.
L’environnement graphique est GNOME (environnement par défaut pour Squeeze et Wheezy).

[[Fichier:Squeeze-tasksel.png]]

== Pré-requis ==

=== Une bonne sauvegarde ===

Vous n’avez AUCUNE garantie que la mise à niveau se passe bien, alors, quelle que soit la méthode que vous emploierez, une sauvegarde est le minimum que vous puissiez faire avant de vous lancer dans l'aventure..

Avec dd, dump ou simplement cp SAUVEGARDEZ !

=== Un système à jour ! ===

Le fichier sources.list précédant la mise à niveau :

&lt;code&gt;
# Debian Squeeze
deb http://ftp.fr.debian.org/debian/ squeeze main
deb http://security.debian.org/ squeeze/updates main
deb http://ftp.fr.debian.org/debian/ squeeze-updates main
&lt;/code&gt;

 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

=== De l’espace ! ===

La mise-à-jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/), ainsi que sur la partition où se trouve /var pour le stockage des paquets téléchargés.

Pour info une mise-à-jour &quot;lourde&quot; se soldera par le téléchargement d'environ 1Go…

Pour connaître l’espace libre de votre partition racine :

 $ df -H
 Sys. de fichiers	Taille	Uti.	Disp.	Uti%	Monté sur
 '''/dev/sda1		19G	3,6G	15G	20%	/'''
 tmpfs			502M	0	502M	0%	/lib/init/rw
 udev			500M	120K	500M	1%	/dev
 tmpfs			502M	0	502M	0%	/dev/shm
 /dev/sr0		4,4G	4,4G	0	100%	/media/cdrom0

'''Si vous disposez de plus de 50 % d’espace libre vous pouvez passer à l’étape suivante'''.

Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Si cela ne suffit toujours pas, il faut envisager d’ajouter un disque à votre système, ou de procéder à une mise-à-jour par étapes successives (en mettant à jour les paquets progressivement et en nettoyant à chaque étape)

=== Les pilotes de la carte graphique ===

Afin de ne pas avoir de mauvaise surprise avec le serveur X, modifiez le cas échéant votre xorg.conf afin d'utiliser des pilotes libres fournis par Debian plutôt que les pilotes propriétaires.

Eventuellement utilisez les pilotes &quot;vesa&quot;

Dans votre fichier /etc/X11/xorg.conf

&lt;code&gt;
Section &quot;Device&quot;
    Identifier     &quot;Device0&quot;
    Driver         &quot;vesa&quot;
EndSection
&lt;/code&gt;

Si vous êtes sûr de vous, n’en faites rien, mais prévoyez une réinstallation des pilotes avant le premier redémarrage.

=== Le fichier sources.list ===

Créons un nouveau sources.list que nous placerons dans /etc/apt/sources.list.d
Nous prenons dores et déjà la bonne habitude d'utiliser ce répertoire qui est devenu celui par défaut pour mettre les fichiers contenant les dépôts.

Modifions le fichier sources.list pour y ajouter les dépôts de Wheezy.
Il n’est pas encore utile d’en effacer les dépôts de Squeeze, mieux vaut pour ça attendre d’avoir terminé la mise-à-jour.

 # nano /etc/apt/sources.list

&lt;code&gt;
# Debian Squeeze
deb http://ftp.fr.debian.org/debian/ squeeze main
deb http://security.debian.org/ squeeze/updates main
deb http://ftp.fr.debian.org/debian/ squeeze-updates main

# Debian Wheezy
deb http://ftp.fr.debian.org/debian/ wheezy main
deb http://security.debian.org/ wheezy/updates main
deb http://ftp.fr.debian.org/debian/ wheezy-updates main
&lt;/code&gt;

== Préparation de la mise à niveau ==

Maintenant que nous sommes prêts, nous pouvons lancer la mise-à-jour :

Mise-à-jour de la liste des paquets :

 # apt-get update

=== Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]] ===

 E: Dynamic MMap ran out of room

 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Relancez la mise-à-jour, il ne devrait plus y avoir d'erreurs.

 # apt-get update

=== Problèmes de dépendances ===

Vous ne pourrez pas faire le passage de Squeeze à Wheezy tant que subsisteront des problèmes de dépendances…

Voici deux exemples de problèmes de dépendances, et la manière de les régler :

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  xfce4-mixer-oss: Est en conflit avec: xfce4-mixer-alsa mais 4.4.2-3 est installé.
  foomatic-db: Est en conflit avec: foomatic-db-hpijs mais 20080211-1 est installé.
  xfce4-mixer-alsa: Est en conflit avec: xfce4-mixer-oss mais 4.4.2-3 doit être installé.

# aptitude install foomatic-db xfce4-mixer-alsa
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Lecture des descriptions de tâches... Fait  
Les NOUVEAUX paquets suivants vont être installés : 
  libopenjpeg2{a} libpoppler5{a} min12xxw{a} pnm2ppa{a} 
Les paquets suivants seront ENLEVÉS : 
  foomatic-db-hpijs{a} 
Les paquets suivants seront mis à jour : 
  fontconfig-config foomatic-db foomatic-db-engine foomatic-filters libfontconfig1 libjpeg62 libxml2 poppler-utils 
8 paquets mis à jour, 4 nouvellement installés, 1 à enlever et 728 non mis à jour.
Il est nécessaire de télécharger 4722ko d'archives. Après dépaquetage, 18,2Mo seront libérés.
Voulez-vous continuer ? [Y/n/?] o
...
État actuel : 728 mises à jour restantes [-8].
&lt;/code&gt;

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  libatlas3gf-base: Est en conflit avec: libblas3gf (&lt; 1.2-5) mais 1.2-2 est installé et a été conservé
                    Est en conflit avec: liblapack3gf (&lt; 3.2.1-4) mais 3.1.1-1 est installé et a été conservé
  rarian-compat: Est en conflit avec: scrollkeeper (&lt; 0.4) mais 0.3.14-16 est installé et a été conservé

# aptitude install libatlas3gf-base scrollkeeper
...
Les actions suivantes permettront de résoudre ces dépendances :

Mettre à jour les paquets suivants :
libblas3gf [1.2-2 (stable, now) -&gt; 1.2-8 (testing)]
liblapack3gf [3.1.1-1 (stable, now) -&gt; 3.2.1-8 (testing)]

Le score est de 70

Accepter cette solution ? [Y/n/q/?] y
...
État actuel : 725 mises à jour restantes [-3].
&lt;/code&gt;

En cas de doute n'hésitez pas à demander un avis [https://www.debian-fr.org/ sur le forum].

=== stopper le serveur X ===

'''IMPORTANT''' : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # service gdm3 stop

Si vous faites votre mise à niveau avec le serveur X lancé, vous risquez [https://www.debian-fr.org/upgrade-lenny-squeeze-gnome-minimaliste-t30744.html cette mésaventure]

== Lancez la mise à niveau ==

=== A propos de udev et du noyau ===

Lors de la mise-à-jour de Lenny vers Squeeze il était fortement recommandé de mettre à jour le noyau et udev avant de se lancer dans la mise à niveau du reste du système.
Ce problème ne se pose plus lors de la mise-à-jour de Squeeze vers Wheezy.

=== Mise à niveau ===

 # apt-get upgrade
 # apt-get dist-upgrade

En fonction de votre connexion ça peut prendre très longtemps, et être interrompu si votre connexion n’est pas stable (comptez environ 1 Go de paquets à télécharger pour un environnement GNOME complet).

Un conseil si vous n’êtes pas sûr de votre connexion, et si vous ne voulez pas que la mise-à-jour soit interrompue en cours de route pour un problème de réseau : téléchargez d'abord les paquets sur votre machine en lançant au préalable les deux commandes précédentes avec l’option '-d'.

Une fois la totalité des paquets téléchargés, vous pouvez relancer les commandes de mise-à-jour sans l’option '-d' pour effectuer la mise-à-jour réelle.

=== « Impossible de faire une configuration immédiate » ===

Dans certains cas, la commande 'apt-get dist-upgrade' peut échouer après le téléchargement des paquets avec : 

 E: Impossible d'effectuer la configuration immédiate de « paquet ». Veuillez consulter la page de manuel apt.conf(5) et notamment la section à propos de APT::Immediate-Configure, pour plus d'informations.

Si vous rencontrez cette erreur, lancez la commande suivante pour pouvoir continuer la mise-à-jour :

 apt-get dist-upgrade -o APT::Immediate-Configure=0

=== Déroulement ===

Vous aurez à répondre à quelques questions (au sujet de fichiers de configuration et de scripts qui ont pu être modifiés depuis leur installation).
Dans le doute choisissez les options par défaut, mais prenez le temps de lire tous les messages, et si nécessaire prenez des notes.

Sans le téléchargement des fichiers, comptez environ une heure pour la mise à niveau (ça peut être beaucoup plus rapide sur une machine récente, mais mieux vaut prévoir large).

[[Fichier:Squeeze2wheezy-1.png]]

[[Fichier:Squeeze2wheezy-2.png]]

[[Fichier:Squeeze2wheezy-3.png]]

Vous partirez d’une Squeeze configurée, et donc de nombreux fichiers de configuration auront été modifiés par vos soins.
Il est judicieux de ne pas écraser vos configurations avec les fichiers par défaut proposés par les &quot;mainteneurs&quot; des paquets.
Vous aurez tout le loisir de regarder les modifications proposées, et ce qu’elles apportent, en regardant sous /usr/share/doc ou dans les contenus de vos deb téléchargés (sous /var/cache/apt/archives).

Si tout s'est bien passé, il ne vous reste plus qu'a redémarrer la machine :

 # shutdown -r now

== Bienvenue sur Wheezy ==

 dave@HAL9000VM:~$ uname -a
 Linux HAL9000VM 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u3 x86_64 GNU/Linux

[[Fichier:Wheezy-gdm3.png]]

Après avoir vérifié que votre système tourne bien en Wheezy, c’est le moment de le nettoyer de ses paquets obsolètes :

 # apt-get autoremove --purge

Profitez-en aussi pour enlever les entrées &quot;squeeze&quot; de votre fichier sources.list.

-----

[https://www.debian.org/releases/wheezy/amd64/release-notes/ch-upgrading.fr.html source sur debian.org : Mises à niveau depuis Debian 6.0 (Squeeze)]

[[Mise_à_niveau_(upgrade)_de_Lenny_à_Squeeze|source interne : Mise à niveau (upgrade) de Lenny à Squeeze]]

-----

Création de l’article :

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 6 septembre 2014 à 04:43 (CEST)

[[Catégorie:Installation]]</text>
      <sha1>ai8p9ybh8sarourn0a3lfm4xkbqah1d</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5805</id>
      <parentid>5804</parentid>
      <timestamp>2014-09-06T07:47:26Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Mise à niveau */ ajout alim/secteur</comment>
      <text xml:space="preserve" bytes="10817">Cet article a pour but de vous guider lors de la mise-à-jour de Debian 6 « Squeeze » vers Debian 7 « Wheezy ».

Prévoyez avant toute chose d’avoir du temps devant vous, et d’être au calme.

L’outil de référence de ce guide sera apt-get, mais il peut probablement être adapté de façon à utiliser aptitude.

https://www.debian.org/releases/wheezy/amd64/release-notes/ch-upgrading.fr.html#upgradingpackages

J’ai choisi une Squeeze avec toutes les options de tasksel activées afin de faire un tour d’horizon le plus vaste possible des problèmes qui pourraient survenir.
L’environnement graphique est GNOME (environnement par défaut pour Squeeze et Wheezy).

[[Fichier:Squeeze-tasksel.png]]

== Pré-requis ==

=== Une bonne sauvegarde ===

Vous n’avez AUCUNE garantie que la mise à niveau se passe bien, alors, quelle que soit la méthode que vous emploierez, une sauvegarde est le minimum que vous puissiez faire avant de vous lancer dans l'aventure..

Avec dd, dump ou simplement cp SAUVEGARDEZ !

=== Un système à jour ! ===

Le fichier sources.list précédant la mise à niveau :

&lt;code&gt;
# Debian Squeeze
deb http://ftp.fr.debian.org/debian/ squeeze main
deb http://security.debian.org/ squeeze/updates main
deb http://ftp.fr.debian.org/debian/ squeeze-updates main
&lt;/code&gt;

 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

=== De l’espace ! ===

La mise-à-jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/), ainsi que sur la partition où se trouve /var pour le stockage des paquets téléchargés.

Pour info une mise-à-jour &quot;lourde&quot; se soldera par le téléchargement d'environ 1Go…

Pour connaître l’espace libre de votre partition racine :

 $ df -H
 Sys. de fichiers	Taille	Uti.	Disp.	Uti%	Monté sur
 '''/dev/sda1		19G	3,6G	15G	20%	/'''
 tmpfs			502M	0	502M	0%	/lib/init/rw
 udev			500M	120K	500M	1%	/dev
 tmpfs			502M	0	502M	0%	/dev/shm
 /dev/sr0		4,4G	4,4G	0	100%	/media/cdrom0

'''Si vous disposez de plus de 50 % d’espace libre vous pouvez passer à l’étape suivante'''.

Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Si cela ne suffit toujours pas, il faut envisager d’ajouter un disque à votre système, ou de procéder à une mise-à-jour par étapes successives (en mettant à jour les paquets progressivement et en nettoyant à chaque étape)

=== Les pilotes de la carte graphique ===

Afin de ne pas avoir de mauvaise surprise avec le serveur X, modifiez le cas échéant votre xorg.conf afin d'utiliser des pilotes libres fournis par Debian plutôt que les pilotes propriétaires.

Eventuellement utilisez les pilotes &quot;vesa&quot;

Dans votre fichier /etc/X11/xorg.conf

&lt;code&gt;
Section &quot;Device&quot;
    Identifier     &quot;Device0&quot;
    Driver         &quot;vesa&quot;
EndSection
&lt;/code&gt;

Si vous êtes sûr de vous, n’en faites rien, mais prévoyez une réinstallation des pilotes avant le premier redémarrage.

=== Le fichier sources.list ===

Créons un nouveau sources.list que nous placerons dans /etc/apt/sources.list.d
Nous prenons dores et déjà la bonne habitude d'utiliser ce répertoire qui est devenu celui par défaut pour mettre les fichiers contenant les dépôts.

Modifions le fichier sources.list pour y ajouter les dépôts de Wheezy.
Il n’est pas encore utile d’en effacer les dépôts de Squeeze, mieux vaut pour ça attendre d’avoir terminé la mise-à-jour.

 # nano /etc/apt/sources.list

&lt;code&gt;
# Debian Squeeze
deb http://ftp.fr.debian.org/debian/ squeeze main
deb http://security.debian.org/ squeeze/updates main
deb http://ftp.fr.debian.org/debian/ squeeze-updates main

# Debian Wheezy
deb http://ftp.fr.debian.org/debian/ wheezy main
deb http://security.debian.org/ wheezy/updates main
deb http://ftp.fr.debian.org/debian/ wheezy-updates main
&lt;/code&gt;

== Préparation de la mise à niveau ==

Maintenant que nous sommes prêts, nous pouvons lancer la mise-à-jour :

Mise-à-jour de la liste des paquets :

 # apt-get update

=== Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]] ===

 E: Dynamic MMap ran out of room

 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Relancez la mise-à-jour, il ne devrait plus y avoir d'erreurs.

 # apt-get update

=== Problèmes de dépendances ===

Vous ne pourrez pas faire le passage de Squeeze à Wheezy tant que subsisteront des problèmes de dépendances…

Voici deux exemples de problèmes de dépendances, et la manière de les régler :

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  xfce4-mixer-oss: Est en conflit avec: xfce4-mixer-alsa mais 4.4.2-3 est installé.
  foomatic-db: Est en conflit avec: foomatic-db-hpijs mais 20080211-1 est installé.
  xfce4-mixer-alsa: Est en conflit avec: xfce4-mixer-oss mais 4.4.2-3 doit être installé.

# aptitude install foomatic-db xfce4-mixer-alsa
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Lecture des descriptions de tâches... Fait  
Les NOUVEAUX paquets suivants vont être installés : 
  libopenjpeg2{a} libpoppler5{a} min12xxw{a} pnm2ppa{a} 
Les paquets suivants seront ENLEVÉS : 
  foomatic-db-hpijs{a} 
Les paquets suivants seront mis à jour : 
  fontconfig-config foomatic-db foomatic-db-engine foomatic-filters libfontconfig1 libjpeg62 libxml2 poppler-utils 
8 paquets mis à jour, 4 nouvellement installés, 1 à enlever et 728 non mis à jour.
Il est nécessaire de télécharger 4722ko d'archives. Après dépaquetage, 18,2Mo seront libérés.
Voulez-vous continuer ? [Y/n/?] o
...
État actuel : 728 mises à jour restantes [-8].
&lt;/code&gt;

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  libatlas3gf-base: Est en conflit avec: libblas3gf (&lt; 1.2-5) mais 1.2-2 est installé et a été conservé
                    Est en conflit avec: liblapack3gf (&lt; 3.2.1-4) mais 3.1.1-1 est installé et a été conservé
  rarian-compat: Est en conflit avec: scrollkeeper (&lt; 0.4) mais 0.3.14-16 est installé et a été conservé

# aptitude install libatlas3gf-base scrollkeeper
...
Les actions suivantes permettront de résoudre ces dépendances :

Mettre à jour les paquets suivants :
libblas3gf [1.2-2 (stable, now) -&gt; 1.2-8 (testing)]
liblapack3gf [3.1.1-1 (stable, now) -&gt; 3.2.1-8 (testing)]

Le score est de 70

Accepter cette solution ? [Y/n/q/?] y
...
État actuel : 725 mises à jour restantes [-3].
&lt;/code&gt;

En cas de doute n'hésitez pas à demander un avis [https://www.debian-fr.org/ sur le forum].

=== stopper le serveur X ===

'''IMPORTANT''' : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # service gdm3 stop

Si vous faites votre mise à niveau avec le serveur X lancé, vous risquez [https://www.debian-fr.org/upgrade-lenny-squeeze-gnome-minimaliste-t30744.html cette mésaventure]

== Lancez la mise à niveau ==

=== A propos de udev et du noyau ===

Lors de la mise-à-jour de Lenny vers Squeeze il était fortement recommandé de mettre à jour le noyau et udev avant de se lancer dans la mise à niveau du reste du système.
Ce problème ne se pose plus lors de la mise-à-jour de Squeeze vers Wheezy.

=== Mise à niveau ===

 # apt-get upgrade
 # apt-get dist-upgrade

Si votre machine est un PC portable, connectez votre bloc d'alimentation par le secteur.

En fonction de votre connexion ça peut prendre très longtemps, et être interrompu si votre connexion n’est pas stable (comptez environ 1 Go de paquets à télécharger pour un environnement GNOME complet).

Un conseil si vous n’êtes pas sûr de votre connexion, et si vous ne voulez pas que la mise-à-jour soit interrompue en cours de route pour un problème de réseau : téléchargez d'abord les paquets sur votre machine en lançant au préalable les deux commandes précédentes avec l’option '-d'.

Une fois la totalité des paquets téléchargée, vous pouvez relancer les commandes de mise-à-jour sans l’option '-d' pour effectuer la mise-à-jour réelle.

=== « Impossible de faire une configuration immédiate » ===

Dans certains cas, la commande 'apt-get dist-upgrade' peut échouer après le téléchargement des paquets avec : 

 E: Impossible d'effectuer la configuration immédiate de « paquet ». Veuillez consulter la page de manuel apt.conf(5) et notamment la section à propos de APT::Immediate-Configure, pour plus d'informations.

Si vous rencontrez cette erreur, lancez la commande suivante pour pouvoir continuer la mise-à-jour :

 apt-get dist-upgrade -o APT::Immediate-Configure=0

=== Déroulement ===

Vous aurez à répondre à quelques questions (au sujet de fichiers de configuration et de scripts qui ont pu être modifiés depuis leur installation).
Dans le doute choisissez les options par défaut, mais prenez le temps de lire tous les messages, et si nécessaire prenez des notes.

Sans le téléchargement des fichiers, comptez environ une heure pour la mise à niveau (ça peut être beaucoup plus rapide sur une machine récente, mais mieux vaut prévoir large).

[[Fichier:Squeeze2wheezy-1.png]]

[[Fichier:Squeeze2wheezy-2.png]]

[[Fichier:Squeeze2wheezy-3.png]]

Vous partirez d’une Squeeze configurée, et donc de nombreux fichiers de configuration auront été modifiés par vos soins.
Il est judicieux de ne pas écraser vos configurations avec les fichiers par défaut proposés par les &quot;mainteneurs&quot; des paquets.
Vous aurez tout le loisir de regarder les modifications proposées, et ce qu’elles apportent, en regardant sous /usr/share/doc ou dans les contenus de vos deb téléchargés (sous /var/cache/apt/archives).

Si tout s'est bien passé, il ne vous reste plus qu'a redémarrer la machine :

 # shutdown -r now

== Bienvenue sur Wheezy ==

 dave@HAL9000VM:~$ uname -a
 Linux HAL9000VM 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u3 x86_64 GNU/Linux

[[Fichier:Wheezy-gdm3.png]]

Après avoir vérifié que votre système tourne bien en Wheezy, c’est le moment de le nettoyer de ses paquets obsolètes :

 # apt-get autoremove --purge

Profitez-en aussi pour enlever les entrées &quot;squeeze&quot; de votre fichier sources.list.

-----

[https://www.debian.org/releases/wheezy/amd64/release-notes/ch-upgrading.fr.html source sur debian.org : Mises à niveau depuis Debian 6.0 (Squeeze)]

[[Mise_à_niveau_(upgrade)_de_Lenny_à_Squeeze|source interne : Mise à niveau (upgrade) de Lenny à Squeeze]]

-----

Création de l’article :

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 6 septembre 2014 à 04:43 (CEST)

[[Catégorie:Installation]]</text>
      <sha1>34bw1tsz4z6qb2ey1ibzi2zn5f608hg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5809</id>
      <parentid>5805</parentid>
      <timestamp>2014-09-06T17:33:44Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* stopper le serveur X */</comment>
      <text xml:space="preserve" bytes="10872">Cet article a pour but de vous guider lors de la mise-à-jour de Debian 6 « Squeeze » vers Debian 7 « Wheezy ».

Prévoyez avant toute chose d’avoir du temps devant vous, et d’être au calme.

L’outil de référence de ce guide sera apt-get, mais il peut probablement être adapté de façon à utiliser aptitude.

https://www.debian.org/releases/wheezy/amd64/release-notes/ch-upgrading.fr.html#upgradingpackages

J’ai choisi une Squeeze avec toutes les options de tasksel activées afin de faire un tour d’horizon le plus vaste possible des problèmes qui pourraient survenir.
L’environnement graphique est GNOME (environnement par défaut pour Squeeze et Wheezy).

[[Fichier:Squeeze-tasksel.png]]

== Pré-requis ==

=== Une bonne sauvegarde ===

Vous n’avez AUCUNE garantie que la mise à niveau se passe bien, alors, quelle que soit la méthode que vous emploierez, une sauvegarde est le minimum que vous puissiez faire avant de vous lancer dans l'aventure..

Avec dd, dump ou simplement cp SAUVEGARDEZ !

=== Un système à jour ! ===

Le fichier sources.list précédant la mise à niveau :

&lt;code&gt;
# Debian Squeeze
deb http://ftp.fr.debian.org/debian/ squeeze main
deb http://security.debian.org/ squeeze/updates main
deb http://ftp.fr.debian.org/debian/ squeeze-updates main
&lt;/code&gt;

 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

=== De l’espace ! ===

La mise-à-jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/), ainsi que sur la partition où se trouve /var pour le stockage des paquets téléchargés.

Pour info une mise-à-jour &quot;lourde&quot; se soldera par le téléchargement d'environ 1Go…

Pour connaître l’espace libre de votre partition racine :

 $ df -H
 Sys. de fichiers	Taille	Uti.	Disp.	Uti%	Monté sur
 '''/dev/sda1		19G	3,6G	15G	20%	/'''
 tmpfs			502M	0	502M	0%	/lib/init/rw
 udev			500M	120K	500M	1%	/dev
 tmpfs			502M	0	502M	0%	/dev/shm
 /dev/sr0		4,4G	4,4G	0	100%	/media/cdrom0

'''Si vous disposez de plus de 50 % d’espace libre vous pouvez passer à l’étape suivante'''.

Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Si cela ne suffit toujours pas, il faut envisager d’ajouter un disque à votre système, ou de procéder à une mise-à-jour par étapes successives (en mettant à jour les paquets progressivement et en nettoyant à chaque étape)

=== Les pilotes de la carte graphique ===

Afin de ne pas avoir de mauvaise surprise avec le serveur X, modifiez le cas échéant votre xorg.conf afin d'utiliser des pilotes libres fournis par Debian plutôt que les pilotes propriétaires.

Eventuellement utilisez les pilotes &quot;vesa&quot;

Dans votre fichier /etc/X11/xorg.conf

&lt;code&gt;
Section &quot;Device&quot;
    Identifier     &quot;Device0&quot;
    Driver         &quot;vesa&quot;
EndSection
&lt;/code&gt;

Si vous êtes sûr de vous, n’en faites rien, mais prévoyez une réinstallation des pilotes avant le premier redémarrage.

=== Le fichier sources.list ===

Créons un nouveau sources.list que nous placerons dans /etc/apt/sources.list.d
Nous prenons dores et déjà la bonne habitude d'utiliser ce répertoire qui est devenu celui par défaut pour mettre les fichiers contenant les dépôts.

Modifions le fichier sources.list pour y ajouter les dépôts de Wheezy.
Il n’est pas encore utile d’en effacer les dépôts de Squeeze, mieux vaut pour ça attendre d’avoir terminé la mise-à-jour.

 # nano /etc/apt/sources.list

&lt;code&gt;
# Debian Squeeze
deb http://ftp.fr.debian.org/debian/ squeeze main
deb http://security.debian.org/ squeeze/updates main
deb http://ftp.fr.debian.org/debian/ squeeze-updates main

# Debian Wheezy
deb http://ftp.fr.debian.org/debian/ wheezy main
deb http://security.debian.org/ wheezy/updates main
deb http://ftp.fr.debian.org/debian/ wheezy-updates main
&lt;/code&gt;

== Préparation de la mise à niveau ==

Maintenant que nous sommes prêts, nous pouvons lancer la mise-à-jour :

Mise-à-jour de la liste des paquets :

 # apt-get update

=== Un problème de Dynamic MMap ran out of room. [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room]] ===

 E: Dynamic MMap ran out of room

 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Relancez la mise-à-jour, il ne devrait plus y avoir d'erreurs.

 # apt-get update

=== Problèmes de dépendances ===

Vous ne pourrez pas faire le passage de Squeeze à Wheezy tant que subsisteront des problèmes de dépendances…

Voici deux exemples de problèmes de dépendances, et la manière de les régler :

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  xfce4-mixer-oss: Est en conflit avec: xfce4-mixer-alsa mais 4.4.2-3 est installé.
  foomatic-db: Est en conflit avec: foomatic-db-hpijs mais 20080211-1 est installé.
  xfce4-mixer-alsa: Est en conflit avec: xfce4-mixer-oss mais 4.4.2-3 doit être installé.

# aptitude install foomatic-db xfce4-mixer-alsa
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Lecture des descriptions de tâches... Fait  
Les NOUVEAUX paquets suivants vont être installés : 
  libopenjpeg2{a} libpoppler5{a} min12xxw{a} pnm2ppa{a} 
Les paquets suivants seront ENLEVÉS : 
  foomatic-db-hpijs{a} 
Les paquets suivants seront mis à jour : 
  fontconfig-config foomatic-db foomatic-db-engine foomatic-filters libfontconfig1 libjpeg62 libxml2 poppler-utils 
8 paquets mis à jour, 4 nouvellement installés, 1 à enlever et 728 non mis à jour.
Il est nécessaire de télécharger 4722ko d'archives. Après dépaquetage, 18,2Mo seront libérés.
Voulez-vous continuer ? [Y/n/?] o
...
État actuel : 728 mises à jour restantes [-8].
&lt;/code&gt;

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  libatlas3gf-base: Est en conflit avec: libblas3gf (&lt; 1.2-5) mais 1.2-2 est installé et a été conservé
                    Est en conflit avec: liblapack3gf (&lt; 3.2.1-4) mais 3.1.1-1 est installé et a été conservé
  rarian-compat: Est en conflit avec: scrollkeeper (&lt; 0.4) mais 0.3.14-16 est installé et a été conservé

# aptitude install libatlas3gf-base scrollkeeper
...
Les actions suivantes permettront de résoudre ces dépendances :

Mettre à jour les paquets suivants :
libblas3gf [1.2-2 (stable, now) -&gt; 1.2-8 (testing)]
liblapack3gf [3.1.1-1 (stable, now) -&gt; 3.2.1-8 (testing)]

Le score est de 70

Accepter cette solution ? [Y/n/q/?] y
...
État actuel : 725 mises à jour restantes [-3].
&lt;/code&gt;

En cas de doute n'hésitez pas à demander un avis [https://www.debian-fr.org/ sur le forum].

=== stopper le serveur X ===

'''IMPORTANT''' : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # service $(awk -F &quot;/&quot; '{print $4}' /etc/X11/default-display-manager) stop

Si vous faites votre mise à niveau avec le serveur X lancé, vous risquez [https://www.debian-fr.org/upgrade-lenny-squeeze-gnome-minimaliste-t30744.html cette mésaventure]

== Lancez la mise à niveau ==

=== A propos de udev et du noyau ===

Lors de la mise-à-jour de Lenny vers Squeeze il était fortement recommandé de mettre à jour le noyau et udev avant de se lancer dans la mise à niveau du reste du système.
Ce problème ne se pose plus lors de la mise-à-jour de Squeeze vers Wheezy.

=== Mise à niveau ===

 # apt-get upgrade
 # apt-get dist-upgrade

Si votre machine est un PC portable, connectez votre bloc d'alimentation par le secteur.

En fonction de votre connexion ça peut prendre très longtemps, et être interrompu si votre connexion n’est pas stable (comptez environ 1 Go de paquets à télécharger pour un environnement GNOME complet).

Un conseil si vous n’êtes pas sûr de votre connexion, et si vous ne voulez pas que la mise-à-jour soit interrompue en cours de route pour un problème de réseau : téléchargez d'abord les paquets sur votre machine en lançant au préalable les deux commandes précédentes avec l’option '-d'.

Une fois la totalité des paquets téléchargée, vous pouvez relancer les commandes de mise-à-jour sans l’option '-d' pour effectuer la mise-à-jour réelle.

=== « Impossible de faire une configuration immédiate » ===

Dans certains cas, la commande 'apt-get dist-upgrade' peut échouer après le téléchargement des paquets avec : 

 E: Impossible d'effectuer la configuration immédiate de « paquet ». Veuillez consulter la page de manuel apt.conf(5) et notamment la section à propos de APT::Immediate-Configure, pour plus d'informations.

Si vous rencontrez cette erreur, lancez la commande suivante pour pouvoir continuer la mise-à-jour :

 apt-get dist-upgrade -o APT::Immediate-Configure=0

=== Déroulement ===

Vous aurez à répondre à quelques questions (au sujet de fichiers de configuration et de scripts qui ont pu être modifiés depuis leur installation).
Dans le doute choisissez les options par défaut, mais prenez le temps de lire tous les messages, et si nécessaire prenez des notes.

Sans le téléchargement des fichiers, comptez environ une heure pour la mise à niveau (ça peut être beaucoup plus rapide sur une machine récente, mais mieux vaut prévoir large).

[[Fichier:Squeeze2wheezy-1.png]]

[[Fichier:Squeeze2wheezy-2.png]]

[[Fichier:Squeeze2wheezy-3.png]]

Vous partirez d’une Squeeze configurée, et donc de nombreux fichiers de configuration auront été modifiés par vos soins.
Il est judicieux de ne pas écraser vos configurations avec les fichiers par défaut proposés par les &quot;mainteneurs&quot; des paquets.
Vous aurez tout le loisir de regarder les modifications proposées, et ce qu’elles apportent, en regardant sous /usr/share/doc ou dans les contenus de vos deb téléchargés (sous /var/cache/apt/archives).

Si tout s'est bien passé, il ne vous reste plus qu'a redémarrer la machine :

 # shutdown -r now

== Bienvenue sur Wheezy ==

 dave@HAL9000VM:~$ uname -a
 Linux HAL9000VM 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u3 x86_64 GNU/Linux

[[Fichier:Wheezy-gdm3.png]]

Après avoir vérifié que votre système tourne bien en Wheezy, c’est le moment de le nettoyer de ses paquets obsolètes :

 # apt-get autoremove --purge

Profitez-en aussi pour enlever les entrées &quot;squeeze&quot; de votre fichier sources.list.

-----

[https://www.debian.org/releases/wheezy/amd64/release-notes/ch-upgrading.fr.html source sur debian.org : Mises à niveau depuis Debian 6.0 (Squeeze)]

[[Mise_à_niveau_(upgrade)_de_Lenny_à_Squeeze|source interne : Mise à niveau (upgrade) de Lenny à Squeeze]]

-----

Création de l’article :

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 6 septembre 2014 à 04:43 (CEST)

[[Catégorie:Installation]]</text>
      <sha1>jrpi3x0cdgfhmcshk4rljmbz4idqj4y</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5843</id>
      <parentid>5809</parentid>
      <timestamp>2014-10-03T12:51:05Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>/* Un problème de Dynamic MMap ran out of room. Apt_:_erreur_Dynamic_MMap_ran_out_of_room */</comment>
      <text xml:space="preserve" bytes="10871">Cet article a pour but de vous guider lors de la mise-à-jour de Debian 6 « Squeeze » vers Debian 7 « Wheezy ».

Prévoyez avant toute chose d’avoir du temps devant vous, et d’être au calme.

L’outil de référence de ce guide sera apt-get, mais il peut probablement être adapté de façon à utiliser aptitude.

https://www.debian.org/releases/wheezy/amd64/release-notes/ch-upgrading.fr.html#upgradingpackages

J’ai choisi une Squeeze avec toutes les options de tasksel activées afin de faire un tour d’horizon le plus vaste possible des problèmes qui pourraient survenir.
L’environnement graphique est GNOME (environnement par défaut pour Squeeze et Wheezy).

[[Fichier:Squeeze-tasksel.png]]

== Pré-requis ==

=== Une bonne sauvegarde ===

Vous n’avez AUCUNE garantie que la mise à niveau se passe bien, alors, quelle que soit la méthode que vous emploierez, une sauvegarde est le minimum que vous puissiez faire avant de vous lancer dans l'aventure..

Avec dd, dump ou simplement cp SAUVEGARDEZ !

=== Un système à jour ! ===

Le fichier sources.list précédant la mise à niveau :

&lt;code&gt;
# Debian Squeeze
deb http://ftp.fr.debian.org/debian/ squeeze main
deb http://security.debian.org/ squeeze/updates main
deb http://ftp.fr.debian.org/debian/ squeeze-updates main
&lt;/code&gt;

 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

=== De l’espace ! ===

La mise-à-jour d’une version Debian vers une autre nécessite d’avoir suffisamment d’espace libre sur la partition racine (/), ainsi que sur la partition où se trouve /var pour le stockage des paquets téléchargés.

Pour info une mise-à-jour &quot;lourde&quot; se soldera par le téléchargement d'environ 1Go…

Pour connaître l’espace libre de votre partition racine :

 $ df -H
 Sys. de fichiers	Taille	Uti.	Disp.	Uti%	Monté sur
 '''/dev/sda1		19G	3,6G	15G	20%	/'''
 tmpfs			502M	0	502M	0%	/lib/init/rw
 udev			500M	120K	500M	1%	/dev
 tmpfs			502M	0	502M	0%	/dev/shm
 /dev/sr0		4,4G	4,4G	0	100%	/media/cdrom0

'''Si vous disposez de plus de 50 % d’espace libre vous pouvez passer à l’étape suivante'''.

Dans le cas contraire il va vous falloir augmenter cet espace.
Suivez le guide ci-dessous pour y parvenir :

[[Nettoyer_sa_Debian|Nettoyer sa Debian]]

Si cela ne suffit toujours pas, il faut envisager d’ajouter un disque à votre système, ou de procéder à une mise-à-jour par étapes successives (en mettant à jour les paquets progressivement et en nettoyant à chaque étape)

=== Les pilotes de la carte graphique ===

Afin de ne pas avoir de mauvaise surprise avec le serveur X, modifiez le cas échéant votre xorg.conf afin d'utiliser des pilotes libres fournis par Debian plutôt que les pilotes propriétaires.

Eventuellement utilisez les pilotes &quot;vesa&quot;

Dans votre fichier /etc/X11/xorg.conf

&lt;code&gt;
Section &quot;Device&quot;
    Identifier     &quot;Device0&quot;
    Driver         &quot;vesa&quot;
EndSection
&lt;/code&gt;

Si vous êtes sûr de vous, n’en faites rien, mais prévoyez une réinstallation des pilotes avant le premier redémarrage.

=== Le fichier sources.list ===

Créons un nouveau sources.list que nous placerons dans /etc/apt/sources.list.d
Nous prenons dores et déjà la bonne habitude d'utiliser ce répertoire qui est devenu celui par défaut pour mettre les fichiers contenant les dépôts.

Modifions le fichier sources.list pour y ajouter les dépôts de Wheezy.
Il n’est pas encore utile d’en effacer les dépôts de Squeeze, mieux vaut pour ça attendre d’avoir terminé la mise-à-jour.

 # nano /etc/apt/sources.list

&lt;code&gt;
# Debian Squeeze
deb http://ftp.fr.debian.org/debian/ squeeze main
deb http://security.debian.org/ squeeze/updates main
deb http://ftp.fr.debian.org/debian/ squeeze-updates main

# Debian Wheezy
deb http://ftp.fr.debian.org/debian/ wheezy main
deb http://security.debian.org/ wheezy/updates main
deb http://ftp.fr.debian.org/debian/ wheezy-updates main
&lt;/code&gt;

== Préparation de la mise à niveau ==

Maintenant que nous sommes prêts, nous pouvons lancer la mise-à-jour :

Mise-à-jour de la liste des paquets :

 # apt-get update

=== [[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Un problème de Dynamic MMap ran out of room]] ===

 E: Dynamic MMap ran out of room

 # echo 'APT::Cache-Limit 50000000;' &gt;&gt; /etc/apt/apt.conf.d/00configperso

Relancez la mise-à-jour, il ne devrait plus y avoir d'erreurs.

 # apt-get update

=== Problèmes de dépendances ===

Vous ne pourrez pas faire le passage de Squeeze à Wheezy tant que subsisteront des problèmes de dépendances…

Voici deux exemples de problèmes de dépendances, et la manière de les régler :

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  xfce4-mixer-oss: Est en conflit avec: xfce4-mixer-alsa mais 4.4.2-3 est installé.
  foomatic-db: Est en conflit avec: foomatic-db-hpijs mais 20080211-1 est installé.
  xfce4-mixer-alsa: Est en conflit avec: xfce4-mixer-oss mais 4.4.2-3 doit être installé.

# aptitude install foomatic-db xfce4-mixer-alsa
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu      
Initialisation de l'état des paquets... Fait
Lecture des descriptions de tâches... Fait  
Les NOUVEAUX paquets suivants vont être installés : 
  libopenjpeg2{a} libpoppler5{a} min12xxw{a} pnm2ppa{a} 
Les paquets suivants seront ENLEVÉS : 
  foomatic-db-hpijs{a} 
Les paquets suivants seront mis à jour : 
  fontconfig-config foomatic-db foomatic-db-engine foomatic-filters libfontconfig1 libjpeg62 libxml2 poppler-utils 
8 paquets mis à jour, 4 nouvellement installés, 1 à enlever et 728 non mis à jour.
Il est nécessaire de télécharger 4722ko d'archives. Après dépaquetage, 18,2Mo seront libérés.
Voulez-vous continuer ? [Y/n/?] o
...
État actuel : 728 mises à jour restantes [-8].
&lt;/code&gt;

&lt;code&gt;
Les paquets suivants ont des dépendances non satisfaites :
  libatlas3gf-base: Est en conflit avec: libblas3gf (&lt; 1.2-5) mais 1.2-2 est installé et a été conservé
                    Est en conflit avec: liblapack3gf (&lt; 3.2.1-4) mais 3.1.1-1 est installé et a été conservé
  rarian-compat: Est en conflit avec: scrollkeeper (&lt; 0.4) mais 0.3.14-16 est installé et a été conservé

# aptitude install libatlas3gf-base scrollkeeper
...
Les actions suivantes permettront de résoudre ces dépendances :

Mettre à jour les paquets suivants :
libblas3gf [1.2-2 (stable, now) -&gt; 1.2-8 (testing)]
liblapack3gf [3.1.1-1 (stable, now) -&gt; 3.2.1-8 (testing)]

Le score est de 70

Accepter cette solution ? [Y/n/q/?] y
...
État actuel : 725 mises à jour restantes [-3].
&lt;/code&gt;

En cas de doute n'hésitez pas à demander un avis [https://www.debian-fr.org/ sur le forum].

=== stopper le serveur X ===

'''IMPORTANT''' : Stoppez votre serveur X (kdm, gdm, xdm, ou autre X)

 # service $(awk -F &quot;/&quot; '{print $4}' /etc/X11/default-display-manager) stop

Si vous faites votre mise à niveau avec le serveur X lancé, vous risquez [https://www.debian-fr.org/upgrade-lenny-squeeze-gnome-minimaliste-t30744.html cette mésaventure]

== Lancez la mise à niveau ==

=== A propos de udev et du noyau ===

Lors de la mise-à-jour de Lenny vers Squeeze il était fortement recommandé de mettre à jour le noyau et udev avant de se lancer dans la mise à niveau du reste du système.
Ce problème ne se pose plus lors de la mise-à-jour de Squeeze vers Wheezy.

=== Mise à niveau ===

 # apt-get upgrade
 # apt-get dist-upgrade

Si votre machine est un PC portable, connectez votre bloc d'alimentation par le secteur.

En fonction de votre connexion ça peut prendre très longtemps, et être interrompu si votre connexion n’est pas stable (comptez environ 1 Go de paquets à télécharger pour un environnement GNOME complet).

Un conseil si vous n’êtes pas sûr de votre connexion, et si vous ne voulez pas que la mise-à-jour soit interrompue en cours de route pour un problème de réseau : téléchargez d'abord les paquets sur votre machine en lançant au préalable les deux commandes précédentes avec l’option '-d'.

Une fois la totalité des paquets téléchargée, vous pouvez relancer les commandes de mise-à-jour sans l’option '-d' pour effectuer la mise-à-jour réelle.

=== « Impossible de faire une configuration immédiate » ===

Dans certains cas, la commande 'apt-get dist-upgrade' peut échouer après le téléchargement des paquets avec : 

 E: Impossible d'effectuer la configuration immédiate de « paquet ». Veuillez consulter la page de manuel apt.conf(5) et notamment la section à propos de APT::Immediate-Configure, pour plus d'informations.

Si vous rencontrez cette erreur, lancez la commande suivante pour pouvoir continuer la mise-à-jour :

 apt-get dist-upgrade -o APT::Immediate-Configure=0

=== Déroulement ===

Vous aurez à répondre à quelques questions (au sujet de fichiers de configuration et de scripts qui ont pu être modifiés depuis leur installation).
Dans le doute choisissez les options par défaut, mais prenez le temps de lire tous les messages, et si nécessaire prenez des notes.

Sans le téléchargement des fichiers, comptez environ une heure pour la mise à niveau (ça peut être beaucoup plus rapide sur une machine récente, mais mieux vaut prévoir large).

[[Fichier:Squeeze2wheezy-1.png]]

[[Fichier:Squeeze2wheezy-2.png]]

[[Fichier:Squeeze2wheezy-3.png]]

Vous partirez d’une Squeeze configurée, et donc de nombreux fichiers de configuration auront été modifiés par vos soins.
Il est judicieux de ne pas écraser vos configurations avec les fichiers par défaut proposés par les &quot;mainteneurs&quot; des paquets.
Vous aurez tout le loisir de regarder les modifications proposées, et ce qu’elles apportent, en regardant sous /usr/share/doc ou dans les contenus de vos deb téléchargés (sous /var/cache/apt/archives).

Si tout s'est bien passé, il ne vous reste plus qu'a redémarrer la machine :

 # shutdown -r now

== Bienvenue sur Wheezy ==

 dave@HAL9000VM:~$ uname -a
 Linux HAL9000VM 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u3 x86_64 GNU/Linux

[[Fichier:Wheezy-gdm3.png]]

Après avoir vérifié que votre système tourne bien en Wheezy, c’est le moment de le nettoyer de ses paquets obsolètes :

 # apt-get autoremove --purge

Profitez-en aussi pour enlever les entrées &quot;squeeze&quot; de votre fichier sources.list.

-----

[https://www.debian.org/releases/wheezy/amd64/release-notes/ch-upgrading.fr.html source sur debian.org : Mises à niveau depuis Debian 6.0 (Squeeze)]

[[Mise_à_niveau_(upgrade)_de_Lenny_à_Squeeze|source interne : Mise à niveau (upgrade) de Lenny à Squeeze]]

-----

Création de l’article :

[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 6 septembre 2014 à 04:43 (CEST)

[[Catégorie:Installation]]</text>
      <sha1>qg4ctw9ooli0bv5dx6bx09bt13so5a9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modification d iso</title>
    <ns>0</ns>
    <id>695</id>
    <revision>
      <id>3049</id>
      <timestamp>2011-06-10T16:20:24Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <comment>Page créée avec « Voici deux scripts permettant de modifier une image iso. Cela se passe en deux temps. La première consiste à extraire votre iso dans un dossier du même nom, avec en plus &quot;... »</comment>
      <text xml:space="preserve" bytes="3645">Voici deux scripts permettant de modifier une image iso. Cela se passe en deux temps. La première consiste à extraire votre iso dans un dossier du même nom, avec en plus &quot;.extract&quot;. Vous pouvez modifier ce dossier à votre guise.
Ensuite, on passe ce dossier dans la moulinette du second script, qui va reconstruire votre iso.

'''Attention : Ces scripts doivent avoir les droits superutilisateurs'''
'''Attention : Le script iso-extract doit être revérifié et étudié avant utilisation'''

== Premier script : iso-extract.sh ==
 #!/bin/bash
 # +------------------------------------------------------------+
 # | Man
 # +------------------------------------------------------------+
 # | iso-extract image.iso
 # +------------------------------------------------------------+
 # | a executer dans le dossier ou on veut extraire l'image
 # +------------------------------------------------------------+
 
 mkdir -p loopdir
 mount -o loop $1 loopdir
 cp -r loopdir/ ./$1.extract
 chown -R 1000:1000 $1.extract/
 chmod -R +w $1.extract/
 umount loopdir
 rm -r loopdir/


== Second script : iso-rebuild.sh ==
 #!/bin/bash
 # +------------------------------------------------------------+
 # | Man
 # +------------------------------------------------------------+
 # | iso-rebuild dossier_in.extract image_out.iso
 # +------------------------------------------------------------+
 # | a executer dans le dossier ou se trouve dossier_in.extract
 # | et le fichier preseed.cfg
 # +------------------------------------------------------------+
 
 # +------------------------------------------------------------+
 # | Var
 # +------------------------------------------------------------+
 PRESEED='preseed.cfg'
 
 # +------------------------------------------------------------+
 # | Verification de la presence du fichier preseed.cfg
 # +------------------------------------------------------------+
 if [ ! -f $PRESEED ];then
   echo &quot;$PRESEED not found !&quot;
   exit
 fi
 
 # +------------------------------------------------------------+
 # | Extraction initrd.gz puis suppression
 # +------------------------------------------------------------+
 mkdir initrd_dir
 cd initrd_dir/
 gzip -cd ../$1/install.386/initrd.gz | cpio -id
 cd ..
 rm $1/install.386/initrd.gz
 
 # +------------------------------------------------------------+
 # | Modification et/ou ajout dans le nouveau initrd
 # +------------------------------------------------------------+
 cp $PRESEED initrd_dir/
 
 # +------------------------------------------------------------+
 # | Supression fichiers inutiles
 # +------------------------------------------------------------+
 #rm -rf ./cd/autorun.*
 #rm -rf ./cd/doc
 #rm -rf ./cd/pics
 #rm -rf ./cd/README.*
 #rm -rf ./cd/install.386/gtk
 
 # +------------------------------------------------------------+
 # | Re-compression initrd
 # +------------------------------------------------------------+
 cd initrd_dir/
 find ./ | cpio -H newc -o &gt; ../initrd
 cd ..
 gzip initrd
 mv initrd.gz $1/install.386/
 rm -r initrd_dir/
 
 # +------------------------------------------------------------+
 # | Re-calculation de la somme md5
 # +------------------------------------------------------------+
 cd $1
 md5sum `find ! -name &quot;md5sum.txt&quot; ! -path &quot;./isolinux/*&quot; -follow -type f` &gt; md5sum.txt
 cd .. 
 
 # +------------------------------------------------------------+
 # | Creation image ISO bootable
 # +------------------------------------------------------------+
 genisoimage -o $2 -r -J -no-emul-boot -boot-load-size 4 -boot-info-table -b isolinux/isolinux.bin -c isolinux/boot.cat $1
 chmod 777 $2


[[Catégorie:Scripts]]</text>
      <sha1>51majmrziafnxpop3s8bt45yhmyetj9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3050</id>
      <parentid>3049</parentid>
      <timestamp>2011-06-10T16:32:38Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="2254">Voici deux scripts permettant de modifier une image iso. Cela se passe en deux temps. La première consiste à extraire votre iso dans un dossier du même nom, avec en plus &quot;.extract&quot;. Vous pouvez modifier ce dossier à votre guise.
Ensuite, on passe ce dossier dans la moulinette du second script, qui va reconstruire votre iso.

'''Attention : Ces scripts doivent avoir les droits superutilisateurs'''
'''Attention : Le script iso-extract doit être revérifié et étudié avant utilisation'''

== Premier script : iso-extract.sh ==
 #!/bin/bash
 # +------------------------------------------------------------+
 # | Man
 # +------------------------------------------------------------+
 # | iso-extract image.iso
 # +------------------------------------------------------------+
 # | a executer dans le dossier ou on veut extraire l'image
 # +------------------------------------------------------------+
 
 mkdir -p loopdir
 mount -o loop $1 loopdir
 cp -r loopdir/ ./$1.extract
 chown -R 1000:1000 $1.extract/
 chmod -R +w $1.extract/
 umount loopdir
 rm -r loopdir/


== Second script : iso-rebuild.sh ==
 #!/bin/bash
 # +------------------------------------------------------------+
 # | Man
 # +------------------------------------------------------------+
 # | iso-rebuild dossier_in.extract image_out.iso
 # +------------------------------------------------------------+
 # | a executer dans le dossier ou se trouve dossier_in.extract
 # | 
 # +------------------------------------------------------------+
 
 
 # +------------------------------------------------------------+
 # | Re-calculation de la somme md5
 # +------------------------------------------------------------+
 cd $1
 md5sum `find ! -name &quot;md5sum.txt&quot; ! -path &quot;./isolinux/*&quot; -follow -type f` &gt; md5sum.txt
 cd ..
 
 # +------------------------------------------------------------+
 # | Creation image ISO bootable
 # +------------------------------------------------------------+
 
 #commande pour une iso quelconque
 #genisoimage -J -r -v -o $2 -V mon_iso_bidouillee $1
 
 #commande pour un cd linux
 genisoimage -J -r -v -o $2 -V mon_iso_bidouillee -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table $1ht


[[Catégorie:Scripts]]</text>
      <sha1>c1lyc4in30ygn9ulv8n1bl1ow52j7sm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3051</id>
      <parentid>3050</parentid>
      <timestamp>2011-06-10T16:39:07Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <comment>/* Second script : iso-rebuild.sh */</comment>
      <text xml:space="preserve" bytes="2268">Voici deux scripts permettant de modifier une image iso. Cela se passe en deux temps. La première consiste à extraire votre iso dans un dossier du même nom, avec en plus &quot;.extract&quot;. Vous pouvez modifier ce dossier à votre guise.
Ensuite, on passe ce dossier dans la moulinette du second script, qui va reconstruire votre iso.

'''Attention : Ces scripts doivent avoir les droits superutilisateurs'''
'''Attention : Le script iso-extract doit être revérifié et étudié avant utilisation'''

== Premier script : iso-extract.sh ==
 #!/bin/bash
 # +------------------------------------------------------------+
 # | Man
 # +------------------------------------------------------------+
 # | iso-extract image.iso
 # +------------------------------------------------------------+
 # | a executer dans le dossier ou on veut extraire l'image
 # +------------------------------------------------------------+
 
 mkdir -p loopdir
 mount -o loop $1 loopdir
 cp -r loopdir/ ./$1.extract
 chown -R 1000:1000 $1.extract/
 chmod -R +w $1.extract/
 umount loopdir
 rm -r loopdir/


== Second script : iso-rebuild.sh ==
 #!/bin/bash
 # +------------------------------------------------------------+
 # | Man
 # +------------------------------------------------------------+
 # | iso-rebuild dossier_in.extract image_out.iso
 # +------------------------------------------------------------+
 # | a executer dans le dossier ou se trouve dossier_in.extract
 # | 
 # +------------------------------------------------------------+
 
 
 # +------------------------------------------------------------+
 # | Re-calculation de la somme md5
 # +------------------------------------------------------------+
 cd $1
 md5sum `find ! -name &quot;md5sum.txt&quot; ! -path &quot;./isolinux/*&quot; -follow -type f` &gt; md5sum.txt
 cd ..
 
 # +------------------------------------------------------------+
 # | Creation image ISO bootable
 # +------------------------------------------------------------+
 
 #commande pour une iso quelconque
 #genisoimage -J -r -v -o $2 -V mon_iso_bidouillee $1/loopdir
 
 #commande pour un cd linux
 genisoimage -J -r -v -o $2 -V mon_iso_bidouillee -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table $1/loopdir


[[Catégorie:Scripts]]</text>
      <sha1>h10mxhfs336m52zjru0nysr145o9w17</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3058</id>
      <parentid>3051</parentid>
      <timestamp>2011-06-10T17:51:11Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Premier script : iso-extract.sh */</comment>
      <text xml:space="preserve" bytes="2282">Voici deux scripts permettant de modifier une image iso. Cela se passe en deux temps. La première consiste à extraire votre iso dans un dossier du même nom, avec en plus &quot;.extract&quot;. Vous pouvez modifier ce dossier à votre guise.
Ensuite, on passe ce dossier dans la moulinette du second script, qui va reconstruire votre iso.

'''Attention : Ces scripts doivent avoir les droits superutilisateurs'''
'''Attention : Le script iso-extract doit être revérifié et étudié avant utilisation'''

== Premier script : iso-extract.sh ==
 #!/bin/bash
 # +------------------------------------------------------------+
 # | Man
 # +------------------------------------------------------------+
 # | Synopsis : iso-extract image.iso
 # +------------------------------------------------------------+
 # | à exécuter dans le dossier ou l'on veut extraire l'image
 # +------------------------------------------------------------+
 
 mkdir -p loopdir
 mount -o loop $1 loopdir
 cp -r loopdir/ ./$1.extract
 chown -R 1000:1000 $1.extract/
 chmod -R +w $1.extract/
 umount loopdir
 rm -r loopdir/

== Second script : iso-rebuild.sh ==
 #!/bin/bash
 # +------------------------------------------------------------+
 # | Man
 # +------------------------------------------------------------+
 # | iso-rebuild dossier_in.extract image_out.iso
 # +------------------------------------------------------------+
 # | a executer dans le dossier ou se trouve dossier_in.extract
 # | 
 # +------------------------------------------------------------+
 
 
 # +------------------------------------------------------------+
 # | Re-calculation de la somme md5
 # +------------------------------------------------------------+
 cd $1
 md5sum `find ! -name &quot;md5sum.txt&quot; ! -path &quot;./isolinux/*&quot; -follow -type f` &gt; md5sum.txt
 cd ..
 
 # +------------------------------------------------------------+
 # | Creation image ISO bootable
 # +------------------------------------------------------------+
 
 #commande pour une iso quelconque
 #genisoimage -J -r -v -o $2 -V mon_iso_bidouillee $1/loopdir
 
 #commande pour un cd linux
 genisoimage -J -r -v -o $2 -V mon_iso_bidouillee -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table $1/loopdir


[[Catégorie:Scripts]]</text>
      <sha1>ik29egfaci7joxynaefl59ub47rprht</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3059</id>
      <parentid>3058</parentid>
      <timestamp>2011-06-10T17:53:56Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Second script : iso-rebuild.sh */</comment>
      <text xml:space="preserve" bytes="2285">Voici deux scripts permettant de modifier une image iso. Cela se passe en deux temps. La première consiste à extraire votre iso dans un dossier du même nom, avec en plus &quot;.extract&quot;. Vous pouvez modifier ce dossier à votre guise.
Ensuite, on passe ce dossier dans la moulinette du second script, qui va reconstruire votre iso.

'''Attention : Ces scripts doivent avoir les droits superutilisateurs'''
'''Attention : Le script iso-extract doit être revérifié et étudié avant utilisation'''

== Premier script : iso-extract.sh ==
 #!/bin/bash
 # +------------------------------------------------------------+
 # | Man
 # +------------------------------------------------------------+
 # | Synopsis : iso-extract image.iso
 # +------------------------------------------------------------+
 # | à exécuter dans le dossier ou l'on veut extraire l'image
 # +------------------------------------------------------------+
 
 mkdir -p loopdir
 mount -o loop $1 loopdir
 cp -r loopdir/ ./$1.extract
 chown -R 1000:1000 $1.extract/
 chmod -R +w $1.extract/
 umount loopdir
 rm -r loopdir/

== Second script : iso-rebuild.sh ==
 #!/bin/bash
 # +------------------------------------------------------------+
 # | Man
 # +------------------------------------------------------------+
 # | iso-rebuild dossier_in.extract image_out.iso
 # +------------------------------------------------------------+
 # | à exécuter dans le dossier ou se trouve dossier_in.extract
 # | 
 # +------------------------------------------------------------+
 
 
 # +------------------------------------------------------------+
 # | Calcul de la nouvelle somme md5
 # +------------------------------------------------------------+
 cd $1
 md5sum `find ! -name &quot;md5sum.txt&quot; ! -path &quot;./isolinux/*&quot; -follow -type f` &gt; md5sum.txt
 cd ..
 
 # +------------------------------------------------------------+
 # | Creation image ISO bootable
 # +------------------------------------------------------------+
 
 #commande pour une iso quelconque
 #genisoimage -J -r -v -o $2 -V mon_iso_bidouillee $1/loopdir
 
 #commande pour un cd linux
 genisoimage -J -r -v -o $2 -V mon_iso_bidouillee -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table $1/loopdir


[[Catégorie:Scripts]]</text>
      <sha1>qdmw4x16x3lls5oesohp374q6sii5na</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5760</id>
      <parentid>3059</parentid>
      <timestamp>2014-08-20T05:11:18Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="2313">Voici deux scripts permettant de modifier une image iso. Cela se passe en deux temps. La première consiste à extraire votre iso dans un répertoire du même nom, avec en plus &quot;.extract&quot;. Vous pouvez modifier ce répertoire à votre guise.
Ensuite, on passe ce répertoire dans la moulinette du second script, qui va reconstruire votre iso.

'''Attention : Ces scripts doivent avoir les droits superutilisateurs'''
'''Attention : Le script iso-extract doit être revérifié et étudié avant utilisation'''

== Premier script : iso-extract.sh ==
 #!/bin/bash
 # +------------------------------------------------------------+
 # | Man
 # +------------------------------------------------------------+
 # | Synopsis : iso-extract image.iso
 # +------------------------------------------------------------+
 # | à exécuter dans le répertoire ou l'on veut extraire l'image
 # +------------------------------------------------------------+
 
 mkdir -p loopdir
 mount -o loop $1 loopdir
 cp -r loopdir/ ./$1.extract
 chown -R 1000:1000 $1.extract/
 chmod -R +w $1.extract/
 umount loopdir
 rm -r loopdir/

== Second script : iso-rebuild.sh ==
 #!/bin/bash
 # +------------------------------------------------------------+
 # | Man
 # +------------------------------------------------------------+
 # | iso-rebuild répertoire_in.extract image_out.iso
 # +------------------------------------------------------------+
 # | à exécuter dans le répertoire ou se trouve répertoire_in.extract
 # | 
 # +------------------------------------------------------------+
 
 
 # +------------------------------------------------------------+
 # | Calcul de la nouvelle somme md5
 # +------------------------------------------------------------+
 cd $1
 md5sum `find ! -name &quot;md5sum.txt&quot; ! -path &quot;./isolinux/*&quot; -follow -type f` &gt; md5sum.txt
 cd ..
 
 # +------------------------------------------------------------+
 # | Creation image ISO bootable
 # +------------------------------------------------------------+
 
 #commande pour une iso quelconque
 #genisoimage -J -r -v -o $2 -V mon_iso_bidouillee $1/loopdir
 
 #commande pour un cd linux
 genisoimage -J -r -v -o $2 -V mon_iso_bidouillee -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table $1/loopdir


[[Catégorie:Scripts]]</text>
      <sha1>5qr6cvb2dckwzhzpg3ij9v6ojmazxpu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:/Documentation</title>
    <ns>10</ns>
    <id>1151</id>
    <revision>
      <id>4702</id>
      <timestamp>2012-10-31T13:00:27Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « &lt;includeonly&gt;&lt;!--  --&gt;&lt;div class=&quot;template-documentation&quot; style=&quot;clear:both;margin: 1em 0 0 0;border:1px solid #aaa;background:{{#if:{{{background|}}}|{{{background|}}}|#e... »</comment>
      <text xml:space="preserve" bytes="3974">&lt;includeonly&gt;&lt;!--

--&gt;&lt;div class=&quot;template-documentation&quot; style=&quot;clear:both;margin: 1em 0 0 0;border:1px solid #aaa;background:{{#if:{{{background|}}}|{{{background|}}}|#ecfcf4}};padding:1em&quot;&gt;&lt;!--

  --&gt;{{#if:{{{heading|1&lt;!-- visible par défaut --&gt;}}}|&lt;!--
    --&gt;&lt;div style=&quot;margin-bottom:1ex;border-bottom:1px solid #aaa;padding-bottom:3px&quot;&gt;&lt;!--
      --&gt;&lt;span id=&quot;doc_editlinks&quot; class=&quot;editsection plainlinks&quot;&gt;&lt;!--
        --&gt;&amp;#91;[&lt;!--
          --&gt;{{fullurl:{{{1|{{Documentation/docname}}}}}|action=edit&lt;!--
            --&gt;{{#ifexist:{{{1|{{Documentation/docname}}}}}||&lt;!--
              --&gt;&amp;preload=Modèle:Documentation/Preload&lt;!--
            --&gt;}}&lt;!--
          --&gt;}}&lt;!--
        --&gt; &lt;!--
          --&gt;{{#ifexist:{{{1|{{Documentation/docname}}}}}|&lt;!--
            --&gt;modifier|créer&lt;!--
          --&gt;}}&lt;!--
        --&gt;]&amp;#93;&lt;!--
        --&gt;{{#ifexist:{{{1|{{Documentation/docname}}}}}|&lt;!--
          --&gt;&amp;#32;&lt;!--
          --&gt;&amp;#91;{{Purger le cache|purger}}&amp;#93;&lt;!--
        --&gt;}}&lt;!--
      --&gt;&lt;/span&gt;&lt;!--
      --&gt; [[Fichier:Template-info.png|50px|alt=Documentation du modèle|link=]] &lt;!--
      --&gt;&lt;span style=&quot;font-weight:bold;font-size:125%&quot;&gt;{{{heading|Documentation}}}&lt;/span&gt;&lt;!--
    --&gt;&lt;/div&gt;&lt;!--
  --&gt;}}&lt;!--

  --&gt;&lt;div id=&quot;template_doc_page_transcluded&quot; class=&quot;dablink plainlinks&quot; style=&quot;margin-bottom:0.5em;padding-left:2em;font-style:italic&quot;&gt;&lt;!--
    --&gt;{{#ifeq:{{FULLPAGENAME}}|{{{1|{{Documentation/docname}}}}}|&lt;!--
      --&gt;Ceci est la page de documentation du [[Aide:Modèle|modèle]] dont le code est dans la page &lt;!--
      --&gt;'''[[{{#rel2abs:..}}]]''' &lt;!--
      --&gt;&lt;small style=&quot;font-style:normal&quot;&gt;(&lt;!--
        --&gt;[{{fullurl:{{#rel2abs:..}}|action=edit}} modifier]&lt;!--
        --&gt; {{!}} &lt;!--
        --&gt;[{{fullurl:{{#rel2abs:..}}|action=history}} historique]&lt;!--
      --&gt;)&lt;/small&gt;.&lt;br /&gt;&lt;!--
     --&gt;&lt;small&gt;Cette page n’est pas destinée à être visualisée directement. Les liens utilisant des [[Aide:Liste des modèles spéciaux#var|pseudo-variables]] peuvent paraître rompus (en rouge) ; ne pas les remplacer par des noms de pages codés en dur ni des [[Uniform Resource Locator|URL]].&lt;/small&gt;&lt;br /&gt;[[Catégorie:Documentation de modèle]]&lt;!--
    --&gt;|&lt;!--
      --&gt;{{#ifexist:{{{1|{{Documentation/docname}}}}}|&lt;!-- &quot;(modèle)/Documentation&quot; existe :
        --&gt;La documentation de ce [[Aide:Modèle|modèle]] est [[Aide:Inclusion|incluse]] depuis sa &lt;!--
        --&gt;'''[[{{{1|{{Documentation/docname}}}}}|sous-page de documentation]]''' &lt;!--
        --&gt;&lt;small style=&quot;font-style:normal&quot;&gt;(&lt;!--
          --&gt;[{{fullurl:{{{1|{{Documentation/docname}}}}}|action=edit}} modifier]&lt;!--
          --&gt; {{!}} &lt;!--
          --&gt;[{{fullurl:{{{1|{{Documentation/docname}}}}}|action=history}} historique]&lt;!--
        --&gt;)&lt;/small&gt;.&lt;br /&gt;&lt;!--
      --&gt;}}&lt;!--
    --&gt;}}&lt;!--

    --&gt;{{#ifexist:{{#rel2abs:{{{1|{{Documentation/docname}}}}}/../bac à sable}}|&lt;!-- &quot;(modèle)/bac à sable&quot; existe :
      --&gt;Il dispose d’une version &lt;!--
      --&gt;[[{{#rel2abs:{{{1|{{Documentation/docname}}}}}/../bac à sable}}|bac à sable]]&lt;!--
      --&gt; destinée à effectuer des modifications du code avant de les tester.&lt;!--
    --&gt;}}&lt;!--

    --&gt;{{#ifexist:{{#rel2abs:{{{1|{{Documentation/docname}}}}}/../test}}|&lt;!-- &quot;(modèle)/test&quot; existe :
      --&gt;Il dispose aussi d’une page de &lt;!--
      --&gt;[[{{#rel2abs:{{{1|{{Documentation/docname}}}}}/../test}}|test]]&lt;!--
      --&gt; permettant de tester diverses modifications apportées dans une version bac à sable.&lt;!--
    --&gt;}}&lt;!--
  --&gt;&lt;/div&gt;&lt;!--

  --&gt;{{#ifeq:{{FULLPAGENAME}}|{{{1|{{Documentation/docname}}}}}||&lt;!-- évite toute récursion
    --&gt;{{#ifexist:{{{1|{{Documentation/docname}}}}}|&lt;nowiki /&gt;
{{ {{{1|{{Documentation/docname}}}}}&lt;!--
--&gt;|{{{2|dummy}}}={{{3|}}}&lt;!--
--&gt;|{{{4|dummy}}}={{{5|}}}&lt;!--
--&gt;|{{{6|dummy}}}={{{7|}}}&lt;!--
--&gt;|{{{8|dummy}}}={{{9|}}}&lt;!--
--&gt;}}&lt;!--
    --&gt;&lt;div style=&quot;clear:both&quot; /&gt;&lt;!--
    --&gt;}}&lt;!--
  --&gt;}}&lt;!--

--&gt;&lt;/div&gt;&lt;!--

--&gt;&lt;/includeonly&gt;&lt;noinclude&gt;{{documentation}}&lt;/noinclude&gt;</text>
      <sha1>gu771x13wxfkx3uqmpy4fhyqhcpsu33</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:Accueil</title>
    <ns>10</ns>
    <id>1129</id>
    <revision>
      <id>4653</id>
      <timestamp>2012-10-29T12:11:44Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « {| cellspacing=5 cellpadding=5 border=0 width=100% |{{IconLink64|Installation|Installation|Debian.png|Comment bien installer sa Debian.}} |{{IconLink64|Modèle:General/Ind... »</comment>
      <text xml:space="preserve" bytes="1386">{| cellspacing=5 cellpadding=5 border=0 width=100%
|{{IconLink64|Installation|Installation|Debian.png|Comment bien installer sa Debian.}}
|{{IconLink64|Modèle:General/Index/Logiciels|Les logiciels|deb.png|Installer et configurer vos logiciels.}}
|-
|{{IconLink64|Modèle:General/Index/Reseau_et_Wifi|Réseau et Wifi|Network-Connections.png|Tout ce dont vous devriez avoir besoin pour vous connecter.}}
|{{IconLink64|Modèle:General/Index/Noyau_(Kernel)|Le noyau|3054-256x256x8.png|Compiler son noyau? C'est ici.}}
|-
|{{IconLink64|Modèle:General/Index/Les_Trucs_et_astuces|Les Trucs &amp; Astuces|light_bulb.png|Des T&amp;A en vrac.}}
|{{IconLink64|Modèle:General/Index/Materiel_et_Pilotes|Le matériel et les pilotes|hardware.png|Matériels et pilotes.}}
|-
|{{IconLink64|Modèle:General/Index/Commandes|Les commandes|gksu-root-terminal-2.png|Les commandes: de bases et plus complexes.}}
|{{IconLink64|Modèle:General/Index/Programmation|La programmation, les scripts...|ADP-Icons-104-256x256-01.png|Partagez vos scripts ici.}}
|-
|{{IconLink64|Modèle:General/Index/Securite|Sécurité|FileGuardLarge256.png|Un pare feu? C'est ici.}}
|{{IconLink64|Modèle:General/Index/Divers|Divers|33366-256-coffee-icon.png|Lexique, Distributions dérivées, Etc.}}
|-
|{{IconLink64|Modèle:General/Index/Documentation_externe|Documentation externe|grey_book.png|Documentations externes diverses}}
|}
|}</text>
      <sha1>hru2rnc3mfgjfgpbg32evtxpdxt47bz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4654</id>
      <parentid>4653</parentid>
      <timestamp>2012-10-29T12:12:02Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="1383">{| cellspacing=5 cellpadding=5 border=0 width=100%
|{{IconLink64|Installation|Installation|Debian.png|Comment bien installer sa Debian.}}
|{{IconLink64|Modèle:General/Index/Logiciels|Les logiciels|deb.png|Installer et configurer vos logiciels.}}
|-
|{{IconLink64|Modèle:General/Index/Reseau_et_Wifi|Réseau et Wifi|Network-Connections.png|Tout ce dont vous devriez avoir besoin pour vous connecter.}}
|{{IconLink64|Modèle:General/Index/Noyau_(Kernel)|Le noyau|3054-256x256x8.png|Compiler son noyau? C'est ici.}}
|-
|{{IconLink64|Modèle:General/Index/Les_Trucs_et_astuces|Les Trucs &amp; Astuces|light_bulb.png|Des T&amp;A en vrac.}}
|{{IconLink64|Modèle:General/Index/Materiel_et_Pilotes|Le matériel et les pilotes|hardware.png|Matériels et pilotes.}}
|-
|{{IconLink64|Modèle:General/Index/Commandes|Les commandes|gksu-root-terminal-2.png|Les commandes: de bases et plus complexes.}}
|{{IconLink64|Modèle:General/Index/Programmation|La programmation, les scripts...|ADP-Icons-104-256x256-01.png|Partagez vos scripts ici.}}
|-
|{{IconLink64|Modèle:General/Index/Securite|Sécurité|FileGuardLarge256.png|Un pare feu? C'est ici.}}
|{{IconLink64|Modèle:General/Index/Divers|Divers|33366-256-coffee-icon.png|Lexique, Distributions dérivées, Etc.}}
|-
|{{IconLink64|Modèle:General/Index/Documentation_externe|Documentation externe|grey_book.png|Documentations externes diverses}}
|}</text>
      <sha1>p0hslm790hd7e9llonysyhxqaubapae</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4657</id>
      <parentid>4654</parentid>
      <timestamp>2012-10-29T12:15:47Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="1163">{| cellspacing=5 cellpadding=5 border=0 width=100%
|{{IconLink64|Installation|Installation|Debian.png|Comment bien installer sa Debian.}}
|{{IconLink64|Logiciels|Les logiciels|deb.png|Installer et configurer vos logiciels.}}
|-
|{{IconLink64|Reseau_et_Wifi|Réseau et Wifi|Network-Connections.png|Tout ce dont vous devriez avoir besoin pour vous connecter.}}
|{{IconLink64|Noyau_(Kernel)|Le noyau|3054-256x256x8.png|Compiler son noyau? C'est ici.}}
|-
|{{IconLink64|Les_Trucs_et_astuces|Les Trucs &amp; Astuces|light_bulb.png|Des T&amp;A en vrac.}}
|{{IconLink64|Materiel_et_Pilotes|Le matériel et les pilotes|hardware.png|Matériels et pilotes.}}
|-
|{{IconLink64|Commandes|Les commandes|gksu-root-terminal-2.png|Les commandes: de bases et plus complexes.}}
|{{IconLink64|Programmation|La programmation, les scripts...|ADP-Icons-104-256x256-01.png|Partagez vos scripts ici.}}
|-
|{{IconLink64|Securite|Sécurité|FileGuardLarge256.png|Un pare feu? C'est ici.}}
|{{IconLink64|Divers|Divers|33366-256-coffee-icon.png|Lexique, Distributions dérivées, Etc.}}
|-
|{{IconLink64|Documentation_externe|Documentation externe|grey_book.png|Documentations externes diverses}}
|}</text>
      <sha1>eolmssr1j9f67jqjmzqs9r3v1gg9hgv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4681</id>
      <parentid>4657</parentid>
      <timestamp>2012-10-30T04:31:56Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="1134">{| cellspacing=5 cellpadding=5 border=0 width=100%
|{{IconLink64|Installation|Installation|Debian.png|Comment bien installer sa Debian.}}
|{{IconLink64|Logiciels|Logiciels|deb.png|Installer et configurer vos logiciels.}}
|-
|{{IconLink64|Reseau_et_Wifi|Réseau et Wifi|Network-Connections.png|Tout ce dont vous devriez avoir besoin pour vous connecter.}}
|{{IconLink64|Noyau_(Kernel)|Noyau|3054-256x256x8.png|Compiler son noyau? C'est ici.}}
|-
|{{IconLink64|Les_Trucs_et_astuces|Trucs &amp; Astuces|light_bulb.png|Des T&amp;A en vrac.}}
|{{IconLink64|Materiel_et_Pilotes|Matériel et pilotes|hardware.png|Matériels et pilotes.}}
|-
|{{IconLink64|Commandes|Commandes|gksu-root-terminal-2.png|Les commandes: de bases et plus complexes.}}
|{{IconLink64|Programmation|Programmation, Scripts...|ADP-Icons-104-256x256-01.png|Partagez vos scripts ici.}}
|-
|{{IconLink64|Securite|Sécurité|FileGuardLarge256.png|Un pare feu? C'est ici.}}
|{{IconLink64|Divers|Divers|33366-256-coffee-icon.png|Lexique, Distributions dérivées, Etc.}}
|-
|{{IconLink64|Documentation_externe|Documentation externe|grey_book.png|Documentations externes diverses}}
|}</text>
      <sha1>567pxva4fcj8utkdqjsvaf4o3lh41sh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4682</id>
      <parentid>4681</parentid>
      <timestamp>2012-10-30T06:19:55Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="1210">{| cellspacing=5 cellpadding=5 border=0 width=100%
|{{IconLink64|Installation|Installation|Debian.png|Comment bien installer sa Debian.}}
|{{IconLink64|Logiciels|Logiciels|deb.png|Gestion des paquets et logiciels.}}
|-
|{{IconLink64|Reseau_et_Wifi|Réseau et Wifi|Network-Connections.png|Tout ce dont vous devriez avoir besoin pour vous connecter.}}
|{{IconLink64|Noyau_(Kernel)|Noyau|3054-256x256x8.png|Compiler son noyau? C'est ici.}}
|-
|{{IconLink64|Les_Trucs_et_astuces|Trucs &amp; Astuces|light_bulb.png|Des T&amp;A en vrac.}}
|{{IconLink64|Materiel_et_Pilotes|Matériel et pilotes|hardware.png|Matériels et pilotes.}}
|-
|{{IconLink64|Commandes|Commandes|gksu-root-terminal-2.png|Les commandes: de bases et plus complexes.}}
|{{IconLink64|Programmation|Programmation, Scripts...|ADP-Icons-104-256x256-01.png|Partagez vos scripts ici.}}
|-
|{{IconLink64|Securite|Sécurité|FileGuardLarge256.png|Un pare feu? C'est ici.}}
|{{IconLink64|Divers|Divers|33366-256-coffee-icon.png|Lexique, Distributions dérivées, Etc.}}
|-
|{{IconLink64|Documentation_externe|Documentation externe|grey_book.png|Documentations externes diverses}}
|{{IconLink64|Serveurs|Applications Serveurs|Serveur.png|Applications serveurs}}
|}</text>
      <sha1>2fl4i6dkn4ljrjr6w47amfuagah6ddk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4728</id>
      <parentid>4682</parentid>
      <timestamp>2012-11-07T07:54:16Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1210">{| cellspacing=5 cellpadding=5 border=0 width=100%
|{{IconLink64|Installation|Installation|Debian.png|Comment bien installer sa Debian.}}
|{{IconLink64|Logiciels|Logiciels|deb.png|Gestion des paquets et logiciels.}}
|-
|{{IconLink64|Reseau_et_Wifi|Réseau et Wifi|Network-Connections.png|Tout ce dont vous devriez avoir besoin pour vous connecter.}}
|{{IconLink64|Noyau_(Kernel)|Noyau|3054-256x256x8.png|Compiler son noyau? C'est ici.}}
|-
|{{IconLink64|Les_Trucs_et_astuces|Trucs &amp; Astuces|light_bulb.png|Des T&amp;A en vrac.}}
|{{IconLink64|Materiel_et_Pilotes|Matériels et pilotes|hardware.png|Matériels et pilotes.}}
|-
|{{IconLink64|Commandes|Commandes|gksu-root-terminal-2.png|Les commandes: de base et plus complexes.}}
|{{IconLink64|Programmation|Programmation, Scripts...|ADP-Icons-104-256x256-01.png|Partagez vos scripts ici.}}
|-
|{{IconLink64|Securite|Sécurité|FileGuardLarge256.png|Un pare feu? C'est ici.}}
|{{IconLink64|Divers|Divers|33366-256-coffee-icon.png|Lexique, distributions dérivées, etc.}}
|-
|{{IconLink64|Documentation_externe|Documentation externe|grey_book.png|Documentations externes diverses}}
|{{IconLink64|Serveurs|Applications Serveurs|Serveur.png|Applications Serveurs}}
|}</text>
      <sha1>iumfed6igayj5hzeneagvhdozb3nhbe</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4734</id>
      <parentid>4728</parentid>
      <timestamp>2012-11-07T14:30:01Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1242">{| cellspacing=5 cellpadding=5 border=0 width=100%
|{{IconLink64|Installation|Installation|Debian.png|Comment bien installer sa Debian.}}
|{{IconLink64|Logiciels|Logiciels|deb.png|Gestion des paquets et logiciels.}}
|-
|{{IconLink64|Reseau_et_Wifi|Réseau et Wifi|Network-Connections.png|Tout ce dont vous devriez avoir besoin pour vous connecter.}}
|{{IconLink64|Noyau_(Kernel)|Noyau|3054-256x256x8.png|Compiler son noyau? C'est ici.}}
|-
|{{IconLink64|Les_Trucs_et_astuces|Trucs &amp; Astuces|light_bulb.png|Des T&amp;A en vrac.}}
|{{IconLink64|Materiel_et_Pilotes|Matériels et pilotes|hardware.png|Matériels et pilotes.}}
|-
|{{IconLink64|Commandes|Commandes|gksu-root-terminal-2.png|Les commandes : de base et les plus complexes.}}
|{{IconLink64|Programmation|Programmation, Scripts...|ADP-Icons-104-256x256-01.png|Partagez vos scripts ici.}}
|-
|{{IconLink64|Securite|Sécurité|FileGuardLarge256.png|Un pare feu ? C'est ici.}}
|{{IconLink64|Divers|Divers|33366-256-coffee-icon.png|Lexique, distributions dérivées, etc.}}
|-
|{{IconLink64|Documentation_externe|Documentation externe|grey_book.png|Liens vers de la documentations diverses}}
|{{IconLink64|Serveurs|Applications Serveurs|Serveur.png|Les applications dédiées aux serveurs}}
|}</text>
      <sha1>djnloe0ltx27c658v5j17texrcdf7kq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:Accueil3</title>
    <ns>10</ns>
    <id>1133</id>
    <revision>
      <id>4673</id>
      <timestamp>2012-10-30T03:30:21Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « {| cellspacing=5 cellpadding=5 border=0 width=100% |{{IconLink64|Installation|Installation|Debian.png|Comment bien installer sa Debian.}} |{{IconLink64|Logiciels|Les logic... »</comment>
      <text xml:space="preserve" bytes="1160">{| cellspacing=5 cellpadding=5 border=0 width=100%
|{{IconLink64|Installation|Installation|Debian.png|Comment bien installer sa Debian.}}
|{{IconLink64|Logiciels|Les logiciels|deb.png|Installer et configurer vos logiciels.}}
|{{IconLink64|Reseau_et_Wifi|Réseau et Wifi|Network-Connections.png|Tout ce dont vous devriez avoir besoin pour vous connecter.}}
|-
|{{IconLink64|Noyau_(Kernel)|Le noyau|3054-256x256x8.png|Compiler son noyau? C'est ici.}}
|{{IconLink64|Les_Trucs_et_astuces|Les Trucs &amp; Astuces|light_bulb.png|Des T&amp;A en vrac.}}
|{{IconLink64|Materiel_et_Pilotes|Le matériel et les pilotes|hardware.png|Matériels et pilotes.}}
|-
|{{IconLink64|Commandes|Les commandes|gksu-root-terminal-2.png|Les commandes: de bases et plus complexes.}}
|{{IconLink64|Programmation|La programmation, les scripts...|ADP-Icons-104-256x256-01.png|Partagez vos scripts ici.}}
|{{IconLink64|Securite|Sécurité|FileGuardLarge256.png|Un pare feu? C'est ici.}}
|-
|{{IconLink64|Divers|Divers|33366-256-coffee-icon.png|Lexique, Distributions dérivées, Etc.}}
|-
|{{IconLink64|Documentation_externe|Documentation externe|grey_book.png|Documentations externes diverses}}
|}</text>
      <sha1>m03jx088cct3r2iri0i4pvf86o23gme</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4677</id>
      <parentid>4673</parentid>
      <timestamp>2012-10-30T04:01:55Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="1157">{| cellspacing=5 cellpadding=5 border=0 width=100%
|{{IconLink64|Installation|Installation|Debian.png|Comment bien installer sa Debian.}}
|{{IconLink64|Logiciels|Les logiciels|deb.png|Installer et configurer vos logiciels.}}
|{{IconLink64|Reseau_et_Wifi|Réseau et Wifi|Network-Connections.png|Tout ce dont vous devriez avoir besoin pour vous connecter.}}
|-
|{{IconLink64|Noyau_(Kernel)|Le noyau|3054-256x256x8.png|Compiler son noyau? C'est ici.}}
|{{IconLink64|Les_Trucs_et_astuces|Les Trucs &amp; Astuces|light_bulb.png|Des T&amp;A en vrac.}}
|{{IconLink64|Materiel_et_Pilotes|Le matériel et les pilotes|hardware.png|Matériels et pilotes.}}
|-
|{{IconLink64|Commandes|Les commandes|gksu-root-terminal-2.png|Les commandes: de bases et plus complexes.}}
|{{IconLink64|Programmation|La programmation, les scripts...|ADP-Icons-104-256x256-01.png|Partagez vos scripts ici.}}
|{{IconLink64|Securite|Sécurité|FileGuardLarge256.png|Un pare feu? C'est ici.}}
|-
|{{IconLink64|Divers|Divers|33366-256-coffee-icon.png|Lexique, Distributions dérivées, Etc.}}
|{{IconLink64|Documentation_externe|Documentation externe|grey_book.png|Documentations externes diverses}}
|}</text>
      <sha1>cfjd77ukqtvf7r5jntmpklx6nclpcyw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4679</id>
      <parentid>4677</parentid>
      <timestamp>2012-10-30T04:30:35Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="1132">{| cellspacing=5 cellpadding=5 border=0 width=100%
|{{IconLink64|Installation|Installation|Debian.png|Comment bien installer sa Debian.}}
|{{IconLink64|Logiciels|Logiciels|deb.png|Installer et configurer vos logiciels.}}
|{{IconLink64|Reseau_et_Wifi|Réseau et Wifi|Network-Connections.png|Tout ce dont vous devriez avoir besoin pour vous connecter.}}
|-
|{{IconLink64|Noyau_(Kernel)|Noyau|3054-256x256x8.png|Compiler son noyau? C'est ici.}}
|{{IconLink64|Les_Trucs_et_astuces|Trucs &amp; Astuces|light_bulb.png|Des T&amp;A en vrac.}}
|{{IconLink64|Materiel_et_Pilotes|Matériel et pilotes|hardware.png|Matériels et pilotes.}}
|-
|{{IconLink64|Commandes|Commandes|gksu-root-terminal-2.png|Les commandes: de bases et plus complexes.}}
|{{IconLink64|Programmation|Programmation, les scripts...|ADP-Icons-104-256x256-01.png|Partagez vos scripts ici.}}
|{{IconLink64|Securite|Sécurité|FileGuardLarge256.png|Un pare feu? C'est ici.}}
|-
|{{IconLink64|Divers|Divers|33366-256-coffee-icon.png|Lexique, Distributions dérivées, Etc.}}
|{{IconLink64|Documentation_externe|Documentation externe|grey_book.png|Documentations externes diverses}}
|}</text>
      <sha1>6s7ny1c3svbnlg9ioky93haq3u7950g</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4680</id>
      <parentid>4679</parentid>
      <timestamp>2012-10-30T04:31:00Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="1128">{| cellspacing=5 cellpadding=5 border=0 width=100%
|{{IconLink64|Installation|Installation|Debian.png|Comment bien installer sa Debian.}}
|{{IconLink64|Logiciels|Logiciels|deb.png|Installer et configurer vos logiciels.}}
|{{IconLink64|Reseau_et_Wifi|Réseau et Wifi|Network-Connections.png|Tout ce dont vous devriez avoir besoin pour vous connecter.}}
|-
|{{IconLink64|Noyau_(Kernel)|Noyau|3054-256x256x8.png|Compiler son noyau? C'est ici.}}
|{{IconLink64|Les_Trucs_et_astuces|Trucs &amp; Astuces|light_bulb.png|Des T&amp;A en vrac.}}
|{{IconLink64|Materiel_et_Pilotes|Matériel et pilotes|hardware.png|Matériels et pilotes.}}
|-
|{{IconLink64|Commandes|Commandes|gksu-root-terminal-2.png|Les commandes: de bases et plus complexes.}}
|{{IconLink64|Programmation|Programmation, scripts...|ADP-Icons-104-256x256-01.png|Partagez vos scripts ici.}}
|{{IconLink64|Securite|Sécurité|FileGuardLarge256.png|Un pare feu? C'est ici.}}
|-
|{{IconLink64|Divers|Divers|33366-256-coffee-icon.png|Lexique, Distributions dérivées, Etc.}}
|{{IconLink64|Documentation_externe|Documentation externe|grey_book.png|Documentations externes diverses}}
|}</text>
      <sha1>aiqnpoo9i2wyaxtifwb1nj4ncgnolg9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4684</id>
      <parentid>4680</parentid>
      <timestamp>2012-10-30T06:21:22Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="1204">{| cellspacing=5 cellpadding=5 border=0 width=100%
|{{IconLink64|Installation|Installation|Debian.png|Comment bien installer sa Debian.}}
|{{IconLink64|Logiciels|Logiciels|deb.png|Gestion des paquets et logiciels.}}
|{{IconLink64|Reseau_et_Wifi|Réseau et Wifi|Network-Connections.png|Tout ce dont vous devriez avoir besoin pour vous connecter.}}
|-
|{{IconLink64|Noyau_(Kernel)|Noyau|3054-256x256x8.png|Compiler son noyau? C'est ici.}}
|{{IconLink64|Les_Trucs_et_astuces|Trucs &amp; Astuces|light_bulb.png|Des T&amp;A en vrac.}}
|{{IconLink64|Materiel_et_Pilotes|Matériel et pilotes|hardware.png|Matériels et pilotes.}}
|-
|{{IconLink64|Commandes|Commandes|gksu-root-terminal-2.png|Les commandes: de bases et plus complexes.}}
|{{IconLink64|Programmation|Programmation, scripts...|ADP-Icons-104-256x256-01.png|Partagez vos scripts ici.}}
|{{IconLink64|Securite|Sécurité|FileGuardLarge256.png|Un pare feu? C'est ici.}}
|-
|{{IconLink64|Divers|Divers|33366-256-coffee-icon.png|Lexique, Distributions dérivées, Etc.}}
|{{IconLink64|Documentation_externe|Documentation externe|grey_book.png|Documentations externes diverses}}
|{{IconLink64|Serveurs|Applications Serveurs|Serveur.png|Applications serveurs}}
|}</text>
      <sha1>phcvwkwh3g6jbwjri2davqytjh3bscd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:Annonce</title>
    <ns>10</ns>
    <id>59</id>
    <revision>
      <id>201</id>
      <timestamp>2010-01-23T19:47:38Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <comment>Page créée avec « &lt;div style=&quot;background:{{{fond|lightgrey}}};padding:10px;border:2px {{{bord|black}}} solid;border-left:5px {{{bord|black}}} solid;&quot;&gt;{{{image|}}}{{{texte|aucun texte}}}&lt;/div&gt; … »</comment>
      <text xml:space="preserve" bytes="280">&lt;div style=&quot;background:{{{fond|lightgrey}}};padding:10px;border:2px {{{bord|black}}} solid;border-left:5px {{{bord|black}}} solid;&quot;&gt;{{{image|}}}{{{texte|aucun texte}}}&lt;/div&gt;
&lt;noinclude&gt;
== Utilisation ==

Paramètres:

*texte
*image
*fond
*bord
[[Catégorie:Modèles]]&lt;/noinclude&gt;</text>
      <sha1>a3aejjrzdg5iqc5m6lkde8dmtxwvm7w</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>202</id>
      <parentid>201</parentid>
      <timestamp>2010-01-23T19:47:56Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="289">&lt;div style=&quot;background:{{{fond|lightgrey}}};padding:10px;border:2px {{{bord|black}}} solid;border-left:5px {{{bord|black}}} solid;&quot;&gt;{{{image|Image ici}}}{{{texte|aucun texte}}}&lt;/div&gt;
&lt;noinclude&gt;
== Utilisation ==

Paramètres:

*texte
*image
*fond
*bord
[[Catégorie:Modèles]]&lt;/noinclude&gt;</text>
      <sha1>3603zk2dvz3a9fjiw44soucvty2oolv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:Avertissement</title>
    <ns>10</ns>
    <id>1096</id>
    <revision>
      <id>4539</id>
      <timestamp>2012-10-26T06:23:52Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « &lt;includeonly&gt;{{Méta avertissement  | titre = [[Fichier:Nuvola apps important.svg|25x25px|]] Attention :  | texte = {{{texte|}}}  | class = alerte avertissement }}&lt;!-- --&gt;... »</comment>
      <text xml:space="preserve" bytes="648">&lt;includeonly&gt;{{Méta avertissement
 | titre = [[Fichier:Nuvola apps important.svg|25x25px|]] Attention :
 | texte = {{{texte|}}}
 | class = alerte avertissement
}}&lt;!--
--&gt;{{#if: {{{1|}}}
     | &lt;div style=&quot;margin-top:1em; padding-left:1em; border:none;&lt;!--
       --&gt;{{#if: {{{fin|}}} | | border-left:2px solid #cdcdcd;}}&quot;&lt;!--
       --&gt; &gt;{{{1}}}&lt;/div&gt;
   }}&lt;!--
--&gt;{{#if: {{{fin|}}}
     | {{Méta avertissement
        | titre = Fin de l’avertissement
        | class = alerte avertissement
       }}
   }}&lt;/includeonly&gt;&lt;noinclude&gt;
{{Documentation}}
&lt;!-- Catégories et interwikis dans la /documentation en sous-page, pas ici ! --&gt;
&lt;/noinclude&gt;</text>
      <sha1>53ycb6jdehj2w7h9fxrcm845u7v6gtw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:Color</title>
    <ns>10</ns>
    <id>722</id>
    <revision>
      <id>3199</id>
      <timestamp>2011-08-06T14:43:38Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « &lt;span style=&quot;color: {{{1|black}}}&quot;&gt;{{{2|aucun texte!}}}&lt;/span&gt; &lt;noinclude&gt;Catégorie:Modèles&lt;/noinclude&gt; »</comment>
      <text xml:space="preserve" bytes="105">&lt;span style=&quot;color: {{{1|black}}}&quot;&gt;{{{2|aucun texte!}}}&lt;/span&gt; &lt;noinclude&gt;Catégorie:Modèles&lt;/noinclude&gt;</text>
      <sha1>h2hc63p300vix1u9i0pzlyyq37vm9ep</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:DernièresNouvelles</title>
    <ns>10</ns>
    <id>1103</id>
    <revision>
      <id>4554</id>
      <timestamp>2012-10-28T07:25:21Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « __NOTOC__  ===== Les actualités du Wiki...  ===== &lt;noinclude&gt; Classées du plus au moins récent... &lt;/noinclude&gt;  =====Le 22 septembre 2012===== &lt;noinclude&gt; Mise à jour ... »</comment>
      <text xml:space="preserve" bytes="12414">__NOTOC__

===== Les actualités du Wiki...  =====
&lt;noinclude&gt;
Classées du plus au moins récent...
&lt;/noinclude&gt;

=====Le 22 septembre 2012=====
&lt;noinclude&gt;
Mise à jour de sécurité =&gt; MediaWiki 1.19.2 [http://www.mediawiki.org/wiki/Release_notes/1.19 Note de version]
&lt;/noinclude&gt;

=====Le aout 2012=====
&lt;noinclude&gt;
Activation du ssl sur le Wiki [https://www.isalo.org/wiki.debian-fr/index.php?title=Accueil wiki.debian-fr]
&lt;/noinclude&gt;

=====Le 5 mai, mise à jour vers Mediawiki 1.19.0!=====
&lt;noinclude&gt;&lt;/noinclude&gt;

=====Le 28 avril 2012: Mise à jour Wiki vers 1.18.2 (1.18.3 échoué)=====
&lt;noinclude&gt;&lt;/noinclude&gt;

=====Le 24 avril 2012: Ajout de l'extension '''&quot;Collection&quot;'''.=====
&lt;noinclude&gt;
Cette extension permet d'organiser et d'exporter dans divers formats (pdf pour l'instant, libre office à venir) une page ou une sélection de pages du Wiki.
&lt;/noinclude&gt;

=====Le Wiki à basculé sur l'ipv6!=====
&lt;noinclude&gt;
http://pix.isalo.org/upload/thumb/1334318888.jpg
&lt;/noinclude&gt;

=====Le 26 mars 2012: Ajout de l'extension CollapsableText.=====
&lt;noinclude&gt;
&lt;collapsetext&gt;Ceci est le titre (toujours visible - Cliquez sur la flèche pour voir le texte complet). Ceci est le texte &quot;caché&quot; (visible quand il est &quot;déroulé&quot; ).&lt;/collapsetext&gt;
&lt;/noinclude&gt;

=====Le 23/02/2012: Activation de la possibilité d'insérer des images de pix.isalo.org=====
&lt;noinclude&gt;
Image:
http://pix.isalo.org/upload/original/1293897717.gif

Miniature:
http://pix.isalo.org/upload/thumb/1329911740.png
&lt;/noinclude&gt;

=====Le 2 février 2012: Mise à niveau du Wiki ver 1.18.1=====
&lt;noinclude&gt;&lt;/noinclude&gt;

=====Le 1er février 2012: Activation des formules mathématiques avec le système TeX.=====
&lt;noinclude&gt;

&lt;math&gt;
f(x) = \begin{cases}1 &amp; -1 \le x &lt; 0\\
 \frac{1}{2} &amp; x = 0\\x&amp;0&lt;x\le 1\end{cases}
&lt;/math&gt;


&lt;math&gt;
{}_pF_q(a_1,\ldots,a_p;c_1,\ldots,c_q;z) = \sum_{n=0}^\infty 
 \frac{(a_1)_n\cdots(a_p)_n}{(c_1)_n\cdots(c_q)_n}\frac{z^n}{n!}\,
&lt;/math&gt;


&lt;math&gt;
  \operatorname{erfc}(x) =
  \frac{2}{\sqrt{\pi}} \int_x^{\infty} e^{-t^2}\,dt =
  \frac{e^{-x^2}}{x\sqrt{\pi}}\sum_{n=0}^\infty (-1)^n \frac{(2n)!}{n!(2x)^{2n}}
 &lt;/math&gt;
&lt;/noinclude&gt;

=====Le 13 janvier 2012: Mise à jour du Wiki vers la version 1.17.1=====
&lt;noinclude&gt;&lt;/noinclude&gt;

=====06 août 2011: Ajout de l'extension [http://www.mediawiki.org/wiki/Extension:Widgets widget]=====
&lt;noinclude&gt;
Premier essai sur le widget &quot;follow me on twitter&quot;

{{#widget:Twitter Follow
|twitter=debian
|what=me
}}
&lt;/noinclude&gt;

=====31 juillet 2011 - Ajout d'une page de contact: [[Spécial:Contact]]=====
&lt;noinclude&gt;&lt;/noinclude&gt;

=====Affichez votre &quot;twitter&quot; dans votre page perso &quot;Wiki&quot;=====
&lt;noinclude&gt;
Utilisation:
&lt;code&gt;&lt;twitterfeed id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;
&lt;code&gt;&lt;twitterfeed nb=&quot;nb-of-tweets&quot; id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;
&lt;/noinclude&gt;

=====Mise à niveau vers 1.17 ce 29/07/2011=====
&lt;noinclude&gt;&lt;/noinclude&gt;

=====J'ai cédé à la sirène Google +1...=====
&lt;noinclude&gt;
{{Template: Social}}
&lt;/noinclude&gt;

=====Mise à niveau du Wiki vers la version 1.16.5=====
&lt;noinclude&gt;&lt;/noinclude&gt;

=====Mise à jour du forum interne de 2.5.11 vers 2.5.12 [http://wiki.anotherwebcom.com/Category:AWC%27s_MediaWiki_Forum_Extension AWC Forum]=====
&lt;noinclude&gt;&lt;/noinclude&gt;

=====Ajout d'un service de partage d'images : [http://pix.isalo.org/ Hébergement d'images]=====
&lt;noinclude&gt;&lt;/noinclude&gt;

=====Ajout d'un outil de partage et de collaboration pour le débogage : [http://paste.isalo.org/ Un pastbin]=====
&lt;noinclude&gt;&lt;/noinclude&gt;

=====Le Wiki est désormais accessible 24/24, 7/7 et... 365/365 :)=====
&lt;noinclude&gt;&lt;/noinclude&gt;

=====Ajout de deux extensions : EasyTimeline et PDF Handler=====
&lt;noinclude&gt;
[http://www.isalo.org/wiki.debian-fr/index.php/Test_timeline exemple Easy Timeline]
[http://www.isalo.org/wiki.debian-fr/index.php/Test.pdf exemple Pdf Handler]
&lt;/noinclude&gt;

=====Modification des autorisation du forum interne (section pause-café uniquement). Autorisation de lecture pour les utilisateurs &quot;anonymes&quot;.=====
&lt;noinclude&gt;
&lt;/noinclude&gt;

=====Pour &quot;les forts en CSS&quot;, ajout de l'extension '''CSS''', une fonction du parseur qui permet d’inclure des feuilles de style sur vos pages de Wiki.=====
&lt;noinclude&gt;
Exemple sur [[Test.css|cette page]]
&lt;/noinclude&gt;

=====Remise en fonction des [[Spécial:Téléversement_multiple|téléversements multiples - Version trunk r76488]] (10 fichiers au maximun).=====
&lt;noinclude&gt;&lt;/noinclude&gt;

=====Mise à jour du Wiki 1.16 à 1.16wmf4=====
&lt;noinclude&gt;
[http://www.isalo.org/wiki.debian-fr/index.php/Sp%C3%A9cial:Version Version]
&lt;/noinclude&gt;

=====Mise à jour du forum interne (awc extension): 2.5.10 à 2.5.11=====
&lt;noinclude&gt;
&lt;s&gt;Quelques liens dans le menu principal on souffert de la MAJ. Restauration ce soir ou demain.&lt;/s&gt;

[[Utilisateur:Lol|Lol]] 16 novembre 2010 à 18:31 (EAT)
&lt;/noinclude&gt;

=====* Changement de serveur et de branche ce 28/10/2010...=====
&lt;noinclude&gt;
Le Wiki est désormais hébergé sur une squeeze!

 Linux lol 2.6.32-5-amd64 #1 SMP Wed Oct 20 00:05:22 UTC 2010 x86_64 GNU/Linux
&lt;/noinclude&gt;

=====* Mise à jour de notre Wiki qui passe de la version 1.15 à la dernière version 1.16=====
&lt;noinclude&gt;
Il reste encore quelques réglages, mais dans l'ensemble... c'est bon!
&lt;/noinclude&gt;

=====&lt;s&gt;* Ajout d'une page pour les téléversements multiples...=====
&lt;noinclude&gt;
[[Spécial:Téléversement_multiple]]&lt;/s&gt;

Fonction désactivée car ''incompatible avec la version 1.16'' du Wiki.
&lt;/noinclude&gt;

=====* Ajout de l'extension 'GeSHiCodeTag'=====
&lt;noinclude&gt;
Permet la coloration syntaxique des lignes de codes... Très joli, et très pratique :)

Exemples

:&gt; &quot;code tag&quot; avancé
&lt;nowiki&gt;&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé avec numérotation
&lt;nowiki&gt;&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé par défaut
&lt;nowiki&gt;&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; Liste des langages supportés :
 &lt;nowiki&gt;&lt;code list&gt;&lt;/code&gt;&lt;/nowiki&gt;

 xbasic ecmascript io vb email pcre lotusscript per matlab awk plsql perl6 oracle11 powershell '''xorg_conf'''
 sdlbasic '''sql''' csharp autoit magiksf mapbasic visualprolog oobas delphi klonecpp rails sas actionscript
 cpp lolcode vbnet javascript abap ocaml dcs idl glsl progress gwbasic blitzbasic avisynth cfm smalltalk '''ruby'''
 asm lscript oracle8 scheme systemverilog '''diff''' fo vala modula2 mmix mirc kixtart ini newlisp vhdl qbasic
 fsharp cfdg genie mpasm java5 '''c''' dot logtalk inno providex caddcl asp hq9plus gambas '''vim''' bf oberon2 '''apache'''
 mxml q php cmake java oz whitespace lua rebol rsplus chaiscript html4strict gnuplot thinbasic '''div''' locobasic
 gml typoscript pixelbender purebasic verilog scilab actionscript3 xml j winbatch klonec autohotkey applescript
 freebasic teraterm '''css''' objc xpp m68k '''make''' clojure tsql apt_sources nsis bibtex cpp-qt lisp gettext dos modula3
 python ocaml-brief autoconf php-brief cobol pf haskell '''erlang''' pic16 intercal c_mac rpmspec '''perl''' pike oxygene
 4cs boo '''bash''' tcl cadlisp pascal powerbuilder hicest lotusformulas text properties fortran postgresql basic4gl
 jquery povray ada eiffel robots '''mysql''' cuesheet z80 d scala prolog icon '''whois''' cil '''latex''' gdb smarty visualfoxpro
 unicon bnf lsl2 genero reg groovy

Un exemple :

Le script suivant encadré de &lt;nowiki&gt;&lt;code bash&gt;votre script ici&lt;/code&gt;&lt;/nowiki&gt;

 #! /bin/sh
 
 N=/etc/init.d/sudo
 
 set -e
 
 case &quot;$1&quot; in
   start)
 	# make sure privileges don't persist across reboots
 	if [ -d /var/lib/sudo ]
 	then
                 find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
 	fi
 	;;
   stop|reload|restart|force-reload)
 	;;
   *)
 	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
 	exit 1
 	;;
 esac
 
 exit 0

Donnera :

&lt;code bash&gt;#! /bin/sh

N=/etc/init.d/sudo

set -e

case &quot;$1&quot; in
  start)
	# make sure privileges don't persist across reboots
	if [ -d /var/lib/sudo ]
	then
                find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
	fi
	;;
  stop|reload|restart|force-reload)
	;;
  *)
	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
	exit 1
	;;
esac

exit 0
&lt;/code&gt;

Bien plus lisible !
&lt;/noinclude&gt;

=====* La TRèS bonne nouvelle de la journée !=====
&lt;noinclude&gt;
'''Squeeze est gelée ce 6 aout 2010 !'''

[http://www.debian.org/News/2010/20100806 L'annonce ICI]
&lt;/noinclude&gt;

=====* Nouvelle page Spéciale : Livre d'or... Ici : [[Spécial:Guestbook|Spécial:Guestbook]]=====
&lt;noinclude&gt;
Permet aux invités de laisser un message; Il faut encore que j'ajoute un lien au menu général!
&lt;/noinclude&gt;

=====*Mise à jour du forum interne vers la version 2.5.10=====
&lt;noinclude&gt;
Possibilité de faire des sondages...

Ouvrez une nouvelle discussion, enregistrez;
Ajoutez un sondage à votre discussion, c'est tout !

La mise à jour à apportée un nouveau menu au forum (en bas à gauche)
&lt;/noinclude&gt;

=====* Avec la réinstallation forcée suite au crash d'un disque dur, passage à la version 1.15.4 (déjà dépassée... la version 1.16 et 1.15.5 venant de sortir...)=====
&lt;noinclude&gt;
N'hésitez pas à visiter [[Spécial:Pages_spéciales|les pages spéciales]] !
&lt;/noinclude&gt;

=====*Le support des fichiers svg (graphique vectoriel adaptable) est opérationnel&amp;nbsp;!=====
&lt;noinclude&gt;
[[Fichier:Chess game 01.svg]]
&lt;/noinclude&gt;

=====*Page Spéciale bien pratique pour suivre les nouveaux articles, discussions...&amp;nbsp;!=====

[[Spécial:Newestpages]] 
&lt;noinclude&gt;
Plus facile de se repérer que dans la page spéciale &quot;Modifications récentes&quot;. Nous ne risquons pas de perdre des articles en route...
&lt;/noinclude&gt;

=====*Nous allons pouvoir faire des sondages&amp;nbsp;!=====
&lt;noinclude&gt;
[[Spécial:Voter]] 

Vous pouvez voter plusieurs fois, mais seul le dernier vote est pris en compte... Un vote par utilisateur&amp;nbsp;! 

Votez dès maintenant pour le maître de l'univers... 
&lt;/noinclude&gt;

=====*Option de prise en charge de vos css personnels activée...=====
&lt;noinclude&gt;
Vous pouvez récupérer ici des css&amp;nbsp;: [http://www.mediawiki.org/wiki/Manual:Gallery_of_user_styles Manual:Gallery_of_user_styles] - ou créer votre propre css... Les skins utilisés dans notre mediawiki sont listés dans votre page de préférences (en haut à gauche). Il suffit de créer votre page de skin (en général Utilisateur:votre_super_pseudo/monobook.css et Utilisateur:votre_super_pseudo/monobook.js pour ceux nécessitant un js) et de rafraîchir votre navigateur... 
&lt;/noinclude&gt;

=====*Nouvelle page spéciale&amp;nbsp;: Qui est en ligne&amp;nbsp;!=====
&lt;noinclude&gt;
[[Spécial:Qui est en ligne]]
&lt;/noinclude&gt;

=====*Ajout d'un &quot;chat-room&quot; au forum. Pour chaque article vous avez la possibilité d'ouvrir un '''salon''' pour discuter en direct...=====
&lt;noinclude&gt;
Parfaitement inutile&amp;nbsp;? Peut-être pas... 

&lt;br&gt; [[Image:Capture d'écran124.jpeg]] 

Possibilité de n'ouvrir qu'un seul &quot;salon&quot; pour l'ensemble du forum&amp;nbsp;? Vos avis&amp;nbsp;?
&lt;/noinclude&gt;

=====*Ajout de l'extension &quot;CategoryTree&quot;=====
&lt;noinclude&gt;
Un exemple vaut mieux qu'un long discours&amp;nbsp;: 

&lt;categorytree mode=&quot;pages&quot; style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:orange;&quot;&gt;Commandes&lt;/categorytree&gt; Ou plus simplement &lt;categorytree mode=&quot;pages&quot;&gt;Commandes&lt;/categorytree&gt; 
&lt;/noinclude&gt;

=====*Ajout d'une fonction WYSIWYG à l'édition=====
&lt;noinclude&gt;
[[Image:Capture d'écran122.jpeg]] 

'''Attention, il y a un prix&amp;nbsp;: cela alourdit la navigation...''' 
&lt;/noinclude&gt;

=====*Mise à jour du forum de la version 2.4.1 à 2.4.3=====
&lt;noinclude&gt;
&lt;blockquote&gt;J'espère que cela va régler un certains nombres de petits &quot;bugs&quot;&lt;/blockquote&gt; 
&lt;/noinclude&gt;

=====*Un forum interne doublé d'un service de messagerie...=====
&lt;noinclude&gt;
&lt;blockquote&gt;'''&lt;u&gt;Le forum interne permet d'envoyer des messages privés à l'intérieur du Wiki, et par mail&amp;nbsp;!&lt;/u&gt;''' Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt; 
&lt;/noinclude&gt;

=====*Un forum interne&amp;nbsp;!=====
&lt;noinclude&gt;
&lt;blockquote&gt;Amélioration sans doute, '''&lt;u&gt;le Wiki s'est doté d'un forum&lt;/u&gt;''' afin de permettre aux membres de discuter, en toute liberté. Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt;
&lt;/noinclude&gt;



[[Template:DernièresNouvelles|Voir toutes les nouvelles]]</text>
      <sha1>gqzmnezu4po2b8ucctse1ue66h6956z</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4558</id>
      <parentid>4554</parentid>
      <timestamp>2012-10-28T07:37:58Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="12425">__NOTOC__

&lt;noinclude&gt;
===== Les actualités du Wiki...  =====
Classées du plus au moins récent...
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Le 22 septembre 2012=====
Mise à jour de sécurité =&gt; MediaWiki 1.19.2 [http://www.mediawiki.org/wiki/Release_notes/1.19 Note de version]
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Le aout 2012=====
Activation du ssl sur le Wiki [https://www.isalo.org/wiki.debian-fr/index.php?title=Accueil wiki.debian-fr]
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Le 5 mai, mise à jour vers Mediawiki 1.19.0!=====
&lt;/noinclude&gt;

&lt;noinclude&gt;=====Le 28 avril 2012: Mise à jour Wiki vers 1.18.2 (1.18.3 échoué)=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Le 24 avril 2012: Ajout de l'extension '''&quot;Collection&quot;'''.=====
Cette extension permet d'organiser et d'exporter dans divers formats (pdf pour l'instant, libre office à venir) une page ou une sélection de pages du Wiki.
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Le Wiki à basculé sur l'ipv6!=====
http://pix.isalo.org/upload/thumb/1334318888.jpg
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Le 26 mars 2012: Ajout de l'extension CollapsableText.=====
&lt;collapsetext&gt;Ceci est le titre (toujours visible - Cliquez sur la flèche pour voir le texte complet). Ceci est le texte &quot;caché&quot; (visible quand il est &quot;déroulé&quot; ).&lt;/collapsetext&gt;
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Le 23/02/2012: Activation de la possibilité d'insérer des images de pix.isalo.org=====
Image:
http://pix.isalo.org/upload/original/1293897717.gif

Miniature:
http://pix.isalo.org/upload/thumb/1329911740.png
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Le 2 février 2012: Mise à niveau du Wiki ver 1.18.1=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Le 1er février 2012: Activation des formules mathématiques avec le système TeX.=====

&lt;math&gt;
f(x) = \begin{cases}1 &amp; -1 \le x &lt; 0\\
 \frac{1}{2} &amp; x = 0\\x&amp;0&lt;x\le 1\end{cases}
&lt;/math&gt;


&lt;math&gt;
{}_pF_q(a_1,\ldots,a_p;c_1,\ldots,c_q;z) = \sum_{n=0}^\infty 
 \frac{(a_1)_n\cdots(a_p)_n}{(c_1)_n\cdots(c_q)_n}\frac{z^n}{n!}\,
&lt;/math&gt;


&lt;math&gt;
  \operatorname{erfc}(x) =
  \frac{2}{\sqrt{\pi}} \int_x^{\infty} e^{-t^2}\,dt =
  \frac{e^{-x^2}}{x\sqrt{\pi}}\sum_{n=0}^\infty (-1)^n \frac{(2n)!}{n!(2x)^{2n}}
 &lt;/math&gt;
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Le 13 janvier 2012: Mise à jour du Wiki vers la version 1.17.1=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====06 août 2011: Ajout de l'extension [http://www.mediawiki.org/wiki/Extension:Widgets widget]=====
Premier essai sur le widget &quot;follow me on twitter&quot;

{{#widget:Twitter Follow
|twitter=debian
|what=me
}}
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====31 juillet 2011 - Ajout d'une page de contact: [[Spécial:Contact]]=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Affichez votre &quot;twitter&quot; dans votre page perso &quot;Wiki&quot;=====
Utilisation:
&lt;code&gt;&lt;twitterfeed id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;
&lt;code&gt;&lt;twitterfeed nb=&quot;nb-of-tweets&quot; id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Mise à niveau vers 1.17 ce 29/07/2011=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====J'ai cédé à la sirène Google +1...=====
{{Template: Social}}
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Mise à niveau du Wiki vers la version 1.16.5=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Mise à jour du forum interne de 2.5.11 vers 2.5.12 [http://wiki.anotherwebcom.com/Category:AWC%27s_MediaWiki_Forum_Extension AWC Forum]=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Ajout d'un service de partage d'images : [http://pix.isalo.org/ Hébergement d'images]=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Ajout d'un outil de partage et de collaboration pour le débogage : [http://paste.isalo.org/ Un pastbin]=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Le Wiki est désormais accessible 24/24, 7/7 et... 365/365 :)=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Ajout de deux extensions : EasyTimeline et PDF Handler=====
[http://www.isalo.org/wiki.debian-fr/index.php/Test_timeline exemple Easy Timeline]
[http://www.isalo.org/wiki.debian-fr/index.php/Test.pdf exemple Pdf Handler]
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Modification des autorisation du forum interne (section pause-café uniquement). Autorisation de lecture pour les utilisateurs &quot;anonymes&quot;.=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Pour &quot;les forts en CSS&quot;, ajout de l'extension '''CSS''', une fonction du parseur qui permet d’inclure des feuilles de style sur vos pages de Wiki.=====
Exemple sur [[Test.css|cette page]]
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Remise en fonction des [[Spécial:Téléversement_multiple|téléversements multiples - Version trunk r76488]] (10 fichiers au maximun).=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Mise à jour du Wiki 1.16 à 1.16wmf4=====
[http://www.isalo.org/wiki.debian-fr/index.php/Sp%C3%A9cial:Version Version]
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Mise à jour du forum interne (awc extension): 2.5.10 à 2.5.11=====
&lt;s&gt;Quelques liens dans le menu principal on souffert de la MAJ. Restauration ce soir ou demain.&lt;/s&gt;

[[Utilisateur:Lol|Lol]] 16 novembre 2010 à 18:31 (EAT)
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====* Changement de serveur et de branche ce 28/10/2010...=====
Le Wiki est désormais hébergé sur une squeeze!

 Linux lol 2.6.32-5-amd64 #1 SMP Wed Oct 20 00:05:22 UTC 2010 x86_64 GNU/Linux
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====* Mise à jour de notre Wiki qui passe de la version 1.15 à la dernière version 1.16=====
Il reste encore quelques réglages, mais dans l'ensemble... c'est bon!
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====&lt;s&gt;* Ajout d'une page pour les téléversements multiples...=====
[[Spécial:Téléversement_multiple]]&lt;/s&gt;

Fonction désactivée car ''incompatible avec la version 1.16'' du Wiki.
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====* Ajout de l'extension 'GeSHiCodeTag'=====
Permet la coloration syntaxique des lignes de codes... Très joli, et très pratique :)

Exemples

:&gt; &quot;code tag&quot; avancé
&lt;nowiki&gt;&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé avec numérotation
&lt;nowiki&gt;&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé par défaut
&lt;nowiki&gt;&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; Liste des langages supportés :
 &lt;nowiki&gt;&lt;code list&gt;&lt;/code&gt;&lt;/nowiki&gt;

 xbasic ecmascript io vb email pcre lotusscript per matlab awk plsql perl6 oracle11 powershell '''xorg_conf'''
 sdlbasic '''sql''' csharp autoit magiksf mapbasic visualprolog oobas delphi klonecpp rails sas actionscript
 cpp lolcode vbnet javascript abap ocaml dcs idl glsl progress gwbasic blitzbasic avisynth cfm smalltalk '''ruby'''
 asm lscript oracle8 scheme systemverilog '''diff''' fo vala modula2 mmix mirc kixtart ini newlisp vhdl qbasic
 fsharp cfdg genie mpasm java5 '''c''' dot logtalk inno providex caddcl asp hq9plus gambas '''vim''' bf oberon2 '''apache'''
 mxml q php cmake java oz whitespace lua rebol rsplus chaiscript html4strict gnuplot thinbasic '''div''' locobasic
 gml typoscript pixelbender purebasic verilog scilab actionscript3 xml j winbatch klonec autohotkey applescript
 freebasic teraterm '''css''' objc xpp m68k '''make''' clojure tsql apt_sources nsis bibtex cpp-qt lisp gettext dos modula3
 python ocaml-brief autoconf php-brief cobol pf haskell '''erlang''' pic16 intercal c_mac rpmspec '''perl''' pike oxygene
 4cs boo '''bash''' tcl cadlisp pascal powerbuilder hicest lotusformulas text properties fortran postgresql basic4gl
 jquery povray ada eiffel robots '''mysql''' cuesheet z80 d scala prolog icon '''whois''' cil '''latex''' gdb smarty visualfoxpro
 unicon bnf lsl2 genero reg groovy

Un exemple :

Le script suivant encadré de &lt;nowiki&gt;&lt;code bash&gt;votre script ici&lt;/code&gt;&lt;/nowiki&gt;

 #! /bin/sh
 
 N=/etc/init.d/sudo
 
 set -e
 
 case &quot;$1&quot; in
   start)
 	# make sure privileges don't persist across reboots
 	if [ -d /var/lib/sudo ]
 	then
                 find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
 	fi
 	;;
   stop|reload|restart|force-reload)
 	;;
   *)
 	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
 	exit 1
 	;;
 esac
 
 exit 0

Donnera :

&lt;code bash&gt;#! /bin/sh

N=/etc/init.d/sudo

set -e

case &quot;$1&quot; in
  start)
	# make sure privileges don't persist across reboots
	if [ -d /var/lib/sudo ]
	then
                find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
	fi
	;;
  stop|reload|restart|force-reload)
	;;
  *)
	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
	exit 1
	;;
esac

exit 0
&lt;/code&gt;

Bien plus lisible !
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====* La TRèS bonne nouvelle de la journée !=====
'''Squeeze est gelée ce 6 aout 2010 !'''

[http://www.debian.org/News/2010/20100806 L'annonce ICI]
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====* Nouvelle page Spéciale : Livre d'or... Ici : [[Spécial:Guestbook|Spécial:Guestbook]]=====
Permet aux invités de laisser un message; Il faut encore que j'ajoute un lien au menu général!
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Mise à jour du forum interne vers la version 2.5.10=====
Possibilité de faire des sondages...

Ouvrez une nouvelle discussion, enregistrez;
Ajoutez un sondage à votre discussion, c'est tout !

La mise à jour à apportée un nouveau menu au forum (en bas à gauche)
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====* Avec la réinstallation forcée suite au crash d'un disque dur, passage à la version 1.15.4 (déjà dépassée... la version 1.16 et 1.15.5 venant de sortir...)=====
N'hésitez pas à visiter [[Spécial:Pages_spéciales|les pages spéciales]] !
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Le support des fichiers svg (graphique vectoriel adaptable) est opérationnel&amp;nbsp;!=====
[[Fichier:Chess game 01.svg]]
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Page Spéciale bien pratique pour suivre les nouveaux articles, discussions...&amp;nbsp;!=====

[[Spécial:Newestpages]] 
Plus facile de se repérer que dans la page spéciale &quot;Modifications récentes&quot;. Nous ne risquons pas de perdre des articles en route...
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Nous allons pouvoir faire des sondages&amp;nbsp;!=====
[[Spécial:Voter]] 

Vous pouvez voter plusieurs fois, mais seul le dernier vote est pris en compte... Un vote par utilisateur&amp;nbsp;! 

Votez dès maintenant pour le maître de l'univers... 
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Option de prise en charge de vos css personnels activée...=====
Vous pouvez récupérer ici des css&amp;nbsp;: [http://www.mediawiki.org/wiki/Manual:Gallery_of_user_styles Manual:Gallery_of_user_styles] - ou créer votre propre css... Les skins utilisés dans notre mediawiki sont listés dans votre page de préférences (en haut à gauche). Il suffit de créer votre page de skin (en général Utilisateur:votre_super_pseudo/monobook.css et Utilisateur:votre_super_pseudo/monobook.js pour ceux nécessitant un js) et de rafraîchir votre navigateur... 
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Nouvelle page spéciale&amp;nbsp;: Qui est en ligne&amp;nbsp;!=====
[[Spécial:Qui est en ligne]]
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Ajout d'un &quot;chat-room&quot; au forum. Pour chaque article vous avez la possibilité d'ouvrir un '''salon''' pour discuter en direct...=====
Parfaitement inutile&amp;nbsp;? Peut-être pas... 

&lt;br&gt; [[Image:Capture d'écran124.jpeg]] 

Possibilité de n'ouvrir qu'un seul &quot;salon&quot; pour l'ensemble du forum&amp;nbsp;? Vos avis&amp;nbsp;?
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Ajout de l'extension &quot;CategoryTree&quot;=====
Un exemple vaut mieux qu'un long discours&amp;nbsp;: 

&lt;categorytree mode=&quot;pages&quot; style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:orange;&quot;&gt;Commandes&lt;/categorytree&gt; Ou plus simplement &lt;categorytree mode=&quot;pages&quot;&gt;Commandes&lt;/categorytree&gt; 
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Ajout d'une fonction WYSIWYG à l'édition=====
[[Image:Capture d'écran122.jpeg]] 

'''Attention, il y a un prix&amp;nbsp;: cela alourdit la navigation...''' 
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Mise à jour du forum de la version 2.4.1 à 2.4.3=====
&lt;blockquote&gt;J'espère que cela va régler un certains nombres de petits &quot;bugs&quot;&lt;/blockquote&gt; 
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Un forum interne doublé d'un service de messagerie...=====
&lt;blockquote&gt;'''&lt;u&gt;Le forum interne permet d'envoyer des messages privés à l'intérieur du Wiki, et par mail&amp;nbsp;!&lt;/u&gt;''' Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt; 
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Un forum interne&amp;nbsp;!=====
&lt;blockquote&gt;Amélioration sans doute, '''&lt;u&gt;le Wiki s'est doté d'un forum&lt;/u&gt;''' afin de permettre aux membres de discuter, en toute liberté. Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt;
&lt;/noinclude&gt;



[[Template:DernièresNouvelles|Voir toutes les nouvelles]]</text>
      <sha1>t441bfpmaefrbmxklehle92f9ilsu3t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4559</id>
      <parentid>4558</parentid>
      <timestamp>2012-10-28T07:38:59Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="12426">__NOTOC__


===== Les actualités du Wiki...  =====
&lt;noinclude&gt;
Classées du plus au moins récent...
&lt;/noinclude&gt;


=====Le 22 septembre 2012=====
&lt;noinclude&gt;
Mise à jour de sécurité =&gt; MediaWiki 1.19.2 [http://www.mediawiki.org/wiki/Release_notes/1.19 Note de version]
&lt;/noinclude&gt;

=====Le aout 2012=====
&lt;noinclude&gt;
Activation du ssl sur le Wiki [https://www.isalo.org/wiki.debian-fr/index.php?title=Accueil wiki.debian-fr]
&lt;/noinclude&gt;

=====Le 5 mai, mise à jour vers Mediawiki 1.19.0!=====
&lt;noinclude&gt;&lt;/noinclude&gt;

=====Le 28 avril 2012: Mise à jour Wiki vers 1.18.2 (1.18.3 échoué)=====
&lt;noinclude&gt;&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Le 24 avril 2012: Ajout de l'extension '''&quot;Collection&quot;'''.=====
Cette extension permet d'organiser et d'exporter dans divers formats (pdf pour l'instant, libre office à venir) une page ou une sélection de pages du Wiki.
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Le Wiki à basculé sur l'ipv6!=====
http://pix.isalo.org/upload/thumb/1334318888.jpg
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Le 26 mars 2012: Ajout de l'extension CollapsableText.=====
&lt;collapsetext&gt;Ceci est le titre (toujours visible - Cliquez sur la flèche pour voir le texte complet). Ceci est le texte &quot;caché&quot; (visible quand il est &quot;déroulé&quot; ).&lt;/collapsetext&gt;
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Le 23/02/2012: Activation de la possibilité d'insérer des images de pix.isalo.org=====
Image:
http://pix.isalo.org/upload/original/1293897717.gif

Miniature:
http://pix.isalo.org/upload/thumb/1329911740.png
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Le 2 février 2012: Mise à niveau du Wiki ver 1.18.1=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Le 1er février 2012: Activation des formules mathématiques avec le système TeX.=====

&lt;math&gt;
f(x) = \begin{cases}1 &amp; -1 \le x &lt; 0\\
 \frac{1}{2} &amp; x = 0\\x&amp;0&lt;x\le 1\end{cases}
&lt;/math&gt;


&lt;math&gt;
{}_pF_q(a_1,\ldots,a_p;c_1,\ldots,c_q;z) = \sum_{n=0}^\infty 
 \frac{(a_1)_n\cdots(a_p)_n}{(c_1)_n\cdots(c_q)_n}\frac{z^n}{n!}\,
&lt;/math&gt;


&lt;math&gt;
  \operatorname{erfc}(x) =
  \frac{2}{\sqrt{\pi}} \int_x^{\infty} e^{-t^2}\,dt =
  \frac{e^{-x^2}}{x\sqrt{\pi}}\sum_{n=0}^\infty (-1)^n \frac{(2n)!}{n!(2x)^{2n}}
 &lt;/math&gt;
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Le 13 janvier 2012: Mise à jour du Wiki vers la version 1.17.1=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====06 août 2011: Ajout de l'extension [http://www.mediawiki.org/wiki/Extension:Widgets widget]=====
Premier essai sur le widget &quot;follow me on twitter&quot;

{{#widget:Twitter Follow
|twitter=debian
|what=me
}}
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====31 juillet 2011 - Ajout d'une page de contact: [[Spécial:Contact]]=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Affichez votre &quot;twitter&quot; dans votre page perso &quot;Wiki&quot;=====
Utilisation:
&lt;code&gt;&lt;twitterfeed id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;
&lt;code&gt;&lt;twitterfeed nb=&quot;nb-of-tweets&quot; id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Mise à niveau vers 1.17 ce 29/07/2011=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====J'ai cédé à la sirène Google +1...=====
{{Template: Social}}
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Mise à niveau du Wiki vers la version 1.16.5=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Mise à jour du forum interne de 2.5.11 vers 2.5.12 [http://wiki.anotherwebcom.com/Category:AWC%27s_MediaWiki_Forum_Extension AWC Forum]=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Ajout d'un service de partage d'images : [http://pix.isalo.org/ Hébergement d'images]=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Ajout d'un outil de partage et de collaboration pour le débogage : [http://paste.isalo.org/ Un pastbin]=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Le Wiki est désormais accessible 24/24, 7/7 et... 365/365 :)=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Ajout de deux extensions : EasyTimeline et PDF Handler=====
[http://www.isalo.org/wiki.debian-fr/index.php/Test_timeline exemple Easy Timeline]
[http://www.isalo.org/wiki.debian-fr/index.php/Test.pdf exemple Pdf Handler]
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Modification des autorisation du forum interne (section pause-café uniquement). Autorisation de lecture pour les utilisateurs &quot;anonymes&quot;.=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Pour &quot;les forts en CSS&quot;, ajout de l'extension '''CSS''', une fonction du parseur qui permet d’inclure des feuilles de style sur vos pages de Wiki.=====
Exemple sur [[Test.css|cette page]]
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Remise en fonction des [[Spécial:Téléversement_multiple|téléversements multiples - Version trunk r76488]] (10 fichiers au maximun).=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Mise à jour du Wiki 1.16 à 1.16wmf4=====
[http://www.isalo.org/wiki.debian-fr/index.php/Sp%C3%A9cial:Version Version]
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Mise à jour du forum interne (awc extension): 2.5.10 à 2.5.11=====
&lt;s&gt;Quelques liens dans le menu principal on souffert de la MAJ. Restauration ce soir ou demain.&lt;/s&gt;

[[Utilisateur:Lol|Lol]] 16 novembre 2010 à 18:31 (EAT)
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====* Changement de serveur et de branche ce 28/10/2010...=====
Le Wiki est désormais hébergé sur une squeeze!

 Linux lol 2.6.32-5-amd64 #1 SMP Wed Oct 20 00:05:22 UTC 2010 x86_64 GNU/Linux
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====* Mise à jour de notre Wiki qui passe de la version 1.15 à la dernière version 1.16=====
Il reste encore quelques réglages, mais dans l'ensemble... c'est bon!
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====&lt;s&gt;* Ajout d'une page pour les téléversements multiples...=====
[[Spécial:Téléversement_multiple]]&lt;/s&gt;

Fonction désactivée car ''incompatible avec la version 1.16'' du Wiki.
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====* Ajout de l'extension 'GeSHiCodeTag'=====
Permet la coloration syntaxique des lignes de codes... Très joli, et très pratique :)

Exemples

:&gt; &quot;code tag&quot; avancé
&lt;nowiki&gt;&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé avec numérotation
&lt;nowiki&gt;&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé par défaut
&lt;nowiki&gt;&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; Liste des langages supportés :
 &lt;nowiki&gt;&lt;code list&gt;&lt;/code&gt;&lt;/nowiki&gt;

 xbasic ecmascript io vb email pcre lotusscript per matlab awk plsql perl6 oracle11 powershell '''xorg_conf'''
 sdlbasic '''sql''' csharp autoit magiksf mapbasic visualprolog oobas delphi klonecpp rails sas actionscript
 cpp lolcode vbnet javascript abap ocaml dcs idl glsl progress gwbasic blitzbasic avisynth cfm smalltalk '''ruby'''
 asm lscript oracle8 scheme systemverilog '''diff''' fo vala modula2 mmix mirc kixtart ini newlisp vhdl qbasic
 fsharp cfdg genie mpasm java5 '''c''' dot logtalk inno providex caddcl asp hq9plus gambas '''vim''' bf oberon2 '''apache'''
 mxml q php cmake java oz whitespace lua rebol rsplus chaiscript html4strict gnuplot thinbasic '''div''' locobasic
 gml typoscript pixelbender purebasic verilog scilab actionscript3 xml j winbatch klonec autohotkey applescript
 freebasic teraterm '''css''' objc xpp m68k '''make''' clojure tsql apt_sources nsis bibtex cpp-qt lisp gettext dos modula3
 python ocaml-brief autoconf php-brief cobol pf haskell '''erlang''' pic16 intercal c_mac rpmspec '''perl''' pike oxygene
 4cs boo '''bash''' tcl cadlisp pascal powerbuilder hicest lotusformulas text properties fortran postgresql basic4gl
 jquery povray ada eiffel robots '''mysql''' cuesheet z80 d scala prolog icon '''whois''' cil '''latex''' gdb smarty visualfoxpro
 unicon bnf lsl2 genero reg groovy

Un exemple :

Le script suivant encadré de &lt;nowiki&gt;&lt;code bash&gt;votre script ici&lt;/code&gt;&lt;/nowiki&gt;

 #! /bin/sh
 
 N=/etc/init.d/sudo
 
 set -e
 
 case &quot;$1&quot; in
   start)
 	# make sure privileges don't persist across reboots
 	if [ -d /var/lib/sudo ]
 	then
                 find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
 	fi
 	;;
   stop|reload|restart|force-reload)
 	;;
   *)
 	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
 	exit 1
 	;;
 esac
 
 exit 0

Donnera :

&lt;code bash&gt;#! /bin/sh

N=/etc/init.d/sudo

set -e

case &quot;$1&quot; in
  start)
	# make sure privileges don't persist across reboots
	if [ -d /var/lib/sudo ]
	then
                find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
	fi
	;;
  stop|reload|restart|force-reload)
	;;
  *)
	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
	exit 1
	;;
esac

exit 0
&lt;/code&gt;

Bien plus lisible !
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====* La TRèS bonne nouvelle de la journée !=====
'''Squeeze est gelée ce 6 aout 2010 !'''

[http://www.debian.org/News/2010/20100806 L'annonce ICI]
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====* Nouvelle page Spéciale : Livre d'or... Ici : [[Spécial:Guestbook|Spécial:Guestbook]]=====
Permet aux invités de laisser un message; Il faut encore que j'ajoute un lien au menu général!
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Mise à jour du forum interne vers la version 2.5.10=====
Possibilité de faire des sondages...

Ouvrez une nouvelle discussion, enregistrez;
Ajoutez un sondage à votre discussion, c'est tout !

La mise à jour à apportée un nouveau menu au forum (en bas à gauche)
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====* Avec la réinstallation forcée suite au crash d'un disque dur, passage à la version 1.15.4 (déjà dépassée... la version 1.16 et 1.15.5 venant de sortir...)=====
N'hésitez pas à visiter [[Spécial:Pages_spéciales|les pages spéciales]] !
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Le support des fichiers svg (graphique vectoriel adaptable) est opérationnel&amp;nbsp;!=====
[[Fichier:Chess game 01.svg]]
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Page Spéciale bien pratique pour suivre les nouveaux articles, discussions...&amp;nbsp;!=====

[[Spécial:Newestpages]] 
Plus facile de se repérer que dans la page spéciale &quot;Modifications récentes&quot;. Nous ne risquons pas de perdre des articles en route...
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Nous allons pouvoir faire des sondages&amp;nbsp;!=====
[[Spécial:Voter]] 

Vous pouvez voter plusieurs fois, mais seul le dernier vote est pris en compte... Un vote par utilisateur&amp;nbsp;! 

Votez dès maintenant pour le maître de l'univers... 
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Option de prise en charge de vos css personnels activée...=====
Vous pouvez récupérer ici des css&amp;nbsp;: [http://www.mediawiki.org/wiki/Manual:Gallery_of_user_styles Manual:Gallery_of_user_styles] - ou créer votre propre css... Les skins utilisés dans notre mediawiki sont listés dans votre page de préférences (en haut à gauche). Il suffit de créer votre page de skin (en général Utilisateur:votre_super_pseudo/monobook.css et Utilisateur:votre_super_pseudo/monobook.js pour ceux nécessitant un js) et de rafraîchir votre navigateur... 
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Nouvelle page spéciale&amp;nbsp;: Qui est en ligne&amp;nbsp;!=====
[[Spécial:Qui est en ligne]]
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Ajout d'un &quot;chat-room&quot; au forum. Pour chaque article vous avez la possibilité d'ouvrir un '''salon''' pour discuter en direct...=====
Parfaitement inutile&amp;nbsp;? Peut-être pas... 

&lt;br&gt; [[Image:Capture d'écran124.jpeg]] 

Possibilité de n'ouvrir qu'un seul &quot;salon&quot; pour l'ensemble du forum&amp;nbsp;? Vos avis&amp;nbsp;?
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Ajout de l'extension &quot;CategoryTree&quot;=====
Un exemple vaut mieux qu'un long discours&amp;nbsp;: 

&lt;categorytree mode=&quot;pages&quot; style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:orange;&quot;&gt;Commandes&lt;/categorytree&gt; Ou plus simplement &lt;categorytree mode=&quot;pages&quot;&gt;Commandes&lt;/categorytree&gt; 
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Ajout d'une fonction WYSIWYG à l'édition=====
[[Image:Capture d'écran122.jpeg]] 

'''Attention, il y a un prix&amp;nbsp;: cela alourdit la navigation...''' 
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Mise à jour du forum de la version 2.4.1 à 2.4.3=====
&lt;blockquote&gt;J'espère que cela va régler un certains nombres de petits &quot;bugs&quot;&lt;/blockquote&gt; 
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Un forum interne doublé d'un service de messagerie...=====
&lt;blockquote&gt;'''&lt;u&gt;Le forum interne permet d'envoyer des messages privés à l'intérieur du Wiki, et par mail&amp;nbsp;!&lt;/u&gt;''' Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt; 
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Un forum interne&amp;nbsp;!=====
&lt;blockquote&gt;Amélioration sans doute, '''&lt;u&gt;le Wiki s'est doté d'un forum&lt;/u&gt;''' afin de permettre aux membres de discuter, en toute liberté. Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt;
&lt;/noinclude&gt;



[[Template:DernièresNouvelles|Voir toutes les nouvelles]]</text>
      <sha1>n2v0htvdktrpkpxllqtrkwbfeo36rle</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4624</id>
      <parentid>4559</parentid>
      <timestamp>2012-10-29T06:57:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="12554">__NOTOC__

=====Le 29 octobre 2012=====
&lt;noinclude&gt;Ajout d'une page contenant deux recherches google ciblées: Sur le forum.debian-fr.org et sur divers sites francophones Debian et GNU/Linux.
[[Recherche_debian|Recherches Debian]]
&lt;/noinclude&gt;

=====Le 22 septembre 2012=====
&lt;noinclude&gt;
Mise à jour de sécurité =&gt; MediaWiki 1.19.2 [http://www.mediawiki.org/wiki/Release_notes/1.19 Note de version]
&lt;/noinclude&gt;

=====Le aout 2012=====
&lt;noinclude&gt;
Activation du ssl sur le Wiki [https://www.isalo.org/wiki.debian-fr/index.php?title=Accueil wiki.debian-fr]
&lt;/noinclude&gt;

=====Le 5 mai, mise à jour vers Mediawiki 1.19.0!=====
&lt;noinclude&gt;&lt;/noinclude&gt;

=====Le 28 avril 2012: Mise à jour Wiki vers 1.18.2 (1.18.3 échoué)=====
&lt;noinclude&gt;&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Le 24 avril 2012: Ajout de l'extension '''&quot;Collection&quot;'''.=====
Cette extension permet d'organiser et d'exporter dans divers formats (pdf pour l'instant, libre office à venir) une page ou une sélection de pages du Wiki.
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Le Wiki à basculé sur l'ipv6!=====
http://pix.isalo.org/upload/thumb/1334318888.jpg
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Le 26 mars 2012: Ajout de l'extension CollapsableText.=====
&lt;collapsetext&gt;Ceci est le titre (toujours visible - Cliquez sur la flèche pour voir le texte complet). Ceci est le texte &quot;caché&quot; (visible quand il est &quot;déroulé&quot; ).&lt;/collapsetext&gt;
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Le 23/02/2012: Activation de la possibilité d'insérer des images de pix.isalo.org=====
Image:
http://pix.isalo.org/upload/original/1293897717.gif

Miniature:
http://pix.isalo.org/upload/thumb/1329911740.png
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Le 2 février 2012: Mise à niveau du Wiki ver 1.18.1=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Le 1er février 2012: Activation des formules mathématiques avec le système TeX.=====

&lt;math&gt;
f(x) = \begin{cases}1 &amp; -1 \le x &lt; 0\\
 \frac{1}{2} &amp; x = 0\\x&amp;0&lt;x\le 1\end{cases}
&lt;/math&gt;


&lt;math&gt;
{}_pF_q(a_1,\ldots,a_p;c_1,\ldots,c_q;z) = \sum_{n=0}^\infty 
 \frac{(a_1)_n\cdots(a_p)_n}{(c_1)_n\cdots(c_q)_n}\frac{z^n}{n!}\,
&lt;/math&gt;


&lt;math&gt;
  \operatorname{erfc}(x) =
  \frac{2}{\sqrt{\pi}} \int_x^{\infty} e^{-t^2}\,dt =
  \frac{e^{-x^2}}{x\sqrt{\pi}}\sum_{n=0}^\infty (-1)^n \frac{(2n)!}{n!(2x)^{2n}}
 &lt;/math&gt;
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Le 13 janvier 2012: Mise à jour du Wiki vers la version 1.17.1=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====06 août 2011: Ajout de l'extension [http://www.mediawiki.org/wiki/Extension:Widgets widget]=====
Premier essai sur le widget &quot;follow me on twitter&quot;

{{#widget:Twitter Follow
|twitter=debian
|what=me
}}
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====31 juillet 2011 - Ajout d'une page de contact: [[Spécial:Contact]]=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Affichez votre &quot;twitter&quot; dans votre page perso &quot;Wiki&quot;=====
Utilisation:
&lt;code&gt;&lt;twitterfeed id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;
&lt;code&gt;&lt;twitterfeed nb=&quot;nb-of-tweets&quot; id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Mise à niveau vers 1.17 ce 29/07/2011=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====J'ai cédé à la sirène Google +1...=====
{{Template: Social}}
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Mise à niveau du Wiki vers la version 1.16.5=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Mise à jour du forum interne de 2.5.11 vers 2.5.12 [http://wiki.anotherwebcom.com/Category:AWC%27s_MediaWiki_Forum_Extension AWC Forum]=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Ajout d'un service de partage d'images : [http://pix.isalo.org/ Hébergement d'images]=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Ajout d'un outil de partage et de collaboration pour le débogage : [http://paste.isalo.org/ Un pastbin]=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Le Wiki est désormais accessible 24/24, 7/7 et... 365/365 :)=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Ajout de deux extensions : EasyTimeline et PDF Handler=====
[http://www.isalo.org/wiki.debian-fr/index.php/Test_timeline exemple Easy Timeline]
[http://www.isalo.org/wiki.debian-fr/index.php/Test.pdf exemple Pdf Handler]
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Modification des autorisation du forum interne (section pause-café uniquement). Autorisation de lecture pour les utilisateurs &quot;anonymes&quot;.=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Pour &quot;les forts en CSS&quot;, ajout de l'extension '''CSS''', une fonction du parseur qui permet d’inclure des feuilles de style sur vos pages de Wiki.=====
Exemple sur [[Test.css|cette page]]
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Remise en fonction des [[Spécial:Téléversement_multiple|téléversements multiples - Version trunk r76488]] (10 fichiers au maximun).=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Mise à jour du Wiki 1.16 à 1.16wmf4=====
[http://www.isalo.org/wiki.debian-fr/index.php/Sp%C3%A9cial:Version Version]
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Mise à jour du forum interne (awc extension): 2.5.10 à 2.5.11=====
&lt;s&gt;Quelques liens dans le menu principal on souffert de la MAJ. Restauration ce soir ou demain.&lt;/s&gt;

[[Utilisateur:Lol|Lol]] 16 novembre 2010 à 18:31 (EAT)
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====* Changement de serveur et de branche ce 28/10/2010...=====
Le Wiki est désormais hébergé sur une squeeze!

 Linux lol 2.6.32-5-amd64 #1 SMP Wed Oct 20 00:05:22 UTC 2010 x86_64 GNU/Linux
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====* Mise à jour de notre Wiki qui passe de la version 1.15 à la dernière version 1.16=====
Il reste encore quelques réglages, mais dans l'ensemble... c'est bon!
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====&lt;s&gt;* Ajout d'une page pour les téléversements multiples...=====
[[Spécial:Téléversement_multiple]]&lt;/s&gt;

Fonction désactivée car ''incompatible avec la version 1.16'' du Wiki.
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====* Ajout de l'extension 'GeSHiCodeTag'=====
Permet la coloration syntaxique des lignes de codes... Très joli, et très pratique :)

Exemples

:&gt; &quot;code tag&quot; avancé
&lt;nowiki&gt;&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé avec numérotation
&lt;nowiki&gt;&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé par défaut
&lt;nowiki&gt;&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; Liste des langages supportés :
 &lt;nowiki&gt;&lt;code list&gt;&lt;/code&gt;&lt;/nowiki&gt;

 xbasic ecmascript io vb email pcre lotusscript per matlab awk plsql perl6 oracle11 powershell '''xorg_conf'''
 sdlbasic '''sql''' csharp autoit magiksf mapbasic visualprolog oobas delphi klonecpp rails sas actionscript
 cpp lolcode vbnet javascript abap ocaml dcs idl glsl progress gwbasic blitzbasic avisynth cfm smalltalk '''ruby'''
 asm lscript oracle8 scheme systemverilog '''diff''' fo vala modula2 mmix mirc kixtart ini newlisp vhdl qbasic
 fsharp cfdg genie mpasm java5 '''c''' dot logtalk inno providex caddcl asp hq9plus gambas '''vim''' bf oberon2 '''apache'''
 mxml q php cmake java oz whitespace lua rebol rsplus chaiscript html4strict gnuplot thinbasic '''div''' locobasic
 gml typoscript pixelbender purebasic verilog scilab actionscript3 xml j winbatch klonec autohotkey applescript
 freebasic teraterm '''css''' objc xpp m68k '''make''' clojure tsql apt_sources nsis bibtex cpp-qt lisp gettext dos modula3
 python ocaml-brief autoconf php-brief cobol pf haskell '''erlang''' pic16 intercal c_mac rpmspec '''perl''' pike oxygene
 4cs boo '''bash''' tcl cadlisp pascal powerbuilder hicest lotusformulas text properties fortran postgresql basic4gl
 jquery povray ada eiffel robots '''mysql''' cuesheet z80 d scala prolog icon '''whois''' cil '''latex''' gdb smarty visualfoxpro
 unicon bnf lsl2 genero reg groovy

Un exemple :

Le script suivant encadré de &lt;nowiki&gt;&lt;code bash&gt;votre script ici&lt;/code&gt;&lt;/nowiki&gt;

 #! /bin/sh
 
 N=/etc/init.d/sudo
 
 set -e
 
 case &quot;$1&quot; in
   start)
 	# make sure privileges don't persist across reboots
 	if [ -d /var/lib/sudo ]
 	then
                 find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
 	fi
 	;;
   stop|reload|restart|force-reload)
 	;;
   *)
 	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
 	exit 1
 	;;
 esac
 
 exit 0

Donnera :

&lt;code bash&gt;#! /bin/sh

N=/etc/init.d/sudo

set -e

case &quot;$1&quot; in
  start)
	# make sure privileges don't persist across reboots
	if [ -d /var/lib/sudo ]
	then
                find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
	fi
	;;
  stop|reload|restart|force-reload)
	;;
  *)
	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
	exit 1
	;;
esac

exit 0
&lt;/code&gt;

Bien plus lisible !
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====* La TRèS bonne nouvelle de la journée !=====
'''Squeeze est gelée ce 6 aout 2010 !'''

[http://www.debian.org/News/2010/20100806 L'annonce ICI]
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====* Nouvelle page Spéciale : Livre d'or... Ici : [[Spécial:Guestbook|Spécial:Guestbook]]=====
Permet aux invités de laisser un message; Il faut encore que j'ajoute un lien au menu général!
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Mise à jour du forum interne vers la version 2.5.10=====
Possibilité de faire des sondages...

Ouvrez une nouvelle discussion, enregistrez;
Ajoutez un sondage à votre discussion, c'est tout !

La mise à jour à apportée un nouveau menu au forum (en bas à gauche)
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====* Avec la réinstallation forcée suite au crash d'un disque dur, passage à la version 1.15.4 (déjà dépassée... la version 1.16 et 1.15.5 venant de sortir...)=====
N'hésitez pas à visiter [[Spécial:Pages_spéciales|les pages spéciales]] !
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Le support des fichiers svg (graphique vectoriel adaptable) est opérationnel&amp;nbsp;!=====
[[Fichier:Chess game 01.svg]]
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Page Spéciale bien pratique pour suivre les nouveaux articles, discussions...&amp;nbsp;!=====

[[Spécial:Newestpages]] 
Plus facile de se repérer que dans la page spéciale &quot;Modifications récentes&quot;. Nous ne risquons pas de perdre des articles en route...
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Nous allons pouvoir faire des sondages&amp;nbsp;!=====
[[Spécial:Voter]] 

Vous pouvez voter plusieurs fois, mais seul le dernier vote est pris en compte... Un vote par utilisateur&amp;nbsp;! 

Votez dès maintenant pour le maître de l'univers... 
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Option de prise en charge de vos css personnels activée...=====
Vous pouvez récupérer ici des css&amp;nbsp;: [http://www.mediawiki.org/wiki/Manual:Gallery_of_user_styles Manual:Gallery_of_user_styles] - ou créer votre propre css... Les skins utilisés dans notre mediawiki sont listés dans votre page de préférences (en haut à gauche). Il suffit de créer votre page de skin (en général Utilisateur:votre_super_pseudo/monobook.css et Utilisateur:votre_super_pseudo/monobook.js pour ceux nécessitant un js) et de rafraîchir votre navigateur... 
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Nouvelle page spéciale&amp;nbsp;: Qui est en ligne&amp;nbsp;!=====
[[Spécial:Qui est en ligne]]
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Ajout d'un &quot;chat-room&quot; au forum. Pour chaque article vous avez la possibilité d'ouvrir un '''salon''' pour discuter en direct...=====
Parfaitement inutile&amp;nbsp;? Peut-être pas... 

&lt;br&gt; [[Image:Capture d'écran124.jpeg]] 

Possibilité de n'ouvrir qu'un seul &quot;salon&quot; pour l'ensemble du forum&amp;nbsp;? Vos avis&amp;nbsp;?
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Ajout de l'extension &quot;CategoryTree&quot;=====
Un exemple vaut mieux qu'un long discours&amp;nbsp;: 

&lt;categorytree mode=&quot;pages&quot; style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:orange;&quot;&gt;Commandes&lt;/categorytree&gt; Ou plus simplement &lt;categorytree mode=&quot;pages&quot;&gt;Commandes&lt;/categorytree&gt; 
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Ajout d'une fonction WYSIWYG à l'édition=====
[[Image:Capture d'écran122.jpeg]] 

'''Attention, il y a un prix&amp;nbsp;: cela alourdit la navigation...''' 
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Mise à jour du forum de la version 2.4.1 à 2.4.3=====
&lt;blockquote&gt;J'espère que cela va régler un certains nombres de petits &quot;bugs&quot;&lt;/blockquote&gt; 
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Un forum interne doublé d'un service de messagerie...=====
&lt;blockquote&gt;'''&lt;u&gt;Le forum interne permet d'envoyer des messages privés à l'intérieur du Wiki, et par mail&amp;nbsp;!&lt;/u&gt;''' Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt; 
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Un forum interne&amp;nbsp;!=====
&lt;blockquote&gt;Amélioration sans doute, '''&lt;u&gt;le Wiki s'est doté d'un forum&lt;/u&gt;''' afin de permettre aux membres de discuter, en toute liberté. Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt;
&lt;/noinclude&gt;



[[Template:DernièresNouvelles|Voir toutes les nouvelles]]</text>
      <sha1>cqkduxhx07k5h4m9gyu18afsi8e8v1a</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4625</id>
      <parentid>4624</parentid>
      <timestamp>2012-10-29T07:24:20Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="12556">__NOTOC__

=====Le 29 octobre 2012=====
&lt;noinclude&gt;Ajout d'une page contenant deux recherches google ciblées: Sur le forum.debian-fr.org et sur divers sites francophones Debian et GNU/Linux.
[[Recherche_debian|Recherches Debian]]
&lt;/noinclude&gt;

=====Le 22 septembre 2012=====
&lt;noinclude&gt;
Mise à jour de sécurité =&gt; MediaWiki 1.19.2 [http://www.mediawiki.org/wiki/Release_notes/1.19 Note de version]
&lt;/noinclude&gt;

=====Le aout 2012=====
&lt;noinclude&gt;
Activation du ssl sur le Wiki [https://www.isalo.org/wiki.debian-fr/index.php?title=Accueil wiki.debian-fr]
&lt;/noinclude&gt;

=====Le 5 mai, mise à jour vers Mediawiki 1.19.0!=====
&lt;noinclude&gt;&lt;/noinclude&gt;

=====Le 28 avril 2012: Mise à jour Wiki vers 1.18.2 (1.18.3 échoué)=====
&lt;noinclude&gt;&lt;/noinclude&gt;


=====Le 24 avril 2012: Ajout de l'extension '''&quot;Collection&quot;'''.=====
&lt;noinclude&gt;
Cette extension permet d'organiser et d'exporter dans divers formats (pdf pour l'instant, libre office à venir) une page ou une sélection de pages du Wiki.
&lt;/noinclude&gt;


=====Le Wiki à basculé sur l'ipv6!=====
&lt;noinclude&gt;
http://pix.isalo.org/upload/thumb/1334318888.jpg
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Le 26 mars 2012: Ajout de l'extension CollapsableText.=====
&lt;collapsetext&gt;Ceci est le titre (toujours visible - Cliquez sur la flèche pour voir le texte complet). Ceci est le texte &quot;caché&quot; (visible quand il est &quot;déroulé&quot; ).&lt;/collapsetext&gt;
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Le 23/02/2012: Activation de la possibilité d'insérer des images de pix.isalo.org=====
Image:
http://pix.isalo.org/upload/original/1293897717.gif

Miniature:
http://pix.isalo.org/upload/thumb/1329911740.png
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Le 2 février 2012: Mise à niveau du Wiki ver 1.18.1=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Le 1er février 2012: Activation des formules mathématiques avec le système TeX.=====

&lt;math&gt;
f(x) = \begin{cases}1 &amp; -1 \le x &lt; 0\\
 \frac{1}{2} &amp; x = 0\\x&amp;0&lt;x\le 1\end{cases}
&lt;/math&gt;


&lt;math&gt;
{}_pF_q(a_1,\ldots,a_p;c_1,\ldots,c_q;z) = \sum_{n=0}^\infty 
 \frac{(a_1)_n\cdots(a_p)_n}{(c_1)_n\cdots(c_q)_n}\frac{z^n}{n!}\,
&lt;/math&gt;


&lt;math&gt;
  \operatorname{erfc}(x) =
  \frac{2}{\sqrt{\pi}} \int_x^{\infty} e^{-t^2}\,dt =
  \frac{e^{-x^2}}{x\sqrt{\pi}}\sum_{n=0}^\infty (-1)^n \frac{(2n)!}{n!(2x)^{2n}}
 &lt;/math&gt;
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Le 13 janvier 2012: Mise à jour du Wiki vers la version 1.17.1=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====06 août 2011: Ajout de l'extension [http://www.mediawiki.org/wiki/Extension:Widgets widget]=====
Premier essai sur le widget &quot;follow me on twitter&quot;

{{#widget:Twitter Follow
|twitter=debian
|what=me
}}
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====31 juillet 2011 - Ajout d'une page de contact: [[Spécial:Contact]]=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Affichez votre &quot;twitter&quot; dans votre page perso &quot;Wiki&quot;=====
Utilisation:
&lt;code&gt;&lt;twitterfeed id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;
&lt;code&gt;&lt;twitterfeed nb=&quot;nb-of-tweets&quot; id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Mise à niveau vers 1.17 ce 29/07/2011=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====J'ai cédé à la sirène Google +1...=====
{{Template: Social}}
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Mise à niveau du Wiki vers la version 1.16.5=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Mise à jour du forum interne de 2.5.11 vers 2.5.12 [http://wiki.anotherwebcom.com/Category:AWC%27s_MediaWiki_Forum_Extension AWC Forum]=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Ajout d'un service de partage d'images : [http://pix.isalo.org/ Hébergement d'images]=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Ajout d'un outil de partage et de collaboration pour le débogage : [http://paste.isalo.org/ Un pastbin]=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Le Wiki est désormais accessible 24/24, 7/7 et... 365/365 :)=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Ajout de deux extensions : EasyTimeline et PDF Handler=====
[http://www.isalo.org/wiki.debian-fr/index.php/Test_timeline exemple Easy Timeline]
[http://www.isalo.org/wiki.debian-fr/index.php/Test.pdf exemple Pdf Handler]
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Modification des autorisation du forum interne (section pause-café uniquement). Autorisation de lecture pour les utilisateurs &quot;anonymes&quot;.=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Pour &quot;les forts en CSS&quot;, ajout de l'extension '''CSS''', une fonction du parseur qui permet d’inclure des feuilles de style sur vos pages de Wiki.=====
Exemple sur [[Test.css|cette page]]
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Remise en fonction des [[Spécial:Téléversement_multiple|téléversements multiples - Version trunk r76488]] (10 fichiers au maximun).=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Mise à jour du Wiki 1.16 à 1.16wmf4=====
[http://www.isalo.org/wiki.debian-fr/index.php/Sp%C3%A9cial:Version Version]
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Mise à jour du forum interne (awc extension): 2.5.10 à 2.5.11=====
&lt;s&gt;Quelques liens dans le menu principal on souffert de la MAJ. Restauration ce soir ou demain.&lt;/s&gt;

[[Utilisateur:Lol|Lol]] 16 novembre 2010 à 18:31 (EAT)
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====* Changement de serveur et de branche ce 28/10/2010...=====
Le Wiki est désormais hébergé sur une squeeze!

 Linux lol 2.6.32-5-amd64 #1 SMP Wed Oct 20 00:05:22 UTC 2010 x86_64 GNU/Linux
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====* Mise à jour de notre Wiki qui passe de la version 1.15 à la dernière version 1.16=====
Il reste encore quelques réglages, mais dans l'ensemble... c'est bon!
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====&lt;s&gt;* Ajout d'une page pour les téléversements multiples...=====
[[Spécial:Téléversement_multiple]]&lt;/s&gt;

Fonction désactivée car ''incompatible avec la version 1.16'' du Wiki.
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====* Ajout de l'extension 'GeSHiCodeTag'=====
Permet la coloration syntaxique des lignes de codes... Très joli, et très pratique :)

Exemples

:&gt; &quot;code tag&quot; avancé
&lt;nowiki&gt;&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé avec numérotation
&lt;nowiki&gt;&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé par défaut
&lt;nowiki&gt;&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; Liste des langages supportés :
 &lt;nowiki&gt;&lt;code list&gt;&lt;/code&gt;&lt;/nowiki&gt;

 xbasic ecmascript io vb email pcre lotusscript per matlab awk plsql perl6 oracle11 powershell '''xorg_conf'''
 sdlbasic '''sql''' csharp autoit magiksf mapbasic visualprolog oobas delphi klonecpp rails sas actionscript
 cpp lolcode vbnet javascript abap ocaml dcs idl glsl progress gwbasic blitzbasic avisynth cfm smalltalk '''ruby'''
 asm lscript oracle8 scheme systemverilog '''diff''' fo vala modula2 mmix mirc kixtart ini newlisp vhdl qbasic
 fsharp cfdg genie mpasm java5 '''c''' dot logtalk inno providex caddcl asp hq9plus gambas '''vim''' bf oberon2 '''apache'''
 mxml q php cmake java oz whitespace lua rebol rsplus chaiscript html4strict gnuplot thinbasic '''div''' locobasic
 gml typoscript pixelbender purebasic verilog scilab actionscript3 xml j winbatch klonec autohotkey applescript
 freebasic teraterm '''css''' objc xpp m68k '''make''' clojure tsql apt_sources nsis bibtex cpp-qt lisp gettext dos modula3
 python ocaml-brief autoconf php-brief cobol pf haskell '''erlang''' pic16 intercal c_mac rpmspec '''perl''' pike oxygene
 4cs boo '''bash''' tcl cadlisp pascal powerbuilder hicest lotusformulas text properties fortran postgresql basic4gl
 jquery povray ada eiffel robots '''mysql''' cuesheet z80 d scala prolog icon '''whois''' cil '''latex''' gdb smarty visualfoxpro
 unicon bnf lsl2 genero reg groovy

Un exemple :

Le script suivant encadré de &lt;nowiki&gt;&lt;code bash&gt;votre script ici&lt;/code&gt;&lt;/nowiki&gt;

 #! /bin/sh
 
 N=/etc/init.d/sudo
 
 set -e
 
 case &quot;$1&quot; in
   start)
 	# make sure privileges don't persist across reboots
 	if [ -d /var/lib/sudo ]
 	then
                 find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
 	fi
 	;;
   stop|reload|restart|force-reload)
 	;;
   *)
 	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
 	exit 1
 	;;
 esac
 
 exit 0

Donnera :

&lt;code bash&gt;#! /bin/sh

N=/etc/init.d/sudo

set -e

case &quot;$1&quot; in
  start)
	# make sure privileges don't persist across reboots
	if [ -d /var/lib/sudo ]
	then
                find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
	fi
	;;
  stop|reload|restart|force-reload)
	;;
  *)
	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
	exit 1
	;;
esac

exit 0
&lt;/code&gt;

Bien plus lisible !
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====* La TRèS bonne nouvelle de la journée !=====
'''Squeeze est gelée ce 6 aout 2010 !'''

[http://www.debian.org/News/2010/20100806 L'annonce ICI]
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====* Nouvelle page Spéciale : Livre d'or... Ici : [[Spécial:Guestbook|Spécial:Guestbook]]=====
Permet aux invités de laisser un message; Il faut encore que j'ajoute un lien au menu général!
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Mise à jour du forum interne vers la version 2.5.10=====
Possibilité de faire des sondages...

Ouvrez une nouvelle discussion, enregistrez;
Ajoutez un sondage à votre discussion, c'est tout !

La mise à jour à apportée un nouveau menu au forum (en bas à gauche)
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====* Avec la réinstallation forcée suite au crash d'un disque dur, passage à la version 1.15.4 (déjà dépassée... la version 1.16 et 1.15.5 venant de sortir...)=====
N'hésitez pas à visiter [[Spécial:Pages_spéciales|les pages spéciales]] !
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Le support des fichiers svg (graphique vectoriel adaptable) est opérationnel&amp;nbsp;!=====
[[Fichier:Chess game 01.svg]]
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Page Spéciale bien pratique pour suivre les nouveaux articles, discussions...&amp;nbsp;!=====

[[Spécial:Newestpages]] 
Plus facile de se repérer que dans la page spéciale &quot;Modifications récentes&quot;. Nous ne risquons pas de perdre des articles en route...
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Nous allons pouvoir faire des sondages&amp;nbsp;!=====
[[Spécial:Voter]] 

Vous pouvez voter plusieurs fois, mais seul le dernier vote est pris en compte... Un vote par utilisateur&amp;nbsp;! 

Votez dès maintenant pour le maître de l'univers... 
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Option de prise en charge de vos css personnels activée...=====
Vous pouvez récupérer ici des css&amp;nbsp;: [http://www.mediawiki.org/wiki/Manual:Gallery_of_user_styles Manual:Gallery_of_user_styles] - ou créer votre propre css... Les skins utilisés dans notre mediawiki sont listés dans votre page de préférences (en haut à gauche). Il suffit de créer votre page de skin (en général Utilisateur:votre_super_pseudo/monobook.css et Utilisateur:votre_super_pseudo/monobook.js pour ceux nécessitant un js) et de rafraîchir votre navigateur... 
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Nouvelle page spéciale&amp;nbsp;: Qui est en ligne&amp;nbsp;!=====
[[Spécial:Qui est en ligne]]
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Ajout d'un &quot;chat-room&quot; au forum. Pour chaque article vous avez la possibilité d'ouvrir un '''salon''' pour discuter en direct...=====
Parfaitement inutile&amp;nbsp;? Peut-être pas... 

&lt;br&gt; [[Image:Capture d'écran124.jpeg]] 

Possibilité de n'ouvrir qu'un seul &quot;salon&quot; pour l'ensemble du forum&amp;nbsp;? Vos avis&amp;nbsp;?
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Ajout de l'extension &quot;CategoryTree&quot;=====
Un exemple vaut mieux qu'un long discours&amp;nbsp;: 

&lt;categorytree mode=&quot;pages&quot; style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:orange;&quot;&gt;Commandes&lt;/categorytree&gt; Ou plus simplement &lt;categorytree mode=&quot;pages&quot;&gt;Commandes&lt;/categorytree&gt; 
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Ajout d'une fonction WYSIWYG à l'édition=====
[[Image:Capture d'écran122.jpeg]] 

'''Attention, il y a un prix&amp;nbsp;: cela alourdit la navigation...''' 
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Mise à jour du forum de la version 2.4.1 à 2.4.3=====
&lt;blockquote&gt;J'espère que cela va régler un certains nombres de petits &quot;bugs&quot;&lt;/blockquote&gt; 
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Un forum interne doublé d'un service de messagerie...=====
&lt;blockquote&gt;'''&lt;u&gt;Le forum interne permet d'envoyer des messages privés à l'intérieur du Wiki, et par mail&amp;nbsp;!&lt;/u&gt;''' Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt; 
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Un forum interne&amp;nbsp;!=====
&lt;blockquote&gt;Amélioration sans doute, '''&lt;u&gt;le Wiki s'est doté d'un forum&lt;/u&gt;''' afin de permettre aux membres de discuter, en toute liberté. Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt;
&lt;/noinclude&gt;



[[Template:DernièresNouvelles|Voir toutes les nouvelles]]</text>
      <sha1>jdfyq8gupuvzizxka1ymbc3kwlllstf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4626</id>
      <parentid>4625</parentid>
      <timestamp>2012-10-29T07:27:47Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="12382">__NOTOC__

=====Le 29 octobre 2012=====
Ajout d'une page contenant deux recherches google ciblées: Sur le forum.debian-fr.org et sur divers sites francophones Debian et GNU/Linux.
[[Recherche_debian|Recherches Debian]]

=====Le 22 septembre 2012=====
Mise à jour de sécurité =&gt; MediaWiki 1.19.2 [http://www.mediawiki.org/wiki/Release_notes/1.19 Note de version]

=====Le aout 2012=====
Activation du ssl sur le Wiki [https://www.isalo.org/wiki.debian-fr/index.php?title=Accueil wiki.debian-fr]

=====Le 5 mai, mise à jour vers Mediawiki 1.19.0!=====

=====Le 28 avril 2012: Mise à jour Wiki vers 1.18.2 (1.18.3 échoué)=====

=====Le 24 avril 2012: Ajout de l'extension '''&quot;Collection&quot;'''.=====
Cette extension permet d'organiser et d'exporter dans divers formats (pdf pour l'instant, libre office à venir) une page ou une sélection de pages du Wiki.

=====Le Wiki à basculé sur l'ipv6!=====
http://pix.isalo.org/upload/thumb/1334318888.jpg

&lt;noinclude&gt;
=====Le 26 mars 2012: Ajout de l'extension CollapsableText.=====
&lt;collapsetext&gt;Ceci est le titre (toujours visible - Cliquez sur la flèche pour voir le texte complet). Ceci est le texte &quot;caché&quot; (visible quand il est &quot;déroulé&quot; ).&lt;/collapsetext&gt;
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Le 23/02/2012: Activation de la possibilité d'insérer des images de pix.isalo.org=====
Image:
http://pix.isalo.org/upload/original/1293897717.gif

Miniature:
http://pix.isalo.org/upload/thumb/1329911740.png
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Le 2 février 2012: Mise à niveau du Wiki ver 1.18.1=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Le 1er février 2012: Activation des formules mathématiques avec le système TeX.=====

&lt;math&gt;
f(x) = \begin{cases}1 &amp; -1 \le x &lt; 0\\
 \frac{1}{2} &amp; x = 0\\x&amp;0&lt;x\le 1\end{cases}
&lt;/math&gt;


&lt;math&gt;
{}_pF_q(a_1,\ldots,a_p;c_1,\ldots,c_q;z) = \sum_{n=0}^\infty 
 \frac{(a_1)_n\cdots(a_p)_n}{(c_1)_n\cdots(c_q)_n}\frac{z^n}{n!}\,
&lt;/math&gt;


&lt;math&gt;
  \operatorname{erfc}(x) =
  \frac{2}{\sqrt{\pi}} \int_x^{\infty} e^{-t^2}\,dt =
  \frac{e^{-x^2}}{x\sqrt{\pi}}\sum_{n=0}^\infty (-1)^n \frac{(2n)!}{n!(2x)^{2n}}
 &lt;/math&gt;
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Le 13 janvier 2012: Mise à jour du Wiki vers la version 1.17.1=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====06 août 2011: Ajout de l'extension [http://www.mediawiki.org/wiki/Extension:Widgets widget]=====
Premier essai sur le widget &quot;follow me on twitter&quot;

{{#widget:Twitter Follow
|twitter=debian
|what=me
}}
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====31 juillet 2011 - Ajout d'une page de contact: [[Spécial:Contact]]=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Affichez votre &quot;twitter&quot; dans votre page perso &quot;Wiki&quot;=====
Utilisation:
&lt;code&gt;&lt;twitterfeed id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;
&lt;code&gt;&lt;twitterfeed nb=&quot;nb-of-tweets&quot; id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Mise à niveau vers 1.17 ce 29/07/2011=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====J'ai cédé à la sirène Google +1...=====
{{Template: Social}}
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Mise à niveau du Wiki vers la version 1.16.5=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Mise à jour du forum interne de 2.5.11 vers 2.5.12 [http://wiki.anotherwebcom.com/Category:AWC%27s_MediaWiki_Forum_Extension AWC Forum]=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Ajout d'un service de partage d'images : [http://pix.isalo.org/ Hébergement d'images]=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Ajout d'un outil de partage et de collaboration pour le débogage : [http://paste.isalo.org/ Un pastbin]=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Le Wiki est désormais accessible 24/24, 7/7 et... 365/365 :)=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Ajout de deux extensions : EasyTimeline et PDF Handler=====
[http://www.isalo.org/wiki.debian-fr/index.php/Test_timeline exemple Easy Timeline]
[http://www.isalo.org/wiki.debian-fr/index.php/Test.pdf exemple Pdf Handler]
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Modification des autorisation du forum interne (section pause-café uniquement). Autorisation de lecture pour les utilisateurs &quot;anonymes&quot;.=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Pour &quot;les forts en CSS&quot;, ajout de l'extension '''CSS''', une fonction du parseur qui permet d’inclure des feuilles de style sur vos pages de Wiki.=====
Exemple sur [[Test.css|cette page]]
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Remise en fonction des [[Spécial:Téléversement_multiple|téléversements multiples - Version trunk r76488]] (10 fichiers au maximun).=====
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Mise à jour du Wiki 1.16 à 1.16wmf4=====
[http://www.isalo.org/wiki.debian-fr/index.php/Sp%C3%A9cial:Version Version]
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====Mise à jour du forum interne (awc extension): 2.5.10 à 2.5.11=====
&lt;s&gt;Quelques liens dans le menu principal on souffert de la MAJ. Restauration ce soir ou demain.&lt;/s&gt;

[[Utilisateur:Lol|Lol]] 16 novembre 2010 à 18:31 (EAT)
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====* Changement de serveur et de branche ce 28/10/2010...=====
Le Wiki est désormais hébergé sur une squeeze!

 Linux lol 2.6.32-5-amd64 #1 SMP Wed Oct 20 00:05:22 UTC 2010 x86_64 GNU/Linux
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====* Mise à jour de notre Wiki qui passe de la version 1.15 à la dernière version 1.16=====
Il reste encore quelques réglages, mais dans l'ensemble... c'est bon!
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====&lt;s&gt;* Ajout d'une page pour les téléversements multiples...=====
[[Spécial:Téléversement_multiple]]&lt;/s&gt;

Fonction désactivée car ''incompatible avec la version 1.16'' du Wiki.
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====* Ajout de l'extension 'GeSHiCodeTag'=====
Permet la coloration syntaxique des lignes de codes... Très joli, et très pratique :)

Exemples

:&gt; &quot;code tag&quot; avancé
&lt;nowiki&gt;&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé avec numérotation
&lt;nowiki&gt;&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé par défaut
&lt;nowiki&gt;&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; Liste des langages supportés :
 &lt;nowiki&gt;&lt;code list&gt;&lt;/code&gt;&lt;/nowiki&gt;

 xbasic ecmascript io vb email pcre lotusscript per matlab awk plsql perl6 oracle11 powershell '''xorg_conf'''
 sdlbasic '''sql''' csharp autoit magiksf mapbasic visualprolog oobas delphi klonecpp rails sas actionscript
 cpp lolcode vbnet javascript abap ocaml dcs idl glsl progress gwbasic blitzbasic avisynth cfm smalltalk '''ruby'''
 asm lscript oracle8 scheme systemverilog '''diff''' fo vala modula2 mmix mirc kixtart ini newlisp vhdl qbasic
 fsharp cfdg genie mpasm java5 '''c''' dot logtalk inno providex caddcl asp hq9plus gambas '''vim''' bf oberon2 '''apache'''
 mxml q php cmake java oz whitespace lua rebol rsplus chaiscript html4strict gnuplot thinbasic '''div''' locobasic
 gml typoscript pixelbender purebasic verilog scilab actionscript3 xml j winbatch klonec autohotkey applescript
 freebasic teraterm '''css''' objc xpp m68k '''make''' clojure tsql apt_sources nsis bibtex cpp-qt lisp gettext dos modula3
 python ocaml-brief autoconf php-brief cobol pf haskell '''erlang''' pic16 intercal c_mac rpmspec '''perl''' pike oxygene
 4cs boo '''bash''' tcl cadlisp pascal powerbuilder hicest lotusformulas text properties fortran postgresql basic4gl
 jquery povray ada eiffel robots '''mysql''' cuesheet z80 d scala prolog icon '''whois''' cil '''latex''' gdb smarty visualfoxpro
 unicon bnf lsl2 genero reg groovy

Un exemple :

Le script suivant encadré de &lt;nowiki&gt;&lt;code bash&gt;votre script ici&lt;/code&gt;&lt;/nowiki&gt;

 #! /bin/sh
 
 N=/etc/init.d/sudo
 
 set -e
 
 case &quot;$1&quot; in
   start)
 	# make sure privileges don't persist across reboots
 	if [ -d /var/lib/sudo ]
 	then
                 find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
 	fi
 	;;
   stop|reload|restart|force-reload)
 	;;
   *)
 	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
 	exit 1
 	;;
 esac
 
 exit 0

Donnera :

&lt;code bash&gt;#! /bin/sh

N=/etc/init.d/sudo

set -e

case &quot;$1&quot; in
  start)
	# make sure privileges don't persist across reboots
	if [ -d /var/lib/sudo ]
	then
                find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
	fi
	;;
  stop|reload|restart|force-reload)
	;;
  *)
	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
	exit 1
	;;
esac

exit 0
&lt;/code&gt;

Bien plus lisible !
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====* La TRèS bonne nouvelle de la journée !=====
'''Squeeze est gelée ce 6 aout 2010 !'''

[http://www.debian.org/News/2010/20100806 L'annonce ICI]
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====* Nouvelle page Spéciale : Livre d'or... Ici : [[Spécial:Guestbook|Spécial:Guestbook]]=====
Permet aux invités de laisser un message; Il faut encore que j'ajoute un lien au menu général!
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Mise à jour du forum interne vers la version 2.5.10=====
Possibilité de faire des sondages...

Ouvrez une nouvelle discussion, enregistrez;
Ajoutez un sondage à votre discussion, c'est tout !

La mise à jour à apportée un nouveau menu au forum (en bas à gauche)
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====* Avec la réinstallation forcée suite au crash d'un disque dur, passage à la version 1.15.4 (déjà dépassée... la version 1.16 et 1.15.5 venant de sortir...)=====
N'hésitez pas à visiter [[Spécial:Pages_spéciales|les pages spéciales]] !
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Le support des fichiers svg (graphique vectoriel adaptable) est opérationnel&amp;nbsp;!=====
[[Fichier:Chess game 01.svg]]
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Page Spéciale bien pratique pour suivre les nouveaux articles, discussions...&amp;nbsp;!=====

[[Spécial:Newestpages]] 
Plus facile de se repérer que dans la page spéciale &quot;Modifications récentes&quot;. Nous ne risquons pas de perdre des articles en route...
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Nous allons pouvoir faire des sondages&amp;nbsp;!=====
[[Spécial:Voter]] 

Vous pouvez voter plusieurs fois, mais seul le dernier vote est pris en compte... Un vote par utilisateur&amp;nbsp;! 

Votez dès maintenant pour le maître de l'univers... 
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Option de prise en charge de vos css personnels activée...=====
Vous pouvez récupérer ici des css&amp;nbsp;: [http://www.mediawiki.org/wiki/Manual:Gallery_of_user_styles Manual:Gallery_of_user_styles] - ou créer votre propre css... Les skins utilisés dans notre mediawiki sont listés dans votre page de préférences (en haut à gauche). Il suffit de créer votre page de skin (en général Utilisateur:votre_super_pseudo/monobook.css et Utilisateur:votre_super_pseudo/monobook.js pour ceux nécessitant un js) et de rafraîchir votre navigateur... 
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Nouvelle page spéciale&amp;nbsp;: Qui est en ligne&amp;nbsp;!=====
[[Spécial:Qui est en ligne]]
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Ajout d'un &quot;chat-room&quot; au forum. Pour chaque article vous avez la possibilité d'ouvrir un '''salon''' pour discuter en direct...=====
Parfaitement inutile&amp;nbsp;? Peut-être pas... 

&lt;br&gt; [[Image:Capture d'écran124.jpeg]] 

Possibilité de n'ouvrir qu'un seul &quot;salon&quot; pour l'ensemble du forum&amp;nbsp;? Vos avis&amp;nbsp;?
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Ajout de l'extension &quot;CategoryTree&quot;=====
Un exemple vaut mieux qu'un long discours&amp;nbsp;: 

&lt;categorytree mode=&quot;pages&quot; style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:orange;&quot;&gt;Commandes&lt;/categorytree&gt; Ou plus simplement &lt;categorytree mode=&quot;pages&quot;&gt;Commandes&lt;/categorytree&gt; 
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Ajout d'une fonction WYSIWYG à l'édition=====
[[Image:Capture d'écran122.jpeg]] 

'''Attention, il y a un prix&amp;nbsp;: cela alourdit la navigation...''' 
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Mise à jour du forum de la version 2.4.1 à 2.4.3=====
&lt;blockquote&gt;J'espère que cela va régler un certains nombres de petits &quot;bugs&quot;&lt;/blockquote&gt; 
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Un forum interne doublé d'un service de messagerie...=====
&lt;blockquote&gt;'''&lt;u&gt;Le forum interne permet d'envoyer des messages privés à l'intérieur du Wiki, et par mail&amp;nbsp;!&lt;/u&gt;''' Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt; 
&lt;/noinclude&gt;

&lt;noinclude&gt;
=====*Un forum interne&amp;nbsp;!=====
&lt;blockquote&gt;Amélioration sans doute, '''&lt;u&gt;le Wiki s'est doté d'un forum&lt;/u&gt;''' afin de permettre aux membres de discuter, en toute liberté. Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt;
&lt;/noinclude&gt;



[[Template:DernièresNouvelles|Voir toutes les nouvelles]]</text>
      <sha1>r90izd03bywuprqdd5638cp4hway7tg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4627</id>
      <parentid>4626</parentid>
      <timestamp>2012-10-29T07:31:38Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="11419">__NOTOC__

=====Le 29 octobre 2012=====
Ajout d'une page contenant deux recherches google ciblées: Sur le forum.debian-fr.org et sur divers sites francophones Debian et GNU/Linux.
[[Recherche_debian|Recherches Debian]]

=====Le 22 septembre 2012=====
Mise à jour de sécurité =&gt; MediaWiki 1.19.2 [http://www.mediawiki.org/wiki/Release_notes/1.19 Note de version]

=====Le aout 2012=====
Activation du ssl sur le Wiki [https://www.isalo.org/wiki.debian-fr/index.php?title=Accueil wiki.debian-fr]

=====Le 5 mai, mise à jour vers Mediawiki 1.19.0!=====

=====Le 28 avril 2012: Mise à jour Wiki vers 1.18.2 (1.18.3 échoué)=====

=====Le 24 avril 2012: Ajout de l'extension '''&quot;Collection&quot;'''.=====
Cette extension permet d'organiser et d'exporter dans divers formats (pdf pour l'instant, libre office à venir) une page ou une sélection de pages du Wiki.

=====Le Wiki à basculé sur l'ipv6!=====
http://pix.isalo.org/upload/thumb/1334318888.jpg

&lt;noinclude&gt;
=====Le 26 mars 2012: Ajout de l'extension CollapsableText.=====
&lt;collapsetext&gt;Ceci est le titre (toujours visible - Cliquez sur la flèche pour voir le texte complet). Ceci est le texte &quot;caché&quot; (visible quand il est &quot;déroulé&quot; ).&lt;/collapsetext&gt;

=====Le 23/02/2012: Activation de la possibilité d'insérer des images de pix.isalo.org=====
Image:
http://pix.isalo.org/upload/original/1293897717.gif

Miniature:
http://pix.isalo.org/upload/thumb/1329911740.png

=====Le 2 février 2012: Mise à niveau du Wiki ver 1.18.1=====

=====Le 1er février 2012: Activation des formules mathématiques avec le système TeX.=====

&lt;math&gt;
f(x) = \begin{cases}1 &amp; -1 \le x &lt; 0\\
 \frac{1}{2} &amp; x = 0\\x&amp;0&lt;x\le 1\end{cases}
&lt;/math&gt;


&lt;math&gt;
{}_pF_q(a_1,\ldots,a_p;c_1,\ldots,c_q;z) = \sum_{n=0}^\infty 
 \frac{(a_1)_n\cdots(a_p)_n}{(c_1)_n\cdots(c_q)_n}\frac{z^n}{n!}\,
&lt;/math&gt;


&lt;math&gt;
  \operatorname{erfc}(x) =
  \frac{2}{\sqrt{\pi}} \int_x^{\infty} e^{-t^2}\,dt =
  \frac{e^{-x^2}}{x\sqrt{\pi}}\sum_{n=0}^\infty (-1)^n \frac{(2n)!}{n!(2x)^{2n}}
 &lt;/math&gt;

=====Le 13 janvier 2012: Mise à jour du Wiki vers la version 1.17.1=====

=====06 août 2011: Ajout de l'extension [http://www.mediawiki.org/wiki/Extension:Widgets widget]=====
Premier essai sur le widget &quot;follow me on twitter&quot;

{{#widget:Twitter Follow
|twitter=debian
|what=me
}}

=====31 juillet 2011 - Ajout d'une page de contact: [[Spécial:Contact]]=====

=====Affichez votre &quot;twitter&quot; dans votre page perso &quot;Wiki&quot;=====
Utilisation:
&lt;code&gt;&lt;twitterfeed id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;
&lt;code&gt;&lt;twitterfeed nb=&quot;nb-of-tweets&quot; id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;

=====Mise à niveau vers 1.17 ce 29/07/2011=====

=====J'ai cédé à la sirène Google +1...=====
{{Template: Social}}

=====Mise à niveau du Wiki vers la version 1.16.5=====

=====Mise à jour du forum interne de 2.5.11 vers 2.5.12 [http://wiki.anotherwebcom.com/Category:AWC%27s_MediaWiki_Forum_Extension AWC Forum]=====

=====Ajout d'un service de partage d'images : [http://pix.isalo.org/ Hébergement d'images]=====

=====Ajout d'un outil de partage et de collaboration pour le débogage : [http://paste.isalo.org/ Un pastbin]=====

=====Le Wiki est désormais accessible 24/24, 7/7 et... 365/365 :)=====

=====Ajout de deux extensions : EasyTimeline et PDF Handler=====
[http://www.isalo.org/wiki.debian-fr/index.php/Test_timeline exemple Easy Timeline]
[http://www.isalo.org/wiki.debian-fr/index.php/Test.pdf exemple Pdf Handler]

=====Modification des autorisation du forum interne (section pause-café uniquement). Autorisation de lecture pour les utilisateurs &quot;anonymes&quot;.=====

=====Pour &quot;les forts en CSS&quot;, ajout de l'extension '''CSS''', une fonction du parseur qui permet d’inclure des feuilles de style sur vos pages de Wiki.=====
Exemple sur [[Test.css|cette page]]

=====Remise en fonction des [[Spécial:Téléversement_multiple|téléversements multiples - Version trunk r76488]] (10 fichiers au maximun).=====

=====Mise à jour du Wiki 1.16 à 1.16wmf4=====
[http://www.isalo.org/wiki.debian-fr/index.php/Sp%C3%A9cial:Version Version]

=====Mise à jour du forum interne (awc extension): 2.5.10 à 2.5.11=====
&lt;s&gt;Quelques liens dans le menu principal on souffert de la MAJ. Restauration ce soir ou demain.&lt;/s&gt;

[[Utilisateur:Lol|Lol]] 16 novembre 2010 à 18:31 (EAT)

=====* Changement de serveur et de branche ce 28/10/2010...=====
Le Wiki est désormais hébergé sur une squeeze!

 Linux lol 2.6.32-5-amd64 #1 SMP Wed Oct 20 00:05:22 UTC 2010 x86_64 GNU/Linux

=====* Mise à jour de notre Wiki qui passe de la version 1.15 à la dernière version 1.16=====
Il reste encore quelques réglages, mais dans l'ensemble... c'est bon!
&lt;/noinclude&gt;

=====&lt;s&gt;* Ajout d'une page pour les téléversements multiples...=====
[[Spécial:Téléversement_multiple]]&lt;/s&gt;

Fonction désactivée car ''incompatible avec la version 1.16'' du Wiki.

=====* Ajout de l'extension 'GeSHiCodeTag'=====
Permet la coloration syntaxique des lignes de codes... Très joli, et très pratique :)

Exemples

:&gt; &quot;code tag&quot; avancé
&lt;nowiki&gt;&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé avec numérotation
&lt;nowiki&gt;&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé par défaut
&lt;nowiki&gt;&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; Liste des langages supportés :
 &lt;nowiki&gt;&lt;code list&gt;&lt;/code&gt;&lt;/nowiki&gt;

 xbasic ecmascript io vb email pcre lotusscript per matlab awk plsql perl6 oracle11 powershell '''xorg_conf'''
 sdlbasic '''sql''' csharp autoit magiksf mapbasic visualprolog oobas delphi klonecpp rails sas actionscript
 cpp lolcode vbnet javascript abap ocaml dcs idl glsl progress gwbasic blitzbasic avisynth cfm smalltalk '''ruby'''
 asm lscript oracle8 scheme systemverilog '''diff''' fo vala modula2 mmix mirc kixtart ini newlisp vhdl qbasic
 fsharp cfdg genie mpasm java5 '''c''' dot logtalk inno providex caddcl asp hq9plus gambas '''vim''' bf oberon2 '''apache'''
 mxml q php cmake java oz whitespace lua rebol rsplus chaiscript html4strict gnuplot thinbasic '''div''' locobasic
 gml typoscript pixelbender purebasic verilog scilab actionscript3 xml j winbatch klonec autohotkey applescript
 freebasic teraterm '''css''' objc xpp m68k '''make''' clojure tsql apt_sources nsis bibtex cpp-qt lisp gettext dos modula3
 python ocaml-brief autoconf php-brief cobol pf haskell '''erlang''' pic16 intercal c_mac rpmspec '''perl''' pike oxygene
 4cs boo '''bash''' tcl cadlisp pascal powerbuilder hicest lotusformulas text properties fortran postgresql basic4gl
 jquery povray ada eiffel robots '''mysql''' cuesheet z80 d scala prolog icon '''whois''' cil '''latex''' gdb smarty visualfoxpro
 unicon bnf lsl2 genero reg groovy

Un exemple :

Le script suivant encadré de &lt;nowiki&gt;&lt;code bash&gt;votre script ici&lt;/code&gt;&lt;/nowiki&gt;

 #! /bin/sh
 
 N=/etc/init.d/sudo
 
 set -e
 
 case &quot;$1&quot; in
   start)
 	# make sure privileges don't persist across reboots
 	if [ -d /var/lib/sudo ]
 	then
                 find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
 	fi
 	;;
   stop|reload|restart|force-reload)
 	;;
   *)
 	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
 	exit 1
 	;;
 esac
 
 exit 0

Donnera :

&lt;code bash&gt;#! /bin/sh

N=/etc/init.d/sudo

set -e

case &quot;$1&quot; in
  start)
	# make sure privileges don't persist across reboots
	if [ -d /var/lib/sudo ]
	then
                find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
	fi
	;;
  stop|reload|restart|force-reload)
	;;
  *)
	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
	exit 1
	;;
esac

exit 0
&lt;/code&gt;

Bien plus lisible !

=====* La TRèS bonne nouvelle de la journée !=====
'''Squeeze est gelée ce 6 aout 2010 !'''

[http://www.debian.org/News/2010/20100806 L'annonce ICI]

=====* Nouvelle page Spéciale : Livre d'or... Ici : [[Spécial:Guestbook|Spécial:Guestbook]]=====
Permet aux invités de laisser un message; Il faut encore que j'ajoute un lien au menu général!

=====*Mise à jour du forum interne vers la version 2.5.10=====
Possibilité de faire des sondages...

Ouvrez une nouvelle discussion, enregistrez;
Ajoutez un sondage à votre discussion, c'est tout !

La mise à jour à apportée un nouveau menu au forum (en bas à gauche)

=====* Avec la réinstallation forcée suite au crash d'un disque dur, passage à la version 1.15.4 (déjà dépassée... la version 1.16 et 1.15.5 venant de sortir...)=====
N'hésitez pas à visiter [[Spécial:Pages_spéciales|les pages spéciales]] !

=====*Le support des fichiers svg (graphique vectoriel adaptable) est opérationnel&amp;nbsp;!=====
[[Fichier:Chess game 01.svg]]

=====*Page Spéciale bien pratique pour suivre les nouveaux articles, discussions...&amp;nbsp;!=====

[[Spécial:Newestpages]] 
Plus facile de se repérer que dans la page spéciale &quot;Modifications récentes&quot;. Nous ne risquons pas de perdre des articles en route...

=====*Nous allons pouvoir faire des sondages&amp;nbsp;!=====
[[Spécial:Voter]] 

Vous pouvez voter plusieurs fois, mais seul le dernier vote est pris en compte... Un vote par utilisateur&amp;nbsp;! 

Votez dès maintenant pour le maître de l'univers... 

=====*Option de prise en charge de vos css personnels activée...=====
Vous pouvez récupérer ici des css&amp;nbsp;: [http://www.mediawiki.org/wiki/Manual:Gallery_of_user_styles Manual:Gallery_of_user_styles] - ou créer votre propre css... Les skins utilisés dans notre mediawiki sont listés dans votre page de préférences (en haut à gauche). Il suffit de créer votre page de skin (en général Utilisateur:votre_super_pseudo/monobook.css et Utilisateur:votre_super_pseudo/monobook.js pour ceux nécessitant un js) et de rafraîchir votre navigateur... 

=====*Nouvelle page spéciale&amp;nbsp;: Qui est en ligne&amp;nbsp;!=====
[[Spécial:Qui est en ligne]]

=====*Ajout d'un &quot;chat-room&quot; au forum. Pour chaque article vous avez la possibilité d'ouvrir un '''salon''' pour discuter en direct...=====
Parfaitement inutile&amp;nbsp;? Peut-être pas... 

&lt;br&gt; [[Image:Capture d'écran124.jpeg]] 

Possibilité de n'ouvrir qu'un seul &quot;salon&quot; pour l'ensemble du forum&amp;nbsp;? Vos avis&amp;nbsp;?

=====*Ajout de l'extension &quot;CategoryTree&quot;=====
Un exemple vaut mieux qu'un long discours&amp;nbsp;: 

&lt;categorytree mode=&quot;pages&quot; style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:orange;&quot;&gt;Commandes&lt;/categorytree&gt; Ou plus simplement &lt;categorytree mode=&quot;pages&quot;&gt;Commandes&lt;/categorytree&gt; 

=====*Ajout d'une fonction WYSIWYG à l'édition=====
[[Image:Capture d'écran122.jpeg]] 

'''Attention, il y a un prix&amp;nbsp;: cela alourdit la navigation...''' 

=====*Mise à jour du forum de la version 2.4.1 à 2.4.3=====
&lt;blockquote&gt;J'espère que cela va régler un certains nombres de petits &quot;bugs&quot;&lt;/blockquote&gt; 

=====*Un forum interne doublé d'un service de messagerie...=====
&lt;blockquote&gt;'''&lt;u&gt;Le forum interne permet d'envoyer des messages privés à l'intérieur du Wiki, et par mail&amp;nbsp;!&lt;/u&gt;''' Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt; 

=====*Un forum interne&amp;nbsp;!=====
&lt;blockquote&gt;Amélioration sans doute, '''&lt;u&gt;le Wiki s'est doté d'un forum&lt;/u&gt;''' afin de permettre aux membres de discuter, en toute liberté. Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt;

&lt;/noinclude&gt;

[[Template:DernièresNouvelles|Voir toutes les nouvelles]]</text>
      <sha1>lbidphyf8mae6nydh0rdudkii827m8l</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4628</id>
      <parentid>4627</parentid>
      <timestamp>2012-10-29T07:32:22Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="11406">__NOTOC__

=====Le 29 octobre 2012=====
Ajout d'une page contenant deux recherches google ciblées: Sur le forum.debian-fr.org et sur divers sites francophones Debian et GNU/Linux.
[[Recherche_debian|Recherches Debian]]

=====Le 22 septembre 2012=====
Mise à jour de sécurité =&gt; MediaWiki 1.19.2 [http://www.mediawiki.org/wiki/Release_notes/1.19 Note de version]

=====Le aout 2012=====
Activation du ssl sur le Wiki [https://www.isalo.org/wiki.debian-fr/index.php?title=Accueil wiki.debian-fr]

=====Le 5 mai, mise à jour vers Mediawiki 1.19.0!=====

=====Le 28 avril 2012: Mise à jour Wiki vers 1.18.2 (1.18.3 échoué)=====

=====Le 24 avril 2012: Ajout de l'extension '''&quot;Collection&quot;'''.=====
Cette extension permet d'organiser et d'exporter dans divers formats (pdf pour l'instant, libre office à venir) une page ou une sélection de pages du Wiki.

=====Le Wiki à basculé sur l'ipv6!=====
http://pix.isalo.org/upload/thumb/1334318888.jpg

&lt;noinclude&gt;
=====Le 26 mars 2012: Ajout de l'extension CollapsableText.=====
&lt;collapsetext&gt;Ceci est le titre (toujours visible - Cliquez sur la flèche pour voir le texte complet). Ceci est le texte &quot;caché&quot; (visible quand il est &quot;déroulé&quot; ).&lt;/collapsetext&gt;

=====Le 23/02/2012: Activation de la possibilité d'insérer des images de pix.isalo.org=====
Image:
http://pix.isalo.org/upload/original/1293897717.gif

Miniature:
http://pix.isalo.org/upload/thumb/1329911740.png

=====Le 2 février 2012: Mise à niveau du Wiki ver 1.18.1=====

=====Le 1er février 2012: Activation des formules mathématiques avec le système TeX.=====

&lt;math&gt;
f(x) = \begin{cases}1 &amp; -1 \le x &lt; 0\\
 \frac{1}{2} &amp; x = 0\\x&amp;0&lt;x\le 1\end{cases}
&lt;/math&gt;


&lt;math&gt;
{}_pF_q(a_1,\ldots,a_p;c_1,\ldots,c_q;z) = \sum_{n=0}^\infty 
 \frac{(a_1)_n\cdots(a_p)_n}{(c_1)_n\cdots(c_q)_n}\frac{z^n}{n!}\,
&lt;/math&gt;


&lt;math&gt;
  \operatorname{erfc}(x) =
  \frac{2}{\sqrt{\pi}} \int_x^{\infty} e^{-t^2}\,dt =
  \frac{e^{-x^2}}{x\sqrt{\pi}}\sum_{n=0}^\infty (-1)^n \frac{(2n)!}{n!(2x)^{2n}}
 &lt;/math&gt;

=====Le 13 janvier 2012: Mise à jour du Wiki vers la version 1.17.1=====

=====06 août 2011: Ajout de l'extension [http://www.mediawiki.org/wiki/Extension:Widgets widget]=====
Premier essai sur le widget &quot;follow me on twitter&quot;

{{#widget:Twitter Follow
|twitter=debian
|what=me
}}

=====31 juillet 2011 - Ajout d'une page de contact: [[Spécial:Contact]]=====

=====Affichez votre &quot;twitter&quot; dans votre page perso &quot;Wiki&quot;=====
Utilisation:
&lt;code&gt;&lt;twitterfeed id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;
&lt;code&gt;&lt;twitterfeed nb=&quot;nb-of-tweets&quot; id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;

=====Mise à niveau vers 1.17 ce 29/07/2011=====

=====J'ai cédé à la sirène Google +1...=====
{{Template: Social}}

=====Mise à niveau du Wiki vers la version 1.16.5=====

=====Mise à jour du forum interne de 2.5.11 vers 2.5.12 [http://wiki.anotherwebcom.com/Category:AWC%27s_MediaWiki_Forum_Extension AWC Forum]=====

=====Ajout d'un service de partage d'images : [http://pix.isalo.org/ Hébergement d'images]=====

=====Ajout d'un outil de partage et de collaboration pour le débogage : [http://paste.isalo.org/ Un pastbin]=====

=====Le Wiki est désormais accessible 24/24, 7/7 et... 365/365 :)=====

=====Ajout de deux extensions : EasyTimeline et PDF Handler=====
[http://www.isalo.org/wiki.debian-fr/index.php/Test_timeline exemple Easy Timeline]
[http://www.isalo.org/wiki.debian-fr/index.php/Test.pdf exemple Pdf Handler]

=====Modification des autorisation du forum interne (section pause-café uniquement). Autorisation de lecture pour les utilisateurs &quot;anonymes&quot;.=====

=====Pour &quot;les forts en CSS&quot;, ajout de l'extension '''CSS''', une fonction du parseur qui permet d’inclure des feuilles de style sur vos pages de Wiki.=====
Exemple sur [[Test.css|cette page]]

=====Remise en fonction des [[Spécial:Téléversement_multiple|téléversements multiples - Version trunk r76488]] (10 fichiers au maximun).=====

=====Mise à jour du Wiki 1.16 à 1.16wmf4=====
[http://www.isalo.org/wiki.debian-fr/index.php/Sp%C3%A9cial:Version Version]

=====Mise à jour du forum interne (awc extension): 2.5.10 à 2.5.11=====
&lt;s&gt;Quelques liens dans le menu principal on souffert de la MAJ. Restauration ce soir ou demain.&lt;/s&gt;

[[Utilisateur:Lol|Lol]] 16 novembre 2010 à 18:31 (EAT)

=====* Changement de serveur et de branche ce 28/10/2010...=====
Le Wiki est désormais hébergé sur une squeeze!

 Linux lol 2.6.32-5-amd64 #1 SMP Wed Oct 20 00:05:22 UTC 2010 x86_64 GNU/Linux

=====* Mise à jour de notre Wiki qui passe de la version 1.15 à la dernière version 1.16=====
Il reste encore quelques réglages, mais dans l'ensemble... c'est bon!

=====&lt;s&gt;* Ajout d'une page pour les téléversements multiples...=====
[[Spécial:Téléversement_multiple]]&lt;/s&gt;

Fonction désactivée car ''incompatible avec la version 1.16'' du Wiki.

=====* Ajout de l'extension 'GeSHiCodeTag'=====
Permet la coloration syntaxique des lignes de codes... Très joli, et très pratique :)

Exemples

:&gt; &quot;code tag&quot; avancé
&lt;nowiki&gt;&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé avec numérotation
&lt;nowiki&gt;&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé par défaut
&lt;nowiki&gt;&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; Liste des langages supportés :
 &lt;nowiki&gt;&lt;code list&gt;&lt;/code&gt;&lt;/nowiki&gt;

 xbasic ecmascript io vb email pcre lotusscript per matlab awk plsql perl6 oracle11 powershell '''xorg_conf'''
 sdlbasic '''sql''' csharp autoit magiksf mapbasic visualprolog oobas delphi klonecpp rails sas actionscript
 cpp lolcode vbnet javascript abap ocaml dcs idl glsl progress gwbasic blitzbasic avisynth cfm smalltalk '''ruby'''
 asm lscript oracle8 scheme systemverilog '''diff''' fo vala modula2 mmix mirc kixtart ini newlisp vhdl qbasic
 fsharp cfdg genie mpasm java5 '''c''' dot logtalk inno providex caddcl asp hq9plus gambas '''vim''' bf oberon2 '''apache'''
 mxml q php cmake java oz whitespace lua rebol rsplus chaiscript html4strict gnuplot thinbasic '''div''' locobasic
 gml typoscript pixelbender purebasic verilog scilab actionscript3 xml j winbatch klonec autohotkey applescript
 freebasic teraterm '''css''' objc xpp m68k '''make''' clojure tsql apt_sources nsis bibtex cpp-qt lisp gettext dos modula3
 python ocaml-brief autoconf php-brief cobol pf haskell '''erlang''' pic16 intercal c_mac rpmspec '''perl''' pike oxygene
 4cs boo '''bash''' tcl cadlisp pascal powerbuilder hicest lotusformulas text properties fortran postgresql basic4gl
 jquery povray ada eiffel robots '''mysql''' cuesheet z80 d scala prolog icon '''whois''' cil '''latex''' gdb smarty visualfoxpro
 unicon bnf lsl2 genero reg groovy

Un exemple :

Le script suivant encadré de &lt;nowiki&gt;&lt;code bash&gt;votre script ici&lt;/code&gt;&lt;/nowiki&gt;

 #! /bin/sh
 
 N=/etc/init.d/sudo
 
 set -e
 
 case &quot;$1&quot; in
   start)
 	# make sure privileges don't persist across reboots
 	if [ -d /var/lib/sudo ]
 	then
                 find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
 	fi
 	;;
   stop|reload|restart|force-reload)
 	;;
   *)
 	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
 	exit 1
 	;;
 esac
 
 exit 0

Donnera :

&lt;code bash&gt;#! /bin/sh

N=/etc/init.d/sudo

set -e

case &quot;$1&quot; in
  start)
	# make sure privileges don't persist across reboots
	if [ -d /var/lib/sudo ]
	then
                find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
	fi
	;;
  stop|reload|restart|force-reload)
	;;
  *)
	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
	exit 1
	;;
esac

exit 0
&lt;/code&gt;

Bien plus lisible !

=====* La TRèS bonne nouvelle de la journée !=====
'''Squeeze est gelée ce 6 aout 2010 !'''

[http://www.debian.org/News/2010/20100806 L'annonce ICI]

=====* Nouvelle page Spéciale : Livre d'or... Ici : [[Spécial:Guestbook|Spécial:Guestbook]]=====
Permet aux invités de laisser un message; Il faut encore que j'ajoute un lien au menu général!

=====*Mise à jour du forum interne vers la version 2.5.10=====
Possibilité de faire des sondages...

Ouvrez une nouvelle discussion, enregistrez;
Ajoutez un sondage à votre discussion, c'est tout !

La mise à jour à apportée un nouveau menu au forum (en bas à gauche)

=====* Avec la réinstallation forcée suite au crash d'un disque dur, passage à la version 1.15.4 (déjà dépassée... la version 1.16 et 1.15.5 venant de sortir...)=====
N'hésitez pas à visiter [[Spécial:Pages_spéciales|les pages spéciales]] !

=====*Le support des fichiers svg (graphique vectoriel adaptable) est opérationnel&amp;nbsp;!=====
[[Fichier:Chess game 01.svg]]

=====*Page Spéciale bien pratique pour suivre les nouveaux articles, discussions...&amp;nbsp;!=====

[[Spécial:Newestpages]] 
Plus facile de se repérer que dans la page spéciale &quot;Modifications récentes&quot;. Nous ne risquons pas de perdre des articles en route...

=====*Nous allons pouvoir faire des sondages&amp;nbsp;!=====
[[Spécial:Voter]] 

Vous pouvez voter plusieurs fois, mais seul le dernier vote est pris en compte... Un vote par utilisateur&amp;nbsp;! 

Votez dès maintenant pour le maître de l'univers... 

=====*Option de prise en charge de vos css personnels activée...=====
Vous pouvez récupérer ici des css&amp;nbsp;: [http://www.mediawiki.org/wiki/Manual:Gallery_of_user_styles Manual:Gallery_of_user_styles] - ou créer votre propre css... Les skins utilisés dans notre mediawiki sont listés dans votre page de préférences (en haut à gauche). Il suffit de créer votre page de skin (en général Utilisateur:votre_super_pseudo/monobook.css et Utilisateur:votre_super_pseudo/monobook.js pour ceux nécessitant un js) et de rafraîchir votre navigateur... 

=====*Nouvelle page spéciale&amp;nbsp;: Qui est en ligne&amp;nbsp;!=====
[[Spécial:Qui est en ligne]]

=====*Ajout d'un &quot;chat-room&quot; au forum. Pour chaque article vous avez la possibilité d'ouvrir un '''salon''' pour discuter en direct...=====
Parfaitement inutile&amp;nbsp;? Peut-être pas... 

&lt;br&gt; [[Image:Capture d'écran124.jpeg]] 

Possibilité de n'ouvrir qu'un seul &quot;salon&quot; pour l'ensemble du forum&amp;nbsp;? Vos avis&amp;nbsp;?

=====*Ajout de l'extension &quot;CategoryTree&quot;=====
Un exemple vaut mieux qu'un long discours&amp;nbsp;: 

&lt;categorytree mode=&quot;pages&quot; style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:orange;&quot;&gt;Commandes&lt;/categorytree&gt; Ou plus simplement &lt;categorytree mode=&quot;pages&quot;&gt;Commandes&lt;/categorytree&gt; 

=====*Ajout d'une fonction WYSIWYG à l'édition=====
[[Image:Capture d'écran122.jpeg]] 

'''Attention, il y a un prix&amp;nbsp;: cela alourdit la navigation...''' 

=====*Mise à jour du forum de la version 2.4.1 à 2.4.3=====
&lt;blockquote&gt;J'espère que cela va régler un certains nombres de petits &quot;bugs&quot;&lt;/blockquote&gt; 

=====*Un forum interne doublé d'un service de messagerie...=====
&lt;blockquote&gt;'''&lt;u&gt;Le forum interne permet d'envoyer des messages privés à l'intérieur du Wiki, et par mail&amp;nbsp;!&lt;/u&gt;''' Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt; 

=====*Un forum interne&amp;nbsp;!=====
&lt;blockquote&gt;Amélioration sans doute, '''&lt;u&gt;le Wiki s'est doté d'un forum&lt;/u&gt;''' afin de permettre aux membres de discuter, en toute liberté. Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt;

&lt;/noinclude&gt;

[[Template:DernièresNouvelles|Voir toutes les nouvelles]]</text>
      <sha1>hi95zi4w8o0gsyr1iu4trc66qgtr3zd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4629</id>
      <parentid>4628</parentid>
      <timestamp>2012-10-29T07:33:17Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="11429">__NOTOC__

=====Le 29 octobre 2012=====
Ajout d'une page contenant deux recherches google ciblées: Sur le forum.debian-fr.org et sur divers sites francophones Debian et GNU/Linux.
[[Recherche_debian|Recherches Debian]]

=====Le 22 septembre 2012=====
Mise à jour de sécurité =&gt; MediaWiki 1.19.2 [http://www.mediawiki.org/wiki/Release_notes/1.19 Note de version]

=====Le aout 2012=====
Activation du ssl sur le Wiki [https://www.isalo.org/wiki.debian-fr/index.php?title=Accueil wiki.debian-fr]
&lt;noinclude&gt;
=====Le 5 mai, mise à jour vers Mediawiki 1.19.0!=====
&lt;/noinclude&gt;
=====Le 28 avril 2012: Mise à jour Wiki vers 1.18.2 (1.18.3 échoué)=====

=====Le 24 avril 2012: Ajout de l'extension '''&quot;Collection&quot;'''.=====
Cette extension permet d'organiser et d'exporter dans divers formats (pdf pour l'instant, libre office à venir) une page ou une sélection de pages du Wiki.

=====Le Wiki à basculé sur l'ipv6!=====
http://pix.isalo.org/upload/thumb/1334318888.jpg

&lt;noinclude&gt;
=====Le 26 mars 2012: Ajout de l'extension CollapsableText.=====
&lt;collapsetext&gt;Ceci est le titre (toujours visible - Cliquez sur la flèche pour voir le texte complet). Ceci est le texte &quot;caché&quot; (visible quand il est &quot;déroulé&quot; ).&lt;/collapsetext&gt;

=====Le 23/02/2012: Activation de la possibilité d'insérer des images de pix.isalo.org=====
Image:
http://pix.isalo.org/upload/original/1293897717.gif

Miniature:
http://pix.isalo.org/upload/thumb/1329911740.png

=====Le 2 février 2012: Mise à niveau du Wiki ver 1.18.1=====

=====Le 1er février 2012: Activation des formules mathématiques avec le système TeX.=====

&lt;math&gt;
f(x) = \begin{cases}1 &amp; -1 \le x &lt; 0\\
 \frac{1}{2} &amp; x = 0\\x&amp;0&lt;x\le 1\end{cases}
&lt;/math&gt;


&lt;math&gt;
{}_pF_q(a_1,\ldots,a_p;c_1,\ldots,c_q;z) = \sum_{n=0}^\infty 
 \frac{(a_1)_n\cdots(a_p)_n}{(c_1)_n\cdots(c_q)_n}\frac{z^n}{n!}\,
&lt;/math&gt;


&lt;math&gt;
  \operatorname{erfc}(x) =
  \frac{2}{\sqrt{\pi}} \int_x^{\infty} e^{-t^2}\,dt =
  \frac{e^{-x^2}}{x\sqrt{\pi}}\sum_{n=0}^\infty (-1)^n \frac{(2n)!}{n!(2x)^{2n}}
 &lt;/math&gt;

=====Le 13 janvier 2012: Mise à jour du Wiki vers la version 1.17.1=====

=====06 août 2011: Ajout de l'extension [http://www.mediawiki.org/wiki/Extension:Widgets widget]=====
Premier essai sur le widget &quot;follow me on twitter&quot;

{{#widget:Twitter Follow
|twitter=debian
|what=me
}}

=====31 juillet 2011 - Ajout d'une page de contact: [[Spécial:Contact]]=====

=====Affichez votre &quot;twitter&quot; dans votre page perso &quot;Wiki&quot;=====
Utilisation:
&lt;code&gt;&lt;twitterfeed id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;
&lt;code&gt;&lt;twitterfeed nb=&quot;nb-of-tweets&quot; id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;

=====Mise à niveau vers 1.17 ce 29/07/2011=====

=====J'ai cédé à la sirène Google +1...=====
{{Template: Social}}

=====Mise à niveau du Wiki vers la version 1.16.5=====

=====Mise à jour du forum interne de 2.5.11 vers 2.5.12 [http://wiki.anotherwebcom.com/Category:AWC%27s_MediaWiki_Forum_Extension AWC Forum]=====

=====Ajout d'un service de partage d'images : [http://pix.isalo.org/ Hébergement d'images]=====

=====Ajout d'un outil de partage et de collaboration pour le débogage : [http://paste.isalo.org/ Un pastbin]=====

=====Le Wiki est désormais accessible 24/24, 7/7 et... 365/365 :)=====

=====Ajout de deux extensions : EasyTimeline et PDF Handler=====
[http://www.isalo.org/wiki.debian-fr/index.php/Test_timeline exemple Easy Timeline]
[http://www.isalo.org/wiki.debian-fr/index.php/Test.pdf exemple Pdf Handler]

=====Modification des autorisation du forum interne (section pause-café uniquement). Autorisation de lecture pour les utilisateurs &quot;anonymes&quot;.=====

=====Pour &quot;les forts en CSS&quot;, ajout de l'extension '''CSS''', une fonction du parseur qui permet d’inclure des feuilles de style sur vos pages de Wiki.=====
Exemple sur [[Test.css|cette page]]

=====Remise en fonction des [[Spécial:Téléversement_multiple|téléversements multiples - Version trunk r76488]] (10 fichiers au maximun).=====

=====Mise à jour du Wiki 1.16 à 1.16wmf4=====
[http://www.isalo.org/wiki.debian-fr/index.php/Sp%C3%A9cial:Version Version]

=====Mise à jour du forum interne (awc extension): 2.5.10 à 2.5.11=====
&lt;s&gt;Quelques liens dans le menu principal on souffert de la MAJ. Restauration ce soir ou demain.&lt;/s&gt;

[[Utilisateur:Lol|Lol]] 16 novembre 2010 à 18:31 (EAT)

=====* Changement de serveur et de branche ce 28/10/2010...=====
Le Wiki est désormais hébergé sur une squeeze!

 Linux lol 2.6.32-5-amd64 #1 SMP Wed Oct 20 00:05:22 UTC 2010 x86_64 GNU/Linux

=====* Mise à jour de notre Wiki qui passe de la version 1.15 à la dernière version 1.16=====
Il reste encore quelques réglages, mais dans l'ensemble... c'est bon!

=====&lt;s&gt;* Ajout d'une page pour les téléversements multiples...=====
[[Spécial:Téléversement_multiple]]&lt;/s&gt;

Fonction désactivée car ''incompatible avec la version 1.16'' du Wiki.

=====* Ajout de l'extension 'GeSHiCodeTag'=====
Permet la coloration syntaxique des lignes de codes... Très joli, et très pratique :)

Exemples

:&gt; &quot;code tag&quot; avancé
&lt;nowiki&gt;&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé avec numérotation
&lt;nowiki&gt;&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé par défaut
&lt;nowiki&gt;&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; Liste des langages supportés :
 &lt;nowiki&gt;&lt;code list&gt;&lt;/code&gt;&lt;/nowiki&gt;

 xbasic ecmascript io vb email pcre lotusscript per matlab awk plsql perl6 oracle11 powershell '''xorg_conf'''
 sdlbasic '''sql''' csharp autoit magiksf mapbasic visualprolog oobas delphi klonecpp rails sas actionscript
 cpp lolcode vbnet javascript abap ocaml dcs idl glsl progress gwbasic blitzbasic avisynth cfm smalltalk '''ruby'''
 asm lscript oracle8 scheme systemverilog '''diff''' fo vala modula2 mmix mirc kixtart ini newlisp vhdl qbasic
 fsharp cfdg genie mpasm java5 '''c''' dot logtalk inno providex caddcl asp hq9plus gambas '''vim''' bf oberon2 '''apache'''
 mxml q php cmake java oz whitespace lua rebol rsplus chaiscript html4strict gnuplot thinbasic '''div''' locobasic
 gml typoscript pixelbender purebasic verilog scilab actionscript3 xml j winbatch klonec autohotkey applescript
 freebasic teraterm '''css''' objc xpp m68k '''make''' clojure tsql apt_sources nsis bibtex cpp-qt lisp gettext dos modula3
 python ocaml-brief autoconf php-brief cobol pf haskell '''erlang''' pic16 intercal c_mac rpmspec '''perl''' pike oxygene
 4cs boo '''bash''' tcl cadlisp pascal powerbuilder hicest lotusformulas text properties fortran postgresql basic4gl
 jquery povray ada eiffel robots '''mysql''' cuesheet z80 d scala prolog icon '''whois''' cil '''latex''' gdb smarty visualfoxpro
 unicon bnf lsl2 genero reg groovy

Un exemple :

Le script suivant encadré de &lt;nowiki&gt;&lt;code bash&gt;votre script ici&lt;/code&gt;&lt;/nowiki&gt;

 #! /bin/sh
 
 N=/etc/init.d/sudo
 
 set -e
 
 case &quot;$1&quot; in
   start)
 	# make sure privileges don't persist across reboots
 	if [ -d /var/lib/sudo ]
 	then
                 find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
 	fi
 	;;
   stop|reload|restart|force-reload)
 	;;
   *)
 	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
 	exit 1
 	;;
 esac
 
 exit 0

Donnera :

&lt;code bash&gt;#! /bin/sh

N=/etc/init.d/sudo

set -e

case &quot;$1&quot; in
  start)
	# make sure privileges don't persist across reboots
	if [ -d /var/lib/sudo ]
	then
                find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
	fi
	;;
  stop|reload|restart|force-reload)
	;;
  *)
	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
	exit 1
	;;
esac

exit 0
&lt;/code&gt;

Bien plus lisible !

=====* La TRèS bonne nouvelle de la journée !=====
'''Squeeze est gelée ce 6 aout 2010 !'''

[http://www.debian.org/News/2010/20100806 L'annonce ICI]

=====* Nouvelle page Spéciale : Livre d'or... Ici : [[Spécial:Guestbook|Spécial:Guestbook]]=====
Permet aux invités de laisser un message; Il faut encore que j'ajoute un lien au menu général!

=====*Mise à jour du forum interne vers la version 2.5.10=====
Possibilité de faire des sondages...

Ouvrez une nouvelle discussion, enregistrez;
Ajoutez un sondage à votre discussion, c'est tout !

La mise à jour à apportée un nouveau menu au forum (en bas à gauche)

=====* Avec la réinstallation forcée suite au crash d'un disque dur, passage à la version 1.15.4 (déjà dépassée... la version 1.16 et 1.15.5 venant de sortir...)=====
N'hésitez pas à visiter [[Spécial:Pages_spéciales|les pages spéciales]] !

=====*Le support des fichiers svg (graphique vectoriel adaptable) est opérationnel&amp;nbsp;!=====
[[Fichier:Chess game 01.svg]]

=====*Page Spéciale bien pratique pour suivre les nouveaux articles, discussions...&amp;nbsp;!=====

[[Spécial:Newestpages]] 
Plus facile de se repérer que dans la page spéciale &quot;Modifications récentes&quot;. Nous ne risquons pas de perdre des articles en route...

=====*Nous allons pouvoir faire des sondages&amp;nbsp;!=====
[[Spécial:Voter]] 

Vous pouvez voter plusieurs fois, mais seul le dernier vote est pris en compte... Un vote par utilisateur&amp;nbsp;! 

Votez dès maintenant pour le maître de l'univers... 

=====*Option de prise en charge de vos css personnels activée...=====
Vous pouvez récupérer ici des css&amp;nbsp;: [http://www.mediawiki.org/wiki/Manual:Gallery_of_user_styles Manual:Gallery_of_user_styles] - ou créer votre propre css... Les skins utilisés dans notre mediawiki sont listés dans votre page de préférences (en haut à gauche). Il suffit de créer votre page de skin (en général Utilisateur:votre_super_pseudo/monobook.css et Utilisateur:votre_super_pseudo/monobook.js pour ceux nécessitant un js) et de rafraîchir votre navigateur... 

=====*Nouvelle page spéciale&amp;nbsp;: Qui est en ligne&amp;nbsp;!=====
[[Spécial:Qui est en ligne]]

=====*Ajout d'un &quot;chat-room&quot; au forum. Pour chaque article vous avez la possibilité d'ouvrir un '''salon''' pour discuter en direct...=====
Parfaitement inutile&amp;nbsp;? Peut-être pas... 

&lt;br&gt; [[Image:Capture d'écran124.jpeg]] 

Possibilité de n'ouvrir qu'un seul &quot;salon&quot; pour l'ensemble du forum&amp;nbsp;? Vos avis&amp;nbsp;?

=====*Ajout de l'extension &quot;CategoryTree&quot;=====
Un exemple vaut mieux qu'un long discours&amp;nbsp;: 

&lt;categorytree mode=&quot;pages&quot; style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:orange;&quot;&gt;Commandes&lt;/categorytree&gt; Ou plus simplement &lt;categorytree mode=&quot;pages&quot;&gt;Commandes&lt;/categorytree&gt; 

=====*Ajout d'une fonction WYSIWYG à l'édition=====
[[Image:Capture d'écran122.jpeg]] 

'''Attention, il y a un prix&amp;nbsp;: cela alourdit la navigation...''' 

=====*Mise à jour du forum de la version 2.4.1 à 2.4.3=====
&lt;blockquote&gt;J'espère que cela va régler un certains nombres de petits &quot;bugs&quot;&lt;/blockquote&gt; 

=====*Un forum interne doublé d'un service de messagerie...=====
&lt;blockquote&gt;'''&lt;u&gt;Le forum interne permet d'envoyer des messages privés à l'intérieur du Wiki, et par mail&amp;nbsp;!&lt;/u&gt;''' Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt; 

=====*Un forum interne&amp;nbsp;!=====
&lt;blockquote&gt;Amélioration sans doute, '''&lt;u&gt;le Wiki s'est doté d'un forum&lt;/u&gt;''' afin de permettre aux membres de discuter, en toute liberté. Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt;

&lt;/noinclude&gt;

[[Template:DernièresNouvelles|Voir toutes les nouvelles]]</text>
      <sha1>ncm2jfqh3leeya6cgd1m94q867xcnvw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4633</id>
      <parentid>4629</parentid>
      <timestamp>2012-10-29T07:45:35Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="11564">__NOTOC__
{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----
&lt;center&gt;
'''ACTUALITÉS'''
&lt;/center&gt;&lt;br&gt;

=====Le 29 octobre 2012=====
Ajout d'une page contenant deux recherches google ciblées: Sur le forum.debian-fr.org et sur divers sites francophones Debian et GNU/Linux.
[[Recherche_debian|Recherches Debian]]

=====Le 22 septembre 2012=====
Mise à jour de sécurité =&gt; MediaWiki 1.19.2 [http://www.mediawiki.org/wiki/Release_notes/1.19 Note de version]

=====Le aout 2012=====
Activation du ssl sur le Wiki [https://www.isalo.org/wiki.debian-fr/index.php?title=Accueil wiki.debian-fr]
&lt;noinclude&gt;
=====Le 5 mai, mise à jour vers Mediawiki 1.19.0!=====
&lt;/noinclude&gt;
=====Le 28 avril 2012: Mise à jour Wiki vers 1.18.2 (1.18.3 échoué)=====

=====Le 24 avril 2012: Ajout de l'extension '''&quot;Collection&quot;'''.=====
Cette extension permet d'organiser et d'exporter dans divers formats (pdf pour l'instant, libre office à venir) une page ou une sélection de pages du Wiki.

=====Le Wiki à basculé sur l'ipv6!=====
http://pix.isalo.org/upload/thumb/1334318888.jpg

&lt;noinclude&gt;
=====Le 26 mars 2012: Ajout de l'extension CollapsableText.=====
&lt;collapsetext&gt;Ceci est le titre (toujours visible - Cliquez sur la flèche pour voir le texte complet). Ceci est le texte &quot;caché&quot; (visible quand il est &quot;déroulé&quot; ).&lt;/collapsetext&gt;

=====Le 23/02/2012: Activation de la possibilité d'insérer des images de pix.isalo.org=====
Image:
http://pix.isalo.org/upload/original/1293897717.gif

Miniature:
http://pix.isalo.org/upload/thumb/1329911740.png

=====Le 2 février 2012: Mise à niveau du Wiki ver 1.18.1=====

=====Le 1er février 2012: Activation des formules mathématiques avec le système TeX.=====

&lt;math&gt;
f(x) = \begin{cases}1 &amp; -1 \le x &lt; 0\\
 \frac{1}{2} &amp; x = 0\\x&amp;0&lt;x\le 1\end{cases}
&lt;/math&gt;


&lt;math&gt;
{}_pF_q(a_1,\ldots,a_p;c_1,\ldots,c_q;z) = \sum_{n=0}^\infty 
 \frac{(a_1)_n\cdots(a_p)_n}{(c_1)_n\cdots(c_q)_n}\frac{z^n}{n!}\,
&lt;/math&gt;


&lt;math&gt;
  \operatorname{erfc}(x) =
  \frac{2}{\sqrt{\pi}} \int_x^{\infty} e^{-t^2}\,dt =
  \frac{e^{-x^2}}{x\sqrt{\pi}}\sum_{n=0}^\infty (-1)^n \frac{(2n)!}{n!(2x)^{2n}}
 &lt;/math&gt;

=====Le 13 janvier 2012: Mise à jour du Wiki vers la version 1.17.1=====

=====06 août 2011: Ajout de l'extension [http://www.mediawiki.org/wiki/Extension:Widgets widget]=====
Premier essai sur le widget &quot;follow me on twitter&quot;

{{#widget:Twitter Follow
|twitter=debian
|what=me
}}

=====31 juillet 2011 - Ajout d'une page de contact: [[Spécial:Contact]]=====

=====Affichez votre &quot;twitter&quot; dans votre page perso &quot;Wiki&quot;=====
Utilisation:
&lt;code&gt;&lt;twitterfeed id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;
&lt;code&gt;&lt;twitterfeed nb=&quot;nb-of-tweets&quot; id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;

=====Mise à niveau vers 1.17 ce 29/07/2011=====

=====J'ai cédé à la sirène Google +1...=====
{{Template: Social}}

=====Mise à niveau du Wiki vers la version 1.16.5=====

=====Mise à jour du forum interne de 2.5.11 vers 2.5.12 [http://wiki.anotherwebcom.com/Category:AWC%27s_MediaWiki_Forum_Extension AWC Forum]=====

=====Ajout d'un service de partage d'images : [http://pix.isalo.org/ Hébergement d'images]=====

=====Ajout d'un outil de partage et de collaboration pour le débogage : [http://paste.isalo.org/ Un pastbin]=====

=====Le Wiki est désormais accessible 24/24, 7/7 et... 365/365 :)=====

=====Ajout de deux extensions : EasyTimeline et PDF Handler=====
[http://www.isalo.org/wiki.debian-fr/index.php/Test_timeline exemple Easy Timeline]
[http://www.isalo.org/wiki.debian-fr/index.php/Test.pdf exemple Pdf Handler]

=====Modification des autorisation du forum interne (section pause-café uniquement). Autorisation de lecture pour les utilisateurs &quot;anonymes&quot;.=====

=====Pour &quot;les forts en CSS&quot;, ajout de l'extension '''CSS''', une fonction du parseur qui permet d’inclure des feuilles de style sur vos pages de Wiki.=====
Exemple sur [[Test.css|cette page]]

=====Remise en fonction des [[Spécial:Téléversement_multiple|téléversements multiples - Version trunk r76488]] (10 fichiers au maximun).=====

=====Mise à jour du Wiki 1.16 à 1.16wmf4=====
[http://www.isalo.org/wiki.debian-fr/index.php/Sp%C3%A9cial:Version Version]

=====Mise à jour du forum interne (awc extension): 2.5.10 à 2.5.11=====
&lt;s&gt;Quelques liens dans le menu principal on souffert de la MAJ. Restauration ce soir ou demain.&lt;/s&gt;

[[Utilisateur:Lol|Lol]] 16 novembre 2010 à 18:31 (EAT)

=====* Changement de serveur et de branche ce 28/10/2010...=====
Le Wiki est désormais hébergé sur une squeeze!

 Linux lol 2.6.32-5-amd64 #1 SMP Wed Oct 20 00:05:22 UTC 2010 x86_64 GNU/Linux

=====* Mise à jour de notre Wiki qui passe de la version 1.15 à la dernière version 1.16=====
Il reste encore quelques réglages, mais dans l'ensemble... c'est bon!

=====&lt;s&gt;* Ajout d'une page pour les téléversements multiples...=====
[[Spécial:Téléversement_multiple]]&lt;/s&gt;

Fonction désactivée car ''incompatible avec la version 1.16'' du Wiki.

=====* Ajout de l'extension 'GeSHiCodeTag'=====
Permet la coloration syntaxique des lignes de codes... Très joli, et très pratique :)

Exemples

:&gt; &quot;code tag&quot; avancé
&lt;nowiki&gt;&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé avec numérotation
&lt;nowiki&gt;&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé par défaut
&lt;nowiki&gt;&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; Liste des langages supportés :
 &lt;nowiki&gt;&lt;code list&gt;&lt;/code&gt;&lt;/nowiki&gt;

 xbasic ecmascript io vb email pcre lotusscript per matlab awk plsql perl6 oracle11 powershell '''xorg_conf'''
 sdlbasic '''sql''' csharp autoit magiksf mapbasic visualprolog oobas delphi klonecpp rails sas actionscript
 cpp lolcode vbnet javascript abap ocaml dcs idl glsl progress gwbasic blitzbasic avisynth cfm smalltalk '''ruby'''
 asm lscript oracle8 scheme systemverilog '''diff''' fo vala modula2 mmix mirc kixtart ini newlisp vhdl qbasic
 fsharp cfdg genie mpasm java5 '''c''' dot logtalk inno providex caddcl asp hq9plus gambas '''vim''' bf oberon2 '''apache'''
 mxml q php cmake java oz whitespace lua rebol rsplus chaiscript html4strict gnuplot thinbasic '''div''' locobasic
 gml typoscript pixelbender purebasic verilog scilab actionscript3 xml j winbatch klonec autohotkey applescript
 freebasic teraterm '''css''' objc xpp m68k '''make''' clojure tsql apt_sources nsis bibtex cpp-qt lisp gettext dos modula3
 python ocaml-brief autoconf php-brief cobol pf haskell '''erlang''' pic16 intercal c_mac rpmspec '''perl''' pike oxygene
 4cs boo '''bash''' tcl cadlisp pascal powerbuilder hicest lotusformulas text properties fortran postgresql basic4gl
 jquery povray ada eiffel robots '''mysql''' cuesheet z80 d scala prolog icon '''whois''' cil '''latex''' gdb smarty visualfoxpro
 unicon bnf lsl2 genero reg groovy

Un exemple :

Le script suivant encadré de &lt;nowiki&gt;&lt;code bash&gt;votre script ici&lt;/code&gt;&lt;/nowiki&gt;

 #! /bin/sh
 
 N=/etc/init.d/sudo
 
 set -e
 
 case &quot;$1&quot; in
   start)
 	# make sure privileges don't persist across reboots
 	if [ -d /var/lib/sudo ]
 	then
                 find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
 	fi
 	;;
   stop|reload|restart|force-reload)
 	;;
   *)
 	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
 	exit 1
 	;;
 esac
 
 exit 0

Donnera :

&lt;code bash&gt;#! /bin/sh

N=/etc/init.d/sudo

set -e

case &quot;$1&quot; in
  start)
	# make sure privileges don't persist across reboots
	if [ -d /var/lib/sudo ]
	then
                find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
	fi
	;;
  stop|reload|restart|force-reload)
	;;
  *)
	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
	exit 1
	;;
esac

exit 0
&lt;/code&gt;

Bien plus lisible !

=====* La TRèS bonne nouvelle de la journée !=====
'''Squeeze est gelée ce 6 aout 2010 !'''

[http://www.debian.org/News/2010/20100806 L'annonce ICI]

=====* Nouvelle page Spéciale : Livre d'or... Ici : [[Spécial:Guestbook|Spécial:Guestbook]]=====
Permet aux invités de laisser un message; Il faut encore que j'ajoute un lien au menu général!

=====*Mise à jour du forum interne vers la version 2.5.10=====
Possibilité de faire des sondages...

Ouvrez une nouvelle discussion, enregistrez;
Ajoutez un sondage à votre discussion, c'est tout !

La mise à jour à apportée un nouveau menu au forum (en bas à gauche)

=====* Avec la réinstallation forcée suite au crash d'un disque dur, passage à la version 1.15.4 (déjà dépassée... la version 1.16 et 1.15.5 venant de sortir...)=====
N'hésitez pas à visiter [[Spécial:Pages_spéciales|les pages spéciales]] !

=====*Le support des fichiers svg (graphique vectoriel adaptable) est opérationnel&amp;nbsp;!=====
[[Fichier:Chess game 01.svg]]

=====*Page Spéciale bien pratique pour suivre les nouveaux articles, discussions...&amp;nbsp;!=====

[[Spécial:Newestpages]] 
Plus facile de se repérer que dans la page spéciale &quot;Modifications récentes&quot;. Nous ne risquons pas de perdre des articles en route...

=====*Nous allons pouvoir faire des sondages&amp;nbsp;!=====
[[Spécial:Voter]] 

Vous pouvez voter plusieurs fois, mais seul le dernier vote est pris en compte... Un vote par utilisateur&amp;nbsp;! 

Votez dès maintenant pour le maître de l'univers... 

=====*Option de prise en charge de vos css personnels activée...=====
Vous pouvez récupérer ici des css&amp;nbsp;: [http://www.mediawiki.org/wiki/Manual:Gallery_of_user_styles Manual:Gallery_of_user_styles] - ou créer votre propre css... Les skins utilisés dans notre mediawiki sont listés dans votre page de préférences (en haut à gauche). Il suffit de créer votre page de skin (en général Utilisateur:votre_super_pseudo/monobook.css et Utilisateur:votre_super_pseudo/monobook.js pour ceux nécessitant un js) et de rafraîchir votre navigateur... 

=====*Nouvelle page spéciale&amp;nbsp;: Qui est en ligne&amp;nbsp;!=====
[[Spécial:Qui est en ligne]]

=====*Ajout d'un &quot;chat-room&quot; au forum. Pour chaque article vous avez la possibilité d'ouvrir un '''salon''' pour discuter en direct...=====
Parfaitement inutile&amp;nbsp;? Peut-être pas... 

&lt;br&gt; [[Image:Capture d'écran124.jpeg]] 

Possibilité de n'ouvrir qu'un seul &quot;salon&quot; pour l'ensemble du forum&amp;nbsp;? Vos avis&amp;nbsp;?

=====*Ajout de l'extension &quot;CategoryTree&quot;=====
Un exemple vaut mieux qu'un long discours&amp;nbsp;: 

&lt;categorytree mode=&quot;pages&quot; style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:orange;&quot;&gt;Commandes&lt;/categorytree&gt; Ou plus simplement &lt;categorytree mode=&quot;pages&quot;&gt;Commandes&lt;/categorytree&gt; 

=====*Ajout d'une fonction WYSIWYG à l'édition=====
[[Image:Capture d'écran122.jpeg]] 

'''Attention, il y a un prix&amp;nbsp;: cela alourdit la navigation...''' 

=====*Mise à jour du forum de la version 2.4.1 à 2.4.3=====
&lt;blockquote&gt;J'espère que cela va régler un certains nombres de petits &quot;bugs&quot;&lt;/blockquote&gt; 

=====*Un forum interne doublé d'un service de messagerie...=====
&lt;blockquote&gt;'''&lt;u&gt;Le forum interne permet d'envoyer des messages privés à l'intérieur du Wiki, et par mail&amp;nbsp;!&lt;/u&gt;''' Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt; 

=====*Un forum interne&amp;nbsp;!=====
&lt;blockquote&gt;Amélioration sans doute, '''&lt;u&gt;le Wiki s'est doté d'un forum&lt;/u&gt;''' afin de permettre aux membres de discuter, en toute liberté. Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt;

&lt;/noinclude&gt;

[[Template:DernièresNouvelles|Voir toutes les nouvelles]]</text>
      <sha1>ayt2yrfazqfdw3vw7d8q6sj6kx1telk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4646</id>
      <parentid>4633</parentid>
      <timestamp>2012-10-29T11:30:38Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="11587">__NOTOC__
{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
&lt;noinclude&gt;{{Template: Social}}&lt;/noinclude&gt;
----
&lt;center&gt;
'''ACTUALITÉS'''
&lt;/center&gt;&lt;br&gt;

=====Le 29 octobre 2012=====
Ajout d'une page contenant deux recherches google ciblées: Sur le forum.debian-fr.org et sur divers sites francophones Debian et GNU/Linux.
[[Recherche_debian|Recherches Debian]]

=====Le 22 septembre 2012=====
Mise à jour de sécurité =&gt; MediaWiki 1.19.2 [http://www.mediawiki.org/wiki/Release_notes/1.19 Note de version]

=====Le aout 2012=====
Activation du ssl sur le Wiki [https://www.isalo.org/wiki.debian-fr/index.php?title=Accueil wiki.debian-fr]
&lt;noinclude&gt;
=====Le 5 mai, mise à jour vers Mediawiki 1.19.0!=====
&lt;/noinclude&gt;
=====Le 28 avril 2012: Mise à jour Wiki vers 1.18.2 (1.18.3 échoué)=====

=====Le 24 avril 2012: Ajout de l'extension '''&quot;Collection&quot;'''.=====
Cette extension permet d'organiser et d'exporter dans divers formats (pdf pour l'instant, libre office à venir) une page ou une sélection de pages du Wiki.

=====Le Wiki à basculé sur l'ipv6!=====
http://pix.isalo.org/upload/thumb/1334318888.jpg

&lt;noinclude&gt;
=====Le 26 mars 2012: Ajout de l'extension CollapsableText.=====
&lt;collapsetext&gt;Ceci est le titre (toujours visible - Cliquez sur la flèche pour voir le texte complet). Ceci est le texte &quot;caché&quot; (visible quand il est &quot;déroulé&quot; ).&lt;/collapsetext&gt;

=====Le 23/02/2012: Activation de la possibilité d'insérer des images de pix.isalo.org=====
Image:
http://pix.isalo.org/upload/original/1293897717.gif

Miniature:
http://pix.isalo.org/upload/thumb/1329911740.png

=====Le 2 février 2012: Mise à niveau du Wiki ver 1.18.1=====

=====Le 1er février 2012: Activation des formules mathématiques avec le système TeX.=====

&lt;math&gt;
f(x) = \begin{cases}1 &amp; -1 \le x &lt; 0\\
 \frac{1}{2} &amp; x = 0\\x&amp;0&lt;x\le 1\end{cases}
&lt;/math&gt;


&lt;math&gt;
{}_pF_q(a_1,\ldots,a_p;c_1,\ldots,c_q;z) = \sum_{n=0}^\infty 
 \frac{(a_1)_n\cdots(a_p)_n}{(c_1)_n\cdots(c_q)_n}\frac{z^n}{n!}\,
&lt;/math&gt;


&lt;math&gt;
  \operatorname{erfc}(x) =
  \frac{2}{\sqrt{\pi}} \int_x^{\infty} e^{-t^2}\,dt =
  \frac{e^{-x^2}}{x\sqrt{\pi}}\sum_{n=0}^\infty (-1)^n \frac{(2n)!}{n!(2x)^{2n}}
 &lt;/math&gt;

=====Le 13 janvier 2012: Mise à jour du Wiki vers la version 1.17.1=====

=====06 août 2011: Ajout de l'extension [http://www.mediawiki.org/wiki/Extension:Widgets widget]=====
Premier essai sur le widget &quot;follow me on twitter&quot;

{{#widget:Twitter Follow
|twitter=debian
|what=me
}}

=====31 juillet 2011 - Ajout d'une page de contact: [[Spécial:Contact]]=====

=====Affichez votre &quot;twitter&quot; dans votre page perso &quot;Wiki&quot;=====
Utilisation:
&lt;code&gt;&lt;twitterfeed id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;
&lt;code&gt;&lt;twitterfeed nb=&quot;nb-of-tweets&quot; id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;

=====Mise à niveau vers 1.17 ce 29/07/2011=====

=====J'ai cédé à la sirène Google +1...=====
{{Template: Social}}

=====Mise à niveau du Wiki vers la version 1.16.5=====

=====Mise à jour du forum interne de 2.5.11 vers 2.5.12 [http://wiki.anotherwebcom.com/Category:AWC%27s_MediaWiki_Forum_Extension AWC Forum]=====

=====Ajout d'un service de partage d'images : [http://pix.isalo.org/ Hébergement d'images]=====

=====Ajout d'un outil de partage et de collaboration pour le débogage : [http://paste.isalo.org/ Un pastbin]=====

=====Le Wiki est désormais accessible 24/24, 7/7 et... 365/365 :)=====

=====Ajout de deux extensions : EasyTimeline et PDF Handler=====
[http://www.isalo.org/wiki.debian-fr/index.php/Test_timeline exemple Easy Timeline]
[http://www.isalo.org/wiki.debian-fr/index.php/Test.pdf exemple Pdf Handler]

=====Modification des autorisation du forum interne (section pause-café uniquement). Autorisation de lecture pour les utilisateurs &quot;anonymes&quot;.=====

=====Pour &quot;les forts en CSS&quot;, ajout de l'extension '''CSS''', une fonction du parseur qui permet d’inclure des feuilles de style sur vos pages de Wiki.=====
Exemple sur [[Test.css|cette page]]

=====Remise en fonction des [[Spécial:Téléversement_multiple|téléversements multiples - Version trunk r76488]] (10 fichiers au maximun).=====

=====Mise à jour du Wiki 1.16 à 1.16wmf4=====
[http://www.isalo.org/wiki.debian-fr/index.php/Sp%C3%A9cial:Version Version]

=====Mise à jour du forum interne (awc extension): 2.5.10 à 2.5.11=====
&lt;s&gt;Quelques liens dans le menu principal on souffert de la MAJ. Restauration ce soir ou demain.&lt;/s&gt;

[[Utilisateur:Lol|Lol]] 16 novembre 2010 à 18:31 (EAT)

=====* Changement de serveur et de branche ce 28/10/2010...=====
Le Wiki est désormais hébergé sur une squeeze!

 Linux lol 2.6.32-5-amd64 #1 SMP Wed Oct 20 00:05:22 UTC 2010 x86_64 GNU/Linux

=====* Mise à jour de notre Wiki qui passe de la version 1.15 à la dernière version 1.16=====
Il reste encore quelques réglages, mais dans l'ensemble... c'est bon!

=====&lt;s&gt;* Ajout d'une page pour les téléversements multiples...=====
[[Spécial:Téléversement_multiple]]&lt;/s&gt;

Fonction désactivée car ''incompatible avec la version 1.16'' du Wiki.

=====* Ajout de l'extension 'GeSHiCodeTag'=====
Permet la coloration syntaxique des lignes de codes... Très joli, et très pratique :)

Exemples

:&gt; &quot;code tag&quot; avancé
&lt;nowiki&gt;&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé avec numérotation
&lt;nowiki&gt;&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé par défaut
&lt;nowiki&gt;&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; Liste des langages supportés :
 &lt;nowiki&gt;&lt;code list&gt;&lt;/code&gt;&lt;/nowiki&gt;

 xbasic ecmascript io vb email pcre lotusscript per matlab awk plsql perl6 oracle11 powershell '''xorg_conf'''
 sdlbasic '''sql''' csharp autoit magiksf mapbasic visualprolog oobas delphi klonecpp rails sas actionscript
 cpp lolcode vbnet javascript abap ocaml dcs idl glsl progress gwbasic blitzbasic avisynth cfm smalltalk '''ruby'''
 asm lscript oracle8 scheme systemverilog '''diff''' fo vala modula2 mmix mirc kixtart ini newlisp vhdl qbasic
 fsharp cfdg genie mpasm java5 '''c''' dot logtalk inno providex caddcl asp hq9plus gambas '''vim''' bf oberon2 '''apache'''
 mxml q php cmake java oz whitespace lua rebol rsplus chaiscript html4strict gnuplot thinbasic '''div''' locobasic
 gml typoscript pixelbender purebasic verilog scilab actionscript3 xml j winbatch klonec autohotkey applescript
 freebasic teraterm '''css''' objc xpp m68k '''make''' clojure tsql apt_sources nsis bibtex cpp-qt lisp gettext dos modula3
 python ocaml-brief autoconf php-brief cobol pf haskell '''erlang''' pic16 intercal c_mac rpmspec '''perl''' pike oxygene
 4cs boo '''bash''' tcl cadlisp pascal powerbuilder hicest lotusformulas text properties fortran postgresql basic4gl
 jquery povray ada eiffel robots '''mysql''' cuesheet z80 d scala prolog icon '''whois''' cil '''latex''' gdb smarty visualfoxpro
 unicon bnf lsl2 genero reg groovy

Un exemple :

Le script suivant encadré de &lt;nowiki&gt;&lt;code bash&gt;votre script ici&lt;/code&gt;&lt;/nowiki&gt;

 #! /bin/sh
 
 N=/etc/init.d/sudo
 
 set -e
 
 case &quot;$1&quot; in
   start)
 	# make sure privileges don't persist across reboots
 	if [ -d /var/lib/sudo ]
 	then
                 find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
 	fi
 	;;
   stop|reload|restart|force-reload)
 	;;
   *)
 	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
 	exit 1
 	;;
 esac
 
 exit 0

Donnera :

&lt;code bash&gt;#! /bin/sh

N=/etc/init.d/sudo

set -e

case &quot;$1&quot; in
  start)
	# make sure privileges don't persist across reboots
	if [ -d /var/lib/sudo ]
	then
                find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
	fi
	;;
  stop|reload|restart|force-reload)
	;;
  *)
	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
	exit 1
	;;
esac

exit 0
&lt;/code&gt;

Bien plus lisible !

=====* La TRèS bonne nouvelle de la journée !=====
'''Squeeze est gelée ce 6 aout 2010 !'''

[http://www.debian.org/News/2010/20100806 L'annonce ICI]

=====* Nouvelle page Spéciale : Livre d'or... Ici : [[Spécial:Guestbook|Spécial:Guestbook]]=====
Permet aux invités de laisser un message; Il faut encore que j'ajoute un lien au menu général!

=====*Mise à jour du forum interne vers la version 2.5.10=====
Possibilité de faire des sondages...

Ouvrez une nouvelle discussion, enregistrez;
Ajoutez un sondage à votre discussion, c'est tout !

La mise à jour à apportée un nouveau menu au forum (en bas à gauche)

=====* Avec la réinstallation forcée suite au crash d'un disque dur, passage à la version 1.15.4 (déjà dépassée... la version 1.16 et 1.15.5 venant de sortir...)=====
N'hésitez pas à visiter [[Spécial:Pages_spéciales|les pages spéciales]] !

=====*Le support des fichiers svg (graphique vectoriel adaptable) est opérationnel&amp;nbsp;!=====
[[Fichier:Chess game 01.svg]]

=====*Page Spéciale bien pratique pour suivre les nouveaux articles, discussions...&amp;nbsp;!=====

[[Spécial:Newestpages]] 
Plus facile de se repérer que dans la page spéciale &quot;Modifications récentes&quot;. Nous ne risquons pas de perdre des articles en route...

=====*Nous allons pouvoir faire des sondages&amp;nbsp;!=====
[[Spécial:Voter]] 

Vous pouvez voter plusieurs fois, mais seul le dernier vote est pris en compte... Un vote par utilisateur&amp;nbsp;! 

Votez dès maintenant pour le maître de l'univers... 

=====*Option de prise en charge de vos css personnels activée...=====
Vous pouvez récupérer ici des css&amp;nbsp;: [http://www.mediawiki.org/wiki/Manual:Gallery_of_user_styles Manual:Gallery_of_user_styles] - ou créer votre propre css... Les skins utilisés dans notre mediawiki sont listés dans votre page de préférences (en haut à gauche). Il suffit de créer votre page de skin (en général Utilisateur:votre_super_pseudo/monobook.css et Utilisateur:votre_super_pseudo/monobook.js pour ceux nécessitant un js) et de rafraîchir votre navigateur... 

=====*Nouvelle page spéciale&amp;nbsp;: Qui est en ligne&amp;nbsp;!=====
[[Spécial:Qui est en ligne]]

=====*Ajout d'un &quot;chat-room&quot; au forum. Pour chaque article vous avez la possibilité d'ouvrir un '''salon''' pour discuter en direct...=====
Parfaitement inutile&amp;nbsp;? Peut-être pas... 

&lt;br&gt; [[Image:Capture d'écran124.jpeg]] 

Possibilité de n'ouvrir qu'un seul &quot;salon&quot; pour l'ensemble du forum&amp;nbsp;? Vos avis&amp;nbsp;?

=====*Ajout de l'extension &quot;CategoryTree&quot;=====
Un exemple vaut mieux qu'un long discours&amp;nbsp;: 

&lt;categorytree mode=&quot;pages&quot; style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:orange;&quot;&gt;Commandes&lt;/categorytree&gt; Ou plus simplement &lt;categorytree mode=&quot;pages&quot;&gt;Commandes&lt;/categorytree&gt; 

=====*Ajout d'une fonction WYSIWYG à l'édition=====
[[Image:Capture d'écran122.jpeg]] 

'''Attention, il y a un prix&amp;nbsp;: cela alourdit la navigation...''' 

=====*Mise à jour du forum de la version 2.4.1 à 2.4.3=====
&lt;blockquote&gt;J'espère que cela va régler un certains nombres de petits &quot;bugs&quot;&lt;/blockquote&gt; 

=====*Un forum interne doublé d'un service de messagerie...=====
&lt;blockquote&gt;'''&lt;u&gt;Le forum interne permet d'envoyer des messages privés à l'intérieur du Wiki, et par mail&amp;nbsp;!&lt;/u&gt;''' Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt; 

=====*Un forum interne&amp;nbsp;!=====
&lt;blockquote&gt;Amélioration sans doute, '''&lt;u&gt;le Wiki s'est doté d'un forum&lt;/u&gt;''' afin de permettre aux membres de discuter, en toute liberté. Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt;

&lt;/noinclude&gt;

[[Template:DernièresNouvelles|Voir toutes les nouvelles]]</text>
      <sha1>kj5m5nytppd2pmobpl0vzgd3rqsp3td</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4647</id>
      <parentid>4646</parentid>
      <timestamp>2012-10-29T11:31:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="11587">__NOTOC__
&lt;noinclude&gt;{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}&lt;/noinclude&gt;
----
&lt;center&gt;
'''ACTUALITÉS'''
&lt;/center&gt;&lt;br&gt;

=====Le 29 octobre 2012=====
Ajout d'une page contenant deux recherches google ciblées: Sur le forum.debian-fr.org et sur divers sites francophones Debian et GNU/Linux.
[[Recherche_debian|Recherches Debian]]

=====Le 22 septembre 2012=====
Mise à jour de sécurité =&gt; MediaWiki 1.19.2 [http://www.mediawiki.org/wiki/Release_notes/1.19 Note de version]

=====Le aout 2012=====
Activation du ssl sur le Wiki [https://www.isalo.org/wiki.debian-fr/index.php?title=Accueil wiki.debian-fr]
&lt;noinclude&gt;
=====Le 5 mai, mise à jour vers Mediawiki 1.19.0!=====
&lt;/noinclude&gt;
=====Le 28 avril 2012: Mise à jour Wiki vers 1.18.2 (1.18.3 échoué)=====

=====Le 24 avril 2012: Ajout de l'extension '''&quot;Collection&quot;'''.=====
Cette extension permet d'organiser et d'exporter dans divers formats (pdf pour l'instant, libre office à venir) une page ou une sélection de pages du Wiki.

=====Le Wiki à basculé sur l'ipv6!=====
http://pix.isalo.org/upload/thumb/1334318888.jpg

&lt;noinclude&gt;
=====Le 26 mars 2012: Ajout de l'extension CollapsableText.=====
&lt;collapsetext&gt;Ceci est le titre (toujours visible - Cliquez sur la flèche pour voir le texte complet). Ceci est le texte &quot;caché&quot; (visible quand il est &quot;déroulé&quot; ).&lt;/collapsetext&gt;

=====Le 23/02/2012: Activation de la possibilité d'insérer des images de pix.isalo.org=====
Image:
http://pix.isalo.org/upload/original/1293897717.gif

Miniature:
http://pix.isalo.org/upload/thumb/1329911740.png

=====Le 2 février 2012: Mise à niveau du Wiki ver 1.18.1=====

=====Le 1er février 2012: Activation des formules mathématiques avec le système TeX.=====

&lt;math&gt;
f(x) = \begin{cases}1 &amp; -1 \le x &lt; 0\\
 \frac{1}{2} &amp; x = 0\\x&amp;0&lt;x\le 1\end{cases}
&lt;/math&gt;


&lt;math&gt;
{}_pF_q(a_1,\ldots,a_p;c_1,\ldots,c_q;z) = \sum_{n=0}^\infty 
 \frac{(a_1)_n\cdots(a_p)_n}{(c_1)_n\cdots(c_q)_n}\frac{z^n}{n!}\,
&lt;/math&gt;


&lt;math&gt;
  \operatorname{erfc}(x) =
  \frac{2}{\sqrt{\pi}} \int_x^{\infty} e^{-t^2}\,dt =
  \frac{e^{-x^2}}{x\sqrt{\pi}}\sum_{n=0}^\infty (-1)^n \frac{(2n)!}{n!(2x)^{2n}}
 &lt;/math&gt;

=====Le 13 janvier 2012: Mise à jour du Wiki vers la version 1.17.1=====

=====06 août 2011: Ajout de l'extension [http://www.mediawiki.org/wiki/Extension:Widgets widget]=====
Premier essai sur le widget &quot;follow me on twitter&quot;

{{#widget:Twitter Follow
|twitter=debian
|what=me
}}

=====31 juillet 2011 - Ajout d'une page de contact: [[Spécial:Contact]]=====

=====Affichez votre &quot;twitter&quot; dans votre page perso &quot;Wiki&quot;=====
Utilisation:
&lt;code&gt;&lt;twitterfeed id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;
&lt;code&gt;&lt;twitterfeed nb=&quot;nb-of-tweets&quot; id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;

=====Mise à niveau vers 1.17 ce 29/07/2011=====

=====J'ai cédé à la sirène Google +1...=====
{{Template: Social}}

=====Mise à niveau du Wiki vers la version 1.16.5=====

=====Mise à jour du forum interne de 2.5.11 vers 2.5.12 [http://wiki.anotherwebcom.com/Category:AWC%27s_MediaWiki_Forum_Extension AWC Forum]=====

=====Ajout d'un service de partage d'images : [http://pix.isalo.org/ Hébergement d'images]=====

=====Ajout d'un outil de partage et de collaboration pour le débogage : [http://paste.isalo.org/ Un pastbin]=====

=====Le Wiki est désormais accessible 24/24, 7/7 et... 365/365 :)=====

=====Ajout de deux extensions : EasyTimeline et PDF Handler=====
[http://www.isalo.org/wiki.debian-fr/index.php/Test_timeline exemple Easy Timeline]
[http://www.isalo.org/wiki.debian-fr/index.php/Test.pdf exemple Pdf Handler]

=====Modification des autorisation du forum interne (section pause-café uniquement). Autorisation de lecture pour les utilisateurs &quot;anonymes&quot;.=====

=====Pour &quot;les forts en CSS&quot;, ajout de l'extension '''CSS''', une fonction du parseur qui permet d’inclure des feuilles de style sur vos pages de Wiki.=====
Exemple sur [[Test.css|cette page]]

=====Remise en fonction des [[Spécial:Téléversement_multiple|téléversements multiples - Version trunk r76488]] (10 fichiers au maximun).=====

=====Mise à jour du Wiki 1.16 à 1.16wmf4=====
[http://www.isalo.org/wiki.debian-fr/index.php/Sp%C3%A9cial:Version Version]

=====Mise à jour du forum interne (awc extension): 2.5.10 à 2.5.11=====
&lt;s&gt;Quelques liens dans le menu principal on souffert de la MAJ. Restauration ce soir ou demain.&lt;/s&gt;

[[Utilisateur:Lol|Lol]] 16 novembre 2010 à 18:31 (EAT)

=====* Changement de serveur et de branche ce 28/10/2010...=====
Le Wiki est désormais hébergé sur une squeeze!

 Linux lol 2.6.32-5-amd64 #1 SMP Wed Oct 20 00:05:22 UTC 2010 x86_64 GNU/Linux

=====* Mise à jour de notre Wiki qui passe de la version 1.15 à la dernière version 1.16=====
Il reste encore quelques réglages, mais dans l'ensemble... c'est bon!

=====&lt;s&gt;* Ajout d'une page pour les téléversements multiples...=====
[[Spécial:Téléversement_multiple]]&lt;/s&gt;

Fonction désactivée car ''incompatible avec la version 1.16'' du Wiki.

=====* Ajout de l'extension 'GeSHiCodeTag'=====
Permet la coloration syntaxique des lignes de codes... Très joli, et très pratique :)

Exemples

:&gt; &quot;code tag&quot; avancé
&lt;nowiki&gt;&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé avec numérotation
&lt;nowiki&gt;&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé par défaut
&lt;nowiki&gt;&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; Liste des langages supportés :
 &lt;nowiki&gt;&lt;code list&gt;&lt;/code&gt;&lt;/nowiki&gt;

 xbasic ecmascript io vb email pcre lotusscript per matlab awk plsql perl6 oracle11 powershell '''xorg_conf'''
 sdlbasic '''sql''' csharp autoit magiksf mapbasic visualprolog oobas delphi klonecpp rails sas actionscript
 cpp lolcode vbnet javascript abap ocaml dcs idl glsl progress gwbasic blitzbasic avisynth cfm smalltalk '''ruby'''
 asm lscript oracle8 scheme systemverilog '''diff''' fo vala modula2 mmix mirc kixtart ini newlisp vhdl qbasic
 fsharp cfdg genie mpasm java5 '''c''' dot logtalk inno providex caddcl asp hq9plus gambas '''vim''' bf oberon2 '''apache'''
 mxml q php cmake java oz whitespace lua rebol rsplus chaiscript html4strict gnuplot thinbasic '''div''' locobasic
 gml typoscript pixelbender purebasic verilog scilab actionscript3 xml j winbatch klonec autohotkey applescript
 freebasic teraterm '''css''' objc xpp m68k '''make''' clojure tsql apt_sources nsis bibtex cpp-qt lisp gettext dos modula3
 python ocaml-brief autoconf php-brief cobol pf haskell '''erlang''' pic16 intercal c_mac rpmspec '''perl''' pike oxygene
 4cs boo '''bash''' tcl cadlisp pascal powerbuilder hicest lotusformulas text properties fortran postgresql basic4gl
 jquery povray ada eiffel robots '''mysql''' cuesheet z80 d scala prolog icon '''whois''' cil '''latex''' gdb smarty visualfoxpro
 unicon bnf lsl2 genero reg groovy

Un exemple :

Le script suivant encadré de &lt;nowiki&gt;&lt;code bash&gt;votre script ici&lt;/code&gt;&lt;/nowiki&gt;

 #! /bin/sh
 
 N=/etc/init.d/sudo
 
 set -e
 
 case &quot;$1&quot; in
   start)
 	# make sure privileges don't persist across reboots
 	if [ -d /var/lib/sudo ]
 	then
                 find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
 	fi
 	;;
   stop|reload|restart|force-reload)
 	;;
   *)
 	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
 	exit 1
 	;;
 esac
 
 exit 0

Donnera :

&lt;code bash&gt;#! /bin/sh

N=/etc/init.d/sudo

set -e

case &quot;$1&quot; in
  start)
	# make sure privileges don't persist across reboots
	if [ -d /var/lib/sudo ]
	then
                find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
	fi
	;;
  stop|reload|restart|force-reload)
	;;
  *)
	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
	exit 1
	;;
esac

exit 0
&lt;/code&gt;

Bien plus lisible !

=====* La TRèS bonne nouvelle de la journée !=====
'''Squeeze est gelée ce 6 aout 2010 !'''

[http://www.debian.org/News/2010/20100806 L'annonce ICI]

=====* Nouvelle page Spéciale : Livre d'or... Ici : [[Spécial:Guestbook|Spécial:Guestbook]]=====
Permet aux invités de laisser un message; Il faut encore que j'ajoute un lien au menu général!

=====*Mise à jour du forum interne vers la version 2.5.10=====
Possibilité de faire des sondages...

Ouvrez une nouvelle discussion, enregistrez;
Ajoutez un sondage à votre discussion, c'est tout !

La mise à jour à apportée un nouveau menu au forum (en bas à gauche)

=====* Avec la réinstallation forcée suite au crash d'un disque dur, passage à la version 1.15.4 (déjà dépassée... la version 1.16 et 1.15.5 venant de sortir...)=====
N'hésitez pas à visiter [[Spécial:Pages_spéciales|les pages spéciales]] !

=====*Le support des fichiers svg (graphique vectoriel adaptable) est opérationnel&amp;nbsp;!=====
[[Fichier:Chess game 01.svg]]

=====*Page Spéciale bien pratique pour suivre les nouveaux articles, discussions...&amp;nbsp;!=====

[[Spécial:Newestpages]] 
Plus facile de se repérer que dans la page spéciale &quot;Modifications récentes&quot;. Nous ne risquons pas de perdre des articles en route...

=====*Nous allons pouvoir faire des sondages&amp;nbsp;!=====
[[Spécial:Voter]] 

Vous pouvez voter plusieurs fois, mais seul le dernier vote est pris en compte... Un vote par utilisateur&amp;nbsp;! 

Votez dès maintenant pour le maître de l'univers... 

=====*Option de prise en charge de vos css personnels activée...=====
Vous pouvez récupérer ici des css&amp;nbsp;: [http://www.mediawiki.org/wiki/Manual:Gallery_of_user_styles Manual:Gallery_of_user_styles] - ou créer votre propre css... Les skins utilisés dans notre mediawiki sont listés dans votre page de préférences (en haut à gauche). Il suffit de créer votre page de skin (en général Utilisateur:votre_super_pseudo/monobook.css et Utilisateur:votre_super_pseudo/monobook.js pour ceux nécessitant un js) et de rafraîchir votre navigateur... 

=====*Nouvelle page spéciale&amp;nbsp;: Qui est en ligne&amp;nbsp;!=====
[[Spécial:Qui est en ligne]]

=====*Ajout d'un &quot;chat-room&quot; au forum. Pour chaque article vous avez la possibilité d'ouvrir un '''salon''' pour discuter en direct...=====
Parfaitement inutile&amp;nbsp;? Peut-être pas... 

&lt;br&gt; [[Image:Capture d'écran124.jpeg]] 

Possibilité de n'ouvrir qu'un seul &quot;salon&quot; pour l'ensemble du forum&amp;nbsp;? Vos avis&amp;nbsp;?

=====*Ajout de l'extension &quot;CategoryTree&quot;=====
Un exemple vaut mieux qu'un long discours&amp;nbsp;: 

&lt;categorytree mode=&quot;pages&quot; style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:orange;&quot;&gt;Commandes&lt;/categorytree&gt; Ou plus simplement &lt;categorytree mode=&quot;pages&quot;&gt;Commandes&lt;/categorytree&gt; 

=====*Ajout d'une fonction WYSIWYG à l'édition=====
[[Image:Capture d'écran122.jpeg]] 

'''Attention, il y a un prix&amp;nbsp;: cela alourdit la navigation...''' 

=====*Mise à jour du forum de la version 2.4.1 à 2.4.3=====
&lt;blockquote&gt;J'espère que cela va régler un certains nombres de petits &quot;bugs&quot;&lt;/blockquote&gt; 

=====*Un forum interne doublé d'un service de messagerie...=====
&lt;blockquote&gt;'''&lt;u&gt;Le forum interne permet d'envoyer des messages privés à l'intérieur du Wiki, et par mail&amp;nbsp;!&lt;/u&gt;''' Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt; 

=====*Un forum interne&amp;nbsp;!=====
&lt;blockquote&gt;Amélioration sans doute, '''&lt;u&gt;le Wiki s'est doté d'un forum&lt;/u&gt;''' afin de permettre aux membres de discuter, en toute liberté. Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt;

&lt;/noinclude&gt;

[[Template:DernièresNouvelles|Voir toutes les nouvelles]]</text>
      <sha1>bk4fvk8agd96rj4wt7vrokctd9m494x</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4648</id>
      <parentid>4647</parentid>
      <timestamp>2012-10-29T11:40:03Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="11587">__NOTOC__
{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
&lt;noinclude&gt;{{Template: Social}}&lt;/noinclude&gt;
----
&lt;center&gt;
'''ACTUALITÉS'''
&lt;/center&gt;&lt;br&gt;

=====Le 29 octobre 2012=====
Ajout d'une page contenant deux recherches google ciblées: Sur le forum.debian-fr.org et sur divers sites francophones Debian et GNU/Linux.
[[Recherche_debian|Recherches Debian]]

=====Le 22 septembre 2012=====
Mise à jour de sécurité =&gt; MediaWiki 1.19.2 [http://www.mediawiki.org/wiki/Release_notes/1.19 Note de version]

=====Le aout 2012=====
Activation du ssl sur le Wiki [https://www.isalo.org/wiki.debian-fr/index.php?title=Accueil wiki.debian-fr]
&lt;noinclude&gt;
=====Le 5 mai, mise à jour vers Mediawiki 1.19.0!=====
&lt;/noinclude&gt;
=====Le 28 avril 2012: Mise à jour Wiki vers 1.18.2 (1.18.3 échoué)=====

=====Le 24 avril 2012: Ajout de l'extension '''&quot;Collection&quot;'''.=====
Cette extension permet d'organiser et d'exporter dans divers formats (pdf pour l'instant, libre office à venir) une page ou une sélection de pages du Wiki.

=====Le Wiki à basculé sur l'ipv6!=====
http://pix.isalo.org/upload/thumb/1334318888.jpg

&lt;noinclude&gt;
=====Le 26 mars 2012: Ajout de l'extension CollapsableText.=====
&lt;collapsetext&gt;Ceci est le titre (toujours visible - Cliquez sur la flèche pour voir le texte complet). Ceci est le texte &quot;caché&quot; (visible quand il est &quot;déroulé&quot; ).&lt;/collapsetext&gt;

=====Le 23/02/2012: Activation de la possibilité d'insérer des images de pix.isalo.org=====
Image:
http://pix.isalo.org/upload/original/1293897717.gif

Miniature:
http://pix.isalo.org/upload/thumb/1329911740.png

=====Le 2 février 2012: Mise à niveau du Wiki ver 1.18.1=====

=====Le 1er février 2012: Activation des formules mathématiques avec le système TeX.=====

&lt;math&gt;
f(x) = \begin{cases}1 &amp; -1 \le x &lt; 0\\
 \frac{1}{2} &amp; x = 0\\x&amp;0&lt;x\le 1\end{cases}
&lt;/math&gt;


&lt;math&gt;
{}_pF_q(a_1,\ldots,a_p;c_1,\ldots,c_q;z) = \sum_{n=0}^\infty 
 \frac{(a_1)_n\cdots(a_p)_n}{(c_1)_n\cdots(c_q)_n}\frac{z^n}{n!}\,
&lt;/math&gt;


&lt;math&gt;
  \operatorname{erfc}(x) =
  \frac{2}{\sqrt{\pi}} \int_x^{\infty} e^{-t^2}\,dt =
  \frac{e^{-x^2}}{x\sqrt{\pi}}\sum_{n=0}^\infty (-1)^n \frac{(2n)!}{n!(2x)^{2n}}
 &lt;/math&gt;

=====Le 13 janvier 2012: Mise à jour du Wiki vers la version 1.17.1=====

=====06 août 2011: Ajout de l'extension [http://www.mediawiki.org/wiki/Extension:Widgets widget]=====
Premier essai sur le widget &quot;follow me on twitter&quot;

{{#widget:Twitter Follow
|twitter=debian
|what=me
}}

=====31 juillet 2011 - Ajout d'une page de contact: [[Spécial:Contact]]=====

=====Affichez votre &quot;twitter&quot; dans votre page perso &quot;Wiki&quot;=====
Utilisation:
&lt;code&gt;&lt;twitterfeed id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;
&lt;code&gt;&lt;twitterfeed nb=&quot;nb-of-tweets&quot; id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;

=====Mise à niveau vers 1.17 ce 29/07/2011=====

=====J'ai cédé à la sirène Google +1...=====
{{Template: Social}}

=====Mise à niveau du Wiki vers la version 1.16.5=====

=====Mise à jour du forum interne de 2.5.11 vers 2.5.12 [http://wiki.anotherwebcom.com/Category:AWC%27s_MediaWiki_Forum_Extension AWC Forum]=====

=====Ajout d'un service de partage d'images : [http://pix.isalo.org/ Hébergement d'images]=====

=====Ajout d'un outil de partage et de collaboration pour le débogage : [http://paste.isalo.org/ Un pastbin]=====

=====Le Wiki est désormais accessible 24/24, 7/7 et... 365/365 :)=====

=====Ajout de deux extensions : EasyTimeline et PDF Handler=====
[http://www.isalo.org/wiki.debian-fr/index.php/Test_timeline exemple Easy Timeline]
[http://www.isalo.org/wiki.debian-fr/index.php/Test.pdf exemple Pdf Handler]

=====Modification des autorisation du forum interne (section pause-café uniquement). Autorisation de lecture pour les utilisateurs &quot;anonymes&quot;.=====

=====Pour &quot;les forts en CSS&quot;, ajout de l'extension '''CSS''', une fonction du parseur qui permet d’inclure des feuilles de style sur vos pages de Wiki.=====
Exemple sur [[Test.css|cette page]]

=====Remise en fonction des [[Spécial:Téléversement_multiple|téléversements multiples - Version trunk r76488]] (10 fichiers au maximun).=====

=====Mise à jour du Wiki 1.16 à 1.16wmf4=====
[http://www.isalo.org/wiki.debian-fr/index.php/Sp%C3%A9cial:Version Version]

=====Mise à jour du forum interne (awc extension): 2.5.10 à 2.5.11=====
&lt;s&gt;Quelques liens dans le menu principal on souffert de la MAJ. Restauration ce soir ou demain.&lt;/s&gt;

[[Utilisateur:Lol|Lol]] 16 novembre 2010 à 18:31 (EAT)

=====* Changement de serveur et de branche ce 28/10/2010...=====
Le Wiki est désormais hébergé sur une squeeze!

 Linux lol 2.6.32-5-amd64 #1 SMP Wed Oct 20 00:05:22 UTC 2010 x86_64 GNU/Linux

=====* Mise à jour de notre Wiki qui passe de la version 1.15 à la dernière version 1.16=====
Il reste encore quelques réglages, mais dans l'ensemble... c'est bon!

=====&lt;s&gt;* Ajout d'une page pour les téléversements multiples...=====
[[Spécial:Téléversement_multiple]]&lt;/s&gt;

Fonction désactivée car ''incompatible avec la version 1.16'' du Wiki.

=====* Ajout de l'extension 'GeSHiCodeTag'=====
Permet la coloration syntaxique des lignes de codes... Très joli, et très pratique :)

Exemples

:&gt; &quot;code tag&quot; avancé
&lt;nowiki&gt;&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé avec numérotation
&lt;nowiki&gt;&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé par défaut
&lt;nowiki&gt;&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; Liste des langages supportés :
 &lt;nowiki&gt;&lt;code list&gt;&lt;/code&gt;&lt;/nowiki&gt;

 xbasic ecmascript io vb email pcre lotusscript per matlab awk plsql perl6 oracle11 powershell '''xorg_conf'''
 sdlbasic '''sql''' csharp autoit magiksf mapbasic visualprolog oobas delphi klonecpp rails sas actionscript
 cpp lolcode vbnet javascript abap ocaml dcs idl glsl progress gwbasic blitzbasic avisynth cfm smalltalk '''ruby'''
 asm lscript oracle8 scheme systemverilog '''diff''' fo vala modula2 mmix mirc kixtart ini newlisp vhdl qbasic
 fsharp cfdg genie mpasm java5 '''c''' dot logtalk inno providex caddcl asp hq9plus gambas '''vim''' bf oberon2 '''apache'''
 mxml q php cmake java oz whitespace lua rebol rsplus chaiscript html4strict gnuplot thinbasic '''div''' locobasic
 gml typoscript pixelbender purebasic verilog scilab actionscript3 xml j winbatch klonec autohotkey applescript
 freebasic teraterm '''css''' objc xpp m68k '''make''' clojure tsql apt_sources nsis bibtex cpp-qt lisp gettext dos modula3
 python ocaml-brief autoconf php-brief cobol pf haskell '''erlang''' pic16 intercal c_mac rpmspec '''perl''' pike oxygene
 4cs boo '''bash''' tcl cadlisp pascal powerbuilder hicest lotusformulas text properties fortran postgresql basic4gl
 jquery povray ada eiffel robots '''mysql''' cuesheet z80 d scala prolog icon '''whois''' cil '''latex''' gdb smarty visualfoxpro
 unicon bnf lsl2 genero reg groovy

Un exemple :

Le script suivant encadré de &lt;nowiki&gt;&lt;code bash&gt;votre script ici&lt;/code&gt;&lt;/nowiki&gt;

 #! /bin/sh
 
 N=/etc/init.d/sudo
 
 set -e
 
 case &quot;$1&quot; in
   start)
 	# make sure privileges don't persist across reboots
 	if [ -d /var/lib/sudo ]
 	then
                 find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
 	fi
 	;;
   stop|reload|restart|force-reload)
 	;;
   *)
 	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
 	exit 1
 	;;
 esac
 
 exit 0

Donnera :

&lt;code bash&gt;#! /bin/sh

N=/etc/init.d/sudo

set -e

case &quot;$1&quot; in
  start)
	# make sure privileges don't persist across reboots
	if [ -d /var/lib/sudo ]
	then
                find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
	fi
	;;
  stop|reload|restart|force-reload)
	;;
  *)
	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
	exit 1
	;;
esac

exit 0
&lt;/code&gt;

Bien plus lisible !

=====* La TRèS bonne nouvelle de la journée !=====
'''Squeeze est gelée ce 6 aout 2010 !'''

[http://www.debian.org/News/2010/20100806 L'annonce ICI]

=====* Nouvelle page Spéciale : Livre d'or... Ici : [[Spécial:Guestbook|Spécial:Guestbook]]=====
Permet aux invités de laisser un message; Il faut encore que j'ajoute un lien au menu général!

=====*Mise à jour du forum interne vers la version 2.5.10=====
Possibilité de faire des sondages...

Ouvrez une nouvelle discussion, enregistrez;
Ajoutez un sondage à votre discussion, c'est tout !

La mise à jour à apportée un nouveau menu au forum (en bas à gauche)

=====* Avec la réinstallation forcée suite au crash d'un disque dur, passage à la version 1.15.4 (déjà dépassée... la version 1.16 et 1.15.5 venant de sortir...)=====
N'hésitez pas à visiter [[Spécial:Pages_spéciales|les pages spéciales]] !

=====*Le support des fichiers svg (graphique vectoriel adaptable) est opérationnel&amp;nbsp;!=====
[[Fichier:Chess game 01.svg]]

=====*Page Spéciale bien pratique pour suivre les nouveaux articles, discussions...&amp;nbsp;!=====

[[Spécial:Newestpages]] 
Plus facile de se repérer que dans la page spéciale &quot;Modifications récentes&quot;. Nous ne risquons pas de perdre des articles en route...

=====*Nous allons pouvoir faire des sondages&amp;nbsp;!=====
[[Spécial:Voter]] 

Vous pouvez voter plusieurs fois, mais seul le dernier vote est pris en compte... Un vote par utilisateur&amp;nbsp;! 

Votez dès maintenant pour le maître de l'univers... 

=====*Option de prise en charge de vos css personnels activée...=====
Vous pouvez récupérer ici des css&amp;nbsp;: [http://www.mediawiki.org/wiki/Manual:Gallery_of_user_styles Manual:Gallery_of_user_styles] - ou créer votre propre css... Les skins utilisés dans notre mediawiki sont listés dans votre page de préférences (en haut à gauche). Il suffit de créer votre page de skin (en général Utilisateur:votre_super_pseudo/monobook.css et Utilisateur:votre_super_pseudo/monobook.js pour ceux nécessitant un js) et de rafraîchir votre navigateur... 

=====*Nouvelle page spéciale&amp;nbsp;: Qui est en ligne&amp;nbsp;!=====
[[Spécial:Qui est en ligne]]

=====*Ajout d'un &quot;chat-room&quot; au forum. Pour chaque article vous avez la possibilité d'ouvrir un '''salon''' pour discuter en direct...=====
Parfaitement inutile&amp;nbsp;? Peut-être pas... 

&lt;br&gt; [[Image:Capture d'écran124.jpeg]] 

Possibilité de n'ouvrir qu'un seul &quot;salon&quot; pour l'ensemble du forum&amp;nbsp;? Vos avis&amp;nbsp;?

=====*Ajout de l'extension &quot;CategoryTree&quot;=====
Un exemple vaut mieux qu'un long discours&amp;nbsp;: 

&lt;categorytree mode=&quot;pages&quot; style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:orange;&quot;&gt;Commandes&lt;/categorytree&gt; Ou plus simplement &lt;categorytree mode=&quot;pages&quot;&gt;Commandes&lt;/categorytree&gt; 

=====*Ajout d'une fonction WYSIWYG à l'édition=====
[[Image:Capture d'écran122.jpeg]] 

'''Attention, il y a un prix&amp;nbsp;: cela alourdit la navigation...''' 

=====*Mise à jour du forum de la version 2.4.1 à 2.4.3=====
&lt;blockquote&gt;J'espère que cela va régler un certains nombres de petits &quot;bugs&quot;&lt;/blockquote&gt; 

=====*Un forum interne doublé d'un service de messagerie...=====
&lt;blockquote&gt;'''&lt;u&gt;Le forum interne permet d'envoyer des messages privés à l'intérieur du Wiki, et par mail&amp;nbsp;!&lt;/u&gt;''' Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt; 

=====*Un forum interne&amp;nbsp;!=====
&lt;blockquote&gt;Amélioration sans doute, '''&lt;u&gt;le Wiki s'est doté d'un forum&lt;/u&gt;''' afin de permettre aux membres de discuter, en toute liberté. Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt;

&lt;/noinclude&gt;

[[Template:DernièresNouvelles|Voir toutes les nouvelles]]</text>
      <sha1>kj5m5nytppd2pmobpl0vzgd3rqsp3td</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4706</id>
      <parentid>4648</parentid>
      <timestamp>2012-10-31T14:35:19Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="11747">__NOTOC__
{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
&lt;noinclude&gt;{{Template: Social}}&lt;/noinclude&gt;
----
&lt;center&gt;
'''ACTUALITÉS'''
&lt;/center&gt;&lt;br&gt;

=====Le 31 octobre 2012=====

Mise-à-jour de l'extension [[Spécial:ContributionScores|Contribution Scores]].
Permet de voir un classement des contributeurs.

=====Le 29 octobre 2012=====
Ajout d'une page contenant deux recherches google ciblées: Sur le forum.debian-fr.org et sur divers sites francophones Debian et GNU/Linux.
[[Recherche_debian|Recherches Debian]]

=====Le 22 septembre 2012=====
Mise à jour de sécurité =&gt; MediaWiki 1.19.2 [http://www.mediawiki.org/wiki/Release_notes/1.19 Note de version]

=====Le aout 2012=====
Activation du ssl sur le Wiki [https://www.isalo.org/wiki.debian-fr/index.php?title=Accueil wiki.debian-fr]
&lt;noinclude&gt;
=====Le 5 mai, mise à jour vers Mediawiki 1.19.0!=====
&lt;/noinclude&gt;
=====Le 28 avril 2012: Mise à jour Wiki vers 1.18.2 (1.18.3 échoué)=====

=====Le 24 avril 2012: Ajout de l'extension '''&quot;Collection&quot;'''.=====
Cette extension permet d'organiser et d'exporter dans divers formats (pdf pour l'instant, libre office à venir) une page ou une sélection de pages du Wiki.

=====Le Wiki à basculé sur l'ipv6!=====
http://pix.isalo.org/upload/thumb/1334318888.jpg

&lt;noinclude&gt;
=====Le 26 mars 2012: Ajout de l'extension CollapsableText.=====
&lt;collapsetext&gt;Ceci est le titre (toujours visible - Cliquez sur la flèche pour voir le texte complet). Ceci est le texte &quot;caché&quot; (visible quand il est &quot;déroulé&quot; ).&lt;/collapsetext&gt;

=====Le 23/02/2012: Activation de la possibilité d'insérer des images de pix.isalo.org=====
Image:
http://pix.isalo.org/upload/original/1293897717.gif

Miniature:
http://pix.isalo.org/upload/thumb/1329911740.png

=====Le 2 février 2012: Mise à niveau du Wiki ver 1.18.1=====

=====Le 1er février 2012: Activation des formules mathématiques avec le système TeX.=====

&lt;math&gt;
f(x) = \begin{cases}1 &amp; -1 \le x &lt; 0\\
 \frac{1}{2} &amp; x = 0\\x&amp;0&lt;x\le 1\end{cases}
&lt;/math&gt;


&lt;math&gt;
{}_pF_q(a_1,\ldots,a_p;c_1,\ldots,c_q;z) = \sum_{n=0}^\infty 
 \frac{(a_1)_n\cdots(a_p)_n}{(c_1)_n\cdots(c_q)_n}\frac{z^n}{n!}\,
&lt;/math&gt;


&lt;math&gt;
  \operatorname{erfc}(x) =
  \frac{2}{\sqrt{\pi}} \int_x^{\infty} e^{-t^2}\,dt =
  \frac{e^{-x^2}}{x\sqrt{\pi}}\sum_{n=0}^\infty (-1)^n \frac{(2n)!}{n!(2x)^{2n}}
 &lt;/math&gt;

=====Le 13 janvier 2012: Mise à jour du Wiki vers la version 1.17.1=====

=====06 août 2011: Ajout de l'extension [http://www.mediawiki.org/wiki/Extension:Widgets widget]=====
Premier essai sur le widget &quot;follow me on twitter&quot;

{{#widget:Twitter Follow
|twitter=debian
|what=me
}}

=====31 juillet 2011 - Ajout d'une page de contact: [[Spécial:Contact]]=====

=====Affichez votre &quot;twitter&quot; dans votre page perso &quot;Wiki&quot;=====
Utilisation:
&lt;code&gt;&lt;twitterfeed id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;
&lt;code&gt;&lt;twitterfeed nb=&quot;nb-of-tweets&quot; id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;

=====Mise à niveau vers 1.17 ce 29/07/2011=====

=====J'ai cédé à la sirène Google +1...=====
{{Template: Social}}

=====Mise à niveau du Wiki vers la version 1.16.5=====

=====Mise à jour du forum interne de 2.5.11 vers 2.5.12 [http://wiki.anotherwebcom.com/Category:AWC%27s_MediaWiki_Forum_Extension AWC Forum]=====

=====Ajout d'un service de partage d'images : [http://pix.isalo.org/ Hébergement d'images]=====

=====Ajout d'un outil de partage et de collaboration pour le débogage : [http://paste.isalo.org/ Un pastbin]=====

=====Le Wiki est désormais accessible 24/24, 7/7 et... 365/365 :)=====

=====Ajout de deux extensions : EasyTimeline et PDF Handler=====
[http://www.isalo.org/wiki.debian-fr/index.php/Test_timeline exemple Easy Timeline]
[http://www.isalo.org/wiki.debian-fr/index.php/Test.pdf exemple Pdf Handler]

=====Modification des autorisation du forum interne (section pause-café uniquement). Autorisation de lecture pour les utilisateurs &quot;anonymes&quot;.=====

=====Pour &quot;les forts en CSS&quot;, ajout de l'extension '''CSS''', une fonction du parseur qui permet d’inclure des feuilles de style sur vos pages de Wiki.=====
Exemple sur [[Test.css|cette page]]

=====Remise en fonction des [[Spécial:Téléversement_multiple|téléversements multiples - Version trunk r76488]] (10 fichiers au maximun).=====

=====Mise à jour du Wiki 1.16 à 1.16wmf4=====
[http://www.isalo.org/wiki.debian-fr/index.php/Sp%C3%A9cial:Version Version]

=====Mise à jour du forum interne (awc extension): 2.5.10 à 2.5.11=====
&lt;s&gt;Quelques liens dans le menu principal on souffert de la MAJ. Restauration ce soir ou demain.&lt;/s&gt;

[[Utilisateur:Lol|Lol]] 16 novembre 2010 à 18:31 (EAT)

=====* Changement de serveur et de branche ce 28/10/2010...=====
Le Wiki est désormais hébergé sur une squeeze!

 Linux lol 2.6.32-5-amd64 #1 SMP Wed Oct 20 00:05:22 UTC 2010 x86_64 GNU/Linux

=====* Mise à jour de notre Wiki qui passe de la version 1.15 à la dernière version 1.16=====
Il reste encore quelques réglages, mais dans l'ensemble... c'est bon!

=====&lt;s&gt;* Ajout d'une page pour les téléversements multiples...=====
[[Spécial:Téléversement_multiple]]&lt;/s&gt;

Fonction désactivée car ''incompatible avec la version 1.16'' du Wiki.

=====* Ajout de l'extension 'GeSHiCodeTag'=====
Permet la coloration syntaxique des lignes de codes... Très joli, et très pratique :)

Exemples

:&gt; &quot;code tag&quot; avancé
&lt;nowiki&gt;&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé avec numérotation
&lt;nowiki&gt;&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé par défaut
&lt;nowiki&gt;&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; Liste des langages supportés :
 &lt;nowiki&gt;&lt;code list&gt;&lt;/code&gt;&lt;/nowiki&gt;

 xbasic ecmascript io vb email pcre lotusscript per matlab awk plsql perl6 oracle11 powershell '''xorg_conf'''
 sdlbasic '''sql''' csharp autoit magiksf mapbasic visualprolog oobas delphi klonecpp rails sas actionscript
 cpp lolcode vbnet javascript abap ocaml dcs idl glsl progress gwbasic blitzbasic avisynth cfm smalltalk '''ruby'''
 asm lscript oracle8 scheme systemverilog '''diff''' fo vala modula2 mmix mirc kixtart ini newlisp vhdl qbasic
 fsharp cfdg genie mpasm java5 '''c''' dot logtalk inno providex caddcl asp hq9plus gambas '''vim''' bf oberon2 '''apache'''
 mxml q php cmake java oz whitespace lua rebol rsplus chaiscript html4strict gnuplot thinbasic '''div''' locobasic
 gml typoscript pixelbender purebasic verilog scilab actionscript3 xml j winbatch klonec autohotkey applescript
 freebasic teraterm '''css''' objc xpp m68k '''make''' clojure tsql apt_sources nsis bibtex cpp-qt lisp gettext dos modula3
 python ocaml-brief autoconf php-brief cobol pf haskell '''erlang''' pic16 intercal c_mac rpmspec '''perl''' pike oxygene
 4cs boo '''bash''' tcl cadlisp pascal powerbuilder hicest lotusformulas text properties fortran postgresql basic4gl
 jquery povray ada eiffel robots '''mysql''' cuesheet z80 d scala prolog icon '''whois''' cil '''latex''' gdb smarty visualfoxpro
 unicon bnf lsl2 genero reg groovy

Un exemple :

Le script suivant encadré de &lt;nowiki&gt;&lt;code bash&gt;votre script ici&lt;/code&gt;&lt;/nowiki&gt;

 #! /bin/sh
 
 N=/etc/init.d/sudo
 
 set -e
 
 case &quot;$1&quot; in
   start)
 	# make sure privileges don't persist across reboots
 	if [ -d /var/lib/sudo ]
 	then
                 find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
 	fi
 	;;
   stop|reload|restart|force-reload)
 	;;
   *)
 	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
 	exit 1
 	;;
 esac
 
 exit 0

Donnera :

&lt;code bash&gt;#! /bin/sh

N=/etc/init.d/sudo

set -e

case &quot;$1&quot; in
  start)
	# make sure privileges don't persist across reboots
	if [ -d /var/lib/sudo ]
	then
                find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
	fi
	;;
  stop|reload|restart|force-reload)
	;;
  *)
	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
	exit 1
	;;
esac

exit 0
&lt;/code&gt;

Bien plus lisible !

=====* La TRèS bonne nouvelle de la journée !=====
'''Squeeze est gelée ce 6 aout 2010 !'''

[http://www.debian.org/News/2010/20100806 L'annonce ICI]

=====* Nouvelle page Spéciale : Livre d'or... Ici : [[Spécial:Guestbook|Spécial:Guestbook]]=====
Permet aux invités de laisser un message; Il faut encore que j'ajoute un lien au menu général!

=====*Mise à jour du forum interne vers la version 2.5.10=====
Possibilité de faire des sondages...

Ouvrez une nouvelle discussion, enregistrez;
Ajoutez un sondage à votre discussion, c'est tout !

La mise à jour à apportée un nouveau menu au forum (en bas à gauche)

=====* Avec la réinstallation forcée suite au crash d'un disque dur, passage à la version 1.15.4 (déjà dépassée... la version 1.16 et 1.15.5 venant de sortir...)=====
N'hésitez pas à visiter [[Spécial:Pages_spéciales|les pages spéciales]] !

=====*Le support des fichiers svg (graphique vectoriel adaptable) est opérationnel&amp;nbsp;!=====
[[Fichier:Chess game 01.svg]]

=====*Page Spéciale bien pratique pour suivre les nouveaux articles, discussions...&amp;nbsp;!=====

[[Spécial:Newestpages]] 
Plus facile de se repérer que dans la page spéciale &quot;Modifications récentes&quot;. Nous ne risquons pas de perdre des articles en route...

=====*Nous allons pouvoir faire des sondages&amp;nbsp;!=====
[[Spécial:Voter]] 

Vous pouvez voter plusieurs fois, mais seul le dernier vote est pris en compte... Un vote par utilisateur&amp;nbsp;! 

Votez dès maintenant pour le maître de l'univers... 

=====*Option de prise en charge de vos css personnels activée...=====
Vous pouvez récupérer ici des css&amp;nbsp;: [http://www.mediawiki.org/wiki/Manual:Gallery_of_user_styles Manual:Gallery_of_user_styles] - ou créer votre propre css... Les skins utilisés dans notre mediawiki sont listés dans votre page de préférences (en haut à gauche). Il suffit de créer votre page de skin (en général Utilisateur:votre_super_pseudo/monobook.css et Utilisateur:votre_super_pseudo/monobook.js pour ceux nécessitant un js) et de rafraîchir votre navigateur... 

=====*Nouvelle page spéciale&amp;nbsp;: Qui est en ligne&amp;nbsp;!=====
[[Spécial:Qui est en ligne]]

=====*Ajout d'un &quot;chat-room&quot; au forum. Pour chaque article vous avez la possibilité d'ouvrir un '''salon''' pour discuter en direct...=====
Parfaitement inutile&amp;nbsp;? Peut-être pas... 

&lt;br&gt; [[Image:Capture d'écran124.jpeg]] 

Possibilité de n'ouvrir qu'un seul &quot;salon&quot; pour l'ensemble du forum&amp;nbsp;? Vos avis&amp;nbsp;?

=====*Ajout de l'extension &quot;CategoryTree&quot;=====
Un exemple vaut mieux qu'un long discours&amp;nbsp;: 

&lt;categorytree mode=&quot;pages&quot; style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:orange;&quot;&gt;Commandes&lt;/categorytree&gt; Ou plus simplement &lt;categorytree mode=&quot;pages&quot;&gt;Commandes&lt;/categorytree&gt; 

=====*Ajout d'une fonction WYSIWYG à l'édition=====
[[Image:Capture d'écran122.jpeg]] 

'''Attention, il y a un prix&amp;nbsp;: cela alourdit la navigation...''' 

=====*Mise à jour du forum de la version 2.4.1 à 2.4.3=====
&lt;blockquote&gt;J'espère que cela va régler un certains nombres de petits &quot;bugs&quot;&lt;/blockquote&gt; 

=====*Un forum interne doublé d'un service de messagerie...=====
&lt;blockquote&gt;'''&lt;u&gt;Le forum interne permet d'envoyer des messages privés à l'intérieur du Wiki, et par mail&amp;nbsp;!&lt;/u&gt;''' Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt; 

=====*Un forum interne&amp;nbsp;!=====
&lt;blockquote&gt;Amélioration sans doute, '''&lt;u&gt;le Wiki s'est doté d'un forum&lt;/u&gt;''' afin de permettre aux membres de discuter, en toute liberté. Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt;

&lt;/noinclude&gt;

[[Template:DernièresNouvelles|Voir toutes les nouvelles]]</text>
      <sha1>tc7p1t0ey7025qgwva0m0bwr44voxg5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4719</id>
      <parentid>4706</parentid>
      <timestamp>2012-11-01T07:33:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="11835">__NOTOC__
{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
&lt;noinclude&gt;{{Template: Social}}&lt;/noinclude&gt;
----
&lt;center&gt;
'''ACTUALITÉS'''
&lt;/center&gt;&lt;br&gt;

=====Le 1er novembre 2012=====

Publication de [[Accueil|la nouvelle page d'accueil!]]

=====Le 31 octobre 2012=====

Mise-à-jour de l'extension [[Spécial:ContributionScores|Contribution Scores]].
Permet de voir un classement des contributeurs.

=====Le 29 octobre 2012=====
Ajout d'une page contenant deux recherches google ciblées: Sur le forum.debian-fr.org et sur divers sites francophones Debian et GNU/Linux.
[[Recherche_debian|Recherches Debian]]

=====Le 22 septembre 2012=====
Mise à jour de sécurité =&gt; MediaWiki 1.19.2 [http://www.mediawiki.org/wiki/Release_notes/1.19 Note de version]

=====Le aout 2012=====
Activation du ssl sur le Wiki [https://www.isalo.org/wiki.debian-fr/index.php?title=Accueil wiki.debian-fr]
&lt;noinclude&gt;
=====Le 5 mai, mise à jour vers Mediawiki 1.19.0!=====
&lt;/noinclude&gt;
=====Le 28 avril 2012: Mise à jour Wiki vers 1.18.2 (1.18.3 échoué)=====

=====Le 24 avril 2012: Ajout de l'extension '''&quot;Collection&quot;'''.=====
Cette extension permet d'organiser et d'exporter dans divers formats (pdf pour l'instant, libre office à venir) une page ou une sélection de pages du Wiki.

=====Le Wiki à basculé sur l'ipv6!=====
http://pix.isalo.org/upload/thumb/1334318888.jpg

&lt;noinclude&gt;
=====Le 26 mars 2012: Ajout de l'extension CollapsableText.=====
&lt;collapsetext&gt;Ceci est le titre (toujours visible - Cliquez sur la flèche pour voir le texte complet). Ceci est le texte &quot;caché&quot; (visible quand il est &quot;déroulé&quot; ).&lt;/collapsetext&gt;

=====Le 23/02/2012: Activation de la possibilité d'insérer des images de pix.isalo.org=====
Image:
http://pix.isalo.org/upload/original/1293897717.gif

Miniature:
http://pix.isalo.org/upload/thumb/1329911740.png

=====Le 2 février 2012: Mise à niveau du Wiki ver 1.18.1=====

=====Le 1er février 2012: Activation des formules mathématiques avec le système TeX.=====

&lt;math&gt;
f(x) = \begin{cases}1 &amp; -1 \le x &lt; 0\\
 \frac{1}{2} &amp; x = 0\\x&amp;0&lt;x\le 1\end{cases}
&lt;/math&gt;


&lt;math&gt;
{}_pF_q(a_1,\ldots,a_p;c_1,\ldots,c_q;z) = \sum_{n=0}^\infty 
 \frac{(a_1)_n\cdots(a_p)_n}{(c_1)_n\cdots(c_q)_n}\frac{z^n}{n!}\,
&lt;/math&gt;


&lt;math&gt;
  \operatorname{erfc}(x) =
  \frac{2}{\sqrt{\pi}} \int_x^{\infty} e^{-t^2}\,dt =
  \frac{e^{-x^2}}{x\sqrt{\pi}}\sum_{n=0}^\infty (-1)^n \frac{(2n)!}{n!(2x)^{2n}}
 &lt;/math&gt;

=====Le 13 janvier 2012: Mise à jour du Wiki vers la version 1.17.1=====

=====06 août 2011: Ajout de l'extension [http://www.mediawiki.org/wiki/Extension:Widgets widget]=====
Premier essai sur le widget &quot;follow me on twitter&quot;

{{#widget:Twitter Follow
|twitter=debian
|what=me
}}

=====31 juillet 2011 - Ajout d'une page de contact: [[Spécial:Contact]]=====

=====Affichez votre &quot;twitter&quot; dans votre page perso &quot;Wiki&quot;=====
Utilisation:
&lt;code&gt;&lt;twitterfeed id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;
&lt;code&gt;&lt;twitterfeed nb=&quot;nb-of-tweets&quot; id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;

=====Mise à niveau vers 1.17 ce 29/07/2011=====

=====J'ai cédé à la sirène Google +1...=====
{{Template: Social}}

=====Mise à niveau du Wiki vers la version 1.16.5=====

=====Mise à jour du forum interne de 2.5.11 vers 2.5.12 [http://wiki.anotherwebcom.com/Category:AWC%27s_MediaWiki_Forum_Extension AWC Forum]=====

=====Ajout d'un service de partage d'images : [http://pix.isalo.org/ Hébergement d'images]=====

=====Ajout d'un outil de partage et de collaboration pour le débogage : [http://paste.isalo.org/ Un pastbin]=====

=====Le Wiki est désormais accessible 24/24, 7/7 et... 365/365 :)=====

=====Ajout de deux extensions : EasyTimeline et PDF Handler=====
[http://www.isalo.org/wiki.debian-fr/index.php/Test_timeline exemple Easy Timeline]
[http://www.isalo.org/wiki.debian-fr/index.php/Test.pdf exemple Pdf Handler]

=====Modification des autorisation du forum interne (section pause-café uniquement). Autorisation de lecture pour les utilisateurs &quot;anonymes&quot;.=====

=====Pour &quot;les forts en CSS&quot;, ajout de l'extension '''CSS''', une fonction du parseur qui permet d’inclure des feuilles de style sur vos pages de Wiki.=====
Exemple sur [[Test.css|cette page]]

=====Remise en fonction des [[Spécial:Téléversement_multiple|téléversements multiples - Version trunk r76488]] (10 fichiers au maximun).=====

=====Mise à jour du Wiki 1.16 à 1.16wmf4=====
[http://www.isalo.org/wiki.debian-fr/index.php/Sp%C3%A9cial:Version Version]

=====Mise à jour du forum interne (awc extension): 2.5.10 à 2.5.11=====
&lt;s&gt;Quelques liens dans le menu principal on souffert de la MAJ. Restauration ce soir ou demain.&lt;/s&gt;

[[Utilisateur:Lol|Lol]] 16 novembre 2010 à 18:31 (EAT)

=====* Changement de serveur et de branche ce 28/10/2010...=====
Le Wiki est désormais hébergé sur une squeeze!

 Linux lol 2.6.32-5-amd64 #1 SMP Wed Oct 20 00:05:22 UTC 2010 x86_64 GNU/Linux

=====* Mise à jour de notre Wiki qui passe de la version 1.15 à la dernière version 1.16=====
Il reste encore quelques réglages, mais dans l'ensemble... c'est bon!

=====&lt;s&gt;* Ajout d'une page pour les téléversements multiples...=====
[[Spécial:Téléversement_multiple]]&lt;/s&gt;

Fonction désactivée car ''incompatible avec la version 1.16'' du Wiki.

=====* Ajout de l'extension 'GeSHiCodeTag'=====
Permet la coloration syntaxique des lignes de codes... Très joli, et très pratique :)

Exemples

:&gt; &quot;code tag&quot; avancé
&lt;nowiki&gt;&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé avec numérotation
&lt;nowiki&gt;&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé par défaut
&lt;nowiki&gt;&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; Liste des langages supportés :
 &lt;nowiki&gt;&lt;code list&gt;&lt;/code&gt;&lt;/nowiki&gt;

 xbasic ecmascript io vb email pcre lotusscript per matlab awk plsql perl6 oracle11 powershell '''xorg_conf'''
 sdlbasic '''sql''' csharp autoit magiksf mapbasic visualprolog oobas delphi klonecpp rails sas actionscript
 cpp lolcode vbnet javascript abap ocaml dcs idl glsl progress gwbasic blitzbasic avisynth cfm smalltalk '''ruby'''
 asm lscript oracle8 scheme systemverilog '''diff''' fo vala modula2 mmix mirc kixtart ini newlisp vhdl qbasic
 fsharp cfdg genie mpasm java5 '''c''' dot logtalk inno providex caddcl asp hq9plus gambas '''vim''' bf oberon2 '''apache'''
 mxml q php cmake java oz whitespace lua rebol rsplus chaiscript html4strict gnuplot thinbasic '''div''' locobasic
 gml typoscript pixelbender purebasic verilog scilab actionscript3 xml j winbatch klonec autohotkey applescript
 freebasic teraterm '''css''' objc xpp m68k '''make''' clojure tsql apt_sources nsis bibtex cpp-qt lisp gettext dos modula3
 python ocaml-brief autoconf php-brief cobol pf haskell '''erlang''' pic16 intercal c_mac rpmspec '''perl''' pike oxygene
 4cs boo '''bash''' tcl cadlisp pascal powerbuilder hicest lotusformulas text properties fortran postgresql basic4gl
 jquery povray ada eiffel robots '''mysql''' cuesheet z80 d scala prolog icon '''whois''' cil '''latex''' gdb smarty visualfoxpro
 unicon bnf lsl2 genero reg groovy

Un exemple :

Le script suivant encadré de &lt;nowiki&gt;&lt;code bash&gt;votre script ici&lt;/code&gt;&lt;/nowiki&gt;

 #! /bin/sh
 
 N=/etc/init.d/sudo
 
 set -e
 
 case &quot;$1&quot; in
   start)
 	# make sure privileges don't persist across reboots
 	if [ -d /var/lib/sudo ]
 	then
                 find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
 	fi
 	;;
   stop|reload|restart|force-reload)
 	;;
   *)
 	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
 	exit 1
 	;;
 esac
 
 exit 0

Donnera :

&lt;code bash&gt;#! /bin/sh

N=/etc/init.d/sudo

set -e

case &quot;$1&quot; in
  start)
	# make sure privileges don't persist across reboots
	if [ -d /var/lib/sudo ]
	then
                find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
	fi
	;;
  stop|reload|restart|force-reload)
	;;
  *)
	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
	exit 1
	;;
esac

exit 0
&lt;/code&gt;

Bien plus lisible !

=====* La TRèS bonne nouvelle de la journée !=====
'''Squeeze est gelée ce 6 aout 2010 !'''

[http://www.debian.org/News/2010/20100806 L'annonce ICI]

=====* Nouvelle page Spéciale : Livre d'or... Ici : [[Spécial:Guestbook|Spécial:Guestbook]]=====
Permet aux invités de laisser un message; Il faut encore que j'ajoute un lien au menu général!

=====*Mise à jour du forum interne vers la version 2.5.10=====
Possibilité de faire des sondages...

Ouvrez une nouvelle discussion, enregistrez;
Ajoutez un sondage à votre discussion, c'est tout !

La mise à jour à apportée un nouveau menu au forum (en bas à gauche)

=====* Avec la réinstallation forcée suite au crash d'un disque dur, passage à la version 1.15.4 (déjà dépassée... la version 1.16 et 1.15.5 venant de sortir...)=====
N'hésitez pas à visiter [[Spécial:Pages_spéciales|les pages spéciales]] !

=====*Le support des fichiers svg (graphique vectoriel adaptable) est opérationnel&amp;nbsp;!=====
[[Fichier:Chess game 01.svg]]

=====*Page Spéciale bien pratique pour suivre les nouveaux articles, discussions...&amp;nbsp;!=====

[[Spécial:Newestpages]] 
Plus facile de se repérer que dans la page spéciale &quot;Modifications récentes&quot;. Nous ne risquons pas de perdre des articles en route...

=====*Nous allons pouvoir faire des sondages&amp;nbsp;!=====
[[Spécial:Voter]] 

Vous pouvez voter plusieurs fois, mais seul le dernier vote est pris en compte... Un vote par utilisateur&amp;nbsp;! 

Votez dès maintenant pour le maître de l'univers... 

=====*Option de prise en charge de vos css personnels activée...=====
Vous pouvez récupérer ici des css&amp;nbsp;: [http://www.mediawiki.org/wiki/Manual:Gallery_of_user_styles Manual:Gallery_of_user_styles] - ou créer votre propre css... Les skins utilisés dans notre mediawiki sont listés dans votre page de préférences (en haut à gauche). Il suffit de créer votre page de skin (en général Utilisateur:votre_super_pseudo/monobook.css et Utilisateur:votre_super_pseudo/monobook.js pour ceux nécessitant un js) et de rafraîchir votre navigateur... 

=====*Nouvelle page spéciale&amp;nbsp;: Qui est en ligne&amp;nbsp;!=====
[[Spécial:Qui est en ligne]]

=====*Ajout d'un &quot;chat-room&quot; au forum. Pour chaque article vous avez la possibilité d'ouvrir un '''salon''' pour discuter en direct...=====
Parfaitement inutile&amp;nbsp;? Peut-être pas... 

&lt;br&gt; [[Image:Capture d'écran124.jpeg]] 

Possibilité de n'ouvrir qu'un seul &quot;salon&quot; pour l'ensemble du forum&amp;nbsp;? Vos avis&amp;nbsp;?

=====*Ajout de l'extension &quot;CategoryTree&quot;=====
Un exemple vaut mieux qu'un long discours&amp;nbsp;: 

&lt;categorytree mode=&quot;pages&quot; style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:orange;&quot;&gt;Commandes&lt;/categorytree&gt; Ou plus simplement &lt;categorytree mode=&quot;pages&quot;&gt;Commandes&lt;/categorytree&gt; 

=====*Ajout d'une fonction WYSIWYG à l'édition=====
[[Image:Capture d'écran122.jpeg]] 

'''Attention, il y a un prix&amp;nbsp;: cela alourdit la navigation...''' 

=====*Mise à jour du forum de la version 2.4.1 à 2.4.3=====
&lt;blockquote&gt;J'espère que cela va régler un certains nombres de petits &quot;bugs&quot;&lt;/blockquote&gt; 

=====*Un forum interne doublé d'un service de messagerie...=====
&lt;blockquote&gt;'''&lt;u&gt;Le forum interne permet d'envoyer des messages privés à l'intérieur du Wiki, et par mail&amp;nbsp;!&lt;/u&gt;''' Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt; 

=====*Un forum interne&amp;nbsp;!=====
&lt;blockquote&gt;Amélioration sans doute, '''&lt;u&gt;le Wiki s'est doté d'un forum&lt;/u&gt;''' afin de permettre aux membres de discuter, en toute liberté. Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt;

&lt;/noinclude&gt;

[[Template:DernièresNouvelles|Voir toutes les nouvelles]]</text>
      <sha1>2u1u65qn3d33zsncynkfhfhcmfgsnvq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4720</id>
      <parentid>4719</parentid>
      <timestamp>2012-11-01T07:34:40Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="11834">__NOTOC__
{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
&lt;noinclude&gt;{{Template: Social}}&lt;/noinclude&gt;
----
&lt;center&gt;
'''ACTUALITÉS'''
&lt;/center&gt;&lt;br&gt;

=====Le 1er novembre 2012=====
Publication de [[Accueil|la nouvelle page d'accueil!]]

=====Le 31 octobre 2012=====

Mise-à-jour de l'extension [[Spécial:ContributionScores|Contribution Scores]].
Permet de voir un classement des contributeurs.

=====Le 29 octobre 2012=====
Ajout d'une page contenant deux recherches google ciblées: Sur le forum.debian-fr.org et sur divers sites francophones Debian et GNU/Linux.
[[Recherche_debian|Recherches Debian]]

=====Le 22 septembre 2012=====
Mise à jour de sécurité =&gt; MediaWiki 1.19.2 [http://www.mediawiki.org/wiki/Release_notes/1.19 Note de version]

=====Le aout 2012=====
Activation du ssl sur le Wiki [https://www.isalo.org/wiki.debian-fr/index.php?title=Accueil wiki.debian-fr]
&lt;noinclude&gt;
=====Le 5 mai, mise à jour vers Mediawiki 1.19.0!=====
&lt;/noinclude&gt;
=====Le 28 avril 2012: Mise à jour Wiki vers 1.18.2 (1.18.3 échoué)=====

=====Le 24 avril 2012: Ajout de l'extension '''&quot;Collection&quot;'''.=====
Cette extension permet d'organiser et d'exporter dans divers formats (pdf pour l'instant, libre office à venir) une page ou une sélection de pages du Wiki.

=====Le Wiki à basculé sur l'ipv6!=====
http://pix.isalo.org/upload/thumb/1334318888.jpg

&lt;noinclude&gt;
=====Le 26 mars 2012: Ajout de l'extension CollapsableText.=====
&lt;collapsetext&gt;Ceci est le titre (toujours visible - Cliquez sur la flèche pour voir le texte complet). Ceci est le texte &quot;caché&quot; (visible quand il est &quot;déroulé&quot; ).&lt;/collapsetext&gt;

=====Le 23/02/2012: Activation de la possibilité d'insérer des images de pix.isalo.org=====
Image:
http://pix.isalo.org/upload/original/1293897717.gif

Miniature:
http://pix.isalo.org/upload/thumb/1329911740.png

=====Le 2 février 2012: Mise à niveau du Wiki ver 1.18.1=====

=====Le 1er février 2012: Activation des formules mathématiques avec le système TeX.=====

&lt;math&gt;
f(x) = \begin{cases}1 &amp; -1 \le x &lt; 0\\
 \frac{1}{2} &amp; x = 0\\x&amp;0&lt;x\le 1\end{cases}
&lt;/math&gt;


&lt;math&gt;
{}_pF_q(a_1,\ldots,a_p;c_1,\ldots,c_q;z) = \sum_{n=0}^\infty 
 \frac{(a_1)_n\cdots(a_p)_n}{(c_1)_n\cdots(c_q)_n}\frac{z^n}{n!}\,
&lt;/math&gt;


&lt;math&gt;
  \operatorname{erfc}(x) =
  \frac{2}{\sqrt{\pi}} \int_x^{\infty} e^{-t^2}\,dt =
  \frac{e^{-x^2}}{x\sqrt{\pi}}\sum_{n=0}^\infty (-1)^n \frac{(2n)!}{n!(2x)^{2n}}
 &lt;/math&gt;

=====Le 13 janvier 2012: Mise à jour du Wiki vers la version 1.17.1=====

=====06 août 2011: Ajout de l'extension [http://www.mediawiki.org/wiki/Extension:Widgets widget]=====
Premier essai sur le widget &quot;follow me on twitter&quot;

{{#widget:Twitter Follow
|twitter=debian
|what=me
}}

=====31 juillet 2011 - Ajout d'une page de contact: [[Spécial:Contact]]=====

=====Affichez votre &quot;twitter&quot; dans votre page perso &quot;Wiki&quot;=====
Utilisation:
&lt;code&gt;&lt;twitterfeed id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;
&lt;code&gt;&lt;twitterfeed nb=&quot;nb-of-tweets&quot; id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;

=====Mise à niveau vers 1.17 ce 29/07/2011=====

=====J'ai cédé à la sirène Google +1...=====
{{Template: Social}}

=====Mise à niveau du Wiki vers la version 1.16.5=====

=====Mise à jour du forum interne de 2.5.11 vers 2.5.12 [http://wiki.anotherwebcom.com/Category:AWC%27s_MediaWiki_Forum_Extension AWC Forum]=====

=====Ajout d'un service de partage d'images : [http://pix.isalo.org/ Hébergement d'images]=====

=====Ajout d'un outil de partage et de collaboration pour le débogage : [http://paste.isalo.org/ Un pastbin]=====

=====Le Wiki est désormais accessible 24/24, 7/7 et... 365/365 :)=====

=====Ajout de deux extensions : EasyTimeline et PDF Handler=====
[http://www.isalo.org/wiki.debian-fr/index.php/Test_timeline exemple Easy Timeline]
[http://www.isalo.org/wiki.debian-fr/index.php/Test.pdf exemple Pdf Handler]

=====Modification des autorisation du forum interne (section pause-café uniquement). Autorisation de lecture pour les utilisateurs &quot;anonymes&quot;.=====

=====Pour &quot;les forts en CSS&quot;, ajout de l'extension '''CSS''', une fonction du parseur qui permet d’inclure des feuilles de style sur vos pages de Wiki.=====
Exemple sur [[Test.css|cette page]]

=====Remise en fonction des [[Spécial:Téléversement_multiple|téléversements multiples - Version trunk r76488]] (10 fichiers au maximun).=====

=====Mise à jour du Wiki 1.16 à 1.16wmf4=====
[http://www.isalo.org/wiki.debian-fr/index.php/Sp%C3%A9cial:Version Version]

=====Mise à jour du forum interne (awc extension): 2.5.10 à 2.5.11=====
&lt;s&gt;Quelques liens dans le menu principal on souffert de la MAJ. Restauration ce soir ou demain.&lt;/s&gt;

[[Utilisateur:Lol|Lol]] 16 novembre 2010 à 18:31 (EAT)

=====* Changement de serveur et de branche ce 28/10/2010...=====
Le Wiki est désormais hébergé sur une squeeze!

 Linux lol 2.6.32-5-amd64 #1 SMP Wed Oct 20 00:05:22 UTC 2010 x86_64 GNU/Linux

=====* Mise à jour de notre Wiki qui passe de la version 1.15 à la dernière version 1.16=====
Il reste encore quelques réglages, mais dans l'ensemble... c'est bon!

=====&lt;s&gt;* Ajout d'une page pour les téléversements multiples...=====
[[Spécial:Téléversement_multiple]]&lt;/s&gt;

Fonction désactivée car ''incompatible avec la version 1.16'' du Wiki.

=====* Ajout de l'extension 'GeSHiCodeTag'=====
Permet la coloration syntaxique des lignes de codes... Très joli, et très pratique :)

Exemples

:&gt; &quot;code tag&quot; avancé
&lt;nowiki&gt;&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé avec numérotation
&lt;nowiki&gt;&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé par défaut
&lt;nowiki&gt;&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; Liste des langages supportés :
 &lt;nowiki&gt;&lt;code list&gt;&lt;/code&gt;&lt;/nowiki&gt;

 xbasic ecmascript io vb email pcre lotusscript per matlab awk plsql perl6 oracle11 powershell '''xorg_conf'''
 sdlbasic '''sql''' csharp autoit magiksf mapbasic visualprolog oobas delphi klonecpp rails sas actionscript
 cpp lolcode vbnet javascript abap ocaml dcs idl glsl progress gwbasic blitzbasic avisynth cfm smalltalk '''ruby'''
 asm lscript oracle8 scheme systemverilog '''diff''' fo vala modula2 mmix mirc kixtart ini newlisp vhdl qbasic
 fsharp cfdg genie mpasm java5 '''c''' dot logtalk inno providex caddcl asp hq9plus gambas '''vim''' bf oberon2 '''apache'''
 mxml q php cmake java oz whitespace lua rebol rsplus chaiscript html4strict gnuplot thinbasic '''div''' locobasic
 gml typoscript pixelbender purebasic verilog scilab actionscript3 xml j winbatch klonec autohotkey applescript
 freebasic teraterm '''css''' objc xpp m68k '''make''' clojure tsql apt_sources nsis bibtex cpp-qt lisp gettext dos modula3
 python ocaml-brief autoconf php-brief cobol pf haskell '''erlang''' pic16 intercal c_mac rpmspec '''perl''' pike oxygene
 4cs boo '''bash''' tcl cadlisp pascal powerbuilder hicest lotusformulas text properties fortran postgresql basic4gl
 jquery povray ada eiffel robots '''mysql''' cuesheet z80 d scala prolog icon '''whois''' cil '''latex''' gdb smarty visualfoxpro
 unicon bnf lsl2 genero reg groovy

Un exemple :

Le script suivant encadré de &lt;nowiki&gt;&lt;code bash&gt;votre script ici&lt;/code&gt;&lt;/nowiki&gt;

 #! /bin/sh
 
 N=/etc/init.d/sudo
 
 set -e
 
 case &quot;$1&quot; in
   start)
 	# make sure privileges don't persist across reboots
 	if [ -d /var/lib/sudo ]
 	then
                 find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
 	fi
 	;;
   stop|reload|restart|force-reload)
 	;;
   *)
 	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
 	exit 1
 	;;
 esac
 
 exit 0

Donnera :

&lt;code bash&gt;#! /bin/sh

N=/etc/init.d/sudo

set -e

case &quot;$1&quot; in
  start)
	# make sure privileges don't persist across reboots
	if [ -d /var/lib/sudo ]
	then
                find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
	fi
	;;
  stop|reload|restart|force-reload)
	;;
  *)
	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
	exit 1
	;;
esac

exit 0
&lt;/code&gt;

Bien plus lisible !

=====* La TRèS bonne nouvelle de la journée !=====
'''Squeeze est gelée ce 6 aout 2010 !'''

[http://www.debian.org/News/2010/20100806 L'annonce ICI]

=====* Nouvelle page Spéciale : Livre d'or... Ici : [[Spécial:Guestbook|Spécial:Guestbook]]=====
Permet aux invités de laisser un message; Il faut encore que j'ajoute un lien au menu général!

=====*Mise à jour du forum interne vers la version 2.5.10=====
Possibilité de faire des sondages...

Ouvrez une nouvelle discussion, enregistrez;
Ajoutez un sondage à votre discussion, c'est tout !

La mise à jour à apportée un nouveau menu au forum (en bas à gauche)

=====* Avec la réinstallation forcée suite au crash d'un disque dur, passage à la version 1.15.4 (déjà dépassée... la version 1.16 et 1.15.5 venant de sortir...)=====
N'hésitez pas à visiter [[Spécial:Pages_spéciales|les pages spéciales]] !

=====*Le support des fichiers svg (graphique vectoriel adaptable) est opérationnel&amp;nbsp;!=====
[[Fichier:Chess game 01.svg]]

=====*Page Spéciale bien pratique pour suivre les nouveaux articles, discussions...&amp;nbsp;!=====

[[Spécial:Newestpages]] 
Plus facile de se repérer que dans la page spéciale &quot;Modifications récentes&quot;. Nous ne risquons pas de perdre des articles en route...

=====*Nous allons pouvoir faire des sondages&amp;nbsp;!=====
[[Spécial:Voter]] 

Vous pouvez voter plusieurs fois, mais seul le dernier vote est pris en compte... Un vote par utilisateur&amp;nbsp;! 

Votez dès maintenant pour le maître de l'univers... 

=====*Option de prise en charge de vos css personnels activée...=====
Vous pouvez récupérer ici des css&amp;nbsp;: [http://www.mediawiki.org/wiki/Manual:Gallery_of_user_styles Manual:Gallery_of_user_styles] - ou créer votre propre css... Les skins utilisés dans notre mediawiki sont listés dans votre page de préférences (en haut à gauche). Il suffit de créer votre page de skin (en général Utilisateur:votre_super_pseudo/monobook.css et Utilisateur:votre_super_pseudo/monobook.js pour ceux nécessitant un js) et de rafraîchir votre navigateur... 

=====*Nouvelle page spéciale&amp;nbsp;: Qui est en ligne&amp;nbsp;!=====
[[Spécial:Qui est en ligne]]

=====*Ajout d'un &quot;chat-room&quot; au forum. Pour chaque article vous avez la possibilité d'ouvrir un '''salon''' pour discuter en direct...=====
Parfaitement inutile&amp;nbsp;? Peut-être pas... 

&lt;br&gt; [[Image:Capture d'écran124.jpeg]] 

Possibilité de n'ouvrir qu'un seul &quot;salon&quot; pour l'ensemble du forum&amp;nbsp;? Vos avis&amp;nbsp;?

=====*Ajout de l'extension &quot;CategoryTree&quot;=====
Un exemple vaut mieux qu'un long discours&amp;nbsp;: 

&lt;categorytree mode=&quot;pages&quot; style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:orange;&quot;&gt;Commandes&lt;/categorytree&gt; Ou plus simplement &lt;categorytree mode=&quot;pages&quot;&gt;Commandes&lt;/categorytree&gt; 

=====*Ajout d'une fonction WYSIWYG à l'édition=====
[[Image:Capture d'écran122.jpeg]] 

'''Attention, il y a un prix&amp;nbsp;: cela alourdit la navigation...''' 

=====*Mise à jour du forum de la version 2.4.1 à 2.4.3=====
&lt;blockquote&gt;J'espère que cela va régler un certains nombres de petits &quot;bugs&quot;&lt;/blockquote&gt; 

=====*Un forum interne doublé d'un service de messagerie...=====
&lt;blockquote&gt;'''&lt;u&gt;Le forum interne permet d'envoyer des messages privés à l'intérieur du Wiki, et par mail&amp;nbsp;!&lt;/u&gt;''' Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt; 

=====*Un forum interne&amp;nbsp;!=====
&lt;blockquote&gt;Amélioration sans doute, '''&lt;u&gt;le Wiki s'est doté d'un forum&lt;/u&gt;''' afin de permettre aux membres de discuter, en toute liberté. Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt;

&lt;/noinclude&gt;

[[Template:DernièresNouvelles|Voir toutes les nouvelles]]</text>
      <sha1>1t77xy4nnot90r169g3ksdpzit31qeb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4772</id>
      <parentid>4720</parentid>
      <timestamp>2012-11-24T05:50:16Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="11972">__NOTOC__
{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
&lt;noinclude&gt;{{Template: Social}}&lt;/noinclude&gt;
----
&lt;center&gt;
'''ACTUALITÉS'''
&lt;/center&gt;&lt;br&gt;

=====Le 24 novembre 2012=====
Mise à jour du Wiki vers Mediawiki 1.20 [http://www.mediawiki.org/wiki/Release_notes/1.20 Mediawiki 1.20]

=====Le 1er novembre 2012=====
Publication de [[Accueil|la nouvelle page d'accueil!]]

=====Le 31 octobre 2012=====

Mise-à-jour de l'extension [[Spécial:ContributionScores|Contribution Scores]].
Permet de voir un classement des contributeurs.

=====Le 29 octobre 2012=====
Ajout d'une page contenant deux recherches google ciblées: Sur le forum.debian-fr.org et sur divers sites francophones Debian et GNU/Linux.
[[Recherche_debian|Recherches Debian]]

=====Le 22 septembre 2012=====
Mise à jour de sécurité =&gt; MediaWiki 1.19.2 [http://www.mediawiki.org/wiki/Release_notes/1.19 Note de version]

=====Le aout 2012=====
Activation du ssl sur le Wiki [https://www.isalo.org/wiki.debian-fr/index.php?title=Accueil wiki.debian-fr]
&lt;noinclude&gt;
=====Le 5 mai, mise à jour vers Mediawiki 1.19.0!=====
&lt;/noinclude&gt;
=====Le 28 avril 2012: Mise à jour Wiki vers 1.18.2 (1.18.3 échoué)=====

=====Le 24 avril 2012: Ajout de l'extension '''&quot;Collection&quot;'''.=====
Cette extension permet d'organiser et d'exporter dans divers formats (pdf pour l'instant, libre office à venir) une page ou une sélection de pages du Wiki.

=====Le Wiki à basculé sur l'ipv6!=====
http://pix.isalo.org/upload/thumb/1334318888.jpg

&lt;noinclude&gt;
=====Le 26 mars 2012: Ajout de l'extension CollapsableText.=====
&lt;collapsetext&gt;Ceci est le titre (toujours visible - Cliquez sur la flèche pour voir le texte complet). Ceci est le texte &quot;caché&quot; (visible quand il est &quot;déroulé&quot; ).&lt;/collapsetext&gt;

=====Le 23/02/2012: Activation de la possibilité d'insérer des images de pix.isalo.org=====
Image:
http://pix.isalo.org/upload/original/1293897717.gif

Miniature:
http://pix.isalo.org/upload/thumb/1329911740.png

=====Le 2 février 2012: Mise à niveau du Wiki ver 1.18.1=====

=====Le 1er février 2012: Activation des formules mathématiques avec le système TeX.=====

&lt;math&gt;
f(x) = \begin{cases}1 &amp; -1 \le x &lt; 0\\
 \frac{1}{2} &amp; x = 0\\x&amp;0&lt;x\le 1\end{cases}
&lt;/math&gt;


&lt;math&gt;
{}_pF_q(a_1,\ldots,a_p;c_1,\ldots,c_q;z) = \sum_{n=0}^\infty 
 \frac{(a_1)_n\cdots(a_p)_n}{(c_1)_n\cdots(c_q)_n}\frac{z^n}{n!}\,
&lt;/math&gt;


&lt;math&gt;
  \operatorname{erfc}(x) =
  \frac{2}{\sqrt{\pi}} \int_x^{\infty} e^{-t^2}\,dt =
  \frac{e^{-x^2}}{x\sqrt{\pi}}\sum_{n=0}^\infty (-1)^n \frac{(2n)!}{n!(2x)^{2n}}
 &lt;/math&gt;

=====Le 13 janvier 2012: Mise à jour du Wiki vers la version 1.17.1=====

=====06 août 2011: Ajout de l'extension [http://www.mediawiki.org/wiki/Extension:Widgets widget]=====
Premier essai sur le widget &quot;follow me on twitter&quot;

{{#widget:Twitter Follow
|twitter=debian
|what=me
}}

=====31 juillet 2011 - Ajout d'une page de contact: [[Spécial:Contact]]=====

=====Affichez votre &quot;twitter&quot; dans votre page perso &quot;Wiki&quot;=====
Utilisation:
&lt;code&gt;&lt;twitterfeed id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;
&lt;code&gt;&lt;twitterfeed nb=&quot;nb-of-tweets&quot; id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;

=====Mise à niveau vers 1.17 ce 29/07/2011=====

=====J'ai cédé à la sirène Google +1...=====
{{Template: Social}}

=====Mise à niveau du Wiki vers la version 1.16.5=====

=====Mise à jour du forum interne de 2.5.11 vers 2.5.12 [http://wiki.anotherwebcom.com/Category:AWC%27s_MediaWiki_Forum_Extension AWC Forum]=====

=====Ajout d'un service de partage d'images : [http://pix.isalo.org/ Hébergement d'images]=====

=====Ajout d'un outil de partage et de collaboration pour le débogage : [http://paste.isalo.org/ Un pastbin]=====

=====Le Wiki est désormais accessible 24/24, 7/7 et... 365/365 :)=====

=====Ajout de deux extensions : EasyTimeline et PDF Handler=====
[http://www.isalo.org/wiki.debian-fr/index.php/Test_timeline exemple Easy Timeline]
[http://www.isalo.org/wiki.debian-fr/index.php/Test.pdf exemple Pdf Handler]

=====Modification des autorisation du forum interne (section pause-café uniquement). Autorisation de lecture pour les utilisateurs &quot;anonymes&quot;.=====

=====Pour &quot;les forts en CSS&quot;, ajout de l'extension '''CSS''', une fonction du parseur qui permet d’inclure des feuilles de style sur vos pages de Wiki.=====
Exemple sur [[Test.css|cette page]]

=====Remise en fonction des [[Spécial:Téléversement_multiple|téléversements multiples - Version trunk r76488]] (10 fichiers au maximun).=====

=====Mise à jour du Wiki 1.16 à 1.16wmf4=====
[http://www.isalo.org/wiki.debian-fr/index.php/Sp%C3%A9cial:Version Version]

=====Mise à jour du forum interne (awc extension): 2.5.10 à 2.5.11=====
&lt;s&gt;Quelques liens dans le menu principal on souffert de la MAJ. Restauration ce soir ou demain.&lt;/s&gt;

[[Utilisateur:Lol|Lol]] 16 novembre 2010 à 18:31 (EAT)

=====* Changement de serveur et de branche ce 28/10/2010...=====
Le Wiki est désormais hébergé sur une squeeze!

 Linux lol 2.6.32-5-amd64 #1 SMP Wed Oct 20 00:05:22 UTC 2010 x86_64 GNU/Linux

=====* Mise à jour de notre Wiki qui passe de la version 1.15 à la dernière version 1.16=====
Il reste encore quelques réglages, mais dans l'ensemble... c'est bon!

=====&lt;s&gt;* Ajout d'une page pour les téléversements multiples...=====
[[Spécial:Téléversement_multiple]]&lt;/s&gt;

Fonction désactivée car ''incompatible avec la version 1.16'' du Wiki.

=====* Ajout de l'extension 'GeSHiCodeTag'=====
Permet la coloration syntaxique des lignes de codes... Très joli, et très pratique :)

Exemples

:&gt; &quot;code tag&quot; avancé
&lt;nowiki&gt;&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé avec numérotation
&lt;nowiki&gt;&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé par défaut
&lt;nowiki&gt;&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; Liste des langages supportés :
 &lt;nowiki&gt;&lt;code list&gt;&lt;/code&gt;&lt;/nowiki&gt;

 xbasic ecmascript io vb email pcre lotusscript per matlab awk plsql perl6 oracle11 powershell '''xorg_conf'''
 sdlbasic '''sql''' csharp autoit magiksf mapbasic visualprolog oobas delphi klonecpp rails sas actionscript
 cpp lolcode vbnet javascript abap ocaml dcs idl glsl progress gwbasic blitzbasic avisynth cfm smalltalk '''ruby'''
 asm lscript oracle8 scheme systemverilog '''diff''' fo vala modula2 mmix mirc kixtart ini newlisp vhdl qbasic
 fsharp cfdg genie mpasm java5 '''c''' dot logtalk inno providex caddcl asp hq9plus gambas '''vim''' bf oberon2 '''apache'''
 mxml q php cmake java oz whitespace lua rebol rsplus chaiscript html4strict gnuplot thinbasic '''div''' locobasic
 gml typoscript pixelbender purebasic verilog scilab actionscript3 xml j winbatch klonec autohotkey applescript
 freebasic teraterm '''css''' objc xpp m68k '''make''' clojure tsql apt_sources nsis bibtex cpp-qt lisp gettext dos modula3
 python ocaml-brief autoconf php-brief cobol pf haskell '''erlang''' pic16 intercal c_mac rpmspec '''perl''' pike oxygene
 4cs boo '''bash''' tcl cadlisp pascal powerbuilder hicest lotusformulas text properties fortran postgresql basic4gl
 jquery povray ada eiffel robots '''mysql''' cuesheet z80 d scala prolog icon '''whois''' cil '''latex''' gdb smarty visualfoxpro
 unicon bnf lsl2 genero reg groovy

Un exemple :

Le script suivant encadré de &lt;nowiki&gt;&lt;code bash&gt;votre script ici&lt;/code&gt;&lt;/nowiki&gt;

 #! /bin/sh
 
 N=/etc/init.d/sudo
 
 set -e
 
 case &quot;$1&quot; in
   start)
 	# make sure privileges don't persist across reboots
 	if [ -d /var/lib/sudo ]
 	then
                 find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
 	fi
 	;;
   stop|reload|restart|force-reload)
 	;;
   *)
 	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
 	exit 1
 	;;
 esac
 
 exit 0

Donnera :

&lt;code bash&gt;#! /bin/sh

N=/etc/init.d/sudo

set -e

case &quot;$1&quot; in
  start)
	# make sure privileges don't persist across reboots
	if [ -d /var/lib/sudo ]
	then
                find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
	fi
	;;
  stop|reload|restart|force-reload)
	;;
  *)
	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
	exit 1
	;;
esac

exit 0
&lt;/code&gt;

Bien plus lisible !

=====* La TRèS bonne nouvelle de la journée !=====
'''Squeeze est gelée ce 6 aout 2010 !'''

[http://www.debian.org/News/2010/20100806 L'annonce ICI]

=====* Nouvelle page Spéciale : Livre d'or... Ici : [[Spécial:Guestbook|Spécial:Guestbook]]=====
Permet aux invités de laisser un message; Il faut encore que j'ajoute un lien au menu général!

=====*Mise à jour du forum interne vers la version 2.5.10=====
Possibilité de faire des sondages...

Ouvrez une nouvelle discussion, enregistrez;
Ajoutez un sondage à votre discussion, c'est tout !

La mise à jour à apportée un nouveau menu au forum (en bas à gauche)

=====* Avec la réinstallation forcée suite au crash d'un disque dur, passage à la version 1.15.4 (déjà dépassée... la version 1.16 et 1.15.5 venant de sortir...)=====
N'hésitez pas à visiter [[Spécial:Pages_spéciales|les pages spéciales]] !

=====*Le support des fichiers svg (graphique vectoriel adaptable) est opérationnel&amp;nbsp;!=====
[[Fichier:Chess game 01.svg]]

=====*Page Spéciale bien pratique pour suivre les nouveaux articles, discussions...&amp;nbsp;!=====

[[Spécial:Newestpages]] 
Plus facile de se repérer que dans la page spéciale &quot;Modifications récentes&quot;. Nous ne risquons pas de perdre des articles en route...

=====*Nous allons pouvoir faire des sondages&amp;nbsp;!=====
[[Spécial:Voter]] 

Vous pouvez voter plusieurs fois, mais seul le dernier vote est pris en compte... Un vote par utilisateur&amp;nbsp;! 

Votez dès maintenant pour le maître de l'univers... 

=====*Option de prise en charge de vos css personnels activée...=====
Vous pouvez récupérer ici des css&amp;nbsp;: [http://www.mediawiki.org/wiki/Manual:Gallery_of_user_styles Manual:Gallery_of_user_styles] - ou créer votre propre css... Les skins utilisés dans notre mediawiki sont listés dans votre page de préférences (en haut à gauche). Il suffit de créer votre page de skin (en général Utilisateur:votre_super_pseudo/monobook.css et Utilisateur:votre_super_pseudo/monobook.js pour ceux nécessitant un js) et de rafraîchir votre navigateur... 

=====*Nouvelle page spéciale&amp;nbsp;: Qui est en ligne&amp;nbsp;!=====
[[Spécial:Qui est en ligne]]

=====*Ajout d'un &quot;chat-room&quot; au forum. Pour chaque article vous avez la possibilité d'ouvrir un '''salon''' pour discuter en direct...=====
Parfaitement inutile&amp;nbsp;? Peut-être pas... 

&lt;br&gt; [[Image:Capture d'écran124.jpeg]] 

Possibilité de n'ouvrir qu'un seul &quot;salon&quot; pour l'ensemble du forum&amp;nbsp;? Vos avis&amp;nbsp;?

=====*Ajout de l'extension &quot;CategoryTree&quot;=====
Un exemple vaut mieux qu'un long discours&amp;nbsp;: 

&lt;categorytree mode=&quot;pages&quot; style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:orange;&quot;&gt;Commandes&lt;/categorytree&gt; Ou plus simplement &lt;categorytree mode=&quot;pages&quot;&gt;Commandes&lt;/categorytree&gt; 

=====*Ajout d'une fonction WYSIWYG à l'édition=====
[[Image:Capture d'écran122.jpeg]] 

'''Attention, il y a un prix&amp;nbsp;: cela alourdit la navigation...''' 

=====*Mise à jour du forum de la version 2.4.1 à 2.4.3=====
&lt;blockquote&gt;J'espère que cela va régler un certains nombres de petits &quot;bugs&quot;&lt;/blockquote&gt; 

=====*Un forum interne doublé d'un service de messagerie...=====
&lt;blockquote&gt;'''&lt;u&gt;Le forum interne permet d'envoyer des messages privés à l'intérieur du Wiki, et par mail&amp;nbsp;!&lt;/u&gt;''' Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt; 

=====*Un forum interne&amp;nbsp;!=====
&lt;blockquote&gt;Amélioration sans doute, '''&lt;u&gt;le Wiki s'est doté d'un forum&lt;/u&gt;''' afin de permettre aux membres de discuter, en toute liberté. Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt;

&lt;/noinclude&gt;

[[Template:DernièresNouvelles|Voir toutes les nouvelles]]</text>
      <sha1>03a7xcitsyu2bgx75jusvcqvaggh5kt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5049</id>
      <parentid>4772</parentid>
      <timestamp>2013-03-06T01:12:18Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="12089">__NOTOC__
{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
&lt;noinclude&gt;{{Template: Social}}&lt;/noinclude&gt;
----
&lt;center&gt;
'''ACTUALITÉS'''
&lt;/center&gt;&lt;br&gt;

=====Le 06 mars 2013=====
Mise à jour du Wiki vers Mediawiki 1.20.3 [http://www.mediawiki.org/wiki/MediaWiki_1.20]

=====Le 24 novembre 2012=====
Mise à jour du Wiki vers Mediawiki 1.20 [http://www.mediawiki.org/wiki/Release_notes/1.20 Mediawiki 1.20]

=====Le 1er novembre 2012=====
Publication de [[Accueil|la nouvelle page d'accueil!]]

=====Le 31 octobre 2012=====

Mise-à-jour de l'extension [[Spécial:ContributionScores|Contribution Scores]].
Permet de voir un classement des contributeurs.

=====Le 29 octobre 2012=====
Ajout d'une page contenant deux recherches google ciblées: Sur le forum.debian-fr.org et sur divers sites francophones Debian et GNU/Linux.
[[Recherche_debian|Recherches Debian]]

=====Le 22 septembre 2012=====
Mise à jour de sécurité =&gt; MediaWiki 1.19.2 [http://www.mediawiki.org/wiki/Release_notes/1.19 Note de version]

=====Le aout 2012=====
Activation du ssl sur le Wiki [https://www.isalo.org/wiki.debian-fr/index.php?title=Accueil wiki.debian-fr]
&lt;noinclude&gt;
=====Le 5 mai, mise à jour vers Mediawiki 1.19.0!=====
&lt;/noinclude&gt;
=====Le 28 avril 2012: Mise à jour Wiki vers 1.18.2 (1.18.3 échoué)=====

=====Le 24 avril 2012: Ajout de l'extension '''&quot;Collection&quot;'''.=====
Cette extension permet d'organiser et d'exporter dans divers formats (pdf pour l'instant, libre office à venir) une page ou une sélection de pages du Wiki.

=====Le Wiki à basculé sur l'ipv6!=====
http://pix.isalo.org/upload/thumb/1334318888.jpg

&lt;noinclude&gt;
=====Le 26 mars 2012: Ajout de l'extension CollapsableText.=====
&lt;collapsetext&gt;Ceci est le titre (toujours visible - Cliquez sur la flèche pour voir le texte complet). Ceci est le texte &quot;caché&quot; (visible quand il est &quot;déroulé&quot; ).&lt;/collapsetext&gt;

=====Le 23/02/2012: Activation de la possibilité d'insérer des images de pix.isalo.org=====
Image:
http://pix.isalo.org/upload/original/1293897717.gif

Miniature:
http://pix.isalo.org/upload/thumb/1329911740.png

=====Le 2 février 2012: Mise à niveau du Wiki ver 1.18.1=====

=====Le 1er février 2012: Activation des formules mathématiques avec le système TeX.=====

&lt;math&gt;
f(x) = \begin{cases}1 &amp; -1 \le x &lt; 0\\
 \frac{1}{2} &amp; x = 0\\x&amp;0&lt;x\le 1\end{cases}
&lt;/math&gt;


&lt;math&gt;
{}_pF_q(a_1,\ldots,a_p;c_1,\ldots,c_q;z) = \sum_{n=0}^\infty 
 \frac{(a_1)_n\cdots(a_p)_n}{(c_1)_n\cdots(c_q)_n}\frac{z^n}{n!}\,
&lt;/math&gt;


&lt;math&gt;
  \operatorname{erfc}(x) =
  \frac{2}{\sqrt{\pi}} \int_x^{\infty} e^{-t^2}\,dt =
  \frac{e^{-x^2}}{x\sqrt{\pi}}\sum_{n=0}^\infty (-1)^n \frac{(2n)!}{n!(2x)^{2n}}
 &lt;/math&gt;

=====Le 13 janvier 2012: Mise à jour du Wiki vers la version 1.17.1=====

=====06 août 2011: Ajout de l'extension [http://www.mediawiki.org/wiki/Extension:Widgets widget]=====
Premier essai sur le widget &quot;follow me on twitter&quot;

{{#widget:Twitter Follow
|twitter=debian
|what=me
}}

=====31 juillet 2011 - Ajout d'une page de contact: [[Spécial:Contact]]=====

=====Affichez votre &quot;twitter&quot; dans votre page perso &quot;Wiki&quot;=====
Utilisation:
&lt;code&gt;&lt;twitterfeed id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;
&lt;code&gt;&lt;twitterfeed nb=&quot;nb-of-tweets&quot; id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;

=====Mise à niveau vers 1.17 ce 29/07/2011=====

=====J'ai cédé à la sirène Google +1...=====
{{Template: Social}}

=====Mise à niveau du Wiki vers la version 1.16.5=====

=====Mise à jour du forum interne de 2.5.11 vers 2.5.12 [http://wiki.anotherwebcom.com/Category:AWC%27s_MediaWiki_Forum_Extension AWC Forum]=====

=====Ajout d'un service de partage d'images : [http://pix.isalo.org/ Hébergement d'images]=====

=====Ajout d'un outil de partage et de collaboration pour le débogage : [http://paste.isalo.org/ Un pastbin]=====

=====Le Wiki est désormais accessible 24/24, 7/7 et... 365/365 :)=====

=====Ajout de deux extensions : EasyTimeline et PDF Handler=====
[http://www.isalo.org/wiki.debian-fr/index.php/Test_timeline exemple Easy Timeline]
[http://www.isalo.org/wiki.debian-fr/index.php/Test.pdf exemple Pdf Handler]

=====Modification des autorisation du forum interne (section pause-café uniquement). Autorisation de lecture pour les utilisateurs &quot;anonymes&quot;.=====

=====Pour &quot;les forts en CSS&quot;, ajout de l'extension '''CSS''', une fonction du parseur qui permet d’inclure des feuilles de style sur vos pages de Wiki.=====
Exemple sur [[Test.css|cette page]]

=====Remise en fonction des [[Spécial:Téléversement_multiple|téléversements multiples - Version trunk r76488]] (10 fichiers au maximun).=====

=====Mise à jour du Wiki 1.16 à 1.16wmf4=====
[http://www.isalo.org/wiki.debian-fr/index.php/Sp%C3%A9cial:Version Version]

=====Mise à jour du forum interne (awc extension): 2.5.10 à 2.5.11=====
&lt;s&gt;Quelques liens dans le menu principal on souffert de la MAJ. Restauration ce soir ou demain.&lt;/s&gt;

[[Utilisateur:Lol|Lol]] 16 novembre 2010 à 18:31 (EAT)

=====* Changement de serveur et de branche ce 28/10/2010...=====
Le Wiki est désormais hébergé sur une squeeze!

 Linux lol 2.6.32-5-amd64 #1 SMP Wed Oct 20 00:05:22 UTC 2010 x86_64 GNU/Linux

=====* Mise à jour de notre Wiki qui passe de la version 1.15 à la dernière version 1.16=====
Il reste encore quelques réglages, mais dans l'ensemble... c'est bon!

=====&lt;s&gt;* Ajout d'une page pour les téléversements multiples...=====
[[Spécial:Téléversement_multiple]]&lt;/s&gt;

Fonction désactivée car ''incompatible avec la version 1.16'' du Wiki.

=====* Ajout de l'extension 'GeSHiCodeTag'=====
Permet la coloration syntaxique des lignes de codes... Très joli, et très pratique :)

Exemples

:&gt; &quot;code tag&quot; avancé
&lt;nowiki&gt;&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé avec numérotation
&lt;nowiki&gt;&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé par défaut
&lt;nowiki&gt;&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; Liste des langages supportés :
 &lt;nowiki&gt;&lt;code list&gt;&lt;/code&gt;&lt;/nowiki&gt;

 xbasic ecmascript io vb email pcre lotusscript per matlab awk plsql perl6 oracle11 powershell '''xorg_conf'''
 sdlbasic '''sql''' csharp autoit magiksf mapbasic visualprolog oobas delphi klonecpp rails sas actionscript
 cpp lolcode vbnet javascript abap ocaml dcs idl glsl progress gwbasic blitzbasic avisynth cfm smalltalk '''ruby'''
 asm lscript oracle8 scheme systemverilog '''diff''' fo vala modula2 mmix mirc kixtart ini newlisp vhdl qbasic
 fsharp cfdg genie mpasm java5 '''c''' dot logtalk inno providex caddcl asp hq9plus gambas '''vim''' bf oberon2 '''apache'''
 mxml q php cmake java oz whitespace lua rebol rsplus chaiscript html4strict gnuplot thinbasic '''div''' locobasic
 gml typoscript pixelbender purebasic verilog scilab actionscript3 xml j winbatch klonec autohotkey applescript
 freebasic teraterm '''css''' objc xpp m68k '''make''' clojure tsql apt_sources nsis bibtex cpp-qt lisp gettext dos modula3
 python ocaml-brief autoconf php-brief cobol pf haskell '''erlang''' pic16 intercal c_mac rpmspec '''perl''' pike oxygene
 4cs boo '''bash''' tcl cadlisp pascal powerbuilder hicest lotusformulas text properties fortran postgresql basic4gl
 jquery povray ada eiffel robots '''mysql''' cuesheet z80 d scala prolog icon '''whois''' cil '''latex''' gdb smarty visualfoxpro
 unicon bnf lsl2 genero reg groovy

Un exemple :

Le script suivant encadré de &lt;nowiki&gt;&lt;code bash&gt;votre script ici&lt;/code&gt;&lt;/nowiki&gt;

 #! /bin/sh
 
 N=/etc/init.d/sudo
 
 set -e
 
 case &quot;$1&quot; in
   start)
 	# make sure privileges don't persist across reboots
 	if [ -d /var/lib/sudo ]
 	then
                 find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
 	fi
 	;;
   stop|reload|restart|force-reload)
 	;;
   *)
 	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
 	exit 1
 	;;
 esac
 
 exit 0

Donnera :

&lt;code bash&gt;#! /bin/sh

N=/etc/init.d/sudo

set -e

case &quot;$1&quot; in
  start)
	# make sure privileges don't persist across reboots
	if [ -d /var/lib/sudo ]
	then
                find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
	fi
	;;
  stop|reload|restart|force-reload)
	;;
  *)
	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
	exit 1
	;;
esac

exit 0
&lt;/code&gt;

Bien plus lisible !

=====* La TRèS bonne nouvelle de la journée !=====
'''Squeeze est gelée ce 6 aout 2010 !'''

[http://www.debian.org/News/2010/20100806 L'annonce ICI]

=====* Nouvelle page Spéciale : Livre d'or... Ici : [[Spécial:Guestbook|Spécial:Guestbook]]=====
Permet aux invités de laisser un message; Il faut encore que j'ajoute un lien au menu général!

=====*Mise à jour du forum interne vers la version 2.5.10=====
Possibilité de faire des sondages...

Ouvrez une nouvelle discussion, enregistrez;
Ajoutez un sondage à votre discussion, c'est tout !

La mise à jour à apportée un nouveau menu au forum (en bas à gauche)

=====* Avec la réinstallation forcée suite au crash d'un disque dur, passage à la version 1.15.4 (déjà dépassée... la version 1.16 et 1.15.5 venant de sortir...)=====
N'hésitez pas à visiter [[Spécial:Pages_spéciales|les pages spéciales]] !

=====*Le support des fichiers svg (graphique vectoriel adaptable) est opérationnel&amp;nbsp;!=====
[[Fichier:Chess game 01.svg]]

=====*Page Spéciale bien pratique pour suivre les nouveaux articles, discussions...&amp;nbsp;!=====

[[Spécial:Newestpages]] 
Plus facile de se repérer que dans la page spéciale &quot;Modifications récentes&quot;. Nous ne risquons pas de perdre des articles en route...

=====*Nous allons pouvoir faire des sondages&amp;nbsp;!=====
[[Spécial:Voter]] 

Vous pouvez voter plusieurs fois, mais seul le dernier vote est pris en compte... Un vote par utilisateur&amp;nbsp;! 

Votez dès maintenant pour le maître de l'univers... 

=====*Option de prise en charge de vos css personnels activée...=====
Vous pouvez récupérer ici des css&amp;nbsp;: [http://www.mediawiki.org/wiki/Manual:Gallery_of_user_styles Manual:Gallery_of_user_styles] - ou créer votre propre css... Les skins utilisés dans notre mediawiki sont listés dans votre page de préférences (en haut à gauche). Il suffit de créer votre page de skin (en général Utilisateur:votre_super_pseudo/monobook.css et Utilisateur:votre_super_pseudo/monobook.js pour ceux nécessitant un js) et de rafraîchir votre navigateur... 

=====*Nouvelle page spéciale&amp;nbsp;: Qui est en ligne&amp;nbsp;!=====
[[Spécial:Qui est en ligne]]

=====*Ajout d'un &quot;chat-room&quot; au forum. Pour chaque article vous avez la possibilité d'ouvrir un '''salon''' pour discuter en direct...=====
Parfaitement inutile&amp;nbsp;? Peut-être pas... 

&lt;br&gt; [[Image:Capture d'écran124.jpeg]] 

Possibilité de n'ouvrir qu'un seul &quot;salon&quot; pour l'ensemble du forum&amp;nbsp;? Vos avis&amp;nbsp;?

=====*Ajout de l'extension &quot;CategoryTree&quot;=====
Un exemple vaut mieux qu'un long discours&amp;nbsp;: 

&lt;categorytree mode=&quot;pages&quot; style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:orange;&quot;&gt;Commandes&lt;/categorytree&gt; Ou plus simplement &lt;categorytree mode=&quot;pages&quot;&gt;Commandes&lt;/categorytree&gt; 

=====*Ajout d'une fonction WYSIWYG à l'édition=====
[[Image:Capture d'écran122.jpeg]] 

'''Attention, il y a un prix&amp;nbsp;: cela alourdit la navigation...''' 

=====*Mise à jour du forum de la version 2.4.1 à 2.4.3=====
&lt;blockquote&gt;J'espère que cela va régler un certains nombres de petits &quot;bugs&quot;&lt;/blockquote&gt; 

=====*Un forum interne doublé d'un service de messagerie...=====
&lt;blockquote&gt;'''&lt;u&gt;Le forum interne permet d'envoyer des messages privés à l'intérieur du Wiki, et par mail&amp;nbsp;!&lt;/u&gt;''' Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt; 

=====*Un forum interne&amp;nbsp;!=====
&lt;blockquote&gt;Amélioration sans doute, '''&lt;u&gt;le Wiki s'est doté d'un forum&lt;/u&gt;''' afin de permettre aux membres de discuter, en toute liberté. Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt;

&lt;/noinclude&gt;

[[Template:DernièresNouvelles|Voir toutes les nouvelles]]</text>
      <sha1>trljghh0afl02cui3kr5hl0vbb651xx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5302</id>
      <parentid>5049</parentid>
      <timestamp>2013-07-12T00:01:35Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="12209">__NOTOC__
{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
&lt;noinclude&gt;{{Template: Social}}&lt;/noinclude&gt;
----
&lt;center&gt;
'''ACTUALITÉS'''
&lt;/center&gt;&lt;br&gt;

=====Le 11 juillet 2013=====
Mise à jour du Wiki vers Mediawiki 1.21.1 [http://www.mediawiki.org/wiki/MediaWiki_1.21]

=====Le 06 mars 2013=====
Mise à jour du Wiki vers Mediawiki 1.20.3 [http://www.mediawiki.org/wiki/MediaWiki_1.20]

=====Le 24 novembre 2012=====
Mise à jour du Wiki vers Mediawiki 1.20 [http://www.mediawiki.org/wiki/Release_notes/1.20 Mediawiki 1.20]

=====Le 1er novembre 2012=====
Publication de [[Accueil|la nouvelle page d'accueil!]]

=====Le 31 octobre 2012=====

Mise-à-jour de l'extension [[Spécial:ContributionScores|Contribution Scores]].
Permet de voir un classement des contributeurs.

=====Le 29 octobre 2012=====
Ajout d'une page contenant deux recherches google ciblées: Sur le forum.debian-fr.org et sur divers sites francophones Debian et GNU/Linux.
[[Recherche_debian|Recherches Debian]]

=====Le 22 septembre 2012=====
Mise à jour de sécurité =&gt; MediaWiki 1.19.2 [http://www.mediawiki.org/wiki/Release_notes/1.19 Note de version]

=====Le aout 2012=====
Activation du ssl sur le Wiki [https://www.isalo.org/wiki.debian-fr/index.php?title=Accueil wiki.debian-fr]
&lt;noinclude&gt;
=====Le 5 mai, mise à jour vers Mediawiki 1.19.0!=====
&lt;/noinclude&gt;
=====Le 28 avril 2012: Mise à jour Wiki vers 1.18.2 (1.18.3 échoué)=====

=====Le 24 avril 2012: Ajout de l'extension '''&quot;Collection&quot;'''.=====
Cette extension permet d'organiser et d'exporter dans divers formats (pdf pour l'instant, libre office à venir) une page ou une sélection de pages du Wiki.

=====Le Wiki à basculé sur l'ipv6!=====
http://pix.isalo.org/upload/thumb/1334318888.jpg

&lt;noinclude&gt;
=====Le 26 mars 2012: Ajout de l'extension CollapsableText.=====
&lt;collapsetext&gt;Ceci est le titre (toujours visible - Cliquez sur la flèche pour voir le texte complet). Ceci est le texte &quot;caché&quot; (visible quand il est &quot;déroulé&quot; ).&lt;/collapsetext&gt;

=====Le 23/02/2012: Activation de la possibilité d'insérer des images de pix.isalo.org=====
Image:
http://pix.isalo.org/upload/original/1293897717.gif

Miniature:
http://pix.isalo.org/upload/thumb/1329911740.png

=====Le 2 février 2012: Mise à niveau du Wiki ver 1.18.1=====

=====Le 1er février 2012: Activation des formules mathématiques avec le système TeX.=====

&lt;math&gt;
f(x) = \begin{cases}1 &amp; -1 \le x &lt; 0\\
 \frac{1}{2} &amp; x = 0\\x&amp;0&lt;x\le 1\end{cases}
&lt;/math&gt;


&lt;math&gt;
{}_pF_q(a_1,\ldots,a_p;c_1,\ldots,c_q;z) = \sum_{n=0}^\infty 
 \frac{(a_1)_n\cdots(a_p)_n}{(c_1)_n\cdots(c_q)_n}\frac{z^n}{n!}\,
&lt;/math&gt;


&lt;math&gt;
  \operatorname{erfc}(x) =
  \frac{2}{\sqrt{\pi}} \int_x^{\infty} e^{-t^2}\,dt =
  \frac{e^{-x^2}}{x\sqrt{\pi}}\sum_{n=0}^\infty (-1)^n \frac{(2n)!}{n!(2x)^{2n}}
 &lt;/math&gt;

=====Le 13 janvier 2012: Mise à jour du Wiki vers la version 1.17.1=====

=====06 août 2011: Ajout de l'extension [http://www.mediawiki.org/wiki/Extension:Widgets widget]=====
Premier essai sur le widget &quot;follow me on twitter&quot;

{{#widget:Twitter Follow
|twitter=debian
|what=me
}}

=====31 juillet 2011 - Ajout d'une page de contact: [[Spécial:Contact]]=====

=====Affichez votre &quot;twitter&quot; dans votre page perso &quot;Wiki&quot;=====
Utilisation:
&lt;code&gt;&lt;twitterfeed id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;
&lt;code&gt;&lt;twitterfeed nb=&quot;nb-of-tweets&quot; id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;

=====Mise à niveau vers 1.17 ce 29/07/2011=====

=====J'ai cédé à la sirène Google +1...=====
{{Template: Social}}

=====Mise à niveau du Wiki vers la version 1.16.5=====

=====Mise à jour du forum interne de 2.5.11 vers 2.5.12 [http://wiki.anotherwebcom.com/Category:AWC%27s_MediaWiki_Forum_Extension AWC Forum]=====

=====Ajout d'un service de partage d'images : [http://pix.isalo.org/ Hébergement d'images]=====

=====Ajout d'un outil de partage et de collaboration pour le débogage : [http://paste.isalo.org/ Un pastbin]=====

=====Le Wiki est désormais accessible 24/24, 7/7 et... 365/365 :)=====

=====Ajout de deux extensions : EasyTimeline et PDF Handler=====
[http://www.isalo.org/wiki.debian-fr/index.php/Test_timeline exemple Easy Timeline]
[http://www.isalo.org/wiki.debian-fr/index.php/Test.pdf exemple Pdf Handler]

=====Modification des autorisation du forum interne (section pause-café uniquement). Autorisation de lecture pour les utilisateurs &quot;anonymes&quot;.=====

=====Pour &quot;les forts en CSS&quot;, ajout de l'extension '''CSS''', une fonction du parseur qui permet d’inclure des feuilles de style sur vos pages de Wiki.=====
Exemple sur [[Test.css|cette page]]

=====Remise en fonction des [[Spécial:Téléversement_multiple|téléversements multiples - Version trunk r76488]] (10 fichiers au maximun).=====

=====Mise à jour du Wiki 1.16 à 1.16wmf4=====
[http://www.isalo.org/wiki.debian-fr/index.php/Sp%C3%A9cial:Version Version]

=====Mise à jour du forum interne (awc extension): 2.5.10 à 2.5.11=====
&lt;s&gt;Quelques liens dans le menu principal on souffert de la MAJ. Restauration ce soir ou demain.&lt;/s&gt;

[[Utilisateur:Lol|Lol]] 16 novembre 2010 à 18:31 (EAT)

=====* Changement de serveur et de branche ce 28/10/2010...=====
Le Wiki est désormais hébergé sur une squeeze!

 Linux lol 2.6.32-5-amd64 #1 SMP Wed Oct 20 00:05:22 UTC 2010 x86_64 GNU/Linux

=====* Mise à jour de notre Wiki qui passe de la version 1.15 à la dernière version 1.16=====
Il reste encore quelques réglages, mais dans l'ensemble... c'est bon!

=====&lt;s&gt;* Ajout d'une page pour les téléversements multiples...=====
[[Spécial:Téléversement_multiple]]&lt;/s&gt;

Fonction désactivée car ''incompatible avec la version 1.16'' du Wiki.

=====* Ajout de l'extension 'GeSHiCodeTag'=====
Permet la coloration syntaxique des lignes de codes... Très joli, et très pratique :)

Exemples

:&gt; &quot;code tag&quot; avancé
&lt;nowiki&gt;&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé avec numérotation
&lt;nowiki&gt;&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé par défaut
&lt;nowiki&gt;&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; Liste des langages supportés :
 &lt;nowiki&gt;&lt;code list&gt;&lt;/code&gt;&lt;/nowiki&gt;

 xbasic ecmascript io vb email pcre lotusscript per matlab awk plsql perl6 oracle11 powershell '''xorg_conf'''
 sdlbasic '''sql''' csharp autoit magiksf mapbasic visualprolog oobas delphi klonecpp rails sas actionscript
 cpp lolcode vbnet javascript abap ocaml dcs idl glsl progress gwbasic blitzbasic avisynth cfm smalltalk '''ruby'''
 asm lscript oracle8 scheme systemverilog '''diff''' fo vala modula2 mmix mirc kixtart ini newlisp vhdl qbasic
 fsharp cfdg genie mpasm java5 '''c''' dot logtalk inno providex caddcl asp hq9plus gambas '''vim''' bf oberon2 '''apache'''
 mxml q php cmake java oz whitespace lua rebol rsplus chaiscript html4strict gnuplot thinbasic '''div''' locobasic
 gml typoscript pixelbender purebasic verilog scilab actionscript3 xml j winbatch klonec autohotkey applescript
 freebasic teraterm '''css''' objc xpp m68k '''make''' clojure tsql apt_sources nsis bibtex cpp-qt lisp gettext dos modula3
 python ocaml-brief autoconf php-brief cobol pf haskell '''erlang''' pic16 intercal c_mac rpmspec '''perl''' pike oxygene
 4cs boo '''bash''' tcl cadlisp pascal powerbuilder hicest lotusformulas text properties fortran postgresql basic4gl
 jquery povray ada eiffel robots '''mysql''' cuesheet z80 d scala prolog icon '''whois''' cil '''latex''' gdb smarty visualfoxpro
 unicon bnf lsl2 genero reg groovy

Un exemple :

Le script suivant encadré de &lt;nowiki&gt;&lt;code bash&gt;votre script ici&lt;/code&gt;&lt;/nowiki&gt;

 #! /bin/sh
 
 N=/etc/init.d/sudo
 
 set -e
 
 case &quot;$1&quot; in
   start)
 	# make sure privileges don't persist across reboots
 	if [ -d /var/lib/sudo ]
 	then
                 find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
 	fi
 	;;
   stop|reload|restart|force-reload)
 	;;
   *)
 	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
 	exit 1
 	;;
 esac
 
 exit 0

Donnera :

&lt;code bash&gt;#! /bin/sh

N=/etc/init.d/sudo

set -e

case &quot;$1&quot; in
  start)
	# make sure privileges don't persist across reboots
	if [ -d /var/lib/sudo ]
	then
                find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
	fi
	;;
  stop|reload|restart|force-reload)
	;;
  *)
	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
	exit 1
	;;
esac

exit 0
&lt;/code&gt;

Bien plus lisible !

=====* La TRèS bonne nouvelle de la journée !=====
'''Squeeze est gelée ce 6 aout 2010 !'''

[http://www.debian.org/News/2010/20100806 L'annonce ICI]

=====* Nouvelle page Spéciale : Livre d'or... Ici : [[Spécial:Guestbook|Spécial:Guestbook]]=====
Permet aux invités de laisser un message; Il faut encore que j'ajoute un lien au menu général!

=====*Mise à jour du forum interne vers la version 2.5.10=====
Possibilité de faire des sondages...

Ouvrez une nouvelle discussion, enregistrez;
Ajoutez un sondage à votre discussion, c'est tout !

La mise à jour à apportée un nouveau menu au forum (en bas à gauche)

=====* Avec la réinstallation forcée suite au crash d'un disque dur, passage à la version 1.15.4 (déjà dépassée... la version 1.16 et 1.15.5 venant de sortir...)=====
N'hésitez pas à visiter [[Spécial:Pages_spéciales|les pages spéciales]] !

=====*Le support des fichiers svg (graphique vectoriel adaptable) est opérationnel&amp;nbsp;!=====
[[Fichier:Chess game 01.svg]]

=====*Page Spéciale bien pratique pour suivre les nouveaux articles, discussions...&amp;nbsp;!=====

[[Spécial:Newestpages]] 
Plus facile de se repérer que dans la page spéciale &quot;Modifications récentes&quot;. Nous ne risquons pas de perdre des articles en route...

=====*Nous allons pouvoir faire des sondages&amp;nbsp;!=====
[[Spécial:Voter]] 

Vous pouvez voter plusieurs fois, mais seul le dernier vote est pris en compte... Un vote par utilisateur&amp;nbsp;! 

Votez dès maintenant pour le maître de l'univers... 

=====*Option de prise en charge de vos css personnels activée...=====
Vous pouvez récupérer ici des css&amp;nbsp;: [http://www.mediawiki.org/wiki/Manual:Gallery_of_user_styles Manual:Gallery_of_user_styles] - ou créer votre propre css... Les skins utilisés dans notre mediawiki sont listés dans votre page de préférences (en haut à gauche). Il suffit de créer votre page de skin (en général Utilisateur:votre_super_pseudo/monobook.css et Utilisateur:votre_super_pseudo/monobook.js pour ceux nécessitant un js) et de rafraîchir votre navigateur... 

=====*Nouvelle page spéciale&amp;nbsp;: Qui est en ligne&amp;nbsp;!=====
[[Spécial:Qui est en ligne]]

=====*Ajout d'un &quot;chat-room&quot; au forum. Pour chaque article vous avez la possibilité d'ouvrir un '''salon''' pour discuter en direct...=====
Parfaitement inutile&amp;nbsp;? Peut-être pas... 

&lt;br&gt; [[Image:Capture d'écran124.jpeg]] 

Possibilité de n'ouvrir qu'un seul &quot;salon&quot; pour l'ensemble du forum&amp;nbsp;? Vos avis&amp;nbsp;?

=====*Ajout de l'extension &quot;CategoryTree&quot;=====
Un exemple vaut mieux qu'un long discours&amp;nbsp;: 

&lt;categorytree mode=&quot;pages&quot; style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:orange;&quot;&gt;Commandes&lt;/categorytree&gt; Ou plus simplement &lt;categorytree mode=&quot;pages&quot;&gt;Commandes&lt;/categorytree&gt; 

=====*Ajout d'une fonction WYSIWYG à l'édition=====
[[Image:Capture d'écran122.jpeg]] 

'''Attention, il y a un prix&amp;nbsp;: cela alourdit la navigation...''' 

=====*Mise à jour du forum de la version 2.4.1 à 2.4.3=====
&lt;blockquote&gt;J'espère que cela va régler un certains nombres de petits &quot;bugs&quot;&lt;/blockquote&gt; 

=====*Un forum interne doublé d'un service de messagerie...=====
&lt;blockquote&gt;'''&lt;u&gt;Le forum interne permet d'envoyer des messages privés à l'intérieur du Wiki, et par mail&amp;nbsp;!&lt;/u&gt;''' Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt; 

=====*Un forum interne&amp;nbsp;!=====
&lt;blockquote&gt;Amélioration sans doute, '''&lt;u&gt;le Wiki s'est doté d'un forum&lt;/u&gt;''' afin de permettre aux membres de discuter, en toute liberté. Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt;

&lt;/noinclude&gt;

[[Template:DernièresNouvelles|Voir toutes les nouvelles]]</text>
      <sha1>2hf2vry3yamxlgltwh5wsp1tfw57zrn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5610</id>
      <parentid>5302</parentid>
      <timestamp>2014-05-02T04:23:09Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="12289">__NOTOC__
{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
&lt;noinclude&gt;{{Template: Social}}&lt;/noinclude&gt;
----
&lt;center&gt;
'''ACTUALITÉS'''
&lt;/center&gt;&lt;br&gt;

=====Avril 2014====
Mise à jour du Wiki vers Mediawiki 1.22.5

=====Le 11 juillet 2013=====
Mise à jour du Wiki vers Mediawiki 1.21.1 [https://www.mediawiki.org/wiki/MediaWiki_1.21]

=====Le 06 mars 2013=====
Mise à jour du Wiki vers Mediawiki 1.20.3 [https://www.mediawiki.org/wiki/MediaWiki_1.20]

=====Le 24 novembre 2012=====
Mise à jour du Wiki vers Mediawiki 1.20 [https://www.mediawiki.org/wiki/Release_notes/1.20 Mediawiki 1.20]

=====Le 1er novembre 2012=====
Publication de [[Accueil|la nouvelle page d'accueil!]]

=====Le 31 octobre 2012=====

Mise-à-jour de l'extension [[Spécial:ContributionScores|Contribution Scores]].
Permet de voir un classement des contributeurs.

=====Le 29 octobre 2012=====
Ajout d'une page contenant deux recherches google ciblées: Sur le forum.debian-fr.org et sur divers sites francophones Debian et GNU/Linux.
[[Recherche_debian|Recherches Debian]]

=====Le 22 septembre 2012=====
Mise à jour de sécurité =&gt; MediaWiki 1.19.2 [https://www.mediawiki.org/wiki/Release_notes/1.19 Note de version]

=====Le aout 2012=====
Activation du ssl sur le Wiki [https://www.isalo.org/wiki.debian-fr/index.php?title=Accueil wiki.debian-fr]
&lt;noinclude&gt;
=====Le 5 mai, mise à jour vers Mediawiki 1.19.0!=====
&lt;/noinclude&gt;
=====Le 28 avril 2012: Mise à jour Wiki vers 1.18.2 (1.18.3 échoué)=====

=====Le 24 avril 2012: Ajout de l'extension '''&quot;Collection&quot;'''.=====
Cette extension permet d'organiser et d'exporter dans divers formats (pdf pour l'instant, libre office à venir) une page ou une sélection de pages du Wiki.

=====Le Wiki à basculé sur l'ipv6!=====
https://pix.isalo.org/upload/thumb/1334318888.jpg

&lt;noinclude&gt;
=====Le 26 mars 2012: Ajout de l'extension CollapsableText.=====
&lt;collapsetext&gt;Ceci est le titre (toujours visible - Cliquez sur la flèche pour voir le texte complet). Ceci est le texte &quot;caché&quot; (visible quand il est &quot;déroulé&quot; ).&lt;/collapsetext&gt;

=====Le 23/02/2012: Activation de la possibilité d'insérer des images de pix.isalo.org=====
Image:
https://pix.isalo.org/upload/original/1293897717.gif

Miniature:
https://pix.isalo.org/upload/thumb/1329911740.png

=====Le 2 février 2012: Mise à niveau du Wiki ver 1.18.1=====

=====Le 1er février 2012: Activation des formules mathématiques avec le système TeX.=====

&lt;math&gt;
f(x) = \begin{cases}1 &amp; -1 \le x &lt; 0\\
 \frac{1}{2} &amp; x = 0\\x&amp;0&lt;x\le 1\end{cases}
&lt;/math&gt;


&lt;math&gt;
{}_pF_q(a_1,\ldots,a_p;c_1,\ldots,c_q;z) = \sum_{n=0}^\infty 
 \frac{(a_1)_n\cdots(a_p)_n}{(c_1)_n\cdots(c_q)_n}\frac{z^n}{n!}\,
&lt;/math&gt;


&lt;math&gt;
  \operatorname{erfc}(x) =
  \frac{2}{\sqrt{\pi}} \int_x^{\infty} e^{-t^2}\,dt =
  \frac{e^{-x^2}}{x\sqrt{\pi}}\sum_{n=0}^\infty (-1)^n \frac{(2n)!}{n!(2x)^{2n}}
 &lt;/math&gt;

=====Le 13 janvier 2012: Mise à jour du Wiki vers la version 1.17.1=====

=====06 août 2011: Ajout de l'extension [https://www.mediawiki.org/wiki/Extension:Widgets widget]=====
Premier essai sur le widget &quot;follow me on twitter&quot;

{{#widget:Twitter Follow
|twitter=debian
|what=me
}}

=====31 juillet 2011 - Ajout d'une page de contact: [[Spécial:Contact]]=====

=====Affichez votre &quot;twitter&quot; dans votre page perso &quot;Wiki&quot;=====
Utilisation:
&lt;code&gt;&lt;twitterfeed id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;
&lt;code&gt;&lt;twitterfeed nb=&quot;nb-of-tweets&quot; id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;

=====Mise à niveau vers 1.17 ce 29/07/2011=====

=====J'ai cédé à la sirène Google +1...=====
{{Template: Social}}

=====Mise à niveau du Wiki vers la version 1.16.5=====

=====Mise à jour du forum interne de 2.5.11 vers 2.5.12 [https://wiki.anotherwebcom.com/Category:AWC%27s_MediaWiki_Forum_Extension AWC Forum]=====

=====Ajout d'un service de partage d'images : [https://pix.isalo.org/ Hébergement d'images]=====

=====Ajout d'un outil de partage et de collaboration pour le débogage : [https://paste.isalo.org/ Un pastbin]=====

=====Le Wiki est désormais accessible 24/24, 7/7 et... 365/365 :)=====

=====Ajout de deux extensions : EasyTimeline et PDF Handler=====
[https://www.isalo.org/wiki.debian-fr/index.php/Test_timeline exemple Easy Timeline]
[https://www.isalo.org/wiki.debian-fr/index.php/Test.pdf exemple Pdf Handler]

=====Modification des autorisation du forum interne (section pause-café uniquement). Autorisation de lecture pour les utilisateurs &quot;anonymes&quot;.=====

=====Pour &quot;les forts en CSS&quot;, ajout de l'extension '''CSS''', une fonction du parseur qui permet d’inclure des feuilles de style sur vos pages de Wiki.=====
Exemple sur [[Test.css|cette page]]

=====Remise en fonction des [[Spécial:Téléversement_multiple|téléversements multiples - Version trunk r76488]] (10 fichiers au maximun).=====

=====Mise à jour du Wiki 1.16 à 1.16wmf4=====
[https://www.isalo.org/wiki.debian-fr/index.php/Sp%C3%A9cial:Version Version]

=====Mise à jour du forum interne (awc extension): 2.5.10 à 2.5.11=====
&lt;s&gt;Quelques liens dans le menu principal on souffert de la MAJ. Restauration ce soir ou demain.&lt;/s&gt;

[[Utilisateur:Lol|Lol]] 16 novembre 2010 à 18:31 (EAT)

=====* Changement de serveur et de branche ce 28/10/2010...=====
Le Wiki est désormais hébergé sur une squeeze!

 Linux lol 2.6.32-5-amd64 #1 SMP Wed Oct 20 00:05:22 UTC 2010 x86_64 GNU/Linux

=====* Mise à jour de notre Wiki qui passe de la version 1.15 à la dernière version 1.16=====
Il reste encore quelques réglages, mais dans l'ensemble... c'est bon!

=====&lt;s&gt;* Ajout d'une page pour les téléversements multiples...=====
[[Spécial:Téléversement_multiple]]&lt;/s&gt;

Fonction désactivée car ''incompatible avec la version 1.16'' du Wiki.

=====* Ajout de l'extension 'GeSHiCodeTag'=====
Permet la coloration syntaxique des lignes de codes... Très joli, et très pratique :)

Exemples

:&gt; &quot;code tag&quot; avancé
&lt;nowiki&gt;&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé avec numérotation
&lt;nowiki&gt;&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé par défaut
&lt;nowiki&gt;&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; Liste des langages supportés :
 &lt;nowiki&gt;&lt;code list&gt;&lt;/code&gt;&lt;/nowiki&gt;

 xbasic ecmascript io vb email pcre lotusscript per matlab awk plsql perl6 oracle11 powershell '''xorg_conf'''
 sdlbasic '''sql''' csharp autoit magiksf mapbasic visualprolog oobas delphi klonecpp rails sas actionscript
 cpp lolcode vbnet javascript abap ocaml dcs idl glsl progress gwbasic blitzbasic avisynth cfm smalltalk '''ruby'''
 asm lscript oracle8 scheme systemverilog '''diff''' fo vala modula2 mmix mirc kixtart ini newlisp vhdl qbasic
 fsharp cfdg genie mpasm java5 '''c''' dot logtalk inno providex caddcl asp hq9plus gambas '''vim''' bf oberon2 '''apache'''
 mxml q php cmake java oz whitespace lua rebol rsplus chaiscript html4strict gnuplot thinbasic '''div''' locobasic
 gml typoscript pixelbender purebasic verilog scilab actionscript3 xml j winbatch klonec autohotkey applescript
 freebasic teraterm '''css''' objc xpp m68k '''make''' clojure tsql apt_sources nsis bibtex cpp-qt lisp gettext dos modula3
 python ocaml-brief autoconf php-brief cobol pf haskell '''erlang''' pic16 intercal c_mac rpmspec '''perl''' pike oxygene
 4cs boo '''bash''' tcl cadlisp pascal powerbuilder hicest lotusformulas text properties fortran postgresql basic4gl
 jquery povray ada eiffel robots '''mysql''' cuesheet z80 d scala prolog icon '''whois''' cil '''latex''' gdb smarty visualfoxpro
 unicon bnf lsl2 genero reg groovy

Un exemple :

Le script suivant encadré de &lt;nowiki&gt;&lt;code bash&gt;votre script ici&lt;/code&gt;&lt;/nowiki&gt;

 #! /bin/sh
 
 N=/etc/init.d/sudo
 
 set -e
 
 case &quot;$1&quot; in
   start)
 	# make sure privileges don't persist across reboots
 	if [ -d /var/lib/sudo ]
 	then
                 find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
 	fi
 	;;
   stop|reload|restart|force-reload)
 	;;
   *)
 	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
 	exit 1
 	;;
 esac
 
 exit 0

Donnera :

&lt;code bash&gt;#! /bin/sh

N=/etc/init.d/sudo

set -e

case &quot;$1&quot; in
  start)
	# make sure privileges don't persist across reboots
	if [ -d /var/lib/sudo ]
	then
                find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
	fi
	;;
  stop|reload|restart|force-reload)
	;;
  *)
	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
	exit 1
	;;
esac

exit 0
&lt;/code&gt;

Bien plus lisible !

=====* La TRèS bonne nouvelle de la journée !=====
'''Squeeze est gelée ce 6 aout 2010 !'''

[https://www.debian.org/News/2010/20100806 L'annonce ICI]

=====* Nouvelle page Spéciale : Livre d'or... Ici : [[Spécial:Guestbook|Spécial:Guestbook]]=====
Permet aux invités de laisser un message; Il faut encore que j'ajoute un lien au menu général!

=====*Mise à jour du forum interne vers la version 2.5.10=====
Possibilité de faire des sondages...

Ouvrez une nouvelle discussion, enregistrez;
Ajoutez un sondage à votre discussion, c'est tout !

La mise à jour à apportée un nouveau menu au forum (en bas à gauche)

=====* Avec la réinstallation forcée suite au crash d'un disque dur, passage à la version 1.15.4 (déjà dépassée... la version 1.16 et 1.15.5 venant de sortir...)=====
N'hésitez pas à visiter [[Spécial:Pages_spéciales|les pages spéciales]] !

=====*Le support des fichiers svg (graphique vectoriel adaptable) est opérationnel&amp;nbsp;!=====
[[Fichier:Chess game 01.svg]]

=====*Page Spéciale bien pratique pour suivre les nouveaux articles, discussions...&amp;nbsp;!=====

[[Spécial:Newestpages]] 
Plus facile de se repérer que dans la page spéciale &quot;Modifications récentes&quot;. Nous ne risquons pas de perdre des articles en route...

=====*Nous allons pouvoir faire des sondages&amp;nbsp;!=====
[[Spécial:Voter]] 

Vous pouvez voter plusieurs fois, mais seul le dernier vote est pris en compte... Un vote par utilisateur&amp;nbsp;! 

Votez dès maintenant pour le maître de l'univers... 

=====*Option de prise en charge de vos css personnels activée...=====
Vous pouvez récupérer ici des css&amp;nbsp;: [https://www.mediawiki.org/wiki/Manual:Gallery_of_user_styles Manual:Gallery_of_user_styles] - ou créer votre propre css... Les skins utilisés dans notre mediawiki sont listés dans votre page de préférences (en haut à gauche). Il suffit de créer votre page de skin (en général Utilisateur:votre_super_pseudo/monobook.css et Utilisateur:votre_super_pseudo/monobook.js pour ceux nécessitant un js) et de rafraîchir votre navigateur... 

=====*Nouvelle page spéciale&amp;nbsp;: Qui est en ligne&amp;nbsp;!=====
[[Spécial:Qui est en ligne]]

=====*Ajout d'un &quot;chat-room&quot; au forum. Pour chaque article vous avez la possibilité d'ouvrir un '''salon''' pour discuter en direct...=====
Parfaitement inutile&amp;nbsp;? Peut-être pas... 

&lt;br&gt; [[Image:Capture d'écran124.jpeg]] 

Possibilité de n'ouvrir qu'un seul &quot;salon&quot; pour l'ensemble du forum&amp;nbsp;? Vos avis&amp;nbsp;?

=====*Ajout de l'extension &quot;CategoryTree&quot;=====
Un exemple vaut mieux qu'un long discours&amp;nbsp;: 

&lt;categorytree mode=&quot;pages&quot; style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:orange;&quot;&gt;Commandes&lt;/categorytree&gt; Ou plus simplement &lt;categorytree mode=&quot;pages&quot;&gt;Commandes&lt;/categorytree&gt; 

=====*Ajout d'une fonction WYSIWYG à l'édition=====
[[Image:Capture d'écran122.jpeg]] 

'''Attention, il y a un prix&amp;nbsp;: cela alourdit la navigation...''' 

=====*Mise à jour du forum de la version 2.4.1 à 2.4.3=====
&lt;blockquote&gt;J'espère que cela va régler un certains nombres de petits &quot;bugs&quot;&lt;/blockquote&gt; 

=====*Un forum interne doublé d'un service de messagerie...=====
&lt;blockquote&gt;'''&lt;u&gt;Le forum interne permet d'envoyer des messages privés à l'intérieur du Wiki, et par mail&amp;nbsp;!&lt;/u&gt;''' Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt; 

=====*Un forum interne&amp;nbsp;!=====
&lt;blockquote&gt;Amélioration sans doute, '''&lt;u&gt;le Wiki s'est doté d'un forum&lt;/u&gt;''' afin de permettre aux membres de discuter, en toute liberté. Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt;

&lt;/noinclude&gt;

[[Template:DernièresNouvelles|Voir toutes les nouvelles]]</text>
      <sha1>7kz2rjhbuy6j7fjnkyex8rdxc1k53i1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5877</id>
      <parentid>5610</parentid>
      <timestamp>2014-10-12T16:03:51Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="12372">__NOTOC__
{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
&lt;noinclude&gt;{{Template: Social}}&lt;/noinclude&gt;
----
&lt;center&gt;
'''ACTUALITÉS'''
&lt;/center&gt;&lt;br&gt;
====Octobre 2014====
Mise à jour vers 1.23.5!!! + Upgrade de toutes les extensions

====Avril 2014====
Mise à jour du Wiki vers Mediawiki 1.22.5

=====Le 11 juillet 2013=====
Mise à jour du Wiki vers Mediawiki 1.21.1 [https://www.mediawiki.org/wiki/MediaWiki_1.21]

=====Le 06 mars 2013=====
Mise à jour du Wiki vers Mediawiki 1.20.3 [https://www.mediawiki.org/wiki/MediaWiki_1.20]

=====Le 24 novembre 2012=====
Mise à jour du Wiki vers Mediawiki 1.20 [https://www.mediawiki.org/wiki/Release_notes/1.20 Mediawiki 1.20]

=====Le 1er novembre 2012=====
Publication de [[Accueil|la nouvelle page d'accueil!]]

=====Le 31 octobre 2012=====

Mise-à-jour de l'extension [[Spécial:ContributionScores|Contribution Scores]].
Permet de voir un classement des contributeurs.

=====Le 29 octobre 2012=====
Ajout d'une page contenant deux recherches google ciblées: Sur le forum.debian-fr.org et sur divers sites francophones Debian et GNU/Linux.
[[Recherche_debian|Recherches Debian]]

=====Le 22 septembre 2012=====
Mise à jour de sécurité =&gt; MediaWiki 1.19.2 [https://www.mediawiki.org/wiki/Release_notes/1.19 Note de version]

=====Le aout 2012=====
Activation du ssl sur le Wiki [https://www.isalo.org/wiki.debian-fr/index.php?title=Accueil wiki.debian-fr]
&lt;noinclude&gt;
=====Le 5 mai, mise à jour vers Mediawiki 1.19.0!=====
&lt;/noinclude&gt;
=====Le 28 avril 2012: Mise à jour Wiki vers 1.18.2 (1.18.3 échoué)=====

=====Le 24 avril 2012: Ajout de l'extension '''&quot;Collection&quot;'''.=====
Cette extension permet d'organiser et d'exporter dans divers formats (pdf pour l'instant, libre office à venir) une page ou une sélection de pages du Wiki.

=====Le Wiki à basculé sur l'ipv6!=====
https://pix.isalo.org/upload/thumb/1334318888.jpg

&lt;noinclude&gt;
=====Le 26 mars 2012: Ajout de l'extension CollapsableText.=====
&lt;collapsetext&gt;Ceci est le titre (toujours visible - Cliquez sur la flèche pour voir le texte complet). Ceci est le texte &quot;caché&quot; (visible quand il est &quot;déroulé&quot; ).&lt;/collapsetext&gt;

=====Le 23/02/2012: Activation de la possibilité d'insérer des images de pix.isalo.org=====
Image:
https://pix.isalo.org/upload/original/1293897717.gif

Miniature:
https://pix.isalo.org/upload/thumb/1329911740.png

=====Le 2 février 2012: Mise à niveau du Wiki ver 1.18.1=====

=====Le 1er février 2012: Activation des formules mathématiques avec le système TeX.=====

&lt;math&gt;
f(x) = \begin{cases}1 &amp; -1 \le x &lt; 0\\
 \frac{1}{2} &amp; x = 0\\x&amp;0&lt;x\le 1\end{cases}
&lt;/math&gt;


&lt;math&gt;
{}_pF_q(a_1,\ldots,a_p;c_1,\ldots,c_q;z) = \sum_{n=0}^\infty 
 \frac{(a_1)_n\cdots(a_p)_n}{(c_1)_n\cdots(c_q)_n}\frac{z^n}{n!}\,
&lt;/math&gt;


&lt;math&gt;
  \operatorname{erfc}(x) =
  \frac{2}{\sqrt{\pi}} \int_x^{\infty} e^{-t^2}\,dt =
  \frac{e^{-x^2}}{x\sqrt{\pi}}\sum_{n=0}^\infty (-1)^n \frac{(2n)!}{n!(2x)^{2n}}
 &lt;/math&gt;

=====Le 13 janvier 2012: Mise à jour du Wiki vers la version 1.17.1=====

=====06 août 2011: Ajout de l'extension [https://www.mediawiki.org/wiki/Extension:Widgets widget]=====
Premier essai sur le widget &quot;follow me on twitter&quot;

{{#widget:Twitter Follow
|twitter=debian
|what=me
}}

=====31 juillet 2011 - Ajout d'une page de contact: [[Spécial:Contact]]=====

=====Affichez votre &quot;twitter&quot; dans votre page perso &quot;Wiki&quot;=====
Utilisation:
&lt;code&gt;&lt;twitterfeed id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;
&lt;code&gt;&lt;twitterfeed nb=&quot;nb-of-tweets&quot; id=&quot;sessions-userid&quot;&gt;&lt;/twitterfeed&gt;&lt;/code&gt;

=====Mise à niveau vers 1.17 ce 29/07/2011=====

=====J'ai cédé à la sirène Google +1...=====
{{Template: Social}}

=====Mise à niveau du Wiki vers la version 1.16.5=====

=====Mise à jour du forum interne de 2.5.11 vers 2.5.12 [https://wiki.anotherwebcom.com/Category:AWC%27s_MediaWiki_Forum_Extension AWC Forum]=====

=====Ajout d'un service de partage d'images : [https://pix.isalo.org/ Hébergement d'images]=====

=====Ajout d'un outil de partage et de collaboration pour le débogage : [https://paste.isalo.org/ Un pastbin]=====

=====Le Wiki est désormais accessible 24/24, 7/7 et... 365/365 :)=====

=====Ajout de deux extensions : EasyTimeline et PDF Handler=====
[https://www.isalo.org/wiki.debian-fr/index.php/Test_timeline exemple Easy Timeline]
[https://www.isalo.org/wiki.debian-fr/index.php/Test.pdf exemple Pdf Handler]

=====Modification des autorisation du forum interne (section pause-café uniquement). Autorisation de lecture pour les utilisateurs &quot;anonymes&quot;.=====

=====Pour &quot;les forts en CSS&quot;, ajout de l'extension '''CSS''', une fonction du parseur qui permet d’inclure des feuilles de style sur vos pages de Wiki.=====
Exemple sur [[Test.css|cette page]]

=====Remise en fonction des [[Spécial:Téléversement_multiple|téléversements multiples - Version trunk r76488]] (10 fichiers au maximun).=====

=====Mise à jour du Wiki 1.16 à 1.16wmf4=====
[https://www.isalo.org/wiki.debian-fr/index.php/Sp%C3%A9cial:Version Version]

=====Mise à jour du forum interne (awc extension): 2.5.10 à 2.5.11=====
&lt;s&gt;Quelques liens dans le menu principal on souffert de la MAJ. Restauration ce soir ou demain.&lt;/s&gt;

[[Utilisateur:Lol|Lol]] 16 novembre 2010 à 18:31 (EAT)

=====* Changement de serveur et de branche ce 28/10/2010...=====
Le Wiki est désormais hébergé sur une squeeze!

 Linux lol 2.6.32-5-amd64 #1 SMP Wed Oct 20 00:05:22 UTC 2010 x86_64 GNU/Linux

=====* Mise à jour de notre Wiki qui passe de la version 1.15 à la dernière version 1.16=====
Il reste encore quelques réglages, mais dans l'ensemble... c'est bon!

=====&lt;s&gt;* Ajout d'une page pour les téléversements multiples...=====
[[Spécial:Téléversement_multiple]]&lt;/s&gt;

Fonction désactivée car ''incompatible avec la version 1.16'' du Wiki.

=====* Ajout de l'extension 'GeSHiCodeTag'=====
Permet la coloration syntaxique des lignes de codes... Très joli, et très pratique :)

Exemples

:&gt; &quot;code tag&quot; avancé
&lt;nowiki&gt;&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé avec numérotation
&lt;nowiki&gt;&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code php n&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; &quot;code tag&quot; avancé par défaut
&lt;nowiki&gt;&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;&lt;/nowiki&gt;
&lt;code&gt; echo &quot;Hello World&quot;; &lt;/code&gt;

:&gt; Liste des langages supportés :
 &lt;nowiki&gt;&lt;code list&gt;&lt;/code&gt;&lt;/nowiki&gt;

 xbasic ecmascript io vb email pcre lotusscript per matlab awk plsql perl6 oracle11 powershell '''xorg_conf'''
 sdlbasic '''sql''' csharp autoit magiksf mapbasic visualprolog oobas delphi klonecpp rails sas actionscript
 cpp lolcode vbnet javascript abap ocaml dcs idl glsl progress gwbasic blitzbasic avisynth cfm smalltalk '''ruby'''
 asm lscript oracle8 scheme systemverilog '''diff''' fo vala modula2 mmix mirc kixtart ini newlisp vhdl qbasic
 fsharp cfdg genie mpasm java5 '''c''' dot logtalk inno providex caddcl asp hq9plus gambas '''vim''' bf oberon2 '''apache'''
 mxml q php cmake java oz whitespace lua rebol rsplus chaiscript html4strict gnuplot thinbasic '''div''' locobasic
 gml typoscript pixelbender purebasic verilog scilab actionscript3 xml j winbatch klonec autohotkey applescript
 freebasic teraterm '''css''' objc xpp m68k '''make''' clojure tsql apt_sources nsis bibtex cpp-qt lisp gettext dos modula3
 python ocaml-brief autoconf php-brief cobol pf haskell '''erlang''' pic16 intercal c_mac rpmspec '''perl''' pike oxygene
 4cs boo '''bash''' tcl cadlisp pascal powerbuilder hicest lotusformulas text properties fortran postgresql basic4gl
 jquery povray ada eiffel robots '''mysql''' cuesheet z80 d scala prolog icon '''whois''' cil '''latex''' gdb smarty visualfoxpro
 unicon bnf lsl2 genero reg groovy

Un exemple :

Le script suivant encadré de &lt;nowiki&gt;&lt;code bash&gt;votre script ici&lt;/code&gt;&lt;/nowiki&gt;

 #! /bin/sh
 
 N=/etc/init.d/sudo
 
 set -e
 
 case &quot;$1&quot; in
   start)
 	# make sure privileges don't persist across reboots
 	if [ -d /var/lib/sudo ]
 	then
                 find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
 	fi
 	;;
   stop|reload|restart|force-reload)
 	;;
   *)
 	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
 	exit 1
 	;;
 esac
 
 exit 0

Donnera :

&lt;code bash&gt;#! /bin/sh

N=/etc/init.d/sudo

set -e

case &quot;$1&quot; in
  start)
	# make sure privileges don't persist across reboots
	if [ -d /var/lib/sudo ]
	then
                find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
	fi
	;;
  stop|reload|restart|force-reload)
	;;
  *)
	echo &quot;Usage: $N {start|stop|restart|force-reload}&quot; &gt;&amp;2
	exit 1
	;;
esac

exit 0
&lt;/code&gt;

Bien plus lisible !

=====* La TRèS bonne nouvelle de la journée !=====
'''Squeeze est gelée ce 6 aout 2010 !'''

[https://www.debian.org/News/2010/20100806 L'annonce ICI]

=====* Nouvelle page Spéciale : Livre d'or... Ici : [[Spécial:Guestbook|Spécial:Guestbook]]=====
Permet aux invités de laisser un message; Il faut encore que j'ajoute un lien au menu général!

=====*Mise à jour du forum interne vers la version 2.5.10=====
Possibilité de faire des sondages...

Ouvrez une nouvelle discussion, enregistrez;
Ajoutez un sondage à votre discussion, c'est tout !

La mise à jour à apportée un nouveau menu au forum (en bas à gauche)

=====* Avec la réinstallation forcée suite au crash d'un disque dur, passage à la version 1.15.4 (déjà dépassée... la version 1.16 et 1.15.5 venant de sortir...)=====
N'hésitez pas à visiter [[Spécial:Pages_spéciales|les pages spéciales]] !

=====*Le support des fichiers svg (graphique vectoriel adaptable) est opérationnel&amp;nbsp;!=====
[[Fichier:Chess game 01.svg]]

=====*Page Spéciale bien pratique pour suivre les nouveaux articles, discussions...&amp;nbsp;!=====

[[Spécial:Newestpages]] 
Plus facile de se repérer que dans la page spéciale &quot;Modifications récentes&quot;. Nous ne risquons pas de perdre des articles en route...

=====*Nous allons pouvoir faire des sondages&amp;nbsp;!=====
[[Spécial:Voter]] 

Vous pouvez voter plusieurs fois, mais seul le dernier vote est pris en compte... Un vote par utilisateur&amp;nbsp;! 

Votez dès maintenant pour le maître de l'univers... 

=====*Option de prise en charge de vos css personnels activée...=====
Vous pouvez récupérer ici des css&amp;nbsp;: [https://www.mediawiki.org/wiki/Manual:Gallery_of_user_styles Manual:Gallery_of_user_styles] - ou créer votre propre css... Les skins utilisés dans notre mediawiki sont listés dans votre page de préférences (en haut à gauche). Il suffit de créer votre page de skin (en général Utilisateur:votre_super_pseudo/monobook.css et Utilisateur:votre_super_pseudo/monobook.js pour ceux nécessitant un js) et de rafraîchir votre navigateur... 

=====*Nouvelle page spéciale&amp;nbsp;: Qui est en ligne&amp;nbsp;!=====
[[Spécial:Qui est en ligne]]

=====*Ajout d'un &quot;chat-room&quot; au forum. Pour chaque article vous avez la possibilité d'ouvrir un '''salon''' pour discuter en direct...=====
Parfaitement inutile&amp;nbsp;? Peut-être pas... 

&lt;br&gt; [[Image:Capture d'écran124.jpeg]] 

Possibilité de n'ouvrir qu'un seul &quot;salon&quot; pour l'ensemble du forum&amp;nbsp;? Vos avis&amp;nbsp;?

=====*Ajout de l'extension &quot;CategoryTree&quot;=====
Un exemple vaut mieux qu'un long discours&amp;nbsp;: 

&lt;categorytree mode=&quot;pages&quot; style=&quot;float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:orange;&quot;&gt;Commandes&lt;/categorytree&gt; Ou plus simplement &lt;categorytree mode=&quot;pages&quot;&gt;Commandes&lt;/categorytree&gt; 

=====*Ajout d'une fonction WYSIWYG à l'édition=====
[[Image:Capture d'écran122.jpeg]] 

'''Attention, il y a un prix&amp;nbsp;: cela alourdit la navigation...''' 

=====*Mise à jour du forum de la version 2.4.1 à 2.4.3=====
&lt;blockquote&gt;J'espère que cela va régler un certains nombres de petits &quot;bugs&quot;&lt;/blockquote&gt; 

=====*Un forum interne doublé d'un service de messagerie...=====
&lt;blockquote&gt;'''&lt;u&gt;Le forum interne permet d'envoyer des messages privés à l'intérieur du Wiki, et par mail&amp;nbsp;!&lt;/u&gt;''' Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt; 

=====*Un forum interne&amp;nbsp;!=====
&lt;blockquote&gt;Amélioration sans doute, '''&lt;u&gt;le Wiki s'est doté d'un forum&lt;/u&gt;''' afin de permettre aux membres de discuter, en toute liberté. Rendez-vous ici&amp;nbsp;: [[Spécial:AWCforum|Aller sur le forum...]]&lt;/blockquote&gt;

&lt;/noinclude&gt;

[[Template:DernièresNouvelles|Voir toutes les nouvelles]]</text>
      <sha1>byixbroljvrx4hbm5vfv53vupzgrbjm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:Documentation</title>
    <ns>10</ns>
    <id>1095</id>
    <revision>
      <id>4538</id>
      <timestamp>2012-10-26T06:23:30Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « &lt;includeonly&gt;&lt;!--  --&gt;&lt;div class=&quot;template-documentation&quot; style=&quot;clear:both;margin: 1em 0 0 0;border:1px solid #aaa;background:{{#if:{{{background|}}}|{{{background|}}}|#e... »</comment>
      <text xml:space="preserve" bytes="3974">&lt;includeonly&gt;&lt;!--

--&gt;&lt;div class=&quot;template-documentation&quot; style=&quot;clear:both;margin: 1em 0 0 0;border:1px solid #aaa;background:{{#if:{{{background|}}}|{{{background|}}}|#ecfcf4}};padding:1em&quot;&gt;&lt;!--

  --&gt;{{#if:{{{heading|1&lt;!-- visible par défaut --&gt;}}}|&lt;!--
    --&gt;&lt;div style=&quot;margin-bottom:1ex;border-bottom:1px solid #aaa;padding-bottom:3px&quot;&gt;&lt;!--
      --&gt;&lt;span id=&quot;doc_editlinks&quot; class=&quot;editsection plainlinks&quot;&gt;&lt;!--
        --&gt;&amp;#91;[&lt;!--
          --&gt;{{fullurl:{{{1|{{Documentation/docname}}}}}|action=edit&lt;!--
            --&gt;{{#ifexist:{{{1|{{Documentation/docname}}}}}||&lt;!--
              --&gt;&amp;preload=Modèle:Documentation/Preload&lt;!--
            --&gt;}}&lt;!--
          --&gt;}}&lt;!--
        --&gt; &lt;!--
          --&gt;{{#ifexist:{{{1|{{Documentation/docname}}}}}|&lt;!--
            --&gt;modifier|créer&lt;!--
          --&gt;}}&lt;!--
        --&gt;]&amp;#93;&lt;!--
        --&gt;{{#ifexist:{{{1|{{Documentation/docname}}}}}|&lt;!--
          --&gt;&amp;#32;&lt;!--
          --&gt;&amp;#91;{{Purger le cache|purger}}&amp;#93;&lt;!--
        --&gt;}}&lt;!--
      --&gt;&lt;/span&gt;&lt;!--
      --&gt; [[Fichier:Template-info.png|50px|alt=Documentation du modèle|link=]] &lt;!--
      --&gt;&lt;span style=&quot;font-weight:bold;font-size:125%&quot;&gt;{{{heading|Documentation}}}&lt;/span&gt;&lt;!--
    --&gt;&lt;/div&gt;&lt;!--
  --&gt;}}&lt;!--

  --&gt;&lt;div id=&quot;template_doc_page_transcluded&quot; class=&quot;dablink plainlinks&quot; style=&quot;margin-bottom:0.5em;padding-left:2em;font-style:italic&quot;&gt;&lt;!--
    --&gt;{{#ifeq:{{FULLPAGENAME}}|{{{1|{{Documentation/docname}}}}}|&lt;!--
      --&gt;Ceci est la page de documentation du [[Aide:Modèle|modèle]] dont le code est dans la page &lt;!--
      --&gt;'''[[{{#rel2abs:..}}]]''' &lt;!--
      --&gt;&lt;small style=&quot;font-style:normal&quot;&gt;(&lt;!--
        --&gt;[{{fullurl:{{#rel2abs:..}}|action=edit}} modifier]&lt;!--
        --&gt; {{!}} &lt;!--
        --&gt;[{{fullurl:{{#rel2abs:..}}|action=history}} historique]&lt;!--
      --&gt;)&lt;/small&gt;.&lt;br /&gt;&lt;!--
     --&gt;&lt;small&gt;Cette page n’est pas destinée à être visualisée directement. Les liens utilisant des [[Aide:Liste des modèles spéciaux#var|pseudo-variables]] peuvent paraître rompus (en rouge) ; ne pas les remplacer par des noms de pages codés en dur ni des [[Uniform Resource Locator|URL]].&lt;/small&gt;&lt;br /&gt;[[Catégorie:Documentation de modèle]]&lt;!--
    --&gt;|&lt;!--
      --&gt;{{#ifexist:{{{1|{{Documentation/docname}}}}}|&lt;!-- &quot;(modèle)/Documentation&quot; existe :
        --&gt;La documentation de ce [[Aide:Modèle|modèle]] est [[Aide:Inclusion|incluse]] depuis sa &lt;!--
        --&gt;'''[[{{{1|{{Documentation/docname}}}}}|sous-page de documentation]]''' &lt;!--
        --&gt;&lt;small style=&quot;font-style:normal&quot;&gt;(&lt;!--
          --&gt;[{{fullurl:{{{1|{{Documentation/docname}}}}}|action=edit}} modifier]&lt;!--
          --&gt; {{!}} &lt;!--
          --&gt;[{{fullurl:{{{1|{{Documentation/docname}}}}}|action=history}} historique]&lt;!--
        --&gt;)&lt;/small&gt;.&lt;br /&gt;&lt;!--
      --&gt;}}&lt;!--
    --&gt;}}&lt;!--

    --&gt;{{#ifexist:{{#rel2abs:{{{1|{{Documentation/docname}}}}}/../bac à sable}}|&lt;!-- &quot;(modèle)/bac à sable&quot; existe :
      --&gt;Il dispose d’une version &lt;!--
      --&gt;[[{{#rel2abs:{{{1|{{Documentation/docname}}}}}/../bac à sable}}|bac à sable]]&lt;!--
      --&gt; destinée à effectuer des modifications du code avant de les tester.&lt;!--
    --&gt;}}&lt;!--

    --&gt;{{#ifexist:{{#rel2abs:{{{1|{{Documentation/docname}}}}}/../test}}|&lt;!-- &quot;(modèle)/test&quot; existe :
      --&gt;Il dispose aussi d’une page de &lt;!--
      --&gt;[[{{#rel2abs:{{{1|{{Documentation/docname}}}}}/../test}}|test]]&lt;!--
      --&gt; permettant de tester diverses modifications apportées dans une version bac à sable.&lt;!--
    --&gt;}}&lt;!--
  --&gt;&lt;/div&gt;&lt;!--

  --&gt;{{#ifeq:{{FULLPAGENAME}}|{{{1|{{Documentation/docname}}}}}||&lt;!-- évite toute récursion
    --&gt;{{#ifexist:{{{1|{{Documentation/docname}}}}}|&lt;nowiki /&gt;
{{ {{{1|{{Documentation/docname}}}}}&lt;!--
--&gt;|{{{2|dummy}}}={{{3|}}}&lt;!--
--&gt;|{{{4|dummy}}}={{{5|}}}&lt;!--
--&gt;|{{{6|dummy}}}={{{7|}}}&lt;!--
--&gt;|{{{8|dummy}}}={{{9|}}}&lt;!--
--&gt;}}&lt;!--
    --&gt;&lt;div style=&quot;clear:both&quot; /&gt;&lt;!--
    --&gt;}}&lt;!--
  --&gt;}}&lt;!--

--&gt;&lt;/div&gt;&lt;!--

--&gt;&lt;/includeonly&gt;&lt;noinclude&gt;{{documentation}}&lt;/noinclude&gt;</text>
      <sha1>gu771x13wxfkx3uqmpy4fhyqhcpsu33</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:Documentation externe</title>
    <ns>10</ns>
    <id>261</id>
    <revision>
      <id>1146</id>
      <timestamp>2010-03-14T17:07:20Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « ; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Documentation_externe Documentation externe]  &amp;nbsp;• [[Documentation_Latex|Documentation Latex… »</comment>
      <text xml:space="preserve" bytes="299">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Documentation_externe Documentation externe]

&amp;nbsp;• [[Documentation_Latex|Documentation Latex]]
&amp;nbsp;• [[Article 2]]
&amp;nbsp;• [[Article 3]]

&lt;noinclude&gt;[[Catégorie:General/Index|Documentation externe]]&lt;/noinclude&gt;</text>
      <sha1>l4ogxiyh25l7f9fl4q2l9fex34mrlrz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:En</title>
    <ns>10</ns>
    <id>716</id>
    <revision>
      <id>3171</id>
      <timestamp>2011-08-03T14:11:00Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « {{Indication de langue|anglais|en}}&lt;noinclude&gt; &lt;/noinclude&gt; »</comment>
      <text xml:space="preserve" bytes="59">{{Indication de langue|anglais|en}}&lt;noinclude&gt;
&lt;/noinclude&gt;</text>
      <sha1>lll6b3cvrxrie7r4im10b8uyaxiv0bt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:Fr</title>
    <ns>10</ns>
    <id>714</id>
    <revision>
      <id>3160</id>
      <timestamp>2011-08-03T08:02:31Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « {{Indication de langue|français|fr}}&lt;noinclude&gt; &lt;/noinclude&gt; »</comment>
      <text xml:space="preserve" bytes="61">{{Indication de langue|français|fr}}&lt;noinclude&gt;
&lt;/noinclude&gt;</text>
      <sha1>fzdp4olytkp2b8l5jnyv71xnsbzd3t7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:General/Arborescence</title>
    <ns>10</ns>
    <id>181</id>
    <revision>
      <id>720</id>
      <timestamp>2010-02-02T05:45:28Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « &lt;div style=&quot;-moz-column-count:4; column-count:4; -webkit-column-count:4;&quot;&gt;&lt;categorytree&gt;General&lt;/categorytree&gt;&lt;/div&gt;&lt;noinclude&gt; [[Catégorie:Arborescence de catégories|Gener… »</comment>
      <text xml:space="preserve" bytes="227">&lt;div style=&quot;-moz-column-count:4; column-count:4; -webkit-column-count:4;&quot;&gt;&lt;categorytree&gt;General&lt;/categorytree&gt;&lt;/div&gt;&lt;noinclude&gt;
[[Catégorie:Arborescence de catégories|General]]
[[Catégorie:General|Arborescence]]
&lt;/noinclude&gt;</text>
      <sha1>98440hxosdnvmxe3zcrgwvsxazek42e</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1051</id>
      <parentid>720</parentid>
      <timestamp>2010-02-08T12:48:10Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="251">&lt;div style=&quot;-moz-column-count:4; column-count:4; -webkit-column-count:4;&quot;&gt;&lt;categorytree depth=&quot;5&quot; hideroot=&quot;on&quot;&gt;General&lt;/categorytree&gt;&lt;/div&gt;&lt;noinclude&gt;
[[Catégorie:Arborescence de catégories|General]]
[[Catégorie:General|Arborescence]]
&lt;/noinclude&gt;</text>
      <sha1>0ghx6djfbkv46u1e5l81mn0saz87162</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:General/Index</title>
    <ns>10</ns>
    <id>180</id>
    <revision>
      <id>719</id>
      <timestamp>2010-02-02T05:40:23Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « {| style=&quot;background:transparent;&quot; |-  | width=&quot;50%&quot; valign=&quot;top&quot; |  {| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot; &lt;!-----------… »</comment>
      <text xml:space="preserve" bytes="1089">{| style=&quot;background:transparent;&quot;
|- 
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Matériel          		|Hardware2.png}}
|- 
{{Index|/Installation           	|Installation.png}}
|-
{{Index|/Logiciels			|Logiciel.png}}
|- 
{{Index|/Gestionnaires de fenêtres      |Gestionnairedefenetres.png}}
|-
{{Index|/Kernel (Noyau)		        |Linux.jpg}}
|-
{{Index|/Paquets			|Package.jpg}}
|}
&lt;!----------------------------------------------&gt;
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Internet			|internet.png}}
|-
{{Index|/Programmation			|Programmation.png}}
|-
{{Index|/Jeux                    	|Jeux.png}}
|-
{{Index|/Sécurité informatique		|Securite.png}}
|-
{{Index|/Multimédia			|Multimedia.png}}
|- 
{{Index|/Commandes		        |Commandes.png}}
|}
|}&lt;noinclude&gt;

[[Catégorie:Portail:General/Index|*]]&lt;/noinclude&gt;</text>
      <sha1>kyzcz4gx8ntn1l8jfbw2njvj96z9tww</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>735</id>
      <parentid>719</parentid>
      <timestamp>2010-02-02T06:09:50Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1081">{| style=&quot;background:transparent;&quot;
|- 
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Matériel          		|Hardware2.png}}
|- 
{{Index|/Installation           	|Installation.png}}
|-
{{Index|/Logiciels			|Logiciel.png}}
|- 
{{Index|/Gestionnaires de fenêtres      |Gestionnairedefenetres.png}}
|-
{{Index|/Kernel (Noyau)		        |Linux.jpg}}
|-
{{Index|/Paquets			|Package.jpg}}
|}
&lt;!----------------------------------------------&gt;
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Internet			|internet.png}}
|-
{{Index|/Programmation			|Programmation.png}}
|-
{{Index|/Jeux                    	|Jeux.png}}
|-
{{Index|/Sécurité informatique		|Securite.png}}
|-
{{Index|/Multimédia			|Multimedia.png}}
|- 
{{Index|/Commandes		        |Commandes.png}}
|}
|}&lt;noinclude&gt;

[[Catégorie:General/Index|*]]&lt;/noinclude&gt;</text>
      <sha1>l36l5uv4emkk06u93ialk21l4qfoym8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>900</id>
      <parentid>735</parentid>
      <timestamp>2010-02-05T11:53:25Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="880">{| style=&quot;background:transparent;&quot;
|- 
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Installation           	|Installation.png}}
|-
{{Index|/Logiciels			|Logiciel.png}}
|- 
{{Index|/Matériel et Pilotes  		|Hardware2.png}}
|- 
{{Index|/Commandes		        |Commandes.png}}
|}
&lt;!----------------------------------------------&gt;
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Réseau et Wifi			|internet.png}}
|-
{{Index|/Noyau (Kernel)		        |Linux.jpg}}
|-
{{Index|/Programmation			|Programmation.png}}
|-
{{Index|/Sécurité       		|Securite.png}}
|-
|}&lt;noinclude&gt;

[[Catégorie:General/Index|*]]&lt;/noinclude&gt;</text>
      <sha1>gtnk3lyusiljr1ix5viqr4dr8v2eqag</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1144</id>
      <parentid>900</parentid>
      <timestamp>2010-03-14T15:13:36Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="879">{| style=&quot;background:transparent;&quot;
|- 
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Installation           	|Installation.png}}
|-
{{Index|/Logiciels			|Logiciel.png}}
|- 
{{Index|/Réseau et Wifi			|internet.png}}
|-
{{Index|/Noyau (Kernel)		        |Linux.jpg}}
|}
&lt;!----------------------------------------------&gt;
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Matériel et Pilotes  		|Hardware2.png}}
|-
{{Index|/Commandes		        |Commandes.png}}
|-
{{Index|/Programmation			|Programmation.png}}
|-
{{Index|/Sécurité       		|Securite.png}}
|}
&lt;noinclude&gt;
|}
[[Catégorie:General/Index|*]]&lt;/noinclude&gt;</text>
      <sha1>cq5f8zi1h8tlqk1yoh4v9dhuxzd7rf3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1149</id>
      <parentid>1144</parentid>
      <timestamp>2010-03-14T17:20:27Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="925">{| style=&quot;background:transparent;&quot;
|- 
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Installation           	|Installation.png}}
|-
{{Index|/Logiciels			|Logiciel.png}}
|- 
{{Index|/Réseau et Wifi			|internet.png}}
|-
{{Index|/Noyau (Kernel)		        |Linux.jpg}}
|}
&lt;!----------------------------------------------&gt;
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Matériel et Pilotes  		|Hardware2.png}}
|-
{{Index|/Commandes		        |Commandes.png}}
|-
{{Index|/Programmation			|Programmation.png}}
|-
{{Index|/Sécurité       		|Securite.png}}
|-
{{Index|/Documentation externe       		|}}
|}
&lt;noinclude&gt;
|}
[[Catégorie:General/Index|*]]&lt;/noinclude&gt;</text>
      <sha1>k1w020ku83q9duygqo7ij4963i893yd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1155</id>
      <parentid>1149</parentid>
      <timestamp>2010-03-15T13:55:11Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="932">{| style=&quot;background:transparent;&quot;
|- 
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Installation           	|Installation.png}}
|-
{{Index|/Logiciels			|Logiciel.png}}
|- 
{{Index|/Réseau et Wifi			|internet.png}}
|-
{{Index|/Noyau (Kernel)		        |Linux.jpg}}
|}
&lt;!----------------------------------------------&gt;
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Matériel et Pilotes  		|Hardware2.png}}
|-
{{Index|/Commandes		        |Commandes.png}}
|-
{{Index|/Programmation			|Programmation.png}}
|-
{{Index|/Sécurité       		|Securite.png}}
|-
{{Index|/Documentation externe       		|Doc.png}}
|}
&lt;noinclude&gt;
|}
[[Catégorie:General/Index|*]]&lt;/noinclude&gt;</text>
      <sha1>4mwxa7zud9h4wlw9cfo15zc5admfibe</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1176</id>
      <parentid>1155</parentid>
      <timestamp>2010-03-24T06:08:43Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="974">{| style=&quot;background:transparent;&quot;
|- 
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Installation           	|Installation.png}}
|-
{{Index|/Logiciels			|Logiciel.png}}
|- 
{{Index|/Réseau et Wifi			|internet.png}}
|-
{{Index|/Noyau (Kernel)		        |Linux.jpg}}
|-
{{Index|/Divers		        |Divers.jpg}}
|}
&lt;!----------------------------------------------&gt;
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Matériel et Pilotes  		|Hardware2.png}}
|-
{{Index|/Commandes		        |Commandes.png}}
|-
{{Index|/Programmation			|Programmation.png}}
|-
{{Index|/Sécurité       		|Securite.png}}
|-
{{Index|/Documentation externe       		|Doc.png}}
|}
&lt;noinclude&gt;
|}
[[Catégorie:General/Index|*]]&lt;/noinclude&gt;</text>
      <sha1>ntuyx8fcws8pl08z9nscr5z4qff3kn6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1179</id>
      <parentid>1176</parentid>
      <timestamp>2010-03-24T06:16:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="974">{| style=&quot;background:transparent;&quot;
|- 
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Installation           	|Installation.png}}
|-
{{Index|/Logiciels			|Logiciel.png}}
|- 
{{Index|/Réseau et Wifi			|internet.png}}
|-
{{Index|/Noyau (Kernel)		        |Linux.jpg}}
|-
{{Index|/Divers		        |Divers.png}}
|}
&lt;!----------------------------------------------&gt;
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Matériel et Pilotes  		|Hardware2.png}}
|-
{{Index|/Commandes		        |Commandes.png}}
|-
{{Index|/Programmation			|Programmation.png}}
|-
{{Index|/Sécurité       		|Securite.png}}
|-
{{Index|/Documentation externe       		|Doc.png}}
|}
&lt;noinclude&gt;
|}
[[Catégorie:General/Index|*]]&lt;/noinclude&gt;</text>
      <sha1>bk5gq30u2se6a5cgi2fgo1dn1ycdn00</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1580</id>
      <parentid>1179</parentid>
      <timestamp>2010-06-24T15:44:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1038">{| style=&quot;background:transparent;&quot;
|- 
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Installation           	|Installation.png}}
|-
{{Index|/Logiciels			|Logiciel.png}}
|- 
{{Index|/Réseau et Wifi			|internet.png}}
|-
{{Index|/Noyau (Kernel)		        |Linux.jpg}}
|-
{{Index|/Les Trucs et astuces             |T%26A.jpg}}
|-
|}
&lt;!----------------------------------------------&gt;
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Matériel et Pilotes  		|Hardware2.png}}
|-
{{Index|/Commandes		        |Commandes.png}}
|-
{{Index|/Programmation			|Programmation.png}}
|-
{{Index|/Sécurité       		|Securite.png}}
|-
{{Index|/Divers		        |Divers.jpg}}
|-
{{Index|/Documentation externe       		|Doc.png}}
|-
|}
&lt;noinclude&gt;
|}
[[Catégorie:General/Index|*]]&lt;/noinclude&gt;</text>
      <sha1>cmuvmo2b4bpgzhpi1p008dh3z1iig3n</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2639</id>
      <parentid>1580</parentid>
      <timestamp>2010-12-30T14:34:17Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="980">{| style=&quot;background:transparent;&quot;
|- 
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Installation           	|Installation.png}}
|-
{{Index|/Logiciels			|Logiciel.png}}
|- 
{{Index|/Réseau et Wifi			|internet.png}}
|-
{{Index|/Noyau (Kernel)		        |Linux.jpg}}
|-
{{Index|/Les Trucs et astuces             |T%26A.jpg}}
|-
|}
&lt;!----------------------------------------------&gt;
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Matériel et Pilotes  		|Hardware2.png}}
|-
{{Index|/Commandes		        |Commandes.png}}
|-
{{Index|/Programmation			|Programmation.png}}
|-
{{Index|/Sécurité       		|Securite.png}}
|-
{{Index|/Divers		        |Divers.jpg}}
|-
{{Index|/Documentation externe       		|Doc.png}}
|-
|}</text>
      <sha1>a9ctev70eba6uf97r762rlgod3h2v7w</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3196</id>
      <parentid>2639</parentid>
      <timestamp>2011-08-06T13:09:06Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="894">{| style=&quot;background:transparent;&quot;
|- 
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Installation|Installation.png}}
|-
{{Index|/Logiciels|Logiciel.png}}
|- 
{{Index|/Réseau et Wifi|internet.png}}
|-
{{Index|/Noyau (Kernel)|Linux.jpg}}
|-
{{Index|/Les Trucs et astuces|T%26A.jpg}}
|-
|}
&lt;!----------------------------------------------&gt;
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Matériel et Pilotes|Hardware2.png}}
|-
{{Index|/Commandes|Commandes.png}}
|-
{{Index|/Programmation|Programmation.png}}
|-
{{Index|/Sécurité|Securite.png}}
|-
{{Index|/Divers|Divers.jpg}}
|-
{{Index|/Documentation externe|Doc.png}}
|-
|}</text>
      <sha1>5zzlxypf0dizfmo9su68eck0z0uljlw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3204</id>
      <parentid>3196</parentid>
      <timestamp>2011-08-06T19:59:48Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="892">{| style=&quot;background:transparent;&quot;
|- 
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Installation|Installation.png}}
|-
{{Index|/Logiciels|Logiciel.png}}
|- 
{{Index|/Réseau et Wifi|internet.png}}
|-
{{Index|/Noyau (Kernel)|Linux.jpg}}
|-
{{Index|/Les Trucs et astuces|T%26A.jpg}}
|-
|}
&lt;!----------------------------------------------&gt;
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Matériel et Pilotes|Hardware2.png}}
|-
{{Index|/Commandes|Commandes.png}}
|-
{{Index|/Programmation|Programmation.png}}
|-
{{Index|/Securite|Securite.png}}
|-
{{Index|/Divers|Divers.jpg}}
|-
{{Index|/Documentation externe|Doc.png}}
|-
|}</text>
      <sha1>jphhkj336qc87xhyz6ztft36ixkqc5g</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3207</id>
      <parentid>3204</parentid>
      <timestamp>2011-08-06T20:09:19Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="890">{| style=&quot;background:transparent;&quot;
|- 
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Installation|Installation.png}}
|-
{{Index|/Logiciels|Logiciel.png}}
|- 
{{Index|/Reseau et Wifi|internet.png}}
|-
{{Index|/Noyau (Kernel)|Linux.jpg}}
|-
{{Index|/Les Trucs et astuces|T%26A.jpg}}
|-
|}
&lt;!----------------------------------------------&gt;
| width=&quot;50%&quot; valign=&quot;top&quot; | 
{| width=&quot;100%&quot;  border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot; style=&quot;background:transparent;&quot;
&lt;!----------------------------------------------&gt;
{{Index|/Materiel et Pilotes|Hardware2.png}}
|-
{{Index|/Commandes|Commandes.png}}
|-
{{Index|/Programmation|Programmation.png}}
|-
{{Index|/Securite|Securite.png}}
|-
{{Index|/Divers|Divers.jpg}}
|-
{{Index|/Documentation externe|Doc.png}}
|-
|}</text>
      <sha1>7pcqbsi0zew18pc31omz86mnko6wzm8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:General/Index/Commandes</title>
    <ns>10</ns>
    <id>182</id>
    <revision>
      <id>721</id>
      <timestamp>2010-02-02T05:48:38Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « ; [[Commandes]] [[Arret machine|Arret machine]]&amp;nbsp;•  [[Commandes informations|Commandes informations]]&amp;nbsp;•  [[Gestion des fichiers|Gestion des fichiers]]&amp;nbsp;•  … »</comment>
      <text xml:space="preserve" bytes="369">; [[Commandes]]
[[Arret machine|Arret machine]]&amp;nbsp;• 
[[Commandes informations|Commandes informations]]&amp;nbsp;• 
[[Gestion des fichiers|Gestion des fichiers]]&amp;nbsp;• 
[[Utilisation de clefs et raccourcis ssh]]&amp;nbsp;• 
[[Gestion des repertoires|Gestion des repertoires]]&amp;nbsp;•
[[Fstab]]&amp;nbsp;•

&lt;noinclude&gt;[[Catégorie:General/Index|Commandes]]&lt;/noinclude&gt;</text>
      <sha1>m1wm0ozow3g2a69fbzh6e6647jiafrq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>916</id>
      <parentid>721</parentid>
      <timestamp>2010-02-05T19:01:12Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="371">; [[Commandes]]
[[Arret machine|Arret machine]]&amp;nbsp;• 
[[Commandes d'informations|Commandes informations]]&amp;nbsp;• 
[[Gestion des fichiers|Gestion des fichiers]]&amp;nbsp;• 
[[Utilisation de clefs et raccourcis ssh]]&amp;nbsp;• 
[[Gestion des repertoires|Gestion des repertoires]]&amp;nbsp;•
[[Fstab]]&amp;nbsp;•

&lt;noinclude&gt;[[Catégorie:General/Index|Commandes]]&lt;/noinclude&gt;</text>
      <sha1>jwex7pkyphyluvbtp8hofetstpgxkqy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>918</id>
      <parentid>916</parentid>
      <timestamp>2010-02-05T19:09:07Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <minor/>
      <comment>rectification de ma faute</comment>
      <text xml:space="preserve" bytes="371">; [[Commandes]]
[[Arret machine|Arret machine]]&amp;nbsp;• 
[[Commandes informations|Commandes d'informations]]&amp;nbsp;• 
[[Gestion des fichiers|Gestion des fichiers]]&amp;nbsp;• 
[[Utilisation de clefs et raccourcis ssh]]&amp;nbsp;• 
[[Gestion des repertoires|Gestion des repertoires]]&amp;nbsp;•
[[Fstab]]&amp;nbsp;•

&lt;noinclude&gt;[[Catégorie:General/Index|Commandes]]&lt;/noinclude&gt;</text>
      <sha1>epge1qbfcs5phqsrmh417xnevchqkob</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>946</id>
      <parentid>918</parentid>
      <timestamp>2010-02-07T05:38:27Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="454">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Commandes Commandes]

[[Arret machine|Arret machine]]&amp;nbsp;• 
[[Commandes informations|Commandes d'informations]]&amp;nbsp;• 
[[Gestion des fichiers|Gestion des fichiers]]&amp;nbsp;• 
[[Utilisation de clefs et raccourcis ssh]]&amp;nbsp;• 
[[Gestion des repertoires|Gestion des repertoires]]&amp;nbsp;•
[[Fstab]]&amp;nbsp;•

&lt;noinclude&gt;[[Catégorie:General/Index|Commandes]]&lt;/noinclude&gt;</text>
      <sha1>mm3e9imnpjaxm0umjt3nj1mqhpq38ln</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>956</id>
      <parentid>946</parentid>
      <timestamp>2010-02-07T06:00:18Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="533">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Commandes Commandes]

[[Arret machine|Arret machine]]&amp;nbsp;• 
[[Commandes informations|Commandes d'informations]]&amp;nbsp;• 
[[Gestion des fichiers|Gestion des fichiers]]&amp;nbsp;• 
[[Utilisation de clefs et raccourcis ssh]]&amp;nbsp;• 
[[Gestion des repertoires|Gestion des repertoires]]&amp;nbsp;•
[[Fstab]]&amp;nbsp;•
[[Trucs_et_astuces_pour_la_console|Trucs et astuces pour la console]]&amp;nbsp;•

&lt;noinclude&gt;[[Catégorie:General/Index|Commandes]]&lt;/noinclude&gt;</text>
      <sha1>n79i4fi13ywgaostb7wiry9hli1jmae</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>960</id>
      <parentid>956</parentid>
      <timestamp>2010-02-07T06:36:55Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="614">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Commandes Commandes]

[[Arret machine|Arret machine]]&amp;nbsp;• 
[[Commandes informations|Commandes d'informations]]&amp;nbsp;• 
[[Gestion des fichiers|Gestion des fichiers]]&amp;nbsp;• 
[[Utilisation de clefs et raccourcis ssh]]&amp;nbsp;• 
[[Gestion des repertoires|Gestion des repertoires]]&amp;nbsp;•
[[Fstab]]&amp;nbsp;•
[[Trucs_et_astuces_pour_la_console|Trucs et astuces pour la console]]&amp;nbsp;•
[[Commandes_utilisateurs_et_groupes|Commandes utilisateurs et groupes]]&amp;nbsp;•

&lt;noinclude&gt;[[Catégorie:General/Index|Commandes]]&lt;/noinclude&gt;</text>
      <sha1>cnyupelksyp4679pjqi4g8og9y5fmck</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1032</id>
      <parentid>960</parentid>
      <timestamp>2010-02-08T04:21:00Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="618">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Commandes Commandes]

&amp;nbsp;• [[Arret machine|Arret machine]]
&amp;nbsp;• [[Commandes informations|Commandes d'informations]]
&amp;nbsp;• [[Gestion des fichiers|Gestion des fichiers]]
&amp;nbsp;• [[Utilisation de clefs et raccourcis ssh]]
&amp;nbsp;• [[Gestion des repertoires|Gestion des repertoires]]
&amp;nbsp;• [[Fstab]]
&amp;nbsp;• [[Trucs_et_astuces_pour_la_console|Trucs et astuces pour la console]]
&amp;nbsp;• [[Commandes_utilisateurs_et_groupes|Commandes utilisateurs et groupes]]

&lt;noinclude&gt;[[Catégorie:General/Index|Commandes]]&lt;/noinclude&gt;</text>
      <sha1>tbqgkwpmyvmv2fcvh6dbl2d0ep7a3r1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1084</id>
      <parentid>1032</parentid>
      <timestamp>2010-02-11T08:45:41Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="728">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Commandes Commandes]

:*[[:Catégorie:Commandes de base|Commandes de base]]
::•&amp;nbsp;[[Trucs_et_astuces_pour_la_console|Trucs et astuces pour la console]] •&amp;nbsp;[[Arret machine|Arret machine]] •&amp;nbsp;[[Commandes informations|Commandes d'informations]] •&amp;nbsp;[[Gestion des fichiers|Gestion des fichiers]] •&amp;nbsp;[[Gestion des repertoires|Gestion des repertoires]] •&amp;nbsp;[[Commandes_utilisateurs_et_groupes|Commandes utilisateurs et groupes]]

:*[[:Catégorie:Commandes plus complexes|Commandes plus complexes]]
::•&amp;nbsp;[[Utilisation de clefs et raccourcis ssh]] [[Fstab]]

&lt;noinclude&gt;[[Catégorie:General/Index|Commandes]]&lt;/noinclude&gt;</text>
      <sha1>1thrrng7iervk37o5nvhvlu6frke8vm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1452</id>
      <parentid>1084</parentid>
      <timestamp>2010-04-25T05:49:13Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="792">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Commandes Commandes]

:*[[:Catégorie:Commandes de base|Commandes de base]]
::•&amp;nbsp;[[Trucs_et_astuces_pour_la_console|Trucs et astuces pour la console]] •&amp;nbsp;[[Arret machine|Arret machine]] •&amp;nbsp;[[Commandes informations|Commandes d'informations]] •&amp;nbsp;[[Gestion des fichiers|Gestion des fichiers]] •&amp;nbsp;[[Gestion des repertoires|Gestion des repertoires]] •&amp;nbsp;[[Commandes_utilisateurs_et_groupes|Commandes utilisateurs et groupes]] •&amp;nbsp;[[Root-su-sudo|Root-su-sudo : Seul maître à bord]]



:*[[:Catégorie:Commandes plus complexes|Commandes plus complexes]]
::•&amp;nbsp;[[Utilisation de clefs et raccourcis ssh]] [[Fstab]]

&lt;noinclude&gt;[[Catégorie:General/Index|Commandes]]&lt;/noinclude&gt;</text>
      <sha1>cie4ah8ywcqw7bnfvnoqymj91noynp5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1456</id>
      <parentid>1452</parentid>
      <timestamp>2010-04-27T23:30:45Z</timestamp>
      <contributor>
        <username>Syam</username>
        <id>48</id>
      </contributor>
      <minor/>
      <comment>ajout lien diff/patch dans &quot;commandes plus complexes&quot;</comment>
      <text xml:space="preserve" bytes="837">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Commandes Commandes]

:*[[:Catégorie:Commandes de base|Commandes de base]]
::•&amp;nbsp;[[Trucs_et_astuces_pour_la_console|Trucs et astuces pour la console]] •&amp;nbsp;[[Arret machine|Arret machine]] •&amp;nbsp;[[Commandes informations|Commandes d'informations]] •&amp;nbsp;[[Gestion des fichiers|Gestion des fichiers]] •&amp;nbsp;[[Gestion des repertoires|Gestion des repertoires]] •&amp;nbsp;[[Commandes_utilisateurs_et_groupes|Commandes utilisateurs et groupes]] •&amp;nbsp;[[Root-su-sudo|Root-su-sudo : Seul maître à bord]]



:*[[:Catégorie:Commandes plus complexes|Commandes plus complexes]]
::•&amp;nbsp;[[Utilisation de clefs et raccourcis ssh]] •&amp;nbsp;[[Utiliser diff et patch]] •&amp;nbsp;[[Fstab]]

&lt;noinclude&gt;[[Catégorie:General/Index|Commandes]]&lt;/noinclude&gt;</text>
      <sha1>0pymq5zprcu17n00ccbc0djol5tdsmf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1625</id>
      <parentid>1456</parentid>
      <timestamp>2010-07-05T08:37:14Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="881">#REDIRECT [[isalo:General/Index/Commandes]]
; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Commandes Commandes]

:*[[:Catégorie:Commandes de base|Commandes de base]]
::•&amp;nbsp;[[Trucs_et_astuces_pour_la_console|Trucs et astuces pour la console]] •&amp;nbsp;[[Arret machine|Arret machine]] •&amp;nbsp;[[Commandes informations|Commandes d'informations]] •&amp;nbsp;[[Gestion des fichiers|Gestion des fichiers]] •&amp;nbsp;[[Gestion des repertoires|Gestion des repertoires]] •&amp;nbsp;[[Commandes_utilisateurs_et_groupes|Commandes utilisateurs et groupes]] •&amp;nbsp;[[Root-su-sudo|Root-su-sudo : Seul maître à bord]]



:*[[:Catégorie:Commandes plus complexes|Commandes plus complexes]]
::•&amp;nbsp;[[Utilisation de clefs et raccourcis ssh]] •&amp;nbsp;[[Utiliser diff et patch]] •&amp;nbsp;[[Fstab]]

&lt;noinclude&gt;[[Catégorie:General/Index|Commandes]]&lt;/noinclude&gt;</text>
      <sha1>fykol0rqmhfu081a2bid5oysfcinhkf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1668</id>
      <parentid>1625</parentid>
      <timestamp>2010-07-06T09:21:03Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Annulation des modifications 1625 de [[Special:Contributions/Lol|Lol]] ([[User talk:Lol|discussion]])</comment>
      <text xml:space="preserve" bytes="837">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Commandes Commandes]

:*[[:Catégorie:Commandes de base|Commandes de base]]
::•&amp;nbsp;[[Trucs_et_astuces_pour_la_console|Trucs et astuces pour la console]] •&amp;nbsp;[[Arret machine|Arret machine]] •&amp;nbsp;[[Commandes informations|Commandes d'informations]] •&amp;nbsp;[[Gestion des fichiers|Gestion des fichiers]] •&amp;nbsp;[[Gestion des repertoires|Gestion des repertoires]] •&amp;nbsp;[[Commandes_utilisateurs_et_groupes|Commandes utilisateurs et groupes]] •&amp;nbsp;[[Root-su-sudo|Root-su-sudo : Seul maître à bord]]



:*[[:Catégorie:Commandes plus complexes|Commandes plus complexes]]
::•&amp;nbsp;[[Utilisation de clefs et raccourcis ssh]] •&amp;nbsp;[[Utiliser diff et patch]] •&amp;nbsp;[[Fstab]]

&lt;noinclude&gt;[[Catégorie:General/Index|Commandes]]&lt;/noinclude&gt;</text>
      <sha1>0pymq5zprcu17n00ccbc0djol5tdsmf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1685</id>
      <parentid>1668</parentid>
      <timestamp>2010-07-26T08:28:45Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="819">; [[wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Commandes|Commandes]]

:*[[:Catégorie:Commandes de base|Commandes de base]]
::•&amp;nbsp;[[Trucs_et_astuces_pour_la_console|Trucs et astuces pour la console]] •&amp;nbsp;[[Arret machine|Arret machine]] •&amp;nbsp;[[Commandes informations|Commandes d'informations]] •&amp;nbsp;[[Gestion des fichiers|Gestion des fichiers]] •&amp;nbsp;[[Gestion des repertoires|Gestion des repertoires]] •&amp;nbsp;[[Commandes_utilisateurs_et_groupes|Commandes utilisateurs et groupes]] •&amp;nbsp;[[Root-su-sudo|Root-su-sudo : Seul maître à bord]]



:*[[:Catégorie:Commandes plus complexes|Commandes plus complexes]]
::•&amp;nbsp;[[Utilisation de clefs et raccourcis ssh]] •&amp;nbsp;[[Utiliser diff et patch]] •&amp;nbsp;[[Fstab]]

&lt;noinclude&gt;[[Catégorie:General/Index|Commandes]]&lt;/noinclude&gt;</text>
      <sha1>jn114j01dwc8jpt1cd481zyynwtkt9t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1738</id>
      <parentid>1685</parentid>
      <timestamp>2010-07-27T18:54:41Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="762">&lt;u&gt;'''Commandes'''&lt;/u&gt;

:*[[:Catégorie:Commandes de base|Commandes de base]]
::•&amp;nbsp;[[Trucs_et_astuces_pour_la_console|Trucs et astuces pour la console]] •&amp;nbsp;[[Arret machine|Arret machine]] •&amp;nbsp;[[Commandes informations|Commandes d'informations]] •&amp;nbsp;[[Gestion des fichiers|Gestion des fichiers]] •&amp;nbsp;[[Gestion des repertoires|Gestion des repertoires]] •&amp;nbsp;[[Commandes_utilisateurs_et_groupes|Commandes utilisateurs et groupes]] •&amp;nbsp;[[Root-su-sudo|Root-su-sudo : Seul maître à bord]]



:*[[:Catégorie:Commandes plus complexes|Commandes plus complexes]]
::•&amp;nbsp;[[Utilisation de clefs et raccourcis ssh]] •&amp;nbsp;[[Utiliser diff et patch]] •&amp;nbsp;[[Fstab]]

&lt;noinclude&gt;[[Catégorie:General/Index|Commandes]]&lt;/noinclude&gt;</text>
      <sha1>do25xei6vdsfogvx1pnff6gwve2zhgc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2195</id>
      <parentid>1738</parentid>
      <timestamp>2010-10-08T08:13:40Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="842">&lt;u&gt;'''Commandes'''&lt;/u&gt;

:*[[:Catégorie:Commandes de base|Commandes de base]]
::•&amp;nbsp;[[Trucs_et_astuces_pour_la_console|Trucs et astuces pour la console]] •&amp;nbsp;[[Arret machine|Arret machine]] •&amp;nbsp;[[Commandes informations|Commandes d'informations]] •&amp;nbsp;[[Gestion des fichiers|Gestion des fichiers]] •&amp;nbsp;[[Gestion des repertoires|Gestion des repertoires]] •&amp;nbsp;[[Commandes_utilisateurs_et_groupes|Commandes utilisateurs et groupes]] •&amp;nbsp;[[Root-su-sudo|Root-su-sudo : Seul maître à bord]] •&amp;nbsp;[[Gestion_des_archives_sous_Debian|La gestion des archives sous Debian]]

:*[[:Catégorie:Commandes plus complexes|Commandes plus complexes]]
::•&amp;nbsp;[[Utilisation de clefs et raccourcis ssh]] •&amp;nbsp;[[Utiliser diff et patch]] •&amp;nbsp;[[Fstab]]

&lt;noinclude&gt;[[Catégorie:General/Index|Commandes]]&lt;/noinclude&gt;</text>
      <sha1>et34vt1r8twr6dlv748rnqtvf2scm2s</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2742</id>
      <parentid>2195</parentid>
      <timestamp>2011-03-08T13:23:54Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* dd */</comment>
      <text xml:space="preserve" bytes="885">&lt;u&gt;'''Commandes'''&lt;/u&gt;

:*[[:Catégorie:Commandes de base|Commandes de base]]
::•&amp;nbsp;[[Trucs_et_astuces_pour_la_console|Trucs et astuces pour la console]] •&amp;nbsp;[[Arret machine|Arret machine]] •&amp;nbsp;[[Commandes informations|Commandes d'informations]] •&amp;nbsp;[[Gestion des fichiers|Gestion des fichiers]] •&amp;nbsp;[[Gestion des repertoires|Gestion des repertoires]] •&amp;nbsp;[[Commandes_utilisateurs_et_groupes|Commandes utilisateurs et groupes]] •&amp;nbsp;[[Root-su-sudo|Root-su-sudo : Seul maître à bord]] •&amp;nbsp;[[Gestion_des_archives_sous_Debian|La gestion des archives sous Debian]] •&amp;nbsp;[[La_commande_dd|La commande dd]]

:*[[:Catégorie:Commandes plus complexes|Commandes plus complexes]]
::•&amp;nbsp;[[Utilisation de clefs et raccourcis ssh]] •&amp;nbsp;[[Utiliser diff et patch]] •&amp;nbsp;[[Fstab]]

&lt;noinclude&gt;[[Catégorie:General/Index|Commandes]]&lt;/noinclude&gt;</text>
      <sha1>stfvzfb846yrkoc8f91ondg5epqvsej</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3894</id>
      <parentid>2742</parentid>
      <timestamp>2012-03-06T07:54:05Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="1111">&lt;u&gt;'''Commandes'''&lt;/u&gt;

:*[[:Catégorie:Commandes de base|Commandes de base]]
::•&amp;nbsp;[[Trucs_et_astuces_pour_la_console|Trucs et astuces pour la console]] •&amp;nbsp;[[Arret machine|Arret machine]] •&amp;nbsp;[[Commandes informations|Commandes d'informations]] •&amp;nbsp;[[Gestion des fichiers|Gestion des fichiers]] •&amp;nbsp;[[Gestion des repertoires|Gestion des repertoires]] •&amp;nbsp;[[Commandes_utilisateurs_et_groupes|Commandes utilisateurs et groupes]] •&amp;nbsp;[[Root-su-sudo|Root-su-sudo : Seul maître à bord]] •&amp;nbsp;[[Gestion_des_archives_sous_Debian|La gestion des archives sous Debian]] •&amp;nbsp;[[La_commande_dd|La commande dd]] •&amp;nbsp;[[Apropos|Apropos]] •&amp;nbsp;[[Executer_commandes_en_cas_d%27échec_de_la_precedente|Executer une commande en cas d'échec de la precedente]] •&amp;nbsp;[[Commande_de_base_imprimante|Les Commandes de base: imprimante]]

:*[[:Catégorie:Commandes plus complexes|Commandes plus complexes]]
::•&amp;nbsp;[[Utilisation de clefs et raccourcis ssh]] •&amp;nbsp;[[Utiliser diff et patch]] •&amp;nbsp;[[Fstab]]

&lt;noinclude&gt;[[Catégorie:General/Index|Commandes]]&lt;/noinclude&gt;</text>
      <sha1>a7w7w9rsrbnuybrb7hf4jvnw4od35pk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4501</id>
      <parentid>3894</parentid>
      <timestamp>2012-10-12T05:50:51Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1166">&lt;u&gt;'''Commandes'''&lt;/u&gt;

:*[[:Catégorie:Commandes de base|Commandes de base]]
::•&amp;nbsp;[[Trucs_et_astuces_pour_la_console|Trucs et astuces pour la console]] •&amp;nbsp;[[Arret machine|Arret machine]] •&amp;nbsp;[[Commandes informations|Commandes d'informations]] •&amp;nbsp;[[Gestion des fichiers|Gestion des fichiers]] •&amp;nbsp;[[Gestion des repertoires|Gestion des repertoires]] •&amp;nbsp;[[Commandes_utilisateurs_et_groupes|Commandes utilisateurs et groupes]] •&amp;nbsp;[[Root-su-sudo|Root-su-sudo : Seul maître à bord]] •&amp;nbsp;[[Gestion_des_archives_sous_Debian|La gestion des archives sous Debian]] •&amp;nbsp;[[La_commande_dd|La commande dd]] •&amp;nbsp;[[Apropos|Apropos]] •&amp;nbsp;[[Executer_commandes_en_cas_d%27échec_de_la_precedente|Executer une commande en cas d'échec de la precedente]] •&amp;nbsp;[[Commande_de_base_imprimante|Les Commandes de base: imprimante]] •&amp;nbsp;[[Eteindre_une_machine|La commande shutdown]]

:*[[:Catégorie:Commandes plus complexes|Commandes plus complexes]]
::•&amp;nbsp;[[Utilisation de clefs et raccourcis ssh]] •&amp;nbsp;[[Utiliser diff et patch]] •&amp;nbsp;[[Fstab]]

&lt;noinclude&gt;[[Catégorie:General/Index|Commandes]]&lt;/noinclude&gt;</text>
      <sha1>kibbbwteauo7q46fomq9xi469wh3ka4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4502</id>
      <parentid>4501</parentid>
      <timestamp>2012-10-12T05:52:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1217">&lt;u&gt;'''Commandes'''&lt;/u&gt;

:*[[:Catégorie:Commandes de base|Commandes de base]]
::•&amp;nbsp;[[Trucs_et_astuces_pour_la_console|Trucs et astuces pour la console]] •&amp;nbsp;[[Arret machine|Arret machine]] •&amp;nbsp;[[Commandes informations|Commandes d'informations]] •&amp;nbsp;[[Gestion des fichiers|Gestion des fichiers]] •&amp;nbsp;[[Gestion des repertoires|Gestion des repertoires]] •&amp;nbsp;[[Commandes_utilisateurs_et_groupes|Commandes utilisateurs et groupes]] •&amp;nbsp;[[Root-su-sudo|Root-su-sudo : Seul maître à bord]] •&amp;nbsp;[[Gestion_des_archives_sous_Debian|La gestion des archives sous Debian]] •&amp;nbsp;[[La_commande_dd|La commande dd]] •&amp;nbsp;[[Apropos|Apropos]] •&amp;nbsp;[[Executer_commandes_en_cas_d%27échec_de_la_precedente|Executer une commande en cas d'échec de la precedente]] •&amp;nbsp;[[Commande_de_base_imprimante|Les Commandes de base: imprimante]] •&amp;nbsp;[[Eteindre_une_machine|La commande shutdown]] •&amp;nbsp;[[De_qwerty_@_azerty|De qwerty @ azerty]]

:*[[:Catégorie:Commandes plus complexes|Commandes plus complexes]]
::•&amp;nbsp;[[Utilisation de clefs et raccourcis ssh]] •&amp;nbsp;[[Utiliser diff et patch]] •&amp;nbsp;[[Fstab]]

&lt;noinclude&gt;[[Catégorie:General/Index|Commandes]]&lt;/noinclude&gt;</text>
      <sha1>azxcgz4yuomwln0vlwkz9gnshs4oqxm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4570</id>
      <parentid>4502</parentid>
      <timestamp>2012-10-28T11:47:21Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <text xml:space="preserve" bytes="1278">&lt;u&gt;'''Commandes'''&lt;/u&gt;

:*[[:Catégorie:Commandes de base|Commandes de base]]&lt;br&gt; 
::•&amp;nbsp;[[Trucs_et_astuces_pour_la_console|Trucs et astuces pour la console]]&lt;br&gt;  
::•&amp;nbsp;[[Arret machine|Arret machine]]&lt;br&gt;  
::•&amp;nbsp;[[Commandes informations|Commandes d'informations]]&lt;br&gt;  
::•&amp;nbsp;[[Gestion des fichiers|Gestion des fichiers]]&lt;br&gt;  
::•&amp;nbsp;[[Gestion des repertoires|Gestion des repertoires]]&lt;br&gt;  
::•&amp;nbsp;[[Commandes_utilisateurs_et_groupes|Commandes utilisateurs et groupes]]&lt;br&gt;  
::•&amp;nbsp;[[Root-su-sudo|Root-su-sudo : Seul maître à bord]]&lt;br&gt;  
::•&amp;nbsp;[[Gestion_des_archives_sous_Debian|La gestion des archives sous Debian]] •&amp;nbsp;[[La_commande_dd|La commande dd]] •&amp;nbsp;[[Apropos|Apropos]] •&amp;nbsp;[[Executer_commandes_en_cas_d%27échec_de_la_precedente|Executer une commande en cas d'échec de la precedente]] •&amp;nbsp;[[Commande_de_base_imprimante|Les Commandes de base: imprimante]] •&amp;nbsp;[[Eteindre_une_machine|La commande shutdown]] •&amp;nbsp;[[De_qwerty_@_azerty|De qwerty @ azerty]]

:*[[:Catégorie:Commandes plus complexes|Commandes plus complexes]]
::•&amp;nbsp;[[Utilisation de clefs et raccourcis ssh]] •&amp;nbsp;[[Utiliser diff et patch]] •&amp;nbsp;[[Fstab]]

&lt;noinclude&gt;[[Catégorie:General/Index|Commandes]]&lt;/noinclude&gt;</text>
      <sha1>drqtiqoaa1a9lcb9bp4ahl5abcsenyn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:General/Index/Divers</title>
    <ns>10</ns>
    <id>271</id>
    <revision>
      <id>1174</id>
      <timestamp>2010-03-24T06:00:13Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « ; [http://beronono.com/wiki-debian/index.php?title=Modèle:General/Index/Divers Divers]  &amp;nbsp;• [[Article 2]] &amp;nbsp;• [[Article 2]] &amp;nbsp;• [[Article 3]]  &lt;noinclude&gt;[… »</comment>
      <text xml:space="preserve" bytes="220">; [http://beronono.com/wiki-debian/index.php?title=Modèle:General/Index/Divers Divers]

&amp;nbsp;• [[Article 2]]
&amp;nbsp;• [[Article 2]]
&amp;nbsp;• [[Article 3]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>k6tv7dew82u0g4libfemeb0s00goetg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1177</id>
      <parentid>1174</parentid>
      <timestamp>2010-03-24T06:10:43Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="252">; [http://beronono.com/wiki-debian/index.php?title=Modèle:General/Index/Divers Divers]

&amp;nbsp;• [[CheatcubeDebian| Le Cube &quot;astuces&quot; Debian]]
&amp;nbsp;• [[Article 2]]
&amp;nbsp;• [[Article 3]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>hzt01bd0ofer21cmrgxohlzpfr6gubv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1259</id>
      <parentid>1177</parentid>
      <timestamp>2010-04-02T09:08:09Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="262">; [http://beronono.com/wiki-debian/index.php?title=Modèle:General/Index/Divers Divers]

&amp;nbsp;• [[Glossaire|Glossaire]]
&amp;nbsp;• [[CheatcubeDebian| Le Cube &quot;astuces&quot; Debian]]
&amp;nbsp;• [[Article 3]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>ahpufg7qw27d395vskfierxuwl1w24y</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1424</id>
      <parentid>1259</parentid>
      <timestamp>2010-04-19T18:27:50Z</timestamp>
      <contributor>
        <username>Spatule</username>
        <id>47</id>
      </contributor>
      <text xml:space="preserve" bytes="311">; [http://beronono.com/wiki-debian/index.php?title=Modèle:General/Index/Divers Divers]

&amp;nbsp;• [[Glossaire|Glossaire]]
&amp;nbsp;• [[CheatcubeDebian| Le Cube &quot;astuces&quot; Debian]]
&amp;nbsp;• [[Cowsay_fortune| Cowsay et fortunes]]
&amp;nbsp;• [[Article 3]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>cmejlkh0drlhnxg5iy391ysdrb6kgpn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1428</id>
      <parentid>1424</parentid>
      <timestamp>2010-04-19T18:31:24Z</timestamp>
      <contributor>
        <username>Spatule</username>
        <id>47</id>
      </contributor>
      <text xml:space="preserve" bytes="315">; [http://beronono.com/wiki-debian/index.php?title=Modèle:General/Index/Divers Divers]

&amp;nbsp;• [[Glossaire|Glossaire]]
&amp;nbsp;• [[CheatcubeDebian| Le Cube &quot;astuces&quot; Debian]]
&amp;nbsp;• [[Cowsay_et_fortunes| Cowsay et fortunes]]
&amp;nbsp;• [[Article 3]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>331xdqie3mm5y3hhou9gck6yd72krhm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1515</id>
      <parentid>1428</parentid>
      <timestamp>2010-05-17T11:25:56Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="291">; [http://beronono.com/wiki-debian/index.php?title=Modèle:General/Index/Divers Divers]

&amp;nbsp;• [[Glossaire|Glossaire]]
&amp;nbsp;• [[CheatcubeDebian| Le Cube &quot;astuces&quot; Debian]]
&amp;nbsp;• [[Cowsay_et_fortunes| Cowsay et fortunes]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>f67144xvgeiuj5lhadpuwiqfp5f237s</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1626</id>
      <parentid>1515</parentid>
      <timestamp>2010-07-05T08:37:26Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="332">#REDIRECT [[isalo:General/Index/Divers]]
; [http://beronono.com/wiki-debian/index.php?title=Modèle:General/Index/Divers Divers]

&amp;nbsp;• [[Glossaire|Glossaire]]
&amp;nbsp;• [[CheatcubeDebian| Le Cube &quot;astuces&quot; Debian]]
&amp;nbsp;• [[Cowsay_et_fortunes| Cowsay et fortunes]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>s6g32d98aq4i7c17kf9alzi3jrkrith</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1667</id>
      <parentid>1626</parentid>
      <timestamp>2010-07-06T09:21:01Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Annulation des modifications 1626 de [[Special:Contributions/Lol|Lol]] ([[User talk:Lol|discussion]])</comment>
      <text xml:space="preserve" bytes="291">; [http://beronono.com/wiki-debian/index.php?title=Modèle:General/Index/Divers Divers]

&amp;nbsp;• [[Glossaire|Glossaire]]
&amp;nbsp;• [[CheatcubeDebian| Le Cube &quot;astuces&quot; Debian]]
&amp;nbsp;• [[Cowsay_et_fortunes| Cowsay et fortunes]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>f67144xvgeiuj5lhadpuwiqfp5f237s</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1688</id>
      <parentid>1667</parentid>
      <timestamp>2010-07-26T08:35:11Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="274">; [[/wiki-debian/index.php?title=Modèle:General/Index/Divers|Divers]]

&amp;nbsp;• [[Glossaire|Glossaire]]
&amp;nbsp;• [[CheatcubeDebian| Le Cube &quot;astuces&quot; Debian]]
&amp;nbsp;• [[Cowsay_et_fortunes| Cowsay et fortunes]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>nxrtyrxqpu6lsd7eg5erqh1zum1hj2l</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1739</id>
      <parentid>1688</parentid>
      <timestamp>2010-07-27T18:54:55Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="223">&lt;u&gt;'''Divers'''&lt;/u&gt;

&amp;nbsp;• [[Glossaire|Glossaire]]
&amp;nbsp;• [[CheatcubeDebian| Le Cube &quot;astuces&quot; Debian]]
&amp;nbsp;• [[Cowsay_et_fortunes| Cowsay et fortunes]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>b2piiha5a33ihlny0lkm0dcofev19b2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1788</id>
      <parentid>1739</parentid>
      <timestamp>2010-07-31T06:18:23Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="290">&lt;u&gt;'''Divers'''&lt;/u&gt;

&amp;nbsp;• [[Glossaire|Glossaire]]
&amp;nbsp;• [[CheatcubeDebian| Le Cube &quot;astuces&quot; Debian]]
&amp;nbsp;• [[Cowsay_et_fortunes| Cowsay et fortunes]]
&amp;nbsp;• [[GNU/Linux_Distro_Timeline|GNU/Linux Distro Timeline]]


&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>jym3y9qnarrhah1641t76hag4e4gukw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2153</id>
      <parentid>1788</parentid>
      <timestamp>2010-09-30T05:25:21Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="424">&lt;u&gt;'''Divers'''&lt;/u&gt;

&amp;nbsp;• [[Glossaire|Glossaire]] &amp;nbsp;• [[CheatcubeDebian| Le Cube &quot;astuces&quot; Debian]] &amp;nbsp;• [[Cowsay_et_fortunes| Cowsay et fortunes]] &amp;nbsp;• [[GNU/Linux_Distro_Timeline|GNU/Linux Distro Timeline]]

:*[[:Catégorie:DistributionsDérivées|Distributions Dérivées]]
::•&amp;nbsp;[[Installer_aptosid|Exemple d'installation de aptosid]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>dorokcj4thyjey9ilurwewv2b37a1hd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2617</id>
      <parentid>2153</parentid>
      <timestamp>2010-12-29T13:07:14Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="529">&lt;u&gt;'''Divers'''&lt;/u&gt;

&amp;nbsp;• [[Glossaire|Glossaire]] &amp;nbsp;• [[CheatcubeDebian| Le Cube &quot;astuces&quot; Debian]] &amp;nbsp;• [[Cowsay_et_fortunes| Cowsay et fortunes]] &amp;nbsp;• [[GNU/Linux_Distro_Timeline|GNU/Linux Distro Timeline]]

:*[[:Catégorie:DistributionsDérivées|Distributions Dérivées]]
::•&amp;nbsp;[[Installer_aptosid|Exemple d'installation de aptosid]] •&amp;nbsp;[[Installer_Debian_Voyage_sur_une_carte_Alix2d2|Installer Debian Voyage sur une carte Alix2d2]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>tep4hn3dlnagmylwnca9dyh8coywc4q</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3459</id>
      <parentid>2617</parentid>
      <timestamp>2011-09-07T08:26:40Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Installation de MDS</comment>
      <text xml:space="preserve" bytes="664">&lt;u&gt;'''Divers'''&lt;/u&gt;

&amp;nbsp;• [[Glossaire|Glossaire]] &amp;nbsp;• [[CheatcubeDebian| Le Cube &quot;astuces&quot; Debian]] &amp;nbsp;• [[Cowsay_et_fortunes| Cowsay et fortunes]] &amp;nbsp;• [[GNU/Linux_Distro_Timeline|GNU/Linux Distro Timeline]] &amp;nbsp;• [[Debian_Squeeze:_LDAP_-_Mandriva_Directory_Server_(MDS)|Installation de (MDS - Mandriva Directory Server) sur une Squeeze]]

:*[[:Catégorie:DistributionsDérivées|Distributions Dérivées]]
::•&amp;nbsp;[[Installer_aptosid|Exemple d'installation de aptosid]] •&amp;nbsp;[[Installer_Debian_Voyage_sur_une_carte_Alix2d2|Installer Debian Voyage sur une carte Alix2d2]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>tatdwkmq58yfhosgdiaz2j09ojigxze</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3853</id>
      <parentid>3459</parentid>
      <timestamp>2012-02-26T15:11:57Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Manchot_vs_pingouin</comment>
      <text xml:space="preserve" bytes="720">&lt;u&gt;'''Divers'''&lt;/u&gt;

&amp;nbsp;• [[Glossaire|Glossaire]] &amp;nbsp;• [[CheatcubeDebian| Le Cube &quot;astuces&quot; Debian]] &amp;nbsp;• [[Cowsay_et_fortunes| Cowsay et fortunes]] &amp;nbsp;• [[GNU/Linux_Distro_Timeline|GNU/Linux Distro Timeline]] &amp;nbsp;• [[Debian_Squeeze:_LDAP_-_Mandriva_Directory_Server_(MDS)|Installation de (MDS - Mandriva Directory Server) sur une Squeeze]] &amp;nbsp;• [[Manchot_vs_pingouin|Manchot vs pingouin]]



:*[[:Catégorie:DistributionsDérivées|Distributions Dérivées]]
::•&amp;nbsp;[[Installer_aptosid|Exemple d'installation de aptosid]] •&amp;nbsp;[[Installer_Debian_Voyage_sur_une_carte_Alix2d2|Installer Debian Voyage sur une carte Alix2d2]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>dqd41boszpmrk4091b4v8dnteb08f3v</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:General/Index/Documentation externe</title>
    <ns>10</ns>
    <id>262</id>
    <revision>
      <id>1147</id>
      <timestamp>2010-03-14T17:09:33Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « ; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Documentation_externe Documentation externe]  &amp;nbsp;• [[Documentation_Latex|Documentation Latex… »</comment>
      <text xml:space="preserve" bytes="299">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Documentation_externe Documentation externe]

&amp;nbsp;• [[Documentation_Latex|Documentation Latex]]
&amp;nbsp;• [[Article 2]]
&amp;nbsp;• [[Article 3]]

&lt;noinclude&gt;[[Catégorie:General/Index|Documentation externe]]&lt;/noinclude&gt;</text>
      <sha1>l4ogxiyh25l7f9fl4q2l9fex34mrlrz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1151</id>
      <parentid>1147</parentid>
      <timestamp>2010-03-15T13:42:48Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="331">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Documentation_externe Documentation externe]

&amp;nbsp;• [[Documentation_Latex|Documentation Latex]]
&amp;nbsp;• [[TestDisk_et_PhotoRec|TestDisk et PhotoRec]]
&amp;nbsp;• [[Article 3]]

&lt;noinclude&gt;[[Catégorie:General/Index|Documentation externe]]&lt;/noinclude&gt;</text>
      <sha1>b1372gcnh4y8w6k43e89is1qj8whlav</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1152</id>
      <parentid>1151</parentid>
      <timestamp>2010-03-15T13:43:46Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="299">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Documentation_externe Documentation externe]

&amp;nbsp;• [[Documentation_Latex|Documentation Latex]]
&amp;nbsp;• [[Article 2]]
&amp;nbsp;• [[Article 3]]

&lt;noinclude&gt;[[Catégorie:General/Index|Documentation externe]]&lt;/noinclude&gt;</text>
      <sha1>l4ogxiyh25l7f9fl4q2l9fex34mrlrz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1193</id>
      <parentid>1152</parentid>
      <timestamp>2010-03-29T06:29:04Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="330">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Documentation_externe Documentation externe]

&amp;nbsp;• [[Documentation_Latex|Documentation Latex]]
&amp;nbsp;• [[Liens GNU/Linux Free Software OpenSource]]
&amp;nbsp;• [[Article 3]]

&lt;noinclude&gt;[[Catégorie:General/Index|Documentation externe]]&lt;/noinclude&gt;</text>
      <sha1>ol8hgu4v9fx5q01iv4duz9caw3ljgl7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1519</id>
      <parentid>1193</parentid>
      <timestamp>2010-05-17T11:29:34Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="306">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Documentation_externe Documentation externe]

&amp;nbsp;• [[Documentation_Latex|Documentation Latex]]
&amp;nbsp;• [[Liens GNU/Linux Free Software OpenSource]]

&lt;noinclude&gt;[[Catégorie:General/Index|Documentation externe]]&lt;/noinclude&gt;</text>
      <sha1>i4zzee4lq0t03qa1gnxkstornt2bv8v</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1627</id>
      <parentid>1519</parentid>
      <timestamp>2010-07-05T08:37:40Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="362">#REDIRECT [[isalo:General/Index/Documentation_externe]]
; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Documentation_externe Documentation externe]

&amp;nbsp;• [[Documentation_Latex|Documentation Latex]]
&amp;nbsp;• [[Liens GNU/Linux Free Software OpenSource]]

&lt;noinclude&gt;[[Catégorie:General/Index|Documentation externe]]&lt;/noinclude&gt;</text>
      <sha1>3hjmd29osecl3gk8p1cvbgy436t4s99</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1666</id>
      <parentid>1627</parentid>
      <timestamp>2010-07-06T09:20:57Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Annulation des modifications 1627 de [[Special:Contributions/Lol|Lol]] ([[User talk:Lol|discussion]])</comment>
      <text xml:space="preserve" bytes="306">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Documentation_externe Documentation externe]

&amp;nbsp;• [[Documentation_Latex|Documentation Latex]]
&amp;nbsp;• [[Liens GNU/Linux Free Software OpenSource]]

&lt;noinclude&gt;[[Catégorie:General/Index|Documentation externe]]&lt;/noinclude&gt;</text>
      <sha1>i4zzee4lq0t03qa1gnxkstornt2bv8v</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1690</id>
      <parentid>1666</parentid>
      <timestamp>2010-07-26T08:37:05Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="289">; [[/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Documentation_externe|Documentation externe]]

&amp;nbsp;• [[Documentation_Latex|Documentation Latex]]
&amp;nbsp;• [[Liens GNU/Linux Free Software OpenSource]]

&lt;noinclude&gt;[[Catégorie:General/Index|Documentation externe]]&lt;/noinclude&gt;</text>
      <sha1>q6ck0x54bb17mw81urxascgkndmojkt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1740</id>
      <parentid>1690</parentid>
      <timestamp>2010-07-27T18:55:51Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="219">&lt;u&gt;'''Documentation externe'''&lt;/u&gt;

&amp;nbsp;• [[Documentation_Latex|Documentation Latex]]
&amp;nbsp;• [[Liens GNU/Linux Free Software OpenSource]]

&lt;noinclude&gt;[[Catégorie:General/Index|Documentation externe]]&lt;/noinclude&gt;</text>
      <sha1>qww03cpx37xy1fjhab6emhjt2g4xhja</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:General/Index/Gestionnaires de fenêtres</title>
    <ns>10</ns>
    <id>183</id>
    <revision>
      <id>722</id>
      <timestamp>2010-02-02T05:49:38Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « ; [[Gestionnaire_de_fenetres|Gestionnaires de fenêtres]] * Les flottants [[Openbox]]&amp;nbsp;•  [[Fluxbox]]&amp;nbsp;•  [[Pekwm]]&amp;nbsp;•  [[Fvwm]]&amp;nbsp;•  [[WindowMaker]]&amp;n… »</comment>
      <text xml:space="preserve" bytes="384">; [[Gestionnaire_de_fenetres|Gestionnaires de fenêtres]]
* Les flottants
[[Openbox]]&amp;nbsp;• 
[[Fluxbox]]&amp;nbsp;• 
[[Pekwm]]&amp;nbsp;• 
[[Fvwm]]&amp;nbsp;• 
[[WindowMaker]]&amp;nbsp;• 
[[Enlightenment]]&amp;nbsp;• 
* Les Tilings
[[dwm]]&amp;nbsp;• 
[[wmii]]&amp;nbsp;• 
[[awesome]]&amp;nbsp;• 
[[xmonad]]&amp;nbsp;• 

&lt;noinclude&gt;[[Catégorie:General/Index|Gestionnaires de fenêtres]]&lt;/noinclude&gt;</text>
      <sha1>s4iqjm3lm2496thf8g8tgg1cpu4xk5f</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:General/Index/Installation</title>
    <ns>10</ns>
    <id>184</id>
    <revision>
      <id>723</id>
      <timestamp>2010-02-02T05:50:31Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « ; [[Installation]] [[Aide_efficace|Obtenir de l'aide efficacement]]&amp;nbsp;•  [[Manuel_d'installation|Brouillon d'un manuel d'installation]]&amp;nbsp;•  [[Reinstallation_rapide… »</comment>
      <text xml:space="preserve" bytes="443">; [[Installation]]
[[Aide_efficace|Obtenir de l'aide efficacement]]&amp;nbsp;• 
[[Manuel_d'installation|Brouillon d'un manuel d'installation]]&amp;nbsp;• 
[[Reinstallation_rapide|Réinstallation rapide]]&amp;nbsp;• 
[[Article 2]]&amp;nbsp;• 
[[Article 3]]&amp;nbsp;• 
[[Article 4]]&amp;nbsp;• 
[[Article 5]]&amp;nbsp;• 
[[Article 6]]&amp;nbsp;• 
[[Article 7]]&amp;nbsp;• 
[[Article 8]]&amp;nbsp;• 

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>3pdmi0vhbho5gwl60vl4otrovfh23g9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>947</id>
      <parentid>723</parentid>
      <timestamp>2010-02-07T05:39:15Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="529">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Installation Installation]

[[Aide_efficace|Obtenir de l'aide efficacement]]&amp;nbsp;• 
[[Manuel_d'installation|Brouillon d'un manuel d'installation]]&amp;nbsp;• 
[[Reinstallation_rapide|Réinstallation rapide]]&amp;nbsp;• 
[[Article 2]]&amp;nbsp;• 
[[Article 3]]&amp;nbsp;• 
[[Article 4]]&amp;nbsp;• 
[[Article 5]]&amp;nbsp;• 
[[Article 6]]&amp;nbsp;• 
[[Article 7]]&amp;nbsp;• 
[[Article 8]]&amp;nbsp;• 

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>gti51dmommox05ln07pch1p4sebcahs</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>955</id>
      <parentid>947</parentid>
      <timestamp>2010-02-07T06:00:15Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="557">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Installation Installation]

[[Aide_efficace|Obtenir de l'aide efficacement]]&amp;nbsp;• 
[[Manuel_d'installation|Brouillon d'un manuel d'installation]]&amp;nbsp;• 
[[Reinstallation_rapide|Réinstallation rapide]]&amp;nbsp;• 
[[Nettoyer_sa_Debian|Nettoyer sa Debian]]&amp;nbsp;• 
[[Article 3]]&amp;nbsp;• 
[[Article 4]]&amp;nbsp;• 
[[Article 5]]&amp;nbsp;• 
[[Article 6]]&amp;nbsp;• 
[[Article 7]]&amp;nbsp;• 
[[Article 8]]&amp;nbsp;• 

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>kitpypvodz3d26g08th58gbe0h6a5di</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1024</id>
      <parentid>955</parentid>
      <timestamp>2010-02-08T03:58:17Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="557">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Installation Installation]

&amp;nbsp;• [[Aide_efficace|Obtenir de l'aide efficacement]]
&amp;nbsp;• [[Manuel_d'installation|Brouillon d'un manuel d'installation]]
&amp;nbsp;• [[Reinstallation_rapide|Réinstallation rapide]]
&amp;nbsp;• [[Nettoyer_sa_Debian|Nettoyer sa Debian]]
&amp;nbsp;• [[Article 3]]
&amp;nbsp;• [[Article 4]]
&amp;nbsp;• [[Article 5]]
&amp;nbsp;• [[Article 6]]
&amp;nbsp;• [[Article 7]]
&amp;nbsp;• [[Article 8]]

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>8f7qfy3i39zb57i1qx5yy9d3hs57gg5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1040</id>
      <parentid>1024</parentid>
      <timestamp>2010-02-08T06:50:56Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="547">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Installation Installation]

•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]] •&amp;nbsp;[[Manuel_d'installation|Brouillon d'un manuel d'installation]] •&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]] •&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]] •&amp;nbsp;[[Article 3]] •&amp;nbsp;[[Article 4]] •&amp;nbsp;[[Article 5]] •&amp;nbsp;[[Article 6]] •&amp;nbsp;[[Article 7]] •&amp;nbsp;[[Article 8]]

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>frhn540vax7e3vk90mtrugrird1i3q6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1186</id>
      <parentid>1040</parentid>
      <timestamp>2010-03-25T13:02:49Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="627">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Installation Installation]

•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]] •&amp;nbsp;[[Manuel_d'installation|Brouillon d'un manuel d'installation]] •&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]] •&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]] •&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]] •&amp;nbsp;[[Article 4]] •&amp;nbsp;[[Article 5]] •&amp;nbsp;[[Article 6]] •&amp;nbsp;[[Article 7]] •&amp;nbsp;[[Article 8]]

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>6i2z2c0rmngzh013zvdqagprimrkw55</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1233</id>
      <parentid>1186</parentid>
      <timestamp>2010-03-31T03:59:32Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="683">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Installation Installation]

•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]] •&amp;nbsp;[[Manuel_d'installation|Brouillon d'un manuel d'installation]] •&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]] •&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]] •&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]] •&amp;nbsp;[[Vérifier_le_md5_d'une_image_iso|Vérifier le md5 d'une image iso]] •&amp;nbsp;[[Article 5]] •&amp;nbsp;[[Article 6]] •&amp;nbsp;[[Article 7]] •&amp;nbsp;[[Article 8]]

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>5dj8t4krilvbxbsn7fz80z2maqlztql</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1244</id>
      <parentid>1233</parentid>
      <timestamp>2010-04-01T13:04:25Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="731">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Installation Installation]

•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]] •&amp;nbsp;[[Manuel_d'installation|Brouillon d'un manuel d'installation]] •&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]] •&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]] •&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]] •&amp;nbsp;[[Vérifier_le_md5_d'une_image_iso|Vérifier le md5 d'une image iso]] •&amp;nbsp;[[Remettre une machine à zéro|Remettre une Lenny à zéro]] •&amp;nbsp;[[Article 6]] •&amp;nbsp;[[Article 7]] •&amp;nbsp;[[Article 8]]

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>c2s3kabbjbe8m7cq1sivssbpji8wubp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1377</id>
      <parentid>1244</parentid>
      <timestamp>2010-04-09T14:23:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="770">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Installation Installation]

•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]] •&amp;nbsp;[[Manuel_d'installation|Brouillon d'un manuel d'installation]] •&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]] •&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]] •&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]] •&amp;nbsp;[[Vérifier_le_md5_d'une_image_iso|Vérifier le md5 d'une image iso]] •&amp;nbsp;[[Remettre une machine à zéro|Remettre une Lenny à zéro]] •&amp;nbsp;[[Upgrade_de_Etch_à_Lenny|Passer de Etch à Lenny]] •&amp;nbsp;[[Article 7]] •&amp;nbsp;[[Article 8]]

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>1a2sgcr5sa1h54dblvqor9j47hsqxm9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1514</id>
      <parentid>1377</parentid>
      <timestamp>2010-05-17T11:25:13Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="724">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Installation Installation]

•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]] •&amp;nbsp;[[Manuel_d'installation|Brouillon d'un manuel d'installation]] •&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]] •&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]] •&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]] •&amp;nbsp;[[Vérifier_le_md5_d'une_image_iso|Vérifier le md5 d'une image iso]] •&amp;nbsp;[[Remettre une machine à zéro|Remettre une Lenny à zéro]] •&amp;nbsp;[[Upgrade_de_Etch_à_Lenny|Passer de Etch à Lenny]]

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>hbwfyepxpxbzdceb9qod6cpymwyvbl7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1563</id>
      <parentid>1514</parentid>
      <timestamp>2010-06-10T15:50:03Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="820">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Installation Installation]

•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]] •&amp;nbsp;[[Manuel_d'installation|Brouillon d'un manuel d'installation]] •&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]] •&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]] •&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]] •&amp;nbsp;[[Vérifier_le_md5_d'une_image_iso|Vérifier le md5 d'une image iso]] •&amp;nbsp;[[Remettre une machine à zéro|Remettre une Lenny à zéro]] •&amp;nbsp;[[Upgrade_de_Etch_à_Lenny|Passer de Etch à Lenny]] •&amp;nbsp;[[Installer_Debian_pas-%C3%A0-pas|Installer Lenny pas-à-pas avec une &quot;businesscard&quot;]]

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>b7obchsg09tc9vwmwy5l4fv25nl7vl5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1628</id>
      <parentid>1563</parentid>
      <timestamp>2010-07-05T08:37:52Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="867">#REDIRECT [[isalo:General/Index/Installation]]
; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Installation Installation]

•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]] •&amp;nbsp;[[Manuel_d'installation|Brouillon d'un manuel d'installation]] •&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]] •&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]] •&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]] •&amp;nbsp;[[Vérifier_le_md5_d'une_image_iso|Vérifier le md5 d'une image iso]] •&amp;nbsp;[[Remettre une machine à zéro|Remettre une Lenny à zéro]] •&amp;nbsp;[[Upgrade_de_Etch_à_Lenny|Passer de Etch à Lenny]] •&amp;nbsp;[[Installer_Debian_pas-%C3%A0-pas|Installer Lenny pas-à-pas avec une &quot;businesscard&quot;]]

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>0mhjpbsa21oe7j5ahgmqg6c92m91v3t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1665</id>
      <parentid>1628</parentid>
      <timestamp>2010-07-06T09:20:55Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Annulation des modifications 1628 de [[Special:Contributions/Lol|Lol]] ([[User talk:Lol|discussion]])</comment>
      <text xml:space="preserve" bytes="820">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Installation Installation]

•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]] •&amp;nbsp;[[Manuel_d'installation|Brouillon d'un manuel d'installation]] •&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]] •&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]] •&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]] •&amp;nbsp;[[Vérifier_le_md5_d'une_image_iso|Vérifier le md5 d'une image iso]] •&amp;nbsp;[[Remettre une machine à zéro|Remettre une Lenny à zéro]] •&amp;nbsp;[[Upgrade_de_Etch_à_Lenny|Passer de Etch à Lenny]] •&amp;nbsp;[[Installer_Debian_pas-%C3%A0-pas|Installer Lenny pas-à-pas avec une &quot;businesscard&quot;]]

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>b7obchsg09tc9vwmwy5l4fv25nl7vl5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1692</id>
      <parentid>1665</parentid>
      <timestamp>2010-07-26T08:38:04Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="803">; [[/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Installation|Installation]]

•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]] •&amp;nbsp;[[Manuel_d'installation|Brouillon d'un manuel d'installation]] •&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]] •&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]] •&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]] •&amp;nbsp;[[Vérifier_le_md5_d'une_image_iso|Vérifier le md5 d'une image iso]] •&amp;nbsp;[[Remettre une machine à zéro|Remettre une Lenny à zéro]] •&amp;nbsp;[[Upgrade_de_Etch_à_Lenny|Passer de Etch à Lenny]] •&amp;nbsp;[[Installer_Debian_pas-%C3%A0-pas|Installer Lenny pas-à-pas avec une &quot;businesscard&quot;]]

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>e2v7ua6e07him51fq6lajh38k1beywg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1741</id>
      <parentid>1692</parentid>
      <timestamp>2010-07-27T18:56:05Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="742">&lt;u&gt;'''Installation'''&lt;/u&gt;

•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]] •&amp;nbsp;[[Manuel_d'installation|Brouillon d'un manuel d'installation]] •&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]] •&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]] •&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]] •&amp;nbsp;[[Vérifier_le_md5_d'une_image_iso|Vérifier le md5 d'une image iso]] •&amp;nbsp;[[Remettre une machine à zéro|Remettre une Lenny à zéro]] •&amp;nbsp;[[Upgrade_de_Etch_à_Lenny|Passer de Etch à Lenny]] •&amp;nbsp;[[Installer_Debian_pas-%C3%A0-pas|Installer Lenny pas-à-pas avec une &quot;businesscard&quot;]]

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>4n6iswd1wksnr3vutktlvca5tz7jq8q</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1998</id>
      <parentid>1741</parentid>
      <timestamp>2010-08-20T12:04:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="822">&lt;u&gt;'''Installation'''&lt;/u&gt;

•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]] •&amp;nbsp;[[Manuel_d'installation|Brouillon d'un manuel d'installation]] •&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]] •&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]] •&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]] •&amp;nbsp;[[Vérifier_le_md5_d'une_image_iso|Vérifier le md5 d'une image iso]] •&amp;nbsp;[[Remettre une machine à zéro|Remettre une Lenny à zéro]] •&amp;nbsp;[[Upgrade_de_Etch_à_Lenny|Passer de Etch à Lenny]] •&amp;nbsp;[[Installer_Debian_pas-%C3%A0-pas|Installer Lenny pas-à-pas avec une &quot;businesscard&quot;]] •&amp;nbsp;[[Installer_depuis_une_clé_USB|Installer Debian depuis une clé USB]]

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>0z16pg14wvmeyskmxe5ip9rodc18pdo</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2028</id>
      <parentid>1998</parentid>
      <timestamp>2010-08-25T07:28:26Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="750">&lt;u&gt;'''Installation'''&lt;/u&gt;

•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]] •&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]] •&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]] •&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]] •&amp;nbsp;[[Vérifier_le_md5_d'une_image_iso|Vérifier le md5 d'une image iso]] •&amp;nbsp;[[Remettre une machine à zéro|Remettre une Lenny à zéro]] •&amp;nbsp;[[Upgrade_de_Etch_à_Lenny|Passer de Etch à Lenny]] •&amp;nbsp;[[Installer_Debian_pas-%C3%A0-pas|Installer Lenny pas-à-pas avec une &quot;businesscard&quot;]] •&amp;nbsp;[[Installer_depuis_une_clé_USB|Installer Debian depuis une clé USB]]

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>7hb1nr0kiapdbth03o5fyeand0fdetx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2268</id>
      <parentid>2028</parentid>
      <timestamp>2010-11-11T04:34:56Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="785">&lt;u&gt;'''Installation'''&lt;/u&gt;

•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]] •&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]] •&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]] •&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]] •&amp;nbsp;[[Vérifier_le_md5_d'une_image_iso|Vérifier le md5 d'une image iso]] •&amp;nbsp;[[Remettre une machine à zéro|Remettre une Lenny à zéro]] •&amp;nbsp;[[Upgrade_de_Etch_à_Lenny|Passer de Etch à Lenny]] •&amp;nbsp;[[Installer_Debian_pas-%C3%A0-pas|Installer Lenny pas-à-pas avec une &quot;businesscard&quot;]] •&amp;nbsp;[[Installer_depuis_une_clé_USB|Installer Debian depuis une clé USB]] •&amp;nbsp;[[Unetbootin|Unetbootin]]

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>o9n7u2yyj7nxg5u5vovk8kgula984v8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2440</id>
      <parentid>2268</parentid>
      <timestamp>2010-11-28T15:58:20Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="888">&lt;u&gt;'''Installation'''&lt;/u&gt;

•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]] •&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]] •&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]] •&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]] •&amp;nbsp;[[Vérifier_le_md5_d'une_image_iso|Vérifier le md5 d'une image iso]] •&amp;nbsp;[[Remettre une machine à zéro|Remettre une Lenny à zéro]] •&amp;nbsp;[[Upgrade_de_Etch_à_Lenny|Passer de Etch à Lenny]] •&amp;nbsp;[[Installer_Debian_pas-%C3%A0-pas|Installer Lenny pas-à-pas avec une &quot;businesscard&quot;]] •&amp;nbsp;[[Installer_depuis_une_clé_USB|Installer Debian depuis une clé USB]] •&amp;nbsp;[[Unetbootin|Unetbootin]] •&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Lenny_à_Squeeze|Mise à niveau (upgrade) de Lenny à Squeeze]]

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>kvl1nkcpkxogmfw3yafe0231ln3ffll</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2581</id>
      <parentid>2440</parentid>
      <timestamp>2010-12-28T05:47:01Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="939">&lt;u&gt;'''Installation'''&lt;/u&gt;

•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]] •&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]] •&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]] •&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]] •&amp;nbsp;[[Vérifier_le_md5_d'une_image_iso|Vérifier le md5 d'une image iso]] •&amp;nbsp;[[Remettre une machine à zéro|Remettre une Lenny à zéro]] •&amp;nbsp;[[Upgrade_de_Etch_à_Lenny|Passer de Etch à Lenny]] •&amp;nbsp;[[Installer_Debian_pas-%C3%A0-pas|Installer Lenny pas-à-pas avec une &quot;businesscard&quot;]] •&amp;nbsp;[[Installer_depuis_une_clé_USB|Installer Debian depuis une clé USB]] •&amp;nbsp;[[Unetbootin|Unetbootin]] •&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Lenny_à_Squeeze|Mise à niveau (upgrade) de Lenny à Squeeze]] •&amp;nbsp;[[Le_partitionnement|Le partitionnement]]

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>s0dpni2cp47praxlosnedsza9kj5fwd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2755</id>
      <parentid>2581</parentid>
      <timestamp>2011-03-26T13:26:59Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="974">&lt;u&gt;'''Installation'''&lt;/u&gt;

•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]] •&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]] •&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]] •&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]] •&amp;nbsp;[[Vérifier_le_md5_d'une_image_iso|Vérifier le md5 d'une image iso]] •&amp;nbsp;[[Remettre une machine à zéro|Remettre une Lenny à zéro]] •&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Etch_à_Lenny|Mise à niveau (upgrade) de Etch à Lenny]] •&amp;nbsp;[[Installer_Debian_pas-%C3%A0-pas|Installer Lenny pas-à-pas avec une &quot;businesscard&quot;]] •&amp;nbsp;[[Installer_depuis_une_clé_USB|Installer Debian depuis une clé USB]] •&amp;nbsp;[[Unetbootin|Unetbootin]] •&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Lenny_à_Squeeze|Mise à niveau (upgrade) de Lenny à Squeeze]] •&amp;nbsp;[[Le_partitionnement|Le partitionnement]]

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>62zr6676ux07v80ntme961qzxet797r</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3627</id>
      <parentid>2755</parentid>
      <timestamp>2011-12-05T06:50:16Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1082">&lt;u&gt;'''Installation'''&lt;/u&gt;

•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]] •&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]] •&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]] •&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]] •&amp;nbsp;[[Vérifier_le_md5_d'une_image_iso|Vérifier le md5 d'une image iso]] •&amp;nbsp;[[Remettre une machine à zéro|Remettre une Lenny à zéro]] •&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Etch_à_Lenny|Mise à niveau (upgrade) de Etch à Lenny]] •&amp;nbsp;[[Installer_Debian_pas-%C3%A0-pas|Installer Lenny pas-à-pas avec une &quot;businesscard&quot;]] •&amp;nbsp;[[Installer_depuis_une_clé_USB|Installer Debian depuis une clé USB]] •&amp;nbsp;[[Unetbootin|Unetbootin]] •&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Lenny_à_Squeeze|Mise à niveau (upgrade) de Lenny à Squeeze]] •&amp;nbsp;[[Le_partitionnement|Le partitionnement]] •&amp;nbsp;[[Installation_de_squeeze_avec_une_businesscard|Installation de squeeze avec une &quot;businesscard&quot;]] 

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>55qsid2xpp6wbkxwcargrtppwiptnl2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3890</id>
      <parentid>3627</parentid>
      <timestamp>2012-03-06T07:46:07Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Debian_on_dreamplug</comment>
      <text xml:space="preserve" bytes="1158">&lt;u&gt;'''Installation'''&lt;/u&gt;

•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]] •&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]] •&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]] •&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]] •&amp;nbsp;[[Vérifier_le_md5_d'une_image_iso|Vérifier le md5 d'une image iso]] •&amp;nbsp;[[Remettre une machine à zéro|Remettre une Lenny à zéro]] •&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Etch_à_Lenny|Mise à niveau (upgrade) de Etch à Lenny]] •&amp;nbsp;[[Installer_Debian_pas-%C3%A0-pas|Installer Lenny pas-à-pas avec une &quot;businesscard&quot;]] •&amp;nbsp;[[Installer_depuis_une_clé_USB|Installer Debian depuis une clé USB]] •&amp;nbsp;[[Unetbootin|Unetbootin]] •&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Lenny_à_Squeeze|Mise à niveau (upgrade) de Lenny à Squeeze]] •&amp;nbsp;[[Le_partitionnement|Le partitionnement]] •&amp;nbsp;[[Installation_de_squeeze_avec_une_businesscard|Installation de squeeze avec une &quot;businesscard&quot;]]  •&amp;nbsp;[[Debian_on_dreamplug|Installation de Debian sur un &quot;dreamplug&quot;]] 

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>igmvdak2vm51etth0r8x3g0d00oadem</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4231</id>
      <parentid>3890</parentid>
      <timestamp>2012-05-12T07:39:14Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Installation de Squeeze avec debootstrap et chroot</comment>
      <text xml:space="preserve" bytes="1275">&lt;u&gt;'''Installation'''&lt;/u&gt;

•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]] •&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]] •&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]] •&amp;nbsp;[[Vérifier_le_md5_d'une_image_iso|Vérifier le md5 d'une image iso]] •&amp;nbsp;[[Remettre une machine à zéro|Remettre une Lenny à zéro]] •&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Etch_à_Lenny|Mise à niveau (upgrade) de Etch à Lenny]] •&amp;nbsp;[[Installer_Debian_pas-%C3%A0-pas|Installer Lenny pas-à-pas avec une &quot;businesscard&quot;]] •&amp;nbsp;[[Installer_depuis_une_clé_USB|Installer Debian depuis une clé USB]] •&amp;nbsp;[[Unetbootin|Unetbootin]] •&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Lenny_à_Squeeze|Mise à niveau (upgrade) de Lenny à Squeeze]] •&amp;nbsp;[[Le_partitionnement|Le partitionnement]] •&amp;nbsp;[[Installation_de_squeeze_avec_une_businesscard|Installation de squeeze avec une &quot;businesscard&quot;]] •&amp;nbsp;[[Debian_on_dreamplug|Installation de Debian sur un &quot;dreamplug&quot;]] •&amp;nbsp;[[Installation_squeeze_chroot_debootstrap|Installation de Squeeze avec debootstrap et chroot]] 

:*Obsolète: •&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]]

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>4mn5d0us8ax4hrq1pk50tdfmjz0dhti</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4387</id>
      <parentid>4231</parentid>
      <timestamp>2012-08-12T23:10:43Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1336">&lt;u&gt;'''Installation'''&lt;/u&gt;

•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]] •&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]] •&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]] •&amp;nbsp;[[Vérifier_le_md5_d'une_image_iso|Vérifier le md5 d'une image iso]] •&amp;nbsp;[[Remettre une machine à zéro|Remettre une Lenny à zéro]] •&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Etch_à_Lenny|Mise à niveau (upgrade) de Etch à Lenny]] •&amp;nbsp;[[Installer_Debian_pas-%C3%A0-pas|Installer Lenny pas-à-pas avec une &quot;businesscard&quot;]] •&amp;nbsp;[[Installer_depuis_une_clé_USB|Installer Debian depuis une clé USB]] •&amp;nbsp;[[Unetbootin|Unetbootin]] •&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Lenny_à_Squeeze|Mise à niveau (upgrade) de Lenny à Squeeze]] •&amp;nbsp;[[Le_partitionnement|Le partitionnement]] •&amp;nbsp;[[Installation_de_squeeze_avec_une_businesscard|Installation de squeeze avec une &quot;businesscard&quot;]] •&amp;nbsp;[[Debian_on_dreamplug|Installation de Debian sur un &quot;dreamplug&quot;]] •&amp;nbsp;[[Installation_squeeze_chroot_debootstrap|Installation de Squeeze avec debootstrap et chroot]]
•&amp;nbsp;[[Clef_usb_d'installation|Clef USB d'installation]] 

:*Obsolète: •&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]]

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>5imw3wy0djwuforgp58pek8ywx3bxac</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4528</id>
      <parentid>4387</parentid>
      <timestamp>2012-10-19T21:21:35Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>Suppression d'une référence trompeuse à Lenny</comment>
      <text xml:space="preserve" bytes="1308">&lt;u&gt;'''Installation'''&lt;/u&gt;

•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]] •&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]] •&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]] •&amp;nbsp;[[Vérifier_le_md5_d'une_image_iso|Vérifier le md5 d'une image iso]] •&amp;nbsp;[[Remettre une machine à zéro]] •&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Etch_à_Lenny|Mise à niveau (upgrade) de Etch à Lenny]] •&amp;nbsp;[[Installer_Debian_pas-%C3%A0-pas|Installer Lenny pas-à-pas avec une &quot;businesscard&quot;]] •&amp;nbsp;[[Installer_depuis_une_clé_USB|Installer Debian depuis une clé USB]] •&amp;nbsp;[[Unetbootin|Unetbootin]] •&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Lenny_à_Squeeze|Mise à niveau (upgrade) de Lenny à Squeeze]] •&amp;nbsp;[[Le_partitionnement|Le partitionnement]] •&amp;nbsp;[[Installation_de_squeeze_avec_une_businesscard|Installation de squeeze avec une &quot;businesscard&quot;]] •&amp;nbsp;[[Debian_on_dreamplug|Installation de Debian sur un &quot;dreamplug&quot;]] •&amp;nbsp;[[Installation_squeeze_chroot_debootstrap|Installation de Squeeze avec debootstrap et chroot]]
•&amp;nbsp;[[Clef_usb_d'installation|Clef USB d'installation]] 

:*Obsolète: •&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]]

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>jjttz7zdatno6xtx5srzha9nmu4a2a3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:General/Index/Installation2</title>
    <ns>10</ns>
    <id>1108</id>
    <revision>
      <id>4564</id>
      <timestamp>2012-10-28T08:46:21Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « {| cellspacing=5 cellpadding=5 border=0 width=100% |- style=&quot;background:#e0e0ff; color:black; font-size:18px; -moz-border-radius:8px;&quot; ! width=&quot;75%&quot; colspan=&quot;2&quot; | Bienvenu... »</comment>
      <text xml:space="preserve" bytes="2945">{| cellspacing=5 cellpadding=5 border=0 width=100%
|- style=&quot;background:#e0e0ff; color:black; font-size:18px; -moz-border-radius:8px;&quot;
! width=&quot;75%&quot; colspan=&quot;2&quot; | Bienvenue sur le Wiki du &lt;br&gt; Forum debian-fr.org
|-
|valign=middle|

'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://www.debian-fr.org forum debian-fr.org].&lt;br&gt;
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !&lt;br&gt;

&lt;u&gt;'''Installation'''&lt;/u&gt;

•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]]&lt;br&gt;
•&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]]&lt;br&gt;
•&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]]&lt;br&gt;
•&amp;nbsp;[[Vérifier_le_md5_d'une_image_iso|Vérifier le md5 d'une image iso]]&lt;br&gt;
•&amp;nbsp;[[Remettre une machine à zéro]] •&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Etch_à_Lenny|Mise à niveau (upgrade) de Etch à Lenny]]&lt;br&gt;
•&amp;nbsp;[[Installer_Debian_pas-%C3%A0-pas|Installer Lenny pas-à-pas avec une &quot;businesscard&quot;]]&lt;br&gt;
•&amp;nbsp;[[Installer_depuis_une_clé_USB|Installer Debian depuis une clé USB]] •&amp;nbsp;[[Unetbootin|Unetbootin]]&lt;br&gt;
•&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Lenny_à_Squeeze|Mise à niveau (upgrade) de Lenny à Squeeze]]&lt;br&gt;
•&amp;nbsp;[[Le_partitionnement|Le partitionnement]] •&amp;nbsp;[[Installation_de_squeeze_avec_une_businesscard|Installation de squeeze avec une &quot;businesscard&quot;]]&lt;br&gt;
•&amp;nbsp;[[Debian_on_dreamplug|Installation de Debian sur un &quot;dreamplug&quot;]]&lt;br&gt;
•&amp;nbsp;[[Installation_squeeze_chroot_debootstrap|Installation de Squeeze avec debootstrap et chroot]]&lt;br&gt;
•&amp;nbsp;[[Clef_usb_d'installation|Clef USB d'installation]]&lt;br&gt;

:*Obsolète: •&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]]&lt;br&gt;

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;



|halign=mid|[[Image:Wiki.png]]
|}

&lt;!-- Autre couleur de background #00CCFF --&gt;
{| cellspacing=5 cellpadding=5 border=0 width=100% 
|- style=&quot;background:#e0e0ff; color:black; font-size:16px; -moz-border-radius:8px;&quot;
! width=&quot;66%&quot; | Utilisation du Wiki !! Dernières nouvelles
|-
|valign=top|

* Si vous n'avez jamais utilisé MediaWiki, vous pourrez trouver plus d'informations ici: [http://meta.wikimedia.org/wiki/Aide:Contenu Guide d'utilisation] + [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ MediaWiki]
* Ici vous aurez [[Special:Allpages | l'Index de toutes les pages du Wiki ]]
* En tant que membre du projet vous avez droit à une page personnelle [[ Special:Listusers | (accessible depuis votre UserId)]], une fois que vous vous êtes [[Special:Userlogin | loggé]]
&lt;br&gt;
Amusez vous bien ! ;-)
&lt;br&gt;&lt;br&gt;
| 
{{DernièresNouvelles}}
|-
|}
&lt;br&gt;</text>
      <sha1>lhid0ohcccd6u0tqvyig97qi6opqmsw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4566</id>
      <parentid>4564</parentid>
      <timestamp>2012-10-28T08:57:57Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3861">{| cellspacing=5 cellpadding=5 border=0 width=100%
|- style=&quot;background:#e0e0ff; color:black; font-size:18px; -moz-border-radius:8px;&quot;
! width=&quot;75%&quot; colspan=&quot;2&quot; | Bienvenue sur le Wiki du &lt;br&gt; Forum debian-fr.org
|-
|valign=middle|

'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://www.debian-fr.org forum debian-fr.org].&lt;br&gt;
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !&lt;br&gt;

&lt;u&gt;'''Installation'''&lt;/u&gt;

•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]]&lt;br&gt;
•&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]]&lt;br&gt;
•&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]]&lt;br&gt;
•&amp;nbsp;[[Vérifier_le_md5_d'une_image_iso|Vérifier le md5 d'une image iso]]&lt;br&gt;
•&amp;nbsp;[[Remettre une machine à zéro]] •&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Etch_à_Lenny|Mise à niveau (upgrade) de Etch à Lenny]]&lt;br&gt;
•&amp;nbsp;[[Installer_Debian_pas-%C3%A0-pas|Installer Lenny pas-à-pas avec une &quot;businesscard&quot;]]&lt;br&gt;
•&amp;nbsp;[[Installer_depuis_une_clé_USB|Installer Debian depuis une clé USB]] •&amp;nbsp;[[Unetbootin|Unetbootin]]&lt;br&gt;
•&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Lenny_à_Squeeze|Mise à niveau (upgrade) de Lenny à Squeeze]]&lt;br&gt;
•&amp;nbsp;[[Le_partitionnement|Le partitionnement]] •&amp;nbsp;[[Installation_de_squeeze_avec_une_businesscard|Installation de squeeze avec une &quot;businesscard&quot;]]&lt;br&gt;
•&amp;nbsp;[[Debian_on_dreamplug|Installation de Debian sur un &quot;dreamplug&quot;]]&lt;br&gt;
•&amp;nbsp;[[Installation_squeeze_chroot_debootstrap|Installation de Squeeze avec debootstrap et chroot]]&lt;br&gt;
•&amp;nbsp;[[Clef_usb_d'installation|Clef USB d'installation]]&lt;br&gt;

:*Obsolète: •&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]]&lt;br&gt;


{| cellspacing=5 cellpadding=5 border=0 width=100%
{{IconLink|Modèle:General/Index/Installation2|Installation|Installation.png|}}
{{IconLink|Modèle:General/Index/Logiciels|Les logiciels|Logiciel.png|}}
{{IconLink|Modèle:General/Index/Reseau_et_Wifi|Réseau et Wifi|internet.png|}}
|-
{{IconLink|Modèle:General/Index/Noyau_(Kernel)|Le noyau|Linux.jpg|}}
{{IconLink|Modèle:General/Index/Les_Trucs_et_astuces|Les Trucs &amp; Astuces|T%26A.jpg|}}
{{IconLink|Modèle:General/Index/Materiel_et_Pilotes|Le matériel et les pilotes|Hardware2.png|}}
|-
{{IconLink|Modèle:General/Index/Commandes|Les commandes|Commandes.png|}}
{{IconLink|Modèle:General/Index/Programmation|La programmation, les scripts...|Programmation.png|}}
{{IconLink|Modèle:General/Index/Securite|Sécurité !|Securite.png|}}
|-
{{IconLink|Modèle:General/Index/Divers|divers|Divers.jpg|}}
{{IconLink|Modèle:General/Index/Documentation_externe|Documentation externe !|Doc.png|}}
|-
|}

&lt;!-- Autre couleur de background #00CCFF --&gt;
{| cellspacing=5 cellpadding=5 border=0 width=100% 
|- style=&quot;background:#e0e0ff; color:black; font-size:16px; -moz-border-radius:8px;&quot;
! width=&quot;66%&quot; | Utilisation du Wiki !! Dernières nouvelles
|-
|valign=top|

* Si vous n'avez jamais utilisé MediaWiki, vous pourrez trouver plus d'informations ici: [http://meta.wikimedia.org/wiki/Aide:Contenu Guide d'utilisation] + [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ MediaWiki]
* Ici vous aurez [[Special:Allpages | l'Index de toutes les pages du Wiki ]]
* En tant que membre du projet vous avez droit à une page personnelle [[ Special:Listusers | (accessible depuis votre UserId)]], une fois que vous vous êtes [[Special:Userlogin | loggé]]
&lt;br&gt;
Amusez vous bien ! ;-)
&lt;br&gt;&lt;br&gt;
| 
{{DernièresNouvelles}}
|-
|}
&lt;br&gt;

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>5ptk1lnyf3me9ytpn0u18v1fq0sxivn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4567</id>
      <parentid>4566</parentid>
      <timestamp>2012-10-28T11:24:10Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <text xml:space="preserve" bytes="3877">{| cellspacing=5 cellpadding=5 border=0 width=100%
|- style=&quot;background:#e0e0ff; color:black; font-size:18px; -moz-border-radius:8px;&quot;
! width=&quot;75%&quot; colspan=&quot;2&quot; | Bienvenue sur le Wiki du &lt;br&gt; Forum debian-fr.org
|-
|valign=middle|

'''wiki.debian-fr.org''' est un document créé et maintenu par les participants du [http://www.debian-fr.org forum debian-fr.org].&lt;br&gt;
'''Pour vous inscrire''', rien de plus simple : C'est en haut à droite... Choisissez de préférence le même pseudo que celui que vous utilisez sur [http://www.debian-fr.org www.debian-fr.org]. Ce sera plus facile pour tout le monde de s'y retrouver...
'''Remarque''' : Vous attraperez tous une majuscule à votre pseudo... Même si vous ne voulez pas !&lt;br&gt;

&lt;u&gt;'''Installation'''&lt;/u&gt;

•&amp;nbsp;[[Aide_efficace|Obtenir de l'aide efficacement]]&lt;br&gt;
•&amp;nbsp;[[Reinstallation_rapide|Réinstallation rapide]]&lt;br&gt;
•&amp;nbsp;[[Nettoyer_sa_Debian|Nettoyer sa Debian]]&lt;br&gt;
•&amp;nbsp;[[Vérifier_le_md5_d'une_image_iso|Vérifier le md5 d'une image iso]]&lt;br&gt;
•&amp;nbsp;[[Remettre une machine à zéro]]&lt;br&gt; 
•&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Etch_à_Lenny|Mise à niveau (upgrade) de Etch à Lenny]]&lt;br&gt;
•&amp;nbsp;[[Installer_Debian_pas-%C3%A0-pas|Installer Lenny pas-à-pas avec une &quot;businesscard&quot;]]&lt;br&gt;
•&amp;nbsp;[[Installer_depuis_une_clé_USB|Installer Debian depuis une clé USB]]&lt;br&gt; 
•&amp;nbsp;[[Unetbootin|Unetbootin]]&lt;br&gt;
•&amp;nbsp;[[Mise_à_niveau_(upgrade)_de_Lenny_à_Squeeze|Mise à niveau (upgrade) de Lenny à Squeeze]]&lt;br&gt;
•&amp;nbsp;[[Le_partitionnement|Le partitionnement]]&lt;br&gt; 
•&amp;nbsp;[[Installation_de_squeeze_avec_une_businesscard|Installation de squeeze avec une &quot;businesscard&quot;]]&lt;br&gt;
•&amp;nbsp;[[Debian_on_dreamplug|Installation de Debian sur un &quot;dreamplug&quot;]]&lt;br&gt;
•&amp;nbsp;[[Installation_squeeze_chroot_debootstrap|Installation de Squeeze avec debootstrap et chroot]]&lt;br&gt;
•&amp;nbsp;[[Clef_usb_d'installation|Clef USB d'installation]]&lt;br&gt;

:*Obsolète: 
•&amp;nbsp;[[Installation_lenny_chroot_debootstrap|Installation d'une Lenny avec debootstrap et chroot]]&lt;br&gt;


{| cellspacing=5 cellpadding=5 border=0 width=100%
{{IconLink|Modèle:General/Index/Installation2|Installation|Installation.png|}}
{{IconLink|Modèle:General/Index/Logiciels|Les logiciels|Logiciel.png|}}
{{IconLink|Modèle:General/Index/Reseau_et_Wifi|Réseau et Wifi|internet.png|}}
|-
{{IconLink|Modèle:General/Index/Noyau_(Kernel)|Le noyau|Linux.jpg|}}
{{IconLink|Modèle:General/Index/Les_Trucs_et_astuces|Les Trucs &amp; Astuces|T%26A.jpg|}}
{{IconLink|Modèle:General/Index/Materiel_et_Pilotes|Le matériel et les pilotes|Hardware2.png|}}
|-
{{IconLink|Modèle:General/Index/Commandes|Les commandes|Commandes.png|}}
{{IconLink|Modèle:General/Index/Programmation|La programmation, les scripts...|Programmation.png|}}
{{IconLink|Modèle:General/Index/Securite|Sécurité !|Securite.png|}}
|-
{{IconLink|Modèle:General/Index/Divers|divers|Divers.jpg|}}
{{IconLink|Modèle:General/Index/Documentation_externe|Documentation externe !|Doc.png|}}
|-
|}

&lt;!-- Autre couleur de background #00CCFF --&gt;
{| cellspacing=5 cellpadding=5 border=0 width=100% 
|- style=&quot;background:#e0e0ff; color:black; font-size:16px; -moz-border-radius:8px;&quot;
! width=&quot;66%&quot; | Utilisation du Wiki !! Dernières nouvelles
|-
|valign=top|

* Si vous n'avez jamais utilisé MediaWiki, vous pourrez trouver plus d'informations ici: [http://meta.wikimedia.org/wiki/Aide:Contenu Guide d'utilisation] + [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ MediaWiki]
* Ici vous aurez [[Special:Allpages | l'Index de toutes les pages du Wiki ]]
* En tant que membre du projet vous avez droit à une page personnelle [[ Special:Listusers | (accessible depuis votre UserId)]], une fois que vous vous êtes [[Special:Userlogin | loggé]]
&lt;br&gt;
Amusez vous bien ! ;-)
&lt;br&gt;&lt;br&gt;
| 
{{DernièresNouvelles}}
|-
|}
&lt;br&gt;

&lt;noinclude&gt;[[Catégorie:General/Index|Installation]]&lt;/noinclude&gt;</text>
      <sha1>g6beorgj6a9z4ueysgx05y3jnumpzg3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:General/Index/Internet</title>
    <ns>10</ns>
    <id>185</id>
    <revision>
      <id>724</id>
      <timestamp>2010-02-02T05:51:24Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « ; [[Internet]] [[Article 1]]&amp;nbsp;•  [[Article 2]]&amp;nbsp;•  [[Article 3]]&amp;nbsp;•  [[Article 4]]&amp;nbsp;•  [[Article 5]]&amp;nbsp;•  [[Article 6]]&amp;nbsp;•  [[Article 7]]&amp;n… »</comment>
      <text xml:space="preserve" bytes="268">; [[Internet]]
[[Article 1]]&amp;nbsp;• 
[[Article 2]]&amp;nbsp;• 
[[Article 3]]&amp;nbsp;• 
[[Article 4]]&amp;nbsp;• 
[[Article 5]]&amp;nbsp;• 
[[Article 6]]&amp;nbsp;• 
[[Article 7]]&amp;nbsp;• 
[[Article 8]]&amp;nbsp;• 

&lt;noinclude&gt;[[Catégorie:General/Index|Internet]]&lt;/noinclude&gt;</text>
      <sha1>lr7w5eud33064sn9rdeffees9t1vwtt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:General/Index/Jeux</title>
    <ns>10</ns>
    <id>186</id>
    <revision>
      <id>725</id>
      <timestamp>2010-02-02T05:52:20Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « ; [[Jeux]] [[Article 1]]&amp;nbsp;•  [[Article 2]]&amp;nbsp;•  [[Article 3]]&amp;nbsp;•  [[Article 4]]&amp;nbsp;•  [[Article 5]]&amp;nbsp;•  [[Article 6]]&amp;nbsp;•  [[Article 7]]&amp;nbsp;… »</comment>
      <text xml:space="preserve" bytes="260">; [[Jeux]]
[[Article 1]]&amp;nbsp;• 
[[Article 2]]&amp;nbsp;• 
[[Article 3]]&amp;nbsp;• 
[[Article 4]]&amp;nbsp;• 
[[Article 5]]&amp;nbsp;• 
[[Article 6]]&amp;nbsp;• 
[[Article 7]]&amp;nbsp;• 
[[Article 8]]&amp;nbsp;• 

&lt;noinclude&gt;[[Catégorie:General/Index|Jeux]]&lt;/noinclude&gt;</text>
      <sha1>5yko37pkghr6wd727ha5fa1zwen2c8r</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:General/Index/Kernel (Noyau)</title>
    <ns>10</ns>
    <id>187</id>
    <revision>
      <id>726</id>
      <timestamp>2010-02-02T05:53:31Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « ; [[Kernel (Noyau)]] [[Les_Modules]]&amp;nbsp;•  [[Article 2]]&amp;nbsp;•  [[Article 3]]&amp;nbsp;•  [[Article 4]]&amp;nbsp;•  [[Article 5]]&amp;nbsp;•  [[Article 6]]&amp;nbsp;•  [[Artic… »</comment>
      <text xml:space="preserve" bytes="282">; [[Kernel (Noyau)]]
[[Les_Modules]]&amp;nbsp;• 
[[Article 2]]&amp;nbsp;• 
[[Article 3]]&amp;nbsp;• 
[[Article 4]]&amp;nbsp;• 
[[Article 5]]&amp;nbsp;• 
[[Article 6]]&amp;nbsp;• 
[[Article 7]]&amp;nbsp;• 
[[Article 8]]&amp;nbsp;• 

&lt;noinclude&gt;[[Catégorie:General/Index|Kernel (Noyau)]]&lt;/noinclude&gt;</text>
      <sha1>hl16vqqhwy3s1vw4586b1lh3tmujthi</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:General/Index/Les Trucs et astuces</title>
    <ns>10</ns>
    <id>428</id>
    <revision>
      <id>1573</id>
      <timestamp>2010-06-24T14:49:59Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « ;[http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/T&amp;A Trucs et astuces]  ::•&amp;nbsp;[[1|1]] •&amp;nbsp;[[2|2]] •&amp;nbsp;[[3|3]]  &lt;noinclude&gt;[[Catégor… »</comment>
      <text xml:space="preserve" bytes="208">;[http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/T&amp;A Trucs et astuces]

::•&amp;nbsp;[[1|1]] •&amp;nbsp;[[2|2]] •&amp;nbsp;[[3|3]]

&lt;noinclude&gt;[[Catégorie:General/Index|T&amp;A]]&lt;/noinclude&gt;</text>
      <sha1>krsfj186znypmh2asy1y6849fb1wrbx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1588</id>
      <parentid>1573</parentid>
      <timestamp>2010-06-25T09:11:51Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="346">;[http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/T&amp;A Trucs et astuces]

:*[[:Catégorie:Truc_et_Astuces_divers|T&amp;A Divers]]
:*[[:Catégorie:Truc_et_Astuces_pour_les_portables|T&amp;A Pour les portables]]
::•&amp;nbsp;[[T%26A_pour_les_portables|T&amp;A Pour les portables]]

&lt;noinclude&gt;[[Catégorie:General/Index|T&amp;A]]&lt;/noinclude&gt;</text>
      <sha1>545qdd8iy2awv1erh1bivo5a7rx649m</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1590</id>
      <parentid>1588</parentid>
      <timestamp>2010-06-25T09:20:52Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="354">;[http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/T&amp;A Trucs et astuces]

:*[[:Catégorie:Truc_et_Astuces_divers|T&amp;A Divers]]
:*[[:Catégorie:Truc_et_Astuces_pour_les_portables|T&amp;A Pour les portables]]
::•&amp;nbsp;[[Portables_Gestion_de_l'énérgie|Gestion de l'énérgie]]

&lt;noinclude&gt;[[Catégorie:General/Index|T&amp;A]]&lt;/noinclude&gt;</text>
      <sha1>3jgzic80v79tj8t55c3w79pmxmmu6bl</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1593</id>
      <parentid>1590</parentid>
      <timestamp>2010-06-25T15:09:23Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="371">;[http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Les_Trucs_et_astuces Trucs et astuces]

:*[[:Catégorie:Truc_et_Astuces_divers|T&amp;A Divers]]
:*[[:Catégorie:Truc_et_Astuces_pour_les_portables|T&amp;A Pour les portables]]
::•&amp;nbsp;[[Portables_Gestion_de_l'énérgie|Gestion de l'énérgie]]

&lt;noinclude&gt;[[Catégorie:General/Index|T&amp;A]]&lt;/noinclude&gt;</text>
      <sha1>5yigznywc8zq304yf1kdqp75t3mp04n</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1596</id>
      <parentid>1593</parentid>
      <timestamp>2010-06-26T14:31:06Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="370">;[http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Les_Trucs_et_astuces Trucs et astuces]

:*[[:Catégorie:Truc_et_Astuces_divers|T&amp;A Divers]]
:*[[:Catégorie:Truc_et_Astuces_pour_les_portables|T&amp;A Pour les portables]]
::•&amp;nbsp;[[Portables_Gestion_de_l'énérgie|Gestion de l'énergie]]

&lt;noinclude&gt;[[Catégorie:General/Index|T&amp;A]]&lt;/noinclude&gt;</text>
      <sha1>plyiv8pohzqsoe6fm4mi6vzxozjdwdw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1597</id>
      <parentid>1596</parentid>
      <timestamp>2010-06-26T14:31:50Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="369">;[http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Les_Trucs_et_astuces Trucs et astuces]

:*[[:Catégorie:Truc_et_Astuces_divers|T&amp;A Divers]]
:*[[:Catégorie:Truc_et_Astuces_pour_les_portables|T&amp;A Pour les portables]]
::•&amp;nbsp;[[Portables_Gestion_de_l'énergie|Gestion de l'énergie]]

&lt;noinclude&gt;[[Catégorie:General/Index|T&amp;A]]&lt;/noinclude&gt;</text>
      <sha1>gfgyn38chjr23xnfd38f1bdn1hk3evz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1629</id>
      <parentid>1597</parentid>
      <timestamp>2010-07-05T08:38:07Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="424">#REDIRECT [[isalo:General/Index/Les_Trucs_et_astuces]]
;[http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Les_Trucs_et_astuces Trucs et astuces]

:*[[:Catégorie:Truc_et_Astuces_divers|T&amp;A Divers]]
:*[[:Catégorie:Truc_et_Astuces_pour_les_portables|T&amp;A Pour les portables]]
::•&amp;nbsp;[[Portables_Gestion_de_l'énergie|Gestion de l'énergie]]

&lt;noinclude&gt;[[Catégorie:General/Index|T&amp;A]]&lt;/noinclude&gt;</text>
      <sha1>472n29qxex2thu3mqgdzzrjm149xikf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1664</id>
      <parentid>1629</parentid>
      <timestamp>2010-07-06T09:20:51Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Annulation des modifications 1629 de [[Special:Contributions/Lol|Lol]] ([[User talk:Lol|discussion]])</comment>
      <text xml:space="preserve" bytes="369">;[http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Les_Trucs_et_astuces Trucs et astuces]

:*[[:Catégorie:Truc_et_Astuces_divers|T&amp;A Divers]]
:*[[:Catégorie:Truc_et_Astuces_pour_les_portables|T&amp;A Pour les portables]]
::•&amp;nbsp;[[Portables_Gestion_de_l'énergie|Gestion de l'énergie]]

&lt;noinclude&gt;[[Catégorie:General/Index|T&amp;A]]&lt;/noinclude&gt;</text>
      <sha1>gfgyn38chjr23xnfd38f1bdn1hk3evz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1694</id>
      <parentid>1664</parentid>
      <timestamp>2010-07-26T08:39:10Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="352">;[[/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Les_Trucs_et_astuces|Trucs et astuces]]

:*[[:Catégorie:Truc_et_Astuces_divers|T&amp;A Divers]]
:*[[:Catégorie:Truc_et_Astuces_pour_les_portables|T&amp;A Pour les portables]]
::•&amp;nbsp;[[Portables_Gestion_de_l'énergie|Gestion de l'énergie]]

&lt;noinclude&gt;[[Catégorie:General/Index|T&amp;A]]&lt;/noinclude&gt;</text>
      <sha1>nlr525dw8zas3uvgmebqsxushcexeis</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1742</id>
      <parentid>1694</parentid>
      <timestamp>2010-07-27T18:56:18Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="284">&lt;u&gt;'''Trucs et astuces'''&lt;/u&gt;

:*[[:Catégorie:Truc_et_Astuces_divers|T&amp;A Divers]]
:*[[:Catégorie:Truc_et_Astuces_pour_les_portables|T&amp;A Pour les portables]]
::•&amp;nbsp;[[Portables_Gestion_de_l'énergie|Gestion de l'énergie]]

&lt;noinclude&gt;[[Catégorie:General/Index|T&amp;A]]&lt;/noinclude&gt;</text>
      <sha1>fegnrjp0rvfhwkq2b122z7zq8q95e56</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2056</id>
      <parentid>1742</parentid>
      <timestamp>2010-09-09T08:24:03Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="351">&lt;u&gt;'''Trucs et astuces'''&lt;/u&gt;

:*[[:Catégorie:Truc_et_Astuces_divers|T&amp;A Divers]]
::•&amp;nbsp;[[UUID|Fixer le renommage des partitions avec l'UUID ]]
:*[[:Catégorie:Truc_et_Astuces_pour_les_portables|T&amp;A Pour les portables]]
::•&amp;nbsp;[[Portables_Gestion_de_l'énergie|Gestion de l'énergie]]

&lt;noinclude&gt;[[Catégorie:General/Index|T&amp;A]]&lt;/noinclude&gt;</text>
      <sha1>5qljrxmfxdslbzwlf34qoppwqv0lgbp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2058</id>
      <parentid>2056</parentid>
      <timestamp>2010-09-09T08:25:35Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="352">&lt;u&gt;'''Trucs et astuces'''&lt;/u&gt;

:*[[:Catégorie:Trucs_et_Astuces_divers|T&amp;A Divers]]
::•&amp;nbsp;[[UUID|Fixer le renommage des partitions avec l'UUID ]]
:*[[:Catégorie:Truc_et_Astuces_pour_les_portables|T&amp;A Pour les portables]]
::•&amp;nbsp;[[Portables_Gestion_de_l'énergie|Gestion de l'énergie]]

&lt;noinclude&gt;[[Catégorie:General/Index|T&amp;A]]&lt;/noinclude&gt;</text>
      <sha1>iljnjlr6rxaxg11gxsajw3l4gm6yovw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2124</id>
      <parentid>2058</parentid>
      <timestamp>2010-09-24T06:38:46Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="487">&lt;u&gt;'''Trucs et astuces'''&lt;/u&gt;

:*[[:Catégorie:Trucs_et_Astuces_divers|T&amp;A Divers]]
::•&amp;nbsp;[[UUID|Fixer le renommage des partitions avec l'UUID ]]
:*[[:Catégorie:Truc_et_Astuces_pour_les_portables|T&amp;A Pour les portables]]
::•&amp;nbsp;[[Portables_Gestion_de_l'énergie|Gestion de l'énergie]] •&amp;nbsp;[[Remontage_automatique_des_disques_durs_externes_après_coupure_de_courant|Remontage automatique des disques durs externes]]

&lt;noinclude&gt;[[Catégorie:General/Index|T&amp;A]]&lt;/noinclude&gt;</text>
      <sha1>9hai2s2lo81z5x2mihe1f0gbu5luvy3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2269</id>
      <parentid>2124</parentid>
      <timestamp>2010-11-11T04:37:57Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="687">&lt;u&gt;'''Trucs et astuces'''&lt;/u&gt;

:*[[:Catégorie:Trucs_et_Astuces_divers|T&amp;A Divers]]
::•&amp;nbsp;[[UUID|Fixer le renommage des partitions avec l'UUID ]] •&amp;nbsp;[[Virtualisation_:_Conversion_VDI_vers_Qcow|Virtualisation: Conversion VDI vers Qcow]] •&amp;nbsp;[[Accélérer_la_synchro_ntp_au_démarrage|Accélérer la synchronisation ntp au démarrage]]

:*[[:Catégorie:Truc_et_Astuces_pour_les_portables|T&amp;A Pour les portables]]
::•&amp;nbsp;[[Portables_Gestion_de_l'énergie|Gestion de l'énergie]] •&amp;nbsp;[[Remontage_automatique_des_disques_durs_externes_après_coupure_de_courant|Remontage automatique des disques durs externes]]

&lt;noinclude&gt;[[Catégorie:General/Index|T&amp;A]]&lt;/noinclude&gt;</text>
      <sha1>71gfz4tsruztt3jxr73zmarrhk77s9a</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2471</id>
      <parentid>2269</parentid>
      <timestamp>2010-12-11T13:40:08Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="744">&lt;u&gt;'''Trucs et astuces'''&lt;/u&gt;

:*[[:Catégorie:Trucs_et_Astuces_divers|T&amp;A Divers]]
::•&amp;nbsp;[[UUID|Fixer le renommage des partitions avec l'UUID ]] •&amp;nbsp;[[Virtualisation_:_Conversion_VDI_vers_Qcow|Virtualisation: Conversion VDI vers Qcow]] •&amp;nbsp;[[Accélérer_la_synchro_ntp_au_démarrage|Accélérer la synchronisation ntp au démarrage]]  •&amp;nbsp;[[X2x|Lier deux écrans X distants avec X2x]] 

:*[[:Catégorie:Truc_et_Astuces_pour_les_portables|T&amp;A Pour les portables]]
::•&amp;nbsp;[[Portables_Gestion_de_l'énergie|Gestion de l'énergie]] •&amp;nbsp;[[Remontage_automatique_des_disques_durs_externes_après_coupure_de_courant|Remontage automatique des disques durs externes]]

&lt;noinclude&gt;[[Catégorie:General/Index|T&amp;A]]&lt;/noinclude&gt;</text>
      <sha1>b6v60xvlte06gmvmz50ggp5ey94kw0j</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2646</id>
      <parentid>2471</parentid>
      <timestamp>2010-12-30T14:40:41Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="687">&lt;u&gt;'''Trucs et astuces'''&lt;/u&gt;

:*[[:Catégorie:Trucs_et_Astuces_divers|T&amp;A Divers]]
::•&amp;nbsp;[[UUID|Fixer le renommage des partitions avec l'UUID ]] •&amp;nbsp;[[Virtualisation_:_Conversion_VDI_vers_Qcow|Virtualisation: Conversion VDI vers Qcow]] •&amp;nbsp;[[Accélérer_la_synchro_ntp_au_démarrage|Accélérer la synchronisation ntp au démarrage]]  •&amp;nbsp;[[X2x|Lier deux écrans X distants avec X2x]] 

:*[[:Catégorie:Truc_et_Astuces_pour_les_portables|T&amp;A Pour les portables]]
::•&amp;nbsp;[[Portables_Gestion_de_l'énergie|Gestion de l'énergie]] •&amp;nbsp;[[Remontage_automatique_des_disques_durs_externes_après_coupure_de_courant|Remontage automatique des disques durs externes]]</text>
      <sha1>jl9syazznj2yw1w5jsx01x3zaebl7ue</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3017</id>
      <parentid>2646</parentid>
      <timestamp>2011-06-02T06:15:13Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="764">&lt;u&gt;'''Trucs et astuces'''&lt;/u&gt;

:*[[:Catégorie:Trucs_et_Astuces_divers|T&amp;A Divers]]
::•&amp;nbsp;[[UUID|Fixer le renommage des partitions avec l'UUID ]] •&amp;nbsp;[[Virtualisation_:_Conversion_VDI_vers_Qcow|Virtualisation: Conversion VDI vers Qcow]] •&amp;nbsp;[[Accélérer_la_synchro_ntp_au_démarrage|Accélérer la synchronisation ntp au démarrage]]  •&amp;nbsp;[[X2x|Lier deux écrans X distants avec X2x]]  •&amp;nbsp;[[Apt_%2B_Segmentation_faulty_tree|Apt: Segmentation faulty tree]] 

:*[[:Catégorie:Truc_et_Astuces_pour_les_portables|T&amp;A Pour les portables]]
::•&amp;nbsp;[[Portables_Gestion_de_l'énergie|Gestion de l'énergie]] •&amp;nbsp;[[Remontage_automatique_des_disques_durs_externes_après_coupure_de_courant|Remontage automatique des disques durs externes]]</text>
      <sha1>omaggcaswa023hazrsmzpks8vgv4dmh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3460</id>
      <parentid>3017</parentid>
      <timestamp>2011-09-07T08:26:41Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Voir les logs en direct</comment>
      <text xml:space="preserve" bytes="825">&lt;u&gt;'''Trucs et astuces'''&lt;/u&gt;

:*[[:Catégorie:Trucs_et_Astuces_divers|T&amp;A Divers]]
::•&amp;nbsp;[[UUID|Fixer le renommage des partitions avec l'UUID ]] •&amp;nbsp;[[Virtualisation_:_Conversion_VDI_vers_Qcow|Virtualisation: Conversion VDI vers Qcow]] •&amp;nbsp;[[Accélérer_la_synchro_ntp_au_démarrage|Accélérer la synchronisation ntp au démarrage]]  •&amp;nbsp;[[X2x|Lier deux écrans X distants avec X2x]]  •&amp;nbsp;[[Apt_%2B_Segmentation_faulty_tree|Apt: Segmentation faulty tree]]  •&amp;nbsp;[[Voir_les_logs_en_direct|Voir les logs en direct]]

:*[[:Catégorie:Truc_et_Astuces_pour_les_portables|T&amp;A Pour les portables]]
::•&amp;nbsp;[[Portables_Gestion_de_l'énergie|Gestion de l'énergie]] •&amp;nbsp;[[Remontage_automatique_des_disques_durs_externes_après_coupure_de_courant|Remontage automatique des disques durs externes]]</text>
      <sha1>4qrbi36bb4abde15npspw855ymgazy9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3684</id>
      <parentid>3460</parentid>
      <timestamp>2012-01-22T07:10:44Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Changer_le_mot_de_passe_mysql</comment>
      <text xml:space="preserve" bytes="900">&lt;u&gt;'''Trucs et astuces'''&lt;/u&gt;

:*[[:Catégorie:Trucs_et_Astuces_divers|T&amp;A Divers]]
::•&amp;nbsp;[[UUID|Fixer le renommage des partitions avec l'UUID ]] •&amp;nbsp;[[Virtualisation_:_Conversion_VDI_vers_Qcow|Virtualisation: Conversion VDI vers Qcow]] •&amp;nbsp;[[Accélérer_la_synchro_ntp_au_démarrage|Accélérer la synchronisation ntp au démarrage]]  •&amp;nbsp;[[X2x|Lier deux écrans X distants avec X2x]]  •&amp;nbsp;[[Apt_%2B_Segmentation_faulty_tree|Apt: Segmentation faulty tree]]  •&amp;nbsp;[[Voir_les_logs_en_direct|Voir les logs en direct]]   •&amp;nbsp;[[Changer_le_mot_de_passe_mysql|Changer le mot de passe mysql]]

:*[[:Catégorie:Truc_et_Astuces_pour_les_portables|T&amp;A Pour les portables]]
::•&amp;nbsp;[[Portables_Gestion_de_l'énergie|Gestion de l'énergie]] •&amp;nbsp;[[Remontage_automatique_des_disques_durs_externes_après_coupure_de_courant|Remontage automatique des disques durs externes]]</text>
      <sha1>iwl5zs6yrbtkf1j0m3rbj3v8gtwahj3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4359</id>
      <parentid>3684</parentid>
      <timestamp>2012-07-28T11:17:46Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="961">&lt;u&gt;'''Trucs et astuces'''&lt;/u&gt;

:*[[:Catégorie:Trucs_et_Astuces_divers|T&amp;A Divers]]
::•&amp;nbsp;[[UUID|Fixer le renommage des partitions avec l'UUID ]] •&amp;nbsp;[[Virtualisation_:_Conversion_VDI_vers_Qcow|Virtualisation: Conversion VDI vers Qcow]] •&amp;nbsp;[[Accélérer_la_synchro_ntp_au_démarrage|Accélérer la synchronisation ntp au démarrage]]  •&amp;nbsp;[[X2x|Lier deux écrans X distants avec X2x]]  •&amp;nbsp;[[Apt_%2B_Segmentation_faulty_tree|Apt: Segmentation faulty tree]]  •&amp;nbsp;[[Voir_les_logs_en_direct|Voir les logs en direct]]   •&amp;nbsp;[[Changer_le_mot_de_passe_mysql|Changer le mot de passe mysql]]   •&amp;nbsp; [[Disque-plein|Au secours mon disque est plein]]

:*[[:Catégorie:Truc_et_Astuces_pour_les_portables|T&amp;A Pour les portables]]
::•&amp;nbsp;[[Portables_Gestion_de_l'énergie|Gestion de l'énergie]] •&amp;nbsp;[[Remontage_automatique_des_disques_durs_externes_après_coupure_de_courant|Remontage automatique des disques durs externes]]</text>
      <sha1>jfkxym3dztoz7kutl4y0pnwsrpn4ge4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4371</id>
      <parentid>4359</parentid>
      <timestamp>2012-07-30T03:44:01Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <text xml:space="preserve" bytes="968">&lt;u&gt;'''Trucs et astuces'''&lt;/u&gt;

:*[[:Catégorie:Trucs_et_Astuces_divers|T&amp;A Divers]]
::•&amp;nbsp;[[UUID|Fixer le renommage des partitions avec l'UUID ]] •&amp;nbsp;[[Virtualisation_:_Conversion_VDI_vers_Qcow|Virtualisation: Conversion VDI vers Qcow]] •&amp;nbsp;[[Accélérer_la_synchro_ntp_au_démarrage|Accélérer la synchronisation ntp au démarrage]]  •&amp;nbsp;[[X2x|Lier deux écrans X distants avec X2x]]  •&amp;nbsp;[[Apt_%2B_Segmentation_faulty_tree|Apt: Segmentation faulty tree]]  •&amp;nbsp;[[Voir_les_logs_en_direct|Voir les logs en direct]]   •&amp;nbsp;[[Changer_le_mot_de_passe_mysql|Changer le mot de passe mysql]]   •&amp;nbsp; [[Partition-pleine|Au secours ma partition est pleine]]

:*[[:Catégorie:Truc_et_Astuces_pour_les_portables|T&amp;A Pour les portables]]
::•&amp;nbsp;[[Portables_Gestion_de_l'énergie|Gestion de l'énergie]] •&amp;nbsp;[[Remontage_automatique_des_disques_durs_externes_après_coupure_de_courant|Remontage automatique des disques durs externes]]</text>
      <sha1>tj21scc8umhpszrdeepzfjpkalf54j6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:General/Index/Logiciels</title>
    <ns>10</ns>
    <id>194</id>
    <revision>
      <id>733</id>
      <timestamp>2010-02-02T06:05:33Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « ; [[Logiciels]] [[Article 1]]&amp;nbsp;•  [[Article 2]]&amp;nbsp;•  [[Article 3]]&amp;nbsp;•  [[Article 4]]&amp;nbsp;•  [[Article 5]]&amp;nbsp;•  [[Article 6]]&amp;nbsp;•  [[Article 7]]&amp;… »</comment>
      <text xml:space="preserve" bytes="270">; [[Logiciels]]
[[Article 1]]&amp;nbsp;• 
[[Article 2]]&amp;nbsp;• 
[[Article 3]]&amp;nbsp;• 
[[Article 4]]&amp;nbsp;• 
[[Article 5]]&amp;nbsp;• 
[[Article 6]]&amp;nbsp;• 
[[Article 7]]&amp;nbsp;• 
[[Article 8]]&amp;nbsp;• 

&lt;noinclude&gt;[[Catégorie:General/Index|Logiciels]]&lt;/noinclude&gt;</text>
      <sha1>2hk1p4klud0xvloy1i1zzvf9c2jl5mu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>862</id>
      <parentid>733</parentid>
      <timestamp>2010-02-04T16:49:48Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="279">; [[Logiciels]]
[[Réinstaller_Grub2]]&amp;nbsp;• 
[[Article 2]]&amp;nbsp;• 
[[Article 3]]&amp;nbsp;• 
[[Article 4]]&amp;nbsp;• 
[[Article 5]]&amp;nbsp;• 
[[Article 6]]&amp;nbsp;• 
[[Article 7]]&amp;nbsp;• 
[[Article 8]]&amp;nbsp;• 

&lt;noinclude&gt;[[Catégorie:General/Index|Logiciels]]&lt;/noinclude&gt;</text>
      <sha1>3hg1cknlqosun0ik06yoneq8k8lk7av</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>867</id>
      <parentid>862</parentid>
      <timestamp>2010-02-04T19:19:02Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="298">; [[Logiciels]]
[[Réinstaller_Grub2|Réinstaller Grub2]]&amp;nbsp;• 
[[Article 2]]&amp;nbsp;• 
[[Article 3]]&amp;nbsp;• 
[[Article 4]]&amp;nbsp;• 
[[Article 5]]&amp;nbsp;• 
[[Article 6]]&amp;nbsp;• 
[[Article 7]]&amp;nbsp;• 
[[Article 8]]&amp;nbsp;• 

&lt;noinclude&gt;[[Catégorie:General/Index|Logiciels]]&lt;/noinclude&gt;</text>
      <sha1>9ronlggi5q0qhq59c38atlr67es9ae6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>948</id>
      <parentid>867</parentid>
      <timestamp>2010-02-07T05:44:52Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="381">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Logiciels Logiciels]

[[Réinstaller_Grub2|Réinstaller Grub2]]&amp;nbsp;• 
[[Article 2]]&amp;nbsp;• 
[[Article 3]]&amp;nbsp;• 
[[Article 4]]&amp;nbsp;• 
[[Article 5]]&amp;nbsp;• 
[[Article 6]]&amp;nbsp;• 
[[Article 7]]&amp;nbsp;• 
[[Article 8]]&amp;nbsp;• 

&lt;noinclude&gt;[[Catégorie:General/Index|Logiciels]]&lt;/noinclude&gt;</text>
      <sha1>ammc4mz9o75wuu5ly8m96w738ojhf78</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>953</id>
      <parentid>948</parentid>
      <timestamp>2010-02-07T05:49:40Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="421">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Logiciels Logiciels]

[[Réinstaller_Grub2|Réinstaller Grub2]]&amp;nbsp;• 
[[Gestionnaire_de_fenetres|Gestionnaire de fenetres]]&amp;nbsp;• 
[[Article 3]]&amp;nbsp;• 
[[Article 4]]&amp;nbsp;• 
[[Article 5]]&amp;nbsp;• 
[[Article 6]]&amp;nbsp;• 
[[Article 7]]&amp;nbsp;• 
[[Article 8]]&amp;nbsp;• 

&lt;noinclude&gt;[[Catégorie:General/Index|Logiciels]]&lt;/noinclude&gt;</text>
      <sha1>qiigc2asei6ijc2ere0s5crfoixztkq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>958</id>
      <parentid>953</parentid>
      <timestamp>2010-02-07T06:00:31Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="456">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Logiciels Logiciels]

[[Réinstaller_Grub2|Réinstaller Grub2]]&amp;nbsp;• 
[[Gestionnaire_de_fenetres|Gestionnaire de fenetres]]&amp;nbsp;• 
[[Faireunpaquet|Faire un paquet Debian]]&amp;nbsp;• 
[[CD_audio[CD Audio]]&amp;nbsp;• 
[[Article 5]]&amp;nbsp;• 
[[Article 6]]&amp;nbsp;• 
[[Article 7]]&amp;nbsp;• 
[[Article 8]]&amp;nbsp;• 

&lt;noinclude&gt;[[Catégorie:General/Index|Logiciels]]&lt;/noinclude&gt;</text>
      <sha1>iwu2itj3v9tefrix0rktwysvdkbgxbq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>961</id>
      <parentid>958</parentid>
      <timestamp>2010-02-07T07:30:23Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="811">;[http://beronono.com/wiki-debian/index.php?title=Modèle:General/Index/Logiciels Logiciels]

[[Réinstaller Grub2|Réinstaller Grub2]]&amp;nbsp;• [[Gestionnaire de fenetres|Gestionnaire de fenetres]]&amp;nbsp;• [[Faireunpaquet|Faire un paquet Debian]]&amp;nbsp;• 

*[[:Catégorie:Gestionnaire de fenetres|Catégorie gestionnaire de fenêtres]]

&lt;u&gt;Les flottants&lt;/u&gt; [[Openbox]] | [[Fluxbox]] | [[Pekwm]] | [[Fvwm]] | [[WindowMaker]] | [[Enlightenment]] 

&lt;u&gt;Les tilings&lt;/u&gt; [[Dwm]] | [[Wmii]] | [[Awesome]] | [[Xmonad]] 

*[[:Catégorie:Multimédia|Catégorie multimédia]]

[[CD audio|CD Audio]]&amp;nbsp;• 

*[[:Catégorie Bureautique|Catégorie bureautique]]

[[Article 5]]&amp;nbsp;• [[Article 6]]&amp;nbsp;• [[Article 7]]&amp;nbsp;• [[Article 8]]&amp;nbsp;• 

&lt;noinclude&gt;[[Catégorie:General/Index|Logiciels]]&lt;/noinclude&gt;</text>
      <sha1>m6h7df8r1jstnzcx7wbe2j3wbvxtcfj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>963</id>
      <parentid>961</parentid>
      <timestamp>2010-02-07T07:32:09Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="797">;[http://beronono.com/wiki-debian/index.php?title=Modèle:General/Index/Logiciels Logiciels]

[[Réinstaller Grub2|Réinstaller Grub2]]&amp;nbsp;• [[Gestionnaire de fenetres|Gestionnaire de fenetres]]&amp;nbsp;• [[Faireunpaquet|Faire un paquet Debian]]&amp;nbsp;• 

*[[:Catégorie:Gestionnaire de fenetres|Catégorie gestionnaire de fenêtres]]

Les flottants [[Openbox]] | [[Fluxbox]] | [[Pekwm]] | [[Fvwm]] | [[WindowMaker]] | [[Enlightenment]] 

Les tilings [[Dwm]] | [[Wmii]] | [[Awesome]] | [[Xmonad]] 

*[[:Catégorie:Multimédia|Catégorie multimédia]]

[[CD audio|CD Audio]]&amp;nbsp;• 

*[[:Catégorie Bureautique|Catégorie bureautique]]

[[Article 5]]&amp;nbsp;• [[Article 6]]&amp;nbsp;• [[Article 7]]&amp;nbsp;• [[Article 8]]&amp;nbsp;• 

&lt;noinclude&gt;[[Catégorie:General/Index|Logiciels]]&lt;/noinclude&gt;</text>
      <sha1>gyampgjue89ee771z0wgoizlaihoq8n</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>965</id>
      <parentid>963</parentid>
      <timestamp>2010-02-07T07:36:05Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="799">;[http://beronono.com/wiki-debian/index.php?title=Modèle:General/Index/Logiciels Logiciels]

[[Réinstaller Grub2|Réinstaller Grub2]]&amp;nbsp;• [[Gestionnaire de fenetres|Gestionnaire de fenetres]]&amp;nbsp;• [[Faireunpaquet|Faire un paquet Debian]]&amp;nbsp;• 

*[[:Catégorie:Gestionnaires_de_fenetres|Catégorie gestionnaires de fenêtres]]

Les flottants [[Openbox]] | [[Fluxbox]] | [[Pekwm]] | [[Fvwm]] | [[WindowMaker]] | [[Enlightenment]] 

Les tilings [[Dwm]] | [[Wmii]] | [[Awesome]] | [[Xmonad]] 

*[[:Catégorie:Multimédia|Catégorie multimédia]]

[[CD audio|CD Audio]]&amp;nbsp;• 

*[[:Catégorie Bureautique|Catégorie bureautique]]

[[Article 5]]&amp;nbsp;• [[Article 6]]&amp;nbsp;• [[Article 7]]&amp;nbsp;• [[Article 8]]&amp;nbsp;• 

&lt;noinclude&gt;[[Catégorie:General/Index|Logiciels]]&lt;/noinclude&gt;</text>
      <sha1>3mypoh9zz2spgrydo4ryv68dyiwy418</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>997</id>
      <parentid>965</parentid>
      <timestamp>2010-02-07T13:13:28Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="913">;[http://beronono.com/wiki-debian/index.php?title=Modèle:General/Index/Logiciels Logiciels]

:::[[Réinstaller Grub2|Réinstaller Grub2]]&amp;nbsp;• [[Gestionnaire de fenetres|Gestionnaire de fenetres]]&amp;nbsp;• [[Faireunpaquet|Faire un paquet Debian]]&amp;nbsp;• 

:*[[:Catégorie:Gestionnaires_de_fenetres|Catégorie gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|Les flottants]] : [[Openbox]]&amp;nbsp;•[[Fluxbox]]&amp;nbsp;•[[Pekwm]]&amp;nbsp;•[[Fvwm]]&amp;nbsp;•[[WindowMaker]]&amp;nbsp;•[[Enlightenment]] 
::*[[:Catégorie:Tilings|Les tillings]] : [[Dwm]]&amp;nbsp;•[[Wmii]]&amp;nbsp;•[[Awesome]]&amp;nbsp;•[[Xmonad]] 
:*[[:Catégorie:Multimédia|Catégorie multimédia]]
:::[[CD audio|CD Audio]]&amp;nbsp;• 
:*[[:Catégorie Bureautique|Catégorie bureautique]]
:::[[Article 5]]&amp;nbsp;• [[Article 6]]&amp;nbsp;• [[Article 7]]&amp;nbsp;• [[Article 8]]&amp;nbsp;• 
&lt;noinclude&gt;[[Catégorie:General/Index|Logiciels]]&lt;/noinclude&gt;</text>
      <sha1>0gamucldx1wi3ofbivhsar30v3bwl7m</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>998</id>
      <parentid>997</parentid>
      <timestamp>2010-02-07T13:14:33Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="931">;[http://beronono.com/wiki-debian/index.php?title=Modèle:General/Index/Logiciels Logiciels]

:::[[Réinstaller Grub2|Réinstaller Grub2]]&amp;nbsp;• [[Gestionnaire de fenetres|Gestionnaire de fenetres]]&amp;nbsp;• [[Faireunpaquet|Faire un paquet Debian]]&amp;nbsp;• 

:*[[:Catégorie:Gestionnaires_de_fenetres|Catégorie gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|Les flottants]] : &amp;nbsp;•[[Openbox]]&amp;nbsp;•[[Fluxbox]]&amp;nbsp;•[[Pekwm]]&amp;nbsp;•[[Fvwm]]&amp;nbsp;•[[WindowMaker]]&amp;nbsp;•[[Enlightenment]] 
::*[[:Catégorie:Tilings|Les tillings]] : &amp;nbsp;•[[Dwm]]&amp;nbsp;•[[Wmii]]&amp;nbsp;•[[Awesome]]&amp;nbsp;•[[Xmonad]] 
:*[[:Catégorie:Multimédia|Catégorie multimédia]]
:::[[CD audio|CD Audio]]&amp;nbsp;• 
:*[[:Catégorie Bureautique|Catégorie bureautique]]
:::[[Article 5]]&amp;nbsp;• [[Article 6]]&amp;nbsp;• [[Article 7]]&amp;nbsp;• [[Article 8]]&amp;nbsp;• 
&lt;noinclude&gt;[[Catégorie:General/Index|Logiciels]]&lt;/noinclude&gt;</text>
      <sha1>a99mmonbq0msr994qw6cpnrzaic7se0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1011</id>
      <parentid>998</parentid>
      <timestamp>2010-02-07T15:50:56Z</timestamp>
      <contributor>
        <username>Kna</username>
        <id>35</id>
      </contributor>
      <comment>Avant de les gérer, faut savoir les installer, les programmes</comment>
      <text xml:space="preserve" bytes="989">;[http://beronono.com/wiki-debian/index.php?title=Modèle:General/Index/Logiciels Logiciels]

:::[[Gestion_des_paquets|Installer des programmes]]&amp;nbsp;• [[Réinstaller Grub2|Réinstaller Grub2]]&amp;nbsp;• [[Gestionnaire de fenetres|Gestionnaire de fenetres]]&amp;nbsp;• [[Faireunpaquet|Faire un paquet Debian]]&amp;nbsp;• 

:*[[:Catégorie:Gestionnaires_de_fenetres|Catégorie gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|Les flottants]] : &amp;nbsp;•[[Openbox]]&amp;nbsp;•[[Fluxbox]]&amp;nbsp;•[[Pekwm]]&amp;nbsp;•[[Fvwm]]&amp;nbsp;•[[WindowMaker]]&amp;nbsp;•[[Enlightenment]] 
::*[[:Catégorie:Tilings|Les tillings]] : &amp;nbsp;•[[Dwm]]&amp;nbsp;•[[Wmii]]&amp;nbsp;•[[Awesome]]&amp;nbsp;•[[Xmonad]] 
:*[[:Catégorie:Multimédia|Catégorie multimédia]]
:::[[CD audio|CD Audio]]&amp;nbsp;• 
:*[[:Catégorie Bureautique|Catégorie bureautique]]
:::[[Article 5]]&amp;nbsp;• [[Article 6]]&amp;nbsp;• [[Article 7]]&amp;nbsp;• [[Article 8]]&amp;nbsp;• 
&lt;noinclude&gt;[[Catégorie:General/Index|Logiciels]]&lt;/noinclude&gt;</text>
      <sha1>7sjmaw9oim5ze86me41wzgipfc733bz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1012</id>
      <parentid>1011</parentid>
      <timestamp>2010-02-07T16:04:01Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="990">;[http://beronono.com/wiki-debian/index.php?title=Modèle:General/Index/Logiciels Logiciels]

:::[[Gestion_des_paquets|Installer des programmes]]&amp;nbsp;• [[Réinstaller Grub2|Réinstaller Grub2]]&amp;nbsp;• [[Gestionnaire de fenetres|Gestionnaire de fenetres]]&amp;nbsp;• [[Faireunpaquet|Faire un paquet Debian]]&amp;nbsp;• 

:*[[:Catégorie:Gestionnaires_de_fenetres|Catégorie gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|Les flottants]] : &amp;nbsp;•[[Openbox]]&amp;nbsp;•[[Fluxbox]]&amp;nbsp;•[[Pekwm]]&amp;nbsp;•[[Fvwm]]&amp;nbsp;•[[WindowMaker]]&amp;nbsp;•[[Enlightenment]] 
::*[[:Catégorie:Tillings|Les tillings]] : &amp;nbsp;•[[Dwm]]&amp;nbsp;•[[Wmii]]&amp;nbsp;•[[Awesome]]&amp;nbsp;•[[Xmonad]] 
:*[[:Catégorie:Multimédia|Catégorie multimédia]]
:::[[CD audio|CD Audio]]&amp;nbsp;• 
:*[[:Catégorie Bureautique|Catégorie bureautique]]
:::[[Article 5]]&amp;nbsp;• [[Article 6]]&amp;nbsp;• [[Article 7]]&amp;nbsp;• [[Article 8]]&amp;nbsp;• 
&lt;noinclude&gt;[[Catégorie:General/Index|Logiciels]]&lt;/noinclude&gt;</text>
      <sha1>46iib12p9psz717p0zh1my11krcpykz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1013</id>
      <parentid>1012</parentid>
      <timestamp>2010-02-07T16:05:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="898">;[http://beronono.com/wiki-debian/index.php?title=Modèle:General/Index/Logiciels Logiciels]

:::[[Gestion_des_paquets|Installer des programmes]]&amp;nbsp;• [[Réinstaller Grub2|Réinstaller Grub2]]&amp;nbsp;• [[Faireunpaquet|Faire un paquet Debian]]&amp;nbsp;• 

:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|Les flottants]] : &amp;nbsp;•[[Openbox]]&amp;nbsp;•[[Fluxbox]]&amp;nbsp;•[[Pekwm]]&amp;nbsp;•[[Fvwm]]&amp;nbsp;•[[WindowMaker]]&amp;nbsp;•[[Enlightenment]] 
::*[[:Catégorie:Tillings|Les tillings]] : &amp;nbsp;•[[Dwm]]&amp;nbsp;•[[Wmii]]&amp;nbsp;•[[Awesome]]&amp;nbsp;•[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
:::[[CD audio|CD Audio]]&amp;nbsp;• 
:*[[:Catégorie Bureautique|Bureautique]]
:::[[Article 5]]&amp;nbsp;• [[Article 6]]&amp;nbsp;• [[Article 7]]&amp;nbsp;• [[Article 8]]&amp;nbsp;• 
&lt;noinclude&gt;[[Catégorie:General/Index|Logiciels]]&lt;/noinclude&gt;</text>
      <sha1>itlh0p143q3h4wmm4xj6xb2ijozi3hq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1021</id>
      <parentid>1013</parentid>
      <timestamp>2010-02-08T03:45:27Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="907">;[http://beronono.com/wiki-debian/index.php?title=Modèle:General/Index/Logiciels Logiciels]

:::&amp;nbsp;• [[Gestion_des_paquets|Installer des programmes]] &amp;nbsp;• [[Réinstaller Grub2|Réinstaller Grub2]]&amp;nbsp;• [[Faireunpaquet|Faire un paquet Debian]]

:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|Les flottants]] : &amp;nbsp;•[[Openbox]] &amp;nbsp;•[[Fluxbox]] &amp;nbsp;•[[Pekwm]] &amp;nbsp;•[[Fvwm]] &amp;nbsp;•[[WindowMaker]] &amp;nbsp;•[[Enlightenment]] 
::*[[:Catégorie:Tillings|Les tillings]] : &amp;nbsp;•[[Dwm]] &amp;nbsp;•[[Wmii]] &amp;nbsp;•[[Awesome]] &amp;nbsp;•[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
:::&amp;nbsp;• [[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:::&amp;nbsp;• [[Article 5]]&amp;nbsp;• [[Article 6]]&amp;nbsp;• [[Article 7]]&amp;nbsp;• [[Article 8]]
&lt;noinclude&gt;[[Catégorie:General/Index|Logiciels]]&lt;/noinclude&gt;</text>
      <sha1>df6ltpwy4pabi49narq6ue8s0mex0lm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1022</id>
      <parentid>1021</parentid>
      <timestamp>2010-02-08T03:53:22Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="912">;[http://beronono.com/wiki-debian/index.php?title=Modèle:General/Index/Logiciels Logiciels]

::&amp;nbsp;• [[Gestion_des_paquets|Installer des programmes]] &amp;nbsp;• [[Réinstaller Grub2|Réinstaller Grub2]]&amp;nbsp;• [[Faireunpaquet|Faire un paquet Debian]]

:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
:&gt; [[:Catégorie:Flottants|''Les flottants'']] : &amp;nbsp;•[[Openbox]] &amp;nbsp;•[[Fluxbox]] &amp;nbsp;•[[Pekwm]] &amp;nbsp;•[[Fvwm]] &amp;nbsp;•[[WindowMaker]] &amp;nbsp;•[[Enlightenment]] 
:&gt; [[:Catégorie:Tillings|''Les tillings'']] : &amp;nbsp;•[[Dwm]] &amp;nbsp;•[[Wmii]] &amp;nbsp;•[[Awesome]] &amp;nbsp;•[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::&amp;nbsp;• [[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
::&amp;nbsp;• [[Article 5]]&amp;nbsp;• [[Article 6]]&amp;nbsp;• [[Article 7]]&amp;nbsp;• [[Article 8]]
&lt;noinclude&gt;[[Catégorie:General/Index|Logiciels]]&lt;/noinclude&gt;</text>
      <sha1>mnjh7d5vb23odwrvxrh2bigm0b1jali</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1023</id>
      <parentid>1022</parentid>
      <timestamp>2010-02-08T03:56:38Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="909">;[http://beronono.com/wiki-debian/index.php?title=Modèle:General/Index/Logiciels Logiciels]

::&amp;nbsp;•[[Gestion_des_paquets|Installer des programmes]] &amp;nbsp;•[[Réinstaller Grub2|Réinstaller Grub2]] &amp;nbsp;•[[Faireunpaquet|Faire un paquet Debian]]

:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
:&gt; [[:Catégorie:Flottants|''Les flottants'']] : &amp;nbsp;•[[Openbox]] &amp;nbsp;•[[Fluxbox]] &amp;nbsp;•[[Pekwm]] &amp;nbsp;•[[Fvwm]] &amp;nbsp;•[[WindowMaker]] &amp;nbsp;•[[Enlightenment]] 
:&gt; [[:Catégorie:Tillings|''Les tillings'']] : &amp;nbsp;•[[Dwm]] &amp;nbsp;•[[Wmii]] &amp;nbsp;•[[Awesome]] &amp;nbsp;•[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::&amp;nbsp;• [[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
::&amp;nbsp;•[[Article 5]] &amp;nbsp;•[[Article 6]] &amp;nbsp;•[[Article 7]] &amp;nbsp;•[[Article 8]]
&lt;noinclude&gt;[[Catégorie:General/Index|Logiciels]]&lt;/noinclude&gt;</text>
      <sha1>rpil8p6vicq6e4dfcqjm2ia8jdjvpx0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1025</id>
      <parentid>1023</parentid>
      <timestamp>2010-02-08T04:08:31Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="863">;{{:Modèle:General/Index/Logiciels|Logiciels}}

::•&amp;nbsp;[[Gestion_des_paquets|Installer des programmes]] •&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]]

:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
:&gt; [[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
:&gt; [[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
::•&amp;nbsp;[[Article 5]] •&amp;nbsp;[[Article 6]] •&amp;nbsp;[[Article 7]] •&amp;nbsp;[[Article 8]]
&lt;noinclude&gt;[[Catégorie:General/Index|Logiciels]]&lt;/noinclude&gt;</text>
      <sha1>kilgdxv065bggwheg0n7wktslc11qik</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1026</id>
      <parentid>1025</parentid>
      <timestamp>2010-02-08T04:12:41Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="912">;[http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Logiciels Logiciels]

::•&amp;nbsp;[[Gestion_des_paquets|Installer des programmes]] •&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]]

:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
:&gt; [[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
:&gt; [[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
::•&amp;nbsp;[[Article 5]] •&amp;nbsp;[[Article 6]] •&amp;nbsp;[[Article 7]] •&amp;nbsp;[[Article 8]]
&lt;noinclude&gt;[[Catégorie:General/Index|Logiciels]]&lt;/noinclude&gt;</text>
      <sha1>j7faew7dwk23aubqedfo3vsiroodnlc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1033</id>
      <parentid>1026</parentid>
      <timestamp>2010-02-08T04:30:26Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="913">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Logiciels Logiciels]

::•&amp;nbsp;[[Gestion_des_paquets|Installer des programmes]] •&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]]

:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
:&gt; [[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
:&gt; [[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
::•&amp;nbsp;[[Article 5]] •&amp;nbsp;[[Article 6]] •&amp;nbsp;[[Article 7]] •&amp;nbsp;[[Article 8]]
&lt;noinclude&gt;[[Catégorie:General/Index|Logiciels]]&lt;/noinclude&gt;</text>
      <sha1>h80ab9k7v9pi8fsmiut11qmef7y1ax7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1058</id>
      <parentid>1033</parentid>
      <timestamp>2010-02-09T04:27:41Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="875">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Logiciels Logiciels]

::•&amp;nbsp;[[Gestion_des_paquets|Installer des programmes]] •&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]]

:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
:&gt; [[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
:&gt; [[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
::•&amp;nbsp;[[Article 5]] •&amp;nbsp;[[Article 6]] •&amp;nbsp;[[Article 7]] •&amp;nbsp;[[Article 8]]

[[Catégorie:General]]</text>
      <sha1>niyg62uj24iec853d0umyrztmqq8flg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1069</id>
      <parentid>1058</parentid>
      <timestamp>2010-02-11T08:11:26Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="956">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Logiciels Logiciels]

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Installer des programmes]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]]
:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
::•&amp;nbsp;[[Article 5]] •&amp;nbsp;[[Article 6]] •&amp;nbsp;[[Article 7]] •&amp;nbsp;[[Article 8]]
:*[[:Catégorie Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]]

[[Catégorie:General]]</text>
      <sha1>oav4jstkctxdkyvmv27lfgckwnuwcak</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1073</id>
      <parentid>1069</parentid>
      <timestamp>2010-02-11T08:27:50Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="956">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Logiciels Logiciels]

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Installer des programmes]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]]
:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
::•&amp;nbsp;[[Article 5]] •&amp;nbsp;[[Article 6]] •&amp;nbsp;[[Article 7]] •&amp;nbsp;[[Article 8]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]]

[[Catégorie:General]]</text>
      <sha1>91num463mlhwblee5pabekwmoh6pt9y</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1110</id>
      <parentid>1073</parentid>
      <timestamp>2010-03-03T03:48:18Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="951">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Logiciels Logiciels]

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]]
:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
::•&amp;nbsp;[[Article 5]] •&amp;nbsp;[[Article 6]] •&amp;nbsp;[[Article 7]] •&amp;nbsp;[[Article 8]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]]

[[Catégorie:General]]</text>
      <sha1>piylkarap55y60qxqemdljxok6rea08</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1113</id>
      <parentid>1110</parentid>
      <timestamp>2010-03-03T06:49:05Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="990">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Logiciels Logiciels]

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-listbugs|apt-listbugs]]
:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
::•&amp;nbsp;[[Article 5]] •&amp;nbsp;[[Article 6]] •&amp;nbsp;[[Article 7]] •&amp;nbsp;[[Article 8]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]]

[[Catégorie:General]]</text>
      <sha1>fyrvrj47rxz0euoh8bqf3oks9jny52t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1236</id>
      <parentid>1113</parentid>
      <timestamp>2010-03-31T05:20:45Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1073">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Logiciels Logiciels]

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]]
:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
::•&amp;nbsp;[[Article 5]] •&amp;nbsp;[[Article 6]] •&amp;nbsp;[[Article 7]] •&amp;nbsp;[[Article 8]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]]

[[Catégorie:General]]</text>
      <sha1>12ghv7su6wfc389qqyypvu26rphshmq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1255</id>
      <parentid>1236</parentid>
      <timestamp>2010-04-02T08:56:09Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1170">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Logiciels Logiciels]

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]]
:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
::•&amp;nbsp;[[Article 5]] •&amp;nbsp;[[Article 6]] •&amp;nbsp;[[Article 7]] •&amp;nbsp;[[Article 8]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]]

[[Catégorie:General]]</text>
      <sha1>r3zdzgwih3qb6wsymnb6b12g3xbks8e</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1501</id>
      <parentid>1255</parentid>
      <timestamp>2010-05-17T11:12:20Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1206">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Logiciels Logiciels]

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]]
:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[HTTP|HTTP]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]]
:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]]

[[Catégorie:General]]</text>
      <sha1>52zodi7yqdlh3xbu2mxywohlpu5jjqu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1520</id>
      <parentid>1501</parentid>
      <timestamp>2010-05-18T07:48:56Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1291">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Logiciels Logiciels]

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]
::•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]]
:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[HTTP|HTTP]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]]
:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]]

[[Catégorie:General]]</text>
      <sha1>bs2mpockdbocq8f0ovzmz75ycspynaq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1547</id>
      <parentid>1520</parentid>
      <timestamp>2010-05-27T18:43:22Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1374">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Logiciels Logiciels]

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]
::•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]]
:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[HTTP|HTTP]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]]
:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]]

[[Catégorie:General]]</text>
      <sha1>laphyvf6wpx6hjq04ehgddo3usr5bgv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1583</id>
      <parentid>1547</parentid>
      <timestamp>2010-06-25T05:43:20Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1507">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Logiciels Logiciels]

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]
::•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]]
:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[HTTP|HTTP]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]]
:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]]

[[Catégorie:General]]</text>
      <sha1>0jjv55s7dawbm2qdw3jg85tx0a664lv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1630</id>
      <parentid>1583</parentid>
      <timestamp>2010-07-05T08:38:21Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1551">#REDIRECT [[isalo:General/Index/Logiciels]]
; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Logiciels Logiciels]

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]
::•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]]
:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[HTTP|HTTP]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]]
:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]]

[[Catégorie:General]]</text>
      <sha1>ryt06vwmc645fgsnmapca1j5xripfsc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1663</id>
      <parentid>1630</parentid>
      <timestamp>2010-07-06T09:20:49Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Annulation des modifications 1630 de [[Special:Contributions/Lol|Lol]] ([[User talk:Lol|discussion]])</comment>
      <text xml:space="preserve" bytes="1507">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Logiciels Logiciels]

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]
::•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]]
:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[HTTP|HTTP]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]]
:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]]

[[Catégorie:General]]</text>
      <sha1>0jjv55s7dawbm2qdw3jg85tx0a664lv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1696</id>
      <parentid>1663</parentid>
      <timestamp>2010-07-26T08:40:04Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1490">; [[/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Logiciels|Logiciels]]

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]
::•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]]
:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[HTTP|HTTP]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]]
:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]]

[[Catégorie:General]]</text>
      <sha1>962olo8k70inlar4n7zzozi6geurae6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1712</id>
      <parentid>1696</parentid>
      <timestamp>2010-07-26T17:16:38Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1519">; [[/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Logiciels|Logiciels]]

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]
::•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]]
:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[HTTP|HTTP]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]]
:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Tasksel|Tasksel]]

[[Catégorie:General]]</text>
      <sha1>go80cd20o8z69bobrj98biq7ld3tduc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1743</id>
      <parentid>1712</parentid>
      <timestamp>2010-07-27T18:56:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1461">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]
::•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]]
:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[HTTP|HTTP]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]]
:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Tasksel|Tasksel]]

[[Catégorie:General]]</text>
      <sha1>8rmkozbi60ciem9co8o03iqmokye8iq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1748</id>
      <parentid>1743</parentid>
      <timestamp>2010-07-27T19:08:50Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1596">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]
::•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]]
::•&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]]
:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[HTTP|HTTP]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]]
:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Tasksel|Tasksel]]

[[Catégorie:General]]</text>
      <sha1>7tzihihbuwx0x953eltehy8c9lzrw8x</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1749</id>
      <parentid>1748</parentid>
      <timestamp>2010-07-27T19:11:49Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1646">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]
::•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]]
::•&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]]
:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[HTTP|HTTP]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]]
:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Tasksel|Tasksel]]

[[Catégorie:General]]</text>
      <sha1>4wlbjd628fi1pq0pyd4xc4bekamf2xg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1750</id>
      <parentid>1749</parentid>
      <timestamp>2010-07-27T19:16:47Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1669">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]]•&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]]
:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[HTTP|HTTP]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]]
:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Tasksel|Tasksel]]

[[Catégorie:General]]</text>
      <sha1>gtc1r8q1npmy1lnxq23jbzhq6k9qhoz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1790</id>
      <parentid>1750</parentid>
      <timestamp>2010-07-31T06:40:19Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Ajout lien</comment>
      <text xml:space="preserve" bytes="1720">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]] •&amp;nbsp;[[Sources.list|Le fichier sources.list]] •&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]]
:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[HTTP|HTTP]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]]
:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Tasksel|Tasksel]]

[[Catégorie:General]]</text>
      <sha1>2eduafsbk8kymxoxdpdes2lvtt9sa02</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1792</id>
      <parentid>1790</parentid>
      <timestamp>2010-07-31T07:05:26Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>lien en double</comment>
      <text xml:space="preserve" bytes="1691">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]] •&amp;nbsp;[[Sources.list|Le fichier sources.list]] •&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]]
:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[HTTP|HTTP]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]]
:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]]

[[Catégorie:General]]</text>
      <sha1>jncab67iq1o54r89x2rl06cnvk54d8j</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1834</id>
      <parentid>1792</parentid>
      <timestamp>2010-08-03T06:26:02Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Ajout PXE</comment>
      <text xml:space="preserve" bytes="1738">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]] •&amp;nbsp;[[Sources.list|Le fichier sources.list]] •&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]]
:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[HTTP|HTTP]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]] •&amp;nbsp;[[PXE|Installation d'un serveur PXE]]
:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]]

[[Catégorie:General]]</text>
      <sha1>q5xcud1bez0t7g1um4gflbid22u1qcp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1898</id>
      <parentid>1834</parentid>
      <timestamp>2010-08-08T07:06:52Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Ajout Aptitude</comment>
      <text xml:space="preserve" bytes="1770">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]] •&amp;nbsp;[[Sources.list|Le fichier sources.list]] •&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]] •&amp;nbsp;[[Aptitude|Aptitude]]

:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[HTTP|HTTP]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]] •&amp;nbsp;[[PXE|Installation d'un serveur PXE]]
:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]]

[[Catégorie:General]]</text>
      <sha1>1khfrn3x6h2n03w8ss1jdthcp2tuwn1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2006</id>
      <parentid>1898</parentid>
      <timestamp>2010-08-21T04:21:10Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1833">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]] •&amp;nbsp;[[Sources.list|Le fichier sources.list]] •&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]] •&amp;nbsp;[[Aptitude|Aptitude]]

:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[HTTP|HTTP]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]] •&amp;nbsp;[[PXE|Installation d'un serveur PXE]] •&amp;nbsp;[[Ejabberd|Un serveur jabberd sous Lenny : ejabberd]]
:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]]

[[Catégorie:General]]</text>
      <sha1>lwxelzc4td1eq9vwz8isu8u24zcqhu0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2017</id>
      <parentid>2006</parentid>
      <timestamp>2010-08-21T12:32:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1953">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]] •&amp;nbsp;[[Sources.list|Le fichier sources.list]] •&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]] •&amp;nbsp;[[Aptitude|Aptitude]] •&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]]

:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[HTTP|HTTP]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]] •&amp;nbsp;[[PXE|Installation d'un serveur PXE]] •&amp;nbsp;[[Ejabberd|Un serveur jabberd sous Lenny : ejabberd]]
:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]

[[Catégorie:General]]</text>
      <sha1>sy1p3bqb8st6m6d3y54hotjchuh276h</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2040</id>
      <parentid>2017</parentid>
      <timestamp>2010-09-02T06:15:18Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1982">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]] •&amp;nbsp;[[Sources.list|Le fichier sources.list]] •&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]] •&amp;nbsp;[[Aptitude|Aptitude]] •&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]]

:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[HTTP|HTTP]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]] •&amp;nbsp;[[PXE|Installation d'un serveur PXE]] •&amp;nbsp;[[Ejabberd|Un serveur jabberd sous Lenny : ejabberd]] •&amp;nbsp;[[Tor|Serveur Tor]]
:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]

[[Catégorie:General]]</text>
      <sha1>khy35rd7epmzg3h18pwuxhctonymauh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2044</id>
      <parentid>2040</parentid>
      <timestamp>2010-09-06T05:28:44Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2047">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]] •&amp;nbsp;[[Sources.list|Le fichier sources.list]] •&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]] •&amp;nbsp;[[Aptitude|Aptitude]] •&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]] •&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]]

:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[HTTP|HTTP]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]] •&amp;nbsp;[[PXE|Installation d'un serveur PXE]] •&amp;nbsp;[[Ejabberd|Un serveur jabberd sous Lenny : ejabberd]] •&amp;nbsp;[[Tor|Serveur Tor]]
:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]

[[Catégorie:General]]</text>
      <sha1>3yl5p2q8cbczxfb2mprdrmzyalk7pq6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2090</id>
      <parentid>2044</parentid>
      <timestamp>2010-09-15T16:55:55Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2134">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]] •&amp;nbsp;[[Sources.list|Le fichier sources.list]] •&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]] •&amp;nbsp;[[Aptitude|Aptitude]] •&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]] •&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]]

:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[HTTP|HTTP]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]] •&amp;nbsp;[[PXE|Installation d'un serveur PXE]] •&amp;nbsp;[[Ejabberd|Un serveur jabberd sous Lenny : ejabberd]] •&amp;nbsp;[[Tor|Serveur Tor]] •&amp;nbsp;[[Vsftpd_ssl_chroot_mysql|Serveur FTP sécurisé avec vsftpd (SSL + Mysql)]]

:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]

[[Catégorie:General]]</text>
      <sha1>mwrfq8v3961isvfux9cglj9f28sfgre</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2116</id>
      <parentid>2090</parentid>
      <timestamp>2010-09-23T08:15:33Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2157">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]] •&amp;nbsp;[[Sources.list|Le fichier sources.list]] •&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]] •&amp;nbsp;[[Aptitude|Aptitude]] •&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]] •&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]] •&amp;nbsp;[[DPKG|DPKG]]

:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[HTTP|HTTP]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]] •&amp;nbsp;[[PXE|Installation d'un serveur PXE]] •&amp;nbsp;[[Ejabberd|Un serveur jabberd sous Lenny : ejabberd]] •&amp;nbsp;[[Tor|Serveur Tor]] •&amp;nbsp;[[Vsftpd_ssl_chroot_mysql|Serveur FTP sécurisé avec vsftpd (SSL + Mysql)]]

:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]

[[Catégorie:General]]</text>
      <sha1>4zdzm7o8hjmd0fl5co9n8ne9g1yhs33</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2185</id>
      <parentid>2116</parentid>
      <timestamp>2010-10-01T16:10:24Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2405">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]] •&amp;nbsp;[[Sources.list|Le fichier sources.list]] •&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]] •&amp;nbsp;[[Aptitude|Aptitude]] •&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]] •&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]] •&amp;nbsp;[[DPKG|DPKG]]

:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[HTTP|HTTP]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]] •&amp;nbsp;[[PXE|Installation d'un serveur PXE]] •&amp;nbsp;[[Ejabberd|Un serveur jabberd sous Lenny : ejabberd]] •&amp;nbsp;[[Tor|Serveur Tor]] •&amp;nbsp;[[Vsftpd_ssl_chroot_mysql|Serveur FTP sécurisé avec vsftpd (SSL + Mysql)]] •&amp;nbsp;[[Créer_un_dépôt_debian_trivial|Créer un dépôt debian trivial avec dpkg]] •&amp;nbsp;[[Reprepro|Installation d'un référentiel Debian (pool, sécurisation pgp et mirroring)]] •&amp;nbsp;[[SKS_OpenPGP_Keyserver|SKS_OpenPGP_Keyserver]]



:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]

[[Catégorie:General]]</text>
      <sha1>sy7vymtq170x5rzduyl1i0s5hnjtnqi</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2445</id>
      <parentid>2185</parentid>
      <timestamp>2010-12-06T04:07:25Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2492">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]] •&amp;nbsp;[[Sources.list|Le fichier sources.list]] •&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]] •&amp;nbsp;[[Aptitude|Aptitude]] •&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]] •&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]] •&amp;nbsp;[[DPKG|DPKG]]

:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[HTTP|HTTP]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]] •&amp;nbsp;[[PXE|Installation d'un serveur PXE]] •&amp;nbsp;[[Ejabberd|Un serveur jabberd sous Lenny : ejabberd]] •&amp;nbsp;[[Tor|Serveur Tor]] •&amp;nbsp;[[Vsftpd_ssl_chroot_mysql|Serveur FTP sécurisé avec vsftpd (SSL + Mysql)]] •&amp;nbsp;[[Créer_un_dépôt_debian_trivial|Créer un dépôt debian trivial avec dpkg]] •&amp;nbsp;[[Reprepro|Installation d'un référentiel Debian (pool, sécurisation pgp et mirroring)]] •&amp;nbsp;[[SKS_OpenPGP_Keyserver|SKS_OpenPGP_Keyserver]] •&amp;nbsp;[[Serveur_sftp_%2Brssh%2Bchroot|Serveur sftp, shell réduit (rssh) et chroot]]


:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]

[[Catégorie:General]]</text>
      <sha1>dp10r4pbtscs8ggii9rbrkb7xaj5wnh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2481</id>
      <parentid>2445</parentid>
      <timestamp>2010-12-12T05:43:25Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2496">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]] •&amp;nbsp;[[Sources.list|Le fichier sources.list]] •&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]] •&amp;nbsp;[[Aptitude|Aptitude]] •&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]] •&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]] •&amp;nbsp;[[DPKG|DPKG]]

:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[Apache|Apache]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]] •&amp;nbsp;[[PXE|Installation d'un serveur PXE]] •&amp;nbsp;[[Ejabberd|Un serveur jabberd sous Lenny : ejabberd]] •&amp;nbsp;[[Tor|Serveur Tor]] •&amp;nbsp;[[Vsftpd_ssl_chroot_mysql|Serveur FTP sécurisé avec vsftpd (SSL + Mysql)]] •&amp;nbsp;[[Créer_un_dépôt_debian_trivial|Créer un dépôt debian trivial avec dpkg]] •&amp;nbsp;[[Reprepro|Installation d'un référentiel Debian (pool, sécurisation pgp et mirroring)]] •&amp;nbsp;[[SKS_OpenPGP_Keyserver|SKS_OpenPGP_Keyserver]] •&amp;nbsp;[[Serveur_sftp_%2Brssh%2Bchroot|Serveur sftp, shell réduit (rssh) et chroot]]


:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]

[[Catégorie:General]]</text>
      <sha1>h18v5r6syp39kae4qhrwxfeer16tta2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2556</id>
      <parentid>2481</parentid>
      <timestamp>2010-12-26T14:00:09Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2654">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]] •&amp;nbsp;[[Sources.list|Le fichier sources.list]] •&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]] •&amp;nbsp;[[Aptitude|Aptitude]] •&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]] •&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]] •&amp;nbsp;[[DPKG|DPKG]]

:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[Apache|Apache]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]] •&amp;nbsp;[[PXE|Installation d'un serveur PXE]] •&amp;nbsp;[[Ejabberd|Un serveur jabberd sous Lenny : ejabberd]] •&amp;nbsp;[[Tor|Serveur Tor]] •&amp;nbsp;[[Vsftpd_ssl_chroot_mysql|Serveur FTP sécurisé avec vsftpd (SSL + Mysql)]] •&amp;nbsp;[[Créer_un_dépôt_debian_trivial|Créer un dépôt debian trivial avec dpkg]] •&amp;nbsp;[[Reprepro|Installation d'un référentiel Debian (pool, sécurisation pgp et mirroring)]] •&amp;nbsp;[[SKS_OpenPGP_Keyserver|SKS_OpenPGP_Keyserver]] •&amp;nbsp;[[Serveur_sftp_%2Brssh%2Bchroot|Serveur sftp, shell réduit (rssh) et chroot]]

:*[[:Catégorie:SurveillanceWeb|Serveur Web: surveillance ]]
::•&amp;nbsp;[[Piwik|Installer Piwik]] •&amp;nbsp;[[AWStats|AWStats: installation et configuration]]

:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]

[[Catégorie:General]]</text>
      <sha1>1q1ndv4m8lmavebf2i1mgq8er8fad6j</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2645</id>
      <parentid>2556</parentid>
      <timestamp>2010-12-30T14:38:18Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2630">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]] •&amp;nbsp;[[Sources.list|Le fichier sources.list]] •&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]] •&amp;nbsp;[[Aptitude|Aptitude]] •&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]] •&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]] •&amp;nbsp;[[DPKG|DPKG]]

:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[Apache|Apache]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]] •&amp;nbsp;[[PXE|Installation d'un serveur PXE]] •&amp;nbsp;[[Ejabberd|Un serveur jabberd sous Lenny : ejabberd]] •&amp;nbsp;[[Tor|Serveur Tor]] •&amp;nbsp;[[Vsftpd_ssl_chroot_mysql|Serveur FTP sécurisé avec vsftpd (SSL + Mysql)]] •&amp;nbsp;[[Créer_un_dépôt_debian_trivial|Créer un dépôt debian trivial avec dpkg]] •&amp;nbsp;[[Reprepro|Installation d'un référentiel Debian (pool, sécurisation pgp et mirroring)]] •&amp;nbsp;[[SKS_OpenPGP_Keyserver|SKS_OpenPGP_Keyserver]] •&amp;nbsp;[[Serveur_sftp_%2Brssh%2Bchroot|Serveur sftp, shell réduit (rssh) et chroot]]

:*[[:Catégorie:SurveillanceWeb|Serveur Web: surveillance ]]
::•&amp;nbsp;[[Piwik|Installer Piwik]] •&amp;nbsp;[[AWStats|AWStats: installation et configuration]]

:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]</text>
      <sha1>b0rufbjrkwp6j25hc7volwuwclspfzv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2763</id>
      <parentid>2645</parentid>
      <timestamp>2011-03-28T11:46:17Z</timestamp>
      <contributor>
        <username>François 29</username>
        <id>108</id>
      </contributor>
      <text xml:space="preserve" bytes="2674">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]] •&amp;nbsp;[[Sources.list|Le fichier sources.list]] •&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]] •&amp;nbsp;[[Aptitude|Aptitude]] •&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]] •&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]] •&amp;nbsp;[[DPKG|DPKG]]

:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[Apache|Apache]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]] •&amp;nbsp;[[PXE|Installation d'un serveur PXE]] •&amp;nbsp;[[Ejabberd|Un serveur jabberd sous Lenny : ejabberd]] •&amp;nbsp;[[Tor|Serveur Tor]] •&amp;nbsp;[[Vsftpd_ssl_chroot_mysql|Serveur FTP sécurisé avec vsftpd (SSL + Mysql)]] •&amp;nbsp;[[Créer_un_dépôt_debian_trivial|Créer un dépôt debian trivial avec dpkg]] •&amp;nbsp;[[Reprepro|Installation d'un référentiel Debian (pool, sécurisation pgp et mirroring)]] •&amp;nbsp;[[SKS_OpenPGP_Keyserver|SKS_OpenPGP_Keyserver]] •&amp;nbsp;[[Serveur_sftp_%2Brssh%2Bchroot|Serveur sftp, shell réduit (rssh) et chroot]]

:*[[:Catégorie:SurveillanceWeb|Serveur Web: surveillance ]]
::•&amp;nbsp;[[Piwik|Installer Piwik]] •&amp;nbsp;[[AWStats|AWStats: installation et configuration]]

:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie Généalogie|Généalogie]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]</text>
      <sha1>gazlabybi1wazr3tb3xpg0bdstifils</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2764</id>
      <parentid>2763</parentid>
      <timestamp>2011-03-28T11:53:16Z</timestamp>
      <contributor>
        <username>François 29</username>
        <id>108</id>
      </contributor>
      <text xml:space="preserve" bytes="2630">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]] •&amp;nbsp;[[Sources.list|Le fichier sources.list]] •&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]] •&amp;nbsp;[[Aptitude|Aptitude]] •&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]] •&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]] •&amp;nbsp;[[DPKG|DPKG]]

:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[Apache|Apache]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]] •&amp;nbsp;[[PXE|Installation d'un serveur PXE]] •&amp;nbsp;[[Ejabberd|Un serveur jabberd sous Lenny : ejabberd]] •&amp;nbsp;[[Tor|Serveur Tor]] •&amp;nbsp;[[Vsftpd_ssl_chroot_mysql|Serveur FTP sécurisé avec vsftpd (SSL + Mysql)]] •&amp;nbsp;[[Créer_un_dépôt_debian_trivial|Créer un dépôt debian trivial avec dpkg]] •&amp;nbsp;[[Reprepro|Installation d'un référentiel Debian (pool, sécurisation pgp et mirroring)]] •&amp;nbsp;[[SKS_OpenPGP_Keyserver|SKS_OpenPGP_Keyserver]] •&amp;nbsp;[[Serveur_sftp_%2Brssh%2Bchroot|Serveur sftp, shell réduit (rssh) et chroot]]

:*[[:Catégorie:SurveillanceWeb|Serveur Web: surveillance ]]
::•&amp;nbsp;[[Piwik|Installer Piwik]] •&amp;nbsp;[[AWStats|AWStats: installation et configuration]]

:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]</text>
      <sha1>b0rufbjrkwp6j25hc7volwuwclspfzv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2766</id>
      <parentid>2764</parentid>
      <timestamp>2011-03-31T14:00:13Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2700">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]] •&amp;nbsp;[[Sources.list|Le fichier sources.list]] •&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]] •&amp;nbsp;[[Aptitude|Aptitude]] •&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]] •&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]] •&amp;nbsp;[[DPKG|DPKG]]

:*[[:Catégorie:Grub|Grub]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]

:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[Apache|Apache]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]] •&amp;nbsp;[[PXE|Installation d'un serveur PXE]] •&amp;nbsp;[[Ejabberd|Un serveur jabberd sous Lenny : ejabberd]] •&amp;nbsp;[[Tor|Serveur Tor]] •&amp;nbsp;[[Vsftpd_ssl_chroot_mysql|Serveur FTP sécurisé avec vsftpd (SSL + Mysql)]] •&amp;nbsp;[[Créer_un_dépôt_debian_trivial|Créer un dépôt debian trivial avec dpkg]] •&amp;nbsp;[[Reprepro|Installation d'un référentiel Debian (pool, sécurisation pgp et mirroring)]] •&amp;nbsp;[[SKS_OpenPGP_Keyserver|SKS_OpenPGP_Keyserver]] •&amp;nbsp;[[Serveur_sftp_%2Brssh%2Bchroot|Serveur sftp, shell réduit (rssh) et chroot]]

:*[[:Catégorie:SurveillanceWeb|Serveur Web: surveillance ]]
::•&amp;nbsp;[[Piwik|Installer Piwik]] •&amp;nbsp;[[AWStats|AWStats: installation et configuration]]

:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Généalogie|Généalogie]]</text>
      <sha1>a9bhpq6h56tijndr6gtlmafx5crh6l1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2848</id>
      <parentid>2766</parentid>
      <timestamp>2011-04-09T08:36:41Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2971">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]] •&amp;nbsp;[[Sources.list|Le fichier sources.list]] •&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]] •&amp;nbsp;[[Aptitude|Aptitude]] •&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]] •&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]] •&amp;nbsp;[[DPKG|DPKG]]

:*[[:Catégorie:Grub|Grub]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]

:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[Apache|Apache]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]] •&amp;nbsp;[[PXE|Installation d'un serveur PXE]] •&amp;nbsp;[[Ejabberd|Un serveur jabberd sous Lenny : ejabberd]] •&amp;nbsp;[[Tor|Serveur Tor]] •&amp;nbsp;[[Vsftpd_ssl_chroot_mysql|Serveur FTP sécurisé avec vsftpd (SSL + Mysql)]] •&amp;nbsp;[[Créer_un_dépôt_debian_trivial|Créer un dépôt debian trivial avec dpkg]] •&amp;nbsp;[[Reprepro|Installation d'un référentiel Debian (pool, sécurisation pgp et mirroring)]] •&amp;nbsp;[[SKS_OpenPGP_Keyserver|SKS_OpenPGP_Keyserver]] •&amp;nbsp;[[Serveur_sftp_%2Brssh%2Bchroot|Serveur sftp, shell réduit (rssh) et chroot]] •&amp;nbsp; [[Installation_sur_une_Squeeze_d%27un_serveur_mail_complet_(Postfix_Postfixadmin_Dovecot_Mysql_Amavisd-new_Spamassassin_Clamav_Postgrey_Squirrelmail_Roundcube)_avec_gestion_des_filtres_Imap_et_des_quotas|Installation sur une Squeeze d'un serveur mail complet]]

:*[[:Catégorie:SurveillanceWeb|Serveur Web: surveillance ]]
::•&amp;nbsp;[[Piwik|Installer Piwik]] •&amp;nbsp;[[AWStats|AWStats: installation et configuration]]

:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Généalogie|Généalogie]]</text>
      <sha1>0uqyxoffaiw8xu2sz3rs4fk0af3bmmr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2999</id>
      <parentid>2848</parentid>
      <timestamp>2011-05-19T13:36:54Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3051">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]] •&amp;nbsp;[[Sources.list|Le fichier sources.list]] •&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]] •&amp;nbsp;[[Aptitude|Aptitude]] •&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]] •&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]] •&amp;nbsp;[[DPKG|DPKG]]

:*[[:Catégorie:Grub|Grub]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]

:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[Apache|Apache]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]] •&amp;nbsp;[[PXE|Installation d'un serveur PXE]] •&amp;nbsp;[[Ejabberd|Un serveur jabberd sous Lenny : ejabberd]] •&amp;nbsp;[[Tor|Serveur Tor]] •&amp;nbsp;[[Vsftpd_ssl_chroot_mysql|Serveur FTP sécurisé avec vsftpd (SSL + Mysql)]] •&amp;nbsp;[[Créer_un_dépôt_debian_trivial|Créer un dépôt debian trivial avec dpkg]] •&amp;nbsp;[[Reprepro|Installation d'un référentiel Debian (pool, sécurisation pgp et mirroring)]] •&amp;nbsp;[[SKS_OpenPGP_Keyserver|SKS_OpenPGP_Keyserver]] •&amp;nbsp;[[Serveur_sftp_%2Brssh%2Bchroot|Serveur sftp, shell réduit (rssh) et chroot]] •&amp;nbsp; [[Installation_sur_une_Squeeze_d%27un_serveur_mail_complet_(Postfix_Postfixadmin_Dovecot_Mysql_Amavisd-new_Spamassassin_Clamav_Postgrey_Squirrelmail_Roundcube)_avec_gestion_des_filtres_Imap_et_des_quotas|Installation sur une Squeeze d'un serveur mail complet]] •&amp;nbsp;[[Serveur_OpenVPN|Installation et configuration d'un serveur OpenVPN]]

:*[[:Catégorie:SurveillanceWeb|Serveur Web: surveillance ]]
::•&amp;nbsp;[[Piwik|Installer Piwik]] •&amp;nbsp;[[AWStats|AWStats: installation et configuration]]

:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Généalogie|Généalogie]]</text>
      <sha1>sxj0vry6r4qs24mkaoo2ozha5rt3e1e</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3147</id>
      <parentid>2999</parentid>
      <timestamp>2011-07-31T19:51:25Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Ajout Proftpd</comment>
      <text xml:space="preserve" bytes="3218">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]] •&amp;nbsp;[[Sources.list|Le fichier sources.list]] •&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]] •&amp;nbsp;[[Aptitude|Aptitude]] •&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]] •&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]] •&amp;nbsp;[[DPKG|DPKG]]

:*[[:Catégorie:Grub|Grub]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]

:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[Apache|Apache]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]] •&amp;nbsp;[[PXE|Installation d'un serveur PXE]] •&amp;nbsp;[[Ejabberd|Un serveur jabberd sous Lenny : ejabberd]] •&amp;nbsp;[[Tor|Serveur Tor]] •&amp;nbsp;[[Vsftpd_ssl_chroot_mysql|Serveur FTP sécurisé avec vsftpd (SSL + Mysql)]] •&amp;nbsp;[[Créer_un_dépôt_debian_trivial|Créer un dépôt debian trivial avec dpkg]] •&amp;nbsp;[[Reprepro|Installation d'un référentiel Debian (pool, sécurisation pgp et mirroring)]] •&amp;nbsp;[[SKS_OpenPGP_Keyserver|SKS_OpenPGP_Keyserver]] •&amp;nbsp;[[Serveur_sftp_%2Brssh%2Bchroot|Serveur sftp, shell réduit (rssh) et chroot]] •&amp;nbsp; [[Installation_sur_une_Squeeze_d%27un_serveur_mail_complet_(Postfix_Postfixadmin_Dovecot_Mysql_Amavisd-new_Spamassassin_Clamav_Postgrey_Squirrelmail_Roundcube)_avec_gestion_des_filtres_Imap_et_des_quotas|Installation sur une Squeeze d'un serveur mail complet]] •&amp;nbsp;[[Serveur_OpenVPN|Installation et configuration d'un serveur OpenVPN]] •&amp;nbsp; [[Installation_de_Proftpd_avec_base_de_données_Mysql_%2B_TLS_et_gestion_des_users_virtuel_à_l%27aide_de_proftpdadmin|ProFtpd + MySql + TLS + ProftpAdmin]]

:*[[:Catégorie:SurveillanceWeb|Serveur Web: surveillance ]]
::•&amp;nbsp;[[Piwik|Installer Piwik]] •&amp;nbsp;[[AWStats|AWStats: installation et configuration]]

:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Généalogie|Généalogie]]</text>
      <sha1>qc07agfxv2t93yjgm51yz0my093nhgh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3157</id>
      <parentid>3147</parentid>
      <timestamp>2011-08-02T13:44:06Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>NTP:synchroniser l'horloge (serveur/client)</comment>
      <text xml:space="preserve" bytes="3279">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]] •&amp;nbsp;[[Sources.list|Le fichier sources.list]] •&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]] •&amp;nbsp;[[Aptitude|Aptitude]] •&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]] •&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]] •&amp;nbsp;[[DPKG|DPKG]]

:*[[:Catégorie:Grub|Grub]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]

:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[Apache|Apache]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]] •&amp;nbsp;[[PXE|Installation d'un serveur PXE]] •&amp;nbsp;[[Ejabberd|Un serveur jabberd sous Lenny : ejabberd]] •&amp;nbsp;[[Tor|Serveur Tor]] •&amp;nbsp;[[Vsftpd_ssl_chroot_mysql|Serveur FTP sécurisé avec vsftpd (SSL + Mysql)]] •&amp;nbsp;[[Créer_un_dépôt_debian_trivial|Créer un dépôt debian trivial avec dpkg]] •&amp;nbsp;[[Reprepro|Installation d'un référentiel Debian (pool, sécurisation pgp et mirroring)]] •&amp;nbsp;[[SKS_OpenPGP_Keyserver|SKS_OpenPGP_Keyserver]] •&amp;nbsp;[[Serveur_sftp_%2Brssh%2Bchroot|Serveur sftp, shell réduit (rssh) et chroot]] •&amp;nbsp; [[Installation_sur_une_Squeeze_d%27un_serveur_mail_complet_(Postfix_Postfixadmin_Dovecot_Mysql_Amavisd-new_Spamassassin_Clamav_Postgrey_Squirrelmail_Roundcube)_avec_gestion_des_filtres_Imap_et_des_quotas|Installation sur une Squeeze d'un serveur mail complet]] •&amp;nbsp;[[Serveur_OpenVPN|Installation et configuration d'un serveur OpenVPN]] •&amp;nbsp; [[Installation_de_Proftpd_avec_base_de_données_Mysql_%2B_TLS_et_gestion_des_users_virtuel_à_l%27aide_de_proftpdadmin|ProFtpd + MySql + TLS + ProftpAdmin]]

:*[[:Catégorie:SurveillanceWeb|Serveur Web: surveillance ]]
::•&amp;nbsp;[[Piwik|Installer Piwik]] •&amp;nbsp;[[AWStats|AWStats: installation et configuration]]

:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Généalogie|Généalogie]] •&amp;nbsp;[[NTP|NTP:synchroniser l'horloge (serveur/client)]]</text>
      <sha1>ef1rp32r3bqu8ipqhecn6dwlvv31nrm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3162</id>
      <parentid>3157</parentid>
      <timestamp>2011-08-03T08:09:04Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>ssh</comment>
      <text xml:space="preserve" bytes="3272">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]] •&amp;nbsp;[[Sources.list|Le fichier sources.list]] •&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]] •&amp;nbsp;[[Aptitude|Aptitude]] •&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]] •&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]] •&amp;nbsp;[[DPKG|DPKG]]

:*[[:Catégorie:Grub|Grub]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]

:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[Apache|Apache]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]] •&amp;nbsp;[[PXE|Installation d'un serveur PXE]] •&amp;nbsp;[[Ejabberd|Un serveur jabberd sous Lenny : ejabberd]] •&amp;nbsp;[[Tor|Serveur Tor]] •&amp;nbsp;[[Vsftpd_ssl_chroot_mysql|Serveur FTP sécurisé avec vsftpd (SSL + Mysql)]] •&amp;nbsp;[[Créer_un_dépôt_debian_trivial|Créer un dépôt debian trivial avec dpkg]] •&amp;nbsp;[[Reprepro|Installation d'un référentiel Debian (pool, sécurisation pgp et mirroring)]] •&amp;nbsp;[[SKS_OpenPGP_Keyserver|SKS_OpenPGP_Keyserver]] •&amp;nbsp;[[Serveur_sftp_%2Brssh%2Bchroot|Serveur sftp, shell réduit (rssh) et chroot]] •&amp;nbsp; [[Installation_sur_une_Squeeze_d%27un_serveur_mail_complet_(Postfix_Postfixadmin_Dovecot_Mysql_Amavisd-new_Spamassassin_Clamav_Postgrey_Squirrelmail_Roundcube)_avec_gestion_des_filtres_Imap_et_des_quotas|Installation sur une Squeeze d'un serveur mail complet]] •&amp;nbsp;[[Serveur_OpenVPN|Installation et configuration d'un serveur OpenVPN]] •&amp;nbsp; [[Installation_de_Proftpd_avec_base_de_données_Mysql_%2B_TLS_et_gestion_des_users_virtuel_à_l%27aide_de_proftpdadmin|ProFtpd + MySql + TLS + ProftpAdmin]]

:*[[:Catégorie:SurveillanceWeb|Serveur Web: surveillance ]]
::•&amp;nbsp;[[Piwik|Installer Piwik]] •&amp;nbsp;[[AWStats|AWStats: installation et configuration]]

:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Généalogie|Généalogie]] •&amp;nbsp;[[Ssh|Installation et configuration de ssh]]</text>
      <sha1>8vxudliw5a0bfo0bng1gois8jcoflch</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3270</id>
      <parentid>3162</parentid>
      <timestamp>2011-08-12T05:33:03Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3345">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]] •&amp;nbsp;[[Sources.list|Le fichier sources.list]] •&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]] •&amp;nbsp;[[Aptitude|Aptitude]] •&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]] •&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]] •&amp;nbsp;[[DPKG|DPKG]]

:*[[:Catégorie:Grub|Grub]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]

:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[Apache|Apache]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]] •&amp;nbsp;[[PXE|Installation d'un serveur PXE]] •&amp;nbsp;[[Ejabberd|Un serveur jabberd sous Lenny : ejabberd]] •&amp;nbsp;[[Tor|Serveur Tor]] •&amp;nbsp;[[Vsftpd_ssl_chroot_mysql|Serveur FTP sécurisé avec vsftpd (SSL + Mysql)]] •&amp;nbsp;[[Créer_un_dépôt_debian_trivial|Créer un dépôt debian trivial avec dpkg]] •&amp;nbsp;[[Reprepro|Installation d'un référentiel Debian (pool, sécurisation pgp et mirroring)]] •&amp;nbsp;[[SKS_OpenPGP_Keyserver|SKS_OpenPGP_Keyserver]] •&amp;nbsp;[[Serveur_sftp_%2Brssh%2Bchroot|Serveur sftp, shell réduit (rssh) et chroot]] •&amp;nbsp; [[Installation_sur_une_Squeeze_d%27un_serveur_mail_complet_(Postfix_Postfixadmin_Dovecot_Mysql_Amavisd-new_Spamassassin_Clamav_Postgrey_Squirrelmail_Roundcube)_avec_gestion_des_filtres_Imap_et_des_quotas|Installation sur une Squeeze d'un serveur mail complet]] •&amp;nbsp;[[Serveur_OpenVPN|Installation et configuration d'un serveur OpenVPN]] •&amp;nbsp; [[Installation_de_Proftpd_avec_base_de_données_Mysql_%2B_TLS_et_gestion_des_users_virtuel_à_l%27aide_de_proftpdadmin|ProFtpd + MySql + TLS + ProftpAdmin]]

:*[[:Catégorie:SurveillanceWeb|Serveur Web: surveillance ]]
::•&amp;nbsp;[[Piwik|Installer Piwik]] •&amp;nbsp;[[AWStats|AWStats: installation et configuration]]

:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Généalogie|Généalogie]] •&amp;nbsp;[[Ssh|Installation et configuration de ssh]] •&amp;nbsp;[[Generation_mots_de_passe|Les générateurs de mots de passe]]</text>
      <sha1>dd7u2n1mea9hevau2djb9ze8u6fyhkh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3280</id>
      <parentid>3270</parentid>
      <timestamp>2011-08-12T07:48:20Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3414">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]] •&amp;nbsp;[[Sources.list|Le fichier sources.list]] •&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]] •&amp;nbsp;[[Aptitude|Aptitude]] •&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]] •&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]] •&amp;nbsp;[[DPKG|DPKG]]

:*[[:Catégorie:Grub|Grub]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]

:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[Apache|Apache]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]] •&amp;nbsp;[[PXE|Installation d'un serveur PXE]] •&amp;nbsp;[[Ejabberd|Un serveur jabberd sous Lenny : ejabberd]] •&amp;nbsp;[[Tor|Serveur Tor]] •&amp;nbsp;[[Vsftpd_ssl_chroot_mysql|Serveur FTP sécurisé avec vsftpd (SSL + Mysql)]] •&amp;nbsp;[[Créer_un_dépôt_debian_trivial|Créer un dépôt debian trivial avec dpkg]] •&amp;nbsp;[[Reprepro|Installation d'un référentiel Debian (pool, sécurisation pgp et mirroring)]] •&amp;nbsp;[[SKS_OpenPGP_Keyserver|SKS_OpenPGP_Keyserver]] •&amp;nbsp;[[Serveur_sftp_%2Brssh%2Bchroot|Serveur sftp, shell réduit (rssh) et chroot]] •&amp;nbsp; [[Installation_sur_une_Squeeze_d%27un_serveur_mail_complet_(Postfix_Postfixadmin_Dovecot_Mysql_Amavisd-new_Spamassassin_Clamav_Postgrey_Squirrelmail_Roundcube)_avec_gestion_des_filtres_Imap_et_des_quotas|Installation sur une Squeeze d'un serveur mail complet]] •&amp;nbsp;[[Serveur_OpenVPN|Installation et configuration d'un serveur OpenVPN]] •&amp;nbsp; [[Installation_de_Proftpd_avec_base_de_données_Mysql_%2B_TLS_et_gestion_des_users_virtuel_à_l%27aide_de_proftpdadmin|ProFtpd + MySql + TLS + ProftpAdmin]]

:*[[:Catégorie:SurveillanceWeb|Serveur Web: surveillance ]]
::•&amp;nbsp;[[Piwik|Installer Piwik]] •&amp;nbsp;[[AWStats|AWStats: installation et configuration]]

:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Généalogie|Généalogie]] •&amp;nbsp;[[Ssh|Installation et configuration de ssh]] •&amp;nbsp;[[Generation_mots_de_passe|Les générateurs de mots de passe]] •&amp;nbsp;[[Interfaces_graphiques_Rsync|Interfaces graphiques Rsync]]</text>
      <sha1>tosu31r9swm5ayj88xvrfnglvvjshq0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3284</id>
      <parentid>3280</parentid>
      <timestamp>2011-08-13T13:22:47Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Smartmontools</comment>
      <text xml:space="preserve" bytes="3499">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]] •&amp;nbsp;[[Sources.list|Le fichier sources.list]] •&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]] •&amp;nbsp;[[Aptitude|Aptitude]] •&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]] •&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]] •&amp;nbsp;[[DPKG|DPKG]]

:*[[:Catégorie:Grub|Grub]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]

:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[Apache|Apache]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]] •&amp;nbsp;[[PXE|Installation d'un serveur PXE]] •&amp;nbsp;[[Ejabberd|Un serveur jabberd sous Lenny : ejabberd]] •&amp;nbsp;[[Tor|Serveur Tor]] •&amp;nbsp;[[Vsftpd_ssl_chroot_mysql|Serveur FTP sécurisé avec vsftpd (SSL + Mysql)]] •&amp;nbsp;[[Créer_un_dépôt_debian_trivial|Créer un dépôt debian trivial avec dpkg]] •&amp;nbsp;[[Reprepro|Installation d'un référentiel Debian (pool, sécurisation pgp et mirroring)]] •&amp;nbsp;[[SKS_OpenPGP_Keyserver|SKS_OpenPGP_Keyserver]] •&amp;nbsp;[[Serveur_sftp_%2Brssh%2Bchroot|Serveur sftp, shell réduit (rssh) et chroot]] •&amp;nbsp; [[Installation_sur_une_Squeeze_d%27un_serveur_mail_complet_(Postfix_Postfixadmin_Dovecot_Mysql_Amavisd-new_Spamassassin_Clamav_Postgrey_Squirrelmail_Roundcube)_avec_gestion_des_filtres_Imap_et_des_quotas|Installation sur une Squeeze d'un serveur mail complet]] •&amp;nbsp;[[Serveur_OpenVPN|Installation et configuration d'un serveur OpenVPN]] •&amp;nbsp; [[Installation_de_Proftpd_avec_base_de_données_Mysql_%2B_TLS_et_gestion_des_users_virtuel_à_l%27aide_de_proftpdadmin|ProFtpd + MySql + TLS + ProftpAdmin]]

:*[[:Catégorie:SurveillanceWeb|Serveur Web: surveillance ]]
::•&amp;nbsp;[[Piwik|Installer Piwik]] •&amp;nbsp;[[AWStats|AWStats: installation et configuration]]

:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Généalogie|Généalogie]] •&amp;nbsp;[[Ssh|Installation et configuration de ssh]] •&amp;nbsp;[[Generation_mots_de_passe|Les générateurs de mots de passe]] •&amp;nbsp;[[Interfaces_graphiques_Rsync|Interfaces graphiques Rsync]] •&amp;nbsp;[[Smartmontools|Connaître l'état de ses disques durs avec Smartmontools]]</text>
      <sha1>ss5u9a9d0nwqstf57bdrsskaf4aczq6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3386</id>
      <parentid>3284</parentid>
      <timestamp>2011-08-23T13:06:16Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>+Monit</comment>
      <text xml:space="preserve" bytes="3552">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]] •&amp;nbsp;[[Sources.list|Le fichier sources.list]] •&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]] •&amp;nbsp;[[Aptitude|Aptitude]] •&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]] •&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]] •&amp;nbsp;[[DPKG|DPKG]]

:*[[:Catégorie:Grub|Grub]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]

:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[Apache|Apache]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]] •&amp;nbsp;[[PXE|Installation d'un serveur PXE]] •&amp;nbsp;[[Ejabberd|Un serveur jabberd sous Lenny : ejabberd]] •&amp;nbsp;[[Tor|Serveur Tor]] •&amp;nbsp;[[Vsftpd_ssl_chroot_mysql|Serveur FTP sécurisé avec vsftpd (SSL + Mysql)]] •&amp;nbsp;[[Créer_un_dépôt_debian_trivial|Créer un dépôt debian trivial avec dpkg]] •&amp;nbsp;[[Reprepro|Installation d'un référentiel Debian (pool, sécurisation pgp et mirroring)]] •&amp;nbsp;[[SKS_OpenPGP_Keyserver|SKS_OpenPGP_Keyserver]] •&amp;nbsp;[[Serveur_sftp_%2Brssh%2Bchroot|Serveur sftp, shell réduit (rssh) et chroot]] •&amp;nbsp; [[Installation_sur_une_Squeeze_d%27un_serveur_mail_complet_(Postfix_Postfixadmin_Dovecot_Mysql_Amavisd-new_Spamassassin_Clamav_Postgrey_Squirrelmail_Roundcube)_avec_gestion_des_filtres_Imap_et_des_quotas|Installation sur une Squeeze d'un serveur mail complet]] •&amp;nbsp;[[Serveur_OpenVPN|Installation et configuration d'un serveur OpenVPN]] •&amp;nbsp; [[Installation_de_Proftpd_avec_base_de_données_Mysql_%2B_TLS_et_gestion_des_users_virtuel_à_l%27aide_de_proftpdadmin|ProFtpd + MySql + TLS + ProftpAdmin]]

:*[[:Catégorie:SurveillanceWeb|Serveur Web: surveillance ]]
::•&amp;nbsp;[[Piwik|Installer Piwik]] •&amp;nbsp;[[AWStats|AWStats: installation et configuration]]

:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Généalogie|Généalogie]] •&amp;nbsp;[[Ssh|Installation et configuration de ssh]] •&amp;nbsp;[[Generation_mots_de_passe|Les générateurs de mots de passe]] •&amp;nbsp;[[Interfaces_graphiques_Rsync|Interfaces graphiques Rsync]] •&amp;nbsp;[[Smartmontools|Connaître l'état de ses disques durs avec Smartmontools]] •&amp;nbsp;[[Monit|Surveiller son serveur avec Monit]]</text>
      <sha1>165co5vpd5gvgyxn1mnzl90e4okbfr2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3457</id>
      <parentid>3386</parentid>
      <timestamp>2011-09-07T08:26:26Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>meilleurs logiciels pour console</comment>
      <text xml:space="preserve" bytes="3646">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]] •&amp;nbsp;[[Sources.list|Le fichier sources.list]] •&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]] •&amp;nbsp;[[Aptitude|Aptitude]] •&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]] •&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]] •&amp;nbsp;[[DPKG|DPKG]]

:*[[:Catégorie:Grub|Grub]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]

:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[Apache|Apache]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]] •&amp;nbsp;[[PXE|Installation d'un serveur PXE]] •&amp;nbsp;[[Ejabberd|Un serveur jabberd sous Lenny : ejabberd]] •&amp;nbsp;[[Tor|Serveur Tor]] •&amp;nbsp;[[Vsftpd_ssl_chroot_mysql|Serveur FTP sécurisé avec vsftpd (SSL + Mysql)]] •&amp;nbsp;[[Créer_un_dépôt_debian_trivial|Créer un dépôt debian trivial avec dpkg]] •&amp;nbsp;[[Reprepro|Installation d'un référentiel Debian (pool, sécurisation pgp et mirroring)]] •&amp;nbsp;[[SKS_OpenPGP_Keyserver|SKS_OpenPGP_Keyserver]] •&amp;nbsp;[[Serveur_sftp_%2Brssh%2Bchroot|Serveur sftp, shell réduit (rssh) et chroot]] •&amp;nbsp; [[Installation_sur_une_Squeeze_d%27un_serveur_mail_complet_(Postfix_Postfixadmin_Dovecot_Mysql_Amavisd-new_Spamassassin_Clamav_Postgrey_Squirrelmail_Roundcube)_avec_gestion_des_filtres_Imap_et_des_quotas|Installation sur une Squeeze d'un serveur mail complet]] •&amp;nbsp;[[Serveur_OpenVPN|Installation et configuration d'un serveur OpenVPN]] •&amp;nbsp; [[Installation_de_Proftpd_avec_base_de_données_Mysql_%2B_TLS_et_gestion_des_users_virtuel_à_l%27aide_de_proftpdadmin|ProFtpd + MySql + TLS + ProftpAdmin]]

:*[[:Catégorie:SurveillanceWeb|Serveur Web: surveillance ]]
::•&amp;nbsp;[[Piwik|Installer Piwik]] •&amp;nbsp;[[AWStats|AWStats: installation et configuration]]

:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Généalogie|Généalogie]] •&amp;nbsp;[[Ssh|Installation et configuration de ssh]] •&amp;nbsp;[[Generation_mots_de_passe|Les générateurs de mots de passe]] •&amp;nbsp;[[Interfaces_graphiques_Rsync|Interfaces graphiques Rsync]] •&amp;nbsp;[[Smartmontools|Connaître l'état de ses disques durs avec Smartmontools]] •&amp;nbsp;[[Monit|Surveiller son serveur avec Monit]] •&amp;nbsp;[[Meilleurs_logiciels_pour_console|Sélection des meilleurs logiciels pour console]]</text>
      <sha1>lcyg36xt11kl402fd203q93oidf4d8g</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3481</id>
      <parentid>3457</parentid>
      <timestamp>2011-09-18T10:06:21Z</timestamp>
      <contributor>
        <username>Kna</username>
        <id>35</id>
      </contributor>
      <comment>Ajout de « gestion des services au boot »</comment>
      <text xml:space="preserve" bytes="3692">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]] •&amp;nbsp;[[Sources.list|Le fichier sources.list]] •&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]] •&amp;nbsp;[[Aptitude|Aptitude]] •&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]] •&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]] •&amp;nbsp;[[DPKG|DPKG]]

:*[[:Catégorie:Grub|Grub]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]

:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[Apache|Apache]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]] •&amp;nbsp;[[PXE|Installation d'un serveur PXE]] •&amp;nbsp;[[Ejabberd|Un serveur jabberd sous Lenny : ejabberd]] •&amp;nbsp;[[Tor|Serveur Tor]] •&amp;nbsp;[[Vsftpd_ssl_chroot_mysql|Serveur FTP sécurisé avec vsftpd (SSL + Mysql)]] •&amp;nbsp;[[Créer_un_dépôt_debian_trivial|Créer un dépôt debian trivial avec dpkg]] •&amp;nbsp;[[Reprepro|Installation d'un référentiel Debian (pool, sécurisation pgp et mirroring)]] •&amp;nbsp;[[SKS_OpenPGP_Keyserver|SKS_OpenPGP_Keyserver]] •&amp;nbsp;[[Serveur_sftp_%2Brssh%2Bchroot|Serveur sftp, shell réduit (rssh) et chroot]] •&amp;nbsp; [[Installation_sur_une_Squeeze_d%27un_serveur_mail_complet_(Postfix_Postfixadmin_Dovecot_Mysql_Amavisd-new_Spamassassin_Clamav_Postgrey_Squirrelmail_Roundcube)_avec_gestion_des_filtres_Imap_et_des_quotas|Installation sur une Squeeze d'un serveur mail complet]] •&amp;nbsp;[[Serveur_OpenVPN|Installation et configuration d'un serveur OpenVPN]] •&amp;nbsp; [[Installation_de_Proftpd_avec_base_de_données_Mysql_%2B_TLS_et_gestion_des_users_virtuel_à_l%27aide_de_proftpdadmin|ProFtpd + MySql + TLS + ProftpAdmin]]

:*[[:Catégorie:SurveillanceWeb|Serveur Web: surveillance ]]
::•&amp;nbsp;[[Piwik|Installer Piwik]] •&amp;nbsp;[[AWStats|AWStats: installation et configuration]]

:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Généalogie|Généalogie]] •&amp;nbsp;[[Ssh|Installation et configuration de ssh]] •&amp;nbsp;[[Generation_mots_de_passe|Les générateurs de mots de passe]] •&amp;nbsp;[[Interfaces_graphiques_Rsync|Interfaces graphiques Rsync]] •&amp;nbsp;[[Smartmontools|Connaître l'état de ses disques durs avec Smartmontools]] •&amp;nbsp;[[Monit|Surveiller son serveur avec Monit]] •&amp;nbsp;[[Meilleurs_logiciels_pour_console|Sélection des meilleurs logiciels pour console]]•&amp;nbsp;[[Init|Gestion des services au boot]]</text>
      <sha1>crr0mp4pszr7qj285cwx4g6fycsa5gm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3549</id>
      <parentid>3481</parentid>
      <timestamp>2011-11-21T07:08:36Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3800">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]] •&amp;nbsp;[[Sources.list|Le fichier sources.list]] •&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]] •&amp;nbsp;[[Aptitude|Aptitude]] •&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]] •&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]] •&amp;nbsp;[[DPKG|DPKG]]

:*[[:Catégorie:Grub|Grub]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]

:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[Apache|Apache]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]] •&amp;nbsp;[[PXE|Installation d'un serveur PXE]] •&amp;nbsp;[[Ejabberd|Un serveur jabberd sous Lenny : ejabberd]] •&amp;nbsp;[[Tor|Serveur Tor]] •&amp;nbsp;[[Vsftpd_ssl_chroot_mysql|Serveur FTP sécurisé avec vsftpd (SSL + Mysql)]] •&amp;nbsp;[[Créer_un_dépôt_debian_trivial|Créer un dépôt debian trivial avec dpkg]] •&amp;nbsp;[[Reprepro|Installation d'un référentiel Debian (pool, sécurisation pgp et mirroring)]] •&amp;nbsp;[[SKS_OpenPGP_Keyserver|SKS_OpenPGP_Keyserver]] •&amp;nbsp;[[Serveur_sftp_%2Brssh%2Bchroot|Serveur sftp, shell réduit (rssh) et chroot]] •&amp;nbsp; [[Installation_sur_une_Squeeze_d%27un_serveur_mail_complet_(Postfix_Postfixadmin_Dovecot_Mysql_Amavisd-new_Spamassassin_Clamav_Postgrey_Squirrelmail_Roundcube)_avec_gestion_des_filtres_Imap_et_des_quotas|Installation sur une Squeeze d'un serveur mail complet]] •&amp;nbsp;[[Serveur_OpenVPN|Installation et configuration d'un serveur OpenVPN]] •&amp;nbsp; [[Installation_de_Proftpd_avec_base_de_données_Mysql_%2B_TLS_et_gestion_des_users_virtuel_à_l%27aide_de_proftpdadmin|ProFtpd + MySql + TLS + ProftpAdmin]]

:*[[:Catégorie:SurveillanceWeb|Serveur Web: surveillance ]]
::•&amp;nbsp;[[Piwik|Installer Piwik]] •&amp;nbsp;[[AWStats|AWStats: installation et configuration]]

:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Généalogie|Généalogie]] •&amp;nbsp;[[Ssh|Installation et configuration de ssh]] •&amp;nbsp;[[Generation_mots_de_passe|Les générateurs de mots de passe]] •&amp;nbsp;[[Interfaces_graphiques_Rsync|Interfaces graphiques Rsync]] •&amp;nbsp;[[Smartmontools|Connaître l'état de ses disques durs avec Smartmontools]] •&amp;nbsp;[[Monit|Surveiller son serveur avec Monit]] •&amp;nbsp;[[Meilleurs_logiciels_pour_console|Sélection des meilleurs logiciels pour console]]•&amp;nbsp;[[Init|Gestion des services au boot]] &amp;nbsp;• [[Clipperz|Installer Clipperz - Gestionnaire de mot de passes en ligne - sur une Debian Squeeze]]</text>
      <sha1>tbgli2pjv4o9nycmu1cbknpmpg0uj5q</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3892</id>
      <parentid>3549</parentid>
      <timestamp>2012-03-06T07:49:28Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Installation_de_Gitosis_et_RedMine_sur_squeeze_-_The_Debian_way!</comment>
      <text xml:space="preserve" bytes="3947">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]] •&amp;nbsp;[[Sources.list|Le fichier sources.list]] •&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]] •&amp;nbsp;[[Aptitude|Aptitude]] •&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]] •&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]] •&amp;nbsp;[[DPKG|DPKG]]

:*[[:Catégorie:Grub|Grub]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]

:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[Apache|Apache]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]] •&amp;nbsp;[[PXE|Installation d'un serveur PXE]] •&amp;nbsp;[[Ejabberd|Un serveur jabberd sous Lenny : ejabberd]] •&amp;nbsp;[[Tor|Serveur Tor]] •&amp;nbsp;[[Vsftpd_ssl_chroot_mysql|Serveur FTP sécurisé avec vsftpd (SSL + Mysql)]] •&amp;nbsp;[[Créer_un_dépôt_debian_trivial|Créer un dépôt debian trivial avec dpkg]] •&amp;nbsp;[[Reprepro|Installation d'un référentiel Debian (pool, sécurisation pgp et mirroring)]] •&amp;nbsp;[[SKS_OpenPGP_Keyserver|SKS_OpenPGP_Keyserver]] •&amp;nbsp;[[Serveur_sftp_%2Brssh%2Bchroot|Serveur sftp, shell réduit (rssh) et chroot]] •&amp;nbsp; [[Installation_sur_une_Squeeze_d%27un_serveur_mail_complet_(Postfix_Postfixadmin_Dovecot_Mysql_Amavisd-new_Spamassassin_Clamav_Postgrey_Squirrelmail_Roundcube)_avec_gestion_des_filtres_Imap_et_des_quotas|Installation sur une Squeeze d'un serveur mail complet]] •&amp;nbsp;[[Serveur_OpenVPN|Installation et configuration d'un serveur OpenVPN]] •&amp;nbsp; [[Installation_de_Proftpd_avec_base_de_données_Mysql_%2B_TLS_et_gestion_des_users_virtuel_à_l%27aide_de_proftpdadmin|ProFtpd + MySql + TLS + ProftpAdmin]] •&amp;nbsp; [[Installation_de_Gitosis_et_RedMine_sur_squeeze_-_The_Debian_way!|Installation de Gitosis et RedMine sur squeeze à la façon Debian!]]

:*[[:Catégorie:SurveillanceWeb|Serveur Web: surveillance ]]
::•&amp;nbsp;[[Piwik|Installer Piwik]] •&amp;nbsp;[[AWStats|AWStats: installation et configuration]]

:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Généalogie|Généalogie]] •&amp;nbsp;[[Ssh|Installation et configuration de ssh]] •&amp;nbsp;[[Generation_mots_de_passe|Les générateurs de mots de passe]] •&amp;nbsp;[[Interfaces_graphiques_Rsync|Interfaces graphiques Rsync]] •&amp;nbsp;[[Smartmontools|Connaître l'état de ses disques durs avec Smartmontools]] •&amp;nbsp;[[Monit|Surveiller son serveur avec Monit]] •&amp;nbsp;[[Meilleurs_logiciels_pour_console|Sélection des meilleurs logiciels pour console]]•&amp;nbsp;[[Init|Gestion des services au boot]] &amp;nbsp;• [[Clipperz|Installer Clipperz - Gestionnaire de mot de passes en ligne - sur une Debian Squeeze]]</text>
      <sha1>8q6ohh0y7eoivbuvglh047ybbnbmuiy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4147</id>
      <parentid>3892</parentid>
      <timestamp>2012-05-04T11:28:15Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Réplication de bases Mysql</comment>
      <text xml:space="preserve" bytes="4021">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]] •&amp;nbsp;[[Sources.list|Le fichier sources.list]] •&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]] •&amp;nbsp;[[Aptitude|Aptitude]] •&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]] •&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]] •&amp;nbsp;[[DPKG|DPKG]]

:*[[:Catégorie:Grub|Grub]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]

:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[Apache|Apache]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]] •&amp;nbsp;[[PXE|Installation d'un serveur PXE]] •&amp;nbsp;[[Ejabberd|Un serveur jabberd sous Lenny : ejabberd]] •&amp;nbsp;[[Tor|Serveur Tor]] •&amp;nbsp;[[Vsftpd_ssl_chroot_mysql|Serveur FTP sécurisé avec vsftpd (SSL + Mysql)]] •&amp;nbsp;[[Créer_un_dépôt_debian_trivial|Créer un dépôt debian trivial avec dpkg]] •&amp;nbsp;[[Reprepro|Installation d'un référentiel Debian (pool, sécurisation pgp et mirroring)]] •&amp;nbsp;[[SKS_OpenPGP_Keyserver|SKS_OpenPGP_Keyserver]] •&amp;nbsp;[[Serveur_sftp_%2Brssh%2Bchroot|Serveur sftp, shell réduit (rssh) et chroot]] •&amp;nbsp; [[Installation_sur_une_Squeeze_d%27un_serveur_mail_complet_(Postfix_Postfixadmin_Dovecot_Mysql_Amavisd-new_Spamassassin_Clamav_Postgrey_Squirrelmail_Roundcube)_avec_gestion_des_filtres_Imap_et_des_quotas|Installation sur une Squeeze d'un serveur mail complet]] •&amp;nbsp;[[Serveur_OpenVPN|Installation et configuration d'un serveur OpenVPN]] •&amp;nbsp; [[Installation_de_Proftpd_avec_base_de_données_Mysql_%2B_TLS_et_gestion_des_users_virtuel_à_l%27aide_de_proftpdadmin|ProFtpd + MySql + TLS + ProftpAdmin]] •&amp;nbsp; [[Installation_de_Gitosis_et_RedMine_sur_squeeze_-_The_Debian_way!|Installation de Gitosis et RedMine sur squeeze à la façon Debian!]] •&amp;nbsp; [[R%C3%A9plication_de_bases_mysql|Réplication de bases Mysql]]

:*[[:Catégorie:SurveillanceWeb|Serveur Web: surveillance ]]
::•&amp;nbsp;[[Piwik|Installer Piwik]] •&amp;nbsp;[[AWStats|AWStats: installation et configuration]]

:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Généalogie|Généalogie]] •&amp;nbsp;[[Ssh|Installation et configuration de ssh]] •&amp;nbsp;[[Generation_mots_de_passe|Les générateurs de mots de passe]] •&amp;nbsp;[[Interfaces_graphiques_Rsync|Interfaces graphiques Rsync]] •&amp;nbsp;[[Smartmontools|Connaître l'état de ses disques durs avec Smartmontools]] •&amp;nbsp;[[Monit|Surveiller son serveur avec Monit]] •&amp;nbsp;[[Meilleurs_logiciels_pour_console|Sélection des meilleurs logiciels pour console]]•&amp;nbsp;[[Init|Gestion des services au boot]] &amp;nbsp;• [[Clipperz|Installer Clipperz - Gestionnaire de mot de passes en ligne - sur une Debian Squeeze]]</text>
      <sha1>0m2b1t9xf5eabgptyfgpbevt59yv125</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4224</id>
      <parentid>4147</parentid>
      <timestamp>2012-05-10T14:21:11Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="4108">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]] •&amp;nbsp;[[Sources.list|Le fichier sources.list]] •&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]] •&amp;nbsp;[[Aptitude|Aptitude]] •&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]] •&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]] •&amp;nbsp;[[DPKG|DPKG]]

:*[[:Catégorie:Grub|Grub]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]

:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[Apache|Apache]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]] •&amp;nbsp;[[PXE|Installation d'un serveur PXE]] •&amp;nbsp;[[Ejabberd|Un serveur jabberd sous Lenny : ejabberd]] •&amp;nbsp;[[Tor|Serveur Tor]] •&amp;nbsp;[[Vsftpd_ssl_chroot_mysql|Serveur FTP sécurisé avec vsftpd (SSL + Mysql)]] •&amp;nbsp;[[Créer_un_dépôt_debian_trivial|Créer un dépôt debian trivial avec dpkg]] •&amp;nbsp;[[Reprepro|Installation d'un référentiel Debian (pool, sécurisation pgp et mirroring)]] •&amp;nbsp;[[SKS_OpenPGP_Keyserver|SKS_OpenPGP_Keyserver]] •&amp;nbsp;[[Serveur_sftp_%2Brssh%2Bchroot|Serveur sftp, shell réduit (rssh) et chroot]] •&amp;nbsp; [[Installation_sur_une_Squeeze_d%27un_serveur_mail_complet_(Postfix_Postfixadmin_Dovecot_Mysql_Amavisd-new_Spamassassin_Clamav_Postgrey_Squirrelmail_Roundcube)_avec_gestion_des_filtres_Imap_et_des_quotas|Installation sur une Squeeze d'un serveur mail complet]] •&amp;nbsp;[[Serveur_OpenVPN|Installation et configuration d'un serveur OpenVPN]] •&amp;nbsp; [[Installation_de_Proftpd_avec_base_de_données_Mysql_%2B_TLS_et_gestion_des_users_virtuel_à_l%27aide_de_proftpdadmin|ProFtpd + MySql + TLS + ProftpAdmin]] •&amp;nbsp; [[Installation_de_Gitosis_et_RedMine_sur_squeeze_-_The_Debian_way!|Installation de Gitosis et RedMine sur squeeze à la façon Debian!]] •&amp;nbsp; [[R%C3%A9plication_de_bases_mysql|Réplication de bases Mysql]]

:*[[:Catégorie:SurveillanceWeb|Serveur Web: surveillance ]]
::•&amp;nbsp;[[Piwik|Installer Piwik]] •&amp;nbsp;[[AWStats|AWStats: installation et configuration]]

:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Généalogie|Généalogie]] •&amp;nbsp;[[Ssh|Installation et configuration de ssh]] •&amp;nbsp;[[Generation_mots_de_passe|Les générateurs de mots de passe]] •&amp;nbsp;[[Interfaces_graphiques_Rsync|Interfaces graphiques Rsync]] •&amp;nbsp;[[Smartmontools|Connaître l'état de ses disques durs avec Smartmontools]] •&amp;nbsp;[[Monit|Surveiller son serveur avec Monit]] •&amp;nbsp;[[Meilleurs_logiciels_pour_console|Sélection des meilleurs logiciels pour console]]•&amp;nbsp;[[Init|Gestion des services au boot]] &amp;nbsp;• [[Clipperz|Installer Clipperz - Gestionnaire de mot de passes en ligne - sur une Debian Squeeze]] &amp;nbsp;• [[Installation_TrueCrypt_Squeeze|Installation de TrueCrypt sur une Squeeze]]</text>
      <sha1>map67tas4kh4bsbd01tjis4372pjts0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4498</id>
      <parentid>4224</parentid>
      <timestamp>2012-10-12T05:42:51Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="4187">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]] •&amp;nbsp;[[Sources.list|Le fichier sources.list]] •&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]] •&amp;nbsp;[[Aptitude|Aptitude]] •&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]] •&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]] •&amp;nbsp;[[DPKG|DPKG]]

:*[[:Catégorie:Grub|Grub]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]

:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[Apache|Apache]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]] •&amp;nbsp;[[PXE|Installation d'un serveur PXE]] •&amp;nbsp;[[Ejabberd|Un serveur jabberd sous Lenny : ejabberd]] •&amp;nbsp;[[Tor|Serveur Tor]] •&amp;nbsp;[[Vsftpd_ssl_chroot_mysql|Serveur FTP sécurisé avec vsftpd (SSL + Mysql)]] •&amp;nbsp;[[Créer_un_dépôt_debian_trivial|Créer un dépôt debian trivial avec dpkg]] •&amp;nbsp;[[Reprepro|Installation d'un référentiel Debian (pool, sécurisation pgp et mirroring)]] •&amp;nbsp;[[SKS_OpenPGP_Keyserver|SKS_OpenPGP_Keyserver]] •&amp;nbsp;[[Serveur_sftp_%2Brssh%2Bchroot|Serveur sftp, shell réduit (rssh) et chroot]] •&amp;nbsp; [[Installation_sur_une_Squeeze_d%27un_serveur_mail_complet_(Postfix_Postfixadmin_Dovecot_Mysql_Amavisd-new_Spamassassin_Clamav_Postgrey_Squirrelmail_Roundcube)_avec_gestion_des_filtres_Imap_et_des_quotas|Installation sur une Squeeze d'un serveur mail complet]] •&amp;nbsp;[[Serveur_OpenVPN|Installation et configuration d'un serveur OpenVPN]] •&amp;nbsp; [[Installation_de_Proftpd_avec_base_de_données_Mysql_%2B_TLS_et_gestion_des_users_virtuel_à_l%27aide_de_proftpdadmin|ProFtpd + MySql + TLS + ProftpAdmin]] •&amp;nbsp; [[Installation_de_Gitosis_et_RedMine_sur_squeeze_-_The_Debian_way!|Installation de Gitosis et RedMine sur squeeze à la façon Debian!]] •&amp;nbsp; [[R%C3%A9plication_de_bases_mysql|Réplication de bases Mysql]]

:*[[:Catégorie:SurveillanceWeb|Serveur Web: surveillance ]]
::•&amp;nbsp;[[Piwik|Installer Piwik]] •&amp;nbsp;[[AWStats|AWStats: installation et configuration]] •&amp;nbsp;[[Installer_un_serveur_Zabbix|Zabbix: installation et prise en main]]

:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Généalogie|Généalogie]] •&amp;nbsp;[[Ssh|Installation et configuration de ssh]] •&amp;nbsp;[[Generation_mots_de_passe|Les générateurs de mots de passe]] •&amp;nbsp;[[Interfaces_graphiques_Rsync|Interfaces graphiques Rsync]] •&amp;nbsp;[[Smartmontools|Connaître l'état de ses disques durs avec Smartmontools]] •&amp;nbsp;[[Monit|Surveiller son serveur avec Monit]] •&amp;nbsp;[[Meilleurs_logiciels_pour_console|Sélection des meilleurs logiciels pour console]]•&amp;nbsp;[[Init|Gestion des services au boot]] &amp;nbsp;• [[Clipperz|Installer Clipperz - Gestionnaire de mot de passes en ligne - sur une Debian Squeeze]] &amp;nbsp;• [[Installation_TrueCrypt_Squeeze|Installation de TrueCrypt sur une Squeeze]]</text>
      <sha1>mngtxlmq22y2dwgfhtnxgayopzffw32</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4499</id>
      <parentid>4498</parentid>
      <timestamp>2012-10-12T05:47:58Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="4235">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]] •&amp;nbsp;[[Sources.list|Le fichier sources.list]] •&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]] •&amp;nbsp;[[Aptitude|Aptitude]] •&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]] •&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]] •&amp;nbsp;[[DPKG|DPKG]]

:*[[:Catégorie:Grub|Grub]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]

:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[Apache|Apache]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]] •&amp;nbsp;[[PXE|Installation d'un serveur PXE]] •&amp;nbsp;[[Ejabberd|Un serveur jabberd sous Lenny : ejabberd]] •&amp;nbsp;[[Tor|Serveur Tor]] •&amp;nbsp;[[Vsftpd_ssl_chroot_mysql|Serveur FTP sécurisé avec vsftpd (SSL + Mysql)]] •&amp;nbsp;[[Créer_un_dépôt_debian_trivial|Créer un dépôt debian trivial avec dpkg]] •&amp;nbsp;[[Reprepro|Installation d'un référentiel Debian (pool, sécurisation pgp et mirroring)]] •&amp;nbsp;[[SKS_OpenPGP_Keyserver|SKS_OpenPGP_Keyserver]] •&amp;nbsp;[[Serveur_sftp_%2Brssh%2Bchroot|Serveur sftp, shell réduit (rssh) et chroot]] •&amp;nbsp; [[Installation_sur_une_Squeeze_d%27un_serveur_mail_complet_(Postfix_Postfixadmin_Dovecot_Mysql_Amavisd-new_Spamassassin_Clamav_Postgrey_Squirrelmail_Roundcube)_avec_gestion_des_filtres_Imap_et_des_quotas|Installation sur une Squeeze d'un serveur mail complet]] •&amp;nbsp;[[Serveur_OpenVPN|Installation et configuration d'un serveur OpenVPN]] •&amp;nbsp; [[Installation_de_Proftpd_avec_base_de_données_Mysql_%2B_TLS_et_gestion_des_users_virtuel_à_l%27aide_de_proftpdadmin|ProFtpd + MySql + TLS + ProftpAdmin]] •&amp;nbsp; [[Installation_de_Gitosis_et_RedMine_sur_squeeze_-_The_Debian_way!|Installation de Gitosis et RedMine sur squeeze à la façon Debian!]] •&amp;nbsp; [[R%C3%A9plication_de_bases_mysql|Réplication de bases Mysql]]

:*[[:Catégorie:SurveillanceWeb|Serveur Web: surveillance ]]
::•&amp;nbsp;[[Piwik|Installer Piwik]] •&amp;nbsp;[[AWStats|AWStats: installation et configuration]] •&amp;nbsp;[[Installer_un_serveur_Zabbix|Zabbix: installation et prise en main]]

:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]] •&amp;nbsp;[[Flash|Les &quot;plugins&quot; Gnash et Flash]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Généalogie|Généalogie]] •&amp;nbsp;[[Ssh|Installation et configuration de ssh]] •&amp;nbsp;[[Generation_mots_de_passe|Les générateurs de mots de passe]] •&amp;nbsp;[[Interfaces_graphiques_Rsync|Interfaces graphiques Rsync]] •&amp;nbsp;[[Smartmontools|Connaître l'état de ses disques durs avec Smartmontools]] •&amp;nbsp;[[Monit|Surveiller son serveur avec Monit]] •&amp;nbsp;[[Meilleurs_logiciels_pour_console|Sélection des meilleurs logiciels pour console]]•&amp;nbsp;[[Init|Gestion des services au boot]] &amp;nbsp;• [[Clipperz|Installer Clipperz - Gestionnaire de mot de passes en ligne - sur une Debian Squeeze]] &amp;nbsp;• [[Installation_TrueCrypt_Squeeze|Installation de TrueCrypt sur une Squeeze]]</text>
      <sha1>9jur8e7w6wx73j3j3o3zwnooobw81vx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4503</id>
      <parentid>4499</parentid>
      <timestamp>2012-10-12T05:53:47Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="4291">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]] •&amp;nbsp;[[Sources.list|Le fichier sources.list]] •&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]] •&amp;nbsp;[[Aptitude|Aptitude]] •&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]] •&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]] •&amp;nbsp;[[DPKG|DPKG]]

:*[[:Catégorie:Grub|Grub]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]

:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[Apache|Apache]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]] •&amp;nbsp;[[PXE|Installation d'un serveur PXE]] •&amp;nbsp;[[Ejabberd|Un serveur jabberd sous Lenny : ejabberd]] •&amp;nbsp;[[Tor|Serveur Tor]] •&amp;nbsp;[[Vsftpd_ssl_chroot_mysql|Serveur FTP sécurisé avec vsftpd (SSL + Mysql)]] •&amp;nbsp;[[Créer_un_dépôt_debian_trivial|Créer un dépôt debian trivial avec dpkg]] •&amp;nbsp;[[Reprepro|Installation d'un référentiel Debian (pool, sécurisation pgp et mirroring)]] •&amp;nbsp;[[SKS_OpenPGP_Keyserver|SKS_OpenPGP_Keyserver]] •&amp;nbsp;[[Serveur_sftp_%2Brssh%2Bchroot|Serveur sftp, shell réduit (rssh) et chroot]] •&amp;nbsp; [[Installation_sur_une_Squeeze_d%27un_serveur_mail_complet_(Postfix_Postfixadmin_Dovecot_Mysql_Amavisd-new_Spamassassin_Clamav_Postgrey_Squirrelmail_Roundcube)_avec_gestion_des_filtres_Imap_et_des_quotas|Installation sur une Squeeze d'un serveur mail complet]] •&amp;nbsp;[[Serveur_OpenVPN|Installation et configuration d'un serveur OpenVPN]] •&amp;nbsp; [[Installation_de_Proftpd_avec_base_de_données_Mysql_%2B_TLS_et_gestion_des_users_virtuel_à_l%27aide_de_proftpdadmin|ProFtpd + MySql + TLS + ProftpAdmin]] •&amp;nbsp; [[Installation_de_Gitosis_et_RedMine_sur_squeeze_-_The_Debian_way!|Installation de Gitosis et RedMine sur squeeze à la façon Debian!]] •&amp;nbsp; [[R%C3%A9plication_de_bases_mysql|Réplication de bases Mysql]] •&amp;nbsp; [[Xen_sous_Squeeze|Serveur XEN sous Squeeze]]

:*[[:Catégorie:SurveillanceWeb|Serveur Web: surveillance ]]
::•&amp;nbsp;[[Piwik|Installer Piwik]] •&amp;nbsp;[[AWStats|AWStats: installation et configuration]] •&amp;nbsp;[[Installer_un_serveur_Zabbix|Zabbix: installation et prise en main]]

:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]] •&amp;nbsp;[[Flash|Les &quot;plugins&quot; Gnash et Flash]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Généalogie|Généalogie]] •&amp;nbsp;[[Ssh|Installation et configuration de ssh]] •&amp;nbsp;[[Generation_mots_de_passe|Les générateurs de mots de passe]] •&amp;nbsp;[[Interfaces_graphiques_Rsync|Interfaces graphiques Rsync]] •&amp;nbsp;[[Smartmontools|Connaître l'état de ses disques durs avec Smartmontools]] •&amp;nbsp;[[Monit|Surveiller son serveur avec Monit]] •&amp;nbsp;[[Meilleurs_logiciels_pour_console|Sélection des meilleurs logiciels pour console]]•&amp;nbsp;[[Init|Gestion des services au boot]] &amp;nbsp;• [[Clipperz|Installer Clipperz - Gestionnaire de mot de passes en ligne - sur une Debian Squeeze]] &amp;nbsp;• [[Installation_TrueCrypt_Squeeze|Installation de TrueCrypt sur une Squeeze]]</text>
      <sha1>56p3cecurqi5acz4spj2erguq6o06v1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4506</id>
      <parentid>4503</parentid>
      <timestamp>2012-10-12T06:05:08Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="4360">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]] •&amp;nbsp;[[Sources.list|Le fichier sources.list]] •&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]] •&amp;nbsp;[[Aptitude|Aptitude]] •&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]] •&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]] •&amp;nbsp;[[DPKG|DPKG]]

:*[[:Catégorie:Grub|Grub]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]

:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[Apache|Apache]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]] •&amp;nbsp;[[PXE|Installation d'un serveur PXE]] •&amp;nbsp;[[Ejabberd|Un serveur jabberd sous Lenny : ejabberd]] •&amp;nbsp;[[Tor|Serveur Tor]] •&amp;nbsp;[[Vsftpd_ssl_chroot_mysql|Serveur FTP sécurisé avec vsftpd (SSL + Mysql)]] •&amp;nbsp;[[Créer_un_dépôt_debian_trivial|Créer un dépôt debian trivial avec dpkg]] •&amp;nbsp;[[Reprepro|Installation d'un référentiel Debian (pool, sécurisation pgp et mirroring)]] •&amp;nbsp;[[SKS_OpenPGP_Keyserver|SKS_OpenPGP_Keyserver]] •&amp;nbsp;[[Serveur_sftp_%2Brssh%2Bchroot|Serveur sftp, shell réduit (rssh) et chroot]] •&amp;nbsp; [[Installation_sur_une_Squeeze_d%27un_serveur_mail_complet_(Postfix_Postfixadmin_Dovecot_Mysql_Amavisd-new_Spamassassin_Clamav_Postgrey_Squirrelmail_Roundcube)_avec_gestion_des_filtres_Imap_et_des_quotas|Installation sur une Squeeze d'un serveur mail complet]] •&amp;nbsp;[[Serveur_OpenVPN|Installation et configuration d'un serveur OpenVPN]] •&amp;nbsp; [[Installation_de_Proftpd_avec_base_de_données_Mysql_%2B_TLS_et_gestion_des_users_virtuel_à_l%27aide_de_proftpdadmin|ProFtpd + MySql + TLS + ProftpAdmin]] •&amp;nbsp; [[Installation_de_Gitosis_et_RedMine_sur_squeeze_-_The_Debian_way!|Installation de Gitosis et RedMine sur squeeze à la façon Debian!]] •&amp;nbsp; [[R%C3%A9plication_de_bases_mysql|Réplication de bases Mysql]] •&amp;nbsp; [[Xen_sous_Squeeze|Serveur XEN sous Squeeze]]

:*[[:Catégorie:SurveillanceWeb|Serveur Web: surveillance ]]
::•&amp;nbsp;[[Piwik|Installer Piwik]] •&amp;nbsp;[[AWStats|AWStats: installation et configuration]] •&amp;nbsp;[[Installer_un_serveur_Zabbix|Zabbix: installation et prise en main]] •&amp;nbsp;[[Monit|Surveiller son serveur avec Monit]]

:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]] •&amp;nbsp;[[Flash|Les &quot;plugins&quot; Gnash et Flash]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Généalogie|Généalogie]] •&amp;nbsp;[[Ssh|Installation et configuration de ssh]] •&amp;nbsp;[[Generation_mots_de_passe|Les générateurs de mots de passe]] •&amp;nbsp;[[Interfaces_graphiques_Rsync|Interfaces graphiques Rsync]] •&amp;nbsp;[[Smartmontools|Connaître l'état de ses disques durs avec Smartmontools]] •&amp;nbsp;[[Meilleurs_logiciels_pour_console|Sélection des meilleurs logiciels pour console]]•&amp;nbsp;[[Init|Gestion des services au boot]] &amp;nbsp;• [[Clipperz|Installer Clipperz - Gestionnaire de mot de passes en ligne - sur une Debian Squeeze]] &amp;nbsp;• [[Installation_TrueCrypt_Squeeze|Installation de TrueCrypt sur une Squeeze]] •&amp;nbsp;[[Installation_phpBB-3.0.11|Installation d'un forum phpBB]]</text>
      <sha1>4ksifet5o730t23jaj4x62ndkp7z99k</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4524</id>
      <parentid>4506</parentid>
      <timestamp>2012-10-19T21:05:15Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>Remplacement de l'article &quot;sources.list&quot; par l'article &quot;sources de paquets…&quot;</comment>
      <text xml:space="preserve" bytes="4400">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]] •&amp;nbsp;[[Sources_de_paquets_:_les_bases|Sources de paquets : les bases (sources.list)]] •&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]] •&amp;nbsp;[[Aptitude|Aptitude]] •&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]] •&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]] •&amp;nbsp;[[DPKG|DPKG]]

:*[[:Catégorie:Grub|Grub]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]

:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[Apache|Apache]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]] •&amp;nbsp;[[PXE|Installation d'un serveur PXE]] •&amp;nbsp;[[Ejabberd|Un serveur jabberd sous Lenny : ejabberd]] •&amp;nbsp;[[Tor|Serveur Tor]] •&amp;nbsp;[[Vsftpd_ssl_chroot_mysql|Serveur FTP sécurisé avec vsftpd (SSL + Mysql)]] •&amp;nbsp;[[Créer_un_dépôt_debian_trivial|Créer un dépôt debian trivial avec dpkg]] •&amp;nbsp;[[Reprepro|Installation d'un référentiel Debian (pool, sécurisation pgp et mirroring)]] •&amp;nbsp;[[SKS_OpenPGP_Keyserver|SKS_OpenPGP_Keyserver]] •&amp;nbsp;[[Serveur_sftp_%2Brssh%2Bchroot|Serveur sftp, shell réduit (rssh) et chroot]] •&amp;nbsp; [[Installation_sur_une_Squeeze_d%27un_serveur_mail_complet_(Postfix_Postfixadmin_Dovecot_Mysql_Amavisd-new_Spamassassin_Clamav_Postgrey_Squirrelmail_Roundcube)_avec_gestion_des_filtres_Imap_et_des_quotas|Installation sur une Squeeze d'un serveur mail complet]] •&amp;nbsp;[[Serveur_OpenVPN|Installation et configuration d'un serveur OpenVPN]] •&amp;nbsp; [[Installation_de_Proftpd_avec_base_de_données_Mysql_%2B_TLS_et_gestion_des_users_virtuel_à_l%27aide_de_proftpdadmin|ProFtpd + MySql + TLS + ProftpAdmin]] •&amp;nbsp; [[Installation_de_Gitosis_et_RedMine_sur_squeeze_-_The_Debian_way!|Installation de Gitosis et RedMine sur squeeze à la façon Debian!]] •&amp;nbsp; [[R%C3%A9plication_de_bases_mysql|Réplication de bases Mysql]] •&amp;nbsp; [[Xen_sous_Squeeze|Serveur XEN sous Squeeze]]

:*[[:Catégorie:SurveillanceWeb|Serveur Web: surveillance ]]
::•&amp;nbsp;[[Piwik|Installer Piwik]] •&amp;nbsp;[[AWStats|AWStats: installation et configuration]] •&amp;nbsp;[[Installer_un_serveur_Zabbix|Zabbix: installation et prise en main]] •&amp;nbsp;[[Monit|Surveiller son serveur avec Monit]]

:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]] •&amp;nbsp;[[Flash|Les &quot;plugins&quot; Gnash et Flash]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Généalogie|Généalogie]] •&amp;nbsp;[[Ssh|Installation et configuration de ssh]] •&amp;nbsp;[[Generation_mots_de_passe|Les générateurs de mots de passe]] •&amp;nbsp;[[Interfaces_graphiques_Rsync|Interfaces graphiques Rsync]] •&amp;nbsp;[[Smartmontools|Connaître l'état de ses disques durs avec Smartmontools]] •&amp;nbsp;[[Meilleurs_logiciels_pour_console|Sélection des meilleurs logiciels pour console]]•&amp;nbsp;[[Init|Gestion des services au boot]] &amp;nbsp;• [[Clipperz|Installer Clipperz - Gestionnaire de mot de passes en ligne - sur une Debian Squeeze]] &amp;nbsp;• [[Installation_TrueCrypt_Squeeze|Installation de TrueCrypt sur une Squeeze]] •&amp;nbsp;[[Installation_phpBB-3.0.11|Installation d'un forum phpBB]]</text>
      <sha1>rnc0vd4emkvfyrv169uftr59asfk29d</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4678</id>
      <parentid>4524</parentid>
      <timestamp>2012-10-30T04:13:25Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="4499">&lt;u&gt;'''Logiciels'''&lt;/u&gt;

:*[[:Catégorie:Paquets|Les paquets]]
::•&amp;nbsp;[[Gestion_des_paquets|Gestion des paquets]] •&amp;nbsp;[[Faireunpaquet|Faire un paquet Debian]] •&amp;nbsp;[[Apt-cacher-ng|Apt-cacher-ng : Réaliser un dépôt &quot;cache&quot; de paquets]]•&amp;nbsp;[[Apt-listbugs|apt-listbugs]] •&amp;nbsp;[[Erreur_lors_d'un_update:_NO_PUBKEY|Erreur lors d'un update: NO_PUBKEY]] •&amp;nbsp;[[Apt_:_erreur_Dynamic_MMap_ran_out_of_room|Erreur Apt : Dynamic MMap ran out of room]] •&amp;nbsp;[[Utiliser_les_ISO_pour_installer_un_paquet_sur_un_PC_offline|Utiliser les ISO pour installer un paquet sur un PC offline]] •&amp;nbsp;[[Sources_de_paquets_:_les_bases|Sources de paquets : les bases (sources.list)]] •&amp;nbsp;[[L'etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences|L'etiquetage de paquets via le fichier /etc/apt/preferences]] •&amp;nbsp;[[Aptitude|Aptitude]] •&amp;nbsp;[[Compiler_linux-kbuild|Compiler linux-kbuild]] •&amp;nbsp;[[Le_dépôt_snapshot|Utilisation du dépôt snapshot]] •&amp;nbsp;[[DPKG|DPKG]]

:*[[:Catégorie:Grub|Grub]]
::•&amp;nbsp;[[Réinstaller Grub2|Réinstaller Grub2]] •&amp;nbsp;[[Réinstaller_Grub-legacy|Réinstaller Grub-legacy]]

:*[[:Catégorie:Serveurs|Serveurs]]
::•&amp;nbsp;[[LAMP|LAMP]] •&amp;nbsp;[[Apache|Apache]] •&amp;nbsp;[[DHCP|DHCP]] •&amp;nbsp;[[BIND|BIND]] •&amp;nbsp;[[Configuration_dun_serveur_mail_avec_Postfix|Serveur Mail avec Postfix]] •&amp;nbsp;[[Auto_hebergement|L'auto hébergement]] •&amp;nbsp;[[Tasksel|Tasksel]] •&amp;nbsp;[[PXE|Installation d'un serveur PXE]] •&amp;nbsp;[[Ejabberd|Un serveur jabberd sous Lenny : ejabberd]] •&amp;nbsp;[[Tor|Serveur Tor]] •&amp;nbsp;[[Vsftpd_ssl_chroot_mysql|Serveur FTP sécurisé avec vsftpd (SSL + Mysql)]] •&amp;nbsp;[[Créer_un_dépôt_debian_trivial|Créer un dépôt debian trivial avec dpkg]] •&amp;nbsp;[[Reprepro|Installation d'un référentiel Debian (pool, sécurisation pgp et mirroring)]] •&amp;nbsp;[[SKS_OpenPGP_Keyserver|SKS_OpenPGP_Keyserver]] •&amp;nbsp;[[Serveur_sftp_%2Brssh%2Bchroot|Serveur sftp, shell réduit (rssh) et chroot]] •&amp;nbsp; [[Installation_sur_une_Squeeze_d%27un_serveur_mail_complet_(Postfix_Postfixadmin_Dovecot_Mysql_Amavisd-new_Spamassassin_Clamav_Postgrey_Squirrelmail_Roundcube)_avec_gestion_des_filtres_Imap_et_des_quotas|Installation sur une Squeeze d'un serveur mail complet]] •&amp;nbsp;[[Serveur_OpenVPN|Installation et configuration d'un serveur OpenVPN]] •&amp;nbsp; [[Installation_de_Proftpd_avec_base_de_données_Mysql_%2B_TLS_et_gestion_des_users_virtuel_à_l%27aide_de_proftpdadmin|ProFtpd + MySql + TLS + ProftpAdmin]] •&amp;nbsp; [[Installation_de_Gitosis_et_RedMine_sur_squeeze_-_The_Debian_way!|Installation de Gitosis et RedMine sur squeeze à la façon Debian!]] •&amp;nbsp; [[R%C3%A9plication_de_bases_mysql|Réplication de bases Mysql]] •&amp;nbsp; [[Xen_sous_Squeeze|Serveur XEN sous Squeeze]] •&amp;nbsp; [[Faire_un_dépot_signé_ou_non|Faire un dépôt (signé ou pas) avec apt-utils et gpg]]

:*[[:Catégorie:SurveillanceWeb|Serveur Web: surveillance ]]
::•&amp;nbsp;[[Piwik|Installer Piwik]] •&amp;nbsp;[[AWStats|AWStats: installation et configuration]] •&amp;nbsp;[[Installer_un_serveur_Zabbix|Zabbix: installation et prise en main]] •&amp;nbsp;[[Monit|Surveiller son serveur avec Monit]]

:*[[:Catégorie:Gestionnaires_de_fenetres|Les gestionnaires de fenêtres]]
::*[[:Catégorie:Flottants|''Les flottants'']] : •&amp;nbsp;[[Openbox]] •&amp;nbsp;[[Fluxbox]] •&amp;nbsp;[[Pekwm]] •&amp;nbsp;[[Fvwm]] •&amp;nbsp;[[WindowMaker]] •&amp;nbsp;[[Enlightenment]] 
::*[[:Catégorie:Tillings|''Les tillings'']] : •&amp;nbsp;[[Dwm]] •&amp;nbsp;[[Wmii]] •&amp;nbsp;[[Awesome]] •&amp;nbsp;[[Xmonad]] 
:*[[:Catégorie:Multimédia|Multimédia]]
::•&amp;nbsp;[[CD audio|CD Audio]] •&amp;nbsp;[[Flash|Les &quot;plugins&quot; Gnash et Flash]]
:*[[:Catégorie Bureautique|Bureautique]]
:*[[:Catégorie:Logiciels_Divers|Divers]]
::•&amp;nbsp;[[Généalogie|Généalogie]] •&amp;nbsp;[[Ssh|Installation et configuration de ssh]] •&amp;nbsp;[[Generation_mots_de_passe|Les générateurs de mots de passe]] •&amp;nbsp;[[Interfaces_graphiques_Rsync|Interfaces graphiques Rsync]] •&amp;nbsp;[[Smartmontools|Connaître l'état de ses disques durs avec Smartmontools]] •&amp;nbsp;[[Meilleurs_logiciels_pour_console|Sélection des meilleurs logiciels pour console]]•&amp;nbsp;[[Init|Gestion des services au boot]] &amp;nbsp;• [[Clipperz|Installer Clipperz - Gestionnaire de mot de passes en ligne - sur une Debian Squeeze]] &amp;nbsp;• [[Installation_TrueCrypt_Squeeze|Installation de TrueCrypt sur une Squeeze]] •&amp;nbsp;[[Installation_phpBB-3.0.11|Installation d'un forum phpBB]]</text>
      <sha1>bzchs8xksi4r4znp2h2m4cbcrcwa9lm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:General/Index/Materiel et Pilotes</title>
    <ns>10</ns>
    <id>725</id>
    <revision>
      <id>3205</id>
      <timestamp>2011-08-06T20:07:18Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « &lt;u&gt;'''Matériel et Pilotes'''&lt;/u&gt;  ::&amp;nbsp;• [[identification matériel-pilotes|Outil Debian GNU/Linux d'identification matériel-pilotes]]  :*[[:Catégorie:Carte Vidéo|Ca... »</comment>
      <text xml:space="preserve" bytes="1355">&lt;u&gt;'''Matériel et Pilotes'''&lt;/u&gt;

::&amp;nbsp;• [[identification matériel-pilotes|Outil Debian GNU/Linux d'identification matériel-pilotes]]

:*[[:Catégorie:Carte Vidéo|Carte Vidéo]]
::&amp;nbsp;• [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]] •&amp;nbsp;[[Nvidia_et_Ati_pour_les_fainéants|Installation des pilotes Nvidia et Ati pour les fainéants]]
:*[[:Catégorie:Controleur audio|Contrôleur audio]]
::&amp;nbsp;• [[Diagnostiquer_un_problème_alsa|Diagnostiquer un problème alsa]]

:*[[:Catégorie:Réseau|Réseau]]
::&amp;nbsp;• [[Utilisation_de_ndiswrapper|Utilisation de ndiswrapper]] &amp;nbsp;• [[Désactiver_l'IPv6|Désactiver l'IPv6]]
:*[[:Catégorie:Gestion de l'alimentation|Gestion de l'alimentation]]

:*[[:Catégorie:Imprimantes et Scanners|Imprimantes et Scanners]]
::&amp;nbsp;• [[Xerox_WorkCentre_5225_5230|Installer une xerox 5225]]

:*[[:Catégorie:Supports de données|Supports de données]]
::&amp;nbsp;• [[Ntfs|Ntfs]] &amp;nbsp;• [[Raid logiciel (mdadm) | Raid logiciel (mdadm)]]

:*[[:Catégorie:Matériel_et_Drivers_Divers‎|Matériels et Drivers Divers]]
::&amp;nbsp;• [[Wacom_bamboo_pen%26touch|Installation d'une tablette Wacom Bamboo Pen&amp;Touch]] &amp;nbsp;• [[Images_pour_firmwares_non_reconnus|Images pour firmwares non reconnus]] &amp;nbsp;• [[Cartes_vidéos_siliconmotion|Cartes vidéos siliconmotion]]</text>
      <sha1>h76q7rfuwkafwosz8scx3awta0c7ydn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3802</id>
      <parentid>3205</parentid>
      <timestamp>2012-02-05T16:54:42Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="1441">&lt;u&gt;'''Matériel et Pilotes'''&lt;/u&gt;

::&amp;nbsp;• [[identification matériel-pilotes|Outil Debian GNU/Linux d'identification matériel-pilotes]]

:*[[:Catégorie:Carte Vidéo|Carte Vidéo]]
::&amp;nbsp;• [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]] •&amp;nbsp;[[Nvidia_et_Ati_pour_les_fainéants|Installation des pilotes Nvidia et Ati pour les fainéants]]
:*[[:Catégorie:Controleur audio|Contrôleur audio]]
::&amp;nbsp;• [[Diagnostiquer_un_problème_alsa|Diagnostiquer un problème alsa]]

:*[[:Catégorie:Réseau|Réseau]]
::&amp;nbsp;• [[Utilisation_de_ndiswrapper|Utilisation de ndiswrapper]] &amp;nbsp;• [[Désactiver_l'IPv6|Désactiver l'IPv6]]
:*[[:Catégorie:Gestion de l'alimentation|Gestion de l'alimentation]]

:*[[:Catégorie:Imprimantes et Scanners|Imprimantes et Scanners]]
::&amp;nbsp;• [[Xerox_WorkCentre_5225_5230|Installer une xerox 5225]]

:*[[:Catégorie:Supports de données|Supports de données]]
::&amp;nbsp;• [[Ntfs|Ntfs]] &amp;nbsp;• [[Raid logiciel (mdadm) | Raid logiciel (mdadm)]]

:*[[:Catégorie:Matériel_et_Drivers_Divers‎|Matériels et Drivers Divers]]
::&amp;nbsp;• [[Wacom_bamboo_pen%26touch|Installation d'une tablette Wacom Bamboo Pen&amp;Touch]] &amp;nbsp;• [[Images_pour_firmwares_non_reconnus|Images pour firmwares non reconnus]] &amp;nbsp;• [[Cartes_vidéos_siliconmotion|Cartes vidéos siliconmotion]] &amp;nbsp;• [[Toshiba_Satellite_C670D|Installer Debian sur un Toshiba Satellite C670D]]</text>
      <sha1>aeunsgdkico0jfghw1ck4qg2n68330x</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:General/Index/Matériel</title>
    <ns>10</ns>
    <id>188</id>
    <revision>
      <id>727</id>
      <timestamp>2010-02-02T05:54:26Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « ; [[Matériel et Drivers]] [[Ntfs|Ntfs]]&amp;nbsp;•  [[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]&amp;nbsp;•  [[Article 3]]&amp;nbsp;•  [[Artic… »</comment>
      <text xml:space="preserve" bytes="349">; [[Matériel et Drivers]]
[[Ntfs|Ntfs]]&amp;nbsp;• 
[[Installer_les_pilotes_nVidia_privateur|Installer les pilotes nVidia privateur]]&amp;nbsp;• 
[[Article 3]]&amp;nbsp;• 
[[Article 4]]&amp;nbsp;• 
[[Article 5]]&amp;nbsp;• 
[[Article 6]]&amp;nbsp;• 
[[Article 7]]&amp;nbsp;• 
[[Article 8]]&amp;nbsp;• 

&lt;noinclude&gt;[[Catégorie:General/Index|Matériel]]&lt;/noinclude&gt;</text>
      <sha1>s9em19m0ql5pxkk0vh950wxti4mmuxu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:General/Index/Multimédia</title>
    <ns>10</ns>
    <id>189</id>
    <revision>
      <id>728</id>
      <timestamp>2010-02-02T05:57:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « ; [[Multimédia]] [[CD_audio|CD audio]]&amp;nbsp;•  [[Article 2]]&amp;nbsp;•  [[Article 3]]&amp;nbsp;•  [[Article 4]]&amp;nbsp;•  [[Article 5]]&amp;nbsp;•  [[Article 6]]&amp;nbsp;•  [[Ar… »</comment>
      <text xml:space="preserve" bytes="282">; [[Multimédia]]
[[CD_audio|CD audio]]&amp;nbsp;• 
[[Article 2]]&amp;nbsp;• 
[[Article 3]]&amp;nbsp;• 
[[Article 4]]&amp;nbsp;• 
[[Article 5]]&amp;nbsp;• 
[[Article 6]]&amp;nbsp;• 
[[Article 7]]&amp;nbsp;• 
[[Article 8]]&amp;nbsp;• 

&lt;noinclude&gt;[[Catégorie:General/Index|Multimédia]]&lt;/noinclude&gt;</text>
      <sha1>f8v72tshh7z7f417xjor0s985en2xpe</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:General/Index/Noyau (Kernel)</title>
    <ns>10</ns>
    <id>221</id>
    <revision>
      <id>894</id>
      <timestamp>2010-02-05T11:34:47Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « ; [[Noyau (Kernel)]] [[Les_Modules]]&amp;nbsp;•  [[Article 2]]&amp;nbsp;•  [[Article 3]]&amp;nbsp;•  [[Article 4]]&amp;nbsp;•  [[Article 5]]&amp;nbsp;•  [[Article 6]]&amp;nbsp;•  [[Artic… »</comment>
      <text xml:space="preserve" bytes="282">; [[Noyau (Kernel)]]
[[Les_Modules]]&amp;nbsp;• 
[[Article 2]]&amp;nbsp;• 
[[Article 3]]&amp;nbsp;• 
[[Article 4]]&amp;nbsp;• 
[[Article 5]]&amp;nbsp;• 
[[Article 6]]&amp;nbsp;• 
[[Article 7]]&amp;nbsp;• 
[[Article 8]]&amp;nbsp;• 

&lt;noinclude&gt;[[Catégorie:General/Index|Kernel (Noyau)]]&lt;/noinclude&gt;</text>
      <sha1>ht4f0a8ws414tsikx53jyz8qyfylxwc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>896</id>
      <parentid>894</parentid>
      <timestamp>2010-02-05T11:37:01Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="282">; [[Noyau (Kernel)]]
[[Les_Modules]]&amp;nbsp;• 
[[Article 2]]&amp;nbsp;• 
[[Article 3]]&amp;nbsp;• 
[[Article 4]]&amp;nbsp;• 
[[Article 5]]&amp;nbsp;• 
[[Article 6]]&amp;nbsp;• 
[[Article 7]]&amp;nbsp;• 
[[Article 8]]&amp;nbsp;• 

&lt;noinclude&gt;[[Catégorie:General/Index|Noyau (Kernel)]]&lt;/noinclude&gt;</text>
      <sha1>a3a5i10nl3t8pxx440ncklp0ywul9vc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>950</id>
      <parentid>896</parentid>
      <timestamp>2010-02-07T05:45:57Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="370">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Noyau_(Kernel) Noyau (Kernel)]

[[Les_Modules]]&amp;nbsp;• 
[[Article 2]]&amp;nbsp;• 
[[Article 3]]&amp;nbsp;• 
[[Article 4]]&amp;nbsp;• 
[[Article 5]]&amp;nbsp;• 
[[Article 6]]&amp;nbsp;• 
[[Article 7]]&amp;nbsp;• 
[[Article 8]]&amp;nbsp;• 

&lt;noinclude&gt;[[Catégorie:General/Index|Noyau (Kernel)]]&lt;/noinclude&gt;</text>
      <sha1>4zt58e2sxndyob75bfosh0kgyoyc3b6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>954</id>
      <parentid>950</parentid>
      <timestamp>2010-02-07T05:50:29Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="382">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Noyau_(Kernel) Noyau (Kernel)]

[[Les_Modules|Les modules]]&amp;nbsp;• 
[[Article 2]]&amp;nbsp;• 
[[Article 3]]&amp;nbsp;• 
[[Article 4]]&amp;nbsp;• 
[[Article 5]]&amp;nbsp;• 
[[Article 6]]&amp;nbsp;• 
[[Article 7]]&amp;nbsp;• 
[[Article 8]]&amp;nbsp;• 

&lt;noinclude&gt;[[Catégorie:General/Index|Noyau (Kernel)]]&lt;/noinclude&gt;</text>
      <sha1>a7wldg21iqx9yo6ppa3t4hucvbllkx2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1028</id>
      <parentid>954</parentid>
      <timestamp>2010-02-08T04:17:33Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="382">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Noyau_(Kernel) Noyau (Kernel)]

&amp;nbsp;• [[Les_Modules|Les modules]]
&amp;nbsp;• [[Article 2]]
&amp;nbsp;• [[Article 3]]
&amp;nbsp;• [[Article 4]]
&amp;nbsp;• [[Article 5]]
&amp;nbsp;• [[Article 6]]
&amp;nbsp;• [[Article 7]]
&amp;nbsp;• [[Article 8]]

&lt;noinclude&gt;[[Catégorie:General/Index|Noyau (Kernel)]]&lt;/noinclude&gt;</text>
      <sha1>g9vk93jctccbi2mqxomfm5hvqvbeh1x</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1513</id>
      <parentid>1028</parentid>
      <timestamp>2010-05-17T11:24:04Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="214">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Noyau_(Kernel) Noyau (Kernel)]

&amp;nbsp;• [[Les_Modules|Les modules]]

&lt;noinclude&gt;[[Catégorie:General/Index|Noyau (Kernel)]]&lt;/noinclude&gt;</text>
      <sha1>2lro88po9mq5w4zh9s12h322neq16tw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1632</id>
      <parentid>1513</parentid>
      <timestamp>2010-07-05T08:38:46Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="263">#REDIRECT [[isalo:General/Index/Noyau_(Kernel)]]
; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Noyau_(Kernel) Noyau (Kernel)]

&amp;nbsp;• [[Les_Modules|Les modules]]

&lt;noinclude&gt;[[Catégorie:General/Index|Noyau (Kernel)]]&lt;/noinclude&gt;</text>
      <sha1>tkyj88vy28d3a1gmo3e8p5ik2ihmqv1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1661</id>
      <parentid>1632</parentid>
      <timestamp>2010-07-06T09:20:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Annulation des modifications 1632 de [[Special:Contributions/Lol|Lol]] ([[User talk:Lol|discussion]])</comment>
      <text xml:space="preserve" bytes="214">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Noyau_(Kernel) Noyau (Kernel)]

&amp;nbsp;• [[Les_Modules|Les modules]]

&lt;noinclude&gt;[[Catégorie:General/Index|Noyau (Kernel)]]&lt;/noinclude&gt;</text>
      <sha1>2lro88po9mq5w4zh9s12h322neq16tw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1700</id>
      <parentid>1661</parentid>
      <timestamp>2010-07-26T08:42:22Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="197">; [[/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Noyau_(Kernel)|Noyau (Kernel)]]

&amp;nbsp;• [[Les_Modules|Les modules]]

&lt;noinclude&gt;[[Catégorie:General/Index|Noyau (Kernel)]]&lt;/noinclude&gt;</text>
      <sha1>a1i1eidqgl768dh1095b7ru2rbwryk1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1745</id>
      <parentid>1700</parentid>
      <timestamp>2010-07-27T19:01:32Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="134">&lt;u&gt;'''Noyau (Kernel)'''&lt;/u&gt;

&amp;nbsp;• [[Les_Modules|Les modules]]

&lt;noinclude&gt;[[Catégorie:General/Index|Noyau (Kernel)]]&lt;/noinclude&gt;</text>
      <sha1>te8g67d2qdzzncc8anq15f7pfsdecnk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2347</id>
      <parentid>1745</parentid>
      <timestamp>2010-11-21T12:58:24Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="208">&lt;u&gt;'''Noyau (Kernel)'''&lt;/u&gt;

&amp;nbsp;• [[Les_Modules|Les modules]]
&amp;nbsp;• [[Compiler_et_patcher_son_noyau|Compiler et patcher son noyau]]

&lt;noinclude&gt;[[Catégorie:General/Index|Noyau (Kernel)]]&lt;/noinclude&gt;</text>
      <sha1>resn85cz3nkppltaeavmdqz4d1jgmjw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2643</id>
      <parentid>2347</parentid>
      <timestamp>2010-12-30T14:38:11Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="140">&lt;u&gt;'''Noyau (Kernel)'''&lt;/u&gt;

&amp;nbsp;• [[Les_Modules|Les modules]]
&amp;nbsp;• [[Compiler_et_patcher_son_noyau|Compiler et patcher son noyau]]</text>
      <sha1>kpy90dgnja8thtoehjatkep0uipxvhg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4505</id>
      <parentid>2643</parentid>
      <timestamp>2012-10-12T06:04:54Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="246">&lt;u&gt;'''Noyau (Kernel)'''&lt;/u&gt;

&amp;nbsp;• [[Les_Modules|Les modules]]
&amp;nbsp;• [[Compiler_et_patcher_son_noyau|Compiler et patcher son noyau]]
&amp;nbsp;• [[Installation_d%27un_noyau_Debian_chez_ovh.|Installer un noyau Debian sur un serveur Dédié]]</text>
      <sha1>nzt393ks98u76n9f7n4qtgjidi7vyyu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:General/Index/Paquets</title>
    <ns>10</ns>
    <id>190</id>
    <revision>
      <id>729</id>
      <timestamp>2010-02-02T05:57:32Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « ; [[Paquets]] [[Faireunpaquet|Faire un paquet Debian]]&amp;nbsp;•  [[Article 2]]&amp;nbsp;•  [[Article 3]]&amp;nbsp;•  [[Article 4]]&amp;nbsp;•  [[Article 5]]&amp;nbsp;•  [[Article 6]]… »</comment>
      <text xml:space="preserve" bytes="293">; [[Paquets]]
[[Faireunpaquet|Faire un paquet Debian]]&amp;nbsp;• 
[[Article 2]]&amp;nbsp;• 
[[Article 3]]&amp;nbsp;• 
[[Article 4]]&amp;nbsp;• 
[[Article 5]]&amp;nbsp;• 
[[Article 6]]&amp;nbsp;• 
[[Article 7]]&amp;nbsp;• 
[[Article 8]]&amp;nbsp;• 

&lt;noinclude&gt;[[Catégorie:General/Index|Paquets]]&lt;/noinclude&gt;</text>
      <sha1>nil7oegd87q484wipvdhatbn68r1lgp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:General/Index/Programmation</title>
    <ns>10</ns>
    <id>191</id>
    <revision>
      <id>730</id>
      <timestamp>2010-02-02T05:57:34Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « ; [[Programmation]] [[Article 1]]&amp;nbsp;•  [[Article 2]]&amp;nbsp;•  [[Article 3]]&amp;nbsp;•  [[Article 4]]&amp;nbsp;•  [[Article 5]]&amp;nbsp;•  [[Article 6]]&amp;nbsp;•  [[Article … »</comment>
      <text xml:space="preserve" bytes="278">; [[Programmation]]
[[Article 1]]&amp;nbsp;• 
[[Article 2]]&amp;nbsp;• 
[[Article 3]]&amp;nbsp;• 
[[Article 4]]&amp;nbsp;• 
[[Article 5]]&amp;nbsp;• 
[[Article 6]]&amp;nbsp;• 
[[Article 7]]&amp;nbsp;• 
[[Article 8]]&amp;nbsp;• 

&lt;noinclude&gt;[[Catégorie:General/Index|Programmation]]&lt;/noinclude&gt;</text>
      <sha1>i0rsz4yd3nc6m1upi9ktwl1i9btvp8y</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>951</id>
      <parentid>730</parentid>
      <timestamp>2010-02-07T05:46:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="365">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Programmation Programmation]

[[Article 1]]&amp;nbsp;• 
[[Article 2]]&amp;nbsp;• 
[[Article 3]]&amp;nbsp;• 
[[Article 4]]&amp;nbsp;• 
[[Article 5]]&amp;nbsp;• 
[[Article 6]]&amp;nbsp;• 
[[Article 7]]&amp;nbsp;• 
[[Article 8]]&amp;nbsp;• 

&lt;noinclude&gt;[[Catégorie:General/Index|Programmation]]&lt;/noinclude&gt;</text>
      <sha1>popziz1z7s6zo3vduub5hb2lduss9ol</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1029</id>
      <parentid>951</parentid>
      <timestamp>2010-02-08T04:17:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="365">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Programmation Programmation]

&amp;nbsp;• [[Article 1]]
&amp;nbsp;• [[Article 2]]
&amp;nbsp;• [[Article 3]]
&amp;nbsp;• [[Article 4]]
&amp;nbsp;• [[Article 5]]
&amp;nbsp;• [[Article 6]]
&amp;nbsp;• [[Article 7]]
&amp;nbsp;• [[Article 8]]

&lt;noinclude&gt;[[Catégorie:General/Index|Programmation]]&lt;/noinclude&gt;</text>
      <sha1>hdcxha27xs1rq0iaqvjzjiylyci1sl4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1518</id>
      <parentid>1029</parentid>
      <timestamp>2010-05-17T11:28:52Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="173">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Programmation Programmation]


&lt;noinclude&gt;[[Catégorie:General/Index|Programmation]]&lt;/noinclude&gt;</text>
      <sha1>kjpsrqn9p4k7vyvck1gkgngboa1fh9a</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1633</id>
      <parentid>1518</parentid>
      <timestamp>2010-07-05T08:38:58Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="221">#REDIRECT [[isalo:General/Index/Programmation]]
; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Programmation Programmation]


&lt;noinclude&gt;[[Catégorie:General/Index|Programmation]]&lt;/noinclude&gt;</text>
      <sha1>06pb7lolp2nensbpil1tbpx3j9izfhs</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1680</id>
      <parentid>1633</parentid>
      <timestamp>2010-07-06T09:22:50Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Annulation des modifications 1633 de [[Special:Contributions/Lol|Lol]] ([[User talk:Lol|discussion]])</comment>
      <text xml:space="preserve" bytes="173">; [http://beronono.com/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Programmation Programmation]


&lt;noinclude&gt;[[Catégorie:General/Index|Programmation]]&lt;/noinclude&gt;</text>
      <sha1>kjpsrqn9p4k7vyvck1gkgngboa1fh9a</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1701</id>
      <parentid>1680</parentid>
      <timestamp>2010-07-26T08:43:52Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="156">; [[/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Programmation|Programmation]]


&lt;noinclude&gt;[[Catégorie:General/Index|Programmation]]&lt;/noinclude&gt;</text>
      <sha1>fssmviga7k4o73w10xju9jrmgv4q71l</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1734</id>
      <parentid>1701</parentid>
      <timestamp>2010-07-27T18:41:27Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="225">; [[/wiki-debian/index.php?title=Mod%C3%A8le:General/Index/Programmation|Programmation]]

:*[[:Catégorie:Scripts|Scripts]]
::•&amp;nbsp;[[Yaptitude|Yaptitude]]

&lt;noinclude&gt;[[Catégorie:General/Index|Programmation]]&lt;/noinclude&gt;</text>
      <sha1>1ytm11an9l7cuopk3l0x789qkxh3pv4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1735</id>
      <parentid>1734</parentid>
      <timestamp>2010-07-27T18:42:55Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="152">* Programmation

:*[[:Catégorie:Scripts|Scripts]]
::•&amp;nbsp;[[Yaptitude|Yaptitude]]

&lt;noinclude&gt;[[Catégorie:General/Index|Programmation]]&lt;/noinclude&gt;</text>
      <sha1>9wxi90skrtdecyxvlqmf71c4v63ktp7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1736</id>
      <parentid>1735</parentid>
      <timestamp>2010-07-27T18:45:46Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="177">'''&lt;u&gt;&lt;/u&gt;'''&lt;u&gt;'''Programmation'''&lt;/u&gt;

:*[[:Catégorie:Scripts|Scripts]] 
::•&amp;nbsp;[[Yaptitude|Yaptitude]]

&lt;noinclude&gt;[[Catégorie:General/Index|Programmation]]&lt;/noinclude&gt;</text>
      <sha1>oveecvezg8prh0lnitex8ewi3o2qsbw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1737</id>
      <parentid>1736</parentid>
      <timestamp>2010-07-27T18:54:28Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="164">&lt;u&gt;'''Programmation'''&lt;/u&gt;

:*[[:Catégorie:Scripts|Scripts]] 
::•&amp;nbsp;[[Yaptitude|Yaptitude]]

&lt;noinclude&gt;[[Catégorie:General/Index|Programmation]]&lt;/noinclude&gt;</text>
      <sha1>30wy4ydrf2hf53bm59tpgqge2x8nfct</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1897</id>
      <parentid>1737</parentid>
      <timestamp>2010-08-08T06:46:09Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="200">&lt;u&gt;'''Programmation'''&lt;/u&gt;

:*[[:Catégorie:Scripts|Scripts]] 
::•&amp;nbsp;[[Yaptitude|Yaptitude]] •&amp;nbsp;[[Client_FTP|Client FTP]]


&lt;noinclude&gt;[[Catégorie:General/Index|Programmation]]&lt;/noinclude&gt;</text>
      <sha1>ck4okqjuvxdoweicwa7qrg3k92fi9b7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2492</id>
      <parentid>1897</parentid>
      <timestamp>2010-12-14T05:00:52Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="332">&lt;u&gt;'''Programmation'''&lt;/u&gt;

:*[[:Catégorie:Scripts|Scripts]] 
::•&amp;nbsp;[[Yaptitude|Yaptitude]] •&amp;nbsp;[[Client_FTP|Client FTP]] •&amp;nbsp;[[Rsync_%2B_NFS_(Script_de_sauvegarde_différentielle_journalière)|Rsync + NFS (Sauvegarde différentielle journalière)]]

&lt;noinclude&gt;[[Catégorie:General/Index|Programmation]]&lt;/noinclude&gt;</text>
      <sha1>qeqbmcrjgto5fa0346r2kyarqwekta1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2515</id>
      <parentid>2492</parentid>
      <timestamp>2010-12-17T08:21:04Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="407">&lt;u&gt;'''Programmation'''&lt;/u&gt;

:*[[:Catégorie:Scripts|Scripts]] 
::•&amp;nbsp;[[Yaptitude|Yaptitude]] •&amp;nbsp;[[Client_FTP|Client FTP]] •&amp;nbsp;[[Rsync_%2B_NFS_(Script_de_sauvegarde_différentielle_journalière)|Rsync + NFS (Sauvegarde différentielle journalière)]]  •&amp;nbsp;[[Graver_en_ligne_de_commande|Pour graver en ligne de commande]]

&lt;noinclude&gt;[[Catégorie:General/Index|Programmation]]&lt;/noinclude&gt;</text>
      <sha1>qp51lai1rldpqrrh0ogbdyw9z8g2c52</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2642</id>
      <parentid>2515</parentid>
      <timestamp>2010-12-30T14:38:08Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="340">&lt;u&gt;'''Programmation'''&lt;/u&gt;

:*[[:Catégorie:Scripts|Scripts]] 
::•&amp;nbsp;[[Yaptitude|Yaptitude]] •&amp;nbsp;[[Client_FTP|Client FTP]] •&amp;nbsp;[[Rsync_%2B_NFS_(Script_de_sauvegarde_différentielle_journalière)|Rsync + NFS (Sauvegarde différentielle journalière)]]  •&amp;nbsp;[[Graver_en_ligne_de_commande|Pour graver en ligne de commande]]</text>
      <sha1>59384rpstfygttqoivkvofhpkx8n3jq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3064</id>
      <parentid>2642</parentid>
      <timestamp>2011-06-11T05:40:44Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="450">&lt;u&gt;'''Programmation'''&lt;/u&gt;

:*[[:Catégorie:Scripts|Scripts]] 
::•&amp;nbsp;[[Yaptitude|Yaptitude]] •&amp;nbsp;[[Client_FTP|Client FTP]] •&amp;nbsp;[[Rsync_%2B_NFS_(Script_de_sauvegarde_différentielle_journalière)|Rsync + NFS (Sauvegarde différentielle journalière)]]  •&amp;nbsp;[[Graver_en_ligne_de_commande|Pour graver en ligne de commande]]  •&amp;nbsp;[[Upload_image_sur_le_pix_de_lol|Téléverser des images sur pix.toile-libre.org ou pix.isalo.org]]</text>
      <sha1>bmow3ajdq2g0sc6c58g69nrdp4vwle5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3136</id>
      <parentid>3064</parentid>
      <timestamp>2011-07-31T04:02:36Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Ajout lien</comment>
      <text xml:space="preserve" bytes="540">&lt;u&gt;'''Programmation'''&lt;/u&gt;

:*[[:Catégorie:Scripts|Scripts]] 
::•&amp;nbsp;[[Yaptitude|Yaptitude]] •&amp;nbsp;[[Client_FTP|Client FTP]] •&amp;nbsp;[[Rsync_%2B_NFS_(Script_de_sauvegarde_différentielle_journalière)|Rsync + NFS (Sauvegarde différentielle journalière)]]  •&amp;nbsp;[[Graver_en_ligne_de_commande|Pour graver en ligne de commande]]  •&amp;nbsp;[[Upload_image_sur_le_pix_de_lol|Téléverser des images sur pix.toile-libre.org ou pix.isalo.org]]  •&amp;nbsp;[[Script_de_double_sauvegarde_alternée|Script de double sauvegarde alternée]]</text>
      <sha1>eyiqwj7us1f09vjomxn4jronujl5jc0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4500</id>
      <parentid>3136</parentid>
      <timestamp>2012-10-12T05:49:08Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="596">&lt;u&gt;'''Programmation'''&lt;/u&gt;

:*[[:Catégorie:Scripts|Scripts]] 
::•&amp;nbsp;[[Yaptitude|Yaptitude]] •&amp;nbsp;[[Client_FTP|Client FTP]] •&amp;nbsp;[[Rsync_%2B_NFS_(Script_de_sauvegarde_différentielle_journalière)|Rsync + NFS (Sauvegarde différentielle journalière)]]  •&amp;nbsp;[[Graver_en_ligne_de_commande|Pour graver en ligne de commande]]  •&amp;nbsp;[[Upload_image_sur_le_pix_de_lol|Téléverser des images sur pix.toile-libre.org ou pix.isalo.org]]  •&amp;nbsp;[[Script_de_double_sauvegarde_alternée|Script de double sauvegarde alternée]]  •&amp;nbsp;[[Modification_d_iso|Modifier une image ISO]]</text>
      <sha1>n8uy7ce55yaemlqw5va2mbihud1ubip</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4504</id>
      <parentid>4500</parentid>
      <timestamp>2012-10-12T05:55:47Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="637">&lt;u&gt;'''Programmation'''&lt;/u&gt;

:*[[:Catégorie:Scripts|Scripts]] 
::•&amp;nbsp;[[Yaptitude|Yaptitude]] •&amp;nbsp;[[Client_FTP|Client FTP]] •&amp;nbsp;[[Rsync_%2B_NFS_(Script_de_sauvegarde_différentielle_journalière)|Rsync + NFS (Sauvegarde différentielle journalière)]]  •&amp;nbsp;[[Graver_en_ligne_de_commande|Pour graver en ligne de commande]]  •&amp;nbsp;[[Upload_image_sur_le_pix_de_lol|Téléverser des images sur pix.toile-libre.org ou pix.isalo.org]]  •&amp;nbsp;[[Script_de_double_sauvegarde_alternée|Script de double sauvegarde alternée]]  •&amp;nbsp;[[Modification_d_iso|Modifier une image ISO]]  •&amp;nbsp;[[Yapyt|Script d'aide à apt]]</text>
      <sha1>rzsbzzqw1ujwcda4rldwvcmwtt5g6zi</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4568</id>
      <parentid>4504</parentid>
      <timestamp>2012-10-28T11:33:57Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <text xml:space="preserve" bytes="674">&lt;u&gt;'''Programmation'''&lt;/u&gt;

:*[[:Catégorie:Scripts|Scripts]] 
•&amp;nbsp;[[Yaptitude|Yaptitude]]&lt;br&gt; 
•&amp;nbsp;[[Client_FTP|Client FTP]]&lt;br&gt;  
•&amp;nbsp;[[Rsync_%2B_NFS_(Script_de_sauvegarde_différentielle_journalière)|Rsync + NFS (Sauvegarde différentielle journalière)]]&lt;br&gt;   
•&amp;nbsp;[[Graver_en_ligne_de_commande|Pour graver en ligne de commande]]&lt;br&gt;   
•&amp;nbsp;[[Upload_image_sur_le_pix_de_lol|Téléverser des images sur pix.toile-libre.org ou pix.isalo.org]]&lt;br&gt;   
•&amp;nbsp;[[Script_de_double_sauvegarde_alternée|Script de double sauvegarde alternée]]&lt;br&gt;   
•&amp;nbsp;[[Modification_d_iso|Modifier une image ISO]]  •&amp;nbsp;[[Yapyt|Script d'aide à apt]]&lt;br&gt;</text>
      <sha1>s3m2isdhs4p82pozovtkgalnim69czj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4569</id>
      <parentid>4568</parentid>
      <timestamp>2012-10-28T11:38:19Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <text xml:space="preserve" bytes="680">&lt;u&gt;'''Programmation'''&lt;/u&gt;

:*[[:Catégorie:Scripts|Scripts]] 
•&amp;nbsp;[[Yaptitude|Yaptitude]]&lt;br&gt; 
•&amp;nbsp;[[Client_FTP|Client FTP]]&lt;br&gt;  
•&amp;nbsp;[[Rsync_%2B_NFS_(Script_de_sauvegarde_différentielle_journalière)|Rsync + NFS (Sauvegarde différentielle journalière)]]&lt;br&gt;   
•&amp;nbsp;[[Graver_en_ligne_de_commande|Pour graver en ligne de commande]]&lt;br&gt;   
•&amp;nbsp;[[Upload_image_sur_le_pix_de_lol|Téléverser des images sur pix.toile-libre.org ou pix.isalo.org]]&lt;br&gt;   
•&amp;nbsp;[[Script_de_double_sauvegarde_alternée|Script de double sauvegarde alternée]]&lt;br&gt;   
•&amp;nbsp;[[Modification_d_iso|Modifier une image ISO]]&lt;br&gt;   
•&amp;nbsp;[[Yapyt|Script d'aide à apt]]&lt;br&gt;</text>
      <sha1>bgluii4p8wwqh02eyha2hqpw96a67ww</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4571</id>
      <parentid>4569</parentid>
      <timestamp>2012-10-28T11:49:00Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <text xml:space="preserve" bytes="696">&lt;u&gt;'''Programmation'''&lt;/u&gt;

:*[[:Catégorie:Scripts|Scripts]] 
::•&amp;nbsp;[[Yaptitude|Yaptitude]]&lt;br&gt; 
::•&amp;nbsp;[[Client_FTP|Client FTP]]&lt;br&gt;  
::•&amp;nbsp;[[Rsync_%2B_NFS_(Script_de_sauvegarde_différentielle_journalière)|Rsync + NFS (Sauvegarde différentielle journalière)]]&lt;br&gt;   
::•&amp;nbsp;[[Graver_en_ligne_de_commande|Pour graver en ligne de commande]]&lt;br&gt;   
::•&amp;nbsp;[[Upload_image_sur_le_pix_de_lol|Téléverser des images sur pix.toile-libre.org ou pix.isalo.org]]&lt;br&gt;   
::•&amp;nbsp;[[Script_de_double_sauvegarde_alternée|Script de double sauvegarde alternée]]&lt;br&gt;   
::•&amp;nbsp;[[Modification_d_iso|Modifier une image ISO]]&lt;br&gt;   
::•&amp;nbsp;[[Yapyt|Script d'aide à apt]]&lt;br&gt;</text>
      <sha1>bil15b96g8rz6zcgg6olsdsiy9wjbq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:General/Index/Reseau et Wifi</title>
    <ns>10</ns>
    <id>726</id>
    <revision>
      <id>3206</id>
      <timestamp>2011-08-06T20:08:46Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « &lt;u&gt;'''Réseau et Wifi'''&lt;/u&gt;  :*[[:Catégorie:Réseau Généralités|Généralités]]  ::•&amp;nbsp;[[Configuration du réseau|Configuration du réseau]] •&amp;nbsp;[[Le fichier ... »</comment>
      <text xml:space="preserve" bytes="888">&lt;u&gt;'''Réseau et Wifi'''&lt;/u&gt;

:*[[:Catégorie:Réseau Généralités|Généralités]] 
::•&amp;nbsp;[[Configuration du réseau|Configuration du réseau]] •&amp;nbsp;[[Le fichier interfaces|Le fichier interfaces]] •&amp;nbsp;[[Introduction_au_routage|Introduction au routage]]  •&amp;nbsp;[[Nom_de_domaine_chez_Gandi_et_ip_dynamique|Nom de domaine chez Gandi et une ip dynamique]]

:*[[:Catégorie:Réseau Avancé|Réseau Avancé]] 
::•&amp;nbsp;[[Routage sélectif vers plusieurs connexions internet|Routage sélectif vers plusieurs connexions internet]] •&amp;nbsp;[[Tunnel_http_%2B_ssh|Créer un tunnel HTTP au travers de SSH]] •&amp;nbsp;[[NTP|Se synchroniser avec un serveur de temps]] 

:*[[:Catégorie:Wifi|Le Wifi]] 
::•&amp;nbsp;[[Wifi_-_Généralités|Généralités]] •&amp;nbsp;[[Utilisation de ndiswrapper|Utilisation de ndiswrapper]]

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>7x8sbhdyiikesxfak6a9imjpok4hykq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:General/Index/Securite</title>
    <ns>10</ns>
    <id>724</id>
    <revision>
      <id>3203</id>
      <timestamp>2011-08-06T19:59:11Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « &lt;u&gt;'''Sécurité'''&lt;/u&gt;  &amp;nbsp;• [[Sauvegarde_et_clonage_d'un_système|Sauvegarde et clonage d'un système]] &amp;nbsp;• [[TestDisk_et_PhotoRec|TestDisk et PhotoRec]] &amp;nbsp;... »</comment>
      <text xml:space="preserve" bytes="585">&lt;u&gt;'''Sécurité'''&lt;/u&gt;

&amp;nbsp;• [[Sauvegarde_et_clonage_d'un_système|Sauvegarde et clonage d'un système]] &amp;nbsp;• [[TestDisk_et_PhotoRec|TestDisk et PhotoRec]] &amp;nbsp;• [[Remettre_à_zéro_un_disque_dur|Remettre à zéro un disque dur]] &amp;nbsp;• [[Script_de_double_sauvegarde_alternée|Script de double sauvegarde alternée]] &amp;nbsp;• [[Netfilter/Iptables_introduction|Introduction à Netfilter et iptables - Exemple de pare-feu]] &amp;nbsp;• [[Rkhunter|Rkhunter]] &amp;nbsp;• [[Logwatch|Logwatch]] &amp;nbsp;• [[Surveillance|Surveillance: vérifiez l'intégrité de vos fichiers]]</text>
      <sha1>sogh1hmdw32dilv8hh5hhdt6mz9kguc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3231</id>
      <parentid>3203</parentid>
      <timestamp>2011-08-08T14:01:53Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Fail2ban</comment>
      <text xml:space="preserve" bytes="617">&lt;u&gt;'''Sécurité'''&lt;/u&gt;

&amp;nbsp;• [[Sauvegarde_et_clonage_d'un_système|Sauvegarde et clonage d'un système]] &amp;nbsp;• [[TestDisk_et_PhotoRec|TestDisk et PhotoRec]] &amp;nbsp;• [[Remettre_à_zéro_un_disque_dur|Remettre à zéro un disque dur]] &amp;nbsp;• [[Script_de_double_sauvegarde_alternée|Script de double sauvegarde alternée]] &amp;nbsp;• [[Netfilter/Iptables_introduction|Introduction à Netfilter et iptables - Exemple de pare-feu]] &amp;nbsp;• [[Rkhunter|Rkhunter]] &amp;nbsp;• [[Logwatch|Logwatch]] &amp;nbsp;• [[Surveillance|Surveillance: vérifiez l'intégrité de vos fichiers]] &amp;nbsp;• [[Fail2ban|Fail2ban]]</text>
      <sha1>h5gn3k5xmbsb62wtbjy4gnw0vxfgilb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3242</id>
      <parentid>3231</parentid>
      <timestamp>2011-08-09T14:52:25Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Chkrootkit</comment>
      <text xml:space="preserve" bytes="653">&lt;u&gt;'''Sécurité'''&lt;/u&gt;

&amp;nbsp;• [[Sauvegarde_et_clonage_d'un_système|Sauvegarde et clonage d'un système]] &amp;nbsp;• [[TestDisk_et_PhotoRec|TestDisk et PhotoRec]] &amp;nbsp;• [[Remettre_à_zéro_un_disque_dur|Remettre à zéro un disque dur]] &amp;nbsp;• [[Script_de_double_sauvegarde_alternée|Script de double sauvegarde alternée]] &amp;nbsp;• [[Netfilter/Iptables_introduction|Introduction à Netfilter et iptables - Exemple de pare-feu]] &amp;nbsp;• [[Rkhunter|Rkhunter]] &amp;nbsp;• [[Logwatch|Logwatch]] &amp;nbsp;• [[Surveillance|Surveillance: vérifiez l'intégrité de vos fichiers]] &amp;nbsp;• [[Fail2ban|Fail2ban]] &amp;nbsp;• [[Chkrootkit|ChkRootkit]]</text>
      <sha1>jl5hlzk9fl1mav9o85jus22w26lv4z8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3247</id>
      <parentid>3242</parentid>
      <timestamp>2011-08-10T08:34:30Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="784">&lt;u&gt;'''Sécurité'''&lt;/u&gt;

&amp;nbsp;• [[Sauvegarde_et_clonage_d'un_système|Sauvegarde et clonage d'un système]] &amp;nbsp;• [[TestDisk_et_PhotoRec|TestDisk et PhotoRec]] &amp;nbsp;• [[Remettre_à_zéro_un_disque_dur|Remettre à zéro un disque dur]] &amp;nbsp;• [[Script_de_double_sauvegarde_alternée|Script de double sauvegarde alternée]] &amp;nbsp;• [[Netfilter/Iptables_introduction|Introduction à Netfilter et iptables - Exemple de pare-feu]] &amp;nbsp;• [[Rkhunter|Rkhunter]] &amp;nbsp;• [[Logwatch|Logwatch]] &amp;nbsp;• [[Surveillance|Surveillance: vérifiez l'intégrité de vos fichiers]] &amp;nbsp;• [[Fail2ban|Fail2ban]] &amp;nbsp;• [[Chkrootkit|ChkRootkit]] &amp;nbsp;• [[Sauvegardes_généralités|Sauvegardes: généralités]] &amp;nbsp;• [[Manuel_de_sécurité|Petit manuel de sécurité]]</text>
      <sha1>lellzokc4tt3z38jrkvfhl2qwuh5q20</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3257</id>
      <parentid>3247</parentid>
      <timestamp>2011-08-11T08:21:44Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="944">&lt;u&gt;'''Sécurité'''&lt;/u&gt;

:*[[:Catégorie:Sécurité Généralités| Généralités]]

::&amp;nbsp;• [[Manuel_de_sécurité|Petit manuel de sécurité]] &amp;nbsp;• [[TestDisk_et_PhotoRec|TestDisk et PhotoRec]] &amp;nbsp;• [[Remettre_à_zéro_un_disque_dur|Remettre à zéro un disque dur]]  &amp;nbsp;• [[Netfilter/Iptables_introduction|Introduction à Netfilter et iptables - Exemple de pare-feu]] &amp;nbsp;• [[Rkhunter|Rkhunter]] &amp;nbsp;• [[Logwatch|Logwatch]] &amp;nbsp;• [[Surveillance|Surveillance: vérifiez l'intégrité de vos fichiers]] &amp;nbsp;• [[Fail2ban|Fail2ban]] &amp;nbsp;• [[Chkrootkit|ChkRootkit]]

:*[[:Catégorie:Sauvegardes|Sauvegarde]]

::&amp;nbsp;• [[Sauvegardes_généralités|Sauvegardes: généralités]] &amp;nbsp;• [[Sauvegarde_et_clonage_d'un_système|Sauvegarde et clonage d'un système]] &amp;nbsp;• [[Script_de_double_sauvegarde_alternée|Script de double sauvegarde alternée]] &amp;nbsp;• [[Rsnapshot|Sauvegardes avec Rsnapshot]]</text>
      <sha1>ngo7i0oazor9rf9kulrc5wdcpb5lmi4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3260</id>
      <parentid>3257</parentid>
      <timestamp>2011-08-11T13:11:53Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="970">&lt;u&gt;'''Sécurité'''&lt;/u&gt;

:*[[:Catégorie:Sécurité Généralités| Généralités]]

::&amp;nbsp;• [[Manuel_de_sécurité|Petit manuel de sécurité]] &amp;nbsp;• [[TestDisk_et_PhotoRec|TestDisk et PhotoRec]] &amp;nbsp;• [[Remettre_à_zéro_un_disque_dur|Remettre à zéro un disque dur]]  &amp;nbsp;• [[Netfilter/Iptables_introduction|Introduction à Netfilter et iptables - Exemple de pare-feu]] &amp;nbsp;• [[Rkhunter|Rkhunter]] &amp;nbsp;• [[Logwatch|Logwatch]] &amp;nbsp;• [[Surveillance|Surveillance: vérifiez l'intégrité de vos fichiers]] &amp;nbsp;• [[Fail2ban|Fail2ban]] &amp;nbsp;• [[Chkrootkit|ChkRootkit]]

:*[[:Catégorie:Sauvegardes|Sauvegarde]]

::&amp;nbsp;• [[Sauvegardes_généralités|Sauvegardes: généralités]] &amp;nbsp;• [[Sauvegarde_et_clonage_d'un_système|Sauvegarde et clonage d'un système]] &amp;nbsp;• [[Script_de_double_sauvegarde_alternée|Script de double sauvegarde alternée]] &amp;nbsp;• [[Rsnapshot|Sauvegardes avec Rsnapshot]] &amp;nbsp;• [[Rsync|Rsync]]</text>
      <sha1>bcp7pmewodk18dgwld5t548a9jfx0h4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3458</id>
      <parentid>3260</parentid>
      <timestamp>2011-09-07T08:26:38Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Pare-feu simplifié</comment>
      <text xml:space="preserve" bytes="1038">&lt;u&gt;'''Sécurité'''&lt;/u&gt;

:*[[:Catégorie:Sécurité Généralités| Généralités]]

::&amp;nbsp;• [[Manuel_de_sécurité|Petit manuel de sécurité]] &amp;nbsp;• [[TestDisk_et_PhotoRec|TestDisk et PhotoRec]] &amp;nbsp;• [[Remettre_à_zéro_un_disque_dur|Remettre à zéro un disque dur]]  &amp;nbsp;• [[Netfilter/Iptables_introduction|Introduction à Netfilter et iptables - Exemple de pare-feu]] &amp;nbsp;• [[Rkhunter|Rkhunter]] &amp;nbsp;• [[Logwatch|Logwatch]] &amp;nbsp;• [[Surveillance|Surveillance: vérifiez l'intégrité de vos fichiers]] &amp;nbsp;• [[Fail2ban|Fail2ban]] &amp;nbsp;• [[Chkrootkit|ChkRootkit]] &amp;nbsp;• [[Parefeu_Simplifi%C3%A9|Exemple de Pare-feu simplifié]]

:*[[:Catégorie:Sauvegardes|Sauvegarde]]

::&amp;nbsp;• [[Sauvegardes_généralités|Sauvegardes: généralités]] &amp;nbsp;• [[Sauvegarde_et_clonage_d'un_système|Sauvegarde et clonage d'un système]] &amp;nbsp;• [[Script_de_double_sauvegarde_alternée|Script de double sauvegarde alternée]] &amp;nbsp;• [[Rsnapshot|Sauvegardes avec Rsnapshot]] &amp;nbsp;• [[Rsync|Rsync]]</text>
      <sha1>asgvqhqh7odj90huwc6h10b4qgn1iiw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3493</id>
      <parentid>3458</parentid>
      <timestamp>2011-10-21T15:01:19Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1090">&lt;u&gt;'''Sécurité'''&lt;/u&gt;

:*[[:Catégorie:Sécurité Généralités| Généralités]]

::&amp;nbsp;• [[Manuel_de_sécurité|Petit manuel de sécurité]] &amp;nbsp;• [[TestDisk_et_PhotoRec|TestDisk et PhotoRec]] &amp;nbsp;• [[Remettre_à_zéro_un_disque_dur|Remettre à zéro un disque dur]]  &amp;nbsp;• [[Netfilter/Iptables_introduction|Introduction à Netfilter et iptables - Exemple de pare-feu]] &amp;nbsp;• [[Rkhunter|Rkhunter]] &amp;nbsp;• [[Logwatch|Logwatch]] &amp;nbsp;• [[Surveillance|Surveillance: vérifiez l'intégrité de vos fichiers]] &amp;nbsp;• [[Fail2ban|Fail2ban]] &amp;nbsp;• [[Chkrootkit|ChkRootkit]] &amp;nbsp;• [[Parefeu_Simplifi%C3%A9|Exemple de Pare-feu simplifié]] &amp;nbsp;• [[Sécuriser_Apache2|Sécuriser Apache2]]

:*[[:Catégorie:Sauvegardes|Sauvegarde]]

::&amp;nbsp;• [[Sauvegardes_généralités|Sauvegardes: généralités]] &amp;nbsp;• [[Sauvegarde_et_clonage_d'un_système|Sauvegarde et clonage d'un système]] &amp;nbsp;• [[Script_de_double_sauvegarde_alternée|Script de double sauvegarde alternée]] &amp;nbsp;• [[Rsnapshot|Sauvegardes avec Rsnapshot]] &amp;nbsp;• [[Rsync|Rsync]]</text>
      <sha1>1dhr2ikqzak5d0umz7eu7y4yfm93538</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3501</id>
      <parentid>3493</parentid>
      <timestamp>2011-10-27T13:48:46Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1168">&lt;u&gt;'''Sécurité'''&lt;/u&gt;

:*[[:Catégorie:Sécurité Généralités| Généralités]]

::&amp;nbsp;• [[Manuel_de_sécurité|Petit manuel de sécurité]] &amp;nbsp;• [[TestDisk_et_PhotoRec|TestDisk et PhotoRec]] &amp;nbsp;• [[Remettre_à_zéro_un_disque_dur|Remettre à zéro un disque dur]]  &amp;nbsp;• [[Netfilter/Iptables_introduction|Introduction à Netfilter et iptables - Exemple de pare-feu]] &amp;nbsp;• [[Rkhunter|Rkhunter]] &amp;nbsp;• [[Logwatch|Logwatch]] &amp;nbsp;• [[Surveillance|Surveillance: vérifiez l'intégrité de vos fichiers]] &amp;nbsp;• [[Fail2ban|Fail2ban]] &amp;nbsp;• [[Chkrootkit|ChkRootkit]] &amp;nbsp;• [[Parefeu_Simplifi%C3%A9|Exemple de Pare-feu simplifié]] &amp;nbsp;• [[Sécuriser_Apache2|Sécuriser Apache2]] &amp;nbsp;• [[Portsentry|Portsentry: protégez vous contre les scans de ports]]

:*[[:Catégorie:Sauvegardes|Sauvegarde]]

::&amp;nbsp;• [[Sauvegardes_généralités|Sauvegardes: généralités]] &amp;nbsp;• [[Sauvegarde_et_clonage_d'un_système|Sauvegarde et clonage d'un système]] &amp;nbsp;• [[Script_de_double_sauvegarde_alternée|Script de double sauvegarde alternée]] &amp;nbsp;• [[Rsnapshot|Sauvegardes avec Rsnapshot]] &amp;nbsp;• [[Rsync|Rsync]]</text>
      <sha1>ey1gqbz9te2f5jrgmn4lpxp4qtlbc4q</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3809</id>
      <parentid>3501</parentid>
      <timestamp>2012-02-06T06:01:28Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="1342">&lt;u&gt;'''Sécurité'''&lt;/u&gt;

:*[[:Catégorie:Sécurité Généralités| Généralités]]

::&amp;nbsp;• [[Manuel_de_sécurité|Petit manuel de sécurité]] &amp;nbsp;• [[TestDisk_et_PhotoRec|TestDisk et PhotoRec]] &amp;nbsp;• [[Remettre_à_zéro_un_disque_dur|Remettre à zéro un disque dur]]  &amp;nbsp;• [[Netfilter/Iptables_introduction|Introduction à Netfilter et iptables - Exemple de pare-feu]] &amp;nbsp;• [[Rkhunter|Rkhunter]] &amp;nbsp;• [[Logwatch|Logwatch]] &amp;nbsp;• [[Surveillance|Surveillance: vérifiez l'intégrité de vos fichiers]] &amp;nbsp;• [[Fail2ban|Fail2ban]] &amp;nbsp;• [[Chkrootkit|ChkRootkit]] &amp;nbsp;• [[Parefeu_Simplifi%C3%A9|Exemple de Pare-feu simplifié]] &amp;nbsp;• [[Sécuriser_Apache2|Sécuriser Apache2]] &amp;nbsp;• [[Portsentry|Portsentry: protégez vous contre les scans de ports]]

:*[[:Catégorie:Sauvegardes|Sauvegarde]]

::&amp;nbsp;• [[Sauvegardes_généralités|Sauvegardes: généralités]] &amp;nbsp;• [[Sauvegarde_et_clonage_d'un_système|Sauvegarde et clonage d'un système]] &amp;nbsp;• [[Script_de_double_sauvegarde_alternée|Script de double sauvegarde alternée]] &amp;nbsp;• [[Rsnapshot|Sauvegardes avec Rsnapshot]] &amp;nbsp;• [[Rsync|Rsync]]
::&amp;nbsp;• [[Sauvegarder_sa_Debian_en_vue_d%27une_Réinstallation_ou_Reconstruction_-_Racine_et_Home_séparés|Sauvegarde complète avec Rsync - Racine et /home séparés]]</text>
      <sha1>0madwh651xkmcds3qqtbrispx1a6dwx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3812</id>
      <parentid>3809</parentid>
      <timestamp>2012-02-06T06:06:38Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="1488">&lt;u&gt;'''Sécurité'''&lt;/u&gt;

:*[[:Catégorie:Sécurité Généralités| Généralités]]

::&amp;nbsp;• [[Manuel_de_sécurité|Petit manuel de sécurité]] &amp;nbsp;• [[TestDisk_et_PhotoRec|TestDisk et PhotoRec]] &amp;nbsp;• [[Remettre_à_zéro_un_disque_dur|Remettre à zéro un disque dur]]  &amp;nbsp;• [[Netfilter/Iptables_introduction|Introduction à Netfilter et iptables - Exemple de pare-feu]] &amp;nbsp;• [[Rkhunter|Rkhunter]] &amp;nbsp;• [[Logwatch|Logwatch]] &amp;nbsp;• [[Surveillance|Surveillance: vérifiez l'intégrité de vos fichiers]] &amp;nbsp;• [[Fail2ban|Fail2ban]] &amp;nbsp;• [[Chkrootkit|ChkRootkit]] &amp;nbsp;• [[Parefeu_Simplifi%C3%A9|Exemple de Pare-feu simplifié]] &amp;nbsp;• [[Sécuriser_Apache2|Sécuriser Apache2]] &amp;nbsp;• [[Portsentry|Portsentry: protégez vous contre les scans de ports]]

:*[[:Catégorie:Sauvegardes|Sauvegarde]]

::&amp;nbsp;• [[Sauvegardes_généralités|Sauvegardes: généralités]] &amp;nbsp;• [[Sauvegarde_et_clonage_d'un_système|Sauvegarde et clonage d'un système]] &amp;nbsp;• [[Script_de_double_sauvegarde_alternée|Script de double sauvegarde alternée]] &amp;nbsp;• [[Rsnapshot|Sauvegardes avec Rsnapshot]] &amp;nbsp;• [[Rsync|Rsync]]
::&amp;nbsp;• [[Sauvegarder_sa_Debian_en_vue_d%27une_Réinstallation_ou_Reconstruction_-_Racine_et_Home_séparés|Sauvegarde complète avec Rsync - Racine et /home séparés]]&amp;nbsp;• [[Restauration_ou_Reconstruction_de_sa_Debian_-_Racine_et_Home_séparés|Restauration complète avec Rsync - Racine et /home séparés]]</text>
      <sha1>ds8fz200l0b92ivujj3y6rt2fcohk0q</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3910</id>
      <parentid>3812</parentid>
      <timestamp>2012-03-08T07:47:25Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Règles_iptables_pour_vos_applications_(pc_de_bureau)</comment>
      <text xml:space="preserve" bytes="1610">&lt;u&gt;'''Sécurité'''&lt;/u&gt;

:*[[:Catégorie:Sécurité Généralités| Généralités]]

::&amp;nbsp;• [[Manuel_de_sécurité|Petit manuel de sécurité]] &amp;nbsp;• [[TestDisk_et_PhotoRec|TestDisk et PhotoRec]] &amp;nbsp;• [[Remettre_à_zéro_un_disque_dur|Remettre à zéro un disque dur]]  &amp;nbsp;• [[Netfilter/Iptables_introduction|Introduction à Netfilter et iptables - Exemple de pare-feu]] &amp;nbsp;• [[Rkhunter|Rkhunter]] &amp;nbsp;• [[Logwatch|Logwatch]] &amp;nbsp;• [[Surveillance|Surveillance: vérifiez l'intégrité de vos fichiers]] &amp;nbsp;• [[Fail2ban|Fail2ban]] &amp;nbsp;• [[Chkrootkit|ChkRootkit]] &amp;nbsp;• [[Parefeu_Simplifi%C3%A9|Exemple de Pare-feu simplifié]] &amp;nbsp;• [[Sécuriser_Apache2|Sécuriser Apache2]] &amp;nbsp;• [[Portsentry|Portsentry: protégez vous contre les scans de ports]] &amp;nbsp;• [[Règles_iptables_pour_vos_applications_(pc_de_bureau)|Règles iptables pour vos applications (pc de bureau)]]

:*[[:Catégorie:Sauvegardes|Sauvegarde]]

::&amp;nbsp;• [[Sauvegardes_généralités|Sauvegardes: généralités]] &amp;nbsp;• [[Sauvegarde_et_clonage_d'un_système|Sauvegarde et clonage d'un système]] &amp;nbsp;• [[Script_de_double_sauvegarde_alternée|Script de double sauvegarde alternée]] &amp;nbsp;• [[Rsnapshot|Sauvegardes avec Rsnapshot]] &amp;nbsp;• [[Rsync|Rsync]]
::&amp;nbsp;• [[Sauvegarder_sa_Debian_en_vue_d%27une_Réinstallation_ou_Reconstruction_-_Racine_et_Home_séparés|Sauvegarde complète avec Rsync - Racine et /home séparés]]&amp;nbsp;• [[Restauration_ou_Reconstruction_de_sa_Debian_-_Racine_et_Home_séparés|Restauration complète avec Rsync - Racine et /home séparés]]</text>
      <sha1>ilqpsy80aj0qv5nglwgqek6iyeesbo3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3997</id>
      <parentid>3910</parentid>
      <timestamp>2012-03-26T16:01:27Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <text xml:space="preserve" bytes="1687">&lt;u&gt;'''Sécurité'''&lt;/u&gt;

:*[[:Catégorie:Sécurité Généralités| Généralités]]

::&amp;nbsp;• [[Manuel_de_sécurité|Petit manuel de sécurité]] &amp;nbsp;• [[TestDisk_et_PhotoRec|TestDisk et PhotoRec]] &amp;nbsp;• [[Remettre_à_zéro_un_disque_dur|Remettre à zéro un disque dur]]  &amp;nbsp;• [[Netfilter/Iptables_introduction|Introduction à Netfilter et iptables - Exemple de pare-feu]] &amp;nbsp;• [[Rkhunter|Rkhunter]] &amp;nbsp;• [[Logwatch|Logwatch]] &amp;nbsp;• [[Surveillance|Surveillance: vérifiez l'intégrité de vos fichiers]] &amp;nbsp;• [[Fail2ban|Fail2ban]] &amp;nbsp;• [[Chkrootkit|ChkRootkit]] &amp;nbsp;• [[Parefeu_Simplifi%C3%A9|Exemple de Pare-feu simplifié]] &amp;nbsp;• [[Sécuriser_Apache2|Sécuriser Apache2]] &amp;nbsp;• [[Portsentry|Portsentry: protégez vous contre les scans de ports]] &amp;nbsp;• [[Règles_iptables_pour_vos_applications_(pc_de_bureau)|Règles iptables pour vos applications (pc de bureau)]]&amp;nbsp;• [[Sécurité_apache2_un_petit_plus|Script pour sécuriser apache2]]

:*[[:Catégorie:Sauvegardes|Sauvegarde]]

::&amp;nbsp;• [[Sauvegardes_généralités|Sauvegardes: généralités]] &amp;nbsp;• [[Sauvegarde_et_clonage_d'un_système|Sauvegarde et clonage d'un système]] &amp;nbsp;• [[Script_de_double_sauvegarde_alternée|Script de double sauvegarde alternée]] &amp;nbsp;• [[Rsnapshot|Sauvegardes avec Rsnapshot]] &amp;nbsp;• [[Rsync|Rsync]]
::&amp;nbsp;• [[Sauvegarder_sa_Debian_en_vue_d%27une_Réinstallation_ou_Reconstruction_-_Racine_et_Home_séparés|Sauvegarde complète avec Rsync - Racine et /home séparés]]&amp;nbsp;• [[Restauration_ou_Reconstruction_de_sa_Debian_-_Racine_et_Home_séparés|Restauration complète avec Rsync - Racine et /home séparés]]</text>
      <sha1>b3jo6gh6optpyo0jkd59eemkux660n0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4000</id>
      <parentid>3997</parentid>
      <timestamp>2012-03-29T13:54:09Z</timestamp>
      <contributor>
        <username>Ricardo</username>
        <id>17</id>
      </contributor>
      <text xml:space="preserve" bytes="1700">&lt;u&gt;'''Sécurité'''&lt;/u&gt;

:*[[:Catégorie:Sécurité Généralités| Généralités]]

::&amp;nbsp;• [[Manuel_de_sécurité|Petit manuel de sécurité]] &amp;nbsp;• [[TestDisk_et_PhotoRec|TestDisk et PhotoRec]] &amp;nbsp;• [[Remettre_à_zéro_un_disque_dur|Remettre à zéro un disque dur]]  &amp;nbsp;• [[Netfilter/Iptables_introduction|Introduction à Netfilter et iptables - Exemple de pare-feu]] &amp;nbsp;• [[Rkhunter|Rkhunter]] &amp;nbsp;• [[Logwatch|Logwatch]] &amp;nbsp;• [[Surveillance|Surveillance: vérifiez l'intégrité de vos fichiers]] &amp;nbsp;• [[Fail2ban|Fail2ban]] &amp;nbsp;• [[Chkrootkit|ChkRootkit]] &amp;nbsp;• [[Parefeu_Simplifi%C3%A9|Exemple de Pare-feu simplifié]] &amp;nbsp;• [[Sécuriser_Apache2|Sécuriser Apache2]] &amp;nbsp;• [[Portsentry|Portsentry: protégez vous contre les scans de ports]] &amp;nbsp;• [[Règles_iptables_pour_vos_applications_(pc_de_bureau)|Règles iptables pour vos applications (pc de bureau)]]&amp;nbsp;• [[Sécurité_apache2_un_petit_plus|Une sécurité complémentaire pour Apache2]]

:*[[:Catégorie:Sauvegardes|Sauvegarde]]

::&amp;nbsp;• [[Sauvegardes_généralités|Sauvegardes: généralités]] &amp;nbsp;• [[Sauvegarde_et_clonage_d'un_système|Sauvegarde et clonage d'un système]] &amp;nbsp;• [[Script_de_double_sauvegarde_alternée|Script de double sauvegarde alternée]] &amp;nbsp;• [[Rsnapshot|Sauvegardes avec Rsnapshot]] &amp;nbsp;• [[Rsync|Rsync]]
::&amp;nbsp;• [[Sauvegarder_sa_Debian_en_vue_d%27une_Réinstallation_ou_Reconstruction_-_Racine_et_Home_séparés|Sauvegarde complète avec Rsync - Racine et /home séparés]]&amp;nbsp;• [[Restauration_ou_Reconstruction_de_sa_Debian_-_Racine_et_Home_séparés|Restauration complète avec Rsync - Racine et /home séparés]]</text>
      <sha1>mouh341gmagbdncbs91y3rksubp9wzp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4196</id>
      <parentid>4000</parentid>
      <timestamp>2012-05-06T06:37:23Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Bacula</comment>
      <text xml:space="preserve" bytes="1783">&lt;u&gt;'''Sécurité'''&lt;/u&gt;

:*[[:Catégorie:Sécurité Généralités| Généralités]]

::&amp;nbsp;• [[Manuel_de_sécurité|Petit manuel de sécurité]] &amp;nbsp;• [[TestDisk_et_PhotoRec|TestDisk et PhotoRec]] &amp;nbsp;• [[Remettre_à_zéro_un_disque_dur|Remettre à zéro un disque dur]]  &amp;nbsp;• [[Netfilter/Iptables_introduction|Introduction à Netfilter et iptables - Exemple de pare-feu]] &amp;nbsp;• [[Rkhunter|Rkhunter]] &amp;nbsp;• [[Logwatch|Logwatch]] &amp;nbsp;• [[Surveillance|Surveillance: vérifiez l'intégrité de vos fichiers]] &amp;nbsp;• [[Fail2ban|Fail2ban]] &amp;nbsp;• [[Chkrootkit|ChkRootkit]] &amp;nbsp;• [[Parefeu_Simplifi%C3%A9|Exemple de Pare-feu simplifié]] &amp;nbsp;• [[Sécuriser_Apache2|Sécuriser Apache2]] &amp;nbsp;• [[Portsentry|Portsentry: protégez vous contre les scans de ports]] &amp;nbsp;• [[Règles_iptables_pour_vos_applications_(pc_de_bureau)|Règles iptables pour vos applications (pc de bureau)]]&amp;nbsp;• [[Sécurité_apache2_un_petit_plus|Une sécurité complémentaire pour Apache2]]

:*[[:Catégorie:Sauvegardes|Sauvegarde]]

::&amp;nbsp;• [[Sauvegardes_généralités|Sauvegardes: généralités]] &amp;nbsp;• [[Sauvegarde_et_clonage_d'un_système|Sauvegarde et clonage d'un système]] &amp;nbsp;• [[Script_de_double_sauvegarde_alternée|Script de double sauvegarde alternée]] &amp;nbsp;• [[Rsnapshot|Sauvegardes avec Rsnapshot]] &amp;nbsp;• [[Rsync|Rsync]]
::&amp;nbsp;• [[Sauvegarder_sa_Debian_en_vue_d%27une_Réinstallation_ou_Reconstruction_-_Racine_et_Home_séparés|Sauvegarde complète avec Rsync - Racine et /home séparés]] &amp;nbsp;• [[Restauration_ou_Reconstruction_de_sa_Debian_-_Racine_et_Home_séparés|Restauration complète avec Rsync - Racine et /home séparés]] &amp;nbsp;• [[Bacula|Bacula: Sauvegarde, restauration et vérification en réseau]]</text>
      <sha1>q1ggbqwzzxkcve3904gvwmcvx2gqi1j</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:General/Index/Sécurité informatique</title>
    <ns>10</ns>
    <id>192</id>
    <revision>
      <id>731</id>
      <timestamp>2010-02-02T05:57:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « ; [[Sécurité informatique]] [[Article 1]]&amp;nbsp;•  [[Article 2]]&amp;nbsp;•  [[Article 3]]&amp;nbsp;•  [[Article 4]]&amp;nbsp;•  [[Article 5]]&amp;nbsp;•  [[Article 6]]&amp;nbsp;•  … »</comment>
      <text xml:space="preserve" bytes="298">; [[Sécurité informatique]]
[[Article 1]]&amp;nbsp;• 
[[Article 2]]&amp;nbsp;• 
[[Article 3]]&amp;nbsp;• 
[[Article 4]]&amp;nbsp;• 
[[Article 5]]&amp;nbsp;• 
[[Article 6]]&amp;nbsp;• 
[[Article 7]]&amp;nbsp;• 
[[Article 8]]&amp;nbsp;• 

&lt;noinclude&gt;[[Catégorie:General/Index|Sécurité informatique]]&lt;/noinclude&gt;</text>
      <sha1>slzfzf1n8s9kbrpj010bhj3kl88kzy1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:General/Modele</title>
    <ns>10</ns>
    <id>727</id>
    <revision>
      <id>3208</id>
      <timestamp>2011-08-07T12:56:00Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <comment>Page créée avec « &lt;div style=&quot;background-color:#b41d37; display: block; border:1px solid #aaa; font-weight: bold; font-size:{{{tailleTitre}}} ; text-align: center; padding: 3px; -moz-border-ra... »</comment>
      <text xml:space="preserve" bytes="615">&lt;div style=&quot;background-color:#b41d37; display: block; border:1px solid #aaa; font-weight: bold; font-size:{{{tailleTitre}}} ; text-align: center; padding: 3px; -moz-border-radius-topright:0.4em; -moz-border-radius-topleft:0.4em;&quot;&gt;&lt;font color=&quot;white&quot;&gt;{{{titre}}}&lt;/font&gt;&lt;/div&gt;
&lt;div style=&quot;border: 1px solid #aaa; border-top: none; background-color: #eeeeee; display: block; padding: 0.3em;&quot;&gt;
{{{{{modèle}}}{{{extension|}}}}}
&lt;div style=&quot;float:right;&quot;&gt;&lt;font size=&quot;1&quot;&gt;&lt;nowiki&gt;[&lt;/nowiki&gt;[[{{{modèle}}}|modifier]]&lt;nowiki&gt;]&lt;/nowiki&gt;&amp;nbsp;&lt;/font&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;noinclude&gt;
[[Catégorie:General|Modèle]]

&lt;/noinclude&gt;</text>
      <sha1>nepc88g8tpvjgytvdfa238w15acuemt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:IconLink</title>
    <ns>10</ns>
    <id>1102</id>
    <revision>
      <id>4552</id>
      <timestamp>2012-10-28T06:44:56Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « &lt;!-- Repiqué chez Amadeus Project...    Icon link Template - taken from very good iPod Linux's wiki    Arguments:   1 - the real name of the linked page   2 - the text fo... »</comment>
      <text xml:space="preserve" bytes="892">&lt;!-- Repiqué chez Amadeus Project...

  Icon link Template - taken from very good iPod Linux's wiki

  Arguments:
  1 - the real name of the linked page
  2 - the text for the link
  3 - the 48x48 image name (excluding the 'Image:' namespace prefix)
  4 - the text caption for the button

  Example (use as a row of a table):
{{Block|Project Status|Status Page|Status.png|View current Armadeus features}}

--&gt;

|width=48|&lt;div style=&quot;position: relative; width:48px; height:48px; overflow: hidden&quot;&gt;
&lt;div style=&quot;position: absolute; top: 0px; left: 0px; font-size: 100px; overflow: hidden; line-height: 100px; z-index: 3&quot;&gt;[[{{{1}}}|&amp;nbsp;&amp;nbsp;&amp;nbsp;]]&lt;/div&gt;
&lt;div style=&quot;position: absolute; top: 0px; left: 0px; z-index: 2&quot;&gt;[[Image:{{{3}}}|48px|{{{1}}}]]&lt;/div&gt;
&lt;/div&gt;
|width=50%| &lt;div style=&quot;background:{{{5}}}; -moz-border-radius:8px;&quot;&gt; '''[[{{{1}}}|{{{2}}}]]'''&lt;br&gt;&lt;small&gt;{{{4}}}&lt;/small&gt;&lt;/div&gt;</text>
      <sha1>8pxgrorpezibx59i6weadm0720sfvqu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4575</id>
      <parentid>4552</parentid>
      <timestamp>2012-10-28T13:04:51Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="428">&lt;nowiki&gt;

{{IconLink|Nom de la page|Nom qui sera affiché|image.png|baratin sous le Nom qui sera affiché|Couleur du fond}}

&lt;/nowiki&gt;
&lt;/noinclude&gt;

{| cellspacing=2 cellpadding=4 border=0
| width=8% style=&quot;vertical-align:middle&quot; | [[Image:{{{3}}}|48px|link={{{1}}}]]
| width=42% style=&quot;vertical-align:middle; background:{{{5}}}; font-size: 18px; -moz-border-radius:20px&quot; | '''[[{{{1}}}|{{{2}}}]]'''&lt;br&gt;&lt;small&gt;{{{4}}}&lt;/small&gt;
|}</text>
      <sha1>lufwcxgo31r88yqqr6xojrdx6jc8f66</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4576</id>
      <parentid>4575</parentid>
      <timestamp>2012-10-28T13:05:59Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="438">&lt;noinclude&gt;
&lt;nowiki&gt;
{{IconLink|Nom de la page|Nom qui sera affiché|image.png|baratin sous le Nom qui sera affiché|Couleur du fond}}
&lt;/nowiki&gt;
&lt;/noinclude&gt;

{| cellspacing=2 cellpadding=4 border=0
| width=8% style=&quot;vertical-align:middle&quot; | [[Image:{{{3}}}|48px|link={{{1}}}]]
| width=42% style=&quot;vertical-align:middle; background:{{{5}}}; font-size: 18px; -moz-border-radius:20px&quot; | '''[[{{{1}}}|{{{2}}}]]'''&lt;br&gt;&lt;small&gt;{{{4}}}&lt;/small&gt;
|}</text>
      <sha1>7j6kzi0oiztv1kaduj12whexc2630td</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4597</id>
      <parentid>4576</parentid>
      <timestamp>2012-10-29T03:53:19Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="438">&lt;noinclude&gt;
&lt;nowiki&gt;
{{IconLink|Nom de la page|Nom qui sera affiché|image.png|baratin sous le Nom qui sera affiché|Couleur du fond}}
&lt;/nowiki&gt;
&lt;/noinclude&gt;

{| cellspacing=2 cellpadding=4 border=0
| width=8% style=&quot;vertical-align:middle&quot; | [[Image:{{{3}}}|96px|link={{{1}}}]]
| width=42% style=&quot;vertical-align:middle; background:{{{5}}}; font-size: 18px; -moz-border-radius:20px&quot; | '''[[{{{1}}}|{{{2}}}]]'''&lt;br&gt;&lt;small&gt;{{{4}}}&lt;/small&gt;
|}</text>
      <sha1>908umthszru3myyr77gdpc2t0prjd5g</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4598</id>
      <parentid>4597</parentid>
      <timestamp>2012-10-29T03:53:56Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="438">&lt;noinclude&gt;
&lt;nowiki&gt;
{{IconLink|Nom de la page|Nom qui sera affiché|image.png|baratin sous le Nom qui sera affiché|Couleur du fond}}
&lt;/nowiki&gt;
&lt;/noinclude&gt;

{| cellspacing=2 cellpadding=4 border=0
| width=8% style=&quot;vertical-align:middle&quot; | [[Image:{{{3}}}|64px|link={{{1}}}]]
| width=42% style=&quot;vertical-align:middle; background:{{{5}}}; font-size: 18px; -moz-border-radius:20px&quot; | '''[[{{{1}}}|{{{2}}}]]'''&lt;br&gt;&lt;small&gt;{{{4}}}&lt;/small&gt;
|}</text>
      <sha1>0l1gu4d0pvelx7qs4bil3u47k4ef688</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:IconLink64</title>
    <ns>10</ns>
    <id>1124</id>
    <revision>
      <id>4609</id>
      <timestamp>2012-10-29T04:04:14Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « &lt;noinclude&gt; &lt;nowiki&gt; {{IconLink|Nom de la page|Nom qui sera affiché|image.png|baratin sous le Nom qui sera affiché|Couleur du fond}} &lt;/nowiki&gt; &lt;/noinclude&gt;  {| cellspaci... »</comment>
      <text xml:space="preserve" bytes="438">&lt;noinclude&gt;
&lt;nowiki&gt;
{{IconLink|Nom de la page|Nom qui sera affiché|image.png|baratin sous le Nom qui sera affiché|Couleur du fond}}
&lt;/nowiki&gt;
&lt;/noinclude&gt;

{| cellspacing=2 cellpadding=4 border=0
| width=8% style=&quot;vertical-align:middle&quot; | [[Image:{{{3}}}|64px|link={{{1}}}]]
| width=42% style=&quot;vertical-align:middle; background:{{{5}}}; font-size: 18px; -moz-border-radius:20px&quot; | '''[[{{{1}}}|{{{2}}}]]'''&lt;br&gt;&lt;small&gt;{{{4}}}&lt;/small&gt;
|}</text>
      <sha1>0l1gu4d0pvelx7qs4bil3u47k4ef688</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4645</id>
      <parentid>4609</parentid>
      <timestamp>2012-10-29T11:29:53Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="438">&lt;noinclude&gt;
&lt;nowiki&gt;
{{IconLink|Nom de la page|Nom qui sera affiché|image.png|baratin sous le Nom qui sera affiché|Couleur du fond}}
&lt;/nowiki&gt;
&lt;/noinclude&gt;

{| cellspacing=2 cellpadding=4 border=0
| width=8% style=&quot;vertical-align:middle&quot; | [[Image:{{{3}}}|64px|link={{{1}}}]]
| width=42% style=&quot;vertical-align:middle; background:{{{5}}}; font-size: 16px; -moz-border-radius:20px&quot; | '''[[{{{1}}}|{{{2}}}]]'''&lt;br&gt;&lt;small&gt;{{{4}}}&lt;/small&gt;
|}</text>
      <sha1>niccqqa4hj9lhcmuzavjt7zv5o9369v</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:IconLink96</title>
    <ns>10</ns>
    <id>1125</id>
    <revision>
      <id>4611</id>
      <timestamp>2012-10-29T04:05:33Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « &lt;noinclude&gt; &lt;nowiki&gt; {{IconLink|Nom de la page|Nom qui sera affiché|image.png|baratin sous le Nom qui sera affiché|Couleur du fond}} &lt;/nowiki&gt; &lt;/noinclude&gt;  {| cellspaci... »</comment>
      <text xml:space="preserve" bytes="438">&lt;noinclude&gt;
&lt;nowiki&gt;
{{IconLink|Nom de la page|Nom qui sera affiché|image.png|baratin sous le Nom qui sera affiché|Couleur du fond}}
&lt;/nowiki&gt;
&lt;/noinclude&gt;

{| cellspacing=2 cellpadding=4 border=0
| width=8% style=&quot;vertical-align:middle&quot; | [[Image:{{{3}}}|96px|link={{{1}}}]]
| width=42% style=&quot;vertical-align:middle; background:{{{5}}}; font-size: 18px; -moz-border-radius:20px&quot; | '''[[{{{1}}}|{{{2}}}]]'''&lt;br&gt;&lt;small&gt;{{{4}}}&lt;/small&gt;
|}</text>
      <sha1>908umthszru3myyr77gdpc2t0prjd5g</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:Index</title>
    <ns>10</ns>
    <id>134</id>
    <revision>
      <id>624</id>
      <timestamp>2010-02-01T07:37:51Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « &lt;!----------------------------------------------&gt; | width=&quot;10%&quot; | [[Image:{{{2}}}|30px|center]] | width=&quot;90%&quot; style=&quot;font-size: 95%;  border-top: 1px dashed #AAAAAA;text-alig… »</comment>
      <text xml:space="preserve" bytes="269">&lt;!----------------------------------------------&gt;
| width=&quot;10%&quot; | [[Image:{{{2}}}|30px|center]]
| width=&quot;90%&quot; style=&quot;font-size: 95%;  border-top: 1px dashed #AAAAAA;text-align:justify&quot; |
{{Portail:General/Index{{{1}}}}}
&lt;!----------------------------------------------&gt;</text>
      <sha1>p06focwokmbmjmoyue4ix6o0rgt0ijy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>734</id>
      <parentid>624</parentid>
      <timestamp>2010-02-02T06:08:55Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="261">&lt;!----------------------------------------------&gt;
| width=&quot;10%&quot; | [[Image:{{{2}}}|30px|center]]
| width=&quot;90%&quot; style=&quot;font-size: 95%;  border-top: 1px dashed #AAAAAA;text-align:justify&quot; |
{{General/Index{{{1}}}}}
&lt;!----------------------------------------------&gt;</text>
      <sha1>akwuvtyk9d3u6lnepslp1v1uyk2nf80</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1636</id>
      <parentid>734</parentid>
      <timestamp>2010-07-05T08:39:36Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="287">#REDIRECT [[isalo:Index]]
&lt;!----------------------------------------------&gt;
| width=&quot;10%&quot; | [[Image:{{{2}}}|30px|center]]
| width=&quot;90%&quot; style=&quot;font-size: 95%;  border-top: 1px dashed #AAAAAA;text-align:justify&quot; |
{{General/Index{{{1}}}}}
&lt;!----------------------------------------------&gt;</text>
      <sha1>n5r09a338yuiwtldpii5rctd0imc4dg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1648</id>
      <parentid>1636</parentid>
      <timestamp>2010-07-06T09:15:45Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Annulation des modifications 1636 de [[Special:Contributions/Lol|Lol]] ([[User talk:Lol|discussion]])</comment>
      <text xml:space="preserve" bytes="261">&lt;!----------------------------------------------&gt;
| width=&quot;10%&quot; | [[Image:{{{2}}}|30px|center]]
| width=&quot;90%&quot; style=&quot;font-size: 95%;  border-top: 1px dashed #AAAAAA;text-align:justify&quot; |
{{General/Index{{{1}}}}}
&lt;!----------------------------------------------&gt;</text>
      <sha1>akwuvtyk9d3u6lnepslp1v1uyk2nf80</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:Indication de langue</title>
    <ns>10</ns>
    <id>715</id>
    <revision>
      <id>3161</id>
      <timestamp>2011-08-03T08:02:57Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « &lt;includeonly&gt;&lt;span style=&quot;font-family:monospace;font-weight:bold;font-size:small&quot;&gt;(&lt;abbr class=&quot;abbr&quot; title=&quot;Langue : {{{1|{{{2}}}}}}&quot;&gt;{{{2}}}&lt;/abbr&gt;)&lt;/span&gt;{{#if:{{{texte|}}... »</comment>
      <text xml:space="preserve" bytes="292">&lt;includeonly&gt;&lt;span style=&quot;font-family:monospace;font-weight:bold;font-size:small&quot;&gt;(&lt;abbr class=&quot;abbr&quot; title=&quot;Langue : {{{1|{{{2}}}}}}&quot;&gt;{{{2}}}&lt;/abbr&gt;)&lt;/span&gt;{{#if:{{{texte|}}}|&amp;nbsp;{{{{#if:{{{texte|}}}|lang|}}|{{{2}}}|dir={{{dir|}}}|texte={{{texte}}}}}}}&lt;/includeonly&gt;&lt;noinclude&gt;&lt;/noinclude&gt;</text>
      <sha1>4ip6nv6cj5s2p8b0wiu09mh5zag7vwe</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:Italic title</title>
    <ns>10</ns>
    <id>1150</id>
    <revision>
      <id>4701</id>
      <timestamp>2012-10-31T12:57:04Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « {{DISPLAYTITLE:{{ #switch:   {{#ifexpr: {{str find|{{PAGENAME}}|(}} != -1   | 1   | 0   }}{{#if: {{{force|}}}    | 1   | 0   }}{{str ≤ len | {{PAGENAME}} | 49 &lt;!-- The m... »</comment>
      <text xml:space="preserve" bytes="1111">{{DISPLAYTITLE:{{
#switch:
  {{#ifexpr: {{str find|{{PAGENAME}}|(}} != -1
  | 1
  | 0
  }}{{#if: {{{force|}}} 
  | 1
  | 0
  }}{{str ≤ len | {{PAGENAME}} | 49 &lt;!-- The max {{str find}} can handle is 50 --&gt; | 1 | 0 }}&lt;!--

--&gt;| 100 = {{
  #if:{{NAMESPACE}}
  | {{NAMESPACE}}:
  }}{{#switch:{{PAGENAME}}
  | {{{1}}} ({{{2|}}}) = ''{{{1}}}'' ({{{2|}}})
  | {{{1}}} ({{{3|}}}) = ''{{{1}}}'' ({{{3|}}})
  | {{{1}}} ({{{4|}}}) = ''{{{1}}}'' ({{{4|}}})
  | {{{1}}} ({{{5|}}}) = ''{{{1}}}'' ({{{5|}}})
  | {{{1}}} ({{{6|}}}) = ''{{{1}}}'' ({{{6|}}})
  | #default = {{PAGENAME}}
  }}&lt;!--

--&gt;| 101 = {{
  #if:{{NAMESPACE}}
  | {{NAMESPACE}}:
  }}''{{str left| {{PAGENAME}} | {{#expr:{{str find|{{PAGENAME}}|(}}-2}} }}'' {{str sub| {{PAGENAME}} | {{#expr: {{str find|{{PAGENAME}}|(}} - 1}} | {{#expr: {{str len|{{PAGENAME}}}} - {{str find|{{PAGENAME}}|(}} }} + 1 }}

| 010
| 011
| 110
| 111
| 001 = {{
  #if:{{NAMESPACE}}
  | {{NAMESPACE}}:
  }}''{{PAGENAME}}''&lt;!--

--&gt;| 000 = {{FULLPAGENAME}}&lt;!--

--&gt;}}}}&lt;noinclude&gt;
{{documentation}}
&lt;!-- Add categories and interwikis to the /doc subpage, not here! --&gt;
&lt;/noinclude&gt;</text>
      <sha1>m1kwotdxn83l11hlyn5jbmjw19dsjin</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:LanguageBar</title>
    <ns>10</ns>
    <id>1104</id>
    <revision>
      <id>4555</id>
      <timestamp>2012-10-28T07:28:30Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « {| class=&quot;wikitable&quot; style=&quot;width:100%; margin-bottom:-2pt; border: 0px solid; border-collapse:collapse; font-size: 95%;&quot; |-  ! style=&quot;width:98%&quot; | &lt;span style=&quot;padding: 0... »</comment>
      <text xml:space="preserve" bytes="616">{| class=&quot;wikitable&quot; style=&quot;width:100%; margin-bottom:-2pt; border: 0px solid; border-collapse:collapse; font-size: 95%;&quot;
|- 
! style=&quot;width:98%&quot; | &lt;span style=&quot;padding: 0pt 4pt 8pt 4pt; font-size: 95%;&quot;&gt;Other languages:&lt;/span&gt;
! style=&quot;width:2%; white-space:nowrap; font-size:smaller;&quot; | 
|-
| colspan=&quot;2&quot; style=&quot;width:100%; border: 1px solid #aaa; background-color: #f9f9f9; border-collapse:collapse; font-size: 95%;&quot; |
&lt;span style=&quot;padding: 2pt 4pt 2pt 4pt; font-size: 95%;&quot;&gt; [[Image:English_Flag.svg|20px]] [[{{{1}}}|English]] &amp;nbsp;&amp;bull;&amp;nbsp; [[Image:French_Flag.svg|20px]] [[Fr:{{{2}}}|Français]] &lt;/span&gt;
|}</text>
      <sha1>baxen2n76d8jk5i75rgjztb73f1vhjw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:Ligne grise</title>
    <ns>10</ns>
    <id>88</id>
    <revision>
      <id>365</id>
      <timestamp>2010-01-27T04:23:56Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « bgcolor=&quot;#f5f5f5&quot;&lt;noinclude&gt; [[Catégorie:Modèle tableau|{{PAGENAME}}]] [[ca:Plantilla:Ligne grise]] [[de:Vorlage:Graue Zeile]] [[dsb:Pśedłoga:ŠeraCera]] [[eo:Ŝablono:Gr… »</comment>
      <text xml:space="preserve" bytes="228">bgcolor=&quot;#f5f5f5&quot;&lt;noinclude&gt;
[[Catégorie:Modèle tableau|{{PAGENAME}}]]
[[ca:Plantilla:Ligne grise]]
[[de:Vorlage:Graue Zeile]]
[[dsb:Pśedłoga:ŠeraCera]]
[[eo:Ŝablono:GrizaLinio]]
[[hsb:Předłoha:ŠěraLinka]]
&lt;/noinclude&gt;</text>
      <sha1>r4b7fvy9tq9tuqrgqg5d466bmhl4qhc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>366</id>
      <parentid>365</parentid>
      <timestamp>2010-01-27T04:25:11Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="85">bgcolor=&quot;#f5f5f5&quot;&lt;noinclude&gt;
[[Catégorie:Modèle tableau|{{PAGENAME}}]]
&lt;/noinclude&gt;</text>
      <sha1>qavkqewoc0tjwqck301hlnfi8xal5qr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>387</id>
      <parentid>366</parentid>
      <timestamp>2010-01-27T08:38:46Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="65">bgcolor=&quot;#f5f5f5&quot;&lt;noinclude&gt;
[[Catégorie:Modèles]]
&lt;/noinclude&gt;</text>
      <sha1>3013r6xcs0y4qa27bse65omwbbmqnrd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:Méta avertissement</title>
    <ns>10</ns>
    <id>1097</id>
    <revision>
      <id>4540</id>
      <timestamp>2012-10-26T06:24:54Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « &lt;includeonly&gt;&lt;div style=&quot;margin: 1em 0em 1em 0em;&quot;&gt;&lt;font class=&quot;{{{class|avertissement}}}&quot; style=&quot;border: 2px solid #cdcdcd; border-right-width:0px; border-left-width:0px;... »</comment>
      <text xml:space="preserve" bytes="385">&lt;includeonly&gt;&lt;div style=&quot;margin: 1em 0em 1em 0em;&quot;&gt;&lt;font class=&quot;{{{class|avertissement}}}&quot; style=&quot;border: 2px solid #cdcdcd; border-right-width:0px; border-left-width:0px; padding: 0.4em;&quot;&gt;'''{{{titre|Attention&amp;thinsp;:}}}''' {{{texte|}}}&lt;/font&gt;&lt;/includeonly&gt;&lt;noinclude&gt;
{{/Documentation}}&lt;!-- Métadonnées (catégories, interwikis, …) en sous-page de documentation --&gt;
&lt;/noinclude&gt;</text>
      <sha1>e2wt48a3v8tr7x93m7th1xba06p7hw8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:Recherche</title>
    <ns>10</ns>
    <id>1145</id>
    <revision>
      <id>4694</id>
      <timestamp>2012-10-30T14:27:05Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « &lt;searchbox     label=&quot;Recherche sur le Wiki:&quot;     searchlabel=&quot;Rechercher...&quot;     golabel=&quot;Lire!&quot;     Align='center' /&gt; »</comment>
      <text xml:space="preserve" bytes="119">&lt;searchbox
    label=&quot;Recherche sur le Wiki:&quot;
    searchlabel=&quot;Rechercher...&quot;
    golabel=&quot;Lire!&quot;
    Align='center'
/&gt;</text>
      <sha1>4bg5pro9quo0ahziuv03z0rz0u2dfmc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:Saut</title>
    <ns>10</ns>
    <id>1149</id>
    <revision>
      <id>4700</id>
      <timestamp>2012-10-31T12:54:59Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « &lt;div style=&quot;margin-top: {{{1|0}}};&quot;&gt;&lt;/div&gt;&lt;noinclude&gt;{{documentation}}&lt;/noinclude&gt; »</comment>
      <text xml:space="preserve" bytes="82">&lt;div style=&quot;margin-top: {{{1|0}}};&quot;&gt;&lt;/div&gt;&lt;noinclude&gt;{{documentation}}&lt;/noinclude&gt;</text>
      <sha1>7r6w0t8dft4yqueu399pzg40cdlek1p</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:Sid</title>
    <ns>10</ns>
    <id>10</id>
    <revision>
      <id>20</id>
      <timestamp>2010-01-21T14:33:25Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <comment>Page créée avec « &lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt; &lt;div style=&quot;background:yellow; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt; &lt;div style=&quot;line-height:120%; padd… »</comment>
      <text xml:space="preserve" bytes="610">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;background:yellow; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:yellow; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:red; font-weight:bold; font-size:100%;&quot;&gt; /!\ Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu!

Attention: Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/div&gt;</text>
      <sha1>sun5wrpirvnwrenj61dy9kckx53lm3v</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>192</id>
      <parentid>20</parentid>
      <timestamp>2010-01-23T17:47:32Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="415">&lt;div style=&quot;background:yellow;border:3px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;</text>
      <sha1>5uktaa2uzqvm6y3bsd9ytj8y4ar3jtl</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>194</id>
      <parentid>192</parentid>
      <timestamp>2010-01-23T17:52:54Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="415">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;</text>
      <sha1>axwdvyz13xfdy6l8h84c1wf62429l79</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>195</id>
      <parentid>194</parentid>
      <timestamp>2010-01-23T17:53:36Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="462">&lt;div style=&quot;background:yellow;border:2px orange solid;border-left:5px orange solid;padding-left: 10px&quot;&gt;
'''/!\''' Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! '''/!\'''&lt;br/&gt;
'''Attention:''' Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;</text>
      <sha1>lw3ofv2rybmlvwm3cvadis0wbtjd8pn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:Social</title>
    <ns>10</ns>
    <id>701</id>
    <revision>
      <id>3090</id>
      <timestamp>2011-07-25T04:27:56Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « {| font-size:15px; color:black;&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; |-  |{{CURRENTDAYNAME}} {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}}. - [[Spécial:Statistiques|'''{{N... »</comment>
      <text xml:space="preserve" bytes="427">{| font-size:15px; color:black;&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;
|- 
|{{CURRENTDAYNAME}} {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}}. - [[Spécial:Statistiques|'''{{NUMBEROFPAGES}}''' pages et ça continue!]] - [[Spécial:Statistiques|'''{{NUMBEROFUSERS}}''' membres!]]
|style=&quot;vertical-align:top; padding-top: 4px; padding-left: 10px;&quot; |
|style=&quot;vertical-align:top; padding-top: 4px; | &lt;google1 style=&quot;2&quot;&gt;&lt;/google1&gt;
|}</text>
      <sha1>dkob7c807qnfckfnb781gzp9vxvv5oo</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4650</id>
      <parentid>3090</parentid>
      <timestamp>2012-10-29T11:56:58Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="581">{| font-size:15px; color:black;&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;
|- 
|{{CURRENTDAYNAME}} {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}}. - [[Spécial:Statistiques|'''{{NUMBEROFPAGES}}''' pages et ça continue!]] - [[Spécial:Statistiques|'''{{NUMBEROFUSERS}}''' membres!]]
|style=&quot;vertical-align:top; padding-top: 4px; padding-left: 10px;&quot; |
|style=&quot;vertical-align:top; padding-top: 4px; | &lt;google1 style=&quot;2&quot;&gt;&lt;/google1&gt;
&lt;searchbox
    label=&quot;Recherche sur le Wiki:&quot;
    searchlabel=&quot;Rechercher...&quot;
    golabel=&quot;Lire!&quot;
    Align='right'
    style='border:1px solid blue;'
/&gt;
|}</text>
      <sha1>t1lfm7zdn6b3meo1othc813xqeop0u1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4651</id>
      <parentid>4650</parentid>
      <timestamp>2012-10-29T11:57:33Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="585">{| font-size:15px; color:black;&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;
|- 
|{{CURRENTDAYNAME}} {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}}. - [[Spécial:Statistiques|'''{{NUMBEROFPAGES}}''' pages et ça continue!]] - [[Spécial:Statistiques|'''{{NUMBEROFUSERS}}''' membres!]]
|style=&quot;vertical-align:top; padding-top: 4px; padding-left: 10px;&quot; |
|style=&quot;vertical-align:top; padding-top: 4px; | &lt;google1 style=&quot;2&quot;&gt;&lt;/google1&gt;&lt;br&gt;
&lt;searchbox
    label=&quot;Recherche sur le Wiki:&quot;
    searchlabel=&quot;Rechercher...&quot;
    golabel=&quot;Lire!&quot;
    Align='right'
    style='border:1px solid blue;'
/&gt;
|}</text>
      <sha1>owtzaoa6ftvbarq703c2xnkushc7oqf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4652</id>
      <parentid>4651</parentid>
      <timestamp>2012-10-29T12:03:38Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="370">{|
|
{{CURRENTDAYNAME}} {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}}. - [[Spécial:Statistiques|'''{{NUMBEROFPAGES}}''' pages et ça continue!]] -
[[Spécial:Statistiques|'''{{NUMBEROFUSERS}}''' membres!]]

|
&lt;google1 style=&quot;2&quot;&gt;&lt;/google1&gt;

|
&lt;searchbox
    label=&quot;Recherche sur le Wiki:&quot;
    searchlabel=&quot;Rechercher...&quot;
    golabel=&quot;Lire!&quot;
    Align='right'
/&gt;
|}</text>
      <sha1>hikjpsilsqtv48d3r7mz7vpx6528ojb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4726</id>
      <parentid>4652</parentid>
      <timestamp>2012-11-07T07:38:52Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="331">{|
|
{{CURRENTDAYNAME}} {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}}. - [[Spécial:Statistiques|'''{{NUMBEROFPAGES}}''' pages!]] -
[[Spécial:Statistiques|'''{{NUMBEROFUSERS}}''' membres!]]

|
&lt;google1 style=&quot;2&quot;&gt;&lt;/google1&gt;
|
&lt;searchbox
    label=&quot;&quot;
    searchlabel=&quot;Rechercher...&quot;
    golabel=&quot;Lire!&quot;
    Align='right'
/&gt;
|}</text>
      <sha1>hsfcywflrvv83shi8r0a3bngbsanjxq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:Stable</title>
    <ns>10</ns>
    <id>9</id>
    <revision>
      <id>19</id>
      <timestamp>2010-01-21T14:32:30Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <comment>Page créée avec « &lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt; &lt;div style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt; &lt;div style=&quot;line-height:120%; padding:0.4em; backgrou… »</comment>
      <text xml:space="preserve" bytes="589">&lt;div style=&quot;border:0; margin: 0.2em 10px 10px;&quot;&gt;
&lt;div style=&quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&quot;&gt;
&lt;div style=&quot;line-height:120%; padding:0.4em; background-color:green; border-bottom:1px solid #aaaaaa;&quot;&gt;
&lt;span style=&quot;color:black; font-weight:bold; font-size:100%;&quot;&gt; Le contenu de ce document a été validé. Vous pouvez suivre ses indications sans inquiétude.

Cependant, si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/div&gt;</text>
      <sha1>ogbm1sgwlm6q7krwc69ae72oj0mcbti</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>193</id>
      <parentid>19</parentid>
      <timestamp>2010-01-23T17:51:40Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="409">&lt;div style=&quot;background:lightgreen;border:2px green solid;border-left:5px green solid;padding-left: 10px&quot;&gt;
Le contenu de ce document a été validé. Vous pouvez suivre ses indications sans inquiétude.&lt;br/&gt;
'''Attention''': Cependant, si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;</text>
      <sha1>p1zn33p7nsy4vrwxq3d3odiuxqmxplv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>196</id>
      <parentid>193</parentid>
      <timestamp>2010-01-23T17:54:28Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="456">&lt;div style=&quot;background:lightgreen;border:2px green solid;border-left:5px green solid;padding-left: 10px&quot;&gt;
Le contenu de ce document a été validé. Vous pouvez suivre ses indications sans inquiétude.&lt;br/&gt;
'''Attention''': Cependant, si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le [http://forum.debian-fr.org forum].
&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;</text>
      <sha1>hs7an42sucpii42z01atwgy01d82bg9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:Trucs et Astuces</title>
    <ns>10</ns>
    <id>999</id>
    <revision>
      <id>4159</id>
      <timestamp>2012-05-05T13:57:47Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>Page créée avec « &lt;noinclude&gt; Ceci est le modèle « Trucs et Astuces ». Il devrait être appelé selon le format suivant : &lt;pre&gt; {{Trucs et Astuces |Domaine= |Paquet= |Version debian= |In... »</comment>
      <text xml:space="preserve" bytes="1718">&lt;noinclude&gt;
Ceci est le modèle « Trucs et Astuces ». Il devrait être appelé selon le format suivant :
&lt;pre&gt;
{{Trucs et Astuces
|Domaine=
|Paquet=
|Version debian=
|Installé sur=
|Environnement graphique=
|Niveau de difficulté=
|Langage de programmation=
|Matériel=
|Marque=
|Connectique=
|Protocole=
}}
&lt;/pre&gt;
Modifier la page pour voir le texte du modèle.
&lt;/noinclude&gt;&lt;includeonly&gt;{| style=&quot;width: 30em; font-size: 90%; border: 1px solid #aaaaaa; background-color: #f9f9f9; color: black; margin-bottom: 0.5em; margin-left: 1em; padding: 0.2em; float: right; clear: right; text-align:left;&quot;
! style=&quot;text-align: center; background-color:#ccccff;&quot; colspan=&quot;2&quot; |&lt;big&gt;{{PAGENAME}}&lt;/big&gt;
|-
! Domaine(s)
| {{#arraymap:{{{Domaine|}}}|,|x|[[Domaine::x]]}}
|-
! Paquet(s)
| {{#arraymap:{{{Paquet|}}}|,|x|[[Paquet::x]]}}
|-
! Version debian
| {{#arraymap:{{{Version debian|}}}|,|x|[[Version debian::x]]}}
|-
! Support sur lequel est installé debian
| {{#arraymap:{{{Installé sur|}}}|,|x|[[Installé sur::x]]}}
|-
! Environnement graphique
| {{#arraymap:{{{Environnement graphique|}}}|,|x|[[Environnement graphique::x]]}}
|-
! Niveau de difficulté
| {{#arraymap:{{{Niveau de difficulté|}}}|,|x|[[Niveau de difficulté::x]]}}
|-
! Langage(s) de programmation utilisé(s)
| {{#arraymap:{{{Langage de programmation|}}}|,|x|[[Langage de programmation::x]]}}
|-
! Type(s) de Matériel(s)
| {{#arraymap:{{{Matériel|}}}|,|x|[[Matériel::x]]}}
|-
! Marque du/des matériel(s)
| {{#arraymap:{{{Marque|}}}|,|x|[[Marque::x]]}}
|-
! Connectique
| {{#arraymap:{{{Connectique|}}}|,|x|[[Connectique::x]]}}
|-
! Protocole(s)
| {{#arraymap:{{{Protocole|}}}|,|x|[[Protocole::x]]}}
|}

[[Catégorie:Trucs et Astuces]]
&lt;/includeonly&gt;</text>
      <sha1>pe01w27jqknb3i37aqa65az0jv6njw2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4178</id>
      <parentid>4159</parentid>
      <timestamp>2012-05-05T14:41:49Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="1729">&lt;noinclude&gt;
Ceci est le modèle « Trucs et Astuces ». Il devrait être appelé selon le format suivant :
&lt;pre&gt;
{{Trucs et Astuces
|Domaine=
|Paquet=
|Version debian=
|Installé sur=
|Environnement graphique=
|Niveau de difficulté=
|Langage de programmation=
|Matériel=
|Marque=
|Connectique=
|Protocole=
}}
&lt;/pre&gt;
Modifier la page pour voir le texte du modèle.
&lt;/noinclude&gt;&lt;includeonly&gt;{| style=&quot;width: 30em; font-size: 90%; border: 1px solid #aaaaaa; background-color: #f9f9f9; color: black; margin-bottom: 0.5em; margin-left: 1em; padding: 0.2em; float: right; clear: right; text-align:left;&quot;
! style=&quot;text-align: center; background-color:#ccccff;&quot; colspan=&quot;2&quot; |&lt;big&gt;{{PAGENAME}}&lt;/big&gt;
|-
! Domaine(s):
| {{#arraymap:{{{Domaine|}}}|,|x|[[Domaine::x]]}}
|-
! Paquet(s):
| {{#arraymap:{{{Paquet|}}}|,|x|[[Paquet::x]]}}
|-
! Version debian:
| {{#arraymap:{{{Version debian|}}}|,|x|[[Version debian::x]]}}
|-
! Support sur lequel Debian est installé:
| {{#arraymap:{{{Installé sur|}}}|,|x|[[Installé sur::x]]}}
|-
! Environnement graphique:
| {{#arraymap:{{{Environnement graphique|}}}|,|x|[[Environnement graphique::x]]}}
|-
! Niveau de difficulté:
| {{#arraymap:{{{Niveau de difficulté|}}}|,|x|[[Niveau de difficulté::x]]}}
|-
! Langage(s) de programmation utilisé(s):
| {{#arraymap:{{{Langage de programmation|}}}|,|x|[[Langage de programmation::x]]}}
|-
! Type(s) de Matériel(s):
| {{#arraymap:{{{Matériel|}}}|,|x|[[Matériel::x]]}}
|-
! Marque du/des matériel(s):
| {{#arraymap:{{{Marque|}}}|,|x|[[Marque::x]]}}
|-
! Connectique:
| {{#arraymap:{{{Connectique|}}}|,|x|[[Connectique::x]]}}
|-
! Protocole(s):
| {{#arraymap:{{{Protocole|}}}|,|x|[[Protocole::x]]}}
|}

[[Catégorie:Trucs et Astuces]]
&lt;/includeonly&gt;</text>
      <sha1>l7cw66nvlctuashszpxx5tvm9jwypzn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4190</id>
      <parentid>4178</parentid>
      <timestamp>2012-05-05T20:54:57Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="1803">&lt;noinclude&gt;
Ceci est le modèle « Trucs et Astuces ». Il devrait être appelé selon le format suivant :
&lt;pre&gt;
{{Trucs et Astuces
|Domaine=
|Paquet=
|Version debian=
|Installé sur=
|Environnement graphique=
|Niveau de difficulté=
|Langage de programmation=
|Matériel=
|Marque=
|Connectique=
|Protocole=
}}
&lt;/pre&gt;
Modifier la page pour voir le texte du modèle.
&lt;/noinclude&gt;&lt;includeonly&gt;{| style=&quot;width: 30em; font-size: 90%; border: 1px solid #aaaaaa; background-color: #f9f9f9; color: black; margin-bottom: 0.5em; margin-left: 1em; padding: 0.2em; float: right; clear: right; text-align:left;&quot;
! style=&quot;text-align: center; background-color:#ccccff;&quot; colspan=&quot;2&quot; |&lt;big&gt;{{PAGENAME}}&lt;/big&gt;
|-
! Domaine(s):
| {{#arraymap:{{{Domaine|}}}|,|x|[[Domaine::x]]}}
! Action(s) effectuée(s):
|{{#arraymap:{{{Action|}}}|,|x|[[Action::x]]}}
|-
! Paquet(s):
| {{#arraymap:{{{Paquet|}}}|,|x|[[Paquet::x]]}}
|-
! Version debian:
| {{#arraymap:{{{Version debian|}}}|,|x|[[Version debian::x]]}}
|-
! Support sur lequel Debian est installé:
| {{#arraymap:{{{Installé sur|}}}|,|x|[[Installé sur::x]]}}
|-
! Environnement graphique:
| {{#arraymap:{{{Environnement graphique|}}}|,|x|[[Environnement graphique::x]]}}
|-
! Niveau de difficulté:
| {{#arraymap:{{{Niveau de difficulté|}}}|,|x|[[Niveau de difficulté::x]]}}
|-
! Langage(s) de programmation utilisé(s):
| {{#arraymap:{{{Langage de programmation|}}}|,|x|[[Langage de programmation::x]]}}
|-
! Type(s) de Matériel(s):
| {{#arraymap:{{{Matériel|}}}|,|x|[[Matériel::x]]}}
|-
! Marque du/des matériel(s):
| {{#arraymap:{{{Marque|}}}|,|x|[[Marque::x]]}}
|-
! Connectique:
| {{#arraymap:{{{Connectique|}}}|,|x|[[Connectique::x]]}}
|-
! Protocole(s):
| {{#arraymap:{{{Protocole|}}}|,|x|[[Protocole::x]]}}
|}

[[Catégorie:Trucs et Astuces]]
&lt;/includeonly&gt;</text>
      <sha1>a1hgp8592eukktt7a16iqtjju99s9jn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4192</id>
      <parentid>4190</parentid>
      <timestamp>2012-05-05T20:59:27Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="1815">&lt;noinclude&gt;
Ceci est le modèle « Trucs et Astuces ». Il devrait être appelé selon le format suivant :
&lt;pre&gt;
{{Trucs et Astuces
|Domaine=
|Action=
|Paquet=
|Version debian=
|Installé sur=
|Environnement graphique=
|Niveau de difficulté=
|Langage de programmation=
|Matériel=
|Marque=
|Connectique=
|Protocole=
}}
&lt;/pre&gt;
Modifier la page pour voir le texte du modèle.
&lt;/noinclude&gt;&lt;includeonly&gt;{| style=&quot;width: 30em; font-size: 90%; border: 1px solid #aaaaaa; background-color: #f9f9f9; color: black; margin-bottom: 0.5em; margin-left: 1em; padding: 0.2em; float: right; clear: right; text-align:left;&quot;
! style=&quot;text-align: center; background-color:#ccccff;&quot; colspan=&quot;2&quot; |&lt;big&gt;{{PAGENAME}}&lt;/big&gt;
|-
! Domaine(s):
| {{#arraymap:{{{Domaine|}}}|,|x|[[Domaine::x]]}}
|-
! Action(s) effectuée(s):
|{{#arraymap:{{{Action|}}}|,|x|[[Action::x]]}}
|-
! Paquet(s):
| {{#arraymap:{{{Paquet|}}}|,|x|[[Paquet::x]]}}
|-
! Version debian:
| {{#arraymap:{{{Version debian|}}}|,|x|[[Version debian::x]]}}
|-
! Support sur lequel Debian est installé:
| {{#arraymap:{{{Installé sur|}}}|,|x|[[Installé sur::x]]}}
|-
! Environnement graphique:
| {{#arraymap:{{{Environnement graphique|}}}|,|x|[[Environnement graphique::x]]}}
|-
! Niveau de difficulté:
| {{#arraymap:{{{Niveau de difficulté|}}}|,|x|[[Niveau de difficulté::x]]}}
|-
! Langage(s) de programmation utilisé(s):
| {{#arraymap:{{{Langage de programmation|}}}|,|x|[[Langage de programmation::x]]}}
|-
! Type(s) de Matériel(s):
| {{#arraymap:{{{Matériel|}}}|,|x|[[Matériel::x]]}}
|-
! Marque du/des matériel(s):
| {{#arraymap:{{{Marque|}}}|,|x|[[Marque::x]]}}
|-
! Connectique:
| {{#arraymap:{{{Connectique|}}}|,|x|[[Connectique::x]]}}
|-
! Protocole(s):
| {{#arraymap:{{{Protocole|}}}|,|x|[[Protocole::x]]}}
|}

[[Catégorie:Trucs et Astuces]]
&lt;/includeonly&gt;</text>
      <sha1>73y5jiuc5hl0nmm5qdmjzes28kd7xvq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4256</id>
      <parentid>4192</parentid>
      <timestamp>2012-05-18T09:18:58Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="1889">&lt;noinclude&gt;
Ceci est le modèle « Trucs et Astuces ». Il devrait être appelé selon le format suivant :
&lt;pre&gt;
{{Trucs et Astuces
|Domaine=
|Action=
|Paquet=
|Version debian=
|Branche=
|Installé sur=
|Environnement graphique=
|Niveau de difficulté=
|Langage de programmation=
|Matériel=
|Marque=
|Connectique=
|Protocole=
}}
&lt;/pre&gt;
Modifier la page pour voir le texte du modèle.
&lt;/noinclude&gt;&lt;includeonly&gt;{| style=&quot;width: 30em; font-size: 90%; border: 1px solid #aaaaaa; background-color: #f9f9f9; color: black; margin-bottom: 0.5em; margin-left: 1em; padding: 0.2em; float: right; clear: right; text-align:left;&quot;
! style=&quot;text-align: center; background-color:#ccccff;&quot; colspan=&quot;2&quot; |&lt;big&gt;{{PAGENAME}}&lt;/big&gt;
|-
! Domaine(s):
| {{#arraymap:{{{Domaine|}}}|,|x|[[Domaine::x]]}}
|-
! Action(s) effectuée(s):
|{{#arraymap:{{{Action|}}}|,|x|[[Action::x]]}}
|-
! Paquet(s):
| {{#arraymap:{{{Paquet|}}}|,|x|[[Paquet::x]]}}
|-
! Version debian:
| {{#arraymap:{{{Version debian|}}}|,|x|[[Version debian::x]]}}
|-
! Branche:
| {{#arraymap:{{{Branche|}}}|,|x|[[Branche::x]]}}
|-
! Support sur lequel Debian est installé:
| {{#arraymap:{{{Installé sur|}}}|,|x|[[Installé sur::x]]}}
|-
! Environnement graphique:
| {{#arraymap:{{{Environnement graphique|}}}|,|x|[[Environnement graphique::x]]}}
|-
! Niveau de difficulté:
| {{#arraymap:{{{Niveau de difficulté|}}}|,|x|[[Niveau de difficulté::x]]}}
|-
! Langage(s) de programmation utilisé(s):
| {{#arraymap:{{{Langage de programmation|}}}|,|x|[[Langage de programmation::x]]}}
|-
! Type(s) de Matériel(s):
| {{#arraymap:{{{Matériel|}}}|,|x|[[Matériel::x]]}}
|-
! Marque du/des matériel(s):
| {{#arraymap:{{{Marque|}}}|,|x|[[Marque::x]]}}
|-
! Connectique:
| {{#arraymap:{{{Connectique|}}}|,|x|[[Connectique::x]]}}
|-
! Protocole(s):
| {{#arraymap:{{{Protocole|}}}|,|x|[[Protocole::x]]}}
|}

[[Catégorie:Trucs et Astuces]]
&lt;/includeonly&gt;</text>
      <sha1>992dda2loruf6u0u0xtch7q0ne14e3u</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:Widget</title>
    <ns>10</ns>
    <id>1126</id>
    <revision>
      <id>4619</id>
      <timestamp>2012-10-29T05:08:11Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <comment>Page créée avec « &lt;noinclude&gt; This is the 'Widget' template. It should be called in the following format: &lt;pre&gt; {{Widget |author= |provider= |providerurl= |addedon= }} &lt;/pre&gt; Edit the page ... »</comment>
      <text xml:space="preserve" bytes="1889">&lt;noinclude&gt;
This is the 'Widget' template.
It should be called in the following format:
&lt;pre&gt;
{{Widget
|author=
|provider=
|providerurl=
|addedon=
}}
&lt;/pre&gt;
Edit the page to see the template text.
&lt;/noinclude&gt;&lt;includeonly&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; border=&quot;0&quot;&gt;&lt;tr valign=&quot;top&quot;&gt;&lt;td&gt;
&lt;table style=&quot;width: 25em; border: 1px solid #aaaaaa; background-color: #f9f9f9; color: black; padding: 0.2em; text-align:left;&quot;&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center; background-color:#ccccff;&quot; colspan=&quot;2&quot;&gt;'''&lt;big&gt;{{PAGENAME}} widget&lt;/big&gt;'''&lt;/td&gt;&lt;/tr&gt;
&lt;tr valign=&quot;top&quot;&gt;&lt;td align=&quot;right&quot;&gt;'''Author:'''&lt;/td&gt;&lt;td&gt;[[Widget Author::User:{{{author|}}}|{{{author|}}}]]&lt;/td&gt;&lt;/tr&gt;
{{#if:{{{providerurl|}}}{{{provider|}}}|&lt;tr valign=&quot;top&quot;&gt;&lt;td align=&quot;right&quot;&gt;'''Widget Provider:'''&lt;/td&gt;&lt;td&gt;[[Widget Provider URL::{{{providerurl|}}}|{{{provider|}}}]] [[Widget Provider::{{{provider|}}}|]]&lt;/td&gt;&lt;/tr&gt;}}
&lt;tr valign=&quot;top&quot;&gt;&lt;td align=&quot;right&quot;&gt;'''Widget Code:'''&lt;/td&gt;&lt;td&gt;[[Widget Code Page::Widget:{{PAGENAME}}]]&lt;/td&gt;&lt;/tr&gt;
&lt;tr valign=&quot;top&quot;&gt;&lt;td colspan=&quot;2&quot; align=&quot;center&quot;&gt;{{AddThis}}&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/td&gt;&lt;td style=&quot;padding-left: 10px&quot;&gt;

&lt;div style=&quot;border: 2px solid black; background: #DFF4FF; padding: 10px; text-align: center&quot;&gt;
[[Image:Inv-Icon tools.svg.png|100px|left|link=]]
'''To copy this widget to your wiki''', cut and paste the entire source of the '''[{{fullurl:Widget:{{PAGENAME}}|action=edit}} {{PAGENAME}} widget code page]''' into a page called '''Widget:{{PAGENAME}}''' on your wiki.

If you don't have the '''[[mediawikiwiki:Extension:Widget|Widget extension]]''' set up on your wiki, go to its description page on MediaWiki.org and follow the '''[[mediawikiwiki:Extension:Widgets#Download_instructions|installation instructions]]'''.
&lt;/div&gt;

&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
[[Category:Widget]] [[Widget Added On::{{{addedon|}}}| ]]
&lt;div style=&quot;float: right; margin: 0 0 1em 1em&quot;&gt;__TOC__&lt;/div&gt;
&lt;/includeonly&gt;</text>
      <sha1>qukgf2ds5btz861hvn6546md3v4cfmg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Modèle:Ébauche</title>
    <ns>10</ns>
    <id>55</id>
    <revision>
      <id>179</id>
      <timestamp>2010-01-23T15:25:58Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <comment>Page créée avec « &lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;[[Image:{{{2|ebauche.png}}}]]Cet article est une '''ébauche''' conc… »</comment>
      <text xml:space="preserve" bytes="263">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;[[Image:{{{2|ebauche.png}}}]]Cet article est une '''ébauche''' concernant l' ''{{{1|informatique}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;</text>
      <sha1>h8ssowy2gjbl5jb7slctkl8xhgstbig</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>186</id>
      <parentid>179</parentid>
      <timestamp>2010-01-23T17:35:50Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="310">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;[[Image:{{{2|ebauche.png}}}]]Cet article est une '''ébauche''' concernant l' ''{{{1|informatique}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;</text>
      <sha1>4l2vr6juw8vwswqeya7i2yedlqawq4c</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>190</id>
      <parentid>186</parentid>
      <timestamp>2010-01-23T17:38:54Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="308">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;[[Image:{{{2|ebauche.png}}}]]Cet article est une '''ébauche''' concernant  ''{{{1|informatique}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;</text>
      <sha1>mb3d775flcnsxry7m5erv0j0cguvjs4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>199</id>
      <parentid>190</parentid>
      <timestamp>2010-01-23T19:42:06Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="286">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2}}}Cet article est une '''ébauche''' concernant  ''{{{1|informatique}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;</text>
      <sha1>28xg89s1ncujxqkbx33g8kcw4xdi9sr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>200</id>
      <parentid>199</parentid>
      <timestamp>2010-01-23T19:42:22Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="287">&lt;div style=&quot;background:orange;padding:10px;border:2px darkorange solid;border-left:5px darkorange solid;&quot;&gt;{{{2|}}}Cet article est une '''ébauche''' concernant  ''{{{1|informatique}}}''. N'hésitez pas à contribuer ou à en discuter.&lt;/div&gt;
&lt;noinclude&gt;[[Catégorie:Modèles]]&lt;/noinclude&gt;</text>
      <sha1>9vlt9n4szvxduikfadxfeo8y3if2mra</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Mon super titre de page</title>
    <ns>0</ns>
    <id>690</id>
    <redirect title="Introduction au routage" />
    <revision>
      <id>2992</id>
      <timestamp>2011-05-18T14:07:22Z</timestamp>
      <contributor>
        <username>WikiSysop</username>
        <id>1</id>
      </contributor>
      <comment>a déplacé [[Mon super titre de page]] vers [[Introduction au routage]] : Erreur de titre ;)</comment>
      <text xml:space="preserve" bytes="40">#REDIRECTION [[Introduction au routage]]</text>
      <sha1>ca1jfgnl30o0flywo4tlb5z65wywkjk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Mon wifi ne marche pas</title>
    <ns>0</ns>
    <id>1290</id>
    <revision>
      <id>5387</id>
      <timestamp>2013-09-01T14:55:45Z</timestamp>
      <contributor>
        <username>Debianhadic</username>
        <id>11</id>
      </contributor>
      <comment>Page créée avec « == 1 - Évidences == Normal, il n'a pas de jambes. »</comment>
      <text xml:space="preserve" bytes="50">== 1 - Évidences ==
Normal, il n'a pas de jambes.</text>
      <sha1>oyzl46v5y2o4p4b1i933dxty3gjrrms</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5388</id>
      <parentid>5387</parentid>
      <timestamp>2013-09-01T16:37:44Z</timestamp>
      <contributor>
        <username>Agentsteel</username>
        <id>260</id>
      </contributor>
      <minor/>
      <comment>pas la bonne page</comment>
      <text xml:space="preserve" bytes="82">== 1 - Évidences ==
Normal, il n'a pas de jambes.


Ce n'est pas la bonne page :)</text>
      <sha1>i5qpsdjdtfatxrblypalq6yr3xws8ig</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5540</id>
      <parentid>5388</parentid>
      <timestamp>2014-02-09T21:34:28Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>/* 1 - Évidences */</comment>
      <text xml:space="preserve" bytes="217">== 1 - Évidences ==
Normal, il n'a pas de jambes.


Ce n'est pas la bonne page :)

Rendez-vous sur la page suivante qui traite des problèmes de wifi avec Debian : [[Mon_wifi_ne_marche_pas!|Mon wifi ne marche pas!]]</text>
      <sha1>h5lwf1yxgdmu9h51vpuec1zvgp6j4yc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Mon wifi ne marche pas!</title>
    <ns>0</ns>
    <id>1289</id>
    <revision>
      <id>5386</id>
      <timestamp>2013-09-01T14:13:18Z</timestamp>
      <contributor>
        <username>Agentsteel</username>
        <id>260</id>
      </contributor>
      <comment>création (brut de pomme, à vous les amis!)</comment>
      <text xml:space="preserve" bytes="4400">= Mon wifi ne marche pas! =

Autrement dit, comment se dépanner lorsque votre interface wifi ne fonctionne pas automatiquement sous Debian.


A FAIRE : rappel sur la philosophie de Debian concernant les logiciels non libres


Note : cet article est écrit pour la version Debian 7.0 Wheezy.

Nous allons voir plusieurs cas de figure.

== Choisir un matériel compatible Linux ==

A FAIRE  : lister les sites proposant du matériel (périphériques) wifi compatibles Linux


== Installation de Debian à partir de medias contenant les firmwares ==

Si vous désirez installer Debian sur une nouvelle machine, et que vous savez (ou pas!) que des firmwares sont nécessaires, il est pratique d'utiliser les médias d'installation (non officiels) contenant les paquets (non libres) firmware. Ces médias sont de type &quot;netinstall&quot;, prévus pour télécharger les paquets depuis le réseau. A utiliser si vous possédez une bonne connaissance générale de Debian GNU/Linux.

Ces médias d'installation peuvent se trouver ici :

http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/

Il vous suffit de sélectionner le média dont vous avez besoin. Dans le doute, sélectionnez l'iso &quot;multi-arch&quot;, qui pourra convenir pour les architectures i386 (32 bits) et amd64 (64 bits).

http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/current/multi-arch/iso-cd/

Il vous suffira de graver l'iso téléchargée sur un cédérom ou de la copier sur une clé USB (même procédure que pour l'iso officielle. Veuillez consulter le manuel d'installation officiel Debian pour la marche à suivre)

Si votre matériel est pris en charge par le noyau Linux de l'installeur Debian, alors vos interfaces réseau (filaire et/ou sans fil) devraient être fonctionnelles.


= Système Debian déjà installé =

Vous venez d'installer votre Debian grâce à une iso officielle, mais votre interface wifi ne fonctionne pas.

Dans un premier temps, il va être nécessaire d'identifier votre matériel réseau.

Dans un terminal, lancer les commandes suivantes :

(si votre interface wifi est une clé USB)
&lt;code&gt;$ lsusb&lt;/code&gt;

(si votre interface wifi est intégrée à la machine)
&lt;code&gt;$ lspci&lt;/code&gt;

Ces deux commandes vont lister le matériel présent sur votre machine, nous allons pouvoir identifier la marque et le modèle de la puce (chipset) wifi.


== Installer les paquets firmware non libres ==

Toujours dans un terminal, passez en root, puis éditez le fichier /etc/apt/sources.list afin de rajouter les dépôts contrib et non-free.
(Nous installons l'éditeur de texte nano et faisons une copie de sauvegarde du fichier sources.list en premier)

&lt;code&gt;
$ su (ou commande &quot;sudo su&quot; si sudo est installé)
# apt-get install nano
# cd /etc/apt/
# cp sources.list sources.list.bak
# nano sources.list
&lt;/code&gt;

Modifiez le fichier pour qu'il ressemble à cela

&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ wheezy main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ wheezy main

deb http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main

# wheezy-updates, previously known as 'volatile'
deb http://ftp.fr.debian.org/debian/ wheezy-updates main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ wheezy-updates main

&lt;/code&gt;

Sauvez les modifications : CTRL-O puis quittez nano : CTRL-X

Mettez à jour votre base de paquets
&lt;code&gt;# apt-get update&lt;/code&gt;

Installez les paquets de firmwares non libres

Note : nous installons la plupart des firmwares wifi par commodité, mais ne sélectionnez que celui/ceux dont vous avez besoin, de préférence.

&lt;code&gt;
# apt-get install firmware-linux-nonfree firmware-atheros firmware-brcm80211 firmware-ipw2x00 firmware-iwlwifi firmware-libertas firmware-ralink firmware-realtek
&lt;/code&gt;

Une fois ceci fait, le plus simple mettre en route vos interfaces wifi, est de redémarrer votre machine (ainsi les firmwares seront chargés automatiquement lors de la phase de démarrage).


A FAIRE : démarrage manuel de l'interface wifi



= Liens utiles =

* [http://fr.wikipedia.org/wiki/Firmware Définition du terme firmware]
* [http://wireless.kernel.org/ Le site officiel du support wifi du noyau Linux]
* [http://www.debian.org/releases/stable/i386/ch02s02.html.fr Le guide officiel d'installation de Debian (chapitre concernant les firmwares)]</text>
      <sha1>t5fizqlh24dknei28zzav2wcv9mg8vv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5389</id>
      <parentid>5386</parentid>
      <timestamp>2013-09-01T16:50:05Z</timestamp>
      <contributor>
        <username>Agentsteel</username>
        <id>260</id>
      </contributor>
      <comment>modifs</comment>
      <text xml:space="preserve" bytes="5099">= Mon wifi ne marche pas! =

Autrement dit, comment se dépanner lorsque votre interface wifi ne fonctionne pas automatiquement sous Debian.


A FAIRE : rappel sur la philosophie de Debian concernant les logiciels non libres


Note : cet article est écrit pour la version Debian 7.0 Wheezy.

Nous allons voir plusieurs cas de figure.

== Choisir un matériel compatible Linux ==

A FAIRE  : lister les sites proposant du matériel (périphériques) wifi compatibles Linux


== Installation de Debian à partir de medias contenant les firmwares ==

Si vous désirez installer Debian sur une nouvelle machine, et que vous savez (ou pas!) que des firmwares sont nécessaires, il est pratique d'utiliser les médias d'installation (non officiels) contenant les paquets (non libres) firmware. Ces médias sont de type &quot;netinstall&quot;, prévus pour télécharger les paquets depuis le réseau. A utiliser si vous possédez une bonne connaissance générale de Debian GNU/Linux.

Ces médias d'installation peuvent se trouver ici :

http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/

Il vous suffit de sélectionner le média dont vous avez besoin. Dans le doute, sélectionnez l'iso &quot;multi-arch&quot;, qui pourra convenir pour les architectures i386 (32 bits) et amd64 (64 bits).

http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/current/multi-arch/iso-cd/

Il vous suffira de graver l'iso téléchargée sur un cédérom ou de la copier sur une clé USB (même procédure que pour l'iso officielle. Veuillez consulter le manuel d'installation officiel Debian pour la marche à suivre)

Si votre matériel est pris en charge par le noyau Linux de l'installeur Debian, alors vos interfaces réseau (filaire et/ou sans fil) devraient être fonctionnelles.


= Système Debian déjà installé, l'interface réseau filaire fonctionne mais pas le wifi =

Vous venez d'installer votre Debian grâce à une iso officielle, mais votre interface wifi ne fonctionne pas.

'''Important : nous partons du principe que vous avez accès à l'Internet via une autre interface réseau (filaire).'''

Dans un premier temps, il va être nécessaire d'identifier votre matériel réseau.

Dans un terminal, lancer les commandes suivantes :

(si votre interface wifi est une clé USB)
&lt;code&gt;$ lsusb&lt;/code&gt;

(si votre interface wifi est intégrée à la machine)
&lt;code&gt;$ lspci&lt;/code&gt;

Ces deux commandes vont lister le matériel présent sur votre machine, nous allons pouvoir identifier la marque et le modèle de la puce (chipset) wifi.

exemple de sortie pour la commande lspci :

&lt;pre&gt;
...
01:00.0 VGA compatible controller: NVIDIA Corporation G98M [GeForce 9300M GS] (rev a1)
04:00.0 Network controller: Intel Corporation PRO/Wireless 5100 AGN [Shiloh] Network Connection
07:00.0 Ethernet controller: Broadcom Corporation NetLink BCM5906M Fast Ethernet PCI Express (rev 02)
...
&lt;/pre&gt;

On voit que l'interface wifi (&quot;wireless&quot;) est de marque Intel, modèle 5100AGN.


== Installer les paquets firmware non libres ==

Toujours dans un terminal, passez en root, puis éditez le fichier /etc/apt/sources.list afin de rajouter les dépôts contrib et non-free.
(Nous installons l'éditeur de texte nano et faisons une copie de sauvegarde du fichier sources.list en premier)

&lt;code&gt;
$ su (ou commande &quot;sudo su&quot; si sudo est installé)
# apt-get install nano
# cd /etc/apt/
# cp sources.list sources.list.bak
# nano sources.list
&lt;/code&gt;

Modifiez le fichier pour qu'il ressemble à cela

&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ wheezy main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ wheezy main

deb http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main

# wheezy-updates, previously known as 'volatile'
deb http://ftp.fr.debian.org/debian/ wheezy-updates main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ wheezy-updates main

&lt;/code&gt;

Sauvez les modifications : CTRL-O puis quittez nano : CTRL-X

Mettez à jour votre base de paquets
&lt;code&gt;# apt-get update&lt;/code&gt;

Installez les paquets de firmwares non libres

Note : nous installons la plupart des firmwares wifi par commodité (cela ne prend que peu de place disque, et de plus si vous connectez ultèrieurement un autre interface wifi, le firmware requis éventuellement sera déjà installé)

&lt;code&gt;
# apt-get install firmware-linux-nonfree firmware-atheros firmware-brcm80211 firmware-ipw2x00 firmware-iwlwifi firmware-libertas firmware-ralink firmware-realtek
&lt;/code&gt;

Une fois ceci fait, le plus simple mettre en route vos interfaces wifi, est de redémarrer votre machine (ainsi les firmwares seront chargés automatiquement lors de la phase de démarrage).


A FAIRE : démarrage manuel de l'interface wifi

= Liens utiles =

* [http://fr.wikipedia.org/wiki/Firmware Définition du terme firmware]
* [http://wireless.kernel.org/ Le site officiel du support wifi du noyau Linux]
* [http://www.debian.org/releases/stable/i386/ch02s02.html.fr Le guide officiel d'installation de Debian (chapitre concernant les firmwares)]</text>
      <sha1>nbje487rasczrzu306wl145lf79067p</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5390</id>
      <parentid>5389</parentid>
      <timestamp>2013-09-01T17:17:41Z</timestamp>
      <contributor>
        <username>Agentsteel</username>
        <id>260</id>
      </contributor>
      <minor/>
      <comment>ajout bannière &quot;ébauche&quot;</comment>
      <text xml:space="preserve" bytes="5151">{{Ébauche|le dépannage des interfaces sans fil}}

= Mon wifi ne marche pas! =

Autrement dit, comment se dépanner lorsque votre interface wifi ne fonctionne pas automatiquement sous Debian.


A FAIRE : rappel sur la philosophie de Debian concernant les logiciels non libres


Note : cet article est écrit pour la version Debian 7.0 Wheezy.

Nous allons voir plusieurs cas de figure.

== Choisir un matériel compatible Linux ==

A FAIRE  : lister les sites proposant du matériel (périphériques) wifi compatibles Linux


== Installation de Debian à partir de medias contenant les firmwares ==

Si vous désirez installer Debian sur une nouvelle machine, et que vous savez (ou pas!) que des firmwares sont nécessaires, il est pratique d'utiliser les médias d'installation (non officiels) contenant les paquets (non libres) firmware. Ces médias sont de type &quot;netinstall&quot;, prévus pour télécharger les paquets depuis le réseau. A utiliser si vous possédez une bonne connaissance générale de Debian GNU/Linux.

Ces médias d'installation peuvent se trouver ici :

http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/

Il vous suffit de sélectionner le média dont vous avez besoin. Dans le doute, sélectionnez l'iso &quot;multi-arch&quot;, qui pourra convenir pour les architectures i386 (32 bits) et amd64 (64 bits).

http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/current/multi-arch/iso-cd/

Il vous suffira de graver l'iso téléchargée sur un cédérom ou de la copier sur une clé USB (même procédure que pour l'iso officielle. Veuillez consulter le manuel d'installation officiel Debian pour la marche à suivre)

Si votre matériel est pris en charge par le noyau Linux de l'installeur Debian, alors vos interfaces réseau (filaire et/ou sans fil) devraient être fonctionnelles.


= Système Debian déjà installé, l'interface réseau filaire fonctionne mais pas le wifi =

Vous venez d'installer votre Debian grâce à une iso officielle, mais votre interface wifi ne fonctionne pas.

'''Important : nous partons du principe que vous avez accès à l'Internet via une autre interface réseau (filaire).'''

Dans un premier temps, il va être nécessaire d'identifier votre matériel réseau.

Dans un terminal, lancer les commandes suivantes :

(si votre interface wifi est une clé USB)
&lt;code&gt;$ lsusb&lt;/code&gt;

(si votre interface wifi est intégrée à la machine)
&lt;code&gt;$ lspci&lt;/code&gt;

Ces deux commandes vont lister le matériel présent sur votre machine, nous allons pouvoir identifier la marque et le modèle de la puce (chipset) wifi.

exemple de sortie pour la commande lspci :

&lt;pre&gt;
...
01:00.0 VGA compatible controller: NVIDIA Corporation G98M [GeForce 9300M GS] (rev a1)
04:00.0 Network controller: Intel Corporation PRO/Wireless 5100 AGN [Shiloh] Network Connection
07:00.0 Ethernet controller: Broadcom Corporation NetLink BCM5906M Fast Ethernet PCI Express (rev 02)
...
&lt;/pre&gt;

On voit que l'interface wifi (&quot;wireless&quot;) est de marque Intel, modèle 5100AGN.


== Installer les paquets firmware non libres ==

Toujours dans un terminal, passez en root, puis éditez le fichier /etc/apt/sources.list afin de rajouter les dépôts contrib et non-free.
(Nous installons l'éditeur de texte nano et faisons une copie de sauvegarde du fichier sources.list en premier)

&lt;code&gt;
$ su (ou commande &quot;sudo su&quot; si sudo est installé)
# apt-get install nano
# cd /etc/apt/
# cp sources.list sources.list.bak
# nano sources.list
&lt;/code&gt;

Modifiez le fichier pour qu'il ressemble à cela

&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ wheezy main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ wheezy main

deb http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main

# wheezy-updates, previously known as 'volatile'
deb http://ftp.fr.debian.org/debian/ wheezy-updates main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ wheezy-updates main

&lt;/code&gt;

Sauvez les modifications : CTRL-O puis quittez nano : CTRL-X

Mettez à jour votre base de paquets
&lt;code&gt;# apt-get update&lt;/code&gt;

Installez les paquets de firmwares non libres

Note : nous installons la plupart des firmwares wifi par commodité (cela ne prend que peu de place disque, et de plus si vous connectez ultèrieurement un autre interface wifi, le firmware requis éventuellement sera déjà installé)

&lt;code&gt;
# apt-get install firmware-linux-nonfree firmware-atheros firmware-brcm80211 firmware-ipw2x00 firmware-iwlwifi firmware-libertas firmware-ralink firmware-realtek
&lt;/code&gt;

Une fois ceci fait, le plus simple mettre en route vos interfaces wifi, est de redémarrer votre machine (ainsi les firmwares seront chargés automatiquement lors de la phase de démarrage).


A FAIRE : démarrage manuel de l'interface wifi

= Liens utiles =

* [http://fr.wikipedia.org/wiki/Firmware Définition du terme firmware]
* [http://wireless.kernel.org/ Le site officiel du support wifi du noyau Linux]
* [http://www.debian.org/releases/stable/i386/ch02s02.html.fr Le guide officiel d'installation de Debian (chapitre concernant les firmwares)]</text>
      <sha1>2w7sh83bx3yvgkeizjui48wrb142043</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5391</id>
      <parentid>5390</parentid>
      <timestamp>2013-09-01T17:42:32Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Installer les paquets firmware non libres */</comment>
      <text xml:space="preserve" bytes="5151">{{Ébauche|le dépannage des interfaces sans fil}}

= Mon wifi ne marche pas! =

Autrement dit, comment se dépanner lorsque votre interface wifi ne fonctionne pas automatiquement sous Debian.


A FAIRE : rappel sur la philosophie de Debian concernant les logiciels non libres


Note : cet article est écrit pour la version Debian 7.0 Wheezy.

Nous allons voir plusieurs cas de figure.

== Choisir un matériel compatible Linux ==

A FAIRE  : lister les sites proposant du matériel (périphériques) wifi compatibles Linux


== Installation de Debian à partir de medias contenant les firmwares ==

Si vous désirez installer Debian sur une nouvelle machine, et que vous savez (ou pas!) que des firmwares sont nécessaires, il est pratique d'utiliser les médias d'installation (non officiels) contenant les paquets (non libres) firmware. Ces médias sont de type &quot;netinstall&quot;, prévus pour télécharger les paquets depuis le réseau. A utiliser si vous possédez une bonne connaissance générale de Debian GNU/Linux.

Ces médias d'installation peuvent se trouver ici :

http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/

Il vous suffit de sélectionner le média dont vous avez besoin. Dans le doute, sélectionnez l'iso &quot;multi-arch&quot;, qui pourra convenir pour les architectures i386 (32 bits) et amd64 (64 bits).

http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/current/multi-arch/iso-cd/

Il vous suffira de graver l'iso téléchargée sur un cédérom ou de la copier sur une clé USB (même procédure que pour l'iso officielle. Veuillez consulter le manuel d'installation officiel Debian pour la marche à suivre)

Si votre matériel est pris en charge par le noyau Linux de l'installeur Debian, alors vos interfaces réseau (filaire et/ou sans fil) devraient être fonctionnelles.


= Système Debian déjà installé, l'interface réseau filaire fonctionne mais pas le wifi =

Vous venez d'installer votre Debian grâce à une iso officielle, mais votre interface wifi ne fonctionne pas.

'''Important : nous partons du principe que vous avez accès à l'Internet via une autre interface réseau (filaire).'''

Dans un premier temps, il va être nécessaire d'identifier votre matériel réseau.

Dans un terminal, lancer les commandes suivantes :

(si votre interface wifi est une clé USB)
&lt;code&gt;$ lsusb&lt;/code&gt;

(si votre interface wifi est intégrée à la machine)
&lt;code&gt;$ lspci&lt;/code&gt;

Ces deux commandes vont lister le matériel présent sur votre machine, nous allons pouvoir identifier la marque et le modèle de la puce (chipset) wifi.

exemple de sortie pour la commande lspci :

&lt;pre&gt;
...
01:00.0 VGA compatible controller: NVIDIA Corporation G98M [GeForce 9300M GS] (rev a1)
04:00.0 Network controller: Intel Corporation PRO/Wireless 5100 AGN [Shiloh] Network Connection
07:00.0 Ethernet controller: Broadcom Corporation NetLink BCM5906M Fast Ethernet PCI Express (rev 02)
...
&lt;/pre&gt;

On voit que l'interface wifi (&quot;wireless&quot;) est de marque Intel, modèle 5100AGN.


== Installer les paquets firmware non libres ==

Toujours dans un terminal, passez en root, puis éditez le fichier /etc/apt/sources.list afin de rajouter les dépôts contrib et non-free.
(Nous installons l'éditeur de texte nano et faisons une copie de sauvegarde du fichier sources.list en premier)

&lt;code&gt;
$ su (ou commande &quot;sudo su&quot; si sudo est installé)
# apt-get install nano
# cd /etc/apt/
# cp sources.list sources.list.bak
# nano sources.list
&lt;/code&gt;

Modifiez le fichier pour qu'il ressemble à cela

&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ wheezy main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ wheezy main

deb http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main

# wheezy-updates, previously known as 'volatile'
deb http://ftp.fr.debian.org/debian/ wheezy-updates main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ wheezy-updates main

&lt;/code&gt;

Sauvez les modifications : CTRL-O puis quittez nano : CTRL-X

Mettez à jour votre base de paquets
&lt;code&gt;# apt-get update&lt;/code&gt;

Installez les paquets de firmwares non libres

Note : nous installons la plupart des firmwares wifi par commodité (cela ne prend que peu de place disque, et de plus si vous connectez ultérieurement un autre interface wifi, le firmware requis éventuellement sera déjà installé)

&lt;code&gt;
# apt-get install firmware-linux-nonfree firmware-atheros firmware-brcm80211 firmware-ipw2x00 firmware-iwlwifi firmware-libertas firmware-ralink firmware-realtek
&lt;/code&gt;

Une fois ceci fait, le plus simple mettre en route vos interfaces wifi, est de redémarrer votre machine (ainsi les firmwares seront chargés automatiquement lors de la phase de démarrage).


A FAIRE : démarrage manuel de l'interface wifi

= Liens utiles =

* [http://fr.wikipedia.org/wiki/Firmware Définition du terme firmware]
* [http://wireless.kernel.org/ Le site officiel du support wifi du noyau Linux]
* [http://www.debian.org/releases/stable/i386/ch02s02.html.fr Le guide officiel d'installation de Debian (chapitre concernant les firmwares)]</text>
      <sha1>2wcylei83bkuolddzbwyezv2oynjy2c</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5398</id>
      <parentid>5391</parentid>
      <timestamp>2013-09-14T09:32:29Z</timestamp>
      <contributor>
        <username>Agentsteel</username>
        <id>260</id>
      </contributor>
      <minor/>
      <comment>ajout liens</comment>
      <text xml:space="preserve" bytes="5626">{{Ébauche|le dépannage des interfaces sans fil}}

= Mon wifi ne marche pas! =

Autrement dit, comment se dépanner lorsque votre interface wifi ne fonctionne pas automatiquement sous Debian.


[http://www.debian.org/releases/stable/i386/ch02s02.html.fr Rappel concernant les logiciels non libres dans Debian]


Note : cet article est écrit pour la version Debian 7.0 Wheezy.


Nous allons voir plusieurs cas de figure.


== Choisir un matériel compatible Linux ==

Voici quelques sites qui pourront orienter vos recherches, concernant les adaptateurs réseau wifi  :

* http://wireless.kernel.org/en/users/Devices (le site de référence du support wifi du noyau Linux, en anglais)
* http://linux-wless.passys.nl/
* http://linuxhcl.com/browse/search?category=25

(ajoutez vos liens à la suite!)


== Installation de Debian à partir de medias contenant les firmwares ==

Si vous désirez installer Debian sur une nouvelle machine, et que vous savez (ou pas!) que des firmwares sont nécessaires, il est pratique d'utiliser les médias d'installation (non officiels) contenant les paquets (non libres) firmware. Ces médias sont de type &quot;netinstall&quot;, prévus pour télécharger les paquets depuis le réseau. A utiliser si vous possédez une bonne connaissance générale de Debian GNU/Linux.

Ces médias d'installation peuvent se trouver ici :

http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/

Il vous suffit de sélectionner le média dont vous avez besoin. Dans le doute, sélectionnez l'iso &quot;multi-arch&quot;, qui pourra convenir pour les architectures i386 (32 bits) et amd64 (64 bits).

http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/current/multi-arch/iso-cd/

Il vous suffira de graver l'iso téléchargée sur un cédérom ou de la copier sur une clé USB (même procédure que pour l'iso officielle. Veuillez consulter le manuel d'installation officiel Debian pour la marche à suivre)

Si votre matériel est pris en charge par le noyau Linux de l'installeur Debian, alors vos interfaces réseau (filaire et/ou sans fil) devraient être fonctionnelles.


= Système Debian déjà installé, l'interface réseau filaire fonctionne mais pas le wifi =

Vous venez d'installer votre Debian grâce à une iso officielle, mais votre interface wifi ne fonctionne pas.

'''Important : nous partons du principe que vous avez accès à l'Internet via une autre interface réseau (filaire).'''

Dans un premier temps, il va être nécessaire d'identifier votre matériel réseau.

Dans un terminal, lancer les commandes suivantes :

(si votre interface wifi est une clé USB)
&lt;code&gt;$ lsusb&lt;/code&gt;

(si votre interface wifi est intégrée à la machine)
&lt;code&gt;$ lspci&lt;/code&gt;

Ces deux commandes vont lister le matériel présent sur votre machine, nous allons pouvoir identifier la marque et le modèle de la puce (chipset) wifi.

exemple de sortie pour la commande lspci :

&lt;pre&gt;
...
01:00.0 VGA compatible controller: NVIDIA Corporation G98M [GeForce 9300M GS] (rev a1)
04:00.0 Network controller: Intel Corporation PRO/Wireless 5100 AGN [Shiloh] Network Connection
07:00.0 Ethernet controller: Broadcom Corporation NetLink BCM5906M Fast Ethernet PCI Express (rev 02)
...
&lt;/pre&gt;

On voit que l'interface wifi (&quot;wireless&quot;) est de marque Intel, modèle 5100AGN.

'''Si votre interface réseau sans fil n'apparaît pas dans la liste, c'est qu'elle n'est pas reconnue par votre noyau Linux actuel.'''
Dans ce cas il faut essayer d'installer un noyau plus récent.


== Installer les paquets firmware non libres ==

Toujours dans un terminal, passez en root, puis éditez le fichier /etc/apt/sources.list afin de rajouter les dépôts contrib et non-free.
(Nous installons l'éditeur de texte nano et faisons une copie de sauvegarde du fichier sources.list en premier)

&lt;code&gt;
$ su (ou commande &quot;sudo su&quot; si sudo est installé)
# apt-get install nano
# cd /etc/apt/
# cp sources.list sources.list.bak
# nano sources.list
&lt;/code&gt;

Modifiez le fichier pour qu'il ressemble à cela

&lt;code&gt;
deb http://ftp.fr.debian.org/debian/ wheezy main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ wheezy main

deb http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main

# wheezy-updates, previously known as 'volatile'
deb http://ftp.fr.debian.org/debian/ wheezy-updates main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ wheezy-updates main

&lt;/code&gt;

Sauvez les modifications : CTRL-O puis quittez nano : CTRL-X

Mettez à jour votre base de paquets
&lt;code&gt;# apt-get update&lt;/code&gt;

Installez les paquets de firmwares non libres

Note : nous installons la plupart des firmwares wifi par commodité (cela ne prend que peu de place disque, et de plus si vous connectez ultérieurement un autre interface wifi, le firmware requis éventuellement sera déjà installé)

&lt;code&gt;
# apt-get install firmware-linux-nonfree firmware-atheros firmware-brcm80211 firmware-ipw2x00 firmware-iwlwifi firmware-libertas firmware-ralink firmware-realtek
&lt;/code&gt;

Une fois ceci fait, le plus simple mettre en route vos interfaces wifi, est de redémarrer votre machine (ainsi les firmwares seront chargés automatiquement lors de la phase de démarrage).


A FAIRE : démarrage manuel de l'interface wifi

= Liens utiles =

* [http://fr.wikipedia.org/wiki/Firmware Définition du terme firmware]
* [http://wireless.kernel.org/ Le site officiel du support wifi du noyau Linux]
* [http://www.debian.org/releases/stable/i386/ch02s02.html.fr Le guide officiel d'installation de Debian (chapitre concernant les firmwares)]</text>
      <sha1>sxopbkq3u0o8qvfln76kv4hva9aaurl</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Monit</title>
    <ns>0</ns>
    <id>836</id>
    <revision>
      <id>3385</id>
      <timestamp>2011-08-23T13:04:49Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « '''Monit''' est utilisé pour surveiller les processus &quot;daemon&quot; - démons en français, programme qui tournent en arrière plan - ou des programmes similaires sur votre serve... »</comment>
      <text xml:space="preserve" bytes="13694">'''Monit''' est utilisé pour surveiller les processus &quot;daemon&quot; - démons en français, programme qui tournent en arrière plan - ou des programmes similaires sur votre serveur local.

Monit est particulièrement utile pour les processus démons lancés au démarrage du système à partir de /etc/init.d/ (sendmail, sshd, apache, mysql...)

A la différence de nombreux systèmes de surveillance, Monit peut en plus agir en cas de situation d'erreur; Par exemple, si sendmail s'arrête, Monit peut le relancer; Si Apache utilise trop de ressources (en cas d'attaque DoS est en cours) Monit peut arrêter et/ou redémarrer Apache puis vous envoyer un message d'alerte.

'''Monit''' peut également surveiller l'état des processus et détecter par exemple les processus zombie ou qui utilisent trop de CPU.

Vous pouvez également utiliser '''Monit''' pour surveiller des fichiers, répertoires et systèmes de fichiers sur votre serveur local. Vous pouvez aussi contrôler le checksum MD5 de fichiers qui ne devraient pas changer...

Même s'il n'est pas fait pour ça Monit peut surveiller des hôtes distants.

Vous pouvez suivre l'état de votre système (utilisation du CPU, la mémoire et la charge moyenne)

== Installation ==

 # apt-get install monit

== Pour les impatients ==

Nous allons activer monit et accéder tout de suite à l'interface Web

 root@vanille:~# nano /etc/default/monit

 # You must set this variable to for monit to start
 startup=1

 root@vanille:~# mn /etc/monit/monitrc /etc/monit/monitrc.ori

 set daemon  60
  set httpd port 2812 and
     allow admin:test

 root@vanille:~# service monit start
 Starting daemon monitor: monit.

[[Fichier:Monit1.jpeg|480px]]

[[Fichier:Monit2.jpeg|480px]]

Bien entendu cette configuration est très insufisante; A part savoir que votre serveur est en fonction, vous n'avez pas beaucoup d'autres informations...
De plus l'interface n'est pas sécurisée...

== Explication des règles ==

*Surveillance d'un processus;
*Règles pour arrêter et démarrer les processus surveillés;
*Règles pour surveiller éventuellement les interfaces et ports ou ces processus doivent écouter (par défaut localhost si vous ne précisez rien);
*Règles pour surveiller la charge du CPU par service;
*Règles pour surveiller des fichiers (s'ils existent, leur checksum...).

Pensez à surveiller les services sur les bonnes interfaces...
Inutile par exemple de surveiller ssh sur localhost alors que vous en avez besoin sur eth0...

Les possibilités sont très grandes, et la finesse de la surveillance tout autant. N'hésitez pas à lire les documentations elles regorgent d'astuces.

== Plus de services ==

Voici quelques exemples de services à surveiller.
Les fichiers sont à placer dans /etc/monit/conf.d

=== amavis ===

 # cat /etc/monit/conf.d/amavis
 check process Amavisd-new with pidfile /var/run/amavis/amavisd.pid
    group mail
    start program = &quot;/etc/init.d/amavis start&quot;
    stop  program = &quot;/etc/init.d/amavis stop&quot;
    if failed port 10024 protocol smtp then restart
    if 5 restarts within 5 cycles then timeout
    depends on amavisd_bin
 
  check file amavisd_bin with path /usr/sbin/amavisd-new
    group mail
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor

=== apache2 ===

 # cat /etc/monit/conf.d/apache2
 check process Apache2 with pidfile /var/run/apache2.pid
        start program = &quot;/etc/init.d/apache2 start&quot; with timeout 60 seconds
        stop program  = &quot;/etc/init.d/apache2 stop&quot;
        if failed port 80 then restart
        if failed port 443 with timeout 15 seconds then restart

=== bind9 ===

 # cat /etc/monit/conf.d/bind9
 check process Bind9 with pidfile /var/run/named/named.pid
        start program = &quot;/etc/init.d/bind9 start&quot;
        stop program  = &quot;/etc/init.d/bind9 stop&quot;
        if failed port 53 use type udp protocol dns then restart
        if 3 restarts within 5 cycles then timeout

=== clamav ===

 # cat /etc/monit/conf.d/clamav
 check process ClamAV with pidfile /var/run/clamav/clamd.pid
    group virus
    start program = &quot;/etc/init.d/clamav-daemon start&quot;
    stop  program = &quot;/etc/init.d/clamav-daemon stop&quot;
    if 5 restarts within 5 cycles then timeout
    depends on clamavd_bin
 
  check file clamavd_bin with path /usr/sbin/clamd
    group virus
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor

=== dovecot ===

 # cat /etc/monit/conf.d/dovecot
 check process Dovecot with pidfile /var/run/dovecot/master.pid
    start program = &quot;/etc/init.d/dovecot start&quot;
    stop program = &quot;/etc/init.d/dovecot stop&quot;
    group mail
    if failed host mail.zehome.org port 993 type tcpssl sslauto protocol imap for 5 cycles then restart
    if 3 restarts within 5 cycles then timeout
    depends dovecot_init
    depends dovecot_bin
 check file dovecot_init with path /etc/init.d/dovecot
    group mail
 check file dovecot_bin with path /usr/sbin/dovecot
    group mail

=== fail2ban ===

 # cat /etc/monit/conf.d/fail2ban
 check process Fail2ban with pidfile /var/run/fail2ban/fail2ban.pid
        start program = &quot;/etc/init.d/fail2ban start&quot; with timeout 60 seconds
        stop program  = &quot;/etc/init.d/fail2ban stop&quot;

=== fetchmail ===

 # cat /etc/monit/conf.d/fetchmail
 check process Fetchmail with pidfile /var/run/fetchmail/fetchmail.pid
        start program = &quot;/etc/init.d/fetchmail start&quot; with timeout 60 seconds
        stop program  = &quot;/etc/init.d/fetchmail stop&quot;

=== freeradius ===

 # cat /etc/monit/conf.d/freeradius
 check process Freeradius with pidfile /var/run/freeradius/freeradius.pid
        start program = &quot;/etc/init.d/freeradius start&quot; with timeout 60 seconds
        stop program  = &quot;/etc/init.d/freeradius stop&quot;
        if failed host 10.9.8.3 port 1812 type udp then restart
        if failed host 10.9.8.3 port 1813 type udp then restart
        if failed host 10.9.8.3 port 1814 type udp then restart

=== imapproxyd ===

 # cat /etc/monit/conf.d/imapproxyd
 check process Imapproxy with pidfile /var/run/imapproxy.pid
        start program = &quot;/etc/init.d/imapproxy start&quot; with timeout 60 seconds
        stop program  = &quot;/etc/init.d/imapproxy stop&quot;
        if failed port 1143 then restart

=== mysql ===

 # cat /etc/monit/conf.d/mysql 
 # MYSQL
 
 check process MySql with pidfile /var/run/mysqld/mysqld.pid
    group mysql
    start program = &quot;/etc/init.d/mysql start&quot;
    stop program = &quot;/etc/init.d/mysql stop&quot;
    if failed host localhost port 3306 protocol mysql then restart
    if 5 restarts within 5 cycles then timeout
    depends on mysql_bin
    depends on mysql_rc
 
  check file mysql_bin with path /usr/sbin/mysqld
    group mysql
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor
 
  check file mysql_rc with path /etc/init.d/mysql
    group mysql
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor

=== postfix ===

 # cat /etc/monit/conf.d/postfix
 # Postfix
 check process Postfix with pidfile /var/spool/postfix/pid/master.pid
    group mail
    start program = &quot;/etc/init.d/postfix start&quot;
    stop  program = &quot;/etc/init.d/postfix stop&quot;
    if failed host 10.9.8.3 port 25 protocol smtp then restart
    if 5 restarts within 5 cycles then timeout
    depends on postfix_rc
 
  check file postfix_rc with path /etc/init.d/postfix
    group mail
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor

=== rsyslogd ===

 # cat /etc/monit/conf.d/rsyslogd 
 # Syslogd
 check process Rsyslogd with pidfile /var/run/rsyslogd.pid
    start program = &quot;/etc/init.d/rsyslog start&quot;
    stop program = &quot;/etc/init.d/rsyslog stop&quot;
    if 5 restarts within 5 cycles then timeout
 check file rsyslogd_file with path /var/log/syslog

=== spamassassin ===

 # cat /etc/monit/conf.d/spamassassin
 check process Spamassassin with pidfile /var/run/spamd.pid
    group mail
    start program = &quot;/etc/init.d/spamassassin start&quot;
    stop  program = &quot;/etc/init.d/spamassassin stop&quot;
    if 5 restarts within 5 cycles then timeout
    if cpu usage &gt; 99% for 5 cycles then alert
    if mem usage &gt; 99% for 5 cycles then alert
    depends on spamd_bin
    depends on spamd_rc 
 
  check file spamd_bin with path /usr/bin/spamassassin
    group mail
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor
 
  check file spamd_rc with path /etc/init.d/spamassassin
    group mail
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor

=== sshd ===

 cat /etc/monit/conf.d/sshd
 check process SSH with pidfile /var/run/sshd.pid
        start program = &quot;/etc/init.d/ssh start&quot; with timeout 60 seconds
        stop program  = &quot;/etc/init.d/ssh stop&quot;
        if failed host 10.9.8.3 port 22 then restart

== Logging ==

Vous pouvez archiver les logs dans /var/log/syslog:
Ajoutez ceci à /etc/monit/monitrc

 set logfile syslog facility log_daemon

Si comme moi vous préférez séparer les logs, insérez ceci:

 set logfile /var/log/monit.log

Et n'oubliez pas de prévoir une rotation...

 nano /etc/logrotate.d/monit

 /var/log/monit.log {
     missingok
     notifempty
     size 100k
     create 0644 root root
     postrotate
         /bin/kill -HUP `cat /var/run/monit.pid 2&gt;/dev/null` 2&gt; /dev/null || true
     endscript
 }

== Les alertes par email ==

Ajoutez ceci à /etc/monit/monitrc:

 set mailserver vanille.zehome.org
 set alert admin@zehome.org
 set mail-format { from: monit@vanille.zehome.org }

Au redémarrage de monit vous recevrez un message dans votre boite mail:

 monit alert -- Monit instance changed vanille.zehome.org

 Monit instance changed Service vanille.zehome.org 
 
 	Date:        Tue, 23 Aug 2011 14:55:10 +0300
 	Action:      start
 	Host:        vanille.zehome.org
 	Description: Monit started
 
 Your faithful employee,
 monit

En cas de service qui s'arrêterais...

 Objet: monit alert -- Does not exist Freeradius

 Does not exist Service Freeradius 
 
 	Date:        Tue, 23 Aug 2011 14:59:35 +0300
 	Action:      restart
 	Host:        vanille.zehome.org
 	Description: process is not running
 
 Your faithful employee,
 monit

Puis peu de temps plus tard...

 Objet: monit alert -- Exists Freeradius


Les options sont très nombreuses, vous pouvez par exemple décider d'être averti de façon différente service par service.
Vous pouvez aussi décider ne n'être averti que pour certaines alertes:

En voici la liste:

   alert foo@bar on { action
                      checksum
                      content
                      data
                      exec
                      gid
                      icmp
                      invalid
                      fsflags
                      nonexist
                      permission
                      pid
                      ppid
                      size
                      timeout
                      timestamp }

== Et avec ssl ==

 root@vanille:~# openssl req -new -x509 -days 365 -nodes -out /etc/ssl/private/monit.pem -keyout /etc/ssl/private/monit.pem
 Generating a 1024 bit RSA private key
 ..............++++++
 ..............++++++
 writing new private key to '/etc/ssl/private/monit.pem'
 -----
 You are about to be asked to enter information that will be incorporated
 into your certificate request.
 What you are about to enter is what is called a Distinguished Name or a DN.
 There are quite a few fields but you can leave some blank
 For some fields there will be a default value,
 If you enter '.', the field will be left blank.
 -----
 Country Name (2 letter code) [AU]:MG
 State or Province Name (full name) [Some-State]:Ihorombe
 Locality Name (eg, city) []:Ranohira 
 Organization Name (eg, company) [Internet Widgits Pty Ltd]:Net
 Organizational Unit Name (eg, section) []:SHI
 Common Name (eg, YOUR name) []:vanille.zehome.org    
 Email Address []:admin@zehome.org

 root@vanille:~# openssl gendh 512 &gt;&gt; /etc/ssl/private/monit.pem
 Generating DH parameters, 512 bit long safe prime, generator 2
 This is going to take a long time
 ............++*++*++*++*++*++*

 root@vanille:~# openssl x509 -subject -dates -fingerprint -noout -in /etc/ssl/private/monit.pem
 subject= /C=MG/ST=Ihorombe/L=Ranohira/O=Net/OU=SHI/CN=vanille.zehome.org/emailAddress=admin@zehome.org
 notBefore=Aug 23 09:04:36 2011 GMT
 notAfter=Aug 22 09:04:36 2012 GMT
 SHA1 Fingerprint=15:DF:66:74:4C:B2:58:FF:0B:AF:1C:8B:D2:9A:63:65:5A:06:E5:D8

 root@vanille:~# chmod 700 /etc/ssl/private/monit.pem

 root@vanille:~# nano /etc/monit/monitrc

 set daemon  60
 set httpd port 2812
         ssl enable
         pemfile /etc/ssl/private/monit.pem
         allow admin:test
 
 include /etc/monit/conf.d/*

== Ecran final ==

Rendez-vous sur

 https://votre.domaine.org:2812/
ou
 https://votre_ip:2812/

[[Fichier:Monit4.jpeg|480px]]

== Sources ==

* {{en}} [http://mmonit.com/monit/ Site officiel]
* {{en}} [http://mmonit.com/monit/documentation/monit.html Manuel]
* {{en}} [http://mmonit.com/wiki/Monit/ConfigurationExamples Exemples de services]
* {{en}} [http://www.howtoforge.com/server_monitoring_with_munin_monit_debian_etch_p2 Installation sur une etch - c'est pas jeune...]

[[Catégorie:Logiciels]]</text>
      <sha1>io316u0dos71dty79iqwuetvcb016yk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3387</id>
      <parentid>3385</parentid>
      <timestamp>2011-08-24T04:48:01Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="15470">'''Monit''' est utilisé pour surveiller les processus &quot;daemon&quot; - démons en français, programme qui tournent en arrière plan - ou des programmes similaires sur votre serveur local.

Monit est particulièrement utile pour les processus démons lancés au démarrage du système à partir de /etc/init.d/ (sendmail, sshd, apache, mysql...)

A la différence de nombreux systèmes de surveillance, Monit peut en plus agir en cas de situation d'erreur; Par exemple, si sendmail s'arrête, Monit peut le relancer; Si Apache utilise trop de ressources (en cas d'attaque DoS est en cours) Monit peut arrêter et/ou redémarrer Apache puis vous envoyer un message d'alerte.

'''Monit''' peut également surveiller l'état des processus et détecter par exemple les processus zombie ou qui utilisent trop de CPU.

Vous pouvez également utiliser '''Monit''' pour surveiller des fichiers, répertoires et systèmes de fichiers sur votre serveur local. Vous pouvez aussi contrôler le checksum MD5 de fichiers qui ne devraient pas changer...

Même s'il n'est pas fait pour ça Monit peut surveiller des hôtes distants.

Vous pouvez suivre l'état de votre système (utilisation du CPU, la mémoire et la charge moyenne)

== Installation ==

 # apt-get install monit

== Pour les impatients ==

Nous allons activer monit et accéder tout de suite à l'interface Web

 root@vanille:~# nano /etc/default/monit

 # You must set this variable to for monit to start
 startup=1

 root@vanille:~# mn /etc/monit/monitrc /etc/monit/monitrc.ori

 set daemon  60
  set httpd port 2812 and
     allow admin:test

 root@vanille:~# service monit start
 Starting daemon monitor: monit.

[[Fichier:Monit1.jpeg|480px]]

[[Fichier:Monit2.jpeg|480px]]

Bien entendu cette configuration est très insufisante; A part savoir que votre serveur est en fonction, vous n'avez pas beaucoup d'autres informations...
De plus l'interface n'est pas sécurisée...

== Explication des règles ==

D'une façon générale, les règles de surveillance s'articulent comme ceci:

*Surveillance d'un processus (le fichier PID du service);
*Les commandes pour arrêter et démarrer les processus surveillés;
*L'utilisateur système du service,
*La condition de test à effectuer:
#Interfaces et ports ou ces processus doivent écouter (par défaut localhost si vous ne précisez rien);
#Charge du CPU par service;
#Fichiers (s'ils existent, leur checksum...).
#...
*La commande a effectuer en cas d'échec

'''Pensez à surveiller les services sur les bonnes interfaces...'''
Inutile par exemple de surveiller ssh sur localhost alors que vous en avez besoin sur eth0...

Les possibilités sont très grandes, et la finesse de la surveillance tout autant. N'hésitez pas à lire les documentations elles regorgent d'astuces.

== Plus de services ==

Voici quelques exemples de services à surveiller.
Les fichiers sont à placer dans /etc/monit/conf.d

=== amavis ===

 # cat /etc/monit/conf.d/amavis
 check process Amavisd-new with pidfile /var/run/amavis/amavisd.pid
    group mail
    start program = &quot;/etc/init.d/amavis start&quot;
    stop  program = &quot;/etc/init.d/amavis stop&quot;
    if failed port 10024 protocol smtp then restart
    if 5 restarts within 5 cycles then timeout
    depends on amavisd_bin
 
  check file amavisd_bin with path /usr/sbin/amavisd-new
    group mail
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor

=== apache2 ===

 # cat /etc/monit/conf.d/apache2
 check process apache with pidfile /var/run/apache2.pid group www
         start program = &quot;/etc/init.d/apache2 start&quot;
         stop program = &quot;/etc/init.d/apache2 stop&quot;
         if failed host vanille.zehome.org port 80 protocol http
            and request &quot;/monit/token&quot; then restart
         if  cpu is greater than 60% for 2 cycles then alert
         if cpu &gt; 80%  for 5 cycles then restart
         if totalmem &gt; 500 MB for 5 cycles then restart
         if children &gt; 250 then restart
         if loadavg(5min) greater than 10 for 8 cycles then stop
         if 3 restarts within 5 cycles then timeout

Sans oublier de créer le fichier 'token' sur votre serveur...

 root@vanille:~# su www-data
 $ cd
 $ mkdir monit
 $ cd monit
 $ touch token
 $ exit

Du coup votre &quot;access.log&quot; va se remplir avec ceci:

 127.0.1.1 - - [24/Aug/2011:07:31:19 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;
 127.0.1.1 - - [24/Aug/2011:07:32:25 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;
 127.0.1.1 - - [24/Aug/2011:07:33:31 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;
 127.0.1.1 - - [24/Aug/2011:07:34:37 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;
 127.0.1.1 - - [24/Aug/2011:07:35:43 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;
 127.0.1.1 - - [24/Aug/2011:07:36:49 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;
 127.0.1.1 - - [24/Aug/2011:07:37:55 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;

Pour éviter cela, ajoutez ceci:

 SetEnvIf        Request_URI &quot;^\/monit\/token$&quot; dontlog
 CustomLog       /var/log/apache2/access.log common env=!dontlog

A la fin du fichier /etc/apache2/apache2.conf

=== bind9 ===

 # cat /etc/monit/conf.d/bind9
 check process Bind9 with pidfile /var/run/named/named.pid
        start program = &quot;/etc/init.d/bind9 start&quot;
        stop program  = &quot;/etc/init.d/bind9 stop&quot;
        if failed port 53 use type udp protocol dns then restart
        if 3 restarts within 5 cycles then timeout

=== clamav ===

 # cat /etc/monit/conf.d/clamav
 check process ClamAV with pidfile /var/run/clamav/clamd.pid
    group virus
    start program = &quot;/etc/init.d/clamav-daemon start&quot;
    stop  program = &quot;/etc/init.d/clamav-daemon stop&quot;
    if 5 restarts within 5 cycles then timeout
    depends on clamavd_bin
 
  check file clamavd_bin with path /usr/sbin/clamd
    group virus
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor

=== dovecot ===

 # cat /etc/monit/conf.d/dovecot
 check process Dovecot with pidfile /var/run/dovecot/master.pid
    start program = &quot;/etc/init.d/dovecot start&quot;
    stop program = &quot;/etc/init.d/dovecot stop&quot;
    group mail
    if failed host mail.zehome.org port 993 type tcpssl sslauto protocol imap for 5 cycles then restart
    if 3 restarts within 5 cycles then timeout
    depends dovecot_init
    depends dovecot_bin
 check file dovecot_init with path /etc/init.d/dovecot
    group mail
 check file dovecot_bin with path /usr/sbin/dovecot
    group mail

=== fail2ban ===

 # cat /etc/monit/conf.d/fail2ban
 check process Fail2ban with pidfile /var/run/fail2ban/fail2ban.pid
        start program = &quot;/etc/init.d/fail2ban start&quot; with timeout 60 seconds
        stop program  = &quot;/etc/init.d/fail2ban stop&quot;

=== fetchmail ===

 # cat /etc/monit/conf.d/fetchmail
 check process Fetchmail with pidfile /var/run/fetchmail/fetchmail.pid
        start program = &quot;/etc/init.d/fetchmail start&quot; with timeout 60 seconds
        stop program  = &quot;/etc/init.d/fetchmail stop&quot;

=== freeradius ===

 # cat /etc/monit/conf.d/freeradius
 check process Freeradius with pidfile /var/run/freeradius/freeradius.pid
        start program = &quot;/etc/init.d/freeradius start&quot; with timeout 60 seconds
        stop program  = &quot;/etc/init.d/freeradius stop&quot;
        if failed host 10.9.8.3 port 1812 type udp then restart
        if failed host 10.9.8.3 port 1813 type udp then restart
        if failed host 10.9.8.3 port 1814 type udp then restart

=== imapproxyd ===

 # cat /etc/monit/conf.d/imapproxyd
 check process Imapproxy with pidfile /var/run/imapproxy.pid
        start program = &quot;/etc/init.d/imapproxy start&quot; with timeout 60 seconds
        stop program  = &quot;/etc/init.d/imapproxy stop&quot;
        if failed host 10.9.8.3 port 1143 then restart

=== mysql ===

 # cat /etc/monit/conf.d/mysql 
 check process MySql with pidfile /var/run/mysqld/mysqld.pid
    group mysql
    start program = &quot;/etc/init.d/mysql start&quot;
    stop program = &quot;/etc/init.d/mysql stop&quot;
    if failed host localhost port 3306 protocol mysql then restart
    if 5 restarts within 5 cycles then timeout
    depends on mysql_bin
    depends on mysql_rc
 
  check file mysql_bin with path /usr/sbin/mysqld
    group mysql
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor
 
  check file mysql_rc with path /etc/init.d/mysql
    group mysql
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor

=== postfix ===

 # cat /etc/monit/conf.d/postfix
 check process Postfix with pidfile /var/spool/postfix/pid/master.pid
    group mail
    start program = &quot;/etc/init.d/postfix start&quot;
    stop  program = &quot;/etc/init.d/postfix stop&quot;
    if failed host 10.9.8.3 port 25 protocol smtp then restart
    if 5 restarts within 5 cycles then timeout
    depends on postfix_rc
 
  check file postfix_rc with path /etc/init.d/postfix
    group mail
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor

=== rsyslogd ===

 # cat /etc/monit/conf.d/rsyslogd 
 check process Rsyslogd with pidfile /var/run/rsyslogd.pid
    start program = &quot;/etc/init.d/rsyslog start&quot;
    stop program = &quot;/etc/init.d/rsyslog stop&quot;
    if 5 restarts within 5 cycles then timeout
 check file rsyslogd_file with path /var/log/syslog

=== spamassassin ===

 # cat /etc/monit/conf.d/spamassassin
 check process Spamassassin with pidfile /var/run/spamd.pid
    group mail
    start program = &quot;/etc/init.d/spamassassin start&quot;
    stop  program = &quot;/etc/init.d/spamassassin stop&quot;
    if 5 restarts within 5 cycles then timeout
    if cpu usage &gt; 99% for 5 cycles then alert
    if mem usage &gt; 99% for 5 cycles then alert
    depends on spamd_bin
    depends on spamd_rc 
 
  check file spamd_bin with path /usr/bin/spamassassin
    group mail
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor
 
  check file spamd_rc with path /etc/init.d/spamassassin
    group mail
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor

=== sshd ===

 # cat /etc/monit/conf.d/sshd
 check process SSH with pidfile /var/run/sshd.pid
        start program = &quot;/etc/init.d/ssh start&quot; with timeout 60 seconds
        stop program  = &quot;/etc/init.d/ssh stop&quot;
        if failed host 10.9.8.3 port 22 then restart

== Logging ==

Vous pouvez archiver les logs dans /var/log/syslog:
Ajoutez ceci à /etc/monit/monitrc

 set logfile syslog facility log_daemon

Si comme moi vous préférez séparer les logs, insérez ceci:

 set logfile /var/log/monit.log

Et n'oubliez pas de prévoir une rotation...

 nano /etc/logrotate.d/monit

 /var/log/monit.log {
     missingok
     notifempty
     size 100k
     create 0644 root root
     postrotate
         /bin/kill -HUP `cat /var/run/monit.pid 2&gt;/dev/null` 2&gt; /dev/null || true
     endscript
 }

== Les alertes par email ==

Ajoutez ceci à /etc/monit/monitrc:

 set mailserver vanille.zehome.org
 set alert admin@zehome.org
 set mail-format { from: monit@vanille.zehome.org }

Au redémarrage de monit vous recevrez un message dans votre boite mail:

 monit alert -- Monit instance changed vanille.zehome.org

 Monit instance changed Service vanille.zehome.org 
 
 	Date:        Tue, 23 Aug 2011 14:55:10 +0300
 	Action:      start
 	Host:        vanille.zehome.org
 	Description: Monit started
 
 Your faithful employee,
 monit

En cas de service qui s'arrêterais...

 Objet: monit alert -- Does not exist Freeradius

 Does not exist Service Freeradius 
 
 	Date:        Tue, 23 Aug 2011 14:59:35 +0300
 	Action:      restart
 	Host:        vanille.zehome.org
 	Description: process is not running
 
 Your faithful employee,
 monit

Puis peu de temps plus tard...

 Objet: monit alert -- Exists Freeradius


Les options sont très nombreuses, vous pouvez par exemple décider d'être averti de façon différente service par service.
Vous pouvez aussi décider ne n'être averti que pour certaines alertes:

En voici la liste:

   alert foo@bar on { action
                      checksum
                      content
                      data
                      exec
                      gid
                      icmp
                      invalid
                      fsflags
                      nonexist
                      permission
                      pid
                      ppid
                      size
                      timeout
                      timestamp }

== Et avec ssl ==

 root@vanille:~# openssl req -new -x509 -days 365 -nodes -out /etc/ssl/private/monit.pem -keyout /etc/ssl/private/monit.pem
 Generating a 1024 bit RSA private key
 ..............++++++
 ..............++++++
 writing new private key to '/etc/ssl/private/monit.pem'
 -----
 You are about to be asked to enter information that will be incorporated
 into your certificate request.
 What you are about to enter is what is called a Distinguished Name or a DN.
 There are quite a few fields but you can leave some blank
 For some fields there will be a default value,
 If you enter '.', the field will be left blank.
 -----
 Country Name (2 letter code) [AU]:MG
 State or Province Name (full name) [Some-State]:Ihorombe
 Locality Name (eg, city) []:Ranohira 
 Organization Name (eg, company) [Internet Widgits Pty Ltd]:Net
 Organizational Unit Name (eg, section) []:SHI
 Common Name (eg, YOUR name) []:vanille.zehome.org    
 Email Address []:admin@zehome.org

 root@vanille:~# openssl gendh 512 &gt;&gt; /etc/ssl/private/monit.pem
 Generating DH parameters, 512 bit long safe prime, generator 2
 This is going to take a long time
 ............++*++*++*++*++*++*

 root@vanille:~# openssl x509 -subject -dates -fingerprint -noout -in /etc/ssl/private/monit.pem
 subject= /C=MG/ST=Ihorombe/L=Ranohira/O=Net/OU=SHI/CN=vanille.zehome.org/emailAddress=admin@zehome.org
 notBefore=Aug 23 09:04:36 2011 GMT
 notAfter=Aug 22 09:04:36 2012 GMT
 SHA1 Fingerprint=15:DF:66:74:4C:B2:58:FF:0B:AF:1C:8B:D2:9A:63:65:5A:06:E5:D8

 root@vanille:~# chmod 700 /etc/ssl/private/monit.pem

 root@vanille:~# nano /etc/monit/monitrc

 set daemon  60
 set httpd port 2812
         ssl enable
         pemfile /etc/ssl/private/monit.pem
         allow admin:test
 
 include /etc/monit/conf.d/*

== Ecran final ==

En guise de conclusion: Testez chaque service avant de vous fier aux résultats...
'''Surveillez les logs de monit, stoppez service par service et vérifiez la réaction de monit!'''

L'alerte doit être envoyée, le service redémarré.

Rendez-vous sur

 https://votre.domaine.org:2812/
ou
 https://votre_ip:2812/

[[Fichier:Monit4.jpeg|480px]]

== Sources ==

* {{en}} [http://mmonit.com/monit/ Site officiel]
* {{en}} [http://mmonit.com/monit/documentation/monit.html Manuel]
* {{en}} [http://mmonit.com/wiki/Monit/ConfigurationExamples Exemples de services]
* {{en}} [http://www.howtoforge.com/server_monitoring_with_munin_monit_debian_etch_p2 Installation sur une etch - c'est pas jeune...]

[[Catégorie:Logiciels]]</text>
      <sha1>aaqh77pc0tydi66egr4iyr09f95gaq4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3388</id>
      <parentid>3387</parentid>
      <timestamp>2011-08-24T05:09:31Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* apache2 */</comment>
      <text xml:space="preserve" bytes="15546">'''Monit''' est utilisé pour surveiller les processus &quot;daemon&quot; - démons en français, programme qui tournent en arrière plan - ou des programmes similaires sur votre serveur local.

Monit est particulièrement utile pour les processus démons lancés au démarrage du système à partir de /etc/init.d/ (sendmail, sshd, apache, mysql...)

A la différence de nombreux systèmes de surveillance, Monit peut en plus agir en cas de situation d'erreur; Par exemple, si sendmail s'arrête, Monit peut le relancer; Si Apache utilise trop de ressources (en cas d'attaque DoS est en cours) Monit peut arrêter et/ou redémarrer Apache puis vous envoyer un message d'alerte.

'''Monit''' peut également surveiller l'état des processus et détecter par exemple les processus zombie ou qui utilisent trop de CPU.

Vous pouvez également utiliser '''Monit''' pour surveiller des fichiers, répertoires et systèmes de fichiers sur votre serveur local. Vous pouvez aussi contrôler le checksum MD5 de fichiers qui ne devraient pas changer...

Même s'il n'est pas fait pour ça Monit peut surveiller des hôtes distants.

Vous pouvez suivre l'état de votre système (utilisation du CPU, la mémoire et la charge moyenne)

== Installation ==

 # apt-get install monit

== Pour les impatients ==

Nous allons activer monit et accéder tout de suite à l'interface Web

 root@vanille:~# nano /etc/default/monit

 # You must set this variable to for monit to start
 startup=1

 root@vanille:~# mn /etc/monit/monitrc /etc/monit/monitrc.ori

 set daemon  60
  set httpd port 2812 and
     allow admin:test

 root@vanille:~# service monit start
 Starting daemon monitor: monit.

[[Fichier:Monit1.jpeg|480px]]

[[Fichier:Monit2.jpeg|480px]]

Bien entendu cette configuration est très insufisante; A part savoir que votre serveur est en fonction, vous n'avez pas beaucoup d'autres informations...
De plus l'interface n'est pas sécurisée...

== Explication des règles ==

D'une façon générale, les règles de surveillance s'articulent comme ceci:

*Surveillance d'un processus (le fichier PID du service);
*Les commandes pour arrêter et démarrer les processus surveillés;
*L'utilisateur système du service,
*La condition de test à effectuer:
#Interfaces et ports ou ces processus doivent écouter (par défaut localhost si vous ne précisez rien);
#Charge du CPU par service;
#Fichiers (s'ils existent, leur checksum...).
#...
*La commande a effectuer en cas d'échec

'''Pensez à surveiller les services sur les bonnes interfaces...'''
Inutile par exemple de surveiller ssh sur localhost alors que vous en avez besoin sur eth0...

Les possibilités sont très grandes, et la finesse de la surveillance tout autant. N'hésitez pas à lire les documentations elles regorgent d'astuces.

== Plus de services ==

Voici quelques exemples de services à surveiller.
Les fichiers sont à placer dans /etc/monit/conf.d

=== amavis ===

 # cat /etc/monit/conf.d/amavis
 check process Amavisd-new with pidfile /var/run/amavis/amavisd.pid
    group mail
    start program = &quot;/etc/init.d/amavis start&quot;
    stop  program = &quot;/etc/init.d/amavis stop&quot;
    if failed port 10024 protocol smtp then restart
    if 5 restarts within 5 cycles then timeout
    depends on amavisd_bin
 
  check file amavisd_bin with path /usr/sbin/amavisd-new
    group mail
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor

=== apache2 ===

 # cat /etc/monit/conf.d/apache2
 check process apache with pidfile /var/run/apache2.pid group www
         start program = &quot;/etc/init.d/apache2 start&quot;
         stop program = &quot;/etc/init.d/apache2 stop&quot;
         if failed host vanille.zehome.org port 80 protocol http
            and request &quot;/monit/token&quot; then restart
         if  cpu is greater than 60% for 2 cycles then alert
         if cpu &gt; 80%  for 5 cycles then restart
         if totalmem &gt; 500 MB for 5 cycles then restart
         if children &gt; 250 then restart
         if loadavg(5min) greater than 10 for 8 cycles then stop
         if 3 restarts within 5 cycles then timeout

Sans oublier de créer le fichier 'token' sur votre serveur...

 root@vanille:~# su www-data
 $ cd
 $ mkdir monit
 $ cd monit
 $ touch token
 $ exit

Du coup votre &quot;access.log&quot; va se remplir avec ceci:

 127.0.1.1 - - [24/Aug/2011:07:31:19 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;
 127.0.1.1 - - [24/Aug/2011:07:32:25 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;
 127.0.1.1 - - [24/Aug/2011:07:33:31 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;
 127.0.1.1 - - [24/Aug/2011:07:34:37 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;
 127.0.1.1 - - [24/Aug/2011:07:35:43 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;
 127.0.1.1 - - [24/Aug/2011:07:36:49 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;
 127.0.1.1 - - [24/Aug/2011:07:37:55 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;

Pour éviter cela, ajoutez ceci:

 SetEnvIf        Request_URI &quot;^\/monit\/token$&quot; dontlog

Puis ajoutez '''env=!dontlog''' à la fin de la ligne CustomLog...

 CustomLog ${APACHE_LOG_DIR}/access.log combined env=!dontlog

Dans votre fichier /etc/apache2/sites-available/default

=== bind9 ===

 # cat /etc/monit/conf.d/bind9
 check process Bind9 with pidfile /var/run/named/named.pid
        start program = &quot;/etc/init.d/bind9 start&quot;
        stop program  = &quot;/etc/init.d/bind9 stop&quot;
        if failed port 53 use type udp protocol dns then restart
        if 3 restarts within 5 cycles then timeout

=== clamav ===

 # cat /etc/monit/conf.d/clamav
 check process ClamAV with pidfile /var/run/clamav/clamd.pid
    group virus
    start program = &quot;/etc/init.d/clamav-daemon start&quot;
    stop  program = &quot;/etc/init.d/clamav-daemon stop&quot;
    if 5 restarts within 5 cycles then timeout
    depends on clamavd_bin
 
  check file clamavd_bin with path /usr/sbin/clamd
    group virus
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor

=== dovecot ===

 # cat /etc/monit/conf.d/dovecot
 check process Dovecot with pidfile /var/run/dovecot/master.pid
    start program = &quot;/etc/init.d/dovecot start&quot;
    stop program = &quot;/etc/init.d/dovecot stop&quot;
    group mail
    if failed host mail.zehome.org port 993 type tcpssl sslauto protocol imap for 5 cycles then restart
    if 3 restarts within 5 cycles then timeout
    depends dovecot_init
    depends dovecot_bin
 check file dovecot_init with path /etc/init.d/dovecot
    group mail
 check file dovecot_bin with path /usr/sbin/dovecot
    group mail

=== fail2ban ===

 # cat /etc/monit/conf.d/fail2ban
 check process Fail2ban with pidfile /var/run/fail2ban/fail2ban.pid
        start program = &quot;/etc/init.d/fail2ban start&quot; with timeout 60 seconds
        stop program  = &quot;/etc/init.d/fail2ban stop&quot;

=== fetchmail ===

 # cat /etc/monit/conf.d/fetchmail
 check process Fetchmail with pidfile /var/run/fetchmail/fetchmail.pid
        start program = &quot;/etc/init.d/fetchmail start&quot; with timeout 60 seconds
        stop program  = &quot;/etc/init.d/fetchmail stop&quot;

=== freeradius ===

 # cat /etc/monit/conf.d/freeradius
 check process Freeradius with pidfile /var/run/freeradius/freeradius.pid
        start program = &quot;/etc/init.d/freeradius start&quot; with timeout 60 seconds
        stop program  = &quot;/etc/init.d/freeradius stop&quot;
        if failed host 10.9.8.3 port 1812 type udp then restart
        if failed host 10.9.8.3 port 1813 type udp then restart
        if failed host 10.9.8.3 port 1814 type udp then restart

=== imapproxyd ===

 # cat /etc/monit/conf.d/imapproxyd
 check process Imapproxy with pidfile /var/run/imapproxy.pid
        start program = &quot;/etc/init.d/imapproxy start&quot; with timeout 60 seconds
        stop program  = &quot;/etc/init.d/imapproxy stop&quot;
        if failed host 10.9.8.3 port 1143 then restart

=== mysql ===

 # cat /etc/monit/conf.d/mysql 
 check process MySql with pidfile /var/run/mysqld/mysqld.pid
    group mysql
    start program = &quot;/etc/init.d/mysql start&quot;
    stop program = &quot;/etc/init.d/mysql stop&quot;
    if failed host localhost port 3306 protocol mysql then restart
    if 5 restarts within 5 cycles then timeout
    depends on mysql_bin
    depends on mysql_rc
 
  check file mysql_bin with path /usr/sbin/mysqld
    group mysql
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor
 
  check file mysql_rc with path /etc/init.d/mysql
    group mysql
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor

=== postfix ===

 # cat /etc/monit/conf.d/postfix
 check process Postfix with pidfile /var/spool/postfix/pid/master.pid
    group mail
    start program = &quot;/etc/init.d/postfix start&quot;
    stop  program = &quot;/etc/init.d/postfix stop&quot;
    if failed host 10.9.8.3 port 25 protocol smtp then restart
    if 5 restarts within 5 cycles then timeout
    depends on postfix_rc
 
  check file postfix_rc with path /etc/init.d/postfix
    group mail
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor

=== rsyslogd ===

 # cat /etc/monit/conf.d/rsyslogd 
 check process Rsyslogd with pidfile /var/run/rsyslogd.pid
    start program = &quot;/etc/init.d/rsyslog start&quot;
    stop program = &quot;/etc/init.d/rsyslog stop&quot;
    if 5 restarts within 5 cycles then timeout
 check file rsyslogd_file with path /var/log/syslog

=== spamassassin ===

 # cat /etc/monit/conf.d/spamassassin
 check process Spamassassin with pidfile /var/run/spamd.pid
    group mail
    start program = &quot;/etc/init.d/spamassassin start&quot;
    stop  program = &quot;/etc/init.d/spamassassin stop&quot;
    if 5 restarts within 5 cycles then timeout
    if cpu usage &gt; 99% for 5 cycles then alert
    if mem usage &gt; 99% for 5 cycles then alert
    depends on spamd_bin
    depends on spamd_rc 
 
  check file spamd_bin with path /usr/bin/spamassassin
    group mail
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor
 
  check file spamd_rc with path /etc/init.d/spamassassin
    group mail
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor

=== sshd ===

 # cat /etc/monit/conf.d/sshd
 check process SSH with pidfile /var/run/sshd.pid
        start program = &quot;/etc/init.d/ssh start&quot; with timeout 60 seconds
        stop program  = &quot;/etc/init.d/ssh stop&quot;
        if failed host 10.9.8.3 port 22 then restart

== Logging ==

Vous pouvez archiver les logs dans /var/log/syslog:
Ajoutez ceci à /etc/monit/monitrc

 set logfile syslog facility log_daemon

Si comme moi vous préférez séparer les logs, insérez ceci:

 set logfile /var/log/monit.log

Et n'oubliez pas de prévoir une rotation...

 nano /etc/logrotate.d/monit

 /var/log/monit.log {
     missingok
     notifempty
     size 100k
     create 0644 root root
     postrotate
         /bin/kill -HUP `cat /var/run/monit.pid 2&gt;/dev/null` 2&gt; /dev/null || true
     endscript
 }

== Les alertes par email ==

Ajoutez ceci à /etc/monit/monitrc:

 set mailserver vanille.zehome.org
 set alert admin@zehome.org
 set mail-format { from: monit@vanille.zehome.org }

Au redémarrage de monit vous recevrez un message dans votre boite mail:

 monit alert -- Monit instance changed vanille.zehome.org

 Monit instance changed Service vanille.zehome.org 
 
 	Date:        Tue, 23 Aug 2011 14:55:10 +0300
 	Action:      start
 	Host:        vanille.zehome.org
 	Description: Monit started
 
 Your faithful employee,
 monit

En cas de service qui s'arrêterais...

 Objet: monit alert -- Does not exist Freeradius

 Does not exist Service Freeradius 
 
 	Date:        Tue, 23 Aug 2011 14:59:35 +0300
 	Action:      restart
 	Host:        vanille.zehome.org
 	Description: process is not running
 
 Your faithful employee,
 monit

Puis peu de temps plus tard...

 Objet: monit alert -- Exists Freeradius


Les options sont très nombreuses, vous pouvez par exemple décider d'être averti de façon différente service par service.
Vous pouvez aussi décider ne n'être averti que pour certaines alertes:

En voici la liste:

   alert foo@bar on { action
                      checksum
                      content
                      data
                      exec
                      gid
                      icmp
                      invalid
                      fsflags
                      nonexist
                      permission
                      pid
                      ppid
                      size
                      timeout
                      timestamp }

== Et avec ssl ==

 root@vanille:~# openssl req -new -x509 -days 365 -nodes -out /etc/ssl/private/monit.pem -keyout /etc/ssl/private/monit.pem
 Generating a 1024 bit RSA private key
 ..............++++++
 ..............++++++
 writing new private key to '/etc/ssl/private/monit.pem'
 -----
 You are about to be asked to enter information that will be incorporated
 into your certificate request.
 What you are about to enter is what is called a Distinguished Name or a DN.
 There are quite a few fields but you can leave some blank
 For some fields there will be a default value,
 If you enter '.', the field will be left blank.
 -----
 Country Name (2 letter code) [AU]:MG
 State or Province Name (full name) [Some-State]:Ihorombe
 Locality Name (eg, city) []:Ranohira 
 Organization Name (eg, company) [Internet Widgits Pty Ltd]:Net
 Organizational Unit Name (eg, section) []:SHI
 Common Name (eg, YOUR name) []:vanille.zehome.org    
 Email Address []:admin@zehome.org

 root@vanille:~# openssl gendh 512 &gt;&gt; /etc/ssl/private/monit.pem
 Generating DH parameters, 512 bit long safe prime, generator 2
 This is going to take a long time
 ............++*++*++*++*++*++*

 root@vanille:~# openssl x509 -subject -dates -fingerprint -noout -in /etc/ssl/private/monit.pem
 subject= /C=MG/ST=Ihorombe/L=Ranohira/O=Net/OU=SHI/CN=vanille.zehome.org/emailAddress=admin@zehome.org
 notBefore=Aug 23 09:04:36 2011 GMT
 notAfter=Aug 22 09:04:36 2012 GMT
 SHA1 Fingerprint=15:DF:66:74:4C:B2:58:FF:0B:AF:1C:8B:D2:9A:63:65:5A:06:E5:D8

 root@vanille:~# chmod 700 /etc/ssl/private/monit.pem

 root@vanille:~# nano /etc/monit/monitrc

 set daemon  60
 set httpd port 2812
         ssl enable
         pemfile /etc/ssl/private/monit.pem
         allow admin:test
 
 include /etc/monit/conf.d/*

== Ecran final ==

En guise de conclusion: Testez chaque service avant de vous fier aux résultats...
'''Surveillez les logs de monit, stoppez service par service et vérifiez la réaction de monit!'''

L'alerte doit être envoyée, le service redémarré.

Rendez-vous sur

 https://votre.domaine.org:2812/
ou
 https://votre_ip:2812/

[[Fichier:Monit4.jpeg|480px]]

== Sources ==

* {{en}} [http://mmonit.com/monit/ Site officiel]
* {{en}} [http://mmonit.com/monit/documentation/monit.html Manuel]
* {{en}} [http://mmonit.com/wiki/Monit/ConfigurationExamples Exemples de services]
* {{en}} [http://www.howtoforge.com/server_monitoring_with_munin_monit_debian_etch_p2 Installation sur une etch - c'est pas jeune...]

[[Catégorie:Logiciels]]</text>
      <sha1>m14nyr7m7juf8xgyrcsxrfx8ouxj3pm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3389</id>
      <parentid>3388</parentid>
      <timestamp>2011-08-24T07:10:29Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="15543">'''Monit''' est utilisé pour surveiller les processus &quot;daemon&quot; - démons en français, programme qui tournent en arrière plan - ou des programmes similaires sur votre serveur local.

Monit est particulièrement utile pour les processus démons lancés au démarrage du système à partir de /etc/init.d/ (sendmail, sshd, apache, mysql...)

A la différence de nombreux systèmes de surveillance, Monit peut en plus agir en cas de situation d'erreur; Par exemple, si sendmail s'arrête, Monit peut le relancer; Si Apache utilise trop de ressources (en cas d'attaque DoS en cours) Monit peut arrêter et/ou redémarrer Apache puis vous envoyer un message d'alerte.

'''Monit''' peut également surveiller l'état des processus et détecter par exemple les processus zombie ou qui utilisent trop de CPU.

Vous pouvez également utiliser '''Monit''' pour surveiller des fichiers, répertoires et systèmes de fichiers sur votre serveur local. Vous pouvez aussi contrôler le checksum MD5 de fichiers qui ne devraient pas changer...

Même s'il n'est pas fait pour ça Monit peut surveiller des hôtes distants.

Vous pouvez suivre l'état de votre système (utilisation du CPU, la mémoire et la charge moyenne)

== Installation ==

 # apt-get install monit

== Pour les impatients ==

Nous allons activer monit et accéder tout de suite à l'interface Web

 root@vanille:~# nano /etc/default/monit

 # You must set this variable to for monit to start
 startup=1

 root@vanille:~# mn /etc/monit/monitrc /etc/monit/monitrc.ori

 set daemon  60
  set httpd port 2812 and
     allow admin:test

 root@vanille:~# service monit start
 Starting daemon monitor: monit.

[[Fichier:Monit1.jpeg|480px]]

[[Fichier:Monit2.jpeg|480px]]

Bien entendu cette configuration est très insuffisante; A part savoir que votre serveur est en fonction, vous n'avez pas beaucoup d'autres informations...
De plus l'interface n'est pas sécurisée...

== Explication des règles ==

D'une façon générale, les règles de surveillance s'articulent comme ceci:

*Surveillance d'un processus (le fichier PID du service);
*Les commandes pour arrêter et démarrer les processus surveillés;
*L'utilisateur système du service,
*La condition de test à effectuer:
#Interfaces et ports ou ces processus doivent écouter (par défaut localhost si vous ne précisez rien);
#Charge du CPU par service;
#Fichiers (s'ils existent, leur checksum...).
#...
*La commande a effectuer en cas d'échec

'''Pensez à surveiller les services sur les bonnes interfaces...'''
Inutile par exemple de surveiller ssh sur localhost alors que vous en avez besoin sur eth0...

Les possibilités sont très grandes, et la finesse de la surveillance tout autant. N'hésitez pas à lire les documentations elles regorgent d'astuces.

== Plus de services ==

Voici quelques exemples de services à surveiller.
Les fichiers sont à placer dans /etc/monit/conf.d

=== amavis ===

 # cat /etc/monit/conf.d/amavis
 check process Amavisd-new with pidfile /var/run/amavis/amavisd.pid
    group mail
    start program = &quot;/etc/init.d/amavis start&quot;
    stop  program = &quot;/etc/init.d/amavis stop&quot;
    if failed port 10024 protocol smtp then restart
    if 5 restarts within 5 cycles then timeout
    depends on amavisd_bin
 
  check file amavisd_bin with path /usr/sbin/amavisd-new
    group mail
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor

=== apache2 ===

 # cat /etc/monit/conf.d/apache2
 check process apache with pidfile /var/run/apache2.pid group www
         start program = &quot;/etc/init.d/apache2 start&quot;
         stop program = &quot;/etc/init.d/apache2 stop&quot;
         if failed host vanille.zehome.org port 80 protocol http
            and request &quot;/monit/token&quot; then restart
         if  cpu is greater than 60% for 2 cycles then alert
         if cpu &gt; 80%  for 5 cycles then restart
         if totalmem &gt; 500 MB for 5 cycles then restart
         if children &gt; 250 then restart
         if loadavg(5min) greater than 10 for 8 cycles then stop
         if 3 restarts within 5 cycles then timeout

Sans oublier de créer le fichier 'token' sur votre serveur...

 root@vanille:~# su www-data
 $ cd
 $ mkdir monit
 $ cd monit
 $ touch token
 $ exit

Du coup votre &quot;access.log&quot; va se remplir avec ceci:

 127.0.1.1 - - [24/Aug/2011:07:31:19 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;
 127.0.1.1 - - [24/Aug/2011:07:32:25 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;
 127.0.1.1 - - [24/Aug/2011:07:33:31 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;
 127.0.1.1 - - [24/Aug/2011:07:34:37 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;
 127.0.1.1 - - [24/Aug/2011:07:35:43 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;
 127.0.1.1 - - [24/Aug/2011:07:36:49 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;
 127.0.1.1 - - [24/Aug/2011:07:37:55 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;

Pour éviter cela, ajoutez ceci:

 SetEnvIf        Request_URI &quot;^\/monit\/token$&quot; dontlog

Puis ajoutez '''env=!dontlog''' à la fin de la ligne CustomLog...

 CustomLog ${APACHE_LOG_DIR}/access.log combined env=!dontlog

Dans votre fichier /etc/apache2/sites-available/default

=== bind9 ===

 # cat /etc/monit/conf.d/bind9
 check process Bind9 with pidfile /var/run/named/named.pid
        start program = &quot;/etc/init.d/bind9 start&quot;
        stop program  = &quot;/etc/init.d/bind9 stop&quot;
        if failed port 53 use type udp protocol dns then restart
        if 3 restarts within 5 cycles then timeout

=== clamav ===

 # cat /etc/monit/conf.d/clamav
 check process ClamAV with pidfile /var/run/clamav/clamd.pid
    group virus
    start program = &quot;/etc/init.d/clamav-daemon start&quot;
    stop  program = &quot;/etc/init.d/clamav-daemon stop&quot;
    if 5 restarts within 5 cycles then timeout
    depends on clamavd_bin
 
  check file clamavd_bin with path /usr/sbin/clamd
    group virus
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor

=== dovecot ===

 # cat /etc/monit/conf.d/dovecot
 check process Dovecot with pidfile /var/run/dovecot/master.pid
    start program = &quot;/etc/init.d/dovecot start&quot;
    stop program = &quot;/etc/init.d/dovecot stop&quot;
    group mail
    if failed host mail.zehome.org port 993 type tcpssl sslauto protocol imap for 5 cycles then restart
    if 3 restarts within 5 cycles then timeout
    depends dovecot_init
    depends dovecot_bin
 check file dovecot_init with path /etc/init.d/dovecot
    group mail
 check file dovecot_bin with path /usr/sbin/dovecot
    group mail

=== fail2ban ===

 # cat /etc/monit/conf.d/fail2ban
 check process Fail2ban with pidfile /var/run/fail2ban/fail2ban.pid
        start program = &quot;/etc/init.d/fail2ban start&quot; with timeout 60 seconds
        stop program  = &quot;/etc/init.d/fail2ban stop&quot;

=== fetchmail ===

 # cat /etc/monit/conf.d/fetchmail
 check process Fetchmail with pidfile /var/run/fetchmail/fetchmail.pid
        start program = &quot;/etc/init.d/fetchmail start&quot; with timeout 60 seconds
        stop program  = &quot;/etc/init.d/fetchmail stop&quot;

=== freeradius ===

 # cat /etc/monit/conf.d/freeradius
 check process Freeradius with pidfile /var/run/freeradius/freeradius.pid
        start program = &quot;/etc/init.d/freeradius start&quot; with timeout 60 seconds
        stop program  = &quot;/etc/init.d/freeradius stop&quot;
        if failed host 10.9.8.3 port 1812 type udp then restart
        if failed host 10.9.8.3 port 1813 type udp then restart
        if failed host 10.9.8.3 port 1814 type udp then restart

=== imapproxyd ===

 # cat /etc/monit/conf.d/imapproxyd
 check process Imapproxy with pidfile /var/run/imapproxy.pid
        start program = &quot;/etc/init.d/imapproxy start&quot; with timeout 60 seconds
        stop program  = &quot;/etc/init.d/imapproxy stop&quot;
        if failed host 10.9.8.3 port 1143 then restart

=== mysql ===

 # cat /etc/monit/conf.d/mysql 
 check process MySql with pidfile /var/run/mysqld/mysqld.pid
    group mysql
    start program = &quot;/etc/init.d/mysql start&quot;
    stop program = &quot;/etc/init.d/mysql stop&quot;
    if failed host localhost port 3306 protocol mysql then restart
    if 5 restarts within 5 cycles then timeout
    depends on mysql_bin
    depends on mysql_rc
 
  check file mysql_bin with path /usr/sbin/mysqld
    group mysql
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor
 
  check file mysql_rc with path /etc/init.d/mysql
    group mysql
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor

=== postfix ===

 # cat /etc/monit/conf.d/postfix
 check process Postfix with pidfile /var/spool/postfix/pid/master.pid
    group mail
    start program = &quot;/etc/init.d/postfix start&quot;
    stop  program = &quot;/etc/init.d/postfix stop&quot;
    if failed host 10.9.8.3 port 25 protocol smtp then restart
    if 5 restarts within 5 cycles then timeout
    depends on postfix_rc
 
  check file postfix_rc with path /etc/init.d/postfix
    group mail
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor

=== rsyslogd ===

 # cat /etc/monit/conf.d/rsyslogd 
 check process Rsyslogd with pidfile /var/run/rsyslogd.pid
    start program = &quot;/etc/init.d/rsyslog start&quot;
    stop program = &quot;/etc/init.d/rsyslog stop&quot;
    if 5 restarts within 5 cycles then timeout
 check file rsyslogd_file with path /var/log/syslog

=== spamassassin ===

 # cat /etc/monit/conf.d/spamassassin
 check process Spamassassin with pidfile /var/run/spamd.pid
    group mail
    start program = &quot;/etc/init.d/spamassassin start&quot;
    stop  program = &quot;/etc/init.d/spamassassin stop&quot;
    if 5 restarts within 5 cycles then timeout
    if cpu usage &gt; 99% for 5 cycles then alert
    if mem usage &gt; 99% for 5 cycles then alert
    depends on spamd_bin
    depends on spamd_rc 
 
  check file spamd_bin with path /usr/bin/spamassassin
    group mail
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor
 
  check file spamd_rc with path /etc/init.d/spamassassin
    group mail
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor

=== sshd ===

 # cat /etc/monit/conf.d/sshd
 check process SSH with pidfile /var/run/sshd.pid
        start program = &quot;/etc/init.d/ssh start&quot; with timeout 60 seconds
        stop program  = &quot;/etc/init.d/ssh stop&quot;
        if failed host 10.9.8.3 port 22 then restart

== Logging ==

Vous pouvez archiver les logs dans /var/log/syslog:
Ajoutez ceci à /etc/monit/monitrc

 set logfile syslog facility log_daemon

Si comme moi vous préférez séparer les logs, insérez ceci:

 set logfile /var/log/monit.log

Et n'oubliez pas de prévoir une rotation...

 nano /etc/logrotate.d/monit

 /var/log/monit.log {
     missingok
     notifempty
     size 100k
     create 0644 root root
     postrotate
         /bin/kill -HUP `cat /var/run/monit.pid 2&gt;/dev/null` 2&gt; /dev/null || true
     endscript
 }

== Les alertes par email ==

Ajoutez ceci à /etc/monit/monitrc:

 set mailserver vanille.zehome.org
 set alert admin@zehome.org
 set mail-format { from: monit@vanille.zehome.org }

Au redémarrage de monit vous recevrez un message dans votre boite mail:

 monit alert -- Monit instance changed vanille.zehome.org

 Monit instance changed Service vanille.zehome.org 
 
 	Date:        Tue, 23 Aug 2011 14:55:10 +0300
 	Action:      start
 	Host:        vanille.zehome.org
 	Description: Monit started
 
 Your faithful employee,
 monit

En cas de service qui s'arrêterais...

 Objet: monit alert -- Does not exist Freeradius

 Does not exist Service Freeradius 
 
 	Date:        Tue, 23 Aug 2011 14:59:35 +0300
 	Action:      restart
 	Host:        vanille.zehome.org
 	Description: process is not running
 
 Your faithful employee,
 monit

Puis peu de temps plus tard...

 Objet: monit alert -- Exists Freeradius


Les options sont très nombreuses, vous pouvez par exemple décider d'être averti de façon différente service par service.
Vous pouvez aussi décider ne n'être averti que pour certaines alertes:

En voici la liste:

   alert foo@bar on { action
                      checksum
                      content
                      data
                      exec
                      gid
                      icmp
                      invalid
                      fsflags
                      nonexist
                      permission
                      pid
                      ppid
                      size
                      timeout
                      timestamp }

== Et avec ssl ==

 root@vanille:~# openssl req -new -x509 -days 365 -nodes -out /etc/ssl/private/monit.pem -keyout /etc/ssl/private/monit.pem
 Generating a 1024 bit RSA private key
 ..............++++++
 ..............++++++
 writing new private key to '/etc/ssl/private/monit.pem'
 -----
 You are about to be asked to enter information that will be incorporated
 into your certificate request.
 What you are about to enter is what is called a Distinguished Name or a DN.
 There are quite a few fields but you can leave some blank
 For some fields there will be a default value,
 If you enter '.', the field will be left blank.
 -----
 Country Name (2 letter code) [AU]:MG
 State or Province Name (full name) [Some-State]:Ihorombe
 Locality Name (eg, city) []:Ranohira 
 Organization Name (eg, company) [Internet Widgits Pty Ltd]:Net
 Organizational Unit Name (eg, section) []:SHI
 Common Name (eg, YOUR name) []:vanille.zehome.org    
 Email Address []:admin@zehome.org

 root@vanille:~# openssl gendh 512 &gt;&gt; /etc/ssl/private/monit.pem
 Generating DH parameters, 512 bit long safe prime, generator 2
 This is going to take a long time
 ............++*++*++*++*++*++*

 root@vanille:~# openssl x509 -subject -dates -fingerprint -noout -in /etc/ssl/private/monit.pem
 subject= /C=MG/ST=Ihorombe/L=Ranohira/O=Net/OU=SHI/CN=vanille.zehome.org/emailAddress=admin@zehome.org
 notBefore=Aug 23 09:04:36 2011 GMT
 notAfter=Aug 22 09:04:36 2012 GMT
 SHA1 Fingerprint=15:DF:66:74:4C:B2:58:FF:0B:AF:1C:8B:D2:9A:63:65:5A:06:E5:D8

 root@vanille:~# chmod 700 /etc/ssl/private/monit.pem

 root@vanille:~# nano /etc/monit/monitrc

 set daemon  60
 set httpd port 2812
         ssl enable
         pemfile /etc/ssl/private/monit.pem
         allow admin:test
 
 include /etc/monit/conf.d/*

== Ecran final ==

En guise de conclusion: Testez chaque service avant de vous fier aux résultats...
'''Surveillez les logs de monit, stoppez service par service et vérifiez la réaction de monit!'''

L'alerte doit être envoyée, le service redémarré.

Rendez-vous sur

 https://votre.domaine.org:2812/
ou
 https://votre_ip:2812/

[[Fichier:Monit4.jpeg|480px]]

== Sources ==

* {{en}} [http://mmonit.com/monit/ Site officiel]
* {{en}} [http://mmonit.com/monit/documentation/monit.html Manuel]
* {{en}} [http://mmonit.com/wiki/Monit/ConfigurationExamples Exemples de services]
* {{en}} [http://www.howtoforge.com/server_monitoring_with_munin_monit_debian_etch_p2 Installation sur une etch - c'est pas jeune...]

[[Catégorie:Logiciels]]</text>
      <sha1>80tf0esydk2t9tbswq2rd1lvaa2k17q</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4193</id>
      <parentid>3389</parentid>
      <timestamp>2012-05-06T05:02:27Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Pour les impatients */</comment>
      <text xml:space="preserve" bytes="15729">'''Monit''' est utilisé pour surveiller les processus &quot;daemon&quot; - démons en français, programme qui tournent en arrière plan - ou des programmes similaires sur votre serveur local.

Monit est particulièrement utile pour les processus démons lancés au démarrage du système à partir de /etc/init.d/ (sendmail, sshd, apache, mysql...)

A la différence de nombreux systèmes de surveillance, Monit peut en plus agir en cas de situation d'erreur; Par exemple, si sendmail s'arrête, Monit peut le relancer; Si Apache utilise trop de ressources (en cas d'attaque DoS en cours) Monit peut arrêter et/ou redémarrer Apache puis vous envoyer un message d'alerte.

'''Monit''' peut également surveiller l'état des processus et détecter par exemple les processus zombie ou qui utilisent trop de CPU.

Vous pouvez également utiliser '''Monit''' pour surveiller des fichiers, répertoires et systèmes de fichiers sur votre serveur local. Vous pouvez aussi contrôler le checksum MD5 de fichiers qui ne devraient pas changer...

Même s'il n'est pas fait pour ça Monit peut surveiller des hôtes distants.

Vous pouvez suivre l'état de votre système (utilisation du CPU, la mémoire et la charge moyenne)

== Installation ==

 # apt-get install monit

== Pour les impatients ==

Nous allons activer monit et accéder tout de suite à l'interface Web

 root@vanille:~# nano /etc/default/monit

 # You must set this variable to for monit to start
 startup=1

 root@vanille:~# cp /etc/monit/monitrc /etc/monit/monitrc.ori

Modifiez le fichier /etc/monit/monitrc pour qu'il ressemble à ceci:

 root@vanille:~# $editor /etc/monit/monitr

 set daemon  60
  set httpd port 2812 and
     allow admin:test

 root@vanille:~# service monit start
 Starting daemon monitor: monit.

Rendez-vous ensuite sur le service Web de Monit (http://votre_ip:2812)

[[Fichier:Monit1.jpeg|480px]]

[[Fichier:Monit2.jpeg|480px]]

Bien entendu cette configuration est très insuffisante; A part savoir que votre serveur est en fonction, vous n'avez pas beaucoup d'autres informations...
De plus l'interface n'est pas sécurisée...

== Explication des règles ==

D'une façon générale, les règles de surveillance s'articulent comme ceci:

*Surveillance d'un processus (le fichier PID du service);
*Les commandes pour arrêter et démarrer les processus surveillés;
*L'utilisateur système du service,
*La condition de test à effectuer:
#Interfaces et ports ou ces processus doivent écouter (par défaut localhost si vous ne précisez rien);
#Charge du CPU par service;
#Fichiers (s'ils existent, leur checksum...).
#...
*La commande a effectuer en cas d'échec

'''Pensez à surveiller les services sur les bonnes interfaces...'''
Inutile par exemple de surveiller ssh sur localhost alors que vous en avez besoin sur eth0...

Les possibilités sont très grandes, et la finesse de la surveillance tout autant. N'hésitez pas à lire les documentations elles regorgent d'astuces.

== Plus de services ==

Voici quelques exemples de services à surveiller.
Les fichiers sont à placer dans /etc/monit/conf.d

=== amavis ===

 # cat /etc/monit/conf.d/amavis
 check process Amavisd-new with pidfile /var/run/amavis/amavisd.pid
    group mail
    start program = &quot;/etc/init.d/amavis start&quot;
    stop  program = &quot;/etc/init.d/amavis stop&quot;
    if failed port 10024 protocol smtp then restart
    if 5 restarts within 5 cycles then timeout
    depends on amavisd_bin
 
  check file amavisd_bin with path /usr/sbin/amavisd-new
    group mail
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor

=== apache2 ===

 # cat /etc/monit/conf.d/apache2
 check process apache with pidfile /var/run/apache2.pid group www
         start program = &quot;/etc/init.d/apache2 start&quot;
         stop program = &quot;/etc/init.d/apache2 stop&quot;
         if failed host vanille.zehome.org port 80 protocol http
            and request &quot;/monit/token&quot; then restart
         if  cpu is greater than 60% for 2 cycles then alert
         if cpu &gt; 80%  for 5 cycles then restart
         if totalmem &gt; 500 MB for 5 cycles then restart
         if children &gt; 250 then restart
         if loadavg(5min) greater than 10 for 8 cycles then stop
         if 3 restarts within 5 cycles then timeout

Sans oublier de créer le fichier 'token' sur votre serveur...

 root@vanille:~# su www-data
 $ cd
 $ mkdir monit
 $ cd monit
 $ touch token
 $ exit

Du coup votre &quot;access.log&quot; va se remplir avec ceci:

 127.0.1.1 - - [24/Aug/2011:07:31:19 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;
 127.0.1.1 - - [24/Aug/2011:07:32:25 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;
 127.0.1.1 - - [24/Aug/2011:07:33:31 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;
 127.0.1.1 - - [24/Aug/2011:07:34:37 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;
 127.0.1.1 - - [24/Aug/2011:07:35:43 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;
 127.0.1.1 - - [24/Aug/2011:07:36:49 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;
 127.0.1.1 - - [24/Aug/2011:07:37:55 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;

Pour éviter cela, ajoutez ceci:

 SetEnvIf        Request_URI &quot;^\/monit\/token$&quot; dontlog

Puis ajoutez '''env=!dontlog''' à la fin de la ligne CustomLog...

 CustomLog ${APACHE_LOG_DIR}/access.log combined env=!dontlog

Dans votre fichier /etc/apache2/sites-available/default

=== bind9 ===

 # cat /etc/monit/conf.d/bind9
 check process Bind9 with pidfile /var/run/named/named.pid
        start program = &quot;/etc/init.d/bind9 start&quot;
        stop program  = &quot;/etc/init.d/bind9 stop&quot;
        if failed port 53 use type udp protocol dns then restart
        if 3 restarts within 5 cycles then timeout

=== clamav ===

 # cat /etc/monit/conf.d/clamav
 check process ClamAV with pidfile /var/run/clamav/clamd.pid
    group virus
    start program = &quot;/etc/init.d/clamav-daemon start&quot;
    stop  program = &quot;/etc/init.d/clamav-daemon stop&quot;
    if 5 restarts within 5 cycles then timeout
    depends on clamavd_bin
 
  check file clamavd_bin with path /usr/sbin/clamd
    group virus
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor

=== dovecot ===

 # cat /etc/monit/conf.d/dovecot
 check process Dovecot with pidfile /var/run/dovecot/master.pid
    start program = &quot;/etc/init.d/dovecot start&quot;
    stop program = &quot;/etc/init.d/dovecot stop&quot;
    group mail
    if failed host mail.zehome.org port 993 type tcpssl sslauto protocol imap for 5 cycles then restart
    if 3 restarts within 5 cycles then timeout
    depends dovecot_init
    depends dovecot_bin
 check file dovecot_init with path /etc/init.d/dovecot
    group mail
 check file dovecot_bin with path /usr/sbin/dovecot
    group mail

=== fail2ban ===

 # cat /etc/monit/conf.d/fail2ban
 check process Fail2ban with pidfile /var/run/fail2ban/fail2ban.pid
        start program = &quot;/etc/init.d/fail2ban start&quot; with timeout 60 seconds
        stop program  = &quot;/etc/init.d/fail2ban stop&quot;

=== fetchmail ===

 # cat /etc/monit/conf.d/fetchmail
 check process Fetchmail with pidfile /var/run/fetchmail/fetchmail.pid
        start program = &quot;/etc/init.d/fetchmail start&quot; with timeout 60 seconds
        stop program  = &quot;/etc/init.d/fetchmail stop&quot;

=== freeradius ===

 # cat /etc/monit/conf.d/freeradius
 check process Freeradius with pidfile /var/run/freeradius/freeradius.pid
        start program = &quot;/etc/init.d/freeradius start&quot; with timeout 60 seconds
        stop program  = &quot;/etc/init.d/freeradius stop&quot;
        if failed host 10.9.8.3 port 1812 type udp then restart
        if failed host 10.9.8.3 port 1813 type udp then restart
        if failed host 10.9.8.3 port 1814 type udp then restart

=== imapproxyd ===

 # cat /etc/monit/conf.d/imapproxyd
 check process Imapproxy with pidfile /var/run/imapproxy.pid
        start program = &quot;/etc/init.d/imapproxy start&quot; with timeout 60 seconds
        stop program  = &quot;/etc/init.d/imapproxy stop&quot;
        if failed host 10.9.8.3 port 1143 then restart

=== mysql ===

 # cat /etc/monit/conf.d/mysql 
 check process MySql with pidfile /var/run/mysqld/mysqld.pid
    group mysql
    start program = &quot;/etc/init.d/mysql start&quot;
    stop program = &quot;/etc/init.d/mysql stop&quot;
    if failed host localhost port 3306 protocol mysql then restart
    if 5 restarts within 5 cycles then timeout
    depends on mysql_bin
    depends on mysql_rc
 
  check file mysql_bin with path /usr/sbin/mysqld
    group mysql
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor
 
  check file mysql_rc with path /etc/init.d/mysql
    group mysql
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor

=== postfix ===

 # cat /etc/monit/conf.d/postfix
 check process Postfix with pidfile /var/spool/postfix/pid/master.pid
    group mail
    start program = &quot;/etc/init.d/postfix start&quot;
    stop  program = &quot;/etc/init.d/postfix stop&quot;
    if failed host 10.9.8.3 port 25 protocol smtp then restart
    if 5 restarts within 5 cycles then timeout
    depends on postfix_rc
 
  check file postfix_rc with path /etc/init.d/postfix
    group mail
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor

=== rsyslogd ===

 # cat /etc/monit/conf.d/rsyslogd 
 check process Rsyslogd with pidfile /var/run/rsyslogd.pid
    start program = &quot;/etc/init.d/rsyslog start&quot;
    stop program = &quot;/etc/init.d/rsyslog stop&quot;
    if 5 restarts within 5 cycles then timeout
 check file rsyslogd_file with path /var/log/syslog

=== spamassassin ===

 # cat /etc/monit/conf.d/spamassassin
 check process Spamassassin with pidfile /var/run/spamd.pid
    group mail
    start program = &quot;/etc/init.d/spamassassin start&quot;
    stop  program = &quot;/etc/init.d/spamassassin stop&quot;
    if 5 restarts within 5 cycles then timeout
    if cpu usage &gt; 99% for 5 cycles then alert
    if mem usage &gt; 99% for 5 cycles then alert
    depends on spamd_bin
    depends on spamd_rc 
 
  check file spamd_bin with path /usr/bin/spamassassin
    group mail
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor
 
  check file spamd_rc with path /etc/init.d/spamassassin
    group mail
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor

=== sshd ===

 # cat /etc/monit/conf.d/sshd
 check process SSH with pidfile /var/run/sshd.pid
        start program = &quot;/etc/init.d/ssh start&quot; with timeout 60 seconds
        stop program  = &quot;/etc/init.d/ssh stop&quot;
        if failed host 10.9.8.3 port 22 then restart

== Logging ==

Vous pouvez archiver les logs dans /var/log/syslog:
Ajoutez ceci à /etc/monit/monitrc

 set logfile syslog facility log_daemon

Si comme moi vous préférez séparer les logs, insérez ceci:

 set logfile /var/log/monit.log

Et n'oubliez pas de prévoir une rotation...

 nano /etc/logrotate.d/monit

 /var/log/monit.log {
     missingok
     notifempty
     size 100k
     create 0644 root root
     postrotate
         /bin/kill -HUP `cat /var/run/monit.pid 2&gt;/dev/null` 2&gt; /dev/null || true
     endscript
 }

== Les alertes par email ==

Ajoutez ceci à /etc/monit/monitrc:

 set mailserver vanille.zehome.org
 set alert admin@zehome.org
 set mail-format { from: monit@vanille.zehome.org }

Au redémarrage de monit vous recevrez un message dans votre boite mail:

 monit alert -- Monit instance changed vanille.zehome.org

 Monit instance changed Service vanille.zehome.org 
 
 	Date:        Tue, 23 Aug 2011 14:55:10 +0300
 	Action:      start
 	Host:        vanille.zehome.org
 	Description: Monit started
 
 Your faithful employee,
 monit

En cas de service qui s'arrêterais...

 Objet: monit alert -- Does not exist Freeradius

 Does not exist Service Freeradius 
 
 	Date:        Tue, 23 Aug 2011 14:59:35 +0300
 	Action:      restart
 	Host:        vanille.zehome.org
 	Description: process is not running
 
 Your faithful employee,
 monit

Puis peu de temps plus tard...

 Objet: monit alert -- Exists Freeradius


Les options sont très nombreuses, vous pouvez par exemple décider d'être averti de façon différente service par service.
Vous pouvez aussi décider ne n'être averti que pour certaines alertes:

En voici la liste:

   alert foo@bar on { action
                      checksum
                      content
                      data
                      exec
                      gid
                      icmp
                      invalid
                      fsflags
                      nonexist
                      permission
                      pid
                      ppid
                      size
                      timeout
                      timestamp }

== Et avec ssl ==

 root@vanille:~# openssl req -new -x509 -days 365 -nodes -out /etc/ssl/private/monit.pem -keyout /etc/ssl/private/monit.pem
 Generating a 1024 bit RSA private key
 ..............++++++
 ..............++++++
 writing new private key to '/etc/ssl/private/monit.pem'
 -----
 You are about to be asked to enter information that will be incorporated
 into your certificate request.
 What you are about to enter is what is called a Distinguished Name or a DN.
 There are quite a few fields but you can leave some blank
 For some fields there will be a default value,
 If you enter '.', the field will be left blank.
 -----
 Country Name (2 letter code) [AU]:MG
 State or Province Name (full name) [Some-State]:Ihorombe
 Locality Name (eg, city) []:Ranohira 
 Organization Name (eg, company) [Internet Widgits Pty Ltd]:Net
 Organizational Unit Name (eg, section) []:SHI
 Common Name (eg, YOUR name) []:vanille.zehome.org    
 Email Address []:admin@zehome.org

 root@vanille:~# openssl gendh 512 &gt;&gt; /etc/ssl/private/monit.pem
 Generating DH parameters, 512 bit long safe prime, generator 2
 This is going to take a long time
 ............++*++*++*++*++*++*

 root@vanille:~# openssl x509 -subject -dates -fingerprint -noout -in /etc/ssl/private/monit.pem
 subject= /C=MG/ST=Ihorombe/L=Ranohira/O=Net/OU=SHI/CN=vanille.zehome.org/emailAddress=admin@zehome.org
 notBefore=Aug 23 09:04:36 2011 GMT
 notAfter=Aug 22 09:04:36 2012 GMT
 SHA1 Fingerprint=15:DF:66:74:4C:B2:58:FF:0B:AF:1C:8B:D2:9A:63:65:5A:06:E5:D8

 root@vanille:~# chmod 700 /etc/ssl/private/monit.pem

 root@vanille:~# nano /etc/monit/monitrc

 set daemon  60
 set httpd port 2812
         ssl enable
         pemfile /etc/ssl/private/monit.pem
         allow admin:test
 
 include /etc/monit/conf.d/*

== Ecran final ==

En guise de conclusion: Testez chaque service avant de vous fier aux résultats...
'''Surveillez les logs de monit, stoppez service par service et vérifiez la réaction de monit!'''

L'alerte doit être envoyée, le service redémarré.

Rendez-vous sur

 https://votre.domaine.org:2812/
ou
 https://votre_ip:2812/

[[Fichier:Monit4.jpeg|480px]]

== Sources ==

* {{en}} [http://mmonit.com/monit/ Site officiel]
* {{en}} [http://mmonit.com/monit/documentation/monit.html Manuel]
* {{en}} [http://mmonit.com/wiki/Monit/ConfigurationExamples Exemples de services]
* {{en}} [http://www.howtoforge.com/server_monitoring_with_munin_monit_debian_etch_p2 Installation sur une etch - c'est pas jeune...]

[[Catégorie:Logiciels]]</text>
      <sha1>pyhb8kayhx8zk22tgny3fub5aupk68n</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4265</id>
      <parentid>4193</parentid>
      <timestamp>2012-05-20T05:59:03Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>/* Pour les impatients */ correction</comment>
      <text xml:space="preserve" bytes="15730">'''Monit''' est utilisé pour surveiller les processus &quot;daemon&quot; - démons en français, programme qui tournent en arrière plan - ou des programmes similaires sur votre serveur local.

Monit est particulièrement utile pour les processus démons lancés au démarrage du système à partir de /etc/init.d/ (sendmail, sshd, apache, mysql...)

A la différence de nombreux systèmes de surveillance, Monit peut en plus agir en cas de situation d'erreur; Par exemple, si sendmail s'arrête, Monit peut le relancer; Si Apache utilise trop de ressources (en cas d'attaque DoS en cours) Monit peut arrêter et/ou redémarrer Apache puis vous envoyer un message d'alerte.

'''Monit''' peut également surveiller l'état des processus et détecter par exemple les processus zombie ou qui utilisent trop de CPU.

Vous pouvez également utiliser '''Monit''' pour surveiller des fichiers, répertoires et systèmes de fichiers sur votre serveur local. Vous pouvez aussi contrôler le checksum MD5 de fichiers qui ne devraient pas changer...

Même s'il n'est pas fait pour ça Monit peut surveiller des hôtes distants.

Vous pouvez suivre l'état de votre système (utilisation du CPU, la mémoire et la charge moyenne)

== Installation ==

 # apt-get install monit

== Pour les impatients ==

Nous allons activer monit et accéder tout de suite à l'interface Web

 root@vanille:~# nano /etc/default/monit

 # You must set this variable to for monit to start
 startup=1

 root@vanille:~# cp /etc/monit/monitrc /etc/monit/monitrc.ori

Modifiez le fichier /etc/monit/monitrc pour qu'il ressemble à ceci:

 root@vanille:~# $editor /etc/monit/monitrc

 set daemon  60
  set httpd port 2812 and
     allow admin:test

 root@vanille:~# service monit start
 Starting daemon monitor: monit.

Rendez-vous ensuite sur le service Web de Monit (http://votre_ip:2812)

[[Fichier:Monit1.jpeg|480px]]

[[Fichier:Monit2.jpeg|480px]]

Bien entendu cette configuration est très insuffisante; A part savoir que votre serveur est en fonction, vous n'avez pas beaucoup d'autres informations...
De plus l'interface n'est pas sécurisée...

== Explication des règles ==

D'une façon générale, les règles de surveillance s'articulent comme ceci:

*Surveillance d'un processus (le fichier PID du service);
*Les commandes pour arrêter et démarrer les processus surveillés;
*L'utilisateur système du service,
*La condition de test à effectuer:
#Interfaces et ports ou ces processus doivent écouter (par défaut localhost si vous ne précisez rien);
#Charge du CPU par service;
#Fichiers (s'ils existent, leur checksum...).
#...
*La commande a effectuer en cas d'échec

'''Pensez à surveiller les services sur les bonnes interfaces...'''
Inutile par exemple de surveiller ssh sur localhost alors que vous en avez besoin sur eth0...

Les possibilités sont très grandes, et la finesse de la surveillance tout autant. N'hésitez pas à lire les documentations elles regorgent d'astuces.

== Plus de services ==

Voici quelques exemples de services à surveiller.
Les fichiers sont à placer dans /etc/monit/conf.d

=== amavis ===

 # cat /etc/monit/conf.d/amavis
 check process Amavisd-new with pidfile /var/run/amavis/amavisd.pid
    group mail
    start program = &quot;/etc/init.d/amavis start&quot;
    stop  program = &quot;/etc/init.d/amavis stop&quot;
    if failed port 10024 protocol smtp then restart
    if 5 restarts within 5 cycles then timeout
    depends on amavisd_bin
 
  check file amavisd_bin with path /usr/sbin/amavisd-new
    group mail
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor

=== apache2 ===

 # cat /etc/monit/conf.d/apache2
 check process apache with pidfile /var/run/apache2.pid group www
         start program = &quot;/etc/init.d/apache2 start&quot;
         stop program = &quot;/etc/init.d/apache2 stop&quot;
         if failed host vanille.zehome.org port 80 protocol http
            and request &quot;/monit/token&quot; then restart
         if  cpu is greater than 60% for 2 cycles then alert
         if cpu &gt; 80%  for 5 cycles then restart
         if totalmem &gt; 500 MB for 5 cycles then restart
         if children &gt; 250 then restart
         if loadavg(5min) greater than 10 for 8 cycles then stop
         if 3 restarts within 5 cycles then timeout

Sans oublier de créer le fichier 'token' sur votre serveur...

 root@vanille:~# su www-data
 $ cd
 $ mkdir monit
 $ cd monit
 $ touch token
 $ exit

Du coup votre &quot;access.log&quot; va se remplir avec ceci:

 127.0.1.1 - - [24/Aug/2011:07:31:19 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;
 127.0.1.1 - - [24/Aug/2011:07:32:25 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;
 127.0.1.1 - - [24/Aug/2011:07:33:31 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;
 127.0.1.1 - - [24/Aug/2011:07:34:37 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;
 127.0.1.1 - - [24/Aug/2011:07:35:43 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;
 127.0.1.1 - - [24/Aug/2011:07:36:49 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;
 127.0.1.1 - - [24/Aug/2011:07:37:55 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;

Pour éviter cela, ajoutez ceci:

 SetEnvIf        Request_URI &quot;^\/monit\/token$&quot; dontlog

Puis ajoutez '''env=!dontlog''' à la fin de la ligne CustomLog...

 CustomLog ${APACHE_LOG_DIR}/access.log combined env=!dontlog

Dans votre fichier /etc/apache2/sites-available/default

=== bind9 ===

 # cat /etc/monit/conf.d/bind9
 check process Bind9 with pidfile /var/run/named/named.pid
        start program = &quot;/etc/init.d/bind9 start&quot;
        stop program  = &quot;/etc/init.d/bind9 stop&quot;
        if failed port 53 use type udp protocol dns then restart
        if 3 restarts within 5 cycles then timeout

=== clamav ===

 # cat /etc/monit/conf.d/clamav
 check process ClamAV with pidfile /var/run/clamav/clamd.pid
    group virus
    start program = &quot;/etc/init.d/clamav-daemon start&quot;
    stop  program = &quot;/etc/init.d/clamav-daemon stop&quot;
    if 5 restarts within 5 cycles then timeout
    depends on clamavd_bin
 
  check file clamavd_bin with path /usr/sbin/clamd
    group virus
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor

=== dovecot ===

 # cat /etc/monit/conf.d/dovecot
 check process Dovecot with pidfile /var/run/dovecot/master.pid
    start program = &quot;/etc/init.d/dovecot start&quot;
    stop program = &quot;/etc/init.d/dovecot stop&quot;
    group mail
    if failed host mail.zehome.org port 993 type tcpssl sslauto protocol imap for 5 cycles then restart
    if 3 restarts within 5 cycles then timeout
    depends dovecot_init
    depends dovecot_bin
 check file dovecot_init with path /etc/init.d/dovecot
    group mail
 check file dovecot_bin with path /usr/sbin/dovecot
    group mail

=== fail2ban ===

 # cat /etc/monit/conf.d/fail2ban
 check process Fail2ban with pidfile /var/run/fail2ban/fail2ban.pid
        start program = &quot;/etc/init.d/fail2ban start&quot; with timeout 60 seconds
        stop program  = &quot;/etc/init.d/fail2ban stop&quot;

=== fetchmail ===

 # cat /etc/monit/conf.d/fetchmail
 check process Fetchmail with pidfile /var/run/fetchmail/fetchmail.pid
        start program = &quot;/etc/init.d/fetchmail start&quot; with timeout 60 seconds
        stop program  = &quot;/etc/init.d/fetchmail stop&quot;

=== freeradius ===

 # cat /etc/monit/conf.d/freeradius
 check process Freeradius with pidfile /var/run/freeradius/freeradius.pid
        start program = &quot;/etc/init.d/freeradius start&quot; with timeout 60 seconds
        stop program  = &quot;/etc/init.d/freeradius stop&quot;
        if failed host 10.9.8.3 port 1812 type udp then restart
        if failed host 10.9.8.3 port 1813 type udp then restart
        if failed host 10.9.8.3 port 1814 type udp then restart

=== imapproxyd ===

 # cat /etc/monit/conf.d/imapproxyd
 check process Imapproxy with pidfile /var/run/imapproxy.pid
        start program = &quot;/etc/init.d/imapproxy start&quot; with timeout 60 seconds
        stop program  = &quot;/etc/init.d/imapproxy stop&quot;
        if failed host 10.9.8.3 port 1143 then restart

=== mysql ===

 # cat /etc/monit/conf.d/mysql 
 check process MySql with pidfile /var/run/mysqld/mysqld.pid
    group mysql
    start program = &quot;/etc/init.d/mysql start&quot;
    stop program = &quot;/etc/init.d/mysql stop&quot;
    if failed host localhost port 3306 protocol mysql then restart
    if 5 restarts within 5 cycles then timeout
    depends on mysql_bin
    depends on mysql_rc
 
  check file mysql_bin with path /usr/sbin/mysqld
    group mysql
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor
 
  check file mysql_rc with path /etc/init.d/mysql
    group mysql
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor

=== postfix ===

 # cat /etc/monit/conf.d/postfix
 check process Postfix with pidfile /var/spool/postfix/pid/master.pid
    group mail
    start program = &quot;/etc/init.d/postfix start&quot;
    stop  program = &quot;/etc/init.d/postfix stop&quot;
    if failed host 10.9.8.3 port 25 protocol smtp then restart
    if 5 restarts within 5 cycles then timeout
    depends on postfix_rc
 
  check file postfix_rc with path /etc/init.d/postfix
    group mail
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor

=== rsyslogd ===

 # cat /etc/monit/conf.d/rsyslogd 
 check process Rsyslogd with pidfile /var/run/rsyslogd.pid
    start program = &quot;/etc/init.d/rsyslog start&quot;
    stop program = &quot;/etc/init.d/rsyslog stop&quot;
    if 5 restarts within 5 cycles then timeout
 check file rsyslogd_file with path /var/log/syslog

=== spamassassin ===

 # cat /etc/monit/conf.d/spamassassin
 check process Spamassassin with pidfile /var/run/spamd.pid
    group mail
    start program = &quot;/etc/init.d/spamassassin start&quot;
    stop  program = &quot;/etc/init.d/spamassassin stop&quot;
    if 5 restarts within 5 cycles then timeout
    if cpu usage &gt; 99% for 5 cycles then alert
    if mem usage &gt; 99% for 5 cycles then alert
    depends on spamd_bin
    depends on spamd_rc 
 
  check file spamd_bin with path /usr/bin/spamassassin
    group mail
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor
 
  check file spamd_rc with path /etc/init.d/spamassassin
    group mail
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor

=== sshd ===

 # cat /etc/monit/conf.d/sshd
 check process SSH with pidfile /var/run/sshd.pid
        start program = &quot;/etc/init.d/ssh start&quot; with timeout 60 seconds
        stop program  = &quot;/etc/init.d/ssh stop&quot;
        if failed host 10.9.8.3 port 22 then restart

== Logging ==

Vous pouvez archiver les logs dans /var/log/syslog:
Ajoutez ceci à /etc/monit/monitrc

 set logfile syslog facility log_daemon

Si comme moi vous préférez séparer les logs, insérez ceci:

 set logfile /var/log/monit.log

Et n'oubliez pas de prévoir une rotation...

 nano /etc/logrotate.d/monit

 /var/log/monit.log {
     missingok
     notifempty
     size 100k
     create 0644 root root
     postrotate
         /bin/kill -HUP `cat /var/run/monit.pid 2&gt;/dev/null` 2&gt; /dev/null || true
     endscript
 }

== Les alertes par email ==

Ajoutez ceci à /etc/monit/monitrc:

 set mailserver vanille.zehome.org
 set alert admin@zehome.org
 set mail-format { from: monit@vanille.zehome.org }

Au redémarrage de monit vous recevrez un message dans votre boite mail:

 monit alert -- Monit instance changed vanille.zehome.org

 Monit instance changed Service vanille.zehome.org 
 
 	Date:        Tue, 23 Aug 2011 14:55:10 +0300
 	Action:      start
 	Host:        vanille.zehome.org
 	Description: Monit started
 
 Your faithful employee,
 monit

En cas de service qui s'arrêterais...

 Objet: monit alert -- Does not exist Freeradius

 Does not exist Service Freeradius 
 
 	Date:        Tue, 23 Aug 2011 14:59:35 +0300
 	Action:      restart
 	Host:        vanille.zehome.org
 	Description: process is not running
 
 Your faithful employee,
 monit

Puis peu de temps plus tard...

 Objet: monit alert -- Exists Freeradius


Les options sont très nombreuses, vous pouvez par exemple décider d'être averti de façon différente service par service.
Vous pouvez aussi décider ne n'être averti que pour certaines alertes:

En voici la liste:

   alert foo@bar on { action
                      checksum
                      content
                      data
                      exec
                      gid
                      icmp
                      invalid
                      fsflags
                      nonexist
                      permission
                      pid
                      ppid
                      size
                      timeout
                      timestamp }

== Et avec ssl ==

 root@vanille:~# openssl req -new -x509 -days 365 -nodes -out /etc/ssl/private/monit.pem -keyout /etc/ssl/private/monit.pem
 Generating a 1024 bit RSA private key
 ..............++++++
 ..............++++++
 writing new private key to '/etc/ssl/private/monit.pem'
 -----
 You are about to be asked to enter information that will be incorporated
 into your certificate request.
 What you are about to enter is what is called a Distinguished Name or a DN.
 There are quite a few fields but you can leave some blank
 For some fields there will be a default value,
 If you enter '.', the field will be left blank.
 -----
 Country Name (2 letter code) [AU]:MG
 State or Province Name (full name) [Some-State]:Ihorombe
 Locality Name (eg, city) []:Ranohira 
 Organization Name (eg, company) [Internet Widgits Pty Ltd]:Net
 Organizational Unit Name (eg, section) []:SHI
 Common Name (eg, YOUR name) []:vanille.zehome.org    
 Email Address []:admin@zehome.org

 root@vanille:~# openssl gendh 512 &gt;&gt; /etc/ssl/private/monit.pem
 Generating DH parameters, 512 bit long safe prime, generator 2
 This is going to take a long time
 ............++*++*++*++*++*++*

 root@vanille:~# openssl x509 -subject -dates -fingerprint -noout -in /etc/ssl/private/monit.pem
 subject= /C=MG/ST=Ihorombe/L=Ranohira/O=Net/OU=SHI/CN=vanille.zehome.org/emailAddress=admin@zehome.org
 notBefore=Aug 23 09:04:36 2011 GMT
 notAfter=Aug 22 09:04:36 2012 GMT
 SHA1 Fingerprint=15:DF:66:74:4C:B2:58:FF:0B:AF:1C:8B:D2:9A:63:65:5A:06:E5:D8

 root@vanille:~# chmod 700 /etc/ssl/private/monit.pem

 root@vanille:~# nano /etc/monit/monitrc

 set daemon  60
 set httpd port 2812
         ssl enable
         pemfile /etc/ssl/private/monit.pem
         allow admin:test
 
 include /etc/monit/conf.d/*

== Ecran final ==

En guise de conclusion: Testez chaque service avant de vous fier aux résultats...
'''Surveillez les logs de monit, stoppez service par service et vérifiez la réaction de monit!'''

L'alerte doit être envoyée, le service redémarré.

Rendez-vous sur

 https://votre.domaine.org:2812/
ou
 https://votre_ip:2812/

[[Fichier:Monit4.jpeg|480px]]

== Sources ==

* {{en}} [http://mmonit.com/monit/ Site officiel]
* {{en}} [http://mmonit.com/monit/documentation/monit.html Manuel]
* {{en}} [http://mmonit.com/wiki/Monit/ConfigurationExamples Exemples de services]
* {{en}} [http://www.howtoforge.com/server_monitoring_with_munin_monit_debian_etch_p2 Installation sur une etch - c'est pas jeune...]

[[Catégorie:Logiciels]]</text>
      <sha1>5e0xsjaccjgjwh1adb44waiifrg4way</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4489</id>
      <parentid>4265</parentid>
      <timestamp>2012-09-16T08:13:30Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Plus de services */</comment>
      <text xml:space="preserve" bytes="16263">'''Monit''' est utilisé pour surveiller les processus &quot;daemon&quot; - démons en français, programme qui tournent en arrière plan - ou des programmes similaires sur votre serveur local.

Monit est particulièrement utile pour les processus démons lancés au démarrage du système à partir de /etc/init.d/ (sendmail, sshd, apache, mysql...)

A la différence de nombreux systèmes de surveillance, Monit peut en plus agir en cas de situation d'erreur; Par exemple, si sendmail s'arrête, Monit peut le relancer; Si Apache utilise trop de ressources (en cas d'attaque DoS en cours) Monit peut arrêter et/ou redémarrer Apache puis vous envoyer un message d'alerte.

'''Monit''' peut également surveiller l'état des processus et détecter par exemple les processus zombie ou qui utilisent trop de CPU.

Vous pouvez également utiliser '''Monit''' pour surveiller des fichiers, répertoires et systèmes de fichiers sur votre serveur local. Vous pouvez aussi contrôler le checksum MD5 de fichiers qui ne devraient pas changer...

Même s'il n'est pas fait pour ça Monit peut surveiller des hôtes distants.

Vous pouvez suivre l'état de votre système (utilisation du CPU, la mémoire et la charge moyenne)

== Installation ==

 # apt-get install monit

== Pour les impatients ==

Nous allons activer monit et accéder tout de suite à l'interface Web

 root@vanille:~# nano /etc/default/monit

 # You must set this variable to for monit to start
 startup=1

 root@vanille:~# cp /etc/monit/monitrc /etc/monit/monitrc.ori

Modifiez le fichier /etc/monit/monitrc pour qu'il ressemble à ceci:

 root@vanille:~# $editor /etc/monit/monitrc

 set daemon  60
  set httpd port 2812 and
     allow admin:test

 root@vanille:~# service monit start
 Starting daemon monitor: monit.

Rendez-vous ensuite sur le service Web de Monit (http://votre_ip:2812)

[[Fichier:Monit1.jpeg|480px]]

[[Fichier:Monit2.jpeg|480px]]

Bien entendu cette configuration est très insuffisante; A part savoir que votre serveur est en fonction, vous n'avez pas beaucoup d'autres informations...
De plus l'interface n'est pas sécurisée...

== Explication des règles ==

D'une façon générale, les règles de surveillance s'articulent comme ceci:

*Surveillance d'un processus (le fichier PID du service);
*Les commandes pour arrêter et démarrer les processus surveillés;
*L'utilisateur système du service,
*La condition de test à effectuer:
#Interfaces et ports ou ces processus doivent écouter (par défaut localhost si vous ne précisez rien);
#Charge du CPU par service;
#Fichiers (s'ils existent, leur checksum...).
#...
*La commande a effectuer en cas d'échec

'''Pensez à surveiller les services sur les bonnes interfaces...'''
Inutile par exemple de surveiller ssh sur localhost alors que vous en avez besoin sur eth0...

Les possibilités sont très grandes, et la finesse de la surveillance tout autant. N'hésitez pas à lire les documentations elles regorgent d'astuces.

== Plus de services ==

Voici quelques exemples de services à surveiller.
Les fichiers sont à placer dans /etc/monit/conf.d

=== amavis ===

 # cat /etc/monit/conf.d/amavis
 check process Amavisd-new with pidfile /var/run/amavis/amavisd.pid
    group mail
    start program = &quot;/etc/init.d/amavis start&quot;
    stop  program = &quot;/etc/init.d/amavis stop&quot;
    if failed port 10024 protocol smtp then restart
    if 5 restarts within 5 cycles then timeout
    depends on amavisd_bin
 
  check file amavisd_bin with path /usr/sbin/amavisd-new
    group mail
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor

=== apache2 ===

 # cat /etc/monit/conf.d/apache2
 check process apache with pidfile /var/run/apache2.pid group www
         start program = &quot;/etc/init.d/apache2 start&quot;
         stop program = &quot;/etc/init.d/apache2 stop&quot;
         if failed host vanille.zehome.org port 80 protocol http
            and request &quot;/monit/token&quot; then restart
         if  cpu is greater than 60% for 2 cycles then alert
         if cpu &gt; 80%  for 5 cycles then restart
         if totalmem &gt; 500 MB for 5 cycles then restart
         if children &gt; 250 then restart
         if loadavg(5min) greater than 10 for 8 cycles then stop
         if 3 restarts within 5 cycles then timeout

Sans oublier de créer le fichier 'token' sur votre serveur...

 root@vanille:~# su www-data
 $ cd
 $ mkdir monit
 $ cd monit
 $ touch token
 $ exit

Du coup votre &quot;access.log&quot; va se remplir avec ceci:

 127.0.1.1 - - [24/Aug/2011:07:31:19 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;
 127.0.1.1 - - [24/Aug/2011:07:32:25 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;
 127.0.1.1 - - [24/Aug/2011:07:33:31 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;
 127.0.1.1 - - [24/Aug/2011:07:34:37 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;
 127.0.1.1 - - [24/Aug/2011:07:35:43 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;
 127.0.1.1 - - [24/Aug/2011:07:36:49 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;
 127.0.1.1 - - [24/Aug/2011:07:37:55 +0300] &quot;GET /monit/token HTTP/1.1&quot; 200 250 &quot;-&quot; &quot;monit/5.1.1&quot;

Pour éviter cela, ajoutez ceci:

 SetEnvIf        Request_URI &quot;^\/monit\/token$&quot; dontlog

Puis ajoutez '''env=!dontlog''' à la fin de la ligne CustomLog...

 CustomLog ${APACHE_LOG_DIR}/access.log combined env=!dontlog

Dans votre fichier /etc/apache2/sites-available/default

=== bind9 ===

 # cat /etc/monit/conf.d/bind9
 check process Bind9 with pidfile /var/run/named/named.pid
        start program = &quot;/etc/init.d/bind9 start&quot;
        stop program  = &quot;/etc/init.d/bind9 stop&quot;
        if failed port 53 use type udp protocol dns then restart
        if 3 restarts within 5 cycles then timeout

=== clamav ===

 # cat /etc/monit/conf.d/clamav
 check process ClamAV with pidfile /var/run/clamav/clamd.pid
    group virus
    start program = &quot;/etc/init.d/clamav-daemon start&quot;
    stop  program = &quot;/etc/init.d/clamav-daemon stop&quot;
    if 5 restarts within 5 cycles then timeout
    depends on clamavd_bin
 
  check file clamavd_bin with path /usr/sbin/clamd
    group virus
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor

=== dovecot ===

 # cat /etc/monit/conf.d/dovecot
 check process Dovecot with pidfile /var/run/dovecot/master.pid
    start program = &quot;/etc/init.d/dovecot start&quot;
    stop program = &quot;/etc/init.d/dovecot stop&quot;
    group mail
    if failed host mail.zehome.org port 993 type tcpssl sslauto protocol imap for 5 cycles then restart
    if 3 restarts within 5 cycles then timeout
    depends dovecot_init
    depends dovecot_bin
 check file dovecot_init with path /etc/init.d/dovecot
    group mail
 check file dovecot_bin with path /usr/sbin/dovecot
    group mail

=== fail2ban ===

 # cat /etc/monit/conf.d/fail2ban
 check process Fail2ban with pidfile /var/run/fail2ban/fail2ban.pid
        start program = &quot;/etc/init.d/fail2ban start&quot; with timeout 60 seconds
        stop program  = &quot;/etc/init.d/fail2ban stop&quot;

=== fetchmail ===

 # cat /etc/monit/conf.d/fetchmail
 check process Fetchmail with pidfile /var/run/fetchmail/fetchmail.pid
        start program = &quot;/etc/init.d/fetchmail start&quot; with timeout 60 seconds
        stop program  = &quot;/etc/init.d/fetchmail stop&quot;

=== freeradius ===

 # cat /etc/monit/conf.d/freeradius
 check process Freeradius with pidfile /var/run/freeradius/freeradius.pid
        start program = &quot;/etc/init.d/freeradius start&quot; with timeout 60 seconds
        stop program  = &quot;/etc/init.d/freeradius stop&quot;
        if failed host 10.9.8.3 port 1812 type udp then restart
        if failed host 10.9.8.3 port 1813 type udp then restart
        if failed host 10.9.8.3 port 1814 type udp then restart

=== imapproxyd ===

 # cat /etc/monit/conf.d/imapproxyd
 check process Imapproxy with pidfile /var/run/imapproxy.pid
        start program = &quot;/etc/init.d/imapproxy start&quot; with timeout 60 seconds
        stop program  = &quot;/etc/init.d/imapproxy stop&quot;
        if failed host 10.9.8.3 port 1143 then restart

=== mdadm ===

 # cat /etc/monit/conf.d/mdadm 
 check process mdadm with pidfile /var/run/mdadm/monitor.pid
    start program = &quot;/etc/init.d/mdadm start&quot;
    stop  program = &quot;/etc/init.d/mdadm stop&quot;
    if 5 restarts within 5 cycles then timeout

=== mysql ===

 # cat /etc/monit/conf.d/mysql 
 check process MySql with pidfile /var/run/mysqld/mysqld.pid
    group mysql
    start program = &quot;/etc/init.d/mysql start&quot;
    stop program = &quot;/etc/init.d/mysql stop&quot;
    if failed host localhost port 3306 protocol mysql then restart
    if 5 restarts within 5 cycles then timeout
    depends on mysql_bin
    depends on mysql_rc
 
  check file mysql_bin with path /usr/sbin/mysqld
    group mysql
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor
 
  check file mysql_rc with path /etc/init.d/mysql
    group mysql
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor

=== ntp ===

 # cat /etc/monit/conf.d/ntp
 check process ntpd with pidfile /var/run/ntpd.pid
    start program = &quot;/etc/init.d/ntp start&quot;
    stop  program = &quot;/etc/init.d/ntp stop&quot;
    if failed host 127.0.0.1 port 123 type udp then alert
    if 5 restarts within 5 cycles then timeout

=== postfix ===

 # cat /etc/monit/conf.d/postfix
 check process Postfix with pidfile /var/spool/postfix/pid/master.pid
    group mail
    start program = &quot;/etc/init.d/postfix start&quot;
    stop  program = &quot;/etc/init.d/postfix stop&quot;
    if failed host 10.9.8.3 port 25 protocol smtp then restart
    if 5 restarts within 5 cycles then timeout
    depends on postfix_rc
 
  check file postfix_rc with path /etc/init.d/postfix
    group mail
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor

=== rsyslogd ===

 # cat /etc/monit/conf.d/rsyslogd 
 check process Rsyslogd with pidfile /var/run/rsyslogd.pid
    start program = &quot;/etc/init.d/rsyslog start&quot;
    stop program = &quot;/etc/init.d/rsyslog stop&quot;
    if 5 restarts within 5 cycles then timeout
 check file rsyslogd_file with path /var/log/syslog

=== spamassassin ===

 # cat /etc/monit/conf.d/spamassassin
 check process Spamassassin with pidfile /var/run/spamd.pid
    group mail
    start program = &quot;/etc/init.d/spamassassin start&quot;
    stop  program = &quot;/etc/init.d/spamassassin stop&quot;
    if 5 restarts within 5 cycles then timeout
    if cpu usage &gt; 99% for 5 cycles then alert
    if mem usage &gt; 99% for 5 cycles then alert
    depends on spamd_bin
    depends on spamd_rc 
 
  check file spamd_bin with path /usr/bin/spamassassin
    group mail
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor
 
  check file spamd_rc with path /etc/init.d/spamassassin
    group mail
    if failed checksum then unmonitor
    if failed permission 755 then unmonitor
    if failed uid root then unmonitor
    if failed gid root then unmonitor

=== sshd ===

 # cat /etc/monit/conf.d/sshd
 check process SSH with pidfile /var/run/sshd.pid
        start program = &quot;/etc/init.d/ssh start&quot; with timeout 60 seconds
        stop program  = &quot;/etc/init.d/ssh stop&quot;
        if failed host 10.9.8.3 port 22 then restart

== Logging ==

Vous pouvez archiver les logs dans /var/log/syslog:
Ajoutez ceci à /etc/monit/monitrc

 set logfile syslog facility log_daemon

Si comme moi vous préférez séparer les logs, insérez ceci:

 set logfile /var/log/monit.log

Et n'oubliez pas de prévoir une rotation...

 nano /etc/logrotate.d/monit

 /var/log/monit.log {
     missingok
     notifempty
     size 100k
     create 0644 root root
     postrotate
         /bin/kill -HUP `cat /var/run/monit.pid 2&gt;/dev/null` 2&gt; /dev/null || true
     endscript
 }

== Les alertes par email ==

Ajoutez ceci à /etc/monit/monitrc:

 set mailserver vanille.zehome.org
 set alert admin@zehome.org
 set mail-format { from: monit@vanille.zehome.org }

Au redémarrage de monit vous recevrez un message dans votre boite mail:

 monit alert -- Monit instance changed vanille.zehome.org

 Monit instance changed Service vanille.zehome.org 
 
 	Date:        Tue, 23 Aug 2011 14:55:10 +0300
 	Action:      start
 	Host:        vanille.zehome.org
 	Description: Monit started
 
 Your faithful employee,
 monit

En cas de service qui s'arrêterais...

 Objet: monit alert -- Does not exist Freeradius

 Does not exist Service Freeradius 
 
 	Date:        Tue, 23 Aug 2011 14:59:35 +0300
 	Action:      restart
 	Host:        vanille.zehome.org
 	Description: process is not running
 
 Your faithful employee,
 monit

Puis peu de temps plus tard...

 Objet: monit alert -- Exists Freeradius


Les options sont très nombreuses, vous pouvez par exemple décider d'être averti de façon différente service par service.
Vous pouvez aussi décider ne n'être averti que pour certaines alertes:

En voici la liste:

   alert foo@bar on { action
                      checksum
                      content
                      data
                      exec
                      gid
                      icmp
                      invalid
                      fsflags
                      nonexist
                      permission
                      pid
                      ppid
                      size
                      timeout
                      timestamp }

== Et avec ssl ==

 root@vanille:~# openssl req -new -x509 -days 365 -nodes -out /etc/ssl/private/monit.pem -keyout /etc/ssl/private/monit.pem
 Generating a 1024 bit RSA private key
 ..............++++++
 ..............++++++
 writing new private key to '/etc/ssl/private/monit.pem'
 -----
 You are about to be asked to enter information that will be incorporated
 into your certificate request.
 What you are about to enter is what is called a Distinguished Name or a DN.
 There are quite a few fields but you can leave some blank
 For some fields there will be a default value,
 If you enter '.', the field will be left blank.
 -----
 Country Name (2 letter code) [AU]:MG
 State or Province Name (full name) [Some-State]:Ihorombe
 Locality Name (eg, city) []:Ranohira 
 Organization Name (eg, company) [Internet Widgits Pty Ltd]:Net
 Organizational Unit Name (eg, section) []:SHI
 Common Name (eg, YOUR name) []:vanille.zehome.org    
 Email Address []:admin@zehome.org

 root@vanille:~# openssl gendh 512 &gt;&gt; /etc/ssl/private/monit.pem
 Generating DH parameters, 512 bit long safe prime, generator 2
 This is going to take a long time
 ............++*++*++*++*++*++*

 root@vanille:~# openssl x509 -subject -dates -fingerprint -noout -in /etc/ssl/private/monit.pem
 subject= /C=MG/ST=Ihorombe/L=Ranohira/O=Net/OU=SHI/CN=vanille.zehome.org/emailAddress=admin@zehome.org
 notBefore=Aug 23 09:04:36 2011 GMT
 notAfter=Aug 22 09:04:36 2012 GMT
 SHA1 Fingerprint=15:DF:66:74:4C:B2:58:FF:0B:AF:1C:8B:D2:9A:63:65:5A:06:E5:D8

 root@vanille:~# chmod 700 /etc/ssl/private/monit.pem

 root@vanille:~# nano /etc/monit/monitrc

 set daemon  60
 set httpd port 2812
         ssl enable
         pemfile /etc/ssl/private/monit.pem
         allow admin:test
 
 include /etc/monit/conf.d/*

== Ecran final ==

En guise de conclusion: Testez chaque service avant de vous fier aux résultats...
'''Surveillez les logs de monit, stoppez service par service et vérifiez la réaction de monit!'''

L'alerte doit être envoyée, le service redémarré.

Rendez-vous sur

 https://votre.domaine.org:2812/
ou
 https://votre_ip:2812/

[[Fichier:Monit4.jpeg|480px]]

== Sources ==

* {{en}} [http://mmonit.com/monit/ Site officiel]
* {{en}} [http://mmonit.com/monit/documentation/monit.html Manuel]
* {{en}} [http://mmonit.com/wiki/Monit/ConfigurationExamples Exemples de services]
* {{en}} [http://www.howtoforge.com/server_monitoring_with_munin_monit_debian_etch_p2 Installation sur une etch - c'est pas jeune...]

[[Catégorie:Logiciels]]</text>
      <sha1>rk4vkqgsnobwifzfkxrg0idfcmbq7jc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Monter un partage CIFS avec le fichier fstab</title>
    <ns>0</ns>
    <id>1292</id>
    <revision>
      <id>5407</id>
      <timestamp>2013-09-26T10:49:29Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>Page créée avec « Cet article vous montrera comment ajouter le montage automatique d'une partition CIFS au fichier /etc/fstab.&lt;br&gt; Il est conseillé d'avoir lu au préalable la page dédié... »</comment>
      <text xml:space="preserve" bytes="1797">Cet article vous montrera comment ajouter le montage automatique d'une partition CIFS au fichier /etc/fstab.&lt;br&gt;
Il est conseillé d'avoir lu au préalable la page dédiée à ce fichier : [[Fstab]]

== Principe de fonctionnement ==
Voici comment monter automatiquement ou non un partage CIFS (Windows par exemple) sur son poste sans demande de mot de passe.&lt;br&gt;
Voici l'architecture de test qui sera utilisée :&lt;br&gt;
•&amp;nbsp;Nom du serveur CIFS : SRVDATA&lt;br&gt;
•&amp;nbsp;Nom de partage cible : Interne&lt;br&gt;
•&amp;nbsp;Nom de l'utilisateur local : damien&lt;br&gt;
•&amp;nbsp;Nom de répertoire cible local: /media/srvdata/Interne&lt;br&gt;

== Modification du fichier fstab ==
Voici la ligne à ajouter à votre fichier /etc/fstab, après avoir bien sûr remplacé les différentes valeurs par celles utilisées pour votre partage :
 //SRVDATA/Interne /media/srvdata/Interne cifs _netdev,users,noauto,users,credentials=/home/damien/.smbcred 0 0

Notez que la source est définie avec :
 //

•&amp;nbsp;_netdev : indique à mount que la source du partage est située sur un serveur distant.&lt;br&gt;
•&amp;nbsp;users : permet le montage et démontage à la demande de chaque utilisateur du système.&lt;br&gt;
•&amp;nbsp;credentials : indique le fichier contenant les identifiant pour le compte SMB distant.&lt;br&gt;

== Fichier SMBCRED ==
Le fichier SMBCRED utilise la syntaxe suivante :
 username=login.sans.domaine
 password=XXXXXXX
 domain=DOMAINE.EN.MAJUSCULE

Les droits à appliquer à ce fichier sont les suivants :
 $ ls -l /home/damien/.smbcred 
 -rw-r-----. 1 damien root 60  3 avril 19:03 /home/damien/.smbcred

== Sujet lié ==
[[Fstab]]



[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 26 septembre 2013 à 12:49 (CEST)

source : [https://wiki.jackall.net/mount_cifs_share_fstab jackall's IT Wiki]</text>
      <sha1>bb04n3nww6e5lmqwooewih9fix1ivoh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5408</id>
      <parentid>5407</parentid>
      <timestamp>2013-09-26T10:53:29Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="2150">Cet article vous montrera comment ajouter le montage automatique d'une partition CIFS au fichier /etc/fstab.&lt;br&gt;
Il est conseillé d'avoir lu au préalable la page dédiée à ce fichier : [[Fstab]]

== Principe de fonctionnement ==
Voici comment monter automatiquement ou non un partage CIFS (Windows par exemple) sur son poste sans demande de mot de passe.&lt;br&gt;
Voici l'architecture de test qui sera utilisée :&lt;br&gt;
•&amp;nbsp;Nom du serveur CIFS : SRVDATA&lt;br&gt;
•&amp;nbsp;Nom de partage cible : Interne&lt;br&gt;
•&amp;nbsp;Nom de l'utilisateur local : damien&lt;br&gt;
•&amp;nbsp;Nom de répertoire cible local: /media/srvdata/Interne&lt;br&gt;

== Modification du fichier fstab ==
Voici la ligne à ajouter à votre fichier /etc/fstab pour un montage automatique de votre partage au lancement du système, (après avoir bien sûr remplacé les différentes valeurs par celles utilisées pour votre partage) :
 //SRVDATA/Interne /media/srvdata/Interne cifs _netdev,users,auto,users,credentials=/home/damien/.smbcred 0 0

Avec la ligne suivante le partage ne sera pas monté au démarrage, pour la monter vous devrez lancer la commande &quot;mount /media/srvdata/Interne&quot; avec votre utilisateur :
 //SRVDATA/Interne /media/srvdata/Interne cifs _netdev,users,noauto,users,credentials=/home/damien/.smbcred 0 0

Notez que la source est définie avec :
 //

•&amp;nbsp;_netdev : indique à mount que la source du partage est située sur un serveur distant.&lt;br&gt;
•&amp;nbsp;users : permet le montage et démontage à la demande de chaque utilisateur du système.&lt;br&gt;
•&amp;nbsp;credentials : indique le fichier contenant les identifiant pour le compte SMB distant.&lt;br&gt;

== Fichier SMBCRED ==
Le fichier SMBCRED utilise la syntaxe suivante :
 username=login.sans.domaine
 password=XXXXXXX
 domain=DOMAINE.EN.MAJUSCULE

Les droits à appliquer à ce fichier sont les suivants :
 $ ls -l /home/damien/.smbcred 
 -rw-r-----. 1 damien root 60  3 avril 19:03 /home/damien/.smbcred

== Sujet lié ==
[[Fstab]]



[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 26 septembre 2013 à 12:49 (CEST)

source : [https://wiki.jackall.net/mount_cifs_share_fstab jackall's IT Wiki]</text>
      <sha1>kci8y19dj8n6ntczbge9262w42pxczj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5409</id>
      <parentid>5408</parentid>
      <timestamp>2013-09-26T10:55:14Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <comment>/* Modification du fichier fstab */</comment>
      <text xml:space="preserve" bytes="2166">Cet article vous montrera comment ajouter le montage automatique d'une partition CIFS au fichier /etc/fstab.&lt;br&gt;
Il est conseillé d'avoir lu au préalable la page dédiée à ce fichier : [[Fstab]]

== Principe de fonctionnement ==
Voici comment monter automatiquement ou non un partage CIFS (Windows par exemple) sur son poste sans demande de mot de passe.&lt;br&gt;
Voici l'architecture de test qui sera utilisée :&lt;br&gt;
•&amp;nbsp;Nom du serveur CIFS : SRVDATA&lt;br&gt;
•&amp;nbsp;Nom de partage cible : Interne&lt;br&gt;
•&amp;nbsp;Nom de l'utilisateur local : damien&lt;br&gt;
•&amp;nbsp;Nom de répertoire cible local: /media/srvdata/Interne&lt;br&gt;

== Modification du fichier fstab ==
Voici la ligne à ajouter à votre fichier /etc/fstab pour un montage automatique de votre partage au lancement du système, (après avoir bien sûr remplacé les différentes valeurs par celles utilisées pour votre partage) :
 //SRVDATA/Interne /media/srvdata/Interne cifs _netdev,users,auto,users,credentials=/home/damien/.smbcred 0 0

Avec la ligne suivante le partage ne sera pas monté automatiquement au démarrage, pour le monter vous devrez lancer la commande &quot;mount /media/srvdata/Interne&quot; avec votre utilisateur :
 //SRVDATA/Interne /media/srvdata/Interne cifs _netdev,users,noauto,users,credentials=/home/damien/.smbcred 0 0

Notez que la source est définie avec :
 //

•&amp;nbsp;_netdev : indique à mount que la source du partage est située sur un serveur distant.&lt;br&gt;
•&amp;nbsp;users : permet le montage et démontage à la demande de chaque utilisateur du système.&lt;br&gt;
•&amp;nbsp;credentials : indique le fichier contenant les identifiant pour le compte SMB distant.&lt;br&gt;

== Fichier SMBCRED ==
Le fichier SMBCRED utilise la syntaxe suivante :
 username=login.sans.domaine
 password=XXXXXXX
 domain=DOMAINE.EN.MAJUSCULE

Les droits à appliquer à ce fichier sont les suivants :
 $ ls -l /home/damien/.smbcred 
 -rw-r-----. 1 damien root 60  3 avril 19:03 /home/damien/.smbcred

== Sujet lié ==
[[Fstab]]



[[Utilisateur:Vv222|Vv222]] ([[Discussion utilisateur:Vv222|discussion]]) 26 septembre 2013 à 12:49 (CEST)

source : [https://wiki.jackall.net/mount_cifs_share_fstab jackall's IT Wiki]</text>
      <sha1>pwjmuoj01gcf0b87jwqpnwpw5ggix7h</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Monter une cle usb</title>
    <ns>0</ns>
    <id>1300</id>
    <revision>
      <id>5456</id>
      <timestamp>2013-11-26T19:38:00Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>Page créée avec « Les manipulations suivantes sont à effectuer en tant que '''root'''.  Pour monter une clé USB,  D'abord, connaître sous quel '''dev'''ice celle-ci est reconnue. Pour ce... »</comment>
      <text xml:space="preserve" bytes="1576">Les manipulations suivantes sont à effectuer en tant que '''root'''.

Pour monter une clé USB,

D'abord, connaître sous quel '''dev'''ice celle-ci est reconnue. Pour cela:
* Retirer, puis réinsérer la clé.
* Taper ''dmesg'', observer les 3-4 dernières lignes.
* Dans ces lignes, l'information à retenir est '''/dev/sdX''', où X est une lettre.

* '''/dev/sda''' étant en général le disque dur interne de l'ordi.
* '''/dev/sdb''' étant en général un disque dur secondaire (autre disque interne, clé USB, disque dur externe...)

Puisque chaque périphérique de stockage peut avoir plusieurs partitions, celles-ci sont numérotées.
* '''/dev/sda1''' est la 1ère partition du disque dur principal.
* '''/dev/sda2''' est la 2ème partition du disque dur principal.
* '''/dev/sdb1''' est la 1ère partition du second périphérique.

Ensuite, décider d'un ''point de montage'', qui est l'endroit (le répertoire) dans l'arborescence du disque dur où les fichiers de la clé USB seront accessibles.
Par convention, on place ces répertoires dans le répertoire ''/mnt''.
Il faut créer soi-même ces répertoires (à faire une seule fois dans la vie du système).
* On choisit de créer le répertoire ''/mnt/cle'' avec la commande ''mkdir /mnt/cle''

Ensuite, il faut faire l'association entre '''la partition du périphérique''' et le '''point de montage'''.
* Cela se fait avec la commande mount, il faut donc taper: ''mount /dev/sdXY /mnt/cle''

Finalement, on pourra copier les fichiers souhaités sur la clé:
* ''cp /var/log/nom_du_fichier.log /mnt/cle''</text>
      <sha1>r1xn6ccu4brp6yxerbb6wvfi8ux0ez8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5457</id>
      <parentid>5456</parentid>
      <timestamp>2013-11-26T19:41:32Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>euuuuh...</comment>
      <text xml:space="preserve" bytes="1588">Les manipulations suivantes sont à effectuer en tant que '''root'''.

Pour monter une clé USB,

D'abord, connaître sous quel '''dev'''ice celle-ci est reconnue. Pour cela:
* Retirer, puis réinsérer la clé.
* Taper ''dmesg'', observer les 3-4 dernières lignes.

Dans ces lignes, l'information à retenir est '''/dev/sdX''', où X est une lettre.

* '''/dev/sda''' étant en général le disque dur interne de l'ordi.
* '''/dev/sdb''' étant en général un disque dur secondaire (autre disque interne, clé USB, disque dur externe...)

Puisque chaque périphérique de stockage peut avoir plusieurs partitions, celles-ci sont numérotées.

* '''/dev/sda1''' est la 1ère partition du disque dur principal.
* '''/dev/sda2''' est la 2ème partition du disque dur principal.
* '''/dev/sdb1''' est la 1ère partition du second périphérique.

Ensuite, décider d'un ''point de montage'', qui est l'endroit (le répertoire) dans l'arborescence de notre disque dur où les fichiers de la clé USB seront accessibles.

Par convention, on place ces répertoires dans le répertoire ''/mnt''.

Il faut créer soi-même ces répertoires (à faire une seule fois dans la vie du système).
* On choisit de créer le répertoire ''/mnt/cle'' avec la commande ''mkdir /mnt/cle''

Ensuite, il faut faire l'association entre '''la partition du périphérique''' et le '''point de montage'''.
* Cela se fait avec la commande ''mount'', il faut donc taper: ''mount /dev/sdXY /mnt/cle''

Finalement, on pourra copier les fichiers souhaités sur la clé:
* ''cp /var/log/nom_du_fichier.log /mnt/cle''</text>
      <sha1>n46aiytykgneo7ntugg8rndkx91pniy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5459</id>
      <parentid>5457</parentid>
      <timestamp>2013-11-26T19:48:37Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>+ fdisk</comment>
      <text xml:space="preserve" bytes="1792">Les manipulations suivantes sont à effectuer en tant que '''root'''.

Pour monter une clé USB,

D'abord, connaître sous quel '''dev'''ice celle-ci est reconnue. Pour cela:
* Retirer, puis réinsérer la clé.
* Taper ''dmesg'', observer les 3-4 dernières lignes.

Dans ces lignes, l'information à retenir est '''/dev/sdX''', où X est une lettre.

* '''/dev/sda''' étant en général le disque dur interne de l'ordi.
* '''/dev/sdb''' étant en général un disque dur secondaire (autre disque interne, clé USB, disque dur externe...)

Puisque chaque périphérique de stockage peut avoir plusieurs partitions, celles-ci sont numérotées.

* '''/dev/sda1''' est la 1ère partition du disque dur principal.
* '''/dev/sda2''' est la 2ème partition du disque dur principal.
* '''/dev/sdb1''' est la 1ère partition du second périphérique.

Note: une clé USB ne possède en général qu'une seule partition. On peut vérifier sa structure avec ''fdisk /dev/sdX'', puis ''p'' pour afficher la table des partitions, et ''q'' pour quitter fdisk.

Ensuite, décider d'un ''point de montage'', qui est l'endroit (le répertoire) dans l'arborescence de notre disque dur où les fichiers de la clé USB seront accessibles.

Par convention, on place ces répertoires dans le répertoire ''/mnt''.

Il faut créer soi-même ces répertoires (à faire une seule fois dans la vie du système).
* On choisit de créer le répertoire ''/mnt/cle'' avec la commande ''mkdir /mnt/cle''

Ensuite, il faut faire l'association entre '''la partition du périphérique''' et le '''point de montage'''.
* Cela se fait avec la commande ''mount'', il faut donc taper: ''mount /dev/sdXY /mnt/cle''

Finalement, on pourra copier les fichiers souhaités sur la clé:
* ''cp /var/log/nom_du_fichier.log /mnt/cle''</text>
      <sha1>5njso7uio6bf16fxgmggrztd6ohkv71</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5460</id>
      <parentid>5459</parentid>
      <timestamp>2013-11-26T19:51:15Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>+mise en forme +umount</comment>
      <text xml:space="preserve" bytes="1996">Les manipulations suivantes sont à effectuer en tant que '''root'''.

Pour monter une clé USB,

== Identifier la partition ==

D'abord, connaître sous quel '''dev'''ice celle-ci est reconnue. Pour cela:
* Retirer, puis réinsérer la clé.
* Taper ''dmesg'', observer les 3-4 dernières lignes.

Dans ces lignes, l'information à retenir est '''/dev/sdX''', où X est une lettre.

* '''/dev/sda''' étant en général le disque dur interne de l'ordi.
* '''/dev/sdb''' étant en général un disque dur secondaire (autre disque interne, clé USB, disque dur externe...)

Puisque chaque périphérique de stockage peut avoir plusieurs partitions, celles-ci sont numérotées.

* '''/dev/sda1''' est la 1ère partition du disque dur principal.
* '''/dev/sda2''' est la 2ème partition du disque dur principal.
* '''/dev/sdb1''' est la 1ère partition du second périphérique.

Note: une clé USB ne possède en général qu'une seule partition. On peut vérifier sa structure avec ''fdisk /dev/sdX'', puis ''p'' pour afficher la table des partitions, et ''q'' pour quitter fdisk.

== Créer le point de montage s'il n'existe pas déjà ==

Ensuite, décider d'un ''point de montage'', qui est l'endroit (le répertoire) dans l'arborescence de notre disque dur où les fichiers de la clé USB seront accessibles.

Par convention, on place ces répertoires dans le répertoire ''/mnt''.

Il faut créer soi-même ces répertoires (à faire une seule fois dans la vie du système).
* On choisit de créer le répertoire ''/mnt/cle'' avec la commande ''mkdir /mnt/cle''

== Monter, huuuuuuuuu ! ==

Ensuite, il faut faire l'association entre '''la partition du périphérique''' et le '''point de montage'''.
* Cela se fait avec la commande ''mount'', il faut donc taper: ''mount /dev/sdXY /mnt/cle''

== Fin ==

Finalement, on pourra copier les fichiers souhaités sur la clé:
* ''cp /var/log/nom_du_fichier.log /mnt/cle''

Puis démonter la clé USB de façon à la retirer:
* ''umount /mnt/cle''</text>
      <sha1>et2uitz275s20wa5fdyiekt9od79cob</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5461</id>
      <parentid>5460</parentid>
      <timestamp>2013-11-26T20:41:25Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>+ titre</comment>
      <text xml:space="preserve" bytes="2021">= Monter une clé USB =

Les manipulations suivantes sont à effectuer en tant que '''root'''.

Pour monter une clé USB,

== Identifier la partition ==

D'abord, connaître sous quel '''dev'''ice celle-ci est reconnue. Pour cela:
* Retirer, puis réinsérer la clé.
* Taper ''dmesg'', observer les 3-4 dernières lignes.

Dans ces lignes, l'information à retenir est '''/dev/sdX''', où X est une lettre.

* '''/dev/sda''' étant en général le disque dur interne de l'ordi.
* '''/dev/sdb''' étant en général un disque dur secondaire (autre disque interne, clé USB, disque dur externe...)

Puisque chaque périphérique de stockage peut avoir plusieurs partitions, celles-ci sont numérotées.

* '''/dev/sda1''' est la 1ère partition du disque dur principal.
* '''/dev/sda2''' est la 2ème partition du disque dur principal.
* '''/dev/sdb1''' est la 1ère partition du second périphérique.

Note: une clé USB ne possède en général qu'une seule partition. On peut vérifier sa structure avec ''fdisk /dev/sdX'', puis ''p'' pour afficher la table des partitions, et ''q'' pour quitter fdisk.

== Créer le point de montage s'il n'existe pas déjà ==

Ensuite, décider d'un ''point de montage'', qui est l'endroit (le répertoire) dans l'arborescence de notre disque dur où les fichiers de la clé USB seront accessibles.

Par convention, on place ces répertoires dans le répertoire ''/mnt''.

Il faut créer soi-même ces répertoires (à faire une seule fois dans la vie du système).
* On choisit de créer le répertoire ''/mnt/cle'' avec la commande ''mkdir /mnt/cle''

== Monter, huuuuuuuuu ! ==

Ensuite, il faut faire l'association entre '''la partition du périphérique''' et le '''point de montage'''.
* Cela se fait avec la commande ''mount'', il faut donc taper: ''mount /dev/sdXY /mnt/cle''

== Fin ==

Finalement, on pourra copier les fichiers souhaités sur la clé:
* ''cp /var/log/nom_du_fichier.log /mnt/cle''

Puis démonter la clé USB de façon à la retirer:
* ''umount /mnt/cle''</text>
      <sha1>3a3ugrgxs40ji60v2zsagrm0u466kui</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Multiposte</title>
    <ns>0</ns>
    <id>1241</id>
    <revision>
      <id>5091</id>
      <timestamp>2013-04-08T10:23:36Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <comment>Page créée avec « Après avoir fait du [http://www.debian-fr.org/multiseat-plusieurs-utilisateurs-sur-1-pc-t6954.html#p188187 multiposte avec 2 CG], un changement de PC m'oblige à faire la... »</comment>
      <text xml:space="preserve" bytes="23214">Après avoir fait du [http://www.debian-fr.org/multiseat-plusieurs-utilisateurs-sur-1-pc-t6954.html#p188187 multiposte avec 2 CG], un changement de PC m'oblige à faire la même chose mais avec une seule carte. J'ai essayé de couvrir au maximum toutes les étapes de la mise en place de la solution.

----
==Choix des outils==
Tout d'abord le raisonement pour le choix des outils à été le suivant.
==== Xorg ou Wayland ?====
La réponse a été rapide. Xorg clairement, Wayland est encore trop récent pour pouvoir le faire et aucun document ne traite pour l'instant de ce problème.

==== Xnest ou Xephyr ?====
Xephyr est largement plébiscité et Xnest semble tomber en désuétude. C'est par le développement de Tizen (ex-Meego) que Xephyr semble toujours actif et que de nouvelles fonctionnalités lui sont ajouté. Intel s'en sert intensément et est énormément utilisé pour le développement d'application pour smartphone comme environnement de simulation. (http://www.phoronix.com/scan.php?page=news_item&amp;px=ODc1NQ).
Un soucis avec Xephyr est que le support de evdev semble ne pas avoir été inclus dans les options de compilations. &quot;evdev&quot; permet de monopoliser les claviers et souries. Du coup il faut refaire le paquet soi-même.

==== Et la transition avec systemd ? ====
Il ne semble plus y avoir de problème particulier (http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org)

====Comment gérer 2 écran, 2 session avec une seule carte graphique ?====
Il faut savoir que Xephyr permet de se greffer sur n'importe quel serveur X afin d'afficher une autre session. Par exemple avec la commande &quot;Xephyr -query 127.0.0.1&quot; vous devez pouvoir vous connecter sur votre propre machine si le protocole &quot;XDMCP&quot; est activé sur votre &quot;DM&quot; (GDM, KDM, XDM, ...). Donc le but du jeu sera d'avoir un serveur X qui va &quot;supporter&quot; 2 fenêtre Xephyr. Ces deux dernière se verrons affecter les claviers et les souries de manière exclusif.

====Et le DM ? Debian a adopté GDM(3) avec Gnome mais j'aimerais bien m'en passer.====
Avec GDM (celui de Gnome2) il existe un très bon tutoriel ici : http://netpatia.blogspot.fr/2009/06/multiseat-in-ubuntu-904.html 
Pour GDM3, le problème est que pour l'instant il ne reprend pas toutes les possibilitées de son ancienne version. 
https://live.gnome.org/GDM/ToDo
&quot;-- Allow per-display X Server commands 
		BrianCameron: The [server] and [server-foo] sections of the GDM configuration have been disabled. This means that users who depend on novel configurations which require special Xserver commands per-display is not available.&quot;

Donc bonne nouvelle, il fallait trouver une alternative en le nom de LightDM, qui est issu de Ubuntu ... 

===Prérequis===
Donc pour les pré-requis :
* Ajouter &quot;deb-src http://ftp.fr.debian.org/debian/ &lt;VersionDebian&gt; main contrib non-free&quot;
* Installer les paquage dpkg-dev, build-essential, devscripts, lightDM

==Reconstruction de Xephyr==
===Récupération des sources nécessaires===
On récupère toutes les sources du packet source xorg-server qui comprend Xephyr.

 $ apt-get source xserver-xephyr


Puis récupérer toutes les dépendances spécifique au paquet :

 $ apt-get build-dep xorg-server

Là il va télécharger un certain nombre de paquet de développement (&quot;-dev&quot;), ils sont marqué comme installé automatiquement, donc un deborphan devrait vous les enlever sans trop de problème. Sinon il existe cette commande pour être sur qu'ils sont marqué en tant que &quot;installé automatiquement&quot;, puis un &quot;apt-get autoclean&quot; les supprimera.

===Reconfiguration===
Ensuite tout se passe dans le répertoire &quot;debian&quot;

 $ cd xorg-server-1.12.4/debian


On édite le fichier &quot;changlog&quot; pour monter de version le paquet que l'on va reconstruire. Il est possible de le faire en automatique avec la commande:

 debian/$ dch -n


L'option &quot;-n&quot; permet d'incrémenter le numéro de version de façon mineur, c'est à dire l'ajout de &quot;.1&quot; en fin de numéro de version.

Sinon pour le faire en manuel, il faut ajouter une ligne du type suivant au fichier:
&lt;pre&gt;
xorg-server (2:1.12.4-5.1) UNRELEASED; urgency=low

  * Non-maintainer upload.
  * ajout des paramètre pour Xephyr et evdev

 -- Vous &lt;vous@VotreMachine&gt;  Sun, 03 Mar 2013 22:21:32 +0100
&lt;/pre&gt;

Pour éviter de réinstaller tout Xorg avec le nouveau numéro de version il faut éditer le fichier &quot;debian/control&quot; et modifier la dépendance de Xephyr (ligne ~283). Pour cela il faut remplacer le 
&lt;pre&gt;
Depends :
  xserver-common (&gt;= ${source:Version})
&lt;/pre&gt;
Par :
&lt;pre&gt;
Depends :
  xserver-common (&gt;= 2:1.12.4-5)
&lt;/pre&gt;

Le numéro doit être en accord avec la version de votre Xorg actuellement installé sur votre machine. 
Sinon cette modification est directement possible dans le .deb, toujours dans le fichier &quot;DEBIAN/control&quot;. Pour cela il faut prendre le .deb que vous avez construit, le décompresser, modifier le fichier et faire la commande &quot;dpkg-deb -b &lt;nom du répertoire contenant les fichiers&gt;&quot;. Mais il est plus pratique de le faire avant.

Je ne vous conseille pas de mettre une numéro de version trop élevé car cela pourrait engendrer une incompatibilité avec les futurs versions de Xorg.

Ensuite nous allons modifier les options de compilation en éditant le fichier &quot;rules&quot;, c'est le Makefile de la construction du packet.
Localisez &quot;confflags_main&quot; (ligne ~133) et ajouter les lignes suivant juste en dessous de &quot;--enable-kdrive&quot; (ligne ~156)

 --enable-kdrive-evdev \
 --enable-kdrive-mouse \
 --enable-kdrive-kbd \

===Recompilation===
Passons maintenant à la recompilation proprement dite :
 $ fakeroot ./rules binary

Et laisser la compilation et la création des paquets se faire ... cela peut prendre quelques minutes.

Si pour une raison il vous faut refaire entièrement la compilation il faut d'abord faire la commande suivante
 $ fakeroot ./rules clean

Si c'est juste refaire les &quot;.deb&quot; (correction du numéro de dépendance, ...), alors cette commande suffit.
 $ fakeroot ./rules binary-deb

===Installation du paquet obtenue===
Enfin pour installer votre paket (qui se trouve dans le répertoire supérieur) il faut faire :
 #dpkg -i xserver-xephyr_1.12.4-5_i386.deb
Ou de manière graphique avec GDebi.
====Paquets déjà prêt====
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6_i386.deb.tar]]
* [[{{ns:file}}:Xserver-xephyr_1.12.4-5.1_amd64.deb.tar]]

==Configuration de Xorg==
===Définition de l'existant===
Pour rappel le principe seras d'avoir une session X qui va héberger 2 sessions Xephyr qui serviront les différents sièges.
Tout d'abord nous allons faire un fichier de conf pour le serveur Xorg. Pour ne pas démarrer de rien on peut lancer la commande (en root) &quot;Xorg -configure&quot; qui génère le fichier &quot;xorg.conf.new&quot; dans &quot;/root&quot;. Ensuite on fait un petit &quot;xrandr&quot; pour identifier les sorties disponibles.
&lt;pre&gt;
$ xrandr

Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 593mm
&lt;/pre&gt;

&quot;DVI-0&quot; &amp; &quot;HDMI-0&quot; sont les 2 disponibles sur la machine. On peux aussi trouver du &quot;VGA-0&quot; ou &quot;LVDS&quot; pour les écrans de portables.

===Exemple de fichier de configuration===
Dans cet exemple on peut avoir un &quot;/etc/xorg.conf&quot; comme suivant :
&lt;pre&gt;
##################################################################
Section &quot;Monitor&quot;
	Identifier  &quot;HannsG&quot;
	Option      &quot;PreferredMode&quot; &quot;1920x1200&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
	Option		&quot;Primary&quot; &quot;true&quot;
EndSection

Section &quot;Monitor&quot;
	Identifier  &quot;Acer&quot;
	Option      &quot;PreferredMode&quot; &quot;1680x1050&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
EndSection

Section &quot;Device&quot;
	Identifier  &quot;card0&quot;
	Driver      &quot;radeon&quot;
	# Ici on associe les sorties video avec une section &quot;Monitor&quot;
	# On remarquera le &quot;Monitor&quot; devant le nom des sortie, c'est indispensable (cf : http://www.x.org/archive/current/doc/man/man5/xorg.conf.5.xhtml#heading12)
	Option      &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
	Option      &quot;Monitor-DVI-0&quot; &quot;Acer&quot;
EndSection

##################################################################

Section &quot;Screen&quot;
	Identifier  &quot;ecran1&quot;
	Device      &quot;card0&quot;
	Monitor     &quot;HansG&quot;
	DefaultDepth 24
	SubSection &quot;Display&quot;
 		Depth   24
		Virtual 3600 1200
	EndSubSection
EndSection

Section &quot;ServerLayout&quot;
	Identifier    &quot;dualscreen&quot;
	Screen      0  &quot;ecran1&quot;
EndSection
##################################################################
&lt;/pre&gt;

==Configuration de LightDM==
Nous allons maintenant regarder la configuration de LightDM d'un peu plus près. Le fichier de configuration par défaut expose toutes les options possibles du dit fichier. Nous allons garder le strict minimum
===lightdm.conf===
Pour cela éditons le fichier /etc/lightd/lightdm.conf

&lt;pre&gt;
[LightDM]
 greeter-user=root
 user-authority-in-system-dir=false

 [SeatDefaults]
 xserver-allow-tcp=false
 greeter-hide-users=false
 user-session=lightdm-xsession
 session-wrapper=/etc/X11/Xsession

 [Seat:1]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 1 -t 1680x1050 -P evdev -s /dev/input/by-id/usb-Logitech_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd -v bepo 
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 1
 greeter-session=lightdm-greeter

[Seat:2]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 2 -t 1920x1200 -P evdev -s /dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-path/platform-i8042-serio-0-event-kbd
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 2 -d 1680,0
 greeter-session=lightdm-greeter
&lt;/pre&gt;

Il y a plusieurs chose à savoir concernant le fonctionnement de LightDM afin de comprendre ce qui est fait.
-- La section &quot;SeatDefault&quot; est commune à tous les siège définit après
-- Chaque &quot;Seat&quot; est exécuté dans l'ordre dans un VT différent et ce même si, dans notre cas, tout se passe dans le VT7 ([url=https://code.launchpad.net/~andrzejtp2010/lightdm/lightdm-trunk-xephyr-multiseat/+merge/120286]un patch[url] à été proposé pour palier à ce problème mais il n'a pas été accepté ... pour l'instant)
-- Chaque propriétés de tous les &quot;Seat&quot; sont lancé dans un ordre précis, d'abord tous les &quot;xserver-command&quot;, puis tous les &quot;greeter-setup-script&quot;, enfin tous les &quot;greeter-session&quot;. Si vous mettez d'autres propriétés elle seront exécuter suivant leur ordre pré-établi.
-- Si les &quot;greeter&quot; se termine, lightDM coupe le &quot;xserver-command&quot; correspondant. De même si le &quot;xserver-command&quot; se termine le greeter est coupé.

Donc pour que tout se positionne correctement il faut
-- D'abord lancer le serveur X qui servira de support, ce qui est fait en le mettant en tant que premier &quot;Seat&quot;
-- Lancer les fenêtres Xephyr avec les optons qui vont bien, ce qui est fait avec le script &quot;Xephyr-command.sh&quot; et ses arguments
-- Simuler un &quot;greeter&quot; pour le &quot;Seat :0&quot; afin que le serveur X ne soit pas tuer par lightDM, ce qui est fait avec le script &quot;fake-greeter&quot;
-- Exécuter un script qui va placer les fenêtre Xephyr si besoin et initialiser les variables d'environnement correctement, fait avec &quot;Xephyr-greeter-setup.sh&quot;
-- Exécuter les &quot;greeter&quot; dans les fenêtre Xephyr

===fake-greeter.desktop===
Pour le faux greeter du serveur X il faut créer un fichier dans &quot;/usr/share/xgreeters/fake-greeter.desktop&quot; et y copier son contenu :
&lt;pre&gt;
[Desktop Entry]
Name=LightDM fake greeter
Comment=This runs no greeter at all, it should only be run from LightDM
Exec=sleep infinity
Type=Application
X-Ubuntu-Gettext-Domain=lightdm
&lt;/pre&gt;

Après tout cela nous allons créer un script qui permettra de créer (&quot;Xephyr-command.sh&quot;) et un autre pour placer les fenêtre à l'écran (&quot;Xephyr-greeter-setup.sh&quot;).
Tout d'abord il est nécessaire d'installer le petit utilitaire &quot;wmctrl&quot; avec
 # aptitude install wmctrl
===Xephyr-command.sh===
 Le contenue du fichier &quot;Xephyr-command.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -t, taille : Doit être de la forme 9999x9999, (dafaut = 1024x768)&quot;
  echo &quot;\t -s, sourie : /dev/input/[by-path|by-id]/...event-mouse&quot;
  echo &quot;\t -c, clavier : /dev/input/[by-path|by-id]/...event-kbd&quot;
  echo &quot;\t -l, layout : fr, es, en, ... (défaut = fr)&quot;
  echo &quot;\t -v, variant : fr, latin9, bepo, ... (défaut = &lt;vide&gt;)&quot;
  echo &quot;\t -P, Pilote : ephyr ou evdev (défaut = ephyr)&quot;
}

testExecutable() {
	XEPHYR=`whereis -b Xephyr | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
TAILLE=&quot;1024x768&quot;
SOURIE=
CLAVIER=
LAYOUT=&quot;fr&quot;
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
PILOTE=ephyr # Test = ephyr ; Prod = evdev

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XEPHYR&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;Xephyr : &quot;$XEPHYR
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:t:s:c:l:v:P:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		t|taille)
			TAILLE=&quot;$OPTARG&quot;
		;;

		s|sourie)
			SOURIE=$OPTARG
			if  ! [ -r $SOURIE ];then
				echo &quot;La sourie n'est pas accessible&quot;
				exit 3
			fi
		;;

		c|clavier)
			CLAVIER=$OPTARG
			if  ! [ -r $CLAVIER ];then
				echo &quot;Le clavier n'est pas accessible&quot;
				exit 4
			fi
		;;

		l|layout)
			LAYOUT=$OPTARG
		;;

		v|variant)
			VARIANT=$OPTARG
		;;

		P|Pilote)
			PILOTE=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Construction de la ligne d&quot;argument
OPTIONS=&quot;&quot;

if [ -n &quot;${TAILLE}&quot; ]; then
	OPTIONS=&quot; -screen ${TAILLE}&quot;
fi

if [ -n &quot;${CLAVIER}&quot; ]; then
	if [ -n &quot;${LAYOUT}&quot; ]; then
		OPTIONS=$OPTIONS&quot; -keybd $PILOTE,,device=${CLAVIER},xkbrules=evdev,xkbmodel=evdev,xkblayout=${LAYOUT}&quot;
		if [ -n &quot;${VARIANT}&quot; ]; then
			OPTIONS=$OPTIONS&quot;,xkbvariant=${VARIANT}&quot;
		fi
	fi
fi

if [ -n &quot;${SOURIE}&quot; ]; then
	OPTIONS=$OPTIONS&quot; -mouse $PILOTE,,device=${SOURIE}&quot;
fi

# Lancement de Xephyr en arrière plan
echo &quot;$XEPHYR -retro $OPTIONS :$POSTE&quot;
exec $XEPHYR -retro  $OPTIONS :$POSTE
&lt;/pre&gt;

Petite explication sur la dernière ligne. Le &quot;exec&quot; fait en sorte que ce soit le processus de Xephyr qui prend la place du script, donc il reprend le PID et tout ce qui va bien. Ca permet surtout à ce que le signal USR1 que Xephyr lance au PPID, soit bien récupéré par LightDM et que ce dernier continue son fonctionnement normalement.

===Xephyr-greeter-setup.sh===
Le contenue du fichier &quot;Xephyr-greeter-setup.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p|--poste numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -d, --deplacement : de la forme 'x,y' (en pixel)&quot;
  echo &quot;\t -v, --vt : 7, 8, 9, 10, 11 (defaut = 7)&quot;
}

testExecutable() {
	XWININFO=`whereis -b xwininfo | cut -d' ' -f2`
	WMCTRL=`whereis -b wmctrl | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
DEPLACEMENT=
VT=7
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
ATTENTE=3 # temps en seconde avant de déclencher le &quot;chvt&quot; pour revenir sur le bon VT

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XWININFO&quot; -o -z &quot;$WMCTRL&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;xwininfo : &quot;$XWININFO
	echo &quot;wmctrl : &quot;$WMCTRL
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:d:v:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		d|deplacement)
			DEPLACEMENT=&quot;$OPTARG&quot;
		;;
	
		v|vt)
			VT=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Vieux Hack tout bancal pour revenir au bon VT sans patcher LightDM
(sleep $ATTENTE ; chvt $VT)&amp;

# Deplacement de la fenetre si besoin
if [ -n &quot;$DEPLACEMENT&quot; ]; then
	#On recherche l'ID de la fenêtre Xephyr
        XEP=`XAUTHORITY=/var/run/lightdm/root/:$XRACINE $XWININFO -root -children -all -display :$XRACINE | grep &quot;Xephyr on :$POSTE&quot; --max-count=1`;

	if [ -z &quot;$XEP&quot; ]; then
		echo &quot;fenêtre Xephyr non trouvé pour le poste $POSTE&quot;
		exit 5
	fi
    XEPHYR_WIN_ID=`echo ${XEP} | cut -d' ' -f1`;
    $WMCTRL 2&gt;&amp;1 -v -i -r ${XEPHYR_WIN_ID} -e 0,${DEPLACEMENT},-1,-1;
	if [ $? -ne 0 ]; then
		echo &quot;Erreur lors du déplacement de la fenêtre Xephyr pour le poste $POSTE&quot;
		exit 7
	fi
fi

# Mise en place des variables d'environnement pour le greeter (utile ?)
export DISPLAY=:$POSTE
export XAUTHORITY=/var/run/lightdm/root/:$POSTE
&lt;/pre&gt;
Petite explication concernant la ligne suivante
 (sleep $ATTENTE ; chvt $VT)&amp;
Comme je n'ai pas patché LightDM pour éviter le changement de VT et que Xephyr m'empêche de faire un Ctrl+Alt+7 (avec le driver evdev) pour revenir au bon VT, j'ai du mettre en place un automatisme. Certes c'est loin d'être parfait mais ça rempli correctement son office.

==Modification du système==
===Montage des périphériques USB===
On se rend assez vite compte que si l'on branche une clé USB elle n'apparait pas automatiquement sur le bureau et elle est encore moins &quot;montable&quot; par un utilisateur classique. Elle apparait bien dans la liste des périphériques accessibles (volet de gauche sur nautilus) mais il y a un problème de droit.
Un petit rappel de la chaine mis en jeu lorsque l'on branche une clé USB ou tout autre périphérique.
* Détection par le noyau de l'ajout d'un matériel
* Udev prend le relai et créé les périphériques block nécessaire dans /dev
* PolicyKit termine le travail en mettant en place les autorisations adéquate

Donc le blocage vient de ce dernier composant, il ne reconnait pas une session Xephyr comme &quot;active&quot; et donc refuse le montage de ce type de périphérique par l'utilisateur lambda. Pour passer au delà de cette limitation on va redéfinir la règle de montage, pour cela il faut aller dans le répertoire suivant :
 /etc/polkit-1/localauthority/50-local.d
Et y créer un fichier, &quot;10-udisk.pkla&quot; par exemple
&lt;pre&gt;
[Allow mounting from Xephyr]
Identity=*
Action=org.freedesktop.udisks.change;org.freedesktop.udisks.drive-detach;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.filesystem-unmount-others
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

Voilà, avec Gnome3 dans le volet de gauche de Nautilus on peux cliquer sur l'icone de la clé USB pour quelle se monte correctement, idem avec LXDE.
Je recommande de désactiver l'automontage des périphériques USB afin que l'utilisateur qui branche la clé puisse la monter sans interférence.

===Gestion de l'énergie===
De la même manière que précédemment, par défaut il est impossible d'éteindre l'ordinateur depuis la session graphique (hors LightDM).
Donc pour cela on créé un nouveau fichier (20-upower.pkla) dans :
 /etc/polkit-1/localauthority/50-local.d

&lt;pre&gt;
[Suspend/hibernate permissions]
Identity=*
Action=org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

===Gestion du son===
Par défaut Pulseaudio est lancé lors de l'identification d'un utilisateur, du coup il est le seul qui puisse utiliser la carte son. Pour palier a ce problème il faut rendre pulseaudio démon du système.
Pour cela il faut modifier plusieurs fichiers de configurations :
* /etc/default/pulseaudio
&lt;pre&gt;PULSEAUDIO_SYSTEM_START=1&lt;/pre&gt;

* /etc/pulse/daemon.conf
&lt;pre&gt;daemonize = yes
local-server-type = system&lt;/pre&gt;

* /etc/pulse/client.conf
&lt;pre&gt;autospawn = no&lt;/pre&gt;

* Et enfin modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot;
 usermod -aG pulse-access &lt;username&gt;

([http://askubuntu.com/questions/192522/how-do-i-configure-sound-with-pulseaudio-and-multiseat source])
===Aller plus loin===
* Si l'on veut restreindre ce droit par utilisateur ou par groupe on modifie la ligne &quot;Identity&quot; comme il suit
 Identity=unix-user:toto;unix-group:plugdev
* Pour creuser un peu plus la configuration de ce système on peux aller voir [http://www.freedesktop.org/software/polkit/docs/0.105/pklocalauthority.8.html cette page] sur PolicyKit
* Il serait aussi intéressant de définir des ports USB réservés pour chaque siège, mais je ne sais pas encore comment gérer cela.
* Voir s'il est possible de dédier les voies arrière à un poste et les voies avant à un autre ...

==Conclusion==
Et voilà, tout est prêt pour le redémarrage et admirer les mires de login sur leur écran respectif.

===Avantages===
* Avec du matériel de récupération on peut facilement mettre en place cette solution peut coûteuse
* La satisfaction d'avoir un poste de travail exotique
* Permettre à une tierce personne de profiter de la puissance monstre des machines récente sans se priver de notre fauteuil favori
* Se sentir moins avec une/plusieurs personnes à coté de soi :-p

===Inconvénients===
* Accélération graphique fortement diminué
* Si on débranche les claviers/souries Xephyr ne sait pas les reconnaitre automatiquement au rebranchement. Il faut relancer Xephyr en se déconnectant ou relancer LightDM
* Un &quot;saut&quot; des 2 écrans lors de la déconnexion d'un postes, mais cela est dû à LightDM et son changment de VT intempestif.
* Surveillance de chaque mis à jour de Xorg pour ne pas avoir de surprise au redémarrage
* Recompilation nécessaire en cas de mise à jour majeur de Xorg
* Gestion des montages USB non optimale
* Les voyants du clavier (pavé numérique, Majuscule et arrêt défile) ne réagissent plus, mais la clavier réagit correctement.
* Dans l'espace de travail de certains logiciel (VLC, Gimp) la sourie peux avoir un affichage lacunaire. Par exemple sous GIMP elle n'est visible que lorsqu'on la déplace, avec VLS il y a un carré noir autour d'elle quand on la déplace le reste du temps elle disparait.


===Remerciement===
Un grand merci à ce site pour m'avoir prémaché le travail ... ce qui ne m'as pas empêché d'apporter quelques améliorations à sa solution.
http://beforeafterx.blogspot.fr/2012/08/configuration-of-ligthdm-12.html</text>
      <sha1>enlee6wifi2obq5i8kv3z17cbhmz8vd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5093</id>
      <parentid>5091</parentid>
      <timestamp>2013-04-08T22:45:41Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <comment>/* Gestion du son */</comment>
      <text xml:space="preserve" bytes="24053">Après avoir fait du [http://www.debian-fr.org/multiseat-plusieurs-utilisateurs-sur-1-pc-t6954.html#p188187 multiposte avec 2 CG], un changement de PC m'oblige à faire la même chose mais avec une seule carte. J'ai essayé de couvrir au maximum toutes les étapes de la mise en place de la solution.

----
==Choix des outils==
Tout d'abord le raisonement pour le choix des outils à été le suivant.
==== Xorg ou Wayland ?====
La réponse a été rapide. Xorg clairement, Wayland est encore trop récent pour pouvoir le faire et aucun document ne traite pour l'instant de ce problème.

==== Xnest ou Xephyr ?====
Xephyr est largement plébiscité et Xnest semble tomber en désuétude. C'est par le développement de Tizen (ex-Meego) que Xephyr semble toujours actif et que de nouvelles fonctionnalités lui sont ajouté. Intel s'en sert intensément et est énormément utilisé pour le développement d'application pour smartphone comme environnement de simulation. (http://www.phoronix.com/scan.php?page=news_item&amp;px=ODc1NQ).
Un soucis avec Xephyr est que le support de evdev semble ne pas avoir été inclus dans les options de compilations. &quot;evdev&quot; permet de monopoliser les claviers et souries. Du coup il faut refaire le paquet soi-même.

==== Et la transition avec systemd ? ====
Il ne semble plus y avoir de problème particulier (http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org)

====Comment gérer 2 écran, 2 session avec une seule carte graphique ?====
Il faut savoir que Xephyr permet de se greffer sur n'importe quel serveur X afin d'afficher une autre session. Par exemple avec la commande &quot;Xephyr -query 127.0.0.1&quot; vous devez pouvoir vous connecter sur votre propre machine si le protocole &quot;XDMCP&quot; est activé sur votre &quot;DM&quot; (GDM, KDM, XDM, ...). Donc le but du jeu sera d'avoir un serveur X qui va &quot;supporter&quot; 2 fenêtre Xephyr. Ces deux dernière se verrons affecter les claviers et les souries de manière exclusif.

====Et le DM ? Debian a adopté GDM(3) avec Gnome mais j'aimerais bien m'en passer.====
Avec GDM (celui de Gnome2) il existe un très bon tutoriel ici : http://netpatia.blogspot.fr/2009/06/multiseat-in-ubuntu-904.html 
Pour GDM3, le problème est que pour l'instant il ne reprend pas toutes les possibilitées de son ancienne version. 
https://live.gnome.org/GDM/ToDo
&quot;-- Allow per-display X Server commands 
		BrianCameron: The [server] and [server-foo] sections of the GDM configuration have been disabled. This means that users who depend on novel configurations which require special Xserver commands per-display is not available.&quot;

Donc bonne nouvelle, il fallait trouver une alternative en le nom de LightDM, qui est issu de Ubuntu ... 

===Prérequis===
Donc pour les pré-requis :
* Ajouter &quot;deb-src http://ftp.fr.debian.org/debian/ &lt;VersionDebian&gt; main contrib non-free&quot;
* Installer les paquage dpkg-dev, build-essential, devscripts, lightDM

==Reconstruction de Xephyr==
===Récupération des sources nécessaires===
On récupère toutes les sources du packet source xorg-server qui comprend Xephyr.

 $ apt-get source xserver-xephyr


Puis récupérer toutes les dépendances spécifique au paquet :

 $ apt-get build-dep xorg-server

Là il va télécharger un certain nombre de paquet de développement (&quot;-dev&quot;), ils sont marqué comme installé automatiquement, donc un deborphan devrait vous les enlever sans trop de problème. Sinon il existe cette commande pour être sur qu'ils sont marqué en tant que &quot;installé automatiquement&quot;, puis un &quot;apt-get autoclean&quot; les supprimera.

===Reconfiguration===
Ensuite tout se passe dans le répertoire &quot;debian&quot;

 $ cd xorg-server-1.12.4/debian


On édite le fichier &quot;changlog&quot; pour monter de version le paquet que l'on va reconstruire. Il est possible de le faire en automatique avec la commande:

 debian/$ dch -n


L'option &quot;-n&quot; permet d'incrémenter le numéro de version de façon mineur, c'est à dire l'ajout de &quot;.1&quot; en fin de numéro de version.

Sinon pour le faire en manuel, il faut ajouter une ligne du type suivant au fichier:
&lt;pre&gt;
xorg-server (2:1.12.4-5.1) UNRELEASED; urgency=low

  * Non-maintainer upload.
  * ajout des paramètre pour Xephyr et evdev

 -- Vous &lt;vous@VotreMachine&gt;  Sun, 03 Mar 2013 22:21:32 +0100
&lt;/pre&gt;

Pour éviter de réinstaller tout Xorg avec le nouveau numéro de version il faut éditer le fichier &quot;debian/control&quot; et modifier la dépendance de Xephyr (ligne ~283). Pour cela il faut remplacer le 
&lt;pre&gt;
Depends :
  xserver-common (&gt;= ${source:Version})
&lt;/pre&gt;
Par :
&lt;pre&gt;
Depends :
  xserver-common (&gt;= 2:1.12.4-5)
&lt;/pre&gt;

Le numéro doit être en accord avec la version de votre Xorg actuellement installé sur votre machine. 
Sinon cette modification est directement possible dans le .deb, toujours dans le fichier &quot;DEBIAN/control&quot;. Pour cela il faut prendre le .deb que vous avez construit, le décompresser, modifier le fichier et faire la commande &quot;dpkg-deb -b &lt;nom du répertoire contenant les fichiers&gt;&quot;. Mais il est plus pratique de le faire avant.

Je ne vous conseille pas de mettre une numéro de version trop élevé car cela pourrait engendrer une incompatibilité avec les futurs versions de Xorg.

Ensuite nous allons modifier les options de compilation en éditant le fichier &quot;rules&quot;, c'est le Makefile de la construction du packet.
Localisez &quot;confflags_main&quot; (ligne ~133) et ajouter les lignes suivant juste en dessous de &quot;--enable-kdrive&quot; (ligne ~156)

 --enable-kdrive-evdev \
 --enable-kdrive-mouse \
 --enable-kdrive-kbd \

===Recompilation===
Passons maintenant à la recompilation proprement dite :
 $ fakeroot ./rules binary

Et laisser la compilation et la création des paquets se faire ... cela peut prendre quelques minutes.

Si pour une raison il vous faut refaire entièrement la compilation il faut d'abord faire la commande suivante
 $ fakeroot ./rules clean

Si c'est juste refaire les &quot;.deb&quot; (correction du numéro de dépendance, ...), alors cette commande suffit.
 $ fakeroot ./rules binary-deb

===Installation du paquet obtenue===
Enfin pour installer votre paket (qui se trouve dans le répertoire supérieur) il faut faire :
 #dpkg -i xserver-xephyr_1.12.4-5_i386.deb
Ou de manière graphique avec GDebi.
====Paquets déjà prêt====
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6_i386.deb.tar]]
* [[{{ns:file}}:Xserver-xephyr_1.12.4-5.1_amd64.deb.tar]]

==Configuration de Xorg==
===Définition de l'existant===
Pour rappel le principe seras d'avoir une session X qui va héberger 2 sessions Xephyr qui serviront les différents sièges.
Tout d'abord nous allons faire un fichier de conf pour le serveur Xorg. Pour ne pas démarrer de rien on peut lancer la commande (en root) &quot;Xorg -configure&quot; qui génère le fichier &quot;xorg.conf.new&quot; dans &quot;/root&quot;. Ensuite on fait un petit &quot;xrandr&quot; pour identifier les sorties disponibles.
&lt;pre&gt;
$ xrandr

Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 593mm
&lt;/pre&gt;

&quot;DVI-0&quot; &amp; &quot;HDMI-0&quot; sont les 2 disponibles sur la machine. On peux aussi trouver du &quot;VGA-0&quot; ou &quot;LVDS&quot; pour les écrans de portables.

===Exemple de fichier de configuration===
Dans cet exemple on peut avoir un &quot;/etc/xorg.conf&quot; comme suivant :
&lt;pre&gt;
##################################################################
Section &quot;Monitor&quot;
	Identifier  &quot;HannsG&quot;
	Option      &quot;PreferredMode&quot; &quot;1920x1200&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
	Option		&quot;Primary&quot; &quot;true&quot;
EndSection

Section &quot;Monitor&quot;
	Identifier  &quot;Acer&quot;
	Option      &quot;PreferredMode&quot; &quot;1680x1050&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
EndSection

Section &quot;Device&quot;
	Identifier  &quot;card0&quot;
	Driver      &quot;radeon&quot;
	# Ici on associe les sorties video avec une section &quot;Monitor&quot;
	# On remarquera le &quot;Monitor&quot; devant le nom des sortie, c'est indispensable (cf : http://www.x.org/archive/current/doc/man/man5/xorg.conf.5.xhtml#heading12)
	Option      &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
	Option      &quot;Monitor-DVI-0&quot; &quot;Acer&quot;
EndSection

##################################################################

Section &quot;Screen&quot;
	Identifier  &quot;ecran1&quot;
	Device      &quot;card0&quot;
	Monitor     &quot;HansG&quot;
	DefaultDepth 24
	SubSection &quot;Display&quot;
 		Depth   24
		Virtual 3600 1200
	EndSubSection
EndSection

Section &quot;ServerLayout&quot;
	Identifier    &quot;dualscreen&quot;
	Screen      0  &quot;ecran1&quot;
EndSection
##################################################################
&lt;/pre&gt;

==Configuration de LightDM==
Nous allons maintenant regarder la configuration de LightDM d'un peu plus près. Le fichier de configuration par défaut expose toutes les options possibles du dit fichier. Nous allons garder le strict minimum
===lightdm.conf===
Pour cela éditons le fichier /etc/lightd/lightdm.conf

&lt;pre&gt;
[LightDM]
 greeter-user=root
 user-authority-in-system-dir=false

 [SeatDefaults]
 xserver-allow-tcp=false
 greeter-hide-users=false
 user-session=lightdm-xsession
 session-wrapper=/etc/X11/Xsession

 [Seat:1]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 1 -t 1680x1050 -P evdev -s /dev/input/by-id/usb-Logitech_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd -v bepo 
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 1
 greeter-session=lightdm-greeter

[Seat:2]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 2 -t 1920x1200 -P evdev -s /dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-path/platform-i8042-serio-0-event-kbd
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 2 -d 1680,0
 greeter-session=lightdm-greeter
&lt;/pre&gt;

Il y a plusieurs chose à savoir concernant le fonctionnement de LightDM afin de comprendre ce qui est fait.
-- La section &quot;SeatDefault&quot; est commune à tous les siège définit après
-- Chaque &quot;Seat&quot; est exécuté dans l'ordre dans un VT différent et ce même si, dans notre cas, tout se passe dans le VT7 ([url=https://code.launchpad.net/~andrzejtp2010/lightdm/lightdm-trunk-xephyr-multiseat/+merge/120286]un patch[url] à été proposé pour palier à ce problème mais il n'a pas été accepté ... pour l'instant)
-- Chaque propriétés de tous les &quot;Seat&quot; sont lancé dans un ordre précis, d'abord tous les &quot;xserver-command&quot;, puis tous les &quot;greeter-setup-script&quot;, enfin tous les &quot;greeter-session&quot;. Si vous mettez d'autres propriétés elle seront exécuter suivant leur ordre pré-établi.
-- Si les &quot;greeter&quot; se termine, lightDM coupe le &quot;xserver-command&quot; correspondant. De même si le &quot;xserver-command&quot; se termine le greeter est coupé.

Donc pour que tout se positionne correctement il faut
-- D'abord lancer le serveur X qui servira de support, ce qui est fait en le mettant en tant que premier &quot;Seat&quot;
-- Lancer les fenêtres Xephyr avec les optons qui vont bien, ce qui est fait avec le script &quot;Xephyr-command.sh&quot; et ses arguments
-- Simuler un &quot;greeter&quot; pour le &quot;Seat :0&quot; afin que le serveur X ne soit pas tuer par lightDM, ce qui est fait avec le script &quot;fake-greeter&quot;
-- Exécuter un script qui va placer les fenêtre Xephyr si besoin et initialiser les variables d'environnement correctement, fait avec &quot;Xephyr-greeter-setup.sh&quot;
-- Exécuter les &quot;greeter&quot; dans les fenêtre Xephyr

===fake-greeter.desktop===
Pour le faux greeter du serveur X il faut créer un fichier dans &quot;/usr/share/xgreeters/fake-greeter.desktop&quot; et y copier son contenu :
&lt;pre&gt;
[Desktop Entry]
Name=LightDM fake greeter
Comment=This runs no greeter at all, it should only be run from LightDM
Exec=sleep infinity
Type=Application
X-Ubuntu-Gettext-Domain=lightdm
&lt;/pre&gt;

Après tout cela nous allons créer un script qui permettra de créer (&quot;Xephyr-command.sh&quot;) et un autre pour placer les fenêtre à l'écran (&quot;Xephyr-greeter-setup.sh&quot;).
Tout d'abord il est nécessaire d'installer le petit utilitaire &quot;wmctrl&quot; avec
 # aptitude install wmctrl
===Xephyr-command.sh===
 Le contenue du fichier &quot;Xephyr-command.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -t, taille : Doit être de la forme 9999x9999, (dafaut = 1024x768)&quot;
  echo &quot;\t -s, sourie : /dev/input/[by-path|by-id]/...event-mouse&quot;
  echo &quot;\t -c, clavier : /dev/input/[by-path|by-id]/...event-kbd&quot;
  echo &quot;\t -l, layout : fr, es, en, ... (défaut = fr)&quot;
  echo &quot;\t -v, variant : fr, latin9, bepo, ... (défaut = &lt;vide&gt;)&quot;
  echo &quot;\t -P, Pilote : ephyr ou evdev (défaut = ephyr)&quot;
}

testExecutable() {
	XEPHYR=`whereis -b Xephyr | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
TAILLE=&quot;1024x768&quot;
SOURIE=
CLAVIER=
LAYOUT=&quot;fr&quot;
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
PILOTE=ephyr # Test = ephyr ; Prod = evdev

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XEPHYR&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;Xephyr : &quot;$XEPHYR
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:t:s:c:l:v:P:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		t|taille)
			TAILLE=&quot;$OPTARG&quot;
		;;

		s|sourie)
			SOURIE=$OPTARG
			if  ! [ -r $SOURIE ];then
				echo &quot;La sourie n'est pas accessible&quot;
				exit 3
			fi
		;;

		c|clavier)
			CLAVIER=$OPTARG
			if  ! [ -r $CLAVIER ];then
				echo &quot;Le clavier n'est pas accessible&quot;
				exit 4
			fi
		;;

		l|layout)
			LAYOUT=$OPTARG
		;;

		v|variant)
			VARIANT=$OPTARG
		;;

		P|Pilote)
			PILOTE=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Construction de la ligne d&quot;argument
OPTIONS=&quot;&quot;

if [ -n &quot;${TAILLE}&quot; ]; then
	OPTIONS=&quot; -screen ${TAILLE}&quot;
fi

if [ -n &quot;${CLAVIER}&quot; ]; then
	if [ -n &quot;${LAYOUT}&quot; ]; then
		OPTIONS=$OPTIONS&quot; -keybd $PILOTE,,device=${CLAVIER},xkbrules=evdev,xkbmodel=evdev,xkblayout=${LAYOUT}&quot;
		if [ -n &quot;${VARIANT}&quot; ]; then
			OPTIONS=$OPTIONS&quot;,xkbvariant=${VARIANT}&quot;
		fi
	fi
fi

if [ -n &quot;${SOURIE}&quot; ]; then
	OPTIONS=$OPTIONS&quot; -mouse $PILOTE,,device=${SOURIE}&quot;
fi

# Lancement de Xephyr en arrière plan
echo &quot;$XEPHYR -retro $OPTIONS :$POSTE&quot;
exec $XEPHYR -retro  $OPTIONS :$POSTE
&lt;/pre&gt;

Petite explication sur la dernière ligne. Le &quot;exec&quot; fait en sorte que ce soit le processus de Xephyr qui prend la place du script, donc il reprend le PID et tout ce qui va bien. Ca permet surtout à ce que le signal USR1 que Xephyr lance au PPID, soit bien récupéré par LightDM et que ce dernier continue son fonctionnement normalement.

===Xephyr-greeter-setup.sh===
Le contenue du fichier &quot;Xephyr-greeter-setup.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p|--poste numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -d, --deplacement : de la forme 'x,y' (en pixel)&quot;
  echo &quot;\t -v, --vt : 7, 8, 9, 10, 11 (defaut = 7)&quot;
}

testExecutable() {
	XWININFO=`whereis -b xwininfo | cut -d' ' -f2`
	WMCTRL=`whereis -b wmctrl | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
DEPLACEMENT=
VT=7
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
ATTENTE=3 # temps en seconde avant de déclencher le &quot;chvt&quot; pour revenir sur le bon VT

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XWININFO&quot; -o -z &quot;$WMCTRL&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;xwininfo : &quot;$XWININFO
	echo &quot;wmctrl : &quot;$WMCTRL
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:d:v:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		d|deplacement)
			DEPLACEMENT=&quot;$OPTARG&quot;
		;;
	
		v|vt)
			VT=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Vieux Hack tout bancal pour revenir au bon VT sans patcher LightDM
(sleep $ATTENTE ; chvt $VT)&amp;

# Deplacement de la fenetre si besoin
if [ -n &quot;$DEPLACEMENT&quot; ]; then
	#On recherche l'ID de la fenêtre Xephyr
        XEP=`XAUTHORITY=/var/run/lightdm/root/:$XRACINE $XWININFO -root -children -all -display :$XRACINE | grep &quot;Xephyr on :$POSTE&quot; --max-count=1`;

	if [ -z &quot;$XEP&quot; ]; then
		echo &quot;fenêtre Xephyr non trouvé pour le poste $POSTE&quot;
		exit 5
	fi
    XEPHYR_WIN_ID=`echo ${XEP} | cut -d' ' -f1`;
    $WMCTRL 2&gt;&amp;1 -v -i -r ${XEPHYR_WIN_ID} -e 0,${DEPLACEMENT},-1,-1;
	if [ $? -ne 0 ]; then
		echo &quot;Erreur lors du déplacement de la fenêtre Xephyr pour le poste $POSTE&quot;
		exit 7
	fi
fi

# Mise en place des variables d'environnement pour le greeter (utile ?)
export DISPLAY=:$POSTE
export XAUTHORITY=/var/run/lightdm/root/:$POSTE
&lt;/pre&gt;
Petite explication concernant la ligne suivante
 (sleep $ATTENTE ; chvt $VT)&amp;
Comme je n'ai pas patché LightDM pour éviter le changement de VT et que Xephyr m'empêche de faire un Ctrl+Alt+7 (avec le driver evdev) pour revenir au bon VT, j'ai du mettre en place un automatisme. Certes c'est loin d'être parfait mais ça rempli correctement son office.

==Modification du système==
===Montage des périphériques USB===
On se rend assez vite compte que si l'on branche une clé USB elle n'apparait pas automatiquement sur le bureau et elle est encore moins &quot;montable&quot; par un utilisateur classique. Elle apparait bien dans la liste des périphériques accessibles (volet de gauche sur nautilus) mais il y a un problème de droit.
Un petit rappel de la chaine mis en jeu lorsque l'on branche une clé USB ou tout autre périphérique.
* Détection par le noyau de l'ajout d'un matériel
* Udev prend le relai et créé les périphériques block nécessaire dans /dev
* PolicyKit termine le travail en mettant en place les autorisations adéquate

Donc le blocage vient de ce dernier composant, il ne reconnait pas une session Xephyr comme &quot;active&quot; et donc refuse le montage de ce type de périphérique par l'utilisateur lambda. Pour passer au delà de cette limitation on va redéfinir la règle de montage, pour cela il faut aller dans le répertoire suivant :
 /etc/polkit-1/localauthority/50-local.d
Et y créer un fichier, &quot;10-udisk.pkla&quot; par exemple
&lt;pre&gt;
[Allow mounting from Xephyr]
Identity=*
Action=org.freedesktop.udisks.change;org.freedesktop.udisks.drive-detach;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.filesystem-unmount-others
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

Voilà, avec Gnome3 dans le volet de gauche de Nautilus on peux cliquer sur l'icone de la clé USB pour quelle se monte correctement, idem avec LXDE.
Je recommande de désactiver l'automontage des périphériques USB afin que l'utilisateur qui branche la clé puisse la monter sans interférence.

===Gestion de l'énergie===
De la même manière que précédemment, par défaut il est impossible d'éteindre l'ordinateur depuis la session graphique (hors LightDM).
Donc pour cela on créé un nouveau fichier (20-upower.pkla) dans :
 /etc/polkit-1/localauthority/50-local.d

&lt;pre&gt;
[Suspend/hibernate permissions]
Identity=*
Action=org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

===Gestion du son===
Par défaut Pulseaudio est lancé lors de l'identification d'un utilisateur, du coup il est le seul qui puisse utiliser la carte son. Pour palier a ce problème il faut rendre pulseaudio démon du système.
Pour cela il faut modifier plusieurs fichiers de configurations :
* /etc/default/pulseaudio
&lt;pre&gt;PULSEAUDIO_SYSTEM_START=1&lt;/pre&gt;

* /etc/pulse/daemon.conf
&lt;pre&gt;daemonize = yes
local-server-type = system&lt;/pre&gt;

* /etc/pulse/client.conf
&lt;pre&gt;autospawn = no&lt;/pre&gt;

* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot;
 usermod -aG pulse-access &lt;username&gt;

* On peux enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse

([http://askubuntu.com/questions/192522/how-do-i-configure-sound-with-pulseaudio-and-multiseat source] [http://disjunkt.com/jd/2010/en/multiseat-linux/multiseat-linux-system-wide-pulseaudio-for-routing-sounds-109/ source2])

====Modification des DE (Gnome, KDE, LXDE, ...)====
Par défaut les environnements graphique exécute Pulseaudio en espace utilisateur, ce qu'il ne faut plus faire puisqu'il est partagé, ce qui ne devrais plus être possible si vous avez enlever les utilisateurs des groupes. Donc il est nécessaire de désactiver cela avec l'outil de votre environnement de Bureau. Par exemple pour LXDE il s'agit de lxsession, si vous avez des problème pour cet environnement [http://wiki.lxde.org/en/Autostart cette page (et ses liens)] devrait vous aider

===Aller plus loin===
* Si l'on veut restreindre ce droit par utilisateur ou par groupe on modifie la ligne &quot;Identity&quot; comme il suit
 Identity=unix-user:toto;unix-group:plugdev
* Pour creuser un peu plus la configuration de ce système on peux aller voir [http://www.freedesktop.org/software/polkit/docs/0.105/pklocalauthority.8.html cette page] sur PolicyKit
* Il serait aussi intéressant de définir des ports USB réservés pour chaque siège, mais je ne sais pas encore comment gérer cela.
* Voir s'il est possible de dédier les voies arrière à un poste et les voies avant à un autre ...

==Conclusion==
Et voilà, tout est prêt pour le redémarrage et admirer les mires de login sur leur écran respectif.

===Avantages===
* Avec du matériel de récupération on peut facilement mettre en place cette solution peut coûteuse
* La satisfaction d'avoir un poste de travail exotique
* Permettre à une tierce personne de profiter de la puissance monstre des machines récente sans se priver de notre fauteuil favori
* Se sentir moins avec une/plusieurs personnes à coté de soi :-p

===Inconvénients===
* Accélération graphique fortement diminué
* Si on débranche les claviers/souries Xephyr ne sait pas les reconnaitre automatiquement au rebranchement. Il faut relancer Xephyr en se déconnectant ou relancer LightDM
* Un &quot;saut&quot; des 2 écrans lors de la déconnexion d'un postes, mais cela est dû à LightDM et son changment de VT intempestif.
* Surveillance de chaque mis à jour de Xorg pour ne pas avoir de surprise au redémarrage
* Recompilation nécessaire en cas de mise à jour majeur de Xorg
* Gestion des montages USB non optimale
* Les voyants du clavier (pavé numérique, Majuscule et arrêt défile) ne réagissent plus, mais la clavier réagit correctement.
* Dans l'espace de travail de certains logiciel (VLC, Gimp) la sourie peux avoir un affichage lacunaire. Par exemple sous GIMP elle n'est visible que lorsqu'on la déplace, avec VLS il y a un carré noir autour d'elle quand on la déplace le reste du temps elle disparait.


===Remerciement===
Un grand merci à ce site pour m'avoir prémaché le travail ... ce qui ne m'as pas empêché d'apporter quelques améliorations à sa solution.
http://beforeafterx.blogspot.fr/2012/08/configuration-of-ligthdm-12.html</text>
      <sha1>de8jnnmhfy0dvazn0t1upf3d6u5l76i</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5111</id>
      <parentid>5093</parentid>
      <timestamp>2013-04-25T21:02:09Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <comment>/* Recompilation */</comment>
      <text xml:space="preserve" bytes="24117">Après avoir fait du [http://www.debian-fr.org/multiseat-plusieurs-utilisateurs-sur-1-pc-t6954.html#p188187 multiposte avec 2 CG], un changement de PC m'oblige à faire la même chose mais avec une seule carte. J'ai essayé de couvrir au maximum toutes les étapes de la mise en place de la solution.

----
==Choix des outils==
Tout d'abord le raisonement pour le choix des outils à été le suivant.
==== Xorg ou Wayland ?====
La réponse a été rapide. Xorg clairement, Wayland est encore trop récent pour pouvoir le faire et aucun document ne traite pour l'instant de ce problème.

==== Xnest ou Xephyr ?====
Xephyr est largement plébiscité et Xnest semble tomber en désuétude. C'est par le développement de Tizen (ex-Meego) que Xephyr semble toujours actif et que de nouvelles fonctionnalités lui sont ajouté. Intel s'en sert intensément et est énormément utilisé pour le développement d'application pour smartphone comme environnement de simulation. (http://www.phoronix.com/scan.php?page=news_item&amp;px=ODc1NQ).
Un soucis avec Xephyr est que le support de evdev semble ne pas avoir été inclus dans les options de compilations. &quot;evdev&quot; permet de monopoliser les claviers et souries. Du coup il faut refaire le paquet soi-même.

==== Et la transition avec systemd ? ====
Il ne semble plus y avoir de problème particulier (http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org)

====Comment gérer 2 écran, 2 session avec une seule carte graphique ?====
Il faut savoir que Xephyr permet de se greffer sur n'importe quel serveur X afin d'afficher une autre session. Par exemple avec la commande &quot;Xephyr -query 127.0.0.1&quot; vous devez pouvoir vous connecter sur votre propre machine si le protocole &quot;XDMCP&quot; est activé sur votre &quot;DM&quot; (GDM, KDM, XDM, ...). Donc le but du jeu sera d'avoir un serveur X qui va &quot;supporter&quot; 2 fenêtre Xephyr. Ces deux dernière se verrons affecter les claviers et les souries de manière exclusif.

====Et le DM ? Debian a adopté GDM(3) avec Gnome mais j'aimerais bien m'en passer.====
Avec GDM (celui de Gnome2) il existe un très bon tutoriel ici : http://netpatia.blogspot.fr/2009/06/multiseat-in-ubuntu-904.html 
Pour GDM3, le problème est que pour l'instant il ne reprend pas toutes les possibilitées de son ancienne version. 
https://live.gnome.org/GDM/ToDo
&quot;-- Allow per-display X Server commands 
		BrianCameron: The [server] and [server-foo] sections of the GDM configuration have been disabled. This means that users who depend on novel configurations which require special Xserver commands per-display is not available.&quot;

Donc bonne nouvelle, il fallait trouver une alternative en le nom de LightDM, qui est issu de Ubuntu ... 

===Prérequis===
Donc pour les pré-requis :
* Ajouter &quot;deb-src http://ftp.fr.debian.org/debian/ &lt;VersionDebian&gt; main contrib non-free&quot;
* Installer les paquage dpkg-dev, build-essential, devscripts, lightDM

==Reconstruction de Xephyr==
===Récupération des sources nécessaires===
On récupère toutes les sources du packet source xorg-server qui comprend Xephyr.

 $ apt-get source xserver-xephyr


Puis récupérer toutes les dépendances spécifique au paquet :

 $ apt-get build-dep xorg-server

Là il va télécharger un certain nombre de paquet de développement (&quot;-dev&quot;), ils sont marqué comme installé automatiquement, donc un deborphan devrait vous les enlever sans trop de problème. Sinon il existe cette commande pour être sur qu'ils sont marqué en tant que &quot;installé automatiquement&quot;, puis un &quot;apt-get autoclean&quot; les supprimera.

===Reconfiguration===
Ensuite tout se passe dans le répertoire &quot;debian&quot;

 $ cd xorg-server-1.12.4/debian


On édite le fichier &quot;changlog&quot; pour monter de version le paquet que l'on va reconstruire. Il est possible de le faire en automatique avec la commande:

 debian/$ dch -n


L'option &quot;-n&quot; permet d'incrémenter le numéro de version de façon mineur, c'est à dire l'ajout de &quot;.1&quot; en fin de numéro de version.

Sinon pour le faire en manuel, il faut ajouter une ligne du type suivant au fichier:
&lt;pre&gt;
xorg-server (2:1.12.4-5.1) UNRELEASED; urgency=low

  * Non-maintainer upload.
  * ajout des paramètre pour Xephyr et evdev

 -- Vous &lt;vous@VotreMachine&gt;  Sun, 03 Mar 2013 22:21:32 +0100
&lt;/pre&gt;

Pour éviter de réinstaller tout Xorg avec le nouveau numéro de version il faut éditer le fichier &quot;debian/control&quot; et modifier la dépendance de Xephyr (ligne ~283). Pour cela il faut remplacer le 
&lt;pre&gt;
Depends :
  xserver-common (&gt;= ${source:Version})
&lt;/pre&gt;
Par :
&lt;pre&gt;
Depends :
  xserver-common (&gt;= 2:1.12.4-5)
&lt;/pre&gt;

Le numéro doit être en accord avec la version de votre Xorg actuellement installé sur votre machine. 
Sinon cette modification est directement possible dans le .deb, toujours dans le fichier &quot;DEBIAN/control&quot;. Pour cela il faut prendre le .deb que vous avez construit, le décompresser, modifier le fichier et faire la commande &quot;dpkg-deb -b &lt;nom du répertoire contenant les fichiers&gt;&quot;. Mais il est plus pratique de le faire avant.

Je ne vous conseille pas de mettre une numéro de version trop élevé car cela pourrait engendrer une incompatibilité avec les futurs versions de Xorg.

Ensuite nous allons modifier les options de compilation en éditant le fichier &quot;rules&quot;, c'est le Makefile de la construction du packet.
Localisez &quot;confflags_main&quot; (ligne ~133) et ajouter les lignes suivant juste en dessous de &quot;--enable-kdrive&quot; (ligne ~156)

 --enable-kdrive-evdev \
 --enable-kdrive-mouse \
 --enable-kdrive-kbd \

===Recompilation===
Passons maintenant à la recompilation proprement dite, ressortez du répertoire debian et faites :
 $ fakeroot ./debian/rules binary

Et laisser la compilation et la création des paquets se faire ... cela peut prendre quelques minutes.

Si pour une raison il vous faut refaire entièrement la compilation il faut d'abord faire la commande suivante
 $ fakeroot ./debian/rules clean

Si c'est juste refaire les &quot;.deb&quot; (correction du numéro de dépendance, ...), alors cette commande suffit.
 $ fakeroot ./debian/rules binary-deb

===Installation du paquet obtenue===
Enfin pour installer votre paket (qui se trouve dans le répertoire supérieur) il faut faire :
 #dpkg -i xserver-xephyr_1.12.4-5_i386.deb
Ou de manière graphique avec GDebi.
====Paquets déjà prêt====
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6_i386.deb.tar]]
* [[{{ns:file}}:Xserver-xephyr_1.12.4-5.1_amd64.deb.tar]]

==Configuration de Xorg==
===Définition de l'existant===
Pour rappel le principe seras d'avoir une session X qui va héberger 2 sessions Xephyr qui serviront les différents sièges.
Tout d'abord nous allons faire un fichier de conf pour le serveur Xorg. Pour ne pas démarrer de rien on peut lancer la commande (en root) &quot;Xorg -configure&quot; qui génère le fichier &quot;xorg.conf.new&quot; dans &quot;/root&quot;. Ensuite on fait un petit &quot;xrandr&quot; pour identifier les sorties disponibles.
&lt;pre&gt;
$ xrandr

Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 593mm
&lt;/pre&gt;

&quot;DVI-0&quot; &amp; &quot;HDMI-0&quot; sont les 2 disponibles sur la machine. On peux aussi trouver du &quot;VGA-0&quot; ou &quot;LVDS&quot; pour les écrans de portables.

===Exemple de fichier de configuration===
Dans cet exemple on peut avoir un &quot;/etc/xorg.conf&quot; comme suivant :
&lt;pre&gt;
##################################################################
Section &quot;Monitor&quot;
	Identifier  &quot;HannsG&quot;
	Option      &quot;PreferredMode&quot; &quot;1920x1200&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
	Option		&quot;Primary&quot; &quot;true&quot;
EndSection

Section &quot;Monitor&quot;
	Identifier  &quot;Acer&quot;
	Option      &quot;PreferredMode&quot; &quot;1680x1050&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
EndSection

Section &quot;Device&quot;
	Identifier  &quot;card0&quot;
	Driver      &quot;radeon&quot;
	# Ici on associe les sorties video avec une section &quot;Monitor&quot;
	# On remarquera le &quot;Monitor&quot; devant le nom des sortie, c'est indispensable (cf : http://www.x.org/archive/current/doc/man/man5/xorg.conf.5.xhtml#heading12)
	Option      &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
	Option      &quot;Monitor-DVI-0&quot; &quot;Acer&quot;
EndSection

##################################################################

Section &quot;Screen&quot;
	Identifier  &quot;ecran1&quot;
	Device      &quot;card0&quot;
	Monitor     &quot;HansG&quot;
	DefaultDepth 24
	SubSection &quot;Display&quot;
 		Depth   24
		Virtual 3600 1200
	EndSubSection
EndSection

Section &quot;ServerLayout&quot;
	Identifier    &quot;dualscreen&quot;
	Screen      0  &quot;ecran1&quot;
EndSection
##################################################################
&lt;/pre&gt;

==Configuration de LightDM==
Nous allons maintenant regarder la configuration de LightDM d'un peu plus près. Le fichier de configuration par défaut expose toutes les options possibles du dit fichier. Nous allons garder le strict minimum
===lightdm.conf===
Pour cela éditons le fichier /etc/lightd/lightdm.conf

&lt;pre&gt;
[LightDM]
 greeter-user=root
 user-authority-in-system-dir=false

 [SeatDefaults]
 xserver-allow-tcp=false
 greeter-hide-users=false
 user-session=lightdm-xsession
 session-wrapper=/etc/X11/Xsession

 [Seat:1]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 1 -t 1680x1050 -P evdev -s /dev/input/by-id/usb-Logitech_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd -v bepo 
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 1
 greeter-session=lightdm-greeter

[Seat:2]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 2 -t 1920x1200 -P evdev -s /dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-path/platform-i8042-serio-0-event-kbd
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 2 -d 1680,0
 greeter-session=lightdm-greeter
&lt;/pre&gt;

Il y a plusieurs chose à savoir concernant le fonctionnement de LightDM afin de comprendre ce qui est fait.
-- La section &quot;SeatDefault&quot; est commune à tous les siège définit après
-- Chaque &quot;Seat&quot; est exécuté dans l'ordre dans un VT différent et ce même si, dans notre cas, tout se passe dans le VT7 ([url=https://code.launchpad.net/~andrzejtp2010/lightdm/lightdm-trunk-xephyr-multiseat/+merge/120286]un patch[url] à été proposé pour palier à ce problème mais il n'a pas été accepté ... pour l'instant)
-- Chaque propriétés de tous les &quot;Seat&quot; sont lancé dans un ordre précis, d'abord tous les &quot;xserver-command&quot;, puis tous les &quot;greeter-setup-script&quot;, enfin tous les &quot;greeter-session&quot;. Si vous mettez d'autres propriétés elle seront exécuter suivant leur ordre pré-établi.
-- Si les &quot;greeter&quot; se termine, lightDM coupe le &quot;xserver-command&quot; correspondant. De même si le &quot;xserver-command&quot; se termine le greeter est coupé.

Donc pour que tout se positionne correctement il faut
-- D'abord lancer le serveur X qui servira de support, ce qui est fait en le mettant en tant que premier &quot;Seat&quot;
-- Lancer les fenêtres Xephyr avec les optons qui vont bien, ce qui est fait avec le script &quot;Xephyr-command.sh&quot; et ses arguments
-- Simuler un &quot;greeter&quot; pour le &quot;Seat :0&quot; afin que le serveur X ne soit pas tuer par lightDM, ce qui est fait avec le script &quot;fake-greeter&quot;
-- Exécuter un script qui va placer les fenêtre Xephyr si besoin et initialiser les variables d'environnement correctement, fait avec &quot;Xephyr-greeter-setup.sh&quot;
-- Exécuter les &quot;greeter&quot; dans les fenêtre Xephyr

===fake-greeter.desktop===
Pour le faux greeter du serveur X il faut créer un fichier dans &quot;/usr/share/xgreeters/fake-greeter.desktop&quot; et y copier son contenu :
&lt;pre&gt;
[Desktop Entry]
Name=LightDM fake greeter
Comment=This runs no greeter at all, it should only be run from LightDM
Exec=sleep infinity
Type=Application
X-Ubuntu-Gettext-Domain=lightdm
&lt;/pre&gt;

Après tout cela nous allons créer un script qui permettra de créer (&quot;Xephyr-command.sh&quot;) et un autre pour placer les fenêtre à l'écran (&quot;Xephyr-greeter-setup.sh&quot;).
Tout d'abord il est nécessaire d'installer le petit utilitaire &quot;wmctrl&quot; avec
 # aptitude install wmctrl
===Xephyr-command.sh===
 Le contenue du fichier &quot;Xephyr-command.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -t, taille : Doit être de la forme 9999x9999, (dafaut = 1024x768)&quot;
  echo &quot;\t -s, sourie : /dev/input/[by-path|by-id]/...event-mouse&quot;
  echo &quot;\t -c, clavier : /dev/input/[by-path|by-id]/...event-kbd&quot;
  echo &quot;\t -l, layout : fr, es, en, ... (défaut = fr)&quot;
  echo &quot;\t -v, variant : fr, latin9, bepo, ... (défaut = &lt;vide&gt;)&quot;
  echo &quot;\t -P, Pilote : ephyr ou evdev (défaut = ephyr)&quot;
}

testExecutable() {
	XEPHYR=`whereis -b Xephyr | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
TAILLE=&quot;1024x768&quot;
SOURIE=
CLAVIER=
LAYOUT=&quot;fr&quot;
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
PILOTE=ephyr # Test = ephyr ; Prod = evdev

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XEPHYR&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;Xephyr : &quot;$XEPHYR
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:t:s:c:l:v:P:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		t|taille)
			TAILLE=&quot;$OPTARG&quot;
		;;

		s|sourie)
			SOURIE=$OPTARG
			if  ! [ -r $SOURIE ];then
				echo &quot;La sourie n'est pas accessible&quot;
				exit 3
			fi
		;;

		c|clavier)
			CLAVIER=$OPTARG
			if  ! [ -r $CLAVIER ];then
				echo &quot;Le clavier n'est pas accessible&quot;
				exit 4
			fi
		;;

		l|layout)
			LAYOUT=$OPTARG
		;;

		v|variant)
			VARIANT=$OPTARG
		;;

		P|Pilote)
			PILOTE=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Construction de la ligne d&quot;argument
OPTIONS=&quot;&quot;

if [ -n &quot;${TAILLE}&quot; ]; then
	OPTIONS=&quot; -screen ${TAILLE}&quot;
fi

if [ -n &quot;${CLAVIER}&quot; ]; then
	if [ -n &quot;${LAYOUT}&quot; ]; then
		OPTIONS=$OPTIONS&quot; -keybd $PILOTE,,device=${CLAVIER},xkbrules=evdev,xkbmodel=evdev,xkblayout=${LAYOUT}&quot;
		if [ -n &quot;${VARIANT}&quot; ]; then
			OPTIONS=$OPTIONS&quot;,xkbvariant=${VARIANT}&quot;
		fi
	fi
fi

if [ -n &quot;${SOURIE}&quot; ]; then
	OPTIONS=$OPTIONS&quot; -mouse $PILOTE,,device=${SOURIE}&quot;
fi

# Lancement de Xephyr en arrière plan
echo &quot;$XEPHYR -retro $OPTIONS :$POSTE&quot;
exec $XEPHYR -retro  $OPTIONS :$POSTE
&lt;/pre&gt;

Petite explication sur la dernière ligne. Le &quot;exec&quot; fait en sorte que ce soit le processus de Xephyr qui prend la place du script, donc il reprend le PID et tout ce qui va bien. Ca permet surtout à ce que le signal USR1 que Xephyr lance au PPID, soit bien récupéré par LightDM et que ce dernier continue son fonctionnement normalement.

===Xephyr-greeter-setup.sh===
Le contenue du fichier &quot;Xephyr-greeter-setup.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p|--poste numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -d, --deplacement : de la forme 'x,y' (en pixel)&quot;
  echo &quot;\t -v, --vt : 7, 8, 9, 10, 11 (defaut = 7)&quot;
}

testExecutable() {
	XWININFO=`whereis -b xwininfo | cut -d' ' -f2`
	WMCTRL=`whereis -b wmctrl | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
DEPLACEMENT=
VT=7
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
ATTENTE=3 # temps en seconde avant de déclencher le &quot;chvt&quot; pour revenir sur le bon VT

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XWININFO&quot; -o -z &quot;$WMCTRL&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;xwininfo : &quot;$XWININFO
	echo &quot;wmctrl : &quot;$WMCTRL
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:d:v:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		d|deplacement)
			DEPLACEMENT=&quot;$OPTARG&quot;
		;;
	
		v|vt)
			VT=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Vieux Hack tout bancal pour revenir au bon VT sans patcher LightDM
(sleep $ATTENTE ; chvt $VT)&amp;

# Deplacement de la fenetre si besoin
if [ -n &quot;$DEPLACEMENT&quot; ]; then
	#On recherche l'ID de la fenêtre Xephyr
        XEP=`XAUTHORITY=/var/run/lightdm/root/:$XRACINE $XWININFO -root -children -all -display :$XRACINE | grep &quot;Xephyr on :$POSTE&quot; --max-count=1`;

	if [ -z &quot;$XEP&quot; ]; then
		echo &quot;fenêtre Xephyr non trouvé pour le poste $POSTE&quot;
		exit 5
	fi
    XEPHYR_WIN_ID=`echo ${XEP} | cut -d' ' -f1`;
    $WMCTRL 2&gt;&amp;1 -v -i -r ${XEPHYR_WIN_ID} -e 0,${DEPLACEMENT},-1,-1;
	if [ $? -ne 0 ]; then
		echo &quot;Erreur lors du déplacement de la fenêtre Xephyr pour le poste $POSTE&quot;
		exit 7
	fi
fi

# Mise en place des variables d'environnement pour le greeter (utile ?)
export DISPLAY=:$POSTE
export XAUTHORITY=/var/run/lightdm/root/:$POSTE
&lt;/pre&gt;
Petite explication concernant la ligne suivante
 (sleep $ATTENTE ; chvt $VT)&amp;
Comme je n'ai pas patché LightDM pour éviter le changement de VT et que Xephyr m'empêche de faire un Ctrl+Alt+7 (avec le driver evdev) pour revenir au bon VT, j'ai du mettre en place un automatisme. Certes c'est loin d'être parfait mais ça rempli correctement son office.

==Modification du système==
===Montage des périphériques USB===
On se rend assez vite compte que si l'on branche une clé USB elle n'apparait pas automatiquement sur le bureau et elle est encore moins &quot;montable&quot; par un utilisateur classique. Elle apparait bien dans la liste des périphériques accessibles (volet de gauche sur nautilus) mais il y a un problème de droit.
Un petit rappel de la chaine mis en jeu lorsque l'on branche une clé USB ou tout autre périphérique.
* Détection par le noyau de l'ajout d'un matériel
* Udev prend le relai et créé les périphériques block nécessaire dans /dev
* PolicyKit termine le travail en mettant en place les autorisations adéquate

Donc le blocage vient de ce dernier composant, il ne reconnait pas une session Xephyr comme &quot;active&quot; et donc refuse le montage de ce type de périphérique par l'utilisateur lambda. Pour passer au delà de cette limitation on va redéfinir la règle de montage, pour cela il faut aller dans le répertoire suivant :
 /etc/polkit-1/localauthority/50-local.d
Et y créer un fichier, &quot;10-udisk.pkla&quot; par exemple
&lt;pre&gt;
[Allow mounting from Xephyr]
Identity=*
Action=org.freedesktop.udisks.change;org.freedesktop.udisks.drive-detach;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.filesystem-unmount-others
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

Voilà, avec Gnome3 dans le volet de gauche de Nautilus on peux cliquer sur l'icone de la clé USB pour quelle se monte correctement, idem avec LXDE.
Je recommande de désactiver l'automontage des périphériques USB afin que l'utilisateur qui branche la clé puisse la monter sans interférence.

===Gestion de l'énergie===
De la même manière que précédemment, par défaut il est impossible d'éteindre l'ordinateur depuis la session graphique (hors LightDM).
Donc pour cela on créé un nouveau fichier (20-upower.pkla) dans :
 /etc/polkit-1/localauthority/50-local.d

&lt;pre&gt;
[Suspend/hibernate permissions]
Identity=*
Action=org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

===Gestion du son===
Par défaut Pulseaudio est lancé lors de l'identification d'un utilisateur, du coup il est le seul qui puisse utiliser la carte son. Pour palier a ce problème il faut rendre pulseaudio démon du système.
Pour cela il faut modifier plusieurs fichiers de configurations :
* /etc/default/pulseaudio
&lt;pre&gt;PULSEAUDIO_SYSTEM_START=1&lt;/pre&gt;

* /etc/pulse/daemon.conf
&lt;pre&gt;daemonize = yes
local-server-type = system&lt;/pre&gt;

* /etc/pulse/client.conf
&lt;pre&gt;autospawn = no&lt;/pre&gt;

* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot;
 usermod -aG pulse-access &lt;username&gt;

* On peux enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse

([http://askubuntu.com/questions/192522/how-do-i-configure-sound-with-pulseaudio-and-multiseat source] [http://disjunkt.com/jd/2010/en/multiseat-linux/multiseat-linux-system-wide-pulseaudio-for-routing-sounds-109/ source2])

====Modification des DE (Gnome, KDE, LXDE, ...)====
Par défaut les environnements graphique exécute Pulseaudio en espace utilisateur, ce qu'il ne faut plus faire puisqu'il est partagé, ce qui ne devrais plus être possible si vous avez enlever les utilisateurs des groupes. Donc il est nécessaire de désactiver cela avec l'outil de votre environnement de Bureau. Par exemple pour LXDE il s'agit de lxsession, si vous avez des problème pour cet environnement [http://wiki.lxde.org/en/Autostart cette page (et ses liens)] devrait vous aider

===Aller plus loin===
* Si l'on veut restreindre ce droit par utilisateur ou par groupe on modifie la ligne &quot;Identity&quot; comme il suit
 Identity=unix-user:toto;unix-group:plugdev
* Pour creuser un peu plus la configuration de ce système on peux aller voir [http://www.freedesktop.org/software/polkit/docs/0.105/pklocalauthority.8.html cette page] sur PolicyKit
* Il serait aussi intéressant de définir des ports USB réservés pour chaque siège, mais je ne sais pas encore comment gérer cela.
* Voir s'il est possible de dédier les voies arrière à un poste et les voies avant à un autre ...

==Conclusion==
Et voilà, tout est prêt pour le redémarrage et admirer les mires de login sur leur écran respectif.

===Avantages===
* Avec du matériel de récupération on peut facilement mettre en place cette solution peut coûteuse
* La satisfaction d'avoir un poste de travail exotique
* Permettre à une tierce personne de profiter de la puissance monstre des machines récente sans se priver de notre fauteuil favori
* Se sentir moins avec une/plusieurs personnes à coté de soi :-p

===Inconvénients===
* Accélération graphique fortement diminué
* Si on débranche les claviers/souries Xephyr ne sait pas les reconnaitre automatiquement au rebranchement. Il faut relancer Xephyr en se déconnectant ou relancer LightDM
* Un &quot;saut&quot; des 2 écrans lors de la déconnexion d'un postes, mais cela est dû à LightDM et son changment de VT intempestif.
* Surveillance de chaque mis à jour de Xorg pour ne pas avoir de surprise au redémarrage
* Recompilation nécessaire en cas de mise à jour majeur de Xorg
* Gestion des montages USB non optimale
* Les voyants du clavier (pavé numérique, Majuscule et arrêt défile) ne réagissent plus, mais la clavier réagit correctement.
* Dans l'espace de travail de certains logiciel (VLC, Gimp) la sourie peux avoir un affichage lacunaire. Par exemple sous GIMP elle n'est visible que lorsqu'on la déplace, avec VLS il y a un carré noir autour d'elle quand on la déplace le reste du temps elle disparait.


===Remerciement===
Un grand merci à ce site pour m'avoir prémaché le travail ... ce qui ne m'as pas empêché d'apporter quelques améliorations à sa solution.
http://beforeafterx.blogspot.fr/2012/08/configuration-of-ligthdm-12.html</text>
      <sha1>i5nwvbk9j837al5as968jkmmh8i0wy8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5112</id>
      <parentid>5111</parentid>
      <timestamp>2013-04-25T21:16:46Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <comment>/* Recompilation */</comment>
      <text xml:space="preserve" bytes="24142">Après avoir fait du [http://www.debian-fr.org/multiseat-plusieurs-utilisateurs-sur-1-pc-t6954.html#p188187 multiposte avec 2 CG], un changement de PC m'oblige à faire la même chose mais avec une seule carte. J'ai essayé de couvrir au maximum toutes les étapes de la mise en place de la solution.

----
==Choix des outils==
Tout d'abord le raisonement pour le choix des outils à été le suivant.
==== Xorg ou Wayland ?====
La réponse a été rapide. Xorg clairement, Wayland est encore trop récent pour pouvoir le faire et aucun document ne traite pour l'instant de ce problème.

==== Xnest ou Xephyr ?====
Xephyr est largement plébiscité et Xnest semble tomber en désuétude. C'est par le développement de Tizen (ex-Meego) que Xephyr semble toujours actif et que de nouvelles fonctionnalités lui sont ajouté. Intel s'en sert intensément et est énormément utilisé pour le développement d'application pour smartphone comme environnement de simulation. (http://www.phoronix.com/scan.php?page=news_item&amp;px=ODc1NQ).
Un soucis avec Xephyr est que le support de evdev semble ne pas avoir été inclus dans les options de compilations. &quot;evdev&quot; permet de monopoliser les claviers et souries. Du coup il faut refaire le paquet soi-même.

==== Et la transition avec systemd ? ====
Il ne semble plus y avoir de problème particulier (http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org)

====Comment gérer 2 écran, 2 session avec une seule carte graphique ?====
Il faut savoir que Xephyr permet de se greffer sur n'importe quel serveur X afin d'afficher une autre session. Par exemple avec la commande &quot;Xephyr -query 127.0.0.1&quot; vous devez pouvoir vous connecter sur votre propre machine si le protocole &quot;XDMCP&quot; est activé sur votre &quot;DM&quot; (GDM, KDM, XDM, ...). Donc le but du jeu sera d'avoir un serveur X qui va &quot;supporter&quot; 2 fenêtre Xephyr. Ces deux dernière se verrons affecter les claviers et les souries de manière exclusif.

====Et le DM ? Debian a adopté GDM(3) avec Gnome mais j'aimerais bien m'en passer.====
Avec GDM (celui de Gnome2) il existe un très bon tutoriel ici : http://netpatia.blogspot.fr/2009/06/multiseat-in-ubuntu-904.html 
Pour GDM3, le problème est que pour l'instant il ne reprend pas toutes les possibilitées de son ancienne version. 
https://live.gnome.org/GDM/ToDo
&quot;-- Allow per-display X Server commands 
		BrianCameron: The [server] and [server-foo] sections of the GDM configuration have been disabled. This means that users who depend on novel configurations which require special Xserver commands per-display is not available.&quot;

Donc bonne nouvelle, il fallait trouver une alternative en le nom de LightDM, qui est issu de Ubuntu ... 

===Prérequis===
Donc pour les pré-requis :
* Ajouter &quot;deb-src http://ftp.fr.debian.org/debian/ &lt;VersionDebian&gt; main contrib non-free&quot;
* Installer les paquage dpkg-dev, build-essential, devscripts, lightDM

==Reconstruction de Xephyr==
===Récupération des sources nécessaires===
On récupère toutes les sources du packet source xorg-server qui comprend Xephyr.

 $ apt-get source xserver-xephyr


Puis récupérer toutes les dépendances spécifique au paquet :

 $ apt-get build-dep xorg-server

Là il va télécharger un certain nombre de paquet de développement (&quot;-dev&quot;), ils sont marqué comme installé automatiquement, donc un deborphan devrait vous les enlever sans trop de problème. Sinon il existe cette commande pour être sur qu'ils sont marqué en tant que &quot;installé automatiquement&quot;, puis un &quot;apt-get autoclean&quot; les supprimera.

===Reconfiguration===
Ensuite tout se passe dans le répertoire &quot;debian&quot;

 $ cd xorg-server-1.12.4/debian


On édite le fichier &quot;changlog&quot; pour monter de version le paquet que l'on va reconstruire. Il est possible de le faire en automatique avec la commande:

 debian/$ dch -n


L'option &quot;-n&quot; permet d'incrémenter le numéro de version de façon mineur, c'est à dire l'ajout de &quot;.1&quot; en fin de numéro de version.

Sinon pour le faire en manuel, il faut ajouter une ligne du type suivant au fichier:
&lt;pre&gt;
xorg-server (2:1.12.4-5.1) UNRELEASED; urgency=low

  * Non-maintainer upload.
  * ajout des paramètre pour Xephyr et evdev

 -- Vous &lt;vous@VotreMachine&gt;  Sun, 03 Mar 2013 22:21:32 +0100
&lt;/pre&gt;

Pour éviter de réinstaller tout Xorg avec le nouveau numéro de version il faut éditer le fichier &quot;debian/control&quot; et modifier la dépendance de Xephyr (ligne ~283). Pour cela il faut remplacer le 
&lt;pre&gt;
Depends :
  xserver-common (&gt;= ${source:Version})
&lt;/pre&gt;
Par :
&lt;pre&gt;
Depends :
  xserver-common (&gt;= 2:1.12.4-5)
&lt;/pre&gt;

Le numéro doit être en accord avec la version de votre Xorg actuellement installé sur votre machine. 
Sinon cette modification est directement possible dans le .deb, toujours dans le fichier &quot;DEBIAN/control&quot;. Pour cela il faut prendre le .deb que vous avez construit, le décompresser, modifier le fichier et faire la commande &quot;dpkg-deb -b &lt;nom du répertoire contenant les fichiers&gt;&quot;. Mais il est plus pratique de le faire avant.

Je ne vous conseille pas de mettre une numéro de version trop élevé car cela pourrait engendrer une incompatibilité avec les futurs versions de Xorg.

Ensuite nous allons modifier les options de compilation en éditant le fichier &quot;rules&quot;, c'est le Makefile de la construction du packet.
Localisez &quot;confflags_main&quot; (ligne ~133) et ajouter les lignes suivant juste en dessous de &quot;--enable-kdrive&quot; (ligne ~156)

 --enable-kdrive-evdev \
 --enable-kdrive-mouse \
 --enable-kdrive-kbd \

===Recompilation===
Passons maintenant à la recompilation proprement dite, ressortez du répertoire debian et faites :
 $ fakeroot ./debian/rules binary

Et laisser la compilation et la création des paquets se faire ... cela peut prendre quelques minutes.

====Re-recompilation====
Si pour une raison il vous faut refaire entièrement la compilation il faut d'abord faire la commande suivante
 $ fakeroot ./debian/rules clean

Si c'est juste refaire les &quot;.deb&quot; (correction du numéro de dépendance, ...), alors cette commande suffit.
 $ fakeroot ./debian/rules binary-deb

===Installation du paquet obtenue===
Enfin pour installer votre paket (qui se trouve dans le répertoire supérieur) il faut faire :
 #dpkg -i xserver-xephyr_1.12.4-5_i386.deb
Ou de manière graphique avec GDebi.
====Paquets déjà prêt====
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6_i386.deb.tar]]
* [[{{ns:file}}:Xserver-xephyr_1.12.4-5.1_amd64.deb.tar]]

==Configuration de Xorg==
===Définition de l'existant===
Pour rappel le principe seras d'avoir une session X qui va héberger 2 sessions Xephyr qui serviront les différents sièges.
Tout d'abord nous allons faire un fichier de conf pour le serveur Xorg. Pour ne pas démarrer de rien on peut lancer la commande (en root) &quot;Xorg -configure&quot; qui génère le fichier &quot;xorg.conf.new&quot; dans &quot;/root&quot;. Ensuite on fait un petit &quot;xrandr&quot; pour identifier les sorties disponibles.
&lt;pre&gt;
$ xrandr

Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 593mm
&lt;/pre&gt;

&quot;DVI-0&quot; &amp; &quot;HDMI-0&quot; sont les 2 disponibles sur la machine. On peux aussi trouver du &quot;VGA-0&quot; ou &quot;LVDS&quot; pour les écrans de portables.

===Exemple de fichier de configuration===
Dans cet exemple on peut avoir un &quot;/etc/xorg.conf&quot; comme suivant :
&lt;pre&gt;
##################################################################
Section &quot;Monitor&quot;
	Identifier  &quot;HannsG&quot;
	Option      &quot;PreferredMode&quot; &quot;1920x1200&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
	Option		&quot;Primary&quot; &quot;true&quot;
EndSection

Section &quot;Monitor&quot;
	Identifier  &quot;Acer&quot;
	Option      &quot;PreferredMode&quot; &quot;1680x1050&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
EndSection

Section &quot;Device&quot;
	Identifier  &quot;card0&quot;
	Driver      &quot;radeon&quot;
	# Ici on associe les sorties video avec une section &quot;Monitor&quot;
	# On remarquera le &quot;Monitor&quot; devant le nom des sortie, c'est indispensable (cf : http://www.x.org/archive/current/doc/man/man5/xorg.conf.5.xhtml#heading12)
	Option      &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
	Option      &quot;Monitor-DVI-0&quot; &quot;Acer&quot;
EndSection

##################################################################

Section &quot;Screen&quot;
	Identifier  &quot;ecran1&quot;
	Device      &quot;card0&quot;
	Monitor     &quot;HansG&quot;
	DefaultDepth 24
	SubSection &quot;Display&quot;
 		Depth   24
		Virtual 3600 1200
	EndSubSection
EndSection

Section &quot;ServerLayout&quot;
	Identifier    &quot;dualscreen&quot;
	Screen      0  &quot;ecran1&quot;
EndSection
##################################################################
&lt;/pre&gt;

==Configuration de LightDM==
Nous allons maintenant regarder la configuration de LightDM d'un peu plus près. Le fichier de configuration par défaut expose toutes les options possibles du dit fichier. Nous allons garder le strict minimum
===lightdm.conf===
Pour cela éditons le fichier /etc/lightd/lightdm.conf

&lt;pre&gt;
[LightDM]
 greeter-user=root
 user-authority-in-system-dir=false

 [SeatDefaults]
 xserver-allow-tcp=false
 greeter-hide-users=false
 user-session=lightdm-xsession
 session-wrapper=/etc/X11/Xsession

 [Seat:1]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 1 -t 1680x1050 -P evdev -s /dev/input/by-id/usb-Logitech_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd -v bepo 
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 1
 greeter-session=lightdm-greeter

[Seat:2]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 2 -t 1920x1200 -P evdev -s /dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-path/platform-i8042-serio-0-event-kbd
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 2 -d 1680,0
 greeter-session=lightdm-greeter
&lt;/pre&gt;

Il y a plusieurs chose à savoir concernant le fonctionnement de LightDM afin de comprendre ce qui est fait.
-- La section &quot;SeatDefault&quot; est commune à tous les siège définit après
-- Chaque &quot;Seat&quot; est exécuté dans l'ordre dans un VT différent et ce même si, dans notre cas, tout se passe dans le VT7 ([url=https://code.launchpad.net/~andrzejtp2010/lightdm/lightdm-trunk-xephyr-multiseat/+merge/120286]un patch[url] à été proposé pour palier à ce problème mais il n'a pas été accepté ... pour l'instant)
-- Chaque propriétés de tous les &quot;Seat&quot; sont lancé dans un ordre précis, d'abord tous les &quot;xserver-command&quot;, puis tous les &quot;greeter-setup-script&quot;, enfin tous les &quot;greeter-session&quot;. Si vous mettez d'autres propriétés elle seront exécuter suivant leur ordre pré-établi.
-- Si les &quot;greeter&quot; se termine, lightDM coupe le &quot;xserver-command&quot; correspondant. De même si le &quot;xserver-command&quot; se termine le greeter est coupé.

Donc pour que tout se positionne correctement il faut
-- D'abord lancer le serveur X qui servira de support, ce qui est fait en le mettant en tant que premier &quot;Seat&quot;
-- Lancer les fenêtres Xephyr avec les optons qui vont bien, ce qui est fait avec le script &quot;Xephyr-command.sh&quot; et ses arguments
-- Simuler un &quot;greeter&quot; pour le &quot;Seat :0&quot; afin que le serveur X ne soit pas tuer par lightDM, ce qui est fait avec le script &quot;fake-greeter&quot;
-- Exécuter un script qui va placer les fenêtre Xephyr si besoin et initialiser les variables d'environnement correctement, fait avec &quot;Xephyr-greeter-setup.sh&quot;
-- Exécuter les &quot;greeter&quot; dans les fenêtre Xephyr

===fake-greeter.desktop===
Pour le faux greeter du serveur X il faut créer un fichier dans &quot;/usr/share/xgreeters/fake-greeter.desktop&quot; et y copier son contenu :
&lt;pre&gt;
[Desktop Entry]
Name=LightDM fake greeter
Comment=This runs no greeter at all, it should only be run from LightDM
Exec=sleep infinity
Type=Application
X-Ubuntu-Gettext-Domain=lightdm
&lt;/pre&gt;

Après tout cela nous allons créer un script qui permettra de créer (&quot;Xephyr-command.sh&quot;) et un autre pour placer les fenêtre à l'écran (&quot;Xephyr-greeter-setup.sh&quot;).
Tout d'abord il est nécessaire d'installer le petit utilitaire &quot;wmctrl&quot; avec
 # aptitude install wmctrl
===Xephyr-command.sh===
 Le contenue du fichier &quot;Xephyr-command.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -t, taille : Doit être de la forme 9999x9999, (dafaut = 1024x768)&quot;
  echo &quot;\t -s, sourie : /dev/input/[by-path|by-id]/...event-mouse&quot;
  echo &quot;\t -c, clavier : /dev/input/[by-path|by-id]/...event-kbd&quot;
  echo &quot;\t -l, layout : fr, es, en, ... (défaut = fr)&quot;
  echo &quot;\t -v, variant : fr, latin9, bepo, ... (défaut = &lt;vide&gt;)&quot;
  echo &quot;\t -P, Pilote : ephyr ou evdev (défaut = ephyr)&quot;
}

testExecutable() {
	XEPHYR=`whereis -b Xephyr | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
TAILLE=&quot;1024x768&quot;
SOURIE=
CLAVIER=
LAYOUT=&quot;fr&quot;
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
PILOTE=ephyr # Test = ephyr ; Prod = evdev

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XEPHYR&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;Xephyr : &quot;$XEPHYR
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:t:s:c:l:v:P:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		t|taille)
			TAILLE=&quot;$OPTARG&quot;
		;;

		s|sourie)
			SOURIE=$OPTARG
			if  ! [ -r $SOURIE ];then
				echo &quot;La sourie n'est pas accessible&quot;
				exit 3
			fi
		;;

		c|clavier)
			CLAVIER=$OPTARG
			if  ! [ -r $CLAVIER ];then
				echo &quot;Le clavier n'est pas accessible&quot;
				exit 4
			fi
		;;

		l|layout)
			LAYOUT=$OPTARG
		;;

		v|variant)
			VARIANT=$OPTARG
		;;

		P|Pilote)
			PILOTE=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Construction de la ligne d&quot;argument
OPTIONS=&quot;&quot;

if [ -n &quot;${TAILLE}&quot; ]; then
	OPTIONS=&quot; -screen ${TAILLE}&quot;
fi

if [ -n &quot;${CLAVIER}&quot; ]; then
	if [ -n &quot;${LAYOUT}&quot; ]; then
		OPTIONS=$OPTIONS&quot; -keybd $PILOTE,,device=${CLAVIER},xkbrules=evdev,xkbmodel=evdev,xkblayout=${LAYOUT}&quot;
		if [ -n &quot;${VARIANT}&quot; ]; then
			OPTIONS=$OPTIONS&quot;,xkbvariant=${VARIANT}&quot;
		fi
	fi
fi

if [ -n &quot;${SOURIE}&quot; ]; then
	OPTIONS=$OPTIONS&quot; -mouse $PILOTE,,device=${SOURIE}&quot;
fi

# Lancement de Xephyr en arrière plan
echo &quot;$XEPHYR -retro $OPTIONS :$POSTE&quot;
exec $XEPHYR -retro  $OPTIONS :$POSTE
&lt;/pre&gt;

Petite explication sur la dernière ligne. Le &quot;exec&quot; fait en sorte que ce soit le processus de Xephyr qui prend la place du script, donc il reprend le PID et tout ce qui va bien. Ca permet surtout à ce que le signal USR1 que Xephyr lance au PPID, soit bien récupéré par LightDM et que ce dernier continue son fonctionnement normalement.

===Xephyr-greeter-setup.sh===
Le contenue du fichier &quot;Xephyr-greeter-setup.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p|--poste numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -d, --deplacement : de la forme 'x,y' (en pixel)&quot;
  echo &quot;\t -v, --vt : 7, 8, 9, 10, 11 (defaut = 7)&quot;
}

testExecutable() {
	XWININFO=`whereis -b xwininfo | cut -d' ' -f2`
	WMCTRL=`whereis -b wmctrl | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
DEPLACEMENT=
VT=7
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
ATTENTE=3 # temps en seconde avant de déclencher le &quot;chvt&quot; pour revenir sur le bon VT

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XWININFO&quot; -o -z &quot;$WMCTRL&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;xwininfo : &quot;$XWININFO
	echo &quot;wmctrl : &quot;$WMCTRL
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:d:v:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		d|deplacement)
			DEPLACEMENT=&quot;$OPTARG&quot;
		;;
	
		v|vt)
			VT=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Vieux Hack tout bancal pour revenir au bon VT sans patcher LightDM
(sleep $ATTENTE ; chvt $VT)&amp;

# Deplacement de la fenetre si besoin
if [ -n &quot;$DEPLACEMENT&quot; ]; then
	#On recherche l'ID de la fenêtre Xephyr
        XEP=`XAUTHORITY=/var/run/lightdm/root/:$XRACINE $XWININFO -root -children -all -display :$XRACINE | grep &quot;Xephyr on :$POSTE&quot; --max-count=1`;

	if [ -z &quot;$XEP&quot; ]; then
		echo &quot;fenêtre Xephyr non trouvé pour le poste $POSTE&quot;
		exit 5
	fi
    XEPHYR_WIN_ID=`echo ${XEP} | cut -d' ' -f1`;
    $WMCTRL 2&gt;&amp;1 -v -i -r ${XEPHYR_WIN_ID} -e 0,${DEPLACEMENT},-1,-1;
	if [ $? -ne 0 ]; then
		echo &quot;Erreur lors du déplacement de la fenêtre Xephyr pour le poste $POSTE&quot;
		exit 7
	fi
fi

# Mise en place des variables d'environnement pour le greeter (utile ?)
export DISPLAY=:$POSTE
export XAUTHORITY=/var/run/lightdm/root/:$POSTE
&lt;/pre&gt;
Petite explication concernant la ligne suivante
 (sleep $ATTENTE ; chvt $VT)&amp;
Comme je n'ai pas patché LightDM pour éviter le changement de VT et que Xephyr m'empêche de faire un Ctrl+Alt+7 (avec le driver evdev) pour revenir au bon VT, j'ai du mettre en place un automatisme. Certes c'est loin d'être parfait mais ça rempli correctement son office.

==Modification du système==
===Montage des périphériques USB===
On se rend assez vite compte que si l'on branche une clé USB elle n'apparait pas automatiquement sur le bureau et elle est encore moins &quot;montable&quot; par un utilisateur classique. Elle apparait bien dans la liste des périphériques accessibles (volet de gauche sur nautilus) mais il y a un problème de droit.
Un petit rappel de la chaine mis en jeu lorsque l'on branche une clé USB ou tout autre périphérique.
* Détection par le noyau de l'ajout d'un matériel
* Udev prend le relai et créé les périphériques block nécessaire dans /dev
* PolicyKit termine le travail en mettant en place les autorisations adéquate

Donc le blocage vient de ce dernier composant, il ne reconnait pas une session Xephyr comme &quot;active&quot; et donc refuse le montage de ce type de périphérique par l'utilisateur lambda. Pour passer au delà de cette limitation on va redéfinir la règle de montage, pour cela il faut aller dans le répertoire suivant :
 /etc/polkit-1/localauthority/50-local.d
Et y créer un fichier, &quot;10-udisk.pkla&quot; par exemple
&lt;pre&gt;
[Allow mounting from Xephyr]
Identity=*
Action=org.freedesktop.udisks.change;org.freedesktop.udisks.drive-detach;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.filesystem-unmount-others
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

Voilà, avec Gnome3 dans le volet de gauche de Nautilus on peux cliquer sur l'icone de la clé USB pour quelle se monte correctement, idem avec LXDE.
Je recommande de désactiver l'automontage des périphériques USB afin que l'utilisateur qui branche la clé puisse la monter sans interférence.

===Gestion de l'énergie===
De la même manière que précédemment, par défaut il est impossible d'éteindre l'ordinateur depuis la session graphique (hors LightDM).
Donc pour cela on créé un nouveau fichier (20-upower.pkla) dans :
 /etc/polkit-1/localauthority/50-local.d

&lt;pre&gt;
[Suspend/hibernate permissions]
Identity=*
Action=org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

===Gestion du son===
Par défaut Pulseaudio est lancé lors de l'identification d'un utilisateur, du coup il est le seul qui puisse utiliser la carte son. Pour palier a ce problème il faut rendre pulseaudio démon du système.
Pour cela il faut modifier plusieurs fichiers de configurations :
* /etc/default/pulseaudio
&lt;pre&gt;PULSEAUDIO_SYSTEM_START=1&lt;/pre&gt;

* /etc/pulse/daemon.conf
&lt;pre&gt;daemonize = yes
local-server-type = system&lt;/pre&gt;

* /etc/pulse/client.conf
&lt;pre&gt;autospawn = no&lt;/pre&gt;

* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot;
 usermod -aG pulse-access &lt;username&gt;

* On peux enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse

([http://askubuntu.com/questions/192522/how-do-i-configure-sound-with-pulseaudio-and-multiseat source] [http://disjunkt.com/jd/2010/en/multiseat-linux/multiseat-linux-system-wide-pulseaudio-for-routing-sounds-109/ source2])

====Modification des DE (Gnome, KDE, LXDE, ...)====
Par défaut les environnements graphique exécute Pulseaudio en espace utilisateur, ce qu'il ne faut plus faire puisqu'il est partagé, ce qui ne devrais plus être possible si vous avez enlever les utilisateurs des groupes. Donc il est nécessaire de désactiver cela avec l'outil de votre environnement de Bureau. Par exemple pour LXDE il s'agit de lxsession, si vous avez des problème pour cet environnement [http://wiki.lxde.org/en/Autostart cette page (et ses liens)] devrait vous aider

===Aller plus loin===
* Si l'on veut restreindre ce droit par utilisateur ou par groupe on modifie la ligne &quot;Identity&quot; comme il suit
 Identity=unix-user:toto;unix-group:plugdev
* Pour creuser un peu plus la configuration de ce système on peux aller voir [http://www.freedesktop.org/software/polkit/docs/0.105/pklocalauthority.8.html cette page] sur PolicyKit
* Il serait aussi intéressant de définir des ports USB réservés pour chaque siège, mais je ne sais pas encore comment gérer cela.
* Voir s'il est possible de dédier les voies arrière à un poste et les voies avant à un autre ...

==Conclusion==
Et voilà, tout est prêt pour le redémarrage et admirer les mires de login sur leur écran respectif.

===Avantages===
* Avec du matériel de récupération on peut facilement mettre en place cette solution peut coûteuse
* La satisfaction d'avoir un poste de travail exotique
* Permettre à une tierce personne de profiter de la puissance monstre des machines récente sans se priver de notre fauteuil favori
* Se sentir moins avec une/plusieurs personnes à coté de soi :-p

===Inconvénients===
* Accélération graphique fortement diminué
* Si on débranche les claviers/souries Xephyr ne sait pas les reconnaitre automatiquement au rebranchement. Il faut relancer Xephyr en se déconnectant ou relancer LightDM
* Un &quot;saut&quot; des 2 écrans lors de la déconnexion d'un postes, mais cela est dû à LightDM et son changment de VT intempestif.
* Surveillance de chaque mis à jour de Xorg pour ne pas avoir de surprise au redémarrage
* Recompilation nécessaire en cas de mise à jour majeur de Xorg
* Gestion des montages USB non optimale
* Les voyants du clavier (pavé numérique, Majuscule et arrêt défile) ne réagissent plus, mais la clavier réagit correctement.
* Dans l'espace de travail de certains logiciel (VLC, Gimp) la sourie peux avoir un affichage lacunaire. Par exemple sous GIMP elle n'est visible que lorsqu'on la déplace, avec VLS il y a un carré noir autour d'elle quand on la déplace le reste du temps elle disparait.


===Remerciement===
Un grand merci à ce site pour m'avoir prémaché le travail ... ce qui ne m'as pas empêché d'apporter quelques améliorations à sa solution.
http://beforeafterx.blogspot.fr/2012/08/configuration-of-ligthdm-12.html</text>
      <sha1>fp49oqy2flonozftyg36u4587dptggd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5114</id>
      <parentid>5112</parentid>
      <timestamp>2013-04-25T21:30:27Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <comment>/* Paquets déjà prêt */</comment>
      <text xml:space="preserve" bytes="24142">Après avoir fait du [http://www.debian-fr.org/multiseat-plusieurs-utilisateurs-sur-1-pc-t6954.html#p188187 multiposte avec 2 CG], un changement de PC m'oblige à faire la même chose mais avec une seule carte. J'ai essayé de couvrir au maximum toutes les étapes de la mise en place de la solution.

----
==Choix des outils==
Tout d'abord le raisonement pour le choix des outils à été le suivant.
==== Xorg ou Wayland ?====
La réponse a été rapide. Xorg clairement, Wayland est encore trop récent pour pouvoir le faire et aucun document ne traite pour l'instant de ce problème.

==== Xnest ou Xephyr ?====
Xephyr est largement plébiscité et Xnest semble tomber en désuétude. C'est par le développement de Tizen (ex-Meego) que Xephyr semble toujours actif et que de nouvelles fonctionnalités lui sont ajouté. Intel s'en sert intensément et est énormément utilisé pour le développement d'application pour smartphone comme environnement de simulation. (http://www.phoronix.com/scan.php?page=news_item&amp;px=ODc1NQ).
Un soucis avec Xephyr est que le support de evdev semble ne pas avoir été inclus dans les options de compilations. &quot;evdev&quot; permet de monopoliser les claviers et souries. Du coup il faut refaire le paquet soi-même.

==== Et la transition avec systemd ? ====
Il ne semble plus y avoir de problème particulier (http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org)

====Comment gérer 2 écran, 2 session avec une seule carte graphique ?====
Il faut savoir que Xephyr permet de se greffer sur n'importe quel serveur X afin d'afficher une autre session. Par exemple avec la commande &quot;Xephyr -query 127.0.0.1&quot; vous devez pouvoir vous connecter sur votre propre machine si le protocole &quot;XDMCP&quot; est activé sur votre &quot;DM&quot; (GDM, KDM, XDM, ...). Donc le but du jeu sera d'avoir un serveur X qui va &quot;supporter&quot; 2 fenêtre Xephyr. Ces deux dernière se verrons affecter les claviers et les souries de manière exclusif.

====Et le DM ? Debian a adopté GDM(3) avec Gnome mais j'aimerais bien m'en passer.====
Avec GDM (celui de Gnome2) il existe un très bon tutoriel ici : http://netpatia.blogspot.fr/2009/06/multiseat-in-ubuntu-904.html 
Pour GDM3, le problème est que pour l'instant il ne reprend pas toutes les possibilitées de son ancienne version. 
https://live.gnome.org/GDM/ToDo
&quot;-- Allow per-display X Server commands 
		BrianCameron: The [server] and [server-foo] sections of the GDM configuration have been disabled. This means that users who depend on novel configurations which require special Xserver commands per-display is not available.&quot;

Donc bonne nouvelle, il fallait trouver une alternative en le nom de LightDM, qui est issu de Ubuntu ... 

===Prérequis===
Donc pour les pré-requis :
* Ajouter &quot;deb-src http://ftp.fr.debian.org/debian/ &lt;VersionDebian&gt; main contrib non-free&quot;
* Installer les paquage dpkg-dev, build-essential, devscripts, lightDM

==Reconstruction de Xephyr==
===Récupération des sources nécessaires===
On récupère toutes les sources du packet source xorg-server qui comprend Xephyr.

 $ apt-get source xserver-xephyr


Puis récupérer toutes les dépendances spécifique au paquet :

 $ apt-get build-dep xorg-server

Là il va télécharger un certain nombre de paquet de développement (&quot;-dev&quot;), ils sont marqué comme installé automatiquement, donc un deborphan devrait vous les enlever sans trop de problème. Sinon il existe cette commande pour être sur qu'ils sont marqué en tant que &quot;installé automatiquement&quot;, puis un &quot;apt-get autoclean&quot; les supprimera.

===Reconfiguration===
Ensuite tout se passe dans le répertoire &quot;debian&quot;

 $ cd xorg-server-1.12.4/debian


On édite le fichier &quot;changlog&quot; pour monter de version le paquet que l'on va reconstruire. Il est possible de le faire en automatique avec la commande:

 debian/$ dch -n


L'option &quot;-n&quot; permet d'incrémenter le numéro de version de façon mineur, c'est à dire l'ajout de &quot;.1&quot; en fin de numéro de version.

Sinon pour le faire en manuel, il faut ajouter une ligne du type suivant au fichier:
&lt;pre&gt;
xorg-server (2:1.12.4-5.1) UNRELEASED; urgency=low

  * Non-maintainer upload.
  * ajout des paramètre pour Xephyr et evdev

 -- Vous &lt;vous@VotreMachine&gt;  Sun, 03 Mar 2013 22:21:32 +0100
&lt;/pre&gt;

Pour éviter de réinstaller tout Xorg avec le nouveau numéro de version il faut éditer le fichier &quot;debian/control&quot; et modifier la dépendance de Xephyr (ligne ~283). Pour cela il faut remplacer le 
&lt;pre&gt;
Depends :
  xserver-common (&gt;= ${source:Version})
&lt;/pre&gt;
Par :
&lt;pre&gt;
Depends :
  xserver-common (&gt;= 2:1.12.4-5)
&lt;/pre&gt;

Le numéro doit être en accord avec la version de votre Xorg actuellement installé sur votre machine. 
Sinon cette modification est directement possible dans le .deb, toujours dans le fichier &quot;DEBIAN/control&quot;. Pour cela il faut prendre le .deb que vous avez construit, le décompresser, modifier le fichier et faire la commande &quot;dpkg-deb -b &lt;nom du répertoire contenant les fichiers&gt;&quot;. Mais il est plus pratique de le faire avant.

Je ne vous conseille pas de mettre une numéro de version trop élevé car cela pourrait engendrer une incompatibilité avec les futurs versions de Xorg.

Ensuite nous allons modifier les options de compilation en éditant le fichier &quot;rules&quot;, c'est le Makefile de la construction du packet.
Localisez &quot;confflags_main&quot; (ligne ~133) et ajouter les lignes suivant juste en dessous de &quot;--enable-kdrive&quot; (ligne ~156)

 --enable-kdrive-evdev \
 --enable-kdrive-mouse \
 --enable-kdrive-kbd \

===Recompilation===
Passons maintenant à la recompilation proprement dite, ressortez du répertoire debian et faites :
 $ fakeroot ./debian/rules binary

Et laisser la compilation et la création des paquets se faire ... cela peut prendre quelques minutes.

====Re-recompilation====
Si pour une raison il vous faut refaire entièrement la compilation il faut d'abord faire la commande suivante
 $ fakeroot ./debian/rules clean

Si c'est juste refaire les &quot;.deb&quot; (correction du numéro de dépendance, ...), alors cette commande suffit.
 $ fakeroot ./debian/rules binary-deb

===Installation du paquet obtenue===
Enfin pour installer votre paket (qui se trouve dans le répertoire supérieur) il faut faire :
 #dpkg -i xserver-xephyr_1.12.4-5_i386.deb
Ou de manière graphique avec GDebi.
====Paquets déjà prêt====
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6_i386.deb.tar]]
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6.1_amd64.deb.tar]]

==Configuration de Xorg==
===Définition de l'existant===
Pour rappel le principe seras d'avoir une session X qui va héberger 2 sessions Xephyr qui serviront les différents sièges.
Tout d'abord nous allons faire un fichier de conf pour le serveur Xorg. Pour ne pas démarrer de rien on peut lancer la commande (en root) &quot;Xorg -configure&quot; qui génère le fichier &quot;xorg.conf.new&quot; dans &quot;/root&quot;. Ensuite on fait un petit &quot;xrandr&quot; pour identifier les sorties disponibles.
&lt;pre&gt;
$ xrandr

Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 593mm
&lt;/pre&gt;

&quot;DVI-0&quot; &amp; &quot;HDMI-0&quot; sont les 2 disponibles sur la machine. On peux aussi trouver du &quot;VGA-0&quot; ou &quot;LVDS&quot; pour les écrans de portables.

===Exemple de fichier de configuration===
Dans cet exemple on peut avoir un &quot;/etc/xorg.conf&quot; comme suivant :
&lt;pre&gt;
##################################################################
Section &quot;Monitor&quot;
	Identifier  &quot;HannsG&quot;
	Option      &quot;PreferredMode&quot; &quot;1920x1200&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
	Option		&quot;Primary&quot; &quot;true&quot;
EndSection

Section &quot;Monitor&quot;
	Identifier  &quot;Acer&quot;
	Option      &quot;PreferredMode&quot; &quot;1680x1050&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
EndSection

Section &quot;Device&quot;
	Identifier  &quot;card0&quot;
	Driver      &quot;radeon&quot;
	# Ici on associe les sorties video avec une section &quot;Monitor&quot;
	# On remarquera le &quot;Monitor&quot; devant le nom des sortie, c'est indispensable (cf : http://www.x.org/archive/current/doc/man/man5/xorg.conf.5.xhtml#heading12)
	Option      &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
	Option      &quot;Monitor-DVI-0&quot; &quot;Acer&quot;
EndSection

##################################################################

Section &quot;Screen&quot;
	Identifier  &quot;ecran1&quot;
	Device      &quot;card0&quot;
	Monitor     &quot;HansG&quot;
	DefaultDepth 24
	SubSection &quot;Display&quot;
 		Depth   24
		Virtual 3600 1200
	EndSubSection
EndSection

Section &quot;ServerLayout&quot;
	Identifier    &quot;dualscreen&quot;
	Screen      0  &quot;ecran1&quot;
EndSection
##################################################################
&lt;/pre&gt;

==Configuration de LightDM==
Nous allons maintenant regarder la configuration de LightDM d'un peu plus près. Le fichier de configuration par défaut expose toutes les options possibles du dit fichier. Nous allons garder le strict minimum
===lightdm.conf===
Pour cela éditons le fichier /etc/lightd/lightdm.conf

&lt;pre&gt;
[LightDM]
 greeter-user=root
 user-authority-in-system-dir=false

 [SeatDefaults]
 xserver-allow-tcp=false
 greeter-hide-users=false
 user-session=lightdm-xsession
 session-wrapper=/etc/X11/Xsession

 [Seat:1]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 1 -t 1680x1050 -P evdev -s /dev/input/by-id/usb-Logitech_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd -v bepo 
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 1
 greeter-session=lightdm-greeter

[Seat:2]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 2 -t 1920x1200 -P evdev -s /dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-path/platform-i8042-serio-0-event-kbd
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 2 -d 1680,0
 greeter-session=lightdm-greeter
&lt;/pre&gt;

Il y a plusieurs chose à savoir concernant le fonctionnement de LightDM afin de comprendre ce qui est fait.
-- La section &quot;SeatDefault&quot; est commune à tous les siège définit après
-- Chaque &quot;Seat&quot; est exécuté dans l'ordre dans un VT différent et ce même si, dans notre cas, tout se passe dans le VT7 ([url=https://code.launchpad.net/~andrzejtp2010/lightdm/lightdm-trunk-xephyr-multiseat/+merge/120286]un patch[url] à été proposé pour palier à ce problème mais il n'a pas été accepté ... pour l'instant)
-- Chaque propriétés de tous les &quot;Seat&quot; sont lancé dans un ordre précis, d'abord tous les &quot;xserver-command&quot;, puis tous les &quot;greeter-setup-script&quot;, enfin tous les &quot;greeter-session&quot;. Si vous mettez d'autres propriétés elle seront exécuter suivant leur ordre pré-établi.
-- Si les &quot;greeter&quot; se termine, lightDM coupe le &quot;xserver-command&quot; correspondant. De même si le &quot;xserver-command&quot; se termine le greeter est coupé.

Donc pour que tout se positionne correctement il faut
-- D'abord lancer le serveur X qui servira de support, ce qui est fait en le mettant en tant que premier &quot;Seat&quot;
-- Lancer les fenêtres Xephyr avec les optons qui vont bien, ce qui est fait avec le script &quot;Xephyr-command.sh&quot; et ses arguments
-- Simuler un &quot;greeter&quot; pour le &quot;Seat :0&quot; afin que le serveur X ne soit pas tuer par lightDM, ce qui est fait avec le script &quot;fake-greeter&quot;
-- Exécuter un script qui va placer les fenêtre Xephyr si besoin et initialiser les variables d'environnement correctement, fait avec &quot;Xephyr-greeter-setup.sh&quot;
-- Exécuter les &quot;greeter&quot; dans les fenêtre Xephyr

===fake-greeter.desktop===
Pour le faux greeter du serveur X il faut créer un fichier dans &quot;/usr/share/xgreeters/fake-greeter.desktop&quot; et y copier son contenu :
&lt;pre&gt;
[Desktop Entry]
Name=LightDM fake greeter
Comment=This runs no greeter at all, it should only be run from LightDM
Exec=sleep infinity
Type=Application
X-Ubuntu-Gettext-Domain=lightdm
&lt;/pre&gt;

Après tout cela nous allons créer un script qui permettra de créer (&quot;Xephyr-command.sh&quot;) et un autre pour placer les fenêtre à l'écran (&quot;Xephyr-greeter-setup.sh&quot;).
Tout d'abord il est nécessaire d'installer le petit utilitaire &quot;wmctrl&quot; avec
 # aptitude install wmctrl
===Xephyr-command.sh===
 Le contenue du fichier &quot;Xephyr-command.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -t, taille : Doit être de la forme 9999x9999, (dafaut = 1024x768)&quot;
  echo &quot;\t -s, sourie : /dev/input/[by-path|by-id]/...event-mouse&quot;
  echo &quot;\t -c, clavier : /dev/input/[by-path|by-id]/...event-kbd&quot;
  echo &quot;\t -l, layout : fr, es, en, ... (défaut = fr)&quot;
  echo &quot;\t -v, variant : fr, latin9, bepo, ... (défaut = &lt;vide&gt;)&quot;
  echo &quot;\t -P, Pilote : ephyr ou evdev (défaut = ephyr)&quot;
}

testExecutable() {
	XEPHYR=`whereis -b Xephyr | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
TAILLE=&quot;1024x768&quot;
SOURIE=
CLAVIER=
LAYOUT=&quot;fr&quot;
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
PILOTE=ephyr # Test = ephyr ; Prod = evdev

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XEPHYR&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;Xephyr : &quot;$XEPHYR
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:t:s:c:l:v:P:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		t|taille)
			TAILLE=&quot;$OPTARG&quot;
		;;

		s|sourie)
			SOURIE=$OPTARG
			if  ! [ -r $SOURIE ];then
				echo &quot;La sourie n'est pas accessible&quot;
				exit 3
			fi
		;;

		c|clavier)
			CLAVIER=$OPTARG
			if  ! [ -r $CLAVIER ];then
				echo &quot;Le clavier n'est pas accessible&quot;
				exit 4
			fi
		;;

		l|layout)
			LAYOUT=$OPTARG
		;;

		v|variant)
			VARIANT=$OPTARG
		;;

		P|Pilote)
			PILOTE=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Construction de la ligne d&quot;argument
OPTIONS=&quot;&quot;

if [ -n &quot;${TAILLE}&quot; ]; then
	OPTIONS=&quot; -screen ${TAILLE}&quot;
fi

if [ -n &quot;${CLAVIER}&quot; ]; then
	if [ -n &quot;${LAYOUT}&quot; ]; then
		OPTIONS=$OPTIONS&quot; -keybd $PILOTE,,device=${CLAVIER},xkbrules=evdev,xkbmodel=evdev,xkblayout=${LAYOUT}&quot;
		if [ -n &quot;${VARIANT}&quot; ]; then
			OPTIONS=$OPTIONS&quot;,xkbvariant=${VARIANT}&quot;
		fi
	fi
fi

if [ -n &quot;${SOURIE}&quot; ]; then
	OPTIONS=$OPTIONS&quot; -mouse $PILOTE,,device=${SOURIE}&quot;
fi

# Lancement de Xephyr en arrière plan
echo &quot;$XEPHYR -retro $OPTIONS :$POSTE&quot;
exec $XEPHYR -retro  $OPTIONS :$POSTE
&lt;/pre&gt;

Petite explication sur la dernière ligne. Le &quot;exec&quot; fait en sorte que ce soit le processus de Xephyr qui prend la place du script, donc il reprend le PID et tout ce qui va bien. Ca permet surtout à ce que le signal USR1 que Xephyr lance au PPID, soit bien récupéré par LightDM et que ce dernier continue son fonctionnement normalement.

===Xephyr-greeter-setup.sh===
Le contenue du fichier &quot;Xephyr-greeter-setup.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p|--poste numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -d, --deplacement : de la forme 'x,y' (en pixel)&quot;
  echo &quot;\t -v, --vt : 7, 8, 9, 10, 11 (defaut = 7)&quot;
}

testExecutable() {
	XWININFO=`whereis -b xwininfo | cut -d' ' -f2`
	WMCTRL=`whereis -b wmctrl | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
DEPLACEMENT=
VT=7
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
ATTENTE=3 # temps en seconde avant de déclencher le &quot;chvt&quot; pour revenir sur le bon VT

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XWININFO&quot; -o -z &quot;$WMCTRL&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;xwininfo : &quot;$XWININFO
	echo &quot;wmctrl : &quot;$WMCTRL
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:d:v:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		d|deplacement)
			DEPLACEMENT=&quot;$OPTARG&quot;
		;;
	
		v|vt)
			VT=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Vieux Hack tout bancal pour revenir au bon VT sans patcher LightDM
(sleep $ATTENTE ; chvt $VT)&amp;

# Deplacement de la fenetre si besoin
if [ -n &quot;$DEPLACEMENT&quot; ]; then
	#On recherche l'ID de la fenêtre Xephyr
        XEP=`XAUTHORITY=/var/run/lightdm/root/:$XRACINE $XWININFO -root -children -all -display :$XRACINE | grep &quot;Xephyr on :$POSTE&quot; --max-count=1`;

	if [ -z &quot;$XEP&quot; ]; then
		echo &quot;fenêtre Xephyr non trouvé pour le poste $POSTE&quot;
		exit 5
	fi
    XEPHYR_WIN_ID=`echo ${XEP} | cut -d' ' -f1`;
    $WMCTRL 2&gt;&amp;1 -v -i -r ${XEPHYR_WIN_ID} -e 0,${DEPLACEMENT},-1,-1;
	if [ $? -ne 0 ]; then
		echo &quot;Erreur lors du déplacement de la fenêtre Xephyr pour le poste $POSTE&quot;
		exit 7
	fi
fi

# Mise en place des variables d'environnement pour le greeter (utile ?)
export DISPLAY=:$POSTE
export XAUTHORITY=/var/run/lightdm/root/:$POSTE
&lt;/pre&gt;
Petite explication concernant la ligne suivante
 (sleep $ATTENTE ; chvt $VT)&amp;
Comme je n'ai pas patché LightDM pour éviter le changement de VT et que Xephyr m'empêche de faire un Ctrl+Alt+7 (avec le driver evdev) pour revenir au bon VT, j'ai du mettre en place un automatisme. Certes c'est loin d'être parfait mais ça rempli correctement son office.

==Modification du système==
===Montage des périphériques USB===
On se rend assez vite compte que si l'on branche une clé USB elle n'apparait pas automatiquement sur le bureau et elle est encore moins &quot;montable&quot; par un utilisateur classique. Elle apparait bien dans la liste des périphériques accessibles (volet de gauche sur nautilus) mais il y a un problème de droit.
Un petit rappel de la chaine mis en jeu lorsque l'on branche une clé USB ou tout autre périphérique.
* Détection par le noyau de l'ajout d'un matériel
* Udev prend le relai et créé les périphériques block nécessaire dans /dev
* PolicyKit termine le travail en mettant en place les autorisations adéquate

Donc le blocage vient de ce dernier composant, il ne reconnait pas une session Xephyr comme &quot;active&quot; et donc refuse le montage de ce type de périphérique par l'utilisateur lambda. Pour passer au delà de cette limitation on va redéfinir la règle de montage, pour cela il faut aller dans le répertoire suivant :
 /etc/polkit-1/localauthority/50-local.d
Et y créer un fichier, &quot;10-udisk.pkla&quot; par exemple
&lt;pre&gt;
[Allow mounting from Xephyr]
Identity=*
Action=org.freedesktop.udisks.change;org.freedesktop.udisks.drive-detach;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.filesystem-unmount-others
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

Voilà, avec Gnome3 dans le volet de gauche de Nautilus on peux cliquer sur l'icone de la clé USB pour quelle se monte correctement, idem avec LXDE.
Je recommande de désactiver l'automontage des périphériques USB afin que l'utilisateur qui branche la clé puisse la monter sans interférence.

===Gestion de l'énergie===
De la même manière que précédemment, par défaut il est impossible d'éteindre l'ordinateur depuis la session graphique (hors LightDM).
Donc pour cela on créé un nouveau fichier (20-upower.pkla) dans :
 /etc/polkit-1/localauthority/50-local.d

&lt;pre&gt;
[Suspend/hibernate permissions]
Identity=*
Action=org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

===Gestion du son===
Par défaut Pulseaudio est lancé lors de l'identification d'un utilisateur, du coup il est le seul qui puisse utiliser la carte son. Pour palier a ce problème il faut rendre pulseaudio démon du système.
Pour cela il faut modifier plusieurs fichiers de configurations :
* /etc/default/pulseaudio
&lt;pre&gt;PULSEAUDIO_SYSTEM_START=1&lt;/pre&gt;

* /etc/pulse/daemon.conf
&lt;pre&gt;daemonize = yes
local-server-type = system&lt;/pre&gt;

* /etc/pulse/client.conf
&lt;pre&gt;autospawn = no&lt;/pre&gt;

* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot;
 usermod -aG pulse-access &lt;username&gt;

* On peux enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse

([http://askubuntu.com/questions/192522/how-do-i-configure-sound-with-pulseaudio-and-multiseat source] [http://disjunkt.com/jd/2010/en/multiseat-linux/multiseat-linux-system-wide-pulseaudio-for-routing-sounds-109/ source2])

====Modification des DE (Gnome, KDE, LXDE, ...)====
Par défaut les environnements graphique exécute Pulseaudio en espace utilisateur, ce qu'il ne faut plus faire puisqu'il est partagé, ce qui ne devrais plus être possible si vous avez enlever les utilisateurs des groupes. Donc il est nécessaire de désactiver cela avec l'outil de votre environnement de Bureau. Par exemple pour LXDE il s'agit de lxsession, si vous avez des problème pour cet environnement [http://wiki.lxde.org/en/Autostart cette page (et ses liens)] devrait vous aider

===Aller plus loin===
* Si l'on veut restreindre ce droit par utilisateur ou par groupe on modifie la ligne &quot;Identity&quot; comme il suit
 Identity=unix-user:toto;unix-group:plugdev
* Pour creuser un peu plus la configuration de ce système on peux aller voir [http://www.freedesktop.org/software/polkit/docs/0.105/pklocalauthority.8.html cette page] sur PolicyKit
* Il serait aussi intéressant de définir des ports USB réservés pour chaque siège, mais je ne sais pas encore comment gérer cela.
* Voir s'il est possible de dédier les voies arrière à un poste et les voies avant à un autre ...

==Conclusion==
Et voilà, tout est prêt pour le redémarrage et admirer les mires de login sur leur écran respectif.

===Avantages===
* Avec du matériel de récupération on peut facilement mettre en place cette solution peut coûteuse
* La satisfaction d'avoir un poste de travail exotique
* Permettre à une tierce personne de profiter de la puissance monstre des machines récente sans se priver de notre fauteuil favori
* Se sentir moins avec une/plusieurs personnes à coté de soi :-p

===Inconvénients===
* Accélération graphique fortement diminué
* Si on débranche les claviers/souries Xephyr ne sait pas les reconnaitre automatiquement au rebranchement. Il faut relancer Xephyr en se déconnectant ou relancer LightDM
* Un &quot;saut&quot; des 2 écrans lors de la déconnexion d'un postes, mais cela est dû à LightDM et son changment de VT intempestif.
* Surveillance de chaque mis à jour de Xorg pour ne pas avoir de surprise au redémarrage
* Recompilation nécessaire en cas de mise à jour majeur de Xorg
* Gestion des montages USB non optimale
* Les voyants du clavier (pavé numérique, Majuscule et arrêt défile) ne réagissent plus, mais la clavier réagit correctement.
* Dans l'espace de travail de certains logiciel (VLC, Gimp) la sourie peux avoir un affichage lacunaire. Par exemple sous GIMP elle n'est visible que lorsqu'on la déplace, avec VLS il y a un carré noir autour d'elle quand on la déplace le reste du temps elle disparait.


===Remerciement===
Un grand merci à ce site pour m'avoir prémaché le travail ... ce qui ne m'as pas empêché d'apporter quelques améliorations à sa solution.
http://beforeafterx.blogspot.fr/2012/08/configuration-of-ligthdm-12.html</text>
      <sha1>4w56a9y6oibi62di0e4gqp5yaskhj09</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5155</id>
      <parentid>5114</parentid>
      <timestamp>2013-05-14T11:57:27Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Choix des outils */</comment>
      <text xml:space="preserve" bytes="24159">Après avoir fait du [http://www.debian-fr.org/multiseat-plusieurs-utilisateurs-sur-1-pc-t6954.html#p188187 multiposte avec 2 CG], un changement de PC m'oblige à faire la même chose mais avec une seule carte. J'ai essayé de couvrir au maximum toutes les étapes de la mise en place de la solution.

----
==Choix des outils==
Tout d'abord le raisonnement pour le choix des outils à été le suivant.
==== Xorg ou Wayland ?====
La réponse a été rapide. Xorg clairement, Wayland est encore trop récent pour pouvoir le faire et aucun document ne traite pour l'instant de ce problème.

==== Xnest ou Xephyr ?====
Xephyr est largement plébiscité et Xnest semble tomber en désuétude. C'est par le développement de Tizen (ex-Meego) que Xephyr semble toujours actif et que de nouvelles fonctionnalités lui sont ajoutées. Intel s'en sert intensément et est énormément utilisé pour le développement d'application pour smartphone comme environnement de simulation. (http://www.phoronix.com/scan.php?page=news_item&amp;px=ODc1NQ).
Un souci avec Xephyr est que le support de evdev semble ne pas avoir été inclus dans les options de compilations. &quot;evdev&quot; permet de monopoliser les claviers et souris. Du coup il faut refaire le paquet soi-même.

==== Et la transition avec systemd ? ====
Il ne semble plus y avoir de problème particulier (http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org)

====Comment gérer 2 écran, 2 session avec une seule carte graphique ?====
Il faut savoir que Xephyr permet de se greffer sur n'importe quel serveur X afin d'afficher une autre session. Par exemple avec la commande &quot;Xephyr -query 127.0.0.1&quot; vous devez pouvoir vous connecter sur votre propre machine si le protocole &quot;XDMCP&quot; est activé sur votre &quot;DisplayManager&quot; (GDM, KDM, XDM, ...). Donc le but du jeu sera d'avoir un serveur X qui va &quot;supporter&quot; 2 fenêtres Xephyr. Ces deux dernières se verront affectées les claviers et les souris de manière exclusive.

====Et le DM ? Debian a adopté GDM(3) avec Gnome mais j'aimerais bien m'en passer.====
Avec GDM (celui de Gnome2) il existe un très bon tutoriel ici : http://netpatia.blogspot.fr/2009/06/multiseat-in-ubuntu-904.html 
Pour GDM3, le problème est que pour l'instant il ne reprend pas toutes les possibilitées de son ancienne version. 
https://live.gnome.org/GDM/ToDo
&quot;-- Allow per-display X Server commands 
		BrianCameron: The [server] and [server-foo] sections of the GDM configuration have been disabled. This means that users who depend on novel configurations which require special Xserver commands per-display is not available.&quot;

Donc bonne nouvelle, il fallait trouver une alternative en le nom de LightDM, qui est issu de Ubuntu ... 

===Prérequis===
Donc pour les pré-requis :
* Ajouter &quot;deb-src http://ftp.fr.debian.org/debian/ &lt;VersionDebian&gt; main contrib non-free&quot;
* Installer les paquage dpkg-dev, build-essential, devscripts, lightDM

==Reconstruction de Xephyr==
===Récupération des sources nécessaires===
On récupère toutes les sources du packet source xorg-server qui comprend Xephyr.

 $ apt-get source xserver-xephyr


Puis récupérer toutes les dépendances spécifique au paquet :

 $ apt-get build-dep xorg-server

Là il va télécharger un certain nombre de paquet de développement (&quot;-dev&quot;), ils sont marqué comme installé automatiquement, donc un deborphan devrait vous les enlever sans trop de problème. Sinon il existe cette commande pour être sur qu'ils sont marqué en tant que &quot;installé automatiquement&quot;, puis un &quot;apt-get autoclean&quot; les supprimera.

===Reconfiguration===
Ensuite tout se passe dans le répertoire &quot;debian&quot;

 $ cd xorg-server-1.12.4/debian


On édite le fichier &quot;changlog&quot; pour monter de version le paquet que l'on va reconstruire. Il est possible de le faire en automatique avec la commande:

 debian/$ dch -n


L'option &quot;-n&quot; permet d'incrémenter le numéro de version de façon mineur, c'est à dire l'ajout de &quot;.1&quot; en fin de numéro de version.

Sinon pour le faire en manuel, il faut ajouter une ligne du type suivant au fichier:
&lt;pre&gt;
xorg-server (2:1.12.4-5.1) UNRELEASED; urgency=low

  * Non-maintainer upload.
  * ajout des paramètre pour Xephyr et evdev

 -- Vous &lt;vous@VotreMachine&gt;  Sun, 03 Mar 2013 22:21:32 +0100
&lt;/pre&gt;

Pour éviter de réinstaller tout Xorg avec le nouveau numéro de version il faut éditer le fichier &quot;debian/control&quot; et modifier la dépendance de Xephyr (ligne ~283). Pour cela il faut remplacer le 
&lt;pre&gt;
Depends :
  xserver-common (&gt;= ${source:Version})
&lt;/pre&gt;
Par :
&lt;pre&gt;
Depends :
  xserver-common (&gt;= 2:1.12.4-5)
&lt;/pre&gt;

Le numéro doit être en accord avec la version de votre Xorg actuellement installé sur votre machine. 
Sinon cette modification est directement possible dans le .deb, toujours dans le fichier &quot;DEBIAN/control&quot;. Pour cela il faut prendre le .deb que vous avez construit, le décompresser, modifier le fichier et faire la commande &quot;dpkg-deb -b &lt;nom du répertoire contenant les fichiers&gt;&quot;. Mais il est plus pratique de le faire avant.

Je ne vous conseille pas de mettre une numéro de version trop élevé car cela pourrait engendrer une incompatibilité avec les futurs versions de Xorg.

Ensuite nous allons modifier les options de compilation en éditant le fichier &quot;rules&quot;, c'est le Makefile de la construction du packet.
Localisez &quot;confflags_main&quot; (ligne ~133) et ajouter les lignes suivant juste en dessous de &quot;--enable-kdrive&quot; (ligne ~156)

 --enable-kdrive-evdev \
 --enable-kdrive-mouse \
 --enable-kdrive-kbd \

===Recompilation===
Passons maintenant à la recompilation proprement dite, ressortez du répertoire debian et faites :
 $ fakeroot ./debian/rules binary

Et laisser la compilation et la création des paquets se faire ... cela peut prendre quelques minutes.

====Re-recompilation====
Si pour une raison il vous faut refaire entièrement la compilation il faut d'abord faire la commande suivante
 $ fakeroot ./debian/rules clean

Si c'est juste refaire les &quot;.deb&quot; (correction du numéro de dépendance, ...), alors cette commande suffit.
 $ fakeroot ./debian/rules binary-deb

===Installation du paquet obtenue===
Enfin pour installer votre paket (qui se trouve dans le répertoire supérieur) il faut faire :
 #dpkg -i xserver-xephyr_1.12.4-5_i386.deb
Ou de manière graphique avec GDebi.
====Paquets déjà prêt====
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6_i386.deb.tar]]
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6.1_amd64.deb.tar]]

==Configuration de Xorg==
===Définition de l'existant===
Pour rappel le principe seras d'avoir une session X qui va héberger 2 sessions Xephyr qui serviront les différents sièges.
Tout d'abord nous allons faire un fichier de conf pour le serveur Xorg. Pour ne pas démarrer de rien on peut lancer la commande (en root) &quot;Xorg -configure&quot; qui génère le fichier &quot;xorg.conf.new&quot; dans &quot;/root&quot;. Ensuite on fait un petit &quot;xrandr&quot; pour identifier les sorties disponibles.
&lt;pre&gt;
$ xrandr

Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 593mm
&lt;/pre&gt;

&quot;DVI-0&quot; &amp; &quot;HDMI-0&quot; sont les 2 disponibles sur la machine. On peux aussi trouver du &quot;VGA-0&quot; ou &quot;LVDS&quot; pour les écrans de portables.

===Exemple de fichier de configuration===
Dans cet exemple on peut avoir un &quot;/etc/xorg.conf&quot; comme suivant :
&lt;pre&gt;
##################################################################
Section &quot;Monitor&quot;
	Identifier  &quot;HannsG&quot;
	Option      &quot;PreferredMode&quot; &quot;1920x1200&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
	Option		&quot;Primary&quot; &quot;true&quot;
EndSection

Section &quot;Monitor&quot;
	Identifier  &quot;Acer&quot;
	Option      &quot;PreferredMode&quot; &quot;1680x1050&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
EndSection

Section &quot;Device&quot;
	Identifier  &quot;card0&quot;
	Driver      &quot;radeon&quot;
	# Ici on associe les sorties video avec une section &quot;Monitor&quot;
	# On remarquera le &quot;Monitor&quot; devant le nom des sortie, c'est indispensable (cf : http://www.x.org/archive/current/doc/man/man5/xorg.conf.5.xhtml#heading12)
	Option      &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
	Option      &quot;Monitor-DVI-0&quot; &quot;Acer&quot;
EndSection

##################################################################

Section &quot;Screen&quot;
	Identifier  &quot;ecran1&quot;
	Device      &quot;card0&quot;
	Monitor     &quot;HansG&quot;
	DefaultDepth 24
	SubSection &quot;Display&quot;
 		Depth   24
		Virtual 3600 1200
	EndSubSection
EndSection

Section &quot;ServerLayout&quot;
	Identifier    &quot;dualscreen&quot;
	Screen      0  &quot;ecran1&quot;
EndSection
##################################################################
&lt;/pre&gt;

==Configuration de LightDM==
Nous allons maintenant regarder la configuration de LightDM d'un peu plus près. Le fichier de configuration par défaut expose toutes les options possibles du dit fichier. Nous allons garder le strict minimum
===lightdm.conf===
Pour cela éditons le fichier /etc/lightd/lightdm.conf

&lt;pre&gt;
[LightDM]
 greeter-user=root
 user-authority-in-system-dir=false

 [SeatDefaults]
 xserver-allow-tcp=false
 greeter-hide-users=false
 user-session=lightdm-xsession
 session-wrapper=/etc/X11/Xsession

 [Seat:1]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 1 -t 1680x1050 -P evdev -s /dev/input/by-id/usb-Logitech_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd -v bepo 
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 1
 greeter-session=lightdm-greeter

[Seat:2]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 2 -t 1920x1200 -P evdev -s /dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-path/platform-i8042-serio-0-event-kbd
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 2 -d 1680,0
 greeter-session=lightdm-greeter
&lt;/pre&gt;

Il y a plusieurs chose à savoir concernant le fonctionnement de LightDM afin de comprendre ce qui est fait.
-- La section &quot;SeatDefault&quot; est commune à tous les siège définit après
-- Chaque &quot;Seat&quot; est exécuté dans l'ordre dans un VT différent et ce même si, dans notre cas, tout se passe dans le VT7 ([url=https://code.launchpad.net/~andrzejtp2010/lightdm/lightdm-trunk-xephyr-multiseat/+merge/120286]un patch[url] à été proposé pour palier à ce problème mais il n'a pas été accepté ... pour l'instant)
-- Chaque propriétés de tous les &quot;Seat&quot; sont lancé dans un ordre précis, d'abord tous les &quot;xserver-command&quot;, puis tous les &quot;greeter-setup-script&quot;, enfin tous les &quot;greeter-session&quot;. Si vous mettez d'autres propriétés elle seront exécuter suivant leur ordre pré-établi.
-- Si les &quot;greeter&quot; se termine, lightDM coupe le &quot;xserver-command&quot; correspondant. De même si le &quot;xserver-command&quot; se termine le greeter est coupé.

Donc pour que tout se positionne correctement il faut
-- D'abord lancer le serveur X qui servira de support, ce qui est fait en le mettant en tant que premier &quot;Seat&quot;
-- Lancer les fenêtres Xephyr avec les optons qui vont bien, ce qui est fait avec le script &quot;Xephyr-command.sh&quot; et ses arguments
-- Simuler un &quot;greeter&quot; pour le &quot;Seat :0&quot; afin que le serveur X ne soit pas tuer par lightDM, ce qui est fait avec le script &quot;fake-greeter&quot;
-- Exécuter un script qui va placer les fenêtre Xephyr si besoin et initialiser les variables d'environnement correctement, fait avec &quot;Xephyr-greeter-setup.sh&quot;
-- Exécuter les &quot;greeter&quot; dans les fenêtre Xephyr

===fake-greeter.desktop===
Pour le faux greeter du serveur X il faut créer un fichier dans &quot;/usr/share/xgreeters/fake-greeter.desktop&quot; et y copier son contenu :
&lt;pre&gt;
[Desktop Entry]
Name=LightDM fake greeter
Comment=This runs no greeter at all, it should only be run from LightDM
Exec=sleep infinity
Type=Application
X-Ubuntu-Gettext-Domain=lightdm
&lt;/pre&gt;

Après tout cela nous allons créer un script qui permettra de créer (&quot;Xephyr-command.sh&quot;) et un autre pour placer les fenêtre à l'écran (&quot;Xephyr-greeter-setup.sh&quot;).
Tout d'abord il est nécessaire d'installer le petit utilitaire &quot;wmctrl&quot; avec
 # aptitude install wmctrl
===Xephyr-command.sh===
 Le contenue du fichier &quot;Xephyr-command.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -t, taille : Doit être de la forme 9999x9999, (dafaut = 1024x768)&quot;
  echo &quot;\t -s, sourie : /dev/input/[by-path|by-id]/...event-mouse&quot;
  echo &quot;\t -c, clavier : /dev/input/[by-path|by-id]/...event-kbd&quot;
  echo &quot;\t -l, layout : fr, es, en, ... (défaut = fr)&quot;
  echo &quot;\t -v, variant : fr, latin9, bepo, ... (défaut = &lt;vide&gt;)&quot;
  echo &quot;\t -P, Pilote : ephyr ou evdev (défaut = ephyr)&quot;
}

testExecutable() {
	XEPHYR=`whereis -b Xephyr | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
TAILLE=&quot;1024x768&quot;
SOURIE=
CLAVIER=
LAYOUT=&quot;fr&quot;
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
PILOTE=ephyr # Test = ephyr ; Prod = evdev

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XEPHYR&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;Xephyr : &quot;$XEPHYR
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:t:s:c:l:v:P:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		t|taille)
			TAILLE=&quot;$OPTARG&quot;
		;;

		s|sourie)
			SOURIE=$OPTARG
			if  ! [ -r $SOURIE ];then
				echo &quot;La sourie n'est pas accessible&quot;
				exit 3
			fi
		;;

		c|clavier)
			CLAVIER=$OPTARG
			if  ! [ -r $CLAVIER ];then
				echo &quot;Le clavier n'est pas accessible&quot;
				exit 4
			fi
		;;

		l|layout)
			LAYOUT=$OPTARG
		;;

		v|variant)
			VARIANT=$OPTARG
		;;

		P|Pilote)
			PILOTE=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Construction de la ligne d&quot;argument
OPTIONS=&quot;&quot;

if [ -n &quot;${TAILLE}&quot; ]; then
	OPTIONS=&quot; -screen ${TAILLE}&quot;
fi

if [ -n &quot;${CLAVIER}&quot; ]; then
	if [ -n &quot;${LAYOUT}&quot; ]; then
		OPTIONS=$OPTIONS&quot; -keybd $PILOTE,,device=${CLAVIER},xkbrules=evdev,xkbmodel=evdev,xkblayout=${LAYOUT}&quot;
		if [ -n &quot;${VARIANT}&quot; ]; then
			OPTIONS=$OPTIONS&quot;,xkbvariant=${VARIANT}&quot;
		fi
	fi
fi

if [ -n &quot;${SOURIE}&quot; ]; then
	OPTIONS=$OPTIONS&quot; -mouse $PILOTE,,device=${SOURIE}&quot;
fi

# Lancement de Xephyr en arrière plan
echo &quot;$XEPHYR -retro $OPTIONS :$POSTE&quot;
exec $XEPHYR -retro  $OPTIONS :$POSTE
&lt;/pre&gt;

Petite explication sur la dernière ligne. Le &quot;exec&quot; fait en sorte que ce soit le processus de Xephyr qui prend la place du script, donc il reprend le PID et tout ce qui va bien. Ca permet surtout à ce que le signal USR1 que Xephyr lance au PPID, soit bien récupéré par LightDM et que ce dernier continue son fonctionnement normalement.

===Xephyr-greeter-setup.sh===
Le contenue du fichier &quot;Xephyr-greeter-setup.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p|--poste numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -d, --deplacement : de la forme 'x,y' (en pixel)&quot;
  echo &quot;\t -v, --vt : 7, 8, 9, 10, 11 (defaut = 7)&quot;
}

testExecutable() {
	XWININFO=`whereis -b xwininfo | cut -d' ' -f2`
	WMCTRL=`whereis -b wmctrl | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
DEPLACEMENT=
VT=7
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
ATTENTE=3 # temps en seconde avant de déclencher le &quot;chvt&quot; pour revenir sur le bon VT

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XWININFO&quot; -o -z &quot;$WMCTRL&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;xwininfo : &quot;$XWININFO
	echo &quot;wmctrl : &quot;$WMCTRL
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:d:v:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		d|deplacement)
			DEPLACEMENT=&quot;$OPTARG&quot;
		;;
	
		v|vt)
			VT=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Vieux Hack tout bancal pour revenir au bon VT sans patcher LightDM
(sleep $ATTENTE ; chvt $VT)&amp;

# Deplacement de la fenetre si besoin
if [ -n &quot;$DEPLACEMENT&quot; ]; then
	#On recherche l'ID de la fenêtre Xephyr
        XEP=`XAUTHORITY=/var/run/lightdm/root/:$XRACINE $XWININFO -root -children -all -display :$XRACINE | grep &quot;Xephyr on :$POSTE&quot; --max-count=1`;

	if [ -z &quot;$XEP&quot; ]; then
		echo &quot;fenêtre Xephyr non trouvé pour le poste $POSTE&quot;
		exit 5
	fi
    XEPHYR_WIN_ID=`echo ${XEP} | cut -d' ' -f1`;
    $WMCTRL 2&gt;&amp;1 -v -i -r ${XEPHYR_WIN_ID} -e 0,${DEPLACEMENT},-1,-1;
	if [ $? -ne 0 ]; then
		echo &quot;Erreur lors du déplacement de la fenêtre Xephyr pour le poste $POSTE&quot;
		exit 7
	fi
fi

# Mise en place des variables d'environnement pour le greeter (utile ?)
export DISPLAY=:$POSTE
export XAUTHORITY=/var/run/lightdm/root/:$POSTE
&lt;/pre&gt;
Petite explication concernant la ligne suivante
 (sleep $ATTENTE ; chvt $VT)&amp;
Comme je n'ai pas patché LightDM pour éviter le changement de VT et que Xephyr m'empêche de faire un Ctrl+Alt+7 (avec le driver evdev) pour revenir au bon VT, j'ai du mettre en place un automatisme. Certes c'est loin d'être parfait mais ça rempli correctement son office.

==Modification du système==
===Montage des périphériques USB===
On se rend assez vite compte que si l'on branche une clé USB elle n'apparait pas automatiquement sur le bureau et elle est encore moins &quot;montable&quot; par un utilisateur classique. Elle apparait bien dans la liste des périphériques accessibles (volet de gauche sur nautilus) mais il y a un problème de droit.
Un petit rappel de la chaine mis en jeu lorsque l'on branche une clé USB ou tout autre périphérique.
* Détection par le noyau de l'ajout d'un matériel
* Udev prend le relai et créé les périphériques block nécessaire dans /dev
* PolicyKit termine le travail en mettant en place les autorisations adéquate

Donc le blocage vient de ce dernier composant, il ne reconnait pas une session Xephyr comme &quot;active&quot; et donc refuse le montage de ce type de périphérique par l'utilisateur lambda. Pour passer au delà de cette limitation on va redéfinir la règle de montage, pour cela il faut aller dans le répertoire suivant :
 /etc/polkit-1/localauthority/50-local.d
Et y créer un fichier, &quot;10-udisk.pkla&quot; par exemple
&lt;pre&gt;
[Allow mounting from Xephyr]
Identity=*
Action=org.freedesktop.udisks.change;org.freedesktop.udisks.drive-detach;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.filesystem-unmount-others
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

Voilà, avec Gnome3 dans le volet de gauche de Nautilus on peux cliquer sur l'icone de la clé USB pour quelle se monte correctement, idem avec LXDE.
Je recommande de désactiver l'automontage des périphériques USB afin que l'utilisateur qui branche la clé puisse la monter sans interférence.

===Gestion de l'énergie===
De la même manière que précédemment, par défaut il est impossible d'éteindre l'ordinateur depuis la session graphique (hors LightDM).
Donc pour cela on créé un nouveau fichier (20-upower.pkla) dans :
 /etc/polkit-1/localauthority/50-local.d

&lt;pre&gt;
[Suspend/hibernate permissions]
Identity=*
Action=org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

===Gestion du son===
Par défaut Pulseaudio est lancé lors de l'identification d'un utilisateur, du coup il est le seul qui puisse utiliser la carte son. Pour palier a ce problème il faut rendre pulseaudio démon du système.
Pour cela il faut modifier plusieurs fichiers de configurations :
* /etc/default/pulseaudio
&lt;pre&gt;PULSEAUDIO_SYSTEM_START=1&lt;/pre&gt;

* /etc/pulse/daemon.conf
&lt;pre&gt;daemonize = yes
local-server-type = system&lt;/pre&gt;

* /etc/pulse/client.conf
&lt;pre&gt;autospawn = no&lt;/pre&gt;

* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot;
 usermod -aG pulse-access &lt;username&gt;

* On peux enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse

([http://askubuntu.com/questions/192522/how-do-i-configure-sound-with-pulseaudio-and-multiseat source] [http://disjunkt.com/jd/2010/en/multiseat-linux/multiseat-linux-system-wide-pulseaudio-for-routing-sounds-109/ source2])

====Modification des DE (Gnome, KDE, LXDE, ...)====
Par défaut les environnements graphique exécute Pulseaudio en espace utilisateur, ce qu'il ne faut plus faire puisqu'il est partagé, ce qui ne devrais plus être possible si vous avez enlever les utilisateurs des groupes. Donc il est nécessaire de désactiver cela avec l'outil de votre environnement de Bureau. Par exemple pour LXDE il s'agit de lxsession, si vous avez des problème pour cet environnement [http://wiki.lxde.org/en/Autostart cette page (et ses liens)] devrait vous aider

===Aller plus loin===
* Si l'on veut restreindre ce droit par utilisateur ou par groupe on modifie la ligne &quot;Identity&quot; comme il suit
 Identity=unix-user:toto;unix-group:plugdev
* Pour creuser un peu plus la configuration de ce système on peux aller voir [http://www.freedesktop.org/software/polkit/docs/0.105/pklocalauthority.8.html cette page] sur PolicyKit
* Il serait aussi intéressant de définir des ports USB réservés pour chaque siège, mais je ne sais pas encore comment gérer cela.
* Voir s'il est possible de dédier les voies arrière à un poste et les voies avant à un autre ...

==Conclusion==
Et voilà, tout est prêt pour le redémarrage et admirer les mires de login sur leur écran respectif.

===Avantages===
* Avec du matériel de récupération on peut facilement mettre en place cette solution peut coûteuse
* La satisfaction d'avoir un poste de travail exotique
* Permettre à une tierce personne de profiter de la puissance monstre des machines récente sans se priver de notre fauteuil favori
* Se sentir moins avec une/plusieurs personnes à coté de soi :-p

===Inconvénients===
* Accélération graphique fortement diminué
* Si on débranche les claviers/souries Xephyr ne sait pas les reconnaitre automatiquement au rebranchement. Il faut relancer Xephyr en se déconnectant ou relancer LightDM
* Un &quot;saut&quot; des 2 écrans lors de la déconnexion d'un postes, mais cela est dû à LightDM et son changment de VT intempestif.
* Surveillance de chaque mis à jour de Xorg pour ne pas avoir de surprise au redémarrage
* Recompilation nécessaire en cas de mise à jour majeur de Xorg
* Gestion des montages USB non optimale
* Les voyants du clavier (pavé numérique, Majuscule et arrêt défile) ne réagissent plus, mais la clavier réagit correctement.
* Dans l'espace de travail de certains logiciel (VLC, Gimp) la sourie peux avoir un affichage lacunaire. Par exemple sous GIMP elle n'est visible que lorsqu'on la déplace, avec VLS il y a un carré noir autour d'elle quand on la déplace le reste du temps elle disparait.


===Remerciement===
Un grand merci à ce site pour m'avoir prémaché le travail ... ce qui ne m'as pas empêché d'apporter quelques améliorations à sa solution.
http://beforeafterx.blogspot.fr/2012/08/configuration-of-ligthdm-12.html</text>
      <sha1>bgjlopdp98htpeznlgubek27s66tpwj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5156</id>
      <parentid>5155</parentid>
      <timestamp>2013-05-14T11:58:49Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Récupération des sources nécessaires */</comment>
      <text xml:space="preserve" bytes="24164">Après avoir fait du [http://www.debian-fr.org/multiseat-plusieurs-utilisateurs-sur-1-pc-t6954.html#p188187 multiposte avec 2 CG], un changement de PC m'oblige à faire la même chose mais avec une seule carte. J'ai essayé de couvrir au maximum toutes les étapes de la mise en place de la solution.

----
==Choix des outils==
Tout d'abord le raisonnement pour le choix des outils à été le suivant.
==== Xorg ou Wayland ?====
La réponse a été rapide. Xorg clairement, Wayland est encore trop récent pour pouvoir le faire et aucun document ne traite pour l'instant de ce problème.

==== Xnest ou Xephyr ?====
Xephyr est largement plébiscité et Xnest semble tomber en désuétude. C'est par le développement de Tizen (ex-Meego) que Xephyr semble toujours actif et que de nouvelles fonctionnalités lui sont ajoutées. Intel s'en sert intensément et est énormément utilisé pour le développement d'application pour smartphone comme environnement de simulation. (http://www.phoronix.com/scan.php?page=news_item&amp;px=ODc1NQ).
Un souci avec Xephyr est que le support de evdev semble ne pas avoir été inclus dans les options de compilations. &quot;evdev&quot; permet de monopoliser les claviers et souris. Du coup il faut refaire le paquet soi-même.

==== Et la transition avec systemd ? ====
Il ne semble plus y avoir de problème particulier (http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org)

====Comment gérer 2 écran, 2 session avec une seule carte graphique ?====
Il faut savoir que Xephyr permet de se greffer sur n'importe quel serveur X afin d'afficher une autre session. Par exemple avec la commande &quot;Xephyr -query 127.0.0.1&quot; vous devez pouvoir vous connecter sur votre propre machine si le protocole &quot;XDMCP&quot; est activé sur votre &quot;DisplayManager&quot; (GDM, KDM, XDM, ...). Donc le but du jeu sera d'avoir un serveur X qui va &quot;supporter&quot; 2 fenêtres Xephyr. Ces deux dernières se verront affectées les claviers et les souris de manière exclusive.

====Et le DM ? Debian a adopté GDM(3) avec Gnome mais j'aimerais bien m'en passer.====
Avec GDM (celui de Gnome2) il existe un très bon tutoriel ici : http://netpatia.blogspot.fr/2009/06/multiseat-in-ubuntu-904.html 
Pour GDM3, le problème est que pour l'instant il ne reprend pas toutes les possibilitées de son ancienne version. 
https://live.gnome.org/GDM/ToDo
&quot;-- Allow per-display X Server commands 
		BrianCameron: The [server] and [server-foo] sections of the GDM configuration have been disabled. This means that users who depend on novel configurations which require special Xserver commands per-display is not available.&quot;

Donc bonne nouvelle, il fallait trouver une alternative en le nom de LightDM, qui est issu de Ubuntu ... 

===Prérequis===
Donc pour les pré-requis :
* Ajouter &quot;deb-src http://ftp.fr.debian.org/debian/ &lt;VersionDebian&gt; main contrib non-free&quot;
* Installer les paquage dpkg-dev, build-essential, devscripts, lightDM

==Reconstruction de Xephyr==
===Récupération des sources nécessaires===
On récupère toutes les sources du packet source xorg-server qui comprend Xephyr.

 $ apt-get source xserver-xephyr


Puis récupérer toutes les dépendances spécifique au paquet :

 $ apt-get build-dep xorg-server

Là il va télécharger un certain nombre de paquets de développement (&quot;-dev&quot;), ils sont marqués comme installés automatiquement, donc un deborphan devrait vous les enlever sans trop de problème. Sinon il existe cette commande pour être sûr qu'ils sont marqués en tant que &quot;installé automatiquement&quot;, puis un &quot;apt-get autoclean&quot; les supprimera.

===Reconfiguration===
Ensuite tout se passe dans le répertoire &quot;debian&quot;

 $ cd xorg-server-1.12.4/debian


On édite le fichier &quot;changlog&quot; pour monter de version le paquet que l'on va reconstruire. Il est possible de le faire en automatique avec la commande:

 debian/$ dch -n


L'option &quot;-n&quot; permet d'incrémenter le numéro de version de façon mineur, c'est à dire l'ajout de &quot;.1&quot; en fin de numéro de version.

Sinon pour le faire en manuel, il faut ajouter une ligne du type suivant au fichier:
&lt;pre&gt;
xorg-server (2:1.12.4-5.1) UNRELEASED; urgency=low

  * Non-maintainer upload.
  * ajout des paramètre pour Xephyr et evdev

 -- Vous &lt;vous@VotreMachine&gt;  Sun, 03 Mar 2013 22:21:32 +0100
&lt;/pre&gt;

Pour éviter de réinstaller tout Xorg avec le nouveau numéro de version il faut éditer le fichier &quot;debian/control&quot; et modifier la dépendance de Xephyr (ligne ~283). Pour cela il faut remplacer le 
&lt;pre&gt;
Depends :
  xserver-common (&gt;= ${source:Version})
&lt;/pre&gt;
Par :
&lt;pre&gt;
Depends :
  xserver-common (&gt;= 2:1.12.4-5)
&lt;/pre&gt;

Le numéro doit être en accord avec la version de votre Xorg actuellement installé sur votre machine. 
Sinon cette modification est directement possible dans le .deb, toujours dans le fichier &quot;DEBIAN/control&quot;. Pour cela il faut prendre le .deb que vous avez construit, le décompresser, modifier le fichier et faire la commande &quot;dpkg-deb -b &lt;nom du répertoire contenant les fichiers&gt;&quot;. Mais il est plus pratique de le faire avant.

Je ne vous conseille pas de mettre une numéro de version trop élevé car cela pourrait engendrer une incompatibilité avec les futurs versions de Xorg.

Ensuite nous allons modifier les options de compilation en éditant le fichier &quot;rules&quot;, c'est le Makefile de la construction du packet.
Localisez &quot;confflags_main&quot; (ligne ~133) et ajouter les lignes suivant juste en dessous de &quot;--enable-kdrive&quot; (ligne ~156)

 --enable-kdrive-evdev \
 --enable-kdrive-mouse \
 --enable-kdrive-kbd \

===Recompilation===
Passons maintenant à la recompilation proprement dite, ressortez du répertoire debian et faites :
 $ fakeroot ./debian/rules binary

Et laisser la compilation et la création des paquets se faire ... cela peut prendre quelques minutes.

====Re-recompilation====
Si pour une raison il vous faut refaire entièrement la compilation il faut d'abord faire la commande suivante
 $ fakeroot ./debian/rules clean

Si c'est juste refaire les &quot;.deb&quot; (correction du numéro de dépendance, ...), alors cette commande suffit.
 $ fakeroot ./debian/rules binary-deb

===Installation du paquet obtenue===
Enfin pour installer votre paket (qui se trouve dans le répertoire supérieur) il faut faire :
 #dpkg -i xserver-xephyr_1.12.4-5_i386.deb
Ou de manière graphique avec GDebi.
====Paquets déjà prêt====
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6_i386.deb.tar]]
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6.1_amd64.deb.tar]]

==Configuration de Xorg==
===Définition de l'existant===
Pour rappel le principe seras d'avoir une session X qui va héberger 2 sessions Xephyr qui serviront les différents sièges.
Tout d'abord nous allons faire un fichier de conf pour le serveur Xorg. Pour ne pas démarrer de rien on peut lancer la commande (en root) &quot;Xorg -configure&quot; qui génère le fichier &quot;xorg.conf.new&quot; dans &quot;/root&quot;. Ensuite on fait un petit &quot;xrandr&quot; pour identifier les sorties disponibles.
&lt;pre&gt;
$ xrandr

Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 593mm
&lt;/pre&gt;

&quot;DVI-0&quot; &amp; &quot;HDMI-0&quot; sont les 2 disponibles sur la machine. On peux aussi trouver du &quot;VGA-0&quot; ou &quot;LVDS&quot; pour les écrans de portables.

===Exemple de fichier de configuration===
Dans cet exemple on peut avoir un &quot;/etc/xorg.conf&quot; comme suivant :
&lt;pre&gt;
##################################################################
Section &quot;Monitor&quot;
	Identifier  &quot;HannsG&quot;
	Option      &quot;PreferredMode&quot; &quot;1920x1200&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
	Option		&quot;Primary&quot; &quot;true&quot;
EndSection

Section &quot;Monitor&quot;
	Identifier  &quot;Acer&quot;
	Option      &quot;PreferredMode&quot; &quot;1680x1050&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
EndSection

Section &quot;Device&quot;
	Identifier  &quot;card0&quot;
	Driver      &quot;radeon&quot;
	# Ici on associe les sorties video avec une section &quot;Monitor&quot;
	# On remarquera le &quot;Monitor&quot; devant le nom des sortie, c'est indispensable (cf : http://www.x.org/archive/current/doc/man/man5/xorg.conf.5.xhtml#heading12)
	Option      &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
	Option      &quot;Monitor-DVI-0&quot; &quot;Acer&quot;
EndSection

##################################################################

Section &quot;Screen&quot;
	Identifier  &quot;ecran1&quot;
	Device      &quot;card0&quot;
	Monitor     &quot;HansG&quot;
	DefaultDepth 24
	SubSection &quot;Display&quot;
 		Depth   24
		Virtual 3600 1200
	EndSubSection
EndSection

Section &quot;ServerLayout&quot;
	Identifier    &quot;dualscreen&quot;
	Screen      0  &quot;ecran1&quot;
EndSection
##################################################################
&lt;/pre&gt;

==Configuration de LightDM==
Nous allons maintenant regarder la configuration de LightDM d'un peu plus près. Le fichier de configuration par défaut expose toutes les options possibles du dit fichier. Nous allons garder le strict minimum
===lightdm.conf===
Pour cela éditons le fichier /etc/lightd/lightdm.conf

&lt;pre&gt;
[LightDM]
 greeter-user=root
 user-authority-in-system-dir=false

 [SeatDefaults]
 xserver-allow-tcp=false
 greeter-hide-users=false
 user-session=lightdm-xsession
 session-wrapper=/etc/X11/Xsession

 [Seat:1]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 1 -t 1680x1050 -P evdev -s /dev/input/by-id/usb-Logitech_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd -v bepo 
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 1
 greeter-session=lightdm-greeter

[Seat:2]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 2 -t 1920x1200 -P evdev -s /dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-path/platform-i8042-serio-0-event-kbd
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 2 -d 1680,0
 greeter-session=lightdm-greeter
&lt;/pre&gt;

Il y a plusieurs chose à savoir concernant le fonctionnement de LightDM afin de comprendre ce qui est fait.
-- La section &quot;SeatDefault&quot; est commune à tous les siège définit après
-- Chaque &quot;Seat&quot; est exécuté dans l'ordre dans un VT différent et ce même si, dans notre cas, tout se passe dans le VT7 ([url=https://code.launchpad.net/~andrzejtp2010/lightdm/lightdm-trunk-xephyr-multiseat/+merge/120286]un patch[url] à été proposé pour palier à ce problème mais il n'a pas été accepté ... pour l'instant)
-- Chaque propriétés de tous les &quot;Seat&quot; sont lancé dans un ordre précis, d'abord tous les &quot;xserver-command&quot;, puis tous les &quot;greeter-setup-script&quot;, enfin tous les &quot;greeter-session&quot;. Si vous mettez d'autres propriétés elle seront exécuter suivant leur ordre pré-établi.
-- Si les &quot;greeter&quot; se termine, lightDM coupe le &quot;xserver-command&quot; correspondant. De même si le &quot;xserver-command&quot; se termine le greeter est coupé.

Donc pour que tout se positionne correctement il faut
-- D'abord lancer le serveur X qui servira de support, ce qui est fait en le mettant en tant que premier &quot;Seat&quot;
-- Lancer les fenêtres Xephyr avec les optons qui vont bien, ce qui est fait avec le script &quot;Xephyr-command.sh&quot; et ses arguments
-- Simuler un &quot;greeter&quot; pour le &quot;Seat :0&quot; afin que le serveur X ne soit pas tuer par lightDM, ce qui est fait avec le script &quot;fake-greeter&quot;
-- Exécuter un script qui va placer les fenêtre Xephyr si besoin et initialiser les variables d'environnement correctement, fait avec &quot;Xephyr-greeter-setup.sh&quot;
-- Exécuter les &quot;greeter&quot; dans les fenêtre Xephyr

===fake-greeter.desktop===
Pour le faux greeter du serveur X il faut créer un fichier dans &quot;/usr/share/xgreeters/fake-greeter.desktop&quot; et y copier son contenu :
&lt;pre&gt;
[Desktop Entry]
Name=LightDM fake greeter
Comment=This runs no greeter at all, it should only be run from LightDM
Exec=sleep infinity
Type=Application
X-Ubuntu-Gettext-Domain=lightdm
&lt;/pre&gt;

Après tout cela nous allons créer un script qui permettra de créer (&quot;Xephyr-command.sh&quot;) et un autre pour placer les fenêtre à l'écran (&quot;Xephyr-greeter-setup.sh&quot;).
Tout d'abord il est nécessaire d'installer le petit utilitaire &quot;wmctrl&quot; avec
 # aptitude install wmctrl
===Xephyr-command.sh===
 Le contenue du fichier &quot;Xephyr-command.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -t, taille : Doit être de la forme 9999x9999, (dafaut = 1024x768)&quot;
  echo &quot;\t -s, sourie : /dev/input/[by-path|by-id]/...event-mouse&quot;
  echo &quot;\t -c, clavier : /dev/input/[by-path|by-id]/...event-kbd&quot;
  echo &quot;\t -l, layout : fr, es, en, ... (défaut = fr)&quot;
  echo &quot;\t -v, variant : fr, latin9, bepo, ... (défaut = &lt;vide&gt;)&quot;
  echo &quot;\t -P, Pilote : ephyr ou evdev (défaut = ephyr)&quot;
}

testExecutable() {
	XEPHYR=`whereis -b Xephyr | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
TAILLE=&quot;1024x768&quot;
SOURIE=
CLAVIER=
LAYOUT=&quot;fr&quot;
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
PILOTE=ephyr # Test = ephyr ; Prod = evdev

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XEPHYR&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;Xephyr : &quot;$XEPHYR
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:t:s:c:l:v:P:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		t|taille)
			TAILLE=&quot;$OPTARG&quot;
		;;

		s|sourie)
			SOURIE=$OPTARG
			if  ! [ -r $SOURIE ];then
				echo &quot;La sourie n'est pas accessible&quot;
				exit 3
			fi
		;;

		c|clavier)
			CLAVIER=$OPTARG
			if  ! [ -r $CLAVIER ];then
				echo &quot;Le clavier n'est pas accessible&quot;
				exit 4
			fi
		;;

		l|layout)
			LAYOUT=$OPTARG
		;;

		v|variant)
			VARIANT=$OPTARG
		;;

		P|Pilote)
			PILOTE=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Construction de la ligne d&quot;argument
OPTIONS=&quot;&quot;

if [ -n &quot;${TAILLE}&quot; ]; then
	OPTIONS=&quot; -screen ${TAILLE}&quot;
fi

if [ -n &quot;${CLAVIER}&quot; ]; then
	if [ -n &quot;${LAYOUT}&quot; ]; then
		OPTIONS=$OPTIONS&quot; -keybd $PILOTE,,device=${CLAVIER},xkbrules=evdev,xkbmodel=evdev,xkblayout=${LAYOUT}&quot;
		if [ -n &quot;${VARIANT}&quot; ]; then
			OPTIONS=$OPTIONS&quot;,xkbvariant=${VARIANT}&quot;
		fi
	fi
fi

if [ -n &quot;${SOURIE}&quot; ]; then
	OPTIONS=$OPTIONS&quot; -mouse $PILOTE,,device=${SOURIE}&quot;
fi

# Lancement de Xephyr en arrière plan
echo &quot;$XEPHYR -retro $OPTIONS :$POSTE&quot;
exec $XEPHYR -retro  $OPTIONS :$POSTE
&lt;/pre&gt;

Petite explication sur la dernière ligne. Le &quot;exec&quot; fait en sorte que ce soit le processus de Xephyr qui prend la place du script, donc il reprend le PID et tout ce qui va bien. Ca permet surtout à ce que le signal USR1 que Xephyr lance au PPID, soit bien récupéré par LightDM et que ce dernier continue son fonctionnement normalement.

===Xephyr-greeter-setup.sh===
Le contenue du fichier &quot;Xephyr-greeter-setup.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p|--poste numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -d, --deplacement : de la forme 'x,y' (en pixel)&quot;
  echo &quot;\t -v, --vt : 7, 8, 9, 10, 11 (defaut = 7)&quot;
}

testExecutable() {
	XWININFO=`whereis -b xwininfo | cut -d' ' -f2`
	WMCTRL=`whereis -b wmctrl | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
DEPLACEMENT=
VT=7
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
ATTENTE=3 # temps en seconde avant de déclencher le &quot;chvt&quot; pour revenir sur le bon VT

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XWININFO&quot; -o -z &quot;$WMCTRL&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;xwininfo : &quot;$XWININFO
	echo &quot;wmctrl : &quot;$WMCTRL
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:d:v:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		d|deplacement)
			DEPLACEMENT=&quot;$OPTARG&quot;
		;;
	
		v|vt)
			VT=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Vieux Hack tout bancal pour revenir au bon VT sans patcher LightDM
(sleep $ATTENTE ; chvt $VT)&amp;

# Deplacement de la fenetre si besoin
if [ -n &quot;$DEPLACEMENT&quot; ]; then
	#On recherche l'ID de la fenêtre Xephyr
        XEP=`XAUTHORITY=/var/run/lightdm/root/:$XRACINE $XWININFO -root -children -all -display :$XRACINE | grep &quot;Xephyr on :$POSTE&quot; --max-count=1`;

	if [ -z &quot;$XEP&quot; ]; then
		echo &quot;fenêtre Xephyr non trouvé pour le poste $POSTE&quot;
		exit 5
	fi
    XEPHYR_WIN_ID=`echo ${XEP} | cut -d' ' -f1`;
    $WMCTRL 2&gt;&amp;1 -v -i -r ${XEPHYR_WIN_ID} -e 0,${DEPLACEMENT},-1,-1;
	if [ $? -ne 0 ]; then
		echo &quot;Erreur lors du déplacement de la fenêtre Xephyr pour le poste $POSTE&quot;
		exit 7
	fi
fi

# Mise en place des variables d'environnement pour le greeter (utile ?)
export DISPLAY=:$POSTE
export XAUTHORITY=/var/run/lightdm/root/:$POSTE
&lt;/pre&gt;
Petite explication concernant la ligne suivante
 (sleep $ATTENTE ; chvt $VT)&amp;
Comme je n'ai pas patché LightDM pour éviter le changement de VT et que Xephyr m'empêche de faire un Ctrl+Alt+7 (avec le driver evdev) pour revenir au bon VT, j'ai du mettre en place un automatisme. Certes c'est loin d'être parfait mais ça rempli correctement son office.

==Modification du système==
===Montage des périphériques USB===
On se rend assez vite compte que si l'on branche une clé USB elle n'apparait pas automatiquement sur le bureau et elle est encore moins &quot;montable&quot; par un utilisateur classique. Elle apparait bien dans la liste des périphériques accessibles (volet de gauche sur nautilus) mais il y a un problème de droit.
Un petit rappel de la chaine mis en jeu lorsque l'on branche une clé USB ou tout autre périphérique.
* Détection par le noyau de l'ajout d'un matériel
* Udev prend le relai et créé les périphériques block nécessaire dans /dev
* PolicyKit termine le travail en mettant en place les autorisations adéquate

Donc le blocage vient de ce dernier composant, il ne reconnait pas une session Xephyr comme &quot;active&quot; et donc refuse le montage de ce type de périphérique par l'utilisateur lambda. Pour passer au delà de cette limitation on va redéfinir la règle de montage, pour cela il faut aller dans le répertoire suivant :
 /etc/polkit-1/localauthority/50-local.d
Et y créer un fichier, &quot;10-udisk.pkla&quot; par exemple
&lt;pre&gt;
[Allow mounting from Xephyr]
Identity=*
Action=org.freedesktop.udisks.change;org.freedesktop.udisks.drive-detach;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.filesystem-unmount-others
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

Voilà, avec Gnome3 dans le volet de gauche de Nautilus on peux cliquer sur l'icone de la clé USB pour quelle se monte correctement, idem avec LXDE.
Je recommande de désactiver l'automontage des périphériques USB afin que l'utilisateur qui branche la clé puisse la monter sans interférence.

===Gestion de l'énergie===
De la même manière que précédemment, par défaut il est impossible d'éteindre l'ordinateur depuis la session graphique (hors LightDM).
Donc pour cela on créé un nouveau fichier (20-upower.pkla) dans :
 /etc/polkit-1/localauthority/50-local.d

&lt;pre&gt;
[Suspend/hibernate permissions]
Identity=*
Action=org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

===Gestion du son===
Par défaut Pulseaudio est lancé lors de l'identification d'un utilisateur, du coup il est le seul qui puisse utiliser la carte son. Pour palier a ce problème il faut rendre pulseaudio démon du système.
Pour cela il faut modifier plusieurs fichiers de configurations :
* /etc/default/pulseaudio
&lt;pre&gt;PULSEAUDIO_SYSTEM_START=1&lt;/pre&gt;

* /etc/pulse/daemon.conf
&lt;pre&gt;daemonize = yes
local-server-type = system&lt;/pre&gt;

* /etc/pulse/client.conf
&lt;pre&gt;autospawn = no&lt;/pre&gt;

* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot;
 usermod -aG pulse-access &lt;username&gt;

* On peux enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse

([http://askubuntu.com/questions/192522/how-do-i-configure-sound-with-pulseaudio-and-multiseat source] [http://disjunkt.com/jd/2010/en/multiseat-linux/multiseat-linux-system-wide-pulseaudio-for-routing-sounds-109/ source2])

====Modification des DE (Gnome, KDE, LXDE, ...)====
Par défaut les environnements graphique exécute Pulseaudio en espace utilisateur, ce qu'il ne faut plus faire puisqu'il est partagé, ce qui ne devrais plus être possible si vous avez enlever les utilisateurs des groupes. Donc il est nécessaire de désactiver cela avec l'outil de votre environnement de Bureau. Par exemple pour LXDE il s'agit de lxsession, si vous avez des problème pour cet environnement [http://wiki.lxde.org/en/Autostart cette page (et ses liens)] devrait vous aider

===Aller plus loin===
* Si l'on veut restreindre ce droit par utilisateur ou par groupe on modifie la ligne &quot;Identity&quot; comme il suit
 Identity=unix-user:toto;unix-group:plugdev
* Pour creuser un peu plus la configuration de ce système on peux aller voir [http://www.freedesktop.org/software/polkit/docs/0.105/pklocalauthority.8.html cette page] sur PolicyKit
* Il serait aussi intéressant de définir des ports USB réservés pour chaque siège, mais je ne sais pas encore comment gérer cela.
* Voir s'il est possible de dédier les voies arrière à un poste et les voies avant à un autre ...

==Conclusion==
Et voilà, tout est prêt pour le redémarrage et admirer les mires de login sur leur écran respectif.

===Avantages===
* Avec du matériel de récupération on peut facilement mettre en place cette solution peut coûteuse
* La satisfaction d'avoir un poste de travail exotique
* Permettre à une tierce personne de profiter de la puissance monstre des machines récente sans se priver de notre fauteuil favori
* Se sentir moins avec une/plusieurs personnes à coté de soi :-p

===Inconvénients===
* Accélération graphique fortement diminué
* Si on débranche les claviers/souries Xephyr ne sait pas les reconnaitre automatiquement au rebranchement. Il faut relancer Xephyr en se déconnectant ou relancer LightDM
* Un &quot;saut&quot; des 2 écrans lors de la déconnexion d'un postes, mais cela est dû à LightDM et son changment de VT intempestif.
* Surveillance de chaque mis à jour de Xorg pour ne pas avoir de surprise au redémarrage
* Recompilation nécessaire en cas de mise à jour majeur de Xorg
* Gestion des montages USB non optimale
* Les voyants du clavier (pavé numérique, Majuscule et arrêt défile) ne réagissent plus, mais la clavier réagit correctement.
* Dans l'espace de travail de certains logiciel (VLC, Gimp) la sourie peux avoir un affichage lacunaire. Par exemple sous GIMP elle n'est visible que lorsqu'on la déplace, avec VLS il y a un carré noir autour d'elle quand on la déplace le reste du temps elle disparait.


===Remerciement===
Un grand merci à ce site pour m'avoir prémaché le travail ... ce qui ne m'as pas empêché d'apporter quelques améliorations à sa solution.
http://beforeafterx.blogspot.fr/2012/08/configuration-of-ligthdm-12.html</text>
      <sha1>87ps17usggr580vjztxdi48bxcyrn25</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5157</id>
      <parentid>5156</parentid>
      <timestamp>2013-05-14T12:01:29Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Reconfiguration */</comment>
      <text xml:space="preserve" bytes="24166">Après avoir fait du [http://www.debian-fr.org/multiseat-plusieurs-utilisateurs-sur-1-pc-t6954.html#p188187 multiposte avec 2 CG], un changement de PC m'oblige à faire la même chose mais avec une seule carte. J'ai essayé de couvrir au maximum toutes les étapes de la mise en place de la solution.

----
==Choix des outils==
Tout d'abord le raisonnement pour le choix des outils à été le suivant.
==== Xorg ou Wayland ?====
La réponse a été rapide. Xorg clairement, Wayland est encore trop récent pour pouvoir le faire et aucun document ne traite pour l'instant de ce problème.

==== Xnest ou Xephyr ?====
Xephyr est largement plébiscité et Xnest semble tomber en désuétude. C'est par le développement de Tizen (ex-Meego) que Xephyr semble toujours actif et que de nouvelles fonctionnalités lui sont ajoutées. Intel s'en sert intensément et est énormément utilisé pour le développement d'application pour smartphone comme environnement de simulation. (http://www.phoronix.com/scan.php?page=news_item&amp;px=ODc1NQ).
Un souci avec Xephyr est que le support de evdev semble ne pas avoir été inclus dans les options de compilations. &quot;evdev&quot; permet de monopoliser les claviers et souris. Du coup il faut refaire le paquet soi-même.

==== Et la transition avec systemd ? ====
Il ne semble plus y avoir de problème particulier (http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org)

====Comment gérer 2 écran, 2 session avec une seule carte graphique ?====
Il faut savoir que Xephyr permet de se greffer sur n'importe quel serveur X afin d'afficher une autre session. Par exemple avec la commande &quot;Xephyr -query 127.0.0.1&quot; vous devez pouvoir vous connecter sur votre propre machine si le protocole &quot;XDMCP&quot; est activé sur votre &quot;DisplayManager&quot; (GDM, KDM, XDM, ...). Donc le but du jeu sera d'avoir un serveur X qui va &quot;supporter&quot; 2 fenêtres Xephyr. Ces deux dernières se verront affectées les claviers et les souris de manière exclusive.

====Et le DM ? Debian a adopté GDM(3) avec Gnome mais j'aimerais bien m'en passer.====
Avec GDM (celui de Gnome2) il existe un très bon tutoriel ici : http://netpatia.blogspot.fr/2009/06/multiseat-in-ubuntu-904.html 
Pour GDM3, le problème est que pour l'instant il ne reprend pas toutes les possibilitées de son ancienne version. 
https://live.gnome.org/GDM/ToDo
&quot;-- Allow per-display X Server commands 
		BrianCameron: The [server] and [server-foo] sections of the GDM configuration have been disabled. This means that users who depend on novel configurations which require special Xserver commands per-display is not available.&quot;

Donc bonne nouvelle, il fallait trouver une alternative en le nom de LightDM, qui est issu de Ubuntu ... 

===Prérequis===
Donc pour les pré-requis :
* Ajouter &quot;deb-src http://ftp.fr.debian.org/debian/ &lt;VersionDebian&gt; main contrib non-free&quot;
* Installer les paquage dpkg-dev, build-essential, devscripts, lightDM

==Reconstruction de Xephyr==
===Récupération des sources nécessaires===
On récupère toutes les sources du packet source xorg-server qui comprend Xephyr.

 $ apt-get source xserver-xephyr


Puis récupérer toutes les dépendances spécifique au paquet :

 $ apt-get build-dep xorg-server

Là il va télécharger un certain nombre de paquets de développement (&quot;-dev&quot;), ils sont marqués comme installés automatiquement, donc un deborphan devrait vous les enlever sans trop de problème. Sinon il existe cette commande pour être sûr qu'ils sont marqués en tant que &quot;installé automatiquement&quot;, puis un &quot;apt-get autoclean&quot; les supprimera.

===Reconfiguration===
Ensuite tout se passe dans le répertoire &quot;debian&quot;

 $ cd xorg-server-1.12.4/debian


On édite le fichier &quot;changlog&quot; pour monter de version le paquet que l'on va reconstruire. Il est possible de le faire en automatique avec la commande:

 debian/$ dch -n


L'option &quot;-n&quot; permet d'incrémenter le numéro de version de façon mineur, c'est à dire l'ajout de &quot;.1&quot; en fin de numéro de version.

Sinon pour le faire en manuel, il faut ajouter une ligne du type suivant au fichier:
&lt;pre&gt;
xorg-server (2:1.12.4-5.1) UNRELEASED; urgency=low

  * Non-maintainer upload.
  * ajout des paramètre pour Xephyr et evdev

 -- Vous &lt;vous@VotreMachine&gt;  Sun, 03 Mar 2013 22:21:32 +0100
&lt;/pre&gt;

Pour éviter de réinstaller tout Xorg avec le nouveau numéro de version il faut éditer le fichier &quot;debian/control&quot; et modifier la dépendance de Xephyr (ligne ~283). Pour cela il faut remplacer le 
&lt;pre&gt;
Depends :
  xserver-common (&gt;= ${source:Version})
&lt;/pre&gt;
Par :
&lt;pre&gt;
Depends :
  xserver-common (&gt;= 2:1.12.4-5)
&lt;/pre&gt;

Le numéro doit être en accord avec la version de votre Xorg actuellement installé sur votre machine. 
Sinon cette modification est directement possible dans le .deb, toujours dans le fichier &quot;DEBIAN/control&quot;. Pour cela il faut prendre le .deb que vous avez construit, le décompresser, modifier le fichier et faire la commande &quot;dpkg-deb -b &lt;nom du répertoire contenant les fichiers&gt;&quot;. Mais il est plus pratique de le faire avant.

Je ne vous conseille pas de mettre une numéro de version trop élevé car cela pourrait engendrer une incompatibilité avec les futurs versions de Xorg.

Ensuite nous allons modifier les options de compilation en éditant le fichier &quot;rules&quot;, c'est le Makefile de la construction du paquet.
Localisez &quot;confflags_main&quot; (ligne ~133) et ajoutez les lignes suivantes juste en dessous de &quot;--enable-kdrive&quot; (ligne ~156)

 --enable-kdrive-evdev \
 --enable-kdrive-mouse \
 --enable-kdrive-kbd \

===Recompilation===
Passons maintenant à la recompilation proprement dite, ressortez du répertoire debian et faites :
 $ fakeroot ./debian/rules binary

Et laisser la compilation et la création des paquets se faire ... cela peut prendre quelques minutes.

====Re-recompilation====
Si pour une raison il vous faut refaire entièrement la compilation il faut d'abord faire la commande suivante
 $ fakeroot ./debian/rules clean

Si c'est juste refaire les &quot;.deb&quot; (correction du numéro de dépendance, ...), alors cette commande suffit.
 $ fakeroot ./debian/rules binary-deb

===Installation du paquet obtenue===
Enfin pour installer votre paket (qui se trouve dans le répertoire supérieur) il faut faire :
 #dpkg -i xserver-xephyr_1.12.4-5_i386.deb
Ou de manière graphique avec GDebi.
====Paquets déjà prêt====
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6_i386.deb.tar]]
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6.1_amd64.deb.tar]]

==Configuration de Xorg==
===Définition de l'existant===
Pour rappel le principe seras d'avoir une session X qui va héberger 2 sessions Xephyr qui serviront les différents sièges.
Tout d'abord nous allons faire un fichier de conf pour le serveur Xorg. Pour ne pas démarrer de rien on peut lancer la commande (en root) &quot;Xorg -configure&quot; qui génère le fichier &quot;xorg.conf.new&quot; dans &quot;/root&quot;. Ensuite on fait un petit &quot;xrandr&quot; pour identifier les sorties disponibles.
&lt;pre&gt;
$ xrandr

Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 593mm
&lt;/pre&gt;

&quot;DVI-0&quot; &amp; &quot;HDMI-0&quot; sont les 2 disponibles sur la machine. On peux aussi trouver du &quot;VGA-0&quot; ou &quot;LVDS&quot; pour les écrans de portables.

===Exemple de fichier de configuration===
Dans cet exemple on peut avoir un &quot;/etc/xorg.conf&quot; comme suivant :
&lt;pre&gt;
##################################################################
Section &quot;Monitor&quot;
	Identifier  &quot;HannsG&quot;
	Option      &quot;PreferredMode&quot; &quot;1920x1200&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
	Option		&quot;Primary&quot; &quot;true&quot;
EndSection

Section &quot;Monitor&quot;
	Identifier  &quot;Acer&quot;
	Option      &quot;PreferredMode&quot; &quot;1680x1050&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
EndSection

Section &quot;Device&quot;
	Identifier  &quot;card0&quot;
	Driver      &quot;radeon&quot;
	# Ici on associe les sorties video avec une section &quot;Monitor&quot;
	# On remarquera le &quot;Monitor&quot; devant le nom des sortie, c'est indispensable (cf : http://www.x.org/archive/current/doc/man/man5/xorg.conf.5.xhtml#heading12)
	Option      &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
	Option      &quot;Monitor-DVI-0&quot; &quot;Acer&quot;
EndSection

##################################################################

Section &quot;Screen&quot;
	Identifier  &quot;ecran1&quot;
	Device      &quot;card0&quot;
	Monitor     &quot;HansG&quot;
	DefaultDepth 24
	SubSection &quot;Display&quot;
 		Depth   24
		Virtual 3600 1200
	EndSubSection
EndSection

Section &quot;ServerLayout&quot;
	Identifier    &quot;dualscreen&quot;
	Screen      0  &quot;ecran1&quot;
EndSection
##################################################################
&lt;/pre&gt;

==Configuration de LightDM==
Nous allons maintenant regarder la configuration de LightDM d'un peu plus près. Le fichier de configuration par défaut expose toutes les options possibles du dit fichier. Nous allons garder le strict minimum
===lightdm.conf===
Pour cela éditons le fichier /etc/lightd/lightdm.conf

&lt;pre&gt;
[LightDM]
 greeter-user=root
 user-authority-in-system-dir=false

 [SeatDefaults]
 xserver-allow-tcp=false
 greeter-hide-users=false
 user-session=lightdm-xsession
 session-wrapper=/etc/X11/Xsession

 [Seat:1]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 1 -t 1680x1050 -P evdev -s /dev/input/by-id/usb-Logitech_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd -v bepo 
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 1
 greeter-session=lightdm-greeter

[Seat:2]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 2 -t 1920x1200 -P evdev -s /dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-path/platform-i8042-serio-0-event-kbd
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 2 -d 1680,0
 greeter-session=lightdm-greeter
&lt;/pre&gt;

Il y a plusieurs chose à savoir concernant le fonctionnement de LightDM afin de comprendre ce qui est fait.
-- La section &quot;SeatDefault&quot; est commune à tous les siège définit après
-- Chaque &quot;Seat&quot; est exécuté dans l'ordre dans un VT différent et ce même si, dans notre cas, tout se passe dans le VT7 ([url=https://code.launchpad.net/~andrzejtp2010/lightdm/lightdm-trunk-xephyr-multiseat/+merge/120286]un patch[url] à été proposé pour palier à ce problème mais il n'a pas été accepté ... pour l'instant)
-- Chaque propriétés de tous les &quot;Seat&quot; sont lancé dans un ordre précis, d'abord tous les &quot;xserver-command&quot;, puis tous les &quot;greeter-setup-script&quot;, enfin tous les &quot;greeter-session&quot;. Si vous mettez d'autres propriétés elle seront exécuter suivant leur ordre pré-établi.
-- Si les &quot;greeter&quot; se termine, lightDM coupe le &quot;xserver-command&quot; correspondant. De même si le &quot;xserver-command&quot; se termine le greeter est coupé.

Donc pour que tout se positionne correctement il faut
-- D'abord lancer le serveur X qui servira de support, ce qui est fait en le mettant en tant que premier &quot;Seat&quot;
-- Lancer les fenêtres Xephyr avec les optons qui vont bien, ce qui est fait avec le script &quot;Xephyr-command.sh&quot; et ses arguments
-- Simuler un &quot;greeter&quot; pour le &quot;Seat :0&quot; afin que le serveur X ne soit pas tuer par lightDM, ce qui est fait avec le script &quot;fake-greeter&quot;
-- Exécuter un script qui va placer les fenêtre Xephyr si besoin et initialiser les variables d'environnement correctement, fait avec &quot;Xephyr-greeter-setup.sh&quot;
-- Exécuter les &quot;greeter&quot; dans les fenêtre Xephyr

===fake-greeter.desktop===
Pour le faux greeter du serveur X il faut créer un fichier dans &quot;/usr/share/xgreeters/fake-greeter.desktop&quot; et y copier son contenu :
&lt;pre&gt;
[Desktop Entry]
Name=LightDM fake greeter
Comment=This runs no greeter at all, it should only be run from LightDM
Exec=sleep infinity
Type=Application
X-Ubuntu-Gettext-Domain=lightdm
&lt;/pre&gt;

Après tout cela nous allons créer un script qui permettra de créer (&quot;Xephyr-command.sh&quot;) et un autre pour placer les fenêtre à l'écran (&quot;Xephyr-greeter-setup.sh&quot;).
Tout d'abord il est nécessaire d'installer le petit utilitaire &quot;wmctrl&quot; avec
 # aptitude install wmctrl
===Xephyr-command.sh===
 Le contenue du fichier &quot;Xephyr-command.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -t, taille : Doit être de la forme 9999x9999, (dafaut = 1024x768)&quot;
  echo &quot;\t -s, sourie : /dev/input/[by-path|by-id]/...event-mouse&quot;
  echo &quot;\t -c, clavier : /dev/input/[by-path|by-id]/...event-kbd&quot;
  echo &quot;\t -l, layout : fr, es, en, ... (défaut = fr)&quot;
  echo &quot;\t -v, variant : fr, latin9, bepo, ... (défaut = &lt;vide&gt;)&quot;
  echo &quot;\t -P, Pilote : ephyr ou evdev (défaut = ephyr)&quot;
}

testExecutable() {
	XEPHYR=`whereis -b Xephyr | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
TAILLE=&quot;1024x768&quot;
SOURIE=
CLAVIER=
LAYOUT=&quot;fr&quot;
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
PILOTE=ephyr # Test = ephyr ; Prod = evdev

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XEPHYR&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;Xephyr : &quot;$XEPHYR
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:t:s:c:l:v:P:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		t|taille)
			TAILLE=&quot;$OPTARG&quot;
		;;

		s|sourie)
			SOURIE=$OPTARG
			if  ! [ -r $SOURIE ];then
				echo &quot;La sourie n'est pas accessible&quot;
				exit 3
			fi
		;;

		c|clavier)
			CLAVIER=$OPTARG
			if  ! [ -r $CLAVIER ];then
				echo &quot;Le clavier n'est pas accessible&quot;
				exit 4
			fi
		;;

		l|layout)
			LAYOUT=$OPTARG
		;;

		v|variant)
			VARIANT=$OPTARG
		;;

		P|Pilote)
			PILOTE=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Construction de la ligne d&quot;argument
OPTIONS=&quot;&quot;

if [ -n &quot;${TAILLE}&quot; ]; then
	OPTIONS=&quot; -screen ${TAILLE}&quot;
fi

if [ -n &quot;${CLAVIER}&quot; ]; then
	if [ -n &quot;${LAYOUT}&quot; ]; then
		OPTIONS=$OPTIONS&quot; -keybd $PILOTE,,device=${CLAVIER},xkbrules=evdev,xkbmodel=evdev,xkblayout=${LAYOUT}&quot;
		if [ -n &quot;${VARIANT}&quot; ]; then
			OPTIONS=$OPTIONS&quot;,xkbvariant=${VARIANT}&quot;
		fi
	fi
fi

if [ -n &quot;${SOURIE}&quot; ]; then
	OPTIONS=$OPTIONS&quot; -mouse $PILOTE,,device=${SOURIE}&quot;
fi

# Lancement de Xephyr en arrière plan
echo &quot;$XEPHYR -retro $OPTIONS :$POSTE&quot;
exec $XEPHYR -retro  $OPTIONS :$POSTE
&lt;/pre&gt;

Petite explication sur la dernière ligne. Le &quot;exec&quot; fait en sorte que ce soit le processus de Xephyr qui prend la place du script, donc il reprend le PID et tout ce qui va bien. Ca permet surtout à ce que le signal USR1 que Xephyr lance au PPID, soit bien récupéré par LightDM et que ce dernier continue son fonctionnement normalement.

===Xephyr-greeter-setup.sh===
Le contenue du fichier &quot;Xephyr-greeter-setup.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p|--poste numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -d, --deplacement : de la forme 'x,y' (en pixel)&quot;
  echo &quot;\t -v, --vt : 7, 8, 9, 10, 11 (defaut = 7)&quot;
}

testExecutable() {
	XWININFO=`whereis -b xwininfo | cut -d' ' -f2`
	WMCTRL=`whereis -b wmctrl | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
DEPLACEMENT=
VT=7
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
ATTENTE=3 # temps en seconde avant de déclencher le &quot;chvt&quot; pour revenir sur le bon VT

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XWININFO&quot; -o -z &quot;$WMCTRL&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;xwininfo : &quot;$XWININFO
	echo &quot;wmctrl : &quot;$WMCTRL
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:d:v:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		d|deplacement)
			DEPLACEMENT=&quot;$OPTARG&quot;
		;;
	
		v|vt)
			VT=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Vieux Hack tout bancal pour revenir au bon VT sans patcher LightDM
(sleep $ATTENTE ; chvt $VT)&amp;

# Deplacement de la fenetre si besoin
if [ -n &quot;$DEPLACEMENT&quot; ]; then
	#On recherche l'ID de la fenêtre Xephyr
        XEP=`XAUTHORITY=/var/run/lightdm/root/:$XRACINE $XWININFO -root -children -all -display :$XRACINE | grep &quot;Xephyr on :$POSTE&quot; --max-count=1`;

	if [ -z &quot;$XEP&quot; ]; then
		echo &quot;fenêtre Xephyr non trouvé pour le poste $POSTE&quot;
		exit 5
	fi
    XEPHYR_WIN_ID=`echo ${XEP} | cut -d' ' -f1`;
    $WMCTRL 2&gt;&amp;1 -v -i -r ${XEPHYR_WIN_ID} -e 0,${DEPLACEMENT},-1,-1;
	if [ $? -ne 0 ]; then
		echo &quot;Erreur lors du déplacement de la fenêtre Xephyr pour le poste $POSTE&quot;
		exit 7
	fi
fi

# Mise en place des variables d'environnement pour le greeter (utile ?)
export DISPLAY=:$POSTE
export XAUTHORITY=/var/run/lightdm/root/:$POSTE
&lt;/pre&gt;
Petite explication concernant la ligne suivante
 (sleep $ATTENTE ; chvt $VT)&amp;
Comme je n'ai pas patché LightDM pour éviter le changement de VT et que Xephyr m'empêche de faire un Ctrl+Alt+7 (avec le driver evdev) pour revenir au bon VT, j'ai du mettre en place un automatisme. Certes c'est loin d'être parfait mais ça rempli correctement son office.

==Modification du système==
===Montage des périphériques USB===
On se rend assez vite compte que si l'on branche une clé USB elle n'apparait pas automatiquement sur le bureau et elle est encore moins &quot;montable&quot; par un utilisateur classique. Elle apparait bien dans la liste des périphériques accessibles (volet de gauche sur nautilus) mais il y a un problème de droit.
Un petit rappel de la chaine mis en jeu lorsque l'on branche une clé USB ou tout autre périphérique.
* Détection par le noyau de l'ajout d'un matériel
* Udev prend le relai et créé les périphériques block nécessaire dans /dev
* PolicyKit termine le travail en mettant en place les autorisations adéquate

Donc le blocage vient de ce dernier composant, il ne reconnait pas une session Xephyr comme &quot;active&quot; et donc refuse le montage de ce type de périphérique par l'utilisateur lambda. Pour passer au delà de cette limitation on va redéfinir la règle de montage, pour cela il faut aller dans le répertoire suivant :
 /etc/polkit-1/localauthority/50-local.d
Et y créer un fichier, &quot;10-udisk.pkla&quot; par exemple
&lt;pre&gt;
[Allow mounting from Xephyr]
Identity=*
Action=org.freedesktop.udisks.change;org.freedesktop.udisks.drive-detach;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.filesystem-unmount-others
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

Voilà, avec Gnome3 dans le volet de gauche de Nautilus on peux cliquer sur l'icone de la clé USB pour quelle se monte correctement, idem avec LXDE.
Je recommande de désactiver l'automontage des périphériques USB afin que l'utilisateur qui branche la clé puisse la monter sans interférence.

===Gestion de l'énergie===
De la même manière que précédemment, par défaut il est impossible d'éteindre l'ordinateur depuis la session graphique (hors LightDM).
Donc pour cela on créé un nouveau fichier (20-upower.pkla) dans :
 /etc/polkit-1/localauthority/50-local.d

&lt;pre&gt;
[Suspend/hibernate permissions]
Identity=*
Action=org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

===Gestion du son===
Par défaut Pulseaudio est lancé lors de l'identification d'un utilisateur, du coup il est le seul qui puisse utiliser la carte son. Pour palier a ce problème il faut rendre pulseaudio démon du système.
Pour cela il faut modifier plusieurs fichiers de configurations :
* /etc/default/pulseaudio
&lt;pre&gt;PULSEAUDIO_SYSTEM_START=1&lt;/pre&gt;

* /etc/pulse/daemon.conf
&lt;pre&gt;daemonize = yes
local-server-type = system&lt;/pre&gt;

* /etc/pulse/client.conf
&lt;pre&gt;autospawn = no&lt;/pre&gt;

* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot;
 usermod -aG pulse-access &lt;username&gt;

* On peux enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse

([http://askubuntu.com/questions/192522/how-do-i-configure-sound-with-pulseaudio-and-multiseat source] [http://disjunkt.com/jd/2010/en/multiseat-linux/multiseat-linux-system-wide-pulseaudio-for-routing-sounds-109/ source2])

====Modification des DE (Gnome, KDE, LXDE, ...)====
Par défaut les environnements graphique exécute Pulseaudio en espace utilisateur, ce qu'il ne faut plus faire puisqu'il est partagé, ce qui ne devrais plus être possible si vous avez enlever les utilisateurs des groupes. Donc il est nécessaire de désactiver cela avec l'outil de votre environnement de Bureau. Par exemple pour LXDE il s'agit de lxsession, si vous avez des problème pour cet environnement [http://wiki.lxde.org/en/Autostart cette page (et ses liens)] devrait vous aider

===Aller plus loin===
* Si l'on veut restreindre ce droit par utilisateur ou par groupe on modifie la ligne &quot;Identity&quot; comme il suit
 Identity=unix-user:toto;unix-group:plugdev
* Pour creuser un peu plus la configuration de ce système on peux aller voir [http://www.freedesktop.org/software/polkit/docs/0.105/pklocalauthority.8.html cette page] sur PolicyKit
* Il serait aussi intéressant de définir des ports USB réservés pour chaque siège, mais je ne sais pas encore comment gérer cela.
* Voir s'il est possible de dédier les voies arrière à un poste et les voies avant à un autre ...

==Conclusion==
Et voilà, tout est prêt pour le redémarrage et admirer les mires de login sur leur écran respectif.

===Avantages===
* Avec du matériel de récupération on peut facilement mettre en place cette solution peut coûteuse
* La satisfaction d'avoir un poste de travail exotique
* Permettre à une tierce personne de profiter de la puissance monstre des machines récente sans se priver de notre fauteuil favori
* Se sentir moins avec une/plusieurs personnes à coté de soi :-p

===Inconvénients===
* Accélération graphique fortement diminué
* Si on débranche les claviers/souries Xephyr ne sait pas les reconnaitre automatiquement au rebranchement. Il faut relancer Xephyr en se déconnectant ou relancer LightDM
* Un &quot;saut&quot; des 2 écrans lors de la déconnexion d'un postes, mais cela est dû à LightDM et son changment de VT intempestif.
* Surveillance de chaque mis à jour de Xorg pour ne pas avoir de surprise au redémarrage
* Recompilation nécessaire en cas de mise à jour majeur de Xorg
* Gestion des montages USB non optimale
* Les voyants du clavier (pavé numérique, Majuscule et arrêt défile) ne réagissent plus, mais la clavier réagit correctement.
* Dans l'espace de travail de certains logiciel (VLC, Gimp) la sourie peux avoir un affichage lacunaire. Par exemple sous GIMP elle n'est visible que lorsqu'on la déplace, avec VLS il y a un carré noir autour d'elle quand on la déplace le reste du temps elle disparait.


===Remerciement===
Un grand merci à ce site pour m'avoir prémaché le travail ... ce qui ne m'as pas empêché d'apporter quelques améliorations à sa solution.
http://beforeafterx.blogspot.fr/2012/08/configuration-of-ligthdm-12.html</text>
      <sha1>i12go150h9gptx4tv59i1ekio0mvrjn</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5158</id>
      <parentid>5157</parentid>
      <timestamp>2013-05-14T12:02:21Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Recompilation */</comment>
      <text xml:space="preserve" bytes="24166">Après avoir fait du [http://www.debian-fr.org/multiseat-plusieurs-utilisateurs-sur-1-pc-t6954.html#p188187 multiposte avec 2 CG], un changement de PC m'oblige à faire la même chose mais avec une seule carte. J'ai essayé de couvrir au maximum toutes les étapes de la mise en place de la solution.

----
==Choix des outils==
Tout d'abord le raisonnement pour le choix des outils à été le suivant.
==== Xorg ou Wayland ?====
La réponse a été rapide. Xorg clairement, Wayland est encore trop récent pour pouvoir le faire et aucun document ne traite pour l'instant de ce problème.

==== Xnest ou Xephyr ?====
Xephyr est largement plébiscité et Xnest semble tomber en désuétude. C'est par le développement de Tizen (ex-Meego) que Xephyr semble toujours actif et que de nouvelles fonctionnalités lui sont ajoutées. Intel s'en sert intensément et est énormément utilisé pour le développement d'application pour smartphone comme environnement de simulation. (http://www.phoronix.com/scan.php?page=news_item&amp;px=ODc1NQ).
Un souci avec Xephyr est que le support de evdev semble ne pas avoir été inclus dans les options de compilations. &quot;evdev&quot; permet de monopoliser les claviers et souris. Du coup il faut refaire le paquet soi-même.

==== Et la transition avec systemd ? ====
Il ne semble plus y avoir de problème particulier (http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org)

====Comment gérer 2 écran, 2 session avec une seule carte graphique ?====
Il faut savoir que Xephyr permet de se greffer sur n'importe quel serveur X afin d'afficher une autre session. Par exemple avec la commande &quot;Xephyr -query 127.0.0.1&quot; vous devez pouvoir vous connecter sur votre propre machine si le protocole &quot;XDMCP&quot; est activé sur votre &quot;DisplayManager&quot; (GDM, KDM, XDM, ...). Donc le but du jeu sera d'avoir un serveur X qui va &quot;supporter&quot; 2 fenêtres Xephyr. Ces deux dernières se verront affectées les claviers et les souris de manière exclusive.

====Et le DM ? Debian a adopté GDM(3) avec Gnome mais j'aimerais bien m'en passer.====
Avec GDM (celui de Gnome2) il existe un très bon tutoriel ici : http://netpatia.blogspot.fr/2009/06/multiseat-in-ubuntu-904.html 
Pour GDM3, le problème est que pour l'instant il ne reprend pas toutes les possibilitées de son ancienne version. 
https://live.gnome.org/GDM/ToDo
&quot;-- Allow per-display X Server commands 
		BrianCameron: The [server] and [server-foo] sections of the GDM configuration have been disabled. This means that users who depend on novel configurations which require special Xserver commands per-display is not available.&quot;

Donc bonne nouvelle, il fallait trouver une alternative en le nom de LightDM, qui est issu de Ubuntu ... 

===Prérequis===
Donc pour les pré-requis :
* Ajouter &quot;deb-src http://ftp.fr.debian.org/debian/ &lt;VersionDebian&gt; main contrib non-free&quot;
* Installer les paquage dpkg-dev, build-essential, devscripts, lightDM

==Reconstruction de Xephyr==
===Récupération des sources nécessaires===
On récupère toutes les sources du packet source xorg-server qui comprend Xephyr.

 $ apt-get source xserver-xephyr


Puis récupérer toutes les dépendances spécifique au paquet :

 $ apt-get build-dep xorg-server

Là il va télécharger un certain nombre de paquets de développement (&quot;-dev&quot;), ils sont marqués comme installés automatiquement, donc un deborphan devrait vous les enlever sans trop de problème. Sinon il existe cette commande pour être sûr qu'ils sont marqués en tant que &quot;installé automatiquement&quot;, puis un &quot;apt-get autoclean&quot; les supprimera.

===Reconfiguration===
Ensuite tout se passe dans le répertoire &quot;debian&quot;

 $ cd xorg-server-1.12.4/debian


On édite le fichier &quot;changlog&quot; pour monter de version le paquet que l'on va reconstruire. Il est possible de le faire en automatique avec la commande:

 debian/$ dch -n


L'option &quot;-n&quot; permet d'incrémenter le numéro de version de façon mineur, c'est à dire l'ajout de &quot;.1&quot; en fin de numéro de version.

Sinon pour le faire en manuel, il faut ajouter une ligne du type suivant au fichier:
&lt;pre&gt;
xorg-server (2:1.12.4-5.1) UNRELEASED; urgency=low

  * Non-maintainer upload.
  * ajout des paramètre pour Xephyr et evdev

 -- Vous &lt;vous@VotreMachine&gt;  Sun, 03 Mar 2013 22:21:32 +0100
&lt;/pre&gt;

Pour éviter de réinstaller tout Xorg avec le nouveau numéro de version il faut éditer le fichier &quot;debian/control&quot; et modifier la dépendance de Xephyr (ligne ~283). Pour cela il faut remplacer le 
&lt;pre&gt;
Depends :
  xserver-common (&gt;= ${source:Version})
&lt;/pre&gt;
Par :
&lt;pre&gt;
Depends :
  xserver-common (&gt;= 2:1.12.4-5)
&lt;/pre&gt;

Le numéro doit être en accord avec la version de votre Xorg actuellement installé sur votre machine. 
Sinon cette modification est directement possible dans le .deb, toujours dans le fichier &quot;DEBIAN/control&quot;. Pour cela il faut prendre le .deb que vous avez construit, le décompresser, modifier le fichier et faire la commande &quot;dpkg-deb -b &lt;nom du répertoire contenant les fichiers&gt;&quot;. Mais il est plus pratique de le faire avant.

Je ne vous conseille pas de mettre une numéro de version trop élevé car cela pourrait engendrer une incompatibilité avec les futurs versions de Xorg.

Ensuite nous allons modifier les options de compilation en éditant le fichier &quot;rules&quot;, c'est le Makefile de la construction du paquet.
Localisez &quot;confflags_main&quot; (ligne ~133) et ajoutez les lignes suivantes juste en dessous de &quot;--enable-kdrive&quot; (ligne ~156)

 --enable-kdrive-evdev \
 --enable-kdrive-mouse \
 --enable-kdrive-kbd \

===Recompilation===
Passons maintenant à la recompilation proprement dite, ressortez du répertoire debian et faites :
 $ fakeroot ./debian/rules binary

Et laissez la compilation et la création des paquets se faire ... cela peut prendre quelques minutes.

====Re-recompilation====
Si pour une raison il vous faut refaire entièrement la compilation il faut d'abord faire la commande suivante
 $ fakeroot ./debian/rules clean

Si c'est juste refaire les &quot;.deb&quot; (correction du numéro de dépendance, ...), alors cette commande suffit.
 $ fakeroot ./debian/rules binary-deb

===Installation du paquet obtenue===
Enfin pour installer votre paket (qui se trouve dans le répertoire supérieur) il faut faire :
 #dpkg -i xserver-xephyr_1.12.4-5_i386.deb
Ou de manière graphique avec GDebi.
====Paquets déjà prêt====
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6_i386.deb.tar]]
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6.1_amd64.deb.tar]]

==Configuration de Xorg==
===Définition de l'existant===
Pour rappel le principe seras d'avoir une session X qui va héberger 2 sessions Xephyr qui serviront les différents sièges.
Tout d'abord nous allons faire un fichier de conf pour le serveur Xorg. Pour ne pas démarrer de rien on peut lancer la commande (en root) &quot;Xorg -configure&quot; qui génère le fichier &quot;xorg.conf.new&quot; dans &quot;/root&quot;. Ensuite on fait un petit &quot;xrandr&quot; pour identifier les sorties disponibles.
&lt;pre&gt;
$ xrandr

Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 593mm
&lt;/pre&gt;

&quot;DVI-0&quot; &amp; &quot;HDMI-0&quot; sont les 2 disponibles sur la machine. On peux aussi trouver du &quot;VGA-0&quot; ou &quot;LVDS&quot; pour les écrans de portables.

===Exemple de fichier de configuration===
Dans cet exemple on peut avoir un &quot;/etc/xorg.conf&quot; comme suivant :
&lt;pre&gt;
##################################################################
Section &quot;Monitor&quot;
	Identifier  &quot;HannsG&quot;
	Option      &quot;PreferredMode&quot; &quot;1920x1200&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
	Option		&quot;Primary&quot; &quot;true&quot;
EndSection

Section &quot;Monitor&quot;
	Identifier  &quot;Acer&quot;
	Option      &quot;PreferredMode&quot; &quot;1680x1050&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
EndSection

Section &quot;Device&quot;
	Identifier  &quot;card0&quot;
	Driver      &quot;radeon&quot;
	# Ici on associe les sorties video avec une section &quot;Monitor&quot;
	# On remarquera le &quot;Monitor&quot; devant le nom des sortie, c'est indispensable (cf : http://www.x.org/archive/current/doc/man/man5/xorg.conf.5.xhtml#heading12)
	Option      &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
	Option      &quot;Monitor-DVI-0&quot; &quot;Acer&quot;
EndSection

##################################################################

Section &quot;Screen&quot;
	Identifier  &quot;ecran1&quot;
	Device      &quot;card0&quot;
	Monitor     &quot;HansG&quot;
	DefaultDepth 24
	SubSection &quot;Display&quot;
 		Depth   24
		Virtual 3600 1200
	EndSubSection
EndSection

Section &quot;ServerLayout&quot;
	Identifier    &quot;dualscreen&quot;
	Screen      0  &quot;ecran1&quot;
EndSection
##################################################################
&lt;/pre&gt;

==Configuration de LightDM==
Nous allons maintenant regarder la configuration de LightDM d'un peu plus près. Le fichier de configuration par défaut expose toutes les options possibles du dit fichier. Nous allons garder le strict minimum
===lightdm.conf===
Pour cela éditons le fichier /etc/lightd/lightdm.conf

&lt;pre&gt;
[LightDM]
 greeter-user=root
 user-authority-in-system-dir=false

 [SeatDefaults]
 xserver-allow-tcp=false
 greeter-hide-users=false
 user-session=lightdm-xsession
 session-wrapper=/etc/X11/Xsession

 [Seat:1]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 1 -t 1680x1050 -P evdev -s /dev/input/by-id/usb-Logitech_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd -v bepo 
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 1
 greeter-session=lightdm-greeter

[Seat:2]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 2 -t 1920x1200 -P evdev -s /dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-path/platform-i8042-serio-0-event-kbd
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 2 -d 1680,0
 greeter-session=lightdm-greeter
&lt;/pre&gt;

Il y a plusieurs chose à savoir concernant le fonctionnement de LightDM afin de comprendre ce qui est fait.
-- La section &quot;SeatDefault&quot; est commune à tous les siège définit après
-- Chaque &quot;Seat&quot; est exécuté dans l'ordre dans un VT différent et ce même si, dans notre cas, tout se passe dans le VT7 ([url=https://code.launchpad.net/~andrzejtp2010/lightdm/lightdm-trunk-xephyr-multiseat/+merge/120286]un patch[url] à été proposé pour palier à ce problème mais il n'a pas été accepté ... pour l'instant)
-- Chaque propriétés de tous les &quot;Seat&quot; sont lancé dans un ordre précis, d'abord tous les &quot;xserver-command&quot;, puis tous les &quot;greeter-setup-script&quot;, enfin tous les &quot;greeter-session&quot;. Si vous mettez d'autres propriétés elle seront exécuter suivant leur ordre pré-établi.
-- Si les &quot;greeter&quot; se termine, lightDM coupe le &quot;xserver-command&quot; correspondant. De même si le &quot;xserver-command&quot; se termine le greeter est coupé.

Donc pour que tout se positionne correctement il faut
-- D'abord lancer le serveur X qui servira de support, ce qui est fait en le mettant en tant que premier &quot;Seat&quot;
-- Lancer les fenêtres Xephyr avec les optons qui vont bien, ce qui est fait avec le script &quot;Xephyr-command.sh&quot; et ses arguments
-- Simuler un &quot;greeter&quot; pour le &quot;Seat :0&quot; afin que le serveur X ne soit pas tuer par lightDM, ce qui est fait avec le script &quot;fake-greeter&quot;
-- Exécuter un script qui va placer les fenêtre Xephyr si besoin et initialiser les variables d'environnement correctement, fait avec &quot;Xephyr-greeter-setup.sh&quot;
-- Exécuter les &quot;greeter&quot; dans les fenêtre Xephyr

===fake-greeter.desktop===
Pour le faux greeter du serveur X il faut créer un fichier dans &quot;/usr/share/xgreeters/fake-greeter.desktop&quot; et y copier son contenu :
&lt;pre&gt;
[Desktop Entry]
Name=LightDM fake greeter
Comment=This runs no greeter at all, it should only be run from LightDM
Exec=sleep infinity
Type=Application
X-Ubuntu-Gettext-Domain=lightdm
&lt;/pre&gt;

Après tout cela nous allons créer un script qui permettra de créer (&quot;Xephyr-command.sh&quot;) et un autre pour placer les fenêtre à l'écran (&quot;Xephyr-greeter-setup.sh&quot;).
Tout d'abord il est nécessaire d'installer le petit utilitaire &quot;wmctrl&quot; avec
 # aptitude install wmctrl
===Xephyr-command.sh===
 Le contenue du fichier &quot;Xephyr-command.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -t, taille : Doit être de la forme 9999x9999, (dafaut = 1024x768)&quot;
  echo &quot;\t -s, sourie : /dev/input/[by-path|by-id]/...event-mouse&quot;
  echo &quot;\t -c, clavier : /dev/input/[by-path|by-id]/...event-kbd&quot;
  echo &quot;\t -l, layout : fr, es, en, ... (défaut = fr)&quot;
  echo &quot;\t -v, variant : fr, latin9, bepo, ... (défaut = &lt;vide&gt;)&quot;
  echo &quot;\t -P, Pilote : ephyr ou evdev (défaut = ephyr)&quot;
}

testExecutable() {
	XEPHYR=`whereis -b Xephyr | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
TAILLE=&quot;1024x768&quot;
SOURIE=
CLAVIER=
LAYOUT=&quot;fr&quot;
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
PILOTE=ephyr # Test = ephyr ; Prod = evdev

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XEPHYR&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;Xephyr : &quot;$XEPHYR
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:t:s:c:l:v:P:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		t|taille)
			TAILLE=&quot;$OPTARG&quot;
		;;

		s|sourie)
			SOURIE=$OPTARG
			if  ! [ -r $SOURIE ];then
				echo &quot;La sourie n'est pas accessible&quot;
				exit 3
			fi
		;;

		c|clavier)
			CLAVIER=$OPTARG
			if  ! [ -r $CLAVIER ];then
				echo &quot;Le clavier n'est pas accessible&quot;
				exit 4
			fi
		;;

		l|layout)
			LAYOUT=$OPTARG
		;;

		v|variant)
			VARIANT=$OPTARG
		;;

		P|Pilote)
			PILOTE=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Construction de la ligne d&quot;argument
OPTIONS=&quot;&quot;

if [ -n &quot;${TAILLE}&quot; ]; then
	OPTIONS=&quot; -screen ${TAILLE}&quot;
fi

if [ -n &quot;${CLAVIER}&quot; ]; then
	if [ -n &quot;${LAYOUT}&quot; ]; then
		OPTIONS=$OPTIONS&quot; -keybd $PILOTE,,device=${CLAVIER},xkbrules=evdev,xkbmodel=evdev,xkblayout=${LAYOUT}&quot;
		if [ -n &quot;${VARIANT}&quot; ]; then
			OPTIONS=$OPTIONS&quot;,xkbvariant=${VARIANT}&quot;
		fi
	fi
fi

if [ -n &quot;${SOURIE}&quot; ]; then
	OPTIONS=$OPTIONS&quot; -mouse $PILOTE,,device=${SOURIE}&quot;
fi

# Lancement de Xephyr en arrière plan
echo &quot;$XEPHYR -retro $OPTIONS :$POSTE&quot;
exec $XEPHYR -retro  $OPTIONS :$POSTE
&lt;/pre&gt;

Petite explication sur la dernière ligne. Le &quot;exec&quot; fait en sorte que ce soit le processus de Xephyr qui prend la place du script, donc il reprend le PID et tout ce qui va bien. Ca permet surtout à ce que le signal USR1 que Xephyr lance au PPID, soit bien récupéré par LightDM et que ce dernier continue son fonctionnement normalement.

===Xephyr-greeter-setup.sh===
Le contenue du fichier &quot;Xephyr-greeter-setup.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p|--poste numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -d, --deplacement : de la forme 'x,y' (en pixel)&quot;
  echo &quot;\t -v, --vt : 7, 8, 9, 10, 11 (defaut = 7)&quot;
}

testExecutable() {
	XWININFO=`whereis -b xwininfo | cut -d' ' -f2`
	WMCTRL=`whereis -b wmctrl | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
DEPLACEMENT=
VT=7
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
ATTENTE=3 # temps en seconde avant de déclencher le &quot;chvt&quot; pour revenir sur le bon VT

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XWININFO&quot; -o -z &quot;$WMCTRL&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;xwininfo : &quot;$XWININFO
	echo &quot;wmctrl : &quot;$WMCTRL
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:d:v:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		d|deplacement)
			DEPLACEMENT=&quot;$OPTARG&quot;
		;;
	
		v|vt)
			VT=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Vieux Hack tout bancal pour revenir au bon VT sans patcher LightDM
(sleep $ATTENTE ; chvt $VT)&amp;

# Deplacement de la fenetre si besoin
if [ -n &quot;$DEPLACEMENT&quot; ]; then
	#On recherche l'ID de la fenêtre Xephyr
        XEP=`XAUTHORITY=/var/run/lightdm/root/:$XRACINE $XWININFO -root -children -all -display :$XRACINE | grep &quot;Xephyr on :$POSTE&quot; --max-count=1`;

	if [ -z &quot;$XEP&quot; ]; then
		echo &quot;fenêtre Xephyr non trouvé pour le poste $POSTE&quot;
		exit 5
	fi
    XEPHYR_WIN_ID=`echo ${XEP} | cut -d' ' -f1`;
    $WMCTRL 2&gt;&amp;1 -v -i -r ${XEPHYR_WIN_ID} -e 0,${DEPLACEMENT},-1,-1;
	if [ $? -ne 0 ]; then
		echo &quot;Erreur lors du déplacement de la fenêtre Xephyr pour le poste $POSTE&quot;
		exit 7
	fi
fi

# Mise en place des variables d'environnement pour le greeter (utile ?)
export DISPLAY=:$POSTE
export XAUTHORITY=/var/run/lightdm/root/:$POSTE
&lt;/pre&gt;
Petite explication concernant la ligne suivante
 (sleep $ATTENTE ; chvt $VT)&amp;
Comme je n'ai pas patché LightDM pour éviter le changement de VT et que Xephyr m'empêche de faire un Ctrl+Alt+7 (avec le driver evdev) pour revenir au bon VT, j'ai du mettre en place un automatisme. Certes c'est loin d'être parfait mais ça rempli correctement son office.

==Modification du système==
===Montage des périphériques USB===
On se rend assez vite compte que si l'on branche une clé USB elle n'apparait pas automatiquement sur le bureau et elle est encore moins &quot;montable&quot; par un utilisateur classique. Elle apparait bien dans la liste des périphériques accessibles (volet de gauche sur nautilus) mais il y a un problème de droit.
Un petit rappel de la chaine mis en jeu lorsque l'on branche une clé USB ou tout autre périphérique.
* Détection par le noyau de l'ajout d'un matériel
* Udev prend le relai et créé les périphériques block nécessaire dans /dev
* PolicyKit termine le travail en mettant en place les autorisations adéquate

Donc le blocage vient de ce dernier composant, il ne reconnait pas une session Xephyr comme &quot;active&quot; et donc refuse le montage de ce type de périphérique par l'utilisateur lambda. Pour passer au delà de cette limitation on va redéfinir la règle de montage, pour cela il faut aller dans le répertoire suivant :
 /etc/polkit-1/localauthority/50-local.d
Et y créer un fichier, &quot;10-udisk.pkla&quot; par exemple
&lt;pre&gt;
[Allow mounting from Xephyr]
Identity=*
Action=org.freedesktop.udisks.change;org.freedesktop.udisks.drive-detach;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.filesystem-unmount-others
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

Voilà, avec Gnome3 dans le volet de gauche de Nautilus on peux cliquer sur l'icone de la clé USB pour quelle se monte correctement, idem avec LXDE.
Je recommande de désactiver l'automontage des périphériques USB afin que l'utilisateur qui branche la clé puisse la monter sans interférence.

===Gestion de l'énergie===
De la même manière que précédemment, par défaut il est impossible d'éteindre l'ordinateur depuis la session graphique (hors LightDM).
Donc pour cela on créé un nouveau fichier (20-upower.pkla) dans :
 /etc/polkit-1/localauthority/50-local.d

&lt;pre&gt;
[Suspend/hibernate permissions]
Identity=*
Action=org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

===Gestion du son===
Par défaut Pulseaudio est lancé lors de l'identification d'un utilisateur, du coup il est le seul qui puisse utiliser la carte son. Pour palier a ce problème il faut rendre pulseaudio démon du système.
Pour cela il faut modifier plusieurs fichiers de configurations :
* /etc/default/pulseaudio
&lt;pre&gt;PULSEAUDIO_SYSTEM_START=1&lt;/pre&gt;

* /etc/pulse/daemon.conf
&lt;pre&gt;daemonize = yes
local-server-type = system&lt;/pre&gt;

* /etc/pulse/client.conf
&lt;pre&gt;autospawn = no&lt;/pre&gt;

* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot;
 usermod -aG pulse-access &lt;username&gt;

* On peux enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse

([http://askubuntu.com/questions/192522/how-do-i-configure-sound-with-pulseaudio-and-multiseat source] [http://disjunkt.com/jd/2010/en/multiseat-linux/multiseat-linux-system-wide-pulseaudio-for-routing-sounds-109/ source2])

====Modification des DE (Gnome, KDE, LXDE, ...)====
Par défaut les environnements graphique exécute Pulseaudio en espace utilisateur, ce qu'il ne faut plus faire puisqu'il est partagé, ce qui ne devrais plus être possible si vous avez enlever les utilisateurs des groupes. Donc il est nécessaire de désactiver cela avec l'outil de votre environnement de Bureau. Par exemple pour LXDE il s'agit de lxsession, si vous avez des problème pour cet environnement [http://wiki.lxde.org/en/Autostart cette page (et ses liens)] devrait vous aider

===Aller plus loin===
* Si l'on veut restreindre ce droit par utilisateur ou par groupe on modifie la ligne &quot;Identity&quot; comme il suit
 Identity=unix-user:toto;unix-group:plugdev
* Pour creuser un peu plus la configuration de ce système on peux aller voir [http://www.freedesktop.org/software/polkit/docs/0.105/pklocalauthority.8.html cette page] sur PolicyKit
* Il serait aussi intéressant de définir des ports USB réservés pour chaque siège, mais je ne sais pas encore comment gérer cela.
* Voir s'il est possible de dédier les voies arrière à un poste et les voies avant à un autre ...

==Conclusion==
Et voilà, tout est prêt pour le redémarrage et admirer les mires de login sur leur écran respectif.

===Avantages===
* Avec du matériel de récupération on peut facilement mettre en place cette solution peut coûteuse
* La satisfaction d'avoir un poste de travail exotique
* Permettre à une tierce personne de profiter de la puissance monstre des machines récente sans se priver de notre fauteuil favori
* Se sentir moins avec une/plusieurs personnes à coté de soi :-p

===Inconvénients===
* Accélération graphique fortement diminué
* Si on débranche les claviers/souries Xephyr ne sait pas les reconnaitre automatiquement au rebranchement. Il faut relancer Xephyr en se déconnectant ou relancer LightDM
* Un &quot;saut&quot; des 2 écrans lors de la déconnexion d'un postes, mais cela est dû à LightDM et son changment de VT intempestif.
* Surveillance de chaque mis à jour de Xorg pour ne pas avoir de surprise au redémarrage
* Recompilation nécessaire en cas de mise à jour majeur de Xorg
* Gestion des montages USB non optimale
* Les voyants du clavier (pavé numérique, Majuscule et arrêt défile) ne réagissent plus, mais la clavier réagit correctement.
* Dans l'espace de travail de certains logiciel (VLC, Gimp) la sourie peux avoir un affichage lacunaire. Par exemple sous GIMP elle n'est visible que lorsqu'on la déplace, avec VLS il y a un carré noir autour d'elle quand on la déplace le reste du temps elle disparait.


===Remerciement===
Un grand merci à ce site pour m'avoir prémaché le travail ... ce qui ne m'as pas empêché d'apporter quelques améliorations à sa solution.
http://beforeafterx.blogspot.fr/2012/08/configuration-of-ligthdm-12.html</text>
      <sha1>75fwoi8hq1wksxzctmi2nftqqsg2zr6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5159</id>
      <parentid>5158</parentid>
      <timestamp>2013-05-14T12:02:50Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Installation du paquet obtenue */</comment>
      <text xml:space="preserve" bytes="24167">Après avoir fait du [http://www.debian-fr.org/multiseat-plusieurs-utilisateurs-sur-1-pc-t6954.html#p188187 multiposte avec 2 CG], un changement de PC m'oblige à faire la même chose mais avec une seule carte. J'ai essayé de couvrir au maximum toutes les étapes de la mise en place de la solution.

----
==Choix des outils==
Tout d'abord le raisonnement pour le choix des outils à été le suivant.
==== Xorg ou Wayland ?====
La réponse a été rapide. Xorg clairement, Wayland est encore trop récent pour pouvoir le faire et aucun document ne traite pour l'instant de ce problème.

==== Xnest ou Xephyr ?====
Xephyr est largement plébiscité et Xnest semble tomber en désuétude. C'est par le développement de Tizen (ex-Meego) que Xephyr semble toujours actif et que de nouvelles fonctionnalités lui sont ajoutées. Intel s'en sert intensément et est énormément utilisé pour le développement d'application pour smartphone comme environnement de simulation. (http://www.phoronix.com/scan.php?page=news_item&amp;px=ODc1NQ).
Un souci avec Xephyr est que le support de evdev semble ne pas avoir été inclus dans les options de compilations. &quot;evdev&quot; permet de monopoliser les claviers et souris. Du coup il faut refaire le paquet soi-même.

==== Et la transition avec systemd ? ====
Il ne semble plus y avoir de problème particulier (http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org)

====Comment gérer 2 écran, 2 session avec une seule carte graphique ?====
Il faut savoir que Xephyr permet de se greffer sur n'importe quel serveur X afin d'afficher une autre session. Par exemple avec la commande &quot;Xephyr -query 127.0.0.1&quot; vous devez pouvoir vous connecter sur votre propre machine si le protocole &quot;XDMCP&quot; est activé sur votre &quot;DisplayManager&quot; (GDM, KDM, XDM, ...). Donc le but du jeu sera d'avoir un serveur X qui va &quot;supporter&quot; 2 fenêtres Xephyr. Ces deux dernières se verront affectées les claviers et les souris de manière exclusive.

====Et le DM ? Debian a adopté GDM(3) avec Gnome mais j'aimerais bien m'en passer.====
Avec GDM (celui de Gnome2) il existe un très bon tutoriel ici : http://netpatia.blogspot.fr/2009/06/multiseat-in-ubuntu-904.html 
Pour GDM3, le problème est que pour l'instant il ne reprend pas toutes les possibilitées de son ancienne version. 
https://live.gnome.org/GDM/ToDo
&quot;-- Allow per-display X Server commands 
		BrianCameron: The [server] and [server-foo] sections of the GDM configuration have been disabled. This means that users who depend on novel configurations which require special Xserver commands per-display is not available.&quot;

Donc bonne nouvelle, il fallait trouver une alternative en le nom de LightDM, qui est issu de Ubuntu ... 

===Prérequis===
Donc pour les pré-requis :
* Ajouter &quot;deb-src http://ftp.fr.debian.org/debian/ &lt;VersionDebian&gt; main contrib non-free&quot;
* Installer les paquage dpkg-dev, build-essential, devscripts, lightDM

==Reconstruction de Xephyr==
===Récupération des sources nécessaires===
On récupère toutes les sources du packet source xorg-server qui comprend Xephyr.

 $ apt-get source xserver-xephyr


Puis récupérer toutes les dépendances spécifique au paquet :

 $ apt-get build-dep xorg-server

Là il va télécharger un certain nombre de paquets de développement (&quot;-dev&quot;), ils sont marqués comme installés automatiquement, donc un deborphan devrait vous les enlever sans trop de problème. Sinon il existe cette commande pour être sûr qu'ils sont marqués en tant que &quot;installé automatiquement&quot;, puis un &quot;apt-get autoclean&quot; les supprimera.

===Reconfiguration===
Ensuite tout se passe dans le répertoire &quot;debian&quot;

 $ cd xorg-server-1.12.4/debian


On édite le fichier &quot;changlog&quot; pour monter de version le paquet que l'on va reconstruire. Il est possible de le faire en automatique avec la commande:

 debian/$ dch -n


L'option &quot;-n&quot; permet d'incrémenter le numéro de version de façon mineur, c'est à dire l'ajout de &quot;.1&quot; en fin de numéro de version.

Sinon pour le faire en manuel, il faut ajouter une ligne du type suivant au fichier:
&lt;pre&gt;
xorg-server (2:1.12.4-5.1) UNRELEASED; urgency=low

  * Non-maintainer upload.
  * ajout des paramètre pour Xephyr et evdev

 -- Vous &lt;vous@VotreMachine&gt;  Sun, 03 Mar 2013 22:21:32 +0100
&lt;/pre&gt;

Pour éviter de réinstaller tout Xorg avec le nouveau numéro de version il faut éditer le fichier &quot;debian/control&quot; et modifier la dépendance de Xephyr (ligne ~283). Pour cela il faut remplacer le 
&lt;pre&gt;
Depends :
  xserver-common (&gt;= ${source:Version})
&lt;/pre&gt;
Par :
&lt;pre&gt;
Depends :
  xserver-common (&gt;= 2:1.12.4-5)
&lt;/pre&gt;

Le numéro doit être en accord avec la version de votre Xorg actuellement installé sur votre machine. 
Sinon cette modification est directement possible dans le .deb, toujours dans le fichier &quot;DEBIAN/control&quot;. Pour cela il faut prendre le .deb que vous avez construit, le décompresser, modifier le fichier et faire la commande &quot;dpkg-deb -b &lt;nom du répertoire contenant les fichiers&gt;&quot;. Mais il est plus pratique de le faire avant.

Je ne vous conseille pas de mettre une numéro de version trop élevé car cela pourrait engendrer une incompatibilité avec les futurs versions de Xorg.

Ensuite nous allons modifier les options de compilation en éditant le fichier &quot;rules&quot;, c'est le Makefile de la construction du paquet.
Localisez &quot;confflags_main&quot; (ligne ~133) et ajoutez les lignes suivantes juste en dessous de &quot;--enable-kdrive&quot; (ligne ~156)

 --enable-kdrive-evdev \
 --enable-kdrive-mouse \
 --enable-kdrive-kbd \

===Recompilation===
Passons maintenant à la recompilation proprement dite, ressortez du répertoire debian et faites :
 $ fakeroot ./debian/rules binary

Et laissez la compilation et la création des paquets se faire ... cela peut prendre quelques minutes.

====Re-recompilation====
Si pour une raison il vous faut refaire entièrement la compilation il faut d'abord faire la commande suivante
 $ fakeroot ./debian/rules clean

Si c'est juste refaire les &quot;.deb&quot; (correction du numéro de dépendance, ...), alors cette commande suffit.
 $ fakeroot ./debian/rules binary-deb

===Installation du paquet obtenue===
Enfin pour installer votre paquet (qui se trouve dans le répertoire supérieur) il faut faire :
 #dpkg -i xserver-xephyr_1.12.4-5_i386.deb
Ou de manière graphique avec GDebi.
====Paquets déjà prêt====
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6_i386.deb.tar]]
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6.1_amd64.deb.tar]]

==Configuration de Xorg==
===Définition de l'existant===
Pour rappel le principe seras d'avoir une session X qui va héberger 2 sessions Xephyr qui serviront les différents sièges.
Tout d'abord nous allons faire un fichier de conf pour le serveur Xorg. Pour ne pas démarrer de rien on peut lancer la commande (en root) &quot;Xorg -configure&quot; qui génère le fichier &quot;xorg.conf.new&quot; dans &quot;/root&quot;. Ensuite on fait un petit &quot;xrandr&quot; pour identifier les sorties disponibles.
&lt;pre&gt;
$ xrandr

Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 593mm
&lt;/pre&gt;

&quot;DVI-0&quot; &amp; &quot;HDMI-0&quot; sont les 2 disponibles sur la machine. On peux aussi trouver du &quot;VGA-0&quot; ou &quot;LVDS&quot; pour les écrans de portables.

===Exemple de fichier de configuration===
Dans cet exemple on peut avoir un &quot;/etc/xorg.conf&quot; comme suivant :
&lt;pre&gt;
##################################################################
Section &quot;Monitor&quot;
	Identifier  &quot;HannsG&quot;
	Option      &quot;PreferredMode&quot; &quot;1920x1200&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
	Option		&quot;Primary&quot; &quot;true&quot;
EndSection

Section &quot;Monitor&quot;
	Identifier  &quot;Acer&quot;
	Option      &quot;PreferredMode&quot; &quot;1680x1050&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
EndSection

Section &quot;Device&quot;
	Identifier  &quot;card0&quot;
	Driver      &quot;radeon&quot;
	# Ici on associe les sorties video avec une section &quot;Monitor&quot;
	# On remarquera le &quot;Monitor&quot; devant le nom des sortie, c'est indispensable (cf : http://www.x.org/archive/current/doc/man/man5/xorg.conf.5.xhtml#heading12)
	Option      &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
	Option      &quot;Monitor-DVI-0&quot; &quot;Acer&quot;
EndSection

##################################################################

Section &quot;Screen&quot;
	Identifier  &quot;ecran1&quot;
	Device      &quot;card0&quot;
	Monitor     &quot;HansG&quot;
	DefaultDepth 24
	SubSection &quot;Display&quot;
 		Depth   24
		Virtual 3600 1200
	EndSubSection
EndSection

Section &quot;ServerLayout&quot;
	Identifier    &quot;dualscreen&quot;
	Screen      0  &quot;ecran1&quot;
EndSection
##################################################################
&lt;/pre&gt;

==Configuration de LightDM==
Nous allons maintenant regarder la configuration de LightDM d'un peu plus près. Le fichier de configuration par défaut expose toutes les options possibles du dit fichier. Nous allons garder le strict minimum
===lightdm.conf===
Pour cela éditons le fichier /etc/lightd/lightdm.conf

&lt;pre&gt;
[LightDM]
 greeter-user=root
 user-authority-in-system-dir=false

 [SeatDefaults]
 xserver-allow-tcp=false
 greeter-hide-users=false
 user-session=lightdm-xsession
 session-wrapper=/etc/X11/Xsession

 [Seat:1]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 1 -t 1680x1050 -P evdev -s /dev/input/by-id/usb-Logitech_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd -v bepo 
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 1
 greeter-session=lightdm-greeter

[Seat:2]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 2 -t 1920x1200 -P evdev -s /dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-path/platform-i8042-serio-0-event-kbd
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 2 -d 1680,0
 greeter-session=lightdm-greeter
&lt;/pre&gt;

Il y a plusieurs chose à savoir concernant le fonctionnement de LightDM afin de comprendre ce qui est fait.
-- La section &quot;SeatDefault&quot; est commune à tous les siège définit après
-- Chaque &quot;Seat&quot; est exécuté dans l'ordre dans un VT différent et ce même si, dans notre cas, tout se passe dans le VT7 ([url=https://code.launchpad.net/~andrzejtp2010/lightdm/lightdm-trunk-xephyr-multiseat/+merge/120286]un patch[url] à été proposé pour palier à ce problème mais il n'a pas été accepté ... pour l'instant)
-- Chaque propriétés de tous les &quot;Seat&quot; sont lancé dans un ordre précis, d'abord tous les &quot;xserver-command&quot;, puis tous les &quot;greeter-setup-script&quot;, enfin tous les &quot;greeter-session&quot;. Si vous mettez d'autres propriétés elle seront exécuter suivant leur ordre pré-établi.
-- Si les &quot;greeter&quot; se termine, lightDM coupe le &quot;xserver-command&quot; correspondant. De même si le &quot;xserver-command&quot; se termine le greeter est coupé.

Donc pour que tout se positionne correctement il faut
-- D'abord lancer le serveur X qui servira de support, ce qui est fait en le mettant en tant que premier &quot;Seat&quot;
-- Lancer les fenêtres Xephyr avec les optons qui vont bien, ce qui est fait avec le script &quot;Xephyr-command.sh&quot; et ses arguments
-- Simuler un &quot;greeter&quot; pour le &quot;Seat :0&quot; afin que le serveur X ne soit pas tuer par lightDM, ce qui est fait avec le script &quot;fake-greeter&quot;
-- Exécuter un script qui va placer les fenêtre Xephyr si besoin et initialiser les variables d'environnement correctement, fait avec &quot;Xephyr-greeter-setup.sh&quot;
-- Exécuter les &quot;greeter&quot; dans les fenêtre Xephyr

===fake-greeter.desktop===
Pour le faux greeter du serveur X il faut créer un fichier dans &quot;/usr/share/xgreeters/fake-greeter.desktop&quot; et y copier son contenu :
&lt;pre&gt;
[Desktop Entry]
Name=LightDM fake greeter
Comment=This runs no greeter at all, it should only be run from LightDM
Exec=sleep infinity
Type=Application
X-Ubuntu-Gettext-Domain=lightdm
&lt;/pre&gt;

Après tout cela nous allons créer un script qui permettra de créer (&quot;Xephyr-command.sh&quot;) et un autre pour placer les fenêtre à l'écran (&quot;Xephyr-greeter-setup.sh&quot;).
Tout d'abord il est nécessaire d'installer le petit utilitaire &quot;wmctrl&quot; avec
 # aptitude install wmctrl
===Xephyr-command.sh===
 Le contenue du fichier &quot;Xephyr-command.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -t, taille : Doit être de la forme 9999x9999, (dafaut = 1024x768)&quot;
  echo &quot;\t -s, sourie : /dev/input/[by-path|by-id]/...event-mouse&quot;
  echo &quot;\t -c, clavier : /dev/input/[by-path|by-id]/...event-kbd&quot;
  echo &quot;\t -l, layout : fr, es, en, ... (défaut = fr)&quot;
  echo &quot;\t -v, variant : fr, latin9, bepo, ... (défaut = &lt;vide&gt;)&quot;
  echo &quot;\t -P, Pilote : ephyr ou evdev (défaut = ephyr)&quot;
}

testExecutable() {
	XEPHYR=`whereis -b Xephyr | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
TAILLE=&quot;1024x768&quot;
SOURIE=
CLAVIER=
LAYOUT=&quot;fr&quot;
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
PILOTE=ephyr # Test = ephyr ; Prod = evdev

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XEPHYR&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;Xephyr : &quot;$XEPHYR
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:t:s:c:l:v:P:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		t|taille)
			TAILLE=&quot;$OPTARG&quot;
		;;

		s|sourie)
			SOURIE=$OPTARG
			if  ! [ -r $SOURIE ];then
				echo &quot;La sourie n'est pas accessible&quot;
				exit 3
			fi
		;;

		c|clavier)
			CLAVIER=$OPTARG
			if  ! [ -r $CLAVIER ];then
				echo &quot;Le clavier n'est pas accessible&quot;
				exit 4
			fi
		;;

		l|layout)
			LAYOUT=$OPTARG
		;;

		v|variant)
			VARIANT=$OPTARG
		;;

		P|Pilote)
			PILOTE=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Construction de la ligne d&quot;argument
OPTIONS=&quot;&quot;

if [ -n &quot;${TAILLE}&quot; ]; then
	OPTIONS=&quot; -screen ${TAILLE}&quot;
fi

if [ -n &quot;${CLAVIER}&quot; ]; then
	if [ -n &quot;${LAYOUT}&quot; ]; then
		OPTIONS=$OPTIONS&quot; -keybd $PILOTE,,device=${CLAVIER},xkbrules=evdev,xkbmodel=evdev,xkblayout=${LAYOUT}&quot;
		if [ -n &quot;${VARIANT}&quot; ]; then
			OPTIONS=$OPTIONS&quot;,xkbvariant=${VARIANT}&quot;
		fi
	fi
fi

if [ -n &quot;${SOURIE}&quot; ]; then
	OPTIONS=$OPTIONS&quot; -mouse $PILOTE,,device=${SOURIE}&quot;
fi

# Lancement de Xephyr en arrière plan
echo &quot;$XEPHYR -retro $OPTIONS :$POSTE&quot;
exec $XEPHYR -retro  $OPTIONS :$POSTE
&lt;/pre&gt;

Petite explication sur la dernière ligne. Le &quot;exec&quot; fait en sorte que ce soit le processus de Xephyr qui prend la place du script, donc il reprend le PID et tout ce qui va bien. Ca permet surtout à ce que le signal USR1 que Xephyr lance au PPID, soit bien récupéré par LightDM et que ce dernier continue son fonctionnement normalement.

===Xephyr-greeter-setup.sh===
Le contenue du fichier &quot;Xephyr-greeter-setup.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p|--poste numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -d, --deplacement : de la forme 'x,y' (en pixel)&quot;
  echo &quot;\t -v, --vt : 7, 8, 9, 10, 11 (defaut = 7)&quot;
}

testExecutable() {
	XWININFO=`whereis -b xwininfo | cut -d' ' -f2`
	WMCTRL=`whereis -b wmctrl | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
DEPLACEMENT=
VT=7
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
ATTENTE=3 # temps en seconde avant de déclencher le &quot;chvt&quot; pour revenir sur le bon VT

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XWININFO&quot; -o -z &quot;$WMCTRL&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;xwininfo : &quot;$XWININFO
	echo &quot;wmctrl : &quot;$WMCTRL
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:d:v:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		d|deplacement)
			DEPLACEMENT=&quot;$OPTARG&quot;
		;;
	
		v|vt)
			VT=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Vieux Hack tout bancal pour revenir au bon VT sans patcher LightDM
(sleep $ATTENTE ; chvt $VT)&amp;

# Deplacement de la fenetre si besoin
if [ -n &quot;$DEPLACEMENT&quot; ]; then
	#On recherche l'ID de la fenêtre Xephyr
        XEP=`XAUTHORITY=/var/run/lightdm/root/:$XRACINE $XWININFO -root -children -all -display :$XRACINE | grep &quot;Xephyr on :$POSTE&quot; --max-count=1`;

	if [ -z &quot;$XEP&quot; ]; then
		echo &quot;fenêtre Xephyr non trouvé pour le poste $POSTE&quot;
		exit 5
	fi
    XEPHYR_WIN_ID=`echo ${XEP} | cut -d' ' -f1`;
    $WMCTRL 2&gt;&amp;1 -v -i -r ${XEPHYR_WIN_ID} -e 0,${DEPLACEMENT},-1,-1;
	if [ $? -ne 0 ]; then
		echo &quot;Erreur lors du déplacement de la fenêtre Xephyr pour le poste $POSTE&quot;
		exit 7
	fi
fi

# Mise en place des variables d'environnement pour le greeter (utile ?)
export DISPLAY=:$POSTE
export XAUTHORITY=/var/run/lightdm/root/:$POSTE
&lt;/pre&gt;
Petite explication concernant la ligne suivante
 (sleep $ATTENTE ; chvt $VT)&amp;
Comme je n'ai pas patché LightDM pour éviter le changement de VT et que Xephyr m'empêche de faire un Ctrl+Alt+7 (avec le driver evdev) pour revenir au bon VT, j'ai du mettre en place un automatisme. Certes c'est loin d'être parfait mais ça rempli correctement son office.

==Modification du système==
===Montage des périphériques USB===
On se rend assez vite compte que si l'on branche une clé USB elle n'apparait pas automatiquement sur le bureau et elle est encore moins &quot;montable&quot; par un utilisateur classique. Elle apparait bien dans la liste des périphériques accessibles (volet de gauche sur nautilus) mais il y a un problème de droit.
Un petit rappel de la chaine mis en jeu lorsque l'on branche une clé USB ou tout autre périphérique.
* Détection par le noyau de l'ajout d'un matériel
* Udev prend le relai et créé les périphériques block nécessaire dans /dev
* PolicyKit termine le travail en mettant en place les autorisations adéquate

Donc le blocage vient de ce dernier composant, il ne reconnait pas une session Xephyr comme &quot;active&quot; et donc refuse le montage de ce type de périphérique par l'utilisateur lambda. Pour passer au delà de cette limitation on va redéfinir la règle de montage, pour cela il faut aller dans le répertoire suivant :
 /etc/polkit-1/localauthority/50-local.d
Et y créer un fichier, &quot;10-udisk.pkla&quot; par exemple
&lt;pre&gt;
[Allow mounting from Xephyr]
Identity=*
Action=org.freedesktop.udisks.change;org.freedesktop.udisks.drive-detach;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.filesystem-unmount-others
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

Voilà, avec Gnome3 dans le volet de gauche de Nautilus on peux cliquer sur l'icone de la clé USB pour quelle se monte correctement, idem avec LXDE.
Je recommande de désactiver l'automontage des périphériques USB afin que l'utilisateur qui branche la clé puisse la monter sans interférence.

===Gestion de l'énergie===
De la même manière que précédemment, par défaut il est impossible d'éteindre l'ordinateur depuis la session graphique (hors LightDM).
Donc pour cela on créé un nouveau fichier (20-upower.pkla) dans :
 /etc/polkit-1/localauthority/50-local.d

&lt;pre&gt;
[Suspend/hibernate permissions]
Identity=*
Action=org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

===Gestion du son===
Par défaut Pulseaudio est lancé lors de l'identification d'un utilisateur, du coup il est le seul qui puisse utiliser la carte son. Pour palier a ce problème il faut rendre pulseaudio démon du système.
Pour cela il faut modifier plusieurs fichiers de configurations :
* /etc/default/pulseaudio
&lt;pre&gt;PULSEAUDIO_SYSTEM_START=1&lt;/pre&gt;

* /etc/pulse/daemon.conf
&lt;pre&gt;daemonize = yes
local-server-type = system&lt;/pre&gt;

* /etc/pulse/client.conf
&lt;pre&gt;autospawn = no&lt;/pre&gt;

* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot;
 usermod -aG pulse-access &lt;username&gt;

* On peux enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse

([http://askubuntu.com/questions/192522/how-do-i-configure-sound-with-pulseaudio-and-multiseat source] [http://disjunkt.com/jd/2010/en/multiseat-linux/multiseat-linux-system-wide-pulseaudio-for-routing-sounds-109/ source2])

====Modification des DE (Gnome, KDE, LXDE, ...)====
Par défaut les environnements graphique exécute Pulseaudio en espace utilisateur, ce qu'il ne faut plus faire puisqu'il est partagé, ce qui ne devrais plus être possible si vous avez enlever les utilisateurs des groupes. Donc il est nécessaire de désactiver cela avec l'outil de votre environnement de Bureau. Par exemple pour LXDE il s'agit de lxsession, si vous avez des problème pour cet environnement [http://wiki.lxde.org/en/Autostart cette page (et ses liens)] devrait vous aider

===Aller plus loin===
* Si l'on veut restreindre ce droit par utilisateur ou par groupe on modifie la ligne &quot;Identity&quot; comme il suit
 Identity=unix-user:toto;unix-group:plugdev
* Pour creuser un peu plus la configuration de ce système on peux aller voir [http://www.freedesktop.org/software/polkit/docs/0.105/pklocalauthority.8.html cette page] sur PolicyKit
* Il serait aussi intéressant de définir des ports USB réservés pour chaque siège, mais je ne sais pas encore comment gérer cela.
* Voir s'il est possible de dédier les voies arrière à un poste et les voies avant à un autre ...

==Conclusion==
Et voilà, tout est prêt pour le redémarrage et admirer les mires de login sur leur écran respectif.

===Avantages===
* Avec du matériel de récupération on peut facilement mettre en place cette solution peut coûteuse
* La satisfaction d'avoir un poste de travail exotique
* Permettre à une tierce personne de profiter de la puissance monstre des machines récente sans se priver de notre fauteuil favori
* Se sentir moins avec une/plusieurs personnes à coté de soi :-p

===Inconvénients===
* Accélération graphique fortement diminué
* Si on débranche les claviers/souries Xephyr ne sait pas les reconnaitre automatiquement au rebranchement. Il faut relancer Xephyr en se déconnectant ou relancer LightDM
* Un &quot;saut&quot; des 2 écrans lors de la déconnexion d'un postes, mais cela est dû à LightDM et son changment de VT intempestif.
* Surveillance de chaque mis à jour de Xorg pour ne pas avoir de surprise au redémarrage
* Recompilation nécessaire en cas de mise à jour majeur de Xorg
* Gestion des montages USB non optimale
* Les voyants du clavier (pavé numérique, Majuscule et arrêt défile) ne réagissent plus, mais la clavier réagit correctement.
* Dans l'espace de travail de certains logiciel (VLC, Gimp) la sourie peux avoir un affichage lacunaire. Par exemple sous GIMP elle n'est visible que lorsqu'on la déplace, avec VLS il y a un carré noir autour d'elle quand on la déplace le reste du temps elle disparait.


===Remerciement===
Un grand merci à ce site pour m'avoir prémaché le travail ... ce qui ne m'as pas empêché d'apporter quelques améliorations à sa solution.
http://beforeafterx.blogspot.fr/2012/08/configuration-of-ligthdm-12.html</text>
      <sha1>rqkxu0iis23pli3laf2lml14bdmar5j</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5160</id>
      <parentid>5159</parentid>
      <timestamp>2013-05-14T12:03:52Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Définition de l'existant */</comment>
      <text xml:space="preserve" bytes="24166">Après avoir fait du [http://www.debian-fr.org/multiseat-plusieurs-utilisateurs-sur-1-pc-t6954.html#p188187 multiposte avec 2 CG], un changement de PC m'oblige à faire la même chose mais avec une seule carte. J'ai essayé de couvrir au maximum toutes les étapes de la mise en place de la solution.

----
==Choix des outils==
Tout d'abord le raisonnement pour le choix des outils à été le suivant.
==== Xorg ou Wayland ?====
La réponse a été rapide. Xorg clairement, Wayland est encore trop récent pour pouvoir le faire et aucun document ne traite pour l'instant de ce problème.

==== Xnest ou Xephyr ?====
Xephyr est largement plébiscité et Xnest semble tomber en désuétude. C'est par le développement de Tizen (ex-Meego) que Xephyr semble toujours actif et que de nouvelles fonctionnalités lui sont ajoutées. Intel s'en sert intensément et est énormément utilisé pour le développement d'application pour smartphone comme environnement de simulation. (http://www.phoronix.com/scan.php?page=news_item&amp;px=ODc1NQ).
Un souci avec Xephyr est que le support de evdev semble ne pas avoir été inclus dans les options de compilations. &quot;evdev&quot; permet de monopoliser les claviers et souris. Du coup il faut refaire le paquet soi-même.

==== Et la transition avec systemd ? ====
Il ne semble plus y avoir de problème particulier (http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org)

====Comment gérer 2 écran, 2 session avec une seule carte graphique ?====
Il faut savoir que Xephyr permet de se greffer sur n'importe quel serveur X afin d'afficher une autre session. Par exemple avec la commande &quot;Xephyr -query 127.0.0.1&quot; vous devez pouvoir vous connecter sur votre propre machine si le protocole &quot;XDMCP&quot; est activé sur votre &quot;DisplayManager&quot; (GDM, KDM, XDM, ...). Donc le but du jeu sera d'avoir un serveur X qui va &quot;supporter&quot; 2 fenêtres Xephyr. Ces deux dernières se verront affectées les claviers et les souris de manière exclusive.

====Et le DM ? Debian a adopté GDM(3) avec Gnome mais j'aimerais bien m'en passer.====
Avec GDM (celui de Gnome2) il existe un très bon tutoriel ici : http://netpatia.blogspot.fr/2009/06/multiseat-in-ubuntu-904.html 
Pour GDM3, le problème est que pour l'instant il ne reprend pas toutes les possibilitées de son ancienne version. 
https://live.gnome.org/GDM/ToDo
&quot;-- Allow per-display X Server commands 
		BrianCameron: The [server] and [server-foo] sections of the GDM configuration have been disabled. This means that users who depend on novel configurations which require special Xserver commands per-display is not available.&quot;

Donc bonne nouvelle, il fallait trouver une alternative en le nom de LightDM, qui est issu de Ubuntu ... 

===Prérequis===
Donc pour les pré-requis :
* Ajouter &quot;deb-src http://ftp.fr.debian.org/debian/ &lt;VersionDebian&gt; main contrib non-free&quot;
* Installer les paquage dpkg-dev, build-essential, devscripts, lightDM

==Reconstruction de Xephyr==
===Récupération des sources nécessaires===
On récupère toutes les sources du packet source xorg-server qui comprend Xephyr.

 $ apt-get source xserver-xephyr


Puis récupérer toutes les dépendances spécifique au paquet :

 $ apt-get build-dep xorg-server

Là il va télécharger un certain nombre de paquets de développement (&quot;-dev&quot;), ils sont marqués comme installés automatiquement, donc un deborphan devrait vous les enlever sans trop de problème. Sinon il existe cette commande pour être sûr qu'ils sont marqués en tant que &quot;installé automatiquement&quot;, puis un &quot;apt-get autoclean&quot; les supprimera.

===Reconfiguration===
Ensuite tout se passe dans le répertoire &quot;debian&quot;

 $ cd xorg-server-1.12.4/debian


On édite le fichier &quot;changlog&quot; pour monter de version le paquet que l'on va reconstruire. Il est possible de le faire en automatique avec la commande:

 debian/$ dch -n


L'option &quot;-n&quot; permet d'incrémenter le numéro de version de façon mineur, c'est à dire l'ajout de &quot;.1&quot; en fin de numéro de version.

Sinon pour le faire en manuel, il faut ajouter une ligne du type suivant au fichier:
&lt;pre&gt;
xorg-server (2:1.12.4-5.1) UNRELEASED; urgency=low

  * Non-maintainer upload.
  * ajout des paramètre pour Xephyr et evdev

 -- Vous &lt;vous@VotreMachine&gt;  Sun, 03 Mar 2013 22:21:32 +0100
&lt;/pre&gt;

Pour éviter de réinstaller tout Xorg avec le nouveau numéro de version il faut éditer le fichier &quot;debian/control&quot; et modifier la dépendance de Xephyr (ligne ~283). Pour cela il faut remplacer le 
&lt;pre&gt;
Depends :
  xserver-common (&gt;= ${source:Version})
&lt;/pre&gt;
Par :
&lt;pre&gt;
Depends :
  xserver-common (&gt;= 2:1.12.4-5)
&lt;/pre&gt;

Le numéro doit être en accord avec la version de votre Xorg actuellement installé sur votre machine. 
Sinon cette modification est directement possible dans le .deb, toujours dans le fichier &quot;DEBIAN/control&quot;. Pour cela il faut prendre le .deb que vous avez construit, le décompresser, modifier le fichier et faire la commande &quot;dpkg-deb -b &lt;nom du répertoire contenant les fichiers&gt;&quot;. Mais il est plus pratique de le faire avant.

Je ne vous conseille pas de mettre une numéro de version trop élevé car cela pourrait engendrer une incompatibilité avec les futurs versions de Xorg.

Ensuite nous allons modifier les options de compilation en éditant le fichier &quot;rules&quot;, c'est le Makefile de la construction du paquet.
Localisez &quot;confflags_main&quot; (ligne ~133) et ajoutez les lignes suivantes juste en dessous de &quot;--enable-kdrive&quot; (ligne ~156)

 --enable-kdrive-evdev \
 --enable-kdrive-mouse \
 --enable-kdrive-kbd \

===Recompilation===
Passons maintenant à la recompilation proprement dite, ressortez du répertoire debian et faites :
 $ fakeroot ./debian/rules binary

Et laissez la compilation et la création des paquets se faire ... cela peut prendre quelques minutes.

====Re-recompilation====
Si pour une raison il vous faut refaire entièrement la compilation il faut d'abord faire la commande suivante
 $ fakeroot ./debian/rules clean

Si c'est juste refaire les &quot;.deb&quot; (correction du numéro de dépendance, ...), alors cette commande suffit.
 $ fakeroot ./debian/rules binary-deb

===Installation du paquet obtenue===
Enfin pour installer votre paquet (qui se trouve dans le répertoire supérieur) il faut faire :
 #dpkg -i xserver-xephyr_1.12.4-5_i386.deb
Ou de manière graphique avec GDebi.
====Paquets déjà prêt====
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6_i386.deb.tar]]
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6.1_amd64.deb.tar]]

==Configuration de Xorg==
===Définition de l'existant===
Pour rappel le principe sera d'avoir une session X qui va héberger 2 sessions Xephyr qui serviront les différents sièges.
Tout d'abord nous allons faire un fichier de conf pour le serveur Xorg. Pour ne pas démarrer de rien on peut lancer la commande (en root) &quot;Xorg -configure&quot; qui génère le fichier &quot;xorg.conf.new&quot; dans &quot;/root&quot;. Ensuite on fait un petit &quot;xrandr&quot; pour identifier les sorties disponibles.
&lt;pre&gt;
$ xrandr

Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 593mm
&lt;/pre&gt;

&quot;DVI-0&quot; &amp; &quot;HDMI-0&quot; sont les 2 disponibles sur la machine. On peut aussi trouver du &quot;VGA-0&quot; ou &quot;LVDS&quot; pour les écrans de portables.

===Exemple de fichier de configuration===
Dans cet exemple on peut avoir un &quot;/etc/xorg.conf&quot; comme suivant :
&lt;pre&gt;
##################################################################
Section &quot;Monitor&quot;
	Identifier  &quot;HannsG&quot;
	Option      &quot;PreferredMode&quot; &quot;1920x1200&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
	Option		&quot;Primary&quot; &quot;true&quot;
EndSection

Section &quot;Monitor&quot;
	Identifier  &quot;Acer&quot;
	Option      &quot;PreferredMode&quot; &quot;1680x1050&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
EndSection

Section &quot;Device&quot;
	Identifier  &quot;card0&quot;
	Driver      &quot;radeon&quot;
	# Ici on associe les sorties video avec une section &quot;Monitor&quot;
	# On remarquera le &quot;Monitor&quot; devant le nom des sortie, c'est indispensable (cf : http://www.x.org/archive/current/doc/man/man5/xorg.conf.5.xhtml#heading12)
	Option      &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
	Option      &quot;Monitor-DVI-0&quot; &quot;Acer&quot;
EndSection

##################################################################

Section &quot;Screen&quot;
	Identifier  &quot;ecran1&quot;
	Device      &quot;card0&quot;
	Monitor     &quot;HansG&quot;
	DefaultDepth 24
	SubSection &quot;Display&quot;
 		Depth   24
		Virtual 3600 1200
	EndSubSection
EndSection

Section &quot;ServerLayout&quot;
	Identifier    &quot;dualscreen&quot;
	Screen      0  &quot;ecran1&quot;
EndSection
##################################################################
&lt;/pre&gt;

==Configuration de LightDM==
Nous allons maintenant regarder la configuration de LightDM d'un peu plus près. Le fichier de configuration par défaut expose toutes les options possibles du dit fichier. Nous allons garder le strict minimum
===lightdm.conf===
Pour cela éditons le fichier /etc/lightd/lightdm.conf

&lt;pre&gt;
[LightDM]
 greeter-user=root
 user-authority-in-system-dir=false

 [SeatDefaults]
 xserver-allow-tcp=false
 greeter-hide-users=false
 user-session=lightdm-xsession
 session-wrapper=/etc/X11/Xsession

 [Seat:1]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 1 -t 1680x1050 -P evdev -s /dev/input/by-id/usb-Logitech_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd -v bepo 
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 1
 greeter-session=lightdm-greeter

[Seat:2]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 2 -t 1920x1200 -P evdev -s /dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-path/platform-i8042-serio-0-event-kbd
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 2 -d 1680,0
 greeter-session=lightdm-greeter
&lt;/pre&gt;

Il y a plusieurs chose à savoir concernant le fonctionnement de LightDM afin de comprendre ce qui est fait.
-- La section &quot;SeatDefault&quot; est commune à tous les siège définit après
-- Chaque &quot;Seat&quot; est exécuté dans l'ordre dans un VT différent et ce même si, dans notre cas, tout se passe dans le VT7 ([url=https://code.launchpad.net/~andrzejtp2010/lightdm/lightdm-trunk-xephyr-multiseat/+merge/120286]un patch[url] à été proposé pour palier à ce problème mais il n'a pas été accepté ... pour l'instant)
-- Chaque propriétés de tous les &quot;Seat&quot; sont lancé dans un ordre précis, d'abord tous les &quot;xserver-command&quot;, puis tous les &quot;greeter-setup-script&quot;, enfin tous les &quot;greeter-session&quot;. Si vous mettez d'autres propriétés elle seront exécuter suivant leur ordre pré-établi.
-- Si les &quot;greeter&quot; se termine, lightDM coupe le &quot;xserver-command&quot; correspondant. De même si le &quot;xserver-command&quot; se termine le greeter est coupé.

Donc pour que tout se positionne correctement il faut
-- D'abord lancer le serveur X qui servira de support, ce qui est fait en le mettant en tant que premier &quot;Seat&quot;
-- Lancer les fenêtres Xephyr avec les optons qui vont bien, ce qui est fait avec le script &quot;Xephyr-command.sh&quot; et ses arguments
-- Simuler un &quot;greeter&quot; pour le &quot;Seat :0&quot; afin que le serveur X ne soit pas tuer par lightDM, ce qui est fait avec le script &quot;fake-greeter&quot;
-- Exécuter un script qui va placer les fenêtre Xephyr si besoin et initialiser les variables d'environnement correctement, fait avec &quot;Xephyr-greeter-setup.sh&quot;
-- Exécuter les &quot;greeter&quot; dans les fenêtre Xephyr

===fake-greeter.desktop===
Pour le faux greeter du serveur X il faut créer un fichier dans &quot;/usr/share/xgreeters/fake-greeter.desktop&quot; et y copier son contenu :
&lt;pre&gt;
[Desktop Entry]
Name=LightDM fake greeter
Comment=This runs no greeter at all, it should only be run from LightDM
Exec=sleep infinity
Type=Application
X-Ubuntu-Gettext-Domain=lightdm
&lt;/pre&gt;

Après tout cela nous allons créer un script qui permettra de créer (&quot;Xephyr-command.sh&quot;) et un autre pour placer les fenêtre à l'écran (&quot;Xephyr-greeter-setup.sh&quot;).
Tout d'abord il est nécessaire d'installer le petit utilitaire &quot;wmctrl&quot; avec
 # aptitude install wmctrl
===Xephyr-command.sh===
 Le contenue du fichier &quot;Xephyr-command.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -t, taille : Doit être de la forme 9999x9999, (dafaut = 1024x768)&quot;
  echo &quot;\t -s, sourie : /dev/input/[by-path|by-id]/...event-mouse&quot;
  echo &quot;\t -c, clavier : /dev/input/[by-path|by-id]/...event-kbd&quot;
  echo &quot;\t -l, layout : fr, es, en, ... (défaut = fr)&quot;
  echo &quot;\t -v, variant : fr, latin9, bepo, ... (défaut = &lt;vide&gt;)&quot;
  echo &quot;\t -P, Pilote : ephyr ou evdev (défaut = ephyr)&quot;
}

testExecutable() {
	XEPHYR=`whereis -b Xephyr | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
TAILLE=&quot;1024x768&quot;
SOURIE=
CLAVIER=
LAYOUT=&quot;fr&quot;
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
PILOTE=ephyr # Test = ephyr ; Prod = evdev

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XEPHYR&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;Xephyr : &quot;$XEPHYR
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:t:s:c:l:v:P:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		t|taille)
			TAILLE=&quot;$OPTARG&quot;
		;;

		s|sourie)
			SOURIE=$OPTARG
			if  ! [ -r $SOURIE ];then
				echo &quot;La sourie n'est pas accessible&quot;
				exit 3
			fi
		;;

		c|clavier)
			CLAVIER=$OPTARG
			if  ! [ -r $CLAVIER ];then
				echo &quot;Le clavier n'est pas accessible&quot;
				exit 4
			fi
		;;

		l|layout)
			LAYOUT=$OPTARG
		;;

		v|variant)
			VARIANT=$OPTARG
		;;

		P|Pilote)
			PILOTE=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Construction de la ligne d&quot;argument
OPTIONS=&quot;&quot;

if [ -n &quot;${TAILLE}&quot; ]; then
	OPTIONS=&quot; -screen ${TAILLE}&quot;
fi

if [ -n &quot;${CLAVIER}&quot; ]; then
	if [ -n &quot;${LAYOUT}&quot; ]; then
		OPTIONS=$OPTIONS&quot; -keybd $PILOTE,,device=${CLAVIER},xkbrules=evdev,xkbmodel=evdev,xkblayout=${LAYOUT}&quot;
		if [ -n &quot;${VARIANT}&quot; ]; then
			OPTIONS=$OPTIONS&quot;,xkbvariant=${VARIANT}&quot;
		fi
	fi
fi

if [ -n &quot;${SOURIE}&quot; ]; then
	OPTIONS=$OPTIONS&quot; -mouse $PILOTE,,device=${SOURIE}&quot;
fi

# Lancement de Xephyr en arrière plan
echo &quot;$XEPHYR -retro $OPTIONS :$POSTE&quot;
exec $XEPHYR -retro  $OPTIONS :$POSTE
&lt;/pre&gt;

Petite explication sur la dernière ligne. Le &quot;exec&quot; fait en sorte que ce soit le processus de Xephyr qui prend la place du script, donc il reprend le PID et tout ce qui va bien. Ca permet surtout à ce que le signal USR1 que Xephyr lance au PPID, soit bien récupéré par LightDM et que ce dernier continue son fonctionnement normalement.

===Xephyr-greeter-setup.sh===
Le contenue du fichier &quot;Xephyr-greeter-setup.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p|--poste numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -d, --deplacement : de la forme 'x,y' (en pixel)&quot;
  echo &quot;\t -v, --vt : 7, 8, 9, 10, 11 (defaut = 7)&quot;
}

testExecutable() {
	XWININFO=`whereis -b xwininfo | cut -d' ' -f2`
	WMCTRL=`whereis -b wmctrl | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
DEPLACEMENT=
VT=7
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
ATTENTE=3 # temps en seconde avant de déclencher le &quot;chvt&quot; pour revenir sur le bon VT

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XWININFO&quot; -o -z &quot;$WMCTRL&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;xwininfo : &quot;$XWININFO
	echo &quot;wmctrl : &quot;$WMCTRL
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:d:v:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		d|deplacement)
			DEPLACEMENT=&quot;$OPTARG&quot;
		;;
	
		v|vt)
			VT=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Vieux Hack tout bancal pour revenir au bon VT sans patcher LightDM
(sleep $ATTENTE ; chvt $VT)&amp;

# Deplacement de la fenetre si besoin
if [ -n &quot;$DEPLACEMENT&quot; ]; then
	#On recherche l'ID de la fenêtre Xephyr
        XEP=`XAUTHORITY=/var/run/lightdm/root/:$XRACINE $XWININFO -root -children -all -display :$XRACINE | grep &quot;Xephyr on :$POSTE&quot; --max-count=1`;

	if [ -z &quot;$XEP&quot; ]; then
		echo &quot;fenêtre Xephyr non trouvé pour le poste $POSTE&quot;
		exit 5
	fi
    XEPHYR_WIN_ID=`echo ${XEP} | cut -d' ' -f1`;
    $WMCTRL 2&gt;&amp;1 -v -i -r ${XEPHYR_WIN_ID} -e 0,${DEPLACEMENT},-1,-1;
	if [ $? -ne 0 ]; then
		echo &quot;Erreur lors du déplacement de la fenêtre Xephyr pour le poste $POSTE&quot;
		exit 7
	fi
fi

# Mise en place des variables d'environnement pour le greeter (utile ?)
export DISPLAY=:$POSTE
export XAUTHORITY=/var/run/lightdm/root/:$POSTE
&lt;/pre&gt;
Petite explication concernant la ligne suivante
 (sleep $ATTENTE ; chvt $VT)&amp;
Comme je n'ai pas patché LightDM pour éviter le changement de VT et que Xephyr m'empêche de faire un Ctrl+Alt+7 (avec le driver evdev) pour revenir au bon VT, j'ai du mettre en place un automatisme. Certes c'est loin d'être parfait mais ça rempli correctement son office.

==Modification du système==
===Montage des périphériques USB===
On se rend assez vite compte que si l'on branche une clé USB elle n'apparait pas automatiquement sur le bureau et elle est encore moins &quot;montable&quot; par un utilisateur classique. Elle apparait bien dans la liste des périphériques accessibles (volet de gauche sur nautilus) mais il y a un problème de droit.
Un petit rappel de la chaine mis en jeu lorsque l'on branche une clé USB ou tout autre périphérique.
* Détection par le noyau de l'ajout d'un matériel
* Udev prend le relai et créé les périphériques block nécessaire dans /dev
* PolicyKit termine le travail en mettant en place les autorisations adéquate

Donc le blocage vient de ce dernier composant, il ne reconnait pas une session Xephyr comme &quot;active&quot; et donc refuse le montage de ce type de périphérique par l'utilisateur lambda. Pour passer au delà de cette limitation on va redéfinir la règle de montage, pour cela il faut aller dans le répertoire suivant :
 /etc/polkit-1/localauthority/50-local.d
Et y créer un fichier, &quot;10-udisk.pkla&quot; par exemple
&lt;pre&gt;
[Allow mounting from Xephyr]
Identity=*
Action=org.freedesktop.udisks.change;org.freedesktop.udisks.drive-detach;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.filesystem-unmount-others
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

Voilà, avec Gnome3 dans le volet de gauche de Nautilus on peux cliquer sur l'icone de la clé USB pour quelle se monte correctement, idem avec LXDE.
Je recommande de désactiver l'automontage des périphériques USB afin que l'utilisateur qui branche la clé puisse la monter sans interférence.

===Gestion de l'énergie===
De la même manière que précédemment, par défaut il est impossible d'éteindre l'ordinateur depuis la session graphique (hors LightDM).
Donc pour cela on créé un nouveau fichier (20-upower.pkla) dans :
 /etc/polkit-1/localauthority/50-local.d

&lt;pre&gt;
[Suspend/hibernate permissions]
Identity=*
Action=org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

===Gestion du son===
Par défaut Pulseaudio est lancé lors de l'identification d'un utilisateur, du coup il est le seul qui puisse utiliser la carte son. Pour palier a ce problème il faut rendre pulseaudio démon du système.
Pour cela il faut modifier plusieurs fichiers de configurations :
* /etc/default/pulseaudio
&lt;pre&gt;PULSEAUDIO_SYSTEM_START=1&lt;/pre&gt;

* /etc/pulse/daemon.conf
&lt;pre&gt;daemonize = yes
local-server-type = system&lt;/pre&gt;

* /etc/pulse/client.conf
&lt;pre&gt;autospawn = no&lt;/pre&gt;

* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot;
 usermod -aG pulse-access &lt;username&gt;

* On peux enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse

([http://askubuntu.com/questions/192522/how-do-i-configure-sound-with-pulseaudio-and-multiseat source] [http://disjunkt.com/jd/2010/en/multiseat-linux/multiseat-linux-system-wide-pulseaudio-for-routing-sounds-109/ source2])

====Modification des DE (Gnome, KDE, LXDE, ...)====
Par défaut les environnements graphique exécute Pulseaudio en espace utilisateur, ce qu'il ne faut plus faire puisqu'il est partagé, ce qui ne devrais plus être possible si vous avez enlever les utilisateurs des groupes. Donc il est nécessaire de désactiver cela avec l'outil de votre environnement de Bureau. Par exemple pour LXDE il s'agit de lxsession, si vous avez des problème pour cet environnement [http://wiki.lxde.org/en/Autostart cette page (et ses liens)] devrait vous aider

===Aller plus loin===
* Si l'on veut restreindre ce droit par utilisateur ou par groupe on modifie la ligne &quot;Identity&quot; comme il suit
 Identity=unix-user:toto;unix-group:plugdev
* Pour creuser un peu plus la configuration de ce système on peux aller voir [http://www.freedesktop.org/software/polkit/docs/0.105/pklocalauthority.8.html cette page] sur PolicyKit
* Il serait aussi intéressant de définir des ports USB réservés pour chaque siège, mais je ne sais pas encore comment gérer cela.
* Voir s'il est possible de dédier les voies arrière à un poste et les voies avant à un autre ...

==Conclusion==
Et voilà, tout est prêt pour le redémarrage et admirer les mires de login sur leur écran respectif.

===Avantages===
* Avec du matériel de récupération on peut facilement mettre en place cette solution peut coûteuse
* La satisfaction d'avoir un poste de travail exotique
* Permettre à une tierce personne de profiter de la puissance monstre des machines récente sans se priver de notre fauteuil favori
* Se sentir moins avec une/plusieurs personnes à coté de soi :-p

===Inconvénients===
* Accélération graphique fortement diminué
* Si on débranche les claviers/souries Xephyr ne sait pas les reconnaitre automatiquement au rebranchement. Il faut relancer Xephyr en se déconnectant ou relancer LightDM
* Un &quot;saut&quot; des 2 écrans lors de la déconnexion d'un postes, mais cela est dû à LightDM et son changment de VT intempestif.
* Surveillance de chaque mis à jour de Xorg pour ne pas avoir de surprise au redémarrage
* Recompilation nécessaire en cas de mise à jour majeur de Xorg
* Gestion des montages USB non optimale
* Les voyants du clavier (pavé numérique, Majuscule et arrêt défile) ne réagissent plus, mais la clavier réagit correctement.
* Dans l'espace de travail de certains logiciel (VLC, Gimp) la sourie peux avoir un affichage lacunaire. Par exemple sous GIMP elle n'est visible que lorsqu'on la déplace, avec VLS il y a un carré noir autour d'elle quand on la déplace le reste du temps elle disparait.


===Remerciement===
Un grand merci à ce site pour m'avoir prémaché le travail ... ce qui ne m'as pas empêché d'apporter quelques améliorations à sa solution.
http://beforeafterx.blogspot.fr/2012/08/configuration-of-ligthdm-12.html</text>
      <sha1>0404y9iemtzser2tg645vcscnrwdta0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5161</id>
      <parentid>5160</parentid>
      <timestamp>2013-05-14T12:06:54Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* lightdm.conf */</comment>
      <text xml:space="preserve" bytes="24170">Après avoir fait du [http://www.debian-fr.org/multiseat-plusieurs-utilisateurs-sur-1-pc-t6954.html#p188187 multiposte avec 2 CG], un changement de PC m'oblige à faire la même chose mais avec une seule carte. J'ai essayé de couvrir au maximum toutes les étapes de la mise en place de la solution.

----
==Choix des outils==
Tout d'abord le raisonnement pour le choix des outils à été le suivant.
==== Xorg ou Wayland ?====
La réponse a été rapide. Xorg clairement, Wayland est encore trop récent pour pouvoir le faire et aucun document ne traite pour l'instant de ce problème.

==== Xnest ou Xephyr ?====
Xephyr est largement plébiscité et Xnest semble tomber en désuétude. C'est par le développement de Tizen (ex-Meego) que Xephyr semble toujours actif et que de nouvelles fonctionnalités lui sont ajoutées. Intel s'en sert intensément et est énormément utilisé pour le développement d'application pour smartphone comme environnement de simulation. (http://www.phoronix.com/scan.php?page=news_item&amp;px=ODc1NQ).
Un souci avec Xephyr est que le support de evdev semble ne pas avoir été inclus dans les options de compilations. &quot;evdev&quot; permet de monopoliser les claviers et souris. Du coup il faut refaire le paquet soi-même.

==== Et la transition avec systemd ? ====
Il ne semble plus y avoir de problème particulier (http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org)

====Comment gérer 2 écran, 2 session avec une seule carte graphique ?====
Il faut savoir que Xephyr permet de se greffer sur n'importe quel serveur X afin d'afficher une autre session. Par exemple avec la commande &quot;Xephyr -query 127.0.0.1&quot; vous devez pouvoir vous connecter sur votre propre machine si le protocole &quot;XDMCP&quot; est activé sur votre &quot;DisplayManager&quot; (GDM, KDM, XDM, ...). Donc le but du jeu sera d'avoir un serveur X qui va &quot;supporter&quot; 2 fenêtres Xephyr. Ces deux dernières se verront affectées les claviers et les souris de manière exclusive.

====Et le DM ? Debian a adopté GDM(3) avec Gnome mais j'aimerais bien m'en passer.====
Avec GDM (celui de Gnome2) il existe un très bon tutoriel ici : http://netpatia.blogspot.fr/2009/06/multiseat-in-ubuntu-904.html 
Pour GDM3, le problème est que pour l'instant il ne reprend pas toutes les possibilitées de son ancienne version. 
https://live.gnome.org/GDM/ToDo
&quot;-- Allow per-display X Server commands 
		BrianCameron: The [server] and [server-foo] sections of the GDM configuration have been disabled. This means that users who depend on novel configurations which require special Xserver commands per-display is not available.&quot;

Donc bonne nouvelle, il fallait trouver une alternative en le nom de LightDM, qui est issu de Ubuntu ... 

===Prérequis===
Donc pour les pré-requis :
* Ajouter &quot;deb-src http://ftp.fr.debian.org/debian/ &lt;VersionDebian&gt; main contrib non-free&quot;
* Installer les paquage dpkg-dev, build-essential, devscripts, lightDM

==Reconstruction de Xephyr==
===Récupération des sources nécessaires===
On récupère toutes les sources du packet source xorg-server qui comprend Xephyr.

 $ apt-get source xserver-xephyr


Puis récupérer toutes les dépendances spécifique au paquet :

 $ apt-get build-dep xorg-server

Là il va télécharger un certain nombre de paquets de développement (&quot;-dev&quot;), ils sont marqués comme installés automatiquement, donc un deborphan devrait vous les enlever sans trop de problème. Sinon il existe cette commande pour être sûr qu'ils sont marqués en tant que &quot;installé automatiquement&quot;, puis un &quot;apt-get autoclean&quot; les supprimera.

===Reconfiguration===
Ensuite tout se passe dans le répertoire &quot;debian&quot;

 $ cd xorg-server-1.12.4/debian


On édite le fichier &quot;changlog&quot; pour monter de version le paquet que l'on va reconstruire. Il est possible de le faire en automatique avec la commande:

 debian/$ dch -n


L'option &quot;-n&quot; permet d'incrémenter le numéro de version de façon mineur, c'est à dire l'ajout de &quot;.1&quot; en fin de numéro de version.

Sinon pour le faire en manuel, il faut ajouter une ligne du type suivant au fichier:
&lt;pre&gt;
xorg-server (2:1.12.4-5.1) UNRELEASED; urgency=low

  * Non-maintainer upload.
  * ajout des paramètre pour Xephyr et evdev

 -- Vous &lt;vous@VotreMachine&gt;  Sun, 03 Mar 2013 22:21:32 +0100
&lt;/pre&gt;

Pour éviter de réinstaller tout Xorg avec le nouveau numéro de version il faut éditer le fichier &quot;debian/control&quot; et modifier la dépendance de Xephyr (ligne ~283). Pour cela il faut remplacer le 
&lt;pre&gt;
Depends :
  xserver-common (&gt;= ${source:Version})
&lt;/pre&gt;
Par :
&lt;pre&gt;
Depends :
  xserver-common (&gt;= 2:1.12.4-5)
&lt;/pre&gt;

Le numéro doit être en accord avec la version de votre Xorg actuellement installé sur votre machine. 
Sinon cette modification est directement possible dans le .deb, toujours dans le fichier &quot;DEBIAN/control&quot;. Pour cela il faut prendre le .deb que vous avez construit, le décompresser, modifier le fichier et faire la commande &quot;dpkg-deb -b &lt;nom du répertoire contenant les fichiers&gt;&quot;. Mais il est plus pratique de le faire avant.

Je ne vous conseille pas de mettre une numéro de version trop élevé car cela pourrait engendrer une incompatibilité avec les futurs versions de Xorg.

Ensuite nous allons modifier les options de compilation en éditant le fichier &quot;rules&quot;, c'est le Makefile de la construction du paquet.
Localisez &quot;confflags_main&quot; (ligne ~133) et ajoutez les lignes suivantes juste en dessous de &quot;--enable-kdrive&quot; (ligne ~156)

 --enable-kdrive-evdev \
 --enable-kdrive-mouse \
 --enable-kdrive-kbd \

===Recompilation===
Passons maintenant à la recompilation proprement dite, ressortez du répertoire debian et faites :
 $ fakeroot ./debian/rules binary

Et laissez la compilation et la création des paquets se faire ... cela peut prendre quelques minutes.

====Re-recompilation====
Si pour une raison il vous faut refaire entièrement la compilation il faut d'abord faire la commande suivante
 $ fakeroot ./debian/rules clean

Si c'est juste refaire les &quot;.deb&quot; (correction du numéro de dépendance, ...), alors cette commande suffit.
 $ fakeroot ./debian/rules binary-deb

===Installation du paquet obtenue===
Enfin pour installer votre paquet (qui se trouve dans le répertoire supérieur) il faut faire :
 #dpkg -i xserver-xephyr_1.12.4-5_i386.deb
Ou de manière graphique avec GDebi.
====Paquets déjà prêt====
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6_i386.deb.tar]]
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6.1_amd64.deb.tar]]

==Configuration de Xorg==
===Définition de l'existant===
Pour rappel le principe sera d'avoir une session X qui va héberger 2 sessions Xephyr qui serviront les différents sièges.
Tout d'abord nous allons faire un fichier de conf pour le serveur Xorg. Pour ne pas démarrer de rien on peut lancer la commande (en root) &quot;Xorg -configure&quot; qui génère le fichier &quot;xorg.conf.new&quot; dans &quot;/root&quot;. Ensuite on fait un petit &quot;xrandr&quot; pour identifier les sorties disponibles.
&lt;pre&gt;
$ xrandr

Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 593mm
&lt;/pre&gt;

&quot;DVI-0&quot; &amp; &quot;HDMI-0&quot; sont les 2 disponibles sur la machine. On peut aussi trouver du &quot;VGA-0&quot; ou &quot;LVDS&quot; pour les écrans de portables.

===Exemple de fichier de configuration===
Dans cet exemple on peut avoir un &quot;/etc/xorg.conf&quot; comme suivant :
&lt;pre&gt;
##################################################################
Section &quot;Monitor&quot;
	Identifier  &quot;HannsG&quot;
	Option      &quot;PreferredMode&quot; &quot;1920x1200&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
	Option		&quot;Primary&quot; &quot;true&quot;
EndSection

Section &quot;Monitor&quot;
	Identifier  &quot;Acer&quot;
	Option      &quot;PreferredMode&quot; &quot;1680x1050&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
EndSection

Section &quot;Device&quot;
	Identifier  &quot;card0&quot;
	Driver      &quot;radeon&quot;
	# Ici on associe les sorties video avec une section &quot;Monitor&quot;
	# On remarquera le &quot;Monitor&quot; devant le nom des sortie, c'est indispensable (cf : http://www.x.org/archive/current/doc/man/man5/xorg.conf.5.xhtml#heading12)
	Option      &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
	Option      &quot;Monitor-DVI-0&quot; &quot;Acer&quot;
EndSection

##################################################################

Section &quot;Screen&quot;
	Identifier  &quot;ecran1&quot;
	Device      &quot;card0&quot;
	Monitor     &quot;HansG&quot;
	DefaultDepth 24
	SubSection &quot;Display&quot;
 		Depth   24
		Virtual 3600 1200
	EndSubSection
EndSection

Section &quot;ServerLayout&quot;
	Identifier    &quot;dualscreen&quot;
	Screen      0  &quot;ecran1&quot;
EndSection
##################################################################
&lt;/pre&gt;

==Configuration de LightDM==
Nous allons maintenant regarder la configuration de LightDM d'un peu plus près. Le fichier de configuration par défaut expose toutes les options possibles du dit fichier. Nous allons garder le strict minimum
===lightdm.conf===
Pour cela éditons le fichier /etc/lightd/lightdm.conf

&lt;pre&gt;
[LightDM]
 greeter-user=root
 user-authority-in-system-dir=false

 [SeatDefaults]
 xserver-allow-tcp=false
 greeter-hide-users=false
 user-session=lightdm-xsession
 session-wrapper=/etc/X11/Xsession

 [Seat:1]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 1 -t 1680x1050 -P evdev -s /dev/input/by-id/usb-Logitech_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd -v bepo 
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 1
 greeter-session=lightdm-greeter

[Seat:2]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 2 -t 1920x1200 -P evdev -s /dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-path/platform-i8042-serio-0-event-kbd
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 2 -d 1680,0
 greeter-session=lightdm-greeter
&lt;/pre&gt;

Il y a plusieurs chose à savoir concernant le fonctionnement de LightDM afin de comprendre ce qui est fait.
-- La section &quot;SeatDefault&quot; est commune à tous les sièges définis après
-- Chaque &quot;Seat&quot; est exécuté dans l'ordre dans un VT différent et ce même si, dans notre cas, tout se passe dans le VT7 ([url=https://code.launchpad.net/~andrzejtp2010/lightdm/lightdm-trunk-xephyr-multiseat/+merge/120286]un patch[url] à été proposé pour palier à ce problème mais il n'a pas été accepté ... pour l'instant)
-- Chaque propriété de tous les &quot;Seat&quot; est lancée dans un ordre précis, d'abord tous les &quot;xserver-command&quot;, puis tous les &quot;greeter-setup-script&quot;, enfin tous les &quot;greeter-session&quot;. Si vous mettez d'autres propriétés elle seront exécutées suivant leur ordre pré-établi.
-- Si les &quot;greeter&quot; se terminent, lightDM coupe le &quot;xserver-command&quot; correspondant. De même si le &quot;xserver-command&quot; se termine le greeter est coupé.

Donc pour que tout se positionne correctement il faut
-- D'abord lancer le serveur X qui servira de support, ce qui est fait en le mettant en tant que premier &quot;Seat&quot;
-- Lancer les fenêtres Xephyr avec les optons qui vont bien, ce qui est fait avec le script &quot;Xephyr-command.sh&quot; et ses arguments
-- Simuler un &quot;greeter&quot; pour le &quot;Seat :0&quot; afin que le serveur X ne soit pas tué par lightDM, ce qui est fait avec le script &quot;fake-greeter&quot;
-- Exécuter un script qui va placer les fenêtre Xephyr si besoin et initialiser les variables d'environnement correctement, fait avec &quot;Xephyr-greeter-setup.sh&quot;
-- Exécuter les &quot;greeter&quot; dans les fenêtre Xephyr

===fake-greeter.desktop===
Pour le faux greeter du serveur X il faut créer un fichier dans &quot;/usr/share/xgreeters/fake-greeter.desktop&quot; et y copier son contenu :
&lt;pre&gt;
[Desktop Entry]
Name=LightDM fake greeter
Comment=This runs no greeter at all, it should only be run from LightDM
Exec=sleep infinity
Type=Application
X-Ubuntu-Gettext-Domain=lightdm
&lt;/pre&gt;

Après tout cela nous allons créer un script qui permettra de créer (&quot;Xephyr-command.sh&quot;) et un autre pour placer les fenêtre à l'écran (&quot;Xephyr-greeter-setup.sh&quot;).
Tout d'abord il est nécessaire d'installer le petit utilitaire &quot;wmctrl&quot; avec
 # aptitude install wmctrl
===Xephyr-command.sh===
 Le contenue du fichier &quot;Xephyr-command.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -t, taille : Doit être de la forme 9999x9999, (dafaut = 1024x768)&quot;
  echo &quot;\t -s, sourie : /dev/input/[by-path|by-id]/...event-mouse&quot;
  echo &quot;\t -c, clavier : /dev/input/[by-path|by-id]/...event-kbd&quot;
  echo &quot;\t -l, layout : fr, es, en, ... (défaut = fr)&quot;
  echo &quot;\t -v, variant : fr, latin9, bepo, ... (défaut = &lt;vide&gt;)&quot;
  echo &quot;\t -P, Pilote : ephyr ou evdev (défaut = ephyr)&quot;
}

testExecutable() {
	XEPHYR=`whereis -b Xephyr | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
TAILLE=&quot;1024x768&quot;
SOURIE=
CLAVIER=
LAYOUT=&quot;fr&quot;
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
PILOTE=ephyr # Test = ephyr ; Prod = evdev

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XEPHYR&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;Xephyr : &quot;$XEPHYR
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:t:s:c:l:v:P:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		t|taille)
			TAILLE=&quot;$OPTARG&quot;
		;;

		s|sourie)
			SOURIE=$OPTARG
			if  ! [ -r $SOURIE ];then
				echo &quot;La sourie n'est pas accessible&quot;
				exit 3
			fi
		;;

		c|clavier)
			CLAVIER=$OPTARG
			if  ! [ -r $CLAVIER ];then
				echo &quot;Le clavier n'est pas accessible&quot;
				exit 4
			fi
		;;

		l|layout)
			LAYOUT=$OPTARG
		;;

		v|variant)
			VARIANT=$OPTARG
		;;

		P|Pilote)
			PILOTE=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Construction de la ligne d&quot;argument
OPTIONS=&quot;&quot;

if [ -n &quot;${TAILLE}&quot; ]; then
	OPTIONS=&quot; -screen ${TAILLE}&quot;
fi

if [ -n &quot;${CLAVIER}&quot; ]; then
	if [ -n &quot;${LAYOUT}&quot; ]; then
		OPTIONS=$OPTIONS&quot; -keybd $PILOTE,,device=${CLAVIER},xkbrules=evdev,xkbmodel=evdev,xkblayout=${LAYOUT}&quot;
		if [ -n &quot;${VARIANT}&quot; ]; then
			OPTIONS=$OPTIONS&quot;,xkbvariant=${VARIANT}&quot;
		fi
	fi
fi

if [ -n &quot;${SOURIE}&quot; ]; then
	OPTIONS=$OPTIONS&quot; -mouse $PILOTE,,device=${SOURIE}&quot;
fi

# Lancement de Xephyr en arrière plan
echo &quot;$XEPHYR -retro $OPTIONS :$POSTE&quot;
exec $XEPHYR -retro  $OPTIONS :$POSTE
&lt;/pre&gt;

Petite explication sur la dernière ligne. Le &quot;exec&quot; fait en sorte que ce soit le processus de Xephyr qui prend la place du script, donc il reprend le PID et tout ce qui va bien. Ca permet surtout à ce que le signal USR1 que Xephyr lance au PPID, soit bien récupéré par LightDM et que ce dernier continue son fonctionnement normalement.

===Xephyr-greeter-setup.sh===
Le contenue du fichier &quot;Xephyr-greeter-setup.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p|--poste numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -d, --deplacement : de la forme 'x,y' (en pixel)&quot;
  echo &quot;\t -v, --vt : 7, 8, 9, 10, 11 (defaut = 7)&quot;
}

testExecutable() {
	XWININFO=`whereis -b xwininfo | cut -d' ' -f2`
	WMCTRL=`whereis -b wmctrl | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
DEPLACEMENT=
VT=7
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
ATTENTE=3 # temps en seconde avant de déclencher le &quot;chvt&quot; pour revenir sur le bon VT

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XWININFO&quot; -o -z &quot;$WMCTRL&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;xwininfo : &quot;$XWININFO
	echo &quot;wmctrl : &quot;$WMCTRL
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:d:v:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		d|deplacement)
			DEPLACEMENT=&quot;$OPTARG&quot;
		;;
	
		v|vt)
			VT=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Vieux Hack tout bancal pour revenir au bon VT sans patcher LightDM
(sleep $ATTENTE ; chvt $VT)&amp;

# Deplacement de la fenetre si besoin
if [ -n &quot;$DEPLACEMENT&quot; ]; then
	#On recherche l'ID de la fenêtre Xephyr
        XEP=`XAUTHORITY=/var/run/lightdm/root/:$XRACINE $XWININFO -root -children -all -display :$XRACINE | grep &quot;Xephyr on :$POSTE&quot; --max-count=1`;

	if [ -z &quot;$XEP&quot; ]; then
		echo &quot;fenêtre Xephyr non trouvé pour le poste $POSTE&quot;
		exit 5
	fi
    XEPHYR_WIN_ID=`echo ${XEP} | cut -d' ' -f1`;
    $WMCTRL 2&gt;&amp;1 -v -i -r ${XEPHYR_WIN_ID} -e 0,${DEPLACEMENT},-1,-1;
	if [ $? -ne 0 ]; then
		echo &quot;Erreur lors du déplacement de la fenêtre Xephyr pour le poste $POSTE&quot;
		exit 7
	fi
fi

# Mise en place des variables d'environnement pour le greeter (utile ?)
export DISPLAY=:$POSTE
export XAUTHORITY=/var/run/lightdm/root/:$POSTE
&lt;/pre&gt;
Petite explication concernant la ligne suivante
 (sleep $ATTENTE ; chvt $VT)&amp;
Comme je n'ai pas patché LightDM pour éviter le changement de VT et que Xephyr m'empêche de faire un Ctrl+Alt+7 (avec le driver evdev) pour revenir au bon VT, j'ai du mettre en place un automatisme. Certes c'est loin d'être parfait mais ça rempli correctement son office.

==Modification du système==
===Montage des périphériques USB===
On se rend assez vite compte que si l'on branche une clé USB elle n'apparait pas automatiquement sur le bureau et elle est encore moins &quot;montable&quot; par un utilisateur classique. Elle apparait bien dans la liste des périphériques accessibles (volet de gauche sur nautilus) mais il y a un problème de droit.
Un petit rappel de la chaine mis en jeu lorsque l'on branche une clé USB ou tout autre périphérique.
* Détection par le noyau de l'ajout d'un matériel
* Udev prend le relai et créé les périphériques block nécessaire dans /dev
* PolicyKit termine le travail en mettant en place les autorisations adéquate

Donc le blocage vient de ce dernier composant, il ne reconnait pas une session Xephyr comme &quot;active&quot; et donc refuse le montage de ce type de périphérique par l'utilisateur lambda. Pour passer au delà de cette limitation on va redéfinir la règle de montage, pour cela il faut aller dans le répertoire suivant :
 /etc/polkit-1/localauthority/50-local.d
Et y créer un fichier, &quot;10-udisk.pkla&quot; par exemple
&lt;pre&gt;
[Allow mounting from Xephyr]
Identity=*
Action=org.freedesktop.udisks.change;org.freedesktop.udisks.drive-detach;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.filesystem-unmount-others
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

Voilà, avec Gnome3 dans le volet de gauche de Nautilus on peux cliquer sur l'icone de la clé USB pour quelle se monte correctement, idem avec LXDE.
Je recommande de désactiver l'automontage des périphériques USB afin que l'utilisateur qui branche la clé puisse la monter sans interférence.

===Gestion de l'énergie===
De la même manière que précédemment, par défaut il est impossible d'éteindre l'ordinateur depuis la session graphique (hors LightDM).
Donc pour cela on créé un nouveau fichier (20-upower.pkla) dans :
 /etc/polkit-1/localauthority/50-local.d

&lt;pre&gt;
[Suspend/hibernate permissions]
Identity=*
Action=org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

===Gestion du son===
Par défaut Pulseaudio est lancé lors de l'identification d'un utilisateur, du coup il est le seul qui puisse utiliser la carte son. Pour palier a ce problème il faut rendre pulseaudio démon du système.
Pour cela il faut modifier plusieurs fichiers de configurations :
* /etc/default/pulseaudio
&lt;pre&gt;PULSEAUDIO_SYSTEM_START=1&lt;/pre&gt;

* /etc/pulse/daemon.conf
&lt;pre&gt;daemonize = yes
local-server-type = system&lt;/pre&gt;

* /etc/pulse/client.conf
&lt;pre&gt;autospawn = no&lt;/pre&gt;

* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot;
 usermod -aG pulse-access &lt;username&gt;

* On peux enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse

([http://askubuntu.com/questions/192522/how-do-i-configure-sound-with-pulseaudio-and-multiseat source] [http://disjunkt.com/jd/2010/en/multiseat-linux/multiseat-linux-system-wide-pulseaudio-for-routing-sounds-109/ source2])

====Modification des DE (Gnome, KDE, LXDE, ...)====
Par défaut les environnements graphique exécute Pulseaudio en espace utilisateur, ce qu'il ne faut plus faire puisqu'il est partagé, ce qui ne devrais plus être possible si vous avez enlever les utilisateurs des groupes. Donc il est nécessaire de désactiver cela avec l'outil de votre environnement de Bureau. Par exemple pour LXDE il s'agit de lxsession, si vous avez des problème pour cet environnement [http://wiki.lxde.org/en/Autostart cette page (et ses liens)] devrait vous aider

===Aller plus loin===
* Si l'on veut restreindre ce droit par utilisateur ou par groupe on modifie la ligne &quot;Identity&quot; comme il suit
 Identity=unix-user:toto;unix-group:plugdev
* Pour creuser un peu plus la configuration de ce système on peux aller voir [http://www.freedesktop.org/software/polkit/docs/0.105/pklocalauthority.8.html cette page] sur PolicyKit
* Il serait aussi intéressant de définir des ports USB réservés pour chaque siège, mais je ne sais pas encore comment gérer cela.
* Voir s'il est possible de dédier les voies arrière à un poste et les voies avant à un autre ...

==Conclusion==
Et voilà, tout est prêt pour le redémarrage et admirer les mires de login sur leur écran respectif.

===Avantages===
* Avec du matériel de récupération on peut facilement mettre en place cette solution peut coûteuse
* La satisfaction d'avoir un poste de travail exotique
* Permettre à une tierce personne de profiter de la puissance monstre des machines récente sans se priver de notre fauteuil favori
* Se sentir moins avec une/plusieurs personnes à coté de soi :-p

===Inconvénients===
* Accélération graphique fortement diminué
* Si on débranche les claviers/souries Xephyr ne sait pas les reconnaitre automatiquement au rebranchement. Il faut relancer Xephyr en se déconnectant ou relancer LightDM
* Un &quot;saut&quot; des 2 écrans lors de la déconnexion d'un postes, mais cela est dû à LightDM et son changment de VT intempestif.
* Surveillance de chaque mis à jour de Xorg pour ne pas avoir de surprise au redémarrage
* Recompilation nécessaire en cas de mise à jour majeur de Xorg
* Gestion des montages USB non optimale
* Les voyants du clavier (pavé numérique, Majuscule et arrêt défile) ne réagissent plus, mais la clavier réagit correctement.
* Dans l'espace de travail de certains logiciel (VLC, Gimp) la sourie peux avoir un affichage lacunaire. Par exemple sous GIMP elle n'est visible que lorsqu'on la déplace, avec VLS il y a un carré noir autour d'elle quand on la déplace le reste du temps elle disparait.


===Remerciement===
Un grand merci à ce site pour m'avoir prémaché le travail ... ce qui ne m'as pas empêché d'apporter quelques améliorations à sa solution.
http://beforeafterx.blogspot.fr/2012/08/configuration-of-ligthdm-12.html</text>
      <sha1>k374nhkd96omwhssy2617l8or3whnov</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5162</id>
      <parentid>5161</parentid>
      <timestamp>2013-05-14T12:09:17Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Xephyr-command.sh */</comment>
      <text xml:space="preserve" bytes="24166">Après avoir fait du [http://www.debian-fr.org/multiseat-plusieurs-utilisateurs-sur-1-pc-t6954.html#p188187 multiposte avec 2 CG], un changement de PC m'oblige à faire la même chose mais avec une seule carte. J'ai essayé de couvrir au maximum toutes les étapes de la mise en place de la solution.

----
==Choix des outils==
Tout d'abord le raisonnement pour le choix des outils à été le suivant.
==== Xorg ou Wayland ?====
La réponse a été rapide. Xorg clairement, Wayland est encore trop récent pour pouvoir le faire et aucun document ne traite pour l'instant de ce problème.

==== Xnest ou Xephyr ?====
Xephyr est largement plébiscité et Xnest semble tomber en désuétude. C'est par le développement de Tizen (ex-Meego) que Xephyr semble toujours actif et que de nouvelles fonctionnalités lui sont ajoutées. Intel s'en sert intensément et est énormément utilisé pour le développement d'application pour smartphone comme environnement de simulation. (http://www.phoronix.com/scan.php?page=news_item&amp;px=ODc1NQ).
Un souci avec Xephyr est que le support de evdev semble ne pas avoir été inclus dans les options de compilations. &quot;evdev&quot; permet de monopoliser les claviers et souris. Du coup il faut refaire le paquet soi-même.

==== Et la transition avec systemd ? ====
Il ne semble plus y avoir de problème particulier (http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org)

====Comment gérer 2 écran, 2 session avec une seule carte graphique ?====
Il faut savoir que Xephyr permet de se greffer sur n'importe quel serveur X afin d'afficher une autre session. Par exemple avec la commande &quot;Xephyr -query 127.0.0.1&quot; vous devez pouvoir vous connecter sur votre propre machine si le protocole &quot;XDMCP&quot; est activé sur votre &quot;DisplayManager&quot; (GDM, KDM, XDM, ...). Donc le but du jeu sera d'avoir un serveur X qui va &quot;supporter&quot; 2 fenêtres Xephyr. Ces deux dernières se verront affectées les claviers et les souris de manière exclusive.

====Et le DM ? Debian a adopté GDM(3) avec Gnome mais j'aimerais bien m'en passer.====
Avec GDM (celui de Gnome2) il existe un très bon tutoriel ici : http://netpatia.blogspot.fr/2009/06/multiseat-in-ubuntu-904.html 
Pour GDM3, le problème est que pour l'instant il ne reprend pas toutes les possibilitées de son ancienne version. 
https://live.gnome.org/GDM/ToDo
&quot;-- Allow per-display X Server commands 
		BrianCameron: The [server] and [server-foo] sections of the GDM configuration have been disabled. This means that users who depend on novel configurations which require special Xserver commands per-display is not available.&quot;

Donc bonne nouvelle, il fallait trouver une alternative en le nom de LightDM, qui est issu de Ubuntu ... 

===Prérequis===
Donc pour les pré-requis :
* Ajouter &quot;deb-src http://ftp.fr.debian.org/debian/ &lt;VersionDebian&gt; main contrib non-free&quot;
* Installer les paquage dpkg-dev, build-essential, devscripts, lightDM

==Reconstruction de Xephyr==
===Récupération des sources nécessaires===
On récupère toutes les sources du packet source xorg-server qui comprend Xephyr.

 $ apt-get source xserver-xephyr


Puis récupérer toutes les dépendances spécifique au paquet :

 $ apt-get build-dep xorg-server

Là il va télécharger un certain nombre de paquets de développement (&quot;-dev&quot;), ils sont marqués comme installés automatiquement, donc un deborphan devrait vous les enlever sans trop de problème. Sinon il existe cette commande pour être sûr qu'ils sont marqués en tant que &quot;installé automatiquement&quot;, puis un &quot;apt-get autoclean&quot; les supprimera.

===Reconfiguration===
Ensuite tout se passe dans le répertoire &quot;debian&quot;

 $ cd xorg-server-1.12.4/debian


On édite le fichier &quot;changlog&quot; pour monter de version le paquet que l'on va reconstruire. Il est possible de le faire en automatique avec la commande:

 debian/$ dch -n


L'option &quot;-n&quot; permet d'incrémenter le numéro de version de façon mineur, c'est à dire l'ajout de &quot;.1&quot; en fin de numéro de version.

Sinon pour le faire en manuel, il faut ajouter une ligne du type suivant au fichier:
&lt;pre&gt;
xorg-server (2:1.12.4-5.1) UNRELEASED; urgency=low

  * Non-maintainer upload.
  * ajout des paramètre pour Xephyr et evdev

 -- Vous &lt;vous@VotreMachine&gt;  Sun, 03 Mar 2013 22:21:32 +0100
&lt;/pre&gt;

Pour éviter de réinstaller tout Xorg avec le nouveau numéro de version il faut éditer le fichier &quot;debian/control&quot; et modifier la dépendance de Xephyr (ligne ~283). Pour cela il faut remplacer le 
&lt;pre&gt;
Depends :
  xserver-common (&gt;= ${source:Version})
&lt;/pre&gt;
Par :
&lt;pre&gt;
Depends :
  xserver-common (&gt;= 2:1.12.4-5)
&lt;/pre&gt;

Le numéro doit être en accord avec la version de votre Xorg actuellement installé sur votre machine. 
Sinon cette modification est directement possible dans le .deb, toujours dans le fichier &quot;DEBIAN/control&quot;. Pour cela il faut prendre le .deb que vous avez construit, le décompresser, modifier le fichier et faire la commande &quot;dpkg-deb -b &lt;nom du répertoire contenant les fichiers&gt;&quot;. Mais il est plus pratique de le faire avant.

Je ne vous conseille pas de mettre une numéro de version trop élevé car cela pourrait engendrer une incompatibilité avec les futurs versions de Xorg.

Ensuite nous allons modifier les options de compilation en éditant le fichier &quot;rules&quot;, c'est le Makefile de la construction du paquet.
Localisez &quot;confflags_main&quot; (ligne ~133) et ajoutez les lignes suivantes juste en dessous de &quot;--enable-kdrive&quot; (ligne ~156)

 --enable-kdrive-evdev \
 --enable-kdrive-mouse \
 --enable-kdrive-kbd \

===Recompilation===
Passons maintenant à la recompilation proprement dite, ressortez du répertoire debian et faites :
 $ fakeroot ./debian/rules binary

Et laissez la compilation et la création des paquets se faire ... cela peut prendre quelques minutes.

====Re-recompilation====
Si pour une raison il vous faut refaire entièrement la compilation il faut d'abord faire la commande suivante
 $ fakeroot ./debian/rules clean

Si c'est juste refaire les &quot;.deb&quot; (correction du numéro de dépendance, ...), alors cette commande suffit.
 $ fakeroot ./debian/rules binary-deb

===Installation du paquet obtenue===
Enfin pour installer votre paquet (qui se trouve dans le répertoire supérieur) il faut faire :
 #dpkg -i xserver-xephyr_1.12.4-5_i386.deb
Ou de manière graphique avec GDebi.
====Paquets déjà prêt====
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6_i386.deb.tar]]
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6.1_amd64.deb.tar]]

==Configuration de Xorg==
===Définition de l'existant===
Pour rappel le principe sera d'avoir une session X qui va héberger 2 sessions Xephyr qui serviront les différents sièges.
Tout d'abord nous allons faire un fichier de conf pour le serveur Xorg. Pour ne pas démarrer de rien on peut lancer la commande (en root) &quot;Xorg -configure&quot; qui génère le fichier &quot;xorg.conf.new&quot; dans &quot;/root&quot;. Ensuite on fait un petit &quot;xrandr&quot; pour identifier les sorties disponibles.
&lt;pre&gt;
$ xrandr

Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 593mm
&lt;/pre&gt;

&quot;DVI-0&quot; &amp; &quot;HDMI-0&quot; sont les 2 disponibles sur la machine. On peut aussi trouver du &quot;VGA-0&quot; ou &quot;LVDS&quot; pour les écrans de portables.

===Exemple de fichier de configuration===
Dans cet exemple on peut avoir un &quot;/etc/xorg.conf&quot; comme suivant :
&lt;pre&gt;
##################################################################
Section &quot;Monitor&quot;
	Identifier  &quot;HannsG&quot;
	Option      &quot;PreferredMode&quot; &quot;1920x1200&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
	Option		&quot;Primary&quot; &quot;true&quot;
EndSection

Section &quot;Monitor&quot;
	Identifier  &quot;Acer&quot;
	Option      &quot;PreferredMode&quot; &quot;1680x1050&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
EndSection

Section &quot;Device&quot;
	Identifier  &quot;card0&quot;
	Driver      &quot;radeon&quot;
	# Ici on associe les sorties video avec une section &quot;Monitor&quot;
	# On remarquera le &quot;Monitor&quot; devant le nom des sortie, c'est indispensable (cf : http://www.x.org/archive/current/doc/man/man5/xorg.conf.5.xhtml#heading12)
	Option      &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
	Option      &quot;Monitor-DVI-0&quot; &quot;Acer&quot;
EndSection

##################################################################

Section &quot;Screen&quot;
	Identifier  &quot;ecran1&quot;
	Device      &quot;card0&quot;
	Monitor     &quot;HansG&quot;
	DefaultDepth 24
	SubSection &quot;Display&quot;
 		Depth   24
		Virtual 3600 1200
	EndSubSection
EndSection

Section &quot;ServerLayout&quot;
	Identifier    &quot;dualscreen&quot;
	Screen      0  &quot;ecran1&quot;
EndSection
##################################################################
&lt;/pre&gt;

==Configuration de LightDM==
Nous allons maintenant regarder la configuration de LightDM d'un peu plus près. Le fichier de configuration par défaut expose toutes les options possibles du dit fichier. Nous allons garder le strict minimum
===lightdm.conf===
Pour cela éditons le fichier /etc/lightd/lightdm.conf

&lt;pre&gt;
[LightDM]
 greeter-user=root
 user-authority-in-system-dir=false

 [SeatDefaults]
 xserver-allow-tcp=false
 greeter-hide-users=false
 user-session=lightdm-xsession
 session-wrapper=/etc/X11/Xsession

 [Seat:1]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 1 -t 1680x1050 -P evdev -s /dev/input/by-id/usb-Logitech_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd -v bepo 
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 1
 greeter-session=lightdm-greeter

[Seat:2]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 2 -t 1920x1200 -P evdev -s /dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-path/platform-i8042-serio-0-event-kbd
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 2 -d 1680,0
 greeter-session=lightdm-greeter
&lt;/pre&gt;

Il y a plusieurs chose à savoir concernant le fonctionnement de LightDM afin de comprendre ce qui est fait.
-- La section &quot;SeatDefault&quot; est commune à tous les sièges définis après
-- Chaque &quot;Seat&quot; est exécuté dans l'ordre dans un VT différent et ce même si, dans notre cas, tout se passe dans le VT7 ([url=https://code.launchpad.net/~andrzejtp2010/lightdm/lightdm-trunk-xephyr-multiseat/+merge/120286]un patch[url] à été proposé pour palier à ce problème mais il n'a pas été accepté ... pour l'instant)
-- Chaque propriété de tous les &quot;Seat&quot; est lancée dans un ordre précis, d'abord tous les &quot;xserver-command&quot;, puis tous les &quot;greeter-setup-script&quot;, enfin tous les &quot;greeter-session&quot;. Si vous mettez d'autres propriétés elle seront exécutées suivant leur ordre pré-établi.
-- Si les &quot;greeter&quot; se terminent, lightDM coupe le &quot;xserver-command&quot; correspondant. De même si le &quot;xserver-command&quot; se termine le greeter est coupé.

Donc pour que tout se positionne correctement il faut
-- D'abord lancer le serveur X qui servira de support, ce qui est fait en le mettant en tant que premier &quot;Seat&quot;
-- Lancer les fenêtres Xephyr avec les optons qui vont bien, ce qui est fait avec le script &quot;Xephyr-command.sh&quot; et ses arguments
-- Simuler un &quot;greeter&quot; pour le &quot;Seat :0&quot; afin que le serveur X ne soit pas tué par lightDM, ce qui est fait avec le script &quot;fake-greeter&quot;
-- Exécuter un script qui va placer les fenêtre Xephyr si besoin et initialiser les variables d'environnement correctement, fait avec &quot;Xephyr-greeter-setup.sh&quot;
-- Exécuter les &quot;greeter&quot; dans les fenêtre Xephyr

===fake-greeter.desktop===
Pour le faux greeter du serveur X il faut créer un fichier dans &quot;/usr/share/xgreeters/fake-greeter.desktop&quot; et y copier son contenu :
&lt;pre&gt;
[Desktop Entry]
Name=LightDM fake greeter
Comment=This runs no greeter at all, it should only be run from LightDM
Exec=sleep infinity
Type=Application
X-Ubuntu-Gettext-Domain=lightdm
&lt;/pre&gt;

Après tout cela nous allons créer un script qui permettra de créer (&quot;Xephyr-command.sh&quot;) et un autre pour placer les fenêtre à l'écran (&quot;Xephyr-greeter-setup.sh&quot;).
Tout d'abord il est nécessaire d'installer le petit utilitaire &quot;wmctrl&quot; avec
 # aptitude install wmctrl
===Xephyr-command.sh===
 Le contenu du fichier &quot;Xephyr-command.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -t, taille : Doit être de la forme 9999x9999, (dafaut = 1024x768)&quot;
  echo &quot;\t -s, sourie : /dev/input/[by-path|by-id]/...event-mouse&quot;
  echo &quot;\t -c, clavier : /dev/input/[by-path|by-id]/...event-kbd&quot;
  echo &quot;\t -l, layout : fr, es, en, ... (défaut = fr)&quot;
  echo &quot;\t -v, variant : fr, latin9, bepo, ... (défaut = &lt;vide&gt;)&quot;
  echo &quot;\t -P, Pilote : ephyr ou evdev (défaut = ephyr)&quot;
}

testExecutable() {
	XEPHYR=`whereis -b Xephyr | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
TAILLE=&quot;1024x768&quot;
SOURIE=
CLAVIER=
LAYOUT=&quot;fr&quot;
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
PILOTE=ephyr # Test = ephyr ; Prod = evdev

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XEPHYR&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;Xephyr : &quot;$XEPHYR
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:t:s:c:l:v:P:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		t|taille)
			TAILLE=&quot;$OPTARG&quot;
		;;

		s|sourie)
			SOURIE=$OPTARG
			if  ! [ -r $SOURIE ];then
				echo &quot;La sourie n'est pas accessible&quot;
				exit 3
			fi
		;;

		c|clavier)
			CLAVIER=$OPTARG
			if  ! [ -r $CLAVIER ];then
				echo &quot;Le clavier n'est pas accessible&quot;
				exit 4
			fi
		;;

		l|layout)
			LAYOUT=$OPTARG
		;;

		v|variant)
			VARIANT=$OPTARG
		;;

		P|Pilote)
			PILOTE=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variables d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Construction de la ligne d&quot;argument
OPTIONS=&quot;&quot;

if [ -n &quot;${TAILLE}&quot; ]; then
	OPTIONS=&quot; -screen ${TAILLE}&quot;
fi

if [ -n &quot;${CLAVIER}&quot; ]; then
	if [ -n &quot;${LAYOUT}&quot; ]; then
		OPTIONS=$OPTIONS&quot; -keybd $PILOTE,,device=${CLAVIER},xkbrules=evdev,xkbmodel=evdev,xkblayout=${LAYOUT}&quot;
		if [ -n &quot;${VARIANT}&quot; ]; then
			OPTIONS=$OPTIONS&quot;,xkbvariant=${VARIANT}&quot;
		fi
	fi
fi

if [ -n &quot;${SOURIE}&quot; ]; then
	OPTIONS=$OPTIONS&quot; -mouse $PILOTE,,device=${SOURIE}&quot;
fi

# Lancement de Xephyr en arrière plan
echo &quot;$XEPHYR -retro $OPTIONS :$POSTE&quot;
exec $XEPHYR -retro  $OPTIONS :$POSTE
&lt;/pre&gt;

Petite explication sur la dernière ligne. Le &quot;exec&quot; fait en sorte que ce soit le processus de Xephyr qui prend la place du script, donc il reprend le PID et tout ce qui va bien. Cela permet surtout que le signal USR1 que Xephyr lance au PPID, soit bien récupéré par LightDM et que ce dernier continue son fonctionnement normalement.

===Xephyr-greeter-setup.sh===
Le contenue du fichier &quot;Xephyr-greeter-setup.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p|--poste numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -d, --deplacement : de la forme 'x,y' (en pixel)&quot;
  echo &quot;\t -v, --vt : 7, 8, 9, 10, 11 (defaut = 7)&quot;
}

testExecutable() {
	XWININFO=`whereis -b xwininfo | cut -d' ' -f2`
	WMCTRL=`whereis -b wmctrl | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
DEPLACEMENT=
VT=7
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
ATTENTE=3 # temps en seconde avant de déclencher le &quot;chvt&quot; pour revenir sur le bon VT

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XWININFO&quot; -o -z &quot;$WMCTRL&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;xwininfo : &quot;$XWININFO
	echo &quot;wmctrl : &quot;$WMCTRL
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:d:v:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		d|deplacement)
			DEPLACEMENT=&quot;$OPTARG&quot;
		;;
	
		v|vt)
			VT=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Vieux Hack tout bancal pour revenir au bon VT sans patcher LightDM
(sleep $ATTENTE ; chvt $VT)&amp;

# Deplacement de la fenetre si besoin
if [ -n &quot;$DEPLACEMENT&quot; ]; then
	#On recherche l'ID de la fenêtre Xephyr
        XEP=`XAUTHORITY=/var/run/lightdm/root/:$XRACINE $XWININFO -root -children -all -display :$XRACINE | grep &quot;Xephyr on :$POSTE&quot; --max-count=1`;

	if [ -z &quot;$XEP&quot; ]; then
		echo &quot;fenêtre Xephyr non trouvé pour le poste $POSTE&quot;
		exit 5
	fi
    XEPHYR_WIN_ID=`echo ${XEP} | cut -d' ' -f1`;
    $WMCTRL 2&gt;&amp;1 -v -i -r ${XEPHYR_WIN_ID} -e 0,${DEPLACEMENT},-1,-1;
	if [ $? -ne 0 ]; then
		echo &quot;Erreur lors du déplacement de la fenêtre Xephyr pour le poste $POSTE&quot;
		exit 7
	fi
fi

# Mise en place des variables d'environnement pour le greeter (utile ?)
export DISPLAY=:$POSTE
export XAUTHORITY=/var/run/lightdm/root/:$POSTE
&lt;/pre&gt;
Petite explication concernant la ligne suivante
 (sleep $ATTENTE ; chvt $VT)&amp;
Comme je n'ai pas patché LightDM pour éviter le changement de VT et que Xephyr m'empêche de faire un Ctrl+Alt+7 (avec le driver evdev) pour revenir au bon VT, j'ai du mettre en place un automatisme. Certes c'est loin d'être parfait mais ça rempli correctement son office.

==Modification du système==
===Montage des périphériques USB===
On se rend assez vite compte que si l'on branche une clé USB elle n'apparait pas automatiquement sur le bureau et elle est encore moins &quot;montable&quot; par un utilisateur classique. Elle apparait bien dans la liste des périphériques accessibles (volet de gauche sur nautilus) mais il y a un problème de droit.
Un petit rappel de la chaine mis en jeu lorsque l'on branche une clé USB ou tout autre périphérique.
* Détection par le noyau de l'ajout d'un matériel
* Udev prend le relai et créé les périphériques block nécessaire dans /dev
* PolicyKit termine le travail en mettant en place les autorisations adéquate

Donc le blocage vient de ce dernier composant, il ne reconnait pas une session Xephyr comme &quot;active&quot; et donc refuse le montage de ce type de périphérique par l'utilisateur lambda. Pour passer au delà de cette limitation on va redéfinir la règle de montage, pour cela il faut aller dans le répertoire suivant :
 /etc/polkit-1/localauthority/50-local.d
Et y créer un fichier, &quot;10-udisk.pkla&quot; par exemple
&lt;pre&gt;
[Allow mounting from Xephyr]
Identity=*
Action=org.freedesktop.udisks.change;org.freedesktop.udisks.drive-detach;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.filesystem-unmount-others
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

Voilà, avec Gnome3 dans le volet de gauche de Nautilus on peux cliquer sur l'icone de la clé USB pour quelle se monte correctement, idem avec LXDE.
Je recommande de désactiver l'automontage des périphériques USB afin que l'utilisateur qui branche la clé puisse la monter sans interférence.

===Gestion de l'énergie===
De la même manière que précédemment, par défaut il est impossible d'éteindre l'ordinateur depuis la session graphique (hors LightDM).
Donc pour cela on créé un nouveau fichier (20-upower.pkla) dans :
 /etc/polkit-1/localauthority/50-local.d

&lt;pre&gt;
[Suspend/hibernate permissions]
Identity=*
Action=org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

===Gestion du son===
Par défaut Pulseaudio est lancé lors de l'identification d'un utilisateur, du coup il est le seul qui puisse utiliser la carte son. Pour palier a ce problème il faut rendre pulseaudio démon du système.
Pour cela il faut modifier plusieurs fichiers de configurations :
* /etc/default/pulseaudio
&lt;pre&gt;PULSEAUDIO_SYSTEM_START=1&lt;/pre&gt;

* /etc/pulse/daemon.conf
&lt;pre&gt;daemonize = yes
local-server-type = system&lt;/pre&gt;

* /etc/pulse/client.conf
&lt;pre&gt;autospawn = no&lt;/pre&gt;

* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot;
 usermod -aG pulse-access &lt;username&gt;

* On peux enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse

([http://askubuntu.com/questions/192522/how-do-i-configure-sound-with-pulseaudio-and-multiseat source] [http://disjunkt.com/jd/2010/en/multiseat-linux/multiseat-linux-system-wide-pulseaudio-for-routing-sounds-109/ source2])

====Modification des DE (Gnome, KDE, LXDE, ...)====
Par défaut les environnements graphique exécute Pulseaudio en espace utilisateur, ce qu'il ne faut plus faire puisqu'il est partagé, ce qui ne devrais plus être possible si vous avez enlever les utilisateurs des groupes. Donc il est nécessaire de désactiver cela avec l'outil de votre environnement de Bureau. Par exemple pour LXDE il s'agit de lxsession, si vous avez des problème pour cet environnement [http://wiki.lxde.org/en/Autostart cette page (et ses liens)] devrait vous aider

===Aller plus loin===
* Si l'on veut restreindre ce droit par utilisateur ou par groupe on modifie la ligne &quot;Identity&quot; comme il suit
 Identity=unix-user:toto;unix-group:plugdev
* Pour creuser un peu plus la configuration de ce système on peux aller voir [http://www.freedesktop.org/software/polkit/docs/0.105/pklocalauthority.8.html cette page] sur PolicyKit
* Il serait aussi intéressant de définir des ports USB réservés pour chaque siège, mais je ne sais pas encore comment gérer cela.
* Voir s'il est possible de dédier les voies arrière à un poste et les voies avant à un autre ...

==Conclusion==
Et voilà, tout est prêt pour le redémarrage et admirer les mires de login sur leur écran respectif.

===Avantages===
* Avec du matériel de récupération on peut facilement mettre en place cette solution peut coûteuse
* La satisfaction d'avoir un poste de travail exotique
* Permettre à une tierce personne de profiter de la puissance monstre des machines récente sans se priver de notre fauteuil favori
* Se sentir moins avec une/plusieurs personnes à coté de soi :-p

===Inconvénients===
* Accélération graphique fortement diminué
* Si on débranche les claviers/souries Xephyr ne sait pas les reconnaitre automatiquement au rebranchement. Il faut relancer Xephyr en se déconnectant ou relancer LightDM
* Un &quot;saut&quot; des 2 écrans lors de la déconnexion d'un postes, mais cela est dû à LightDM et son changment de VT intempestif.
* Surveillance de chaque mis à jour de Xorg pour ne pas avoir de surprise au redémarrage
* Recompilation nécessaire en cas de mise à jour majeur de Xorg
* Gestion des montages USB non optimale
* Les voyants du clavier (pavé numérique, Majuscule et arrêt défile) ne réagissent plus, mais la clavier réagit correctement.
* Dans l'espace de travail de certains logiciel (VLC, Gimp) la sourie peux avoir un affichage lacunaire. Par exemple sous GIMP elle n'est visible que lorsqu'on la déplace, avec VLS il y a un carré noir autour d'elle quand on la déplace le reste du temps elle disparait.


===Remerciement===
Un grand merci à ce site pour m'avoir prémaché le travail ... ce qui ne m'as pas empêché d'apporter quelques améliorations à sa solution.
http://beforeafterx.blogspot.fr/2012/08/configuration-of-ligthdm-12.html</text>
      <sha1>f2tk03vyaz6d5oy35fd4rp1cxh4ruxz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5163</id>
      <parentid>5162</parentid>
      <timestamp>2013-05-14T12:10:04Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Xephyr-greeter-setup.sh */</comment>
      <text xml:space="preserve" bytes="24165">Après avoir fait du [http://www.debian-fr.org/multiseat-plusieurs-utilisateurs-sur-1-pc-t6954.html#p188187 multiposte avec 2 CG], un changement de PC m'oblige à faire la même chose mais avec une seule carte. J'ai essayé de couvrir au maximum toutes les étapes de la mise en place de la solution.

----
==Choix des outils==
Tout d'abord le raisonnement pour le choix des outils à été le suivant.
==== Xorg ou Wayland ?====
La réponse a été rapide. Xorg clairement, Wayland est encore trop récent pour pouvoir le faire et aucun document ne traite pour l'instant de ce problème.

==== Xnest ou Xephyr ?====
Xephyr est largement plébiscité et Xnest semble tomber en désuétude. C'est par le développement de Tizen (ex-Meego) que Xephyr semble toujours actif et que de nouvelles fonctionnalités lui sont ajoutées. Intel s'en sert intensément et est énormément utilisé pour le développement d'application pour smartphone comme environnement de simulation. (http://www.phoronix.com/scan.php?page=news_item&amp;px=ODc1NQ).
Un souci avec Xephyr est que le support de evdev semble ne pas avoir été inclus dans les options de compilations. &quot;evdev&quot; permet de monopoliser les claviers et souris. Du coup il faut refaire le paquet soi-même.

==== Et la transition avec systemd ? ====
Il ne semble plus y avoir de problème particulier (http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org)

====Comment gérer 2 écran, 2 session avec une seule carte graphique ?====
Il faut savoir que Xephyr permet de se greffer sur n'importe quel serveur X afin d'afficher une autre session. Par exemple avec la commande &quot;Xephyr -query 127.0.0.1&quot; vous devez pouvoir vous connecter sur votre propre machine si le protocole &quot;XDMCP&quot; est activé sur votre &quot;DisplayManager&quot; (GDM, KDM, XDM, ...). Donc le but du jeu sera d'avoir un serveur X qui va &quot;supporter&quot; 2 fenêtres Xephyr. Ces deux dernières se verront affectées les claviers et les souris de manière exclusive.

====Et le DM ? Debian a adopté GDM(3) avec Gnome mais j'aimerais bien m'en passer.====
Avec GDM (celui de Gnome2) il existe un très bon tutoriel ici : http://netpatia.blogspot.fr/2009/06/multiseat-in-ubuntu-904.html 
Pour GDM3, le problème est que pour l'instant il ne reprend pas toutes les possibilitées de son ancienne version. 
https://live.gnome.org/GDM/ToDo
&quot;-- Allow per-display X Server commands 
		BrianCameron: The [server] and [server-foo] sections of the GDM configuration have been disabled. This means that users who depend on novel configurations which require special Xserver commands per-display is not available.&quot;

Donc bonne nouvelle, il fallait trouver une alternative en le nom de LightDM, qui est issu de Ubuntu ... 

===Prérequis===
Donc pour les pré-requis :
* Ajouter &quot;deb-src http://ftp.fr.debian.org/debian/ &lt;VersionDebian&gt; main contrib non-free&quot;
* Installer les paquage dpkg-dev, build-essential, devscripts, lightDM

==Reconstruction de Xephyr==
===Récupération des sources nécessaires===
On récupère toutes les sources du packet source xorg-server qui comprend Xephyr.

 $ apt-get source xserver-xephyr


Puis récupérer toutes les dépendances spécifique au paquet :

 $ apt-get build-dep xorg-server

Là il va télécharger un certain nombre de paquets de développement (&quot;-dev&quot;), ils sont marqués comme installés automatiquement, donc un deborphan devrait vous les enlever sans trop de problème. Sinon il existe cette commande pour être sûr qu'ils sont marqués en tant que &quot;installé automatiquement&quot;, puis un &quot;apt-get autoclean&quot; les supprimera.

===Reconfiguration===
Ensuite tout se passe dans le répertoire &quot;debian&quot;

 $ cd xorg-server-1.12.4/debian


On édite le fichier &quot;changlog&quot; pour monter de version le paquet que l'on va reconstruire. Il est possible de le faire en automatique avec la commande:

 debian/$ dch -n


L'option &quot;-n&quot; permet d'incrémenter le numéro de version de façon mineur, c'est à dire l'ajout de &quot;.1&quot; en fin de numéro de version.

Sinon pour le faire en manuel, il faut ajouter une ligne du type suivant au fichier:
&lt;pre&gt;
xorg-server (2:1.12.4-5.1) UNRELEASED; urgency=low

  * Non-maintainer upload.
  * ajout des paramètre pour Xephyr et evdev

 -- Vous &lt;vous@VotreMachine&gt;  Sun, 03 Mar 2013 22:21:32 +0100
&lt;/pre&gt;

Pour éviter de réinstaller tout Xorg avec le nouveau numéro de version il faut éditer le fichier &quot;debian/control&quot; et modifier la dépendance de Xephyr (ligne ~283). Pour cela il faut remplacer le 
&lt;pre&gt;
Depends :
  xserver-common (&gt;= ${source:Version})
&lt;/pre&gt;
Par :
&lt;pre&gt;
Depends :
  xserver-common (&gt;= 2:1.12.4-5)
&lt;/pre&gt;

Le numéro doit être en accord avec la version de votre Xorg actuellement installé sur votre machine. 
Sinon cette modification est directement possible dans le .deb, toujours dans le fichier &quot;DEBIAN/control&quot;. Pour cela il faut prendre le .deb que vous avez construit, le décompresser, modifier le fichier et faire la commande &quot;dpkg-deb -b &lt;nom du répertoire contenant les fichiers&gt;&quot;. Mais il est plus pratique de le faire avant.

Je ne vous conseille pas de mettre une numéro de version trop élevé car cela pourrait engendrer une incompatibilité avec les futurs versions de Xorg.

Ensuite nous allons modifier les options de compilation en éditant le fichier &quot;rules&quot;, c'est le Makefile de la construction du paquet.
Localisez &quot;confflags_main&quot; (ligne ~133) et ajoutez les lignes suivantes juste en dessous de &quot;--enable-kdrive&quot; (ligne ~156)

 --enable-kdrive-evdev \
 --enable-kdrive-mouse \
 --enable-kdrive-kbd \

===Recompilation===
Passons maintenant à la recompilation proprement dite, ressortez du répertoire debian et faites :
 $ fakeroot ./debian/rules binary

Et laissez la compilation et la création des paquets se faire ... cela peut prendre quelques minutes.

====Re-recompilation====
Si pour une raison il vous faut refaire entièrement la compilation il faut d'abord faire la commande suivante
 $ fakeroot ./debian/rules clean

Si c'est juste refaire les &quot;.deb&quot; (correction du numéro de dépendance, ...), alors cette commande suffit.
 $ fakeroot ./debian/rules binary-deb

===Installation du paquet obtenue===
Enfin pour installer votre paquet (qui se trouve dans le répertoire supérieur) il faut faire :
 #dpkg -i xserver-xephyr_1.12.4-5_i386.deb
Ou de manière graphique avec GDebi.
====Paquets déjà prêt====
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6_i386.deb.tar]]
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6.1_amd64.deb.tar]]

==Configuration de Xorg==
===Définition de l'existant===
Pour rappel le principe sera d'avoir une session X qui va héberger 2 sessions Xephyr qui serviront les différents sièges.
Tout d'abord nous allons faire un fichier de conf pour le serveur Xorg. Pour ne pas démarrer de rien on peut lancer la commande (en root) &quot;Xorg -configure&quot; qui génère le fichier &quot;xorg.conf.new&quot; dans &quot;/root&quot;. Ensuite on fait un petit &quot;xrandr&quot; pour identifier les sorties disponibles.
&lt;pre&gt;
$ xrandr

Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 593mm
&lt;/pre&gt;

&quot;DVI-0&quot; &amp; &quot;HDMI-0&quot; sont les 2 disponibles sur la machine. On peut aussi trouver du &quot;VGA-0&quot; ou &quot;LVDS&quot; pour les écrans de portables.

===Exemple de fichier de configuration===
Dans cet exemple on peut avoir un &quot;/etc/xorg.conf&quot; comme suivant :
&lt;pre&gt;
##################################################################
Section &quot;Monitor&quot;
	Identifier  &quot;HannsG&quot;
	Option      &quot;PreferredMode&quot; &quot;1920x1200&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
	Option		&quot;Primary&quot; &quot;true&quot;
EndSection

Section &quot;Monitor&quot;
	Identifier  &quot;Acer&quot;
	Option      &quot;PreferredMode&quot; &quot;1680x1050&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
EndSection

Section &quot;Device&quot;
	Identifier  &quot;card0&quot;
	Driver      &quot;radeon&quot;
	# Ici on associe les sorties video avec une section &quot;Monitor&quot;
	# On remarquera le &quot;Monitor&quot; devant le nom des sortie, c'est indispensable (cf : http://www.x.org/archive/current/doc/man/man5/xorg.conf.5.xhtml#heading12)
	Option      &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
	Option      &quot;Monitor-DVI-0&quot; &quot;Acer&quot;
EndSection

##################################################################

Section &quot;Screen&quot;
	Identifier  &quot;ecran1&quot;
	Device      &quot;card0&quot;
	Monitor     &quot;HansG&quot;
	DefaultDepth 24
	SubSection &quot;Display&quot;
 		Depth   24
		Virtual 3600 1200
	EndSubSection
EndSection

Section &quot;ServerLayout&quot;
	Identifier    &quot;dualscreen&quot;
	Screen      0  &quot;ecran1&quot;
EndSection
##################################################################
&lt;/pre&gt;

==Configuration de LightDM==
Nous allons maintenant regarder la configuration de LightDM d'un peu plus près. Le fichier de configuration par défaut expose toutes les options possibles du dit fichier. Nous allons garder le strict minimum
===lightdm.conf===
Pour cela éditons le fichier /etc/lightd/lightdm.conf

&lt;pre&gt;
[LightDM]
 greeter-user=root
 user-authority-in-system-dir=false

 [SeatDefaults]
 xserver-allow-tcp=false
 greeter-hide-users=false
 user-session=lightdm-xsession
 session-wrapper=/etc/X11/Xsession

 [Seat:1]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 1 -t 1680x1050 -P evdev -s /dev/input/by-id/usb-Logitech_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd -v bepo 
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 1
 greeter-session=lightdm-greeter

[Seat:2]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 2 -t 1920x1200 -P evdev -s /dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-path/platform-i8042-serio-0-event-kbd
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 2 -d 1680,0
 greeter-session=lightdm-greeter
&lt;/pre&gt;

Il y a plusieurs chose à savoir concernant le fonctionnement de LightDM afin de comprendre ce qui est fait.
-- La section &quot;SeatDefault&quot; est commune à tous les sièges définis après
-- Chaque &quot;Seat&quot; est exécuté dans l'ordre dans un VT différent et ce même si, dans notre cas, tout se passe dans le VT7 ([url=https://code.launchpad.net/~andrzejtp2010/lightdm/lightdm-trunk-xephyr-multiseat/+merge/120286]un patch[url] à été proposé pour palier à ce problème mais il n'a pas été accepté ... pour l'instant)
-- Chaque propriété de tous les &quot;Seat&quot; est lancée dans un ordre précis, d'abord tous les &quot;xserver-command&quot;, puis tous les &quot;greeter-setup-script&quot;, enfin tous les &quot;greeter-session&quot;. Si vous mettez d'autres propriétés elle seront exécutées suivant leur ordre pré-établi.
-- Si les &quot;greeter&quot; se terminent, lightDM coupe le &quot;xserver-command&quot; correspondant. De même si le &quot;xserver-command&quot; se termine le greeter est coupé.

Donc pour que tout se positionne correctement il faut
-- D'abord lancer le serveur X qui servira de support, ce qui est fait en le mettant en tant que premier &quot;Seat&quot;
-- Lancer les fenêtres Xephyr avec les optons qui vont bien, ce qui est fait avec le script &quot;Xephyr-command.sh&quot; et ses arguments
-- Simuler un &quot;greeter&quot; pour le &quot;Seat :0&quot; afin que le serveur X ne soit pas tué par lightDM, ce qui est fait avec le script &quot;fake-greeter&quot;
-- Exécuter un script qui va placer les fenêtre Xephyr si besoin et initialiser les variables d'environnement correctement, fait avec &quot;Xephyr-greeter-setup.sh&quot;
-- Exécuter les &quot;greeter&quot; dans les fenêtre Xephyr

===fake-greeter.desktop===
Pour le faux greeter du serveur X il faut créer un fichier dans &quot;/usr/share/xgreeters/fake-greeter.desktop&quot; et y copier son contenu :
&lt;pre&gt;
[Desktop Entry]
Name=LightDM fake greeter
Comment=This runs no greeter at all, it should only be run from LightDM
Exec=sleep infinity
Type=Application
X-Ubuntu-Gettext-Domain=lightdm
&lt;/pre&gt;

Après tout cela nous allons créer un script qui permettra de créer (&quot;Xephyr-command.sh&quot;) et un autre pour placer les fenêtre à l'écran (&quot;Xephyr-greeter-setup.sh&quot;).
Tout d'abord il est nécessaire d'installer le petit utilitaire &quot;wmctrl&quot; avec
 # aptitude install wmctrl
===Xephyr-command.sh===
 Le contenu du fichier &quot;Xephyr-command.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -t, taille : Doit être de la forme 9999x9999, (dafaut = 1024x768)&quot;
  echo &quot;\t -s, sourie : /dev/input/[by-path|by-id]/...event-mouse&quot;
  echo &quot;\t -c, clavier : /dev/input/[by-path|by-id]/...event-kbd&quot;
  echo &quot;\t -l, layout : fr, es, en, ... (défaut = fr)&quot;
  echo &quot;\t -v, variant : fr, latin9, bepo, ... (défaut = &lt;vide&gt;)&quot;
  echo &quot;\t -P, Pilote : ephyr ou evdev (défaut = ephyr)&quot;
}

testExecutable() {
	XEPHYR=`whereis -b Xephyr | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
TAILLE=&quot;1024x768&quot;
SOURIE=
CLAVIER=
LAYOUT=&quot;fr&quot;
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
PILOTE=ephyr # Test = ephyr ; Prod = evdev

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XEPHYR&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;Xephyr : &quot;$XEPHYR
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:t:s:c:l:v:P:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		t|taille)
			TAILLE=&quot;$OPTARG&quot;
		;;

		s|sourie)
			SOURIE=$OPTARG
			if  ! [ -r $SOURIE ];then
				echo &quot;La sourie n'est pas accessible&quot;
				exit 3
			fi
		;;

		c|clavier)
			CLAVIER=$OPTARG
			if  ! [ -r $CLAVIER ];then
				echo &quot;Le clavier n'est pas accessible&quot;
				exit 4
			fi
		;;

		l|layout)
			LAYOUT=$OPTARG
		;;

		v|variant)
			VARIANT=$OPTARG
		;;

		P|Pilote)
			PILOTE=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variables d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Construction de la ligne d&quot;argument
OPTIONS=&quot;&quot;

if [ -n &quot;${TAILLE}&quot; ]; then
	OPTIONS=&quot; -screen ${TAILLE}&quot;
fi

if [ -n &quot;${CLAVIER}&quot; ]; then
	if [ -n &quot;${LAYOUT}&quot; ]; then
		OPTIONS=$OPTIONS&quot; -keybd $PILOTE,,device=${CLAVIER},xkbrules=evdev,xkbmodel=evdev,xkblayout=${LAYOUT}&quot;
		if [ -n &quot;${VARIANT}&quot; ]; then
			OPTIONS=$OPTIONS&quot;,xkbvariant=${VARIANT}&quot;
		fi
	fi
fi

if [ -n &quot;${SOURIE}&quot; ]; then
	OPTIONS=$OPTIONS&quot; -mouse $PILOTE,,device=${SOURIE}&quot;
fi

# Lancement de Xephyr en arrière plan
echo &quot;$XEPHYR -retro $OPTIONS :$POSTE&quot;
exec $XEPHYR -retro  $OPTIONS :$POSTE
&lt;/pre&gt;

Petite explication sur la dernière ligne. Le &quot;exec&quot; fait en sorte que ce soit le processus de Xephyr qui prend la place du script, donc il reprend le PID et tout ce qui va bien. Cela permet surtout que le signal USR1 que Xephyr lance au PPID, soit bien récupéré par LightDM et que ce dernier continue son fonctionnement normalement.

===Xephyr-greeter-setup.sh===
Le contenu du fichier &quot;Xephyr-greeter-setup.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p|--poste numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -d, --deplacement : de la forme 'x,y' (en pixel)&quot;
  echo &quot;\t -v, --vt : 7, 8, 9, 10, 11 (defaut = 7)&quot;
}

testExecutable() {
	XWININFO=`whereis -b xwininfo | cut -d' ' -f2`
	WMCTRL=`whereis -b wmctrl | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
DEPLACEMENT=
VT=7
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
ATTENTE=3 # temps en seconde avant de déclencher le &quot;chvt&quot; pour revenir sur le bon VT

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XWININFO&quot; -o -z &quot;$WMCTRL&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;xwininfo : &quot;$XWININFO
	echo &quot;wmctrl : &quot;$WMCTRL
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:d:v:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		d|deplacement)
			DEPLACEMENT=&quot;$OPTARG&quot;
		;;
	
		v|vt)
			VT=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Vieux Hack tout bancal pour revenir au bon VT sans patcher LightDM
(sleep $ATTENTE ; chvt $VT)&amp;

# Deplacement de la fenetre si besoin
if [ -n &quot;$DEPLACEMENT&quot; ]; then
	#On recherche l'ID de la fenêtre Xephyr
        XEP=`XAUTHORITY=/var/run/lightdm/root/:$XRACINE $XWININFO -root -children -all -display :$XRACINE | grep &quot;Xephyr on :$POSTE&quot; --max-count=1`;

	if [ -z &quot;$XEP&quot; ]; then
		echo &quot;fenêtre Xephyr non trouvé pour le poste $POSTE&quot;
		exit 5
	fi
    XEPHYR_WIN_ID=`echo ${XEP} | cut -d' ' -f1`;
    $WMCTRL 2&gt;&amp;1 -v -i -r ${XEPHYR_WIN_ID} -e 0,${DEPLACEMENT},-1,-1;
	if [ $? -ne 0 ]; then
		echo &quot;Erreur lors du déplacement de la fenêtre Xephyr pour le poste $POSTE&quot;
		exit 7
	fi
fi

# Mise en place des variables d'environnement pour le greeter (utile ?)
export DISPLAY=:$POSTE
export XAUTHORITY=/var/run/lightdm/root/:$POSTE
&lt;/pre&gt;
Petite explication concernant la ligne suivante
 (sleep $ATTENTE ; chvt $VT)&amp;
Comme je n'ai pas patché LightDM pour éviter le changement de VT et que Xephyr m'empêche de faire un Ctrl+Alt+7 (avec le driver evdev) pour revenir au bon VT, j'ai du mettre en place un automatisme. Certes c'est loin d'être parfait mais ça rempli correctement son office.

==Modification du système==
===Montage des périphériques USB===
On se rend assez vite compte que si l'on branche une clé USB elle n'apparait pas automatiquement sur le bureau et elle est encore moins &quot;montable&quot; par un utilisateur classique. Elle apparait bien dans la liste des périphériques accessibles (volet de gauche sur nautilus) mais il y a un problème de droit.
Un petit rappel de la chaine mis en jeu lorsque l'on branche une clé USB ou tout autre périphérique.
* Détection par le noyau de l'ajout d'un matériel
* Udev prend le relai et créé les périphériques block nécessaire dans /dev
* PolicyKit termine le travail en mettant en place les autorisations adéquate

Donc le blocage vient de ce dernier composant, il ne reconnait pas une session Xephyr comme &quot;active&quot; et donc refuse le montage de ce type de périphérique par l'utilisateur lambda. Pour passer au delà de cette limitation on va redéfinir la règle de montage, pour cela il faut aller dans le répertoire suivant :
 /etc/polkit-1/localauthority/50-local.d
Et y créer un fichier, &quot;10-udisk.pkla&quot; par exemple
&lt;pre&gt;
[Allow mounting from Xephyr]
Identity=*
Action=org.freedesktop.udisks.change;org.freedesktop.udisks.drive-detach;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.filesystem-unmount-others
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

Voilà, avec Gnome3 dans le volet de gauche de Nautilus on peux cliquer sur l'icone de la clé USB pour quelle se monte correctement, idem avec LXDE.
Je recommande de désactiver l'automontage des périphériques USB afin que l'utilisateur qui branche la clé puisse la monter sans interférence.

===Gestion de l'énergie===
De la même manière que précédemment, par défaut il est impossible d'éteindre l'ordinateur depuis la session graphique (hors LightDM).
Donc pour cela on créé un nouveau fichier (20-upower.pkla) dans :
 /etc/polkit-1/localauthority/50-local.d

&lt;pre&gt;
[Suspend/hibernate permissions]
Identity=*
Action=org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

===Gestion du son===
Par défaut Pulseaudio est lancé lors de l'identification d'un utilisateur, du coup il est le seul qui puisse utiliser la carte son. Pour palier a ce problème il faut rendre pulseaudio démon du système.
Pour cela il faut modifier plusieurs fichiers de configurations :
* /etc/default/pulseaudio
&lt;pre&gt;PULSEAUDIO_SYSTEM_START=1&lt;/pre&gt;

* /etc/pulse/daemon.conf
&lt;pre&gt;daemonize = yes
local-server-type = system&lt;/pre&gt;

* /etc/pulse/client.conf
&lt;pre&gt;autospawn = no&lt;/pre&gt;

* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot;
 usermod -aG pulse-access &lt;username&gt;

* On peux enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse

([http://askubuntu.com/questions/192522/how-do-i-configure-sound-with-pulseaudio-and-multiseat source] [http://disjunkt.com/jd/2010/en/multiseat-linux/multiseat-linux-system-wide-pulseaudio-for-routing-sounds-109/ source2])

====Modification des DE (Gnome, KDE, LXDE, ...)====
Par défaut les environnements graphique exécute Pulseaudio en espace utilisateur, ce qu'il ne faut plus faire puisqu'il est partagé, ce qui ne devrais plus être possible si vous avez enlever les utilisateurs des groupes. Donc il est nécessaire de désactiver cela avec l'outil de votre environnement de Bureau. Par exemple pour LXDE il s'agit de lxsession, si vous avez des problème pour cet environnement [http://wiki.lxde.org/en/Autostart cette page (et ses liens)] devrait vous aider

===Aller plus loin===
* Si l'on veut restreindre ce droit par utilisateur ou par groupe on modifie la ligne &quot;Identity&quot; comme il suit
 Identity=unix-user:toto;unix-group:plugdev
* Pour creuser un peu plus la configuration de ce système on peux aller voir [http://www.freedesktop.org/software/polkit/docs/0.105/pklocalauthority.8.html cette page] sur PolicyKit
* Il serait aussi intéressant de définir des ports USB réservés pour chaque siège, mais je ne sais pas encore comment gérer cela.
* Voir s'il est possible de dédier les voies arrière à un poste et les voies avant à un autre ...

==Conclusion==
Et voilà, tout est prêt pour le redémarrage et admirer les mires de login sur leur écran respectif.

===Avantages===
* Avec du matériel de récupération on peut facilement mettre en place cette solution peut coûteuse
* La satisfaction d'avoir un poste de travail exotique
* Permettre à une tierce personne de profiter de la puissance monstre des machines récente sans se priver de notre fauteuil favori
* Se sentir moins avec une/plusieurs personnes à coté de soi :-p

===Inconvénients===
* Accélération graphique fortement diminué
* Si on débranche les claviers/souries Xephyr ne sait pas les reconnaitre automatiquement au rebranchement. Il faut relancer Xephyr en se déconnectant ou relancer LightDM
* Un &quot;saut&quot; des 2 écrans lors de la déconnexion d'un postes, mais cela est dû à LightDM et son changment de VT intempestif.
* Surveillance de chaque mis à jour de Xorg pour ne pas avoir de surprise au redémarrage
* Recompilation nécessaire en cas de mise à jour majeur de Xorg
* Gestion des montages USB non optimale
* Les voyants du clavier (pavé numérique, Majuscule et arrêt défile) ne réagissent plus, mais la clavier réagit correctement.
* Dans l'espace de travail de certains logiciel (VLC, Gimp) la sourie peux avoir un affichage lacunaire. Par exemple sous GIMP elle n'est visible que lorsqu'on la déplace, avec VLS il y a un carré noir autour d'elle quand on la déplace le reste du temps elle disparait.


===Remerciement===
Un grand merci à ce site pour m'avoir prémaché le travail ... ce qui ne m'as pas empêché d'apporter quelques améliorations à sa solution.
http://beforeafterx.blogspot.fr/2012/08/configuration-of-ligthdm-12.html</text>
      <sha1>c86508h5bfiwo31p6pkjxx2lbip38fi</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5164</id>
      <parentid>5163</parentid>
      <timestamp>2013-05-14T12:16:46Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Montage des périphériques USB */</comment>
      <text xml:space="preserve" bytes="24172">Après avoir fait du [http://www.debian-fr.org/multiseat-plusieurs-utilisateurs-sur-1-pc-t6954.html#p188187 multiposte avec 2 CG], un changement de PC m'oblige à faire la même chose mais avec une seule carte. J'ai essayé de couvrir au maximum toutes les étapes de la mise en place de la solution.

----
==Choix des outils==
Tout d'abord le raisonnement pour le choix des outils à été le suivant.
==== Xorg ou Wayland ?====
La réponse a été rapide. Xorg clairement, Wayland est encore trop récent pour pouvoir le faire et aucun document ne traite pour l'instant de ce problème.

==== Xnest ou Xephyr ?====
Xephyr est largement plébiscité et Xnest semble tomber en désuétude. C'est par le développement de Tizen (ex-Meego) que Xephyr semble toujours actif et que de nouvelles fonctionnalités lui sont ajoutées. Intel s'en sert intensément et est énormément utilisé pour le développement d'application pour smartphone comme environnement de simulation. (http://www.phoronix.com/scan.php?page=news_item&amp;px=ODc1NQ).
Un souci avec Xephyr est que le support de evdev semble ne pas avoir été inclus dans les options de compilations. &quot;evdev&quot; permet de monopoliser les claviers et souris. Du coup il faut refaire le paquet soi-même.

==== Et la transition avec systemd ? ====
Il ne semble plus y avoir de problème particulier (http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org)

====Comment gérer 2 écran, 2 session avec une seule carte graphique ?====
Il faut savoir que Xephyr permet de se greffer sur n'importe quel serveur X afin d'afficher une autre session. Par exemple avec la commande &quot;Xephyr -query 127.0.0.1&quot; vous devez pouvoir vous connecter sur votre propre machine si le protocole &quot;XDMCP&quot; est activé sur votre &quot;DisplayManager&quot; (GDM, KDM, XDM, ...). Donc le but du jeu sera d'avoir un serveur X qui va &quot;supporter&quot; 2 fenêtres Xephyr. Ces deux dernières se verront affectées les claviers et les souris de manière exclusive.

====Et le DM ? Debian a adopté GDM(3) avec Gnome mais j'aimerais bien m'en passer.====
Avec GDM (celui de Gnome2) il existe un très bon tutoriel ici : http://netpatia.blogspot.fr/2009/06/multiseat-in-ubuntu-904.html 
Pour GDM3, le problème est que pour l'instant il ne reprend pas toutes les possibilitées de son ancienne version. 
https://live.gnome.org/GDM/ToDo
&quot;-- Allow per-display X Server commands 
		BrianCameron: The [server] and [server-foo] sections of the GDM configuration have been disabled. This means that users who depend on novel configurations which require special Xserver commands per-display is not available.&quot;

Donc bonne nouvelle, il fallait trouver une alternative en le nom de LightDM, qui est issu de Ubuntu ... 

===Prérequis===
Donc pour les pré-requis :
* Ajouter &quot;deb-src http://ftp.fr.debian.org/debian/ &lt;VersionDebian&gt; main contrib non-free&quot;
* Installer les paquage dpkg-dev, build-essential, devscripts, lightDM

==Reconstruction de Xephyr==
===Récupération des sources nécessaires===
On récupère toutes les sources du packet source xorg-server qui comprend Xephyr.

 $ apt-get source xserver-xephyr


Puis récupérer toutes les dépendances spécifique au paquet :

 $ apt-get build-dep xorg-server

Là il va télécharger un certain nombre de paquets de développement (&quot;-dev&quot;), ils sont marqués comme installés automatiquement, donc un deborphan devrait vous les enlever sans trop de problème. Sinon il existe cette commande pour être sûr qu'ils sont marqués en tant que &quot;installé automatiquement&quot;, puis un &quot;apt-get autoclean&quot; les supprimera.

===Reconfiguration===
Ensuite tout se passe dans le répertoire &quot;debian&quot;

 $ cd xorg-server-1.12.4/debian


On édite le fichier &quot;changlog&quot; pour monter de version le paquet que l'on va reconstruire. Il est possible de le faire en automatique avec la commande:

 debian/$ dch -n


L'option &quot;-n&quot; permet d'incrémenter le numéro de version de façon mineur, c'est à dire l'ajout de &quot;.1&quot; en fin de numéro de version.

Sinon pour le faire en manuel, il faut ajouter une ligne du type suivant au fichier:
&lt;pre&gt;
xorg-server (2:1.12.4-5.1) UNRELEASED; urgency=low

  * Non-maintainer upload.
  * ajout des paramètre pour Xephyr et evdev

 -- Vous &lt;vous@VotreMachine&gt;  Sun, 03 Mar 2013 22:21:32 +0100
&lt;/pre&gt;

Pour éviter de réinstaller tout Xorg avec le nouveau numéro de version il faut éditer le fichier &quot;debian/control&quot; et modifier la dépendance de Xephyr (ligne ~283). Pour cela il faut remplacer le 
&lt;pre&gt;
Depends :
  xserver-common (&gt;= ${source:Version})
&lt;/pre&gt;
Par :
&lt;pre&gt;
Depends :
  xserver-common (&gt;= 2:1.12.4-5)
&lt;/pre&gt;

Le numéro doit être en accord avec la version de votre Xorg actuellement installé sur votre machine. 
Sinon cette modification est directement possible dans le .deb, toujours dans le fichier &quot;DEBIAN/control&quot;. Pour cela il faut prendre le .deb que vous avez construit, le décompresser, modifier le fichier et faire la commande &quot;dpkg-deb -b &lt;nom du répertoire contenant les fichiers&gt;&quot;. Mais il est plus pratique de le faire avant.

Je ne vous conseille pas de mettre une numéro de version trop élevé car cela pourrait engendrer une incompatibilité avec les futurs versions de Xorg.

Ensuite nous allons modifier les options de compilation en éditant le fichier &quot;rules&quot;, c'est le Makefile de la construction du paquet.
Localisez &quot;confflags_main&quot; (ligne ~133) et ajoutez les lignes suivantes juste en dessous de &quot;--enable-kdrive&quot; (ligne ~156)

 --enable-kdrive-evdev \
 --enable-kdrive-mouse \
 --enable-kdrive-kbd \

===Recompilation===
Passons maintenant à la recompilation proprement dite, ressortez du répertoire debian et faites :
 $ fakeroot ./debian/rules binary

Et laissez la compilation et la création des paquets se faire ... cela peut prendre quelques minutes.

====Re-recompilation====
Si pour une raison il vous faut refaire entièrement la compilation il faut d'abord faire la commande suivante
 $ fakeroot ./debian/rules clean

Si c'est juste refaire les &quot;.deb&quot; (correction du numéro de dépendance, ...), alors cette commande suffit.
 $ fakeroot ./debian/rules binary-deb

===Installation du paquet obtenue===
Enfin pour installer votre paquet (qui se trouve dans le répertoire supérieur) il faut faire :
 #dpkg -i xserver-xephyr_1.12.4-5_i386.deb
Ou de manière graphique avec GDebi.
====Paquets déjà prêt====
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6_i386.deb.tar]]
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6.1_amd64.deb.tar]]

==Configuration de Xorg==
===Définition de l'existant===
Pour rappel le principe sera d'avoir une session X qui va héberger 2 sessions Xephyr qui serviront les différents sièges.
Tout d'abord nous allons faire un fichier de conf pour le serveur Xorg. Pour ne pas démarrer de rien on peut lancer la commande (en root) &quot;Xorg -configure&quot; qui génère le fichier &quot;xorg.conf.new&quot; dans &quot;/root&quot;. Ensuite on fait un petit &quot;xrandr&quot; pour identifier les sorties disponibles.
&lt;pre&gt;
$ xrandr

Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 593mm
&lt;/pre&gt;

&quot;DVI-0&quot; &amp; &quot;HDMI-0&quot; sont les 2 disponibles sur la machine. On peut aussi trouver du &quot;VGA-0&quot; ou &quot;LVDS&quot; pour les écrans de portables.

===Exemple de fichier de configuration===
Dans cet exemple on peut avoir un &quot;/etc/xorg.conf&quot; comme suivant :
&lt;pre&gt;
##################################################################
Section &quot;Monitor&quot;
	Identifier  &quot;HannsG&quot;
	Option      &quot;PreferredMode&quot; &quot;1920x1200&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
	Option		&quot;Primary&quot; &quot;true&quot;
EndSection

Section &quot;Monitor&quot;
	Identifier  &quot;Acer&quot;
	Option      &quot;PreferredMode&quot; &quot;1680x1050&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
EndSection

Section &quot;Device&quot;
	Identifier  &quot;card0&quot;
	Driver      &quot;radeon&quot;
	# Ici on associe les sorties video avec une section &quot;Monitor&quot;
	# On remarquera le &quot;Monitor&quot; devant le nom des sortie, c'est indispensable (cf : http://www.x.org/archive/current/doc/man/man5/xorg.conf.5.xhtml#heading12)
	Option      &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
	Option      &quot;Monitor-DVI-0&quot; &quot;Acer&quot;
EndSection

##################################################################

Section &quot;Screen&quot;
	Identifier  &quot;ecran1&quot;
	Device      &quot;card0&quot;
	Monitor     &quot;HansG&quot;
	DefaultDepth 24
	SubSection &quot;Display&quot;
 		Depth   24
		Virtual 3600 1200
	EndSubSection
EndSection

Section &quot;ServerLayout&quot;
	Identifier    &quot;dualscreen&quot;
	Screen      0  &quot;ecran1&quot;
EndSection
##################################################################
&lt;/pre&gt;

==Configuration de LightDM==
Nous allons maintenant regarder la configuration de LightDM d'un peu plus près. Le fichier de configuration par défaut expose toutes les options possibles du dit fichier. Nous allons garder le strict minimum
===lightdm.conf===
Pour cela éditons le fichier /etc/lightd/lightdm.conf

&lt;pre&gt;
[LightDM]
 greeter-user=root
 user-authority-in-system-dir=false

 [SeatDefaults]
 xserver-allow-tcp=false
 greeter-hide-users=false
 user-session=lightdm-xsession
 session-wrapper=/etc/X11/Xsession

 [Seat:1]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 1 -t 1680x1050 -P evdev -s /dev/input/by-id/usb-Logitech_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd -v bepo 
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 1
 greeter-session=lightdm-greeter

[Seat:2]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 2 -t 1920x1200 -P evdev -s /dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-path/platform-i8042-serio-0-event-kbd
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 2 -d 1680,0
 greeter-session=lightdm-greeter
&lt;/pre&gt;

Il y a plusieurs chose à savoir concernant le fonctionnement de LightDM afin de comprendre ce qui est fait.
-- La section &quot;SeatDefault&quot; est commune à tous les sièges définis après
-- Chaque &quot;Seat&quot; est exécuté dans l'ordre dans un VT différent et ce même si, dans notre cas, tout se passe dans le VT7 ([url=https://code.launchpad.net/~andrzejtp2010/lightdm/lightdm-trunk-xephyr-multiseat/+merge/120286]un patch[url] à été proposé pour palier à ce problème mais il n'a pas été accepté ... pour l'instant)
-- Chaque propriété de tous les &quot;Seat&quot; est lancée dans un ordre précis, d'abord tous les &quot;xserver-command&quot;, puis tous les &quot;greeter-setup-script&quot;, enfin tous les &quot;greeter-session&quot;. Si vous mettez d'autres propriétés elle seront exécutées suivant leur ordre pré-établi.
-- Si les &quot;greeter&quot; se terminent, lightDM coupe le &quot;xserver-command&quot; correspondant. De même si le &quot;xserver-command&quot; se termine le greeter est coupé.

Donc pour que tout se positionne correctement il faut
-- D'abord lancer le serveur X qui servira de support, ce qui est fait en le mettant en tant que premier &quot;Seat&quot;
-- Lancer les fenêtres Xephyr avec les optons qui vont bien, ce qui est fait avec le script &quot;Xephyr-command.sh&quot; et ses arguments
-- Simuler un &quot;greeter&quot; pour le &quot;Seat :0&quot; afin que le serveur X ne soit pas tué par lightDM, ce qui est fait avec le script &quot;fake-greeter&quot;
-- Exécuter un script qui va placer les fenêtre Xephyr si besoin et initialiser les variables d'environnement correctement, fait avec &quot;Xephyr-greeter-setup.sh&quot;
-- Exécuter les &quot;greeter&quot; dans les fenêtre Xephyr

===fake-greeter.desktop===
Pour le faux greeter du serveur X il faut créer un fichier dans &quot;/usr/share/xgreeters/fake-greeter.desktop&quot; et y copier son contenu :
&lt;pre&gt;
[Desktop Entry]
Name=LightDM fake greeter
Comment=This runs no greeter at all, it should only be run from LightDM
Exec=sleep infinity
Type=Application
X-Ubuntu-Gettext-Domain=lightdm
&lt;/pre&gt;

Après tout cela nous allons créer un script qui permettra de créer (&quot;Xephyr-command.sh&quot;) et un autre pour placer les fenêtre à l'écran (&quot;Xephyr-greeter-setup.sh&quot;).
Tout d'abord il est nécessaire d'installer le petit utilitaire &quot;wmctrl&quot; avec
 # aptitude install wmctrl
===Xephyr-command.sh===
 Le contenu du fichier &quot;Xephyr-command.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -t, taille : Doit être de la forme 9999x9999, (dafaut = 1024x768)&quot;
  echo &quot;\t -s, sourie : /dev/input/[by-path|by-id]/...event-mouse&quot;
  echo &quot;\t -c, clavier : /dev/input/[by-path|by-id]/...event-kbd&quot;
  echo &quot;\t -l, layout : fr, es, en, ... (défaut = fr)&quot;
  echo &quot;\t -v, variant : fr, latin9, bepo, ... (défaut = &lt;vide&gt;)&quot;
  echo &quot;\t -P, Pilote : ephyr ou evdev (défaut = ephyr)&quot;
}

testExecutable() {
	XEPHYR=`whereis -b Xephyr | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
TAILLE=&quot;1024x768&quot;
SOURIE=
CLAVIER=
LAYOUT=&quot;fr&quot;
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
PILOTE=ephyr # Test = ephyr ; Prod = evdev

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XEPHYR&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;Xephyr : &quot;$XEPHYR
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:t:s:c:l:v:P:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		t|taille)
			TAILLE=&quot;$OPTARG&quot;
		;;

		s|sourie)
			SOURIE=$OPTARG
			if  ! [ -r $SOURIE ];then
				echo &quot;La sourie n'est pas accessible&quot;
				exit 3
			fi
		;;

		c|clavier)
			CLAVIER=$OPTARG
			if  ! [ -r $CLAVIER ];then
				echo &quot;Le clavier n'est pas accessible&quot;
				exit 4
			fi
		;;

		l|layout)
			LAYOUT=$OPTARG
		;;

		v|variant)
			VARIANT=$OPTARG
		;;

		P|Pilote)
			PILOTE=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variables d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Construction de la ligne d&quot;argument
OPTIONS=&quot;&quot;

if [ -n &quot;${TAILLE}&quot; ]; then
	OPTIONS=&quot; -screen ${TAILLE}&quot;
fi

if [ -n &quot;${CLAVIER}&quot; ]; then
	if [ -n &quot;${LAYOUT}&quot; ]; then
		OPTIONS=$OPTIONS&quot; -keybd $PILOTE,,device=${CLAVIER},xkbrules=evdev,xkbmodel=evdev,xkblayout=${LAYOUT}&quot;
		if [ -n &quot;${VARIANT}&quot; ]; then
			OPTIONS=$OPTIONS&quot;,xkbvariant=${VARIANT}&quot;
		fi
	fi
fi

if [ -n &quot;${SOURIE}&quot; ]; then
	OPTIONS=$OPTIONS&quot; -mouse $PILOTE,,device=${SOURIE}&quot;
fi

# Lancement de Xephyr en arrière plan
echo &quot;$XEPHYR -retro $OPTIONS :$POSTE&quot;
exec $XEPHYR -retro  $OPTIONS :$POSTE
&lt;/pre&gt;

Petite explication sur la dernière ligne. Le &quot;exec&quot; fait en sorte que ce soit le processus de Xephyr qui prend la place du script, donc il reprend le PID et tout ce qui va bien. Cela permet surtout que le signal USR1 que Xephyr lance au PPID, soit bien récupéré par LightDM et que ce dernier continue son fonctionnement normalement.

===Xephyr-greeter-setup.sh===
Le contenu du fichier &quot;Xephyr-greeter-setup.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p|--poste numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -d, --deplacement : de la forme 'x,y' (en pixel)&quot;
  echo &quot;\t -v, --vt : 7, 8, 9, 10, 11 (defaut = 7)&quot;
}

testExecutable() {
	XWININFO=`whereis -b xwininfo | cut -d' ' -f2`
	WMCTRL=`whereis -b wmctrl | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
DEPLACEMENT=
VT=7
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
ATTENTE=3 # temps en seconde avant de déclencher le &quot;chvt&quot; pour revenir sur le bon VT

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XWININFO&quot; -o -z &quot;$WMCTRL&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;xwininfo : &quot;$XWININFO
	echo &quot;wmctrl : &quot;$WMCTRL
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:d:v:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		d|deplacement)
			DEPLACEMENT=&quot;$OPTARG&quot;
		;;
	
		v|vt)
			VT=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Vieux Hack tout bancal pour revenir au bon VT sans patcher LightDM
(sleep $ATTENTE ; chvt $VT)&amp;

# Deplacement de la fenetre si besoin
if [ -n &quot;$DEPLACEMENT&quot; ]; then
	#On recherche l'ID de la fenêtre Xephyr
        XEP=`XAUTHORITY=/var/run/lightdm/root/:$XRACINE $XWININFO -root -children -all -display :$XRACINE | grep &quot;Xephyr on :$POSTE&quot; --max-count=1`;

	if [ -z &quot;$XEP&quot; ]; then
		echo &quot;fenêtre Xephyr non trouvé pour le poste $POSTE&quot;
		exit 5
	fi
    XEPHYR_WIN_ID=`echo ${XEP} | cut -d' ' -f1`;
    $WMCTRL 2&gt;&amp;1 -v -i -r ${XEPHYR_WIN_ID} -e 0,${DEPLACEMENT},-1,-1;
	if [ $? -ne 0 ]; then
		echo &quot;Erreur lors du déplacement de la fenêtre Xephyr pour le poste $POSTE&quot;
		exit 7
	fi
fi

# Mise en place des variables d'environnement pour le greeter (utile ?)
export DISPLAY=:$POSTE
export XAUTHORITY=/var/run/lightdm/root/:$POSTE
&lt;/pre&gt;
Petite explication concernant la ligne suivante
 (sleep $ATTENTE ; chvt $VT)&amp;
Comme je n'ai pas patché LightDM pour éviter le changement de VT et que Xephyr m'empêche de faire un Ctrl+Alt+7 (avec le driver evdev) pour revenir au bon VT, j'ai du mettre en place un automatisme. Certes c'est loin d'être parfait mais ça rempli correctement son office.

==Modification du système==
===Montage des périphériques USB===
On se rend assez vite compte que si l'on branche une clé USB elle n'apparait pas automatiquement sur le bureau et elle est encore moins &quot;montable&quot; par un utilisateur classique. Elle apparait bien dans la liste des périphériques accessibles (volet de gauche sur nautilus) mais il y a un problème de droit.
Un petit rappel de la chaine mise en jeu lorsque l'on branche une clé USB ou tout autre périphérique.
* Détection par le noyau de l'ajout d'un matériel
* Udev prend le relais et créé les périphériques block nécessaires dans /dev
* PolicyKit termine le travail en mettant en place les autorisations adéquates

Donc le blocage vient de ce dernier composant, il ne reconnaît pas une session Xephyr comme &quot;active&quot; et donc refuse le montage de ce type de périphérique par l'utilisateur lambda. Pour passer au delà de cette limitation on va redéfinir la règle de montage, pour cela il faut aller dans le répertoire suivant :
 /etc/polkit-1/localauthority/50-local.d
Et y créer un fichier, &quot;10-udisk.pkla&quot; par exemple
&lt;pre&gt;
[Allow mounting from Xephyr]
Identity=*
Action=org.freedesktop.udisks.change;org.freedesktop.udisks.drive-detach;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.filesystem-unmount-others
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

Voilà, avec Gnome3 dans le volet de gauche de Nautilus on peut cliquer sur l'icône de la clé USB pour qu'elle se monte correctement, idem avec LXDE.
Je recommande de désactiver l'automontage des périphériques USB afin que l'utilisateur qui branche la clé puisse la monter sans interférence.

===Gestion de l'énergie===
De la même manière que précédemment, par défaut il est impossible d'éteindre l'ordinateur depuis la session graphique (hors LightDM).
Donc pour cela on créé un nouveau fichier (20-upower.pkla) dans :
 /etc/polkit-1/localauthority/50-local.d

&lt;pre&gt;
[Suspend/hibernate permissions]
Identity=*
Action=org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

===Gestion du son===
Par défaut Pulseaudio est lancé lors de l'identification d'un utilisateur, du coup il est le seul qui puisse utiliser la carte son. Pour palier a ce problème il faut rendre pulseaudio démon du système.
Pour cela il faut modifier plusieurs fichiers de configurations :
* /etc/default/pulseaudio
&lt;pre&gt;PULSEAUDIO_SYSTEM_START=1&lt;/pre&gt;

* /etc/pulse/daemon.conf
&lt;pre&gt;daemonize = yes
local-server-type = system&lt;/pre&gt;

* /etc/pulse/client.conf
&lt;pre&gt;autospawn = no&lt;/pre&gt;

* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot;
 usermod -aG pulse-access &lt;username&gt;

* On peux enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse

([http://askubuntu.com/questions/192522/how-do-i-configure-sound-with-pulseaudio-and-multiseat source] [http://disjunkt.com/jd/2010/en/multiseat-linux/multiseat-linux-system-wide-pulseaudio-for-routing-sounds-109/ source2])

====Modification des DE (Gnome, KDE, LXDE, ...)====
Par défaut les environnements graphique exécute Pulseaudio en espace utilisateur, ce qu'il ne faut plus faire puisqu'il est partagé, ce qui ne devrais plus être possible si vous avez enlever les utilisateurs des groupes. Donc il est nécessaire de désactiver cela avec l'outil de votre environnement de Bureau. Par exemple pour LXDE il s'agit de lxsession, si vous avez des problème pour cet environnement [http://wiki.lxde.org/en/Autostart cette page (et ses liens)] devrait vous aider

===Aller plus loin===
* Si l'on veut restreindre ce droit par utilisateur ou par groupe on modifie la ligne &quot;Identity&quot; comme il suit
 Identity=unix-user:toto;unix-group:plugdev
* Pour creuser un peu plus la configuration de ce système on peux aller voir [http://www.freedesktop.org/software/polkit/docs/0.105/pklocalauthority.8.html cette page] sur PolicyKit
* Il serait aussi intéressant de définir des ports USB réservés pour chaque siège, mais je ne sais pas encore comment gérer cela.
* Voir s'il est possible de dédier les voies arrière à un poste et les voies avant à un autre ...

==Conclusion==
Et voilà, tout est prêt pour le redémarrage et admirer les mires de login sur leur écran respectif.

===Avantages===
* Avec du matériel de récupération on peut facilement mettre en place cette solution peut coûteuse
* La satisfaction d'avoir un poste de travail exotique
* Permettre à une tierce personne de profiter de la puissance monstre des machines récente sans se priver de notre fauteuil favori
* Se sentir moins avec une/plusieurs personnes à coté de soi :-p

===Inconvénients===
* Accélération graphique fortement diminué
* Si on débranche les claviers/souries Xephyr ne sait pas les reconnaitre automatiquement au rebranchement. Il faut relancer Xephyr en se déconnectant ou relancer LightDM
* Un &quot;saut&quot; des 2 écrans lors de la déconnexion d'un postes, mais cela est dû à LightDM et son changment de VT intempestif.
* Surveillance de chaque mis à jour de Xorg pour ne pas avoir de surprise au redémarrage
* Recompilation nécessaire en cas de mise à jour majeur de Xorg
* Gestion des montages USB non optimale
* Les voyants du clavier (pavé numérique, Majuscule et arrêt défile) ne réagissent plus, mais la clavier réagit correctement.
* Dans l'espace de travail de certains logiciel (VLC, Gimp) la sourie peux avoir un affichage lacunaire. Par exemple sous GIMP elle n'est visible que lorsqu'on la déplace, avec VLS il y a un carré noir autour d'elle quand on la déplace le reste du temps elle disparait.


===Remerciement===
Un grand merci à ce site pour m'avoir prémaché le travail ... ce qui ne m'as pas empêché d'apporter quelques améliorations à sa solution.
http://beforeafterx.blogspot.fr/2012/08/configuration-of-ligthdm-12.html</text>
      <sha1>68g40q0y6ori0o7bemru67rnpvse1dz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5165</id>
      <parentid>5164</parentid>
      <timestamp>2013-05-14T12:19:33Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Gestion du son */</comment>
      <text xml:space="preserve" bytes="24175">Après avoir fait du [http://www.debian-fr.org/multiseat-plusieurs-utilisateurs-sur-1-pc-t6954.html#p188187 multiposte avec 2 CG], un changement de PC m'oblige à faire la même chose mais avec une seule carte. J'ai essayé de couvrir au maximum toutes les étapes de la mise en place de la solution.

----
==Choix des outils==
Tout d'abord le raisonnement pour le choix des outils à été le suivant.
==== Xorg ou Wayland ?====
La réponse a été rapide. Xorg clairement, Wayland est encore trop récent pour pouvoir le faire et aucun document ne traite pour l'instant de ce problème.

==== Xnest ou Xephyr ?====
Xephyr est largement plébiscité et Xnest semble tomber en désuétude. C'est par le développement de Tizen (ex-Meego) que Xephyr semble toujours actif et que de nouvelles fonctionnalités lui sont ajoutées. Intel s'en sert intensément et est énormément utilisé pour le développement d'application pour smartphone comme environnement de simulation. (http://www.phoronix.com/scan.php?page=news_item&amp;px=ODc1NQ).
Un souci avec Xephyr est que le support de evdev semble ne pas avoir été inclus dans les options de compilations. &quot;evdev&quot; permet de monopoliser les claviers et souris. Du coup il faut refaire le paquet soi-même.

==== Et la transition avec systemd ? ====
Il ne semble plus y avoir de problème particulier (http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org)

====Comment gérer 2 écran, 2 session avec une seule carte graphique ?====
Il faut savoir que Xephyr permet de se greffer sur n'importe quel serveur X afin d'afficher une autre session. Par exemple avec la commande &quot;Xephyr -query 127.0.0.1&quot; vous devez pouvoir vous connecter sur votre propre machine si le protocole &quot;XDMCP&quot; est activé sur votre &quot;DisplayManager&quot; (GDM, KDM, XDM, ...). Donc le but du jeu sera d'avoir un serveur X qui va &quot;supporter&quot; 2 fenêtres Xephyr. Ces deux dernières se verront affectées les claviers et les souris de manière exclusive.

====Et le DM ? Debian a adopté GDM(3) avec Gnome mais j'aimerais bien m'en passer.====
Avec GDM (celui de Gnome2) il existe un très bon tutoriel ici : http://netpatia.blogspot.fr/2009/06/multiseat-in-ubuntu-904.html 
Pour GDM3, le problème est que pour l'instant il ne reprend pas toutes les possibilitées de son ancienne version. 
https://live.gnome.org/GDM/ToDo
&quot;-- Allow per-display X Server commands 
		BrianCameron: The [server] and [server-foo] sections of the GDM configuration have been disabled. This means that users who depend on novel configurations which require special Xserver commands per-display is not available.&quot;

Donc bonne nouvelle, il fallait trouver une alternative en le nom de LightDM, qui est issu de Ubuntu ... 

===Prérequis===
Donc pour les pré-requis :
* Ajouter &quot;deb-src http://ftp.fr.debian.org/debian/ &lt;VersionDebian&gt; main contrib non-free&quot;
* Installer les paquage dpkg-dev, build-essential, devscripts, lightDM

==Reconstruction de Xephyr==
===Récupération des sources nécessaires===
On récupère toutes les sources du packet source xorg-server qui comprend Xephyr.

 $ apt-get source xserver-xephyr


Puis récupérer toutes les dépendances spécifique au paquet :

 $ apt-get build-dep xorg-server

Là il va télécharger un certain nombre de paquets de développement (&quot;-dev&quot;), ils sont marqués comme installés automatiquement, donc un deborphan devrait vous les enlever sans trop de problème. Sinon il existe cette commande pour être sûr qu'ils sont marqués en tant que &quot;installé automatiquement&quot;, puis un &quot;apt-get autoclean&quot; les supprimera.

===Reconfiguration===
Ensuite tout se passe dans le répertoire &quot;debian&quot;

 $ cd xorg-server-1.12.4/debian


On édite le fichier &quot;changlog&quot; pour monter de version le paquet que l'on va reconstruire. Il est possible de le faire en automatique avec la commande:

 debian/$ dch -n


L'option &quot;-n&quot; permet d'incrémenter le numéro de version de façon mineur, c'est à dire l'ajout de &quot;.1&quot; en fin de numéro de version.

Sinon pour le faire en manuel, il faut ajouter une ligne du type suivant au fichier:
&lt;pre&gt;
xorg-server (2:1.12.4-5.1) UNRELEASED; urgency=low

  * Non-maintainer upload.
  * ajout des paramètre pour Xephyr et evdev

 -- Vous &lt;vous@VotreMachine&gt;  Sun, 03 Mar 2013 22:21:32 +0100
&lt;/pre&gt;

Pour éviter de réinstaller tout Xorg avec le nouveau numéro de version il faut éditer le fichier &quot;debian/control&quot; et modifier la dépendance de Xephyr (ligne ~283). Pour cela il faut remplacer le 
&lt;pre&gt;
Depends :
  xserver-common (&gt;= ${source:Version})
&lt;/pre&gt;
Par :
&lt;pre&gt;
Depends :
  xserver-common (&gt;= 2:1.12.4-5)
&lt;/pre&gt;

Le numéro doit être en accord avec la version de votre Xorg actuellement installé sur votre machine. 
Sinon cette modification est directement possible dans le .deb, toujours dans le fichier &quot;DEBIAN/control&quot;. Pour cela il faut prendre le .deb que vous avez construit, le décompresser, modifier le fichier et faire la commande &quot;dpkg-deb -b &lt;nom du répertoire contenant les fichiers&gt;&quot;. Mais il est plus pratique de le faire avant.

Je ne vous conseille pas de mettre une numéro de version trop élevé car cela pourrait engendrer une incompatibilité avec les futurs versions de Xorg.

Ensuite nous allons modifier les options de compilation en éditant le fichier &quot;rules&quot;, c'est le Makefile de la construction du paquet.
Localisez &quot;confflags_main&quot; (ligne ~133) et ajoutez les lignes suivantes juste en dessous de &quot;--enable-kdrive&quot; (ligne ~156)

 --enable-kdrive-evdev \
 --enable-kdrive-mouse \
 --enable-kdrive-kbd \

===Recompilation===
Passons maintenant à la recompilation proprement dite, ressortez du répertoire debian et faites :
 $ fakeroot ./debian/rules binary

Et laissez la compilation et la création des paquets se faire ... cela peut prendre quelques minutes.

====Re-recompilation====
Si pour une raison il vous faut refaire entièrement la compilation il faut d'abord faire la commande suivante
 $ fakeroot ./debian/rules clean

Si c'est juste refaire les &quot;.deb&quot; (correction du numéro de dépendance, ...), alors cette commande suffit.
 $ fakeroot ./debian/rules binary-deb

===Installation du paquet obtenue===
Enfin pour installer votre paquet (qui se trouve dans le répertoire supérieur) il faut faire :
 #dpkg -i xserver-xephyr_1.12.4-5_i386.deb
Ou de manière graphique avec GDebi.
====Paquets déjà prêt====
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6_i386.deb.tar]]
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6.1_amd64.deb.tar]]

==Configuration de Xorg==
===Définition de l'existant===
Pour rappel le principe sera d'avoir une session X qui va héberger 2 sessions Xephyr qui serviront les différents sièges.
Tout d'abord nous allons faire un fichier de conf pour le serveur Xorg. Pour ne pas démarrer de rien on peut lancer la commande (en root) &quot;Xorg -configure&quot; qui génère le fichier &quot;xorg.conf.new&quot; dans &quot;/root&quot;. Ensuite on fait un petit &quot;xrandr&quot; pour identifier les sorties disponibles.
&lt;pre&gt;
$ xrandr

Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 593mm
&lt;/pre&gt;

&quot;DVI-0&quot; &amp; &quot;HDMI-0&quot; sont les 2 disponibles sur la machine. On peut aussi trouver du &quot;VGA-0&quot; ou &quot;LVDS&quot; pour les écrans de portables.

===Exemple de fichier de configuration===
Dans cet exemple on peut avoir un &quot;/etc/xorg.conf&quot; comme suivant :
&lt;pre&gt;
##################################################################
Section &quot;Monitor&quot;
	Identifier  &quot;HannsG&quot;
	Option      &quot;PreferredMode&quot; &quot;1920x1200&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
	Option		&quot;Primary&quot; &quot;true&quot;
EndSection

Section &quot;Monitor&quot;
	Identifier  &quot;Acer&quot;
	Option      &quot;PreferredMode&quot; &quot;1680x1050&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
EndSection

Section &quot;Device&quot;
	Identifier  &quot;card0&quot;
	Driver      &quot;radeon&quot;
	# Ici on associe les sorties video avec une section &quot;Monitor&quot;
	# On remarquera le &quot;Monitor&quot; devant le nom des sortie, c'est indispensable (cf : http://www.x.org/archive/current/doc/man/man5/xorg.conf.5.xhtml#heading12)
	Option      &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
	Option      &quot;Monitor-DVI-0&quot; &quot;Acer&quot;
EndSection

##################################################################

Section &quot;Screen&quot;
	Identifier  &quot;ecran1&quot;
	Device      &quot;card0&quot;
	Monitor     &quot;HansG&quot;
	DefaultDepth 24
	SubSection &quot;Display&quot;
 		Depth   24
		Virtual 3600 1200
	EndSubSection
EndSection

Section &quot;ServerLayout&quot;
	Identifier    &quot;dualscreen&quot;
	Screen      0  &quot;ecran1&quot;
EndSection
##################################################################
&lt;/pre&gt;

==Configuration de LightDM==
Nous allons maintenant regarder la configuration de LightDM d'un peu plus près. Le fichier de configuration par défaut expose toutes les options possibles du dit fichier. Nous allons garder le strict minimum
===lightdm.conf===
Pour cela éditons le fichier /etc/lightd/lightdm.conf

&lt;pre&gt;
[LightDM]
 greeter-user=root
 user-authority-in-system-dir=false

 [SeatDefaults]
 xserver-allow-tcp=false
 greeter-hide-users=false
 user-session=lightdm-xsession
 session-wrapper=/etc/X11/Xsession

 [Seat:1]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 1 -t 1680x1050 -P evdev -s /dev/input/by-id/usb-Logitech_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd -v bepo 
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 1
 greeter-session=lightdm-greeter

[Seat:2]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 2 -t 1920x1200 -P evdev -s /dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-path/platform-i8042-serio-0-event-kbd
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 2 -d 1680,0
 greeter-session=lightdm-greeter
&lt;/pre&gt;

Il y a plusieurs chose à savoir concernant le fonctionnement de LightDM afin de comprendre ce qui est fait.
-- La section &quot;SeatDefault&quot; est commune à tous les sièges définis après
-- Chaque &quot;Seat&quot; est exécuté dans l'ordre dans un VT différent et ce même si, dans notre cas, tout se passe dans le VT7 ([url=https://code.launchpad.net/~andrzejtp2010/lightdm/lightdm-trunk-xephyr-multiseat/+merge/120286]un patch[url] à été proposé pour palier à ce problème mais il n'a pas été accepté ... pour l'instant)
-- Chaque propriété de tous les &quot;Seat&quot; est lancée dans un ordre précis, d'abord tous les &quot;xserver-command&quot;, puis tous les &quot;greeter-setup-script&quot;, enfin tous les &quot;greeter-session&quot;. Si vous mettez d'autres propriétés elle seront exécutées suivant leur ordre pré-établi.
-- Si les &quot;greeter&quot; se terminent, lightDM coupe le &quot;xserver-command&quot; correspondant. De même si le &quot;xserver-command&quot; se termine le greeter est coupé.

Donc pour que tout se positionne correctement il faut
-- D'abord lancer le serveur X qui servira de support, ce qui est fait en le mettant en tant que premier &quot;Seat&quot;
-- Lancer les fenêtres Xephyr avec les optons qui vont bien, ce qui est fait avec le script &quot;Xephyr-command.sh&quot; et ses arguments
-- Simuler un &quot;greeter&quot; pour le &quot;Seat :0&quot; afin que le serveur X ne soit pas tué par lightDM, ce qui est fait avec le script &quot;fake-greeter&quot;
-- Exécuter un script qui va placer les fenêtre Xephyr si besoin et initialiser les variables d'environnement correctement, fait avec &quot;Xephyr-greeter-setup.sh&quot;
-- Exécuter les &quot;greeter&quot; dans les fenêtre Xephyr

===fake-greeter.desktop===
Pour le faux greeter du serveur X il faut créer un fichier dans &quot;/usr/share/xgreeters/fake-greeter.desktop&quot; et y copier son contenu :
&lt;pre&gt;
[Desktop Entry]
Name=LightDM fake greeter
Comment=This runs no greeter at all, it should only be run from LightDM
Exec=sleep infinity
Type=Application
X-Ubuntu-Gettext-Domain=lightdm
&lt;/pre&gt;

Après tout cela nous allons créer un script qui permettra de créer (&quot;Xephyr-command.sh&quot;) et un autre pour placer les fenêtre à l'écran (&quot;Xephyr-greeter-setup.sh&quot;).
Tout d'abord il est nécessaire d'installer le petit utilitaire &quot;wmctrl&quot; avec
 # aptitude install wmctrl
===Xephyr-command.sh===
 Le contenu du fichier &quot;Xephyr-command.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -t, taille : Doit être de la forme 9999x9999, (dafaut = 1024x768)&quot;
  echo &quot;\t -s, sourie : /dev/input/[by-path|by-id]/...event-mouse&quot;
  echo &quot;\t -c, clavier : /dev/input/[by-path|by-id]/...event-kbd&quot;
  echo &quot;\t -l, layout : fr, es, en, ... (défaut = fr)&quot;
  echo &quot;\t -v, variant : fr, latin9, bepo, ... (défaut = &lt;vide&gt;)&quot;
  echo &quot;\t -P, Pilote : ephyr ou evdev (défaut = ephyr)&quot;
}

testExecutable() {
	XEPHYR=`whereis -b Xephyr | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
TAILLE=&quot;1024x768&quot;
SOURIE=
CLAVIER=
LAYOUT=&quot;fr&quot;
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
PILOTE=ephyr # Test = ephyr ; Prod = evdev

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XEPHYR&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;Xephyr : &quot;$XEPHYR
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:t:s:c:l:v:P:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		t|taille)
			TAILLE=&quot;$OPTARG&quot;
		;;

		s|sourie)
			SOURIE=$OPTARG
			if  ! [ -r $SOURIE ];then
				echo &quot;La sourie n'est pas accessible&quot;
				exit 3
			fi
		;;

		c|clavier)
			CLAVIER=$OPTARG
			if  ! [ -r $CLAVIER ];then
				echo &quot;Le clavier n'est pas accessible&quot;
				exit 4
			fi
		;;

		l|layout)
			LAYOUT=$OPTARG
		;;

		v|variant)
			VARIANT=$OPTARG
		;;

		P|Pilote)
			PILOTE=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variables d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Construction de la ligne d&quot;argument
OPTIONS=&quot;&quot;

if [ -n &quot;${TAILLE}&quot; ]; then
	OPTIONS=&quot; -screen ${TAILLE}&quot;
fi

if [ -n &quot;${CLAVIER}&quot; ]; then
	if [ -n &quot;${LAYOUT}&quot; ]; then
		OPTIONS=$OPTIONS&quot; -keybd $PILOTE,,device=${CLAVIER},xkbrules=evdev,xkbmodel=evdev,xkblayout=${LAYOUT}&quot;
		if [ -n &quot;${VARIANT}&quot; ]; then
			OPTIONS=$OPTIONS&quot;,xkbvariant=${VARIANT}&quot;
		fi
	fi
fi

if [ -n &quot;${SOURIE}&quot; ]; then
	OPTIONS=$OPTIONS&quot; -mouse $PILOTE,,device=${SOURIE}&quot;
fi

# Lancement de Xephyr en arrière plan
echo &quot;$XEPHYR -retro $OPTIONS :$POSTE&quot;
exec $XEPHYR -retro  $OPTIONS :$POSTE
&lt;/pre&gt;

Petite explication sur la dernière ligne. Le &quot;exec&quot; fait en sorte que ce soit le processus de Xephyr qui prend la place du script, donc il reprend le PID et tout ce qui va bien. Cela permet surtout que le signal USR1 que Xephyr lance au PPID, soit bien récupéré par LightDM et que ce dernier continue son fonctionnement normalement.

===Xephyr-greeter-setup.sh===
Le contenu du fichier &quot;Xephyr-greeter-setup.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p|--poste numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -d, --deplacement : de la forme 'x,y' (en pixel)&quot;
  echo &quot;\t -v, --vt : 7, 8, 9, 10, 11 (defaut = 7)&quot;
}

testExecutable() {
	XWININFO=`whereis -b xwininfo | cut -d' ' -f2`
	WMCTRL=`whereis -b wmctrl | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
DEPLACEMENT=
VT=7
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
ATTENTE=3 # temps en seconde avant de déclencher le &quot;chvt&quot; pour revenir sur le bon VT

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XWININFO&quot; -o -z &quot;$WMCTRL&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;xwininfo : &quot;$XWININFO
	echo &quot;wmctrl : &quot;$WMCTRL
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:d:v:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		d|deplacement)
			DEPLACEMENT=&quot;$OPTARG&quot;
		;;
	
		v|vt)
			VT=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Vieux Hack tout bancal pour revenir au bon VT sans patcher LightDM
(sleep $ATTENTE ; chvt $VT)&amp;

# Deplacement de la fenetre si besoin
if [ -n &quot;$DEPLACEMENT&quot; ]; then
	#On recherche l'ID de la fenêtre Xephyr
        XEP=`XAUTHORITY=/var/run/lightdm/root/:$XRACINE $XWININFO -root -children -all -display :$XRACINE | grep &quot;Xephyr on :$POSTE&quot; --max-count=1`;

	if [ -z &quot;$XEP&quot; ]; then
		echo &quot;fenêtre Xephyr non trouvé pour le poste $POSTE&quot;
		exit 5
	fi
    XEPHYR_WIN_ID=`echo ${XEP} | cut -d' ' -f1`;
    $WMCTRL 2&gt;&amp;1 -v -i -r ${XEPHYR_WIN_ID} -e 0,${DEPLACEMENT},-1,-1;
	if [ $? -ne 0 ]; then
		echo &quot;Erreur lors du déplacement de la fenêtre Xephyr pour le poste $POSTE&quot;
		exit 7
	fi
fi

# Mise en place des variables d'environnement pour le greeter (utile ?)
export DISPLAY=:$POSTE
export XAUTHORITY=/var/run/lightdm/root/:$POSTE
&lt;/pre&gt;
Petite explication concernant la ligne suivante
 (sleep $ATTENTE ; chvt $VT)&amp;
Comme je n'ai pas patché LightDM pour éviter le changement de VT et que Xephyr m'empêche de faire un Ctrl+Alt+7 (avec le driver evdev) pour revenir au bon VT, j'ai du mettre en place un automatisme. Certes c'est loin d'être parfait mais ça rempli correctement son office.

==Modification du système==
===Montage des périphériques USB===
On se rend assez vite compte que si l'on branche une clé USB elle n'apparait pas automatiquement sur le bureau et elle est encore moins &quot;montable&quot; par un utilisateur classique. Elle apparait bien dans la liste des périphériques accessibles (volet de gauche sur nautilus) mais il y a un problème de droit.
Un petit rappel de la chaine mise en jeu lorsque l'on branche une clé USB ou tout autre périphérique.
* Détection par le noyau de l'ajout d'un matériel
* Udev prend le relais et créé les périphériques block nécessaires dans /dev
* PolicyKit termine le travail en mettant en place les autorisations adéquates

Donc le blocage vient de ce dernier composant, il ne reconnaît pas une session Xephyr comme &quot;active&quot; et donc refuse le montage de ce type de périphérique par l'utilisateur lambda. Pour passer au delà de cette limitation on va redéfinir la règle de montage, pour cela il faut aller dans le répertoire suivant :
 /etc/polkit-1/localauthority/50-local.d
Et y créer un fichier, &quot;10-udisk.pkla&quot; par exemple
&lt;pre&gt;
[Allow mounting from Xephyr]
Identity=*
Action=org.freedesktop.udisks.change;org.freedesktop.udisks.drive-detach;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.filesystem-unmount-others
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

Voilà, avec Gnome3 dans le volet de gauche de Nautilus on peut cliquer sur l'icône de la clé USB pour qu'elle se monte correctement, idem avec LXDE.
Je recommande de désactiver l'automontage des périphériques USB afin que l'utilisateur qui branche la clé puisse la monter sans interférence.

===Gestion de l'énergie===
De la même manière que précédemment, par défaut il est impossible d'éteindre l'ordinateur depuis la session graphique (hors LightDM).
Donc pour cela on créé un nouveau fichier (20-upower.pkla) dans :
 /etc/polkit-1/localauthority/50-local.d

&lt;pre&gt;
[Suspend/hibernate permissions]
Identity=*
Action=org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

===Gestion du son===
Par défaut Pulseaudio est lancé lors de l'identification d'un utilisateur, du coup il est le seul qui puisse utiliser la carte son. Pour pallier à ce problème il faut rendre pulseaudio démon du système.
Pour cela il faut modifier plusieurs fichiers de configuration :
* /etc/default/pulseaudio
&lt;pre&gt;PULSEAUDIO_SYSTEM_START=1&lt;/pre&gt;

* /etc/pulse/daemon.conf
&lt;pre&gt;daemonize = yes
local-server-type = system&lt;/pre&gt;

* /etc/pulse/client.conf
&lt;pre&gt;autospawn = no&lt;/pre&gt;

* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot;
 usermod -aG pulse-access &lt;username&gt;

* On peut enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse

([http://askubuntu.com/questions/192522/how-do-i-configure-sound-with-pulseaudio-and-multiseat source] [http://disjunkt.com/jd/2010/en/multiseat-linux/multiseat-linux-system-wide-pulseaudio-for-routing-sounds-109/ source2])

====Modification des DE (Gnome, KDE, LXDE, ...)====
Par défaut les environnements graphique exécutent Pulseaudio en espace utilisateur, ce qu'il ne faut plus faire puisqu'il est partagé, ce qui ne devrait plus être possible si vous avez enlevé les utilisateurs des groupes. Donc il est nécessaire de désactiver cela avec l'outil de votre environnement de Bureau. Par exemple pour LXDE il s'agit de lxsession, si vous avez des problème pour cet environnement [http://wiki.lxde.org/en/Autostart cette page (et ses liens)] devrait vous aider

===Aller plus loin===
* Si l'on veut restreindre ce droit par utilisateur ou par groupe on modifie la ligne &quot;Identity&quot; comme il suit
 Identity=unix-user:toto;unix-group:plugdev
* Pour creuser un peu plus la configuration de ce système on peux aller voir [http://www.freedesktop.org/software/polkit/docs/0.105/pklocalauthority.8.html cette page] sur PolicyKit
* Il serait aussi intéressant de définir des ports USB réservés pour chaque siège, mais je ne sais pas encore comment gérer cela.
* Voir s'il est possible de dédier les voies arrière à un poste et les voies avant à un autre ...

==Conclusion==
Et voilà, tout est prêt pour le redémarrage et admirer les mires de login sur leur écran respectif.

===Avantages===
* Avec du matériel de récupération on peut facilement mettre en place cette solution peut coûteuse
* La satisfaction d'avoir un poste de travail exotique
* Permettre à une tierce personne de profiter de la puissance monstre des machines récente sans se priver de notre fauteuil favori
* Se sentir moins avec une/plusieurs personnes à coté de soi :-p

===Inconvénients===
* Accélération graphique fortement diminué
* Si on débranche les claviers/souries Xephyr ne sait pas les reconnaitre automatiquement au rebranchement. Il faut relancer Xephyr en se déconnectant ou relancer LightDM
* Un &quot;saut&quot; des 2 écrans lors de la déconnexion d'un postes, mais cela est dû à LightDM et son changment de VT intempestif.
* Surveillance de chaque mis à jour de Xorg pour ne pas avoir de surprise au redémarrage
* Recompilation nécessaire en cas de mise à jour majeur de Xorg
* Gestion des montages USB non optimale
* Les voyants du clavier (pavé numérique, Majuscule et arrêt défile) ne réagissent plus, mais la clavier réagit correctement.
* Dans l'espace de travail de certains logiciel (VLC, Gimp) la sourie peux avoir un affichage lacunaire. Par exemple sous GIMP elle n'est visible que lorsqu'on la déplace, avec VLS il y a un carré noir autour d'elle quand on la déplace le reste du temps elle disparait.


===Remerciement===
Un grand merci à ce site pour m'avoir prémaché le travail ... ce qui ne m'as pas empêché d'apporter quelques améliorations à sa solution.
http://beforeafterx.blogspot.fr/2012/08/configuration-of-ligthdm-12.html</text>
      <sha1>eees92hs7qzcmawphxjfa9njdtx6d9o</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5166</id>
      <parentid>5165</parentid>
      <timestamp>2013-05-14T12:21:05Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Avantages */</comment>
      <text xml:space="preserve" bytes="24180">Après avoir fait du [http://www.debian-fr.org/multiseat-plusieurs-utilisateurs-sur-1-pc-t6954.html#p188187 multiposte avec 2 CG], un changement de PC m'oblige à faire la même chose mais avec une seule carte. J'ai essayé de couvrir au maximum toutes les étapes de la mise en place de la solution.

----
==Choix des outils==
Tout d'abord le raisonnement pour le choix des outils à été le suivant.
==== Xorg ou Wayland ?====
La réponse a été rapide. Xorg clairement, Wayland est encore trop récent pour pouvoir le faire et aucun document ne traite pour l'instant de ce problème.

==== Xnest ou Xephyr ?====
Xephyr est largement plébiscité et Xnest semble tomber en désuétude. C'est par le développement de Tizen (ex-Meego) que Xephyr semble toujours actif et que de nouvelles fonctionnalités lui sont ajoutées. Intel s'en sert intensément et est énormément utilisé pour le développement d'application pour smartphone comme environnement de simulation. (http://www.phoronix.com/scan.php?page=news_item&amp;px=ODc1NQ).
Un souci avec Xephyr est que le support de evdev semble ne pas avoir été inclus dans les options de compilations. &quot;evdev&quot; permet de monopoliser les claviers et souris. Du coup il faut refaire le paquet soi-même.

==== Et la transition avec systemd ? ====
Il ne semble plus y avoir de problème particulier (http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org)

====Comment gérer 2 écran, 2 session avec une seule carte graphique ?====
Il faut savoir que Xephyr permet de se greffer sur n'importe quel serveur X afin d'afficher une autre session. Par exemple avec la commande &quot;Xephyr -query 127.0.0.1&quot; vous devez pouvoir vous connecter sur votre propre machine si le protocole &quot;XDMCP&quot; est activé sur votre &quot;DisplayManager&quot; (GDM, KDM, XDM, ...). Donc le but du jeu sera d'avoir un serveur X qui va &quot;supporter&quot; 2 fenêtres Xephyr. Ces deux dernières se verront affectées les claviers et les souris de manière exclusive.

====Et le DM ? Debian a adopté GDM(3) avec Gnome mais j'aimerais bien m'en passer.====
Avec GDM (celui de Gnome2) il existe un très bon tutoriel ici : http://netpatia.blogspot.fr/2009/06/multiseat-in-ubuntu-904.html 
Pour GDM3, le problème est que pour l'instant il ne reprend pas toutes les possibilitées de son ancienne version. 
https://live.gnome.org/GDM/ToDo
&quot;-- Allow per-display X Server commands 
		BrianCameron: The [server] and [server-foo] sections of the GDM configuration have been disabled. This means that users who depend on novel configurations which require special Xserver commands per-display is not available.&quot;

Donc bonne nouvelle, il fallait trouver une alternative en le nom de LightDM, qui est issu de Ubuntu ... 

===Prérequis===
Donc pour les pré-requis :
* Ajouter &quot;deb-src http://ftp.fr.debian.org/debian/ &lt;VersionDebian&gt; main contrib non-free&quot;
* Installer les paquage dpkg-dev, build-essential, devscripts, lightDM

==Reconstruction de Xephyr==
===Récupération des sources nécessaires===
On récupère toutes les sources du packet source xorg-server qui comprend Xephyr.

 $ apt-get source xserver-xephyr


Puis récupérer toutes les dépendances spécifique au paquet :

 $ apt-get build-dep xorg-server

Là il va télécharger un certain nombre de paquets de développement (&quot;-dev&quot;), ils sont marqués comme installés automatiquement, donc un deborphan devrait vous les enlever sans trop de problème. Sinon il existe cette commande pour être sûr qu'ils sont marqués en tant que &quot;installé automatiquement&quot;, puis un &quot;apt-get autoclean&quot; les supprimera.

===Reconfiguration===
Ensuite tout se passe dans le répertoire &quot;debian&quot;

 $ cd xorg-server-1.12.4/debian


On édite le fichier &quot;changlog&quot; pour monter de version le paquet que l'on va reconstruire. Il est possible de le faire en automatique avec la commande:

 debian/$ dch -n


L'option &quot;-n&quot; permet d'incrémenter le numéro de version de façon mineur, c'est à dire l'ajout de &quot;.1&quot; en fin de numéro de version.

Sinon pour le faire en manuel, il faut ajouter une ligne du type suivant au fichier:
&lt;pre&gt;
xorg-server (2:1.12.4-5.1) UNRELEASED; urgency=low

  * Non-maintainer upload.
  * ajout des paramètre pour Xephyr et evdev

 -- Vous &lt;vous@VotreMachine&gt;  Sun, 03 Mar 2013 22:21:32 +0100
&lt;/pre&gt;

Pour éviter de réinstaller tout Xorg avec le nouveau numéro de version il faut éditer le fichier &quot;debian/control&quot; et modifier la dépendance de Xephyr (ligne ~283). Pour cela il faut remplacer le 
&lt;pre&gt;
Depends :
  xserver-common (&gt;= ${source:Version})
&lt;/pre&gt;
Par :
&lt;pre&gt;
Depends :
  xserver-common (&gt;= 2:1.12.4-5)
&lt;/pre&gt;

Le numéro doit être en accord avec la version de votre Xorg actuellement installé sur votre machine. 
Sinon cette modification est directement possible dans le .deb, toujours dans le fichier &quot;DEBIAN/control&quot;. Pour cela il faut prendre le .deb que vous avez construit, le décompresser, modifier le fichier et faire la commande &quot;dpkg-deb -b &lt;nom du répertoire contenant les fichiers&gt;&quot;. Mais il est plus pratique de le faire avant.

Je ne vous conseille pas de mettre une numéro de version trop élevé car cela pourrait engendrer une incompatibilité avec les futurs versions de Xorg.

Ensuite nous allons modifier les options de compilation en éditant le fichier &quot;rules&quot;, c'est le Makefile de la construction du paquet.
Localisez &quot;confflags_main&quot; (ligne ~133) et ajoutez les lignes suivantes juste en dessous de &quot;--enable-kdrive&quot; (ligne ~156)

 --enable-kdrive-evdev \
 --enable-kdrive-mouse \
 --enable-kdrive-kbd \

===Recompilation===
Passons maintenant à la recompilation proprement dite, ressortez du répertoire debian et faites :
 $ fakeroot ./debian/rules binary

Et laissez la compilation et la création des paquets se faire ... cela peut prendre quelques minutes.

====Re-recompilation====
Si pour une raison il vous faut refaire entièrement la compilation il faut d'abord faire la commande suivante
 $ fakeroot ./debian/rules clean

Si c'est juste refaire les &quot;.deb&quot; (correction du numéro de dépendance, ...), alors cette commande suffit.
 $ fakeroot ./debian/rules binary-deb

===Installation du paquet obtenue===
Enfin pour installer votre paquet (qui se trouve dans le répertoire supérieur) il faut faire :
 #dpkg -i xserver-xephyr_1.12.4-5_i386.deb
Ou de manière graphique avec GDebi.
====Paquets déjà prêt====
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6_i386.deb.tar]]
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6.1_amd64.deb.tar]]

==Configuration de Xorg==
===Définition de l'existant===
Pour rappel le principe sera d'avoir une session X qui va héberger 2 sessions Xephyr qui serviront les différents sièges.
Tout d'abord nous allons faire un fichier de conf pour le serveur Xorg. Pour ne pas démarrer de rien on peut lancer la commande (en root) &quot;Xorg -configure&quot; qui génère le fichier &quot;xorg.conf.new&quot; dans &quot;/root&quot;. Ensuite on fait un petit &quot;xrandr&quot; pour identifier les sorties disponibles.
&lt;pre&gt;
$ xrandr

Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 593mm
&lt;/pre&gt;

&quot;DVI-0&quot; &amp; &quot;HDMI-0&quot; sont les 2 disponibles sur la machine. On peut aussi trouver du &quot;VGA-0&quot; ou &quot;LVDS&quot; pour les écrans de portables.

===Exemple de fichier de configuration===
Dans cet exemple on peut avoir un &quot;/etc/xorg.conf&quot; comme suivant :
&lt;pre&gt;
##################################################################
Section &quot;Monitor&quot;
	Identifier  &quot;HannsG&quot;
	Option      &quot;PreferredMode&quot; &quot;1920x1200&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
	Option		&quot;Primary&quot; &quot;true&quot;
EndSection

Section &quot;Monitor&quot;
	Identifier  &quot;Acer&quot;
	Option      &quot;PreferredMode&quot; &quot;1680x1050&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
EndSection

Section &quot;Device&quot;
	Identifier  &quot;card0&quot;
	Driver      &quot;radeon&quot;
	# Ici on associe les sorties video avec une section &quot;Monitor&quot;
	# On remarquera le &quot;Monitor&quot; devant le nom des sortie, c'est indispensable (cf : http://www.x.org/archive/current/doc/man/man5/xorg.conf.5.xhtml#heading12)
	Option      &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
	Option      &quot;Monitor-DVI-0&quot; &quot;Acer&quot;
EndSection

##################################################################

Section &quot;Screen&quot;
	Identifier  &quot;ecran1&quot;
	Device      &quot;card0&quot;
	Monitor     &quot;HansG&quot;
	DefaultDepth 24
	SubSection &quot;Display&quot;
 		Depth   24
		Virtual 3600 1200
	EndSubSection
EndSection

Section &quot;ServerLayout&quot;
	Identifier    &quot;dualscreen&quot;
	Screen      0  &quot;ecran1&quot;
EndSection
##################################################################
&lt;/pre&gt;

==Configuration de LightDM==
Nous allons maintenant regarder la configuration de LightDM d'un peu plus près. Le fichier de configuration par défaut expose toutes les options possibles du dit fichier. Nous allons garder le strict minimum
===lightdm.conf===
Pour cela éditons le fichier /etc/lightd/lightdm.conf

&lt;pre&gt;
[LightDM]
 greeter-user=root
 user-authority-in-system-dir=false

 [SeatDefaults]
 xserver-allow-tcp=false
 greeter-hide-users=false
 user-session=lightdm-xsession
 session-wrapper=/etc/X11/Xsession

 [Seat:1]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 1 -t 1680x1050 -P evdev -s /dev/input/by-id/usb-Logitech_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd -v bepo 
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 1
 greeter-session=lightdm-greeter

[Seat:2]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 2 -t 1920x1200 -P evdev -s /dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-path/platform-i8042-serio-0-event-kbd
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 2 -d 1680,0
 greeter-session=lightdm-greeter
&lt;/pre&gt;

Il y a plusieurs chose à savoir concernant le fonctionnement de LightDM afin de comprendre ce qui est fait.
-- La section &quot;SeatDefault&quot; est commune à tous les sièges définis après
-- Chaque &quot;Seat&quot; est exécuté dans l'ordre dans un VT différent et ce même si, dans notre cas, tout se passe dans le VT7 ([url=https://code.launchpad.net/~andrzejtp2010/lightdm/lightdm-trunk-xephyr-multiseat/+merge/120286]un patch[url] à été proposé pour palier à ce problème mais il n'a pas été accepté ... pour l'instant)
-- Chaque propriété de tous les &quot;Seat&quot; est lancée dans un ordre précis, d'abord tous les &quot;xserver-command&quot;, puis tous les &quot;greeter-setup-script&quot;, enfin tous les &quot;greeter-session&quot;. Si vous mettez d'autres propriétés elle seront exécutées suivant leur ordre pré-établi.
-- Si les &quot;greeter&quot; se terminent, lightDM coupe le &quot;xserver-command&quot; correspondant. De même si le &quot;xserver-command&quot; se termine le greeter est coupé.

Donc pour que tout se positionne correctement il faut
-- D'abord lancer le serveur X qui servira de support, ce qui est fait en le mettant en tant que premier &quot;Seat&quot;
-- Lancer les fenêtres Xephyr avec les optons qui vont bien, ce qui est fait avec le script &quot;Xephyr-command.sh&quot; et ses arguments
-- Simuler un &quot;greeter&quot; pour le &quot;Seat :0&quot; afin que le serveur X ne soit pas tué par lightDM, ce qui est fait avec le script &quot;fake-greeter&quot;
-- Exécuter un script qui va placer les fenêtre Xephyr si besoin et initialiser les variables d'environnement correctement, fait avec &quot;Xephyr-greeter-setup.sh&quot;
-- Exécuter les &quot;greeter&quot; dans les fenêtre Xephyr

===fake-greeter.desktop===
Pour le faux greeter du serveur X il faut créer un fichier dans &quot;/usr/share/xgreeters/fake-greeter.desktop&quot; et y copier son contenu :
&lt;pre&gt;
[Desktop Entry]
Name=LightDM fake greeter
Comment=This runs no greeter at all, it should only be run from LightDM
Exec=sleep infinity
Type=Application
X-Ubuntu-Gettext-Domain=lightdm
&lt;/pre&gt;

Après tout cela nous allons créer un script qui permettra de créer (&quot;Xephyr-command.sh&quot;) et un autre pour placer les fenêtre à l'écran (&quot;Xephyr-greeter-setup.sh&quot;).
Tout d'abord il est nécessaire d'installer le petit utilitaire &quot;wmctrl&quot; avec
 # aptitude install wmctrl
===Xephyr-command.sh===
 Le contenu du fichier &quot;Xephyr-command.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -t, taille : Doit être de la forme 9999x9999, (dafaut = 1024x768)&quot;
  echo &quot;\t -s, sourie : /dev/input/[by-path|by-id]/...event-mouse&quot;
  echo &quot;\t -c, clavier : /dev/input/[by-path|by-id]/...event-kbd&quot;
  echo &quot;\t -l, layout : fr, es, en, ... (défaut = fr)&quot;
  echo &quot;\t -v, variant : fr, latin9, bepo, ... (défaut = &lt;vide&gt;)&quot;
  echo &quot;\t -P, Pilote : ephyr ou evdev (défaut = ephyr)&quot;
}

testExecutable() {
	XEPHYR=`whereis -b Xephyr | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
TAILLE=&quot;1024x768&quot;
SOURIE=
CLAVIER=
LAYOUT=&quot;fr&quot;
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
PILOTE=ephyr # Test = ephyr ; Prod = evdev

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XEPHYR&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;Xephyr : &quot;$XEPHYR
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:t:s:c:l:v:P:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		t|taille)
			TAILLE=&quot;$OPTARG&quot;
		;;

		s|sourie)
			SOURIE=$OPTARG
			if  ! [ -r $SOURIE ];then
				echo &quot;La sourie n'est pas accessible&quot;
				exit 3
			fi
		;;

		c|clavier)
			CLAVIER=$OPTARG
			if  ! [ -r $CLAVIER ];then
				echo &quot;Le clavier n'est pas accessible&quot;
				exit 4
			fi
		;;

		l|layout)
			LAYOUT=$OPTARG
		;;

		v|variant)
			VARIANT=$OPTARG
		;;

		P|Pilote)
			PILOTE=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variables d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Construction de la ligne d&quot;argument
OPTIONS=&quot;&quot;

if [ -n &quot;${TAILLE}&quot; ]; then
	OPTIONS=&quot; -screen ${TAILLE}&quot;
fi

if [ -n &quot;${CLAVIER}&quot; ]; then
	if [ -n &quot;${LAYOUT}&quot; ]; then
		OPTIONS=$OPTIONS&quot; -keybd $PILOTE,,device=${CLAVIER},xkbrules=evdev,xkbmodel=evdev,xkblayout=${LAYOUT}&quot;
		if [ -n &quot;${VARIANT}&quot; ]; then
			OPTIONS=$OPTIONS&quot;,xkbvariant=${VARIANT}&quot;
		fi
	fi
fi

if [ -n &quot;${SOURIE}&quot; ]; then
	OPTIONS=$OPTIONS&quot; -mouse $PILOTE,,device=${SOURIE}&quot;
fi

# Lancement de Xephyr en arrière plan
echo &quot;$XEPHYR -retro $OPTIONS :$POSTE&quot;
exec $XEPHYR -retro  $OPTIONS :$POSTE
&lt;/pre&gt;

Petite explication sur la dernière ligne. Le &quot;exec&quot; fait en sorte que ce soit le processus de Xephyr qui prend la place du script, donc il reprend le PID et tout ce qui va bien. Cela permet surtout que le signal USR1 que Xephyr lance au PPID, soit bien récupéré par LightDM et que ce dernier continue son fonctionnement normalement.

===Xephyr-greeter-setup.sh===
Le contenu du fichier &quot;Xephyr-greeter-setup.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p|--poste numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -d, --deplacement : de la forme 'x,y' (en pixel)&quot;
  echo &quot;\t -v, --vt : 7, 8, 9, 10, 11 (defaut = 7)&quot;
}

testExecutable() {
	XWININFO=`whereis -b xwininfo | cut -d' ' -f2`
	WMCTRL=`whereis -b wmctrl | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
DEPLACEMENT=
VT=7
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
ATTENTE=3 # temps en seconde avant de déclencher le &quot;chvt&quot; pour revenir sur le bon VT

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XWININFO&quot; -o -z &quot;$WMCTRL&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;xwininfo : &quot;$XWININFO
	echo &quot;wmctrl : &quot;$WMCTRL
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:d:v:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		d|deplacement)
			DEPLACEMENT=&quot;$OPTARG&quot;
		;;
	
		v|vt)
			VT=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Vieux Hack tout bancal pour revenir au bon VT sans patcher LightDM
(sleep $ATTENTE ; chvt $VT)&amp;

# Deplacement de la fenetre si besoin
if [ -n &quot;$DEPLACEMENT&quot; ]; then
	#On recherche l'ID de la fenêtre Xephyr
        XEP=`XAUTHORITY=/var/run/lightdm/root/:$XRACINE $XWININFO -root -children -all -display :$XRACINE | grep &quot;Xephyr on :$POSTE&quot; --max-count=1`;

	if [ -z &quot;$XEP&quot; ]; then
		echo &quot;fenêtre Xephyr non trouvé pour le poste $POSTE&quot;
		exit 5
	fi
    XEPHYR_WIN_ID=`echo ${XEP} | cut -d' ' -f1`;
    $WMCTRL 2&gt;&amp;1 -v -i -r ${XEPHYR_WIN_ID} -e 0,${DEPLACEMENT},-1,-1;
	if [ $? -ne 0 ]; then
		echo &quot;Erreur lors du déplacement de la fenêtre Xephyr pour le poste $POSTE&quot;
		exit 7
	fi
fi

# Mise en place des variables d'environnement pour le greeter (utile ?)
export DISPLAY=:$POSTE
export XAUTHORITY=/var/run/lightdm/root/:$POSTE
&lt;/pre&gt;
Petite explication concernant la ligne suivante
 (sleep $ATTENTE ; chvt $VT)&amp;
Comme je n'ai pas patché LightDM pour éviter le changement de VT et que Xephyr m'empêche de faire un Ctrl+Alt+7 (avec le driver evdev) pour revenir au bon VT, j'ai du mettre en place un automatisme. Certes c'est loin d'être parfait mais ça rempli correctement son office.

==Modification du système==
===Montage des périphériques USB===
On se rend assez vite compte que si l'on branche une clé USB elle n'apparait pas automatiquement sur le bureau et elle est encore moins &quot;montable&quot; par un utilisateur classique. Elle apparait bien dans la liste des périphériques accessibles (volet de gauche sur nautilus) mais il y a un problème de droit.
Un petit rappel de la chaine mise en jeu lorsque l'on branche une clé USB ou tout autre périphérique.
* Détection par le noyau de l'ajout d'un matériel
* Udev prend le relais et créé les périphériques block nécessaires dans /dev
* PolicyKit termine le travail en mettant en place les autorisations adéquates

Donc le blocage vient de ce dernier composant, il ne reconnaît pas une session Xephyr comme &quot;active&quot; et donc refuse le montage de ce type de périphérique par l'utilisateur lambda. Pour passer au delà de cette limitation on va redéfinir la règle de montage, pour cela il faut aller dans le répertoire suivant :
 /etc/polkit-1/localauthority/50-local.d
Et y créer un fichier, &quot;10-udisk.pkla&quot; par exemple
&lt;pre&gt;
[Allow mounting from Xephyr]
Identity=*
Action=org.freedesktop.udisks.change;org.freedesktop.udisks.drive-detach;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.filesystem-unmount-others
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

Voilà, avec Gnome3 dans le volet de gauche de Nautilus on peut cliquer sur l'icône de la clé USB pour qu'elle se monte correctement, idem avec LXDE.
Je recommande de désactiver l'automontage des périphériques USB afin que l'utilisateur qui branche la clé puisse la monter sans interférence.

===Gestion de l'énergie===
De la même manière que précédemment, par défaut il est impossible d'éteindre l'ordinateur depuis la session graphique (hors LightDM).
Donc pour cela on créé un nouveau fichier (20-upower.pkla) dans :
 /etc/polkit-1/localauthority/50-local.d

&lt;pre&gt;
[Suspend/hibernate permissions]
Identity=*
Action=org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

===Gestion du son===
Par défaut Pulseaudio est lancé lors de l'identification d'un utilisateur, du coup il est le seul qui puisse utiliser la carte son. Pour pallier à ce problème il faut rendre pulseaudio démon du système.
Pour cela il faut modifier plusieurs fichiers de configuration :
* /etc/default/pulseaudio
&lt;pre&gt;PULSEAUDIO_SYSTEM_START=1&lt;/pre&gt;

* /etc/pulse/daemon.conf
&lt;pre&gt;daemonize = yes
local-server-type = system&lt;/pre&gt;

* /etc/pulse/client.conf
&lt;pre&gt;autospawn = no&lt;/pre&gt;

* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot;
 usermod -aG pulse-access &lt;username&gt;

* On peut enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse

([http://askubuntu.com/questions/192522/how-do-i-configure-sound-with-pulseaudio-and-multiseat source] [http://disjunkt.com/jd/2010/en/multiseat-linux/multiseat-linux-system-wide-pulseaudio-for-routing-sounds-109/ source2])

====Modification des DE (Gnome, KDE, LXDE, ...)====
Par défaut les environnements graphique exécutent Pulseaudio en espace utilisateur, ce qu'il ne faut plus faire puisqu'il est partagé, ce qui ne devrait plus être possible si vous avez enlevé les utilisateurs des groupes. Donc il est nécessaire de désactiver cela avec l'outil de votre environnement de Bureau. Par exemple pour LXDE il s'agit de lxsession, si vous avez des problème pour cet environnement [http://wiki.lxde.org/en/Autostart cette page (et ses liens)] devrait vous aider

===Aller plus loin===
* Si l'on veut restreindre ce droit par utilisateur ou par groupe on modifie la ligne &quot;Identity&quot; comme il suit
 Identity=unix-user:toto;unix-group:plugdev
* Pour creuser un peu plus la configuration de ce système on peux aller voir [http://www.freedesktop.org/software/polkit/docs/0.105/pklocalauthority.8.html cette page] sur PolicyKit
* Il serait aussi intéressant de définir des ports USB réservés pour chaque siège, mais je ne sais pas encore comment gérer cela.
* Voir s'il est possible de dédier les voies arrière à un poste et les voies avant à un autre ...

==Conclusion==
Et voilà, tout est prêt pour le redémarrage et admirer les mires de login sur leur écran respectif.

===Avantages===
* Avec du matériel de récupération on peut facilement mettre en place cette solution peu coûteuse
* La satisfaction d'avoir un poste de travail exotique
* Permettre à une tierce personne de profiter de la puissance monstre des machines récentes sans se priver de notre fauteuil favori
* Se sentir moins seul avec une/plusieurs personnes à coté de soi :-p

===Inconvénients===
* Accélération graphique fortement diminué
* Si on débranche les claviers/souries Xephyr ne sait pas les reconnaitre automatiquement au rebranchement. Il faut relancer Xephyr en se déconnectant ou relancer LightDM
* Un &quot;saut&quot; des 2 écrans lors de la déconnexion d'un postes, mais cela est dû à LightDM et son changment de VT intempestif.
* Surveillance de chaque mis à jour de Xorg pour ne pas avoir de surprise au redémarrage
* Recompilation nécessaire en cas de mise à jour majeur de Xorg
* Gestion des montages USB non optimale
* Les voyants du clavier (pavé numérique, Majuscule et arrêt défile) ne réagissent plus, mais la clavier réagit correctement.
* Dans l'espace de travail de certains logiciel (VLC, Gimp) la sourie peux avoir un affichage lacunaire. Par exemple sous GIMP elle n'est visible que lorsqu'on la déplace, avec VLS il y a un carré noir autour d'elle quand on la déplace le reste du temps elle disparait.


===Remerciement===
Un grand merci à ce site pour m'avoir prémaché le travail ... ce qui ne m'as pas empêché d'apporter quelques améliorations à sa solution.
http://beforeafterx.blogspot.fr/2012/08/configuration-of-ligthdm-12.html</text>
      <sha1>6486t9tq86jz79wbhv8bxll4xv28m2i</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5167</id>
      <parentid>5166</parentid>
      <timestamp>2013-05-14T12:30:39Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Inconvénients */</comment>
      <text xml:space="preserve" bytes="24179">Après avoir fait du [http://www.debian-fr.org/multiseat-plusieurs-utilisateurs-sur-1-pc-t6954.html#p188187 multiposte avec 2 CG], un changement de PC m'oblige à faire la même chose mais avec une seule carte. J'ai essayé de couvrir au maximum toutes les étapes de la mise en place de la solution.

----
==Choix des outils==
Tout d'abord le raisonnement pour le choix des outils à été le suivant.
==== Xorg ou Wayland ?====
La réponse a été rapide. Xorg clairement, Wayland est encore trop récent pour pouvoir le faire et aucun document ne traite pour l'instant de ce problème.

==== Xnest ou Xephyr ?====
Xephyr est largement plébiscité et Xnest semble tomber en désuétude. C'est par le développement de Tizen (ex-Meego) que Xephyr semble toujours actif et que de nouvelles fonctionnalités lui sont ajoutées. Intel s'en sert intensément et est énormément utilisé pour le développement d'application pour smartphone comme environnement de simulation. (http://www.phoronix.com/scan.php?page=news_item&amp;px=ODc1NQ).
Un souci avec Xephyr est que le support de evdev semble ne pas avoir été inclus dans les options de compilations. &quot;evdev&quot; permet de monopoliser les claviers et souris. Du coup il faut refaire le paquet soi-même.

==== Et la transition avec systemd ? ====
Il ne semble plus y avoir de problème particulier (http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org)

====Comment gérer 2 écran, 2 session avec une seule carte graphique ?====
Il faut savoir que Xephyr permet de se greffer sur n'importe quel serveur X afin d'afficher une autre session. Par exemple avec la commande &quot;Xephyr -query 127.0.0.1&quot; vous devez pouvoir vous connecter sur votre propre machine si le protocole &quot;XDMCP&quot; est activé sur votre &quot;DisplayManager&quot; (GDM, KDM, XDM, ...). Donc le but du jeu sera d'avoir un serveur X qui va &quot;supporter&quot; 2 fenêtres Xephyr. Ces deux dernières se verront affectées les claviers et les souris de manière exclusive.

====Et le DM ? Debian a adopté GDM(3) avec Gnome mais j'aimerais bien m'en passer.====
Avec GDM (celui de Gnome2) il existe un très bon tutoriel ici : http://netpatia.blogspot.fr/2009/06/multiseat-in-ubuntu-904.html 
Pour GDM3, le problème est que pour l'instant il ne reprend pas toutes les possibilitées de son ancienne version. 
https://live.gnome.org/GDM/ToDo
&quot;-- Allow per-display X Server commands 
		BrianCameron: The [server] and [server-foo] sections of the GDM configuration have been disabled. This means that users who depend on novel configurations which require special Xserver commands per-display is not available.&quot;

Donc bonne nouvelle, il fallait trouver une alternative en le nom de LightDM, qui est issu de Ubuntu ... 

===Prérequis===
Donc pour les pré-requis :
* Ajouter &quot;deb-src http://ftp.fr.debian.org/debian/ &lt;VersionDebian&gt; main contrib non-free&quot;
* Installer les paquage dpkg-dev, build-essential, devscripts, lightDM

==Reconstruction de Xephyr==
===Récupération des sources nécessaires===
On récupère toutes les sources du packet source xorg-server qui comprend Xephyr.

 $ apt-get source xserver-xephyr


Puis récupérer toutes les dépendances spécifique au paquet :

 $ apt-get build-dep xorg-server

Là il va télécharger un certain nombre de paquets de développement (&quot;-dev&quot;), ils sont marqués comme installés automatiquement, donc un deborphan devrait vous les enlever sans trop de problème. Sinon il existe cette commande pour être sûr qu'ils sont marqués en tant que &quot;installé automatiquement&quot;, puis un &quot;apt-get autoclean&quot; les supprimera.

===Reconfiguration===
Ensuite tout se passe dans le répertoire &quot;debian&quot;

 $ cd xorg-server-1.12.4/debian


On édite le fichier &quot;changlog&quot; pour monter de version le paquet que l'on va reconstruire. Il est possible de le faire en automatique avec la commande:

 debian/$ dch -n


L'option &quot;-n&quot; permet d'incrémenter le numéro de version de façon mineur, c'est à dire l'ajout de &quot;.1&quot; en fin de numéro de version.

Sinon pour le faire en manuel, il faut ajouter une ligne du type suivant au fichier:
&lt;pre&gt;
xorg-server (2:1.12.4-5.1) UNRELEASED; urgency=low

  * Non-maintainer upload.
  * ajout des paramètre pour Xephyr et evdev

 -- Vous &lt;vous@VotreMachine&gt;  Sun, 03 Mar 2013 22:21:32 +0100
&lt;/pre&gt;

Pour éviter de réinstaller tout Xorg avec le nouveau numéro de version il faut éditer le fichier &quot;debian/control&quot; et modifier la dépendance de Xephyr (ligne ~283). Pour cela il faut remplacer le 
&lt;pre&gt;
Depends :
  xserver-common (&gt;= ${source:Version})
&lt;/pre&gt;
Par :
&lt;pre&gt;
Depends :
  xserver-common (&gt;= 2:1.12.4-5)
&lt;/pre&gt;

Le numéro doit être en accord avec la version de votre Xorg actuellement installé sur votre machine. 
Sinon cette modification est directement possible dans le .deb, toujours dans le fichier &quot;DEBIAN/control&quot;. Pour cela il faut prendre le .deb que vous avez construit, le décompresser, modifier le fichier et faire la commande &quot;dpkg-deb -b &lt;nom du répertoire contenant les fichiers&gt;&quot;. Mais il est plus pratique de le faire avant.

Je ne vous conseille pas de mettre une numéro de version trop élevé car cela pourrait engendrer une incompatibilité avec les futurs versions de Xorg.

Ensuite nous allons modifier les options de compilation en éditant le fichier &quot;rules&quot;, c'est le Makefile de la construction du paquet.
Localisez &quot;confflags_main&quot; (ligne ~133) et ajoutez les lignes suivantes juste en dessous de &quot;--enable-kdrive&quot; (ligne ~156)

 --enable-kdrive-evdev \
 --enable-kdrive-mouse \
 --enable-kdrive-kbd \

===Recompilation===
Passons maintenant à la recompilation proprement dite, ressortez du répertoire debian et faites :
 $ fakeroot ./debian/rules binary

Et laissez la compilation et la création des paquets se faire ... cela peut prendre quelques minutes.

====Re-recompilation====
Si pour une raison il vous faut refaire entièrement la compilation il faut d'abord faire la commande suivante
 $ fakeroot ./debian/rules clean

Si c'est juste refaire les &quot;.deb&quot; (correction du numéro de dépendance, ...), alors cette commande suffit.
 $ fakeroot ./debian/rules binary-deb

===Installation du paquet obtenue===
Enfin pour installer votre paquet (qui se trouve dans le répertoire supérieur) il faut faire :
 #dpkg -i xserver-xephyr_1.12.4-5_i386.deb
Ou de manière graphique avec GDebi.
====Paquets déjà prêt====
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6_i386.deb.tar]]
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6.1_amd64.deb.tar]]

==Configuration de Xorg==
===Définition de l'existant===
Pour rappel le principe sera d'avoir une session X qui va héberger 2 sessions Xephyr qui serviront les différents sièges.
Tout d'abord nous allons faire un fichier de conf pour le serveur Xorg. Pour ne pas démarrer de rien on peut lancer la commande (en root) &quot;Xorg -configure&quot; qui génère le fichier &quot;xorg.conf.new&quot; dans &quot;/root&quot;. Ensuite on fait un petit &quot;xrandr&quot; pour identifier les sorties disponibles.
&lt;pre&gt;
$ xrandr

Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 593mm
&lt;/pre&gt;

&quot;DVI-0&quot; &amp; &quot;HDMI-0&quot; sont les 2 disponibles sur la machine. On peut aussi trouver du &quot;VGA-0&quot; ou &quot;LVDS&quot; pour les écrans de portables.

===Exemple de fichier de configuration===
Dans cet exemple on peut avoir un &quot;/etc/xorg.conf&quot; comme suivant :
&lt;pre&gt;
##################################################################
Section &quot;Monitor&quot;
	Identifier  &quot;HannsG&quot;
	Option      &quot;PreferredMode&quot; &quot;1920x1200&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
	Option		&quot;Primary&quot; &quot;true&quot;
EndSection

Section &quot;Monitor&quot;
	Identifier  &quot;Acer&quot;
	Option      &quot;PreferredMode&quot; &quot;1680x1050&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
EndSection

Section &quot;Device&quot;
	Identifier  &quot;card0&quot;
	Driver      &quot;radeon&quot;
	# Ici on associe les sorties video avec une section &quot;Monitor&quot;
	# On remarquera le &quot;Monitor&quot; devant le nom des sortie, c'est indispensable (cf : http://www.x.org/archive/current/doc/man/man5/xorg.conf.5.xhtml#heading12)
	Option      &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
	Option      &quot;Monitor-DVI-0&quot; &quot;Acer&quot;
EndSection

##################################################################

Section &quot;Screen&quot;
	Identifier  &quot;ecran1&quot;
	Device      &quot;card0&quot;
	Monitor     &quot;HansG&quot;
	DefaultDepth 24
	SubSection &quot;Display&quot;
 		Depth   24
		Virtual 3600 1200
	EndSubSection
EndSection

Section &quot;ServerLayout&quot;
	Identifier    &quot;dualscreen&quot;
	Screen      0  &quot;ecran1&quot;
EndSection
##################################################################
&lt;/pre&gt;

==Configuration de LightDM==
Nous allons maintenant regarder la configuration de LightDM d'un peu plus près. Le fichier de configuration par défaut expose toutes les options possibles du dit fichier. Nous allons garder le strict minimum
===lightdm.conf===
Pour cela éditons le fichier /etc/lightd/lightdm.conf

&lt;pre&gt;
[LightDM]
 greeter-user=root
 user-authority-in-system-dir=false

 [SeatDefaults]
 xserver-allow-tcp=false
 greeter-hide-users=false
 user-session=lightdm-xsession
 session-wrapper=/etc/X11/Xsession

 [Seat:1]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 1 -t 1680x1050 -P evdev -s /dev/input/by-id/usb-Logitech_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd -v bepo 
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 1
 greeter-session=lightdm-greeter

[Seat:2]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 2 -t 1920x1200 -P evdev -s /dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-path/platform-i8042-serio-0-event-kbd
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 2 -d 1680,0
 greeter-session=lightdm-greeter
&lt;/pre&gt;

Il y a plusieurs chose à savoir concernant le fonctionnement de LightDM afin de comprendre ce qui est fait.
-- La section &quot;SeatDefault&quot; est commune à tous les sièges définis après
-- Chaque &quot;Seat&quot; est exécuté dans l'ordre dans un VT différent et ce même si, dans notre cas, tout se passe dans le VT7 ([url=https://code.launchpad.net/~andrzejtp2010/lightdm/lightdm-trunk-xephyr-multiseat/+merge/120286]un patch[url] à été proposé pour palier à ce problème mais il n'a pas été accepté ... pour l'instant)
-- Chaque propriété de tous les &quot;Seat&quot; est lancée dans un ordre précis, d'abord tous les &quot;xserver-command&quot;, puis tous les &quot;greeter-setup-script&quot;, enfin tous les &quot;greeter-session&quot;. Si vous mettez d'autres propriétés elle seront exécutées suivant leur ordre pré-établi.
-- Si les &quot;greeter&quot; se terminent, lightDM coupe le &quot;xserver-command&quot; correspondant. De même si le &quot;xserver-command&quot; se termine le greeter est coupé.

Donc pour que tout se positionne correctement il faut
-- D'abord lancer le serveur X qui servira de support, ce qui est fait en le mettant en tant que premier &quot;Seat&quot;
-- Lancer les fenêtres Xephyr avec les optons qui vont bien, ce qui est fait avec le script &quot;Xephyr-command.sh&quot; et ses arguments
-- Simuler un &quot;greeter&quot; pour le &quot;Seat :0&quot; afin que le serveur X ne soit pas tué par lightDM, ce qui est fait avec le script &quot;fake-greeter&quot;
-- Exécuter un script qui va placer les fenêtre Xephyr si besoin et initialiser les variables d'environnement correctement, fait avec &quot;Xephyr-greeter-setup.sh&quot;
-- Exécuter les &quot;greeter&quot; dans les fenêtre Xephyr

===fake-greeter.desktop===
Pour le faux greeter du serveur X il faut créer un fichier dans &quot;/usr/share/xgreeters/fake-greeter.desktop&quot; et y copier son contenu :
&lt;pre&gt;
[Desktop Entry]
Name=LightDM fake greeter
Comment=This runs no greeter at all, it should only be run from LightDM
Exec=sleep infinity
Type=Application
X-Ubuntu-Gettext-Domain=lightdm
&lt;/pre&gt;

Après tout cela nous allons créer un script qui permettra de créer (&quot;Xephyr-command.sh&quot;) et un autre pour placer les fenêtre à l'écran (&quot;Xephyr-greeter-setup.sh&quot;).
Tout d'abord il est nécessaire d'installer le petit utilitaire &quot;wmctrl&quot; avec
 # aptitude install wmctrl
===Xephyr-command.sh===
 Le contenu du fichier &quot;Xephyr-command.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -t, taille : Doit être de la forme 9999x9999, (dafaut = 1024x768)&quot;
  echo &quot;\t -s, sourie : /dev/input/[by-path|by-id]/...event-mouse&quot;
  echo &quot;\t -c, clavier : /dev/input/[by-path|by-id]/...event-kbd&quot;
  echo &quot;\t -l, layout : fr, es, en, ... (défaut = fr)&quot;
  echo &quot;\t -v, variant : fr, latin9, bepo, ... (défaut = &lt;vide&gt;)&quot;
  echo &quot;\t -P, Pilote : ephyr ou evdev (défaut = ephyr)&quot;
}

testExecutable() {
	XEPHYR=`whereis -b Xephyr | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
TAILLE=&quot;1024x768&quot;
SOURIE=
CLAVIER=
LAYOUT=&quot;fr&quot;
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
PILOTE=ephyr # Test = ephyr ; Prod = evdev

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XEPHYR&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;Xephyr : &quot;$XEPHYR
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:t:s:c:l:v:P:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		t|taille)
			TAILLE=&quot;$OPTARG&quot;
		;;

		s|sourie)
			SOURIE=$OPTARG
			if  ! [ -r $SOURIE ];then
				echo &quot;La sourie n'est pas accessible&quot;
				exit 3
			fi
		;;

		c|clavier)
			CLAVIER=$OPTARG
			if  ! [ -r $CLAVIER ];then
				echo &quot;Le clavier n'est pas accessible&quot;
				exit 4
			fi
		;;

		l|layout)
			LAYOUT=$OPTARG
		;;

		v|variant)
			VARIANT=$OPTARG
		;;

		P|Pilote)
			PILOTE=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variables d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Construction de la ligne d&quot;argument
OPTIONS=&quot;&quot;

if [ -n &quot;${TAILLE}&quot; ]; then
	OPTIONS=&quot; -screen ${TAILLE}&quot;
fi

if [ -n &quot;${CLAVIER}&quot; ]; then
	if [ -n &quot;${LAYOUT}&quot; ]; then
		OPTIONS=$OPTIONS&quot; -keybd $PILOTE,,device=${CLAVIER},xkbrules=evdev,xkbmodel=evdev,xkblayout=${LAYOUT}&quot;
		if [ -n &quot;${VARIANT}&quot; ]; then
			OPTIONS=$OPTIONS&quot;,xkbvariant=${VARIANT}&quot;
		fi
	fi
fi

if [ -n &quot;${SOURIE}&quot; ]; then
	OPTIONS=$OPTIONS&quot; -mouse $PILOTE,,device=${SOURIE}&quot;
fi

# Lancement de Xephyr en arrière plan
echo &quot;$XEPHYR -retro $OPTIONS :$POSTE&quot;
exec $XEPHYR -retro  $OPTIONS :$POSTE
&lt;/pre&gt;

Petite explication sur la dernière ligne. Le &quot;exec&quot; fait en sorte que ce soit le processus de Xephyr qui prend la place du script, donc il reprend le PID et tout ce qui va bien. Cela permet surtout que le signal USR1 que Xephyr lance au PPID, soit bien récupéré par LightDM et que ce dernier continue son fonctionnement normalement.

===Xephyr-greeter-setup.sh===
Le contenu du fichier &quot;Xephyr-greeter-setup.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p|--poste numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -d, --deplacement : de la forme 'x,y' (en pixel)&quot;
  echo &quot;\t -v, --vt : 7, 8, 9, 10, 11 (defaut = 7)&quot;
}

testExecutable() {
	XWININFO=`whereis -b xwininfo | cut -d' ' -f2`
	WMCTRL=`whereis -b wmctrl | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
DEPLACEMENT=
VT=7
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
ATTENTE=3 # temps en seconde avant de déclencher le &quot;chvt&quot; pour revenir sur le bon VT

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XWININFO&quot; -o -z &quot;$WMCTRL&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;xwininfo : &quot;$XWININFO
	echo &quot;wmctrl : &quot;$WMCTRL
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:d:v:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		d|deplacement)
			DEPLACEMENT=&quot;$OPTARG&quot;
		;;
	
		v|vt)
			VT=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Vieux Hack tout bancal pour revenir au bon VT sans patcher LightDM
(sleep $ATTENTE ; chvt $VT)&amp;

# Deplacement de la fenetre si besoin
if [ -n &quot;$DEPLACEMENT&quot; ]; then
	#On recherche l'ID de la fenêtre Xephyr
        XEP=`XAUTHORITY=/var/run/lightdm/root/:$XRACINE $XWININFO -root -children -all -display :$XRACINE | grep &quot;Xephyr on :$POSTE&quot; --max-count=1`;

	if [ -z &quot;$XEP&quot; ]; then
		echo &quot;fenêtre Xephyr non trouvé pour le poste $POSTE&quot;
		exit 5
	fi
    XEPHYR_WIN_ID=`echo ${XEP} | cut -d' ' -f1`;
    $WMCTRL 2&gt;&amp;1 -v -i -r ${XEPHYR_WIN_ID} -e 0,${DEPLACEMENT},-1,-1;
	if [ $? -ne 0 ]; then
		echo &quot;Erreur lors du déplacement de la fenêtre Xephyr pour le poste $POSTE&quot;
		exit 7
	fi
fi

# Mise en place des variables d'environnement pour le greeter (utile ?)
export DISPLAY=:$POSTE
export XAUTHORITY=/var/run/lightdm/root/:$POSTE
&lt;/pre&gt;
Petite explication concernant la ligne suivante
 (sleep $ATTENTE ; chvt $VT)&amp;
Comme je n'ai pas patché LightDM pour éviter le changement de VT et que Xephyr m'empêche de faire un Ctrl+Alt+7 (avec le driver evdev) pour revenir au bon VT, j'ai du mettre en place un automatisme. Certes c'est loin d'être parfait mais ça rempli correctement son office.

==Modification du système==
===Montage des périphériques USB===
On se rend assez vite compte que si l'on branche une clé USB elle n'apparait pas automatiquement sur le bureau et elle est encore moins &quot;montable&quot; par un utilisateur classique. Elle apparait bien dans la liste des périphériques accessibles (volet de gauche sur nautilus) mais il y a un problème de droit.
Un petit rappel de la chaine mise en jeu lorsque l'on branche une clé USB ou tout autre périphérique.
* Détection par le noyau de l'ajout d'un matériel
* Udev prend le relais et créé les périphériques block nécessaires dans /dev
* PolicyKit termine le travail en mettant en place les autorisations adéquates

Donc le blocage vient de ce dernier composant, il ne reconnaît pas une session Xephyr comme &quot;active&quot; et donc refuse le montage de ce type de périphérique par l'utilisateur lambda. Pour passer au delà de cette limitation on va redéfinir la règle de montage, pour cela il faut aller dans le répertoire suivant :
 /etc/polkit-1/localauthority/50-local.d
Et y créer un fichier, &quot;10-udisk.pkla&quot; par exemple
&lt;pre&gt;
[Allow mounting from Xephyr]
Identity=*
Action=org.freedesktop.udisks.change;org.freedesktop.udisks.drive-detach;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.filesystem-unmount-others
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

Voilà, avec Gnome3 dans le volet de gauche de Nautilus on peut cliquer sur l'icône de la clé USB pour qu'elle se monte correctement, idem avec LXDE.
Je recommande de désactiver l'automontage des périphériques USB afin que l'utilisateur qui branche la clé puisse la monter sans interférence.

===Gestion de l'énergie===
De la même manière que précédemment, par défaut il est impossible d'éteindre l'ordinateur depuis la session graphique (hors LightDM).
Donc pour cela on créé un nouveau fichier (20-upower.pkla) dans :
 /etc/polkit-1/localauthority/50-local.d

&lt;pre&gt;
[Suspend/hibernate permissions]
Identity=*
Action=org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

===Gestion du son===
Par défaut Pulseaudio est lancé lors de l'identification d'un utilisateur, du coup il est le seul qui puisse utiliser la carte son. Pour pallier à ce problème il faut rendre pulseaudio démon du système.
Pour cela il faut modifier plusieurs fichiers de configuration :
* /etc/default/pulseaudio
&lt;pre&gt;PULSEAUDIO_SYSTEM_START=1&lt;/pre&gt;

* /etc/pulse/daemon.conf
&lt;pre&gt;daemonize = yes
local-server-type = system&lt;/pre&gt;

* /etc/pulse/client.conf
&lt;pre&gt;autospawn = no&lt;/pre&gt;

* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot;
 usermod -aG pulse-access &lt;username&gt;

* On peut enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse

([http://askubuntu.com/questions/192522/how-do-i-configure-sound-with-pulseaudio-and-multiseat source] [http://disjunkt.com/jd/2010/en/multiseat-linux/multiseat-linux-system-wide-pulseaudio-for-routing-sounds-109/ source2])

====Modification des DE (Gnome, KDE, LXDE, ...)====
Par défaut les environnements graphique exécutent Pulseaudio en espace utilisateur, ce qu'il ne faut plus faire puisqu'il est partagé, ce qui ne devrait plus être possible si vous avez enlevé les utilisateurs des groupes. Donc il est nécessaire de désactiver cela avec l'outil de votre environnement de Bureau. Par exemple pour LXDE il s'agit de lxsession, si vous avez des problème pour cet environnement [http://wiki.lxde.org/en/Autostart cette page (et ses liens)] devrait vous aider

===Aller plus loin===
* Si l'on veut restreindre ce droit par utilisateur ou par groupe on modifie la ligne &quot;Identity&quot; comme il suit
 Identity=unix-user:toto;unix-group:plugdev
* Pour creuser un peu plus la configuration de ce système on peux aller voir [http://www.freedesktop.org/software/polkit/docs/0.105/pklocalauthority.8.html cette page] sur PolicyKit
* Il serait aussi intéressant de définir des ports USB réservés pour chaque siège, mais je ne sais pas encore comment gérer cela.
* Voir s'il est possible de dédier les voies arrière à un poste et les voies avant à un autre ...

==Conclusion==
Et voilà, tout est prêt pour le redémarrage et admirer les mires de login sur leur écran respectif.

===Avantages===
* Avec du matériel de récupération on peut facilement mettre en place cette solution peu coûteuse
* La satisfaction d'avoir un poste de travail exotique
* Permettre à une tierce personne de profiter de la puissance monstre des machines récentes sans se priver de notre fauteuil favori
* Se sentir moins seul avec une/plusieurs personnes à coté de soi :-p

===Inconvénients===
* Accélération graphique fortement diminué
* Si on débranche les claviers/souries Xephyr ne sait pas les reconnaitre automatiquement au rebranchement. Il faut relancer Xephyr en se déconnectant ou relancer LightDM
* Un &quot;saut&quot; des 2 écrans lors de la déconnexion d'un postes, mais cela est dû à LightDM et son changment de VT intempestif.
* Surveillance de chaque mis à jour de Xorg pour ne pas avoir de surprise au redémarrage
* Recompilation nécessaire en cas de mise à jour majeur de Xorg
* Gestion des montages USB non optimale
* Les voyants du clavier (pavé numérique, Majuscule et arrêt défile) ne réagissent plus, mais la clavier réagit correctement.
* Dans l'espace de travail de certains logiciel (VLC, Gimp) la souris peut avoir un affichage lacunaire. Par exemple sous GIMP elle n'est visible que lorsqu'on la déplace, avec VLS il y a un carré noir autour d'elle quand on la déplace le reste du temps elle disparait.

===Remerciement===
Un grand merci à ce site pour m'avoir prémaché le travail ... ce qui ne m'as pas empêché d'apporter quelques améliorations à sa solution.
http://beforeafterx.blogspot.fr/2012/08/configuration-of-ligthdm-12.html</text>
      <sha1>k88tvdbmuul1dnd5hb9jwwczhdmjrg3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5168</id>
      <parentid>5167</parentid>
      <timestamp>2013-05-14T12:32:25Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Inconvénients */</comment>
      <text xml:space="preserve" bytes="24179">Après avoir fait du [http://www.debian-fr.org/multiseat-plusieurs-utilisateurs-sur-1-pc-t6954.html#p188187 multiposte avec 2 CG], un changement de PC m'oblige à faire la même chose mais avec une seule carte. J'ai essayé de couvrir au maximum toutes les étapes de la mise en place de la solution.

----
==Choix des outils==
Tout d'abord le raisonnement pour le choix des outils à été le suivant.
==== Xorg ou Wayland ?====
La réponse a été rapide. Xorg clairement, Wayland est encore trop récent pour pouvoir le faire et aucun document ne traite pour l'instant de ce problème.

==== Xnest ou Xephyr ?====
Xephyr est largement plébiscité et Xnest semble tomber en désuétude. C'est par le développement de Tizen (ex-Meego) que Xephyr semble toujours actif et que de nouvelles fonctionnalités lui sont ajoutées. Intel s'en sert intensément et est énormément utilisé pour le développement d'application pour smartphone comme environnement de simulation. (http://www.phoronix.com/scan.php?page=news_item&amp;px=ODc1NQ).
Un souci avec Xephyr est que le support de evdev semble ne pas avoir été inclus dans les options de compilations. &quot;evdev&quot; permet de monopoliser les claviers et souris. Du coup il faut refaire le paquet soi-même.

==== Et la transition avec systemd ? ====
Il ne semble plus y avoir de problème particulier (http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org)

====Comment gérer 2 écran, 2 session avec une seule carte graphique ?====
Il faut savoir que Xephyr permet de se greffer sur n'importe quel serveur X afin d'afficher une autre session. Par exemple avec la commande &quot;Xephyr -query 127.0.0.1&quot; vous devez pouvoir vous connecter sur votre propre machine si le protocole &quot;XDMCP&quot; est activé sur votre &quot;DisplayManager&quot; (GDM, KDM, XDM, ...). Donc le but du jeu sera d'avoir un serveur X qui va &quot;supporter&quot; 2 fenêtres Xephyr. Ces deux dernières se verront affectées les claviers et les souris de manière exclusive.

====Et le DM ? Debian a adopté GDM(3) avec Gnome mais j'aimerais bien m'en passer.====
Avec GDM (celui de Gnome2) il existe un très bon tutoriel ici : http://netpatia.blogspot.fr/2009/06/multiseat-in-ubuntu-904.html 
Pour GDM3, le problème est que pour l'instant il ne reprend pas toutes les possibilitées de son ancienne version. 
https://live.gnome.org/GDM/ToDo
&quot;-- Allow per-display X Server commands 
		BrianCameron: The [server] and [server-foo] sections of the GDM configuration have been disabled. This means that users who depend on novel configurations which require special Xserver commands per-display is not available.&quot;

Donc bonne nouvelle, il fallait trouver une alternative en le nom de LightDM, qui est issu de Ubuntu ... 

===Prérequis===
Donc pour les pré-requis :
* Ajouter &quot;deb-src http://ftp.fr.debian.org/debian/ &lt;VersionDebian&gt; main contrib non-free&quot;
* Installer les paquage dpkg-dev, build-essential, devscripts, lightDM

==Reconstruction de Xephyr==
===Récupération des sources nécessaires===
On récupère toutes les sources du packet source xorg-server qui comprend Xephyr.

 $ apt-get source xserver-xephyr


Puis récupérer toutes les dépendances spécifique au paquet :

 $ apt-get build-dep xorg-server

Là il va télécharger un certain nombre de paquets de développement (&quot;-dev&quot;), ils sont marqués comme installés automatiquement, donc un deborphan devrait vous les enlever sans trop de problème. Sinon il existe cette commande pour être sûr qu'ils sont marqués en tant que &quot;installé automatiquement&quot;, puis un &quot;apt-get autoclean&quot; les supprimera.

===Reconfiguration===
Ensuite tout se passe dans le répertoire &quot;debian&quot;

 $ cd xorg-server-1.12.4/debian


On édite le fichier &quot;changlog&quot; pour monter de version le paquet que l'on va reconstruire. Il est possible de le faire en automatique avec la commande:

 debian/$ dch -n


L'option &quot;-n&quot; permet d'incrémenter le numéro de version de façon mineur, c'est à dire l'ajout de &quot;.1&quot; en fin de numéro de version.

Sinon pour le faire en manuel, il faut ajouter une ligne du type suivant au fichier:
&lt;pre&gt;
xorg-server (2:1.12.4-5.1) UNRELEASED; urgency=low

  * Non-maintainer upload.
  * ajout des paramètre pour Xephyr et evdev

 -- Vous &lt;vous@VotreMachine&gt;  Sun, 03 Mar 2013 22:21:32 +0100
&lt;/pre&gt;

Pour éviter de réinstaller tout Xorg avec le nouveau numéro de version il faut éditer le fichier &quot;debian/control&quot; et modifier la dépendance de Xephyr (ligne ~283). Pour cela il faut remplacer le 
&lt;pre&gt;
Depends :
  xserver-common (&gt;= ${source:Version})
&lt;/pre&gt;
Par :
&lt;pre&gt;
Depends :
  xserver-common (&gt;= 2:1.12.4-5)
&lt;/pre&gt;

Le numéro doit être en accord avec la version de votre Xorg actuellement installé sur votre machine. 
Sinon cette modification est directement possible dans le .deb, toujours dans le fichier &quot;DEBIAN/control&quot;. Pour cela il faut prendre le .deb que vous avez construit, le décompresser, modifier le fichier et faire la commande &quot;dpkg-deb -b &lt;nom du répertoire contenant les fichiers&gt;&quot;. Mais il est plus pratique de le faire avant.

Je ne vous conseille pas de mettre une numéro de version trop élevé car cela pourrait engendrer une incompatibilité avec les futurs versions de Xorg.

Ensuite nous allons modifier les options de compilation en éditant le fichier &quot;rules&quot;, c'est le Makefile de la construction du paquet.
Localisez &quot;confflags_main&quot; (ligne ~133) et ajoutez les lignes suivantes juste en dessous de &quot;--enable-kdrive&quot; (ligne ~156)

 --enable-kdrive-evdev \
 --enable-kdrive-mouse \
 --enable-kdrive-kbd \

===Recompilation===
Passons maintenant à la recompilation proprement dite, ressortez du répertoire debian et faites :
 $ fakeroot ./debian/rules binary

Et laissez la compilation et la création des paquets se faire ... cela peut prendre quelques minutes.

====Re-recompilation====
Si pour une raison il vous faut refaire entièrement la compilation il faut d'abord faire la commande suivante
 $ fakeroot ./debian/rules clean

Si c'est juste refaire les &quot;.deb&quot; (correction du numéro de dépendance, ...), alors cette commande suffit.
 $ fakeroot ./debian/rules binary-deb

===Installation du paquet obtenue===
Enfin pour installer votre paquet (qui se trouve dans le répertoire supérieur) il faut faire :
 #dpkg -i xserver-xephyr_1.12.4-5_i386.deb
Ou de manière graphique avec GDebi.
====Paquets déjà prêt====
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6_i386.deb.tar]]
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6.1_amd64.deb.tar]]

==Configuration de Xorg==
===Définition de l'existant===
Pour rappel le principe sera d'avoir une session X qui va héberger 2 sessions Xephyr qui serviront les différents sièges.
Tout d'abord nous allons faire un fichier de conf pour le serveur Xorg. Pour ne pas démarrer de rien on peut lancer la commande (en root) &quot;Xorg -configure&quot; qui génère le fichier &quot;xorg.conf.new&quot; dans &quot;/root&quot;. Ensuite on fait un petit &quot;xrandr&quot; pour identifier les sorties disponibles.
&lt;pre&gt;
$ xrandr

Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 593mm
&lt;/pre&gt;

&quot;DVI-0&quot; &amp; &quot;HDMI-0&quot; sont les 2 disponibles sur la machine. On peut aussi trouver du &quot;VGA-0&quot; ou &quot;LVDS&quot; pour les écrans de portables.

===Exemple de fichier de configuration===
Dans cet exemple on peut avoir un &quot;/etc/xorg.conf&quot; comme suivant :
&lt;pre&gt;
##################################################################
Section &quot;Monitor&quot;
	Identifier  &quot;HannsG&quot;
	Option      &quot;PreferredMode&quot; &quot;1920x1200&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
	Option		&quot;Primary&quot; &quot;true&quot;
EndSection

Section &quot;Monitor&quot;
	Identifier  &quot;Acer&quot;
	Option      &quot;PreferredMode&quot; &quot;1680x1050&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
EndSection

Section &quot;Device&quot;
	Identifier  &quot;card0&quot;
	Driver      &quot;radeon&quot;
	# Ici on associe les sorties video avec une section &quot;Monitor&quot;
	# On remarquera le &quot;Monitor&quot; devant le nom des sortie, c'est indispensable (cf : http://www.x.org/archive/current/doc/man/man5/xorg.conf.5.xhtml#heading12)
	Option      &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
	Option      &quot;Monitor-DVI-0&quot; &quot;Acer&quot;
EndSection

##################################################################

Section &quot;Screen&quot;
	Identifier  &quot;ecran1&quot;
	Device      &quot;card0&quot;
	Monitor     &quot;HansG&quot;
	DefaultDepth 24
	SubSection &quot;Display&quot;
 		Depth   24
		Virtual 3600 1200
	EndSubSection
EndSection

Section &quot;ServerLayout&quot;
	Identifier    &quot;dualscreen&quot;
	Screen      0  &quot;ecran1&quot;
EndSection
##################################################################
&lt;/pre&gt;

==Configuration de LightDM==
Nous allons maintenant regarder la configuration de LightDM d'un peu plus près. Le fichier de configuration par défaut expose toutes les options possibles du dit fichier. Nous allons garder le strict minimum
===lightdm.conf===
Pour cela éditons le fichier /etc/lightd/lightdm.conf

&lt;pre&gt;
[LightDM]
 greeter-user=root
 user-authority-in-system-dir=false

 [SeatDefaults]
 xserver-allow-tcp=false
 greeter-hide-users=false
 user-session=lightdm-xsession
 session-wrapper=/etc/X11/Xsession

 [Seat:1]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 1 -t 1680x1050 -P evdev -s /dev/input/by-id/usb-Logitech_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd -v bepo 
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 1
 greeter-session=lightdm-greeter

[Seat:2]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 2 -t 1920x1200 -P evdev -s /dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-path/platform-i8042-serio-0-event-kbd
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 2 -d 1680,0
 greeter-session=lightdm-greeter
&lt;/pre&gt;

Il y a plusieurs chose à savoir concernant le fonctionnement de LightDM afin de comprendre ce qui est fait.
-- La section &quot;SeatDefault&quot; est commune à tous les sièges définis après
-- Chaque &quot;Seat&quot; est exécuté dans l'ordre dans un VT différent et ce même si, dans notre cas, tout se passe dans le VT7 ([url=https://code.launchpad.net/~andrzejtp2010/lightdm/lightdm-trunk-xephyr-multiseat/+merge/120286]un patch[url] à été proposé pour palier à ce problème mais il n'a pas été accepté ... pour l'instant)
-- Chaque propriété de tous les &quot;Seat&quot; est lancée dans un ordre précis, d'abord tous les &quot;xserver-command&quot;, puis tous les &quot;greeter-setup-script&quot;, enfin tous les &quot;greeter-session&quot;. Si vous mettez d'autres propriétés elle seront exécutées suivant leur ordre pré-établi.
-- Si les &quot;greeter&quot; se terminent, lightDM coupe le &quot;xserver-command&quot; correspondant. De même si le &quot;xserver-command&quot; se termine le greeter est coupé.

Donc pour que tout se positionne correctement il faut
-- D'abord lancer le serveur X qui servira de support, ce qui est fait en le mettant en tant que premier &quot;Seat&quot;
-- Lancer les fenêtres Xephyr avec les optons qui vont bien, ce qui est fait avec le script &quot;Xephyr-command.sh&quot; et ses arguments
-- Simuler un &quot;greeter&quot; pour le &quot;Seat :0&quot; afin que le serveur X ne soit pas tué par lightDM, ce qui est fait avec le script &quot;fake-greeter&quot;
-- Exécuter un script qui va placer les fenêtre Xephyr si besoin et initialiser les variables d'environnement correctement, fait avec &quot;Xephyr-greeter-setup.sh&quot;
-- Exécuter les &quot;greeter&quot; dans les fenêtre Xephyr

===fake-greeter.desktop===
Pour le faux greeter du serveur X il faut créer un fichier dans &quot;/usr/share/xgreeters/fake-greeter.desktop&quot; et y copier son contenu :
&lt;pre&gt;
[Desktop Entry]
Name=LightDM fake greeter
Comment=This runs no greeter at all, it should only be run from LightDM
Exec=sleep infinity
Type=Application
X-Ubuntu-Gettext-Domain=lightdm
&lt;/pre&gt;

Après tout cela nous allons créer un script qui permettra de créer (&quot;Xephyr-command.sh&quot;) et un autre pour placer les fenêtre à l'écran (&quot;Xephyr-greeter-setup.sh&quot;).
Tout d'abord il est nécessaire d'installer le petit utilitaire &quot;wmctrl&quot; avec
 # aptitude install wmctrl
===Xephyr-command.sh===
 Le contenu du fichier &quot;Xephyr-command.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -t, taille : Doit être de la forme 9999x9999, (dafaut = 1024x768)&quot;
  echo &quot;\t -s, sourie : /dev/input/[by-path|by-id]/...event-mouse&quot;
  echo &quot;\t -c, clavier : /dev/input/[by-path|by-id]/...event-kbd&quot;
  echo &quot;\t -l, layout : fr, es, en, ... (défaut = fr)&quot;
  echo &quot;\t -v, variant : fr, latin9, bepo, ... (défaut = &lt;vide&gt;)&quot;
  echo &quot;\t -P, Pilote : ephyr ou evdev (défaut = ephyr)&quot;
}

testExecutable() {
	XEPHYR=`whereis -b Xephyr | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
TAILLE=&quot;1024x768&quot;
SOURIE=
CLAVIER=
LAYOUT=&quot;fr&quot;
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
PILOTE=ephyr # Test = ephyr ; Prod = evdev

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XEPHYR&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;Xephyr : &quot;$XEPHYR
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:t:s:c:l:v:P:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		t|taille)
			TAILLE=&quot;$OPTARG&quot;
		;;

		s|sourie)
			SOURIE=$OPTARG
			if  ! [ -r $SOURIE ];then
				echo &quot;La sourie n'est pas accessible&quot;
				exit 3
			fi
		;;

		c|clavier)
			CLAVIER=$OPTARG
			if  ! [ -r $CLAVIER ];then
				echo &quot;Le clavier n'est pas accessible&quot;
				exit 4
			fi
		;;

		l|layout)
			LAYOUT=$OPTARG
		;;

		v|variant)
			VARIANT=$OPTARG
		;;

		P|Pilote)
			PILOTE=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variables d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Construction de la ligne d&quot;argument
OPTIONS=&quot;&quot;

if [ -n &quot;${TAILLE}&quot; ]; then
	OPTIONS=&quot; -screen ${TAILLE}&quot;
fi

if [ -n &quot;${CLAVIER}&quot; ]; then
	if [ -n &quot;${LAYOUT}&quot; ]; then
		OPTIONS=$OPTIONS&quot; -keybd $PILOTE,,device=${CLAVIER},xkbrules=evdev,xkbmodel=evdev,xkblayout=${LAYOUT}&quot;
		if [ -n &quot;${VARIANT}&quot; ]; then
			OPTIONS=$OPTIONS&quot;,xkbvariant=${VARIANT}&quot;
		fi
	fi
fi

if [ -n &quot;${SOURIE}&quot; ]; then
	OPTIONS=$OPTIONS&quot; -mouse $PILOTE,,device=${SOURIE}&quot;
fi

# Lancement de Xephyr en arrière plan
echo &quot;$XEPHYR -retro $OPTIONS :$POSTE&quot;
exec $XEPHYR -retro  $OPTIONS :$POSTE
&lt;/pre&gt;

Petite explication sur la dernière ligne. Le &quot;exec&quot; fait en sorte que ce soit le processus de Xephyr qui prend la place du script, donc il reprend le PID et tout ce qui va bien. Cela permet surtout que le signal USR1 que Xephyr lance au PPID, soit bien récupéré par LightDM et que ce dernier continue son fonctionnement normalement.

===Xephyr-greeter-setup.sh===
Le contenu du fichier &quot;Xephyr-greeter-setup.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p|--poste numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -d, --deplacement : de la forme 'x,y' (en pixel)&quot;
  echo &quot;\t -v, --vt : 7, 8, 9, 10, 11 (defaut = 7)&quot;
}

testExecutable() {
	XWININFO=`whereis -b xwininfo | cut -d' ' -f2`
	WMCTRL=`whereis -b wmctrl | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
DEPLACEMENT=
VT=7
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
ATTENTE=3 # temps en seconde avant de déclencher le &quot;chvt&quot; pour revenir sur le bon VT

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XWININFO&quot; -o -z &quot;$WMCTRL&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;xwininfo : &quot;$XWININFO
	echo &quot;wmctrl : &quot;$WMCTRL
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:d:v:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		d|deplacement)
			DEPLACEMENT=&quot;$OPTARG&quot;
		;;
	
		v|vt)
			VT=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Vieux Hack tout bancal pour revenir au bon VT sans patcher LightDM
(sleep $ATTENTE ; chvt $VT)&amp;

# Deplacement de la fenetre si besoin
if [ -n &quot;$DEPLACEMENT&quot; ]; then
	#On recherche l'ID de la fenêtre Xephyr
        XEP=`XAUTHORITY=/var/run/lightdm/root/:$XRACINE $XWININFO -root -children -all -display :$XRACINE | grep &quot;Xephyr on :$POSTE&quot; --max-count=1`;

	if [ -z &quot;$XEP&quot; ]; then
		echo &quot;fenêtre Xephyr non trouvé pour le poste $POSTE&quot;
		exit 5
	fi
    XEPHYR_WIN_ID=`echo ${XEP} | cut -d' ' -f1`;
    $WMCTRL 2&gt;&amp;1 -v -i -r ${XEPHYR_WIN_ID} -e 0,${DEPLACEMENT},-1,-1;
	if [ $? -ne 0 ]; then
		echo &quot;Erreur lors du déplacement de la fenêtre Xephyr pour le poste $POSTE&quot;
		exit 7
	fi
fi

# Mise en place des variables d'environnement pour le greeter (utile ?)
export DISPLAY=:$POSTE
export XAUTHORITY=/var/run/lightdm/root/:$POSTE
&lt;/pre&gt;
Petite explication concernant la ligne suivante
 (sleep $ATTENTE ; chvt $VT)&amp;
Comme je n'ai pas patché LightDM pour éviter le changement de VT et que Xephyr m'empêche de faire un Ctrl+Alt+7 (avec le driver evdev) pour revenir au bon VT, j'ai du mettre en place un automatisme. Certes c'est loin d'être parfait mais ça rempli correctement son office.

==Modification du système==
===Montage des périphériques USB===
On se rend assez vite compte que si l'on branche une clé USB elle n'apparait pas automatiquement sur le bureau et elle est encore moins &quot;montable&quot; par un utilisateur classique. Elle apparait bien dans la liste des périphériques accessibles (volet de gauche sur nautilus) mais il y a un problème de droit.
Un petit rappel de la chaine mise en jeu lorsque l'on branche une clé USB ou tout autre périphérique.
* Détection par le noyau de l'ajout d'un matériel
* Udev prend le relais et créé les périphériques block nécessaires dans /dev
* PolicyKit termine le travail en mettant en place les autorisations adéquates

Donc le blocage vient de ce dernier composant, il ne reconnaît pas une session Xephyr comme &quot;active&quot; et donc refuse le montage de ce type de périphérique par l'utilisateur lambda. Pour passer au delà de cette limitation on va redéfinir la règle de montage, pour cela il faut aller dans le répertoire suivant :
 /etc/polkit-1/localauthority/50-local.d
Et y créer un fichier, &quot;10-udisk.pkla&quot; par exemple
&lt;pre&gt;
[Allow mounting from Xephyr]
Identity=*
Action=org.freedesktop.udisks.change;org.freedesktop.udisks.drive-detach;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.filesystem-unmount-others
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

Voilà, avec Gnome3 dans le volet de gauche de Nautilus on peut cliquer sur l'icône de la clé USB pour qu'elle se monte correctement, idem avec LXDE.
Je recommande de désactiver l'automontage des périphériques USB afin que l'utilisateur qui branche la clé puisse la monter sans interférence.

===Gestion de l'énergie===
De la même manière que précédemment, par défaut il est impossible d'éteindre l'ordinateur depuis la session graphique (hors LightDM).
Donc pour cela on créé un nouveau fichier (20-upower.pkla) dans :
 /etc/polkit-1/localauthority/50-local.d

&lt;pre&gt;
[Suspend/hibernate permissions]
Identity=*
Action=org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

===Gestion du son===
Par défaut Pulseaudio est lancé lors de l'identification d'un utilisateur, du coup il est le seul qui puisse utiliser la carte son. Pour pallier à ce problème il faut rendre pulseaudio démon du système.
Pour cela il faut modifier plusieurs fichiers de configuration :
* /etc/default/pulseaudio
&lt;pre&gt;PULSEAUDIO_SYSTEM_START=1&lt;/pre&gt;

* /etc/pulse/daemon.conf
&lt;pre&gt;daemonize = yes
local-server-type = system&lt;/pre&gt;

* /etc/pulse/client.conf
&lt;pre&gt;autospawn = no&lt;/pre&gt;

* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot;
 usermod -aG pulse-access &lt;username&gt;

* On peut enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse

([http://askubuntu.com/questions/192522/how-do-i-configure-sound-with-pulseaudio-and-multiseat source] [http://disjunkt.com/jd/2010/en/multiseat-linux/multiseat-linux-system-wide-pulseaudio-for-routing-sounds-109/ source2])

====Modification des DE (Gnome, KDE, LXDE, ...)====
Par défaut les environnements graphique exécutent Pulseaudio en espace utilisateur, ce qu'il ne faut plus faire puisqu'il est partagé, ce qui ne devrait plus être possible si vous avez enlevé les utilisateurs des groupes. Donc il est nécessaire de désactiver cela avec l'outil de votre environnement de Bureau. Par exemple pour LXDE il s'agit de lxsession, si vous avez des problème pour cet environnement [http://wiki.lxde.org/en/Autostart cette page (et ses liens)] devrait vous aider

===Aller plus loin===
* Si l'on veut restreindre ce droit par utilisateur ou par groupe on modifie la ligne &quot;Identity&quot; comme il suit
 Identity=unix-user:toto;unix-group:plugdev
* Pour creuser un peu plus la configuration de ce système on peux aller voir [http://www.freedesktop.org/software/polkit/docs/0.105/pklocalauthority.8.html cette page] sur PolicyKit
* Il serait aussi intéressant de définir des ports USB réservés pour chaque siège, mais je ne sais pas encore comment gérer cela.
* Voir s'il est possible de dédier les voies arrière à un poste et les voies avant à un autre ...

==Conclusion==
Et voilà, tout est prêt pour le redémarrage et admirer les mires de login sur leur écran respectif.

===Avantages===
* Avec du matériel de récupération on peut facilement mettre en place cette solution peu coûteuse
* La satisfaction d'avoir un poste de travail exotique
* Permettre à une tierce personne de profiter de la puissance monstre des machines récentes sans se priver de notre fauteuil favori
* Se sentir moins seul avec une/plusieurs personnes à coté de soi :-p

===Inconvénients===
* Accélération graphique fortement diminuée
* Si on débranche les claviers/souries Xephyr ne sait pas les reconnaître automatiquement au branchement. Il faut relancer Xephyr en se déconnectant ou relancer LightDM
* Un &quot;saut&quot; des 2 écrans lors de la déconnexion d'un poste, mais cela est dû à LightDM et son changment de VT intempestif.
* Surveillance de chaque mise à jour de Xorg pour ne pas avoir de surprise au redémarrage
* Recompilation nécessaire en cas de mise à jour majeure de Xorg
* Gestion des montages USB non optimale
* Les voyants du clavier (pavé numérique, Majuscule et arrêt défil) ne réagissent plus, mais le clavier réagit correctement.
* Dans l'espace de travail de certains logiciel (VLC, Gimp) la souris peut avoir un affichage lacunaire. Par exemple sous GIMP elle n'est visible que lorsqu'on la déplace, avec VLS il y a un carré noir autour d'elle quand on la déplace le reste du temps elle disparait.

===Remerciement===
Un grand merci à ce site pour m'avoir prémaché le travail ... ce qui ne m'as pas empêché d'apporter quelques améliorations à sa solution.
http://beforeafterx.blogspot.fr/2012/08/configuration-of-ligthdm-12.html</text>
      <sha1>bez5z7c596u503tnacjs2j1g6fkn02w</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5411</id>
      <parentid>5168</parentid>
      <timestamp>2013-09-27T20:07:03Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <minor/>
      <comment>/* Xephyr-command.sh */</comment>
      <text xml:space="preserve" bytes="24178">Après avoir fait du [http://www.debian-fr.org/multiseat-plusieurs-utilisateurs-sur-1-pc-t6954.html#p188187 multiposte avec 2 CG], un changement de PC m'oblige à faire la même chose mais avec une seule carte. J'ai essayé de couvrir au maximum toutes les étapes de la mise en place de la solution.

----
==Choix des outils==
Tout d'abord le raisonnement pour le choix des outils à été le suivant.
==== Xorg ou Wayland ?====
La réponse a été rapide. Xorg clairement, Wayland est encore trop récent pour pouvoir le faire et aucun document ne traite pour l'instant de ce problème.

==== Xnest ou Xephyr ?====
Xephyr est largement plébiscité et Xnest semble tomber en désuétude. C'est par le développement de Tizen (ex-Meego) que Xephyr semble toujours actif et que de nouvelles fonctionnalités lui sont ajoutées. Intel s'en sert intensément et est énormément utilisé pour le développement d'application pour smartphone comme environnement de simulation. (http://www.phoronix.com/scan.php?page=news_item&amp;px=ODc1NQ).
Un souci avec Xephyr est que le support de evdev semble ne pas avoir été inclus dans les options de compilations. &quot;evdev&quot; permet de monopoliser les claviers et souris. Du coup il faut refaire le paquet soi-même.

==== Et la transition avec systemd ? ====
Il ne semble plus y avoir de problème particulier (http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org)

====Comment gérer 2 écran, 2 session avec une seule carte graphique ?====
Il faut savoir que Xephyr permet de se greffer sur n'importe quel serveur X afin d'afficher une autre session. Par exemple avec la commande &quot;Xephyr -query 127.0.0.1&quot; vous devez pouvoir vous connecter sur votre propre machine si le protocole &quot;XDMCP&quot; est activé sur votre &quot;DisplayManager&quot; (GDM, KDM, XDM, ...). Donc le but du jeu sera d'avoir un serveur X qui va &quot;supporter&quot; 2 fenêtres Xephyr. Ces deux dernières se verront affectées les claviers et les souris de manière exclusive.

====Et le DM ? Debian a adopté GDM(3) avec Gnome mais j'aimerais bien m'en passer.====
Avec GDM (celui de Gnome2) il existe un très bon tutoriel ici : http://netpatia.blogspot.fr/2009/06/multiseat-in-ubuntu-904.html 
Pour GDM3, le problème est que pour l'instant il ne reprend pas toutes les possibilitées de son ancienne version. 
https://live.gnome.org/GDM/ToDo
&quot;-- Allow per-display X Server commands 
		BrianCameron: The [server] and [server-foo] sections of the GDM configuration have been disabled. This means that users who depend on novel configurations which require special Xserver commands per-display is not available.&quot;

Donc bonne nouvelle, il fallait trouver une alternative en le nom de LightDM, qui est issu de Ubuntu ... 

===Prérequis===
Donc pour les pré-requis :
* Ajouter &quot;deb-src http://ftp.fr.debian.org/debian/ &lt;VersionDebian&gt; main contrib non-free&quot;
* Installer les paquage dpkg-dev, build-essential, devscripts, lightDM

==Reconstruction de Xephyr==
===Récupération des sources nécessaires===
On récupère toutes les sources du packet source xorg-server qui comprend Xephyr.

 $ apt-get source xserver-xephyr


Puis récupérer toutes les dépendances spécifique au paquet :

 $ apt-get build-dep xorg-server

Là il va télécharger un certain nombre de paquets de développement (&quot;-dev&quot;), ils sont marqués comme installés automatiquement, donc un deborphan devrait vous les enlever sans trop de problème. Sinon il existe cette commande pour être sûr qu'ils sont marqués en tant que &quot;installé automatiquement&quot;, puis un &quot;apt-get autoclean&quot; les supprimera.

===Reconfiguration===
Ensuite tout se passe dans le répertoire &quot;debian&quot;

 $ cd xorg-server-1.12.4/debian


On édite le fichier &quot;changlog&quot; pour monter de version le paquet que l'on va reconstruire. Il est possible de le faire en automatique avec la commande:

 debian/$ dch -n


L'option &quot;-n&quot; permet d'incrémenter le numéro de version de façon mineur, c'est à dire l'ajout de &quot;.1&quot; en fin de numéro de version.

Sinon pour le faire en manuel, il faut ajouter une ligne du type suivant au fichier:
&lt;pre&gt;
xorg-server (2:1.12.4-5.1) UNRELEASED; urgency=low

  * Non-maintainer upload.
  * ajout des paramètre pour Xephyr et evdev

 -- Vous &lt;vous@VotreMachine&gt;  Sun, 03 Mar 2013 22:21:32 +0100
&lt;/pre&gt;

Pour éviter de réinstaller tout Xorg avec le nouveau numéro de version il faut éditer le fichier &quot;debian/control&quot; et modifier la dépendance de Xephyr (ligne ~283). Pour cela il faut remplacer le 
&lt;pre&gt;
Depends :
  xserver-common (&gt;= ${source:Version})
&lt;/pre&gt;
Par :
&lt;pre&gt;
Depends :
  xserver-common (&gt;= 2:1.12.4-5)
&lt;/pre&gt;

Le numéro doit être en accord avec la version de votre Xorg actuellement installé sur votre machine. 
Sinon cette modification est directement possible dans le .deb, toujours dans le fichier &quot;DEBIAN/control&quot;. Pour cela il faut prendre le .deb que vous avez construit, le décompresser, modifier le fichier et faire la commande &quot;dpkg-deb -b &lt;nom du répertoire contenant les fichiers&gt;&quot;. Mais il est plus pratique de le faire avant.

Je ne vous conseille pas de mettre une numéro de version trop élevé car cela pourrait engendrer une incompatibilité avec les futurs versions de Xorg.

Ensuite nous allons modifier les options de compilation en éditant le fichier &quot;rules&quot;, c'est le Makefile de la construction du paquet.
Localisez &quot;confflags_main&quot; (ligne ~133) et ajoutez les lignes suivantes juste en dessous de &quot;--enable-kdrive&quot; (ligne ~156)

 --enable-kdrive-evdev \
 --enable-kdrive-mouse \
 --enable-kdrive-kbd \

===Recompilation===
Passons maintenant à la recompilation proprement dite, ressortez du répertoire debian et faites :
 $ fakeroot ./debian/rules binary

Et laissez la compilation et la création des paquets se faire ... cela peut prendre quelques minutes.

====Re-recompilation====
Si pour une raison il vous faut refaire entièrement la compilation il faut d'abord faire la commande suivante
 $ fakeroot ./debian/rules clean

Si c'est juste refaire les &quot;.deb&quot; (correction du numéro de dépendance, ...), alors cette commande suffit.
 $ fakeroot ./debian/rules binary-deb

===Installation du paquet obtenue===
Enfin pour installer votre paquet (qui se trouve dans le répertoire supérieur) il faut faire :
 #dpkg -i xserver-xephyr_1.12.4-5_i386.deb
Ou de manière graphique avec GDebi.
====Paquets déjà prêt====
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6_i386.deb.tar]]
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6.1_amd64.deb.tar]]

==Configuration de Xorg==
===Définition de l'existant===
Pour rappel le principe sera d'avoir une session X qui va héberger 2 sessions Xephyr qui serviront les différents sièges.
Tout d'abord nous allons faire un fichier de conf pour le serveur Xorg. Pour ne pas démarrer de rien on peut lancer la commande (en root) &quot;Xorg -configure&quot; qui génère le fichier &quot;xorg.conf.new&quot; dans &quot;/root&quot;. Ensuite on fait un petit &quot;xrandr&quot; pour identifier les sorties disponibles.
&lt;pre&gt;
$ xrandr

Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 593mm
&lt;/pre&gt;

&quot;DVI-0&quot; &amp; &quot;HDMI-0&quot; sont les 2 disponibles sur la machine. On peut aussi trouver du &quot;VGA-0&quot; ou &quot;LVDS&quot; pour les écrans de portables.

===Exemple de fichier de configuration===
Dans cet exemple on peut avoir un &quot;/etc/xorg.conf&quot; comme suivant :
&lt;pre&gt;
##################################################################
Section &quot;Monitor&quot;
	Identifier  &quot;HannsG&quot;
	Option      &quot;PreferredMode&quot; &quot;1920x1200&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
	Option		&quot;Primary&quot; &quot;true&quot;
EndSection

Section &quot;Monitor&quot;
	Identifier  &quot;Acer&quot;
	Option      &quot;PreferredMode&quot; &quot;1680x1050&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
EndSection

Section &quot;Device&quot;
	Identifier  &quot;card0&quot;
	Driver      &quot;radeon&quot;
	# Ici on associe les sorties video avec une section &quot;Monitor&quot;
	# On remarquera le &quot;Monitor&quot; devant le nom des sortie, c'est indispensable (cf : http://www.x.org/archive/current/doc/man/man5/xorg.conf.5.xhtml#heading12)
	Option      &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
	Option      &quot;Monitor-DVI-0&quot; &quot;Acer&quot;
EndSection

##################################################################

Section &quot;Screen&quot;
	Identifier  &quot;ecran1&quot;
	Device      &quot;card0&quot;
	Monitor     &quot;HansG&quot;
	DefaultDepth 24
	SubSection &quot;Display&quot;
 		Depth   24
		Virtual 3600 1200
	EndSubSection
EndSection

Section &quot;ServerLayout&quot;
	Identifier    &quot;dualscreen&quot;
	Screen      0  &quot;ecran1&quot;
EndSection
##################################################################
&lt;/pre&gt;

==Configuration de LightDM==
Nous allons maintenant regarder la configuration de LightDM d'un peu plus près. Le fichier de configuration par défaut expose toutes les options possibles du dit fichier. Nous allons garder le strict minimum
===lightdm.conf===
Pour cela éditons le fichier /etc/lightd/lightdm.conf

&lt;pre&gt;
[LightDM]
 greeter-user=root
 user-authority-in-system-dir=false

 [SeatDefaults]
 xserver-allow-tcp=false
 greeter-hide-users=false
 user-session=lightdm-xsession
 session-wrapper=/etc/X11/Xsession

 [Seat:1]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 1 -t 1680x1050 -P evdev -s /dev/input/by-id/usb-Logitech_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd -v bepo 
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 1
 greeter-session=lightdm-greeter

[Seat:2]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 2 -t 1920x1200 -P evdev -s /dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-path/platform-i8042-serio-0-event-kbd
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 2 -d 1680,0
 greeter-session=lightdm-greeter
&lt;/pre&gt;

Il y a plusieurs chose à savoir concernant le fonctionnement de LightDM afin de comprendre ce qui est fait.
-- La section &quot;SeatDefault&quot; est commune à tous les sièges définis après
-- Chaque &quot;Seat&quot; est exécuté dans l'ordre dans un VT différent et ce même si, dans notre cas, tout se passe dans le VT7 ([url=https://code.launchpad.net/~andrzejtp2010/lightdm/lightdm-trunk-xephyr-multiseat/+merge/120286]un patch[url] à été proposé pour palier à ce problème mais il n'a pas été accepté ... pour l'instant)
-- Chaque propriété de tous les &quot;Seat&quot; est lancée dans un ordre précis, d'abord tous les &quot;xserver-command&quot;, puis tous les &quot;greeter-setup-script&quot;, enfin tous les &quot;greeter-session&quot;. Si vous mettez d'autres propriétés elle seront exécutées suivant leur ordre pré-établi.
-- Si les &quot;greeter&quot; se terminent, lightDM coupe le &quot;xserver-command&quot; correspondant. De même si le &quot;xserver-command&quot; se termine le greeter est coupé.

Donc pour que tout se positionne correctement il faut
-- D'abord lancer le serveur X qui servira de support, ce qui est fait en le mettant en tant que premier &quot;Seat&quot;
-- Lancer les fenêtres Xephyr avec les optons qui vont bien, ce qui est fait avec le script &quot;Xephyr-command.sh&quot; et ses arguments
-- Simuler un &quot;greeter&quot; pour le &quot;Seat :0&quot; afin que le serveur X ne soit pas tué par lightDM, ce qui est fait avec le script &quot;fake-greeter&quot;
-- Exécuter un script qui va placer les fenêtre Xephyr si besoin et initialiser les variables d'environnement correctement, fait avec &quot;Xephyr-greeter-setup.sh&quot;
-- Exécuter les &quot;greeter&quot; dans les fenêtre Xephyr

===fake-greeter.desktop===
Pour le faux greeter du serveur X il faut créer un fichier dans &quot;/usr/share/xgreeters/fake-greeter.desktop&quot; et y copier son contenu :
&lt;pre&gt;
[Desktop Entry]
Name=LightDM fake greeter
Comment=This runs no greeter at all, it should only be run from LightDM
Exec=sleep infinity
Type=Application
X-Ubuntu-Gettext-Domain=lightdm
&lt;/pre&gt;

Après tout cela nous allons créer un script qui permettra de créer (&quot;Xephyr-command.sh&quot;) et un autre pour placer les fenêtre à l'écran (&quot;Xephyr-greeter-setup.sh&quot;).
Tout d'abord il est nécessaire d'installer le petit utilitaire &quot;wmctrl&quot; avec
 # aptitude install wmctrl
===Xephyr-command.sh===
Le contenu du fichier &quot;Xephyr-command.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -t, taille : Doit être de la forme 9999x9999, (dafaut = 1024x768)&quot;
  echo &quot;\t -s, sourie : /dev/input/[by-path|by-id]/...event-mouse&quot;
  echo &quot;\t -c, clavier : /dev/input/[by-path|by-id]/...event-kbd&quot;
  echo &quot;\t -l, layout : fr, es, en, ... (défaut = fr)&quot;
  echo &quot;\t -v, variant : fr, latin9, bepo, ... (défaut = &lt;vide&gt;)&quot;
  echo &quot;\t -P, Pilote : ephyr ou evdev (défaut = ephyr)&quot;
}

testExecutable() {
	XEPHYR=`whereis -b Xephyr | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
TAILLE=&quot;1024x768&quot;
SOURIE=
CLAVIER=
LAYOUT=&quot;fr&quot;
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
PILOTE=ephyr # Test = ephyr ; Prod = evdev

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XEPHYR&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;Xephyr : &quot;$XEPHYR
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:t:s:c:l:v:P:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		t|taille)
			TAILLE=&quot;$OPTARG&quot;
		;;

		s|sourie)
			SOURIE=$OPTARG
			if  ! [ -r $SOURIE ];then
				echo &quot;La sourie n'est pas accessible&quot;
				exit 3
			fi
		;;

		c|clavier)
			CLAVIER=$OPTARG
			if  ! [ -r $CLAVIER ];then
				echo &quot;Le clavier n'est pas accessible&quot;
				exit 4
			fi
		;;

		l|layout)
			LAYOUT=$OPTARG
		;;

		v|variant)
			VARIANT=$OPTARG
		;;

		P|Pilote)
			PILOTE=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variables d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Construction de la ligne d&quot;argument
OPTIONS=&quot;&quot;

if [ -n &quot;${TAILLE}&quot; ]; then
	OPTIONS=&quot; -screen ${TAILLE}&quot;
fi

if [ -n &quot;${CLAVIER}&quot; ]; then
	if [ -n &quot;${LAYOUT}&quot; ]; then
		OPTIONS=$OPTIONS&quot; -keybd $PILOTE,,device=${CLAVIER},xkbrules=evdev,xkbmodel=evdev,xkblayout=${LAYOUT}&quot;
		if [ -n &quot;${VARIANT}&quot; ]; then
			OPTIONS=$OPTIONS&quot;,xkbvariant=${VARIANT}&quot;
		fi
	fi
fi

if [ -n &quot;${SOURIE}&quot; ]; then
	OPTIONS=$OPTIONS&quot; -mouse $PILOTE,,device=${SOURIE}&quot;
fi

# Lancement de Xephyr en arrière plan
echo &quot;$XEPHYR -retro $OPTIONS :$POSTE&quot;
exec $XEPHYR -retro  $OPTIONS :$POSTE
&lt;/pre&gt;

Petite explication sur la dernière ligne. Le &quot;exec&quot; fait en sorte que ce soit le processus de Xephyr qui prend la place du script, donc il reprend le PID et tout ce qui va bien. Cela permet surtout que le signal USR1 que Xephyr lance au PPID, soit bien récupéré par LightDM et que ce dernier continue son fonctionnement normalement.

===Xephyr-greeter-setup.sh===
Le contenu du fichier &quot;Xephyr-greeter-setup.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p|--poste numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -d, --deplacement : de la forme 'x,y' (en pixel)&quot;
  echo &quot;\t -v, --vt : 7, 8, 9, 10, 11 (defaut = 7)&quot;
}

testExecutable() {
	XWININFO=`whereis -b xwininfo | cut -d' ' -f2`
	WMCTRL=`whereis -b wmctrl | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
DEPLACEMENT=
VT=7
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
ATTENTE=3 # temps en seconde avant de déclencher le &quot;chvt&quot; pour revenir sur le bon VT

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XWININFO&quot; -o -z &quot;$WMCTRL&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;xwininfo : &quot;$XWININFO
	echo &quot;wmctrl : &quot;$WMCTRL
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:d:v:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		d|deplacement)
			DEPLACEMENT=&quot;$OPTARG&quot;
		;;
	
		v|vt)
			VT=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Vieux Hack tout bancal pour revenir au bon VT sans patcher LightDM
(sleep $ATTENTE ; chvt $VT)&amp;

# Deplacement de la fenetre si besoin
if [ -n &quot;$DEPLACEMENT&quot; ]; then
	#On recherche l'ID de la fenêtre Xephyr
        XEP=`XAUTHORITY=/var/run/lightdm/root/:$XRACINE $XWININFO -root -children -all -display :$XRACINE | grep &quot;Xephyr on :$POSTE&quot; --max-count=1`;

	if [ -z &quot;$XEP&quot; ]; then
		echo &quot;fenêtre Xephyr non trouvé pour le poste $POSTE&quot;
		exit 5
	fi
    XEPHYR_WIN_ID=`echo ${XEP} | cut -d' ' -f1`;
    $WMCTRL 2&gt;&amp;1 -v -i -r ${XEPHYR_WIN_ID} -e 0,${DEPLACEMENT},-1,-1;
	if [ $? -ne 0 ]; then
		echo &quot;Erreur lors du déplacement de la fenêtre Xephyr pour le poste $POSTE&quot;
		exit 7
	fi
fi

# Mise en place des variables d'environnement pour le greeter (utile ?)
export DISPLAY=:$POSTE
export XAUTHORITY=/var/run/lightdm/root/:$POSTE
&lt;/pre&gt;
Petite explication concernant la ligne suivante
 (sleep $ATTENTE ; chvt $VT)&amp;
Comme je n'ai pas patché LightDM pour éviter le changement de VT et que Xephyr m'empêche de faire un Ctrl+Alt+7 (avec le driver evdev) pour revenir au bon VT, j'ai du mettre en place un automatisme. Certes c'est loin d'être parfait mais ça rempli correctement son office.

==Modification du système==
===Montage des périphériques USB===
On se rend assez vite compte que si l'on branche une clé USB elle n'apparait pas automatiquement sur le bureau et elle est encore moins &quot;montable&quot; par un utilisateur classique. Elle apparait bien dans la liste des périphériques accessibles (volet de gauche sur nautilus) mais il y a un problème de droit.
Un petit rappel de la chaine mise en jeu lorsque l'on branche une clé USB ou tout autre périphérique.
* Détection par le noyau de l'ajout d'un matériel
* Udev prend le relais et créé les périphériques block nécessaires dans /dev
* PolicyKit termine le travail en mettant en place les autorisations adéquates

Donc le blocage vient de ce dernier composant, il ne reconnaît pas une session Xephyr comme &quot;active&quot; et donc refuse le montage de ce type de périphérique par l'utilisateur lambda. Pour passer au delà de cette limitation on va redéfinir la règle de montage, pour cela il faut aller dans le répertoire suivant :
 /etc/polkit-1/localauthority/50-local.d
Et y créer un fichier, &quot;10-udisk.pkla&quot; par exemple
&lt;pre&gt;
[Allow mounting from Xephyr]
Identity=*
Action=org.freedesktop.udisks.change;org.freedesktop.udisks.drive-detach;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.filesystem-unmount-others
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

Voilà, avec Gnome3 dans le volet de gauche de Nautilus on peut cliquer sur l'icône de la clé USB pour qu'elle se monte correctement, idem avec LXDE.
Je recommande de désactiver l'automontage des périphériques USB afin que l'utilisateur qui branche la clé puisse la monter sans interférence.

===Gestion de l'énergie===
De la même manière que précédemment, par défaut il est impossible d'éteindre l'ordinateur depuis la session graphique (hors LightDM).
Donc pour cela on créé un nouveau fichier (20-upower.pkla) dans :
 /etc/polkit-1/localauthority/50-local.d

&lt;pre&gt;
[Suspend/hibernate permissions]
Identity=*
Action=org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

===Gestion du son===
Par défaut Pulseaudio est lancé lors de l'identification d'un utilisateur, du coup il est le seul qui puisse utiliser la carte son. Pour pallier à ce problème il faut rendre pulseaudio démon du système.
Pour cela il faut modifier plusieurs fichiers de configuration :
* /etc/default/pulseaudio
&lt;pre&gt;PULSEAUDIO_SYSTEM_START=1&lt;/pre&gt;

* /etc/pulse/daemon.conf
&lt;pre&gt;daemonize = yes
local-server-type = system&lt;/pre&gt;

* /etc/pulse/client.conf
&lt;pre&gt;autospawn = no&lt;/pre&gt;

* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot;
 usermod -aG pulse-access &lt;username&gt;

* On peut enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse

([http://askubuntu.com/questions/192522/how-do-i-configure-sound-with-pulseaudio-and-multiseat source] [http://disjunkt.com/jd/2010/en/multiseat-linux/multiseat-linux-system-wide-pulseaudio-for-routing-sounds-109/ source2])

====Modification des DE (Gnome, KDE, LXDE, ...)====
Par défaut les environnements graphique exécutent Pulseaudio en espace utilisateur, ce qu'il ne faut plus faire puisqu'il est partagé, ce qui ne devrait plus être possible si vous avez enlevé les utilisateurs des groupes. Donc il est nécessaire de désactiver cela avec l'outil de votre environnement de Bureau. Par exemple pour LXDE il s'agit de lxsession, si vous avez des problème pour cet environnement [http://wiki.lxde.org/en/Autostart cette page (et ses liens)] devrait vous aider

===Aller plus loin===
* Si l'on veut restreindre ce droit par utilisateur ou par groupe on modifie la ligne &quot;Identity&quot; comme il suit
 Identity=unix-user:toto;unix-group:plugdev
* Pour creuser un peu plus la configuration de ce système on peux aller voir [http://www.freedesktop.org/software/polkit/docs/0.105/pklocalauthority.8.html cette page] sur PolicyKit
* Il serait aussi intéressant de définir des ports USB réservés pour chaque siège, mais je ne sais pas encore comment gérer cela.
* Voir s'il est possible de dédier les voies arrière à un poste et les voies avant à un autre ...

==Conclusion==
Et voilà, tout est prêt pour le redémarrage et admirer les mires de login sur leur écran respectif.

===Avantages===
* Avec du matériel de récupération on peut facilement mettre en place cette solution peu coûteuse
* La satisfaction d'avoir un poste de travail exotique
* Permettre à une tierce personne de profiter de la puissance monstre des machines récentes sans se priver de notre fauteuil favori
* Se sentir moins seul avec une/plusieurs personnes à coté de soi :-p

===Inconvénients===
* Accélération graphique fortement diminuée
* Si on débranche les claviers/souries Xephyr ne sait pas les reconnaître automatiquement au branchement. Il faut relancer Xephyr en se déconnectant ou relancer LightDM
* Un &quot;saut&quot; des 2 écrans lors de la déconnexion d'un poste, mais cela est dû à LightDM et son changment de VT intempestif.
* Surveillance de chaque mise à jour de Xorg pour ne pas avoir de surprise au redémarrage
* Recompilation nécessaire en cas de mise à jour majeure de Xorg
* Gestion des montages USB non optimale
* Les voyants du clavier (pavé numérique, Majuscule et arrêt défil) ne réagissent plus, mais le clavier réagit correctement.
* Dans l'espace de travail de certains logiciel (VLC, Gimp) la souris peut avoir un affichage lacunaire. Par exemple sous GIMP elle n'est visible que lorsqu'on la déplace, avec VLS il y a un carré noir autour d'elle quand on la déplace le reste du temps elle disparait.

===Remerciement===
Un grand merci à ce site pour m'avoir prémaché le travail ... ce qui ne m'as pas empêché d'apporter quelques améliorations à sa solution.
http://beforeafterx.blogspot.fr/2012/08/configuration-of-ligthdm-12.html</text>
      <sha1>fjmqksfcxgmorg9r1qyebbswzmtxoe3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5412</id>
      <parentid>5411</parentid>
      <timestamp>2013-09-27T20:10:39Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <comment>/* lightdm.conf */</comment>
      <text xml:space="preserve" bytes="24291">Après avoir fait du [http://www.debian-fr.org/multiseat-plusieurs-utilisateurs-sur-1-pc-t6954.html#p188187 multiposte avec 2 CG], un changement de PC m'oblige à faire la même chose mais avec une seule carte. J'ai essayé de couvrir au maximum toutes les étapes de la mise en place de la solution.

----
==Choix des outils==
Tout d'abord le raisonnement pour le choix des outils à été le suivant.
==== Xorg ou Wayland ?====
La réponse a été rapide. Xorg clairement, Wayland est encore trop récent pour pouvoir le faire et aucun document ne traite pour l'instant de ce problème.

==== Xnest ou Xephyr ?====
Xephyr est largement plébiscité et Xnest semble tomber en désuétude. C'est par le développement de Tizen (ex-Meego) que Xephyr semble toujours actif et que de nouvelles fonctionnalités lui sont ajoutées. Intel s'en sert intensément et est énormément utilisé pour le développement d'application pour smartphone comme environnement de simulation. (http://www.phoronix.com/scan.php?page=news_item&amp;px=ODc1NQ).
Un souci avec Xephyr est que le support de evdev semble ne pas avoir été inclus dans les options de compilations. &quot;evdev&quot; permet de monopoliser les claviers et souris. Du coup il faut refaire le paquet soi-même.

==== Et la transition avec systemd ? ====
Il ne semble plus y avoir de problème particulier (http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org)

====Comment gérer 2 écran, 2 session avec une seule carte graphique ?====
Il faut savoir que Xephyr permet de se greffer sur n'importe quel serveur X afin d'afficher une autre session. Par exemple avec la commande &quot;Xephyr -query 127.0.0.1&quot; vous devez pouvoir vous connecter sur votre propre machine si le protocole &quot;XDMCP&quot; est activé sur votre &quot;DisplayManager&quot; (GDM, KDM, XDM, ...). Donc le but du jeu sera d'avoir un serveur X qui va &quot;supporter&quot; 2 fenêtres Xephyr. Ces deux dernières se verront affectées les claviers et les souris de manière exclusive.

====Et le DM ? Debian a adopté GDM(3) avec Gnome mais j'aimerais bien m'en passer.====
Avec GDM (celui de Gnome2) il existe un très bon tutoriel ici : http://netpatia.blogspot.fr/2009/06/multiseat-in-ubuntu-904.html 
Pour GDM3, le problème est que pour l'instant il ne reprend pas toutes les possibilitées de son ancienne version. 
https://live.gnome.org/GDM/ToDo
&quot;-- Allow per-display X Server commands 
		BrianCameron: The [server] and [server-foo] sections of the GDM configuration have been disabled. This means that users who depend on novel configurations which require special Xserver commands per-display is not available.&quot;

Donc bonne nouvelle, il fallait trouver une alternative en le nom de LightDM, qui est issu de Ubuntu ... 

===Prérequis===
Donc pour les pré-requis :
* Ajouter &quot;deb-src http://ftp.fr.debian.org/debian/ &lt;VersionDebian&gt; main contrib non-free&quot;
* Installer les paquage dpkg-dev, build-essential, devscripts, lightDM

==Reconstruction de Xephyr==
===Récupération des sources nécessaires===
On récupère toutes les sources du packet source xorg-server qui comprend Xephyr.

 $ apt-get source xserver-xephyr


Puis récupérer toutes les dépendances spécifique au paquet :

 $ apt-get build-dep xorg-server

Là il va télécharger un certain nombre de paquets de développement (&quot;-dev&quot;), ils sont marqués comme installés automatiquement, donc un deborphan devrait vous les enlever sans trop de problème. Sinon il existe cette commande pour être sûr qu'ils sont marqués en tant que &quot;installé automatiquement&quot;, puis un &quot;apt-get autoclean&quot; les supprimera.

===Reconfiguration===
Ensuite tout se passe dans le répertoire &quot;debian&quot;

 $ cd xorg-server-1.12.4/debian


On édite le fichier &quot;changlog&quot; pour monter de version le paquet que l'on va reconstruire. Il est possible de le faire en automatique avec la commande:

 debian/$ dch -n


L'option &quot;-n&quot; permet d'incrémenter le numéro de version de façon mineur, c'est à dire l'ajout de &quot;.1&quot; en fin de numéro de version.

Sinon pour le faire en manuel, il faut ajouter une ligne du type suivant au fichier:
&lt;pre&gt;
xorg-server (2:1.12.4-5.1) UNRELEASED; urgency=low

  * Non-maintainer upload.
  * ajout des paramètre pour Xephyr et evdev

 -- Vous &lt;vous@VotreMachine&gt;  Sun, 03 Mar 2013 22:21:32 +0100
&lt;/pre&gt;

Pour éviter de réinstaller tout Xorg avec le nouveau numéro de version il faut éditer le fichier &quot;debian/control&quot; et modifier la dépendance de Xephyr (ligne ~283). Pour cela il faut remplacer le 
&lt;pre&gt;
Depends :
  xserver-common (&gt;= ${source:Version})
&lt;/pre&gt;
Par :
&lt;pre&gt;
Depends :
  xserver-common (&gt;= 2:1.12.4-5)
&lt;/pre&gt;

Le numéro doit être en accord avec la version de votre Xorg actuellement installé sur votre machine. 
Sinon cette modification est directement possible dans le .deb, toujours dans le fichier &quot;DEBIAN/control&quot;. Pour cela il faut prendre le .deb que vous avez construit, le décompresser, modifier le fichier et faire la commande &quot;dpkg-deb -b &lt;nom du répertoire contenant les fichiers&gt;&quot;. Mais il est plus pratique de le faire avant.

Je ne vous conseille pas de mettre une numéro de version trop élevé car cela pourrait engendrer une incompatibilité avec les futurs versions de Xorg.

Ensuite nous allons modifier les options de compilation en éditant le fichier &quot;rules&quot;, c'est le Makefile de la construction du paquet.
Localisez &quot;confflags_main&quot; (ligne ~133) et ajoutez les lignes suivantes juste en dessous de &quot;--enable-kdrive&quot; (ligne ~156)

 --enable-kdrive-evdev \
 --enable-kdrive-mouse \
 --enable-kdrive-kbd \

===Recompilation===
Passons maintenant à la recompilation proprement dite, ressortez du répertoire debian et faites :
 $ fakeroot ./debian/rules binary

Et laissez la compilation et la création des paquets se faire ... cela peut prendre quelques minutes.

====Re-recompilation====
Si pour une raison il vous faut refaire entièrement la compilation il faut d'abord faire la commande suivante
 $ fakeroot ./debian/rules clean

Si c'est juste refaire les &quot;.deb&quot; (correction du numéro de dépendance, ...), alors cette commande suffit.
 $ fakeroot ./debian/rules binary-deb

===Installation du paquet obtenue===
Enfin pour installer votre paquet (qui se trouve dans le répertoire supérieur) il faut faire :
 #dpkg -i xserver-xephyr_1.12.4-5_i386.deb
Ou de manière graphique avec GDebi.
====Paquets déjà prêt====
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6_i386.deb.tar]]
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6.1_amd64.deb.tar]]

==Configuration de Xorg==
===Définition de l'existant===
Pour rappel le principe sera d'avoir une session X qui va héberger 2 sessions Xephyr qui serviront les différents sièges.
Tout d'abord nous allons faire un fichier de conf pour le serveur Xorg. Pour ne pas démarrer de rien on peut lancer la commande (en root) &quot;Xorg -configure&quot; qui génère le fichier &quot;xorg.conf.new&quot; dans &quot;/root&quot;. Ensuite on fait un petit &quot;xrandr&quot; pour identifier les sorties disponibles.
&lt;pre&gt;
$ xrandr

Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 593mm
&lt;/pre&gt;

&quot;DVI-0&quot; &amp; &quot;HDMI-0&quot; sont les 2 disponibles sur la machine. On peut aussi trouver du &quot;VGA-0&quot; ou &quot;LVDS&quot; pour les écrans de portables.

===Exemple de fichier de configuration===
Dans cet exemple on peut avoir un &quot;/etc/xorg.conf&quot; comme suivant :
&lt;pre&gt;
##################################################################
Section &quot;Monitor&quot;
	Identifier  &quot;HannsG&quot;
	Option      &quot;PreferredMode&quot; &quot;1920x1200&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
	Option		&quot;Primary&quot; &quot;true&quot;
EndSection

Section &quot;Monitor&quot;
	Identifier  &quot;Acer&quot;
	Option      &quot;PreferredMode&quot; &quot;1680x1050&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
EndSection

Section &quot;Device&quot;
	Identifier  &quot;card0&quot;
	Driver      &quot;radeon&quot;
	# Ici on associe les sorties video avec une section &quot;Monitor&quot;
	# On remarquera le &quot;Monitor&quot; devant le nom des sortie, c'est indispensable (cf : http://www.x.org/archive/current/doc/man/man5/xorg.conf.5.xhtml#heading12)
	Option      &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
	Option      &quot;Monitor-DVI-0&quot; &quot;Acer&quot;
EndSection

##################################################################

Section &quot;Screen&quot;
	Identifier  &quot;ecran1&quot;
	Device      &quot;card0&quot;
	Monitor     &quot;HansG&quot;
	DefaultDepth 24
	SubSection &quot;Display&quot;
 		Depth   24
		Virtual 3600 1200
	EndSubSection
EndSection

Section &quot;ServerLayout&quot;
	Identifier    &quot;dualscreen&quot;
	Screen      0  &quot;ecran1&quot;
EndSection
##################################################################
&lt;/pre&gt;

==Configuration de LightDM==
Nous allons maintenant regarder la configuration de LightDM d'un peu plus près. Le fichier de configuration par défaut expose toutes les options possibles du dit fichier. Nous allons garder le strict minimum
===lightdm.conf===
Pour cela éditons le fichier /etc/lightd/lightdm.conf

&lt;pre&gt;
[LightDM]
 greeter-user=root
 user-authority-in-system-dir=false

 [SeatDefaults]
 xserver-allow-tcp=false
 greeter-hide-users=false
 user-session=lightdm-xsession
 session-wrapper=/etc/X11/Xsession

 [Seat:0]
 xserver-command=nohup X -br -dpms -s 0 -novtswitch -nocursor
 greeter-session=fake-greeter

 [Seat:1]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 1 -t 1680x1050 -P evdev -s /dev/input/by-id/usb-Logitech_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd -v bepo 
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 1
 greeter-session=lightdm-greeter

[Seat:2]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 2 -t 1920x1200 -P evdev -s /dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-path/platform-i8042-serio-0-event-kbd
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 2 -d 1680,0
 greeter-session=lightdm-greeter
&lt;/pre&gt;

Il y a plusieurs chose à savoir concernant le fonctionnement de LightDM afin de comprendre ce qui est fait.
-- La section &quot;SeatDefault&quot; est commune à tous les sièges définis après
-- Chaque &quot;Seat&quot; est exécuté dans l'ordre dans un VT différent et ce même si, dans notre cas, tout se passe dans le VT7 ([url=https://code.launchpad.net/~andrzejtp2010/lightdm/lightdm-trunk-xephyr-multiseat/+merge/120286]un patch[url] à été proposé pour palier à ce problème mais il n'a pas été accepté ... pour l'instant)
-- Chaque propriété de tous les &quot;Seat&quot; est lancée dans un ordre précis, d'abord tous les &quot;xserver-command&quot;, puis tous les &quot;greeter-setup-script&quot;, enfin tous les &quot;greeter-session&quot;. Si vous mettez d'autres propriétés elle seront exécutées suivant leur ordre pré-établi.
-- Si les &quot;greeter&quot; se terminent, lightDM coupe le &quot;xserver-command&quot; correspondant. De même si le &quot;xserver-command&quot; se termine le greeter est coupé.

Donc pour que tout se positionne correctement il faut
-- D'abord lancer le serveur X qui servira de support, ce qui est fait en le mettant en tant que premier poste (&quot;Seat:0&quot;)
-- Lancer les fenêtres Xephyr avec les optons qui vont bien, ce qui est fait avec le script &quot;Xephyr-command.sh&quot; et ses arguments
-- Simuler un &quot;greeter&quot; pour le &quot;Seat :0&quot; afin que le serveur X ne soit pas tué par lightDM, ce qui est fait avec le script &quot;fake-greeter&quot;
-- Exécuter un script qui va placer les fenêtre Xephyr si besoin et initialiser les variables d'environnement correctement, fait avec &quot;Xephyr-greeter-setup.sh&quot;
-- Exécuter les &quot;greeter&quot; dans les fenêtre Xephyr

===fake-greeter.desktop===
Pour le faux greeter du serveur X il faut créer un fichier dans &quot;/usr/share/xgreeters/fake-greeter.desktop&quot; et y copier son contenu :
&lt;pre&gt;
[Desktop Entry]
Name=LightDM fake greeter
Comment=This runs no greeter at all, it should only be run from LightDM
Exec=sleep infinity
Type=Application
X-Ubuntu-Gettext-Domain=lightdm
&lt;/pre&gt;

Après tout cela nous allons créer un script qui permettra de créer (&quot;Xephyr-command.sh&quot;) et un autre pour placer les fenêtre à l'écran (&quot;Xephyr-greeter-setup.sh&quot;).
Tout d'abord il est nécessaire d'installer le petit utilitaire &quot;wmctrl&quot; avec
 # aptitude install wmctrl
===Xephyr-command.sh===
Le contenu du fichier &quot;Xephyr-command.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -t, taille : Doit être de la forme 9999x9999, (dafaut = 1024x768)&quot;
  echo &quot;\t -s, sourie : /dev/input/[by-path|by-id]/...event-mouse&quot;
  echo &quot;\t -c, clavier : /dev/input/[by-path|by-id]/...event-kbd&quot;
  echo &quot;\t -l, layout : fr, es, en, ... (défaut = fr)&quot;
  echo &quot;\t -v, variant : fr, latin9, bepo, ... (défaut = &lt;vide&gt;)&quot;
  echo &quot;\t -P, Pilote : ephyr ou evdev (défaut = ephyr)&quot;
}

testExecutable() {
	XEPHYR=`whereis -b Xephyr | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
TAILLE=&quot;1024x768&quot;
SOURIE=
CLAVIER=
LAYOUT=&quot;fr&quot;
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
PILOTE=ephyr # Test = ephyr ; Prod = evdev

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XEPHYR&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;Xephyr : &quot;$XEPHYR
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:t:s:c:l:v:P:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		t|taille)
			TAILLE=&quot;$OPTARG&quot;
		;;

		s|sourie)
			SOURIE=$OPTARG
			if  ! [ -r $SOURIE ];then
				echo &quot;La sourie n'est pas accessible&quot;
				exit 3
			fi
		;;

		c|clavier)
			CLAVIER=$OPTARG
			if  ! [ -r $CLAVIER ];then
				echo &quot;Le clavier n'est pas accessible&quot;
				exit 4
			fi
		;;

		l|layout)
			LAYOUT=$OPTARG
		;;

		v|variant)
			VARIANT=$OPTARG
		;;

		P|Pilote)
			PILOTE=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variables d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Construction de la ligne d&quot;argument
OPTIONS=&quot;&quot;

if [ -n &quot;${TAILLE}&quot; ]; then
	OPTIONS=&quot; -screen ${TAILLE}&quot;
fi

if [ -n &quot;${CLAVIER}&quot; ]; then
	if [ -n &quot;${LAYOUT}&quot; ]; then
		OPTIONS=$OPTIONS&quot; -keybd $PILOTE,,device=${CLAVIER},xkbrules=evdev,xkbmodel=evdev,xkblayout=${LAYOUT}&quot;
		if [ -n &quot;${VARIANT}&quot; ]; then
			OPTIONS=$OPTIONS&quot;,xkbvariant=${VARIANT}&quot;
		fi
	fi
fi

if [ -n &quot;${SOURIE}&quot; ]; then
	OPTIONS=$OPTIONS&quot; -mouse $PILOTE,,device=${SOURIE}&quot;
fi

# Lancement de Xephyr en arrière plan
echo &quot;$XEPHYR -retro $OPTIONS :$POSTE&quot;
exec $XEPHYR -retro  $OPTIONS :$POSTE
&lt;/pre&gt;

Petite explication sur la dernière ligne. Le &quot;exec&quot; fait en sorte que ce soit le processus de Xephyr qui prend la place du script, donc il reprend le PID et tout ce qui va bien. Cela permet surtout que le signal USR1 que Xephyr lance au PPID, soit bien récupéré par LightDM et que ce dernier continue son fonctionnement normalement.

===Xephyr-greeter-setup.sh===
Le contenu du fichier &quot;Xephyr-greeter-setup.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p|--poste numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -d, --deplacement : de la forme 'x,y' (en pixel)&quot;
  echo &quot;\t -v, --vt : 7, 8, 9, 10, 11 (defaut = 7)&quot;
}

testExecutable() {
	XWININFO=`whereis -b xwininfo | cut -d' ' -f2`
	WMCTRL=`whereis -b wmctrl | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
DEPLACEMENT=
VT=7
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
ATTENTE=3 # temps en seconde avant de déclencher le &quot;chvt&quot; pour revenir sur le bon VT

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XWININFO&quot; -o -z &quot;$WMCTRL&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;xwininfo : &quot;$XWININFO
	echo &quot;wmctrl : &quot;$WMCTRL
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:d:v:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		d|deplacement)
			DEPLACEMENT=&quot;$OPTARG&quot;
		;;
	
		v|vt)
			VT=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Vieux Hack tout bancal pour revenir au bon VT sans patcher LightDM
(sleep $ATTENTE ; chvt $VT)&amp;

# Deplacement de la fenetre si besoin
if [ -n &quot;$DEPLACEMENT&quot; ]; then
	#On recherche l'ID de la fenêtre Xephyr
        XEP=`XAUTHORITY=/var/run/lightdm/root/:$XRACINE $XWININFO -root -children -all -display :$XRACINE | grep &quot;Xephyr on :$POSTE&quot; --max-count=1`;

	if [ -z &quot;$XEP&quot; ]; then
		echo &quot;fenêtre Xephyr non trouvé pour le poste $POSTE&quot;
		exit 5
	fi
    XEPHYR_WIN_ID=`echo ${XEP} | cut -d' ' -f1`;
    $WMCTRL 2&gt;&amp;1 -v -i -r ${XEPHYR_WIN_ID} -e 0,${DEPLACEMENT},-1,-1;
	if [ $? -ne 0 ]; then
		echo &quot;Erreur lors du déplacement de la fenêtre Xephyr pour le poste $POSTE&quot;
		exit 7
	fi
fi

# Mise en place des variables d'environnement pour le greeter (utile ?)
export DISPLAY=:$POSTE
export XAUTHORITY=/var/run/lightdm/root/:$POSTE
&lt;/pre&gt;
Petite explication concernant la ligne suivante
 (sleep $ATTENTE ; chvt $VT)&amp;
Comme je n'ai pas patché LightDM pour éviter le changement de VT et que Xephyr m'empêche de faire un Ctrl+Alt+7 (avec le driver evdev) pour revenir au bon VT, j'ai du mettre en place un automatisme. Certes c'est loin d'être parfait mais ça rempli correctement son office.

==Modification du système==
===Montage des périphériques USB===
On se rend assez vite compte que si l'on branche une clé USB elle n'apparait pas automatiquement sur le bureau et elle est encore moins &quot;montable&quot; par un utilisateur classique. Elle apparait bien dans la liste des périphériques accessibles (volet de gauche sur nautilus) mais il y a un problème de droit.
Un petit rappel de la chaine mise en jeu lorsque l'on branche une clé USB ou tout autre périphérique.
* Détection par le noyau de l'ajout d'un matériel
* Udev prend le relais et créé les périphériques block nécessaires dans /dev
* PolicyKit termine le travail en mettant en place les autorisations adéquates

Donc le blocage vient de ce dernier composant, il ne reconnaît pas une session Xephyr comme &quot;active&quot; et donc refuse le montage de ce type de périphérique par l'utilisateur lambda. Pour passer au delà de cette limitation on va redéfinir la règle de montage, pour cela il faut aller dans le répertoire suivant :
 /etc/polkit-1/localauthority/50-local.d
Et y créer un fichier, &quot;10-udisk.pkla&quot; par exemple
&lt;pre&gt;
[Allow mounting from Xephyr]
Identity=*
Action=org.freedesktop.udisks.change;org.freedesktop.udisks.drive-detach;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.filesystem-unmount-others
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

Voilà, avec Gnome3 dans le volet de gauche de Nautilus on peut cliquer sur l'icône de la clé USB pour qu'elle se monte correctement, idem avec LXDE.
Je recommande de désactiver l'automontage des périphériques USB afin que l'utilisateur qui branche la clé puisse la monter sans interférence.

===Gestion de l'énergie===
De la même manière que précédemment, par défaut il est impossible d'éteindre l'ordinateur depuis la session graphique (hors LightDM).
Donc pour cela on créé un nouveau fichier (20-upower.pkla) dans :
 /etc/polkit-1/localauthority/50-local.d

&lt;pre&gt;
[Suspend/hibernate permissions]
Identity=*
Action=org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

===Gestion du son===
Par défaut Pulseaudio est lancé lors de l'identification d'un utilisateur, du coup il est le seul qui puisse utiliser la carte son. Pour pallier à ce problème il faut rendre pulseaudio démon du système.
Pour cela il faut modifier plusieurs fichiers de configuration :
* /etc/default/pulseaudio
&lt;pre&gt;PULSEAUDIO_SYSTEM_START=1&lt;/pre&gt;

* /etc/pulse/daemon.conf
&lt;pre&gt;daemonize = yes
local-server-type = system&lt;/pre&gt;

* /etc/pulse/client.conf
&lt;pre&gt;autospawn = no&lt;/pre&gt;

* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot;
 usermod -aG pulse-access &lt;username&gt;

* On peut enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse

([http://askubuntu.com/questions/192522/how-do-i-configure-sound-with-pulseaudio-and-multiseat source] [http://disjunkt.com/jd/2010/en/multiseat-linux/multiseat-linux-system-wide-pulseaudio-for-routing-sounds-109/ source2])

====Modification des DE (Gnome, KDE, LXDE, ...)====
Par défaut les environnements graphique exécutent Pulseaudio en espace utilisateur, ce qu'il ne faut plus faire puisqu'il est partagé, ce qui ne devrait plus être possible si vous avez enlevé les utilisateurs des groupes. Donc il est nécessaire de désactiver cela avec l'outil de votre environnement de Bureau. Par exemple pour LXDE il s'agit de lxsession, si vous avez des problème pour cet environnement [http://wiki.lxde.org/en/Autostart cette page (et ses liens)] devrait vous aider

===Aller plus loin===
* Si l'on veut restreindre ce droit par utilisateur ou par groupe on modifie la ligne &quot;Identity&quot; comme il suit
 Identity=unix-user:toto;unix-group:plugdev
* Pour creuser un peu plus la configuration de ce système on peux aller voir [http://www.freedesktop.org/software/polkit/docs/0.105/pklocalauthority.8.html cette page] sur PolicyKit
* Il serait aussi intéressant de définir des ports USB réservés pour chaque siège, mais je ne sais pas encore comment gérer cela.
* Voir s'il est possible de dédier les voies arrière à un poste et les voies avant à un autre ...

==Conclusion==
Et voilà, tout est prêt pour le redémarrage et admirer les mires de login sur leur écran respectif.

===Avantages===
* Avec du matériel de récupération on peut facilement mettre en place cette solution peu coûteuse
* La satisfaction d'avoir un poste de travail exotique
* Permettre à une tierce personne de profiter de la puissance monstre des machines récentes sans se priver de notre fauteuil favori
* Se sentir moins seul avec une/plusieurs personnes à coté de soi :-p

===Inconvénients===
* Accélération graphique fortement diminuée
* Si on débranche les claviers/souries Xephyr ne sait pas les reconnaître automatiquement au branchement. Il faut relancer Xephyr en se déconnectant ou relancer LightDM
* Un &quot;saut&quot; des 2 écrans lors de la déconnexion d'un poste, mais cela est dû à LightDM et son changment de VT intempestif.
* Surveillance de chaque mise à jour de Xorg pour ne pas avoir de surprise au redémarrage
* Recompilation nécessaire en cas de mise à jour majeure de Xorg
* Gestion des montages USB non optimale
* Les voyants du clavier (pavé numérique, Majuscule et arrêt défil) ne réagissent plus, mais le clavier réagit correctement.
* Dans l'espace de travail de certains logiciel (VLC, Gimp) la souris peut avoir un affichage lacunaire. Par exemple sous GIMP elle n'est visible que lorsqu'on la déplace, avec VLS il y a un carré noir autour d'elle quand on la déplace le reste du temps elle disparait.

===Remerciement===
Un grand merci à ce site pour m'avoir prémaché le travail ... ce qui ne m'as pas empêché d'apporter quelques améliorations à sa solution.
http://beforeafterx.blogspot.fr/2012/08/configuration-of-ligthdm-12.html</text>
      <sha1>4npwhwjrd6fi8niym50st5po19y5ulh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5416</id>
      <parentid>5412</parentid>
      <timestamp>2013-10-02T20:26:47Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <comment>/* Récupération des sources nécessaires */</comment>
      <text xml:space="preserve" bytes="24291">Après avoir fait du [http://www.debian-fr.org/multiseat-plusieurs-utilisateurs-sur-1-pc-t6954.html#p188187 multiposte avec 2 CG], un changement de PC m'oblige à faire la même chose mais avec une seule carte. J'ai essayé de couvrir au maximum toutes les étapes de la mise en place de la solution.

----
==Choix des outils==
Tout d'abord le raisonnement pour le choix des outils à été le suivant.
==== Xorg ou Wayland ?====
La réponse a été rapide. Xorg clairement, Wayland est encore trop récent pour pouvoir le faire et aucun document ne traite pour l'instant de ce problème.

==== Xnest ou Xephyr ?====
Xephyr est largement plébiscité et Xnest semble tomber en désuétude. C'est par le développement de Tizen (ex-Meego) que Xephyr semble toujours actif et que de nouvelles fonctionnalités lui sont ajoutées. Intel s'en sert intensément et est énormément utilisé pour le développement d'application pour smartphone comme environnement de simulation. (http://www.phoronix.com/scan.php?page=news_item&amp;px=ODc1NQ).
Un souci avec Xephyr est que le support de evdev semble ne pas avoir été inclus dans les options de compilations. &quot;evdev&quot; permet de monopoliser les claviers et souris. Du coup il faut refaire le paquet soi-même.

==== Et la transition avec systemd ? ====
Il ne semble plus y avoir de problème particulier (http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org)

====Comment gérer 2 écran, 2 session avec une seule carte graphique ?====
Il faut savoir que Xephyr permet de se greffer sur n'importe quel serveur X afin d'afficher une autre session. Par exemple avec la commande &quot;Xephyr -query 127.0.0.1&quot; vous devez pouvoir vous connecter sur votre propre machine si le protocole &quot;XDMCP&quot; est activé sur votre &quot;DisplayManager&quot; (GDM, KDM, XDM, ...). Donc le but du jeu sera d'avoir un serveur X qui va &quot;supporter&quot; 2 fenêtres Xephyr. Ces deux dernières se verront affectées les claviers et les souris de manière exclusive.

====Et le DM ? Debian a adopté GDM(3) avec Gnome mais j'aimerais bien m'en passer.====
Avec GDM (celui de Gnome2) il existe un très bon tutoriel ici : http://netpatia.blogspot.fr/2009/06/multiseat-in-ubuntu-904.html 
Pour GDM3, le problème est que pour l'instant il ne reprend pas toutes les possibilitées de son ancienne version. 
https://live.gnome.org/GDM/ToDo
&quot;-- Allow per-display X Server commands 
		BrianCameron: The [server] and [server-foo] sections of the GDM configuration have been disabled. This means that users who depend on novel configurations which require special Xserver commands per-display is not available.&quot;

Donc bonne nouvelle, il fallait trouver une alternative en le nom de LightDM, qui est issu de Ubuntu ... 

===Prérequis===
Donc pour les pré-requis :
* Ajouter &quot;deb-src http://ftp.fr.debian.org/debian/ &lt;VersionDebian&gt; main contrib non-free&quot;
* Installer les paquage dpkg-dev, build-essential, devscripts, lightDM

==Reconstruction de Xephyr==
===Récupération des sources nécessaires===
On récupère toutes les sources du packet source xorg-server qui comprend Xephyr.

 $ apt-get source xserver-xephyr


Puis récupérer toutes les dépendances spécifique au paquet :

 # apt-get build-dep xorg-server

Là il va télécharger un certain nombre de paquets de développement (&quot;-dev&quot;), ils sont marqués comme installés automatiquement, donc un deborphan devrait vous les enlever sans trop de problème. Sinon il existe cette commande pour être sûr qu'ils sont marqués en tant que &quot;installé automatiquement&quot;, puis un &quot;apt-get autoclean&quot; les supprimera.

===Reconfiguration===
Ensuite tout se passe dans le répertoire &quot;debian&quot;

 $ cd xorg-server-1.12.4/debian


On édite le fichier &quot;changlog&quot; pour monter de version le paquet que l'on va reconstruire. Il est possible de le faire en automatique avec la commande:

 debian/$ dch -n


L'option &quot;-n&quot; permet d'incrémenter le numéro de version de façon mineur, c'est à dire l'ajout de &quot;.1&quot; en fin de numéro de version.

Sinon pour le faire en manuel, il faut ajouter une ligne du type suivant au fichier:
&lt;pre&gt;
xorg-server (2:1.12.4-5.1) UNRELEASED; urgency=low

  * Non-maintainer upload.
  * ajout des paramètre pour Xephyr et evdev

 -- Vous &lt;vous@VotreMachine&gt;  Sun, 03 Mar 2013 22:21:32 +0100
&lt;/pre&gt;

Pour éviter de réinstaller tout Xorg avec le nouveau numéro de version il faut éditer le fichier &quot;debian/control&quot; et modifier la dépendance de Xephyr (ligne ~283). Pour cela il faut remplacer le 
&lt;pre&gt;
Depends :
  xserver-common (&gt;= ${source:Version})
&lt;/pre&gt;
Par :
&lt;pre&gt;
Depends :
  xserver-common (&gt;= 2:1.12.4-5)
&lt;/pre&gt;

Le numéro doit être en accord avec la version de votre Xorg actuellement installé sur votre machine. 
Sinon cette modification est directement possible dans le .deb, toujours dans le fichier &quot;DEBIAN/control&quot;. Pour cela il faut prendre le .deb que vous avez construit, le décompresser, modifier le fichier et faire la commande &quot;dpkg-deb -b &lt;nom du répertoire contenant les fichiers&gt;&quot;. Mais il est plus pratique de le faire avant.

Je ne vous conseille pas de mettre une numéro de version trop élevé car cela pourrait engendrer une incompatibilité avec les futurs versions de Xorg.

Ensuite nous allons modifier les options de compilation en éditant le fichier &quot;rules&quot;, c'est le Makefile de la construction du paquet.
Localisez &quot;confflags_main&quot; (ligne ~133) et ajoutez les lignes suivantes juste en dessous de &quot;--enable-kdrive&quot; (ligne ~156)

 --enable-kdrive-evdev \
 --enable-kdrive-mouse \
 --enable-kdrive-kbd \

===Recompilation===
Passons maintenant à la recompilation proprement dite, ressortez du répertoire debian et faites :
 $ fakeroot ./debian/rules binary

Et laissez la compilation et la création des paquets se faire ... cela peut prendre quelques minutes.

====Re-recompilation====
Si pour une raison il vous faut refaire entièrement la compilation il faut d'abord faire la commande suivante
 $ fakeroot ./debian/rules clean

Si c'est juste refaire les &quot;.deb&quot; (correction du numéro de dépendance, ...), alors cette commande suffit.
 $ fakeroot ./debian/rules binary-deb

===Installation du paquet obtenue===
Enfin pour installer votre paquet (qui se trouve dans le répertoire supérieur) il faut faire :
 #dpkg -i xserver-xephyr_1.12.4-5_i386.deb
Ou de manière graphique avec GDebi.
====Paquets déjà prêt====
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6_i386.deb.tar]]
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6.1_amd64.deb.tar]]

==Configuration de Xorg==
===Définition de l'existant===
Pour rappel le principe sera d'avoir une session X qui va héberger 2 sessions Xephyr qui serviront les différents sièges.
Tout d'abord nous allons faire un fichier de conf pour le serveur Xorg. Pour ne pas démarrer de rien on peut lancer la commande (en root) &quot;Xorg -configure&quot; qui génère le fichier &quot;xorg.conf.new&quot; dans &quot;/root&quot;. Ensuite on fait un petit &quot;xrandr&quot; pour identifier les sorties disponibles.
&lt;pre&gt;
$ xrandr

Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 593mm
&lt;/pre&gt;

&quot;DVI-0&quot; &amp; &quot;HDMI-0&quot; sont les 2 disponibles sur la machine. On peut aussi trouver du &quot;VGA-0&quot; ou &quot;LVDS&quot; pour les écrans de portables.

===Exemple de fichier de configuration===
Dans cet exemple on peut avoir un &quot;/etc/xorg.conf&quot; comme suivant :
&lt;pre&gt;
##################################################################
Section &quot;Monitor&quot;
	Identifier  &quot;HannsG&quot;
	Option      &quot;PreferredMode&quot; &quot;1920x1200&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
	Option		&quot;Primary&quot; &quot;true&quot;
EndSection

Section &quot;Monitor&quot;
	Identifier  &quot;Acer&quot;
	Option      &quot;PreferredMode&quot; &quot;1680x1050&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
EndSection

Section &quot;Device&quot;
	Identifier  &quot;card0&quot;
	Driver      &quot;radeon&quot;
	# Ici on associe les sorties video avec une section &quot;Monitor&quot;
	# On remarquera le &quot;Monitor&quot; devant le nom des sortie, c'est indispensable (cf : http://www.x.org/archive/current/doc/man/man5/xorg.conf.5.xhtml#heading12)
	Option      &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
	Option      &quot;Monitor-DVI-0&quot; &quot;Acer&quot;
EndSection

##################################################################

Section &quot;Screen&quot;
	Identifier  &quot;ecran1&quot;
	Device      &quot;card0&quot;
	Monitor     &quot;HansG&quot;
	DefaultDepth 24
	SubSection &quot;Display&quot;
 		Depth   24
		Virtual 3600 1200
	EndSubSection
EndSection

Section &quot;ServerLayout&quot;
	Identifier    &quot;dualscreen&quot;
	Screen      0  &quot;ecran1&quot;
EndSection
##################################################################
&lt;/pre&gt;

==Configuration de LightDM==
Nous allons maintenant regarder la configuration de LightDM d'un peu plus près. Le fichier de configuration par défaut expose toutes les options possibles du dit fichier. Nous allons garder le strict minimum
===lightdm.conf===
Pour cela éditons le fichier /etc/lightd/lightdm.conf

&lt;pre&gt;
[LightDM]
 greeter-user=root
 user-authority-in-system-dir=false

 [SeatDefaults]
 xserver-allow-tcp=false
 greeter-hide-users=false
 user-session=lightdm-xsession
 session-wrapper=/etc/X11/Xsession

 [Seat:0]
 xserver-command=nohup X -br -dpms -s 0 -novtswitch -nocursor
 greeter-session=fake-greeter

 [Seat:1]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 1 -t 1680x1050 -P evdev -s /dev/input/by-id/usb-Logitech_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd -v bepo 
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 1
 greeter-session=lightdm-greeter

[Seat:2]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 2 -t 1920x1200 -P evdev -s /dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-path/platform-i8042-serio-0-event-kbd
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 2 -d 1680,0
 greeter-session=lightdm-greeter
&lt;/pre&gt;

Il y a plusieurs chose à savoir concernant le fonctionnement de LightDM afin de comprendre ce qui est fait.
-- La section &quot;SeatDefault&quot; est commune à tous les sièges définis après
-- Chaque &quot;Seat&quot; est exécuté dans l'ordre dans un VT différent et ce même si, dans notre cas, tout se passe dans le VT7 ([url=https://code.launchpad.net/~andrzejtp2010/lightdm/lightdm-trunk-xephyr-multiseat/+merge/120286]un patch[url] à été proposé pour palier à ce problème mais il n'a pas été accepté ... pour l'instant)
-- Chaque propriété de tous les &quot;Seat&quot; est lancée dans un ordre précis, d'abord tous les &quot;xserver-command&quot;, puis tous les &quot;greeter-setup-script&quot;, enfin tous les &quot;greeter-session&quot;. Si vous mettez d'autres propriétés elle seront exécutées suivant leur ordre pré-établi.
-- Si les &quot;greeter&quot; se terminent, lightDM coupe le &quot;xserver-command&quot; correspondant. De même si le &quot;xserver-command&quot; se termine le greeter est coupé.

Donc pour que tout se positionne correctement il faut
-- D'abord lancer le serveur X qui servira de support, ce qui est fait en le mettant en tant que premier poste (&quot;Seat:0&quot;)
-- Lancer les fenêtres Xephyr avec les optons qui vont bien, ce qui est fait avec le script &quot;Xephyr-command.sh&quot; et ses arguments
-- Simuler un &quot;greeter&quot; pour le &quot;Seat :0&quot; afin que le serveur X ne soit pas tué par lightDM, ce qui est fait avec le script &quot;fake-greeter&quot;
-- Exécuter un script qui va placer les fenêtre Xephyr si besoin et initialiser les variables d'environnement correctement, fait avec &quot;Xephyr-greeter-setup.sh&quot;
-- Exécuter les &quot;greeter&quot; dans les fenêtre Xephyr

===fake-greeter.desktop===
Pour le faux greeter du serveur X il faut créer un fichier dans &quot;/usr/share/xgreeters/fake-greeter.desktop&quot; et y copier son contenu :
&lt;pre&gt;
[Desktop Entry]
Name=LightDM fake greeter
Comment=This runs no greeter at all, it should only be run from LightDM
Exec=sleep infinity
Type=Application
X-Ubuntu-Gettext-Domain=lightdm
&lt;/pre&gt;

Après tout cela nous allons créer un script qui permettra de créer (&quot;Xephyr-command.sh&quot;) et un autre pour placer les fenêtre à l'écran (&quot;Xephyr-greeter-setup.sh&quot;).
Tout d'abord il est nécessaire d'installer le petit utilitaire &quot;wmctrl&quot; avec
 # aptitude install wmctrl
===Xephyr-command.sh===
Le contenu du fichier &quot;Xephyr-command.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -t, taille : Doit être de la forme 9999x9999, (dafaut = 1024x768)&quot;
  echo &quot;\t -s, sourie : /dev/input/[by-path|by-id]/...event-mouse&quot;
  echo &quot;\t -c, clavier : /dev/input/[by-path|by-id]/...event-kbd&quot;
  echo &quot;\t -l, layout : fr, es, en, ... (défaut = fr)&quot;
  echo &quot;\t -v, variant : fr, latin9, bepo, ... (défaut = &lt;vide&gt;)&quot;
  echo &quot;\t -P, Pilote : ephyr ou evdev (défaut = ephyr)&quot;
}

testExecutable() {
	XEPHYR=`whereis -b Xephyr | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
TAILLE=&quot;1024x768&quot;
SOURIE=
CLAVIER=
LAYOUT=&quot;fr&quot;
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
PILOTE=ephyr # Test = ephyr ; Prod = evdev

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XEPHYR&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;Xephyr : &quot;$XEPHYR
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:t:s:c:l:v:P:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		t|taille)
			TAILLE=&quot;$OPTARG&quot;
		;;

		s|sourie)
			SOURIE=$OPTARG
			if  ! [ -r $SOURIE ];then
				echo &quot;La sourie n'est pas accessible&quot;
				exit 3
			fi
		;;

		c|clavier)
			CLAVIER=$OPTARG
			if  ! [ -r $CLAVIER ];then
				echo &quot;Le clavier n'est pas accessible&quot;
				exit 4
			fi
		;;

		l|layout)
			LAYOUT=$OPTARG
		;;

		v|variant)
			VARIANT=$OPTARG
		;;

		P|Pilote)
			PILOTE=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variables d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Construction de la ligne d&quot;argument
OPTIONS=&quot;&quot;

if [ -n &quot;${TAILLE}&quot; ]; then
	OPTIONS=&quot; -screen ${TAILLE}&quot;
fi

if [ -n &quot;${CLAVIER}&quot; ]; then
	if [ -n &quot;${LAYOUT}&quot; ]; then
		OPTIONS=$OPTIONS&quot; -keybd $PILOTE,,device=${CLAVIER},xkbrules=evdev,xkbmodel=evdev,xkblayout=${LAYOUT}&quot;
		if [ -n &quot;${VARIANT}&quot; ]; then
			OPTIONS=$OPTIONS&quot;,xkbvariant=${VARIANT}&quot;
		fi
	fi
fi

if [ -n &quot;${SOURIE}&quot; ]; then
	OPTIONS=$OPTIONS&quot; -mouse $PILOTE,,device=${SOURIE}&quot;
fi

# Lancement de Xephyr en arrière plan
echo &quot;$XEPHYR -retro $OPTIONS :$POSTE&quot;
exec $XEPHYR -retro  $OPTIONS :$POSTE
&lt;/pre&gt;

Petite explication sur la dernière ligne. Le &quot;exec&quot; fait en sorte que ce soit le processus de Xephyr qui prend la place du script, donc il reprend le PID et tout ce qui va bien. Cela permet surtout que le signal USR1 que Xephyr lance au PPID, soit bien récupéré par LightDM et que ce dernier continue son fonctionnement normalement.

===Xephyr-greeter-setup.sh===
Le contenu du fichier &quot;Xephyr-greeter-setup.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p|--poste numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -d, --deplacement : de la forme 'x,y' (en pixel)&quot;
  echo &quot;\t -v, --vt : 7, 8, 9, 10, 11 (defaut = 7)&quot;
}

testExecutable() {
	XWININFO=`whereis -b xwininfo | cut -d' ' -f2`
	WMCTRL=`whereis -b wmctrl | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
DEPLACEMENT=
VT=7
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
ATTENTE=3 # temps en seconde avant de déclencher le &quot;chvt&quot; pour revenir sur le bon VT

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XWININFO&quot; -o -z &quot;$WMCTRL&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;xwininfo : &quot;$XWININFO
	echo &quot;wmctrl : &quot;$WMCTRL
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:d:v:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		d|deplacement)
			DEPLACEMENT=&quot;$OPTARG&quot;
		;;
	
		v|vt)
			VT=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Vieux Hack tout bancal pour revenir au bon VT sans patcher LightDM
(sleep $ATTENTE ; chvt $VT)&amp;

# Deplacement de la fenetre si besoin
if [ -n &quot;$DEPLACEMENT&quot; ]; then
	#On recherche l'ID de la fenêtre Xephyr
        XEP=`XAUTHORITY=/var/run/lightdm/root/:$XRACINE $XWININFO -root -children -all -display :$XRACINE | grep &quot;Xephyr on :$POSTE&quot; --max-count=1`;

	if [ -z &quot;$XEP&quot; ]; then
		echo &quot;fenêtre Xephyr non trouvé pour le poste $POSTE&quot;
		exit 5
	fi
    XEPHYR_WIN_ID=`echo ${XEP} | cut -d' ' -f1`;
    $WMCTRL 2&gt;&amp;1 -v -i -r ${XEPHYR_WIN_ID} -e 0,${DEPLACEMENT},-1,-1;
	if [ $? -ne 0 ]; then
		echo &quot;Erreur lors du déplacement de la fenêtre Xephyr pour le poste $POSTE&quot;
		exit 7
	fi
fi

# Mise en place des variables d'environnement pour le greeter (utile ?)
export DISPLAY=:$POSTE
export XAUTHORITY=/var/run/lightdm/root/:$POSTE
&lt;/pre&gt;
Petite explication concernant la ligne suivante
 (sleep $ATTENTE ; chvt $VT)&amp;
Comme je n'ai pas patché LightDM pour éviter le changement de VT et que Xephyr m'empêche de faire un Ctrl+Alt+7 (avec le driver evdev) pour revenir au bon VT, j'ai du mettre en place un automatisme. Certes c'est loin d'être parfait mais ça rempli correctement son office.

==Modification du système==
===Montage des périphériques USB===
On se rend assez vite compte que si l'on branche une clé USB elle n'apparait pas automatiquement sur le bureau et elle est encore moins &quot;montable&quot; par un utilisateur classique. Elle apparait bien dans la liste des périphériques accessibles (volet de gauche sur nautilus) mais il y a un problème de droit.
Un petit rappel de la chaine mise en jeu lorsque l'on branche une clé USB ou tout autre périphérique.
* Détection par le noyau de l'ajout d'un matériel
* Udev prend le relais et créé les périphériques block nécessaires dans /dev
* PolicyKit termine le travail en mettant en place les autorisations adéquates

Donc le blocage vient de ce dernier composant, il ne reconnaît pas une session Xephyr comme &quot;active&quot; et donc refuse le montage de ce type de périphérique par l'utilisateur lambda. Pour passer au delà de cette limitation on va redéfinir la règle de montage, pour cela il faut aller dans le répertoire suivant :
 /etc/polkit-1/localauthority/50-local.d
Et y créer un fichier, &quot;10-udisk.pkla&quot; par exemple
&lt;pre&gt;
[Allow mounting from Xephyr]
Identity=*
Action=org.freedesktop.udisks.change;org.freedesktop.udisks.drive-detach;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.filesystem-unmount-others
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

Voilà, avec Gnome3 dans le volet de gauche de Nautilus on peut cliquer sur l'icône de la clé USB pour qu'elle se monte correctement, idem avec LXDE.
Je recommande de désactiver l'automontage des périphériques USB afin que l'utilisateur qui branche la clé puisse la monter sans interférence.

===Gestion de l'énergie===
De la même manière que précédemment, par défaut il est impossible d'éteindre l'ordinateur depuis la session graphique (hors LightDM).
Donc pour cela on créé un nouveau fichier (20-upower.pkla) dans :
 /etc/polkit-1/localauthority/50-local.d

&lt;pre&gt;
[Suspend/hibernate permissions]
Identity=*
Action=org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

===Gestion du son===
Par défaut Pulseaudio est lancé lors de l'identification d'un utilisateur, du coup il est le seul qui puisse utiliser la carte son. Pour pallier à ce problème il faut rendre pulseaudio démon du système.
Pour cela il faut modifier plusieurs fichiers de configuration :
* /etc/default/pulseaudio
&lt;pre&gt;PULSEAUDIO_SYSTEM_START=1&lt;/pre&gt;

* /etc/pulse/daemon.conf
&lt;pre&gt;daemonize = yes
local-server-type = system&lt;/pre&gt;

* /etc/pulse/client.conf
&lt;pre&gt;autospawn = no&lt;/pre&gt;

* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot;
 usermod -aG pulse-access &lt;username&gt;

* On peut enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse

([http://askubuntu.com/questions/192522/how-do-i-configure-sound-with-pulseaudio-and-multiseat source] [http://disjunkt.com/jd/2010/en/multiseat-linux/multiseat-linux-system-wide-pulseaudio-for-routing-sounds-109/ source2])

====Modification des DE (Gnome, KDE, LXDE, ...)====
Par défaut les environnements graphique exécutent Pulseaudio en espace utilisateur, ce qu'il ne faut plus faire puisqu'il est partagé, ce qui ne devrait plus être possible si vous avez enlevé les utilisateurs des groupes. Donc il est nécessaire de désactiver cela avec l'outil de votre environnement de Bureau. Par exemple pour LXDE il s'agit de lxsession, si vous avez des problème pour cet environnement [http://wiki.lxde.org/en/Autostart cette page (et ses liens)] devrait vous aider

===Aller plus loin===
* Si l'on veut restreindre ce droit par utilisateur ou par groupe on modifie la ligne &quot;Identity&quot; comme il suit
 Identity=unix-user:toto;unix-group:plugdev
* Pour creuser un peu plus la configuration de ce système on peux aller voir [http://www.freedesktop.org/software/polkit/docs/0.105/pklocalauthority.8.html cette page] sur PolicyKit
* Il serait aussi intéressant de définir des ports USB réservés pour chaque siège, mais je ne sais pas encore comment gérer cela.
* Voir s'il est possible de dédier les voies arrière à un poste et les voies avant à un autre ...

==Conclusion==
Et voilà, tout est prêt pour le redémarrage et admirer les mires de login sur leur écran respectif.

===Avantages===
* Avec du matériel de récupération on peut facilement mettre en place cette solution peu coûteuse
* La satisfaction d'avoir un poste de travail exotique
* Permettre à une tierce personne de profiter de la puissance monstre des machines récentes sans se priver de notre fauteuil favori
* Se sentir moins seul avec une/plusieurs personnes à coté de soi :-p

===Inconvénients===
* Accélération graphique fortement diminuée
* Si on débranche les claviers/souries Xephyr ne sait pas les reconnaître automatiquement au branchement. Il faut relancer Xephyr en se déconnectant ou relancer LightDM
* Un &quot;saut&quot; des 2 écrans lors de la déconnexion d'un poste, mais cela est dû à LightDM et son changment de VT intempestif.
* Surveillance de chaque mise à jour de Xorg pour ne pas avoir de surprise au redémarrage
* Recompilation nécessaire en cas de mise à jour majeure de Xorg
* Gestion des montages USB non optimale
* Les voyants du clavier (pavé numérique, Majuscule et arrêt défil) ne réagissent plus, mais le clavier réagit correctement.
* Dans l'espace de travail de certains logiciel (VLC, Gimp) la souris peut avoir un affichage lacunaire. Par exemple sous GIMP elle n'est visible que lorsqu'on la déplace, avec VLS il y a un carré noir autour d'elle quand on la déplace le reste du temps elle disparait.

===Remerciement===
Un grand merci à ce site pour m'avoir prémaché le travail ... ce qui ne m'as pas empêché d'apporter quelques améliorations à sa solution.
http://beforeafterx.blogspot.fr/2012/08/configuration-of-ligthdm-12.html</text>
      <sha1>q2jnvfu1i3vddczedmgxpha7gsgd5q8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5417</id>
      <parentid>5416</parentid>
      <timestamp>2013-10-02T20:27:44Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <comment>/* Reconfiguration */</comment>
      <text xml:space="preserve" bytes="24291">Après avoir fait du [http://www.debian-fr.org/multiseat-plusieurs-utilisateurs-sur-1-pc-t6954.html#p188187 multiposte avec 2 CG], un changement de PC m'oblige à faire la même chose mais avec une seule carte. J'ai essayé de couvrir au maximum toutes les étapes de la mise en place de la solution.

----
==Choix des outils==
Tout d'abord le raisonnement pour le choix des outils à été le suivant.
==== Xorg ou Wayland ?====
La réponse a été rapide. Xorg clairement, Wayland est encore trop récent pour pouvoir le faire et aucun document ne traite pour l'instant de ce problème.

==== Xnest ou Xephyr ?====
Xephyr est largement plébiscité et Xnest semble tomber en désuétude. C'est par le développement de Tizen (ex-Meego) que Xephyr semble toujours actif et que de nouvelles fonctionnalités lui sont ajoutées. Intel s'en sert intensément et est énormément utilisé pour le développement d'application pour smartphone comme environnement de simulation. (http://www.phoronix.com/scan.php?page=news_item&amp;px=ODc1NQ).
Un souci avec Xephyr est que le support de evdev semble ne pas avoir été inclus dans les options de compilations. &quot;evdev&quot; permet de monopoliser les claviers et souris. Du coup il faut refaire le paquet soi-même.

==== Et la transition avec systemd ? ====
Il ne semble plus y avoir de problème particulier (http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org)

====Comment gérer 2 écran, 2 session avec une seule carte graphique ?====
Il faut savoir que Xephyr permet de se greffer sur n'importe quel serveur X afin d'afficher une autre session. Par exemple avec la commande &quot;Xephyr -query 127.0.0.1&quot; vous devez pouvoir vous connecter sur votre propre machine si le protocole &quot;XDMCP&quot; est activé sur votre &quot;DisplayManager&quot; (GDM, KDM, XDM, ...). Donc le but du jeu sera d'avoir un serveur X qui va &quot;supporter&quot; 2 fenêtres Xephyr. Ces deux dernières se verront affectées les claviers et les souris de manière exclusive.

====Et le DM ? Debian a adopté GDM(3) avec Gnome mais j'aimerais bien m'en passer.====
Avec GDM (celui de Gnome2) il existe un très bon tutoriel ici : http://netpatia.blogspot.fr/2009/06/multiseat-in-ubuntu-904.html 
Pour GDM3, le problème est que pour l'instant il ne reprend pas toutes les possibilitées de son ancienne version. 
https://live.gnome.org/GDM/ToDo
&quot;-- Allow per-display X Server commands 
		BrianCameron: The [server] and [server-foo] sections of the GDM configuration have been disabled. This means that users who depend on novel configurations which require special Xserver commands per-display is not available.&quot;

Donc bonne nouvelle, il fallait trouver une alternative en le nom de LightDM, qui est issu de Ubuntu ... 

===Prérequis===
Donc pour les pré-requis :
* Ajouter &quot;deb-src http://ftp.fr.debian.org/debian/ &lt;VersionDebian&gt; main contrib non-free&quot;
* Installer les paquage dpkg-dev, build-essential, devscripts, lightDM

==Reconstruction de Xephyr==
===Récupération des sources nécessaires===
On récupère toutes les sources du packet source xorg-server qui comprend Xephyr.

 $ apt-get source xserver-xephyr


Puis récupérer toutes les dépendances spécifique au paquet :

 # apt-get build-dep xorg-server

Là il va télécharger un certain nombre de paquets de développement (&quot;-dev&quot;), ils sont marqués comme installés automatiquement, donc un deborphan devrait vous les enlever sans trop de problème. Sinon il existe cette commande pour être sûr qu'ils sont marqués en tant que &quot;installé automatiquement&quot;, puis un &quot;apt-get autoclean&quot; les supprimera.

===Reconfiguration===
Ensuite tout se passe dans le répertoire &quot;debian&quot;

 $ cd xorg-server-X.XX.X/debian


On édite le fichier &quot;changlog&quot; pour monter de version le paquet que l'on va reconstruire. Il est possible de le faire en automatique avec la commande:

 debian/$ dch -n


L'option &quot;-n&quot; permet d'incrémenter le numéro de version de façon mineur, c'est à dire l'ajout de &quot;.1&quot; en fin de numéro de version.

Sinon pour le faire en manuel, il faut ajouter une ligne du type suivant au fichier:
&lt;pre&gt;
xorg-server (2:1.12.4-5.1) UNRELEASED; urgency=low

  * Non-maintainer upload.
  * ajout des paramètre pour Xephyr et evdev

 -- Vous &lt;vous@VotreMachine&gt;  Sun, 03 Mar 2013 22:21:32 +0100
&lt;/pre&gt;

Pour éviter de réinstaller tout Xorg avec le nouveau numéro de version il faut éditer le fichier &quot;debian/control&quot; et modifier la dépendance de Xephyr (ligne ~283). Pour cela il faut remplacer le 
&lt;pre&gt;
Depends :
  xserver-common (&gt;= ${source:Version})
&lt;/pre&gt;
Par :
&lt;pre&gt;
Depends :
  xserver-common (&gt;= 2:1.12.4-5)
&lt;/pre&gt;

Le numéro doit être en accord avec la version de votre Xorg actuellement installé sur votre machine. 
Sinon cette modification est directement possible dans le .deb, toujours dans le fichier &quot;DEBIAN/control&quot;. Pour cela il faut prendre le .deb que vous avez construit, le décompresser, modifier le fichier et faire la commande &quot;dpkg-deb -b &lt;nom du répertoire contenant les fichiers&gt;&quot;. Mais il est plus pratique de le faire avant.

Je ne vous conseille pas de mettre une numéro de version trop élevé car cela pourrait engendrer une incompatibilité avec les futurs versions de Xorg.

Ensuite nous allons modifier les options de compilation en éditant le fichier &quot;rules&quot;, c'est le Makefile de la construction du paquet.
Localisez &quot;confflags_main&quot; (ligne ~133) et ajoutez les lignes suivantes juste en dessous de &quot;--enable-kdrive&quot; (ligne ~156)

 --enable-kdrive-evdev \
 --enable-kdrive-mouse \
 --enable-kdrive-kbd \

===Recompilation===
Passons maintenant à la recompilation proprement dite, ressortez du répertoire debian et faites :
 $ fakeroot ./debian/rules binary

Et laissez la compilation et la création des paquets se faire ... cela peut prendre quelques minutes.

====Re-recompilation====
Si pour une raison il vous faut refaire entièrement la compilation il faut d'abord faire la commande suivante
 $ fakeroot ./debian/rules clean

Si c'est juste refaire les &quot;.deb&quot; (correction du numéro de dépendance, ...), alors cette commande suffit.
 $ fakeroot ./debian/rules binary-deb

===Installation du paquet obtenue===
Enfin pour installer votre paquet (qui se trouve dans le répertoire supérieur) il faut faire :
 #dpkg -i xserver-xephyr_1.12.4-5_i386.deb
Ou de manière graphique avec GDebi.
====Paquets déjà prêt====
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6_i386.deb.tar]]
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6.1_amd64.deb.tar]]

==Configuration de Xorg==
===Définition de l'existant===
Pour rappel le principe sera d'avoir une session X qui va héberger 2 sessions Xephyr qui serviront les différents sièges.
Tout d'abord nous allons faire un fichier de conf pour le serveur Xorg. Pour ne pas démarrer de rien on peut lancer la commande (en root) &quot;Xorg -configure&quot; qui génère le fichier &quot;xorg.conf.new&quot; dans &quot;/root&quot;. Ensuite on fait un petit &quot;xrandr&quot; pour identifier les sorties disponibles.
&lt;pre&gt;
$ xrandr

Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 593mm
&lt;/pre&gt;

&quot;DVI-0&quot; &amp; &quot;HDMI-0&quot; sont les 2 disponibles sur la machine. On peut aussi trouver du &quot;VGA-0&quot; ou &quot;LVDS&quot; pour les écrans de portables.

===Exemple de fichier de configuration===
Dans cet exemple on peut avoir un &quot;/etc/xorg.conf&quot; comme suivant :
&lt;pre&gt;
##################################################################
Section &quot;Monitor&quot;
	Identifier  &quot;HannsG&quot;
	Option      &quot;PreferredMode&quot; &quot;1920x1200&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
	Option		&quot;Primary&quot; &quot;true&quot;
EndSection

Section &quot;Monitor&quot;
	Identifier  &quot;Acer&quot;
	Option      &quot;PreferredMode&quot; &quot;1680x1050&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
EndSection

Section &quot;Device&quot;
	Identifier  &quot;card0&quot;
	Driver      &quot;radeon&quot;
	# Ici on associe les sorties video avec une section &quot;Monitor&quot;
	# On remarquera le &quot;Monitor&quot; devant le nom des sortie, c'est indispensable (cf : http://www.x.org/archive/current/doc/man/man5/xorg.conf.5.xhtml#heading12)
	Option      &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
	Option      &quot;Monitor-DVI-0&quot; &quot;Acer&quot;
EndSection

##################################################################

Section &quot;Screen&quot;
	Identifier  &quot;ecran1&quot;
	Device      &quot;card0&quot;
	Monitor     &quot;HansG&quot;
	DefaultDepth 24
	SubSection &quot;Display&quot;
 		Depth   24
		Virtual 3600 1200
	EndSubSection
EndSection

Section &quot;ServerLayout&quot;
	Identifier    &quot;dualscreen&quot;
	Screen      0  &quot;ecran1&quot;
EndSection
##################################################################
&lt;/pre&gt;

==Configuration de LightDM==
Nous allons maintenant regarder la configuration de LightDM d'un peu plus près. Le fichier de configuration par défaut expose toutes les options possibles du dit fichier. Nous allons garder le strict minimum
===lightdm.conf===
Pour cela éditons le fichier /etc/lightd/lightdm.conf

&lt;pre&gt;
[LightDM]
 greeter-user=root
 user-authority-in-system-dir=false

 [SeatDefaults]
 xserver-allow-tcp=false
 greeter-hide-users=false
 user-session=lightdm-xsession
 session-wrapper=/etc/X11/Xsession

 [Seat:0]
 xserver-command=nohup X -br -dpms -s 0 -novtswitch -nocursor
 greeter-session=fake-greeter

 [Seat:1]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 1 -t 1680x1050 -P evdev -s /dev/input/by-id/usb-Logitech_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd -v bepo 
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 1
 greeter-session=lightdm-greeter

[Seat:2]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 2 -t 1920x1200 -P evdev -s /dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-path/platform-i8042-serio-0-event-kbd
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 2 -d 1680,0
 greeter-session=lightdm-greeter
&lt;/pre&gt;

Il y a plusieurs chose à savoir concernant le fonctionnement de LightDM afin de comprendre ce qui est fait.
-- La section &quot;SeatDefault&quot; est commune à tous les sièges définis après
-- Chaque &quot;Seat&quot; est exécuté dans l'ordre dans un VT différent et ce même si, dans notre cas, tout se passe dans le VT7 ([url=https://code.launchpad.net/~andrzejtp2010/lightdm/lightdm-trunk-xephyr-multiseat/+merge/120286]un patch[url] à été proposé pour palier à ce problème mais il n'a pas été accepté ... pour l'instant)
-- Chaque propriété de tous les &quot;Seat&quot; est lancée dans un ordre précis, d'abord tous les &quot;xserver-command&quot;, puis tous les &quot;greeter-setup-script&quot;, enfin tous les &quot;greeter-session&quot;. Si vous mettez d'autres propriétés elle seront exécutées suivant leur ordre pré-établi.
-- Si les &quot;greeter&quot; se terminent, lightDM coupe le &quot;xserver-command&quot; correspondant. De même si le &quot;xserver-command&quot; se termine le greeter est coupé.

Donc pour que tout se positionne correctement il faut
-- D'abord lancer le serveur X qui servira de support, ce qui est fait en le mettant en tant que premier poste (&quot;Seat:0&quot;)
-- Lancer les fenêtres Xephyr avec les optons qui vont bien, ce qui est fait avec le script &quot;Xephyr-command.sh&quot; et ses arguments
-- Simuler un &quot;greeter&quot; pour le &quot;Seat :0&quot; afin que le serveur X ne soit pas tué par lightDM, ce qui est fait avec le script &quot;fake-greeter&quot;
-- Exécuter un script qui va placer les fenêtre Xephyr si besoin et initialiser les variables d'environnement correctement, fait avec &quot;Xephyr-greeter-setup.sh&quot;
-- Exécuter les &quot;greeter&quot; dans les fenêtre Xephyr

===fake-greeter.desktop===
Pour le faux greeter du serveur X il faut créer un fichier dans &quot;/usr/share/xgreeters/fake-greeter.desktop&quot; et y copier son contenu :
&lt;pre&gt;
[Desktop Entry]
Name=LightDM fake greeter
Comment=This runs no greeter at all, it should only be run from LightDM
Exec=sleep infinity
Type=Application
X-Ubuntu-Gettext-Domain=lightdm
&lt;/pre&gt;

Après tout cela nous allons créer un script qui permettra de créer (&quot;Xephyr-command.sh&quot;) et un autre pour placer les fenêtre à l'écran (&quot;Xephyr-greeter-setup.sh&quot;).
Tout d'abord il est nécessaire d'installer le petit utilitaire &quot;wmctrl&quot; avec
 # aptitude install wmctrl
===Xephyr-command.sh===
Le contenu du fichier &quot;Xephyr-command.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -t, taille : Doit être de la forme 9999x9999, (dafaut = 1024x768)&quot;
  echo &quot;\t -s, sourie : /dev/input/[by-path|by-id]/...event-mouse&quot;
  echo &quot;\t -c, clavier : /dev/input/[by-path|by-id]/...event-kbd&quot;
  echo &quot;\t -l, layout : fr, es, en, ... (défaut = fr)&quot;
  echo &quot;\t -v, variant : fr, latin9, bepo, ... (défaut = &lt;vide&gt;)&quot;
  echo &quot;\t -P, Pilote : ephyr ou evdev (défaut = ephyr)&quot;
}

testExecutable() {
	XEPHYR=`whereis -b Xephyr | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
TAILLE=&quot;1024x768&quot;
SOURIE=
CLAVIER=
LAYOUT=&quot;fr&quot;
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
PILOTE=ephyr # Test = ephyr ; Prod = evdev

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XEPHYR&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;Xephyr : &quot;$XEPHYR
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:t:s:c:l:v:P:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		t|taille)
			TAILLE=&quot;$OPTARG&quot;
		;;

		s|sourie)
			SOURIE=$OPTARG
			if  ! [ -r $SOURIE ];then
				echo &quot;La sourie n'est pas accessible&quot;
				exit 3
			fi
		;;

		c|clavier)
			CLAVIER=$OPTARG
			if  ! [ -r $CLAVIER ];then
				echo &quot;Le clavier n'est pas accessible&quot;
				exit 4
			fi
		;;

		l|layout)
			LAYOUT=$OPTARG
		;;

		v|variant)
			VARIANT=$OPTARG
		;;

		P|Pilote)
			PILOTE=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variables d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Construction de la ligne d&quot;argument
OPTIONS=&quot;&quot;

if [ -n &quot;${TAILLE}&quot; ]; then
	OPTIONS=&quot; -screen ${TAILLE}&quot;
fi

if [ -n &quot;${CLAVIER}&quot; ]; then
	if [ -n &quot;${LAYOUT}&quot; ]; then
		OPTIONS=$OPTIONS&quot; -keybd $PILOTE,,device=${CLAVIER},xkbrules=evdev,xkbmodel=evdev,xkblayout=${LAYOUT}&quot;
		if [ -n &quot;${VARIANT}&quot; ]; then
			OPTIONS=$OPTIONS&quot;,xkbvariant=${VARIANT}&quot;
		fi
	fi
fi

if [ -n &quot;${SOURIE}&quot; ]; then
	OPTIONS=$OPTIONS&quot; -mouse $PILOTE,,device=${SOURIE}&quot;
fi

# Lancement de Xephyr en arrière plan
echo &quot;$XEPHYR -retro $OPTIONS :$POSTE&quot;
exec $XEPHYR -retro  $OPTIONS :$POSTE
&lt;/pre&gt;

Petite explication sur la dernière ligne. Le &quot;exec&quot; fait en sorte que ce soit le processus de Xephyr qui prend la place du script, donc il reprend le PID et tout ce qui va bien. Cela permet surtout que le signal USR1 que Xephyr lance au PPID, soit bien récupéré par LightDM et que ce dernier continue son fonctionnement normalement.

===Xephyr-greeter-setup.sh===
Le contenu du fichier &quot;Xephyr-greeter-setup.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p|--poste numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -d, --deplacement : de la forme 'x,y' (en pixel)&quot;
  echo &quot;\t -v, --vt : 7, 8, 9, 10, 11 (defaut = 7)&quot;
}

testExecutable() {
	XWININFO=`whereis -b xwininfo | cut -d' ' -f2`
	WMCTRL=`whereis -b wmctrl | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
DEPLACEMENT=
VT=7
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
ATTENTE=3 # temps en seconde avant de déclencher le &quot;chvt&quot; pour revenir sur le bon VT

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XWININFO&quot; -o -z &quot;$WMCTRL&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;xwininfo : &quot;$XWININFO
	echo &quot;wmctrl : &quot;$WMCTRL
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:d:v:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		d|deplacement)
			DEPLACEMENT=&quot;$OPTARG&quot;
		;;
	
		v|vt)
			VT=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Vieux Hack tout bancal pour revenir au bon VT sans patcher LightDM
(sleep $ATTENTE ; chvt $VT)&amp;

# Deplacement de la fenetre si besoin
if [ -n &quot;$DEPLACEMENT&quot; ]; then
	#On recherche l'ID de la fenêtre Xephyr
        XEP=`XAUTHORITY=/var/run/lightdm/root/:$XRACINE $XWININFO -root -children -all -display :$XRACINE | grep &quot;Xephyr on :$POSTE&quot; --max-count=1`;

	if [ -z &quot;$XEP&quot; ]; then
		echo &quot;fenêtre Xephyr non trouvé pour le poste $POSTE&quot;
		exit 5
	fi
    XEPHYR_WIN_ID=`echo ${XEP} | cut -d' ' -f1`;
    $WMCTRL 2&gt;&amp;1 -v -i -r ${XEPHYR_WIN_ID} -e 0,${DEPLACEMENT},-1,-1;
	if [ $? -ne 0 ]; then
		echo &quot;Erreur lors du déplacement de la fenêtre Xephyr pour le poste $POSTE&quot;
		exit 7
	fi
fi

# Mise en place des variables d'environnement pour le greeter (utile ?)
export DISPLAY=:$POSTE
export XAUTHORITY=/var/run/lightdm/root/:$POSTE
&lt;/pre&gt;
Petite explication concernant la ligne suivante
 (sleep $ATTENTE ; chvt $VT)&amp;
Comme je n'ai pas patché LightDM pour éviter le changement de VT et que Xephyr m'empêche de faire un Ctrl+Alt+7 (avec le driver evdev) pour revenir au bon VT, j'ai du mettre en place un automatisme. Certes c'est loin d'être parfait mais ça rempli correctement son office.

==Modification du système==
===Montage des périphériques USB===
On se rend assez vite compte que si l'on branche une clé USB elle n'apparait pas automatiquement sur le bureau et elle est encore moins &quot;montable&quot; par un utilisateur classique. Elle apparait bien dans la liste des périphériques accessibles (volet de gauche sur nautilus) mais il y a un problème de droit.
Un petit rappel de la chaine mise en jeu lorsque l'on branche une clé USB ou tout autre périphérique.
* Détection par le noyau de l'ajout d'un matériel
* Udev prend le relais et créé les périphériques block nécessaires dans /dev
* PolicyKit termine le travail en mettant en place les autorisations adéquates

Donc le blocage vient de ce dernier composant, il ne reconnaît pas une session Xephyr comme &quot;active&quot; et donc refuse le montage de ce type de périphérique par l'utilisateur lambda. Pour passer au delà de cette limitation on va redéfinir la règle de montage, pour cela il faut aller dans le répertoire suivant :
 /etc/polkit-1/localauthority/50-local.d
Et y créer un fichier, &quot;10-udisk.pkla&quot; par exemple
&lt;pre&gt;
[Allow mounting from Xephyr]
Identity=*
Action=org.freedesktop.udisks.change;org.freedesktop.udisks.drive-detach;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.filesystem-unmount-others
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

Voilà, avec Gnome3 dans le volet de gauche de Nautilus on peut cliquer sur l'icône de la clé USB pour qu'elle se monte correctement, idem avec LXDE.
Je recommande de désactiver l'automontage des périphériques USB afin que l'utilisateur qui branche la clé puisse la monter sans interférence.

===Gestion de l'énergie===
De la même manière que précédemment, par défaut il est impossible d'éteindre l'ordinateur depuis la session graphique (hors LightDM).
Donc pour cela on créé un nouveau fichier (20-upower.pkla) dans :
 /etc/polkit-1/localauthority/50-local.d

&lt;pre&gt;
[Suspend/hibernate permissions]
Identity=*
Action=org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

===Gestion du son===
Par défaut Pulseaudio est lancé lors de l'identification d'un utilisateur, du coup il est le seul qui puisse utiliser la carte son. Pour pallier à ce problème il faut rendre pulseaudio démon du système.
Pour cela il faut modifier plusieurs fichiers de configuration :
* /etc/default/pulseaudio
&lt;pre&gt;PULSEAUDIO_SYSTEM_START=1&lt;/pre&gt;

* /etc/pulse/daemon.conf
&lt;pre&gt;daemonize = yes
local-server-type = system&lt;/pre&gt;

* /etc/pulse/client.conf
&lt;pre&gt;autospawn = no&lt;/pre&gt;

* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot;
 usermod -aG pulse-access &lt;username&gt;

* On peut enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse

([http://askubuntu.com/questions/192522/how-do-i-configure-sound-with-pulseaudio-and-multiseat source] [http://disjunkt.com/jd/2010/en/multiseat-linux/multiseat-linux-system-wide-pulseaudio-for-routing-sounds-109/ source2])

====Modification des DE (Gnome, KDE, LXDE, ...)====
Par défaut les environnements graphique exécutent Pulseaudio en espace utilisateur, ce qu'il ne faut plus faire puisqu'il est partagé, ce qui ne devrait plus être possible si vous avez enlevé les utilisateurs des groupes. Donc il est nécessaire de désactiver cela avec l'outil de votre environnement de Bureau. Par exemple pour LXDE il s'agit de lxsession, si vous avez des problème pour cet environnement [http://wiki.lxde.org/en/Autostart cette page (et ses liens)] devrait vous aider

===Aller plus loin===
* Si l'on veut restreindre ce droit par utilisateur ou par groupe on modifie la ligne &quot;Identity&quot; comme il suit
 Identity=unix-user:toto;unix-group:plugdev
* Pour creuser un peu plus la configuration de ce système on peux aller voir [http://www.freedesktop.org/software/polkit/docs/0.105/pklocalauthority.8.html cette page] sur PolicyKit
* Il serait aussi intéressant de définir des ports USB réservés pour chaque siège, mais je ne sais pas encore comment gérer cela.
* Voir s'il est possible de dédier les voies arrière à un poste et les voies avant à un autre ...

==Conclusion==
Et voilà, tout est prêt pour le redémarrage et admirer les mires de login sur leur écran respectif.

===Avantages===
* Avec du matériel de récupération on peut facilement mettre en place cette solution peu coûteuse
* La satisfaction d'avoir un poste de travail exotique
* Permettre à une tierce personne de profiter de la puissance monstre des machines récentes sans se priver de notre fauteuil favori
* Se sentir moins seul avec une/plusieurs personnes à coté de soi :-p

===Inconvénients===
* Accélération graphique fortement diminuée
* Si on débranche les claviers/souries Xephyr ne sait pas les reconnaître automatiquement au branchement. Il faut relancer Xephyr en se déconnectant ou relancer LightDM
* Un &quot;saut&quot; des 2 écrans lors de la déconnexion d'un poste, mais cela est dû à LightDM et son changment de VT intempestif.
* Surveillance de chaque mise à jour de Xorg pour ne pas avoir de surprise au redémarrage
* Recompilation nécessaire en cas de mise à jour majeure de Xorg
* Gestion des montages USB non optimale
* Les voyants du clavier (pavé numérique, Majuscule et arrêt défil) ne réagissent plus, mais le clavier réagit correctement.
* Dans l'espace de travail de certains logiciel (VLC, Gimp) la souris peut avoir un affichage lacunaire. Par exemple sous GIMP elle n'est visible que lorsqu'on la déplace, avec VLS il y a un carré noir autour d'elle quand on la déplace le reste du temps elle disparait.

===Remerciement===
Un grand merci à ce site pour m'avoir prémaché le travail ... ce qui ne m'as pas empêché d'apporter quelques améliorations à sa solution.
http://beforeafterx.blogspot.fr/2012/08/configuration-of-ligthdm-12.html</text>
      <sha1>nslx7lko91hkndonhbee98dq82u8rni</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5418</id>
      <parentid>5417</parentid>
      <timestamp>2013-10-02T20:33:04Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <comment>/* Reconfiguration */</comment>
      <text xml:space="preserve" bytes="24293">Après avoir fait du [http://www.debian-fr.org/multiseat-plusieurs-utilisateurs-sur-1-pc-t6954.html#p188187 multiposte avec 2 CG], un changement de PC m'oblige à faire la même chose mais avec une seule carte. J'ai essayé de couvrir au maximum toutes les étapes de la mise en place de la solution.

----
==Choix des outils==
Tout d'abord le raisonnement pour le choix des outils à été le suivant.
==== Xorg ou Wayland ?====
La réponse a été rapide. Xorg clairement, Wayland est encore trop récent pour pouvoir le faire et aucun document ne traite pour l'instant de ce problème.

==== Xnest ou Xephyr ?====
Xephyr est largement plébiscité et Xnest semble tomber en désuétude. C'est par le développement de Tizen (ex-Meego) que Xephyr semble toujours actif et que de nouvelles fonctionnalités lui sont ajoutées. Intel s'en sert intensément et est énormément utilisé pour le développement d'application pour smartphone comme environnement de simulation. (http://www.phoronix.com/scan.php?page=news_item&amp;px=ODc1NQ).
Un souci avec Xephyr est que le support de evdev semble ne pas avoir été inclus dans les options de compilations. &quot;evdev&quot; permet de monopoliser les claviers et souris. Du coup il faut refaire le paquet soi-même.

==== Et la transition avec systemd ? ====
Il ne semble plus y avoir de problème particulier (http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org)

====Comment gérer 2 écran, 2 session avec une seule carte graphique ?====
Il faut savoir que Xephyr permet de se greffer sur n'importe quel serveur X afin d'afficher une autre session. Par exemple avec la commande &quot;Xephyr -query 127.0.0.1&quot; vous devez pouvoir vous connecter sur votre propre machine si le protocole &quot;XDMCP&quot; est activé sur votre &quot;DisplayManager&quot; (GDM, KDM, XDM, ...). Donc le but du jeu sera d'avoir un serveur X qui va &quot;supporter&quot; 2 fenêtres Xephyr. Ces deux dernières se verront affectées les claviers et les souris de manière exclusive.

====Et le DM ? Debian a adopté GDM(3) avec Gnome mais j'aimerais bien m'en passer.====
Avec GDM (celui de Gnome2) il existe un très bon tutoriel ici : http://netpatia.blogspot.fr/2009/06/multiseat-in-ubuntu-904.html 
Pour GDM3, le problème est que pour l'instant il ne reprend pas toutes les possibilitées de son ancienne version. 
https://live.gnome.org/GDM/ToDo
&quot;-- Allow per-display X Server commands 
		BrianCameron: The [server] and [server-foo] sections of the GDM configuration have been disabled. This means that users who depend on novel configurations which require special Xserver commands per-display is not available.&quot;

Donc bonne nouvelle, il fallait trouver une alternative en le nom de LightDM, qui est issu de Ubuntu ... 

===Prérequis===
Donc pour les pré-requis :
* Ajouter &quot;deb-src http://ftp.fr.debian.org/debian/ &lt;VersionDebian&gt; main contrib non-free&quot;
* Installer les paquage dpkg-dev, build-essential, devscripts, lightDM

==Reconstruction de Xephyr==
===Récupération des sources nécessaires===
On récupère toutes les sources du packet source xorg-server qui comprend Xephyr.

 $ apt-get source xserver-xephyr


Puis récupérer toutes les dépendances spécifique au paquet :

 # apt-get build-dep xorg-server

Là il va télécharger un certain nombre de paquets de développement (&quot;-dev&quot;), ils sont marqués comme installés automatiquement, donc un deborphan devrait vous les enlever sans trop de problème. Sinon il existe cette commande pour être sûr qu'ils sont marqués en tant que &quot;installé automatiquement&quot;, puis un &quot;apt-get autoclean&quot; les supprimera.

===Reconfiguration===
Ensuite tout se passe dans le répertoire &quot;debian&quot;

 $ cd xorg-server-X.YY.Z/debian


On édite le fichier &quot;changlog&quot; pour monter de version le paquet que l'on va reconstruire. Il est possible de le faire en automatique avec la commande:

 debian/$ dch -n


L'option &quot;-n&quot; permet d'incrémenter le numéro de version de façon mineur, c'est à dire l'ajout de &quot;.1&quot; en fin de numéro de version.

Sinon pour le faire en manuel, il faut ajouter une ligne du type suivant au fichier:
&lt;pre&gt;
xorg-server (2:X.YY.Z-A.B) UNRELEASED; urgency=low

  * Non-maintainer upload.
  * ajout des paramètre pour Xephyr et evdev

 -- Vous &lt;vous@VotreMachine&gt;  Sun, 03 Mar 2013 22:21:32 +0100
&lt;/pre&gt;

Pour éviter de réinstaller tout Xorg avec le nouveau numéro de version il faut éditer le fichier &quot;debian/control&quot; et modifier la dépendance de Xephyr (ligne ~288). Pour cela il faut remplacer le 
&lt;pre&gt;
Depends :
  xserver-common (&gt;= ${source:Version})
&lt;/pre&gt;
Par :
&lt;pre&gt;
Depends :
  xserver-common (&gt;= 2:X.YY.Z-A.B)
&lt;/pre&gt;

Le numéro doit être en accord avec la version de votre Xorg actuellement installé sur votre machine. 
Sinon cette modification est directement possible dans le .deb, toujours dans le fichier &quot;DEBIAN/control&quot;. Pour cela il faut prendre le .deb que vous avez construit, le décompresser, modifier le fichier et faire la commande &quot;dpkg-deb -b &lt;nom du répertoire contenant les fichiers&gt;&quot;. Mais il est plus pratique de le faire avant.

Je ne vous conseille pas de mettre une numéro de version trop élevé car cela pourrait engendrer une incompatibilité avec les futurs versions de Xorg.

Ensuite nous allons modifier les options de compilation en éditant le fichier &quot;rules&quot;, c'est le Makefile de la construction du paquet.
Localisez &quot;confflags_main&quot; (ligne ~133) et ajoutez les lignes suivantes juste en dessous de &quot;--enable-kdrive&quot; (ligne ~156)

 --enable-kdrive-evdev \
 --enable-kdrive-mouse \
 --enable-kdrive-kbd \

===Recompilation===
Passons maintenant à la recompilation proprement dite, ressortez du répertoire debian et faites :
 $ fakeroot ./debian/rules binary

Et laissez la compilation et la création des paquets se faire ... cela peut prendre quelques minutes.

====Re-recompilation====
Si pour une raison il vous faut refaire entièrement la compilation il faut d'abord faire la commande suivante
 $ fakeroot ./debian/rules clean

Si c'est juste refaire les &quot;.deb&quot; (correction du numéro de dépendance, ...), alors cette commande suffit.
 $ fakeroot ./debian/rules binary-deb

===Installation du paquet obtenue===
Enfin pour installer votre paquet (qui se trouve dans le répertoire supérieur) il faut faire :
 #dpkg -i xserver-xephyr_1.12.4-5_i386.deb
Ou de manière graphique avec GDebi.
====Paquets déjà prêt====
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6_i386.deb.tar]]
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6.1_amd64.deb.tar]]

==Configuration de Xorg==
===Définition de l'existant===
Pour rappel le principe sera d'avoir une session X qui va héberger 2 sessions Xephyr qui serviront les différents sièges.
Tout d'abord nous allons faire un fichier de conf pour le serveur Xorg. Pour ne pas démarrer de rien on peut lancer la commande (en root) &quot;Xorg -configure&quot; qui génère le fichier &quot;xorg.conf.new&quot; dans &quot;/root&quot;. Ensuite on fait un petit &quot;xrandr&quot; pour identifier les sorties disponibles.
&lt;pre&gt;
$ xrandr

Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 593mm
&lt;/pre&gt;

&quot;DVI-0&quot; &amp; &quot;HDMI-0&quot; sont les 2 disponibles sur la machine. On peut aussi trouver du &quot;VGA-0&quot; ou &quot;LVDS&quot; pour les écrans de portables.

===Exemple de fichier de configuration===
Dans cet exemple on peut avoir un &quot;/etc/xorg.conf&quot; comme suivant :
&lt;pre&gt;
##################################################################
Section &quot;Monitor&quot;
	Identifier  &quot;HannsG&quot;
	Option      &quot;PreferredMode&quot; &quot;1920x1200&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
	Option		&quot;Primary&quot; &quot;true&quot;
EndSection

Section &quot;Monitor&quot;
	Identifier  &quot;Acer&quot;
	Option      &quot;PreferredMode&quot; &quot;1680x1050&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
EndSection

Section &quot;Device&quot;
	Identifier  &quot;card0&quot;
	Driver      &quot;radeon&quot;
	# Ici on associe les sorties video avec une section &quot;Monitor&quot;
	# On remarquera le &quot;Monitor&quot; devant le nom des sortie, c'est indispensable (cf : http://www.x.org/archive/current/doc/man/man5/xorg.conf.5.xhtml#heading12)
	Option      &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
	Option      &quot;Monitor-DVI-0&quot; &quot;Acer&quot;
EndSection

##################################################################

Section &quot;Screen&quot;
	Identifier  &quot;ecran1&quot;
	Device      &quot;card0&quot;
	Monitor     &quot;HansG&quot;
	DefaultDepth 24
	SubSection &quot;Display&quot;
 		Depth   24
		Virtual 3600 1200
	EndSubSection
EndSection

Section &quot;ServerLayout&quot;
	Identifier    &quot;dualscreen&quot;
	Screen      0  &quot;ecran1&quot;
EndSection
##################################################################
&lt;/pre&gt;

==Configuration de LightDM==
Nous allons maintenant regarder la configuration de LightDM d'un peu plus près. Le fichier de configuration par défaut expose toutes les options possibles du dit fichier. Nous allons garder le strict minimum
===lightdm.conf===
Pour cela éditons le fichier /etc/lightd/lightdm.conf

&lt;pre&gt;
[LightDM]
 greeter-user=root
 user-authority-in-system-dir=false

 [SeatDefaults]
 xserver-allow-tcp=false
 greeter-hide-users=false
 user-session=lightdm-xsession
 session-wrapper=/etc/X11/Xsession

 [Seat:0]
 xserver-command=nohup X -br -dpms -s 0 -novtswitch -nocursor
 greeter-session=fake-greeter

 [Seat:1]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 1 -t 1680x1050 -P evdev -s /dev/input/by-id/usb-Logitech_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd -v bepo 
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 1
 greeter-session=lightdm-greeter

[Seat:2]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 2 -t 1920x1200 -P evdev -s /dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-path/platform-i8042-serio-0-event-kbd
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 2 -d 1680,0
 greeter-session=lightdm-greeter
&lt;/pre&gt;

Il y a plusieurs chose à savoir concernant le fonctionnement de LightDM afin de comprendre ce qui est fait.
-- La section &quot;SeatDefault&quot; est commune à tous les sièges définis après
-- Chaque &quot;Seat&quot; est exécuté dans l'ordre dans un VT différent et ce même si, dans notre cas, tout se passe dans le VT7 ([url=https://code.launchpad.net/~andrzejtp2010/lightdm/lightdm-trunk-xephyr-multiseat/+merge/120286]un patch[url] à été proposé pour palier à ce problème mais il n'a pas été accepté ... pour l'instant)
-- Chaque propriété de tous les &quot;Seat&quot; est lancée dans un ordre précis, d'abord tous les &quot;xserver-command&quot;, puis tous les &quot;greeter-setup-script&quot;, enfin tous les &quot;greeter-session&quot;. Si vous mettez d'autres propriétés elle seront exécutées suivant leur ordre pré-établi.
-- Si les &quot;greeter&quot; se terminent, lightDM coupe le &quot;xserver-command&quot; correspondant. De même si le &quot;xserver-command&quot; se termine le greeter est coupé.

Donc pour que tout se positionne correctement il faut
-- D'abord lancer le serveur X qui servira de support, ce qui est fait en le mettant en tant que premier poste (&quot;Seat:0&quot;)
-- Lancer les fenêtres Xephyr avec les optons qui vont bien, ce qui est fait avec le script &quot;Xephyr-command.sh&quot; et ses arguments
-- Simuler un &quot;greeter&quot; pour le &quot;Seat :0&quot; afin que le serveur X ne soit pas tué par lightDM, ce qui est fait avec le script &quot;fake-greeter&quot;
-- Exécuter un script qui va placer les fenêtre Xephyr si besoin et initialiser les variables d'environnement correctement, fait avec &quot;Xephyr-greeter-setup.sh&quot;
-- Exécuter les &quot;greeter&quot; dans les fenêtre Xephyr

===fake-greeter.desktop===
Pour le faux greeter du serveur X il faut créer un fichier dans &quot;/usr/share/xgreeters/fake-greeter.desktop&quot; et y copier son contenu :
&lt;pre&gt;
[Desktop Entry]
Name=LightDM fake greeter
Comment=This runs no greeter at all, it should only be run from LightDM
Exec=sleep infinity
Type=Application
X-Ubuntu-Gettext-Domain=lightdm
&lt;/pre&gt;

Après tout cela nous allons créer un script qui permettra de créer (&quot;Xephyr-command.sh&quot;) et un autre pour placer les fenêtre à l'écran (&quot;Xephyr-greeter-setup.sh&quot;).
Tout d'abord il est nécessaire d'installer le petit utilitaire &quot;wmctrl&quot; avec
 # aptitude install wmctrl
===Xephyr-command.sh===
Le contenu du fichier &quot;Xephyr-command.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -t, taille : Doit être de la forme 9999x9999, (dafaut = 1024x768)&quot;
  echo &quot;\t -s, sourie : /dev/input/[by-path|by-id]/...event-mouse&quot;
  echo &quot;\t -c, clavier : /dev/input/[by-path|by-id]/...event-kbd&quot;
  echo &quot;\t -l, layout : fr, es, en, ... (défaut = fr)&quot;
  echo &quot;\t -v, variant : fr, latin9, bepo, ... (défaut = &lt;vide&gt;)&quot;
  echo &quot;\t -P, Pilote : ephyr ou evdev (défaut = ephyr)&quot;
}

testExecutable() {
	XEPHYR=`whereis -b Xephyr | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
TAILLE=&quot;1024x768&quot;
SOURIE=
CLAVIER=
LAYOUT=&quot;fr&quot;
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
PILOTE=ephyr # Test = ephyr ; Prod = evdev

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XEPHYR&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;Xephyr : &quot;$XEPHYR
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:t:s:c:l:v:P:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		t|taille)
			TAILLE=&quot;$OPTARG&quot;
		;;

		s|sourie)
			SOURIE=$OPTARG
			if  ! [ -r $SOURIE ];then
				echo &quot;La sourie n'est pas accessible&quot;
				exit 3
			fi
		;;

		c|clavier)
			CLAVIER=$OPTARG
			if  ! [ -r $CLAVIER ];then
				echo &quot;Le clavier n'est pas accessible&quot;
				exit 4
			fi
		;;

		l|layout)
			LAYOUT=$OPTARG
		;;

		v|variant)
			VARIANT=$OPTARG
		;;

		P|Pilote)
			PILOTE=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variables d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Construction de la ligne d&quot;argument
OPTIONS=&quot;&quot;

if [ -n &quot;${TAILLE}&quot; ]; then
	OPTIONS=&quot; -screen ${TAILLE}&quot;
fi

if [ -n &quot;${CLAVIER}&quot; ]; then
	if [ -n &quot;${LAYOUT}&quot; ]; then
		OPTIONS=$OPTIONS&quot; -keybd $PILOTE,,device=${CLAVIER},xkbrules=evdev,xkbmodel=evdev,xkblayout=${LAYOUT}&quot;
		if [ -n &quot;${VARIANT}&quot; ]; then
			OPTIONS=$OPTIONS&quot;,xkbvariant=${VARIANT}&quot;
		fi
	fi
fi

if [ -n &quot;${SOURIE}&quot; ]; then
	OPTIONS=$OPTIONS&quot; -mouse $PILOTE,,device=${SOURIE}&quot;
fi

# Lancement de Xephyr en arrière plan
echo &quot;$XEPHYR -retro $OPTIONS :$POSTE&quot;
exec $XEPHYR -retro  $OPTIONS :$POSTE
&lt;/pre&gt;

Petite explication sur la dernière ligne. Le &quot;exec&quot; fait en sorte que ce soit le processus de Xephyr qui prend la place du script, donc il reprend le PID et tout ce qui va bien. Cela permet surtout que le signal USR1 que Xephyr lance au PPID, soit bien récupéré par LightDM et que ce dernier continue son fonctionnement normalement.

===Xephyr-greeter-setup.sh===
Le contenu du fichier &quot;Xephyr-greeter-setup.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p|--poste numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -d, --deplacement : de la forme 'x,y' (en pixel)&quot;
  echo &quot;\t -v, --vt : 7, 8, 9, 10, 11 (defaut = 7)&quot;
}

testExecutable() {
	XWININFO=`whereis -b xwininfo | cut -d' ' -f2`
	WMCTRL=`whereis -b wmctrl | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
DEPLACEMENT=
VT=7
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
ATTENTE=3 # temps en seconde avant de déclencher le &quot;chvt&quot; pour revenir sur le bon VT

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XWININFO&quot; -o -z &quot;$WMCTRL&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;xwininfo : &quot;$XWININFO
	echo &quot;wmctrl : &quot;$WMCTRL
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:d:v:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		d|deplacement)
			DEPLACEMENT=&quot;$OPTARG&quot;
		;;
	
		v|vt)
			VT=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Vieux Hack tout bancal pour revenir au bon VT sans patcher LightDM
(sleep $ATTENTE ; chvt $VT)&amp;

# Deplacement de la fenetre si besoin
if [ -n &quot;$DEPLACEMENT&quot; ]; then
	#On recherche l'ID de la fenêtre Xephyr
        XEP=`XAUTHORITY=/var/run/lightdm/root/:$XRACINE $XWININFO -root -children -all -display :$XRACINE | grep &quot;Xephyr on :$POSTE&quot; --max-count=1`;

	if [ -z &quot;$XEP&quot; ]; then
		echo &quot;fenêtre Xephyr non trouvé pour le poste $POSTE&quot;
		exit 5
	fi
    XEPHYR_WIN_ID=`echo ${XEP} | cut -d' ' -f1`;
    $WMCTRL 2&gt;&amp;1 -v -i -r ${XEPHYR_WIN_ID} -e 0,${DEPLACEMENT},-1,-1;
	if [ $? -ne 0 ]; then
		echo &quot;Erreur lors du déplacement de la fenêtre Xephyr pour le poste $POSTE&quot;
		exit 7
	fi
fi

# Mise en place des variables d'environnement pour le greeter (utile ?)
export DISPLAY=:$POSTE
export XAUTHORITY=/var/run/lightdm/root/:$POSTE
&lt;/pre&gt;
Petite explication concernant la ligne suivante
 (sleep $ATTENTE ; chvt $VT)&amp;
Comme je n'ai pas patché LightDM pour éviter le changement de VT et que Xephyr m'empêche de faire un Ctrl+Alt+7 (avec le driver evdev) pour revenir au bon VT, j'ai du mettre en place un automatisme. Certes c'est loin d'être parfait mais ça rempli correctement son office.

==Modification du système==
===Montage des périphériques USB===
On se rend assez vite compte que si l'on branche une clé USB elle n'apparait pas automatiquement sur le bureau et elle est encore moins &quot;montable&quot; par un utilisateur classique. Elle apparait bien dans la liste des périphériques accessibles (volet de gauche sur nautilus) mais il y a un problème de droit.
Un petit rappel de la chaine mise en jeu lorsque l'on branche une clé USB ou tout autre périphérique.
* Détection par le noyau de l'ajout d'un matériel
* Udev prend le relais et créé les périphériques block nécessaires dans /dev
* PolicyKit termine le travail en mettant en place les autorisations adéquates

Donc le blocage vient de ce dernier composant, il ne reconnaît pas une session Xephyr comme &quot;active&quot; et donc refuse le montage de ce type de périphérique par l'utilisateur lambda. Pour passer au delà de cette limitation on va redéfinir la règle de montage, pour cela il faut aller dans le répertoire suivant :
 /etc/polkit-1/localauthority/50-local.d
Et y créer un fichier, &quot;10-udisk.pkla&quot; par exemple
&lt;pre&gt;
[Allow mounting from Xephyr]
Identity=*
Action=org.freedesktop.udisks.change;org.freedesktop.udisks.drive-detach;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.filesystem-unmount-others
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

Voilà, avec Gnome3 dans le volet de gauche de Nautilus on peut cliquer sur l'icône de la clé USB pour qu'elle se monte correctement, idem avec LXDE.
Je recommande de désactiver l'automontage des périphériques USB afin que l'utilisateur qui branche la clé puisse la monter sans interférence.

===Gestion de l'énergie===
De la même manière que précédemment, par défaut il est impossible d'éteindre l'ordinateur depuis la session graphique (hors LightDM).
Donc pour cela on créé un nouveau fichier (20-upower.pkla) dans :
 /etc/polkit-1/localauthority/50-local.d

&lt;pre&gt;
[Suspend/hibernate permissions]
Identity=*
Action=org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

===Gestion du son===
Par défaut Pulseaudio est lancé lors de l'identification d'un utilisateur, du coup il est le seul qui puisse utiliser la carte son. Pour pallier à ce problème il faut rendre pulseaudio démon du système.
Pour cela il faut modifier plusieurs fichiers de configuration :
* /etc/default/pulseaudio
&lt;pre&gt;PULSEAUDIO_SYSTEM_START=1&lt;/pre&gt;

* /etc/pulse/daemon.conf
&lt;pre&gt;daemonize = yes
local-server-type = system&lt;/pre&gt;

* /etc/pulse/client.conf
&lt;pre&gt;autospawn = no&lt;/pre&gt;

* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot;
 usermod -aG pulse-access &lt;username&gt;

* On peut enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse

([http://askubuntu.com/questions/192522/how-do-i-configure-sound-with-pulseaudio-and-multiseat source] [http://disjunkt.com/jd/2010/en/multiseat-linux/multiseat-linux-system-wide-pulseaudio-for-routing-sounds-109/ source2])

====Modification des DE (Gnome, KDE, LXDE, ...)====
Par défaut les environnements graphique exécutent Pulseaudio en espace utilisateur, ce qu'il ne faut plus faire puisqu'il est partagé, ce qui ne devrait plus être possible si vous avez enlevé les utilisateurs des groupes. Donc il est nécessaire de désactiver cela avec l'outil de votre environnement de Bureau. Par exemple pour LXDE il s'agit de lxsession, si vous avez des problème pour cet environnement [http://wiki.lxde.org/en/Autostart cette page (et ses liens)] devrait vous aider

===Aller plus loin===
* Si l'on veut restreindre ce droit par utilisateur ou par groupe on modifie la ligne &quot;Identity&quot; comme il suit
 Identity=unix-user:toto;unix-group:plugdev
* Pour creuser un peu plus la configuration de ce système on peux aller voir [http://www.freedesktop.org/software/polkit/docs/0.105/pklocalauthority.8.html cette page] sur PolicyKit
* Il serait aussi intéressant de définir des ports USB réservés pour chaque siège, mais je ne sais pas encore comment gérer cela.
* Voir s'il est possible de dédier les voies arrière à un poste et les voies avant à un autre ...

==Conclusion==
Et voilà, tout est prêt pour le redémarrage et admirer les mires de login sur leur écran respectif.

===Avantages===
* Avec du matériel de récupération on peut facilement mettre en place cette solution peu coûteuse
* La satisfaction d'avoir un poste de travail exotique
* Permettre à une tierce personne de profiter de la puissance monstre des machines récentes sans se priver de notre fauteuil favori
* Se sentir moins seul avec une/plusieurs personnes à coté de soi :-p

===Inconvénients===
* Accélération graphique fortement diminuée
* Si on débranche les claviers/souries Xephyr ne sait pas les reconnaître automatiquement au branchement. Il faut relancer Xephyr en se déconnectant ou relancer LightDM
* Un &quot;saut&quot; des 2 écrans lors de la déconnexion d'un poste, mais cela est dû à LightDM et son changment de VT intempestif.
* Surveillance de chaque mise à jour de Xorg pour ne pas avoir de surprise au redémarrage
* Recompilation nécessaire en cas de mise à jour majeure de Xorg
* Gestion des montages USB non optimale
* Les voyants du clavier (pavé numérique, Majuscule et arrêt défil) ne réagissent plus, mais le clavier réagit correctement.
* Dans l'espace de travail de certains logiciel (VLC, Gimp) la souris peut avoir un affichage lacunaire. Par exemple sous GIMP elle n'est visible que lorsqu'on la déplace, avec VLS il y a un carré noir autour d'elle quand on la déplace le reste du temps elle disparait.

===Remerciement===
Un grand merci à ce site pour m'avoir prémaché le travail ... ce qui ne m'as pas empêché d'apporter quelques améliorations à sa solution.
http://beforeafterx.blogspot.fr/2012/08/configuration-of-ligthdm-12.html</text>
      <sha1>m8le40fel516lx08kqnkhcnypzww79y</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5419</id>
      <parentid>5418</parentid>
      <timestamp>2013-10-02T20:35:16Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <comment>/* Reconfiguration */</comment>
      <text xml:space="preserve" bytes="24293">Après avoir fait du [http://www.debian-fr.org/multiseat-plusieurs-utilisateurs-sur-1-pc-t6954.html#p188187 multiposte avec 2 CG], un changement de PC m'oblige à faire la même chose mais avec une seule carte. J'ai essayé de couvrir au maximum toutes les étapes de la mise en place de la solution.

----
==Choix des outils==
Tout d'abord le raisonnement pour le choix des outils à été le suivant.
==== Xorg ou Wayland ?====
La réponse a été rapide. Xorg clairement, Wayland est encore trop récent pour pouvoir le faire et aucun document ne traite pour l'instant de ce problème.

==== Xnest ou Xephyr ?====
Xephyr est largement plébiscité et Xnest semble tomber en désuétude. C'est par le développement de Tizen (ex-Meego) que Xephyr semble toujours actif et que de nouvelles fonctionnalités lui sont ajoutées. Intel s'en sert intensément et est énormément utilisé pour le développement d'application pour smartphone comme environnement de simulation. (http://www.phoronix.com/scan.php?page=news_item&amp;px=ODc1NQ).
Un souci avec Xephyr est que le support de evdev semble ne pas avoir été inclus dans les options de compilations. &quot;evdev&quot; permet de monopoliser les claviers et souris. Du coup il faut refaire le paquet soi-même.

==== Et la transition avec systemd ? ====
Il ne semble plus y avoir de problème particulier (http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org)

====Comment gérer 2 écran, 2 session avec une seule carte graphique ?====
Il faut savoir que Xephyr permet de se greffer sur n'importe quel serveur X afin d'afficher une autre session. Par exemple avec la commande &quot;Xephyr -query 127.0.0.1&quot; vous devez pouvoir vous connecter sur votre propre machine si le protocole &quot;XDMCP&quot; est activé sur votre &quot;DisplayManager&quot; (GDM, KDM, XDM, ...). Donc le but du jeu sera d'avoir un serveur X qui va &quot;supporter&quot; 2 fenêtres Xephyr. Ces deux dernières se verront affectées les claviers et les souris de manière exclusive.

====Et le DM ? Debian a adopté GDM(3) avec Gnome mais j'aimerais bien m'en passer.====
Avec GDM (celui de Gnome2) il existe un très bon tutoriel ici : http://netpatia.blogspot.fr/2009/06/multiseat-in-ubuntu-904.html 
Pour GDM3, le problème est que pour l'instant il ne reprend pas toutes les possibilitées de son ancienne version. 
https://live.gnome.org/GDM/ToDo
&quot;-- Allow per-display X Server commands 
		BrianCameron: The [server] and [server-foo] sections of the GDM configuration have been disabled. This means that users who depend on novel configurations which require special Xserver commands per-display is not available.&quot;

Donc bonne nouvelle, il fallait trouver une alternative en le nom de LightDM, qui est issu de Ubuntu ... 

===Prérequis===
Donc pour les pré-requis :
* Ajouter &quot;deb-src http://ftp.fr.debian.org/debian/ &lt;VersionDebian&gt; main contrib non-free&quot;
* Installer les paquage dpkg-dev, build-essential, devscripts, lightDM

==Reconstruction de Xephyr==
===Récupération des sources nécessaires===
On récupère toutes les sources du packet source xorg-server qui comprend Xephyr.

 $ apt-get source xserver-xephyr


Puis récupérer toutes les dépendances spécifique au paquet :

 # apt-get build-dep xorg-server

Là il va télécharger un certain nombre de paquets de développement (&quot;-dev&quot;), ils sont marqués comme installés automatiquement, donc un deborphan devrait vous les enlever sans trop de problème. Sinon il existe cette commande pour être sûr qu'ils sont marqués en tant que &quot;installé automatiquement&quot;, puis un &quot;apt-get autoclean&quot; les supprimera.

===Reconfiguration===
Ensuite tout se passe dans le répertoire &quot;debian&quot;

 $ cd xorg-server-X.YY.Z/debian


On édite le fichier &quot;changlog&quot; pour monter de version le paquet que l'on va reconstruire. Il est possible de le faire en automatique avec la commande:

 debian/$ dch -n


L'option &quot;-n&quot; permet d'incrémenter le numéro de version de façon mineur, c'est à dire l'ajout de &quot;.1&quot; en fin de numéro de version.

Sinon pour le faire en manuel, il faut ajouter une ligne du type suivant au fichier:
&lt;pre&gt;
xorg-server (2:X.YY.Z-A.B) UNRELEASED; urgency=low

  * Non-maintainer upload.
  * ajout des paramètre pour Xephyr et evdev

 -- Vous &lt;vous@VotreMachine&gt;  Sun, 03 Mar 2013 22:21:32 +0100
&lt;/pre&gt;

Pour éviter de réinstaller tout Xorg avec le nouveau numéro de version il faut éditer le fichier &quot;debian/control&quot; et modifier la dépendance de Xephyr (ligne ~288). Pour cela il faut remplacer le 
&lt;pre&gt;
Depends :
  xserver-common (&gt;= ${source:Version})
&lt;/pre&gt;
Par :
&lt;pre&gt;
Depends :
  xserver-common (&gt;= 2:X.YY.Z-A.B)
&lt;/pre&gt;

Le numéro doit être en accord avec la version de votre Xorg actuellement installé sur votre machine. 
Sinon cette modification est directement possible dans le .deb, toujours dans le fichier &quot;DEBIAN/control&quot;. Pour cela il faut prendre le .deb que vous avez construit, le décompresser, modifier le fichier et faire la commande &quot;dpkg-deb -b &lt;nom du répertoire contenant les fichiers&gt;&quot;. Mais il est plus pratique de le faire avant.

Je ne vous conseille pas de mettre une numéro de version trop élevé car cela pourrait engendrer une incompatibilité avec les futurs versions de Xorg.

Ensuite nous allons modifier les options de compilation en éditant le fichier &quot;rules&quot;, c'est le Makefile de la construction du paquet.
Localisez &quot;confflags_main&quot; (ligne ~118) et ajoutez les lignes suivantes juste en dessous de &quot;--enable-kdrive&quot; (ligne ~142)

 --enable-kdrive-evdev \
 --enable-kdrive-mouse \
 --enable-kdrive-kbd \

===Recompilation===
Passons maintenant à la recompilation proprement dite, ressortez du répertoire debian et faites :
 $ fakeroot ./debian/rules binary

Et laissez la compilation et la création des paquets se faire ... cela peut prendre quelques minutes.

====Re-recompilation====
Si pour une raison il vous faut refaire entièrement la compilation il faut d'abord faire la commande suivante
 $ fakeroot ./debian/rules clean

Si c'est juste refaire les &quot;.deb&quot; (correction du numéro de dépendance, ...), alors cette commande suffit.
 $ fakeroot ./debian/rules binary-deb

===Installation du paquet obtenue===
Enfin pour installer votre paquet (qui se trouve dans le répertoire supérieur) il faut faire :
 #dpkg -i xserver-xephyr_1.12.4-5_i386.deb
Ou de manière graphique avec GDebi.
====Paquets déjà prêt====
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6_i386.deb.tar]]
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6.1_amd64.deb.tar]]

==Configuration de Xorg==
===Définition de l'existant===
Pour rappel le principe sera d'avoir une session X qui va héberger 2 sessions Xephyr qui serviront les différents sièges.
Tout d'abord nous allons faire un fichier de conf pour le serveur Xorg. Pour ne pas démarrer de rien on peut lancer la commande (en root) &quot;Xorg -configure&quot; qui génère le fichier &quot;xorg.conf.new&quot; dans &quot;/root&quot;. Ensuite on fait un petit &quot;xrandr&quot; pour identifier les sorties disponibles.
&lt;pre&gt;
$ xrandr

Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 593mm
&lt;/pre&gt;

&quot;DVI-0&quot; &amp; &quot;HDMI-0&quot; sont les 2 disponibles sur la machine. On peut aussi trouver du &quot;VGA-0&quot; ou &quot;LVDS&quot; pour les écrans de portables.

===Exemple de fichier de configuration===
Dans cet exemple on peut avoir un &quot;/etc/xorg.conf&quot; comme suivant :
&lt;pre&gt;
##################################################################
Section &quot;Monitor&quot;
	Identifier  &quot;HannsG&quot;
	Option      &quot;PreferredMode&quot; &quot;1920x1200&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
	Option		&quot;Primary&quot; &quot;true&quot;
EndSection

Section &quot;Monitor&quot;
	Identifier  &quot;Acer&quot;
	Option      &quot;PreferredMode&quot; &quot;1680x1050&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
EndSection

Section &quot;Device&quot;
	Identifier  &quot;card0&quot;
	Driver      &quot;radeon&quot;
	# Ici on associe les sorties video avec une section &quot;Monitor&quot;
	# On remarquera le &quot;Monitor&quot; devant le nom des sortie, c'est indispensable (cf : http://www.x.org/archive/current/doc/man/man5/xorg.conf.5.xhtml#heading12)
	Option      &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
	Option      &quot;Monitor-DVI-0&quot; &quot;Acer&quot;
EndSection

##################################################################

Section &quot;Screen&quot;
	Identifier  &quot;ecran1&quot;
	Device      &quot;card0&quot;
	Monitor     &quot;HansG&quot;
	DefaultDepth 24
	SubSection &quot;Display&quot;
 		Depth   24
		Virtual 3600 1200
	EndSubSection
EndSection

Section &quot;ServerLayout&quot;
	Identifier    &quot;dualscreen&quot;
	Screen      0  &quot;ecran1&quot;
EndSection
##################################################################
&lt;/pre&gt;

==Configuration de LightDM==
Nous allons maintenant regarder la configuration de LightDM d'un peu plus près. Le fichier de configuration par défaut expose toutes les options possibles du dit fichier. Nous allons garder le strict minimum
===lightdm.conf===
Pour cela éditons le fichier /etc/lightd/lightdm.conf

&lt;pre&gt;
[LightDM]
 greeter-user=root
 user-authority-in-system-dir=false

 [SeatDefaults]
 xserver-allow-tcp=false
 greeter-hide-users=false
 user-session=lightdm-xsession
 session-wrapper=/etc/X11/Xsession

 [Seat:0]
 xserver-command=nohup X -br -dpms -s 0 -novtswitch -nocursor
 greeter-session=fake-greeter

 [Seat:1]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 1 -t 1680x1050 -P evdev -s /dev/input/by-id/usb-Logitech_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd -v bepo 
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 1
 greeter-session=lightdm-greeter

[Seat:2]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 2 -t 1920x1200 -P evdev -s /dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-path/platform-i8042-serio-0-event-kbd
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 2 -d 1680,0
 greeter-session=lightdm-greeter
&lt;/pre&gt;

Il y a plusieurs chose à savoir concernant le fonctionnement de LightDM afin de comprendre ce qui est fait.
-- La section &quot;SeatDefault&quot; est commune à tous les sièges définis après
-- Chaque &quot;Seat&quot; est exécuté dans l'ordre dans un VT différent et ce même si, dans notre cas, tout se passe dans le VT7 ([url=https://code.launchpad.net/~andrzejtp2010/lightdm/lightdm-trunk-xephyr-multiseat/+merge/120286]un patch[url] à été proposé pour palier à ce problème mais il n'a pas été accepté ... pour l'instant)
-- Chaque propriété de tous les &quot;Seat&quot; est lancée dans un ordre précis, d'abord tous les &quot;xserver-command&quot;, puis tous les &quot;greeter-setup-script&quot;, enfin tous les &quot;greeter-session&quot;. Si vous mettez d'autres propriétés elle seront exécutées suivant leur ordre pré-établi.
-- Si les &quot;greeter&quot; se terminent, lightDM coupe le &quot;xserver-command&quot; correspondant. De même si le &quot;xserver-command&quot; se termine le greeter est coupé.

Donc pour que tout se positionne correctement il faut
-- D'abord lancer le serveur X qui servira de support, ce qui est fait en le mettant en tant que premier poste (&quot;Seat:0&quot;)
-- Lancer les fenêtres Xephyr avec les optons qui vont bien, ce qui est fait avec le script &quot;Xephyr-command.sh&quot; et ses arguments
-- Simuler un &quot;greeter&quot; pour le &quot;Seat :0&quot; afin que le serveur X ne soit pas tué par lightDM, ce qui est fait avec le script &quot;fake-greeter&quot;
-- Exécuter un script qui va placer les fenêtre Xephyr si besoin et initialiser les variables d'environnement correctement, fait avec &quot;Xephyr-greeter-setup.sh&quot;
-- Exécuter les &quot;greeter&quot; dans les fenêtre Xephyr

===fake-greeter.desktop===
Pour le faux greeter du serveur X il faut créer un fichier dans &quot;/usr/share/xgreeters/fake-greeter.desktop&quot; et y copier son contenu :
&lt;pre&gt;
[Desktop Entry]
Name=LightDM fake greeter
Comment=This runs no greeter at all, it should only be run from LightDM
Exec=sleep infinity
Type=Application
X-Ubuntu-Gettext-Domain=lightdm
&lt;/pre&gt;

Après tout cela nous allons créer un script qui permettra de créer (&quot;Xephyr-command.sh&quot;) et un autre pour placer les fenêtre à l'écran (&quot;Xephyr-greeter-setup.sh&quot;).
Tout d'abord il est nécessaire d'installer le petit utilitaire &quot;wmctrl&quot; avec
 # aptitude install wmctrl
===Xephyr-command.sh===
Le contenu du fichier &quot;Xephyr-command.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -t, taille : Doit être de la forme 9999x9999, (dafaut = 1024x768)&quot;
  echo &quot;\t -s, sourie : /dev/input/[by-path|by-id]/...event-mouse&quot;
  echo &quot;\t -c, clavier : /dev/input/[by-path|by-id]/...event-kbd&quot;
  echo &quot;\t -l, layout : fr, es, en, ... (défaut = fr)&quot;
  echo &quot;\t -v, variant : fr, latin9, bepo, ... (défaut = &lt;vide&gt;)&quot;
  echo &quot;\t -P, Pilote : ephyr ou evdev (défaut = ephyr)&quot;
}

testExecutable() {
	XEPHYR=`whereis -b Xephyr | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
TAILLE=&quot;1024x768&quot;
SOURIE=
CLAVIER=
LAYOUT=&quot;fr&quot;
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
PILOTE=ephyr # Test = ephyr ; Prod = evdev

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XEPHYR&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;Xephyr : &quot;$XEPHYR
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:t:s:c:l:v:P:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		t|taille)
			TAILLE=&quot;$OPTARG&quot;
		;;

		s|sourie)
			SOURIE=$OPTARG
			if  ! [ -r $SOURIE ];then
				echo &quot;La sourie n'est pas accessible&quot;
				exit 3
			fi
		;;

		c|clavier)
			CLAVIER=$OPTARG
			if  ! [ -r $CLAVIER ];then
				echo &quot;Le clavier n'est pas accessible&quot;
				exit 4
			fi
		;;

		l|layout)
			LAYOUT=$OPTARG
		;;

		v|variant)
			VARIANT=$OPTARG
		;;

		P|Pilote)
			PILOTE=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variables d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Construction de la ligne d&quot;argument
OPTIONS=&quot;&quot;

if [ -n &quot;${TAILLE}&quot; ]; then
	OPTIONS=&quot; -screen ${TAILLE}&quot;
fi

if [ -n &quot;${CLAVIER}&quot; ]; then
	if [ -n &quot;${LAYOUT}&quot; ]; then
		OPTIONS=$OPTIONS&quot; -keybd $PILOTE,,device=${CLAVIER},xkbrules=evdev,xkbmodel=evdev,xkblayout=${LAYOUT}&quot;
		if [ -n &quot;${VARIANT}&quot; ]; then
			OPTIONS=$OPTIONS&quot;,xkbvariant=${VARIANT}&quot;
		fi
	fi
fi

if [ -n &quot;${SOURIE}&quot; ]; then
	OPTIONS=$OPTIONS&quot; -mouse $PILOTE,,device=${SOURIE}&quot;
fi

# Lancement de Xephyr en arrière plan
echo &quot;$XEPHYR -retro $OPTIONS :$POSTE&quot;
exec $XEPHYR -retro  $OPTIONS :$POSTE
&lt;/pre&gt;

Petite explication sur la dernière ligne. Le &quot;exec&quot; fait en sorte que ce soit le processus de Xephyr qui prend la place du script, donc il reprend le PID et tout ce qui va bien. Cela permet surtout que le signal USR1 que Xephyr lance au PPID, soit bien récupéré par LightDM et que ce dernier continue son fonctionnement normalement.

===Xephyr-greeter-setup.sh===
Le contenu du fichier &quot;Xephyr-greeter-setup.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p|--poste numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -d, --deplacement : de la forme 'x,y' (en pixel)&quot;
  echo &quot;\t -v, --vt : 7, 8, 9, 10, 11 (defaut = 7)&quot;
}

testExecutable() {
	XWININFO=`whereis -b xwininfo | cut -d' ' -f2`
	WMCTRL=`whereis -b wmctrl | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
DEPLACEMENT=
VT=7
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
ATTENTE=3 # temps en seconde avant de déclencher le &quot;chvt&quot; pour revenir sur le bon VT

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XWININFO&quot; -o -z &quot;$WMCTRL&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;xwininfo : &quot;$XWININFO
	echo &quot;wmctrl : &quot;$WMCTRL
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:d:v:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		d|deplacement)
			DEPLACEMENT=&quot;$OPTARG&quot;
		;;
	
		v|vt)
			VT=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Vieux Hack tout bancal pour revenir au bon VT sans patcher LightDM
(sleep $ATTENTE ; chvt $VT)&amp;

# Deplacement de la fenetre si besoin
if [ -n &quot;$DEPLACEMENT&quot; ]; then
	#On recherche l'ID de la fenêtre Xephyr
        XEP=`XAUTHORITY=/var/run/lightdm/root/:$XRACINE $XWININFO -root -children -all -display :$XRACINE | grep &quot;Xephyr on :$POSTE&quot; --max-count=1`;

	if [ -z &quot;$XEP&quot; ]; then
		echo &quot;fenêtre Xephyr non trouvé pour le poste $POSTE&quot;
		exit 5
	fi
    XEPHYR_WIN_ID=`echo ${XEP} | cut -d' ' -f1`;
    $WMCTRL 2&gt;&amp;1 -v -i -r ${XEPHYR_WIN_ID} -e 0,${DEPLACEMENT},-1,-1;
	if [ $? -ne 0 ]; then
		echo &quot;Erreur lors du déplacement de la fenêtre Xephyr pour le poste $POSTE&quot;
		exit 7
	fi
fi

# Mise en place des variables d'environnement pour le greeter (utile ?)
export DISPLAY=:$POSTE
export XAUTHORITY=/var/run/lightdm/root/:$POSTE
&lt;/pre&gt;
Petite explication concernant la ligne suivante
 (sleep $ATTENTE ; chvt $VT)&amp;
Comme je n'ai pas patché LightDM pour éviter le changement de VT et que Xephyr m'empêche de faire un Ctrl+Alt+7 (avec le driver evdev) pour revenir au bon VT, j'ai du mettre en place un automatisme. Certes c'est loin d'être parfait mais ça rempli correctement son office.

==Modification du système==
===Montage des périphériques USB===
On se rend assez vite compte que si l'on branche une clé USB elle n'apparait pas automatiquement sur le bureau et elle est encore moins &quot;montable&quot; par un utilisateur classique. Elle apparait bien dans la liste des périphériques accessibles (volet de gauche sur nautilus) mais il y a un problème de droit.
Un petit rappel de la chaine mise en jeu lorsque l'on branche une clé USB ou tout autre périphérique.
* Détection par le noyau de l'ajout d'un matériel
* Udev prend le relais et créé les périphériques block nécessaires dans /dev
* PolicyKit termine le travail en mettant en place les autorisations adéquates

Donc le blocage vient de ce dernier composant, il ne reconnaît pas une session Xephyr comme &quot;active&quot; et donc refuse le montage de ce type de périphérique par l'utilisateur lambda. Pour passer au delà de cette limitation on va redéfinir la règle de montage, pour cela il faut aller dans le répertoire suivant :
 /etc/polkit-1/localauthority/50-local.d
Et y créer un fichier, &quot;10-udisk.pkla&quot; par exemple
&lt;pre&gt;
[Allow mounting from Xephyr]
Identity=*
Action=org.freedesktop.udisks.change;org.freedesktop.udisks.drive-detach;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.filesystem-unmount-others
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

Voilà, avec Gnome3 dans le volet de gauche de Nautilus on peut cliquer sur l'icône de la clé USB pour qu'elle se monte correctement, idem avec LXDE.
Je recommande de désactiver l'automontage des périphériques USB afin que l'utilisateur qui branche la clé puisse la monter sans interférence.

===Gestion de l'énergie===
De la même manière que précédemment, par défaut il est impossible d'éteindre l'ordinateur depuis la session graphique (hors LightDM).
Donc pour cela on créé un nouveau fichier (20-upower.pkla) dans :
 /etc/polkit-1/localauthority/50-local.d

&lt;pre&gt;
[Suspend/hibernate permissions]
Identity=*
Action=org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

===Gestion du son===
Par défaut Pulseaudio est lancé lors de l'identification d'un utilisateur, du coup il est le seul qui puisse utiliser la carte son. Pour pallier à ce problème il faut rendre pulseaudio démon du système.
Pour cela il faut modifier plusieurs fichiers de configuration :
* /etc/default/pulseaudio
&lt;pre&gt;PULSEAUDIO_SYSTEM_START=1&lt;/pre&gt;

* /etc/pulse/daemon.conf
&lt;pre&gt;daemonize = yes
local-server-type = system&lt;/pre&gt;

* /etc/pulse/client.conf
&lt;pre&gt;autospawn = no&lt;/pre&gt;

* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot;
 usermod -aG pulse-access &lt;username&gt;

* On peut enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse

([http://askubuntu.com/questions/192522/how-do-i-configure-sound-with-pulseaudio-and-multiseat source] [http://disjunkt.com/jd/2010/en/multiseat-linux/multiseat-linux-system-wide-pulseaudio-for-routing-sounds-109/ source2])

====Modification des DE (Gnome, KDE, LXDE, ...)====
Par défaut les environnements graphique exécutent Pulseaudio en espace utilisateur, ce qu'il ne faut plus faire puisqu'il est partagé, ce qui ne devrait plus être possible si vous avez enlevé les utilisateurs des groupes. Donc il est nécessaire de désactiver cela avec l'outil de votre environnement de Bureau. Par exemple pour LXDE il s'agit de lxsession, si vous avez des problème pour cet environnement [http://wiki.lxde.org/en/Autostart cette page (et ses liens)] devrait vous aider

===Aller plus loin===
* Si l'on veut restreindre ce droit par utilisateur ou par groupe on modifie la ligne &quot;Identity&quot; comme il suit
 Identity=unix-user:toto;unix-group:plugdev
* Pour creuser un peu plus la configuration de ce système on peux aller voir [http://www.freedesktop.org/software/polkit/docs/0.105/pklocalauthority.8.html cette page] sur PolicyKit
* Il serait aussi intéressant de définir des ports USB réservés pour chaque siège, mais je ne sais pas encore comment gérer cela.
* Voir s'il est possible de dédier les voies arrière à un poste et les voies avant à un autre ...

==Conclusion==
Et voilà, tout est prêt pour le redémarrage et admirer les mires de login sur leur écran respectif.

===Avantages===
* Avec du matériel de récupération on peut facilement mettre en place cette solution peu coûteuse
* La satisfaction d'avoir un poste de travail exotique
* Permettre à une tierce personne de profiter de la puissance monstre des machines récentes sans se priver de notre fauteuil favori
* Se sentir moins seul avec une/plusieurs personnes à coté de soi :-p

===Inconvénients===
* Accélération graphique fortement diminuée
* Si on débranche les claviers/souries Xephyr ne sait pas les reconnaître automatiquement au branchement. Il faut relancer Xephyr en se déconnectant ou relancer LightDM
* Un &quot;saut&quot; des 2 écrans lors de la déconnexion d'un poste, mais cela est dû à LightDM et son changment de VT intempestif.
* Surveillance de chaque mise à jour de Xorg pour ne pas avoir de surprise au redémarrage
* Recompilation nécessaire en cas de mise à jour majeure de Xorg
* Gestion des montages USB non optimale
* Les voyants du clavier (pavé numérique, Majuscule et arrêt défil) ne réagissent plus, mais le clavier réagit correctement.
* Dans l'espace de travail de certains logiciel (VLC, Gimp) la souris peut avoir un affichage lacunaire. Par exemple sous GIMP elle n'est visible que lorsqu'on la déplace, avec VLS il y a un carré noir autour d'elle quand on la déplace le reste du temps elle disparait.

===Remerciement===
Un grand merci à ce site pour m'avoir prémaché le travail ... ce qui ne m'as pas empêché d'apporter quelques améliorations à sa solution.
http://beforeafterx.blogspot.fr/2012/08/configuration-of-ligthdm-12.html</text>
      <sha1>1cjo4wokko7vk4mtq8ph3lv288zlznl</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5420</id>
      <parentid>5419</parentid>
      <timestamp>2013-10-02T21:24:36Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <comment>/* Recompilation */</comment>
      <text xml:space="preserve" bytes="24944">Après avoir fait du [http://www.debian-fr.org/multiseat-plusieurs-utilisateurs-sur-1-pc-t6954.html#p188187 multiposte avec 2 CG], un changement de PC m'oblige à faire la même chose mais avec une seule carte. J'ai essayé de couvrir au maximum toutes les étapes de la mise en place de la solution.

----
==Choix des outils==
Tout d'abord le raisonnement pour le choix des outils à été le suivant.
==== Xorg ou Wayland ?====
La réponse a été rapide. Xorg clairement, Wayland est encore trop récent pour pouvoir le faire et aucun document ne traite pour l'instant de ce problème.

==== Xnest ou Xephyr ?====
Xephyr est largement plébiscité et Xnest semble tomber en désuétude. C'est par le développement de Tizen (ex-Meego) que Xephyr semble toujours actif et que de nouvelles fonctionnalités lui sont ajoutées. Intel s'en sert intensément et est énormément utilisé pour le développement d'application pour smartphone comme environnement de simulation. (http://www.phoronix.com/scan.php?page=news_item&amp;px=ODc1NQ).
Un souci avec Xephyr est que le support de evdev semble ne pas avoir été inclus dans les options de compilations. &quot;evdev&quot; permet de monopoliser les claviers et souris. Du coup il faut refaire le paquet soi-même.

==== Et la transition avec systemd ? ====
Il ne semble plus y avoir de problème particulier (http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org)

====Comment gérer 2 écran, 2 session avec une seule carte graphique ?====
Il faut savoir que Xephyr permet de se greffer sur n'importe quel serveur X afin d'afficher une autre session. Par exemple avec la commande &quot;Xephyr -query 127.0.0.1&quot; vous devez pouvoir vous connecter sur votre propre machine si le protocole &quot;XDMCP&quot; est activé sur votre &quot;DisplayManager&quot; (GDM, KDM, XDM, ...). Donc le but du jeu sera d'avoir un serveur X qui va &quot;supporter&quot; 2 fenêtres Xephyr. Ces deux dernières se verront affectées les claviers et les souris de manière exclusive.

====Et le DM ? Debian a adopté GDM(3) avec Gnome mais j'aimerais bien m'en passer.====
Avec GDM (celui de Gnome2) il existe un très bon tutoriel ici : http://netpatia.blogspot.fr/2009/06/multiseat-in-ubuntu-904.html 
Pour GDM3, le problème est que pour l'instant il ne reprend pas toutes les possibilitées de son ancienne version. 
https://live.gnome.org/GDM/ToDo
&quot;-- Allow per-display X Server commands 
		BrianCameron: The [server] and [server-foo] sections of the GDM configuration have been disabled. This means that users who depend on novel configurations which require special Xserver commands per-display is not available.&quot;

Donc bonne nouvelle, il fallait trouver une alternative en le nom de LightDM, qui est issu de Ubuntu ... 

===Prérequis===
Donc pour les pré-requis :
* Ajouter &quot;deb-src http://ftp.fr.debian.org/debian/ &lt;VersionDebian&gt; main contrib non-free&quot;
* Installer les paquage dpkg-dev, build-essential, devscripts, lightDM

==Reconstruction de Xephyr==
===Récupération des sources nécessaires===
On récupère toutes les sources du packet source xorg-server qui comprend Xephyr.

 $ apt-get source xserver-xephyr


Puis récupérer toutes les dépendances spécifique au paquet :

 # apt-get build-dep xorg-server

Là il va télécharger un certain nombre de paquets de développement (&quot;-dev&quot;), ils sont marqués comme installés automatiquement, donc un deborphan devrait vous les enlever sans trop de problème. Sinon il existe cette commande pour être sûr qu'ils sont marqués en tant que &quot;installé automatiquement&quot;, puis un &quot;apt-get autoclean&quot; les supprimera.

===Reconfiguration===
Ensuite tout se passe dans le répertoire &quot;debian&quot;

 $ cd xorg-server-X.YY.Z/debian


On édite le fichier &quot;changlog&quot; pour monter de version le paquet que l'on va reconstruire. Il est possible de le faire en automatique avec la commande:

 debian/$ dch -n


L'option &quot;-n&quot; permet d'incrémenter le numéro de version de façon mineur, c'est à dire l'ajout de &quot;.1&quot; en fin de numéro de version.

Sinon pour le faire en manuel, il faut ajouter une ligne du type suivant au fichier:
&lt;pre&gt;
xorg-server (2:X.YY.Z-A.B) UNRELEASED; urgency=low

  * Non-maintainer upload.
  * ajout des paramètre pour Xephyr et evdev

 -- Vous &lt;vous@VotreMachine&gt;  Sun, 03 Mar 2013 22:21:32 +0100
&lt;/pre&gt;

Pour éviter de réinstaller tout Xorg avec le nouveau numéro de version il faut éditer le fichier &quot;debian/control&quot; et modifier la dépendance de Xephyr (ligne ~288). Pour cela il faut remplacer le 
&lt;pre&gt;
Depends :
  xserver-common (&gt;= ${source:Version})
&lt;/pre&gt;
Par :
&lt;pre&gt;
Depends :
  xserver-common (&gt;= 2:X.YY.Z-A.B)
&lt;/pre&gt;

Le numéro doit être en accord avec la version de votre Xorg actuellement installé sur votre machine. 
Sinon cette modification est directement possible dans le .deb, toujours dans le fichier &quot;DEBIAN/control&quot;. Pour cela il faut prendre le .deb que vous avez construit, le décompresser, modifier le fichier et faire la commande &quot;dpkg-deb -b &lt;nom du répertoire contenant les fichiers&gt;&quot;. Mais il est plus pratique de le faire avant.

Je ne vous conseille pas de mettre une numéro de version trop élevé car cela pourrait engendrer une incompatibilité avec les futurs versions de Xorg.

Ensuite nous allons modifier les options de compilation en éditant le fichier &quot;rules&quot;, c'est le Makefile de la construction du paquet.
Localisez &quot;confflags_main&quot; (ligne ~118) et ajoutez les lignes suivantes juste en dessous de &quot;--enable-kdrive&quot; (ligne ~142)

 --enable-kdrive-evdev \
 --enable-kdrive-mouse \
 --enable-kdrive-kbd \

===Recompilation===
Passons maintenant à la recompilation proprement dite, ressortez du répertoire debian et faites :
 $ fakeroot ./debian/rules binary

Et laissez la compilation et la création des paquets se faire ... cela peut prendre quelques minutes.

====Re-recompilation====
Si pour une raison il vous faut refaire entièrement la compilation il faut d'abord faire la commande suivante
 $ fakeroot ./debian/rules clean

Si c'est juste refaire les &quot;.deb&quot; (correction du numéro de dépendance, ...), alors cette commande suffit.
 $ fakeroot ./debian/rules binary-deb

====Erreur de compilation possible====
Il est possible que à la fin de la compilation vous ayez le mesage suivant
 $ make: *** [binary-deb] Erreur 2

Pour identifier la cause il faut remonter dans les logs (ou faire une recherche) pour trouver un message similaire à :

 dpkg-shlibdeps: erreur: impossible de trouver la bibliothèque libaudit.so.0 utilisée par debian/xserver-xorg-core/usr/lib/xorg/modules/multimedia/tda9885_drv.so (format ELF : « elf64-x86-64 »; RPATH : «  »)

Par exemple pour cette erreur la solution à été de créer un lien symbolique vers la version plus récente de la lib
 ln -s libaudit.so.1 libaudit.so.0

===Installation du paquet obtenue===
Enfin pour installer votre paquet (qui se trouve dans le répertoire supérieur) il faut faire :
 #dpkg -i xserver-xephyr_1.12.4-5_i386.deb
Ou de manière graphique avec GDebi.
====Paquets déjà prêt====
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6_i386.deb.tar]]
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6.1_amd64.deb.tar]]

==Configuration de Xorg==
===Définition de l'existant===
Pour rappel le principe sera d'avoir une session X qui va héberger 2 sessions Xephyr qui serviront les différents sièges.
Tout d'abord nous allons faire un fichier de conf pour le serveur Xorg. Pour ne pas démarrer de rien on peut lancer la commande (en root) &quot;Xorg -configure&quot; qui génère le fichier &quot;xorg.conf.new&quot; dans &quot;/root&quot;. Ensuite on fait un petit &quot;xrandr&quot; pour identifier les sorties disponibles.
&lt;pre&gt;
$ xrandr

Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 593mm
&lt;/pre&gt;

&quot;DVI-0&quot; &amp; &quot;HDMI-0&quot; sont les 2 disponibles sur la machine. On peut aussi trouver du &quot;VGA-0&quot; ou &quot;LVDS&quot; pour les écrans de portables.

===Exemple de fichier de configuration===
Dans cet exemple on peut avoir un &quot;/etc/xorg.conf&quot; comme suivant :
&lt;pre&gt;
##################################################################
Section &quot;Monitor&quot;
	Identifier  &quot;HannsG&quot;
	Option      &quot;PreferredMode&quot; &quot;1920x1200&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
	Option		&quot;Primary&quot; &quot;true&quot;
EndSection

Section &quot;Monitor&quot;
	Identifier  &quot;Acer&quot;
	Option      &quot;PreferredMode&quot; &quot;1680x1050&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
EndSection

Section &quot;Device&quot;
	Identifier  &quot;card0&quot;
	Driver      &quot;radeon&quot;
	# Ici on associe les sorties video avec une section &quot;Monitor&quot;
	# On remarquera le &quot;Monitor&quot; devant le nom des sortie, c'est indispensable (cf : http://www.x.org/archive/current/doc/man/man5/xorg.conf.5.xhtml#heading12)
	Option      &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
	Option      &quot;Monitor-DVI-0&quot; &quot;Acer&quot;
EndSection

##################################################################

Section &quot;Screen&quot;
	Identifier  &quot;ecran1&quot;
	Device      &quot;card0&quot;
	Monitor     &quot;HansG&quot;
	DefaultDepth 24
	SubSection &quot;Display&quot;
 		Depth   24
		Virtual 3600 1200
	EndSubSection
EndSection

Section &quot;ServerLayout&quot;
	Identifier    &quot;dualscreen&quot;
	Screen      0  &quot;ecran1&quot;
EndSection
##################################################################
&lt;/pre&gt;

==Configuration de LightDM==
Nous allons maintenant regarder la configuration de LightDM d'un peu plus près. Le fichier de configuration par défaut expose toutes les options possibles du dit fichier. Nous allons garder le strict minimum
===lightdm.conf===
Pour cela éditons le fichier /etc/lightd/lightdm.conf

&lt;pre&gt;
[LightDM]
 greeter-user=root
 user-authority-in-system-dir=false

 [SeatDefaults]
 xserver-allow-tcp=false
 greeter-hide-users=false
 user-session=lightdm-xsession
 session-wrapper=/etc/X11/Xsession

 [Seat:0]
 xserver-command=nohup X -br -dpms -s 0 -novtswitch -nocursor
 greeter-session=fake-greeter

 [Seat:1]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 1 -t 1680x1050 -P evdev -s /dev/input/by-id/usb-Logitech_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd -v bepo 
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 1
 greeter-session=lightdm-greeter

[Seat:2]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 2 -t 1920x1200 -P evdev -s /dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-path/platform-i8042-serio-0-event-kbd
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 2 -d 1680,0
 greeter-session=lightdm-greeter
&lt;/pre&gt;

Il y a plusieurs chose à savoir concernant le fonctionnement de LightDM afin de comprendre ce qui est fait.
-- La section &quot;SeatDefault&quot; est commune à tous les sièges définis après
-- Chaque &quot;Seat&quot; est exécuté dans l'ordre dans un VT différent et ce même si, dans notre cas, tout se passe dans le VT7 ([url=https://code.launchpad.net/~andrzejtp2010/lightdm/lightdm-trunk-xephyr-multiseat/+merge/120286]un patch[url] à été proposé pour palier à ce problème mais il n'a pas été accepté ... pour l'instant)
-- Chaque propriété de tous les &quot;Seat&quot; est lancée dans un ordre précis, d'abord tous les &quot;xserver-command&quot;, puis tous les &quot;greeter-setup-script&quot;, enfin tous les &quot;greeter-session&quot;. Si vous mettez d'autres propriétés elle seront exécutées suivant leur ordre pré-établi.
-- Si les &quot;greeter&quot; se terminent, lightDM coupe le &quot;xserver-command&quot; correspondant. De même si le &quot;xserver-command&quot; se termine le greeter est coupé.

Donc pour que tout se positionne correctement il faut
-- D'abord lancer le serveur X qui servira de support, ce qui est fait en le mettant en tant que premier poste (&quot;Seat:0&quot;)
-- Lancer les fenêtres Xephyr avec les optons qui vont bien, ce qui est fait avec le script &quot;Xephyr-command.sh&quot; et ses arguments
-- Simuler un &quot;greeter&quot; pour le &quot;Seat :0&quot; afin que le serveur X ne soit pas tué par lightDM, ce qui est fait avec le script &quot;fake-greeter&quot;
-- Exécuter un script qui va placer les fenêtre Xephyr si besoin et initialiser les variables d'environnement correctement, fait avec &quot;Xephyr-greeter-setup.sh&quot;
-- Exécuter les &quot;greeter&quot; dans les fenêtre Xephyr

===fake-greeter.desktop===
Pour le faux greeter du serveur X il faut créer un fichier dans &quot;/usr/share/xgreeters/fake-greeter.desktop&quot; et y copier son contenu :
&lt;pre&gt;
[Desktop Entry]
Name=LightDM fake greeter
Comment=This runs no greeter at all, it should only be run from LightDM
Exec=sleep infinity
Type=Application
X-Ubuntu-Gettext-Domain=lightdm
&lt;/pre&gt;

Après tout cela nous allons créer un script qui permettra de créer (&quot;Xephyr-command.sh&quot;) et un autre pour placer les fenêtre à l'écran (&quot;Xephyr-greeter-setup.sh&quot;).
Tout d'abord il est nécessaire d'installer le petit utilitaire &quot;wmctrl&quot; avec
 # aptitude install wmctrl
===Xephyr-command.sh===
Le contenu du fichier &quot;Xephyr-command.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -t, taille : Doit être de la forme 9999x9999, (dafaut = 1024x768)&quot;
  echo &quot;\t -s, sourie : /dev/input/[by-path|by-id]/...event-mouse&quot;
  echo &quot;\t -c, clavier : /dev/input/[by-path|by-id]/...event-kbd&quot;
  echo &quot;\t -l, layout : fr, es, en, ... (défaut = fr)&quot;
  echo &quot;\t -v, variant : fr, latin9, bepo, ... (défaut = &lt;vide&gt;)&quot;
  echo &quot;\t -P, Pilote : ephyr ou evdev (défaut = ephyr)&quot;
}

testExecutable() {
	XEPHYR=`whereis -b Xephyr | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
TAILLE=&quot;1024x768&quot;
SOURIE=
CLAVIER=
LAYOUT=&quot;fr&quot;
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
PILOTE=ephyr # Test = ephyr ; Prod = evdev

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XEPHYR&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;Xephyr : &quot;$XEPHYR
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:t:s:c:l:v:P:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		t|taille)
			TAILLE=&quot;$OPTARG&quot;
		;;

		s|sourie)
			SOURIE=$OPTARG
			if  ! [ -r $SOURIE ];then
				echo &quot;La sourie n'est pas accessible&quot;
				exit 3
			fi
		;;

		c|clavier)
			CLAVIER=$OPTARG
			if  ! [ -r $CLAVIER ];then
				echo &quot;Le clavier n'est pas accessible&quot;
				exit 4
			fi
		;;

		l|layout)
			LAYOUT=$OPTARG
		;;

		v|variant)
			VARIANT=$OPTARG
		;;

		P|Pilote)
			PILOTE=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variables d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Construction de la ligne d&quot;argument
OPTIONS=&quot;&quot;

if [ -n &quot;${TAILLE}&quot; ]; then
	OPTIONS=&quot; -screen ${TAILLE}&quot;
fi

if [ -n &quot;${CLAVIER}&quot; ]; then
	if [ -n &quot;${LAYOUT}&quot; ]; then
		OPTIONS=$OPTIONS&quot; -keybd $PILOTE,,device=${CLAVIER},xkbrules=evdev,xkbmodel=evdev,xkblayout=${LAYOUT}&quot;
		if [ -n &quot;${VARIANT}&quot; ]; then
			OPTIONS=$OPTIONS&quot;,xkbvariant=${VARIANT}&quot;
		fi
	fi
fi

if [ -n &quot;${SOURIE}&quot; ]; then
	OPTIONS=$OPTIONS&quot; -mouse $PILOTE,,device=${SOURIE}&quot;
fi

# Lancement de Xephyr en arrière plan
echo &quot;$XEPHYR -retro $OPTIONS :$POSTE&quot;
exec $XEPHYR -retro  $OPTIONS :$POSTE
&lt;/pre&gt;

Petite explication sur la dernière ligne. Le &quot;exec&quot; fait en sorte que ce soit le processus de Xephyr qui prend la place du script, donc il reprend le PID et tout ce qui va bien. Cela permet surtout que le signal USR1 que Xephyr lance au PPID, soit bien récupéré par LightDM et que ce dernier continue son fonctionnement normalement.

===Xephyr-greeter-setup.sh===
Le contenu du fichier &quot;Xephyr-greeter-setup.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p|--poste numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -d, --deplacement : de la forme 'x,y' (en pixel)&quot;
  echo &quot;\t -v, --vt : 7, 8, 9, 10, 11 (defaut = 7)&quot;
}

testExecutable() {
	XWININFO=`whereis -b xwininfo | cut -d' ' -f2`
	WMCTRL=`whereis -b wmctrl | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
DEPLACEMENT=
VT=7
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
ATTENTE=3 # temps en seconde avant de déclencher le &quot;chvt&quot; pour revenir sur le bon VT

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XWININFO&quot; -o -z &quot;$WMCTRL&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;xwininfo : &quot;$XWININFO
	echo &quot;wmctrl : &quot;$WMCTRL
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:d:v:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		d|deplacement)
			DEPLACEMENT=&quot;$OPTARG&quot;
		;;
	
		v|vt)
			VT=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Vieux Hack tout bancal pour revenir au bon VT sans patcher LightDM
(sleep $ATTENTE ; chvt $VT)&amp;

# Deplacement de la fenetre si besoin
if [ -n &quot;$DEPLACEMENT&quot; ]; then
	#On recherche l'ID de la fenêtre Xephyr
        XEP=`XAUTHORITY=/var/run/lightdm/root/:$XRACINE $XWININFO -root -children -all -display :$XRACINE | grep &quot;Xephyr on :$POSTE&quot; --max-count=1`;

	if [ -z &quot;$XEP&quot; ]; then
		echo &quot;fenêtre Xephyr non trouvé pour le poste $POSTE&quot;
		exit 5
	fi
    XEPHYR_WIN_ID=`echo ${XEP} | cut -d' ' -f1`;
    $WMCTRL 2&gt;&amp;1 -v -i -r ${XEPHYR_WIN_ID} -e 0,${DEPLACEMENT},-1,-1;
	if [ $? -ne 0 ]; then
		echo &quot;Erreur lors du déplacement de la fenêtre Xephyr pour le poste $POSTE&quot;
		exit 7
	fi
fi

# Mise en place des variables d'environnement pour le greeter (utile ?)
export DISPLAY=:$POSTE
export XAUTHORITY=/var/run/lightdm/root/:$POSTE
&lt;/pre&gt;
Petite explication concernant la ligne suivante
 (sleep $ATTENTE ; chvt $VT)&amp;
Comme je n'ai pas patché LightDM pour éviter le changement de VT et que Xephyr m'empêche de faire un Ctrl+Alt+7 (avec le driver evdev) pour revenir au bon VT, j'ai du mettre en place un automatisme. Certes c'est loin d'être parfait mais ça rempli correctement son office.

==Modification du système==
===Montage des périphériques USB===
On se rend assez vite compte que si l'on branche une clé USB elle n'apparait pas automatiquement sur le bureau et elle est encore moins &quot;montable&quot; par un utilisateur classique. Elle apparait bien dans la liste des périphériques accessibles (volet de gauche sur nautilus) mais il y a un problème de droit.
Un petit rappel de la chaine mise en jeu lorsque l'on branche une clé USB ou tout autre périphérique.
* Détection par le noyau de l'ajout d'un matériel
* Udev prend le relais et créé les périphériques block nécessaires dans /dev
* PolicyKit termine le travail en mettant en place les autorisations adéquates

Donc le blocage vient de ce dernier composant, il ne reconnaît pas une session Xephyr comme &quot;active&quot; et donc refuse le montage de ce type de périphérique par l'utilisateur lambda. Pour passer au delà de cette limitation on va redéfinir la règle de montage, pour cela il faut aller dans le répertoire suivant :
 /etc/polkit-1/localauthority/50-local.d
Et y créer un fichier, &quot;10-udisk.pkla&quot; par exemple
&lt;pre&gt;
[Allow mounting from Xephyr]
Identity=*
Action=org.freedesktop.udisks.change;org.freedesktop.udisks.drive-detach;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.filesystem-unmount-others
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

Voilà, avec Gnome3 dans le volet de gauche de Nautilus on peut cliquer sur l'icône de la clé USB pour qu'elle se monte correctement, idem avec LXDE.
Je recommande de désactiver l'automontage des périphériques USB afin que l'utilisateur qui branche la clé puisse la monter sans interférence.

===Gestion de l'énergie===
De la même manière que précédemment, par défaut il est impossible d'éteindre l'ordinateur depuis la session graphique (hors LightDM).
Donc pour cela on créé un nouveau fichier (20-upower.pkla) dans :
 /etc/polkit-1/localauthority/50-local.d

&lt;pre&gt;
[Suspend/hibernate permissions]
Identity=*
Action=org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

===Gestion du son===
Par défaut Pulseaudio est lancé lors de l'identification d'un utilisateur, du coup il est le seul qui puisse utiliser la carte son. Pour pallier à ce problème il faut rendre pulseaudio démon du système.
Pour cela il faut modifier plusieurs fichiers de configuration :
* /etc/default/pulseaudio
&lt;pre&gt;PULSEAUDIO_SYSTEM_START=1&lt;/pre&gt;

* /etc/pulse/daemon.conf
&lt;pre&gt;daemonize = yes
local-server-type = system&lt;/pre&gt;

* /etc/pulse/client.conf
&lt;pre&gt;autospawn = no&lt;/pre&gt;

* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot;
 usermod -aG pulse-access &lt;username&gt;

* On peut enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse

([http://askubuntu.com/questions/192522/how-do-i-configure-sound-with-pulseaudio-and-multiseat source] [http://disjunkt.com/jd/2010/en/multiseat-linux/multiseat-linux-system-wide-pulseaudio-for-routing-sounds-109/ source2])

====Modification des DE (Gnome, KDE, LXDE, ...)====
Par défaut les environnements graphique exécutent Pulseaudio en espace utilisateur, ce qu'il ne faut plus faire puisqu'il est partagé, ce qui ne devrait plus être possible si vous avez enlevé les utilisateurs des groupes. Donc il est nécessaire de désactiver cela avec l'outil de votre environnement de Bureau. Par exemple pour LXDE il s'agit de lxsession, si vous avez des problème pour cet environnement [http://wiki.lxde.org/en/Autostart cette page (et ses liens)] devrait vous aider

===Aller plus loin===
* Si l'on veut restreindre ce droit par utilisateur ou par groupe on modifie la ligne &quot;Identity&quot; comme il suit
 Identity=unix-user:toto;unix-group:plugdev
* Pour creuser un peu plus la configuration de ce système on peux aller voir [http://www.freedesktop.org/software/polkit/docs/0.105/pklocalauthority.8.html cette page] sur PolicyKit
* Il serait aussi intéressant de définir des ports USB réservés pour chaque siège, mais je ne sais pas encore comment gérer cela.
* Voir s'il est possible de dédier les voies arrière à un poste et les voies avant à un autre ...

==Conclusion==
Et voilà, tout est prêt pour le redémarrage et admirer les mires de login sur leur écran respectif.

===Avantages===
* Avec du matériel de récupération on peut facilement mettre en place cette solution peu coûteuse
* La satisfaction d'avoir un poste de travail exotique
* Permettre à une tierce personne de profiter de la puissance monstre des machines récentes sans se priver de notre fauteuil favori
* Se sentir moins seul avec une/plusieurs personnes à coté de soi :-p

===Inconvénients===
* Accélération graphique fortement diminuée
* Si on débranche les claviers/souries Xephyr ne sait pas les reconnaître automatiquement au branchement. Il faut relancer Xephyr en se déconnectant ou relancer LightDM
* Un &quot;saut&quot; des 2 écrans lors de la déconnexion d'un poste, mais cela est dû à LightDM et son changment de VT intempestif.
* Surveillance de chaque mise à jour de Xorg pour ne pas avoir de surprise au redémarrage
* Recompilation nécessaire en cas de mise à jour majeure de Xorg
* Gestion des montages USB non optimale
* Les voyants du clavier (pavé numérique, Majuscule et arrêt défil) ne réagissent plus, mais le clavier réagit correctement.
* Dans l'espace de travail de certains logiciel (VLC, Gimp) la souris peut avoir un affichage lacunaire. Par exemple sous GIMP elle n'est visible que lorsqu'on la déplace, avec VLS il y a un carré noir autour d'elle quand on la déplace le reste du temps elle disparait.

===Remerciement===
Un grand merci à ce site pour m'avoir prémaché le travail ... ce qui ne m'as pas empêché d'apporter quelques améliorations à sa solution.
http://beforeafterx.blogspot.fr/2012/08/configuration-of-ligthdm-12.html</text>
      <sha1>nho24g6bj3ljbzc7o2f78cf8l9cexm6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5421</id>
      <parentid>5420</parentid>
      <timestamp>2013-10-02T21:52:49Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <comment>/* Reconfiguration */</comment>
      <text xml:space="preserve" bytes="24942">Après avoir fait du [http://www.debian-fr.org/multiseat-plusieurs-utilisateurs-sur-1-pc-t6954.html#p188187 multiposte avec 2 CG], un changement de PC m'oblige à faire la même chose mais avec une seule carte. J'ai essayé de couvrir au maximum toutes les étapes de la mise en place de la solution.

----
==Choix des outils==
Tout d'abord le raisonnement pour le choix des outils à été le suivant.
==== Xorg ou Wayland ?====
La réponse a été rapide. Xorg clairement, Wayland est encore trop récent pour pouvoir le faire et aucun document ne traite pour l'instant de ce problème.

==== Xnest ou Xephyr ?====
Xephyr est largement plébiscité et Xnest semble tomber en désuétude. C'est par le développement de Tizen (ex-Meego) que Xephyr semble toujours actif et que de nouvelles fonctionnalités lui sont ajoutées. Intel s'en sert intensément et est énormément utilisé pour le développement d'application pour smartphone comme environnement de simulation. (http://www.phoronix.com/scan.php?page=news_item&amp;px=ODc1NQ).
Un souci avec Xephyr est que le support de evdev semble ne pas avoir été inclus dans les options de compilations. &quot;evdev&quot; permet de monopoliser les claviers et souris. Du coup il faut refaire le paquet soi-même.

==== Et la transition avec systemd ? ====
Il ne semble plus y avoir de problème particulier (http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org)

====Comment gérer 2 écran, 2 session avec une seule carte graphique ?====
Il faut savoir que Xephyr permet de se greffer sur n'importe quel serveur X afin d'afficher une autre session. Par exemple avec la commande &quot;Xephyr -query 127.0.0.1&quot; vous devez pouvoir vous connecter sur votre propre machine si le protocole &quot;XDMCP&quot; est activé sur votre &quot;DisplayManager&quot; (GDM, KDM, XDM, ...). Donc le but du jeu sera d'avoir un serveur X qui va &quot;supporter&quot; 2 fenêtres Xephyr. Ces deux dernières se verront affectées les claviers et les souris de manière exclusive.

====Et le DM ? Debian a adopté GDM(3) avec Gnome mais j'aimerais bien m'en passer.====
Avec GDM (celui de Gnome2) il existe un très bon tutoriel ici : http://netpatia.blogspot.fr/2009/06/multiseat-in-ubuntu-904.html 
Pour GDM3, le problème est que pour l'instant il ne reprend pas toutes les possibilitées de son ancienne version. 
https://live.gnome.org/GDM/ToDo
&quot;-- Allow per-display X Server commands 
		BrianCameron: The [server] and [server-foo] sections of the GDM configuration have been disabled. This means that users who depend on novel configurations which require special Xserver commands per-display is not available.&quot;

Donc bonne nouvelle, il fallait trouver une alternative en le nom de LightDM, qui est issu de Ubuntu ... 

===Prérequis===
Donc pour les pré-requis :
* Ajouter &quot;deb-src http://ftp.fr.debian.org/debian/ &lt;VersionDebian&gt; main contrib non-free&quot;
* Installer les paquage dpkg-dev, build-essential, devscripts, lightDM

==Reconstruction de Xephyr==
===Récupération des sources nécessaires===
On récupère toutes les sources du packet source xorg-server qui comprend Xephyr.

 $ apt-get source xserver-xephyr


Puis récupérer toutes les dépendances spécifique au paquet :

 # apt-get build-dep xorg-server

Là il va télécharger un certain nombre de paquets de développement (&quot;-dev&quot;), ils sont marqués comme installés automatiquement, donc un deborphan devrait vous les enlever sans trop de problème. Sinon il existe cette commande pour être sûr qu'ils sont marqués en tant que &quot;installé automatiquement&quot;, puis un &quot;apt-get autoclean&quot; les supprimera.

===Reconfiguration===
Ensuite tout se passe dans le répertoire &quot;debian&quot;

 $ cd xorg-server-X.YY.Z/debian


On édite le fichier &quot;changlog&quot; pour monter de version le paquet que l'on va reconstruire. Il est possible de le faire en automatique avec la commande:

 debian/$ dch -n


L'option &quot;-n&quot; permet d'incrémenter le numéro de version de façon mineur, c'est à dire l'ajout de &quot;.1&quot; en fin de numéro de version.

Sinon pour le faire en manuel, il faut ajouter une ligne du type suivant au fichier:
&lt;pre&gt;
xorg-server (2:X.YY.Z-A.B) UNRELEASED; urgency=low

  * Non-maintainer upload.
  * ajout des paramètre pour Xephyr et evdev

 -- Vous &lt;vous@VotreMachine&gt;  Sun, 03 Mar 2013 22:21:32 +0100
&lt;/pre&gt;

Pour éviter de réinstaller tout Xorg avec le nouveau numéro de version il faut éditer le fichier &quot;debian/control&quot; et modifier la dépendance de Xephyr (ligne ~288). Pour cela il faut remplacer le 
&lt;pre&gt;
Depends :
  xserver-common (&gt;= ${source:Version})
&lt;/pre&gt;
Par :
&lt;pre&gt;
Depends :
  xserver-common (&gt;= 2:X.YY.Z-A)
&lt;/pre&gt;

Le numéro doit être en accord avec la version de votre Xorg actuellement installé sur votre machine. 
Sinon cette modification est directement possible dans le .deb, toujours dans le fichier &quot;DEBIAN/control&quot;. Pour cela il faut prendre le .deb que vous avez construit, le décompresser, modifier le fichier et faire la commande &quot;dpkg-deb -b &lt;nom du répertoire contenant les fichiers&gt;&quot;. Mais il est plus pratique de le faire avant.

Je ne vous conseille pas de mettre une numéro de version trop élevé car cela pourrait engendrer une incompatibilité avec les futurs versions de Xorg.

Ensuite nous allons modifier les options de compilation en éditant le fichier &quot;rules&quot;, c'est le Makefile de la construction du paquet.
Localisez &quot;confflags_main&quot; (ligne ~118) et ajoutez les lignes suivantes juste en dessous de &quot;--enable-kdrive&quot; (ligne ~142)

 --enable-kdrive-evdev \
 --enable-kdrive-mouse \
 --enable-kdrive-kbd \

===Recompilation===
Passons maintenant à la recompilation proprement dite, ressortez du répertoire debian et faites :
 $ fakeroot ./debian/rules binary

Et laissez la compilation et la création des paquets se faire ... cela peut prendre quelques minutes.

====Re-recompilation====
Si pour une raison il vous faut refaire entièrement la compilation il faut d'abord faire la commande suivante
 $ fakeroot ./debian/rules clean

Si c'est juste refaire les &quot;.deb&quot; (correction du numéro de dépendance, ...), alors cette commande suffit.
 $ fakeroot ./debian/rules binary-deb

====Erreur de compilation possible====
Il est possible que à la fin de la compilation vous ayez le mesage suivant
 $ make: *** [binary-deb] Erreur 2

Pour identifier la cause il faut remonter dans les logs (ou faire une recherche) pour trouver un message similaire à :

 dpkg-shlibdeps: erreur: impossible de trouver la bibliothèque libaudit.so.0 utilisée par debian/xserver-xorg-core/usr/lib/xorg/modules/multimedia/tda9885_drv.so (format ELF : « elf64-x86-64 »; RPATH : «  »)

Par exemple pour cette erreur la solution à été de créer un lien symbolique vers la version plus récente de la lib
 ln -s libaudit.so.1 libaudit.so.0

===Installation du paquet obtenue===
Enfin pour installer votre paquet (qui se trouve dans le répertoire supérieur) il faut faire :
 #dpkg -i xserver-xephyr_1.12.4-5_i386.deb
Ou de manière graphique avec GDebi.
====Paquets déjà prêt====
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6_i386.deb.tar]]
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6.1_amd64.deb.tar]]

==Configuration de Xorg==
===Définition de l'existant===
Pour rappel le principe sera d'avoir une session X qui va héberger 2 sessions Xephyr qui serviront les différents sièges.
Tout d'abord nous allons faire un fichier de conf pour le serveur Xorg. Pour ne pas démarrer de rien on peut lancer la commande (en root) &quot;Xorg -configure&quot; qui génère le fichier &quot;xorg.conf.new&quot; dans &quot;/root&quot;. Ensuite on fait un petit &quot;xrandr&quot; pour identifier les sorties disponibles.
&lt;pre&gt;
$ xrandr

Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 593mm
&lt;/pre&gt;

&quot;DVI-0&quot; &amp; &quot;HDMI-0&quot; sont les 2 disponibles sur la machine. On peut aussi trouver du &quot;VGA-0&quot; ou &quot;LVDS&quot; pour les écrans de portables.

===Exemple de fichier de configuration===
Dans cet exemple on peut avoir un &quot;/etc/xorg.conf&quot; comme suivant :
&lt;pre&gt;
##################################################################
Section &quot;Monitor&quot;
	Identifier  &quot;HannsG&quot;
	Option      &quot;PreferredMode&quot; &quot;1920x1200&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
	Option		&quot;Primary&quot; &quot;true&quot;
EndSection

Section &quot;Monitor&quot;
	Identifier  &quot;Acer&quot;
	Option      &quot;PreferredMode&quot; &quot;1680x1050&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
EndSection

Section &quot;Device&quot;
	Identifier  &quot;card0&quot;
	Driver      &quot;radeon&quot;
	# Ici on associe les sorties video avec une section &quot;Monitor&quot;
	# On remarquera le &quot;Monitor&quot; devant le nom des sortie, c'est indispensable (cf : http://www.x.org/archive/current/doc/man/man5/xorg.conf.5.xhtml#heading12)
	Option      &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
	Option      &quot;Monitor-DVI-0&quot; &quot;Acer&quot;
EndSection

##################################################################

Section &quot;Screen&quot;
	Identifier  &quot;ecran1&quot;
	Device      &quot;card0&quot;
	Monitor     &quot;HansG&quot;
	DefaultDepth 24
	SubSection &quot;Display&quot;
 		Depth   24
		Virtual 3600 1200
	EndSubSection
EndSection

Section &quot;ServerLayout&quot;
	Identifier    &quot;dualscreen&quot;
	Screen      0  &quot;ecran1&quot;
EndSection
##################################################################
&lt;/pre&gt;

==Configuration de LightDM==
Nous allons maintenant regarder la configuration de LightDM d'un peu plus près. Le fichier de configuration par défaut expose toutes les options possibles du dit fichier. Nous allons garder le strict minimum
===lightdm.conf===
Pour cela éditons le fichier /etc/lightd/lightdm.conf

&lt;pre&gt;
[LightDM]
 greeter-user=root
 user-authority-in-system-dir=false

 [SeatDefaults]
 xserver-allow-tcp=false
 greeter-hide-users=false
 user-session=lightdm-xsession
 session-wrapper=/etc/X11/Xsession

 [Seat:0]
 xserver-command=nohup X -br -dpms -s 0 -novtswitch -nocursor
 greeter-session=fake-greeter

 [Seat:1]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 1 -t 1680x1050 -P evdev -s /dev/input/by-id/usb-Logitech_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd -v bepo 
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 1
 greeter-session=lightdm-greeter

[Seat:2]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 2 -t 1920x1200 -P evdev -s /dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-path/platform-i8042-serio-0-event-kbd
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 2 -d 1680,0
 greeter-session=lightdm-greeter
&lt;/pre&gt;

Il y a plusieurs chose à savoir concernant le fonctionnement de LightDM afin de comprendre ce qui est fait.
-- La section &quot;SeatDefault&quot; est commune à tous les sièges définis après
-- Chaque &quot;Seat&quot; est exécuté dans l'ordre dans un VT différent et ce même si, dans notre cas, tout se passe dans le VT7 ([url=https://code.launchpad.net/~andrzejtp2010/lightdm/lightdm-trunk-xephyr-multiseat/+merge/120286]un patch[url] à été proposé pour palier à ce problème mais il n'a pas été accepté ... pour l'instant)
-- Chaque propriété de tous les &quot;Seat&quot; est lancée dans un ordre précis, d'abord tous les &quot;xserver-command&quot;, puis tous les &quot;greeter-setup-script&quot;, enfin tous les &quot;greeter-session&quot;. Si vous mettez d'autres propriétés elle seront exécutées suivant leur ordre pré-établi.
-- Si les &quot;greeter&quot; se terminent, lightDM coupe le &quot;xserver-command&quot; correspondant. De même si le &quot;xserver-command&quot; se termine le greeter est coupé.

Donc pour que tout se positionne correctement il faut
-- D'abord lancer le serveur X qui servira de support, ce qui est fait en le mettant en tant que premier poste (&quot;Seat:0&quot;)
-- Lancer les fenêtres Xephyr avec les optons qui vont bien, ce qui est fait avec le script &quot;Xephyr-command.sh&quot; et ses arguments
-- Simuler un &quot;greeter&quot; pour le &quot;Seat :0&quot; afin que le serveur X ne soit pas tué par lightDM, ce qui est fait avec le script &quot;fake-greeter&quot;
-- Exécuter un script qui va placer les fenêtre Xephyr si besoin et initialiser les variables d'environnement correctement, fait avec &quot;Xephyr-greeter-setup.sh&quot;
-- Exécuter les &quot;greeter&quot; dans les fenêtre Xephyr

===fake-greeter.desktop===
Pour le faux greeter du serveur X il faut créer un fichier dans &quot;/usr/share/xgreeters/fake-greeter.desktop&quot; et y copier son contenu :
&lt;pre&gt;
[Desktop Entry]
Name=LightDM fake greeter
Comment=This runs no greeter at all, it should only be run from LightDM
Exec=sleep infinity
Type=Application
X-Ubuntu-Gettext-Domain=lightdm
&lt;/pre&gt;

Après tout cela nous allons créer un script qui permettra de créer (&quot;Xephyr-command.sh&quot;) et un autre pour placer les fenêtre à l'écran (&quot;Xephyr-greeter-setup.sh&quot;).
Tout d'abord il est nécessaire d'installer le petit utilitaire &quot;wmctrl&quot; avec
 # aptitude install wmctrl
===Xephyr-command.sh===
Le contenu du fichier &quot;Xephyr-command.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -t, taille : Doit être de la forme 9999x9999, (dafaut = 1024x768)&quot;
  echo &quot;\t -s, sourie : /dev/input/[by-path|by-id]/...event-mouse&quot;
  echo &quot;\t -c, clavier : /dev/input/[by-path|by-id]/...event-kbd&quot;
  echo &quot;\t -l, layout : fr, es, en, ... (défaut = fr)&quot;
  echo &quot;\t -v, variant : fr, latin9, bepo, ... (défaut = &lt;vide&gt;)&quot;
  echo &quot;\t -P, Pilote : ephyr ou evdev (défaut = ephyr)&quot;
}

testExecutable() {
	XEPHYR=`whereis -b Xephyr | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
TAILLE=&quot;1024x768&quot;
SOURIE=
CLAVIER=
LAYOUT=&quot;fr&quot;
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
PILOTE=ephyr # Test = ephyr ; Prod = evdev

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XEPHYR&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;Xephyr : &quot;$XEPHYR
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:t:s:c:l:v:P:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		t|taille)
			TAILLE=&quot;$OPTARG&quot;
		;;

		s|sourie)
			SOURIE=$OPTARG
			if  ! [ -r $SOURIE ];then
				echo &quot;La sourie n'est pas accessible&quot;
				exit 3
			fi
		;;

		c|clavier)
			CLAVIER=$OPTARG
			if  ! [ -r $CLAVIER ];then
				echo &quot;Le clavier n'est pas accessible&quot;
				exit 4
			fi
		;;

		l|layout)
			LAYOUT=$OPTARG
		;;

		v|variant)
			VARIANT=$OPTARG
		;;

		P|Pilote)
			PILOTE=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variables d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Construction de la ligne d&quot;argument
OPTIONS=&quot;&quot;

if [ -n &quot;${TAILLE}&quot; ]; then
	OPTIONS=&quot; -screen ${TAILLE}&quot;
fi

if [ -n &quot;${CLAVIER}&quot; ]; then
	if [ -n &quot;${LAYOUT}&quot; ]; then
		OPTIONS=$OPTIONS&quot; -keybd $PILOTE,,device=${CLAVIER},xkbrules=evdev,xkbmodel=evdev,xkblayout=${LAYOUT}&quot;
		if [ -n &quot;${VARIANT}&quot; ]; then
			OPTIONS=$OPTIONS&quot;,xkbvariant=${VARIANT}&quot;
		fi
	fi
fi

if [ -n &quot;${SOURIE}&quot; ]; then
	OPTIONS=$OPTIONS&quot; -mouse $PILOTE,,device=${SOURIE}&quot;
fi

# Lancement de Xephyr en arrière plan
echo &quot;$XEPHYR -retro $OPTIONS :$POSTE&quot;
exec $XEPHYR -retro  $OPTIONS :$POSTE
&lt;/pre&gt;

Petite explication sur la dernière ligne. Le &quot;exec&quot; fait en sorte que ce soit le processus de Xephyr qui prend la place du script, donc il reprend le PID et tout ce qui va bien. Cela permet surtout que le signal USR1 que Xephyr lance au PPID, soit bien récupéré par LightDM et que ce dernier continue son fonctionnement normalement.

===Xephyr-greeter-setup.sh===
Le contenu du fichier &quot;Xephyr-greeter-setup.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p|--poste numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -d, --deplacement : de la forme 'x,y' (en pixel)&quot;
  echo &quot;\t -v, --vt : 7, 8, 9, 10, 11 (defaut = 7)&quot;
}

testExecutable() {
	XWININFO=`whereis -b xwininfo | cut -d' ' -f2`
	WMCTRL=`whereis -b wmctrl | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
DEPLACEMENT=
VT=7
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
ATTENTE=3 # temps en seconde avant de déclencher le &quot;chvt&quot; pour revenir sur le bon VT

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XWININFO&quot; -o -z &quot;$WMCTRL&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;xwininfo : &quot;$XWININFO
	echo &quot;wmctrl : &quot;$WMCTRL
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:d:v:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		d|deplacement)
			DEPLACEMENT=&quot;$OPTARG&quot;
		;;
	
		v|vt)
			VT=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Vieux Hack tout bancal pour revenir au bon VT sans patcher LightDM
(sleep $ATTENTE ; chvt $VT)&amp;

# Deplacement de la fenetre si besoin
if [ -n &quot;$DEPLACEMENT&quot; ]; then
	#On recherche l'ID de la fenêtre Xephyr
        XEP=`XAUTHORITY=/var/run/lightdm/root/:$XRACINE $XWININFO -root -children -all -display :$XRACINE | grep &quot;Xephyr on :$POSTE&quot; --max-count=1`;

	if [ -z &quot;$XEP&quot; ]; then
		echo &quot;fenêtre Xephyr non trouvé pour le poste $POSTE&quot;
		exit 5
	fi
    XEPHYR_WIN_ID=`echo ${XEP} | cut -d' ' -f1`;
    $WMCTRL 2&gt;&amp;1 -v -i -r ${XEPHYR_WIN_ID} -e 0,${DEPLACEMENT},-1,-1;
	if [ $? -ne 0 ]; then
		echo &quot;Erreur lors du déplacement de la fenêtre Xephyr pour le poste $POSTE&quot;
		exit 7
	fi
fi

# Mise en place des variables d'environnement pour le greeter (utile ?)
export DISPLAY=:$POSTE
export XAUTHORITY=/var/run/lightdm/root/:$POSTE
&lt;/pre&gt;
Petite explication concernant la ligne suivante
 (sleep $ATTENTE ; chvt $VT)&amp;
Comme je n'ai pas patché LightDM pour éviter le changement de VT et que Xephyr m'empêche de faire un Ctrl+Alt+7 (avec le driver evdev) pour revenir au bon VT, j'ai du mettre en place un automatisme. Certes c'est loin d'être parfait mais ça rempli correctement son office.

==Modification du système==
===Montage des périphériques USB===
On se rend assez vite compte que si l'on branche une clé USB elle n'apparait pas automatiquement sur le bureau et elle est encore moins &quot;montable&quot; par un utilisateur classique. Elle apparait bien dans la liste des périphériques accessibles (volet de gauche sur nautilus) mais il y a un problème de droit.
Un petit rappel de la chaine mise en jeu lorsque l'on branche une clé USB ou tout autre périphérique.
* Détection par le noyau de l'ajout d'un matériel
* Udev prend le relais et créé les périphériques block nécessaires dans /dev
* PolicyKit termine le travail en mettant en place les autorisations adéquates

Donc le blocage vient de ce dernier composant, il ne reconnaît pas une session Xephyr comme &quot;active&quot; et donc refuse le montage de ce type de périphérique par l'utilisateur lambda. Pour passer au delà de cette limitation on va redéfinir la règle de montage, pour cela il faut aller dans le répertoire suivant :
 /etc/polkit-1/localauthority/50-local.d
Et y créer un fichier, &quot;10-udisk.pkla&quot; par exemple
&lt;pre&gt;
[Allow mounting from Xephyr]
Identity=*
Action=org.freedesktop.udisks.change;org.freedesktop.udisks.drive-detach;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.filesystem-unmount-others
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

Voilà, avec Gnome3 dans le volet de gauche de Nautilus on peut cliquer sur l'icône de la clé USB pour qu'elle se monte correctement, idem avec LXDE.
Je recommande de désactiver l'automontage des périphériques USB afin que l'utilisateur qui branche la clé puisse la monter sans interférence.

===Gestion de l'énergie===
De la même manière que précédemment, par défaut il est impossible d'éteindre l'ordinateur depuis la session graphique (hors LightDM).
Donc pour cela on créé un nouveau fichier (20-upower.pkla) dans :
 /etc/polkit-1/localauthority/50-local.d

&lt;pre&gt;
[Suspend/hibernate permissions]
Identity=*
Action=org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

===Gestion du son===
Par défaut Pulseaudio est lancé lors de l'identification d'un utilisateur, du coup il est le seul qui puisse utiliser la carte son. Pour pallier à ce problème il faut rendre pulseaudio démon du système.
Pour cela il faut modifier plusieurs fichiers de configuration :
* /etc/default/pulseaudio
&lt;pre&gt;PULSEAUDIO_SYSTEM_START=1&lt;/pre&gt;

* /etc/pulse/daemon.conf
&lt;pre&gt;daemonize = yes
local-server-type = system&lt;/pre&gt;

* /etc/pulse/client.conf
&lt;pre&gt;autospawn = no&lt;/pre&gt;

* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot;
 usermod -aG pulse-access &lt;username&gt;

* On peut enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse

([http://askubuntu.com/questions/192522/how-do-i-configure-sound-with-pulseaudio-and-multiseat source] [http://disjunkt.com/jd/2010/en/multiseat-linux/multiseat-linux-system-wide-pulseaudio-for-routing-sounds-109/ source2])

====Modification des DE (Gnome, KDE, LXDE, ...)====
Par défaut les environnements graphique exécutent Pulseaudio en espace utilisateur, ce qu'il ne faut plus faire puisqu'il est partagé, ce qui ne devrait plus être possible si vous avez enlevé les utilisateurs des groupes. Donc il est nécessaire de désactiver cela avec l'outil de votre environnement de Bureau. Par exemple pour LXDE il s'agit de lxsession, si vous avez des problème pour cet environnement [http://wiki.lxde.org/en/Autostart cette page (et ses liens)] devrait vous aider

===Aller plus loin===
* Si l'on veut restreindre ce droit par utilisateur ou par groupe on modifie la ligne &quot;Identity&quot; comme il suit
 Identity=unix-user:toto;unix-group:plugdev
* Pour creuser un peu plus la configuration de ce système on peux aller voir [http://www.freedesktop.org/software/polkit/docs/0.105/pklocalauthority.8.html cette page] sur PolicyKit
* Il serait aussi intéressant de définir des ports USB réservés pour chaque siège, mais je ne sais pas encore comment gérer cela.
* Voir s'il est possible de dédier les voies arrière à un poste et les voies avant à un autre ...

==Conclusion==
Et voilà, tout est prêt pour le redémarrage et admirer les mires de login sur leur écran respectif.

===Avantages===
* Avec du matériel de récupération on peut facilement mettre en place cette solution peu coûteuse
* La satisfaction d'avoir un poste de travail exotique
* Permettre à une tierce personne de profiter de la puissance monstre des machines récentes sans se priver de notre fauteuil favori
* Se sentir moins seul avec une/plusieurs personnes à coté de soi :-p

===Inconvénients===
* Accélération graphique fortement diminuée
* Si on débranche les claviers/souries Xephyr ne sait pas les reconnaître automatiquement au branchement. Il faut relancer Xephyr en se déconnectant ou relancer LightDM
* Un &quot;saut&quot; des 2 écrans lors de la déconnexion d'un poste, mais cela est dû à LightDM et son changment de VT intempestif.
* Surveillance de chaque mise à jour de Xorg pour ne pas avoir de surprise au redémarrage
* Recompilation nécessaire en cas de mise à jour majeure de Xorg
* Gestion des montages USB non optimale
* Les voyants du clavier (pavé numérique, Majuscule et arrêt défil) ne réagissent plus, mais le clavier réagit correctement.
* Dans l'espace de travail de certains logiciel (VLC, Gimp) la souris peut avoir un affichage lacunaire. Par exemple sous GIMP elle n'est visible que lorsqu'on la déplace, avec VLS il y a un carré noir autour d'elle quand on la déplace le reste du temps elle disparait.

===Remerciement===
Un grand merci à ce site pour m'avoir prémaché le travail ... ce qui ne m'as pas empêché d'apporter quelques améliorations à sa solution.
http://beforeafterx.blogspot.fr/2012/08/configuration-of-ligthdm-12.html</text>
      <sha1>rqsb05kalu2evlc2kt0e9fqu8hho4q1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5543</id>
      <parentid>5421</parentid>
      <timestamp>2014-02-16T01:49:07Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <text xml:space="preserve" bytes="26000">Après avoir fait du [http://www.debian-fr.org/multiseat-plusieurs-utilisateurs-sur-1-pc-t6954.html#p188187 multiposte avec 2 CG], un changement de PC m'oblige à faire la même chose mais avec une seule carte. J'ai essayé de couvrir au maximum toutes les étapes de la mise en place de la solution.

----
==Choix des outils==
Tout d'abord le raisonnement pour le choix des outils à été le suivant.
==== Xorg ou Wayland ?====
La réponse a été rapide. Xorg clairement, Wayland est encore trop récent pour pouvoir le faire et aucun document ne traite pour l'instant de ce problème.

==== Xnest ou Xephyr ?====
Xephyr est largement plébiscité et Xnest semble tomber en désuétude. C'est par le développement de Tizen (ex-Meego) que Xephyr semble toujours actif et que de nouvelles fonctionnalités lui sont ajoutées. Intel s'en sert intensément et est énormément utilisé pour le développement d'application pour smartphone comme environnement de simulation. (http://www.phoronix.com/scan.php?page=news_item&amp;px=ODc1NQ).
Un souci avec Xephyr est que le support de evdev semble ne pas avoir été inclus dans les options de compilations. &quot;evdev&quot; permet de monopoliser les claviers et souris. Du coup il faut refaire le paquet soi-même.

==== Et la transition avec systemd ? ====
Il ne semble plus y avoir de problème particulier (http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org)

====Comment gérer 2 écran, 2 session avec une seule carte graphique ?====
Il faut savoir que Xephyr permet de se greffer sur n'importe quel serveur X afin d'afficher une autre session. Par exemple avec la commande &quot;Xephyr -query 127.0.0.1&quot; vous devez pouvoir vous connecter sur votre propre machine si le protocole &quot;XDMCP&quot; est activé sur votre &quot;DisplayManager&quot; (GDM, KDM, XDM, ...). Donc le but du jeu sera d'avoir un serveur X qui va &quot;supporter&quot; 2 fenêtres Xephyr. Ces deux dernières se verront affectées les claviers et les souris de manière exclusive.

====Et le DM ? Debian a adopté GDM(3) avec Gnome mais j'aimerais bien m'en passer.====
Avec GDM (celui de Gnome2) il existe un très bon tutoriel ici : http://netpatia.blogspot.fr/2009/06/multiseat-in-ubuntu-904.html 
Pour GDM3, le problème est que pour l'instant il ne reprend pas toutes les possibilitées de son ancienne version. 
https://live.gnome.org/GDM/ToDo
&quot;-- Allow per-display X Server commands 
		BrianCameron: The [server] and [server-foo] sections of the GDM configuration have been disabled. This means that users who depend on novel configurations which require special Xserver commands per-display is not available.&quot;

Donc bonne nouvelle, il fallait trouver une alternative en le nom de LightDM, qui est issu de Ubuntu ... 

===Prérequis===
Donc pour les pré-requis :
* Ajouter &quot;deb-src http://ftp.fr.debian.org/debian/ &lt;VersionDebian&gt; main contrib non-free&quot;
* Installer les paquage dpkg-dev, build-essential, devscripts, lightDM

==Reconstruction de Xephyr==
===Récupération des sources nécessaires===
On récupère toutes les sources du packet source xorg-server qui comprend Xephyr.

 $ apt-get source xserver-xephyr


Puis récupérer toutes les dépendances spécifique au paquet :

 # apt-get build-dep xorg-server

Là il va télécharger un certain nombre de paquets de développement (&quot;-dev&quot;), ils sont marqués comme installés automatiquement, donc un deborphan devrait vous les enlever sans trop de problème. Sinon il existe cette commande pour être sûr qu'ils sont marqués en tant que &quot;installé automatiquement&quot;, puis un &quot;apt-get autoclean&quot; les supprimera.

===Reconfiguration===
Ensuite tout se passe dans le répertoire &quot;debian&quot;

 $ cd xorg-server-X.YY.Z/debian


On édite le fichier &quot;changlog&quot; pour monter de version le paquet que l'on va reconstruire. Il est possible de le faire en automatique avec la commande:

 debian/$ dch -n


L'option &quot;-n&quot; permet d'incrémenter le numéro de version de façon mineur, c'est à dire l'ajout de &quot;.1&quot; en fin de numéro de version.

Sinon pour le faire en manuel, il faut ajouter une ligne du type suivant au fichier:
&lt;pre&gt;
xorg-server (2:X.YY.Z-A.B) UNRELEASED; urgency=low

  * Non-maintainer upload.
  * ajout des paramètre pour Xephyr et evdev

 -- Vous &lt;vous@VotreMachine&gt;  Sun, 03 Mar 2013 22:21:32 +0100
&lt;/pre&gt;

Pour éviter de réinstaller tout Xorg avec le nouveau numéro de version il faut éditer le fichier &quot;debian/control&quot; et modifier la dépendance de Xephyr (ligne ~288). Pour cela il faut remplacer le 
&lt;pre&gt;
Depends :
  xserver-common (&gt;= ${source:Version})
&lt;/pre&gt;
Par :
&lt;pre&gt;
Depends :
  xserver-common (&gt;= 2:X.YY.Z-A)
&lt;/pre&gt;

Le numéro doit être en accord avec la version de votre Xorg actuellement installé sur votre machine. 
Sinon cette modification est directement possible dans le .deb, toujours dans le fichier &quot;DEBIAN/control&quot;. Pour cela il faut prendre le .deb que vous avez construit, le décompresser, modifier le fichier et faire la commande &quot;dpkg-deb -b &lt;nom du répertoire contenant les fichiers&gt;&quot;. Mais il est plus pratique de le faire avant.

Je ne vous conseille pas de mettre une numéro de version trop élevé car cela pourrait engendrer une incompatibilité avec les futurs versions de Xorg.

Ensuite nous allons modifier les options de compilation en éditant le fichier &quot;rules&quot;, c'est le Makefile de la construction du paquet.
Localisez &quot;confflags_main&quot; (ligne ~118) et ajoutez les lignes suivantes juste en dessous de &quot;--enable-kdrive&quot; (ligne ~142)

 --enable-kdrive-evdev \
 --enable-kdrive-mouse \
 --enable-kdrive-kbd \

===Recompilation===
Passons maintenant à la recompilation proprement dite, ressortez du répertoire debian et faites :
 $ fakeroot ./debian/rules binary

Et laissez la compilation et la création des paquets se faire ... cela peut prendre quelques minutes.

====Re-recompilation====
Si pour une raison il vous faut refaire entièrement la compilation il faut d'abord faire la commande suivante
 $ fakeroot ./debian/rules clean

Si c'est juste refaire les &quot;.deb&quot; (correction du numéro de dépendance, ...), alors cette commande suffit.
 $ fakeroot ./debian/rules binary-deb

====Erreur de compilation possible====
Il est possible que à la fin de la compilation vous ayez le mesage suivant
 $ make: *** [binary-deb] Erreur 2

Pour identifier la cause il faut remonter dans les logs (ou faire une recherche) pour trouver un message similaire à :

 dpkg-shlibdeps: erreur: impossible de trouver la bibliothèque libaudit.so.0 utilisée par debian/xserver-xorg-core/usr/lib/xorg/modules/multimedia/tda9885_drv.so (format ELF : « elf64-x86-64 »; RPATH : «  »)

Par exemple pour cette erreur la solution à été de créer un lien symbolique vers la version plus récente de la lib
 ln -s libaudit.so.1 libaudit.so.0

===Installation du paquet obtenue===
Enfin pour installer votre paquet (qui se trouve dans le répertoire supérieur) il faut faire :
 #dpkg -i xserver-xephyr_1.12.4-5_i386.deb
Ou de manière graphique avec GDebi.
====Paquets déjà prêt====
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6_i386.deb.tar]]
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6.1_amd64.deb.tar]]

==Configuration de Xorg==
===Définition de l'existant===
Pour rappel le principe sera d'avoir une session X qui va héberger 2 sessions Xephyr qui serviront les différents sièges.
Tout d'abord nous allons faire un fichier de conf pour le serveur Xorg. Pour ne pas démarrer de rien on peut lancer la commande (en root) &quot;Xorg -configure&quot; qui génère le fichier &quot;xorg.conf.new&quot; dans &quot;/root&quot;. Ensuite on fait un petit &quot;xrandr&quot; pour identifier les sorties disponibles.
&lt;pre&gt;
$ xrandr

Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 593mm
&lt;/pre&gt;

&quot;DVI-0&quot; &amp; &quot;HDMI-0&quot; sont les 2 disponibles sur la machine. On peut aussi trouver du &quot;VGA-0&quot; ou &quot;LVDS&quot; pour les écrans de portables.

===Exemple de fichier de configuration===
Dans cet exemple on peut avoir un &quot;/etc/xorg.conf&quot; comme suivant :
&lt;pre&gt;
##################################################################
Section &quot;Monitor&quot;
	Identifier  &quot;HannsG&quot;
	Option      &quot;PreferredMode&quot; &quot;1920x1200&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
	Option		&quot;Primary&quot; &quot;true&quot;
EndSection

Section &quot;Monitor&quot;
	Identifier  &quot;Acer&quot;
	Option      &quot;PreferredMode&quot; &quot;1680x1050&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
EndSection

Section &quot;Device&quot;
	Identifier  &quot;card0&quot;
	Driver      &quot;radeon&quot;
	# Ici on associe les sorties video avec une section &quot;Monitor&quot;
	# On remarquera le &quot;Monitor&quot; devant le nom des sortie, c'est indispensable (cf : http://www.x.org/archive/current/doc/man/man5/xorg.conf.5.xhtml#heading12)
	Option      &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
	Option      &quot;Monitor-DVI-0&quot; &quot;Acer&quot;
EndSection

##################################################################

Section &quot;Screen&quot;
	Identifier  &quot;ecran1&quot;
	Device      &quot;card0&quot;
	Monitor     &quot;HansG&quot;
	DefaultDepth 24
	SubSection &quot;Display&quot;
 		Depth   24
		Virtual 3600 1200
	EndSubSection
EndSection

Section &quot;ServerLayout&quot;
	Identifier    &quot;dualscreen&quot;
	Screen      0  &quot;ecran1&quot;
EndSection
##################################################################
&lt;/pre&gt;

==Configuration de LightDM==
Nous allons maintenant regarder la configuration de LightDM d'un peu plus près. Le fichier de configuration par défaut expose toutes les options possibles du dit fichier. Nous allons garder le strict minimum
===lightdm.conf===
Pour cela éditons le fichier /etc/lightd/lightdm.conf

&lt;pre&gt;
[LightDM]
 greeter-user=root
 user-authority-in-system-dir=false

 [SeatDefaults]
 xserver-allow-tcp=false
 greeter-hide-users=false
 user-session=lightdm-xsession
 session-wrapper=/etc/X11/Xsession
 session-setup-script=/etc/lightdm/session-setup-script.sh -a 3 -v 7

 [Seat:0]
 xserver-command=nohup X -br -dpms -s 0 -novtswitch -nocursor
 greeter-session=fake-greeter

 [Seat:1]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 1 -t 1680x1050 -P evdev -s /dev/input/by-id/usb-Logitech_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd -v bepo 
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 1
 greeter-session=lightdm-greeter

[Seat:2]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 2 -t 1920x1200 -P evdev -s /dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-path/platform-i8042-serio-0-event-kbd
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 2 -d 1680,0
 greeter-session=lightdm-greeter
&lt;/pre&gt;

Il y a plusieurs chose à savoir concernant le fonctionnement de LightDM afin de comprendre ce qui est fait.
* La section &quot;SeatDefault&quot; est commune à tous les sièges définis après
* Chaque &quot;Seat&quot; est exécuté dans l'ordre dans un VT différent et ce même si, dans notre cas, tout se passe dans le VT7 ([url=https://code.launchpad.net/~andrzejtp2010/lightdm/lightdm-trunk-xephyr-multiseat/+merge/120286]un patch[url] à été proposé pour palier à ce problème mais il n'a pas été accepté ... pour l'instant)
* Chaque propriété de tous les &quot;Seat&quot; est lancée dans un ordre précis, d'abord tous les &quot;xserver-command&quot;, puis tous les &quot;greeter-setup-script&quot;, enfin tous les &quot;greeter-session&quot;. Si vous mettez d'autres propriétés elle seront exécutées suivant leur ordre pré-établi.
* Si les &quot;greeter&quot; se terminent, lightDM coupe le &quot;xserver-command&quot; correspondant. De même si le &quot;xserver-command&quot; se termine le greeter est coupé.

Donc pour que tout se positionne correctement il faut
* D'abord lancer le serveur X qui servira de support, ce qui est fait en le mettant en tant que premier poste (&quot;Seat:0&quot;)
* Lancer les fenêtres Xephyr avec les optons qui vont bien, ce qui est fait avec le script &quot;Xephyr-command.sh&quot; et ses arguments
* Simuler un &quot;greeter&quot; pour le &quot;Seat :0&quot; afin que le serveur X ne soit pas tué par lightDM, ce qui est fait avec le script &quot;fake-greeter&quot;
* Exécuter un script qui va placer les fenêtre Xephyr si besoin et initialiser les variables d'environnement correctement, fait avec &quot;Xephyr-greeter-setup.sh&quot;
* Exécuter les &quot;greeter&quot; dans les fenêtre Xephyr
* (MAJ 02/2014) Il faut rechanger de VT lorsque l'utilisateur se logue car LightDM semble se repositionner sur le VT qui est sensé contenir le poste (VT 8,9, ...), donc le script session-setup-script.sh devient indispensable

===fake-greeter.desktop===
Pour le faux greeter du serveur X il faut créer un fichier dans &quot;/usr/share/xgreeters/fake-greeter.desktop&quot; et y copier son contenu :
&lt;pre&gt;
[Desktop Entry]
Name=LightDM fake greeter
Comment=This runs no greeter at all, it should only be run from LightDM
Exec=sleep infinity
Type=Application
X-Ubuntu-Gettext-Domain=lightdm
&lt;/pre&gt;

Après tout cela nous allons créer un script qui permettra de créer (&quot;Xephyr-command.sh&quot;) et un autre pour placer les fenêtre à l'écran (&quot;Xephyr-greeter-setup.sh&quot;).
Tout d'abord il est nécessaire d'installer le petit utilitaire &quot;wmctrl&quot; avec
 # aptitude install wmctrl
===Xephyr-command.sh===
Le contenu du fichier &quot;Xephyr-command.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -t, taille : Doit être de la forme 9999x9999, (dafaut = 1024x768)&quot;
  echo &quot;\t -s, sourie : /dev/input/[by-path|by-id]/...event-mouse&quot;
  echo &quot;\t -c, clavier : /dev/input/[by-path|by-id]/...event-kbd&quot;
  echo &quot;\t -l, layout : fr, es, en, ... (défaut = fr)&quot;
  echo &quot;\t -v, variant : fr, latin9, bepo, ... (défaut = &lt;vide&gt;)&quot;
  echo &quot;\t -P, Pilote : ephyr ou evdev (défaut = ephyr)&quot;
}

testExecutable() {
	XEPHYR=`whereis -b Xephyr | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
TAILLE=&quot;1024x768&quot;
SOURIE=
CLAVIER=
LAYOUT=&quot;fr&quot;
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
PILOTE=ephyr # Test = ephyr ; Prod = evdev

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XEPHYR&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;Xephyr : &quot;$XEPHYR
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:t:s:c:l:v:P:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		t|taille)
			TAILLE=&quot;$OPTARG&quot;
		;;

		s|sourie)
			SOURIE=$OPTARG
			if  ! [ -r $SOURIE ];then
				echo &quot;La sourie n'est pas accessible&quot;
				exit 3
			fi
		;;

		c|clavier)
			CLAVIER=$OPTARG
			if  ! [ -r $CLAVIER ];then
				echo &quot;Le clavier n'est pas accessible&quot;
				exit 4
			fi
		;;

		l|layout)
			LAYOUT=$OPTARG
		;;

		v|variant)
			VARIANT=$OPTARG
		;;

		P|Pilote)
			PILOTE=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variables d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Construction de la ligne d&quot;argument
OPTIONS=&quot;&quot;

if [ -n &quot;${TAILLE}&quot; ]; then
	OPTIONS=&quot; -screen ${TAILLE}&quot;
fi

if [ -n &quot;${CLAVIER}&quot; ]; then
	if [ -n &quot;${LAYOUT}&quot; ]; then
		OPTIONS=$OPTIONS&quot; -keybd $PILOTE,,device=${CLAVIER},xkbrules=evdev,xkbmodel=evdev,xkblayout=${LAYOUT}&quot;
		if [ -n &quot;${VARIANT}&quot; ]; then
			OPTIONS=$OPTIONS&quot;,xkbvariant=${VARIANT}&quot;
		fi
	fi
fi

if [ -n &quot;${SOURIE}&quot; ]; then
	OPTIONS=$OPTIONS&quot; -mouse $PILOTE,,device=${SOURIE}&quot;
fi

# Lancement de Xephyr en arrière plan
echo &quot;$XEPHYR -retro $OPTIONS :$POSTE&quot;
exec $XEPHYR -retro  $OPTIONS :$POSTE
&lt;/pre&gt;

Petite explication sur la dernière ligne. Le &quot;exec&quot; fait en sorte que ce soit le processus de Xephyr qui prend la place du script, donc il reprend le PID et tout ce qui va bien. Cela permet surtout que le signal USR1 que Xephyr lance au PPID, soit bien récupéré par LightDM et que ce dernier continue son fonctionnement normalement.

===Xephyr-greeter-setup.sh===
Le contenu du fichier &quot;Xephyr-greeter-setup.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p|--poste numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -d, --deplacement : de la forme 'x,y' (en pixel)&quot;
  echo &quot;\t -v, --vt : 7, 8, 9, 10, 11 (defaut = 7)&quot;
}

testExecutable() {
	XWININFO=`whereis -b xwininfo | cut -d' ' -f2`
	WMCTRL=`whereis -b wmctrl | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
DEPLACEMENT=
VT=7
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
ATTENTE=3 # temps en seconde avant de déclencher le &quot;chvt&quot; pour revenir sur le bon VT

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XWININFO&quot; -o -z &quot;$WMCTRL&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;xwininfo : &quot;$XWININFO
	echo &quot;wmctrl : &quot;$WMCTRL
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:d:v:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		d|deplacement)
			DEPLACEMENT=&quot;$OPTARG&quot;
		;;
	
		v|vt)
			VT=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Vieux Hack tout bancal pour revenir au bon VT sans patcher LightDM
(sleep $ATTENTE ; chvt $VT)&amp;

# Deplacement de la fenetre si besoin
if [ -n &quot;$DEPLACEMENT&quot; ]; then
	#On recherche l'ID de la fenêtre Xephyr
        XEP=`XAUTHORITY=/var/run/lightdm/root/:$XRACINE $XWININFO -root -children -all -display :$XRACINE | grep &quot;Xephyr on :$POSTE&quot; --max-count=1`;

	if [ -z &quot;$XEP&quot; ]; then
		echo &quot;fenêtre Xephyr non trouvé pour le poste $POSTE&quot;
		exit 5
	fi
    XEPHYR_WIN_ID=`echo ${XEP} | cut -d' ' -f1`;
    $WMCTRL 2&gt;&amp;1 -v -i -r ${XEPHYR_WIN_ID} -e 0,${DEPLACEMENT},-1,-1;
	if [ $? -ne 0 ]; then
		echo &quot;Erreur lors du déplacement de la fenêtre Xephyr pour le poste $POSTE&quot;
		exit 7
	fi
fi

# Mise en place des variables d'environnement pour le greeter (utile ?)
export DISPLAY=:$POSTE
export XAUTHORITY=/var/run/lightdm/root/:$POSTE
&lt;/pre&gt;
Petite explication concernant la ligne suivante
 (sleep $ATTENTE ; chvt $VT)&amp;
Comme je n'ai pas patché LightDM pour éviter le changement de VT et que Xephyr m'empêche de faire un Ctrl+Alt+7 (avec le driver evdev) pour revenir au bon VT, j'ai du mettre en place un automatisme. Certes c'est loin d'être parfait mais ça rempli correctement son office.

===session-setup-script.sh===
Script indispensable pour retourner sur le bon VT une fois l'utilisateur identifié.
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### VALEURS PAR DEFAUT #############
VT=7
ATTENTE=5 # temps en seconde avant de déclencher le &quot;chvt&quot; pour revenir sur le bon VT

while getopts &quot;:a:v:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		a|attente)
			ATTENTE=$OPTARG
		;;
		v|vt)
			VT=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' necessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

# Vieux Hack tout bancal pour revenir au bon VT sans patcher LightDM
(sleep $ATTENTE ; chvt $VT)&amp;
&lt;/pre&gt;
==Modification du système==
===Montage des périphériques USB===
On se rend assez vite compte que si l'on branche une clé USB elle n'apparait pas automatiquement sur le bureau et elle est encore moins &quot;montable&quot; par un utilisateur classique. Elle apparait bien dans la liste des périphériques accessibles (volet de gauche sur nautilus) mais il y a un problème de droit.
Un petit rappel de la chaine mise en jeu lorsque l'on branche une clé USB ou tout autre périphérique.
* Détection par le noyau de l'ajout d'un matériel
* Udev prend le relais et créé les périphériques block nécessaires dans /dev
* PolicyKit termine le travail en mettant en place les autorisations adéquates

Donc le blocage vient de ce dernier composant, il ne reconnaît pas une session Xephyr comme &quot;active&quot; et donc refuse le montage de ce type de périphérique par l'utilisateur lambda. Pour passer au delà de cette limitation on va redéfinir la règle de montage, pour cela il faut aller dans le répertoire suivant :
 /etc/polkit-1/localauthority/50-local.d
Et y créer un fichier, &quot;10-udisk.pkla&quot; par exemple
&lt;pre&gt;
[Allow mounting from Xephyr]
Identity=*
Action=org.freedesktop.udisks.change;org.freedesktop.udisks.drive-detach;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.filesystem-unmount-others
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

Voilà, avec Gnome3 dans le volet de gauche de Nautilus on peut cliquer sur l'icône de la clé USB pour qu'elle se monte correctement, idem avec LXDE.
Je recommande de désactiver l'automontage des périphériques USB afin que l'utilisateur qui branche la clé puisse la monter sans interférence.

===Gestion de l'énergie===
De la même manière que précédemment, par défaut il est impossible d'éteindre l'ordinateur depuis la session graphique (hors LightDM).
Donc pour cela on créé un nouveau fichier (20-upower.pkla) dans :
 /etc/polkit-1/localauthority/50-local.d

&lt;pre&gt;
[Suspend/hibernate permissions]
Identity=*
Action=org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

===Gestion du son===
Par défaut Pulseaudio est lancé lors de l'identification d'un utilisateur, du coup il est le seul qui puisse utiliser la carte son. Pour pallier à ce problème il faut rendre pulseaudio démon du système.
Pour cela il faut modifier plusieurs fichiers de configuration :
* /etc/default/pulseaudio
&lt;pre&gt;PULSEAUDIO_SYSTEM_START=1&lt;/pre&gt;

* /etc/pulse/daemon.conf
&lt;pre&gt;daemonize = yes
local-server-type = system&lt;/pre&gt;

* /etc/pulse/client.conf
&lt;pre&gt;autospawn = no&lt;/pre&gt;

* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot;
 usermod -aG pulse-access &lt;username&gt;

* On peut enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse

([http://askubuntu.com/questions/192522/how-do-i-configure-sound-with-pulseaudio-and-multiseat source] [http://disjunkt.com/jd/2010/en/multiseat-linux/multiseat-linux-system-wide-pulseaudio-for-routing-sounds-109/ source2])

====Modification des DE (Gnome, KDE, LXDE, ...)====
Par défaut les environnements graphique exécutent Pulseaudio en espace utilisateur, ce qu'il ne faut plus faire puisqu'il est partagé, ce qui ne devrait plus être possible si vous avez enlevé les utilisateurs des groupes. Donc il est nécessaire de désactiver cela avec l'outil de votre environnement de Bureau. Par exemple pour LXDE il s'agit de lxsession, si vous avez des problème pour cet environnement [http://wiki.lxde.org/en/Autostart cette page (et ses liens)] devrait vous aider

===Aller plus loin===
* Si l'on veut restreindre ce droit par utilisateur ou par groupe on modifie la ligne &quot;Identity&quot; comme il suit
 Identity=unix-user:toto;unix-group:plugdev
* Pour creuser un peu plus la configuration de ce système on peux aller voir [http://www.freedesktop.org/software/polkit/docs/0.105/pklocalauthority.8.html cette page] sur PolicyKit
* Il serait aussi intéressant de définir des ports USB réservés pour chaque siège, mais je ne sais pas encore comment gérer cela.
* Voir s'il est possible de dédier les voies arrière à un poste et les voies avant à un autre ...

==Conclusion==
Et voilà, tout est prêt pour le redémarrage et admirer les mires de login sur leur écran respectif.

===Avantages===
* Avec du matériel de récupération on peut facilement mettre en place cette solution peu coûteuse
* La satisfaction d'avoir un poste de travail exotique
* Permettre à une tierce personne de profiter de la puissance monstre des machines récentes sans se priver de notre fauteuil favori
* Se sentir moins seul avec une/plusieurs personnes à coté de soi :-p

===Inconvénients===
* Accélération graphique fortement diminuée
* Si on débranche les claviers/souries Xephyr ne sait pas les reconnaître automatiquement au branchement. Il faut relancer Xephyr en se déconnectant ou relancer LightDM
* Un &quot;saut&quot; des 2 écrans lors de la déconnexion d'un poste, mais cela est dû à LightDM et son changment de VT intempestif.
* Surveillance de chaque mise à jour de Xorg pour ne pas avoir de surprise au redémarrage
* Recompilation nécessaire en cas de mise à jour majeure de Xorg
* Gestion des montages USB non optimale
* Les voyants du clavier (pavé numérique, Majuscule et arrêt défil) ne réagissent plus, mais le clavier réagit correctement.
* Dans l'espace de travail de certains logiciel (VLC, Gimp) la souris peut avoir un affichage lacunaire. Par exemple sous GIMP elle n'est visible que lorsqu'on la déplace, avec VLS il y a un carré noir autour d'elle quand on la déplace le reste du temps elle disparait.

===Remerciement===
Un grand merci à ce site pour m'avoir prémaché le travail ... ce qui ne m'as pas empêché d'apporter quelques améliorations à sa solution.
http://beforeafterx.blogspot.fr/2012/08/configuration-of-ligthdm-12.html</text>
      <sha1>n0wryx9lmzjmmvvgxsa5fvuvvmjdptr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5629</id>
      <parentid>5543</parentid>
      <timestamp>2014-06-25T17:45:06Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <comment>/* Configuration de LightDM */</comment>
      <text xml:space="preserve" bytes="26634">Après avoir fait du [http://www.debian-fr.org/multiseat-plusieurs-utilisateurs-sur-1-pc-t6954.html#p188187 multiposte avec 2 CG], un changement de PC m'oblige à faire la même chose mais avec une seule carte. J'ai essayé de couvrir au maximum toutes les étapes de la mise en place de la solution.

----
==Choix des outils==
Tout d'abord le raisonnement pour le choix des outils à été le suivant.
==== Xorg ou Wayland ?====
La réponse a été rapide. Xorg clairement, Wayland est encore trop récent pour pouvoir le faire et aucun document ne traite pour l'instant de ce problème.

==== Xnest ou Xephyr ?====
Xephyr est largement plébiscité et Xnest semble tomber en désuétude. C'est par le développement de Tizen (ex-Meego) que Xephyr semble toujours actif et que de nouvelles fonctionnalités lui sont ajoutées. Intel s'en sert intensément et est énormément utilisé pour le développement d'application pour smartphone comme environnement de simulation. (http://www.phoronix.com/scan.php?page=news_item&amp;px=ODc1NQ).
Un souci avec Xephyr est que le support de evdev semble ne pas avoir été inclus dans les options de compilations. &quot;evdev&quot; permet de monopoliser les claviers et souris. Du coup il faut refaire le paquet soi-même.

==== Et la transition avec systemd ? ====
Il ne semble plus y avoir de problème particulier (http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org)

====Comment gérer 2 écran, 2 session avec une seule carte graphique ?====
Il faut savoir que Xephyr permet de se greffer sur n'importe quel serveur X afin d'afficher une autre session. Par exemple avec la commande &quot;Xephyr -query 127.0.0.1&quot; vous devez pouvoir vous connecter sur votre propre machine si le protocole &quot;XDMCP&quot; est activé sur votre &quot;DisplayManager&quot; (GDM, KDM, XDM, ...). Donc le but du jeu sera d'avoir un serveur X qui va &quot;supporter&quot; 2 fenêtres Xephyr. Ces deux dernières se verront affectées les claviers et les souris de manière exclusive.

====Et le DM ? Debian a adopté GDM(3) avec Gnome mais j'aimerais bien m'en passer.====
Avec GDM (celui de Gnome2) il existe un très bon tutoriel ici : http://netpatia.blogspot.fr/2009/06/multiseat-in-ubuntu-904.html 
Pour GDM3, le problème est que pour l'instant il ne reprend pas toutes les possibilitées de son ancienne version. 
https://live.gnome.org/GDM/ToDo
&quot;-- Allow per-display X Server commands 
		BrianCameron: The [server] and [server-foo] sections of the GDM configuration have been disabled. This means that users who depend on novel configurations which require special Xserver commands per-display is not available.&quot;

Donc bonne nouvelle, il fallait trouver une alternative en le nom de LightDM, qui est issu de Ubuntu ... 

===Prérequis===
Donc pour les pré-requis :
* Ajouter &quot;deb-src http://ftp.fr.debian.org/debian/ &lt;VersionDebian&gt; main contrib non-free&quot;
* Installer les paquage dpkg-dev, build-essential, devscripts, lightDM

==Reconstruction de Xephyr==
===Récupération des sources nécessaires===
On récupère toutes les sources du packet source xorg-server qui comprend Xephyr.

 $ apt-get source xserver-xephyr


Puis récupérer toutes les dépendances spécifique au paquet :

 # apt-get build-dep xorg-server

Là il va télécharger un certain nombre de paquets de développement (&quot;-dev&quot;), ils sont marqués comme installés automatiquement, donc un deborphan devrait vous les enlever sans trop de problème. Sinon il existe cette commande pour être sûr qu'ils sont marqués en tant que &quot;installé automatiquement&quot;, puis un &quot;apt-get autoclean&quot; les supprimera.

===Reconfiguration===
Ensuite tout se passe dans le répertoire &quot;debian&quot;

 $ cd xorg-server-X.YY.Z/debian


On édite le fichier &quot;changlog&quot; pour monter de version le paquet que l'on va reconstruire. Il est possible de le faire en automatique avec la commande:

 debian/$ dch -n


L'option &quot;-n&quot; permet d'incrémenter le numéro de version de façon mineur, c'est à dire l'ajout de &quot;.1&quot; en fin de numéro de version.

Sinon pour le faire en manuel, il faut ajouter une ligne du type suivant au fichier:
&lt;pre&gt;
xorg-server (2:X.YY.Z-A.B) UNRELEASED; urgency=low

  * Non-maintainer upload.
  * ajout des paramètre pour Xephyr et evdev

 -- Vous &lt;vous@VotreMachine&gt;  Sun, 03 Mar 2013 22:21:32 +0100
&lt;/pre&gt;

Pour éviter de réinstaller tout Xorg avec le nouveau numéro de version il faut éditer le fichier &quot;debian/control&quot; et modifier la dépendance de Xephyr (ligne ~288). Pour cela il faut remplacer le 
&lt;pre&gt;
Depends :
  xserver-common (&gt;= ${source:Version})
&lt;/pre&gt;
Par :
&lt;pre&gt;
Depends :
  xserver-common (&gt;= 2:X.YY.Z-A)
&lt;/pre&gt;

Le numéro doit être en accord avec la version de votre Xorg actuellement installé sur votre machine. 
Sinon cette modification est directement possible dans le .deb, toujours dans le fichier &quot;DEBIAN/control&quot;. Pour cela il faut prendre le .deb que vous avez construit, le décompresser, modifier le fichier et faire la commande &quot;dpkg-deb -b &lt;nom du répertoire contenant les fichiers&gt;&quot;. Mais il est plus pratique de le faire avant.

Je ne vous conseille pas de mettre une numéro de version trop élevé car cela pourrait engendrer une incompatibilité avec les futurs versions de Xorg.

Ensuite nous allons modifier les options de compilation en éditant le fichier &quot;rules&quot;, c'est le Makefile de la construction du paquet.
Localisez &quot;confflags_main&quot; (ligne ~118) et ajoutez les lignes suivantes juste en dessous de &quot;--enable-kdrive&quot; (ligne ~142)

 --enable-kdrive-evdev \
 --enable-kdrive-mouse \
 --enable-kdrive-kbd \

===Recompilation===
Passons maintenant à la recompilation proprement dite, ressortez du répertoire debian et faites :
 $ fakeroot ./debian/rules binary

Et laissez la compilation et la création des paquets se faire ... cela peut prendre quelques minutes.

====Re-recompilation====
Si pour une raison il vous faut refaire entièrement la compilation il faut d'abord faire la commande suivante
 $ fakeroot ./debian/rules clean

Si c'est juste refaire les &quot;.deb&quot; (correction du numéro de dépendance, ...), alors cette commande suffit.
 $ fakeroot ./debian/rules binary-deb

====Erreur de compilation possible====
Il est possible que à la fin de la compilation vous ayez le mesage suivant
 $ make: *** [binary-deb] Erreur 2

Pour identifier la cause il faut remonter dans les logs (ou faire une recherche) pour trouver un message similaire à :

 dpkg-shlibdeps: erreur: impossible de trouver la bibliothèque libaudit.so.0 utilisée par debian/xserver-xorg-core/usr/lib/xorg/modules/multimedia/tda9885_drv.so (format ELF : « elf64-x86-64 »; RPATH : «  »)

Par exemple pour cette erreur la solution à été de créer un lien symbolique vers la version plus récente de la lib
 ln -s libaudit.so.1 libaudit.so.0

===Installation du paquet obtenue===
Enfin pour installer votre paquet (qui se trouve dans le répertoire supérieur) il faut faire :
 #dpkg -i xserver-xephyr_1.12.4-5_i386.deb
Ou de manière graphique avec GDebi.
====Paquets déjà prêt====
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6_i386.deb.tar]]
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6.1_amd64.deb.tar]]

==Configuration de Xorg==
===Définition de l'existant===
Pour rappel le principe sera d'avoir une session X qui va héberger 2 sessions Xephyr qui serviront les différents sièges.
Tout d'abord nous allons faire un fichier de conf pour le serveur Xorg. Pour ne pas démarrer de rien on peut lancer la commande (en root) &quot;Xorg -configure&quot; qui génère le fichier &quot;xorg.conf.new&quot; dans &quot;/root&quot;. Ensuite on fait un petit &quot;xrandr&quot; pour identifier les sorties disponibles.
&lt;pre&gt;
$ xrandr

Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 593mm
&lt;/pre&gt;

&quot;DVI-0&quot; &amp; &quot;HDMI-0&quot; sont les 2 disponibles sur la machine. On peut aussi trouver du &quot;VGA-0&quot; ou &quot;LVDS&quot; pour les écrans de portables.

===Exemple de fichier de configuration===
Dans cet exemple on peut avoir un &quot;/etc/xorg.conf&quot; comme suivant :
&lt;pre&gt;
##################################################################
Section &quot;Monitor&quot;
	Identifier  &quot;HannsG&quot;
	Option      &quot;PreferredMode&quot; &quot;1920x1200&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
	Option		&quot;Primary&quot; &quot;true&quot;
EndSection

Section &quot;Monitor&quot;
	Identifier  &quot;Acer&quot;
	Option      &quot;PreferredMode&quot; &quot;1680x1050&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
EndSection

Section &quot;Device&quot;
	Identifier  &quot;card0&quot;
	Driver      &quot;radeon&quot;
	# Ici on associe les sorties video avec une section &quot;Monitor&quot;
	# On remarquera le &quot;Monitor&quot; devant le nom des sortie, c'est indispensable (cf : http://www.x.org/archive/current/doc/man/man5/xorg.conf.5.xhtml#heading12)
	Option      &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
	Option      &quot;Monitor-DVI-0&quot; &quot;Acer&quot;
EndSection

##################################################################

Section &quot;Screen&quot;
	Identifier  &quot;ecran1&quot;
	Device      &quot;card0&quot;
	Monitor     &quot;HansG&quot;
	DefaultDepth 24
	SubSection &quot;Display&quot;
 		Depth   24
		Virtual 3600 1200
	EndSubSection
EndSection

Section &quot;ServerLayout&quot;
	Identifier    &quot;dualscreen&quot;
	Screen      0  &quot;ecran1&quot;
EndSection
##################################################################
&lt;/pre&gt;

==Configuration de LightDM==
Nous allons maintenant regarder la configuration de LightDM d'un peu plus près. Le fichier de configuration par défaut expose toutes les options possibles du dit fichier. Nous allons garder le strict minimum
===lightdm.conf===
Pour cela éditons le fichier /etc/lightd/lightdm.conf

&lt;pre&gt;
[LightDM]
 greeter-user=root
 user-authority-in-system-dir=false

 [SeatDefaults]
 xserver-allow-tcp=false
 greeter-hide-users=false
 user-session=lightdm-xsession
 session-wrapper=/etc/X11/Xsession
 session-setup-script=/etc/lightdm/session-setup-script.sh -a 3 -v 7

 [Seat:0]
 xserver-command=nohup X -br -dpms -s 0 -novtswitch -nocursor
 greeter-session=fake-greeter

 [Seat:1]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 1 -t 1680x1050 -P evdev -s /dev/input/by-id/usb-Logitech_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd -v bepo 
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 1
 greeter-session=lightdm-greeter

[Seat:2]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 2 -t 1920x1200 -P evdev -s /dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-path/platform-i8042-serio-0-event-kbd
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 2 -d 1680,0
 greeter-session=lightdm-greeter
&lt;/pre&gt;

Il y a plusieurs chose à savoir concernant le fonctionnement de LightDM afin de comprendre ce qui est fait.
* La section &quot;SeatDefault&quot; est commune à tous les sièges définis après
* Chaque &quot;Seat&quot; est exécuté dans l'ordre dans un VT différent et ce même si, dans notre cas, tout se passe dans le VT7 ([url=https://code.launchpad.net/~andrzejtp2010/lightdm/lightdm-trunk-xephyr-multiseat/+merge/120286]un patch[url] à été proposé pour palier à ce problème mais il n'a pas été accepté ... pour l'instant)
* Chaque propriété de tous les &quot;Seat&quot; est lancée dans un ordre précis, d'abord tous les &quot;xserver-command&quot;, puis tous les &quot;greeter-setup-script&quot;, enfin tous les &quot;greeter-session&quot;. Si vous mettez d'autres propriétés elle seront exécutées suivant leur ordre pré-établi.
* Si les &quot;greeter&quot; se terminent, lightDM coupe le &quot;xserver-command&quot; correspondant. De même si le &quot;xserver-command&quot; se termine le greeter est coupé.

Donc pour que tout se positionne correctement il faut
* D'abord lancer le serveur X qui servira de support, ce qui est fait en le mettant en tant que premier poste (&quot;Seat:0&quot;)
* Lancer les fenêtres Xephyr avec les optons qui vont bien, ce qui est fait avec le script &quot;Xephyr-command.sh&quot; et ses arguments
* Simuler un &quot;greeter&quot; pour le &quot;Seat :0&quot; afin que le serveur X ne soit pas tué par lightDM, ce qui est fait avec le script &quot;fake-greeter&quot;
* Exécuter un script qui va placer les fenêtre Xephyr si besoin et initialiser les variables d'environnement correctement, fait avec &quot;Xephyr-greeter-setup.sh&quot;
* Exécuter les &quot;greeter&quot; dans les fenêtre Xephyr
* (MAJ 02/2014) Il faut rechanger de VT lorsque l'utilisateur se logue car LightDM semble se repositionner sur le VT qui est sensé contenir le poste (VT 8,9, ...), donc le script session-setup-script.sh devient indispensable

===fake-greeter.desktop===
Pour le faux greeter du serveur X il faut créer un fichier dans &quot;/usr/share/xgreeters/fake-greeter.desktop&quot; et y copier son contenu :
&lt;pre&gt;
[Desktop Entry]
Name=LightDM fake greeter
Comment=This runs no greeter at all, it should only be run from LightDM
Exec=sleep infinity
Type=Application
X-Ubuntu-Gettext-Domain=lightdm
&lt;/pre&gt;

Après tout cela nous allons créer un script qui permettra de créer (&quot;Xephyr-command.sh&quot;) et un autre pour placer les fenêtre à l'écran (&quot;Xephyr-greeter-setup.sh&quot;).
Tout d'abord il est nécessaire d'installer le petit utilitaire &quot;wmctrl&quot; avec
 # aptitude install wmctrl
===Xephyr-command.sh===
Le contenu du fichier &quot;Xephyr-command.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -t, taille : Doit être de la forme 9999x9999, (dafaut = 1024x768)&quot;
  echo &quot;\t -s, sourie : /dev/input/[by-path|by-id]/...event-mouse&quot;
  echo &quot;\t -c, clavier : /dev/input/[by-path|by-id]/...event-kbd&quot;
  echo &quot;\t -l, layout : fr, es, en, ... (défaut = fr)&quot;
  echo &quot;\t -v, variant : fr, latin9, bepo, ... (défaut = &lt;vide&gt;)&quot;
  echo &quot;\t -P, Pilote : ephyr ou evdev (défaut = ephyr)&quot;
}

testExecutable() {
	XEPHYR=`whereis -b Xephyr | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
TAILLE=&quot;1024x768&quot;
SOURIE=
CLAVIER=
LAYOUT=&quot;fr&quot;
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
PILOTE=ephyr # Test = ephyr ; Prod = evdev

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XEPHYR&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;Xephyr : &quot;$XEPHYR
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:t:s:c:l:v:P:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		t|taille)
			TAILLE=&quot;$OPTARG&quot;
		;;

		s|sourie)
			SOURIE=$OPTARG
			if  ! [ -r $SOURIE ];then
				echo &quot;La sourie n'est pas accessible&quot;
				exit 3
			fi
		;;

		c|clavier)
			CLAVIER=$OPTARG
			if  ! [ -r $CLAVIER ];then
				echo &quot;Le clavier n'est pas accessible&quot;
				exit 4
			fi
		;;

		l|layout)
			LAYOUT=$OPTARG
		;;

		v|variant)
			VARIANT=$OPTARG
		;;

		P|Pilote)
			PILOTE=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variables d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Construction de la ligne d&quot;argument
OPTIONS=&quot;&quot;

if [ -n &quot;${TAILLE}&quot; ]; then
	OPTIONS=&quot; -screen ${TAILLE}&quot;
fi

if [ -n &quot;${CLAVIER}&quot; ]; then
	if [ -n &quot;${LAYOUT}&quot; ]; then
		OPTIONS=$OPTIONS&quot; -keybd $PILOTE,,device=${CLAVIER},xkbrules=evdev,xkbmodel=evdev,xkblayout=${LAYOUT}&quot;
		if [ -n &quot;${VARIANT}&quot; ]; then
			OPTIONS=$OPTIONS&quot;,xkbvariant=${VARIANT}&quot;
		fi
	fi
fi

if [ -n &quot;${SOURIE}&quot; ]; then
	OPTIONS=$OPTIONS&quot; -mouse $PILOTE,,device=${SOURIE}&quot;
fi

# Lancement de Xephyr en arrière plan
echo &quot;$XEPHYR -retro $OPTIONS :$POSTE&quot;
exec $XEPHYR -retro  $OPTIONS :$POSTE
&lt;/pre&gt;

Petite explication sur la dernière ligne. Le &quot;exec&quot; fait en sorte que ce soit le processus de Xephyr qui prend la place du script, donc il reprend le PID et tout ce qui va bien. Cela permet surtout que le signal USR1 que Xephyr lance au PPID, soit bien récupéré par LightDM et que ce dernier continue son fonctionnement normalement.

===Xephyr-greeter-setup.sh===
Le contenu du fichier &quot;Xephyr-greeter-setup.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p|--poste numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -d, --deplacement : de la forme 'x,y' (en pixel)&quot;
  echo &quot;\t -v, --vt : 7, 8, 9, 10, 11 (defaut = 7)&quot;
}

testExecutable() {
	XWININFO=`whereis -b xwininfo | cut -d' ' -f2`
	WMCTRL=`whereis -b wmctrl | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
DEPLACEMENT=
VT=7
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
ATTENTE=3 # temps en seconde avant de déclencher le &quot;chvt&quot; pour revenir sur le bon VT

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XWININFO&quot; -o -z &quot;$WMCTRL&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;xwininfo : &quot;$XWININFO
	echo &quot;wmctrl : &quot;$WMCTRL
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:d:v:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		d|deplacement)
			DEPLACEMENT=&quot;$OPTARG&quot;
		;;
	
		v|vt)
			VT=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Vieux Hack tout bancal pour revenir au bon VT sans patcher LightDM
(sleep $ATTENTE ; chvt $VT)&amp;

# Deplacement de la fenetre si besoin
if [ -n &quot;$DEPLACEMENT&quot; ]; then
	#On recherche l'ID de la fenêtre Xephyr
        XEP=`XAUTHORITY=/var/run/lightdm/root/:$XRACINE $XWININFO -root -children -all -display :$XRACINE | grep &quot;Xephyr on :$POSTE&quot; --max-count=1`;

	if [ -z &quot;$XEP&quot; ]; then
		echo &quot;fenêtre Xephyr non trouvé pour le poste $POSTE&quot;
		exit 5
	fi
    XEPHYR_WIN_ID=`echo ${XEP} | cut -d' ' -f1`;
    $WMCTRL 2&gt;&amp;1 -v -i -r ${XEPHYR_WIN_ID} -e 0,${DEPLACEMENT},-1,-1;
	if [ $? -ne 0 ]; then
		echo &quot;Erreur lors du déplacement de la fenêtre Xephyr pour le poste $POSTE&quot;
		exit 7
	fi
fi

# Mise en place des variables d'environnement pour le greeter (utile ?)
export DISPLAY=:$POSTE
export XAUTHORITY=/var/run/lightdm/root/:$POSTE
&lt;/pre&gt;
Petite explication concernant la ligne suivante
 (sleep $ATTENTE ; chvt $VT)&amp;
Comme je n'ai pas patché LightDM pour éviter le changement de VT et que Xephyr m'empêche de faire un Ctrl+Alt+7 (avec le driver evdev) pour revenir au bon VT, j'ai du mettre en place un automatisme. Certes c'est loin d'être parfait mais ça rempli correctement son office.

===session-setup-script.sh===
Script indispensable pour retourner sur le bon VT une fois l'utilisateur identifié.
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### VALEURS PAR DEFAUT #############
VT=7
ATTENTE=5 # temps en seconde avant de déclencher le &quot;chvt&quot; pour revenir sur le bon VT

while getopts &quot;:a:v:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		a|attente)
			ATTENTE=$OPTARG
		;;
		v|vt)
			VT=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' necessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

# Vieux Hack tout bancal pour revenir au bon VT sans patcher LightDM
(sleep $ATTENTE ; chvt $VT)&amp;
&lt;/pre&gt;
===etc/init.d/lightdm===

Il se peut que tout ne se passe pas comme prévue et que l'interface de connexion ne s'affiche pas, ni sur le VT affiché ni sur un autre. cependant en faisant un arrêt relance du serveur tout se passe bien.
Pour résoudre ce souci il suffit de modifier très légèrement le script d'init, il faut ajouter une contrainte ($all) sur la ligne suivante.
&lt;pre&gt;
# Required-Start:    $local_fs $remote_fs x11-common $all
&lt;/pre&gt;
Ensuite il faut faire un simple couple de commande :
&lt;/pre&gt;
# update-rc.d -f  lightdm remove
# update-rc.d lightdm defaults
&lt;/pre&gt;
Et la réorganisation devrait être pris en compte.

==Modification du système==
===Montage des périphériques USB===
On se rend assez vite compte que si l'on branche une clé USB elle n'apparait pas automatiquement sur le bureau et elle est encore moins &quot;montable&quot; par un utilisateur classique. Elle apparait bien dans la liste des périphériques accessibles (volet de gauche sur nautilus) mais il y a un problème de droit.
Un petit rappel de la chaine mise en jeu lorsque l'on branche une clé USB ou tout autre périphérique.
* Détection par le noyau de l'ajout d'un matériel
* Udev prend le relais et créé les périphériques block nécessaires dans /dev
* PolicyKit termine le travail en mettant en place les autorisations adéquates

Donc le blocage vient de ce dernier composant, il ne reconnaît pas une session Xephyr comme &quot;active&quot; et donc refuse le montage de ce type de périphérique par l'utilisateur lambda. Pour passer au delà de cette limitation on va redéfinir la règle de montage, pour cela il faut aller dans le répertoire suivant :
 /etc/polkit-1/localauthority/50-local.d
Et y créer un fichier, &quot;10-udisk.pkla&quot; par exemple
&lt;pre&gt;
[Allow mounting from Xephyr]
Identity=*
Action=org.freedesktop.udisks.change;org.freedesktop.udisks.drive-detach;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.filesystem-unmount-others
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

Voilà, avec Gnome3 dans le volet de gauche de Nautilus on peut cliquer sur l'icône de la clé USB pour qu'elle se monte correctement, idem avec LXDE.
Je recommande de désactiver l'automontage des périphériques USB afin que l'utilisateur qui branche la clé puisse la monter sans interférence.

===Gestion de l'énergie===
De la même manière que précédemment, par défaut il est impossible d'éteindre l'ordinateur depuis la session graphique (hors LightDM).
Donc pour cela on créé un nouveau fichier (20-upower.pkla) dans :
 /etc/polkit-1/localauthority/50-local.d

&lt;pre&gt;
[Suspend/hibernate permissions]
Identity=*
Action=org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

===Gestion du son===
Par défaut Pulseaudio est lancé lors de l'identification d'un utilisateur, du coup il est le seul qui puisse utiliser la carte son. Pour pallier à ce problème il faut rendre pulseaudio démon du système.
Pour cela il faut modifier plusieurs fichiers de configuration :
* /etc/default/pulseaudio
&lt;pre&gt;PULSEAUDIO_SYSTEM_START=1&lt;/pre&gt;

* /etc/pulse/daemon.conf
&lt;pre&gt;daemonize = yes
local-server-type = system&lt;/pre&gt;

* /etc/pulse/client.conf
&lt;pre&gt;autospawn = no&lt;/pre&gt;

* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot;
 usermod -aG pulse-access &lt;username&gt;

* On peut enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse

([http://askubuntu.com/questions/192522/how-do-i-configure-sound-with-pulseaudio-and-multiseat source] [http://disjunkt.com/jd/2010/en/multiseat-linux/multiseat-linux-system-wide-pulseaudio-for-routing-sounds-109/ source2])

====Modification des DE (Gnome, KDE, LXDE, ...)====
Par défaut les environnements graphique exécutent Pulseaudio en espace utilisateur, ce qu'il ne faut plus faire puisqu'il est partagé, ce qui ne devrait plus être possible si vous avez enlevé les utilisateurs des groupes. Donc il est nécessaire de désactiver cela avec l'outil de votre environnement de Bureau. Par exemple pour LXDE il s'agit de lxsession, si vous avez des problème pour cet environnement [http://wiki.lxde.org/en/Autostart cette page (et ses liens)] devrait vous aider

===Aller plus loin===
* Si l'on veut restreindre ce droit par utilisateur ou par groupe on modifie la ligne &quot;Identity&quot; comme il suit
 Identity=unix-user:toto;unix-group:plugdev
* Pour creuser un peu plus la configuration de ce système on peux aller voir [http://www.freedesktop.org/software/polkit/docs/0.105/pklocalauthority.8.html cette page] sur PolicyKit
* Il serait aussi intéressant de définir des ports USB réservés pour chaque siège, mais je ne sais pas encore comment gérer cela.
* Voir s'il est possible de dédier les voies arrière à un poste et les voies avant à un autre ...

==Conclusion==
Et voilà, tout est prêt pour le redémarrage et admirer les mires de login sur leur écran respectif.

===Avantages===
* Avec du matériel de récupération on peut facilement mettre en place cette solution peu coûteuse
* La satisfaction d'avoir un poste de travail exotique
* Permettre à une tierce personne de profiter de la puissance monstre des machines récentes sans se priver de notre fauteuil favori
* Se sentir moins seul avec une/plusieurs personnes à coté de soi :-p

===Inconvénients===
* Accélération graphique fortement diminuée
* Si on débranche les claviers/souries Xephyr ne sait pas les reconnaître automatiquement au branchement. Il faut relancer Xephyr en se déconnectant ou relancer LightDM
* Un &quot;saut&quot; des 2 écrans lors de la déconnexion d'un poste, mais cela est dû à LightDM et son changment de VT intempestif.
* Surveillance de chaque mise à jour de Xorg pour ne pas avoir de surprise au redémarrage
* Recompilation nécessaire en cas de mise à jour majeure de Xorg
* Gestion des montages USB non optimale
* Les voyants du clavier (pavé numérique, Majuscule et arrêt défil) ne réagissent plus, mais le clavier réagit correctement.
* Dans l'espace de travail de certains logiciel (VLC, Gimp) la souris peut avoir un affichage lacunaire. Par exemple sous GIMP elle n'est visible que lorsqu'on la déplace, avec VLS il y a un carré noir autour d'elle quand on la déplace le reste du temps elle disparait.

===Remerciement===
Un grand merci à ce site pour m'avoir prémaché le travail ... ce qui ne m'as pas empêché d'apporter quelques améliorations à sa solution.
http://beforeafterx.blogspot.fr/2012/08/configuration-of-ligthdm-12.html</text>
      <sha1>klypza7ktfmvmd8if55r58dckx2xelr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5888</id>
      <parentid>5629</parentid>
      <timestamp>2014-10-19T21:00:41Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <comment>Réorganisation du thème</comment>
      <text xml:space="preserve" bytes="400">{{homonymie}}

Suivant l'équipement de votre machine vous avez le choix entre :
* [[Multiposte avec une carte graphique|Multiposte avec une seule carte graphique]]. Exploitation des différentes sorties disponibles (mis à jour nécessaire car exploite sysinit)
* [[Multiposte avec plusieurs cartes graphique|Multiposte avec plusieurs cartes graphique]]. Création d'un serveur X par carte graphique</text>
      <sha1>dykank3nbjh4a4a88ycv0mxqwk0s0n9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5889</id>
      <parentid>5888</parentid>
      <timestamp>2014-10-19T21:01:31Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <text xml:space="preserve" bytes="402">{{homonymie}}

Suivant l'équipement de votre machine vous avez le choix entre :
* [[Multiposte avec une carte graphique|Multiposte avec une seule carte graphique]]. Exploitation des différentes sorties disponibles (mis à jour nécessaire car exploite sysinit)
* [[Multiposte avec plusieurs cartes graphiques|Multiposte avec plusieurs cartes graphiques]]. Création d'un serveur X par carte graphique</text>
      <sha1>oz0r81bjjcmc1nw1yk3di6ql97ubji4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Multiposte avec plusieurs cartes graphiques</title>
    <ns>0</ns>
    <id>1362</id>
    <revision>
      <id>5887</id>
      <timestamp>2014-10-19T21:00:20Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <comment>Début de création de page pour la configuration d'un système multiposte avec 2 cartes graphiques</comment>
      <text xml:space="preserve" bytes="1665">== Configuration de Pulseaudio ==
=== Configuration des droits ===
Normalement vous devez déjà avoir les groupes &quot;pulse&quot; et &quot;pulse-access&quot; de créé sur votre machine.
* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot; 
usermod -aG pulse-access &lt;username&gt;
* On peut enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio 
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse
=== Création du daemon système PulseAudio avec systemd ===
Bien que ce soit déconseillé de faire tourné pulseaudio en tant que daemon système, c'est le seul moyen pour que les 2 postes aient accès à la carte son en même temps.
Pour cela il faut légèrement modifier la configuration de pulseaudio.
Dans /etc/pulse il faut modifier 2 fichiers
daemon.conf
&lt;pre&gt;
...
daemonize = yes
...
local-server-type = system
...
&lt;/pre&gt;

client.conf
&lt;pre&gt;
...
autospawn = no
...
&lt;/pre&gt;

Enfin il faut créer le fichier /etc/systemd/system/pulseaudio.service
&lt;pre&gt;
[Unit]
Description=Pulseaudio sound server
Documentation=man:pulseaudio(1)
After=avahi-daemon.service network.target
Before=sound.target
Requires=dbus.socket
 
[Service]
Type=forking
BusName=org.pulseaudio.Server
ExecStart=/usr/bin/pulseaudio --system --disallow-exit --disallow-module-loading
ExecStop=/usr/bin/pulseaudio --kill
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
 
[Install]
WantedBy=multi-user.target
&lt;/pre&gt;

Et lancer la commandes suivante pour qu'il soit exécuter au démarrage :
 systemctl enable pulseaudio.service

Si vous voulez tester tout de suite le service il vous suffit de faire
 systemctl start pulseaudio.service</text>
      <sha1>ak5bu3l5vxiysb870vee271h2tn3w3x</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5891</id>
      <parentid>5887</parentid>
      <timestamp>2014-10-20T22:29:49Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <text xml:space="preserve" bytes="2663">== Configuration de Pulseaudio ==
=== Configuration des droits ===
Normalement vous devez déjà avoir les groupes &quot;pulse&quot; et &quot;pulse-access&quot; de créé sur votre machine.
* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot; 
usermod -aG pulse-access &lt;username&gt;
* On peut enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio 
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse
=== Création du daemon système PulseAudio avec systemd ===
Bien que ce soit déconseillé de faire tourné pulseaudio en tant que daemon système, c'est le seul moyen pour que les 2 postes aient accès à la carte son en même temps.
Pour cela il faut légèrement modifier la configuration de pulseaudio.
Dans /etc/pulse il faut modifier 2 fichiers
daemon.conf
&lt;pre&gt;
...
daemonize = yes
...
local-server-type = system
...
&lt;/pre&gt;

client.conf
&lt;pre&gt;
...
autospawn = no
...
&lt;/pre&gt;

Enfin il faut créer le fichier /etc/systemd/system/pulseaudio.service
&lt;pre&gt;
[Unit]
Description=Pulseaudio sound server
Documentation=man:pulseaudio(1)
After=avahi-daemon.service network.target
Before=sound.target
Requires=dbus.socket
 
[Service]
Type=forking
BusName=org.pulseaudio.Server
ExecStart=/usr/bin/pulseaudio --system --disallow-exit --disallow-module-loading
ExecStop=/usr/bin/pulseaudio --kill
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
 
[Install]
WantedBy=multi-user.target
&lt;/pre&gt;

Et lancer la commandes suivante pour qu'il soit exécuter au démarrage :
 systemctl enable pulseaudio.service

Si vous voulez tester tout de suite le service il vous suffit de faire
 systemctl start pulseaudio.service

== Configuration systemd ==

Il existe un soucis qui fait que seul le premier poste (seat0) est détecté par «systemd-logind» et du coup ça empêche certaines fonctionnalités de s'exécuter correctement. Par exemple le montage automatique des clée USB en cliquant sur l'icône qui apparait. Pour vérifier cela il faut vous connecter a 2 poste minimum et lancer la commande suivante :
 loginctl

Si vous voyez tous vous utilisateurs connecté sur leur siège tant mieux pour vous. Sinon il faut faire les commandes suivantes :


Un autre problème est qu'il se peut que certains programes ne se ferment pas correctement quand vous quittez votre session. Pour cela sur un autre poste que celui qui vient de se déconnecté il vous suffit de taper la commande suivante pour trouver les coupables : 
 loginctl session-status &lt;numéro de session visé&gt;

Dans mon cas il s'agissait de «gpg-agent» et de «gnome-keyring-daemon», comme je ne les utilisaient pas je les ai simplement supprimés.</text>
      <sha1>cqw9pkw8bhremirmo9hs3h768uioygs</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5892</id>
      <parentid>5891</parentid>
      <timestamp>2014-10-21T21:59:35Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <comment>Ajout le la configuration de X</comment>
      <text xml:space="preserve" bytes="12094">== Configuration de X ==
Par défaut le fichier de X («xorg.conf») n'est plus indispensable pour un poste de travail classique. Mais dans notre cas il est indispensable pour s'y retrouver. Vous avez le choix entre créé plusieurs fichiers de configuration distinct, un par poste. Ou en faire un unique qui comportera l'ensemble des configurations qui seront classé dans des «Layout» différent. Personnellement je vous conseille 1 seul fichier de conf pour 2 poste, mais au delà ça commence a devenir illisible donc de faire un fichier par poste.
Pour notre exemple nous allons configurer 2 poste dans un seul fichier de configuration.
Dans un premier temps nous allons définir les «Layout» que nous allons utilisés. Il regroupe l'ensemble de la configuration des poste, le «screen» (écran + carte graphique) et les périphérique d'entré (clavier / sourie).
&lt;pre&gt;
Section &quot;ServerLayout&quot;
  #L'identifiant qui nous permettra de dire à X d'utiliser cette configuration
    Identifier     &quot;poste0&quot;
  #Le premier «0» désigne l'écran, comme vous pouvez avoir plusieurs écran par carte/poste vous pouvez avoir des lignes supplémentaire avec un 1, 2 et ainsi de suite. «ecran0» désigne une section que l'on verra plus tard. Enfin les 2 autres «0» positionne l'écran suivant des coordonnée si plusieurs écran sont en jeux. 
    Screen      0  &quot;ecran0&quot; 0 0 
  #Désigne la section pour un périphérique d'entré, ici un clavier
    InputDevice    &quot;clavier0&quot; &quot;CoreKeyboard&quot; 
  #Désigne la section pour un périphérique d'entré, ici une sourie
    InputDevice    &quot;sourie0&quot; &quot;CorePointer&quot; 
EndSection


Section &quot;ServerLayout&quot;
    Identifier     &quot;poste1&quot;
    Screen      0  &quot;ecran1&quot; 0 0
    InputDevice    &quot;clavier1&quot; &quot;CoreKeyboard&quot;
    InputDevice    &quot;sourie1&quot; &quot;CorePointer&quot;
EndSection
&lt;/pre&gt;

Ensuite nous définissons les périphérique d'entrés (ici juste pour le poste 0). Pour identifier les périphériques matériel et leur point d'entré logiciel il vous suffit d'aller faire un tour dans «/dev/input/*», de faire un «cat» sur un des fichier présent et de généré des évènement clavier/sourie. Si votre «cat» vous sort quelque chose alors vous avez identifié le périphérique correspondant.
&lt;pre&gt;
####################################
# Peripherique d'entree du poste 0 #
####################################
#Clavier du poste 0
Section &quot;InputDevice&quot;
  #Identiant permettant au Layout de l'appeler
    Identifier    &quot;clavier0&quot; 
    Driver    &quot;evdev&quot;
  #Clavier branché sur un port PS/2, donc l'accès par «by-path» est toléré, mais il vaut mieux «by-id»
    Option    &quot;Device&quot;     &quot;/dev/input/by-path/platform-i8042-serio-0-event-kbd&quot; 
    Option    &quot;XkbLayout&quot;  &quot;fr&quot;
    Option    &quot;XkbVariant&quot; &quot;latin9&quot;
  #IMPORTANT, permet un accès exclusif au périphérique. Sans ça les serveurs X ajouteront automatiquement tous les périphérique disponible aux controle, et du coup toutes les sourie/clavier contrôleront tous les pointeurs.
    Option    &quot;GrabDevice&quot; &quot;on&quot; 
EndSection

#Sourie du poste 0
Section    &quot;InputDevice&quot;
    Identifier    &quot;sourie0&quot;
    Driver &quot;evdev&quot;
  #Sourie branché en USB et comme à chaque redémarrage le chemin peut se modifier (ou pas) il faut préféré l'identification par «by-id»
    Option &quot;Device&quot; &quot;/dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse&quot; 
    Option &quot;GrabDevice&quot; &quot;on&quot;
EndSection
&lt;/pre&gt;

Ensuite on définit la section «screen» qui est une agrégation d'une carte graphique et d'un écran.
&lt;pre&gt;
#######################################
# Carte graphique et ecran du poste 0 #
#######################################

Section &quot;Device&quot;
    Identifier     &quot;carteVideo0&quot;
    Driver         &quot;radeon&quot;
    VendorName     &quot;AMD/ATI&quot;
    BoardName      &quot;Radeon HD 6550D&quot;
  #Trouvable en faisant un «lspci», pour ici «00:01.0 VGA compatible controller» se trouvait dans la sortie de la commande.
    BusID          &quot;PCI:0:1:0&quot;
  #Définition du premier (et seul) écran
    Screen          0
  #Avec un «xrandr» vous pouvez savoir quel prise est utilisé pour connecter l'écran (DVI, HDMI, DP, VGA). Le «Monitor-» est une nécéssité de nommage et le «-0» représente la carte graphique utilisé, la première (donc «0») dans ce cas, mais pour le deuxième poste on pourra trouver «Monitor-DVI-1»
        Option         &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
EndSection

Section &quot;Monitor&quot;
    Identifier     &quot;LCD28&quot;
    VendorName     &quot;Hanns.G&quot;
    ModelName      &quot;HSD Hanns.G HG281&quot;
    Option         &quot;PreferredMode&quot; &quot;1920x1200&quot;
EndSection

# Section qui relie les 2 composants ensemble.
Section &quot;Screen&quot;
    Identifier     &quot;ecran0&quot;
    Device         &quot;carteVideo0&quot;
    Monitor        &quot;LCD28&quot;
    DefaultDepth    24
    Option         &quot;TwinView&quot; &quot;0&quot;
    Option         &quot;metamodes&quot; &quot;DFP: 1920x1200 +0+0&quot;
    SubSection     &quot;Display&quot;
        Depth       24
        Modes      &quot;1920x1200_60&quot;
    EndSubSection
EndSection
&lt;/pre&gt;

Donc au final on obtient un ficher tel que celui çi :
&lt;pre&gt;
#Configuration multi-poste

#############
# Serveur X #
#############

Section &quot;ServerLayout&quot;
    Identifier     &quot;poste0&quot;
    Screen      0  &quot;ecran0&quot; 0 0
    InputDevice    &quot;clavier0&quot; &quot;CoreKeyboard&quot;
    InputDevice    &quot;sourie0&quot; &quot;CorePointer&quot;
EndSection


Section &quot;ServerLayout&quot;
    Identifier     &quot;poste1&quot;
    Screen      0  &quot;ecran1&quot; 0 0
    InputDevice    &quot;clavier1&quot; &quot;CoreKeyboard&quot;
    InputDevice    &quot;sourie1&quot; &quot;CorePointer&quot;
EndSection

#Section &quot;Files&quot;
#    RgbPath         &quot;/usr/X11R6/lib/X11/rgb&quot;
#EndSection

Section &quot;Module&quot;
    Load        &quot;dbe&quot;
    Load        &quot;extmod&quot;
    Load        &quot;type1&quot;
    Load        &quot;freetype&quot;
    Load        &quot;glx&quot;
EndSection

Section &quot;ServerFlags&quot;
    Option      &quot;Xinerama&quot;          &quot;0&quot;
#    Option      &quot;AutoEnableDevices&quot; &quot;false&quot;
#    Option      &quot;AutoAddDevices&quot;    &quot;false&quot;
#    Option      &quot;AllowEmptyInput&quot;   &quot;true&quot;
#    Option      &quot;AutoAddGPU&quot;        &quot;false&quot;
EndSection

####################################
# Peripherique d'entree du poste 0 #
####################################
#Clavier du poste 0
Section &quot;InputDevice&quot;
    Identifier    &quot;clavier0&quot;
    Driver    &quot;evdev&quot;
    Option    &quot;Device&quot;     &quot;/dev/input/by-path/platform-i8042-serio-0-event-kbd&quot;
    Option    &quot;XkbLayout&quot;  &quot;fr&quot;
    Option    &quot;XkbVariant&quot; &quot;latin9&quot;
    Option    &quot;GrabDevice&quot; &quot;on&quot;
EndSection

#Sourie du poste 0
Section    &quot;InputDevice&quot;
    Identifier    &quot;sourie0&quot;
    Driver &quot;evdev&quot;
#    Option &quot;ZAxisMapping&quot; &quot;4 5&quot;
    Option &quot;Device&quot; &quot;/dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse&quot;
    Option &quot;GrabDevice&quot; &quot;on&quot;
EndSection

####################################
# Peripherique d'entree du poste 1 #
####################################
#Clavier du poste 1
Section &quot;InputDevice&quot;
    Identifier    &quot;clavier1&quot;
    Driver    &quot;evdev&quot;
    Option    &quot;Device&quot;     &quot;/dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd&quot;
    Option    &quot;XkbLayout&quot;  &quot;fr&quot;
    Option    &quot;XkbVariant&quot; &quot;bepo&quot;
    Option    &quot;GrabDevice&quot; &quot;on&quot;
EndSection

#Sourie du poste 1
Section &quot;InputDevice&quot;
    Identifier    &quot;sourie1&quot;
    Driver    &quot;evdev&quot;
#    Option    &quot;ZAxisMapping&quot; &quot;4 5&quot;
    Option    &quot;Device&quot; &quot;/dev/input/by-id/usb-1d57_Game_mouse-if01-event-mouse&quot;
    Option    &quot;GrabDevice&quot; &quot;on&quot;
EndSection

#######################################
# Carte graphique et ecran du poste 0 #
#######################################

Section &quot;Device&quot;
    Identifier     &quot;carteVideo0&quot;
    Driver         &quot;radeon&quot;
    VendorName     &quot;AMD/ATI&quot;
    BoardName      &quot;Radeon HD 6550D&quot;
    BusID          &quot;PCI:0:1:0&quot;
    Screen          0
    Option         &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
EndSection

Section &quot;Monitor&quot;
    Identifier     &quot;LCD28&quot;
    VendorName     &quot;Hanns.G&quot;
    ModelName      &quot;HSD Hanns.G HG281&quot;
    Option         &quot;PreferredMode&quot; &quot;1920x1200&quot;
EndSection

Section &quot;Screen&quot;
    Identifier     &quot;ecran0&quot;
    Device         &quot;carteVideo0&quot;
    Monitor        &quot;LCD28&quot;
    DefaultDepth    24
    Option         &quot;TwinView&quot; &quot;0&quot;
    Option         &quot;metamodes&quot; &quot;DFP: 1920x1200 +0+0&quot;
    SubSection     &quot;Display&quot;
        Depth       24
        Modes      &quot;1920x1200_60&quot;
    EndSubSection
EndSection

#######################################
# Carte graphique et ecran du poste 1 #
#######################################

Section &quot;Device&quot;
    Identifier     &quot;carteVideo1&quot;
    Driver         &quot;radeon&quot;
    VendorName     &quot;AMD/ATI&quot;
    BoardName      &quot;Radeon HD 6450/7450/8450 / R5 230 OEM&quot;
    BusID          &quot;PCI:1:0:0&quot;
    Screen         0 
    Option         &quot;Monitor-DVI-1&quot; &quot;Acer&quot;
EndSection

Section &quot;Monitor&quot;
    Identifier     &quot;LCD22&quot;
    VendorName     &quot;ACER&quot;
    ModelName      &quot;ACER B229w&quot;
    Option         &quot;PreferredMode&quot; &quot;1680x1050&quot;
EndSection

Section &quot;Screen&quot;
    Identifier     &quot;ecran1&quot;
    Device         &quot;carteVideo1&quot;
    Monitor        &quot;LCD22&quot;
    DefaultDepth    24
    Option         &quot;TwinView&quot; &quot;0&quot;
    Option         &quot;metamodes&quot; &quot;DFP: 1680x1050 +0+0&quot;
    SubSection     &quot;Display&quot;
        Depth       24
        Modes      &quot;1680x1050_60&quot;
    EndSubSection
EndSection
&lt;/pre&gt;

=== Test de la configuration ===
Pour cela il vous suffit de vous mettre dans une console et de taper la commande suivante :
 X -layout &lt;mon layout&gt; -vt''X''

Ou le ''X'' doit être remplacer par un numéro de console libre, 8, 9, 10, 11 ou 12 en générale.
Vous devriez changer de console pour celle visé et voir un écran gris avec le curseur manipulable. Si c'est bien le cas c'est que votre configuration est bonne.

== Configuration de Pulseaudio ==
=== Configuration des droits ===
Normalement vous devez déjà avoir les groupes &quot;pulse&quot; et &quot;pulse-access&quot; de créé sur votre machine.
* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot; 
usermod -aG pulse-access &lt;username&gt;
* On peut enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio 
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse
=== Création du daemon système PulseAudio avec systemd ===
Bien que ce soit déconseillé de faire tourné pulseaudio en tant que daemon système, c'est le seul moyen pour que les 2 postes aient accès à la carte son en même temps.
Pour cela il faut légèrement modifier la configuration de pulseaudio.
Dans /etc/pulse il faut modifier 2 fichiers
daemon.conf
&lt;pre&gt;
...
daemonize = yes
...
local-server-type = system
...
&lt;/pre&gt;

client.conf
&lt;pre&gt;
...
autospawn = no
...
&lt;/pre&gt;

Enfin il faut créer le fichier /etc/systemd/system/pulseaudio.service
&lt;pre&gt;
[Unit]
Description=Pulseaudio sound server
Documentation=man:pulseaudio(1)
After=avahi-daemon.service network.target
Before=sound.target
Requires=dbus.socket
 
[Service]
Type=forking
BusName=org.pulseaudio.Server
ExecStart=/usr/bin/pulseaudio --system --disallow-exit --disallow-module-loading
ExecStop=/usr/bin/pulseaudio --kill
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
 
[Install]
WantedBy=multi-user.target
&lt;/pre&gt;

Et lancer la commandes suivante pour qu'il soit exécuter au démarrage :
 systemctl enable pulseaudio.service

Si vous voulez tester tout de suite le service il vous suffit de faire
 systemctl start pulseaudio.service

== Configuration systemd ==

Il existe un soucis qui fait que seul le premier poste (seat0) est détecté par «systemd-logind» et du coup ça empêche certaines fonctionnalités de s'exécuter correctement. Par exemple le montage automatique des clée USB en cliquant sur l'icône qui apparait. Pour vérifier cela il faut vous connecter a 2 poste minimum et lancer la commande suivante :
 loginctl

Si vous voyez tous vous utilisateurs connecté sur leur siège tant mieux pour vous. Sinon il faut faire les commandes suivantes :


Un autre problème est qu'il se peut que certains programes ne se ferment pas correctement quand vous quittez votre session. Pour cela sur un autre poste que celui qui vient de se déconnecté il vous suffit de taper la commande suivante pour trouver les coupables : 
 loginctl session-status &lt;numéro de session visé&gt;

Dans mon cas il s'agissait de «gpg-agent» et de «gnome-keyring-daemon», comme je ne les utilisaient pas je les ai simplement supprimés.</text>
      <sha1>4kdi6r4151i65ldc03u34lr2dyozsre</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5895</id>
      <parentid>5892</parentid>
      <timestamp>2014-10-31T22:58:47Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <comment>/* Configuration systemd */</comment>
      <text xml:space="preserve" bytes="13361">== Configuration de X ==
Par défaut le fichier de X («xorg.conf») n'est plus indispensable pour un poste de travail classique. Mais dans notre cas il est indispensable pour s'y retrouver. Vous avez le choix entre créé plusieurs fichiers de configuration distinct, un par poste. Ou en faire un unique qui comportera l'ensemble des configurations qui seront classé dans des «Layout» différent. Personnellement je vous conseille 1 seul fichier de conf pour 2 poste, mais au delà ça commence a devenir illisible donc de faire un fichier par poste.
Pour notre exemple nous allons configurer 2 poste dans un seul fichier de configuration.
Dans un premier temps nous allons définir les «Layout» que nous allons utilisés. Il regroupe l'ensemble de la configuration des poste, le «screen» (écran + carte graphique) et les périphérique d'entré (clavier / sourie).
&lt;pre&gt;
Section &quot;ServerLayout&quot;
  #L'identifiant qui nous permettra de dire à X d'utiliser cette configuration
    Identifier     &quot;poste0&quot;
  #Le premier «0» désigne l'écran, comme vous pouvez avoir plusieurs écran par carte/poste vous pouvez avoir des lignes supplémentaire avec un 1, 2 et ainsi de suite. «ecran0» désigne une section que l'on verra plus tard. Enfin les 2 autres «0» positionne l'écran suivant des coordonnée si plusieurs écran sont en jeux. 
    Screen      0  &quot;ecran0&quot; 0 0 
  #Désigne la section pour un périphérique d'entré, ici un clavier
    InputDevice    &quot;clavier0&quot; &quot;CoreKeyboard&quot; 
  #Désigne la section pour un périphérique d'entré, ici une sourie
    InputDevice    &quot;sourie0&quot; &quot;CorePointer&quot; 
EndSection


Section &quot;ServerLayout&quot;
    Identifier     &quot;poste1&quot;
    Screen      0  &quot;ecran1&quot; 0 0
    InputDevice    &quot;clavier1&quot; &quot;CoreKeyboard&quot;
    InputDevice    &quot;sourie1&quot; &quot;CorePointer&quot;
EndSection
&lt;/pre&gt;

Ensuite nous définissons les périphérique d'entrés (ici juste pour le poste 0). Pour identifier les périphériques matériel et leur point d'entré logiciel il vous suffit d'aller faire un tour dans «/dev/input/*», de faire un «cat» sur un des fichier présent et de généré des évènement clavier/sourie. Si votre «cat» vous sort quelque chose alors vous avez identifié le périphérique correspondant.
&lt;pre&gt;
####################################
# Peripherique d'entree du poste 0 #
####################################
#Clavier du poste 0
Section &quot;InputDevice&quot;
  #Identiant permettant au Layout de l'appeler
    Identifier    &quot;clavier0&quot; 
    Driver    &quot;evdev&quot;
  #Clavier branché sur un port PS/2, donc l'accès par «by-path» est toléré, mais il vaut mieux «by-id»
    Option    &quot;Device&quot;     &quot;/dev/input/by-path/platform-i8042-serio-0-event-kbd&quot; 
    Option    &quot;XkbLayout&quot;  &quot;fr&quot;
    Option    &quot;XkbVariant&quot; &quot;latin9&quot;
  #IMPORTANT, permet un accès exclusif au périphérique. Sans ça les serveurs X ajouteront automatiquement tous les périphérique disponible aux controle, et du coup toutes les sourie/clavier contrôleront tous les pointeurs.
    Option    &quot;GrabDevice&quot; &quot;on&quot; 
EndSection

#Sourie du poste 0
Section    &quot;InputDevice&quot;
    Identifier    &quot;sourie0&quot;
    Driver &quot;evdev&quot;
  #Sourie branché en USB et comme à chaque redémarrage le chemin peut se modifier (ou pas) il faut préféré l'identification par «by-id»
    Option &quot;Device&quot; &quot;/dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse&quot; 
    Option &quot;GrabDevice&quot; &quot;on&quot;
EndSection
&lt;/pre&gt;

Ensuite on définit la section «screen» qui est une agrégation d'une carte graphique et d'un écran.
&lt;pre&gt;
#######################################
# Carte graphique et ecran du poste 0 #
#######################################

Section &quot;Device&quot;
    Identifier     &quot;carteVideo0&quot;
    Driver         &quot;radeon&quot;
    VendorName     &quot;AMD/ATI&quot;
    BoardName      &quot;Radeon HD 6550D&quot;
  #Trouvable en faisant un «lspci», pour ici «00:01.0 VGA compatible controller» se trouvait dans la sortie de la commande.
    BusID          &quot;PCI:0:1:0&quot;
  #Définition du premier (et seul) écran
    Screen          0
  #Avec un «xrandr» vous pouvez savoir quel prise est utilisé pour connecter l'écran (DVI, HDMI, DP, VGA). Le «Monitor-» est une nécéssité de nommage et le «-0» représente la carte graphique utilisé, la première (donc «0») dans ce cas, mais pour le deuxième poste on pourra trouver «Monitor-DVI-1»
        Option         &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
EndSection

Section &quot;Monitor&quot;
    Identifier     &quot;LCD28&quot;
    VendorName     &quot;Hanns.G&quot;
    ModelName      &quot;HSD Hanns.G HG281&quot;
    Option         &quot;PreferredMode&quot; &quot;1920x1200&quot;
EndSection

# Section qui relie les 2 composants ensemble.
Section &quot;Screen&quot;
    Identifier     &quot;ecran0&quot;
    Device         &quot;carteVideo0&quot;
    Monitor        &quot;LCD28&quot;
    DefaultDepth    24
    Option         &quot;TwinView&quot; &quot;0&quot;
    Option         &quot;metamodes&quot; &quot;DFP: 1920x1200 +0+0&quot;
    SubSection     &quot;Display&quot;
        Depth       24
        Modes      &quot;1920x1200_60&quot;
    EndSubSection
EndSection
&lt;/pre&gt;

Donc au final on obtient un ficher tel que celui çi :
&lt;pre&gt;
#Configuration multi-poste

#############
# Serveur X #
#############

Section &quot;ServerLayout&quot;
    Identifier     &quot;poste0&quot;
    Screen      0  &quot;ecran0&quot; 0 0
    InputDevice    &quot;clavier0&quot; &quot;CoreKeyboard&quot;
    InputDevice    &quot;sourie0&quot; &quot;CorePointer&quot;
EndSection


Section &quot;ServerLayout&quot;
    Identifier     &quot;poste1&quot;
    Screen      0  &quot;ecran1&quot; 0 0
    InputDevice    &quot;clavier1&quot; &quot;CoreKeyboard&quot;
    InputDevice    &quot;sourie1&quot; &quot;CorePointer&quot;
EndSection

#Section &quot;Files&quot;
#    RgbPath         &quot;/usr/X11R6/lib/X11/rgb&quot;
#EndSection

Section &quot;Module&quot;
    Load        &quot;dbe&quot;
    Load        &quot;extmod&quot;
    Load        &quot;type1&quot;
    Load        &quot;freetype&quot;
    Load        &quot;glx&quot;
EndSection

Section &quot;ServerFlags&quot;
    Option      &quot;Xinerama&quot;          &quot;0&quot;
#    Option      &quot;AutoEnableDevices&quot; &quot;false&quot;
#    Option      &quot;AutoAddDevices&quot;    &quot;false&quot;
#    Option      &quot;AllowEmptyInput&quot;   &quot;true&quot;
#    Option      &quot;AutoAddGPU&quot;        &quot;false&quot;
EndSection

####################################
# Peripherique d'entree du poste 0 #
####################################
#Clavier du poste 0
Section &quot;InputDevice&quot;
    Identifier    &quot;clavier0&quot;
    Driver    &quot;evdev&quot;
    Option    &quot;Device&quot;     &quot;/dev/input/by-path/platform-i8042-serio-0-event-kbd&quot;
    Option    &quot;XkbLayout&quot;  &quot;fr&quot;
    Option    &quot;XkbVariant&quot; &quot;latin9&quot;
    Option    &quot;GrabDevice&quot; &quot;on&quot;
EndSection

#Sourie du poste 0
Section    &quot;InputDevice&quot;
    Identifier    &quot;sourie0&quot;
    Driver &quot;evdev&quot;
#    Option &quot;ZAxisMapping&quot; &quot;4 5&quot;
    Option &quot;Device&quot; &quot;/dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse&quot;
    Option &quot;GrabDevice&quot; &quot;on&quot;
EndSection

####################################
# Peripherique d'entree du poste 1 #
####################################
#Clavier du poste 1
Section &quot;InputDevice&quot;
    Identifier    &quot;clavier1&quot;
    Driver    &quot;evdev&quot;
    Option    &quot;Device&quot;     &quot;/dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd&quot;
    Option    &quot;XkbLayout&quot;  &quot;fr&quot;
    Option    &quot;XkbVariant&quot; &quot;bepo&quot;
    Option    &quot;GrabDevice&quot; &quot;on&quot;
EndSection

#Sourie du poste 1
Section &quot;InputDevice&quot;
    Identifier    &quot;sourie1&quot;
    Driver    &quot;evdev&quot;
#    Option    &quot;ZAxisMapping&quot; &quot;4 5&quot;
    Option    &quot;Device&quot; &quot;/dev/input/by-id/usb-1d57_Game_mouse-if01-event-mouse&quot;
    Option    &quot;GrabDevice&quot; &quot;on&quot;
EndSection

#######################################
# Carte graphique et ecran du poste 0 #
#######################################

Section &quot;Device&quot;
    Identifier     &quot;carteVideo0&quot;
    Driver         &quot;radeon&quot;
    VendorName     &quot;AMD/ATI&quot;
    BoardName      &quot;Radeon HD 6550D&quot;
    BusID          &quot;PCI:0:1:0&quot;
    Screen          0
    Option         &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
EndSection

Section &quot;Monitor&quot;
    Identifier     &quot;LCD28&quot;
    VendorName     &quot;Hanns.G&quot;
    ModelName      &quot;HSD Hanns.G HG281&quot;
    Option         &quot;PreferredMode&quot; &quot;1920x1200&quot;
EndSection

Section &quot;Screen&quot;
    Identifier     &quot;ecran0&quot;
    Device         &quot;carteVideo0&quot;
    Monitor        &quot;LCD28&quot;
    DefaultDepth    24
    Option         &quot;TwinView&quot; &quot;0&quot;
    Option         &quot;metamodes&quot; &quot;DFP: 1920x1200 +0+0&quot;
    SubSection     &quot;Display&quot;
        Depth       24
        Modes      &quot;1920x1200_60&quot;
    EndSubSection
EndSection

#######################################
# Carte graphique et ecran du poste 1 #
#######################################

Section &quot;Device&quot;
    Identifier     &quot;carteVideo1&quot;
    Driver         &quot;radeon&quot;
    VendorName     &quot;AMD/ATI&quot;
    BoardName      &quot;Radeon HD 6450/7450/8450 / R5 230 OEM&quot;
    BusID          &quot;PCI:1:0:0&quot;
    Screen         0 
    Option         &quot;Monitor-DVI-1&quot; &quot;Acer&quot;
EndSection

Section &quot;Monitor&quot;
    Identifier     &quot;LCD22&quot;
    VendorName     &quot;ACER&quot;
    ModelName      &quot;ACER B229w&quot;
    Option         &quot;PreferredMode&quot; &quot;1680x1050&quot;
EndSection

Section &quot;Screen&quot;
    Identifier     &quot;ecran1&quot;
    Device         &quot;carteVideo1&quot;
    Monitor        &quot;LCD22&quot;
    DefaultDepth    24
    Option         &quot;TwinView&quot; &quot;0&quot;
    Option         &quot;metamodes&quot; &quot;DFP: 1680x1050 +0+0&quot;
    SubSection     &quot;Display&quot;
        Depth       24
        Modes      &quot;1680x1050_60&quot;
    EndSubSection
EndSection
&lt;/pre&gt;

=== Test de la configuration ===
Pour cela il vous suffit de vous mettre dans une console et de taper la commande suivante :
 X -layout &lt;mon layout&gt; -vt''X''

Ou le ''X'' doit être remplacer par un numéro de console libre, 8, 9, 10, 11 ou 12 en générale.
Vous devriez changer de console pour celle visé et voir un écran gris avec le curseur manipulable. Si c'est bien le cas c'est que votre configuration est bonne.

== Configuration de Pulseaudio ==
=== Configuration des droits ===
Normalement vous devez déjà avoir les groupes &quot;pulse&quot; et &quot;pulse-access&quot; de créé sur votre machine.
* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot; 
usermod -aG pulse-access &lt;username&gt;
* On peut enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio 
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse
=== Création du daemon système PulseAudio avec systemd ===
Bien que ce soit déconseillé de faire tourné pulseaudio en tant que daemon système, c'est le seul moyen pour que les 2 postes aient accès à la carte son en même temps.
Pour cela il faut légèrement modifier la configuration de pulseaudio.
Dans /etc/pulse il faut modifier 2 fichiers
daemon.conf
&lt;pre&gt;
...
daemonize = yes
...
local-server-type = system
...
&lt;/pre&gt;

client.conf
&lt;pre&gt;
...
autospawn = no
...
&lt;/pre&gt;

Enfin il faut créer le fichier /etc/systemd/system/pulseaudio.service
&lt;pre&gt;
[Unit]
Description=Pulseaudio sound server
Documentation=man:pulseaudio(1)
After=avahi-daemon.service network.target
Before=sound.target
Requires=dbus.socket
 
[Service]
Type=forking
BusName=org.pulseaudio.Server
ExecStart=/usr/bin/pulseaudio --system --disallow-exit --disallow-module-loading
ExecStop=/usr/bin/pulseaudio --kill
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
 
[Install]
WantedBy=multi-user.target
&lt;/pre&gt;

Et lancer la commandes suivante pour qu'il soit exécuter au démarrage :
 systemctl enable pulseaudio.service

Si vous voulez tester tout de suite le service il vous suffit de faire
 systemctl start pulseaudio.service

== Configuration systemd ==

Il existe un soucis qui fait que seul le premier poste (seat0) est détecté par «systemd-logind» et du coup ça empêche certaines fonctionnalités de s'exécuter correctement. Par exemple le montage automatique des clée USB en cliquant sur l'icône qui apparait. Pour vérifier cela il faut vous connecter a 2 poste minimum et lancer la commande suivante :
 loginctl

Si vous voyez tous vous utilisateurs connecté sur leur siège tant mieux pour vous. Sinon il faut faire les manipulations suivantes :

=== Rattachement du matériel ===
Tout d'abord faite la commande suivante, elle vous donne tous les matériels rattaché au premier poste et vous permettera de récupéré les chemins vers certains périphérique nécessaires.
 loginctl seat-status seat0

Ensuite faite un premier essai en rattachant manuellement certains périphériques, ici la carte graphique :
 loginctl attach seat-1 /sys/devices/pci0000:00/0000:00:02.0/0000:01:00.0/drm/card1 
 loginctl attach seat-1 /sys/devices/pci0000:00/0000:00:02.0/0000:01:00.0/graphics/fb1

Normalement en refaisant la commande «loginctl list-seats» vous devriez voir le nouveau «seat».
Repérer les chemins vers vers les périphérique de votre siège (clavier / sourie / carte son / carte graphique / … ), sachant que au minimum il nous faut la carte graphique.

=== Automatisation ===

Pour cela il est nécessaire d'éditer les règles udev

=== Fermeture de session ===
Un autre problème est qu'il se peut que certains programes ne se ferment pas correctement quand vous quittez votre session. Pour cela sur un autre poste que celui qui vient de se déconnecté il vous suffit de taper la commande suivante pour trouver les coupables : 
 loginctl session-status &lt;numéro de session visé&gt;

Dans mon cas il s'agissait de «gpg-agent» et de «gnome-keyring-daemon», comme je ne les utilisaient pas je les ai simplement supprimés.

== Ressources ==
http://code.lexarcana.com/posts/simple-multiseat-setup-on-fedora-17.html
http://code.lexarcana.com/posts/using-udev-to-configure-fedora-multi-seat-automatically.html
https://wiki.ubuntu.com/MultiseatTeam/Instructions
https://wiki.archlinux.fr/Systemd/logind
http://www.freedesktop.org/wiki/Software/systemd/multiseat/</text>
      <sha1>lubtuudwi1dvmij0k9bheoiegltdzct</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5896</id>
      <parentid>5895</parentid>
      <timestamp>2014-10-31T23:52:00Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <text xml:space="preserve" bytes="13785">== Configuration de X ==
Par défaut le fichier de X («xorg.conf») n'est plus indispensable pour un poste de travail classique. Mais dans notre cas il est indispensable pour s'y retrouver. Vous avez le choix entre créé plusieurs fichiers de configuration distinct, un par poste. Ou en faire un unique qui comportera l'ensemble des configurations qui seront classé dans des «Layout» différent. Personnellement je vous conseille 1 seul fichier de conf pour 2 poste, mais au delà ça commence a devenir illisible donc de faire un fichier par poste.
Pour notre exemple nous allons configurer 2 poste dans un seul fichier de configuration.
Dans un premier temps nous allons définir les «Layout» que nous allons utilisés. Il regroupe l'ensemble de la configuration des poste, le «screen» (écran + carte graphique) et les périphérique d'entré (clavier / sourie).
&lt;pre&gt;
Section &quot;ServerLayout&quot;
  #L'identifiant qui nous permettra de dire à X d'utiliser cette configuration
    Identifier     &quot;poste0&quot;
  #Le premier «0» désigne l'écran, comme vous pouvez avoir plusieurs écran par carte/poste vous pouvez avoir des lignes supplémentaire avec un 1, 2 et ainsi de suite. «ecran0» désigne une section que l'on verra plus tard. Enfin les 2 autres «0» positionne l'écran suivant des coordonnée si plusieurs écran sont en jeux. 
    Screen      0  &quot;ecran0&quot; 0 0 
  #Désigne la section pour un périphérique d'entré, ici un clavier
    InputDevice    &quot;clavier0&quot; &quot;CoreKeyboard&quot; 
  #Désigne la section pour un périphérique d'entré, ici une sourie
    InputDevice    &quot;sourie0&quot; &quot;CorePointer&quot; 
EndSection


Section &quot;ServerLayout&quot;
    Identifier     &quot;poste1&quot;
    Screen      0  &quot;ecran1&quot; 0 0
    InputDevice    &quot;clavier1&quot; &quot;CoreKeyboard&quot;
    InputDevice    &quot;sourie1&quot; &quot;CorePointer&quot;
EndSection
&lt;/pre&gt;

Ensuite nous définissons les périphérique d'entrés (ici juste pour le poste 0). Pour identifier les périphériques matériel et leur point d'entré logiciel il vous suffit d'aller faire un tour dans «/dev/input/*», de faire un «cat» sur un des fichier présent et de généré des évènement clavier/sourie. Si votre «cat» vous sort quelque chose alors vous avez identifié le périphérique correspondant.
&lt;pre&gt;
####################################
# Peripherique d'entree du poste 0 #
####################################
#Clavier du poste 0
Section &quot;InputDevice&quot;
  #Identiant permettant au Layout de l'appeler
    Identifier    &quot;clavier0&quot; 
    Driver    &quot;evdev&quot;
  #Clavier branché sur un port PS/2, donc l'accès par «by-path» est toléré, mais il vaut mieux «by-id»
    Option    &quot;Device&quot;     &quot;/dev/input/by-path/platform-i8042-serio-0-event-kbd&quot; 
    Option    &quot;XkbLayout&quot;  &quot;fr&quot;
    Option    &quot;XkbVariant&quot; &quot;latin9&quot;
  #IMPORTANT, permet un accès exclusif au périphérique. Sans ça les serveurs X ajouteront automatiquement tous les périphérique disponible aux controle, et du coup toutes les sourie/clavier contrôleront tous les pointeurs.
    Option    &quot;GrabDevice&quot; &quot;on&quot; 
EndSection

#Sourie du poste 0
Section    &quot;InputDevice&quot;
    Identifier    &quot;sourie0&quot;
    Driver &quot;evdev&quot;
  #Sourie branché en USB et comme à chaque redémarrage le chemin peut se modifier (ou pas) il faut préféré l'identification par «by-id»
    Option &quot;Device&quot; &quot;/dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse&quot; 
    Option &quot;GrabDevice&quot; &quot;on&quot;
EndSection
&lt;/pre&gt;

Ensuite on définit la section «screen» qui est une agrégation d'une carte graphique et d'un écran.
&lt;pre&gt;
#######################################
# Carte graphique et ecran du poste 0 #
#######################################

Section &quot;Device&quot;
    Identifier     &quot;carteVideo0&quot;
    Driver         &quot;radeon&quot;
    VendorName     &quot;AMD/ATI&quot;
    BoardName      &quot;Radeon HD 6550D&quot;
  #Trouvable en faisant un «lspci», pour ici «00:01.0 VGA compatible controller» se trouvait dans la sortie de la commande.
    BusID          &quot;PCI:0:1:0&quot;
  #Définition du premier (et seul) écran
    Screen          0
  #Avec un «xrandr» vous pouvez savoir quel prise est utilisé pour connecter l'écran (DVI, HDMI, DP, VGA). Le «Monitor-» est une nécéssité de nommage et le «-0» représente la carte graphique utilisé, la première (donc «0») dans ce cas, mais pour le deuxième poste on pourra trouver «Monitor-DVI-1»
        Option         &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
EndSection

Section &quot;Monitor&quot;
    Identifier     &quot;LCD28&quot;
    VendorName     &quot;Hanns.G&quot;
    ModelName      &quot;HSD Hanns.G HG281&quot;
    Option         &quot;PreferredMode&quot; &quot;1920x1200&quot;
EndSection

# Section qui relie les 2 composants ensemble.
Section &quot;Screen&quot;
    Identifier     &quot;ecran0&quot;
    Device         &quot;carteVideo0&quot;
    Monitor        &quot;LCD28&quot;
    DefaultDepth    24
    Option         &quot;TwinView&quot; &quot;0&quot;
    Option         &quot;metamodes&quot; &quot;DFP: 1920x1200 +0+0&quot;
    SubSection     &quot;Display&quot;
        Depth       24
        Modes      &quot;1920x1200_60&quot;
    EndSubSection
EndSection
&lt;/pre&gt;

Donc au final on obtient un ficher tel que celui çi :
&lt;pre&gt;
#Configuration multi-poste

#############
# Serveur X #
#############

Section &quot;ServerLayout&quot;
    Identifier     &quot;poste0&quot;
    Screen      0  &quot;ecran0&quot; 0 0
    InputDevice    &quot;clavier0&quot; &quot;CoreKeyboard&quot;
    InputDevice    &quot;sourie0&quot; &quot;CorePointer&quot;
EndSection


Section &quot;ServerLayout&quot;
    Identifier     &quot;poste1&quot;
    Screen      0  &quot;ecran1&quot; 0 0
    InputDevice    &quot;clavier1&quot; &quot;CoreKeyboard&quot;
    InputDevice    &quot;sourie1&quot; &quot;CorePointer&quot;
EndSection

#Section &quot;Files&quot;
#    RgbPath         &quot;/usr/X11R6/lib/X11/rgb&quot;
#EndSection

Section &quot;Module&quot;
    Load        &quot;dbe&quot;
    Load        &quot;extmod&quot;
    Load        &quot;type1&quot;
    Load        &quot;freetype&quot;
    Load        &quot;glx&quot;
EndSection

Section &quot;ServerFlags&quot;
    Option      &quot;Xinerama&quot;          &quot;0&quot;
#    Option      &quot;AutoEnableDevices&quot; &quot;false&quot;
#    Option      &quot;AutoAddDevices&quot;    &quot;false&quot;
#    Option      &quot;AllowEmptyInput&quot;   &quot;true&quot;
#    Option      &quot;AutoAddGPU&quot;        &quot;false&quot;
EndSection

####################################
# Peripherique d'entree du poste 0 #
####################################
#Clavier du poste 0
Section &quot;InputDevice&quot;
    Identifier    &quot;clavier0&quot;
    Driver    &quot;evdev&quot;
    Option    &quot;Device&quot;     &quot;/dev/input/by-path/platform-i8042-serio-0-event-kbd&quot;
    Option    &quot;XkbLayout&quot;  &quot;fr&quot;
    Option    &quot;XkbVariant&quot; &quot;latin9&quot;
    Option    &quot;GrabDevice&quot; &quot;on&quot;
EndSection

#Sourie du poste 0
Section    &quot;InputDevice&quot;
    Identifier    &quot;sourie0&quot;
    Driver &quot;evdev&quot;
#    Option &quot;ZAxisMapping&quot; &quot;4 5&quot;
    Option &quot;Device&quot; &quot;/dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse&quot;
    Option &quot;GrabDevice&quot; &quot;on&quot;
EndSection

####################################
# Peripherique d'entree du poste 1 #
####################################
#Clavier du poste 1
Section &quot;InputDevice&quot;
    Identifier    &quot;clavier1&quot;
    Driver    &quot;evdev&quot;
    Option    &quot;Device&quot;     &quot;/dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd&quot;
    Option    &quot;XkbLayout&quot;  &quot;fr&quot;
    Option    &quot;XkbVariant&quot; &quot;bepo&quot;
    Option    &quot;GrabDevice&quot; &quot;on&quot;
EndSection

#Sourie du poste 1
Section &quot;InputDevice&quot;
    Identifier    &quot;sourie1&quot;
    Driver    &quot;evdev&quot;
#    Option    &quot;ZAxisMapping&quot; &quot;4 5&quot;
    Option    &quot;Device&quot; &quot;/dev/input/by-id/usb-1d57_Game_mouse-if01-event-mouse&quot;
    Option    &quot;GrabDevice&quot; &quot;on&quot;
EndSection

#######################################
# Carte graphique et ecran du poste 0 #
#######################################

Section &quot;Device&quot;
    Identifier     &quot;carteVideo0&quot;
    Driver         &quot;radeon&quot;
    VendorName     &quot;AMD/ATI&quot;
    BoardName      &quot;Radeon HD 6550D&quot;
    BusID          &quot;PCI:0:1:0&quot;
    Screen          0
    Option         &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
EndSection

Section &quot;Monitor&quot;
    Identifier     &quot;LCD28&quot;
    VendorName     &quot;Hanns.G&quot;
    ModelName      &quot;HSD Hanns.G HG281&quot;
    Option         &quot;PreferredMode&quot; &quot;1920x1200&quot;
EndSection

Section &quot;Screen&quot;
    Identifier     &quot;ecran0&quot;
    Device         &quot;carteVideo0&quot;
    Monitor        &quot;LCD28&quot;
    DefaultDepth    24
    Option         &quot;TwinView&quot; &quot;0&quot;
    Option         &quot;metamodes&quot; &quot;DFP: 1920x1200 +0+0&quot;
    SubSection     &quot;Display&quot;
        Depth       24
        Modes      &quot;1920x1200_60&quot;
    EndSubSection
EndSection

#######################################
# Carte graphique et ecran du poste 1 #
#######################################

Section &quot;Device&quot;
    Identifier     &quot;carteVideo1&quot;
    Driver         &quot;radeon&quot;
    VendorName     &quot;AMD/ATI&quot;
    BoardName      &quot;Radeon HD 6450/7450/8450 / R5 230 OEM&quot;
    BusID          &quot;PCI:1:0:0&quot;
    Screen         0 
    Option         &quot;Monitor-DVI-1&quot; &quot;Acer&quot;
EndSection

Section &quot;Monitor&quot;
    Identifier     &quot;LCD22&quot;
    VendorName     &quot;ACER&quot;
    ModelName      &quot;ACER B229w&quot;
    Option         &quot;PreferredMode&quot; &quot;1680x1050&quot;
EndSection

Section &quot;Screen&quot;
    Identifier     &quot;ecran1&quot;
    Device         &quot;carteVideo1&quot;
    Monitor        &quot;LCD22&quot;
    DefaultDepth    24
    Option         &quot;TwinView&quot; &quot;0&quot;
    Option         &quot;metamodes&quot; &quot;DFP: 1680x1050 +0+0&quot;
    SubSection     &quot;Display&quot;
        Depth       24
        Modes      &quot;1680x1050_60&quot;
    EndSubSection
EndSection
&lt;/pre&gt;

=== Test de la configuration ===
Pour cela il vous suffit de vous mettre dans une console et de taper la commande suivante :
 X -layout &lt;mon layout&gt; -vt''X''

Ou le ''X'' doit être remplacer par un numéro de console libre, 8, 9, 10, 11 ou 12 en générale.
Vous devriez changer de console pour celle visé et voir un écran gris avec le curseur manipulable. Si c'est bien le cas c'est que votre configuration est bonne.

== Configuration de Pulseaudio ==
=== Configuration des droits ===
Normalement vous devez déjà avoir les groupes &quot;pulse&quot; et &quot;pulse-access&quot; de créé sur votre machine.
* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot; 
usermod -aG pulse-access &lt;username&gt;
* On peut enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio 
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse
=== Création du daemon système PulseAudio avec systemd ===
Bien que ce soit déconseillé de faire tourné pulseaudio en tant que daemon système, c'est le seul moyen pour que les 2 postes aient accès à la carte son en même temps.
Pour cela il faut légèrement modifier la configuration de pulseaudio.
Dans /etc/pulse il faut modifier 2 fichiers
daemon.conf
&lt;pre&gt;
...
daemonize = yes
...
local-server-type = system
...
&lt;/pre&gt;

client.conf
&lt;pre&gt;
...
autospawn = no
...
&lt;/pre&gt;

Enfin il faut créer le fichier /etc/systemd/system/pulseaudio.service
&lt;pre&gt;
[Unit]
Description=Pulseaudio sound server
Documentation=man:pulseaudio(1)
After=avahi-daemon.service network.target
Before=sound.target
Requires=dbus.socket
 
[Service]
Type=forking
BusName=org.pulseaudio.Server
ExecStart=/usr/bin/pulseaudio --system --disallow-exit --disallow-module-loading
ExecStop=/usr/bin/pulseaudio --kill
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
 
[Install]
WantedBy=multi-user.target
&lt;/pre&gt;

Et lancer la commandes suivante pour qu'il soit exécuter au démarrage :
 systemctl enable pulseaudio.service

Si vous voulez tester tout de suite le service il vous suffit de faire
 systemctl start pulseaudio.service

== Configuration systemd ==

Il existe un soucis qui fait que seul le premier poste (seat0) est détecté par «systemd-logind» et du coup ça empêche certaines fonctionnalités de s'exécuter correctement. Par exemple le montage automatique des clée USB en cliquant sur l'icône qui apparait. Pour vérifier cela il faut vous connecter a 2 poste minimum et lancer la commande suivante :
 loginctl

Si vous voyez tous vous utilisateurs connecté sur leur siège tant mieux pour vous. Sinon il faut faire les manipulations suivantes :

=== Rattachement du matériel ===
Tout d'abord faite la commande suivante, elle vous donne tous les matériels rattaché au premier poste et vous permettera de récupéré les chemins vers certains périphérique nécessaires.
 loginctl seat-status seat0

Ensuite faite un premier essai en rattachant manuellement certains périphériques, ici la carte graphique :
 loginctl attach seat-1 /sys/devices/pci0000:00/0000:00:02.0/0000:01:00.0/drm/card1 
 loginctl attach seat-1 /sys/devices/pci0000:00/0000:00:02.0/0000:01:00.0/graphics/fb1

Normalement en refaisant la commande «loginctl list-seats» vous devriez voir le nouveau «seat».
Repérer les chemins vers vers les périphérique de votre siège (clavier / sourie / carte son / carte graphique / … ), sachant que au minimum il nous faut la carte graphique.

=== Automatisation ===

Pour cela il est nécessaire d'éditer les règles udev.
Normalement faire les commandes «loginctl» doit automatiquement créer les fichier de configuration correspondants dans «/etc/udev/rules.d/».

Il est quand même nécessaire d'ajouter 


=== Fermeture de session ===
Un autre problème est qu'il se peut que certains programes ne se ferment pas correctement quand vous quittez votre session. Pour cela sur un autre poste que celui qui vient de se déconnecté il vous suffit de taper la commande suivante pour trouver les coupables : 
 loginctl session-status &lt;numéro de session visé&gt;

Dans mon cas il s'agissait de «gpg-agent» et de «gnome-keyring-daemon», comme je ne les utilisait pas je les ai simplement supprimés.
Ce n'est pas vraiment une solution et l'exécution d'un script lors de la déconnexion (param ligtdm) est surement préférable mais je n'en n'ai pas vraiment eu l'utilité pour l'instant.

== Ressources ==
* http://code.lexarcana.com/posts/simple-multiseat-setup-on-fedora-17.html
* http://code.lexarcana.com/posts/using-udev-to-configure-fedora-multi-seat-automatically.html
* https://wiki.ubuntu.com/MultiseatTeam/Instructions
* https://wiki.ubuntu.com/Multiseat
* https://wiki.archlinux.fr/Systemd/logind
* http://www.freedesktop.org/wiki/Software/systemd/multiseat/</text>
      <sha1>k3zb5yrl1ft7ixgssu2wnzvlgrisqab</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5899</id>
      <parentid>5896</parentid>
      <timestamp>2014-11-03T23:35:46Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <text xml:space="preserve" bytes="19424">= Intro =
Faire du multi-poste n'est pas quelque chose de naturel pour un particulier mais est très utilisé dans les bibliothèques ou université pour démultiplier le nombre de poste informatique disponible a moindre coût. Dans notre cas nous allons mettre en place la solution la plus répendu, pour cela il vous faut 1 PC, 1 carte graphique et un couple clavier+sourie par poste souhaité. Sachez qu'il est possible de réduire le nombre de carte graphique nécessaire en exploitant plusieurs des sortie disponible mais [[Multiposte_avec_une_carte_graphique la technique est plus délicate]] à mettre en place et a plus de désavantage.

= Configuration de X =
Par défaut le fichier de X («xorg.conf») n'est plus indispensable pour un poste de travail classique. Mais dans notre cas il est indispensable pour s'y retrouver. Vous avez le choix entre créé plusieurs fichiers de configuration distinct, un par poste. Ou en faire un unique qui comportera l'ensemble des configurations qui seront classé dans des «Layout» différent. Personnellement je vous conseille 1 seul fichier de conf pour 2 poste, mais au delà ça commence a devenir illisible donc de faire un fichier par poste.
Pour notre exemple nous allons configurer 2 poste dans un seul fichier de configuration.
Dans un premier temps nous allons définir les «Layout» que nous allons utilisés. Il regroupe l'ensemble de la configuration des poste, le «screen» (écran + carte graphique) et les périphérique d'entré (clavier / sourie).
&lt;pre&gt;
Section &quot;ServerLayout&quot;
  #L'identifiant qui nous permettra de dire à X d'utiliser cette configuration
    Identifier     &quot;poste0&quot;
  #Le premier «0» désigne l'écran, comme vous pouvez avoir plusieurs écran par carte/poste vous pouvez avoir des lignes supplémentaire avec un 1, 2 et ainsi de suite. «ecran0» désigne une section que l'on verra plus tard. Enfin les 2 autres «0» positionne l'écran suivant des coordonnée si plusieurs écran sont en jeux. 
    Screen      0  &quot;ecran0&quot; 0 0 
  #Désigne la section pour un périphérique d'entré, ici un clavier
    InputDevice    &quot;clavier0&quot; &quot;CoreKeyboard&quot; 
  #Désigne la section pour un périphérique d'entré, ici une sourie
    InputDevice    &quot;sourie0&quot; &quot;CorePointer&quot; 
EndSection


Section &quot;ServerLayout&quot;
    Identifier     &quot;poste1&quot;
    Screen      0  &quot;ecran1&quot; 0 0
    InputDevice    &quot;clavier1&quot; &quot;CoreKeyboard&quot;
    InputDevice    &quot;sourie1&quot; &quot;CorePointer&quot;
EndSection
&lt;/pre&gt;

Ensuite nous définissons les périphérique d'entrés (ici juste pour le poste 0). Pour identifier les périphériques matériel et leur point d'entré logiciel il vous suffit d'aller faire un tour dans «/dev/input/*», de faire un «cat» sur un des fichier présent et de généré des évènement clavier/sourie. Si votre «cat» vous sort quelque chose alors vous avez identifié le périphérique correspondant.
&lt;pre&gt;
####################################
# Peripherique d'entree du poste 0 #
####################################
#Clavier du poste 0
Section &quot;InputDevice&quot;
  #Identiant permettant au Layout de l'appeler
    Identifier    &quot;clavier0&quot; 
    Driver    &quot;evdev&quot;
  #Clavier branché sur un port PS/2, donc l'accès par «by-path» est toléré, mais il vaut mieux «by-id»
    Option    &quot;Device&quot;     &quot;/dev/input/by-path/platform-i8042-serio-0-event-kbd&quot; 
    Option    &quot;XkbLayout&quot;  &quot;fr&quot;
    Option    &quot;XkbVariant&quot; &quot;latin9&quot;
  #IMPORTANT, permet un accès exclusif au périphérique. Sans ça les serveurs X ajouteront automatiquement tous les périphérique disponible aux controle, et du coup toutes les sourie/clavier contrôleront tous les pointeurs.
    Option    &quot;GrabDevice&quot; &quot;on&quot; 
EndSection

#Sourie du poste 0
Section    &quot;InputDevice&quot;
    Identifier    &quot;sourie0&quot;
    Driver &quot;evdev&quot;
  #Sourie branché en USB et comme à chaque redémarrage le chemin peut se modifier (ou pas) il faut préféré l'identification par «by-id»
    Option &quot;Device&quot; &quot;/dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse&quot; 
    Option &quot;GrabDevice&quot; &quot;on&quot;
EndSection
&lt;/pre&gt;

Ensuite on définit la section «screen» qui est une agrégation d'une carte graphique et d'un écran.
&lt;pre&gt;
#######################################
# Carte graphique et ecran du poste 0 #
#######################################

Section &quot;Device&quot;
    Identifier     &quot;carteVideo0&quot;
    Driver         &quot;radeon&quot;
    VendorName     &quot;AMD/ATI&quot;
    BoardName      &quot;Radeon HD 6550D&quot;
  #Trouvable en faisant un «lspci», pour ici «00:01.0 VGA compatible controller» se trouvait dans la sortie de la commande.
    BusID          &quot;PCI:0:1:0&quot;
  #Définition du premier (et seul) écran
    Screen          0
  #Avec un «xrandr» vous pouvez savoir quel prise est utilisé pour connecter l'écran (DVI, HDMI, DP, VGA). Le «Monitor-» est une nécéssité de nommage et le «-0» représente la carte graphique utilisé, la première (donc «0») dans ce cas, mais pour le deuxième poste on pourra trouver «Monitor-DVI-1»
        Option         &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
EndSection

Section &quot;Monitor&quot;
    Identifier     &quot;LCD28&quot;
    VendorName     &quot;Hanns.G&quot;
    ModelName      &quot;HSD Hanns.G HG281&quot;
    Option         &quot;PreferredMode&quot; &quot;1920x1200&quot;
EndSection

# Section qui relie les 2 composants ensemble.
Section &quot;Screen&quot;
    Identifier     &quot;ecran0&quot;
    Device         &quot;carteVideo0&quot;
    Monitor        &quot;LCD28&quot;
    DefaultDepth    24
    Option         &quot;TwinView&quot; &quot;0&quot;
    Option         &quot;metamodes&quot; &quot;DFP: 1920x1200 +0+0&quot;
    SubSection     &quot;Display&quot;
        Depth       24
        Modes      &quot;1920x1200_60&quot;
    EndSubSection
EndSection
&lt;/pre&gt;

Donc au final on obtient un ficher tel que celui çi :
&lt;pre&gt;
#Configuration multi-poste

#############
# Serveur X #
#############

Section &quot;ServerLayout&quot;
    Identifier     &quot;poste0&quot;
    Screen      0  &quot;ecran0&quot; 0 0
    InputDevice    &quot;clavier0&quot; &quot;CoreKeyboard&quot;
    InputDevice    &quot;sourie0&quot; &quot;CorePointer&quot;
EndSection


Section &quot;ServerLayout&quot;
    Identifier     &quot;poste1&quot;
    Screen      0  &quot;ecran1&quot; 0 0
    InputDevice    &quot;clavier1&quot; &quot;CoreKeyboard&quot;
    InputDevice    &quot;sourie1&quot; &quot;CorePointer&quot;
EndSection

#Section &quot;Files&quot;
#    RgbPath         &quot;/usr/X11R6/lib/X11/rgb&quot;
#EndSection

Section &quot;Module&quot;
    Load        &quot;dbe&quot;
    Load        &quot;extmod&quot;
    Load        &quot;type1&quot;
    Load        &quot;freetype&quot;
    Load        &quot;glx&quot;
EndSection

Section &quot;ServerFlags&quot;
    Option      &quot;Xinerama&quot;          &quot;0&quot;
#    Option      &quot;AutoEnableDevices&quot; &quot;false&quot;
#    Option      &quot;AutoAddDevices&quot;    &quot;false&quot;
#    Option      &quot;AllowEmptyInput&quot;   &quot;true&quot;
#    Option      &quot;AutoAddGPU&quot;        &quot;false&quot;
EndSection

####################################
# Peripherique d'entree du poste 0 #
####################################
#Clavier du poste 0
Section &quot;InputDevice&quot;
    Identifier    &quot;clavier0&quot;
    Driver    &quot;evdev&quot;
    Option    &quot;Device&quot;     &quot;/dev/input/by-path/platform-i8042-serio-0-event-kbd&quot;
    Option    &quot;XkbLayout&quot;  &quot;fr&quot;
    Option    &quot;XkbVariant&quot; &quot;latin9&quot;
    Option    &quot;GrabDevice&quot; &quot;on&quot;
EndSection

#Sourie du poste 0
Section    &quot;InputDevice&quot;
    Identifier    &quot;sourie0&quot;
    Driver &quot;evdev&quot;
#    Option &quot;ZAxisMapping&quot; &quot;4 5&quot;
    Option &quot;Device&quot; &quot;/dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse&quot;
    Option &quot;GrabDevice&quot; &quot;on&quot;
EndSection

####################################
# Peripherique d'entree du poste 1 #
####################################
#Clavier du poste 1
Section &quot;InputDevice&quot;
    Identifier    &quot;clavier1&quot;
    Driver    &quot;evdev&quot;
    Option    &quot;Device&quot;     &quot;/dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd&quot;
    Option    &quot;XkbLayout&quot;  &quot;fr&quot;
    Option    &quot;XkbVariant&quot; &quot;bepo&quot;
    Option    &quot;GrabDevice&quot; &quot;on&quot;
EndSection

#Sourie du poste 1
Section &quot;InputDevice&quot;
    Identifier    &quot;sourie1&quot;
    Driver    &quot;evdev&quot;
#    Option    &quot;ZAxisMapping&quot; &quot;4 5&quot;
    Option    &quot;Device&quot; &quot;/dev/input/by-id/usb-1d57_Game_mouse-if01-event-mouse&quot;
    Option    &quot;GrabDevice&quot; &quot;on&quot;
EndSection

#######################################
# Carte graphique et ecran du poste 0 #
#######################################

Section &quot;Device&quot;
    Identifier     &quot;carteVideo0&quot;
    Driver         &quot;radeon&quot;
    VendorName     &quot;AMD/ATI&quot;
    BoardName      &quot;Radeon HD 6550D&quot;
    BusID          &quot;PCI:0:1:0&quot;
    Screen          0
    Option         &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
EndSection

Section &quot;Monitor&quot;
    Identifier     &quot;LCD28&quot;
    VendorName     &quot;Hanns.G&quot;
    ModelName      &quot;HSD Hanns.G HG281&quot;
    Option         &quot;PreferredMode&quot; &quot;1920x1200&quot;
EndSection

Section &quot;Screen&quot;
    Identifier     &quot;ecran0&quot;
    Device         &quot;carteVideo0&quot;
    Monitor        &quot;LCD28&quot;
    DefaultDepth    24
    Option         &quot;TwinView&quot; &quot;0&quot;
    Option         &quot;metamodes&quot; &quot;DFP: 1920x1200 +0+0&quot;
    SubSection     &quot;Display&quot;
        Depth       24
        Modes      &quot;1920x1200_60&quot;
    EndSubSection
EndSection

#######################################
# Carte graphique et ecran du poste 1 #
#######################################

Section &quot;Device&quot;
    Identifier     &quot;carteVideo1&quot;
    Driver         &quot;radeon&quot;
    VendorName     &quot;AMD/ATI&quot;
    BoardName      &quot;Radeon HD 6450/7450/8450 / R5 230 OEM&quot;
    BusID          &quot;PCI:1:0:0&quot;
    Screen         0 
    Option         &quot;Monitor-DVI-1&quot; &quot;Acer&quot;
EndSection

Section &quot;Monitor&quot;
    Identifier     &quot;LCD22&quot;
    VendorName     &quot;ACER&quot;
    ModelName      &quot;ACER B229w&quot;
    Option         &quot;PreferredMode&quot; &quot;1680x1050&quot;
EndSection

Section &quot;Screen&quot;
    Identifier     &quot;ecran1&quot;
    Device         &quot;carteVideo1&quot;
    Monitor        &quot;LCD22&quot;
    DefaultDepth    24
    Option         &quot;TwinView&quot; &quot;0&quot;
    Option         &quot;metamodes&quot; &quot;DFP: 1680x1050 +0+0&quot;
    SubSection     &quot;Display&quot;
        Depth       24
        Modes      &quot;1680x1050_60&quot;
    EndSubSection
EndSection
&lt;/pre&gt;

== Test de la configuration ==
Pour cela il vous suffit de vous mettre dans une console et de taper la commande suivante :
 X -layout &lt;mon layout&gt; -vt''X''

Ou le ''X'' doit être remplacer par un numéro de console libre, 8, 9, 10, 11 ou 12 en générale.
Vous devriez changer de console pour celle visé et voir un écran gris avec le curseur manipulable. Si c'est bien le cas c'est que votre configuration est bonne.

= Configuration de LightDM =

Ici rien de plus simple, il suffit de dire a lightDM de lancer un deuxième serveur X avec une config particulière, pour cela il faut modifier son fichier de configuration («/etc/lightdm/lightdm.conf»)

&lt;pre&gt;
[Seat:0]
xserver-command=/usr/bin/X
xserver-layout=poste0
xdg-seat=seat0

[Seat:1]
xserver-command=/usr/bin/X vt8
xserver-layout=poste1
xdg-seat=seat1
&lt;/pre&gt;

Certain tuto ajoute les options «sharevts» ou «keeptty». La première option me bloquait l'affichage sur l'interface graphique alors que les commandes passais bien sur un VT, quand au deuxième d'après la doc c'est utile pour le debug mais pas plus («Prevent the server from detaching its initial controlling terminal.»).
Du coup seul le siège principal (seat0) à accès aux VT (Ctrl + Maj + Fx).
L'option «xserver-layout» parle d'elle même et permet de sélectionner une config particulière dans un fichier de conf Xorg, sinon l'option «xserver-config» permet de sélectionner un fichier de conf particulier si on a choisi de séparer la configuration des X.
L'option «xdg-seat» est indispensable pour la suite de la configuration, il permet à systemd et logind de faire le lien entre le poste graphique et les droits a lui accorder.

Si tout s'est bien passé vous devriez voir apparaitre les 2 écran de connexion avec le clavier et sourie rattaché. Cependant il ne faut pas s'arrêter en si bon chemin et le système a encore besoin de quelques configurations.

= Configuration de Pulseaudio =

Par défaut «pulseaudio» se lance en espace utilisateur, cela veut dire que une fois que vous vous déconnecter de votre session votre PC ne peut plus émettre un son. Le fait que le serveur de son soie rataché à la connexion d'un utilisateur, empêche l'utilisation du son d'un second utilisateur, ce qui serais fort dommage dans notre cas. Donc nous allons changer cela pour que «pulseaudio» s'exécute en tant que daemon système (ne pas tenir compte du message d'avertissement qui vous le déconseillerais, nous n'avons pas le choix dans notre cas) et régler les droits utilisateurs pour que tous puisse accéder a ce daemon.

== Configuration des droits ==
Normalement vous devez déjà avoir les groupes &quot;pulse&quot; et &quot;pulse-access&quot; de créé sur votre machine.
* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot; 
usermod -aG pulse-access &lt;username&gt;
* On peut enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio 
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse
== Création du daemon système PulseAudio avec systemd ==
Bien que ce soit déconseillé de faire tourné pulseaudio en tant que daemon système, c'est le seul moyen pour que les 2 postes aient accès à la carte son en même temps.
Pour cela il faut légèrement modifier la configuration de pulseaudio.
Dans /etc/pulse il faut modifier 2 fichiers
daemon.conf
&lt;pre&gt;
...
daemonize = yes
...
local-server-type = system
...
&lt;/pre&gt;

client.conf
&lt;pre&gt;
...
autospawn = no
...
&lt;/pre&gt;

Enfin il faut créer le fichier /etc/systemd/system/pulseaudio.service
&lt;pre&gt;
[Unit]
Description=Pulseaudio sound server
Documentation=man:pulseaudio(1)
After=avahi-daemon.service network.target
Before=sound.target
Requires=dbus.socket
 
[Service]
Type=forking
BusName=org.pulseaudio.Server
ExecStart=/usr/bin/pulseaudio --system --disallow-exit --disallow-module-loading
ExecStop=/usr/bin/pulseaudio --kill
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
 
[Install]
WantedBy=multi-user.target
&lt;/pre&gt;

Et lancer la commandes suivante pour qu'il soit exécuter au démarrage :
 systemctl enable pulseaudio.service

Si vous voulez tester tout de suite le service il vous suffit de faire
 systemctl start pulseaudio.service

= Configuration systemd =

Il existe un soucis qui fait que seul le premier poste (seat0) est détecté par «systemd-logind» et du coup ça empêche certaines fonctionnalités de s'exécuter correctement. Par exemple le montage automatique des clée USB en cliquant sur l'icône qui apparait. Pour vérifier cela il faut vous connecter a 2 poste minimum et lancer la commande suivante :
 loginctl

Si vous voyez tous vous utilisateurs connecté sur leur siège tant mieux pour vous. Sinon il faut faire les manipulations suivantes :

== Rattachement du matériel ==
Tout d'abord faite la commande suivante, elle vous donne tous les matériels rattaché au premier poste et vous permettra de récupéré les chemins vers certains périphérique nécessaires.
 loginctl seat-status seat0

Ensuite faite un premier essai en rattachant manuellement certains périphériques, ici la carte graphique :
 loginctl attach seat1 /sys/devices/pci0000:00/0000:00:02.0/0000:01:00.0/drm/card1 
 loginctl attach seat1 /sys/devices/pci0000:00/0000:00:02.0/0000:01:00.0/graphics/fb1

Normalement en refaisant la commande «loginctl list-seats» vous devriez voir le nouveau «seat».
Repérer les chemins vers vers les périphérique de votre siège (clavier / sourie / carte son / carte graphique / … ), sachant que au minimum il nous faut la carte graphique.

=== Cas spéciale du «seat0» ===
Le «seat0» est spécial dans le sens ou il existera toujours et que tout périphérique lui est attaché par défaut, c'est le point de référence de «logind».

== Automatisation ==

Le fait d'attacher un périphérique a un «seat» créé automatiquement la règle udev (dans «/etc/udev/rules.d/») qui permet après une extinction de retrouver les réglages. Cependant ces règles sont basique et il faut les démultiplier pour prendre en compte tout un poste. Il peut être plus intéressant de les retoucher pour englober tout un poste si tout ses périphérique sont branchés sur un même concentrateur USB.
Pour cela les commandes suivantes vous seront utile :
 udevadm info -a -p &lt;chemin en /sys/… &gt;
Vous donneras toutes les informations sur un périphérique particulier et toute sa hiérarchie de connexion.
Au final cela m'a donner les règles suivantes
&lt;pre&gt;
# add master-of-seat tag to video cards
KERNEL==&quot;card[0-9]*&quot;, SUBSYSTEM==&quot;drm&quot;, TAG+=&quot;master-of-seat&quot;
KERNEL==&quot;fb[1-9]&quot;, SUBSYSTEM==&quot;graphics&quot;, TAG+=&quot;master-of-seat&quot;

#Carte graphique
TAG==&quot;seat&quot;, KERNEL==&quot;fb1&quot;, SUBSYSTEM==&quot;graphics&quot;, ATTR{virtual_size}==&quot;1680,1050&quot;, ENV{ID_SEAT}=&quot;seat1&quot;, TAG+=&quot;seat1&quot;
TAG==&quot;seat&quot;, KERNEL==&quot;card1&quot;, SUBSYSTEM==&quot;drm&quot;, ENV{ID_SEAT}=&quot;seat1&quot;, TAG+=&quot;seat1&quot;

#Clavier
TAG==&quot;seat&quot;, SUBSYSTEM==&quot;input&quot;, ATTR{name}==&quot;TrulyErgonomic.com Truly Ergonomic Computer Keyboard&quot;, ENV{ID_SEAT}=&quot;seat1&quot;, TAG+=&quot;seat1&quot;

#Sourie
TAG==&quot;seat&quot;, SUBSYSTEM==&quot;input&quot;, ATTR{name}==&quot;Game mouse&quot;, ENV{ID_SEAT}=&quot;seat1&quot;, TAG+=&quot;seat1&quot;
&lt;/pre&gt;

Ce n'est pas l'optimum mais suffisant pour ce que je voulais faire.
Le TAG «master-of-seat» ne semble pas indispensable mais est fortement conseillé sur au moins un périphérique par poste, il semble que ça permette à systemd de trouver un référent au nouveau poste. Si vous rattacher un concentrateur USB a un siège il sera exclusif a ce dernier, ce qui a ses avantages pour brancher de nouveau périphérique USB.

== Fermeture de session ==
Un autre problème est qu'il se peut que certains programmes ne se ferment pas correctement quand vous quittez votre session. Pour cela sur un autre poste que celui qui vient de se déconnecté il vous suffit de taper la commande suivante pour trouver les coupables : 
 loginctl session-status &lt;numéro de session visé&gt;

Dans mon cas il s'agissait de «gpg-agent» et de «gnome-keyring-daemon», comme je ne les utilisait pas je les ai simplement supprimés.
Ce n'est pas vraiment une solution et l'exécution d'un script lors de la déconnexion (param ligtdm) est surement préférable mais je n'en n'ai pas vraiment eu l'utilité pour l'instant.

= Prolbèmes possible =
== Je ne voie pas les clés USB branchées ==
Et oui c'est un soucis que je n'ai pas encore résolu, le hub USB sur lequelle est branché la clé appartient à l'un des 2 poste, donc seul l'un des deux est en mesure d'interagir avec.

== Le poste X ne peut éteindre le PC / monter une clée qui apparait sur le bureau ==
Cela veut dire qu'il n'est pas reconnu en tant que «seat» par le système et qu'il vous manque quelque chose. Vérifier les «seat» par 
 loginctl
et
 loginctl seat-status seatX

= Amélioration possible =

* Partage de concentrateur USB : dans mon cas c'est plus le partage de lecteur de carte, mais je n'ai pas encore trouver comment faire pour que 2 ou plus poste puisse accéder à un périphérique.
* Répartition des enceintes : Sur les carte son en général il y a 2 prise pour la sortie audio, il serait intéressant que pour 2 poste chacun ai une paire propre.
* Gérer le branchement a chaud des périphérique : Cela semble [http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org supporté depuis un moment] mais je n'ai pas encore trouvé pourquoi cela ne fonctionne pas ici.


= Ressources =
* http://code.lexarcana.com/posts/simple-multiseat-setup-on-fedora-17.html
* http://code.lexarcana.com/posts/using-udev-to-configure-fedora-multi-seat-automatically.html
* https://wiki.ubuntu.com/MultiseatTeam/Instructions
* https://wiki.ubuntu.com/Multiseat
* https://wiki.archlinux.fr/Systemd/logind
* http://www.freedesktop.org/wiki/Software/systemd/multiseat/</text>
      <sha1>jdqqz70nnha11u3cvaksk5w1j7ok45x</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5900</id>
      <parentid>5899</parentid>
      <timestamp>2014-11-03T23:39:03Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <comment>/* Amélioration possible */</comment>
      <text xml:space="preserve" bytes="19617">= Intro =
Faire du multi-poste n'est pas quelque chose de naturel pour un particulier mais est très utilisé dans les bibliothèques ou université pour démultiplier le nombre de poste informatique disponible a moindre coût. Dans notre cas nous allons mettre en place la solution la plus répendu, pour cela il vous faut 1 PC, 1 carte graphique et un couple clavier+sourie par poste souhaité. Sachez qu'il est possible de réduire le nombre de carte graphique nécessaire en exploitant plusieurs des sortie disponible mais [[Multiposte_avec_une_carte_graphique la technique est plus délicate]] à mettre en place et a plus de désavantage.

= Configuration de X =
Par défaut le fichier de X («xorg.conf») n'est plus indispensable pour un poste de travail classique. Mais dans notre cas il est indispensable pour s'y retrouver. Vous avez le choix entre créé plusieurs fichiers de configuration distinct, un par poste. Ou en faire un unique qui comportera l'ensemble des configurations qui seront classé dans des «Layout» différent. Personnellement je vous conseille 1 seul fichier de conf pour 2 poste, mais au delà ça commence a devenir illisible donc de faire un fichier par poste.
Pour notre exemple nous allons configurer 2 poste dans un seul fichier de configuration.
Dans un premier temps nous allons définir les «Layout» que nous allons utilisés. Il regroupe l'ensemble de la configuration des poste, le «screen» (écran + carte graphique) et les périphérique d'entré (clavier / sourie).
&lt;pre&gt;
Section &quot;ServerLayout&quot;
  #L'identifiant qui nous permettra de dire à X d'utiliser cette configuration
    Identifier     &quot;poste0&quot;
  #Le premier «0» désigne l'écran, comme vous pouvez avoir plusieurs écran par carte/poste vous pouvez avoir des lignes supplémentaire avec un 1, 2 et ainsi de suite. «ecran0» désigne une section que l'on verra plus tard. Enfin les 2 autres «0» positionne l'écran suivant des coordonnée si plusieurs écran sont en jeux. 
    Screen      0  &quot;ecran0&quot; 0 0 
  #Désigne la section pour un périphérique d'entré, ici un clavier
    InputDevice    &quot;clavier0&quot; &quot;CoreKeyboard&quot; 
  #Désigne la section pour un périphérique d'entré, ici une sourie
    InputDevice    &quot;sourie0&quot; &quot;CorePointer&quot; 
EndSection


Section &quot;ServerLayout&quot;
    Identifier     &quot;poste1&quot;
    Screen      0  &quot;ecran1&quot; 0 0
    InputDevice    &quot;clavier1&quot; &quot;CoreKeyboard&quot;
    InputDevice    &quot;sourie1&quot; &quot;CorePointer&quot;
EndSection
&lt;/pre&gt;

Ensuite nous définissons les périphérique d'entrés (ici juste pour le poste 0). Pour identifier les périphériques matériel et leur point d'entré logiciel il vous suffit d'aller faire un tour dans «/dev/input/*», de faire un «cat» sur un des fichier présent et de généré des évènement clavier/sourie. Si votre «cat» vous sort quelque chose alors vous avez identifié le périphérique correspondant.
&lt;pre&gt;
####################################
# Peripherique d'entree du poste 0 #
####################################
#Clavier du poste 0
Section &quot;InputDevice&quot;
  #Identiant permettant au Layout de l'appeler
    Identifier    &quot;clavier0&quot; 
    Driver    &quot;evdev&quot;
  #Clavier branché sur un port PS/2, donc l'accès par «by-path» est toléré, mais il vaut mieux «by-id»
    Option    &quot;Device&quot;     &quot;/dev/input/by-path/platform-i8042-serio-0-event-kbd&quot; 
    Option    &quot;XkbLayout&quot;  &quot;fr&quot;
    Option    &quot;XkbVariant&quot; &quot;latin9&quot;
  #IMPORTANT, permet un accès exclusif au périphérique. Sans ça les serveurs X ajouteront automatiquement tous les périphérique disponible aux controle, et du coup toutes les sourie/clavier contrôleront tous les pointeurs.
    Option    &quot;GrabDevice&quot; &quot;on&quot; 
EndSection

#Sourie du poste 0
Section    &quot;InputDevice&quot;
    Identifier    &quot;sourie0&quot;
    Driver &quot;evdev&quot;
  #Sourie branché en USB et comme à chaque redémarrage le chemin peut se modifier (ou pas) il faut préféré l'identification par «by-id»
    Option &quot;Device&quot; &quot;/dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse&quot; 
    Option &quot;GrabDevice&quot; &quot;on&quot;
EndSection
&lt;/pre&gt;

Ensuite on définit la section «screen» qui est une agrégation d'une carte graphique et d'un écran.
&lt;pre&gt;
#######################################
# Carte graphique et ecran du poste 0 #
#######################################

Section &quot;Device&quot;
    Identifier     &quot;carteVideo0&quot;
    Driver         &quot;radeon&quot;
    VendorName     &quot;AMD/ATI&quot;
    BoardName      &quot;Radeon HD 6550D&quot;
  #Trouvable en faisant un «lspci», pour ici «00:01.0 VGA compatible controller» se trouvait dans la sortie de la commande.
    BusID          &quot;PCI:0:1:0&quot;
  #Définition du premier (et seul) écran
    Screen          0
  #Avec un «xrandr» vous pouvez savoir quel prise est utilisé pour connecter l'écran (DVI, HDMI, DP, VGA). Le «Monitor-» est une nécéssité de nommage et le «-0» représente la carte graphique utilisé, la première (donc «0») dans ce cas, mais pour le deuxième poste on pourra trouver «Monitor-DVI-1»
        Option         &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
EndSection

Section &quot;Monitor&quot;
    Identifier     &quot;LCD28&quot;
    VendorName     &quot;Hanns.G&quot;
    ModelName      &quot;HSD Hanns.G HG281&quot;
    Option         &quot;PreferredMode&quot; &quot;1920x1200&quot;
EndSection

# Section qui relie les 2 composants ensemble.
Section &quot;Screen&quot;
    Identifier     &quot;ecran0&quot;
    Device         &quot;carteVideo0&quot;
    Monitor        &quot;LCD28&quot;
    DefaultDepth    24
    Option         &quot;TwinView&quot; &quot;0&quot;
    Option         &quot;metamodes&quot; &quot;DFP: 1920x1200 +0+0&quot;
    SubSection     &quot;Display&quot;
        Depth       24
        Modes      &quot;1920x1200_60&quot;
    EndSubSection
EndSection
&lt;/pre&gt;

Donc au final on obtient un ficher tel que celui çi :
&lt;pre&gt;
#Configuration multi-poste

#############
# Serveur X #
#############

Section &quot;ServerLayout&quot;
    Identifier     &quot;poste0&quot;
    Screen      0  &quot;ecran0&quot; 0 0
    InputDevice    &quot;clavier0&quot; &quot;CoreKeyboard&quot;
    InputDevice    &quot;sourie0&quot; &quot;CorePointer&quot;
EndSection


Section &quot;ServerLayout&quot;
    Identifier     &quot;poste1&quot;
    Screen      0  &quot;ecran1&quot; 0 0
    InputDevice    &quot;clavier1&quot; &quot;CoreKeyboard&quot;
    InputDevice    &quot;sourie1&quot; &quot;CorePointer&quot;
EndSection

#Section &quot;Files&quot;
#    RgbPath         &quot;/usr/X11R6/lib/X11/rgb&quot;
#EndSection

Section &quot;Module&quot;
    Load        &quot;dbe&quot;
    Load        &quot;extmod&quot;
    Load        &quot;type1&quot;
    Load        &quot;freetype&quot;
    Load        &quot;glx&quot;
EndSection

Section &quot;ServerFlags&quot;
    Option      &quot;Xinerama&quot;          &quot;0&quot;
#    Option      &quot;AutoEnableDevices&quot; &quot;false&quot;
#    Option      &quot;AutoAddDevices&quot;    &quot;false&quot;
#    Option      &quot;AllowEmptyInput&quot;   &quot;true&quot;
#    Option      &quot;AutoAddGPU&quot;        &quot;false&quot;
EndSection

####################################
# Peripherique d'entree du poste 0 #
####################################
#Clavier du poste 0
Section &quot;InputDevice&quot;
    Identifier    &quot;clavier0&quot;
    Driver    &quot;evdev&quot;
    Option    &quot;Device&quot;     &quot;/dev/input/by-path/platform-i8042-serio-0-event-kbd&quot;
    Option    &quot;XkbLayout&quot;  &quot;fr&quot;
    Option    &quot;XkbVariant&quot; &quot;latin9&quot;
    Option    &quot;GrabDevice&quot; &quot;on&quot;
EndSection

#Sourie du poste 0
Section    &quot;InputDevice&quot;
    Identifier    &quot;sourie0&quot;
    Driver &quot;evdev&quot;
#    Option &quot;ZAxisMapping&quot; &quot;4 5&quot;
    Option &quot;Device&quot; &quot;/dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse&quot;
    Option &quot;GrabDevice&quot; &quot;on&quot;
EndSection

####################################
# Peripherique d'entree du poste 1 #
####################################
#Clavier du poste 1
Section &quot;InputDevice&quot;
    Identifier    &quot;clavier1&quot;
    Driver    &quot;evdev&quot;
    Option    &quot;Device&quot;     &quot;/dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd&quot;
    Option    &quot;XkbLayout&quot;  &quot;fr&quot;
    Option    &quot;XkbVariant&quot; &quot;bepo&quot;
    Option    &quot;GrabDevice&quot; &quot;on&quot;
EndSection

#Sourie du poste 1
Section &quot;InputDevice&quot;
    Identifier    &quot;sourie1&quot;
    Driver    &quot;evdev&quot;
#    Option    &quot;ZAxisMapping&quot; &quot;4 5&quot;
    Option    &quot;Device&quot; &quot;/dev/input/by-id/usb-1d57_Game_mouse-if01-event-mouse&quot;
    Option    &quot;GrabDevice&quot; &quot;on&quot;
EndSection

#######################################
# Carte graphique et ecran du poste 0 #
#######################################

Section &quot;Device&quot;
    Identifier     &quot;carteVideo0&quot;
    Driver         &quot;radeon&quot;
    VendorName     &quot;AMD/ATI&quot;
    BoardName      &quot;Radeon HD 6550D&quot;
    BusID          &quot;PCI:0:1:0&quot;
    Screen          0
    Option         &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
EndSection

Section &quot;Monitor&quot;
    Identifier     &quot;LCD28&quot;
    VendorName     &quot;Hanns.G&quot;
    ModelName      &quot;HSD Hanns.G HG281&quot;
    Option         &quot;PreferredMode&quot; &quot;1920x1200&quot;
EndSection

Section &quot;Screen&quot;
    Identifier     &quot;ecran0&quot;
    Device         &quot;carteVideo0&quot;
    Monitor        &quot;LCD28&quot;
    DefaultDepth    24
    Option         &quot;TwinView&quot; &quot;0&quot;
    Option         &quot;metamodes&quot; &quot;DFP: 1920x1200 +0+0&quot;
    SubSection     &quot;Display&quot;
        Depth       24
        Modes      &quot;1920x1200_60&quot;
    EndSubSection
EndSection

#######################################
# Carte graphique et ecran du poste 1 #
#######################################

Section &quot;Device&quot;
    Identifier     &quot;carteVideo1&quot;
    Driver         &quot;radeon&quot;
    VendorName     &quot;AMD/ATI&quot;
    BoardName      &quot;Radeon HD 6450/7450/8450 / R5 230 OEM&quot;
    BusID          &quot;PCI:1:0:0&quot;
    Screen         0 
    Option         &quot;Monitor-DVI-1&quot; &quot;Acer&quot;
EndSection

Section &quot;Monitor&quot;
    Identifier     &quot;LCD22&quot;
    VendorName     &quot;ACER&quot;
    ModelName      &quot;ACER B229w&quot;
    Option         &quot;PreferredMode&quot; &quot;1680x1050&quot;
EndSection

Section &quot;Screen&quot;
    Identifier     &quot;ecran1&quot;
    Device         &quot;carteVideo1&quot;
    Monitor        &quot;LCD22&quot;
    DefaultDepth    24
    Option         &quot;TwinView&quot; &quot;0&quot;
    Option         &quot;metamodes&quot; &quot;DFP: 1680x1050 +0+0&quot;
    SubSection     &quot;Display&quot;
        Depth       24
        Modes      &quot;1680x1050_60&quot;
    EndSubSection
EndSection
&lt;/pre&gt;

== Test de la configuration ==
Pour cela il vous suffit de vous mettre dans une console et de taper la commande suivante :
 X -layout &lt;mon layout&gt; -vt''X''

Ou le ''X'' doit être remplacer par un numéro de console libre, 8, 9, 10, 11 ou 12 en générale.
Vous devriez changer de console pour celle visé et voir un écran gris avec le curseur manipulable. Si c'est bien le cas c'est que votre configuration est bonne.

= Configuration de LightDM =

Ici rien de plus simple, il suffit de dire a lightDM de lancer un deuxième serveur X avec une config particulière, pour cela il faut modifier son fichier de configuration («/etc/lightdm/lightdm.conf»)

&lt;pre&gt;
[Seat:0]
xserver-command=/usr/bin/X
xserver-layout=poste0
xdg-seat=seat0

[Seat:1]
xserver-command=/usr/bin/X vt8
xserver-layout=poste1
xdg-seat=seat1
&lt;/pre&gt;

Certain tuto ajoute les options «sharevts» ou «keeptty». La première option me bloquait l'affichage sur l'interface graphique alors que les commandes passais bien sur un VT, quand au deuxième d'après la doc c'est utile pour le debug mais pas plus («Prevent the server from detaching its initial controlling terminal.»).
Du coup seul le siège principal (seat0) à accès aux VT (Ctrl + Maj + Fx).
L'option «xserver-layout» parle d'elle même et permet de sélectionner une config particulière dans un fichier de conf Xorg, sinon l'option «xserver-config» permet de sélectionner un fichier de conf particulier si on a choisi de séparer la configuration des X.
L'option «xdg-seat» est indispensable pour la suite de la configuration, il permet à systemd et logind de faire le lien entre le poste graphique et les droits a lui accorder.

Si tout s'est bien passé vous devriez voir apparaitre les 2 écran de connexion avec le clavier et sourie rattaché. Cependant il ne faut pas s'arrêter en si bon chemin et le système a encore besoin de quelques configurations.

= Configuration de Pulseaudio =

Par défaut «pulseaudio» se lance en espace utilisateur, cela veut dire que une fois que vous vous déconnecter de votre session votre PC ne peut plus émettre un son. Le fait que le serveur de son soie rataché à la connexion d'un utilisateur, empêche l'utilisation du son d'un second utilisateur, ce qui serais fort dommage dans notre cas. Donc nous allons changer cela pour que «pulseaudio» s'exécute en tant que daemon système (ne pas tenir compte du message d'avertissement qui vous le déconseillerais, nous n'avons pas le choix dans notre cas) et régler les droits utilisateurs pour que tous puisse accéder a ce daemon.

== Configuration des droits ==
Normalement vous devez déjà avoir les groupes &quot;pulse&quot; et &quot;pulse-access&quot; de créé sur votre machine.
* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot; 
usermod -aG pulse-access &lt;username&gt;
* On peut enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio 
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse
== Création du daemon système PulseAudio avec systemd ==
Bien que ce soit déconseillé de faire tourné pulseaudio en tant que daemon système, c'est le seul moyen pour que les 2 postes aient accès à la carte son en même temps.
Pour cela il faut légèrement modifier la configuration de pulseaudio.
Dans /etc/pulse il faut modifier 2 fichiers
daemon.conf
&lt;pre&gt;
...
daemonize = yes
...
local-server-type = system
...
&lt;/pre&gt;

client.conf
&lt;pre&gt;
...
autospawn = no
...
&lt;/pre&gt;

Enfin il faut créer le fichier /etc/systemd/system/pulseaudio.service
&lt;pre&gt;
[Unit]
Description=Pulseaudio sound server
Documentation=man:pulseaudio(1)
After=avahi-daemon.service network.target
Before=sound.target
Requires=dbus.socket
 
[Service]
Type=forking
BusName=org.pulseaudio.Server
ExecStart=/usr/bin/pulseaudio --system --disallow-exit --disallow-module-loading
ExecStop=/usr/bin/pulseaudio --kill
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
 
[Install]
WantedBy=multi-user.target
&lt;/pre&gt;

Et lancer la commandes suivante pour qu'il soit exécuter au démarrage :
 systemctl enable pulseaudio.service

Si vous voulez tester tout de suite le service il vous suffit de faire
 systemctl start pulseaudio.service

= Configuration systemd =

Il existe un soucis qui fait que seul le premier poste (seat0) est détecté par «systemd-logind» et du coup ça empêche certaines fonctionnalités de s'exécuter correctement. Par exemple le montage automatique des clée USB en cliquant sur l'icône qui apparait. Pour vérifier cela il faut vous connecter a 2 poste minimum et lancer la commande suivante :
 loginctl

Si vous voyez tous vous utilisateurs connecté sur leur siège tant mieux pour vous. Sinon il faut faire les manipulations suivantes :

== Rattachement du matériel ==
Tout d'abord faite la commande suivante, elle vous donne tous les matériels rattaché au premier poste et vous permettra de récupéré les chemins vers certains périphérique nécessaires.
 loginctl seat-status seat0

Ensuite faite un premier essai en rattachant manuellement certains périphériques, ici la carte graphique :
 loginctl attach seat1 /sys/devices/pci0000:00/0000:00:02.0/0000:01:00.0/drm/card1 
 loginctl attach seat1 /sys/devices/pci0000:00/0000:00:02.0/0000:01:00.0/graphics/fb1

Normalement en refaisant la commande «loginctl list-seats» vous devriez voir le nouveau «seat».
Repérer les chemins vers vers les périphérique de votre siège (clavier / sourie / carte son / carte graphique / … ), sachant que au minimum il nous faut la carte graphique.

=== Cas spéciale du «seat0» ===
Le «seat0» est spécial dans le sens ou il existera toujours et que tout périphérique lui est attaché par défaut, c'est le point de référence de «logind».

== Automatisation ==

Le fait d'attacher un périphérique a un «seat» créé automatiquement la règle udev (dans «/etc/udev/rules.d/») qui permet après une extinction de retrouver les réglages. Cependant ces règles sont basique et il faut les démultiplier pour prendre en compte tout un poste. Il peut être plus intéressant de les retoucher pour englober tout un poste si tout ses périphérique sont branchés sur un même concentrateur USB.
Pour cela les commandes suivantes vous seront utile :
 udevadm info -a -p &lt;chemin en /sys/… &gt;
Vous donneras toutes les informations sur un périphérique particulier et toute sa hiérarchie de connexion.
Au final cela m'a donner les règles suivantes
&lt;pre&gt;
# add master-of-seat tag to video cards
KERNEL==&quot;card[0-9]*&quot;, SUBSYSTEM==&quot;drm&quot;, TAG+=&quot;master-of-seat&quot;
KERNEL==&quot;fb[1-9]&quot;, SUBSYSTEM==&quot;graphics&quot;, TAG+=&quot;master-of-seat&quot;

#Carte graphique
TAG==&quot;seat&quot;, KERNEL==&quot;fb1&quot;, SUBSYSTEM==&quot;graphics&quot;, ATTR{virtual_size}==&quot;1680,1050&quot;, ENV{ID_SEAT}=&quot;seat1&quot;, TAG+=&quot;seat1&quot;
TAG==&quot;seat&quot;, KERNEL==&quot;card1&quot;, SUBSYSTEM==&quot;drm&quot;, ENV{ID_SEAT}=&quot;seat1&quot;, TAG+=&quot;seat1&quot;

#Clavier
TAG==&quot;seat&quot;, SUBSYSTEM==&quot;input&quot;, ATTR{name}==&quot;TrulyErgonomic.com Truly Ergonomic Computer Keyboard&quot;, ENV{ID_SEAT}=&quot;seat1&quot;, TAG+=&quot;seat1&quot;

#Sourie
TAG==&quot;seat&quot;, SUBSYSTEM==&quot;input&quot;, ATTR{name}==&quot;Game mouse&quot;, ENV{ID_SEAT}=&quot;seat1&quot;, TAG+=&quot;seat1&quot;
&lt;/pre&gt;

Ce n'est pas l'optimum mais suffisant pour ce que je voulais faire.
Le TAG «master-of-seat» ne semble pas indispensable mais est fortement conseillé sur au moins un périphérique par poste, il semble que ça permette à systemd de trouver un référent au nouveau poste. Si vous rattacher un concentrateur USB a un siège il sera exclusif a ce dernier, ce qui a ses avantages pour brancher de nouveau périphérique USB.

== Fermeture de session ==
Un autre problème est qu'il se peut que certains programmes ne se ferment pas correctement quand vous quittez votre session. Pour cela sur un autre poste que celui qui vient de se déconnecté il vous suffit de taper la commande suivante pour trouver les coupables : 
 loginctl session-status &lt;numéro de session visé&gt;

Dans mon cas il s'agissait de «gpg-agent» et de «gnome-keyring-daemon», comme je ne les utilisait pas je les ai simplement supprimés.
Ce n'est pas vraiment une solution et l'exécution d'un script lors de la déconnexion (param ligtdm) est surement préférable mais je n'en n'ai pas vraiment eu l'utilité pour l'instant.

= Prolbèmes possible =
== Je ne voie pas les clés USB branchées ==
Et oui c'est un soucis que je n'ai pas encore résolu, le hub USB sur lequelle est branché la clé appartient à l'un des 2 poste, donc seul l'un des deux est en mesure d'interagir avec.

== Le poste X ne peut éteindre le PC / monter une clée qui apparait sur le bureau ==
Cela veut dire qu'il n'est pas reconnu en tant que «seat» par le système et qu'il vous manque quelque chose. Vérifier les «seat» par 
 loginctl
et
 loginctl seat-status seatX

= Amélioration possible =

* Partage de concentrateur USB : dans mon cas c'est plus le partage de lecteur de carte, mais je n'ai pas encore trouver comment faire pour que 2 ou plus poste puisse accéder à un périphérique.
* Répartition des enceintes : Sur les carte son en général il y a 2 prise pour la sortie audio, il serait intéressant que pour 2 poste chacun ai une paire propre.
* Gérer le branchement a chaud des périphérique : Cela semble [http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org supporté depuis un moment] mais je n'ai pas encore trouvé pourquoi cela ne fonctionne pas ici.
* La convention semble vouloir que les poste autre que le «seat0» soit de la forme «seat-x», mais cela ne fonctionnait pas pour moi, et comme je n'y avais pas d'intérêt pour l'instant …

= Ressources =
* http://code.lexarcana.com/posts/simple-multiseat-setup-on-fedora-17.html
* http://code.lexarcana.com/posts/using-udev-to-configure-fedora-multi-seat-automatically.html
* https://wiki.ubuntu.com/MultiseatTeam/Instructions
* https://wiki.ubuntu.com/Multiseat
* https://wiki.archlinux.fr/Systemd/logind
* http://www.freedesktop.org/wiki/Software/systemd/multiseat/</text>
      <sha1>11qnedl4ai76097mob3fifftiasf1ya</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5903</id>
      <parentid>5900</parentid>
      <timestamp>2014-11-13T22:31:53Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <text xml:space="preserve" bytes="20571">= Intro =
Faire du multi-poste n'est pas quelque chose de naturel pour un particulier mais est très utilisé dans les bibliothèques ou université pour démultiplier le nombre de poste informatique disponible a moindre coût. Dans notre cas nous allons mettre en place la solution la plus répendu, pour cela il vous faut 1 PC, 1 carte graphique et un couple clavier+sourie par poste souhaité. Sachez qu'il est possible de réduire le nombre de carte graphique nécessaire en exploitant plusieurs des sortie disponible mais [[Multiposte_avec_une_carte_graphique la technique est plus délicate]] à mettre en place et a plus de désavantage.

= Configuration de X =
Par défaut le fichier de X («xorg.conf») n'est plus indispensable pour un poste de travail classique. Mais dans notre cas il est indispensable pour s'y retrouver. Vous avez le choix entre créé plusieurs fichiers de configuration distinct, un par poste. Ou en faire un unique qui comportera l'ensemble des configurations qui seront classé dans des «Layout» différent. Personnellement je vous conseille 1 seul fichier de conf pour 2 poste, mais au delà ça commence a devenir illisible donc de faire un fichier par poste.
Pour notre exemple nous allons configurer 2 poste dans un seul fichier de configuration.
Dans un premier temps nous allons définir les «Layout» que nous allons utilisés. Il regroupe l'ensemble de la configuration des poste, le «screen» (écran + carte graphique) et les périphérique d'entré (clavier / sourie).
&lt;pre&gt;
Section &quot;ServerLayout&quot;
  #L'identifiant qui nous permettra de dire à X d'utiliser cette configuration
    Identifier     &quot;poste0&quot;
  #Le premier «0» désigne l'écran, comme vous pouvez avoir plusieurs écran par carte/poste vous pouvez avoir des lignes supplémentaire avec un 1, 2 et ainsi de suite. «ecran0» désigne une section que l'on verra plus tard. Enfin les 2 autres «0» positionne l'écran suivant des coordonnée si plusieurs écran sont en jeux. 
    Screen      0  &quot;ecran0&quot; 0 0 
  #Désigne la section pour un périphérique d'entré, ici un clavier
    InputDevice    &quot;clavier0&quot; &quot;CoreKeyboard&quot; 
  #Désigne la section pour un périphérique d'entré, ici une sourie
    InputDevice    &quot;sourie0&quot; &quot;CorePointer&quot; 
EndSection


Section &quot;ServerLayout&quot;
    Identifier     &quot;poste1&quot;
    Screen      0  &quot;ecran1&quot; 0 0
    InputDevice    &quot;clavier1&quot; &quot;CoreKeyboard&quot;
    InputDevice    &quot;sourie1&quot; &quot;CorePointer&quot;
EndSection
&lt;/pre&gt;

Ensuite nous définissons les périphérique d'entrés (ici juste pour le poste 0). Pour identifier les périphériques matériel et leur point d'entré logiciel il vous suffit d'aller faire un tour dans «/dev/input/*», de faire un «cat» sur un des fichier présent et de généré des évènement clavier/sourie. Si votre «cat» vous sort quelque chose alors vous avez identifié le périphérique correspondant.
&lt;pre&gt;
####################################
# Peripherique d'entree du poste 0 #
####################################
#Clavier du poste 0
Section &quot;InputDevice&quot;
  #Identiant permettant au Layout de l'appeler
    Identifier    &quot;clavier0&quot; 
    Driver    &quot;evdev&quot;
  #Clavier branché sur un port PS/2, donc l'accès par «by-path» est toléré, mais il vaut mieux «by-id»
    Option    &quot;Device&quot;     &quot;/dev/input/by-path/platform-i8042-serio-0-event-kbd&quot; 
    Option    &quot;XkbLayout&quot;  &quot;fr&quot;
    Option    &quot;XkbVariant&quot; &quot;latin9&quot;
  #IMPORTANT, permet un accès exclusif au périphérique. Sans ça les serveurs X ajouteront automatiquement tous les périphérique disponible aux controle, et du coup toutes les sourie/clavier contrôleront tous les pointeurs.
    Option    &quot;GrabDevice&quot; &quot;on&quot; 
EndSection

#Sourie du poste 0
Section    &quot;InputDevice&quot;
    Identifier    &quot;sourie0&quot;
    Driver &quot;evdev&quot;
  #Sourie branché en USB et comme à chaque redémarrage le chemin peut se modifier (ou pas) il faut préféré l'identification par «by-id»
    Option &quot;Device&quot; &quot;/dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse&quot; 
    Option &quot;GrabDevice&quot; &quot;on&quot;
EndSection
&lt;/pre&gt;

Ensuite on définit la section «screen» qui est une agrégation d'une carte graphique et d'un écran.
&lt;pre&gt;
#######################################
# Carte graphique et ecran du poste 0 #
#######################################

Section &quot;Device&quot;
    Identifier     &quot;carteVideo0&quot;
    Driver         &quot;radeon&quot;
    VendorName     &quot;AMD/ATI&quot;
    BoardName      &quot;Radeon HD 6550D&quot;
  #Trouvable en faisant un «lspci», pour ici «00:01.0 VGA compatible controller» se trouvait dans la sortie de la commande.
    BusID          &quot;PCI:0:1:0&quot;
  #Définition du premier (et seul) écran
    Screen          0
  #Avec un «xrandr» vous pouvez savoir quel prise est utilisé pour connecter l'écran (DVI, HDMI, DP, VGA). Le «Monitor-» est une nécéssité de nommage et le «-0» représente la carte graphique utilisé, la première (donc «0») dans ce cas, mais pour le deuxième poste on pourra trouver «Monitor-DVI-1»
        Option         &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
EndSection

Section &quot;Monitor&quot;
    Identifier     &quot;LCD28&quot;
    VendorName     &quot;Hanns.G&quot;
    ModelName      &quot;HSD Hanns.G HG281&quot;
    Option         &quot;PreferredMode&quot; &quot;1920x1200&quot;
EndSection

# Section qui relie les 2 composants ensemble.
Section &quot;Screen&quot;
    Identifier     &quot;ecran0&quot;
    Device         &quot;carteVideo0&quot;
    Monitor        &quot;LCD28&quot;
    DefaultDepth    24
    Option         &quot;TwinView&quot; &quot;0&quot;
    Option         &quot;metamodes&quot; &quot;DFP: 1920x1200 +0+0&quot;
    SubSection     &quot;Display&quot;
        Depth       24
        Modes      &quot;1920x1200_60&quot;
    EndSubSection
EndSection
&lt;/pre&gt;

Donc au final on obtient un ficher tel que celui çi :
&lt;pre&gt;
#Configuration multi-poste

#############
# Serveur X #
#############

Section &quot;ServerLayout&quot;
    Identifier     &quot;poste0&quot;
    Screen      0  &quot;ecran0&quot; 0 0
    InputDevice    &quot;clavier0&quot; &quot;CoreKeyboard&quot;
    InputDevice    &quot;sourie0&quot; &quot;CorePointer&quot;
EndSection


Section &quot;ServerLayout&quot;
    Identifier     &quot;poste1&quot;
    Screen      0  &quot;ecran1&quot; 0 0
    InputDevice    &quot;clavier1&quot; &quot;CoreKeyboard&quot;
    InputDevice    &quot;sourie1&quot; &quot;CorePointer&quot;
EndSection

#Section &quot;Files&quot;
#    RgbPath         &quot;/usr/X11R6/lib/X11/rgb&quot;
#EndSection

Section &quot;Module&quot;
    Load        &quot;dbe&quot;
    Load        &quot;extmod&quot;
    Load        &quot;type1&quot;
    Load        &quot;freetype&quot;
    Load        &quot;glx&quot;
EndSection

Section &quot;ServerFlags&quot;
    Option      &quot;Xinerama&quot;          &quot;0&quot;
#    Option      &quot;AutoEnableDevices&quot; &quot;false&quot;
#    Option      &quot;AutoAddDevices&quot;    &quot;false&quot;
#    Option      &quot;AllowEmptyInput&quot;   &quot;true&quot;
#    Option      &quot;AutoAddGPU&quot;        &quot;false&quot;
EndSection

####################################
# Peripherique d'entree du poste 0 #
####################################
#Clavier du poste 0
Section &quot;InputDevice&quot;
    Identifier    &quot;clavier0&quot;
    Driver    &quot;evdev&quot;
    Option    &quot;Device&quot;     &quot;/dev/input/by-path/platform-i8042-serio-0-event-kbd&quot;
    Option    &quot;XkbLayout&quot;  &quot;fr&quot;
    Option    &quot;XkbVariant&quot; &quot;latin9&quot;
    Option    &quot;GrabDevice&quot; &quot;on&quot;
EndSection

#Sourie du poste 0
Section    &quot;InputDevice&quot;
    Identifier    &quot;sourie0&quot;
    Driver &quot;evdev&quot;
#    Option &quot;ZAxisMapping&quot; &quot;4 5&quot;
    Option &quot;Device&quot; &quot;/dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse&quot;
    Option &quot;GrabDevice&quot; &quot;on&quot;
EndSection

####################################
# Peripherique d'entree du poste 1 #
####################################
#Clavier du poste 1
Section &quot;InputDevice&quot;
    Identifier    &quot;clavier1&quot;
    Driver    &quot;evdev&quot;
    Option    &quot;Device&quot;     &quot;/dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd&quot;
    Option    &quot;XkbLayout&quot;  &quot;fr&quot;
    Option    &quot;XkbVariant&quot; &quot;bepo&quot;
    Option    &quot;GrabDevice&quot; &quot;on&quot;
EndSection

#Sourie du poste 1
Section &quot;InputDevice&quot;
    Identifier    &quot;sourie1&quot;
    Driver    &quot;evdev&quot;
#    Option    &quot;ZAxisMapping&quot; &quot;4 5&quot;
    Option    &quot;Device&quot; &quot;/dev/input/by-id/usb-1d57_Game_mouse-if01-event-mouse&quot;
    Option    &quot;GrabDevice&quot; &quot;on&quot;
EndSection

#######################################
# Carte graphique et ecran du poste 0 #
#######################################

Section &quot;Device&quot;
    Identifier     &quot;carteVideo0&quot;
    Driver         &quot;radeon&quot;
    VendorName     &quot;AMD/ATI&quot;
    BoardName      &quot;Radeon HD 6550D&quot;
    BusID          &quot;PCI:0:1:0&quot;
    Screen          0
    Option         &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
EndSection

Section &quot;Monitor&quot;
    Identifier     &quot;LCD28&quot;
    VendorName     &quot;Hanns.G&quot;
    ModelName      &quot;HSD Hanns.G HG281&quot;
    Option         &quot;PreferredMode&quot; &quot;1920x1200&quot;
EndSection

Section &quot;Screen&quot;
    Identifier     &quot;ecran0&quot;
    Device         &quot;carteVideo0&quot;
    Monitor        &quot;LCD28&quot;
    DefaultDepth    24
    Option         &quot;TwinView&quot; &quot;0&quot;
    Option         &quot;metamodes&quot; &quot;DFP: 1920x1200 +0+0&quot;
    SubSection     &quot;Display&quot;
        Depth       24
        Modes      &quot;1920x1200_60&quot;
    EndSubSection
EndSection

#######################################
# Carte graphique et ecran du poste 1 #
#######################################

Section &quot;Device&quot;
    Identifier     &quot;carteVideo1&quot;
    Driver         &quot;radeon&quot;
    VendorName     &quot;AMD/ATI&quot;
    BoardName      &quot;Radeon HD 6450/7450/8450 / R5 230 OEM&quot;
    BusID          &quot;PCI:1:0:0&quot;
    Screen         0 
    Option         &quot;Monitor-DVI-1&quot; &quot;Acer&quot;
EndSection

Section &quot;Monitor&quot;
    Identifier     &quot;LCD22&quot;
    VendorName     &quot;ACER&quot;
    ModelName      &quot;ACER B229w&quot;
    Option         &quot;PreferredMode&quot; &quot;1680x1050&quot;
EndSection

Section &quot;Screen&quot;
    Identifier     &quot;ecran1&quot;
    Device         &quot;carteVideo1&quot;
    Monitor        &quot;LCD22&quot;
    DefaultDepth    24
    Option         &quot;TwinView&quot; &quot;0&quot;
    Option         &quot;metamodes&quot; &quot;DFP: 1680x1050 +0+0&quot;
    SubSection     &quot;Display&quot;
        Depth       24
        Modes      &quot;1680x1050_60&quot;
    EndSubSection
EndSection
&lt;/pre&gt;

== Test de la configuration ==
Pour cela il vous suffit de vous mettre dans une console et de taper la commande suivante :
 X -layout &lt;mon layout&gt; -vt''X''

Ou le ''X'' doit être remplacer par un numéro de console libre, 8, 9, 10, 11 ou 12 en générale.
Vous devriez changer de console pour celle visé et voir un écran gris avec le curseur manipulable. Si c'est bien le cas c'est que votre configuration est bonne.

= Configuration de LightDM =

Ici rien de plus simple, il suffit de dire a lightDM de lancer un deuxième serveur X avec une config particulière, pour cela il faut modifier son fichier de configuration («/etc/lightdm/lightdm.conf»)

&lt;pre&gt;
[Seat:0]
xserver-command=/usr/bin/X
xserver-layout=poste0
xdg-seat=seat0

[Seat:1]
xserver-command=/usr/bin/X vt8
xserver-layout=poste1
xdg-seat=seat1
&lt;/pre&gt;

Certain tuto ajoute les options «sharevts» ou «keeptty». La première option me bloquait l'affichage sur l'interface graphique alors que les commandes passais bien sur un VT, quand au deuxième d'après la doc c'est utile pour le debug mais pas plus («Prevent the server from detaching its initial controlling terminal.»).
Du coup seul le siège principal (seat0) à accès aux VT (Ctrl + Maj + Fx).
L'option «xserver-layout» parle d'elle même et permet de sélectionner une config particulière dans un fichier de conf Xorg, sinon l'option «xserver-config» permet de sélectionner un fichier de conf particulier si on a choisi de séparer la configuration des X.
L'option «xdg-seat» est indispensable pour la suite de la configuration, il permet à systemd et logind de faire le lien entre le poste graphique et les droits a lui accorder.

Si tout s'est bien passé vous devriez voir apparaitre les 2 écran de connexion avec le clavier et sourie rattaché. Cependant il ne faut pas s'arrêter en si bon chemin et le système a encore besoin de quelques configurations.

= Configuration de Pulseaudio =

Par défaut «pulseaudio» se lance en espace utilisateur, cela veut dire que une fois que vous vous déconnecter de votre session votre PC ne peut plus émettre un son. Le fait que le serveur de son soie rataché à la connexion d'un utilisateur, empêche l'utilisation du son d'un second utilisateur, ce qui serais fort dommage dans notre cas. Donc nous allons changer cela pour que «pulseaudio» s'exécute en tant que daemon système (ne pas tenir compte du message d'avertissement qui vous le déconseillerais, nous n'avons pas le choix dans notre cas) et régler les droits utilisateurs pour que tous puisse accéder a ce daemon.

== Configuration des droits ==
Normalement vous devez déjà avoir les groupes &quot;pulse&quot; et &quot;pulse-access&quot; de créé sur votre machine.
* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot; 
usermod -aG pulse-access &lt;username&gt;
* On peut enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio 
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse
== Création du daemon système PulseAudio avec systemd ==
Bien que ce soit déconseillé de faire tourné pulseaudio en tant que daemon système, c'est le seul moyen pour que les 2 postes aient accès à la carte son en même temps.
Pour cela il faut légèrement modifier la configuration de pulseaudio.
Dans /etc/pulse il faut modifier 2 fichiers
daemon.conf
&lt;pre&gt;
...
daemonize = yes
...
local-server-type = system
...
&lt;/pre&gt;

client.conf
&lt;pre&gt;
...
autospawn = no
...
&lt;/pre&gt;

Enfin il faut créer le fichier /etc/systemd/system/pulseaudio.service
&lt;pre&gt;
[Unit]
Description=Pulseaudio sound server
Documentation=man:pulseaudio(1)
After=avahi-daemon.service network.target
Before=sound.target
Requires=dbus.socket
 
[Service]
Type=forking
BusName=org.pulseaudio.Server
ExecStart=/usr/bin/pulseaudio --system --disallow-exit --disallow-module-loading
ExecStop=/usr/bin/pulseaudio --kill
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
 
[Install]
WantedBy=multi-user.target
&lt;/pre&gt;

Et lancer la commandes suivante pour qu'il soit exécuter au démarrage :
 systemctl enable pulseaudio.service

Si vous voulez tester tout de suite le service il vous suffit de faire
 systemctl start pulseaudio.service

= Configuration systemd =

Il existe un soucis qui fait que seul le premier poste (seat0) est détecté par «systemd-logind» et du coup ça empêche certaines fonctionnalités de s'exécuter correctement. Par exemple le montage automatique des clée USB en cliquant sur l'icône qui apparait. Pour vérifier cela il faut vous connecter a 2 poste minimum et lancer la commande suivante :
 loginctl

Si vous voyez tous vous utilisateurs connecté sur leur siège tant mieux pour vous. Sinon il faut faire les manipulations suivantes :

== Rattachement du matériel ==
Tout d'abord faite la commande suivante, elle vous donne tous les matériels rattaché au premier poste et vous permettra de récupéré les chemins vers certains périphérique nécessaires.
 loginctl seat-status seat0

Ensuite faite un premier essai en rattachant manuellement certains périphériques, ici la carte graphique :
 loginctl attach seat1 /sys/devices/pci0000:00/0000:00:02.0/0000:01:00.0/drm/card1 
 loginctl attach seat1 /sys/devices/pci0000:00/0000:00:02.0/0000:01:00.0/graphics/fb1

Normalement en refaisant la commande «loginctl list-seats» vous devriez voir le nouveau «seat».
Repérer les chemins vers vers les périphérique de votre siège (clavier / sourie / carte son / carte graphique / … ), sachant que au minimum il nous faut la carte graphique.

=== Cas spéciale du «seat0» ===
Le «seat0» est spécial dans le sens ou il existera toujours et que tout périphérique lui est attaché par défaut, c'est le point de référence de «logind».

== Automatisation ==

Le fait d'attacher un périphérique a un «seat» créé automatiquement la règle udev (dans «/etc/udev/rules.d/») qui permet après une extinction de retrouver les réglages. Cependant ces règles sont basique et il faut les démultiplier pour prendre en compte tout un poste. Il peut être plus intéressant de les retoucher pour englober tout un poste si tout ses périphérique sont branchés sur un même concentrateur USB.
Pour cela les commandes suivantes vous seront utile :
 udevadm info -a -p &lt;chemin en /sys/… &gt;
Vous donneras toutes les informations sur un périphérique particulier et toute sa hiérarchie de connexion.
Au final cela m'a donner les règles suivantes
&lt;pre&gt;
# add master-of-seat tag to video cards
KERNEL==&quot;card[0-9]*&quot;, SUBSYSTEM==&quot;drm&quot;, TAG+=&quot;master-of-seat&quot;
KERNEL==&quot;fb[1-9]&quot;, SUBSYSTEM==&quot;graphics&quot;, TAG+=&quot;master-of-seat&quot;

#Carte graphique
TAG==&quot;seat&quot;, KERNEL==&quot;fb1&quot;, SUBSYSTEM==&quot;graphics&quot;, ATTR{virtual_size}==&quot;1680,1050&quot;, ENV{ID_SEAT}=&quot;seat1&quot;, TAG+=&quot;seat1&quot;
TAG==&quot;seat&quot;, KERNEL==&quot;card1&quot;, SUBSYSTEM==&quot;drm&quot;, ENV{ID_SEAT}=&quot;seat1&quot;, TAG+=&quot;seat1&quot;

#Clavier
TAG==&quot;seat&quot;, SUBSYSTEM==&quot;input&quot;, ATTR{name}==&quot;TrulyErgonomic.com Truly Ergonomic Computer Keyboard&quot;, ENV{ID_SEAT}=&quot;seat1&quot;, TAG+=&quot;seat1&quot;

#Sourie
TAG==&quot;seat&quot;, SUBSYSTEM==&quot;input&quot;, ATTR{name}==&quot;Game mouse&quot;, ENV{ID_SEAT}=&quot;seat1&quot;, TAG+=&quot;seat1&quot;
&lt;/pre&gt;

Ce n'est pas l'optimum mais suffisant pour ce que je voulais faire.
Le TAG «master-of-seat» ne semble pas indispensable mais est fortement conseillé sur au moins un périphérique par poste, il semble que ça permette à systemd de trouver un référent au nouveau poste. Si vous rattacher un concentrateur USB a un siège il sera exclusif a ce dernier, ce qui a ses avantages pour brancher de nouveau périphérique USB.

== Fermeture de session ==
Un autre problème est qu'il se peut que certains programmes ne se ferment pas correctement quand vous quittez votre session. Pour cela sur un autre poste que celui qui vient de se déconnecté il vous suffit de taper la commande suivante pour trouver les coupables : 
 loginctl session-status &lt;numéro de session visé&gt;

Dans mon cas il s'agissait de «gpg-agent» et de «gnome-keyring-daemon», comme je ne les utilisait pas je les ai simplement supprimés.
Ce n'est pas vraiment une solution et l'exécution d'un script lors de la déconnexion (param ligtdm) est surement préférable mais je n'en n'ai pas vraiment eu l'utilité pour l'instant.

= Prolbèmes possible =
== Je ne voie pas les clés USB branchées ==
Et oui c'est un soucis que je n'ai pas encore résolu, le hub USB sur lequelle est branché la clé appartient à l'un des 2 poste, donc seul l'un des deux est en mesure d'interagir avec.

== Le poste X ne peut éteindre le PC / monter une clée qui apparait sur le bureau ==
Cela veut dire qu'il n'est pas reconnu en tant que «seat» par le système et qu'il vous manque quelque chose. Vérifier les «seat» par 
 loginctl
et
 loginctl seat-status seatX

== Ma disposition de clavier n'est pas prise en compte ==
Il semble que la prise en compte d'une disposition autre que la standard du système ne soit pas correctement fait. En tout cas si la disposition est spécifié dans la section &quot;InputDevice&quot; comme définit plus haut. Heureusement pour nous il est possible de définir d'une autre manière une disposition pour un clavier. Il faut passer par une section &quot;InputClass&quot;. Au lieu de définir les options pour un clavier spécifique, on définit des option pour un type de clavier. Ce qui donne dans noter cas :
&lt;pre&gt;
Section &quot;InputClass&quot;
   Identifier   &quot;Truely&quot;
   MatchIsKeyboard &quot;True&quot;
   MatchProduct &quot;Truly Ergonomic Computer Keyboard&quot;
#   MatchVendor &quot;TrulyErgonomic.com&quot;
   Driver &quot;evdev&quot;
   Option    &quot;XkbLayout&quot;  &quot;fr&quot;
   Option    &quot;XkbVariant&quot; &quot;bepo&quot;
EndSection
&lt;/pre&gt;

La valeur a remplir dans le &quot;MatchVendor/Product&quot; est trouvable en faisant un &quot;lsusb -v | grep -e idProduct -e idVendor&quot;

= Amélioration possible =

* Partage de concentrateur USB : dans mon cas c'est plus le partage de lecteur de carte, mais je n'ai pas encore trouver comment faire pour que 2 ou plus poste puisse accéder à un périphérique.
* Répartition des enceintes : Sur les carte son en général il y a 2 prise pour la sortie audio, il serait intéressant que pour 2 poste chacun ai une paire propre.
* Gérer le branchement a chaud des périphérique : Cela semble [http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org supporté depuis un moment] mais je n'ai pas encore trouvé pourquoi cela ne fonctionne pas ici.
* La convention semble vouloir que les poste autre que le «seat0» soit de la forme «seat-x», mais cela ne fonctionnait pas pour moi, et comme je n'y avais pas d'intérêt pour l'instant …

= Ressources =
* http://code.lexarcana.com/posts/simple-multiseat-setup-on-fedora-17.html
* http://code.lexarcana.com/posts/using-udev-to-configure-fedora-multi-seat-automatically.html
* https://wiki.ubuntu.com/MultiseatTeam/Instructions
* https://wiki.ubuntu.com/Multiseat
* https://wiki.archlinux.fr/Systemd/logind
* http://www.freedesktop.org/wiki/Software/systemd/multiseat/</text>
      <sha1>d5243lokgolwxsoymulf5oo3yc3jc2q</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5904</id>
      <parentid>5903</parentid>
      <timestamp>2014-11-13T22:45:27Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <comment>/* Prolbèmes possible */</comment>
      <text xml:space="preserve" bytes="20573">= Intro =
Faire du multi-poste n'est pas quelque chose de naturel pour un particulier mais est très utilisé dans les bibliothèques ou université pour démultiplier le nombre de poste informatique disponible a moindre coût. Dans notre cas nous allons mettre en place la solution la plus répendu, pour cela il vous faut 1 PC, 1 carte graphique et un couple clavier+sourie par poste souhaité. Sachez qu'il est possible de réduire le nombre de carte graphique nécessaire en exploitant plusieurs des sortie disponible mais [[Multiposte_avec_une_carte_graphique la technique est plus délicate]] à mettre en place et a plus de désavantage.

= Configuration de X =
Par défaut le fichier de X («xorg.conf») n'est plus indispensable pour un poste de travail classique. Mais dans notre cas il est indispensable pour s'y retrouver. Vous avez le choix entre créé plusieurs fichiers de configuration distinct, un par poste. Ou en faire un unique qui comportera l'ensemble des configurations qui seront classé dans des «Layout» différent. Personnellement je vous conseille 1 seul fichier de conf pour 2 poste, mais au delà ça commence a devenir illisible donc de faire un fichier par poste.
Pour notre exemple nous allons configurer 2 poste dans un seul fichier de configuration.
Dans un premier temps nous allons définir les «Layout» que nous allons utilisés. Il regroupe l'ensemble de la configuration des poste, le «screen» (écran + carte graphique) et les périphérique d'entré (clavier / sourie).
&lt;pre&gt;
Section &quot;ServerLayout&quot;
  #L'identifiant qui nous permettra de dire à X d'utiliser cette configuration
    Identifier     &quot;poste0&quot;
  #Le premier «0» désigne l'écran, comme vous pouvez avoir plusieurs écran par carte/poste vous pouvez avoir des lignes supplémentaire avec un 1, 2 et ainsi de suite. «ecran0» désigne une section que l'on verra plus tard. Enfin les 2 autres «0» positionne l'écran suivant des coordonnée si plusieurs écran sont en jeux. 
    Screen      0  &quot;ecran0&quot; 0 0 
  #Désigne la section pour un périphérique d'entré, ici un clavier
    InputDevice    &quot;clavier0&quot; &quot;CoreKeyboard&quot; 
  #Désigne la section pour un périphérique d'entré, ici une sourie
    InputDevice    &quot;sourie0&quot; &quot;CorePointer&quot; 
EndSection


Section &quot;ServerLayout&quot;
    Identifier     &quot;poste1&quot;
    Screen      0  &quot;ecran1&quot; 0 0
    InputDevice    &quot;clavier1&quot; &quot;CoreKeyboard&quot;
    InputDevice    &quot;sourie1&quot; &quot;CorePointer&quot;
EndSection
&lt;/pre&gt;

Ensuite nous définissons les périphérique d'entrés (ici juste pour le poste 0). Pour identifier les périphériques matériel et leur point d'entré logiciel il vous suffit d'aller faire un tour dans «/dev/input/*», de faire un «cat» sur un des fichier présent et de généré des évènement clavier/sourie. Si votre «cat» vous sort quelque chose alors vous avez identifié le périphérique correspondant.
&lt;pre&gt;
####################################
# Peripherique d'entree du poste 0 #
####################################
#Clavier du poste 0
Section &quot;InputDevice&quot;
  #Identiant permettant au Layout de l'appeler
    Identifier    &quot;clavier0&quot; 
    Driver    &quot;evdev&quot;
  #Clavier branché sur un port PS/2, donc l'accès par «by-path» est toléré, mais il vaut mieux «by-id»
    Option    &quot;Device&quot;     &quot;/dev/input/by-path/platform-i8042-serio-0-event-kbd&quot; 
    Option    &quot;XkbLayout&quot;  &quot;fr&quot;
    Option    &quot;XkbVariant&quot; &quot;latin9&quot;
  #IMPORTANT, permet un accès exclusif au périphérique. Sans ça les serveurs X ajouteront automatiquement tous les périphérique disponible aux controle, et du coup toutes les sourie/clavier contrôleront tous les pointeurs.
    Option    &quot;GrabDevice&quot; &quot;on&quot; 
EndSection

#Sourie du poste 0
Section    &quot;InputDevice&quot;
    Identifier    &quot;sourie0&quot;
    Driver &quot;evdev&quot;
  #Sourie branché en USB et comme à chaque redémarrage le chemin peut se modifier (ou pas) il faut préféré l'identification par «by-id»
    Option &quot;Device&quot; &quot;/dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse&quot; 
    Option &quot;GrabDevice&quot; &quot;on&quot;
EndSection
&lt;/pre&gt;

Ensuite on définit la section «screen» qui est une agrégation d'une carte graphique et d'un écran.
&lt;pre&gt;
#######################################
# Carte graphique et ecran du poste 0 #
#######################################

Section &quot;Device&quot;
    Identifier     &quot;carteVideo0&quot;
    Driver         &quot;radeon&quot;
    VendorName     &quot;AMD/ATI&quot;
    BoardName      &quot;Radeon HD 6550D&quot;
  #Trouvable en faisant un «lspci», pour ici «00:01.0 VGA compatible controller» se trouvait dans la sortie de la commande.
    BusID          &quot;PCI:0:1:0&quot;
  #Définition du premier (et seul) écran
    Screen          0
  #Avec un «xrandr» vous pouvez savoir quel prise est utilisé pour connecter l'écran (DVI, HDMI, DP, VGA). Le «Monitor-» est une nécéssité de nommage et le «-0» représente la carte graphique utilisé, la première (donc «0») dans ce cas, mais pour le deuxième poste on pourra trouver «Monitor-DVI-1»
        Option         &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
EndSection

Section &quot;Monitor&quot;
    Identifier     &quot;LCD28&quot;
    VendorName     &quot;Hanns.G&quot;
    ModelName      &quot;HSD Hanns.G HG281&quot;
    Option         &quot;PreferredMode&quot; &quot;1920x1200&quot;
EndSection

# Section qui relie les 2 composants ensemble.
Section &quot;Screen&quot;
    Identifier     &quot;ecran0&quot;
    Device         &quot;carteVideo0&quot;
    Monitor        &quot;LCD28&quot;
    DefaultDepth    24
    Option         &quot;TwinView&quot; &quot;0&quot;
    Option         &quot;metamodes&quot; &quot;DFP: 1920x1200 +0+0&quot;
    SubSection     &quot;Display&quot;
        Depth       24
        Modes      &quot;1920x1200_60&quot;
    EndSubSection
EndSection
&lt;/pre&gt;

Donc au final on obtient un ficher tel que celui çi :
&lt;pre&gt;
#Configuration multi-poste

#############
# Serveur X #
#############

Section &quot;ServerLayout&quot;
    Identifier     &quot;poste0&quot;
    Screen      0  &quot;ecran0&quot; 0 0
    InputDevice    &quot;clavier0&quot; &quot;CoreKeyboard&quot;
    InputDevice    &quot;sourie0&quot; &quot;CorePointer&quot;
EndSection


Section &quot;ServerLayout&quot;
    Identifier     &quot;poste1&quot;
    Screen      0  &quot;ecran1&quot; 0 0
    InputDevice    &quot;clavier1&quot; &quot;CoreKeyboard&quot;
    InputDevice    &quot;sourie1&quot; &quot;CorePointer&quot;
EndSection

#Section &quot;Files&quot;
#    RgbPath         &quot;/usr/X11R6/lib/X11/rgb&quot;
#EndSection

Section &quot;Module&quot;
    Load        &quot;dbe&quot;
    Load        &quot;extmod&quot;
    Load        &quot;type1&quot;
    Load        &quot;freetype&quot;
    Load        &quot;glx&quot;
EndSection

Section &quot;ServerFlags&quot;
    Option      &quot;Xinerama&quot;          &quot;0&quot;
#    Option      &quot;AutoEnableDevices&quot; &quot;false&quot;
#    Option      &quot;AutoAddDevices&quot;    &quot;false&quot;
#    Option      &quot;AllowEmptyInput&quot;   &quot;true&quot;
#    Option      &quot;AutoAddGPU&quot;        &quot;false&quot;
EndSection

####################################
# Peripherique d'entree du poste 0 #
####################################
#Clavier du poste 0
Section &quot;InputDevice&quot;
    Identifier    &quot;clavier0&quot;
    Driver    &quot;evdev&quot;
    Option    &quot;Device&quot;     &quot;/dev/input/by-path/platform-i8042-serio-0-event-kbd&quot;
    Option    &quot;XkbLayout&quot;  &quot;fr&quot;
    Option    &quot;XkbVariant&quot; &quot;latin9&quot;
    Option    &quot;GrabDevice&quot; &quot;on&quot;
EndSection

#Sourie du poste 0
Section    &quot;InputDevice&quot;
    Identifier    &quot;sourie0&quot;
    Driver &quot;evdev&quot;
#    Option &quot;ZAxisMapping&quot; &quot;4 5&quot;
    Option &quot;Device&quot; &quot;/dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse&quot;
    Option &quot;GrabDevice&quot; &quot;on&quot;
EndSection

####################################
# Peripherique d'entree du poste 1 #
####################################
#Clavier du poste 1
Section &quot;InputDevice&quot;
    Identifier    &quot;clavier1&quot;
    Driver    &quot;evdev&quot;
    Option    &quot;Device&quot;     &quot;/dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd&quot;
    Option    &quot;XkbLayout&quot;  &quot;fr&quot;
    Option    &quot;XkbVariant&quot; &quot;bepo&quot;
    Option    &quot;GrabDevice&quot; &quot;on&quot;
EndSection

#Sourie du poste 1
Section &quot;InputDevice&quot;
    Identifier    &quot;sourie1&quot;
    Driver    &quot;evdev&quot;
#    Option    &quot;ZAxisMapping&quot; &quot;4 5&quot;
    Option    &quot;Device&quot; &quot;/dev/input/by-id/usb-1d57_Game_mouse-if01-event-mouse&quot;
    Option    &quot;GrabDevice&quot; &quot;on&quot;
EndSection

#######################################
# Carte graphique et ecran du poste 0 #
#######################################

Section &quot;Device&quot;
    Identifier     &quot;carteVideo0&quot;
    Driver         &quot;radeon&quot;
    VendorName     &quot;AMD/ATI&quot;
    BoardName      &quot;Radeon HD 6550D&quot;
    BusID          &quot;PCI:0:1:0&quot;
    Screen          0
    Option         &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
EndSection

Section &quot;Monitor&quot;
    Identifier     &quot;LCD28&quot;
    VendorName     &quot;Hanns.G&quot;
    ModelName      &quot;HSD Hanns.G HG281&quot;
    Option         &quot;PreferredMode&quot; &quot;1920x1200&quot;
EndSection

Section &quot;Screen&quot;
    Identifier     &quot;ecran0&quot;
    Device         &quot;carteVideo0&quot;
    Monitor        &quot;LCD28&quot;
    DefaultDepth    24
    Option         &quot;TwinView&quot; &quot;0&quot;
    Option         &quot;metamodes&quot; &quot;DFP: 1920x1200 +0+0&quot;
    SubSection     &quot;Display&quot;
        Depth       24
        Modes      &quot;1920x1200_60&quot;
    EndSubSection
EndSection

#######################################
# Carte graphique et ecran du poste 1 #
#######################################

Section &quot;Device&quot;
    Identifier     &quot;carteVideo1&quot;
    Driver         &quot;radeon&quot;
    VendorName     &quot;AMD/ATI&quot;
    BoardName      &quot;Radeon HD 6450/7450/8450 / R5 230 OEM&quot;
    BusID          &quot;PCI:1:0:0&quot;
    Screen         0 
    Option         &quot;Monitor-DVI-1&quot; &quot;Acer&quot;
EndSection

Section &quot;Monitor&quot;
    Identifier     &quot;LCD22&quot;
    VendorName     &quot;ACER&quot;
    ModelName      &quot;ACER B229w&quot;
    Option         &quot;PreferredMode&quot; &quot;1680x1050&quot;
EndSection

Section &quot;Screen&quot;
    Identifier     &quot;ecran1&quot;
    Device         &quot;carteVideo1&quot;
    Monitor        &quot;LCD22&quot;
    DefaultDepth    24
    Option         &quot;TwinView&quot; &quot;0&quot;
    Option         &quot;metamodes&quot; &quot;DFP: 1680x1050 +0+0&quot;
    SubSection     &quot;Display&quot;
        Depth       24
        Modes      &quot;1680x1050_60&quot;
    EndSubSection
EndSection
&lt;/pre&gt;

== Test de la configuration ==
Pour cela il vous suffit de vous mettre dans une console et de taper la commande suivante :
 X -layout &lt;mon layout&gt; -vt''X''

Ou le ''X'' doit être remplacer par un numéro de console libre, 8, 9, 10, 11 ou 12 en générale.
Vous devriez changer de console pour celle visé et voir un écran gris avec le curseur manipulable. Si c'est bien le cas c'est que votre configuration est bonne.

= Configuration de LightDM =

Ici rien de plus simple, il suffit de dire a lightDM de lancer un deuxième serveur X avec une config particulière, pour cela il faut modifier son fichier de configuration («/etc/lightdm/lightdm.conf»)

&lt;pre&gt;
[Seat:0]
xserver-command=/usr/bin/X
xserver-layout=poste0
xdg-seat=seat0

[Seat:1]
xserver-command=/usr/bin/X vt8
xserver-layout=poste1
xdg-seat=seat1
&lt;/pre&gt;

Certain tuto ajoute les options «sharevts» ou «keeptty». La première option me bloquait l'affichage sur l'interface graphique alors que les commandes passais bien sur un VT, quand au deuxième d'après la doc c'est utile pour le debug mais pas plus («Prevent the server from detaching its initial controlling terminal.»).
Du coup seul le siège principal (seat0) à accès aux VT (Ctrl + Maj + Fx).
L'option «xserver-layout» parle d'elle même et permet de sélectionner une config particulière dans un fichier de conf Xorg, sinon l'option «xserver-config» permet de sélectionner un fichier de conf particulier si on a choisi de séparer la configuration des X.
L'option «xdg-seat» est indispensable pour la suite de la configuration, il permet à systemd et logind de faire le lien entre le poste graphique et les droits a lui accorder.

Si tout s'est bien passé vous devriez voir apparaitre les 2 écran de connexion avec le clavier et sourie rattaché. Cependant il ne faut pas s'arrêter en si bon chemin et le système a encore besoin de quelques configurations.

= Configuration de Pulseaudio =

Par défaut «pulseaudio» se lance en espace utilisateur, cela veut dire que une fois que vous vous déconnecter de votre session votre PC ne peut plus émettre un son. Le fait que le serveur de son soie rataché à la connexion d'un utilisateur, empêche l'utilisation du son d'un second utilisateur, ce qui serais fort dommage dans notre cas. Donc nous allons changer cela pour que «pulseaudio» s'exécute en tant que daemon système (ne pas tenir compte du message d'avertissement qui vous le déconseillerais, nous n'avons pas le choix dans notre cas) et régler les droits utilisateurs pour que tous puisse accéder a ce daemon.

== Configuration des droits ==
Normalement vous devez déjà avoir les groupes &quot;pulse&quot; et &quot;pulse-access&quot; de créé sur votre machine.
* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot; 
usermod -aG pulse-access &lt;username&gt;
* On peut enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio 
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse
== Création du daemon système PulseAudio avec systemd ==
Bien que ce soit déconseillé de faire tourné pulseaudio en tant que daemon système, c'est le seul moyen pour que les 2 postes aient accès à la carte son en même temps.
Pour cela il faut légèrement modifier la configuration de pulseaudio.
Dans /etc/pulse il faut modifier 2 fichiers
daemon.conf
&lt;pre&gt;
...
daemonize = yes
...
local-server-type = system
...
&lt;/pre&gt;

client.conf
&lt;pre&gt;
...
autospawn = no
...
&lt;/pre&gt;

Enfin il faut créer le fichier /etc/systemd/system/pulseaudio.service
&lt;pre&gt;
[Unit]
Description=Pulseaudio sound server
Documentation=man:pulseaudio(1)
After=avahi-daemon.service network.target
Before=sound.target
Requires=dbus.socket
 
[Service]
Type=forking
BusName=org.pulseaudio.Server
ExecStart=/usr/bin/pulseaudio --system --disallow-exit --disallow-module-loading
ExecStop=/usr/bin/pulseaudio --kill
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
 
[Install]
WantedBy=multi-user.target
&lt;/pre&gt;

Et lancer la commandes suivante pour qu'il soit exécuter au démarrage :
 systemctl enable pulseaudio.service

Si vous voulez tester tout de suite le service il vous suffit de faire
 systemctl start pulseaudio.service

= Configuration systemd =

Il existe un soucis qui fait que seul le premier poste (seat0) est détecté par «systemd-logind» et du coup ça empêche certaines fonctionnalités de s'exécuter correctement. Par exemple le montage automatique des clée USB en cliquant sur l'icône qui apparait. Pour vérifier cela il faut vous connecter a 2 poste minimum et lancer la commande suivante :
 loginctl

Si vous voyez tous vous utilisateurs connecté sur leur siège tant mieux pour vous. Sinon il faut faire les manipulations suivantes :

== Rattachement du matériel ==
Tout d'abord faite la commande suivante, elle vous donne tous les matériels rattaché au premier poste et vous permettra de récupéré les chemins vers certains périphérique nécessaires.
 loginctl seat-status seat0

Ensuite faite un premier essai en rattachant manuellement certains périphériques, ici la carte graphique :
 loginctl attach seat1 /sys/devices/pci0000:00/0000:00:02.0/0000:01:00.0/drm/card1 
 loginctl attach seat1 /sys/devices/pci0000:00/0000:00:02.0/0000:01:00.0/graphics/fb1

Normalement en refaisant la commande «loginctl list-seats» vous devriez voir le nouveau «seat».
Repérer les chemins vers vers les périphérique de votre siège (clavier / sourie / carte son / carte graphique / … ), sachant que au minimum il nous faut la carte graphique.

=== Cas spéciale du «seat0» ===
Le «seat0» est spécial dans le sens ou il existera toujours et que tout périphérique lui est attaché par défaut, c'est le point de référence de «logind».

== Automatisation ==

Le fait d'attacher un périphérique a un «seat» créé automatiquement la règle udev (dans «/etc/udev/rules.d/») qui permet après une extinction de retrouver les réglages. Cependant ces règles sont basique et il faut les démultiplier pour prendre en compte tout un poste. Il peut être plus intéressant de les retoucher pour englober tout un poste si tout ses périphérique sont branchés sur un même concentrateur USB.
Pour cela les commandes suivantes vous seront utile :
 udevadm info -a -p &lt;chemin en /sys/… &gt;
Vous donneras toutes les informations sur un périphérique particulier et toute sa hiérarchie de connexion.
Au final cela m'a donner les règles suivantes
&lt;pre&gt;
# add master-of-seat tag to video cards
KERNEL==&quot;card[0-9]*&quot;, SUBSYSTEM==&quot;drm&quot;, TAG+=&quot;master-of-seat&quot;
KERNEL==&quot;fb[1-9]&quot;, SUBSYSTEM==&quot;graphics&quot;, TAG+=&quot;master-of-seat&quot;

#Carte graphique
TAG==&quot;seat&quot;, KERNEL==&quot;fb1&quot;, SUBSYSTEM==&quot;graphics&quot;, ATTR{virtual_size}==&quot;1680,1050&quot;, ENV{ID_SEAT}=&quot;seat1&quot;, TAG+=&quot;seat1&quot;
TAG==&quot;seat&quot;, KERNEL==&quot;card1&quot;, SUBSYSTEM==&quot;drm&quot;, ENV{ID_SEAT}=&quot;seat1&quot;, TAG+=&quot;seat1&quot;

#Clavier
TAG==&quot;seat&quot;, SUBSYSTEM==&quot;input&quot;, ATTR{name}==&quot;TrulyErgonomic.com Truly Ergonomic Computer Keyboard&quot;, ENV{ID_SEAT}=&quot;seat1&quot;, TAG+=&quot;seat1&quot;

#Sourie
TAG==&quot;seat&quot;, SUBSYSTEM==&quot;input&quot;, ATTR{name}==&quot;Game mouse&quot;, ENV{ID_SEAT}=&quot;seat1&quot;, TAG+=&quot;seat1&quot;
&lt;/pre&gt;

Ce n'est pas l'optimum mais suffisant pour ce que je voulais faire.
Le TAG «master-of-seat» ne semble pas indispensable mais est fortement conseillé sur au moins un périphérique par poste, il semble que ça permette à systemd de trouver un référent au nouveau poste. Si vous rattacher un concentrateur USB a un siège il sera exclusif a ce dernier, ce qui a ses avantages pour brancher de nouveau périphérique USB.

== Fermeture de session ==
Un autre problème est qu'il se peut que certains programmes ne se ferment pas correctement quand vous quittez votre session. Pour cela sur un autre poste que celui qui vient de se déconnecté il vous suffit de taper la commande suivante pour trouver les coupables : 
 loginctl session-status &lt;numéro de session visé&gt;

Dans mon cas il s'agissait de «gpg-agent» et de «gnome-keyring-daemon», comme je ne les utilisait pas je les ai simplement supprimés.
Ce n'est pas vraiment une solution et l'exécution d'un script lors de la déconnexion (param ligtdm) est surement préférable mais je n'en n'ai pas vraiment eu l'utilité pour l'instant.

= Problèmes possibles =
== Je ne voie pas les clés USB branchées ==
Et oui c'est un soucis que je n'ai pas encore résolu, le hub USB sur le quelle est branché la clé appartient à l'un des 2 poste, donc seul l'un des deux est en mesure d'interagir avec.

== Le poste X ne peut éteindre le PC / monter une clée qui apparait sur le bureau ==
Cela veut dire qu'il n'est pas reconnu en tant que «seat» par le système et qu'il vous manque quelque chose. Vérifier les «seat» par 
 loginctl
et
 loginctl seat-status seatX

== Ma disposition de clavier n'est pas prise en compte ==
Il semble que la prise en compte d'une disposition autre que la standard du système ne soit pas correctement fait. En tout cas si la disposition est spécifié dans la section &quot;InputDevice&quot; comme définit plus haut. Heureusement pour nous il est possible de définir d'une autre manière une disposition pour un clavier. Il faut passer par une section &quot;InputClass&quot;. Au lieu de définir les options pour un clavier spécifique, on définit des option pour un type de clavier. Ce qui donne dans noter cas :
&lt;pre&gt;
Section &quot;InputClass&quot;
   Identifier   &quot;Truely&quot;
   MatchIsKeyboard &quot;True&quot;
   MatchProduct &quot;Truly Ergonomic Computer Keyboard&quot;
#   MatchVendor &quot;TrulyErgonomic.com&quot;
   Driver &quot;evdev&quot;
   Option    &quot;XkbLayout&quot;  &quot;fr&quot;
   Option    &quot;XkbVariant&quot; &quot;bepo&quot;
EndSection
&lt;/pre&gt;

La valeur a remplir dans le &quot;MatchVendor/Product&quot; est trouvable en faisant un &quot;lsusb -v | grep -e idProduct -e idVendor&quot;

= Amélioration possible =

* Partage de concentrateur USB : dans mon cas c'est plus le partage de lecteur de carte, mais je n'ai pas encore trouver comment faire pour que 2 ou plus poste puisse accéder à un périphérique.
* Répartition des enceintes : Sur les carte son en général il y a 2 prise pour la sortie audio, il serait intéressant que pour 2 poste chacun ai une paire propre.
* Gérer le branchement a chaud des périphérique : Cela semble [http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org supporté depuis un moment] mais je n'ai pas encore trouvé pourquoi cela ne fonctionne pas ici.
* La convention semble vouloir que les poste autre que le «seat0» soit de la forme «seat-x», mais cela ne fonctionnait pas pour moi, et comme je n'y avais pas d'intérêt pour l'instant …

= Ressources =
* http://code.lexarcana.com/posts/simple-multiseat-setup-on-fedora-17.html
* http://code.lexarcana.com/posts/using-udev-to-configure-fedora-multi-seat-automatically.html
* https://wiki.ubuntu.com/MultiseatTeam/Instructions
* https://wiki.ubuntu.com/Multiseat
* https://wiki.archlinux.fr/Systemd/logind
* http://www.freedesktop.org/wiki/Software/systemd/multiseat/</text>
      <sha1>kzdk7uh4ql258qebjvt7imca0syhnwe</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5905</id>
      <parentid>5904</parentid>
      <timestamp>2014-11-14T19:21:21Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="20573">= Intro =
Faire du multi-poste n'est pas quelque chose de naturel pour un particulier mais est très utilisé dans les bibliothèques ou université pour démultiplier le nombre de poste informatique disponible a moindre coût. Dans notre cas nous allons mettre en place la solution la plus répendu, pour cela il vous faut 1 PC, 1 carte graphique et un couple clavier+sourie par poste souhaité. Sachez qu'il est possible de réduire le nombre de carte graphique nécessaire en exploitant plusieurs des sortie disponible mais [[Multiposte_avec_une_carte_graphique la technique est plus délicate]] à mettre en place et a plus de désavantage.

= Configuration de X =
Par défaut le fichier de X («xorg.conf») n'est plus indispensable pour un poste de travail classique. Mais dans notre cas il est indispensable pour s'y retrouver. Vous avez le choix entre créé plusieurs fichiers de configuration distinct, un par poste. Ou en faire un unique qui comportera l'ensemble des configurations qui seront classé dans des «Layout» différent. Personnellement je vous conseille 1 seul fichier de conf pour 2 poste, mais au delà ça commence a devenir illisible donc de faire un fichier par poste.
Pour notre exemple nous allons configurer 2 poste dans un seul fichier de configuration.
Dans un premier temps nous allons définir les «Layout» que nous allons utilisés. Il regroupe l'ensemble de la configuration des poste, le «screen» (écran + carte graphique) et les périphérique d'entré (clavier / sourie).
&lt;pre&gt;
Section &quot;ServerLayout&quot;
  #L'identifiant qui nous permettra de dire à X d'utiliser cette configuration
    Identifier     &quot;poste0&quot;
  #Le premier «0» désigne l'écran, comme vous pouvez avoir plusieurs écran par carte/poste vous pouvez avoir des lignes supplémentaire avec un 1, 2 et ainsi de suite. «ecran0» désigne une section que l'on verra plus tard. Enfin les 2 autres «0» positionne l'écran suivant des coordonnée si plusieurs écran sont en jeux. 
    Screen      0  &quot;ecran0&quot; 0 0 
  #Désigne la section pour un périphérique d'entré, ici un clavier
    InputDevice    &quot;clavier0&quot; &quot;CoreKeyboard&quot; 
  #Désigne la section pour un périphérique d'entré, ici une sourie
    InputDevice    &quot;sourie0&quot; &quot;CorePointer&quot; 
EndSection


Section &quot;ServerLayout&quot;
    Identifier     &quot;poste1&quot;
    Screen      0  &quot;ecran1&quot; 0 0
    InputDevice    &quot;clavier1&quot; &quot;CoreKeyboard&quot;
    InputDevice    &quot;sourie1&quot; &quot;CorePointer&quot;
EndSection
&lt;/pre&gt;

Ensuite nous définissons les périphérique d'entrés (ici juste pour le poste 0). Pour identifier les périphériques matériel et leur point d'entré logiciel il vous suffit d'aller faire un tour dans «/dev/input/*», de faire un «cat» sur un des fichier présent et de généré des évènement clavier/sourie. Si votre «cat» vous sort quelque chose alors vous avez identifié le périphérique correspondant.
&lt;pre&gt;
####################################
# Peripherique d'entree du poste 0 #
####################################
#Clavier du poste 0
Section &quot;InputDevice&quot;
  #Identiant permettant au Layout de l'appeler
    Identifier    &quot;clavier0&quot; 
    Driver    &quot;evdev&quot;
  #Clavier branché sur un port PS/2, donc l'accès par «by-path» est toléré, mais il vaut mieux «by-id»
    Option    &quot;Device&quot;     &quot;/dev/input/by-path/platform-i8042-serio-0-event-kbd&quot; 
    Option    &quot;XkbLayout&quot;  &quot;fr&quot;
    Option    &quot;XkbVariant&quot; &quot;latin9&quot;
  #IMPORTANT, permet un accès exclusif au périphérique. Sans ça les serveurs X ajouteront automatiquement tous les périphérique disponible aux controle, et du coup toutes les sourie/clavier contrôleront tous les pointeurs.
    Option    &quot;GrabDevice&quot; &quot;on&quot; 
EndSection

#Sourie du poste 0
Section    &quot;InputDevice&quot;
    Identifier    &quot;sourie0&quot;
    Driver &quot;evdev&quot;
  #Sourie branché en USB et comme à chaque redémarrage le chemin peut se modifier (ou pas) il faut préféré l'identification par «by-id»
    Option &quot;Device&quot; &quot;/dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse&quot; 
    Option &quot;GrabDevice&quot; &quot;on&quot;
EndSection
&lt;/pre&gt;

Ensuite on définit la section «screen» qui est une agrégation d'une carte graphique et d'un écran.
&lt;pre&gt;
#######################################
# Carte graphique et ecran du poste 0 #
#######################################

Section &quot;Device&quot;
    Identifier     &quot;carteVideo0&quot;
    Driver         &quot;radeon&quot;
    VendorName     &quot;AMD/ATI&quot;
    BoardName      &quot;Radeon HD 6550D&quot;
  #Trouvable en faisant un «lspci», pour ici «00:01.0 VGA compatible controller» se trouvait dans la sortie de la commande.
    BusID          &quot;PCI:0:1:0&quot;
  #Définition du premier (et seul) écran
    Screen          0
  #Avec un «xrandr» vous pouvez savoir quel prise est utilisé pour connecter l'écran (DVI, HDMI, DP, VGA). Le «Monitor-» est une nécéssité de nommage et le «-0» représente la carte graphique utilisé, la première (donc «0») dans ce cas, mais pour le deuxième poste on pourra trouver «Monitor-DVI-1»
        Option         &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
EndSection

Section &quot;Monitor&quot;
    Identifier     &quot;LCD28&quot;
    VendorName     &quot;Hanns.G&quot;
    ModelName      &quot;HSD Hanns.G HG281&quot;
    Option         &quot;PreferredMode&quot; &quot;1920x1200&quot;
EndSection

# Section qui relie les 2 composants ensemble.
Section &quot;Screen&quot;
    Identifier     &quot;ecran0&quot;
    Device         &quot;carteVideo0&quot;
    Monitor        &quot;LCD28&quot;
    DefaultDepth    24
    Option         &quot;TwinView&quot; &quot;0&quot;
    Option         &quot;metamodes&quot; &quot;DFP: 1920x1200 +0+0&quot;
    SubSection     &quot;Display&quot;
        Depth       24
        Modes      &quot;1920x1200_60&quot;
    EndSubSection
EndSection
&lt;/pre&gt;

Donc au final on obtient un ficher tel que celui çi :
&lt;pre&gt;
#Configuration multi-poste

#############
# Serveur X #
#############

Section &quot;ServerLayout&quot;
    Identifier     &quot;poste0&quot;
    Screen      0  &quot;ecran0&quot; 0 0
    InputDevice    &quot;clavier0&quot; &quot;CoreKeyboard&quot;
    InputDevice    &quot;sourie0&quot; &quot;CorePointer&quot;
EndSection


Section &quot;ServerLayout&quot;
    Identifier     &quot;poste1&quot;
    Screen      0  &quot;ecran1&quot; 0 0
    InputDevice    &quot;clavier1&quot; &quot;CoreKeyboard&quot;
    InputDevice    &quot;sourie1&quot; &quot;CorePointer&quot;
EndSection

#Section &quot;Files&quot;
#    RgbPath         &quot;/usr/X11R6/lib/X11/rgb&quot;
#EndSection

Section &quot;Module&quot;
    Load        &quot;dbe&quot;
    Load        &quot;extmod&quot;
    Load        &quot;type1&quot;
    Load        &quot;freetype&quot;
    Load        &quot;glx&quot;
EndSection

Section &quot;ServerFlags&quot;
    Option      &quot;Xinerama&quot;          &quot;0&quot;
#    Option      &quot;AutoEnableDevices&quot; &quot;false&quot;
#    Option      &quot;AutoAddDevices&quot;    &quot;false&quot;
#    Option      &quot;AllowEmptyInput&quot;   &quot;true&quot;
#    Option      &quot;AutoAddGPU&quot;        &quot;false&quot;
EndSection

####################################
# Peripherique d'entree du poste 0 #
####################################
#Clavier du poste 0
Section &quot;InputDevice&quot;
    Identifier    &quot;clavier0&quot;
    Driver    &quot;evdev&quot;
    Option    &quot;Device&quot;     &quot;/dev/input/by-path/platform-i8042-serio-0-event-kbd&quot;
    Option    &quot;XkbLayout&quot;  &quot;fr&quot;
    Option    &quot;XkbVariant&quot; &quot;latin9&quot;
    Option    &quot;GrabDevice&quot; &quot;on&quot;
EndSection

#Sourie du poste 0
Section    &quot;InputDevice&quot;
    Identifier    &quot;sourie0&quot;
    Driver &quot;evdev&quot;
#    Option &quot;ZAxisMapping&quot; &quot;4 5&quot;
    Option &quot;Device&quot; &quot;/dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse&quot;
    Option &quot;GrabDevice&quot; &quot;on&quot;
EndSection

####################################
# Peripherique d'entree du poste 1 #
####################################
#Clavier du poste 1
Section &quot;InputDevice&quot;
    Identifier    &quot;clavier1&quot;
    Driver    &quot;evdev&quot;
    Option    &quot;Device&quot;     &quot;/dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd&quot;
    Option    &quot;XkbLayout&quot;  &quot;fr&quot;
    Option    &quot;XkbVariant&quot; &quot;bepo&quot;
    Option    &quot;GrabDevice&quot; &quot;on&quot;
EndSection

#Sourie du poste 1
Section &quot;InputDevice&quot;
    Identifier    &quot;sourie1&quot;
    Driver    &quot;evdev&quot;
#    Option    &quot;ZAxisMapping&quot; &quot;4 5&quot;
    Option    &quot;Device&quot; &quot;/dev/input/by-id/usb-1d57_Game_mouse-if01-event-mouse&quot;
    Option    &quot;GrabDevice&quot; &quot;on&quot;
EndSection

#######################################
# Carte graphique et ecran du poste 0 #
#######################################

Section &quot;Device&quot;
    Identifier     &quot;carteVideo0&quot;
    Driver         &quot;radeon&quot;
    VendorName     &quot;AMD/ATI&quot;
    BoardName      &quot;Radeon HD 6550D&quot;
    BusID          &quot;PCI:0:1:0&quot;
    Screen          0
    Option         &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
EndSection

Section &quot;Monitor&quot;
    Identifier     &quot;LCD28&quot;
    VendorName     &quot;Hanns.G&quot;
    ModelName      &quot;HSD Hanns.G HG281&quot;
    Option         &quot;PreferredMode&quot; &quot;1920x1200&quot;
EndSection

Section &quot;Screen&quot;
    Identifier     &quot;ecran0&quot;
    Device         &quot;carteVideo0&quot;
    Monitor        &quot;LCD28&quot;
    DefaultDepth    24
    Option         &quot;TwinView&quot; &quot;0&quot;
    Option         &quot;metamodes&quot; &quot;DFP: 1920x1200 +0+0&quot;
    SubSection     &quot;Display&quot;
        Depth       24
        Modes      &quot;1920x1200_60&quot;
    EndSubSection
EndSection

#######################################
# Carte graphique et ecran du poste 1 #
#######################################

Section &quot;Device&quot;
    Identifier     &quot;carteVideo1&quot;
    Driver         &quot;radeon&quot;
    VendorName     &quot;AMD/ATI&quot;
    BoardName      &quot;Radeon HD 6450/7450/8450 / R5 230 OEM&quot;
    BusID          &quot;PCI:1:0:0&quot;
    Screen         0 
    Option         &quot;Monitor-DVI-1&quot; &quot;Acer&quot;
EndSection

Section &quot;Monitor&quot;
    Identifier     &quot;LCD22&quot;
    VendorName     &quot;ACER&quot;
    ModelName      &quot;ACER B229w&quot;
    Option         &quot;PreferredMode&quot; &quot;1680x1050&quot;
EndSection

Section &quot;Screen&quot;
    Identifier     &quot;ecran1&quot;
    Device         &quot;carteVideo1&quot;
    Monitor        &quot;LCD22&quot;
    DefaultDepth    24
    Option         &quot;TwinView&quot; &quot;0&quot;
    Option         &quot;metamodes&quot; &quot;DFP: 1680x1050 +0+0&quot;
    SubSection     &quot;Display&quot;
        Depth       24
        Modes      &quot;1680x1050_60&quot;
    EndSubSection
EndSection
&lt;/pre&gt;

== Test de la configuration ==
Pour cela il vous suffit de vous mettre dans une console et de taper la commande suivante :
 X -layout &lt;mon layout&gt; -vt''X''

Ou le ''X'' doit être remplacer par un numéro de console libre, 8, 9, 10, 11 ou 12 en générale.
Vous devriez changer de console pour celle visé et voir un écran gris avec le curseur manipulable. Si c'est bien le cas c'est que votre configuration est bonne.

= Configuration de LightDM =

Ici rien de plus simple, il suffit de dire a lightDM de lancer un deuxième serveur X avec une config particulière, pour cela il faut modifier son fichier de configuration («/etc/lightdm/lightdm.conf»)

&lt;pre&gt;
[Seat:0]
xserver-command=/usr/bin/X
xserver-layout=poste0
xdg-seat=seat0

[Seat:1]
xserver-command=/usr/bin/X vt8
xserver-layout=poste1
xdg-seat=seat1
&lt;/pre&gt;

Certain tuto ajoute les options «sharevts» ou «keeptty». La première option me bloquait l'affichage sur l'interface graphique alors que les commandes passais bien sur un VT, quand au deuxième d'après la doc c'est utile pour le debug mais pas plus («Prevent the server from detaching its initial controlling terminal.»).
Du coup seul le siège principal (seat0) à accès aux VT (Ctrl + Maj + Fx).
L'option «xserver-layout» parle d'elle même et permet de sélectionner une config particulière dans un fichier de conf Xorg, sinon l'option «xserver-config» permet de sélectionner un fichier de conf particulier si on a choisi de séparer la configuration des X.
L'option «xdg-seat» est indispensable pour la suite de la configuration, il permet à systemd et logind de faire le lien entre le poste graphique et les droits a lui accorder.

Si tout s'est bien passé vous devriez voir apparaitre les 2 écran de connexion avec le clavier et sourie rattaché. Cependant il ne faut pas s'arrêter en si bon chemin et le système a encore besoin de quelques configurations.

= Configuration de Pulseaudio =

Par défaut «pulseaudio» se lance en espace utilisateur, cela veut dire que une fois que vous vous déconnecter de votre session votre PC ne peut plus émettre un son. Le fait que le serveur de son soie rataché à la connexion d'un utilisateur, empêche l'utilisation du son d'un second utilisateur, ce qui serais fort dommage dans notre cas. Donc nous allons changer cela pour que «pulseaudio» s'exécute en tant que daemon système (ne pas tenir compte du message d'avertissement qui vous le déconseillerais, nous n'avons pas le choix dans notre cas) et régler les droits utilisateurs pour que tous puisse accéder a ce daemon.

== Configuration des droits ==
Normalement vous devez déjà avoir les groupes &quot;pulse&quot; et &quot;pulse-access&quot; de créé sur votre machine.
* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot; 
usermod -aG pulse-access &lt;username&gt;
* On peut enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio 
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse
== Création du daemon système PulseAudio avec systemd ==
Bien que ce soit déconseillé de faire tourné pulseaudio en tant que daemon système, c'est le seul moyen pour que les 2 postes aient accès à la carte son en même temps.
Pour cela il faut légèrement modifier la configuration de pulseaudio.
Dans /etc/pulse il faut modifier 2 fichiers
daemon.conf
&lt;pre&gt;
...
daemonize = yes
...
local-server-type = system
...
&lt;/pre&gt;

client.conf
&lt;pre&gt;
...
autospawn = no
...
&lt;/pre&gt;

Enfin il faut créer le fichier /etc/systemd/system/pulseaudio.service
&lt;pre&gt;
[Unit]
Description=Pulseaudio sound server
Documentation=man:pulseaudio(1)
After=avahi-daemon.service network.target
Before=sound.target
Requires=dbus.socket
 
[Service]
Type=forking
BusName=org.pulseaudio.Server
ExecStart=/usr/bin/pulseaudio --system --disallow-exit --disallow-module-loading
ExecStop=/usr/bin/pulseaudio --kill
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
 
[Install]
WantedBy=multi-user.target
&lt;/pre&gt;

Et lancer la commandes suivante pour qu'il soit exécuter au démarrage :
 systemctl enable pulseaudio.service

Si vous voulez tester tout de suite le service il vous suffit de faire
 systemctl start pulseaudio.service

= Configuration systemd =

Il existe un soucis qui fait que seul le premier poste (seat0) est détecté par «systemd-logind» et du coup ça empêche certaines fonctionnalités de s'exécuter correctement. Par exemple le montage automatique des clée USB en cliquant sur l'icône qui apparait. Pour vérifier cela il faut vous connecter a 2 poste minimum et lancer la commande suivante :
 loginctl

Si vous voyez tous vous utilisateurs connecté sur leur siège tant mieux pour vous. Sinon il faut faire les manipulations suivantes :

== Rattachement du matériel ==
Tout d'abord faite la commande suivante, elle vous donne tous les matériels rattaché au premier poste et vous permettra de récupéré les chemins vers certains périphérique nécessaires.
 loginctl seat-status seat0

Ensuite faite un premier essai en rattachant manuellement certains périphériques, ici la carte graphique :
 loginctl attach seat1 /sys/devices/pci0000:00/0000:00:02.0/0000:01:00.0/drm/card1 
 loginctl attach seat1 /sys/devices/pci0000:00/0000:00:02.0/0000:01:00.0/graphics/fb1

Normalement en refaisant la commande «loginctl list-seats» vous devriez voir le nouveau «seat».
Repérer les chemins vers vers les périphérique de votre siège (clavier / sourie / carte son / carte graphique / … ), sachant que au minimum il nous faut la carte graphique.

=== Cas spéciale du «seat0» ===
Le «seat0» est spécial dans le sens ou il existera toujours et que tout périphérique lui est attaché par défaut, c'est le point de référence de «logind».

== Automatisation ==

Le fait d'attacher un périphérique a un «seat» créé automatiquement la règle udev (dans «/etc/udev/rules.d/») qui permet après une extinction de retrouver les réglages. Cependant ces règles sont basique et il faut les démultiplier pour prendre en compte tout un poste. Il peut être plus intéressant de les retoucher pour englober tout un poste si tout ses périphérique sont branchés sur un même concentrateur USB.
Pour cela les commandes suivantes vous seront utile :
 udevadm info -a -p &lt;chemin en /sys/… &gt;
Vous donneras toutes les informations sur un périphérique particulier et toute sa hiérarchie de connexion.
Au final cela m'a donner les règles suivantes
&lt;pre&gt;
# add master-of-seat tag to video cards
KERNEL==&quot;card[0-9]*&quot;, SUBSYSTEM==&quot;drm&quot;, TAG+=&quot;master-of-seat&quot;
KERNEL==&quot;fb[1-9]&quot;, SUBSYSTEM==&quot;graphics&quot;, TAG+=&quot;master-of-seat&quot;

#Carte graphique
TAG==&quot;seat&quot;, KERNEL==&quot;fb1&quot;, SUBSYSTEM==&quot;graphics&quot;, ATTR{virtual_size}==&quot;1680,1050&quot;, ENV{ID_SEAT}=&quot;seat1&quot;, TAG+=&quot;seat1&quot;
TAG==&quot;seat&quot;, KERNEL==&quot;card1&quot;, SUBSYSTEM==&quot;drm&quot;, ENV{ID_SEAT}=&quot;seat1&quot;, TAG+=&quot;seat1&quot;

#Clavier
TAG==&quot;seat&quot;, SUBSYSTEM==&quot;input&quot;, ATTR{name}==&quot;TrulyErgonomic.com Truly Ergonomic Computer Keyboard&quot;, ENV{ID_SEAT}=&quot;seat1&quot;, TAG+=&quot;seat1&quot;

#Sourie
TAG==&quot;seat&quot;, SUBSYSTEM==&quot;input&quot;, ATTR{name}==&quot;Game mouse&quot;, ENV{ID_SEAT}=&quot;seat1&quot;, TAG+=&quot;seat1&quot;
&lt;/pre&gt;

Ce n'est pas l'optimum mais suffisant pour ce que je voulais faire.
Le TAG «master-of-seat» ne semble pas indispensable mais est fortement conseillé sur au moins un périphérique par poste, il semble que ça permette à systemd de trouver un référent au nouveau poste. Si vous rattacher un concentrateur USB a un siège il sera exclusif a ce dernier, ce qui a ses avantages pour brancher de nouveau périphérique USB.

== Fermeture de session ==
Un autre problème est qu'il se peut que certains programmes ne se ferment pas correctement quand vous quittez votre session. Pour cela sur un autre poste que celui qui vient de se déconnecté il vous suffit de taper la commande suivante pour trouver les coupables : 
 loginctl session-status &lt;numéro de session visé&gt;

Dans mon cas il s'agissait de «gpg-agent» et de «gnome-keyring-daemon», comme je ne les utilisait pas je les ai simplement supprimés.
Ce n'est pas vraiment une solution et l'exécution d'un script lors de la déconnexion (param ligtdm) est surement préférable mais je n'en n'ai pas vraiment eu l'utilité pour l'instant.

= Problèmes possibles =
== Je ne vois pas les clés USB branchées ==
Et oui c'est un souci que je n'ai pas encore résolu, le hub USB sur lequel est branché la clé appartient à l'un des deux postes, donc seul l'un des deux est en mesure d'interagir avec.

== Le poste X ne peut éteindre le PC / monter une clée qui apparait sur le bureau ==
Cela veut dire qu'il n'est pas reconnu en tant que «seat» par le système et qu'il vous manque quelque chose. Vérifier les «seat» par 
 loginctl
et
 loginctl seat-status seatX

== Ma disposition de clavier n'est pas prise en compte ==
Il semble que la prise en compte d'une disposition autre que la standard du système ne soit pas correctement fait. En tout cas si la disposition est spécifié dans la section &quot;InputDevice&quot; comme définit plus haut. Heureusement pour nous il est possible de définir d'une autre manière une disposition pour un clavier. Il faut passer par une section &quot;InputClass&quot;. Au lieu de définir les options pour un clavier spécifique, on définit des option pour un type de clavier. Ce qui donne dans noter cas :
&lt;pre&gt;
Section &quot;InputClass&quot;
   Identifier   &quot;Truely&quot;
   MatchIsKeyboard &quot;True&quot;
   MatchProduct &quot;Truly Ergonomic Computer Keyboard&quot;
#   MatchVendor &quot;TrulyErgonomic.com&quot;
   Driver &quot;evdev&quot;
   Option    &quot;XkbLayout&quot;  &quot;fr&quot;
   Option    &quot;XkbVariant&quot; &quot;bepo&quot;
EndSection
&lt;/pre&gt;

La valeur a remplir dans le &quot;MatchVendor/Product&quot; est trouvable en faisant un &quot;lsusb -v | grep -e idProduct -e idVendor&quot;

= Amélioration possible =

* Partage de concentrateur USB : dans mon cas c'est plus le partage de lecteur de carte, mais je n'ai pas encore trouver comment faire pour que 2 ou plus poste puisse accéder à un périphérique.
* Répartition des enceintes : Sur les carte son en général il y a 2 prise pour la sortie audio, il serait intéressant que pour 2 poste chacun ai une paire propre.
* Gérer le branchement a chaud des périphérique : Cela semble [http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org supporté depuis un moment] mais je n'ai pas encore trouvé pourquoi cela ne fonctionne pas ici.
* La convention semble vouloir que les poste autre que le «seat0» soit de la forme «seat-x», mais cela ne fonctionnait pas pour moi, et comme je n'y avais pas d'intérêt pour l'instant …

= Ressources =
* http://code.lexarcana.com/posts/simple-multiseat-setup-on-fedora-17.html
* http://code.lexarcana.com/posts/using-udev-to-configure-fedora-multi-seat-automatically.html
* https://wiki.ubuntu.com/MultiseatTeam/Instructions
* https://wiki.ubuntu.com/Multiseat
* https://wiki.archlinux.fr/Systemd/logind
* http://www.freedesktop.org/wiki/Software/systemd/multiseat/</text>
      <sha1>ivo9n4hkpzhvatuoukfynt0fz96jccg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5906</id>
      <parentid>5905</parentid>
      <timestamp>2014-11-25T23:02:31Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <comment>/* Problèmes possibles */</comment>
      <text xml:space="preserve" bytes="21607">= Intro =
Faire du multi-poste n'est pas quelque chose de naturel pour un particulier mais est très utilisé dans les bibliothèques ou université pour démultiplier le nombre de poste informatique disponible a moindre coût. Dans notre cas nous allons mettre en place la solution la plus répendu, pour cela il vous faut 1 PC, 1 carte graphique et un couple clavier+sourie par poste souhaité. Sachez qu'il est possible de réduire le nombre de carte graphique nécessaire en exploitant plusieurs des sortie disponible mais [[Multiposte_avec_une_carte_graphique la technique est plus délicate]] à mettre en place et a plus de désavantage.

= Configuration de X =
Par défaut le fichier de X («xorg.conf») n'est plus indispensable pour un poste de travail classique. Mais dans notre cas il est indispensable pour s'y retrouver. Vous avez le choix entre créé plusieurs fichiers de configuration distinct, un par poste. Ou en faire un unique qui comportera l'ensemble des configurations qui seront classé dans des «Layout» différent. Personnellement je vous conseille 1 seul fichier de conf pour 2 poste, mais au delà ça commence a devenir illisible donc de faire un fichier par poste.
Pour notre exemple nous allons configurer 2 poste dans un seul fichier de configuration.
Dans un premier temps nous allons définir les «Layout» que nous allons utilisés. Il regroupe l'ensemble de la configuration des poste, le «screen» (écran + carte graphique) et les périphérique d'entré (clavier / sourie).
&lt;pre&gt;
Section &quot;ServerLayout&quot;
  #L'identifiant qui nous permettra de dire à X d'utiliser cette configuration
    Identifier     &quot;poste0&quot;
  #Le premier «0» désigne l'écran, comme vous pouvez avoir plusieurs écran par carte/poste vous pouvez avoir des lignes supplémentaire avec un 1, 2 et ainsi de suite. «ecran0» désigne une section que l'on verra plus tard. Enfin les 2 autres «0» positionne l'écran suivant des coordonnée si plusieurs écran sont en jeux. 
    Screen      0  &quot;ecran0&quot; 0 0 
  #Désigne la section pour un périphérique d'entré, ici un clavier
    InputDevice    &quot;clavier0&quot; &quot;CoreKeyboard&quot; 
  #Désigne la section pour un périphérique d'entré, ici une sourie
    InputDevice    &quot;sourie0&quot; &quot;CorePointer&quot; 
EndSection


Section &quot;ServerLayout&quot;
    Identifier     &quot;poste1&quot;
    Screen      0  &quot;ecran1&quot; 0 0
    InputDevice    &quot;clavier1&quot; &quot;CoreKeyboard&quot;
    InputDevice    &quot;sourie1&quot; &quot;CorePointer&quot;
EndSection
&lt;/pre&gt;

Ensuite nous définissons les périphérique d'entrés (ici juste pour le poste 0). Pour identifier les périphériques matériel et leur point d'entré logiciel il vous suffit d'aller faire un tour dans «/dev/input/*», de faire un «cat» sur un des fichier présent et de généré des évènement clavier/sourie. Si votre «cat» vous sort quelque chose alors vous avez identifié le périphérique correspondant.
&lt;pre&gt;
####################################
# Peripherique d'entree du poste 0 #
####################################
#Clavier du poste 0
Section &quot;InputDevice&quot;
  #Identiant permettant au Layout de l'appeler
    Identifier    &quot;clavier0&quot; 
    Driver    &quot;evdev&quot;
  #Clavier branché sur un port PS/2, donc l'accès par «by-path» est toléré, mais il vaut mieux «by-id»
    Option    &quot;Device&quot;     &quot;/dev/input/by-path/platform-i8042-serio-0-event-kbd&quot; 
    Option    &quot;XkbLayout&quot;  &quot;fr&quot;
    Option    &quot;XkbVariant&quot; &quot;latin9&quot;
  #IMPORTANT, permet un accès exclusif au périphérique. Sans ça les serveurs X ajouteront automatiquement tous les périphérique disponible aux controle, et du coup toutes les sourie/clavier contrôleront tous les pointeurs.
    Option    &quot;GrabDevice&quot; &quot;on&quot; 
EndSection

#Sourie du poste 0
Section    &quot;InputDevice&quot;
    Identifier    &quot;sourie0&quot;
    Driver &quot;evdev&quot;
  #Sourie branché en USB et comme à chaque redémarrage le chemin peut se modifier (ou pas) il faut préféré l'identification par «by-id»
    Option &quot;Device&quot; &quot;/dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse&quot; 
    Option &quot;GrabDevice&quot; &quot;on&quot;
EndSection
&lt;/pre&gt;

Ensuite on définit la section «screen» qui est une agrégation d'une carte graphique et d'un écran.
&lt;pre&gt;
#######################################
# Carte graphique et ecran du poste 0 #
#######################################

Section &quot;Device&quot;
    Identifier     &quot;carteVideo0&quot;
    Driver         &quot;radeon&quot;
    VendorName     &quot;AMD/ATI&quot;
    BoardName      &quot;Radeon HD 6550D&quot;
  #Trouvable en faisant un «lspci», pour ici «00:01.0 VGA compatible controller» se trouvait dans la sortie de la commande.
    BusID          &quot;PCI:0:1:0&quot;
  #Définition du premier (et seul) écran
    Screen          0
  #Avec un «xrandr» vous pouvez savoir quel prise est utilisé pour connecter l'écran (DVI, HDMI, DP, VGA). Le «Monitor-» est une nécéssité de nommage et le «-0» représente la carte graphique utilisé, la première (donc «0») dans ce cas, mais pour le deuxième poste on pourra trouver «Monitor-DVI-1»
        Option         &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
EndSection

Section &quot;Monitor&quot;
    Identifier     &quot;LCD28&quot;
    VendorName     &quot;Hanns.G&quot;
    ModelName      &quot;HSD Hanns.G HG281&quot;
    Option         &quot;PreferredMode&quot; &quot;1920x1200&quot;
EndSection

# Section qui relie les 2 composants ensemble.
Section &quot;Screen&quot;
    Identifier     &quot;ecran0&quot;
    Device         &quot;carteVideo0&quot;
    Monitor        &quot;LCD28&quot;
    DefaultDepth    24
    Option         &quot;TwinView&quot; &quot;0&quot;
    Option         &quot;metamodes&quot; &quot;DFP: 1920x1200 +0+0&quot;
    SubSection     &quot;Display&quot;
        Depth       24
        Modes      &quot;1920x1200_60&quot;
    EndSubSection
EndSection
&lt;/pre&gt;

Donc au final on obtient un ficher tel que celui çi :
&lt;pre&gt;
#Configuration multi-poste

#############
# Serveur X #
#############

Section &quot;ServerLayout&quot;
    Identifier     &quot;poste0&quot;
    Screen      0  &quot;ecran0&quot; 0 0
    InputDevice    &quot;clavier0&quot; &quot;CoreKeyboard&quot;
    InputDevice    &quot;sourie0&quot; &quot;CorePointer&quot;
EndSection


Section &quot;ServerLayout&quot;
    Identifier     &quot;poste1&quot;
    Screen      0  &quot;ecran1&quot; 0 0
    InputDevice    &quot;clavier1&quot; &quot;CoreKeyboard&quot;
    InputDevice    &quot;sourie1&quot; &quot;CorePointer&quot;
EndSection

#Section &quot;Files&quot;
#    RgbPath         &quot;/usr/X11R6/lib/X11/rgb&quot;
#EndSection

Section &quot;Module&quot;
    Load        &quot;dbe&quot;
    Load        &quot;extmod&quot;
    Load        &quot;type1&quot;
    Load        &quot;freetype&quot;
    Load        &quot;glx&quot;
EndSection

Section &quot;ServerFlags&quot;
    Option      &quot;Xinerama&quot;          &quot;0&quot;
#    Option      &quot;AutoEnableDevices&quot; &quot;false&quot;
#    Option      &quot;AutoAddDevices&quot;    &quot;false&quot;
#    Option      &quot;AllowEmptyInput&quot;   &quot;true&quot;
#    Option      &quot;AutoAddGPU&quot;        &quot;false&quot;
EndSection

####################################
# Peripherique d'entree du poste 0 #
####################################
#Clavier du poste 0
Section &quot;InputDevice&quot;
    Identifier    &quot;clavier0&quot;
    Driver    &quot;evdev&quot;
    Option    &quot;Device&quot;     &quot;/dev/input/by-path/platform-i8042-serio-0-event-kbd&quot;
    Option    &quot;XkbLayout&quot;  &quot;fr&quot;
    Option    &quot;XkbVariant&quot; &quot;latin9&quot;
    Option    &quot;GrabDevice&quot; &quot;on&quot;
EndSection

#Sourie du poste 0
Section    &quot;InputDevice&quot;
    Identifier    &quot;sourie0&quot;
    Driver &quot;evdev&quot;
#    Option &quot;ZAxisMapping&quot; &quot;4 5&quot;
    Option &quot;Device&quot; &quot;/dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse&quot;
    Option &quot;GrabDevice&quot; &quot;on&quot;
EndSection

####################################
# Peripherique d'entree du poste 1 #
####################################
#Clavier du poste 1
Section &quot;InputDevice&quot;
    Identifier    &quot;clavier1&quot;
    Driver    &quot;evdev&quot;
    Option    &quot;Device&quot;     &quot;/dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd&quot;
    Option    &quot;XkbLayout&quot;  &quot;fr&quot;
    Option    &quot;XkbVariant&quot; &quot;bepo&quot;
    Option    &quot;GrabDevice&quot; &quot;on&quot;
EndSection

#Sourie du poste 1
Section &quot;InputDevice&quot;
    Identifier    &quot;sourie1&quot;
    Driver    &quot;evdev&quot;
#    Option    &quot;ZAxisMapping&quot; &quot;4 5&quot;
    Option    &quot;Device&quot; &quot;/dev/input/by-id/usb-1d57_Game_mouse-if01-event-mouse&quot;
    Option    &quot;GrabDevice&quot; &quot;on&quot;
EndSection

#######################################
# Carte graphique et ecran du poste 0 #
#######################################

Section &quot;Device&quot;
    Identifier     &quot;carteVideo0&quot;
    Driver         &quot;radeon&quot;
    VendorName     &quot;AMD/ATI&quot;
    BoardName      &quot;Radeon HD 6550D&quot;
    BusID          &quot;PCI:0:1:0&quot;
    Screen          0
    Option         &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
EndSection

Section &quot;Monitor&quot;
    Identifier     &quot;LCD28&quot;
    VendorName     &quot;Hanns.G&quot;
    ModelName      &quot;HSD Hanns.G HG281&quot;
    Option         &quot;PreferredMode&quot; &quot;1920x1200&quot;
EndSection

Section &quot;Screen&quot;
    Identifier     &quot;ecran0&quot;
    Device         &quot;carteVideo0&quot;
    Monitor        &quot;LCD28&quot;
    DefaultDepth    24
    Option         &quot;TwinView&quot; &quot;0&quot;
    Option         &quot;metamodes&quot; &quot;DFP: 1920x1200 +0+0&quot;
    SubSection     &quot;Display&quot;
        Depth       24
        Modes      &quot;1920x1200_60&quot;
    EndSubSection
EndSection

#######################################
# Carte graphique et ecran du poste 1 #
#######################################

Section &quot;Device&quot;
    Identifier     &quot;carteVideo1&quot;
    Driver         &quot;radeon&quot;
    VendorName     &quot;AMD/ATI&quot;
    BoardName      &quot;Radeon HD 6450/7450/8450 / R5 230 OEM&quot;
    BusID          &quot;PCI:1:0:0&quot;
    Screen         0 
    Option         &quot;Monitor-DVI-1&quot; &quot;Acer&quot;
EndSection

Section &quot;Monitor&quot;
    Identifier     &quot;LCD22&quot;
    VendorName     &quot;ACER&quot;
    ModelName      &quot;ACER B229w&quot;
    Option         &quot;PreferredMode&quot; &quot;1680x1050&quot;
EndSection

Section &quot;Screen&quot;
    Identifier     &quot;ecran1&quot;
    Device         &quot;carteVideo1&quot;
    Monitor        &quot;LCD22&quot;
    DefaultDepth    24
    Option         &quot;TwinView&quot; &quot;0&quot;
    Option         &quot;metamodes&quot; &quot;DFP: 1680x1050 +0+0&quot;
    SubSection     &quot;Display&quot;
        Depth       24
        Modes      &quot;1680x1050_60&quot;
    EndSubSection
EndSection
&lt;/pre&gt;

== Test de la configuration ==
Pour cela il vous suffit de vous mettre dans une console et de taper la commande suivante :
 X -layout &lt;mon layout&gt; -vt''X''

Ou le ''X'' doit être remplacer par un numéro de console libre, 8, 9, 10, 11 ou 12 en générale.
Vous devriez changer de console pour celle visé et voir un écran gris avec le curseur manipulable. Si c'est bien le cas c'est que votre configuration est bonne.

= Configuration de LightDM =

Ici rien de plus simple, il suffit de dire a lightDM de lancer un deuxième serveur X avec une config particulière, pour cela il faut modifier son fichier de configuration («/etc/lightdm/lightdm.conf»)

&lt;pre&gt;
[Seat:0]
xserver-command=/usr/bin/X
xserver-layout=poste0
xdg-seat=seat0

[Seat:1]
xserver-command=/usr/bin/X vt8
xserver-layout=poste1
xdg-seat=seat1
&lt;/pre&gt;

Certain tuto ajoute les options «sharevts» ou «keeptty». La première option me bloquait l'affichage sur l'interface graphique alors que les commandes passais bien sur un VT, quand au deuxième d'après la doc c'est utile pour le debug mais pas plus («Prevent the server from detaching its initial controlling terminal.»).
Du coup seul le siège principal (seat0) à accès aux VT (Ctrl + Maj + Fx).
L'option «xserver-layout» parle d'elle même et permet de sélectionner une config particulière dans un fichier de conf Xorg, sinon l'option «xserver-config» permet de sélectionner un fichier de conf particulier si on a choisi de séparer la configuration des X.
L'option «xdg-seat» est indispensable pour la suite de la configuration, il permet à systemd et logind de faire le lien entre le poste graphique et les droits a lui accorder.

Si tout s'est bien passé vous devriez voir apparaitre les 2 écran de connexion avec le clavier et sourie rattaché. Cependant il ne faut pas s'arrêter en si bon chemin et le système a encore besoin de quelques configurations.

= Configuration de Pulseaudio =

Par défaut «pulseaudio» se lance en espace utilisateur, cela veut dire que une fois que vous vous déconnecter de votre session votre PC ne peut plus émettre un son. Le fait que le serveur de son soie rataché à la connexion d'un utilisateur, empêche l'utilisation du son d'un second utilisateur, ce qui serais fort dommage dans notre cas. Donc nous allons changer cela pour que «pulseaudio» s'exécute en tant que daemon système (ne pas tenir compte du message d'avertissement qui vous le déconseillerais, nous n'avons pas le choix dans notre cas) et régler les droits utilisateurs pour que tous puisse accéder a ce daemon.

== Configuration des droits ==
Normalement vous devez déjà avoir les groupes &quot;pulse&quot; et &quot;pulse-access&quot; de créé sur votre machine.
* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot; 
usermod -aG pulse-access &lt;username&gt;
* On peut enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio 
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse
== Création du daemon système PulseAudio avec systemd ==
Bien que ce soit déconseillé de faire tourné pulseaudio en tant que daemon système, c'est le seul moyen pour que les 2 postes aient accès à la carte son en même temps.
Pour cela il faut légèrement modifier la configuration de pulseaudio.
Dans /etc/pulse il faut modifier 2 fichiers
daemon.conf
&lt;pre&gt;
...
daemonize = yes
...
local-server-type = system
...
&lt;/pre&gt;

client.conf
&lt;pre&gt;
...
autospawn = no
...
&lt;/pre&gt;

Enfin il faut créer le fichier /etc/systemd/system/pulseaudio.service
&lt;pre&gt;
[Unit]
Description=Pulseaudio sound server
Documentation=man:pulseaudio(1)
After=avahi-daemon.service network.target
Before=sound.target
Requires=dbus.socket
 
[Service]
Type=forking
BusName=org.pulseaudio.Server
ExecStart=/usr/bin/pulseaudio --system --disallow-exit --disallow-module-loading
ExecStop=/usr/bin/pulseaudio --kill
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
 
[Install]
WantedBy=multi-user.target
&lt;/pre&gt;

Et lancer la commandes suivante pour qu'il soit exécuter au démarrage :
 systemctl enable pulseaudio.service

Si vous voulez tester tout de suite le service il vous suffit de faire
 systemctl start pulseaudio.service

= Configuration systemd =

Il existe un soucis qui fait que seul le premier poste (seat0) est détecté par «systemd-logind» et du coup ça empêche certaines fonctionnalités de s'exécuter correctement. Par exemple le montage automatique des clée USB en cliquant sur l'icône qui apparait. Pour vérifier cela il faut vous connecter a 2 poste minimum et lancer la commande suivante :
 loginctl

Si vous voyez tous vous utilisateurs connecté sur leur siège tant mieux pour vous. Sinon il faut faire les manipulations suivantes :

== Rattachement du matériel ==
Tout d'abord faite la commande suivante, elle vous donne tous les matériels rattaché au premier poste et vous permettra de récupéré les chemins vers certains périphérique nécessaires.
 loginctl seat-status seat0

Ensuite faite un premier essai en rattachant manuellement certains périphériques, ici la carte graphique :
 loginctl attach seat1 /sys/devices/pci0000:00/0000:00:02.0/0000:01:00.0/drm/card1 
 loginctl attach seat1 /sys/devices/pci0000:00/0000:00:02.0/0000:01:00.0/graphics/fb1

Normalement en refaisant la commande «loginctl list-seats» vous devriez voir le nouveau «seat».
Repérer les chemins vers vers les périphérique de votre siège (clavier / sourie / carte son / carte graphique / … ), sachant que au minimum il nous faut la carte graphique.

=== Cas spéciale du «seat0» ===
Le «seat0» est spécial dans le sens ou il existera toujours et que tout périphérique lui est attaché par défaut, c'est le point de référence de «logind».

== Automatisation ==

Le fait d'attacher un périphérique a un «seat» créé automatiquement la règle udev (dans «/etc/udev/rules.d/») qui permet après une extinction de retrouver les réglages. Cependant ces règles sont basique et il faut les démultiplier pour prendre en compte tout un poste. Il peut être plus intéressant de les retoucher pour englober tout un poste si tout ses périphérique sont branchés sur un même concentrateur USB.
Pour cela les commandes suivantes vous seront utile :
 udevadm info -a -p &lt;chemin en /sys/… &gt;
Vous donneras toutes les informations sur un périphérique particulier et toute sa hiérarchie de connexion.
Au final cela m'a donner les règles suivantes
&lt;pre&gt;
# add master-of-seat tag to video cards
KERNEL==&quot;card[0-9]*&quot;, SUBSYSTEM==&quot;drm&quot;, TAG+=&quot;master-of-seat&quot;
KERNEL==&quot;fb[1-9]&quot;, SUBSYSTEM==&quot;graphics&quot;, TAG+=&quot;master-of-seat&quot;

#Carte graphique
TAG==&quot;seat&quot;, KERNEL==&quot;fb1&quot;, SUBSYSTEM==&quot;graphics&quot;, ATTR{virtual_size}==&quot;1680,1050&quot;, ENV{ID_SEAT}=&quot;seat1&quot;, TAG+=&quot;seat1&quot;
TAG==&quot;seat&quot;, KERNEL==&quot;card1&quot;, SUBSYSTEM==&quot;drm&quot;, ENV{ID_SEAT}=&quot;seat1&quot;, TAG+=&quot;seat1&quot;

#Clavier
TAG==&quot;seat&quot;, SUBSYSTEM==&quot;input&quot;, ATTR{name}==&quot;TrulyErgonomic.com Truly Ergonomic Computer Keyboard&quot;, ENV{ID_SEAT}=&quot;seat1&quot;, TAG+=&quot;seat1&quot;

#Sourie
TAG==&quot;seat&quot;, SUBSYSTEM==&quot;input&quot;, ATTR{name}==&quot;Game mouse&quot;, ENV{ID_SEAT}=&quot;seat1&quot;, TAG+=&quot;seat1&quot;
&lt;/pre&gt;

Ce n'est pas l'optimum mais suffisant pour ce que je voulais faire.
Le TAG «master-of-seat» ne semble pas indispensable mais est fortement conseillé sur au moins un périphérique par poste, il semble que ça permette à systemd de trouver un référent au nouveau poste. Si vous rattacher un concentrateur USB a un siège il sera exclusif a ce dernier, ce qui a ses avantages pour brancher de nouveau périphérique USB.

== Fermeture de session ==
Un autre problème est qu'il se peut que certains programmes ne se ferment pas correctement quand vous quittez votre session. Pour cela sur un autre poste que celui qui vient de se déconnecté il vous suffit de taper la commande suivante pour trouver les coupables : 
 loginctl session-status &lt;numéro de session visé&gt;

Dans mon cas il s'agissait de «gpg-agent» et de «gnome-keyring-daemon», comme je ne les utilisait pas je les ai simplement supprimés.
Ce n'est pas vraiment une solution et l'exécution d'un script lors de la déconnexion (param ligtdm) est surement préférable mais je n'en n'ai pas vraiment eu l'utilité pour l'instant.

= Problèmes possibles =
== Je ne vois pas les clés USB branchées ==
Et oui c'est un souci que je n'ai pas encore résolu, le hub USB sur lequel est branché la clé appartient à l'un des deux postes, donc seul l'un des deux est en mesure d'interagir avec. Donc avec un «loginctl attach» il est possible d'affecter un port/hub a un poste en particulier mais pas de le partager ... pour l'instant.

== VLC/clementine/virtualbox/... ne s'ouvre pas/ met du temps sur le seatX==
C'est un problème avec l'accessibilité (spi). Normalement en regardant vos variable d'environnement vous devez voir «QT_ACCESSIBILITY=1». Cela signifie que vous offrez de la synthèse vocal et autre aménagement pour l'accessibilité. Comme cela ne m'était pas nécessaire j'ai supprimer les paquets suivant et tout est rentré dans l'ordre.

 espeak-data
 gnome-orca
 libespeak1
 libsonic0
 python3-pyatspi
 qt-at-spi
 speech-dispatcher
 speech-dispatcher-audio-plugins

J'ai peut être fait trop de ménage, mais au moins ça fonctionne. 
Il semble que changer la config avec la commande suivante permet de ne pas setter «QT_ACCESSIBILITY» et donc de résoudre le soucis(ref https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=762672).
 gsettings set org.gnome.desktop.interface toolkit-accessibility false

== Le poste X ne peut éteindre le PC / monter une clée qui apparait sur le bureau ==
Cela veut dire qu'il n'est pas reconnu en tant que «seat» par le système et qu'il vous manque quelque chose. Vérifier les «seat» par 
 loginctl
et
 loginctl seat-status seatX

== Ma disposition de clavier n'est pas prise en compte ==
Il semble que la prise en compte d'une disposition autre que la standard du système ne soit pas correctement fait. En tout cas si la disposition est spécifié dans la section &quot;InputDevice&quot; comme définit plus haut. Heureusement pour nous il est possible de définir d'une autre manière une disposition pour un clavier. Il faut passer par une section &quot;InputClass&quot;. Au lieu de définir les options pour un clavier spécifique, on définit des option pour un type de clavier. Ce qui donne dans noter cas :
&lt;pre&gt;
Section &quot;InputClass&quot;
   Identifier   &quot;Truely&quot;
   MatchIsKeyboard &quot;True&quot;
   MatchProduct &quot;Truly Ergonomic Computer Keyboard&quot;
#   MatchVendor &quot;TrulyErgonomic.com&quot;
   Driver &quot;evdev&quot;
   Option    &quot;XkbLayout&quot;  &quot;fr&quot;
   Option    &quot;XkbVariant&quot; &quot;bepo&quot;
EndSection
&lt;/pre&gt;

La valeur a remplir dans le &quot;MatchVendor/Product&quot; est trouvable en faisant un &quot;lsusb -v | grep -e idProduct -e idVendor&quot;

= Amélioration possible =

* Partage de concentrateur USB : dans mon cas c'est plus le partage de lecteur de carte, mais je n'ai pas encore trouver comment faire pour que 2 ou plus poste puisse accéder à un périphérique.
* Répartition des enceintes : Sur les carte son en général il y a 2 prise pour la sortie audio, il serait intéressant que pour 2 poste chacun ai une paire propre.
* Gérer le branchement a chaud des périphérique : Cela semble [http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org supporté depuis un moment] mais je n'ai pas encore trouvé pourquoi cela ne fonctionne pas ici.
* La convention semble vouloir que les poste autre que le «seat0» soit de la forme «seat-x», mais cela ne fonctionnait pas pour moi, et comme je n'y avais pas d'intérêt pour l'instant …

= Ressources =
* http://code.lexarcana.com/posts/simple-multiseat-setup-on-fedora-17.html
* http://code.lexarcana.com/posts/using-udev-to-configure-fedora-multi-seat-automatically.html
* https://wiki.ubuntu.com/MultiseatTeam/Instructions
* https://wiki.ubuntu.com/Multiseat
* https://wiki.archlinux.fr/Systemd/logind
* http://www.freedesktop.org/wiki/Software/systemd/multiseat/</text>
      <sha1>3yjvubh7db8mtg13joeypz4pflv6qr3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5907</id>
      <parentid>5906</parentid>
      <timestamp>2014-11-27T01:04:08Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <minor/>
      <comment>correction d’un lien interne</comment>
      <text xml:space="preserve" bytes="21607">= Intro =
Faire du multi-poste n'est pas quelque chose de naturel pour un particulier mais est très utilisé dans les bibliothèques ou université pour démultiplier le nombre de poste informatique disponible a moindre coût. Dans notre cas nous allons mettre en place la solution la plus répendu, pour cela il vous faut 1 PC, 1 carte graphique et un couple clavier+sourie par poste souhaité. Sachez qu'il est possible de réduire le nombre de carte graphique nécessaire en exploitant plusieurs des sortie disponible mais [[Multiposte_avec_une_carte_graphique|la technique est plus délicate]] à mettre en place et a plus de désavantage.

= Configuration de X =
Par défaut le fichier de X («xorg.conf») n'est plus indispensable pour un poste de travail classique. Mais dans notre cas il est indispensable pour s'y retrouver. Vous avez le choix entre créé plusieurs fichiers de configuration distinct, un par poste. Ou en faire un unique qui comportera l'ensemble des configurations qui seront classé dans des «Layout» différent. Personnellement je vous conseille 1 seul fichier de conf pour 2 poste, mais au delà ça commence a devenir illisible donc de faire un fichier par poste.
Pour notre exemple nous allons configurer 2 poste dans un seul fichier de configuration.
Dans un premier temps nous allons définir les «Layout» que nous allons utilisés. Il regroupe l'ensemble de la configuration des poste, le «screen» (écran + carte graphique) et les périphérique d'entré (clavier / sourie).
&lt;pre&gt;
Section &quot;ServerLayout&quot;
  #L'identifiant qui nous permettra de dire à X d'utiliser cette configuration
    Identifier     &quot;poste0&quot;
  #Le premier «0» désigne l'écran, comme vous pouvez avoir plusieurs écran par carte/poste vous pouvez avoir des lignes supplémentaire avec un 1, 2 et ainsi de suite. «ecran0» désigne une section que l'on verra plus tard. Enfin les 2 autres «0» positionne l'écran suivant des coordonnée si plusieurs écran sont en jeux. 
    Screen      0  &quot;ecran0&quot; 0 0 
  #Désigne la section pour un périphérique d'entré, ici un clavier
    InputDevice    &quot;clavier0&quot; &quot;CoreKeyboard&quot; 
  #Désigne la section pour un périphérique d'entré, ici une sourie
    InputDevice    &quot;sourie0&quot; &quot;CorePointer&quot; 
EndSection


Section &quot;ServerLayout&quot;
    Identifier     &quot;poste1&quot;
    Screen      0  &quot;ecran1&quot; 0 0
    InputDevice    &quot;clavier1&quot; &quot;CoreKeyboard&quot;
    InputDevice    &quot;sourie1&quot; &quot;CorePointer&quot;
EndSection
&lt;/pre&gt;

Ensuite nous définissons les périphérique d'entrés (ici juste pour le poste 0). Pour identifier les périphériques matériel et leur point d'entré logiciel il vous suffit d'aller faire un tour dans «/dev/input/*», de faire un «cat» sur un des fichier présent et de généré des évènement clavier/sourie. Si votre «cat» vous sort quelque chose alors vous avez identifié le périphérique correspondant.
&lt;pre&gt;
####################################
# Peripherique d'entree du poste 0 #
####################################
#Clavier du poste 0
Section &quot;InputDevice&quot;
  #Identiant permettant au Layout de l'appeler
    Identifier    &quot;clavier0&quot; 
    Driver    &quot;evdev&quot;
  #Clavier branché sur un port PS/2, donc l'accès par «by-path» est toléré, mais il vaut mieux «by-id»
    Option    &quot;Device&quot;     &quot;/dev/input/by-path/platform-i8042-serio-0-event-kbd&quot; 
    Option    &quot;XkbLayout&quot;  &quot;fr&quot;
    Option    &quot;XkbVariant&quot; &quot;latin9&quot;
  #IMPORTANT, permet un accès exclusif au périphérique. Sans ça les serveurs X ajouteront automatiquement tous les périphérique disponible aux controle, et du coup toutes les sourie/clavier contrôleront tous les pointeurs.
    Option    &quot;GrabDevice&quot; &quot;on&quot; 
EndSection

#Sourie du poste 0
Section    &quot;InputDevice&quot;
    Identifier    &quot;sourie0&quot;
    Driver &quot;evdev&quot;
  #Sourie branché en USB et comme à chaque redémarrage le chemin peut se modifier (ou pas) il faut préféré l'identification par «by-id»
    Option &quot;Device&quot; &quot;/dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse&quot; 
    Option &quot;GrabDevice&quot; &quot;on&quot;
EndSection
&lt;/pre&gt;

Ensuite on définit la section «screen» qui est une agrégation d'une carte graphique et d'un écran.
&lt;pre&gt;
#######################################
# Carte graphique et ecran du poste 0 #
#######################################

Section &quot;Device&quot;
    Identifier     &quot;carteVideo0&quot;
    Driver         &quot;radeon&quot;
    VendorName     &quot;AMD/ATI&quot;
    BoardName      &quot;Radeon HD 6550D&quot;
  #Trouvable en faisant un «lspci», pour ici «00:01.0 VGA compatible controller» se trouvait dans la sortie de la commande.
    BusID          &quot;PCI:0:1:0&quot;
  #Définition du premier (et seul) écran
    Screen          0
  #Avec un «xrandr» vous pouvez savoir quel prise est utilisé pour connecter l'écran (DVI, HDMI, DP, VGA). Le «Monitor-» est une nécéssité de nommage et le «-0» représente la carte graphique utilisé, la première (donc «0») dans ce cas, mais pour le deuxième poste on pourra trouver «Monitor-DVI-1»
        Option         &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
EndSection

Section &quot;Monitor&quot;
    Identifier     &quot;LCD28&quot;
    VendorName     &quot;Hanns.G&quot;
    ModelName      &quot;HSD Hanns.G HG281&quot;
    Option         &quot;PreferredMode&quot; &quot;1920x1200&quot;
EndSection

# Section qui relie les 2 composants ensemble.
Section &quot;Screen&quot;
    Identifier     &quot;ecran0&quot;
    Device         &quot;carteVideo0&quot;
    Monitor        &quot;LCD28&quot;
    DefaultDepth    24
    Option         &quot;TwinView&quot; &quot;0&quot;
    Option         &quot;metamodes&quot; &quot;DFP: 1920x1200 +0+0&quot;
    SubSection     &quot;Display&quot;
        Depth       24
        Modes      &quot;1920x1200_60&quot;
    EndSubSection
EndSection
&lt;/pre&gt;

Donc au final on obtient un ficher tel que celui çi :
&lt;pre&gt;
#Configuration multi-poste

#############
# Serveur X #
#############

Section &quot;ServerLayout&quot;
    Identifier     &quot;poste0&quot;
    Screen      0  &quot;ecran0&quot; 0 0
    InputDevice    &quot;clavier0&quot; &quot;CoreKeyboard&quot;
    InputDevice    &quot;sourie0&quot; &quot;CorePointer&quot;
EndSection


Section &quot;ServerLayout&quot;
    Identifier     &quot;poste1&quot;
    Screen      0  &quot;ecran1&quot; 0 0
    InputDevice    &quot;clavier1&quot; &quot;CoreKeyboard&quot;
    InputDevice    &quot;sourie1&quot; &quot;CorePointer&quot;
EndSection

#Section &quot;Files&quot;
#    RgbPath         &quot;/usr/X11R6/lib/X11/rgb&quot;
#EndSection

Section &quot;Module&quot;
    Load        &quot;dbe&quot;
    Load        &quot;extmod&quot;
    Load        &quot;type1&quot;
    Load        &quot;freetype&quot;
    Load        &quot;glx&quot;
EndSection

Section &quot;ServerFlags&quot;
    Option      &quot;Xinerama&quot;          &quot;0&quot;
#    Option      &quot;AutoEnableDevices&quot; &quot;false&quot;
#    Option      &quot;AutoAddDevices&quot;    &quot;false&quot;
#    Option      &quot;AllowEmptyInput&quot;   &quot;true&quot;
#    Option      &quot;AutoAddGPU&quot;        &quot;false&quot;
EndSection

####################################
# Peripherique d'entree du poste 0 #
####################################
#Clavier du poste 0
Section &quot;InputDevice&quot;
    Identifier    &quot;clavier0&quot;
    Driver    &quot;evdev&quot;
    Option    &quot;Device&quot;     &quot;/dev/input/by-path/platform-i8042-serio-0-event-kbd&quot;
    Option    &quot;XkbLayout&quot;  &quot;fr&quot;
    Option    &quot;XkbVariant&quot; &quot;latin9&quot;
    Option    &quot;GrabDevice&quot; &quot;on&quot;
EndSection

#Sourie du poste 0
Section    &quot;InputDevice&quot;
    Identifier    &quot;sourie0&quot;
    Driver &quot;evdev&quot;
#    Option &quot;ZAxisMapping&quot; &quot;4 5&quot;
    Option &quot;Device&quot; &quot;/dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse&quot;
    Option &quot;GrabDevice&quot; &quot;on&quot;
EndSection

####################################
# Peripherique d'entree du poste 1 #
####################################
#Clavier du poste 1
Section &quot;InputDevice&quot;
    Identifier    &quot;clavier1&quot;
    Driver    &quot;evdev&quot;
    Option    &quot;Device&quot;     &quot;/dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd&quot;
    Option    &quot;XkbLayout&quot;  &quot;fr&quot;
    Option    &quot;XkbVariant&quot; &quot;bepo&quot;
    Option    &quot;GrabDevice&quot; &quot;on&quot;
EndSection

#Sourie du poste 1
Section &quot;InputDevice&quot;
    Identifier    &quot;sourie1&quot;
    Driver    &quot;evdev&quot;
#    Option    &quot;ZAxisMapping&quot; &quot;4 5&quot;
    Option    &quot;Device&quot; &quot;/dev/input/by-id/usb-1d57_Game_mouse-if01-event-mouse&quot;
    Option    &quot;GrabDevice&quot; &quot;on&quot;
EndSection

#######################################
# Carte graphique et ecran du poste 0 #
#######################################

Section &quot;Device&quot;
    Identifier     &quot;carteVideo0&quot;
    Driver         &quot;radeon&quot;
    VendorName     &quot;AMD/ATI&quot;
    BoardName      &quot;Radeon HD 6550D&quot;
    BusID          &quot;PCI:0:1:0&quot;
    Screen          0
    Option         &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
EndSection

Section &quot;Monitor&quot;
    Identifier     &quot;LCD28&quot;
    VendorName     &quot;Hanns.G&quot;
    ModelName      &quot;HSD Hanns.G HG281&quot;
    Option         &quot;PreferredMode&quot; &quot;1920x1200&quot;
EndSection

Section &quot;Screen&quot;
    Identifier     &quot;ecran0&quot;
    Device         &quot;carteVideo0&quot;
    Monitor        &quot;LCD28&quot;
    DefaultDepth    24
    Option         &quot;TwinView&quot; &quot;0&quot;
    Option         &quot;metamodes&quot; &quot;DFP: 1920x1200 +0+0&quot;
    SubSection     &quot;Display&quot;
        Depth       24
        Modes      &quot;1920x1200_60&quot;
    EndSubSection
EndSection

#######################################
# Carte graphique et ecran du poste 1 #
#######################################

Section &quot;Device&quot;
    Identifier     &quot;carteVideo1&quot;
    Driver         &quot;radeon&quot;
    VendorName     &quot;AMD/ATI&quot;
    BoardName      &quot;Radeon HD 6450/7450/8450 / R5 230 OEM&quot;
    BusID          &quot;PCI:1:0:0&quot;
    Screen         0 
    Option         &quot;Monitor-DVI-1&quot; &quot;Acer&quot;
EndSection

Section &quot;Monitor&quot;
    Identifier     &quot;LCD22&quot;
    VendorName     &quot;ACER&quot;
    ModelName      &quot;ACER B229w&quot;
    Option         &quot;PreferredMode&quot; &quot;1680x1050&quot;
EndSection

Section &quot;Screen&quot;
    Identifier     &quot;ecran1&quot;
    Device         &quot;carteVideo1&quot;
    Monitor        &quot;LCD22&quot;
    DefaultDepth    24
    Option         &quot;TwinView&quot; &quot;0&quot;
    Option         &quot;metamodes&quot; &quot;DFP: 1680x1050 +0+0&quot;
    SubSection     &quot;Display&quot;
        Depth       24
        Modes      &quot;1680x1050_60&quot;
    EndSubSection
EndSection
&lt;/pre&gt;

== Test de la configuration ==
Pour cela il vous suffit de vous mettre dans une console et de taper la commande suivante :
 X -layout &lt;mon layout&gt; -vt''X''

Ou le ''X'' doit être remplacer par un numéro de console libre, 8, 9, 10, 11 ou 12 en générale.
Vous devriez changer de console pour celle visé et voir un écran gris avec le curseur manipulable. Si c'est bien le cas c'est que votre configuration est bonne.

= Configuration de LightDM =

Ici rien de plus simple, il suffit de dire a lightDM de lancer un deuxième serveur X avec une config particulière, pour cela il faut modifier son fichier de configuration («/etc/lightdm/lightdm.conf»)

&lt;pre&gt;
[Seat:0]
xserver-command=/usr/bin/X
xserver-layout=poste0
xdg-seat=seat0

[Seat:1]
xserver-command=/usr/bin/X vt8
xserver-layout=poste1
xdg-seat=seat1
&lt;/pre&gt;

Certain tuto ajoute les options «sharevts» ou «keeptty». La première option me bloquait l'affichage sur l'interface graphique alors que les commandes passais bien sur un VT, quand au deuxième d'après la doc c'est utile pour le debug mais pas plus («Prevent the server from detaching its initial controlling terminal.»).
Du coup seul le siège principal (seat0) à accès aux VT (Ctrl + Maj + Fx).
L'option «xserver-layout» parle d'elle même et permet de sélectionner une config particulière dans un fichier de conf Xorg, sinon l'option «xserver-config» permet de sélectionner un fichier de conf particulier si on a choisi de séparer la configuration des X.
L'option «xdg-seat» est indispensable pour la suite de la configuration, il permet à systemd et logind de faire le lien entre le poste graphique et les droits a lui accorder.

Si tout s'est bien passé vous devriez voir apparaitre les 2 écran de connexion avec le clavier et sourie rattaché. Cependant il ne faut pas s'arrêter en si bon chemin et le système a encore besoin de quelques configurations.

= Configuration de Pulseaudio =

Par défaut «pulseaudio» se lance en espace utilisateur, cela veut dire que une fois que vous vous déconnecter de votre session votre PC ne peut plus émettre un son. Le fait que le serveur de son soie rataché à la connexion d'un utilisateur, empêche l'utilisation du son d'un second utilisateur, ce qui serais fort dommage dans notre cas. Donc nous allons changer cela pour que «pulseaudio» s'exécute en tant que daemon système (ne pas tenir compte du message d'avertissement qui vous le déconseillerais, nous n'avons pas le choix dans notre cas) et régler les droits utilisateurs pour que tous puisse accéder a ce daemon.

== Configuration des droits ==
Normalement vous devez déjà avoir les groupes &quot;pulse&quot; et &quot;pulse-access&quot; de créé sur votre machine.
* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot; 
usermod -aG pulse-access &lt;username&gt;
* On peut enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio 
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse
== Création du daemon système PulseAudio avec systemd ==
Bien que ce soit déconseillé de faire tourné pulseaudio en tant que daemon système, c'est le seul moyen pour que les 2 postes aient accès à la carte son en même temps.
Pour cela il faut légèrement modifier la configuration de pulseaudio.
Dans /etc/pulse il faut modifier 2 fichiers
daemon.conf
&lt;pre&gt;
...
daemonize = yes
...
local-server-type = system
...
&lt;/pre&gt;

client.conf
&lt;pre&gt;
...
autospawn = no
...
&lt;/pre&gt;

Enfin il faut créer le fichier /etc/systemd/system/pulseaudio.service
&lt;pre&gt;
[Unit]
Description=Pulseaudio sound server
Documentation=man:pulseaudio(1)
After=avahi-daemon.service network.target
Before=sound.target
Requires=dbus.socket
 
[Service]
Type=forking
BusName=org.pulseaudio.Server
ExecStart=/usr/bin/pulseaudio --system --disallow-exit --disallow-module-loading
ExecStop=/usr/bin/pulseaudio --kill
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
 
[Install]
WantedBy=multi-user.target
&lt;/pre&gt;

Et lancer la commandes suivante pour qu'il soit exécuter au démarrage :
 systemctl enable pulseaudio.service

Si vous voulez tester tout de suite le service il vous suffit de faire
 systemctl start pulseaudio.service

= Configuration systemd =

Il existe un soucis qui fait que seul le premier poste (seat0) est détecté par «systemd-logind» et du coup ça empêche certaines fonctionnalités de s'exécuter correctement. Par exemple le montage automatique des clée USB en cliquant sur l'icône qui apparait. Pour vérifier cela il faut vous connecter a 2 poste minimum et lancer la commande suivante :
 loginctl

Si vous voyez tous vous utilisateurs connecté sur leur siège tant mieux pour vous. Sinon il faut faire les manipulations suivantes :

== Rattachement du matériel ==
Tout d'abord faite la commande suivante, elle vous donne tous les matériels rattaché au premier poste et vous permettra de récupéré les chemins vers certains périphérique nécessaires.
 loginctl seat-status seat0

Ensuite faite un premier essai en rattachant manuellement certains périphériques, ici la carte graphique :
 loginctl attach seat1 /sys/devices/pci0000:00/0000:00:02.0/0000:01:00.0/drm/card1 
 loginctl attach seat1 /sys/devices/pci0000:00/0000:00:02.0/0000:01:00.0/graphics/fb1

Normalement en refaisant la commande «loginctl list-seats» vous devriez voir le nouveau «seat».
Repérer les chemins vers vers les périphérique de votre siège (clavier / sourie / carte son / carte graphique / … ), sachant que au minimum il nous faut la carte graphique.

=== Cas spéciale du «seat0» ===
Le «seat0» est spécial dans le sens ou il existera toujours et que tout périphérique lui est attaché par défaut, c'est le point de référence de «logind».

== Automatisation ==

Le fait d'attacher un périphérique a un «seat» créé automatiquement la règle udev (dans «/etc/udev/rules.d/») qui permet après une extinction de retrouver les réglages. Cependant ces règles sont basique et il faut les démultiplier pour prendre en compte tout un poste. Il peut être plus intéressant de les retoucher pour englober tout un poste si tout ses périphérique sont branchés sur un même concentrateur USB.
Pour cela les commandes suivantes vous seront utile :
 udevadm info -a -p &lt;chemin en /sys/… &gt;
Vous donneras toutes les informations sur un périphérique particulier et toute sa hiérarchie de connexion.
Au final cela m'a donner les règles suivantes
&lt;pre&gt;
# add master-of-seat tag to video cards
KERNEL==&quot;card[0-9]*&quot;, SUBSYSTEM==&quot;drm&quot;, TAG+=&quot;master-of-seat&quot;
KERNEL==&quot;fb[1-9]&quot;, SUBSYSTEM==&quot;graphics&quot;, TAG+=&quot;master-of-seat&quot;

#Carte graphique
TAG==&quot;seat&quot;, KERNEL==&quot;fb1&quot;, SUBSYSTEM==&quot;graphics&quot;, ATTR{virtual_size}==&quot;1680,1050&quot;, ENV{ID_SEAT}=&quot;seat1&quot;, TAG+=&quot;seat1&quot;
TAG==&quot;seat&quot;, KERNEL==&quot;card1&quot;, SUBSYSTEM==&quot;drm&quot;, ENV{ID_SEAT}=&quot;seat1&quot;, TAG+=&quot;seat1&quot;

#Clavier
TAG==&quot;seat&quot;, SUBSYSTEM==&quot;input&quot;, ATTR{name}==&quot;TrulyErgonomic.com Truly Ergonomic Computer Keyboard&quot;, ENV{ID_SEAT}=&quot;seat1&quot;, TAG+=&quot;seat1&quot;

#Sourie
TAG==&quot;seat&quot;, SUBSYSTEM==&quot;input&quot;, ATTR{name}==&quot;Game mouse&quot;, ENV{ID_SEAT}=&quot;seat1&quot;, TAG+=&quot;seat1&quot;
&lt;/pre&gt;

Ce n'est pas l'optimum mais suffisant pour ce que je voulais faire.
Le TAG «master-of-seat» ne semble pas indispensable mais est fortement conseillé sur au moins un périphérique par poste, il semble que ça permette à systemd de trouver un référent au nouveau poste. Si vous rattacher un concentrateur USB a un siège il sera exclusif a ce dernier, ce qui a ses avantages pour brancher de nouveau périphérique USB.

== Fermeture de session ==
Un autre problème est qu'il se peut que certains programmes ne se ferment pas correctement quand vous quittez votre session. Pour cela sur un autre poste que celui qui vient de se déconnecté il vous suffit de taper la commande suivante pour trouver les coupables : 
 loginctl session-status &lt;numéro de session visé&gt;

Dans mon cas il s'agissait de «gpg-agent» et de «gnome-keyring-daemon», comme je ne les utilisait pas je les ai simplement supprimés.
Ce n'est pas vraiment une solution et l'exécution d'un script lors de la déconnexion (param ligtdm) est surement préférable mais je n'en n'ai pas vraiment eu l'utilité pour l'instant.

= Problèmes possibles =
== Je ne vois pas les clés USB branchées ==
Et oui c'est un souci que je n'ai pas encore résolu, le hub USB sur lequel est branché la clé appartient à l'un des deux postes, donc seul l'un des deux est en mesure d'interagir avec. Donc avec un «loginctl attach» il est possible d'affecter un port/hub a un poste en particulier mais pas de le partager ... pour l'instant.

== VLC/clementine/virtualbox/... ne s'ouvre pas/ met du temps sur le seatX==
C'est un problème avec l'accessibilité (spi). Normalement en regardant vos variable d'environnement vous devez voir «QT_ACCESSIBILITY=1». Cela signifie que vous offrez de la synthèse vocal et autre aménagement pour l'accessibilité. Comme cela ne m'était pas nécessaire j'ai supprimer les paquets suivant et tout est rentré dans l'ordre.

 espeak-data
 gnome-orca
 libespeak1
 libsonic0
 python3-pyatspi
 qt-at-spi
 speech-dispatcher
 speech-dispatcher-audio-plugins

J'ai peut être fait trop de ménage, mais au moins ça fonctionne. 
Il semble que changer la config avec la commande suivante permet de ne pas setter «QT_ACCESSIBILITY» et donc de résoudre le soucis(ref https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=762672).
 gsettings set org.gnome.desktop.interface toolkit-accessibility false

== Le poste X ne peut éteindre le PC / monter une clée qui apparait sur le bureau ==
Cela veut dire qu'il n'est pas reconnu en tant que «seat» par le système et qu'il vous manque quelque chose. Vérifier les «seat» par 
 loginctl
et
 loginctl seat-status seatX

== Ma disposition de clavier n'est pas prise en compte ==
Il semble que la prise en compte d'une disposition autre que la standard du système ne soit pas correctement fait. En tout cas si la disposition est spécifié dans la section &quot;InputDevice&quot; comme définit plus haut. Heureusement pour nous il est possible de définir d'une autre manière une disposition pour un clavier. Il faut passer par une section &quot;InputClass&quot;. Au lieu de définir les options pour un clavier spécifique, on définit des option pour un type de clavier. Ce qui donne dans noter cas :
&lt;pre&gt;
Section &quot;InputClass&quot;
   Identifier   &quot;Truely&quot;
   MatchIsKeyboard &quot;True&quot;
   MatchProduct &quot;Truly Ergonomic Computer Keyboard&quot;
#   MatchVendor &quot;TrulyErgonomic.com&quot;
   Driver &quot;evdev&quot;
   Option    &quot;XkbLayout&quot;  &quot;fr&quot;
   Option    &quot;XkbVariant&quot; &quot;bepo&quot;
EndSection
&lt;/pre&gt;

La valeur a remplir dans le &quot;MatchVendor/Product&quot; est trouvable en faisant un &quot;lsusb -v | grep -e idProduct -e idVendor&quot;

= Amélioration possible =

* Partage de concentrateur USB : dans mon cas c'est plus le partage de lecteur de carte, mais je n'ai pas encore trouver comment faire pour que 2 ou plus poste puisse accéder à un périphérique.
* Répartition des enceintes : Sur les carte son en général il y a 2 prise pour la sortie audio, il serait intéressant que pour 2 poste chacun ai une paire propre.
* Gérer le branchement a chaud des périphérique : Cela semble [http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org supporté depuis un moment] mais je n'ai pas encore trouvé pourquoi cela ne fonctionne pas ici.
* La convention semble vouloir que les poste autre que le «seat0» soit de la forme «seat-x», mais cela ne fonctionnait pas pour moi, et comme je n'y avais pas d'intérêt pour l'instant …

= Ressources =
* http://code.lexarcana.com/posts/simple-multiseat-setup-on-fedora-17.html
* http://code.lexarcana.com/posts/using-udev-to-configure-fedora-multi-seat-automatically.html
* https://wiki.ubuntu.com/MultiseatTeam/Instructions
* https://wiki.ubuntu.com/Multiseat
* https://wiki.archlinux.fr/Systemd/logind
* http://www.freedesktop.org/wiki/Software/systemd/multiseat/</text>
      <sha1>hgno64vewlxhhncqd7zhfxz78jeqpc2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Multiposte avec une carte graphique</title>
    <ns>0</ns>
    <id>1361</id>
    <revision>
      <id>5886</id>
      <timestamp>2014-10-19T20:33:29Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <comment>Création d'une nouvelle page en vue de réorganisation</comment>
      <text xml:space="preserve" bytes="26634">Après avoir fait du [http://www.debian-fr.org/multiseat-plusieurs-utilisateurs-sur-1-pc-t6954.html#p188187 multiposte avec 2 CG], un changement de PC m'oblige à faire la même chose mais avec une seule carte. J'ai essayé de couvrir au maximum toutes les étapes de la mise en place de la solution.

----
==Choix des outils==
Tout d'abord le raisonnement pour le choix des outils à été le suivant.
==== Xorg ou Wayland ?====
La réponse a été rapide. Xorg clairement, Wayland est encore trop récent pour pouvoir le faire et aucun document ne traite pour l'instant de ce problème.

==== Xnest ou Xephyr ?====
Xephyr est largement plébiscité et Xnest semble tomber en désuétude. C'est par le développement de Tizen (ex-Meego) que Xephyr semble toujours actif et que de nouvelles fonctionnalités lui sont ajoutées. Intel s'en sert intensément et est énormément utilisé pour le développement d'application pour smartphone comme environnement de simulation. (http://www.phoronix.com/scan.php?page=news_item&amp;px=ODc1NQ).
Un souci avec Xephyr est que le support de evdev semble ne pas avoir été inclus dans les options de compilations. &quot;evdev&quot; permet de monopoliser les claviers et souris. Du coup il faut refaire le paquet soi-même.

==== Et la transition avec systemd ? ====
Il ne semble plus y avoir de problème particulier (http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org)

====Comment gérer 2 écran, 2 session avec une seule carte graphique ?====
Il faut savoir que Xephyr permet de se greffer sur n'importe quel serveur X afin d'afficher une autre session. Par exemple avec la commande &quot;Xephyr -query 127.0.0.1&quot; vous devez pouvoir vous connecter sur votre propre machine si le protocole &quot;XDMCP&quot; est activé sur votre &quot;DisplayManager&quot; (GDM, KDM, XDM, ...). Donc le but du jeu sera d'avoir un serveur X qui va &quot;supporter&quot; 2 fenêtres Xephyr. Ces deux dernières se verront affectées les claviers et les souris de manière exclusive.

====Et le DM ? Debian a adopté GDM(3) avec Gnome mais j'aimerais bien m'en passer.====
Avec GDM (celui de Gnome2) il existe un très bon tutoriel ici : http://netpatia.blogspot.fr/2009/06/multiseat-in-ubuntu-904.html 
Pour GDM3, le problème est que pour l'instant il ne reprend pas toutes les possibilitées de son ancienne version. 
https://live.gnome.org/GDM/ToDo
&quot;-- Allow per-display X Server commands 
		BrianCameron: The [server] and [server-foo] sections of the GDM configuration have been disabled. This means that users who depend on novel configurations which require special Xserver commands per-display is not available.&quot;

Donc bonne nouvelle, il fallait trouver une alternative en le nom de LightDM, qui est issu de Ubuntu ... 

===Prérequis===
Donc pour les pré-requis :
* Ajouter &quot;deb-src http://ftp.fr.debian.org/debian/ &lt;VersionDebian&gt; main contrib non-free&quot;
* Installer les paquage dpkg-dev, build-essential, devscripts, lightDM

==Reconstruction de Xephyr==
===Récupération des sources nécessaires===
On récupère toutes les sources du packet source xorg-server qui comprend Xephyr.

 $ apt-get source xserver-xephyr


Puis récupérer toutes les dépendances spécifique au paquet :

 # apt-get build-dep xorg-server

Là il va télécharger un certain nombre de paquets de développement (&quot;-dev&quot;), ils sont marqués comme installés automatiquement, donc un deborphan devrait vous les enlever sans trop de problème. Sinon il existe cette commande pour être sûr qu'ils sont marqués en tant que &quot;installé automatiquement&quot;, puis un &quot;apt-get autoclean&quot; les supprimera.

===Reconfiguration===
Ensuite tout se passe dans le répertoire &quot;debian&quot;

 $ cd xorg-server-X.YY.Z/debian


On édite le fichier &quot;changlog&quot; pour monter de version le paquet que l'on va reconstruire. Il est possible de le faire en automatique avec la commande:

 debian/$ dch -n


L'option &quot;-n&quot; permet d'incrémenter le numéro de version de façon mineur, c'est à dire l'ajout de &quot;.1&quot; en fin de numéro de version.

Sinon pour le faire en manuel, il faut ajouter une ligne du type suivant au fichier:
&lt;pre&gt;
xorg-server (2:X.YY.Z-A.B) UNRELEASED; urgency=low

  * Non-maintainer upload.
  * ajout des paramètre pour Xephyr et evdev

 -- Vous &lt;vous@VotreMachine&gt;  Sun, 03 Mar 2013 22:21:32 +0100
&lt;/pre&gt;

Pour éviter de réinstaller tout Xorg avec le nouveau numéro de version il faut éditer le fichier &quot;debian/control&quot; et modifier la dépendance de Xephyr (ligne ~288). Pour cela il faut remplacer le 
&lt;pre&gt;
Depends :
  xserver-common (&gt;= ${source:Version})
&lt;/pre&gt;
Par :
&lt;pre&gt;
Depends :
  xserver-common (&gt;= 2:X.YY.Z-A)
&lt;/pre&gt;

Le numéro doit être en accord avec la version de votre Xorg actuellement installé sur votre machine. 
Sinon cette modification est directement possible dans le .deb, toujours dans le fichier &quot;DEBIAN/control&quot;. Pour cela il faut prendre le .deb que vous avez construit, le décompresser, modifier le fichier et faire la commande &quot;dpkg-deb -b &lt;nom du répertoire contenant les fichiers&gt;&quot;. Mais il est plus pratique de le faire avant.

Je ne vous conseille pas de mettre une numéro de version trop élevé car cela pourrait engendrer une incompatibilité avec les futurs versions de Xorg.

Ensuite nous allons modifier les options de compilation en éditant le fichier &quot;rules&quot;, c'est le Makefile de la construction du paquet.
Localisez &quot;confflags_main&quot; (ligne ~118) et ajoutez les lignes suivantes juste en dessous de &quot;--enable-kdrive&quot; (ligne ~142)

 --enable-kdrive-evdev \
 --enable-kdrive-mouse \
 --enable-kdrive-kbd \

===Recompilation===
Passons maintenant à la recompilation proprement dite, ressortez du répertoire debian et faites :
 $ fakeroot ./debian/rules binary

Et laissez la compilation et la création des paquets se faire ... cela peut prendre quelques minutes.

====Re-recompilation====
Si pour une raison il vous faut refaire entièrement la compilation il faut d'abord faire la commande suivante
 $ fakeroot ./debian/rules clean

Si c'est juste refaire les &quot;.deb&quot; (correction du numéro de dépendance, ...), alors cette commande suffit.
 $ fakeroot ./debian/rules binary-deb

====Erreur de compilation possible====
Il est possible que à la fin de la compilation vous ayez le mesage suivant
 $ make: *** [binary-deb] Erreur 2

Pour identifier la cause il faut remonter dans les logs (ou faire une recherche) pour trouver un message similaire à :

 dpkg-shlibdeps: erreur: impossible de trouver la bibliothèque libaudit.so.0 utilisée par debian/xserver-xorg-core/usr/lib/xorg/modules/multimedia/tda9885_drv.so (format ELF : « elf64-x86-64 »; RPATH : «  »)

Par exemple pour cette erreur la solution à été de créer un lien symbolique vers la version plus récente de la lib
 ln -s libaudit.so.1 libaudit.so.0

===Installation du paquet obtenue===
Enfin pour installer votre paquet (qui se trouve dans le répertoire supérieur) il faut faire :
 #dpkg -i xserver-xephyr_1.12.4-5_i386.deb
Ou de manière graphique avec GDebi.
====Paquets déjà prêt====
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6_i386.deb.tar]]
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6.1_amd64.deb.tar]]

==Configuration de Xorg==
===Définition de l'existant===
Pour rappel le principe sera d'avoir une session X qui va héberger 2 sessions Xephyr qui serviront les différents sièges.
Tout d'abord nous allons faire un fichier de conf pour le serveur Xorg. Pour ne pas démarrer de rien on peut lancer la commande (en root) &quot;Xorg -configure&quot; qui génère le fichier &quot;xorg.conf.new&quot; dans &quot;/root&quot;. Ensuite on fait un petit &quot;xrandr&quot; pour identifier les sorties disponibles.
&lt;pre&gt;
$ xrandr

Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 593mm
&lt;/pre&gt;

&quot;DVI-0&quot; &amp; &quot;HDMI-0&quot; sont les 2 disponibles sur la machine. On peut aussi trouver du &quot;VGA-0&quot; ou &quot;LVDS&quot; pour les écrans de portables.

===Exemple de fichier de configuration===
Dans cet exemple on peut avoir un &quot;/etc/xorg.conf&quot; comme suivant :
&lt;pre&gt;
##################################################################
Section &quot;Monitor&quot;
	Identifier  &quot;HannsG&quot;
	Option      &quot;PreferredMode&quot; &quot;1920x1200&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
	Option		&quot;Primary&quot; &quot;true&quot;
EndSection

Section &quot;Monitor&quot;
	Identifier  &quot;Acer&quot;
	Option      &quot;PreferredMode&quot; &quot;1680x1050&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
EndSection

Section &quot;Device&quot;
	Identifier  &quot;card0&quot;
	Driver      &quot;radeon&quot;
	# Ici on associe les sorties video avec une section &quot;Monitor&quot;
	# On remarquera le &quot;Monitor&quot; devant le nom des sortie, c'est indispensable (cf : http://www.x.org/archive/current/doc/man/man5/xorg.conf.5.xhtml#heading12)
	Option      &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
	Option      &quot;Monitor-DVI-0&quot; &quot;Acer&quot;
EndSection

##################################################################

Section &quot;Screen&quot;
	Identifier  &quot;ecran1&quot;
	Device      &quot;card0&quot;
	Monitor     &quot;HansG&quot;
	DefaultDepth 24
	SubSection &quot;Display&quot;
 		Depth   24
		Virtual 3600 1200
	EndSubSection
EndSection

Section &quot;ServerLayout&quot;
	Identifier    &quot;dualscreen&quot;
	Screen      0  &quot;ecran1&quot;
EndSection
##################################################################
&lt;/pre&gt;

==Configuration de LightDM==
Nous allons maintenant regarder la configuration de LightDM d'un peu plus près. Le fichier de configuration par défaut expose toutes les options possibles du dit fichier. Nous allons garder le strict minimum
===lightdm.conf===
Pour cela éditons le fichier /etc/lightd/lightdm.conf

&lt;pre&gt;
[LightDM]
 greeter-user=root
 user-authority-in-system-dir=false

 [SeatDefaults]
 xserver-allow-tcp=false
 greeter-hide-users=false
 user-session=lightdm-xsession
 session-wrapper=/etc/X11/Xsession
 session-setup-script=/etc/lightdm/session-setup-script.sh -a 3 -v 7

 [Seat:0]
 xserver-command=nohup X -br -dpms -s 0 -novtswitch -nocursor
 greeter-session=fake-greeter

 [Seat:1]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 1 -t 1680x1050 -P evdev -s /dev/input/by-id/usb-Logitech_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd -v bepo 
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 1
 greeter-session=lightdm-greeter

[Seat:2]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 2 -t 1920x1200 -P evdev -s /dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-path/platform-i8042-serio-0-event-kbd
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 2 -d 1680,0
 greeter-session=lightdm-greeter
&lt;/pre&gt;

Il y a plusieurs chose à savoir concernant le fonctionnement de LightDM afin de comprendre ce qui est fait.
* La section &quot;SeatDefault&quot; est commune à tous les sièges définis après
* Chaque &quot;Seat&quot; est exécuté dans l'ordre dans un VT différent et ce même si, dans notre cas, tout se passe dans le VT7 ([url=https://code.launchpad.net/~andrzejtp2010/lightdm/lightdm-trunk-xephyr-multiseat/+merge/120286]un patch[url] à été proposé pour palier à ce problème mais il n'a pas été accepté ... pour l'instant)
* Chaque propriété de tous les &quot;Seat&quot; est lancée dans un ordre précis, d'abord tous les &quot;xserver-command&quot;, puis tous les &quot;greeter-setup-script&quot;, enfin tous les &quot;greeter-session&quot;. Si vous mettez d'autres propriétés elle seront exécutées suivant leur ordre pré-établi.
* Si les &quot;greeter&quot; se terminent, lightDM coupe le &quot;xserver-command&quot; correspondant. De même si le &quot;xserver-command&quot; se termine le greeter est coupé.

Donc pour que tout se positionne correctement il faut
* D'abord lancer le serveur X qui servira de support, ce qui est fait en le mettant en tant que premier poste (&quot;Seat:0&quot;)
* Lancer les fenêtres Xephyr avec les optons qui vont bien, ce qui est fait avec le script &quot;Xephyr-command.sh&quot; et ses arguments
* Simuler un &quot;greeter&quot; pour le &quot;Seat :0&quot; afin que le serveur X ne soit pas tué par lightDM, ce qui est fait avec le script &quot;fake-greeter&quot;
* Exécuter un script qui va placer les fenêtre Xephyr si besoin et initialiser les variables d'environnement correctement, fait avec &quot;Xephyr-greeter-setup.sh&quot;
* Exécuter les &quot;greeter&quot; dans les fenêtre Xephyr
* (MAJ 02/2014) Il faut rechanger de VT lorsque l'utilisateur se logue car LightDM semble se repositionner sur le VT qui est sensé contenir le poste (VT 8,9, ...), donc le script session-setup-script.sh devient indispensable

===fake-greeter.desktop===
Pour le faux greeter du serveur X il faut créer un fichier dans &quot;/usr/share/xgreeters/fake-greeter.desktop&quot; et y copier son contenu :
&lt;pre&gt;
[Desktop Entry]
Name=LightDM fake greeter
Comment=This runs no greeter at all, it should only be run from LightDM
Exec=sleep infinity
Type=Application
X-Ubuntu-Gettext-Domain=lightdm
&lt;/pre&gt;

Après tout cela nous allons créer un script qui permettra de créer (&quot;Xephyr-command.sh&quot;) et un autre pour placer les fenêtre à l'écran (&quot;Xephyr-greeter-setup.sh&quot;).
Tout d'abord il est nécessaire d'installer le petit utilitaire &quot;wmctrl&quot; avec
 # aptitude install wmctrl
===Xephyr-command.sh===
Le contenu du fichier &quot;Xephyr-command.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -t, taille : Doit être de la forme 9999x9999, (dafaut = 1024x768)&quot;
  echo &quot;\t -s, sourie : /dev/input/[by-path|by-id]/...event-mouse&quot;
  echo &quot;\t -c, clavier : /dev/input/[by-path|by-id]/...event-kbd&quot;
  echo &quot;\t -l, layout : fr, es, en, ... (défaut = fr)&quot;
  echo &quot;\t -v, variant : fr, latin9, bepo, ... (défaut = &lt;vide&gt;)&quot;
  echo &quot;\t -P, Pilote : ephyr ou evdev (défaut = ephyr)&quot;
}

testExecutable() {
	XEPHYR=`whereis -b Xephyr | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
TAILLE=&quot;1024x768&quot;
SOURIE=
CLAVIER=
LAYOUT=&quot;fr&quot;
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
PILOTE=ephyr # Test = ephyr ; Prod = evdev

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XEPHYR&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;Xephyr : &quot;$XEPHYR
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:t:s:c:l:v:P:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		t|taille)
			TAILLE=&quot;$OPTARG&quot;
		;;

		s|sourie)
			SOURIE=$OPTARG
			if  ! [ -r $SOURIE ];then
				echo &quot;La sourie n'est pas accessible&quot;
				exit 3
			fi
		;;

		c|clavier)
			CLAVIER=$OPTARG
			if  ! [ -r $CLAVIER ];then
				echo &quot;Le clavier n'est pas accessible&quot;
				exit 4
			fi
		;;

		l|layout)
			LAYOUT=$OPTARG
		;;

		v|variant)
			VARIANT=$OPTARG
		;;

		P|Pilote)
			PILOTE=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variables d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Construction de la ligne d&quot;argument
OPTIONS=&quot;&quot;

if [ -n &quot;${TAILLE}&quot; ]; then
	OPTIONS=&quot; -screen ${TAILLE}&quot;
fi

if [ -n &quot;${CLAVIER}&quot; ]; then
	if [ -n &quot;${LAYOUT}&quot; ]; then
		OPTIONS=$OPTIONS&quot; -keybd $PILOTE,,device=${CLAVIER},xkbrules=evdev,xkbmodel=evdev,xkblayout=${LAYOUT}&quot;
		if [ -n &quot;${VARIANT}&quot; ]; then
			OPTIONS=$OPTIONS&quot;,xkbvariant=${VARIANT}&quot;
		fi
	fi
fi

if [ -n &quot;${SOURIE}&quot; ]; then
	OPTIONS=$OPTIONS&quot; -mouse $PILOTE,,device=${SOURIE}&quot;
fi

# Lancement de Xephyr en arrière plan
echo &quot;$XEPHYR -retro $OPTIONS :$POSTE&quot;
exec $XEPHYR -retro  $OPTIONS :$POSTE
&lt;/pre&gt;

Petite explication sur la dernière ligne. Le &quot;exec&quot; fait en sorte que ce soit le processus de Xephyr qui prend la place du script, donc il reprend le PID et tout ce qui va bien. Cela permet surtout que le signal USR1 que Xephyr lance au PPID, soit bien récupéré par LightDM et que ce dernier continue son fonctionnement normalement.

===Xephyr-greeter-setup.sh===
Le contenu du fichier &quot;Xephyr-greeter-setup.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p|--poste numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -d, --deplacement : de la forme 'x,y' (en pixel)&quot;
  echo &quot;\t -v, --vt : 7, 8, 9, 10, 11 (defaut = 7)&quot;
}

testExecutable() {
	XWININFO=`whereis -b xwininfo | cut -d' ' -f2`
	WMCTRL=`whereis -b wmctrl | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
DEPLACEMENT=
VT=7
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
ATTENTE=3 # temps en seconde avant de déclencher le &quot;chvt&quot; pour revenir sur le bon VT

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XWININFO&quot; -o -z &quot;$WMCTRL&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;xwininfo : &quot;$XWININFO
	echo &quot;wmctrl : &quot;$WMCTRL
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:d:v:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		d|deplacement)
			DEPLACEMENT=&quot;$OPTARG&quot;
		;;
	
		v|vt)
			VT=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Vieux Hack tout bancal pour revenir au bon VT sans patcher LightDM
(sleep $ATTENTE ; chvt $VT)&amp;

# Deplacement de la fenetre si besoin
if [ -n &quot;$DEPLACEMENT&quot; ]; then
	#On recherche l'ID de la fenêtre Xephyr
        XEP=`XAUTHORITY=/var/run/lightdm/root/:$XRACINE $XWININFO -root -children -all -display :$XRACINE | grep &quot;Xephyr on :$POSTE&quot; --max-count=1`;

	if [ -z &quot;$XEP&quot; ]; then
		echo &quot;fenêtre Xephyr non trouvé pour le poste $POSTE&quot;
		exit 5
	fi
    XEPHYR_WIN_ID=`echo ${XEP} | cut -d' ' -f1`;
    $WMCTRL 2&gt;&amp;1 -v -i -r ${XEPHYR_WIN_ID} -e 0,${DEPLACEMENT},-1,-1;
	if [ $? -ne 0 ]; then
		echo &quot;Erreur lors du déplacement de la fenêtre Xephyr pour le poste $POSTE&quot;
		exit 7
	fi
fi

# Mise en place des variables d'environnement pour le greeter (utile ?)
export DISPLAY=:$POSTE
export XAUTHORITY=/var/run/lightdm/root/:$POSTE
&lt;/pre&gt;
Petite explication concernant la ligne suivante
 (sleep $ATTENTE ; chvt $VT)&amp;
Comme je n'ai pas patché LightDM pour éviter le changement de VT et que Xephyr m'empêche de faire un Ctrl+Alt+7 (avec le driver evdev) pour revenir au bon VT, j'ai du mettre en place un automatisme. Certes c'est loin d'être parfait mais ça rempli correctement son office.

===session-setup-script.sh===
Script indispensable pour retourner sur le bon VT une fois l'utilisateur identifié.
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### VALEURS PAR DEFAUT #############
VT=7
ATTENTE=5 # temps en seconde avant de déclencher le &quot;chvt&quot; pour revenir sur le bon VT

while getopts &quot;:a:v:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		a|attente)
			ATTENTE=$OPTARG
		;;
		v|vt)
			VT=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' necessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

# Vieux Hack tout bancal pour revenir au bon VT sans patcher LightDM
(sleep $ATTENTE ; chvt $VT)&amp;
&lt;/pre&gt;
===etc/init.d/lightdm===

Il se peut que tout ne se passe pas comme prévue et que l'interface de connexion ne s'affiche pas, ni sur le VT affiché ni sur un autre. cependant en faisant un arrêt relance du serveur tout se passe bien.
Pour résoudre ce souci il suffit de modifier très légèrement le script d'init, il faut ajouter une contrainte ($all) sur la ligne suivante.
&lt;pre&gt;
# Required-Start:    $local_fs $remote_fs x11-common $all
&lt;/pre&gt;
Ensuite il faut faire un simple couple de commande :
&lt;/pre&gt;
# update-rc.d -f  lightdm remove
# update-rc.d lightdm defaults
&lt;/pre&gt;
Et la réorganisation devrait être pris en compte.

==Modification du système==
===Montage des périphériques USB===
On se rend assez vite compte que si l'on branche une clé USB elle n'apparait pas automatiquement sur le bureau et elle est encore moins &quot;montable&quot; par un utilisateur classique. Elle apparait bien dans la liste des périphériques accessibles (volet de gauche sur nautilus) mais il y a un problème de droit.
Un petit rappel de la chaine mise en jeu lorsque l'on branche une clé USB ou tout autre périphérique.
* Détection par le noyau de l'ajout d'un matériel
* Udev prend le relais et créé les périphériques block nécessaires dans /dev
* PolicyKit termine le travail en mettant en place les autorisations adéquates

Donc le blocage vient de ce dernier composant, il ne reconnaît pas une session Xephyr comme &quot;active&quot; et donc refuse le montage de ce type de périphérique par l'utilisateur lambda. Pour passer au delà de cette limitation on va redéfinir la règle de montage, pour cela il faut aller dans le répertoire suivant :
 /etc/polkit-1/localauthority/50-local.d
Et y créer un fichier, &quot;10-udisk.pkla&quot; par exemple
&lt;pre&gt;
[Allow mounting from Xephyr]
Identity=*
Action=org.freedesktop.udisks.change;org.freedesktop.udisks.drive-detach;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.filesystem-unmount-others
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

Voilà, avec Gnome3 dans le volet de gauche de Nautilus on peut cliquer sur l'icône de la clé USB pour qu'elle se monte correctement, idem avec LXDE.
Je recommande de désactiver l'automontage des périphériques USB afin que l'utilisateur qui branche la clé puisse la monter sans interférence.

===Gestion de l'énergie===
De la même manière que précédemment, par défaut il est impossible d'éteindre l'ordinateur depuis la session graphique (hors LightDM).
Donc pour cela on créé un nouveau fichier (20-upower.pkla) dans :
 /etc/polkit-1/localauthority/50-local.d

&lt;pre&gt;
[Suspend/hibernate permissions]
Identity=*
Action=org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

===Gestion du son===
Par défaut Pulseaudio est lancé lors de l'identification d'un utilisateur, du coup il est le seul qui puisse utiliser la carte son. Pour pallier à ce problème il faut rendre pulseaudio démon du système.
Pour cela il faut modifier plusieurs fichiers de configuration :
* /etc/default/pulseaudio
&lt;pre&gt;PULSEAUDIO_SYSTEM_START=1&lt;/pre&gt;

* /etc/pulse/daemon.conf
&lt;pre&gt;daemonize = yes
local-server-type = system&lt;/pre&gt;

* /etc/pulse/client.conf
&lt;pre&gt;autospawn = no&lt;/pre&gt;

* Modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot;
 usermod -aG pulse-access &lt;username&gt;

* On peut enlever l'utilisateur des groupes &quot;audio&quot; et &quot;pulse&quot; pour éviter qu'il prenne la main sur la carte son ou Pulseaudio
 deluser &lt;username&gt; audio
 deluser &lt;username&gt; pulse

([http://askubuntu.com/questions/192522/how-do-i-configure-sound-with-pulseaudio-and-multiseat source] [http://disjunkt.com/jd/2010/en/multiseat-linux/multiseat-linux-system-wide-pulseaudio-for-routing-sounds-109/ source2])

====Modification des DE (Gnome, KDE, LXDE, ...)====
Par défaut les environnements graphique exécutent Pulseaudio en espace utilisateur, ce qu'il ne faut plus faire puisqu'il est partagé, ce qui ne devrait plus être possible si vous avez enlevé les utilisateurs des groupes. Donc il est nécessaire de désactiver cela avec l'outil de votre environnement de Bureau. Par exemple pour LXDE il s'agit de lxsession, si vous avez des problème pour cet environnement [http://wiki.lxde.org/en/Autostart cette page (et ses liens)] devrait vous aider

===Aller plus loin===
* Si l'on veut restreindre ce droit par utilisateur ou par groupe on modifie la ligne &quot;Identity&quot; comme il suit
 Identity=unix-user:toto;unix-group:plugdev
* Pour creuser un peu plus la configuration de ce système on peux aller voir [http://www.freedesktop.org/software/polkit/docs/0.105/pklocalauthority.8.html cette page] sur PolicyKit
* Il serait aussi intéressant de définir des ports USB réservés pour chaque siège, mais je ne sais pas encore comment gérer cela.
* Voir s'il est possible de dédier les voies arrière à un poste et les voies avant à un autre ...

==Conclusion==
Et voilà, tout est prêt pour le redémarrage et admirer les mires de login sur leur écran respectif.

===Avantages===
* Avec du matériel de récupération on peut facilement mettre en place cette solution peu coûteuse
* La satisfaction d'avoir un poste de travail exotique
* Permettre à une tierce personne de profiter de la puissance monstre des machines récentes sans se priver de notre fauteuil favori
* Se sentir moins seul avec une/plusieurs personnes à coté de soi :-p

===Inconvénients===
* Accélération graphique fortement diminuée
* Si on débranche les claviers/souries Xephyr ne sait pas les reconnaître automatiquement au branchement. Il faut relancer Xephyr en se déconnectant ou relancer LightDM
* Un &quot;saut&quot; des 2 écrans lors de la déconnexion d'un poste, mais cela est dû à LightDM et son changment de VT intempestif.
* Surveillance de chaque mise à jour de Xorg pour ne pas avoir de surprise au redémarrage
* Recompilation nécessaire en cas de mise à jour majeure de Xorg
* Gestion des montages USB non optimale
* Les voyants du clavier (pavé numérique, Majuscule et arrêt défil) ne réagissent plus, mais le clavier réagit correctement.
* Dans l'espace de travail de certains logiciel (VLC, Gimp) la souris peut avoir un affichage lacunaire. Par exemple sous GIMP elle n'est visible que lorsqu'on la déplace, avec VLS il y a un carré noir autour d'elle quand on la déplace le reste du temps elle disparait.

===Remerciement===
Un grand merci à ce site pour m'avoir prémaché le travail ... ce qui ne m'as pas empêché d'apporter quelques améliorations à sa solution.
http://beforeafterx.blogspot.fr/2012/08/configuration-of-ligthdm-12.html</text>
      <sha1>klypza7ktfmvmd8if55r58dckx2xelr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Multiseat</title>
    <ns>0</ns>
    <id>1231</id>
    <redirect title="Multiposte" />
    <revision>
      <id>5073</id>
      <timestamp>2013-03-31T00:31:21Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <comment>Mise en place d'une solution multisiège (multiseat) avec une seule carte graphique, Xephyr et LightDM</comment>
      <text xml:space="preserve" bytes="18962">Après avoir fait du [http://www.debian-fr.org/multiseat-plusieurs-utilisateurs-sur-1-pc-t6954.html#p188187 multiseat avec 2 CG], un changement de PC m'oblige à faire la même chose mais avec une seule carte. J'ai essayé de couvrir au maximum toutes les étapes de la mise en place de la solution.

----
==Choix des outils==
Tout d'abord le raisonement pour le choix des outils à été le suivant.
* Xorg ou Wayland ?
La réponse a été rapide. Xorg clairement, Wayland est encore trop récent pour pouvoir le faire et aucun document ne traite pour l'instant de ce problème.

==== Xnest ou Xephyr ?====
Xephyr est largement plébiscité et Xnest semble tomber en désuétude. C'est par le développement de Tizen (ex-Meego) que Xephyr semble toujours actif et que de nouvelles fonctionnalités lui sont ajouté. Intel s'en sert intensément et est énormément utilisé pour le développement d'application pour smartphone comme environnement de simulation. (http://www.phoronix.com/scan.php?page=news_item&amp;px=ODc1NQ).
Un soucis avec Xephyr est que le support de evdev semble ne pas avoir été inclus dans les options de compilations. &quot;evdev&quot; permet de monopoliser les claviers et souries. Du coup il faut refaire le paquet soi-même.

==== Et la transition avec systemd ? ====
Il ne semble plus y avoir de problème particulier (http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org)

* Comment gérer 2 écran, 2 session avec une seule carte graphique ?[/list]
Il faut savoir que Xephyr permet de se greffer sur n'importe quel serveur X afin d'afficher une autre session. Par exemple avec la commande &quot;Xephyr -query 127.0.0.1&quot; vous devez pouvoir vous connecter sur votre propre machine si le protocole &quot;XDMCP&quot; est activé sur votre &quot;DM&quot; (GDM, KDM, XDM, ...). Donc le but du jeu sera d'avoir un serveur X qui va &quot;supporter&quot; 2 fenêtre Xephyr. Ces deux dernière se verrons affecter les claviers et les souries de manière exclusif.

====Et le DM ? Debian a adopté GDM(3) avec Gnome mais j'aimerais bien m'en passer.====
Avec GDM (celui de Gnome2) il existe un très bon tutoriel ici : http://netpatia.blogspot.fr/2009/06/multiseat-in-ubuntu-904.html 
Pour GDM3, le problème est que pour l'instant il ne reprend pas toutes les possibilitées de son ancienne version. 
https://live.gnome.org/GDM/ToDo
&quot;-- Allow per-display X Server commands 
		BrianCameron: The [server] and [server-foo] sections of the GDM configuration have been disabled. This means that users who depend on novel configurations which require special Xserver commands per-display is not available.&quot;

Donc bonne nouvelle, il fallait trouver une alternative en le nom de LightDM, qui est issu de Ubuntu ... 

===Prérequis===
Donc pour les pré-requis :
* Ajouter &quot;deb-src http://ftp.fr.debian.org/debian/ &lt;VersionDebian&gt; main contrib non-free&quot;
* Installer les paquage dpkg-dev, build-essential, devscripts, lightDM

==Reconstruction de Xephyr==
===Récupération des sources nécessaires===
On récupère toutes les sources du packet source xorg-server qui comprend Xephyr.

 $ apt-get source xserver-xephyr


Puis récupérer toutes les dépendances spécifique au paquet :

 $ apt-get build-dep xorg-server

Là il va télécharger un certain nombre de paquet de développement (&quot;-dev&quot;), ils sont marqué comme installé automatiquement, donc un deborphan devrait vous les enlever sans trop de problème. Sinon il existe cette commande pour être sur qu'ils sont marqué en tant que &quot;installé automatiquement&quot;, puis un &quot;apt-get autoclean&quot; les supprimera.

===Reconfiguration===
Ensuite tout se passe dans le répertoire &quot;debian&quot;

 $ cd xorg-server-1.12.4/debian


On édite le fichier &quot;changlog&quot; pour monter de version le paquet que l'on va reconstruire. Il est possible de le faire en automatique avec la commande:

 debian/$ dch -n


L'option &quot;-n&quot; permet d'incrémenter le numéro de version de façon mineur, c'est à dire l'ajout de &quot;.1&quot; en fin de numéro de version.

Sinon pour le faire en manuel, il faut ajouter une ligne du type suivant au fichier:
&lt;pre&gt;
xorg-server (2:1.12.4-5.1) UNRELEASED; urgency=low

  * Non-maintainer upload.
  * ajout des paramètre pour Xephyr et evdev

 -- Vous &lt;vous@VotreMachine&gt;  Sun, 03 Mar 2013 22:21:32 +0100
&lt;/pre&gt;

Pour éviter de réinstaller tout Xorg avec le nouveau numéro de version il faut éditer le fichier &quot;debian/control&quot; et modifier la dépendance de Xephyr (ligne ~283). Pour cela il faut remplacer le 
&lt;pre&gt;
Depends :
  xserver-common (&gt;= ${source:Version})
&lt;/pre&gt;
Par :
&lt;pre&gt;
Depends :
  xserver-common (&gt;= 2:1.12.4-5)
&lt;/pre&gt;

Le numéro doit être en accord avec la version de votre Xorg actuellement installé sur votre machine. 
Sinon cette modification est directement possible dans le .deb, toujours dans le fichier &quot;DEBIAN/control&quot;. Pour cela il faut prendre le .deb que vous avez construit, le décompresser, modifier le fichier et faire la commande &quot;dpkg-deb -b &lt;nom du répertoire contenant les fichiers&gt;&quot;. Mais il est plus pratique de le faire avant.

Je ne vous conseille pas de mettre une numéro de version trop élevé car cela pourrait engendrer une incompatibilité avec les futurs versions de Xorg.

Ensuite nous allons modifier les options de compilation en éditant le fichier &quot;rules&quot;, c'est le Makefile de la construction du packet.
Localisez &quot;confflags_main&quot; (ligne ~133) et ajouter les lignes suivant juste en dessous de &quot;--enable-kdrive&quot; (ligne ~156)

 --enable-kdrive-evdev \
 --enable-kdrive-mouse \
 --enable-kdrive-kbd \

===Recompilation===
Passons maintenant à la recompilation proprement dite :
 $ fakeroot ./rules binary

Et laisser la compilation et la création des paquets se faire ... cela peut prendre quelques minutes.

Si pour une raison il vous faut refaire entièrement la compilation il faut d'abord faire la commande suivante
 $ fakeroot ./rules clean

Si c'est juste refaire les &quot;.deb&quot; (correction du numéro de dépendance, ...), alors cette commande suffit.
 $ fakeroot ./rules binary-deb

===Installation du paquet obtenue===
Enfin pour installer votre paket (qui se trouve dans le répertoire supérieur) il faut faire :
 #dpkg -i xserver-xephyr_1.12.4-5_i386.deb
Ou de manière graphique avec GDebi.

==Configuration de Xorg==
===Définition de l'existant===
Pour rappel le principe seras d'avoir une session X qui va héberger 2 sessions Xephyr qui serviront les différents sièges.
Tout d'abord nous allons faire un fichier de conf pour le serveur Xorg. Pour ne pas démarrer de rien on peut lancer la commande (en root) &quot;Xorg -configure&quot; qui génère le fichier &quot;xorg.conf.new&quot; dans &quot;/root&quot;. Ensuite on fait un petit &quot;xrandr&quot; pour identifier les sorties disponibles.
&lt;pre&gt;
$ xrandr

Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 593mm
&lt;/pre&gt;

&quot;DVI-0&quot; &amp; &quot;HDMI-0&quot; sont les 2 disponibles sur la machine. On peux aussi trouver du &quot;VGA-0&quot; ou &quot;LVDS&quot; pour les écrans de portables.

===Exemple de fichier de configuration===
Dans cet exemple on peut avoir un &quot;/etc/xorg.conf&quot; comme suivant :
&lt;pre&gt;
##################################################################
Section &quot;Monitor&quot;
	Identifier  &quot;HannsG&quot;
	Option      &quot;PreferredMode&quot; &quot;1920x1200&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
	Option		&quot;Primary&quot; &quot;true&quot;
EndSection

Section &quot;Monitor&quot;
	Identifier  &quot;Acer&quot;
	Option      &quot;PreferredMode&quot; &quot;1680x1050&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
EndSection

Section &quot;Device&quot;
	Identifier  &quot;card0&quot;
	Driver      &quot;radeon&quot;
	# Ici on associe les sorties video avec une section &quot;Monitor&quot;
	# On remarquera le &quot;Monitor&quot; devant le nom des sortie, c'est indispensable (cf : http://www.x.org/archive/current/doc/man/man5/xorg.conf.5.xhtml#heading12)
	Option      &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
	Option      &quot;Monitor-DVI-0&quot; &quot;Acer&quot;
EndSection

##################################################################

Section &quot;Screen&quot;
	Identifier  &quot;ecran1&quot;
	Device      &quot;card0&quot;
	Monitor     &quot;HansG&quot;
	DefaultDepth 24
	SubSection &quot;Display&quot;
 		Depth   24
		Virtual 3600 1200
	EndSubSection
EndSection

Section &quot;ServerLayout&quot;
	Identifier    &quot;dualscreen&quot;
	Screen      0  &quot;ecran1&quot;
EndSection
##################################################################
&lt;/pre&gt;

==Configuration de LightDM==
Nous allons maintenant regarder la configuration de LightDM d'un peu plus près. Le fichier de configuration par défaut expose toutes les options possibles du dit fichier. Nous allons garder le strict minimum
===lightdm.conf===
Pour cela éditons le fichier /etc/lightd/lightdm.conf

&lt;pre&gt;
[LightDM]
 greeter-user=root
 user-authority-in-system-dir=false

 [SeatDefaults]
 xserver-allow-tcp=false
 greeter-hide-users=false
 user-session=lightdm-xsession
 session-wrapper=/etc/X11/Xsession

 [Seat:1]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 1 -t 1680x1050 -P evdev -s /dev/input/by-id/usb-Logitech_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd -v bepo 
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 1
 greeter-session=lightdm-greeter

[Seat:2]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 2 -t 1920x1200 -P evdev -s /dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-path/platform-i8042-serio-0-event-kbd
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 2 -d 1680,0
 greeter-session=lightdm-greeter
&lt;/pre&gt;

Il y a plusieurs chose à savoir concernant le fonctionnement de LightDM afin de comprendre ce qui est fait.
-- La section &quot;SeatDefault&quot; est commune à tous les siège définit après
-- Chaque &quot;Seat&quot; est exécuté dans l'ordre dans un VT différent et ce même si, dans notre cas, tout se passe dans le VT7 ([url=https://code.launchpad.net/~andrzejtp2010/lightdm/lightdm-trunk-xephyr-multiseat/+merge/120286]un patch[url] à été proposé pour palier à ce problème mais il n'a pas été accepté ... pour l'instant)
-- Chaque propriétés de tous les &quot;Seat&quot; sont lancé dans un ordre précis, d'abord tous les &quot;xserver-command&quot;, puis tous les &quot;greeter-setup-script&quot;, enfin tous les &quot;greeter-session&quot;. Si vous mettez d'autres propriétés elle seront exécuter suivant leur ordre pré-établi.
-- Si les &quot;greeter&quot; se termine, lightDM coupe le &quot;xserver-command&quot; correspondant. De même si le &quot;xserver-command&quot; se termine le greeter est coupé.

Donc pour que tout se positionne correctement il faut
-- D'abord lancer le serveur X qui servira de support, ce qui est fait en le mettant en tant que premier &quot;Seat&quot;
-- Lancer les fenêtres Xephyr avec les optons qui vont bien, ce qui est fait avec le script &quot;Xephyr-command.sh&quot; et ses arguments
-- Simuler un &quot;greeter&quot; pour le &quot;Seat :0&quot; afin que le serveur X ne soit pas tuer par lightDM, ce qui est fait avec le script &quot;fake-greeter&quot;
-- Exécuter un script qui va placer les fenêtre Xephyr si besoin et initialiser les variables d'environnement correctement, fait avec &quot;Xephyr-greeter-setup.sh&quot;
-- Exécuter les &quot;greeter&quot; dans les fenêtre Xephyr

===fake-greeter.desktop===
Pour le faux greeter du serveur X il faut créer un fichier dans &quot;/usr/share/xgreeters/fake-greeter.desktop&quot; et y copier son contenu :
&lt;pre&gt;
[Desktop Entry]
Name=LightDM fake greeter
Comment=This runs no greeter at all, it should only be run from LightDM
Exec=sleep infinity
Type=Application
X-Ubuntu-Gettext-Domain=lightdm
&lt;/pre&gt;

Après tout cela nous allons créer un script qui permettra de créer (&quot;Xephyr-command.sh&quot;) et un autre pour placer les fenêtre à l'écran (&quot;Xephyr-greeter-setup.sh&quot;).
Tout d'abord il est nécessaire d'installer le petit utilitaire &quot;wmctrl&quot; avec
 # aptitude install wmctrl
===Xephyr-command.sh===
 Le contenue du fichier &quot;Xephyr-command.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -t, taille : Doit être de la forme 9999x9999, (dafaut = 1024x768)&quot;
  echo &quot;\t -s, sourie : /dev/input/[by-path|by-id]/...event-mouse&quot;
  echo &quot;\t -c, clavier : /dev/input/[by-path|by-id]/...event-kbd&quot;
  echo &quot;\t -l, layout : fr, es, en, ... (défaut = fr)&quot;
  echo &quot;\t -v, variant : fr, latin9, bepo, ... (défaut = &lt;vide&gt;)&quot;
  echo &quot;\t -P, Pilote : ephyr ou evdev (défaut = ephyr)&quot;
}

testExecutable() {
	XEPHYR=`whereis -b Xephyr | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
TAILLE=&quot;1024x768&quot;
SOURIE=
CLAVIER=
LAYOUT=&quot;fr&quot;
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
PILOTE=ephyr # Test = ephyr ; Prod = evdev

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XEPHYR&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;Xephyr : &quot;$XEPHYR
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:t:s:c:l:v:P:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		t|taille)
			TAILLE=&quot;$OPTARG&quot;
		;;

		s|sourie)
			SOURIE=$OPTARG
			if  ! [ -r $SOURIE ];then
				echo &quot;La sourie n'est pas accessible&quot;
				exit 3
			fi
		;;

		c|clavier)
			CLAVIER=$OPTARG
			if  ! [ -r $CLAVIER ];then
				echo &quot;Le clavier n'est pas accessible&quot;
				exit 4
			fi
		;;

		l|layout)
			LAYOUT=$OPTARG
		;;

		v|variant)
			VARIANT=$OPTARG
		;;

		P|Pilote)
			PILOTE=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Construction de la ligne d&quot;argument
OPTIONS=&quot;&quot;

if [ -n &quot;${TAILLE}&quot; ]; then
	OPTIONS=&quot; -screen ${TAILLE}&quot;
fi

if [ -n &quot;${CLAVIER}&quot; ]; then
	if [ -n &quot;${LAYOUT}&quot; ]; then
		OPTIONS=$OPTIONS&quot; -keybd $PILOTE,,device=${CLAVIER},xkbrules=evdev,xkbmodel=evdev,xkblayout=${LAYOUT}&quot;
		if [ -n &quot;${VARIANT}&quot; ]; then
			OPTIONS=$OPTIONS&quot;,xkbvariant=${VARIANT}&quot;
		fi
	fi
fi

if [ -n &quot;${SOURIE}&quot; ]; then
	OPTIONS=$OPTIONS&quot; -mouse $PILOTE,,device=${SOURIE}&quot;
fi

# Lancement de Xephyr en arrière plan
echo &quot;$XEPHYR -retro $OPTIONS :$POSTE&quot;
exec $XEPHYR -retro  $OPTIONS :$POSTE
&lt;/pre&gt;

Petite explication sur la dernière ligne. Le &quot;exec&quot; fait en sorte que ce soit le processus de Xephyr qui prend la place du script, donc il reprend le PID et tout ce qui va bien. Ca permet surtout à ce que le signal USR1 que Xephyr lance au PPID, soit bien récupéré par LightDM et que ce dernier continue son fonctionnement normalement.

===Xephyr-greeter-setup.sh===
Le contenue du fichier &quot;Xephyr-greeter-setup.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p|--poste numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -d, --deplacement : de la forme 'x,y' (en pixel)&quot;
  echo &quot;\t -v, --vt : 7, 8, 9, 10, 11 (defaut = 7)&quot;
}

testExecutable() {
	XWININFO=`whereis -b xwininfo | cut -d' ' -f2`
	WMCTRL=`whereis -b wmctrl | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
DEPLACEMENT=
VT=7
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
ATTENTE=3 # temps en seconde avant de déclencher le &quot;chvt&quot; pour revenir sur le bon VT

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XWININFO&quot; -o -z &quot;$WMCTRL&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;xwininfo : &quot;$XWININFO
	echo &quot;wmctrl : &quot;$WMCTRL
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:d:v:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		d|deplacement)
			DEPLACEMENT=&quot;$OPTARG&quot;
		;;
	
		v|vt)
			VT=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Vieux Hack tout bancal pour revenir au bon VT sans patcher LightDM
(sleep $ATTENTE ; chvt $VT)&amp;

# Deplacement de la fenetre si besoin
if [ -n &quot;$DEPLACEMENT&quot; ]; then
	#On recherche l'ID de la fenêtre Xephyr
        XEP=`XAUTHORITY=/var/run/lightdm/root/:$XRACINE $XWININFO -root -children -all -display :$XRACINE | grep &quot;Xephyr on :$POSTE&quot; --max-count=1`;

	if [ -z &quot;$XEP&quot; ]; then
		echo &quot;fenêtre Xephyr non trouvé pour le poste $POSTE&quot;
		exit 5
	fi
    XEPHYR_WIN_ID=`echo ${XEP} | cut -d' ' -f1`;
    $WMCTRL 2&gt;&amp;1 -v -i -r ${XEPHYR_WIN_ID} -e 0,${DEPLACEMENT},-1,-1;
	if [ $? -ne 0 ]; then
		echo &quot;Erreur lors du déplacement de la fenêtre Xephyr pour le poste $POSTE&quot;
		exit 7
	fi
fi

# Mise en place des variables d'environnement pour le greeter (utile ?)
export DISPLAY=:$POSTE
export XAUTHORITY=/var/run/lightdm/root/:$POSTE
&lt;/pre&gt;
Petite explication concernant la ligne suivante
 (sleep $ATTENTE ; chvt $VT)&amp;
Comme je n'ai pas patché LightDM pour éviter le changement de VT et que Xephyr m'empêche de faire un Ctrl+Alt+7 (avec le driver evdev) pour revenir au bon VT, j'ai du mettre en place un automatisme. Certes c'est loin d'être parfait mais ça rempli correctement son office.

==Conclusion==
Et voilà, tout est prêt pour le redémarrage et admirer les mires de login sur leur écran respectif.

===Avantages===
* Avec du matériel de récupération on peut facilement mettre en place cette solution peut coûteuse
* La satisfaction d'avoir un poste de travail exotique
* Permettre a une tierce personne de profiter de la puissance monstre des machines récente sans se privée de notre fauteuil favoris
* Se sentir moins avec une personne à coté

===Inconvénients===
* Accélération graphique fortement diminué
* Gestion des montages de périphérique USB non géré dans ce tuto
* Un &quot;saut&quot; des 2 écran lors de la déconnexion d'un poste
* Surveillance de chaque mis à jour de Xorg pour ne pas avoir de surprise au redémarrage
* Recompilation nécessaire en cas de mise à jour majeur de Xorg


===Remerciement===
Un grand merci à ce site pour m'avoir prémaché le travail ... ce qui ne m'as pas empêché d'apporter quelques améliorations à sa solution.
http://beforeafterx.blogspot.fr/2012/08/configuration-of-ligthdm-12.html</text>
      <sha1>sg57mwkt0vg9na4evvkrtrlakms7yn3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5076</id>
      <parentid>5073</parentid>
      <timestamp>2013-03-31T00:51:20Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <comment>ajout fichiers</comment>
      <text xml:space="preserve" bytes="19104">Après avoir fait du [http://www.debian-fr.org/multiseat-plusieurs-utilisateurs-sur-1-pc-t6954.html#p188187 multiseat avec 2 CG], un changement de PC m'oblige à faire la même chose mais avec une seule carte. J'ai essayé de couvrir au maximum toutes les étapes de la mise en place de la solution.

----
==Choix des outils==
Tout d'abord le raisonement pour le choix des outils à été le suivant.
* Xorg ou Wayland ?
La réponse a été rapide. Xorg clairement, Wayland est encore trop récent pour pouvoir le faire et aucun document ne traite pour l'instant de ce problème.

==== Xnest ou Xephyr ?====
Xephyr est largement plébiscité et Xnest semble tomber en désuétude. C'est par le développement de Tizen (ex-Meego) que Xephyr semble toujours actif et que de nouvelles fonctionnalités lui sont ajouté. Intel s'en sert intensément et est énormément utilisé pour le développement d'application pour smartphone comme environnement de simulation. (http://www.phoronix.com/scan.php?page=news_item&amp;px=ODc1NQ).
Un soucis avec Xephyr est que le support de evdev semble ne pas avoir été inclus dans les options de compilations. &quot;evdev&quot; permet de monopoliser les claviers et souries. Du coup il faut refaire le paquet soi-même.

==== Et la transition avec systemd ? ====
Il ne semble plus y avoir de problème particulier (http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org)

* Comment gérer 2 écran, 2 session avec une seule carte graphique ?[/list]
Il faut savoir que Xephyr permet de se greffer sur n'importe quel serveur X afin d'afficher une autre session. Par exemple avec la commande &quot;Xephyr -query 127.0.0.1&quot; vous devez pouvoir vous connecter sur votre propre machine si le protocole &quot;XDMCP&quot; est activé sur votre &quot;DM&quot; (GDM, KDM, XDM, ...). Donc le but du jeu sera d'avoir un serveur X qui va &quot;supporter&quot; 2 fenêtre Xephyr. Ces deux dernière se verrons affecter les claviers et les souries de manière exclusif.

====Et le DM ? Debian a adopté GDM(3) avec Gnome mais j'aimerais bien m'en passer.====
Avec GDM (celui de Gnome2) il existe un très bon tutoriel ici : http://netpatia.blogspot.fr/2009/06/multiseat-in-ubuntu-904.html 
Pour GDM3, le problème est que pour l'instant il ne reprend pas toutes les possibilitées de son ancienne version. 
https://live.gnome.org/GDM/ToDo
&quot;-- Allow per-display X Server commands 
		BrianCameron: The [server] and [server-foo] sections of the GDM configuration have been disabled. This means that users who depend on novel configurations which require special Xserver commands per-display is not available.&quot;

Donc bonne nouvelle, il fallait trouver une alternative en le nom de LightDM, qui est issu de Ubuntu ... 

===Prérequis===
Donc pour les pré-requis :
* Ajouter &quot;deb-src http://ftp.fr.debian.org/debian/ &lt;VersionDebian&gt; main contrib non-free&quot;
* Installer les paquage dpkg-dev, build-essential, devscripts, lightDM

==Reconstruction de Xephyr==
===Récupération des sources nécessaires===
On récupère toutes les sources du packet source xorg-server qui comprend Xephyr.

 $ apt-get source xserver-xephyr


Puis récupérer toutes les dépendances spécifique au paquet :

 $ apt-get build-dep xorg-server

Là il va télécharger un certain nombre de paquet de développement (&quot;-dev&quot;), ils sont marqué comme installé automatiquement, donc un deborphan devrait vous les enlever sans trop de problème. Sinon il existe cette commande pour être sur qu'ils sont marqué en tant que &quot;installé automatiquement&quot;, puis un &quot;apt-get autoclean&quot; les supprimera.

===Reconfiguration===
Ensuite tout se passe dans le répertoire &quot;debian&quot;

 $ cd xorg-server-1.12.4/debian


On édite le fichier &quot;changlog&quot; pour monter de version le paquet que l'on va reconstruire. Il est possible de le faire en automatique avec la commande:

 debian/$ dch -n


L'option &quot;-n&quot; permet d'incrémenter le numéro de version de façon mineur, c'est à dire l'ajout de &quot;.1&quot; en fin de numéro de version.

Sinon pour le faire en manuel, il faut ajouter une ligne du type suivant au fichier:
&lt;pre&gt;
xorg-server (2:1.12.4-5.1) UNRELEASED; urgency=low

  * Non-maintainer upload.
  * ajout des paramètre pour Xephyr et evdev

 -- Vous &lt;vous@VotreMachine&gt;  Sun, 03 Mar 2013 22:21:32 +0100
&lt;/pre&gt;

Pour éviter de réinstaller tout Xorg avec le nouveau numéro de version il faut éditer le fichier &quot;debian/control&quot; et modifier la dépendance de Xephyr (ligne ~283). Pour cela il faut remplacer le 
&lt;pre&gt;
Depends :
  xserver-common (&gt;= ${source:Version})
&lt;/pre&gt;
Par :
&lt;pre&gt;
Depends :
  xserver-common (&gt;= 2:1.12.4-5)
&lt;/pre&gt;

Le numéro doit être en accord avec la version de votre Xorg actuellement installé sur votre machine. 
Sinon cette modification est directement possible dans le .deb, toujours dans le fichier &quot;DEBIAN/control&quot;. Pour cela il faut prendre le .deb que vous avez construit, le décompresser, modifier le fichier et faire la commande &quot;dpkg-deb -b &lt;nom du répertoire contenant les fichiers&gt;&quot;. Mais il est plus pratique de le faire avant.

Je ne vous conseille pas de mettre une numéro de version trop élevé car cela pourrait engendrer une incompatibilité avec les futurs versions de Xorg.

Ensuite nous allons modifier les options de compilation en éditant le fichier &quot;rules&quot;, c'est le Makefile de la construction du packet.
Localisez &quot;confflags_main&quot; (ligne ~133) et ajouter les lignes suivant juste en dessous de &quot;--enable-kdrive&quot; (ligne ~156)

 --enable-kdrive-evdev \
 --enable-kdrive-mouse \
 --enable-kdrive-kbd \

===Recompilation===
Passons maintenant à la recompilation proprement dite :
 $ fakeroot ./rules binary

Et laisser la compilation et la création des paquets se faire ... cela peut prendre quelques minutes.

Si pour une raison il vous faut refaire entièrement la compilation il faut d'abord faire la commande suivante
 $ fakeroot ./rules clean

Si c'est juste refaire les &quot;.deb&quot; (correction du numéro de dépendance, ...), alors cette commande suffit.
 $ fakeroot ./rules binary-deb

===Installation du paquet obtenue===
Enfin pour installer votre paket (qui se trouve dans le répertoire supérieur) il faut faire :
 #dpkg -i xserver-xephyr_1.12.4-5_i386.deb
Ou de manière graphique avec GDebi.
====Paquets déjà prêt====
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6_i386.deb.tar]]
* [[{{ns:file}}:Xserver-xephyr_1.12.4-5.1_amd64.deb.tar]]

==Configuration de Xorg==
===Définition de l'existant===
Pour rappel le principe seras d'avoir une session X qui va héberger 2 sessions Xephyr qui serviront les différents sièges.
Tout d'abord nous allons faire un fichier de conf pour le serveur Xorg. Pour ne pas démarrer de rien on peut lancer la commande (en root) &quot;Xorg -configure&quot; qui génère le fichier &quot;xorg.conf.new&quot; dans &quot;/root&quot;. Ensuite on fait un petit &quot;xrandr&quot; pour identifier les sorties disponibles.
&lt;pre&gt;
$ xrandr

Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 593mm
&lt;/pre&gt;

&quot;DVI-0&quot; &amp; &quot;HDMI-0&quot; sont les 2 disponibles sur la machine. On peux aussi trouver du &quot;VGA-0&quot; ou &quot;LVDS&quot; pour les écrans de portables.

===Exemple de fichier de configuration===
Dans cet exemple on peut avoir un &quot;/etc/xorg.conf&quot; comme suivant :
&lt;pre&gt;
##################################################################
Section &quot;Monitor&quot;
	Identifier  &quot;HannsG&quot;
	Option      &quot;PreferredMode&quot; &quot;1920x1200&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
	Option		&quot;Primary&quot; &quot;true&quot;
EndSection

Section &quot;Monitor&quot;
	Identifier  &quot;Acer&quot;
	Option      &quot;PreferredMode&quot; &quot;1680x1050&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
EndSection

Section &quot;Device&quot;
	Identifier  &quot;card0&quot;
	Driver      &quot;radeon&quot;
	# Ici on associe les sorties video avec une section &quot;Monitor&quot;
	# On remarquera le &quot;Monitor&quot; devant le nom des sortie, c'est indispensable (cf : http://www.x.org/archive/current/doc/man/man5/xorg.conf.5.xhtml#heading12)
	Option      &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
	Option      &quot;Monitor-DVI-0&quot; &quot;Acer&quot;
EndSection

##################################################################

Section &quot;Screen&quot;
	Identifier  &quot;ecran1&quot;
	Device      &quot;card0&quot;
	Monitor     &quot;HansG&quot;
	DefaultDepth 24
	SubSection &quot;Display&quot;
 		Depth   24
		Virtual 3600 1200
	EndSubSection
EndSection

Section &quot;ServerLayout&quot;
	Identifier    &quot;dualscreen&quot;
	Screen      0  &quot;ecran1&quot;
EndSection
##################################################################
&lt;/pre&gt;

==Configuration de LightDM==
Nous allons maintenant regarder la configuration de LightDM d'un peu plus près. Le fichier de configuration par défaut expose toutes les options possibles du dit fichier. Nous allons garder le strict minimum
===lightdm.conf===
Pour cela éditons le fichier /etc/lightd/lightdm.conf

&lt;pre&gt;
[LightDM]
 greeter-user=root
 user-authority-in-system-dir=false

 [SeatDefaults]
 xserver-allow-tcp=false
 greeter-hide-users=false
 user-session=lightdm-xsession
 session-wrapper=/etc/X11/Xsession

 [Seat:1]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 1 -t 1680x1050 -P evdev -s /dev/input/by-id/usb-Logitech_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd -v bepo 
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 1
 greeter-session=lightdm-greeter

[Seat:2]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 2 -t 1920x1200 -P evdev -s /dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-path/platform-i8042-serio-0-event-kbd
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 2 -d 1680,0
 greeter-session=lightdm-greeter
&lt;/pre&gt;

Il y a plusieurs chose à savoir concernant le fonctionnement de LightDM afin de comprendre ce qui est fait.
-- La section &quot;SeatDefault&quot; est commune à tous les siège définit après
-- Chaque &quot;Seat&quot; est exécuté dans l'ordre dans un VT différent et ce même si, dans notre cas, tout se passe dans le VT7 ([url=https://code.launchpad.net/~andrzejtp2010/lightdm/lightdm-trunk-xephyr-multiseat/+merge/120286]un patch[url] à été proposé pour palier à ce problème mais il n'a pas été accepté ... pour l'instant)
-- Chaque propriétés de tous les &quot;Seat&quot; sont lancé dans un ordre précis, d'abord tous les &quot;xserver-command&quot;, puis tous les &quot;greeter-setup-script&quot;, enfin tous les &quot;greeter-session&quot;. Si vous mettez d'autres propriétés elle seront exécuter suivant leur ordre pré-établi.
-- Si les &quot;greeter&quot; se termine, lightDM coupe le &quot;xserver-command&quot; correspondant. De même si le &quot;xserver-command&quot; se termine le greeter est coupé.

Donc pour que tout se positionne correctement il faut
-- D'abord lancer le serveur X qui servira de support, ce qui est fait en le mettant en tant que premier &quot;Seat&quot;
-- Lancer les fenêtres Xephyr avec les optons qui vont bien, ce qui est fait avec le script &quot;Xephyr-command.sh&quot; et ses arguments
-- Simuler un &quot;greeter&quot; pour le &quot;Seat :0&quot; afin que le serveur X ne soit pas tuer par lightDM, ce qui est fait avec le script &quot;fake-greeter&quot;
-- Exécuter un script qui va placer les fenêtre Xephyr si besoin et initialiser les variables d'environnement correctement, fait avec &quot;Xephyr-greeter-setup.sh&quot;
-- Exécuter les &quot;greeter&quot; dans les fenêtre Xephyr

===fake-greeter.desktop===
Pour le faux greeter du serveur X il faut créer un fichier dans &quot;/usr/share/xgreeters/fake-greeter.desktop&quot; et y copier son contenu :
&lt;pre&gt;
[Desktop Entry]
Name=LightDM fake greeter
Comment=This runs no greeter at all, it should only be run from LightDM
Exec=sleep infinity
Type=Application
X-Ubuntu-Gettext-Domain=lightdm
&lt;/pre&gt;

Après tout cela nous allons créer un script qui permettra de créer (&quot;Xephyr-command.sh&quot;) et un autre pour placer les fenêtre à l'écran (&quot;Xephyr-greeter-setup.sh&quot;).
Tout d'abord il est nécessaire d'installer le petit utilitaire &quot;wmctrl&quot; avec
 # aptitude install wmctrl
===Xephyr-command.sh===
 Le contenue du fichier &quot;Xephyr-command.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -t, taille : Doit être de la forme 9999x9999, (dafaut = 1024x768)&quot;
  echo &quot;\t -s, sourie : /dev/input/[by-path|by-id]/...event-mouse&quot;
  echo &quot;\t -c, clavier : /dev/input/[by-path|by-id]/...event-kbd&quot;
  echo &quot;\t -l, layout : fr, es, en, ... (défaut = fr)&quot;
  echo &quot;\t -v, variant : fr, latin9, bepo, ... (défaut = &lt;vide&gt;)&quot;
  echo &quot;\t -P, Pilote : ephyr ou evdev (défaut = ephyr)&quot;
}

testExecutable() {
	XEPHYR=`whereis -b Xephyr | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
TAILLE=&quot;1024x768&quot;
SOURIE=
CLAVIER=
LAYOUT=&quot;fr&quot;
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
PILOTE=ephyr # Test = ephyr ; Prod = evdev

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XEPHYR&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;Xephyr : &quot;$XEPHYR
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:t:s:c:l:v:P:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		t|taille)
			TAILLE=&quot;$OPTARG&quot;
		;;

		s|sourie)
			SOURIE=$OPTARG
			if  ! [ -r $SOURIE ];then
				echo &quot;La sourie n'est pas accessible&quot;
				exit 3
			fi
		;;

		c|clavier)
			CLAVIER=$OPTARG
			if  ! [ -r $CLAVIER ];then
				echo &quot;Le clavier n'est pas accessible&quot;
				exit 4
			fi
		;;

		l|layout)
			LAYOUT=$OPTARG
		;;

		v|variant)
			VARIANT=$OPTARG
		;;

		P|Pilote)
			PILOTE=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Construction de la ligne d&quot;argument
OPTIONS=&quot;&quot;

if [ -n &quot;${TAILLE}&quot; ]; then
	OPTIONS=&quot; -screen ${TAILLE}&quot;
fi

if [ -n &quot;${CLAVIER}&quot; ]; then
	if [ -n &quot;${LAYOUT}&quot; ]; then
		OPTIONS=$OPTIONS&quot; -keybd $PILOTE,,device=${CLAVIER},xkbrules=evdev,xkbmodel=evdev,xkblayout=${LAYOUT}&quot;
		if [ -n &quot;${VARIANT}&quot; ]; then
			OPTIONS=$OPTIONS&quot;,xkbvariant=${VARIANT}&quot;
		fi
	fi
fi

if [ -n &quot;${SOURIE}&quot; ]; then
	OPTIONS=$OPTIONS&quot; -mouse $PILOTE,,device=${SOURIE}&quot;
fi

# Lancement de Xephyr en arrière plan
echo &quot;$XEPHYR -retro $OPTIONS :$POSTE&quot;
exec $XEPHYR -retro  $OPTIONS :$POSTE
&lt;/pre&gt;

Petite explication sur la dernière ligne. Le &quot;exec&quot; fait en sorte que ce soit le processus de Xephyr qui prend la place du script, donc il reprend le PID et tout ce qui va bien. Ca permet surtout à ce que le signal USR1 que Xephyr lance au PPID, soit bien récupéré par LightDM et que ce dernier continue son fonctionnement normalement.

===Xephyr-greeter-setup.sh===
Le contenue du fichier &quot;Xephyr-greeter-setup.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p|--poste numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -d, --deplacement : de la forme 'x,y' (en pixel)&quot;
  echo &quot;\t -v, --vt : 7, 8, 9, 10, 11 (defaut = 7)&quot;
}

testExecutable() {
	XWININFO=`whereis -b xwininfo | cut -d' ' -f2`
	WMCTRL=`whereis -b wmctrl | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
DEPLACEMENT=
VT=7
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
ATTENTE=3 # temps en seconde avant de déclencher le &quot;chvt&quot; pour revenir sur le bon VT

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XWININFO&quot; -o -z &quot;$WMCTRL&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;xwininfo : &quot;$XWININFO
	echo &quot;wmctrl : &quot;$WMCTRL
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:d:v:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		d|deplacement)
			DEPLACEMENT=&quot;$OPTARG&quot;
		;;
	
		v|vt)
			VT=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Vieux Hack tout bancal pour revenir au bon VT sans patcher LightDM
(sleep $ATTENTE ; chvt $VT)&amp;

# Deplacement de la fenetre si besoin
if [ -n &quot;$DEPLACEMENT&quot; ]; then
	#On recherche l'ID de la fenêtre Xephyr
        XEP=`XAUTHORITY=/var/run/lightdm/root/:$XRACINE $XWININFO -root -children -all -display :$XRACINE | grep &quot;Xephyr on :$POSTE&quot; --max-count=1`;

	if [ -z &quot;$XEP&quot; ]; then
		echo &quot;fenêtre Xephyr non trouvé pour le poste $POSTE&quot;
		exit 5
	fi
    XEPHYR_WIN_ID=`echo ${XEP} | cut -d' ' -f1`;
    $WMCTRL 2&gt;&amp;1 -v -i -r ${XEPHYR_WIN_ID} -e 0,${DEPLACEMENT},-1,-1;
	if [ $? -ne 0 ]; then
		echo &quot;Erreur lors du déplacement de la fenêtre Xephyr pour le poste $POSTE&quot;
		exit 7
	fi
fi

# Mise en place des variables d'environnement pour le greeter (utile ?)
export DISPLAY=:$POSTE
export XAUTHORITY=/var/run/lightdm/root/:$POSTE
&lt;/pre&gt;
Petite explication concernant la ligne suivante
 (sleep $ATTENTE ; chvt $VT)&amp;
Comme je n'ai pas patché LightDM pour éviter le changement de VT et que Xephyr m'empêche de faire un Ctrl+Alt+7 (avec le driver evdev) pour revenir au bon VT, j'ai du mettre en place un automatisme. Certes c'est loin d'être parfait mais ça rempli correctement son office.

==Conclusion==
Et voilà, tout est prêt pour le redémarrage et admirer les mires de login sur leur écran respectif.

===Avantages===
* Avec du matériel de récupération on peut facilement mettre en place cette solution peut coûteuse
* La satisfaction d'avoir un poste de travail exotique
* Permettre a une tierce personne de profiter de la puissance monstre des machines récente sans se privée de notre fauteuil favoris
* Se sentir moins avec une personne à coté

===Inconvénients===
* Accélération graphique fortement diminué
* Gestion des montages de périphérique USB non géré dans ce tuto
* Un &quot;saut&quot; des 2 écran lors de la déconnexion d'un poste
* Surveillance de chaque mis à jour de Xorg pour ne pas avoir de surprise au redémarrage
* Recompilation nécessaire en cas de mise à jour majeur de Xorg


===Remerciement===
Un grand merci à ce site pour m'avoir prémaché le travail ... ce qui ne m'as pas empêché d'apporter quelques améliorations à sa solution.
http://beforeafterx.blogspot.fr/2012/08/configuration-of-ligthdm-12.html</text>
      <sha1>2eti8kibggiwo2k1m1q0v910s1o1lzh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5077</id>
      <parentid>5076</parentid>
      <timestamp>2013-03-31T21:36:14Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <comment>/* Choix des outils */</comment>
      <text xml:space="preserve" bytes="19110">Après avoir fait du [http://www.debian-fr.org/multiseat-plusieurs-utilisateurs-sur-1-pc-t6954.html#p188187 multiseat avec 2 CG], un changement de PC m'oblige à faire la même chose mais avec une seule carte. J'ai essayé de couvrir au maximum toutes les étapes de la mise en place de la solution.

----
==Choix des outils==
Tout d'abord le raisonement pour le choix des outils à été le suivant.
==== Xorg ou Wayland ?====
La réponse a été rapide. Xorg clairement, Wayland est encore trop récent pour pouvoir le faire et aucun document ne traite pour l'instant de ce problème.

==== Xnest ou Xephyr ?====
Xephyr est largement plébiscité et Xnest semble tomber en désuétude. C'est par le développement de Tizen (ex-Meego) que Xephyr semble toujours actif et que de nouvelles fonctionnalités lui sont ajouté. Intel s'en sert intensément et est énormément utilisé pour le développement d'application pour smartphone comme environnement de simulation. (http://www.phoronix.com/scan.php?page=news_item&amp;px=ODc1NQ).
Un soucis avec Xephyr est que le support de evdev semble ne pas avoir été inclus dans les options de compilations. &quot;evdev&quot; permet de monopoliser les claviers et souries. Du coup il faut refaire le paquet soi-même.

==== Et la transition avec systemd ? ====
Il ne semble plus y avoir de problème particulier (http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org)

====Comment gérer 2 écran, 2 session avec une seule carte graphique ?====
Il faut savoir que Xephyr permet de se greffer sur n'importe quel serveur X afin d'afficher une autre session. Par exemple avec la commande &quot;Xephyr -query 127.0.0.1&quot; vous devez pouvoir vous connecter sur votre propre machine si le protocole &quot;XDMCP&quot; est activé sur votre &quot;DM&quot; (GDM, KDM, XDM, ...). Donc le but du jeu sera d'avoir un serveur X qui va &quot;supporter&quot; 2 fenêtre Xephyr. Ces deux dernière se verrons affecter les claviers et les souries de manière exclusif.

====Et le DM ? Debian a adopté GDM(3) avec Gnome mais j'aimerais bien m'en passer.====
Avec GDM (celui de Gnome2) il existe un très bon tutoriel ici : http://netpatia.blogspot.fr/2009/06/multiseat-in-ubuntu-904.html 
Pour GDM3, le problème est que pour l'instant il ne reprend pas toutes les possibilitées de son ancienne version. 
https://live.gnome.org/GDM/ToDo
&quot;-- Allow per-display X Server commands 
		BrianCameron: The [server] and [server-foo] sections of the GDM configuration have been disabled. This means that users who depend on novel configurations which require special Xserver commands per-display is not available.&quot;

Donc bonne nouvelle, il fallait trouver une alternative en le nom de LightDM, qui est issu de Ubuntu ... 

===Prérequis===
Donc pour les pré-requis :
* Ajouter &quot;deb-src http://ftp.fr.debian.org/debian/ &lt;VersionDebian&gt; main contrib non-free&quot;
* Installer les paquage dpkg-dev, build-essential, devscripts, lightDM

==Reconstruction de Xephyr==
===Récupération des sources nécessaires===
On récupère toutes les sources du packet source xorg-server qui comprend Xephyr.

 $ apt-get source xserver-xephyr


Puis récupérer toutes les dépendances spécifique au paquet :

 $ apt-get build-dep xorg-server

Là il va télécharger un certain nombre de paquet de développement (&quot;-dev&quot;), ils sont marqué comme installé automatiquement, donc un deborphan devrait vous les enlever sans trop de problème. Sinon il existe cette commande pour être sur qu'ils sont marqué en tant que &quot;installé automatiquement&quot;, puis un &quot;apt-get autoclean&quot; les supprimera.

===Reconfiguration===
Ensuite tout se passe dans le répertoire &quot;debian&quot;

 $ cd xorg-server-1.12.4/debian


On édite le fichier &quot;changlog&quot; pour monter de version le paquet que l'on va reconstruire. Il est possible de le faire en automatique avec la commande:

 debian/$ dch -n


L'option &quot;-n&quot; permet d'incrémenter le numéro de version de façon mineur, c'est à dire l'ajout de &quot;.1&quot; en fin de numéro de version.

Sinon pour le faire en manuel, il faut ajouter une ligne du type suivant au fichier:
&lt;pre&gt;
xorg-server (2:1.12.4-5.1) UNRELEASED; urgency=low

  * Non-maintainer upload.
  * ajout des paramètre pour Xephyr et evdev

 -- Vous &lt;vous@VotreMachine&gt;  Sun, 03 Mar 2013 22:21:32 +0100
&lt;/pre&gt;

Pour éviter de réinstaller tout Xorg avec le nouveau numéro de version il faut éditer le fichier &quot;debian/control&quot; et modifier la dépendance de Xephyr (ligne ~283). Pour cela il faut remplacer le 
&lt;pre&gt;
Depends :
  xserver-common (&gt;= ${source:Version})
&lt;/pre&gt;
Par :
&lt;pre&gt;
Depends :
  xserver-common (&gt;= 2:1.12.4-5)
&lt;/pre&gt;

Le numéro doit être en accord avec la version de votre Xorg actuellement installé sur votre machine. 
Sinon cette modification est directement possible dans le .deb, toujours dans le fichier &quot;DEBIAN/control&quot;. Pour cela il faut prendre le .deb que vous avez construit, le décompresser, modifier le fichier et faire la commande &quot;dpkg-deb -b &lt;nom du répertoire contenant les fichiers&gt;&quot;. Mais il est plus pratique de le faire avant.

Je ne vous conseille pas de mettre une numéro de version trop élevé car cela pourrait engendrer une incompatibilité avec les futurs versions de Xorg.

Ensuite nous allons modifier les options de compilation en éditant le fichier &quot;rules&quot;, c'est le Makefile de la construction du packet.
Localisez &quot;confflags_main&quot; (ligne ~133) et ajouter les lignes suivant juste en dessous de &quot;--enable-kdrive&quot; (ligne ~156)

 --enable-kdrive-evdev \
 --enable-kdrive-mouse \
 --enable-kdrive-kbd \

===Recompilation===
Passons maintenant à la recompilation proprement dite :
 $ fakeroot ./rules binary

Et laisser la compilation et la création des paquets se faire ... cela peut prendre quelques minutes.

Si pour une raison il vous faut refaire entièrement la compilation il faut d'abord faire la commande suivante
 $ fakeroot ./rules clean

Si c'est juste refaire les &quot;.deb&quot; (correction du numéro de dépendance, ...), alors cette commande suffit.
 $ fakeroot ./rules binary-deb

===Installation du paquet obtenue===
Enfin pour installer votre paket (qui se trouve dans le répertoire supérieur) il faut faire :
 #dpkg -i xserver-xephyr_1.12.4-5_i386.deb
Ou de manière graphique avec GDebi.
====Paquets déjà prêt====
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6_i386.deb.tar]]
* [[{{ns:file}}:Xserver-xephyr_1.12.4-5.1_amd64.deb.tar]]

==Configuration de Xorg==
===Définition de l'existant===
Pour rappel le principe seras d'avoir une session X qui va héberger 2 sessions Xephyr qui serviront les différents sièges.
Tout d'abord nous allons faire un fichier de conf pour le serveur Xorg. Pour ne pas démarrer de rien on peut lancer la commande (en root) &quot;Xorg -configure&quot; qui génère le fichier &quot;xorg.conf.new&quot; dans &quot;/root&quot;. Ensuite on fait un petit &quot;xrandr&quot; pour identifier les sorties disponibles.
&lt;pre&gt;
$ xrandr

Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 593mm
&lt;/pre&gt;

&quot;DVI-0&quot; &amp; &quot;HDMI-0&quot; sont les 2 disponibles sur la machine. On peux aussi trouver du &quot;VGA-0&quot; ou &quot;LVDS&quot; pour les écrans de portables.

===Exemple de fichier de configuration===
Dans cet exemple on peut avoir un &quot;/etc/xorg.conf&quot; comme suivant :
&lt;pre&gt;
##################################################################
Section &quot;Monitor&quot;
	Identifier  &quot;HannsG&quot;
	Option      &quot;PreferredMode&quot; &quot;1920x1200&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
	Option		&quot;Primary&quot; &quot;true&quot;
EndSection

Section &quot;Monitor&quot;
	Identifier  &quot;Acer&quot;
	Option      &quot;PreferredMode&quot; &quot;1680x1050&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
EndSection

Section &quot;Device&quot;
	Identifier  &quot;card0&quot;
	Driver      &quot;radeon&quot;
	# Ici on associe les sorties video avec une section &quot;Monitor&quot;
	# On remarquera le &quot;Monitor&quot; devant le nom des sortie, c'est indispensable (cf : http://www.x.org/archive/current/doc/man/man5/xorg.conf.5.xhtml#heading12)
	Option      &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
	Option      &quot;Monitor-DVI-0&quot; &quot;Acer&quot;
EndSection

##################################################################

Section &quot;Screen&quot;
	Identifier  &quot;ecran1&quot;
	Device      &quot;card0&quot;
	Monitor     &quot;HansG&quot;
	DefaultDepth 24
	SubSection &quot;Display&quot;
 		Depth   24
		Virtual 3600 1200
	EndSubSection
EndSection

Section &quot;ServerLayout&quot;
	Identifier    &quot;dualscreen&quot;
	Screen      0  &quot;ecran1&quot;
EndSection
##################################################################
&lt;/pre&gt;

==Configuration de LightDM==
Nous allons maintenant regarder la configuration de LightDM d'un peu plus près. Le fichier de configuration par défaut expose toutes les options possibles du dit fichier. Nous allons garder le strict minimum
===lightdm.conf===
Pour cela éditons le fichier /etc/lightd/lightdm.conf

&lt;pre&gt;
[LightDM]
 greeter-user=root
 user-authority-in-system-dir=false

 [SeatDefaults]
 xserver-allow-tcp=false
 greeter-hide-users=false
 user-session=lightdm-xsession
 session-wrapper=/etc/X11/Xsession

 [Seat:1]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 1 -t 1680x1050 -P evdev -s /dev/input/by-id/usb-Logitech_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd -v bepo 
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 1
 greeter-session=lightdm-greeter

[Seat:2]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 2 -t 1920x1200 -P evdev -s /dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-path/platform-i8042-serio-0-event-kbd
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 2 -d 1680,0
 greeter-session=lightdm-greeter
&lt;/pre&gt;

Il y a plusieurs chose à savoir concernant le fonctionnement de LightDM afin de comprendre ce qui est fait.
-- La section &quot;SeatDefault&quot; est commune à tous les siège définit après
-- Chaque &quot;Seat&quot; est exécuté dans l'ordre dans un VT différent et ce même si, dans notre cas, tout se passe dans le VT7 ([url=https://code.launchpad.net/~andrzejtp2010/lightdm/lightdm-trunk-xephyr-multiseat/+merge/120286]un patch[url] à été proposé pour palier à ce problème mais il n'a pas été accepté ... pour l'instant)
-- Chaque propriétés de tous les &quot;Seat&quot; sont lancé dans un ordre précis, d'abord tous les &quot;xserver-command&quot;, puis tous les &quot;greeter-setup-script&quot;, enfin tous les &quot;greeter-session&quot;. Si vous mettez d'autres propriétés elle seront exécuter suivant leur ordre pré-établi.
-- Si les &quot;greeter&quot; se termine, lightDM coupe le &quot;xserver-command&quot; correspondant. De même si le &quot;xserver-command&quot; se termine le greeter est coupé.

Donc pour que tout se positionne correctement il faut
-- D'abord lancer le serveur X qui servira de support, ce qui est fait en le mettant en tant que premier &quot;Seat&quot;
-- Lancer les fenêtres Xephyr avec les optons qui vont bien, ce qui est fait avec le script &quot;Xephyr-command.sh&quot; et ses arguments
-- Simuler un &quot;greeter&quot; pour le &quot;Seat :0&quot; afin que le serveur X ne soit pas tuer par lightDM, ce qui est fait avec le script &quot;fake-greeter&quot;
-- Exécuter un script qui va placer les fenêtre Xephyr si besoin et initialiser les variables d'environnement correctement, fait avec &quot;Xephyr-greeter-setup.sh&quot;
-- Exécuter les &quot;greeter&quot; dans les fenêtre Xephyr

===fake-greeter.desktop===
Pour le faux greeter du serveur X il faut créer un fichier dans &quot;/usr/share/xgreeters/fake-greeter.desktop&quot; et y copier son contenu :
&lt;pre&gt;
[Desktop Entry]
Name=LightDM fake greeter
Comment=This runs no greeter at all, it should only be run from LightDM
Exec=sleep infinity
Type=Application
X-Ubuntu-Gettext-Domain=lightdm
&lt;/pre&gt;

Après tout cela nous allons créer un script qui permettra de créer (&quot;Xephyr-command.sh&quot;) et un autre pour placer les fenêtre à l'écran (&quot;Xephyr-greeter-setup.sh&quot;).
Tout d'abord il est nécessaire d'installer le petit utilitaire &quot;wmctrl&quot; avec
 # aptitude install wmctrl
===Xephyr-command.sh===
 Le contenue du fichier &quot;Xephyr-command.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -t, taille : Doit être de la forme 9999x9999, (dafaut = 1024x768)&quot;
  echo &quot;\t -s, sourie : /dev/input/[by-path|by-id]/...event-mouse&quot;
  echo &quot;\t -c, clavier : /dev/input/[by-path|by-id]/...event-kbd&quot;
  echo &quot;\t -l, layout : fr, es, en, ... (défaut = fr)&quot;
  echo &quot;\t -v, variant : fr, latin9, bepo, ... (défaut = &lt;vide&gt;)&quot;
  echo &quot;\t -P, Pilote : ephyr ou evdev (défaut = ephyr)&quot;
}

testExecutable() {
	XEPHYR=`whereis -b Xephyr | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
TAILLE=&quot;1024x768&quot;
SOURIE=
CLAVIER=
LAYOUT=&quot;fr&quot;
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
PILOTE=ephyr # Test = ephyr ; Prod = evdev

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XEPHYR&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;Xephyr : &quot;$XEPHYR
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:t:s:c:l:v:P:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		t|taille)
			TAILLE=&quot;$OPTARG&quot;
		;;

		s|sourie)
			SOURIE=$OPTARG
			if  ! [ -r $SOURIE ];then
				echo &quot;La sourie n'est pas accessible&quot;
				exit 3
			fi
		;;

		c|clavier)
			CLAVIER=$OPTARG
			if  ! [ -r $CLAVIER ];then
				echo &quot;Le clavier n'est pas accessible&quot;
				exit 4
			fi
		;;

		l|layout)
			LAYOUT=$OPTARG
		;;

		v|variant)
			VARIANT=$OPTARG
		;;

		P|Pilote)
			PILOTE=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Construction de la ligne d&quot;argument
OPTIONS=&quot;&quot;

if [ -n &quot;${TAILLE}&quot; ]; then
	OPTIONS=&quot; -screen ${TAILLE}&quot;
fi

if [ -n &quot;${CLAVIER}&quot; ]; then
	if [ -n &quot;${LAYOUT}&quot; ]; then
		OPTIONS=$OPTIONS&quot; -keybd $PILOTE,,device=${CLAVIER},xkbrules=evdev,xkbmodel=evdev,xkblayout=${LAYOUT}&quot;
		if [ -n &quot;${VARIANT}&quot; ]; then
			OPTIONS=$OPTIONS&quot;,xkbvariant=${VARIANT}&quot;
		fi
	fi
fi

if [ -n &quot;${SOURIE}&quot; ]; then
	OPTIONS=$OPTIONS&quot; -mouse $PILOTE,,device=${SOURIE}&quot;
fi

# Lancement de Xephyr en arrière plan
echo &quot;$XEPHYR -retro $OPTIONS :$POSTE&quot;
exec $XEPHYR -retro  $OPTIONS :$POSTE
&lt;/pre&gt;

Petite explication sur la dernière ligne. Le &quot;exec&quot; fait en sorte que ce soit le processus de Xephyr qui prend la place du script, donc il reprend le PID et tout ce qui va bien. Ca permet surtout à ce que le signal USR1 que Xephyr lance au PPID, soit bien récupéré par LightDM et que ce dernier continue son fonctionnement normalement.

===Xephyr-greeter-setup.sh===
Le contenue du fichier &quot;Xephyr-greeter-setup.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p|--poste numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -d, --deplacement : de la forme 'x,y' (en pixel)&quot;
  echo &quot;\t -v, --vt : 7, 8, 9, 10, 11 (defaut = 7)&quot;
}

testExecutable() {
	XWININFO=`whereis -b xwininfo | cut -d' ' -f2`
	WMCTRL=`whereis -b wmctrl | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
DEPLACEMENT=
VT=7
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
ATTENTE=3 # temps en seconde avant de déclencher le &quot;chvt&quot; pour revenir sur le bon VT

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XWININFO&quot; -o -z &quot;$WMCTRL&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;xwininfo : &quot;$XWININFO
	echo &quot;wmctrl : &quot;$WMCTRL
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:d:v:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		d|deplacement)
			DEPLACEMENT=&quot;$OPTARG&quot;
		;;
	
		v|vt)
			VT=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Vieux Hack tout bancal pour revenir au bon VT sans patcher LightDM
(sleep $ATTENTE ; chvt $VT)&amp;

# Deplacement de la fenetre si besoin
if [ -n &quot;$DEPLACEMENT&quot; ]; then
	#On recherche l'ID de la fenêtre Xephyr
        XEP=`XAUTHORITY=/var/run/lightdm/root/:$XRACINE $XWININFO -root -children -all -display :$XRACINE | grep &quot;Xephyr on :$POSTE&quot; --max-count=1`;

	if [ -z &quot;$XEP&quot; ]; then
		echo &quot;fenêtre Xephyr non trouvé pour le poste $POSTE&quot;
		exit 5
	fi
    XEPHYR_WIN_ID=`echo ${XEP} | cut -d' ' -f1`;
    $WMCTRL 2&gt;&amp;1 -v -i -r ${XEPHYR_WIN_ID} -e 0,${DEPLACEMENT},-1,-1;
	if [ $? -ne 0 ]; then
		echo &quot;Erreur lors du déplacement de la fenêtre Xephyr pour le poste $POSTE&quot;
		exit 7
	fi
fi

# Mise en place des variables d'environnement pour le greeter (utile ?)
export DISPLAY=:$POSTE
export XAUTHORITY=/var/run/lightdm/root/:$POSTE
&lt;/pre&gt;
Petite explication concernant la ligne suivante
 (sleep $ATTENTE ; chvt $VT)&amp;
Comme je n'ai pas patché LightDM pour éviter le changement de VT et que Xephyr m'empêche de faire un Ctrl+Alt+7 (avec le driver evdev) pour revenir au bon VT, j'ai du mettre en place un automatisme. Certes c'est loin d'être parfait mais ça rempli correctement son office.

==Conclusion==
Et voilà, tout est prêt pour le redémarrage et admirer les mires de login sur leur écran respectif.

===Avantages===
* Avec du matériel de récupération on peut facilement mettre en place cette solution peut coûteuse
* La satisfaction d'avoir un poste de travail exotique
* Permettre a une tierce personne de profiter de la puissance monstre des machines récente sans se privée de notre fauteuil favoris
* Se sentir moins avec une personne à coté

===Inconvénients===
* Accélération graphique fortement diminué
* Gestion des montages de périphérique USB non géré dans ce tuto
* Un &quot;saut&quot; des 2 écran lors de la déconnexion d'un poste
* Surveillance de chaque mis à jour de Xorg pour ne pas avoir de surprise au redémarrage
* Recompilation nécessaire en cas de mise à jour majeur de Xorg


===Remerciement===
Un grand merci à ce site pour m'avoir prémaché le travail ... ce qui ne m'as pas empêché d'apporter quelques améliorations à sa solution.
http://beforeafterx.blogspot.fr/2012/08/configuration-of-ligthdm-12.html</text>
      <sha1>29ipvb5uuaf43y3xk58og8iwf2fo24e</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5085</id>
      <parentid>5077</parentid>
      <timestamp>2013-04-03T22:22:02Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <comment>ajout d'un paragraphe sur la gestion des périphériques USB</comment>
      <text xml:space="preserve" bytes="22422">Après avoir fait du [http://www.debian-fr.org/multiseat-plusieurs-utilisateurs-sur-1-pc-t6954.html#p188187 multiseat avec 2 CG], un changement de PC m'oblige à faire la même chose mais avec une seule carte. J'ai essayé de couvrir au maximum toutes les étapes de la mise en place de la solution.

----
==Choix des outils==
Tout d'abord le raisonement pour le choix des outils à été le suivant.
==== Xorg ou Wayland ?====
La réponse a été rapide. Xorg clairement, Wayland est encore trop récent pour pouvoir le faire et aucun document ne traite pour l'instant de ce problème.

==== Xnest ou Xephyr ?====
Xephyr est largement plébiscité et Xnest semble tomber en désuétude. C'est par le développement de Tizen (ex-Meego) que Xephyr semble toujours actif et que de nouvelles fonctionnalités lui sont ajouté. Intel s'en sert intensément et est énormément utilisé pour le développement d'application pour smartphone comme environnement de simulation. (http://www.phoronix.com/scan.php?page=news_item&amp;px=ODc1NQ).
Un soucis avec Xephyr est que le support de evdev semble ne pas avoir été inclus dans les options de compilations. &quot;evdev&quot; permet de monopoliser les claviers et souries. Du coup il faut refaire le paquet soi-même.

==== Et la transition avec systemd ? ====
Il ne semble plus y avoir de problème particulier (http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org)

====Comment gérer 2 écran, 2 session avec une seule carte graphique ?====
Il faut savoir que Xephyr permet de se greffer sur n'importe quel serveur X afin d'afficher une autre session. Par exemple avec la commande &quot;Xephyr -query 127.0.0.1&quot; vous devez pouvoir vous connecter sur votre propre machine si le protocole &quot;XDMCP&quot; est activé sur votre &quot;DM&quot; (GDM, KDM, XDM, ...). Donc le but du jeu sera d'avoir un serveur X qui va &quot;supporter&quot; 2 fenêtre Xephyr. Ces deux dernière se verrons affecter les claviers et les souries de manière exclusif.

====Et le DM ? Debian a adopté GDM(3) avec Gnome mais j'aimerais bien m'en passer.====
Avec GDM (celui de Gnome2) il existe un très bon tutoriel ici : http://netpatia.blogspot.fr/2009/06/multiseat-in-ubuntu-904.html 
Pour GDM3, le problème est que pour l'instant il ne reprend pas toutes les possibilitées de son ancienne version. 
https://live.gnome.org/GDM/ToDo
&quot;-- Allow per-display X Server commands 
		BrianCameron: The [server] and [server-foo] sections of the GDM configuration have been disabled. This means that users who depend on novel configurations which require special Xserver commands per-display is not available.&quot;

Donc bonne nouvelle, il fallait trouver une alternative en le nom de LightDM, qui est issu de Ubuntu ... 

===Prérequis===
Donc pour les pré-requis :
* Ajouter &quot;deb-src http://ftp.fr.debian.org/debian/ &lt;VersionDebian&gt; main contrib non-free&quot;
* Installer les paquage dpkg-dev, build-essential, devscripts, lightDM

==Reconstruction de Xephyr==
===Récupération des sources nécessaires===
On récupère toutes les sources du packet source xorg-server qui comprend Xephyr.

 $ apt-get source xserver-xephyr


Puis récupérer toutes les dépendances spécifique au paquet :

 $ apt-get build-dep xorg-server

Là il va télécharger un certain nombre de paquet de développement (&quot;-dev&quot;), ils sont marqué comme installé automatiquement, donc un deborphan devrait vous les enlever sans trop de problème. Sinon il existe cette commande pour être sur qu'ils sont marqué en tant que &quot;installé automatiquement&quot;, puis un &quot;apt-get autoclean&quot; les supprimera.

===Reconfiguration===
Ensuite tout se passe dans le répertoire &quot;debian&quot;

 $ cd xorg-server-1.12.4/debian


On édite le fichier &quot;changlog&quot; pour monter de version le paquet que l'on va reconstruire. Il est possible de le faire en automatique avec la commande:

 debian/$ dch -n


L'option &quot;-n&quot; permet d'incrémenter le numéro de version de façon mineur, c'est à dire l'ajout de &quot;.1&quot; en fin de numéro de version.

Sinon pour le faire en manuel, il faut ajouter une ligne du type suivant au fichier:
&lt;pre&gt;
xorg-server (2:1.12.4-5.1) UNRELEASED; urgency=low

  * Non-maintainer upload.
  * ajout des paramètre pour Xephyr et evdev

 -- Vous &lt;vous@VotreMachine&gt;  Sun, 03 Mar 2013 22:21:32 +0100
&lt;/pre&gt;

Pour éviter de réinstaller tout Xorg avec le nouveau numéro de version il faut éditer le fichier &quot;debian/control&quot; et modifier la dépendance de Xephyr (ligne ~283). Pour cela il faut remplacer le 
&lt;pre&gt;
Depends :
  xserver-common (&gt;= ${source:Version})
&lt;/pre&gt;
Par :
&lt;pre&gt;
Depends :
  xserver-common (&gt;= 2:1.12.4-5)
&lt;/pre&gt;

Le numéro doit être en accord avec la version de votre Xorg actuellement installé sur votre machine. 
Sinon cette modification est directement possible dans le .deb, toujours dans le fichier &quot;DEBIAN/control&quot;. Pour cela il faut prendre le .deb que vous avez construit, le décompresser, modifier le fichier et faire la commande &quot;dpkg-deb -b &lt;nom du répertoire contenant les fichiers&gt;&quot;. Mais il est plus pratique de le faire avant.

Je ne vous conseille pas de mettre une numéro de version trop élevé car cela pourrait engendrer une incompatibilité avec les futurs versions de Xorg.

Ensuite nous allons modifier les options de compilation en éditant le fichier &quot;rules&quot;, c'est le Makefile de la construction du packet.
Localisez &quot;confflags_main&quot; (ligne ~133) et ajouter les lignes suivant juste en dessous de &quot;--enable-kdrive&quot; (ligne ~156)

 --enable-kdrive-evdev \
 --enable-kdrive-mouse \
 --enable-kdrive-kbd \

===Recompilation===
Passons maintenant à la recompilation proprement dite :
 $ fakeroot ./rules binary

Et laisser la compilation et la création des paquets se faire ... cela peut prendre quelques minutes.

Si pour une raison il vous faut refaire entièrement la compilation il faut d'abord faire la commande suivante
 $ fakeroot ./rules clean

Si c'est juste refaire les &quot;.deb&quot; (correction du numéro de dépendance, ...), alors cette commande suffit.
 $ fakeroot ./rules binary-deb

===Installation du paquet obtenue===
Enfin pour installer votre paket (qui se trouve dans le répertoire supérieur) il faut faire :
 #dpkg -i xserver-xephyr_1.12.4-5_i386.deb
Ou de manière graphique avec GDebi.
====Paquets déjà prêt====
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6_i386.deb.tar]]
* [[{{ns:file}}:Xserver-xephyr_1.12.4-5.1_amd64.deb.tar]]

==Configuration de Xorg==
===Définition de l'existant===
Pour rappel le principe seras d'avoir une session X qui va héberger 2 sessions Xephyr qui serviront les différents sièges.
Tout d'abord nous allons faire un fichier de conf pour le serveur Xorg. Pour ne pas démarrer de rien on peut lancer la commande (en root) &quot;Xorg -configure&quot; qui génère le fichier &quot;xorg.conf.new&quot; dans &quot;/root&quot;. Ensuite on fait un petit &quot;xrandr&quot; pour identifier les sorties disponibles.
&lt;pre&gt;
$ xrandr

Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 593mm
&lt;/pre&gt;

&quot;DVI-0&quot; &amp; &quot;HDMI-0&quot; sont les 2 disponibles sur la machine. On peux aussi trouver du &quot;VGA-0&quot; ou &quot;LVDS&quot; pour les écrans de portables.

===Exemple de fichier de configuration===
Dans cet exemple on peut avoir un &quot;/etc/xorg.conf&quot; comme suivant :
&lt;pre&gt;
##################################################################
Section &quot;Monitor&quot;
	Identifier  &quot;HannsG&quot;
	Option      &quot;PreferredMode&quot; &quot;1920x1200&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
	Option		&quot;Primary&quot; &quot;true&quot;
EndSection

Section &quot;Monitor&quot;
	Identifier  &quot;Acer&quot;
	Option      &quot;PreferredMode&quot; &quot;1680x1050&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
EndSection

Section &quot;Device&quot;
	Identifier  &quot;card0&quot;
	Driver      &quot;radeon&quot;
	# Ici on associe les sorties video avec une section &quot;Monitor&quot;
	# On remarquera le &quot;Monitor&quot; devant le nom des sortie, c'est indispensable (cf : http://www.x.org/archive/current/doc/man/man5/xorg.conf.5.xhtml#heading12)
	Option      &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
	Option      &quot;Monitor-DVI-0&quot; &quot;Acer&quot;
EndSection

##################################################################

Section &quot;Screen&quot;
	Identifier  &quot;ecran1&quot;
	Device      &quot;card0&quot;
	Monitor     &quot;HansG&quot;
	DefaultDepth 24
	SubSection &quot;Display&quot;
 		Depth   24
		Virtual 3600 1200
	EndSubSection
EndSection

Section &quot;ServerLayout&quot;
	Identifier    &quot;dualscreen&quot;
	Screen      0  &quot;ecran1&quot;
EndSection
##################################################################
&lt;/pre&gt;

==Configuration de LightDM==
Nous allons maintenant regarder la configuration de LightDM d'un peu plus près. Le fichier de configuration par défaut expose toutes les options possibles du dit fichier. Nous allons garder le strict minimum
===lightdm.conf===
Pour cela éditons le fichier /etc/lightd/lightdm.conf

&lt;pre&gt;
[LightDM]
 greeter-user=root
 user-authority-in-system-dir=false

 [SeatDefaults]
 xserver-allow-tcp=false
 greeter-hide-users=false
 user-session=lightdm-xsession
 session-wrapper=/etc/X11/Xsession

 [Seat:1]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 1 -t 1680x1050 -P evdev -s /dev/input/by-id/usb-Logitech_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd -v bepo 
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 1
 greeter-session=lightdm-greeter

[Seat:2]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 2 -t 1920x1200 -P evdev -s /dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-path/platform-i8042-serio-0-event-kbd
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 2 -d 1680,0
 greeter-session=lightdm-greeter
&lt;/pre&gt;

Il y a plusieurs chose à savoir concernant le fonctionnement de LightDM afin de comprendre ce qui est fait.
-- La section &quot;SeatDefault&quot; est commune à tous les siège définit après
-- Chaque &quot;Seat&quot; est exécuté dans l'ordre dans un VT différent et ce même si, dans notre cas, tout se passe dans le VT7 ([url=https://code.launchpad.net/~andrzejtp2010/lightdm/lightdm-trunk-xephyr-multiseat/+merge/120286]un patch[url] à été proposé pour palier à ce problème mais il n'a pas été accepté ... pour l'instant)
-- Chaque propriétés de tous les &quot;Seat&quot; sont lancé dans un ordre précis, d'abord tous les &quot;xserver-command&quot;, puis tous les &quot;greeter-setup-script&quot;, enfin tous les &quot;greeter-session&quot;. Si vous mettez d'autres propriétés elle seront exécuter suivant leur ordre pré-établi.
-- Si les &quot;greeter&quot; se termine, lightDM coupe le &quot;xserver-command&quot; correspondant. De même si le &quot;xserver-command&quot; se termine le greeter est coupé.

Donc pour que tout se positionne correctement il faut
-- D'abord lancer le serveur X qui servira de support, ce qui est fait en le mettant en tant que premier &quot;Seat&quot;
-- Lancer les fenêtres Xephyr avec les optons qui vont bien, ce qui est fait avec le script &quot;Xephyr-command.sh&quot; et ses arguments
-- Simuler un &quot;greeter&quot; pour le &quot;Seat :0&quot; afin que le serveur X ne soit pas tuer par lightDM, ce qui est fait avec le script &quot;fake-greeter&quot;
-- Exécuter un script qui va placer les fenêtre Xephyr si besoin et initialiser les variables d'environnement correctement, fait avec &quot;Xephyr-greeter-setup.sh&quot;
-- Exécuter les &quot;greeter&quot; dans les fenêtre Xephyr

===fake-greeter.desktop===
Pour le faux greeter du serveur X il faut créer un fichier dans &quot;/usr/share/xgreeters/fake-greeter.desktop&quot; et y copier son contenu :
&lt;pre&gt;
[Desktop Entry]
Name=LightDM fake greeter
Comment=This runs no greeter at all, it should only be run from LightDM
Exec=sleep infinity
Type=Application
X-Ubuntu-Gettext-Domain=lightdm
&lt;/pre&gt;

Après tout cela nous allons créer un script qui permettra de créer (&quot;Xephyr-command.sh&quot;) et un autre pour placer les fenêtre à l'écran (&quot;Xephyr-greeter-setup.sh&quot;).
Tout d'abord il est nécessaire d'installer le petit utilitaire &quot;wmctrl&quot; avec
 # aptitude install wmctrl
===Xephyr-command.sh===
 Le contenue du fichier &quot;Xephyr-command.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -t, taille : Doit être de la forme 9999x9999, (dafaut = 1024x768)&quot;
  echo &quot;\t -s, sourie : /dev/input/[by-path|by-id]/...event-mouse&quot;
  echo &quot;\t -c, clavier : /dev/input/[by-path|by-id]/...event-kbd&quot;
  echo &quot;\t -l, layout : fr, es, en, ... (défaut = fr)&quot;
  echo &quot;\t -v, variant : fr, latin9, bepo, ... (défaut = &lt;vide&gt;)&quot;
  echo &quot;\t -P, Pilote : ephyr ou evdev (défaut = ephyr)&quot;
}

testExecutable() {
	XEPHYR=`whereis -b Xephyr | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
TAILLE=&quot;1024x768&quot;
SOURIE=
CLAVIER=
LAYOUT=&quot;fr&quot;
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
PILOTE=ephyr # Test = ephyr ; Prod = evdev

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XEPHYR&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;Xephyr : &quot;$XEPHYR
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:t:s:c:l:v:P:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		t|taille)
			TAILLE=&quot;$OPTARG&quot;
		;;

		s|sourie)
			SOURIE=$OPTARG
			if  ! [ -r $SOURIE ];then
				echo &quot;La sourie n'est pas accessible&quot;
				exit 3
			fi
		;;

		c|clavier)
			CLAVIER=$OPTARG
			if  ! [ -r $CLAVIER ];then
				echo &quot;Le clavier n'est pas accessible&quot;
				exit 4
			fi
		;;

		l|layout)
			LAYOUT=$OPTARG
		;;

		v|variant)
			VARIANT=$OPTARG
		;;

		P|Pilote)
			PILOTE=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Construction de la ligne d&quot;argument
OPTIONS=&quot;&quot;

if [ -n &quot;${TAILLE}&quot; ]; then
	OPTIONS=&quot; -screen ${TAILLE}&quot;
fi

if [ -n &quot;${CLAVIER}&quot; ]; then
	if [ -n &quot;${LAYOUT}&quot; ]; then
		OPTIONS=$OPTIONS&quot; -keybd $PILOTE,,device=${CLAVIER},xkbrules=evdev,xkbmodel=evdev,xkblayout=${LAYOUT}&quot;
		if [ -n &quot;${VARIANT}&quot; ]; then
			OPTIONS=$OPTIONS&quot;,xkbvariant=${VARIANT}&quot;
		fi
	fi
fi

if [ -n &quot;${SOURIE}&quot; ]; then
	OPTIONS=$OPTIONS&quot; -mouse $PILOTE,,device=${SOURIE}&quot;
fi

# Lancement de Xephyr en arrière plan
echo &quot;$XEPHYR -retro $OPTIONS :$POSTE&quot;
exec $XEPHYR -retro  $OPTIONS :$POSTE
&lt;/pre&gt;

Petite explication sur la dernière ligne. Le &quot;exec&quot; fait en sorte que ce soit le processus de Xephyr qui prend la place du script, donc il reprend le PID et tout ce qui va bien. Ca permet surtout à ce que le signal USR1 que Xephyr lance au PPID, soit bien récupéré par LightDM et que ce dernier continue son fonctionnement normalement.

===Xephyr-greeter-setup.sh===
Le contenue du fichier &quot;Xephyr-greeter-setup.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p|--poste numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -d, --deplacement : de la forme 'x,y' (en pixel)&quot;
  echo &quot;\t -v, --vt : 7, 8, 9, 10, 11 (defaut = 7)&quot;
}

testExecutable() {
	XWININFO=`whereis -b xwininfo | cut -d' ' -f2`
	WMCTRL=`whereis -b wmctrl | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
DEPLACEMENT=
VT=7
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
ATTENTE=3 # temps en seconde avant de déclencher le &quot;chvt&quot; pour revenir sur le bon VT

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XWININFO&quot; -o -z &quot;$WMCTRL&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;xwininfo : &quot;$XWININFO
	echo &quot;wmctrl : &quot;$WMCTRL
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:d:v:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		d|deplacement)
			DEPLACEMENT=&quot;$OPTARG&quot;
		;;
	
		v|vt)
			VT=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Vieux Hack tout bancal pour revenir au bon VT sans patcher LightDM
(sleep $ATTENTE ; chvt $VT)&amp;

# Deplacement de la fenetre si besoin
if [ -n &quot;$DEPLACEMENT&quot; ]; then
	#On recherche l'ID de la fenêtre Xephyr
        XEP=`XAUTHORITY=/var/run/lightdm/root/:$XRACINE $XWININFO -root -children -all -display :$XRACINE | grep &quot;Xephyr on :$POSTE&quot; --max-count=1`;

	if [ -z &quot;$XEP&quot; ]; then
		echo &quot;fenêtre Xephyr non trouvé pour le poste $POSTE&quot;
		exit 5
	fi
    XEPHYR_WIN_ID=`echo ${XEP} | cut -d' ' -f1`;
    $WMCTRL 2&gt;&amp;1 -v -i -r ${XEPHYR_WIN_ID} -e 0,${DEPLACEMENT},-1,-1;
	if [ $? -ne 0 ]; then
		echo &quot;Erreur lors du déplacement de la fenêtre Xephyr pour le poste $POSTE&quot;
		exit 7
	fi
fi

# Mise en place des variables d'environnement pour le greeter (utile ?)
export DISPLAY=:$POSTE
export XAUTHORITY=/var/run/lightdm/root/:$POSTE
&lt;/pre&gt;
Petite explication concernant la ligne suivante
 (sleep $ATTENTE ; chvt $VT)&amp;
Comme je n'ai pas patché LightDM pour éviter le changement de VT et que Xephyr m'empêche de faire un Ctrl+Alt+7 (avec le driver evdev) pour revenir au bon VT, j'ai du mettre en place un automatisme. Certes c'est loin d'être parfait mais ça rempli correctement son office.

==Modification du système==
===Montage des périphériques USB===
On se rend assez vite compte que si l'on branche une clé USB elle n'apparait pas automatiquement sur le bureau et elle est encore moins &quot;montable&quot; par un utilisateur classique. Elle apparait bien dans la liste des périphériques accessibles (volet de gauche sur nautilus) mais il y a un problème de droit.
Un petit rappel de la chaine mis en jeu lorsque l'on branche une clé USB ou tout autre périphérique.
* Détection par le noyau de l'ajout d'un matériel
* Udev prend le relai et créé les périphériques block nécessaire dans /dev
* PolicyKit termine le travail en mettant en place les autorisations adéquate

Donc le blocage vient de ce dernier composant, il ne reconnait pas une session Xephyr comme &quot;active&quot; et donc refuse le montage de ce type de périphérique par l'utilisateur lambda. Pour passer au delà de cette limitation on va redéfinir la règle de montage, pour cela il faut aller dans le répertoire suivant :
 /etc/polkit-1/localauthority/50-local.d
Et y créer un fichier, &quot;10-udisk.pkla&quot; par exemple
&lt;pre&gt;
[Allow mounting from Xephyr]
Identity=*
Action=org.freedesktop.udisks.change;org.freedesktop.udisks.drive-detach;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.filesystem-unmount-others
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

Voilà, avec Gnome3 dans le volet de gauche de Nautilus on peux cliquer sur l'icone de la clé USB pour quelle se monte correctement, idem avec LXDE.
Je recommande de désactiver l'automontage des périphériques USB afin que l'utilisateur qui branche la clé puisse la monter sans interférence.

===Gestion de l'énergie===
De la même manière que précédemment, par défaut il est impossible d'éteindre l'ordinateur depuis la session graphique (hors LightDM).
Donc pour cela on créé un nouveau fichier (20-upower.pkla) dans :
 /etc/polkit-1/localauthority/50-local.d

&lt;pre&gt;
[Suspend/hibernate permissions]
Identity=*
Action=org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

===Aller plus loin===
* Si l'on veut restreindre ce droit par utilisateur ou par groupe on modifie la ligne &quot;Identity&quot; comme il suit
 Identity=unix-user:toto;unix-group:plugdev
* Pour creuser un peu plus la configuration de ce système on peux aller voir [http://www.freedesktop.org/software/polkit/docs/0.105/pklocalauthority.8.html cette page] sur PolicyKit
* Il serait aussi intéressant de définir des ports USB réservés pour chaque siège, mais je ne sais pas encore comment gérer cela.
* La gestion du son


==Conclusion==
Et voilà, tout est prêt pour le redémarrage et admirer les mires de login sur leur écran respectif.

===Avantages===
* Avec du matériel de récupération on peut facilement mettre en place cette solution peut coûteuse
* La satisfaction d'avoir un poste de travail exotique
* Permettre à une tierce personne de profiter de la puissance monstre des machines récente sans se priver de notre fauteuil favori
* Se sentir moins avec une/plusieurs personnes à coté de soi :-p

===Inconvénients===
* Accélération graphique fortement diminué
* Si on débranche les claviers/souries Xephyr ne sait pas les reconnaitre automatiquement au rebranchement. Il faut relancer Xephyr en se déconnectant ou relancer LightDM
* Un &quot;saut&quot; des 2 écrans lors de la déconnexion d'un postes, mais cela est dû à LightDM et son changment de VT intempestif.
* Surveillance de chaque mis à jour de Xorg pour ne pas avoir de surprise au redémarrage
* Recompilation nécessaire en cas de mise à jour majeur de Xorg
* Gestion des montages USB non optimale
* Les voyants du clavier (pavé numérique, Majuscule et arrêt défile) ne réagissent plus, mais la clavier réagit correctement.
* Dans l'espace de travail de certains logiciel (VLC, Gimp) la sourie peux avoir un affichage lacunaire. Par exemple sous GIMP elle n'est visible que lorsqu'on la déplace, avec VLS il y a un carré noir autour d'elle quand on la déplace le reste du temps elle disparait.


===Remerciement===
Un grand merci à ce site pour m'avoir prémaché le travail ... ce qui ne m'as pas empêché d'apporter quelques améliorations à sa solution.
http://beforeafterx.blogspot.fr/2012/08/configuration-of-ligthdm-12.html</text>
      <sha1>pn4x7h6reh21x5qyzfamspfwno742ry</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5086</id>
      <parentid>5085</parentid>
      <timestamp>2013-04-03T22:42:23Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <comment>Ajout d'un début de gestion du son</comment>
      <text xml:space="preserve" bytes="23213">Après avoir fait du [http://www.debian-fr.org/multiseat-plusieurs-utilisateurs-sur-1-pc-t6954.html#p188187 multiseat avec 2 CG], un changement de PC m'oblige à faire la même chose mais avec une seule carte. J'ai essayé de couvrir au maximum toutes les étapes de la mise en place de la solution.

----
==Choix des outils==
Tout d'abord le raisonement pour le choix des outils à été le suivant.
==== Xorg ou Wayland ?====
La réponse a été rapide. Xorg clairement, Wayland est encore trop récent pour pouvoir le faire et aucun document ne traite pour l'instant de ce problème.

==== Xnest ou Xephyr ?====
Xephyr est largement plébiscité et Xnest semble tomber en désuétude. C'est par le développement de Tizen (ex-Meego) que Xephyr semble toujours actif et que de nouvelles fonctionnalités lui sont ajouté. Intel s'en sert intensément et est énormément utilisé pour le développement d'application pour smartphone comme environnement de simulation. (http://www.phoronix.com/scan.php?page=news_item&amp;px=ODc1NQ).
Un soucis avec Xephyr est que le support de evdev semble ne pas avoir été inclus dans les options de compilations. &quot;evdev&quot; permet de monopoliser les claviers et souries. Du coup il faut refaire le paquet soi-même.

==== Et la transition avec systemd ? ====
Il ne semble plus y avoir de problème particulier (http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org)

====Comment gérer 2 écran, 2 session avec une seule carte graphique ?====
Il faut savoir que Xephyr permet de se greffer sur n'importe quel serveur X afin d'afficher une autre session. Par exemple avec la commande &quot;Xephyr -query 127.0.0.1&quot; vous devez pouvoir vous connecter sur votre propre machine si le protocole &quot;XDMCP&quot; est activé sur votre &quot;DM&quot; (GDM, KDM, XDM, ...). Donc le but du jeu sera d'avoir un serveur X qui va &quot;supporter&quot; 2 fenêtre Xephyr. Ces deux dernière se verrons affecter les claviers et les souries de manière exclusif.

====Et le DM ? Debian a adopté GDM(3) avec Gnome mais j'aimerais bien m'en passer.====
Avec GDM (celui de Gnome2) il existe un très bon tutoriel ici : http://netpatia.blogspot.fr/2009/06/multiseat-in-ubuntu-904.html 
Pour GDM3, le problème est que pour l'instant il ne reprend pas toutes les possibilitées de son ancienne version. 
https://live.gnome.org/GDM/ToDo
&quot;-- Allow per-display X Server commands 
		BrianCameron: The [server] and [server-foo] sections of the GDM configuration have been disabled. This means that users who depend on novel configurations which require special Xserver commands per-display is not available.&quot;

Donc bonne nouvelle, il fallait trouver une alternative en le nom de LightDM, qui est issu de Ubuntu ... 

===Prérequis===
Donc pour les pré-requis :
* Ajouter &quot;deb-src http://ftp.fr.debian.org/debian/ &lt;VersionDebian&gt; main contrib non-free&quot;
* Installer les paquage dpkg-dev, build-essential, devscripts, lightDM

==Reconstruction de Xephyr==
===Récupération des sources nécessaires===
On récupère toutes les sources du packet source xorg-server qui comprend Xephyr.

 $ apt-get source xserver-xephyr


Puis récupérer toutes les dépendances spécifique au paquet :

 $ apt-get build-dep xorg-server

Là il va télécharger un certain nombre de paquet de développement (&quot;-dev&quot;), ils sont marqué comme installé automatiquement, donc un deborphan devrait vous les enlever sans trop de problème. Sinon il existe cette commande pour être sur qu'ils sont marqué en tant que &quot;installé automatiquement&quot;, puis un &quot;apt-get autoclean&quot; les supprimera.

===Reconfiguration===
Ensuite tout se passe dans le répertoire &quot;debian&quot;

 $ cd xorg-server-1.12.4/debian


On édite le fichier &quot;changlog&quot; pour monter de version le paquet que l'on va reconstruire. Il est possible de le faire en automatique avec la commande:

 debian/$ dch -n


L'option &quot;-n&quot; permet d'incrémenter le numéro de version de façon mineur, c'est à dire l'ajout de &quot;.1&quot; en fin de numéro de version.

Sinon pour le faire en manuel, il faut ajouter une ligne du type suivant au fichier:
&lt;pre&gt;
xorg-server (2:1.12.4-5.1) UNRELEASED; urgency=low

  * Non-maintainer upload.
  * ajout des paramètre pour Xephyr et evdev

 -- Vous &lt;vous@VotreMachine&gt;  Sun, 03 Mar 2013 22:21:32 +0100
&lt;/pre&gt;

Pour éviter de réinstaller tout Xorg avec le nouveau numéro de version il faut éditer le fichier &quot;debian/control&quot; et modifier la dépendance de Xephyr (ligne ~283). Pour cela il faut remplacer le 
&lt;pre&gt;
Depends :
  xserver-common (&gt;= ${source:Version})
&lt;/pre&gt;
Par :
&lt;pre&gt;
Depends :
  xserver-common (&gt;= 2:1.12.4-5)
&lt;/pre&gt;

Le numéro doit être en accord avec la version de votre Xorg actuellement installé sur votre machine. 
Sinon cette modification est directement possible dans le .deb, toujours dans le fichier &quot;DEBIAN/control&quot;. Pour cela il faut prendre le .deb que vous avez construit, le décompresser, modifier le fichier et faire la commande &quot;dpkg-deb -b &lt;nom du répertoire contenant les fichiers&gt;&quot;. Mais il est plus pratique de le faire avant.

Je ne vous conseille pas de mettre une numéro de version trop élevé car cela pourrait engendrer une incompatibilité avec les futurs versions de Xorg.

Ensuite nous allons modifier les options de compilation en éditant le fichier &quot;rules&quot;, c'est le Makefile de la construction du packet.
Localisez &quot;confflags_main&quot; (ligne ~133) et ajouter les lignes suivant juste en dessous de &quot;--enable-kdrive&quot; (ligne ~156)

 --enable-kdrive-evdev \
 --enable-kdrive-mouse \
 --enable-kdrive-kbd \

===Recompilation===
Passons maintenant à la recompilation proprement dite :
 $ fakeroot ./rules binary

Et laisser la compilation et la création des paquets se faire ... cela peut prendre quelques minutes.

Si pour une raison il vous faut refaire entièrement la compilation il faut d'abord faire la commande suivante
 $ fakeroot ./rules clean

Si c'est juste refaire les &quot;.deb&quot; (correction du numéro de dépendance, ...), alors cette commande suffit.
 $ fakeroot ./rules binary-deb

===Installation du paquet obtenue===
Enfin pour installer votre paket (qui se trouve dans le répertoire supérieur) il faut faire :
 #dpkg -i xserver-xephyr_1.12.4-5_i386.deb
Ou de manière graphique avec GDebi.
====Paquets déjà prêt====
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6_i386.deb.tar]]
* [[{{ns:file}}:Xserver-xephyr_1.12.4-5.1_amd64.deb.tar]]

==Configuration de Xorg==
===Définition de l'existant===
Pour rappel le principe seras d'avoir une session X qui va héberger 2 sessions Xephyr qui serviront les différents sièges.
Tout d'abord nous allons faire un fichier de conf pour le serveur Xorg. Pour ne pas démarrer de rien on peut lancer la commande (en root) &quot;Xorg -configure&quot; qui génère le fichier &quot;xorg.conf.new&quot; dans &quot;/root&quot;. Ensuite on fait un petit &quot;xrandr&quot; pour identifier les sorties disponibles.
&lt;pre&gt;
$ xrandr

Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 593mm
&lt;/pre&gt;

&quot;DVI-0&quot; &amp; &quot;HDMI-0&quot; sont les 2 disponibles sur la machine. On peux aussi trouver du &quot;VGA-0&quot; ou &quot;LVDS&quot; pour les écrans de portables.

===Exemple de fichier de configuration===
Dans cet exemple on peut avoir un &quot;/etc/xorg.conf&quot; comme suivant :
&lt;pre&gt;
##################################################################
Section &quot;Monitor&quot;
	Identifier  &quot;HannsG&quot;
	Option      &quot;PreferredMode&quot; &quot;1920x1200&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
	Option		&quot;Primary&quot; &quot;true&quot;
EndSection

Section &quot;Monitor&quot;
	Identifier  &quot;Acer&quot;
	Option      &quot;PreferredMode&quot; &quot;1680x1050&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
EndSection

Section &quot;Device&quot;
	Identifier  &quot;card0&quot;
	Driver      &quot;radeon&quot;
	# Ici on associe les sorties video avec une section &quot;Monitor&quot;
	# On remarquera le &quot;Monitor&quot; devant le nom des sortie, c'est indispensable (cf : http://www.x.org/archive/current/doc/man/man5/xorg.conf.5.xhtml#heading12)
	Option      &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
	Option      &quot;Monitor-DVI-0&quot; &quot;Acer&quot;
EndSection

##################################################################

Section &quot;Screen&quot;
	Identifier  &quot;ecran1&quot;
	Device      &quot;card0&quot;
	Monitor     &quot;HansG&quot;
	DefaultDepth 24
	SubSection &quot;Display&quot;
 		Depth   24
		Virtual 3600 1200
	EndSubSection
EndSection

Section &quot;ServerLayout&quot;
	Identifier    &quot;dualscreen&quot;
	Screen      0  &quot;ecran1&quot;
EndSection
##################################################################
&lt;/pre&gt;

==Configuration de LightDM==
Nous allons maintenant regarder la configuration de LightDM d'un peu plus près. Le fichier de configuration par défaut expose toutes les options possibles du dit fichier. Nous allons garder le strict minimum
===lightdm.conf===
Pour cela éditons le fichier /etc/lightd/lightdm.conf

&lt;pre&gt;
[LightDM]
 greeter-user=root
 user-authority-in-system-dir=false

 [SeatDefaults]
 xserver-allow-tcp=false
 greeter-hide-users=false
 user-session=lightdm-xsession
 session-wrapper=/etc/X11/Xsession

 [Seat:1]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 1 -t 1680x1050 -P evdev -s /dev/input/by-id/usb-Logitech_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd -v bepo 
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 1
 greeter-session=lightdm-greeter

[Seat:2]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 2 -t 1920x1200 -P evdev -s /dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-path/platform-i8042-serio-0-event-kbd
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 2 -d 1680,0
 greeter-session=lightdm-greeter
&lt;/pre&gt;

Il y a plusieurs chose à savoir concernant le fonctionnement de LightDM afin de comprendre ce qui est fait.
-- La section &quot;SeatDefault&quot; est commune à tous les siège définit après
-- Chaque &quot;Seat&quot; est exécuté dans l'ordre dans un VT différent et ce même si, dans notre cas, tout se passe dans le VT7 ([url=https://code.launchpad.net/~andrzejtp2010/lightdm/lightdm-trunk-xephyr-multiseat/+merge/120286]un patch[url] à été proposé pour palier à ce problème mais il n'a pas été accepté ... pour l'instant)
-- Chaque propriétés de tous les &quot;Seat&quot; sont lancé dans un ordre précis, d'abord tous les &quot;xserver-command&quot;, puis tous les &quot;greeter-setup-script&quot;, enfin tous les &quot;greeter-session&quot;. Si vous mettez d'autres propriétés elle seront exécuter suivant leur ordre pré-établi.
-- Si les &quot;greeter&quot; se termine, lightDM coupe le &quot;xserver-command&quot; correspondant. De même si le &quot;xserver-command&quot; se termine le greeter est coupé.

Donc pour que tout se positionne correctement il faut
-- D'abord lancer le serveur X qui servira de support, ce qui est fait en le mettant en tant que premier &quot;Seat&quot;
-- Lancer les fenêtres Xephyr avec les optons qui vont bien, ce qui est fait avec le script &quot;Xephyr-command.sh&quot; et ses arguments
-- Simuler un &quot;greeter&quot; pour le &quot;Seat :0&quot; afin que le serveur X ne soit pas tuer par lightDM, ce qui est fait avec le script &quot;fake-greeter&quot;
-- Exécuter un script qui va placer les fenêtre Xephyr si besoin et initialiser les variables d'environnement correctement, fait avec &quot;Xephyr-greeter-setup.sh&quot;
-- Exécuter les &quot;greeter&quot; dans les fenêtre Xephyr

===fake-greeter.desktop===
Pour le faux greeter du serveur X il faut créer un fichier dans &quot;/usr/share/xgreeters/fake-greeter.desktop&quot; et y copier son contenu :
&lt;pre&gt;
[Desktop Entry]
Name=LightDM fake greeter
Comment=This runs no greeter at all, it should only be run from LightDM
Exec=sleep infinity
Type=Application
X-Ubuntu-Gettext-Domain=lightdm
&lt;/pre&gt;

Après tout cela nous allons créer un script qui permettra de créer (&quot;Xephyr-command.sh&quot;) et un autre pour placer les fenêtre à l'écran (&quot;Xephyr-greeter-setup.sh&quot;).
Tout d'abord il est nécessaire d'installer le petit utilitaire &quot;wmctrl&quot; avec
 # aptitude install wmctrl
===Xephyr-command.sh===
 Le contenue du fichier &quot;Xephyr-command.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -t, taille : Doit être de la forme 9999x9999, (dafaut = 1024x768)&quot;
  echo &quot;\t -s, sourie : /dev/input/[by-path|by-id]/...event-mouse&quot;
  echo &quot;\t -c, clavier : /dev/input/[by-path|by-id]/...event-kbd&quot;
  echo &quot;\t -l, layout : fr, es, en, ... (défaut = fr)&quot;
  echo &quot;\t -v, variant : fr, latin9, bepo, ... (défaut = &lt;vide&gt;)&quot;
  echo &quot;\t -P, Pilote : ephyr ou evdev (défaut = ephyr)&quot;
}

testExecutable() {
	XEPHYR=`whereis -b Xephyr | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
TAILLE=&quot;1024x768&quot;
SOURIE=
CLAVIER=
LAYOUT=&quot;fr&quot;
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
PILOTE=ephyr # Test = ephyr ; Prod = evdev

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XEPHYR&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;Xephyr : &quot;$XEPHYR
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:t:s:c:l:v:P:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		t|taille)
			TAILLE=&quot;$OPTARG&quot;
		;;

		s|sourie)
			SOURIE=$OPTARG
			if  ! [ -r $SOURIE ];then
				echo &quot;La sourie n'est pas accessible&quot;
				exit 3
			fi
		;;

		c|clavier)
			CLAVIER=$OPTARG
			if  ! [ -r $CLAVIER ];then
				echo &quot;Le clavier n'est pas accessible&quot;
				exit 4
			fi
		;;

		l|layout)
			LAYOUT=$OPTARG
		;;

		v|variant)
			VARIANT=$OPTARG
		;;

		P|Pilote)
			PILOTE=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Construction de la ligne d&quot;argument
OPTIONS=&quot;&quot;

if [ -n &quot;${TAILLE}&quot; ]; then
	OPTIONS=&quot; -screen ${TAILLE}&quot;
fi

if [ -n &quot;${CLAVIER}&quot; ]; then
	if [ -n &quot;${LAYOUT}&quot; ]; then
		OPTIONS=$OPTIONS&quot; -keybd $PILOTE,,device=${CLAVIER},xkbrules=evdev,xkbmodel=evdev,xkblayout=${LAYOUT}&quot;
		if [ -n &quot;${VARIANT}&quot; ]; then
			OPTIONS=$OPTIONS&quot;,xkbvariant=${VARIANT}&quot;
		fi
	fi
fi

if [ -n &quot;${SOURIE}&quot; ]; then
	OPTIONS=$OPTIONS&quot; -mouse $PILOTE,,device=${SOURIE}&quot;
fi

# Lancement de Xephyr en arrière plan
echo &quot;$XEPHYR -retro $OPTIONS :$POSTE&quot;
exec $XEPHYR -retro  $OPTIONS :$POSTE
&lt;/pre&gt;

Petite explication sur la dernière ligne. Le &quot;exec&quot; fait en sorte que ce soit le processus de Xephyr qui prend la place du script, donc il reprend le PID et tout ce qui va bien. Ca permet surtout à ce que le signal USR1 que Xephyr lance au PPID, soit bien récupéré par LightDM et que ce dernier continue son fonctionnement normalement.

===Xephyr-greeter-setup.sh===
Le contenue du fichier &quot;Xephyr-greeter-setup.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p|--poste numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -d, --deplacement : de la forme 'x,y' (en pixel)&quot;
  echo &quot;\t -v, --vt : 7, 8, 9, 10, 11 (defaut = 7)&quot;
}

testExecutable() {
	XWININFO=`whereis -b xwininfo | cut -d' ' -f2`
	WMCTRL=`whereis -b wmctrl | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
DEPLACEMENT=
VT=7
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
ATTENTE=3 # temps en seconde avant de déclencher le &quot;chvt&quot; pour revenir sur le bon VT

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XWININFO&quot; -o -z &quot;$WMCTRL&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;xwininfo : &quot;$XWININFO
	echo &quot;wmctrl : &quot;$WMCTRL
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:d:v:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		d|deplacement)
			DEPLACEMENT=&quot;$OPTARG&quot;
		;;
	
		v|vt)
			VT=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Vieux Hack tout bancal pour revenir au bon VT sans patcher LightDM
(sleep $ATTENTE ; chvt $VT)&amp;

# Deplacement de la fenetre si besoin
if [ -n &quot;$DEPLACEMENT&quot; ]; then
	#On recherche l'ID de la fenêtre Xephyr
        XEP=`XAUTHORITY=/var/run/lightdm/root/:$XRACINE $XWININFO -root -children -all -display :$XRACINE | grep &quot;Xephyr on :$POSTE&quot; --max-count=1`;

	if [ -z &quot;$XEP&quot; ]; then
		echo &quot;fenêtre Xephyr non trouvé pour le poste $POSTE&quot;
		exit 5
	fi
    XEPHYR_WIN_ID=`echo ${XEP} | cut -d' ' -f1`;
    $WMCTRL 2&gt;&amp;1 -v -i -r ${XEPHYR_WIN_ID} -e 0,${DEPLACEMENT},-1,-1;
	if [ $? -ne 0 ]; then
		echo &quot;Erreur lors du déplacement de la fenêtre Xephyr pour le poste $POSTE&quot;
		exit 7
	fi
fi

# Mise en place des variables d'environnement pour le greeter (utile ?)
export DISPLAY=:$POSTE
export XAUTHORITY=/var/run/lightdm/root/:$POSTE
&lt;/pre&gt;
Petite explication concernant la ligne suivante
 (sleep $ATTENTE ; chvt $VT)&amp;
Comme je n'ai pas patché LightDM pour éviter le changement de VT et que Xephyr m'empêche de faire un Ctrl+Alt+7 (avec le driver evdev) pour revenir au bon VT, j'ai du mettre en place un automatisme. Certes c'est loin d'être parfait mais ça rempli correctement son office.

==Modification du système==
===Montage des périphériques USB===
On se rend assez vite compte que si l'on branche une clé USB elle n'apparait pas automatiquement sur le bureau et elle est encore moins &quot;montable&quot; par un utilisateur classique. Elle apparait bien dans la liste des périphériques accessibles (volet de gauche sur nautilus) mais il y a un problème de droit.
Un petit rappel de la chaine mis en jeu lorsque l'on branche une clé USB ou tout autre périphérique.
* Détection par le noyau de l'ajout d'un matériel
* Udev prend le relai et créé les périphériques block nécessaire dans /dev
* PolicyKit termine le travail en mettant en place les autorisations adéquate

Donc le blocage vient de ce dernier composant, il ne reconnait pas une session Xephyr comme &quot;active&quot; et donc refuse le montage de ce type de périphérique par l'utilisateur lambda. Pour passer au delà de cette limitation on va redéfinir la règle de montage, pour cela il faut aller dans le répertoire suivant :
 /etc/polkit-1/localauthority/50-local.d
Et y créer un fichier, &quot;10-udisk.pkla&quot; par exemple
&lt;pre&gt;
[Allow mounting from Xephyr]
Identity=*
Action=org.freedesktop.udisks.change;org.freedesktop.udisks.drive-detach;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.filesystem-unmount-others
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

Voilà, avec Gnome3 dans le volet de gauche de Nautilus on peux cliquer sur l'icone de la clé USB pour quelle se monte correctement, idem avec LXDE.
Je recommande de désactiver l'automontage des périphériques USB afin que l'utilisateur qui branche la clé puisse la monter sans interférence.

===Gestion de l'énergie===
De la même manière que précédemment, par défaut il est impossible d'éteindre l'ordinateur depuis la session graphique (hors LightDM).
Donc pour cela on créé un nouveau fichier (20-upower.pkla) dans :
 /etc/polkit-1/localauthority/50-local.d

&lt;pre&gt;
[Suspend/hibernate permissions]
Identity=*
Action=org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

===Gestion du son===
Par défaut Pulseaudio est lancé lors de l'identification d'un utilisateur, du coup il est le seul qui puisse utiliser la carte son. Pour palier a ce problème il faut rendre pulseaudio démon du système.
Pour cela il faut modifier plusieurs fichiers de configurations :
* /etc/default/pulseaudio
&lt;pre&gt;PULSEAUDIO_SYSTEM_START=1&lt;/pre&gt;

* /etc/pulse/daemon.conf
&lt;pre&gt;daemonize = yes
local-server-type = system&lt;/pre&gt;

* /etc/pulse/client.conf
&lt;pre&gt;autospawn = no&lt;/pre&gt;

* Et enfin modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot;
 usermod -aG pulse-access &lt;username&gt;

([http://askubuntu.com/questions/192522/how-do-i-configure-sound-with-pulseaudio-and-multiseat source])
===Aller plus loin===
* Si l'on veut restreindre ce droit par utilisateur ou par groupe on modifie la ligne &quot;Identity&quot; comme il suit
 Identity=unix-user:toto;unix-group:plugdev
* Pour creuser un peu plus la configuration de ce système on peux aller voir [http://www.freedesktop.org/software/polkit/docs/0.105/pklocalauthority.8.html cette page] sur PolicyKit
* Il serait aussi intéressant de définir des ports USB réservés pour chaque siège, mais je ne sais pas encore comment gérer cela.
* Voir s'il est possible de dédier les voies arrière à un poste et les voies avant à un autre ...

==Conclusion==
Et voilà, tout est prêt pour le redémarrage et admirer les mires de login sur leur écran respectif.

===Avantages===
* Avec du matériel de récupération on peut facilement mettre en place cette solution peut coûteuse
* La satisfaction d'avoir un poste de travail exotique
* Permettre à une tierce personne de profiter de la puissance monstre des machines récente sans se priver de notre fauteuil favori
* Se sentir moins avec une/plusieurs personnes à coté de soi :-p

===Inconvénients===
* Accélération graphique fortement diminué
* Si on débranche les claviers/souries Xephyr ne sait pas les reconnaitre automatiquement au rebranchement. Il faut relancer Xephyr en se déconnectant ou relancer LightDM
* Un &quot;saut&quot; des 2 écrans lors de la déconnexion d'un postes, mais cela est dû à LightDM et son changment de VT intempestif.
* Surveillance de chaque mis à jour de Xorg pour ne pas avoir de surprise au redémarrage
* Recompilation nécessaire en cas de mise à jour majeur de Xorg
* Gestion des montages USB non optimale
* Les voyants du clavier (pavé numérique, Majuscule et arrêt défile) ne réagissent plus, mais la clavier réagit correctement.
* Dans l'espace de travail de certains logiciel (VLC, Gimp) la sourie peux avoir un affichage lacunaire. Par exemple sous GIMP elle n'est visible que lorsqu'on la déplace, avec VLS il y a un carré noir autour d'elle quand on la déplace le reste du temps elle disparait.


===Remerciement===
Un grand merci à ce site pour m'avoir prémaché le travail ... ce qui ne m'as pas empêché d'apporter quelques améliorations à sa solution.
http://beforeafterx.blogspot.fr/2012/08/configuration-of-ligthdm-12.html</text>
      <sha1>1p908yqodzdjuv0ih4lywaamr495c8w</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5090</id>
      <parentid>5086</parentid>
      <timestamp>2013-04-08T10:21:43Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <text xml:space="preserve" bytes="23214">Après avoir fait du [http://www.debian-fr.org/multiseat-plusieurs-utilisateurs-sur-1-pc-t6954.html#p188187 multiposte avec 2 CG], un changement de PC m'oblige à faire la même chose mais avec une seule carte. J'ai essayé de couvrir au maximum toutes les étapes de la mise en place de la solution.

----
==Choix des outils==
Tout d'abord le raisonement pour le choix des outils à été le suivant.
==== Xorg ou Wayland ?====
La réponse a été rapide. Xorg clairement, Wayland est encore trop récent pour pouvoir le faire et aucun document ne traite pour l'instant de ce problème.

==== Xnest ou Xephyr ?====
Xephyr est largement plébiscité et Xnest semble tomber en désuétude. C'est par le développement de Tizen (ex-Meego) que Xephyr semble toujours actif et que de nouvelles fonctionnalités lui sont ajouté. Intel s'en sert intensément et est énormément utilisé pour le développement d'application pour smartphone comme environnement de simulation. (http://www.phoronix.com/scan.php?page=news_item&amp;px=ODc1NQ).
Un soucis avec Xephyr est que le support de evdev semble ne pas avoir été inclus dans les options de compilations. &quot;evdev&quot; permet de monopoliser les claviers et souries. Du coup il faut refaire le paquet soi-même.

==== Et la transition avec systemd ? ====
Il ne semble plus y avoir de problème particulier (http://phoronix.com/forums/showthread.php?57432-SystemD-Udev-Multi-Seat-Support-For-X-Org)

====Comment gérer 2 écran, 2 session avec une seule carte graphique ?====
Il faut savoir que Xephyr permet de se greffer sur n'importe quel serveur X afin d'afficher une autre session. Par exemple avec la commande &quot;Xephyr -query 127.0.0.1&quot; vous devez pouvoir vous connecter sur votre propre machine si le protocole &quot;XDMCP&quot; est activé sur votre &quot;DM&quot; (GDM, KDM, XDM, ...). Donc le but du jeu sera d'avoir un serveur X qui va &quot;supporter&quot; 2 fenêtre Xephyr. Ces deux dernière se verrons affecter les claviers et les souries de manière exclusif.

====Et le DM ? Debian a adopté GDM(3) avec Gnome mais j'aimerais bien m'en passer.====
Avec GDM (celui de Gnome2) il existe un très bon tutoriel ici : http://netpatia.blogspot.fr/2009/06/multiseat-in-ubuntu-904.html 
Pour GDM3, le problème est que pour l'instant il ne reprend pas toutes les possibilitées de son ancienne version. 
https://live.gnome.org/GDM/ToDo
&quot;-- Allow per-display X Server commands 
		BrianCameron: The [server] and [server-foo] sections of the GDM configuration have been disabled. This means that users who depend on novel configurations which require special Xserver commands per-display is not available.&quot;

Donc bonne nouvelle, il fallait trouver une alternative en le nom de LightDM, qui est issu de Ubuntu ... 

===Prérequis===
Donc pour les pré-requis :
* Ajouter &quot;deb-src http://ftp.fr.debian.org/debian/ &lt;VersionDebian&gt; main contrib non-free&quot;
* Installer les paquage dpkg-dev, build-essential, devscripts, lightDM

==Reconstruction de Xephyr==
===Récupération des sources nécessaires===
On récupère toutes les sources du packet source xorg-server qui comprend Xephyr.

 $ apt-get source xserver-xephyr


Puis récupérer toutes les dépendances spécifique au paquet :

 $ apt-get build-dep xorg-server

Là il va télécharger un certain nombre de paquet de développement (&quot;-dev&quot;), ils sont marqué comme installé automatiquement, donc un deborphan devrait vous les enlever sans trop de problème. Sinon il existe cette commande pour être sur qu'ils sont marqué en tant que &quot;installé automatiquement&quot;, puis un &quot;apt-get autoclean&quot; les supprimera.

===Reconfiguration===
Ensuite tout se passe dans le répertoire &quot;debian&quot;

 $ cd xorg-server-1.12.4/debian


On édite le fichier &quot;changlog&quot; pour monter de version le paquet que l'on va reconstruire. Il est possible de le faire en automatique avec la commande:

 debian/$ dch -n


L'option &quot;-n&quot; permet d'incrémenter le numéro de version de façon mineur, c'est à dire l'ajout de &quot;.1&quot; en fin de numéro de version.

Sinon pour le faire en manuel, il faut ajouter une ligne du type suivant au fichier:
&lt;pre&gt;
xorg-server (2:1.12.4-5.1) UNRELEASED; urgency=low

  * Non-maintainer upload.
  * ajout des paramètre pour Xephyr et evdev

 -- Vous &lt;vous@VotreMachine&gt;  Sun, 03 Mar 2013 22:21:32 +0100
&lt;/pre&gt;

Pour éviter de réinstaller tout Xorg avec le nouveau numéro de version il faut éditer le fichier &quot;debian/control&quot; et modifier la dépendance de Xephyr (ligne ~283). Pour cela il faut remplacer le 
&lt;pre&gt;
Depends :
  xserver-common (&gt;= ${source:Version})
&lt;/pre&gt;
Par :
&lt;pre&gt;
Depends :
  xserver-common (&gt;= 2:1.12.4-5)
&lt;/pre&gt;

Le numéro doit être en accord avec la version de votre Xorg actuellement installé sur votre machine. 
Sinon cette modification est directement possible dans le .deb, toujours dans le fichier &quot;DEBIAN/control&quot;. Pour cela il faut prendre le .deb que vous avez construit, le décompresser, modifier le fichier et faire la commande &quot;dpkg-deb -b &lt;nom du répertoire contenant les fichiers&gt;&quot;. Mais il est plus pratique de le faire avant.

Je ne vous conseille pas de mettre une numéro de version trop élevé car cela pourrait engendrer une incompatibilité avec les futurs versions de Xorg.

Ensuite nous allons modifier les options de compilation en éditant le fichier &quot;rules&quot;, c'est le Makefile de la construction du packet.
Localisez &quot;confflags_main&quot; (ligne ~133) et ajouter les lignes suivant juste en dessous de &quot;--enable-kdrive&quot; (ligne ~156)

 --enable-kdrive-evdev \
 --enable-kdrive-mouse \
 --enable-kdrive-kbd \

===Recompilation===
Passons maintenant à la recompilation proprement dite :
 $ fakeroot ./rules binary

Et laisser la compilation et la création des paquets se faire ... cela peut prendre quelques minutes.

Si pour une raison il vous faut refaire entièrement la compilation il faut d'abord faire la commande suivante
 $ fakeroot ./rules clean

Si c'est juste refaire les &quot;.deb&quot; (correction du numéro de dépendance, ...), alors cette commande suffit.
 $ fakeroot ./rules binary-deb

===Installation du paquet obtenue===
Enfin pour installer votre paket (qui se trouve dans le répertoire supérieur) il faut faire :
 #dpkg -i xserver-xephyr_1.12.4-5_i386.deb
Ou de manière graphique avec GDebi.
====Paquets déjà prêt====
* [[{{ns:file}}:Xserver-xephyr_1.12.4-6_i386.deb.tar]]
* [[{{ns:file}}:Xserver-xephyr_1.12.4-5.1_amd64.deb.tar]]

==Configuration de Xorg==
===Définition de l'existant===
Pour rappel le principe seras d'avoir une session X qui va héberger 2 sessions Xephyr qui serviront les différents sièges.
Tout d'abord nous allons faire un fichier de conf pour le serveur Xorg. Pour ne pas démarrer de rien on peut lancer la commande (en root) &quot;Xorg -configure&quot; qui génère le fichier &quot;xorg.conf.new&quot; dans &quot;/root&quot;. Ensuite on fait un petit &quot;xrandr&quot; pour identifier les sorties disponibles.
&lt;pre&gt;
$ xrandr

Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 593mm
&lt;/pre&gt;

&quot;DVI-0&quot; &amp; &quot;HDMI-0&quot; sont les 2 disponibles sur la machine. On peux aussi trouver du &quot;VGA-0&quot; ou &quot;LVDS&quot; pour les écrans de portables.

===Exemple de fichier de configuration===
Dans cet exemple on peut avoir un &quot;/etc/xorg.conf&quot; comme suivant :
&lt;pre&gt;
##################################################################
Section &quot;Monitor&quot;
	Identifier  &quot;HannsG&quot;
	Option      &quot;PreferredMode&quot; &quot;1920x1200&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
	Option		&quot;Primary&quot; &quot;true&quot;
EndSection

Section &quot;Monitor&quot;
	Identifier  &quot;Acer&quot;
	Option      &quot;PreferredMode&quot; &quot;1680x1050&quot;
	Option      &quot;DPMS&quot; &quot;true&quot;
EndSection

Section &quot;Device&quot;
	Identifier  &quot;card0&quot;
	Driver      &quot;radeon&quot;
	# Ici on associe les sorties video avec une section &quot;Monitor&quot;
	# On remarquera le &quot;Monitor&quot; devant le nom des sortie, c'est indispensable (cf : http://www.x.org/archive/current/doc/man/man5/xorg.conf.5.xhtml#heading12)
	Option      &quot;Monitor-HDMI-0&quot; &quot;HannsG&quot;
	Option      &quot;Monitor-DVI-0&quot; &quot;Acer&quot;
EndSection

##################################################################

Section &quot;Screen&quot;
	Identifier  &quot;ecran1&quot;
	Device      &quot;card0&quot;
	Monitor     &quot;HansG&quot;
	DefaultDepth 24
	SubSection &quot;Display&quot;
 		Depth   24
		Virtual 3600 1200
	EndSubSection
EndSection

Section &quot;ServerLayout&quot;
	Identifier    &quot;dualscreen&quot;
	Screen      0  &quot;ecran1&quot;
EndSection
##################################################################
&lt;/pre&gt;

==Configuration de LightDM==
Nous allons maintenant regarder la configuration de LightDM d'un peu plus près. Le fichier de configuration par défaut expose toutes les options possibles du dit fichier. Nous allons garder le strict minimum
===lightdm.conf===
Pour cela éditons le fichier /etc/lightd/lightdm.conf

&lt;pre&gt;
[LightDM]
 greeter-user=root
 user-authority-in-system-dir=false

 [SeatDefaults]
 xserver-allow-tcp=false
 greeter-hide-users=false
 user-session=lightdm-xsession
 session-wrapper=/etc/X11/Xsession

 [Seat:1]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 1 -t 1680x1050 -P evdev -s /dev/input/by-id/usb-Logitech_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-id/usb-TrulyErgonomic.com_Truly_Ergonomic_Computer_Keyboard-event-kbd -v bepo 
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 1
 greeter-session=lightdm-greeter

[Seat:2]
 xserver-command=/etc/lightdm/Xephyr-command.sh -p 2 -t 1920x1200 -P evdev -s /dev/input/by-id/usb-B16_b_02_USB-PS_2_Optical_Mouse-event-mouse -c /dev/input/by-path/platform-i8042-serio-0-event-kbd
 greeter-setup-script=/etc/lightdm/Xephyr-greeter-setup.sh -p 2 -d 1680,0
 greeter-session=lightdm-greeter
&lt;/pre&gt;

Il y a plusieurs chose à savoir concernant le fonctionnement de LightDM afin de comprendre ce qui est fait.
-- La section &quot;SeatDefault&quot; est commune à tous les siège définit après
-- Chaque &quot;Seat&quot; est exécuté dans l'ordre dans un VT différent et ce même si, dans notre cas, tout se passe dans le VT7 ([url=https://code.launchpad.net/~andrzejtp2010/lightdm/lightdm-trunk-xephyr-multiseat/+merge/120286]un patch[url] à été proposé pour palier à ce problème mais il n'a pas été accepté ... pour l'instant)
-- Chaque propriétés de tous les &quot;Seat&quot; sont lancé dans un ordre précis, d'abord tous les &quot;xserver-command&quot;, puis tous les &quot;greeter-setup-script&quot;, enfin tous les &quot;greeter-session&quot;. Si vous mettez d'autres propriétés elle seront exécuter suivant leur ordre pré-établi.
-- Si les &quot;greeter&quot; se termine, lightDM coupe le &quot;xserver-command&quot; correspondant. De même si le &quot;xserver-command&quot; se termine le greeter est coupé.

Donc pour que tout se positionne correctement il faut
-- D'abord lancer le serveur X qui servira de support, ce qui est fait en le mettant en tant que premier &quot;Seat&quot;
-- Lancer les fenêtres Xephyr avec les optons qui vont bien, ce qui est fait avec le script &quot;Xephyr-command.sh&quot; et ses arguments
-- Simuler un &quot;greeter&quot; pour le &quot;Seat :0&quot; afin que le serveur X ne soit pas tuer par lightDM, ce qui est fait avec le script &quot;fake-greeter&quot;
-- Exécuter un script qui va placer les fenêtre Xephyr si besoin et initialiser les variables d'environnement correctement, fait avec &quot;Xephyr-greeter-setup.sh&quot;
-- Exécuter les &quot;greeter&quot; dans les fenêtre Xephyr

===fake-greeter.desktop===
Pour le faux greeter du serveur X il faut créer un fichier dans &quot;/usr/share/xgreeters/fake-greeter.desktop&quot; et y copier son contenu :
&lt;pre&gt;
[Desktop Entry]
Name=LightDM fake greeter
Comment=This runs no greeter at all, it should only be run from LightDM
Exec=sleep infinity
Type=Application
X-Ubuntu-Gettext-Domain=lightdm
&lt;/pre&gt;

Après tout cela nous allons créer un script qui permettra de créer (&quot;Xephyr-command.sh&quot;) et un autre pour placer les fenêtre à l'écran (&quot;Xephyr-greeter-setup.sh&quot;).
Tout d'abord il est nécessaire d'installer le petit utilitaire &quot;wmctrl&quot; avec
 # aptitude install wmctrl
===Xephyr-command.sh===
 Le contenue du fichier &quot;Xephyr-command.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -t, taille : Doit être de la forme 9999x9999, (dafaut = 1024x768)&quot;
  echo &quot;\t -s, sourie : /dev/input/[by-path|by-id]/...event-mouse&quot;
  echo &quot;\t -c, clavier : /dev/input/[by-path|by-id]/...event-kbd&quot;
  echo &quot;\t -l, layout : fr, es, en, ... (défaut = fr)&quot;
  echo &quot;\t -v, variant : fr, latin9, bepo, ... (défaut = &lt;vide&gt;)&quot;
  echo &quot;\t -P, Pilote : ephyr ou evdev (défaut = ephyr)&quot;
}

testExecutable() {
	XEPHYR=`whereis -b Xephyr | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
TAILLE=&quot;1024x768&quot;
SOURIE=
CLAVIER=
LAYOUT=&quot;fr&quot;
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
PILOTE=ephyr # Test = ephyr ; Prod = evdev

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XEPHYR&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;Xephyr : &quot;$XEPHYR
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:t:s:c:l:v:P:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		t|taille)
			TAILLE=&quot;$OPTARG&quot;
		;;

		s|sourie)
			SOURIE=$OPTARG
			if  ! [ -r $SOURIE ];then
				echo &quot;La sourie n'est pas accessible&quot;
				exit 3
			fi
		;;

		c|clavier)
			CLAVIER=$OPTARG
			if  ! [ -r $CLAVIER ];then
				echo &quot;Le clavier n'est pas accessible&quot;
				exit 4
			fi
		;;

		l|layout)
			LAYOUT=$OPTARG
		;;

		v|variant)
			VARIANT=$OPTARG
		;;

		P|Pilote)
			PILOTE=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Construction de la ligne d&quot;argument
OPTIONS=&quot;&quot;

if [ -n &quot;${TAILLE}&quot; ]; then
	OPTIONS=&quot; -screen ${TAILLE}&quot;
fi

if [ -n &quot;${CLAVIER}&quot; ]; then
	if [ -n &quot;${LAYOUT}&quot; ]; then
		OPTIONS=$OPTIONS&quot; -keybd $PILOTE,,device=${CLAVIER},xkbrules=evdev,xkbmodel=evdev,xkblayout=${LAYOUT}&quot;
		if [ -n &quot;${VARIANT}&quot; ]; then
			OPTIONS=$OPTIONS&quot;,xkbvariant=${VARIANT}&quot;
		fi
	fi
fi

if [ -n &quot;${SOURIE}&quot; ]; then
	OPTIONS=$OPTIONS&quot; -mouse $PILOTE,,device=${SOURIE}&quot;
fi

# Lancement de Xephyr en arrière plan
echo &quot;$XEPHYR -retro $OPTIONS :$POSTE&quot;
exec $XEPHYR -retro  $OPTIONS :$POSTE
&lt;/pre&gt;

Petite explication sur la dernière ligne. Le &quot;exec&quot; fait en sorte que ce soit le processus de Xephyr qui prend la place du script, donc il reprend le PID et tout ce qui va bien. Ca permet surtout à ce que le signal USR1 que Xephyr lance au PPID, soit bien récupéré par LightDM et que ce dernier continue son fonctionnement normalement.

===Xephyr-greeter-setup.sh===
Le contenue du fichier &quot;Xephyr-greeter-setup.sh&quot;
&lt;pre&gt;
#!/bin/sh
# 2013-03 @ Mimoza
# http://www.isalo.org/wiki.debian-fr/Multiseat

####### Les fonctions #############

usage() {
  echo &quot;Usage : $nom [OPTION...] -p|--poste numéroDePoste&quot;
  echo &quot;Usage : $nom -h|--help&quot;
  echo &quot;Options :&quot;
  echo &quot;\t -d, --deplacement : de la forme 'x,y' (en pixel)&quot;
  echo &quot;\t -v, --vt : 7, 8, 9, 10, 11 (defaut = 7)&quot;
}

testExecutable() {
	XWININFO=`whereis -b xwininfo | cut -d' ' -f2`
	WMCTRL=`whereis -b wmctrl | cut -d' ' -f2`
}


####### VALEURS PAR DEFAUT #############
POSTE=$$ #On récupère le PID du process courant
DEPLACEMENT=
VT=7
XRACINE=0 # Permet de spécifier le serveur X à utiliser si différent du 0
ATTENTE=3 # temps en seconde avant de déclencher le &quot;chvt&quot; pour revenir sur le bon VT

####### ANALYSE DES OPTIONS #############
# Mode debug
set -x

# récupération du nom du script
nom=`basename $0`

# Cas particulier de sans option
if [ $# -lt 1 ]; then usage; exit 1; fi


# Vérification des outils disponibles
testExecutable
if [ -z &quot;$XWININFO&quot; -o -z &quot;$WMCTRL&quot; ]; then
	echo &quot;Executable manquant :&quot;
	echo &quot;xwininfo : &quot;$XWININFO
	echo &quot;wmctrl : &quot;$WMCTRL
	exit 2
fi

# Analyse des autres options
OPTIND=0

while getopts &quot;:p:d:v:h&quot; option
do
	echo &quot;(-- option:'$option'  ind:'$OPTIND' optarg:'$OPTARG' --)&quot;
	case $option in
		p|poste)
			POSTE=$OPTARG
		;;

		d|deplacement)
			DEPLACEMENT=&quot;$OPTARG&quot;
		;;
	
		v|vt)
			VT=$OPTARG
		;;

		h|help)
			usage
			exit 1
		;;

		:)
			echo &quot;l'option '$OPTARG' nécessite un argument&quot;
		;;

		\?) echo &quot; option '$OPTARG'  INVALIDE&quot; &gt;&amp;2
	esac
done

####### TRAITEMENT EFFECTIF #############
# Mise en place des variable d'environnement
export DISPLAY=:$XRACINE
export XAUTHORITY=/var/run/lightdm/root/:$XRACINE

# Vieux Hack tout bancal pour revenir au bon VT sans patcher LightDM
(sleep $ATTENTE ; chvt $VT)&amp;

# Deplacement de la fenetre si besoin
if [ -n &quot;$DEPLACEMENT&quot; ]; then
	#On recherche l'ID de la fenêtre Xephyr
        XEP=`XAUTHORITY=/var/run/lightdm/root/:$XRACINE $XWININFO -root -children -all -display :$XRACINE | grep &quot;Xephyr on :$POSTE&quot; --max-count=1`;

	if [ -z &quot;$XEP&quot; ]; then
		echo &quot;fenêtre Xephyr non trouvé pour le poste $POSTE&quot;
		exit 5
	fi
    XEPHYR_WIN_ID=`echo ${XEP} | cut -d' ' -f1`;
    $WMCTRL 2&gt;&amp;1 -v -i -r ${XEPHYR_WIN_ID} -e 0,${DEPLACEMENT},-1,-1;
	if [ $? -ne 0 ]; then
		echo &quot;Erreur lors du déplacement de la fenêtre Xephyr pour le poste $POSTE&quot;
		exit 7
	fi
fi

# Mise en place des variables d'environnement pour le greeter (utile ?)
export DISPLAY=:$POSTE
export XAUTHORITY=/var/run/lightdm/root/:$POSTE
&lt;/pre&gt;
Petite explication concernant la ligne suivante
 (sleep $ATTENTE ; chvt $VT)&amp;
Comme je n'ai pas patché LightDM pour éviter le changement de VT et que Xephyr m'empêche de faire un Ctrl+Alt+7 (avec le driver evdev) pour revenir au bon VT, j'ai du mettre en place un automatisme. Certes c'est loin d'être parfait mais ça rempli correctement son office.

==Modification du système==
===Montage des périphériques USB===
On se rend assez vite compte que si l'on branche une clé USB elle n'apparait pas automatiquement sur le bureau et elle est encore moins &quot;montable&quot; par un utilisateur classique. Elle apparait bien dans la liste des périphériques accessibles (volet de gauche sur nautilus) mais il y a un problème de droit.
Un petit rappel de la chaine mis en jeu lorsque l'on branche une clé USB ou tout autre périphérique.
* Détection par le noyau de l'ajout d'un matériel
* Udev prend le relai et créé les périphériques block nécessaire dans /dev
* PolicyKit termine le travail en mettant en place les autorisations adéquate

Donc le blocage vient de ce dernier composant, il ne reconnait pas une session Xephyr comme &quot;active&quot; et donc refuse le montage de ce type de périphérique par l'utilisateur lambda. Pour passer au delà de cette limitation on va redéfinir la règle de montage, pour cela il faut aller dans le répertoire suivant :
 /etc/polkit-1/localauthority/50-local.d
Et y créer un fichier, &quot;10-udisk.pkla&quot; par exemple
&lt;pre&gt;
[Allow mounting from Xephyr]
Identity=*
Action=org.freedesktop.udisks.change;org.freedesktop.udisks.drive-detach;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.filesystem-unmount-others
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

Voilà, avec Gnome3 dans le volet de gauche de Nautilus on peux cliquer sur l'icone de la clé USB pour quelle se monte correctement, idem avec LXDE.
Je recommande de désactiver l'automontage des périphériques USB afin que l'utilisateur qui branche la clé puisse la monter sans interférence.

===Gestion de l'énergie===
De la même manière que précédemment, par défaut il est impossible d'éteindre l'ordinateur depuis la session graphique (hors LightDM).
Donc pour cela on créé un nouveau fichier (20-upower.pkla) dans :
 /etc/polkit-1/localauthority/50-local.d

&lt;pre&gt;
[Suspend/hibernate permissions]
Identity=*
Action=org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=yes
ResultInactive=yes
ResultActive=yes
&lt;/pre&gt;

===Gestion du son===
Par défaut Pulseaudio est lancé lors de l'identification d'un utilisateur, du coup il est le seul qui puisse utiliser la carte son. Pour palier a ce problème il faut rendre pulseaudio démon du système.
Pour cela il faut modifier plusieurs fichiers de configurations :
* /etc/default/pulseaudio
&lt;pre&gt;PULSEAUDIO_SYSTEM_START=1&lt;/pre&gt;

* /etc/pulse/daemon.conf
&lt;pre&gt;daemonize = yes
local-server-type = system&lt;/pre&gt;

* /etc/pulse/client.conf
&lt;pre&gt;autospawn = no&lt;/pre&gt;

* Et enfin modifier les utilisateurs en les ajoutant au groupe &quot;pulse-access&quot;
 usermod -aG pulse-access &lt;username&gt;

([http://askubuntu.com/questions/192522/how-do-i-configure-sound-with-pulseaudio-and-multiseat source])
===Aller plus loin===
* Si l'on veut restreindre ce droit par utilisateur ou par groupe on modifie la ligne &quot;Identity&quot; comme il suit
 Identity=unix-user:toto;unix-group:plugdev
* Pour creuser un peu plus la configuration de ce système on peux aller voir [http://www.freedesktop.org/software/polkit/docs/0.105/pklocalauthority.8.html cette page] sur PolicyKit
* Il serait aussi intéressant de définir des ports USB réservés pour chaque siège, mais je ne sais pas encore comment gérer cela.
* Voir s'il est possible de dédier les voies arrière à un poste et les voies avant à un autre ...

==Conclusion==
Et voilà, tout est prêt pour le redémarrage et admirer les mires de login sur leur écran respectif.

===Avantages===
* Avec du matériel de récupération on peut facilement mettre en place cette solution peut coûteuse
* La satisfaction d'avoir un poste de travail exotique
* Permettre à une tierce personne de profiter de la puissance monstre des machines récente sans se priver de notre fauteuil favori
* Se sentir moins avec une/plusieurs personnes à coté de soi :-p

===Inconvénients===
* Accélération graphique fortement diminué
* Si on débranche les claviers/souries Xephyr ne sait pas les reconnaitre automatiquement au rebranchement. Il faut relancer Xephyr en se déconnectant ou relancer LightDM
* Un &quot;saut&quot; des 2 écrans lors de la déconnexion d'un postes, mais cela est dû à LightDM et son changment de VT intempestif.
* Surveillance de chaque mis à jour de Xorg pour ne pas avoir de surprise au redémarrage
* Recompilation nécessaire en cas de mise à jour majeur de Xorg
* Gestion des montages USB non optimale
* Les voyants du clavier (pavé numérique, Majuscule et arrêt défile) ne réagissent plus, mais la clavier réagit correctement.
* Dans l'espace de travail de certains logiciel (VLC, Gimp) la sourie peux avoir un affichage lacunaire. Par exemple sous GIMP elle n'est visible que lorsqu'on la déplace, avec VLS il y a un carré noir autour d'elle quand on la déplace le reste du temps elle disparait.


===Remerciement===
Un grand merci à ce site pour m'avoir prémaché le travail ... ce qui ne m'as pas empêché d'apporter quelques améliorations à sa solution.
http://beforeafterx.blogspot.fr/2012/08/configuration-of-ligthdm-12.html</text>
      <sha1>enlee6wifi2obq5i8kv3z17cbhmz8vd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5092</id>
      <parentid>5090</parentid>
      <timestamp>2013-04-08T10:23:46Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <comment>Page redirigée vers [[Multiposte]]</comment>
      <text xml:space="preserve" bytes="26">#REDIRECTION[[Multiposte]]</text>
      <sha1>j6oezwj0640cd2fbm01mksxx8hjvfjq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>NTP</title>
    <ns>0</ns>
    <id>699</id>
    <revision>
      <id>3080</id>
      <timestamp>2011-07-10T16:24:37Z</timestamp>
      <contributor>
        <username>Kna</username>
        <id>35</id>
      </contributor>
      <comment>Page créée avec « NTP (Network Protocol Daemon) est un protocole permettant de synchroniser l'horloge entre différentes machines.  C'est le même service, le daemon '''ntpd''', qui fait à la... »</comment>
      <text xml:space="preserve" bytes="3919">NTP (Network Protocol Daemon) est un protocole permettant de synchroniser l'horloge entre différentes machines.

C'est le même service, le daemon '''ntpd''', qui fait à la fois client et serveur.

= Installation =

Il suffit d'installer le paquet ntp :

 apt-get install ntp

= Configuration =

== client ==

La configuration se fait dans le fichier /etc/ntp.conf

La liste des serveurs présente par défaut est :

 server 0.debian.pool.ntp.org iburst
 server 1.debian.pool.ntp.org iburst
 server 2.debian.pool.ntp.org iburst
 server 3.debian.pool.ntp.org iburst

La machine tente de se synchroniser avec le premier serveur, puis le second si le premier est indisponible, etc...

L'option ''iburst'' signifie qu'en cas d'indisponibilité, il essayera plusieurs fois avant d'abandonner. Si on mets l'option ''burst'' à la place, il essayera dès la première connexion d'envoyer plusieurs paquets pour la synchronisation. On peut aussi ajouter l'option ''dynamic'' afin de conserver en mémoire les serveurs indisponibles, et tenter de les recontacter plus tard.

Il est souvent utile de définir des serveurs plus près, afin d'accélérer la synchronisation, par exemple, en France métropolitaine :

 server 0.fr.pool.ntp.org iburst
 server 1.fr.pool.ntp.org iburst
 server 2.fr.pool.ntp.org iburst
 server 3.fr.pool.ntp.org iburst

Vous pouvez trouver des serveurs de temps plus proches de chez vous à l'adresse http://www.pool.ntp.org (sur les liens à droite de la page)

Cette configuration est suffisante pour un simple client.

== serveur ==

Si vous souhaitez que d'autres machines puissent intérroger votre daemon NTP pour se synchroniser avec, il faut d'abord définir un stratum pour l'horloge locale. Le stratum indique le nombre de relais utilisés jusqu'au serveur de référence. Par exemple, si vous interroger une machine ayant un stratum 3, votre machine aura un stratum 4. Les autres machines qui s'y synchroniseront auront un stratum 5, etc.

On définit donc un stratum fort (10) sur l'horloge locale, qui sera utilisé si la machine n'a pas réussi à intérroger un serveur de temps (elle renverra alors son heure locale). Le client qui interrogera cette machine saura alors que l'heure est peu fiable (et éventuellement interrogera un autre serveur) :

 server 127.127.1.0
 fudge  127.127.1.0 stratum 10

Enfin, il faut ajouter la liste des clients qui peuvent se connecter. Vous pouvez déjà voir dans la configuration par défaut les règles qui n'autorisent que localhost :

 restrict -4 default kod notrap nomodify nopeer noquery # IPv4
 restrict -6 default kod notrap nomodify nopeer noquery # IPv6
 restrict 127.0.0.1 # IPv4
 restrict ::1       # IPv6

On peut rajouter les règles que l'on souhaite, par exemple :

 restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap

autorisera les machines du réseau 192.168.0.0/24 à interroger le serveur, mais pas à y faire de modification.

== Synchroniser l'heure en « one-shot » ==

ntpd synchronise l'heure en ralentissant ou accélérant l'horloge petit à petit en fonction de l'heure renvoyée sur le serveur intérrogé.

On peut synchroniser l'heure directement sur l'heure obtenue en lançant :

 # ntpd -gq

La commande '''ntpdate''' (paquet du même nom) fait de même.
On pourrait être tenté de lancer cette commande via un cron, et/ou au démarrage du réseau pour ne pas laisser le daemon ntpd tourner sans cesse. Cependant, cette méthode est déconseillée, car certains services utilisent l'heure de la machine, et peuvent générer des erreurs, voire se stopper automatiquement, lorsqu'un changement d'heure est trop brutal.

= Ressources =

* La page NTP du wiki archlinux : [en] https://wiki.archlinux.org/index.php/NTP
* La documentation officielle de NTP : [en] http://www.eecis.udel.edu/~mills/ntp/html/index.html
* La documentation de la communauté : [en] http://support.ntp.org/bin/view/Support/WebHome</text>
      <sha1>4icmnjamq484iji2gxp3qp9eokh9faj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3081</id>
      <parentid>3080</parentid>
      <timestamp>2011-07-10T16:33:55Z</timestamp>
      <contributor>
        <username>Kna</username>
        <id>35</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="4111">NTP (Network Protocol Daemon) est un protocole permettant de synchroniser l'horloge entre différentes machines.

C'est le même service, le daemon '''ntpd''', qui fait à la fois client et serveur.

= Installation =

Il suffit d'installer le paquet ntp :

 apt-get install ntp

= Configuration =

== client ==

La configuration se fait dans le fichier /etc/ntp.conf

La liste des serveurs présente par défaut est :

 server 0.debian.pool.ntp.org iburst
 server 1.debian.pool.ntp.org iburst
 server 2.debian.pool.ntp.org iburst
 server 3.debian.pool.ntp.org iburst

La machine tente de se synchroniser avec le premier serveur, puis le second si le premier est indisponible, etc...

L'option ''iburst'' signifie qu'en cas d'indisponibilité, il essayera plusieurs fois avant d'abandonner. Si on mets l'option ''burst'' à la place, il essayera dès la première connexion d'envoyer plusieurs paquets pour la synchronisation. On peut aussi ajouter l'option ''dynamic'' afin de conserver en mémoire les serveurs indisponibles, et tenter de les recontacter plus tard.

Il est souvent utile de définir des serveurs plus près, afin d'accélérer la synchronisation, par exemple, en France métropolitaine :

 server 0.fr.pool.ntp.org iburst
 server 1.fr.pool.ntp.org iburst
 server 2.fr.pool.ntp.org iburst
 server 3.fr.pool.ntp.org iburst

Vous pouvez trouver des serveurs de temps plus proches de chez vous à l'adresse http://www.pool.ntp.org (sur les liens à droite de la page)

Cette configuration est suffisante pour un simple client. Pensez simplement à redémarrer le service après modification :

 # /etc/init.d/ntp restart

== serveur ==

Si vous souhaitez que d'autres machines puissent intérroger votre daemon NTP pour se synchroniser avec, il faut d'abord définir un stratum pour l'horloge locale. Le stratum indique le nombre de relais utilisés jusqu'au serveur de référence. Par exemple, si vous interroger une machine ayant un stratum 3, votre machine aura un stratum 4. Les autres machines qui s'y synchroniseront auront un stratum 5, etc.

On définit donc un stratum fort (10) sur l'horloge locale, qui sera utilisé si la machine n'a pas réussi à intérroger un serveur de temps (elle renverra alors son heure locale). Le client qui interrogera cette machine saura alors que l'heure est peu fiable (et éventuellement interrogera un autre serveur) :

 server 127.127.1.0
 fudge  127.127.1.0 stratum 10

Enfin, il faut ajouter la liste des clients qui peuvent se connecter. Vous pouvez déjà voir dans la configuration par défaut les règles qui n'autorisent que localhost :

 restrict -4 default kod notrap nomodify nopeer noquery # IPv4
 restrict -6 default kod notrap nomodify nopeer noquery # IPv6
 restrict 127.0.0.1 # IPv4
 restrict ::1       # IPv6

On peut rajouter les règles que l'on souhaite, par exemple :

 restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap

autorisera les machines du réseau 192.168.0.0/24 à interroger le serveur, mais pas à y faire de modification.

N'oubliez pas de redémarrer le service ntp, pour que les modifications soient prises en compte.

== Synchroniser l'heure en « one-shot » ==

ntpd synchronise l'heure en ralentissant ou accélérant l'horloge petit à petit en fonction de l'heure renvoyée sur le serveur intérrogé.

On peut synchroniser l'heure directement sur l'heure obtenue en lançant :

 # ntpd -gq

La commande '''ntpdate''' (paquet du même nom) fait de même.
On pourrait être tenté de lancer cette commande via un cron, et/ou au démarrage du réseau pour ne pas laisser le daemon ntpd tourner sans cesse. Cependant, cette méthode est déconseillée, car certains services utilisent l'heure de la machine, et peuvent générer des erreurs, voire se stopper automatiquement, lorsqu'un changement d'heure est trop brutal.

= Ressources =

* La page NTP du wiki archlinux : [en] https://wiki.archlinux.org/index.php/NTP
* La documentation officielle de NTP : [en] http://www.eecis.udel.edu/~mills/ntp/html/index.html
* La documentation de la communauté : [en] http://support.ntp.org/bin/view/Support/WebHome</text>
      <sha1>666pqhgtyok8ewf2acu267kkugne6zf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3083</id>
      <parentid>3081</parentid>
      <timestamp>2011-07-10T17:01:00Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* client */</comment>
      <text xml:space="preserve" bytes="4112">NTP (Network Protocol Daemon) est un protocole permettant de synchroniser l'horloge entre différentes machines.

C'est le même service, le daemon '''ntpd''', qui fait à la fois client et serveur.

= Installation =

Il suffit d'installer le paquet ntp :

 apt-get install ntp

= Configuration =

== client ==

La configuration se fait dans le fichier /etc/ntp.conf

La liste des serveurs présente par défaut est :

 server 0.debian.pool.ntp.org iburst
 server 1.debian.pool.ntp.org iburst
 server 2.debian.pool.ntp.org iburst
 server 3.debian.pool.ntp.org iburst

La machine tente de se synchroniser avec le premier serveur, puis le second si le premier est indisponible, etc...

L'option ''iburst'' signifie qu'en cas d'indisponibilité, il essayera plusieurs fois avant d'abandonner. Si l'on met l'option ''burst'' à la place, il essayera dès la première connexion d'envoyer plusieurs paquets pour la synchronisation. On peut aussi ajouter l'option ''dynamic'' afin de conserver en mémoire les serveurs indisponibles, et tenter de les recontacter plus tard.

Il est souvent utile de définir des serveurs plus près, afin d'accélérer la synchronisation, par exemple, en France métropolitaine :

 server 0.fr.pool.ntp.org iburst
 server 1.fr.pool.ntp.org iburst
 server 2.fr.pool.ntp.org iburst
 server 3.fr.pool.ntp.org iburst

Vous pouvez trouver des serveurs de temps plus proches de chez vous à l'adresse http://www.pool.ntp.org (sur les liens à droite de la page)

Cette configuration est suffisante pour un simple client. Pensez simplement à redémarrer le service après modification :

 # /etc/init.d/ntp restart

== serveur ==

Si vous souhaitez que d'autres machines puissent intérroger votre daemon NTP pour se synchroniser avec, il faut d'abord définir un stratum pour l'horloge locale. Le stratum indique le nombre de relais utilisés jusqu'au serveur de référence. Par exemple, si vous interroger une machine ayant un stratum 3, votre machine aura un stratum 4. Les autres machines qui s'y synchroniseront auront un stratum 5, etc.

On définit donc un stratum fort (10) sur l'horloge locale, qui sera utilisé si la machine n'a pas réussi à intérroger un serveur de temps (elle renverra alors son heure locale). Le client qui interrogera cette machine saura alors que l'heure est peu fiable (et éventuellement interrogera un autre serveur) :

 server 127.127.1.0
 fudge  127.127.1.0 stratum 10

Enfin, il faut ajouter la liste des clients qui peuvent se connecter. Vous pouvez déjà voir dans la configuration par défaut les règles qui n'autorisent que localhost :

 restrict -4 default kod notrap nomodify nopeer noquery # IPv4
 restrict -6 default kod notrap nomodify nopeer noquery # IPv6
 restrict 127.0.0.1 # IPv4
 restrict ::1       # IPv6

On peut rajouter les règles que l'on souhaite, par exemple :

 restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap

autorisera les machines du réseau 192.168.0.0/24 à interroger le serveur, mais pas à y faire de modification.

N'oubliez pas de redémarrer le service ntp, pour que les modifications soient prises en compte.

== Synchroniser l'heure en « one-shot » ==

ntpd synchronise l'heure en ralentissant ou accélérant l'horloge petit à petit en fonction de l'heure renvoyée sur le serveur intérrogé.

On peut synchroniser l'heure directement sur l'heure obtenue en lançant :

 # ntpd -gq

La commande '''ntpdate''' (paquet du même nom) fait de même.
On pourrait être tenté de lancer cette commande via un cron, et/ou au démarrage du réseau pour ne pas laisser le daemon ntpd tourner sans cesse. Cependant, cette méthode est déconseillée, car certains services utilisent l'heure de la machine, et peuvent générer des erreurs, voire se stopper automatiquement, lorsqu'un changement d'heure est trop brutal.

= Ressources =

* La page NTP du wiki archlinux : [en] https://wiki.archlinux.org/index.php/NTP
* La documentation officielle de NTP : [en] http://www.eecis.udel.edu/~mills/ntp/html/index.html
* La documentation de la communauté : [en] http://support.ntp.org/bin/view/Support/WebHome</text>
      <sha1>3dkbygzklowlukbt9je16y8re7ukdcj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3104</id>
      <parentid>3083</parentid>
      <timestamp>2011-07-30T05:44:55Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="4144">NTP (Network Protocol Daemon) est un protocole permettant de synchroniser l'horloge entre différentes machines.

C'est le même service, le daemon '''ntpd''', qui fait à la fois client et serveur.

= Installation =

Il suffit d'installer le paquet ntp :

 apt-get install ntp

= Configuration =

== client ==

La configuration se fait dans le fichier /etc/ntp.conf

La liste des serveurs présente par défaut est :

 server 0.debian.pool.ntp.org iburst
 server 1.debian.pool.ntp.org iburst
 server 2.debian.pool.ntp.org iburst
 server 3.debian.pool.ntp.org iburst

La machine tente de se synchroniser avec le premier serveur, puis le second si le premier est indisponible, etc...

L'option ''iburst'' signifie qu'en cas d'indisponibilité, il essayera plusieurs fois avant d'abandonner. Si l'on met l'option ''burst'' à la place, il essayera dès la première connexion d'envoyer plusieurs paquets pour la synchronisation. On peut aussi ajouter l'option ''dynamic'' afin de conserver en mémoire les serveurs indisponibles, et tenter de les recontacter plus tard.

Il est souvent utile de définir des serveurs plus près, afin d'accélérer la synchronisation, par exemple, en France métropolitaine :

 server 0.fr.pool.ntp.org iburst
 server 1.fr.pool.ntp.org iburst
 server 2.fr.pool.ntp.org iburst
 server 3.fr.pool.ntp.org iburst

Vous pouvez trouver des serveurs de temps plus proches de chez vous à l'adresse http://www.pool.ntp.org (sur les liens à droite de la page)

Cette configuration est suffisante pour un simple client. Pensez simplement à redémarrer le service après modification :

 # /etc/init.d/ntp restart

== serveur ==

Si vous souhaitez que d'autres machines puissent intérroger votre daemon NTP pour se synchroniser avec, il faut d'abord définir un stratum pour l'horloge locale. Le stratum indique le nombre de relais utilisés jusqu'au serveur de référence. Par exemple, si vous interroger une machine ayant un stratum 3, votre machine aura un stratum 4. Les autres machines qui s'y synchroniseront auront un stratum 5, etc.

On définit donc un stratum fort (10) sur l'horloge locale, qui sera utilisé si la machine n'a pas réussi à intérroger un serveur de temps (elle renverra alors son heure locale). Le client qui interrogera cette machine saura alors que l'heure est peu fiable (et éventuellement interrogera un autre serveur) :

 server 127.127.1.0
 fudge  127.127.1.0 stratum 10

Enfin, il faut ajouter la liste des clients qui peuvent se connecter. Vous pouvez déjà voir dans la configuration par défaut les règles qui n'autorisent que localhost :

 restrict -4 default kod notrap nomodify nopeer noquery # IPv4
 restrict -6 default kod notrap nomodify nopeer noquery # IPv6
 restrict 127.0.0.1 # IPv4
 restrict ::1       # IPv6

On peut rajouter les règles que l'on souhaite, par exemple :

 restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap

autorisera les machines du réseau 192.168.0.0/24 à interroger le serveur, mais pas à y faire de modification.

N'oubliez pas de redémarrer le service ntp, pour que les modifications soient prises en compte.

== Synchroniser l'heure en « one-shot » ==

ntpd synchronise l'heure en ralentissant ou accélérant l'horloge petit à petit en fonction de l'heure renvoyée sur le serveur intérrogé.

On peut synchroniser l'heure directement sur l'heure obtenue en lançant :

 # ntpd -gq

La commande '''ntpdate''' (paquet du même nom) fait de même.
On pourrait être tenté de lancer cette commande via un cron, et/ou au démarrage du réseau pour ne pas laisser le daemon ntpd tourner sans cesse. Cependant, cette méthode est déconseillée, car certains services utilisent l'heure de la machine, et peuvent générer des erreurs, voire se stopper automatiquement, lorsqu'un changement d'heure est trop brutal.

= Ressources =

* La page NTP du wiki archlinux : [en] https://wiki.archlinux.org/index.php/NTP
* La documentation officielle de NTP : [en] http://www.eecis.udel.edu/~mills/ntp/html/index.html
* La documentation de la communauté : [en] http://support.ntp.org/bin/view/Support/WebHome

[[Catégorie:Réseau Avancé]]</text>
      <sha1>rsl9zm8rcpglcw4utpeym1cujceau10</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3158</id>
      <parentid>3104</parentid>
      <timestamp>2011-08-02T13:55:44Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* client */  Ntp est un démon</comment>
      <text xml:space="preserve" bytes="4254">NTP (Network Protocol Daemon) est un protocole permettant de synchroniser l'horloge entre différentes machines.

C'est le même service, le daemon '''ntpd''', qui fait à la fois client et serveur.

= Installation =

Il suffit d'installer le paquet ntp :

 apt-get install ntp

= Configuration =

== client ==

La configuration se fait dans le fichier /etc/ntp.conf

La liste des serveurs présente par défaut est :

 server 0.debian.pool.ntp.org iburst
 server 1.debian.pool.ntp.org iburst
 server 2.debian.pool.ntp.org iburst
 server 3.debian.pool.ntp.org iburst

La machine tente de se synchroniser avec le premier serveur, puis le second si le premier est indisponible, etc...

L'option ''iburst'' signifie qu'en cas d'indisponibilité, il essayera plusieurs fois avant d'abandonner. Si l'on met l'option ''burst'' à la place, il essayera dès la première connexion d'envoyer plusieurs paquets pour la synchronisation. On peut aussi ajouter l'option ''dynamic'' afin de conserver en mémoire les serveurs indisponibles, et tenter de les recontacter plus tard.

Il est souvent utile de définir des serveurs plus près, afin d'accélérer la synchronisation, par exemple, en France métropolitaine :

 server 0.fr.pool.ntp.org iburst
 server 1.fr.pool.ntp.org iburst
 server 2.fr.pool.ntp.org iburst
 server 3.fr.pool.ntp.org iburst

Vous pouvez trouver des serveurs de temps plus proches de chez vous à l'adresse http://www.pool.ntp.org (sur les liens à droite de la page)

Cette configuration est suffisante pour un simple client. Pensez simplement à redémarrer le service après modification :

 # /etc/init.d/ntp restart

Ntp est un démon, il tourne en permanence afin de maintenir l'horloge à l'heure et de corriger sa dérive.

== serveur ==

Si vous souhaitez que d'autres machines puissent intérroger votre daemon NTP pour se synchroniser avec, il faut d'abord définir un stratum pour l'horloge locale. Le stratum indique le nombre de relais utilisés jusqu'au serveur de référence. Par exemple, si vous interroger une machine ayant un stratum 3, votre machine aura un stratum 4. Les autres machines qui s'y synchroniseront auront un stratum 5, etc.

On définit donc un stratum fort (10) sur l'horloge locale, qui sera utilisé si la machine n'a pas réussi à intérroger un serveur de temps (elle renverra alors son heure locale). Le client qui interrogera cette machine saura alors que l'heure est peu fiable (et éventuellement interrogera un autre serveur) :

 server 127.127.1.0
 fudge  127.127.1.0 stratum 10

Enfin, il faut ajouter la liste des clients qui peuvent se connecter. Vous pouvez déjà voir dans la configuration par défaut les règles qui n'autorisent que localhost :

 restrict -4 default kod notrap nomodify nopeer noquery # IPv4
 restrict -6 default kod notrap nomodify nopeer noquery # IPv6
 restrict 127.0.0.1 # IPv4
 restrict ::1       # IPv6

On peut rajouter les règles que l'on souhaite, par exemple :

 restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap

autorisera les machines du réseau 192.168.0.0/24 à interroger le serveur, mais pas à y faire de modification.

N'oubliez pas de redémarrer le service ntp, pour que les modifications soient prises en compte.

== Synchroniser l'heure en « one-shot » ==

ntpd synchronise l'heure en ralentissant ou accélérant l'horloge petit à petit en fonction de l'heure renvoyée sur le serveur intérrogé.

On peut synchroniser l'heure directement sur l'heure obtenue en lançant :

 # ntpd -gq

La commande '''ntpdate''' (paquet du même nom) fait de même.
On pourrait être tenté de lancer cette commande via un cron, et/ou au démarrage du réseau pour ne pas laisser le daemon ntpd tourner sans cesse. Cependant, cette méthode est déconseillée, car certains services utilisent l'heure de la machine, et peuvent générer des erreurs, voire se stopper automatiquement, lorsqu'un changement d'heure est trop brutal.

= Ressources =

* La page NTP du wiki archlinux : [en] https://wiki.archlinux.org/index.php/NTP
* La documentation officielle de NTP : [en] http://www.eecis.udel.edu/~mills/ntp/html/index.html
* La documentation de la communauté : [en] http://support.ntp.org/bin/view/Support/WebHome

[[Catégorie:Réseau Avancé]]</text>
      <sha1>coafa8zp8t8gv8zqvkjypmohlnqig8z</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4074</id>
      <parentid>3158</parentid>
      <timestamp>2012-04-26T08:34:19Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="4287">NTP (Network Protocol Daemon) est un protocole permettant de synchroniser l'horloge entre différentes machines.

C'est le même service, le daemon '''ntpd''', qui fait à la fois client et serveur.

= Installation =

Il suffit d'installer le paquet ntp :

 apt-get install ntp

= Configuration =

== client ==

La configuration se fait dans le fichier /etc/ntp.conf

La liste des serveurs présente par défaut est :

 server 0.debian.pool.ntp.org iburst
 server 1.debian.pool.ntp.org iburst
 server 2.debian.pool.ntp.org iburst
 server 3.debian.pool.ntp.org iburst

La machine tente de se synchroniser avec le premier serveur, puis le second si le premier est indisponible, etc...

L'option ''iburst'' signifie qu'en cas d'indisponibilité, il essayera plusieurs fois avant d'abandonner. Si l'on met l'option ''burst'' à la place, il essayera dès la première connexion d'envoyer plusieurs paquets pour la synchronisation. On peut aussi ajouter l'option ''dynamic'' afin de conserver en mémoire les serveurs indisponibles, et tenter de les recontacter plus tard.

Il est souvent utile de définir des serveurs plus près, afin d'accélérer la synchronisation, par exemple, en France métropolitaine :

 server 0.fr.pool.ntp.org iburst
 server 1.fr.pool.ntp.org iburst
 server 2.fr.pool.ntp.org iburst
 server 3.fr.pool.ntp.org iburst

Vous pouvez trouver des serveurs de temps plus proches de chez vous à l'adresse http://www.pool.ntp.org (sur les liens à droite de la page)

Cette configuration est suffisante pour un simple client. Pensez simplement à redémarrer le service après modification :

 # /etc/init.d/ntp restart

Ntp est un démon, il tourne en permanence afin de maintenir l'horloge à l'heure et de corriger sa dérive.

== serveur ==

Si vous souhaitez que d'autres machines puissent intérroger votre daemon NTP pour se synchroniser avec, il faut d'abord définir un stratum pour l'horloge locale. Le stratum indique le nombre de relais utilisés jusqu'au serveur de référence. Par exemple, si vous interroger une machine ayant un stratum 3, votre machine aura un stratum 4. Les autres machines qui s'y synchroniseront auront un stratum 5, etc.

On définit donc un stratum fort (10) sur l'horloge locale, qui sera utilisé si la machine n'a pas réussi à intérroger un serveur de temps (elle renverra alors son heure locale). Le client qui interrogera cette machine saura alors que l'heure est peu fiable (et éventuellement interrogera un autre serveur) :

 server 127.127.1.0
 fudge  127.127.1.0 stratum 10

Enfin, il faut ajouter la liste des clients qui peuvent se connecter. Vous pouvez déjà voir dans la configuration par défaut les règles qui n'autorisent que localhost :

 restrict -4 default kod notrap nomodify nopeer noquery # IPv4
 restrict -6 default kod notrap nomodify nopeer noquery # IPv6
 restrict 127.0.0.1 # IPv4
 restrict ::1       # IPv6

On peut rajouter les règles que l'on souhaite, par exemple :

 restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap

autorisera les machines du réseau 192.168.0.0/24 à interroger le serveur, mais pas à y faire de modification.

N'oubliez pas de redémarrer le service ntp, pour que les modifications soient prises en compte.

== Synchroniser l'heure en « one-shot » ==

ntpd synchronise l'heure en ralentissant ou accélérant l'horloge petit à petit en fonction de l'heure renvoyée sur le serveur intérrogé.

On peut synchroniser l'heure directement sur l'heure obtenue en lançant :

 # ntpd -gq

La commande '''ntpdate''' (paquet du même nom) fait de même.
On pourrait être tenté de lancer cette commande via un cron, et/ou au démarrage du réseau pour ne pas laisser le daemon ntpd tourner sans cesse. Cependant, cette méthode est déconseillée, car certains services utilisent l'heure de la machine, et peuvent générer des erreurs, voire se stopper automatiquement, lorsqu'un changement d'heure est trop brutal.

= Ressources =

* La page NTP du wiki archlinux : [en] https://wiki.archlinux.org/index.php/NTP
* La documentation officielle de NTP : [en] http://www.eecis.udel.edu/~mills/ntp/html/index.html
* La documentation de la communauté : [en] http://support.ntp.org/bin/view/Support/WebHome

[[Catégorie:Réseau]]
[[Niveau de difficulté::Expérimenté]]</text>
      <sha1>a2so2uvzriu2n3mgljc3cuur0we428m</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>NVidia Optimus Bumblebee</title>
    <ns>0</ns>
    <id>1194</id>
    <revision>
      <id>4878</id>
      <timestamp>2013-01-14T19:00:51Z</timestamp>
      <contributor>
        <username>PengouinPdt</username>
        <id>249</id>
      </contributor>
      <comment>Création de la page 'nVidia Optimus &amp; Bumblebee'</comment>
      <text xml:space="preserve" bytes="3272">= nVidia Optimus &amp; Bumblebee =

== Présentation ==

nVidia a créé une technologie hybride, appelée Optimus. Cette technologie a pour but d'utiliser la puce graphique intégrée, généralement de marque Intel, ainsi que le processeur graphique, couplée à la première puce, de marque nVidia. Cela permet de faire fonctionner le GPU nVidia, à la demande, lors de nécessités de fonctions 3D poussées (vidéos, jeux ...), et de &quot;rendre la main&quot; à l'IGP Intel, soulageant ainsi la batterie, pour le reste.

Nativement sous Linux, cette technologie n'est pas encore supportée. Officiellement, nVidia a fait le choix de ne pas nous supporter. 

Un développeur a créé un projet, nommé Bumblebee, qui nous apporte une certaine gestion de cette technologie. Elle n'est pas complètement gérée, mais est fonctionnelle ! Néanmoins, la gestion HDMI n'est pas accessible ...

=== Vérification ===

Si vous voulez être sûr d'avoir une telle technologie, entrez la commande suivante dans votre terminal préféré :

  lspci | egrep 'VGA|3D|Display'

Si le système vous répond, ainsi, avec deux lignes, c'est donc bien votre cas !

 :~$ lspci | egrep 'VGA|3D|Display'
  00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
  01:00.0 VGA compatible controller: NVIDIA Corporation GF108 [GeForce GT 540M] (rev ff)


== Installation ==

'''NE SURTOUT PAS CHERCHER À INSTALLER LES PILOTES NVIDIA PAR TOUT AUTRE MÉTHODE !!!'''
Si jamais vous l'auriez fait, désinstallez tout avant !

=== Par depôt ===

Le projet est disponible à partir du site http://suwako.nomanga.net/.

Le fichier list est le suivant :

 deb http://suwako.nomanga.net/debian sid main contrib

Il vous faut la clé GPG suivante :

 wget -O - http://suwako.nomanga.net/suwako.asc | apt-key add -

=== Installez ! ===

Puis, mettez-à-jour votre système, et installez les binaires '''bumblebee''', et '''bumblebee-nvidia'''.

=== Configurez ! ===

Il vous faut ensuite ajouter votre utilisateur au groupe bumblebee, en ayant les droits administrateur.

 adduser $USER bumblebee


'''Redémarrer votre ordinateur ;-)'''

== Test ==

Vous pouvez être sûr que Bumblebee fonctionne grâce au binaire '''optirun'''.
Donc, pour activer la gestion du GPU nVidia, il faut précéder toute commande par l'usage de la commande 'optirun'.

Le premier test que vous pouvez faire est :

 optirun glxgears -info

=== Panel nVidia ===

Ne cherchez pas à l'utiliser en cliquant sur l'icône correspondante, dans votre menu, cela ne fonctionnera pas. 
Il vous faut le lancer ainsi - c'est le seul moyen ! - :

 optirun nvidia-settings -c :8

== Configuration supplémentaire ==

Il peut être utile d'informer Bumblebee d'utiliser le module 'nvidia', au lieu du module 'nouveau'. Par défaut, il utilise le pilote 'nouveau'.
Avec les droits administrateur, il faut d'abord modifier le fichier /etc/bumblebee/bumblebee.conf pour configurer la ligne 'DRIVER=' 

 DRIVER=nvidia

Redémarrer le service 'bumblebeed' !

 service bumblebeed restart

=== À chaque nouveau kernel ===

Pensez à faire courir à nouveau le module pour votre kernel, avec vos droits administrateur !

==== par dkms ====

 dpkg-reconfigure nvidia-kernel-dkms</text>
      <sha1>1j3bgw5610vusqvwkwf54442qew9ohs</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4879</id>
      <parentid>4878</parentid>
      <timestamp>2013-01-14T19:03:33Z</timestamp>
      <contributor>
        <username>PengouinPdt</username>
        <id>249</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3379">= nVidia Optimus &amp; Bumblebee =

== Présentation ==

nVidia a créé une technologie hybride, appelée Optimus. Cette technologie a pour but d'utiliser la puce graphique intégrée, généralement de marque Intel, ainsi que le processeur graphique, couplée à la première puce, de marque nVidia. Cela permet de faire fonctionner le GPU nVidia, à la demande, lors de nécessités de fonctions 3D poussées (vidéos, jeux ...), et de &quot;rendre la main&quot; à l'IGP Intel, soulageant ainsi la batterie, pour le reste.

Nativement sous Linux, cette technologie n'est pas encore supportée. Officiellement, nVidia a fait le choix de ne pas nous supporter. 

Un développeur a créé un projet, nommé Bumblebee, qui nous apporte une certaine gestion de cette technologie. Elle n'est pas complètement gérée, mais est fonctionnelle ! Néanmoins, la gestion HDMI n'est pas accessible ...

=== Vérification ===

Si vous voulez être sûr d'avoir une telle technologie, entrez la commande suivante dans votre terminal préféré :

  lspci | egrep 'VGA|3D|Display'

Si le système vous répond, ainsi, avec deux lignes, c'est donc bien votre cas !

 :~$ lspci | egrep 'VGA|3D|Display'
  00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
  01:00.0 VGA compatible controller: NVIDIA Corporation GF108 [GeForce GT 540M] (rev ff)


== Installation ==

'''NE SURTOUT PAS CHERCHER À INSTALLER LES PILOTES NVIDIA PAR TOUT AUTRE MÉTHODE !!!'''
Si jamais vous l'auriez fait, désinstallez tout avant !

=== Par depôt ===

Le projet est disponible à partir du site http://suwako.nomanga.net/.

Le fichier list est le suivant :

 deb http://suwako.nomanga.net/debian sid main contrib

Il vous faut la clé GPG suivante :

 wget -O - http://suwako.nomanga.net/suwako.asc | apt-key add -

=== Installez ! ===

Puis, mettez-à-jour votre système, et installez les binaires '''bumblebee''', et '''bumblebee-nvidia'''.

=== Configurez ! ===

Il vous faut ensuite ajouter votre utilisateur au groupe bumblebee, en ayant les droits administrateur.

 adduser $USER bumblebee


'''Redémarrer votre ordinateur ;-)'''

== Test ==

Vous pouvez être sûr que Bumblebee fonctionne grâce au binaire '''optirun'''.
Donc, pour activer la gestion du GPU nVidia, il faut précéder toute commande par l'usage de la commande 'optirun'.

Le premier test que vous pouvez faire est :

 optirun glxgears -info

=== Panel nVidia ===

Ne cherchez pas à l'utiliser en cliquant sur l'icône correspondante, dans votre menu, cela ne fonctionnera pas. 
Il vous faut le lancer ainsi - c'est le seul moyen ! - :

 optirun nvidia-settings -c :8

== Configuration supplémentaire ==

Il peut être utile d'informer Bumblebee d'utiliser le module 'nvidia', au lieu du module 'nouveau'. Par défaut, il utilise le pilote 'nouveau'.
Avec les droits administrateur, il faut d'abord modifier le fichier /etc/bumblebee/bumblebee.conf pour configurer la ligne 'DRIVER=' 

 DRIVER=nvidia

Redémarrer le service 'bumblebeed' !

 service bumblebeed restart

=== À chaque nouveau kernel ===

Pensez à faire courir à nouveau le module pour votre kernel, avec vos droits administrateur !
(si le système ne s'en occupe pas tout seul comme un grand :p )

==== par dkms ====

 dpkg-reconfigure nvidia-kernel-dkms

[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>dec545ky2edkb37b84l16edme7kz9ka</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5141</id>
      <parentid>4879</parentid>
      <timestamp>2013-05-12T09:42:23Z</timestamp>
      <contributor>
        <username>PengouinPdt</username>
        <id>249</id>
      </contributor>
      <comment>Mise-à-jour pour refleter l'état actuel selon Sid</comment>
      <text xml:space="preserve" bytes="4267">= nVidia Optimus &amp; Bumblebee =

== Présentation ==

nVidia a créé une technologie hybride, appelée Optimus. Cette technologie a pour but d'utiliser la puce graphique intégrée, généralement de marque Intel, ainsi que le processeur graphique, couplée à la première puce, de marque nVidia. Cela permet de faire fonctionner le GPU nVidia, à la demande, lors de nécessités de fonctions 3D poussées (vidéos, jeux ...), et de &quot;rendre la main&quot; à l'IGP Intel, soulageant ainsi la batterie, pour le reste.

Nativement sous Linux, cette technologie n'est pas encore supportée. Officiellement, nVidia a fait le choix de ne pas nous supporter. 

Un développeur a créé un projet, nommé Bumblebee, qui nous apporte une certaine gestion de cette technologie. Elle n'est pas complètement gérée, mais est fonctionnelle ! Néanmoins, la gestion HDMI n'est pas accessible ...

=== Informations ===

La [http://wiki.debian.org/Bumblebee#From_repository page anglaise wiki du projet Debian] nous informe que les utilisateurs de Sid peuvent installer Bumblebee à partir des dépôts officiels Debian. 
Et, en effet, la [http://packages.debian.org/search?suite=sid&amp;searchon=names&amp;keywords=bumblebee recherche nous donne ce résultat pour Bumblebee] !
''Ce devrait bientôt être le cas pour la version Jessie du projet Debian !''

Alternativement, pour les utilisateurs de Wheezy et Sid, il est possible d'utiliser des dépôts non officiels ...

=== Vérification ===

Si vous voulez être sûr d'avoir une telle technologie, entrez la commande suivante dans votre terminal préféré :

  lspci | egrep 'VGA|3D|Display'

Si le système vous répond, ainsi, avec deux lignes, c'est donc bien votre cas !

 :~$ lspci | egrep 'VGA|3D|Display'
  00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
  01:00.0 VGA compatible controller: NVIDIA Corporation GF108 [GeForce GT 540M] (rev ff)


== Installation ==

'''NE SURTOUT PAS CHERCHER À INSTALLER LES PILOTES NVIDIA PAR TOUT AUTRE MÉTHODE !!!'''
Si jamais vous l'auriez fait, désinstallez tout avant !

=== Par depôt ===

==== Dépôt officiel Sid ====

Si vous êtes utilisateur de la version Sid du projet Debian, sachez que la dernière version est disponible à partir des dépôts officiels Debian.

Donc, passez à la phase d'installation puis de configuration.


==== Dépôt non officiel ====

Le projet est disponible à partir du site http://suwako.nomanga.net/.

Le fichier list est le suivant :

 deb http://suwako.nomanga.net/debian sid main contrib

Il vous faut la clé GPG suivante :

 wget -O - http://suwako.nomanga.net/suwako.asc | apt-key add -

=== Installez ! ===

Mettez-à-jour votre système, et installez les binaires '''bumblebee''', et '''bumblebee-nvidia'''.

 apt-get update &amp;&amp; apt-get install bumblebee


=== Configurez ! ===

Il vous faut ensuite ajouter votre utilisateur au groupe bumblebee, en ayant les droits administrateur.

 adduser $USER bumblebee


'''Redémarrer votre ordinateur ;-)'''

== Test ==

Vous pouvez être sûr que Bumblebee fonctionne grâce au binaire '''optirun'''.
Donc, pour activer la gestion du GPU nVidia, il faut précéder toute commande par l'usage de la commande 'optirun'.

Le premier test que vous pouvez faire est :

 optirun glxgears -info

=== Panel nVidia ===

Ne cherchez pas à l'utiliser en cliquant sur l'icône correspondante, dans votre menu, cela ne fonctionnera pas. 
Il vous faut le lancer ainsi - c'est le seul moyen ! - :

 optirun nvidia-settings -c :8

== Configuration supplémentaire ==

Il peut être utile d'informer Bumblebee d'utiliser le module 'nvidia', au lieu du module 'nouveau'. Par défaut, il utilise le pilote 'nouveau'.
Avec les droits administrateur, il faut d'abord modifier le fichier /etc/bumblebee/bumblebee.conf pour configurer la ligne 'DRIVER=' 

 DRIVER=nvidia

Redémarrer le service 'bumblebeed' !

 service bumblebeed restart

=== À chaque nouveau kernel ===

Pensez à faire courir à nouveau le module pour votre kernel, avec vos droits administrateur !
(si le système ne s'en occupe pas tout seul comme un grand :p )

==== par dkms ====

 dpkg-reconfigure nvidia-kernel-dkms

[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>m2v7kslx7nuyrh1pwyz9e7slq6fcmbp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5142</id>
      <parentid>5141</parentid>
      <timestamp>2013-05-12T09:48:16Z</timestamp>
      <contributor>
        <username>PengouinPdt</username>
        <id>249</id>
      </contributor>
      <comment>/* Dépôt non officiel */</comment>
      <text xml:space="preserve" bytes="4516">= nVidia Optimus &amp; Bumblebee =

== Présentation ==

nVidia a créé une technologie hybride, appelée Optimus. Cette technologie a pour but d'utiliser la puce graphique intégrée, généralement de marque Intel, ainsi que le processeur graphique, couplée à la première puce, de marque nVidia. Cela permet de faire fonctionner le GPU nVidia, à la demande, lors de nécessités de fonctions 3D poussées (vidéos, jeux ...), et de &quot;rendre la main&quot; à l'IGP Intel, soulageant ainsi la batterie, pour le reste.

Nativement sous Linux, cette technologie n'est pas encore supportée. Officiellement, nVidia a fait le choix de ne pas nous supporter. 

Un développeur a créé un projet, nommé Bumblebee, qui nous apporte une certaine gestion de cette technologie. Elle n'est pas complètement gérée, mais est fonctionnelle ! Néanmoins, la gestion HDMI n'est pas accessible ...

=== Informations ===

La [http://wiki.debian.org/Bumblebee#From_repository page anglaise wiki du projet Debian] nous informe que les utilisateurs de Sid peuvent installer Bumblebee à partir des dépôts officiels Debian. 
Et, en effet, la [http://packages.debian.org/search?suite=sid&amp;searchon=names&amp;keywords=bumblebee recherche nous donne ce résultat pour Bumblebee] !
''Ce devrait bientôt être le cas pour la version Jessie du projet Debian !''

Alternativement, pour les utilisateurs de Wheezy et Sid, il est possible d'utiliser des dépôts non officiels ...

=== Vérification ===

Si vous voulez être sûr d'avoir une telle technologie, entrez la commande suivante dans votre terminal préféré :

  lspci | egrep 'VGA|3D|Display'

Si le système vous répond, ainsi, avec deux lignes, c'est donc bien votre cas !

 :~$ lspci | egrep 'VGA|3D|Display'
  00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
  01:00.0 VGA compatible controller: NVIDIA Corporation GF108 [GeForce GT 540M] (rev ff)


== Installation ==

'''NE SURTOUT PAS CHERCHER À INSTALLER LES PILOTES NVIDIA PAR TOUT AUTRE MÉTHODE !!!'''
Si jamais vous l'auriez fait, désinstallez tout avant !

=== Par depôt ===

==== Dépôt officiel Sid ====

Si vous êtes utilisateur de la version Sid du projet Debian, sachez que la dernière version est disponible à partir des dépôts officiels Debian.

Donc, passez à la phase d'installation puis de configuration.


==== Dépôt non officiel ====

Le projet est disponible, de manière non officielle, à partir du site http://suwako.nomanga.net/.

Le fichier list est le suivant :

 deb http://suwako.nomanga.net/debian sid main contrib

Il vous faut la clé GPG suivante :

 wget -O - http://suwako.nomanga.net/suwako.asc | apt-key add -

'''''Note : (12/5/13)''' Il semble à ce jour que les packages du projet Bumblebee ne soient plus à jour sur ce dépôt - Si vous êtes utilisateur Sid, utilisez de préférence les dépôts Debian - cf, ci-dessus !''

=== Installez ! ===

Mettez-à-jour votre système, et installez les binaires '''bumblebee''', et '''bumblebee-nvidia'''.

 apt-get update &amp;&amp; apt-get install bumblebee


=== Configurez ! ===

Il vous faut ensuite ajouter votre utilisateur au groupe bumblebee, en ayant les droits administrateur.

 adduser $USER bumblebee


'''Redémarrer votre ordinateur ;-)'''

== Test ==

Vous pouvez être sûr que Bumblebee fonctionne grâce au binaire '''optirun'''.
Donc, pour activer la gestion du GPU nVidia, il faut précéder toute commande par l'usage de la commande 'optirun'.

Le premier test que vous pouvez faire est :

 optirun glxgears -info

=== Panel nVidia ===

Ne cherchez pas à l'utiliser en cliquant sur l'icône correspondante, dans votre menu, cela ne fonctionnera pas. 
Il vous faut le lancer ainsi - c'est le seul moyen ! - :

 optirun nvidia-settings -c :8

== Configuration supplémentaire ==

Il peut être utile d'informer Bumblebee d'utiliser le module 'nvidia', au lieu du module 'nouveau'. Par défaut, il utilise le pilote 'nouveau'.
Avec les droits administrateur, il faut d'abord modifier le fichier /etc/bumblebee/bumblebee.conf pour configurer la ligne 'DRIVER=' 

 DRIVER=nvidia

Redémarrer le service 'bumblebeed' !

 service bumblebeed restart

=== À chaque nouveau kernel ===

Pensez à faire courir à nouveau le module pour votre kernel, avec vos droits administrateur !
(si le système ne s'en occupe pas tout seul comme un grand :p )

==== par dkms ====

 dpkg-reconfigure nvidia-kernel-dkms

[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>raw0o1bzcxjibtf9kg6cllnn4y3i8sz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5143</id>
      <parentid>5142</parentid>
      <timestamp>2013-05-12T09:48:50Z</timestamp>
      <contributor>
        <username>PengouinPdt</username>
        <id>249</id>
      </contributor>
      <comment>/* Dépôt non officiel */</comment>
      <text xml:space="preserve" bytes="4516">= nVidia Optimus &amp; Bumblebee =

== Présentation ==

nVidia a créé une technologie hybride, appelée Optimus. Cette technologie a pour but d'utiliser la puce graphique intégrée, généralement de marque Intel, ainsi que le processeur graphique, couplée à la première puce, de marque nVidia. Cela permet de faire fonctionner le GPU nVidia, à la demande, lors de nécessités de fonctions 3D poussées (vidéos, jeux ...), et de &quot;rendre la main&quot; à l'IGP Intel, soulageant ainsi la batterie, pour le reste.

Nativement sous Linux, cette technologie n'est pas encore supportée. Officiellement, nVidia a fait le choix de ne pas nous supporter. 

Un développeur a créé un projet, nommé Bumblebee, qui nous apporte une certaine gestion de cette technologie. Elle n'est pas complètement gérée, mais est fonctionnelle ! Néanmoins, la gestion HDMI n'est pas accessible ...

=== Informations ===

La [http://wiki.debian.org/Bumblebee#From_repository page anglaise wiki du projet Debian] nous informe que les utilisateurs de Sid peuvent installer Bumblebee à partir des dépôts officiels Debian. 
Et, en effet, la [http://packages.debian.org/search?suite=sid&amp;searchon=names&amp;keywords=bumblebee recherche nous donne ce résultat pour Bumblebee] !
''Ce devrait bientôt être le cas pour la version Jessie du projet Debian !''

Alternativement, pour les utilisateurs de Wheezy et Sid, il est possible d'utiliser des dépôts non officiels ...

=== Vérification ===

Si vous voulez être sûr d'avoir une telle technologie, entrez la commande suivante dans votre terminal préféré :

  lspci | egrep 'VGA|3D|Display'

Si le système vous répond, ainsi, avec deux lignes, c'est donc bien votre cas !

 :~$ lspci | egrep 'VGA|3D|Display'
  00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
  01:00.0 VGA compatible controller: NVIDIA Corporation GF108 [GeForce GT 540M] (rev ff)


== Installation ==

'''NE SURTOUT PAS CHERCHER À INSTALLER LES PILOTES NVIDIA PAR TOUT AUTRE MÉTHODE !!!'''
Si jamais vous l'auriez fait, désinstallez tout avant !

=== Par depôt ===

==== Dépôt officiel Sid ====

Si vous êtes utilisateur de la version Sid du projet Debian, sachez que la dernière version est disponible à partir des dépôts officiels Debian.

Donc, passez à la phase d'installation puis de configuration.


==== Dépôt non officiel ====

'''''Note : (12/5/13)''' Il semble à ce jour que les packages du projet Bumblebee ne soient plus à jour sur ce dépôt - Si vous êtes utilisateur Sid, utilisez de préférence les dépôts Debian - cf, ci-dessus !''

Le projet est disponible, de manière non officielle, à partir du site http://suwako.nomanga.net/.

Le fichier list est le suivant :

 deb http://suwako.nomanga.net/debian sid main contrib

Il vous faut la clé GPG suivante :

 wget -O - http://suwako.nomanga.net/suwako.asc | apt-key add -

=== Installez ! ===

Mettez-à-jour votre système, et installez les binaires '''bumblebee''', et '''bumblebee-nvidia'''.

 apt-get update &amp;&amp; apt-get install bumblebee


=== Configurez ! ===

Il vous faut ensuite ajouter votre utilisateur au groupe bumblebee, en ayant les droits administrateur.

 adduser $USER bumblebee


'''Redémarrer votre ordinateur ;-)'''

== Test ==

Vous pouvez être sûr que Bumblebee fonctionne grâce au binaire '''optirun'''.
Donc, pour activer la gestion du GPU nVidia, il faut précéder toute commande par l'usage de la commande 'optirun'.

Le premier test que vous pouvez faire est :

 optirun glxgears -info

=== Panel nVidia ===

Ne cherchez pas à l'utiliser en cliquant sur l'icône correspondante, dans votre menu, cela ne fonctionnera pas. 
Il vous faut le lancer ainsi - c'est le seul moyen ! - :

 optirun nvidia-settings -c :8

== Configuration supplémentaire ==

Il peut être utile d'informer Bumblebee d'utiliser le module 'nvidia', au lieu du module 'nouveau'. Par défaut, il utilise le pilote 'nouveau'.
Avec les droits administrateur, il faut d'abord modifier le fichier /etc/bumblebee/bumblebee.conf pour configurer la ligne 'DRIVER=' 

 DRIVER=nvidia

Redémarrer le service 'bumblebeed' !

 service bumblebeed restart

=== À chaque nouveau kernel ===

Pensez à faire courir à nouveau le module pour votre kernel, avec vos droits administrateur !
(si le système ne s'en occupe pas tout seul comme un grand :p )

==== par dkms ====

 dpkg-reconfigure nvidia-kernel-dkms

[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>0ue6bwz7tat9tc93hug9dyzhqox4nkt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5144</id>
      <parentid>5143</parentid>
      <timestamp>2013-05-12T09:56:23Z</timestamp>
      <contributor>
        <username>PengouinPdt</username>
        <id>249</id>
      </contributor>
      <comment>/* Test */</comment>
      <text xml:space="preserve" bytes="4767">= nVidia Optimus &amp; Bumblebee =

== Présentation ==

nVidia a créé une technologie hybride, appelée Optimus. Cette technologie a pour but d'utiliser la puce graphique intégrée, généralement de marque Intel, ainsi que le processeur graphique, couplée à la première puce, de marque nVidia. Cela permet de faire fonctionner le GPU nVidia, à la demande, lors de nécessités de fonctions 3D poussées (vidéos, jeux ...), et de &quot;rendre la main&quot; à l'IGP Intel, soulageant ainsi la batterie, pour le reste.

Nativement sous Linux, cette technologie n'est pas encore supportée. Officiellement, nVidia a fait le choix de ne pas nous supporter. 

Un développeur a créé un projet, nommé Bumblebee, qui nous apporte une certaine gestion de cette technologie. Elle n'est pas complètement gérée, mais est fonctionnelle ! Néanmoins, la gestion HDMI n'est pas accessible ...

=== Informations ===

La [http://wiki.debian.org/Bumblebee#From_repository page anglaise wiki du projet Debian] nous informe que les utilisateurs de Sid peuvent installer Bumblebee à partir des dépôts officiels Debian. 
Et, en effet, la [http://packages.debian.org/search?suite=sid&amp;searchon=names&amp;keywords=bumblebee recherche nous donne ce résultat pour Bumblebee] !
''Ce devrait bientôt être le cas pour la version Jessie du projet Debian !''

Alternativement, pour les utilisateurs de Wheezy et Sid, il est possible d'utiliser des dépôts non officiels ...

=== Vérification ===

Si vous voulez être sûr d'avoir une telle technologie, entrez la commande suivante dans votre terminal préféré :

  lspci | egrep 'VGA|3D|Display'

Si le système vous répond, ainsi, avec deux lignes, c'est donc bien votre cas !

 :~$ lspci | egrep 'VGA|3D|Display'
  00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
  01:00.0 VGA compatible controller: NVIDIA Corporation GF108 [GeForce GT 540M] (rev ff)


== Installation ==

'''NE SURTOUT PAS CHERCHER À INSTALLER LES PILOTES NVIDIA PAR TOUT AUTRE MÉTHODE !!!'''
Si jamais vous l'auriez fait, désinstallez tout avant !

=== Par depôt ===

==== Dépôt officiel Sid ====

Si vous êtes utilisateur de la version Sid du projet Debian, sachez que la dernière version est disponible à partir des dépôts officiels Debian.

Donc, passez à la phase d'installation puis de configuration.


==== Dépôt non officiel ====

'''''Note : (12/5/13)''' Il semble à ce jour que les packages du projet Bumblebee ne soient plus à jour sur ce dépôt - Si vous êtes utilisateur Sid, utilisez de préférence les dépôts Debian - cf, ci-dessus !''

Le projet est disponible, de manière non officielle, à partir du site http://suwako.nomanga.net/.

Le fichier list est le suivant :

 deb http://suwako.nomanga.net/debian sid main contrib

Il vous faut la clé GPG suivante :

 wget -O - http://suwako.nomanga.net/suwako.asc | apt-key add -

=== Installez ! ===

Mettez-à-jour votre système, et installez les binaires '''bumblebee''', et '''bumblebee-nvidia'''.

 apt-get update &amp;&amp; apt-get install bumblebee


=== Configurez ! ===

Il vous faut ensuite ajouter votre utilisateur au groupe bumblebee, en ayant les droits administrateur.

 adduser $USER bumblebee


'''Redémarrer votre ordinateur ;-)'''

== Utilisation ==

Vous pouvez être sûr que Bumblebee fonctionne grâce au binaire '''optirun'''.
Donc, pour activer la gestion du GPU nVidia, il faut précéder toute commande par l'usage de la commande 'optirun'.

 optirun [optirun-options] &lt;application&gt; [application-parameters]

Pour trouver la liste des options de optirun, vous pouvez, soit lire la page du manuel avec la commande '''man optirun''', soit exécuter :

    $ optirun --help

=== Test ===

Le premier test que vous pouvez faire est :

 optirun glxgears -info

=== Panel nVidia ===

Ne cherchez pas à l'utiliser en cliquant sur l'icône correspondante, dans votre menu, cela ne fonctionnera pas. 
Il vous faut le lancer ainsi - c'est le seul moyen ! - :

 optirun nvidia-settings -c :8

== Configuration supplémentaire ==

Il peut être utile d'informer Bumblebee d'utiliser le module 'nvidia', au lieu du module 'nouveau'. Par défaut, il utilise le pilote 'nouveau'.
Avec les droits administrateur, il faut d'abord modifier le fichier /etc/bumblebee/bumblebee.conf pour configurer la ligne 'DRIVER=' 

 DRIVER=nvidia

Redémarrer le service 'bumblebeed' !

 service bumblebeed restart

=== À chaque nouveau kernel ===

Pensez à faire courir à nouveau le module pour votre kernel, avec vos droits administrateur !
(si le système ne s'en occupe pas tout seul comme un grand :p )

==== par dkms ====

 dpkg-reconfigure nvidia-kernel-dkms

[[Category:Pilotes]]
[[Category:Nvidia]]</text>
      <sha1>mx3ofvta1di45uqx8jwx2uk0b4mds0h</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5145</id>
      <parentid>5144</parentid>
      <timestamp>2013-05-12T09:59:27Z</timestamp>
      <contributor>
        <username>PengouinPdt</username>
        <id>249</id>
      </contributor>
      <text xml:space="preserve" bytes="4926">= nVidia Optimus &amp; Bumblebee =

== Présentation ==

nVidia a créé une technologie hybride, appelée Optimus. Cette technologie a pour but d'utiliser la puce graphique intégrée, généralement de marque Intel, ainsi que le processeur graphique, couplée à la première puce, de marque nVidia. Cela permet de faire fonctionner le GPU nVidia, à la demande, lors de nécessités de fonctions 3D poussées (vidéos, jeux ...), et de &quot;rendre la main&quot; à l'IGP Intel, soulageant ainsi la batterie, pour le reste.

Nativement sous Linux, cette technologie n'est pas encore supportée. Officiellement, nVidia a fait le choix de ne pas nous supporter. 

Un développeur a créé un projet, nommé Bumblebee, qui nous apporte une certaine gestion de cette technologie. Elle n'est pas complètement gérée, mais est fonctionnelle ! Néanmoins, la gestion HDMI n'est pas accessible ...

=== Informations ===

La [http://wiki.debian.org/Bumblebee#From_repository page anglaise wiki du projet Debian] nous informe que les utilisateurs de Sid peuvent installer Bumblebee à partir des dépôts officiels Debian. 
Et, en effet, la [http://packages.debian.org/search?suite=sid&amp;searchon=names&amp;keywords=bumblebee recherche nous donne ce résultat pour Bumblebee] !
''Ce devrait bientôt être le cas pour la version Jessie du projet Debian !''

Alternativement, pour les utilisateurs de Wheezy et Sid, il est possible d'utiliser des dépôts non officiels ...

=== Vérification ===

Si vous voulez être sûr d'avoir une telle technologie, entrez la commande suivante dans votre terminal préféré :

  lspci | egrep 'VGA|3D|Display'

Si le système vous répond, ainsi, avec deux lignes, c'est donc bien votre cas !

 :~$ lspci | egrep 'VGA|3D|Display'
  00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
  01:00.0 VGA compatible controller: NVIDIA Corporation GF108 [GeForce GT 540M] (rev ff)


== Installation ==

'''NE SURTOUT PAS CHERCHER À INSTALLER LES PILOTES NVIDIA PAR TOUT AUTRE MÉTHODE !!!'''
Si jamais vous l'auriez fait, désinstallez tout avant !

=== Par depôt ===

==== Dépôt officiel Sid ====

Si vous êtes utilisateur de la version Sid du projet Debian, sachez que la dernière version est disponible à partir des dépôts officiels Debian.

Donc, passez à la phase d'installation puis de configuration.


==== Dépôt non officiel ====

'''''Note : (12/5/13)''' Il semble à ce jour que les packages du projet Bumblebee ne soient plus à jour sur ce dépôt - Si vous êtes utilisateur Sid, utilisez de préférence les dépôts Debian - cf, ci-dessus !''

Le projet est disponible, de manière non officielle, à partir du site http://suwako.nomanga.net/.

Le fichier list est le suivant :

 deb http://suwako.nomanga.net/debian sid main contrib

Il vous faut la clé GPG suivante :

 wget -O - http://suwako.nomanga.net/suwako.asc | apt-key add -

=== Installez ! ===

Mettez-à-jour votre système, et installez les binaires '''bumblebee''', et '''bumblebee-nvidia'''.

 apt-get update &amp;&amp; apt-get install bumblebee


=== Configurez ! ===

Il vous faut ensuite ajouter votre utilisateur au groupe bumblebee, en ayant les droits administrateur.

 adduser $USER bumblebee


'''Redémarrer votre ordinateur ;-)'''

== Utilisation ==

Vous pouvez être sûr que Bumblebee fonctionne grâce au binaire '''optirun'''.
Donc, pour activer la gestion du GPU nVidia, il faut précéder toute commande par l'usage de la commande 'optirun'.

 optirun [optirun-options] &lt;application&gt; [application-parameters]

Pour trouver la liste des options de optirun, vous pouvez, soit lire la page du manuel avec la commande '''man optirun''', soit exécuter :

    $ optirun --help

=== Test ===

Le premier test que vous pouvez faire est :

 optirun glxgears -info

=== Panel nVidia ===

Ne cherchez pas à l'utiliser en cliquant sur l'icône correspondante, dans votre menu, cela ne fonctionnera pas. 
Il vous faut le lancer ainsi - c'est le seul moyen ! - :

 optirun nvidia-settings -c :8

== Configuration supplémentaire ==

Il peut être utile d'informer Bumblebee d'utiliser le module 'nvidia', au lieu du module 'nouveau'. Par défaut, il utilise le pilote 'nouveau'.
Avec les droits administrateur, il faut d'abord modifier le fichier /etc/bumblebee/bumblebee.conf pour configurer la ligne 'DRIVER=' 

 DRIVER=nvidia

Redémarrer le service 'bumblebeed' !

 service bumblebeed restart

=== À chaque nouveau kernel ===

Pensez à faire courir à nouveau le module pour votre kernel, avec vos droits administrateur !
(si le système ne s'en occupe pas tout seul comme un grand :p )

==== par dkms ====

 dpkg-reconfigure nvidia-kernel-dkms

[[Category:Pilotes]]
[[Category:Nvidia]]

= Documentation alternative =

Vous pouvez retrouver un complément d'[http://wiki.debian.org/fr/Bumblebee informations sur la page wiki du projet Debian]...</text>
      <sha1>3p1tpkmyfwcypit3yf9ndjsv97mgljp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5146</id>
      <parentid>5145</parentid>
      <timestamp>2013-05-12T13:25:00Z</timestamp>
      <contributor>
        <username>PengouinPdt</username>
        <id>249</id>
      </contributor>
      <comment>/* Présentation */</comment>
      <text xml:space="preserve" bytes="5232">= nVidia Optimus &amp; Bumblebee =

== Présentation ==

nVidia a créé une technologie hybride, appelée Optimus. Cette technologie a pour but d'utiliser la puce graphique intégrée, généralement de marque Intel, ainsi que le processeur graphique, couplée à la première puce, de marque nVidia. Cela permet de faire fonctionner le GPU nVidia, à la demande, lors de nécessités de fonctions 3D poussées (vidéos, jeux ...), et de &quot;rendre la main&quot; à l'IGP Intel, soulageant ainsi la batterie, pour le reste.

'''''Note :''' Nativement sous Linux, cette technologie n'est pas pleinement supportée. Officiellement, depuis la version 319.12, nVidia apporte son support, en phase bêta - cela nécessite de pouvoir connecter l'écran au GPU nVidia ; cette option est modifiable par certains bios récents. Si votre pilote est plus ancien, ou que vous n'êtes pas dans ce cas de configuration matérielle, cette page wiki est vraiment faite pour vous !'' 

Un développeur a créé un projet, nommé Bumblebee, qui nous apporte une certaine gestion de cette technologie. Elle n'est pas complètement gérée, mais est fonctionnelle ! Néanmoins, la gestion HDMI n'est pas accessible ...

=== Informations ===

La [http://wiki.debian.org/Bumblebee#From_repository page anglaise wiki du projet Debian] nous informe que les utilisateurs de Sid peuvent installer Bumblebee à partir des dépôts officiels Debian. 
Et, en effet, la [http://packages.debian.org/search?suite=sid&amp;searchon=names&amp;keywords=bumblebee recherche nous donne ce résultat pour Bumblebee] !
''Ce devrait bientôt être le cas pour la version Jessie du projet Debian !''

Alternativement, pour les utilisateurs de Wheezy et Sid, il est possible d'utiliser des dépôts non officiels ...

=== Vérification ===

Si vous voulez être sûr d'avoir une telle technologie, entrez la commande suivante dans votre terminal préféré :

  lspci | egrep 'VGA|3D|Display'

Si le système vous répond, ainsi, avec deux lignes, c'est donc bien votre cas !

 :~$ lspci | egrep 'VGA|3D|Display'
  00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
  01:00.0 VGA compatible controller: NVIDIA Corporation GF108 [GeForce GT 540M] (rev ff)

== Installation ==

'''NE SURTOUT PAS CHERCHER À INSTALLER LES PILOTES NVIDIA PAR TOUT AUTRE MÉTHODE !!!'''
Si jamais vous l'auriez fait, désinstallez tout avant !

=== Par depôt ===

==== Dépôt officiel Sid ====

Si vous êtes utilisateur de la version Sid du projet Debian, sachez que la dernière version est disponible à partir des dépôts officiels Debian.

Donc, passez à la phase d'installation puis de configuration.


==== Dépôt non officiel ====

'''''Note : (12/5/13)''' Il semble à ce jour que les packages du projet Bumblebee ne soient plus à jour sur ce dépôt - Si vous êtes utilisateur Sid, utilisez de préférence les dépôts Debian - cf, ci-dessus !''

Le projet est disponible, de manière non officielle, à partir du site http://suwako.nomanga.net/.

Le fichier list est le suivant :

 deb http://suwako.nomanga.net/debian sid main contrib

Il vous faut la clé GPG suivante :

 wget -O - http://suwako.nomanga.net/suwako.asc | apt-key add -

=== Installez ! ===

Mettez-à-jour votre système, et installez les binaires '''bumblebee''', et '''bumblebee-nvidia'''.

 apt-get update &amp;&amp; apt-get install bumblebee


=== Configurez ! ===

Il vous faut ensuite ajouter votre utilisateur au groupe bumblebee, en ayant les droits administrateur.

 adduser $USER bumblebee


'''Redémarrer votre ordinateur ;-)'''

== Utilisation ==

Vous pouvez être sûr que Bumblebee fonctionne grâce au binaire '''optirun'''.
Donc, pour activer la gestion du GPU nVidia, il faut précéder toute commande par l'usage de la commande 'optirun'.

 optirun [optirun-options] &lt;application&gt; [application-parameters]

Pour trouver la liste des options de optirun, vous pouvez, soit lire la page du manuel avec la commande '''man optirun''', soit exécuter :

    $ optirun --help

=== Test ===

Le premier test que vous pouvez faire est :

 optirun glxgears -info

=== Panel nVidia ===

Ne cherchez pas à l'utiliser en cliquant sur l'icône correspondante, dans votre menu, cela ne fonctionnera pas. 
Il vous faut le lancer ainsi - c'est le seul moyen ! - :

 optirun nvidia-settings -c :8

== Configuration supplémentaire ==

Il peut être utile d'informer Bumblebee d'utiliser le module 'nvidia', au lieu du module 'nouveau'. Par défaut, il utilise le pilote 'nouveau'.
Avec les droits administrateur, il faut d'abord modifier le fichier /etc/bumblebee/bumblebee.conf pour configurer la ligne 'DRIVER=' 

 DRIVER=nvidia

Redémarrer le service 'bumblebeed' !

 service bumblebeed restart

=== À chaque nouveau kernel ===

Pensez à faire courir à nouveau le module pour votre kernel, avec vos droits administrateur !
(si le système ne s'en occupe pas tout seul comme un grand :p )

==== par dkms ====

 dpkg-reconfigure nvidia-kernel-dkms

[[Category:Pilotes]]
[[Category:Nvidia]]

= Documentation alternative =

Vous pouvez retrouver un complément d'[http://wiki.debian.org/fr/Bumblebee informations sur la page wiki du projet Debian]...</text>
      <sha1>t2di2y96h1onm3t657opzkun82g4vu3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5233</id>
      <parentid>5146</parentid>
      <timestamp>2013-05-30T16:02:34Z</timestamp>
      <contributor>
        <username>PengouinPdt</username>
        <id>249</id>
      </contributor>
      <minor/>
      <comment>maj pour wheezy-backports</comment>
      <text xml:space="preserve" bytes="5380">= nVidia Optimus &amp; Bumblebee =

== Présentation ==

nVidia a créé une technologie hybride, appelée Optimus. Cette technologie a pour but d'utiliser la puce graphique intégrée, généralement de marque Intel, ainsi que le processeur graphique, couplée à la première puce, de marque nVidia. Cela permet de faire fonctionner le GPU nVidia, à la demande, lors de nécessités de fonctions 3D poussées (vidéos, jeux ...), et de &quot;rendre la main&quot; à l'IGP Intel, soulageant ainsi la batterie, pour le reste.

'''''Note :''' Nativement sous Linux, cette technologie n'est pas pleinement supportée. Officiellement, depuis la version 319.12, nVidia apporte son support, en phase bêta - cela nécessite de pouvoir connecter l'écran au GPU nVidia ; cette option est modifiable par certains bios récents. Si votre pilote est plus ancien, ou que vous n'êtes pas dans ce cas de configuration matérielle, cette page wiki est vraiment faite pour vous !'' 

Un développeur a créé un projet, nommé Bumblebee, qui nous apporte une certaine gestion de cette technologie. Elle n'est pas complètement gérée, mais est fonctionnelle ! Néanmoins, la gestion HDMI n'est pas accessible ...

=== Informations ===

La [http://wiki.debian.org/Bumblebee#From_repository page anglaise wiki du projet Debian] nous informe que les utilisateurs de Sid peuvent installer Bumblebee à partir des dépôts officiels Debian. 
Et, en effet, la [http://packages.debian.org/search?suite=sid&amp;searchon=names&amp;keywords=bumblebee recherche nous donne ce résultat pour Bumblebee] !
''Ce devrait bientôt être le cas pour la version Jessie du projet Debian !''

Depuis le 26.05.2013, cela semble aussi le cas pour les utilisateurs des dépôts [http://backports.debian.org/changes/wheezy-backports.html Wheezy-Backports] !

=== Vérification ===

Si vous voulez être sûr d'avoir une telle technologie, entrez la commande suivante dans votre terminal préféré :

  lspci | egrep 'VGA|3D|Display'

Si le système vous répond, ainsi, avec deux lignes, c'est donc bien votre cas !

 :~$ lspci | egrep 'VGA|3D|Display'
  00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
  01:00.0 VGA compatible controller: NVIDIA Corporation GF108 [GeForce GT 540M] (rev ff)

== Installation ==

'''NE SURTOUT PAS CHERCHER À INSTALLER LES PILOTES NVIDIA PAR TOUT AUTRE MÉTHODE !!!'''
Si jamais vous l'auriez fait, désinstallez tout avant !

  apt-get remove --purge nvidia-* 

=== Par depôt ===

==== Dépôt officiel Wheezy-Backport, Sid ====

Si vous êtes utilisateur de la version Wheezy du projet Debian, ajoutez donc les dépôts Wheezy-Backports, pour en profiter de le dernière version. ''Cela semble vrai depuis le 26.05.2013''. 

Si vous êtes utilisateur de la version Sid du projet Debian, sachez que la dernière version est disponible à partir des dépôts officiels Debian.

Donc, passez à la phase d'installation puis de configuration.


==== Dépôt non officiel ====

'''Note : ''(21.09.12)''''' Il semble à ce jour que les packages du projet Bumblebee ne soient plus à jour sur ce dépôt -  Si vous êtes utilisateur Sid ''(12.05.13)'' ou de Wheezy ''(26.05.13)'', utilisez de préférence les dépôts Debian - cf, ci-dessus !

Le projet est disponible, de manière non officielle, à partir du site http://suwako.nomanga.net/.

=== Installez ! ===

Mettez-à-jour votre système, et installez les binaires '''bumblebee''', et '''bumblebee-nvidia'''.

 apt-get update &amp;&amp; apt-get install bumblebee


=== Configurez ! ===

Il vous faut ensuite ajouter votre utilisateur au groupe bumblebee, en ayant les droits administrateur.

 adduser $USER bumblebee


'''Redémarrer votre ordinateur ;-)'''

== Utilisation ==

Vous pouvez être sûr que Bumblebee fonctionne grâce au binaire '''optirun'''.
Donc, pour activer la gestion du GPU nVidia, il faut précéder toute commande par l'usage de la commande 'optirun'.

 optirun [optirun-options] &lt;application&gt; [application-parameters]

Pour trouver la liste des options de optirun, vous pouvez, soit lire la page du manuel avec la commande '''man optirun''', soit exécuter :

    $ optirun --help

=== Test ===

Le premier test que vous pouvez faire est :

 optirun glxgears -info

=== Panel nVidia ===

Ne cherchez pas à l'utiliser en cliquant sur l'icône correspondante, dans votre menu, cela ne fonctionnera pas. 
Il vous faut le lancer ainsi - c'est le seul moyen ! - :

 optirun nvidia-settings -c :8

== Configuration supplémentaire ==

Il peut être utile d'informer Bumblebee d'utiliser le module 'nvidia', au lieu du module 'nouveau'. Par défaut, il utilise le pilote 'nouveau'.
Avec les droits administrateur, il faut d'abord modifier le fichier /etc/bumblebee/bumblebee.conf pour configurer la ligne 'DRIVER=' 

 DRIVER=nvidia

Redémarrer le service 'bumblebeed' !

 service bumblebeed restart

=== À chaque nouveau kernel ===

Pensez à faire courir à nouveau le module pour votre kernel, avec vos droits administrateur !
(si le système ne s'en occupe pas tout seul comme un grand :p )

==== par dkms ====

 dpkg-reconfigure nvidia-kernel-dkms

[[Category:Pilotes]]
[[Category:Nvidia]]

= Documentation alternative =

Vous pouvez retrouver un complément d'[http://wiki.debian.org/fr/Bumblebee informations sur la page wiki du projet Debian]...</text>
      <sha1>pnb2y960ka4yl7ne13tr2nshsz8d5zi</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5234</id>
      <parentid>5233</parentid>
      <timestamp>2013-05-30T16:03:34Z</timestamp>
      <contributor>
        <username>PengouinPdt</username>
        <id>249</id>
      </contributor>
      <text xml:space="preserve" bytes="5361">= nVidia Optimus &amp; Bumblebee =

== Présentation ==

nVidia a créé une technologie hybride, appelée Optimus. Cette technologie a pour but d'utiliser la puce graphique intégrée, généralement de marque Intel, ainsi que le processeur graphique, couplée à la première puce, de marque nVidia. Cela permet de faire fonctionner le GPU nVidia, à la demande, lors de nécessités de fonctions 3D poussées (vidéos, jeux ...), et de &quot;rendre la main&quot; à l'IGP Intel, soulageant ainsi la batterie, pour le reste.

'''''Note :''' Nativement sous Linux, cette technologie n'est pas pleinement supportée. Officiellement, depuis la version 319.12, nVidia apporte son support, en phase bêta - cela nécessite de pouvoir connecter l'écran au GPU nVidia ; cette option est modifiable par certains bios récents. Si votre pilote est plus ancien, ou que vous n'êtes pas dans ce cas de configuration matérielle, cette page wiki est vraiment faite pour vous !'' 

Un développeur a créé un projet, nommé Bumblebee, qui nous apporte une certaine gestion de cette technologie. Elle n'est pas complètement gérée, mais est fonctionnelle ! Néanmoins, la gestion HDMI n'est pas accessible ...

=== Informations ===

La [http://wiki.debian.org/Bumblebee#From_repository page anglaise wiki du projet Debian] nous informe que les utilisateurs de Sid peuvent installer Bumblebee à partir des dépôts officiels Debian. 
Et, en effet, la [http://packages.debian.org/search?suite=sid&amp;searchon=names&amp;keywords=bumblebee recherche nous donne ce résultat pour Bumblebee] !
''Ce devrait bientôt être le cas pour la version Jessie du projet Debian !''

Depuis le 26.05.2013, cela semble aussi le cas pour les utilisateurs des dépôts [http://backports.debian.org/changes/wheezy-backports.html Wheezy-Backports] !

=== Vérification ===

Si vous voulez être sûr d'avoir une telle technologie, entrez la commande suivante dans votre terminal préféré :

  lspci | egrep 'VGA|3D|Display'

Si le système vous répond, ainsi, avec deux lignes, c'est donc bien votre cas !

 :~$ lspci | egrep 'VGA|3D|Display'
  00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
  01:00.0 VGA compatible controller: NVIDIA Corporation GF108 [GeForce GT 540M] (rev ff)

== Installation ==

'''NE SURTOUT PAS CHERCHER À INSTALLER LES PILOTES NVIDIA PAR TOUT AUTRE MÉTHODE !!!'''
Si jamais vous l'auriez fait, désinstallez tout avant !

  apt-get remove --purge nvidia-* 

=== Par depôt ===

==== Dépôts officiels ====

Si vous êtes utilisateur de la version Wheezy du projet Debian, ajoutez donc les dépôts Wheezy-Backports, pour en profiter de le dernière version. ''Cela semble vrai depuis le 26.05.2013''. 

Si vous êtes utilisateur de la version Sid du projet Debian, sachez que la dernière version est disponible à partir des dépôts officiels Debian.

Donc, passez à la phase d'installation puis de configuration.


==== Dépôt non officiel ====

'''Note : ''(21.09.12)''''' Il semble à ce jour que les packages du projet Bumblebee ne soient plus à jour sur ce dépôt -  Si vous êtes utilisateur Sid ''(12.05.13)'' ou de Wheezy ''(26.05.13)'', utilisez de préférence les dépôts Debian - cf, ci-dessus !

Le projet est disponible, de manière non officielle, à partir du site http://suwako.nomanga.net/.

=== Installez ! ===

Mettez-à-jour votre système, et installez les binaires '''bumblebee''', et '''bumblebee-nvidia'''.

 apt-get update &amp;&amp; apt-get install bumblebee


=== Configurez ! ===

Il vous faut ensuite ajouter votre utilisateur au groupe bumblebee, en ayant les droits administrateur.

 adduser $USER bumblebee


'''Redémarrer votre ordinateur ;-)'''

== Utilisation ==

Vous pouvez être sûr que Bumblebee fonctionne grâce au binaire '''optirun'''.
Donc, pour activer la gestion du GPU nVidia, il faut précéder toute commande par l'usage de la commande 'optirun'.

 optirun [optirun-options] &lt;application&gt; [application-parameters]

Pour trouver la liste des options de optirun, vous pouvez, soit lire la page du manuel avec la commande '''man optirun''', soit exécuter :

    $ optirun --help

=== Test ===

Le premier test que vous pouvez faire est :

 optirun glxgears -info

=== Panel nVidia ===

Ne cherchez pas à l'utiliser en cliquant sur l'icône correspondante, dans votre menu, cela ne fonctionnera pas. 
Il vous faut le lancer ainsi - c'est le seul moyen ! - :

 optirun nvidia-settings -c :8

== Configuration supplémentaire ==

Il peut être utile d'informer Bumblebee d'utiliser le module 'nvidia', au lieu du module 'nouveau'. Par défaut, il utilise le pilote 'nouveau'.
Avec les droits administrateur, il faut d'abord modifier le fichier /etc/bumblebee/bumblebee.conf pour configurer la ligne 'DRIVER=' 

 DRIVER=nvidia

Redémarrer le service 'bumblebeed' !

 service bumblebeed restart

=== À chaque nouveau kernel ===

Pensez à faire courir à nouveau le module pour votre kernel, avec vos droits administrateur !
(si le système ne s'en occupe pas tout seul comme un grand :p )

==== par dkms ====

 dpkg-reconfigure nvidia-kernel-dkms

[[Category:Pilotes]]
[[Category:Nvidia]]

= Documentation alternative =

Vous pouvez retrouver un complément d'[http://wiki.debian.org/fr/Bumblebee informations sur la page wiki du projet Debian]...</text>
      <sha1>5ag71ndfh0qbg2fuokjgl78ofuyp31h</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5235</id>
      <parentid>5234</parentid>
      <timestamp>2013-05-30T16:56:09Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Installation */</comment>
      <text xml:space="preserve" bytes="5359">= nVidia Optimus &amp; Bumblebee =

== Présentation ==

nVidia a créé une technologie hybride, appelée Optimus. Cette technologie a pour but d'utiliser la puce graphique intégrée, généralement de marque Intel, ainsi que le processeur graphique, couplée à la première puce, de marque nVidia. Cela permet de faire fonctionner le GPU nVidia, à la demande, lors de nécessités de fonctions 3D poussées (vidéos, jeux ...), et de &quot;rendre la main&quot; à l'IGP Intel, soulageant ainsi la batterie, pour le reste.

'''''Note :''' Nativement sous Linux, cette technologie n'est pas pleinement supportée. Officiellement, depuis la version 319.12, nVidia apporte son support, en phase bêta - cela nécessite de pouvoir connecter l'écran au GPU nVidia ; cette option est modifiable par certains bios récents. Si votre pilote est plus ancien, ou que vous n'êtes pas dans ce cas de configuration matérielle, cette page wiki est vraiment faite pour vous !'' 

Un développeur a créé un projet, nommé Bumblebee, qui nous apporte une certaine gestion de cette technologie. Elle n'est pas complètement gérée, mais est fonctionnelle ! Néanmoins, la gestion HDMI n'est pas accessible ...

=== Informations ===

La [http://wiki.debian.org/Bumblebee#From_repository page anglaise wiki du projet Debian] nous informe que les utilisateurs de Sid peuvent installer Bumblebee à partir des dépôts officiels Debian. 
Et, en effet, la [http://packages.debian.org/search?suite=sid&amp;searchon=names&amp;keywords=bumblebee recherche nous donne ce résultat pour Bumblebee] !
''Ce devrait bientôt être le cas pour la version Jessie du projet Debian !''

Depuis le 26.05.2013, cela semble aussi le cas pour les utilisateurs des dépôts [http://backports.debian.org/changes/wheezy-backports.html Wheezy-Backports] !

=== Vérification ===

Si vous voulez être sûr d'avoir une telle technologie, entrez la commande suivante dans votre terminal préféré :

  lspci | egrep 'VGA|3D|Display'

Si le système vous répond, ainsi, avec deux lignes, c'est donc bien votre cas !

 :~$ lspci | egrep 'VGA|3D|Display'
  00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
  01:00.0 VGA compatible controller: NVIDIA Corporation GF108 [GeForce GT 540M] (rev ff)

== Installation ==

'''NE SURTOUT PAS CHERCHER À INSTALLER LES PILOTES NVIDIA PAR TOUT AUTRE MÉTHODE !!!'''
Si jamais vous l'avez fait, désinstallez tout avant !

  apt-get remove --purge nvidia-* 

=== Par depôt ===

==== Dépôts officiels ====

Si vous êtes utilisateur de la version Wheezy du projet Debian, ajoutez donc les dépôts Wheezy-Backports, pour en profiter de le dernière version. ''Cela semble vrai depuis le 26.05.2013''. 

Si vous êtes utilisateur de la version Sid du projet Debian, sachez que la dernière version est disponible à partir des dépôts officiels Debian.

Donc, passez à la phase d'installation puis de configuration.


==== Dépôt non officiel ====

'''Note : ''(21.09.12)''''' Il semble à ce jour que les packages du projet Bumblebee ne soient plus à jour sur ce dépôt -  Si vous êtes utilisateur Sid ''(12.05.13)'' ou de Wheezy ''(26.05.13)'', utilisez de préférence les dépôts Debian - cf, ci-dessus !

Le projet est disponible, de manière non officielle, à partir du site http://suwako.nomanga.net/.

=== Installez ! ===

Mettez-à-jour votre système, et installez les binaires '''bumblebee''', et '''bumblebee-nvidia'''.

 apt-get update &amp;&amp; apt-get install bumblebee


=== Configurez ! ===

Il vous faut ensuite ajouter votre utilisateur au groupe bumblebee, en ayant les droits administrateur.

 adduser $USER bumblebee


'''Redémarrer votre ordinateur ;-)'''

== Utilisation ==

Vous pouvez être sûr que Bumblebee fonctionne grâce au binaire '''optirun'''.
Donc, pour activer la gestion du GPU nVidia, il faut précéder toute commande par l'usage de la commande 'optirun'.

 optirun [optirun-options] &lt;application&gt; [application-parameters]

Pour trouver la liste des options de optirun, vous pouvez, soit lire la page du manuel avec la commande '''man optirun''', soit exécuter :

    $ optirun --help

=== Test ===

Le premier test que vous pouvez faire est :

 optirun glxgears -info

=== Panel nVidia ===

Ne cherchez pas à l'utiliser en cliquant sur l'icône correspondante, dans votre menu, cela ne fonctionnera pas. 
Il vous faut le lancer ainsi - c'est le seul moyen ! - :

 optirun nvidia-settings -c :8

== Configuration supplémentaire ==

Il peut être utile d'informer Bumblebee d'utiliser le module 'nvidia', au lieu du module 'nouveau'. Par défaut, il utilise le pilote 'nouveau'.
Avec les droits administrateur, il faut d'abord modifier le fichier /etc/bumblebee/bumblebee.conf pour configurer la ligne 'DRIVER=' 

 DRIVER=nvidia

Redémarrer le service 'bumblebeed' !

 service bumblebeed restart

=== À chaque nouveau kernel ===

Pensez à faire courir à nouveau le module pour votre kernel, avec vos droits administrateur !
(si le système ne s'en occupe pas tout seul comme un grand :p )

==== par dkms ====

 dpkg-reconfigure nvidia-kernel-dkms

[[Category:Pilotes]]
[[Category:Nvidia]]

= Documentation alternative =

Vous pouvez retrouver un complément d'[http://wiki.debian.org/fr/Bumblebee informations sur la page wiki du projet Debian]...</text>
      <sha1>o8hn9y8wsozp41r2pbqik308ylbiwz7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5264</id>
      <parentid>5235</parentid>
      <timestamp>2013-06-09T17:09:03Z</timestamp>
      <contributor>
        <username>PengouinPdt</username>
        <id>249</id>
      </contributor>
      <minor/>
      <comment>/* Configurez ! */</comment>
      <text xml:space="preserve" bytes="5383">= nVidia Optimus &amp; Bumblebee =

== Présentation ==

nVidia a créé une technologie hybride, appelée Optimus. Cette technologie a pour but d'utiliser la puce graphique intégrée, généralement de marque Intel, ainsi que le processeur graphique, couplée à la première puce, de marque nVidia. Cela permet de faire fonctionner le GPU nVidia, à la demande, lors de nécessités de fonctions 3D poussées (vidéos, jeux ...), et de &quot;rendre la main&quot; à l'IGP Intel, soulageant ainsi la batterie, pour le reste.

'''''Note :''' Nativement sous Linux, cette technologie n'est pas pleinement supportée. Officiellement, depuis la version 319.12, nVidia apporte son support, en phase bêta - cela nécessite de pouvoir connecter l'écran au GPU nVidia ; cette option est modifiable par certains bios récents. Si votre pilote est plus ancien, ou que vous n'êtes pas dans ce cas de configuration matérielle, cette page wiki est vraiment faite pour vous !'' 

Un développeur a créé un projet, nommé Bumblebee, qui nous apporte une certaine gestion de cette technologie. Elle n'est pas complètement gérée, mais est fonctionnelle ! Néanmoins, la gestion HDMI n'est pas accessible ...

=== Informations ===

La [http://wiki.debian.org/Bumblebee#From_repository page anglaise wiki du projet Debian] nous informe que les utilisateurs de Sid peuvent installer Bumblebee à partir des dépôts officiels Debian. 
Et, en effet, la [http://packages.debian.org/search?suite=sid&amp;searchon=names&amp;keywords=bumblebee recherche nous donne ce résultat pour Bumblebee] !
''Ce devrait bientôt être le cas pour la version Jessie du projet Debian !''

Depuis le 26.05.2013, cela semble aussi le cas pour les utilisateurs des dépôts [http://backports.debian.org/changes/wheezy-backports.html Wheezy-Backports] !

=== Vérification ===

Si vous voulez être sûr d'avoir une telle technologie, entrez la commande suivante dans votre terminal préféré :

  lspci | egrep 'VGA|3D|Display'

Si le système vous répond, ainsi, avec deux lignes, c'est donc bien votre cas !

 :~$ lspci | egrep 'VGA|3D|Display'
  00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
  01:00.0 VGA compatible controller: NVIDIA Corporation GF108 [GeForce GT 540M] (rev ff)

== Installation ==

'''NE SURTOUT PAS CHERCHER À INSTALLER LES PILOTES NVIDIA PAR TOUT AUTRE MÉTHODE !!!'''
Si jamais vous l'avez fait, désinstallez tout avant !

  apt-get remove --purge nvidia-* 

=== Par depôt ===

==== Dépôts officiels ====

Si vous êtes utilisateur de la version Wheezy du projet Debian, ajoutez donc les dépôts Wheezy-Backports, pour en profiter de le dernière version. ''Cela semble vrai depuis le 26.05.2013''. 

Si vous êtes utilisateur de la version Sid du projet Debian, sachez que la dernière version est disponible à partir des dépôts officiels Debian.

Donc, passez à la phase d'installation puis de configuration.


==== Dépôt non officiel ====

'''Note : ''(21.09.12)''''' Il semble à ce jour que les packages du projet Bumblebee ne soient plus à jour sur ce dépôt -  Si vous êtes utilisateur Sid ''(12.05.13)'' ou de Wheezy ''(26.05.13)'', utilisez de préférence les dépôts Debian - cf, ci-dessus !

Le projet est disponible, de manière non officielle, à partir du site http://suwako.nomanga.net/.

=== Installez ! ===

Mettez-à-jour votre système, et installez les binaires '''bumblebee''', et '''bumblebee-nvidia'''.

 apt-get update &amp;&amp; apt-get install bumblebee


=== Configurez ! ===

Il vous faut ensuite ajouter votre utilisateur au groupe bumblebee, en ayant les droits administrateur.

 adduser $USER bumblebee bumblebee-nvidia primus


'''Redémarrer votre ordinateur ;-)'''

== Utilisation ==

Vous pouvez être sûr que Bumblebee fonctionne grâce au binaire '''optirun'''.
Donc, pour activer la gestion du GPU nVidia, il faut précéder toute commande par l'usage de la commande 'optirun'.

 optirun [optirun-options] &lt;application&gt; [application-parameters]

Pour trouver la liste des options de optirun, vous pouvez, soit lire la page du manuel avec la commande '''man optirun''', soit exécuter :

    $ optirun --help

=== Test ===

Le premier test que vous pouvez faire est :

 optirun glxgears -info

=== Panel nVidia ===

Ne cherchez pas à l'utiliser en cliquant sur l'icône correspondante, dans votre menu, cela ne fonctionnera pas. 
Il vous faut le lancer ainsi - c'est le seul moyen ! - :

 optirun nvidia-settings -c :8

== Configuration supplémentaire ==

Il peut être utile d'informer Bumblebee d'utiliser le module 'nvidia', au lieu du module 'nouveau'. Par défaut, il utilise le pilote 'nouveau'.
Avec les droits administrateur, il faut d'abord modifier le fichier /etc/bumblebee/bumblebee.conf pour configurer la ligne 'DRIVER=' 

 DRIVER=nvidia

Redémarrer le service 'bumblebeed' !

 service bumblebeed restart

=== À chaque nouveau kernel ===

Pensez à faire courir à nouveau le module pour votre kernel, avec vos droits administrateur !
(si le système ne s'en occupe pas tout seul comme un grand :p )

==== par dkms ====

 dpkg-reconfigure nvidia-kernel-dkms

[[Category:Pilotes]]
[[Category:Nvidia]]

= Documentation alternative =

Vous pouvez retrouver un complément d'[http://wiki.debian.org/fr/Bumblebee informations sur la page wiki du projet Debian]...</text>
      <sha1>772d3v2klt1cl7bhmsxl5y71c65ccmd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5265</id>
      <parentid>5264</parentid>
      <timestamp>2013-06-09T17:10:24Z</timestamp>
      <contributor>
        <username>PengouinPdt</username>
        <id>249</id>
      </contributor>
      <minor/>
      <comment>/* Dépôts officiels */</comment>
      <text xml:space="preserve" bytes="5427">= nVidia Optimus &amp; Bumblebee =

== Présentation ==

nVidia a créé une technologie hybride, appelée Optimus. Cette technologie a pour but d'utiliser la puce graphique intégrée, généralement de marque Intel, ainsi que le processeur graphique, couplée à la première puce, de marque nVidia. Cela permet de faire fonctionner le GPU nVidia, à la demande, lors de nécessités de fonctions 3D poussées (vidéos, jeux ...), et de &quot;rendre la main&quot; à l'IGP Intel, soulageant ainsi la batterie, pour le reste.

'''''Note :''' Nativement sous Linux, cette technologie n'est pas pleinement supportée. Officiellement, depuis la version 319.12, nVidia apporte son support, en phase bêta - cela nécessite de pouvoir connecter l'écran au GPU nVidia ; cette option est modifiable par certains bios récents. Si votre pilote est plus ancien, ou que vous n'êtes pas dans ce cas de configuration matérielle, cette page wiki est vraiment faite pour vous !'' 

Un développeur a créé un projet, nommé Bumblebee, qui nous apporte une certaine gestion de cette technologie. Elle n'est pas complètement gérée, mais est fonctionnelle ! Néanmoins, la gestion HDMI n'est pas accessible ...

=== Informations ===

La [http://wiki.debian.org/Bumblebee#From_repository page anglaise wiki du projet Debian] nous informe que les utilisateurs de Sid peuvent installer Bumblebee à partir des dépôts officiels Debian. 
Et, en effet, la [http://packages.debian.org/search?suite=sid&amp;searchon=names&amp;keywords=bumblebee recherche nous donne ce résultat pour Bumblebee] !
''Ce devrait bientôt être le cas pour la version Jessie du projet Debian !''

Depuis le 26.05.2013, cela semble aussi le cas pour les utilisateurs des dépôts [http://backports.debian.org/changes/wheezy-backports.html Wheezy-Backports] !

=== Vérification ===

Si vous voulez être sûr d'avoir une telle technologie, entrez la commande suivante dans votre terminal préféré :

  lspci | egrep 'VGA|3D|Display'

Si le système vous répond, ainsi, avec deux lignes, c'est donc bien votre cas !

 :~$ lspci | egrep 'VGA|3D|Display'
  00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
  01:00.0 VGA compatible controller: NVIDIA Corporation GF108 [GeForce GT 540M] (rev ff)

== Installation ==

'''NE SURTOUT PAS CHERCHER À INSTALLER LES PILOTES NVIDIA PAR TOUT AUTRE MÉTHODE !!!'''
Si jamais vous l'avez fait, désinstallez tout avant !

  apt-get remove --purge nvidia-* 

=== Par depôt ===

==== Dépôts officiels ====

Si vous êtes utilisateur de la version Wheezy du projet Debian, ajoutez donc les dépôts Wheezy-Backports, pour en profiter de le dernière version. ''Cela semble vrai depuis le 26.05.2013''. 

Si vous êtes utilisateur de la version Sid du projet Debian, sachez que la dernière version est disponible à partir des dépôts officiels Debian. ''Cela semble vrai depuis le 12.05.2013''. 


Donc, passez à la phase d'installation puis de configuration.

==== Dépôt non officiel ====

'''Note : ''(21.09.12)''''' Il semble à ce jour que les packages du projet Bumblebee ne soient plus à jour sur ce dépôt -  Si vous êtes utilisateur Sid ''(12.05.13)'' ou de Wheezy ''(26.05.13)'', utilisez de préférence les dépôts Debian - cf, ci-dessus !

Le projet est disponible, de manière non officielle, à partir du site http://suwako.nomanga.net/.

=== Installez ! ===

Mettez-à-jour votre système, et installez les binaires '''bumblebee''', et '''bumblebee-nvidia'''.

 apt-get update &amp;&amp; apt-get install bumblebee


=== Configurez ! ===

Il vous faut ensuite ajouter votre utilisateur au groupe bumblebee, en ayant les droits administrateur.

 adduser $USER bumblebee bumblebee-nvidia primus


'''Redémarrer votre ordinateur ;-)'''

== Utilisation ==

Vous pouvez être sûr que Bumblebee fonctionne grâce au binaire '''optirun'''.
Donc, pour activer la gestion du GPU nVidia, il faut précéder toute commande par l'usage de la commande 'optirun'.

 optirun [optirun-options] &lt;application&gt; [application-parameters]

Pour trouver la liste des options de optirun, vous pouvez, soit lire la page du manuel avec la commande '''man optirun''', soit exécuter :

    $ optirun --help

=== Test ===

Le premier test que vous pouvez faire est :

 optirun glxgears -info

=== Panel nVidia ===

Ne cherchez pas à l'utiliser en cliquant sur l'icône correspondante, dans votre menu, cela ne fonctionnera pas. 
Il vous faut le lancer ainsi - c'est le seul moyen ! - :

 optirun nvidia-settings -c :8

== Configuration supplémentaire ==

Il peut être utile d'informer Bumblebee d'utiliser le module 'nvidia', au lieu du module 'nouveau'. Par défaut, il utilise le pilote 'nouveau'.
Avec les droits administrateur, il faut d'abord modifier le fichier /etc/bumblebee/bumblebee.conf pour configurer la ligne 'DRIVER=' 

 DRIVER=nvidia

Redémarrer le service 'bumblebeed' !

 service bumblebeed restart

=== À chaque nouveau kernel ===

Pensez à faire courir à nouveau le module pour votre kernel, avec vos droits administrateur !
(si le système ne s'en occupe pas tout seul comme un grand :p )

==== par dkms ====

 dpkg-reconfigure nvidia-kernel-dkms

[[Category:Pilotes]]
[[Category:Nvidia]]

= Documentation alternative =

Vous pouvez retrouver un complément d'[http://wiki.debian.org/fr/Bumblebee informations sur la page wiki du projet Debian]...</text>
      <sha1>qzz55f922mc3j3faulxozk2u2lin3ib</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5266</id>
      <parentid>5265</parentid>
      <timestamp>2013-06-09T17:12:27Z</timestamp>
      <contributor>
        <username>PengouinPdt</username>
        <id>249</id>
      </contributor>
      <minor/>
      <comment>Erreur dans l'ajout de commandes dans la section Configuration &gt; plutôt section Installation !</comment>
      <text xml:space="preserve" bytes="5427">= nVidia Optimus &amp; Bumblebee =

== Présentation ==

nVidia a créé une technologie hybride, appelée Optimus. Cette technologie a pour but d'utiliser la puce graphique intégrée, généralement de marque Intel, ainsi que le processeur graphique, couplée à la première puce, de marque nVidia. Cela permet de faire fonctionner le GPU nVidia, à la demande, lors de nécessités de fonctions 3D poussées (vidéos, jeux ...), et de &quot;rendre la main&quot; à l'IGP Intel, soulageant ainsi la batterie, pour le reste.

'''''Note :''' Nativement sous Linux, cette technologie n'est pas pleinement supportée. Officiellement, depuis la version 319.12, nVidia apporte son support, en phase bêta - cela nécessite de pouvoir connecter l'écran au GPU nVidia ; cette option est modifiable par certains bios récents. Si votre pilote est plus ancien, ou que vous n'êtes pas dans ce cas de configuration matérielle, cette page wiki est vraiment faite pour vous !'' 

Un développeur a créé un projet, nommé Bumblebee, qui nous apporte une certaine gestion de cette technologie. Elle n'est pas complètement gérée, mais est fonctionnelle ! Néanmoins, la gestion HDMI n'est pas accessible ...

=== Informations ===

La [http://wiki.debian.org/Bumblebee#From_repository page anglaise wiki du projet Debian] nous informe que les utilisateurs de Sid peuvent installer Bumblebee à partir des dépôts officiels Debian. 
Et, en effet, la [http://packages.debian.org/search?suite=sid&amp;searchon=names&amp;keywords=bumblebee recherche nous donne ce résultat pour Bumblebee] !
''Ce devrait bientôt être le cas pour la version Jessie du projet Debian !''

Depuis le 26.05.2013, cela semble aussi le cas pour les utilisateurs des dépôts [http://backports.debian.org/changes/wheezy-backports.html Wheezy-Backports] !

=== Vérification ===

Si vous voulez être sûr d'avoir une telle technologie, entrez la commande suivante dans votre terminal préféré :

  lspci | egrep 'VGA|3D|Display'

Si le système vous répond, ainsi, avec deux lignes, c'est donc bien votre cas !

 :~$ lspci | egrep 'VGA|3D|Display'
  00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
  01:00.0 VGA compatible controller: NVIDIA Corporation GF108 [GeForce GT 540M] (rev ff)

== Installation ==

'''NE SURTOUT PAS CHERCHER À INSTALLER LES PILOTES NVIDIA PAR TOUT AUTRE MÉTHODE !!!'''
Si jamais vous l'avez fait, désinstallez tout avant !

  apt-get remove --purge nvidia-* 

=== Par depôt ===

==== Dépôts officiels ====

Si vous êtes utilisateur de la version Wheezy du projet Debian, ajoutez donc les dépôts Wheezy-Backports, pour en profiter de le dernière version. ''Cela semble vrai depuis le 26.05.2013''. 

Si vous êtes utilisateur de la version Sid du projet Debian, sachez que la dernière version est disponible à partir des dépôts officiels Debian. ''Cela semble vrai depuis le 12.05.2013''. 


Donc, passez à la phase d'installation puis de configuration.

==== Dépôt non officiel ====

'''Note : ''(21.09.12)''''' Il semble à ce jour que les packages du projet Bumblebee ne soient plus à jour sur ce dépôt -  Si vous êtes utilisateur Sid ''(12.05.13)'' ou de Wheezy ''(26.05.13)'', utilisez de préférence les dépôts Debian - cf, ci-dessus !

Le projet est disponible, de manière non officielle, à partir du site http://suwako.nomanga.net/.

=== Installez ! ===

Mettez-à-jour votre système, et installez les binaires '''bumblebee''', et '''bumblebee-nvidia'''.

 apt-get update &amp;&amp; apt-get install bumblebee bumblebee-nvidia primus


=== Configurez ! ===

Il vous faut ensuite ajouter votre utilisateur au groupe bumblebee, en ayant les droits administrateur.

 adduser $USER bumblebee 

'''Redémarrer votre ordinateur ;-)'''

== Utilisation ==

Vous pouvez être sûr que Bumblebee fonctionne grâce au binaire '''optirun'''.
Donc, pour activer la gestion du GPU nVidia, il faut précéder toute commande par l'usage de la commande 'optirun'.

 optirun [optirun-options] &lt;application&gt; [application-parameters]

Pour trouver la liste des options de optirun, vous pouvez, soit lire la page du manuel avec la commande '''man optirun''', soit exécuter :

    $ optirun --help

=== Test ===

Le premier test que vous pouvez faire est :

 optirun glxgears -info

=== Panel nVidia ===

Ne cherchez pas à l'utiliser en cliquant sur l'icône correspondante, dans votre menu, cela ne fonctionnera pas. 
Il vous faut le lancer ainsi - c'est le seul moyen ! - :

 optirun nvidia-settings -c :8

== Configuration supplémentaire ==

Il peut être utile d'informer Bumblebee d'utiliser le module 'nvidia', au lieu du module 'nouveau'. Par défaut, il utilise le pilote 'nouveau'.
Avec les droits administrateur, il faut d'abord modifier le fichier /etc/bumblebee/bumblebee.conf pour configurer la ligne 'DRIVER=' 

 DRIVER=nvidia

Redémarrer le service 'bumblebeed' !

 service bumblebeed restart

=== À chaque nouveau kernel ===

Pensez à faire courir à nouveau le module pour votre kernel, avec vos droits administrateur !
(si le système ne s'en occupe pas tout seul comme un grand :p )

==== par dkms ====

 dpkg-reconfigure nvidia-kernel-dkms

[[Category:Pilotes]]
[[Category:Nvidia]]

= Documentation alternative =

Vous pouvez retrouver un complément d'[http://wiki.debian.org/fr/Bumblebee informations sur la page wiki du projet Debian]...</text>
      <sha1>mvkp9eqaqge5pq0b21hnwzwpiuudvve</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5311</id>
      <parentid>5266</parentid>
      <timestamp>2013-07-23T15:20:06Z</timestamp>
      <contributor>
        <username>PengouinPdt</username>
        <id>249</id>
      </contributor>
      <comment>/* Configurez ! */</comment>
      <text xml:space="preserve" bytes="6378">= nVidia Optimus &amp; Bumblebee =

== Présentation ==

nVidia a créé une technologie hybride, appelée Optimus. Cette technologie a pour but d'utiliser la puce graphique intégrée, généralement de marque Intel, ainsi que le processeur graphique, couplée à la première puce, de marque nVidia. Cela permet de faire fonctionner le GPU nVidia, à la demande, lors de nécessités de fonctions 3D poussées (vidéos, jeux ...), et de &quot;rendre la main&quot; à l'IGP Intel, soulageant ainsi la batterie, pour le reste.

'''''Note :''' Nativement sous Linux, cette technologie n'est pas pleinement supportée. Officiellement, depuis la version 319.12, nVidia apporte son support, en phase bêta - cela nécessite de pouvoir connecter l'écran au GPU nVidia ; cette option est modifiable par certains bios récents. Si votre pilote est plus ancien, ou que vous n'êtes pas dans ce cas de configuration matérielle, cette page wiki est vraiment faite pour vous !'' 

Un développeur a créé un projet, nommé Bumblebee, qui nous apporte une certaine gestion de cette technologie. Elle n'est pas complètement gérée, mais est fonctionnelle ! Néanmoins, la gestion HDMI n'est pas accessible ...

=== Informations ===

La [http://wiki.debian.org/Bumblebee#From_repository page anglaise wiki du projet Debian] nous informe que les utilisateurs de Sid peuvent installer Bumblebee à partir des dépôts officiels Debian. 
Et, en effet, la [http://packages.debian.org/search?suite=sid&amp;searchon=names&amp;keywords=bumblebee recherche nous donne ce résultat pour Bumblebee] !
''Ce devrait bientôt être le cas pour la version Jessie du projet Debian !''

Depuis le 26.05.2013, cela semble aussi le cas pour les utilisateurs des dépôts [http://backports.debian.org/changes/wheezy-backports.html Wheezy-Backports] !

=== Vérification ===

Si vous voulez être sûr d'avoir une telle technologie, entrez la commande suivante dans votre terminal préféré :

  lspci | egrep 'VGA|3D|Display'

Si le système vous répond, ainsi, avec deux lignes, c'est donc bien votre cas !

 :~$ lspci | egrep 'VGA|3D|Display'
  00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
  01:00.0 VGA compatible controller: NVIDIA Corporation GF108 [GeForce GT 540M] (rev ff)

== Installation ==

'''NE SURTOUT PAS CHERCHER À INSTALLER LES PILOTES NVIDIA PAR TOUT AUTRE MÉTHODE !!!'''
Si jamais vous l'avez fait, désinstallez tout avant !

  apt-get remove --purge nvidia-* 

=== Par depôt ===

==== Dépôts officiels ====

Si vous êtes utilisateur de la version Wheezy du projet Debian, ajoutez donc les dépôts Wheezy-Backports, pour en profiter de le dernière version. ''Cela semble vrai depuis le 26.05.2013''. 

Si vous êtes utilisateur de la version Sid du projet Debian, sachez que la dernière version est disponible à partir des dépôts officiels Debian. ''Cela semble vrai depuis le 12.05.2013''. 


Donc, passez à la phase d'installation puis de configuration.

==== Dépôt non officiel ====

'''Note : ''(21.09.12)''''' Il semble à ce jour que les packages du projet Bumblebee ne soient plus à jour sur ce dépôt -  Si vous êtes utilisateur Sid ''(12.05.13)'' ou de Wheezy ''(26.05.13)'', utilisez de préférence les dépôts Debian - cf, ci-dessus !

Le projet est disponible, de manière non officielle, à partir du site http://suwako.nomanga.net/.

=== Installez ! ===

Mettez-à-jour votre système, et installez les binaires '''bumblebee''', et '''bumblebee-nvidia'''.

 apt-get update &amp;&amp; apt-get install bumblebee bumblebee-nvidia primus


=== Configurez ! ===

Il vous faut ensuite ajouter votre utilisateur au groupe bumblebee, en ayant les droits administrateur.

 adduser $USER bumblebee 

'''Redémarrer votre ordinateur ;-)'''

==== Gestion de la batterie ====

Pour gérer correctement l'énergie de la batterie lors de l'usage de la carte nVidia, il est nécessaire de créer le fichier '''/etc/modprobe.d/bbswitch.conf''' et d'y ajouter ceci :

  options bbswitch load_state=0 unload_state=0

Ensuite, il vous faut modifier le fichier '''/etc/bumblebee/bumblebee.conf''' et configurer les lignes 'PMMethod' ainsi : 
  PMMethod=bbswitch

Pensez à redémarrer le service bumblebee !

Pour tester le fonctionnement, vous pouvez utiliser cette commande en mode terminal :

&lt;blockquote&gt;
:~$ cat /proc/acpi/bbswitch 
0000:01:00.0 OFF

:~$ optirun glxgears &gt; /dev/null &amp;
[1] 4785

:~$ cat /proc/acpi/bbswitch 
0000:01:00.0 ON

:~$ [VGL] ERROR: in readback--
[VGL]    246: Window has been deleted by window manager

[1]+  Termine 1               optirun glxgears &gt; /dev/null

# Après avoir fermé la fenêtre de glxgears
:~$ cat /proc/acpi/bbswitch 
0000:01:00.0 OFF
&lt;/blockquote&gt;

== Utilisation ==

Vous pouvez être sûr que Bumblebee fonctionne grâce au binaire '''optirun'''.
Donc, pour activer la gestion du GPU nVidia, il faut précéder toute commande par l'usage de la commande 'optirun'.

 optirun [optirun-options] &lt;application&gt; [application-parameters]

Pour trouver la liste des options de optirun, vous pouvez, soit lire la page du manuel avec la commande '''man optirun''', soit exécuter :

    $ optirun --help

=== Test ===

Le premier test que vous pouvez faire est :

 optirun glxgears -info

=== Panel nVidia ===

Ne cherchez pas à l'utiliser en cliquant sur l'icône correspondante, dans votre menu, cela ne fonctionnera pas. 
Il vous faut le lancer ainsi - c'est le seul moyen ! - :

 optirun nvidia-settings -c :8

== Configuration supplémentaire ==

Il peut être utile d'informer Bumblebee d'utiliser le module 'nvidia', au lieu du module 'nouveau'. Par défaut, il utilise le pilote 'nouveau'.
Avec les droits administrateur, il faut d'abord modifier le fichier /etc/bumblebee/bumblebee.conf pour configurer la ligne 'DRIVER=' 

 DRIVER=nvidia

Redémarrer le service 'bumblebeed' !

 service bumblebeed restart

=== À chaque nouveau kernel ===

Pensez à faire courir à nouveau le module pour votre kernel, avec vos droits administrateur !
(si le système ne s'en occupe pas tout seul comme un grand :p )

==== par dkms ====

 dpkg-reconfigure nvidia-kernel-dkms

[[Category:Pilotes]]
[[Category:Nvidia]]

= Documentation alternative =

Vous pouvez retrouver un complément d'[http://wiki.debian.org/fr/Bumblebee informations sur la page wiki du projet Debian]...</text>
      <sha1>t6gzjwo9icge5jp41af1ul11lui8me6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5312</id>
      <parentid>5311</parentid>
      <timestamp>2013-07-23T15:21:08Z</timestamp>
      <contributor>
        <username>PengouinPdt</username>
        <id>249</id>
      </contributor>
      <minor/>
      <comment>/* Configuration supplémentaire */</comment>
      <text xml:space="preserve" bytes="6388">= nVidia Optimus &amp; Bumblebee =

== Présentation ==

nVidia a créé une technologie hybride, appelée Optimus. Cette technologie a pour but d'utiliser la puce graphique intégrée, généralement de marque Intel, ainsi que le processeur graphique, couplée à la première puce, de marque nVidia. Cela permet de faire fonctionner le GPU nVidia, à la demande, lors de nécessités de fonctions 3D poussées (vidéos, jeux ...), et de &quot;rendre la main&quot; à l'IGP Intel, soulageant ainsi la batterie, pour le reste.

'''''Note :''' Nativement sous Linux, cette technologie n'est pas pleinement supportée. Officiellement, depuis la version 319.12, nVidia apporte son support, en phase bêta - cela nécessite de pouvoir connecter l'écran au GPU nVidia ; cette option est modifiable par certains bios récents. Si votre pilote est plus ancien, ou que vous n'êtes pas dans ce cas de configuration matérielle, cette page wiki est vraiment faite pour vous !'' 

Un développeur a créé un projet, nommé Bumblebee, qui nous apporte une certaine gestion de cette technologie. Elle n'est pas complètement gérée, mais est fonctionnelle ! Néanmoins, la gestion HDMI n'est pas accessible ...

=== Informations ===

La [http://wiki.debian.org/Bumblebee#From_repository page anglaise wiki du projet Debian] nous informe que les utilisateurs de Sid peuvent installer Bumblebee à partir des dépôts officiels Debian. 
Et, en effet, la [http://packages.debian.org/search?suite=sid&amp;searchon=names&amp;keywords=bumblebee recherche nous donne ce résultat pour Bumblebee] !
''Ce devrait bientôt être le cas pour la version Jessie du projet Debian !''

Depuis le 26.05.2013, cela semble aussi le cas pour les utilisateurs des dépôts [http://backports.debian.org/changes/wheezy-backports.html Wheezy-Backports] !

=== Vérification ===

Si vous voulez être sûr d'avoir une telle technologie, entrez la commande suivante dans votre terminal préféré :

  lspci | egrep 'VGA|3D|Display'

Si le système vous répond, ainsi, avec deux lignes, c'est donc bien votre cas !

 :~$ lspci | egrep 'VGA|3D|Display'
  00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
  01:00.0 VGA compatible controller: NVIDIA Corporation GF108 [GeForce GT 540M] (rev ff)

== Installation ==

'''NE SURTOUT PAS CHERCHER À INSTALLER LES PILOTES NVIDIA PAR TOUT AUTRE MÉTHODE !!!'''
Si jamais vous l'avez fait, désinstallez tout avant !

  apt-get remove --purge nvidia-* 

=== Par depôt ===

==== Dépôts officiels ====

Si vous êtes utilisateur de la version Wheezy du projet Debian, ajoutez donc les dépôts Wheezy-Backports, pour en profiter de le dernière version. ''Cela semble vrai depuis le 26.05.2013''. 

Si vous êtes utilisateur de la version Sid du projet Debian, sachez que la dernière version est disponible à partir des dépôts officiels Debian. ''Cela semble vrai depuis le 12.05.2013''. 


Donc, passez à la phase d'installation puis de configuration.

==== Dépôt non officiel ====

'''Note : ''(21.09.12)''''' Il semble à ce jour que les packages du projet Bumblebee ne soient plus à jour sur ce dépôt -  Si vous êtes utilisateur Sid ''(12.05.13)'' ou de Wheezy ''(26.05.13)'', utilisez de préférence les dépôts Debian - cf, ci-dessus !

Le projet est disponible, de manière non officielle, à partir du site http://suwako.nomanga.net/.

=== Installez ! ===

Mettez-à-jour votre système, et installez les binaires '''bumblebee''', et '''bumblebee-nvidia'''.

 apt-get update &amp;&amp; apt-get install bumblebee bumblebee-nvidia primus


=== Configurez ! ===

Il vous faut ensuite ajouter votre utilisateur au groupe bumblebee, en ayant les droits administrateur.

 adduser $USER bumblebee 

'''Redémarrer votre ordinateur ;-)'''

==== Gestion de la batterie ====

Pour gérer correctement l'énergie de la batterie lors de l'usage de la carte nVidia, il est nécessaire de créer le fichier '''/etc/modprobe.d/bbswitch.conf''' et d'y ajouter ceci :

  options bbswitch load_state=0 unload_state=0

Ensuite, il vous faut modifier le fichier '''/etc/bumblebee/bumblebee.conf''' et configurer les lignes 'PMMethod' ainsi : 
  PMMethod=bbswitch

Pensez à redémarrer le service bumblebee !

Pour tester le fonctionnement, vous pouvez utiliser cette commande en mode terminal :

&lt;blockquote&gt;
:~$ cat /proc/acpi/bbswitch 
0000:01:00.0 OFF

:~$ optirun glxgears &gt; /dev/null &amp;
[1] 4785

:~$ cat /proc/acpi/bbswitch 
0000:01:00.0 ON

:~$ [VGL] ERROR: in readback--
[VGL]    246: Window has been deleted by window manager

[1]+  Termine 1               optirun glxgears &gt; /dev/null

# Après avoir fermé la fenêtre de glxgears
:~$ cat /proc/acpi/bbswitch 
0000:01:00.0 OFF
&lt;/blockquote&gt;

== Utilisation ==

Vous pouvez être sûr que Bumblebee fonctionne grâce au binaire '''optirun'''.
Donc, pour activer la gestion du GPU nVidia, il faut précéder toute commande par l'usage de la commande 'optirun'.

 optirun [optirun-options] &lt;application&gt; [application-parameters]

Pour trouver la liste des options de optirun, vous pouvez, soit lire la page du manuel avec la commande '''man optirun''', soit exécuter :

    $ optirun --help

=== Test ===

Le premier test que vous pouvez faire est :

 optirun glxgears -info

=== Panel nVidia ===

Ne cherchez pas à l'utiliser en cliquant sur l'icône correspondante, dans votre menu, cela ne fonctionnera pas. 
Il vous faut le lancer ainsi - c'est le seul moyen ! - :

 optirun nvidia-settings -c :8

== Configuration supplémentaire ==

Il peut être utile d'informer Bumblebee d'utiliser le module 'nvidia', au lieu du module 'nouveau'. Par défaut, il utilise le pilote 'nouveau'.
Avec les droits administrateur, il faut d'abord modifier le fichier '''/etc/bumblebee/bumblebee.conf''' pour configurer la ligne 'DRIVER=' 

 DRIVER=nvidia

Redémarrer le service 'bumblebeed' !

 service bumblebeed restart

=== À chaque nouveau kernel ===

Pensez à faire courir à nouveau le module pour votre kernel, avec vos droits administrateur !
''(si le système ne s'en occupe pas tout seul comme un grand :p )''

==== par dkms ====

 dpkg-reconfigure nvidia-kernel-dkms

[[Category:Pilotes]]
[[Category:Nvidia]]

= Documentation alternative =

Vous pouvez retrouver un complément d'[http://wiki.debian.org/fr/Bumblebee informations sur la page wiki du projet Debian]...</text>
      <sha1>38vywdgr9aoz6lddudfogvbyawag2ck</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5313</id>
      <parentid>5312</parentid>
      <timestamp>2013-07-23T15:29:28Z</timestamp>
      <contributor>
        <username>PengouinPdt</username>
        <id>249</id>
      </contributor>
      <text xml:space="preserve" bytes="6640">= nVidia Optimus &amp; Bumblebee =

== Présentation ==

nVidia a créé une technologie hybride, appelée Optimus. Cette technologie a pour but d'utiliser la puce graphique intégrée, généralement de marque Intel, ainsi que le processeur graphique, couplée à la première puce, de marque nVidia. Cela permet de faire fonctionner le GPU nVidia, à la demande, lors de nécessités de fonctions 3D poussées (vidéos, jeux ...), et de &quot;rendre la main&quot; à l'IGP Intel, soulageant ainsi la batterie, pour le reste.

'''''Note :''' Nativement sous Linux, cette technologie n'est pas pleinement supportée. Officiellement, depuis la version 319.12, nVidia apporte son support, en phase bêta - cela nécessite de pouvoir connecter l'écran au GPU nVidia ; cette option est modifiable par certains bios récents. Si votre pilote est plus ancien, ou que vous n'êtes pas dans ce cas de configuration matérielle, cette page wiki est vraiment faite pour vous !'' 

Un développeur a créé un projet, nommé Bumblebee, qui nous apporte une certaine gestion de cette technologie. Elle n'est pas complètement gérée, mais est fonctionnelle ! Néanmoins, la gestion HDMI n'est pas accessible ...

=== Informations ===

La [http://wiki.debian.org/Bumblebee#From_repository page anglaise wiki du projet Debian] nous informe que les utilisateurs de Sid peuvent installer Bumblebee à partir des dépôts officiels Debian. 
Et, en effet, la [http://packages.debian.org/search?suite=sid&amp;searchon=names&amp;keywords=bumblebee recherche nous donne ce résultat pour Bumblebee] !
''Ce devrait bientôt être le cas pour la version Jessie du projet Debian !''

Depuis le 26.05.2013, cela semble aussi le cas pour les utilisateurs des dépôts [http://backports.debian.org/changes/wheezy-backports.html Wheezy-Backports] !

=== Vérification ===

Si vous voulez être sûr d'avoir une telle technologie, entrez la commande suivante dans votre terminal préféré :

  lspci | egrep 'VGA|3D|Display'

Si le système vous répond, ainsi, avec deux lignes, c'est donc bien votre cas !

 :~$ lspci | egrep 'VGA|3D|Display'
  00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
  01:00.0 VGA compatible controller: NVIDIA Corporation GF108 [GeForce GT 540M] (rev ff)

== Installation ==

'''NE SURTOUT PAS CHERCHER À INSTALLER LES PILOTES NVIDIA PAR TOUT AUTRE MÉTHODE !!!'''
Si jamais vous l'avez fait, désinstallez tout avant !

  apt-get remove --purge nvidia-* 

=== Par depôt ===

==== Dépôts officiels ====

Si vous êtes utilisateur de la version Wheezy du projet Debian, ajoutez donc les dépôts Wheezy-Backports, pour en profiter de le dernière version. ''Cela semble vrai depuis le 26.05.2013''. 

Si vous êtes utilisateur de la version Sid du projet Debian, sachez que la dernière version est disponible à partir des dépôts officiels Debian. ''Cela semble vrai depuis le 12.05.2013''. 


Donc, passez à la phase d'installation puis de configuration.

==== Dépôt non officiel ====

'''Note : ''(21.09.12)''''' Il semble à ce jour que les packages du projet Bumblebee ne soient plus à jour sur ce dépôt -  Si vous êtes utilisateur Sid ''(12.05.13)'' ou de Wheezy ''(26.05.13)'', utilisez de préférence les dépôts Debian - cf, ci-dessus !

Le projet est disponible, de manière non officielle, à partir du site http://suwako.nomanga.net/.

=== Installez ! ===

Mettez-à-jour votre système, et installez les binaires '''bumblebee''', et '''bumblebee-nvidia'''.

 apt-get update &amp;&amp; apt-get install bumblebee bumblebee-nvidia primus


=== Configurez ! ===

Il vous faut ensuite ajouter votre utilisateur au groupe bumblebee, en ayant les droits administrateur.

 adduser $USER bumblebee 

'''Redémarrer votre ordinateur ;-)'''


== Utilisation ==

Vous pouvez être sûr que Bumblebee fonctionne grâce au binaire '''optirun'''.
Donc, pour activer la gestion du GPU nVidia, il faut précéder toute commande par l'usage de la commande 'optirun'.

 optirun [optirun-options] &lt;application&gt; [application-parameters]

Pour trouver la liste des options de optirun, vous pouvez, soit lire la page du manuel avec la commande '''man optirun''', soit exécuter :

    $ optirun --help

=== Test ===

Le premier test que vous pouvez faire est :

 optirun glxgears -info

=== Panel nVidia ===

Ne cherchez pas à l'utiliser en cliquant sur l'icône correspondante, dans votre menu, cela ne fonctionnera pas. 
Il vous faut le lancer ainsi - c'est le seul moyen ! - :

 optirun nvidia-settings -c :8

=== Redémarrer le service blumbebee ===

Selon votre version de debian :

* Soit : /etc/init.d/bumblebeed restart
* Soit : service bumblebeed restart

== Configurations supplémentaires ==

=== Utilisation du pilote nvidia ===

Il peut être utile d'informer Bumblebee d'utiliser le module 'nvidia', au lieu du module 'nouveau'. Par défaut, il utilise le pilote 'nouveau'.
Avec les droits administrateur, il faut d'abord modifier le fichier '''/etc/bumblebee/bumblebee.conf''' pour configurer la ligne 'DRIVER=' 

 DRIVER=nvidia

[[#Red.C3.A9marrer_le_service_blumbebee|Redémarrer le service 'bumblebeed']] !

==== À chaque nouveau kernel ====

Pensez à faire courir à nouveau le module pour votre kernel, avec vos droits administrateur !
''(si le système ne s'en occupe pas tout seul comme un grand :p )''

===== par dkms =====

 dpkg-reconfigure nvidia-kernel-dkms

=== Gestion de la batterie ===

Pour gérer correctement l'énergie de la batterie lors de l'usage de la carte nVidia, il est nécessaire de créer le fichier '''/etc/modprobe.d/bbswitch.conf''' et d'y ajouter ceci :

  options bbswitch load_state=0 unload_state=0

Ensuite, il vous faut modifier le fichier '''/etc/bumblebee/bumblebee.conf''' et configurer les lignes 'PMMethod' ainsi : 
  PMMethod=bbswitch

Pensez à [[#Red.C3.A9marrer_le_service_blumbebee|redémarrer le service bumblebee]] !

Pour tester le fonctionnement, vous pouvez utiliser cette commande en mode terminal :

&lt;blockquote&gt;
:~$ cat /proc/acpi/bbswitch 
0000:01:00.0 OFF

:~$ optirun glxgears &gt; /dev/null &amp;
[1] 4785

:~$ cat /proc/acpi/bbswitch 
0000:01:00.0 ON

:~$ [VGL] ERROR: in readback--
[VGL]    246: Window has been deleted by window manager

[1]+  Termine 1               optirun glxgears &gt; /dev/null

# Après avoir fermé la fenêtre de glxgears
:~$ cat /proc/acpi/bbswitch 
0000:01:00.0 OFF
&lt;/blockquote&gt;



[[Category:Pilotes]]
[[Category:Nvidia]]

= Documentation alternative =

Vous pouvez retrouver un complément d'[http://wiki.debian.org/fr/Bumblebee informations sur la page wiki du projet Debian]...</text>
      <sha1>ql3y7el7azjhquvmb1wsum4yhukiw6n</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5462</id>
      <parentid>5313</parentid>
      <timestamp>2013-11-27T20:48:37Z</timestamp>
      <contributor>
        <username>PengouinPdt</username>
        <id>249</id>
      </contributor>
      <comment>Ajout chapitre des erreurs ...</comment>
      <text xml:space="preserve" bytes="7287">= nVidia Optimus &amp; Bumblebee =

== Présentation ==

nVidia a créé une technologie hybride, appelée Optimus. Cette technologie a pour but d'utiliser la puce graphique intégrée, généralement de marque Intel, ainsi que le processeur graphique, couplée à la première puce, de marque nVidia. Cela permet de faire fonctionner le GPU nVidia, à la demande, lors de nécessités de fonctions 3D poussées (vidéos, jeux ...), et de &quot;rendre la main&quot; à l'IGP Intel, soulageant ainsi la batterie, pour le reste.

'''''Note :''' Nativement sous Linux, cette technologie n'est pas pleinement supportée. Officiellement, depuis la version 319.12, nVidia apporte son support, en phase bêta - cela nécessite de pouvoir connecter l'écran au GPU nVidia ; cette option est modifiable par certains bios récents. Si votre pilote est plus ancien, ou que vous n'êtes pas dans ce cas de configuration matérielle, cette page wiki est vraiment faite pour vous !'' 

Un développeur a créé un projet, nommé Bumblebee, qui nous apporte une certaine gestion de cette technologie. Elle n'est pas complètement gérée, mais est fonctionnelle ! Néanmoins, la gestion HDMI n'est pas accessible ...

=== Informations ===

La [http://wiki.debian.org/Bumblebee#From_repository page anglaise wiki du projet Debian] nous informe que les utilisateurs de Sid peuvent installer Bumblebee à partir des dépôts officiels Debian. 
Et, en effet, la [http://packages.debian.org/search?suite=sid&amp;searchon=names&amp;keywords=bumblebee recherche nous donne ce résultat pour Bumblebee] !
''Ce devrait bientôt être le cas pour la version Jessie du projet Debian !''

Depuis le 26.05.2013, cela semble aussi le cas pour les utilisateurs des dépôts [http://backports.debian.org/changes/wheezy-backports.html Wheezy-Backports] !

=== Vérification ===

Si vous voulez être sûr d'avoir une telle technologie, entrez la commande suivante dans votre terminal préféré :

  lspci | egrep 'VGA|3D|Display'

Si le système vous répond, ainsi, avec deux lignes, c'est donc bien votre cas !

 :~$ lspci | egrep 'VGA|3D|Display'
  00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
  01:00.0 VGA compatible controller: NVIDIA Corporation GF108 [GeForce GT 540M] (rev ff)

== Installation ==

'''NE SURTOUT PAS CHERCHER À INSTALLER LES PILOTES NVIDIA PAR TOUT AUTRE MÉTHODE !!!'''
Si jamais vous l'avez fait, désinstallez tout avant !

  apt-get remove --purge nvidia-* 

=== Par depôt ===

==== Dépôts officiels ====

Si vous êtes utilisateur de la version Wheezy du projet Debian, ajoutez donc les dépôts Wheezy-Backports, pour en profiter de le dernière version. ''Cela semble vrai depuis le 26.05.2013''. 

Si vous êtes utilisateur de la version Sid du projet Debian, sachez que la dernière version est disponible à partir des dépôts officiels Debian. ''Cela semble vrai depuis le 12.05.2013''. 


Donc, passez à la phase d'installation puis de configuration.

==== Dépôt non officiel ====

'''Note : ''(21.09.12)''''' Il semble à ce jour que les packages du projet Bumblebee ne soient plus à jour sur ce dépôt -  Si vous êtes utilisateur Sid ''(12.05.13)'' ou de Wheezy ''(26.05.13)'', utilisez de préférence les dépôts Debian - cf, ci-dessus !

Le projet est disponible, de manière non officielle, à partir du site http://suwako.nomanga.net/.

=== Installez ! ===

Mettez-à-jour votre système, et installez les binaires '''bumblebee''', et '''bumblebee-nvidia'''.

 apt-get update &amp;&amp; apt-get install bumblebee bumblebee-nvidia primus


=== Configurez ! ===

Il vous faut ensuite ajouter votre utilisateur au groupe bumblebee, en ayant les droits administrateur.

 adduser $USER bumblebee 

'''Redémarrer votre ordinateur ;-)'''


== Utilisation ==

Vous pouvez être sûr que Bumblebee fonctionne grâce au binaire '''optirun'''.
Donc, pour activer la gestion du GPU nVidia, il faut précéder toute commande par l'usage de la commande 'optirun'.

 optirun [optirun-options] &lt;application&gt; [application-parameters]

Pour trouver la liste des options de optirun, vous pouvez, soit lire la page du manuel avec la commande '''man optirun''', soit exécuter :

    $ optirun --help

=== Test ===

Le premier test que vous pouvez faire est :

 optirun glxgears -info

=== Panel nVidia ===

Ne cherchez pas à l'utiliser en cliquant sur l'icône correspondante, dans votre menu, cela ne fonctionnera pas. 
Il vous faut le lancer ainsi - c'est le seul moyen ! - :

 optirun nvidia-settings -c :8

=== Redémarrer le service blumbebee ===

Selon votre version de debian :

* Soit : /etc/init.d/bumblebeed restart
* Soit : service bumblebeed restart

== Configurations supplémentaires ==

=== Utilisation du pilote nvidia ===

Il peut être utile d'informer Bumblebee d'utiliser le module 'nvidia', au lieu du module 'nouveau'. Par défaut, il utilise le pilote 'nouveau'.
Avec les droits administrateur, il faut d'abord modifier le fichier '''/etc/bumblebee/bumblebee.conf''' pour configurer la ligne 'DRIVER=' 

 DRIVER=nvidia

[[#Red.C3.A9marrer_le_service_blumbebee|Redémarrer le service 'bumblebeed']] !

==== À chaque nouveau kernel ====

Pensez à faire courir à nouveau le module pour votre kernel, avec vos droits administrateur !
''(si le système ne s'en occupe pas tout seul comme un grand :p )''

===== par dkms =====

 dpkg-reconfigure nvidia-kernel-dkms

=== Gestion de la batterie ===

Pour gérer correctement l'énergie de la batterie lors de l'usage de la carte nVidia, il est nécessaire de créer le fichier '''/etc/modprobe.d/bbswitch.conf''' et d'y ajouter ceci :

  options bbswitch load_state=0 unload_state=0

Ensuite, il vous faut modifier le fichier '''/etc/bumblebee/bumblebee.conf''' et configurer les lignes 'PMMethod' ainsi : 
  PMMethod=bbswitch

Pensez à [[#Red.C3.A9marrer_le_service_blumbebee|redémarrer le service bumblebee]] !

Pour tester le fonctionnement, vous pouvez utiliser cette commande en mode terminal :

&lt;blockquote&gt;
:~$ cat /proc/acpi/bbswitch 
0000:01:00.0 OFF

:~$ optirun glxgears &gt; /dev/null &amp;
[1] 4785

:~$ cat /proc/acpi/bbswitch 
0000:01:00.0 ON

:~$ [VGL] ERROR: in readback--
[VGL]    246: Window has been deleted by window manager

[1]+  Termine 1               optirun glxgears &gt; /dev/null

# Après avoir fermé la fenêtre de glxgears
:~$ cat /proc/acpi/bbswitch 
0000:01:00.0 OFF
&lt;/blockquote&gt;

== Erreurs ==

=== libturbojpeg.so ===

Si vous avez cette erreur, lorsque vous lancez 'optirun' :
&lt;blockquote&gt;
error while loading shared libraries: libturbojpeg.so: cannot open shared object file: No such file or directory
&lt;/blockquote&gt;

Si votre architecture est 32 bits, tapez dans votre terminal console préféré, cette commande avec les droits administrateurs :
 ln -s /usr/lib/i386-linux-gnu/libturbojpeg.so.0 /usr/lib/i386-linux-gnu/libturbojpeg.so

Si votre architecture est 64 bits, tapez cette commande-ci, toujours avec les droits admins :
 ln -s /usr/lib/x86_64-linux-gnu/libturbojpeg.so.0 /usr/lib/x86_64-linux-gnu/libturbojpeg.so


[[Category:Pilotes]]
[[Category:Nvidia]]

= Documentation alternative =

Vous pouvez retrouver un complément d'[http://wiki.debian.org/fr/Bumblebee informations sur la page wiki du projet Debian]...</text>
      <sha1>ksevmi338573c1e0eicr7ujf7ts7812</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5702</id>
      <parentid>5462</parentid>
      <timestamp>2014-08-05T18:25:24Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <comment>/* Dépôts officiels */</comment>
      <text xml:space="preserve" bytes="7295">= nVidia Optimus &amp; Bumblebee =

== Présentation ==

nVidia a créé une technologie hybride, appelée Optimus. Cette technologie a pour but d'utiliser la puce graphique intégrée, généralement de marque Intel, ainsi que le processeur graphique, couplée à la première puce, de marque nVidia. Cela permet de faire fonctionner le GPU nVidia, à la demande, lors de nécessités de fonctions 3D poussées (vidéos, jeux ...), et de &quot;rendre la main&quot; à l'IGP Intel, soulageant ainsi la batterie, pour le reste.

'''''Note :''' Nativement sous Linux, cette technologie n'est pas pleinement supportée. Officiellement, depuis la version 319.12, nVidia apporte son support, en phase bêta - cela nécessite de pouvoir connecter l'écran au GPU nVidia ; cette option est modifiable par certains bios récents. Si votre pilote est plus ancien, ou que vous n'êtes pas dans ce cas de configuration matérielle, cette page wiki est vraiment faite pour vous !'' 

Un développeur a créé un projet, nommé Bumblebee, qui nous apporte une certaine gestion de cette technologie. Elle n'est pas complètement gérée, mais est fonctionnelle ! Néanmoins, la gestion HDMI n'est pas accessible ...

=== Informations ===

La [http://wiki.debian.org/Bumblebee#From_repository page anglaise wiki du projet Debian] nous informe que les utilisateurs de Sid peuvent installer Bumblebee à partir des dépôts officiels Debian. 
Et, en effet, la [http://packages.debian.org/search?suite=sid&amp;searchon=names&amp;keywords=bumblebee recherche nous donne ce résultat pour Bumblebee] !
''Ce devrait bientôt être le cas pour la version Jessie du projet Debian !''

Depuis le 26.05.2013, cela semble aussi le cas pour les utilisateurs des dépôts [http://backports.debian.org/changes/wheezy-backports.html Wheezy-Backports] !

=== Vérification ===

Si vous voulez être sûr d'avoir une telle technologie, entrez la commande suivante dans votre terminal préféré :

  lspci | egrep 'VGA|3D|Display'

Si le système vous répond, ainsi, avec deux lignes, c'est donc bien votre cas !

 :~$ lspci | egrep 'VGA|3D|Display'
  00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
  01:00.0 VGA compatible controller: NVIDIA Corporation GF108 [GeForce GT 540M] (rev ff)

== Installation ==

'''NE SURTOUT PAS CHERCHER À INSTALLER LES PILOTES NVIDIA PAR TOUT AUTRE MÉTHODE !!!'''
Si jamais vous l'avez fait, désinstallez tout avant !

  apt-get remove --purge nvidia-* 

=== Par depôt ===

==== Dépôts officiels ====

Si vous êtes utilisateur de la version Wheezy du projet Debian, ajoutez donc les dépôts Wheezy-Backports, pour profiter de la dernière version. ''Cela semble vrai depuis le 26.05.2013''. 

Si vous êtes utilisateur de la version Sid ou Testing du projet Debian, sachez que la dernière version est disponible à partir des dépôts officiels Debian. ''Cela semble vrai depuis le 12.05.2013''. 


Donc, passez à la phase d'installation puis de configuration.

==== Dépôt non officiel ====

'''Note : ''(21.09.12)''''' Il semble à ce jour que les packages du projet Bumblebee ne soient plus à jour sur ce dépôt -  Si vous êtes utilisateur Sid ''(12.05.13)'' ou de Wheezy ''(26.05.13)'', utilisez de préférence les dépôts Debian - cf, ci-dessus !

Le projet est disponible, de manière non officielle, à partir du site http://suwako.nomanga.net/.

=== Installez ! ===

Mettez-à-jour votre système, et installez les binaires '''bumblebee''', et '''bumblebee-nvidia'''.

 apt-get update &amp;&amp; apt-get install bumblebee bumblebee-nvidia primus


=== Configurez ! ===

Il vous faut ensuite ajouter votre utilisateur au groupe bumblebee, en ayant les droits administrateur.

 adduser $USER bumblebee 

'''Redémarrer votre ordinateur ;-)'''


== Utilisation ==

Vous pouvez être sûr que Bumblebee fonctionne grâce au binaire '''optirun'''.
Donc, pour activer la gestion du GPU nVidia, il faut précéder toute commande par l'usage de la commande 'optirun'.

 optirun [optirun-options] &lt;application&gt; [application-parameters]

Pour trouver la liste des options de optirun, vous pouvez, soit lire la page du manuel avec la commande '''man optirun''', soit exécuter :

    $ optirun --help

=== Test ===

Le premier test que vous pouvez faire est :

 optirun glxgears -info

=== Panel nVidia ===

Ne cherchez pas à l'utiliser en cliquant sur l'icône correspondante, dans votre menu, cela ne fonctionnera pas. 
Il vous faut le lancer ainsi - c'est le seul moyen ! - :

 optirun nvidia-settings -c :8

=== Redémarrer le service blumbebee ===

Selon votre version de debian :

* Soit : /etc/init.d/bumblebeed restart
* Soit : service bumblebeed restart

== Configurations supplémentaires ==

=== Utilisation du pilote nvidia ===

Il peut être utile d'informer Bumblebee d'utiliser le module 'nvidia', au lieu du module 'nouveau'. Par défaut, il utilise le pilote 'nouveau'.
Avec les droits administrateur, il faut d'abord modifier le fichier '''/etc/bumblebee/bumblebee.conf''' pour configurer la ligne 'DRIVER=' 

 DRIVER=nvidia

[[#Red.C3.A9marrer_le_service_blumbebee|Redémarrer le service 'bumblebeed']] !

==== À chaque nouveau kernel ====

Pensez à faire courir à nouveau le module pour votre kernel, avec vos droits administrateur !
''(si le système ne s'en occupe pas tout seul comme un grand :p )''

===== par dkms =====

 dpkg-reconfigure nvidia-kernel-dkms

=== Gestion de la batterie ===

Pour gérer correctement l'énergie de la batterie lors de l'usage de la carte nVidia, il est nécessaire de créer le fichier '''/etc/modprobe.d/bbswitch.conf''' et d'y ajouter ceci :

  options bbswitch load_state=0 unload_state=0

Ensuite, il vous faut modifier le fichier '''/etc/bumblebee/bumblebee.conf''' et configurer les lignes 'PMMethod' ainsi : 
  PMMethod=bbswitch

Pensez à [[#Red.C3.A9marrer_le_service_blumbebee|redémarrer le service bumblebee]] !

Pour tester le fonctionnement, vous pouvez utiliser cette commande en mode terminal :

&lt;blockquote&gt;
:~$ cat /proc/acpi/bbswitch 
0000:01:00.0 OFF

:~$ optirun glxgears &gt; /dev/null &amp;
[1] 4785

:~$ cat /proc/acpi/bbswitch 
0000:01:00.0 ON

:~$ [VGL] ERROR: in readback--
[VGL]    246: Window has been deleted by window manager

[1]+  Termine 1               optirun glxgears &gt; /dev/null

# Après avoir fermé la fenêtre de glxgears
:~$ cat /proc/acpi/bbswitch 
0000:01:00.0 OFF
&lt;/blockquote&gt;

== Erreurs ==

=== libturbojpeg.so ===

Si vous avez cette erreur, lorsque vous lancez 'optirun' :
&lt;blockquote&gt;
error while loading shared libraries: libturbojpeg.so: cannot open shared object file: No such file or directory
&lt;/blockquote&gt;

Si votre architecture est 32 bits, tapez dans votre terminal console préféré, cette commande avec les droits administrateurs :
 ln -s /usr/lib/i386-linux-gnu/libturbojpeg.so.0 /usr/lib/i386-linux-gnu/libturbojpeg.so

Si votre architecture est 64 bits, tapez cette commande-ci, toujours avec les droits admins :
 ln -s /usr/lib/x86_64-linux-gnu/libturbojpeg.so.0 /usr/lib/x86_64-linux-gnu/libturbojpeg.so


[[Category:Pilotes]]
[[Category:Nvidia]]

= Documentation alternative =

Vous pouvez retrouver un complément d'[http://wiki.debian.org/fr/Bumblebee informations sur la page wiki du projet Debian]...</text>
      <sha1>h9cz7w4udsydvuhm4ywsbx5j8r3vnqr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Netfilter/Iptables introduction</title>
    <ns>0</ns>
    <id>717</id>
    <revision>
      <id>3175</id>
      <timestamp>2011-08-04T14:40:31Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « Le document qui suit est une introduction à la mise en place d'un pare-feu filtrant à l'aide de la commande iptables.  == Introduction ==  Netfilter/IpTables est une soluti... »</comment>
      <text xml:space="preserve" bytes="9564">Le document qui suit est une introduction à la mise en place d'un pare-feu filtrant à l'aide de la commande iptables.

== Introduction ==

Netfilter/IpTables est une solution complète de firewall.

Netfilter est le module qui apporte à Linux les fonctions de pare-feu, de traduction d'adresse et d'historisation du trafic réseau. Netfilter fonctionne en mode noyau. Il intercepte et manipule les paquets IP avant et après le routage.

Iptables Iptables est un logiciel libre de l'espace utilisateur Linux. C'est la commande qui permet à un administrateur réseaux de configurer Netfilter en espace utilisateur. Iptables configure la gestion des paquets réseaux IPv4. Pour la gestion des paquets réseaux IPv6, on utilise la commande ip6tables.

Différentes tables peuvent être définies. Chaque table contient plusieurs chaînes prédéfinies et peut aussi contenir des chaînes définies par l'utilisateur.

== Préambule ==

En principe, le paquet 'iptables' est installé d'origine sous Debian mais si ce n'était pas le cas, rien de plus simple à faire :

 # apt-get install iptables

La majeure partie des commandes se feront à partir de la console.

Il est recommandé de ne pas faire cette installation, ni une éventuelle modification par le biais de SSH, mais en &quot;direct&quot; machine. Au cas ou vous envisageriez de le faire via SSH, pensez à autoriser la connexion SSH avant d'interdire quoi que ce soit...

Ces commandes seront entrées sous la forme :
 login@nom_machine:~$ sudo la_commande_à_taper
Ou
 root@nom_machine:~# la_commande_à_taper

Il est préférable d'utiliser '[[Root-su-sudo#La_commande_sudo|sudo]]' plutôt que de taper en tant que 'root', pour des raisons de sécurité mais il est possible que certaines commandes ne soient pas prises en compte de cette façon. Il vous faudra alors taper en tant que 'root' (su et mot de passe = # au lieu de $).

== Installation ==

A l'origine, le pare-feu est installé mais il est ouvert à toutes les communications, c'est en quelque sorte, une 'passoire' et de ce fait, il ne rempli pas ses objectifs.
Dans un premier temps, il va nous falloir installer un 'script' qui sera le &quot;donneur d'ordre&quot; 

Créez le fichier 'parefeu' :

 touch /etc/init.d/parefeu

Rendez ce fichier (pour l'instant, vide) exécutable avec :

 chmod +x /etc/init.d/parefeu

Editez le fichier (nano, vim, etc.)

 nano /etc/init.d/parefeu

&lt;code bash&gt;
#!/bin/sh

### BEGIN INIT INFO
# Provides:		iptables
# Required-Start:
# Should-Start:
# Required-Stop:
# Should-Stop:
# Default-Start:	2 3 4 5
# Default-Stop:	 	0 1 6
# Short-description:	iptables
# Description: 		Firewall
### END INIT INFO

# chargement/déchargement d'iptables

case &quot;$1&quot; in
'start')
/sbin/iptables-restore &lt; /etc/config_parefeu
RETVAL=$?
;;
'stop')
/sbin/iptables-save &gt; /etc/config_parefeu
RETVAL=$?
;;
'clean')
# clean le parefeu pendant que la machine tourne
# ça peut être une faille de sécurite si on l'exécute lors de l'extinction avant l'arrêt des interfaces
# pensez à refaire un start après sinon la sauvegarde se fera automatiquement à l'extinction
/sbin/iptables -t filter -F
/sbin/iptables -t nat -F
/sbin/iptables -t mangle -F
/sbin/iptables -t raw -F
/sbin/iptables -t filter -P INPUT ACCEPT
/sbin/iptables -t filter -P OUTPUT ACCEPT
/sbin/iptables -t filter -P FORWARD ACCEPT
/sbin/iptables -t nat -P PREROUTING ACCEPT
/sbin/iptables -t nat -P POSTROUTING ACCEPT
/sbin/iptables -t nat -P OUTPUT ACCEPT
/sbin/iptables -t mangle -P PREROUTING ACCEPT
/sbin/iptables -t mangle -P OUTPUT ACCEPT
/sbin/iptables -t mangle -P POSTROUTING ACCEPT
/sbin/iptables -t mangle -P FORWARD ACCEPT
/sbin/iptables -t mangle -P INPUT ACCEPT
/sbin/iptables -t raw -P OUTPUT ACCEPT
/sbin/iptables -t raw -P PREROUTING ACCEPT
RETVAL=$?
;;
'restart')
$0 stop &amp;&amp; $0 start
RETVAL=$?
;;
*)
echo &quot;Usage: $0 { start | stop | restart | clean}&quot;
RETVAL=1
;;
esac
exit $RETVAL 
&lt;/code&gt;

Sauvegardez

Réinitialiser le pare-feu à blanc avec :

 /etc/init.d/parefeu clean

== Configuration ==

Tapez les séquences suivantes (une à la fois) suivi de 'Entrée'

=== &quot;Pour un hôte (station ou serveur) non routeur&quot;: ===

 iptables -t filter -P INPUT DROP
 iptables -t filter -P FORWARD DROP
 iptables -t filter -P OUTPUT ACCEPT
 iptables -A INPUT -i lo -j ACCEPT
 iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Si on veut un serveur FTP
 iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT

Si on souhaite utiliser SSH
 iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

Si on souhaite installer un serveur Web
 iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

Si on veut rendre CUPS accessible
 iptables -A INPUT -p tcp -m tcp --dport 631 -j ACCEPT

Si on souhaite utiliser Jabber
 iptables -A INPUT -p tcp -m tcp --dport 5222 -j ACCEPT

=== &quot;Pour une machine faisant office de routeur avec NAT&quot; : ===

 iptables -t filter -P INPUT DROP
 iptables -t filter -P FORWARD DROP
 iptables -t filter -P OUTPUT ACCEPT
 iptables -A INPUT -i ethx -j ACCEPT
 iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
 iptables -A INPUT -i lo -j ACCEPT
 iptables -A INPUT -p icmp -j ACCEPT

Si on veut un serveur FTP:
 iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT

Si on souhaite utiliser SSH:
 iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

Si on souhaite installer un serveur Web:
 iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

Si on veut rendre CUPS accessible:
 iptables -A INPUT -p tcp -m tcp --dport 631 -j ACCEPT

Si on souhaite utiliser Jabber:
 iptables -A INPUT -p tcp -m tcp --dport 5222 -j ACCEPT

Commandes indispensables pour faire du routage:
 iptables -A FORWARD -i ethy -o ethx -m state --state RELATED,ESTABLISHED -j ACCEPT
 iptables -A FORWARD -o ethy -j ACCEPT
 iptables -t nat -A POSTROUTING -o ethy -j MASQUERADE

Où 
ethx correspond à l'interface du LAN
et 
ethy correspond à l'interface relié à Internet (ou à votre &quot;box)

== Sauvegarde et automatisation ==

Sauvegardez le pare-feu une première fois (simulation d'un signal d'arrêt) avec :
 /etc/init.d/parefeu stop

Activez 'parefeu' avec (Respectez bien les espacements et les points):
 update-rc.d parefeu start XX S . stop YY 0 6 .

Remplacez XX par le nombre immédiatement inférieur à celui qui indique la priorité de 'networking' dans /etc/rcS.d.
 $ ls /etc/rcS.d | grep S**networking 
(renvoie chez moi &quot;S15networking&quot;. Il conviendra donc de remplacer XX par 14

Remplacez YY par le nombre immédiatement supérieur à celui qui indique la priorité de 'networking' dans /etc/rc0.d 
 $ ls /etc/rc0.d | grep K**networking
(renvoie chez moi &quot;K07networking&quot;. Il conviendra donc de remplacer YY par 08

Ainsi, le parefeu sera actif avant l'activation des interfaces réseau configurées en auto dans /etc/network/interfaces et le restera jusqu'à leur désactivation

== Modifications ==

Nous allons aborder maintenant la façon de modifier notre pare-feu

=== Ajouter une règle : ===

- on connaît le nom du port à autoriser, taper :
 iptables -A INPUT -p tcp -m tcp --dport www -J ACCEPT (où 'www' est le nom du serveur http)

- on connaît le numéro du port, taper :
 iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT (où '80' est le N° de ce même http)

Pour connaître le numéro d'un grand nombre de port, tapez :
 less /etc/services

Pour les explications des différentes options, vous pourrez avantageusement consulter :
man iptables
ou
iptables --help

=== Enlever une règle : ===

taper ce qui suit pour connaître le numéro de ligne de cette règle 

 iptables -L --line-numbers

puis taper 
 iptables -D INPUT (ou FORWARD) N° (où 'N°' doit être le chiffre ou nombre en tête de la ligne à supprimer)

Vous pourrez modifier l'exemple présenté plus haut à votre convenance (ajouter ou retirer ce que vous voudrez).
Toutefois, il convient de ne pas supprimer les deux lignes suivantes :

 -A INPUT -i lo -j ACCEPT ((Ce sont les communications IP entre processus locaux s'exécutant sur la machine et c'est critique)).
 -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT ((ça permet le retour vers la machine des infos demandées auprès des sites web. En l'absence de cette règle, la navigation deviendrait difficile. C'est relativement important )).

Après chaque modification, il vous faudra sauvegarder de nouveau votre pare-feu avec :

 /etc/init.d/parefeu stop
ou attendre un redémarrage qui fera la même chose automatiquement.

Si vous voulez revenir à l'état que vous aviez au présent démarrage, vous tapez :

 /etc/init.d/parefeu start

Si vous voulez revenir à un pare-feu vierge, vous tapez :

 /etc/init.d/parefeu clean

Ce qui précède concerne la partie 'Filter' d'un pare-feu. Ça assure un minimum de protection mais c'est loin d'être exhaustif.
Je laisse à d'autres, plus 'pointus' que moi, le soin d'expliquer les parties plus complexes, telles que Raw, Mangle et Nat.
J'espère que ce 'tuto', réservé aux débutants, vous aura permis de mieux appréhender le pare-feu sous Debian.

L'aide de tous les amis du forum et particulièrement celle du Papa de Lillo, a été indispensable à sa rédaction. Merci à eux !

== Liens externes ==

* [https://www.debian-fr.org/installation-parefeu-iptables-pour-les-nuls-t1901.html T&amp;A d'ou provient cet article]
* [http://www.debian-fr.org/digression-installation-parefeu-iptables-pour-les-nuls-t26303.html Discussion]
* man iptables {{fr}} [http://www.delafond.org/traducmanfr/man/man8/iptables.8.html ICI] ou dans votre console...
* {{fr}} [http://wiki.debian.org/iptables iptables sur debian.org]</text>
      <sha1>h5nmtwrq47s5pt0tj4dzlvoqc593d3r</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3177</id>
      <parentid>3175</parentid>
      <timestamp>2011-08-04T15:20:11Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="9591">Le document qui suit est une introduction à la mise en place d'un pare-feu filtrant à l'aide de la commande iptables.

== Introduction ==

Netfilter/IpTables est une solution complète de firewall.

Netfilter est le module qui apporte à Linux les fonctions de pare-feu, de traduction d'adresse et d'historisation du trafic réseau. Netfilter fonctionne en mode noyau. Il intercepte et manipule les paquets IP avant et après le routage.

Iptables Iptables est un logiciel libre de l'espace utilisateur Linux. C'est la commande qui permet à un administrateur réseaux de configurer Netfilter en espace utilisateur. Iptables configure la gestion des paquets réseaux IPv4. Pour la gestion des paquets réseaux IPv6, on utilise la commande ip6tables.

Différentes tables peuvent être définies. Chaque table contient plusieurs chaînes prédéfinies et peut aussi contenir des chaînes définies par l'utilisateur.

== Préambule ==

En principe, le paquet 'iptables' est installé d'origine sous Debian mais si ce n'était pas le cas, rien de plus simple à faire :

 # apt-get install iptables

La majeure partie des commandes se feront à partir de la console.

Il est recommandé de ne pas faire cette installation, ni une éventuelle modification par le biais de SSH, mais en &quot;direct&quot; machine. Au cas ou vous envisageriez de le faire via SSH, pensez à autoriser la connexion SSH avant d'interdire quoi que ce soit...

Ces commandes seront entrées sous la forme :
 login@nom_machine:~$ sudo la_commande_à_taper
Ou
 root@nom_machine:~# la_commande_à_taper

Il est préférable d'utiliser '[[Root-su-sudo#La_commande_sudo|sudo]]' plutôt que de taper en tant que 'root', pour des raisons de sécurité mais il est possible que certaines commandes ne soient pas prises en compte de cette façon. Il vous faudra alors taper en tant que 'root' (su et mot de passe = # au lieu de $).

== Installation ==

A l'origine, le pare-feu est installé mais il est ouvert à toutes les communications, c'est en quelque sorte, une 'passoire' et de ce fait, il ne rempli pas ses objectifs.
Dans un premier temps, il va nous falloir installer un 'script' qui sera le &quot;donneur d'ordre&quot; 

Créez le fichier 'parefeu' :

 touch /etc/init.d/parefeu

Rendez ce fichier (pour l'instant, vide) exécutable avec :

 chmod +x /etc/init.d/parefeu

Editez le fichier (nano, vim, etc.)

 nano /etc/init.d/parefeu

&lt;code bash&gt;
#!/bin/sh

### BEGIN INIT INFO
# Provides:		iptables
# Required-Start:
# Should-Start:
# Required-Stop:
# Should-Stop:
# Default-Start:	2 3 4 5
# Default-Stop:	 	0 1 6
# Short-description:	iptables
# Description: 		Firewall
### END INIT INFO

# chargement/déchargement d'iptables

case &quot;$1&quot; in
'start')
/sbin/iptables-restore &lt; /etc/config_parefeu
RETVAL=$?
;;
'stop')
/sbin/iptables-save &gt; /etc/config_parefeu
RETVAL=$?
;;
'clean')
# clean le parefeu pendant que la machine tourne
# ça peut être une faille de sécurite si on l'exécute lors de l'extinction avant l'arrêt des interfaces
# pensez à refaire un start après sinon la sauvegarde se fera automatiquement à l'extinction
/sbin/iptables -t filter -F
/sbin/iptables -t nat -F
/sbin/iptables -t mangle -F
/sbin/iptables -t raw -F
/sbin/iptables -t filter -P INPUT ACCEPT
/sbin/iptables -t filter -P OUTPUT ACCEPT
/sbin/iptables -t filter -P FORWARD ACCEPT
/sbin/iptables -t nat -P PREROUTING ACCEPT
/sbin/iptables -t nat -P POSTROUTING ACCEPT
/sbin/iptables -t nat -P OUTPUT ACCEPT
/sbin/iptables -t mangle -P PREROUTING ACCEPT
/sbin/iptables -t mangle -P OUTPUT ACCEPT
/sbin/iptables -t mangle -P POSTROUTING ACCEPT
/sbin/iptables -t mangle -P FORWARD ACCEPT
/sbin/iptables -t mangle -P INPUT ACCEPT
/sbin/iptables -t raw -P OUTPUT ACCEPT
/sbin/iptables -t raw -P PREROUTING ACCEPT
RETVAL=$?
;;
'restart')
$0 stop &amp;&amp; $0 start
RETVAL=$?
;;
*)
echo &quot;Usage: $0 { start | stop | restart | clean}&quot;
RETVAL=1
;;
esac
exit $RETVAL 
&lt;/code&gt;

Sauvegardez

Réinitialiser le pare-feu à blanc avec :

 /etc/init.d/parefeu clean

== Configuration ==

Tapez les séquences suivantes (une à la fois) suivi de 'Entrée'

=== &quot;Pour un hôte (station ou serveur) non routeur&quot;: ===

 iptables -t filter -P INPUT DROP
 iptables -t filter -P FORWARD DROP
 iptables -t filter -P OUTPUT ACCEPT
 iptables -A INPUT -i lo -j ACCEPT
 iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Si on veut un serveur FTP
 iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT

Si on souhaite utiliser SSH
 iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

Si on souhaite installer un serveur Web
 iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

Si on veut rendre CUPS accessible
 iptables -A INPUT -p tcp -m tcp --dport 631 -j ACCEPT

Si on souhaite utiliser Jabber
 iptables -A INPUT -p tcp -m tcp --dport 5222 -j ACCEPT

=== &quot;Pour une machine faisant office de routeur avec NAT&quot; : ===

 iptables -t filter -P INPUT DROP
 iptables -t filter -P FORWARD DROP
 iptables -t filter -P OUTPUT ACCEPT
 iptables -A INPUT -i ethx -j ACCEPT
 iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
 iptables -A INPUT -i lo -j ACCEPT
 iptables -A INPUT -p icmp -j ACCEPT

Si on veut un serveur FTP:
 iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT

Si on souhaite utiliser SSH:
 iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

Si on souhaite installer un serveur Web:
 iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

Si on veut rendre CUPS accessible:
 iptables -A INPUT -p tcp -m tcp --dport 631 -j ACCEPT

Si on souhaite utiliser Jabber:
 iptables -A INPUT -p tcp -m tcp --dport 5222 -j ACCEPT

Commandes indispensables pour faire du routage:
 iptables -A FORWARD -i ethy -o ethx -m state --state RELATED,ESTABLISHED -j ACCEPT
 iptables -A FORWARD -o ethy -j ACCEPT
 iptables -t nat -A POSTROUTING -o ethy -j MASQUERADE

Où 
ethx correspond à l'interface du LAN
et 
ethy correspond à l'interface relié à Internet (ou à votre &quot;box)

== Sauvegarde et automatisation ==

Sauvegardez le pare-feu une première fois (simulation d'un signal d'arrêt) avec :
 /etc/init.d/parefeu stop

Activez 'parefeu' avec (Respectez bien les espacements et les points):
 update-rc.d parefeu start XX S . stop YY 0 6 .

Remplacez XX par le nombre immédiatement inférieur à celui qui indique la priorité de 'networking' dans /etc/rcS.d.
 $ ls /etc/rcS.d | grep S**networking 
(renvoie chez moi &quot;S15networking&quot;. Il conviendra donc de remplacer XX par 14

Remplacez YY par le nombre immédiatement supérieur à celui qui indique la priorité de 'networking' dans /etc/rc0.d 
 $ ls /etc/rc0.d | grep K**networking
(renvoie chez moi &quot;K07networking&quot;. Il conviendra donc de remplacer YY par 08

Ainsi, le parefeu sera actif avant l'activation des interfaces réseau configurées en auto dans /etc/network/interfaces et le restera jusqu'à leur désactivation

== Modifications ==

Nous allons aborder maintenant la façon de modifier notre pare-feu

=== Ajouter une règle : ===

- on connaît le nom du port à autoriser, taper :
 iptables -A INPUT -p tcp -m tcp --dport www -J ACCEPT (où 'www' est le nom du serveur http)

- on connaît le numéro du port, taper :
 iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT (où '80' est le N° de ce même http)

Pour connaître le numéro d'un grand nombre de port, tapez :
 less /etc/services

Pour les explications des différentes options, vous pourrez avantageusement consulter :
man iptables
ou
iptables --help

=== Enlever une règle : ===

taper ce qui suit pour connaître le numéro de ligne de cette règle 

 iptables -L --line-numbers

puis taper 
 iptables -D INPUT (ou FORWARD) N° (où 'N°' doit être le chiffre ou nombre en tête de la ligne à supprimer)

Vous pourrez modifier l'exemple présenté plus haut à votre convenance (ajouter ou retirer ce que vous voudrez).
Toutefois, il convient de ne pas supprimer les deux lignes suivantes :

 -A INPUT -i lo -j ACCEPT ((Ce sont les communications IP entre processus locaux s'exécutant sur la machine et c'est critique)).
 -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT ((ça permet le retour vers la machine des infos demandées auprès des sites web. En l'absence de cette règle, la navigation deviendrait difficile. C'est relativement important )).

Après chaque modification, il vous faudra sauvegarder de nouveau votre pare-feu avec :

 /etc/init.d/parefeu stop
ou attendre un redémarrage qui fera la même chose automatiquement.

Si vous voulez revenir à l'état que vous aviez au présent démarrage, vous tapez :

 /etc/init.d/parefeu start

Si vous voulez revenir à un pare-feu vierge, vous tapez :

 /etc/init.d/parefeu clean

Ce qui précède concerne la partie 'Filter' d'un pare-feu. Ça assure un minimum de protection mais c'est loin d'être exhaustif.
Je laisse à d'autres, plus 'pointus' que moi, le soin d'expliquer les parties plus complexes, telles que Raw, Mangle et Nat.
J'espère que ce 'tuto', réservé aux débutants, vous aura permis de mieux appréhender le pare-feu sous Debian.

L'aide de tous les amis du forum et particulièrement celle du Papa de Lillo, a été indispensable à sa rédaction. Merci à eux !

== Liens externes ==

* [https://www.debian-fr.org/installation-parefeu-iptables-pour-les-nuls-t1901.html T&amp;A d'ou provient cet article]
* [http://www.debian-fr.org/digression-installation-parefeu-iptables-pour-les-nuls-t26303.html Discussion]
* man iptables {{fr}} [http://www.delafond.org/traducmanfr/man/man8/iptables.8.html ICI] ou dans votre console...
* {{fr}} [http://wiki.debian.org/iptables iptables sur debian.org]

[[Catégorie:Sécurité]]</text>
      <sha1>2tfnk23dldp7dbm5z5goubgfx32xj9m</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3179</id>
      <parentid>3177</parentid>
      <timestamp>2011-08-04T16:26:43Z</timestamp>
      <contributor>
        <username>Gaston</username>
        <id>146</id>
      </contributor>
      <comment>/* Installation */</comment>
      <text xml:space="preserve" bytes="9686">Le document qui suit est une introduction à la mise en place d'un pare-feu filtrant à l'aide de la commande iptables.

== Introduction ==

Netfilter/IpTables est une solution complète de firewall.

Netfilter est le module qui apporte à Linux les fonctions de pare-feu, de traduction d'adresse et d'historisation du trafic réseau. Netfilter fonctionne en mode noyau. Il intercepte et manipule les paquets IP avant et après le routage.

Iptables Iptables est un logiciel libre de l'espace utilisateur Linux. C'est la commande qui permet à un administrateur réseaux de configurer Netfilter en espace utilisateur. Iptables configure la gestion des paquets réseaux IPv4. Pour la gestion des paquets réseaux IPv6, on utilise la commande ip6tables.

Différentes tables peuvent être définies. Chaque table contient plusieurs chaînes prédéfinies et peut aussi contenir des chaînes définies par l'utilisateur.

== Préambule ==

En principe, le paquet 'iptables' est installé d'origine sous Debian mais si ce n'était pas le cas, rien de plus simple à faire :

 # apt-get install iptables

La majeure partie des commandes se feront à partir de la console.

Il est recommandé de ne pas faire cette installation, ni une éventuelle modification par le biais de SSH, mais en &quot;direct&quot; machine. Au cas ou vous envisageriez de le faire via SSH, pensez à autoriser la connexion SSH avant d'interdire quoi que ce soit...

Ces commandes seront entrées sous la forme :
 login@nom_machine:~$ sudo la_commande_à_taper
Ou
 root@nom_machine:~# la_commande_à_taper

Il est préférable d'utiliser '[[Root-su-sudo#La_commande_sudo|sudo]]' plutôt que de taper en tant que 'root', pour des raisons de sécurité mais il est possible que certaines commandes ne soient pas prises en compte de cette façon. Il vous faudra alors taper en tant que 'root' (su et mot de passe = # au lieu de $).

== Installation ==

A l'origine, le pare-feu est installé mais il est ouvert à toutes les communications, c'est en quelque sorte, une 'passoire' et de ce fait, il ne rempli pas ses objectifs.
Dans un premier temps, il va nous falloir installer un 'script' qui sera le &quot;donneur d'ordre&quot; 

Créez le fichier 'parefeu' :

 touch /etc/init.d/parefeu

Rendez ce fichier (pour l'instant, vide) exécutable avec :

 chmod +x /etc/init.d/parefeu

Editez le fichier (nano, vim, etc.)

 nano /etc/init.d/parefeu

&lt;code bash&gt;
#!/bin/sh

### BEGIN INIT INFO
# Provides:		iptables
# Required-Start:       mountall
# Should-Start:         $local_fs
# Required-Stop:
# Should-Stop:
# X-Start-Before:       networking
# X-Stop-After:         networking
# Default-Start:	S
# Default-Stop:	 	0 6
# Short-description:	iptables
# Description: 		Firewall
### END INIT INFO

# chargement/déchargement d'iptables

case &quot;$1&quot; in
'start')
/sbin/iptables-restore &lt; /etc/config_parefeu
RETVAL=$?
;;
'stop')
/sbin/iptables-save &gt; /etc/config_parefeu
RETVAL=$?
;;
'clean')
# clean le parefeu pendant que la machine tourne
# ça peut être une faille de sécurite si on l'exécute lors de l'extinction avant l'arrêt des interfaces
# pensez à refaire un start après sinon la sauvegarde se fera automatiquement à l'extinction
/sbin/iptables -t filter -F
/sbin/iptables -t nat -F
/sbin/iptables -t mangle -F
/sbin/iptables -t raw -F
/sbin/iptables -t filter -P INPUT ACCEPT
/sbin/iptables -t filter -P OUTPUT ACCEPT
/sbin/iptables -t filter -P FORWARD ACCEPT
/sbin/iptables -t nat -P PREROUTING ACCEPT
/sbin/iptables -t nat -P POSTROUTING ACCEPT
/sbin/iptables -t nat -P OUTPUT ACCEPT
/sbin/iptables -t mangle -P PREROUTING ACCEPT
/sbin/iptables -t mangle -P OUTPUT ACCEPT
/sbin/iptables -t mangle -P POSTROUTING ACCEPT
/sbin/iptables -t mangle -P FORWARD ACCEPT
/sbin/iptables -t mangle -P INPUT ACCEPT
/sbin/iptables -t raw -P OUTPUT ACCEPT
/sbin/iptables -t raw -P PREROUTING ACCEPT
RETVAL=$?
;;
'restart')
$0 stop &amp;&amp; $0 start
RETVAL=$?
;;
*)
echo &quot;Usage: $0 { start | stop | restart | clean}&quot;
RETVAL=1
;;
esac
exit $RETVAL 
&lt;/code&gt;

Sauvegardez

Réinitialiser le pare-feu à blanc avec :

 /etc/init.d/parefeu clean

== Configuration ==

Tapez les séquences suivantes (une à la fois) suivi de 'Entrée'

=== &quot;Pour un hôte (station ou serveur) non routeur&quot;: ===

 iptables -t filter -P INPUT DROP
 iptables -t filter -P FORWARD DROP
 iptables -t filter -P OUTPUT ACCEPT
 iptables -A INPUT -i lo -j ACCEPT
 iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Si on veut un serveur FTP
 iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT

Si on souhaite utiliser SSH
 iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

Si on souhaite installer un serveur Web
 iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

Si on veut rendre CUPS accessible
 iptables -A INPUT -p tcp -m tcp --dport 631 -j ACCEPT

Si on souhaite utiliser Jabber
 iptables -A INPUT -p tcp -m tcp --dport 5222 -j ACCEPT

=== &quot;Pour une machine faisant office de routeur avec NAT&quot; : ===

 iptables -t filter -P INPUT DROP
 iptables -t filter -P FORWARD DROP
 iptables -t filter -P OUTPUT ACCEPT
 iptables -A INPUT -i ethx -j ACCEPT
 iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
 iptables -A INPUT -i lo -j ACCEPT
 iptables -A INPUT -p icmp -j ACCEPT

Si on veut un serveur FTP:
 iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT

Si on souhaite utiliser SSH:
 iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

Si on souhaite installer un serveur Web:
 iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

Si on veut rendre CUPS accessible:
 iptables -A INPUT -p tcp -m tcp --dport 631 -j ACCEPT

Si on souhaite utiliser Jabber:
 iptables -A INPUT -p tcp -m tcp --dport 5222 -j ACCEPT

Commandes indispensables pour faire du routage:
 iptables -A FORWARD -i ethy -o ethx -m state --state RELATED,ESTABLISHED -j ACCEPT
 iptables -A FORWARD -o ethy -j ACCEPT
 iptables -t nat -A POSTROUTING -o ethy -j MASQUERADE

Où 
ethx correspond à l'interface du LAN
et 
ethy correspond à l'interface relié à Internet (ou à votre &quot;box)

== Sauvegarde et automatisation ==

Sauvegardez le pare-feu une première fois (simulation d'un signal d'arrêt) avec :
 /etc/init.d/parefeu stop

Activez 'parefeu' avec (Respectez bien les espacements et les points):
 update-rc.d parefeu start XX S . stop YY 0 6 .

Remplacez XX par le nombre immédiatement inférieur à celui qui indique la priorité de 'networking' dans /etc/rcS.d.
 $ ls /etc/rcS.d | grep S**networking 
(renvoie chez moi &quot;S15networking&quot;. Il conviendra donc de remplacer XX par 14

Remplacez YY par le nombre immédiatement supérieur à celui qui indique la priorité de 'networking' dans /etc/rc0.d 
 $ ls /etc/rc0.d | grep K**networking
(renvoie chez moi &quot;K07networking&quot;. Il conviendra donc de remplacer YY par 08

Ainsi, le parefeu sera actif avant l'activation des interfaces réseau configurées en auto dans /etc/network/interfaces et le restera jusqu'à leur désactivation

== Modifications ==

Nous allons aborder maintenant la façon de modifier notre pare-feu

=== Ajouter une règle : ===

- on connaît le nom du port à autoriser, taper :
 iptables -A INPUT -p tcp -m tcp --dport www -J ACCEPT (où 'www' est le nom du serveur http)

- on connaît le numéro du port, taper :
 iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT (où '80' est le N° de ce même http)

Pour connaître le numéro d'un grand nombre de port, tapez :
 less /etc/services

Pour les explications des différentes options, vous pourrez avantageusement consulter :
man iptables
ou
iptables --help

=== Enlever une règle : ===

taper ce qui suit pour connaître le numéro de ligne de cette règle 

 iptables -L --line-numbers

puis taper 
 iptables -D INPUT (ou FORWARD) N° (où 'N°' doit être le chiffre ou nombre en tête de la ligne à supprimer)

Vous pourrez modifier l'exemple présenté plus haut à votre convenance (ajouter ou retirer ce que vous voudrez).
Toutefois, il convient de ne pas supprimer les deux lignes suivantes :

 -A INPUT -i lo -j ACCEPT ((Ce sont les communications IP entre processus locaux s'exécutant sur la machine et c'est critique)).
 -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT ((ça permet le retour vers la machine des infos demandées auprès des sites web. En l'absence de cette règle, la navigation deviendrait difficile. C'est relativement important )).

Après chaque modification, il vous faudra sauvegarder de nouveau votre pare-feu avec :

 /etc/init.d/parefeu stop
ou attendre un redémarrage qui fera la même chose automatiquement.

Si vous voulez revenir à l'état que vous aviez au présent démarrage, vous tapez :

 /etc/init.d/parefeu start

Si vous voulez revenir à un pare-feu vierge, vous tapez :

 /etc/init.d/parefeu clean

Ce qui précède concerne la partie 'Filter' d'un pare-feu. Ça assure un minimum de protection mais c'est loin d'être exhaustif.
Je laisse à d'autres, plus 'pointus' que moi, le soin d'expliquer les parties plus complexes, telles que Raw, Mangle et Nat.
J'espère que ce 'tuto', réservé aux débutants, vous aura permis de mieux appréhender le pare-feu sous Debian.

L'aide de tous les amis du forum et particulièrement celle du Papa de Lillo, a été indispensable à sa rédaction. Merci à eux !

== Liens externes ==

* [https://www.debian-fr.org/installation-parefeu-iptables-pour-les-nuls-t1901.html T&amp;A d'ou provient cet article]
* [http://www.debian-fr.org/digression-installation-parefeu-iptables-pour-les-nuls-t26303.html Discussion]
* man iptables {{fr}} [http://www.delafond.org/traducmanfr/man/man8/iptables.8.html ICI] ou dans votre console...
* {{fr}} [http://wiki.debian.org/iptables iptables sur debian.org]

[[Catégorie:Sécurité]]</text>
      <sha1>jghaq4mgy833ul6z9ootsv9p9mnk3ql</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3180</id>
      <parentid>3179</parentid>
      <timestamp>2011-08-04T16:31:38Z</timestamp>
      <contributor>
        <username>Gaston</username>
        <id>146</id>
      </contributor>
      <comment>/* Sauvegarde et automatisation */</comment>
      <text xml:space="preserve" bytes="9813">Le document qui suit est une introduction à la mise en place d'un pare-feu filtrant à l'aide de la commande iptables.

== Introduction ==

Netfilter/IpTables est une solution complète de firewall.

Netfilter est le module qui apporte à Linux les fonctions de pare-feu, de traduction d'adresse et d'historisation du trafic réseau. Netfilter fonctionne en mode noyau. Il intercepte et manipule les paquets IP avant et après le routage.

Iptables Iptables est un logiciel libre de l'espace utilisateur Linux. C'est la commande qui permet à un administrateur réseaux de configurer Netfilter en espace utilisateur. Iptables configure la gestion des paquets réseaux IPv4. Pour la gestion des paquets réseaux IPv6, on utilise la commande ip6tables.

Différentes tables peuvent être définies. Chaque table contient plusieurs chaînes prédéfinies et peut aussi contenir des chaînes définies par l'utilisateur.

== Préambule ==

En principe, le paquet 'iptables' est installé d'origine sous Debian mais si ce n'était pas le cas, rien de plus simple à faire :

 # apt-get install iptables

La majeure partie des commandes se feront à partir de la console.

Il est recommandé de ne pas faire cette installation, ni une éventuelle modification par le biais de SSH, mais en &quot;direct&quot; machine. Au cas ou vous envisageriez de le faire via SSH, pensez à autoriser la connexion SSH avant d'interdire quoi que ce soit...

Ces commandes seront entrées sous la forme :
 login@nom_machine:~$ sudo la_commande_à_taper
Ou
 root@nom_machine:~# la_commande_à_taper

Il est préférable d'utiliser '[[Root-su-sudo#La_commande_sudo|sudo]]' plutôt que de taper en tant que 'root', pour des raisons de sécurité mais il est possible que certaines commandes ne soient pas prises en compte de cette façon. Il vous faudra alors taper en tant que 'root' (su et mot de passe = # au lieu de $).

== Installation ==

A l'origine, le pare-feu est installé mais il est ouvert à toutes les communications, c'est en quelque sorte, une 'passoire' et de ce fait, il ne rempli pas ses objectifs.
Dans un premier temps, il va nous falloir installer un 'script' qui sera le &quot;donneur d'ordre&quot; 

Créez le fichier 'parefeu' :

 touch /etc/init.d/parefeu

Rendez ce fichier (pour l'instant, vide) exécutable avec :

 chmod +x /etc/init.d/parefeu

Editez le fichier (nano, vim, etc.)

 nano /etc/init.d/parefeu

&lt;code bash&gt;
#!/bin/sh

### BEGIN INIT INFO
# Provides:		iptables
# Required-Start:       mountall
# Should-Start:         $local_fs
# Required-Stop:
# Should-Stop:
# X-Start-Before:       networking
# X-Stop-After:         networking
# Default-Start:	S
# Default-Stop:	 	0 6
# Short-description:	iptables
# Description: 		Firewall
### END INIT INFO

# chargement/déchargement d'iptables

case &quot;$1&quot; in
'start')
/sbin/iptables-restore &lt; /etc/config_parefeu
RETVAL=$?
;;
'stop')
/sbin/iptables-save &gt; /etc/config_parefeu
RETVAL=$?
;;
'clean')
# clean le parefeu pendant que la machine tourne
# ça peut être une faille de sécurite si on l'exécute lors de l'extinction avant l'arrêt des interfaces
# pensez à refaire un start après sinon la sauvegarde se fera automatiquement à l'extinction
/sbin/iptables -t filter -F
/sbin/iptables -t nat -F
/sbin/iptables -t mangle -F
/sbin/iptables -t raw -F
/sbin/iptables -t filter -P INPUT ACCEPT
/sbin/iptables -t filter -P OUTPUT ACCEPT
/sbin/iptables -t filter -P FORWARD ACCEPT
/sbin/iptables -t nat -P PREROUTING ACCEPT
/sbin/iptables -t nat -P POSTROUTING ACCEPT
/sbin/iptables -t nat -P OUTPUT ACCEPT
/sbin/iptables -t mangle -P PREROUTING ACCEPT
/sbin/iptables -t mangle -P OUTPUT ACCEPT
/sbin/iptables -t mangle -P POSTROUTING ACCEPT
/sbin/iptables -t mangle -P FORWARD ACCEPT
/sbin/iptables -t mangle -P INPUT ACCEPT
/sbin/iptables -t raw -P OUTPUT ACCEPT
/sbin/iptables -t raw -P PREROUTING ACCEPT
RETVAL=$?
;;
'restart')
$0 stop &amp;&amp; $0 start
RETVAL=$?
;;
*)
echo &quot;Usage: $0 { start | stop | restart | clean}&quot;
RETVAL=1
;;
esac
exit $RETVAL 
&lt;/code&gt;

Sauvegardez

Réinitialiser le pare-feu à blanc avec :

 /etc/init.d/parefeu clean

== Configuration ==

Tapez les séquences suivantes (une à la fois) suivi de 'Entrée'

=== &quot;Pour un hôte (station ou serveur) non routeur&quot;: ===

 iptables -t filter -P INPUT DROP
 iptables -t filter -P FORWARD DROP
 iptables -t filter -P OUTPUT ACCEPT
 iptables -A INPUT -i lo -j ACCEPT
 iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Si on veut un serveur FTP
 iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT

Si on souhaite utiliser SSH
 iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

Si on souhaite installer un serveur Web
 iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

Si on veut rendre CUPS accessible
 iptables -A INPUT -p tcp -m tcp --dport 631 -j ACCEPT

Si on souhaite utiliser Jabber
 iptables -A INPUT -p tcp -m tcp --dport 5222 -j ACCEPT

=== &quot;Pour une machine faisant office de routeur avec NAT&quot; : ===

 iptables -t filter -P INPUT DROP
 iptables -t filter -P FORWARD DROP
 iptables -t filter -P OUTPUT ACCEPT
 iptables -A INPUT -i ethx -j ACCEPT
 iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
 iptables -A INPUT -i lo -j ACCEPT
 iptables -A INPUT -p icmp -j ACCEPT

Si on veut un serveur FTP:
 iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT

Si on souhaite utiliser SSH:
 iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

Si on souhaite installer un serveur Web:
 iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

Si on veut rendre CUPS accessible:
 iptables -A INPUT -p tcp -m tcp --dport 631 -j ACCEPT

Si on souhaite utiliser Jabber:
 iptables -A INPUT -p tcp -m tcp --dport 5222 -j ACCEPT

Commandes indispensables pour faire du routage:
 iptables -A FORWARD -i ethy -o ethx -m state --state RELATED,ESTABLISHED -j ACCEPT
 iptables -A FORWARD -o ethy -j ACCEPT
 iptables -t nat -A POSTROUTING -o ethy -j MASQUERADE

Où 
ethx correspond à l'interface du LAN
et 
ethy correspond à l'interface relié à Internet (ou à votre &quot;box)

== Sauvegarde et automatisation ==

Sauvegardez le pare-feu une première fois (simulation d'un signal d'arrêt) avec :
 /etc/init.d/parefeu stop

Activez 'parefeu' avec (Respectez bien les espacements et les points):
 update-rc.d parefeu start XX S . stop YY 0 6 .

Remplacez XX par le nombre immédiatement inférieur à celui qui indique la priorité de 'networking' dans /etc/rcS.d.

Depuis Squeeze les scripts sont calculés suivant les dépendances avec insserv donc le nombre n'a pas vraiment d'importance.
 $ ls /etc/rcS.d | grep S**networking 
(renvoie chez moi &quot;S15networking&quot;. Il conviendra donc de remplacer XX par 14

Remplacez YY par le nombre immédiatement supérieur à celui qui indique la priorité de 'networking' dans /etc/rc0.d 
 $ ls /etc/rc0.d | grep K**networking
(renvoie chez moi &quot;K07networking&quot;. Il conviendra donc de remplacer YY par 08

Ainsi, le parefeu sera actif avant l'activation des interfaces réseau configurées en auto dans /etc/network/interfaces et le restera jusqu'à leur désactivation

== Modifications ==

Nous allons aborder maintenant la façon de modifier notre pare-feu

=== Ajouter une règle : ===

- on connaît le nom du port à autoriser, taper :
 iptables -A INPUT -p tcp -m tcp --dport www -J ACCEPT (où 'www' est le nom du serveur http)

- on connaît le numéro du port, taper :
 iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT (où '80' est le N° de ce même http)

Pour connaître le numéro d'un grand nombre de port, tapez :
 less /etc/services

Pour les explications des différentes options, vous pourrez avantageusement consulter :
man iptables
ou
iptables --help

=== Enlever une règle : ===

taper ce qui suit pour connaître le numéro de ligne de cette règle 

 iptables -L --line-numbers

puis taper 
 iptables -D INPUT (ou FORWARD) N° (où 'N°' doit être le chiffre ou nombre en tête de la ligne à supprimer)

Vous pourrez modifier l'exemple présenté plus haut à votre convenance (ajouter ou retirer ce que vous voudrez).
Toutefois, il convient de ne pas supprimer les deux lignes suivantes :

 -A INPUT -i lo -j ACCEPT ((Ce sont les communications IP entre processus locaux s'exécutant sur la machine et c'est critique)).
 -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT ((ça permet le retour vers la machine des infos demandées auprès des sites web. En l'absence de cette règle, la navigation deviendrait difficile. C'est relativement important )).

Après chaque modification, il vous faudra sauvegarder de nouveau votre pare-feu avec :

 /etc/init.d/parefeu stop
ou attendre un redémarrage qui fera la même chose automatiquement.

Si vous voulez revenir à l'état que vous aviez au présent démarrage, vous tapez :

 /etc/init.d/parefeu start

Si vous voulez revenir à un pare-feu vierge, vous tapez :

 /etc/init.d/parefeu clean

Ce qui précède concerne la partie 'Filter' d'un pare-feu. Ça assure un minimum de protection mais c'est loin d'être exhaustif.
Je laisse à d'autres, plus 'pointus' que moi, le soin d'expliquer les parties plus complexes, telles que Raw, Mangle et Nat.
J'espère que ce 'tuto', réservé aux débutants, vous aura permis de mieux appréhender le pare-feu sous Debian.

L'aide de tous les amis du forum et particulièrement celle du Papa de Lillo, a été indispensable à sa rédaction. Merci à eux !

== Liens externes ==

* [https://www.debian-fr.org/installation-parefeu-iptables-pour-les-nuls-t1901.html T&amp;A d'ou provient cet article]
* [http://www.debian-fr.org/digression-installation-parefeu-iptables-pour-les-nuls-t26303.html Discussion]
* man iptables {{fr}} [http://www.delafond.org/traducmanfr/man/man8/iptables.8.html ICI] ou dans votre console...
* {{fr}} [http://wiki.debian.org/iptables iptables sur debian.org]

[[Catégorie:Sécurité]]</text>
      <sha1>n03qk754z4p1trp7tif8xm9i3s184mt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3181</id>
      <parentid>3180</parentid>
      <timestamp>2011-08-04T18:44:08Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Modification entête pour Lenny</comment>
      <text xml:space="preserve" bytes="10187">Le document qui suit est une introduction à la mise en place d'un pare-feu filtrant à l'aide de la commande iptables.

== Introduction ==

Netfilter/IpTables est une solution complète de firewall.

Netfilter est le module qui apporte à Linux les fonctions de pare-feu, de traduction d'adresse et d'historisation du trafic réseau. Netfilter fonctionne en mode noyau. Il intercepte et manipule les paquets IP avant et après le routage.

Iptables Iptables est un logiciel libre de l'espace utilisateur Linux. C'est la commande qui permet à un administrateur réseaux de configurer Netfilter en espace utilisateur. Iptables configure la gestion des paquets réseaux IPv4. Pour la gestion des paquets réseaux IPv6, on utilise la commande ip6tables.

Différentes tables peuvent être définies. Chaque table contient plusieurs chaînes prédéfinies et peut aussi contenir des chaînes définies par l'utilisateur.

== Préambule ==

En principe, le paquet 'iptables' est installé d'origine sous Debian mais si ce n'était pas le cas, rien de plus simple à faire :

 # apt-get install iptables

La majeure partie des commandes se feront à partir de la console.

Il est recommandé de ne pas faire cette installation, ni une éventuelle modification par le biais de SSH, mais en &quot;direct&quot; machine. Au cas ou vous envisageriez de le faire via SSH, pensez à autoriser la connexion SSH avant d'interdire quoi que ce soit...

Ces commandes seront entrées sous la forme :
 login@nom_machine:~$ sudo la_commande_à_taper
Ou
 root@nom_machine:~# la_commande_à_taper

Il est préférable d'utiliser '[[Root-su-sudo#La_commande_sudo|sudo]]' plutôt que de taper en tant que 'root', pour des raisons de sécurité mais il est possible que certaines commandes ne soient pas prises en compte de cette façon. Il vous faudra alors taper en tant que 'root' (su et mot de passe = # au lieu de $).

== Installation ==

A l'origine, le pare-feu est installé mais il est ouvert à toutes les communications, c'est en quelque sorte, une 'passoire' et de ce fait, il ne rempli pas ses objectifs.
Dans un premier temps, il va nous falloir installer un 'script' qui sera le &quot;donneur d'ordre&quot; 

Créez le fichier 'parefeu' :

 touch /etc/init.d/parefeu

Rendez ce fichier (pour l'instant, vide) exécutable avec :

 chmod +x /etc/init.d/parefeu

Editez le fichier (nano, vim, etc.)

 nano /etc/init.d/parefeu

&lt;code bash&gt;
#!/bin/sh

### BEGIN INIT INFO
# Provides:		iptables
# Required-Start:       mountall
# Should-Start:         $local_fs
# Required-Stop:
# Should-Stop:
# X-Start-Before:       networking
# X-Stop-After:         networking
# Default-Start:	S
# Default-Stop:	 	0 6
# Short-description:	iptables
# Description: 		Firewall
### END INIT INFO

# chargement/déchargement d'iptables

case &quot;$1&quot; in
'start')
/sbin/iptables-restore &lt; /etc/config_parefeu
RETVAL=$?
;;
'stop')
/sbin/iptables-save &gt; /etc/config_parefeu
RETVAL=$?
;;
'clean')
# clean le parefeu pendant que la machine tourne
# ça peut être une faille de sécurite si on l'exécute lors de l'extinction avant l'arrêt des interfaces
# pensez à refaire un start après sinon la sauvegarde se fera automatiquement à l'extinction
/sbin/iptables -t filter -F
/sbin/iptables -t nat -F
/sbin/iptables -t mangle -F
/sbin/iptables -t raw -F
/sbin/iptables -t filter -P INPUT ACCEPT
/sbin/iptables -t filter -P OUTPUT ACCEPT
/sbin/iptables -t filter -P FORWARD ACCEPT
/sbin/iptables -t nat -P PREROUTING ACCEPT
/sbin/iptables -t nat -P POSTROUTING ACCEPT
/sbin/iptables -t nat -P OUTPUT ACCEPT
/sbin/iptables -t mangle -P PREROUTING ACCEPT
/sbin/iptables -t mangle -P OUTPUT ACCEPT
/sbin/iptables -t mangle -P POSTROUTING ACCEPT
/sbin/iptables -t mangle -P FORWARD ACCEPT
/sbin/iptables -t mangle -P INPUT ACCEPT
/sbin/iptables -t raw -P OUTPUT ACCEPT
/sbin/iptables -t raw -P PREROUTING ACCEPT
RETVAL=$?
;;
'restart')
$0 stop &amp;&amp; $0 start
RETVAL=$?
;;
*)
echo &quot;Usage: $0 { start | stop | restart | clean}&quot;
RETVAL=1
;;
esac
exit $RETVAL 
&lt;/code&gt;

Sauvegardez

Réinitialiser le pare-feu à blanc avec :

 /etc/init.d/parefeu clean

=== Pour les utilisateurs de Lenny ===

Il faudra modifier l'entête du script pour qu'elle ressemble à ça:

&lt;code bash&gt;### BEGIN INIT INFO
# Provides:		iptables
# Required-Start:
# Should-Start:
# Required-Stop:
# Should-Stop:
# Default-Start:	2 3 4 5
# Default-Stop:	 	0 1 6
# Short-description:	iptables
# Description: 		Firewall
### END INIT INFO&lt;/code&gt;

== Configuration ==

Tapez les séquences suivantes (une à la fois) suivi de 'Entrée'

=== &quot;Pour un hôte (station ou serveur) non routeur&quot;: ===

 iptables -t filter -P INPUT DROP
 iptables -t filter -P FORWARD DROP
 iptables -t filter -P OUTPUT ACCEPT
 iptables -A INPUT -i lo -j ACCEPT
 iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Si on veut un serveur FTP
 iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT

Si on souhaite utiliser SSH
 iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

Si on souhaite installer un serveur Web
 iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

Si on veut rendre CUPS accessible
 iptables -A INPUT -p tcp -m tcp --dport 631 -j ACCEPT

Si on souhaite utiliser Jabber
 iptables -A INPUT -p tcp -m tcp --dport 5222 -j ACCEPT

=== &quot;Pour une machine faisant office de routeur avec NAT&quot; : ===

 iptables -t filter -P INPUT DROP
 iptables -t filter -P FORWARD DROP
 iptables -t filter -P OUTPUT ACCEPT
 iptables -A INPUT -i ethx -j ACCEPT
 iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
 iptables -A INPUT -i lo -j ACCEPT
 iptables -A INPUT -p icmp -j ACCEPT

Si on veut un serveur FTP:
 iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT

Si on souhaite utiliser SSH:
 iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

Si on souhaite installer un serveur Web:
 iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

Si on veut rendre CUPS accessible:
 iptables -A INPUT -p tcp -m tcp --dport 631 -j ACCEPT

Si on souhaite utiliser Jabber:
 iptables -A INPUT -p tcp -m tcp --dport 5222 -j ACCEPT

Commandes indispensables pour faire du routage:
 iptables -A FORWARD -i ethy -o ethx -m state --state RELATED,ESTABLISHED -j ACCEPT
 iptables -A FORWARD -o ethy -j ACCEPT
 iptables -t nat -A POSTROUTING -o ethy -j MASQUERADE

Où 
ethx correspond à l'interface du LAN
et 
ethy correspond à l'interface relié à Internet (ou à votre &quot;box)

== Sauvegarde et automatisation ==

Sauvegardez le pare-feu une première fois (simulation d'un signal d'arrêt) avec :
 /etc/init.d/parefeu stop

Activez 'parefeu' avec (Respectez bien les espacements et les points):
 update-rc.d parefeu start XX S . stop YY 0 6 .

Remplacez XX par le nombre immédiatement inférieur à celui qui indique la priorité de 'networking' dans /etc/rcS.d.

 $ ls /etc/rcS.d | grep S**networking 
(renvoie chez moi &quot;S15networking&quot;. Il conviendra donc de remplacer XX par 14

Remplacez YY par le nombre immédiatement supérieur à celui qui indique la priorité de 'networking' dans /etc/rc0.d 
 $ ls /etc/rc0.d | grep K**networking
(renvoie chez moi &quot;K07networking&quot;. Il conviendra donc de remplacer YY par 08

Ainsi, le parefeu sera actif avant l'activation des interfaces réseau configurées en auto dans /etc/network/interfaces et le restera jusqu'à leur désactivation

'''Note:''' Depuis Squeeze les scripts sont calculés suivant les dépendances avec insserv donc le nombre n'a pas vraiment d'importance.

== Modifications ==

Nous allons aborder maintenant la façon de modifier notre pare-feu

=== Ajouter une règle : ===

- on connaît le nom du port à autoriser, taper :
 iptables -A INPUT -p tcp -m tcp --dport www -J ACCEPT (où 'www' est le nom du serveur http)

- on connaît le numéro du port, taper :
 iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT (où '80' est le N° de ce même http)

Pour connaître le numéro d'un grand nombre de port, tapez :
 less /etc/services

Pour les explications des différentes options, vous pourrez avantageusement consulter :
man iptables
ou
iptables --help

=== Enlever une règle : ===

taper ce qui suit pour connaître le numéro de ligne de cette règle 

 iptables -L --line-numbers

puis taper 
 iptables -D INPUT (ou FORWARD) N° (où 'N°' doit être le chiffre ou nombre en tête de la ligne à supprimer)

Vous pourrez modifier l'exemple présenté plus haut à votre convenance (ajouter ou retirer ce que vous voudrez).
Toutefois, il convient de ne pas supprimer les deux lignes suivantes :

 -A INPUT -i lo -j ACCEPT ((Ce sont les communications IP entre processus locaux s'exécutant sur la machine et c'est critique)).
 -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT ((ça permet le retour vers la machine des infos demandées auprès des sites web. En l'absence de cette règle, la navigation deviendrait difficile. C'est relativement important )).

Après chaque modification, il vous faudra sauvegarder de nouveau votre pare-feu avec :

 /etc/init.d/parefeu stop
ou attendre un redémarrage qui fera la même chose automatiquement.

Si vous voulez revenir à l'état que vous aviez au présent démarrage, vous tapez :

 /etc/init.d/parefeu start

Si vous voulez revenir à un pare-feu vierge, vous tapez :

 /etc/init.d/parefeu clean

Ce qui précède concerne la partie 'Filter' d'un pare-feu. Ça assure un minimum de protection mais c'est loin d'être exhaustif.
Je laisse à d'autres, plus 'pointus' que moi, le soin d'expliquer les parties plus complexes, telles que Raw, Mangle et Nat.
J'espère que ce 'tuto', réservé aux débutants, vous aura permis de mieux appréhender le pare-feu sous Debian.

L'aide de tous les amis du forum et particulièrement celle du Papa de Lillo, a été indispensable à sa rédaction. Merci à eux !

== Liens externes ==

* [https://www.debian-fr.org/installation-parefeu-iptables-pour-les-nuls-t1901.html T&amp;A d'ou provient cet article]
* [http://www.debian-fr.org/digression-installation-parefeu-iptables-pour-les-nuls-t26303.html Discussion]
* man iptables {{fr}} [http://www.delafond.org/traducmanfr/man/man8/iptables.8.html ICI] ou dans votre console...
* {{fr}} [http://wiki.debian.org/iptables iptables sur debian.org]

[[Catégorie:Sécurité]]</text>
      <sha1>1zlc9p2ggj7uiesp7gr1ol76q30muct</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3186</id>
      <parentid>3181</parentid>
      <timestamp>2011-08-05T05:39:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="10241">Le document qui suit est une introduction à la mise en place d'un pare-feu filtrant à l'aide de la commande iptables.

== Introduction ==

Netfilter/IpTables est une solution complète de firewall.

Netfilter est le module qui apporte à Linux les fonctions de pare-feu, de traduction d'adresse et d'historisation du trafic réseau. Netfilter fonctionne en mode noyau. Il intercepte et manipule les paquets IP avant et après le routage.

Iptables Iptables est un logiciel libre de l'espace utilisateur Linux. C'est la commande qui permet à un administrateur réseaux de configurer Netfilter en espace utilisateur. Iptables configure la gestion des paquets réseaux IPv4. Pour la gestion des paquets réseaux IPv6, on utilise la commande ip6tables.

Différentes tables peuvent être définies. Chaque table contient plusieurs chaînes prédéfinies et peut aussi contenir des chaînes définies par l'utilisateur.

== Préambule ==

En principe, le paquet 'iptables' est installé d'origine sous Debian mais si ce n'était pas le cas, rien de plus simple à faire :

 # apt-get install iptables

La majeure partie des commandes se feront à partir de la console.

Il est recommandé de ne pas faire cette installation, ni une éventuelle modification par le biais de SSH, mais en &quot;direct&quot; machine. Au cas ou vous envisageriez de le faire via SSH, pensez à autoriser la connexion SSH avant d'interdire quoi que ce soit...

Ces commandes seront entrées sous la forme :
 login@nom_machine:~$ sudo la_commande_à_taper
Ou
 root@nom_machine:~# la_commande_à_taper

Il est préférable d'utiliser '[[Root-su-sudo#La_commande_sudo|sudo]]' plutôt que de taper en tant que 'root', pour des raisons de sécurité mais il est possible que certaines commandes ne soient pas prises en compte de cette façon. Il vous faudra alors taper en tant que 'root' (su et mot de passe = # au lieu de $).

== Installation ==

A l'origine, le pare-feu est installé mais il est ouvert à toutes les communications, c'est en quelque sorte, une 'passoire' et de ce fait, il ne rempli pas ses objectifs.
Dans un premier temps, il va nous falloir installer un 'script' qui sera le &quot;donneur d'ordre&quot; 

Créez le fichier 'parefeu' :

 touch /etc/init.d/parefeu

Rendez ce fichier (pour l'instant, vide) exécutable avec :

 chmod +x /etc/init.d/parefeu

Editez le fichier (nano, vim, etc.)

 nano /etc/init.d/parefeu

&lt;code bash&gt;
#!/bin/sh

### BEGIN INIT INFO
# Provides:		iptables
# Required-Start:
# Should-Start:
# Required-Stop:
# Should-Stop:
# Default-Start:	2 3 4 5
# Default-Stop:	 	0 1 6
# Short-description:	iptables
# Description: 		Firewall
### END INIT INFO
# chargement/déchargement d'iptables

case &quot;$1&quot; in
'start')
/sbin/iptables-restore &lt; /etc/config_parefeu
RETVAL=$?
;;
'stop')
/sbin/iptables-save &gt; /etc/config_parefeu
RETVAL=$?
;;
'clean')
# clean le parefeu pendant que la machine tourne
# ça peut être une faille de sécurite si on l'exécute lors de l'extinction avant l'arrêt des interfaces
# pensez à refaire un start après sinon la sauvegarde se fera automatiquement à l'extinction
/sbin/iptables -t filter -F
/sbin/iptables -t nat -F
/sbin/iptables -t mangle -F
/sbin/iptables -t raw -F
/sbin/iptables -t filter -P INPUT ACCEPT
/sbin/iptables -t filter -P OUTPUT ACCEPT
/sbin/iptables -t filter -P FORWARD ACCEPT
/sbin/iptables -t nat -P PREROUTING ACCEPT
/sbin/iptables -t nat -P POSTROUTING ACCEPT
/sbin/iptables -t nat -P OUTPUT ACCEPT
/sbin/iptables -t mangle -P PREROUTING ACCEPT
/sbin/iptables -t mangle -P OUTPUT ACCEPT
/sbin/iptables -t mangle -P POSTROUTING ACCEPT
/sbin/iptables -t mangle -P FORWARD ACCEPT
/sbin/iptables -t mangle -P INPUT ACCEPT
/sbin/iptables -t raw -P OUTPUT ACCEPT
/sbin/iptables -t raw -P PREROUTING ACCEPT
RETVAL=$?
;;
'restart')
$0 stop &amp;&amp; $0 start
RETVAL=$?
;;
*)
echo &quot;Usage: $0 { start | stop | restart | clean}&quot;
RETVAL=1
;;
esac
exit $RETVAL 
&lt;/code&gt;

Sauvegardez

Réinitialiser le pare-feu à blanc avec :

 /etc/init.d/parefeu clean

=== Pour les utilisateurs de Squeeze ===

Si vous rencontrez un problème avec le update-rc.d, il faudra modifier l'entête du script pour qu'elle ressemble à ça:

&lt;code bash&gt;### BEGIN INIT INFO
# Provides:		iptables
# Required-Start:       mountall
# Should-Start:         $local_fs
# Required-Stop:
# Should-Stop:
# X-Start-Before:       networking
# X-Stop-After:         networking
# Default-Start:	S
# Default-Stop:	 	0 6
# Short-description:	iptables
# Description: 		Firewall
### END INIT INFO&lt;/code&gt;

== Configuration ==

Tapez les séquences suivantes (une à la fois) suivi de 'Entrée'

=== &quot;Pour un hôte (station ou serveur) non routeur&quot;: ===

 iptables -t filter -P INPUT DROP
 iptables -t filter -P FORWARD DROP
 iptables -t filter -P OUTPUT ACCEPT
 iptables -A INPUT -i lo -j ACCEPT
 iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Si on veut un serveur FTP
 iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT

Si on souhaite utiliser SSH
 iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

Si on souhaite installer un serveur Web
 iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

Si on veut rendre CUPS accessible
 iptables -A INPUT -p tcp -m tcp --dport 631 -j ACCEPT

Si on souhaite utiliser Jabber
 iptables -A INPUT -p tcp -m tcp --dport 5222 -j ACCEPT

=== &quot;Pour une machine faisant office de routeur avec NAT&quot; : ===

 iptables -t filter -P INPUT DROP
 iptables -t filter -P FORWARD DROP
 iptables -t filter -P OUTPUT ACCEPT
 iptables -A INPUT -i ethx -j ACCEPT
 iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
 iptables -A INPUT -i lo -j ACCEPT
 iptables -A INPUT -p icmp -j ACCEPT

Si on veut un serveur FTP:
 iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT

Si on souhaite utiliser SSH:
 iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

Si on souhaite installer un serveur Web:
 iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

Si on veut rendre CUPS accessible:
 iptables -A INPUT -p tcp -m tcp --dport 631 -j ACCEPT

Si on souhaite utiliser Jabber:
 iptables -A INPUT -p tcp -m tcp --dport 5222 -j ACCEPT

Commandes indispensables pour faire du routage:
 iptables -A FORWARD -i ethy -o ethx -m state --state RELATED,ESTABLISHED -j ACCEPT
 iptables -A FORWARD -o ethy -j ACCEPT
 iptables -t nat -A POSTROUTING -o ethy -j MASQUERADE

Où 
ethx correspond à l'interface du LAN
et 
ethy correspond à l'interface relié à Internet (ou à votre &quot;box)

== Sauvegarde et automatisation ==

Sauvegardez le pare-feu une première fois (simulation d'un signal d'arrêt) avec :
 /etc/init.d/parefeu stop

Activez 'parefeu' avec (Respectez bien les espacements et les points):
 update-rc.d parefeu start XX S . stop YY 0 6 .

Remplacez XX par le nombre immédiatement inférieur à celui qui indique la priorité de 'networking' dans /etc/rcS.d.

 $ ls /etc/rcS.d | grep S**networking 
(renvoie chez moi &quot;S15networking&quot;. Il conviendra donc de remplacer XX par 14

Remplacez YY par le nombre immédiatement supérieur à celui qui indique la priorité de 'networking' dans /etc/rc0.d 
 $ ls /etc/rc0.d | grep K**networking
(renvoie chez moi &quot;K07networking&quot;. Il conviendra donc de remplacer YY par 08

Ainsi, le parefeu sera actif avant l'activation des interfaces réseau configurées en auto dans /etc/network/interfaces et le restera jusqu'à leur désactivation

'''Note:''' Depuis Squeeze les scripts sont calculés suivant les dépendances avec insserv donc le nombre n'a pas vraiment d'importance.

== Modifications ==

Nous allons aborder maintenant la façon de modifier notre pare-feu

=== Ajouter une règle : ===

- on connaît le nom du port à autoriser, taper :
 iptables -A INPUT -p tcp -m tcp --dport www -J ACCEPT (où 'www' est le nom du serveur http)

- on connaît le numéro du port, taper :
 iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT (où '80' est le N° de ce même http)

Pour connaître le numéro d'un grand nombre de port, tapez :
 less /etc/services

Pour les explications des différentes options, vous pourrez avantageusement consulter :
man iptables
ou
iptables --help

=== Enlever une règle : ===

taper ce qui suit pour connaître le numéro de ligne de cette règle 

 iptables -L --line-numbers

puis taper 
 iptables -D INPUT (ou FORWARD) N° (où 'N°' doit être le chiffre ou nombre en tête de la ligne à supprimer)

Vous pourrez modifier l'exemple présenté plus haut à votre convenance (ajouter ou retirer ce que vous voudrez).
Toutefois, il convient de ne pas supprimer les deux lignes suivantes :

 -A INPUT -i lo -j ACCEPT ((Ce sont les communications IP entre processus locaux s'exécutant sur la machine et c'est critique)).
 -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT ((ça permet le retour vers la machine des infos demandées auprès des sites web. En l'absence de cette règle, la navigation deviendrait difficile. C'est relativement important )).

Après chaque modification, il vous faudra sauvegarder de nouveau votre pare-feu avec :

 /etc/init.d/parefeu stop
ou attendre un redémarrage qui fera la même chose automatiquement.

Si vous voulez revenir à l'état que vous aviez au présent démarrage, vous tapez :

 /etc/init.d/parefeu start

Si vous voulez revenir à un pare-feu vierge, vous tapez :

 /etc/init.d/parefeu clean

Ce qui précède concerne la partie 'Filter' d'un pare-feu. Ça assure un minimum de protection mais c'est loin d'être exhaustif.
Je laisse à d'autres, plus 'pointus' que moi, le soin d'expliquer les parties plus complexes, telles que Raw, Mangle et Nat.
J'espère que ce 'tuto', réservé aux débutants, vous aura permis de mieux appréhender le pare-feu sous Debian.

L'aide de tous les amis du forum et particulièrement celle du Papa de Lillo, a été indispensable à sa rédaction. Merci à eux !

== Liens externes ==

* [https://www.debian-fr.org/installation-parefeu-iptables-pour-les-nuls-t1901.html T&amp;A d'ou provient cet article]
* [http://www.debian-fr.org/digression-installation-parefeu-iptables-pour-les-nuls-t26303.html Discussion]
* man iptables {{fr}} [http://www.delafond.org/traducmanfr/man/man8/iptables.8.html ICI] ou dans votre console...
* {{fr}} [http://wiki.debian.org/iptables iptables sur debian.org]

[[Catégorie:Sécurité]]</text>
      <sha1>lm8bf0me6pjupulripteky55mwzg6pb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Nettoyer sa Debian</title>
    <ns>0</ns>
    <id>123</id>
    <revision>
      <id>567</id>
      <timestamp>2010-01-30T15:50:42Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>Page créée avec « Nettoyage d'une Debian en vu de gagner de la place  = Objectif = Vous avez installer une Debian depuis quelques temps déjà et vous commencer à manquer de place sur votre p… »</comment>
      <text xml:space="preserve" bytes="4800">Nettoyage d'une Debian en vu de gagner de la place

= Objectif =
Vous avez installer une Debian depuis quelques temps déjà et vous commencer à
manquer de place sur votre partition / ? Voici quelques astuces pour gagner
plusieurs centaines de mégaoctets.

Note : ce document n'hésite pas une seule seconde à utiliser des commandes
dites complexes (sous-shell, commande à la chaine,...). Elles peuvent être
difficile à comprendre mais nous vous conseillons de les comprendre plutôt que
de les réutiliser sans comprendre. Ainsi vous verrais si quelqu'un à modifier
la page pour modifier les commandes.

= DPKG =
DPKG et APT sont de puissants outils y compris lorsqu'il s'aggit de gagner de
la place.

== Fichiers de configuration non supprimés ==
Lors de la désinstallation d'un logiciel le comportement par défaut consiste à
garder les fichiers de configuration à fin de pouvoir les réutiliser en cas de
réinstallation du logiciel en question. Pour nettoyer votre Debian de tout ces
fichiers superfluxs une seule commande suffit :
 dpkg -P $(dpkg -l | grep '^rc' | awk '{ print $2 }'

Ensuite si vous souhaitez que la suppresion des fichiers de configurations se
fasse automatiquement il suffit d'ajouter ceci au fichier /etc/apt/apt.conf :
 APT::Get::Purge &quot;true&quot;

== Dépendances orphelines ==
Lorsque vous installer un logiciel un certains nombre de dépendances
s'installent avec lui. Par contre lorsque vous désinstaller ce même logiciel
les dépendances ne partent pas systématiquement avec lui. Pour supprimer ces
dépendances il existe deborphan (ou la version avec une interface graphique
gtkorphan) qui liste les bibliothèques orphelines.

Un simple appel permet de lister les paquets qu'il considère comme orphelins.
Il faut noter que certains de ses paquets peuvent être utile. En effet certains
apportent des fonctionnalités sans être des dépendances. Si deborphan liste un
paquet que vous souhaitez garder vous pouvez utiliser cette commande :
 deborphan --add-keep &lt;nom paquet&gt;

Ensuite une fois que l'on est sur que deborphan ne prend pas en compte les
paquets que l'on veut garder, il suffit de lancer la commande :
 aptitude remove $(deborphan)

== Cache APT ==
Lorsque l'on installe des logiciels APT va télécharger des paquets debian
(*.deb) et va les installer un à un. Pour diverses raisons (ne pas
retélacharger le paquet en cas de réinstallation par exemple), ces
paquets ne sont pas supprimés après l'installation.

On peut d'une part supprimer tout les paquets en cache inutile (sion a
plusieurs versions d'un même paquet on ne garde que la dernière). Cela
se fait avec la commande :
 aptitude autoclean

Si on veut supprimer tout les paquets du cache :
 aptitude clean

Bien sur il est possible (mais déconseillé) de rendre cette maintenance
automatique, comme avec l'option purge (voir la page man de apt.conf).

== Localepurge ==
localepurge permet de ne garder les fichiers d'internationalisation uniquement
des langues que vous choisissez. Elle est très simple à mettre en place et peut
permettre de gagner beaucoup de place. Il suffit de l'installer puis elle
libère la place toute seule de manière automatique lors de l'installation ou la
suppression de programme.
 aptitude install localepurge

Lors de l'installation, il vous seras demandé de choisir les langues que vous
souhaitez garder. Je vous conseil fr_FR, fr_FR@UTF-8 et fr_FR@euro.

== Popularity contest ==
''Travail en cours''

== Debfoster ==
''Travail en cours''

= Fichiers utilisateurs =
Si votre dossier /home vous semble démesurément gros et que vous souhaitez en
diminuer la taille, il existe quelques commandes et quelques logiciels très
interessants.

== Voir l'espace occupé par l'arborescence ==
Cette partie va vous expliquer comment trouver les dossiers et les fichiers les
plus gros d'un dossier donné. Ensuite il suffiras de les supprimer ou les
compresser de la manière qu'il vous conviendras.

=== Commandes ===
Pour connaitre la taille de tout les dossiers et sous-dossiers du répertoire
courant, il suffit de taper la commande :
 du -ah

Le problème c'est que les fichiers ne seront pas triés. Pour les trier il faut
utiliser la commande :
 du -S | sort -n

=== Logiciels graphiques ===
Les logiciels ''Baobab'' (Gnome) et ''Krusader'' (KDE) permettent de voir de
manière graphique quel dossier et quel fichiers occupent le plus d'espace. Ces
logiciel étant très bien fait, il ne semble pas qu'il soit très utile
d'expliquer leur utilisation. Notez juste que ces paquets ne feront qu'analyser
le disque c'est à vous par la suite de supprimer les fichiers en question.

Il existe aussi ''xdiskusage''. Très simple il permet de voir l'occupation
partition par partition et indique l'espace libre.

== FSLint ==
''Travail en cours''</text>
      <sha1>093znjeyb8s94rc7a1r2j0f6ysur1u8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>569</id>
      <parentid>567</parentid>
      <timestamp>2010-01-30T16:26:50Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="4798">Nettoyage d'une Debian en vu de gagner de la place

= Objectif =
Vous avez installé une Debian depuis quelques temps déjà et vous commencez à
manquer de place sur votre partition / ? Voici quelques astuces pour gagner
plusieurs centaines de mégaoctets.

Note : ce document n'hésite pas une seule seconde à utiliser des commandes
dites complexes (sous-shell, commande à la chaine,...). Elles peuvent être
difficile à comprendre mais nous vous conseillons de les comprendre plutôt que
de les réutiliser sans comprendre. Ainsi vous verrez si quelqu'un a modifié
la page pour modifier les commandes.

= DPKG =
DPKG et APT sont de puissants outils y compris lorsqu'il s'aggit de gagner de
la place.

== Fichiers de configuration non supprimés ==
Lors de la désinstallation d'un logiciel le comportement par défaut consiste à
garder les fichiers de configuration à fin de pouvoir les réutiliser en cas de
réinstallation du logiciel en question. Pour nettoyer votre Debian de tout ces
fichiers superfluxs une seule commande suffit :
 dpkg -P $(dpkg -l | grep '^rc' | awk '{ print $2 }'

Ensuite si vous souhaitez que la suppresion des fichiers de configurations se
fasse automatiquement il suffit d'ajouter ceci au fichier /etc/apt/apt.conf :
 APT::Get::Purge &quot;true&quot;

== Dépendances orphelines ==
Lorsque vous installer un logiciel un certains nombre de dépendances
s'installent avec lui. Par contre lorsque vous désinstaller ce même logiciel
les dépendances ne partent pas systématiquement avec lui. Pour supprimer ces
dépendances il existe deborphan (ou la version avec une interface graphique
gtkorphan) qui liste les bibliothèques orphelines.

Un simple appel permet de lister les paquets qu'il considère comme orphelins.
Il faut noter que certains de ses paquets peuvent être utile. En effet certains
apportent des fonctionnalités sans être des dépendances. Si deborphan liste un
paquet que vous souhaitez garder vous pouvez utiliser cette commande :
 deborphan --add-keep &lt;nom paquet&gt;

Ensuite une fois que l'on est sur que deborphan ne prend pas en compte les
paquets que l'on veut garder, il suffit de lancer la commande :
 aptitude remove $(deborphan)

== Cache APT ==
Lorsque l'on installe des logiciels APT va télécharger des paquets debian
(*.deb) et va les installer un à un. Pour diverses raisons (ne pas
retélacharger le paquet en cas de réinstallation par exemple), ces
paquets ne sont pas supprimés après l'installation.

On peut d'une part supprimer tout les paquets en cache inutile (sion a
plusieurs versions d'un même paquet on ne garde que la dernière). Cela
se fait avec la commande :
 aptitude autoclean

Si on veut supprimer tout les paquets du cache :
 aptitude clean

Bien sur il est possible (mais déconseillé) de rendre cette maintenance
automatique, comme avec l'option purge (voir la page man de apt.conf).

== Localepurge ==
localepurge permet de ne garder les fichiers d'internationalisation uniquement
des langues que vous choisissez. Elle est très simple à mettre en place et peut
permettre de gagner beaucoup de place. Il suffit de l'installer puis elle
libère la place toute seule de manière automatique lors de l'installation ou la
suppression de programme.
 aptitude install localepurge

Lors de l'installation, il vous seras demandé de choisir les langues que vous
souhaitez garder. Je vous conseil fr_FR, fr_FR@UTF-8 et fr_FR@euro.

== Popularity contest ==
''Travail en cours''

== Debfoster ==
''Travail en cours''

= Fichiers utilisateurs =
Si votre dossier /home vous semble démesurément gros et que vous souhaitez en
diminuer la taille, il existe quelques commandes et quelques logiciels très
interessants.

== Voir l'espace occupé par l'arborescence ==
Cette partie va vous expliquer comment trouver les dossiers et les fichiers les
plus gros d'un dossier donné. Ensuite il suffiras de les supprimer ou les
compresser de la manière qu'il vous conviendras.

=== Commandes ===
Pour connaitre la taille de tout les dossiers et sous-dossiers du répertoire
courant, il suffit de taper la commande :
 du -ah

Le problème c'est que les fichiers ne seront pas triés. Pour les trier il faut
utiliser la commande :
 du -S | sort -n

=== Logiciels graphiques ===
Les logiciels ''Baobab'' (Gnome) et ''Krusader'' (KDE) permettent de voir de
manière graphique quel dossier et quel fichiers occupent le plus d'espace. Ces
logiciel étant très bien fait, il ne semble pas qu'il soit très utile
d'expliquer leur utilisation. Notez juste que ces paquets ne feront qu'analyser
le disque c'est à vous par la suite de supprimer les fichiers en question.

Il existe aussi ''xdiskusage''. Très simple il permet de voir l'occupation
partition par partition et indique l'espace libre.

== FSLint ==
''Travail en cours''</text>
      <sha1>qnsfesfvxye3w99k79msrdrt40zmtf4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>769</id>
      <parentid>569</parentid>
      <timestamp>2010-02-02T18:24:35Z</timestamp>
      <contributor>
        <username>Le fada</username>
        <id>3</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="4795">Nettoyage d'une Debian en vu de gagner de la place

= Objectif =
Vous avez installé une Debian depuis quelques temps déjà et vous commencez à
manquer de place sur votre partition / ? Voici quelques astuces pour gagner
plusieurs centaines de mégaoctets.

Note : ce document n'hésite pas une seule seconde à utiliser des commandes
dites complexes (sous-shell, commande à la chaine,...). Elles peuvent être
difficiles à comprendre mais nous vous conseillons de les comprendre plutôt que
de les réutiliser sans comprendre. Ainsi vous verrez si quelqu'un a modifié
la page pour modifier les commandes.

= DPKG =
DPKG et APT sont de puissants outils y compris lorsqu'il s'agit de gagner de
la place.

== Fichiers de configuration non supprimés ==
Lors de la désinstallation d'un logiciel le comportement par défaut consiste à
garder les fichiers de configuration afin de pouvoir les réutiliser en cas de
réinstallation du logiciel en question. Pour nettoyer votre Debian de tout ces
fichiers superflus une seule commande suffit :
 dpkg -P $(dpkg -l | grep '^rc' | awk '{ print $2 }'

Ensuite si vous souhaitez que la suppression des fichiers de configuration se
fasse automatiquement il suffit d'ajouter ceci au fichier /etc/apt/apt.conf :
 APT::Get::Purge &quot;true&quot;

== Dépendances orphelines ==
Lorsque vous installez un logiciel un certain nombre de dépendances
s'installent avec lui. Par contre lorsque vous désinstallez ce même logiciel
les dépendances ne partent pas systématiquement avec lui. Pour supprimer ces
dépendances il existe deborphan (ou la version avec une interface graphique
gtkorphan) qui liste les bibliothèques orphelines.

Un simple appel permet de lister les paquets qu'il considère comme orphelins.
Il faut noter que certains de ces paquets peuvent être utiles. En effet certains
apportent des fonctionnalités sans être des dépendances. Si deborphan liste un
paquet que vous souhaitez garder vous pouvez utiliser cette commande :
 deborphan --add-keep &lt;nom paquet&gt;

Ensuite une fois que l'on est sur que deborphan ne prend pas en compte les
paquets que l'on veut garder, il suffit de lancer la commande :
 aptitude remove $(deborphan)

== Cache APT ==
Lorsque l'on installe des logiciels APT va télécharger des paquets debian
(*.deb) et va les installer un à un. Pour diverses raisons (ne pas
re-télécharger le paquet en cas de réinstallation par exemple), ces
paquets ne sont pas supprimés après l'installation.

On peut d'une part supprimer tout les paquets en cache inutile (si on a
plusieurs versions d'un même paquet on ne garde que la dernière). Cela
se fait avec la commande :
 aptitude autoclean

Si on veut supprimer tout les paquets du cache :
 aptitude clean

Bien sur il est possible (mais déconseillé) de rendre cette maintenance
automatique, comme avec l'option purge (voir la page man de apt.conf).

== Localepurge ==
localepurge permet de ne garder que les fichiers d'internationalisation 
des langues que vous choisissez. Elle est très simple à mettre en place et peut
permettre de gagner beaucoup de place. Il suffit de l'installer puis elle
libère la place toute seule de manière automatique lors de l'installation ou la
suppression de programme.
 aptitude install localepurge

Lors de l'installation, il vous sera demandé de choisir les langues que vous
souhaitez garder. Je vous conseil fr_FR, fr_FR@UTF-8 et fr_FR@euro.

== Popularity contest ==
''Travail en cours''

== Debfoster ==
''Travail en cours''

= Fichiers utilisateurs =
Si votre dossier /home vous semble démesurément gros et que vous souhaitez en
diminuer la taille, il existe quelques commandes et quelques logiciels très
intéressants.

== Voir l'espace occupé par l'arborescence ==
Cette partie va vous expliquer comment trouver les dossiers et les fichiers les
plus gros d'un dossier donné. Ensuite il suffira de les supprimer ou les
compresser de la manière qu'il vous conviendra.

=== Commandes ===
Pour connaitre la taille de tous les dossiers et sous-dossiers du répertoire
courant, il suffit de taper la commande :
 du -ah

Le problème c'est que les fichiers ne seront pas triés. Pour les trier il faut
utiliser la commande :
 du -S | sort -n

=== Logiciels graphiques ===
Les logiciels ''Baobab'' (Gnome) et ''Krusader'' (KDE) permettent de voir de
manière graphique quel dossier et quels fichiers occupent le plus d'espace. Ces
logiciels étant très bien faits, il ne semble pas qu'il soit très utile
d'expliquer leur utilisation. Notez juste que ces paquets ne feront qu'analyser
le disque, c'est à vous par la suite de supprimer les fichiers en question.

Il existe aussi ''xdiskusage''. Très simple, il permet de voir l'occupation
partition par partition et indique l'espace libre.

== FSLint ==
''Travail en cours''</text>
      <sha1>qzlubaftk154hg3ocm8ff3k1ujneuc3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>864</id>
      <parentid>769</parentid>
      <timestamp>2010-02-04T18:51:08Z</timestamp>
      <contributor>
        <username>Fran.b</username>
        <id>13</id>
      </contributor>
      <comment>/* Dépendances orphelines */</comment>
      <text xml:space="preserve" bytes="5103">Nettoyage d'une Debian en vu de gagner de la place

= Objectif =
Vous avez installé une Debian depuis quelques temps déjà et vous commencez à
manquer de place sur votre partition / ? Voici quelques astuces pour gagner
plusieurs centaines de mégaoctets.

Note : ce document n'hésite pas une seule seconde à utiliser des commandes
dites complexes (sous-shell, commande à la chaine,...). Elles peuvent être
difficiles à comprendre mais nous vous conseillons de les comprendre plutôt que
de les réutiliser sans comprendre. Ainsi vous verrez si quelqu'un a modifié
la page pour modifier les commandes.

= DPKG =
DPKG et APT sont de puissants outils y compris lorsqu'il s'agit de gagner de
la place.

== Fichiers de configuration non supprimés ==
Lors de la désinstallation d'un logiciel le comportement par défaut consiste à
garder les fichiers de configuration afin de pouvoir les réutiliser en cas de
réinstallation du logiciel en question. Pour nettoyer votre Debian de tout ces
fichiers superflus une seule commande suffit :
 dpkg -P $(dpkg -l | grep '^rc' | awk '{ print $2 }'

Ensuite si vous souhaitez que la suppression des fichiers de configuration se
fasse automatiquement il suffit d'ajouter ceci au fichier /etc/apt/apt.conf :
 APT::Get::Purge &quot;true&quot;

== Dépendances orphelines ==
Lorsque vous installez un logiciel un certain nombre de dépendances
s'installent avec lui. Par contre lorsque vous désinstallez ce même logiciel
les dépendances ne partent pas systématiquement avec lui (par exemple si vous
n'avez pas utilisé aptitude ou bien apt-get avec l'option auto-remove, ou 
encore si vous avez installé ces paquets explicitement). Il arrive donc
souvent que des paquets inutiles subsistent. Pour trouver certains de ces paquets
et éventuellement les supprimer, il existe 
deborphan (ou la version avec une interface graphique
gtkorphan) qui liste les bibliothèques orphelines.

Un simple appel permet de lister les paquets qu'il considère comme orphelins (autrement
dit non nécessaires au système a priori).
Il faut noter que certains de ces paquets peuvent être utiles. En effet certains
apportent des fonctionnalités sans être des dépendances. Si deborphan liste un
paquet que vous souhaitez garder vous pouvez utiliser cette commande :
 deborphan --add-keep &lt;nom paquet&gt;

Ensuite une fois que l'on est sur que deborphan ne prend pas en compte les
paquets que l'on veut garder, il suffit de lancer la commande :
 aptitude remove $(deborphan)

== Cache APT ==
Lorsque l'on installe des logiciels APT va télécharger des paquets debian
(*.deb) et va les installer un à un. Pour diverses raisons (ne pas
re-télécharger le paquet en cas de réinstallation par exemple), ces
paquets ne sont pas supprimés après l'installation.

On peut d'une part supprimer tout les paquets en cache inutile (si on a
plusieurs versions d'un même paquet on ne garde que la dernière). Cela
se fait avec la commande :
 aptitude autoclean

Si on veut supprimer tout les paquets du cache :
 aptitude clean

Bien sur il est possible (mais déconseillé) de rendre cette maintenance
automatique, comme avec l'option purge (voir la page man de apt.conf).

== Localepurge ==
localepurge permet de ne garder que les fichiers d'internationalisation 
des langues que vous choisissez. Elle est très simple à mettre en place et peut
permettre de gagner beaucoup de place. Il suffit de l'installer puis elle
libère la place toute seule de manière automatique lors de l'installation ou la
suppression de programme.
 aptitude install localepurge

Lors de l'installation, il vous sera demandé de choisir les langues que vous
souhaitez garder. Je vous conseil fr_FR, fr_FR@UTF-8 et fr_FR@euro.

== Popularity contest ==
''Travail en cours''

== Debfoster ==
''Travail en cours''

= Fichiers utilisateurs =
Si votre dossier /home vous semble démesurément gros et que vous souhaitez en
diminuer la taille, il existe quelques commandes et quelques logiciels très
intéressants.

== Voir l'espace occupé par l'arborescence ==
Cette partie va vous expliquer comment trouver les dossiers et les fichiers les
plus gros d'un dossier donné. Ensuite il suffira de les supprimer ou les
compresser de la manière qu'il vous conviendra.

=== Commandes ===
Pour connaitre la taille de tous les dossiers et sous-dossiers du répertoire
courant, il suffit de taper la commande :
 du -ah

Le problème c'est que les fichiers ne seront pas triés. Pour les trier il faut
utiliser la commande :
 du -S | sort -n

=== Logiciels graphiques ===
Les logiciels ''Baobab'' (Gnome) et ''Krusader'' (KDE) permettent de voir de
manière graphique quel dossier et quels fichiers occupent le plus d'espace. Ces
logiciels étant très bien faits, il ne semble pas qu'il soit très utile
d'expliquer leur utilisation. Notez juste que ces paquets ne feront qu'analyser
le disque, c'est à vous par la suite de supprimer les fichiers en question.

Il existe aussi ''xdiskusage''. Très simple, il permet de voir l'occupation
partition par partition et indique l'espace libre.

== FSLint ==
''Travail en cours''</text>
      <sha1>898ny1jhcjyj4vubbrmtza3scfn81ji</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>865</id>
      <parentid>864</parentid>
      <timestamp>2010-02-04T18:52:29Z</timestamp>
      <contributor>
        <username>Fran.b</username>
        <id>13</id>
      </contributor>
      <comment>/* Cache APT */</comment>
      <text xml:space="preserve" bytes="5127">Nettoyage d'une Debian en vu de gagner de la place

= Objectif =
Vous avez installé une Debian depuis quelques temps déjà et vous commencez à
manquer de place sur votre partition / ? Voici quelques astuces pour gagner
plusieurs centaines de mégaoctets.

Note : ce document n'hésite pas une seule seconde à utiliser des commandes
dites complexes (sous-shell, commande à la chaine,...). Elles peuvent être
difficiles à comprendre mais nous vous conseillons de les comprendre plutôt que
de les réutiliser sans comprendre. Ainsi vous verrez si quelqu'un a modifié
la page pour modifier les commandes.

= DPKG =
DPKG et APT sont de puissants outils y compris lorsqu'il s'agit de gagner de
la place.

== Fichiers de configuration non supprimés ==
Lors de la désinstallation d'un logiciel le comportement par défaut consiste à
garder les fichiers de configuration afin de pouvoir les réutiliser en cas de
réinstallation du logiciel en question. Pour nettoyer votre Debian de tout ces
fichiers superflus une seule commande suffit :
 dpkg -P $(dpkg -l | grep '^rc' | awk '{ print $2 }'

Ensuite si vous souhaitez que la suppression des fichiers de configuration se
fasse automatiquement il suffit d'ajouter ceci au fichier /etc/apt/apt.conf :
 APT::Get::Purge &quot;true&quot;

== Dépendances orphelines ==
Lorsque vous installez un logiciel un certain nombre de dépendances
s'installent avec lui. Par contre lorsque vous désinstallez ce même logiciel
les dépendances ne partent pas systématiquement avec lui (par exemple si vous
n'avez pas utilisé aptitude ou bien apt-get avec l'option auto-remove, ou 
encore si vous avez installé ces paquets explicitement). Il arrive donc
souvent que des paquets inutiles subsistent. Pour trouver certains de ces paquets
et éventuellement les supprimer, il existe 
deborphan (ou la version avec une interface graphique
gtkorphan) qui liste les bibliothèques orphelines.

Un simple appel permet de lister les paquets qu'il considère comme orphelins (autrement
dit non nécessaires au système a priori).
Il faut noter que certains de ces paquets peuvent être utiles. En effet certains
apportent des fonctionnalités sans être des dépendances. Si deborphan liste un
paquet que vous souhaitez garder vous pouvez utiliser cette commande :
 deborphan --add-keep &lt;nom paquet&gt;

Ensuite une fois que l'on est sur que deborphan ne prend pas en compte les
paquets que l'on veut garder, il suffit de lancer la commande :
 aptitude remove $(deborphan)

== Cache APT ==
Lorsque l'on installe des logiciels APT va télécharger des paquets debian
(*.deb) et va les installer un à un. Pour diverses raisons (ne pas
re-télécharger le paquet en cas de réinstallation par exemple), ces
paquets ne sont pas supprimés après l'installation.

On peut d'une part supprimer tout les paquets en cache inutile (si on a
plusieurs versions d'un même paquet on ne garde que la dernière). Cela
se fait avec la commande :
 aptitude autoclean

Si on veut supprimer tout les paquets du cache :
 aptitude clean
ou encore
 apt-get clean
Bien sur il est possible (mais déconseillé) de rendre cette maintenance
automatique, comme avec l'option purge (voir la page man de apt.conf).

== Localepurge ==
localepurge permet de ne garder que les fichiers d'internationalisation 
des langues que vous choisissez. Elle est très simple à mettre en place et peut
permettre de gagner beaucoup de place. Il suffit de l'installer puis elle
libère la place toute seule de manière automatique lors de l'installation ou la
suppression de programme.
 aptitude install localepurge

Lors de l'installation, il vous sera demandé de choisir les langues que vous
souhaitez garder. Je vous conseil fr_FR, fr_FR@UTF-8 et fr_FR@euro.

== Popularity contest ==
''Travail en cours''

== Debfoster ==
''Travail en cours''

= Fichiers utilisateurs =
Si votre dossier /home vous semble démesurément gros et que vous souhaitez en
diminuer la taille, il existe quelques commandes et quelques logiciels très
intéressants.

== Voir l'espace occupé par l'arborescence ==
Cette partie va vous expliquer comment trouver les dossiers et les fichiers les
plus gros d'un dossier donné. Ensuite il suffira de les supprimer ou les
compresser de la manière qu'il vous conviendra.

=== Commandes ===
Pour connaitre la taille de tous les dossiers et sous-dossiers du répertoire
courant, il suffit de taper la commande :
 du -ah

Le problème c'est que les fichiers ne seront pas triés. Pour les trier il faut
utiliser la commande :
 du -S | sort -n

=== Logiciels graphiques ===
Les logiciels ''Baobab'' (Gnome) et ''Krusader'' (KDE) permettent de voir de
manière graphique quel dossier et quels fichiers occupent le plus d'espace. Ces
logiciels étant très bien faits, il ne semble pas qu'il soit très utile
d'expliquer leur utilisation. Notez juste que ces paquets ne feront qu'analyser
le disque, c'est à vous par la suite de supprimer les fichiers en question.

Il existe aussi ''xdiskusage''. Très simple, il permet de voir l'occupation
partition par partition et indique l'espace libre.

== FSLint ==
''Travail en cours''</text>
      <sha1>31fw0kexs0c77em5hhsliqpgn9qdq57</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>866</id>
      <parentid>865</parentid>
      <timestamp>2010-02-04T18:55:19Z</timestamp>
      <contributor>
        <username>Fran.b</username>
        <id>13</id>
      </contributor>
      <comment>/* Localepurge */</comment>
      <text xml:space="preserve" bytes="5415">Nettoyage d'une Debian en vu de gagner de la place

= Objectif =
Vous avez installé une Debian depuis quelques temps déjà et vous commencez à
manquer de place sur votre partition / ? Voici quelques astuces pour gagner
plusieurs centaines de mégaoctets.

Note : ce document n'hésite pas une seule seconde à utiliser des commandes
dites complexes (sous-shell, commande à la chaine,...). Elles peuvent être
difficiles à comprendre mais nous vous conseillons de les comprendre plutôt que
de les réutiliser sans comprendre. Ainsi vous verrez si quelqu'un a modifié
la page pour modifier les commandes.

= DPKG =
DPKG et APT sont de puissants outils y compris lorsqu'il s'agit de gagner de
la place.

== Fichiers de configuration non supprimés ==
Lors de la désinstallation d'un logiciel le comportement par défaut consiste à
garder les fichiers de configuration afin de pouvoir les réutiliser en cas de
réinstallation du logiciel en question. Pour nettoyer votre Debian de tout ces
fichiers superflus une seule commande suffit :
 dpkg -P $(dpkg -l | grep '^rc' | awk '{ print $2 }'

Ensuite si vous souhaitez que la suppression des fichiers de configuration se
fasse automatiquement il suffit d'ajouter ceci au fichier /etc/apt/apt.conf :
 APT::Get::Purge &quot;true&quot;

== Dépendances orphelines ==
Lorsque vous installez un logiciel un certain nombre de dépendances
s'installent avec lui. Par contre lorsque vous désinstallez ce même logiciel
les dépendances ne partent pas systématiquement avec lui (par exemple si vous
n'avez pas utilisé aptitude ou bien apt-get avec l'option auto-remove, ou 
encore si vous avez installé ces paquets explicitement). Il arrive donc
souvent que des paquets inutiles subsistent. Pour trouver certains de ces paquets
et éventuellement les supprimer, il existe 
deborphan (ou la version avec une interface graphique
gtkorphan) qui liste les bibliothèques orphelines.

Un simple appel permet de lister les paquets qu'il considère comme orphelins (autrement
dit non nécessaires au système a priori).
Il faut noter que certains de ces paquets peuvent être utiles. En effet certains
apportent des fonctionnalités sans être des dépendances. Si deborphan liste un
paquet que vous souhaitez garder vous pouvez utiliser cette commande :
 deborphan --add-keep &lt;nom paquet&gt;

Ensuite une fois que l'on est sur que deborphan ne prend pas en compte les
paquets que l'on veut garder, il suffit de lancer la commande :
 aptitude remove $(deborphan)

== Cache APT ==
Lorsque l'on installe des logiciels APT va télécharger des paquets debian
(*.deb) et va les installer un à un. Pour diverses raisons (ne pas
re-télécharger le paquet en cas de réinstallation par exemple), ces
paquets ne sont pas supprimés après l'installation.

On peut d'une part supprimer tout les paquets en cache inutile (si on a
plusieurs versions d'un même paquet on ne garde que la dernière). Cela
se fait avec la commande :
 aptitude autoclean

Si on veut supprimer tout les paquets du cache :
 aptitude clean
ou encore
 apt-get clean
Bien sur il est possible (mais déconseillé) de rendre cette maintenance
automatique, comme avec l'option purge (voir la page man de apt.conf).

== Localepurge ==
localepurge permet de ne garder que les fichiers d'internationalisation 
des langues que vous choisissez. Elle est très simple à mettre en place et peut
permettre de gagner beaucoup de place. Il suffit de l'installer puis elle
libère la place toute seule de manière automatique lors de l'installation ou la
suppression de programme.
 aptitude install localepurge

Lors de l'installation, il vous sera demandé de choisir les langues que vous
souhaitez garder. Je vous conseil fr_FR, fr_FR@UTF-8 et fr_FR@euro.

Attention, cette action est irréversible. Notamment les paquets reconstruits via 
dpkg-repack seront par exemple incomplet. La purge de ce paquet n'a d'effet que pour
les paquets à venir qui seront installés de nouveau complètement (avec le serbo-croate,
le russe, le chinois, etc).

== Popularity contest ==
''Travail en cours''

== Debfoster ==
''Travail en cours''

= Fichiers utilisateurs =
Si votre dossier /home vous semble démesurément gros et que vous souhaitez en
diminuer la taille, il existe quelques commandes et quelques logiciels très
intéressants.

== Voir l'espace occupé par l'arborescence ==
Cette partie va vous expliquer comment trouver les dossiers et les fichiers les
plus gros d'un dossier donné. Ensuite il suffira de les supprimer ou les
compresser de la manière qu'il vous conviendra.

=== Commandes ===
Pour connaitre la taille de tous les dossiers et sous-dossiers du répertoire
courant, il suffit de taper la commande :
 du -ah

Le problème c'est que les fichiers ne seront pas triés. Pour les trier il faut
utiliser la commande :
 du -S | sort -n

=== Logiciels graphiques ===
Les logiciels ''Baobab'' (Gnome) et ''Krusader'' (KDE) permettent de voir de
manière graphique quel dossier et quels fichiers occupent le plus d'espace. Ces
logiciels étant très bien faits, il ne semble pas qu'il soit très utile
d'expliquer leur utilisation. Notez juste que ces paquets ne feront qu'analyser
le disque, c'est à vous par la suite de supprimer les fichiers en question.

Il existe aussi ''xdiskusage''. Très simple, il permet de voir l'occupation
partition par partition et indique l'espace libre.

== FSLint ==
''Travail en cours''</text>
      <sha1>fairnbl9kruob1vv9s3v5kel5nkh8l2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>917</id>
      <parentid>866</parentid>
      <timestamp>2010-02-05T19:04:03Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <minor/>
      <comment>ça le fait &quot;catégorie personalisation&quot; ?</comment>
      <text xml:space="preserve" bytes="5447">Nettoyage d'une Debian en vu de gagner de la place

= Objectif =
Vous avez installé une Debian depuis quelques temps déjà et vous commencez à
manquer de place sur votre partition / ? Voici quelques astuces pour gagner
plusieurs centaines de mégaoctets.

Note : ce document n'hésite pas une seule seconde à utiliser des commandes
dites complexes (sous-shell, commande à la chaine,...). Elles peuvent être
difficiles à comprendre mais nous vous conseillons de les comprendre plutôt que
de les réutiliser sans comprendre. Ainsi vous verrez si quelqu'un a modifié
la page pour modifier les commandes.

= DPKG =
DPKG et APT sont de puissants outils y compris lorsqu'il s'agit de gagner de
la place.

== Fichiers de configuration non supprimés ==
Lors de la désinstallation d'un logiciel le comportement par défaut consiste à
garder les fichiers de configuration afin de pouvoir les réutiliser en cas de
réinstallation du logiciel en question. Pour nettoyer votre Debian de tout ces
fichiers superflus une seule commande suffit :
 dpkg -P $(dpkg -l | grep '^rc' | awk '{ print $2 }'

Ensuite si vous souhaitez que la suppression des fichiers de configuration se
fasse automatiquement il suffit d'ajouter ceci au fichier /etc/apt/apt.conf :
 APT::Get::Purge &quot;true&quot;

== Dépendances orphelines ==
Lorsque vous installez un logiciel un certain nombre de dépendances
s'installent avec lui. Par contre lorsque vous désinstallez ce même logiciel
les dépendances ne partent pas systématiquement avec lui (par exemple si vous
n'avez pas utilisé aptitude ou bien apt-get avec l'option auto-remove, ou 
encore si vous avez installé ces paquets explicitement). Il arrive donc
souvent que des paquets inutiles subsistent. Pour trouver certains de ces paquets
et éventuellement les supprimer, il existe 
deborphan (ou la version avec une interface graphique
gtkorphan) qui liste les bibliothèques orphelines.

Un simple appel permet de lister les paquets qu'il considère comme orphelins (autrement
dit non nécessaires au système a priori).
Il faut noter que certains de ces paquets peuvent être utiles. En effet certains
apportent des fonctionnalités sans être des dépendances. Si deborphan liste un
paquet que vous souhaitez garder vous pouvez utiliser cette commande :
 deborphan --add-keep &lt;nom paquet&gt;

Ensuite une fois que l'on est sur que deborphan ne prend pas en compte les
paquets que l'on veut garder, il suffit de lancer la commande :
 aptitude remove $(deborphan)

== Cache APT ==
Lorsque l'on installe des logiciels APT va télécharger des paquets debian
(*.deb) et va les installer un à un. Pour diverses raisons (ne pas
re-télécharger le paquet en cas de réinstallation par exemple), ces
paquets ne sont pas supprimés après l'installation.

On peut d'une part supprimer tout les paquets en cache inutile (si on a
plusieurs versions d'un même paquet on ne garde que la dernière). Cela
se fait avec la commande :
 aptitude autoclean

Si on veut supprimer tout les paquets du cache :
 aptitude clean
ou encore
 apt-get clean
Bien sur il est possible (mais déconseillé) de rendre cette maintenance
automatique, comme avec l'option purge (voir la page man de apt.conf).

== Localepurge ==
localepurge permet de ne garder que les fichiers d'internationalisation 
des langues que vous choisissez. Elle est très simple à mettre en place et peut
permettre de gagner beaucoup de place. Il suffit de l'installer puis elle
libère la place toute seule de manière automatique lors de l'installation ou la
suppression de programme.
 aptitude install localepurge

Lors de l'installation, il vous sera demandé de choisir les langues que vous
souhaitez garder. Je vous conseil fr_FR, fr_FR@UTF-8 et fr_FR@euro.

Attention, cette action est irréversible. Notamment les paquets reconstruits via 
dpkg-repack seront par exemple incomplet. La purge de ce paquet n'a d'effet que pour
les paquets à venir qui seront installés de nouveau complètement (avec le serbo-croate,
le russe, le chinois, etc).

== Popularity contest ==
''Travail en cours''

== Debfoster ==
''Travail en cours''

= Fichiers utilisateurs =
Si votre dossier /home vous semble démesurément gros et que vous souhaitez en
diminuer la taille, il existe quelques commandes et quelques logiciels très
intéressants.

== Voir l'espace occupé par l'arborescence ==
Cette partie va vous expliquer comment trouver les dossiers et les fichiers les
plus gros d'un dossier donné. Ensuite il suffira de les supprimer ou les
compresser de la manière qu'il vous conviendra.

=== Commandes ===
Pour connaitre la taille de tous les dossiers et sous-dossiers du répertoire
courant, il suffit de taper la commande :
 du -ah

Le problème c'est que les fichiers ne seront pas triés. Pour les trier il faut
utiliser la commande :
 du -S | sort -n

=== Logiciels graphiques ===
Les logiciels ''Baobab'' (Gnome) et ''Krusader'' (KDE) permettent de voir de
manière graphique quel dossier et quels fichiers occupent le plus d'espace. Ces
logiciels étant très bien faits, il ne semble pas qu'il soit très utile
d'expliquer leur utilisation. Notez juste que ces paquets ne feront qu'analyser
le disque, c'est à vous par la suite de supprimer les fichiers en question.

Il existe aussi ''xdiskusage''. Très simple, il permet de voir l'occupation
partition par partition et indique l'espace libre.

== FSLint ==
''Travail en cours''
[[Catégorie:Personnalisation]]</text>
      <sha1>ezssuirir6tphbc6a8sno1tjc4t02pq</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1109</id>
      <parentid>917</parentid>
      <timestamp>2010-02-28T15:19:53Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Fichiers de configuration non supprimés */</comment>
      <text xml:space="preserve" bytes="5448">Nettoyage d'une Debian en vu de gagner de la place

= Objectif =
Vous avez installé une Debian depuis quelques temps déjà et vous commencez à
manquer de place sur votre partition / ? Voici quelques astuces pour gagner
plusieurs centaines de mégaoctets.

Note : ce document n'hésite pas une seule seconde à utiliser des commandes
dites complexes (sous-shell, commande à la chaine,...). Elles peuvent être
difficiles à comprendre mais nous vous conseillons de les comprendre plutôt que
de les réutiliser sans comprendre. Ainsi vous verrez si quelqu'un a modifié
la page pour modifier les commandes.

= DPKG =
DPKG et APT sont de puissants outils y compris lorsqu'il s'agit de gagner de
la place.

== Fichiers de configuration non supprimés ==
Lors de la désinstallation d'un logiciel le comportement par défaut consiste à
garder les fichiers de configuration afin de pouvoir les réutiliser en cas de
réinstallation du logiciel en question. Pour nettoyer votre Debian de tout ces
fichiers superflus une seule commande suffit :
 dpkg -P $(dpkg -l | grep '^rc' | awk '{ print $2 }')

Ensuite si vous souhaitez que la suppression des fichiers de configuration se
fasse automatiquement il suffit d'ajouter ceci au fichier /etc/apt/apt.conf :
 APT::Get::Purge &quot;true&quot;

== Dépendances orphelines ==
Lorsque vous installez un logiciel un certain nombre de dépendances
s'installent avec lui. Par contre lorsque vous désinstallez ce même logiciel
les dépendances ne partent pas systématiquement avec lui (par exemple si vous
n'avez pas utilisé aptitude ou bien apt-get avec l'option auto-remove, ou 
encore si vous avez installé ces paquets explicitement). Il arrive donc
souvent que des paquets inutiles subsistent. Pour trouver certains de ces paquets
et éventuellement les supprimer, il existe 
deborphan (ou la version avec une interface graphique
gtkorphan) qui liste les bibliothèques orphelines.

Un simple appel permet de lister les paquets qu'il considère comme orphelins (autrement
dit non nécessaires au système a priori).
Il faut noter que certains de ces paquets peuvent être utiles. En effet certains
apportent des fonctionnalités sans être des dépendances. Si deborphan liste un
paquet que vous souhaitez garder vous pouvez utiliser cette commande :
 deborphan --add-keep &lt;nom paquet&gt;

Ensuite une fois que l'on est sur que deborphan ne prend pas en compte les
paquets que l'on veut garder, il suffit de lancer la commande :
 aptitude remove $(deborphan)

== Cache APT ==
Lorsque l'on installe des logiciels APT va télécharger des paquets debian
(*.deb) et va les installer un à un. Pour diverses raisons (ne pas
re-télécharger le paquet en cas de réinstallation par exemple), ces
paquets ne sont pas supprimés après l'installation.

On peut d'une part supprimer tout les paquets en cache inutile (si on a
plusieurs versions d'un même paquet on ne garde que la dernière). Cela
se fait avec la commande :
 aptitude autoclean

Si on veut supprimer tout les paquets du cache :
 aptitude clean
ou encore
 apt-get clean
Bien sur il est possible (mais déconseillé) de rendre cette maintenance
automatique, comme avec l'option purge (voir la page man de apt.conf).

== Localepurge ==
localepurge permet de ne garder que les fichiers d'internationalisation 
des langues que vous choisissez. Elle est très simple à mettre en place et peut
permettre de gagner beaucoup de place. Il suffit de l'installer puis elle
libère la place toute seule de manière automatique lors de l'installation ou la
suppression de programme.
 aptitude install localepurge

Lors de l'installation, il vous sera demandé de choisir les langues que vous
souhaitez garder. Je vous conseil fr_FR, fr_FR@UTF-8 et fr_FR@euro.

Attention, cette action est irréversible. Notamment les paquets reconstruits via 
dpkg-repack seront par exemple incomplet. La purge de ce paquet n'a d'effet que pour
les paquets à venir qui seront installés de nouveau complètement (avec le serbo-croate,
le russe, le chinois, etc).

== Popularity contest ==
''Travail en cours''

== Debfoster ==
''Travail en cours''

= Fichiers utilisateurs =
Si votre dossier /home vous semble démesurément gros et que vous souhaitez en
diminuer la taille, il existe quelques commandes et quelques logiciels très
intéressants.

== Voir l'espace occupé par l'arborescence ==
Cette partie va vous expliquer comment trouver les dossiers et les fichiers les
plus gros d'un dossier donné. Ensuite il suffira de les supprimer ou les
compresser de la manière qu'il vous conviendra.

=== Commandes ===
Pour connaitre la taille de tous les dossiers et sous-dossiers du répertoire
courant, il suffit de taper la commande :
 du -ah

Le problème c'est que les fichiers ne seront pas triés. Pour les trier il faut
utiliser la commande :
 du -S | sort -n

=== Logiciels graphiques ===
Les logiciels ''Baobab'' (Gnome) et ''Krusader'' (KDE) permettent de voir de
manière graphique quel dossier et quels fichiers occupent le plus d'espace. Ces
logiciels étant très bien faits, il ne semble pas qu'il soit très utile
d'expliquer leur utilisation. Notez juste que ces paquets ne feront qu'analyser
le disque, c'est à vous par la suite de supprimer les fichiers en question.

Il existe aussi ''xdiskusage''. Très simple, il permet de voir l'occupation
partition par partition et indique l'espace libre.

== FSLint ==
''Travail en cours''
[[Catégorie:Personnalisation]]</text>
      <sha1>0tvuz8epkvovlm34rvgd5cy180ue5lk</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1364</id>
      <parentid>1109</parentid>
      <timestamp>2010-04-08T13:34:23Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="6670">Nettoyage d'une Debian en vu de gagner de la place

= Objectif =
Vous avez installé une Debian depuis quelques temps déjà et vous commencez à
manquer de place sur votre partition / ? Voici quelques astuces pour gagner
plusieurs centaines de mégaoctets.

Note : ce document n'hésite pas une seule seconde à utiliser des commandes
dites complexes (sous-shell, commande à la chaine,...). Elles peuvent être
difficiles à comprendre mais nous vous conseillons de les comprendre plutôt que
de les réutiliser sans comprendre. Ainsi vous verrez si quelqu'un a modifié
la page pour modifier les commandes.

= DPKG =
DPKG et APT sont de puissants outils y compris lorsqu'il s'agit de gagner de
la place.

== Repérez les fichiers de configuration &quot;orphelins&quot; ==

 $ aptitude search ~c
 c   bluez-audio                                             - Transitional package
 c   bluez-gnome                                             - utilitaires Bluetooth pour GNOME
 c   bluez-utils                                             - Transitional package
 c   chillispot                                              - Wireless LAN Access Point Controller
 ...

La commande suivante fait aussi ce travail, mais le résultat est compact, moins lisible :

 $ dpkg -l | grep ^rc |awk '{print $2}' | xargs echo
 bluez-audio bluez-gnome bluez-utils chillispot...

== Supprimer tous les Fichiers de configuration orphelins ==

Lors de la désinstallation d'un logiciel le comportement par défaut consiste à
garder les fichiers de configuration afin de pouvoir les réutiliser en cas de
réinstallation du logiciel en question. Pour nettoyer votre Debian de tout ces
fichiers superflus une seule commande suffit :
 dpkg -P $(dpkg -l | grep '^rc' | awk '{ print $2 }')

Ensuite si vous souhaitez que la suppression des fichiers de configuration se
fasse automatiquement il suffit d'ajouter ceci au fichier /etc/apt/apt.conf :
 APT::Get::Purge &quot;true&quot;

Vous préfèrerez peut-être utiliser cette commande qui supprimera aussi les dépendances devenues non nécessaires :

 # aptitude purge ~c

== Supprimer certains Fichiers de configuration orphelins ==

&quot;L'inconvénient&quot; des commandes ci-dessus est qu'elle suppriment TOUS les fichiers de configuration alors que vous souhaitez peut-être en conserver certains en vue d'une ré-installation ultérieure
La commande ci dessous ne supprimera la configuration et les dépendances inutiles que pour le paquet le_nom_du_paquet

 # aptitude purge le_nom_du_paquet

== Dépendances orphelines ==
Lorsque vous installez un logiciel un certain nombre de dépendances
s'installent avec lui. Par contre lorsque vous désinstallez ce même logiciel
les dépendances ne partent pas systématiquement avec lui (par exemple si vous
n'avez pas utilisé aptitude ou bien apt-get avec l'option auto-remove, ou 
encore si vous avez installé ces paquets explicitement). Il arrive donc
souvent que des paquets inutiles subsistent. Pour trouver certains de ces paquets
et éventuellement les supprimer, il existe 
deborphan (ou la version avec une interface graphique
gtkorphan) qui liste les bibliothèques orphelines.

Un simple appel permet de lister les paquets qu'il considère comme orphelins (autrement
dit non nécessaires au système a priori).
Il faut noter que certains de ces paquets peuvent être utiles. En effet certains
apportent des fonctionnalités sans être des dépendances. Si deborphan liste un
paquet que vous souhaitez garder vous pouvez utiliser cette commande :
 deborphan --add-keep &lt;nom paquet&gt;

Ensuite une fois que l'on est sur que deborphan ne prend pas en compte les
paquets que l'on veut garder, il suffit de lancer la commande :
 aptitude remove $(deborphan)

== Cache APT ==
Lorsque l'on installe des logiciels APT va télécharger des paquets debian
(*.deb) et va les installer un à un. Pour diverses raisons (ne pas
re-télécharger le paquet en cas de réinstallation par exemple), ces
paquets ne sont pas supprimés après l'installation.

On peut d'une part supprimer tout les paquets en cache inutile (si on a
plusieurs versions d'un même paquet on ne garde que la dernière). Cela
se fait avec la commande :
 aptitude autoclean

Si on veut supprimer tout les paquets du cache :
 aptitude clean
ou encore
 apt-get clean
Bien sur il est possible (mais déconseillé) de rendre cette maintenance
automatique, comme avec l'option purge (voir la page man de apt.conf).

== Localepurge ==
localepurge permet de ne garder que les fichiers d'internationalisation 
des langues que vous choisissez. Elle est très simple à mettre en place et peut
permettre de gagner beaucoup de place. Il suffit de l'installer puis elle
libère la place toute seule de manière automatique lors de l'installation ou la
suppression de programme.
 aptitude install localepurge

Lors de l'installation, il vous sera demandé de choisir les langues que vous
souhaitez garder. Je vous conseil fr_FR, fr_FR@UTF-8 et fr_FR@euro.

Attention, cette action est irréversible. Notamment les paquets reconstruits via 
dpkg-repack seront par exemple incomplet. La purge de ce paquet n'a d'effet que pour
les paquets à venir qui seront installés de nouveau complètement (avec le serbo-croate,
le russe, le chinois, etc).

== Popularity contest ==
''Travail en cours''

== Debfoster ==
''Travail en cours''

= Fichiers utilisateurs =
Si votre dossier /home vous semble démesurément gros et que vous souhaitez en
diminuer la taille, il existe quelques commandes et quelques logiciels très
intéressants.

== Voir l'espace occupé par l'arborescence ==
Cette partie va vous expliquer comment trouver les dossiers et les fichiers les
plus gros d'un dossier donné. Ensuite il suffira de les supprimer ou les
compresser de la manière qu'il vous conviendra.

=== Commandes ===
Pour connaitre la taille de tous les dossiers et sous-dossiers du répertoire
courant, il suffit de taper la commande :
 du -ah

Le problème c'est que les fichiers ne seront pas triés. Pour les trier il faut
utiliser la commande :
 du -S | sort -n

=== Logiciels graphiques ===
Les logiciels ''Baobab'' (Gnome) et ''Krusader'' (KDE) permettent de voir de
manière graphique quel dossier et quels fichiers occupent le plus d'espace. Ces
logiciels étant très bien faits, il ne semble pas qu'il soit très utile
d'expliquer leur utilisation. Notez juste que ces paquets ne feront qu'analyser
le disque, c'est à vous par la suite de supprimer les fichiers en question.

Il existe aussi ''xdiskusage''. Très simple, il permet de voir l'occupation
partition par partition et indique l'espace libre.

== FSLint ==
''Travail en cours''
[[Catégorie:Personnalisation]]</text>
      <sha1>1bkwq1ch156fflrqom2wpnp5311gtfl</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1604</id>
      <parentid>1364</parentid>
      <timestamp>2010-07-05T07:52:00Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="6709">#REDIRECT [[isalo:Nettoyer_sa_Debian]]
Nettoyage d'une Debian en vu de gagner de la place

= Objectif =
Vous avez installé une Debian depuis quelques temps déjà et vous commencez à
manquer de place sur votre partition / ? Voici quelques astuces pour gagner
plusieurs centaines de mégaoctets.

Note : ce document n'hésite pas une seule seconde à utiliser des commandes
dites complexes (sous-shell, commande à la chaine,...). Elles peuvent être
difficiles à comprendre mais nous vous conseillons de les comprendre plutôt que
de les réutiliser sans comprendre. Ainsi vous verrez si quelqu'un a modifié
la page pour modifier les commandes.

= DPKG =
DPKG et APT sont de puissants outils y compris lorsqu'il s'agit de gagner de
la place.

== Repérez les fichiers de configuration &quot;orphelins&quot; ==

 $ aptitude search ~c
 c   bluez-audio                                             - Transitional package
 c   bluez-gnome                                             - utilitaires Bluetooth pour GNOME
 c   bluez-utils                                             - Transitional package
 c   chillispot                                              - Wireless LAN Access Point Controller
 ...

La commande suivante fait aussi ce travail, mais le résultat est compact, moins lisible :

 $ dpkg -l | grep ^rc |awk '{print $2}' | xargs echo
 bluez-audio bluez-gnome bluez-utils chillispot...

== Supprimer tous les Fichiers de configuration orphelins ==

Lors de la désinstallation d'un logiciel le comportement par défaut consiste à
garder les fichiers de configuration afin de pouvoir les réutiliser en cas de
réinstallation du logiciel en question. Pour nettoyer votre Debian de tout ces
fichiers superflus une seule commande suffit :
 dpkg -P $(dpkg -l | grep '^rc' | awk '{ print $2 }')

Ensuite si vous souhaitez que la suppression des fichiers de configuration se
fasse automatiquement il suffit d'ajouter ceci au fichier /etc/apt/apt.conf :
 APT::Get::Purge &quot;true&quot;

Vous préfèrerez peut-être utiliser cette commande qui supprimera aussi les dépendances devenues non nécessaires :

 # aptitude purge ~c

== Supprimer certains Fichiers de configuration orphelins ==

&quot;L'inconvénient&quot; des commandes ci-dessus est qu'elle suppriment TOUS les fichiers de configuration alors que vous souhaitez peut-être en conserver certains en vue d'une ré-installation ultérieure
La commande ci dessous ne supprimera la configuration et les dépendances inutiles que pour le paquet le_nom_du_paquet

 # aptitude purge le_nom_du_paquet

== Dépendances orphelines ==
Lorsque vous installez un logiciel un certain nombre de dépendances
s'installent avec lui. Par contre lorsque vous désinstallez ce même logiciel
les dépendances ne partent pas systématiquement avec lui (par exemple si vous
n'avez pas utilisé aptitude ou bien apt-get avec l'option auto-remove, ou 
encore si vous avez installé ces paquets explicitement). Il arrive donc
souvent que des paquets inutiles subsistent. Pour trouver certains de ces paquets
et éventuellement les supprimer, il existe 
deborphan (ou la version avec une interface graphique
gtkorphan) qui liste les bibliothèques orphelines.

Un simple appel permet de lister les paquets qu'il considère comme orphelins (autrement
dit non nécessaires au système a priori).
Il faut noter que certains de ces paquets peuvent être utiles. En effet certains
apportent des fonctionnalités sans être des dépendances. Si deborphan liste un
paquet que vous souhaitez garder vous pouvez utiliser cette commande :
 deborphan --add-keep &lt;nom paquet&gt;

Ensuite une fois que l'on est sur que deborphan ne prend pas en compte les
paquets que l'on veut garder, il suffit de lancer la commande :
 aptitude remove $(deborphan)

== Cache APT ==
Lorsque l'on installe des logiciels APT va télécharger des paquets debian
(*.deb) et va les installer un à un. Pour diverses raisons (ne pas
re-télécharger le paquet en cas de réinstallation par exemple), ces
paquets ne sont pas supprimés après l'installation.

On peut d'une part supprimer tout les paquets en cache inutile (si on a
plusieurs versions d'un même paquet on ne garde que la dernière). Cela
se fait avec la commande :
 aptitude autoclean

Si on veut supprimer tout les paquets du cache :
 aptitude clean
ou encore
 apt-get clean
Bien sur il est possible (mais déconseillé) de rendre cette maintenance
automatique, comme avec l'option purge (voir la page man de apt.conf).

== Localepurge ==
localepurge permet de ne garder que les fichiers d'internationalisation 
des langues que vous choisissez. Elle est très simple à mettre en place et peut
permettre de gagner beaucoup de place. Il suffit de l'installer puis elle
libère la place toute seule de manière automatique lors de l'installation ou la
suppression de programme.
 aptitude install localepurge

Lors de l'installation, il vous sera demandé de choisir les langues que vous
souhaitez garder. Je vous conseil fr_FR, fr_FR@UTF-8 et fr_FR@euro.

Attention, cette action est irréversible. Notamment les paquets reconstruits via 
dpkg-repack seront par exemple incomplet. La purge de ce paquet n'a d'effet que pour
les paquets à venir qui seront installés de nouveau complètement (avec le serbo-croate,
le russe, le chinois, etc).

== Popularity contest ==
''Travail en cours''

== Debfoster ==
''Travail en cours''

= Fichiers utilisateurs =
Si votre dossier /home vous semble démesurément gros et que vous souhaitez en
diminuer la taille, il existe quelques commandes et quelques logiciels très
intéressants.

== Voir l'espace occupé par l'arborescence ==
Cette partie va vous expliquer comment trouver les dossiers et les fichiers les
plus gros d'un dossier donné. Ensuite il suffira de les supprimer ou les
compresser de la manière qu'il vous conviendra.

=== Commandes ===
Pour connaitre la taille de tous les dossiers et sous-dossiers du répertoire
courant, il suffit de taper la commande :
 du -ah

Le problème c'est que les fichiers ne seront pas triés. Pour les trier il faut
utiliser la commande :
 du -S | sort -n

=== Logiciels graphiques ===
Les logiciels ''Baobab'' (Gnome) et ''Krusader'' (KDE) permettent de voir de
manière graphique quel dossier et quels fichiers occupent le plus d'espace. Ces
logiciels étant très bien faits, il ne semble pas qu'il soit très utile
d'expliquer leur utilisation. Notez juste que ces paquets ne feront qu'analyser
le disque, c'est à vous par la suite de supprimer les fichiers en question.

Il existe aussi ''xdiskusage''. Très simple, il permet de voir l'occupation
partition par partition et indique l'espace libre.

== FSLint ==
''Travail en cours''
[[Catégorie:Personnalisation]]</text>
      <sha1>apz1rnsahblvge8l6hnaj6965rs6h47</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1653</id>
      <parentid>1604</parentid>
      <timestamp>2010-07-06T09:18:36Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Annulation des modifications 1604 de [[Special:Contributions/Lol|Lol]] ([[User talk:Lol|discussion]])</comment>
      <text xml:space="preserve" bytes="6670">Nettoyage d'une Debian en vu de gagner de la place

= Objectif =
Vous avez installé une Debian depuis quelques temps déjà et vous commencez à
manquer de place sur votre partition / ? Voici quelques astuces pour gagner
plusieurs centaines de mégaoctets.

Note : ce document n'hésite pas une seule seconde à utiliser des commandes
dites complexes (sous-shell, commande à la chaine,...). Elles peuvent être
difficiles à comprendre mais nous vous conseillons de les comprendre plutôt que
de les réutiliser sans comprendre. Ainsi vous verrez si quelqu'un a modifié
la page pour modifier les commandes.

= DPKG =
DPKG et APT sont de puissants outils y compris lorsqu'il s'agit de gagner de
la place.

== Repérez les fichiers de configuration &quot;orphelins&quot; ==

 $ aptitude search ~c
 c   bluez-audio                                             - Transitional package
 c   bluez-gnome                                             - utilitaires Bluetooth pour GNOME
 c   bluez-utils                                             - Transitional package
 c   chillispot                                              - Wireless LAN Access Point Controller
 ...

La commande suivante fait aussi ce travail, mais le résultat est compact, moins lisible :

 $ dpkg -l | grep ^rc |awk '{print $2}' | xargs echo
 bluez-audio bluez-gnome bluez-utils chillispot...

== Supprimer tous les Fichiers de configuration orphelins ==

Lors de la désinstallation d'un logiciel le comportement par défaut consiste à
garder les fichiers de configuration afin de pouvoir les réutiliser en cas de
réinstallation du logiciel en question. Pour nettoyer votre Debian de tout ces
fichiers superflus une seule commande suffit :
 dpkg -P $(dpkg -l | grep '^rc' | awk '{ print $2 }')

Ensuite si vous souhaitez que la suppression des fichiers de configuration se
fasse automatiquement il suffit d'ajouter ceci au fichier /etc/apt/apt.conf :
 APT::Get::Purge &quot;true&quot;

Vous préfèrerez peut-être utiliser cette commande qui supprimera aussi les dépendances devenues non nécessaires :

 # aptitude purge ~c

== Supprimer certains Fichiers de configuration orphelins ==

&quot;L'inconvénient&quot; des commandes ci-dessus est qu'elle suppriment TOUS les fichiers de configuration alors que vous souhaitez peut-être en conserver certains en vue d'une ré-installation ultérieure
La commande ci dessous ne supprimera la configuration et les dépendances inutiles que pour le paquet le_nom_du_paquet

 # aptitude purge le_nom_du_paquet

== Dépendances orphelines ==
Lorsque vous installez un logiciel un certain nombre de dépendances
s'installent avec lui. Par contre lorsque vous désinstallez ce même logiciel
les dépendances ne partent pas systématiquement avec lui (par exemple si vous
n'avez pas utilisé aptitude ou bien apt-get avec l'option auto-remove, ou 
encore si vous avez installé ces paquets explicitement). Il arrive donc
souvent que des paquets inutiles subsistent. Pour trouver certains de ces paquets
et éventuellement les supprimer, il existe 
deborphan (ou la version avec une interface graphique
gtkorphan) qui liste les bibliothèques orphelines.

Un simple appel permet de lister les paquets qu'il considère comme orphelins (autrement
dit non nécessaires au système a priori).
Il faut noter que certains de ces paquets peuvent être utiles. En effet certains
apportent des fonctionnalités sans être des dépendances. Si deborphan liste un
paquet que vous souhaitez garder vous pouvez utiliser cette commande :
 deborphan --add-keep &lt;nom paquet&gt;

Ensuite une fois que l'on est sur que deborphan ne prend pas en compte les
paquets que l'on veut garder, il suffit de lancer la commande :
 aptitude remove $(deborphan)

== Cache APT ==
Lorsque l'on installe des logiciels APT va télécharger des paquets debian
(*.deb) et va les installer un à un. Pour diverses raisons (ne pas
re-télécharger le paquet en cas de réinstallation par exemple), ces
paquets ne sont pas supprimés après l'installation.

On peut d'une part supprimer tout les paquets en cache inutile (si on a
plusieurs versions d'un même paquet on ne garde que la dernière). Cela
se fait avec la commande :
 aptitude autoclean

Si on veut supprimer tout les paquets du cache :
 aptitude clean
ou encore
 apt-get clean
Bien sur il est possible (mais déconseillé) de rendre cette maintenance
automatique, comme avec l'option purge (voir la page man de apt.conf).

== Localepurge ==
localepurge permet de ne garder que les fichiers d'internationalisation 
des langues que vous choisissez. Elle est très simple à mettre en place et peut
permettre de gagner beaucoup de place. Il suffit de l'installer puis elle
libère la place toute seule de manière automatique lors de l'installation ou la
suppression de programme.
 aptitude install localepurge

Lors de l'installation, il vous sera demandé de choisir les langues que vous
souhaitez garder. Je vous conseil fr_FR, fr_FR@UTF-8 et fr_FR@euro.

Attention, cette action est irréversible. Notamment les paquets reconstruits via 
dpkg-repack seront par exemple incomplet. La purge de ce paquet n'a d'effet que pour
les paquets à venir qui seront installés de nouveau complètement (avec le serbo-croate,
le russe, le chinois, etc).

== Popularity contest ==
''Travail en cours''

== Debfoster ==
''Travail en cours''

= Fichiers utilisateurs =
Si votre dossier /home vous semble démesurément gros et que vous souhaitez en
diminuer la taille, il existe quelques commandes et quelques logiciels très
intéressants.

== Voir l'espace occupé par l'arborescence ==
Cette partie va vous expliquer comment trouver les dossiers et les fichiers les
plus gros d'un dossier donné. Ensuite il suffira de les supprimer ou les
compresser de la manière qu'il vous conviendra.

=== Commandes ===
Pour connaitre la taille de tous les dossiers et sous-dossiers du répertoire
courant, il suffit de taper la commande :
 du -ah

Le problème c'est que les fichiers ne seront pas triés. Pour les trier il faut
utiliser la commande :
 du -S | sort -n

=== Logiciels graphiques ===
Les logiciels ''Baobab'' (Gnome) et ''Krusader'' (KDE) permettent de voir de
manière graphique quel dossier et quels fichiers occupent le plus d'espace. Ces
logiciels étant très bien faits, il ne semble pas qu'il soit très utile
d'expliquer leur utilisation. Notez juste que ces paquets ne feront qu'analyser
le disque, c'est à vous par la suite de supprimer les fichiers en question.

Il existe aussi ''xdiskusage''. Très simple, il permet de voir l'occupation
partition par partition et indique l'espace libre.

== FSLint ==
''Travail en cours''
[[Catégorie:Personnalisation]]</text>
      <sha1>1bkwq1ch156fflrqom2wpnp5311gtfl</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1908</id>
      <parentid>1653</parentid>
      <timestamp>2010-08-09T18:30:36Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Dépendances orphelines */</comment>
      <text xml:space="preserve" bytes="6672">Nettoyage d'une Debian en vu de gagner de la place

= Objectif =
Vous avez installé une Debian depuis quelques temps déjà et vous commencez à
manquer de place sur votre partition / ? Voici quelques astuces pour gagner
plusieurs centaines de mégaoctets.

Note : ce document n'hésite pas une seule seconde à utiliser des commandes
dites complexes (sous-shell, commande à la chaine,...). Elles peuvent être
difficiles à comprendre mais nous vous conseillons de les comprendre plutôt que
de les réutiliser sans comprendre. Ainsi vous verrez si quelqu'un a modifié
la page pour modifier les commandes.

= DPKG =
DPKG et APT sont de puissants outils y compris lorsqu'il s'agit de gagner de
la place.

== Repérez les fichiers de configuration &quot;orphelins&quot; ==

 $ aptitude search ~c
 c   bluez-audio                                             - Transitional package
 c   bluez-gnome                                             - utilitaires Bluetooth pour GNOME
 c   bluez-utils                                             - Transitional package
 c   chillispot                                              - Wireless LAN Access Point Controller
 ...

La commande suivante fait aussi ce travail, mais le résultat est compact, moins lisible :

 $ dpkg -l | grep ^rc |awk '{print $2}' | xargs echo
 bluez-audio bluez-gnome bluez-utils chillispot...

== Supprimer tous les Fichiers de configuration orphelins ==

Lors de la désinstallation d'un logiciel le comportement par défaut consiste à
garder les fichiers de configuration afin de pouvoir les réutiliser en cas de
réinstallation du logiciel en question. Pour nettoyer votre Debian de tout ces
fichiers superflus une seule commande suffit :
 dpkg -P $(dpkg -l | grep '^rc' | awk '{ print $2 }')

Ensuite si vous souhaitez que la suppression des fichiers de configuration se
fasse automatiquement il suffit d'ajouter ceci au fichier /etc/apt/apt.conf :
 APT::Get::Purge &quot;true&quot;

Vous préfèrerez peut-être utiliser cette commande qui supprimera aussi les dépendances devenues non nécessaires :

 # aptitude purge ~c

== Supprimer certains Fichiers de configuration orphelins ==

&quot;L'inconvénient&quot; des commandes ci-dessus est qu'elle suppriment TOUS les fichiers de configuration alors que vous souhaitez peut-être en conserver certains en vue d'une ré-installation ultérieure
La commande ci dessous ne supprimera la configuration et les dépendances inutiles que pour le paquet le_nom_du_paquet

 # aptitude purge le_nom_du_paquet

== Dépendances orphelines ==
Lorsque vous installez un logiciel un certain nombre de dépendances
s'installent avec lui. Par contre lorsque vous désinstallez ce même logiciel
les dépendances ne partent pas systématiquement avec lui (par exemple si vous
n'avez pas utilisé aptitude ou bien apt-get avec l'option auto-remove, ou 
encore si vous avez installé ces paquets explicitement). Il arrive donc
souvent que des paquets inutiles subsistent. Pour trouver certains de ces paquets
et éventuellement les supprimer, il existe 
deborphan (ou la version avec une interface graphique
gtkorphan) qui liste les bibliothèques orphelines.

Un simple appel permet de lister les paquets qu'il considère comme orphelins (autrement
dit non nécessaires au système à priori).
Il faut noter que certains de ces paquets peuvent être utiles. En effet certains
apportent des fonctionnalités sans être des dépendances. Si deborphan liste un
paquet que vous souhaitez garder vous pouvez utiliser cette commande :
 deborphan --add-keep &lt;nom paquet&gt;

Ensuite une fois que l'on est sûr que deborphan ne prend pas en compte les
paquets que l'on veut garder, il suffit de lancer la commande :
 aptitude remove $(deborphan)

== Cache APT ==
Lorsque l'on installe des logiciels APT va télécharger des paquets debian
(*.deb) et va les installer un à un. Pour diverses raisons (ne pas
re-télécharger le paquet en cas de réinstallation par exemple), ces
paquets ne sont pas supprimés après l'installation.

On peut d'une part supprimer tout les paquets en cache inutile (si on a
plusieurs versions d'un même paquet on ne garde que la dernière). Cela
se fait avec la commande :
 aptitude autoclean

Si on veut supprimer tout les paquets du cache :
 aptitude clean
ou encore
 apt-get clean
Bien sur il est possible (mais déconseillé) de rendre cette maintenance
automatique, comme avec l'option purge (voir la page man de apt.conf).

== Localepurge ==
localepurge permet de ne garder que les fichiers d'internationalisation 
des langues que vous choisissez. Elle est très simple à mettre en place et peut
permettre de gagner beaucoup de place. Il suffit de l'installer puis elle
libère la place toute seule de manière automatique lors de l'installation ou la
suppression de programme.
 aptitude install localepurge

Lors de l'installation, il vous sera demandé de choisir les langues que vous
souhaitez garder. Je vous conseil fr_FR, fr_FR@UTF-8 et fr_FR@euro.

Attention, cette action est irréversible. Notamment les paquets reconstruits via 
dpkg-repack seront par exemple incomplet. La purge de ce paquet n'a d'effet que pour
les paquets à venir qui seront installés de nouveau complètement (avec le serbo-croate,
le russe, le chinois, etc).

== Popularity contest ==
''Travail en cours''

== Debfoster ==
''Travail en cours''

= Fichiers utilisateurs =
Si votre dossier /home vous semble démesurément gros et que vous souhaitez en
diminuer la taille, il existe quelques commandes et quelques logiciels très
intéressants.

== Voir l'espace occupé par l'arborescence ==
Cette partie va vous expliquer comment trouver les dossiers et les fichiers les
plus gros d'un dossier donné. Ensuite il suffira de les supprimer ou les
compresser de la manière qu'il vous conviendra.

=== Commandes ===
Pour connaitre la taille de tous les dossiers et sous-dossiers du répertoire
courant, il suffit de taper la commande :
 du -ah

Le problème c'est que les fichiers ne seront pas triés. Pour les trier il faut
utiliser la commande :
 du -S | sort -n

=== Logiciels graphiques ===
Les logiciels ''Baobab'' (Gnome) et ''Krusader'' (KDE) permettent de voir de
manière graphique quel dossier et quels fichiers occupent le plus d'espace. Ces
logiciels étant très bien faits, il ne semble pas qu'il soit très utile
d'expliquer leur utilisation. Notez juste que ces paquets ne feront qu'analyser
le disque, c'est à vous par la suite de supprimer les fichiers en question.

Il existe aussi ''xdiskusage''. Très simple, il permet de voir l'occupation
partition par partition et indique l'espace libre.

== FSLint ==
''Travail en cours''
[[Catégorie:Personnalisation]]</text>
      <sha1>hdp9fy0f3g4d1e9c619kcacw3d4brym</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1909</id>
      <parentid>1908</parentid>
      <timestamp>2010-08-09T18:31:49Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Objectif */</comment>
      <text xml:space="preserve" bytes="6670">Nettoyage d'une Debian en vu de gagner de la place

= Objectif =
Vous avez installé une Debian depuis quelques temps déjà et vous commencez à
manquer de place sur votre partition ? Voici quelques astuces pour gagner
plusieurs centaines de mégaoctets.

Note : ce document n'hésite pas une seule seconde à utiliser des commandes
dites complexes (sous-shell, commande à la chaine,...). Elles peuvent être
difficiles à comprendre mais nous vous conseillons de les comprendre plutôt que
de les réutiliser sans comprendre. Ainsi vous verrez si quelqu'un a modifié
la page pour modifier les commandes.

= DPKG =
DPKG et APT sont de puissants outils y compris lorsqu'il s'agit de gagner de
la place.

== Repérez les fichiers de configuration &quot;orphelins&quot; ==

 $ aptitude search ~c
 c   bluez-audio                                             - Transitional package
 c   bluez-gnome                                             - utilitaires Bluetooth pour GNOME
 c   bluez-utils                                             - Transitional package
 c   chillispot                                              - Wireless LAN Access Point Controller
 ...

La commande suivante fait aussi ce travail, mais le résultat est compact, moins lisible :

 $ dpkg -l | grep ^rc |awk '{print $2}' | xargs echo
 bluez-audio bluez-gnome bluez-utils chillispot...

== Supprimer tous les Fichiers de configuration orphelins ==

Lors de la désinstallation d'un logiciel le comportement par défaut consiste à
garder les fichiers de configuration afin de pouvoir les réutiliser en cas de
réinstallation du logiciel en question. Pour nettoyer votre Debian de tout ces
fichiers superflus une seule commande suffit :
 dpkg -P $(dpkg -l | grep '^rc' | awk '{ print $2 }')

Ensuite si vous souhaitez que la suppression des fichiers de configuration se
fasse automatiquement il suffit d'ajouter ceci au fichier /etc/apt/apt.conf :
 APT::Get::Purge &quot;true&quot;

Vous préfèrerez peut-être utiliser cette commande qui supprimera aussi les dépendances devenues non nécessaires :

 # aptitude purge ~c

== Supprimer certains Fichiers de configuration orphelins ==

&quot;L'inconvénient&quot; des commandes ci-dessus est qu'elle suppriment TOUS les fichiers de configuration alors que vous souhaitez peut-être en conserver certains en vue d'une ré-installation ultérieure
La commande ci dessous ne supprimera la configuration et les dépendances inutiles que pour le paquet le_nom_du_paquet

 # aptitude purge le_nom_du_paquet

== Dépendances orphelines ==
Lorsque vous installez un logiciel un certain nombre de dépendances
s'installent avec lui. Par contre lorsque vous désinstallez ce même logiciel
les dépendances ne partent pas systématiquement avec lui (par exemple si vous
n'avez pas utilisé aptitude ou bien apt-get avec l'option auto-remove, ou 
encore si vous avez installé ces paquets explicitement). Il arrive donc
souvent que des paquets inutiles subsistent. Pour trouver certains de ces paquets
et éventuellement les supprimer, il existe 
deborphan (ou la version avec une interface graphique
gtkorphan) qui liste les bibliothèques orphelines.

Un simple appel permet de lister les paquets qu'il considère comme orphelins (autrement
dit non nécessaires au système à priori).
Il faut noter que certains de ces paquets peuvent être utiles. En effet certains
apportent des fonctionnalités sans être des dépendances. Si deborphan liste un
paquet que vous souhaitez garder vous pouvez utiliser cette commande :
 deborphan --add-keep &lt;nom paquet&gt;

Ensuite une fois que l'on est sûr que deborphan ne prend pas en compte les
paquets que l'on veut garder, il suffit de lancer la commande :
 aptitude remove $(deborphan)

== Cache APT ==
Lorsque l'on installe des logiciels APT va télécharger des paquets debian
(*.deb) et va les installer un à un. Pour diverses raisons (ne pas
re-télécharger le paquet en cas de réinstallation par exemple), ces
paquets ne sont pas supprimés après l'installation.

On peut d'une part supprimer tout les paquets en cache inutile (si on a
plusieurs versions d'un même paquet on ne garde que la dernière). Cela
se fait avec la commande :
 aptitude autoclean

Si on veut supprimer tout les paquets du cache :
 aptitude clean
ou encore
 apt-get clean
Bien sur il est possible (mais déconseillé) de rendre cette maintenance
automatique, comme avec l'option purge (voir la page man de apt.conf).

== Localepurge ==
localepurge permet de ne garder que les fichiers d'internationalisation 
des langues que vous choisissez. Elle est très simple à mettre en place et peut
permettre de gagner beaucoup de place. Il suffit de l'installer puis elle
libère la place toute seule de manière automatique lors de l'installation ou la
suppression de programme.
 aptitude install localepurge

Lors de l'installation, il vous sera demandé de choisir les langues que vous
souhaitez garder. Je vous conseil fr_FR, fr_FR@UTF-8 et fr_FR@euro.

Attention, cette action est irréversible. Notamment les paquets reconstruits via 
dpkg-repack seront par exemple incomplet. La purge de ce paquet n'a d'effet que pour
les paquets à venir qui seront installés de nouveau complètement (avec le serbo-croate,
le russe, le chinois, etc).

== Popularity contest ==
''Travail en cours''

== Debfoster ==
''Travail en cours''

= Fichiers utilisateurs =
Si votre dossier /home vous semble démesurément gros et que vous souhaitez en
diminuer la taille, il existe quelques commandes et quelques logiciels très
intéressants.

== Voir l'espace occupé par l'arborescence ==
Cette partie va vous expliquer comment trouver les dossiers et les fichiers les
plus gros d'un dossier donné. Ensuite il suffira de les supprimer ou les
compresser de la manière qu'il vous conviendra.

=== Commandes ===
Pour connaitre la taille de tous les dossiers et sous-dossiers du répertoire
courant, il suffit de taper la commande :
 du -ah

Le problème c'est que les fichiers ne seront pas triés. Pour les trier il faut
utiliser la commande :
 du -S | sort -n

=== Logiciels graphiques ===
Les logiciels ''Baobab'' (Gnome) et ''Krusader'' (KDE) permettent de voir de
manière graphique quel dossier et quels fichiers occupent le plus d'espace. Ces
logiciels étant très bien faits, il ne semble pas qu'il soit très utile
d'expliquer leur utilisation. Notez juste que ces paquets ne feront qu'analyser
le disque, c'est à vous par la suite de supprimer les fichiers en question.

Il existe aussi ''xdiskusage''. Très simple, il permet de voir l'occupation
partition par partition et indique l'espace libre.

== FSLint ==
''Travail en cours''
[[Catégorie:Personnalisation]]</text>
      <sha1>7l7ggjahorij2thtepjrtn88mxwodxg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1910</id>
      <parentid>1909</parentid>
      <timestamp>2010-08-09T18:34:10Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <text xml:space="preserve" bytes="6671">Nettoyage d'une Debian en vue de gagner de la place

= Objectif =
Vous avez installé une Debian depuis quelques temps déjà et vous commencez à
manquer de place sur votre partition ? Voici quelques astuces pour gagner
plusieurs centaines de mégaoctets.

Note : ce document n'hésite pas une seule seconde à utiliser des commandes
dites complexes (sous-shell, commande à la chaine,...). Elles peuvent être
difficiles à comprendre mais nous vous conseillons de les comprendre plutôt que
de les réutiliser sans comprendre. Ainsi vous verrez si quelqu'un a modifié
la page pour modifier les commandes.

= DPKG =
DPKG et APT sont de puissants outils y compris lorsqu'il s'agit de gagner de
la place.

== Repérez les fichiers de configuration &quot;orphelins&quot; ==

 $ aptitude search ~c
 c   bluez-audio                                             - Transitional package
 c   bluez-gnome                                             - utilitaires Bluetooth pour GNOME
 c   bluez-utils                                             - Transitional package
 c   chillispot                                              - Wireless LAN Access Point Controller
 ...

La commande suivante fait aussi ce travail, mais le résultat est compact, moins lisible :

 $ dpkg -l | grep ^rc |awk '{print $2}' | xargs echo
 bluez-audio bluez-gnome bluez-utils chillispot...

== Supprimer tous les Fichiers de configuration orphelins ==

Lors de la désinstallation d'un logiciel le comportement par défaut consiste à
garder les fichiers de configuration afin de pouvoir les réutiliser en cas de
réinstallation du logiciel en question. Pour nettoyer votre Debian de tout ces
fichiers superflus une seule commande suffit :
 dpkg -P $(dpkg -l | grep '^rc' | awk '{ print $2 }')

Ensuite si vous souhaitez que la suppression des fichiers de configuration se
fasse automatiquement il suffit d'ajouter ceci au fichier /etc/apt/apt.conf :
 APT::Get::Purge &quot;true&quot;

Vous préfèrerez peut-être utiliser cette commande qui supprimera aussi les dépendances devenues non nécessaires :

 # aptitude purge ~c

== Supprimer certains Fichiers de configuration orphelins ==

&quot;L'inconvénient&quot; des commandes ci-dessus est qu'elle suppriment TOUS les fichiers de configuration alors que vous souhaitez peut-être en conserver certains en vue d'une ré-installation ultérieure
La commande ci dessous ne supprimera la configuration et les dépendances inutiles que pour le paquet le_nom_du_paquet

 # aptitude purge le_nom_du_paquet

== Dépendances orphelines ==
Lorsque vous installez un logiciel un certain nombre de dépendances
s'installent avec lui. Par contre lorsque vous désinstallez ce même logiciel
les dépendances ne partent pas systématiquement avec lui (par exemple si vous
n'avez pas utilisé aptitude ou bien apt-get avec l'option auto-remove, ou 
encore si vous avez installé ces paquets explicitement). Il arrive donc
souvent que des paquets inutiles subsistent. Pour trouver certains de ces paquets
et éventuellement les supprimer, il existe 
deborphan (ou la version avec une interface graphique
gtkorphan) qui liste les bibliothèques orphelines.

Un simple appel permet de lister les paquets qu'il considère comme orphelins (autrement
dit non nécessaires au système à priori).
Il faut noter que certains de ces paquets peuvent être utiles. En effet certains
apportent des fonctionnalités sans être des dépendances. Si deborphan liste un
paquet que vous souhaitez garder vous pouvez utiliser cette commande :
 deborphan --add-keep &lt;nom paquet&gt;

Ensuite une fois que l'on est sûr que deborphan ne prend pas en compte les
paquets que l'on veut garder, il suffit de lancer la commande :
 aptitude remove $(deborphan)

== Cache APT ==
Lorsque l'on installe des logiciels APT va télécharger des paquets debian
(*.deb) et va les installer un à un. Pour diverses raisons (ne pas
re-télécharger le paquet en cas de réinstallation par exemple), ces
paquets ne sont pas supprimés après l'installation.

On peut d'une part supprimer tout les paquets en cache inutile (si on a
plusieurs versions d'un même paquet on ne garde que la dernière). Cela
se fait avec la commande :
 aptitude autoclean

Si on veut supprimer tout les paquets du cache :
 aptitude clean
ou encore
 apt-get clean
Bien sur il est possible (mais déconseillé) de rendre cette maintenance
automatique, comme avec l'option purge (voir la page man de apt.conf).

== Localepurge ==
localepurge permet de ne garder que les fichiers d'internationalisation 
des langues que vous choisissez. Elle est très simple à mettre en place et peut
permettre de gagner beaucoup de place. Il suffit de l'installer puis elle
libère la place toute seule de manière automatique lors de l'installation ou la
suppression de programme.
 aptitude install localepurge

Lors de l'installation, il vous sera demandé de choisir les langues que vous
souhaitez garder. Je vous conseil fr_FR, fr_FR@UTF-8 et fr_FR@euro.

Attention, cette action est irréversible. Notamment les paquets reconstruits via 
dpkg-repack seront par exemple incomplet. La purge de ce paquet n'a d'effet que pour
les paquets à venir qui seront installés de nouveau complètement (avec le serbo-croate,
le russe, le chinois, etc).

== Popularity contest ==
''Travail en cours''

== Debfoster ==
''Travail en cours''

= Fichiers utilisateurs =
Si votre dossier /home vous semble démesurément gros et que vous souhaitez en
diminuer la taille, il existe quelques commandes et quelques logiciels très
intéressants.

== Voir l'espace occupé par l'arborescence ==
Cette partie va vous expliquer comment trouver les dossiers et les fichiers les
plus gros d'un dossier donné. Ensuite il suffira de les supprimer ou les
compresser de la manière qu'il vous conviendra.

=== Commandes ===
Pour connaitre la taille de tous les dossiers et sous-dossiers du répertoire
courant, il suffit de taper la commande :
 du -ah

Le problème c'est que les fichiers ne seront pas triés. Pour les trier il faut
utiliser la commande :
 du -S | sort -n

=== Logiciels graphiques ===
Les logiciels ''Baobab'' (Gnome) et ''Krusader'' (KDE) permettent de voir de
manière graphique quel dossier et quels fichiers occupent le plus d'espace. Ces
logiciels étant très bien faits, il ne semble pas qu'il soit très utile
d'expliquer leur utilisation. Notez juste que ces paquets ne feront qu'analyser
le disque, c'est à vous par la suite de supprimer les fichiers en question.

Il existe aussi ''xdiskusage''. Très simple, il permet de voir l'occupation
partition par partition et indique l'espace libre.

== FSLint ==
''Travail en cours''
[[Catégorie:Personnalisation]]</text>
      <sha1>i9z3e78hyzpaq07b4336739gw40u3z3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2113</id>
      <parentid>1910</parentid>
      <timestamp>2010-09-15T17:23:00Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="6668">Nettoyage d'une Debian en vue de gagner de la place

= Objectif =
Vous avez installé une Debian depuis quelques temps déjà et vous commencez à
manquer de place sur votre partition ? Voici quelques astuces pour gagner
plusieurs centaines de mégaoctets.

Note : ce document n'hésite pas une seule seconde à utiliser des commandes
dites complexes (sous-shell, commande à la chaine,...). Elles peuvent être
difficiles à comprendre mais nous vous conseillons de les comprendre plutôt que
de les réutiliser sans comprendre. Ainsi vous verrez si quelqu'un a modifié
la page pour modifier les commandes.

= DPKG =
DPKG et APT sont de puissants outils y compris lorsqu'il s'agit de gagner de
la place.

== Repérez les fichiers de configuration &quot;orphelins&quot; ==

 $ aptitude search ~c
 c   bluez-audio                                             - Transitional package
 c   bluez-gnome                                             - utilitaires Bluetooth pour GNOME
 c   bluez-utils                                             - Transitional package
 c   chillispot                                              - Wireless LAN Access Point Controller
 ...

La commande suivante fait aussi ce travail, mais le résultat est compact, moins lisible :

 $ dpkg -l | grep ^rc |awk '{print $2}' | xargs echo
 bluez-audio bluez-gnome bluez-utils chillispot...

== Supprimer tous les Fichiers de configuration orphelins ==

Lors de la désinstallation d'un logiciel le comportement par défaut consiste à
garder les fichiers de configuration afin de pouvoir les réutiliser en cas de
réinstallation du logiciel en question. Pour nettoyer votre Debian de tout ces
fichiers superflus une seule commande suffit :
 dpkg -P $(dpkg -l | grep '^rc' | awk '{ print $2 }')

Ensuite si vous souhaitez que la suppression des fichiers de configuration se
fasse automatiquement il suffit d'ajouter ceci au fichier /etc/apt/apt.conf :
 APT::Get::Purge &quot;true&quot;

Vous préfèrerez peut-être utiliser cette commande qui supprimera aussi les dépendances devenues non nécessaires :

 # aptitude purge ~c

== Supprimer certains Fichiers de configuration orphelins ==

&quot;L'inconvénient&quot; des commandes ci-dessus est qu'elle suppriment TOUS les fichiers de configuration alors que vous souhaitez peut-être en conserver certains en vue d'une ré-installation ultérieure
La commande ci dessous ne supprimera la configuration et les dépendances inutiles que pour le paquet le_nom_du_paquet

 # aptitude purge le_nom_du_paquet

== Dépendances orphelines ==
Lorsque vous installez un logiciel un certain nombre de dépendances
s'installent avec lui. Par contre lorsque vous désinstallez ce même logiciel
les dépendances ne partent pas systématiquement avec lui (par exemple si vous
n'avez pas utilisé aptitude ou bien apt-get avec l'option auto-remove, ou 
encore si vous avez installé ces paquets explicitement). Il arrive donc
souvent que des paquets inutiles subsistent. Pour trouver certains de ces paquets
et éventuellement les supprimer, il existe 
deborphan (ou la version avec une interface graphique
gtkorphan) qui liste les bibliothèques orphelines.

Un simple appel permet de lister les paquets qu'il considère comme orphelins (autrement
dit non nécessaires au système à priori).
Il faut noter que certains de ces paquets peuvent être utiles. En effet certains
apportent des fonctionnalités sans être des dépendances. Si deborphan liste un
paquet que vous souhaitez garder vous pouvez utiliser cette commande :
 deborphan --add-keep &lt;nom paquet&gt;

Ensuite une fois que l'on est sûr que deborphan ne prend pas en compte les
paquets que l'on veut garder, il suffit de lancer la commande :
 aptitude remove $(deborphan)

== Cache APT ==
Lorsque l'on installe des logiciels APT va télécharger des paquets debian
(*.deb) et va les installer un à un. Pour diverses raisons (ne pas
re-télécharger le paquet en cas de réinstallation par exemple), ces
paquets ne sont pas supprimés après l'installation.

On peut d'une part supprimer tout les paquets en cache inutile (si on a
plusieurs versions d'un même paquet on ne garde que la dernière). Cela
se fait avec la commande :
 aptitude autoclean

Si on veut supprimer tout les paquets du cache :
 aptitude clean
ou encore
 apt-get clean
Bien sur il est possible (mais déconseillé) de rendre cette maintenance
automatique, comme avec l'option purge (voir la page man de apt.conf).

== Localepurge ==
localepurge permet de ne garder que les fichiers d'internationalisation 
des langues que vous choisissez. Elle est très simple à mettre en place et peut
permettre de gagner beaucoup de place. Il suffit de l'installer puis elle
libère la place toute seule de manière automatique lors de l'installation ou la
suppression de programme.
 aptitude install localepurge

Lors de l'installation, il vous sera demandé de choisir les langues que vous
souhaitez garder. Je vous conseil fr_FR, fr_FR@UTF-8 et fr_FR@euro.

Attention, cette action est irréversible. Notamment les paquets reconstruits via 
dpkg-repack seront par exemple incomplet. La purge de ce paquet n'a d'effet que pour
les paquets à venir qui seront installés de nouveau complètement (avec le serbo-croate,
le russe, le chinois, etc).

== Popularity contest ==
''Travail en cours''

== Debfoster ==
''Travail en cours''

= Fichiers utilisateurs =
Si votre dossier /home vous semble démesurément gros et que vous souhaitez en
diminuer la taille, il existe quelques commandes et quelques logiciels très
intéressants.

== Voir l'espace occupé par l'arborescence ==
Cette partie va vous expliquer comment trouver les dossiers et les fichiers les
plus gros d'un dossier donné. Ensuite il suffira de les supprimer ou les
compresser de la manière qu'il vous conviendra.

=== Commandes ===
Pour connaitre la taille de tous les dossiers et sous-dossiers du répertoire
courant, il suffit de taper la commande :
 du -ah

Le problème c'est que les fichiers ne seront pas triés. Pour les trier il faut
utiliser la commande :
 du -S | sort -n

=== Logiciels graphiques ===
Les logiciels ''Baobab'' (Gnome) et ''Krusader'' (KDE) permettent de voir de
manière graphique quel dossier et quels fichiers occupent le plus d'espace. Ces
logiciels étant très bien faits, il ne semble pas qu'il soit très utile
d'expliquer leur utilisation. Notez juste que ces paquets ne feront qu'analyser
le disque, c'est à vous par la suite de supprimer les fichiers en question.

Il existe aussi ''xdiskusage''. Très simple, il permet de voir l'occupation
partition par partition et indique l'espace libre.

== FSLint ==
''Travail en cours''

[[Catégorie:Installation]]</text>
      <sha1>c89h8wtl6ksxvm2nb0aeiujn36tf5am</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3488</id>
      <parentid>2113</parentid>
      <timestamp>2011-10-10T18:31:42Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Cache APT */</comment>
      <text xml:space="preserve" bytes="6669">Nettoyage d'une Debian en vue de gagner de la place

= Objectif =
Vous avez installé une Debian depuis quelques temps déjà et vous commencez à
manquer de place sur votre partition ? Voici quelques astuces pour gagner
plusieurs centaines de mégaoctets.

Note : ce document n'hésite pas une seule seconde à utiliser des commandes
dites complexes (sous-shell, commande à la chaine,...). Elles peuvent être
difficiles à comprendre mais nous vous conseillons de les comprendre plutôt que
de les réutiliser sans comprendre. Ainsi vous verrez si quelqu'un a modifié
la page pour modifier les commandes.

= DPKG =
DPKG et APT sont de puissants outils y compris lorsqu'il s'agit de gagner de
la place.

== Repérez les fichiers de configuration &quot;orphelins&quot; ==

 $ aptitude search ~c
 c   bluez-audio                                             - Transitional package
 c   bluez-gnome                                             - utilitaires Bluetooth pour GNOME
 c   bluez-utils                                             - Transitional package
 c   chillispot                                              - Wireless LAN Access Point Controller
 ...

La commande suivante fait aussi ce travail, mais le résultat est compact, moins lisible :

 $ dpkg -l | grep ^rc |awk '{print $2}' | xargs echo
 bluez-audio bluez-gnome bluez-utils chillispot...

== Supprimer tous les Fichiers de configuration orphelins ==

Lors de la désinstallation d'un logiciel le comportement par défaut consiste à
garder les fichiers de configuration afin de pouvoir les réutiliser en cas de
réinstallation du logiciel en question. Pour nettoyer votre Debian de tout ces
fichiers superflus une seule commande suffit :
 dpkg -P $(dpkg -l | grep '^rc' | awk '{ print $2 }')

Ensuite si vous souhaitez que la suppression des fichiers de configuration se
fasse automatiquement il suffit d'ajouter ceci au fichier /etc/apt/apt.conf :
 APT::Get::Purge &quot;true&quot;

Vous préfèrerez peut-être utiliser cette commande qui supprimera aussi les dépendances devenues non nécessaires :

 # aptitude purge ~c

== Supprimer certains Fichiers de configuration orphelins ==

&quot;L'inconvénient&quot; des commandes ci-dessus est qu'elle suppriment TOUS les fichiers de configuration alors que vous souhaitez peut-être en conserver certains en vue d'une ré-installation ultérieure
La commande ci dessous ne supprimera la configuration et les dépendances inutiles que pour le paquet le_nom_du_paquet

 # aptitude purge le_nom_du_paquet

== Dépendances orphelines ==
Lorsque vous installez un logiciel un certain nombre de dépendances
s'installent avec lui. Par contre lorsque vous désinstallez ce même logiciel
les dépendances ne partent pas systématiquement avec lui (par exemple si vous
n'avez pas utilisé aptitude ou bien apt-get avec l'option auto-remove, ou 
encore si vous avez installé ces paquets explicitement). Il arrive donc
souvent que des paquets inutiles subsistent. Pour trouver certains de ces paquets
et éventuellement les supprimer, il existe 
deborphan (ou la version avec une interface graphique
gtkorphan) qui liste les bibliothèques orphelines.

Un simple appel permet de lister les paquets qu'il considère comme orphelins (autrement
dit non nécessaires au système à priori).
Il faut noter que certains de ces paquets peuvent être utiles. En effet certains
apportent des fonctionnalités sans être des dépendances. Si deborphan liste un
paquet que vous souhaitez garder vous pouvez utiliser cette commande :
 deborphan --add-keep &lt;nom paquet&gt;

Ensuite une fois que l'on est sûr que deborphan ne prend pas en compte les
paquets que l'on veut garder, il suffit de lancer la commande :
 aptitude remove $(deborphan)

== Cache APT ==
Lorsque l'on installe des logiciels APT va télécharger des paquets debian
(*.deb) et va les installer un à un. Pour diverses raisons (ne pas
re-télécharger le paquet en cas de réinstallation par exemple), ces
paquets ne sont pas supprimés après l'installation.

On peut d'une part supprimer tous les paquets en cache inutile (si on a
plusieurs versions d'un même paquet on ne garde que la dernière). Cela
se fait avec la commande :
 aptitude autoclean

Si on veut supprimer tous les paquets du cache :
 aptitude clean
ou encore
 apt-get clean
Bien sûr il est possible (mais déconseillé) de rendre cette maintenance
automatique, comme avec l'option purge (voir la page man de apt.conf).

== Localepurge ==
localepurge permet de ne garder que les fichiers d'internationalisation 
des langues que vous choisissez. Elle est très simple à mettre en place et peut
permettre de gagner beaucoup de place. Il suffit de l'installer puis elle
libère la place toute seule de manière automatique lors de l'installation ou la
suppression de programme.
 aptitude install localepurge

Lors de l'installation, il vous sera demandé de choisir les langues que vous
souhaitez garder. Je vous conseil fr_FR, fr_FR@UTF-8 et fr_FR@euro.

Attention, cette action est irréversible. Notamment les paquets reconstruits via 
dpkg-repack seront par exemple incomplet. La purge de ce paquet n'a d'effet que pour
les paquets à venir qui seront installés de nouveau complètement (avec le serbo-croate,
le russe, le chinois, etc).

== Popularity contest ==
''Travail en cours''

== Debfoster ==
''Travail en cours''

= Fichiers utilisateurs =
Si votre dossier /home vous semble démesurément gros et que vous souhaitez en
diminuer la taille, il existe quelques commandes et quelques logiciels très
intéressants.

== Voir l'espace occupé par l'arborescence ==
Cette partie va vous expliquer comment trouver les dossiers et les fichiers les
plus gros d'un dossier donné. Ensuite il suffira de les supprimer ou les
compresser de la manière qu'il vous conviendra.

=== Commandes ===
Pour connaitre la taille de tous les dossiers et sous-dossiers du répertoire
courant, il suffit de taper la commande :
 du -ah

Le problème c'est que les fichiers ne seront pas triés. Pour les trier il faut
utiliser la commande :
 du -S | sort -n

=== Logiciels graphiques ===
Les logiciels ''Baobab'' (Gnome) et ''Krusader'' (KDE) permettent de voir de
manière graphique quel dossier et quels fichiers occupent le plus d'espace. Ces
logiciels étant très bien faits, il ne semble pas qu'il soit très utile
d'expliquer leur utilisation. Notez juste que ces paquets ne feront qu'analyser
le disque, c'est à vous par la suite de supprimer les fichiers en question.

Il existe aussi ''xdiskusage''. Très simple, il permet de voir l'occupation
partition par partition et indique l'espace libre.

== FSLint ==
''Travail en cours''

[[Catégorie:Installation]]</text>
      <sha1>ln60j9026qinuysuh4kgg6f3a6vw85s</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3517</id>
      <parentid>3488</parentid>
      <timestamp>2011-10-30T17:48:18Z</timestamp>
      <contributor>
        <username>Martin mtl</username>
        <id>173</id>
      </contributor>
      <comment>/* Objectif */</comment>
      <text xml:space="preserve" bytes="6670">Nettoyage d'une Debian en vue de gagner de la place

= Objectif =
Vous avez installé une Debian depuis quelques temps déjà et vous commencez à
manquer de place sur votre partition ? Voici quelques astuces pour gagner
plusieurs centaines de mégaoctets.

Note : ce document n'hésite pas une seule seconde à utiliser des commandes
dites complexes (sous-shell, commande à la chaîne,...). Elles peuvent être
difficiles à comprendre mais nous vous conseillons de les comprendre plutôt que
de les réutiliser sans comprendre. Ainsi vous verrez si quelqu'un a modifié
la page pour modifier les commandes.

= DPKG =
DPKG et APT sont de puissants outils y compris lorsqu'il s'agit de gagner de
la place.

== Repérez les fichiers de configuration &quot;orphelins&quot; ==

 $ aptitude search ~c
 c   bluez-audio                                             - Transitional package
 c   bluez-gnome                                             - utilitaires Bluetooth pour GNOME
 c   bluez-utils                                             - Transitional package
 c   chillispot                                              - Wireless LAN Access Point Controller
 ...

La commande suivante fait aussi ce travail, mais le résultat est compact, moins lisible :

 $ dpkg -l | grep ^rc |awk '{print $2}' | xargs echo
 bluez-audio bluez-gnome bluez-utils chillispot...

== Supprimer tous les Fichiers de configuration orphelins ==

Lors de la désinstallation d'un logiciel le comportement par défaut consiste à
garder les fichiers de configuration afin de pouvoir les réutiliser en cas de
réinstallation du logiciel en question. Pour nettoyer votre Debian de tout ces
fichiers superflus une seule commande suffit :
 dpkg -P $(dpkg -l | grep '^rc' | awk '{ print $2 }')

Ensuite si vous souhaitez que la suppression des fichiers de configuration se
fasse automatiquement il suffit d'ajouter ceci au fichier /etc/apt/apt.conf :
 APT::Get::Purge &quot;true&quot;

Vous préfèrerez peut-être utiliser cette commande qui supprimera aussi les dépendances devenues non nécessaires :

 # aptitude purge ~c

== Supprimer certains Fichiers de configuration orphelins ==

&quot;L'inconvénient&quot; des commandes ci-dessus est qu'elle suppriment TOUS les fichiers de configuration alors que vous souhaitez peut-être en conserver certains en vue d'une ré-installation ultérieure
La commande ci dessous ne supprimera la configuration et les dépendances inutiles que pour le paquet le_nom_du_paquet

 # aptitude purge le_nom_du_paquet

== Dépendances orphelines ==
Lorsque vous installez un logiciel un certain nombre de dépendances
s'installent avec lui. Par contre lorsque vous désinstallez ce même logiciel
les dépendances ne partent pas systématiquement avec lui (par exemple si vous
n'avez pas utilisé aptitude ou bien apt-get avec l'option auto-remove, ou 
encore si vous avez installé ces paquets explicitement). Il arrive donc
souvent que des paquets inutiles subsistent. Pour trouver certains de ces paquets
et éventuellement les supprimer, il existe 
deborphan (ou la version avec une interface graphique
gtkorphan) qui liste les bibliothèques orphelines.

Un simple appel permet de lister les paquets qu'il considère comme orphelins (autrement
dit non nécessaires au système à priori).
Il faut noter que certains de ces paquets peuvent être utiles. En effet certains
apportent des fonctionnalités sans être des dépendances. Si deborphan liste un
paquet que vous souhaitez garder vous pouvez utiliser cette commande :
 deborphan --add-keep &lt;nom paquet&gt;

Ensuite une fois que l'on est sûr que deborphan ne prend pas en compte les
paquets que l'on veut garder, il suffit de lancer la commande :
 aptitude remove $(deborphan)

== Cache APT ==
Lorsque l'on installe des logiciels APT va télécharger des paquets debian
(*.deb) et va les installer un à un. Pour diverses raisons (ne pas
re-télécharger le paquet en cas de réinstallation par exemple), ces
paquets ne sont pas supprimés après l'installation.

On peut d'une part supprimer tous les paquets en cache inutile (si on a
plusieurs versions d'un même paquet on ne garde que la dernière). Cela
se fait avec la commande :
 aptitude autoclean

Si on veut supprimer tous les paquets du cache :
 aptitude clean
ou encore
 apt-get clean
Bien sûr il est possible (mais déconseillé) de rendre cette maintenance
automatique, comme avec l'option purge (voir la page man de apt.conf).

== Localepurge ==
localepurge permet de ne garder que les fichiers d'internationalisation 
des langues que vous choisissez. Elle est très simple à mettre en place et peut
permettre de gagner beaucoup de place. Il suffit de l'installer puis elle
libère la place toute seule de manière automatique lors de l'installation ou la
suppression de programme.
 aptitude install localepurge

Lors de l'installation, il vous sera demandé de choisir les langues que vous
souhaitez garder. Je vous conseil fr_FR, fr_FR@UTF-8 et fr_FR@euro.

Attention, cette action est irréversible. Notamment les paquets reconstruits via 
dpkg-repack seront par exemple incomplet. La purge de ce paquet n'a d'effet que pour
les paquets à venir qui seront installés de nouveau complètement (avec le serbo-croate,
le russe, le chinois, etc).

== Popularity contest ==
''Travail en cours''

== Debfoster ==
''Travail en cours''

= Fichiers utilisateurs =
Si votre dossier /home vous semble démesurément gros et que vous souhaitez en
diminuer la taille, il existe quelques commandes et quelques logiciels très
intéressants.

== Voir l'espace occupé par l'arborescence ==
Cette partie va vous expliquer comment trouver les dossiers et les fichiers les
plus gros d'un dossier donné. Ensuite il suffira de les supprimer ou les
compresser de la manière qu'il vous conviendra.

=== Commandes ===
Pour connaitre la taille de tous les dossiers et sous-dossiers du répertoire
courant, il suffit de taper la commande :
 du -ah

Le problème c'est que les fichiers ne seront pas triés. Pour les trier il faut
utiliser la commande :
 du -S | sort -n

=== Logiciels graphiques ===
Les logiciels ''Baobab'' (Gnome) et ''Krusader'' (KDE) permettent de voir de
manière graphique quel dossier et quels fichiers occupent le plus d'espace. Ces
logiciels étant très bien faits, il ne semble pas qu'il soit très utile
d'expliquer leur utilisation. Notez juste que ces paquets ne feront qu'analyser
le disque, c'est à vous par la suite de supprimer les fichiers en question.

Il existe aussi ''xdiskusage''. Très simple, il permet de voir l'occupation
partition par partition et indique l'espace libre.

== FSLint ==
''Travail en cours''

[[Catégorie:Installation]]</text>
      <sha1>1or7r50jvreqvsujmuv2zbgmqmogwzd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3518</id>
      <parentid>3517</parentid>
      <timestamp>2011-10-30T17:56:15Z</timestamp>
      <contributor>
        <username>Martin mtl</username>
        <id>173</id>
      </contributor>
      <comment>/* Supprimer certains Fichiers de configuration orphelins */</comment>
      <text xml:space="preserve" bytes="6671">Nettoyage d'une Debian en vue de gagner de la place

= Objectif =
Vous avez installé une Debian depuis quelques temps déjà et vous commencez à
manquer de place sur votre partition ? Voici quelques astuces pour gagner
plusieurs centaines de mégaoctets.

Note : ce document n'hésite pas une seule seconde à utiliser des commandes
dites complexes (sous-shell, commande à la chaîne,...). Elles peuvent être
difficiles à comprendre mais nous vous conseillons de les comprendre plutôt que
de les réutiliser sans comprendre. Ainsi vous verrez si quelqu'un a modifié
la page pour modifier les commandes.

= DPKG =
DPKG et APT sont de puissants outils y compris lorsqu'il s'agit de gagner de
la place.

== Repérez les fichiers de configuration &quot;orphelins&quot; ==

 $ aptitude search ~c
 c   bluez-audio                                             - Transitional package
 c   bluez-gnome                                             - utilitaires Bluetooth pour GNOME
 c   bluez-utils                                             - Transitional package
 c   chillispot                                              - Wireless LAN Access Point Controller
 ...

La commande suivante fait aussi ce travail, mais le résultat est compact, moins lisible :

 $ dpkg -l | grep ^rc |awk '{print $2}' | xargs echo
 bluez-audio bluez-gnome bluez-utils chillispot...

== Supprimer tous les Fichiers de configuration orphelins ==

Lors de la désinstallation d'un logiciel le comportement par défaut consiste à
garder les fichiers de configuration afin de pouvoir les réutiliser en cas de
réinstallation du logiciel en question. Pour nettoyer votre Debian de tout ces
fichiers superflus une seule commande suffit :
 dpkg -P $(dpkg -l | grep '^rc' | awk '{ print $2 }')

Ensuite si vous souhaitez que la suppression des fichiers de configuration se
fasse automatiquement il suffit d'ajouter ceci au fichier /etc/apt/apt.conf :
 APT::Get::Purge &quot;true&quot;

Vous préfèrerez peut-être utiliser cette commande qui supprimera aussi les dépendances devenues non nécessaires :

 # aptitude purge ~c

== Supprimer certains Fichiers de configuration orphelins ==

&quot;L'inconvénient&quot; des commandes ci-dessus est qu'elle suppriment TOUS les fichiers de configuration alors que vous souhaitez peut-être en conserver certains en vue d'une ré-installation ultérieure. La commande ci-dessous ne supprimera la configuration et les dépendances inutiles que pour le paquet le_nom_du_paquet

 # aptitude purge le_nom_du_paquet

== Dépendances orphelines ==
Lorsque vous installez un logiciel un certain nombre de dépendances
s'installent avec lui. Par contre lorsque vous désinstallez ce même logiciel
les dépendances ne partent pas systématiquement avec lui (par exemple si vous
n'avez pas utilisé aptitude ou bien apt-get avec l'option auto-remove, ou 
encore si vous avez installé ces paquets explicitement). Il arrive donc
souvent que des paquets inutiles subsistent. Pour trouver certains de ces paquets
et éventuellement les supprimer, il existe 
deborphan (ou la version avec une interface graphique
gtkorphan) qui liste les bibliothèques orphelines.

Un simple appel permet de lister les paquets qu'il considère comme orphelins (autrement
dit non nécessaires au système à priori).
Il faut noter que certains de ces paquets peuvent être utiles. En effet certains
apportent des fonctionnalités sans être des dépendances. Si deborphan liste un
paquet que vous souhaitez garder vous pouvez utiliser cette commande :
 deborphan --add-keep &lt;nom paquet&gt;

Ensuite une fois que l'on est sûr que deborphan ne prend pas en compte les
paquets que l'on veut garder, il suffit de lancer la commande :
 aptitude remove $(deborphan)

== Cache APT ==
Lorsque l'on installe des logiciels APT va télécharger des paquets debian
(*.deb) et va les installer un à un. Pour diverses raisons (ne pas
re-télécharger le paquet en cas de réinstallation par exemple), ces
paquets ne sont pas supprimés après l'installation.

On peut d'une part supprimer tous les paquets en cache inutile (si on a
plusieurs versions d'un même paquet on ne garde que la dernière). Cela
se fait avec la commande :
 aptitude autoclean

Si on veut supprimer tous les paquets du cache :
 aptitude clean
ou encore
 apt-get clean
Bien sûr il est possible (mais déconseillé) de rendre cette maintenance
automatique, comme avec l'option purge (voir la page man de apt.conf).

== Localepurge ==
localepurge permet de ne garder que les fichiers d'internationalisation 
des langues que vous choisissez. Elle est très simple à mettre en place et peut
permettre de gagner beaucoup de place. Il suffit de l'installer puis elle
libère la place toute seule de manière automatique lors de l'installation ou la
suppression de programme.
 aptitude install localepurge

Lors de l'installation, il vous sera demandé de choisir les langues que vous
souhaitez garder. Je vous conseil fr_FR, fr_FR@UTF-8 et fr_FR@euro.

Attention, cette action est irréversible. Notamment les paquets reconstruits via 
dpkg-repack seront par exemple incomplet. La purge de ce paquet n'a d'effet que pour
les paquets à venir qui seront installés de nouveau complètement (avec le serbo-croate,
le russe, le chinois, etc).

== Popularity contest ==
''Travail en cours''

== Debfoster ==
''Travail en cours''

= Fichiers utilisateurs =
Si votre dossier /home vous semble démesurément gros et que vous souhaitez en
diminuer la taille, il existe quelques commandes et quelques logiciels très
intéressants.

== Voir l'espace occupé par l'arborescence ==
Cette partie va vous expliquer comment trouver les dossiers et les fichiers les
plus gros d'un dossier donné. Ensuite il suffira de les supprimer ou les
compresser de la manière qu'il vous conviendra.

=== Commandes ===
Pour connaitre la taille de tous les dossiers et sous-dossiers du répertoire
courant, il suffit de taper la commande :
 du -ah

Le problème c'est que les fichiers ne seront pas triés. Pour les trier il faut
utiliser la commande :
 du -S | sort -n

=== Logiciels graphiques ===
Les logiciels ''Baobab'' (Gnome) et ''Krusader'' (KDE) permettent de voir de
manière graphique quel dossier et quels fichiers occupent le plus d'espace. Ces
logiciels étant très bien faits, il ne semble pas qu'il soit très utile
d'expliquer leur utilisation. Notez juste que ces paquets ne feront qu'analyser
le disque, c'est à vous par la suite de supprimer les fichiers en question.

Il existe aussi ''xdiskusage''. Très simple, il permet de voir l'occupation
partition par partition et indique l'espace libre.

== FSLint ==
''Travail en cours''

[[Catégorie:Installation]]</text>
      <sha1>rnux693rrs7o4r3mbohj1wuvqnckmiz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3519</id>
      <parentid>3518</parentid>
      <timestamp>2011-10-30T17:58:10Z</timestamp>
      <contributor>
        <username>Martin mtl</username>
        <id>173</id>
      </contributor>
      <comment>/* Cache APT */</comment>
      <text xml:space="preserve" bytes="6672">Nettoyage d'une Debian en vue de gagner de la place

= Objectif =
Vous avez installé une Debian depuis quelques temps déjà et vous commencez à
manquer de place sur votre partition ? Voici quelques astuces pour gagner
plusieurs centaines de mégaoctets.

Note : ce document n'hésite pas une seule seconde à utiliser des commandes
dites complexes (sous-shell, commande à la chaîne,...). Elles peuvent être
difficiles à comprendre mais nous vous conseillons de les comprendre plutôt que
de les réutiliser sans comprendre. Ainsi vous verrez si quelqu'un a modifié
la page pour modifier les commandes.

= DPKG =
DPKG et APT sont de puissants outils y compris lorsqu'il s'agit de gagner de
la place.

== Repérez les fichiers de configuration &quot;orphelins&quot; ==

 $ aptitude search ~c
 c   bluez-audio                                             - Transitional package
 c   bluez-gnome                                             - utilitaires Bluetooth pour GNOME
 c   bluez-utils                                             - Transitional package
 c   chillispot                                              - Wireless LAN Access Point Controller
 ...

La commande suivante fait aussi ce travail, mais le résultat est compact, moins lisible :

 $ dpkg -l | grep ^rc |awk '{print $2}' | xargs echo
 bluez-audio bluez-gnome bluez-utils chillispot...

== Supprimer tous les Fichiers de configuration orphelins ==

Lors de la désinstallation d'un logiciel le comportement par défaut consiste à
garder les fichiers de configuration afin de pouvoir les réutiliser en cas de
réinstallation du logiciel en question. Pour nettoyer votre Debian de tout ces
fichiers superflus une seule commande suffit :
 dpkg -P $(dpkg -l | grep '^rc' | awk '{ print $2 }')

Ensuite si vous souhaitez que la suppression des fichiers de configuration se
fasse automatiquement il suffit d'ajouter ceci au fichier /etc/apt/apt.conf :
 APT::Get::Purge &quot;true&quot;

Vous préfèrerez peut-être utiliser cette commande qui supprimera aussi les dépendances devenues non nécessaires :

 # aptitude purge ~c

== Supprimer certains Fichiers de configuration orphelins ==

&quot;L'inconvénient&quot; des commandes ci-dessus est qu'elle suppriment TOUS les fichiers de configuration alors que vous souhaitez peut-être en conserver certains en vue d'une ré-installation ultérieure. La commande ci-dessous ne supprimera la configuration et les dépendances inutiles que pour le paquet le_nom_du_paquet

 # aptitude purge le_nom_du_paquet

== Dépendances orphelines ==
Lorsque vous installez un logiciel un certain nombre de dépendances
s'installent avec lui. Par contre lorsque vous désinstallez ce même logiciel
les dépendances ne partent pas systématiquement avec lui (par exemple si vous
n'avez pas utilisé aptitude ou bien apt-get avec l'option auto-remove, ou 
encore si vous avez installé ces paquets explicitement). Il arrive donc
souvent que des paquets inutiles subsistent. Pour trouver certains de ces paquets
et éventuellement les supprimer, il existe 
deborphan (ou la version avec une interface graphique
gtkorphan) qui liste les bibliothèques orphelines.

Un simple appel permet de lister les paquets qu'il considère comme orphelins (autrement
dit non nécessaires au système à priori).
Il faut noter que certains de ces paquets peuvent être utiles. En effet certains
apportent des fonctionnalités sans être des dépendances. Si deborphan liste un
paquet que vous souhaitez garder vous pouvez utiliser cette commande :
 deborphan --add-keep &lt;nom paquet&gt;

Ensuite une fois que l'on est sûr que deborphan ne prend pas en compte les
paquets que l'on veut garder, il suffit de lancer la commande :
 aptitude remove $(deborphan)

== Cache APT ==
Lorsque l'on installe des logiciels, APT va télécharger des paquets debian
(*.deb) et va les installer un à un. Pour diverses raisons (ne pas
re-télécharger le paquet en cas de réinstallation par exemple), ces
paquets ne sont pas supprimés après l'installation.

On peut d'une part supprimer tous les paquets en cache inutile (si on a
plusieurs versions d'un même paquet on ne garde que la dernière). Cela
se fait avec la commande :
 aptitude autoclean

Si on veut supprimer tous les paquets du cache :
 aptitude clean
ou encore
 apt-get clean
Bien sûr il est possible (mais déconseillé) de rendre cette maintenance
automatique, comme avec l'option purge (voir la page man de apt.conf).

== Localepurge ==
localepurge permet de ne garder que les fichiers d'internationalisation 
des langues que vous choisissez. Elle est très simple à mettre en place et peut
permettre de gagner beaucoup de place. Il suffit de l'installer puis elle
libère la place toute seule de manière automatique lors de l'installation ou la
suppression de programme.
 aptitude install localepurge

Lors de l'installation, il vous sera demandé de choisir les langues que vous
souhaitez garder. Je vous conseil fr_FR, fr_FR@UTF-8 et fr_FR@euro.

Attention, cette action est irréversible. Notamment les paquets reconstruits via 
dpkg-repack seront par exemple incomplet. La purge de ce paquet n'a d'effet que pour
les paquets à venir qui seront installés de nouveau complètement (avec le serbo-croate,
le russe, le chinois, etc).

== Popularity contest ==
''Travail en cours''

== Debfoster ==
''Travail en cours''

= Fichiers utilisateurs =
Si votre dossier /home vous semble démesurément gros et que vous souhaitez en
diminuer la taille, il existe quelques commandes et quelques logiciels très
intéressants.

== Voir l'espace occupé par l'arborescence ==
Cette partie va vous expliquer comment trouver les dossiers et les fichiers les
plus gros d'un dossier donné. Ensuite il suffira de les supprimer ou les
compresser de la manière qu'il vous conviendra.

=== Commandes ===
Pour connaitre la taille de tous les dossiers et sous-dossiers du répertoire
courant, il suffit de taper la commande :
 du -ah

Le problème c'est que les fichiers ne seront pas triés. Pour les trier il faut
utiliser la commande :
 du -S | sort -n

=== Logiciels graphiques ===
Les logiciels ''Baobab'' (Gnome) et ''Krusader'' (KDE) permettent de voir de
manière graphique quel dossier et quels fichiers occupent le plus d'espace. Ces
logiciels étant très bien faits, il ne semble pas qu'il soit très utile
d'expliquer leur utilisation. Notez juste que ces paquets ne feront qu'analyser
le disque, c'est à vous par la suite de supprimer les fichiers en question.

Il existe aussi ''xdiskusage''. Très simple, il permet de voir l'occupation
partition par partition et indique l'espace libre.

== FSLint ==
''Travail en cours''

[[Catégorie:Installation]]</text>
      <sha1>bl93kiq5l1px5oxwkoldpu2x6ymhrlv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3520</id>
      <parentid>3519</parentid>
      <timestamp>2011-10-30T18:01:25Z</timestamp>
      <contributor>
        <username>Martin mtl</username>
        <id>173</id>
      </contributor>
      <comment>/* Logiciels graphiques */</comment>
      <text xml:space="preserve" bytes="6680">Nettoyage d'une Debian en vue de gagner de la place

= Objectif =
Vous avez installé une Debian depuis quelques temps déjà et vous commencez à
manquer de place sur votre partition ? Voici quelques astuces pour gagner
plusieurs centaines de mégaoctets.

Note : ce document n'hésite pas une seule seconde à utiliser des commandes
dites complexes (sous-shell, commande à la chaîne,...). Elles peuvent être
difficiles à comprendre mais nous vous conseillons de les comprendre plutôt que
de les réutiliser sans comprendre. Ainsi vous verrez si quelqu'un a modifié
la page pour modifier les commandes.

= DPKG =
DPKG et APT sont de puissants outils y compris lorsqu'il s'agit de gagner de
la place.

== Repérez les fichiers de configuration &quot;orphelins&quot; ==

 $ aptitude search ~c
 c   bluez-audio                                             - Transitional package
 c   bluez-gnome                                             - utilitaires Bluetooth pour GNOME
 c   bluez-utils                                             - Transitional package
 c   chillispot                                              - Wireless LAN Access Point Controller
 ...

La commande suivante fait aussi ce travail, mais le résultat est compact, moins lisible :

 $ dpkg -l | grep ^rc |awk '{print $2}' | xargs echo
 bluez-audio bluez-gnome bluez-utils chillispot...

== Supprimer tous les Fichiers de configuration orphelins ==

Lors de la désinstallation d'un logiciel le comportement par défaut consiste à
garder les fichiers de configuration afin de pouvoir les réutiliser en cas de
réinstallation du logiciel en question. Pour nettoyer votre Debian de tout ces
fichiers superflus une seule commande suffit :
 dpkg -P $(dpkg -l | grep '^rc' | awk '{ print $2 }')

Ensuite si vous souhaitez que la suppression des fichiers de configuration se
fasse automatiquement il suffit d'ajouter ceci au fichier /etc/apt/apt.conf :
 APT::Get::Purge &quot;true&quot;

Vous préfèrerez peut-être utiliser cette commande qui supprimera aussi les dépendances devenues non nécessaires :

 # aptitude purge ~c

== Supprimer certains Fichiers de configuration orphelins ==

&quot;L'inconvénient&quot; des commandes ci-dessus est qu'elle suppriment TOUS les fichiers de configuration alors que vous souhaitez peut-être en conserver certains en vue d'une ré-installation ultérieure. La commande ci-dessous ne supprimera la configuration et les dépendances inutiles que pour le paquet le_nom_du_paquet

 # aptitude purge le_nom_du_paquet

== Dépendances orphelines ==
Lorsque vous installez un logiciel un certain nombre de dépendances
s'installent avec lui. Par contre lorsque vous désinstallez ce même logiciel
les dépendances ne partent pas systématiquement avec lui (par exemple si vous
n'avez pas utilisé aptitude ou bien apt-get avec l'option auto-remove, ou 
encore si vous avez installé ces paquets explicitement). Il arrive donc
souvent que des paquets inutiles subsistent. Pour trouver certains de ces paquets
et éventuellement les supprimer, il existe 
deborphan (ou la version avec une interface graphique
gtkorphan) qui liste les bibliothèques orphelines.

Un simple appel permet de lister les paquets qu'il considère comme orphelins (autrement
dit non nécessaires au système à priori).
Il faut noter que certains de ces paquets peuvent être utiles. En effet certains
apportent des fonctionnalités sans être des dépendances. Si deborphan liste un
paquet que vous souhaitez garder vous pouvez utiliser cette commande :
 deborphan --add-keep &lt;nom paquet&gt;

Ensuite une fois que l'on est sûr que deborphan ne prend pas en compte les
paquets que l'on veut garder, il suffit de lancer la commande :
 aptitude remove $(deborphan)

== Cache APT ==
Lorsque l'on installe des logiciels, APT va télécharger des paquets debian
(*.deb) et va les installer un à un. Pour diverses raisons (ne pas
re-télécharger le paquet en cas de réinstallation par exemple), ces
paquets ne sont pas supprimés après l'installation.

On peut d'une part supprimer tous les paquets en cache inutile (si on a
plusieurs versions d'un même paquet on ne garde que la dernière). Cela
se fait avec la commande :
 aptitude autoclean

Si on veut supprimer tous les paquets du cache :
 aptitude clean
ou encore
 apt-get clean
Bien sûr il est possible (mais déconseillé) de rendre cette maintenance
automatique, comme avec l'option purge (voir la page man de apt.conf).

== Localepurge ==
localepurge permet de ne garder que les fichiers d'internationalisation 
des langues que vous choisissez. Elle est très simple à mettre en place et peut
permettre de gagner beaucoup de place. Il suffit de l'installer puis elle
libère la place toute seule de manière automatique lors de l'installation ou la
suppression de programme.
 aptitude install localepurge

Lors de l'installation, il vous sera demandé de choisir les langues que vous
souhaitez garder. Je vous conseil fr_FR, fr_FR@UTF-8 et fr_FR@euro.

Attention, cette action est irréversible. Notamment les paquets reconstruits via 
dpkg-repack seront par exemple incomplet. La purge de ce paquet n'a d'effet que pour
les paquets à venir qui seront installés de nouveau complètement (avec le serbo-croate,
le russe, le chinois, etc).

== Popularity contest ==
''Travail en cours''

== Debfoster ==
''Travail en cours''

= Fichiers utilisateurs =
Si votre dossier /home vous semble démesurément gros et que vous souhaitez en
diminuer la taille, il existe quelques commandes et quelques logiciels très
intéressants.

== Voir l'espace occupé par l'arborescence ==
Cette partie va vous expliquer comment trouver les dossiers et les fichiers les
plus gros d'un dossier donné. Ensuite il suffira de les supprimer ou les
compresser de la manière qu'il vous conviendra.

=== Commandes ===
Pour connaitre la taille de tous les dossiers et sous-dossiers du répertoire
courant, il suffit de taper la commande :
 du -ah

Le problème c'est que les fichiers ne seront pas triés. Pour les trier il faut
utiliser la commande :
 du -S | sort -n

=== Logiciels graphiques ===
Les logiciels ''Baobab'' (Gnome) et ''Krusader'' (KDE) permettent de voir de
manière graphique quels dossiers et fichiers occupent le plus d'espace. Ces
logiciels étant très bien faits, il ne semble pas qu'il soit très utile
d'expliquer leur utilisation. Notez juste que ces deux applications ne feront qu'analyser
le disque, c'est à vous, par la suite, de supprimer les fichiers en question.

Il existe aussi ''xdiskusage''. Très simple, il permet de voir l'occupation
partition par partition et indique l'espace libre.

== FSLint ==
''Travail en cours''

[[Catégorie:Installation]]</text>
      <sha1>c78d2594iap8e6fhpq06s1jknd52f74</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3608</id>
      <parentid>3520</parentid>
      <timestamp>2011-11-29T08:16:31Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <minor/>
      <comment>/* Supprimer tous les Fichiers de configuration orphelins */  Plus de grep et on utilise un motif de recherche un peu plus fiable.</comment>
      <text xml:space="preserve" bytes="6676">Nettoyage d'une Debian en vue de gagner de la place

= Objectif =
Vous avez installé une Debian depuis quelques temps déjà et vous commencez à
manquer de place sur votre partition ? Voici quelques astuces pour gagner
plusieurs centaines de mégaoctets.

Note : ce document n'hésite pas une seule seconde à utiliser des commandes
dites complexes (sous-shell, commande à la chaîne,...). Elles peuvent être
difficiles à comprendre mais nous vous conseillons de les comprendre plutôt que
de les réutiliser sans comprendre. Ainsi vous verrez si quelqu'un a modifié
la page pour modifier les commandes.

= DPKG =
DPKG et APT sont de puissants outils y compris lorsqu'il s'agit de gagner de
la place.

== Repérez les fichiers de configuration &quot;orphelins&quot; ==

 $ aptitude search ~c
 c   bluez-audio                                             - Transitional package
 c   bluez-gnome                                             - utilitaires Bluetooth pour GNOME
 c   bluez-utils                                             - Transitional package
 c   chillispot                                              - Wireless LAN Access Point Controller
 ...

La commande suivante fait aussi ce travail, mais le résultat est compact, moins lisible :

 $ dpkg -l | grep ^rc |awk '{print $2}' | xargs echo
 bluez-audio bluez-gnome bluez-utils chillispot...

== Supprimer tous les Fichiers de configuration orphelins ==

Lors de la désinstallation d'un logiciel le comportement par défaut consiste à
garder les fichiers de configuration afin de pouvoir les réutiliser en cas de
réinstallation du logiciel en question. Pour nettoyer votre Debian de tout ces
fichiers superflus une seule commande suffit :
 dpkg -P $(dpkg -l | awk '$1~/^rc$/{ print $2 }')

Ensuite si vous souhaitez que la suppression des fichiers de configuration se
fasse automatiquement il suffit d'ajouter ceci au fichier /etc/apt/apt.conf :
 APT::Get::Purge &quot;true&quot;

Vous préfèrerez peut-être utiliser cette commande qui supprimera aussi les dépendances devenues non nécessaires :

 # aptitude purge ~c

== Supprimer certains Fichiers de configuration orphelins ==

&quot;L'inconvénient&quot; des commandes ci-dessus est qu'elle suppriment TOUS les fichiers de configuration alors que vous souhaitez peut-être en conserver certains en vue d'une ré-installation ultérieure. La commande ci-dessous ne supprimera la configuration et les dépendances inutiles que pour le paquet le_nom_du_paquet

 # aptitude purge le_nom_du_paquet

== Dépendances orphelines ==
Lorsque vous installez un logiciel un certain nombre de dépendances
s'installent avec lui. Par contre lorsque vous désinstallez ce même logiciel
les dépendances ne partent pas systématiquement avec lui (par exemple si vous
n'avez pas utilisé aptitude ou bien apt-get avec l'option auto-remove, ou 
encore si vous avez installé ces paquets explicitement). Il arrive donc
souvent que des paquets inutiles subsistent. Pour trouver certains de ces paquets
et éventuellement les supprimer, il existe 
deborphan (ou la version avec une interface graphique
gtkorphan) qui liste les bibliothèques orphelines.

Un simple appel permet de lister les paquets qu'il considère comme orphelins (autrement
dit non nécessaires au système à priori).
Il faut noter que certains de ces paquets peuvent être utiles. En effet certains
apportent des fonctionnalités sans être des dépendances. Si deborphan liste un
paquet que vous souhaitez garder vous pouvez utiliser cette commande :
 deborphan --add-keep &lt;nom paquet&gt;

Ensuite une fois que l'on est sûr que deborphan ne prend pas en compte les
paquets que l'on veut garder, il suffit de lancer la commande :
 aptitude remove $(deborphan)

== Cache APT ==
Lorsque l'on installe des logiciels, APT va télécharger des paquets debian
(*.deb) et va les installer un à un. Pour diverses raisons (ne pas
re-télécharger le paquet en cas de réinstallation par exemple), ces
paquets ne sont pas supprimés après l'installation.

On peut d'une part supprimer tous les paquets en cache inutile (si on a
plusieurs versions d'un même paquet on ne garde que la dernière). Cela
se fait avec la commande :
 aptitude autoclean

Si on veut supprimer tous les paquets du cache :
 aptitude clean
ou encore
 apt-get clean
Bien sûr il est possible (mais déconseillé) de rendre cette maintenance
automatique, comme avec l'option purge (voir la page man de apt.conf).

== Localepurge ==
localepurge permet de ne garder que les fichiers d'internationalisation 
des langues que vous choisissez. Elle est très simple à mettre en place et peut
permettre de gagner beaucoup de place. Il suffit de l'installer puis elle
libère la place toute seule de manière automatique lors de l'installation ou la
suppression de programme.
 aptitude install localepurge

Lors de l'installation, il vous sera demandé de choisir les langues que vous
souhaitez garder. Je vous conseil fr_FR, fr_FR@UTF-8 et fr_FR@euro.

Attention, cette action est irréversible. Notamment les paquets reconstruits via 
dpkg-repack seront par exemple incomplet. La purge de ce paquet n'a d'effet que pour
les paquets à venir qui seront installés de nouveau complètement (avec le serbo-croate,
le russe, le chinois, etc).

== Popularity contest ==
''Travail en cours''

== Debfoster ==
''Travail en cours''

= Fichiers utilisateurs =
Si votre dossier /home vous semble démesurément gros et que vous souhaitez en
diminuer la taille, il existe quelques commandes et quelques logiciels très
intéressants.

== Voir l'espace occupé par l'arborescence ==
Cette partie va vous expliquer comment trouver les dossiers et les fichiers les
plus gros d'un dossier donné. Ensuite il suffira de les supprimer ou les
compresser de la manière qu'il vous conviendra.

=== Commandes ===
Pour connaitre la taille de tous les dossiers et sous-dossiers du répertoire
courant, il suffit de taper la commande :
 du -ah

Le problème c'est que les fichiers ne seront pas triés. Pour les trier il faut
utiliser la commande :
 du -S | sort -n

=== Logiciels graphiques ===
Les logiciels ''Baobab'' (Gnome) et ''Krusader'' (KDE) permettent de voir de
manière graphique quels dossiers et fichiers occupent le plus d'espace. Ces
logiciels étant très bien faits, il ne semble pas qu'il soit très utile
d'expliquer leur utilisation. Notez juste que ces deux applications ne feront qu'analyser
le disque, c'est à vous, par la suite, de supprimer les fichiers en question.

Il existe aussi ''xdiskusage''. Très simple, il permet de voir l'occupation
partition par partition et indique l'espace libre.

== FSLint ==
''Travail en cours''

[[Catégorie:Installation]]</text>
      <sha1>g5qgw0w0c5mitok50nh2fvnop0a1rg6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3609</id>
      <parentid>3608</parentid>
      <timestamp>2011-11-29T08:17:48Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <minor/>
      <comment>/* Repérez les fichiers de configuration &quot;orphelins&quot; */  Plus de grep motif de recherche plus fiable.</comment>
      <text xml:space="preserve" bytes="6675">Nettoyage d'une Debian en vue de gagner de la place

= Objectif =
Vous avez installé une Debian depuis quelques temps déjà et vous commencez à
manquer de place sur votre partition ? Voici quelques astuces pour gagner
plusieurs centaines de mégaoctets.

Note : ce document n'hésite pas une seule seconde à utiliser des commandes
dites complexes (sous-shell, commande à la chaîne,...). Elles peuvent être
difficiles à comprendre mais nous vous conseillons de les comprendre plutôt que
de les réutiliser sans comprendre. Ainsi vous verrez si quelqu'un a modifié
la page pour modifier les commandes.

= DPKG =
DPKG et APT sont de puissants outils y compris lorsqu'il s'agit de gagner de
la place.

== Repérez les fichiers de configuration &quot;orphelins&quot; ==

 $ aptitude search ~c
 c   bluez-audio                                             - Transitional package
 c   bluez-gnome                                             - utilitaires Bluetooth pour GNOME
 c   bluez-utils                                             - Transitional package
 c   chillispot                                              - Wireless LAN Access Point Controller
 ...

La commande suivante fait aussi ce travail, mais le résultat est compact, moins lisible :

 $ dpkg -l | awk '$1~/^rc$/{print $2}' | xargs echo
 bluez-audio bluez-gnome bluez-utils chillispot...

== Supprimer tous les Fichiers de configuration orphelins ==

Lors de la désinstallation d'un logiciel le comportement par défaut consiste à
garder les fichiers de configuration afin de pouvoir les réutiliser en cas de
réinstallation du logiciel en question. Pour nettoyer votre Debian de tout ces
fichiers superflus une seule commande suffit :
 dpkg -P $(dpkg -l | awk '$1~/^rc$/{ print $2 }')

Ensuite si vous souhaitez que la suppression des fichiers de configuration se
fasse automatiquement il suffit d'ajouter ceci au fichier /etc/apt/apt.conf :
 APT::Get::Purge &quot;true&quot;

Vous préfèrerez peut-être utiliser cette commande qui supprimera aussi les dépendances devenues non nécessaires :

 # aptitude purge ~c

== Supprimer certains Fichiers de configuration orphelins ==

&quot;L'inconvénient&quot; des commandes ci-dessus est qu'elle suppriment TOUS les fichiers de configuration alors que vous souhaitez peut-être en conserver certains en vue d'une ré-installation ultérieure. La commande ci-dessous ne supprimera la configuration et les dépendances inutiles que pour le paquet le_nom_du_paquet

 # aptitude purge le_nom_du_paquet

== Dépendances orphelines ==
Lorsque vous installez un logiciel un certain nombre de dépendances
s'installent avec lui. Par contre lorsque vous désinstallez ce même logiciel
les dépendances ne partent pas systématiquement avec lui (par exemple si vous
n'avez pas utilisé aptitude ou bien apt-get avec l'option auto-remove, ou 
encore si vous avez installé ces paquets explicitement). Il arrive donc
souvent que des paquets inutiles subsistent. Pour trouver certains de ces paquets
et éventuellement les supprimer, il existe 
deborphan (ou la version avec une interface graphique
gtkorphan) qui liste les bibliothèques orphelines.

Un simple appel permet de lister les paquets qu'il considère comme orphelins (autrement
dit non nécessaires au système à priori).
Il faut noter que certains de ces paquets peuvent être utiles. En effet certains
apportent des fonctionnalités sans être des dépendances. Si deborphan liste un
paquet que vous souhaitez garder vous pouvez utiliser cette commande :
 deborphan --add-keep &lt;nom paquet&gt;

Ensuite une fois que l'on est sûr que deborphan ne prend pas en compte les
paquets que l'on veut garder, il suffit de lancer la commande :
 aptitude remove $(deborphan)

== Cache APT ==
Lorsque l'on installe des logiciels, APT va télécharger des paquets debian
(*.deb) et va les installer un à un. Pour diverses raisons (ne pas
re-télécharger le paquet en cas de réinstallation par exemple), ces
paquets ne sont pas supprimés après l'installation.

On peut d'une part supprimer tous les paquets en cache inutile (si on a
plusieurs versions d'un même paquet on ne garde que la dernière). Cela
se fait avec la commande :
 aptitude autoclean

Si on veut supprimer tous les paquets du cache :
 aptitude clean
ou encore
 apt-get clean
Bien sûr il est possible (mais déconseillé) de rendre cette maintenance
automatique, comme avec l'option purge (voir la page man de apt.conf).

== Localepurge ==
localepurge permet de ne garder que les fichiers d'internationalisation 
des langues que vous choisissez. Elle est très simple à mettre en place et peut
permettre de gagner beaucoup de place. Il suffit de l'installer puis elle
libère la place toute seule de manière automatique lors de l'installation ou la
suppression de programme.
 aptitude install localepurge

Lors de l'installation, il vous sera demandé de choisir les langues que vous
souhaitez garder. Je vous conseil fr_FR, fr_FR@UTF-8 et fr_FR@euro.

Attention, cette action est irréversible. Notamment les paquets reconstruits via 
dpkg-repack seront par exemple incomplet. La purge de ce paquet n'a d'effet que pour
les paquets à venir qui seront installés de nouveau complètement (avec le serbo-croate,
le russe, le chinois, etc).

== Popularity contest ==
''Travail en cours''

== Debfoster ==
''Travail en cours''

= Fichiers utilisateurs =
Si votre dossier /home vous semble démesurément gros et que vous souhaitez en
diminuer la taille, il existe quelques commandes et quelques logiciels très
intéressants.

== Voir l'espace occupé par l'arborescence ==
Cette partie va vous expliquer comment trouver les dossiers et les fichiers les
plus gros d'un dossier donné. Ensuite il suffira de les supprimer ou les
compresser de la manière qu'il vous conviendra.

=== Commandes ===
Pour connaitre la taille de tous les dossiers et sous-dossiers du répertoire
courant, il suffit de taper la commande :
 du -ah

Le problème c'est que les fichiers ne seront pas triés. Pour les trier il faut
utiliser la commande :
 du -S | sort -n

=== Logiciels graphiques ===
Les logiciels ''Baobab'' (Gnome) et ''Krusader'' (KDE) permettent de voir de
manière graphique quels dossiers et fichiers occupent le plus d'espace. Ces
logiciels étant très bien faits, il ne semble pas qu'il soit très utile
d'expliquer leur utilisation. Notez juste que ces deux applications ne feront qu'analyser
le disque, c'est à vous, par la suite, de supprimer les fichiers en question.

Il existe aussi ''xdiskusage''. Très simple, il permet de voir l'occupation
partition par partition et indique l'espace libre.

== FSLint ==
''Travail en cours''

[[Catégorie:Installation]]</text>
      <sha1>n8lxcxu4b1bsgoygsf1fy6rfkywmvvh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3610</id>
      <parentid>3609</parentid>
      <timestamp>2011-11-29T08:18:16Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <minor/>
      <comment>/* Supprimer tous les Fichiers de configuration orphelins */</comment>
      <text xml:space="preserve" bytes="6673">Nettoyage d'une Debian en vue de gagner de la place

= Objectif =
Vous avez installé une Debian depuis quelques temps déjà et vous commencez à
manquer de place sur votre partition ? Voici quelques astuces pour gagner
plusieurs centaines de mégaoctets.

Note : ce document n'hésite pas une seule seconde à utiliser des commandes
dites complexes (sous-shell, commande à la chaîne,...). Elles peuvent être
difficiles à comprendre mais nous vous conseillons de les comprendre plutôt que
de les réutiliser sans comprendre. Ainsi vous verrez si quelqu'un a modifié
la page pour modifier les commandes.

= DPKG =
DPKG et APT sont de puissants outils y compris lorsqu'il s'agit de gagner de
la place.

== Repérez les fichiers de configuration &quot;orphelins&quot; ==

 $ aptitude search ~c
 c   bluez-audio                                             - Transitional package
 c   bluez-gnome                                             - utilitaires Bluetooth pour GNOME
 c   bluez-utils                                             - Transitional package
 c   chillispot                                              - Wireless LAN Access Point Controller
 ...

La commande suivante fait aussi ce travail, mais le résultat est compact, moins lisible :

 $ dpkg -l | awk '$1~/^rc$/{print $2}' | xargs echo
 bluez-audio bluez-gnome bluez-utils chillispot...

== Supprimer tous les Fichiers de configuration orphelins ==

Lors de la désinstallation d'un logiciel le comportement par défaut consiste à
garder les fichiers de configuration afin de pouvoir les réutiliser en cas de
réinstallation du logiciel en question. Pour nettoyer votre Debian de tout ces
fichiers superflus une seule commande suffit :
 dpkg -P $(dpkg -l | awk '$1~/^rc$/{print $2}')

Ensuite si vous souhaitez que la suppression des fichiers de configuration se
fasse automatiquement il suffit d'ajouter ceci au fichier /etc/apt/apt.conf :
 APT::Get::Purge &quot;true&quot;

Vous préfèrerez peut-être utiliser cette commande qui supprimera aussi les dépendances devenues non nécessaires :

 # aptitude purge ~c

== Supprimer certains Fichiers de configuration orphelins ==

&quot;L'inconvénient&quot; des commandes ci-dessus est qu'elle suppriment TOUS les fichiers de configuration alors que vous souhaitez peut-être en conserver certains en vue d'une ré-installation ultérieure. La commande ci-dessous ne supprimera la configuration et les dépendances inutiles que pour le paquet le_nom_du_paquet

 # aptitude purge le_nom_du_paquet

== Dépendances orphelines ==
Lorsque vous installez un logiciel un certain nombre de dépendances
s'installent avec lui. Par contre lorsque vous désinstallez ce même logiciel
les dépendances ne partent pas systématiquement avec lui (par exemple si vous
n'avez pas utilisé aptitude ou bien apt-get avec l'option auto-remove, ou 
encore si vous avez installé ces paquets explicitement). Il arrive donc
souvent que des paquets inutiles subsistent. Pour trouver certains de ces paquets
et éventuellement les supprimer, il existe 
deborphan (ou la version avec une interface graphique
gtkorphan) qui liste les bibliothèques orphelines.

Un simple appel permet de lister les paquets qu'il considère comme orphelins (autrement
dit non nécessaires au système à priori).
Il faut noter que certains de ces paquets peuvent être utiles. En effet certains
apportent des fonctionnalités sans être des dépendances. Si deborphan liste un
paquet que vous souhaitez garder vous pouvez utiliser cette commande :
 deborphan --add-keep &lt;nom paquet&gt;

Ensuite une fois que l'on est sûr que deborphan ne prend pas en compte les
paquets que l'on veut garder, il suffit de lancer la commande :
 aptitude remove $(deborphan)

== Cache APT ==
Lorsque l'on installe des logiciels, APT va télécharger des paquets debian
(*.deb) et va les installer un à un. Pour diverses raisons (ne pas
re-télécharger le paquet en cas de réinstallation par exemple), ces
paquets ne sont pas supprimés après l'installation.

On peut d'une part supprimer tous les paquets en cache inutile (si on a
plusieurs versions d'un même paquet on ne garde que la dernière). Cela
se fait avec la commande :
 aptitude autoclean

Si on veut supprimer tous les paquets du cache :
 aptitude clean
ou encore
 apt-get clean
Bien sûr il est possible (mais déconseillé) de rendre cette maintenance
automatique, comme avec l'option purge (voir la page man de apt.conf).

== Localepurge ==
localepurge permet de ne garder que les fichiers d'internationalisation 
des langues que vous choisissez. Elle est très simple à mettre en place et peut
permettre de gagner beaucoup de place. Il suffit de l'installer puis elle
libère la place toute seule de manière automatique lors de l'installation ou la
suppression de programme.
 aptitude install localepurge

Lors de l'installation, il vous sera demandé de choisir les langues que vous
souhaitez garder. Je vous conseil fr_FR, fr_FR@UTF-8 et fr_FR@euro.

Attention, cette action est irréversible. Notamment les paquets reconstruits via 
dpkg-repack seront par exemple incomplet. La purge de ce paquet n'a d'effet que pour
les paquets à venir qui seront installés de nouveau complètement (avec le serbo-croate,
le russe, le chinois, etc).

== Popularity contest ==
''Travail en cours''

== Debfoster ==
''Travail en cours''

= Fichiers utilisateurs =
Si votre dossier /home vous semble démesurément gros et que vous souhaitez en
diminuer la taille, il existe quelques commandes et quelques logiciels très
intéressants.

== Voir l'espace occupé par l'arborescence ==
Cette partie va vous expliquer comment trouver les dossiers et les fichiers les
plus gros d'un dossier donné. Ensuite il suffira de les supprimer ou les
compresser de la manière qu'il vous conviendra.

=== Commandes ===
Pour connaitre la taille de tous les dossiers et sous-dossiers du répertoire
courant, il suffit de taper la commande :
 du -ah

Le problème c'est que les fichiers ne seront pas triés. Pour les trier il faut
utiliser la commande :
 du -S | sort -n

=== Logiciels graphiques ===
Les logiciels ''Baobab'' (Gnome) et ''Krusader'' (KDE) permettent de voir de
manière graphique quels dossiers et fichiers occupent le plus d'espace. Ces
logiciels étant très bien faits, il ne semble pas qu'il soit très utile
d'expliquer leur utilisation. Notez juste que ces deux applications ne feront qu'analyser
le disque, c'est à vous, par la suite, de supprimer les fichiers en question.

Il existe aussi ''xdiskusage''. Très simple, il permet de voir l'occupation
partition par partition et indique l'espace libre.

== FSLint ==
''Travail en cours''

[[Catégorie:Installation]]</text>
      <sha1>ktdfhrjsecp0ivm80pbvvyws8icbsgw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4373</id>
      <parentid>3610</parentid>
      <timestamp>2012-07-30T07:37:59Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Logiciels graphiques */</comment>
      <text xml:space="preserve" bytes="6676">Nettoyage d'une Debian en vue de gagner de la place

= Objectif =
Vous avez installé une Debian depuis quelques temps déjà et vous commencez à
manquer de place sur votre partition ? Voici quelques astuces pour gagner
plusieurs centaines de mégaoctets.

Note : ce document n'hésite pas une seule seconde à utiliser des commandes
dites complexes (sous-shell, commande à la chaîne,...). Elles peuvent être
difficiles à comprendre mais nous vous conseillons de les comprendre plutôt que
de les réutiliser sans comprendre. Ainsi vous verrez si quelqu'un a modifié
la page pour modifier les commandes.

= DPKG =
DPKG et APT sont de puissants outils y compris lorsqu'il s'agit de gagner de
la place.

== Repérez les fichiers de configuration &quot;orphelins&quot; ==

 $ aptitude search ~c
 c   bluez-audio                                             - Transitional package
 c   bluez-gnome                                             - utilitaires Bluetooth pour GNOME
 c   bluez-utils                                             - Transitional package
 c   chillispot                                              - Wireless LAN Access Point Controller
 ...

La commande suivante fait aussi ce travail, mais le résultat est compact, moins lisible :

 $ dpkg -l | awk '$1~/^rc$/{print $2}' | xargs echo
 bluez-audio bluez-gnome bluez-utils chillispot...

== Supprimer tous les Fichiers de configuration orphelins ==

Lors de la désinstallation d'un logiciel le comportement par défaut consiste à
garder les fichiers de configuration afin de pouvoir les réutiliser en cas de
réinstallation du logiciel en question. Pour nettoyer votre Debian de tout ces
fichiers superflus une seule commande suffit :
 dpkg -P $(dpkg -l | awk '$1~/^rc$/{print $2}')

Ensuite si vous souhaitez que la suppression des fichiers de configuration se
fasse automatiquement il suffit d'ajouter ceci au fichier /etc/apt/apt.conf :
 APT::Get::Purge &quot;true&quot;

Vous préfèrerez peut-être utiliser cette commande qui supprimera aussi les dépendances devenues non nécessaires :

 # aptitude purge ~c

== Supprimer certains Fichiers de configuration orphelins ==

&quot;L'inconvénient&quot; des commandes ci-dessus est qu'elle suppriment TOUS les fichiers de configuration alors que vous souhaitez peut-être en conserver certains en vue d'une ré-installation ultérieure. La commande ci-dessous ne supprimera la configuration et les dépendances inutiles que pour le paquet le_nom_du_paquet

 # aptitude purge le_nom_du_paquet

== Dépendances orphelines ==
Lorsque vous installez un logiciel un certain nombre de dépendances
s'installent avec lui. Par contre lorsque vous désinstallez ce même logiciel
les dépendances ne partent pas systématiquement avec lui (par exemple si vous
n'avez pas utilisé aptitude ou bien apt-get avec l'option auto-remove, ou 
encore si vous avez installé ces paquets explicitement). Il arrive donc
souvent que des paquets inutiles subsistent. Pour trouver certains de ces paquets
et éventuellement les supprimer, il existe 
deborphan (ou la version avec une interface graphique
gtkorphan) qui liste les bibliothèques orphelines.

Un simple appel permet de lister les paquets qu'il considère comme orphelins (autrement
dit non nécessaires au système à priori).
Il faut noter que certains de ces paquets peuvent être utiles. En effet certains
apportent des fonctionnalités sans être des dépendances. Si deborphan liste un
paquet que vous souhaitez garder vous pouvez utiliser cette commande :
 deborphan --add-keep &lt;nom paquet&gt;

Ensuite une fois que l'on est sûr que deborphan ne prend pas en compte les
paquets que l'on veut garder, il suffit de lancer la commande :
 aptitude remove $(deborphan)

== Cache APT ==
Lorsque l'on installe des logiciels, APT va télécharger des paquets debian
(*.deb) et va les installer un à un. Pour diverses raisons (ne pas
re-télécharger le paquet en cas de réinstallation par exemple), ces
paquets ne sont pas supprimés après l'installation.

On peut d'une part supprimer tous les paquets en cache inutile (si on a
plusieurs versions d'un même paquet on ne garde que la dernière). Cela
se fait avec la commande :
 aptitude autoclean

Si on veut supprimer tous les paquets du cache :
 aptitude clean
ou encore
 apt-get clean
Bien sûr il est possible (mais déconseillé) de rendre cette maintenance
automatique, comme avec l'option purge (voir la page man de apt.conf).

== Localepurge ==
localepurge permet de ne garder que les fichiers d'internationalisation 
des langues que vous choisissez. Elle est très simple à mettre en place et peut
permettre de gagner beaucoup de place. Il suffit de l'installer puis elle
libère la place toute seule de manière automatique lors de l'installation ou la
suppression de programme.
 aptitude install localepurge

Lors de l'installation, il vous sera demandé de choisir les langues que vous
souhaitez garder. Je vous conseil fr_FR, fr_FR@UTF-8 et fr_FR@euro.

Attention, cette action est irréversible. Notamment les paquets reconstruits via 
dpkg-repack seront par exemple incomplet. La purge de ce paquet n'a d'effet que pour
les paquets à venir qui seront installés de nouveau complètement (avec le serbo-croate,
le russe, le chinois, etc).

== Popularity contest ==
''Travail en cours''

== Debfoster ==
''Travail en cours''

= Fichiers utilisateurs =
Si votre dossier /home vous semble démesurément gros et que vous souhaitez en
diminuer la taille, il existe quelques commandes et quelques logiciels très
intéressants.

== Voir l'espace occupé par l'arborescence ==
Cette partie va vous expliquer comment trouver les dossiers et les fichiers les
plus gros d'un dossier donné. Ensuite il suffira de les supprimer ou les
compresser de la manière qu'il vous conviendra.

=== Commandes ===
Pour connaitre la taille de tous les dossiers et sous-dossiers du répertoire
courant, il suffit de taper la commande :
 du -ah

Le problème c'est que les fichiers ne seront pas triés. Pour les trier il faut
utiliser la commande :
 du -S | sort -n

=== Logiciels graphiques ===
Les logiciels ''Baobab'' (Gnome) et ''Krusader'' (KDE) permettent de voir de
manière graphique quels dossiers et fichiers occupent le plus d'espace. Ces
logiciels étant très bien faits, il ne semble pas qu'il soit très utile
d'expliquer leur utilisation. Notez juste que ces deux applications ne feront qu'analyser la partition, c'est à vous, par la suite, de supprimer les fichiers en question.

Il existe aussi ''xdiskusage''. Très simple, il permet de voir l'occupation
partition par partition et indique l'espace libre.

== FSLint ==
''Travail en cours''

[[Catégorie:Installation]]</text>
      <sha1>grmay45x65io738v7oz8ay7m2r1970l</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4374</id>
      <parentid>4373</parentid>
      <timestamp>2012-07-30T07:38:59Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Logiciels graphiques */</comment>
      <text xml:space="preserve" bytes="6722">Nettoyage d'une Debian en vue de gagner de la place

= Objectif =
Vous avez installé une Debian depuis quelques temps déjà et vous commencez à
manquer de place sur votre partition ? Voici quelques astuces pour gagner
plusieurs centaines de mégaoctets.

Note : ce document n'hésite pas une seule seconde à utiliser des commandes
dites complexes (sous-shell, commande à la chaîne,...). Elles peuvent être
difficiles à comprendre mais nous vous conseillons de les comprendre plutôt que
de les réutiliser sans comprendre. Ainsi vous verrez si quelqu'un a modifié
la page pour modifier les commandes.

= DPKG =
DPKG et APT sont de puissants outils y compris lorsqu'il s'agit de gagner de
la place.

== Repérez les fichiers de configuration &quot;orphelins&quot; ==

 $ aptitude search ~c
 c   bluez-audio                                             - Transitional package
 c   bluez-gnome                                             - utilitaires Bluetooth pour GNOME
 c   bluez-utils                                             - Transitional package
 c   chillispot                                              - Wireless LAN Access Point Controller
 ...

La commande suivante fait aussi ce travail, mais le résultat est compact, moins lisible :

 $ dpkg -l | awk '$1~/^rc$/{print $2}' | xargs echo
 bluez-audio bluez-gnome bluez-utils chillispot...

== Supprimer tous les Fichiers de configuration orphelins ==

Lors de la désinstallation d'un logiciel le comportement par défaut consiste à
garder les fichiers de configuration afin de pouvoir les réutiliser en cas de
réinstallation du logiciel en question. Pour nettoyer votre Debian de tout ces
fichiers superflus une seule commande suffit :
 dpkg -P $(dpkg -l | awk '$1~/^rc$/{print $2}')

Ensuite si vous souhaitez que la suppression des fichiers de configuration se
fasse automatiquement il suffit d'ajouter ceci au fichier /etc/apt/apt.conf :
 APT::Get::Purge &quot;true&quot;

Vous préfèrerez peut-être utiliser cette commande qui supprimera aussi les dépendances devenues non nécessaires :

 # aptitude purge ~c

== Supprimer certains Fichiers de configuration orphelins ==

&quot;L'inconvénient&quot; des commandes ci-dessus est qu'elle suppriment TOUS les fichiers de configuration alors que vous souhaitez peut-être en conserver certains en vue d'une ré-installation ultérieure. La commande ci-dessous ne supprimera la configuration et les dépendances inutiles que pour le paquet le_nom_du_paquet

 # aptitude purge le_nom_du_paquet

== Dépendances orphelines ==
Lorsque vous installez un logiciel un certain nombre de dépendances
s'installent avec lui. Par contre lorsque vous désinstallez ce même logiciel
les dépendances ne partent pas systématiquement avec lui (par exemple si vous
n'avez pas utilisé aptitude ou bien apt-get avec l'option auto-remove, ou 
encore si vous avez installé ces paquets explicitement). Il arrive donc
souvent que des paquets inutiles subsistent. Pour trouver certains de ces paquets
et éventuellement les supprimer, il existe 
deborphan (ou la version avec une interface graphique
gtkorphan) qui liste les bibliothèques orphelines.

Un simple appel permet de lister les paquets qu'il considère comme orphelins (autrement
dit non nécessaires au système à priori).
Il faut noter que certains de ces paquets peuvent être utiles. En effet certains
apportent des fonctionnalités sans être des dépendances. Si deborphan liste un
paquet que vous souhaitez garder vous pouvez utiliser cette commande :
 deborphan --add-keep &lt;nom paquet&gt;

Ensuite une fois que l'on est sûr que deborphan ne prend pas en compte les
paquets que l'on veut garder, il suffit de lancer la commande :
 aptitude remove $(deborphan)

== Cache APT ==
Lorsque l'on installe des logiciels, APT va télécharger des paquets debian
(*.deb) et va les installer un à un. Pour diverses raisons (ne pas
re-télécharger le paquet en cas de réinstallation par exemple), ces
paquets ne sont pas supprimés après l'installation.

On peut d'une part supprimer tous les paquets en cache inutile (si on a
plusieurs versions d'un même paquet on ne garde que la dernière). Cela
se fait avec la commande :
 aptitude autoclean

Si on veut supprimer tous les paquets du cache :
 aptitude clean
ou encore
 apt-get clean
Bien sûr il est possible (mais déconseillé) de rendre cette maintenance
automatique, comme avec l'option purge (voir la page man de apt.conf).

== Localepurge ==
localepurge permet de ne garder que les fichiers d'internationalisation 
des langues que vous choisissez. Elle est très simple à mettre en place et peut
permettre de gagner beaucoup de place. Il suffit de l'installer puis elle
libère la place toute seule de manière automatique lors de l'installation ou la
suppression de programme.
 aptitude install localepurge

Lors de l'installation, il vous sera demandé de choisir les langues que vous
souhaitez garder. Je vous conseil fr_FR, fr_FR@UTF-8 et fr_FR@euro.

Attention, cette action est irréversible. Notamment les paquets reconstruits via 
dpkg-repack seront par exemple incomplet. La purge de ce paquet n'a d'effet que pour
les paquets à venir qui seront installés de nouveau complètement (avec le serbo-croate,
le russe, le chinois, etc).

== Popularity contest ==
''Travail en cours''

== Debfoster ==
''Travail en cours''

= Fichiers utilisateurs =
Si votre dossier /home vous semble démesurément gros et que vous souhaitez en
diminuer la taille, il existe quelques commandes et quelques logiciels très
intéressants.

== Voir l'espace occupé par l'arborescence ==
Cette partie va vous expliquer comment trouver les dossiers et les fichiers les
plus gros d'un dossier donné. Ensuite il suffira de les supprimer ou les
compresser de la manière qu'il vous conviendra.

=== Commandes ===
Pour connaitre la taille de tous les dossiers et sous-dossiers du répertoire
courant, il suffit de taper la commande :
 du -ah

Le problème c'est que les fichiers ne seront pas triés. Pour les trier il faut
utiliser la commande :
 du -S | sort -n

=== Logiciels graphiques ===
Les logiciels ''Baobab'' (Gnome) et ''Krusader'' (KDE) permettent de voir de
manière graphique quels dossiers et fichiers occupent le plus d'espace. Ces
logiciels étant très bien faits, il ne semble pas qu'il soit très utile
d'expliquer leur utilisation. Notez juste que ces deux applications ne feront qu'analyser la partition, c'est à vous, par la suite, de supprimer les fichiers en question.

Il existe aussi ''xdiskusage''. Très simple, il permet de voir l'occupation
partition par partition et indique l'espace libre.

Ces logiciels sont donc inefficaces sous LVM

== FSLint ==
''Travail en cours''

[[Catégorie:Installation]]</text>
      <sha1>hukkismv0k192x21megop2aayzmlbac</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4375</id>
      <parentid>4374</parentid>
      <timestamp>2012-07-30T11:05:04Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Logiciels graphiques */</comment>
      <text xml:space="preserve" bytes="6676">Nettoyage d'une Debian en vue de gagner de la place

= Objectif =
Vous avez installé une Debian depuis quelques temps déjà et vous commencez à
manquer de place sur votre partition ? Voici quelques astuces pour gagner
plusieurs centaines de mégaoctets.

Note : ce document n'hésite pas une seule seconde à utiliser des commandes
dites complexes (sous-shell, commande à la chaîne,...). Elles peuvent être
difficiles à comprendre mais nous vous conseillons de les comprendre plutôt que
de les réutiliser sans comprendre. Ainsi vous verrez si quelqu'un a modifié
la page pour modifier les commandes.

= DPKG =
DPKG et APT sont de puissants outils y compris lorsqu'il s'agit de gagner de
la place.

== Repérez les fichiers de configuration &quot;orphelins&quot; ==

 $ aptitude search ~c
 c   bluez-audio                                             - Transitional package
 c   bluez-gnome                                             - utilitaires Bluetooth pour GNOME
 c   bluez-utils                                             - Transitional package
 c   chillispot                                              - Wireless LAN Access Point Controller
 ...

La commande suivante fait aussi ce travail, mais le résultat est compact, moins lisible :

 $ dpkg -l | awk '$1~/^rc$/{print $2}' | xargs echo
 bluez-audio bluez-gnome bluez-utils chillispot...

== Supprimer tous les Fichiers de configuration orphelins ==

Lors de la désinstallation d'un logiciel le comportement par défaut consiste à
garder les fichiers de configuration afin de pouvoir les réutiliser en cas de
réinstallation du logiciel en question. Pour nettoyer votre Debian de tout ces
fichiers superflus une seule commande suffit :
 dpkg -P $(dpkg -l | awk '$1~/^rc$/{print $2}')

Ensuite si vous souhaitez que la suppression des fichiers de configuration se
fasse automatiquement il suffit d'ajouter ceci au fichier /etc/apt/apt.conf :
 APT::Get::Purge &quot;true&quot;

Vous préfèrerez peut-être utiliser cette commande qui supprimera aussi les dépendances devenues non nécessaires :

 # aptitude purge ~c

== Supprimer certains Fichiers de configuration orphelins ==

&quot;L'inconvénient&quot; des commandes ci-dessus est qu'elle suppriment TOUS les fichiers de configuration alors que vous souhaitez peut-être en conserver certains en vue d'une ré-installation ultérieure. La commande ci-dessous ne supprimera la configuration et les dépendances inutiles que pour le paquet le_nom_du_paquet

 # aptitude purge le_nom_du_paquet

== Dépendances orphelines ==
Lorsque vous installez un logiciel un certain nombre de dépendances
s'installent avec lui. Par contre lorsque vous désinstallez ce même logiciel
les dépendances ne partent pas systématiquement avec lui (par exemple si vous
n'avez pas utilisé aptitude ou bien apt-get avec l'option auto-remove, ou 
encore si vous avez installé ces paquets explicitement). Il arrive donc
souvent que des paquets inutiles subsistent. Pour trouver certains de ces paquets
et éventuellement les supprimer, il existe 
deborphan (ou la version avec une interface graphique
gtkorphan) qui liste les bibliothèques orphelines.

Un simple appel permet de lister les paquets qu'il considère comme orphelins (autrement
dit non nécessaires au système à priori).
Il faut noter que certains de ces paquets peuvent être utiles. En effet certains
apportent des fonctionnalités sans être des dépendances. Si deborphan liste un
paquet que vous souhaitez garder vous pouvez utiliser cette commande :
 deborphan --add-keep &lt;nom paquet&gt;

Ensuite une fois que l'on est sûr que deborphan ne prend pas en compte les
paquets que l'on veut garder, il suffit de lancer la commande :
 aptitude remove $(deborphan)

== Cache APT ==
Lorsque l'on installe des logiciels, APT va télécharger des paquets debian
(*.deb) et va les installer un à un. Pour diverses raisons (ne pas
re-télécharger le paquet en cas de réinstallation par exemple), ces
paquets ne sont pas supprimés après l'installation.

On peut d'une part supprimer tous les paquets en cache inutile (si on a
plusieurs versions d'un même paquet on ne garde que la dernière). Cela
se fait avec la commande :
 aptitude autoclean

Si on veut supprimer tous les paquets du cache :
 aptitude clean
ou encore
 apt-get clean
Bien sûr il est possible (mais déconseillé) de rendre cette maintenance
automatique, comme avec l'option purge (voir la page man de apt.conf).

== Localepurge ==
localepurge permet de ne garder que les fichiers d'internationalisation 
des langues que vous choisissez. Elle est très simple à mettre en place et peut
permettre de gagner beaucoup de place. Il suffit de l'installer puis elle
libère la place toute seule de manière automatique lors de l'installation ou la
suppression de programme.
 aptitude install localepurge

Lors de l'installation, il vous sera demandé de choisir les langues que vous
souhaitez garder. Je vous conseil fr_FR, fr_FR@UTF-8 et fr_FR@euro.

Attention, cette action est irréversible. Notamment les paquets reconstruits via 
dpkg-repack seront par exemple incomplet. La purge de ce paquet n'a d'effet que pour
les paquets à venir qui seront installés de nouveau complètement (avec le serbo-croate,
le russe, le chinois, etc).

== Popularity contest ==
''Travail en cours''

== Debfoster ==
''Travail en cours''

= Fichiers utilisateurs =
Si votre dossier /home vous semble démesurément gros et que vous souhaitez en
diminuer la taille, il existe quelques commandes et quelques logiciels très
intéressants.

== Voir l'espace occupé par l'arborescence ==
Cette partie va vous expliquer comment trouver les dossiers et les fichiers les
plus gros d'un dossier donné. Ensuite il suffira de les supprimer ou les
compresser de la manière qu'il vous conviendra.

=== Commandes ===
Pour connaitre la taille de tous les dossiers et sous-dossiers du répertoire
courant, il suffit de taper la commande :
 du -ah

Le problème c'est que les fichiers ne seront pas triés. Pour les trier il faut
utiliser la commande :
 du -S | sort -n

=== Logiciels graphiques ===
Les logiciels ''Baobab'' (Gnome) et ''Krusader'' (KDE) permettent de voir de
manière graphique quels dossiers et fichiers occupent le plus d'espace. Ces
logiciels étant très bien faits, il ne semble pas qu'il soit très utile
d'expliquer leur utilisation. Notez juste que ces deux applications ne feront qu'analyser la partition, c'est à vous, par la suite, de supprimer les fichiers en question.

Il existe aussi ''xdiskusage''. Très simple, il permet de voir l'occupation
partition par partition et indique l'espace libre.

== FSLint ==
''Travail en cours''

[[Catégorie:Installation]]</text>
      <sha1>grmay45x65io738v7oz8ay7m2r1970l</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5455</id>
      <parentid>4375</parentid>
      <timestamp>2013-11-26T16:56:32Z</timestamp>
      <contributor>
        <username>Zbf</username>
        <id>204</id>
      </contributor>
      <comment>/* Logiciels graphiques */ + ncdu</comment>
      <text xml:space="preserve" bytes="6889">Nettoyage d'une Debian en vue de gagner de la place

= Objectif =
Vous avez installé une Debian depuis quelques temps déjà et vous commencez à
manquer de place sur votre partition ? Voici quelques astuces pour gagner
plusieurs centaines de mégaoctets.

Note : ce document n'hésite pas une seule seconde à utiliser des commandes
dites complexes (sous-shell, commande à la chaîne,...). Elles peuvent être
difficiles à comprendre mais nous vous conseillons de les comprendre plutôt que
de les réutiliser sans comprendre. Ainsi vous verrez si quelqu'un a modifié
la page pour modifier les commandes.

= DPKG =
DPKG et APT sont de puissants outils y compris lorsqu'il s'agit de gagner de
la place.

== Repérez les fichiers de configuration &quot;orphelins&quot; ==

 $ aptitude search ~c
 c   bluez-audio                                             - Transitional package
 c   bluez-gnome                                             - utilitaires Bluetooth pour GNOME
 c   bluez-utils                                             - Transitional package
 c   chillispot                                              - Wireless LAN Access Point Controller
 ...

La commande suivante fait aussi ce travail, mais le résultat est compact, moins lisible :

 $ dpkg -l | awk '$1~/^rc$/{print $2}' | xargs echo
 bluez-audio bluez-gnome bluez-utils chillispot...

== Supprimer tous les Fichiers de configuration orphelins ==

Lors de la désinstallation d'un logiciel le comportement par défaut consiste à
garder les fichiers de configuration afin de pouvoir les réutiliser en cas de
réinstallation du logiciel en question. Pour nettoyer votre Debian de tout ces
fichiers superflus une seule commande suffit :
 dpkg -P $(dpkg -l | awk '$1~/^rc$/{print $2}')

Ensuite si vous souhaitez que la suppression des fichiers de configuration se
fasse automatiquement il suffit d'ajouter ceci au fichier /etc/apt/apt.conf :
 APT::Get::Purge &quot;true&quot;

Vous préfèrerez peut-être utiliser cette commande qui supprimera aussi les dépendances devenues non nécessaires :

 # aptitude purge ~c

== Supprimer certains Fichiers de configuration orphelins ==

&quot;L'inconvénient&quot; des commandes ci-dessus est qu'elle suppriment TOUS les fichiers de configuration alors que vous souhaitez peut-être en conserver certains en vue d'une ré-installation ultérieure. La commande ci-dessous ne supprimera la configuration et les dépendances inutiles que pour le paquet le_nom_du_paquet

 # aptitude purge le_nom_du_paquet

== Dépendances orphelines ==
Lorsque vous installez un logiciel un certain nombre de dépendances
s'installent avec lui. Par contre lorsque vous désinstallez ce même logiciel
les dépendances ne partent pas systématiquement avec lui (par exemple si vous
n'avez pas utilisé aptitude ou bien apt-get avec l'option auto-remove, ou 
encore si vous avez installé ces paquets explicitement). Il arrive donc
souvent que des paquets inutiles subsistent. Pour trouver certains de ces paquets
et éventuellement les supprimer, il existe 
deborphan (ou la version avec une interface graphique
gtkorphan) qui liste les bibliothèques orphelines.

Un simple appel permet de lister les paquets qu'il considère comme orphelins (autrement
dit non nécessaires au système à priori).
Il faut noter que certains de ces paquets peuvent être utiles. En effet certains
apportent des fonctionnalités sans être des dépendances. Si deborphan liste un
paquet que vous souhaitez garder vous pouvez utiliser cette commande :
 deborphan --add-keep &lt;nom paquet&gt;

Ensuite une fois que l'on est sûr que deborphan ne prend pas en compte les
paquets que l'on veut garder, il suffit de lancer la commande :
 aptitude remove $(deborphan)

== Cache APT ==
Lorsque l'on installe des logiciels, APT va télécharger des paquets debian
(*.deb) et va les installer un à un. Pour diverses raisons (ne pas
re-télécharger le paquet en cas de réinstallation par exemple), ces
paquets ne sont pas supprimés après l'installation.

On peut d'une part supprimer tous les paquets en cache inutile (si on a
plusieurs versions d'un même paquet on ne garde que la dernière). Cela
se fait avec la commande :
 aptitude autoclean

Si on veut supprimer tous les paquets du cache :
 aptitude clean
ou encore
 apt-get clean
Bien sûr il est possible (mais déconseillé) de rendre cette maintenance
automatique, comme avec l'option purge (voir la page man de apt.conf).

== Localepurge ==
localepurge permet de ne garder que les fichiers d'internationalisation 
des langues que vous choisissez. Elle est très simple à mettre en place et peut
permettre de gagner beaucoup de place. Il suffit de l'installer puis elle
libère la place toute seule de manière automatique lors de l'installation ou la
suppression de programme.
 aptitude install localepurge

Lors de l'installation, il vous sera demandé de choisir les langues que vous
souhaitez garder. Je vous conseil fr_FR, fr_FR@UTF-8 et fr_FR@euro.

Attention, cette action est irréversible. Notamment les paquets reconstruits via 
dpkg-repack seront par exemple incomplet. La purge de ce paquet n'a d'effet que pour
les paquets à venir qui seront installés de nouveau complètement (avec le serbo-croate,
le russe, le chinois, etc).

== Popularity contest ==
''Travail en cours''

== Debfoster ==
''Travail en cours''

= Fichiers utilisateurs =
Si votre dossier /home vous semble démesurément gros et que vous souhaitez en
diminuer la taille, il existe quelques commandes et quelques logiciels très
intéressants.

== Voir l'espace occupé par l'arborescence ==
Cette partie va vous expliquer comment trouver les dossiers et les fichiers les
plus gros d'un dossier donné. Ensuite il suffira de les supprimer ou les
compresser de la manière qu'il vous conviendra.

=== Commandes ===
Pour connaitre la taille de tous les dossiers et sous-dossiers du répertoire
courant, il suffit de taper la commande :
 du -ah

Le problème c'est que les fichiers ne seront pas triés. Pour les trier il faut
utiliser la commande :
 du -S | sort -n

=== Logiciels graphiques ===
Les logiciels ''Baobab'' (Gnome) et ''Krusader'' (KDE) permettent de voir de
manière graphique quels dossiers et fichiers occupent le plus d'espace. Ces
logiciels étant très bien faits, il ne semble pas qu'il soit très utile
d'expliquer leur utilisation. Notez juste que ces deux applications ne feront qu'analyser la partition, c'est à vous, par la suite, de supprimer les fichiers en question.

Il existe aussi ''xdiskusage''. Très simple, il permet de voir l'occupation
partition par partition et indique l'espace libre.

Et il existe aussi le paquet ''ncdu''. Une interface ncurses pour ''du'', qui permet la navigation dans les répertoires ainsi que la suppression des fichiers. ([http://dev.yorhel.nl/ncdu/scr Captures d'écran])

== FSLint ==
''Travail en cours''

[[Catégorie:Installation]]</text>
      <sha1>14x5xynekigsvy4whclcuzysn0mcuum</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5720</id>
      <parentid>5455</parentid>
      <timestamp>2014-08-20T03:58:30Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Fichiers utilisateurs */ chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="6913">Nettoyage d'une Debian en vue de gagner de la place

= Objectif =
Vous avez installé une Debian depuis quelques temps déjà et vous commencez à
manquer de place sur votre partition ? Voici quelques astuces pour gagner
plusieurs centaines de mégaoctets.

Note : ce document n'hésite pas une seule seconde à utiliser des commandes
dites complexes (sous-shell, commande à la chaîne,...). Elles peuvent être
difficiles à comprendre mais nous vous conseillons de les comprendre plutôt que
de les réutiliser sans comprendre. Ainsi vous verrez si quelqu'un a modifié
la page pour modifier les commandes.

= DPKG =
DPKG et APT sont de puissants outils y compris lorsqu'il s'agit de gagner de
la place.

== Repérez les fichiers de configuration &quot;orphelins&quot; ==

 $ aptitude search ~c
 c   bluez-audio                                             - Transitional package
 c   bluez-gnome                                             - utilitaires Bluetooth pour GNOME
 c   bluez-utils                                             - Transitional package
 c   chillispot                                              - Wireless LAN Access Point Controller
 ...

La commande suivante fait aussi ce travail, mais le résultat est compact, moins lisible :

 $ dpkg -l | awk '$1~/^rc$/{print $2}' | xargs echo
 bluez-audio bluez-gnome bluez-utils chillispot...

== Supprimer tous les Fichiers de configuration orphelins ==

Lors de la désinstallation d'un logiciel le comportement par défaut consiste à
garder les fichiers de configuration afin de pouvoir les réutiliser en cas de
réinstallation du logiciel en question. Pour nettoyer votre Debian de tout ces
fichiers superflus une seule commande suffit :
 dpkg -P $(dpkg -l | awk '$1~/^rc$/{print $2}')

Ensuite si vous souhaitez que la suppression des fichiers de configuration se
fasse automatiquement il suffit d'ajouter ceci au fichier /etc/apt/apt.conf :
 APT::Get::Purge &quot;true&quot;

Vous préfèrerez peut-être utiliser cette commande qui supprimera aussi les dépendances devenues non nécessaires :

 # aptitude purge ~c

== Supprimer certains Fichiers de configuration orphelins ==

&quot;L'inconvénient&quot; des commandes ci-dessus est qu'elle suppriment TOUS les fichiers de configuration alors que vous souhaitez peut-être en conserver certains en vue d'une ré-installation ultérieure. La commande ci-dessous ne supprimera la configuration et les dépendances inutiles que pour le paquet le_nom_du_paquet

 # aptitude purge le_nom_du_paquet

== Dépendances orphelines ==
Lorsque vous installez un logiciel un certain nombre de dépendances
s'installent avec lui. Par contre lorsque vous désinstallez ce même logiciel
les dépendances ne partent pas systématiquement avec lui (par exemple si vous
n'avez pas utilisé aptitude ou bien apt-get avec l'option auto-remove, ou 
encore si vous avez installé ces paquets explicitement). Il arrive donc
souvent que des paquets inutiles subsistent. Pour trouver certains de ces paquets
et éventuellement les supprimer, il existe 
deborphan (ou la version avec une interface graphique
gtkorphan) qui liste les bibliothèques orphelines.

Un simple appel permet de lister les paquets qu'il considère comme orphelins (autrement
dit non nécessaires au système à priori).
Il faut noter que certains de ces paquets peuvent être utiles. En effet certains
apportent des fonctionnalités sans être des dépendances. Si deborphan liste un
paquet que vous souhaitez garder vous pouvez utiliser cette commande :
 deborphan --add-keep &lt;nom paquet&gt;

Ensuite une fois que l'on est sûr que deborphan ne prend pas en compte les
paquets que l'on veut garder, il suffit de lancer la commande :
 aptitude remove $(deborphan)

== Cache APT ==
Lorsque l'on installe des logiciels, APT va télécharger des paquets debian
(*.deb) et va les installer un à un. Pour diverses raisons (ne pas
re-télécharger le paquet en cas de réinstallation par exemple), ces
paquets ne sont pas supprimés après l'installation.

On peut d'une part supprimer tous les paquets en cache inutile (si on a
plusieurs versions d'un même paquet on ne garde que la dernière). Cela
se fait avec la commande :
 aptitude autoclean

Si on veut supprimer tous les paquets du cache :
 aptitude clean
ou encore
 apt-get clean
Bien sûr il est possible (mais déconseillé) de rendre cette maintenance
automatique, comme avec l'option purge (voir la page man de apt.conf).

== Localepurge ==
localepurge permet de ne garder que les fichiers d'internationalisation 
des langues que vous choisissez. Elle est très simple à mettre en place et peut
permettre de gagner beaucoup de place. Il suffit de l'installer puis elle
libère la place toute seule de manière automatique lors de l'installation ou la
suppression de programme.
 aptitude install localepurge

Lors de l'installation, il vous sera demandé de choisir les langues que vous
souhaitez garder. Je vous conseil fr_FR, fr_FR@UTF-8 et fr_FR@euro.

Attention, cette action est irréversible. Notamment les paquets reconstruits via 
dpkg-repack seront par exemple incomplet. La purge de ce paquet n'a d'effet que pour
les paquets à venir qui seront installés de nouveau complètement (avec le serbo-croate,
le russe, le chinois, etc).

== Popularity contest ==
''Travail en cours''

== Debfoster ==
''Travail en cours''

= Fichiers utilisateurs =
Si votre répertoire /home vous semble démesurément gros et que vous souhaitez en
diminuer la taille, il existe quelques commandes et quelques logiciels très
intéressants.

== Voir l'espace occupé par l'arborescence ==
Cette partie va vous expliquer comment trouver les répertoires et les fichiers les
plus gros d'un répertoire donné. Ensuite il suffira de les supprimer ou les
compresser de la manière qu'il vous conviendra.

=== Commandes ===
Pour connaitre la taille de tous les répertoires et sous-répertoires du répertoire
courant, il suffit de taper la commande :
 du -ah

Le problème c'est que les fichiers ne seront pas triés. Pour les trier il faut
utiliser la commande :
 du -S | sort -n

=== Logiciels graphiques ===
Les logiciels ''Baobab'' (Gnome) et ''Krusader'' (KDE) permettent de voir de
manière graphique quels répertoires et fichiers occupent le plus d'espace. Ces
logiciels étant très bien faits, il ne semble pas qu'il soit très utile
d'expliquer leur utilisation. Notez juste que ces deux applications ne feront qu'analyser la partition, c'est à vous, par la suite, de supprimer les fichiers en question.

Il existe aussi ''xdiskusage''. Très simple, il permet de voir l'occupation
partition par partition et indique l'espace libre.

Et il existe aussi le paquet ''ncdu''. Une interface ncurses pour ''du'', qui permet la navigation dans les répertoires ainsi que la suppression des fichiers. ([http://dev.yorhel.nl/ncdu/scr Captures d'écran])

== FSLint ==
''Travail en cours''

[[Catégorie:Installation]]</text>
      <sha1>frjj8zqxnqegopeuzxeusa2zkpgzf2t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Nom de domaine chez Gandi et ip dynamique</title>
    <ns>0</ns>
    <id>704</id>
    <revision>
      <id>3100</id>
      <timestamp>2011-07-30T05:11:05Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « == Gérer son serveur perso avec son nom de domaine chez Gandi et une ip dynamique ==  Si on ne veux pas aller changer la configuration DNS tous les jours pour gérer le chan... »</comment>
      <text xml:space="preserve" bytes="3391">== Gérer son serveur perso avec son nom de domaine chez Gandi et une ip dynamique ==

Si on ne veux pas aller changer la configuration DNS tous les jours pour gérer le changement automatique de l’ip, il existe une solution pour que ça fonctionne. 

=== Les pré-requis ===
La première étape est de mettre en place un service avec  « dyndns.org ». C’est gratuit et ça fonctionne bien. 
Le principe, est d’indiquer notre ip dynamique actuelle aux serveurs dns du fournisseur choisi. 

Je vous passe comment créer son compte sur dyndns. De nombreux tutos l'explique

pour l’accès 2 choix sont possible :

==== 1er Choix ====
a - Utiliser soit un programme sur le serveur (ddclient)
b - Ou configurer son routeur ADSL

A ce stade, on peut déjà avoir accès à son serveur, en tapant dans la barre d’adresse de son navigateur préféré 

http://mondomaine.dyndns.org

Si cette solution vous conviens, inutile de continuer le tuto

==== 2ème choix ====
Acheter un nom de domaine chez gandi ou tout autre revendeur à condition d'avoir accés à la modification des DNS, pour pouvoir accéder à son serveur,  en tapant :

http://mondomaine.fr

Nous allons nous occuper de cette solution.

Le fonctionnement habituel d’un DNS
Normalement, avec un nom de domaine, par exemple « mondomaine.fr », Gandi vous fourni une entrée DNS de type « A », de ce type

 @    10800    IN    A    111.222.333.444

« nomdomaine.fr » sera alors dirigé vers l’IP 111.222.333.444

Pour faire une redirection, on utilise un enregistrement de type « CNAME », comme ceci :

 mail    10800    IN    CNAME    mail.monfai.com.

« mail.nomdomaine.fr » sera alors redirigé vers « mail.monfai.com », quel que soit son IP.




'''La problématique'''

On pourrais penser qu’il suffit de mettre une redirection de « mondomaine.fr » vers « nomdomaine.dyndns.org » pour régler le problème 

Et bien non ;o)


'''La solution'''

Pour qu'à chaque appel du domaine mondomaine.fr, l'alias DNS (CNAME) renverra vers  mondomaine.dyndns.org qui à son tour renverra vers l'adresse IP de votre neufbox et votre firewall fera la redirection vers votre serveur (192.168.xx.xx). Renseignez le DNS avec la ligne suivante 

 www    10800    IN    CNAME    nomdomaine.dyndns.org.

A se stade, si vous tapez « http://www.mondomaine.fr » dans votre navigateur, vous tomberez bien sur votre site. Ensuite, utilisez le service de redirection de Gandi, et redirigez « http://mondomaine.fr » vers « http://www.mondomaine.fr », de manière permanente. Ainsi, votre site web sera accessible sur votre serveur de 2 façons 

http://mondomaine.fr
http://www.mondomaine.fr

Et pour le mail.....
Pour pouvoir envoyer des mails et recevoir les mails signaler votre machine comme MX principal

 @    10800    IN    MX    10 mondomaine.dyndns.org.


Exemple de dns chez gandi

 @ 	10800 	IN 	A 		217.11.22.33
 @ 	10800 	IN 	MX 		10 mondomaine.dyndns.org.
 www 	10800 	IN 	CNAME 	mondomaine.dyndns.org.
 mail 	10800 	IN 	CNAME 	mondomaine.dyndns.org.
 ftp 	10800 	IN 	CNAME 	mondomaine.dyndns.org.

ATTENTION de bien mettre le « . » à la fin de  mondomaine.dyndns.org .

Reste à compléter par l'installation d'un DNS perso sur votre machine, mais n'étant pas un grand spécialiste du DNS, j’attends que vous mettez à profit vos compétences pour compléter se tuto.</text>
      <sha1>fwhsftgbzxjk5o36018feg9ap5bgy57</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3103</id>
      <parentid>3100</parentid>
      <timestamp>2011-07-30T05:42:45Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="3430">== Gérer son serveur perso avec son nom de domaine chez Gandi et une ip dynamique ==

Si on ne veux pas aller changer la configuration DNS tous les jours pour gérer le changement automatique de l’ip, il existe une solution pour que ça fonctionne. 

=== Les pré-requis ===
La première étape est de mettre en place un service avec  « dyndns.org ». C’est gratuit et ça fonctionne bien. 
Le principe, est d’indiquer notre ip dynamique actuelle aux serveurs dns du fournisseur choisi. 

Je vous passe comment créer son compte sur dyndns. De nombreux tutos l'explique

pour l’accès 2 choix sont possible :

==== 1er Choix ====
a - Utiliser soit un programme sur le serveur (ddclient)
b - Ou configurer son routeur ADSL

A ce stade, on peut déjà avoir accès à son serveur, en tapant dans la barre d’adresse de son navigateur préféré 

http://mondomaine.dyndns.org

Si cette solution vous conviens, inutile de continuer le tuto

==== 2ème choix ====
Acheter un nom de domaine chez gandi ou tout autre revendeur à condition d'avoir accés à la modification des DNS, pour pouvoir accéder à son serveur,  en tapant :

http://mondomaine.fr

Nous allons nous occuper de cette solution.

Le fonctionnement habituel d’un DNS
Normalement, avec un nom de domaine, par exemple « mondomaine.fr », Gandi vous fourni une entrée DNS de type « A », de ce type

 @    10800    IN    A    111.222.333.444

« nomdomaine.fr » sera alors dirigé vers l’IP 111.222.333.444

Pour faire une redirection, on utilise un enregistrement de type « CNAME », comme ceci :

 mail    10800    IN    CNAME    mail.monfai.com.

« mail.nomdomaine.fr » sera alors redirigé vers « mail.monfai.com », quel que soit son IP.




'''La problématique'''

On pourrais penser qu’il suffit de mettre une redirection de « mondomaine.fr » vers « nomdomaine.dyndns.org » pour régler le problème 

Et bien non ;o)


'''La solution'''

Pour qu'à chaque appel du domaine mondomaine.fr, l'alias DNS (CNAME) renverra vers  mondomaine.dyndns.org qui à son tour renverra vers l'adresse IP de votre neufbox et votre firewall fera la redirection vers votre serveur (192.168.xx.xx). Renseignez le DNS avec la ligne suivante 

 www    10800    IN    CNAME    nomdomaine.dyndns.org.

A se stade, si vous tapez « http://www.mondomaine.fr » dans votre navigateur, vous tomberez bien sur votre site. Ensuite, utilisez le service de redirection de Gandi, et redirigez « http://mondomaine.fr » vers « http://www.mondomaine.fr », de manière permanente. Ainsi, votre site web sera accessible sur votre serveur de 2 façons 

http://mondomaine.fr
http://www.mondomaine.fr

Et pour le mail.....
Pour pouvoir envoyer des mails et recevoir les mails signaler votre machine comme MX principal

 @    10800    IN    MX    10 mondomaine.dyndns.org.


Exemple de dns chez gandi

 @ 	10800 	IN 	A 		217.11.22.33
 @ 	10800 	IN 	MX 		10 mondomaine.dyndns.org.
 www 	10800 	IN 	CNAME 	mondomaine.dyndns.org.
 mail 	10800 	IN 	CNAME 	mondomaine.dyndns.org.
 ftp 	10800 	IN 	CNAME 	mondomaine.dyndns.org.

ATTENTION de bien mettre le « . » à la fin de  mondomaine.dyndns.org .

Reste à compléter par l'installation d'un DNS perso sur votre machine, mais n'étant pas un grand spécialiste du DNS, j’attends que vous mettez à profit vos compétences pour compléter se tuto.

[[Catégorie:Réseau Généralités]]</text>
      <sha1>iv37v3j3n0h4cyl8e9iqgaba8smbihm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3110</id>
      <parentid>3103</parentid>
      <timestamp>2011-07-30T06:51:51Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* 2ème choix */</comment>
      <text xml:space="preserve" bytes="3425">== Gérer son serveur perso avec son nom de domaine chez Gandi et une ip dynamique ==

Si on ne veux pas aller changer la configuration DNS tous les jours pour gérer le changement automatique de l’ip, il existe une solution pour que ça fonctionne. 

=== Les pré-requis ===
La première étape est de mettre en place un service avec  « dyndns.org ». C’est gratuit et ça fonctionne bien. 
Le principe, est d’indiquer notre ip dynamique actuelle aux serveurs dns du fournisseur choisi. 

Je vous passe comment créer son compte sur dyndns. De nombreux tutos l'explique

pour l’accès 2 choix sont possible :

==== 1er Choix ====
a - Utiliser soit un programme sur le serveur (ddclient)
b - Ou configurer son routeur ADSL

A ce stade, on peut déjà avoir accès à son serveur, en tapant dans la barre d’adresse de son navigateur préféré 

http://mondomaine.dyndns.org

Si cette solution vous conviens, inutile de continuer le tuto

==== 2ème choix ====
Acheter un nom de domaine chez Gandi ou tout autre revendeur à condition d'avoir accès à la modification des DNS, pour pouvoir accéder à son serveur,  en tapant :

http://mondomaine.fr

Nous allons nous occuper de cette solution.

Le fonctionnement habituel d’un DNS
Normalement, avec un nom de domaine, par exemple « mondomaine.fr », Gandi vous fournit une entrée DNS de type « A », de ce type

 @    10800    IN    A    111.222.333.444

« nomdomaine.fr » sera alors dirigé vers l’IP 111.222.333.444

Pour faire une redirection, on utilise un enregistrement de type « CNAME », comme ceci :

 mail    10800    IN    CNAME    mail.monfai.com.

« mail.nomdomaine.fr » sera alors redirigé vers « mail.monfai.com », quel que soit son IP.




'''La problématique'''

On pourrait penser qu’il suffit de mettre une redirection de « mondomaine.fr » vers « nomdomaine.dyndns.org » pour régler le problème 

Et bien non ;o)


'''La solution'''

Pour qu'à chaque appel du domaine mondomaine.fr, l'alias DNS (CNAME) renverra vers  mondomaine.dyndns.org qui à son tour renverra vers l'adresse IP de votre neufbox et votre firewall fera la redirection vers votre serveur (192.168.xx.xx). Renseignez le DNS avec la ligne suivante 

 www    10800    IN    CNAME    nomdomaine.dyndns.org.

A se stade, si vous tapez « http://www.mondomaine.fr » dans votre navigateur, vous tomberez bien sur votre site. Ensuite, utilisez le service de redirection de Gandi, et redirigez « http://mondomaine.fr » vers « http://www.mondomaine.fr », de manière permanente. Ainsi, votre site web sera accessible sur votre serveur de 2 façons 

http://mondomaine.fr
http://www.mondomaine.fr

Et pour le mail.....
Pour pouvoir envoyer des mails et les recevoir signaler votre machine comme MX principal

 @    10800    IN    MX    10 mondomaine.dyndns.org.


Exemple de dns chez gandi

 @ 	10800 	IN 	A 		217.11.22.33
 @ 	10800 	IN 	MX 		10 mondomaine.dyndns.org.
 www 	10800 	IN 	CNAME 	mondomaine.dyndns.org.
 mail 	10800 	IN 	CNAME 	mondomaine.dyndns.org.
 ftp 	10800 	IN 	CNAME 	mondomaine.dyndns.org.

ATTENTION de bien mettre le « . » à la fin de  mondomaine.dyndns.org .

Reste à compléter par l'installation d'un DNS perso sur votre machine, mais n'étant pas un grand spécialiste du DNS, j’attend que vous mettiez à profit vos compétences pour compléter ce tuto.

[[Catégorie:Réseau Généralités]]</text>
      <sha1>ooqguglhaqosxa3svjfsbvllf07nau2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3111</id>
      <parentid>3110</parentid>
      <timestamp>2011-07-30T06:52:27Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* 1er Choix */</comment>
      <text xml:space="preserve" bytes="3425">== Gérer son serveur perso avec son nom de domaine chez Gandi et une ip dynamique ==

Si on ne veux pas aller changer la configuration DNS tous les jours pour gérer le changement automatique de l’ip, il existe une solution pour que ça fonctionne. 

=== Les pré-requis ===
La première étape est de mettre en place un service avec  « dyndns.org ». C’est gratuit et ça fonctionne bien. 
Le principe, est d’indiquer notre ip dynamique actuelle aux serveurs dns du fournisseur choisi. 

Je vous passe comment créer son compte sur dyndns. De nombreux tutos l'explique

pour l’accès 2 choix sont possible :

==== 1er Choix ====
a - Utiliser soit un programme sur le serveur (ddclient)
b - Ou configurer son routeur ADSL

A ce stade, on peut déjà avoir accès à son serveur, en tapant dans la barre d’adresse de son navigateur préféré 

http://mondomaine.dyndns.org

Si cette solution vous convient, inutile de continuer le tuto

==== 2ème choix ====
Acheter un nom de domaine chez Gandi ou tout autre revendeur à condition d'avoir accès à la modification des DNS, pour pouvoir accéder à son serveur,  en tapant :

http://mondomaine.fr

Nous allons nous occuper de cette solution.

Le fonctionnement habituel d’un DNS
Normalement, avec un nom de domaine, par exemple « mondomaine.fr », Gandi vous fournit une entrée DNS de type « A », de ce type

 @    10800    IN    A    111.222.333.444

« nomdomaine.fr » sera alors dirigé vers l’IP 111.222.333.444

Pour faire une redirection, on utilise un enregistrement de type « CNAME », comme ceci :

 mail    10800    IN    CNAME    mail.monfai.com.

« mail.nomdomaine.fr » sera alors redirigé vers « mail.monfai.com », quel que soit son IP.




'''La problématique'''

On pourrait penser qu’il suffit de mettre une redirection de « mondomaine.fr » vers « nomdomaine.dyndns.org » pour régler le problème 

Et bien non ;o)


'''La solution'''

Pour qu'à chaque appel du domaine mondomaine.fr, l'alias DNS (CNAME) renverra vers  mondomaine.dyndns.org qui à son tour renverra vers l'adresse IP de votre neufbox et votre firewall fera la redirection vers votre serveur (192.168.xx.xx). Renseignez le DNS avec la ligne suivante 

 www    10800    IN    CNAME    nomdomaine.dyndns.org.

A se stade, si vous tapez « http://www.mondomaine.fr » dans votre navigateur, vous tomberez bien sur votre site. Ensuite, utilisez le service de redirection de Gandi, et redirigez « http://mondomaine.fr » vers « http://www.mondomaine.fr », de manière permanente. Ainsi, votre site web sera accessible sur votre serveur de 2 façons 

http://mondomaine.fr
http://www.mondomaine.fr

Et pour le mail.....
Pour pouvoir envoyer des mails et les recevoir signaler votre machine comme MX principal

 @    10800    IN    MX    10 mondomaine.dyndns.org.


Exemple de dns chez gandi

 @ 	10800 	IN 	A 		217.11.22.33
 @ 	10800 	IN 	MX 		10 mondomaine.dyndns.org.
 www 	10800 	IN 	CNAME 	mondomaine.dyndns.org.
 mail 	10800 	IN 	CNAME 	mondomaine.dyndns.org.
 ftp 	10800 	IN 	CNAME 	mondomaine.dyndns.org.

ATTENTION de bien mettre le « . » à la fin de  mondomaine.dyndns.org .

Reste à compléter par l'installation d'un DNS perso sur votre machine, mais n'étant pas un grand spécialiste du DNS, j’attend que vous mettiez à profit vos compétences pour compléter ce tuto.

[[Catégorie:Réseau Généralités]]</text>
      <sha1>c9tqnau1fshjtyffj5ojtnhosqet4em</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4119</id>
      <parentid>3111</parentid>
      <timestamp>2012-04-28T09:07:35Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>/* Gérer son serveur perso avec son nom de domaine chez Gandi et une ip dynamique */</comment>
      <text xml:space="preserve" bytes="3440">== Gérer son serveur perso avec son nom de domaine chez Gandi et une ip dynamique ==

Si on ne veux pas aller changer la configuration DNS tous les jours pour gérer le changement automatique de l’[[Protocole::ip]], il existe une solution pour que ça fonctionne. 

=== Les pré-requis ===
La première étape est de mettre en place un service avec  « dyndns.org ». C’est gratuit et ça fonctionne bien. 
Le principe, est d’indiquer notre ip dynamique actuelle aux serveurs dns du fournisseur choisi. 

Je vous passe comment créer son compte sur dyndns. De nombreux tutos l'explique

pour l’accès 2 choix sont possible :

==== 1er Choix ====
a - Utiliser soit un programme sur le serveur (ddclient)
b - Ou configurer son routeur ADSL

A ce stade, on peut déjà avoir accès à son serveur, en tapant dans la barre d’adresse de son navigateur préféré 

http://mondomaine.dyndns.org

Si cette solution vous convient, inutile de continuer le tuto

==== 2ème choix ====
Acheter un nom de domaine chez Gandi ou tout autre revendeur à condition d'avoir accès à la modification des DNS, pour pouvoir accéder à son serveur,  en tapant :

http://mondomaine.fr

Nous allons nous occuper de cette solution.

Le fonctionnement habituel d’un DNS
Normalement, avec un nom de domaine, par exemple « mondomaine.fr », Gandi vous fournit une entrée DNS de type « A », de ce type

 @    10800    IN    A    111.222.333.444

« nomdomaine.fr » sera alors dirigé vers l’IP 111.222.333.444

Pour faire une redirection, on utilise un enregistrement de type « CNAME », comme ceci :

 mail    10800    IN    CNAME    mail.monfai.com.

« mail.nomdomaine.fr » sera alors redirigé vers « mail.monfai.com », quel que soit son IP.




'''La problématique'''

On pourrait penser qu’il suffit de mettre une redirection de « mondomaine.fr » vers « nomdomaine.dyndns.org » pour régler le problème 

Et bien non ;o)


'''La solution'''

Pour qu'à chaque appel du domaine mondomaine.fr, l'alias DNS (CNAME) renverra vers  mondomaine.dyndns.org qui à son tour renverra vers l'adresse IP de votre neufbox et votre firewall fera la redirection vers votre serveur (192.168.xx.xx). Renseignez le DNS avec la ligne suivante 

 www    10800    IN    CNAME    nomdomaine.dyndns.org.

A se stade, si vous tapez « http://www.mondomaine.fr » dans votre navigateur, vous tomberez bien sur votre site. Ensuite, utilisez le service de redirection de Gandi, et redirigez « http://mondomaine.fr » vers « http://www.mondomaine.fr », de manière permanente. Ainsi, votre site web sera accessible sur votre serveur de 2 façons 

http://mondomaine.fr
http://www.mondomaine.fr

Et pour le mail.....
Pour pouvoir envoyer des mails et les recevoir signaler votre machine comme MX principal

 @    10800    IN    MX    10 mondomaine.dyndns.org.


Exemple de dns chez gandi

 @ 	10800 	IN 	A 		217.11.22.33
 @ 	10800 	IN 	MX 		10 mondomaine.dyndns.org.
 www 	10800 	IN 	CNAME 	mondomaine.dyndns.org.
 mail 	10800 	IN 	CNAME 	mondomaine.dyndns.org.
 ftp 	10800 	IN 	CNAME 	mondomaine.dyndns.org.

ATTENTION de bien mettre le « . » à la fin de  mondomaine.dyndns.org .

Reste à compléter par l'installation d'un DNS perso sur votre machine, mais n'étant pas un grand spécialiste du DNS, j’attend que vous mettiez à profit vos compétences pour compléter ce tuto.

[[Catégorie:Réseau Généralités]]</text>
      <sha1>mhgw6bssly71xwtzc8ecq9ge4hk3yup</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Noyau</title>
    <ns>0</ns>
    <id>1009</id>
    <revision>
      <id>4248</id>
      <timestamp>2012-05-15T10:53:52Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>Page créée avec « *[[Composant debian::Noyau]] *[[Composant debian:: Paquet]] »</comment>
      <text xml:space="preserve" bytes="59">*[[Composant debian::Noyau]]
*[[Composant debian:: Paquet]]</text>
      <sha1>rqh4lhc0p4tiyt84lvwi7sc9m6v9xie</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4249</id>
      <parentid>4248</parentid>
      <timestamp>2012-05-15T10:54:08Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="58">*[[Composant debian::Noyau]]
*[[Composant debian::Paquet]]</text>
      <sha1>roohaylmqxbxi6qerthcsiw7f7sijwb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4250</id>
      <parentid>4249</parentid>
      <timestamp>2012-05-15T10:54:49Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <comment>Page blanchie</comment>
      <text xml:space="preserve" bytes="0" />
      <sha1>phoiac9h4m842xq45sp7s6u21eteeq1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Noyau (Kernel)</title>
    <ns>0</ns>
    <id>1141</id>
    <revision>
      <id>4690</id>
      <timestamp>2012-10-30T11:21:03Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Page créée avec « &lt;u&gt;'''Noyau (Kernel)'''&lt;/u&gt;  {| width=&quot;100%&quot; | width=&quot;33%&quot; |•&amp;nbsp;[[Les_Modules|Les modules]] | width=&quot;33%&quot; |•&amp;nbsp;[[Compiler_et_patcher_son_noyau|Compiler et patche... »</comment>
      <text xml:space="preserve" bytes="394">&lt;u&gt;'''Noyau (Kernel)'''&lt;/u&gt;

{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Les_Modules|Les modules]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Compiler_et_patcher_son_noyau|Compiler et patcher son noyau]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_d%27un_noyau_Debian_chez_ovh.|Installer un noyau Debian sur un serveur Dédié]]
|}

----

{{Modèle:Accueil}}

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>c85tbt3ti3sf8fxaujgypxfqp3s7uxu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4715</id>
      <parentid>4690</parentid>
      <timestamp>2012-11-01T07:27:01Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="489">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Noyau (Kernel)'''&lt;/u&gt;

{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Les_Modules|Les modules]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Compiler_et_patcher_son_noyau|Compiler et patcher son noyau]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_d%27un_noyau_Debian_chez_ovh.|Installer un noyau Debian sur un serveur Dédié]]
|}

----

{{Modèle:Accueil}}

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>n46akd5pa3kshzd4g5z6mtl1xqw3tce</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5197</id>
      <parentid>4715</parentid>
      <timestamp>2013-05-18T22:53:36Z</timestamp>
      <contributor>
        <username>PengouinPdt</username>
        <id>249</id>
      </contributor>
      <minor/>
      <comment>Ajout de la section des modules</comment>
      <text xml:space="preserve" bytes="658">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Noyau (Kernel)'''&lt;/u&gt;

{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Les_Modules|Les modules]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Compiler_et_patcher_son_noyau|Compiler et patcher son noyau]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_d%27un_noyau_Debian_chez_ovh.|Installer un noyau Debian sur un serveur Dédié]]
|}

&lt;u&gt;Gestion des modules&lt;/u&gt;

{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Error_inserting_vfat|Error inserting vfat ]]
| width=&quot;33%&quot; |•&amp;nbsp;
| width=&quot;33%&quot; |•&amp;nbsp;
|}

----

{{Modèle:Accueil}}

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>fiw3yuor8daxegdny3585qdnsjj501q</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5405</id>
      <parentid>5197</parentid>
      <timestamp>2013-09-22T19:49:05Z</timestamp>
      <contributor>
        <username>Vv222</username>
        <id>88</id>
      </contributor>
      <text xml:space="preserve" bytes="640">{{DISPLAYTITLE:&lt;span style=&quot;display:none&quot;&gt;{{FULLPAGENAME}}&lt;/span&gt;}}
{{Template: Social}}
----

&lt;u&gt;'''Noyau (Kernel)'''&lt;/u&gt;

{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Les_Modules|Les modules]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Compiler_et_patcher_son_noyau|Compiler et patcher son noyau]]
| width=&quot;33%&quot; |•&amp;nbsp;[[Installation_d%27un_noyau_Debian_chez_ovh.|Installer un noyau Debian sur un serveur Dédié]]
|}

&lt;u&gt;Gestion des modules&lt;/u&gt;

{| width=&quot;100%&quot;
| width=&quot;33%&quot; |•&amp;nbsp;[[Error_inserting_vfat|Error inserting vfat ]]
| width=&quot;33%&quot; |
| width=&quot;33%&quot; |
|}

----

{{Modèle:Accueil}}

&lt;noinclude&gt;[[Catégorie:General/Index|Divers]]&lt;/noinclude&gt;</text>
      <sha1>k5io8mjea1jrq99knu2rlo7b14eh7s2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Ntfs</title>
    <ns>0</ns>
    <id>61</id>
    <revision>
      <id>206</id>
      <timestamp>2010-01-23T20:05:00Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <comment>Page créée avec « {{Ébauche|le ntfs}}  Pour pouvoir lire ET écrire dans une paartition formatée en ntfs, il faut installer le paquet ntfs-3g disponible dans les dépots.  ''Je n'ai pas fini… »</comment>
      <text xml:space="preserve" bytes="227">{{Ébauche|le ntfs}}

Pour pouvoir lire ET écrire dans une paartition formatée en ntfs, il faut installer le paquet ntfs-3g disponible dans les dépots.

''Je n'ai pas fini, je finirais plus tard'' [[Utilisateur:L0u!$|L0u!$]]</text>
      <sha1>76cfsflfu471t5rmmonxd0wzna1byt0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>243</id>
      <parentid>206</parentid>
      <timestamp>2010-01-24T19:46:12Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="789">{{Ébauche|le [[ntfs]]}}

'''Debian''', par défaut, ne gère que la lecture du NTFS.

Pour pouvoir lire ''et'' écrire dans une paartition formatée en NTFS, il faut installer le paquet '''ntfs-3g''' disponible dans les dépots officiels.&lt;br/&gt;
Ensuite, pour [[monter une partition]] NTFS avec les droits de lecture/écriture, il faut rajouter l'option ''-t ntfs-3g'' à la commande mount.&lt;br/&gt;
Exemple:
 # mount -t ntfs-3g /dev/sda2 /mnt/windows

'''{{annonce|fond=red|image=|bord=orange|texte=L'étape suivante est à vos risques et périls:}}'''
Dans le cas où vous n'avez ''pas'' Windows, mais que la commande vous répond de faire chkdsk /f sous windows, vous pouvez executer la commande en ''forçant'' le montage de la partition:
 # mount -t ntfs-3g /dev/sda2 /mnt/windows -o force</text>
      <sha1>lviuw17477l1rzu05xdqx88qjq4cgma</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>246</id>
      <parentid>243</parentid>
      <timestamp>2010-01-25T09:30:59Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="789">{{Ébauche|le [[ntfs]]}}

'''Debian''', par défaut, ne gère que la lecture du NTFS.

Pour pouvoir lire ''et'' écrire dans une partition formatée en NTFS, il faut installer le paquet '''ntfs-3g''' disponible dans les dépôts officiels.&lt;br/&gt;
Ensuite, pour [[monter une partition]] NTFS avec les droits de lecture/écriture, il faut rajouter l'option ''-t ntfs-3g'' à la commande mount.&lt;br/&gt;
Exemple:
 # mount -t ntfs-3g /dev/sda2 /mnt/windows

'''{{annonce|fond=red|image=|bord=orange|texte=L'étape suivante est à vos risques et périls:}}'''
Dans le cas où vous n'avez ''pas'' Windows, mais que la commande vous répond de faire chkdsk /f sous windows, vous pouvez executer la commande en ''forçant'' le montage de la partition:
 # mount -t ntfs-3g /dev/sda2 /mnt/windows -o force</text>
      <sha1>67q7ft0fk9h76scuqtbeiu3q34bxev5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>249</id>
      <parentid>246</parentid>
      <timestamp>2010-01-25T14:03:05Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <text xml:space="preserve" bytes="793">{{Ébauche|le [[ntfs]]}}

'''Debian''', par défaut, ne gère que la lecture du NTFS.

Pour pouvoir lire ''et'' écrire dans une partition formatée en NTFS, il faut installer le paquet '''ntfs-3g''' disponible dans les dépôts officiels.&lt;br/&gt;
Ensuite, pour [[monter une partition]] NTFS avec les droits de lecture/écriture, il faut rajouter l'option ''-t ntfs-3g'' à la commande mount.&lt;br/&gt;
Exemple:
 # mount -t ntfs -o rw /dev/sda2 /mnt/windows

'''{{annonce|fond=red|image=|bord=orange|texte=L'étape suivante est à vos risques et périls:}}'''
Dans le cas où vous n'avez ''pas'' Windows, mais que la commande vous répond de faire chkdsk /f sous windows, vous pouvez executer la commande en ''forçant'' le montage de la partition:
 # mount -t ntfs-3g  /dev/sda2 /mnt/windows -o force</text>
      <sha1>3p6zs6azs9ic5m70111uulj5ubhsdc6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>257</id>
      <parentid>249</parentid>
      <timestamp>2010-01-25T16:23:30Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="790">{{Ébauche|le [[ntfs]]}}

'''Debian''', par défaut, ne gère que la lecture du NTFS.

Pour pouvoir lire ''et'' écrire dans une partition formatée en NTFS, il faut installer le paquet '''ntfs-3g''' disponible dans les dépôts officiels.&lt;br/&gt;
Ensuite, pour [[monter une partition]] NTFS avec les droits de lecture/écriture, il faut rajouter l'option ''-t ntfs-3g'' à la commande mount.&lt;br/&gt;
Exemple:
 # mount -t ntfs-3g /dev/sda2 /mnt/windows

'''{{annonce|fond=red|image=|bord=orange|texte=L'étape suivante est à vos risques et périls:}}'''
Dans le cas où vous n'avez ''pas'' Windows, mais que la commande vous répond de faire chkdsk /f sous windows, vous pouvez executer la commande en ''forçant'' le montage de la partition:
 # mount -t ntfs-3g  /dev/sda2 /mnt/windows -o force</text>
      <sha1>a59wm14k16weuzv4d2osm3llvtourz8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>454</id>
      <parentid>257</parentid>
      <timestamp>2010-01-28T20:38:00Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="1365">{{Ébauche|le [[ntfs]]}}

'''Debian''', par défaut, ne gère que la lecture du NTFS.

Pour pouvoir lire ''et'' écrire dans une partition formatée en NTFS, il faut installer le paquet '''ntfs-3g''' disponible dans les dépôts officiels.&lt;br/&gt;
Ensuite, pour [[monter une partition]] NTFS avec les droits de lecture/écriture, il faut rajouter l'option ''-t ntfs-3g'' à la commande mount.&lt;br/&gt;
Exemple:
 # mount -t ntfs-3g /dev/sda2 /mnt/windows
une méthode alternative consiste à executer la commande
 # mount -t ntfs -o rw /dev/sda2 /mnt/windows

'''{{annonce|fond=red|image=|bord=orange|texte=L'étape suivante est à vos risques et périls:}}'''
Dans le cas où vous n'avez ''pas'' Windows, mais que la commande vous répond de faire chkdsk /f sous windows, vous pouvez executer la commande en ''forçant'' le montage de la partition:
 # mount -t ntfs-3g  /dev/sda2 /mnt/windows -o force

=== /etc/fstab ===

Pour pouvoir monter au démarrage un périphérique ntfs, insérer dans le fichier ''/etc/fstab''une ligne comme ceci:

 périphérique     point_de_montage   pilote    options    dump     pass
Pour plus de précisions concernant la syntaxe du fstab, voir la page [[fstab]]

ce qui nous donne pour notre exemple:

 /dev/sda2     /mnt/windows    ntfs-3g    defaults    0   0
ou la variante:
 /dev/sda2    /mnt/windows     ntfs      defaults,rw  0   0</text>
      <sha1>3o732qaewlcjjuxcnkcsvn6sg2lcn5m</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>455</id>
      <parentid>454</parentid>
      <timestamp>2010-01-28T20:39:46Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="1339">'''Debian''', par défaut, ne gère que la lecture du NTFS.

Pour pouvoir lire ''et'' écrire dans une partition formatée en NTFS, il faut installer le paquet '''ntfs-3g''' disponible dans les dépôts officiels.&lt;br/&gt;
Ensuite, pour [[monter une partition]] NTFS avec les droits de lecture/écriture, il faut rajouter l'option ''-t ntfs-3g'' à la commande mount.&lt;br/&gt;
Exemple:
 # mount -t ntfs-3g /dev/sda2 /mnt/windows
une méthode alternative consiste à executer la commande
 # mount -t ntfs -o rw /dev/sda2 /mnt/windows

'''{{annonce|fond=red|image=|bord=orange|texte=L'étape suivante est à vos risques et périls:}}'''
Dans le cas où vous n'avez ''pas'' Windows, mais que la commande vous répond de faire chkdsk /f sous windows, vous pouvez executer la commande en ''forçant'' le montage de la partition:
 # mount -t ntfs-3g  /dev/sda2 /mnt/windows -o force

=== /etc/fstab ===

Pour pouvoir monter au démarrage un périphérique ntfs, insérer dans le fichier ''/etc/fstab''une ligne comme ceci:

 périphérique     point_de_montage   pilote    options    dump     pass
Pour plus de précisions concernant la syntaxe du fstab, voir la page [[fstab]]

ce qui nous donne pour notre exemple:

 /dev/sda2     /mnt/windows    ntfs-3g    defaults    0   0
ou la variante:
 /dev/sda2    /mnt/windows     ntfs      defaults,rw  0   0</text>
      <sha1>jfvkw0aauc4n07fabra7c631qalr9lw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>457</id>
      <parentid>455</parentid>
      <timestamp>2010-01-28T20:48:19Z</timestamp>
      <contributor>
        <username>Wetaskiwin</username>
        <id>10</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1347">'''Debian''', par défaut, ne gère que la lecture du NTFS.

Pour pouvoir lire ''et'' écrire dans une partition formatée en NTFS, il faut installer le paquet '''ntfs-3g''' disponible dans les dépôts officiels.&lt;br/&gt;
Ensuite, pour [[monter une partition]] NTFS avec les droits de lecture/écriture, il faut rajouter l'option ''-t ntfs-3g'' à la commande mount.&lt;br/&gt;
Exemple :
 # mount -t ntfs-3g /dev/sda2 /mnt/windows
Une méthode alternative consiste à exécuter la commande :
 # mount -t ntfs -o rw /dev/sda2 /mnt/windows

'''{{annonce|fond=red|image=|bord=orange|texte=L'étape suivante est à vos risques et périls:}}'''
Dans le cas où vous n'avez ''pas'' Windows, mais que la commande vous répond de faire chkdsk /f sous windows, vous pouvez exécuter la commande en ''forçant'' le montage de la partition :
 # mount -t ntfs-3g  /dev/sda2 /mnt/windows -o force

=== /etc/fstab ===

Pour pouvoir monter au démarrage un périphérique ntfs, insérez dans le fichier ''/etc/fstab''une ligne comme ceci :

 périphérique     point_de_montage   pilote    options    dump     pass
Pour plus de précisions concernant la syntaxe du fstab, voir la page [[fstab]]

Ce qui nous donne pour notre exemple :

 /dev/sda2     /mnt/windows    ntfs-3g    defaults    0   0
ou la variante:
 /dev/sda2    /mnt/windows     ntfs      defaults,rw  0   0</text>
      <sha1>f5o05ndblrg84bz8go6jmqgnqrnpbdw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>461</id>
      <parentid>457</parentid>
      <timestamp>2010-01-28T20:54:36Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="1371">'''Debian''', par défaut, ne gère que la lecture du NTFS.

Pour pouvoir lire ''et'' écrire dans une partition formatée en NTFS, il faut installer le paquet '''ntfs-3g''' disponible dans les dépôts officiels.&lt;br/&gt;
Ensuite, pour [[monter une partition]] NTFS avec les droits de lecture/écriture, il faut rajouter l'option ''-t ntfs-3g'' à la commande mount.&lt;br/&gt;
Exemple :
 # mount -t ntfs-3g /dev/sda2 /mnt/windows
Une méthode alternative consiste à exécuter la commande :
 # mount -t ntfs -o rw /dev/sda2 /mnt/windows

'''{{annonce|fond=red|image=|bord=orange|texte=L'étape suivante est à vos risques et périls:}}'''
Dans le cas où vous n'avez ''pas'' Windows, mais que la commande vous répond de faire chkdsk /f sous windows, vous pouvez exécuter la commande en ''forçant'' le montage de la partition :
 # mount -t ntfs-3g  /dev/sda2 /mnt/windows -o force

=== /etc/fstab ===

Pour pouvoir monter au démarrage un périphérique ntfs, insérez dans le fichier ''/etc/fstab''une ligne comme ceci :

 périphérique     point_de_montage   pilote    options    dump     pass
Pour plus de précisions concernant la syntaxe du fstab, voir la page [[fstab]]

Ce qui nous donne pour notre exemple :

 /dev/sda2     /mnt/windows    ntfs-3g    defaults    0   0
ou la variante:
 /dev/sda2    /mnt/windows     ntfs      defaults,rw  0   0

[[Catégorie:pilotes]]</text>
      <sha1>j14k8qxtqe7hgtod5cenc7vxdm5lkjs</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>557</id>
      <parentid>461</parentid>
      <timestamp>2010-01-30T11:46:43Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="1390">'''Debian''', par défaut, ne gère que la lecture du [[Glossaire#NTFS|NTFS]].

Pour pouvoir lire ''et'' écrire dans une partition formatée en NTFS, il faut installer le paquet '''ntfs-3g''' disponible dans les dépôts officiels.&lt;br/&gt;
Ensuite, pour [[monter une partition]] NTFS avec les droits de lecture/écriture, il faut rajouter l'option ''-t ntfs-3g'' à la commande mount.&lt;br/&gt;
Exemple :
 # mount -t ntfs-3g /dev/sda2 /mnt/windows
Une méthode alternative consiste à exécuter la commande :
 # mount -t ntfs -o rw /dev/sda2 /mnt/windows

'''{{annonce|fond=red|image=|bord=orange|texte=L'étape suivante est à vos risques et périls:}}'''
Dans le cas où vous n'avez ''pas'' Windows, mais que la commande vous répond de faire chkdsk /f sous windows, vous pouvez exécuter la commande en ''forçant'' le montage de la partition :
 # mount -t ntfs-3g  /dev/sda2 /mnt/windows -o force

=== /etc/fstab ===

Pour pouvoir monter au démarrage un périphérique ntfs, insérez dans le fichier ''/etc/fstab''une ligne comme ceci :

 périphérique     point_de_montage   pilote    options    dump     pass
Pour plus de précisions concernant la syntaxe du fstab, voir la page [[fstab]]

Ce qui nous donne pour notre exemple :

 /dev/sda2     /mnt/windows    ntfs-3g    defaults    0   0
ou la variante:
 /dev/sda2    /mnt/windows     ntfs      defaults,rw  0   0

[[Catégorie:pilotes]]</text>
      <sha1>0v44zb5332baxcaqnnun9r0ikavcoip</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>597</id>
      <parentid>557</parentid>
      <timestamp>2010-01-31T08:40:02Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="2069">'''Debian''', par défaut, ne gère que la lecture du [[Glossaire#NTFS|NTFS]].

Pour pouvoir lire ''et'' écrire dans une partition formatée en NTFS, il faut installer le paquet '''ntfs-3g''' disponible dans les dépôts officiels.&lt;br/&gt;
Ensuite, pour [[monter une partition]] NTFS avec les droits de lecture/écriture, il faut rajouter l'option ''-t ntfs-3g'' à la commande mount.&lt;br/&gt;
Exemple :
 # mount -t ntfs-3g /dev/sda2 /mnt/windows
Une méthode alternative consiste à exécuter la commande :
 # mount -t ntfs -o rw /dev/sda2 /mnt/windows

'''{{annonce|fond=red|image=|bord=orange|texte=L'étape suivante est à vos risques et périls:}}'''
Dans le cas où vous n'avez ''pas'' Windows, mais que la commande vous répond de faire chkdsk /f sous windows, vous pouvez exécuter la commande en ''forçant'' le montage de la partition :
 # mount -t ntfs-3g  /dev/sda2 /mnt/windows -o force

=== /etc/fstab ===

Pour pouvoir monter au démarrage un périphérique ntfs, insérez dans le fichier ''/etc/fstab''une ligne comme ceci :

 périphérique     point_de_montage   pilote    options    dump     pass
Pour plus de précisions concernant la syntaxe du fstab, voir la page [[fstab]]

Ce qui nous donne pour notre exemple :

 /dev/sda2     /mnt/windows    ntfs-3g    defaults    0   0
ou la variante:
 /dev/sda2    /mnt/windows     ntfs      defaults,rw  0   0
----
Petite précision apportée par le forum.debian-fr, [http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25581&amp;start=0]

Partition montée au démarrage, seul root à le droit à la démonter :
 /dev/sda2     /mnt/windows    ntfs-3g defaults,rw,nls=utf8    0   0

Partition montée au démarrage, un simple utilisateur peut démonter le volume.
 /dev/sda2     /mnt/windows    ntfs-3g auto,users,rw,nls=utf8    0   0

L'option nls=utf8 (ou locale=fr_FR.UTF-8) permet de ne pas avoir de problèmes avec les &quot;caractères spéciaux&quot; utilisés dans les noms de fichiers.
Vous pouvez remplacer l'option rw par ro si vous souhaitez n'avoir une partition accessible qu'en lecture seule.

[[Catégorie:pilotes]]</text>
      <sha1>hpuuskjkl6vmibovoxfhrqqpf703pw0</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>599</id>
      <parentid>597</parentid>
      <timestamp>2010-01-31T09:41:29Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <minor/>
      <comment>espace</comment>
      <text xml:space="preserve" bytes="2070">'''Debian''', par défaut, ne gère que la lecture du [[Glossaire#NTFS|NTFS]].

Pour pouvoir lire ''et'' écrire dans une partition formatée en NTFS, il faut installer le paquet '''ntfs-3g''' disponible dans les dépôts officiels.&lt;br/&gt;
Ensuite, pour [[monter une partition]] NTFS avec les droits de lecture/écriture, il faut rajouter l'option ''-t ntfs-3g'' à la commande mount.&lt;br/&gt;
Exemple :
 # mount -t ntfs-3g /dev/sda2 /mnt/windows
Une méthode alternative consiste à exécuter la commande :
 # mount -t ntfs -o rw /dev/sda2 /mnt/windows

'''{{annonce|fond=red|image=|bord=orange|texte=L'étape suivante est à vos risques et périls:}}'''
Dans le cas où vous n'avez ''pas'' Windows, mais que la commande vous répond de faire chkdsk /f sous windows, vous pouvez exécuter la commande en ''forçant'' le montage de la partition :
 # mount -t ntfs-3g  /dev/sda2 /mnt/windows -o force

=== /etc/fstab ===

Pour pouvoir monter au démarrage un périphérique ntfs, insérez dans le fichier ''/etc/fstab'' une ligne comme ceci :

 périphérique     point_de_montage   pilote    options    dump     pass
Pour plus de précisions concernant la syntaxe du fstab, voir la page [[fstab]]

Ce qui nous donne pour notre exemple :

 /dev/sda2     /mnt/windows    ntfs-3g    defaults    0   0
ou la variante:
 /dev/sda2    /mnt/windows     ntfs      defaults,rw  0   0
----
Petite précision apportée par le forum.debian-fr, [http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25581&amp;start=0]

Partition montée au démarrage, seul root à le droit à la démonter :
 /dev/sda2     /mnt/windows    ntfs-3g defaults,rw,nls=utf8    0   0

Partition montée au démarrage, un simple utilisateur peut démonter le volume.
 /dev/sda2     /mnt/windows    ntfs-3g auto,users,rw,nls=utf8    0   0

L'option nls=utf8 (ou locale=fr_FR.UTF-8) permet de ne pas avoir de problèmes avec les &quot;caractères spéciaux&quot; utilisés dans les noms de fichiers.
Vous pouvez remplacer l'option rw par ro si vous souhaitez n'avoir une partition accessible qu'en lecture seule.

[[Catégorie:pilotes]]</text>
      <sha1>c1wajvhgcjb9w33nbya7hut8unu84e7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>922</id>
      <parentid>599</parentid>
      <timestamp>2010-02-05T21:00:27Z</timestamp>
      <contributor>
        <username>Wetaskiwin</username>
        <id>10</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2106">'''Debian''', par défaut, ne gère que la lecture du [[Glossaire#NTFS|NTFS]].

Pour pouvoir lire ''et'' écrire dans une partition formatée en NTFS, il faut installer le paquet '''ntfs-3g''' disponible dans les dépôts officiels.&lt;br/&gt;
Ensuite, pour [[monter une partition]] NTFS avec les droits de lecture/écriture, il faut rajouter l'option ''-t ntfs-3g'' à la commande mount.&lt;br/&gt;
Exemple :
 # mount -t ntfs-3g /dev/sda2 /mnt/windows
Une méthode alternative consiste à exécuter la commande :
 # mount -t ntfs -o rw /dev/sda2 /mnt/windows

'''{{annonce|fond=red|image=|bord=orange|texte=L'étape suivante est à vos risques et périls:}}'''
Dans le cas où vous n'avez ''pas'' Windows, mais que la commande vous répond de faire chkdsk /f sous windows, vous pouvez exécuter la commande en ''forçant'' le montage de la partition :
 # mount -t ntfs-3g  /dev/sda2 /mnt/windows -o force

=== /etc/fstab  ===

Pour pouvoir monter au démarrage un périphérique ntfs, insérez dans le fichier ''/etc/fstab'' une ligne comme ceci&amp;nbsp;: 

 périphérique     point_de_montage   pilote    options    dump     pass

Pour plus de précisions concernant la syntaxe du fstab, voir la page [[Fstab]]. 

Ce qui nous donne pour notre exemple&amp;nbsp;: 

 /dev/sda2     /mnt/windows    ntfs-3g    defaults    0   0

ou la variante&amp;nbsp;: 

 /dev/sda2    /mnt/windows     ntfs      defaults,rw  0   0

----

Petite précision apportée par le forum.debian-fr, [http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25581&amp;start=0] 

Partition montée au démarrage, seul root a le droit à la démonter&amp;nbsp;: 

 /dev/sda2     /mnt/windows    ntfs-3g defaults,rw,nls=utf8    0   0

Partition montée au démarrage, un simple utilisateur peut démonter le volume&amp;nbsp;: 

 /dev/sda2     /mnt/windows    ntfs-3g auto,users,rw,nls=utf8    0   0

L'option nls=utf8 (ou locale=fr_FR.UTF-8) permet de ne pas avoir de problèmes avec les &quot;caractères spéciaux&quot; utilisés dans les noms de fichiers. Vous pouvez remplacer l'option rw par ro si vous souhaitez avoir une partition accessible en lecture seule. 

[[Category:Pilotes]]</text>
      <sha1>pl1qqapb3d5oru0qu8x0zxsaxd0stl8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1497</id>
      <parentid>922</parentid>
      <timestamp>2010-05-17T11:04:01Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2124">'''Debian''', par défaut, ne gère que la lecture du [[Glossaire#NTFS|NTFS]].

Pour pouvoir lire ''et'' écrire dans une partition formatée en NTFS, il faut installer le paquet '''ntfs-3g''' disponible dans les dépôts officiels.&lt;br/&gt;
Ensuite, pour [[monter une partition]] NTFS avec les droits de lecture/écriture, il faut rajouter l'option ''-t ntfs-3g'' à la commande mount.&lt;br/&gt;
Exemple :
 # mount -t ntfs-3g /dev/sda2 /mnt/windows
Une méthode alternative consiste à exécuter la commande :
 # mount -t ntfs -o rw /dev/sda2 /mnt/windows

'''{{annonce|fond=red|image=|bord=orange|texte=L'étape suivante est à vos risques et périls:}}'''
Dans le cas où vous n'avez ''pas'' Windows, mais que la commande vous répond de faire chkdsk /f sous windows, vous pouvez exécuter la commande en ''forçant'' le montage de la partition :
 # mount -t ntfs-3g  /dev/sda2 /mnt/windows -o force

=== /etc/fstab  ===

Pour pouvoir monter au démarrage un périphérique ntfs, insérez dans le fichier ''/etc/fstab'' une ligne comme ceci&amp;nbsp;: 

 périphérique     point_de_montage   pilote    options    dump     pass

Pour plus de précisions concernant la syntaxe du fstab, voir la page [[Fstab]]. 

Ce qui nous donne pour notre exemple&amp;nbsp;: 

 /dev/sda2     /mnt/windows    ntfs-3g    defaults    0   0

ou la variante&amp;nbsp;: 

 /dev/sda2    /mnt/windows     ntfs      defaults,rw  0   0

----

Petite précision apportée par le forum.debian-fr, [http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25581&amp;start=0] 

Partition montée au démarrage, seul root a le droit à la démonter&amp;nbsp;: 

 /dev/sda2     /mnt/windows    ntfs-3g defaults,rw,nls=utf8    0   0

Partition montée au démarrage, un simple utilisateur peut démonter le volume&amp;nbsp;: 

 /dev/sda2     /mnt/windows    ntfs-3g auto,users,rw,nls=utf8    0   0

L'option nls=utf8 (ou locale=fr_FR.UTF-8) permet de ne pas avoir de problèmes avec les &quot;caractères spéciaux&quot; utilisés dans les noms de fichiers. Vous pouvez remplacer l'option rw par ro si vous souhaitez avoir une partition accessible en lecture seule. 

[[Category:Pilotes]]
[[Category:Ntfs]]</text>
      <sha1>90r7555npkvyc1lolx9e3sisydk6a9j</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1619</id>
      <parentid>1497</parentid>
      <timestamp>2010-07-05T08:04:10Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="2149">#REDIRECT [[isalo:Ntfs]]
'''Debian''', par défaut, ne gère que la lecture du [[Glossaire#NTFS|NTFS]].

Pour pouvoir lire ''et'' écrire dans une partition formatée en NTFS, il faut installer le paquet '''ntfs-3g''' disponible dans les dépôts officiels.&lt;br/&gt;
Ensuite, pour [[monter une partition]] NTFS avec les droits de lecture/écriture, il faut rajouter l'option ''-t ntfs-3g'' à la commande mount.&lt;br/&gt;
Exemple :
 # mount -t ntfs-3g /dev/sda2 /mnt/windows
Une méthode alternative consiste à exécuter la commande :
 # mount -t ntfs -o rw /dev/sda2 /mnt/windows

'''{{annonce|fond=red|image=|bord=orange|texte=L'étape suivante est à vos risques et périls:}}'''
Dans le cas où vous n'avez ''pas'' Windows, mais que la commande vous répond de faire chkdsk /f sous windows, vous pouvez exécuter la commande en ''forçant'' le montage de la partition :
 # mount -t ntfs-3g  /dev/sda2 /mnt/windows -o force

=== /etc/fstab  ===

Pour pouvoir monter au démarrage un périphérique ntfs, insérez dans le fichier ''/etc/fstab'' une ligne comme ceci&amp;nbsp;: 

 périphérique     point_de_montage   pilote    options    dump     pass

Pour plus de précisions concernant la syntaxe du fstab, voir la page [[Fstab]]. 

Ce qui nous donne pour notre exemple&amp;nbsp;: 

 /dev/sda2     /mnt/windows    ntfs-3g    defaults    0   0

ou la variante&amp;nbsp;: 

 /dev/sda2    /mnt/windows     ntfs      defaults,rw  0   0

----

Petite précision apportée par le forum.debian-fr, [http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25581&amp;start=0] 

Partition montée au démarrage, seul root a le droit à la démonter&amp;nbsp;: 

 /dev/sda2     /mnt/windows    ntfs-3g defaults,rw,nls=utf8    0   0

Partition montée au démarrage, un simple utilisateur peut démonter le volume&amp;nbsp;: 

 /dev/sda2     /mnt/windows    ntfs-3g auto,users,rw,nls=utf8    0   0

L'option nls=utf8 (ou locale=fr_FR.UTF-8) permet de ne pas avoir de problèmes avec les &quot;caractères spéciaux&quot; utilisés dans les noms de fichiers. Vous pouvez remplacer l'option rw par ro si vous souhaitez avoir une partition accessible en lecture seule. 

[[Category:Pilotes]]
[[Category:Ntfs]]</text>
      <sha1>dt9wrqaa9ws1q8r7wd7t1k2s8rwrjyh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1674</id>
      <parentid>1619</parentid>
      <timestamp>2010-07-06T09:21:55Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Annulation des modifications 1619 de [[Special:Contributions/Lol|Lol]] ([[User talk:Lol|discussion]])</comment>
      <text xml:space="preserve" bytes="2124">'''Debian''', par défaut, ne gère que la lecture du [[Glossaire#NTFS|NTFS]].

Pour pouvoir lire ''et'' écrire dans une partition formatée en NTFS, il faut installer le paquet '''ntfs-3g''' disponible dans les dépôts officiels.&lt;br/&gt;
Ensuite, pour [[monter une partition]] NTFS avec les droits de lecture/écriture, il faut rajouter l'option ''-t ntfs-3g'' à la commande mount.&lt;br/&gt;
Exemple :
 # mount -t ntfs-3g /dev/sda2 /mnt/windows
Une méthode alternative consiste à exécuter la commande :
 # mount -t ntfs -o rw /dev/sda2 /mnt/windows

'''{{annonce|fond=red|image=|bord=orange|texte=L'étape suivante est à vos risques et périls:}}'''
Dans le cas où vous n'avez ''pas'' Windows, mais que la commande vous répond de faire chkdsk /f sous windows, vous pouvez exécuter la commande en ''forçant'' le montage de la partition :
 # mount -t ntfs-3g  /dev/sda2 /mnt/windows -o force

=== /etc/fstab  ===

Pour pouvoir monter au démarrage un périphérique ntfs, insérez dans le fichier ''/etc/fstab'' une ligne comme ceci&amp;nbsp;: 

 périphérique     point_de_montage   pilote    options    dump     pass

Pour plus de précisions concernant la syntaxe du fstab, voir la page [[Fstab]]. 

Ce qui nous donne pour notre exemple&amp;nbsp;: 

 /dev/sda2     /mnt/windows    ntfs-3g    defaults    0   0

ou la variante&amp;nbsp;: 

 /dev/sda2    /mnt/windows     ntfs      defaults,rw  0   0

----

Petite précision apportée par le forum.debian-fr, [http://forum.debian-fr.org/viewtopic.php?f=3&amp;t=25581&amp;start=0] 

Partition montée au démarrage, seul root a le droit à la démonter&amp;nbsp;: 

 /dev/sda2     /mnt/windows    ntfs-3g defaults,rw,nls=utf8    0   0

Partition montée au démarrage, un simple utilisateur peut démonter le volume&amp;nbsp;: 

 /dev/sda2     /mnt/windows    ntfs-3g auto,users,rw,nls=utf8    0   0

L'option nls=utf8 (ou locale=fr_FR.UTF-8) permet de ne pas avoir de problèmes avec les &quot;caractères spéciaux&quot; utilisés dans les noms de fichiers. Vous pouvez remplacer l'option rw par ro si vous souhaitez avoir une partition accessible en lecture seule. 

[[Category:Pilotes]]
[[Category:Ntfs]]</text>
      <sha1>90r7555npkvyc1lolx9e3sisydk6a9j</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Nvidia et Ati pour les fainéants</title>
    <ns>0</ns>
    <id>276</id>
    <revision>
      <id>1190</id>
      <timestamp>2010-03-28T06:57:15Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « {{sid}}  Voici une petite astuce, utilisée par beaucoup d'entre nous pour l'installation des drivers des cartes Nvidia et Ati.  == Installation ==   # cd /usr/local/bin/  # … »</comment>
      <text xml:space="preserve" bytes="744">{{sid}}

Voici une petite astuce, utilisée par beaucoup d'entre nous pour l'installation des drivers des cartes Nvidia et Ati.

== Installation ==

 # cd /usr/local/bin/
 # wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip

== Utilisation pour installer une CG ==

 # sgfxi -f (actuellement le -f à cause d'un bug si nVIDIA)

== Utilisation en mise à jour d'une sid ==

 # smxi ( explorer toutes les possibilités, elles sont énormes)

== Documentation externe ==

* Le site  [http://smxi.org/ smxi.org]
* Le manuel complet (en anglais) de [http://smxi.org/docs/sgfxi-manual.htm SGFXI]
* Le manuel complet (en anglais) de [http://smxi.org/docs/smxi-manual.htm SMXI]

--[[Utilisateur:Lol|Lol]] 28 mars 2010 à 06:57 (UTC)

[[Catégorie:Carte_Vidéo]]</text>
      <sha1>4obx08q94rk2hr8x8ybs95suq6rnigv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1401</id>
      <parentid>1190</parentid>
      <timestamp>2010-04-15T16:01:31Z</timestamp>
      <contributor>
        <username>Ginkgo biloba</username>
        <id>22</id>
      </contributor>
      <minor/>
      <comment>/* Documentation externe */</comment>
      <text xml:space="preserve" bytes="1111">{{sid}}

Voici une petite astuce, utilisée par beaucoup d'entre nous pour l'installation des drivers des cartes Nvidia et Ati.

== Installation ==

 # cd /usr/local/bin/
 # wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip

== Utilisation pour installer une CG ==

 # sgfxi -f (actuellement le -f à cause d'un bug si nVIDIA)

== Utilisation en mise à jour d'une sid ==

 # smxi ( explorer toutes les possibilités, elles sont énormes)

== Documentation externe ==

* Le site  [http://smxi.org/ smxi.org]
* Le manuel complet (en anglais) de [http://smxi.org/docs/sgfxi-manual.htm SGFXI]
* Le manuel complet (en anglais) de [http://smxi.org/docs/smxi-manual.htm SMXI]

--[[Utilisateur:Lol|Lol]] 28 mars 2010 à 06:57 (UTC)

[[Catégorie:Carte_Vidéo]]


Une petite remarque sur l'orthographe du titre:

Il me semble (wikipedia et le petit larousse sont d'accord avec moi) que le mot fénéants n'existe pas.
Par contre fainéant et fainéants, oui.
Je suis désolé, mais je ne sais pas comment modifier l'orthographe du titre. 
Ce serait bien de rectifier et d'ôter cette remarque sans réel intérêt.
Ginkgobiloba.</text>
      <sha1>64aj2s2m399d6582zsa67ol565c8afp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1402</id>
      <parentid>1401</parentid>
      <timestamp>2010-04-15T17:11:45Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>a renommé [[Nvidia et Ati pour les fénéants]] en [[Nvidia et Ati pour les fainéants]]&amp;nbsp;:&amp;#32;Faute impardonnable...</comment>
      <text xml:space="preserve" bytes="1111">{{sid}}

Voici une petite astuce, utilisée par beaucoup d'entre nous pour l'installation des drivers des cartes Nvidia et Ati.

== Installation ==

 # cd /usr/local/bin/
 # wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip

== Utilisation pour installer une CG ==

 # sgfxi -f (actuellement le -f à cause d'un bug si nVIDIA)

== Utilisation en mise à jour d'une sid ==

 # smxi ( explorer toutes les possibilités, elles sont énormes)

== Documentation externe ==

* Le site  [http://smxi.org/ smxi.org]
* Le manuel complet (en anglais) de [http://smxi.org/docs/sgfxi-manual.htm SGFXI]
* Le manuel complet (en anglais) de [http://smxi.org/docs/smxi-manual.htm SMXI]

--[[Utilisateur:Lol|Lol]] 28 mars 2010 à 06:57 (UTC)

[[Catégorie:Carte_Vidéo]]


Une petite remarque sur l'orthographe du titre:

Il me semble (wikipedia et le petit larousse sont d'accord avec moi) que le mot fénéants n'existe pas.
Par contre fainéant et fainéants, oui.
Je suis désolé, mais je ne sais pas comment modifier l'orthographe du titre. 
Ce serait bien de rectifier et d'ôter cette remarque sans réel intérêt.
Ginkgobiloba.</text>
      <sha1>64aj2s2m399d6582zsa67ol565c8afp</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1405</id>
      <parentid>1402</parentid>
      <timestamp>2010-04-15T17:14:26Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Documentation externe */</comment>
      <text xml:space="preserve" bytes="744">{{sid}}

Voici une petite astuce, utilisée par beaucoup d'entre nous pour l'installation des drivers des cartes Nvidia et Ati.

== Installation ==

 # cd /usr/local/bin/
 # wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip

== Utilisation pour installer une CG ==

 # sgfxi -f (actuellement le -f à cause d'un bug si nVIDIA)

== Utilisation en mise à jour d'une sid ==

 # smxi ( explorer toutes les possibilités, elles sont énormes)

== Documentation externe ==

* Le site  [http://smxi.org/ smxi.org]
* Le manuel complet (en anglais) de [http://smxi.org/docs/sgfxi-manual.htm SGFXI]
* Le manuel complet (en anglais) de [http://smxi.org/docs/smxi-manual.htm SMXI]

--[[Utilisateur:Lol|Lol]] 28 mars 2010 à 06:57 (UTC)

[[Catégorie:Carte_Vidéo]]</text>
      <sha1>4obx08q94rk2hr8x8ybs95suq6rnigv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1623</id>
      <parentid>1405</parentid>
      <timestamp>2010-07-05T08:06:33Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="802">#REDIRECT [[isalo:Nvidia_et_Ati_pour_les_fain%C3%A9ants]]
{{sid}}

Voici une petite astuce, utilisée par beaucoup d'entre nous pour l'installation des drivers des cartes Nvidia et Ati.

== Installation ==

 # cd /usr/local/bin/
 # wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip

== Utilisation pour installer une CG ==

 # sgfxi -f (actuellement le -f à cause d'un bug si nVIDIA)

== Utilisation en mise à jour d'une sid ==

 # smxi ( explorer toutes les possibilités, elles sont énormes)

== Documentation externe ==

* Le site  [http://smxi.org/ smxi.org]
* Le manuel complet (en anglais) de [http://smxi.org/docs/sgfxi-manual.htm SGFXI]
* Le manuel complet (en anglais) de [http://smxi.org/docs/smxi-manual.htm SMXI]

--[[Utilisateur:Lol|Lol]] 28 mars 2010 à 06:57 (UTC)

[[Catégorie:Carte_Vidéo]]</text>
      <sha1>9bimf8b38kra0a0m6z220c4uhgx9hm5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1670</id>
      <parentid>1623</parentid>
      <timestamp>2010-07-06T09:21:11Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Annulation des modifications 1623 de [[Special:Contributions/Lol|Lol]] ([[User talk:Lol|discussion]])</comment>
      <text xml:space="preserve" bytes="744">{{sid}}

Voici une petite astuce, utilisée par beaucoup d'entre nous pour l'installation des drivers des cartes Nvidia et Ati.

== Installation ==

 # cd /usr/local/bin/
 # wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip

== Utilisation pour installer une CG ==

 # sgfxi -f (actuellement le -f à cause d'un bug si nVIDIA)

== Utilisation en mise à jour d'une sid ==

 # smxi ( explorer toutes les possibilités, elles sont énormes)

== Documentation externe ==

* Le site  [http://smxi.org/ smxi.org]
* Le manuel complet (en anglais) de [http://smxi.org/docs/sgfxi-manual.htm SGFXI]
* Le manuel complet (en anglais) de [http://smxi.org/docs/smxi-manual.htm SMXI]

--[[Utilisateur:Lol|Lol]] 28 mars 2010 à 06:57 (UTC)

[[Catégorie:Carte_Vidéo]]</text>
      <sha1>4obx08q94rk2hr8x8ybs95suq6rnigv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1938</id>
      <parentid>1670</parentid>
      <timestamp>2010-08-16T18:17:08Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Utilisation pour installer une CG */</comment>
      <text xml:space="preserve" bytes="741">{{sid}}

Voici une petite astuce, utilisée par beaucoup d'entre nous pour l'installation des drivers des cartes Nvidia et Ati.

== Installation ==

 # cd /usr/local/bin/
 # wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip

== Utilisation pour installer une CG ==

 # sgfxi -e (pour ne pas avoir à dire oui à chaque pas)

== Utilisation en mise à jour d'une sid ==

 # smxi ( explorer toutes les possibilités, elles sont énormes)

== Documentation externe ==

* Le site  [http://smxi.org/ smxi.org]
* Le manuel complet (en anglais) de [http://smxi.org/docs/sgfxi-manual.htm SGFXI]
* Le manuel complet (en anglais) de [http://smxi.org/docs/smxi-manual.htm SMXI]

--[[Utilisateur:Lol|Lol]] 28 mars 2010 à 06:57 (UTC)

[[Catégorie:Carte_Vidéo]]</text>
      <sha1>9aigcso3vmqrf0h39o47tdp3wtfvc9k</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1939</id>
      <parentid>1938</parentid>
      <timestamp>2010-08-16T18:19:41Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Utilisation pour installer une CG */</comment>
      <text xml:space="preserve" bytes="715">{{sid}}

Voici une petite astuce, utilisée par beaucoup d'entre nous pour l'installation des drivers des cartes Nvidia et Ati.

== Installation ==

 # cd /usr/local/bin/
 # wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip

== Utilisation pour installer une CG ==

 # sgfxi (pas de bugs récents)

== Utilisation en mise à jour d'une sid ==

 # smxi ( explorer toutes les possibilités, elles sont énormes)

== Documentation externe ==

* Le site  [http://smxi.org/ smxi.org]
* Le manuel complet (en anglais) de [http://smxi.org/docs/sgfxi-manual.htm SGFXI]
* Le manuel complet (en anglais) de [http://smxi.org/docs/smxi-manual.htm SMXI]

--[[Utilisateur:Lol|Lol]] 28 mars 2010 à 06:57 (UTC)

[[Catégorie:Carte_Vidéo]]</text>
      <sha1>r2ccq0d1hki0yeii8tkwqz88w0rhp0d</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2667</id>
      <parentid>1939</parentid>
      <timestamp>2011-01-18T10:29:07Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Documentation externe */</comment>
      <text xml:space="preserve" bytes="727">{{sid}}

Voici une petite astuce, utilisée par beaucoup d'entre nous pour l'installation des drivers des cartes Nvidia et Ati.

== Installation ==

 # cd /usr/local/bin/
 # wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip

== Utilisation pour installer une CG ==

 # sgfxi (pas de bugs récents)

== Utilisation en mise à jour d'une sid ==

 # smxi ( explorer toutes les possibilités, elles sont énormes)

== Documentation externe ==

* # smxi -h
* Le site  [http://smxi.org/ smxi.org]
* Le manuel complet (en anglais) de [http://smxi.org/docs/sgfxi-manual.htm SGFXI]
* Le manuel complet (en anglais) de [http://smxi.org/docs/smxi-manual.htm SMXI]

--[[Utilisateur:Lol|Lol]] 28 mars 2010 à 06:57 (UTC)

[[Catégorie:Carte_Vidéo]]</text>
      <sha1>jmlz5uum8vlp0jyuypufrcwlspci004</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2671</id>
      <parentid>2667</parentid>
      <timestamp>2011-02-05T10:52:19Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Utilisation en mise à jour d'une sid */</comment>
      <text xml:space="preserve" bytes="847">{{sid}}

Voici une petite astuce, utilisée par beaucoup d'entre nous pour l'installation des drivers des cartes Nvidia et Ati.

== Installation ==

 # cd /usr/local/bin/
 # wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip

== Utilisation pour installer une CG ==

 # sgfxi (pas de bugs récents)

== Utilisation en mise à jour d'une sid ==

Peut également être utilisée pour l'installation et pas seulement d'une sid, smxi fera appel à sgfxi au bon moment.
 # smxi ( explorer toutes les possibilités, elles sont énormes)

== Documentation externe ==

* # smxi -h
* Le site  [http://smxi.org/ smxi.org]
* Le manuel complet (en anglais) de [http://smxi.org/docs/sgfxi-manual.htm SGFXI]
* Le manuel complet (en anglais) de [http://smxi.org/docs/smxi-manual.htm SMXI]

--[[Utilisateur:Lol|Lol]] 28 mars 2010 à 06:57 (UTC)

[[Catégorie:Carte_Vidéo]]</text>
      <sha1>b4jjoz0vio9bmnwcfq7dm223dejh0en</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2672</id>
      <parentid>2671</parentid>
      <timestamp>2011-02-05T12:23:58Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Utilisation pour installer une CG */</comment>
      <text xml:space="preserve" bytes="824">{{sid}}

Voici une petite astuce, utilisée par beaucoup d'entre nous pour l'installation des drivers des cartes Nvidia et Ati.

== Installation ==

 # cd /usr/local/bin/
 # wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip

== Utilisation pour installer une CG ==

 # sgfxi

== Utilisation en mise à jour d'une sid ==

Peut également être utilisée pour l'installation et pas seulement d'une sid, smxi fera appel à sgfxi au bon moment.
 # smxi ( explorer toutes les possibilités, elles sont énormes)

== Documentation externe ==

* # smxi -h
* Le site  [http://smxi.org/ smxi.org]
* Le manuel complet (en anglais) de [http://smxi.org/docs/sgfxi-manual.htm SGFXI]
* Le manuel complet (en anglais) de [http://smxi.org/docs/smxi-manual.htm SMXI]

--[[Utilisateur:Lol|Lol]] 28 mars 2010 à 06:57 (UTC)

[[Catégorie:Carte_Vidéo]]</text>
      <sha1>9lh4d96eouv8sybebvn5jgwg46qcrz5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2708</id>
      <parentid>2672</parentid>
      <timestamp>2011-02-17T08:21:29Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <comment>/* Utilisation pour installer une CG */</comment>
      <text xml:space="preserve" bytes="943">{{sid}}

Voici une petite astuce, utilisée par beaucoup d'entre nous pour l'installation des drivers des cartes Nvidia et Ati.

== Installation ==

 # cd /usr/local/bin/
 # wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip

== Utilisation pour installer une CG ==

 # sgfxi

Préférez le passage par SMXI qui montre le choix des modules disponibles avant de faire appel, lui même, à SGFXI.

== Utilisation en mise à jour d'une sid ==

Peut également être utilisée pour l'installation et pas seulement d'une sid, smxi fera appel à sgfxi au bon moment.
 # smxi ( explorer toutes les possibilités, elles sont énormes)

== Documentation externe ==

* # smxi -h
* Le site  [http://smxi.org/ smxi.org]
* Le manuel complet (en anglais) de [http://smxi.org/docs/sgfxi-manual.htm SGFXI]
* Le manuel complet (en anglais) de [http://smxi.org/docs/smxi-manual.htm SMXI]

--[[Utilisateur:Lol|Lol]] 28 mars 2010 à 06:57 (UTC)

[[Catégorie:Carte_Vidéo]]</text>
      <sha1>j4qcrj9h13tkg9nceafn4qd2ab7240x</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3007</id>
      <parentid>2708</parentid>
      <timestamp>2011-05-24T07:47:24Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="946">{{stable}}

Voici une petite astuce, utilisée par beaucoup d'entre nous pour l'installation des drivers des cartes Nvidia et Ati.

== Installation ==

 # cd /usr/local/bin/
 # wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip

== Utilisation pour installer une CG ==

 # sgfxi

Préférez le passage par SMXI qui montre le choix des modules disponibles avant de faire appel, lui même, à SGFXI.

== Utilisation en mise à jour d'une sid ==

Peut également être utilisée pour l'installation et pas seulement d'une sid, smxi fera appel à sgfxi au bon moment.
 # smxi ( explorer toutes les possibilités, elles sont énormes)

== Documentation externe ==

* # smxi -h
* Le site  [http://smxi.org/ smxi.org]
* Le manuel complet (en anglais) de [http://smxi.org/docs/sgfxi-manual.htm SGFXI]
* Le manuel complet (en anglais) de [http://smxi.org/docs/smxi-manual.htm SMXI]

--[[Utilisateur:Lol|Lol]] 28 mars 2010 à 06:57 (UTC)

[[Catégorie:Carte_Vidéo]]</text>
      <sha1>00ly8972acgs8sm6ha5vm596eia0vur</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4046</id>
      <parentid>3007</parentid>
      <timestamp>2012-04-23T16:04:22Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="974">{{stable}}

Voici une petite astuce, utilisée par beaucoup d'entre nous pour l'installation des drivers des [[Matériel::Carte vidéo|cartes]] Nvidia et Ati.

== Installation ==

 # cd /usr/local/bin/
 # wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip

== Utilisation pour installer une CG ==

 # sgfxi

Préférez le passage par SMXI qui montre le choix des modules disponibles avant de faire appel, lui même, à SGFXI.

== Utilisation en mise à jour d'une sid ==

Peut également être utilisée pour l'installation et pas seulement d'une sid, smxi fera appel à sgfxi au bon moment.
 # smxi ( explorer toutes les possibilités, elles sont énormes)

== Documentation externe ==

* # smxi -h
* Le site  [http://smxi.org/ smxi.org]
* Le manuel complet (en anglais) de [http://smxi.org/docs/sgfxi-manual.htm SGFXI]
* Le manuel complet (en anglais) de [http://smxi.org/docs/smxi-manual.htm SMXI]

--[[Utilisateur:Lol|Lol]] 28 mars 2010 à 06:57 (UTC)

[[Catégorie:Carte_Vidéo]]</text>
      <sha1>na7u4wgei2nsk2xsyd0oab8ficnnjag</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4081</id>
      <parentid>4046</parentid>
      <timestamp>2012-04-26T08:41:09Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="978">{{stable}}

Voici une petite astuce, utilisée par beaucoup d'entre nous pour l'installation des drivers des [[Matériel::Carte vidéo|cartes]] Nvidia et Ati.

== Installation ==

 # cd /usr/local/bin/
 # wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip

== Utilisation pour installer une CG ==

 # sgfxi

Préférez le passage par SMXI qui montre le choix des modules disponibles avant de faire appel, lui même, à SGFXI.

== Utilisation en mise à jour d'une sid ==

Peut également être utilisée pour l'installation et pas seulement d'une sid, smxi fera appel à sgfxi au bon moment.
 # smxi ( explorer toutes les possibilités, elles sont énormes)

== Documentation externe ==

* # smxi -h
* Le site  [http://smxi.org/ smxi.org]
* Le manuel complet (en anglais) de [http://smxi.org/docs/sgfxi-manual.htm SGFXI]
* Le manuel complet (en anglais) de [http://smxi.org/docs/smxi-manual.htm SMXI]

--[[Utilisateur:Lol|Lol]] 28 mars 2010 à 06:57 (UTC)

[[Catégorie:Trucs et Astuces]]</text>
      <sha1>dkyudqatj6nfmm9w0umckoy60uybn7w</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4082</id>
      <parentid>4081</parentid>
      <timestamp>2012-04-26T08:41:41Z</timestamp>
      <contributor>
        <username>Nicolas NALLET</username>
        <id>226</id>
      </contributor>
      <text xml:space="preserve" bytes="1002">{{stable}}

Voici une petite astuce, utilisée par beaucoup d'entre nous pour l'installation des drivers des [[Matériel::Carte vidéo|cartes]] [[Marque::Nvidia]] et [[Marque::Ati]].

== Installation ==

 # cd /usr/local/bin/
 # wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip

== Utilisation pour installer une CG ==

 # sgfxi

Préférez le passage par SMXI qui montre le choix des modules disponibles avant de faire appel, lui même, à SGFXI.

== Utilisation en mise à jour d'une sid ==

Peut également être utilisée pour l'installation et pas seulement d'une sid, smxi fera appel à sgfxi au bon moment.
 # smxi ( explorer toutes les possibilités, elles sont énormes)

== Documentation externe ==

* # smxi -h
* Le site  [http://smxi.org/ smxi.org]
* Le manuel complet (en anglais) de [http://smxi.org/docs/sgfxi-manual.htm SGFXI]
* Le manuel complet (en anglais) de [http://smxi.org/docs/smxi-manual.htm SMXI]

--[[Utilisateur:Lol|Lol]] 28 mars 2010 à 06:57 (UTC)

[[Catégorie:Trucs et Astuces]]</text>
      <sha1>1rzrx3vnmr3uwltzr9l1bw0i7q0b4ai</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5442</id>
      <parentid>4082</parentid>
      <timestamp>2013-11-19T10:21:29Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <comment>/* Installation */</comment>
      <text xml:space="preserve" bytes="1087">{{stable}}

Voici une petite astuce, utilisée par beaucoup d'entre nous pour l'installation des drivers des [[Matériel::Carte vidéo|cartes]] [[Marque::Nvidia]] et [[Marque::Ati]].

== Installation ==

 # cd /usr/local/bin/
 # wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip

== [[Attention]]

A ce jour 15/11/2013 cette méthode semble ne plus fonctioonner !

== Utilisation pour installer une CG ==

 # sgfxi

Préférez le passage par SMXI qui montre le choix des modules disponibles avant de faire appel, lui même, à SGFXI.

== Utilisation en mise à jour d'une sid ==

Peut également être utilisée pour l'installation et pas seulement d'une sid, smxi fera appel à sgfxi au bon moment.
 # smxi ( explorer toutes les possibilités, elles sont énormes)

== Documentation externe ==

* # smxi -h
* Le site  [http://smxi.org/ smxi.org]
* Le manuel complet (en anglais) de [http://smxi.org/docs/sgfxi-manual.htm SGFXI]
* Le manuel complet (en anglais) de [http://smxi.org/docs/smxi-manual.htm SMXI]

--[[Utilisateur:Lol|Lol]] 28 mars 2010 à 06:57 (UTC)

[[Catégorie:Trucs et Astuces]]</text>
      <sha1>qhud1g7oyw2htumpxqniv5bsux23hq5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5443</id>
      <parentid>5442</parentid>
      <timestamp>2013-11-19T10:23:20Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <comment>/* Installation */</comment>
      <text xml:space="preserve" bytes="1131">{{stable}}

Voici une petite astuce, utilisée par beaucoup d'entre nous pour l'installation des drivers des [[Matériel::Carte vidéo|cartes]] [[Marque::Nvidia]] et [[Marque::Ati]].

== Installation ==

 # cd /usr/local/bin/
 # wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip

== [[Attention]]
[[
A ce jour 15/11/2013 cette méthode semble ne plus fonctionner pour l'installation d'un carte graphique !]]

== Utilisation pour installer une CG ==

 # sgfxi

Préférez le passage par SMXI qui montre le choix des modules disponibles avant de faire appel, lui même, à SGFXI.

== Utilisation en mise à jour d'une sid ==

Peut également être utilisée pour l'installation et pas seulement d'une sid, smxi fera appel à sgfxi au bon moment.
 # smxi ( explorer toutes les possibilités, elles sont énormes)

== Documentation externe ==

* # smxi -h
* Le site  [http://smxi.org/ smxi.org]
* Le manuel complet (en anglais) de [http://smxi.org/docs/sgfxi-manual.htm SGFXI]
* Le manuel complet (en anglais) de [http://smxi.org/docs/smxi-manual.htm SMXI]

--[[Utilisateur:Lol|Lol]] 28 mars 2010 à 06:57 (UTC)

[[Catégorie:Trucs et Astuces]]</text>
      <sha1>iyp39ud6w5x25fyoyles8s2lxqq0cyc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5444</id>
      <parentid>5443</parentid>
      <timestamp>2013-11-19T10:24:28Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <comment>/* Utilisation en mise à jour d'une sid */</comment>
      <text xml:space="preserve" bytes="1132">{{stable}}

Voici une petite astuce, utilisée par beaucoup d'entre nous pour l'installation des drivers des [[Matériel::Carte vidéo|cartes]] [[Marque::Nvidia]] et [[Marque::Ati]].

== Installation ==

 # cd /usr/local/bin/
 # wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip

== [[Attention]]
[[
A ce jour 15/11/2013 cette méthode semble ne plus fonctionner pour l'installation d'un carte graphique !]]

== Utilisation pour installer une CG ==

 # sgfxi

Préférez le passage par SMXI qui montre le choix des modules disponibles avant de faire appel, lui même, à SGFXI.

== Utilisation en mise à jour d'une sid ==

Peut également être utilisée pour la mise à jour et pas seulement d'une sid, smxi fera appel à sgfxi au bon moment.
 # smxi ( explorer toutes les possibilités, elles sont énormes)

== Documentation externe ==

* # smxi -h
* Le site  [http://smxi.org/ smxi.org]
* Le manuel complet (en anglais) de [http://smxi.org/docs/sgfxi-manual.htm SGFXI]
* Le manuel complet (en anglais) de [http://smxi.org/docs/smxi-manual.htm SMXI]

--[[Utilisateur:Lol|Lol]] 28 mars 2010 à 06:57 (UTC)

[[Catégorie:Trucs et Astuces]]</text>
      <sha1>7xh89mwd9yv87gvrst6sk0krh7vd6yr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5463</id>
      <parentid>5444</parentid>
      <timestamp>2013-12-02T09:22:04Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <comment>/* Installation */</comment>
      <text xml:space="preserve" bytes="1261">{{stable}}

Voici une petite astuce, utilisée par beaucoup d'entre nous pour l'installation des drivers des [[Matériel::Carte vidéo|cartes]] [[Marque::Nvidia]] et [[Marque::Ati]].

== Installation ==

 # cd /usr/local/bin/
 # wget smxi.org/smxi.zip &amp;&amp; unzip smxi.zip

== [[Attention]]
[[
A ce jour 15/11/2013 cette méthode semble ne plus fonctionner pour l'installation d'un carte graphique !]]

Contournement : Il faut avoir préalablement installé le pilote &quot;nouveau&quot; puis relancer l'installation du pilote propriétaire

== Utilisation pour installer une CG ==

 # sgfxi

Préférez le passage par SMXI qui montre le choix des modules disponibles avant de faire appel, lui même, à SGFXI.

== Utilisation en mise à jour d'une sid ==

Peut également être utilisée pour la mise à jour et pas seulement d'une sid, smxi fera appel à sgfxi au bon moment.
 # smxi ( explorer toutes les possibilités, elles sont énormes)

== Documentation externe ==

* # smxi -h
* Le site  [http://smxi.org/ smxi.org]
* Le manuel complet (en anglais) de [http://smxi.org/docs/sgfxi-manual.htm SGFXI]
* Le manuel complet (en anglais) de [http://smxi.org/docs/smxi-manual.htm SMXI]

--[[Utilisateur:Lol|Lol]] 28 mars 2010 à 06:57 (UTC)

[[Catégorie:Trucs et Astuces]]</text>
      <sha1>o0dwrbtvq225wh28gqyxjkh4tsd92x5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Nvidia et Ati pour les fénéants</title>
    <ns>0</ns>
    <id>395</id>
    <redirect title="Nvidia et Ati pour les fainéants" />
    <revision>
      <id>1403</id>
      <timestamp>2010-04-15T17:11:45Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>a renommé [[Nvidia et Ati pour les fénéants]] en [[Nvidia et Ati pour les fainéants]]&amp;nbsp;:&amp;#32;Faute impardonnable...</comment>
      <text xml:space="preserve" bytes="50">#REDIRECTION [[Nvidia et Ati pour les fainéants]]</text>
      <sha1>kq0sle2ot0lv8ei4go1wyxu8ckeva4g</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>OpenLDAP</title>
    <ns>0</ns>
    <id>1165</id>
    <revision>
      <id>4755</id>
      <timestamp>2012-11-16T10:41:27Z</timestamp>
      <contributor>
        <username>Chr0my</username>
        <id>222</id>
      </contributor>
      <comment>Page créée avec «  == Qu'est-ce qu'OpenLDAP == OpenLDAP est un annuaire Open Source basé sur le protocole (LDAP Lightweight Directory Access Protocol).  Il répertorie les ressources prés... »</comment>
      <text xml:space="preserve" bytes="7546">
== Qu'est-ce qu'OpenLDAP ==
OpenLDAP est un annuaire Open Source basé sur le protocole (LDAP Lightweight Directory Access Protocol). 
Il répertorie les ressources présentes au sein de votre système d'information (comptes ordinateurs, comptes utilisateurs, groupes...) sous la forme d'une arborescence.

== Avertissement ==
L'installation décrite ici ne prend pas en compte la gestion du SSL.

== Pré-requis ==
Dans cette procédure, nous considérons plusieurs choses:

* Le nom du serveur est '''openldap'''
* Le nom de domaine utilisé est '''mondomaine.local'''
* Le système est fonctionnel, et à jour

Charge à vous de remplacer les différentes variable par vos propres informations.

'''Note:''' à partir de Debian Squeeze, la configuration d'OpenLDAP ne s'effectue plus au travers du fichier slapd.conf.

== Installation ==
=== Fichier /etc/hosts ===
Nous ne possédons pas de serveur DNS, nous utiliserons le fichier /etc/hosts.
Vérifier que ce dernier possède bien le FQDN du serveur:
 127.0.0.1       localhost
 127.0.1.1       openldap.mondomaine.local   openldap

=== Debconf ===
Debconf est un utilitaire graphique qui va nous permettre de renseigner divers options lors de l'installation des paquets. Afin que ce dernier nous propose plus de choix lors de l'installation d'OpenLDAP, nous allons diminuer son niveau.
root@openldap:~# dpkg-reconfigure debconf

'''Répondre:'''
* Dialogue
* Intermédiaire

=== Téléchargement des packages ===
 root@openldap:~# apt-get install slapd ldap-utils nmap apache2 -y

**''slapd : serveur LDAP''
**''ldap-utils : outils qui vont nous permettre d'agir sur le serveur''
**''nmap : Scanner de ports''
**''apache2 : serveur Web qui va héberger notre outil de gestion''

Une fenêtre debconf doit apparaître vous proposant les choix suivants:
* Voulez-vous omettre la configuration d'OpenLDAP? '''Non'''
* Nom de domaine : '''mondomaine.local'''
* Nom d'entité : '''mondomaine.local'''
* Mot de passe Administrateur : '''votre_password'''
* Vérifier le mot de passe Administrateur : '''votre_password'''
* Faut-il autoriser le protocole LDAP v2? '''Non'''
* Faut-il exécuter mandb avec l'utilisateur man? '''Non'''

=== Vérification du port 389 ===
Pour vérifier que le service écoute bien sur le port 389:
 root@openldap:~# nmap -p 389 localhost
''-p : port''

Vous devriez obtenir la ligne suivante : 
 389/tcp open ldap
=== Les fichiers LDIF ===
Les fichiers LDIF, acronyme de Lightweight Data Interchange Format sont des formats d'échanges permettant d'importer et exporter les données de l'annuaire LDAP.
Pour le générer:
 root@openldap:~# slapcat

=== Configurer le fichier /etc/ldap.conf ===
Indiquez votre propre domaine:

 BASE     dc=mondomaine,dc=local
 URI      ldap://openldap.mondomaine.local/

=== Configuration des fichiers LDIF et DIT ===
Créez un nouveau fichier:
 root@openldap:~# touch ~/olc-mod1.ldif
et y insérer les lignes suivantes:
 # 1.
 dn: cn=config
 changetype: modify
 replace: olcLogLevel
 olcLogLevel: stats
 # 2.1.
 dn: olcDatabase={1}hdb,cn=config
 changetype: modify
 add: olcDbIndex
 olcDbIndex: uid eq
 -
 # 2.2.
 add: olcDbIndex
 olcDbIndex: cn eq
 -
 # 2.3.
 add: olcDbIndex
 olcDbIndex: ou eq
 -
 # 2.4.
 add: olcDbIndex
 olcDbIndex: dc eq

Exécuter la commande suivante pour prendre ces modifications en compte : 
 root@openldap:~# ldapmodify -QY EXTERNAL -H ldapi:/// -f ~/olc-mod1.ldif

Créez le fichier qui va héberger la structure de l'arbre:
 root@openldap:~# touch ~/tree.ldif

Nous allons y insérer nos unités d'organisation.
=== Création des Organizational Unit (OU) ===

Dans le fichier ~/tree.ldif créé précédemment, nous allons créer deux OU:
* Utilisateurs
* Groupes
Nous verrons plus tard qu'il existe un moyen plus simple et plus rapide pour en créer de nouvelles.

Insérez le contenu suivant:
 dn: ou=Utilisateurs,dc=mondomaine,dc=local
 ou: Utilisateurs
 objectClass: organizationalUnit
 dn: ou=Groupes,dc=mondomaine,dc=local
 ou: Groupes
 objectClass: organizationalUnit

Les informations sont enregistrées, mais le fichier n'est pas encore lié à notre base LDAP. 
Pour ce faire, effectuez la commande suivante:
 root@openldap:~# ldapadd -cxWD cn=admin,dc=mondomaine,dc=local -f ~/tree.ldif
 Enter LDAP Password: **********
 adding new entry &quot;ou=Utilisateurs,dc=mondomaine,dc=local&quot;
 adding new entry &quot;ou=Groupes,dc=mondomaine,dc=local&quot;
 ~#

'''-c : permet de continuer l'opération même s'il rencontre des erreurs. Ces dernières seront reportées'''
'''-x : utilise une authentification simple'''
'''-W : affiche le prompt pour saisir le password'''
'''-D : spécifie le &quot;Dinstinguished Name&quot; qui va se connecter à notre base LDAP'''
'''-f : spécifie le nom du fichier contenant les informations à rajouter'''

Vérifiez ensuite que l'arborescence a bien été prise en compte: 
 root@openldap:~# ldapsearch -xLLL
 dn: dc=mondomaine,dc=local
 objectClass: top
 objectClass: dcObject
 objectClass: organization
 o: mondomaine.local
 dc: mondomaine
 dn: cn=admin,dc=mondomaine,dc=local
 objectClass: simpleSecurityObject
 objectClass: organizationalRole
 cn: admin
 description: LDAP administrator
 dn: ou=Utilisateurs,dc=mondomaine,dc=local
 ou: Utilisateurs
 objectClass: organizationalUnit
 dn: ou=Groupes,dc=mondomaine,dc=local
 ou: Groupes
 objectClass: organizationalUnit

'''-x : utiliser une authentification simple'''
'''-LLL : optimise l'affichage des informations en supprimant les commentaires et les versions'''

=== Création d'utilisateur(s) ===
Comme pour l'arborescence, nous allons créer un fichier ldif:
 root@openldap:~# touch ~/myuser.ldif
Je veux que mon utilisateur '''''myuser''''' soit placé dans l'OU Groupes.
Insérez les lignes suivantes à votre fichier ldif:
 dn: cn=myuser,ou=Groupes,dc=mondomaine,dc=local
 cn: myuser
 gidNumber: 20000
 objectClass: top
 objectClass: posixGroup
 dn: uid=myuser,ou=Utilisateurs,dc=mondomaine,dc=local
 uid: myuser
 uidNumber: 20000
 gidNumber: 20000
 cn: myuser
 sn: myuser
 objectClass: top
 objectClass: person
 objectClass: posixAccount
 objectClass: shadowAccount
 loginShell: /bin/bash
 homeDirectory: /home/myuser
 userPassword: myuser

Rajoutez ces informations dans la base LDAP:
 root@openldap:~# ldapadd -cxWD cn=admin,dc=mondomaine,dc=local -f ~/myuser.ldif
 Enter LDAP Password:
 adding new entry &quot;cn=myuser,ou=Groupes,dc=mondomaine,dc=local&quot;
 adding new entry &quot;uid=myuser,ou=Utilisateurs,dc=mondomaine,dc=local&quot;

Vérifiez que l'utilisateur a bien été créé:
 root@openldap:~# ldapsearch -xLLL uid=myuser
 dn: uid=myuser,ou=Utilisateurs,dc=mondomaine,dc=local
 uid: myuser
 uidNumber: 20000
 gidNumber: 20000
 cn: myuser
 sn: myuser
 objectClass: top
 objectClass: person
 objectClass: posixAccount
 objectClass: shadowAccount
 loginShell: /bin/bash
 homeDirectory: /home/myuser

== Administration avec phpldapadmin ==
Cette dernière permet une administration simplifiée au travers de n'importe quel navigateur. Pratique lorsque l'on n'est pas particulièrement à l'aise avec la ligne de commande.

 root@openldap:~# apt-get install phpldapadmin
* Adresse du serveur ldap : '''http://127.0.0.1'''
* Faut-il utiliser le TLS : '''non'''
* Nom distinctif de la base de données : '''dc=mondomaine,dc=local'''
* Type d'authentification : '''session'''
* Identifiants de connexion au serveur LDAP : '''cn=admin,dc=mondomaine,dc=local'''
* Serveyr à gérer : '''apache2'''
* Faut-il redémarrer le serveur web : '''oui'''

L'interface web est désormais accessible à l'URL : 
http://openldap.mondomaine.local</text>
      <sha1>6snodb6t3rsv1ugprpnwlzhq59bqfbv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4756</id>
      <parentid>4755</parentid>
      <timestamp>2012-11-16T10:42:54Z</timestamp>
      <contributor>
        <username>Chr0my</username>
        <id>222</id>
      </contributor>
      <comment>/* Qu'est-ce qu'OpenLDAP */</comment>
      <text xml:space="preserve" bytes="7546">
== Qu'est-ce qu'OpenLDAP ==
OpenLDAP est un annuaire Open Source basé sur le protocole LDAP (Lightweight Directory Access Protocol). 
Il répertorie les ressources présentes au sein de votre système d'information (comptes ordinateurs, comptes utilisateurs, groupes...) sous la forme d'une arborescence.

== Avertissement ==
L'installation décrite ici ne prend pas en compte la gestion du SSL.

== Pré-requis ==
Dans cette procédure, nous considérons plusieurs choses:

* Le nom du serveur est '''openldap'''
* Le nom de domaine utilisé est '''mondomaine.local'''
* Le système est fonctionnel, et à jour

Charge à vous de remplacer les différentes variable par vos propres informations.

'''Note:''' à partir de Debian Squeeze, la configuration d'OpenLDAP ne s'effectue plus au travers du fichier slapd.conf.

== Installation ==
=== Fichier /etc/hosts ===
Nous ne possédons pas de serveur DNS, nous utiliserons le fichier /etc/hosts.
Vérifier que ce dernier possède bien le FQDN du serveur:
 127.0.0.1       localhost
 127.0.1.1       openldap.mondomaine.local   openldap

=== Debconf ===
Debconf est un utilitaire graphique qui va nous permettre de renseigner divers options lors de l'installation des paquets. Afin que ce dernier nous propose plus de choix lors de l'installation d'OpenLDAP, nous allons diminuer son niveau.
root@openldap:~# dpkg-reconfigure debconf

'''Répondre:'''
* Dialogue
* Intermédiaire

=== Téléchargement des packages ===
 root@openldap:~# apt-get install slapd ldap-utils nmap apache2 -y

**''slapd : serveur LDAP''
**''ldap-utils : outils qui vont nous permettre d'agir sur le serveur''
**''nmap : Scanner de ports''
**''apache2 : serveur Web qui va héberger notre outil de gestion''

Une fenêtre debconf doit apparaître vous proposant les choix suivants:
* Voulez-vous omettre la configuration d'OpenLDAP? '''Non'''
* Nom de domaine : '''mondomaine.local'''
* Nom d'entité : '''mondomaine.local'''
* Mot de passe Administrateur : '''votre_password'''
* Vérifier le mot de passe Administrateur : '''votre_password'''
* Faut-il autoriser le protocole LDAP v2? '''Non'''
* Faut-il exécuter mandb avec l'utilisateur man? '''Non'''

=== Vérification du port 389 ===
Pour vérifier que le service écoute bien sur le port 389:
 root@openldap:~# nmap -p 389 localhost
''-p : port''

Vous devriez obtenir la ligne suivante : 
 389/tcp open ldap
=== Les fichiers LDIF ===
Les fichiers LDIF, acronyme de Lightweight Data Interchange Format sont des formats d'échanges permettant d'importer et exporter les données de l'annuaire LDAP.
Pour le générer:
 root@openldap:~# slapcat

=== Configurer le fichier /etc/ldap.conf ===
Indiquez votre propre domaine:

 BASE     dc=mondomaine,dc=local
 URI      ldap://openldap.mondomaine.local/

=== Configuration des fichiers LDIF et DIT ===
Créez un nouveau fichier:
 root@openldap:~# touch ~/olc-mod1.ldif
et y insérer les lignes suivantes:
 # 1.
 dn: cn=config
 changetype: modify
 replace: olcLogLevel
 olcLogLevel: stats
 # 2.1.
 dn: olcDatabase={1}hdb,cn=config
 changetype: modify
 add: olcDbIndex
 olcDbIndex: uid eq
 -
 # 2.2.
 add: olcDbIndex
 olcDbIndex: cn eq
 -
 # 2.3.
 add: olcDbIndex
 olcDbIndex: ou eq
 -
 # 2.4.
 add: olcDbIndex
 olcDbIndex: dc eq

Exécuter la commande suivante pour prendre ces modifications en compte : 
 root@openldap:~# ldapmodify -QY EXTERNAL -H ldapi:/// -f ~/olc-mod1.ldif

Créez le fichier qui va héberger la structure de l'arbre:
 root@openldap:~# touch ~/tree.ldif

Nous allons y insérer nos unités d'organisation.
=== Création des Organizational Unit (OU) ===

Dans le fichier ~/tree.ldif créé précédemment, nous allons créer deux OU:
* Utilisateurs
* Groupes
Nous verrons plus tard qu'il existe un moyen plus simple et plus rapide pour en créer de nouvelles.

Insérez le contenu suivant:
 dn: ou=Utilisateurs,dc=mondomaine,dc=local
 ou: Utilisateurs
 objectClass: organizationalUnit
 dn: ou=Groupes,dc=mondomaine,dc=local
 ou: Groupes
 objectClass: organizationalUnit

Les informations sont enregistrées, mais le fichier n'est pas encore lié à notre base LDAP. 
Pour ce faire, effectuez la commande suivante:
 root@openldap:~# ldapadd -cxWD cn=admin,dc=mondomaine,dc=local -f ~/tree.ldif
 Enter LDAP Password: **********
 adding new entry &quot;ou=Utilisateurs,dc=mondomaine,dc=local&quot;
 adding new entry &quot;ou=Groupes,dc=mondomaine,dc=local&quot;
 ~#

'''-c : permet de continuer l'opération même s'il rencontre des erreurs. Ces dernières seront reportées'''
'''-x : utilise une authentification simple'''
'''-W : affiche le prompt pour saisir le password'''
'''-D : spécifie le &quot;Dinstinguished Name&quot; qui va se connecter à notre base LDAP'''
'''-f : spécifie le nom du fichier contenant les informations à rajouter'''

Vérifiez ensuite que l'arborescence a bien été prise en compte: 
 root@openldap:~# ldapsearch -xLLL
 dn: dc=mondomaine,dc=local
 objectClass: top
 objectClass: dcObject
 objectClass: organization
 o: mondomaine.local
 dc: mondomaine
 dn: cn=admin,dc=mondomaine,dc=local
 objectClass: simpleSecurityObject
 objectClass: organizationalRole
 cn: admin
 description: LDAP administrator
 dn: ou=Utilisateurs,dc=mondomaine,dc=local
 ou: Utilisateurs
 objectClass: organizationalUnit
 dn: ou=Groupes,dc=mondomaine,dc=local
 ou: Groupes
 objectClass: organizationalUnit

'''-x : utiliser une authentification simple'''
'''-LLL : optimise l'affichage des informations en supprimant les commentaires et les versions'''

=== Création d'utilisateur(s) ===
Comme pour l'arborescence, nous allons créer un fichier ldif:
 root@openldap:~# touch ~/myuser.ldif
Je veux que mon utilisateur '''''myuser''''' soit placé dans l'OU Groupes.
Insérez les lignes suivantes à votre fichier ldif:
 dn: cn=myuser,ou=Groupes,dc=mondomaine,dc=local
 cn: myuser
 gidNumber: 20000
 objectClass: top
 objectClass: posixGroup
 dn: uid=myuser,ou=Utilisateurs,dc=mondomaine,dc=local
 uid: myuser
 uidNumber: 20000
 gidNumber: 20000
 cn: myuser
 sn: myuser
 objectClass: top
 objectClass: person
 objectClass: posixAccount
 objectClass: shadowAccount
 loginShell: /bin/bash
 homeDirectory: /home/myuser
 userPassword: myuser

Rajoutez ces informations dans la base LDAP:
 root@openldap:~# ldapadd -cxWD cn=admin,dc=mondomaine,dc=local -f ~/myuser.ldif
 Enter LDAP Password:
 adding new entry &quot;cn=myuser,ou=Groupes,dc=mondomaine,dc=local&quot;
 adding new entry &quot;uid=myuser,ou=Utilisateurs,dc=mondomaine,dc=local&quot;

Vérifiez que l'utilisateur a bien été créé:
 root@openldap:~# ldapsearch -xLLL uid=myuser
 dn: uid=myuser,ou=Utilisateurs,dc=mondomaine,dc=local
 uid: myuser
 uidNumber: 20000
 gidNumber: 20000
 cn: myuser
 sn: myuser
 objectClass: top
 objectClass: person
 objectClass: posixAccount
 objectClass: shadowAccount
 loginShell: /bin/bash
 homeDirectory: /home/myuser

== Administration avec phpldapadmin ==
Cette dernière permet une administration simplifiée au travers de n'importe quel navigateur. Pratique lorsque l'on n'est pas particulièrement à l'aise avec la ligne de commande.

 root@openldap:~# apt-get install phpldapadmin
* Adresse du serveur ldap : '''http://127.0.0.1'''
* Faut-il utiliser le TLS : '''non'''
* Nom distinctif de la base de données : '''dc=mondomaine,dc=local'''
* Type d'authentification : '''session'''
* Identifiants de connexion au serveur LDAP : '''cn=admin,dc=mondomaine,dc=local'''
* Serveyr à gérer : '''apache2'''
* Faut-il redémarrer le serveur web : '''oui'''

L'interface web est désormais accessible à l'URL : 
http://openldap.mondomaine.local</text>
      <sha1>s3bhawcia7cq8q9ndcz5hqe1e5td083</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4757</id>
      <parentid>4756</parentid>
      <timestamp>2012-11-16T10:43:15Z</timestamp>
      <contributor>
        <username>Chr0my</username>
        <id>222</id>
      </contributor>
      <comment>/* Avertissement */</comment>
      <text xml:space="preserve" bytes="7546">
== Qu'est-ce qu'OpenLDAP ==
OpenLDAP est un annuaire Open Source basé sur le protocole LDAP (Lightweight Directory Access Protocol). 
Il répertorie les ressources présentes au sein de votre système d'information (comptes ordinateurs, comptes utilisateurs, groupes...) sous la forme d'une arborescence.

== Avertissement ==
L'installation décrite ici ne prend pas en compte la gestion du TLS.

== Pré-requis ==
Dans cette procédure, nous considérons plusieurs choses:

* Le nom du serveur est '''openldap'''
* Le nom de domaine utilisé est '''mondomaine.local'''
* Le système est fonctionnel, et à jour

Charge à vous de remplacer les différentes variable par vos propres informations.

'''Note:''' à partir de Debian Squeeze, la configuration d'OpenLDAP ne s'effectue plus au travers du fichier slapd.conf.

== Installation ==
=== Fichier /etc/hosts ===
Nous ne possédons pas de serveur DNS, nous utiliserons le fichier /etc/hosts.
Vérifier que ce dernier possède bien le FQDN du serveur:
 127.0.0.1       localhost
 127.0.1.1       openldap.mondomaine.local   openldap

=== Debconf ===
Debconf est un utilitaire graphique qui va nous permettre de renseigner divers options lors de l'installation des paquets. Afin que ce dernier nous propose plus de choix lors de l'installation d'OpenLDAP, nous allons diminuer son niveau.
root@openldap:~# dpkg-reconfigure debconf

'''Répondre:'''
* Dialogue
* Intermédiaire

=== Téléchargement des packages ===
 root@openldap:~# apt-get install slapd ldap-utils nmap apache2 -y

**''slapd : serveur LDAP''
**''ldap-utils : outils qui vont nous permettre d'agir sur le serveur''
**''nmap : Scanner de ports''
**''apache2 : serveur Web qui va héberger notre outil de gestion''

Une fenêtre debconf doit apparaître vous proposant les choix suivants:
* Voulez-vous omettre la configuration d'OpenLDAP? '''Non'''
* Nom de domaine : '''mondomaine.local'''
* Nom d'entité : '''mondomaine.local'''
* Mot de passe Administrateur : '''votre_password'''
* Vérifier le mot de passe Administrateur : '''votre_password'''
* Faut-il autoriser le protocole LDAP v2? '''Non'''
* Faut-il exécuter mandb avec l'utilisateur man? '''Non'''

=== Vérification du port 389 ===
Pour vérifier que le service écoute bien sur le port 389:
 root@openldap:~# nmap -p 389 localhost
''-p : port''

Vous devriez obtenir la ligne suivante : 
 389/tcp open ldap
=== Les fichiers LDIF ===
Les fichiers LDIF, acronyme de Lightweight Data Interchange Format sont des formats d'échanges permettant d'importer et exporter les données de l'annuaire LDAP.
Pour le générer:
 root@openldap:~# slapcat

=== Configurer le fichier /etc/ldap.conf ===
Indiquez votre propre domaine:

 BASE     dc=mondomaine,dc=local
 URI      ldap://openldap.mondomaine.local/

=== Configuration des fichiers LDIF et DIT ===
Créez un nouveau fichier:
 root@openldap:~# touch ~/olc-mod1.ldif
et y insérer les lignes suivantes:
 # 1.
 dn: cn=config
 changetype: modify
 replace: olcLogLevel
 olcLogLevel: stats
 # 2.1.
 dn: olcDatabase={1}hdb,cn=config
 changetype: modify
 add: olcDbIndex
 olcDbIndex: uid eq
 -
 # 2.2.
 add: olcDbIndex
 olcDbIndex: cn eq
 -
 # 2.3.
 add: olcDbIndex
 olcDbIndex: ou eq
 -
 # 2.4.
 add: olcDbIndex
 olcDbIndex: dc eq

Exécuter la commande suivante pour prendre ces modifications en compte : 
 root@openldap:~# ldapmodify -QY EXTERNAL -H ldapi:/// -f ~/olc-mod1.ldif

Créez le fichier qui va héberger la structure de l'arbre:
 root@openldap:~# touch ~/tree.ldif

Nous allons y insérer nos unités d'organisation.
=== Création des Organizational Unit (OU) ===

Dans le fichier ~/tree.ldif créé précédemment, nous allons créer deux OU:
* Utilisateurs
* Groupes
Nous verrons plus tard qu'il existe un moyen plus simple et plus rapide pour en créer de nouvelles.

Insérez le contenu suivant:
 dn: ou=Utilisateurs,dc=mondomaine,dc=local
 ou: Utilisateurs
 objectClass: organizationalUnit
 dn: ou=Groupes,dc=mondomaine,dc=local
 ou: Groupes
 objectClass: organizationalUnit

Les informations sont enregistrées, mais le fichier n'est pas encore lié à notre base LDAP. 
Pour ce faire, effectuez la commande suivante:
 root@openldap:~# ldapadd -cxWD cn=admin,dc=mondomaine,dc=local -f ~/tree.ldif
 Enter LDAP Password: **********
 adding new entry &quot;ou=Utilisateurs,dc=mondomaine,dc=local&quot;
 adding new entry &quot;ou=Groupes,dc=mondomaine,dc=local&quot;
 ~#

'''-c : permet de continuer l'opération même s'il rencontre des erreurs. Ces dernières seront reportées'''
'''-x : utilise une authentification simple'''
'''-W : affiche le prompt pour saisir le password'''
'''-D : spécifie le &quot;Dinstinguished Name&quot; qui va se connecter à notre base LDAP'''
'''-f : spécifie le nom du fichier contenant les informations à rajouter'''

Vérifiez ensuite que l'arborescence a bien été prise en compte: 
 root@openldap:~# ldapsearch -xLLL
 dn: dc=mondomaine,dc=local
 objectClass: top
 objectClass: dcObject
 objectClass: organization
 o: mondomaine.local
 dc: mondomaine
 dn: cn=admin,dc=mondomaine,dc=local
 objectClass: simpleSecurityObject
 objectClass: organizationalRole
 cn: admin
 description: LDAP administrator
 dn: ou=Utilisateurs,dc=mondomaine,dc=local
 ou: Utilisateurs
 objectClass: organizationalUnit
 dn: ou=Groupes,dc=mondomaine,dc=local
 ou: Groupes
 objectClass: organizationalUnit

'''-x : utiliser une authentification simple'''
'''-LLL : optimise l'affichage des informations en supprimant les commentaires et les versions'''

=== Création d'utilisateur(s) ===
Comme pour l'arborescence, nous allons créer un fichier ldif:
 root@openldap:~# touch ~/myuser.ldif
Je veux que mon utilisateur '''''myuser''''' soit placé dans l'OU Groupes.
Insérez les lignes suivantes à votre fichier ldif:
 dn: cn=myuser,ou=Groupes,dc=mondomaine,dc=local
 cn: myuser
 gidNumber: 20000
 objectClass: top
 objectClass: posixGroup
 dn: uid=myuser,ou=Utilisateurs,dc=mondomaine,dc=local
 uid: myuser
 uidNumber: 20000
 gidNumber: 20000
 cn: myuser
 sn: myuser
 objectClass: top
 objectClass: person
 objectClass: posixAccount
 objectClass: shadowAccount
 loginShell: /bin/bash
 homeDirectory: /home/myuser
 userPassword: myuser

Rajoutez ces informations dans la base LDAP:
 root@openldap:~# ldapadd -cxWD cn=admin,dc=mondomaine,dc=local -f ~/myuser.ldif
 Enter LDAP Password:
 adding new entry &quot;cn=myuser,ou=Groupes,dc=mondomaine,dc=local&quot;
 adding new entry &quot;uid=myuser,ou=Utilisateurs,dc=mondomaine,dc=local&quot;

Vérifiez que l'utilisateur a bien été créé:
 root@openldap:~# ldapsearch -xLLL uid=myuser
 dn: uid=myuser,ou=Utilisateurs,dc=mondomaine,dc=local
 uid: myuser
 uidNumber: 20000
 gidNumber: 20000
 cn: myuser
 sn: myuser
 objectClass: top
 objectClass: person
 objectClass: posixAccount
 objectClass: shadowAccount
 loginShell: /bin/bash
 homeDirectory: /home/myuser

== Administration avec phpldapadmin ==
Cette dernière permet une administration simplifiée au travers de n'importe quel navigateur. Pratique lorsque l'on n'est pas particulièrement à l'aise avec la ligne de commande.

 root@openldap:~# apt-get install phpldapadmin
* Adresse du serveur ldap : '''http://127.0.0.1'''
* Faut-il utiliser le TLS : '''non'''
* Nom distinctif de la base de données : '''dc=mondomaine,dc=local'''
* Type d'authentification : '''session'''
* Identifiants de connexion au serveur LDAP : '''cn=admin,dc=mondomaine,dc=local'''
* Serveyr à gérer : '''apache2'''
* Faut-il redémarrer le serveur web : '''oui'''

L'interface web est désormais accessible à l'URL : 
http://openldap.mondomaine.local</text>
      <sha1>650xgx4o5q89o15s6xldtxx6s6opnyh</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4758</id>
      <parentid>4757</parentid>
      <timestamp>2012-11-16T10:43:41Z</timestamp>
      <contributor>
        <username>Chr0my</username>
        <id>222</id>
      </contributor>
      <comment>/* Fichier /etc/hosts */</comment>
      <text xml:space="preserve" bytes="7551">
== Qu'est-ce qu'OpenLDAP ==
OpenLDAP est un annuaire Open Source basé sur le protocole LDAP (Lightweight Directory Access Protocol). 
Il répertorie les ressources présentes au sein de votre système d'information (comptes ordinateurs, comptes utilisateurs, groupes...) sous la forme d'une arborescence.

== Avertissement ==
L'installation décrite ici ne prend pas en compte la gestion du TLS.

== Pré-requis ==
Dans cette procédure, nous considérons plusieurs choses:

* Le nom du serveur est '''openldap'''
* Le nom de domaine utilisé est '''mondomaine.local'''
* Le système est fonctionnel, et à jour

Charge à vous de remplacer les différentes variable par vos propres informations.

'''Note:''' à partir de Debian Squeeze, la configuration d'OpenLDAP ne s'effectue plus au travers du fichier slapd.conf.

== Installation ==
=== Fichier /etc/hosts ===
Nous ne possédons pas de serveur DNS, nous utiliserons donc le fichier /etc/hosts.
Vérifier que ce dernier possède bien le FQDN du serveur:
 127.0.0.1       localhost
 127.0.1.1       openldap.mondomaine.local   openldap

=== Debconf ===
Debconf est un utilitaire graphique qui va nous permettre de renseigner divers options lors de l'installation des paquets. Afin que ce dernier nous propose plus de choix lors de l'installation d'OpenLDAP, nous allons diminuer son niveau.
root@openldap:~# dpkg-reconfigure debconf

'''Répondre:'''
* Dialogue
* Intermédiaire

=== Téléchargement des packages ===
 root@openldap:~# apt-get install slapd ldap-utils nmap apache2 -y

**''slapd : serveur LDAP''
**''ldap-utils : outils qui vont nous permettre d'agir sur le serveur''
**''nmap : Scanner de ports''
**''apache2 : serveur Web qui va héberger notre outil de gestion''

Une fenêtre debconf doit apparaître vous proposant les choix suivants:
* Voulez-vous omettre la configuration d'OpenLDAP? '''Non'''
* Nom de domaine : '''mondomaine.local'''
* Nom d'entité : '''mondomaine.local'''
* Mot de passe Administrateur : '''votre_password'''
* Vérifier le mot de passe Administrateur : '''votre_password'''
* Faut-il autoriser le protocole LDAP v2? '''Non'''
* Faut-il exécuter mandb avec l'utilisateur man? '''Non'''

=== Vérification du port 389 ===
Pour vérifier que le service écoute bien sur le port 389:
 root@openldap:~# nmap -p 389 localhost
''-p : port''

Vous devriez obtenir la ligne suivante : 
 389/tcp open ldap
=== Les fichiers LDIF ===
Les fichiers LDIF, acronyme de Lightweight Data Interchange Format sont des formats d'échanges permettant d'importer et exporter les données de l'annuaire LDAP.
Pour le générer:
 root@openldap:~# slapcat

=== Configurer le fichier /etc/ldap.conf ===
Indiquez votre propre domaine:

 BASE     dc=mondomaine,dc=local
 URI      ldap://openldap.mondomaine.local/

=== Configuration des fichiers LDIF et DIT ===
Créez un nouveau fichier:
 root@openldap:~# touch ~/olc-mod1.ldif
et y insérer les lignes suivantes:
 # 1.
 dn: cn=config
 changetype: modify
 replace: olcLogLevel
 olcLogLevel: stats
 # 2.1.
 dn: olcDatabase={1}hdb,cn=config
 changetype: modify
 add: olcDbIndex
 olcDbIndex: uid eq
 -
 # 2.2.
 add: olcDbIndex
 olcDbIndex: cn eq
 -
 # 2.3.
 add: olcDbIndex
 olcDbIndex: ou eq
 -
 # 2.4.
 add: olcDbIndex
 olcDbIndex: dc eq

Exécuter la commande suivante pour prendre ces modifications en compte : 
 root@openldap:~# ldapmodify -QY EXTERNAL -H ldapi:/// -f ~/olc-mod1.ldif

Créez le fichier qui va héberger la structure de l'arbre:
 root@openldap:~# touch ~/tree.ldif

Nous allons y insérer nos unités d'organisation.
=== Création des Organizational Unit (OU) ===

Dans le fichier ~/tree.ldif créé précédemment, nous allons créer deux OU:
* Utilisateurs
* Groupes
Nous verrons plus tard qu'il existe un moyen plus simple et plus rapide pour en créer de nouvelles.

Insérez le contenu suivant:
 dn: ou=Utilisateurs,dc=mondomaine,dc=local
 ou: Utilisateurs
 objectClass: organizationalUnit
 dn: ou=Groupes,dc=mondomaine,dc=local
 ou: Groupes
 objectClass: organizationalUnit

Les informations sont enregistrées, mais le fichier n'est pas encore lié à notre base LDAP. 
Pour ce faire, effectuez la commande suivante:
 root@openldap:~# ldapadd -cxWD cn=admin,dc=mondomaine,dc=local -f ~/tree.ldif
 Enter LDAP Password: **********
 adding new entry &quot;ou=Utilisateurs,dc=mondomaine,dc=local&quot;
 adding new entry &quot;ou=Groupes,dc=mondomaine,dc=local&quot;
 ~#

'''-c : permet de continuer l'opération même s'il rencontre des erreurs. Ces dernières seront reportées'''
'''-x : utilise une authentification simple'''
'''-W : affiche le prompt pour saisir le password'''
'''-D : spécifie le &quot;Dinstinguished Name&quot; qui va se connecter à notre base LDAP'''
'''-f : spécifie le nom du fichier contenant les informations à rajouter'''

Vérifiez ensuite que l'arborescence a bien été prise en compte: 
 root@openldap:~# ldapsearch -xLLL
 dn: dc=mondomaine,dc=local
 objectClass: top
 objectClass: dcObject
 objectClass: organization
 o: mondomaine.local
 dc: mondomaine
 dn: cn=admin,dc=mondomaine,dc=local
 objectClass: simpleSecurityObject
 objectClass: organizationalRole
 cn: admin
 description: LDAP administrator
 dn: ou=Utilisateurs,dc=mondomaine,dc=local
 ou: Utilisateurs
 objectClass: organizationalUnit
 dn: ou=Groupes,dc=mondomaine,dc=local
 ou: Groupes
 objectClass: organizationalUnit

'''-x : utiliser une authentification simple'''
'''-LLL : optimise l'affichage des informations en supprimant les commentaires et les versions'''

=== Création d'utilisateur(s) ===
Comme pour l'arborescence, nous allons créer un fichier ldif:
 root@openldap:~# touch ~/myuser.ldif
Je veux que mon utilisateur '''''myuser''''' soit placé dans l'OU Groupes.
Insérez les lignes suivantes à votre fichier ldif:
 dn: cn=myuser,ou=Groupes,dc=mondomaine,dc=local
 cn: myuser
 gidNumber: 20000
 objectClass: top
 objectClass: posixGroup
 dn: uid=myuser,ou=Utilisateurs,dc=mondomaine,dc=local
 uid: myuser
 uidNumber: 20000
 gidNumber: 20000
 cn: myuser
 sn: myuser
 objectClass: top
 objectClass: person
 objectClass: posixAccount
 objectClass: shadowAccount
 loginShell: /bin/bash
 homeDirectory: /home/myuser
 userPassword: myuser

Rajoutez ces informations dans la base LDAP:
 root@openldap:~# ldapadd -cxWD cn=admin,dc=mondomaine,dc=local -f ~/myuser.ldif
 Enter LDAP Password:
 adding new entry &quot;cn=myuser,ou=Groupes,dc=mondomaine,dc=local&quot;
 adding new entry &quot;uid=myuser,ou=Utilisateurs,dc=mondomaine,dc=local&quot;

Vérifiez que l'utilisateur a bien été créé:
 root@openldap:~# ldapsearch -xLLL uid=myuser
 dn: uid=myuser,ou=Utilisateurs,dc=mondomaine,dc=local
 uid: myuser
 uidNumber: 20000
 gidNumber: 20000
 cn: myuser
 sn: myuser
 objectClass: top
 objectClass: person
 objectClass: posixAccount
 objectClass: shadowAccount
 loginShell: /bin/bash
 homeDirectory: /home/myuser

== Administration avec phpldapadmin ==
Cette dernière permet une administration simplifiée au travers de n'importe quel navigateur. Pratique lorsque l'on n'est pas particulièrement à l'aise avec la ligne de commande.

 root@openldap:~# apt-get install phpldapadmin
* Adresse du serveur ldap : '''http://127.0.0.1'''
* Faut-il utiliser le TLS : '''non'''
* Nom distinctif de la base de données : '''dc=mondomaine,dc=local'''
* Type d'authentification : '''session'''
* Identifiants de connexion au serveur LDAP : '''cn=admin,dc=mondomaine,dc=local'''
* Serveyr à gérer : '''apache2'''
* Faut-il redémarrer le serveur web : '''oui'''

L'interface web est désormais accessible à l'URL : 
http://openldap.mondomaine.local</text>
      <sha1>1r1kfbppj0u6d49eqyh1afqk6qex0a9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4759</id>
      <parentid>4758</parentid>
      <timestamp>2012-11-16T10:44:03Z</timestamp>
      <contributor>
        <username>Chr0my</username>
        <id>222</id>
      </contributor>
      <comment>/* Debconf */</comment>
      <text xml:space="preserve" bytes="7553">
== Qu'est-ce qu'OpenLDAP ==
OpenLDAP est un annuaire Open Source basé sur le protocole LDAP (Lightweight Directory Access Protocol). 
Il répertorie les ressources présentes au sein de votre système d'information (comptes ordinateurs, comptes utilisateurs, groupes...) sous la forme d'une arborescence.

== Avertissement ==
L'installation décrite ici ne prend pas en compte la gestion du TLS.

== Pré-requis ==
Dans cette procédure, nous considérons plusieurs choses:

* Le nom du serveur est '''openldap'''
* Le nom de domaine utilisé est '''mondomaine.local'''
* Le système est fonctionnel, et à jour

Charge à vous de remplacer les différentes variable par vos propres informations.

'''Note:''' à partir de Debian Squeeze, la configuration d'OpenLDAP ne s'effectue plus au travers du fichier slapd.conf.

== Installation ==
=== Fichier /etc/hosts ===
Nous ne possédons pas de serveur DNS, nous utiliserons donc le fichier /etc/hosts.
Vérifier que ce dernier possède bien le FQDN du serveur:
 127.0.0.1       localhost
 127.0.1.1       openldap.mondomaine.local   openldap

=== Debconf ===
Debconf est un utilitaire graphique qui va nous permettre de renseigner diverses options lors de l'installation des paquets. Afin que ce dernier nous propose plus de choix lors de l'installation d'OpenLDAP, nous allons diminuer son niveau.
root@openldap:~# dpkg-reconfigure debconf

'''Répondre:'''
* Dialogue
* Intermédiaire

=== Téléchargement des packages ===
 root@openldap:~# apt-get install slapd ldap-utils nmap apache2 -y

**''slapd : serveur LDAP''
**''ldap-utils : outils qui vont nous permettre d'agir sur le serveur''
**''nmap : Scanner de ports''
**''apache2 : serveur Web qui va héberger notre outil de gestion''

Une fenêtre debconf doit apparaître vous proposant les choix suivants:
* Voulez-vous omettre la configuration d'OpenLDAP? '''Non'''
* Nom de domaine : '''mondomaine.local'''
* Nom d'entité : '''mondomaine.local'''
* Mot de passe Administrateur : '''votre_password'''
* Vérifier le mot de passe Administrateur : '''votre_password'''
* Faut-il autoriser le protocole LDAP v2? '''Non'''
* Faut-il exécuter mandb avec l'utilisateur man? '''Non'''

=== Vérification du port 389 ===
Pour vérifier que le service écoute bien sur le port 389:
 root@openldap:~# nmap -p 389 localhost
''-p : port''

Vous devriez obtenir la ligne suivante : 
 389/tcp open ldap
=== Les fichiers LDIF ===
Les fichiers LDIF, acronyme de Lightweight Data Interchange Format sont des formats d'échanges permettant d'importer et exporter les données de l'annuaire LDAP.
Pour le générer:
 root@openldap:~# slapcat

=== Configurer le fichier /etc/ldap.conf ===
Indiquez votre propre domaine:

 BASE     dc=mondomaine,dc=local
 URI      ldap://openldap.mondomaine.local/

=== Configuration des fichiers LDIF et DIT ===
Créez un nouveau fichier:
 root@openldap:~# touch ~/olc-mod1.ldif
et y insérer les lignes suivantes:
 # 1.
 dn: cn=config
 changetype: modify
 replace: olcLogLevel
 olcLogLevel: stats
 # 2.1.
 dn: olcDatabase={1}hdb,cn=config
 changetype: modify
 add: olcDbIndex
 olcDbIndex: uid eq
 -
 # 2.2.
 add: olcDbIndex
 olcDbIndex: cn eq
 -
 # 2.3.
 add: olcDbIndex
 olcDbIndex: ou eq
 -
 # 2.4.
 add: olcDbIndex
 olcDbIndex: dc eq

Exécuter la commande suivante pour prendre ces modifications en compte : 
 root@openldap:~# ldapmodify -QY EXTERNAL -H ldapi:/// -f ~/olc-mod1.ldif

Créez le fichier qui va héberger la structure de l'arbre:
 root@openldap:~# touch ~/tree.ldif

Nous allons y insérer nos unités d'organisation.
=== Création des Organizational Unit (OU) ===

Dans le fichier ~/tree.ldif créé précédemment, nous allons créer deux OU:
* Utilisateurs
* Groupes
Nous verrons plus tard qu'il existe un moyen plus simple et plus rapide pour en créer de nouvelles.

Insérez le contenu suivant:
 dn: ou=Utilisateurs,dc=mondomaine,dc=local
 ou: Utilisateurs
 objectClass: organizationalUnit
 dn: ou=Groupes,dc=mondomaine,dc=local
 ou: Groupes
 objectClass: organizationalUnit

Les informations sont enregistrées, mais le fichier n'est pas encore lié à notre base LDAP. 
Pour ce faire, effectuez la commande suivante:
 root@openldap:~# ldapadd -cxWD cn=admin,dc=mondomaine,dc=local -f ~/tree.ldif
 Enter LDAP Password: **********
 adding new entry &quot;ou=Utilisateurs,dc=mondomaine,dc=local&quot;
 adding new entry &quot;ou=Groupes,dc=mondomaine,dc=local&quot;
 ~#

'''-c : permet de continuer l'opération même s'il rencontre des erreurs. Ces dernières seront reportées'''
'''-x : utilise une authentification simple'''
'''-W : affiche le prompt pour saisir le password'''
'''-D : spécifie le &quot;Dinstinguished Name&quot; qui va se connecter à notre base LDAP'''
'''-f : spécifie le nom du fichier contenant les informations à rajouter'''

Vérifiez ensuite que l'arborescence a bien été prise en compte: 
 root@openldap:~# ldapsearch -xLLL
 dn: dc=mondomaine,dc=local
 objectClass: top
 objectClass: dcObject
 objectClass: organization
 o: mondomaine.local
 dc: mondomaine
 dn: cn=admin,dc=mondomaine,dc=local
 objectClass: simpleSecurityObject
 objectClass: organizationalRole
 cn: admin
 description: LDAP administrator
 dn: ou=Utilisateurs,dc=mondomaine,dc=local
 ou: Utilisateurs
 objectClass: organizationalUnit
 dn: ou=Groupes,dc=mondomaine,dc=local
 ou: Groupes
 objectClass: organizationalUnit

'''-x : utiliser une authentification simple'''
'''-LLL : optimise l'affichage des informations en supprimant les commentaires et les versions'''

=== Création d'utilisateur(s) ===
Comme pour l'arborescence, nous allons créer un fichier ldif:
 root@openldap:~# touch ~/myuser.ldif
Je veux que mon utilisateur '''''myuser''''' soit placé dans l'OU Groupes.
Insérez les lignes suivantes à votre fichier ldif:
 dn: cn=myuser,ou=Groupes,dc=mondomaine,dc=local
 cn: myuser
 gidNumber: 20000
 objectClass: top
 objectClass: posixGroup
 dn: uid=myuser,ou=Utilisateurs,dc=mondomaine,dc=local
 uid: myuser
 uidNumber: 20000
 gidNumber: 20000
 cn: myuser
 sn: myuser
 objectClass: top
 objectClass: person
 objectClass: posixAccount
 objectClass: shadowAccount
 loginShell: /bin/bash
 homeDirectory: /home/myuser
 userPassword: myuser

Rajoutez ces informations dans la base LDAP:
 root@openldap:~# ldapadd -cxWD cn=admin,dc=mondomaine,dc=local -f ~/myuser.ldif
 Enter LDAP Password:
 adding new entry &quot;cn=myuser,ou=Groupes,dc=mondomaine,dc=local&quot;
 adding new entry &quot;uid=myuser,ou=Utilisateurs,dc=mondomaine,dc=local&quot;

Vérifiez que l'utilisateur a bien été créé:
 root@openldap:~# ldapsearch -xLLL uid=myuser
 dn: uid=myuser,ou=Utilisateurs,dc=mondomaine,dc=local
 uid: myuser
 uidNumber: 20000
 gidNumber: 20000
 cn: myuser
 sn: myuser
 objectClass: top
 objectClass: person
 objectClass: posixAccount
 objectClass: shadowAccount
 loginShell: /bin/bash
 homeDirectory: /home/myuser

== Administration avec phpldapadmin ==
Cette dernière permet une administration simplifiée au travers de n'importe quel navigateur. Pratique lorsque l'on n'est pas particulièrement à l'aise avec la ligne de commande.

 root@openldap:~# apt-get install phpldapadmin
* Adresse du serveur ldap : '''http://127.0.0.1'''
* Faut-il utiliser le TLS : '''non'''
* Nom distinctif de la base de données : '''dc=mondomaine,dc=local'''
* Type d'authentification : '''session'''
* Identifiants de connexion au serveur LDAP : '''cn=admin,dc=mondomaine,dc=local'''
* Serveyr à gérer : '''apache2'''
* Faut-il redémarrer le serveur web : '''oui'''

L'interface web est désormais accessible à l'URL : 
http://openldap.mondomaine.local</text>
      <sha1>0fst5t0ea6pxoyzxibvcg85jcq22d6d</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4760</id>
      <parentid>4759</parentid>
      <timestamp>2012-11-16T10:45:07Z</timestamp>
      <contributor>
        <username>Chr0my</username>
        <id>222</id>
      </contributor>
      <comment>/* Téléchargement des packages */</comment>
      <text xml:space="preserve" bytes="7549">
== Qu'est-ce qu'OpenLDAP ==
OpenLDAP est un annuaire Open Source basé sur le protocole LDAP (Lightweight Directory Access Protocol). 
Il répertorie les ressources présentes au sein de votre système d'information (comptes ordinateurs, comptes utilisateurs, groupes...) sous la forme d'une arborescence.

== Avertissement ==
L'installation décrite ici ne prend pas en compte la gestion du TLS.

== Pré-requis ==
Dans cette procédure, nous considérons plusieurs choses:

* Le nom du serveur est '''openldap'''
* Le nom de domaine utilisé est '''mondomaine.local'''
* Le système est fonctionnel, et à jour

Charge à vous de remplacer les différentes variable par vos propres informations.

'''Note:''' à partir de Debian Squeeze, la configuration d'OpenLDAP ne s'effectue plus au travers du fichier slapd.conf.

== Installation ==
=== Fichier /etc/hosts ===
Nous ne possédons pas de serveur DNS, nous utiliserons donc le fichier /etc/hosts.
Vérifier que ce dernier possède bien le FQDN du serveur:
 127.0.0.1       localhost
 127.0.1.1       openldap.mondomaine.local   openldap

=== Debconf ===
Debconf est un utilitaire graphique qui va nous permettre de renseigner diverses options lors de l'installation des paquets. Afin que ce dernier nous propose plus de choix lors de l'installation d'OpenLDAP, nous allons diminuer son niveau.
root@openldap:~# dpkg-reconfigure debconf

'''Répondre:'''
* Dialogue
* Intermédiaire

=== Téléchargement des packages ===
 root@openldap:~# apt-get install slapd ldap-utils nmap apache2 -y

*''slapd : serveur LDAP''
*''ldap-utils : outils qui vont nous permettre d'agir sur le serveur''
*''nmap : scanner de ports''
*''apache2 : serveur Web qui va héberger notre outil de gestion''

Une fenêtre debconf doit apparaître vous proposant les choix suivants:
* Voulez-vous omettre la configuration d'OpenLDAP? '''Non'''
* Nom de domaine : '''mondomaine.local'''
* Nom d'entité : '''mondomaine.local'''
* Mot de passe Administrateur : '''votre_password'''
* Vérifier le mot de passe Administrateur : '''votre_password'''
* Faut-il autoriser le protocole LDAP v2? '''Non'''
* Faut-il exécuter mandb avec l'utilisateur man? '''Non'''

=== Vérification du port 389 ===
Pour vérifier que le service écoute bien sur le port 389:
 root@openldap:~# nmap -p 389 localhost
''-p : port''

Vous devriez obtenir la ligne suivante : 
 389/tcp open ldap
=== Les fichiers LDIF ===
Les fichiers LDIF, acronyme de Lightweight Data Interchange Format sont des formats d'échanges permettant d'importer et exporter les données de l'annuaire LDAP.
Pour le générer:
 root@openldap:~# slapcat

=== Configurer le fichier /etc/ldap.conf ===
Indiquez votre propre domaine:

 BASE     dc=mondomaine,dc=local
 URI      ldap://openldap.mondomaine.local/

=== Configuration des fichiers LDIF et DIT ===
Créez un nouveau fichier:
 root@openldap:~# touch ~/olc-mod1.ldif
et y insérer les lignes suivantes:
 # 1.
 dn: cn=config
 changetype: modify
 replace: olcLogLevel
 olcLogLevel: stats
 # 2.1.
 dn: olcDatabase={1}hdb,cn=config
 changetype: modify
 add: olcDbIndex
 olcDbIndex: uid eq
 -
 # 2.2.
 add: olcDbIndex
 olcDbIndex: cn eq
 -
 # 2.3.
 add: olcDbIndex
 olcDbIndex: ou eq
 -
 # 2.4.
 add: olcDbIndex
 olcDbIndex: dc eq

Exécuter la commande suivante pour prendre ces modifications en compte : 
 root@openldap:~# ldapmodify -QY EXTERNAL -H ldapi:/// -f ~/olc-mod1.ldif

Créez le fichier qui va héberger la structure de l'arbre:
 root@openldap:~# touch ~/tree.ldif

Nous allons y insérer nos unités d'organisation.
=== Création des Organizational Unit (OU) ===

Dans le fichier ~/tree.ldif créé précédemment, nous allons créer deux OU:
* Utilisateurs
* Groupes
Nous verrons plus tard qu'il existe un moyen plus simple et plus rapide pour en créer de nouvelles.

Insérez le contenu suivant:
 dn: ou=Utilisateurs,dc=mondomaine,dc=local
 ou: Utilisateurs
 objectClass: organizationalUnit
 dn: ou=Groupes,dc=mondomaine,dc=local
 ou: Groupes
 objectClass: organizationalUnit

Les informations sont enregistrées, mais le fichier n'est pas encore lié à notre base LDAP. 
Pour ce faire, effectuez la commande suivante:
 root@openldap:~# ldapadd -cxWD cn=admin,dc=mondomaine,dc=local -f ~/tree.ldif
 Enter LDAP Password: **********
 adding new entry &quot;ou=Utilisateurs,dc=mondomaine,dc=local&quot;
 adding new entry &quot;ou=Groupes,dc=mondomaine,dc=local&quot;
 ~#

'''-c : permet de continuer l'opération même s'il rencontre des erreurs. Ces dernières seront reportées'''
'''-x : utilise une authentification simple'''
'''-W : affiche le prompt pour saisir le password'''
'''-D : spécifie le &quot;Dinstinguished Name&quot; qui va se connecter à notre base LDAP'''
'''-f : spécifie le nom du fichier contenant les informations à rajouter'''

Vérifiez ensuite que l'arborescence a bien été prise en compte: 
 root@openldap:~# ldapsearch -xLLL
 dn: dc=mondomaine,dc=local
 objectClass: top
 objectClass: dcObject
 objectClass: organization
 o: mondomaine.local
 dc: mondomaine
 dn: cn=admin,dc=mondomaine,dc=local
 objectClass: simpleSecurityObject
 objectClass: organizationalRole
 cn: admin
 description: LDAP administrator
 dn: ou=Utilisateurs,dc=mondomaine,dc=local
 ou: Utilisateurs
 objectClass: organizationalUnit
 dn: ou=Groupes,dc=mondomaine,dc=local
 ou: Groupes
 objectClass: organizationalUnit

'''-x : utiliser une authentification simple'''
'''-LLL : optimise l'affichage des informations en supprimant les commentaires et les versions'''

=== Création d'utilisateur(s) ===
Comme pour l'arborescence, nous allons créer un fichier ldif:
 root@openldap:~# touch ~/myuser.ldif
Je veux que mon utilisateur '''''myuser''''' soit placé dans l'OU Groupes.
Insérez les lignes suivantes à votre fichier ldif:
 dn: cn=myuser,ou=Groupes,dc=mondomaine,dc=local
 cn: myuser
 gidNumber: 20000
 objectClass: top
 objectClass: posixGroup
 dn: uid=myuser,ou=Utilisateurs,dc=mondomaine,dc=local
 uid: myuser
 uidNumber: 20000
 gidNumber: 20000
 cn: myuser
 sn: myuser
 objectClass: top
 objectClass: person
 objectClass: posixAccount
 objectClass: shadowAccount
 loginShell: /bin/bash
 homeDirectory: /home/myuser
 userPassword: myuser

Rajoutez ces informations dans la base LDAP:
 root@openldap:~# ldapadd -cxWD cn=admin,dc=mondomaine,dc=local -f ~/myuser.ldif
 Enter LDAP Password:
 adding new entry &quot;cn=myuser,ou=Groupes,dc=mondomaine,dc=local&quot;
 adding new entry &quot;uid=myuser,ou=Utilisateurs,dc=mondomaine,dc=local&quot;

Vérifiez que l'utilisateur a bien été créé:
 root@openldap:~# ldapsearch -xLLL uid=myuser
 dn: uid=myuser,ou=Utilisateurs,dc=mondomaine,dc=local
 uid: myuser
 uidNumber: 20000
 gidNumber: 20000
 cn: myuser
 sn: myuser
 objectClass: top
 objectClass: person
 objectClass: posixAccount
 objectClass: shadowAccount
 loginShell: /bin/bash
 homeDirectory: /home/myuser

== Administration avec phpldapadmin ==
Cette dernière permet une administration simplifiée au travers de n'importe quel navigateur. Pratique lorsque l'on n'est pas particulièrement à l'aise avec la ligne de commande.

 root@openldap:~# apt-get install phpldapadmin
* Adresse du serveur ldap : '''http://127.0.0.1'''
* Faut-il utiliser le TLS : '''non'''
* Nom distinctif de la base de données : '''dc=mondomaine,dc=local'''
* Type d'authentification : '''session'''
* Identifiants de connexion au serveur LDAP : '''cn=admin,dc=mondomaine,dc=local'''
* Serveyr à gérer : '''apache2'''
* Faut-il redémarrer le serveur web : '''oui'''

L'interface web est désormais accessible à l'URL : 
http://openldap.mondomaine.local</text>
      <sha1>tm6m02jvjsx9r0b58n69pl609cmxnvg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4761</id>
      <parentid>4760</parentid>
      <timestamp>2012-11-16T10:45:23Z</timestamp>
      <contributor>
        <username>Chr0my</username>
        <id>222</id>
      </contributor>
      <comment>/* Téléchargement des packages */</comment>
      <text xml:space="preserve" bytes="7555">
== Qu'est-ce qu'OpenLDAP ==
OpenLDAP est un annuaire Open Source basé sur le protocole LDAP (Lightweight Directory Access Protocol). 
Il répertorie les ressources présentes au sein de votre système d'information (comptes ordinateurs, comptes utilisateurs, groupes...) sous la forme d'une arborescence.

== Avertissement ==
L'installation décrite ici ne prend pas en compte la gestion du TLS.

== Pré-requis ==
Dans cette procédure, nous considérons plusieurs choses:

* Le nom du serveur est '''openldap'''
* Le nom de domaine utilisé est '''mondomaine.local'''
* Le système est fonctionnel, et à jour

Charge à vous de remplacer les différentes variable par vos propres informations.

'''Note:''' à partir de Debian Squeeze, la configuration d'OpenLDAP ne s'effectue plus au travers du fichier slapd.conf.

== Installation ==
=== Fichier /etc/hosts ===
Nous ne possédons pas de serveur DNS, nous utiliserons donc le fichier /etc/hosts.
Vérifier que ce dernier possède bien le FQDN du serveur:
 127.0.0.1       localhost
 127.0.1.1       openldap.mondomaine.local   openldap

=== Debconf ===
Debconf est un utilitaire graphique qui va nous permettre de renseigner diverses options lors de l'installation des paquets. Afin que ce dernier nous propose plus de choix lors de l'installation d'OpenLDAP, nous allons diminuer son niveau.
root@openldap:~# dpkg-reconfigure debconf

'''Répondre:'''
* Dialogue
* Intermédiaire

=== Téléchargement des packages ===
 root@openldap:~# apt-get install slapd ldap-utils nmap apache2 -y

*''slapd : serveur LDAP''
*''ldap-utils : outils qui vont nous permettre d'agir sur le serveur''
*''nmap : scanner de ports''
*''apache2 : serveur Web qui va héberger notre outil de gestion''

'''Une fenêtre debconf doit apparaître vous proposant les choix suivants:'''
* Voulez-vous omettre la configuration d'OpenLDAP? '''Non'''
* Nom de domaine : '''mondomaine.local'''
* Nom d'entité : '''mondomaine.local'''
* Mot de passe Administrateur : '''votre_password'''
* Vérifier le mot de passe Administrateur : '''votre_password'''
* Faut-il autoriser le protocole LDAP v2? '''Non'''
* Faut-il exécuter mandb avec l'utilisateur man? '''Non'''

=== Vérification du port 389 ===
Pour vérifier que le service écoute bien sur le port 389:
 root@openldap:~# nmap -p 389 localhost
''-p : port''

Vous devriez obtenir la ligne suivante : 
 389/tcp open ldap
=== Les fichiers LDIF ===
Les fichiers LDIF, acronyme de Lightweight Data Interchange Format sont des formats d'échanges permettant d'importer et exporter les données de l'annuaire LDAP.
Pour le générer:
 root@openldap:~# slapcat

=== Configurer le fichier /etc/ldap.conf ===
Indiquez votre propre domaine:

 BASE     dc=mondomaine,dc=local
 URI      ldap://openldap.mondomaine.local/

=== Configuration des fichiers LDIF et DIT ===
Créez un nouveau fichier:
 root@openldap:~# touch ~/olc-mod1.ldif
et y insérer les lignes suivantes:
 # 1.
 dn: cn=config
 changetype: modify
 replace: olcLogLevel
 olcLogLevel: stats
 # 2.1.
 dn: olcDatabase={1}hdb,cn=config
 changetype: modify
 add: olcDbIndex
 olcDbIndex: uid eq
 -
 # 2.2.
 add: olcDbIndex
 olcDbIndex: cn eq
 -
 # 2.3.
 add: olcDbIndex
 olcDbIndex: ou eq
 -
 # 2.4.
 add: olcDbIndex
 olcDbIndex: dc eq

Exécuter la commande suivante pour prendre ces modifications en compte : 
 root@openldap:~# ldapmodify -QY EXTERNAL -H ldapi:/// -f ~/olc-mod1.ldif

Créez le fichier qui va héberger la structure de l'arbre:
 root@openldap:~# touch ~/tree.ldif

Nous allons y insérer nos unités d'organisation.
=== Création des Organizational Unit (OU) ===

Dans le fichier ~/tree.ldif créé précédemment, nous allons créer deux OU:
* Utilisateurs
* Groupes
Nous verrons plus tard qu'il existe un moyen plus simple et plus rapide pour en créer de nouvelles.

Insérez le contenu suivant:
 dn: ou=Utilisateurs,dc=mondomaine,dc=local
 ou: Utilisateurs
 objectClass: organizationalUnit
 dn: ou=Groupes,dc=mondomaine,dc=local
 ou: Groupes
 objectClass: organizationalUnit

Les informations sont enregistrées, mais le fichier n'est pas encore lié à notre base LDAP. 
Pour ce faire, effectuez la commande suivante:
 root@openldap:~# ldapadd -cxWD cn=admin,dc=mondomaine,dc=local -f ~/tree.ldif
 Enter LDAP Password: **********
 adding new entry &quot;ou=Utilisateurs,dc=mondomaine,dc=local&quot;
 adding new entry &quot;ou=Groupes,dc=mondomaine,dc=local&quot;
 ~#

'''-c : permet de continuer l'opération même s'il rencontre des erreurs. Ces dernières seront reportées'''
'''-x : utilise une authentification simple'''
'''-W : affiche le prompt pour saisir le password'''
'''-D : spécifie le &quot;Dinstinguished Name&quot; qui va se connecter à notre base LDAP'''
'''-f : spécifie le nom du fichier contenant les informations à rajouter'''

Vérifiez ensuite que l'arborescence a bien été prise en compte: 
 root@openldap:~# ldapsearch -xLLL
 dn: dc=mondomaine,dc=local
 objectClass: top
 objectClass: dcObject
 objectClass: organization
 o: mondomaine.local
 dc: mondomaine
 dn: cn=admin,dc=mondomaine,dc=local
 objectClass: simpleSecurityObject
 objectClass: organizationalRole
 cn: admin
 description: LDAP administrator
 dn: ou=Utilisateurs,dc=mondomaine,dc=local
 ou: Utilisateurs
 objectClass: organizationalUnit
 dn: ou=Groupes,dc=mondomaine,dc=local
 ou: Groupes
 objectClass: organizationalUnit

'''-x : utiliser une authentification simple'''
'''-LLL : optimise l'affichage des informations en supprimant les commentaires et les versions'''

=== Création d'utilisateur(s) ===
Comme pour l'arborescence, nous allons créer un fichier ldif:
 root@openldap:~# touch ~/myuser.ldif
Je veux que mon utilisateur '''''myuser''''' soit placé dans l'OU Groupes.
Insérez les lignes suivantes à votre fichier ldif:
 dn: cn=myuser,ou=Groupes,dc=mondomaine,dc=local
 cn: myuser
 gidNumber: 20000
 objectClass: top
 objectClass: posixGroup
 dn: uid=myuser,ou=Utilisateurs,dc=mondomaine,dc=local
 uid: myuser
 uidNumber: 20000
 gidNumber: 20000
 cn: myuser
 sn: myuser
 objectClass: top
 objectClass: person
 objectClass: posixAccount
 objectClass: shadowAccount
 loginShell: /bin/bash
 homeDirectory: /home/myuser
 userPassword: myuser

Rajoutez ces informations dans la base LDAP:
 root@openldap:~# ldapadd -cxWD cn=admin,dc=mondomaine,dc=local -f ~/myuser.ldif
 Enter LDAP Password:
 adding new entry &quot;cn=myuser,ou=Groupes,dc=mondomaine,dc=local&quot;
 adding new entry &quot;uid=myuser,ou=Utilisateurs,dc=mondomaine,dc=local&quot;

Vérifiez que l'utilisateur a bien été créé:
 root@openldap:~# ldapsearch -xLLL uid=myuser
 dn: uid=myuser,ou=Utilisateurs,dc=mondomaine,dc=local
 uid: myuser
 uidNumber: 20000
 gidNumber: 20000
 cn: myuser
 sn: myuser
 objectClass: top
 objectClass: person
 objectClass: posixAccount
 objectClass: shadowAccount
 loginShell: /bin/bash
 homeDirectory: /home/myuser

== Administration avec phpldapadmin ==
Cette dernière permet une administration simplifiée au travers de n'importe quel navigateur. Pratique lorsque l'on n'est pas particulièrement à l'aise avec la ligne de commande.

 root@openldap:~# apt-get install phpldapadmin
* Adresse du serveur ldap : '''http://127.0.0.1'''
* Faut-il utiliser le TLS : '''non'''
* Nom distinctif de la base de données : '''dc=mondomaine,dc=local'''
* Type d'authentification : '''session'''
* Identifiants de connexion au serveur LDAP : '''cn=admin,dc=mondomaine,dc=local'''
* Serveyr à gérer : '''apache2'''
* Faut-il redémarrer le serveur web : '''oui'''

L'interface web est désormais accessible à l'URL : 
http://openldap.mondomaine.local</text>
      <sha1>jj0wjw9xxgnyzkzkcf7brhghjubp80e</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4762</id>
      <parentid>4761</parentid>
      <timestamp>2012-11-16T13:18:09Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Source: chr0my.overblog.com</comment>
      <text xml:space="preserve" bytes="7680">
== Qu'est-ce qu'OpenLDAP ==
OpenLDAP est un annuaire Open Source basé sur le protocole LDAP (Lightweight Directory Access Protocol). 
Il répertorie les ressources présentes au sein de votre système d'information (comptes ordinateurs, comptes utilisateurs, groupes...) sous la forme d'une arborescence.

== Avertissement ==
L'installation décrite ici ne prend pas en compte la gestion du TLS.

== Pré-requis ==
Dans cette procédure, nous considérons plusieurs choses:

* Le nom du serveur est '''openldap'''
* Le nom de domaine utilisé est '''mondomaine.local'''
* Le système est fonctionnel, et à jour

Charge à vous de remplacer les différentes variable par vos propres informations.

'''Note:''' à partir de Debian Squeeze, la configuration d'OpenLDAP ne s'effectue plus au travers du fichier slapd.conf.

== Installation ==
=== Fichier /etc/hosts ===
Nous ne possédons pas de serveur DNS, nous utiliserons donc le fichier /etc/hosts.
Vérifier que ce dernier possède bien le FQDN du serveur:
 127.0.0.1       localhost
 127.0.1.1       openldap.mondomaine.local   openldap

=== Debconf ===
Debconf est un utilitaire graphique qui va nous permettre de renseigner diverses options lors de l'installation des paquets. Afin que ce dernier nous propose plus de choix lors de l'installation d'OpenLDAP, nous allons diminuer son niveau.
root@openldap:~# dpkg-reconfigure debconf

'''Répondre:'''
* Dialogue
* Intermédiaire

=== Téléchargement des packages ===
 root@openldap:~# apt-get install slapd ldap-utils nmap apache2 -y

*''slapd : serveur LDAP''
*''ldap-utils : outils qui vont nous permettre d'agir sur le serveur''
*''nmap : scanner de ports''
*''apache2 : serveur Web qui va héberger notre outil de gestion''

'''Une fenêtre debconf doit apparaître vous proposant les choix suivants:'''
* Voulez-vous omettre la configuration d'OpenLDAP? '''Non'''
* Nom de domaine : '''mondomaine.local'''
* Nom d'entité : '''mondomaine.local'''
* Mot de passe Administrateur : '''votre_password'''
* Vérifier le mot de passe Administrateur : '''votre_password'''
* Faut-il autoriser le protocole LDAP v2? '''Non'''
* Faut-il exécuter mandb avec l'utilisateur man? '''Non'''

=== Vérification du port 389 ===
Pour vérifier que le service écoute bien sur le port 389:
 root@openldap:~# nmap -p 389 localhost
''-p : port''

Vous devriez obtenir la ligne suivante : 
 389/tcp open ldap
=== Les fichiers LDIF ===
Les fichiers LDIF, acronyme de Lightweight Data Interchange Format sont des formats d'échanges permettant d'importer et exporter les données de l'annuaire LDAP.
Pour le générer:
 root@openldap:~# slapcat

=== Configurer le fichier /etc/ldap.conf ===
Indiquez votre propre domaine:

 BASE     dc=mondomaine,dc=local
 URI      ldap://openldap.mondomaine.local/

=== Configuration des fichiers LDIF et DIT ===
Créez un nouveau fichier:
 root@openldap:~# touch ~/olc-mod1.ldif
et y insérer les lignes suivantes:
 # 1.
 dn: cn=config
 changetype: modify
 replace: olcLogLevel
 olcLogLevel: stats
 # 2.1.
 dn: olcDatabase={1}hdb,cn=config
 changetype: modify
 add: olcDbIndex
 olcDbIndex: uid eq
 -
 # 2.2.
 add: olcDbIndex
 olcDbIndex: cn eq
 -
 # 2.3.
 add: olcDbIndex
 olcDbIndex: ou eq
 -
 # 2.4.
 add: olcDbIndex
 olcDbIndex: dc eq

Exécuter la commande suivante pour prendre ces modifications en compte : 
 root@openldap:~# ldapmodify -QY EXTERNAL -H ldapi:/// -f ~/olc-mod1.ldif

Créez le fichier qui va héberger la structure de l'arbre:
 root@openldap:~# touch ~/tree.ldif

Nous allons y insérer nos unités d'organisation.
=== Création des Organizational Unit (OU) ===

Dans le fichier ~/tree.ldif créé précédemment, nous allons créer deux OU:
* Utilisateurs
* Groupes
Nous verrons plus tard qu'il existe un moyen plus simple et plus rapide pour en créer de nouvelles.

Insérez le contenu suivant:
 dn: ou=Utilisateurs,dc=mondomaine,dc=local
 ou: Utilisateurs
 objectClass: organizationalUnit
 dn: ou=Groupes,dc=mondomaine,dc=local
 ou: Groupes
 objectClass: organizationalUnit

Les informations sont enregistrées, mais le fichier n'est pas encore lié à notre base LDAP. 
Pour ce faire, effectuez la commande suivante:
 root@openldap:~# ldapadd -cxWD cn=admin,dc=mondomaine,dc=local -f ~/tree.ldif
 Enter LDAP Password: **********
 adding new entry &quot;ou=Utilisateurs,dc=mondomaine,dc=local&quot;
 adding new entry &quot;ou=Groupes,dc=mondomaine,dc=local&quot;
 ~#

'''-c : permet de continuer l'opération même s'il rencontre des erreurs. Ces dernières seront reportées'''
'''-x : utilise une authentification simple'''
'''-W : affiche le prompt pour saisir le password'''
'''-D : spécifie le &quot;Dinstinguished Name&quot; qui va se connecter à notre base LDAP'''
'''-f : spécifie le nom du fichier contenant les informations à rajouter'''

Vérifiez ensuite que l'arborescence a bien été prise en compte: 
 root@openldap:~# ldapsearch -xLLL
 dn: dc=mondomaine,dc=local
 objectClass: top
 objectClass: dcObject
 objectClass: organization
 o: mondomaine.local
 dc: mondomaine
 dn: cn=admin,dc=mondomaine,dc=local
 objectClass: simpleSecurityObject
 objectClass: organizationalRole
 cn: admin
 description: LDAP administrator
 dn: ou=Utilisateurs,dc=mondomaine,dc=local
 ou: Utilisateurs
 objectClass: organizationalUnit
 dn: ou=Groupes,dc=mondomaine,dc=local
 ou: Groupes
 objectClass: organizationalUnit

'''-x : utiliser une authentification simple'''
'''-LLL : optimise l'affichage des informations en supprimant les commentaires et les versions'''

=== Création d'utilisateur(s) ===
Comme pour l'arborescence, nous allons créer un fichier ldif:
 root@openldap:~# touch ~/myuser.ldif
Je veux que mon utilisateur '''''myuser''''' soit placé dans l'OU Groupes.
Insérez les lignes suivantes à votre fichier ldif:
 dn: cn=myuser,ou=Groupes,dc=mondomaine,dc=local
 cn: myuser
 gidNumber: 20000
 objectClass: top
 objectClass: posixGroup
 dn: uid=myuser,ou=Utilisateurs,dc=mondomaine,dc=local
 uid: myuser
 uidNumber: 20000
 gidNumber: 20000
 cn: myuser
 sn: myuser
 objectClass: top
 objectClass: person
 objectClass: posixAccount
 objectClass: shadowAccount
 loginShell: /bin/bash
 homeDirectory: /home/myuser
 userPassword: myuser

Rajoutez ces informations dans la base LDAP:
 root@openldap:~# ldapadd -cxWD cn=admin,dc=mondomaine,dc=local -f ~/myuser.ldif
 Enter LDAP Password:
 adding new entry &quot;cn=myuser,ou=Groupes,dc=mondomaine,dc=local&quot;
 adding new entry &quot;uid=myuser,ou=Utilisateurs,dc=mondomaine,dc=local&quot;

Vérifiez que l'utilisateur a bien été créé:
 root@openldap:~# ldapsearch -xLLL uid=myuser
 dn: uid=myuser,ou=Utilisateurs,dc=mondomaine,dc=local
 uid: myuser
 uidNumber: 20000
 gidNumber: 20000
 cn: myuser
 sn: myuser
 objectClass: top
 objectClass: person
 objectClass: posixAccount
 objectClass: shadowAccount
 loginShell: /bin/bash
 homeDirectory: /home/myuser

== Administration avec phpldapadmin ==
Cette dernière permet une administration simplifiée au travers de n'importe quel navigateur. Pratique lorsque l'on n'est pas particulièrement à l'aise avec la ligne de commande.

 root@openldap:~# apt-get install phpldapadmin
* Adresse du serveur ldap : '''http://127.0.0.1'''
* Faut-il utiliser le TLS : '''non'''
* Nom distinctif de la base de données : '''dc=mondomaine,dc=local'''
* Type d'authentification : '''session'''
* Identifiants de connexion au serveur LDAP : '''cn=admin,dc=mondomaine,dc=local'''
* Serveyr à gérer : '''apache2'''
* Faut-il redémarrer le serveur web : '''oui'''

L'interface web est désormais accessible à l'URL : 
http://openldap.mondomaine.local

== Source ==

[http://chr0my.overblog.com/installation-et-configuration-d-openldap-sous-debian-squeeze chr0my.overblog.com]</text>
      <sha1>62afmo7fn6945c3oq02qmkrfkn4dutt</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>OpenSMTPD</title>
    <ns>0</ns>
    <id>1304</id>
    <revision>
      <id>5520</id>
      <timestamp>2013-12-31T23:27:18Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <comment>Page créée avec « = Pourquoi OpenSMTPD = Sur le marché actuel des serveurs de courrier il y a des ancêtres (Courrier), des installés par défaut (Exim), des populaires (Postfix) et parfo... »</comment>
      <text xml:space="preserve" bytes="5462">= Pourquoi OpenSMTPD =
Sur le marché actuel des serveurs de courrier il y a des ancêtres (Courrier), des installés par défaut (Exim), des populaires (Postfix) et parfois des petits nouveaux venant de nos cher cousin les BSD. OpenSMTPD fait parti de cette dernière catégorie, il est issue d'une longue ligné d'outil issu du projet OpenBSD qui nous a sorti des perles comme OpenSSH qui est devenu LE standard.
Ensuite ils ont pour objectif d'en faire un serveur :
* extrêmement sécurisé
* fiable en toute circonstance (un message reçut devra êter traiter quoi qu'il se passe)
* résistant à la charge (ils ne visent pas les perfs extrême mais l'assurance du traitement dans un délai raisonnable)
* léger et suffisant pour un usage classique (pas de support de cas particulier)
* simple de configuration

Donc un serveur parfait pour de l'auto-hébergement

= Quelques rappels de base =
Malgré le fait que si vous chercher a mettre en place ce genre de serveur vous avez des bases confortables, je vais quand même redéfinir quelques termes liés à l'environnement du courrier électronique.
* MTA = Agent de transfert des courriels ('''M'''ail '''T'''ransfert '''A'''gent), on y classe tout les serveurs proposant du SMTP donc par exemple Postfix, Exim, OpenSMTPD etc. c'est a leur niveau que l'on vient filtrer le SPAM, Virus etc.
* MDA = Agent de délivrance des courriels ('''M'''ail '''D'''elivery '''A'''gent) il font l'interface entre les MTA et MUA, ils sont chargé de mettre le courrier arrivé dans la bonne boite aux lettres. Ils ont aussi la charge de donner les accès IMAP et POP.
* MUA = Agent d'utilisation des courriels ('''M'''ail '''U'''ser '''A'''gent), c'est voter client de courriel, qu'il soit par interface web (RoundCube, Horde, Hotmail, Gmail, ...) ou en client lourd (Thunderbird, Outlook, Lotus ...).
* SMTP = Protocole simple de transfert de courriel ('''S'''imple '''M'''ail '''T'''ransfert '''P'''rotocol) permet l'envoi et la réception entre MTA des courriels
* POP = Protocole de bureau de poste ('''P'''ost '''O'''ffice '''P'''rotocol) Permet de récupérer les courriers électroniques situés sur un serveur MDA. Par défaut les courriel ainsi récupérés sont supprimer du serveur.
* IMAP = Protocole d'accès aux messages d'internet ('''I'''nternet '''M'''essage '''A'''ccess '''P'''rotocol) remplacant du POP il permet d'interagir avec le serveur MDA, les courriers ne sont pas supprimer par défaut et diverses actions sont possible comme la création/modification/suppression/déplacement de dossier et courriels.

= Installation =
== Jessie==
Pour cela rien de plus simple un paquet est présent dans les dépots, donc une classique commande d'installation suffit
 apt-get install opensmtpd

== Whezzy ==
Là ça se gate, pas de paquet dispo et les backport ne l'ont pas encore pris en compte.
Il existe bien [http://petitcodeur.fr/sysadmin/opensmtpd-debian.html la méthode classique] d'installation avec récupération des sources et compilation
&lt;pre&gt;
$wget http://www.opensmtpd.org/archives/opensmtpd-portable-latest.tar.gz
$tar xvzf opensmtpd-portable-latest.tar.gz
$cd opensmtpd-*
$ ./configure
$ make
$ make install
&lt;/pre&gt;

Mais nous allons feinté pour nous recréer un paquet tout ce qu'il y a de plus propre. Nous aurions pu récupérer le paquet de Jessie pour l'installer directement mais il y a une dépendance a Libc6 dans une version supérieur a ce qui est possible pour Whezzy, le reste des dépendance est satisfait ce qui est une chance.

Dans notre sources.list nous allons ajouter une ligne nous permettant de récupérer les sources du paquet  
 deb-src http://ftp.fr.debian.org/debian/ jessie main

je vous recommandes quand même d'ajouter un pinning pour éviter toute mauvaise manipulation
 Package: *
 Pin: release o=Debian, a=jessie
 Pin-Priority: 490

Puis nous faisons tout d'abord les commandes suivantes
# apt-get update
# apt-get build-dep opensmtpd
# apt-get install debhelper libpam0g-dev

* La première ligne permet de prendre en compte la modification du sources.list
* La deuxième ligne de récupère différent paquet *-dev nécessaire à la recompilation
* Enfin installation de 2 paquet (et leurs dépendances) nous permettant la création d'un paquet

Ensuite avec votre utilisateur habituel dans un répertoire dédié :
 $ apt-get source opensmtpd
Cela vous récupère les sources de OpenSMTPD
Enfin la commande de compilation
 $ fakeroot ./debian/rules binary

Laisser cuire quelques minutes et normalement vous devez obtenir un joli paquet prêt à l'emploi pour votre système.
l'installation de ce dernier se fait par un simple 
 #dpkg -i &lt;mon paquet OpenSMTPD&gt;

Si vous avez une erreur de conflit de « mail-transport-agent » c'est que vous avez Exim ou Postfix ou tout auter MTA encore présent sur votre système, ce qui n'est pas toléré par Debian.


== Version plus anciennes (Squezee, ...) ==
Un tutoriel se trouve [http://maniatux.fr/index.php?article274/opensmtpd-debian-6-0-squeeze-howto ici], mais come ces version de debian ne sont plus recommandé je ne traite pas le sujet.

= Configuration =

A faire

= Ressources =
* {{fr}} http://petitcodeur.fr/sysadmin/opensmtpd-debian.html Installation à partir des sources
* {{fr}} http://maniatux.fr/index.php?article274/opensmtpd-debian-6-0-squeeze-howto Installation pour Squeeze
* {{fr}} http://www.opensmtpd.org/fr/ Le site officiel avec sa doc plutôt complète

[[Catégorie:Serveurs]]</text>
      <sha1>5dmyp9a0ty0jyd7lefiwwfqp3gejrbb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5521</id>
      <parentid>5520</parentid>
      <timestamp>2014-01-01T01:35:03Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <text xml:space="preserve" bytes="7668">= Pourquoi OpenSMTPD =
Sur le marché actuel des serveurs de courrier il y a des ancêtres (Courrier), des installés par défaut (Exim), des populaires (Postfix) et parfois des petits nouveaux venant de nos cher cousin les BSD. OpenSMTPD fait parti de cette dernière catégorie, il est issue d'une longue ligné d'outil issu du projet OpenBSD qui nous a sorti des perles comme OpenSSH qui est devenu LE standard.
Ensuite ils ont pour objectif d'en faire un serveur :
* extrêmement sécurisé
* fiable en toute circonstance (un message reçut devra êter traiter quoi qu'il se passe)
* résistant à la charge (ils ne visent pas les perfs extrême mais l'assurance du traitement dans un délai raisonnable)
* léger et suffisant pour un usage classique (pas de support de cas particulier)
* simple de configuration

Donc un serveur parfait pour de l'auto-hébergement

= Quelques rappels de base =
Malgré le fait que si vous chercher a mettre en place ce genre de serveur vous avez des bases confortables, je vais quand même redéfinir quelques termes liés à l'environnement du courrier électronique.
* MTA = Agent de transfert des courriels ('''M'''ail '''T'''ransfert '''A'''gent), on y classe tout les serveurs proposant du SMTP donc par exemple Postfix, Exim, OpenSMTPD etc. c'est a leur niveau que l'on vient filtrer le SPAM, Virus etc.
* MDA = Agent de délivrance des courriels ('''M'''ail '''D'''elivery '''A'''gent) il font l'interface entre les MTA et MUA, ils sont chargé de mettre le courrier arrivé dans la bonne boite aux lettres. Ils ont aussi la charge de donner les accès IMAP et POP.
* MUA = Agent d'utilisation des courriels ('''M'''ail '''U'''ser '''A'''gent), c'est voter client de courriel, qu'il soit par interface web (RoundCube, Horde, Hotmail, Gmail, ...) ou en client lourd (Thunderbird, Outlook, Lotus ...).
* SMTP = Protocole simple de transfert de courriel ('''S'''imple '''M'''ail '''T'''ransfert '''P'''rotocol) permet l'envoi et la réception entre MTA des courriels
* POP = Protocole de bureau de poste ('''P'''ost '''O'''ffice '''P'''rotocol) Permet de récupérer les courriers électroniques situés sur un serveur MDA. Par défaut les courriel ainsi récupérés sont supprimer du serveur.
* IMAP = Protocole d'accès aux messages d'internet ('''I'''nternet '''M'''essage '''A'''ccess '''P'''rotocol) remplacant du POP il permet d'interagir avec le serveur MDA, les courriers ne sont pas supprimer par défaut et diverses actions sont possible comme la création/modification/suppression/déplacement de dossier et courriels.

= Installation =
== Jessie==
Pour cela rien de plus simple un paquet est présent dans les dépots, donc une classique commande d'installation suffit
 apt-get install opensmtpd

== Whezzy ==
Là ça se gate, pas de paquet dispo et les backport ne l'ont pas encore pris en compte.

'''ATTENTION''' Les méthodes présentées ci-dessous sont des bidouillages, rien ne vaut un paquet issu d'un dépôt officiel Debian

Il existe bien [http://petitcodeur.fr/sysadmin/opensmtpd-debian.html la méthode classique] d'installation avec récupération des sources et compilation
&lt;pre&gt;
$wget http://www.opensmtpd.org/archives/opensmtpd-portable-latest.tar.gz
$tar xvzf opensmtpd-portable-latest.tar.gz
$cd opensmtpd-*
$ ./configure
$ make
$ make install
&lt;/pre&gt;

Mais nous allons feinter pour nous recréer un paquet tout ce qu'il y a de plus propre. Nous aurions pu récupérer le paquet de Jessie pour l'installer directement mais il y a une dépendance a Libc6 dans une version supérieur à ce qui est possible pour Whezzy, le reste des dépendances est satisfait ce qui est une chance.
Il existe [https://github.com/sinecure/OpenSMTPD-deb un script] qui permet de construire un paquet Debian avec la dernière version de notre MTA mais personnellement je n'ai pas réussit à aller au bout du process de construction.
La solution que j'ai choisit est de détourner le paquet officiel de jessie pour le compiler avec les dépendances Whezzy.
Dans notre sources.list nous allons ajouter une ligne nous permettant de récupérer les sources du paquet  
 deb-src http://ftp.fr.debian.org/debian/ jessie main

je vous recommandes quand même d'ajouter un pinning pour éviter toute mauvaise manipulation
 Package: *
 Pin: release o=Debian, a=jessie
 Pin-Priority: 490

Puis nous faisons tout d'abord les commandes suivantes
# apt-get update
# apt-get build-dep opensmtpd
# apt-get install debhelper libpam0g-dev

* La première ligne permet de prendre en compte la modification du sources.list
* La deuxième ligne de récupère différent paquet *-dev nécessaire à la recompilation
* Enfin installation de 2 paquet (et leurs dépendances) nous permettant la création d'un paquet

Ensuite avec votre utilisateur habituel dans un répertoire dédié :
 $ apt-get source opensmtpd
Cela vous récupère les sources de OpenSMTPD (pensez à commenter/supprimer les modifications de votre sources.list et preferences)
Enfin la commande de compilation
 $ fakeroot ./debian/rules binary

Laisser cuire quelques minutes et normalement vous devez obtenir un joli paquet prêt à l'emploi pour votre système.
l'installation de ce dernier se fait par un simple 
 #dpkg -i &lt;mon paquet OpenSMTPD&gt;

Si vous avez une erreur de conflit de « mail-transport-agent » c'est que vous avez Exim ou Postfix ou tout auter MTA encore présent sur votre système, ce qui n'est pas toléré par Debian.

=== Monter de version ===
Si vous voulez avoir une version encore plus récente que celle dispo dans Jessie (5.3.3 à l'heure actuelle), la version 5.4.1 par exemple qui apporte le support des bases de données. Pour cela je vous conseil de suivre le précédente méthode pour vous roder puis de récupérer les sources de la version voulue

 $wget http://www.opensmtpd.org/archives/opensmtpd-portable-latest.tar.gz
 $tar xvzf opensmtpd-portable-latest.tar.gz

Depuis le paquet source de Jessie récupérer le répertoire &quot;debian&quot; et de modifier le fichier &quot;changlog&quot; soit avec la commande suivante
 debian/$ dch -n

soit en l'éditant avec voter éditeur favori et ajouter le bloc suivant 
&lt;pre&gt;
opensmtpd (5.4.1) UNRELEASE; urgency=low
  * Non-maintainer upload.
  * reprise de la version 5.4.1
-- Vous &lt;vous@VotreMachine&gt;  Thu, 01 Jan 2014 01:30:32 +0100
&lt;/pre&gt;

Puis il suffit de lancer la compilation 
 $ fakeroot ./debian/rules binary
penser a faire cette commande si vous voulez refaire la compilation complète
 $ fakeroot ./debian/rules clean
ou pour refaire juste le .deb
 $ fakeroot ./debian/rules binary-deb

Avec cette méthode il se peut que votre MTA ne redémarre pas, cela provient du nouveau fichier de configuration qui n'est pas valide, commentez les lignes incriminées ou configurez le correctement.

== Version plus anciennes (Squezee, ...) ==
Un tutoriel se trouve [http://maniatux.fr/index.php?article274/opensmtpd-debian-6-0-squeeze-howto ici], mais come ces version de debian ne sont plus recommandé je ne traite pas le sujet.

= Configuration =

== smtpd.conf ==

== Backends ==
=== Fichiers ===
=== Base de données ===
'''ATTENTION''' Les supports de PostgreSQL, MySQL, SQLite et LDAP n'ont été ajoutés qu'a partir de la version 3.4.1 de OpenSMTPD.

= Ressources =
* {{fr}} http://petitcodeur.fr/sysadmin/opensmtpd-debian.html Installation à partir des sources
* {{fr}} http://maniatux.fr/index.php?article274/opensmtpd-debian-6-0-squeeze-howto Installation pour Squeeze
* {{en}} https://github.com/sinecure/OpenSMTPD-deb Script d'automatisation de création d'un paquet deb
* {{fr}} http://www.opensmtpd.org/fr/ Le site officiel avec sa doc plutôt complète

[[Catégorie:Serveurs]]</text>
      <sha1>sdd9obxzvgx85bom6i8rpnrbkupyhfg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5532</id>
      <parentid>5521</parentid>
      <timestamp>2014-01-21T00:19:03Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <comment>/* Base de données */</comment>
      <text xml:space="preserve" bytes="7668">= Pourquoi OpenSMTPD =
Sur le marché actuel des serveurs de courrier il y a des ancêtres (Courrier), des installés par défaut (Exim), des populaires (Postfix) et parfois des petits nouveaux venant de nos cher cousin les BSD. OpenSMTPD fait parti de cette dernière catégorie, il est issue d'une longue ligné d'outil issu du projet OpenBSD qui nous a sorti des perles comme OpenSSH qui est devenu LE standard.
Ensuite ils ont pour objectif d'en faire un serveur :
* extrêmement sécurisé
* fiable en toute circonstance (un message reçut devra êter traiter quoi qu'il se passe)
* résistant à la charge (ils ne visent pas les perfs extrême mais l'assurance du traitement dans un délai raisonnable)
* léger et suffisant pour un usage classique (pas de support de cas particulier)
* simple de configuration

Donc un serveur parfait pour de l'auto-hébergement

= Quelques rappels de base =
Malgré le fait que si vous chercher a mettre en place ce genre de serveur vous avez des bases confortables, je vais quand même redéfinir quelques termes liés à l'environnement du courrier électronique.
* MTA = Agent de transfert des courriels ('''M'''ail '''T'''ransfert '''A'''gent), on y classe tout les serveurs proposant du SMTP donc par exemple Postfix, Exim, OpenSMTPD etc. c'est a leur niveau que l'on vient filtrer le SPAM, Virus etc.
* MDA = Agent de délivrance des courriels ('''M'''ail '''D'''elivery '''A'''gent) il font l'interface entre les MTA et MUA, ils sont chargé de mettre le courrier arrivé dans la bonne boite aux lettres. Ils ont aussi la charge de donner les accès IMAP et POP.
* MUA = Agent d'utilisation des courriels ('''M'''ail '''U'''ser '''A'''gent), c'est voter client de courriel, qu'il soit par interface web (RoundCube, Horde, Hotmail, Gmail, ...) ou en client lourd (Thunderbird, Outlook, Lotus ...).
* SMTP = Protocole simple de transfert de courriel ('''S'''imple '''M'''ail '''T'''ransfert '''P'''rotocol) permet l'envoi et la réception entre MTA des courriels
* POP = Protocole de bureau de poste ('''P'''ost '''O'''ffice '''P'''rotocol) Permet de récupérer les courriers électroniques situés sur un serveur MDA. Par défaut les courriel ainsi récupérés sont supprimer du serveur.
* IMAP = Protocole d'accès aux messages d'internet ('''I'''nternet '''M'''essage '''A'''ccess '''P'''rotocol) remplacant du POP il permet d'interagir avec le serveur MDA, les courriers ne sont pas supprimer par défaut et diverses actions sont possible comme la création/modification/suppression/déplacement de dossier et courriels.

= Installation =
== Jessie==
Pour cela rien de plus simple un paquet est présent dans les dépots, donc une classique commande d'installation suffit
 apt-get install opensmtpd

== Whezzy ==
Là ça se gate, pas de paquet dispo et les backport ne l'ont pas encore pris en compte.

'''ATTENTION''' Les méthodes présentées ci-dessous sont des bidouillages, rien ne vaut un paquet issu d'un dépôt officiel Debian

Il existe bien [http://petitcodeur.fr/sysadmin/opensmtpd-debian.html la méthode classique] d'installation avec récupération des sources et compilation
&lt;pre&gt;
$wget http://www.opensmtpd.org/archives/opensmtpd-portable-latest.tar.gz
$tar xvzf opensmtpd-portable-latest.tar.gz
$cd opensmtpd-*
$ ./configure
$ make
$ make install
&lt;/pre&gt;

Mais nous allons feinter pour nous recréer un paquet tout ce qu'il y a de plus propre. Nous aurions pu récupérer le paquet de Jessie pour l'installer directement mais il y a une dépendance a Libc6 dans une version supérieur à ce qui est possible pour Whezzy, le reste des dépendances est satisfait ce qui est une chance.
Il existe [https://github.com/sinecure/OpenSMTPD-deb un script] qui permet de construire un paquet Debian avec la dernière version de notre MTA mais personnellement je n'ai pas réussit à aller au bout du process de construction.
La solution que j'ai choisit est de détourner le paquet officiel de jessie pour le compiler avec les dépendances Whezzy.
Dans notre sources.list nous allons ajouter une ligne nous permettant de récupérer les sources du paquet  
 deb-src http://ftp.fr.debian.org/debian/ jessie main

je vous recommandes quand même d'ajouter un pinning pour éviter toute mauvaise manipulation
 Package: *
 Pin: release o=Debian, a=jessie
 Pin-Priority: 490

Puis nous faisons tout d'abord les commandes suivantes
# apt-get update
# apt-get build-dep opensmtpd
# apt-get install debhelper libpam0g-dev

* La première ligne permet de prendre en compte la modification du sources.list
* La deuxième ligne de récupère différent paquet *-dev nécessaire à la recompilation
* Enfin installation de 2 paquet (et leurs dépendances) nous permettant la création d'un paquet

Ensuite avec votre utilisateur habituel dans un répertoire dédié :
 $ apt-get source opensmtpd
Cela vous récupère les sources de OpenSMTPD (pensez à commenter/supprimer les modifications de votre sources.list et preferences)
Enfin la commande de compilation
 $ fakeroot ./debian/rules binary

Laisser cuire quelques minutes et normalement vous devez obtenir un joli paquet prêt à l'emploi pour votre système.
l'installation de ce dernier se fait par un simple 
 #dpkg -i &lt;mon paquet OpenSMTPD&gt;

Si vous avez une erreur de conflit de « mail-transport-agent » c'est que vous avez Exim ou Postfix ou tout auter MTA encore présent sur votre système, ce qui n'est pas toléré par Debian.

=== Monter de version ===
Si vous voulez avoir une version encore plus récente que celle dispo dans Jessie (5.3.3 à l'heure actuelle), la version 5.4.1 par exemple qui apporte le support des bases de données. Pour cela je vous conseil de suivre le précédente méthode pour vous roder puis de récupérer les sources de la version voulue

 $wget http://www.opensmtpd.org/archives/opensmtpd-portable-latest.tar.gz
 $tar xvzf opensmtpd-portable-latest.tar.gz

Depuis le paquet source de Jessie récupérer le répertoire &quot;debian&quot; et de modifier le fichier &quot;changlog&quot; soit avec la commande suivante
 debian/$ dch -n

soit en l'éditant avec voter éditeur favori et ajouter le bloc suivant 
&lt;pre&gt;
opensmtpd (5.4.1) UNRELEASE; urgency=low
  * Non-maintainer upload.
  * reprise de la version 5.4.1
-- Vous &lt;vous@VotreMachine&gt;  Thu, 01 Jan 2014 01:30:32 +0100
&lt;/pre&gt;

Puis il suffit de lancer la compilation 
 $ fakeroot ./debian/rules binary
penser a faire cette commande si vous voulez refaire la compilation complète
 $ fakeroot ./debian/rules clean
ou pour refaire juste le .deb
 $ fakeroot ./debian/rules binary-deb

Avec cette méthode il se peut que votre MTA ne redémarre pas, cela provient du nouveau fichier de configuration qui n'est pas valide, commentez les lignes incriminées ou configurez le correctement.

== Version plus anciennes (Squezee, ...) ==
Un tutoriel se trouve [http://maniatux.fr/index.php?article274/opensmtpd-debian-6-0-squeeze-howto ici], mais come ces version de debian ne sont plus recommandé je ne traite pas le sujet.

= Configuration =

== smtpd.conf ==

== Backends ==
=== Fichiers ===
=== Base de données ===
'''ATTENTION''' Les supports de PostgreSQL, MySQL, SQLite et LDAP n'ont été ajoutés qu'a partir de la version 5.4.1 de OpenSMTPD.

= Ressources =
* {{fr}} http://petitcodeur.fr/sysadmin/opensmtpd-debian.html Installation à partir des sources
* {{fr}} http://maniatux.fr/index.php?article274/opensmtpd-debian-6-0-squeeze-howto Installation pour Squeeze
* {{en}} https://github.com/sinecure/OpenSMTPD-deb Script d'automatisation de création d'un paquet deb
* {{fr}} http://www.opensmtpd.org/fr/ Le site officiel avec sa doc plutôt complète

[[Catégorie:Serveurs]]</text>
      <sha1>ea2j6yhqu69jn7l56klm74zbon3snev</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5533</id>
      <parentid>5532</parentid>
      <timestamp>2014-01-21T00:29:42Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <comment>/* Base de données */</comment>
      <text xml:space="preserve" bytes="8081">= Pourquoi OpenSMTPD =
Sur le marché actuel des serveurs de courrier il y a des ancêtres (Courrier), des installés par défaut (Exim), des populaires (Postfix) et parfois des petits nouveaux venant de nos cher cousin les BSD. OpenSMTPD fait parti de cette dernière catégorie, il est issue d'une longue ligné d'outil issu du projet OpenBSD qui nous a sorti des perles comme OpenSSH qui est devenu LE standard.
Ensuite ils ont pour objectif d'en faire un serveur :
* extrêmement sécurisé
* fiable en toute circonstance (un message reçut devra êter traiter quoi qu'il se passe)
* résistant à la charge (ils ne visent pas les perfs extrême mais l'assurance du traitement dans un délai raisonnable)
* léger et suffisant pour un usage classique (pas de support de cas particulier)
* simple de configuration

Donc un serveur parfait pour de l'auto-hébergement

= Quelques rappels de base =
Malgré le fait que si vous chercher a mettre en place ce genre de serveur vous avez des bases confortables, je vais quand même redéfinir quelques termes liés à l'environnement du courrier électronique.
* MTA = Agent de transfert des courriels ('''M'''ail '''T'''ransfert '''A'''gent), on y classe tout les serveurs proposant du SMTP donc par exemple Postfix, Exim, OpenSMTPD etc. c'est a leur niveau que l'on vient filtrer le SPAM, Virus etc.
* MDA = Agent de délivrance des courriels ('''M'''ail '''D'''elivery '''A'''gent) il font l'interface entre les MTA et MUA, ils sont chargé de mettre le courrier arrivé dans la bonne boite aux lettres. Ils ont aussi la charge de donner les accès IMAP et POP.
* MUA = Agent d'utilisation des courriels ('''M'''ail '''U'''ser '''A'''gent), c'est voter client de courriel, qu'il soit par interface web (RoundCube, Horde, Hotmail, Gmail, ...) ou en client lourd (Thunderbird, Outlook, Lotus ...).
* SMTP = Protocole simple de transfert de courriel ('''S'''imple '''M'''ail '''T'''ransfert '''P'''rotocol) permet l'envoi et la réception entre MTA des courriels
* POP = Protocole de bureau de poste ('''P'''ost '''O'''ffice '''P'''rotocol) Permet de récupérer les courriers électroniques situés sur un serveur MDA. Par défaut les courriel ainsi récupérés sont supprimer du serveur.
* IMAP = Protocole d'accès aux messages d'internet ('''I'''nternet '''M'''essage '''A'''ccess '''P'''rotocol) remplacant du POP il permet d'interagir avec le serveur MDA, les courriers ne sont pas supprimer par défaut et diverses actions sont possible comme la création/modification/suppression/déplacement de dossier et courriels.

= Installation =
== Jessie==
Pour cela rien de plus simple un paquet est présent dans les dépots, donc une classique commande d'installation suffit
 apt-get install opensmtpd

== Whezzy ==
Là ça se gate, pas de paquet dispo et les backport ne l'ont pas encore pris en compte.

'''ATTENTION''' Les méthodes présentées ci-dessous sont des bidouillages, rien ne vaut un paquet issu d'un dépôt officiel Debian

Il existe bien [http://petitcodeur.fr/sysadmin/opensmtpd-debian.html la méthode classique] d'installation avec récupération des sources et compilation
&lt;pre&gt;
$wget http://www.opensmtpd.org/archives/opensmtpd-portable-latest.tar.gz
$tar xvzf opensmtpd-portable-latest.tar.gz
$cd opensmtpd-*
$ ./configure
$ make
$ make install
&lt;/pre&gt;

Mais nous allons feinter pour nous recréer un paquet tout ce qu'il y a de plus propre. Nous aurions pu récupérer le paquet de Jessie pour l'installer directement mais il y a une dépendance a Libc6 dans une version supérieur à ce qui est possible pour Whezzy, le reste des dépendances est satisfait ce qui est une chance.
Il existe [https://github.com/sinecure/OpenSMTPD-deb un script] qui permet de construire un paquet Debian avec la dernière version de notre MTA mais personnellement je n'ai pas réussit à aller au bout du process de construction.
La solution que j'ai choisit est de détourner le paquet officiel de jessie pour le compiler avec les dépendances Whezzy.
Dans notre sources.list nous allons ajouter une ligne nous permettant de récupérer les sources du paquet  
 deb-src http://ftp.fr.debian.org/debian/ jessie main

je vous recommandes quand même d'ajouter un pinning pour éviter toute mauvaise manipulation
 Package: *
 Pin: release o=Debian, a=jessie
 Pin-Priority: 490

Puis nous faisons tout d'abord les commandes suivantes
# apt-get update
# apt-get build-dep opensmtpd
# apt-get install debhelper libpam0g-dev

* La première ligne permet de prendre en compte la modification du sources.list
* La deuxième ligne de récupère différent paquet *-dev nécessaire à la recompilation
* Enfin installation de 2 paquet (et leurs dépendances) nous permettant la création d'un paquet

Ensuite avec votre utilisateur habituel dans un répertoire dédié :
 $ apt-get source opensmtpd
Cela vous récupère les sources de OpenSMTPD (pensez à commenter/supprimer les modifications de votre sources.list et preferences)
Enfin la commande de compilation
 $ fakeroot ./debian/rules binary

Laisser cuire quelques minutes et normalement vous devez obtenir un joli paquet prêt à l'emploi pour votre système.
l'installation de ce dernier se fait par un simple 
 #dpkg -i &lt;mon paquet OpenSMTPD&gt;

Si vous avez une erreur de conflit de « mail-transport-agent » c'est que vous avez Exim ou Postfix ou tout auter MTA encore présent sur votre système, ce qui n'est pas toléré par Debian.

=== Monter de version ===
Si vous voulez avoir une version encore plus récente que celle dispo dans Jessie (5.3.3 à l'heure actuelle), la version 5.4.1 par exemple qui apporte le support des bases de données. Pour cela je vous conseil de suivre le précédente méthode pour vous roder puis de récupérer les sources de la version voulue

 $wget http://www.opensmtpd.org/archives/opensmtpd-portable-latest.tar.gz
 $tar xvzf opensmtpd-portable-latest.tar.gz

Depuis le paquet source de Jessie récupérer le répertoire &quot;debian&quot; et de modifier le fichier &quot;changlog&quot; soit avec la commande suivante
 debian/$ dch -n

soit en l'éditant avec voter éditeur favori et ajouter le bloc suivant 
&lt;pre&gt;
opensmtpd (5.4.1) UNRELEASE; urgency=low
  * Non-maintainer upload.
  * reprise de la version 5.4.1
-- Vous &lt;vous@VotreMachine&gt;  Thu, 01 Jan 2014 01:30:32 +0100
&lt;/pre&gt;

Puis il suffit de lancer la compilation 
 $ fakeroot ./debian/rules binary
penser a faire cette commande si vous voulez refaire la compilation complète
 $ fakeroot ./debian/rules clean
ou pour refaire juste le .deb
 $ fakeroot ./debian/rules binary-deb

Avec cette méthode il se peut que votre MTA ne redémarre pas, cela provient du nouveau fichier de configuration qui n'est pas valide, commentez les lignes incriminées ou configurez le correctement.

== Version plus anciennes (Squezee, ...) ==
Un tutoriel se trouve [http://maniatux.fr/index.php?article274/opensmtpd-debian-6-0-squeeze-howto ici], mais come ces version de debian ne sont plus recommandé je ne traite pas le sujet.

= Configuration =

== smtpd.conf ==

== Backends ==
=== Fichiers ===
=== Base de données ===
'''ATTENTION''' Les supports de PostgreSQL, MySQL, SQLite et LDAP n'ont été ajoutés qu'a partir de la version 5.4.1 de OpenSMTPD. De plus pour activer ce support il est nécessaire d'ajouter une des directives suivante dans le fichier ''debian/rules'' (a coté des autres &quot;--with-*) avant la compilation/création du package.
 --with-experimental-ldap
 --with-experimental-mysql
 --with-experimental-postgres
 --with-experimental-sqlite

Sinon vous risquer d'avoir une erreur du type 
 smtpd: table_create: backend &quot;postgresql&quot; does not exist

= Ressources =
* {{fr}} http://petitcodeur.fr/sysadmin/opensmtpd-debian.html Installation à partir des sources
* {{fr}} http://maniatux.fr/index.php?article274/opensmtpd-debian-6-0-squeeze-howto Installation pour Squeeze
* {{en}} https://github.com/sinecure/OpenSMTPD-deb Script d'automatisation de création d'un paquet deb
* {{fr}} http://www.opensmtpd.org/fr/ Le site officiel avec sa doc plutôt complète

[[Catégorie:Serveurs]]</text>
      <sha1>iw1eq3f3tawbspkn2dmth87ncgnps9a</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5534</id>
      <parentid>5533</parentid>
      <timestamp>2014-01-22T16:25:44Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <comment>/* Base de données */</comment>
      <text xml:space="preserve" bytes="8227">= Pourquoi OpenSMTPD =
Sur le marché actuel des serveurs de courrier il y a des ancêtres (Courrier), des installés par défaut (Exim), des populaires (Postfix) et parfois des petits nouveaux venant de nos cher cousin les BSD. OpenSMTPD fait parti de cette dernière catégorie, il est issue d'une longue ligné d'outil issu du projet OpenBSD qui nous a sorti des perles comme OpenSSH qui est devenu LE standard.
Ensuite ils ont pour objectif d'en faire un serveur :
* extrêmement sécurisé
* fiable en toute circonstance (un message reçut devra êter traiter quoi qu'il se passe)
* résistant à la charge (ils ne visent pas les perfs extrême mais l'assurance du traitement dans un délai raisonnable)
* léger et suffisant pour un usage classique (pas de support de cas particulier)
* simple de configuration

Donc un serveur parfait pour de l'auto-hébergement

= Quelques rappels de base =
Malgré le fait que si vous chercher a mettre en place ce genre de serveur vous avez des bases confortables, je vais quand même redéfinir quelques termes liés à l'environnement du courrier électronique.
* MTA = Agent de transfert des courriels ('''M'''ail '''T'''ransfert '''A'''gent), on y classe tout les serveurs proposant du SMTP donc par exemple Postfix, Exim, OpenSMTPD etc. c'est a leur niveau que l'on vient filtrer le SPAM, Virus etc.
* MDA = Agent de délivrance des courriels ('''M'''ail '''D'''elivery '''A'''gent) il font l'interface entre les MTA et MUA, ils sont chargé de mettre le courrier arrivé dans la bonne boite aux lettres. Ils ont aussi la charge de donner les accès IMAP et POP.
* MUA = Agent d'utilisation des courriels ('''M'''ail '''U'''ser '''A'''gent), c'est voter client de courriel, qu'il soit par interface web (RoundCube, Horde, Hotmail, Gmail, ...) ou en client lourd (Thunderbird, Outlook, Lotus ...).
* SMTP = Protocole simple de transfert de courriel ('''S'''imple '''M'''ail '''T'''ransfert '''P'''rotocol) permet l'envoi et la réception entre MTA des courriels
* POP = Protocole de bureau de poste ('''P'''ost '''O'''ffice '''P'''rotocol) Permet de récupérer les courriers électroniques situés sur un serveur MDA. Par défaut les courriel ainsi récupérés sont supprimer du serveur.
* IMAP = Protocole d'accès aux messages d'internet ('''I'''nternet '''M'''essage '''A'''ccess '''P'''rotocol) remplacant du POP il permet d'interagir avec le serveur MDA, les courriers ne sont pas supprimer par défaut et diverses actions sont possible comme la création/modification/suppression/déplacement de dossier et courriels.

= Installation =
== Jessie==
Pour cela rien de plus simple un paquet est présent dans les dépots, donc une classique commande d'installation suffit
 apt-get install opensmtpd

== Whezzy ==
Là ça se gate, pas de paquet dispo et les backport ne l'ont pas encore pris en compte.

'''ATTENTION''' Les méthodes présentées ci-dessous sont des bidouillages, rien ne vaut un paquet issu d'un dépôt officiel Debian

Il existe bien [http://petitcodeur.fr/sysadmin/opensmtpd-debian.html la méthode classique] d'installation avec récupération des sources et compilation
&lt;pre&gt;
$wget http://www.opensmtpd.org/archives/opensmtpd-portable-latest.tar.gz
$tar xvzf opensmtpd-portable-latest.tar.gz
$cd opensmtpd-*
$ ./configure
$ make
$ make install
&lt;/pre&gt;

Mais nous allons feinter pour nous recréer un paquet tout ce qu'il y a de plus propre. Nous aurions pu récupérer le paquet de Jessie pour l'installer directement mais il y a une dépendance a Libc6 dans une version supérieur à ce qui est possible pour Whezzy, le reste des dépendances est satisfait ce qui est une chance.
Il existe [https://github.com/sinecure/OpenSMTPD-deb un script] qui permet de construire un paquet Debian avec la dernière version de notre MTA mais personnellement je n'ai pas réussit à aller au bout du process de construction.
La solution que j'ai choisit est de détourner le paquet officiel de jessie pour le compiler avec les dépendances Whezzy.
Dans notre sources.list nous allons ajouter une ligne nous permettant de récupérer les sources du paquet  
 deb-src http://ftp.fr.debian.org/debian/ jessie main

je vous recommandes quand même d'ajouter un pinning pour éviter toute mauvaise manipulation
 Package: *
 Pin: release o=Debian, a=jessie
 Pin-Priority: 490

Puis nous faisons tout d'abord les commandes suivantes
# apt-get update
# apt-get build-dep opensmtpd
# apt-get install debhelper libpam0g-dev

* La première ligne permet de prendre en compte la modification du sources.list
* La deuxième ligne de récupère différent paquet *-dev nécessaire à la recompilation
* Enfin installation de 2 paquet (et leurs dépendances) nous permettant la création d'un paquet

Ensuite avec votre utilisateur habituel dans un répertoire dédié :
 $ apt-get source opensmtpd
Cela vous récupère les sources de OpenSMTPD (pensez à commenter/supprimer les modifications de votre sources.list et preferences)
Enfin la commande de compilation
 $ fakeroot ./debian/rules binary

Laisser cuire quelques minutes et normalement vous devez obtenir un joli paquet prêt à l'emploi pour votre système.
l'installation de ce dernier se fait par un simple 
 #dpkg -i &lt;mon paquet OpenSMTPD&gt;

Si vous avez une erreur de conflit de « mail-transport-agent » c'est que vous avez Exim ou Postfix ou tout auter MTA encore présent sur votre système, ce qui n'est pas toléré par Debian.

=== Monter de version ===
Si vous voulez avoir une version encore plus récente que celle dispo dans Jessie (5.3.3 à l'heure actuelle), la version 5.4.1 par exemple qui apporte le support des bases de données. Pour cela je vous conseil de suivre le précédente méthode pour vous roder puis de récupérer les sources de la version voulue

 $wget http://www.opensmtpd.org/archives/opensmtpd-portable-latest.tar.gz
 $tar xvzf opensmtpd-portable-latest.tar.gz

Depuis le paquet source de Jessie récupérer le répertoire &quot;debian&quot; et de modifier le fichier &quot;changlog&quot; soit avec la commande suivante
 debian/$ dch -n

soit en l'éditant avec voter éditeur favori et ajouter le bloc suivant 
&lt;pre&gt;
opensmtpd (5.4.1) UNRELEASE; urgency=low
  * Non-maintainer upload.
  * reprise de la version 5.4.1
-- Vous &lt;vous@VotreMachine&gt;  Thu, 01 Jan 2014 01:30:32 +0100
&lt;/pre&gt;

Puis il suffit de lancer la compilation 
 $ fakeroot ./debian/rules binary
penser a faire cette commande si vous voulez refaire la compilation complète
 $ fakeroot ./debian/rules clean
ou pour refaire juste le .deb
 $ fakeroot ./debian/rules binary-deb

Avec cette méthode il se peut que votre MTA ne redémarre pas, cela provient du nouveau fichier de configuration qui n'est pas valide, commentez les lignes incriminées ou configurez le correctement.

== Version plus anciennes (Squezee, ...) ==
Un tutoriel se trouve [http://maniatux.fr/index.php?article274/opensmtpd-debian-6-0-squeeze-howto ici], mais come ces version de debian ne sont plus recommandé je ne traite pas le sujet.

= Configuration =

== smtpd.conf ==

== Backends ==
=== Fichiers ===
=== Base de données ===
'''ATTENTION''' Les supports de PostgreSQL, MySQL, SQLite et LDAP n'ont été ajoutés qu'a partir de la version 5.4.1 de OpenSMTPD. De plus pour activer ce support il est nécessaire d'ajouter une des directives suivante dans le fichier ''debian/rules'' (a coté des autres &quot;--with-*) avant la compilation/création du package.
 --with-experimental-ldap
 --with-experimental-mysql
 --with-experimental-postgres
 --with-experimental-sqlite

De plus pour PostgreSQL la paquet libpq-dev est nécessaire, pour le support ldap, mysql et sqlite je vous laisse trouver le paquet qui va bien.

Sinon vous risquer d'avoir une erreur du type 
 smtpd: table_create: backend &quot;postgresql&quot; does not exist

= Ressources =
* {{fr}} http://petitcodeur.fr/sysadmin/opensmtpd-debian.html Installation à partir des sources
* {{fr}} http://maniatux.fr/index.php?article274/opensmtpd-debian-6-0-squeeze-howto Installation pour Squeeze
* {{en}} https://github.com/sinecure/OpenSMTPD-deb Script d'automatisation de création d'un paquet deb
* {{fr}} http://www.opensmtpd.org/fr/ Le site officiel avec sa doc plutôt complète

[[Catégorie:Serveurs]]</text>
      <sha1>4y0t0x9ktdz8k5wh6zm4f4gb1rs5qhj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5611</id>
      <parentid>5534</parentid>
      <timestamp>2014-05-08T11:33:16Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <text xml:space="preserve" bytes="8260">= Pourquoi OpenSMTPD =
Sur le marché actuel des serveurs de courrier il y a des ancêtres (Courrier), des installés par défaut (Exim), des populaires (Postfix) et parfois des petits nouveaux venant de nos cher cousin les BSD. OpenSMTPD fait parti de cette dernière catégorie, il est issue d'une longue ligné d'outil issu du projet OpenBSD qui nous a sorti des perles comme OpenSSH qui est devenu LE standard.
Ensuite ils ont pour objectif d'en faire un serveur :
* extrêmement sécurisé
* fiable en toute circonstance (un message reçut devra être traiteé quoi qu'il se passe)
* résistant à la charge (ils ne visent pas les perfs extrêmes mais l'assurance du traitement dans un délai raisonnable)
* léger et suffisant pour un usage classique (pas de support de cas particulier)
* simple de configuration

Donc un serveur parfait pour de l'auto-hébergement

= Quelques rappels de base =
Malgré le fait que si vous chercher a mettre en place ce genre de serveur vous avez des bases confortables, je vais quand même redéfinir quelques termes liés à l'environnement du courrier électronique.
* MTA = Agent de transfert des courriels ('''M'''ail '''T'''ransfert '''A'''gent), on y classe tout les serveurs proposant du SMTP donc par exemple Postfix, Exim, OpenSMTPD etc. c'est a leur niveau que l'on vient filtrer le SPAM, Virus etc.
* MDA = Agent de délivrance des courriels ('''M'''ail '''D'''elivery '''A'''gent) il font l'interface entre les MTA et MUA, ils sont chargé de mettre le courrier arrivé dans la bonne boite aux lettres. Ils ont aussi la charge de donner les accès IMAP et POP.
* MUA = Agent d'utilisation des courriels ('''M'''ail '''U'''ser '''A'''gent), c'est voter client de courriel, qu'il soit par interface web (RoundCube, Horde, Hotmail, Gmail, ...) ou en client lourd (Thunderbird, Outlook, Lotus ...).
* SMTP = Protocole simple de transfert de courriel ('''S'''imple '''M'''ail '''T'''ransfert '''P'''rotocol) permet l'envoi et la réception entre MTA des courriels
* POP = Protocole de bureau de poste ('''P'''ost '''O'''ffice '''P'''rotocol) Permet de récupérer les courriers électroniques situés sur un serveur MDA. Par défaut les courriel ainsi récupérés sont supprimer du serveur.
* IMAP = Protocole d'accès aux messages d'internet ('''I'''nternet '''M'''essage '''A'''ccess '''P'''rotocol) remplaçant du POP il permet d'interagir avec le serveur MDA, les courriers ne sont pas supprimer par défaut et diverses actions sont possibles comme la création/modification/suppression/déplacement de dossier et courriels.

= Installation =
== Jessie==
Pour cela rien de plus simple un paquet est présent dans les dépôts, donc une classique commande d'installation suffit
 apt-get install opensmtpd

== Whezzy ==
Là ça se gate, pas de paquet dispo et les backport ne l'ont pas encore pris en compte.

'''ATTENTION''' Les méthodes présentées ci-dessous sont des bidouillages, rien ne vaut un paquet issu d'un dépôt officiel Debian

Il existe bien [http://petitcodeur.fr/sysadmin/opensmtpd-debian.html la méthode classique] d'installation avec récupération des sources et compilation
&lt;pre&gt;
$wget http://www.opensmtpd.org/archives/opensmtpd-portable-latest.tar.gz
$tar xvzf opensmtpd-portable-latest.tar.gz
$cd opensmtpd-*
$ ./configure
$ make
$ make install
&lt;/pre&gt;

Mais nous allons feinter pour nous recréer un paquet tout ce qu'il y a de plus propre. Nous aurions pu récupérer le paquet de Jessie pour l'installer directement mais il y a une dépendance a Libc6 dans une version supérieur à ce qui est possible pour Whezzy, le reste des dépendances est satisfait ce qui est une chance.
Il existe [https://github.com/sinecure/OpenSMTPD-deb un script] qui permet de construire un paquet Debian avec la dernière version de notre MTA mais personnellement je n'ai pas réussit à aller au bout du processus de construction.
La solution que j'ai choisit est de détourner le paquet officiel de jessie pour le compiler avec les dépendances Whezzy.
Dans notre sources.list nous allons ajouter une ligne nous permettant de récupérer les sources du paquet.  
 deb-src http://ftp.fr.debian.org/debian/ jessie main

je vous recommande quand même d'ajouter un pinning pour éviter toute mauvaise manipulation
 Package: *
 Pin: release o=Debian, a=jessie
 Pin-Priority: 490

Puis nous faisons tout d'abord les commandes suivantes
# apt-get update
# apt-get build-dep opensmtpd
# apt-get install debhelper libpam0g-dev devscripts

* La première ligne permet de prendre en compte la modification du sources.list
* La deuxième ligne de récupère différent paquet *-dev nécessaire à la recompilation
* Enfin installation de 3 paquet (et leurs dépendances) nous permettant la création/modification d'un paquet

Ensuite avec votre utilisateur habituel dans un répertoire dédié :
 $ apt-get source opensmtpd
Cela vous récupère les sources de OpenSMTPD (pensez à commenter/supprimer les modifications de votre sources.list et preferences)
Enfin la commande de compilation
 $ fakeroot ./debian/rules binary

Laisser cuire quelques minutes et normalement vous devez obtenir un joli paquet prêt à l'emploi pour votre système.
l'installation de ce dernier se fait par un simple 
 #dpkg -i &lt;mon paquet OpenSMTPD&gt;

Si vous avez une erreur de conflit de « mail-transport-agent » c'est que vous avez Exim ou Postfix ou tout autre MTA encore présent sur votre système, ce qui n'est pas toléré par Debian.

=== Monter de version ===
Si vous voulez avoir une version encore plus récente que celle dispo dans Jessie (5.3.3 à l'heure actuelle), la version 5.4.1 par exemple qui apporte le support des bases de données. Pour cela je vous conseil de suivre la précédente méthode pour vous roder puis de récupérer les sources de la version voulue

 $wget http://www.opensmtpd.org/archives/opensmtpd-portable-latest.tar.gz
 $tar xvzf opensmtpd-portable-latest.tar.gz

Depuis le paquet source de Jessie récupérer le répertoire &quot;debian&quot; et de modifier le fichier &quot;changlog&quot; soit avec la commande suivante
 debian/$ dch -n

Soit en l'éditant avec votre éditeur favori et ajouter le bloc suivant 
&lt;pre&gt;
opensmtpd (5.4.1) UNRELEASE; urgency=low
  * Non-maintainer upload.
  * reprise de la version 5.4.1
-- Vous &lt;vous@VotreMachine&gt;  Thu, 01 Jan 2014 01:30:32 +0100
&lt;/pre&gt;

Puis il suffit de lancer la compilation 
 $ fakeroot ./debian/rules binary
Penser a faire cette commande si vous voulez refaire la compilation complète
 $ fakeroot ./debian/rules clean
Ou pour refaire juste le .deb
 $ fakeroot ./debian/rules binary-deb

Avec cette méthode il se peut que votre MTA ne redémarre pas, cela provient du nouveau fichier de configuration qui n'est pas valide, commentez les lignes incriminées ou configurez le correctement.

== Version plus anciennes (Squezee, ...) ==
Un tutoriel se trouve [http://maniatux.fr/index.php?article274/opensmtpd-debian-6-0-squeeze-howto ici], mais comme ces versions de Debian ne sont plus recommandé je ne traite pas le sujet.

= Configuration =

== smtpd.conf ==

== Backends ==
=== Fichiers ===
=== Base de données ===
'''ATTENTION''' Les supports de PostgreSQL, MySQL, SQLite et LDAP n'ont été ajoutés qu'a partir de la version 5.4.1 de OpenSMTPD. De plus pour activer ce support il est nécessaire d'ajouter une des directives suivante dans le fichier ''debian/rules'' (a coté des autres &quot;--with-*) avant la compilation/création du package.
 --with-experimental-ldap
 --with-experimental-mysql
 --with-experimental-postgres
 --with-experimental-sqlite

De plus pour PostgreSQL la paquet libpq-dev est nécessaire, pour le support ldap, mysql et sqlite je vous laisse trouver le paquet qui va bien.

Sinon vous risquer d'avoir une erreur du type 
 smtpd: table_create: backend &quot;postgresql&quot; does not exist

= Ressources =
* {{fr}} http://petitcodeur.fr/sysadmin/opensmtpd-debian.html Installation à partir des sources
* {{fr}} http://maniatux.fr/index.php?article274/opensmtpd-debian-6-0-squeeze-howto Installation pour Squeeze
* {{en}} https://github.com/sinecure/OpenSMTPD-deb Script d'automatisation de création d'un paquet deb
* {{fr}} http://www.opensmtpd.org/fr/ Le site officiel avec sa doc plutôt complète

[[Catégorie:Serveurs]]</text>
      <sha1>gpqf71biwxabdbln52nsg0z9rr4n867</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5612</id>
      <parentid>5611</parentid>
      <timestamp>2014-05-08T12:14:49Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <text xml:space="preserve" bytes="8479">= Pourquoi OpenSMTPD =
Sur le marché actuel des serveurs de courrier il y a des ancêtres (Courrier), des installés par défaut (Exim), des populaires (Postfix) et parfois des petits nouveaux venant de nos cher cousin les BSD. OpenSMTPD fait parti de cette dernière catégorie, il est issue d'une longue ligné d'outil issu du projet OpenBSD qui nous a sorti des perles comme OpenSSH qui est devenu LE standard.
Ensuite ils ont pour objectif d'en faire un serveur :
* extrêmement sécurisé
* fiable en toute circonstance (un message reçut devra être traiteé quoi qu'il se passe)
* résistant à la charge (ils ne visent pas les perfs extrêmes mais l'assurance du traitement dans un délai raisonnable)
* léger et suffisant pour un usage classique (pas de support de cas particulier)
* simple de configuration

Donc un serveur parfait pour de l'auto-hébergement

= Quelques rappels de base =
Malgré le fait que si vous chercher a mettre en place ce genre de serveur vous avez des bases confortables, je vais quand même redéfinir quelques termes liés à l'environnement du courrier électronique.
* MTA = Agent de transfert des courriels ('''M'''ail '''T'''ransfert '''A'''gent), on y classe tout les serveurs proposant du SMTP donc par exemple Postfix, Exim, OpenSMTPD etc. c'est a leur niveau que l'on vient filtrer le SPAM, Virus etc.
* MDA = Agent de délivrance des courriels ('''M'''ail '''D'''elivery '''A'''gent) il font l'interface entre les MTA et MUA, ils sont chargé de mettre le courrier arrivé dans la bonne boite aux lettres. Ils ont aussi la charge de donner les accès IMAP et POP.
* MUA = Agent d'utilisation des courriels ('''M'''ail '''U'''ser '''A'''gent), c'est voter client de courriel, qu'il soit par interface web (RoundCube, Horde, Hotmail, Gmail, ...) ou en client lourd (Thunderbird, Outlook, Lotus ...).
* MRA = Agent de récupération des courriels ('''M'''ail '''R'''etrival '''A'''gent), permet d'aller récupérer les courriels sur un autre serveur (gmail, Yahoo, lapost.net, ...) pour les intégrer au compte courant.
* SMTP = Protocole simple de transfert de courriel ('''S'''imple '''M'''ail '''T'''ransfert '''P'''rotocol) permet l'envoi et la réception entre MTA des courriels
* POP = Protocole de bureau de poste ('''P'''ost '''O'''ffice '''P'''rotocol) Permet de récupérer les courriers électroniques situés sur un serveur MDA. Par défaut les courriel ainsi récupérés sont supprimer du serveur.
* IMAP = Protocole d'accès aux messages d'internet ('''I'''nternet '''M'''essage '''A'''ccess '''P'''rotocol) remplaçant du POP il permet d'interagir avec le serveur MDA, les courriers ne sont pas supprimer par défaut et diverses actions sont possibles comme la création/modification/suppression/déplacement de dossier et courriels.

= Installation =
== Jessie==
Pour cela rien de plus simple un paquet est présent dans les dépôts, donc une classique commande d'installation suffit
 apt-get install opensmtpd

== Whezzy ==
Là ça se gate, pas de paquet dispo et les backport ne l'ont pas encore pris en compte.

'''ATTENTION''' Les méthodes présentées ci-dessous sont des bidouillages, rien ne vaut un paquet issu d'un dépôt officiel Debian

Il existe bien [http://petitcodeur.fr/sysadmin/opensmtpd-debian.html la méthode classique] d'installation avec récupération des sources et compilation
&lt;pre&gt;
$wget http://www.opensmtpd.org/archives/opensmtpd-portable-latest.tar.gz
$tar xvzf opensmtpd-portable-latest.tar.gz
$cd opensmtpd-*
$ ./configure
$ make
$ make install
&lt;/pre&gt;

Mais nous allons feinter pour nous recréer un paquet tout ce qu'il y a de plus propre. Nous aurions pu récupérer le paquet de Jessie pour l'installer directement mais il y a une dépendance a Libc6 dans une version supérieur à ce qui est possible pour Whezzy, le reste des dépendances est satisfait ce qui est une chance.
Il existe [https://github.com/sinecure/OpenSMTPD-deb un script] qui permet de construire un paquet Debian avec la dernière version de notre MTA mais personnellement je n'ai pas réussit à aller au bout du processus de construction.
La solution que j'ai choisit est de détourner le paquet officiel de jessie pour le compiler avec les dépendances Whezzy.
Dans notre sources.list nous allons ajouter une ligne nous permettant de récupérer les sources du paquet.  
 deb-src http://ftp.fr.debian.org/debian/ jessie main

je vous recommande quand même d'ajouter un pinning pour éviter toute mauvaise manipulation
 Package: *
 Pin: release o=Debian, a=jessie
 Pin-Priority: 490

Puis nous faisons tout d'abord les commandes suivantes
# apt-get update
# apt-get build-dep opensmtpd
# apt-get install debhelper libpam0g-dev devscripts

* La première ligne permet de prendre en compte la modification du sources.list
* La deuxième ligne de récupère différent paquet *-dev nécessaire à la recompilation
* Enfin installation de 3 paquet (et leurs dépendances) nous permettant la création/modification d'un paquet

Ensuite avec votre utilisateur habituel dans un répertoire dédié :
 $ apt-get source opensmtpd
Cela vous récupère les sources de OpenSMTPD (pensez à commenter/supprimer les modifications de votre sources.list et preferences)
Enfin la commande de compilation
 $ fakeroot ./debian/rules binary

Laisser cuire quelques minutes et normalement vous devez obtenir un joli paquet prêt à l'emploi pour votre système.
l'installation de ce dernier se fait par un simple 
 #dpkg -i &lt;mon paquet OpenSMTPD&gt;

Si vous avez une erreur de conflit de « mail-transport-agent » c'est que vous avez Exim ou Postfix ou tout autre MTA encore présent sur votre système, ce qui n'est pas toléré par Debian.

=== Monter de version ===
Si vous voulez avoir une version encore plus récente que celle dispo dans Jessie (5.3.3 à l'heure actuelle), la version 5.4.1 par exemple qui apporte le support des bases de données. Pour cela je vous conseil de suivre la précédente méthode pour vous roder puis de récupérer les sources de la version voulue

 $wget http://www.opensmtpd.org/archives/opensmtpd-portable-latest.tar.gz
 $tar xvzf opensmtpd-portable-latest.tar.gz

Depuis le paquet source de Jessie récupérer le répertoire &quot;debian&quot; et de modifier le fichier &quot;changlog&quot; soit avec la commande suivante
 debian/$ dch -n

Soit en l'éditant avec votre éditeur favori et ajouter le bloc suivant 
&lt;pre&gt;
opensmtpd (5.4.1) UNRELEASE; urgency=low
  * Non-maintainer upload.
  * reprise de la version 5.4.1
-- Vous &lt;vous@VotreMachine&gt;  Thu, 01 Jan 2014 01:30:32 +0100
&lt;/pre&gt;

Puis il suffit de lancer la compilation 
 $ fakeroot ./debian/rules binary
Penser a faire cette commande si vous voulez refaire la compilation complète
 $ fakeroot ./debian/rules clean
Ou pour refaire juste le .deb
 $ fakeroot ./debian/rules binary-deb

Avec cette méthode il se peut que votre MTA ne redémarre pas, cela provient du nouveau fichier de configuration qui n'est pas valide, commentez les lignes incriminées ou configurez le correctement.

== Version plus anciennes (Squezee, ...) ==
Un tutoriel se trouve [http://maniatux.fr/index.php?article274/opensmtpd-debian-6-0-squeeze-howto ici], mais comme ces versions de Debian ne sont plus recommandé je ne traite pas le sujet.

= Configuration =

== smtpd.conf ==

== Backends ==
=== Fichiers ===
=== Base de données ===
'''ATTENTION''' Les supports de PostgreSQL, MySQL, SQLite et LDAP n'ont été ajoutés qu'a partir de la version 5.4.1 de OpenSMTPD. De plus pour activer ce support il est nécessaire d'ajouter une des directives suivante dans le fichier ''debian/rules'' (a coté des autres &quot;--with-*) avant la compilation/création du package.
 --with-experimental-ldap
 --with-experimental-mysql
 --with-experimental-postgres
 --with-experimental-sqlite

De plus pour PostgreSQL la paquet libpq-dev est nécessaire, pour le support ldap, mysql et sqlite je vous laisse trouver le paquet qui va bien.

Sinon vous risquer d'avoir une erreur du type 
 smtpd: table_create: backend &quot;postgresql&quot; does not exist

= Ressources =
* {{fr}} http://petitcodeur.fr/sysadmin/opensmtpd-debian.html Installation à partir des sources
* {{fr}} http://maniatux.fr/index.php?article274/opensmtpd-debian-6-0-squeeze-howto Installation pour Squeeze
* {{en}} https://github.com/sinecure/OpenSMTPD-deb Script d'automatisation de création d'un paquet deb
* {{fr}} http://www.opensmtpd.org/fr/ Le site officiel avec sa doc plutôt complète

[[Catégorie:Serveurs]]</text>
      <sha1>1zu5y2avok9ahdnj7iy3ehdv1wxyfg6</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5613</id>
      <parentid>5612</parentid>
      <timestamp>2014-05-08T12:17:39Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <text xml:space="preserve" bytes="8581">= Pourquoi OpenSMTPD =
Sur le marché actuel des serveurs de courrier il y a des ancêtres (Courrier), des installés par défaut (Exim), des populaires (Postfix) et parfois des petits nouveaux venant de nos cher cousin les BSD. OpenSMTPD fait parti de cette dernière catégorie, il est issue d'une longue ligné d'outil issu du projet OpenBSD qui nous a sorti des perles comme OpenSSH qui est devenu LE standard.
Ensuite ils ont pour objectif d'en faire un serveur :
* extrêmement sécurisé
* fiable en toute circonstance (un message reçut devra être traiteé quoi qu'il se passe)
* résistant à la charge (ils ne visent pas les perfs extrêmes mais l'assurance du traitement dans un délai raisonnable)
* léger et suffisant pour un usage classique (pas de support de cas particulier)
* simple de configuration

Donc un serveur parfait pour de l'auto-hébergement

= Quelques rappels de base =
Malgré le fait que si vous chercher a mettre en place ce genre de serveur vous avez des bases confortables, je vais quand même redéfinir quelques termes liés à l'environnement du courrier électronique.
* MTA = Agent de transfert des courriels ('''M'''ail '''T'''ransfert '''A'''gent), on y classe tout les serveurs proposant du SMTP donc par exemple Postfix, Exim, OpenSMTPD etc. c'est a leur niveau que l'on vient filtrer le SPAM, Virus etc.
* MDA = Agent de délivrance des courriels ('''M'''ail '''D'''elivery '''A'''gent) il font l'interface entre les MTA et MUA, ils sont chargé de mettre le courrier arrivé dans la bonne boite aux lettres. Ils ont aussi la charge de donner les accès IMAP et POP.
* MUA = Agent d'utilisation des courriels ('''M'''ail '''U'''ser '''A'''gent), c'est voter client de courriel, qu'il soit par interface web (RoundCube, Horde, Hotmail, Gmail, ...) ou en client lourd (Thunderbird, Outlook, Lotus ...).
* MRA = Agent de récupération des courriels ('''M'''ail '''R'''etrival '''A'''gent), permet d'aller récupérer les courriels sur un autre serveur (gmail, Yahoo, lapost.net, ...) pour les intégrer au compte courant. En général il s'agit d'un client POP ou IMAP, les plus connus sont fetchmail, getmail et retchmail.
* SMTP = Protocole simple de transfert de courriel ('''S'''imple '''M'''ail '''T'''ransfert '''P'''rotocol) permet l'envoi et la réception entre MTA des courriels
* POP = Protocole de bureau de poste ('''P'''ost '''O'''ffice '''P'''rotocol) Permet de récupérer les courriers électroniques situés sur un serveur MDA. Par défaut les courriel ainsi récupérés sont supprimer du serveur.
* IMAP = Protocole d'accès aux messages d'internet ('''I'''nternet '''M'''essage '''A'''ccess '''P'''rotocol) remplaçant du POP il permet d'interagir avec le serveur MDA, les courriers ne sont pas supprimer par défaut et diverses actions sont possibles comme la création/modification/suppression/déplacement de dossier et courriels.

= Installation =
== Jessie==
Pour cela rien de plus simple un paquet est présent dans les dépôts, donc une classique commande d'installation suffit
 apt-get install opensmtpd

== Whezzy ==
Là ça se gate, pas de paquet dispo et les backport ne l'ont pas encore pris en compte.

'''ATTENTION''' Les méthodes présentées ci-dessous sont des bidouillages, rien ne vaut un paquet issu d'un dépôt officiel Debian

Il existe bien [http://petitcodeur.fr/sysadmin/opensmtpd-debian.html la méthode classique] d'installation avec récupération des sources et compilation
&lt;pre&gt;
$wget http://www.opensmtpd.org/archives/opensmtpd-portable-latest.tar.gz
$tar xvzf opensmtpd-portable-latest.tar.gz
$cd opensmtpd-*
$ ./configure
$ make
$ make install
&lt;/pre&gt;

Mais nous allons feinter pour nous recréer un paquet tout ce qu'il y a de plus propre. Nous aurions pu récupérer le paquet de Jessie pour l'installer directement mais il y a une dépendance a Libc6 dans une version supérieur à ce qui est possible pour Whezzy, le reste des dépendances est satisfait ce qui est une chance.
Il existe [https://github.com/sinecure/OpenSMTPD-deb un script] qui permet de construire un paquet Debian avec la dernière version de notre MTA mais personnellement je n'ai pas réussit à aller au bout du processus de construction.
La solution que j'ai choisit est de détourner le paquet officiel de jessie pour le compiler avec les dépendances Whezzy.
Dans notre sources.list nous allons ajouter une ligne nous permettant de récupérer les sources du paquet.  
 deb-src http://ftp.fr.debian.org/debian/ jessie main

je vous recommande quand même d'ajouter un pinning pour éviter toute mauvaise manipulation
 Package: *
 Pin: release o=Debian, a=jessie
 Pin-Priority: 490

Puis nous faisons tout d'abord les commandes suivantes
# apt-get update
# apt-get build-dep opensmtpd
# apt-get install debhelper libpam0g-dev devscripts

* La première ligne permet de prendre en compte la modification du sources.list
* La deuxième ligne de récupère différent paquet *-dev nécessaire à la recompilation
* Enfin installation de 3 paquet (et leurs dépendances) nous permettant la création/modification d'un paquet

Ensuite avec votre utilisateur habituel dans un répertoire dédié :
 $ apt-get source opensmtpd
Cela vous récupère les sources de OpenSMTPD (pensez à commenter/supprimer les modifications de votre sources.list et preferences)
Enfin la commande de compilation
 $ fakeroot ./debian/rules binary

Laisser cuire quelques minutes et normalement vous devez obtenir un joli paquet prêt à l'emploi pour votre système.
l'installation de ce dernier se fait par un simple 
 #dpkg -i &lt;mon paquet OpenSMTPD&gt;

Si vous avez une erreur de conflit de « mail-transport-agent » c'est que vous avez Exim ou Postfix ou tout autre MTA encore présent sur votre système, ce qui n'est pas toléré par Debian.

=== Monter de version ===
Si vous voulez avoir une version encore plus récente que celle dispo dans Jessie (5.3.3 à l'heure actuelle), la version 5.4.1 par exemple qui apporte le support des bases de données. Pour cela je vous conseil de suivre la précédente méthode pour vous roder puis de récupérer les sources de la version voulue

 $wget http://www.opensmtpd.org/archives/opensmtpd-portable-latest.tar.gz
 $tar xvzf opensmtpd-portable-latest.tar.gz

Depuis le paquet source de Jessie récupérer le répertoire &quot;debian&quot; et de modifier le fichier &quot;changlog&quot; soit avec la commande suivante
 debian/$ dch -n

Soit en l'éditant avec votre éditeur favori et ajouter le bloc suivant 
&lt;pre&gt;
opensmtpd (5.4.1) UNRELEASE; urgency=low
  * Non-maintainer upload.
  * reprise de la version 5.4.1
-- Vous &lt;vous@VotreMachine&gt;  Thu, 01 Jan 2014 01:30:32 +0100
&lt;/pre&gt;

Puis il suffit de lancer la compilation 
 $ fakeroot ./debian/rules binary
Penser a faire cette commande si vous voulez refaire la compilation complète
 $ fakeroot ./debian/rules clean
Ou pour refaire juste le .deb
 $ fakeroot ./debian/rules binary-deb

Avec cette méthode il se peut que votre MTA ne redémarre pas, cela provient du nouveau fichier de configuration qui n'est pas valide, commentez les lignes incriminées ou configurez le correctement.

== Version plus anciennes (Squezee, ...) ==
Un tutoriel se trouve [http://maniatux.fr/index.php?article274/opensmtpd-debian-6-0-squeeze-howto ici], mais comme ces versions de Debian ne sont plus recommandé je ne traite pas le sujet.

= Configuration =

== smtpd.conf ==

== Backends ==
=== Fichiers ===
=== Base de données ===
'''ATTENTION''' Les supports de PostgreSQL, MySQL, SQLite et LDAP n'ont été ajoutés qu'a partir de la version 5.4.1 de OpenSMTPD. De plus pour activer ce support il est nécessaire d'ajouter une des directives suivante dans le fichier ''debian/rules'' (a coté des autres &quot;--with-*) avant la compilation/création du package.
 --with-experimental-ldap
 --with-experimental-mysql
 --with-experimental-postgres
 --with-experimental-sqlite

De plus pour PostgreSQL la paquet libpq-dev est nécessaire, pour le support ldap, mysql et sqlite je vous laisse trouver le paquet qui va bien.

Sinon vous risquer d'avoir une erreur du type 
 smtpd: table_create: backend &quot;postgresql&quot; does not exist

= Ressources =
* {{fr}} http://petitcodeur.fr/sysadmin/opensmtpd-debian.html Installation à partir des sources
* {{fr}} http://maniatux.fr/index.php?article274/opensmtpd-debian-6-0-squeeze-howto Installation pour Squeeze
* {{en}} https://github.com/sinecure/OpenSMTPD-deb Script d'automatisation de création d'un paquet deb
* {{fr}} http://www.opensmtpd.org/fr/ Le site officiel avec sa doc plutôt complète

[[Catégorie:Serveurs]]</text>
      <sha1>89os1os72x9hvl1l4sp72ed46uwzfk1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5625</id>
      <parentid>5613</parentid>
      <timestamp>2014-06-08T23:22:50Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <comment>/* Monter de version */</comment>
      <text xml:space="preserve" bytes="8877">= Pourquoi OpenSMTPD =
Sur le marché actuel des serveurs de courrier il y a des ancêtres (Courrier), des installés par défaut (Exim), des populaires (Postfix) et parfois des petits nouveaux venant de nos cher cousin les BSD. OpenSMTPD fait parti de cette dernière catégorie, il est issue d'une longue ligné d'outil issu du projet OpenBSD qui nous a sorti des perles comme OpenSSH qui est devenu LE standard.
Ensuite ils ont pour objectif d'en faire un serveur :
* extrêmement sécurisé
* fiable en toute circonstance (un message reçut devra être traiteé quoi qu'il se passe)
* résistant à la charge (ils ne visent pas les perfs extrêmes mais l'assurance du traitement dans un délai raisonnable)
* léger et suffisant pour un usage classique (pas de support de cas particulier)
* simple de configuration

Donc un serveur parfait pour de l'auto-hébergement

= Quelques rappels de base =
Malgré le fait que si vous chercher a mettre en place ce genre de serveur vous avez des bases confortables, je vais quand même redéfinir quelques termes liés à l'environnement du courrier électronique.
* MTA = Agent de transfert des courriels ('''M'''ail '''T'''ransfert '''A'''gent), on y classe tout les serveurs proposant du SMTP donc par exemple Postfix, Exim, OpenSMTPD etc. c'est a leur niveau que l'on vient filtrer le SPAM, Virus etc.
* MDA = Agent de délivrance des courriels ('''M'''ail '''D'''elivery '''A'''gent) il font l'interface entre les MTA et MUA, ils sont chargé de mettre le courrier arrivé dans la bonne boite aux lettres. Ils ont aussi la charge de donner les accès IMAP et POP.
* MUA = Agent d'utilisation des courriels ('''M'''ail '''U'''ser '''A'''gent), c'est voter client de courriel, qu'il soit par interface web (RoundCube, Horde, Hotmail, Gmail, ...) ou en client lourd (Thunderbird, Outlook, Lotus ...).
* MRA = Agent de récupération des courriels ('''M'''ail '''R'''etrival '''A'''gent), permet d'aller récupérer les courriels sur un autre serveur (gmail, Yahoo, lapost.net, ...) pour les intégrer au compte courant. En général il s'agit d'un client POP ou IMAP, les plus connus sont fetchmail, getmail et retchmail.
* SMTP = Protocole simple de transfert de courriel ('''S'''imple '''M'''ail '''T'''ransfert '''P'''rotocol) permet l'envoi et la réception entre MTA des courriels
* POP = Protocole de bureau de poste ('''P'''ost '''O'''ffice '''P'''rotocol) Permet de récupérer les courriers électroniques situés sur un serveur MDA. Par défaut les courriel ainsi récupérés sont supprimer du serveur.
* IMAP = Protocole d'accès aux messages d'internet ('''I'''nternet '''M'''essage '''A'''ccess '''P'''rotocol) remplaçant du POP il permet d'interagir avec le serveur MDA, les courriers ne sont pas supprimer par défaut et diverses actions sont possibles comme la création/modification/suppression/déplacement de dossier et courriels.

= Installation =
== Jessie==
Pour cela rien de plus simple un paquet est présent dans les dépôts, donc une classique commande d'installation suffit
 apt-get install opensmtpd

== Whezzy ==
Là ça se gate, pas de paquet dispo et les backport ne l'ont pas encore pris en compte.

'''ATTENTION''' Les méthodes présentées ci-dessous sont des bidouillages, rien ne vaut un paquet issu d'un dépôt officiel Debian

Il existe bien [http://petitcodeur.fr/sysadmin/opensmtpd-debian.html la méthode classique] d'installation avec récupération des sources et compilation
&lt;pre&gt;
$wget http://www.opensmtpd.org/archives/opensmtpd-portable-latest.tar.gz
$tar xvzf opensmtpd-portable-latest.tar.gz
$cd opensmtpd-*
$ ./configure
$ make
$ make install
&lt;/pre&gt;

Mais nous allons feinter pour nous recréer un paquet tout ce qu'il y a de plus propre. Nous aurions pu récupérer le paquet de Jessie pour l'installer directement mais il y a une dépendance a Libc6 dans une version supérieur à ce qui est possible pour Whezzy, le reste des dépendances est satisfait ce qui est une chance.
Il existe [https://github.com/sinecure/OpenSMTPD-deb un script] qui permet de construire un paquet Debian avec la dernière version de notre MTA mais personnellement je n'ai pas réussit à aller au bout du processus de construction.
La solution que j'ai choisit est de détourner le paquet officiel de jessie pour le compiler avec les dépendances Whezzy.
Dans notre sources.list nous allons ajouter une ligne nous permettant de récupérer les sources du paquet.  
 deb-src http://ftp.fr.debian.org/debian/ jessie main

je vous recommande quand même d'ajouter un pinning pour éviter toute mauvaise manipulation
 Package: *
 Pin: release o=Debian, a=jessie
 Pin-Priority: 490

Puis nous faisons tout d'abord les commandes suivantes
# apt-get update
# apt-get build-dep opensmtpd
# apt-get install debhelper libpam0g-dev devscripts

* La première ligne permet de prendre en compte la modification du sources.list
* La deuxième ligne de récupère différent paquet *-dev nécessaire à la recompilation
* Enfin installation de 3 paquet (et leurs dépendances) nous permettant la création/modification d'un paquet

Ensuite avec votre utilisateur habituel dans un répertoire dédié :
 $ apt-get source opensmtpd
Cela vous récupère les sources de OpenSMTPD (pensez à commenter/supprimer les modifications de votre sources.list et preferences)
Enfin la commande de compilation
 $ fakeroot ./debian/rules binary

Laisser cuire quelques minutes et normalement vous devez obtenir un joli paquet prêt à l'emploi pour votre système.
l'installation de ce dernier se fait par un simple 
 #dpkg -i &lt;mon paquet OpenSMTPD&gt;

Si vous avez une erreur de conflit de « mail-transport-agent » c'est que vous avez Exim ou Postfix ou tout autre MTA encore présent sur votre système, ce qui n'est pas toléré par Debian.

=== Monter de version ===
Si vous voulez avoir une version encore plus récente que celle dispo dans Jessie (5.3.3 à l'heure actuelle), la version 5.4.1 par exemple qui apporte le support des bases de données. Pour cela je vous conseil de suivre la précédente méthode pour vous roder puis de récupérer les sources de la version voulue

 $wget http://www.opensmtpd.org/archives/opensmtpd-portable-latest.tar.gz
 $tar xvzf opensmtpd-portable-latest.tar.gz

Depuis le paquet source de Jessie récupérer le répertoire &quot;debian&quot; et de modifier le fichier &quot;changlog&quot; soit avec la commande suivante
 debian/$ dch -n

Soit en l'éditant avec votre éditeur favori et ajouter le bloc suivant 
&lt;pre&gt;
opensmtpd (5.4.1) UNRELEASE; urgency=low
  * Non-maintainer upload.
  * reprise de la version 5.4.1
-- Vous &lt;vous@VotreMachine&gt;  Thu, 01 Jan 2014 01:30:32 +0100
&lt;/pre&gt;

Il est possible que les pachs inclu dans le répertoir «debian» vous soient utile, pour les appliquer il suffit de faire les commandes suivantes :
Une première fois pour tester :
 $patch -p1 --dry-run&lt;debian/patches/*

Et pour réellement appliquer les patchs :
 $patch -p1 &lt;debian/patches/*

Puis il suffit de lancer la compilation 
 $ fakeroot ./debian/rules binary
Penser a faire cette commande si vous voulez refaire la compilation complète
 $ fakeroot ./debian/rules clean
Ou pour refaire juste le .deb
 $ fakeroot ./debian/rules binary-deb

Avec cette méthode il se peut que votre MTA ne redémarre pas, cela provient du nouveau fichier de configuration qui n'est pas valide, commentez les lignes incriminées ou configurez le correctement.

== Version plus anciennes (Squezee, ...) ==
Un tutoriel se trouve [http://maniatux.fr/index.php?article274/opensmtpd-debian-6-0-squeeze-howto ici], mais comme ces versions de Debian ne sont plus recommandé je ne traite pas le sujet.

= Configuration =

== smtpd.conf ==

== Backends ==
=== Fichiers ===
=== Base de données ===
'''ATTENTION''' Les supports de PostgreSQL, MySQL, SQLite et LDAP n'ont été ajoutés qu'a partir de la version 5.4.1 de OpenSMTPD. De plus pour activer ce support il est nécessaire d'ajouter une des directives suivante dans le fichier ''debian/rules'' (a coté des autres &quot;--with-*) avant la compilation/création du package.
 --with-experimental-ldap
 --with-experimental-mysql
 --with-experimental-postgres
 --with-experimental-sqlite

De plus pour PostgreSQL la paquet libpq-dev est nécessaire, pour le support ldap, mysql et sqlite je vous laisse trouver le paquet qui va bien.

Sinon vous risquer d'avoir une erreur du type 
 smtpd: table_create: backend &quot;postgresql&quot; does not exist

= Ressources =
* {{fr}} http://petitcodeur.fr/sysadmin/opensmtpd-debian.html Installation à partir des sources
* {{fr}} http://maniatux.fr/index.php?article274/opensmtpd-debian-6-0-squeeze-howto Installation pour Squeeze
* {{en}} https://github.com/sinecure/OpenSMTPD-deb Script d'automatisation de création d'un paquet deb
* {{fr}} http://www.opensmtpd.org/fr/ Le site officiel avec sa doc plutôt complète

[[Catégorie:Serveurs]]</text>
      <sha1>b9xxzd0lw3y7cer50g8034klgglcbyw</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5626</id>
      <parentid>5625</parentid>
      <timestamp>2014-06-09T15:41:18Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <text xml:space="preserve" bytes="11080">= Pourquoi OpenSMTPD =
Sur le marché actuel des serveurs de courrier il y a des ancêtres (Courrier), des installés par défaut (Exim), des populaires (Postfix) et parfois des petits nouveaux venant de nos cher cousin les BSD. OpenSMTPD fait parti de cette dernière catégorie, il est issue d'une longue ligné d'outil issu du projet OpenBSD qui nous a sorti des perles comme OpenSSH qui est devenu LE standard.
Ensuite ils ont pour objectif d'en faire un serveur :
* extrêmement sécurisé
* fiable en toute circonstance (un message reçut devra être traiteé quoi qu'il se passe)
* résistant à la charge (ils ne visent pas les perfs extrêmes mais l'assurance du traitement dans un délai raisonnable)
* léger et suffisant pour un usage classique (pas de support de cas particulier)
* simple de configuration

Donc un serveur parfait pour de l'auto-hébergement

= Quelques rappels de base =
Malgré le fait que si vous chercher a mettre en place ce genre de serveur vous avez des bases confortables, je vais quand même redéfinir quelques termes liés à l'environnement du courrier électronique.
* MTA = Agent de transfert des courriels ('''M'''ail '''T'''ransfert '''A'''gent), on y classe tout les serveurs proposant du SMTP donc par exemple Postfix, Exim, OpenSMTPD etc. c'est a leur niveau que l'on vient filtrer le SPAM, Virus etc.
* MDA = Agent de délivrance des courriels ('''M'''ail '''D'''elivery '''A'''gent) il font l'interface entre les MTA et MUA, ils sont chargé de mettre le courrier arrivé dans la bonne boite aux lettres. Ils ont aussi la charge de donner les accès IMAP et POP.
* MUA = Agent d'utilisation des courriels ('''M'''ail '''U'''ser '''A'''gent), c'est voter client de courriel, qu'il soit par interface web (RoundCube, Horde, Hotmail, Gmail, ...) ou en client lourd (Thunderbird, Outlook, Lotus ...).
* MRA = Agent de récupération des courriels ('''M'''ail '''R'''etrival '''A'''gent), permet d'aller récupérer les courriels sur un autre serveur (gmail, Yahoo, lapost.net, ...) pour les intégrer au compte courant. En général il s'agit d'un client POP ou IMAP, les plus connus sont fetchmail, getmail et retchmail.
* SMTP = Protocole simple de transfert de courriel ('''S'''imple '''M'''ail '''T'''ransfert '''P'''rotocol) permet l'envoi et la réception entre MTA des courriels
* POP = Protocole de bureau de poste ('''P'''ost '''O'''ffice '''P'''rotocol) Permet de récupérer les courriers électroniques situés sur un serveur MDA. Par défaut les courriel ainsi récupérés sont supprimer du serveur.
* IMAP = Protocole d'accès aux messages d'internet ('''I'''nternet '''M'''essage '''A'''ccess '''P'''rotocol) remplaçant du POP il permet d'interagir avec le serveur MDA, les courriers ne sont pas supprimer par défaut et diverses actions sont possibles comme la création/modification/suppression/déplacement de dossier et courriels.

= Installation =
== Jessie==
Pour cela rien de plus simple un paquet est présent dans les dépôts, donc une classique commande d'installation suffit
 apt-get install opensmtpd

== Whezzy ==
Là ça se gate, pas de paquet dispo et les backport ne l'ont pas encore pris en compte.

'''ATTENTION''' Les méthodes présentées ci-dessous sont des bidouillages, rien ne vaut un paquet issu d'un dépôt officiel Debian

Il existe bien [http://petitcodeur.fr/sysadmin/opensmtpd-debian.html la méthode classique] d'installation avec récupération des sources et compilation
&lt;pre&gt;
$wget http://www.opensmtpd.org/archives/opensmtpd-portable-latest.tar.gz
$tar xvzf opensmtpd-portable-latest.tar.gz
$cd opensmtpd-*
$ ./configure
$ make
$ make install
&lt;/pre&gt;

Mais nous allons feinter pour nous recréer un paquet tout ce qu'il y a de plus propre. Nous aurions pu récupérer le paquet de Jessie pour l'installer directement mais il y a une dépendance a Libc6 dans une version supérieur à ce qui est possible pour Whezzy, le reste des dépendances est satisfait ce qui est une chance.
Il existe [https://github.com/sinecure/OpenSMTPD-deb un script] qui permet de construire un paquet Debian avec la dernière version de notre MTA mais personnellement je n'ai pas réussit à aller au bout du processus de construction.
La solution que j'ai choisit est de détourner le paquet officiel de jessie pour le compiler avec les dépendances Whezzy.
Dans notre sources.list nous allons ajouter une ligne nous permettant de récupérer les sources du paquet.  
 deb-src http://ftp.fr.debian.org/debian/ jessie main

je vous recommande quand même d'ajouter un pinning pour éviter toute mauvaise manipulation
 Package: *
 Pin: release o=Debian, a=jessie
 Pin-Priority: 490

Puis nous faisons tout d'abord les commandes suivantes
# apt-get update
# apt-get build-dep opensmtpd
# apt-get install debhelper libpam0g-dev devscripts

* La première ligne permet de prendre en compte la modification du sources.list
* La deuxième ligne de récupère différent paquet *-dev nécessaire à la recompilation
* Enfin installation de 3 paquet (et leurs dépendances) nous permettant la création/modification d'un paquet

Ensuite avec votre utilisateur habituel dans un répertoire dédié :
 $ apt-get source opensmtpd
Cela vous récupère les sources de OpenSMTPD (pensez à commenter/supprimer les modifications de votre sources.list et preferences)
Enfin la commande de compilation
 $ fakeroot ./debian/rules binary

Laisser cuire quelques minutes et normalement vous devez obtenir un joli paquet prêt à l'emploi pour votre système.
l'installation de ce dernier se fait par un simple 
 #dpkg -i &lt;mon paquet OpenSMTPD&gt;

Si vous avez une erreur de conflit de « mail-transport-agent » c'est que vous avez Exim ou Postfix ou tout autre MTA encore présent sur votre système, ce qui n'est pas toléré par Debian.

=== Monter de version ===
Si vous voulez avoir une version encore plus récente que celle dispo dans Jessie (5.3.3 à l'heure actuelle), la version 5.4.1 par exemple qui apporte le support des bases de données. Pour cela je vous conseil de suivre la précédente méthode pour vous roder puis de récupérer les sources de la version voulue

 $wget http://www.opensmtpd.org/archives/opensmtpd-portable-latest.tar.gz
 $tar xvzf opensmtpd-portable-latest.tar.gz

Depuis le paquet source de Jessie récupérer le répertoire &quot;debian&quot; et de modifier le fichier &quot;changlog&quot; soit avec la commande suivante
 debian/$ dch -n

Soit en l'éditant avec votre éditeur favori et ajouter le bloc suivant 
&lt;pre&gt;
opensmtpd (5.4.1) UNRELEASE; urgency=low
  * Non-maintainer upload.
  * reprise de la version 5.4.1
-- Vous &lt;vous@VotreMachine&gt;  Thu, 01 Jan 2014 01:30:32 +0100
&lt;/pre&gt;

Il est possible que les pachs inclu dans le répertoir «debian» vous soient utile, pour les appliquer il suffit de faire les commandes suivantes :
Une première fois pour tester :
 $patch -p1 --dry-run&lt;debian/patches/*

Et pour réellement appliquer les patchs :
 $patch -p1 &lt;debian/patches/*

Puis il suffit de lancer la compilation 
 $ fakeroot ./debian/rules binary
Penser a faire cette commande si vous voulez refaire la compilation complète
 $ fakeroot ./debian/rules clean
Ou pour refaire juste le .deb
 $ fakeroot ./debian/rules binary-deb

Avec cette méthode il se peut que votre MTA ne redémarre pas, cela provient du nouveau fichier de configuration qui n'est pas valide, commentez les lignes incriminées ou configurez le correctement.

== Version plus anciennes (Squezee, ...) ==
Un tutoriel se trouve [http://maniatux.fr/index.php?article274/opensmtpd-debian-6-0-squeeze-howto ici], mais comme ces versions de Debian ne sont plus recommandé je ne traite pas le sujet.

= Configuration =

== smtpd.conf ==

&lt;pre&gt;
# This is the smtpd server system-wide configuration file.
# See smtpd.conf(5) for more information.

# To accept external mail, replace with: listen on all
listen on localhost port 10029 tag DKIM

#Si on souhaite ajouter la signature DKIM au mails envoyés
accept tagged DKIM for any relay

# If you edit the file, you have to run &quot;smtpctl update table aliases&quot;
#table aliases file:/etc/mail/aliases

# Fichier contenant les requètes à utiliser
table mytbl postgres:/etc/mail/postgresql.conf

# Uncomment the following to accept external mail for domain &quot;example.org&quot;
#accept from any for domain &quot;example.org&quot; alias &lt;aliases&gt; deliver to mbox

#accept for local alias &lt;aliases&gt; deliver to mbox
# Connection à Dovecot (MDA)
accept for local alias deliver to mda /usr/sbin/dovecot -f -

# On peut relayer a tout le monde
accept for any relay
&lt;/pre&gt;

== Backends ==
=== Fichiers ===
C'est la configuration la plus simple et de nombreux tuto et même la doc officiel est largement suffisante pour vous mettre en place cette configuration.

=== Base de données ===
'''ATTENTION''' Les supports de PostgreSQL, MySQL, SQLite et LDAP n'ont été ajoutés qu'a partir de la version 5.4.1 de OpenSMTPD. De plus pour activer ce support il est nécessaire d'ajouter une des directives suivante dans le fichier ''debian/rules'' (a coté des autres &quot;--with-*) avant la compilation/création du package.
 --with-experimental-ldap
 --with-experimental-mysql
 --with-experimental-postgres
 --with-experimental-sqlite

De plus pour PostgreSQL la paquet libpq-dev est nécessaire, pour le support ldap, mysql et sqlite je vous laisse trouver le paquet qui va bien.

Sinon vous risquer d'avoir une erreur du type 
 smtpd: table_create: backend &quot;postgresql&quot; does not exist

Le fichiers de configuration pour une base de donnée est de la forme suivante (à adapter suivant votre BDD) :
&lt;pre&gt;
#
# Sample PostgreSQL configuration file
#
# This is an example configuration file for using OpenSMTPD with the PostgreSQL
# backend for lookups. OpenSMTPD does not have hardcoded tables and you may
#
#

conninfo		host='127.0.0.1' user='vmailr' password='vmailr@venabulis&amp;27' dbname='smtp'

# Alias lookup query
#
# rows   &gt;= 0
# fields == 1 (user varchar)
#
query_alias                select goto from alias where address=$1;


# Domain lookup query
#
# rows   == 1
# fields == 1 (domain varchar)
#
query_domain                select domain from domain where domain=$1;


# User lookup query
#
# rows   == 1
# fields == 3 (uid int, gid int, directory varchar)
#
query_userinfo                select 500,500,maildir from mailbox where user=$1;


# Credentials lookup query
#
# rows   == 1
# fields == 2 (username varchar, password varchar)
#
query_credentials        select username, password from mailbox where username=$1;


# Netaddr lookup query
#
# rows   == 1
# fields == 1 (netaddr varchar)
#
#query_netaddr        select value from netaddr where value=$1;
&lt;/pre&gt;

= Ressources =
* {{fr}} http://petitcodeur.fr/sysadmin/opensmtpd-debian.html Installation à partir des sources
* {{fr}} http://maniatux.fr/index.php?article274/opensmtpd-debian-6-0-squeeze-howto Installation pour Squeeze
* {{en}} https://github.com/sinecure/OpenSMTPD-deb Script d'automatisation de création d'un paquet deb
* {{fr}} http://www.opensmtpd.org/fr/ Le site officiel avec sa doc plutôt complète

[[Catégorie:Serveurs]]</text>
      <sha1>adhptdixn1eja4ytg3tdoii5zstiw3b</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Openbox</title>
    <ns>0</ns>
    <id>29</id>
    <revision>
      <id>45</id>
      <timestamp>2010-01-21T18:43:36Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <comment>Page créée avec « http://wiki.debian.org/fr/Openbox »</comment>
      <text xml:space="preserve" bytes="33">http://wiki.debian.org/fr/Openbox</text>
      <sha1>il16z20qqdur281eftx4htynb3x88r1</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>51</id>
      <parentid>45</parentid>
      <timestamp>2010-01-21T19:27:04Z</timestamp>
      <contributor>
        <username>L0u!$</username>
        <id>4</id>
      </contributor>
      <text xml:space="preserve" bytes="75">http://wiki.debian.org/fr/Openbox
[[Catégorie:Gestionnaires de fenêtres]]</text>
      <sha1>g8rh88xrxhkbcbk4k2tkittxwyeep1i</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>966</id>
      <parentid>51</parentid>
      <timestamp>2010-02-07T07:37:45Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="100">http://wiki.debian.org/fr/Openbox
[[Catégorie:Gestionnaires de fenêtres]]
[[Catégorie:Flottants]]</text>
      <sha1>43yw0afpxcq65t2kbb49712rmlhwbi8</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>977</id>
      <parentid>966</parentid>
      <timestamp>2010-02-07T07:53:36Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="100">http://wiki.debian.org/fr/Openbox
[[Catégorie:Gestionnaires_de_fenêtres]]
[[Catégorie:Flottants]]</text>
      <sha1>f6yb011bpseha5ruxamrz3rd0idhjso</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>983</id>
      <parentid>977</parentid>
      <timestamp>2010-02-07T08:02:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="99">http://wiki.debian.org/fr/Openbox
[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Flottants]]</text>
      <sha1>0uwybrkdconm4rref4g20tca7f7gvsv</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5102</id>
      <parentid>983</parentid>
      <timestamp>2013-04-23T19:40:52Z</timestamp>
      <contributor>
        <username>Arpinux</username>
        <id>269</id>
      </contributor>
      <comment>ajout du lien vers le wiki officiel openbox fr (en cours)</comment>
      <text xml:space="preserve" bytes="287">http://wiki.debian.org/fr/Openbox

note: le wiki openbox officiel commence à être traduit en français.

première page accessible: [http://openbox.org/wiki/Help:Themes_fr description et manuel du 'theming' sur OpenBox]
[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Flottants]]</text>
      <sha1>d9mo8adei7ngb2d9fxvogy9e3u4o278</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Opendkim</title>
    <ns>0</ns>
    <id>1261</id>
    <revision>
      <id>5214</id>
      <timestamp>2013-05-27T19:35:30Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <comment>Page créée avec « Voici une proposition pour identifier ses mails avec le principe DKIM (Domain Key Identified Mail : Courriel au domaine identifié par clé), afin de ne plus être consid... »</comment>
      <text xml:space="preserve" bytes="2569">Voici une proposition pour identifier ses mails avec le principe DKIM (Domain Key Identified Mail : Courriel au domaine identifié par clé), afin de ne plus être considéré comme potentiel spammeur. (plus d'infos sur [https://fr.wikipedia.org/wiki/DKIM Wikipedia].
Cela se fera avec opendkim, dont les dépendances sont moins lourdes que d'autres outils.

==Installation des paquets==

Tout simplement : 
  apt-get install opendkim opendkim-tools

== Création d'une clé ==
Nous allons créer les clés dans un répertoire fait exprès pour. Par exemple, nous allons créer /etc/dkim :

  mkdir -p /etc/dkim

Générons les clés dans ce répertoire : 

  opendkim-genkey -D /etc/dkim/ -d votreDomaine.net -s mail

Vous pouvez voir dans ce répertoire 2 fichiers : mail.private et mail.txt

On rend l'utilisateur &quot;opendkim&quot; propriétaire de ce dossier : 

  chown opendkim:opendkim -R /etc/dkim

== Configuration d'opendkim ==

=== Edition de /etc/opendkim.conf ===
Ajouter à la fin de ce fichier les lignes suivantes : 

  UserID opendkim:opendkim
  Domain		votreDomaine.net
  KeyFile		/etc/dkim/mail.private
  Selector		mail
  AutoRestart		yes
  DNSTimeout              5

=== Edition de /etc/default/opendkim ===
Il faut que postfix et opendkim puissent communiquer. On ajoute alors dans /etc/default/opendkim ceci : 

  SOCKET=&quot;inet:8891:localhost&quot;

== Configuration de postfix ==
Indiquons à postfix qu'il doit signer les mails avec opendkim. Pour cela, ajouter dans /etc/postfix/main.cf : 

  # DKIM
  milter_default_action = accept
  milter_protocol = 2
  smtpd_milters = inet:localhost:8891
  non_smtpd_milters = inet:localhost:8891

== Configurer les DNS ==
On y est presque!
Il faut configurer aussi vos champs DNS. Je ne traite ici que le cas des DNS externes. Ajouter un champ DKIM ou TXT dans lequel sera mis le contenu du fichier /etc/dkim/mail.txt de la façon suivante :

* Nom de domaine : mail._domainkey.votreDomaine.net
* Contenu : v=DKIM; k=rsa; p=........

== Finalement... ==
On redémarre les services : 

  service opendkim restart
  service postfix restart

== Tester si ça marche ==
[http://www.appmaildev.com/en/domainkeys/ Sur cette page], une adresse mail vous est donnée. Envoyez-lui un mail. Quelques minutes plus tard, vous recevrez une réponse, dans laquelle vous devriez voir : 

  ============================================================
  DKIM result: pass
  ============================================================


== Voir aussi ==
* [https://www.isalo.org/wiki.debian-fr/Amavisd-new_et_DKIM Amavisd-new et DKIM]</text>
      <sha1>4pfkr1exh5e1kw8lpdofnqcig8rupes</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5294</id>
      <parentid>5214</parentid>
      <timestamp>2013-06-27T15:25:18Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <comment>/* Tester si ça marche */</comment>
      <text xml:space="preserve" bytes="2787">Voici une proposition pour identifier ses mails avec le principe DKIM (Domain Key Identified Mail : Courriel au domaine identifié par clé), afin de ne plus être considéré comme potentiel spammeur. (plus d'infos sur [https://fr.wikipedia.org/wiki/DKIM Wikipedia].
Cela se fera avec opendkim, dont les dépendances sont moins lourdes que d'autres outils.

==Installation des paquets==

Tout simplement : 
  apt-get install opendkim opendkim-tools

== Création d'une clé ==
Nous allons créer les clés dans un répertoire fait exprès pour. Par exemple, nous allons créer /etc/dkim :

  mkdir -p /etc/dkim

Générons les clés dans ce répertoire : 

  opendkim-genkey -D /etc/dkim/ -d votreDomaine.net -s mail

Vous pouvez voir dans ce répertoire 2 fichiers : mail.private et mail.txt

On rend l'utilisateur &quot;opendkim&quot; propriétaire de ce dossier : 

  chown opendkim:opendkim -R /etc/dkim

== Configuration d'opendkim ==

=== Edition de /etc/opendkim.conf ===
Ajouter à la fin de ce fichier les lignes suivantes : 

  UserID opendkim:opendkim
  Domain		votreDomaine.net
  KeyFile		/etc/dkim/mail.private
  Selector		mail
  AutoRestart		yes
  DNSTimeout              5

=== Edition de /etc/default/opendkim ===
Il faut que postfix et opendkim puissent communiquer. On ajoute alors dans /etc/default/opendkim ceci : 

  SOCKET=&quot;inet:8891:localhost&quot;

== Configuration de postfix ==
Indiquons à postfix qu'il doit signer les mails avec opendkim. Pour cela, ajouter dans /etc/postfix/main.cf : 

  # DKIM
  milter_default_action = accept
  milter_protocol = 2
  smtpd_milters = inet:localhost:8891
  non_smtpd_milters = inet:localhost:8891

== Configurer les DNS ==
On y est presque!
Il faut configurer aussi vos champs DNS. Je ne traite ici que le cas des DNS externes. Ajouter un champ DKIM ou TXT dans lequel sera mis le contenu du fichier /etc/dkim/mail.txt de la façon suivante :

* Nom de domaine : mail._domainkey.votreDomaine.net
* Contenu : v=DKIM; k=rsa; p=........

== Finalement... ==
On redémarre les services : 

  service opendkim restart
  service postfix restart

== Tester si ça marche ==
[http://www.appmaildev.com/fr/domainkeys/ Sur cette page], une adresse mail vous est donnée. Envoyez-lui un mail. Quelques minutes plus tard, vous recevrez une réponse, dans laquelle vous devriez voir : 

  ============================================================
  DKIM result: pass
  ============================================================

Dans le mail vous trouverez aussi des infos sur  :
* SPF est une autre méthode (simpliste) de vérification de la légitimité du serveur expéditeur. 
* DomainKey qui est le prédécesseur de DKIM, initié par Yahoo

== Voir aussi ==
* [https://www.isalo.org/wiki.debian-fr/Amavisd-new_et_DKIM Amavisd-new et DKIM]</text>
      <sha1>ptsbqcj8ychzm02v9q3hd6v407k693v</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5295</id>
      <parentid>5294</parentid>
      <timestamp>2013-06-27T15:53:20Z</timestamp>
      <contributor>
        <username>Mimoza</username>
        <id>162</id>
      </contributor>
      <comment>/* Configuration d'opendkim */</comment>
      <text xml:space="preserve" bytes="4326">Voici une proposition pour identifier ses mails avec le principe DKIM (Domain Key Identified Mail : Courriel au domaine identifié par clé), afin de ne plus être considéré comme potentiel spammeur. (plus d'infos sur [https://fr.wikipedia.org/wiki/DKIM Wikipedia].
Cela se fera avec opendkim, dont les dépendances sont moins lourdes que d'autres outils.

==Installation des paquets==

Tout simplement : 
  apt-get install opendkim opendkim-tools

== Création d'une clé ==
Nous allons créer les clés dans un répertoire fait exprès pour. Par exemple, nous allons créer /etc/dkim :

  mkdir -p /etc/dkim

Générons les clés dans ce répertoire : 

  opendkim-genkey -D /etc/dkim/ -d votreDomaine.net -s mail

Vous pouvez voir dans ce répertoire 2 fichiers : mail.private et mail.txt

On rend l'utilisateur &quot;opendkim&quot; propriétaire de ce dossier : 

  chown opendkim:opendkim -R /etc/dkim

== Configuration d'opendkim ==

=== Edition de /etc/opendkim.conf ===
==== Pour un domaine unique ====
Ajouter à la fin du fichier &quot;/etc/opendkim.conf&quot; les lignes suivantes : 

  UserID opendkim:opendkim
  Domain		votreDomaine.net
  KeyFile		/etc/dkim/mail.private
  Selector		mail
  AutoRestart		yes
  DNSTimeout              5

==== Pour du multi-domaine ====
Ça se complique un peu, pour chaque domaine il est préférable de générer une paire de clé différente et de les classer dans des répertoires séparés, par exemple :
 /etc/dkim/keys/&lt;domaine.tld&gt;/

Ajouter à la fin du fichier &quot;/etc/opendkim.conf&quot; ajouter les lignes suivantes : 

 KeyTable           /etc/dkim/KeyTable
 SigningTable       /etc/dkim/SigningTable
 ExternalIgnoreList /etc/dkim/TrustedHosts
 InternalHosts      /etc/dkim/TrustedHosts

Les 3 fichier vont lier les domaines à signer avec les clés de signature :
* TrustedHosts = Liste les domaines à signer
* SigningTable = Donne la correspondance entre les domaines et les selectors
* KeyTable = Donne la correspondance entre les selectors et les clés à utiliser

===== Automatisation =====
Pour vous simplifier la tâche voilà un script simple permettant la génération des clés et la création des fichiers de configuration.
&lt;pre&gt;
selector=mail
repertoire=/etc/dkim
domaines=(domain1.tld domaine2.tld)

for domaine in $domaines; do
  mkdir -p $repertoire/keys/$domaine
  opendkim-genkey -D $repertoire/keys/$domaine -r -d $domaine -s $selector
  chown opendkim:opendkim $repertoire/keys/$domaine/$selector.private
  echo &quot;$selector._domainkey.$domaine $domaine:$selector:$repertoire/keys/$domaine/$selector.private&quot; &gt;&gt; $repertoire/KeyTable
  echo &quot;$domaine $selector._domainkey.$domaine&quot; &gt;&gt; $repertoire/SigningTable
  echo &quot;$domaine&quot; &gt;&gt; $repertoire/TrustedHosts
done
&lt;/pre&gt;

=== Edition de /etc/default/opendkim ===
Il faut que postfix et opendkim puissent communiquer. On ajoute alors dans /etc/default/opendkim ceci : 

  SOCKET=&quot;inet:8891:localhost&quot;

== Configuration de postfix ==
Indiquons à postfix qu'il doit signer les mails avec opendkim. Pour cela, ajouter dans /etc/postfix/main.cf : 

  # DKIM
  milter_default_action = accept
  milter_protocol = 2
  smtpd_milters = inet:localhost:8891
  non_smtpd_milters = inet:localhost:8891

== Configurer les DNS ==
On y est presque!
Il faut configurer aussi vos champs DNS. Je ne traite ici que le cas des DNS externes. Ajouter un champ DKIM ou TXT dans lequel sera mis le contenu du fichier /etc/dkim/mail.txt de la façon suivante :

* Nom de domaine : mail._domainkey.votreDomaine.net
* Contenu : v=DKIM; k=rsa; p=........

== Finalement... ==
On redémarre les services : 

  service opendkim restart
  service postfix restart

== Tester si ça marche ==
[http://www.appmaildev.com/fr/domainkeys/ Sur cette page], une adresse mail vous est donnée. Envoyez-lui un mail. Quelques minutes plus tard, vous recevrez une réponse, dans laquelle vous devriez voir : 

  ============================================================
  DKIM result: pass
  ============================================================

Dans le mail vous trouverez aussi des infos sur  :
* SPF est une autre méthode (simpliste) de vérification de la légitimité du serveur expéditeur. 
* DomainKey qui est le prédécesseur de DKIM, initié par Yahoo

== Voir aussi ==
* [https://www.isalo.org/wiki.debian-fr/Amavisd-new_et_DKIM Amavisd-new et DKIM]</text>
      <sha1>q2ob45pbkjs0s4zn09kqj9c3rmvv7gu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5771</id>
      <parentid>5295</parentid>
      <timestamp>2014-08-20T05:26:28Z</timestamp>
      <contributor>
        <username>MicP</username>
        <id>272</id>
      </contributor>
      <minor/>
      <comment>/* Création d'une clé */ chg &quot;dossier&quot; par &quot;répertoire&quot;</comment>
      <text xml:space="preserve" bytes="4330">Voici une proposition pour identifier ses mails avec le principe DKIM (Domain Key Identified Mail : Courriel au domaine identifié par clé), afin de ne plus être considéré comme potentiel spammeur. (plus d'infos sur [https://fr.wikipedia.org/wiki/DKIM Wikipedia].
Cela se fera avec opendkim, dont les dépendances sont moins lourdes que d'autres outils.

==Installation des paquets==

Tout simplement : 
  apt-get install opendkim opendkim-tools

== Création d'une clé ==
Nous allons créer les clés dans un répertoire fait exprès pour. Par exemple, nous allons créer /etc/dkim :

  mkdir -p /etc/dkim

Générons les clés dans ce répertoire : 

  opendkim-genkey -D /etc/dkim/ -d votreDomaine.net -s mail

Vous pouvez voir dans ce répertoire 2 fichiers : mail.private et mail.txt

On rend l'utilisateur &quot;opendkim&quot; propriétaire de ce répertoire : 

  chown opendkim:opendkim -R /etc/dkim

== Configuration d'opendkim ==

=== Edition de /etc/opendkim.conf ===
==== Pour un domaine unique ====
Ajouter à la fin du fichier &quot;/etc/opendkim.conf&quot; les lignes suivantes : 

  UserID opendkim:opendkim
  Domain		votreDomaine.net
  KeyFile		/etc/dkim/mail.private
  Selector		mail
  AutoRestart		yes
  DNSTimeout              5

==== Pour du multi-domaine ====
Ça se complique un peu, pour chaque domaine il est préférable de générer une paire de clé différente et de les classer dans des répertoires séparés, par exemple :
 /etc/dkim/keys/&lt;domaine.tld&gt;/

Ajouter à la fin du fichier &quot;/etc/opendkim.conf&quot; ajouter les lignes suivantes : 

 KeyTable           /etc/dkim/KeyTable
 SigningTable       /etc/dkim/SigningTable
 ExternalIgnoreList /etc/dkim/TrustedHosts
 InternalHosts      /etc/dkim/TrustedHosts

Les 3 fichier vont lier les domaines à signer avec les clés de signature :
* TrustedHosts = Liste les domaines à signer
* SigningTable = Donne la correspondance entre les domaines et les selectors
* KeyTable = Donne la correspondance entre les selectors et les clés à utiliser

===== Automatisation =====
Pour vous simplifier la tâche voilà un script simple permettant la génération des clés et la création des fichiers de configuration.
&lt;pre&gt;
selector=mail
repertoire=/etc/dkim
domaines=(domain1.tld domaine2.tld)

for domaine in $domaines; do
  mkdir -p $repertoire/keys/$domaine
  opendkim-genkey -D $repertoire/keys/$domaine -r -d $domaine -s $selector
  chown opendkim:opendkim $repertoire/keys/$domaine/$selector.private
  echo &quot;$selector._domainkey.$domaine $domaine:$selector:$repertoire/keys/$domaine/$selector.private&quot; &gt;&gt; $repertoire/KeyTable
  echo &quot;$domaine $selector._domainkey.$domaine&quot; &gt;&gt; $repertoire/SigningTable
  echo &quot;$domaine&quot; &gt;&gt; $repertoire/TrustedHosts
done
&lt;/pre&gt;

=== Edition de /etc/default/opendkim ===
Il faut que postfix et opendkim puissent communiquer. On ajoute alors dans /etc/default/opendkim ceci : 

  SOCKET=&quot;inet:8891:localhost&quot;

== Configuration de postfix ==
Indiquons à postfix qu'il doit signer les mails avec opendkim. Pour cela, ajouter dans /etc/postfix/main.cf : 

  # DKIM
  milter_default_action = accept
  milter_protocol = 2
  smtpd_milters = inet:localhost:8891
  non_smtpd_milters = inet:localhost:8891

== Configurer les DNS ==
On y est presque!
Il faut configurer aussi vos champs DNS. Je ne traite ici que le cas des DNS externes. Ajouter un champ DKIM ou TXT dans lequel sera mis le contenu du fichier /etc/dkim/mail.txt de la façon suivante :

* Nom de domaine : mail._domainkey.votreDomaine.net
* Contenu : v=DKIM; k=rsa; p=........

== Finalement... ==
On redémarre les services : 

  service opendkim restart
  service postfix restart

== Tester si ça marche ==
[http://www.appmaildev.com/fr/domainkeys/ Sur cette page], une adresse mail vous est donnée. Envoyez-lui un mail. Quelques minutes plus tard, vous recevrez une réponse, dans laquelle vous devriez voir : 

  ============================================================
  DKIM result: pass
  ============================================================

Dans le mail vous trouverez aussi des infos sur  :
* SPF est une autre méthode (simpliste) de vérification de la légitimité du serveur expéditeur. 
* DomainKey qui est le prédécesseur de DKIM, initié par Yahoo

== Voir aussi ==
* [https://www.isalo.org/wiki.debian-fr/Amavisd-new_et_DKIM Amavisd-new et DKIM]</text>
      <sha1>83gi524splf89s5fccow3lab9o9mlg4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Openssl</title>
    <ns>0</ns>
    <id>598</id>
    <revision>
      <id>2530</id>
      <timestamp>2010-12-25T18:24:39Z</timestamp>
      <contributor>
        <username>Kna</username>
        <id>35</id>
      </contributor>
      <comment>je vais pouvoir parler de SSL avec apache et postfix maintenant :)</comment>
      <text xml:space="preserve" bytes="3136">OpenSSL est une boite à outils comprenant deux librairies et une commande permettant de gérer le chiffrement par SSL.

La librairie est utilisée par certaines applications serveurs pour chiffrer leurs connexions.

Cette page traite de la commande '''openssl(1)'''

= Encoder un fichier ou une chaine de caractère =

L'encodage en '''base64(1)''' est couramment utilisé pour permettre d'intégrer des fichiers dans un fichier texte, par exemple :
* les pièces jointes sont ainsi intégrés à un message électronique
* on peut intégrer des images dans une page HTML : http://actuel.fr.selfhtml.org/articles/graphisme/inline-images/index.htm

C'est aussi utilisé par votre client mail pour l'authentification SMTP.

Pour encoder un fichier en base64 :

 $ openssl base64 &lt; fichier

Pour décoder un fichier encodé en base64 :
 $ openssl base64 -d &lt; fichier_encodé

Pour encoder/décoder une chaine de caractère :

 $ echo -n &quot;chaine_à_encoder&quot; | openssl base64
 $ echo -n &quot;chaine_à_décoder&quot; | openssl base64 -d

Openssl peut ainsi encoder et décoder via d'autres algorithmes : bef, des, rc2, rc4, etc...

= Telnet over SSL =

Vous pouvez vous connectez à un serveur (web, mail, ftp,...) qui utilise SSL avec '''s_client(1)''' :

 $ openssl s_client -crlf -connect &lt;adresse_du_serveur&gt;:&lt;port&gt;

(en remplacant &lt;adresse_du_serveur&gt; par l'adresse IP ou DNS du serveur et &lt;port&gt; par son port d'écoute.

Pour un serveur qui utilise STARTTLS :

 $ openssl s_client -crlf -starttls &lt;protocol&gt; &lt;adresse_du_serveur&gt;:&lt;port&gt;

(en remplaçant &lt;protocol&gt; par le protocole utilisé : smtp, ftp, pop3 ou imap)

Vous pouvez alors taper des commandes comme si vous étiez connecté à ce serveur via telnet en clair.

Avec '''s_server(1)''', vous pouvez faire des simulations d'un serveur qui fait du SSL.

= Gestion des certificats =

== Afficher les informations d'un certificat ==

 $ openssl x509 -text -noout -in &lt;fichier_du_certificat&gt;

== Créer un certificat autosigné ==

Attention, ce type de certificat génèrera un avertissement dans le logiciel client, mais vous permettra d'utiliser SSL si le client l'accepte.
C'est génant si vous voulez créer un site d'e-commerce, mais suffisant pour chiffrer les connexions sur un serveur perso. 

=== directement ===

 $ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout mykey.pem -out mycert.pem

Ceci crééra un certificat autosigné valable un an (365 jours) chiffré en RSA 2048bits dans le fichier mycert.pem, et la clé privée dans mykey.pem.

=== via sa propre autorité de certification ===

Vous pouvez aussi vous créer une autorité de certification qui signera tous vos certificats. Deux utilitaires vous permettent de le faire facilement :
* le script CA.pl, fourni avec openssl : http://postfix.traduc.org/index.php/TLS_README.html#quick-start
* l'utilitaire graphique tinyCA : http://irp.nain-t.net/doku.php/270crypt:030_application

== Générer une requête de certificat à une autorité de certification extérieure ==
ToDo

= Ressources =

* (fr)  http://www.grandville.net/pmwiki.php/OpenSSL/LigneDeCommande
* (en) http://www.madboa.com/geek/openssl</text>
      <sha1>n2jk3va6ojm5v234w4qim00nivgv232</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>POSIX</title>
    <ns>0</ns>
    <id>599</id>
    <revision>
      <id>2534</id>
      <timestamp>2010-12-25T22:59:01Z</timestamp>
      <contributor>
        <username>MisterFreez</username>
        <id>27</id>
      </contributor>
      <comment>Page créée avec « Cette cherche à vous aider dans l'élaboration d'un script shell portable POSIX.  =Motivations= Un scripte POSIX a deux avantages majeures : * Il est portable sur tout unix ... »</comment>
      <text xml:space="preserve" bytes="1520">Cette cherche à vous aider dans l'élaboration d'un script shell portable POSIX.

=Motivations=
Un scripte POSIX a deux avantages majeures :
* Il est portable sur tout unix POSIX (ou partiellement POSIX), donc sur quasiment tout les unix et unix-like : toutes les distribution GNU/Linux, FreeBSD, OpenBSD, NetBSD, Solaris, Aix,...
* Il est maintenable plus facilement car il est moins sensible à l'évolution de votre environement informatique (changement de shell PSOIX par défaut sur votre distribution) et toute personne connaissant les scripts POSIX peut maintenir votre script.

=Shaban=
Le shaban est la première ligne d'un script qu'il soit shell ou non (python et perl par exemple). Il est toujours placé en toute première ligne et commence toujours par #! suivi d'un chemin absolu. Ce chemin indique ou trouver l'interpréteur de votre script. Pour que votre script soit POSIX, il faut nécessairement utiliser le shaban suivant : ''' #!/bin/sh

Il est aussi important de ne pas mettre celui-ci, s'il n'est pas POSIX. En effet si vous utilisez des fonctionnalités liées à un interpréteur particulier, bash par exemple, spécifiez bien dans votre script (grâce au shaban) que vous êtes en train d'écrire un script bash (et pas POSIX).

=Documentation=
Il existe deux paquets Debian manpages-posix et manpages-posix-dev qui permentent d'obtenir beaucoup d'informations sur le standard POSIX. Utilisez cette documentation. Par exemple pour grep, il suffit d'utiliser la commande :
'''
 man 1p grep
'''</text>
      <sha1>7don25p7i9ig350yzmpboxpgpn7kzy7</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>PXE</title>
    <ns>0</ns>
    <id>461</id>
    <revision>
      <id>1799</id>
      <timestamp>2010-08-02T07:51:33Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Page créée avec « {{Modèle:Ébauche}}  '''! Ceci est un brouillon, merci de ne pas apporter de modification tant que cet avertissement n'est pas enlevé...'''   == Installation par le réseau… »</comment>
      <text xml:space="preserve" bytes="9467">{{Modèle:Ébauche}}

'''! Ceci est un brouillon, merci de ne pas apporter de modification tant que cet avertissement n'est pas enlevé...'''


== Installation par le réseau - Boot PXE ==

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /var/lib/syslinux
chain.c32 mboot.c32 menu.c32 pxelinux.0 reboot.c32 gpxelinux.0 memdisk pxeboot vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/pxelinux.0 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;pxelinux.0&quot;;
 next-server 192.168.0.1;

Le premier fichier &quot;pxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse ou la machine qui demande à booter va chercher le pxelinux.O; Rine ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;pxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;beronono.com&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les information sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 prompt 1
 timeout 300
 NOESCAPE 1
 display f1.msg
 F1 f1.msg
 F2 f2.msg
 
#Sous-menu Debian netboot
LABEL DebianNetboot
 MENU LABEL Debian Netboot ---&gt;
 kernel menu.c32
 append images/debian/debian.conf

 # nano /var/lib/tftpboot/images/debian/debian.conf

 MENU TITLE --== Debian Netboot ==--
 
 # Retour au menu principal
 LABEL rootmenu
         MENU LABEL &lt;---- Menu principal
         kernel vesamenu.c32
         append /pxelinux.cfg/default
 
 label 1
         MENU LABEL Etch i386
         kernel images/debian/old-stable/i386/linux
         append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall r$

 label 2
         MENU LABEL Etch amd64
         kernel images/debian/old-stable/amd64/linux
         append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall $
 
 label 3
         MENU LABEL Lenny i386
         kernel images/debian/stable/i386/linux
         append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
         MENU LABEL Lenny amd64
         kernel images/debian/stable/amd64/linux
         append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  $
 
 label 5
         MENU LABEL Squeeze i386
         kernel images/debian/testing/i386/linux
         append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  $
 
 label 7
         MENU LABEL Unstable i386
         kernel images/debian/unstable/i386/linux
         append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw $
 
 label 8
         MENU LABEL Unstable amd64
         kernel images/debian/unstable/amd64/linux
         append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw$


=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

/var/lib/tftpboot/images/systemrescue vdir
total 214072
-r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
-r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
-r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
-r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

=== pxeknife ===

Petit utilitaire très complet, à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Décompréssez l'archive dans /var/lib/tftpboot/images/pxeknife

Editez /var/lib/tftpboot/images/pxeknife/pxeknife.conf pour qu'il reflète votre configuration (changement des chemins si nécessaire)

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append images/pxeknife/pxeknife.conf

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

=== Un menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrés dans défault

 KBDMAP french.kbd

=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !</text>
      <sha1>s3y1gxnpaaugmk0lwu15luhwo0redy3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1800</id>
      <parentid>1799</parentid>
      <timestamp>2010-08-02T07:52:24Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="9471">{{Modèle:Ébauche|PXE}}

'''! Ceci est un brouillon, merci de ne pas apporter de modification tant que cet avertissement n'est pas enlevé...'''


== Installation par le réseau - Boot PXE ==

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /var/lib/syslinux
chain.c32 mboot.c32 menu.c32 pxelinux.0 reboot.c32 gpxelinux.0 memdisk pxeboot vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/pxelinux.0 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;pxelinux.0&quot;;
 next-server 192.168.0.1;

Le premier fichier &quot;pxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse ou la machine qui demande à booter va chercher le pxelinux.O; Rine ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;pxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;beronono.com&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les information sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 prompt 1
 timeout 300
 NOESCAPE 1
 display f1.msg
 F1 f1.msg
 F2 f2.msg
 
#Sous-menu Debian netboot
LABEL DebianNetboot
 MENU LABEL Debian Netboot ---&gt;
 kernel menu.c32
 append images/debian/debian.conf

 # nano /var/lib/tftpboot/images/debian/debian.conf

 MENU TITLE --== Debian Netboot ==--
 
 # Retour au menu principal
 LABEL rootmenu
         MENU LABEL &lt;---- Menu principal
         kernel vesamenu.c32
         append /pxelinux.cfg/default
 
 label 1
         MENU LABEL Etch i386
         kernel images/debian/old-stable/i386/linux
         append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall r$

 label 2
         MENU LABEL Etch amd64
         kernel images/debian/old-stable/amd64/linux
         append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall $
 
 label 3
         MENU LABEL Lenny i386
         kernel images/debian/stable/i386/linux
         append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
         MENU LABEL Lenny amd64
         kernel images/debian/stable/amd64/linux
         append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  $
 
 label 5
         MENU LABEL Squeeze i386
         kernel images/debian/testing/i386/linux
         append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  $
 
 label 7
         MENU LABEL Unstable i386
         kernel images/debian/unstable/i386/linux
         append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw $
 
 label 8
         MENU LABEL Unstable amd64
         kernel images/debian/unstable/amd64/linux
         append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw$


=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

/var/lib/tftpboot/images/systemrescue vdir
total 214072
-r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
-r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
-r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
-r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

=== pxeknife ===

Petit utilitaire très complet, à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Décompréssez l'archive dans /var/lib/tftpboot/images/pxeknife

Editez /var/lib/tftpboot/images/pxeknife/pxeknife.conf pour qu'il reflète votre configuration (changement des chemins si nécessaire)

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append images/pxeknife/pxeknife.conf

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

=== Un menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrés dans défault

 KBDMAP french.kbd

=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !</text>
      <sha1>l1c2z6ptkgsiml6urqh2bq8tnr7tcft</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1801</id>
      <parentid>1800</parentid>
      <timestamp>2010-08-02T08:10:49Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* DHCP */</comment>
      <text xml:space="preserve" bytes="9682">{{Modèle:Ébauche|PXE}}

'''! Ceci est un brouillon, merci de ne pas apporter de modification tant que cet avertissement n'est pas enlevé...'''


== Installation par le réseau - Boot PXE ==

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /var/lib/syslinux
chain.c32 mboot.c32 menu.c32 pxelinux.0 reboot.c32 gpxelinux.0 memdisk pxeboot vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/pxelinux.0 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;gpxelinux.0&quot;;
 next-server 192.168.0.1;

Vous avez le chois entre deux amorces : pxelinux.0 ou gpxelinux.0
J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.

Le premier fichier &quot;gpxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse ou la machine qui demande à booter va chercher le pxelinux.O; Rine ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;gpxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;beronono.com&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les information sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 prompt 1
 timeout 300
 NOESCAPE 1
 display f1.msg
 F1 f1.msg
 F2 f2.msg
 
#Sous-menu Debian netboot
LABEL DebianNetboot
 MENU LABEL Debian Netboot ---&gt;
 kernel menu.c32
 append images/debian/debian.conf

 # nano /var/lib/tftpboot/images/debian/debian.conf

 MENU TITLE --== Debian Netboot ==--
 
 # Retour au menu principal
 LABEL rootmenu
         MENU LABEL &lt;---- Menu principal
         kernel vesamenu.c32
         append /pxelinux.cfg/default
 
 label 1
         MENU LABEL Etch i386
         kernel images/debian/old-stable/i386/linux
         append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall r$

 label 2
         MENU LABEL Etch amd64
         kernel images/debian/old-stable/amd64/linux
         append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall $
 
 label 3
         MENU LABEL Lenny i386
         kernel images/debian/stable/i386/linux
         append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
         MENU LABEL Lenny amd64
         kernel images/debian/stable/amd64/linux
         append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  $
 
 label 5
         MENU LABEL Squeeze i386
         kernel images/debian/testing/i386/linux
         append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  $
 
 label 7
         MENU LABEL Unstable i386
         kernel images/debian/unstable/i386/linux
         append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw $
 
 label 8
         MENU LABEL Unstable amd64
         kernel images/debian/unstable/amd64/linux
         append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw$


=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

/var/lib/tftpboot/images/systemrescue vdir
total 214072
-r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
-r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
-r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
-r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

=== pxeknife ===

Petit utilitaire très complet, à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Décompréssez l'archive dans /var/lib/tftpboot/images/pxeknife

Editez /var/lib/tftpboot/images/pxeknife/pxeknife.conf pour qu'il reflète votre configuration (changement des chemins si nécessaire)

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append images/pxeknife/pxeknife.conf

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

=== Un menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrés dans défault

 KBDMAP french.kbd

=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !</text>
      <sha1>jfh60btq8syvmxhr3rcmknmh7y9tipu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1802</id>
      <parentid>1801</parentid>
      <timestamp>2010-08-02T08:11:07Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* DHCP */</comment>
      <text xml:space="preserve" bytes="9682">{{Modèle:Ébauche|PXE}}

'''! Ceci est un brouillon, merci de ne pas apporter de modification tant que cet avertissement n'est pas enlevé...'''


== Installation par le réseau - Boot PXE ==

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /var/lib/syslinux
chain.c32 mboot.c32 menu.c32 pxelinux.0 reboot.c32 gpxelinux.0 memdisk pxeboot vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/pxelinux.0 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;gpxelinux.0&quot;;
 next-server 192.168.0.1;

Vous avez le choix entre deux amorces : pxelinux.0 ou gpxelinux.0
J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.

Le premier fichier &quot;gpxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse ou la machine qui demande à booter va chercher le pxelinux.O; Rine ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;gpxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;beronono.com&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les information sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 prompt 1
 timeout 300
 NOESCAPE 1
 display f1.msg
 F1 f1.msg
 F2 f2.msg
 
#Sous-menu Debian netboot
LABEL DebianNetboot
 MENU LABEL Debian Netboot ---&gt;
 kernel menu.c32
 append images/debian/debian.conf

 # nano /var/lib/tftpboot/images/debian/debian.conf

 MENU TITLE --== Debian Netboot ==--
 
 # Retour au menu principal
 LABEL rootmenu
         MENU LABEL &lt;---- Menu principal
         kernel vesamenu.c32
         append /pxelinux.cfg/default
 
 label 1
         MENU LABEL Etch i386
         kernel images/debian/old-stable/i386/linux
         append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall r$

 label 2
         MENU LABEL Etch amd64
         kernel images/debian/old-stable/amd64/linux
         append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall $
 
 label 3
         MENU LABEL Lenny i386
         kernel images/debian/stable/i386/linux
         append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
         MENU LABEL Lenny amd64
         kernel images/debian/stable/amd64/linux
         append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  $
 
 label 5
         MENU LABEL Squeeze i386
         kernel images/debian/testing/i386/linux
         append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  $
 
 label 7
         MENU LABEL Unstable i386
         kernel images/debian/unstable/i386/linux
         append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw $
 
 label 8
         MENU LABEL Unstable amd64
         kernel images/debian/unstable/amd64/linux
         append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw$


=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

/var/lib/tftpboot/images/systemrescue vdir
total 214072
-r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
-r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
-r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
-r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

=== pxeknife ===

Petit utilitaire très complet, à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Décompréssez l'archive dans /var/lib/tftpboot/images/pxeknife

Editez /var/lib/tftpboot/images/pxeknife/pxeknife.conf pour qu'il reflète votre configuration (changement des chemins si nécessaire)

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append images/pxeknife/pxeknife.conf

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

=== Un menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrés dans défault

 KBDMAP french.kbd

=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !</text>
      <sha1>5pt3e3xt2jc7vglj7xgx2kfy5kzi74k</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1803</id>
      <parentid>1802</parentid>
      <timestamp>2010-08-02T08:13:35Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* PXE */</comment>
      <text xml:space="preserve" bytes="9683">{{Modèle:Ébauche|PXE}}

'''! Ceci est un brouillon, merci de ne pas apporter de modification tant que cet avertissement n'est pas enlevé...'''


== Installation par le réseau - Boot PXE ==

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /var/lib/syslinux
:chain.c32
:mboot.c32
:menu.c32
:pxelinux.0
:reboot.c32
:gpxelinux.0
:memdisk
:vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/chain.c32 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste :

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;gpxelinux.0&quot;;
 next-server 192.168.0.1;

Vous avez le choix entre deux amorces : pxelinux.0 ou gpxelinux.0
J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.

Le premier fichier &quot;gpxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse ou la machine qui demande à booter va chercher le pxelinux.O; Rine ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;gpxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;beronono.com&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les information sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 prompt 1
 timeout 300
 NOESCAPE 1
 display f1.msg
 F1 f1.msg
 F2 f2.msg
 
#Sous-menu Debian netboot
LABEL DebianNetboot
 MENU LABEL Debian Netboot ---&gt;
 kernel menu.c32
 append images/debian/debian.conf

 # nano /var/lib/tftpboot/images/debian/debian.conf

 MENU TITLE --== Debian Netboot ==--
 
 # Retour au menu principal
 LABEL rootmenu
         MENU LABEL &lt;---- Menu principal
         kernel vesamenu.c32
         append /pxelinux.cfg/default
 
 label 1
         MENU LABEL Etch i386
         kernel images/debian/old-stable/i386/linux
         append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall r$

 label 2
         MENU LABEL Etch amd64
         kernel images/debian/old-stable/amd64/linux
         append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall $
 
 label 3
         MENU LABEL Lenny i386
         kernel images/debian/stable/i386/linux
         append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
         MENU LABEL Lenny amd64
         kernel images/debian/stable/amd64/linux
         append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  $
 
 label 5
         MENU LABEL Squeeze i386
         kernel images/debian/testing/i386/linux
         append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  $
 
 label 7
         MENU LABEL Unstable i386
         kernel images/debian/unstable/i386/linux
         append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw $
 
 label 8
         MENU LABEL Unstable amd64
         kernel images/debian/unstable/amd64/linux
         append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw$


=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

/var/lib/tftpboot/images/systemrescue vdir
total 214072
-r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
-r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
-r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
-r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

=== pxeknife ===

Petit utilitaire très complet, à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Décompréssez l'archive dans /var/lib/tftpboot/images/pxeknife

Editez /var/lib/tftpboot/images/pxeknife/pxeknife.conf pour qu'il reflète votre configuration (changement des chemins si nécessaire)

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append images/pxeknife/pxeknife.conf

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

=== Un menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrés dans défault

 KBDMAP french.kbd

=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !</text>
      <sha1>2aevxvo12icv36p3ywtxtr83p9grncc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1804</id>
      <parentid>1803</parentid>
      <timestamp>2010-08-02T08:22:15Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Netboot Debian */</comment>
      <text xml:space="preserve" bytes="9724">{{Modèle:Ébauche|PXE}}

'''! Ceci est un brouillon, merci de ne pas apporter de modification tant que cet avertissement n'est pas enlevé...'''


== Installation par le réseau - Boot PXE ==

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /var/lib/syslinux
:chain.c32
:mboot.c32
:menu.c32
:pxelinux.0
:reboot.c32
:gpxelinux.0
:memdisk
:vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/chain.c32 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste :

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;gpxelinux.0&quot;;
 next-server 192.168.0.1;

Vous avez le choix entre deux amorces : pxelinux.0 ou gpxelinux.0
J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.

Le premier fichier &quot;gpxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse ou la machine qui demande à booter va chercher le pxelinux.O; Rine ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;gpxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;beronono.com&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/old-stable ou stable, testing, unstable...

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les information sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 prompt 1
 timeout 300
 noescape 1
 display f1.msg
 F1 f1.msg
 F2 f2.msg
 
#Sous-menu Debian netboot
LABEL DebianNetboot
 MENU LABEL Debian Netboot ---&gt;
 kernel menu.c32
 append images/debian/debian.conf

 # nano /var/lib/tftpboot/images/debian/debian.conf

 MENU TITLE --== Debian Netboot ==--
 
 # Retour au menu principal
 LABEL rootmenu
         MENU LABEL &lt;---- Menu principal
         kernel vesamenu.c32
         append /pxelinux.cfg/default
 
 label 1
         MENU LABEL Etch i386
         kernel images/debian/old-stable/i386/linux
         append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall r$

 label 2
         MENU LABEL Etch amd64
         kernel images/debian/old-stable/amd64/linux
         append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall $
 
 label 3
         MENU LABEL Lenny i386
         kernel images/debian/stable/i386/linux
         append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
         MENU LABEL Lenny amd64
         kernel images/debian/stable/amd64/linux
         append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  $
 
 label 5
         MENU LABEL Squeeze i386
         kernel images/debian/testing/i386/linux
         append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  $
 
 label 7
         MENU LABEL Unstable i386
         kernel images/debian/unstable/i386/linux
         append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw $
 
 label 8
         MENU LABEL Unstable amd64
         kernel images/debian/unstable/amd64/linux
         append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw$

=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

/var/lib/tftpboot/images/systemrescue vdir
total 214072
-r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
-r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
-r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
-r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

=== pxeknife ===

Petit utilitaire très complet, à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Décompréssez l'archive dans /var/lib/tftpboot/images/pxeknife

Editez /var/lib/tftpboot/images/pxeknife/pxeknife.conf pour qu'il reflète votre configuration (changement des chemins si nécessaire)

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append images/pxeknife/pxeknife.conf

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

=== Un menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrés dans défault

 KBDMAP french.kbd

=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !</text>
      <sha1>1jq0aze5nd21cdy1y9jkvz90j9xe91h</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1806</id>
      <parentid>1804</parentid>
      <timestamp>2010-08-02T11:14:27Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Netboot Debian */</comment>
      <text xml:space="preserve" bytes="9725">{{Modèle:Ébauche|PXE}}

'''! Ceci est un brouillon, merci de ne pas apporter de modification tant que cet avertissement n'est pas enlevé...'''


== Installation par le réseau - Boot PXE ==

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /var/lib/syslinux
:chain.c32
:mboot.c32
:menu.c32
:pxelinux.0
:reboot.c32
:gpxelinux.0
:memdisk
:vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/chain.c32 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste :

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;gpxelinux.0&quot;;
 next-server 192.168.0.1;

Vous avez le choix entre deux amorces : pxelinux.0 ou gpxelinux.0
J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.

Le premier fichier &quot;gpxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse ou la machine qui demande à booter va chercher le pxelinux.O; Rine ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;gpxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;beronono.com&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/old-stable ou stable, testing, unstable...

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les information sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 prompt 1
 timeout 300
 noescape 1
 display f1.msg
 F1 f1.msg
 F2 f2.msg
 
#Sous-menu Debian netboot
LABEL DebianNetboot
 MENU LABEL Debian Netboot ---&gt;
 kernel menu.c32
 append images/debian/debian.conf

 # nano /var/lib/tftpboot/images/debian/debian.conf

 MENU TITLE --== Debian Netboot ==--
 
 # Retour au menu principal
 LABEL rootmenu
         MENU LABEL &lt;---- Menu principal
         kernel vesamenu.c32
         append /pxelinux.cfg/default
 
 label 1
         MENU LABEL Etch i386
         kernel images/debian/old-stable/i386/linux
         append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall r$
 
 label 2
         MENU LABEL Etch amd64
         kernel images/debian/old-stable/amd64/linux
         append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall $
 
 label 3
         MENU LABEL Lenny i386
         kernel images/debian/stable/i386/linux
         append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
         MENU LABEL Lenny amd64
         kernel images/debian/stable/amd64/linux
         append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  $
 
 label 5
         MENU LABEL Squeeze i386
         kernel images/debian/testing/i386/linux
         append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  $
 
 label 7
         MENU LABEL Unstable i386
         kernel images/debian/unstable/i386/linux
         append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw $
 
 label 8
         MENU LABEL Unstable amd64
         kernel images/debian/unstable/amd64/linux
         append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw$

=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

/var/lib/tftpboot/images/systemrescue vdir
total 214072
-r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
-r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
-r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
-r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

=== pxeknife ===

Petit utilitaire très complet, à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Décompréssez l'archive dans /var/lib/tftpboot/images/pxeknife

Editez /var/lib/tftpboot/images/pxeknife/pxeknife.conf pour qu'il reflète votre configuration (changement des chemins si nécessaire)

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append images/pxeknife/pxeknife.conf

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

=== Un menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrés dans défault

 KBDMAP french.kbd

=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !</text>
      <sha1>iw11u3frj3qz57shk069gt5fy1arvz2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1807</id>
      <parentid>1806</parentid>
      <timestamp>2010-08-02T11:23:05Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* D'autres entrées... */</comment>
      <text xml:space="preserve" bytes="10053">{{Modèle:Ébauche|PXE}}

'''! Ceci est un brouillon, merci de ne pas apporter de modification tant que cet avertissement n'est pas enlevé...'''


== Installation par le réseau - Boot PXE ==

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /var/lib/syslinux
:chain.c32
:mboot.c32
:menu.c32
:pxelinux.0
:reboot.c32
:gpxelinux.0
:memdisk
:vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/chain.c32 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste :

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;gpxelinux.0&quot;;
 next-server 192.168.0.1;

Vous avez le choix entre deux amorces : pxelinux.0 ou gpxelinux.0
J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.

Le premier fichier &quot;gpxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse ou la machine qui demande à booter va chercher le pxelinux.O; Rine ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;gpxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;beronono.com&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/old-stable ou stable, testing, unstable...

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les information sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 prompt 1
 timeout 300
 noescape 1
 display f1.msg
 F1 f1.msg
 F2 f2.msg
 
#Sous-menu Debian netboot
LABEL DebianNetboot
 MENU LABEL Debian Netboot ---&gt;
 kernel menu.c32
 append images/debian/debian.conf

 # nano /var/lib/tftpboot/images/debian/debian.conf

 MENU TITLE --== Debian Netboot ==--
 
 # Retour au menu principal
 LABEL rootmenu
         MENU LABEL &lt;---- Menu principal
         kernel vesamenu.c32
         append /pxelinux.cfg/default
 
 label 1
         MENU LABEL Etch i386
         kernel images/debian/old-stable/i386/linux
         append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall r$
 
 label 2
         MENU LABEL Etch amd64
         kernel images/debian/old-stable/amd64/linux
         append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall $
 
 label 3
         MENU LABEL Lenny i386
         kernel images/debian/stable/i386/linux
         append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
         MENU LABEL Lenny amd64
         kernel images/debian/stable/amd64/linux
         append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  $
 
 label 5
         MENU LABEL Squeeze i386
         kernel images/debian/testing/i386/linux
         append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  $
 
 label 7
         MENU LABEL Unstable i386
         kernel images/debian/unstable/i386/linux
         append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw $
 
 label 8
         MENU LABEL Unstable amd64
         kernel images/debian/unstable/amd64/linux
         append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw$

=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

/var/lib/tftpboot/images/systemrescue vdir
total 214072
-r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
-r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
-r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
-r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

=== pxeknife ===

Petit utilitaire très complet, à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Décompréssez l'archive dans /var/lib/tftpboot/images/pxeknife

Editez /var/lib/tftpboot/images/pxeknife/pxeknife.conf pour qu'il reflète votre configuration (changement des chemins si nécessaire)

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append images/pxeknife/pxeknife.conf

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

=== Un menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrés dans défault

 KBDMAP french.kbd

=== Une option &quot;reboot&quot; et démarrage sur le disque dur ===

Pour démarrer sur le premier disque dur, ajoutez en début de menu :

 label bootlocal
  MENU DEFAULT
  MENU LABEL Local Boot
  localboot 0

Pour avoir la possibilité de redémarrer, ajoutez en fin de menu :

 label reboot
  menu label Reboot
  kernel reboot.c32


=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !</text>
      <sha1>5by32qpnm6ugecilw3ha13b4svqrwtz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1808</id>
      <parentid>1807</parentid>
      <timestamp>2010-08-02T11:32:27Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* DHCP */</comment>
      <text xml:space="preserve" bytes="10050">{{Modèle:Ébauche|PXE}}

'''! Ceci est un brouillon, merci de ne pas apporter de modification tant que cet avertissement n'est pas enlevé...'''


== Installation par le réseau - Boot PXE ==

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /var/lib/syslinux
:chain.c32
:mboot.c32
:menu.c32
:pxelinux.0
:reboot.c32
:gpxelinux.0
:memdisk
:vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/chain.c32 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste :

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;gpxelinux.0&quot;;
 next-server 192.168.0.1;

Vous avez le choix entre deux amorces : pxelinux.0 ou gpxelinux.0
J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.

Le premier fichier &quot;gpxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse ou la machine qui demande à booter va chercher le pxelinux.O; Rine ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;gpxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;isalo.org&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/old-stable ou stable, testing, unstable...

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les information sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 prompt 1
 timeout 300
 noescape 1
 display f1.msg
 F1 f1.msg
 F2 f2.msg
 
#Sous-menu Debian netboot
LABEL DebianNetboot
 MENU LABEL Debian Netboot ---&gt;
 kernel menu.c32
 append images/debian/debian.conf

 # nano /var/lib/tftpboot/images/debian/debian.conf

 MENU TITLE --== Debian Netboot ==--
 
 # Retour au menu principal
 LABEL rootmenu
         MENU LABEL &lt;---- Menu principal
         kernel vesamenu.c32
         append /pxelinux.cfg/default
 
 label 1
         MENU LABEL Etch i386
         kernel images/debian/old-stable/i386/linux
         append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall r$
 
 label 2
         MENU LABEL Etch amd64
         kernel images/debian/old-stable/amd64/linux
         append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall $
 
 label 3
         MENU LABEL Lenny i386
         kernel images/debian/stable/i386/linux
         append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
         MENU LABEL Lenny amd64
         kernel images/debian/stable/amd64/linux
         append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  $
 
 label 5
         MENU LABEL Squeeze i386
         kernel images/debian/testing/i386/linux
         append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  $
 
 label 7
         MENU LABEL Unstable i386
         kernel images/debian/unstable/i386/linux
         append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw $
 
 label 8
         MENU LABEL Unstable amd64
         kernel images/debian/unstable/amd64/linux
         append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw$

=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

/var/lib/tftpboot/images/systemrescue vdir
total 214072
-r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
-r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
-r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
-r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

=== pxeknife ===

Petit utilitaire très complet, à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Décompréssez l'archive dans /var/lib/tftpboot/images/pxeknife

Editez /var/lib/tftpboot/images/pxeknife/pxeknife.conf pour qu'il reflète votre configuration (changement des chemins si nécessaire)

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append images/pxeknife/pxeknife.conf

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

=== Un menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrés dans défault

 KBDMAP french.kbd

=== Une option &quot;reboot&quot; et démarrage sur le disque dur ===

Pour démarrer sur le premier disque dur, ajoutez en début de menu :

 label bootlocal
  MENU DEFAULT
  MENU LABEL Local Boot
  localboot 0

Pour avoir la possibilité de redémarrer, ajoutez en fin de menu :

 label reboot
  menu label Reboot
  kernel reboot.c32


=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !</text>
      <sha1>m0xlowpnsblhmrkb1drvdi441tacgs5</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1809</id>
      <parentid>1808</parentid>
      <timestamp>2010-08-02T13:57:03Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* D'autres entrées... */</comment>
      <text xml:space="preserve" bytes="11745">{{Modèle:Ébauche|PXE}}

'''! Ceci est un brouillon, merci de ne pas apporter de modification tant que cet avertissement n'est pas enlevé...'''


== Installation par le réseau - Boot PXE ==

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /var/lib/syslinux
:chain.c32
:mboot.c32
:menu.c32
:pxelinux.0
:reboot.c32
:gpxelinux.0
:memdisk
:vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/chain.c32 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste :

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;gpxelinux.0&quot;;
 next-server 192.168.0.1;

Vous avez le choix entre deux amorces : pxelinux.0 ou gpxelinux.0
J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.

Le premier fichier &quot;gpxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse ou la machine qui demande à booter va chercher le pxelinux.O; Rine ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;gpxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;isalo.org&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/old-stable ou stable, testing, unstable...

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les information sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 prompt 1
 timeout 300
 noescape 1
 display f1.msg
 F1 f1.msg
 F2 f2.msg
 
#Sous-menu Debian netboot
LABEL DebianNetboot
 MENU LABEL Debian Netboot ---&gt;
 kernel menu.c32
 append images/debian/debian.conf

 # nano /var/lib/tftpboot/images/debian/debian.conf

 MENU TITLE --== Debian Netboot ==--
 
 # Retour au menu principal
 LABEL rootmenu
         MENU LABEL &lt;---- Menu principal
         kernel vesamenu.c32
         append /pxelinux.cfg/default
 
 label 1
         MENU LABEL Etch i386
         kernel images/debian/old-stable/i386/linux
         append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall r$
 
 label 2
         MENU LABEL Etch amd64
         kernel images/debian/old-stable/amd64/linux
         append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall $
 
 label 3
         MENU LABEL Lenny i386
         kernel images/debian/stable/i386/linux
         append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
         MENU LABEL Lenny amd64
         kernel images/debian/stable/amd64/linux
         append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  $
 
 label 5
         MENU LABEL Squeeze i386
         kernel images/debian/testing/i386/linux
         append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  $
 
 label 7
         MENU LABEL Unstable i386
         kernel images/debian/unstable/i386/linux
         append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw $
 
 label 8
         MENU LABEL Unstable amd64
         kernel images/debian/unstable/amd64/linux
         append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw$

=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

/var/lib/tftpboot/images/systemrescue vdir
total 214072
-r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
-r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
-r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
-r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

=== pxeknife ===

Petit utilitaire très complet, à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Décompréssez l'archive dans /var/lib/tftpboot/images/pxeknife

Editez /var/lib/tftpboot/images/pxeknife/pxeknife.conf pour qu'il reflète votre configuration (changement des chemins si nécessaire)

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append images/pxeknife/pxeknife.conf

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

=== Un menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrés dans défault

 KBDMAP french.kbd

=== Une option &quot;reboot&quot; et démarrage sur le disque dur ===

Pour démarrer sur le premier disque dur, ajoutez en début de menu :

 label bootlocal
  MENU DEFAULT
  MENU LABEL Local Boot
  localboot 0

Pour avoir la possibilité de redémarrer, ajoutez en fin de menu :

 label reboot
  menu label Reboot
  kernel reboot.c32


=== Knoppix 511 et 602 ===

'''! ATTENTION, pas encore au point...'''

Pour utiliser les images ISO de Knoppix, nous allons avoir besoin d'un serveur NFS :

 # apt-get install nfs-kernel-server

Pour autoriser notre réseau à utiliser le serveur NFS, ajoutons la ligne suivante au fichier /etc/hosts.allow

 mountd: 192.168.0.

Créez les répertoires qui vont accueillir les CD

 # mkdir /mnt/sdb1/knoppix511
 # mkdir /mnt/sdb1/knoppix602

Montez les CD et copiez leur contenu dans les répertoires que vous venez de créer

Profitez-en pour copier les &quot;amorces &quot; dans votre tftp

 # mkdir /var/lib/tftpboot/images/knoppix/
 # mkdir /var/lib/tftpboot/images/knoppix/511

Copiez les fichiers linux et minirt.gz qui se trouvent dans le CD (répertoire /boot/isolinux) vers ce nouveau répertoire.
Répétez l'opération pour Knoppix 602.

Ajoutez les partages NFS au fichier /etc/exports (en lecture seule...)

 /mnt/sdb1/knoppix511 *(ro,no_subtree_check,no_root_squash)
 /mnt/sdb1/knoppix602 *(ro,no_subtree_check,no_root_squash)

Redémarrez le serveur NFS

 # /etc/init.d/nfs-kernel-server restart

Ajoutez les entrées dans votre menu &quot;default&quot; :

 label Knoppix511
  MENU LABEL Knoppix 5.1.1
  kernel images/knoppix/511/linux
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix511 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/511/minirt.gz quiet BOOT_IMAGE=knoppix
 label Knoppix602
  MENU LABEL Knoppix 6.0.2
  kernel images/knoppix/602/linux
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix602 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/511/minirt.gz quiet BOOT_IMAGE=knoppix

=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !</text>
      <sha1>ctgej6ok2h9o2jp809fc85z246sqfl4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1810</id>
      <parentid>1809</parentid>
      <timestamp>2010-08-02T14:18:45Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Knoppix 511 et 602 */</comment>
      <text xml:space="preserve" bytes="12764">{{Modèle:Ébauche|PXE}}

'''! Ceci est un brouillon, merci de ne pas apporter de modification tant que cet avertissement n'est pas enlevé...'''


== Installation par le réseau - Boot PXE ==

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /var/lib/syslinux
:chain.c32
:mboot.c32
:menu.c32
:pxelinux.0
:reboot.c32
:gpxelinux.0
:memdisk
:vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/chain.c32 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste :

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;gpxelinux.0&quot;;
 next-server 192.168.0.1;

Vous avez le choix entre deux amorces : pxelinux.0 ou gpxelinux.0
J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.

Le premier fichier &quot;gpxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse ou la machine qui demande à booter va chercher le pxelinux.O; Rine ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;gpxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;isalo.org&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/old-stable ou stable, testing, unstable...

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les information sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 prompt 1
 timeout 300
 noescape 1
 display f1.msg
 F1 f1.msg
 F2 f2.msg
 
#Sous-menu Debian netboot
LABEL DebianNetboot
 MENU LABEL Debian Netboot ---&gt;
 kernel menu.c32
 append images/debian/debian.conf

 # nano /var/lib/tftpboot/images/debian/debian.conf

 MENU TITLE --== Debian Netboot ==--
 
 # Retour au menu principal
 LABEL rootmenu
         MENU LABEL &lt;---- Menu principal
         kernel vesamenu.c32
         append /pxelinux.cfg/default
 
 label 1
         MENU LABEL Etch i386
         kernel images/debian/old-stable/i386/linux
         append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall r$
 
 label 2
         MENU LABEL Etch amd64
         kernel images/debian/old-stable/amd64/linux
         append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall $
 
 label 3
         MENU LABEL Lenny i386
         kernel images/debian/stable/i386/linux
         append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
         MENU LABEL Lenny amd64
         kernel images/debian/stable/amd64/linux
         append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  $
 
 label 5
         MENU LABEL Squeeze i386
         kernel images/debian/testing/i386/linux
         append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  $
 
 label 7
         MENU LABEL Unstable i386
         kernel images/debian/unstable/i386/linux
         append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw $
 
 label 8
         MENU LABEL Unstable amd64
         kernel images/debian/unstable/amd64/linux
         append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw$

=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

/var/lib/tftpboot/images/systemrescue vdir
total 214072
-r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
-r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
-r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
-r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

=== pxeknife ===

Petit utilitaire très complet, à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Décompréssez l'archive dans /var/lib/tftpboot/images/pxeknife

Editez /var/lib/tftpboot/images/pxeknife/pxeknife.conf pour qu'il reflète votre configuration (changement des chemins si nécessaire)

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append images/pxeknife/pxeknife.conf

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

=== Un menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrés dans défault

 KBDMAP french.kbd

=== Une option &quot;reboot&quot; et démarrage sur le disque dur ===

Pour démarrer sur le premier disque dur, ajoutez en début de menu :

 label bootlocal
  MENU DEFAULT
  MENU LABEL Local Boot
  localboot 0

Pour avoir la possibilité de redémarrer, ajoutez en fin de menu :

 label reboot
  menu label Reboot
  kernel reboot.c32


=== Knoppix 511 et 602 ===

'''! ATTENTION, pas encore au point...'''

Pour utiliser les images ISO de Knoppix, nous allons avoir besoin d'un serveur NFS :

 # apt-get install nfs-kernel-server

Pour autoriser notre réseau à utiliser le serveur NFS, ajoutons la ligne suivante au fichier /etc/hosts.allow

 mountd: 192.168.0.

Créez les répertoires qui vont accueillir les CD

 # mkdir /mnt/sdb1/knoppix511
 # mkdir /mnt/sdb1/knoppix602

Montez les CD et copiez leur contenu dans les répertoires que vous venez de créer

Récuperer les fichiers &quot;amorce&quot;

# Démarrez sur votre CD/ISO knoppix.
# Ouvrez une console, et tapez

 netcardconfig

Une boite de dialogue s'ouvre, répondez :
- obtain address automatically

Puis
Code:
knoppix-terminalserver

Une nouvelle boite de dialogue s'ouvre, répondez :
- ok
- setup configure and restart
- Laissez le &quot;range&quot; d'adresse proposées
- Il vous propose ensuite une liste de drivers de cartes réseau. Choisissez celles qui conviennent à votre réseau (ou toutes, ce que j'ai fait par prudence...)
- décochez &quot;secure: Disable root access on client&quot; - ça peut vous servir, et il semblerait que ça pose des problèmes si c'est laissé coché...
- Laissez vide à la question suivante à moins que vous ne connaissiez exactement les paramètres vidéo de vos clients...
- The Knoppix-terminal server will now be started = YES

Cela va démarrer un certain nombre de services réseaux, dont tftp...
Et créer les fichier dont nous avons besoin pour notre PXE...
Récupérez les fichiers suivants dans le répertoire /tftpboot/
miniroot.gz et vmlinuz

Vous copierez ces fichiers dans les répertoires que vous allez créer /var/lib/tftpboot/images/knoppix/511 et 602

Donc vous devriez avoir ceci dans chaque répertoire
(si vous avez choisi d'installer knoppix 5 et knoppix 6)

miniroot.gz, vmlinuz

Ajoutez les partages NFS au fichier /etc/exports (en lecture seule...)

 /mnt/sdb1/knoppix511 *(ro,no_subtree_check,no_root_squash)
 /mnt/sdb1/knoppix602 *(ro,no_subtree_check,no_root_squash)

Redémarrez le serveur NFS

 # /etc/init.d/nfs-kernel-server restart

Ajoutez les entrées dans votre menu &quot;default&quot; :

 label Knoppix511
  MENU LABEL Knoppix 5.1.1
  kernel images/knoppix/511/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix511 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/511/miniroot.gz quiet BOOT_IMAGE=knoppix
 label Knoppix602
  MENU LABEL Knoppix 6.0.2
  kernel images/knoppix/602/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix602 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/511/miniroot.gz quiet BOOT_IMAGE=knoppix

=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !</text>
      <sha1>itr3y6ib4k1a18jltpxus82fcsc0vvf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1811</id>
      <parentid>1810</parentid>
      <timestamp>2010-08-02T14:48:16Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Knoppix 511 et 602 */</comment>
      <text xml:space="preserve" bytes="12756">{{Modèle:Ébauche|PXE}}

'''! Ceci est un brouillon, merci de ne pas apporter de modification tant que cet avertissement n'est pas enlevé...'''


== Installation par le réseau - Boot PXE ==

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /var/lib/syslinux
:chain.c32
:mboot.c32
:menu.c32
:pxelinux.0
:reboot.c32
:gpxelinux.0
:memdisk
:vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/chain.c32 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste :

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;gpxelinux.0&quot;;
 next-server 192.168.0.1;

Vous avez le choix entre deux amorces : pxelinux.0 ou gpxelinux.0
J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.

Le premier fichier &quot;gpxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse ou la machine qui demande à booter va chercher le pxelinux.O; Rine ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;gpxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;isalo.org&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/old-stable ou stable, testing, unstable...

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les information sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 prompt 1
 timeout 300
 noescape 1
 display f1.msg
 F1 f1.msg
 F2 f2.msg
 
#Sous-menu Debian netboot
LABEL DebianNetboot
 MENU LABEL Debian Netboot ---&gt;
 kernel menu.c32
 append images/debian/debian.conf

 # nano /var/lib/tftpboot/images/debian/debian.conf

 MENU TITLE --== Debian Netboot ==--
 
 # Retour au menu principal
 LABEL rootmenu
         MENU LABEL &lt;---- Menu principal
         kernel vesamenu.c32
         append /pxelinux.cfg/default
 
 label 1
         MENU LABEL Etch i386
         kernel images/debian/old-stable/i386/linux
         append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall r$
 
 label 2
         MENU LABEL Etch amd64
         kernel images/debian/old-stable/amd64/linux
         append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall $
 
 label 3
         MENU LABEL Lenny i386
         kernel images/debian/stable/i386/linux
         append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
         MENU LABEL Lenny amd64
         kernel images/debian/stable/amd64/linux
         append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  $
 
 label 5
         MENU LABEL Squeeze i386
         kernel images/debian/testing/i386/linux
         append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  $
 
 label 7
         MENU LABEL Unstable i386
         kernel images/debian/unstable/i386/linux
         append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw $
 
 label 8
         MENU LABEL Unstable amd64
         kernel images/debian/unstable/amd64/linux
         append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw$

=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

/var/lib/tftpboot/images/systemrescue vdir
total 214072
-r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
-r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
-r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
-r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

=== pxeknife ===

Petit utilitaire très complet, à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Décompréssez l'archive dans /var/lib/tftpboot/images/pxeknife

Editez /var/lib/tftpboot/images/pxeknife/pxeknife.conf pour qu'il reflète votre configuration (changement des chemins si nécessaire)

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append images/pxeknife/pxeknife.conf

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

=== Un menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrés dans défault

 KBDMAP french.kbd

=== Une option &quot;reboot&quot; et démarrage sur le disque dur ===

Pour démarrer sur le premier disque dur, ajoutez en début de menu :

 label bootlocal
  MENU DEFAULT
  MENU LABEL Local Boot
  localboot 0

Pour avoir la possibilité de redémarrer, ajoutez en fin de menu :

 label reboot
  menu label Reboot
  kernel reboot.c32


=== Knoppix 511 et 602 ===

Pour utiliser les images ISO de Knoppix, nous allons avoir besoin d'un serveur NFS :

 # apt-get install nfs-kernel-server

Pour autoriser notre réseau à utiliser le serveur NFS, ajoutons la ligne suivante au fichier /etc/hosts.allow

 mountd: 192.168.0.

Créez les répertoires qui vont accueillir les CD

 # mkdir /mnt/sdb1/knoppix511
 # mkdir /mnt/sdb1/knoppix602

Montez les CD et copiez leur contenu dans les répertoires que vous venez de créer

Récuperer les fichiers &quot;amorce&quot;

# Démarrez sur votre CD/ISO knoppix.
# Ouvrez une console, et tapez

 netcardconfig

Une boite de dialogue s'ouvre, répondez :
- obtain address automatically

Puis
Code:
knoppix-terminalserver

Une nouvelle boite de dialogue s'ouvre, répondez :
- ok
- setup configure and restart
- Laissez le &quot;range&quot; d'adresse proposées
- Il vous propose ensuite une liste de drivers de cartes réseau. Choisissez celles qui conviennent à votre réseau (ou toutes, ce que j'ai fait par prudence...)
- décochez &quot;secure: Disable root access on client&quot; - ça peut vous servir, et il semblerait que ça pose des problèmes si c'est laissé coché...
- Laissez vide à la question suivante à moins que vous ne connaissiez exactement les paramètres vidéo de vos clients...
- The Knoppix-terminal server will now be started = YES

Cela va démarrer un certain nombre de services réseaux, dont tftp...
Et créer les fichier dont nous avons besoin pour notre PXE...
Récupérez les fichiers suivants qui se trouvent dans le répertoire /tftpboot/ de votre Knoppix :
miniroot.gz et vmlinuz

Vous copierez ces fichiers dans les répertoires que vous allez créer /var/lib/tftpboot/images/knoppix/511 et 602

Donc vous devriez avoir ceci dans chaque répertoire
(si vous avez choisi d'installer knoppix 5 et knoppix 6)

miniroot.gz, vmlinuz

Ajoutez les partages NFS au fichier /etc/exports (en lecture seule...)

 /mnt/sdb1/knoppix511 *(ro,no_subtree_check,no_root_squash)
 /mnt/sdb1/knoppix602 *(ro,no_subtree_check,no_root_squash)

Redémarrez le serveur NFS

 # /etc/init.d/nfs-kernel-server restart

Ajoutez les entrées dans votre menu &quot;default&quot; :

 label Knoppix511
  MENU LABEL Knoppix 5.1.1
  kernel images/knoppix/511/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix511 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/511/miniroot.gz quiet BOOT_IMAGE=knoppix
 label Knoppix602
  MENU LABEL Knoppix 6.0.2
  kernel images/knoppix/602/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix602 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/511/miniroot.gz quiet BOOT_IMAGE=knoppix

=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !</text>
      <sha1>5atzh9wcljys2mls0upmzeierw0b7mb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1812</id>
      <parentid>1811</parentid>
      <timestamp>2010-08-02T15:49:49Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="13156">{{Modèle:Ébauche|PXE}}

'''! Ceci est un brouillon, merci de ne pas apporter de modification tant que cet avertissement n'est pas enlevé...'''


== Installation par le réseau - Boot PXE ==

Cet article propose de vous expliquer l’installation et la configuration d'un serveur PXE sur votre Debian.

Le démarrage PXE (Pre-boot eXecution Environment) permet à une station de travail de démarrer depuis le réseau en récupérant une image de système d'exploitation qui se trouve sur votre serveur (en vrac, Debian Netinstall, PXEKnife, SysterescuCD, HDT, Knoppix et d'autres à venir)

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /var/lib/syslinux
:chain.c32
:mboot.c32
:menu.c32
:pxelinux.0
:reboot.c32
:gpxelinux.0
:memdisk
:vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/chain.c32 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste :

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;gpxelinux.0&quot;;
 next-server 192.168.0.1;

Vous avez le choix entre deux amorces : pxelinux.0 ou gpxelinux.0
J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.

Le premier fichier &quot;gpxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse ou la machine qui demande à booter va chercher le pxelinux.O; Rine ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;gpxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;isalo.org&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/old-stable ou stable, testing, unstable...

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les information sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 prompt 1
 timeout 300
 noescape 1
 display f1.msg
 F1 f1.msg
 F2 f2.msg
 
#Sous-menu Debian netboot
LABEL DebianNetboot
 MENU LABEL Debian Netboot ---&gt;
 kernel menu.c32
 append images/debian/debian.conf

 # nano /var/lib/tftpboot/images/debian/debian.conf

 MENU TITLE --== Debian Netboot ==--
 
 # Retour au menu principal
 LABEL rootmenu
         MENU LABEL &lt;---- Menu principal
         kernel vesamenu.c32
         append /pxelinux.cfg/default
 
 label 1
         MENU LABEL Etch i386
         kernel images/debian/old-stable/i386/linux
         append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall r$
 
 label 2
         MENU LABEL Etch amd64
         kernel images/debian/old-stable/amd64/linux
         append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall $
 
 label 3
         MENU LABEL Lenny i386
         kernel images/debian/stable/i386/linux
         append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
         MENU LABEL Lenny amd64
         kernel images/debian/stable/amd64/linux
         append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  $
 
 label 5
         MENU LABEL Squeeze i386
         kernel images/debian/testing/i386/linux
         append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  $
 
 label 7
         MENU LABEL Unstable i386
         kernel images/debian/unstable/i386/linux
         append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw $
 
 label 8
         MENU LABEL Unstable amd64
         kernel images/debian/unstable/amd64/linux
         append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw$

=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

/var/lib/tftpboot/images/systemrescue vdir
total 214072
-r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
-r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
-r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
-r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

=== pxeknife ===

Petit utilitaire très complet, à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Décompréssez l'archive dans /var/lib/tftpboot/images/pxeknife

Editez /var/lib/tftpboot/images/pxeknife/pxeknife.conf pour qu'il reflète votre configuration (changement des chemins si nécessaire)

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append images/pxeknife/pxeknife.conf

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

=== Un menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrés dans défault

 KBDMAP french.kbd

=== Une option &quot;reboot&quot; et démarrage sur le disque dur ===

Pour démarrer sur le premier disque dur, ajoutez en début de menu :

 label bootlocal
  MENU DEFAULT
  MENU LABEL Local Boot
  localboot 0

Pour avoir la possibilité de redémarrer, ajoutez en fin de menu :

 label reboot
  menu label Reboot
  kernel reboot.c32


=== Knoppix 511 et 602 ===

Pour utiliser les images ISO de Knoppix, nous allons avoir besoin d'un serveur NFS :

 # apt-get install nfs-kernel-server

Pour autoriser notre réseau à utiliser le serveur NFS, ajoutons la ligne suivante au fichier /etc/hosts.allow

 mountd: 192.168.0.

Créez les répertoires qui vont accueillir les CD

 # mkdir /mnt/sdb1/knoppix511
 # mkdir /mnt/sdb1/knoppix602

Montez les CD et copiez leur contenu dans les répertoires que vous venez de créer

Récuperer les fichiers &quot;amorce&quot;

# Démarrez sur votre CD/ISO knoppix.
# Ouvrez une console, et tapez

 netcardconfig

Une boite de dialogue s'ouvre, répondez :
- obtain address automatically

Puis
Code:
knoppix-terminalserver

Une nouvelle boite de dialogue s'ouvre, répondez :
- ok
- setup configure and restart
- Laissez le &quot;range&quot; d'adresse proposées
- Il vous propose ensuite une liste de drivers de cartes réseau. Choisissez celles qui conviennent à votre réseau (ou toutes, ce que j'ai fait par prudence...)
- décochez &quot;secure: Disable root access on client&quot; - ça peut vous servir, et il semblerait que ça pose des problèmes si c'est laissé coché...
- Laissez vide à la question suivante à moins que vous ne connaissiez exactement les paramètres vidéo de vos clients...
- The Knoppix-terminal server will now be started = YES

Cela va démarrer un certain nombre de services réseaux, dont tftp...
Et créer les fichier dont nous avons besoin pour notre PXE...
Récupérez les fichiers suivants qui se trouvent dans le répertoire /tftpboot/ de votre Knoppix :
miniroot.gz et vmlinuz

Vous copierez ces fichiers dans les répertoires que vous allez créer /var/lib/tftpboot/images/knoppix/511 et 602

Donc vous devriez avoir ceci dans chaque répertoire
(si vous avez choisi d'installer knoppix 5 et knoppix 6)

miniroot.gz, vmlinuz

Ajoutez les partages NFS au fichier /etc/exports (en lecture seule...)

 /mnt/sdb1/knoppix511 *(ro,no_subtree_check,no_root_squash)
 /mnt/sdb1/knoppix602 *(ro,no_subtree_check,no_root_squash)

Redémarrez le serveur NFS

 # /etc/init.d/nfs-kernel-server restart

Ajoutez les entrées dans votre menu &quot;default&quot; :

 label Knoppix511
  MENU LABEL Knoppix 5.1.1
  kernel images/knoppix/511/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix511 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/511/miniroot.gz quiet BOOT_IMAGE=knoppix
 label Knoppix602
  MENU LABEL Knoppix 6.0.2
  kernel images/knoppix/602/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix602 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/511/miniroot.gz quiet BOOT_IMAGE=knoppix

=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !</text>
      <sha1>qvv6g2auiw4c5djfrb1kohgmsz4t15t</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1813</id>
      <parentid>1812</parentid>
      <timestamp>2010-08-02T16:06:20Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Installation par le réseau - Boot PXE */</comment>
      <text xml:space="preserve" bytes="13163">{{Modèle:Ébauche|PXE}}

'''! Ceci est un brouillon, merci de ne pas apporter de modification tant que cet avertissement n'est pas enlevé...'''


== Installation par le réseau - Boot PXE ==

Cet article propose de vous expliquer l’installation et la configuration d'un serveur PXE sur votre Debian.

Le démarrage PXE (Pre-boot eXecution Environment) permet à une station de travail de démarrer depuis le réseau en récupérant une image de système d'exploitation qui se trouve sur votre serveur (Pour commencer: Debian Netinstall, PXEKnife, SysterescuCD, HDT, Knoppix et d'autres à venir)

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /var/lib/syslinux
:chain.c32
:mboot.c32
:menu.c32
:pxelinux.0
:reboot.c32
:gpxelinux.0
:memdisk
:vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/chain.c32 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste :

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;gpxelinux.0&quot;;
 next-server 192.168.0.1;

Vous avez le choix entre deux amorces : pxelinux.0 ou gpxelinux.0
J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.

Le premier fichier &quot;gpxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse ou la machine qui demande à booter va chercher le pxelinux.O; Rine ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;gpxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;isalo.org&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/old-stable ou stable, testing, unstable...

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les information sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 prompt 1
 timeout 300
 noescape 1
 display f1.msg
 F1 f1.msg
 F2 f2.msg
 
#Sous-menu Debian netboot
LABEL DebianNetboot
 MENU LABEL Debian Netboot ---&gt;
 kernel menu.c32
 append images/debian/debian.conf

 # nano /var/lib/tftpboot/images/debian/debian.conf

 MENU TITLE --== Debian Netboot ==--
 
 # Retour au menu principal
 LABEL rootmenu
         MENU LABEL &lt;---- Menu principal
         kernel vesamenu.c32
         append /pxelinux.cfg/default
 
 label 1
         MENU LABEL Etch i386
         kernel images/debian/old-stable/i386/linux
         append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall r$
 
 label 2
         MENU LABEL Etch amd64
         kernel images/debian/old-stable/amd64/linux
         append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall $
 
 label 3
         MENU LABEL Lenny i386
         kernel images/debian/stable/i386/linux
         append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
         MENU LABEL Lenny amd64
         kernel images/debian/stable/amd64/linux
         append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  $
 
 label 5
         MENU LABEL Squeeze i386
         kernel images/debian/testing/i386/linux
         append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  $
 
 label 7
         MENU LABEL Unstable i386
         kernel images/debian/unstable/i386/linux
         append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw $
 
 label 8
         MENU LABEL Unstable amd64
         kernel images/debian/unstable/amd64/linux
         append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw$

=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

/var/lib/tftpboot/images/systemrescue vdir
total 214072
-r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
-r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
-r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
-r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

=== pxeknife ===

Petit utilitaire très complet, à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Décompréssez l'archive dans /var/lib/tftpboot/images/pxeknife

Editez /var/lib/tftpboot/images/pxeknife/pxeknife.conf pour qu'il reflète votre configuration (changement des chemins si nécessaire)

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append images/pxeknife/pxeknife.conf

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

=== Un menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrés dans défault

 KBDMAP french.kbd

=== Une option &quot;reboot&quot; et démarrage sur le disque dur ===

Pour démarrer sur le premier disque dur, ajoutez en début de menu :

 label bootlocal
  MENU DEFAULT
  MENU LABEL Local Boot
  localboot 0

Pour avoir la possibilité de redémarrer, ajoutez en fin de menu :

 label reboot
  menu label Reboot
  kernel reboot.c32


=== Knoppix 511 et 602 ===

Pour utiliser les images ISO de Knoppix, nous allons avoir besoin d'un serveur NFS :

 # apt-get install nfs-kernel-server

Pour autoriser notre réseau à utiliser le serveur NFS, ajoutons la ligne suivante au fichier /etc/hosts.allow

 mountd: 192.168.0.

Créez les répertoires qui vont accueillir les CD

 # mkdir /mnt/sdb1/knoppix511
 # mkdir /mnt/sdb1/knoppix602

Montez les CD et copiez leur contenu dans les répertoires que vous venez de créer

Récuperer les fichiers &quot;amorce&quot;

# Démarrez sur votre CD/ISO knoppix.
# Ouvrez une console, et tapez

 netcardconfig

Une boite de dialogue s'ouvre, répondez :
- obtain address automatically

Puis
Code:
knoppix-terminalserver

Une nouvelle boite de dialogue s'ouvre, répondez :
- ok
- setup configure and restart
- Laissez le &quot;range&quot; d'adresse proposées
- Il vous propose ensuite une liste de drivers de cartes réseau. Choisissez celles qui conviennent à votre réseau (ou toutes, ce que j'ai fait par prudence...)
- décochez &quot;secure: Disable root access on client&quot; - ça peut vous servir, et il semblerait que ça pose des problèmes si c'est laissé coché...
- Laissez vide à la question suivante à moins que vous ne connaissiez exactement les paramètres vidéo de vos clients...
- The Knoppix-terminal server will now be started = YES

Cela va démarrer un certain nombre de services réseaux, dont tftp...
Et créer les fichier dont nous avons besoin pour notre PXE...
Récupérez les fichiers suivants qui se trouvent dans le répertoire /tftpboot/ de votre Knoppix :
miniroot.gz et vmlinuz

Vous copierez ces fichiers dans les répertoires que vous allez créer /var/lib/tftpboot/images/knoppix/511 et 602

Donc vous devriez avoir ceci dans chaque répertoire
(si vous avez choisi d'installer knoppix 5 et knoppix 6)

miniroot.gz, vmlinuz

Ajoutez les partages NFS au fichier /etc/exports (en lecture seule...)

 /mnt/sdb1/knoppix511 *(ro,no_subtree_check,no_root_squash)
 /mnt/sdb1/knoppix602 *(ro,no_subtree_check,no_root_squash)

Redémarrez le serveur NFS

 # /etc/init.d/nfs-kernel-server restart

Ajoutez les entrées dans votre menu &quot;default&quot; :

 label Knoppix511
  MENU LABEL Knoppix 5.1.1
  kernel images/knoppix/511/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix511 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/511/miniroot.gz quiet BOOT_IMAGE=knoppix
 label Knoppix602
  MENU LABEL Knoppix 6.0.2
  kernel images/knoppix/602/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix602 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/511/miniroot.gz quiet BOOT_IMAGE=knoppix

=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !</text>
      <sha1>6gfdv7ewu4xqv7z9xkz7oefrzznda28</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1815</id>
      <parentid>1813</parentid>
      <timestamp>2010-08-02T17:12:39Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* hdt */</comment>
      <text xml:space="preserve" bytes="13164">{{Modèle:Ébauche|PXE}}

'''! Ceci est un brouillon, merci de ne pas apporter de modification tant que cet avertissement n'est pas enlevé...'''


== Installation par le réseau - Boot PXE ==

Cet article propose de vous expliquer l’installation et la configuration d'un serveur PXE sur votre Debian.

Le démarrage PXE (Pre-boot eXecution Environment) permet à une station de travail de démarrer depuis le réseau en récupérant une image de système d'exploitation qui se trouve sur votre serveur (Pour commencer: Debian Netinstall, PXEKnife, SysterescuCD, HDT, Knoppix et d'autres à venir)

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /var/lib/syslinux
:chain.c32
:mboot.c32
:menu.c32
:pxelinux.0
:reboot.c32
:gpxelinux.0
:memdisk
:vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/chain.c32 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste :

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;gpxelinux.0&quot;;
 next-server 192.168.0.1;

Vous avez le choix entre deux amorces : pxelinux.0 ou gpxelinux.0
J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.

Le premier fichier &quot;gpxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse ou la machine qui demande à booter va chercher le pxelinux.O; Rine ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;gpxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;isalo.org&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/old-stable ou stable, testing, unstable...

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les information sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 prompt 1
 timeout 300
 noescape 1
 display f1.msg
 F1 f1.msg
 F2 f2.msg
 
#Sous-menu Debian netboot
LABEL DebianNetboot
 MENU LABEL Debian Netboot ---&gt;
 kernel menu.c32
 append images/debian/debian.conf

 # nano /var/lib/tftpboot/images/debian/debian.conf

 MENU TITLE --== Debian Netboot ==--
 
 # Retour au menu principal
 LABEL rootmenu
         MENU LABEL &lt;---- Menu principal
         kernel vesamenu.c32
         append /pxelinux.cfg/default
 
 label 1
         MENU LABEL Etch i386
         kernel images/debian/old-stable/i386/linux
         append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall r$
 
 label 2
         MENU LABEL Etch amd64
         kernel images/debian/old-stable/amd64/linux
         append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall $
 
 label 3
         MENU LABEL Lenny i386
         kernel images/debian/stable/i386/linux
         append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
         MENU LABEL Lenny amd64
         kernel images/debian/stable/amd64/linux
         append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  $
 
 label 5
         MENU LABEL Squeeze i386
         kernel images/debian/testing/i386/linux
         append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  $
 
 label 7
         MENU LABEL Unstable i386
         kernel images/debian/unstable/i386/linux
         append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw $
 
 label 8
         MENU LABEL Unstable amd64
         kernel images/debian/unstable/amd64/linux
         append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw$

=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

/var/lib/tftpboot/images/systemrescue vdir
total 214072
-r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
-r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
-r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
-r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

=== pxeknife ===

Petit utilitaire très complet, à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Décompréssez l'archive dans /var/lib/tftpboot/images/pxeknife

Editez /var/lib/tftpboot/images/pxeknife/pxeknife.conf pour qu'il reflète votre configuration (changement des chemins si nécessaire)

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append images/pxeknife/pxeknife.conf

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

 label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

=== Un menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrés dans défault

 KBDMAP french.kbd

=== Une option &quot;reboot&quot; et démarrage sur le disque dur ===

Pour démarrer sur le premier disque dur, ajoutez en début de menu :

 label bootlocal
  MENU DEFAULT
  MENU LABEL Local Boot
  localboot 0

Pour avoir la possibilité de redémarrer, ajoutez en fin de menu :

 label reboot
  menu label Reboot
  kernel reboot.c32


=== Knoppix 511 et 602 ===

Pour utiliser les images ISO de Knoppix, nous allons avoir besoin d'un serveur NFS :

 # apt-get install nfs-kernel-server

Pour autoriser notre réseau à utiliser le serveur NFS, ajoutons la ligne suivante au fichier /etc/hosts.allow

 mountd: 192.168.0.

Créez les répertoires qui vont accueillir les CD

 # mkdir /mnt/sdb1/knoppix511
 # mkdir /mnt/sdb1/knoppix602

Montez les CD et copiez leur contenu dans les répertoires que vous venez de créer

Récuperer les fichiers &quot;amorce&quot;

# Démarrez sur votre CD/ISO knoppix.
# Ouvrez une console, et tapez

 netcardconfig

Une boite de dialogue s'ouvre, répondez :
- obtain address automatically

Puis
Code:
knoppix-terminalserver

Une nouvelle boite de dialogue s'ouvre, répondez :
- ok
- setup configure and restart
- Laissez le &quot;range&quot; d'adresse proposées
- Il vous propose ensuite une liste de drivers de cartes réseau. Choisissez celles qui conviennent à votre réseau (ou toutes, ce que j'ai fait par prudence...)
- décochez &quot;secure: Disable root access on client&quot; - ça peut vous servir, et il semblerait que ça pose des problèmes si c'est laissé coché...
- Laissez vide à la question suivante à moins que vous ne connaissiez exactement les paramètres vidéo de vos clients...
- The Knoppix-terminal server will now be started = YES

Cela va démarrer un certain nombre de services réseaux, dont tftp...
Et créer les fichier dont nous avons besoin pour notre PXE...
Récupérez les fichiers suivants qui se trouvent dans le répertoire /tftpboot/ de votre Knoppix :
miniroot.gz et vmlinuz

Vous copierez ces fichiers dans les répertoires que vous allez créer /var/lib/tftpboot/images/knoppix/511 et 602

Donc vous devriez avoir ceci dans chaque répertoire
(si vous avez choisi d'installer knoppix 5 et knoppix 6)

miniroot.gz, vmlinuz

Ajoutez les partages NFS au fichier /etc/exports (en lecture seule...)

 /mnt/sdb1/knoppix511 *(ro,no_subtree_check,no_root_squash)
 /mnt/sdb1/knoppix602 *(ro,no_subtree_check,no_root_squash)

Redémarrez le serveur NFS

 # /etc/init.d/nfs-kernel-server restart

Ajoutez les entrées dans votre menu &quot;default&quot; :

 label Knoppix511
  MENU LABEL Knoppix 5.1.1
  kernel images/knoppix/511/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix511 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/511/miniroot.gz quiet BOOT_IMAGE=knoppix
 label Knoppix602
  MENU LABEL Knoppix 6.0.2
  kernel images/knoppix/602/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix602 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/511/miniroot.gz quiet BOOT_IMAGE=knoppix

=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !</text>
      <sha1>f9sgpj00xdq9a55lmz3q0kzg7onlbc9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1816</id>
      <parentid>1815</parentid>
      <timestamp>2010-08-03T03:42:50Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Knoppix 511 et 602 */</comment>
      <text xml:space="preserve" bytes="13108">{{Modèle:Ébauche|PXE}}

'''! Ceci est un brouillon, merci de ne pas apporter de modification tant que cet avertissement n'est pas enlevé...'''


== Installation par le réseau - Boot PXE ==

Cet article propose de vous expliquer l’installation et la configuration d'un serveur PXE sur votre Debian.

Le démarrage PXE (Pre-boot eXecution Environment) permet à une station de travail de démarrer depuis le réseau en récupérant une image de système d'exploitation qui se trouve sur votre serveur (Pour commencer: Debian Netinstall, PXEKnife, SysterescuCD, HDT, Knoppix et d'autres à venir)

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /var/lib/syslinux
:chain.c32
:mboot.c32
:menu.c32
:pxelinux.0
:reboot.c32
:gpxelinux.0
:memdisk
:vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/chain.c32 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste :

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;gpxelinux.0&quot;;
 next-server 192.168.0.1;

Vous avez le choix entre deux amorces : pxelinux.0 ou gpxelinux.0
J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.

Le premier fichier &quot;gpxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse ou la machine qui demande à booter va chercher le pxelinux.O; Rine ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;gpxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;isalo.org&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/old-stable ou stable, testing, unstable...

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les information sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 prompt 1
 timeout 300
 noescape 1
 display f1.msg
 F1 f1.msg
 F2 f2.msg
 
#Sous-menu Debian netboot
LABEL DebianNetboot
 MENU LABEL Debian Netboot ---&gt;
 kernel menu.c32
 append images/debian/debian.conf

 # nano /var/lib/tftpboot/images/debian/debian.conf

 MENU TITLE --== Debian Netboot ==--
 
 # Retour au menu principal
 LABEL rootmenu
         MENU LABEL &lt;---- Menu principal
         kernel vesamenu.c32
         append /pxelinux.cfg/default
 
 label 1
         MENU LABEL Etch i386
         kernel images/debian/old-stable/i386/linux
         append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall r$
 
 label 2
         MENU LABEL Etch amd64
         kernel images/debian/old-stable/amd64/linux
         append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall $
 
 label 3
         MENU LABEL Lenny i386
         kernel images/debian/stable/i386/linux
         append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
         MENU LABEL Lenny amd64
         kernel images/debian/stable/amd64/linux
         append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  $
 
 label 5
         MENU LABEL Squeeze i386
         kernel images/debian/testing/i386/linux
         append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  $
 
 label 7
         MENU LABEL Unstable i386
         kernel images/debian/unstable/i386/linux
         append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw $
 
 label 8
         MENU LABEL Unstable amd64
         kernel images/debian/unstable/amd64/linux
         append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw$

=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

/var/lib/tftpboot/images/systemrescue vdir
total 214072
-r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
-r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
-r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
-r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

=== pxeknife ===

Petit utilitaire très complet, à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Décompréssez l'archive dans /var/lib/tftpboot/images/pxeknife

Editez /var/lib/tftpboot/images/pxeknife/pxeknife.conf pour qu'il reflète votre configuration (changement des chemins si nécessaire)

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append images/pxeknife/pxeknife.conf

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

 label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

=== Un menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrés dans défault

 KBDMAP french.kbd

=== Une option &quot;reboot&quot; et démarrage sur le disque dur ===

Pour démarrer sur le premier disque dur, ajoutez en début de menu :

 label bootlocal
  MENU DEFAULT
  MENU LABEL Local Boot
  localboot 0

Pour avoir la possibilité de redémarrer, ajoutez en fin de menu :

 label reboot
  menu label Reboot
  kernel reboot.c32


=== Knoppix 511 et 620 ===

Pour utiliser les images ISO de Knoppix, nous allons avoir besoin d'un serveur NFS :

 # apt-get install nfs-kernel-server

Pour autoriser notre réseau à utiliser le serveur NFS, ajoutons la ligne suivante au fichier /etc/hosts.allow

 mountd: 192.168.0.

Créez les répertoires qui vont accueillir les CD

 # mkdir /mnt/sdb1/knoppix511
 # mkdir /mnt/sdb1/knoppix620

Montez les CD et copiez leur contenu dans les répertoires que vous venez de créer

Récuperer les fichiers &quot;amorce&quot;

# Démarrez sur votre CD/ISO knoppix.
# Ouvrez une console, et tapez

 netcardconfig

Une boite de dialogue s'ouvre, répondez :
- obtain address automatically

Puis
Code:
knoppix-terminalserver

Une nouvelle boite de dialogue s'ouvre, répondez :
- ok
- setup configure and restart
- Laissez le &quot;range&quot; d'adresse proposées
- Il vous propose ensuite une liste de drivers de cartes réseau. Choisissez celles qui conviennent à votre réseau (ou toutes, ce que j'ai fait par prudence...)
- décochez &quot;secure: Disable root access on client&quot; - ça peut vous servir, et il semblerait que ça pose des problèmes si c'est laissé coché...
- Laissez vide à la question suivante à moins que vous ne connaissiez exactement les paramètres vidéo de vos clients...
- The Knoppix-terminal server will now be started = YES

Cela va démarrer un certain nombre de services réseaux, dont tftp...
Et créer les fichier dont nous avons besoin pour notre PXE...
Récupérez les fichiers suivants qui se trouvent dans le répertoire /tftpboot/ de votre Knoppix :
miniroot.gz et vmlinuz

Vous copierez ces fichiers dans les répertoires que vous allez créer /var/lib/tftpboot/images/knoppix/511 et 620

Donc vous devriez avoir ceci dans chaque répertoire

miniroot.gz, vmlinuz

Ajoutez les partages NFS au fichier /etc/exports (en lecture seule...)

 /mnt/sdb1/knoppix511 *(ro,no_subtree_check,no_root_squash)
 /mnt/sdb1/knoppix620 *(ro,no_subtree_check,no_root_squash)

Redémarrez le serveur NFS

 # /etc/init.d/nfs-kernel-server restart

Ajoutez les entrées dans votre menu &quot;default&quot; :

 label Knoppix511
  MENU LABEL Knoppix 5.1.1
  kernel images/knoppix/511/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix511 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/511/miniroot.gz quiet BOOT_IMAGE=knoppix

 label Knoppix620
  MENU LABEL Knoppix 6.2.0
  kernel images/knoppix/620/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix620 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/620/miniroot.gz quiet BOOT_IMAGE=knoppix

=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !</text>
      <sha1>6q8s4jeu74gewt7yga02zmfvi9ndisg</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1817</id>
      <parentid>1816</parentid>
      <timestamp>2010-08-03T03:46:06Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="13066">{{Modèle:Ébauche|PXE}}

== Installation par le réseau - Boot PXE ==

Cet article propose de vous expliquer l’installation et la configuration d'un serveur PXE sur votre Debian.

Le démarrage PXE (Pre-boot eXecution Environment) permet à une station de travail de démarrer depuis le réseau en récupérant une image de système d'exploitation qui se trouve sur votre serveur (Pour commencer: Debian Netinstall, PXEKnife, SysterescuCD, HDT, Knoppix et d'autres à venir)

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /var/lib/syslinux
:chain.c32
:mboot.c32
:menu.c32
:pxelinux.0
:reboot.c32
:gpxelinux.0
:memdisk
:vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/chain.c32 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste :

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;gpxelinux.0&quot;;
 next-server 192.168.0.1;

Vous avez le choix entre deux amorces : pxelinux.0 ou gpxelinux.0
J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.

Le premier fichier &quot;gpxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse ou la machine qui demande à booter va chercher le pxelinux.O; Rine ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;gpxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;isalo.org&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/old-stable ou stable, testing, unstable...

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les information sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 prompt 1
 timeout 300
 noescape 1
 display f1.msg
 F1 f1.msg
 F2 f2.msg
 
#Sous-menu Debian netboot
LABEL DebianNetboot
 MENU LABEL Debian Netboot ---&gt;
 kernel menu.c32
 append images/debian/debian.conf

 # nano /var/lib/tftpboot/images/debian/debian.conf

 MENU TITLE --== Debian Netboot ==--
 
 # Retour au menu principal
 LABEL rootmenu
         MENU LABEL &lt;---- Menu principal
         kernel vesamenu.c32
         append /pxelinux.cfg/default
 
 label 1
         MENU LABEL Etch i386
         kernel images/debian/old-stable/i386/linux
         append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall r$
 
 label 2
         MENU LABEL Etch amd64
         kernel images/debian/old-stable/amd64/linux
         append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall $
 
 label 3
         MENU LABEL Lenny i386
         kernel images/debian/stable/i386/linux
         append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
         MENU LABEL Lenny amd64
         kernel images/debian/stable/amd64/linux
         append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  $
 
 label 5
         MENU LABEL Squeeze i386
         kernel images/debian/testing/i386/linux
         append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  $
 
 label 7
         MENU LABEL Unstable i386
         kernel images/debian/unstable/i386/linux
         append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw $
 
 label 8
         MENU LABEL Unstable amd64
         kernel images/debian/unstable/amd64/linux
         append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw$

=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

/var/lib/tftpboot/images/systemrescue vdir
total 214072
-r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
-r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
-r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
-r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

=== pxeknife ===

Petit utilitaire très complet, à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Décompréssez l'archive dans /var/lib/tftpboot/images/pxeknife

Editez /var/lib/tftpboot/images/pxeknife/pxeknife.conf pour qu'il reflète votre configuration (changement des chemins si nécessaire)

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append images/pxeknife/pxeknife.conf

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

 label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

=== Un menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrés dans défault

 KBDMAP french.kbd

=== Une option &quot;reboot&quot; et démarrage sur le disque dur ===

Pour démarrer sur le premier disque dur, ajoutez en début de menu :

 label bootlocal
  MENU DEFAULT
  MENU LABEL Local Boot
  localboot 0

Pour avoir la possibilité de redémarrer, ajoutez en fin de menu :

 label reboot
  menu label Reboot
  kernel reboot.c32


=== Knoppix 511 et 620 ===

Pour utiliser les images ISO de Knoppix, nous allons avoir besoin d'un serveur NFS :

 # apt-get install nfs-kernel-server

Pour autoriser notre réseau à utiliser le serveur NFS, ajoutons la ligne suivante au fichier /etc/hosts.allow

 mountd: 192.168.0.

Créez les répertoires qui vont accueillir les CD

 # mkdir /mnt/sdb1/knoppix511
 # mkdir /mnt/sdb1/knoppix620

Montez les CD et copiez leur contenu dans les répertoires que vous venez de créer

Récuperer les fichiers &quot;amorce&quot;

# Démarrez sur votre CD/ISO knoppix.
# Ouvrez une console, et tapez

 netcardconfig

Une boite de dialogue s'ouvre, répondez :
- obtain address automatically

Puis
Code:
knoppix-terminalserver

Une nouvelle boite de dialogue s'ouvre, répondez :
- ok
- setup configure and restart
- Laissez le &quot;range&quot; d'adresse proposées
- Il vous propose ensuite une liste de drivers de cartes réseau. Choisissez celles qui conviennent à votre réseau (ou toutes, ce que j'ai fait par prudence...)
- décochez &quot;secure: Disable root access on client&quot; - ça peut vous servir, et il semblerait que ça pose des problèmes si c'est laissé coché...
- Laissez vide à la question suivante à moins que vous ne connaissiez exactement les paramètres vidéo de vos clients...
- The Knoppix-terminal server will now be started = YES

Cela va démarrer un certain nombre de services réseaux, dont tftp...
Et créer les fichier dont nous avons besoin pour notre PXE...
Récupérez les fichiers suivants qui se trouvent dans le répertoire /tftpboot/ de votre Knoppix :
miniroot.gz et vmlinuz

Vous copierez ces fichiers dans les répertoires que vous allez créer /var/lib/tftpboot/images/knoppix/511 et 620

Donc vous devriez avoir ceci dans chaque répertoire

miniroot.gz, vmlinuz

Ajoutez les partages NFS au fichier /etc/exports (en lecture seule...)

 /mnt/sdb1/knoppix511 *(ro,no_subtree_check,no_root_squash)
 /mnt/sdb1/knoppix620 *(ro,no_subtree_check,no_root_squash)

Redémarrez le serveur NFS

 # /etc/init.d/nfs-kernel-server restart

Ajoutez les entrées dans votre menu &quot;default&quot; :

 label Knoppix511
  MENU LABEL Knoppix 5.1.1
  kernel images/knoppix/511/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix511 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/511/miniroot.gz quiet BOOT_IMAGE=knoppix

 label Knoppix620
  MENU LABEL Knoppix 6.2.0
  kernel images/knoppix/620/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix620 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/620/miniroot.gz quiet BOOT_IMAGE=knoppix

=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !

[[Utilisateur:Lol|Lol]] 3 août 2010 à 03:46 (UTC)

[[Category:Installation]]</text>
      <sha1>nkfcvddlzf4kwmay8usrmn8tqwz3ez9</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1818</id>
      <parentid>1817</parentid>
      <timestamp>2010-08-03T04:28:17Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Netboot Debian */</comment>
      <text xml:space="preserve" bytes="12534">{{Modèle:Ébauche|PXE}}

== Installation par le réseau - Boot PXE ==

Cet article propose de vous expliquer l’installation et la configuration d'un serveur PXE sur votre Debian.

Le démarrage PXE (Pre-boot eXecution Environment) permet à une station de travail de démarrer depuis le réseau en récupérant une image de système d'exploitation qui se trouve sur votre serveur (Pour commencer: Debian Netinstall, PXEKnife, SysterescuCD, HDT, Knoppix et d'autres à venir)

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /var/lib/syslinux
:chain.c32
:mboot.c32
:menu.c32
:pxelinux.0
:reboot.c32
:gpxelinux.0
:memdisk
:vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/chain.c32 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste :

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;gpxelinux.0&quot;;
 next-server 192.168.0.1;

Vous avez le choix entre deux amorces : pxelinux.0 ou gpxelinux.0
J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.

Le premier fichier &quot;gpxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse ou la machine qui demande à booter va chercher le pxelinux.O; Rine ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;gpxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;isalo.org&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/old-stable ou stable, testing, unstable...

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les information sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 default menu.c32
 prompt 0
 noescape 1
 timeout 300
 
 label 1
  MENU LABEL Etch i386
  kernel images/debian/old-stable/i386/linux
  append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 2
  MENU LABEL Etch amd64
  kernel images/debian/old-stable/amd64/linux
  append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 3
  MENU LABEL Lenny i386
  kernel images/debian/stable/i386/linux
  append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
  MENU LABEL Lenny amd64
  kernel images/debian/stable/amd64/linux
  append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 5
  MENU LABEL Squeeze i386
  kernel images/debian/testing/i386/linux
  append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 7
  MENU LABEL Unstable i386
  kernel images/debian/unstable/i386/linux
  append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 8
  MENU LABEL Unstable amd64
  kernel images/debian/unstable/amd64/linux
  append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --

=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

/var/lib/tftpboot/images/systemrescue vdir
total 214072
-r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
-r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
-r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
-r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

=== pxeknife ===

Petit utilitaire très complet, à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Décompréssez l'archive dans /var/lib/tftpboot/images/pxeknife

Editez /var/lib/tftpboot/images/pxeknife/pxeknife.conf pour qu'il reflète votre configuration (changement des chemins si nécessaire)

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append images/pxeknife/pxeknife.conf

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

 label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

=== Un menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrés dans défault

 KBDMAP french.kbd

=== Une option &quot;reboot&quot; et démarrage sur le disque dur ===

Pour démarrer sur le premier disque dur, ajoutez en début de menu :

 label bootlocal
  MENU DEFAULT
  MENU LABEL Local Boot
  localboot 0

Pour avoir la possibilité de redémarrer, ajoutez en fin de menu :

 label reboot
  menu label Reboot
  kernel reboot.c32


=== Knoppix 511 et 620 ===

Pour utiliser les images ISO de Knoppix, nous allons avoir besoin d'un serveur NFS :

 # apt-get install nfs-kernel-server

Pour autoriser notre réseau à utiliser le serveur NFS, ajoutons la ligne suivante au fichier /etc/hosts.allow

 mountd: 192.168.0.

Créez les répertoires qui vont accueillir les CD

 # mkdir /mnt/sdb1/knoppix511
 # mkdir /mnt/sdb1/knoppix620

Montez les CD et copiez leur contenu dans les répertoires que vous venez de créer

Récuperer les fichiers &quot;amorce&quot;

# Démarrez sur votre CD/ISO knoppix.
# Ouvrez une console, et tapez

 netcardconfig

Une boite de dialogue s'ouvre, répondez :
- obtain address automatically

Puis
Code:
knoppix-terminalserver

Une nouvelle boite de dialogue s'ouvre, répondez :
- ok
- setup configure and restart
- Laissez le &quot;range&quot; d'adresse proposées
- Il vous propose ensuite une liste de drivers de cartes réseau. Choisissez celles qui conviennent à votre réseau (ou toutes, ce que j'ai fait par prudence...)
- décochez &quot;secure: Disable root access on client&quot; - ça peut vous servir, et il semblerait que ça pose des problèmes si c'est laissé coché...
- Laissez vide à la question suivante à moins que vous ne connaissiez exactement les paramètres vidéo de vos clients...
- The Knoppix-terminal server will now be started = YES

Cela va démarrer un certain nombre de services réseaux, dont tftp...
Et créer les fichier dont nous avons besoin pour notre PXE...
Récupérez les fichiers suivants qui se trouvent dans le répertoire /tftpboot/ de votre Knoppix :
miniroot.gz et vmlinuz

Vous copierez ces fichiers dans les répertoires que vous allez créer /var/lib/tftpboot/images/knoppix/511 et 620

Donc vous devriez avoir ceci dans chaque répertoire

miniroot.gz, vmlinuz

Ajoutez les partages NFS au fichier /etc/exports (en lecture seule...)

 /mnt/sdb1/knoppix511 *(ro,no_subtree_check,no_root_squash)
 /mnt/sdb1/knoppix620 *(ro,no_subtree_check,no_root_squash)

Redémarrez le serveur NFS

 # /etc/init.d/nfs-kernel-server restart

Ajoutez les entrées dans votre menu &quot;default&quot; :

 label Knoppix511
  MENU LABEL Knoppix 5.1.1
  kernel images/knoppix/511/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix511 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/511/miniroot.gz quiet BOOT_IMAGE=knoppix

 label Knoppix620
  MENU LABEL Knoppix 6.2.0
  kernel images/knoppix/620/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix620 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/620/miniroot.gz quiet BOOT_IMAGE=knoppix

=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !

[[Utilisateur:Lol|Lol]] 3 août 2010 à 03:46 (UTC)

[[Category:Installation]]</text>
      <sha1>jbeuf6uum0utzexq6gkv2rc3ku9iwrx</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1820</id>
      <parentid>1818</parentid>
      <timestamp>2010-08-03T04:33:24Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Netboot Debian */</comment>
      <text xml:space="preserve" bytes="12702">{{Modèle:Ébauche|PXE}}

== Installation par le réseau - Boot PXE ==

Cet article propose de vous expliquer l’installation et la configuration d'un serveur PXE sur votre Debian.

Le démarrage PXE (Pre-boot eXecution Environment) permet à une station de travail de démarrer depuis le réseau en récupérant une image de système d'exploitation qui se trouve sur votre serveur (Pour commencer: Debian Netinstall, PXEKnife, SysterescuCD, HDT, Knoppix et d'autres à venir)

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /var/lib/syslinux
:chain.c32
:mboot.c32
:menu.c32
:pxelinux.0
:reboot.c32
:gpxelinux.0
:memdisk
:vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/chain.c32 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste :

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;gpxelinux.0&quot;;
 next-server 192.168.0.1;

Vous avez le choix entre deux amorces : pxelinux.0 ou gpxelinux.0
J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.

Le premier fichier &quot;gpxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse ou la machine qui demande à booter va chercher le pxelinux.O; Rine ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;gpxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;isalo.org&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/old-stable ou stable, testing, unstable...

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les information sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 default menu.c32
 prompt 0
 noescape 1
 timeout 300
 
 label 1
  MENU LABEL Etch i386
  kernel images/debian/old-stable/i386/linux
  append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 2
  MENU LABEL Etch amd64
  kernel images/debian/old-stable/amd64/linux
  append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 3
  MENU LABEL Lenny i386
  kernel images/debian/stable/i386/linux
  append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
  MENU LABEL Lenny amd64
  kernel images/debian/stable/amd64/linux
  append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 5
  MENU LABEL Squeeze i386
  kernel images/debian/testing/i386/linux
  append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 7
  MENU LABEL Unstable i386
  kernel images/debian/unstable/i386/linux
  append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 8
  MENU LABEL Unstable amd64
  kernel images/debian/unstable/amd64/linux
  append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --

Le menu ci-dessus nous donnera le résultat suivant :

[[Fichier:Capture d'écran - 03082010 - 07-29-44.png]]

C'est déjà pas mal, mais nous pouvons l'améliorer...

=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

/var/lib/tftpboot/images/systemrescue vdir
total 214072
-r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
-r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
-r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
-r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

=== pxeknife ===

Petit utilitaire très complet, à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Décompréssez l'archive dans /var/lib/tftpboot/images/pxeknife

Editez /var/lib/tftpboot/images/pxeknife/pxeknife.conf pour qu'il reflète votre configuration (changement des chemins si nécessaire)

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append images/pxeknife/pxeknife.conf

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

 label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

=== Un menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrés dans défault

 KBDMAP french.kbd

=== Une option &quot;reboot&quot; et démarrage sur le disque dur ===

Pour démarrer sur le premier disque dur, ajoutez en début de menu :

 label bootlocal
  MENU DEFAULT
  MENU LABEL Local Boot
  localboot 0

Pour avoir la possibilité de redémarrer, ajoutez en fin de menu :

 label reboot
  menu label Reboot
  kernel reboot.c32


=== Knoppix 511 et 620 ===

Pour utiliser les images ISO de Knoppix, nous allons avoir besoin d'un serveur NFS :

 # apt-get install nfs-kernel-server

Pour autoriser notre réseau à utiliser le serveur NFS, ajoutons la ligne suivante au fichier /etc/hosts.allow

 mountd: 192.168.0.

Créez les répertoires qui vont accueillir les CD

 # mkdir /mnt/sdb1/knoppix511
 # mkdir /mnt/sdb1/knoppix620

Montez les CD et copiez leur contenu dans les répertoires que vous venez de créer

Récuperer les fichiers &quot;amorce&quot;

# Démarrez sur votre CD/ISO knoppix.
# Ouvrez une console, et tapez

 netcardconfig

Une boite de dialogue s'ouvre, répondez :
- obtain address automatically

Puis
Code:
knoppix-terminalserver

Une nouvelle boite de dialogue s'ouvre, répondez :
- ok
- setup configure and restart
- Laissez le &quot;range&quot; d'adresse proposées
- Il vous propose ensuite une liste de drivers de cartes réseau. Choisissez celles qui conviennent à votre réseau (ou toutes, ce que j'ai fait par prudence...)
- décochez &quot;secure: Disable root access on client&quot; - ça peut vous servir, et il semblerait que ça pose des problèmes si c'est laissé coché...
- Laissez vide à la question suivante à moins que vous ne connaissiez exactement les paramètres vidéo de vos clients...
- The Knoppix-terminal server will now be started = YES

Cela va démarrer un certain nombre de services réseaux, dont tftp...
Et créer les fichier dont nous avons besoin pour notre PXE...
Récupérez les fichiers suivants qui se trouvent dans le répertoire /tftpboot/ de votre Knoppix :
miniroot.gz et vmlinuz

Vous copierez ces fichiers dans les répertoires que vous allez créer /var/lib/tftpboot/images/knoppix/511 et 620

Donc vous devriez avoir ceci dans chaque répertoire

miniroot.gz, vmlinuz

Ajoutez les partages NFS au fichier /etc/exports (en lecture seule...)

 /mnt/sdb1/knoppix511 *(ro,no_subtree_check,no_root_squash)
 /mnt/sdb1/knoppix620 *(ro,no_subtree_check,no_root_squash)

Redémarrez le serveur NFS

 # /etc/init.d/nfs-kernel-server restart

Ajoutez les entrées dans votre menu &quot;default&quot; :

 label Knoppix511
  MENU LABEL Knoppix 5.1.1
  kernel images/knoppix/511/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix511 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/511/miniroot.gz quiet BOOT_IMAGE=knoppix

 label Knoppix620
  MENU LABEL Knoppix 6.2.0
  kernel images/knoppix/620/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix620 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/620/miniroot.gz quiet BOOT_IMAGE=knoppix

=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !

[[Utilisateur:Lol|Lol]] 3 août 2010 à 03:46 (UTC)

[[Category:Installation]]</text>
      <sha1>2hn496czjejkrxscfjvejxbtsurqaso</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1823</id>
      <parentid>1820</parentid>
      <timestamp>2010-08-03T05:37:37Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* RescueSystemCd */</comment>
      <text xml:space="preserve" bytes="14097">{{Modèle:Ébauche|PXE}}

== Installation par le réseau - Boot PXE ==

Cet article propose de vous expliquer l’installation et la configuration d'un serveur PXE sur votre Debian.

Le démarrage PXE (Pre-boot eXecution Environment) permet à une station de travail de démarrer depuis le réseau en récupérant une image de système d'exploitation qui se trouve sur votre serveur (Pour commencer: Debian Netinstall, PXEKnife, SysterescuCD, HDT, Knoppix et d'autres à venir)

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /var/lib/syslinux
:chain.c32
:mboot.c32
:menu.c32
:pxelinux.0
:reboot.c32
:gpxelinux.0
:memdisk
:vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/chain.c32 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste :

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;gpxelinux.0&quot;;
 next-server 192.168.0.1;

Vous avez le choix entre deux amorces : pxelinux.0 ou gpxelinux.0
J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.

Le premier fichier &quot;gpxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse ou la machine qui demande à booter va chercher le pxelinux.O; Rine ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;gpxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;isalo.org&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/old-stable ou stable, testing, unstable...

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les information sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 default menu.c32
 prompt 0
 noescape 1
 timeout 300
 
 label 1
  MENU LABEL Etch i386
  kernel images/debian/old-stable/i386/linux
  append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 2
  MENU LABEL Etch amd64
  kernel images/debian/old-stable/amd64/linux
  append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 3
  MENU LABEL Lenny i386
  kernel images/debian/stable/i386/linux
  append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
  MENU LABEL Lenny amd64
  kernel images/debian/stable/amd64/linux
  append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 5
  MENU LABEL Squeeze i386
  kernel images/debian/testing/i386/linux
  append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 7
  MENU LABEL Unstable i386
  kernel images/debian/unstable/i386/linux
  append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 8
  MENU LABEL Unstable amd64
  kernel images/debian/unstable/amd64/linux
  append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --

Le menu ci-dessus nous donnera le résultat suivant :

[[Fichier:Capture d'écran - 03082010 - 07-29-44.png]]

C'est déjà pas mal, mais nous pouvons l'améliorer...

=== Amélioration du menu ===

Avant de poursuivre, et pour ne pas être noyés sous les entrées, nous allons améliorer un peu le menu...

Commençons pas renommer le menu /var/lib/tftpboot/pxelinux.cf/default en /var/lib/tftpboot/pxelinux.cf/debian.conf

Editons le fichier /var/lib/tftpboot/pxelinux.cf/default pour y mettre ceci (Explication dessous)

 default vesamenu.c32
 prompt 0
 kbdmap french.kbd
 noescape 1
 timeout 300
 
 label bootlocal
  menu default
  menu label Local boot
  localboot 0
 
 # Vers le sous-menu Debian netboot
 label DebianNetboot
  menu label Debian Netboot ---&gt;
  kernel menu.c32
  append images/debian/debian.conf
 
 label reboot
   menu label Reboot
   kernel reboot.c32

Ce menu nous donne les avantages suivants :
Clavier en Français en cas d'édition du menu;
Meilleur rendu;
Possibilité de booter sur le premier disque dur (par défaut);
Ouvrir un sous-menu (ici vers debian.conf);
Rebooter la machine.

Nous ajouterons l'entrée suivante au sous-menu /var/lib/tftpboot/pxelinux.cf/debian.conf qui nous permettra de revenir au menu principal :

 # Retour au menu principal
 label rootmenu
  MENU LABEL &lt;---- Menu principal
  kernel vesamenu.c32
  append /pxelinux.cfg/default

Vous avez la base, tout ceci est paramétrable à l'infini...

[[Fichier:Capture d'écran - 03082010 - 08-33-09.png]]

[[Fichier:Capture d'écran - 03082010 - 08-35-29.png]]

=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

/var/lib/tftpboot/images/systemrescue vdir
total 214072
-r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
-r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
-r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
-r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

=== pxeknife ===

Petit utilitaire très complet, à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Décompréssez l'archive dans /var/lib/tftpboot/images/pxeknife

Editez /var/lib/tftpboot/images/pxeknife/pxeknife.conf pour qu'il reflète votre configuration (changement des chemins si nécessaire)

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append images/pxeknife/pxeknife.conf

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

 label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

=== Un menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrés dans défault

 KBDMAP french.kbd

=== Une option &quot;reboot&quot; et démarrage sur le disque dur ===

Pour démarrer sur le premier disque dur, ajoutez en début de menu :

 label bootlocal
  MENU DEFAULT
  MENU LABEL Local Boot
  localboot 0

Pour avoir la possibilité de redémarrer, ajoutez en fin de menu :

 label reboot
  menu label Reboot
  kernel reboot.c32


=== Knoppix 511 et 620 ===

Pour utiliser les images ISO de Knoppix, nous allons avoir besoin d'un serveur NFS :

 # apt-get install nfs-kernel-server

Pour autoriser notre réseau à utiliser le serveur NFS, ajoutons la ligne suivante au fichier /etc/hosts.allow

 mountd: 192.168.0.

Créez les répertoires qui vont accueillir les CD

 # mkdir /mnt/sdb1/knoppix511
 # mkdir /mnt/sdb1/knoppix620

Montez les CD et copiez leur contenu dans les répertoires que vous venez de créer

Récuperer les fichiers &quot;amorce&quot;

# Démarrez sur votre CD/ISO knoppix.
# Ouvrez une console, et tapez

 netcardconfig

Une boite de dialogue s'ouvre, répondez :
- obtain address automatically

Puis
Code:
knoppix-terminalserver

Une nouvelle boite de dialogue s'ouvre, répondez :
- ok
- setup configure and restart
- Laissez le &quot;range&quot; d'adresse proposées
- Il vous propose ensuite une liste de drivers de cartes réseau. Choisissez celles qui conviennent à votre réseau (ou toutes, ce que j'ai fait par prudence...)
- décochez &quot;secure: Disable root access on client&quot; - ça peut vous servir, et il semblerait que ça pose des problèmes si c'est laissé coché...
- Laissez vide à la question suivante à moins que vous ne connaissiez exactement les paramètres vidéo de vos clients...
- The Knoppix-terminal server will now be started = YES

Cela va démarrer un certain nombre de services réseaux, dont tftp...
Et créer les fichier dont nous avons besoin pour notre PXE...
Récupérez les fichiers suivants qui se trouvent dans le répertoire /tftpboot/ de votre Knoppix :
miniroot.gz et vmlinuz

Vous copierez ces fichiers dans les répertoires que vous allez créer /var/lib/tftpboot/images/knoppix/511 et 620

Donc vous devriez avoir ceci dans chaque répertoire

miniroot.gz, vmlinuz

Ajoutez les partages NFS au fichier /etc/exports (en lecture seule...)

 /mnt/sdb1/knoppix511 *(ro,no_subtree_check,no_root_squash)
 /mnt/sdb1/knoppix620 *(ro,no_subtree_check,no_root_squash)

Redémarrez le serveur NFS

 # /etc/init.d/nfs-kernel-server restart

Ajoutez les entrées dans votre menu &quot;default&quot; :

 label Knoppix511
  MENU LABEL Knoppix 5.1.1
  kernel images/knoppix/511/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix511 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/511/miniroot.gz quiet BOOT_IMAGE=knoppix

 label Knoppix620
  MENU LABEL Knoppix 6.2.0
  kernel images/knoppix/620/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix620 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/620/miniroot.gz quiet BOOT_IMAGE=knoppix

=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !

[[Utilisateur:Lol|Lol]] 3 août 2010 à 03:46 (UTC)

[[Category:Installation]]</text>
      <sha1>lg768277eux3jmp45ls62i75nnr4nxc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1824</id>
      <parentid>1823</parentid>
      <timestamp>2010-08-03T05:48:13Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Amélioration du menu */</comment>
      <text xml:space="preserve" bytes="14059">{{Modèle:Ébauche|PXE}}

== Installation par le réseau - Boot PXE ==

Cet article propose de vous expliquer l’installation et la configuration d'un serveur PXE sur votre Debian.

Le démarrage PXE (Pre-boot eXecution Environment) permet à une station de travail de démarrer depuis le réseau en récupérant une image de système d'exploitation qui se trouve sur votre serveur (Pour commencer: Debian Netinstall, PXEKnife, SysterescuCD, HDT, Knoppix et d'autres à venir)

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /var/lib/syslinux
:chain.c32
:mboot.c32
:menu.c32
:pxelinux.0
:reboot.c32
:gpxelinux.0
:memdisk
:vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/chain.c32 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste :

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;gpxelinux.0&quot;;
 next-server 192.168.0.1;

Vous avez le choix entre deux amorces : pxelinux.0 ou gpxelinux.0
J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.

Le premier fichier &quot;gpxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse ou la machine qui demande à booter va chercher le pxelinux.O; Rine ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;gpxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;isalo.org&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/old-stable ou stable, testing, unstable...

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les information sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 default menu.c32
 prompt 0
 noescape 1
 timeout 300
 
 label 1
  MENU LABEL Etch i386
  kernel images/debian/old-stable/i386/linux
  append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 2
  MENU LABEL Etch amd64
  kernel images/debian/old-stable/amd64/linux
  append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 3
  MENU LABEL Lenny i386
  kernel images/debian/stable/i386/linux
  append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
  MENU LABEL Lenny amd64
  kernel images/debian/stable/amd64/linux
  append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 5
  MENU LABEL Squeeze i386
  kernel images/debian/testing/i386/linux
  append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 7
  MENU LABEL Unstable i386
  kernel images/debian/unstable/i386/linux
  append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 8
  MENU LABEL Unstable amd64
  kernel images/debian/unstable/amd64/linux
  append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --

Le menu ci-dessus nous donnera le résultat suivant :

[[Fichier:Capture d'écran - 03082010 - 07-29-44.png]]

C'est déjà pas mal, mais nous pouvons l'améliorer...

=== Amélioration du menu ===

Avant de poursuivre, et pour ne pas être noyés sous les entrées, nous allons améliorer un peu le menu...

Commençons pas renommer le menu /var/lib/tftpboot/pxelinux.cf/default en /var/lib/tftpboot/debian.conf

Editons le fichier /var/lib/tftpboot/pxelinux.cf/default pour y mettre ceci (Explication dessous)

 default vesamenu.c32
 prompt 0
 kbdmap french.kbd
 noescape 1
 timeout 300
 
 label bootlocal
  menu default
  menu label Local boot
  localboot 0
 
 # Vers le sous-menu Debian netboot
 label DebianNetboot
  menu label Debian Netboot ---&gt;
  kernel menu.c32
  append debian.conf
 
 label reboot
   menu label Reboot
   kernel reboot.c32

Ce menu nous donne les avantages suivants :
Clavier en Français en cas d'édition du menu;
Meilleur rendu;
Possibilité de booter sur le premier disque dur (par défaut);
Ouvrir un sous-menu (ici vers debian.conf);
Rebooter la machine.

Nous ajouterons l'entrée suivante au sous-menu /var/lib/tftpboot/debian.conf qui nous permettra de revenir au menu principal :

 # Retour au menu principal
 label rootmenu
  MENU LABEL &lt;---- Menu principal
  kernel vesamenu.c32
  append /pxelinux.cfg/default

Vous avez la base, tout ceci est paramétrable à l'infini...

[[Fichier:Capture d'écran - 03082010 - 08-33-09.png]]

[[Fichier:Capture d'écran - 03082010 - 08-35-29.png]]

=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

/var/lib/tftpboot/images/systemrescue vdir
total 214072
-r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
-r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
-r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
-r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

=== pxeknife ===

Petit utilitaire très complet, à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Décompréssez l'archive dans /var/lib/tftpboot/images/pxeknife

Editez /var/lib/tftpboot/images/pxeknife/pxeknife.conf pour qu'il reflète votre configuration (changement des chemins si nécessaire)

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append images/pxeknife/pxeknife.conf

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

 label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

=== Un menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrés dans défault

 KBDMAP french.kbd

=== Une option &quot;reboot&quot; et démarrage sur le disque dur ===

Pour démarrer sur le premier disque dur, ajoutez en début de menu :

 label bootlocal
  MENU DEFAULT
  MENU LABEL Local Boot
  localboot 0

Pour avoir la possibilité de redémarrer, ajoutez en fin de menu :

 label reboot
  menu label Reboot
  kernel reboot.c32


=== Knoppix 511 et 620 ===

Pour utiliser les images ISO de Knoppix, nous allons avoir besoin d'un serveur NFS :

 # apt-get install nfs-kernel-server

Pour autoriser notre réseau à utiliser le serveur NFS, ajoutons la ligne suivante au fichier /etc/hosts.allow

 mountd: 192.168.0.

Créez les répertoires qui vont accueillir les CD

 # mkdir /mnt/sdb1/knoppix511
 # mkdir /mnt/sdb1/knoppix620

Montez les CD et copiez leur contenu dans les répertoires que vous venez de créer

Récuperer les fichiers &quot;amorce&quot;

# Démarrez sur votre CD/ISO knoppix.
# Ouvrez une console, et tapez

 netcardconfig

Une boite de dialogue s'ouvre, répondez :
- obtain address automatically

Puis
Code:
knoppix-terminalserver

Une nouvelle boite de dialogue s'ouvre, répondez :
- ok
- setup configure and restart
- Laissez le &quot;range&quot; d'adresse proposées
- Il vous propose ensuite une liste de drivers de cartes réseau. Choisissez celles qui conviennent à votre réseau (ou toutes, ce que j'ai fait par prudence...)
- décochez &quot;secure: Disable root access on client&quot; - ça peut vous servir, et il semblerait que ça pose des problèmes si c'est laissé coché...
- Laissez vide à la question suivante à moins que vous ne connaissiez exactement les paramètres vidéo de vos clients...
- The Knoppix-terminal server will now be started = YES

Cela va démarrer un certain nombre de services réseaux, dont tftp...
Et créer les fichier dont nous avons besoin pour notre PXE...
Récupérez les fichiers suivants qui se trouvent dans le répertoire /tftpboot/ de votre Knoppix :
miniroot.gz et vmlinuz

Vous copierez ces fichiers dans les répertoires que vous allez créer /var/lib/tftpboot/images/knoppix/511 et 620

Donc vous devriez avoir ceci dans chaque répertoire

miniroot.gz, vmlinuz

Ajoutez les partages NFS au fichier /etc/exports (en lecture seule...)

 /mnt/sdb1/knoppix511 *(ro,no_subtree_check,no_root_squash)
 /mnt/sdb1/knoppix620 *(ro,no_subtree_check,no_root_squash)

Redémarrez le serveur NFS

 # /etc/init.d/nfs-kernel-server restart

Ajoutez les entrées dans votre menu &quot;default&quot; :

 label Knoppix511
  MENU LABEL Knoppix 5.1.1
  kernel images/knoppix/511/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix511 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/511/miniroot.gz quiet BOOT_IMAGE=knoppix

 label Knoppix620
  MENU LABEL Knoppix 6.2.0
  kernel images/knoppix/620/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix620 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/620/miniroot.gz quiet BOOT_IMAGE=knoppix

=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !

[[Utilisateur:Lol|Lol]] 3 août 2010 à 03:46 (UTC)

[[Category:Installation]]</text>
      <sha1>8h6em27ulbamwp4bxrxmfgnpwam43wz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1825</id>
      <parentid>1824</parentid>
      <timestamp>2010-08-03T05:49:25Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Knoppix 511 et 620 */</comment>
      <text xml:space="preserve" bytes="14060">{{Modèle:Ébauche|PXE}}

== Installation par le réseau - Boot PXE ==

Cet article propose de vous expliquer l’installation et la configuration d'un serveur PXE sur votre Debian.

Le démarrage PXE (Pre-boot eXecution Environment) permet à une station de travail de démarrer depuis le réseau en récupérant une image de système d'exploitation qui se trouve sur votre serveur (Pour commencer: Debian Netinstall, PXEKnife, SysterescuCD, HDT, Knoppix et d'autres à venir)

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /var/lib/syslinux
:chain.c32
:mboot.c32
:menu.c32
:pxelinux.0
:reboot.c32
:gpxelinux.0
:memdisk
:vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/chain.c32 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste :

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;gpxelinux.0&quot;;
 next-server 192.168.0.1;

Vous avez le choix entre deux amorces : pxelinux.0 ou gpxelinux.0
J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.

Le premier fichier &quot;gpxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse ou la machine qui demande à booter va chercher le pxelinux.O; Rine ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;gpxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;isalo.org&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/old-stable ou stable, testing, unstable...

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les information sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 default menu.c32
 prompt 0
 noescape 1
 timeout 300
 
 label 1
  MENU LABEL Etch i386
  kernel images/debian/old-stable/i386/linux
  append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 2
  MENU LABEL Etch amd64
  kernel images/debian/old-stable/amd64/linux
  append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 3
  MENU LABEL Lenny i386
  kernel images/debian/stable/i386/linux
  append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
  MENU LABEL Lenny amd64
  kernel images/debian/stable/amd64/linux
  append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 5
  MENU LABEL Squeeze i386
  kernel images/debian/testing/i386/linux
  append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 7
  MENU LABEL Unstable i386
  kernel images/debian/unstable/i386/linux
  append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 8
  MENU LABEL Unstable amd64
  kernel images/debian/unstable/amd64/linux
  append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --

Le menu ci-dessus nous donnera le résultat suivant :

[[Fichier:Capture d'écran - 03082010 - 07-29-44.png]]

C'est déjà pas mal, mais nous pouvons l'améliorer...

=== Amélioration du menu ===

Avant de poursuivre, et pour ne pas être noyés sous les entrées, nous allons améliorer un peu le menu...

Commençons pas renommer le menu /var/lib/tftpboot/pxelinux.cf/default en /var/lib/tftpboot/debian.conf

Editons le fichier /var/lib/tftpboot/pxelinux.cf/default pour y mettre ceci (Explication dessous)

 default vesamenu.c32
 prompt 0
 kbdmap french.kbd
 noescape 1
 timeout 300
 
 label bootlocal
  menu default
  menu label Local boot
  localboot 0
 
 # Vers le sous-menu Debian netboot
 label DebianNetboot
  menu label Debian Netboot ---&gt;
  kernel menu.c32
  append debian.conf
 
 label reboot
   menu label Reboot
   kernel reboot.c32

Ce menu nous donne les avantages suivants :
Clavier en Français en cas d'édition du menu;
Meilleur rendu;
Possibilité de booter sur le premier disque dur (par défaut);
Ouvrir un sous-menu (ici vers debian.conf);
Rebooter la machine.

Nous ajouterons l'entrée suivante au sous-menu /var/lib/tftpboot/debian.conf qui nous permettra de revenir au menu principal :

 # Retour au menu principal
 label rootmenu
  MENU LABEL &lt;---- Menu principal
  kernel vesamenu.c32
  append /pxelinux.cfg/default

Vous avez la base, tout ceci est paramétrable à l'infini...

[[Fichier:Capture d'écran - 03082010 - 08-33-09.png]]

[[Fichier:Capture d'écran - 03082010 - 08-35-29.png]]

=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

/var/lib/tftpboot/images/systemrescue vdir
total 214072
-r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
-r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
-r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
-r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

=== pxeknife ===

Petit utilitaire très complet, à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Décompréssez l'archive dans /var/lib/tftpboot/images/pxeknife

Editez /var/lib/tftpboot/images/pxeknife/pxeknife.conf pour qu'il reflète votre configuration (changement des chemins si nécessaire)

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append images/pxeknife/pxeknife.conf

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

 label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

=== Un menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrés dans défault

 KBDMAP french.kbd

=== Une option &quot;reboot&quot; et démarrage sur le disque dur ===

Pour démarrer sur le premier disque dur, ajoutez en début de menu :

 label bootlocal
  MENU DEFAULT
  MENU LABEL Local Boot
  localboot 0

Pour avoir la possibilité de redémarrer, ajoutez en fin de menu :

 label reboot
  menu label Reboot
  kernel reboot.c32


=== Knoppix 511 et 620 ===

Pour utiliser les images ISO de Knoppix, nous allons avoir besoin d'un serveur NFS :

 # apt-get install nfs-kernel-server

Pour autoriser notre réseau à utiliser le serveur NFS, ajoutons la ligne suivante au fichier /etc/hosts.allow

 mountd: 192.168.0.

Créez les répertoires qui vont accueillir les CD

 # mkdir /mnt/sdb1/knoppix511
 # mkdir /mnt/sdb1/knoppix620

Montez les CD et copiez leur contenu dans les répertoires que vous venez de créer

Récuperer les fichiers &quot;amorce&quot;

# Démarrez sur votre CD/ISO knoppix.
# Ouvrez une console, et tapez

 netcardconfig

Une boite de dialogue s'ouvre, répondez :
- obtain address automatically

Puis
Code:
knoppix-terminalserver

Une nouvelle boite de dialogue s'ouvre, répondez :
- ok
- setup configure and restart
- Laissez le &quot;range&quot; d'adresse proposées
- Il vous propose ensuite une liste de drivers de cartes réseau. Choisissez celles qui conviennent à votre réseau (ou toutes, ce que j'ai fait par prudence...)
- décochez &quot;secure: Disable root access on client&quot; - ça peut vous servir, et il semblerait que ça pose des problèmes si c'est laissé coché...
- Laissez vide à la question suivante à moins que vous ne connaissiez exactement les paramètres vidéo de vos clients...
- The Knoppix-terminal server will now be started = YES

Cela va démarrer un certain nombre de services réseaux, dont tftp...
Et créer les fichier dont nous avons besoin pour notre PXE...
Récupérez les fichiers suivants qui se trouvent dans le répertoire /tftpboot/ de votre Knoppix :
miniroot.gz et vmlinuz

Vous copierez ces fichiers dans les répertoires que vous allez créer /var/lib/tftpboot/images/knoppix/511 et 620

Donc vous devriez avoir ceci dans chaque répertoire

miniroot.gz, vmlinuz

Ajoutez les partages NFS au fichier /etc/exports (en lecture seule...)

 /mnt/sdb1/knoppix511 *(ro,no_subtree_check,no_root_squash)
 /mnt/sdb1/knoppix620 *(ro,no_subtree_check,no_root_squash)

Redémarrez le serveur NFS

 # /etc/init.d/nfs-kernel-server restart

Ajoutez les entrées dans votre menu &quot;default&quot; :

 label Knoppix511
  MENU LABEL Knoppix 5.1.1
  kernel images/knoppix/511/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix511 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/511/miniroot.gz quiet BOOT_IMAGE=knoppix
 
 label Knoppix620
  MENU LABEL Knoppix 6.2.0
  kernel images/knoppix/620/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix620 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/620/miniroot.gz quiet BOOT_IMAGE=knoppix

=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !

[[Utilisateur:Lol|Lol]] 3 août 2010 à 03:46 (UTC)

[[Category:Installation]]</text>
      <sha1>t19zi3gdgkudxf0ylk11bcre3nkhhi4</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1826</id>
      <parentid>1825</parentid>
      <timestamp>2010-08-03T05:51:40Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="14060">{{Modèle:Ébauche|PXE}}

== Installation par le réseau - Boot PXE ==

Cet article propose de vous expliquer l’installation et la configuration d'un serveur PXE sur votre Debian.

Le démarrage PXE (Pre-boot eXecution Environment) permet à une station de travail de démarrer depuis le réseau en récupérant une image de système d'exploitation qui se trouve sur votre serveur (Pour commencer: Debian Netinstall, PXEKnife, SysterescuCD, HDT, Knoppix et d'autres à venir)

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /var/lib/syslinux
:chain.c32
:mboot.c32
:menu.c32
:pxelinux.0
:reboot.c32
:gpxelinux.0
:memdisk
:vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/chain.c32 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste :

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;gpxelinux.0&quot;;
 next-server 192.168.0.1;

Vous avez le choix entre deux amorces : pxelinux.0 ou gpxelinux.0
J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.

Le premier fichier &quot;gpxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse ou la machine qui demande à booter va chercher le pxelinux.O; Rine ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;gpxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;isalo.org&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/old-stable ou stable, testing, unstable...

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les information sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 default menu.c32
 prompt 0
 noescape 1
 timeout 300
 
 label 1
  MENU LABEL Etch i386
  kernel images/debian/old-stable/i386/linux
  append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 2
  MENU LABEL Etch amd64
  kernel images/debian/old-stable/amd64/linux
  append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 3
  MENU LABEL Lenny i386
  kernel images/debian/stable/i386/linux
  append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
  MENU LABEL Lenny amd64
  kernel images/debian/stable/amd64/linux
  append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 5
  MENU LABEL Squeeze i386
  kernel images/debian/testing/i386/linux
  append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 7
  MENU LABEL Unstable i386
  kernel images/debian/unstable/i386/linux
  append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 8
  MENU LABEL Unstable amd64
  kernel images/debian/unstable/amd64/linux
  append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --

Le menu ci-dessus nous donnera le résultat suivant :

[[Fichier:Capture d'écran - 03082010 - 07-29-44.png]]

C'est déjà pas mal, mais nous pouvons l'améliorer...

=== Amélioration du menu ===

Avant de poursuivre, et pour ne pas être noyés sous les entrées, nous allons améliorer un peu le menu...

Commençons pas renommer le menu /var/lib/tftpboot/pxelinux.cf/default en /var/lib/tftpboot/debian.conf

Editons le fichier /var/lib/tftpboot/pxelinux.cf/default pour y mettre ceci (Explication dessous)

 default vesamenu.c32
 prompt 0
 kbdmap french.kbd
 noescape 1
 timeout 300
 
 label bootlocal
  menu default
  menu label Local boot
  localboot 0
 
 # Vers le sous-menu Debian netboot
 label DebianNetboot
  menu label Debian Netboot ---&gt;
  kernel menu.c32
  append debian.conf
 
 label reboot
   menu label Reboot
   kernel reboot.c32

Ce menu nous donne les avantages suivants :
Clavier en Français en cas d'édition du menu;
Meilleur rendu;
Possibilité de booter sur le premier disque dur (par défaut);
Ouvrir un sous-menu (ici vers debian.conf);
Rebooter la machine.

Nous ajouterons l'entrée suivante au sous-menu /var/lib/tftpboot/debian.conf qui nous permettra de revenir au menu principal :

 # Retour au menu principal
 label rootmenu
  MENU LABEL &lt;---- Menu principal
  kernel vesamenu.c32
  append /pxelinux.cfg/default

Vous avez la base, tout ceci est paramétrable à l'infini...

[[Fichier:Capture d'écran - 03082010 - 08-33-09.png]]

[[Fichier:Capture d'écran - 03082010 - 08-35-29.png]]

=== Le menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrés dans défault

 KBDMAP french.kbd

=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

/var/lib/tftpboot/images/systemrescue vdir
total 214072
-r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
-r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
-r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
-r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

=== pxeknife ===

Petit utilitaire très complet, à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Décompréssez l'archive dans /var/lib/tftpboot/images/pxeknife

Editez /var/lib/tftpboot/images/pxeknife/pxeknife.conf pour qu'il reflète votre configuration (changement des chemins si nécessaire)

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append images/pxeknife/pxeknife.conf

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

 label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

=== Une option &quot;reboot&quot; et démarrage sur le disque dur ===

Pour démarrer sur le premier disque dur, ajoutez en début de menu :

 label bootlocal
  MENU DEFAULT
  MENU LABEL Local Boot
  localboot 0

Pour avoir la possibilité de redémarrer, ajoutez en fin de menu :

 label reboot
  menu label Reboot
  kernel reboot.c32


=== Knoppix 511 et 620 ===

Pour utiliser les images ISO de Knoppix, nous allons avoir besoin d'un serveur NFS :

 # apt-get install nfs-kernel-server

Pour autoriser notre réseau à utiliser le serveur NFS, ajoutons la ligne suivante au fichier /etc/hosts.allow

 mountd: 192.168.0.

Créez les répertoires qui vont accueillir les CD

 # mkdir /mnt/sdb1/knoppix511
 # mkdir /mnt/sdb1/knoppix620

Montez les CD et copiez leur contenu dans les répertoires que vous venez de créer

Récuperer les fichiers &quot;amorce&quot;

# Démarrez sur votre CD/ISO knoppix.
# Ouvrez une console, et tapez

 netcardconfig

Une boite de dialogue s'ouvre, répondez :
- obtain address automatically

Puis
Code:
knoppix-terminalserver

Une nouvelle boite de dialogue s'ouvre, répondez :
- ok
- setup configure and restart
- Laissez le &quot;range&quot; d'adresse proposées
- Il vous propose ensuite une liste de drivers de cartes réseau. Choisissez celles qui conviennent à votre réseau (ou toutes, ce que j'ai fait par prudence...)
- décochez &quot;secure: Disable root access on client&quot; - ça peut vous servir, et il semblerait que ça pose des problèmes si c'est laissé coché...
- Laissez vide à la question suivante à moins que vous ne connaissiez exactement les paramètres vidéo de vos clients...
- The Knoppix-terminal server will now be started = YES

Cela va démarrer un certain nombre de services réseaux, dont tftp...
Et créer les fichier dont nous avons besoin pour notre PXE...
Récupérez les fichiers suivants qui se trouvent dans le répertoire /tftpboot/ de votre Knoppix :
miniroot.gz et vmlinuz

Vous copierez ces fichiers dans les répertoires que vous allez créer /var/lib/tftpboot/images/knoppix/511 et 620

Donc vous devriez avoir ceci dans chaque répertoire

miniroot.gz, vmlinuz

Ajoutez les partages NFS au fichier /etc/exports (en lecture seule...)

 /mnt/sdb1/knoppix511 *(ro,no_subtree_check,no_root_squash)
 /mnt/sdb1/knoppix620 *(ro,no_subtree_check,no_root_squash)

Redémarrez le serveur NFS

 # /etc/init.d/nfs-kernel-server restart

Ajoutez les entrées dans votre menu &quot;default&quot; :

 label Knoppix511
  MENU LABEL Knoppix 5.1.1
  kernel images/knoppix/511/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix511 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/511/miniroot.gz quiet BOOT_IMAGE=knoppix
 
 label Knoppix620
  MENU LABEL Knoppix 6.2.0
  kernel images/knoppix/620/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix620 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/620/miniroot.gz quiet BOOT_IMAGE=knoppix

=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !

[[Utilisateur:Lol|Lol]] 3 août 2010 à 03:46 (UTC)

[[Category:Installation]]</text>
      <sha1>6ry2n8x2n7maaesqgx84y4ouui227fm</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1828</id>
      <parentid>1826</parentid>
      <timestamp>2010-08-03T06:02:25Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* RescueSystemCd */</comment>
      <text xml:space="preserve" bytes="14116">{{Modèle:Ébauche|PXE}}

== Installation par le réseau - Boot PXE ==

Cet article propose de vous expliquer l’installation et la configuration d'un serveur PXE sur votre Debian.

Le démarrage PXE (Pre-boot eXecution Environment) permet à une station de travail de démarrer depuis le réseau en récupérant une image de système d'exploitation qui se trouve sur votre serveur (Pour commencer: Debian Netinstall, PXEKnife, SysterescuCD, HDT, Knoppix et d'autres à venir)

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /var/lib/syslinux
:chain.c32
:mboot.c32
:menu.c32
:pxelinux.0
:reboot.c32
:gpxelinux.0
:memdisk
:vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/chain.c32 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste :

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;gpxelinux.0&quot;;
 next-server 192.168.0.1;

Vous avez le choix entre deux amorces : pxelinux.0 ou gpxelinux.0
J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.

Le premier fichier &quot;gpxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse ou la machine qui demande à booter va chercher le pxelinux.O; Rine ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;gpxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;isalo.org&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/old-stable ou stable, testing, unstable...

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les information sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 default menu.c32
 prompt 0
 noescape 1
 timeout 300
 
 label 1
  MENU LABEL Etch i386
  kernel images/debian/old-stable/i386/linux
  append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 2
  MENU LABEL Etch amd64
  kernel images/debian/old-stable/amd64/linux
  append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 3
  MENU LABEL Lenny i386
  kernel images/debian/stable/i386/linux
  append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
  MENU LABEL Lenny amd64
  kernel images/debian/stable/amd64/linux
  append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 5
  MENU LABEL Squeeze i386
  kernel images/debian/testing/i386/linux
  append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 7
  MENU LABEL Unstable i386
  kernel images/debian/unstable/i386/linux
  append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 8
  MENU LABEL Unstable amd64
  kernel images/debian/unstable/amd64/linux
  append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --

Le menu ci-dessus nous donnera le résultat suivant :

[[Fichier:Capture d'écran - 03082010 - 07-29-44.png]]

C'est déjà pas mal, mais nous pouvons l'améliorer...

=== Amélioration du menu ===

Avant de poursuivre, et pour ne pas être noyés sous les entrées, nous allons améliorer un peu le menu...

Commençons pas renommer le menu /var/lib/tftpboot/pxelinux.cf/default en /var/lib/tftpboot/debian.conf

Editons le fichier /var/lib/tftpboot/pxelinux.cf/default pour y mettre ceci (Explication dessous)

 default vesamenu.c32
 prompt 0
 kbdmap french.kbd
 noescape 1
 timeout 300
 
 label bootlocal
  menu default
  menu label Local boot
  localboot 0
 
 # Vers le sous-menu Debian netboot
 label DebianNetboot
  menu label Debian Netboot ---&gt;
  kernel menu.c32
  append debian.conf
 
 label reboot
   menu label Reboot
   kernel reboot.c32

Ce menu nous donne les avantages suivants :
Clavier en Français en cas d'édition du menu;
Meilleur rendu;
Possibilité de booter sur le premier disque dur (par défaut);
Ouvrir un sous-menu (ici vers debian.conf);
Rebooter la machine.

Nous ajouterons l'entrée suivante au sous-menu /var/lib/tftpboot/debian.conf qui nous permettra de revenir au menu principal :

 # Retour au menu principal
 label rootmenu
  MENU LABEL &lt;---- Menu principal
  kernel vesamenu.c32
  append /pxelinux.cfg/default

Vous avez la base, tout ceci est paramétrable à l'infini...

[[Fichier:Capture d'écran - 03082010 - 08-33-09.png]]

[[Fichier:Capture d'écran - 03082010 - 08-35-29.png]]

=== Le menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrés dans défault

 KBDMAP french.kbd

=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

/var/lib/tftpboot/images/systemrescue vdir
total 214072
-r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
-r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
-r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
-r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

[[Fichier:Capture d'écran - 03082010 - 09-00-40.png]]

=== pxeknife ===

Petit utilitaire très complet, à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Décompréssez l'archive dans /var/lib/tftpboot/images/pxeknife

Editez /var/lib/tftpboot/images/pxeknife/pxeknife.conf pour qu'il reflète votre configuration (changement des chemins si nécessaire)

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append images/pxeknife/pxeknife.conf

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

 label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

=== Une option &quot;reboot&quot; et démarrage sur le disque dur ===

Pour démarrer sur le premier disque dur, ajoutez en début de menu :

 label bootlocal
  MENU DEFAULT
  MENU LABEL Local Boot
  localboot 0

Pour avoir la possibilité de redémarrer, ajoutez en fin de menu :

 label reboot
  menu label Reboot
  kernel reboot.c32


=== Knoppix 511 et 620 ===

Pour utiliser les images ISO de Knoppix, nous allons avoir besoin d'un serveur NFS :

 # apt-get install nfs-kernel-server

Pour autoriser notre réseau à utiliser le serveur NFS, ajoutons la ligne suivante au fichier /etc/hosts.allow

 mountd: 192.168.0.

Créez les répertoires qui vont accueillir les CD

 # mkdir /mnt/sdb1/knoppix511
 # mkdir /mnt/sdb1/knoppix620

Montez les CD et copiez leur contenu dans les répertoires que vous venez de créer

Récuperer les fichiers &quot;amorce&quot;

# Démarrez sur votre CD/ISO knoppix.
# Ouvrez une console, et tapez

 netcardconfig

Une boite de dialogue s'ouvre, répondez :
- obtain address automatically

Puis
Code:
knoppix-terminalserver

Une nouvelle boite de dialogue s'ouvre, répondez :
- ok
- setup configure and restart
- Laissez le &quot;range&quot; d'adresse proposées
- Il vous propose ensuite une liste de drivers de cartes réseau. Choisissez celles qui conviennent à votre réseau (ou toutes, ce que j'ai fait par prudence...)
- décochez &quot;secure: Disable root access on client&quot; - ça peut vous servir, et il semblerait que ça pose des problèmes si c'est laissé coché...
- Laissez vide à la question suivante à moins que vous ne connaissiez exactement les paramètres vidéo de vos clients...
- The Knoppix-terminal server will now be started = YES

Cela va démarrer un certain nombre de services réseaux, dont tftp...
Et créer les fichier dont nous avons besoin pour notre PXE...
Récupérez les fichiers suivants qui se trouvent dans le répertoire /tftpboot/ de votre Knoppix :
miniroot.gz et vmlinuz

Vous copierez ces fichiers dans les répertoires que vous allez créer /var/lib/tftpboot/images/knoppix/511 et 620

Donc vous devriez avoir ceci dans chaque répertoire

miniroot.gz, vmlinuz

Ajoutez les partages NFS au fichier /etc/exports (en lecture seule...)

 /mnt/sdb1/knoppix511 *(ro,no_subtree_check,no_root_squash)
 /mnt/sdb1/knoppix620 *(ro,no_subtree_check,no_root_squash)

Redémarrez le serveur NFS

 # /etc/init.d/nfs-kernel-server restart

Ajoutez les entrées dans votre menu &quot;default&quot; :

 label Knoppix511
  MENU LABEL Knoppix 5.1.1
  kernel images/knoppix/511/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix511 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/511/miniroot.gz quiet BOOT_IMAGE=knoppix
 
 label Knoppix620
  MENU LABEL Knoppix 6.2.0
  kernel images/knoppix/620/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix620 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/620/miniroot.gz quiet BOOT_IMAGE=knoppix

=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !

[[Utilisateur:Lol|Lol]] 3 août 2010 à 03:46 (UTC)

[[Category:Installation]]</text>
      <sha1>jqigl2zmn1vih62irkf9uw20hgjvay2</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1831</id>
      <parentid>1828</parentid>
      <timestamp>2010-08-03T06:19:15Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* pxeknife */</comment>
      <text xml:space="preserve" bytes="14271">{{Modèle:Ébauche|PXE}}

== Installation par le réseau - Boot PXE ==

Cet article propose de vous expliquer l’installation et la configuration d'un serveur PXE sur votre Debian.

Le démarrage PXE (Pre-boot eXecution Environment) permet à une station de travail de démarrer depuis le réseau en récupérant une image de système d'exploitation qui se trouve sur votre serveur (Pour commencer: Debian Netinstall, PXEKnife, SysterescuCD, HDT, Knoppix et d'autres à venir)

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /var/lib/syslinux
:chain.c32
:mboot.c32
:menu.c32
:pxelinux.0
:reboot.c32
:gpxelinux.0
:memdisk
:vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/chain.c32 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste :

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;gpxelinux.0&quot;;
 next-server 192.168.0.1;

Vous avez le choix entre deux amorces : pxelinux.0 ou gpxelinux.0
J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.

Le premier fichier &quot;gpxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse ou la machine qui demande à booter va chercher le pxelinux.O; Rine ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;gpxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;isalo.org&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/old-stable ou stable, testing, unstable...

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les information sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 default menu.c32
 prompt 0
 noescape 1
 timeout 300
 
 label 1
  MENU LABEL Etch i386
  kernel images/debian/old-stable/i386/linux
  append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 2
  MENU LABEL Etch amd64
  kernel images/debian/old-stable/amd64/linux
  append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 3
  MENU LABEL Lenny i386
  kernel images/debian/stable/i386/linux
  append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
  MENU LABEL Lenny amd64
  kernel images/debian/stable/amd64/linux
  append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 5
  MENU LABEL Squeeze i386
  kernel images/debian/testing/i386/linux
  append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 7
  MENU LABEL Unstable i386
  kernel images/debian/unstable/i386/linux
  append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 8
  MENU LABEL Unstable amd64
  kernel images/debian/unstable/amd64/linux
  append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --

Le menu ci-dessus nous donnera le résultat suivant :

[[Fichier:Capture d'écran - 03082010 - 07-29-44.png]]

C'est déjà pas mal, mais nous pouvons l'améliorer...

=== Amélioration du menu ===

Avant de poursuivre, et pour ne pas être noyés sous les entrées, nous allons améliorer un peu le menu...

Commençons pas renommer le menu /var/lib/tftpboot/pxelinux.cf/default en /var/lib/tftpboot/debian.conf

Editons le fichier /var/lib/tftpboot/pxelinux.cf/default pour y mettre ceci (Explication dessous)

 default vesamenu.c32
 prompt 0
 kbdmap french.kbd
 noescape 1
 timeout 300
 
 label bootlocal
  menu default
  menu label Local boot
  localboot 0
 
 # Vers le sous-menu Debian netboot
 label DebianNetboot
  menu label Debian Netboot ---&gt;
  kernel menu.c32
  append debian.conf
 
 label reboot
   menu label Reboot
   kernel reboot.c32

Ce menu nous donne les avantages suivants :
Clavier en Français en cas d'édition du menu;
Meilleur rendu;
Possibilité de booter sur le premier disque dur (par défaut);
Ouvrir un sous-menu (ici vers debian.conf);
Rebooter la machine.

Nous ajouterons l'entrée suivante au sous-menu /var/lib/tftpboot/debian.conf qui nous permettra de revenir au menu principal :

 # Retour au menu principal
 label rootmenu
  MENU LABEL &lt;---- Menu principal
  kernel vesamenu.c32
  append /pxelinux.cfg/default

Vous avez la base, tout ceci est paramétrable à l'infini...

[[Fichier:Capture d'écran - 03082010 - 08-33-09.png]]

[[Fichier:Capture d'écran - 03082010 - 08-35-29.png]]

=== Le menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrés dans défault

 KBDMAP french.kbd

=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

/var/lib/tftpboot/images/systemrescue vdir
total 214072
-r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
-r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
-r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
-r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

[[Fichier:Capture d'écran - 03082010 - 09-00-40.png]]

=== pxeknife ===

Petit utilitaire '''très complet''', à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Afin de na pas avoir à refaire les 19 fichiers de &quot;conf&quot; pour refléter votre installation, décompressez l'archive dans /var/lib/tftpboot/pxeknife...

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append pxeknife/pxeknife.conf

[[Fichier:Capture d'écran - 03082010 - 09-16-04.png]]

Super Grub Disk !!!

[[Fichier:Capture d'écran - 03082010 - 09-17-38.png]]

Je vous laisse découvrir l'intégralité des menus pas vous-même ^^

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

 label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

=== Une option &quot;reboot&quot; et démarrage sur le disque dur ===

Pour démarrer sur le premier disque dur, ajoutez en début de menu :

 label bootlocal
  MENU DEFAULT
  MENU LABEL Local Boot
  localboot 0

Pour avoir la possibilité de redémarrer, ajoutez en fin de menu :

 label reboot
  menu label Reboot
  kernel reboot.c32


=== Knoppix 511 et 620 ===

Pour utiliser les images ISO de Knoppix, nous allons avoir besoin d'un serveur NFS :

 # apt-get install nfs-kernel-server

Pour autoriser notre réseau à utiliser le serveur NFS, ajoutons la ligne suivante au fichier /etc/hosts.allow

 mountd: 192.168.0.

Créez les répertoires qui vont accueillir les CD

 # mkdir /mnt/sdb1/knoppix511
 # mkdir /mnt/sdb1/knoppix620

Montez les CD et copiez leur contenu dans les répertoires que vous venez de créer

Récuperer les fichiers &quot;amorce&quot;

# Démarrez sur votre CD/ISO knoppix.
# Ouvrez une console, et tapez

 netcardconfig

Une boite de dialogue s'ouvre, répondez :
- obtain address automatically

Puis
Code:
knoppix-terminalserver

Une nouvelle boite de dialogue s'ouvre, répondez :
- ok
- setup configure and restart
- Laissez le &quot;range&quot; d'adresse proposées
- Il vous propose ensuite une liste de drivers de cartes réseau. Choisissez celles qui conviennent à votre réseau (ou toutes, ce que j'ai fait par prudence...)
- décochez &quot;secure: Disable root access on client&quot; - ça peut vous servir, et il semblerait que ça pose des problèmes si c'est laissé coché...
- Laissez vide à la question suivante à moins que vous ne connaissiez exactement les paramètres vidéo de vos clients...
- The Knoppix-terminal server will now be started = YES

Cela va démarrer un certain nombre de services réseaux, dont tftp...
Et créer les fichier dont nous avons besoin pour notre PXE...
Récupérez les fichiers suivants qui se trouvent dans le répertoire /tftpboot/ de votre Knoppix :
miniroot.gz et vmlinuz

Vous copierez ces fichiers dans les répertoires que vous allez créer /var/lib/tftpboot/images/knoppix/511 et 620

Donc vous devriez avoir ceci dans chaque répertoire

miniroot.gz, vmlinuz

Ajoutez les partages NFS au fichier /etc/exports (en lecture seule...)

 /mnt/sdb1/knoppix511 *(ro,no_subtree_check,no_root_squash)
 /mnt/sdb1/knoppix620 *(ro,no_subtree_check,no_root_squash)

Redémarrez le serveur NFS

 # /etc/init.d/nfs-kernel-server restart

Ajoutez les entrées dans votre menu &quot;default&quot; :

 label Knoppix511
  MENU LABEL Knoppix 5.1.1
  kernel images/knoppix/511/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix511 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/511/miniroot.gz quiet BOOT_IMAGE=knoppix
 
 label Knoppix620
  MENU LABEL Knoppix 6.2.0
  kernel images/knoppix/620/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix620 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/620/miniroot.gz quiet BOOT_IMAGE=knoppix

=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !

[[Utilisateur:Lol|Lol]] 3 août 2010 à 03:46 (UTC)

[[Category:Installation]]</text>
      <sha1>sus2qlnqjdro6zkeu6yxsew7rvavaxu</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1832</id>
      <parentid>1831</parentid>
      <timestamp>2010-08-03T06:21:20Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Installation par le réseau - Boot PXE */</comment>
      <text xml:space="preserve" bytes="14340">{{Modèle:Ébauche|PXE}}

== Installation par le réseau - Boot PXE ==

Cet article propose de vous expliquer l’installation et la configuration d'un serveur PXE sur votre Debian.

Le démarrage PXE (Pre-boot eXecution Environment) permet à une station de travail de démarrer depuis le réseau en récupérant une image de système d'exploitation qui se trouve sur votre serveur (Pour commencer: Debian Netinstall, PXEKnife, SysterescuCD, HDT, Knoppix et d'autres à venir)

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /var/lib/syslinux
:chain.c32
:mboot.c32
:menu.c32
:pxelinux.0
:reboot.c32
:gpxelinux.0
:memdisk
:vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/chain.c32 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste :

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;gpxelinux.0&quot;;
 next-server 192.168.0.1;

Vous avez le choix entre deux amorces : pxelinux.0 ou gpxelinux.0
J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.

Le premier fichier &quot;gpxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse ou la machine qui demande à booter va chercher le pxelinux.O; Rine ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;gpxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;isalo.org&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/old-stable ou stable, testing, unstable...

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les information sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 default menu.c32
 prompt 0
 noescape 1
 timeout 300
 
 label 1
  MENU LABEL Etch i386
  kernel images/debian/old-stable/i386/linux
  append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 2
  MENU LABEL Etch amd64
  kernel images/debian/old-stable/amd64/linux
  append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 3
  MENU LABEL Lenny i386
  kernel images/debian/stable/i386/linux
  append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
  MENU LABEL Lenny amd64
  kernel images/debian/stable/amd64/linux
  append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 5
  MENU LABEL Squeeze i386
  kernel images/debian/testing/i386/linux
  append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 7
  MENU LABEL Unstable i386
  kernel images/debian/unstable/i386/linux
  append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 8
  MENU LABEL Unstable amd64
  kernel images/debian/unstable/amd64/linux
  append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --

Le menu ci-dessus nous donnera le résultat suivant :

[[Fichier:Capture d'écran - 03082010 - 07-29-44.png]]

C'est déjà pas mal, mais nous pouvons l'améliorer...

=== Amélioration du menu ===

Avant de poursuivre, et pour ne pas être noyés sous les entrées, nous allons améliorer un peu le menu...

Commençons pas renommer le menu /var/lib/tftpboot/pxelinux.cf/default en /var/lib/tftpboot/debian.conf

Editons le fichier /var/lib/tftpboot/pxelinux.cf/default pour y mettre ceci (Explication dessous)

 default vesamenu.c32
 prompt 0
 kbdmap french.kbd
 noescape 1
 timeout 300
 
 label bootlocal
  menu default
  menu label Local boot
  localboot 0
 
 # Vers le sous-menu Debian netboot
 label DebianNetboot
  menu label Debian Netboot ---&gt;
  kernel menu.c32
  append debian.conf
 
 label reboot
   menu label Reboot
   kernel reboot.c32

Ce menu nous donne les avantages suivants :
Clavier en Français en cas d'édition du menu;
Meilleur rendu;
Possibilité de booter sur le premier disque dur (par défaut);
Ouvrir un sous-menu (ici vers debian.conf);
Rebooter la machine.

Nous ajouterons l'entrée suivante au sous-menu /var/lib/tftpboot/debian.conf qui nous permettra de revenir au menu principal :

 # Retour au menu principal
 label rootmenu
  MENU LABEL &lt;---- Menu principal
  kernel vesamenu.c32
  append /pxelinux.cfg/default

Vous avez la base, tout ceci est paramétrable à l'infini...

[[Fichier:Capture d'écran - 03082010 - 08-33-09.png]]

[[Fichier:Capture d'écran - 03082010 - 08-35-29.png]]

=== Le menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrés dans défault

 KBDMAP french.kbd

=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

/var/lib/tftpboot/images/systemrescue vdir
total 214072
-r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
-r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
-r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
-r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

[[Fichier:Capture d'écran - 03082010 - 09-00-40.png]]

=== pxeknife ===

Petit utilitaire '''très complet''', à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Afin de na pas avoir à refaire les 19 fichiers de &quot;conf&quot; pour refléter votre installation, décompressez l'archive dans /var/lib/tftpboot/pxeknife...

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append pxeknife/pxeknife.conf

[[Fichier:Capture d'écran - 03082010 - 09-16-04.png]]

Super Grub Disk !!!

[[Fichier:Capture d'écran - 03082010 - 09-17-38.png]]

Je vous laisse découvrir l'intégralité des menus pas vous-même ^^

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

 label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

=== Une option &quot;reboot&quot; et démarrage sur le disque dur ===

Pour démarrer sur le premier disque dur, ajoutez en début de menu :

 label bootlocal
  MENU DEFAULT
  MENU LABEL Local Boot
  localboot 0

Pour avoir la possibilité de redémarrer, ajoutez en fin de menu :

 label reboot
  menu label Reboot
  kernel reboot.c32


=== Knoppix 511 et 620 ===

Pour utiliser les images ISO de Knoppix, nous allons avoir besoin d'un serveur NFS :

 # apt-get install nfs-kernel-server

Pour autoriser notre réseau à utiliser le serveur NFS, ajoutons la ligne suivante au fichier /etc/hosts.allow

 mountd: 192.168.0.

Créez les répertoires qui vont accueillir les CD

 # mkdir /mnt/sdb1/knoppix511
 # mkdir /mnt/sdb1/knoppix620

Montez les CD et copiez leur contenu dans les répertoires que vous venez de créer

Récuperer les fichiers &quot;amorce&quot;

# Démarrez sur votre CD/ISO knoppix.
# Ouvrez une console, et tapez

 netcardconfig

Une boite de dialogue s'ouvre, répondez :
- obtain address automatically

Puis
Code:
knoppix-terminalserver

Une nouvelle boite de dialogue s'ouvre, répondez :
- ok
- setup configure and restart
- Laissez le &quot;range&quot; d'adresse proposées
- Il vous propose ensuite une liste de drivers de cartes réseau. Choisissez celles qui conviennent à votre réseau (ou toutes, ce que j'ai fait par prudence...)
- décochez &quot;secure: Disable root access on client&quot; - ça peut vous servir, et il semblerait que ça pose des problèmes si c'est laissé coché...
- Laissez vide à la question suivante à moins que vous ne connaissiez exactement les paramètres vidéo de vos clients...
- The Knoppix-terminal server will now be started = YES

Cela va démarrer un certain nombre de services réseaux, dont tftp...
Et créer les fichier dont nous avons besoin pour notre PXE...
Récupérez les fichiers suivants qui se trouvent dans le répertoire /tftpboot/ de votre Knoppix :
miniroot.gz et vmlinuz

Vous copierez ces fichiers dans les répertoires que vous allez créer /var/lib/tftpboot/images/knoppix/511 et 620

Donc vous devriez avoir ceci dans chaque répertoire

miniroot.gz, vmlinuz

Ajoutez les partages NFS au fichier /etc/exports (en lecture seule...)

 /mnt/sdb1/knoppix511 *(ro,no_subtree_check,no_root_squash)
 /mnt/sdb1/knoppix620 *(ro,no_subtree_check,no_root_squash)

Redémarrez le serveur NFS

 # /etc/init.d/nfs-kernel-server restart

Ajoutez les entrées dans votre menu &quot;default&quot; :

 label Knoppix511
  MENU LABEL Knoppix 5.1.1
  kernel images/knoppix/511/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix511 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/511/miniroot.gz quiet BOOT_IMAGE=knoppix
 
 label Knoppix620
  MENU LABEL Knoppix 6.2.0
  kernel images/knoppix/620/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix620 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/620/miniroot.gz quiet BOOT_IMAGE=knoppix

=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !

[[Utilisateur:Lol|Lol]] 3 août 2010 à 03:46 (UTC)

Mots cléf : Debian PXE Netboot SystemRescueCd pxeknife HDT Knoppix

[[Category:Installation]]</text>
      <sha1>g434n7f96a3g5mbjyuenh82x86o5umy</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1833</id>
      <parentid>1832</parentid>
      <timestamp>2010-08-03T06:24:20Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <text xml:space="preserve" bytes="14336">{{Modèle:Ébauche|PXE}}

== Installation par le réseau - Boot PXE ==

Cet article propose de vous expliquer l’installation et la configuration d'un serveur PXE sur votre Debian.

Le démarrage PXE (Pre-boot eXecution Environment) permet à une station de travail de démarrer depuis le réseau en récupérant une image de système d'exploitation qui se trouve sur votre serveur (Pour commencer: Debian Netinstall, PXEKnife, SysterescuCD, HDT, Knoppix et d'autres à venir)

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /var/lib/syslinux
:chain.c32
:mboot.c32
:menu.c32
:pxelinux.0
:reboot.c32
:gpxelinux.0
:memdisk
:vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/chain.c32 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste :

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;gpxelinux.0&quot;;
 next-server 192.168.0.1;

Vous avez le choix entre deux amorces : pxelinux.0 ou gpxelinux.0
J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.

Le premier fichier &quot;gpxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse ou la machine qui demande à booter va chercher le pxelinux.O; Rine ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;gpxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;isalo.org&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/old-stable ou stable, testing, unstable...

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les information sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 default menu.c32
 prompt 0
 noescape 1
 timeout 300
 
 label 1
  MENU LABEL Etch i386
  kernel images/debian/old-stable/i386/linux
  append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 2
  MENU LABEL Etch amd64
  kernel images/debian/old-stable/amd64/linux
  append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 3
  MENU LABEL Lenny i386
  kernel images/debian/stable/i386/linux
  append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
  MENU LABEL Lenny amd64
  kernel images/debian/stable/amd64/linux
  append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 5
  MENU LABEL Squeeze i386
  kernel images/debian/testing/i386/linux
  append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 7
  MENU LABEL Unstable i386
  kernel images/debian/unstable/i386/linux
  append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 8
  MENU LABEL Unstable amd64
  kernel images/debian/unstable/amd64/linux
  append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --

Le menu ci-dessus nous donnera le résultat suivant :

[[Fichier:Capture d'écran - 03082010 - 07-29-44.png]]

C'est déjà pas mal, mais nous pouvons l'améliorer...

=== Amélioration du menu ===

Avant de poursuivre, et pour ne pas être noyés sous les entrées, nous allons améliorer un peu le menu...

Commençons pas renommer le menu /var/lib/tftpboot/pxelinux.cf/default en /var/lib/tftpboot/debian.conf

Editons le fichier /var/lib/tftpboot/pxelinux.cf/default pour y mettre ceci (Explication dessous)

 default vesamenu.c32
 prompt 0
 kbdmap french.kbd
 noescape 1
 timeout 300
 
 label bootlocal
  menu default
  menu label Local boot
  localboot 0
 
 # Vers le sous-menu Debian netboot
 label DebianNetboot
  menu label Debian Netboot ---&gt;
  kernel menu.c32
  append debian.conf
 
 label reboot
   menu label Reboot
   kernel reboot.c32

Ce menu nous donne les avantages suivants :
Clavier en Français en cas d'édition du menu;
Meilleur rendu;
Possibilité de booter sur le premier disque dur (par défaut);
Ouvrir un sous-menu (ici vers debian.conf);
Rebooter la machine.

Nous ajouterons l'entrée suivante au sous-menu /var/lib/tftpboot/debian.conf qui nous permettra de revenir au menu principal :

 # Retour au menu principal
 label rootmenu
  MENU LABEL &lt;---- Menu principal
  kernel vesamenu.c32
  append /pxelinux.cfg/default

Vous avez la base, tout ceci est paramétrable à l'infini...

[[Fichier:Capture d'écran - 03082010 - 08-33-09.png]]

[[Fichier:Capture d'écran - 03082010 - 08-35-29.png]]

=== Le menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrés dans défault

 KBDMAP french.kbd

=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

/var/lib/tftpboot/images/systemrescue vdir
total 214072
-r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
-r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
-r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
-r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

[[Fichier:Capture d'écran - 03082010 - 09-00-40.png]]

=== pxeknife ===

Petit utilitaire '''très complet''', à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Afin de na pas avoir à refaire les 19 fichiers de &quot;conf&quot; pour refléter votre installation, décompressez l'archive dans /var/lib/tftpboot/pxeknife...

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append pxeknife/pxeknife.conf

[[Fichier:Capture d'écran - 03082010 - 09-16-04.png]]

Super Grub Disk !!!

[[Fichier:Capture d'écran - 03082010 - 09-17-38.png]]

Je vous laisse découvrir l'intégralité des menus pas vous-même ^^

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

 label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

=== Une option &quot;reboot&quot; et démarrage sur le disque dur ===

Pour démarrer sur le premier disque dur, ajoutez en début de menu :

 label bootlocal
  MENU DEFAULT
  MENU LABEL Local Boot
  localboot 0

Pour avoir la possibilité de redémarrer, ajoutez en fin de menu :

 label reboot
  menu label Reboot
  kernel reboot.c32


=== Knoppix 511 et 620 ===

Pour utiliser les images ISO de Knoppix, nous allons avoir besoin d'un serveur NFS :

 # apt-get install nfs-kernel-server

Pour autoriser notre réseau à utiliser le serveur NFS, ajoutons la ligne suivante au fichier /etc/hosts.allow

 mountd: 192.168.0.

Créez les répertoires qui vont accueillir les CD

 # mkdir /mnt/sdb1/knoppix511
 # mkdir /mnt/sdb1/knoppix620

Montez les CD et copiez leur contenu dans les répertoires que vous venez de créer

Récuperer les fichiers &quot;amorce&quot;

# Démarrez sur votre CD/ISO knoppix.
# Ouvrez une console, et tapez

 netcardconfig

Une boite de dialogue s'ouvre, répondez :
- obtain address automatically

Puis
Code:
knoppix-terminalserver

Une nouvelle boite de dialogue s'ouvre, répondez :
- ok
- setup configure and restart
- Laissez le &quot;range&quot; d'adresse proposées
- Il vous propose ensuite une liste de drivers de cartes réseau. Choisissez celles qui conviennent à votre réseau (ou toutes, ce que j'ai fait par prudence...)
- décochez &quot;secure: Disable root access on client&quot; - ça peut vous servir, et il semblerait que ça pose des problèmes si c'est laissé coché...
- Laissez vide à la question suivante à moins que vous ne connaissiez exactement les paramètres vidéo de vos clients...
- The Knoppix-terminal server will now be started = YES

Cela va démarrer un certain nombre de services réseaux, dont tftp...
Et créer les fichier dont nous avons besoin pour notre PXE...
Récupérez les fichiers suivants qui se trouvent dans le répertoire /tftpboot/ de votre Knoppix :
miniroot.gz et vmlinuz

Vous copierez ces fichiers dans les répertoires que vous allez créer /var/lib/tftpboot/images/knoppix/511 et 620

Donc vous devriez avoir ceci dans chaque répertoire

miniroot.gz, vmlinuz

Ajoutez les partages NFS au fichier /etc/exports (en lecture seule...)

 /mnt/sdb1/knoppix511 *(ro,no_subtree_check,no_root_squash)
 /mnt/sdb1/knoppix620 *(ro,no_subtree_check,no_root_squash)

Redémarrez le serveur NFS

 # /etc/init.d/nfs-kernel-server restart

Ajoutez les entrées dans votre menu &quot;default&quot; :

 label Knoppix511
  MENU LABEL Knoppix 5.1.1
  kernel images/knoppix/511/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix511 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/511/miniroot.gz quiet BOOT_IMAGE=knoppix
 
 label Knoppix620
  MENU LABEL Knoppix 6.2.0
  kernel images/knoppix/620/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix620 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/620/miniroot.gz quiet BOOT_IMAGE=knoppix

=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !

[[Utilisateur:Lol|Lol]] 3 août 2010 à 03:46 (UTC)

Mots cléf : Debian PXE Netboot SystemRescueCd pxeknife HDT Knoppix

[[Category:Serveurs]]</text>
      <sha1>jhmul7pcui3zqamigssiyu1qhovzoq3</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1836</id>
      <parentid>1833</parentid>
      <timestamp>2010-08-03T12:32:47Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* RescueSystemCd */</comment>
      <text xml:space="preserve" bytes="14343">{{Modèle:Ébauche|PXE}}

== Installation par le réseau - Boot PXE ==

Cet article propose de vous expliquer l’installation et la configuration d'un serveur PXE sur votre Debian.

Le démarrage PXE (Pre-boot eXecution Environment) permet à une station de travail de démarrer depuis le réseau en récupérant une image de système d'exploitation qui se trouve sur votre serveur (Pour commencer: Debian Netinstall, PXEKnife, SysterescuCD, HDT, Knoppix et d'autres à venir)

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /var/lib/syslinux
:chain.c32
:mboot.c32
:menu.c32
:pxelinux.0
:reboot.c32
:gpxelinux.0
:memdisk
:vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/chain.c32 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste :

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;gpxelinux.0&quot;;
 next-server 192.168.0.1;

Vous avez le choix entre deux amorces : pxelinux.0 ou gpxelinux.0
J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.

Le premier fichier &quot;gpxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse ou la machine qui demande à booter va chercher le pxelinux.O; Rine ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;gpxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;isalo.org&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/old-stable ou stable, testing, unstable...

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les information sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 default menu.c32
 prompt 0
 noescape 1
 timeout 300
 
 label 1
  MENU LABEL Etch i386
  kernel images/debian/old-stable/i386/linux
  append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 2
  MENU LABEL Etch amd64
  kernel images/debian/old-stable/amd64/linux
  append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 3
  MENU LABEL Lenny i386
  kernel images/debian/stable/i386/linux
  append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
  MENU LABEL Lenny amd64
  kernel images/debian/stable/amd64/linux
  append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 5
  MENU LABEL Squeeze i386
  kernel images/debian/testing/i386/linux
  append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 7
  MENU LABEL Unstable i386
  kernel images/debian/unstable/i386/linux
  append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 8
  MENU LABEL Unstable amd64
  kernel images/debian/unstable/amd64/linux
  append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --

Le menu ci-dessus nous donnera le résultat suivant :

[[Fichier:Capture d'écran - 03082010 - 07-29-44.png]]

C'est déjà pas mal, mais nous pouvons l'améliorer...

=== Amélioration du menu ===

Avant de poursuivre, et pour ne pas être noyés sous les entrées, nous allons améliorer un peu le menu...

Commençons pas renommer le menu /var/lib/tftpboot/pxelinux.cf/default en /var/lib/tftpboot/debian.conf

Editons le fichier /var/lib/tftpboot/pxelinux.cf/default pour y mettre ceci (Explication dessous)

 default vesamenu.c32
 prompt 0
 kbdmap french.kbd
 noescape 1
 timeout 300
 
 label bootlocal
  menu default
  menu label Local boot
  localboot 0
 
 # Vers le sous-menu Debian netboot
 label DebianNetboot
  menu label Debian Netboot ---&gt;
  kernel menu.c32
  append debian.conf
 
 label reboot
   menu label Reboot
   kernel reboot.c32

Ce menu nous donne les avantages suivants :
Clavier en Français en cas d'édition du menu;
Meilleur rendu;
Possibilité de booter sur le premier disque dur (par défaut);
Ouvrir un sous-menu (ici vers debian.conf);
Rebooter la machine.

Nous ajouterons l'entrée suivante au sous-menu /var/lib/tftpboot/debian.conf qui nous permettra de revenir au menu principal :

 # Retour au menu principal
 label rootmenu
  MENU LABEL &lt;---- Menu principal
  kernel vesamenu.c32
  append /pxelinux.cfg/default

Vous avez la base, tout ceci est paramétrable à l'infini...

[[Fichier:Capture d'écran - 03082010 - 08-33-09.png]]

[[Fichier:Capture d'écran - 03082010 - 08-35-29.png]]

=== Le menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrés dans défault

 KBDMAP french.kbd

=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

 /var/lib/tftpboot/images/systemrescue vdir
 total 214072
 -r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
 -r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
 -r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
 -r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

 label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

[[Fichier:Capture d'écran - 03082010 - 09-00-40.png]]

=== pxeknife ===

Petit utilitaire '''très complet''', à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Afin de na pas avoir à refaire les 19 fichiers de &quot;conf&quot; pour refléter votre installation, décompressez l'archive dans /var/lib/tftpboot/pxeknife...

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append pxeknife/pxeknife.conf

[[Fichier:Capture d'écran - 03082010 - 09-16-04.png]]

Super Grub Disk !!!

[[Fichier:Capture d'écran - 03082010 - 09-17-38.png]]

Je vous laisse découvrir l'intégralité des menus pas vous-même ^^

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

 label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

=== Une option &quot;reboot&quot; et démarrage sur le disque dur ===

Pour démarrer sur le premier disque dur, ajoutez en début de menu :

 label bootlocal
  MENU DEFAULT
  MENU LABEL Local Boot
  localboot 0

Pour avoir la possibilité de redémarrer, ajoutez en fin de menu :

 label reboot
  menu label Reboot
  kernel reboot.c32


=== Knoppix 511 et 620 ===

Pour utiliser les images ISO de Knoppix, nous allons avoir besoin d'un serveur NFS :

 # apt-get install nfs-kernel-server

Pour autoriser notre réseau à utiliser le serveur NFS, ajoutons la ligne suivante au fichier /etc/hosts.allow

 mountd: 192.168.0.

Créez les répertoires qui vont accueillir les CD

 # mkdir /mnt/sdb1/knoppix511
 # mkdir /mnt/sdb1/knoppix620

Montez les CD et copiez leur contenu dans les répertoires que vous venez de créer

Récuperer les fichiers &quot;amorce&quot;

# Démarrez sur votre CD/ISO knoppix.
# Ouvrez une console, et tapez

 netcardconfig

Une boite de dialogue s'ouvre, répondez :
- obtain address automatically

Puis
Code:
knoppix-terminalserver

Une nouvelle boite de dialogue s'ouvre, répondez :
- ok
- setup configure and restart
- Laissez le &quot;range&quot; d'adresse proposées
- Il vous propose ensuite une liste de drivers de cartes réseau. Choisissez celles qui conviennent à votre réseau (ou toutes, ce que j'ai fait par prudence...)
- décochez &quot;secure: Disable root access on client&quot; - ça peut vous servir, et il semblerait que ça pose des problèmes si c'est laissé coché...
- Laissez vide à la question suivante à moins que vous ne connaissiez exactement les paramètres vidéo de vos clients...
- The Knoppix-terminal server will now be started = YES

Cela va démarrer un certain nombre de services réseaux, dont tftp...
Et créer les fichier dont nous avons besoin pour notre PXE...
Récupérez les fichiers suivants qui se trouvent dans le répertoire /tftpboot/ de votre Knoppix :
miniroot.gz et vmlinuz

Vous copierez ces fichiers dans les répertoires que vous allez créer /var/lib/tftpboot/images/knoppix/511 et 620

Donc vous devriez avoir ceci dans chaque répertoire

miniroot.gz, vmlinuz

Ajoutez les partages NFS au fichier /etc/exports (en lecture seule...)

 /mnt/sdb1/knoppix511 *(ro,no_subtree_check,no_root_squash)
 /mnt/sdb1/knoppix620 *(ro,no_subtree_check,no_root_squash)

Redémarrez le serveur NFS

 # /etc/init.d/nfs-kernel-server restart

Ajoutez les entrées dans votre menu &quot;default&quot; :

 label Knoppix511
  MENU LABEL Knoppix 5.1.1
  kernel images/knoppix/511/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix511 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/511/miniroot.gz quiet BOOT_IMAGE=knoppix
 
 label Knoppix620
  MENU LABEL Knoppix 6.2.0
  kernel images/knoppix/620/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix620 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/620/miniroot.gz quiet BOOT_IMAGE=knoppix

=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !

[[Utilisateur:Lol|Lol]] 3 août 2010 à 03:46 (UTC)

Mots cléf : Debian PXE Netboot SystemRescueCd pxeknife HDT Knoppix

[[Category:Serveurs]]</text>
      <sha1>m5v2lhpyx8jixzqyagd3h3p0ecv9iab</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1838</id>
      <parentid>1836</parentid>
      <timestamp>2010-08-03T12:36:58Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* hdt */</comment>
      <text xml:space="preserve" bytes="14399">{{Modèle:Ébauche|PXE}}

== Installation par le réseau - Boot PXE ==

Cet article propose de vous expliquer l’installation et la configuration d'un serveur PXE sur votre Debian.

Le démarrage PXE (Pre-boot eXecution Environment) permet à une station de travail de démarrer depuis le réseau en récupérant une image de système d'exploitation qui se trouve sur votre serveur (Pour commencer: Debian Netinstall, PXEKnife, SysterescuCD, HDT, Knoppix et d'autres à venir)

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /var/lib/syslinux
:chain.c32
:mboot.c32
:menu.c32
:pxelinux.0
:reboot.c32
:gpxelinux.0
:memdisk
:vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/chain.c32 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste :

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;gpxelinux.0&quot;;
 next-server 192.168.0.1;

Vous avez le choix entre deux amorces : pxelinux.0 ou gpxelinux.0
J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.

Le premier fichier &quot;gpxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse ou la machine qui demande à booter va chercher le pxelinux.O; Rine ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;gpxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;isalo.org&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/old-stable ou stable, testing, unstable...

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les information sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 default menu.c32
 prompt 0
 noescape 1
 timeout 300
 
 label 1
  MENU LABEL Etch i386
  kernel images/debian/old-stable/i386/linux
  append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 2
  MENU LABEL Etch amd64
  kernel images/debian/old-stable/amd64/linux
  append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 3
  MENU LABEL Lenny i386
  kernel images/debian/stable/i386/linux
  append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
  MENU LABEL Lenny amd64
  kernel images/debian/stable/amd64/linux
  append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 5
  MENU LABEL Squeeze i386
  kernel images/debian/testing/i386/linux
  append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 7
  MENU LABEL Unstable i386
  kernel images/debian/unstable/i386/linux
  append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 8
  MENU LABEL Unstable amd64
  kernel images/debian/unstable/amd64/linux
  append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --

Le menu ci-dessus nous donnera le résultat suivant :

[[Fichier:Capture d'écran - 03082010 - 07-29-44.png]]

C'est déjà pas mal, mais nous pouvons l'améliorer...

=== Amélioration du menu ===

Avant de poursuivre, et pour ne pas être noyés sous les entrées, nous allons améliorer un peu le menu...

Commençons pas renommer le menu /var/lib/tftpboot/pxelinux.cf/default en /var/lib/tftpboot/debian.conf

Editons le fichier /var/lib/tftpboot/pxelinux.cf/default pour y mettre ceci (Explication dessous)

 default vesamenu.c32
 prompt 0
 kbdmap french.kbd
 noescape 1
 timeout 300
 
 label bootlocal
  menu default
  menu label Local boot
  localboot 0
 
 # Vers le sous-menu Debian netboot
 label DebianNetboot
  menu label Debian Netboot ---&gt;
  kernel menu.c32
  append debian.conf
 
 label reboot
   menu label Reboot
   kernel reboot.c32

Ce menu nous donne les avantages suivants :
Clavier en Français en cas d'édition du menu;
Meilleur rendu;
Possibilité de booter sur le premier disque dur (par défaut);
Ouvrir un sous-menu (ici vers debian.conf);
Rebooter la machine.

Nous ajouterons l'entrée suivante au sous-menu /var/lib/tftpboot/debian.conf qui nous permettra de revenir au menu principal :

 # Retour au menu principal
 label rootmenu
  MENU LABEL &lt;---- Menu principal
  kernel vesamenu.c32
  append /pxelinux.cfg/default

Vous avez la base, tout ceci est paramétrable à l'infini...

[[Fichier:Capture d'écran - 03082010 - 08-33-09.png]]

[[Fichier:Capture d'écran - 03082010 - 08-35-29.png]]

=== Le menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrés dans défault

 KBDMAP french.kbd

=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

 /var/lib/tftpboot/images/systemrescue vdir
 total 214072
 -r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
 -r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
 -r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
 -r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

 label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

[[Fichier:Capture d'écran - 03082010 - 09-00-40.png]]

=== pxeknife ===

Petit utilitaire '''très complet''', à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Afin de na pas avoir à refaire les 19 fichiers de &quot;conf&quot; pour refléter votre installation, décompressez l'archive dans /var/lib/tftpboot/pxeknife...

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append pxeknife/pxeknife.conf

[[Fichier:Capture d'écran - 03082010 - 09-16-04.png]]

Super Grub Disk !!!

[[Fichier:Capture d'écran - 03082010 - 09-17-38.png]]

Je vous laisse découvrir l'intégralité des menus pas vous-même ^^

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

 label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

[[Fichier:Capture d'écran - 03082010 - 15-35-34.png]]

=== Une option &quot;reboot&quot; et démarrage sur le disque dur ===

Pour démarrer sur le premier disque dur, ajoutez en début de menu :

 label bootlocal
  MENU DEFAULT
  MENU LABEL Local Boot
  localboot 0

Pour avoir la possibilité de redémarrer, ajoutez en fin de menu :

 label reboot
  menu label Reboot
  kernel reboot.c32


=== Knoppix 511 et 620 ===

Pour utiliser les images ISO de Knoppix, nous allons avoir besoin d'un serveur NFS :

 # apt-get install nfs-kernel-server

Pour autoriser notre réseau à utiliser le serveur NFS, ajoutons la ligne suivante au fichier /etc/hosts.allow

 mountd: 192.168.0.

Créez les répertoires qui vont accueillir les CD

 # mkdir /mnt/sdb1/knoppix511
 # mkdir /mnt/sdb1/knoppix620

Montez les CD et copiez leur contenu dans les répertoires que vous venez de créer

Récuperer les fichiers &quot;amorce&quot;

# Démarrez sur votre CD/ISO knoppix.
# Ouvrez une console, et tapez

 netcardconfig

Une boite de dialogue s'ouvre, répondez :
- obtain address automatically

Puis
Code:
knoppix-terminalserver

Une nouvelle boite de dialogue s'ouvre, répondez :
- ok
- setup configure and restart
- Laissez le &quot;range&quot; d'adresse proposées
- Il vous propose ensuite une liste de drivers de cartes réseau. Choisissez celles qui conviennent à votre réseau (ou toutes, ce que j'ai fait par prudence...)
- décochez &quot;secure: Disable root access on client&quot; - ça peut vous servir, et il semblerait que ça pose des problèmes si c'est laissé coché...
- Laissez vide à la question suivante à moins que vous ne connaissiez exactement les paramètres vidéo de vos clients...
- The Knoppix-terminal server will now be started = YES

Cela va démarrer un certain nombre de services réseaux, dont tftp...
Et créer les fichier dont nous avons besoin pour notre PXE...
Récupérez les fichiers suivants qui se trouvent dans le répertoire /tftpboot/ de votre Knoppix :
miniroot.gz et vmlinuz

Vous copierez ces fichiers dans les répertoires que vous allez créer /var/lib/tftpboot/images/knoppix/511 et 620

Donc vous devriez avoir ceci dans chaque répertoire

miniroot.gz, vmlinuz

Ajoutez les partages NFS au fichier /etc/exports (en lecture seule...)

 /mnt/sdb1/knoppix511 *(ro,no_subtree_check,no_root_squash)
 /mnt/sdb1/knoppix620 *(ro,no_subtree_check,no_root_squash)

Redémarrez le serveur NFS

 # /etc/init.d/nfs-kernel-server restart

Ajoutez les entrées dans votre menu &quot;default&quot; :

 label Knoppix511
  MENU LABEL Knoppix 5.1.1
  kernel images/knoppix/511/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix511 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/511/miniroot.gz quiet BOOT_IMAGE=knoppix
 
 label Knoppix620
  MENU LABEL Knoppix 6.2.0
  kernel images/knoppix/620/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix620 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/620/miniroot.gz quiet BOOT_IMAGE=knoppix

=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !

[[Utilisateur:Lol|Lol]] 3 août 2010 à 03:46 (UTC)

Mots cléf : Debian PXE Netboot SystemRescueCd pxeknife HDT Knoppix

[[Category:Serveurs]]</text>
      <sha1>3nv44sjatuhykssjjjqdyjc1f2kgvzf</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>1840</id>
      <parentid>1838</parentid>
      <timestamp>2010-08-03T12:49:50Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Knoppix 511 et 620 */</comment>
      <text xml:space="preserve" bytes="14455">{{Modèle:Ébauche|PXE}}

== Installation par le réseau - Boot PXE ==

Cet article propose de vous expliquer l’installation et la configuration d'un serveur PXE sur votre Debian.

Le démarrage PXE (Pre-boot eXecution Environment) permet à une station de travail de démarrer depuis le réseau en récupérant une image de système d'exploitation qui se trouve sur votre serveur (Pour commencer: Debian Netinstall, PXEKnife, SysterescuCD, HDT, Knoppix et d'autres à venir)

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /var/lib/syslinux
:chain.c32
:mboot.c32
:menu.c32
:pxelinux.0
:reboot.c32
:gpxelinux.0
:memdisk
:vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/chain.c32 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste :

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;gpxelinux.0&quot;;
 next-server 192.168.0.1;

Vous avez le choix entre deux amorces : pxelinux.0 ou gpxelinux.0
J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.

Le premier fichier &quot;gpxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse ou la machine qui demande à booter va chercher le pxelinux.O; Rine ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;gpxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;isalo.org&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/old-stable ou stable, testing, unstable...

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les information sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 default menu.c32
 prompt 0
 noescape 1
 timeout 300
 
 label 1
  MENU LABEL Etch i386
  kernel images/debian/old-stable/i386/linux
  append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 2
  MENU LABEL Etch amd64
  kernel images/debian/old-stable/amd64/linux
  append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 3
  MENU LABEL Lenny i386
  kernel images/debian/stable/i386/linux
  append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
  MENU LABEL Lenny amd64
  kernel images/debian/stable/amd64/linux
  append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 5
  MENU LABEL Squeeze i386
  kernel images/debian/testing/i386/linux
  append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 7
  MENU LABEL Unstable i386
  kernel images/debian/unstable/i386/linux
  append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 8
  MENU LABEL Unstable amd64
  kernel images/debian/unstable/amd64/linux
  append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --

Le menu ci-dessus nous donnera le résultat suivant :

[[Fichier:Capture d'écran - 03082010 - 07-29-44.png]]

C'est déjà pas mal, mais nous pouvons l'améliorer...

=== Amélioration du menu ===

Avant de poursuivre, et pour ne pas être noyés sous les entrées, nous allons améliorer un peu le menu...

Commençons pas renommer le menu /var/lib/tftpboot/pxelinux.cf/default en /var/lib/tftpboot/debian.conf

Editons le fichier /var/lib/tftpboot/pxelinux.cf/default pour y mettre ceci (Explication dessous)

 default vesamenu.c32
 prompt 0
 kbdmap french.kbd
 noescape 1
 timeout 300
 
 label bootlocal
  menu default
  menu label Local boot
  localboot 0
 
 # Vers le sous-menu Debian netboot
 label DebianNetboot
  menu label Debian Netboot ---&gt;
  kernel menu.c32
  append debian.conf
 
 label reboot
   menu label Reboot
   kernel reboot.c32

Ce menu nous donne les avantages suivants :
Clavier en Français en cas d'édition du menu;
Meilleur rendu;
Possibilité de booter sur le premier disque dur (par défaut);
Ouvrir un sous-menu (ici vers debian.conf);
Rebooter la machine.

Nous ajouterons l'entrée suivante au sous-menu /var/lib/tftpboot/debian.conf qui nous permettra de revenir au menu principal :

 # Retour au menu principal
 label rootmenu
  MENU LABEL &lt;---- Menu principal
  kernel vesamenu.c32
  append /pxelinux.cfg/default

Vous avez la base, tout ceci est paramétrable à l'infini...

[[Fichier:Capture d'écran - 03082010 - 08-33-09.png]]

[[Fichier:Capture d'écran - 03082010 - 08-35-29.png]]

=== Le menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrés dans défault

 KBDMAP french.kbd

=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

 /var/lib/tftpboot/images/systemrescue vdir
 total 214072
 -r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
 -r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
 -r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
 -r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

 label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

[[Fichier:Capture d'écran - 03082010 - 09-00-40.png]]

=== pxeknife ===

Petit utilitaire '''très complet''', à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Afin de na pas avoir à refaire les 19 fichiers de &quot;conf&quot; pour refléter votre installation, décompressez l'archive dans /var/lib/tftpboot/pxeknife...

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append pxeknife/pxeknife.conf

[[Fichier:Capture d'écran - 03082010 - 09-16-04.png]]

Super Grub Disk !!!

[[Fichier:Capture d'écran - 03082010 - 09-17-38.png]]

Je vous laisse découvrir l'intégralité des menus pas vous-même ^^

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

 label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

[[Fichier:Capture d'écran - 03082010 - 15-35-34.png]]

=== Une option &quot;reboot&quot; et démarrage sur le disque dur ===

Pour démarrer sur le premier disque dur, ajoutez en début de menu :

 label bootlocal
  MENU DEFAULT
  MENU LABEL Local Boot
  localboot 0

Pour avoir la possibilité de redémarrer, ajoutez en fin de menu :

 label reboot
  menu label Reboot
  kernel reboot.c32


=== Knoppix 511 et 620 ===

Pour utiliser les images ISO de Knoppix, nous allons avoir besoin d'un serveur NFS :

 # apt-get install nfs-kernel-server

Pour autoriser notre réseau à utiliser le serveur NFS, ajoutons la ligne suivante au fichier /etc/hosts.allow

 mountd: 192.168.0.

Créez les répertoires qui vont accueillir les CD

 # mkdir /mnt/sdb1/knoppix511
 # mkdir /mnt/sdb1/knoppix620

Montez les CD et copiez leur contenu dans les répertoires que vous venez de créer

Récuperer les fichiers &quot;amorce&quot;

# Démarrez sur votre CD/ISO knoppix.
# Ouvrez une console, et tapez

 netcardconfig

Une boite de dialogue s'ouvre, répondez :
- obtain address automatically

Puis
Code:
knoppix-terminalserver

Une nouvelle boite de dialogue s'ouvre, répondez :
- ok
- setup configure and restart
- Laissez le &quot;range&quot; d'adresse proposées
- Il vous propose ensuite une liste de drivers de cartes réseau. Choisissez celles qui conviennent à votre réseau (ou toutes, ce que j'ai fait par prudence...)
- décochez &quot;secure: Disable root access on client&quot; - ça peut vous servir, et il semblerait que ça pose des problèmes si c'est laissé coché...
- Laissez vide à la question suivante à moins que vous ne connaissiez exactement les paramètres vidéo de vos clients...
- The Knoppix-terminal server will now be started = YES

Cela va démarrer un certain nombre de services réseaux, dont tftp...
Et créer les fichier dont nous avons besoin pour notre PXE...
Récupérez les fichiers suivants qui se trouvent dans le répertoire /tftpboot/ de votre Knoppix :
miniroot.gz et vmlinuz

Vous copierez ces fichiers dans les répertoires que vous allez créer /var/lib/tftpboot/images/knoppix/511 et 620

Donc vous devriez avoir ceci dans chaque répertoire

miniroot.gz, vmlinuz

Ajoutez les partages NFS au fichier /etc/exports (en lecture seule...)

 /mnt/sdb1/knoppix511 *(ro,no_subtree_check,no_root_squash)
 /mnt/sdb1/knoppix620 *(ro,no_subtree_check,no_root_squash)

Redémarrez le serveur NFS

 # /etc/init.d/nfs-kernel-server restart

Ajoutez les entrées dans votre menu &quot;default&quot; :

 label Knoppix511
  MENU LABEL Knoppix 5.1.1
  kernel images/knoppix/511/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix511 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/511/miniroot.gz quiet BOOT_IMAGE=knoppix
 
 label Knoppix620
  MENU LABEL Knoppix 6.2.0
  kernel images/knoppix/620/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix620 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/620/miniroot.gz quiet BOOT_IMAGE=knoppix

[[Fichier:Capture d'écran - 03082010 - 15-48-39.png]]

=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !

[[Utilisateur:Lol|Lol]] 3 août 2010 à 03:46 (UTC)

Mots cléf : Debian PXE Netboot SystemRescueCd pxeknife HDT Knoppix

[[Category:Serveurs]]</text>
      <sha1>3rb9h05vimjwgf34mhp5s36it1ncywd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>2254</id>
      <parentid>1840</parentid>
      <timestamp>2010-11-02T11:46:02Z</timestamp>
      <contributor>
        <username>Hayou</username>
        <id>74</id>
      </contributor>
      <minor/>
      <comment>juste une petit sur le chemin : /var/lib/tftpboot/pxelinux.cf</comment>
      <text xml:space="preserve" bytes="14457">{{Modèle:Ébauche|PXE}}

== Installation par le réseau - Boot PXE ==

Cet article propose de vous expliquer l’installation et la configuration d'un serveur PXE sur votre Debian.

Le démarrage PXE (Pre-boot eXecution Environment) permet à une station de travail de démarrer depuis le réseau en récupérant une image de système d'exploitation qui se trouve sur votre serveur (Pour commencer: Debian Netinstall, PXEKnife, SysterescuCD, HDT, Knoppix et d'autres à venir)

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /var/lib/syslinux
:chain.c32
:mboot.c32
:menu.c32
:pxelinux.0
:reboot.c32
:gpxelinux.0
:memdisk
:vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/chain.c32 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste :

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;gpxelinux.0&quot;;
 next-server 192.168.0.1;

Vous avez le choix entre deux amorces : pxelinux.0 ou gpxelinux.0
J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.

Le premier fichier &quot;gpxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse ou la machine qui demande à booter va chercher le pxelinux.O; Rine ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;gpxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;isalo.org&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/old-stable ou stable, testing, unstable...

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les information sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 default menu.c32
 prompt 0
 noescape 1
 timeout 300
 
 label 1
  MENU LABEL Etch i386
  kernel images/debian/old-stable/i386/linux
  append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 2
  MENU LABEL Etch amd64
  kernel images/debian/old-stable/amd64/linux
  append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 3
  MENU LABEL Lenny i386
  kernel images/debian/stable/i386/linux
  append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
  MENU LABEL Lenny amd64
  kernel images/debian/stable/amd64/linux
  append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 5
  MENU LABEL Squeeze i386
  kernel images/debian/testing/i386/linux
  append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 7
  MENU LABEL Unstable i386
  kernel images/debian/unstable/i386/linux
  append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 8
  MENU LABEL Unstable amd64
  kernel images/debian/unstable/amd64/linux
  append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --

Le menu ci-dessus nous donnera le résultat suivant :

[[Fichier:Capture d'écran - 03082010 - 07-29-44.png]]

C'est déjà pas mal, mais nous pouvons l'améliorer...

=== Amélioration du menu ===

Avant de poursuivre, et pour ne pas être noyés sous les entrées, nous allons améliorer un peu le menu...

Commençons pas renommer le menu /var/lib/tftpboot/pxelinux.cfg/default en /var/lib/tftpboot/debian.conf

Editons le fichier /var/lib/tftpboot/pxelinux.cfg/default pour y mettre ceci (Explication dessous)

 default vesamenu.c32
 prompt 0
 kbdmap french.kbd
 noescape 1
 timeout 300
 
 label bootlocal
  menu default
  menu label Local boot
  localboot 0
 
 # Vers le sous-menu Debian netboot
 label DebianNetboot
  menu label Debian Netboot ---&gt;
  kernel menu.c32
  append debian.conf
 
 label reboot
   menu label Reboot
   kernel reboot.c32

Ce menu nous donne les avantages suivants :
Clavier en Français en cas d'édition du menu;
Meilleur rendu;
Possibilité de booter sur le premier disque dur (par défaut);
Ouvrir un sous-menu (ici vers debian.conf);
Rebooter la machine.

Nous ajouterons l'entrée suivante au sous-menu /var/lib/tftpboot/debian.conf qui nous permettra de revenir au menu principal :

 # Retour au menu principal
 label rootmenu
  MENU LABEL &lt;---- Menu principal
  kernel vesamenu.c32
  append /pxelinux.cfg/default

Vous avez la base, tout ceci est paramétrable à l'infini...

[[Fichier:Capture d'écran - 03082010 - 08-33-09.png]]

[[Fichier:Capture d'écran - 03082010 - 08-35-29.png]]

=== Le menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrés dans défault

 KBDMAP french.kbd

=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

 /var/lib/tftpboot/images/systemrescue vdir
 total 214072
 -r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
 -r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
 -r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
 -r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

 label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

[[Fichier:Capture d'écran - 03082010 - 09-00-40.png]]

=== pxeknife ===

Petit utilitaire '''très complet''', à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Afin de na pas avoir à refaire les 19 fichiers de &quot;conf&quot; pour refléter votre installation, décompressez l'archive dans /var/lib/tftpboot/pxeknife...

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append pxeknife/pxeknife.conf

[[Fichier:Capture d'écran - 03082010 - 09-16-04.png]]

Super Grub Disk !!!

[[Fichier:Capture d'écran - 03082010 - 09-17-38.png]]

Je vous laisse découvrir l'intégralité des menus pas vous-même ^^

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

 label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

[[Fichier:Capture d'écran - 03082010 - 15-35-34.png]]

=== Une option &quot;reboot&quot; et démarrage sur le disque dur ===

Pour démarrer sur le premier disque dur, ajoutez en début de menu :

 label bootlocal
  MENU DEFAULT
  MENU LABEL Local Boot
  localboot 0

Pour avoir la possibilité de redémarrer, ajoutez en fin de menu :

 label reboot
  menu label Reboot
  kernel reboot.c32


=== Knoppix 511 et 620 ===

Pour utiliser les images ISO de Knoppix, nous allons avoir besoin d'un serveur NFS :

 # apt-get install nfs-kernel-server

Pour autoriser notre réseau à utiliser le serveur NFS, ajoutons la ligne suivante au fichier /etc/hosts.allow

 mountd: 192.168.0.

Créez les répertoires qui vont accueillir les CD

 # mkdir /mnt/sdb1/knoppix511
 # mkdir /mnt/sdb1/knoppix620

Montez les CD et copiez leur contenu dans les répertoires que vous venez de créer

Récuperer les fichiers &quot;amorce&quot;

# Démarrez sur votre CD/ISO knoppix.
# Ouvrez une console, et tapez

 netcardconfig

Une boite de dialogue s'ouvre, répondez :
- obtain address automatically

Puis
Code:
knoppix-terminalserver

Une nouvelle boite de dialogue s'ouvre, répondez :
- ok
- setup configure and restart
- Laissez le &quot;range&quot; d'adresse proposées
- Il vous propose ensuite une liste de drivers de cartes réseau. Choisissez celles qui conviennent à votre réseau (ou toutes, ce que j'ai fait par prudence...)
- décochez &quot;secure: Disable root access on client&quot; - ça peut vous servir, et il semblerait que ça pose des problèmes si c'est laissé coché...
- Laissez vide à la question suivante à moins que vous ne connaissiez exactement les paramètres vidéo de vos clients...
- The Knoppix-terminal server will now be started = YES

Cela va démarrer un certain nombre de services réseaux, dont tftp...
Et créer les fichier dont nous avons besoin pour notre PXE...
Récupérez les fichiers suivants qui se trouvent dans le répertoire /tftpboot/ de votre Knoppix :
miniroot.gz et vmlinuz

Vous copierez ces fichiers dans les répertoires que vous allez créer /var/lib/tftpboot/images/knoppix/511 et 620

Donc vous devriez avoir ceci dans chaque répertoire

miniroot.gz, vmlinuz

Ajoutez les partages NFS au fichier /etc/exports (en lecture seule...)

 /mnt/sdb1/knoppix511 *(ro,no_subtree_check,no_root_squash)
 /mnt/sdb1/knoppix620 *(ro,no_subtree_check,no_root_squash)

Redémarrez le serveur NFS

 # /etc/init.d/nfs-kernel-server restart

Ajoutez les entrées dans votre menu &quot;default&quot; :

 label Knoppix511
  MENU LABEL Knoppix 5.1.1
  kernel images/knoppix/511/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix511 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/511/miniroot.gz quiet BOOT_IMAGE=knoppix
 
 label Knoppix620
  MENU LABEL Knoppix 6.2.0
  kernel images/knoppix/620/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix620 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/620/miniroot.gz quiet BOOT_IMAGE=knoppix

[[Fichier:Capture d'écran - 03082010 - 15-48-39.png]]

=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !

[[Utilisateur:Lol|Lol]] 3 août 2010 à 03:46 (UTC)

Mots cléf : Debian PXE Netboot SystemRescueCd pxeknife HDT Knoppix

[[Category:Serveurs]]</text>
      <sha1>d7qsvhjlt1b2gxjl73ufgp4trr81n21</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3094</id>
      <parentid>2254</parentid>
      <timestamp>2011-07-29T09:25:09Z</timestamp>
      <contributor>
        <username>Toto</username>
        <id>144</id>
      </contributor>
      <text xml:space="preserve" bytes="14457">{{Modèle:Ébauche|PXE}}

== Installation par le réseau - Boot PXE ==

Cet article propose de vous expliquer l’installation et la configuration d'un serveur PXE sur votre Debian.

Le démarrage PXE (Pre-boot eXecution Environment) permet à une station de travail de démarrer depuis le réseau en récupérant une image de système d'exploitation qui se trouve sur votre serveur (Pour commencer: Debian Netinstall, PXEKnife, SysterescuCD, HDT, Knoppix et d'autres à venir)

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /usr/lib/syslinux
:chain.c32
:mboot.c32
:menu.c32
:pxelinux.0
:reboot.c32
:gpxelinux.0
:memdisk
:vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/chain.c32 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste :

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;gpxelinux.0&quot;;
 next-server 192.168.0.1;

Vous avez le choix entre deux amorces : pxelinux.0 ou gpxelinux.0
J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.

Le premier fichier &quot;gpxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse ou la machine qui demande à booter va chercher le pxelinux.O; Rine ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;gpxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;isalo.org&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/old-stable ou stable, testing, unstable...

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les information sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 default menu.c32
 prompt 0
 noescape 1
 timeout 300
 
 label 1
  MENU LABEL Etch i386
  kernel images/debian/old-stable/i386/linux
  append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 2
  MENU LABEL Etch amd64
  kernel images/debian/old-stable/amd64/linux
  append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 3
  MENU LABEL Lenny i386
  kernel images/debian/stable/i386/linux
  append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
  MENU LABEL Lenny amd64
  kernel images/debian/stable/amd64/linux
  append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 5
  MENU LABEL Squeeze i386
  kernel images/debian/testing/i386/linux
  append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 7
  MENU LABEL Unstable i386
  kernel images/debian/unstable/i386/linux
  append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 8
  MENU LABEL Unstable amd64
  kernel images/debian/unstable/amd64/linux
  append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --

Le menu ci-dessus nous donnera le résultat suivant :

[[Fichier:Capture d'écran - 03082010 - 07-29-44.png]]

C'est déjà pas mal, mais nous pouvons l'améliorer...

=== Amélioration du menu ===

Avant de poursuivre, et pour ne pas être noyés sous les entrées, nous allons améliorer un peu le menu...

Commençons pas renommer le menu /var/lib/tftpboot/pxelinux.cfg/default en /var/lib/tftpboot/debian.conf

Editons le fichier /var/lib/tftpboot/pxelinux.cfg/default pour y mettre ceci (Explication dessous)

 default vesamenu.c32
 prompt 0
 kbdmap french.kbd
 noescape 1
 timeout 300
 
 label bootlocal
  menu default
  menu label Local boot
  localboot 0
 
 # Vers le sous-menu Debian netboot
 label DebianNetboot
  menu label Debian Netboot ---&gt;
  kernel menu.c32
  append debian.conf
 
 label reboot
   menu label Reboot
   kernel reboot.c32

Ce menu nous donne les avantages suivants :
Clavier en Français en cas d'édition du menu;
Meilleur rendu;
Possibilité de booter sur le premier disque dur (par défaut);
Ouvrir un sous-menu (ici vers debian.conf);
Rebooter la machine.

Nous ajouterons l'entrée suivante au sous-menu /var/lib/tftpboot/debian.conf qui nous permettra de revenir au menu principal :

 # Retour au menu principal
 label rootmenu
  MENU LABEL &lt;---- Menu principal
  kernel vesamenu.c32
  append /pxelinux.cfg/default

Vous avez la base, tout ceci est paramétrable à l'infini...

[[Fichier:Capture d'écran - 03082010 - 08-33-09.png]]

[[Fichier:Capture d'écran - 03082010 - 08-35-29.png]]

=== Le menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrés dans défault

 KBDMAP french.kbd

=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

 /var/lib/tftpboot/images/systemrescue vdir
 total 214072
 -r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
 -r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
 -r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
 -r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

 label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

[[Fichier:Capture d'écran - 03082010 - 09-00-40.png]]

=== pxeknife ===

Petit utilitaire '''très complet''', à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Afin de na pas avoir à refaire les 19 fichiers de &quot;conf&quot; pour refléter votre installation, décompressez l'archive dans /var/lib/tftpboot/pxeknife...

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append pxeknife/pxeknife.conf

[[Fichier:Capture d'écran - 03082010 - 09-16-04.png]]

Super Grub Disk !!!

[[Fichier:Capture d'écran - 03082010 - 09-17-38.png]]

Je vous laisse découvrir l'intégralité des menus pas vous-même ^^

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

 label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

[[Fichier:Capture d'écran - 03082010 - 15-35-34.png]]

=== Une option &quot;reboot&quot; et démarrage sur le disque dur ===

Pour démarrer sur le premier disque dur, ajoutez en début de menu :

 label bootlocal
  MENU DEFAULT
  MENU LABEL Local Boot
  localboot 0

Pour avoir la possibilité de redémarrer, ajoutez en fin de menu :

 label reboot
  menu label Reboot
  kernel reboot.c32


=== Knoppix 511 et 620 ===

Pour utiliser les images ISO de Knoppix, nous allons avoir besoin d'un serveur NFS :

 # apt-get install nfs-kernel-server

Pour autoriser notre réseau à utiliser le serveur NFS, ajoutons la ligne suivante au fichier /etc/hosts.allow

 mountd: 192.168.0.

Créez les répertoires qui vont accueillir les CD

 # mkdir /mnt/sdb1/knoppix511
 # mkdir /mnt/sdb1/knoppix620

Montez les CD et copiez leur contenu dans les répertoires que vous venez de créer

Récuperer les fichiers &quot;amorce&quot;

# Démarrez sur votre CD/ISO knoppix.
# Ouvrez une console, et tapez

 netcardconfig

Une boite de dialogue s'ouvre, répondez :
- obtain address automatically

Puis
Code:
knoppix-terminalserver

Une nouvelle boite de dialogue s'ouvre, répondez :
- ok
- setup configure and restart
- Laissez le &quot;range&quot; d'adresse proposées
- Il vous propose ensuite une liste de drivers de cartes réseau. Choisissez celles qui conviennent à votre réseau (ou toutes, ce que j'ai fait par prudence...)
- décochez &quot;secure: Disable root access on client&quot; - ça peut vous servir, et il semblerait que ça pose des problèmes si c'est laissé coché...
- Laissez vide à la question suivante à moins que vous ne connaissiez exactement les paramètres vidéo de vos clients...
- The Knoppix-terminal server will now be started = YES

Cela va démarrer un certain nombre de services réseaux, dont tftp...
Et créer les fichier dont nous avons besoin pour notre PXE...
Récupérez les fichiers suivants qui se trouvent dans le répertoire /tftpboot/ de votre Knoppix :
miniroot.gz et vmlinuz

Vous copierez ces fichiers dans les répertoires que vous allez créer /var/lib/tftpboot/images/knoppix/511 et 620

Donc vous devriez avoir ceci dans chaque répertoire

miniroot.gz, vmlinuz

Ajoutez les partages NFS au fichier /etc/exports (en lecture seule...)

 /mnt/sdb1/knoppix511 *(ro,no_subtree_check,no_root_squash)
 /mnt/sdb1/knoppix620 *(ro,no_subtree_check,no_root_squash)

Redémarrez le serveur NFS

 # /etc/init.d/nfs-kernel-server restart

Ajoutez les entrées dans votre menu &quot;default&quot; :

 label Knoppix511
  MENU LABEL Knoppix 5.1.1
  kernel images/knoppix/511/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix511 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/511/miniroot.gz quiet BOOT_IMAGE=knoppix
 
 label Knoppix620
  MENU LABEL Knoppix 6.2.0
  kernel images/knoppix/620/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix620 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/620/miniroot.gz quiet BOOT_IMAGE=knoppix

[[Fichier:Capture d'écran - 03082010 - 15-48-39.png]]

=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !

[[Utilisateur:Lol|Lol]] 3 août 2010 à 03:46 (UTC)

Mots cléf : Debian PXE Netboot SystemRescueCd pxeknife HDT Knoppix

[[Category:Serveurs]]</text>
      <sha1>eo86bwfyp7876hztb0zzwdi9ezau1vc</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3095</id>
      <parentid>3094</parentid>
      <timestamp>2011-07-29T11:04:02Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>Relecture Ok</comment>
      <text xml:space="preserve" bytes="14455">{{Modèle:stable|PXE}}

== Installation par le réseau - Boot PXE ==

Cet article propose de vous expliquer l’installation et la configuration d'un serveur PXE sur votre Debian.

Le démarrage PXE (Pre-boot eXecution Environment) permet à une station de travail de démarrer depuis le réseau en récupérant une image de système d'exploitation qui se trouve sur votre serveur (Pour commencer: Debian Netinstall, PXEKnife, SysterescuCD, HDT, Knoppix et d'autres à venir)

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /usr/lib/syslinux
:chain.c32
:mboot.c32
:menu.c32
:pxelinux.0
:reboot.c32
:gpxelinux.0
:memdisk
:vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/chain.c32 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste :

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;gpxelinux.0&quot;;
 next-server 192.168.0.1;

Vous avez le choix entre deux amorces : pxelinux.0 ou gpxelinux.0
J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.

Le premier fichier &quot;gpxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse ou la machine qui demande à booter va chercher le pxelinux.O; Rine ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;gpxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;isalo.org&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/old-stable ou stable, testing, unstable...

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les information sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 default menu.c32
 prompt 0
 noescape 1
 timeout 300
 
 label 1
  MENU LABEL Etch i386
  kernel images/debian/old-stable/i386/linux
  append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 2
  MENU LABEL Etch amd64
  kernel images/debian/old-stable/amd64/linux
  append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 3
  MENU LABEL Lenny i386
  kernel images/debian/stable/i386/linux
  append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
  MENU LABEL Lenny amd64
  kernel images/debian/stable/amd64/linux
  append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 5
  MENU LABEL Squeeze i386
  kernel images/debian/testing/i386/linux
  append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 7
  MENU LABEL Unstable i386
  kernel images/debian/unstable/i386/linux
  append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 8
  MENU LABEL Unstable amd64
  kernel images/debian/unstable/amd64/linux
  append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --

Le menu ci-dessus nous donnera le résultat suivant :

[[Fichier:Capture d'écran - 03082010 - 07-29-44.png]]

C'est déjà pas mal, mais nous pouvons l'améliorer...

=== Amélioration du menu ===

Avant de poursuivre, et pour ne pas être noyés sous les entrées, nous allons améliorer un peu le menu...

Commençons pas renommer le menu /var/lib/tftpboot/pxelinux.cfg/default en /var/lib/tftpboot/debian.conf

Editons le fichier /var/lib/tftpboot/pxelinux.cfg/default pour y mettre ceci (Explication dessous)

 default vesamenu.c32
 prompt 0
 kbdmap french.kbd
 noescape 1
 timeout 300
 
 label bootlocal
  menu default
  menu label Local boot
  localboot 0
 
 # Vers le sous-menu Debian netboot
 label DebianNetboot
  menu label Debian Netboot ---&gt;
  kernel menu.c32
  append debian.conf
 
 label reboot
   menu label Reboot
   kernel reboot.c32

Ce menu nous donne les avantages suivants :
Clavier en Français en cas d'édition du menu;
Meilleur rendu;
Possibilité de booter sur le premier disque dur (par défaut);
Ouvrir un sous-menu (ici vers debian.conf);
Rebooter la machine.

Nous ajouterons l'entrée suivante au sous-menu /var/lib/tftpboot/debian.conf qui nous permettra de revenir au menu principal :

 # Retour au menu principal
 label rootmenu
  MENU LABEL &lt;---- Menu principal
  kernel vesamenu.c32
  append /pxelinux.cfg/default

Vous avez la base, tout ceci est paramétrable à l'infini...

[[Fichier:Capture d'écran - 03082010 - 08-33-09.png]]

[[Fichier:Capture d'écran - 03082010 - 08-35-29.png]]

=== Le menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrés dans défault

 KBDMAP french.kbd

=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

 /var/lib/tftpboot/images/systemrescue vdir
 total 214072
 -r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
 -r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
 -r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
 -r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

 label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

[[Fichier:Capture d'écran - 03082010 - 09-00-40.png]]

=== pxeknife ===

Petit utilitaire '''très complet''', à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Afin de na pas avoir à refaire les 19 fichiers de &quot;conf&quot; pour refléter votre installation, décompressez l'archive dans /var/lib/tftpboot/pxeknife...

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append pxeknife/pxeknife.conf

[[Fichier:Capture d'écran - 03082010 - 09-16-04.png]]

Super Grub Disk !!!

[[Fichier:Capture d'écran - 03082010 - 09-17-38.png]]

Je vous laisse découvrir l'intégralité des menus pas vous-même ^^

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

 label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

[[Fichier:Capture d'écran - 03082010 - 15-35-34.png]]

=== Une option &quot;reboot&quot; et démarrage sur le disque dur ===

Pour démarrer sur le premier disque dur, ajoutez en début de menu :

 label bootlocal
  MENU DEFAULT
  MENU LABEL Local Boot
  localboot 0

Pour avoir la possibilité de redémarrer, ajoutez en fin de menu :

 label reboot
  menu label Reboot
  kernel reboot.c32


=== Knoppix 511 et 620 ===

Pour utiliser les images ISO de Knoppix, nous allons avoir besoin d'un serveur NFS :

 # apt-get install nfs-kernel-server

Pour autoriser notre réseau à utiliser le serveur NFS, ajoutons la ligne suivante au fichier /etc/hosts.allow

 mountd: 192.168.0.

Créez les répertoires qui vont accueillir les CD

 # mkdir /mnt/sdb1/knoppix511
 # mkdir /mnt/sdb1/knoppix620

Montez les CD et copiez leur contenu dans les répertoires que vous venez de créer

Récuperer les fichiers &quot;amorce&quot;

# Démarrez sur votre CD/ISO knoppix.
# Ouvrez une console, et tapez

 netcardconfig

Une boite de dialogue s'ouvre, répondez :
- obtain address automatically

Puis
Code:
knoppix-terminalserver

Une nouvelle boite de dialogue s'ouvre, répondez :
- ok
- setup configure and restart
- Laissez le &quot;range&quot; d'adresse proposées
- Il vous propose ensuite une liste de drivers de cartes réseau. Choisissez celles qui conviennent à votre réseau (ou toutes, ce que j'ai fait par prudence...)
- décochez &quot;secure: Disable root access on client&quot; - ça peut vous servir, et il semblerait que ça pose des problèmes si c'est laissé coché...
- Laissez vide à la question suivante à moins que vous ne connaissiez exactement les paramètres vidéo de vos clients...
- The Knoppix-terminal server will now be started = YES

Cela va démarrer un certain nombre de services réseaux, dont tftp...
Et créer les fichier dont nous avons besoin pour notre PXE...
Récupérez les fichiers suivants qui se trouvent dans le répertoire /tftpboot/ de votre Knoppix :
miniroot.gz et vmlinuz

Vous copierez ces fichiers dans les répertoires que vous allez créer /var/lib/tftpboot/images/knoppix/511 et 620

Donc vous devriez avoir ceci dans chaque répertoire

miniroot.gz, vmlinuz

Ajoutez les partages NFS au fichier /etc/exports (en lecture seule...)

 /mnt/sdb1/knoppix511 *(ro,no_subtree_check,no_root_squash)
 /mnt/sdb1/knoppix620 *(ro,no_subtree_check,no_root_squash)

Redémarrez le serveur NFS

 # /etc/init.d/nfs-kernel-server restart

Ajoutez les entrées dans votre menu &quot;default&quot; :

 label Knoppix511
  MENU LABEL Knoppix 5.1.1
  kernel images/knoppix/511/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix511 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/511/miniroot.gz quiet BOOT_IMAGE=knoppix
 
 label Knoppix620
  MENU LABEL Knoppix 6.2.0
  kernel images/knoppix/620/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix620 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/620/miniroot.gz quiet BOOT_IMAGE=knoppix

[[Fichier:Capture d'écran - 03082010 - 15-48-39.png]]

=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !

[[Utilisateur:Lol|Lol]] 3 août 2010 à 03:46 (UTC)

Mots cléf : Debian PXE Netboot SystemRescueCd pxeknife HDT Knoppix

[[Category:Serveurs]]</text>
      <sha1>71ljnj8ubbpihahib3ias97wmp0se4h</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4507</id>
      <parentid>3095</parentid>
      <timestamp>2012-10-12T07:59:11Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* DHCP */</comment>
      <text xml:space="preserve" bytes="14456">{{Modèle:stable|PXE}}

== Installation par le réseau - Boot PXE ==

Cet article propose de vous expliquer l’installation et la configuration d'un serveur PXE sur votre Debian.

Le démarrage PXE (Pre-boot eXecution Environment) permet à une station de travail de démarrer depuis le réseau en récupérant une image de système d'exploitation qui se trouve sur votre serveur (Pour commencer: Debian Netinstall, PXEKnife, SysterescuCD, HDT, Knoppix et d'autres à venir)

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /usr/lib/syslinux
:chain.c32
:mboot.c32
:menu.c32
:pxelinux.0
:reboot.c32
:gpxelinux.0
:memdisk
:vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/chain.c32 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste :

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;gpxelinux.0&quot;;
 next-server 192.168.0.1;

Vous avez le choix entre deux amorces : pxelinux.0 ou gpxelinux.0
J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.

Le premier fichier &quot;gpxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse où la machine qui demande à booter va chercher le pxelinux.O; Rine ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;gpxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;isalo.org&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/old-stable ou stable, testing, unstable...

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les information sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 default menu.c32
 prompt 0
 noescape 1
 timeout 300
 
 label 1
  MENU LABEL Etch i386
  kernel images/debian/old-stable/i386/linux
  append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 2
  MENU LABEL Etch amd64
  kernel images/debian/old-stable/amd64/linux
  append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 3
  MENU LABEL Lenny i386
  kernel images/debian/stable/i386/linux
  append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
  MENU LABEL Lenny amd64
  kernel images/debian/stable/amd64/linux
  append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 5
  MENU LABEL Squeeze i386
  kernel images/debian/testing/i386/linux
  append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 7
  MENU LABEL Unstable i386
  kernel images/debian/unstable/i386/linux
  append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 8
  MENU LABEL Unstable amd64
  kernel images/debian/unstable/amd64/linux
  append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --

Le menu ci-dessus nous donnera le résultat suivant :

[[Fichier:Capture d'écran - 03082010 - 07-29-44.png]]

C'est déjà pas mal, mais nous pouvons l'améliorer...

=== Amélioration du menu ===

Avant de poursuivre, et pour ne pas être noyés sous les entrées, nous allons améliorer un peu le menu...

Commençons pas renommer le menu /var/lib/tftpboot/pxelinux.cfg/default en /var/lib/tftpboot/debian.conf

Editons le fichier /var/lib/tftpboot/pxelinux.cfg/default pour y mettre ceci (Explication dessous)

 default vesamenu.c32
 prompt 0
 kbdmap french.kbd
 noescape 1
 timeout 300
 
 label bootlocal
  menu default
  menu label Local boot
  localboot 0
 
 # Vers le sous-menu Debian netboot
 label DebianNetboot
  menu label Debian Netboot ---&gt;
  kernel menu.c32
  append debian.conf
 
 label reboot
   menu label Reboot
   kernel reboot.c32

Ce menu nous donne les avantages suivants :
Clavier en Français en cas d'édition du menu;
Meilleur rendu;
Possibilité de booter sur le premier disque dur (par défaut);
Ouvrir un sous-menu (ici vers debian.conf);
Rebooter la machine.

Nous ajouterons l'entrée suivante au sous-menu /var/lib/tftpboot/debian.conf qui nous permettra de revenir au menu principal :

 # Retour au menu principal
 label rootmenu
  MENU LABEL &lt;---- Menu principal
  kernel vesamenu.c32
  append /pxelinux.cfg/default

Vous avez la base, tout ceci est paramétrable à l'infini...

[[Fichier:Capture d'écran - 03082010 - 08-33-09.png]]

[[Fichier:Capture d'écran - 03082010 - 08-35-29.png]]

=== Le menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrés dans défault

 KBDMAP french.kbd

=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

 /var/lib/tftpboot/images/systemrescue vdir
 total 214072
 -r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
 -r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
 -r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
 -r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

 label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

[[Fichier:Capture d'écran - 03082010 - 09-00-40.png]]

=== pxeknife ===

Petit utilitaire '''très complet''', à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Afin de na pas avoir à refaire les 19 fichiers de &quot;conf&quot; pour refléter votre installation, décompressez l'archive dans /var/lib/tftpboot/pxeknife...

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append pxeknife/pxeknife.conf

[[Fichier:Capture d'écran - 03082010 - 09-16-04.png]]

Super Grub Disk !!!

[[Fichier:Capture d'écran - 03082010 - 09-17-38.png]]

Je vous laisse découvrir l'intégralité des menus pas vous-même ^^

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

 label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

[[Fichier:Capture d'écran - 03082010 - 15-35-34.png]]

=== Une option &quot;reboot&quot; et démarrage sur le disque dur ===

Pour démarrer sur le premier disque dur, ajoutez en début de menu :

 label bootlocal
  MENU DEFAULT
  MENU LABEL Local Boot
  localboot 0

Pour avoir la possibilité de redémarrer, ajoutez en fin de menu :

 label reboot
  menu label Reboot
  kernel reboot.c32


=== Knoppix 511 et 620 ===

Pour utiliser les images ISO de Knoppix, nous allons avoir besoin d'un serveur NFS :

 # apt-get install nfs-kernel-server

Pour autoriser notre réseau à utiliser le serveur NFS, ajoutons la ligne suivante au fichier /etc/hosts.allow

 mountd: 192.168.0.

Créez les répertoires qui vont accueillir les CD

 # mkdir /mnt/sdb1/knoppix511
 # mkdir /mnt/sdb1/knoppix620

Montez les CD et copiez leur contenu dans les répertoires que vous venez de créer

Récuperer les fichiers &quot;amorce&quot;

# Démarrez sur votre CD/ISO knoppix.
# Ouvrez une console, et tapez

 netcardconfig

Une boite de dialogue s'ouvre, répondez :
- obtain address automatically

Puis
Code:
knoppix-terminalserver

Une nouvelle boite de dialogue s'ouvre, répondez :
- ok
- setup configure and restart
- Laissez le &quot;range&quot; d'adresse proposées
- Il vous propose ensuite une liste de drivers de cartes réseau. Choisissez celles qui conviennent à votre réseau (ou toutes, ce que j'ai fait par prudence...)
- décochez &quot;secure: Disable root access on client&quot; - ça peut vous servir, et il semblerait que ça pose des problèmes si c'est laissé coché...
- Laissez vide à la question suivante à moins que vous ne connaissiez exactement les paramètres vidéo de vos clients...
- The Knoppix-terminal server will now be started = YES

Cela va démarrer un certain nombre de services réseaux, dont tftp...
Et créer les fichier dont nous avons besoin pour notre PXE...
Récupérez les fichiers suivants qui se trouvent dans le répertoire /tftpboot/ de votre Knoppix :
miniroot.gz et vmlinuz

Vous copierez ces fichiers dans les répertoires que vous allez créer /var/lib/tftpboot/images/knoppix/511 et 620

Donc vous devriez avoir ceci dans chaque répertoire

miniroot.gz, vmlinuz

Ajoutez les partages NFS au fichier /etc/exports (en lecture seule...)

 /mnt/sdb1/knoppix511 *(ro,no_subtree_check,no_root_squash)
 /mnt/sdb1/knoppix620 *(ro,no_subtree_check,no_root_squash)

Redémarrez le serveur NFS

 # /etc/init.d/nfs-kernel-server restart

Ajoutez les entrées dans votre menu &quot;default&quot; :

 label Knoppix511
  MENU LABEL Knoppix 5.1.1
  kernel images/knoppix/511/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix511 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/511/miniroot.gz quiet BOOT_IMAGE=knoppix
 
 label Knoppix620
  MENU LABEL Knoppix 6.2.0
  kernel images/knoppix/620/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix620 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/620/miniroot.gz quiet BOOT_IMAGE=knoppix

[[Fichier:Capture d'écran - 03082010 - 15-48-39.png]]

=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !

[[Utilisateur:Lol|Lol]] 3 août 2010 à 03:46 (UTC)

Mots cléf : Debian PXE Netboot SystemRescueCd pxeknife HDT Knoppix

[[Category:Serveurs]]</text>
      <sha1>1q7l2j5x44aacllt14k1crl1bp1dfaj</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>4508</id>
      <parentid>4507</parentid>
      <timestamp>2012-10-12T07:59:56Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* DHCP */</comment>
      <text xml:space="preserve" bytes="14456">{{Modèle:stable|PXE}}

== Installation par le réseau - Boot PXE ==

Cet article propose de vous expliquer l’installation et la configuration d'un serveur PXE sur votre Debian.

Le démarrage PXE (Pre-boot eXecution Environment) permet à une station de travail de démarrer depuis le réseau en récupérant une image de système d'exploitation qui se trouve sur votre serveur (Pour commencer: Debian Netinstall, PXEKnife, SysterescuCD, HDT, Knoppix et d'autres à venir)

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /usr/lib/syslinux
:chain.c32
:mboot.c32
:menu.c32
:pxelinux.0
:reboot.c32
:gpxelinux.0
:memdisk
:vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/chain.c32 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste :

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;gpxelinux.0&quot;;
 next-server 192.168.0.1;

Vous avez le choix entre deux amorces : pxelinux.0 ou gpxelinux.0
J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.

Le premier fichier &quot;gpxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse où la machine qui demande à booter va chercher le pxelinux.O; Rien ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;gpxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;isalo.org&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/old-stable ou stable, testing, unstable...

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les information sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 default menu.c32
 prompt 0
 noescape 1
 timeout 300
 
 label 1
  MENU LABEL Etch i386
  kernel images/debian/old-stable/i386/linux
  append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 2
  MENU LABEL Etch amd64
  kernel images/debian/old-stable/amd64/linux
  append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 3
  MENU LABEL Lenny i386
  kernel images/debian/stable/i386/linux
  append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
  MENU LABEL Lenny amd64
  kernel images/debian/stable/amd64/linux
  append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 5
  MENU LABEL Squeeze i386
  kernel images/debian/testing/i386/linux
  append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 7
  MENU LABEL Unstable i386
  kernel images/debian/unstable/i386/linux
  append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 8
  MENU LABEL Unstable amd64
  kernel images/debian/unstable/amd64/linux
  append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --

Le menu ci-dessus nous donnera le résultat suivant :

[[Fichier:Capture d'écran - 03082010 - 07-29-44.png]]

C'est déjà pas mal, mais nous pouvons l'améliorer...

=== Amélioration du menu ===

Avant de poursuivre, et pour ne pas être noyés sous les entrées, nous allons améliorer un peu le menu...

Commençons pas renommer le menu /var/lib/tftpboot/pxelinux.cfg/default en /var/lib/tftpboot/debian.conf

Editons le fichier /var/lib/tftpboot/pxelinux.cfg/default pour y mettre ceci (Explication dessous)

 default vesamenu.c32
 prompt 0
 kbdmap french.kbd
 noescape 1
 timeout 300
 
 label bootlocal
  menu default
  menu label Local boot
  localboot 0
 
 # Vers le sous-menu Debian netboot
 label DebianNetboot
  menu label Debian Netboot ---&gt;
  kernel menu.c32
  append debian.conf
 
 label reboot
   menu label Reboot
   kernel reboot.c32

Ce menu nous donne les avantages suivants :
Clavier en Français en cas d'édition du menu;
Meilleur rendu;
Possibilité de booter sur le premier disque dur (par défaut);
Ouvrir un sous-menu (ici vers debian.conf);
Rebooter la machine.

Nous ajouterons l'entrée suivante au sous-menu /var/lib/tftpboot/debian.conf qui nous permettra de revenir au menu principal :

 # Retour au menu principal
 label rootmenu
  MENU LABEL &lt;---- Menu principal
  kernel vesamenu.c32
  append /pxelinux.cfg/default

Vous avez la base, tout ceci est paramétrable à l'infini...

[[Fichier:Capture d'écran - 03082010 - 08-33-09.png]]

[[Fichier:Capture d'écran - 03082010 - 08-35-29.png]]

=== Le menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrés dans défault

 KBDMAP french.kbd

=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

 /var/lib/tftpboot/images/systemrescue vdir
 total 214072
 -r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
 -r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
 -r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
 -r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

 label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

[[Fichier:Capture d'écran - 03082010 - 09-00-40.png]]

=== pxeknife ===

Petit utilitaire '''très complet''', à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Afin de na pas avoir à refaire les 19 fichiers de &quot;conf&quot; pour refléter votre installation, décompressez l'archive dans /var/lib/tftpboot/pxeknife...

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append pxeknife/pxeknife.conf

[[Fichier:Capture d'écran - 03082010 - 09-16-04.png]]

Super Grub Disk !!!

[[Fichier:Capture d'écran - 03082010 - 09-17-38.png]]

Je vous laisse découvrir l'intégralité des menus pas vous-même ^^

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

 label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

[[Fichier:Capture d'écran - 03082010 - 15-35-34.png]]

=== Une option &quot;reboot&quot; et démarrage sur le disque dur ===

Pour démarrer sur le premier disque dur, ajoutez en début de menu :

 label bootlocal
  MENU DEFAULT
  MENU LABEL Local Boot
  localboot 0

Pour avoir la possibilité de redémarrer, ajoutez en fin de menu :

 label reboot
  menu label Reboot
  kernel reboot.c32


=== Knoppix 511 et 620 ===

Pour utiliser les images ISO de Knoppix, nous allons avoir besoin d'un serveur NFS :

 # apt-get install nfs-kernel-server

Pour autoriser notre réseau à utiliser le serveur NFS, ajoutons la ligne suivante au fichier /etc/hosts.allow

 mountd: 192.168.0.

Créez les répertoires qui vont accueillir les CD

 # mkdir /mnt/sdb1/knoppix511
 # mkdir /mnt/sdb1/knoppix620

Montez les CD et copiez leur contenu dans les répertoires que vous venez de créer

Récuperer les fichiers &quot;amorce&quot;

# Démarrez sur votre CD/ISO knoppix.
# Ouvrez une console, et tapez

 netcardconfig

Une boite de dialogue s'ouvre, répondez :
- obtain address automatically

Puis
Code:
knoppix-terminalserver

Une nouvelle boite de dialogue s'ouvre, répondez :
- ok
- setup configure and restart
- Laissez le &quot;range&quot; d'adresse proposées
- Il vous propose ensuite une liste de drivers de cartes réseau. Choisissez celles qui conviennent à votre réseau (ou toutes, ce que j'ai fait par prudence...)
- décochez &quot;secure: Disable root access on client&quot; - ça peut vous servir, et il semblerait que ça pose des problèmes si c'est laissé coché...
- Laissez vide à la question suivante à moins que vous ne connaissiez exactement les paramètres vidéo de vos clients...
- The Knoppix-terminal server will now be started = YES

Cela va démarrer un certain nombre de services réseaux, dont tftp...
Et créer les fichier dont nous avons besoin pour notre PXE...
Récupérez les fichiers suivants qui se trouvent dans le répertoire /tftpboot/ de votre Knoppix :
miniroot.gz et vmlinuz

Vous copierez ces fichiers dans les répertoires que vous allez créer /var/lib/tftpboot/images/knoppix/511 et 620

Donc vous devriez avoir ceci dans chaque répertoire

miniroot.gz, vmlinuz

Ajoutez les partages NFS au fichier /etc/exports (en lecture seule...)

 /mnt/sdb1/knoppix511 *(ro,no_subtree_check,no_root_squash)
 /mnt/sdb1/knoppix620 *(ro,no_subtree_check,no_root_squash)

Redémarrez le serveur NFS

 # /etc/init.d/nfs-kernel-server restart

Ajoutez les entrées dans votre menu &quot;default&quot; :

 label Knoppix511
  MENU LABEL Knoppix 5.1.1
  kernel images/knoppix/511/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix511 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/511/miniroot.gz quiet BOOT_IMAGE=knoppix
 
 label Knoppix620
  MENU LABEL Knoppix 6.2.0
  kernel images/knoppix/620/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix620 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/620/miniroot.gz quiet BOOT_IMAGE=knoppix

[[Fichier:Capture d'écran - 03082010 - 15-48-39.png]]

=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !

[[Utilisateur:Lol|Lol]] 3 août 2010 à 03:46 (UTC)

Mots cléf : Debian PXE Netboot SystemRescueCd pxeknife HDT Knoppix

[[Category:Serveurs]]</text>
      <sha1>fh9yb57cz2il2ypxnz29k4og8fcc2ro</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5094</id>
      <parentid>4508</parentid>
      <timestamp>2013-04-16T07:21:07Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <comment>Problèmes connus (IPv6 et Fichier Pid sur pxe/1.4.2-7)</comment>
      <text xml:space="preserve" bytes="15735">{{Modèle:stable|PXE}}

== Installation par le réseau - Boot PXE ==

Cet article propose de vous expliquer l’installation et la configuration d'un serveur PXE sur votre Debian.

Le démarrage PXE (Pre-boot eXecution Environment) permet à une station de travail de démarrer depuis le réseau en récupérant une image de système d'exploitation qui se trouve sur votre serveur (Pour commencer: Debian Netinstall, PXEKnife, SysterescuCD, HDT, Knoppix et d'autres à venir)

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /usr/lib/syslinux
:chain.c32
:mboot.c32
:menu.c32
:pxelinux.0
:reboot.c32
:gpxelinux.0
:memdisk
:vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/chain.c32 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste :

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;gpxelinux.0&quot;;
 next-server 192.168.0.1;

Vous avez le choix entre deux amorces : pxelinux.0 ou gpxelinux.0
J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.

Le premier fichier &quot;gpxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse où la machine qui demande à booter va chercher le pxelinux.O; Rien ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;gpxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;isalo.org&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/old-stable ou stable, testing, unstable...

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les information sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 default menu.c32
 prompt 0
 noescape 1
 timeout 300
 
 label 1
  MENU LABEL Etch i386
  kernel images/debian/old-stable/i386/linux
  append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 2
  MENU LABEL Etch amd64
  kernel images/debian/old-stable/amd64/linux
  append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 3
  MENU LABEL Lenny i386
  kernel images/debian/stable/i386/linux
  append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
  MENU LABEL Lenny amd64
  kernel images/debian/stable/amd64/linux
  append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 5
  MENU LABEL Squeeze i386
  kernel images/debian/testing/i386/linux
  append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 7
  MENU LABEL Unstable i386
  kernel images/debian/unstable/i386/linux
  append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 8
  MENU LABEL Unstable amd64
  kernel images/debian/unstable/amd64/linux
  append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --

Le menu ci-dessus nous donnera le résultat suivant :

[[Fichier:Capture d'écran - 03082010 - 07-29-44.png]]

C'est déjà pas mal, mais nous pouvons l'améliorer...

=== Amélioration du menu ===

Avant de poursuivre, et pour ne pas être noyés sous les entrées, nous allons améliorer un peu le menu...

Commençons pas renommer le menu /var/lib/tftpboot/pxelinux.cfg/default en /var/lib/tftpboot/debian.conf

Editons le fichier /var/lib/tftpboot/pxelinux.cfg/default pour y mettre ceci (Explication dessous)

 default vesamenu.c32
 prompt 0
 kbdmap french.kbd
 noescape 1
 timeout 300
 
 label bootlocal
  menu default
  menu label Local boot
  localboot 0
 
 # Vers le sous-menu Debian netboot
 label DebianNetboot
  menu label Debian Netboot ---&gt;
  kernel menu.c32
  append debian.conf
 
 label reboot
   menu label Reboot
   kernel reboot.c32

Ce menu nous donne les avantages suivants :
Clavier en Français en cas d'édition du menu;
Meilleur rendu;
Possibilité de booter sur le premier disque dur (par défaut);
Ouvrir un sous-menu (ici vers debian.conf);
Rebooter la machine.

Nous ajouterons l'entrée suivante au sous-menu /var/lib/tftpboot/debian.conf qui nous permettra de revenir au menu principal :

 # Retour au menu principal
 label rootmenu
  MENU LABEL &lt;---- Menu principal
  kernel vesamenu.c32
  append /pxelinux.cfg/default

Vous avez la base, tout ceci est paramétrable à l'infini...

[[Fichier:Capture d'écran - 03082010 - 08-33-09.png]]

[[Fichier:Capture d'écran - 03082010 - 08-35-29.png]]

=== Le menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrés dans défault

 KBDMAP french.kbd

=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

 /var/lib/tftpboot/images/systemrescue vdir
 total 214072
 -r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
 -r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
 -r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
 -r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

 label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

[[Fichier:Capture d'écran - 03082010 - 09-00-40.png]]

=== pxeknife ===

Petit utilitaire '''très complet''', à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Afin de na pas avoir à refaire les 19 fichiers de &quot;conf&quot; pour refléter votre installation, décompressez l'archive dans /var/lib/tftpboot/pxeknife...

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append pxeknife/pxeknife.conf

[[Fichier:Capture d'écran - 03082010 - 09-16-04.png]]

Super Grub Disk !!!

[[Fichier:Capture d'écran - 03082010 - 09-17-38.png]]

Je vous laisse découvrir l'intégralité des menus pas vous-même ^^

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

 label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

[[Fichier:Capture d'écran - 03082010 - 15-35-34.png]]

=== Une option &quot;reboot&quot; et démarrage sur le disque dur ===

Pour démarrer sur le premier disque dur, ajoutez en début de menu :

 label bootlocal
  MENU DEFAULT
  MENU LABEL Local Boot
  localboot 0

Pour avoir la possibilité de redémarrer, ajoutez en fin de menu :

 label reboot
  menu label Reboot
  kernel reboot.c32


=== Knoppix 511 et 620 ===

Pour utiliser les images ISO de Knoppix, nous allons avoir besoin d'un serveur NFS :

 # apt-get install nfs-kernel-server

Pour autoriser notre réseau à utiliser le serveur NFS, ajoutons la ligne suivante au fichier /etc/hosts.allow

 mountd: 192.168.0.

Créez les répertoires qui vont accueillir les CD

 # mkdir /mnt/sdb1/knoppix511
 # mkdir /mnt/sdb1/knoppix620

Montez les CD et copiez leur contenu dans les répertoires que vous venez de créer

Récuperer les fichiers &quot;amorce&quot;

# Démarrez sur votre CD/ISO knoppix.
# Ouvrez une console, et tapez

 netcardconfig

Une boite de dialogue s'ouvre, répondez :
- obtain address automatically

Puis
Code:
knoppix-terminalserver

Une nouvelle boite de dialogue s'ouvre, répondez :
- ok
- setup configure and restart
- Laissez le &quot;range&quot; d'adresse proposées
- Il vous propose ensuite une liste de drivers de cartes réseau. Choisissez celles qui conviennent à votre réseau (ou toutes, ce que j'ai fait par prudence...)
- décochez &quot;secure: Disable root access on client&quot; - ça peut vous servir, et il semblerait que ça pose des problèmes si c'est laissé coché...
- Laissez vide à la question suivante à moins que vous ne connaissiez exactement les paramètres vidéo de vos clients...
- The Knoppix-terminal server will now be started = YES

Cela va démarrer un certain nombre de services réseaux, dont tftp...
Et créer les fichier dont nous avons besoin pour notre PXE...
Récupérez les fichiers suivants qui se trouvent dans le répertoire /tftpboot/ de votre Knoppix :
miniroot.gz et vmlinuz

Vous copierez ces fichiers dans les répertoires que vous allez créer /var/lib/tftpboot/images/knoppix/511 et 620

Donc vous devriez avoir ceci dans chaque répertoire

miniroot.gz, vmlinuz

Ajoutez les partages NFS au fichier /etc/exports (en lecture seule...)

 /mnt/sdb1/knoppix511 *(ro,no_subtree_check,no_root_squash)
 /mnt/sdb1/knoppix620 *(ro,no_subtree_check,no_root_squash)

Redémarrez le serveur NFS

 # /etc/init.d/nfs-kernel-server restart

Ajoutez les entrées dans votre menu &quot;default&quot; :

 label Knoppix511
  MENU LABEL Knoppix 5.1.1
  kernel images/knoppix/511/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix511 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/511/miniroot.gz quiet BOOT_IMAGE=knoppix
 
 label Knoppix620
  MENU LABEL Knoppix 6.2.0
  kernel images/knoppix/620/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix620 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/620/miniroot.gz quiet BOOT_IMAGE=knoppix

[[Fichier:Capture d'écran - 03082010 - 15-48-39.png]]

=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !

== Problèmes connus ==

=== tftpd-hpa et l'IPv6 ===

Si vous avez desactivé l'IPv6 dans votre kernel, tftpd-hpa qui est compilé pour démarrer sur IPv4 et IPv6 ne démarrera pas.
Solution: re-configurer tftpd-hpa pour qu'il ne démarre que sur IPv4:

 # dpkg-reconfigure tftpd-hpa

[[Fichier:tftpd-hpa et IPv4.png]]

=== PXE ne s'arrête pas convenablement ===

Dans le version version pxe/1.4.2-7 un bug &quot;normal&quot; subsiste (moi je le considère plutôt comme important, mais ce n'est pas moi qui décide...) : [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=657101 Quand on l'arrête, PXE tourne en boucle à l'infini en attendant que le fichier pid disparaisse]

Contournement: Modifier le fichier /etc/init.d/pxe tel que:

Remplacer ceci:
&lt;pre&gt;
wait_no_pid()
{
       while [ -e &quot;$PID&quot; ]
       do
               sleep 1
       done
}
&lt;/pre&gt;

Par cela:
&lt;pre&gt;
wait_no_pid()
  {
          local pid=$(cat &quot;${PID}&quot; 2&gt;/dev/null) || return 0
          local exe=$(readlink &quot;/proc/${pid}/exe&quot; 2&gt;/dev/null) || :
          while [ &quot;${exe}&quot; = &quot;${DAEMON}&quot; ]
          do
                  sleep 1
                  pid=$(cat &quot;${PID}&quot; 2&gt;/dev/null) || return 0
                  exe=$(readlink &quot;/proc/${pid}/exe&quot; 2&gt;/dev/null) || :
          done
          rm -f &quot;${PID}&quot;
  }
&lt;/pre&gt;


[[Utilisateur:Lol|Lol]] 3 août 2010 à 03:46 (UTC)

Mots cléf : Debian PXE Netboot SystemRescueCd pxeknife HDT Knoppix

[[Category:Serveurs]]</text>
      <sha1>ml4a6zw6zqk5aguk7yx2tcj12dey7bs</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5096</id>
      <parentid>5094</parentid>
      <timestamp>2013-04-16T08:17:26Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* PXE ne s'arrête pas convenablement */</comment>
      <text xml:space="preserve" bytes="15727">{{Modèle:stable|PXE}}

== Installation par le réseau - Boot PXE ==

Cet article propose de vous expliquer l’installation et la configuration d'un serveur PXE sur votre Debian.

Le démarrage PXE (Pre-boot eXecution Environment) permet à une station de travail de démarrer depuis le réseau en récupérant une image de système d'exploitation qui se trouve sur votre serveur (Pour commencer: Debian Netinstall, PXEKnife, SysterescuCD, HDT, Knoppix et d'autres à venir)

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /usr/lib/syslinux
:chain.c32
:mboot.c32
:menu.c32
:pxelinux.0
:reboot.c32
:gpxelinux.0
:memdisk
:vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/chain.c32 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste :

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;gpxelinux.0&quot;;
 next-server 192.168.0.1;

Vous avez le choix entre deux amorces : pxelinux.0 ou gpxelinux.0
J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.

Le premier fichier &quot;gpxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse où la machine qui demande à booter va chercher le pxelinux.O; Rien ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;gpxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;isalo.org&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/old-stable ou stable, testing, unstable...

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les information sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 default menu.c32
 prompt 0
 noescape 1
 timeout 300
 
 label 1
  MENU LABEL Etch i386
  kernel images/debian/old-stable/i386/linux
  append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 2
  MENU LABEL Etch amd64
  kernel images/debian/old-stable/amd64/linux
  append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 3
  MENU LABEL Lenny i386
  kernel images/debian/stable/i386/linux
  append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
  MENU LABEL Lenny amd64
  kernel images/debian/stable/amd64/linux
  append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 5
  MENU LABEL Squeeze i386
  kernel images/debian/testing/i386/linux
  append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 7
  MENU LABEL Unstable i386
  kernel images/debian/unstable/i386/linux
  append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 8
  MENU LABEL Unstable amd64
  kernel images/debian/unstable/amd64/linux
  append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --

Le menu ci-dessus nous donnera le résultat suivant :

[[Fichier:Capture d'écran - 03082010 - 07-29-44.png]]

C'est déjà pas mal, mais nous pouvons l'améliorer...

=== Amélioration du menu ===

Avant de poursuivre, et pour ne pas être noyés sous les entrées, nous allons améliorer un peu le menu...

Commençons pas renommer le menu /var/lib/tftpboot/pxelinux.cfg/default en /var/lib/tftpboot/debian.conf

Editons le fichier /var/lib/tftpboot/pxelinux.cfg/default pour y mettre ceci (Explication dessous)

 default vesamenu.c32
 prompt 0
 kbdmap french.kbd
 noescape 1
 timeout 300
 
 label bootlocal
  menu default
  menu label Local boot
  localboot 0
 
 # Vers le sous-menu Debian netboot
 label DebianNetboot
  menu label Debian Netboot ---&gt;
  kernel menu.c32
  append debian.conf
 
 label reboot
   menu label Reboot
   kernel reboot.c32

Ce menu nous donne les avantages suivants :
Clavier en Français en cas d'édition du menu;
Meilleur rendu;
Possibilité de booter sur le premier disque dur (par défaut);
Ouvrir un sous-menu (ici vers debian.conf);
Rebooter la machine.

Nous ajouterons l'entrée suivante au sous-menu /var/lib/tftpboot/debian.conf qui nous permettra de revenir au menu principal :

 # Retour au menu principal
 label rootmenu
  MENU LABEL &lt;---- Menu principal
  kernel vesamenu.c32
  append /pxelinux.cfg/default

Vous avez la base, tout ceci est paramétrable à l'infini...

[[Fichier:Capture d'écran - 03082010 - 08-33-09.png]]

[[Fichier:Capture d'écran - 03082010 - 08-35-29.png]]

=== Le menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrés dans défault

 KBDMAP french.kbd

=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

 /var/lib/tftpboot/images/systemrescue vdir
 total 214072
 -r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
 -r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
 -r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
 -r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

 label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

[[Fichier:Capture d'écran - 03082010 - 09-00-40.png]]

=== pxeknife ===

Petit utilitaire '''très complet''', à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Afin de na pas avoir à refaire les 19 fichiers de &quot;conf&quot; pour refléter votre installation, décompressez l'archive dans /var/lib/tftpboot/pxeknife...

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append pxeknife/pxeknife.conf

[[Fichier:Capture d'écran - 03082010 - 09-16-04.png]]

Super Grub Disk !!!

[[Fichier:Capture d'écran - 03082010 - 09-17-38.png]]

Je vous laisse découvrir l'intégralité des menus pas vous-même ^^

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

 label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

[[Fichier:Capture d'écran - 03082010 - 15-35-34.png]]

=== Une option &quot;reboot&quot; et démarrage sur le disque dur ===

Pour démarrer sur le premier disque dur, ajoutez en début de menu :

 label bootlocal
  MENU DEFAULT
  MENU LABEL Local Boot
  localboot 0

Pour avoir la possibilité de redémarrer, ajoutez en fin de menu :

 label reboot
  menu label Reboot
  kernel reboot.c32


=== Knoppix 511 et 620 ===

Pour utiliser les images ISO de Knoppix, nous allons avoir besoin d'un serveur NFS :

 # apt-get install nfs-kernel-server

Pour autoriser notre réseau à utiliser le serveur NFS, ajoutons la ligne suivante au fichier /etc/hosts.allow

 mountd: 192.168.0.

Créez les répertoires qui vont accueillir les CD

 # mkdir /mnt/sdb1/knoppix511
 # mkdir /mnt/sdb1/knoppix620

Montez les CD et copiez leur contenu dans les répertoires que vous venez de créer

Récuperer les fichiers &quot;amorce&quot;

# Démarrez sur votre CD/ISO knoppix.
# Ouvrez une console, et tapez

 netcardconfig

Une boite de dialogue s'ouvre, répondez :
- obtain address automatically

Puis
Code:
knoppix-terminalserver

Une nouvelle boite de dialogue s'ouvre, répondez :
- ok
- setup configure and restart
- Laissez le &quot;range&quot; d'adresse proposées
- Il vous propose ensuite une liste de drivers de cartes réseau. Choisissez celles qui conviennent à votre réseau (ou toutes, ce que j'ai fait par prudence...)
- décochez &quot;secure: Disable root access on client&quot; - ça peut vous servir, et il semblerait que ça pose des problèmes si c'est laissé coché...
- Laissez vide à la question suivante à moins que vous ne connaissiez exactement les paramètres vidéo de vos clients...
- The Knoppix-terminal server will now be started = YES

Cela va démarrer un certain nombre de services réseaux, dont tftp...
Et créer les fichier dont nous avons besoin pour notre PXE...
Récupérez les fichiers suivants qui se trouvent dans le répertoire /tftpboot/ de votre Knoppix :
miniroot.gz et vmlinuz

Vous copierez ces fichiers dans les répertoires que vous allez créer /var/lib/tftpboot/images/knoppix/511 et 620

Donc vous devriez avoir ceci dans chaque répertoire

miniroot.gz, vmlinuz

Ajoutez les partages NFS au fichier /etc/exports (en lecture seule...)

 /mnt/sdb1/knoppix511 *(ro,no_subtree_check,no_root_squash)
 /mnt/sdb1/knoppix620 *(ro,no_subtree_check,no_root_squash)

Redémarrez le serveur NFS

 # /etc/init.d/nfs-kernel-server restart

Ajoutez les entrées dans votre menu &quot;default&quot; :

 label Knoppix511
  MENU LABEL Knoppix 5.1.1
  kernel images/knoppix/511/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix511 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/511/miniroot.gz quiet BOOT_IMAGE=knoppix
 
 label Knoppix620
  MENU LABEL Knoppix 6.2.0
  kernel images/knoppix/620/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix620 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/620/miniroot.gz quiet BOOT_IMAGE=knoppix

[[Fichier:Capture d'écran - 03082010 - 15-48-39.png]]

=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !

== Problèmes connus ==

=== tftpd-hpa et l'IPv6 ===

Si vous avez desactivé l'IPv6 dans votre kernel, tftpd-hpa qui est compilé pour démarrer sur IPv4 et IPv6 ne démarrera pas.
Solution: re-configurer tftpd-hpa pour qu'il ne démarre que sur IPv4:

 # dpkg-reconfigure tftpd-hpa

[[Fichier:tftpd-hpa et IPv4.png]]

=== PXE ne s'arrête pas convenablement ===

Dans la version pxe/1.4.2-7 un bug &quot;normal&quot; subsiste (moi je le considère plutôt comme important, mais ce n'est pas moi qui décide...) : [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=657101 Quand on l'arrête, PXE tourne en boucle à l'infini en attendant que le fichier pid disparaisse]

Contournement: Modifier le fichier /etc/init.d/pxe tel que:

Remplacer ceci:
&lt;pre&gt;
wait_no_pid()
{
       while [ -e &quot;$PID&quot; ]
       do
               sleep 1
       done
}
&lt;/pre&gt;

Par cela:
&lt;pre&gt;
wait_no_pid()
  {
          local pid=$(cat &quot;${PID}&quot; 2&gt;/dev/null) || return 0
          local exe=$(readlink &quot;/proc/${pid}/exe&quot; 2&gt;/dev/null) || :
          while [ &quot;${exe}&quot; = &quot;${DAEMON}&quot; ]
          do
                  sleep 1
                  pid=$(cat &quot;${PID}&quot; 2&gt;/dev/null) || return 0
                  exe=$(readlink &quot;/proc/${pid}/exe&quot; 2&gt;/dev/null) || :
          done
          rm -f &quot;${PID}&quot;
  }
&lt;/pre&gt;


[[Utilisateur:Lol|Lol]] 3 août 2010 à 03:46 (UTC)

Mots cléf : Debian PXE Netboot SystemRescueCd pxeknife HDT Knoppix

[[Category:Serveurs]]</text>
      <sha1>r7pztsgwgbm9gzk88lgpmyy09j8qn39</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5097</id>
      <parentid>5096</parentid>
      <timestamp>2013-04-16T08:22:04Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Netboot Debian */</comment>
      <text xml:space="preserve" bytes="15728">{{Modèle:stable|PXE}}

== Installation par le réseau - Boot PXE ==

Cet article propose de vous expliquer l’installation et la configuration d'un serveur PXE sur votre Debian.

Le démarrage PXE (Pre-boot eXecution Environment) permet à une station de travail de démarrer depuis le réseau en récupérant une image de système d'exploitation qui se trouve sur votre serveur (Pour commencer: Debian Netinstall, PXEKnife, SysterescuCD, HDT, Knoppix et d'autres à venir)

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /usr/lib/syslinux
:chain.c32
:mboot.c32
:menu.c32
:pxelinux.0
:reboot.c32
:gpxelinux.0
:memdisk
:vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/chain.c32 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste :

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;gpxelinux.0&quot;;
 next-server 192.168.0.1;

Vous avez le choix entre deux amorces : pxelinux.0 ou gpxelinux.0
J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.

Le premier fichier &quot;gpxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse où la machine qui demande à booter va chercher le pxelinux.O; Rien ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;gpxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;isalo.org&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/old-stable ou stable, testing, unstable...

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les informations sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 default menu.c32
 prompt 0
 noescape 1
 timeout 300
 
 label 1
  MENU LABEL Etch i386
  kernel images/debian/old-stable/i386/linux
  append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 2
  MENU LABEL Etch amd64
  kernel images/debian/old-stable/amd64/linux
  append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 3
  MENU LABEL Lenny i386
  kernel images/debian/stable/i386/linux
  append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
  MENU LABEL Lenny amd64
  kernel images/debian/stable/amd64/linux
  append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 5
  MENU LABEL Squeeze i386
  kernel images/debian/testing/i386/linux
  append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 7
  MENU LABEL Unstable i386
  kernel images/debian/unstable/i386/linux
  append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 8
  MENU LABEL Unstable amd64
  kernel images/debian/unstable/amd64/linux
  append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --

Le menu ci-dessus nous donnera le résultat suivant :

[[Fichier:Capture d'écran - 03082010 - 07-29-44.png]]

C'est déjà pas mal, mais nous pouvons l'améliorer...

=== Amélioration du menu ===

Avant de poursuivre, et pour ne pas être noyés sous les entrées, nous allons améliorer un peu le menu...

Commençons pas renommer le menu /var/lib/tftpboot/pxelinux.cfg/default en /var/lib/tftpboot/debian.conf

Editons le fichier /var/lib/tftpboot/pxelinux.cfg/default pour y mettre ceci (Explication dessous)

 default vesamenu.c32
 prompt 0
 kbdmap french.kbd
 noescape 1
 timeout 300
 
 label bootlocal
  menu default
  menu label Local boot
  localboot 0
 
 # Vers le sous-menu Debian netboot
 label DebianNetboot
  menu label Debian Netboot ---&gt;
  kernel menu.c32
  append debian.conf
 
 label reboot
   menu label Reboot
   kernel reboot.c32

Ce menu nous donne les avantages suivants :
Clavier en Français en cas d'édition du menu;
Meilleur rendu;
Possibilité de booter sur le premier disque dur (par défaut);
Ouvrir un sous-menu (ici vers debian.conf);
Rebooter la machine.

Nous ajouterons l'entrée suivante au sous-menu /var/lib/tftpboot/debian.conf qui nous permettra de revenir au menu principal :

 # Retour au menu principal
 label rootmenu
  MENU LABEL &lt;---- Menu principal
  kernel vesamenu.c32
  append /pxelinux.cfg/default

Vous avez la base, tout ceci est paramétrable à l'infini...

[[Fichier:Capture d'écran - 03082010 - 08-33-09.png]]

[[Fichier:Capture d'écran - 03082010 - 08-35-29.png]]

=== Le menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrés dans défault

 KBDMAP french.kbd

=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

 /var/lib/tftpboot/images/systemrescue vdir
 total 214072
 -r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
 -r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
 -r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
 -r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

 label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

[[Fichier:Capture d'écran - 03082010 - 09-00-40.png]]

=== pxeknife ===

Petit utilitaire '''très complet''', à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Afin de na pas avoir à refaire les 19 fichiers de &quot;conf&quot; pour refléter votre installation, décompressez l'archive dans /var/lib/tftpboot/pxeknife...

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append pxeknife/pxeknife.conf

[[Fichier:Capture d'écran - 03082010 - 09-16-04.png]]

Super Grub Disk !!!

[[Fichier:Capture d'écran - 03082010 - 09-17-38.png]]

Je vous laisse découvrir l'intégralité des menus pas vous-même ^^

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

 label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

[[Fichier:Capture d'écran - 03082010 - 15-35-34.png]]

=== Une option &quot;reboot&quot; et démarrage sur le disque dur ===

Pour démarrer sur le premier disque dur, ajoutez en début de menu :

 label bootlocal
  MENU DEFAULT
  MENU LABEL Local Boot
  localboot 0

Pour avoir la possibilité de redémarrer, ajoutez en fin de menu :

 label reboot
  menu label Reboot
  kernel reboot.c32


=== Knoppix 511 et 620 ===

Pour utiliser les images ISO de Knoppix, nous allons avoir besoin d'un serveur NFS :

 # apt-get install nfs-kernel-server

Pour autoriser notre réseau à utiliser le serveur NFS, ajoutons la ligne suivante au fichier /etc/hosts.allow

 mountd: 192.168.0.

Créez les répertoires qui vont accueillir les CD

 # mkdir /mnt/sdb1/knoppix511
 # mkdir /mnt/sdb1/knoppix620

Montez les CD et copiez leur contenu dans les répertoires que vous venez de créer

Récuperer les fichiers &quot;amorce&quot;

# Démarrez sur votre CD/ISO knoppix.
# Ouvrez une console, et tapez

 netcardconfig

Une boite de dialogue s'ouvre, répondez :
- obtain address automatically

Puis
Code:
knoppix-terminalserver

Une nouvelle boite de dialogue s'ouvre, répondez :
- ok
- setup configure and restart
- Laissez le &quot;range&quot; d'adresse proposées
- Il vous propose ensuite une liste de drivers de cartes réseau. Choisissez celles qui conviennent à votre réseau (ou toutes, ce que j'ai fait par prudence...)
- décochez &quot;secure: Disable root access on client&quot; - ça peut vous servir, et il semblerait que ça pose des problèmes si c'est laissé coché...
- Laissez vide à la question suivante à moins que vous ne connaissiez exactement les paramètres vidéo de vos clients...
- The Knoppix-terminal server will now be started = YES

Cela va démarrer un certain nombre de services réseaux, dont tftp...
Et créer les fichier dont nous avons besoin pour notre PXE...
Récupérez les fichiers suivants qui se trouvent dans le répertoire /tftpboot/ de votre Knoppix :
miniroot.gz et vmlinuz

Vous copierez ces fichiers dans les répertoires que vous allez créer /var/lib/tftpboot/images/knoppix/511 et 620

Donc vous devriez avoir ceci dans chaque répertoire

miniroot.gz, vmlinuz

Ajoutez les partages NFS au fichier /etc/exports (en lecture seule...)

 /mnt/sdb1/knoppix511 *(ro,no_subtree_check,no_root_squash)
 /mnt/sdb1/knoppix620 *(ro,no_subtree_check,no_root_squash)

Redémarrez le serveur NFS

 # /etc/init.d/nfs-kernel-server restart

Ajoutez les entrées dans votre menu &quot;default&quot; :

 label Knoppix511
  MENU LABEL Knoppix 5.1.1
  kernel images/knoppix/511/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix511 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/511/miniroot.gz quiet BOOT_IMAGE=knoppix
 
 label Knoppix620
  MENU LABEL Knoppix 6.2.0
  kernel images/knoppix/620/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix620 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/620/miniroot.gz quiet BOOT_IMAGE=knoppix

[[Fichier:Capture d'écran - 03082010 - 15-48-39.png]]

=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !

== Problèmes connus ==

=== tftpd-hpa et l'IPv6 ===

Si vous avez desactivé l'IPv6 dans votre kernel, tftpd-hpa qui est compilé pour démarrer sur IPv4 et IPv6 ne démarrera pas.
Solution: re-configurer tftpd-hpa pour qu'il ne démarre que sur IPv4:

 # dpkg-reconfigure tftpd-hpa

[[Fichier:tftpd-hpa et IPv4.png]]

=== PXE ne s'arrête pas convenablement ===

Dans la version pxe/1.4.2-7 un bug &quot;normal&quot; subsiste (moi je le considère plutôt comme important, mais ce n'est pas moi qui décide...) : [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=657101 Quand on l'arrête, PXE tourne en boucle à l'infini en attendant que le fichier pid disparaisse]

Contournement: Modifier le fichier /etc/init.d/pxe tel que:

Remplacer ceci:
&lt;pre&gt;
wait_no_pid()
{
       while [ -e &quot;$PID&quot; ]
       do
               sleep 1
       done
}
&lt;/pre&gt;

Par cela:
&lt;pre&gt;
wait_no_pid()
  {
          local pid=$(cat &quot;${PID}&quot; 2&gt;/dev/null) || return 0
          local exe=$(readlink &quot;/proc/${pid}/exe&quot; 2&gt;/dev/null) || :
          while [ &quot;${exe}&quot; = &quot;${DAEMON}&quot; ]
          do
                  sleep 1
                  pid=$(cat &quot;${PID}&quot; 2&gt;/dev/null) || return 0
                  exe=$(readlink &quot;/proc/${pid}/exe&quot; 2&gt;/dev/null) || :
          done
          rm -f &quot;${PID}&quot;
  }
&lt;/pre&gt;


[[Utilisateur:Lol|Lol]] 3 août 2010 à 03:46 (UTC)

Mots cléf : Debian PXE Netboot SystemRescueCd pxeknife HDT Knoppix

[[Category:Serveurs]]</text>
      <sha1>il83ec9q9rj13lyfor4l2cugmpljhwd</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5206</id>
      <parentid>5097</parentid>
      <timestamp>2013-05-23T08:51:10Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Le menu avec un clavier Français */</comment>
      <text xml:space="preserve" bytes="15727">{{Modèle:stable|PXE}}

== Installation par le réseau - Boot PXE ==

Cet article propose de vous expliquer l’installation et la configuration d'un serveur PXE sur votre Debian.

Le démarrage PXE (Pre-boot eXecution Environment) permet à une station de travail de démarrer depuis le réseau en récupérant une image de système d'exploitation qui se trouve sur votre serveur (Pour commencer: Debian Netinstall, PXEKnife, SysterescuCD, HDT, Knoppix et d'autres à venir)

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /usr/lib/syslinux
:chain.c32
:mboot.c32
:menu.c32
:pxelinux.0
:reboot.c32
:gpxelinux.0
:memdisk
:vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/chain.c32 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste :

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;gpxelinux.0&quot;;
 next-server 192.168.0.1;

Vous avez le choix entre deux amorces : pxelinux.0 ou gpxelinux.0
J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.

Le premier fichier &quot;gpxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse où la machine qui demande à booter va chercher le pxelinux.O; Rien ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;gpxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;isalo.org&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/old-stable ou stable, testing, unstable...

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les informations sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 default menu.c32
 prompt 0
 noescape 1
 timeout 300
 
 label 1
  MENU LABEL Etch i386
  kernel images/debian/old-stable/i386/linux
  append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 2
  MENU LABEL Etch amd64
  kernel images/debian/old-stable/amd64/linux
  append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 3
  MENU LABEL Lenny i386
  kernel images/debian/stable/i386/linux
  append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
  MENU LABEL Lenny amd64
  kernel images/debian/stable/amd64/linux
  append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 5
  MENU LABEL Squeeze i386
  kernel images/debian/testing/i386/linux
  append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 7
  MENU LABEL Unstable i386
  kernel images/debian/unstable/i386/linux
  append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 8
  MENU LABEL Unstable amd64
  kernel images/debian/unstable/amd64/linux
  append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --

Le menu ci-dessus nous donnera le résultat suivant :

[[Fichier:Capture d'écran - 03082010 - 07-29-44.png]]

C'est déjà pas mal, mais nous pouvons l'améliorer...

=== Amélioration du menu ===

Avant de poursuivre, et pour ne pas être noyés sous les entrées, nous allons améliorer un peu le menu...

Commençons pas renommer le menu /var/lib/tftpboot/pxelinux.cfg/default en /var/lib/tftpboot/debian.conf

Editons le fichier /var/lib/tftpboot/pxelinux.cfg/default pour y mettre ceci (Explication dessous)

 default vesamenu.c32
 prompt 0
 kbdmap french.kbd
 noescape 1
 timeout 300
 
 label bootlocal
  menu default
  menu label Local boot
  localboot 0
 
 # Vers le sous-menu Debian netboot
 label DebianNetboot
  menu label Debian Netboot ---&gt;
  kernel menu.c32
  append debian.conf
 
 label reboot
   menu label Reboot
   kernel reboot.c32

Ce menu nous donne les avantages suivants :
Clavier en Français en cas d'édition du menu;
Meilleur rendu;
Possibilité de booter sur le premier disque dur (par défaut);
Ouvrir un sous-menu (ici vers debian.conf);
Rebooter la machine.

Nous ajouterons l'entrée suivante au sous-menu /var/lib/tftpboot/debian.conf qui nous permettra de revenir au menu principal :

 # Retour au menu principal
 label rootmenu
  MENU LABEL &lt;---- Menu principal
  kernel vesamenu.c32
  append /pxelinux.cfg/default

Vous avez la base, tout ceci est paramétrable à l'infini...

[[Fichier:Capture d'écran - 03082010 - 08-33-09.png]]

[[Fichier:Capture d'écran - 03082010 - 08-35-29.png]]

=== Le menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrée dans défaut

 KBDMAP french.kbd

=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

 /var/lib/tftpboot/images/systemrescue vdir
 total 214072
 -r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
 -r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
 -r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
 -r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

 label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

[[Fichier:Capture d'écran - 03082010 - 09-00-40.png]]

=== pxeknife ===

Petit utilitaire '''très complet''', à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Afin de na pas avoir à refaire les 19 fichiers de &quot;conf&quot; pour refléter votre installation, décompressez l'archive dans /var/lib/tftpboot/pxeknife...

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append pxeknife/pxeknife.conf

[[Fichier:Capture d'écran - 03082010 - 09-16-04.png]]

Super Grub Disk !!!

[[Fichier:Capture d'écran - 03082010 - 09-17-38.png]]

Je vous laisse découvrir l'intégralité des menus pas vous-même ^^

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

 label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

[[Fichier:Capture d'écran - 03082010 - 15-35-34.png]]

=== Une option &quot;reboot&quot; et démarrage sur le disque dur ===

Pour démarrer sur le premier disque dur, ajoutez en début de menu :

 label bootlocal
  MENU DEFAULT
  MENU LABEL Local Boot
  localboot 0

Pour avoir la possibilité de redémarrer, ajoutez en fin de menu :

 label reboot
  menu label Reboot
  kernel reboot.c32


=== Knoppix 511 et 620 ===

Pour utiliser les images ISO de Knoppix, nous allons avoir besoin d'un serveur NFS :

 # apt-get install nfs-kernel-server

Pour autoriser notre réseau à utiliser le serveur NFS, ajoutons la ligne suivante au fichier /etc/hosts.allow

 mountd: 192.168.0.

Créez les répertoires qui vont accueillir les CD

 # mkdir /mnt/sdb1/knoppix511
 # mkdir /mnt/sdb1/knoppix620

Montez les CD et copiez leur contenu dans les répertoires que vous venez de créer

Récuperer les fichiers &quot;amorce&quot;

# Démarrez sur votre CD/ISO knoppix.
# Ouvrez une console, et tapez

 netcardconfig

Une boite de dialogue s'ouvre, répondez :
- obtain address automatically

Puis
Code:
knoppix-terminalserver

Une nouvelle boite de dialogue s'ouvre, répondez :
- ok
- setup configure and restart
- Laissez le &quot;range&quot; d'adresse proposées
- Il vous propose ensuite une liste de drivers de cartes réseau. Choisissez celles qui conviennent à votre réseau (ou toutes, ce que j'ai fait par prudence...)
- décochez &quot;secure: Disable root access on client&quot; - ça peut vous servir, et il semblerait que ça pose des problèmes si c'est laissé coché...
- Laissez vide à la question suivante à moins que vous ne connaissiez exactement les paramètres vidéo de vos clients...
- The Knoppix-terminal server will now be started = YES

Cela va démarrer un certain nombre de services réseaux, dont tftp...
Et créer les fichier dont nous avons besoin pour notre PXE...
Récupérez les fichiers suivants qui se trouvent dans le répertoire /tftpboot/ de votre Knoppix :
miniroot.gz et vmlinuz

Vous copierez ces fichiers dans les répertoires que vous allez créer /var/lib/tftpboot/images/knoppix/511 et 620

Donc vous devriez avoir ceci dans chaque répertoire

miniroot.gz, vmlinuz

Ajoutez les partages NFS au fichier /etc/exports (en lecture seule...)

 /mnt/sdb1/knoppix511 *(ro,no_subtree_check,no_root_squash)
 /mnt/sdb1/knoppix620 *(ro,no_subtree_check,no_root_squash)

Redémarrez le serveur NFS

 # /etc/init.d/nfs-kernel-server restart

Ajoutez les entrées dans votre menu &quot;default&quot; :

 label Knoppix511
  MENU LABEL Knoppix 5.1.1
  kernel images/knoppix/511/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix511 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/511/miniroot.gz quiet BOOT_IMAGE=knoppix
 
 label Knoppix620
  MENU LABEL Knoppix 6.2.0
  kernel images/knoppix/620/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix620 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/620/miniroot.gz quiet BOOT_IMAGE=knoppix

[[Fichier:Capture d'écran - 03082010 - 15-48-39.png]]

=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !

== Problèmes connus ==

=== tftpd-hpa et l'IPv6 ===

Si vous avez desactivé l'IPv6 dans votre kernel, tftpd-hpa qui est compilé pour démarrer sur IPv4 et IPv6 ne démarrera pas.
Solution: re-configurer tftpd-hpa pour qu'il ne démarre que sur IPv4:

 # dpkg-reconfigure tftpd-hpa

[[Fichier:tftpd-hpa et IPv4.png]]

=== PXE ne s'arrête pas convenablement ===

Dans la version pxe/1.4.2-7 un bug &quot;normal&quot; subsiste (moi je le considère plutôt comme important, mais ce n'est pas moi qui décide...) : [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=657101 Quand on l'arrête, PXE tourne en boucle à l'infini en attendant que le fichier pid disparaisse]

Contournement: Modifier le fichier /etc/init.d/pxe tel que:

Remplacer ceci:
&lt;pre&gt;
wait_no_pid()
{
       while [ -e &quot;$PID&quot; ]
       do
               sleep 1
       done
}
&lt;/pre&gt;

Par cela:
&lt;pre&gt;
wait_no_pid()
  {
          local pid=$(cat &quot;${PID}&quot; 2&gt;/dev/null) || return 0
          local exe=$(readlink &quot;/proc/${pid}/exe&quot; 2&gt;/dev/null) || :
          while [ &quot;${exe}&quot; = &quot;${DAEMON}&quot; ]
          do
                  sleep 1
                  pid=$(cat &quot;${PID}&quot; 2&gt;/dev/null) || return 0
                  exe=$(readlink &quot;/proc/${pid}/exe&quot; 2&gt;/dev/null) || :
          done
          rm -f &quot;${PID}&quot;
  }
&lt;/pre&gt;


[[Utilisateur:Lol|Lol]] 3 août 2010 à 03:46 (UTC)

Mots cléf : Debian PXE Netboot SystemRescueCd pxeknife HDT Knoppix

[[Category:Serveurs]]</text>
      <sha1>4cgbhskmkt5lvcxe3dpanxy9no2p8fr</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>5212</id>
      <parentid>5206</parentid>
      <timestamp>2013-05-25T07:57:03Z</timestamp>
      <contributor>
        <username>Lol</username>
        <id>2</id>
      </contributor>
      <minor/>
      <comment>/* Le menu avec un clavier Français */</comment>
      <text xml:space="preserve" bytes="15769">{{Modèle:stable|PXE}}

== Installation par le réseau - Boot PXE ==

Cet article propose de vous expliquer l’installation et la configuration d'un serveur PXE sur votre Debian.

Le démarrage PXE (Pre-boot eXecution Environment) permet à une station de travail de démarrer depuis le réseau en récupérant une image de système d'exploitation qui se trouve sur votre serveur (Pour commencer: Debian Netinstall, PXEKnife, SysterescuCD, HDT, Knoppix et d'autres à venir)

=== Installation ===

 # aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau.
Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

 # aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

 #Defaults for tftpd-hpa
 RUN_DAEMON=&quot;yes&quot;
 OPTIONS=&quot;-l -s /var/lib/tftpboot&quot;

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

 # netstat -uap | grep tftp 
 udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le &quot;tftp&quot; ne tourne pas...

=== Configuration ===


==== PXE ====

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /usr/lib/syslinux
:chain.c32
:mboot.c32
:menu.c32
:pxelinux.0
:reboot.c32
:gpxelinux.0
:memdisk
:vesamenu.c32

Vers /var/lib/tftpboot

 cp /usr/lib/syslinux/chain.c32 /var/lib/tftpboot/
 etc...

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste :

 # which interface to use
 interface=eth0
 default_address=192.168.0.1

==== DHCP ====

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but...
Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des &quot;baux&quot;.

Sauvegarde préalable à toute modification :

 # cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

 filename &quot;gpxelinux.0&quot;;
 next-server 192.168.0.1;

Vous avez le choix entre deux amorces : pxelinux.0 ou gpxelinux.0
J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.

Le premier fichier &quot;gpxelinux.0&quot; est l'amorce réseau.
&quot;next-server&quot; est l'adresse où la machine qui demande à booter va chercher le pxelinux.O; Rien ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

 # nano /etc/dhcp3/dhcpd.conf

 # Private Network
 subnet 192.168.0.0 netmask 255.255.255.0 {
         filename &quot;gpxelinux.0&quot;;
         next-server 192.168.0.1;
         deny unknown-clients;
         option ntp-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name &quot;isalo.org&quot;;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option routers 192.168.0.1;
 pool {
                 deny unknown-clients;
                 range 192.168.0.2 192.168.0.104;
                 }
 [...]
 bla-bla

Vous remarquerez l'option &quot;deny unknown-clients;&quot;. Supprimez pour commencer si vous n'avez pas déclaré vos clients &quot;connus&quot; comme ceci : 
 # debianne
 host debianne.beronono.com {
 hardware ethernet 00:0d:61:94:43:f0;
 fixed-address 192.168.0.5;
 }

=== Netboot Debian ===

Vous trouverez toutes les images nécessaires [http://www.debian.org/distrib/netinst ICI]

Récupérez les &quot;netboot&quot; des distributions qui vous intéressent :

 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
 wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
 etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot
 # mkdir /var/lib/tftpboot/images
 # mkdir /var/lib/tftpboot/images/debian
 # mkdir /var/lib/tftpboot/images/debian/old-stable
 # mkdir /var/lib/tftpboot/images/debian/old-stable/i386
 # mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]
etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/old-stable ou stable, testing, unstable...

Créez et configurez le fichier &quot;/pxelinux.cfg/default&quot;

 # mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les informations sur vos différentes netboot)

 # nano /var/lib/tftpboot/pxelinux.cfg/default

 default menu.c32
 prompt 0
 noescape 1
 timeout 300
 
 label 1
  MENU LABEL Etch i386
  kernel images/debian/old-stable/i386/linux
  append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 2
  MENU LABEL Etch amd64
  kernel images/debian/old-stable/amd64/linux
  append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 3
  MENU LABEL Lenny i386
  kernel images/debian/stable/i386/linux
  append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 4
  MENU LABEL Lenny amd64
  kernel images/debian/stable/amd64/linux
  append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 5
  MENU LABEL Squeeze i386
  kernel images/debian/testing/i386/linux
  append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
 
 label 7
  MENU LABEL Unstable i386
  kernel images/debian/unstable/i386/linux
  append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
 label 8
  MENU LABEL Unstable amd64
  kernel images/debian/unstable/amd64/linux
  append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --

Le menu ci-dessus nous donnera le résultat suivant :

[[Fichier:Capture d'écran - 03082010 - 07-29-44.png]]

C'est déjà pas mal, mais nous pouvons l'améliorer...

=== Amélioration du menu ===

Avant de poursuivre, et pour ne pas être noyés sous les entrées, nous allons améliorer un peu le menu...

Commençons pas renommer le menu /var/lib/tftpboot/pxelinux.cfg/default en /var/lib/tftpboot/debian.conf

Editons le fichier /var/lib/tftpboot/pxelinux.cfg/default pour y mettre ceci (Explication dessous)

 default vesamenu.c32
 prompt 0
 kbdmap french.kbd
 noescape 1
 timeout 300
 
 label bootlocal
  menu default
  menu label Local boot
  localboot 0
 
 # Vers le sous-menu Debian netboot
 label DebianNetboot
  menu label Debian Netboot ---&gt;
  kernel menu.c32
  append debian.conf
 
 label reboot
   menu label Reboot
   kernel reboot.c32

Ce menu nous donne les avantages suivants :
Clavier en Français en cas d'édition du menu;
Meilleur rendu;
Possibilité de booter sur le premier disque dur (par défaut);
Ouvrir un sous-menu (ici vers debian.conf);
Rebooter la machine.

Nous ajouterons l'entrée suivante au sous-menu /var/lib/tftpboot/debian.conf qui nous permettra de revenir au menu principal :

 # Retour au menu principal
 label rootmenu
  MENU LABEL &lt;---- Menu principal
  kernel vesamenu.c32
  append /pxelinux.cfg/default

Vous avez la base, tout ceci est paramétrable à l'infini...

[[Fichier:Capture d'écran - 03082010 - 08-33-09.png]]

[[Fichier:Capture d'écran - 03082010 - 08-35-29.png]]

=== Le menu avec un clavier Français ===

http://thefredsite.free.fr/linux.php?id=56

Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix

Ajouter cette entrée dans le fichier /var/lib/tftpboot/pxelinux.cfg/default

 KBDMAP french.kbd

=== RescueSystemCd ===

# Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
# Monter l'image iso
# Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

 /var/lib/tftpboot/images/systemrescue vdir
 total 214072
 -r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
 -r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
 -r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
 -r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

 label systemrescue
  menu label System Rescue
  kernel images/systemrescue/isolinux/rescuecd
  append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
  initrd images/systemrescue/isolinux/initram.igz

[[Fichier:Capture d'écran - 03082010 - 09-00-40.png]]

=== pxeknife ===

Petit utilitaire '''très complet''', à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Afin de na pas avoir à refaire les 19 fichiers de &quot;conf&quot; pour refléter votre installation, décompressez l'archive dans /var/lib/tftpboot/pxeknife...

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

 #load pxe knife
 LABEL pxeknife
  MENU LABEL PXE Knife ---&gt;
  kernel menu.c32
  append pxeknife/pxeknife.conf

[[Fichier:Capture d'écran - 03082010 - 09-16-04.png]]

Super Grub Disk !!!

[[Fichier:Capture d'écran - 03082010 - 09-17-38.png]]

Je vous laisse découvrir l'intégralité des menus pas vous-même ^^

=== hdt ===

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

 $ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images
Et d'ajouter les lignes suivantes à notre menu (default)

 label hdt
  menu label Hardware Detection Tool Floppy
  kernel memdisk
  initrd images/hdt-0.3.6.img

[[Fichier:Capture d'écran - 03082010 - 15-35-34.png]]

=== Une option &quot;reboot&quot; et démarrage sur le disque dur ===

Pour démarrer sur le premier disque dur, ajoutez en début de menu :

 label bootlocal
  MENU DEFAULT
  MENU LABEL Local Boot
  localboot 0

Pour avoir la possibilité de redémarrer, ajoutez en fin de menu :

 label reboot
  menu label Reboot
  kernel reboot.c32


=== Knoppix 511 et 620 ===

Pour utiliser les images ISO de Knoppix, nous allons avoir besoin d'un serveur NFS :

 # apt-get install nfs-kernel-server

Pour autoriser notre réseau à utiliser le serveur NFS, ajoutons la ligne suivante au fichier /etc/hosts.allow

 mountd: 192.168.0.

Créez les répertoires qui vont accueillir les CD

 # mkdir /mnt/sdb1/knoppix511
 # mkdir /mnt/sdb1/knoppix620

Montez les CD et copiez leur contenu dans les répertoires que vous venez de créer

Récuperer les fichiers &quot;amorce&quot;

# Démarrez sur votre CD/ISO knoppix.
# Ouvrez une console, et tapez

 netcardconfig

Une boite de dialogue s'ouvre, répondez :
- obtain address automatically

Puis
Code:
knoppix-terminalserver

Une nouvelle boite de dialogue s'ouvre, répondez :
- ok
- setup configure and restart
- Laissez le &quot;range&quot; d'adresse proposées
- Il vous propose ensuite une liste de drivers de cartes réseau. Choisissez celles qui conviennent à votre réseau (ou toutes, ce que j'ai fait par prudence...)
- décochez &quot;secure: Disable root access on client&quot; - ça peut vous servir, et il semblerait que ça pose des problèmes si c'est laissé coché...
- Laissez vide à la question suivante à moins que vous ne connaissiez exactement les paramètres vidéo de vos clients...
- The Knoppix-terminal server will now be started = YES

Cela va démarrer un certain nombre de services réseaux, dont tftp...
Et créer les fichier dont nous avons besoin pour notre PXE...
Récupérez les fichiers suivants qui se trouvent dans le répertoire /tftpboot/ de votre Knoppix :
miniroot.gz et vmlinuz

Vous copierez ces fichiers dans les répertoires que vous allez créer /var/lib/tftpboot/images/knoppix/511 et 620

Donc vous devriez avoir ceci dans chaque répertoire

miniroot.gz, vmlinuz

Ajoutez les partages NFS au fichier /etc/exports (en lecture seule...)

 /mnt/sdb1/knoppix511 *(ro,no_subtree_check,no_root_squash)
 /mnt/sdb1/knoppix620 *(ro,no_subtree_check,no_root_squash)

Redémarrez le serveur NFS

 # /etc/init.d/nfs-kernel-server restart

Ajoutez les entrées dans votre menu &quot;default&quot; :

 label Knoppix511
  MENU LABEL Knoppix 5.1.1
  kernel images/knoppix/511/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix511 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/511/miniroot.gz quiet BOOT_IMAGE=knoppix
 
 label Knoppix620
  MENU LABEL Knoppix 6.2.0
  kernel images/knoppix/620/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix620 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/620/miniroot.gz quiet BOOT_IMAGE=knoppix

[[Fichier:Capture d'écran - 03082010 - 15-48-39.png]]

=== D'autres entrées... ===

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !

== Problèmes connus ==

=== tftpd-hpa et l'IPv6 ===

Si vous avez desactivé l'IPv6 dans votre kernel, tftpd-hpa qui est compilé pour démarrer sur IPv4 et IPv6 ne démarrera pas.
Solution: re-configurer tftpd-hpa pour qu'il ne démarre que sur IPv4:

 # dpkg-reconfigure tftpd-hpa

[[Fichier:tftpd-hpa et IPv4.png]]

=== PXE ne s'arrête pas convenablement ===

Dans la version pxe/1.4.2-7 un bug &quot;normal&quot; subsiste (moi je le considère plutôt comme important, mais ce n'est pas moi qui décide...) : [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=657101 Quand on l'arrête, PXE tourne en boucle à l'infini en attendant que le fichier pid disparaisse]

Contournement: Modifier le fichier /etc/init.d/pxe tel que:

Remplacer ceci:
&lt;pre&gt;
wait_no_pid()
{
       while [ -e &quot;$PID&quot; ]
       do
               sleep 1
       done
}
&lt;/pre&gt;

Par cela:
&lt;pre&gt;
wait_no_pid()
  {
          local pid=$(cat &quot;${PID}&quot; 2&gt;/dev/null) || return 0
          local exe=$(readlink &quot;/proc/${pid}/exe&quot; 2&gt;/dev/null) || :
          while [ &quot;${exe}&quot; = &quot;${DAEMON}&quot; ]
          do
                  sleep 1
                  pid=$(cat &quot;${PID}&quot; 2&gt;/dev/null) || return 0
                  exe=$(readlink &quot;/proc/${pid}/exe&quot; 2&gt;/dev/null) || :
          done
          rm -f &quot;${PID}&quot;
  }
&lt;/pre&gt;


[[Utilisateur:Lol|Lol]] 3 août 2010 à 03:46 (UTC)

Mots cléf : Debian PXE Netboot SystemRescueCd pxeknife HDT Knoppix

[[Category:Serveurs]]</text>
      <sha1>stmuiukhm4e129hzh7ur7ybpp58bxic</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
  <page>
    <title>Parefeu Simplifié</title>
    <ns>0</ns>
    <id>841</id>
    <revision>
      <id>3413</id>
      <timestamp>2011-08-28T12:21:21Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <comment>Page créée avec « == Introduction ==  La méthode proposée [[Netfilter/Iptables_introduction | ici]] pose parfois souci lors d'un changement de version du noyau, qui ne comprends pas les règ... »</comment>
      <text xml:space="preserve" bytes="6152">== Introduction ==

La méthode proposée [[Netfilter/Iptables_introduction | ici]] pose parfois souci lors d'un changement de version du noyau, qui ne comprends pas les règles enregistrées avec iptables-save comme il faut.

Dans la suite, vous trouverez un script permettant d'établir les règles à chaque démarrage. De plus, ce script ajoute par défaut un enregistrement des erreurs dans les logs, ce qui facilite la surveillance avec [[ Logwatch | logwatch ]] par exemple.
Si à l'avenir vous souhaitez ajoutez ou supprimer certaines règles, vous verrez que le script est construit de façon à faciliter ce genre d'opération.

== Le script ==

&lt;code&gt;#!/bin/sh

### BEGIN INIT INFO
# Provides:           mon_parefeu
# Required-Start:     $local_fs 
# Should-Start:
# Required-Stop:      $local_fs 
# Should-Stop:
# X-Start-Before:     $network
# X-Stop-After:       $network
# Default-Start:      2 3 4 5 
# Default-Stop:       0 1 6
# Short-description:  Configure le parefeu
# Description:        Met en place les règles iptables.
### END INIT INFO

# Exemple de configuration de pare-feu
#
# Défauts :
# - Cette configuration s'applique à toutes les interfaces réseau.
#   Si vous voulez ne restreindre cela qu'à une interface donnée,
#   utilisez '-i INTERFACE' dans les appels iptables.
#
# - Par défaut, le script autorise tout en sortie. Pour changer ce comportement
#   veuillez commenter la ligne 	/sbin/iptables -t filter -P OUTPUT ACCEPT
#   et décommenter les lignes 		#REMOTE_TCP_SERVICES=&quot;&quot; 
#                             		#REMOTE_UDP_SERVICES=&quot;&quot; 
#   ainsi que les blocs suivant : 	#if [ -n &quot;$REMOTE_TCP_SERVICES&quot; ] ; then
#   et                                  #if [ -n &quot;$REMOTE_UDP_SERVICES&quot; ] ; then
#
# description: Active/Désactive le pare-feu au démarrage
#
#---------------------------------------------------------------

PATH=/bin:/sbin:/usr/bin:/usr/sbin

# Services que le systèmes offrira au réseau, à séparer avec des espaces
# ftp : 21, ssh : 22, serveur web : 80, cups : 632, jabber : 5222
TCP_SERVICES=&quot;&quot; 
UDP_SERVICES=&quot;&quot;
# Services que le système utilisera du réseau
# Décommenter ces lignes pour limiter les services en sortie (défaut : autorise tout en sortie)
#REMOTE_TCP_SERVICES=&quot;&quot; 
#REMOTE_UDP_SERVICES=&quot;&quot; 

if ! [ -x /sbin/iptables ]; then  
	exit 0
fi

fw_start () {

# Vidage
	/sbin/iptables -t filter -F
	/sbin/iptables -t filter -X
	/sbin/iptables -t nat -F
	/sbin/iptables -t nat -X 
	/sbin/iptables -t mangle -F
	/sbin/iptables -t mangle -X 

	echo &quot;Parefeu - Suppression des règles : [OK]&quot;

# Interdictions
	/sbin/iptables -t filter -P INPUT DROP
	/sbin/iptables -t filter -P FORWARD DROP
	/sbin/iptables -t filter -P OUTPUT DROP

	echo &quot;Parefeu - interdictions générales établies : [OK]&quot;

# Loopback
	/sbin/iptables -t filter -A INPUT -i lo -j ACCEPT
	/sbin/iptables -t filter -A INPUT -i lo -j ACCEPT

# Trafic d'entrée :
	/sbin/iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Refus du ping
	/sbin/iptables -t filter -A INPUT -p icmp -j LOG
	/sbin/iptables -t filter -A INPUT -p icmp -j DROP

# Sortie autorisée, 
# à commenter si seuls certains services doivent être autorisés en sortie.
	/sbin/iptables -t filter -P OUTPUT ACCEPT

# Services à autoriser en entrée
	if [ -n &quot;$TCP_SERVICES&quot; ] ; then
		for PORT in $TCP_SERVICES; do
			/sbin/iptables -A INPUT -p tcp --dport ${PORT} -j ACCEPT
		done
	fi
	if [ -n &quot;$UDP_SERVICES&quot; ] ; then
		for PORT in $UDP_SERVICES; do
			/sbin/iptables -A INPUT -p udp --dport ${PORT} -j ACCEPT
		done
	fi

# Décommenter les lignes suivantes pour n'autoriser que certains
# services en sortie

	#if [ -n &quot;$REMOTE_TCP_SERVICES&quot; ] ; then
	#	for PORT in $REMOTE_TCP_SERVICES; do
	#		/sbin/iptables -A OUTPUT -p tcp --dport ${PORT} -j ACCEPT
	#	done
	#fi
	#if [ -n &quot;$REMOTE_UDP_SERVICES&quot; ] ; then
	#	for PORT in $REMOTE_UDP_SERVICES; do
	#		/sbin/iptables -A OUTPUT -p udp --dport ${PORT} -j ACCEPT
	#	done
	#fi

	echo &quot;Parefeu - Mise en place des règles : [OK]&quot;

# Décommenter les lignes après les traits
# pour une machine faisant office de routeur avec NAT
#
# ethx correspond à l'interface du LAN
# ethy correspond à l'interface reliée à la truc-box
# -------------------------------------------

	#/sbin/iptables -A INPUT -i ethx -j ACCEPT
	#/sbin/iptables -A INPUT -p icmp -j ACCEPT
	#/sbin/iptables -A FORWARD -i ethy -o ethx -m state --state RELATED,ESTABLISHED -j ACCEPT
	#/sbin/iptables -A FORWARD -o ethy -j ACCEPT
	#/sbin/iptables -t nat -A POSTROUTING -o ethy -j MASQUERADE

	#echo &quot;Parefeu - Routeur avec NAT : [OK]&quot;

# Toutes les autres connexions sont enregistrées dans syslog
	#/sbin/iptables -t filter -A OUTPUT -j LOG
	/sbin/iptables -t filter -A INPUT -j LOG --log-level=4

	echo &quot;Parefeu - Logging : [OK]&quot;
}

fw_stop () {
	/sbin/iptables -F
	/sbin/iptables -t nat -F
	/sbin/iptables -t mangle -F
	/sbin/iptables -P INPUT DROP
	/sbin/iptables -P FORWARD DROP
	/sbin/iptables -P OUTPUT ACCEPT
}

fw_clear () {
	/sbin/iptables -t filter -F
	/sbin/iptables -t nat -F
	/sbin/iptables -t mangle -F
	/sbin/iptables -t raw -F
	/sbin/iptables -t filter -P INPUT ACCEPT
	/sbin/iptables -t filter -P OUTPUT ACCEPT
	/sbin/iptables -t filter -P FORWARD ACCEPT
	/sbin/iptables -t nat -P PREROUTING ACCEPT
	/sbin/iptables -t nat -P POSTROUTING ACCEPT
	/sbin/iptables -t nat -P OUTPUT ACCEPT
	/sbin/iptables -t mangle -P PREROUTING ACCEPT
	/sbin/iptables -t mangle -P OUTPUT ACCEPT
	/sbin/iptables -t mangle -P POSTROUTING ACCEPT
	/sbin/iptables -t mangle -P FORWARD ACCEPT
	/sbin/iptables -t mangle -P INPUT ACCEPT
	/sbin/iptables -t raw -P OUTPUT ACCEPT
	/sbin/iptables -t raw -P PREROUTING ACCEPT
	/sbin/iptables -F
}

fw_status () {
	/sbin/iptables -L --line-numbers
}

case &quot;$1&quot; in
	start|restart)
		echo &quot;Starting firewall..&quot;
		fw_stop 
 		fw_start
		echo &quot;done.&quot;
 	;;
	stop)
		echo &quot;Stopping firewall..&quot;
 		fw_stop
 		echo &quot;done.&quot;
 	;;
	clean)
 		echo &quot;Clearing firewall rules..&quot;
 		fw_clear
 		echo &quot;done.&quot;
 	;;
	status)
		echo &quot;Firewall status&quot;
		fw_status
	;;
	*)
 		echo &quot;Usage: $0 {start|stop|restart|clean|status}&quot;
 		exit 1
 	;;
esac
exit 0
&lt;/code&gt;
[[Catégorie:Sécurité]]</text>
      <sha1>jum0ski8kmg3r0f4etr54nfhtdntsli</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3414</id>
      <parentid>3413</parentid>
      <timestamp>2011-08-28T12:25:33Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="6700">== Introduction ==

La méthode proposée [[Netfilter/Iptables_introduction | ici]] pose parfois souci lors d'un changement de version du noyau, qui ne comprends pas les règles enregistrées avec iptables-save comme il faut.

Dans la suite, vous trouverez un script permettant d'établir les règles à chaque démarrage. De plus, ce script ajoute par défaut un enregistrement des erreurs dans les logs, ce qui facilite la surveillance avec [[ Logwatch | logwatch ]] par exemple.
Si à l'avenir vous souhaitez ajoutez ou supprimer certaines règles, vous verrez que le script est construit de façon à faciliter ce genre d'opération.


== Installation du Pare-feu ==
''' Attention, les commandes suivantes sont à éxécuter avec les droits superutilisateur'''
Copiez-collez le script suivant dans /etc/init.d/mon_parefeu.
Ensuite, rendez ce script éxécutable : 
 chmod +x /etc/init.d/mon_parefeu
Puis activer le chargement du script au démarrage : 
 insserv mon_parefeu
== Le script ==

&lt;code&gt;#!/bin/sh

### BEGIN INIT INFO
# Provides:           mon_parefeu
# Required-Start:     $local_fs 
# Should-Start:
# Required-Stop:      $local_fs 
# Should-Stop:
# X-Start-Before:     $network
# X-Stop-After:       $network
# Default-Start:      2 3 4 5 
# Default-Stop:       0 1 6
# Short-description:  Configure le parefeu
# Description:        Met en place les règles iptables.
### END INIT INFO

# Exemple de configuration de pare-feu
#
# Défauts :
# - Cette configuration s'applique à toutes les interfaces réseau.
#   Si vous voulez ne restreindre cela qu'à une interface donnée,
#   utilisez '-i INTERFACE' dans les appels iptables.
#
# - Par défaut, le script autorise tout en sortie. Pour changer ce comportement
#   veuillez commenter la ligne 	/sbin/iptables -t filter -P OUTPUT ACCEPT
#   et décommenter les lignes 		#REMOTE_TCP_SERVICES=&quot;&quot; 
#                             		#REMOTE_UDP_SERVICES=&quot;&quot; 
#   ainsi que les blocs suivant : 	#if [ -n &quot;$REMOTE_TCP_SERVICES&quot; ] ; then
#   et                                  #if [ -n &quot;$REMOTE_UDP_SERVICES&quot; ] ; then
#
# description: Active/Désactive le pare-feu au démarrage
#
#---------------------------------------------------------------

PATH=/bin:/sbin:/usr/bin:/usr/sbin

# Services que le systèmes offrira au réseau, à séparer avec des espaces
# ftp : 21, ssh : 22, serveur web : 80, cups : 632, jabber : 5222
TCP_SERVICES=&quot;&quot; 
UDP_SERVICES=&quot;&quot;
# Services que le système utilisera du réseau
# Décommenter ces lignes pour limiter les services en sortie (défaut : autorise tout en sortie)
#REMOTE_TCP_SERVICES=&quot;&quot; 
#REMOTE_UDP_SERVICES=&quot;&quot; 

if ! [ -x /sbin/iptables ]; then  
	exit 0
fi

fw_start () {

# Vidage
	/sbin/iptables -t filter -F
	/sbin/iptables -t filter -X
	/sbin/iptables -t nat -F
	/sbin/iptables -t nat -X 
	/sbin/iptables -t mangle -F
	/sbin/iptables -t mangle -X 

	echo &quot;Parefeu - Suppression des règles : [OK]&quot;

# Interdictions
	/sbin/iptables -t filter -P INPUT DROP
	/sbin/iptables -t filter -P FORWARD DROP
	/sbin/iptables -t filter -P OUTPUT DROP

	echo &quot;Parefeu - interdictions générales établies : [OK]&quot;

# Loopback
	/sbin/iptables -t filter -A INPUT -i lo -j ACCEPT
	/sbin/iptables -t filter -A INPUT -i lo -j ACCEPT

# Trafic d'entrée :
	/sbin/iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Refus du ping
	/sbin/iptables -t filter -A INPUT -p icmp -j LOG
	/sbin/iptables -t filter -A INPUT -p icmp -j DROP

# Sortie autorisée, 
# à commenter si seuls certains services doivent être autorisés en sortie.
	/sbin/iptables -t filter -P OUTPUT ACCEPT

# Services à autoriser en entrée
	if [ -n &quot;$TCP_SERVICES&quot; ] ; then
		for PORT in $TCP_SERVICES; do
			/sbin/iptables -A INPUT -p tcp --dport ${PORT} -j ACCEPT
		done
	fi
	if [ -n &quot;$UDP_SERVICES&quot; ] ; then
		for PORT in $UDP_SERVICES; do
			/sbin/iptables -A INPUT -p udp --dport ${PORT} -j ACCEPT
		done
	fi

# Décommenter les lignes suivantes pour n'autoriser que certains
# services en sortie

	#if [ -n &quot;$REMOTE_TCP_SERVICES&quot; ] ; then
	#	for PORT in $REMOTE_TCP_SERVICES; do
	#		/sbin/iptables -A OUTPUT -p tcp --dport ${PORT} -j ACCEPT
	#	done
	#fi
	#if [ -n &quot;$REMOTE_UDP_SERVICES&quot; ] ; then
	#	for PORT in $REMOTE_UDP_SERVICES; do
	#		/sbin/iptables -A OUTPUT -p udp --dport ${PORT} -j ACCEPT
	#	done
	#fi

	echo &quot;Parefeu - Mise en place des règles : [OK]&quot;

# Décommenter les lignes après les traits
# pour une machine faisant office de routeur avec NAT
#
# ethx correspond à l'interface du LAN
# ethy correspond à l'interface reliée à la truc-box
# -------------------------------------------

	#/sbin/iptables -A INPUT -i ethx -j ACCEPT
	#/sbin/iptables -A INPUT -p icmp -j ACCEPT
	#/sbin/iptables -A FORWARD -i ethy -o ethx -m state --state RELATED,ESTABLISHED -j ACCEPT
	#/sbin/iptables -A FORWARD -o ethy -j ACCEPT
	#/sbin/iptables -t nat -A POSTROUTING -o ethy -j MASQUERADE

	#echo &quot;Parefeu - Routeur avec NAT : [OK]&quot;

# Toutes les autres connexions sont enregistrées dans syslog
	#/sbin/iptables -t filter -A OUTPUT -j LOG
	/sbin/iptables -t filter -A INPUT -j LOG --log-level=4

	echo &quot;Parefeu - Logging : [OK]&quot;
}

fw_stop () {
	/sbin/iptables -F
	/sbin/iptables -t nat -F
	/sbin/iptables -t mangle -F
	/sbin/iptables -P INPUT DROP
	/sbin/iptables -P FORWARD DROP
	/sbin/iptables -P OUTPUT ACCEPT
}

fw_clear () {
	/sbin/iptables -t filter -F
	/sbin/iptables -t nat -F
	/sbin/iptables -t mangle -F
	/sbin/iptables -t raw -F
	/sbin/iptables -t filter -P INPUT ACCEPT
	/sbin/iptables -t filter -P OUTPUT ACCEPT
	/sbin/iptables -t filter -P FORWARD ACCEPT
	/sbin/iptables -t nat -P PREROUTING ACCEPT
	/sbin/iptables -t nat -P POSTROUTING ACCEPT
	/sbin/iptables -t nat -P OUTPUT ACCEPT
	/sbin/iptables -t mangle -P PREROUTING ACCEPT
	/sbin/iptables -t mangle -P OUTPUT ACCEPT
	/sbin/iptables -t mangle -P POSTROUTING ACCEPT
	/sbin/iptables -t mangle -P FORWARD ACCEPT
	/sbin/iptables -t mangle -P INPUT ACCEPT
	/sbin/iptables -t raw -P OUTPUT ACCEPT
	/sbin/iptables -t raw -P PREROUTING ACCEPT
	/sbin/iptables -F
}

fw_status () {
	/sbin/iptables -L --line-numbers
}

case &quot;$1&quot; in
	start|restart)
		echo &quot;Starting firewall..&quot;
		fw_stop 
 		fw_start
		echo &quot;done.&quot;
 	;;
	stop)
		echo &quot;Stopping firewall..&quot;
 		fw_stop
 		echo &quot;done.&quot;
 	;;
	clean)
 		echo &quot;Clearing firewall rules..&quot;
 		fw_clear
 		echo &quot;done.&quot;
 	;;
	status)
		echo &quot;Firewall status&quot;
		fw_status
	;;
	*)
 		echo &quot;Usage: $0 {start|stop|restart|clean|status}&quot;
 		exit 1
 	;;
esac
exit 0
&lt;/code&gt;

== Ressources ==
* [http://olivieraj.free.fr/fr/linux/information/firewall/ Très bon tutoriel sur iptables]
* [http://www.debian-fr.org/script-pour-parefeu-simplifie-t34983.html Discussion sur ce script]



[[Catégorie:Sécurité]]</text>
      <sha1>domg6d2ft3lgs5f9ov4g7o8whzgaa13</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3415</id>
      <parentid>3414</parentid>
      <timestamp>2011-08-28T12:31:18Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="7646">== Introduction ==

La méthode proposée [[Netfilter/Iptables_introduction | ici]] pose parfois souci lors d'un changement de version du noyau, qui ne comprends pas les règles enregistrées avec iptables-save comme il faut.

Dans la suite, vous trouverez un script permettant d'établir les règles à chaque démarrage. De plus, ce script ajoute par défaut un enregistrement des erreurs dans les logs, ce qui facilite la surveillance avec [[ Logwatch | logwatch ]] par exemple.
Si à l'avenir vous souhaitez ajoutez ou supprimer certaines règles, vous verrez que le script est construit de façon à faciliter ce genre d'opération.


== Installation du Pare-feu ==
''' Attention, les commandes suivantes sont à éxécuter avec les droits superutilisateur'''
Copiez-collez le script suivant dans /etc/init.d/mon_parefeu.
Ensuite, rendez ce script éxécutable : 
 chmod +x /etc/init.d/mon_parefeu
Puis activer le chargement du script au démarrage : 
 insserv mon_parefeu
== Le script ==

&lt;code&gt;#!/bin/sh

### BEGIN INIT INFO
# Provides:           mon_parefeu
# Required-Start:     $local_fs 
# Should-Start:
# Required-Stop:      $local_fs 
# Should-Stop:
# X-Start-Before:     $network
# X-Stop-After:       $network
# Default-Start:      2 3 4 5 
# Default-Stop:       0 1 6
# Short-description:  Configure le parefeu
# Description:        Met en place les règles iptables.
### END INIT INFO

# Exemple de configuration de pare-feu
#
# Défauts :
# - Cette configuration s'applique à toutes les interfaces réseau.
#   Si vous voulez ne restreindre cela qu'à une interface donnée,
#   utilisez '-i INTERFACE' dans les appels iptables.
#
# - Par défaut, le script autorise tout en sortie. Pour changer ce comportement
#   veuillez commenter la ligne 	/sbin/iptables -t filter -P OUTPUT ACCEPT
#   et décommenter les lignes 		#REMOTE_TCP_SERVICES=&quot;&quot; 
#                             		#REMOTE_UDP_SERVICES=&quot;&quot; 
#   ainsi que les blocs suivant : 	#if [ -n &quot;$REMOTE_TCP_SERVICES&quot; ] ; then
#   et                                  #if [ -n &quot;$REMOTE_UDP_SERVICES&quot; ] ; then
#
# description: Active/Désactive le pare-feu au démarrage
#
#---------------------------------------------------------------

PATH=/bin:/sbin:/usr/bin:/usr/sbin

# Services que le systèmes offrira au réseau, à séparer avec des espaces
# ftp : 21, ssh : 22, serveur web : 80, cups : 632, jabber : 5222
TCP_SERVICES=&quot;&quot; 
UDP_SERVICES=&quot;&quot;
# Services que le système utilisera du réseau
# Décommenter ces lignes pour limiter les services en sortie (défaut : autorise tout en sortie)
#REMOTE_TCP_SERVICES=&quot;&quot; 
#REMOTE_UDP_SERVICES=&quot;&quot; 

if ! [ -x /sbin/iptables ]; then  
	exit 0
fi

fw_start () {

# Vidage
	/sbin/iptables -t filter -F
	/sbin/iptables -t filter -X
	/sbin/iptables -t nat -F
	/sbin/iptables -t nat -X 
	/sbin/iptables -t mangle -F
	/sbin/iptables -t mangle -X 

	echo &quot;Parefeu - Suppression des règles : [OK]&quot;

# Interdictions
	/sbin/iptables -t filter -P INPUT DROP
	/sbin/iptables -t filter -P FORWARD DROP
	/sbin/iptables -t filter -P OUTPUT DROP

	echo &quot;Parefeu - interdictions générales établies : [OK]&quot;

# Loopback
	/sbin/iptables -t filter -A INPUT -i lo -j ACCEPT
	/sbin/iptables -t filter -A INPUT -i lo -j ACCEPT

# Trafic d'entrée :
	/sbin/iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Refus du ping
	/sbin/iptables -t filter -A INPUT -p icmp -j LOG
	/sbin/iptables -t filter -A INPUT -p icmp -j DROP

# Sortie autorisée, 
# à commenter si seuls certains services doivent être autorisés en sortie.
	/sbin/iptables -t filter -P OUTPUT ACCEPT

# Services à autoriser en entrée
	if [ -n &quot;$TCP_SERVICES&quot; ] ; then
		for PORT in $TCP_SERVICES; do
			/sbin/iptables -A INPUT -p tcp --dport ${PORT} -j ACCEPT
		done
	fi
	if [ -n &quot;$UDP_SERVICES&quot; ] ; then
		for PORT in $UDP_SERVICES; do
			/sbin/iptables -A INPUT -p udp --dport ${PORT} -j ACCEPT
		done
	fi

# Décommenter les lignes suivantes pour n'autoriser que certains
# services en sortie

	#if [ -n &quot;$REMOTE_TCP_SERVICES&quot; ] ; then
	#	for PORT in $REMOTE_TCP_SERVICES; do
	#		/sbin/iptables -A OUTPUT -p tcp --dport ${PORT} -j ACCEPT
	#	done
	#fi
	#if [ -n &quot;$REMOTE_UDP_SERVICES&quot; ] ; then
	#	for PORT in $REMOTE_UDP_SERVICES; do
	#		/sbin/iptables -A OUTPUT -p udp --dport ${PORT} -j ACCEPT
	#	done
	#fi

	echo &quot;Parefeu - Mise en place des règles : [OK]&quot;

# Décommenter les lignes après les traits
# pour une machine faisant office de routeur avec NAT
#
# ethx correspond à l'interface du LAN
# ethy correspond à l'interface reliée à la truc-box
# -------------------------------------------

	#/sbin/iptables -A INPUT -i ethx -j ACCEPT
	#/sbin/iptables -A INPUT -p icmp -j ACCEPT
	#/sbin/iptables -A FORWARD -i ethy -o ethx -m state --state RELATED,ESTABLISHED -j ACCEPT
	#/sbin/iptables -A FORWARD -o ethy -j ACCEPT
	#/sbin/iptables -t nat -A POSTROUTING -o ethy -j MASQUERADE

	#echo &quot;Parefeu - Routeur avec NAT : [OK]&quot;

# Toutes les autres connexions sont enregistrées dans syslog
	#/sbin/iptables -t filter -A OUTPUT -j LOG
	/sbin/iptables -t filter -A INPUT -j LOG --log-level=4

	echo &quot;Parefeu - Logging : [OK]&quot;
}

fw_stop () {
	/sbin/iptables -F
	/sbin/iptables -t nat -F
	/sbin/iptables -t mangle -F
	/sbin/iptables -P INPUT DROP
	/sbin/iptables -P FORWARD DROP
	/sbin/iptables -P OUTPUT ACCEPT
}

fw_clear () {
	/sbin/iptables -t filter -F
	/sbin/iptables -t nat -F
	/sbin/iptables -t mangle -F
	/sbin/iptables -t raw -F
	/sbin/iptables -t filter -P INPUT ACCEPT
	/sbin/iptables -t filter -P OUTPUT ACCEPT
	/sbin/iptables -t filter -P FORWARD ACCEPT
	/sbin/iptables -t nat -P PREROUTING ACCEPT
	/sbin/iptables -t nat -P POSTROUTING ACCEPT
	/sbin/iptables -t nat -P OUTPUT ACCEPT
	/sbin/iptables -t mangle -P PREROUTING ACCEPT
	/sbin/iptables -t mangle -P OUTPUT ACCEPT
	/sbin/iptables -t mangle -P POSTROUTING ACCEPT
	/sbin/iptables -t mangle -P FORWARD ACCEPT
	/sbin/iptables -t mangle -P INPUT ACCEPT
	/sbin/iptables -t raw -P OUTPUT ACCEPT
	/sbin/iptables -t raw -P PREROUTING ACCEPT
	/sbin/iptables -F
}

fw_status () {
	/sbin/iptables -L --line-numbers
}

case &quot;$1&quot; in
	start|restart)
		echo &quot;Starting firewall..&quot;
		fw_stop 
 		fw_start
		echo &quot;done.&quot;
 	;;
	stop)
		echo &quot;Stopping firewall..&quot;
 		fw_stop
 		echo &quot;done.&quot;
 	;;
	clean)
 		echo &quot;Clearing firewall rules..&quot;
 		fw_clear
 		echo &quot;done.&quot;
 	;;
	status)
		echo &quot;Firewall status&quot;
		fw_status
	;;
	*)
 		echo &quot;Usage: $0 {start|stop|restart|clean|status}&quot;
 		exit 1
 	;;
esac
exit 0
&lt;/code&gt;

== Ouvrir des ports ==
Pour cela, il vous suffit d'ajouter le numéro des ports à ouvrir, séparés par des espaces, entre les guillemets : 
 TCP_SERVICES=&quot;&quot; 
S'il s'agit de ports tcp, et dans
 UDP_SERVICES=&quot;&quot;
Si ce sont des ports UDP
Pour trouver le numéro des ports, la commande suivante peut vous être utile : 
 less /etc/services

== Cas d'une machine routeur avec NAT ==
Il faut commenter la ligne : 
 /sbin/iptables -t filter -P OUTPUT ACCEPT
et décommenter ces lignes : 
 #REMOTE_TCP_SERVICES=&quot;&quot; 
 #REMOTE_UDP_SERVICES=&quot;&quot; 
Complétez entre les guillements les ports à ouvrir en sortie.
Enfin, décommentez ces blocs : 
 #if [ -n &quot;$REMOTE_TCP_SERVICES&quot; ] ; then
 #	for PORT in $REMOTE_TCP_SERVICES; do
 #		/sbin/iptables -A OUTPUT -p tcp --dport ${PORT} -j ACCEPT
 #	done
 #fi
 #if [ -n &quot;$REMOTE_UDP_SERVICES&quot; ] ; then
 #	for PORT in $REMOTE_UDP_SERVICES; do
 #		/sbin/iptables -A OUTPUT -p udp --dport ${PORT} -j ACCEPT
 #	done
 #fi

== Ressources ==
* [http://olivieraj.free.fr/fr/linux/information/firewall/ Très bon tutoriel sur iptables]
* [http://www.debian-fr.org/script-pour-parefeu-simplifie-t34983.html Discussion sur ce script]



[[Catégorie:Sécurité]]</text>
      <sha1>1fguhhtfoha4gpapu9j21s0eaj1070a</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3416</id>
      <parentid>3415</parentid>
      <timestamp>2011-08-28T12:32:47Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="7646">== Introduction ==

La méthode proposée [[Netfilter/Iptables_introduction | ici]] pose parfois souci lors d'un changement de version du noyau, qui ne comprends pas les règles enregistrées avec iptables-save comme il faut.

Dans la suite, vous trouverez un script permettant d'établir les règles à chaque démarrage. De plus, ce script ajoute par défaut un enregistrement des erreurs dans les logs, ce qui facilite la surveillance avec [[ Logwatch | logwatch ]] par exemple.
Si à l'avenir vous souhaitez ajoutez ou supprimer certaines règles, vous verrez que le script est construit de façon à faciliter ce genre d'opération.


== Installation du Pare-feu ==
''' Attention, les commandes suivantes sont à éxécuter avec les droits superutilisateur'''
Copiez-collez le script suivant dans /etc/init.d/mon_parefeu.
Ensuite, rendez ce script éxécutable : 
 chmod +x /etc/init.d/mon_parefeu
Puis activer le chargement du script au démarrage : 
 insserv mon_parefeu
== Le script ==

&lt;code&gt;#!/bin/sh

### BEGIN INIT INFO
# Provides:           mon_parefeu
# Required-Start:     $local_fs 
# Should-Start:
# Required-Stop:      $local_fs 
# Should-Stop:
# X-Start-Before:     $network
# X-Stop-After:       $network
# Default-Start:      2 3 4 5 
# Default-Stop:       0 1 6
# Short-description:  Configure le parefeu
# Description:        Met en place les règles iptables.
### END INIT INFO

# Exemple de configuration de pare-feu
#
# Défauts :
# - Cette configuration s'applique à toutes les interfaces réseau.
#   Si vous voulez ne restreindre cela qu'à une interface donnée,
#   utilisez '-i INTERFACE' dans les appels iptables.
#
# - Par défaut, le script autorise tout en sortie. Pour changer ce comportement
#   veuillez commenter la ligne 	/sbin/iptables -t filter -P OUTPUT ACCEPT
#   et décommenter les lignes 		#REMOTE_TCP_SERVICES=&quot;&quot; 
#                             		#REMOTE_UDP_SERVICES=&quot;&quot; 
#   ainsi que les blocs suivant : 	#if [ -n &quot;$REMOTE_TCP_SERVICES&quot; ] ; then
#   et                                  #if [ -n &quot;$REMOTE_UDP_SERVICES&quot; ] ; then
#
# description: Active/Désactive le pare-feu au démarrage
#
#---------------------------------------------------------------

PATH=/bin:/sbin:/usr/bin:/usr/sbin

# Services que le systèmes offrira au réseau, à séparer avec des espaces
# ftp : 21, ssh : 22, serveur web : 80, cups : 632, jabber : 5222
TCP_SERVICES=&quot;&quot; 
UDP_SERVICES=&quot;&quot;
# Services que le système utilisera du réseau
# Décommenter ces lignes pour limiter les services en sortie (défaut : autorise tout en sortie)
#REMOTE_TCP_SERVICES=&quot;&quot; 
#REMOTE_UDP_SERVICES=&quot;&quot; 

if ! [ -x /sbin/iptables ]; then  
	exit 0
fi

fw_start () {

# Vidage
	/sbin/iptables -t filter -F
	/sbin/iptables -t filter -X
	/sbin/iptables -t nat -F
	/sbin/iptables -t nat -X 
	/sbin/iptables -t mangle -F
	/sbin/iptables -t mangle -X 

	echo &quot;Parefeu - Suppression des règles : [OK]&quot;

# Interdictions
	/sbin/iptables -t filter -P INPUT DROP
	/sbin/iptables -t filter -P FORWARD DROP
	/sbin/iptables -t filter -P OUTPUT DROP

	echo &quot;Parefeu - interdictions générales établies : [OK]&quot;

# Loopback
	/sbin/iptables -t filter -A INPUT -i lo -j ACCEPT
	/sbin/iptables -t filter -A INPUT -i lo -j ACCEPT

# Trafic d'entrée :
	/sbin/iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Refus du ping
	/sbin/iptables -t filter -A INPUT -p icmp -j LOG
	/sbin/iptables -t filter -A INPUT -p icmp -j DROP

# Sortie autorisée, 
# à commenter si seuls certains services doivent être autorisés en sortie.
	/sbin/iptables -t filter -P OUTPUT ACCEPT

# Services à autoriser en entrée
	if [ -n &quot;$TCP_SERVICES&quot; ] ; then
		for PORT in $TCP_SERVICES; do
			/sbin/iptables -A INPUT -p tcp --dport ${PORT} -j ACCEPT
		done
	fi
	if [ -n &quot;$UDP_SERVICES&quot; ] ; then
		for PORT in $UDP_SERVICES; do
			/sbin/iptables -A INPUT -p udp --dport ${PORT} -j ACCEPT
		done
	fi

# Décommenter les lignes suivantes pour n'autoriser que certains
# services en sortie

	#if [ -n &quot;$REMOTE_TCP_SERVICES&quot; ] ; then
	#	for PORT in $REMOTE_TCP_SERVICES; do
	#		/sbin/iptables -A OUTPUT -p tcp --dport ${PORT} -j ACCEPT
	#	done
	#fi
	#if [ -n &quot;$REMOTE_UDP_SERVICES&quot; ] ; then
	#	for PORT in $REMOTE_UDP_SERVICES; do
	#		/sbin/iptables -A OUTPUT -p udp --dport ${PORT} -j ACCEPT
	#	done
	#fi

	echo &quot;Parefeu - Mise en place des règles : [OK]&quot;

# Décommenter les lignes après les traits
# pour une machine faisant office de routeur avec NAT
#
# ethx correspond à l'interface du LAN
# ethy correspond à l'interface reliée à la truc-box
# -------------------------------------------

	#/sbin/iptables -A INPUT -i ethx -j ACCEPT
	#/sbin/iptables -A INPUT -p icmp -j ACCEPT
	#/sbin/iptables -A FORWARD -i ethy -o ethx -m state --state RELATED,ESTABLISHED -j ACCEPT
	#/sbin/iptables -A FORWARD -o ethy -j ACCEPT
	#/sbin/iptables -t nat -A POSTROUTING -o ethy -j MASQUERADE

	#echo &quot;Parefeu - Routeur avec NAT : [OK]&quot;

# Toutes les autres connexions sont enregistrées dans syslog
	#/sbin/iptables -t filter -A OUTPUT -j LOG
	/sbin/iptables -t filter -A INPUT -j LOG --log-level=4

	echo &quot;Parefeu - Logging : [OK]&quot;
}

fw_stop () {
	/sbin/iptables -F
	/sbin/iptables -t nat -F
	/sbin/iptables -t mangle -F
	/sbin/iptables -P INPUT DROP
	/sbin/iptables -P FORWARD DROP
	/sbin/iptables -P OUTPUT ACCEPT
}

fw_clear () {
	/sbin/iptables -t filter -F
	/sbin/iptables -t nat -F
	/sbin/iptables -t mangle -F
	/sbin/iptables -t raw -F
	/sbin/iptables -t filter -P INPUT ACCEPT
	/sbin/iptables -t filter -P OUTPUT ACCEPT
	/sbin/iptables -t filter -P FORWARD ACCEPT
	/sbin/iptables -t nat -P PREROUTING ACCEPT
	/sbin/iptables -t nat -P POSTROUTING ACCEPT
	/sbin/iptables -t nat -P OUTPUT ACCEPT
	/sbin/iptables -t mangle -P PREROUTING ACCEPT
	/sbin/iptables -t mangle -P OUTPUT ACCEPT
	/sbin/iptables -t mangle -P POSTROUTING ACCEPT
	/sbin/iptables -t mangle -P FORWARD ACCEPT
	/sbin/iptables -t mangle -P INPUT ACCEPT
	/sbin/iptables -t raw -P OUTPUT ACCEPT
	/sbin/iptables -t raw -P PREROUTING ACCEPT
	/sbin/iptables -F
}

fw_status () {
	/sbin/iptables -L --line-numbers
}

case &quot;$1&quot; in
	start|restart)
		echo &quot;Starting firewall..&quot;
		fw_stop 
 		fw_start
		echo &quot;done.&quot;
 	;;
	stop)
		echo &quot;Stopping firewall..&quot;
 		fw_stop
 		echo &quot;done.&quot;
 	;;
	clean)
 		echo &quot;Clearing firewall rules..&quot;
 		fw_clear
 		echo &quot;done.&quot;
 	;;
	status)
		echo &quot;Firewall status&quot;
		fw_status
	;;
	*)
 		echo &quot;Usage: $0 {start|stop|restart|clean|status}&quot;
 		exit 1
 	;;
esac
exit 0
&lt;/code&gt;

== Ouvrir des ports ==
Pour cela, il vous suffit d'ajouter le numéro des ports à ouvrir, séparés par des espaces, entre les guillemets : 
 TCP_SERVICES=&quot;&quot; 
S'il s'agit de ports tcp, et dans
 UDP_SERVICES=&quot;&quot;
Si ce sont des ports UDP
Pour trouver le numéro des ports, la commande suivante peut vous être utile : 
 less /etc/services

== Autoriser au cas par cas en sortie ==
Il faut commenter la ligne : 
 /sbin/iptables -t filter -P OUTPUT ACCEPT
et décommenter ces lignes : 
 #REMOTE_TCP_SERVICES=&quot;&quot; 
 #REMOTE_UDP_SERVICES=&quot;&quot; 
Complétez entre les guillements les ports à ouvrir en sortie.
Enfin, décommentez ces blocs : 
 #if [ -n &quot;$REMOTE_TCP_SERVICES&quot; ] ; then
 #	for PORT in $REMOTE_TCP_SERVICES; do
 #		/sbin/iptables -A OUTPUT -p tcp --dport ${PORT} -j ACCEPT
 #	done
 #fi
 #if [ -n &quot;$REMOTE_UDP_SERVICES&quot; ] ; then
 #	for PORT in $REMOTE_UDP_SERVICES; do
 #		/sbin/iptables -A OUTPUT -p udp --dport ${PORT} -j ACCEPT
 #	done
 #fi

== Ressources ==
* [http://olivieraj.free.fr/fr/linux/information/firewall/ Très bon tutoriel sur iptables]
* [http://www.debian-fr.org/script-pour-parefeu-simplifie-t34983.html Discussion sur ce script]



[[Catégorie:Sécurité]]</text>
      <sha1>5yfuzdf8qqo9w2vr78q12und5dart9v</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3417</id>
      <parentid>3416</parentid>
      <timestamp>2011-08-28T12:34:45Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <text xml:space="preserve" bytes="8298">== Introduction ==

La méthode proposée [[Netfilter/Iptables_introduction | ici]] pose parfois souci lors d'un changement de version du noyau, qui ne comprends pas les règles enregistrées avec iptables-save comme il faut.

Dans la suite, vous trouverez un script permettant d'établir les règles à chaque démarrage. De plus, ce script ajoute par défaut un enregistrement des erreurs dans les logs, ce qui facilite la surveillance avec [[ Logwatch | logwatch ]] par exemple.
Si à l'avenir vous souhaitez ajoutez ou supprimer certaines règles, vous verrez que le script est construit de façon à faciliter ce genre d'opération.


== Installation du Pare-feu ==
''' Attention, les commandes suivantes sont à éxécuter avec les droits superutilisateur'''
Copiez-collez le script suivant dans /etc/init.d/mon_parefeu.
Ensuite, rendez ce script éxécutable : 
 chmod +x /etc/init.d/mon_parefeu
Puis activer le chargement du script au démarrage : 
 insserv mon_parefeu
== Le script ==

&lt;code&gt;#!/bin/sh

### BEGIN INIT INFO
# Provides:           mon_parefeu
# Required-Start:     $local_fs 
# Should-Start:
# Required-Stop:      $local_fs 
# Should-Stop:
# X-Start-Before:     $network
# X-Stop-After:       $network
# Default-Start:      2 3 4 5 
# Default-Stop:       0 1 6
# Short-description:  Configure le parefeu
# Description:        Met en place les règles iptables.
### END INIT INFO

# Exemple de configuration de pare-feu
#
# Défauts :
# - Cette configuration s'applique à toutes les interfaces réseau.
#   Si vous voulez ne restreindre cela qu'à une interface donnée,
#   utilisez '-i INTERFACE' dans les appels iptables.
#
# - Par défaut, le script autorise tout en sortie. Pour changer ce comportement
#   veuillez commenter la ligne 	/sbin/iptables -t filter -P OUTPUT ACCEPT
#   et décommenter les lignes 		#REMOTE_TCP_SERVICES=&quot;&quot; 
#                             		#REMOTE_UDP_SERVICES=&quot;&quot; 
#   ainsi que les blocs suivant : 	#if [ -n &quot;$REMOTE_TCP_SERVICES&quot; ] ; then
#   et                                  #if [ -n &quot;$REMOTE_UDP_SERVICES&quot; ] ; then
#
# description: Active/Désactive le pare-feu au démarrage
#
#---------------------------------------------------------------

PATH=/bin:/sbin:/usr/bin:/usr/sbin

# Services que le systèmes offrira au réseau, à séparer avec des espaces
# ftp : 21, ssh : 22, serveur web : 80, cups : 632, jabber : 5222
TCP_SERVICES=&quot;&quot; 
UDP_SERVICES=&quot;&quot;
# Services que le système utilisera du réseau
# Décommenter ces lignes pour limiter les services en sortie (défaut : autorise tout en sortie)
#REMOTE_TCP_SERVICES=&quot;&quot; 
#REMOTE_UDP_SERVICES=&quot;&quot; 

if ! [ -x /sbin/iptables ]; then  
	exit 0
fi

fw_start () {

# Vidage
	/sbin/iptables -t filter -F
	/sbin/iptables -t filter -X
	/sbin/iptables -t nat -F
	/sbin/iptables -t nat -X 
	/sbin/iptables -t mangle -F
	/sbin/iptables -t mangle -X 

	echo &quot;Parefeu - Suppression des règles : [OK]&quot;

# Interdictions
	/sbin/iptables -t filter -P INPUT DROP
	/sbin/iptables -t filter -P FORWARD DROP
	/sbin/iptables -t filter -P OUTPUT DROP

	echo &quot;Parefeu - interdictions générales établies : [OK]&quot;

# Loopback
	/sbin/iptables -t filter -A INPUT -i lo -j ACCEPT
	/sbin/iptables -t filter -A INPUT -i lo -j ACCEPT

# Trafic d'entrée :
	/sbin/iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Refus du ping
	/sbin/iptables -t filter -A INPUT -p icmp -j LOG
	/sbin/iptables -t filter -A INPUT -p icmp -j DROP

# Sortie autorisée, 
# à commenter si seuls certains services doivent être autorisés en sortie.
	/sbin/iptables -t filter -P OUTPUT ACCEPT

# Services à autoriser en entrée
	if [ -n &quot;$TCP_SERVICES&quot; ] ; then
		for PORT in $TCP_SERVICES; do
			/sbin/iptables -A INPUT -p tcp --dport ${PORT} -j ACCEPT
		done
	fi
	if [ -n &quot;$UDP_SERVICES&quot; ] ; then
		for PORT in $UDP_SERVICES; do
			/sbin/iptables -A INPUT -p udp --dport ${PORT} -j ACCEPT
		done
	fi

# Décommenter les lignes suivantes pour n'autoriser que certains
# services en sortie

	#if [ -n &quot;$REMOTE_TCP_SERVICES&quot; ] ; then
	#	for PORT in $REMOTE_TCP_SERVICES; do
	#		/sbin/iptables -A OUTPUT -p tcp --dport ${PORT} -j ACCEPT
	#	done
	#fi
	#if [ -n &quot;$REMOTE_UDP_SERVICES&quot; ] ; then
	#	for PORT in $REMOTE_UDP_SERVICES; do
	#		/sbin/iptables -A OUTPUT -p udp --dport ${PORT} -j ACCEPT
	#	done
	#fi

	echo &quot;Parefeu - Mise en place des règles : [OK]&quot;

# Décommenter les lignes après les traits
# pour une machine faisant office de routeur avec NAT
#
# ethx correspond à l'interface du LAN
# ethy correspond à l'interface reliée à la truc-box
# -------------------------------------------

	#/sbin/iptables -A INPUT -i ethx -j ACCEPT
	#/sbin/iptables -A INPUT -p icmp -j ACCEPT
	#/sbin/iptables -A FORWARD -i ethy -o ethx -m state --state RELATED,ESTABLISHED -j ACCEPT
	#/sbin/iptables -A FORWARD -o ethy -j ACCEPT
	#/sbin/iptables -t nat -A POSTROUTING -o ethy -j MASQUERADE

	#echo &quot;Parefeu - Routeur avec NAT : [OK]&quot;

# Toutes les autres connexions sont enregistrées dans syslog
	#/sbin/iptables -t filter -A OUTPUT -j LOG
	/sbin/iptables -t filter -A INPUT -j LOG --log-level=4

	echo &quot;Parefeu - Logging : [OK]&quot;
}

fw_stop () {
	/sbin/iptables -F
	/sbin/iptables -t nat -F
	/sbin/iptables -t mangle -F
	/sbin/iptables -P INPUT DROP
	/sbin/iptables -P FORWARD DROP
	/sbin/iptables -P OUTPUT ACCEPT
}

fw_clear () {
	/sbin/iptables -t filter -F
	/sbin/iptables -t nat -F
	/sbin/iptables -t mangle -F
	/sbin/iptables -t raw -F
	/sbin/iptables -t filter -P INPUT ACCEPT
	/sbin/iptables -t filter -P OUTPUT ACCEPT
	/sbin/iptables -t filter -P FORWARD ACCEPT
	/sbin/iptables -t nat -P PREROUTING ACCEPT
	/sbin/iptables -t nat -P POSTROUTING ACCEPT
	/sbin/iptables -t nat -P OUTPUT ACCEPT
	/sbin/iptables -t mangle -P PREROUTING ACCEPT
	/sbin/iptables -t mangle -P OUTPUT ACCEPT
	/sbin/iptables -t mangle -P POSTROUTING ACCEPT
	/sbin/iptables -t mangle -P FORWARD ACCEPT
	/sbin/iptables -t mangle -P INPUT ACCEPT
	/sbin/iptables -t raw -P OUTPUT ACCEPT
	/sbin/iptables -t raw -P PREROUTING ACCEPT
	/sbin/iptables -F
}

fw_status () {
	/sbin/iptables -L --line-numbers
}

case &quot;$1&quot; in
	start|restart)
		echo &quot;Starting firewall..&quot;
		fw_stop 
 		fw_start
		echo &quot;done.&quot;
 	;;
	stop)
		echo &quot;Stopping firewall..&quot;
 		fw_stop
 		echo &quot;done.&quot;
 	;;
	clean)
 		echo &quot;Clearing firewall rules..&quot;
 		fw_clear
 		echo &quot;done.&quot;
 	;;
	status)
		echo &quot;Firewall status&quot;
		fw_status
	;;
	*)
 		echo &quot;Usage: $0 {start|stop|restart|clean|status}&quot;
 		exit 1
 	;;
esac
exit 0
&lt;/code&gt;

== Ouvrir des ports ==
Pour cela, il vous suffit d'ajouter le numéro des ports à ouvrir, séparés par des espaces, entre les guillemets : 
 TCP_SERVICES=&quot;&quot; 
S'il s'agit de ports tcp, et dans
 UDP_SERVICES=&quot;&quot;
Si ce sont des ports UDP
Pour trouver le numéro des ports, la commande suivante peut vous être utile : 
 less /etc/services

== Autoriser au cas par cas en sortie ==
Il faut commenter la ligne : 
 /sbin/iptables -t filter -P OUTPUT ACCEPT
et décommenter ces lignes : 
 #REMOTE_TCP_SERVICES=&quot;&quot; 
 #REMOTE_UDP_SERVICES=&quot;&quot; 
Complétez entre les guillements les ports à ouvrir en sortie.
Enfin, décommentez ces blocs : 
 #if [ -n &quot;$REMOTE_TCP_SERVICES&quot; ] ; then
 #	for PORT in $REMOTE_TCP_SERVICES; do
 #		/sbin/iptables -A OUTPUT -p tcp --dport ${PORT} -j ACCEPT
 #	done
 #fi
 #if [ -n &quot;$REMOTE_UDP_SERVICES&quot; ] ; then
 #	for PORT in $REMOTE_UDP_SERVICES; do
 #		/sbin/iptables -A OUTPUT -p udp --dport ${PORT} -j ACCEPT
 #	done
 #fi

== Cas d'une machine routeur avec NAT ==
Il va falloir décommenter ces lignes : 
 #/sbin/iptables -A INPUT -i ethx -j ACCEPT
 #/sbin/iptables -A INPUT -p icmp -j ACCEPT
 #/sbin/iptables -A FORWARD -i ethy -o ethx -m state --state RELATED,ESTABLISHED -j ACCEPT
 #/sbin/iptables -A FORWARD -o ethy -j ACCEPT
 #/sbin/iptables -t nat -A POSTROUTING -o ethy -j MASQUERADE

 #echo &quot;Parefeu - Routeur avec NAT : [OK]&quot;
En remplaçant ethx qui correspond à l'interface du LAN et ethy qui correspond à l'interface reliée à la truc-box

== Ressources ==
* [http://www.debian-fr.org/installation-parefeu-iptables-pour-les-nuls-t1901.html Autre méthode proposée par Ricardo]
* [http://olivieraj.free.fr/fr/linux/information/firewall/ Très bon tutoriel sur iptables]
* [http://www.debian-fr.org/script-pour-parefeu-simplifie-t34983.html Discussion sur ce script]



[[Catégorie:Sécurité]]</text>
      <sha1>3wc3i9itwjt2eikcvyv14v43thvwugi</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3418</id>
      <parentid>3417</parentid>
      <timestamp>2011-08-28T12:35:04Z</timestamp>
      <contributor>
        <username>Thuban</username>
        <id>5</id>
      </contributor>
      <comment>/* Cas d'une machine routeur avec NAT */</comment>
      <text xml:space="preserve" bytes="8298">== Introduction ==

La méthode proposée [[Netfilter/Iptables_introduction | ici]] pose parfois souci lors d'un changement de version du noyau, qui ne comprends pas les règles enregistrées avec iptables-save comme il faut.

Dans la suite, vous trouverez un script permettant d'établir les règles à chaque démarrage. De plus, ce script ajoute par défaut un enregistrement des erreurs dans les logs, ce qui facilite la surveillance avec [[ Logwatch | logwatch ]] par exemple.
Si à l'avenir vous souhaitez ajoutez ou supprimer certaines règles, vous verrez que le script est construit de façon à faciliter ce genre d'opération.


== Installation du Pare-feu ==
''' Attention, les commandes suivantes sont à éxécuter avec les droits superutilisateur'''
Copiez-collez le script suivant dans /etc/init.d/mon_parefeu.
Ensuite, rendez ce script éxécutable : 
 chmod +x /etc/init.d/mon_parefeu
Puis activer le chargement du script au démarrage : 
 insserv mon_parefeu
== Le script ==

&lt;code&gt;#!/bin/sh

### BEGIN INIT INFO
# Provides:           mon_parefeu
# Required-Start:     $local_fs 
# Should-Start:
# Required-Stop:      $local_fs 
# Should-Stop:
# X-Start-Before:     $network
# X-Stop-After:       $network
# Default-Start:      2 3 4 5 
# Default-Stop:       0 1 6
# Short-description:  Configure le parefeu
# Description:        Met en place les règles iptables.
### END INIT INFO

# Exemple de configuration de pare-feu
#
# Défauts :
# - Cette configuration s'applique à toutes les interfaces réseau.
#   Si vous voulez ne restreindre cela qu'à une interface donnée,
#   utilisez '-i INTERFACE' dans les appels iptables.
#
# - Par défaut, le script autorise tout en sortie. Pour changer ce comportement
#   veuillez commenter la ligne 	/sbin/iptables -t filter -P OUTPUT ACCEPT
#   et décommenter les lignes 		#REMOTE_TCP_SERVICES=&quot;&quot; 
#                             		#REMOTE_UDP_SERVICES=&quot;&quot; 
#   ainsi que les blocs suivant : 	#if [ -n &quot;$REMOTE_TCP_SERVICES&quot; ] ; then
#   et                                  #if [ -n &quot;$REMOTE_UDP_SERVICES&quot; ] ; then
#
# description: Active/Désactive le pare-feu au démarrage
#
#---------------------------------------------------------------

PATH=/bin:/sbin:/usr/bin:/usr/sbin

# Services que le systèmes offrira au réseau, à séparer avec des espaces
# ftp : 21, ssh : 22, serveur web : 80, cups : 632, jabber : 5222
TCP_SERVICES=&quot;&quot; 
UDP_SERVICES=&quot;&quot;
# Services que le système utilisera du réseau
# Décommenter ces lignes pour limiter les services en sortie (défaut : autorise tout en sortie)
#REMOTE_TCP_SERVICES=&quot;&quot; 
#REMOTE_UDP_SERVICES=&quot;&quot; 

if ! [ -x /sbin/iptables ]; then  
	exit 0
fi

fw_start () {

# Vidage
	/sbin/iptables -t filter -F
	/sbin/iptables -t filter -X
	/sbin/iptables -t nat -F
	/sbin/iptables -t nat -X 
	/sbin/iptables -t mangle -F
	/sbin/iptables -t mangle -X 

	echo &quot;Parefeu - Suppression des règles : [OK]&quot;

# Interdictions
	/sbin/iptables -t filter -P INPUT DROP
	/sbin/iptables -t filter -P FORWARD DROP
	/sbin/iptables -t filter -P OUTPUT DROP

	echo &quot;Parefeu - interdictions générales établies : [OK]&quot;

# Loopback
	/sbin/iptables -t filter -A INPUT -i lo -j ACCEPT
	/sbin/iptables -t filter -A INPUT -i lo -j ACCEPT

# Trafic d'entrée :
	/sbin/iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Refus du ping
	/sbin/iptables -t filter -A INPUT -p icmp -j LOG
	/sbin/iptables -t filter -A INPUT -p icmp -j DROP

# Sortie autorisée, 
# à commenter si seuls certains services doivent être autorisés en sortie.
	/sbin/iptables -t filter -P OUTPUT ACCEPT

# Services à autoriser en entrée
	if [ -n &quot;$TCP_SERVICES&quot; ] ; then
		for PORT in $TCP_SERVICES; do
			/sbin/iptables -A INPUT -p tcp --dport ${PORT} -j ACCEPT
		done
	fi
	if [ -n &quot;$UDP_SERVICES&quot; ] ; then
		for PORT in $UDP_SERVICES; do
			/sbin/iptables -A INPUT -p udp --dport ${PORT} -j ACCEPT
		done
	fi

# Décommenter les lignes suivantes pour n'autoriser que certains
# services en sortie

	#if [ -n &quot;$REMOTE_TCP_SERVICES&quot; ] ; then
	#	for PORT in $REMOTE_TCP_SERVICES; do
	#		/sbin/iptables -A OUTPUT -p tcp --dport ${PORT} -j ACCEPT
	#	done
	#fi
	#if [ -n &quot;$REMOTE_UDP_SERVICES&quot; ] ; then
	#	for PORT in $REMOTE_UDP_SERVICES; do
	#		/sbin/iptables -A OUTPUT -p udp --dport ${PORT} -j ACCEPT
	#	done
	#fi

	echo &quot;Parefeu - Mise en place des règles : [OK]&quot;

# Décommenter les lignes après les traits
# pour une machine faisant office de routeur avec NAT
#
# ethx correspond à l'interface du LAN
# ethy correspond à l'interface reliée à la truc-box
# -------------------------------------------

	#/sbin/iptables -A INPUT -i ethx -j ACCEPT
	#/sbin/iptables -A INPUT -p icmp -j ACCEPT
	#/sbin/iptables -A FORWARD -i ethy -o ethx -m state --state RELATED,ESTABLISHED -j ACCEPT
	#/sbin/iptables -A FORWARD -o ethy -j ACCEPT
	#/sbin/iptables -t nat -A POSTROUTING -o ethy -j MASQUERADE

	#echo &quot;Parefeu - Routeur avec NAT : [OK]&quot;

# Toutes les autres connexions sont enregistrées dans syslog
	#/sbin/iptables -t filter -A OUTPUT -j LOG
	/sbin/iptables -t filter -A INPUT -j LOG --log-level=4

	echo &quot;Parefeu - Logging : [OK]&quot;
}

fw_stop () {
	/sbin/iptables -F
	/sbin/iptables -t nat -F
	/sbin/iptables -t mangle -F
	/sbin/iptables -P INPUT DROP
	/sbin/iptables -P FORWARD DROP
	/sbin/iptables -P OUTPUT ACCEPT
}

fw_clear () {
	/sbin/iptables -t filter -F
	/sbin/iptables -t nat -F
	/sbin/iptables -t mangle -F
	/sbin/iptables -t raw -F
	/sbin/iptables -t filter -P INPUT ACCEPT
	/sbin/iptables -t filter -P OUTPUT ACCEPT
	/sbin/iptables -t filter -P FORWARD ACCEPT
	/sbin/iptables -t nat -P PREROUTING ACCEPT
	/sbin/iptables -t nat -P POSTROUTING ACCEPT
	/sbin/iptables -t nat -P OUTPUT ACCEPT
	/sbin/iptables -t mangle -P PREROUTING ACCEPT
	/sbin/iptables -t mangle -P OUTPUT ACCEPT
	/sbin/iptables -t mangle -P POSTROUTING ACCEPT
	/sbin/iptables -t mangle -P FORWARD ACCEPT
	/sbin/iptables -t mangle -P INPUT ACCEPT
	/sbin/iptables -t raw -P OUTPUT ACCEPT
	/sbin/iptables -t raw -P PREROUTING ACCEPT
	/sbin/iptables -F
}

fw_status () {
	/sbin/iptables -L --line-numbers
}

case &quot;$1&quot; in
	start|restart)
		echo &quot;Starting firewall..&quot;
		fw_stop 
 		fw_start
		echo &quot;done.&quot;
 	;;
	stop)
		echo &quot;Stopping firewall..&quot;
 		fw_stop
 		echo &quot;done.&quot;
 	;;
	clean)
 		echo &quot;Clearing firewall rules..&quot;
 		fw_clear
 		echo &quot;done.&quot;
 	;;
	status)
		echo &quot;Firewall status&quot;
		fw_status
	;;
	*)
 		echo &quot;Usage: $0 {start|stop|restart|clean|status}&quot;
 		exit 1
 	;;
esac
exit 0
&lt;/code&gt;

== Ouvrir des ports ==
Pour cela, il vous suffit d'ajouter le numéro des ports à ouvrir, séparés par des espaces, entre les guillemets : 
 TCP_SERVICES=&quot;&quot; 
S'il s'agit de ports tcp, et dans
 UDP_SERVICES=&quot;&quot;
Si ce sont des ports UDP
Pour trouver le numéro des ports, la commande suivante peut vous être utile : 
 less /etc/services

== Autoriser au cas par cas en sortie ==
Il faut commenter la ligne : 
 /sbin/iptables -t filter -P OUTPUT ACCEPT
et décommenter ces lignes : 
 #REMOTE_TCP_SERVICES=&quot;&quot; 
 #REMOTE_UDP_SERVICES=&quot;&quot; 
Complétez entre les guillements les ports à ouvrir en sortie.
Enfin, décommentez ces blocs : 
 #if [ -n &quot;$REMOTE_TCP_SERVICES&quot; ] ; then
 #	for PORT in $REMOTE_TCP_SERVICES; do
 #		/sbin/iptables -A OUTPUT -p tcp --dport ${PORT} -j ACCEPT
 #	done
 #fi
 #if [ -n &quot;$REMOTE_UDP_SERVICES&quot; ] ; then
 #	for PORT in $REMOTE_UDP_SERVICES; do
 #		/sbin/iptables -A OUTPUT -p udp --dport ${PORT} -j ACCEPT
 #	done
 #fi

== Cas d'une machine routeur avec NAT ==
Il va falloir décommenter ces lignes : 
 #/sbin/iptables -A INPUT -i ethx -j ACCEPT
 #/sbin/iptables -A INPUT -p icmp -j ACCEPT
 #/sbin/iptables -A FORWARD -i ethy -o ethx -m state --state RELATED,ESTABLISHED -j ACCEPT
 #/sbin/iptables -A FORWARD -o ethy -j ACCEPT
 #/sbin/iptables -t nat -A POSTROUTING -o ethy -j MASQUERADE
 #echo &quot;Parefeu - Routeur avec NAT : [OK]&quot;

En remplaçant ethx qui correspond à l'interface du LAN et ethy qui correspond à l'interface reliée à la truc-box

== Ressources ==
* [http://www.debian-fr.org/installation-parefeu-iptables-pour-les-nuls-t1901.html Autre méthode proposée par Ricardo]
* [http://olivieraj.free.fr/fr/linux/information/firewall/ Très bon tutoriel sur iptables]
* [http://www.debian-fr.org/script-pour-parefeu-simplifie-t34983.html Discussion sur ce script]



[[Catégorie:Sécurité]]</text>
      <sha1>9qxawnfasfr2azk15a8nnv4se6xe19x</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3419</id>
      <parentid>3418</parentid>
      <timestamp>2011-08-28T14:58:50Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Introduction */</comment>
      <text xml:space="preserve" bytes="8296">== Introduction ==

La méthode proposée [[Netfilter/Iptables_introduction | ici]] pose parfois souci lors d'un changement de version du noyau, qui ne comprend pas les règles enregistrées avec iptables-save comme il faut.

Dans la suite, vous trouverez un script permettant d'établir les règles à chaque démarrage. De plus, ce script ajoute par défaut un enregistrement des erreurs dans les logs, ce qui facilite la surveillance avec [[ Logwatch | logwatch ]] par exemple.
Si à l'avenir vous souhaitez ajoutez ou supprimer certaines règles, vous verrez que le script est construit de façon à faciliter ce genre d'opération.

== Installation du Pare-feu ==
''' Attention, les commandes suivantes sont à éxécuter avec les droits superutilisateur'''
Copiez-collez le script suivant dans /etc/init.d/mon_parefeu.
Ensuite, rendez ce script éxécutable : 
 chmod +x /etc/init.d/mon_parefeu
Puis activer le chargement du script au démarrage : 
 insserv mon_parefeu
== Le script ==

&lt;code&gt;#!/bin/sh

### BEGIN INIT INFO
# Provides:           mon_parefeu
# Required-Start:     $local_fs 
# Should-Start:
# Required-Stop:      $local_fs 
# Should-Stop:
# X-Start-Before:     $network
# X-Stop-After:       $network
# Default-Start:      2 3 4 5 
# Default-Stop:       0 1 6
# Short-description:  Configure le parefeu
# Description:        Met en place les règles iptables.
### END INIT INFO

# Exemple de configuration de pare-feu
#
# Défauts :
# - Cette configuration s'applique à toutes les interfaces réseau.
#   Si vous voulez ne restreindre cela qu'à une interface donnée,
#   utilisez '-i INTERFACE' dans les appels iptables.
#
# - Par défaut, le script autorise tout en sortie. Pour changer ce comportement
#   veuillez commenter la ligne 	/sbin/iptables -t filter -P OUTPUT ACCEPT
#   et décommenter les lignes 		#REMOTE_TCP_SERVICES=&quot;&quot; 
#                             		#REMOTE_UDP_SERVICES=&quot;&quot; 
#   ainsi que les blocs suivant : 	#if [ -n &quot;$REMOTE_TCP_SERVICES&quot; ] ; then
#   et                                  #if [ -n &quot;$REMOTE_UDP_SERVICES&quot; ] ; then
#
# description: Active/Désactive le pare-feu au démarrage
#
#---------------------------------------------------------------

PATH=/bin:/sbin:/usr/bin:/usr/sbin

# Services que le systèmes offrira au réseau, à séparer avec des espaces
# ftp : 21, ssh : 22, serveur web : 80, cups : 632, jabber : 5222
TCP_SERVICES=&quot;&quot; 
UDP_SERVICES=&quot;&quot;
# Services que le système utilisera du réseau
# Décommenter ces lignes pour limiter les services en sortie (défaut : autorise tout en sortie)
#REMOTE_TCP_SERVICES=&quot;&quot; 
#REMOTE_UDP_SERVICES=&quot;&quot; 

if ! [ -x /sbin/iptables ]; then  
	exit 0
fi

fw_start () {

# Vidage
	/sbin/iptables -t filter -F
	/sbin/iptables -t filter -X
	/sbin/iptables -t nat -F
	/sbin/iptables -t nat -X 
	/sbin/iptables -t mangle -F
	/sbin/iptables -t mangle -X 

	echo &quot;Parefeu - Suppression des règles : [OK]&quot;

# Interdictions
	/sbin/iptables -t filter -P INPUT DROP
	/sbin/iptables -t filter -P FORWARD DROP
	/sbin/iptables -t filter -P OUTPUT DROP

	echo &quot;Parefeu - interdictions générales établies : [OK]&quot;

# Loopback
	/sbin/iptables -t filter -A INPUT -i lo -j ACCEPT
	/sbin/iptables -t filter -A INPUT -i lo -j ACCEPT

# Trafic d'entrée :
	/sbin/iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Refus du ping
	/sbin/iptables -t filter -A INPUT -p icmp -j LOG
	/sbin/iptables -t filter -A INPUT -p icmp -j DROP

# Sortie autorisée, 
# à commenter si seuls certains services doivent être autorisés en sortie.
	/sbin/iptables -t filter -P OUTPUT ACCEPT

# Services à autoriser en entrée
	if [ -n &quot;$TCP_SERVICES&quot; ] ; then
		for PORT in $TCP_SERVICES; do
			/sbin/iptables -A INPUT -p tcp --dport ${PORT} -j ACCEPT
		done
	fi
	if [ -n &quot;$UDP_SERVICES&quot; ] ; then
		for PORT in $UDP_SERVICES; do
			/sbin/iptables -A INPUT -p udp --dport ${PORT} -j ACCEPT
		done
	fi

# Décommenter les lignes suivantes pour n'autoriser que certains
# services en sortie

	#if [ -n &quot;$REMOTE_TCP_SERVICES&quot; ] ; then
	#	for PORT in $REMOTE_TCP_SERVICES; do
	#		/sbin/iptables -A OUTPUT -p tcp --dport ${PORT} -j ACCEPT
	#	done
	#fi
	#if [ -n &quot;$REMOTE_UDP_SERVICES&quot; ] ; then
	#	for PORT in $REMOTE_UDP_SERVICES; do
	#		/sbin/iptables -A OUTPUT -p udp --dport ${PORT} -j ACCEPT
	#	done
	#fi

	echo &quot;Parefeu - Mise en place des règles : [OK]&quot;

# Décommenter les lignes après les traits
# pour une machine faisant office de routeur avec NAT
#
# ethx correspond à l'interface du LAN
# ethy correspond à l'interface reliée à la truc-box
# -------------------------------------------

	#/sbin/iptables -A INPUT -i ethx -j ACCEPT
	#/sbin/iptables -A INPUT -p icmp -j ACCEPT
	#/sbin/iptables -A FORWARD -i ethy -o ethx -m state --state RELATED,ESTABLISHED -j ACCEPT
	#/sbin/iptables -A FORWARD -o ethy -j ACCEPT
	#/sbin/iptables -t nat -A POSTROUTING -o ethy -j MASQUERADE

	#echo &quot;Parefeu - Routeur avec NAT : [OK]&quot;

# Toutes les autres connexions sont enregistrées dans syslog
	#/sbin/iptables -t filter -A OUTPUT -j LOG
	/sbin/iptables -t filter -A INPUT -j LOG --log-level=4

	echo &quot;Parefeu - Logging : [OK]&quot;
}

fw_stop () {
	/sbin/iptables -F
	/sbin/iptables -t nat -F
	/sbin/iptables -t mangle -F
	/sbin/iptables -P INPUT DROP
	/sbin/iptables -P FORWARD DROP
	/sbin/iptables -P OUTPUT ACCEPT
}

fw_clear () {
	/sbin/iptables -t filter -F
	/sbin/iptables -t nat -F
	/sbin/iptables -t mangle -F
	/sbin/iptables -t raw -F
	/sbin/iptables -t filter -P INPUT ACCEPT
	/sbin/iptables -t filter -P OUTPUT ACCEPT
	/sbin/iptables -t filter -P FORWARD ACCEPT
	/sbin/iptables -t nat -P PREROUTING ACCEPT
	/sbin/iptables -t nat -P POSTROUTING ACCEPT
	/sbin/iptables -t nat -P OUTPUT ACCEPT
	/sbin/iptables -t mangle -P PREROUTING ACCEPT
	/sbin/iptables -t mangle -P OUTPUT ACCEPT
	/sbin/iptables -t mangle -P POSTROUTING ACCEPT
	/sbin/iptables -t mangle -P FORWARD ACCEPT
	/sbin/iptables -t mangle -P INPUT ACCEPT
	/sbin/iptables -t raw -P OUTPUT ACCEPT
	/sbin/iptables -t raw -P PREROUTING ACCEPT
	/sbin/iptables -F
}

fw_status () {
	/sbin/iptables -L --line-numbers
}

case &quot;$1&quot; in
	start|restart)
		echo &quot;Starting firewall..&quot;
		fw_stop 
 		fw_start
		echo &quot;done.&quot;
 	;;
	stop)
		echo &quot;Stopping firewall..&quot;
 		fw_stop
 		echo &quot;done.&quot;
 	;;
	clean)
 		echo &quot;Clearing firewall rules..&quot;
 		fw_clear
 		echo &quot;done.&quot;
 	;;
	status)
		echo &quot;Firewall status&quot;
		fw_status
	;;
	*)
 		echo &quot;Usage: $0 {start|stop|restart|clean|status}&quot;
 		exit 1
 	;;
esac
exit 0
&lt;/code&gt;

== Ouvrir des ports ==
Pour cela, il vous suffit d'ajouter le numéro des ports à ouvrir, séparés par des espaces, entre les guillemets : 
 TCP_SERVICES=&quot;&quot; 
S'il s'agit de ports tcp, et dans
 UDP_SERVICES=&quot;&quot;
Si ce sont des ports UDP
Pour trouver le numéro des ports, la commande suivante peut vous être utile : 
 less /etc/services

== Autoriser au cas par cas en sortie ==
Il faut commenter la ligne : 
 /sbin/iptables -t filter -P OUTPUT ACCEPT
et décommenter ces lignes : 
 #REMOTE_TCP_SERVICES=&quot;&quot; 
 #REMOTE_UDP_SERVICES=&quot;&quot; 
Complétez entre les guillements les ports à ouvrir en sortie.
Enfin, décommentez ces blocs : 
 #if [ -n &quot;$REMOTE_TCP_SERVICES&quot; ] ; then
 #	for PORT in $REMOTE_TCP_SERVICES; do
 #		/sbin/iptables -A OUTPUT -p tcp --dport ${PORT} -j ACCEPT
 #	done
 #fi
 #if [ -n &quot;$REMOTE_UDP_SERVICES&quot; ] ; then
 #	for PORT in $REMOTE_UDP_SERVICES; do
 #		/sbin/iptables -A OUTPUT -p udp --dport ${PORT} -j ACCEPT
 #	done
 #fi

== Cas d'une machine routeur avec NAT ==
Il va falloir décommenter ces lignes : 
 #/sbin/iptables -A INPUT -i ethx -j ACCEPT
 #/sbin/iptables -A INPUT -p icmp -j ACCEPT
 #/sbin/iptables -A FORWARD -i ethy -o ethx -m state --state RELATED,ESTABLISHED -j ACCEPT
 #/sbin/iptables -A FORWARD -o ethy -j ACCEPT
 #/sbin/iptables -t nat -A POSTROUTING -o ethy -j MASQUERADE
 #echo &quot;Parefeu - Routeur avec NAT : [OK]&quot;

En remplaçant ethx qui correspond à l'interface du LAN et ethy qui correspond à l'interface reliée à la truc-box

== Ressources ==
* [http://www.debian-fr.org/installation-parefeu-iptables-pour-les-nuls-t1901.html Autre méthode proposée par Ricardo]
* [http://olivieraj.free.fr/fr/linux/information/firewall/ Très bon tutoriel sur iptables]
* [http://www.debian-fr.org/script-pour-parefeu-simplifie-t34983.html Discussion sur ce script]



[[Catégorie:Sécurité]]</text>
      <sha1>38eutue4csuxr1vdr4ajeagfplnou1z</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3420</id>
      <parentid>3419</parentid>
      <timestamp>2011-08-28T15:03:41Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Le script */</comment>
      <text xml:space="preserve" bytes="8289">== Introduction ==

La méthode proposée [[Netfilter/Iptables_introduction | ici]] pose parfois souci lors d'un changement de version du noyau, qui ne comprend pas les règles enregistrées avec iptables-save comme il faut.

Dans la suite, vous trouverez un script permettant d'établir les règles à chaque démarrage. De plus, ce script ajoute par défaut un enregistrement des erreurs dans les logs, ce qui facilite la surveillance avec [[ Logwatch | logwatch ]] par exemple.
Si à l'avenir vous souhaitez ajoutez ou supprimer certaines règles, vous verrez que le script est construit de façon à faciliter ce genre d'opération.

== Installation du Pare-feu ==
''' Attention, les commandes suivantes sont à éxécuter avec les droits superutilisateur'''
Copiez-collez le script suivant dans /etc/init.d/mon_parefeu.
Ensuite, rendez ce script éxécutable : 
 chmod +x /etc/init.d/mon_parefeu
Puis activer le chargement du script au démarrage : 
 insserv mon_parefeu
== Le script ==

&lt;code&gt;#!/bin/sh

### BEGIN INIT INFO
# Provides:           mon_parefeu
# Required-Start:     $local_fs 
# Should-Start:
# Required-Stop:      $local_fs 
# Should-Stop:
# X-Start-Before:     $network
# X-Stop-After:       $network
# Default-Start:      2 3 4 5 
# Default-Stop:       0 1 6
# Short-description:  Configure le parefeu
# Description:        Met en place les règles iptables.
### END INIT INFO

# Exemple de configuration de pare-feu
#
# Défauts :
# - Cette configuration s'applique à toutes les interfaces réseau.
#   Si vous voulez restreindre cela à une interface donnée,
#   utilisez '-i INTERFACE' dans les appels iptables.
#
# - Par défaut, le script autorise tout en sortie. Pour changer ce comportement
#   veuillez commenter la ligne 	/sbin/iptables -t filter -P OUTPUT ACCEPT
#   et décommenter les lignes 		#REMOTE_TCP_SERVICES=&quot;&quot; 
#                             		#REMOTE_UDP_SERVICES=&quot;&quot; 
#   ainsi que les blocs suivant : 	#if [ -n &quot;$REMOTE_TCP_SERVICES&quot; ] ; then
#   et                                  #if [ -n &quot;$REMOTE_UDP_SERVICES&quot; ] ; then
#
# description: Active/Désactive le pare-feu au démarrage
#
#---------------------------------------------------------------

PATH=/bin:/sbin:/usr/bin:/usr/sbin

# Services que le système offrira au réseau, à séparer avec des espaces
# ftp : 21, ssh : 22, serveur web : 80, cups : 632, jabber : 5222
TCP_SERVICES=&quot;&quot; 
UDP_SERVICES=&quot;&quot;
# Services que le système utilisera du réseau
# Décommenter ces lignes pour limiter les services en sortie (défaut : autorise tout en sortie)
#REMOTE_TCP_SERVICES=&quot;&quot; 
#REMOTE_UDP_SERVICES=&quot;&quot; 

if ! [ -x /sbin/iptables ]; then  
	exit 0
fi

fw_start () {

# Vidage
	/sbin/iptables -t filter -F
	/sbin/iptables -t filter -X
	/sbin/iptables -t nat -F
	/sbin/iptables -t nat -X 
	/sbin/iptables -t mangle -F
	/sbin/iptables -t mangle -X 

	echo &quot;Parefeu - Suppression des règles : [OK]&quot;

# Interdictions
	/sbin/iptables -t filter -P INPUT DROP
	/sbin/iptables -t filter -P FORWARD DROP
	/sbin/iptables -t filter -P OUTPUT DROP

	echo &quot;Parefeu - interdictions générales établies : [OK]&quot;

# Loopback
	/sbin/iptables -t filter -A INPUT -i lo -j ACCEPT
	/sbin/iptables -t filter -A INPUT -i lo -j ACCEPT

# Trafic d'entrée :
	/sbin/iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Refus du ping
	/sbin/iptables -t filter -A INPUT -p icmp -j LOG
	/sbin/iptables -t filter -A INPUT -p icmp -j DROP

# Sortie autorisée, 
# à commenter si seuls certains services doivent être autorisés en sortie.
	/sbin/iptables -t filter -P OUTPUT ACCEPT

# Services à autoriser en entrée
	if [ -n &quot;$TCP_SERVICES&quot; ] ; then
		for PORT in $TCP_SERVICES; do
			/sbin/iptables -A INPUT -p tcp --dport ${PORT} -j ACCEPT
		done
	fi
	if [ -n &quot;$UDP_SERVICES&quot; ] ; then
		for PORT in $UDP_SERVICES; do
			/sbin/iptables -A INPUT -p udp --dport ${PORT} -j ACCEPT
		done
	fi

# Décommenter les lignes suivantes pour n'autoriser que certains
# services en sortie

	#if [ -n &quot;$REMOTE_TCP_SERVICES&quot; ] ; then
	#	for PORT in $REMOTE_TCP_SERVICES; do
	#		/sbin/iptables -A OUTPUT -p tcp --dport ${PORT} -j ACCEPT
	#	done
	#fi
	#if [ -n &quot;$REMOTE_UDP_SERVICES&quot; ] ; then
	#	for PORT in $REMOTE_UDP_SERVICES; do
	#		/sbin/iptables -A OUTPUT -p udp --dport ${PORT} -j ACCEPT
	#	done
	#fi

	echo &quot;Parefeu - Mise en place des règles : [OK]&quot;

# Décommenter les lignes après les traits
# pour une machine faisant office de routeur avec NAT
#
# ethx correspond à l'interface du LAN
# ethy correspond à l'interface reliée à la truc-box
# -------------------------------------------

	#/sbin/iptables -A INPUT -i ethx -j ACCEPT
	#/sbin/iptables -A INPUT -p icmp -j ACCEPT
	#/sbin/iptables -A FORWARD -i ethy -o ethx -m state --state RELATED,ESTABLISHED -j ACCEPT
	#/sbin/iptables -A FORWARD -o ethy -j ACCEPT
	#/sbin/iptables -t nat -A POSTROUTING -o ethy -j MASQUERADE

	#echo &quot;Parefeu - Routeur avec NAT : [OK]&quot;

# Toutes les autres connexions sont enregistrées dans syslog
	#/sbin/iptables -t filter -A OUTPUT -j LOG
	/sbin/iptables -t filter -A INPUT -j LOG --log-level=4

	echo &quot;Parefeu - Logging : [OK]&quot;
}

fw_stop () {
	/sbin/iptables -F
	/sbin/iptables -t nat -F
	/sbin/iptables -t mangle -F
	/sbin/iptables -P INPUT DROP
	/sbin/iptables -P FORWARD DROP
	/sbin/iptables -P OUTPUT ACCEPT
}

fw_clear () {
	/sbin/iptables -t filter -F
	/sbin/iptables -t nat -F
	/sbin/iptables -t mangle -F
	/sbin/iptables -t raw -F
	/sbin/iptables -t filter -P INPUT ACCEPT
	/sbin/iptables -t filter -P OUTPUT ACCEPT
	/sbin/iptables -t filter -P FORWARD ACCEPT
	/sbin/iptables -t nat -P PREROUTING ACCEPT
	/sbin/iptables -t nat -P POSTROUTING ACCEPT
	/sbin/iptables -t nat -P OUTPUT ACCEPT
	/sbin/iptables -t mangle -P PREROUTING ACCEPT
	/sbin/iptables -t mangle -P OUTPUT ACCEPT
	/sbin/iptables -t mangle -P POSTROUTING ACCEPT
	/sbin/iptables -t mangle -P FORWARD ACCEPT
	/sbin/iptables -t mangle -P INPUT ACCEPT
	/sbin/iptables -t raw -P OUTPUT ACCEPT
	/sbin/iptables -t raw -P PREROUTING ACCEPT
	/sbin/iptables -F
}

fw_status () {
	/sbin/iptables -L --line-numbers
}

case &quot;$1&quot; in
	start|restart)
		echo &quot;Starting firewall..&quot;
		fw_stop 
 		fw_start
		echo &quot;done.&quot;
 	;;
	stop)
		echo &quot;Stopping firewall..&quot;
 		fw_stop
 		echo &quot;done.&quot;
 	;;
	clean)
 		echo &quot;Clearing firewall rules..&quot;
 		fw_clear
 		echo &quot;done.&quot;
 	;;
	status)
		echo &quot;Firewall status&quot;
		fw_status
	;;
	*)
 		echo &quot;Usage: $0 {start|stop|restart|clean|status}&quot;
 		exit 1
 	;;
esac
exit 0
&lt;/code&gt;

== Ouvrir des ports ==
Pour cela, il vous suffit d'ajouter le numéro des ports à ouvrir, séparés par des espaces, entre les guillemets : 
 TCP_SERVICES=&quot;&quot; 
S'il s'agit de ports tcp, et dans
 UDP_SERVICES=&quot;&quot;
Si ce sont des ports UDP
Pour trouver le numéro des ports, la commande suivante peut vous être utile : 
 less /etc/services

== Autoriser au cas par cas en sortie ==
Il faut commenter la ligne : 
 /sbin/iptables -t filter -P OUTPUT ACCEPT
et décommenter ces lignes : 
 #REMOTE_TCP_SERVICES=&quot;&quot; 
 #REMOTE_UDP_SERVICES=&quot;&quot; 
Complétez entre les guillements les ports à ouvrir en sortie.
Enfin, décommentez ces blocs : 
 #if [ -n &quot;$REMOTE_TCP_SERVICES&quot; ] ; then
 #	for PORT in $REMOTE_TCP_SERVICES; do
 #		/sbin/iptables -A OUTPUT -p tcp --dport ${PORT} -j ACCEPT
 #	done
 #fi
 #if [ -n &quot;$REMOTE_UDP_SERVICES&quot; ] ; then
 #	for PORT in $REMOTE_UDP_SERVICES; do
 #		/sbin/iptables -A OUTPUT -p udp --dport ${PORT} -j ACCEPT
 #	done
 #fi

== Cas d'une machine routeur avec NAT ==
Il va falloir décommenter ces lignes : 
 #/sbin/iptables -A INPUT -i ethx -j ACCEPT
 #/sbin/iptables -A INPUT -p icmp -j ACCEPT
 #/sbin/iptables -A FORWARD -i ethy -o ethx -m state --state RELATED,ESTABLISHED -j ACCEPT
 #/sbin/iptables -A FORWARD -o ethy -j ACCEPT
 #/sbin/iptables -t nat -A POSTROUTING -o ethy -j MASQUERADE
 #echo &quot;Parefeu - Routeur avec NAT : [OK]&quot;

En remplaçant ethx qui correspond à l'interface du LAN et ethy qui correspond à l'interface reliée à la truc-box

== Ressources ==
* [http://www.debian-fr.org/installation-parefeu-iptables-pour-les-nuls-t1901.html Autre méthode proposée par Ricardo]
* [http://olivieraj.free.fr/fr/linux/information/firewall/ Très bon tutoriel sur iptables]
* [http://www.debian-fr.org/script-pour-parefeu-simplifie-t34983.html Discussion sur ce script]



[[Catégorie:Sécurité]]</text>
      <sha1>r3lmlgr1i4kkwpr90z2we2lz3zz1c60</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3421</id>
      <parentid>3420</parentid>
      <timestamp>2011-08-28T15:20:15Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Le script */</comment>
      <text xml:space="preserve" bytes="8290">== Introduction ==

La méthode proposée [[Netfilter/Iptables_introduction | ici]] pose parfois souci lors d'un changement de version du noyau, qui ne comprend pas les règles enregistrées avec iptables-save comme il faut.

Dans la suite, vous trouverez un script permettant d'établir les règles à chaque démarrage. De plus, ce script ajoute par défaut un enregistrement des erreurs dans les logs, ce qui facilite la surveillance avec [[ Logwatch | logwatch ]] par exemple.
Si à l'avenir vous souhaitez ajoutez ou supprimer certaines règles, vous verrez que le script est construit de façon à faciliter ce genre d'opération.

== Installation du Pare-feu ==
''' Attention, les commandes suivantes sont à éxécuter avec les droits superutilisateur'''
Copiez-collez le script suivant dans /etc/init.d/mon_parefeu.
Ensuite, rendez ce script éxécutable : 
 chmod +x /etc/init.d/mon_parefeu
Puis activer le chargement du script au démarrage : 
 insserv mon_parefeu
== Le script ==

&lt;code&gt;#!/bin/sh

### BEGIN INIT INFO
# Provides:           mon_parefeu
# Required-Start:     $local_fs 
# Should-Start:
# Required-Stop:      $local_fs 
# Should-Stop:
# X-Start-Before:     $network
# X-Stop-After:       $network
# Default-Start:      2 3 4 5 
# Default-Stop:       0 1 6
# Short-description:  Configure le parefeu
# Description:        Met en place les règles iptables.
### END INIT INFO

# Exemple de configuration de pare-feu
#
# Défauts :
# - Cette configuration s'applique à toutes les interfaces réseau.
#   Si vous voulez restreindre cela à une interface donnée,
#   utilisez '-i INTERFACE' dans les appels iptables.
#
# - Par défaut, le script autorise tout en sortie. Pour changer ce comportement
#   veuillez commenter la ligne 	/sbin/iptables -t filter -P OUTPUT ACCEPT
#   et décommenter les lignes 		#REMOTE_TCP_SERVICES=&quot;&quot; 
#                             		#REMOTE_UDP_SERVICES=&quot;&quot; 
#   ainsi que les blocs suivant : 	#if [ -n &quot;$REMOTE_TCP_SERVICES&quot; ] ; then
#   et                                  #if [ -n &quot;$REMOTE_UDP_SERVICES&quot; ] ; then
#
# description: Active/Désactive le pare-feu au démarrage
#
#---------------------------------------------------------------

PATH=/bin:/sbin:/usr/bin:/usr/sbin

# Services que le système offrira au réseau, à séparer avec des espaces
# ftp : 21, ssh : 22, serveur web : 80, cups : 632, jabber : 5222
TCP_SERVICES=&quot;&quot; 
UDP_SERVICES=&quot;&quot;
# Services que le système utilisera du réseau
# Décommenter ces lignes pour limiter les services en sortie (défaut : autorise tout en sortie)
#REMOTE_TCP_SERVICES=&quot;&quot; 
#REMOTE_UDP_SERVICES=&quot;&quot; 

if ! [ -x /sbin/iptables ]; then  
	exit 0
fi

fw_start () {

# Vidage
	/sbin/iptables -t filter -F
	/sbin/iptables -t filter -X
	/sbin/iptables -t nat -F
	/sbin/iptables -t nat -X 
	/sbin/iptables -t mangle -F
	/sbin/iptables -t mangle -X 

	echo &quot;Parefeu - Suppression des règles : [OK]&quot;

# Interdictions
	/sbin/iptables -t filter -P INPUT DROP
	/sbin/iptables -t filter -P FORWARD DROP
	/sbin/iptables -t filter -P OUTPUT DROP

	echo &quot;Parefeu - interdictions générales établies : [OK]&quot;

# Loopback
	#/sbin/iptables -t filter -A INPUT -i lo -j ACCEPT
	/sbin/iptables -t filter -A INPUT -i lo -j ACCEPT

# Trafic d'entrée :
	/sbin/iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Refus du ping
	/sbin/iptables -t filter -A INPUT -p icmp -j LOG
	/sbin/iptables -t filter -A INPUT -p icmp -j DROP

# Sortie autorisée, 
# à commenter si seuls certains services doivent être autorisés en sortie.
	/sbin/iptables -t filter -P OUTPUT ACCEPT

# Services à autoriser en entrée
	if [ -n &quot;$TCP_SERVICES&quot; ] ; then
		for PORT in $TCP_SERVICES; do
			/sbin/iptables -A INPUT -p tcp --dport ${PORT} -j ACCEPT
		done
	fi
	if [ -n &quot;$UDP_SERVICES&quot; ] ; then
		for PORT in $UDP_SERVICES; do
			/sbin/iptables -A INPUT -p udp --dport ${PORT} -j ACCEPT
		done
	fi

# Décommenter les lignes suivantes pour n'autoriser que certains
# services en sortie

	#if [ -n &quot;$REMOTE_TCP_SERVICES&quot; ] ; then
	#	for PORT in $REMOTE_TCP_SERVICES; do
	#		/sbin/iptables -A OUTPUT -p tcp --dport ${PORT} -j ACCEPT
	#	done
	#fi
	#if [ -n &quot;$REMOTE_UDP_SERVICES&quot; ] ; then
	#	for PORT in $REMOTE_UDP_SERVICES; do
	#		/sbin/iptables -A OUTPUT -p udp --dport ${PORT} -j ACCEPT
	#	done
	#fi

	echo &quot;Parefeu - Mise en place des règles : [OK]&quot;

# Décommenter les lignes après les traits
# pour une machine faisant office de routeur avec NAT
#
# ethx correspond à l'interface du LAN
# ethy correspond à l'interface reliée à la truc-box
# -------------------------------------------

	#/sbin/iptables -A INPUT -i ethx -j ACCEPT
	#/sbin/iptables -A INPUT -p icmp -j ACCEPT
	#/sbin/iptables -A FORWARD -i ethy -o ethx -m state --state RELATED,ESTABLISHED -j ACCEPT
	#/sbin/iptables -A FORWARD -o ethy -j ACCEPT
	#/sbin/iptables -t nat -A POSTROUTING -o ethy -j MASQUERADE

	#echo &quot;Parefeu - Routeur avec NAT : [OK]&quot;

# Toutes les autres connexions sont enregistrées dans syslog
	#/sbin/iptables -t filter -A OUTPUT -j LOG
	/sbin/iptables -t filter -A INPUT -j LOG --log-level=4

	echo &quot;Parefeu - Logging : [OK]&quot;
}

fw_stop () {
	/sbin/iptables -F
	/sbin/iptables -t nat -F
	/sbin/iptables -t mangle -F
	/sbin/iptables -P INPUT DROP
	/sbin/iptables -P FORWARD DROP
	/sbin/iptables -P OUTPUT ACCEPT
}

fw_clear () {
	/sbin/iptables -t filter -F
	/sbin/iptables -t nat -F
	/sbin/iptables -t mangle -F
	/sbin/iptables -t raw -F
	/sbin/iptables -t filter -P INPUT ACCEPT
	/sbin/iptables -t filter -P OUTPUT ACCEPT
	/sbin/iptables -t filter -P FORWARD ACCEPT
	/sbin/iptables -t nat -P PREROUTING ACCEPT
	/sbin/iptables -t nat -P POSTROUTING ACCEPT
	/sbin/iptables -t nat -P OUTPUT ACCEPT
	/sbin/iptables -t mangle -P PREROUTING ACCEPT
	/sbin/iptables -t mangle -P OUTPUT ACCEPT
	/sbin/iptables -t mangle -P POSTROUTING ACCEPT
	/sbin/iptables -t mangle -P FORWARD ACCEPT
	/sbin/iptables -t mangle -P INPUT ACCEPT
	/sbin/iptables -t raw -P OUTPUT ACCEPT
	/sbin/iptables -t raw -P PREROUTING ACCEPT
	/sbin/iptables -F
}

fw_status () {
	/sbin/iptables -L --line-numbers
}

case &quot;$1&quot; in
	start|restart)
		echo &quot;Starting firewall..&quot;
		fw_stop 
 		fw_start
		echo &quot;done.&quot;
 	;;
	stop)
		echo &quot;Stopping firewall..&quot;
 		fw_stop
 		echo &quot;done.&quot;
 	;;
	clean)
 		echo &quot;Clearing firewall rules..&quot;
 		fw_clear
 		echo &quot;done.&quot;
 	;;
	status)
		echo &quot;Firewall status&quot;
		fw_status
	;;
	*)
 		echo &quot;Usage: $0 {start|stop|restart|clean|status}&quot;
 		exit 1
 	;;
esac
exit 0
&lt;/code&gt;

== Ouvrir des ports ==
Pour cela, il vous suffit d'ajouter le numéro des ports à ouvrir, séparés par des espaces, entre les guillemets : 
 TCP_SERVICES=&quot;&quot; 
S'il s'agit de ports tcp, et dans
 UDP_SERVICES=&quot;&quot;
Si ce sont des ports UDP
Pour trouver le numéro des ports, la commande suivante peut vous être utile : 
 less /etc/services

== Autoriser au cas par cas en sortie ==
Il faut commenter la ligne : 
 /sbin/iptables -t filter -P OUTPUT ACCEPT
et décommenter ces lignes : 
 #REMOTE_TCP_SERVICES=&quot;&quot; 
 #REMOTE_UDP_SERVICES=&quot;&quot; 
Complétez entre les guillements les ports à ouvrir en sortie.
Enfin, décommentez ces blocs : 
 #if [ -n &quot;$REMOTE_TCP_SERVICES&quot; ] ; then
 #	for PORT in $REMOTE_TCP_SERVICES; do
 #		/sbin/iptables -A OUTPUT -p tcp --dport ${PORT} -j ACCEPT
 #	done
 #fi
 #if [ -n &quot;$REMOTE_UDP_SERVICES&quot; ] ; then
 #	for PORT in $REMOTE_UDP_SERVICES; do
 #		/sbin/iptables -A OUTPUT -p udp --dport ${PORT} -j ACCEPT
 #	done
 #fi

== Cas d'une machine routeur avec NAT ==
Il va falloir décommenter ces lignes : 
 #/sbin/iptables -A INPUT -i ethx -j ACCEPT
 #/sbin/iptables -A INPUT -p icmp -j ACCEPT
 #/sbin/iptables -A FORWARD -i ethy -o ethx -m state --state RELATED,ESTABLISHED -j ACCEPT
 #/sbin/iptables -A FORWARD -o ethy -j ACCEPT
 #/sbin/iptables -t nat -A POSTROUTING -o ethy -j MASQUERADE
 #echo &quot;Parefeu - Routeur avec NAT : [OK]&quot;

En remplaçant ethx qui correspond à l'interface du LAN et ethy qui correspond à l'interface reliée à la truc-box

== Ressources ==
* [http://www.debian-fr.org/installation-parefeu-iptables-pour-les-nuls-t1901.html Autre méthode proposée par Ricardo]
* [http://olivieraj.free.fr/fr/linux/information/firewall/ Très bon tutoriel sur iptables]
* [http://www.debian-fr.org/script-pour-parefeu-simplifie-t34983.html Discussion sur ce script]



[[Catégorie:Sécurité]]</text>
      <sha1>tq37uunbzui89amjso9luruxxeulzrb</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
    <revision>
      <id>3422</id>
      <parentid>3421</parentid>
      <timestamp>2011-08-28T15:30:39Z</timestamp>
      <contributor>
        <username>Ggoodluck47</username>
        <id>14</id>
      </contributor>
      <minor/>
      <comment>/* Le script */</comment>
      <text xml:space="preserve" bytes="8290">== Introduction ==

La méthode proposée [[Netfilter/Iptables_introduction | ici]] pose parfois souci lors d'un changement de version du noyau, qui ne comprend pas les règles enregistrées avec iptables-save comme il faut.

Dans la suite, vous trouverez un script permettant d'établir les règles à chaque démarrage. De plus, ce script ajoute par défaut un enregistrement des erreurs dans les logs, ce qui facilite la surveillance avec [[ Logwatch | logwatch ]] par exemple.
Si à l'avenir vous souhaitez ajoutez ou supprimer certaines règles, vous verrez que le script est construit de façon à faciliter ce genre d'opération.

== Installation du Pare-feu ==
''' Attention, les commandes suivantes sont à éxécuter avec les droits superutilisateur'''
Copiez-collez le script suivant dans /etc/init.d/mon_parefeu.
Ensuite, rendez ce script éxécutable : 
 chmod +x /etc/init.d/mon_parefeu
Puis activer le chargement du script au démarrage : 
 insserv mon_parefeu
== Le script ==

&lt;code&gt;#!/bin/sh

### BEGIN INIT INFO
# Provides:           mon_parefeu
# Required-Start:     $local_fs 
# Should-Start:
# Required-Stop:      $local_fs 
# Should-Stop:
# X-Start-Before:     $network
# X-Stop-After:       $network
# Default-Start:      2 3 4 5 
# Default-Stop:       0 1 6
# Short-description:  Configure le parefeu
# Description:        Met en place les règles iptables.
### END INIT INFO

# Exemple de configuration de pare-feu
#
# Défauts :
# - Cette configuration s'applique à toutes les interfaces réseau.
#   Si vous voulez restreindre cela à une interface donnée,
#   utilisez '-i INTERFACE' dans les appels iptables.
#
# - Par défaut, le script autorise tout en sortie. Pour changer ce comportement
#   veuillez commenter la ligne 	/sbin/iptables -t filter -P OUTPUT ACCEPT
#   et décommenter les lignes 		#REMOTE_TCP_SERVICES=&quot;&quot; 
#                             		#REMOTE_UDP_SERVICES=&quot;&quot; 
#   ainsi que les blocs suivant : 	#if [ -n &quot;$REMOTE_TCP_SERVICES&quot; ] ; then
#   et                                  #if [ -n &quot;$REMOTE_UDP_SERVICES&quot; ] ; then
#
# description: Active/Désactive le pare-feu au démarrage
#
#---------------------------------------------------------------

PATH=/bin:/sbin:/usr/bin:/usr/sbin

# Services que le système offrira au réseau, à séparer avec des espaces
# ftp : 21, ssh : 22, serveur web : 80, cups : 631, jabber : 5222
TCP_SERVICES=&quot;&quot; 
UDP_SERVICES=&quot;&quot;
# Services que le système utilisera du réseau
# Décommenter ces lignes pour limiter les services en sortie (défaut : autorise tout en sortie)
#REMOTE_TCP_SERVICES=&quot;&quot; 
#REMOTE_UDP_SERVICES=&quot;&quot; 

if ! [ -x /sbin/iptables ]; then  
	exit 0
fi

fw_start () {

# Vidage
	/sbin/iptables -t filter -F
	/sbin/iptables -t filter -X
	/sbin/iptables -t nat -F
	/sbin/iptables -t nat -X 
	/sbin/iptables -t mangle -F
	/sbin/iptables -t mangle -X 

	echo &quot;Parefeu - Suppression des règles : [OK]&quot;

# Interdictions
	/sbin/iptables -t filter -P INPUT DROP
	/sbin/iptables -t filter -P FORWARD DROP
	/sbin/iptables -t filter -P OUTPUT DROP

	echo &quot;Parefeu - interdictions générales établies : [OK]&quot;

# Loopback
	#/sbin/iptables -t filter -A INPUT -i lo -j ACCEPT
	/sbin/iptables -t filter -A INPUT -i lo -j ACCEPT

# Trafic d'entrée :
	/sbin/iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Refus du ping
	/sbin/iptables -t filter -A INPUT -p icmp -j LOG
	/sbin/iptables -t filter -A INPUT -p icmp -j DROP

# Sortie autorisée, 
# à commenter si seuls certains services doivent être autorisés en sortie.
	/sbin/iptables -t filter -P OUTPUT ACCEPT

# Services à autoriser en entrée
	if [ -n &quot;$TCP_SERVICES&quot; ] ; then
		for PORT in $TCP_SERVICES; do
			/sbin/iptables -A INPUT -p tcp --dport ${PORT} -j ACCEPT
		done
	fi
	if [ -n &quot;$UDP_SERVICES&quot; ] ; then
		for PORT in $UDP_SERVICES; do
			/sbin/iptables -A INPUT -p udp --dport ${PORT} -j ACCEPT
		done
	fi

# Décommenter les lignes suivantes pour n'autoriser que certains
# services en sortie

	#if [ -n &quot;$REMOTE_TCP_SERVICES&quot; ] ; then
	#	for PORT in $REMOTE_TCP_SERVICES; do
	#		/sbin/iptables -A OUTPUT -p tcp --dport ${PORT} -j ACCEPT
	#	done
	#fi
	#if [ -n &quot;$REMOTE_UDP_SERVICES&quot; ] ; then
	#	for PORT in $REMOTE_UDP_SERVICES; do
	#		/sbin/iptables -A OUTPUT -p udp --dport ${PORT} -j ACCEPT
	#	done
	#fi

	echo &quot;Parefeu - Mise en place des règles : [OK]&quot;

# Décommenter les lignes après les traits
# pour une machine faisant office de routeur avec NAT
#
# ethx correspond à l'interface du LAN
# ethy correspond à l'interface reliée à la truc-box
# -------------------------------------------

	#/sbin/iptables -A INPUT -i ethx -j ACCEPT
	#/sbin/iptables -A INPUT -p icmp -j ACCEPT
	#/sbin/iptables -A FORWARD -i ethy -o ethx -m state --state RELATED,ESTABLISHED -j ACCEPT
	#/sbin/iptables -A FORWARD -o ethy -j ACCEPT
	#/sbin/iptables -t nat -A POSTROUTING -o ethy -j MASQUERADE

	#echo &quot;Parefeu - Routeur avec NAT : [OK]&quot;

# Toutes les autres connexions sont enregistrées dans syslog
	#/sbin/iptables -t filter -A OUTPUT -j LOG
	/sbin/iptables -t filter -A INPUT -j LOG --log-level=4

	echo &quot;Parefeu - Logging : [OK]&quot;
}

fw_stop () {
	/sbin/iptables -F
	/sbin/iptables -t nat -F
	/sbin/iptables -t mangle -F
	/sbin/iptables -P INPUT DROP
	/sbin/iptables -P FORWARD DROP
	/sbin/iptables -P OUTPUT ACCEPT
}

fw_clear () {
	/sbin/iptables -t filter -F
	/sbin/iptables -t nat -F
	/sbin/iptables -t mangle -F
	/sbin/iptables -t raw -F
	/sbin/iptables -t filter -P INPUT ACCEPT
	/sbin/iptables -t filter -P OUTPUT ACCEPT
	/sbin/iptables -t filter -P FORWARD ACCEPT
	/sbin/iptables -t nat -P PREROUTING ACCEPT
	/sbin/iptables -t nat -P POSTROUTING ACCEPT
	/sbin/iptables -t nat -P OUTPUT ACCEPT
	/sbin/iptables -t mangle -P PREROUTING ACCEPT
	/sbin/iptables -t mangle -P OUTPUT ACCEPT
	/sbin/iptables -t mangle -P POSTROUTING ACCEPT
	/sbin/iptables -t mangle -P FORWARD ACCEPT
	/sbin/iptables -t mangle -P INPUT ACCEPT
	/sbin/iptables -t raw -P OUTPUT ACCEPT
	/sbin/iptables -t raw -P PREROUTING ACCEPT
	/sbin/iptables -F
}

fw_status () {
	/sbin/iptables -L --line-numbers
}

case &quot;$1&quot; in
	start|restart)
		echo &quot;Starting firewall..&quot;
		fw_stop 
 		fw_start
		echo &quot;done.&quot;
 	;;
	stop)
		echo &quot;Stopping firewall..&quot;
 		fw_stop
 		echo &quot;done.&quot;
 	;;
	clean)
 		echo &quot;Clearing firewall rules..&quot;
 		fw_clear
 		echo &quot;done.&quot;
 	;;
	status)
		echo &quot;Firewall status&quot;
		fw_status
	;;
	*)
 		echo &quot;Usage: $0 {start|stop|restart|clean|status}&quot;
 		exit 1
 	;;
esac
exit 0
&lt;/code&gt;

== Ouvrir des ports ==
Pour cela, il vous suffit d'ajouter le numéro des ports à ouvrir, séparés par des espaces, 